ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGVkNGZjOTIuLjM5MGUxMGQgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQogMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgogODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMwpAQCAtMTY1LDMgKzE2Niw5IEBACiAzN2EwN2NlZTU5NjllNmQzNjcyNTgzMTg3YTczY2Y2MzZmZjI4ZTFiIHYzLjUuMQogNjhmZWVjNjQ4OGIyNjMyN2E4NWE2MzQ2MDVkZDI4ZWNhNGRhYTVmMSB2My41LjJyYzEKIDRkZWYyYTI5MDFhNTYxOGVhNDViY2M4ZjJhMTQxMWVmMzNhZjE4YWQgdjMuNS4yCis1ODk2ZGEzNzJmYjA0NGUzODU5NWZiNzQ0OTVkZTFlMWU3YzhmYjNjIHYzLjYuMGExCiszNzg4OTM0MjM1NTIyM2UyZmMxNDM4ZGUzZGM3ZmZjZDYyNWM2MGY3IHYzLjYuMGEyCitmM2VkZjEzZGMzMzliODk0MmFlNmIzMDk3NzFhYjE5N2RkOGNlNmZhIHYzLjYuMGEzCiswMTdjZjI2MDkzNmI0NDQ3ODhjOWI2NzFkMTk1YjdiZmQ4M2RiZDI1IHYzLjYuMGE0Cis1YjBjYTRlZDVlMmYwNjY5ZDc2ZWNlN2VmOTc1YzU0NDU4MGYxMmI0IHYzLjYuMGIxCitiOWZhZGM3ZDFjM2Y5YzNjNzdmMzJmMzVhZmJlMWExY2MzODA3MGU2IHYzLjYuMGIyCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggMTBjMzI4OC4uOTFmOTM3ZiAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtMTUzLDcgKzE1Myw3IEBACiAJY3AgLXBQUiBidWlsZC9lcHViL1B5dGhvbi5lcHViIGRpc3QvcHl0aG9uLSQoRElTVFZFUlNJT04pLWRvY3MuZXB1YgogCiBjaGVjazoKLQkkKFBZVEhPTikgdG9vbHMvcnN0bGludC5weSAtaSB0b29scworCSQoUFlUSE9OKSB0b29scy9yc3RsaW50LnB5IC1pIHRvb2xzIC1pIHZlbnYKIAogc2VydmU6CiAJLi4vVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSBidWlsZC9odG1sCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ1ZTQ3MDMuLjU2OTkwM2YgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0yMjMsOCArMjIzLDcgQEAKICAgIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgIHdpbGwgdXNlIHRoaXMgbG9jYXRpb24gYXMgdGhlIGJ1ZmZlciBhbmQgaW50ZXJwcmV0IHRoZQogICAgaW5pdGlhbCB2YWx1ZSBvZiAqXCpidWZmZXJfbGVuZ3RoKiBhcyB0aGUgYnVmZmVyIHNpemUuICBJdCB3aWxsIHRoZW4gY29weSB0aGUKICAgIGVuY29kZWQgZGF0YSBpbnRvIHRoZSBidWZmZXIgYW5kIE5VTC10ZXJtaW5hdGUgaXQuICBJZiB0aGUgYnVmZmVyIGlzIG5vdCBsYXJnZQotICAgZW5vdWdoLCBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSBzZXQuCi0gICBOb3RlOiBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjYgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KKyAgIGVub3VnaCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KIAogICAgSW4gYm90aCBjYXNlcywgKlwqYnVmZmVyX2xlbmd0aCogaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YQogICAgd2l0aG91dCB0aGUgdHJhaWxpbmcgTlVMIGJ5dGUuCkBAIC0yNjYsMTUgKzI2NSwxMiBAQAogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCB3aXRob3V0CiAgICBvdmVyZmxvdyBjaGVja2luZy4KIAotYGBMYGAgKDpjbGFzczpgaW50YCkgW1BZX0xPTkdfTE9OR10KLSAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4gIFRoaXMgZm9ybWF0IGlzIG9ubHkKLSAgIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YF9pbnQ2NGAgb24KLSAgIFdpbmRvd3MpLgorYGBMYGAgKDpjbGFzczpgaW50YCkgW2xvbmcgbG9uZ10KKyAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4KIAotYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIFBZX0xPTkdfTE9OR10KK2BgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nIGxvbmddCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AKLSAgIHdpdGhvdXQgb3ZlcmZsb3cgY2hlY2tpbmcuICBUaGlzIGZvcm1hdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdAotICAgc3VwcG9ydCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmB1bnNpZ25lZCBfaW50NjRgIG9uIFdpbmRvd3MpLgorICAgd2l0aG91dCBvdmVyZmxvdyBjaGVja2luZy4KIAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgpAQCAtNDI0LDggKzQyMCwxNSBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCAuLi4pCiAKICAgIFBhcnNlIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBib3RoIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKLSAgIHBhcmFtZXRlcnMgaW50byBsb2NhbCB2YXJpYWJsZXMuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzczsgb24gZmFpbHVyZSwgaXQKLSAgIHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgcGFyYW1ldGVycyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gIFRoZSAqa2V5d29yZHMqIGFyZ3VtZW50IGlzIGEKKyAgICpOVUxMKi10ZXJtaW5hdGVkIGFycmF5IG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzLiAgRW1wdHkgbmFtZXMgZGVub3RlCisgICA6cmVmOmBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgorICAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M7IG9uIGZhaWx1cmUsIGl0IHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUKKyAgIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDpyZWY6YHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzCisgICAgICA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCB2YV9saXN0IHZhcmdzKQpAQCAtNTg4LDE1ICs1OTEsMTEgQEAKICAgIGBga2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nXQogICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKLSAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtQWV9MT05HX0xPTkddCi0gICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LiBPbmx5IGF2YWlsYWJsZQotICAgICAgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmBfaW50NjRgIG9uCi0gICAgICBXaW5kb3dzKS4KKyAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtsb25nIGxvbmddCisgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCi0gICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgUFlfTE9OR19MT05HXQotICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4gT25seQotICAgICAgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCAob3IKLSAgICAgIDpjOnR5cGU6YHVuc2lnbmVkIF9pbnQ2NGAgb24gV2luZG93cykuCisgICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZyBsb25nXQorICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAogICAgYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBQeV9zc2l6ZV90YCB0byBhIFB5dGhvbiBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDE5Y2JiM2IuLjI1ZmIyOWMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTMwNiw2ICszMDYsMTMgQEAKICAgIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgYW5kIHRoZSA6b3B0aW9uOmAtV2Agb3B0aW9uIGluIHRoZSBjb21tYW5kIGxpbmUKICAgIGRvY3VtZW50YXRpb24uICBUaGVyZSBpcyBubyBDIEFQSSBmb3Igd2FybmluZyBjb250cm9sLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBNdWNoIGxpa2UgOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIGJ1dCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IKKyAgIHNwZWNpZnlpbmcgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgdG8gcmFpc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5KQogCkBAIC0zMzQsNiArMzQxLDE0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKworICAgRnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9XYXJuRm9ybWF0YCwgYnV0ICpjYXRlZ29yeSogaXMKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kIHBhc3MgKnNvdXJjZSogdG8gOmZ1bmM6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC03NzQsNiArNzg5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgIHwgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCBlNzhkZGFlLi5jMjcyYTFjIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICB0cmlwbGU6IG1vZHVsZTsgc2VhcmNoOyBwYXRoCiAgICAgICBzaW5nbGU6IFB5U3lzX1NldEFyZ3YoKQogICAgICAgc2luZ2xlOiBQeVN5c19TZXRBcmd2RXgoKQotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogCiAgICBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBJbiBhbiBhcHBsaWNhdGlvbiBlbWJlZGRpbmcgIFB5dGhvbiwgdGhpcwogICAgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG90aGVyIFB5dGhvbi9DIEFQSSBmdW5jdGlvbnM7IHdpdGggdGhlCkBAIC0zNCw3ICszNCw3IEBACiAgICBtb2R1bGVzIDptb2Q6YGJ1aWx0aW5zYCwgOm1vZDpgX19tYWluX19gIGFuZCA6bW9kOmBzeXNgLiAgSXQgYWxzbyBpbml0aWFsaXplcwogICAgdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCAoYGBzeXMucGF0aGBgKS4gSXQgZG9lcyBub3Qgc2V0IGBgc3lzLmFyZ3ZgYDsgdXNlCiAgICA6YzpmdW5jOmBQeVN5c19TZXRBcmd2RXhgIGZvciB0aGF0LiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lCi0gICAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWU7IGl0IGlzIGEKKyAgICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlOyBpdCBpcyBhCiAgICBmYXRhbCBlcnJvciBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKICAgIC4uIG5vdGU6OgpAQCAtNTIsMTkgKzUyLDIwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0lzSW5pdGlhbGl6ZWQoKQogCiAgICBSZXR1cm4gdHJ1ZSAobm9uemVybykgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBmYWxzZQotICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBpcyBjYWxsZWQsIHRoaXMgcmV0dXJucyBmYWxzZSB1bnRpbAorICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyByZXR1cm5zIGZhbHNlIHVudGlsCiAgICA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBpcyBjYWxsZWQgYWdhaW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRmluYWxpemUoKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GaW5hbGl6ZUV4KCkKIAogICAgVW5kbyBhbGwgaW5pdGlhbGl6YXRpb25zIG1hZGUgYnkgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYW5kIHN1YnNlcXVlbnQgdXNlIG9mCiAgICBQeXRob24vQyBBUEkgZnVuY3Rpb25zLCBhbmQgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyAoc2VlCiAgICA6YzpmdW5jOmBQeV9OZXdJbnRlcnByZXRlcmAgYmVsb3cpIHRoYXQgd2VyZSBjcmVhdGVkIGFuZCBub3QgeWV0IGRlc3Ryb3llZCBzaW5jZQogICAgdGhlIGxhc3QgY2FsbCB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4gIElkZWFsbHksIHRoaXMgZnJlZXMgYWxsIG1lbW9yeQogICAgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBUaGlzIGlzIGEgbm8tb3Agd2hlbiBjYWxsZWQgZm9yIGEgc2Vjb25kCi0gICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuCi0gICB2YWx1ZTsgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24gYXJlIGlnbm9yZWQuCisgICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgTm9ybWFsbHkgdGhlCisgICByZXR1cm4gdmFsdWUgaXMgMC4gIElmIHRoZXJlIHdlcmUgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24KKyAgIChmbHVzaGluZyBidWZmZXJlZCBkYXRhKSwgLTEgaXMgcmV0dXJuZWQuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuICBBbiBlbWJlZGRpbmcgYXBwbGljYXRpb24KICAgIG1pZ2h0IHdhbnQgdG8gcmVzdGFydCBQeXRob24gd2l0aG91dCBoYXZpbmcgdG8gcmVzdGFydCB0aGUgYXBwbGljYXRpb24gaXRzZWxmLgpAQCAtODMsNyArODQsMTUgQEAKICAgIGZyZWVkLiAgU29tZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIG1heSBub3QgYmUgZnJlZWQuICBTb21lCiAgICBleHRlbnNpb25zIG1heSBub3Qgd29yayBwcm9wZXJseSBpZiB0aGVpciBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGNhbGxlZCBtb3JlCiAgICB0aGFuIG9uY2U7IHRoaXMgY2FuIGhhcHBlbiBpZiBhbiBhcHBsaWNhdGlvbiBjYWxscyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhbmQKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBtb3JlIHRoYW4gb25jZS4KKyAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIG1vcmUgdGhhbiBvbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9GaW5hbGl6ZSgpCisKKyAgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHRoYXQKKyAgIGRpc3JlZ2FyZHMgdGhlIHJldHVybiB2YWx1ZS4KIAogCiBQcm9jZXNzLXdpZGUgcGFyYW1ldGVycwpAQCAtMTExLDcgKzEyMCw3IEBACiAgICBOb3RlIHRoYXQgOmRhdGE6YHN5cy5zdGRlcnJgIGFsd2F5cyB1c2VzIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IKICAgIGhhbmRsZXIsIHJlZ2FyZGxlc3Mgb2YgdGhpcyAob3IgYW55IG90aGVyKSBzZXR0aW5nLgogCi0gICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgaXMgY2FsbGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbmVlZCB0byBiZSBjYWxsZWQKKyAgIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgdG8gYmUgY2FsbGVkCiAgICBhZ2FpbiBpbiBvcmRlciB0byBhZmZlY3Qgc3Vic2VxdWVudCBjYWxscyB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIAogICAgUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIGEgbm9uemVybyB2YWx1ZSBvbiBlcnJvciAoZS5nLiBjYWxsaW5nIGFmdGVyIHRoZQpAQCAtOTIyLDcgKzkzMSw3IEBACiAgICBlbnRyeS4pCiAKICAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKICAgICAgIHNpbmdsZTogUHlfSW5pdGlhbGl6ZSgpCiAKICAgIEV4dGVuc2lvbiBtb2R1bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiAoc3ViLSlpbnRlcnByZXRlcnMgYXMgZm9sbG93czogdGhlIGZpcnN0CkBAIC05MzIsNyArOTQxLDcgQEAKICAgIGFuZCBmaWxsZWQgd2l0aCB0aGUgY29udGVudHMgb2YgdGhpcyBjb3B5OyB0aGUgZXh0ZW5zaW9uJ3MgYGBpbml0YGAgZnVuY3Rpb24gaXMKICAgIG5vdCBjYWxsZWQuICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGhhcHBlbnMgd2hlbiBhbiBleHRlbnNpb24gaXMKICAgIGltcG9ydGVkIGFmdGVyIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlLWluaXRpYWxpemVkIGJ5IGNhbGxpbmcKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCisgICA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCiAgICBgYGluaXRtb2R1bGVgYCBmdW5jdGlvbiAqaXMqIGNhbGxlZCBhZ2Fpbi4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IGNsb3NlKCkgKGluIG1vZHVsZSBvcykKQEAgLTk0MCwxNCArOTQ5LDE0IEBACiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIAotICAgLi4gaW5kZXg6OiBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKIAogICAgRGVzdHJveSB0aGUgKHN1Yi0paW50ZXJwcmV0ZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHRocmVhZCBzdGF0ZS4gVGhlIGdpdmVuCiAgICB0aHJlYWQgc3RhdGUgbXVzdCBiZSB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUuICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgdGhyZWFkCiAgICBzdGF0ZXMgYmVsb3cuICBXaGVuIHRoZSBjYWxsIHJldHVybnMsIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZSBpcyAqTlVMTCouICBBbGwKICAgIHRocmVhZCBzdGF0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50ZXJwcmV0ZXIgYXJlIGRlc3Ryb3llZC4gIChUaGUgZ2xvYmFsCiAgICBpbnRlcnByZXRlciBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFuZCBpcyBzdGlsbCBoZWxkCi0gICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVgIHdpbGwgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyB0aGF0CisgICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgd2lsbCBkZXN0cm95IGFsbCBzdWItaW50ZXJwcmV0ZXJzIHRoYXQKICAgIGhhdmVuJ3QgYmVlbiBleHBsaWNpdGx5IGRlc3Ryb3llZCBhdCB0aGF0IHBvaW50LgogCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbnRyby5yc3QgYi9Eb2MvYy1hcGkvaW50cm8ucnN0CmluZGV4IGJjM2E3NTIuLjc0NjgxZDIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbnRyby5yc3QKKysrIGIvRG9jL2MtYXBpL2ludHJvLnJzdApAQCAtNjQsOSArNjQsMTAgQEAKIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yaWVzIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbnZlcnNpb24vYCBhbmQKIDpmaWxlOmB7ZXhlY19wcmVmaXh9L2luY2x1ZGUvcHl0aG9udmVyc2lvbi9gLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGFuZAogOmVudnZhcjpgZXhlY19wcmVmaXhgIGFyZSBkZWZpbmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgdG8gUHl0aG9uJ3MKLTpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCBhbmQgKnZlcnNpb24qIGlzIGBgc3lzLnZlcnNpb25bOjNdYGAuICBPbiBXaW5kb3dzLAotdGhlIGhlYWRlcnMgYXJlIGluc3RhbGxlZCBpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMKLXRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgorOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0IGFuZCAqdmVyc2lvbiogaXMKK2BgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdYGAuICBPbiBXaW5kb3dzLCB0aGUgaGVhZGVycyBhcmUgaW5zdGFsbGVkCitpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMgdGhlIGluc3RhbGxhdGlvbgorZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgogCiBUbyBpbmNsdWRlIHRoZSBoZWFkZXJzLCBwbGFjZSBib3RoIGRpcmVjdG9yaWVzIChpZiBkaWZmZXJlbnQpIG9uIHlvdXIgY29tcGlsZXIncwogc2VhcmNoIHBhdGggZm9yIGluY2x1ZGVzLiAgRG8gKm5vdCogcGxhY2UgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBvbiB0aGUgc2VhcmNoCkBAIC01NzgsOSArNTc5LDkgQEAKIGFwcGxpY2F0aW9uIG1heSB3YW50IHRvIHN0YXJ0IG92ZXIgKG1ha2UgYW5vdGhlciBjYWxsIHRvCiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCkgb3IgdGhlIGFwcGxpY2F0aW9uIGlzIHNpbXBseSBkb25lIHdpdGggaXRzICB1c2Ugb2YKIFB5dGhvbiBhbmQgd2FudHMgdG8gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IFB5dGhvbi4gIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAotYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAuICBUaGUgZnVuY3Rpb24gOmM6ZnVuYzpgUHlfSXNJbml0aWFsaXplZGAgcmV0dXJucworYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YC4gIFRoZSBmdW5jdGlvbiA6YzpmdW5jOmBQeV9Jc0luaXRpYWxpemVkYCByZXR1cm5zCiB0cnVlIGlmIFB5dGhvbiBpcyBjdXJyZW50bHkgaW4gdGhlIGluaXRpYWxpemVkIHN0YXRlLiAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dAotdGhlc2UgZnVuY3Rpb25zIGlzIGdpdmVuIGluIGEgbGF0ZXIgY2hhcHRlci4gTm90aWNlIHRoYXQgOmM6ZnVuYzpgUHlfRmluYWxpemVgCit0aGVzZSBmdW5jdGlvbnMgaXMgZ2l2ZW4gaW4gYSBsYXRlciBjaGFwdGVyLiBOb3RpY2UgdGhhdCA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YAogZG9lcyAqbm90KiBmcmVlIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGUuZy4gbWVtb3J5CiBhbGxvY2F0ZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMgY3VycmVudGx5IGNhbm5vdCBiZSByZWxlYXNlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IGIzNDgwMTUuLmJhZTk3MDMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTYyLDEzICs2MiwxMyBAQAogICAgKk5VTEwqIG9uIGZhaWx1cmUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyB2KQogCiAgICBSZXR1cm4gYSBuZXcgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCBvYmplY3QgZnJvbSBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwgb3IgKk5VTEwqCiAgICBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIHYpCiAKICAgIFJldHVybiBhIG5ldyA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgIG9iamVjdCBmcm9tIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgLAogICAgb3IgKk5VTEwqIG9uIGZhaWx1cmUuCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgIG9jY3VycyBzZXQgKlwqb3ZlcmZsb3cqIHRvIGBgMGBgIGFuZCByZXR1cm4gYGAtMWBgIGFzIHVzdWFsLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiBsb25nIGxvbmcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgIDpjOnR5cGU6YGxvbmdgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqb2JqLCBpbnQgKm92ZXJmbG93KQorLi4gYzpmdW5jdGlvbjo6IGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICpvYmosIGludCAqb3ZlcmZsb3cpCiAKICAgIFJldHVybiBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqb2JqKi4gIElmICpvYmoqIGlzIG5vdCBhbgogICAgaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCwgZmlyc3QgY2FsbCBpdHMgOm1ldGg6YF9faW50X19gIG1ldGhvZApAQCAtMjEwLDE2ICsyMTAsMTYgQEAKICAgIDpjOnR5cGU6YHNpemVfdGAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICpweWxvbmcpCisuLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnB5bG9uZykKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCiAKLSAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgUFlfTE9OR19MT05HYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4KLSAgICpweWxvbmcqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YC4KKyAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4gICpweWxvbmcqCisgICBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAuCiAKICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmIHRoZSB2YWx1ZSBvZiAqcHlsb25nKiBpcyBvdXQgb2YgcmFuZ2UgZm9yIGFuCi0gICA6Yzp0eXBlOmB1bnNpZ25lZCBQWV9MT05HX0xPTkdgLgorICAgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEEgbmVnYXRpdmUgKnB5bG9uZyogbm93IHJhaXNlcyA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgbm90IDpleGM6YFR5cGVFcnJvcmAuCkBAIC0yMzUsNyArMjM1LDcgQEAKICAgIHJldHVybiB0aGUgcmVkdWN0aW9uIG9mIHRoYXQgdmFsdWUgbW9kdWxvIDpjb25zdDpgVUxPTkdfTUFYICsgMWAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIGxvbmcgbG9uZyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQogCiAgICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKm9iaiouICBJZiAqb2JqKgogICAgaXMgbm90IGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAsIGZpcnN0IGNhbGwgaXRzIDptZXRoOmBfX2ludF9fYApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeS5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdAppbmRleCAyOTBlZjA5Li4zZmY1NDUyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdApAQCAtODUsOSArODUsMTIgQEAKIAogLi4gc2VlYWxzbzo6CiAKKyAgIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZQorICAgdGhlIG1lbW9yeSBhbGxvY2F0b3JzIHVzZWQgYnkgUHl0aG9uLgorCiAgICBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHByaW50Ci0gICBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZAotICAgb24gc2h1dGRvd24uCisgICBzdGF0aXN0aWNzIG9mIHRoZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGV2ZXJ5IHRpbWUgYQorICAgbmV3IHB5bWFsbG9jIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCiAKIAogUmF3IE1lbW9yeSBJbnRlcmZhY2UKQEAgLTE2MiwxNSArMTY1LDE3IEBACiBiZWhhdmlvciB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcywgYXJlIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGluZyBhbmQgcmVsZWFzaW5nCiBtZW1vcnkgZnJvbSB0aGUgUHl0aG9uIGhlYXAuCiAKLVRoZSBkZWZhdWx0IG1lbW9yeSBibG9jayBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLTpjOmZ1bmM6YG1hbGxvY2AsIDpjOmZ1bmM6YGNhbGxvY2AsIDpjOmZ1bmM6YHJlYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYDsgY2FsbAotYGBtYWxsb2MoMSlgYCAob3IgYGBjYWxsb2MoMSwgMSlgYCkgd2hlbiByZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCitCeSBkZWZhdWx0LCB0aGVzZSBmdW5jdGlvbnMgdXNlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAuCiAKIC4uIHdhcm5pbmc6OgogCiAgICBUaGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBtdXN0IGJlIGhlbGQgd2hlbiB1c2luZyB0aGVzZQogICAgZnVuY3Rpb25zLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBUaGUgZGVmYXVsdCBhbGxvY2F0b3IgaXMgbm93IHB5bWFsbG9jIGluc3RlYWQgb2Ygc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9NYWxsb2Moc2l6ZV90IG4pCiAKICAgIEFsbG9jYXRlcyAqbiogYnl0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIG9mIHR5cGUgOmM6dHlwZTpgdm9pZFwqYCB0byB0aGUKQEAgLTI5MiwxNSArMjk3LDMyIEBACiAKICAgIEVudW0gdXNlZCB0byBpZGVudGlmeSBhbiBhbGxvY2F0b3IgZG9tYWluLiBEb21haW5zOgogCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9SQVcKIAorICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAorCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9NRU0KKworICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fRnJlZWAKKworICAgLi4gYzp2YXI6OiBQWU1FTV9ET01BSU5fT0JKCisKKyAgICAgIEZ1bmN0aW9uczoKKworICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCkBAIC0zMjUsNDMgKzM0Nyw2MiBAQAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIAotICAgU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgotICAgZnVuY3Rpb25zOgotCi0gICAtIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAotICAgLSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKLSAgIC0gOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgZnVuY3Rpb25zLgogCiAgICBOZXdseSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhDQmBgLCBmcmVlZCBtZW1vcnkgaXMKLSAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLiBBZGRpdGlvbmFsIGNoZWNrczoKKyAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLgogCi0gICAtIGRldGVjdCBBUEkgdmlvbGF0aW9ucywgZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIGJ1ZmZlcgorICAgUnVudGltZSBjaGVja3M6CisKKyAgIC0gRGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgYnVmZmVyCiAgICAgIGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgCi0gICAtIGRldGVjdCB3cml0ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKGJ1ZmZlciB1bmRlcmZsb3cpCi0gICAtIGRldGVjdCB3cml0ZSBhZnRlciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKGJ1ZmZlciBvdmVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorICAgLSBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbgorICAgICBhbGxvY2F0b3IgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDoKKyAgICAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDoKKyAgICAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkCiAKLSAgIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBjb21waWxlZCBpcyBkZWJ1ZyBtb2RlLgorICAgT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyB1c2UgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZQorICAgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSB0cmFjZWJhY2sgaXMgb25seQorICAgZGlzcGxheWVkIGlmIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIHRoZQorICAgbWVtb3J5IGJsb2NrIHdhcyB0cmFjZWQuCisKKyAgIFRoZXNlIGhvb2tzIGFyZSBpbnN0YWxsZWQgYnkgZGVmYXVsdCBpZiBQeXRob24gaXMgY29tcGlsZWQgaW4gZGVidWcKKyAgIG1vZGUuIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGluc3RhbGwKKyAgIGRlYnVnIGhvb2tzIG9uIGEgUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGFsc28gd29ya3Mgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgIE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgbm93IHVzZSA6bW9kOmB0cmFjZW1hbGxvY2AgdG8gZ2V0IHRoZSB0cmFjZWJhY2sKKyAgICAgIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSBkZWJ1ZyBob29rcyBub3cgYWxzbyBjaGVjaworICAgICAgaWYgdGhlIEdJTCBpcyBoZWxkIHdoZW4gZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGFuZAorICAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgZG9tYWlucyBhcmUgY2FsbGVkLgogCiAKLUN1c3RvbWl6ZSBQeU9iamVjdCBBcmVuYSBBbGxvY2F0b3IKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy4uIF9weW1hbGxvYzoKIAotUHl0aG9uIGhhcyBhICpweW1hbGxvYyogYWxsb2NhdG9yIGZvciBhbGxvY2F0aW9ucyBzbWFsbGVyIHRoYW4gNTEyIGJ5dGVzLiBUaGlzCi1hbGxvY2F0b3IgaXMgb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkKLW1hcHBpbmdzIGNhbGxlZCAiYXJlbmFzIiB3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8KLTpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIKLXRoYW4gNTEyIGJ5dGVzLiAgKnB5bWFsbG9jKiBpcyB0aGUgZGVmYXVsdCBhbGxvY2F0b3IgdXNlZCBieQotOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYC4KK1RoZSBweW1hbGxvYyBhbGxvY2F0b3IKKz09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIGRlZmF1bHQgYXJlbmEgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CitQeXRob24gaGFzIGEgKnB5bWFsbG9jKiBhbGxvY2F0b3Igb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIChzbWFsbGVyIG9yIGVxdWFsCit0byA1MTIgYnl0ZXMpIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkgbWFwcGluZ3MgY2FsbGVkICJhcmVuYXMiCit3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCBhbmQKKzpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIgdGhhbiA1MTIgYnl0ZXMuCisKKypweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9mIHRoZSA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6Cis6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OgorOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgZG9tYWlucy4KKworVGhlIGFyZW5hIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAqIDpjOmZ1bmM6YFZpcnR1YWxBbGxvY2AgYW5kIDpjOmZ1bmM6YFZpcnR1YWxGcmVlYCBvbiBXaW5kb3dzLAogKiA6YzpmdW5jOmBtbWFwYCBhbmQgOmM6ZnVuYzpgbXVubWFwYCBpZiBhdmFpbGFibGUsCiAqIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgIG90aGVyd2lzZS4KIAorQ3VzdG9taXplIHB5bWFsbG9jIEFyZW5hIEFsbG9jYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gYzp0eXBlOjogUHlPYmplY3RBcmVuYUFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0IGIvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CmluZGV4IGNjODQzMTQuLmU5ZThhZGQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKQEAgLTE1MCw4ICsxNTAsOSBAQAogVGhlIDphdHRyOmBtbF9mbGFnc2AgZmllbGQgaXMgYSBiaXRmaWVsZCB3aGljaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGZsYWdzLgogVGhlIGluZGl2aWR1YWwgZmxhZ3MgaW5kaWNhdGUgZWl0aGVyIGEgY2FsbGluZyBjb252ZW50aW9uIG9yIGEgYmluZGluZwogY29udmVudGlvbi4gIE9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gZmxhZ3MsIG9ubHkgOmNvbnN0OmBNRVRIX1ZBUkFSR1NgIGFuZAotOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBjYW4gYmUgY29tYmluZWQuIEFueSBvZiB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZsYWdzCi1jYW4gYmUgY29tYmluZWQgd2l0aCBhIGJpbmRpbmcgZmxhZy4KKzpjb25zdDpgTUVUSF9LRVlXT1JEU2AgY2FuIGJlIGNvbWJpbmVkIChidXQgbm90ZSB0aGF0IDpjb25zdDpgTUVUSF9LRVlXT1JEU2AKK2Fsb25lIGlzIGVxdWl2YWxlbnQgdG8gYGBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTYGApLiBBbnkgb2YgdGhlIGNhbGxpbmcKK2NvbnZlbnRpb24gZmxhZ3MgY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBiaW5kaW5nIGZsYWcuCiAKIAogLi4gZGF0YTo6IE1FVEhfVkFSQVJHUwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N5cy5yc3QgYi9Eb2MvYy1hcGkvc3lzLnJzdAppbmRleCAzZDgzYjI3Li4wMzVjZGMxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvc3lzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3lzLnJzdApAQCAtNSw2ICs1LDE3IEBACiBPcGVyYXRpbmcgU3lzdGVtIFV0aWxpdGllcwogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBmb3IgKnBhdGgqLiBJZiB0aGUgb2JqZWN0IGlzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsIHRoZW4gaXRzIHJlZmVyZW5jZSBjb3VudCBpcworICAgaW5jcmVtZW50ZWQuIElmIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLAorICAgdGhlbiA6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIGlzIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gT3RoZXJ3aXNlIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkCisgICBhbmQgYGBOVUxMYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIApAQCAtMjEyLDIwICsyMjMsMjQgQEAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0V4aXQoaW50IHN0YXR1cykKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBleGl0KCkKIAotICAgRXhpdCB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjYWxscyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgYW5kIHRoZW4gY2FsbHMgdGhlCi0gICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4KKyAgIEV4aXQgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgY2FsbHMgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgYW5kIHRoZW4gY2FsbHMgdGhlCisgICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4gIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgCisgICBpbmRpY2F0ZXMgYW4gZXJyb3IsIHRoZSBleGl0IHN0YXR1cyBpcyBzZXQgdG8gMTIwLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgRXJyb3JzIGZyb20gZmluYWxpemF0aW9uIG5vIGxvbmdlciBpZ25vcmVkLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSAoKSkKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBjbGVhbnVwIGZ1bmN0aW9ucwogCi0gICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplYC4gIFRoZSBjbGVhbnVwCisgICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgLiAgVGhlIGNsZWFudXAKICAgIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0dXJuIG5vIHZhbHVlLiAgQXQgbW9zdAogICAgMzIgY2xlYW51cCBmdW5jdGlvbnMgY2FuIGJlIHJlZ2lzdGVyZWQuICBXaGVuIHRoZSByZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCwKICAgIDpjOmZ1bmM6YFB5X0F0RXhpdGAgcmV0dXJucyBgYDBgYDsgb24gZmFpbHVyZSwgaXQgcmV0dXJucyBgYC0xYGAuICBUaGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IDI2ODMxYzQuLmYwMjMxOGIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTQ0MCw3ICs0NDAsNiBAQAogICAgLi4gJSBiZWNhdXNlIG5vdCBhbGwgY29tcGlsZXJzIHN1cHBvcnQgdGhlICV6IHdpZHRoIG1vZGlmaWVyIC0tIHdlIGZha2UgaXQKICAgIC4uICUgd2hlbiBuZWNlc3NhcnkgdmlhIGludGVycG9sYXRpbmcgUFlfRk9STUFUX1NJWkVfVC4KICAgIC4uICUgU2ltaWxhciBjb21tZW50cyBhcHBseSB0byB0aGUgJWxsIHdpZHRoIG1vZGlmaWVyIGFuZAotICAgLi4gJSBQWV9GT1JNQVRfTE9OR19MT05HLgogCiAgICAuLiB0YWJ1bGFyY29sdW1uczo6IHxsfGx8THwKIApAQCAtNTI1LDExICs1MjQsNiBAQAogICAgY29waWVkIGFzLWlzIHRvIHRoZSByZXN1bHQgc3RyaW5nLCBhbmQgYW55IGV4dHJhIGFyZ3VtZW50cyBkaXNjYXJkZWQuCiAKICAgIC4uIG5vdGU6OgotCi0gICAgICBUaGUgYCIlbGxkImAgYW5kIGAiJWxsdSJgIGZvcm1hdCBzcGVjaWZpZXJzIGFyZSBvbmx5IGF2YWlsYWJsZQotICAgICAgd2hlbiA6Y29uc3Q6YEhBVkVfTE9OR19MT05HYCBpcyBkZWZpbmVkLgotCi0gICAuLiBub3RlOjoKICAgICAgIFRoZSB3aWR0aCBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgY2hhcmFjdGVycyByYXRoZXIgdGhhbiBieXRlcy4KICAgICAgIFRoZSBwcmVjaXNpb24gZm9ybWF0dGVyIHVuaXQgaXMgbnVtYmVyIG9mIGJ5dGVzIGZvciBgYCIlcyJgYCBhbmQKICAgICAgIGBgIiVWImBgIChpZiB0aGUgYGBQeU9iamVjdCpgYCBhcmd1bWVudCBpcyBOVUxMKSwgYW5kIGEgbnVtYmVyIG9mCkBAIC04MTEsMzggKzgwNSw0NyBAQAogIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogVG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZSBuYW1lcyBhbmQgb3RoZXIgZW52aXJvbm1lbnQgc3RyaW5ncywKLTpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1FbmNvZGluZ2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVuY29kaW5nLCBhbmQKLWBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkuIFRvCi1lbmNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKKzpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlbmNvZGluZywgYW5kCis6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVycm9yIGhhbmRsZXIKKyg6cGVwOmAzODNgIGFuZCA6cGVwOmA1MjlgKS4gVG8gZW5jb2RlIGZpbGUgbmFtZXMgdG8gOmNsYXNzOmBieXRlc2AgZHVyaW5nCithcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nCis6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogb2JqLCB2b2lkKiByZXN1bHQpCiAKLSAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgdG8gOmNsYXNzOmBieXRlc2AgdXNpbmcKKyAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgLS0gb2J0YWluZWQgZGlyZWN0bHkgb3IKKyAgIHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0byA6Y2xhc3M6YGJ5dGVzYCB1c2luZwogICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGA7IDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KICAgICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeUJ5dGVzT2JqZWN0KmAgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzCiAgICBubyBsb25nZXIgdXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCi1UbyBkZWNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246CitUbyBkZWNvZGUgZmlsZSBuYW1lcyB0byA6Y2xhc3M6YHN0cmAgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYAorY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0RlY29kZXJgIGFzIHRoZQorY29udmVyc2lvbiBmdW5jdGlvbjoKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBvYmosIHZvaWQqIHJlc3VsdCkKIAotICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGRlY29kZSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzIHRvIDpjbGFzczpgc3RyYCB1c2luZwotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgOyA6Y2xhc3M6YHN0cmAgb2JqZWN0cyBhcmUgb3V0cHV0Ci0gICBhcy1pcy4gKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdCpgIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQKLSAgIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisgICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZGVjb2RlIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgLS0gb2J0YWluZWQgZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0bworICAgOmNsYXNzOmBzdHJgIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYDsgOmNsYXNzOmBzdHJgCisgICBvYmplY3RzIGFyZSBvdXRwdXQgYXMtaXMuICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3QqYCB3aGljaAorICAgbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKICAgIERlY29kZSBhIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBhbmQgdGhlCi0gICBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MuCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgpAQCAtODU2LDI4ICs4NTksMjggQEAKIAogICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNvbnN0IGNoYXIgKnMpCiAKICAgIERlY29kZSBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdXNpbmcgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AKLSAgIGFuZCB0aGUgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgorICAgYW5kIHRoZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCiAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGlmIHlvdSBrbm93IHRoZSBzdHJpbmcgbGVuZ3RoLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agd2l0aCB0aGUKLSAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cywgYW5kIHJldHVybgorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIsIGFuZCByZXR1cm4KICAgIDpjbGFzczpgYnl0ZXNgLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgbWF5IGNvbnRhaW4KICAgIG51bGwgYnl0ZXMuCiAKQEAgLTg5NCw2ICs4OTcsOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogd2NoYXJfdCBTdXBwb3J0CiAiIiIiIiIiIiIiIiIiIiIKZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IGUzODgxOTUuLjhiNDY5ZjQgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtOTIxLDYgKzkyMSw5IEBACiBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yOmludDo6OgogUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcjpQeU9iamVjdCo6bzowOgogCitQeU9TX0ZTUGF0aDpQeU9iamVjdCo6OisxOgorUHlPU19GU1BhdGg6UHlPYmplY3QqOnBhdGg6MDoKKwogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6OisxOgogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6Y2FsbGFibGVfb2JqZWN0OjA6CiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0KjphcmdzOjA6CmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggNjQwMzNkYy4uYWIyZjYxNiAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtNjcsNyArNjcsOSBAQAogICAgICAgIFB5X0luaXRpYWxpemUoKTsKICAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbnQoJ1RvZGF5IGlzJywgY3RpbWUodGltZSgpKSlcbiIpOwotICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgICAgZXhpdCgxMjApOworICAgICAgIH0KICAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOwogICAgICAgIHJldHVybiAwOwogICAgfQpAQCAtNzYsNyArNzgsNyBAQAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgdG8gaW5mb3JtIHRoZSBpbnRlcnByZXRlciBhYm91dCBwYXRocyB0byBQeXRob24gcnVuLXRpbWUKIGxpYnJhcmllcy4gIE5leHQsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAsIGZvbGxvd2VkIGJ5IHRoZSBleGVjdXRpb24gb2YgYSBoYXJkLWNvZGVkIFB5dGhvbiBzY3JpcHQKLXRoYXQgcHJpbnRzIHRoZSBkYXRlIGFuZCB0aW1lLiAgQWZ0ZXJ3YXJkcywgdGhlIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBjYWxsIHNodXRzCit0aGF0IHByaW50cyB0aGUgZGF0ZSBhbmQgdGltZS4gIEFmdGVyd2FyZHMsIHRoZSA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBjYWxsIHNodXRzCiB0aGUgaW50ZXJwcmV0ZXIgZG93biwgZm9sbG93ZWQgYnkgdGhlIGVuZCBvZiB0aGUgcHJvZ3JhbS4gIEluIGEgcmVhbCBwcm9ncmFtLAogeW91IG1heSB3YW50IHRvIGdldCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIGFub3RoZXIgc291cmNlLCBwZXJoYXBzIGEgdGV4dC1lZGl0b3IKIHJvdXRpbmUsIGEgZmlsZSwgb3IgYSBkYXRhYmFzZS4gIEdldHRpbmcgdGhlIFB5dGhvbiBjb2RlIGZyb20gYSBmaWxlIGNhbiBiZXR0ZXIKZGlmZiAtLWdpdCBhL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0IGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKaW5kZXggNjk0NzUzZS4uOWM1ZTIwZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKKysrIGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKQEAgLTgzOCw3ICs4MzgsOCBAQAogVG8gY29udmVydCwgZS5nLiwgdGhlIG51bWJlciAxNDQgdG8gdGhlIHN0cmluZyAnMTQ0JywgdXNlIHRoZSBidWlsdC1pbiB0eXBlCiBjb25zdHJ1Y3RvciA6ZnVuYzpgc3RyYC4gIElmIHlvdSB3YW50IGEgaGV4YWRlY2ltYWwgb3Igb2N0YWwgcmVwcmVzZW50YXRpb24sIHVzZQogdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgaGV4YCBvciA6ZnVuYzpgb2N0YC4gIEZvciBmYW5jeSBmb3JtYXR0aW5nLCBzZWUKLXRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLCBlLmcuIGBgIns6MDRkfSIuZm9ybWF0KDE0NClgYCB5aWVsZHMKK3RoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9ucywKK2UuZy4gYGAiezowNGR9Ii5mb3JtYXQoMTQ0KWBgIHlpZWxkcwogYGAnMDE0NCdgYCBhbmQgYGAiezouM2Z9Ii5mb3JtYXQoMS4wLzMuMClgYCB5aWVsZHMgYGAnMC4zMzMnYGAuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggNDViNzk0Zi4uZjgwYjZkZiAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC03MTgsNiArNzE4LDggQEAKIAogICAgICAgICAgICBkZWYgZnVuYyhmb28sIGJhcj1Ob25lKTogLi4uCiAKKyAgICAgIC4uIF9wb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyOgorCiAgICAgICAqIDpkZm46YHBvc2l0aW9uYWwtb25seWA6IHNwZWNpZmllcyBhbiBhcmd1bWVudCB0aGF0IGNhbiBiZSBzdXBwbGllZCBvbmx5CiAgICAgICAgIGJ5IHBvc2l0aW9uLiAgUHl0aG9uIGhhcyBubyBzeW50YXggZm9yIGRlZmluaW5nIHBvc2l0aW9uYWwtb25seQogICAgICAgICBwYXJhbWV0ZXJzLiAgSG93ZXZlciwgc29tZSBidWlsdC1pbiBmdW5jdGlvbnMgaGF2ZSBwb3NpdGlvbmFsLW9ubHkKQEAgLTc3Niw2ICs3NzgsMTYgQEAKICAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAogICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KIAorICAgcGF0aC1saWtlIG9iamVjdAorICAgICAgQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgc3lzdGVtIHBhdGguIEEgcGF0aC1saWtlIG9iamVjdCBpcyBlaXRoZXIKKyAgICAgIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgYSBwYXRoLCBvciBhbiBvYmplY3QKKyAgICAgIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wuIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzCisgICAgICB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wgY2FuIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgc3RyYCBvcgorICAgICAgOmNsYXNzOmBieXRlc2AgZmlsZSBzeXN0ZW0gcGF0aCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgb3MuZnNwYXRoYCBmdW5jdGlvbjsKKyAgICAgIDpmdW5jOmBvcy5mc2RlY29kZWAgYW5kIDpmdW5jOmBvcy5mc2VuY29kZWAgY2FuIGJlIHVzZWQgdG8gZ3VhcmFudGVlIGEKKyAgICAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCByZXN1bHQgaW5zdGVhZCwgcmVzcGVjdGl2ZWx5LiBJbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA1MTlgLgorCiAgICBwb3J0aW9uCiAgICAgICBBIHNldCBvZiBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkgKHBvc3NpYmx5IHN0b3JlZCBpbiBhIHppcCBmaWxlKQogICAgICAgdGhhdCBjb250cmlidXRlIHRvIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFzIGRlZmluZWQgaW4gOnBlcDpgNDIwYC4KQEAgLTk1MiwxMyArOTY0LDI1IEBACiAgICAgICBgYCdccidgYC4gIFNlZSA6cGVwOmAyNzhgIGFuZCA6cGVwOmAzMTE2YCwgYXMgd2VsbCBhcwogICAgICAgOmZ1bmM6YGJ5dGVzLnNwbGl0bGluZXNgIGZvciBhbiBhZGRpdGlvbmFsIHVzZS4KIAorICAgdmFyaWFibGUgYW5ub3RhdGlvbgorICAgICAgQSB0eXBlIG1ldGFkYXRhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIG1vZHVsZSBnbG9iYWwgdmFyaWFibGUgb3IKKyAgICAgIGEgY2xhc3MgYXR0cmlidXRlLiBJdHMgc3ludGF4IGlzIGV4cGxhaW5lZCBpbiBzZWN0aW9uIDpyZWY6YGFubmFzc2lnbmAuCisgICAgICBBbm5vdGF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCBzcGVjaWFsCisgICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyBvciBtb2R1bGUgb2JqZWN0IGFuZCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcKKyAgICAgIDpmdW5jOmB0eXBpbmcuZ2V0X3R5cGVfaGludHNgLgorCisgICAgICBQeXRob24gaXRzZWxmIGRvZXMgbm90IGFzc2lnbiBhbnkgcGFydGljdWxhciBtZWFuaW5nIHRvIHZhcmlhYmxlCisgICAgICBhbm5vdGF0aW9ucy4gVGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgaW50ZXJwcmV0ZWQgYnkgdGhpcmQtcGFydHkgbGlicmFyaWVzCisgICAgICBvciB0eXBlIGNoZWNraW5nIHRvb2xzLiBTZWUgOnBlcDpgNTI2YCwgOnBlcDpgNDg0YCB3aGljaCBkZXNjcmliZQorICAgICAgc29tZSBvZiB0aGVpciBwb3RlbnRpYWwgdXNlcy4KKwogICAgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgQSBjb29wZXJhdGl2ZWx5IGlzb2xhdGVkIHJ1bnRpbWUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgUHl0aG9uIHVzZXJzCiAgICAgICBhbmQgYXBwbGljYXRpb25zIHRvIGluc3RhbGwgYW5kIHVwZ3JhZGUgUHl0aG9uIGRpc3RyaWJ1dGlvbiBwYWNrYWdlcwogICAgICAgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBiZWhhdmlvdXIgb2Ygb3RoZXIgUHl0aG9uIGFwcGxpY2F0aW9ucwogICAgICAgcnVubmluZyBvbiB0aGUgc2FtZSBzeXN0ZW0uCiAKLSAgICAgIFNlZSBhbHNvIDpyZWY6YHNjcmlwdHMtcHl2ZW52YC4KKyAgICAgIFNlZSBhbHNvIDptb2Q6YHZlbnZgLgogCiAgICB2aXJ0dWFsIG1hY2hpbmUKICAgICAgIEEgY29tcHV0ZXIgZGVmaW5lZCBlbnRpcmVseSBpbiBzb2Z0d2FyZS4gIFB5dGhvbidzIHZpcnR1YWwgbWFjaGluZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdCBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKaW5kZXggM2I3OWI5Mi4uN2UxNjFhNSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAorKysgYi9Eb2MvaG93dG8vYXJncGFyc2UucnN0CkBAIC01NDcsNyArNTQ3LDggQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAicHJvZy5weSIsIGxpbmUgMTEsIGluIDxtb2R1bGU+CiAgICAgICAgaWYgYXJncy52ZXJib3NpdHkgPj0gMjoKLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IE5vbmVUeXBlKCkgPj0gaW50KCkKKyAgIFR5cGVFcnJvcjogJz49JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdOb25lVHlwZScgYW5kICdpbnQnCisKIAogKiBGaXJzdCBvdXRwdXQgd2VudCB3ZWxsLCBhbmQgZml4ZXMgdGhlIGJ1ZyB3ZSBoYWQgYmVmb3JlLgogICBUaGF0IGlzLCB3ZSB3YW50IGFueSB2YWx1ZSA+PSAyIHRvIGJlIGFzIHZlcmJvc2UgYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vY2xpbmljLnJzdCBiL0RvYy9ob3d0by9jbGluaWMucnN0CmluZGV4IGNhYTQ5NzUuLmY0MzU4ODQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9jbGluaWMucnN0CisrKyBiL0RvYy9ob3d0by9jbGluaWMucnN0CkBAIC04MjcsOSArODI3LDkgQEAKIGBgJ2knYGAgICAgIGBgaW50YGAKIGBgJ0knYGAgICAgIGBgdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSlgYAogYGAnaydgYCAgICAgYGB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSlgYAotYGAnSydgYCAgICAgYGB1bnNpZ25lZF9QWV9MT05HX0xPTkcoYml0d2lzZT1UcnVlKWBgCitgYCdLJ2BgICAgICBgYHVuc2lnbmVkX2xvbmdfbG9uZyhiaXR3aXNlPVRydWUpYGAKIGBgJ2wnYGAgICAgIGBgbG9uZ2BgCi1gYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCitgYCdMJ2BgICAgICBgYGxvbmcgbG9uZ2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAogYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggZGU2NTk1MC4uNTkzMzQxYyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICBhcmdwYXJzZS5yc3QKICAgIGlwYWRkcmVzcy5yc3QKICAgIGNsaW5pYy5yc3QKKyAgIGluc3RydW1lbnRhdGlvbi5yc3QKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QgYi9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjFhNjA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QKQEAgLTAsMCArMSw0MTEgQEAKKy4uIF9pbnN0cnVtZW50YXRpb246CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbnN0cnVtZW50aW5nIENQeXRob24gd2l0aCBEVHJhY2UgYW5kIFN5c3RlbVRhcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOmF1dGhvcjogRGF2aWQgTWFsY29sbQorOmF1dGhvcjogxYF1a2FzeiBMYW5nYQorCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBhcmUgbW9uaXRvcmluZyB0b29scywgZWFjaCBwcm92aWRpbmcgYSB3YXkgdG8gaW5zcGVjdAord2hhdCB0aGUgcHJvY2Vzc2VzIG9uIGEgY29tcHV0ZXIgc3lzdGVtIGFyZSBkb2luZy4gIFRoZXkgYm90aCB1c2UKK2RvbWFpbi1zcGVjaWZpYyBsYW5ndWFnZXMgYWxsb3dpbmcgYSB1c2VyIHRvIHdyaXRlIHNjcmlwdHMgd2hpY2g6CisKKyAgLSBmaWx0ZXIgd2hpY2ggcHJvY2Vzc2VzIGFyZSB0byBiZSBvYnNlcnZlZAorICAtIGdhdGhlciBkYXRhIGZyb20gdGhlIHByb2Nlc3NlcyBvZiBpbnRlcmVzdAorICAtIGdlbmVyYXRlIHJlcG9ydHMgb24gdGhlIGRhdGEKKworQXMgb2YgUHl0aG9uIDMuNiwgQ1B5dGhvbiBjYW4gYmUgYnVpbHQgd2l0aCBlbWJlZGRlZCAibWFya2VycyIsIGFsc28KK2tub3duIGFzICJwcm9iZXMiLCB0aGF0IGNhbiBiZSBvYnNlcnZlZCBieSBhIERUcmFjZSBvciBTeXN0ZW1UYXAgc2NyaXB0LAorbWFraW5nIGl0IGVhc2llciB0byBtb25pdG9yIHdoYXQgdGhlIENQeXRob24gcHJvY2Vzc2VzIG9uIGEgc3lzdGVtIGFyZQorZG9pbmcuCisKKy4uIEknbSB1c2luZyAiLi4gY29kZS1ibG9jazo6IGMiIGZvciBTeXN0ZW1UYXAgc2NyaXB0cywgYXMgImMiIGlzIHN5bnRhY3RpY2FsbHkKKyAgIHRoZSBjbG9zZXN0IG1hdGNoIHRoYXQgU3BoaW54IHN1cHBvcnRzCisKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRFRyYWNlIG1hcmtlcnMgYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIENQeXRob24gaW50ZXJwcmV0ZXIuCisgICBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHByb2JlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2ZXJzaW9ucyBvZgorICAgQ1B5dGhvbi4gRFRyYWNlIHNjcmlwdHMgY2FuIHN0b3Agd29ya2luZyBvciB3b3JrIGluY29ycmVjdGx5IHdpdGhvdXQKKyAgIHdhcm5pbmcgd2hlbiBjaGFuZ2luZyBDUHl0aG9uIHZlcnNpb25zLgorCisKK0VuYWJsaW5nIHRoZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21hY09TIGNvbWVzIHdpdGggYnVpbHQtaW4gc3VwcG9ydCBmb3IgRFRyYWNlLiAgT24gTGludXgsIGluIG9yZGVyIHRvCitidWlsZCBDUHl0aG9uIHdpdGggdGhlIGVtYmVkZGVkIG1hcmtlcnMgZm9yIFN5c3RlbVRhcCwgdGhlIFN5c3RlbVRhcAorZGV2ZWxvcG1lbnQgdG9vbHMgbXVzdCBiZSBpbnN0YWxsZWQuCisKK09uIGEgTGludXggbWFjaGluZSwgdGhpcyBjYW4gYmUgZG9uZSB2aWE6OgorCisgICB5dW0gaW5zdGFsbCBzeXN0ZW10YXAtc2R0LWRldmVsCisKK29yOjoKKworICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgc3lzdGVtdGFwLXNkdC1kZXYKKworCitDUHl0aG9uIG11c3QgdGhlbiBiZSBjb25maWd1cmVkIGAtLXdpdGgtZHRyYWNlYDo6CisKKyAgIGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uIHllcworCitPbiBtYWNPUywgeW91IGNhbiBsaXN0IGF2YWlsYWJsZSBEVHJhY2UgcHJvYmVzIGJ5IHJ1bm5pbmcgYSBQeXRob24KK3Byb2Nlc3MgaW4gdGhlIGJhY2tncm91bmQgYW5kIGxpc3RpbmcgYWxsIHByb2JlcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUKK1B5dGhvbiBwcm92aWRlcjo6CisKKyAgICQgcHl0aG9uMy42IC1xICYKKyAgICQgc3VkbyBkdHJhY2UgLWwgLVAgcHl0aG9uJCEgICMgb3I6IGR0cmFjZSAtbCAtbSBweXRob24zLjYKKworICAgICAgSUQgICBQUk9WSURFUiAgICAgICAgICAgIE1PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOQ1RJT04gTkFNRQorICAgMjk1NjQgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgZnVuY3Rpb24tZW50cnkKKyAgIDI5NTY1IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5IGZ1bmN0aW9uLWVudHJ5CisgICAyOTU2NiBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBmdW5jdGlvbi1yZXR1cm4KKyAgIDI5NTY3IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuIGZ1bmN0aW9uLXJldHVybgorICAgMjk1NjggcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2MtZG9uZQorICAgMjk1NjkgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2Mtc3RhcnQKKyAgIDI5NTcwIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGxpbmUKKyAgIDI5NTcxIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lIGxpbmUKKworT24gTGludXgsIHlvdSBjYW4gdmVyaWZ5IGlmIHRoZSBTeXN0ZW1UYXAgc3RhdGljIG1hcmtlcnMgYXJlIHByZXNlbnQgaW4KK3RoZSBidWlsdCBiaW5hcnkgYnkgc2VlaW5nIGlmIGl0IGNvbnRhaW5zIGEgIi5ub3RlLnN0YXBzZHQiIHNlY3Rpb24uCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyAuL3B5dGhvbiB8IGdyZXAgLm5vdGUuc3RhcHNkdAorICAgWzMwXSAubm90ZS5zdGFwc2R0ICAgICAgICBOT1RFICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMDMwOGQ3OAorCitJZiB5b3UndmUgYnVpbHQgUHl0aG9uIGFzIGEgc2hhcmVkIGxpYnJhcnkgKHdpdGggLS1lbmFibGUtc2hhcmVkKSwgeW91CituZWVkIHRvIGxvb2sgaW5zdGVhZCB3aXRoaW4gdGhlIHNoYXJlZCBsaWJyYXJ5LiAgRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyBsaWJweXRob24zLjNkbS5zby4xLjAgfCBncmVwIC5ub3RlLnN0YXBzZHQKKyAgIFsyOV0gLm5vdGUuc3RhcHNkdCAgICAgICAgTk9URSAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAzNjViNjgKKworU3VmZmljaWVudGx5IG1vZGVybiByZWFkZWxmIGNhbiBwcmludCB0aGUgbWV0YWRhdGE6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICAkIHJlYWRlbGYgLW4gLi9weXRob24KKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI1NCB3aXRoIGxlbmd0aCAweDAwMDAwMDIwOgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgICAgICAgICAgTlRfR05VX0FCSV9UQUcgKEFCSSB2ZXJzaW9uIHRhZykKKyAgICAgICAgICAgIE9TOiBMaW51eCwgQUJJOiAyLjYuMzIKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI3NCB3aXRoIGxlbmd0aCAweDAwMDAwMDI0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQgICAgICAgICAgTlRfR05VX0JVSUxEX0lEICh1bmlxdWUgYnVpbGQgSUQgYml0c3RyaW5nKQorICAgICAgICAgICAgQnVpbGQgSUQ6IGRmOTI0YTJiMDhhN2U4OWY2ZTExMjUxZDQ2MDIwMjI5NzdhZjI2NzAKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDJkNmMzMCB3aXRoIGxlbmd0aCAweDAwMDAwMTQ0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwMzEgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZ2NfX3N0YXJ0CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNDM3MWMzLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmY2CisgICAgICAgICAgICBBcmd1bWVudHM6IC00QCVlYngKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBnY19fZG9uZQorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDQzNzRlMSwgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJmOAorICAgICAgICAgICAgQXJndW1lbnRzOiAtOEAlcmF4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwNDUgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZnVuY3Rpb25fX2VudHJ5CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNTNkYjZjLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmU4CisgICAgICAgICAgICBBcmd1bWVudHM6IDhAJXJicCA4QCVyMTIgLTRAJWVheAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDQ2ICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGZ1bmN0aW9uX19yZXR1cm4KKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA1M2RiYTgsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZWEKKyAgICAgICAgICAgIEFyZ3VtZW50czogOEAlcmJwIDhAJXIxMiAtNEAlZWF4CisKK1RoZSBhYm92ZSBtZXRhZGF0YSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgU3lzdGVtVGFwIGRlc2NyaWJpbmcgaG93IGl0CitjYW4gcGF0Y2ggc3RyYXRlZ2ljYWxseS1wbGFjZWQgbWFjaGluZSBjb2RlIGluc3RydWN0aW9ucyB0byBlbmFibGUgdGhlCit0cmFjaW5nIGhvb2tzIHVzZWQgYnkgYSBTeXN0ZW1UYXAgc2NyaXB0LgorCisKK1N0YXRpYyBEVHJhY2UgcHJvYmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgRFRyYWNlIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSBjYWxsL3JldHVybgoraGllcmFyY2h5IG9mIGEgUHl0aG9uIHNjcmlwdCwgb25seSB0cmFjaW5nIHdpdGhpbiB0aGUgaW52b2NhdGlvbiBvZgorYSBmdW5jdGlvbiBjYWxsZWQgInN0YXJ0Ii4gSW4gb3RoZXIgd29yZHMsIGltcG9ydC10aW1lIGZ1bmN0aW9uCitpbnZvY2F0aW9ucyBhcmUgbm90IGdvaW5nIHRvIGJlIGxpc3RlZDoKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIHNlbGYgaW50IGluZGVudDsKKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorICAgIC9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KKyAgICB7CisgICAgICAgICAgICBzZWxmLT50cmFjZSA9IDE7CisgICAgfQorCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgICAgICAgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgICAgICAgICBzZWxmLT5pbmRlbnQrKzsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPmluZGVudC0tOworICAgICAgICAgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOworICAgICAgICAgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPnRyYWNlID0gMDsKKyAgICB9CisKK0l0IGNhbiBiZSBpbnZva2VkIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHN1ZG8gZHRyYWNlIC1xIC1zIGNhbGxfc3RhY2suZCAtYyAicHl0aG9uMy42IHNjcmlwdC5weSIKKworVGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6OgorCisgICAgMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCisgICAgMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyAgICAxNTY2NDEzNjA1MzI3OTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA1NDY4MDcgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyAgICAxNTY2NDEzNjA1NzgzNjUgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorICAgIDE1NjY0MTM2MDU5MTc1NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorICAgIDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2MTc0ODIgZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDYyOTgxNCBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorICAgIDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgICAgMTU2NjQxMzYwNjU2NzcwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2Njk3MDcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKKyAgICAxNTY2NDEzNjA3MDA3MTkgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKKyAgICAxNTY2NDEzNjA3MTk2NDAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKKyAgICAxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKKyAgICAxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKKworCitTdGF0aWMgU3lzdGVtVGFwIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbG93LWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgdGhlIHN0YXRpYworbWFya2VycyBkaXJlY3RseS4gIFRoaXMgcmVxdWlyZXMgeW91IHRvIGV4cGxpY2l0bHkgc3RhdGUgdGhlIGJpbmFyeSBmaWxlCitjb250YWluaW5nIHRoZW0uCisKK0ZvciBleGFtcGxlLCB0aGlzIFN5c3RlbVRhcCBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgY2FsbC9yZXR1cm4KK2hpZXJhcmNoeSBvZiBhIFB5dGhvbiBzY3JpcHQ6CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgIHByb2JlIHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXFxuIiwKKyAgICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgIH0KKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX3JldHVybiIpIHsKKyAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgIHByaW50ZigiJXMgPD0gJXMgaW4gJXM6JWRcXG4iLAorICAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgfQorCitJdCBjYW4gYmUgaW52b2tlZCBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgc3RhcCBcCisgICAgIHNob3ctY2FsbC1oaWVyYXJjaHkuc3RwIFwKKyAgICAgLWMgIi4vcHl0aG9uIHRlc3QucHkiCisKK1RoZSBvdXRwdXQgbG9va3MgbGlrZSB0aGlzOjoKKworICAgMTE0MDggcHl0aG9uKDgyNzQpOiAgICAgICAgPT4gX19jb250YWluc19fIGluIExpYi9fYWJjb2xsLnB5OjM2MgorICAgMTE0MTQgcHl0aG9uKDgyNzQpOiAgICAgICAgID0+IF9fZ2V0aXRlbV9fIGluIExpYi9vcy5weTo0MjUKKyAgIDExNDE4IHB5dGhvbig4Mjc0KTogICAgICAgICAgPT4gZW5jb2RlIGluIExpYi9vcy5weTo0OTAKKyAgIDExNDI0IHB5dGhvbig4Mjc0KTogICAgICAgICAgPD0gZW5jb2RlIGluIExpYi9vcy5weTo0OTMKKyAgIDExNDI4IHB5dGhvbig4Mjc0KTogICAgICAgICA8PSBfX2dldGl0ZW1fXyBpbiBMaWIvb3MucHk6NDI2CisgICAxMTQzMyBweXRob24oODI3NCk6ICAgICAgICA8PSBfX2NvbnRhaW5zX18gaW4gTGliL19hYmNvbGwucHk6MzY2CisKK3doZXJlIHRoZSBjb2x1bW5zIGFyZToKKworICAtIHRpbWUgaW4gbWljcm9zZWNvbmRzIHNpbmNlIHN0YXJ0IG9mIHNjcmlwdAorCisgIC0gbmFtZSBvZiBleGVjdXRhYmxlCisKKyAgLSBQSUQgb2YgcHJvY2VzcworCithbmQgdGhlIHJlbWFpbmRlciBpbmRpY2F0ZXMgdGhlIGNhbGwvcmV0dXJuIGhpZXJhcmNoeSBhcyB0aGUgc2NyaXB0IGV4ZWN1dGVzLgorCitGb3IgYSBgLS1lbmFibGUtc2hhcmVkYCBidWlsZCBvZiBDUHl0aG9uLCB0aGUgbWFya2VycyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUKK2xpYnB5dGhvbiBzaGFyZWQgbGlicmFyeSwgYW5kIHRoZSBwcm9iZSdzIGRvdHRlZCBwYXRoIG5lZWRzIHRvIHJlZmxlY3QgdGhpcy4gRm9yCitleGFtcGxlLCB0aGlzIGxpbmUgZnJvbSB0aGUgYWJvdmUgZXhhbXBsZTo6CisKKyAgIHByb2JlIHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKworc2hvdWxkIGluc3RlYWQgcmVhZDo6CisKKyAgIHByb2JlIHByb2Nlc3MoInB5dGhvbiIpLmxpYnJhcnkoImxpYnB5dGhvbjMuNmRtLnNvLjEuMCIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKworKGFzc3VtaW5nIGEgZGVidWcgYnVpbGQgb2YgQ1B5dGhvbiAzLjYpCisKKworQXZhaWxhYmxlIHN0YXRpYyBtYXJrZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gSSdtIHJldXNpbmcgdGhlICJjOmZ1bmN0aW9uIiB0eXBlIGZvciBtYXJrZXJzCisKKy4uIGM6ZnVuY3Rpb246OiBmdW5jdGlvbl9fZW50cnkoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgYmVndW4uCisgICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1QeXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKyAgIFRoZSBmaWxlbmFtZSwgZnVuY3Rpb24gbmFtZSwgYW5kIGxpbmUgbnVtYmVyIGFyZSBwcm92aWRlZCBiYWNrIHRvIHRoZQorICAgdHJhY2luZyBzY3JpcHQgYXMgcG9zaXRpb25hbCBhcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcKKyAgIGBgJGFyZzFgYCwgYGAkYXJnMmBgLCBgYCRhcmczYGA6CisKKyAgICAgICAqIGBgJGFyZzFgYCA6IGBgKGNvbnN0IGNoYXIgKilgYCBmaWxlbmFtZSwgYWNjZXNzaWJsZSB1c2luZyBgYHVzZXJfc3RyaW5nKCRhcmcxKWBgCisKKyAgICAgICAqIGBgJGFyZzJgYCA6IGBgKGNvbnN0IGNoYXIgKilgYCBmdW5jdGlvbiBuYW1lLCBhY2Nlc3NpYmxlIHVzaW5nCisgICAgICAgICBgYHVzZXJfc3RyaW5nKCRhcmcyKWBgCisKKyAgICAgICAqIGBgJGFyZzNgYCA6IGBgaW50YGAgbGluZSBudW1iZXIKKworLi4gYzpmdW5jdGlvbjo6IGZ1bmN0aW9uX19yZXR1cm4oc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGlzIHRoZSBjb252ZXJzZSBvZiA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgLCBhbmQgaW5kaWNhdGVzIHRoYXQKKyAgIGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgZW5kZWQgKGVpdGhlciB2aWEgYGByZXR1cm5gYCwgb3IgdmlhIGFuCisgICBleGNlcHRpb24pLiAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtUHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YAorCisuLiBjOmZ1bmN0aW9uOjogbGluZShzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubykKKworICAgVGhpcyBtYXJrZXIgaW5kaWNhdGVzIGEgUHl0aG9uIGxpbmUgaXMgYWJvdXQgdG8gYmUgZXhlY3V0ZWQuICBJdCBpcworICAgdGhlIGVxdWl2YWxlbnQgb2YgbGluZS1ieS1saW5lIHRyYWNpbmcgd2l0aCBhIFB5dGhvbiBwcm9maWxlci4gIEl0IGlzCisgICBub3QgdHJpZ2dlcmVkIHdpdGhpbiBDIGZ1bmN0aW9ucy4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAuCisKKy4uIGM6ZnVuY3Rpb246OiBnY19fc3RhcnQoaW50IGdlbmVyYXRpb24pCisKKyAgIEZpcmVzIHdoZW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciBzdGFydHMgYSBnYXJiYWdlIGNvbGxlY3Rpb24gY3ljbGUuCisgICBgYGFyZzBgYCBpcyB0aGUgZ2VuZXJhdGlvbiB0byBzY2FuLCBsaWtlIDpmdW5jOmBnYy5jb2xsZWN0KClgLgorCisuLiBjOmZ1bmN0aW9uOjogZ2NfX2RvbmUobG9uZyBjb2xsZWN0ZWQpCisKKyAgIEZpcmVzIHdoZW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciBmaW5pc2hlcyBhIGdhcmJhZ2UgY29sbGVjdGlvbgorICAgY3ljbGUuIGBgYXJnMGBgIGlzIHRoZSBudW1iZXIgb2YgY29sbGVjdGVkIG9iamVjdHMuCisKKworU3lzdGVtVGFwIFRhcHNldHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBoaWdoZXItbGV2ZWwgd2F5IHRvIHVzZSB0aGUgU3lzdGVtVGFwIGludGVncmF0aW9uIGlzIHRvIHVzZSBhICJ0YXBzZXQiOgorU3lzdGVtVGFwJ3MgZXF1aXZhbGVudCBvZiBhIGxpYnJhcnksIHdoaWNoIGhpZGVzIHNvbWUgb2YgdGhlIGxvd2VyLWxldmVsCitkZXRhaWxzIG9mIHRoZSBzdGF0aWMgbWFya2Vycy4KKworSGVyZSBpcyBhIHRhcHNldCBmaWxlLCBiYXNlZCBvbiBhIG5vbi1zaGFyZWQgYnVpbGQgb2YgQ1B5dGhvbjoKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIC8qCisgICAgICAgUHJvdmlkZSBhIGhpZ2hlci1sZXZlbCB3cmFwcGluZyBhcm91bmQgdGhlIGZ1bmN0aW9uX19lbnRyeSBhbmQKKyAgICAgICBmdW5jdGlvbl9fcmV0dXJuIG1hcmtlcnM6CisgICAgIFwqLworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeSA9IHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpCisgICAgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworICAgICAgICBmcmFtZXB0ciA9ICRhcmc0CisgICAgfQorICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5yZXR1cm4gPSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKKyAgICB7CisgICAgICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICAgbGluZW5vID0gJGFyZzM7CisgICAgICAgIGZyYW1lcHRyID0gJGFyZzQKKyAgICB9CisKK0lmIHRoaXMgZmlsZSBpcyBpbnN0YWxsZWQgaW4gU3lzdGVtVGFwJ3MgdGFwc2V0IGRpcmVjdG9yeSAoZS5nLgorYGAvdXNyL3NoYXJlL3N5c3RlbXRhcC90YXBzZXRgYCksIHRoZW4gdGhlc2UgYWRkaXRpb25hbCBwcm9iZXBvaW50cyBiZWNvbWUKK2F2YWlsYWJsZToKKworLi4gYzpmdW5jdGlvbjo6IHB5dGhvbi5mdW5jdGlvbi5lbnRyeShzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubywgZnJhbWVwdHIpCisKKyAgIFRoaXMgcHJvYmUgcG9pbnQgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBiZWd1bi4KKyAgIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLXB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworLi4gYzpmdW5jdGlvbjo6IHB5dGhvbi5mdW5jdGlvbi5yZXR1cm4oc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8sIGZyYW1lcHRyKQorCisgICBUaGlzIHByb2JlIHBvaW50IGlzIHRoZSBjb252ZXJzZSBvZiA6YzpmdW5jOmBweXRob24uZnVuY3Rpb24ucmV0dXJuYCwgYW5kCisgICBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGVuZGVkIChlaXRoZXIgdmlhCisgICBgYHJldHVybmBgLCBvciB2aWEgYW4gZXhjZXB0aW9uKS4gIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLXB5dGhvbgorICAgKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCitUaGlzIFN5c3RlbVRhcCBzY3JpcHQgdXNlcyB0aGUgdGFwc2V0IGFib3ZlIHRvIG1vcmUgY2xlYW5seSBpbXBsZW1lbnQgdGhlCitleGFtcGxlIGdpdmVuIGFib3ZlIG9mIHRyYWNpbmcgdGhlIFB5dGhvbiBmdW5jdGlvbi1jYWxsIGhpZXJhcmNoeSwgd2l0aG91dAorbmVlZGluZyB0byBkaXJlY3RseSBuYW1lIHRoZSBzdGF0aWMgbWFya2VyczoKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeQorICAgIHsKKyAgICAgIHByaW50ZigiJXMgPT4gJXMgaW4gJXM6JWRcbiIsCisgICAgICAgICAgICAgdGhyZWFkX2luZGVudCgxKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgIH0KKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5yZXR1cm4KKyAgICB7CisgICAgICBwcmludGYoIiVzIDw9ICVzIGluICVzOiVkXG4iLAorICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoLTEpLCBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubyk7CisgICAgfQorCisKK1RoZSBmb2xsb3dpbmcgc2NyaXB0IHVzZXMgdGhlIHRhcHNldCBhYm92ZSB0byBwcm92aWRlIGEgdG9wLWxpa2UgdmlldyBvZiBhbGwKK3J1bm5pbmcgQ1B5dGhvbiBjb2RlLCBzaG93aW5nIHRoZSB0b3AgMjAgbW9zdCBmcmVxdWVudGx5LWVudGVyZWQgYnl0ZWNvZGUKK2ZyYW1lcywgZWFjaCBzZWNvbmQsIGFjcm9zcyB0aGUgd2hvbGUgc3lzdGVtOgorCisuLiBjb2RlLWJsb2NrOjogYworCisgICAgZ2xvYmFsIGZuX2NhbGxzOworCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLmVudHJ5CisgICAgeworICAgICAgICBmbl9jYWxsc1twaWQoKSwgZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm9dICs9IDE7CisgICAgfQorCisgICAgcHJvYmUgdGltZXIubXMoMTAwMCkgeworICAgICAgICBwcmludGYoIlwwMzNbMkpcMDMzWzE7MUgiKSAvKiBjbGVhciBzY3JlZW4gXCovCisgICAgICAgIHByaW50ZigiJTZzICU4MHMgJTZzICUzMHMgJTZzXG4iLAorICAgICAgICAgICAgICAgIlBJRCIsICJGSUxFTkFNRSIsICJMSU5FIiwgIkZVTkNUSU9OIiwgIkNBTExTIikKKyAgICAgICAgZm9yZWFjaCAoW3BpZCwgZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm9dIGluIGZuX2NhbGxzLSBsaW1pdCAyMCkgeworICAgICAgICAgICAgcHJpbnRmKCIlNmQgJTgwcyAlNmQgJTMwcyAlNmRcbiIsCisgICAgICAgICAgICAgICAgcGlkLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jbmFtZSwKKyAgICAgICAgICAgICAgICBmbl9jYWxsc1twaWQsIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSk7CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlIGZuX2NhbGxzOworICAgIH0KKwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxZjcyNy4uMDAwMDAwMAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQotaW1wb3J0IHNtdHBsaWIKLQotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKLWZyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEFkZHJlc3MKLWZyb20gZW1haWwudXRpbHMgaW1wb3J0IG1ha2VfbXNnaWQKLQotIyBDcmVhdGUgdGhlIGJhc2UgdGV4dCBtZXNzYWdlLgotbXNnID0gRW1haWxNZXNzYWdlKCkKLW1zZ1snU3ViamVjdCddID0gIkF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyIgotbXNnWydGcm9tJ10gPSBBZGRyZXNzKCJQZXDDqSBMZSBQZXciLCAicGVwZSIsICJleGFtcGxlLmNvbSIpCi1tc2dbJ1RvJ10gPSAoQWRkcmVzcygiUGVuZWxvcGUgUHVzc3ljYXQiLCAicGVuZWxvcGUiLCAiZXhhbXBsZS5jb20iKSwKLSAgICAgICAgICAgICBBZGRyZXNzKCJGYWJyZXR0ZSBQdXNzeWNhdCIsICJmYWJyZXR0ZSIsICJleGFtcGxlLmNvbSIpKQotbXNnLnNldF9jb250ZW50KCIiIlwKLVNhbHV0IQotCi1DZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCi0KLVsxXSBodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4Ci0KLS0tUGVww6kKLSIiIikKLQotIyBBZGQgdGhlIGh0bWwgdmVyc2lvbi4gIFRoaXMgY29udmVydHMgdGhlIG1lc3NhZ2UgaW50byBhIG11bHRpcGFydC9hbHRlcm5hdGl2ZQotIyBjb250YWluZXIsIHdpdGggdGhlIG9yaWdpbmFsIHRleHQgbWVzc2FnZSBhcyB0aGUgZmlyc3QgcGFydCBhbmQgdGhlIG5ldyBodG1sCi0jIG1lc3NhZ2UgYXMgdGhlIHNlY29uZCBwYXJ0LgotYXNwYXJhZ3VzX2NpZCA9IG1ha2VfbXNnaWQoKQotbXNnLmFkZF9hbHRlcm5hdGl2ZSgiIiJcCi08aHRtbD4KLSAgPGhlYWQ+PC9oZWFkPgotICA8Ym9keT4KLSAgICA8cD5TYWx1dCE8XHA+Ci0gICAgPHA+Q2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50Ci0gICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTg+Ci0gICAgICAgICAgICByZWNpcGllCi0gICAgICAgIDwvYT4gZMOpamV1bmVyLgotICAgIDwvcD4KLSAgICA8aW1nIHNyYz0iY2lkOnthc3BhcmFndXNfY2lkfSIgXD4KLSAgPC9ib2R5PgotPC9odG1sPgotIiIiLmZvcm1hdChhc3BhcmFndXNfY2lkPWFzcGFyYWd1c19jaWRbMTotMV0pLCBzdWJ0eXBlPSdodG1sJykKLSMgbm90ZSB0aGF0IHdlIG5lZWRlZCB0byBwZWVsIHRoZSA8PiBvZmYgdGhlIG1zZ2lkIGZvciB1c2UgaW4gdGhlIGh0bWwuCi0KLSMgTm93IGFkZCB0aGUgcmVsYXRlZCBpbWFnZSB0byB0aGUgaHRtbCBwYXJ0Lgotd2l0aCBvcGVuKCJyb2FzdGVkLWFzcGFyYWd1cy5qcGciLCAncmInKSBhcyBpbWc6Ci0gICAgbXNnLmdldF9wYXlsb2FkKClbMV0uYWRkX3JlbGF0ZWQoaW1nLnJlYWQoKSwgJ2ltYWdlJywgJ2pwZWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1hc3BhcmFndXNfY2lkKQotCi0jIE1ha2UgYSBsb2NhbCBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQuCi13aXRoIG9wZW4oJ291dGdvaW5nLm1zZycsICd3YicpIGFzIGY6Ci0gICAgZi53cml0ZShieXRlcyhtc2cpKQotCi0jIFNlbmQgdGhlIG1lc3NhZ2UgdmlhIGxvY2FsIFNNVFAgc2VydmVyLgotd2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6Ci0gICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggODUwNzBmMy4uMmUxNDJiMQotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CkBAIC0yLDQ3ICsyLDU1IEBACiAKIGltcG9ydCBzbXRwbGliCiAKLWZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKLWZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEFkZHJlc3MKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IG1ha2VfbXNnaWQKIAotIyBtZSA9PSBteSBlbWFpbCBhZGRyZXNzCi0jIHlvdSA9PSByZWNpcGllbnQncyBlbWFpbCBhZGRyZXNzCi1tZSA9ICJteUBlbWFpbC5jb20iCi15b3UgPSAieW91ckBlbWFpbC5jb20iCisjIENyZWF0ZSB0aGUgYmFzZSB0ZXh0IG1lc3NhZ2UuCittc2cgPSBFbWFpbE1lc3NhZ2UoKQorbXNnWydTdWJqZWN0J10gPSAiQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIiCittc2dbJ0Zyb20nXSA9IEFkZHJlc3MoIlBlcMOpIExlIFBldyIsICJwZXBlIiwgImV4YW1wbGUuY29tIikKK21zZ1snVG8nXSA9IChBZGRyZXNzKCJQZW5lbG9wZSBQdXNzeWNhdCIsICJwZW5lbG9wZSIsICJleGFtcGxlLmNvbSIpLAorICAgICAgICAgICAgIEFkZHJlc3MoIkZhYnJldHRlIFB1c3N5Y2F0IiwgImZhYnJldHRlIiwgImV4YW1wbGUuY29tIikpCittc2cuc2V0X2NvbnRlbnQoIiIiXAorU2FsdXQhCiAKLSMgQ3JlYXRlIG1lc3NhZ2UgY29udGFpbmVyIC0gdGhlIGNvcnJlY3QgTUlNRSB0eXBlIGlzIG11bHRpcGFydC9hbHRlcm5hdGl2ZS4KLW1zZyA9IE1JTUVNdWx0aXBhcnQoJ2FsdGVybmF0aXZlJykKLW1zZ1snU3ViamVjdCddID0gIkxpbmsiCi1tc2dbJ0Zyb20nXSA9IG1lCi1tc2dbJ1RvJ10gPSB5b3UKK0NlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KIAotIyBDcmVhdGUgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UgKGEgcGxhaW4tdGV4dCBhbmQgYW4gSFRNTCB2ZXJzaW9uKS4KLXRleHQgPSAiSGkhXG5Ib3cgYXJlIHlvdT9cbkhlcmUgaXMgdGhlIGxpbmsgeW91IHdhbnRlZDpcbmh0dHBzOi8vd3d3LnB5dGhvbi5vcmciCi1odG1sID0gIiIiXAorWzFdIGh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTgKKworLS1QZXDDqQorIiIiKQorCisjIEFkZCB0aGUgaHRtbCB2ZXJzaW9uLiAgVGhpcyBjb252ZXJ0cyB0aGUgbWVzc2FnZSBpbnRvIGEgbXVsdGlwYXJ0L2FsdGVybmF0aXZlCisjIGNvbnRhaW5lciwgd2l0aCB0aGUgb3JpZ2luYWwgdGV4dCBtZXNzYWdlIGFzIHRoZSBmaXJzdCBwYXJ0IGFuZCB0aGUgbmV3IGh0bWwKKyMgbWVzc2FnZSBhcyB0aGUgc2Vjb25kIHBhcnQuCithc3BhcmFndXNfY2lkID0gbWFrZV9tc2dpZCgpCittc2cuYWRkX2FsdGVybmF0aXZlKCIiIlwKIDxodG1sPgogICA8aGVhZD48L2hlYWQ+CiAgIDxib2R5PgotICAgIDxwPkhpITxicj4KLSAgICAgICBIb3cgYXJlIHlvdT88YnI+Ci0gICAgICAgSGVyZSBpcyB0aGUgPGEgaHJlZj0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZyI+bGluazwvYT4geW91IHdhbnRlZC4KKyAgICA8cD5TYWx1dCE8L3A+CisgICAgPHA+Q2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50CisgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTg+CisgICAgICAgICAgICByZWNpcGllCisgICAgICAgIDwvYT4gZMOpamV1bmVyLgogICAgIDwvcD4KKyAgICA8aW1nIHNyYz0iY2lkOnthc3BhcmFndXNfY2lkfSIgLz4KICAgPC9ib2R5PgogPC9odG1sPgotIiIiCisiIiIuZm9ybWF0KGFzcGFyYWd1c19jaWQ9YXNwYXJhZ3VzX2NpZFsxOi0xXSksIHN1YnR5cGU9J2h0bWwnKQorIyBub3RlIHRoYXQgd2UgbmVlZGVkIHRvIHBlZWwgdGhlIDw+IG9mZiB0aGUgbXNnaWQgZm9yIHVzZSBpbiB0aGUgaHRtbC4KIAotIyBSZWNvcmQgdGhlIE1JTUUgdHlwZXMgb2YgYm90aCBwYXJ0cyAtIHRleHQvcGxhaW4gYW5kIHRleHQvaHRtbC4KLXBhcnQxID0gTUlNRVRleHQodGV4dCwgJ3BsYWluJykKLXBhcnQyID0gTUlNRVRleHQoaHRtbCwgJ2h0bWwnKQorIyBOb3cgYWRkIHRoZSByZWxhdGVkIGltYWdlIHRvIHRoZSBodG1sIHBhcnQuCit3aXRoIG9wZW4oInJvYXN0ZWQtYXNwYXJhZ3VzLmpwZyIsICdyYicpIGFzIGltZzoKKyAgICBtc2cuZ2V0X3BheWxvYWQoKVsxXS5hZGRfcmVsYXRlZChpbWcucmVhZCgpLCAnaW1hZ2UnLCAnanBlZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWFzcGFyYWd1c19jaWQpCiAKLSMgQXR0YWNoIHBhcnRzIGludG8gbWVzc2FnZSBjb250YWluZXIuCi0jIEFjY29yZGluZyB0byBSRkMgMjA0NiwgdGhlIGxhc3QgcGFydCBvZiBhIG11bHRpcGFydCBtZXNzYWdlLCBpbiB0aGlzIGNhc2UKLSMgdGhlIEhUTUwgbWVzc2FnZSwgaXMgYmVzdCBhbmQgcHJlZmVycmVkLgotbXNnLmF0dGFjaChwYXJ0MSkKLW1zZy5hdHRhY2gocGFydDIpCisjIE1ha2UgYSBsb2NhbCBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQuCit3aXRoIG9wZW4oJ291dGdvaW5nLm1zZycsICd3YicpIGFzIGY6CisgICAgZi53cml0ZShieXRlcyhtc2cpKQogCiAjIFNlbmQgdGhlIG1lc3NhZ2UgdmlhIGxvY2FsIFNNVFAgc2VydmVyLgotcyA9IHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykKLSMgc2VuZG1haWwgZnVuY3Rpb24gdGFrZXMgMyBhcmd1bWVudHM6IHNlbmRlcidzIGFkZHJlc3MsIHJlY2lwaWVudCdzIGFkZHJlc3MKLSMgYW5kIG1lc3NhZ2UgdG8gc2VuZCAtIGhlcmUgaXQgaXMgc2VudCBhcyBvbmUgc3RyaW5nLgotcy5zZW5kbWFpbChtZSwgeW91LCBtc2cuYXNfc3RyaW5nKCkpCi1zLnF1aXQoKQord2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6CisgICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKaW5kZXggM2M3Yzc3MC4uMGRjZmJmYiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CkBAIC0zLDIyICszLDE0IEBACiAiIiJTZW5kIHRoZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhIE1JTUUgbWVzc2FnZS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc210cGxpYgogIyBGb3IgZ3Vlc3NpbmcgTUlNRSB0eXBlIGJhc2VkIG9uIGZpbGUgbmFtZSBleHRlbnNpb24KIGltcG9ydCBtaW1ldHlwZXMKIAogZnJvbSBhcmdwYXJzZSBpbXBvcnQgQXJndW1lbnRQYXJzZXIKIAotZnJvbSBlbWFpbCBpbXBvcnQgZW5jb2RlcnMKLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQotZnJvbSBlbWFpbC5taW1lLmF1ZGlvIGltcG9ydCBNSU1FQXVkaW8KLWZyb20gZW1haWwubWltZS5iYXNlIGltcG9ydCBNSU1FQmFzZQotZnJvbSBlbWFpbC5taW1lLmltYWdlIGltcG9ydCBNSU1FSW1hZ2UKLWZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKLWZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAotCi1DT01NQVNQQUNFID0gJywgJworZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKK2Zyb20gZW1haWwucG9saWN5IGltcG9ydCBTTVRQCiAKIAogZGVmIG1haW4oKToKQEAgLTQ3LDEyICszOSwxMiBAQAogICAgIGRpcmVjdG9yeSA9IGFyZ3MuZGlyZWN0b3J5CiAgICAgaWYgbm90IGRpcmVjdG9yeToKICAgICAgICAgZGlyZWN0b3J5ID0gJy4nCi0gICAgIyBDcmVhdGUgdGhlIGVuY2xvc2luZyAob3V0ZXIpIG1lc3NhZ2UKLSAgICBvdXRlciA9IE1JTUVNdWx0aXBhcnQoKQotICAgIG91dGVyWydTdWJqZWN0J10gPSAnQ29udGVudHMgb2YgZGlyZWN0b3J5ICVzJyAlIG9zLnBhdGguYWJzcGF0aChkaXJlY3RvcnkpCi0gICAgb3V0ZXJbJ1RvJ10gPSBDT01NQVNQQUNFLmpvaW4oYXJncy5yZWNpcGllbnRzKQotICAgIG91dGVyWydGcm9tJ10gPSBhcmdzLnNlbmRlcgotICAgIG91dGVyLnByZWFtYmxlID0gJ1lvdSB3aWxsIG5vdCBzZWUgdGhpcyBpbiBhIE1JTUUtYXdhcmUgbWFpbCByZWFkZXIuXG4nCisgICAgIyBDcmVhdGUgdGhlIG1lc3NhZ2UKKyAgICBtc2cgPSBFbWFpbE1lc3NhZ2UoKQorICAgIG1zZ1snU3ViamVjdCddID0gJ0NvbnRlbnRzIG9mIGRpcmVjdG9yeSAlcycgJSBvcy5wYXRoLmFic3BhdGgoZGlyZWN0b3J5KQorICAgIG1zZ1snVG8nXSA9ICcsICcuam9pbihhcmdzLnJlY2lwaWVudHMpCisgICAgbXNnWydGcm9tJ10gPSBhcmdzLnNlbmRlcgorICAgIG1zZy5wcmVhbWJsZSA9ICdZb3Ugd2lsbCBub3Qgc2VlIHRoaXMgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyLlxuJwogCiAgICAgZm9yIGZpbGVuYW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIGZpbGVuYW1lKQpAQCAtNjcsMzMgKzU5LDE4IEBACiAgICAgICAgICAgICAjIHVzZSBhIGdlbmVyaWMgYmFnLW9mLWJpdHMgdHlwZS4KICAgICAgICAgICAgIGN0eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKICAgICAgICAgbWFpbnR5cGUsIHN1YnR5cGUgPSBjdHlwZS5zcGxpdCgnLycsIDEpCi0gICAgICAgIGlmIG1haW50eXBlID09ICd0ZXh0JzoKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAjIE5vdGU6IHdlIHNob3VsZCBoYW5kbGUgY2FsY3VsYXRpbmcgdGhlIGNoYXJzZXQKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FVGV4dChmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsaWYgbWFpbnR5cGUgPT0gJ2ltYWdlJzoKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FSW1hZ2UoZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbGlmIG1haW50eXBlID09ICdhdWRpbyc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUF1ZGlvKGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FQmFzZShtYWludHlwZSwgc3VidHlwZSkKLSAgICAgICAgICAgICAgICBtc2cuc2V0X3BheWxvYWQoZnAucmVhZCgpKQotICAgICAgICAgICAgIyBFbmNvZGUgdGhlIHBheWxvYWQgdXNpbmcgQmFzZTY0Ci0gICAgICAgICAgICBlbmNvZGVycy5lbmNvZGVfYmFzZTY0KG1zZykKLSAgICAgICAgIyBTZXQgdGhlIGZpbGVuYW1lIHBhcmFtZXRlcgotICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywgZmlsZW5hbWU9ZmlsZW5hbWUpCi0gICAgICAgIG91dGVyLmF0dGFjaChtc2cpCisgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZy5hZGRfYXR0YWNobWVudChmcC5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnR5cGU9bWFpbnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZT1zdWJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lKQogICAgICMgTm93IHNlbmQgb3Igc3RvcmUgdGhlIG1lc3NhZ2UKLSAgICBjb21wb3NlZCA9IG91dGVyLmFzX3N0cmluZygpCiAgICAgaWYgYXJncy5vdXRwdXQ6Ci0gICAgICAgIHdpdGggb3BlbihhcmdzLm91dHB1dCwgJ3cnKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGNvbXBvc2VkKQorICAgICAgICB3aXRoIG9wZW4oYXJncy5vdXRwdXQsICd3YicpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUobXNnLmFzX2J5dGVzKHBvbGljeT1TTVRQKSkKICAgICBlbHNlOgogICAgICAgICB3aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKLSAgICAgICAgICAgIHMuc2VuZG1haWwoYXJncy5zZW5kZXIsIGFyZ3MucmVjaXBpZW50cywgY29tcG9zZWQpCisgICAgICAgICAgICBzLnNlbmRfbWVzc2FnZShtc2cpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKaW5kZXggODljOGYzYS4uMmM0MjE0NSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKQEAgLTEsMTggKzEsMjQgQEAKICMgSW1wb3J0IHRoZSBlbWFpbCBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwucGFyc2VyIGltcG9ydCBQYXJzZXIKK2Zyb20gZW1haWwucGFyc2VyIGltcG9ydCBCeXRlc1BhcnNlciwgUGFyc2VyCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAogCiAjIElmIHRoZSBlLW1haWwgaGVhZGVycyBhcmUgaW4gYSBmaWxlLCB1bmNvbW1lbnQgdGhlc2UgdHdvIGxpbmVzOgotIyB3aXRoIG9wZW4obWVzc2FnZWZpbGUpIGFzIGZwOgotIyAgICAgaGVhZGVycyA9IFBhcnNlcigpLnBhcnNlKGZwKQorIyB3aXRoIG9wZW4obWVzc2FnZWZpbGUsICdyYicpIGFzIGZwOgorIyAgICAgaGVhZGVycyA9IEJ5dGVzUGFyc2VyKHBvbGljeT1kZWZhdWx0KS5wYXJzZShmcCkKIAotIyAgT3IgZm9yIHBhcnNpbmcgaGVhZGVycyBpbiBhIHN0cmluZywgdXNlOgotaGVhZGVycyA9IFBhcnNlcigpLnBhcnNlc3RyKCdGcm9tOiA8dXNlckBleGFtcGxlLmNvbT5cbicKKyMgIE9yIGZvciBwYXJzaW5nIGhlYWRlcnMgaW4gYSBzdHJpbmcgKHRoaXMgaXMgYW4gdW5jb21tb24gb3BlcmF0aW9uKSwgdXNlOgoraGVhZGVycyA9IFBhcnNlcihwb2xpY3k9ZGVmYXVsdCkucGFyc2VzdHIoCisgICAgICAgICdGcm9tOiBGb28gQmFyIDx1c2VyQGV4YW1wbGUuY29tPlxuJwogICAgICAgICAnVG86IDxzb21lb25lX2Vsc2VAZXhhbXBsZS5jb20+XG4nCiAgICAgICAgICdTdWJqZWN0OiBUZXN0IG1lc3NhZ2VcbicKICAgICAgICAgJ1xuJwogICAgICAgICAnQm9keSB3b3VsZCBnbyBoZXJlXG4nKQogCiAjICBOb3cgdGhlIGhlYWRlciBpdGVtcyBjYW4gYmUgYWNjZXNzZWQgYXMgYSBkaWN0aW9uYXJ5OgotcHJpbnQoJ1RvOiAlcycgJSBoZWFkZXJzWyd0byddKQotcHJpbnQoJ0Zyb206ICVzJyAlIGhlYWRlcnNbJ2Zyb20nXSkKLXByaW50KCdTdWJqZWN0OiAlcycgJSBoZWFkZXJzWydzdWJqZWN0J10pCitwcmludCgnVG86IHt9Jy5mb3JtYXQoaGVhZGVyc1sndG8nXSkpCitwcmludCgnRnJvbToge30nLmZvcm1hdChoZWFkZXJzWydmcm9tJ10pKQorcHJpbnQoJ1N1YmplY3Q6IHt9Jy5mb3JtYXQoaGVhZGVyc1snc3ViamVjdCddKSkKKworIyBZb3UgY2FuIGFsc28gYWNjZXNzIHRoZSBwYXJ0cyBvZiB0aGUgYWRkcmVzc2VzOgorcHJpbnQoJ1JlY2lwaWVudCB1c2VybmFtZToge30nLmZvcm1hdChoZWFkZXJzWyd0byddLmFkZHJlc3Nlc1swXS51c2VybmFtZSkpCitwcmludCgnU2VuZGVyIG5hbWU6IHt9Jy5mb3JtYXQoaGVhZGVyc1snZnJvbSddLmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUpKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weQppbmRleCA2MWQwODMwLi5jNjEwMjQyIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weQpAQCAtMSwzMCArMSwyOSBAQAogIyBJbXBvcnQgc210cGxpYiBmb3IgdGhlIGFjdHVhbCBzZW5kaW5nIGZ1bmN0aW9uCiBpbXBvcnQgc210cGxpYgogCisjIEFuZCBpbWdoZHIgdG8gZmluZCB0aGUgdHlwZXMgb2Ygb3VyIGltYWdlcworaW1wb3J0IGltZ2hkcgorCiAjIEhlcmUgYXJlIHRoZSBlbWFpbCBwYWNrYWdlIG1vZHVsZXMgd2UnbGwgbmVlZAotZnJvbSBlbWFpbC5taW1lLmltYWdlIGltcG9ydCBNSU1FSW1hZ2UKLWZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAKLUNPTU1BU1BBQ0UgPSAnLCAnCi0KLSMgQ3JlYXRlIHRoZSBjb250YWluZXIgKG91dGVyKSBlbWFpbCBtZXNzYWdlLgotbXNnID0gTUlNRU11bHRpcGFydCgpCisjIENyZWF0ZSB0aGUgY29udGFpbmVyIGVtYWlsIG1lc3NhZ2UuCittc2cgPSBFbWFpbE1lc3NhZ2UoKQogbXNnWydTdWJqZWN0J10gPSAnT3VyIGZhbWlseSByZXVuaW9uJwogIyBtZSA9PSB0aGUgc2VuZGVyJ3MgZW1haWwgYWRkcmVzcwogIyBmYW1pbHkgPSB0aGUgbGlzdCBvZiBhbGwgcmVjaXBpZW50cycgZW1haWwgYWRkcmVzc2VzCiBtc2dbJ0Zyb20nXSA9IG1lCi1tc2dbJ1RvJ10gPSBDT01NQVNQQUNFLmpvaW4oZmFtaWx5KQorbXNnWydUbyddID0gJywgJy5qb2luKGZhbWlseSkKIG1zZy5wcmVhbWJsZSA9ICdPdXIgZmFtaWx5IHJldW5pb24nCiAKLSMgQXNzdW1lIHdlIGtub3cgdGhhdCB0aGUgaW1hZ2UgZmlsZXMgYXJlIGFsbCBpbiBQTkcgZm9ybWF0CisjIE9wZW4gdGhlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAgVXNlIGltZ2hkciB0byBmaWd1cmUgb3V0IHRoZQorIyBNSU1FIHN1YnR5cGUgZm9yIGVhY2ggc3BlY2lmaWMgaW1hZ2UuCiBmb3IgZmlsZSBpbiBwbmdmaWxlczoKLSAgICAjIE9wZW4gdGhlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAgTGV0IHRoZSBNSU1FSW1hZ2UgY2xhc3MgYXV0b21hdGljYWxseQotICAgICMgZ3Vlc3MgdGhlIHNwZWNpZmljIGltYWdlIHR5cGUuCiAgICAgd2l0aCBvcGVuKGZpbGUsICdyYicpIGFzIGZwOgotICAgICAgICBpbWcgPSBNSU1FSW1hZ2UoZnAucmVhZCgpKQotICAgIG1zZy5hdHRhY2goaW1nKQorICAgICAgICBpbWdfZGF0YSA9IGZwLnJlYWQoKQorICAgIG1zZy5hZGRfYXR0YWNobWVudChpbWdfZGF0YSwgbWFpbnR5cGU9J2ltYWdlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGU9aW1naGRyLndoYXQoTm9uZSwgaW1nX2RhdGEpKQogCiAjIFNlbmQgdGhlIGVtYWlsIHZpYSBvdXIgb3duIFNNVFAgc2VydmVyLgotcyA9IHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykKLXMuc2VuZF9tZXNzYWdlKG1zZykKLXMucXVpdCgpCit3aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKKyAgICBzLnNlbmRfbWVzc2FnZShtc2cpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIERvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKcmVuYW1lIHRvIERvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQppbmRleCBiOWI4YjQxLi5mNjllZjQwIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKQEAgLTIsMTMgKzIsMTMgQEAKIGltcG9ydCBzbXRwbGliCiAKICMgSW1wb3J0IHRoZSBlbWFpbCBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIAotIyBPcGVuIGEgcGxhaW4gdGV4dCBmaWxlIGZvciByZWFkaW5nLiAgRm9yIHRoaXMgZXhhbXBsZSwgYXNzdW1lIHRoYXQKLSMgdGhlIHRleHQgZmlsZSBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisjIE9wZW4gdGhlIHBsYWluIHRleHQgZmlsZSB3aG9zZSBuYW1lIGlzIGluIHRleHRmaWxlIGZvciByZWFkaW5nLgogd2l0aCBvcGVuKHRleHRmaWxlKSBhcyBmcDoKICAgICAjIENyZWF0ZSBhIHRleHQvcGxhaW4gbWVzc2FnZQotICAgIG1zZyA9IE1JTUVUZXh0KGZwLnJlYWQoKSkKKyAgICBtc2cgPSBFbWFpbE1lc3NhZ2UoKQorICAgIG1zZy5zZXRfY29udGVudChmcC5yZWFkKCkpCiAKICMgbWUgPT0gdGhlIHNlbmRlcidzIGVtYWlsIGFkZHJlc3MKICMgeW91ID09IHRoZSByZWNpcGllbnQncyBlbWFpbCBhZGRyZXNzCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQppbmRleCA1NzRhMGI2Li5lMGE3ZjAxIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKQEAgLTMsMTEgKzMsMTEgQEAKICIiIlVucGFjayBhIE1JTUUgbWVzc2FnZSBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBlbWFpbAotaW1wb3J0IGVycm5vCiBpbXBvcnQgbWltZXR5cGVzCiAKK2Zyb20gZW1haWwucG9saWN5IGltcG9ydCBkZWZhdWx0CisKIGZyb20gYXJncGFyc2UgaW1wb3J0IEFyZ3VtZW50UGFyc2VyCiAKIApAQCAtMjIsOCArMjIsOCBAQAogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ21zZ2ZpbGUnKQogICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAKLSAgICB3aXRoIG9wZW4oYXJncy5tc2dmaWxlKSBhcyBmcDoKLSAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZnApCisgICAgd2l0aCBvcGVuKGFyZ3MubXNnZmlsZSwgJ3JiJykgYXMgZnA6CisgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmcCwgcG9saWN5PWRlZmF1bHQpCiAKICAgICB0cnk6CiAgICAgICAgIG9zLm1rZGlyKGFyZ3MuZGlyZWN0b3J5KQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMgYi9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYwppbmRleCA5ODZkNjcwLi5lYWQ3YmRkIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYworKysgYi9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYwpAQCAtNjMsNiArNjMsOCBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2FkIFwiJXNcIlxuIiwgYXJndlsxXSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHJldHVybiAxMjA7CisgICAgfQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3Rlc3QucHkgYi9Eb2MvaW5jbHVkZXMvdGVzdC5weQppbmRleCA3ZWJmNDZhLi45ZTlkNGE2IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvdGVzdC5weQorKysgYi9Eb2MvaW5jbHVkZXMvdGVzdC5weQpAQCAtMjA0LDcgKzIwNCw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGZyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQotUExBVF9TUEVDID0gIiVzLSVzIiAlIChnZXRfcGxhdGZvcm0oKSwgc3lzLnZlcnNpb25bMDozXSkKK1BMQVRfU1BFQyA9ICIlcy0lZC4lZCIgJSAoZ2V0X3BsYXRmb3JtKCksICpzeXMudmVyc2lvbl9pbmZvWzoyXSkKIHNyYyA9IG9zLnBhdGguam9pbigiYnVpbGQiLCAibGliLiVzIiAlIFBMQVRfU1BFQykKIHN5cy5wYXRoLmFwcGVuZChzcmMpCiAKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkgYi9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CmluZGV4IDNhOGNmNDcuLmFlNWE1MDkgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKKysrIGIvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQpAQCAtMSw0NiArMSwxMyBAQAotZnJvbSBkYXRldGltZSBpbXBvcnQgdHppbmZvLCB0aW1lZGVsdGEsIGRhdGV0aW1lCitmcm9tIGRhdGV0aW1lIGltcG9ydCB0emluZm8sIHRpbWVkZWx0YSwgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIFpFUk8gPSB0aW1lZGVsdGEoMCkKIEhPVVIgPSB0aW1lZGVsdGEoaG91cnM9MSkKLQotIyBBIFVUQyBjbGFzcy4KLQotY2xhc3MgVVRDKHR6aW5mbyk6Ci0gICAgIiIiVVRDIiIiCi0KLSAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KLQotICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gIlVUQyIKLQotICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gWkVSTwotCi11dGMgPSBVVEMoKQotCi0jIEEgY2xhc3MgYnVpbGRpbmcgdHppbmZvIG9iamVjdHMgZm9yIGZpeGVkLW9mZnNldCB0aW1lIHpvbmVzLgotIyBOb3RlIHRoYXQgRml4ZWRPZmZzZXQoMCwgIlVUQyIpIGlzIGEgZGlmZmVyZW50IHdheSB0byBidWlsZCBhCi0jIFVUQyB0emluZm8gb2JqZWN0LgotCi1jbGFzcyBGaXhlZE9mZnNldCh0emluZm8pOgotICAgICIiIkZpeGVkIG9mZnNldCBpbiBtaW51dGVzIGVhc3QgZnJvbSBVVEMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb2Zmc2V0LCBuYW1lKToKLSAgICAgICAgc2VsZi5fX29mZnNldCA9IHRpbWVkZWx0YShtaW51dGVzPW9mZnNldCkKLSAgICAgICAgc2VsZi5fX25hbWUgPSBuYW1lCi0KLSAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19vZmZzZXQKLQotICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gc2VsZi5fX25hbWUKLQotICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gWkVSTworU0VDT05EID0gdGltZWRlbHRhKHNlY29uZHM9MSkKIAogIyBBIGNsYXNzIGNhcHR1cmluZyB0aGUgcGxhdGZvcm0ncyBpZGVhIG9mIGxvY2FsIHRpbWUuCi0KKyMgKE1heSByZXN1bHQgaW4gd3JvbmcgdmFsdWVzIG9uIGhpc3RvcmljYWwgdGltZXMgaW4KKyMgIHRpbWV6b25lcyB3aGVyZSBVVEMgb2Zmc2V0IGFuZC9vciB0aGUgRFNUIHJ1bGVzIGhhZAorIyAgY2hhbmdlZCBpbiB0aGUgcGFzdC4pCiBpbXBvcnQgdGltZSBhcyBfdGltZQogCiBTVERPRkZTRVQgPSB0aW1lZGVsdGEoc2Vjb25kcyA9IC1fdGltZS50aW1lem9uZSkKQEAgLTUzLDYgKzIwLDE2IEBACiAKIGNsYXNzIExvY2FsVGltZXpvbmUodHppbmZvKToKIAorICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIHN0YW1wID0gKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvPXNlbGYpKSAvLyBTRUNPTkQKKyAgICAgICAgYXJncyA9IF90aW1lLmxvY2FsdGltZShzdGFtcClbOjZdCisgICAgICAgIGRzdF9kaWZmID0gRFNURElGRiAvLyBTRUNPTkQKKyAgICAgICAgIyBEZXRlY3QgZm9sZAorICAgICAgICBmb2xkID0gKGFyZ3MgPT0gX3RpbWUubG9jYWx0aW1lKHN0YW1wIC0gZHN0X2RpZmYpKQorICAgICAgICByZXR1cm4gZGF0ZXRpbWUoKmFyZ3MsIG1pY3Jvc2Vjb25kPWR0Lm1pY3Jvc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvPXNlbGYsIGZvbGQ9Zm9sZCkKKwogICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgogICAgICAgICBpZiBzZWxmLl9pc2RzdChkdCk6CiAgICAgICAgICAgICByZXR1cm4gRFNUT0ZGU0VUCkBAIC05OSwyMCArNzYsMzcgQEAKICMgSW4gdGhlIFVTLCBzaW5jZSAyMDA3LCBEU1Qgc3RhcnRzIGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIHNlY29uZAogIyBTdW5kYXkgaW4gTWFyY2gsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkgb24gb3IgYWZ0ZXIgTWFyIDguCiBEU1RTVEFSVF8yMDA3ID0gZGF0ZXRpbWUoMSwgMywgOCwgMikKLSMgYW5kIGVuZHMgYXQgMmFtIChEU1QgdGltZTsgMWFtIHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBmaXJzdCBTdW5kYXkgb2YgTm92LgotRFNURU5EXzIwMDcgPSBkYXRldGltZSgxLCAxMSwgMSwgMSkKKyMgYW5kIGVuZHMgYXQgMmFtIChEU1QgdGltZSkgb24gdGhlIGZpcnN0IFN1bmRheSBvZiBOb3YuCitEU1RFTkRfMjAwNyA9IGRhdGV0aW1lKDEsIDExLCAxLCAyKQogIyBGcm9tIDE5ODcgdG8gMjAwNiwgRFNUIHVzZWQgdG8gc3RhcnQgYXQgMmFtIChzdGFuZGFyZCB0aW1lKSBvbiB0aGUgZmlyc3QKLSMgU3VuZGF5IGluIEFwcmlsIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZTsgMWFtIHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0CisjIFN1bmRheSBpbiBBcHJpbCBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWUpIG9uIHRoZSBsYXN0CiAjIFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5IG9uIG9yIGFmdGVyIE9jdCAyNS4KIERTVFNUQVJUXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDQsIDEsIDIpCi1EU1RFTkRfMTk4N18yMDA2ID0gZGF0ZXRpbWUoMSwgMTAsIDI1LCAxKQorRFNURU5EXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDEwLCAyNSwgMikKICMgRnJvbSAxOTY3IHRvIDE5ODYsIERTVCB1c2VkIHRvIHN0YXJ0IGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QKLSMgU3VuZGF5IGluIEFwcmlsICh0aGUgb25lIG9uIG9yIGFmdGVyIEFwcmlsIDI0KSBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWU7Ci0jIDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdCBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheQorIyBTdW5kYXkgaW4gQXByaWwgKHRoZSBvbmUgb24gb3IgYWZ0ZXIgQXByaWwgMjQpIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZSkKKyMgb24gdGhlIGxhc3QgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkKICMgb24gb3IgYWZ0ZXIgT2N0IDI1LgogRFNUU1RBUlRfMTk2N18xOTg2ID0gZGF0ZXRpbWUoMSwgNCwgMjQsIDIpCiBEU1RFTkRfMTk2N18xOTg2ID0gRFNURU5EXzE5ODdfMjAwNgogCitkZWYgdXNfZHN0X3JhbmdlKHllYXIpOgorICAgICMgRmluZCBzdGFydCBhbmQgZW5kIHRpbWVzIGZvciBVUyBEU1QuIEZvciB5ZWFycyBiZWZvcmUgMTk2NywgcmV0dXJuCisgICAgIyBzdGFydCA9IGVuZCBmb3Igbm8gRFNULgorICAgIGlmIDIwMDYgPCB5ZWFyOgorICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMjAwNywgRFNURU5EXzIwMDcKKyAgICBlbGlmIDE5ODYgPCB5ZWFyIDwgMjAwNzoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5ODdfMjAwNiwgRFNURU5EXzE5ODdfMjAwNgorICAgIGVsaWYgMTk2NiA8IHllYXIgPCAxOTg3OgorICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk2N18xOTg2LCBEU1RFTkRfMTk2N18xOTg2CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIChkYXRldGltZSh5ZWFyLCAxLCAxKSwgKSAqIDIKKworICAgIHN0YXJ0ID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdHN0YXJ0LnJlcGxhY2UoeWVhcj15ZWFyKSkKKyAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0ZW5kLnJlcGxhY2UoeWVhcj15ZWFyKSkKKyAgICByZXR1cm4gc3RhcnQsIGVuZAorCisKIGNsYXNzIFVTVGltZVpvbmUodHppbmZvKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3VycywgcmVwcm5hbWUsIHN0ZG5hbWUsIGRzdG5hbWUpOgpAQCAtMTQxLDI3ICsxMzUsMzkgQEAKICAgICAgICAgICAgICMgaW1wbGVtZW50YXRpb24pIHBhc3NlcyBhIGRhdGV0aW1lIHdpdGggZHQudHppbmZvIGlzIHNlbGYuCiAgICAgICAgICAgICByZXR1cm4gWkVSTwogICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKLQotICAgICAgICAjIEZpbmQgc3RhcnQgYW5kIGVuZCB0aW1lcyBmb3IgVVMgRFNULiBGb3IgeWVhcnMgYmVmb3JlIDE5NjcsIHJldHVybgotICAgICAgICAjIFpFUk8gZm9yIG5vIERTVC4KLSAgICAgICAgaWYgMjAwNiA8IGR0LnllYXI6Ci0gICAgICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMjAwNywgRFNURU5EXzIwMDcKLSAgICAgICAgZWxpZiAxOTg2IDwgZHQueWVhciA8IDIwMDc6Ci0gICAgICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk4N18yMDA2LCBEU1RFTkRfMTk4N18yMDA2Ci0gICAgICAgIGVsaWYgMTk2NiA8IGR0LnllYXIgPCAxOTg3OgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5NjdfMTk4NiwgRFNURU5EXzE5NjdfMTk4NgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFpFUk8KLQotICAgICAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RzdGFydC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCi0gICAgICAgIGVuZCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RlbmQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQotCisgICAgICAgIHN0YXJ0LCBlbmQgPSB1c19kc3RfcmFuZ2UoZHQueWVhcikKICAgICAgICAgIyBDYW4ndCBjb21wYXJlIG5haXZlIHRvIGF3YXJlIG9iamVjdHMsIHNvIHN0cmlwIHRoZSB0aW1lem9uZSBmcm9tCiAgICAgICAgICMgZHQgZmlyc3QuCi0gICAgICAgIGlmIHN0YXJ0IDw9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpIDwgZW5kOgorICAgICAgICBkdCA9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpCisgICAgICAgIGlmIHN0YXJ0ICsgSE9VUiA8PSBkdCA8IGVuZCAtIEhPVVI6CisgICAgICAgICAgICAjIERTVCBpcyBpbiBlZmZlY3QuCiAgICAgICAgICAgICByZXR1cm4gSE9VUgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFpFUk8KKyAgICAgICAgaWYgZW5kIC0gSE9VUiA8PSBkdCA8IGVuZDoKKyAgICAgICAgICAgICMgRm9sZCAoYW4gYW1iaWd1b3VzIGhvdXIpOiB1c2UgZHQuZm9sZCB0byBkaXNhbWJpZ3VhdGUuCisgICAgICAgICAgICByZXR1cm4gWkVSTyBpZiBkdC5mb2xkIGVsc2UgSE9VUgorICAgICAgICBpZiBzdGFydCA8PSBkdCA8IHN0YXJ0ICsgSE9VUjoKKyAgICAgICAgICAgICMgR2FwIChhIG5vbi1leGlzdGVudCBob3VyKTogcmV2ZXJzZSB0aGUgZm9sZCBydWxlLgorICAgICAgICAgICAgcmV0dXJuIEhPVVIgaWYgZHQuZm9sZCBlbHNlIFpFUk8KKyAgICAgICAgIyBEU1QgaXMgb2ZmLgorICAgICAgICByZXR1cm4gWkVSTworCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKyAgICAgICAgc3RhcnQsIGVuZCA9IHVzX2RzdF9yYW5nZShkdC55ZWFyKQorICAgICAgICBzdGFydCA9IHN0YXJ0LnJlcGxhY2UodHppbmZvPXNlbGYpCisgICAgICAgIGVuZCA9IGVuZC5yZXBsYWNlKHR6aW5mbz1zZWxmKQorICAgICAgICBzdGRfdGltZSA9IGR0ICsgc2VsZi5zdGRvZmZzZXQKKyAgICAgICAgZHN0X3RpbWUgPSBzdGRfdGltZSArIEhPVVIKKyAgICAgICAgaWYgZW5kIDw9IGRzdF90aW1lIDwgZW5kICsgSE9VUjoKKyAgICAgICAgICAgICMgUmVwZWF0ZWQgaG91cgorICAgICAgICAgICAgcmV0dXJuIHN0ZF90aW1lLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBpZiBzdGRfdGltZSA8IHN0YXJ0IG9yIGRzdF90aW1lID49IGVuZDoKKyAgICAgICAgICAgICMgU3RhbmRhcmQgdGltZQorICAgICAgICAgICAgcmV0dXJuIHN0ZF90aW1lCisgICAgICAgIGlmIHN0YXJ0IDw9IHN0ZF90aW1lIDwgZW5kIC0gSE9VUjoKKyAgICAgICAgICAgICMgRGF5bGlnaHQgc2F2aW5nIHRpbWUKKyAgICAgICAgICAgIHJldHVybiBkc3RfdGltZQorCiAKIEVhc3Rlcm4gID0gVVNUaW1lWm9uZSgtNSwgIkVhc3Rlcm4iLCAgIkVTVCIsICJFRFQiKQogQ2VudHJhbCAgPSBVU1RpbWVab25lKC02LCAiQ2VudHJhbCIsICAiQ1NUIiwgIkNEVCIpCmRpZmYgLS1naXQgYS9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QgYi9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKaW5kZXggMWVmMzE0OS4uYjIyNDY1ZCAxMDA2NDQKLS0tIGEvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CisrKyBiL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdApAQCAtMiw5ICsyLDkgQEAKIAogLi4gX2luc3RhbGxpbmctaW5kZXg6CiAKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gIEluc3RhbGxpbmcgUHl0aG9uIE1vZHVsZXMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqCitJbnN0YWxsaW5nIFB5dGhvbiBNb2R1bGVzCisqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIDpFbWFpbDogZGlzdHV0aWxzLXNpZ0BweXRob24ub3JnCiAKQEAgLTM0LDI0ICszNCwyNCBAQAogCiAqIGBgcGlwYGAgaXMgdGhlIHByZWZlcnJlZCBpbnN0YWxsZXIgcHJvZ3JhbS4gU3RhcnRpbmcgd2l0aCBQeXRob24gMy40LCBpdAogICBpcyBpbmNsdWRlZCBieSBkZWZhdWx0IHdpdGggdGhlIFB5dGhvbiBiaW5hcnkgaW5zdGFsbGVycy4KLSogYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGEgc2VtaS1pc29sYXRlZCBQeXRob24gZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MKKyogQSAqdmlydHVhbCBlbnZpcm9ubWVudCogaXMgYSBzZW1pLWlzb2xhdGVkIFB5dGhvbiBlbnZpcm9ubWVudCB0aGF0IGFsbG93cwogICBwYWNrYWdlcyB0byBiZSBpbnN0YWxsZWQgZm9yIHVzZSBieSBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24sIHJhdGhlciB0aGFuCi0gIGJlaW5nIGluc3RhbGxlZCBzeXN0ZW0gd2lkZQotKiBgYHB5dmVudmBgIGlzIHRoZSBzdGFuZGFyZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cywgYW5kIGhhcworICBiZWluZyBpbnN0YWxsZWQgc3lzdGVtIHdpZGUuCisqIGBgdmVudmBgIGlzIHRoZSBzdGFuZGFyZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cywgYW5kIGhhcwogICBiZWVuIHBhcnQgb2YgUHl0aG9uIHNpbmNlIFB5dGhvbiAzLjMuIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgaXQKLSAgZGVmYXVsdHMgdG8gaW5zdGFsbGluZyBgYHBpcGBgIGludG8gYWxsIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudHMKKyAgZGVmYXVsdHMgdG8gaW5zdGFsbGluZyBgYHBpcGBgIGludG8gYWxsIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudHMuCiAqIGBgdmlydHVhbGVudmBgIGlzIGEgdGhpcmQgcGFydHkgYWx0ZXJuYXRpdmUgKGFuZCBwcmVkZWNlc3NvcikgdG8KLSAgYGBweXZlbnZgYC4gSXQgYWxsb3dzIHZpcnR1YWwgZW52aXJvbm1lbnRzIHRvIGJlIHVzZWQgb24gdmVyc2lvbnMgb2YKLSAgUHl0aG9uIHByaW9yIHRvIDMuNCwgd2hpY2ggZWl0aGVyIGRvbid0IHByb3ZpZGUgYGBweXZlbnZgYCBhdCBhbGwsIG9yCisgIGBgdmVudmBgLiBJdCBhbGxvd3MgdmlydHVhbCBlbnZpcm9ubWVudHMgdG8gYmUgdXNlZCBvbiB2ZXJzaW9ucyBvZgorICBQeXRob24gcHJpb3IgdG8gMy40LCB3aGljaCBlaXRoZXIgZG9uJ3QgcHJvdmlkZSBgYHZlbnZgYCBhdCBhbGwsIG9yCiAgIGFyZW4ndCBhYmxlIHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBgYHBpcGBgIGludG8gY3JlYXRlZCBlbnZpcm9ubWVudHMuCi0qIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBJbmRleCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gX18gaXMgYSBwdWJsaWMKKyogVGhlIGBQeXRob24gUGFja2FnaW5nIEluZGV4IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfXyBpcyBhIHB1YmxpYwogICByZXBvc2l0b3J5IG9mIG9wZW4gc291cmNlIGxpY2Vuc2VkIHBhY2thZ2VzIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UgYnkKLSAgb3RoZXIgUHl0aG9uIHVzZXJzCisgIG90aGVyIFB5dGhvbiB1c2Vycy4KICogdGhlIGBQeXRob24gUGFja2FnaW5nIEF1dGhvcml0eQogICA8aHR0cHM6Ly93d3cucHlwYS5pby9lbi9sYXRlc3QvPmBfXyBhcmUgdGhlIGdyb3VwIG9mCiAgIGRldmVsb3BlcnMgYW5kIGRvY3VtZW50YXRpb24gYXV0aG9ycyByZXNwb25zaWJsZSBmb3IgdGhlIG1haW50ZW5hbmNlIGFuZAogICBldm9sdXRpb24gb2YgdGhlIHN0YW5kYXJkIHBhY2thZ2luZyB0b29scyBhbmQgdGhlIGFzc29jaWF0ZWQgbWV0YWRhdGEgYW5kCi0gIGZpbGUgZm9ybWF0IHN0YW5kYXJkcy4gVGhleSBtYWludGFpbiBhIHZhcmlldHkgb2YgdG9vbHMsIGRvY3VtZW50YXRpb24KKyAgZmlsZSBmb3JtYXQgc3RhbmRhcmRzLiBUaGV5IG1haW50YWluIGEgdmFyaWV0eSBvZiB0b29scywgZG9jdW1lbnRhdGlvbiwKICAgYW5kIGlzc3VlIHRyYWNrZXJzIG9uIGJvdGggYEdpdEh1YiA8aHR0cHM6Ly9naXRodWIuY29tL3B5cGE+YF9fIGFuZAogICBgQml0QnVja2V0IDxodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS8+YF9fLgogKiBgYGRpc3R1dGlsc2BgIGlzIHRoZSBvcmlnaW5hbCBidWlsZCBhbmQgZGlzdHJpYnV0aW9uIHN5c3RlbSBmaXJzdCBhZGRlZCB0bwpAQCAtNjIsNiArNjIsMTkgQEAKICAgb2YgdGhlIG1haWxpbmcgbGlzdCB1c2VkIHRvIGNvb3JkaW5hdGUgUHl0aG9uIHBhY2thZ2luZyBzdGFuZGFyZHMKICAgZGV2ZWxvcG1lbnQpLgogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBgYHB5dmVudmBgIHdhcyB0aGUgcmVjb21tZW5kZWQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMgZm9yCisgICBQeXRob24gMy4zIGFuZCAzLjQsIGFuZCBpcyBgZGVwcmVjYXRlZCBpbiBQeXRob24gMy42CisgICA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L3doYXRzbmV3LzMuNi5odG1sI2RlcHJlY2F0ZWQtZmVhdHVyZXM+YF8uCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgdXNlIG9mIGBgdmVudmBgIGlzIG5vdyByZWNvbW1lbmRlZCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMuCisKKy4uIHNlZWFsc286OgorCisgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBDcmVhdGluZyBhbmQgdXNpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI2NyZWF0aW5nLXZpcnR1YWwtZW52aXJvbm1lbnRzPmBfXworCiAKIEJhc2ljIHVzYWdlCiA9PT09PT09PT09PQpAQCAtMTAwLDEzICsxMTMsMTQgQEAKIE1vcmUgaW5mb3JtYXRpb24gYW5kIHJlc291cmNlcyByZWdhcmRpbmcgYGBwaXBgYCBhbmQgaXRzIGNhcGFiaWxpdGllcyBjYW4gYmUKIGZvdW5kIGluIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnPmBfXy4KIAotYGBweXZlbnZgYCBoYXMgaXRzIG93biBkb2N1bWVudGF0aW9uIGF0IDpyZWY6YHNjcmlwdHMtcHl2ZW52YC4gSW5zdGFsbGluZwotaW50byBhbiBhY3RpdmUgdmlydHVhbCBlbnZpcm9ubWVudCB1c2VzIHRoZSBjb21tYW5kcyBzaG93biBhYm92ZS4KK0NyZWF0aW9uIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzIGlzIGRvbmUgdGhyb3VnaCB0aGUgOm1vZDpgdmVudmAgbW9kdWxlLgorSW5zdGFsbGluZyBwYWNrYWdlcyBpbnRvIGFuIGFjdGl2ZSB2aXJ0dWFsIGVudmlyb25tZW50IHVzZXMgdGhlIGNvbW1hbmRzIHNob3duCithYm92ZS4KIAogLi4gc2VlYWxzbzo6CiAKICAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBJbnN0YWxsaW5nIFB5dGhvbiBEaXN0cmlidXRpb24gUGFja2FnZXMKLSAgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvaW5zdGFsbGluZy8+YF9fCisgICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8+YF9fCiAKIAogSG93IGRvIEkgLi4uPwpAQCAtMTI0LDcgKzEzOCw3IEBACiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogUmVxdWlyZW1lbnRzIGZvciBJbnN0YWxsaW5nIFBhY2thZ2VzCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvaW5zdGFsbGluZy8jcmVxdWlyZW1lbnRzLWZvci1pbnN0YWxsaW5nLXBhY2thZ2VzPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8jcmVxdWlyZW1lbnRzLWZvci1pbnN0YWxsaW5nLXBhY2thZ2VzPmBfXwogCiAKIC4uIGluc3RhbGxpbmctcGVyLXVzZXItaW5zdGFsbGF0aW9uOgpAQCAtMTQyLDIwICsxNTYsMTkgQEAKIEEgbnVtYmVyIG9mIHNjaWVudGlmaWMgUHl0aG9uIHBhY2thZ2VzIGhhdmUgY29tcGxleCBiaW5hcnkgZGVwZW5kZW5jaWVzLCBhbmQKIGFyZW4ndCBjdXJyZW50bHkgZWFzeSB0byBpbnN0YWxsIHVzaW5nIGBgcGlwYGAgZGlyZWN0bHkuIEF0IHRoaXMgcG9pbnQgaW4KIHRpbWUsIGl0IHdpbGwgb2Z0ZW4gYmUgZWFzaWVyIGZvciB1c2VycyB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzIGJ5Ci1gb3RoZXIgbWVhbnMKLTxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KK2BvdGhlciBtZWFucyA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KIHJhdGhlciB0aGFuIGF0dGVtcHRpbmcgdG8gaW5zdGFsbCB0aGVtIHdpdGggYGBwaXBgYC4KIAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEluc3RhbGxpbmcgU2NpZW50aWZpYyBQYWNrYWdlcwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NjaWVuY2UvPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCiAKIAogLi4uIHdvcmsgd2l0aCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gaW5zdGFsbGVkIGluIHBhcmFsbGVsPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PbiBMaW51eCwgTWFjIE9TIFggYW5kIG90aGVyIFBPU0lYIHN5c3RlbXMsIHVzZSB0aGUgdmVyc2lvbmVkIFB5dGhvbiBjb21tYW5kcworT24gTGludXgsIE1hYyBPUyBYLCBhbmQgb3RoZXIgUE9TSVggc3lzdGVtcywgdXNlIHRoZSB2ZXJzaW9uZWQgUHl0aG9uIGNvbW1hbmRzCiBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgYC1tYGAgc3dpdGNoIHRvIHJ1biB0aGUgYXBwcm9wcmlhdGUgY29weSBvZgogYGBwaXBgYDo6CiAKQEAgLTE2NCw3ICsxNzcsNyBAQAogICAgcHl0aG9uMyAgIC1tIHBpcCBpbnN0YWxsIFNvbWVQYWNrYWdlICAjIGRlZmF1bHQgUHl0aG9uIDMKICAgIHB5dGhvbjMuNCAtbSBwaXAgaW5zdGFsbCBTb21lUGFja2FnZSAgIyBzcGVjaWZpY2FsbHkgUHl0aG9uIDMuNAogCi0oYXBwcm9wcmlhdGVseSB2ZXJzaW9uZWQgYGBwaXBgYCBjb21tYW5kcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUpCitBcHByb3ByaWF0ZWx5IHZlcnNpb25lZCBgYHBpcGBgIGNvbW1hbmRzIG1heSBhbHNvIGJlIGF2YWlsYWJsZS4KIAogT24gV2luZG93cywgdXNlIHRoZSBgYHB5YGAgUHl0aG9uIGxhdW5jaGVyIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGBgLW1gYAogc3dpdGNoOjoKQEAgLTIxMiwxMSArMjI1LDExIEBACiB0aGFuIG5lZWRpbmcgdG8gYnVpbGQgdGhlbSB0aGVtc2VsdmVzLgogCiBTb21lIG9mIHRoZSBzb2x1dGlvbnMgZm9yIGluc3RhbGxpbmcgYHNjaWVudGlmaWMgc29mdHdhcmUKLTxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KLXRoYXQgaXMgbm90IHlldCBhdmFpbGFibGUgYXMgcHJlLWJ1aWx0IGBgd2hlZWxgYCBmaWxlcyBtYXkgYWxzbyBoZWxwIHdpdGgKKzxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwordGhhdCBhcmUgbm90IHlldCBhdmFpbGFibGUgYXMgcHJlLWJ1aWx0IGBgd2hlZWxgYCBmaWxlcyBtYXkgYWxzbyBoZWxwIHdpdGgKIG9idGFpbmluZyBvdGhlciBiaW5hcnkgZXh0ZW5zaW9ucyB3aXRob3V0IG5lZWRpbmcgdG8gYnVpbGQgdGhlbSBsb2NhbGx5LgogCiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQmluYXJ5IEV4dGVuc2lvbnMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9leHRlbnNpb25zLz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2V4dGVuc2lvbnMvPmBfXwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CmluZGV4IGFlNzJkMjYuLmUwMjM2MGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKQEAgLTU4LDEzICs1OCwxMyBAQAogICAgICAgVGhlIGFzeW5jaHJvbm91cyBvdXRwdXQgYnVmZmVyIHNpemUgKGRlZmF1bHQgYGA0MDk2YGApLgogCiAgICBVbmxpa2UgOmNsYXNzOmBhc3luY29yZS5kaXNwYXRjaGVyYCwgOmNsYXNzOmBhc3luY19jaGF0YCBhbGxvd3MgeW91IHRvCi0gICBkZWZpbmUgYSBmaXJzdC1pbi1maXJzdC1vdXQgcXVldWUgKGZpZm8pIG9mICpwcm9kdWNlcnMqLiBBIHByb2R1Y2VyIG5lZWQKKyAgIGRlZmluZSBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUgb2YgKnByb2R1Y2VycyouIEEgcHJvZHVjZXIgbmVlZAogICAgaGF2ZSBvbmx5IG9uZSBtZXRob2QsIDptZXRoOmBtb3JlYCwgd2hpY2ggc2hvdWxkIHJldHVybiBkYXRhIHRvIGJlCiAgICB0cmFuc21pdHRlZCBvbiB0aGUgY2hhbm5lbC4KICAgIFRoZSBwcm9kdWNlciBpbmRpY2F0ZXMgZXhoYXVzdGlvbiAoKmkuZS4qIHRoYXQgaXQgY29udGFpbnMgbm8gbW9yZSBkYXRhKSBieQogICAgaGF2aW5nIGl0cyA6bWV0aDpgbW9yZWAgbWV0aG9kIHJldHVybiB0aGUgZW1wdHkgYnl0ZXMgb2JqZWN0LiBBdCB0aGlzIHBvaW50Ci0gICB0aGUgOmNsYXNzOmBhc3luY19jaGF0YCBvYmplY3QgcmVtb3ZlcyB0aGUgcHJvZHVjZXIgZnJvbSB0aGUgZmlmbyBhbmQgc3RhcnRzCi0gICB1c2luZyB0aGUgbmV4dCBwcm9kdWNlciwgaWYgYW55LiBXaGVuIHRoZSBwcm9kdWNlciBmaWZvIGlzIGVtcHR5IHRoZQorICAgdGhlIDpjbGFzczpgYXN5bmNfY2hhdGAgb2JqZWN0IHJlbW92ZXMgdGhlIHByb2R1Y2VyIGZyb20gdGhlIHF1ZXVlIGFuZCBzdGFydHMKKyAgIHVzaW5nIHRoZSBuZXh0IHByb2R1Y2VyLCBpZiBhbnkuIFdoZW4gdGhlIHByb2R1Y2VyIHF1ZXVlIGlzIGVtcHR5IHRoZQogICAgOm1ldGg6YGhhbmRsZV93cml0ZWAgbWV0aG9kIGRvZXMgbm90aGluZy4gWW91IHVzZSB0aGUgY2hhbm5lbCBvYmplY3QncwogICAgOm1ldGg6YHNldF90ZXJtaW5hdG9yYCBtZXRob2QgdG8gZGVzY3JpYmUgaG93IHRvIHJlY29nbml6ZSB0aGUgZW5kIG9mLCBvcgogICAgYW4gaW1wb3J0YW50IGJyZWFrcG9pbnQgaW4sIGFuIGluY29taW5nIHRyYW5zbWlzc2lvbiBmcm9tIHRoZSByZW1vdGUKQEAgLTc4LDggKzc4LDggQEAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5jbG9zZV93aGVuX2RvbmUoKQogCi0gICBQdXNoZXMgYSBgYE5vbmVgYCBvbiB0byB0aGUgcHJvZHVjZXIgZmlmby4gV2hlbiB0aGlzIHByb2R1Y2VyIGlzIHBvcHBlZCBvZmYKLSAgIHRoZSBmaWZvIGl0IGNhdXNlcyB0aGUgY2hhbm5lbCB0byBiZSBjbG9zZWQuCisgICBQdXNoZXMgYSBgYE5vbmVgYCBvbiB0byB0aGUgcHJvZHVjZXIgcXVldWUuIFdoZW4gdGhpcyBwcm9kdWNlciBpcyBwb3BwZWQgb2ZmCisgICB0aGUgcXVldWUgaXQgY2F1c2VzIHRoZSBjaGFubmVsIHRvIGJlIGNsb3NlZC4KIAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmNvbGxlY3RfaW5jb21pbmdfZGF0YShkYXRhKQpAQCAtOTIsNyArOTIsNyBAQAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5kaXNjYXJkX2J1ZmZlcnMoKQogCiAgICBJbiBlbWVyZ2VuY2llcyB0aGlzIG1ldGhvZCB3aWxsIGRpc2NhcmQgYW55IGRhdGEgaGVsZCBpbiB0aGUgaW5wdXQgYW5kL29yCi0gICBvdXRwdXQgYnVmZmVycyBhbmQgdGhlIHByb2R1Y2VyIGZpZm8uCisgICBvdXRwdXQgYnVmZmVycyBhbmQgdGhlIHByb2R1Y2VyIHF1ZXVlLgogCiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuZm91bmRfdGVybWluYXRvcigpCkBAIC0xMTAsNyArMTEwLDcgQEAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5wdXNoKGRhdGEpCiAKLSAgIFB1c2hlcyBkYXRhIG9uIHRvIHRoZSBjaGFubmVsJ3MgZmlmbyB0byBlbnN1cmUgaXRzIHRyYW5zbWlzc2lvbi4KKyAgIFB1c2hlcyBkYXRhIG9uIHRvIHRoZSBjaGFubmVsJ3MgcXVldWUgdG8gZW5zdXJlIGl0cyB0cmFuc21pc3Npb24uCiAgICBUaGlzIGlzIGFsbCB5b3UgbmVlZCB0byBkbyB0byBoYXZlIHRoZSBjaGFubmVsIHdyaXRlIHRoZSBkYXRhIG91dCB0byB0aGUKICAgIG5ldHdvcmssIGFsdGhvdWdoIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSB5b3VyIG93biBwcm9kdWNlcnMgaW4gbW9yZSBjb21wbGV4CiAgICBzY2hlbWVzIHRvIGltcGxlbWVudCBlbmNyeXB0aW9uIGFuZCBjaHVua2luZywgZm9yIGV4YW1wbGUuCkBAIC0xMTgsNyArMTE4LDcgQEAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5wdXNoX3dpdGhfcHJvZHVjZXIocHJvZHVjZXIpCiAKLSAgIFRha2VzIGEgcHJvZHVjZXIgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoZSBwcm9kdWNlciBmaWZvIGFzc29jaWF0ZWQgd2l0aAorICAgVGFrZXMgYSBwcm9kdWNlciBvYmplY3QgYW5kIGFkZHMgaXQgdG8gdGhlIHByb2R1Y2VyIHF1ZXVlIGFzc29jaWF0ZWQgd2l0aAogICAgdGhlIGNoYW5uZWwuICBXaGVuIGFsbCBjdXJyZW50bHktcHVzaGVkIHByb2R1Y2VycyBoYXZlIGJlZW4gZXhoYXVzdGVkIHRoZQogICAgY2hhbm5lbCB3aWxsIGNvbnN1bWUgdGhpcyBwcm9kdWNlcidzIGRhdGEgYnkgY2FsbGluZyBpdHMgOm1ldGg6YG1vcmVgCiAgICBtZXRob2QgYW5kIHNlbmQgdGhlIGRhdGEgdG8gdGhlIHJlbW90ZSBlbmRwb2ludC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdAppbmRleCBiYTUyZDliLi5lZDFkNzczIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CkBAIC0xMTAsOCArMTEwLDkgQEAKICAgIGNhbGxlZCBhZnRlciA6bWV0aDpgY2FsbF9zb29uYCByZXR1cm5zLCB3aGVuIGNvbnRyb2wgcmV0dXJucyB0byB0aGUgZXZlbnQKICAgIGxvb3AuCiAKLSAgIFRoaXMgb3BlcmF0ZXMgYXMgYSBGSUZPIHF1ZXVlLCBjYWxsYmFja3MgYXJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgaW4KLSAgIHdoaWNoIHRoZXkgYXJlIHJlZ2lzdGVyZWQuICBFYWNoIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGV4YWN0bHkgb25jZS4KKyAgIFRoaXMgb3BlcmF0ZXMgYXMgYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLCBjYWxsYmFja3MKKyAgIGFyZSBjYWxsZWQgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgYXJlIHJlZ2lzdGVyZWQuICBFYWNoIGNhbGxiYWNrCisgICB3aWxsIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCiAKICAgIEFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhZnRlciB0aGUgY2FsbGJhY2sgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCiAgICBjYWxsYmFjayB3aGVuIGl0IGlzIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAppbmRleCA4NzhkOGRiLi40ZjVmMGYyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CkBAIC01MywxMyArNTMsMTQgQEAKICAgIHRoYW4gb25lIGxpbmUgbWF5IGJlIHBhc3NlZCBhdCBhIHRpbWUuCiAKIAotLi4gZnVuY3Rpb246OiBiMmFfYmFzZTY0KGRhdGEpCisuLiBmdW5jdGlvbjo6IGIyYV9iYXNlNjQoZGF0YSwgXCosIG5ld2xpbmU9VHJ1ZSkKIAogICAgQ29udmVydCBiaW5hcnkgZGF0YSB0byBhIGxpbmUgb2YgQVNDSUkgY2hhcmFjdGVycyBpbiBiYXNlNjQgY29kaW5nLiBUaGUgcmV0dXJuCi0gICB2YWx1ZSBpcyB0aGUgY29udmVydGVkIGxpbmUsIGluY2x1ZGluZyBhIG5ld2xpbmUgY2hhci4gIFRoZSBuZXdsaW5lIGlzCi0gICBhZGRlZCBiZWNhdXNlIHRoZSBvcmlnaW5hbCB1c2UgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiB3YXMgdG8gZmVlZCBpdCBhCi0gICBzZXJpZXMgb2YgNTcgYnl0ZSBpbnB1dCBsaW5lcyB0byBnZXQgb3V0cHV0IGxpbmVzIHRoYXQgY29uZm9ybSB0byB0aGUKLSAgIE1JTUUtYmFzZTY0IHN0YW5kYXJkLiAgT3RoZXJ3aXNlIHRoZSBvdXRwdXQgY29uZm9ybXMgdG8gOnJmYzpgMzU0OGAuCisgICB2YWx1ZSBpcyB0aGUgY29udmVydGVkIGxpbmUsIGluY2x1ZGluZyBhIG5ld2xpbmUgY2hhciBpZiAqbmV3bGluZSogaXMKKyAgIHRydWUuICBUaGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24gY29uZm9ybXMgdG8gOnJmYzpgMzU0OGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgKm5ld2xpbmUqIHBhcmFtZXRlci4KIAogCiAuLiBmdW5jdGlvbjo6IGEyYl9xcChkYXRhLCBoZWFkZXI9RmFsc2UpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iejIucnN0IGIvRG9jL2xpYnJhcnkvYnoyLnJzdAppbmRleCA2YzQ5ZDlmLi5kNWY2MjI1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iejIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKQEAgLTYxLDYgKzYxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgYGAneCdgYCAoZXhjbHVzaXZlIGNyZWF0aW9uKSBtb2RlIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSkKIApAQCAtMTI4LDYgKzEzMSw5IEBACiAgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKICAgICAgIGBgTm9uZWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY21hdGgucnN0IGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CmluZGV4IDYyZGRiNmIuLmQ5MzVjNDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKQEAgLTI1Myw2ICsyNTMsNDAgQEAKIAogICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqZSosIGFzIGEgZmxvYXQuCiAKKy4uIGRhdGE6OiB0YXUKKworICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqz4QqLCBhcyBhIGZsb2F0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZgorCisgICBGbG9hdGluZy1wb2ludCBwb3NpdGl2ZSBpbmZpbml0eS4gRXF1aXZhbGVudCB0byBgYGZsb2F0KCdpbmYnKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZmoKKworICAgQ29tcGxleCBudW1iZXIgd2l0aCB6ZXJvIHJlYWwgcGFydCBhbmQgcG9zaXRpdmUgaW5maW5pdHkgaW1hZ2luYXJ5CisgICBwYXJ0LiBFcXVpdmFsZW50IHRvIGBgY29tcGxleCgwLjAsIGZsb2F0KCdpbmYnKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBuYW4KKworICAgQSBmbG9hdGluZy1wb2ludCAibm90IGEgbnVtYmVyIiAoTmFOKSB2YWx1ZS4gIEVxdWl2YWxlbnQgdG8KKyAgIGBgZmxvYXQoJ25hbicpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogbmFuagorCisgICBDb21wbGV4IG51bWJlciB3aXRoIHplcm8gcmVhbCBwYXJ0IGFuZCBOYU4gaW1hZ2luYXJ5IHBhcnQuIEVxdWl2YWxlbnQgdG8KKyAgIGBgY29tcGxleCgwLjAsIGZsb2F0KCduYW4nKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gaW5kZXg6OiBtb2R1bGU6IG1hdGgKIAogTm90ZSB0aGF0IHRoZSBzZWxlY3Rpb24gb2YgZnVuY3Rpb25zIGlzIHNpbWlsYXIsIGJ1dCBub3QgaWRlbnRpY2FsLCB0byB0aGF0IGluCkBAIC0yNzYsNSArMzEwLDMgQEAKICAgIEthaGFuLCBXOiAgQnJhbmNoIGN1dHMgZm9yIGNvbXBsZXggZWxlbWVudGFyeSBmdW5jdGlvbnM7IG9yLCBNdWNoIGFkbyBhYm91dAogICAgbm90aGluZydzIHNpZ24gYml0LiAgSW4gSXNlcmxlcywgQS4sIGFuZCBQb3dlbGwsIE0uIChlZHMuKSwgVGhlIHN0YXRlIG9mIHRoZSBhcnQKICAgIGluIG51bWVyaWNhbCBhbmFseXNpcy4gQ2xhcmVuZG9uIFByZXNzICgxOTg3KSBwcDE2NS0yMTEuCi0KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZS5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdAppbmRleCA0NDNhZjY5Li5lMmM0N2JhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdApAQCAtMzAsMTUgKzMwLDE5IEBACiAgICBgYHN5cy5wczFgYCBhbmQgYGBzeXMucHMyYGAsIGFuZCBpbnB1dCBidWZmZXJpbmcuCiAKIAotLi4gZnVuY3Rpb246OiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcnVuIGEgcmVhZC1ldmFsLXByaW50IGxvb3AuICBUaGlzIGNyZWF0ZXMgYSBuZXcKICAgIGluc3RhbmNlIG9mIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBhbmQgc2V0cyAqcmVhZGZ1bmMqIHRvIGJlIHVzZWQgYXMKICAgIHRoZSA6bWV0aDpgSW50ZXJhY3RpdmVDb25zb2xlLnJhd19pbnB1dGAgbWV0aG9kLCBpZiBwcm92aWRlZC4gIElmICpsb2NhbCogaXMKICAgIHByb3ZpZGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBjb25zdHJ1Y3RvciBmb3IKICAgIHVzZSBhcyB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBsb29wLiAgVGhlIDptZXRoOmBpbnRlcmFjdGAKLSAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBwYXNzZWQgYXMgdGhlIGJhbm5lciB0bwotICAgdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQgYWZ0ZXIgdXNlLgorICAgbWV0aG9kIG9mIHRoZSBpbnN0YW5jZSBpcyB0aGVuIHJ1biB3aXRoICpiYW5uZXIqIGFuZCAqZXhpdG1zZyogcGFzc2VkIGFzIHRoZQorICAgYmFubmVyIGFuZCBleGl0IG1lc3NhZ2UgdG8gdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQKKyAgIGFmdGVyIHVzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpleGl0bXNnKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBjb21waWxlX2NvbW1hbmQoc291cmNlLCBmaWxlbmFtZT0iPGlucHV0PiIsIHN5bWJvbD0ic2luZ2xlIikKQEAgLTEzNiw3ICsxNDAsNyBAQAogaW50ZXJwcmV0ZXIgb2JqZWN0cyBhcyB3ZWxsIGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25zLgogCiAKLS4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSkKKy4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKQogCiAgICBDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBjb25zb2xlLiBUaGUgb3B0aW9uYWwgKmJhbm5lciogYXJndW1lbnQKICAgIHNwZWNpZnkgdGhlIGJhbm5lciB0byBwcmludCBiZWZvcmUgdGhlIGZpcnN0IGludGVyYWN0aW9uOyBieSBkZWZhdWx0IGl0IHByaW50cyBhCkBAIC0xNDQsOSArMTQ4LDE2IEBACiAgICBieSB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgY29uc29sZSBvYmplY3QgaW4gcGFyZW50aGVzZXMgKHNvIGFzIG5vdCB0byBjb25mdXNlCiAgICB0aGlzIHdpdGggdGhlIHJlYWwgaW50ZXJwcmV0ZXIgLS0gc2luY2UgaXQncyBzbyBjbG9zZSEpLgogCisgICBUaGUgb3B0aW9uYWwgKmV4aXRtc2cqIGFyZ3VtZW50IHNwZWNpZmllcyBhbiBleGl0IG1lc3NhZ2UgcHJpbnRlZCB3aGVuIGV4aXRpbmcuCisgICBQYXNzIHRoZSBlbXB0eSBzdHJpbmcgdG8gc3VwcHJlc3MgdGhlIGV4aXQgbWVzc2FnZS4gSWYgKmV4aXRtc2cqIGlzIG5vdCBnaXZlbiBvcgorICAgYGBOb25lYGAsIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUbyBzdXBwcmVzcyBwcmludGluZyBhbnkgYmFubmVyLCBwYXNzIGFuIGVtcHR5IHN0cmluZy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByaW50IGFuIGV4aXQgbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKIAogLi4gbWV0aG9kOjogSW50ZXJhY3RpdmVDb25zb2xlLnB1c2gobGluZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggMDNmMDIyOC4uYWExZDEyMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC0xMjYzLDEwICsxMjYzLDE2IEBACiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBPbmx5IGBgZXJyb3JzPSdzdHJpY3QnYGAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IGlzIHN1cHBvcnRlZC4gICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IG1iY3MgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCBtYmNzICAgICAgICAgICAgICAgfCBhbnNpLCAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IEFOU0kgY29kZXBhZ2UgKENQX0FDUCkgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IG9lbSAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgT0VNIGNvZGVwYWdlIChDUF9PRU1DUCkgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHBhbG1vcyAgICAgICAgICAgICB8ICAgICAgICAgfCBFbmNvZGluZyBvZiBQYWxtT1MgMy41ICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBwdW55Y29kZSAgICAgICAgICAgfCAgICAgICAgIHwgSW1wbGVtZW50cyA6cmZjOmAzNDkyYC4gICB8CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAppbmRleCBhZWI2YTczLi5lNGI3NWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTQxLDEzICs0MSwxNiBAQAogOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKIDpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCiA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBSZXZlcnNpYmxlYCAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fcmV2ZXJzZWRfX2BgCiA6Y2xhc3M6YEdlbmVyYXRvcmAgICAgICAgICA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYCwgYGBfX2l0ZXJfX2BgLCBgYF9fbmV4dF9fYGAKIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIDpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCis6Y2xhc3M6YENvbGxlY3Rpb25gICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKIAotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFJldmVyc2libGVgLCAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCiAKIDpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLApAQCAtNTgsOSArNjEsOSBAQAogOmNsYXNzOmBCeXRlU3RyaW5nYCAgICAgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAogCi06Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBDb2xsZWN0aW9uYCAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKIAogOmNsYXNzOmBNdXRhYmxlU2V0YCAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXRgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgY2xlYXJgYCwgYGBwb3BgYCwgYGByZW1vdmVgYCwgYGBfX2lvcl9fYGAsCkBAIC02OCw5ICs3MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWRkYGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZGlzY2FyZGBgCiAKLTpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKKzpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIAogOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLApAQCAtMTA1LDEyICsxMDgsMjUgQEAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgogICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KIAorLi4gY2xhc3M6OiBDb2xsZWN0aW9uCisKKyAgIEFCQyBmb3Igc2l6ZWQgaXRlcmFibGUgY29udGFpbmVyIGNsYXNzZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IEl0ZXJhdG9yCiAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmB+aXRlcmF0b3IuX19pdGVyX19gIGFuZAogICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kcy4gIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mCiAgICA6dGVybTpgaXRlcmF0b3JgLgogCisuLiBjbGFzczo6IFJldmVyc2libGUKKworICAgQUJDIGZvciBpdGVyYWJsZSBjbGFzc2VzIHRoYXQgYWxzbyBwcm92aWRlIHRoZSA6bWV0aDpgX19yZXZlcnNlZF9fYAorICAgbWV0aG9kLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBHZW5lcmF0b3IKIAogICAgQUJDIGZvciBnZW5lcmF0b3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGUgcHJvdG9jb2wgZGVmaW5lZCBpbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IGQwYWE2MmUuLjlmM2Y1ZGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTc2Myw3ICs3NjMsNyBAQAogc2VsZi1kb2N1bWVudGluZyBjb2RlLiAgVGhleSBjYW4gYmUgdXNlZCB3aGVyZXZlciByZWd1bGFyIHR1cGxlcyBhcmUgdXNlZCwgYW5kCiB0aGV5IGFkZCB0aGUgYWJpbGl0eSB0byBhY2Nlc3MgZmllbGRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBwb3NpdGlvbiBpbmRleC4KIAotLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQorLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSkKIAogICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bwogICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKQEAgLTc5MCwxMiArNzkwLDIxIEBACiAgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKICAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCisgICAgSWYgKm1vZHVsZSogaXMgZGVmaW5lZCwgdGhlIGBgX19tb2R1bGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbmFtZWQgdHVwbGUgaXMKKyAgICBzZXQgdG8gdGhhdCB2YWx1ZS4KKwogICAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQogICAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KKyAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBiZWNhbWUKKyAgICAgICA6cmVmOmBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgIEFkZGVkIHRoZSAqbW9kdWxlKiBwYXJhbWV0ZXIuCiAKIC4uIGRvY3Rlc3Q6OgogICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTg0Niw3ICs4NTUsOSBAQAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCi0gICAgdmFsdWVzOjoKKyAgICB2YWx1ZXM6CisKKyAgICAuLiBkb2N0ZXN0OjoKIAogICAgICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCiAgICAgICAgID4+PiBwLl9hc2RpY3QoKQpAQCAtOTA4LDcgKzkxOSw5IEBACiBmdW5jdGlvbmFsaXR5IHdpdGggYSBzdWJjbGFzcy4gIEhlcmUgaXMgaG93IHRvIGFkZCBhIGNhbGN1bGF0ZWQgZmllbGQgYW5kCiBhIGZpeGVkLXdpZHRoIHByaW50IGZvcm1hdDoKIAotICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisuLiBkb2N0ZXN0OjoKKworICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pKToKICAgICAuLi4gICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgLi4uICAgICBAcHJvcGVydHkKICAgICAuLi4gICAgIGRlZiBoeXBvdChzZWxmKToKQEAgLTk1OSw2ICs5NzIsMTEgQEAKICAgICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKICAgICAgIHN1YmNsYXNzZWQuCiAKKyAgICAqIFNlZSA6bWV0aDpgdHlwZXMuU2ltcGxlTmFtZXNwYWNlYCBmb3IgYSBtdXRhYmxlIG5hbWVzcGFjZSBiYXNlZCBvbiBhbgorICAgICAgdW5kZXJseWluZyBkaWN0aW9uYXJ5IGluc3RlYWQgb2YgYSB0dXBsZS4KKworICAgICogU2VlIDptZXRoOmB0eXBpbmcuTmFtZWRUdXBsZWAgZm9yIGEgd2F5IHRvIGFkZCB0eXBlIGhpbnRzIGZvciBuYW1lZCB0dXBsZXMuCisKIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgb2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTgwLDggKzk5OCw5IEBACiAgICAgLi4gbWV0aG9kOjogcG9waXRlbShsYXN0PVRydWUpCiAKICAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQotICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4KKyAgICAgICAgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCisgICAgICAgIG9yIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgb3JkZXIgaWYgZmFsc2UuCiAKICAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAppbmRleCA1MTFjNTgxLi5jMWFmMDJiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdApAQCAtMTAyLDcgKzEwMiw4IEBACiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCi0gICBmaWxlcyBhbG9uZyB0aGUgd2F5LgorICAgZmlsZXMgYWxvbmcgdGhlIHdheS4gUmV0dXJuIGEgdHJ1ZSB2YWx1ZSBpZiBhbGwgdGhlIGZpbGVzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwKKyAgIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KIAogICAgVGhlICptYXhsZXZlbHMqIHBhcmFtZXRlciBpcyB1c2VkIHRvIGxpbWl0IHRoZSBkZXB0aCBvZiB0aGUgcmVjdXJzaW9uOyBpdAogICAgZGVmYXVsdHMgdG8gYGAxMGBgLgpAQCAtMTUyLDkgKzE1MywxMyBAQAogICAgICAgVGhlICpsZWdhY3kqIHBhcmFtZXRlciBvbmx5IHdyaXRlcyBvdXQgYGAucHljYGAgZmlsZXMsIG5vdCBgYC5weW9gYCBmaWxlcwogICAgICAgbm8gbWF0dGVyIHdoYXQgdGhlIHZhbHVlIG9mICpvcHRpbWl6ZSogaXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAotICAgQ29tcGlsZSB0aGUgZmlsZSB3aXRoIHBhdGggKmZ1bGxuYW1lKi4KKyAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouIFJldHVybiBhIHRydWUgdmFsdWUgaWYgdGhlIGZpbGUKKyAgIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgogCiAgICBJZiAqZGRpciogaXMgZ2l2ZW4sIGl0IGlzIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjb21waWxlZAogICAgZm9yIHVzZSBpbiBjb21waWxhdGlvbiB0aW1lIHRyYWNlYmFja3MsIGFuZCBpcyBhbHNvIGNvbXBpbGVkIGluIHRvIHRoZQpAQCAtMTkwLDggKzE5NSwxMCBAQAogCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1UcnVlLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKLSAgIEJ5dGUtY29tcGlsZSBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGZvdW5kIGFsb25nIGBgc3lzLnBhdGhgYC4gSWYKLSAgICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCisgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIFJldHVybiBhCisgICB0cnVlIHZhbHVlIGlmIGFsbCB0aGUgZmlsZXMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgYSBmYWxzZSB2YWx1ZSBvdGhlcndpc2UuCisKKyAgIElmICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCiAgICBpbiB0aGUgc2VhcmNoLiAgQWxsIG90aGVyIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YGNvbXBpbGVfZGlyYAogICAgZnVuY3Rpb24uICBOb3RlIHRoYXQgdW5saWtlIHRoZSBvdGhlciBjb21waWxlIGZ1bmN0aW9ucywgYGBtYXhsZXZlbHNgYAogICAgZGVmYXVsdHMgdG8gYGAwYGAuCkBAIC0yMTcsNiArMjI0LDkgQEAKICAgIGltcG9ydCByZQogICAgY29tcGlsZWFsbC5jb21waWxlX2RpcignTGliLycsIHJ4PXJlLmNvbXBpbGUocidbL1xcXVsuXXN2bicpLCBmb3JjZT1UcnVlKQogCisgICAjIHBhdGhsaWIuUGF0aCBvYmplY3RzIGNhbiBhbHNvIGJlIHVzZWQuCisgICBpbXBvcnQgcGF0aGxpYgorICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoJ0xpYi8nKSwgZm9yY2U9VHJ1ZSkKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CmluZGV4IGFlMDNmNGIuLmQ4NTU3NmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdApAQCAtMTI0LDcgKzEyNCw3IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9Tm9uZSkKKy4uIGNsYXNzOjogVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJykKIAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCB1c2VzIGEgcG9vbCBvZiBhdCBtb3N0ICptYXhfd29ya2VycyoKICAgIHRocmVhZHMgdG8gZXhlY3V0ZSBjYWxscyBhc3luY2hyb25vdXNseS4KQEAgLTEzNyw2ICsxMzcsMTAgQEAKICAgICAgIHNob3VsZCBiZSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMKICAgICAgIGZvciA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSAqdGhyZWFkX25hbWVfcHJlZml4KiBhcmd1bWVudCB3YXMgYWRkZWQgdG8gYWxsb3cgdXNlcnMgdG8KKyAgICAgIGNvbnRyb2wgdGhlIHRocmVhZGluZy5UaHJlYWQgbmFtZXMgZm9yIHdvcmtlciB0aHJlYWRzIGNyZWF0ZWQgYnkKKyAgICAgIHRoZSBwb29sIGZvciBlYXNpZXIgZGVidWdnaW5nLgogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CmluZGV4IGQ1YTBmMDkuLmYwNzQyY2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdApAQCAtMzMsMTYgKzMzLDIyIEBACiAgICAoZS5nLiA6bWV0aDpgX19pbXVsX19gLCA6bWV0aDpgX19pYW5kX19gLCBldGMuKSBmb3IgdGhlIHNhbWUgcHVycG9zZS4KICAgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLgogCi0uLiBub3RlOjoKKyAgIC4uIG5vdGU6OgogCi0gICBXaGVuIGBgTm90SW1wbGVtZW50ZWRgYCBpcyByZXR1cm5lZCwgdGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlCi0gICByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcKLSAgIG9uIHRoZSBvcGVyYXRvci4gIElmIGFsbCBhdHRlbXB0ZWQgb3BlcmF0aW9ucyByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLCB0aGUKLSAgIGludGVycHJldGVyIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgICAgV2hlbiBhIGJpbmFyeSAob3IgaW4tcGxhY2UpIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYCB0aGUKKyAgICAgIGludGVycHJldGVyIHdpbGwgdHJ5IHRoZSByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlIChvciBzb21lCisgICAgICBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvcikuICBJZiBhbGwgYXR0ZW1wdHMgcmV0dXJuCisgICAgICBgYE5vdEltcGxlbWVudGVkYGAsIHRoZSBpbnRlcnByZXRlciB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKyAgICAgIEluY29ycmVjdGx5IHJldHVybmluZyBgYE5vdEltcGxlbWVudGVkYGAgd2lsbCByZXN1bHQgaW4gYSBtaXNsZWFkaW5nCisgICAgICBlcnJvciBtZXNzYWdlIG9yIHRoZSBgYE5vdEltcGxlbWVudGVkYGAgdmFsdWUgYmVpbmcgcmV0dXJuZWQgdG8gUHl0aG9uIGNvZGUuCiAKLSAgIFNlZQotICAgOnJlZjpgaW1wbGVtZW50aW5nLXRoZS1hcml0aG1ldGljLW9wZXJhdGlvbnNgCi0gICBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgU2VlIDpyZWY6YGltcGxlbWVudGluZy10aGUtYXJpdGhtZXRpYy1vcGVyYXRpb25zYCBmb3IgZXhhbXBsZXMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBgYE5vdEltcGxlbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4KKyAgICAgIFNlZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogCiAuLiBkYXRhOjogRWxsaXBzaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0IGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKaW5kZXggY2Y4NWZjZC4uZGQzNGM5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKQEAgLTE4LDYgKzE4LDE4IEBACiAKIEZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBwcm92aWRlZDoKIAorLi4gY2xhc3M6OiBBYnN0cmFjdENvbnRleHRNYW5hZ2VyCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudAorICAgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGFuZCA6bWV0aDpgb2JqZWN0Ll9fZXhpdF9fYC4gQSBkZWZhdWx0CisgICBpbXBsZW1lbnRhdGlvbiBmb3IgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGlzIHByb3ZpZGVkIHdoaWNoIHJldHVybnMKKyAgIGBgc2VsZmBgIHdoaWxlIDptZXRoOmBvYmplY3QuX19leGl0X19gIGlzIGFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCBieSBkZWZhdWx0CisgICByZXR1cm5zIGBgTm9uZWBgLiBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisKIC4uIGRlY29yYXRvcjo6IGNvbnRleHRtYW5hZ2VyCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgYSA6dGVybTpgZGVjb3JhdG9yYCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhIGZhY3RvcnkKQEAgLTQ0Nyw5ICs0NTksOSBAQAogYWNxdWlzaXRpb24gYW5kIHJlbGVhc2UgZnVuY3Rpb25zLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHZhbGlkYXRpb24gZnVuY3Rpb24sCiBhbmQgbWFwcyB0aGVtIHRvIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2w6OgogCi0gICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyLCBFeGl0U3RhY2sKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIsIEV4aXRTdGFjawogCi0gICBjbGFzcyBSZXNvdXJjZU1hbmFnZXI6CisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWNxdWlyZV9yZXNvdXJjZSwgcmVsZWFzZV9yZXNvdXJjZSwgY2hlY2tfcmVzb3VyY2Vfb2s9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuYWNxdWlyZV9yZXNvdXJjZSA9IGFjcXVpcmVfcmVzb3VyY2UKQEAgLTU3OCwxMCArNTkwLDEwIEBACiAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCBleGNfdGIpOgotICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KHNlbGYubmFtZSkpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgc2VsZi5uYW1lKQogCiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBib3RoIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CmluZGV4IGEyMWMxZTcuLmRiZDQyNzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKQEAgLTY4LDcgKzY4LDcgQEAKIAogICAgQSBsaXN0IG9mIGF2YWlsYWJsZSBwYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobXMsIGFzCiAgICBgYGNyeXB0Lk1FVEhPRF8qYGAgb2JqZWN0cy4gIFRoaXMgbGlzdCBpcyBzb3J0ZWQgZnJvbSBzdHJvbmdlc3QgdG8KLSAgIHdlYWtlc3QsIGFuZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3QgYGBjcnlwdC5NRVRIT0RfQ1JZUFRgYC4KKyAgIHdlYWtlc3QuCiAKIAogTW9kdWxlIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKaW5kZXggMWVkZGZkYy4uOGViNGI4MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CkBAIC0xNSw0ICsxNSw2IEBACiAuLiB0b2N0cmVlOjoKIAogICAgaGFzaGxpYi5yc3QKKyAgIGhhc2hsaWItYmxha2UyLnJzdAogICAgaG1hYy5yc3QKKyAgIHNlY3JldHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCA3ZmI0ZmM4Li5mOTE2NTcyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTE0OSwxOCArMTQ5LDI1IEBACiAuLiBjbGFzczo6IERpY3RSZWFkZXIoY3N2ZmlsZSwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3Q9J2V4Y2VsJywgKmFyZ3MsICoqa3dkcykKIAotICAgQ3JlYXRlIGFuIG9iamVjdCB3aGljaCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCi0gICBpbmZvcm1hdGlvbiByZWFkIGludG8gYSBkaWN0IHdob3NlIGtleXMgYXJlIGdpdmVuIGJ5IHRoZSBvcHRpb25hbAotICAgKmZpZWxkbmFtZXMqIHBhcmFtZXRlci4gIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOm1vZDpgc2VxdWVuY2UKLSAgIDxjb2xsZWN0aW9ucy5hYmM+YCB3aG9zZSBlbGVtZW50cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZHMgb2YgdGhlCi0gICBpbnB1dCBkYXRhIGluIG9yZGVyLiBUaGVzZSBlbGVtZW50cyBiZWNvbWUgdGhlIGtleXMgb2YgdGhlIHJlc3VsdGluZwotICAgZGljdGlvbmFyeS4gIElmIHRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIG9taXR0ZWQsIHRoZSB2YWx1ZXMgaW4gdGhlCi0gICBmaXJzdCByb3cgb2YgdGhlICpjc3ZmaWxlKiB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpZWxkbmFtZXMuICBJZiB0aGUgcm93IHJlYWQKLSAgIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgYWRkZWQgYXMKLSAgIGEgc2VxdWVuY2Uga2V5ZWQgYnkgdGhlIHZhbHVlIG9mICpyZXN0a2V5Ki4gIElmIHRoZSByb3cgcmVhZCBoYXMgZmV3ZXIKLSAgIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGtleXMgdGFrZSB0aGUgdmFsdWUgb2YKLSAgIHRoZSBvcHRpb25hbCAqcmVzdHZhbCogcGFyYW1ldGVyLiAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKyAgIENyZWF0ZSBhbiBvYmplY3QgdGhhdCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCisgICBpbmZvcm1hdGlvbiBpbiBlYWNoIHJvdyB0byBhbiA6bW9kOmBPcmRlcmVkRGljdCA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3Q+YAorICAgd2hvc2Uga2V5cyBhcmUgZ2l2ZW4gYnkgdGhlIG9wdGlvbmFsICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIuCisKKyAgIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOnRlcm06YHNlcXVlbmNlYC4gIElmICpmaWVsZG5hbWVzKiBpcworICAgb21pdHRlZCwgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgZmllbGRuYW1lcy4gIFJlZ2FyZGxlc3Mgb2YgaG93IHRoZSBmaWVsZG5hbWVzIGFyZSBkZXRlcm1pbmVkLCB0aGUgb3JkZXJlZAorICAgZGljdGlvbmFyeSBwcmVzZXJ2ZXMgdGhlaXIgb3JpZ2luYWwgb3JkZXJpbmcuCisKKyAgIElmIGEgcm93IGhhcyBtb3JlIGZpZWxkcyB0aGFuIGZpZWxkbmFtZXMsIHRoZSByZW1haW5pbmcgZGF0YSBpcyBwdXQgaW4gYQorICAgbGlzdCBhbmQgc3RvcmVkIHdpdGggdGhlIGZpZWxkbmFtZSBzcGVjaWZpZWQgYnkgKnJlc3RrZXkqICh3aGljaCBkZWZhdWx0cworICAgdG8gYGBOb25lYGApLiAgSWYgYSBub24tYmxhbmsgcm93IGhhcyBmZXdlciBmaWVsZHMgdGhhbiBmaWVsZG5hbWVzLCB0aGUKKyAgIG1pc3NpbmcgdmFsdWVzIGFyZSBmaWxsZWQtaW4gd2l0aCBgYE5vbmVgYC4KKworICAgQWxsIG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJldHVybmVkIHJvd3MgYXJlIG5vdyBvZiB0eXBlIDpjbGFzczpgT3JkZXJlZERpY3RgLgogCiAgICBBIHNob3J0IHVzYWdlIGV4YW1wbGU6OgogCkBAIC0xNzAsOSArMTc3LDExIEBACiAgICAgICAgLi4uICAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICAuLi4gICAgICAgICBwcmludChyb3dbJ2ZpcnN0X25hbWUnXSwgcm93WydsYXN0X25hbWUnXSkKICAgICAgICAuLi4KLSAgICAgICBCYWtlZCBCZWFucwotICAgICAgIExvdmVseSBTcGFtCi0gICAgICAgV29uZGVyZnVsIFNwYW0KKyAgICAgICBFcmljIElkbGUKKyAgICAgICBKb2huIENsZWVzZQorCisgICAgICAgPj4+IHByaW50KHJvdykKKyAgICAgICBPcmRlcmVkRGljdChbKCdmaXJzdF9uYW1lJywgJ0pvaG4nKSwgKCdsYXN0X25hbWUnLCAnQ2xlZXNlJyldKQogCiAKIC4uIGNsYXNzOjogRGljdFdyaXRlcihjc3ZmaWxlLCBmaWVsZG5hbWVzLCByZXN0dmFsPScnLCBleHRyYXNhY3Rpb249J3JhaXNlJywgXApAQCAtMTg2LDEwICsxOTUsMTIgQEAKICAgIHdyaXR0ZW4gaWYgdGhlIGRpY3Rpb25hcnkgaXMgbWlzc2luZyBhIGtleSBpbiAqZmllbGRuYW1lcyouICBJZiB0aGUKICAgIGRpY3Rpb25hcnkgcGFzc2VkIHRvIHRoZSA6bWV0aDpgd3JpdGVyb3dgIG1ldGhvZCBjb250YWlucyBhIGtleSBub3QgZm91bmQgaW4KICAgICpmaWVsZG5hbWVzKiwgdGhlIG9wdGlvbmFsICpleHRyYXNhY3Rpb24qIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hhdCBhY3Rpb24gdG8KLSAgIHRha2UuICBJZiBpdCBpcyBzZXQgdG8gYGAncmFpc2UnYGAgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBJZiBpdCBpcwotICAgc2V0IHRvIGBgJ2lnbm9yZSdgYCwgZXh0cmEgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLiAgQW55IG90aGVyCi0gICBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgd3JpdGVyYAotICAgaW5zdGFuY2UuCisgICB0YWtlLgorICAgSWYgaXQgaXMgc2V0IHRvIGBgJ3JhaXNlJ2BgLCB0aGUgZGVmYXVsdCB2YWx1ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAorICAgaXMgcmFpc2VkLgorICAgSWYgaXQgaXMgc2V0IHRvIGBgJ2lnbm9yZSdgYCwgZXh0cmEgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLgorICAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgd3JpdGVyYCBpbnN0YW5jZS4KIAogICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgOmNsYXNzOmBEaWN0UmVhZGVyYCBjbGFzcywgdGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIKICAgIG9mIHRoZSA6Y2xhc3M6YERpY3RXcml0ZXJgIGlzIG5vdCBvcHRpb25hbC4gIFNpbmNlIFB5dGhvbidzIDpjbGFzczpgZGljdGAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CmluZGV4IDk0ODIyYmEuLjMzODFhOWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdApAQCAtMTIzOSw5ICsxMjM5LDEwIEBACiBjb21waWxpbmcvbGlua2luZyBhIHByb2dyYW0sIGFuZCB3aGVuIHRoZSBwcm9ncmFtIGlzIHJ1bi4KIAogVGhlIHB1cnBvc2Ugb2YgdGhlIDpmdW5jOmBmaW5kX2xpYnJhcnlgIGZ1bmN0aW9uIGlzIHRvIGxvY2F0ZSBhIGxpYnJhcnkgaW4gYSB3YXkKLXNpbWlsYXIgdG8gd2hhdCB0aGUgY29tcGlsZXIgZG9lcyAob24gcGxhdGZvcm1zIHdpdGggc2V2ZXJhbCB2ZXJzaW9ucyBvZiBhCi1zaGFyZWQgbGlicmFyeSB0aGUgbW9zdCByZWNlbnQgc2hvdWxkIGJlIGxvYWRlZCksIHdoaWxlIHRoZSBjdHlwZXMgbGlicmFyeQotbG9hZGVycyBhY3QgbGlrZSB3aGVuIGEgcHJvZ3JhbSBpcyBydW4sIGFuZCBjYWxsIHRoZSBydW50aW1lIGxvYWRlciBkaXJlY3RseS4KK3NpbWlsYXIgdG8gd2hhdCB0aGUgY29tcGlsZXIgb3IgcnVudGltZSBsb2FkZXIgZG9lcyAob24gcGxhdGZvcm1zIHdpdGggc2V2ZXJhbAordmVyc2lvbnMgb2YgYSBzaGFyZWQgbGlicmFyeSB0aGUgbW9zdCByZWNlbnQgc2hvdWxkIGJlIGxvYWRlZCksIHdoaWxlIHRoZSBjdHlwZXMKK2xpYnJhcnkgbG9hZGVycyBhY3QgbGlrZSB3aGVuIGEgcHJvZ3JhbSBpcyBydW4sIGFuZCBjYWxsIHRoZSBydW50aW1lIGxvYWRlcgorZGlyZWN0bHkuCiAKIFRoZSA6bW9kOmBjdHlwZXMudXRpbGAgbW9kdWxlIHByb3ZpZGVzIGEgZnVuY3Rpb24gd2hpY2ggY2FuIGhlbHAgdG8gZGV0ZXJtaW5lCiB0aGUgbGlicmFyeSB0byBsb2FkLgpAQCAtMTI1OSw4ICsxMjYwLDE0IEBACiBUaGUgZXhhY3QgZnVuY3Rpb25hbGl0eSBpcyBzeXN0ZW0gZGVwZW5kZW50LgogCiBPbiBMaW51eCwgOmZ1bmM6YGZpbmRfbGlicmFyeWAgdHJpZXMgdG8gcnVuIGV4dGVybmFsIHByb2dyYW1zCi0oYGAvc2Jpbi9sZGNvbmZpZ2BgLCBgYGdjY2BgLCBhbmQgYGBvYmpkdW1wYGApIHRvIGZpbmQgdGhlIGxpYnJhcnkgZmlsZS4gIEl0Ci1yZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgbGlicmFyeSBmaWxlLiAgSGVyZSBhcmUgc29tZSBleGFtcGxlczo6CisoYGAvc2Jpbi9sZGNvbmZpZ2BgLCBgYGdjY2BgLCBgYG9iamR1bXBgYCBhbmQgYGBsZGBgKSB0byBmaW5kIHRoZSBsaWJyYXJ5IGZpbGUuCitJdCByZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgbGlicmFyeSBmaWxlLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgT24gTGludXgsIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBMRF9MSUJSQVJZX1BBVEhgYCBpcyB1c2VkCisgICB3aGVuIHNlYXJjaGluZyBmb3IgbGlicmFyaWVzLCBpZiBhIGxpYnJhcnkgY2Fubm90IGJlIGZvdW5kIGJ5IGFueSBvdGhlciBtZWFucy4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlczo6CiAKICAgID4+PiBmcm9tIGN0eXBlcy51dGlsIGltcG9ydCBmaW5kX2xpYnJhcnkKICAgID4+PiBmaW5kX2xpYnJhcnkoIm0iKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDkyNTRhZTguLmVjYWFkMDYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTUyMiw3ICs1MjIsNyBAQAogCiBJbnN0YW5jZSBtZXRob2RzOgogCi0uLiBtZXRob2Q6OiBkYXRlLnJlcGxhY2UoeWVhciwgbW9udGgsIGRheSkKKy4uIG1ldGhvZDo6IGRhdGUucmVwbGFjZSh5ZWFyPXNlbGYueWVhciwgbW9udGg9c2VsZi5tb250aCwgZGF5PXNlbGYuZGF5KQogCiAgICBSZXR1cm4gYSBkYXRlIHdpdGggdGhlIHNhbWUgdmFsdWUsIGV4Y2VwdCBmb3IgdGhvc2UgcGFyYW1ldGVycyBnaXZlbiBuZXcKICAgIHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIEZvciBleGFtcGxlLCBpZiBgYGQgPT0KQEAgLTYxMCw3ICs2MTAsOCBAQAogLi4gbWV0aG9kOjogZGF0ZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLmRhdGUuc3RyZnRpbWVgLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQKLSAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRlYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuIEZvciBhCisgICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTY4MiwyMiArNjgzLDI2IEBACiAKIENvbnN0cnVjdG9yOgogCi0uLiBjbGFzczo6IGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSkKKy4uIGNsYXNzOjogZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApCiAKICAgIFRoZSB5ZWFyLCBtb250aCBhbmQgZGF5IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQuICAqdHppbmZvKiBtYXkgYmUgYGBOb25lYGAsIG9yIGFuCiAgICBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcy4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRlZ2VycywKICAgIGluIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgogCi0gICAqIGBgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVJgYAotICAgKiBgYDEgPD0gbW9udGggPD0gMTJgYAotICAgKiBgYDEgPD0gZGF5IDw9IG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBtb250aCBhbmQgeWVhcmBgCi0gICAqIGBgMCA8PSBob3VyIDwgMjRgYAotICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYAotICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYAotICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAKKyAgICogYGBNSU5ZRUFSIDw9IHllYXIgPD0gTUFYWUVBUmBgLAorICAgKiBgYDEgPD0gbW9udGggPD0gMTJgYCwKKyAgICogYGAxIDw9IGRheSA8PSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGggYW5kIHllYXJgYCwKKyAgICogYGAwIDw9IGhvdXIgPCAyNGBgLAorICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYCwKKyAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAsCisgICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYCwKKyAgICogYGBmb2xkIGluIFswLCAxXWBgLgogCiAgICBJZiBhbiBhcmd1bWVudCBvdXRzaWRlIHRob3NlIHJhbmdlcyBpcyBnaXZlbiwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KKwogT3RoZXIgY29uc3RydWN0b3JzLCBhbGwgY2xhc3MgbWV0aG9kczoKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS50b2RheSgpCkBAIC03NTcsNiArNzYyLDggQEAKICAgICAgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgCiAgICAgICBmYWlsdXJlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YGZyb210aW1lc3RhbXBgIG1heSByZXR1cm4gaW5zdGFuY2VzIHdpdGggOmF0dHI6YC5mb2xkYCBzZXQgdG8gMS4KIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkKIApAQCAtNzkzLDE2ICs4MDAsMjMgQEAKICAgIG1pY3Jvc2Vjb25kIG9mIHRoZSByZXN1bHQgYXJlIGFsbCAwLCBhbmQgOmF0dHI6YC50emluZm9gIGlzIGBgTm9uZWBgLgogCiAKLS4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuY29tYmluZShkYXRlLCB0aW1lKQorLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5jb21iaW5lKGRhdGUsIHRpbWUsIHR6aW5mbz1zZWxmLnR6aW5mbykKIAogICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2hvc2UgZGF0ZSBjb21wb25lbnRzIGFyZSBlcXVhbCB0byB0aGUKLSAgIGdpdmVuIDpjbGFzczpgZGF0ZWAgb2JqZWN0J3MsIGFuZCB3aG9zZSB0aW1lIGNvbXBvbmVudHMgYW5kIDphdHRyOmAudHppbmZvYAotICAgYXR0cmlidXRlcyBhcmUgZXF1YWwgdG8gdGhlIGdpdmVuIDpjbGFzczpgLnRpbWVgIG9iamVjdCdzLiBGb3IgYW55Ci0gICA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0ICpkKiwKLSAgIGBgZCA9PSBkYXRldGltZS5jb21iaW5lKGQuZGF0ZSgpLCBkLnRpbWV0eigpKWBgLiAgSWYgZGF0ZSBpcyBhCisgICBnaXZlbiA6Y2xhc3M6YGRhdGVgIG9iamVjdCdzLCBhbmQgd2hvc2UgdGltZSBjb21wb25lbnRzCisgICBhcmUgZXF1YWwgdG8gdGhlIGdpdmVuIDpjbGFzczpgLnRpbWVgIG9iamVjdCdzLiAgSWYgdGhlICp0emluZm8qCisgICBhcmd1bWVudCBpcyBwcm92aWRlZCwgaXRzIHZhbHVlIGlzIHVzZWQgdG8gc2V0IHRoZSA6YXR0cjpgLnR6aW5mb2AgYXR0cmlidXRlCisgICBvZiB0aGUgcmVzdWx0LCBvdGhlcndpc2UgdGhlIDphdHRyOmB+LnRpbWUudHppbmZvYCBhdHRyaWJ1dGUgb2YgdGhlICp0aW1lKiBhcmd1bWVudAorICAgaXMgdXNlZC4KKworICAgRm9yIGFueSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0ICpkKiwKKyAgIGBgZCA9PSBkYXRldGltZS5jb21iaW5lKGQuZGF0ZSgpLCBkLnRpbWUoKSwgZC50emluZm8pYGAuICBJZiBkYXRlIGlzIGEKICAgIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QsIGl0cyB0aW1lIGNvbXBvbmVudHMgYW5kIDphdHRyOmAudHppbmZvYCBhdHRyaWJ1dGVzCiAgICBhcmUgaWdub3JlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdHppbmZvKiBhcmd1bWVudC4KKwogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLnN0cnB0aW1lKGRhdGVfc3RyaW5nLCBmb3JtYXQpCiAKQEAgLTg3OCw2ICs4OTIsMTYgQEAKICAgIG9yIGBgTm9uZWBgIGlmIG5vbmUgd2FzIHBhc3NlZC4KIAogCisuLiBhdHRyaWJ1dGU6OiBkYXRldGltZS5mb2xkCisKKyAgIEluIGBgWzAsIDFdYGAuICBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YWxsIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLiAgKEEKKyAgIHJlcGVhdGVkIGludGVydmFsIG9jY3VycyB3aGVuIGNsb2NrcyBhcmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBkYXlsaWdodCBzYXZpbmcKKyAgIHRpbWUgb3Igd2hlbiB0aGUgVVRDIG9mZnNldCBmb3IgdGhlIGN1cnJlbnQgem9uZSBpcyBkZWNyZWFzZWQgZm9yIHBvbGl0aWNhbCByZWFzb25zLikKKyAgIFRoZSB2YWx1ZSAwICgxKSByZXByZXNlbnRzIHRoZSBlYXJsaWVyIChsYXRlcikgb2YgdGhlIHR3byBtb21lbnRzIHdpdGggdGhlIHNhbWUgd2FsbAorICAgdGltZSByZXByZXNlbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIFN1cHBvcnRlZCBvcGVyYXRpb25zOgogCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtOTY2LDIzICs5OTAsMzQgQEAKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZSgpCiAKLSAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWNyb3NlY29uZC4KKyAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCBhbmQgZm9sZC4KICAgIDphdHRyOmAudHppbmZvYCBpcyBgYE5vbmVgYC4gIFNlZSBhbHNvIG1ldGhvZCA6bWV0aDpgdGltZXR6YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSBmb2xkIHZhbHVlIGlzIGNvcGllZCB0byB0aGUgcmV0dXJuZWQgOmNsYXNzOmAudGltZWAgb2JqZWN0LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWV0eigpCiAKLSAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgYW5kCisgICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQsIGFuZAogICAgdHppbmZvIGF0dHJpYnV0ZXMuICBTZWUgYWxzbyBtZXRob2QgOm1ldGg6YHRpbWVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIGZvbGQgdmFsdWUgaXMgY29waWVkIHRvIHRoZSByZXR1cm5lZCA6Y2xhc3M6YC50aW1lYCBvYmplY3QuCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLnJlcGxhY2UoW3llYXJbLCBtb250aFssIGRheVssIGhvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dXV1dKQorCisuLiBtZXRob2Q6OiBkYXRldGltZS5yZXBsYWNlKHllYXI9c2VsZi55ZWFyLCBtb250aD1zZWxmLm1vbnRoLCBkYXk9c2VsZi5kYXksIFwKKyAgIGhvdXI9c2VsZi5ob3VyLCBtaW51dGU9c2VsZi5taW51dGUsIHNlY29uZD1zZWxmLnNlY29uZCwgbWljcm9zZWNvbmQ9c2VsZi5taWNyb3NlY29uZCwgXAorICAgdHppbmZvPXNlbGYudHppbmZvLCAqIGZvbGQ9MCkKIAogICAgUmV0dXJuIGEgZGF0ZXRpbWUgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzLCBleGNlcHQgZm9yIHRob3NlIGF0dHJpYnV0ZXMgZ2l2ZW4KICAgIG5ldyB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBOb3RlIHRoYXQKICAgIGBgdHppbmZvPU5vbmVgYCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNyZWF0ZSBhIG5haXZlIGRhdGV0aW1lIGZyb20gYW4gYXdhcmUKICAgIGRhdGV0aW1lIHdpdGggbm8gY29udmVyc2lvbiBvZiBkYXRlIGFuZCB0aW1lIGRhdGEuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLmFzdGltZXpvbmUodHo9Tm9uZSkKIApAQCAtOTkxLDIzICsxMDI2LDIwIEBACiAgICAqc2VsZiosIGJ1dCBpbiAqdHoqJ3MgbG9jYWwgdGltZS4KIAogICAgSWYgcHJvdmlkZWQsICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cwotICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgKnNlbGYqIG11c3QKLSAgIGJlIGF3YXJlIChgYHNlbGYudHppbmZvYGAgbXVzdCBub3QgYmUgYGBOb25lYGAsIGFuZCBgYHNlbGYudXRjb2Zmc2V0KClgYCBtdXN0Ci0gICBub3QgcmV0dXJuIGBgTm9uZWBgKS4KKyAgIDptZXRoOmB1dGNvZmZzZXRgIGFuZCA6bWV0aDpgZHN0YCBtZXRob2RzIG11c3Qgbm90IHJldHVybiBgYE5vbmVgYC4gIElmICpzZWxmKgorICAgaXMgbmFpdmUgKGBgc2VsZi50emluZm8gaXMgTm9uZWBgKSwgaXQgaXMgcHJlc3VtZWQgdG8gcmVwcmVzZW50IHRpbWUgaW4gdGhlCisgICBzeXN0ZW0gdGltZXpvbmUuCiAKICAgIElmIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cyAob3Igd2l0aCBgYHR6PU5vbmVgYCkgdGhlIHN5c3RlbSBsb2NhbAotICAgdGltZXpvbmUgaXMgYXNzdW1lZC4gIFRoZSBgYC50emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAorICAgdGltZXpvbmUgaXMgYXNzdW1lZCBmb3IgdGhlIHRhcmdldCB0aW1lem9uZS4gIFRoZSBgYC50emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAogICAgZGF0ZXRpbWUgaW5zdGFuY2Ugd2lsbCBiZSBzZXQgdG8gYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB0aW1lem9uZWAKICAgIHdpdGggdGhlIHpvbmUgbmFtZSBhbmQgb2Zmc2V0IG9idGFpbmVkIGZyb20gdGhlIE9TLgogCiAgICBJZiBgYHNlbGYudHppbmZvYGAgaXMgKnR6KiwgYGBzZWxmLmFzdGltZXpvbmUodHopYGAgaXMgZXF1YWwgdG8gKnNlbGYqOiAgbm8KICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBvciB0aW1lIGRhdGEgaXMgcGVyZm9ybWVkLiBFbHNlIHRoZSByZXN1bHQgaXMgbG9jYWwKLSAgIHRpbWUgaW4gdGltZSB6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgotICAgYGBhc3R6ID0gZHQuYXN0aW1lem9uZSh0eilgYCwgYGBhc3R6IC0gYXN0ei51dGNvZmZzZXQoKWBgIHdpbGwgdXN1YWxseSBoYXZlCi0gICB0aGUgc2FtZSBkYXRlIGFuZCB0aW1lIGRhdGEgYXMgYGBkdCAtIGR0LnV0Y29mZnNldCgpYGAuIFRoZSBkaXNjdXNzaW9uCi0gICBvZiBjbGFzcyA6Y2xhc3M6YHR6aW5mb2AgZXhwbGFpbnMgdGhlIGNhc2VzIGF0IERheWxpZ2h0IFNhdmluZyBUaW1lIHRyYW5zaXRpb24KLSAgIGJvdW5kYXJpZXMgd2hlcmUgdGhpcyBjYW5ub3QgYmUgYWNoaWV2ZWQgKGFuIGlzc3VlIG9ubHkgaWYgKnR6KiBtb2RlbHMgYm90aAotICAgc3RhbmRhcmQgYW5kIGRheWxpZ2h0IHRpbWUpLgorICAgdGltZSBpbiB0aGUgdGltZXpvbmUgKnR6KiwgcmVwcmVzZW50aW5nIHRoZSBzYW1lIFVUQyB0aW1lIGFzICpzZWxmKjogIGFmdGVyCisgICBgYGFzdHogPSBkdC5hc3RpbWV6b25lKHR6KWBgLCBgYGFzdHogLSBhc3R6LnV0Y29mZnNldCgpYGAgd2lsbCBoYXZlCisgICB0aGUgc2FtZSBkYXRlIGFuZCB0aW1lIGRhdGEgYXMgYGBkdCAtIGR0LnV0Y29mZnNldCgpYGAuCiAKICAgIElmIHlvdSBtZXJlbHkgd2FudCB0byBhdHRhY2ggYSB0aW1lIHpvbmUgb2JqZWN0ICp0eiogdG8gYSBkYXRldGltZSAqZHQqIHdpdGhvdXQKICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBhbmQgdGltZSBkYXRhLCB1c2UgYGBkdC5yZXBsYWNlKHR6aW5mbz10eilgYC4gIElmIHlvdQpAQCAtMTAyOSw2ICsxMDYxLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgKnR6KiBub3cgY2FuIGJlIG9taXR0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgOm1ldGg6YGFzdGltZXpvbmVgIG1ldGhvZCBjYW4gbm93IGJlIGNhbGxlZCBvbiBuYWl2ZSBpbnN0YW5jZXMgdGhhdAorICAgICAgYXJlIHByZXN1bWVkIHRvIHJlcHJlc2VudCBzeXN0ZW0gbG9jYWwgdGltZS4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS51dGNvZmZzZXQoKQogCkBAIC0xMTA1LDYgKzExNDEsMTAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgOm1ldGg6YHRpbWVzdGFtcGAgbWV0aG9kIHVzZXMgdGhlIDphdHRyOmAuZm9sZGAgYXR0cmlidXRlIHRvCisgICAgICBkaXNhbWJpZ3VhdGUgdGhlIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhlcmUgaXMgbm8gbWV0aG9kIHRvIG9idGFpbiB0aGUgUE9TSVggdGltZXN0YW1wIGRpcmVjdGx5IGZyb20gYQpAQCAtMTEzOCw3ICsxMTc4LDcgQEAKICAgIGBgc2VsZi5kYXRlKCkuaXNvY2FsZW5kYXIoKWBgLgogCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLmlzb2Zvcm1hdChzZXA9J1QnKQorLi4gbWV0aG9kOjogZGF0ZXRpbWUuaXNvZm9ybWF0KHNlcD0nVCcsIHRpbWVzcGVjPSdhdXRvJykKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGF0ZSBhbmQgdGltZSBpbiBJU08gODYwMSBmb3JtYXQsCiAgICBZWVlZLU1NLUREVEhIOk1NOlNTLm1tbW1tbSBvciwgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLApAQCAtMTE1OSw2ICsxMTk5LDM3IEBACiAgICAgICA+Pj4gZGF0ZXRpbWUoMjAwMiwgMTIsIDI1LCB0emluZm89VFooKSkuaXNvZm9ybWF0KCcgJykKICAgICAgICcyMDAyLTEyLTI1IDAwOjAwOjAwLTA2OjM5JwogCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVzcGVjKiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUgKHRoZSBkZWZhdWx0IGlzIGBgJ2F1dG8nYGApLgorICAgSXQgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAtIGBgJ2F1dG8nYGA6IFNhbWUgYXMgYGAnc2Vjb25kcydgYCBpZiA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsCisgICAgIHNhbWUgYXMgYGAnbWljcm9zZWNvbmRzJ2BgIG90aGVyd2lzZS4KKyAgIC0gYGAnaG91cnMnYGA6IEluY2x1ZGUgdGhlIDphdHRyOmBob3VyYCBpbiB0aGUgdHdvLWRpZ2l0IEhIIGZvcm1hdC4KKyAgIC0gYGAnbWludXRlcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAgYW5kIDphdHRyOmBtaW51dGVgIGluIEhIOk1NIGZvcm1hdC4KKyAgIC0gYGAnc2Vjb25kcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAsIDphdHRyOmBtaW51dGVgLCBhbmQgOmF0dHI6YHNlY29uZGAKKyAgICAgaW4gSEg6TU06U1MgZm9ybWF0LgorICAgLSBgYCdtaWxsaXNlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lLCBidXQgdHJ1bmNhdGUgZnJhY3Rpb25hbCBzZWNvbmQKKyAgICAgcGFydCB0byBtaWxsaXNlY29uZHMuIEhIOk1NOlNTLnNzcyBmb3JtYXQuCisgICAtIGBgJ21pY3Jvc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUgaW4gSEg6TU06U1MubW1tbW1tIGZvcm1hdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEV4Y2x1ZGVkIHRpbWUgY29tcG9uZW50cyBhcmUgdHJ1bmNhdGVkLCBub3Qgcm91bmRlZC4KKworICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgb24gYW4gaW52YWxpZCAqdGltZXNwZWMqIGFyZ3VtZW50LgorCisKKyAgICAgID4+PiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorICAgICAgPj4+IGRhdGV0aW1lLm5vdygpLmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpCisgICAgICAnMjAwMi0xMi0yNVQwMDowMCcKKyAgICAgID4+PiBkdCA9IGRhdGV0aW1lKDIwMTUsIDEsIDEsIDEyLCAzMCwgNTksIDApCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKQorICAgICAgJzIwMTUtMDEtMDFUMTI6MzA6NTkuMDAwMDAwJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdGltZXNwZWMqIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLl9fc3RyX18oKQogCkBAIC0xMTg1LDcgKzEyNTYsOCBAQAogLi4gbWV0aG9kOjogZGF0ZXRpbWUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC5kYXRldGltZS5zdHJmdGltZWAuICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQKLSAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKKyAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC0xMzAyLDE2ICsxMzc0LDE3IEBACiBBIHRpbWUgb2JqZWN0IHJlcHJlc2VudHMgYSAobG9jYWwpIHRpbWUgb2YgZGF5LCBpbmRlcGVuZGVudCBvZiBhbnkgcGFydGljdWxhcgogZGF5LCBhbmQgc3ViamVjdCB0byBhZGp1c3RtZW50IHZpYSBhIDpjbGFzczpgdHppbmZvYCBvYmplY3QuCiAKLS4uIGNsYXNzOjogdGltZShob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpCisuLiBjbGFzczo6IHRpbWUoaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApCiAKICAgIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiAgKnR6aW5mbyogbWF5IGJlIGBgTm9uZWBgLCBvciBhbiBpbnN0YW5jZSBvZiBhCiAgICA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50ZWdlcnMsIGluIHRoZQogICAgZm9sbG93aW5nIHJhbmdlczoKIAotICAgKiBgYDAgPD0gaG91ciA8IDI0YGAKLSAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAKLSAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAKLSAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLgorICAgKiBgYDAgPD0gaG91ciA8IDI0YGAsCisgICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgLAorICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYCwKKyAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLAorICAgKiBgYGZvbGQgaW4gWzAsIDFdYGAuCiAKICAgIElmIGFuIGFyZ3VtZW50IG91dHNpZGUgdGhvc2UgcmFuZ2VzIGlzIGdpdmVuLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBBbGwKICAgIGRlZmF1bHQgdG8gYGAwYGAgZXhjZXB0ICp0emluZm8qLCB3aGljaCBkZWZhdWx0cyB0byA6Y29uc3Q6YE5vbmVgLgpAQCAtMTM2NCw2ICsxNDM3LDE3IEBACiAgICBgYE5vbmVgYCBpZiBub25lIHdhcyBwYXNzZWQuCiAKIAorLi4gYXR0cmlidXRlOjogdGltZS5mb2xkCisKKyAgIEluIGBgWzAsIDFdYGAuICBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YWxsIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLiAgKEEKKyAgIHJlcGVhdGVkIGludGVydmFsIG9jY3VycyB3aGVuIGNsb2NrcyBhcmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBkYXlsaWdodCBzYXZpbmcKKyAgIHRpbWUgb3Igd2hlbiB0aGUgVVRDIG9mZnNldCBmb3IgdGhlIGN1cnJlbnQgem9uZSBpcyBkZWNyZWFzZWQgZm9yIHBvbGl0aWNhbCByZWFzb25zLikKKyAgIFRoZSB2YWx1ZSAwICgxKSByZXByZXNlbnRzIHRoZSBlYXJsaWVyIChsYXRlcikgb2YgdGhlIHR3byBtb21lbnRzIHdpdGggdGhlIHNhbWUgd2FsbAorICAgdGltZSByZXByZXNlbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogU3VwcG9ydGVkIG9wZXJhdGlvbnM6CiAKICogY29tcGFyaXNvbiBvZiA6Y2xhc3M6YC50aW1lYCB0byA6Y2xhc3M6YC50aW1lYCwgd2hlcmUgKmEqIGlzIGNvbnNpZGVyZWQgbGVzcwpAQCAtMTM5OSwyMSArMTQ4Myw1OCBAQAogCiBJbnN0YW5jZSBtZXRob2RzOgogCi0uLiBtZXRob2Q6OiB0aW1lLnJlcGxhY2UoW2hvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dKQorLi4gbWV0aG9kOjogdGltZS5yZXBsYWNlKGhvdXI9c2VsZi5ob3VyLCBtaW51dGU9c2VsZi5taW51dGUsIHNlY29uZD1zZWxmLnNlY29uZCwgXAorICAgbWljcm9zZWNvbmQ9c2VsZi5taWNyb3NlY29uZCwgdHppbmZvPXNlbGYudHppbmZvLCAqIGZvbGQ9MCkKIAogICAgUmV0dXJuIGEgOmNsYXNzOmAudGltZWAgd2l0aCB0aGUgc2FtZSB2YWx1ZSwgZXhjZXB0IGZvciB0aG9zZSBhdHRyaWJ1dGVzIGdpdmVuCiAgICBuZXcgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgTm90ZSB0aGF0CiAgICBgYHR6aW5mbz1Ob25lYGAgY2FuIGJlIHNwZWNpZmllZCB0byBjcmVhdGUgYSBuYWl2ZSA6Y2xhc3M6YC50aW1lYCBmcm9tIGFuCiAgICBhd2FyZSA6Y2xhc3M6YC50aW1lYCwgd2l0aG91dCBjb252ZXJzaW9uIG9mIHRoZSB0aW1lIGRhdGEuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgogCi0uLiBtZXRob2Q6OiB0aW1lLmlzb2Zvcm1hdCgpCisKKy4uIG1ldGhvZDo6IHRpbWUuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJykKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGltZSBpbiBJU08gODYwMSBmb3JtYXQsIEhIOk1NOlNTLm1tbW1tbSBvciwgaWYKLSAgIHNlbGYubWljcm9zZWNvbmQgaXMgMCwgSEg6TU06U1MgSWYgOm1ldGg6YHV0Y29mZnNldGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCBhCisgICA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsIEhIOk1NOlNTIElmIDptZXRoOmB1dGNvZmZzZXRgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgYQogICAgNi1jaGFyYWN0ZXIgc3RyaW5nIGlzIGFwcGVuZGVkLCBnaXZpbmcgdGhlIFVUQyBvZmZzZXQgaW4gKHNpZ25lZCkgaG91cnMgYW5kCiAgICBtaW51dGVzOiBISDpNTTpTUy5tbW1tbW0rSEg6TU0gb3IsIGlmIHNlbGYubWljcm9zZWNvbmQgaXMgMCwgSEg6TU06U1MrSEg6TU0KIAorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICp0aW1lc3BlYyogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlICh0aGUgZGVmYXVsdCBpcyBgYCdhdXRvJ2BgKS4KKyAgIEl0IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgLSBgYCdhdXRvJ2BgOiBTYW1lIGFzIGBgJ3NlY29uZHMnYGAgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLAorICAgICBzYW1lIGFzIGBgJ21pY3Jvc2Vjb25kcydgYCBvdGhlcndpc2UuCisgICAtIGBgJ2hvdXJzJ2BgOiBJbmNsdWRlIHRoZSA6YXR0cjpgaG91cmAgaW4gdGhlIHR3by1kaWdpdCBISCBmb3JtYXQuCisgICAtIGBgJ21pbnV0ZXMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgIGFuZCA6YXR0cjpgbWludXRlYCBpbiBISDpNTSBmb3JtYXQuCisgICAtIGBgJ3NlY29uZHMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgLCA6YXR0cjpgbWludXRlYCwgYW5kIDphdHRyOmBzZWNvbmRgCisgICAgIGluIEhIOk1NOlNTIGZvcm1hdC4KKyAgIC0gYGAnbWlsbGlzZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSwgYnV0IHRydW5jYXRlIGZyYWN0aW9uYWwgc2Vjb25kCisgICAgIHBhcnQgdG8gbWlsbGlzZWNvbmRzLiBISDpNTTpTUy5zc3MgZm9ybWF0LgorICAgLSBgYCdtaWNyb3NlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lIGluIEhIOk1NOlNTLm1tbW1tbSBmb3JtYXQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBFeGNsdWRlZCB0aW1lIGNvbXBvbmVudHMgYXJlIHRydW5jYXRlZCwgbm90IHJvdW5kZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIG9uIGFuIGludmFsaWQgKnRpbWVzcGVjKiBhcmd1bWVudC4KKworCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZQorICAgICAgPj4+IHRpbWUoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTEyMzQ1NikuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJykKKyAgICAgICcxMjozNCcKKyAgICAgID4+PiBkdCA9IHRpbWUoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTApCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKQorICAgICAgJzEyOjM0OjU2LjAwMDAwMCcKKyAgICAgID4+PiBkdC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKQorICAgICAgJzEyOjM0OjU2JworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdGltZXNwZWMqIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IHRpbWUuX19zdHJfXygpCiAKQEAgLTE0MzAsNyArMTU1MSw4IEBACiAuLiBtZXRob2Q6OiB0aW1lLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAudGltZS5zdHJmdGltZWAuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIGZvcm1hdCBzdHJpbmcKLSAgIGZvciBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCisgICBmb3IgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3QgaW4gOnJlZjpgZm9ybWF0dGVkIHN0cmluZworICAgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIGFuZCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTE2ODAsOSArMTgwMiwxOSBAQAogV2hlbiBEU1Qgc3RhcnRzICh0aGUgInN0YXJ0IiBsaW5lKSwgdGhlIGxvY2FsIHdhbGwgY2xvY2sgbGVhcHMgZnJvbSAxOjU5IHRvCiAzOjAwLiAgQSB3YWxsIHRpbWUgb2YgdGhlIGZvcm0gMjpNTSBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIG9uIHRoYXQgZGF5LCBzbwogYGBhc3RpbWV6b25lKEVhc3Rlcm4pYGAgd29uJ3QgZGVsaXZlciBhIHJlc3VsdCB3aXRoIGBgaG91ciA9PSAyYGAgb24gdGhlIGRheSBEU1QKLWJlZ2lucy4gIEluIG9yZGVyIGZvciA6bWV0aDpgYXN0aW1lem9uZWAgdG8gbWFrZSB0aGlzIGd1YXJhbnRlZSwgdGhlCi06bWV0aDpgdHppbmZvLmRzdGAgbWV0aG9kIG11c3QgY29uc2lkZXIgdGltZXMgaW4gdGhlICJtaXNzaW5nIGhvdXIiICgyOk1NIGZvcgotRWFzdGVybikgdG8gYmUgaW4gZGF5bGlnaHQgdGltZS4KK2JlZ2lucy4gIEZvciBleGFtcGxlLCBhdCB0aGUgU3ByaW5nIGZvcndhcmQgdHJhbnNpdGlvbiBvZiAyMDE2LCB3ZSBnZXQKKworICAgID4+PiB1MCA9IGRhdGV0aW1lKDIwMTYsIDMsIDEzLCA1LCB0emluZm89dGltZXpvbmUudXRjKQorICAgID4+PiBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAuLi4gICAgIHUgPSB1MCArIGkqSE9VUgorICAgIC4uLiAgICAgdCA9IHUuYXN0aW1lem9uZShFYXN0ZXJuKQorICAgIC4uLiAgICAgcHJpbnQodS50aW1lKCksICdVVEMgPScsIHQudGltZSgpLCB0LnR6bmFtZSgpKQorICAgIC4uLgorICAgIDA1OjAwOjAwIFVUQyA9IDAwOjAwOjAwIEVTVAorICAgIDA2OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVTVAorICAgIDA3OjAwOjAwIFVUQyA9IDAzOjAwOjAwIEVEVAorICAgIDA4OjAwOjAwIFVUQyA9IDA0OjAwOjAwIEVEVAorCiAKIFdoZW4gRFNUIGVuZHMgKHRoZSAiZW5kIiBsaW5lKSwgdGhlcmUncyBhIHBvdGVudGlhbGx5IHdvcnNlIHByb2JsZW06IHRoZXJlJ3MgYW4KIGhvdXIgdGhhdCBjYW4ndCBiZSBzcGVsbGVkIHVuYW1iaWd1b3VzbHkgaW4gbG9jYWwgd2FsbCB0aW1lOiB0aGUgbGFzdCBob3VyIG9mCkBAIC0xNjkxLDI4ICsxODIzLDQxIEBACiB0byAxOjAwIChzdGFuZGFyZCB0aW1lKSBhZ2Fpbi4gTG9jYWwgdGltZXMgb2YgdGhlIGZvcm0gMTpNTSBhcmUgYW1iaWd1b3VzLgogOm1ldGg6YGFzdGltZXpvbmVgIG1pbWljcyB0aGUgbG9jYWwgY2xvY2sncyBiZWhhdmlvciBieSBtYXBwaW5nIHR3byBhZGphY2VudCBVVEMKIGhvdXJzIGludG8gdGhlIHNhbWUgbG9jYWwgaG91ciB0aGVuLiAgSW4gdGhlIEVhc3Rlcm4gZXhhbXBsZSwgVVRDIHRpbWVzIG9mIHRoZQotZm9ybSA1Ok1NIGFuZCA2Ok1NIGJvdGggbWFwIHRvIDE6TU0gd2hlbiBjb252ZXJ0ZWQgdG8gRWFzdGVybi4gIEluIG9yZGVyIGZvcgotOm1ldGg6YGFzdGltZXpvbmVgIHRvIG1ha2UgdGhpcyBndWFyYW50ZWUsIHRoZSA6bWV0aDpgdHppbmZvLmRzdGAgbWV0aG9kIG11c3QKLWNvbnNpZGVyIHRpbWVzIGluIHRoZSAicmVwZWF0ZWQgaG91ciIgdG8gYmUgaW4gc3RhbmRhcmQgdGltZS4gIFRoaXMgaXMgZWFzaWx5Ci1hcnJhbmdlZCwgYXMgaW4gdGhlIGV4YW1wbGUsIGJ5IGV4cHJlc3NpbmcgRFNUIHN3aXRjaCB0aW1lcyBpbiB0aGUgdGltZSB6b25lJ3MKLXN0YW5kYXJkIGxvY2FsIHRpbWUuCitmb3JtIDU6TU0gYW5kIDY6TU0gYm90aCBtYXAgdG8gMTpNTSB3aGVuIGNvbnZlcnRlZCB0byBFYXN0ZXJuLCBidXQgZWFybGllciB0aW1lcworaGF2ZSB0aGUgOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgc2V0IHRvIDAgYW5kIHRoZSBsYXRlciB0aW1lcyBoYXZlIGl0IHNldCB0byAxLgorRm9yIGV4YW1wbGUsIGF0IHRoZSBGYWxsIGJhY2sgdHJhbnNpdGlvbiBvZiAyMDE2LCB3ZSBnZXQKIAotQXBwbGljYXRpb25zIHRoYXQgY2FuJ3QgYmVhciBzdWNoIGFtYmlndWl0aWVzIHNob3VsZCBhdm9pZCB1c2luZyBoeWJyaWQKKyAgICA+Pj4gdTAgPSBkYXRldGltZSgyMDE2LCAxMSwgNiwgNCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgLi4uICAgICB1ID0gdTAgKyBpKkhPVVIKKyAgICAuLi4gICAgIHQgPSB1LmFzdGltZXpvbmUoRWFzdGVybikKKyAgICAuLi4gICAgIHByaW50KHUudGltZSgpLCAnVVRDID0nLCB0LnRpbWUoKSwgdC50em5hbWUoKSwgdC5mb2xkKQorICAgIC4uLgorICAgIDA0OjAwOjAwIFVUQyA9IDAwOjAwOjAwIEVEVCAwCisgICAgMDU6MDA6MDAgVVRDID0gMDE6MDA6MDAgRURUIDAKKyAgICAwNjowMDowMCBVVEMgPSAwMTowMDowMCBFU1QgMQorICAgIDA3OjAwOjAwIFVUQyA9IDAyOjAwOjAwIEVTVCAwCisKK05vdGUgdGhhdCB0aGUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2VzIHRoYXQgZGlmZmVyIG9ubHkgYnkgdGhlIHZhbHVlIG9mIHRoZQorOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaW4gY29tcGFyaXNvbnMuCisKK0FwcGxpY2F0aW9ucyB0aGF0IGNhbid0IGJlYXIgd2FsbC10aW1lIGFtYmlndWl0aWVzIHNob3VsZCBleHBsaWNpdGx5IGNoZWNrIHRoZQordmFsdWUgb2YgdGhlIDphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIG9yIGF2b2lkIHVzaW5nIGh5YnJpZAogOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzZXM7IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyB3aGVuIHVzaW5nIDpjbGFzczpgdGltZXpvbmVgLAogb3IgYW55IG90aGVyIGZpeGVkLW9mZnNldCA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MgKHN1Y2ggYXMgYSBjbGFzcyByZXByZXNlbnRpbmcKIG9ubHkgRVNUIChmaXhlZCBvZmZzZXQgLTUgaG91cnMpLCBvciBvbmx5IEVEVCAoZml4ZWQgb2Zmc2V0IC00IGhvdXJzKSkuCiAKIC4uIHNlZWFsc286OgogCi0gICBgcHl0eiA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXR6Lz5gXworICAgYGRhdGV0dWlsLnR6IDxodHRwczovL2RhdGV1dGlsLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS90ei5odG1sPmBfCiAgICAgICBUaGUgc3RhbmRhcmQgbGlicmFyeSBoYXMgOmNsYXNzOmB0aW1lem9uZWAgY2xhc3MgZm9yIGhhbmRsaW5nIGFyYml0cmFyeQogICAgICAgZml4ZWQgb2Zmc2V0cyBmcm9tIFVUQyBhbmQgOmF0dHI6YHRpbWV6b25lLnV0Y2AgYXMgVVRDIHRpbWV6b25lIGluc3RhbmNlLgogCi0gICAgICAqcHl0eiogbGlicmFyeSBicmluZ3MgdGhlICpJQU5BIHRpbWV6b25lIGRhdGFiYXNlKiAoYWxzbyBrbm93biBhcyB0aGUKKyAgICAgICpkYXRldHVpbC50eiogbGlicmFyeSBicmluZ3MgdGhlICpJQU5BIHRpbWV6b25lIGRhdGFiYXNlKiAoYWxzbyBrbm93biBhcyB0aGUKICAgICAgIE9sc29uIGRhdGFiYXNlKSB0byBQeXRob24gYW5kIGl0cyB1c2FnZSBpcyByZWNvbW1lbmRlZC4KIAogICAgYElBTkEgdGltZXpvbmUgZGF0YWJhc2UgPGh0dHBzOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXM+YF8KLSAgICAgIFRoZSBUaW1lIFpvbmUgRGF0YWJhc2UgKG9mdGVuIGNhbGxlZCB0eiBvciB6b25laW5mbykgY29udGFpbnMgY29kZSBhbmQKKyAgICAgIFRoZSBUaW1lIFpvbmUgRGF0YWJhc2UgKG9mdGVuIGNhbGxlZCB0eiwgdHpkYXRhIG9yIHpvbmVpbmZvKSBjb250YWlucyBjb2RlIGFuZAogICAgICAgZGF0YSB0aGF0IHJlcHJlc2VudCB0aGUgaGlzdG9yeSBvZiBsb2NhbCB0aW1lIGZvciBtYW55IHJlcHJlc2VudGF0aXZlCiAgICAgICBsb2NhdGlvbnMgYXJvdW5kIHRoZSBnbG9iZS4gSXQgaXMgdXBkYXRlZCBwZXJpb2RpY2FsbHkgdG8gcmVmbGVjdCBjaGFuZ2VzCiAgICAgICBtYWRlIGJ5IHBvbGl0aWNhbCBib2RpZXMgdG8gdGltZSB6b25lIGJvdW5kYXJpZXMsIFVUQyBvZmZzZXRzLCBhbmQKQEAgLTE3MzIsNyArMTg3Nyw3IEBACiBtYWRlIHRvIGNpdmlsIHRpbWUuCiAKIAotLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXRbLCBuYW1lXSkKKy4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0LCBuYW1lPU5vbmUpCiAKICAgVGhlICpvZmZzZXQqIGFyZ3VtZW50IG11c3QgYmUgc3BlY2lmaWVkIGFzIGEgOmNsYXNzOmB0aW1lZGVsdGFgCiAgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbG9jYWwgdGltZSBhbmQgVVRDLiAgSXQgbXVzdApAQCAtMTc0MSwxMCArMTg4Niw3IEBACiAgIG90aGVyd2lzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKICAgVGhlICpuYW1lKiBhcmd1bWVudCBpcyBvcHRpb25hbC4gIElmIHNwZWNpZmllZCBpdCBtdXN0IGJlIGEgc3RyaW5nIHRoYXQKLSAgaXMgdXNlZCBhcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGBgdHpuYW1lKGR0KWBgIG1ldGhvZC4gIE90aGVyd2lzZSwKLSAgYGB0em5hbWUoZHQpYGAgcmV0dXJucyBhIHN0cmluZyAnVVRDc0hIOk1NJywgd2hlcmUgcyBpcyB0aGUgc2lnbiBvZgotICAqb2Zmc2V0KiwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCi0gIGBgb2Zmc2V0Lm1pbnV0ZXNgYCByZXNwZWN0aXZlbHkuCisgIHdpbGwgYmUgdXNlZCBhcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIDptZXRoOmBkYXRldGltZS50em5hbWVgIG1ldGhvZC4KIAogICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTc1NywxMSArMTg5OSwxOSBAQAogCiAuLiBtZXRob2Q6OiB0aW1lem9uZS50em5hbWUoZHQpCiAKLSAgUmV0dXJuIHRoZSBmaXhlZCB2YWx1ZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmB0aW1lem9uZWAgaW5zdGFuY2UgaXMKLSAgY29uc3RydWN0ZWQgb3IgYSBzdHJpbmcgJ1VUQ3NISDpNTScsIHdoZXJlIHMgaXMgdGhlIHNpZ24gb2YKLSAgKm9mZnNldCosIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAorICBSZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YHRpbWV6b25lYCBpbnN0YW5jZQorICBpcyBjb25zdHJ1Y3RlZC4gIElmICpuYW1lKiBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCB0aGUKKyAgbmFtZSByZXR1cm5lZCBieSBgYHR6bmFtZShkdClgYCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgdmFsdWUgb2YgdGhlCisgIGBgb2Zmc2V0YGAgYXMgZm9sbG93cy4gIElmICpvZmZzZXQqIGlzIGBgdGltZWRlbHRhKDApYGAsIHRoZSBuYW1lCisgIGlzICJVVEMiLCBvdGhlcndpc2UgaXQgaXMgYSBzdHJpbmcgJ1VUQ8KxSEg6TU0nLCB3aGVyZSDCsSBpcyB0aGUgc2lnbgorICBvZiBgYG9mZnNldGBgLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKICAgYGBvZmZzZXQubWludXRlc2BgIHJlc3BlY3RpdmVseS4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICBOYW1lIGdlbmVyYXRlZCBmcm9tIGBgb2Zmc2V0PXRpbWVkZWx0YSgwKWBgIGlzIG5vdyBwbGFpbiAnVVRDJywgbm90CisgICAgICdVVEMrMDA6MDAnLgorCisKIC4uIG1ldGhvZDo6IHRpbWV6b25lLmRzdChkdCkKIAogICBBbHdheXMgcmV0dXJucyBgYE5vbmVgYC4KQEAgLTE5MTEsNiArMjA2MSwzNCBAQAogfCBgYCUlYGAgICAgfCBBIGxpdGVyYWwgYGAnJSdgYCBjaGFyYWN0ZXIuICAgfCAlICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCitTZXZlcmFsIGFkZGl0aW9uYWwgZGlyZWN0aXZlcyBub3QgcmVxdWlyZWQgYnkgdGhlIEM4OSBzdGFuZGFyZCBhcmUgaW5jbHVkZWQgZm9yCitjb252ZW5pZW5jZS4gVGhlc2UgcGFyYW1ldGVycyBhbGwgY29ycmVzcG9uZCB0byBJU08gODYwMSBkYXRlIHZhbHVlcy4gVGhlc2UKK21heSBub3QgYmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgd2hlbiB1c2VkIHdpdGggdGhlIDptZXRoOmBzdHJmdGltZWAKK21ldGhvZC4gVGhlIElTTyA4NjAxIHllYXIgYW5kIElTTyA4NjAxIHdlZWsgZGlyZWN0aXZlcyBhcmUgbm90IGludGVyY2hhbmdlYWJsZQord2l0aCB0aGUgeWVhciBhbmQgd2VlayBudW1iZXIgZGlyZWN0aXZlcyBhYm92ZS4gQ2FsbGluZyA6bWV0aDpgc3RycHRpbWVgIHdpdGgKK2luY29tcGxldGUgb3IgYW1iaWd1b3VzIElTTyA4NjAxIGRpcmVjdGl2ZXMgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IERpcmVjdGl2ZSB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgICAgICAgICAgICAgICAgfCBOb3RlcyB8CisrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJUdgYCAgICB8IElTTyA4NjAxIHllYXIgd2l0aCBjZW50dXJ5ICAgICB8IDAwMDEsIDAwMDIsIC4uLiwgMjAxMywgfCBcKDgpICB8Cit8ICAgICAgICAgICB8IHJlcHJlc2VudGluZyB0aGUgeWVhciB0aGF0ICAgICB8IDIwMTQsIC4uLiwgOTk5OCwgOTk5OSAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IGNvbnRhaW5zIHRoZSBncmVhdGVyIHBhcnQgb2YgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IHRoZSBJU08gd2VlayAoYGAlVmBgKS4gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJXVgYCAgICB8IElTTyA4NjAxIHdlZWtkYXkgYXMgYSBkZWNpbWFsICB8IDEsIDIsIC4uLiwgNyAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IG51bWJlciB3aGVyZSAxIGlzIE1vbmRheS4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJVZgYCAgICB8IElTTyA4NjAxIHdlZWsgYXMgYSBkZWNpbWFsICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgfCBcKDgpICB8Cit8ICAgICAgICAgICB8IG51bWJlciB3aXRoIE1vbmRheSBhcyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IFdlZWsgMDEgaXMgdGhlIHdlZWsgY29udGFpbmluZyB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IEphbiA0LiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgYGAlR2BgLCBgYCV1YGAgYW5kIGBgJVZgYCB3ZXJlIGFkZGVkLgorCiBOb3RlczoKIAogKDEpCkBAIC0xOTc1LDcgKzIxNTMsMTQgQEAKIAogKDcpCiAgICBXaGVuIHVzZWQgd2l0aCB0aGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QsIGBgJVVgYCBhbmQgYGAlV2BgIGFyZSBvbmx5IHVzZWQKLSAgIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCisgICBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgY2FsZW5kYXIgeWVhciAoYGAlWWBgKQorICAgYXJlIHNwZWNpZmllZC4KKworKDgpCisgICBTaW1pbGFyIHRvIGBgJVVgYCBhbmQgYGAlV2BgLCBgYCVWYGAgaXMgb25seSB1c2VkIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZQorICAgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgSVNPIHllYXIgKGBgJUdgYCkgYXJlIHNwZWNpZmllZCBpbiBhCisgICA6bWV0aDpgc3RycHRpbWVgIGZvcm1hdCBzdHJpbmcuIEFsc28gbm90ZSB0aGF0IGBgJUdgYCBhbmQgYGAlWWBgIGFyZSBub3QKKyAgIGludGVyY2hhbmdlYWJsZS4KIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RibS5yc3QgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CmluZGV4IDJhMWRiOTEuLjMyZTgwYjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RibS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGJtLnJzdApAQCAtMzUxLDYgKzM1MSwxMCBAQAogICAgICAgOmZ1bmM6YC5vcGVuYCBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZSBmbGFnIGhhcyB0aGUgdmFsdWUKICAgICAgIGBgJ24nYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIENyZWF0aW5nIGRhdGFiYXNlIGluIGBgJ3InYGAgYW5kIGBgJ3cnYGAgbW9kZXMuICBNb2RpZnlpbmcgZGF0YWJhc2UgaW4KKyAgICAgIGBgJ3InYGAgbW9kZS4KKwogICAgSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgcHJvdmlkZWQgYnkgdGhlCiAgICA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AgY2xhc3MsIDpjbGFzczpgZHVtYmRibWAgb2JqZWN0cwogICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdCBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CmluZGV4IGI1Y2UwYjEuLmU5ODRlZGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CkBAIC0zNDUsNyArMzQ1LDcgQEAKICAgICp2YWx1ZSogY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIDpjbGFzczpgZmxvYXRgLCBvciBhbm90aGVyIDpjbGFzczpgRGVjaW1hbGAKICAgIG9iamVjdC4gSWYgbm8gKnZhbHVlKiBpcyBnaXZlbiwgcmV0dXJucyBgYERlY2ltYWwoJzAnKWBgLiAgSWYgKnZhbHVlKiBpcyBhCiAgICBzdHJpbmcsIGl0IHNob3VsZCBjb25mb3JtIHRvIHRoZSBkZWNpbWFsIG51bWVyaWMgc3RyaW5nIHN5bnRheCBhZnRlciBsZWFkaW5nCi0gICBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSByZW1vdmVkOjoKKyAgIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIGFzIHdlbGwgYXMgdW5kZXJzY29yZXMgdGhyb3VnaG91dCwgYXJlIHJlbW92ZWQ6OgogCiAgICAgICBzaWduICAgICAgICAgICA6Oj0gICcrJyB8ICctJwogICAgICAgZGlnaXQgICAgICAgICAgOjo9ICAnMCcgfCAnMScgfCAnMicgfCAnMycgfCAnNCcgfCAnNScgfCAnNicgfCAnNycgfCAnOCcgfCAnOScKQEAgLTM5NCw2ICszOTQsMTAgQEAKICAgICAgIDpjbGFzczpgZmxvYXRgIGFyZ3VtZW50cyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYAogICAgICAgdHJhcCBpcyBzZXQuIEJ5IGRlZmF1bHQgdGhlIHRyYXAgaXMgb2ZmLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5kZXJzY29yZXMgYXJlIGFsbG93ZWQgZm9yIGdyb3VwaW5nLCBhcyB3aXRoIGludGVncmFsIGFuZCBmbG9hdGluZy1wb2ludAorICAgICAgbGl0ZXJhbHMgaW4gY29kZS4KKwogICAgRGVjaW1hbCBmbG9hdGluZyBwb2ludCBvYmplY3RzIHNoYXJlIG1hbnkgcHJvcGVydGllcyB3aXRoIHRoZSBvdGhlciBidWlsdC1pbgogICAgbnVtZXJpYyB0eXBlcyBzdWNoIGFzIDpjbGFzczpgZmxvYXRgIGFuZCA6Y2xhc3M6YGludGAuICBBbGwgb2YgdGhlIHVzdWFsIG1hdGgKICAgIG9wZXJhdGlvbnMgYW5kIHNwZWNpYWwgbWV0aG9kcyBhcHBseS4gIExpa2V3aXNlLCBkZWNpbWFsIG9iamVjdHMgY2FuIGJlCkBAIC00NDcsNiArNDUxLDE5IEBACiAgICAgICBgYERlY2ltYWwoJzMyMWUrNScpLmFkanVzdGVkKClgYCByZXR1cm5zIHNldmVuLiAgVXNlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlCiAgICAgICBwb3NpdGlvbiBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCB3aXRoIHJlc3BlY3QgdG8gdGhlIGRlY2ltYWwgcG9pbnQuCiAKKyAgIC4uIG1ldGhvZDo6IGFzX2ludGVnZXJfcmF0aW8oKQorCisgICAgICBSZXR1cm4gYSBwYWlyIGBgKG4sIGQpYGAgb2YgaW50ZWdlcnMgdGhhdCByZXByZXNlbnQgdGhlIGdpdmVuCisgICAgICA6Y2xhc3M6YERlY2ltYWxgIGluc3RhbmNlIGFzIGEgZnJhY3Rpb24sIGluIGxvd2VzdCB0ZXJtcyBhbmQKKyAgICAgIHdpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvcjo6CisKKyAgICAgICAgICA+Pj4gRGVjaW1hbCgnLTMuMTQnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAoLTE1NywgNTApCisKKyAgICAgIFRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAgUmFpc2UgT3ZlcmZsb3dFcnJvciBvbiBpbmZpbml0aWVzIGFuZCBWYWx1ZUVycm9yCisgICAgICBvbiBOYU5zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogICAgLi4gbWV0aG9kOjogYXNfdHVwbGUoKQogCkBAIC0xMDYyLDggKzEwNzksOCBAQAogICAgICAgICAgRGVjaW1hbCgnNC40NCcpCiAKICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlIElCTSBzcGVjaWZpY2F0aW9uLgotICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgc3RyaW5nLCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMKLSAgICAgIHBlcm1pdHRlZC4KKyAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBhIHN0cmluZywgbm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIG9yCisgICAgICB1bmRlcnNjb3JlcyBhcmUgcGVybWl0dGVkLgogCiAgICAuLiBtZXRob2Q6OiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KGYpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QgYi9Eb2MvbGlicmFyeS9kaXMucnN0CmluZGV4IGY4NjcyNWIuLmExNTY5MGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzLnJzdApAQCAtMzEsOSArMzEsOSBAQAogCiAgICA+Pj4gZGlzLmRpcyhteWZ1bmMpCiAgICAgIDIgICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKGxlbikKLSAgICAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYWxpc3QpCi0gICAgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKLSAgICAgICAgICAgICAgICAgOSBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgICAgMiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYWxpc3QpCisgICAgICAgICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKIAogKFRoZSAiMiIgaXMgYSBsaW5lIG51bWJlcikuCiAKQEAgLTYwNyw2ICs2MDcsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIG9wY29kZTo6IFNFVFVQX0FOTk9UQVRJT05TCisKKyAgIENoZWNrcyB3aGV0aGVyIGBgX19hbm5vdGF0aW9uc19fYGAgaXMgZGVmaW5lZCBpbiBgYGxvY2FscygpYGAsIGlmIG5vdCBpdCBpcworICAgc2V0IHVwIHRvIGFuIGVtcHR5IGBgZGljdGBgLiBUaGlzIG9wY29kZSBpcyBvbmx5IGVtaXR0ZWQgaWYgYSBjbGFzcworICAgb3IgbW9kdWxlIGJvZHkgY29udGFpbnMgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAKKyAgIHN0YXRpY2FsbHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBvcGNvZGU6OiBJTVBPUlRfU1RBUgogCkBAIC02ODIsOCArNjkwLDcgQEAKICAgIC4uIFhYWCBleHBsYWluIHRoZSBXSFkgc3R1ZmYhCiAKIAotQWxsIG9mIHRoZSBmb2xsb3dpbmcgb3Bjb2RlcyBleHBlY3QgYXJndW1lbnRzLiAgQW4gYXJndW1lbnQgaXMgdHdvIGJ5dGVzLCB3aXRoCi10aGUgbW9yZSBzaWduaWZpY2FudCBieXRlIGxhc3QuCitBbGwgb2YgdGhlIGZvbGxvd2luZyBvcGNvZGVzIHVzZSB0aGVpciBhcmd1bWVudHMuCiAKIC4uIG9wY29kZTo6IFNUT1JFX05BTUUgKG5hbWVpKQogCkBAIC03NjksNiArNzc2LDIzIEBACiAgICB0byBob2xkICpjb3VudCogZW50cmllcy4KIAogCisuLiBvcGNvZGU6OiBCVUlMRF9DT05TVF9LRVlfTUFQIChjb3VudCkKKworICAgVGhlIHZlcnNpb24gb2YgOm9wY29kZTpgQlVJTERfTUFQYCBzcGVjaWFsaXplZCBmb3IgY29uc3RhbnQga2V5cy4gICpjb3VudCoKKyAgIHZhbHVlcyBhcmUgY29uc3VtZWQgZnJvbSB0aGUgc3RhY2suICBUaGUgdG9wIGVsZW1lbnQgb24gdGhlIHN0YWNrIGNvbnRhaW5zCisgICBhIHR1cGxlIG9mIGtleXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIG9wY29kZTo6IEJVSUxEX1NUUklORyAoY291bnQpCisKKyAgIENvbmNhdGVuYXRlcyAqY291bnQqIHN0cmluZ3MgZnJvbSB0aGUgc3RhY2sgYW5kIHB1c2hlcyB0aGUgcmVzdWx0aW5nIHN0cmluZworICAgb250byB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IExPQURfQVRUUiAobmFtZWkpCiAKICAgIFJlcGxhY2VzIFRPUyB3aXRoIGBgZ2V0YXR0cihUT1MsIGNvX25hbWVzW25hbWVpXSlgYC4KQEAgLTg3NCw2ICs4OTgsMTMgQEAKICAgIERlbGV0ZXMgbG9jYWwgYGBjb192YXJuYW1lc1t2YXJfbnVtXWBgLgogCiAKKy4uIG9wY29kZTo6IFNUT1JFX0FOTk9UQVRJT04gKG5hbWVpKQorCisgICBTdG9yZXMgVE9TIGFzIGBgbG9jYWxzKClbJ19fYW5ub3RhdGlvbnNfXyddW2NvX25hbWVzW25hbWVpXV0gPSBUT1NgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogTE9BRF9DTE9TVVJFIChpKQogCiAgICBQdXNoZXMgYSByZWZlcmVuY2UgdG8gdGhlIGNlbGwgY29udGFpbmVkIGluIHNsb3QgKmkqIG9mIHRoZSBjZWxsIGFuZCBmcmVlCkBAIC05MjksMjcgKzk2MCwxNiBAQAogLi4gb3Bjb2RlOjogTUFLRV9GVU5DVElPTiAoYXJnYykKIAogICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBGcm9tIGJvdHRvbSB0byB0b3AsIHRoZSBjb25zdW1lZAotICAgc3RhY2sgbXVzdCBjb25zaXN0IG9mCisgICBzdGFjayBtdXN0IGNvbnNpc3Qgb2YgdmFsdWVzIGlmIHRoZSBhcmd1bWVudCBjYXJyaWVzIGEgc3BlY2lmaWVkIGZsYWcgdmFsdWUKIAotICAgKiBgYGFyZ2MgJiAweEZGYGAgZGVmYXVsdCBhcmd1bWVudCBvYmplY3RzIGluIHBvc2l0aW9uYWwgb3JkZXIKLSAgICogYGAoYXJnYyA+PiA4KSAmIDB4RkZgYCBwYWlycyBvZiBuYW1lIGFuZCBkZWZhdWx0IGFyZ3VtZW50LCB3aXRoIHRoZSBuYW1lCi0gICAgIGp1c3QgYmVsb3cgdGhlIG9iamVjdCBvbiB0aGUgc3RhY2ssIGZvciBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycwotICAgKiBgYChhcmdjID4+IDE2KSAmIDB4N0ZGRmBgIHBhcmFtZXRlciBhbm5vdGF0aW9uIG9iamVjdHMKLSAgICogYSB0dXBsZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZXMgZm9yIHRoZSBhbm5vdGF0aW9ucyAob25seSBpZiB0aGVyZSBhcmUKLSAgICAgb255IGFubm90YXRpb24gb2JqZWN0cykKKyAgICogYGAweDAxYGAgYSB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IG9iamVjdHMgaW4gcG9zaXRpb25hbCBvcmRlcgorICAgKiBgYDB4MDJgYCBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMnIGRlZmF1bHQgdmFsdWVzCisgICAqIGBgMHgwNGBgIGFuIGFubm90YXRpb24gZGljdGlvbmFyeQorICAgKiBgYDB4MDhgYCBhIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yIGZyZWUgdmFyaWFibGVzLCBtYWtpbmcgYSBjbG9zdXJlCiAgICAqIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24gKGF0IFRPUzEpCiAgICAqIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiAoYXQgVE9TKQogCiAKLS4uIG9wY29kZTo6IE1BS0VfQ0xPU1VSRSAoYXJnYykKLQotICAgQ3JlYXRlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3QsIHNldHMgaXRzICpfX2Nsb3N1cmVfXyogc2xvdCwgYW5kIHB1c2hlcyBpdCBvbgotICAgdGhlIHN0YWNrLiAgVE9TIGlzIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiwgVE9TMSBpcyB0aGUKLSAgIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiwgYW5kIFRPUzIgaXMgdGhlIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yCi0gICB0aGUgY2xvc3VyZSdzIGZyZWUgdmFyaWFibGVzLiAgKmFyZ2MqIGlzIGludGVycHJldGVkIGFzIGluIGBgTUFLRV9GVU5DVElPTmBgOwotICAgdGhlIGFubm90YXRpb25zIGFuZCBkZWZhdWx0cyBhcmUgYWxzbyBpbiB0aGUgc2FtZSBvcmRlciBiZWxvdyBUT1MyLgotCi0KIC4uIG9wY29kZTo6IEJVSUxEX1NMSUNFIChhcmdjKQogCiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IHNsaWNlCkBAIC05ODksNiArMTAwOSwyOCBAQAogICAgYXJndW1lbnRzLgogCiAKKy4uIG9wY29kZTo6IEZPUk1BVF9WQUxVRSAoZmxhZ3MpCisKKyAgIFVzZWQgZm9yIGltcGxlbWVudGluZyBmb3JtYXR0ZWQgbGl0ZXJhbCBzdHJpbmdzIChmLXN0cmluZ3MpLiAgUG9wcworICAgYW4gb3B0aW9uYWwgKmZtdF9zcGVjKiBmcm9tIHRoZSBzdGFjaywgdGhlbiBhIHJlcXVpcmVkICp2YWx1ZSouCisgICAqZmxhZ3MqIGlzIGludGVycHJldGVkIGFzIGZvbGxvd3M6CisKKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAwYGA6ICp2YWx1ZSogaXMgZm9ybWF0dGVkIGFzLWlzLgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDFgYDogY2FsbCA6ZnVuYzpgc3RyYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDJgYDogY2FsbCA6ZnVuYzpgcmVwcmAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAzYGA6IGNhbGwgOmZ1bmM6YGFzY2lpYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDQpID09IDB4MDRgYDogcG9wICpmbXRfc3BlYyogZnJvbSB0aGUgc3RhY2sgYW5kIHVzZQorICAgICBpdCwgZWxzZSB1c2UgYW4gZW1wdHkgKmZtdF9zcGVjKi4KKworICAgRm9ybWF0dGluZyBpcyBwZXJmb3JtZWQgdXNpbmcgOmM6ZnVuYzpgUHlPYmplY3RfRm9ybWF0YC4gIFRoZQorICAgcmVzdWx0IGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IEhBVkVfQVJHVU1FTlQKIAogICAgVGhpcyBpcyBub3QgcmVhbGx5IGFuIG9wY29kZS4gIEl0IGlkZW50aWZpZXMgdGhlIGRpdmlkaW5nIGxpbmUgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDkzYjVjLi4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS4uIF9lbWFpbC1leGFtcGxlczoKLQotOm1vZDpgZW1haWxgOiBFeGFtcGxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1IZXJlIGFyZSBhIGZldyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB0byByZWFkLCB3cml0ZSwKLWFuZCBzZW5kIHNpbXBsZSBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBtb3JlIGNvbXBsZXggTUlNRSBtZXNzYWdlcy4KLQotRmlyc3QsIGxldCdzIHNlZSBob3cgdG8gY3JlYXRlIGFuZCBzZW5kIGEgc2ltcGxlIHRleHQgbWVzc2FnZToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKLQotCi1BbmQgcGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHBhcnNlKGZpbGVuYW1lKSBvcgotcGFyc2VzdHIobWVzc2FnZV9hc19zdHJpbmcpIG1ldGhvZHMgb2YgdGhlIFBhcnNlcigpIGNsYXNzOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCBhIE1JTUUgbWVzc2FnZSBjb250YWluaW5nIGEgYnVuY2ggb2YgZmFtaWx5Ci1waWN0dXJlcyB0aGF0IG1heSBiZSByZXNpZGluZyBpbiBhIGRpcmVjdG9yeToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1taW1lLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhbiBlbWFpbAotbWVzc2FnZTogWzFdXwotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWRpci5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byB1bnBhY2sgYSBNSU1FIG1lc3NhZ2UgbGlrZSB0aGUgb25lCi1hYm92ZSwgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlczoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhbiBIVE1MIG1lc3NhZ2Ugd2l0aCBhbiBhbHRlcm5hdGl2ZSBwbGFpbgotdGV4dCB2ZXJzaW9uOiBbMl1fCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKLQotCi0uLiBfZW1haWwtY29udGVudG1hbmFnZXItYXBpLWV4YW1wbGVzOgotCi1FeGFtcGxlcyB1c2luZyB0aGUgUHJvdmlzaW9uYWwgQVBJCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1IZXJlIGlzIGEgcmV3b3JraW5nIG9mIHRoZSBsYXN0IGV4YW1wbGUgdXNpbmcgdGhlIHByb3Zpc2lvbmFsIEFQSS4gIFRvIG1ha2UKLXRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLCB3ZSBpbmNsdWRlIGEgcmVsYXRlZCBpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQKLXdlIHNhdmUgYSBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQgdG8gZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgotCi1UaGlzIGV4YW1wbGUgYWxzbyBzaG93cyBob3cgZWFzeSBpdCBpcyB0byBpbmNsdWRlIG5vbi1BU0NJSSwgYW5kIHNpbXBsaWZpZXMgdGhlCi1zZW5kaW5nIG9mIHRoZSBtZXNzYWdlIHVzaW5nIHRoZSA6bWV0aDpgLnNlbmRfbWVzc2FnZWAgbWV0aG9kIG9mIHRoZQotOm1vZDpgc210cGxpYmAgbW9kdWxlLgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKLQotSWYgd2Ugd2VyZSBpbnN0ZWFkIHNlbnQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgbGFzdCBleGFtcGxlLCBoZXJlIGlzIG9uZQotd2F5IHdlIGNvdWxkIHByb2Nlc3MgaXQ6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5Ci0KLVVwIHRvIHRoZSBwcm9tcHQsIHRoZSBvdXRwdXQgZnJvbSB0aGUgYWJvdmUgaXM6Ci0KLS4uIGNvZGUtYmxvY2s6OiBub25lCi0KLSAgICBUbzogUGVuZWxvcGUgUHVzc3ljYXQgPHBlbmVsb3BlQGV4YW1wbGUuY29tPiwgRmFicmV0dGUgUHVzc3ljYXQgPGZhYnJldHRlQGV4YW1wbGUuY29tPgotICAgIEZyb206IFBlcMOpIExlIFBldyA8cGVwZUBleGFtcGxlLmNvbT4KLSAgICBTdWJqZWN0OiBBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lcgotCi0gICAgU2FsdXQhCi0KLSAgICBDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCi0KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsxXSBUaGFua3MgdG8gTWF0dGhldyBEaXhvbiBDb3dsZXMgZm9yIHRoZSBvcmlnaW5hbCBpbnNwaXJhdGlvbiBhbmQgZXhhbXBsZXMuCi0uLiBbMl0gQ29udHJpYnV0ZWQgYnkgTWFydGluIE1hdGVqZWsuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CmluZGV4IDE2MWQ4NmEuLjA1MzQ2M2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CkBAIC04LDYgKzgsMTEgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZSBuZXcKK0FQSSBvbmx5IHRoZSBhbGlhc2VzIHRhYmxlIGlzIHVzZWQuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyA6Y2xhc3M6YENoYXJzZXRgIGZvciByZXByZXNlbnRpbmcgY2hhcmFjdGVyIHNldHMKIGFuZCBjaGFyYWN0ZXIgc2V0IGNvbnZlcnNpb25zIGluIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIGEgY2hhcmFjdGVyIHNldAogcmVnaXN0cnkgYW5kIHNldmVyYWwgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgbWFuaXB1bGF0aW5nIHRoaXMgcmVnaXN0cnkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjUwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdApAQCAtMCwwICsxLDc1NCBAQAorLi4gX2NvbXBhdDMyX21lc3NhZ2U6CisKKzptb2Q6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWA6IFJlcHJlc2VudGluZyBhbiBlbWFpbCBtZXNzYWdlIHVzaW5nIHRoZSA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCisgICA6c3lub3BzaXM6IFRoZSBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBlbWFpbCBtZXNzYWdlcyBpbiBhIGZhc2hpb24KKyAgICAgICAgICAgICAgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHB5dGhvbjMuMgorCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgd2l0aG91dCB0aGUgbWV0aG9kcyBhZGRlZCBieSB0aGF0CitjbGFzcywgYW5kIHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2VydGFpbiBvdGhlciBtZXRob2RzIGJlaW5nIHNsaWdodGx5CitkaWZmZXJlbnQuICBXZSBhbHNvIGRvY3VtZW50IGhlcmUgc29tZSBtZXRob2RzIHRoYXQsIHdoaWxlIHN1cHBvcnRlZCBieSB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgYXJlIG5vdCByZWNvbW1lbmRlZCB1bmxlc3MgeW91IGFyZQorZGVhbGluZyB3aXRoIGxlZ2FjeSBjb2RlLgorCitUaGUgcGhpbG9zb3BoeSBhbmQgc3RydWN0dXJlIG9mIHRoZSB0d28gY2xhc3NlcyBpcyBvdGhlcndpc2UgdGhlIHNhbWUuCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBiZWhhdmlvciB1bmRlciB0aGUgZGVmYXVsdCAoZm9yIDpjbGFzczpgTWVzc2FnZWApCitwb2xpY3kgOmF0dHI6YH5lbWFpbC5wb2xpY3kuQ29tcGF0MzJgLiAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgYW5vdGhlciBwb2xpY3ksCit5b3Ugc2hvdWxkIGJlIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaW5zdGVhZC4KKworQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqLiAgSGVhZGVycyBtdXN0IGJlCis6cmZjOmA1MjMzYCBzdHlsZSBuYW1lcyBhbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlCitzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbiBpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlCitmaWVsZCB2YWx1ZS4gIFRoZSBwYXlsb2FkIG1heSBiZSBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IKK2Egc3RydWN0dXJlZCBzZXF1ZW5jZSBvZiBzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQKK3RoZWlyIG93biBwYXlsb2FkLiAgVGhlIGxhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlCitoYXZpbmcgYSBNSU1FIHR5cGUgc3VjaCBhcyA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IKKzptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgorCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIHdpdGggYWRkaXRpb25hbCBtZXRob2RzIGZvciBhY2Nlc3NpbmcgYm90aAorc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgaGVhZGVycywgZm9yIGFjY2Vzc2luZyB0aGUgcGF5bG9hZCwgZm9yCitnZW5lcmF0aW5nIGEgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBtc3NhZ2UsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZyBvdmVyCit0aGUgb2JqZWN0IHRyZWUuICBOb3RlIHRoYXQgZHVwbGljYXRlIGhlYWRlcnMgYXJlIHN1cHBvcnRlZCBidXQgc3BlY2lhbCBtZXRob2RzCittdXN0IGJlIHVzZWQgdG8gYWNjZXNzIHRoZW0uCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIHBzdWVkby1kaWN0aW9uYXJ5IGlzIGluZGV4ZWQgYnkgdGhlIGhlYWRlciBuYW1lcywgd2hpY2gKK211c3QgYmUgQVNDSUkgdmFsdWVzLiAgVGhlIHZhbHVlcyBvZiB0aGUgZGljdGlvbmFyeSBhcmUgc3RyaW5ncyB0aGF0IGFyZQorc3VwcG9zZWQgdG8gY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnM7IHRoZXJlIGlzIHNvbWUgc3BlY2lhbCBoYW5kbGluZyBmb3IKK25vbi1BU0NJSSBpbnB1dCwgYnV0IGl0IGRvZXNuJ3QgYWx3YXlzIHByb2R1Y2UgdGhlIGNvcnJlY3QgcmVzdWx0cy4gIEhlYWRlcnMKK2FyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQKK2Nhc2UtaW5zZW5zaXRpdmVseS4gIFRoZXJlIG1heSBhbHNvIGJlIGEgc2luZ2xlIGVudmVsb3BlIGhlYWRlciwgYWxzbyBrbm93biBhcwordGhlICpVbml4LUZyb20qIGhlYWRlciBvciB0aGUgYGBGcm9tX2BgIGhlYWRlci4gIFRoZSAqcGF5bG9hZCogaXMgZWl0aGVyIGEKK3N0cmluZyBvciBieXRlcywgaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2Ugb2JqZWN0cywgb3IgYSBsaXN0IG9mCis6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4KKzptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorCitIZXJlIGFyZSB0aGUgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzczoKKworCisuLiBjbGFzczo6IE1lc3NhZ2UocG9saWN5PWNvbXBhdDMyKQorCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAorICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgorICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKKyAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKKyAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBUaGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbCAqdW5peGZyb20qCisgICAgICBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBzdHJpbmcuCisgICAgICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5IHJlYXNvbnMsCisgICAgICAqbWF4aGVhZGVybGVuKiBkZWZhdWx0cyB0byBgYDBgYCwgc28gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgdmFsdWUgeW91CisgICAgICBtdXN0IG92ZXJyaWRlIGl0IGV4cGxpY2l0bHkgKHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICptYXhfbGluZV9sZW5ndGgqIGluCisgICAgICB0aGUgcG9saWN5IHdpbGwgYmUgaWdub3JlZCBieSB0aGlzIG1ldGhvZCkuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBgR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvcgorICAgICAgICAgZnAgPSBTdHJpbmdJTygpCisgICAgICAgICBnID0gR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIG9iamVjdCBjb250YWlucyBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdCBlbmNvZGVkIGFjY29yZGluZworICAgICAgdG8gUkZDIHN0YW5kYXJkcywgdGhlIG5vbi1jb21wbGlhbnQgZGF0YSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHVuaWNvZGUKKyAgICAgICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuICAoU2VlIGFsc28gOm1ldGg6YC5hc19ieXRlc2AgYW5kCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLikKKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc3RyX18oKQorCisgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfc3RyaW5nKClgLiAgQWxsb3dzIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworCisgICAuLiBtZXRob2Q6OiBhc19ieXRlcyh1bml4ZnJvbT1GYWxzZSwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgYnl0ZXMgb2JqZWN0LiAgV2hlbiBvcHRpb25hbAorICAgICAgKnVuaXhmcm9tKiBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nLiAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICBgYEJ5dGVzR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4KKyAgICAgIEZvciBleGFtcGxlOjoKKworICAgICAgICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCisgICAgICAgICBmcCA9IEJ5dGVzSU8oKQorICAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKKyAgIC4uIG1ldGhvZDo6IF9fYnl0ZXNfXygpCisKKyAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19ieXRlcygpYC4gIEFsbG93cyBgYGJ5dGVzKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKworICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQuICAoTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLikKKworCisgICAuLiBtZXRob2Q6OiBzZXRfdW5peGZyb20odW5peGZyb20pCisKKyAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyLiAgRGVmYXVsdHMgdG8gYGBOb25lYGAgaWYgdGhlCisgICAgICBlbnZlbG9wZSBoZWFkZXIgd2FzIG5ldmVyIHNldC4KKworCisgICAuLiBtZXRob2Q6OiBhdHRhY2gocGF5bG9hZCkKKworICAgICAgQWRkIHRoZSBnaXZlbiAqcGF5bG9hZCogdG8gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggbXVzdCBiZSBgYE5vbmVgYCBvcgorICAgICAgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBiZWZvcmUgdGhlIGNhbGwuIEFmdGVyIHRoZSBjYWxsLCB0aGUKKyAgICAgIHBheWxvYWQgd2lsbCBhbHdheXMgYmUgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cy4gIElmIHlvdSB3YW50IHRvCisgICAgICBzZXQgdGhlIHBheWxvYWQgdG8gYSBzY2FsYXIgb2JqZWN0IChlLmcuIGEgc3RyaW5nKSwgdXNlCisgICAgICA6bWV0aDpgc2V0X3BheWxvYWRgIGluc3RlYWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgYW5kIHRoZQorICAgICAgcmVhbHRlZCBgYG1ha2VgYCBhbmQgYGBhZGRgYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQorCisgICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCisgICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKKyAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCisKKyAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKKyAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKKyAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCisgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQorICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCisgICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKKyAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKKyAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgorICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcworICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQorICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKKyAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKKyAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKKyAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCisgICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCisKKyAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKKyAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCisgICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCisgICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgorICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90CisgICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0CisgICAgICBBU0NJSSBjaGFyc2V0LgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZ2V0X2NvbnRlbnRgIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGF5bG9hZChwYXlsb2FkLCBjaGFyc2V0PU5vbmUpCisKKyAgICAgIFNldCB0aGUgZW50aXJlIG1lc3NhZ2Ugb2JqZWN0J3MgcGF5bG9hZCB0byAqcGF5bG9hZCouICBJdCBpcyB0aGUgY2xpZW50J3MKKyAgICAgIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGUgcGF5bG9hZCBpbnZhcmlhbnRzLiAgT3B0aW9uYWwgKmNoYXJzZXQqIHNldHMKKyAgICAgIHRoZSBtZXNzYWdlJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0OyBzZWUgOm1ldGg6YHNldF9jaGFyc2V0YCBmb3IgZGV0YWlscy4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQorCisgICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKKyAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCisgICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCisgICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCisgICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgorCisgICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKKyAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKKyAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCisgICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCisgICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKKyAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKKyAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCisgICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCisgICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCisgICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqY2hhcnNldCogcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1ldGg6YGVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCisKKyAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0IGFsd2F5cyByZXR1cm5zCisgICAgICBgYE5vbmVgYC4KKworCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IGEgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQorICAgbWVzc2FnZSdzIDpyZmM6YDI4MjJgIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKKyAgIGJldHdlZW4gdGhlc2UgbWV0aG9kcyBhbmQgYSBub3JtYWwgbWFwcGluZyAoaS5lLiBkaWN0aW9uYXJ5KSBpbnRlcmZhY2UuICBGb3IKKyAgIGV4YW1wbGUsIGluIGEgZGljdGlvbmFyeSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXMsIGJ1dCBoZXJlIHRoZXJlIG1heSBiZQorICAgZHVwbGljYXRlIG1lc3NhZ2UgaGVhZGVycy4gIEFsc28sIGluIGRpY3Rpb25hcmllcyB0aGVyZSBpcyBubyBndWFyYW50ZWVkCisgICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0LAorICAgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbAorICAgbWVzc2FnZSwgb3Igd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueSBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbgorICAgcmUtYWRkZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgbGlzdC4KKworICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCisgICBjb252ZW5pZW5jZS4KKworICAgTm90ZSB0aGF0IGluIGFsbCBjYXNlcywgYW55IGVudmVsb3BlIGhlYWRlciBwcmVzZW50IGluIHRoZSBtZXNzYWdlIGlzIG5vdAorICAgaW5jbHVkZWQgaW4gdGhlIG1hcHBpbmcgaW50ZXJmYWNlLgorCisgICBJbiBhIG1vZGVsIGdlbmVyYXRlZCBmcm9tIGJ5dGVzLCBhbnkgaGVhZGVyIHZhbHVlcyB0aGF0IChpbiBjb250cmF2ZW50aW9uIG9mCisgICB0aGUgUkZDcykgY29udGFpbiBub24tQVNDSUkgYnl0ZXMgd2lsbCwgd2hlbiByZXRyaWV2ZWQgdGhyb3VnaCB0aGlzCisgICBpbnRlcmZhY2UsIGJlIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdHMgd2l0aAorICAgYSBjaGFyc2V0IG9mIGB1bmtub3duLThiaXRgLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fbGVuX18oKQorCisgICAgICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBoZWFkZXJzLCBpbmNsdWRpbmcgZHVwbGljYXRlcy4KKworCisgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKKworICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKKyAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KKyAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorCisgICAgICAgICAgIGlmICdtZXNzYWdlLWlkJyBpbiBteU1lc3NhZ2U6CisgICAgICAgICAgICAgIHByaW50KCdNZXNzYWdlLUlEOicsIG15TWVzc2FnZVsnbWVzc2FnZS1pZCddKQorCisKKyAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBjb2xvbiBmaWVsZCBzZXBhcmF0b3IuICBJZiB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIGBgTm9uZWBgIGlzIHJldHVybmVkOyBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAgaXMgbmV2ZXIgcmFpc2VkLgorCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG5hbWVkIGZpZWxkIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1lc3NhZ2UncworICAgICAgaGVhZGVycywgZXhhY3RseSB3aGljaCBvZiB0aG9zZSBmaWVsZCB2YWx1ZXMgd2lsbCBiZSByZXR1cm5lZCBpcworICAgICAgdW5kZWZpbmVkLiAgVXNlIHRoZSA6bWV0aDpgZ2V0X2FsbGAgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUKKyAgICAgIGV4dGFudCBuYW1lZCBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKKworICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCisgICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzICpub3QqIG92ZXJ3cml0ZSBvciBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlciB3aXRoIHRoZSBzYW1lCisgICAgICBuYW1lLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBoZWFkZXIgaXMgdGhlIG9ubHkgb25lIHByZXNlbnQgaW4gdGhlCisgICAgICBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSosIGRlbGV0ZSB0aGUgZmllbGQgZmlyc3QsIGUuZy46OgorCisgICAgICAgICBkZWwgbXNnWydzdWJqZWN0J10KKyAgICAgICAgIG1zZ1snc3ViamVjdCddID0gJ1B5dGhvbiByb29seiEnCisKKworICAgLi4gbWV0aG9kOjogX19kZWxpdGVtX18obmFtZSkKKworICAgICAgRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgZmllbGQgd2l0aCBuYW1lICpuYW1lKiBmcm9tIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGhlYWRlcnMuICBObyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZSBuYW1lZCBmaWVsZCBpc24ndCBwcmVzZW50IGluIHRoZQorICAgICAgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBrZXlzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBoZWFkZXIgZmllbGQgbmFtZXMuCisKKworICAgLi4gbWV0aG9kOjogdmFsdWVzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBmaWVsZCB2YWx1ZXMuCisKKworICAgLi4gbWV0aG9kOjogaXRlbXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIDItdHVwbGVzIGNvbnRhaW5pbmcgYWxsIHRoZSBtZXNzYWdlJ3MgZmllbGQgaGVhZGVycyBhbmQKKyAgICAgIHZhbHVlcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXQobmFtZSwgZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICBUaGlzIGlzIGlkZW50aWNhbCB0bworICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCBleGNlcHQgdGhhdCBvcHRpb25hbCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgaWYgdGhlCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIG1ldGhvZHM6CisKKworICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZCBuYW1lZCAqbmFtZSouIElmIHRoZXJlIGFyZQorICAgICAgbm8gc3VjaCBuYW1lZCBoZWFkZXJzIGluIHRoZSBtZXNzYWdlLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgKGRlZmF1bHRzIHRvCisgICAgICBgYE5vbmVgYCkuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2hlYWRlcihfbmFtZSwgX3ZhbHVlLCAqKl9wYXJhbXMpCisKKyAgICAgIEV4dGVuZGVkIGhlYWRlciBzZXR0aW5nLiAgVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byA6bWV0aDpgX19zZXRpdGVtX19gCisgICAgICBleGNlcHQgdGhhdCBhZGRpdGlvbmFsIGhlYWRlciBwYXJhbWV0ZXJzIGNhbiBiZSBwcm92aWRlZCBhcyBrZXl3b3JkCisgICAgICBhcmd1bWVudHMuICAqX25hbWUqIGlzIHRoZSBoZWFkZXIgZmllbGQgdG8gYWRkIGFuZCAqX3ZhbHVlKiBpcyB0aGUKKyAgICAgICpwcmltYXJ5KiB2YWx1ZSBmb3IgdGhlIGhlYWRlci4KKworICAgICAgRm9yIGVhY2ggaXRlbSBpbiB0aGUga2V5d29yZCBhcmd1bWVudCBkaWN0aW9uYXJ5ICpfcGFyYW1zKiwgdGhlIGtleSBpcworICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCisgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKKyAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCisgICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKKyAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0CisgICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKKyAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0CisgICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAorICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKKyAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAorICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCisgICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorCisgICAgICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisKKyAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCisKKyAgICAgIFRoaXMgd2lsbCBhZGQgYSBoZWFkZXIgdGhhdCBsb29rcyBsaWtlIDo6CisKKyAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgorCisgICAgICBBbiBleGFtcGxlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgorCisgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSgnaXNvLTg4NTktMScsICcnLCAnRnXDn2JhbGxlci5wcHQnKSkKKworICAgICAgV2hpY2ggcHJvZHVjZXMgOjoKKworICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWUqPSJpc28tODg1OS0xJydGdSVERmJhbGxlci5wcHQiCisKKworICAgLi4gbWV0aG9kOjogcmVwbGFjZV9oZWFkZXIoX25hbWUsIF92YWx1ZSkKKworICAgICAgUmVwbGFjZSBhIGhlYWRlci4gIFJlcGxhY2UgdGhlIGZpcnN0IGhlYWRlciBmb3VuZCBpbiB0aGUgbWVzc2FnZSB0aGF0CisgICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZS4gIElmIG5vCisgICAgICBtYXRjaGluZyBoZWFkZXIgd2FzIGZvdW5kLCBhIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfdHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgY29lcmNlZCB0bworICAgICAgbG93ZXIgY2FzZSBvZiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgd2FzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgdGhlIGRlZmF1bHQgdHlwZSBhcyBnaXZlbgorICAgICAgYnkgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgIHdpbGwgYmUgcmV0dXJuZWQuICBTaW5jZSBhY2NvcmRpbmcgdG8KKyAgICAgIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgCisgICAgICB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4KKworICAgICAgOnJmYzpgMjA0NWAgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYAorICAgICAgdW5sZXNzIGl0IGFwcGVhcnMgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluCisgICAgICB3aGljaCBjYXNlIGl0IHdvdWxkIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLAorICAgICAgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdCB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBtYWluIGNvbnRlbnQgdHlwZS4gIFRoaXMgaXMgdGhlIDptaW1ldHlwZTpgbWFpbnR5cGVgCisgICAgICBwYXJ0IG9mIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3N1YnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBzdWItY29udGVudCB0eXBlLiAgVGhpcyBpcyB0aGUgOm1pbWV0eXBlOmBzdWJ0eXBlYAorICAgICAgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IDptZXRoOmBnZXRfY29udGVudF90eXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfZGVmYXVsdF90eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gIE1vc3QgbWVzc2FnZXMgaGF2ZSBhIGRlZmF1bHQgY29udGVudAorICAgICAgdHlwZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLCBleGNlcHQgZm9yIG1lc3NhZ2VzIHRoYXQgYXJlIHN1YnBhcnRzIG9mCisgICAgICA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lcnMuICBTdWNoIHN1YnBhcnRzIGhhdmUgYSBkZWZhdWx0CisgICAgICBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2RlZmF1bHRfdHlwZShjdHlwZSkKKworICAgICAgU2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gICpjdHlwZSogc2hvdWxkIGVpdGhlciBiZQorICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcyBub3QKKyAgICAgIGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtcyhmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBwYXJhbWV0ZXJzLCBhcyBhIGxpc3QuCisgICAgICBUaGUgZWxlbWVudHMgb2YgdGhlIHJldHVybmVkIGxpc3QgYXJlIDItdHVwbGVzIG9mIGtleS92YWx1ZSBwYWlycywgYXMKKyAgICAgIHNwbGl0IG9uIHRoZSBgYCc9J2BgIHNpZ24uICBUaGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhlIGBgJz0nYGAgaXMgdGhlIGtleSwKKyAgICAgIHdoaWxlIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgdGhlIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gYGAnPSdgYCBzaWduIGluCisgICAgICB0aGUgcGFyYW1ldGVyIHRoZSB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIGFzCisgICAgICBkZXNjcmliZWQgaW4gOm1ldGg6YGdldF9wYXJhbWAgYW5kIGlzIHVucXVvdGVkIGlmIG9wdGlvbmFsICp1bnF1b3RlKiBpcworICAgICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgT3B0aW9uYWwgKmZhaWxvYmoqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBPcHRpb25hbCAqaGVhZGVyKiBpcyB0aGUgaGVhZGVyIHRvCisgICAgICBzZWFyY2ggaW5zdGVhZCBvZiA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKnBhcmFtcyogcHJvcGVydHkgb2YgdGhlIGluZGl2aWR1YWwgaGVhZGVyIG9iamVjdHMKKyAgICAgIHJldHVybmVkIGJ5IHRoZSBoZWFkZXIgYWNjZXNzIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtKHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIncyBwYXJhbWV0ZXIKKyAgICAgICpwYXJhbSogYXMgYSBzdHJpbmcuICBJZiB0aGUgbWVzc2FnZSBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBvciBpZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciwgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQKKyAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXIqIGlmIGdpdmVuLCBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIHVzZSBpbnN0ZWFkIG9mCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgUGFyYW1ldGVyIGtleXMgYXJlIGFsd2F5cyBjb21wYXJlZCBjYXNlIGluc2Vuc2l0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlCisgICAgICBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgOnJmYzpgMjIzMWAKKyAgICAgIGVuY29kZWQuICBXaGVuIGl0J3MgYSAzLXR1cGxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBvZiB0aGUgZm9ybQorICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLiAgTm90ZSB0aGF0IGJvdGggYGBDSEFSU0VUYGAgYW5kCisgICAgICBgYExBTkdVQUdFYGAgY2FuIGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHlvdSBzaG91bGQgY29uc2lkZXIgYGBWQUxVRWBgCisgICAgICB0byBiZSBlbmNvZGVkIGluIHRoZSBgYHVzLWFzY2lpYGAgY2hhcnNldC4gIFlvdSBjYW4gdXN1YWxseSBpZ25vcmUKKyAgICAgIGBgTEFOR1VBR0VgYC4KKworICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBlbmNvZGVkIGFzIGluCisgICAgICA6cmZjOmAyMjMxYCwgeW91IGNhbiBjb2xsYXBzZSB0aGUgcGFyYW1ldGVyIHZhbHVlIGJ5IGNhbGxpbmcKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlYCwgcGFzc2luZyBpbiB0aGUgcmV0dXJuIHZhbHVlCisgICAgICBmcm9tIDptZXRoOmBnZXRfcGFyYW1gLiAgVGhpcyB3aWxsIHJldHVybiBhIHN1aXRhYmx5IGRlY29kZWQgVW5pY29kZQorICAgICAgc3RyaW5nIHdoZW4gdGhlIHZhbHVlIGlzIGEgdHVwbGUsIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgdW5xdW90ZWQgaWYgaXQKKyAgICAgIGlzbid0LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICByYXdwYXJhbSA9IG1zZy5nZXRfcGFyYW0oJ2ZvbycpCisgICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCisKKyAgICAgIEluIGFueSBjYXNlLCB0aGUgcGFyYW1ldGVyIHZhbHVlIChlaXRoZXIgdGhlIHJldHVybmVkIHN0cmluZywgb3IgdGhlCisgICAgICBgYFZBTFVFYGAgaXRlbSBpbiB0aGUgMy10dXBsZSkgaXMgYWx3YXlzIHVucXVvdGVkLCB1bmxlc3MgKnVucXVvdGUqIGlzIHNldAorICAgICAgdG8gYGBGYWxzZWBgLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqcGFyYW1zKiBwcm9wZXJ0eSBvZiB0aGUgaW5kaXZpZHVhbCBoZWFkZXIgb2JqZWN0cworICAgICAgcmV0dXJuZWQgYnkgdGhlIGhlYWRlciBhY2Nlc3MgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGFyYW0ocGFyYW0sIHZhbHVlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9JycsIHJlcGxhY2U9RmFsc2UpCisKKyAgICAgIFNldCBhIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYgdGhlCisgICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aAorICAgICAgKnZhbHVlKi4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXMgbm90IHlldCBiZWVuIGRlZmluZWQKKyAgICAgIGZvciB0aGlzIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgYW5kIHRoZSBuZXcKKyAgICAgIHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGFzIHBlciA6cmZjOmAyMDQ1YC4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0bworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAsIGFuZCBhbGwgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkKKyAgICAgIHVubGVzcyBvcHRpb25hbCAqcmVxdW90ZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuCisKKyAgICAgIElmIG9wdGlvbmFsICpjaGFyc2V0KiBpcyBzcGVjaWZpZWQsIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBlbmNvZGVkCisgICAgICBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSBSRkMgMjIzMQorICAgICAgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCisgICAgICBzaG91bGQgYmUgc3RyaW5ncy4KKworICAgICAgSWYgKnJlcGxhY2UqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBoZWFkZXIgaXMgbW92ZWQgdG8gdGhlCisgICAgICBlbmQgb2YgdGhlIGxpc3Qgb2YgaGVhZGVycy4gIElmICpyZXBsYWNlKiBpcyBgYFRydWVgYCwgdGhlIGhlYWRlcgorICAgICAgd2lsbCBiZSB1cGRhdGVkIGluIHBsYWNlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCBgYHJlcGxhY2VgYCBrZXl3b3JkIHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBkZWxfcGFyYW0ocGFyYW0sIGhlYWRlcj0nY29udGVudC10eXBlJywgcmVxdW90ZT1UcnVlKQorCisgICAgICBSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIuICBUaGUgaGVhZGVyIHdpbGwgYmUgcmUtd3JpdHRlbiBpbiBwbGFjZSB3aXRob3V0IHRoZSBwYXJhbWV0ZXIgb3IKKyAgICAgIGl0cyB2YWx1ZS4gIEFsbCB2YWx1ZXMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5IHVubGVzcyAqcmVxdW90ZSogaXMKKyAgICAgIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuCisgICAgICBhbHRlcm5hdGl2ZSB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfdHlwZSh0eXBlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSkKKworICAgICAgU2V0IHRoZSBtYWluIHR5cGUgYW5kIHN1YnR5cGUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLiAqdHlwZSogbXVzdCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLAorICAgICAgb3RoZXJ3aXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBrZWVwaW5nIGFsbAorICAgICAgdGhlIHBhcmFtZXRlcnMgaW4gcGxhY2UuICBJZiAqcmVxdW90ZSogaXMgYGBGYWxzZWBgLCB0aGlzIGxlYXZlcyB0aGUKKyAgICAgIGV4aXN0aW5nIGhlYWRlcidzIHF1b3RpbmcgYXMgaXMsIG90aGVyd2lzZSB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZAorICAgICAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgQW4gYWx0ZXJuYXRpdmUgaGVhZGVyIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlICpoZWFkZXIqIGFyZ3VtZW50LiBXaGVuIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIHNldCBhIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gCisgICAgICBoZWFkZXIgaXMgYWxzbyBhZGRlZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgYGBtYWtlX2BgIGFuZCBgYGFkZF9gYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLiAgSWYgdGhlIGhlYWRlcgorICAgICAgZG9lcyBub3QgaGF2ZSBhIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIsIHRoaXMgbWV0aG9kIGZhbGxzIGJhY2sgdG8gbG9va2luZworICAgICAgZm9yIHRoZSBgYG5hbWVgYCBwYXJhbWV0ZXIgb24gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmCisgICAgICBuZWl0aGVyIGlzIGZvdW5kLCBvciB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkLgorICAgICAgVGhlIHJldHVybmVkIHN0cmluZyB3aWxsIGFsd2F5cyBiZSB1bnF1b3RlZCBhcyBwZXIKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfYm91bmRhcnkoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLCBvciAqZmFpbG9iaiogaWYgZWl0aGVyCisgICAgICB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIG9yIGhhcyBubyBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyLiAgVGhlIHJldHVybmVkCisgICAgICBzdHJpbmcgd2lsbCBhbHdheXMgYmUgdW5xdW90ZWQgYXMgcGVyIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfYm91bmRhcnkoYm91bmRhcnkpCisKKyAgICAgIFNldCB0aGUgYGBib3VuZGFyeWBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHRvCisgICAgICAqYm91bmRhcnkqLiAgOm1ldGg6YHNldF9ib3VuZGFyeWAgd2lsbCBhbHdheXMgcXVvdGUgKmJvdW5kYXJ5KiBpZgorICAgICAgbmVjZXNzYXJ5LiAgQSA6ZXhjOmB+ZW1haWwuZXJyb3JzLkhlYWRlclBhcnNlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKyAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IHRoYW4gZGVsZXRpbmcgdGhlIG9sZAorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFuZCBhZGRpbmcgYSBuZXcgb25lIHdpdGggdGhlIG5ldworICAgICAgYm91bmRhcnkgdmlhIDptZXRoOmBhZGRfaGVhZGVyYCwgYmVjYXVzZSA6bWV0aDpgc2V0X2JvdW5kYXJ5YCBwcmVzZXJ2ZXMKKyAgICAgIHRoZSBvcmRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBsaXN0IG9mCisgICAgICBoZWFkZXJzLiBIb3dldmVyLCBpdCBkb2VzICpub3QqIHByZXNlcnZlIGFueSBjb250aW51YXRpb24gbGluZXMgd2hpY2ggbWF5CisgICAgICBoYXZlIGJlZW4gcHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLAorICAgICAgY29lcmNlZCB0byBsb3dlciBjYXNlLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvciBpZgorICAgICAgdGhhdCBoZWFkZXIgaGFzIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgKmZhaWxvYmoqIGlzIHJldHVybmVkLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIDptZXRoOmBnZXRfY2hhcnNldGAgd2hpY2ggcmV0dXJucyB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgZm9yIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRoZSBtZXNzYWdlIGJvZHkuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXRzKGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgc2V0IG5hbWVzIGluIHRoZSBtZXNzYWdlLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCB0aGVuIHRoZSBsaXN0IHdpbGwgY29udGFpbiBvbmUgZWxlbWVudAorICAgICAgZm9yIGVhY2ggc3VicGFydCBpbiB0aGUgcGF5bG9hZCwgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGEgbGlzdCBvZiBsZW5ndGggMS4KKworICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpbGwgYmUgYSBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgZm9yIHRoZQorICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIEhvd2V2ZXIsIGlmIHRoZSBzdWJwYXJ0IGhhcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZgorICAgICAgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbiBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0CisgICAgICB3aWxsIGJlICpmYWlsb2JqKi4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCisKKyAgICAgIFJldHVybiB0aGUgbG93ZXJjYXNlZCB2YWx1ZSAod2l0aG91dCBwYXJhbWV0ZXJzKSBvZiB0aGUgbWVzc2FnZSdzCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIGlmIGl0IGhhcyBvbmUsIG9yIGBgTm9uZWBgLiAgVGhlCisgICAgICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoaXMgbWV0aG9kIGFyZSAqaW5saW5lKiwgKmF0dGFjaG1lbnQqIG9yIGBgTm9uZWBgCisgICAgICBpZiB0aGUgbWVzc2FnZSBmb2xsb3dzIDpyZmM6YDIxODNgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gbWV0aG9kOjogd2FsaygpCisKKyAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgICAgaXRlcmF0ZSBvdmVyIGFsbCB0aGUgcGFydHMgYW5kIHN1YnBhcnRzIG9mIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgaW4KKyAgICAgIGRlcHRoLWZpcnN0IHRyYXZlcnNhbCBvcmRlci4gIFlvdSB3aWxsIHR5cGljYWxseSB1c2UgOm1ldGg6YHdhbGtgIGFzIHRoZQorICAgICAgaXRlcmF0b3IgaW4gYSBgYGZvcmBgIGxvb3A7IGVhY2ggaXRlcmF0aW9uIHJldHVybnMgdGhlIG5leHQgc3VicGFydC4KKworICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBwcmludHMgdGhlIE1JTUUgdHlwZSBvZiBldmVyeSBwYXJ0IG9mIGEgbXVsdGlwYXJ0CisgICAgICBtZXNzYWdlIHN0cnVjdHVyZToKKworICAgICAgLi4gdGVzdHNldHVwOjoKKworICAgICAgICAgPj4+IGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZQorICAgICAgICAgPj4+IHdpdGggb3BlbignTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNi50eHQnLCAncmInKSBhcyBmOgorICAgICAgICAgLi4uICAgICBtc2cgPSBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZikKKyAgICAgICAgID4+PiBmcm9tIGVtYWlsLml0ZXJhdG9ycyBpbXBvcnQgX3N0cnVjdHVyZQorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfdHlwZSgpKQorICAgICAgICAgbXVsdGlwYXJ0L3JlcG9ydAorICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvcmZjODIyCisgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIGBgd2Fsa2BgIGl0ZXJhdGVzIG92ZXIgdGhlIHN1YnBhcnRzIG9mIGFueSBwYXJ0IHdoZXJlCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgVHJ1ZWBgLCBldmVuIHRob3VnaAorICAgICAgYGBtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0J2BgIG1heSByZXR1cm4gYGBGYWxzZWBgLiAgV2UKKyAgICAgIGNhbiBzZWUgdGhpcyBpbiBvdXIgZXhhbXBsZSBieSBtYWtpbmcgdXNlIG9mIHRoZSBgYF9zdHJ1Y3R1cmVgYCBkZWJ1ZworICAgICAgaGVscGVyIGZ1bmN0aW9uOgorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyksCisgICAgICAgICAuLi4gICAgICAgICAgIHBhcnQuaXNfbXVsdGlwYXJ0KCkpCisgICAgICAgICBUcnVlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICA+Pj4gX3N0cnVjdHVyZShtc2cpCisgICAgICAgICBtdWx0aXBhcnQvcmVwb3J0CisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9yZmM4MjIKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIEhlcmUgdGhlIGBgbWVzc2FnZWBgIHBhcnRzIGFyZSBub3QgYGBtdWx0aXBhcnRzYGAsIGJ1dCB0aGV5IGRvIGNvbnRhaW4KKyAgICAgIHN1YnBhcnRzLiBgYGlzX211bHRpcGFydCgpYGAgcmV0dXJucyBgYFRydWVgYCBhbmQgYGB3YWxrYGAgZGVzY2VuZHMKKyAgICAgIGludG8gdGhlIHN1YnBhcnRzLgorCisKKyAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBjYW4gYWxzbyBvcHRpb25hbGx5IGNvbnRhaW4gdHdvIGluc3RhbmNlIGF0dHJpYnV0ZXMsCisgICB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHBsYWluIHRleHQgb2YgYSBNSU1FIG1lc3NhZ2UuCisKKworICAgLi4gYXR0cmlidXRlOjogcHJlYW1ibGUKKworICAgICAgVGhlIGZvcm1hdCBvZiBhIE1JTUUgZG9jdW1lbnQgYWxsb3dzIGZvciBzb21lIHRleHQgYmV0d2VlbiB0aGUgYmxhbmsgbGluZQorICAgICAgZm9sbG93aW5nIHRoZSBoZWFkZXJzLCBhbmQgdGhlIGZpcnN0IG11bHRpcGFydCBib3VuZGFyeSBzdHJpbmcuIE5vcm1hbGx5LAorICAgICAgdGhpcyB0ZXh0IGlzIG5ldmVyIHZpc2libGUgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyIGJlY2F1c2UgaXQgZmFsbHMKKyAgICAgIG91dHNpZGUgdGhlIHN0YW5kYXJkIE1JTUUgYXJtb3IuICBIb3dldmVyLCB3aGVuIHZpZXdpbmcgdGhlIHJhdyB0ZXh0IG9mCisgICAgICB0aGUgbWVzc2FnZSwgb3Igd2hlbiB2aWV3aW5nIHRoZSBtZXNzYWdlIGluIGEgbm9uLU1JTUUgYXdhcmUgcmVhZGVyLCB0aGlzCisgICAgICB0ZXh0IGNhbiBiZWNvbWUgdmlzaWJsZS4KKworICAgICAgVGhlICpwcmVhbWJsZSogYXR0cmlidXRlIGNvbnRhaW5zIHRoaXMgbGVhZGluZyBleHRyYS1hcm1vciB0ZXh0IGZvciBNSU1FCisgICAgICBkb2N1bWVudHMuICBXaGVuIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBkaXNjb3ZlcnMgc29tZSB0ZXh0CisgICAgICBhZnRlciB0aGUgaGVhZGVycyBidXQgYmVmb3JlIHRoZSBmaXJzdCBib3VuZGFyeSBzdHJpbmcsIGl0IGFzc2lnbnMgdGhpcworICAgICAgdGV4dCB0byB0aGUgbWVzc2FnZSdzICpwcmVhbWJsZSogYXR0cmlidXRlLiAgV2hlbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGlzIHdyaXRpbmcgb3V0IHRoZSBwbGFpbiB0ZXh0CisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhIE1JTUUgbWVzc2FnZSwgYW5kIGl0IGZpbmRzIHRoZQorICAgICAgbWVzc2FnZSBoYXMgYSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwgaXQgd2lsbCB3cml0ZSB0aGlzIHRleHQgaW4gdGhlIGFyZWEKKyAgICAgIGJldHdlZW4gdGhlIGhlYWRlcnMgYW5kIHRoZSBmaXJzdCBib3VuZGFyeS4gIFNlZSA6bW9kOmBlbWFpbC5wYXJzZXJgIGFuZAorICAgICAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBmb3IgZGV0YWlscy4KKworICAgICAgTm90ZSB0aGF0IGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgbm8gcHJlYW1ibGUsIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBgYE5vbmVgYC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlcGlsb2d1ZQorCisgICAgICBUaGUgKmVwaWxvZ3VlKiBhdHRyaWJ1dGUgYWN0cyB0aGUgc2FtZSB3YXkgYXMgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlLAorICAgICAgZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgdGV4dCB0aGF0IGFwcGVhcnMgYmV0d2VlbiB0aGUgbGFzdCBib3VuZGFyeSBhbmQKKyAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuCisKKyAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGVwaWxvZ3VlIHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgZm9yIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgdG8gcHJpbnQgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICBmaWxlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRlZmVjdHMKKworICAgICAgVGhlICpkZWZlY3RzKiBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIGFsbCB0aGUgcHJvYmxlbXMgZm91bmQgd2hlbgorICAgICAgcGFyc2luZyB0aGlzIG1lc3NhZ2UuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbgorICAgICAgb2YgdGhlIHBvc3NpYmxlIHBhcnNpbmcgZGVmZWN0cy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAppbmRleCBhOWMwNzhiLi41Nzc0M2Q1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CkBAIC03LDI1MSArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuNAotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5YAogCi0uLiBub3RlOjoKKy0tLS0tLS0tLS0tLQogCi0gICBUaGUgY29udGVudG1hbmFnZXIgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgdGhhdCBjYW4gcmVwcmVzZW50IGFuCi1hcmJpdHJhcnkgZW1haWwgbWVzc2FnZS4gIFRoYXQgYmFzaWMgbWVzc2FnZSBtb2RlbCBoYXMgYSB1c2VmdWwgYW5kIGZsZXhpYmxlCi1BUEksIGJ1dCBpdCBwcm92aWRlcyBvbmx5IGEgbG93ZXItbGV2ZWwgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBnZW5lcmljCi1wYXJ0cyBvZiBhIG1lc3NhZ2UgKHRoZSBoZWFkZXJzLCBnZW5lcmljIGhlYWRlciBwYXJhbWV0ZXJzLCBhbmQgdGhlIHBheWxvYWQsCi13aGljaCBtYXkgYmUgYSBsaXN0IG9mIHN1Yi1wYXJ0cykuICBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB0b29scwotdGhhdCBwcm92aWRlIGFuIGVuaGFuY2VkIGFuZCBleHRlbnNpYmxlIEFQSSBmb3IgZGVhbGluZyB3aXRoIHZhcmlvdXMgc3BlY2lmaWMKLXR5cGVzIG9mIGNvbnRlbnQsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byByZXRyaWV2ZSB0aGUgY29udGVudCBvZiB0aGUgbWVzc2FnZQotYXMgYSBzcGVjaWFsaXplZCBvYmplY3QgdHlwZSByYXRoZXIgdGhhbiBhcyBhIHNpbXBsZSBieXRlcyBvYmplY3QuICBUaGUgbW9kdWxlCi1hdXRvbWF0aWNhbGx5IHRha2VzIGNhcmUgb2YgdGhlIFJGQy1zcGVjaWZpZWQgTUlNRSBkZXRhaWxzIChyZXF1aXJlZCBoZWFkZXJzCi1hbmQgcGFyYW1ldGVycywgZXRjLikgZm9yIHRoZSBjZXJ0YWluIGNvbW1vbiBjb250ZW50IHR5cGVzIGNvbnRlbnQgcHJvcGVydGllcywKLWFuZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHR5cGVzIGNhbiBiZSBhZGRlZCBieSBhbiBhcHBsaWNhdGlvbiB1c2luZyB0aGUKLWV4dGVuc2lvbiBtZWNoYW5pc21zLgotCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBlcG9ueW1vdXMgIkNvbnRlbnQgTWFuYWdlciIgY2xhc3Nlcy4gIFRoZSBiYXNlCi06Y2xhc3M6YC5Db250ZW50TWFuYWdlcmAgY2xhc3MgZGVmaW5lcyBhbiBBUEkgZm9yIHJlZ2lzdGVyaW5nIGNvbnRlbnQKLW1hbmFnZW1lbnQgZnVuY3Rpb25zIHdoaWNoIGV4dHJhY3QgZGF0YSBmcm9tIGBgTWVzc2FnZWBgIG9iamVjdHMgb3IgaW5zZXJ0IGRhdGEKLWFuZCBoZWFkZXJzIGludG8gYGBNZXNzYWdlYGAgb2JqZWN0cywgdGh1cyBwcm92aWRpbmcgYSB3YXkgb2YgY29udmVydGluZwotYmV0d2VlbiBgYE1lc3NhZ2VgYCBvYmplY3RzIGNvbnRhaW5pbmcgZGF0YSBhbmQgb3RoZXIgcmVwcmVzZW50YXRpb25zIG9mIHRoYXQKLWRhdGEgKFB5dGhvbiBkYXRhIHR5cGVzLCBzcGVjaWFsaXplZCBQeXRob24gb2JqZWN0cywgZXh0ZXJuYWwgZmlsZXMsIGV0YykuICBUaGUKLW1vZHVsZSBhbHNvIGRlZmluZXMgb25lIGNvbmNyZXRlIGNvbnRlbnQgbWFuYWdlcjogOmRhdGE6YHJhd19kYXRhX21hbmFnZXJgCi1jb252ZXJ0cyBiZXR3ZWVuIE1JTUUgY29udGVudCB0eXBlcyBhbmQgYGBzdHJgYCBvciBgYGJ5dGVzYGAgZGF0YS4gIEl0IGFsc28KLXByb3ZpZGVzIGEgY29udmVuaWVudCBBUEkgZm9yIG1hbmFnaW5nIHRoZSBNSU1FIHBhcmFtZXRlcnMgd2hlbiBpbnNlcnRpbmcKLWNvbnRlbnQgaW50byBgYE1lc3NhZ2VgYFwgcy4gIEl0IGFsc28gaGFuZGxlcyBpbnNlcnRpbmcgYW5kIGV4dHJhY3RpbmcKLWBgTWVzc2FnZWBgIG9iamVjdHMgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGBgbWVzc2FnZS9yZmM4MjJgYCBjb250ZW50IHR5cGUuCi0KLUFub3RoZXIgcGFydCBvZiB0aGUgZW5oYW5jZWQgaW50ZXJmYWNlIGlzIHN1YmNsYXNzZXMgb2YKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgdGhhdCBwcm92aWRlIG5ldyBjb252ZW5pZW5jZSBBUEkgZnVuY3Rpb25zLAotaW5jbHVkaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGNhbGxpbmcgdGhlIENvbnRlbnQgTWFuYWdlcnMgZGVyaXZlZCBmcm9tCi10aGlzIG1vZHVsZS4KLQotLi4gbm90ZTo6Ci0KLSAgIEFsdGhvdWdoIDpjbGFzczpgLkVtYWlsTWVzc2FnZWAgYW5kIDpjbGFzczpgLk1JTUVQYXJ0YCBhcmUgY3VycmVudGx5Ci0gICBkb2N1bWVudGVkIGluIHRoaXMgbW9kdWxlIGJlY2F1c2Ugb2YgdGhlIHByb3Zpc2lvbmFsIG5hdHVyZSBvZiB0aGUgY29kZSwgdGhlCi0gICBpbXBsZW1lbnRhdGlvbiBsaXZlcyBpbiB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLgotCi0uLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWVzc2FnZQotCi0uLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1ZHBhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucG9saWN5LmRlZmF1bHRgIHBvbGljeSwgd2hpY2ggZm9sbG93cyB0aGUgcnVsZXMgb2YgdGhlIGVtYWlsCi0gICBSRkNzIGV4Y2VwdCBmb3IgbGluZSBlbmRpbmdzIChpbnN0ZWFkIG9mIHRoZSBSRkMgbWFuZGF0ZWQgYGBcclxuYGAsIGl0IHVzZXMKLSAgIHRoZSBQeXRob24gc3RhbmRhcmQgYGBcbmBgIGxpbmUgZW5kaW5ncykuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgotCi0gICBUaGlzIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYC4gIEl0IGFkZHMKLSAgIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotCi0gICAuLiBtZXRob2Q6OiBpc19hdHRhY2htZW50Ci0KLSAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGVyZSBpcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIKLSAgICAgIGFuZCBpdHMgKGNhc2UgaW5zZW5zaXRpdmUpIHZhbHVlIGlzIGBgYXR0YWNobWVudGBgLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4yCi0gICAgICAgICBpc19hdHRhY2htZW50IGlzIG5vdyBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgcHJvcGVydHksIGZvciBjb25zaXN0ZW5jeQotICAgICAgICAgd2l0aCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9ib2R5KHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpCi0KLSAgICAgIFJldHVybiB0aGUgTUlNRSBwYXJ0IHRoYXQgaXMgdGhlIGJlc3QgY2FuZGlkYXRlIHRvIGJlIHRoZSAiYm9keSIgb2YgdGhlCi0gICAgICBtZXNzYWdlLgotCi0gICAgICAqcHJlZmVyZW5jZWxpc3QqIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGZyb20gdGhlIHNldCBgYHJlbGF0ZWRgYCwKLSAgICAgIGBgaHRtbGBgLCBhbmQgYGBwbGFpbmBgLCBhbmQgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvciB0aGUKLSAgICAgIGNvbnRlbnQgdHlwZSBvZiB0aGUgcGFydCByZXR1cm5lZC4KLQotICAgICAgU3RhcnQgbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZQotICAgICAgYGBnZXRfYm9keWBgIG1ldGhvZCBpcyBjYWxsZWQuCi0KLSAgICAgIElmIGBgcmVsYXRlZGBgIGlzIG5vdCBpbmNsdWRlZCBpbiAqcHJlZmVyZW5jZWxpc3QqLCBjb25zaWRlciB0aGUgcm9vdAotICAgICAgcGFydCAob3Igc3VicGFydCBvZiB0aGUgcm9vdCBwYXJ0KSBvZiBhbnkgcmVsYXRlZCBlbmNvdW50ZXJlZCBhcyBhCi0gICAgICBjYW5kaWRhdGUgaWYgdGhlIChzdWItKXBhcnQgbWF0Y2hlcyBhIHByZWZlcmVuY2UuCi0KLSAgICAgIFdoZW4gZW5jb3VudGVyaW5nIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjaGVjayB0aGUgYGBzdGFydGBgIHBhcmFtZXRlcgotICAgICAgYW5kIGlmIGEgcGFydCB3aXRoIGEgbWF0Y2hpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGlzIGZvdW5kLCBjb25zaWRlcgotICAgICAgb25seSBpdCB3aGVuIGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzLiAgT3RoZXJ3aXNlIGNvbnNpZGVyIG9ubHkgdGhlCi0gICAgICBmaXJzdCAoZGVmYXVsdCByb290KSBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydC9yZWxhdGVkYGAuCi0KLSAgICAgIElmIGEgcGFydCBoYXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBvbmx5IGNvbnNpZGVyCi0gICAgICB0aGUgcGFydCBhIGNhbmRpZGF0ZSBtYXRjaCBpZiB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBgYGlubGluZWBgLgotCi0gICAgICBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGVzIG1hdGNoZXMgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyBpbgotICAgICAgKnByZWZlcm5lY2xpc3QqLCByZXR1cm4gYGBOb25lYGAuCi0KLSAgICAgIE5vdGVzOiAoMSkgRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoZSBvbmx5ICpwcmVmZXJlbmNlbGlzdCogY29tYmluYXRpb25zCi0gICAgICB0aGF0IHJlYWxseSBtYWtlIHNlbnNlIGFyZSBgYCgncGxhaW4nLClgYCwgYGAoJ2h0bWwnLCAncGxhaW4nKWBgLCBhbmQgdGhlCi0gICAgICBkZWZhdWx0LCBgYCgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJylgYC4gICgyKSBCZWNhdXNlIG1hdGNoaW5nIHN0YXJ0cwotICAgICAgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIGBgZ2V0X2JvZHlgYCBpcyBjYWxsZWQsIGNhbGxpbmcgYGBnZXRfYm9keWBgIG9uCi0gICAgICBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCB3aWxsIHJldHVybiB0aGUgb2JqZWN0IGl0c2VsZiB1bmxlc3MKLSAgICAgICpwcmVmZXJlbmNlbGlzdCogaGFzIGEgbm9uLWRlZmF1bHQgdmFsdWUuICgzKSBNZXNzYWdlcyAob3IgbWVzc2FnZSBwYXJ0cykKLSAgICAgIHRoYXQgZG8gbm90IHNwZWNpZnkgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBvciB3aG9zZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIGludmFsaWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkKLSAgICAgIGFyZSBvZiB0eXBlIGBgdGV4dC9wbGFpbmBgLCB3aGljaCBtYXkgb2NjYXNpb25hbGx5IGNhdXNlIGBgZ2V0X2JvZHlgYCB0bwotICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQgcmVzdWx0cy4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX2F0dGFjaG1lbnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbWVzc2FnZSB0aGF0IGFyZSBub3QKLSAgICAgIGNhbmRpZGF0ZSAiYm9keSIgcGFydHMuICBUaGF0IGlzLCBza2lwIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggb2YKLSAgICAgIGBgdGV4dC9wbGFpbmBgLCBgYHRleHQvaHRtbGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgICh1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMKLSAgICAgIGF0dGFjaG1lbnRzIHZpYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGApLCBhbmQKLSAgICAgIHJldHVybiBhbGwgcmVtYWluaW5nIHBhcnRzLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgcmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGFsbCB0aGUgcmVsYXRlZCBwYXJ0cwotICAgICAgZXhjZXB0IHRoZSByb290IHBhcnQgKGllOiB0aGUgcGFydCBwb2ludGVkIHRvIGJ5IHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyLAotICAgICAgb3IgdGhlIGZpcnN0IHBhcnQgaWYgdGhlcmUgaXMgbm8gYGBzdGFydGBgIHBhcmFtZXRlciBvciB0aGUgYGBzdGFydGBgCi0gICAgICBwYXJhbWV0ZXIgZG9lc24ndCBtYXRjaCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIG9mIGFueSBvZiB0aGUKLSAgICAgIHBhcnRzKS4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgb3IgYQotICAgICAgbm9uLWBgbXVsdGlwYXJ0YGAsIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvci4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX3BhcnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlLAotICAgICAgd2hpY2ggd2lsbCBiZSBlbXB0eSBmb3IgYSBub24tYGBtdWx0aXBhcnRgYC4gIChTZWUgYWxzbwotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLndhbGtgLikKLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgZ2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBzZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgc2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX3JlbGF0ZWQoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG1lc3NhZ2UgaW50byBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBtZXNzYWdlLAotICAgICAgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhCi0gICAgICAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZQotICAgICAgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5Ci0gICAgICB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZQotICAgICAgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX2FsdGVybmF0aXZlKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBvciBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBpbnRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYAotICAgICAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCi0gICAgICAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwKLSAgICAgIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMKLSAgICAgIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9taXhlZChib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvciBhCi0gICAgICBgYG11bHRpcGFydC1hbHRlcm5hdGl2ZWBgIGludG8gYSBgYG11bHRpcGFydC9taXhlZGBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlCi0gICAgICBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nCi0gICAgICBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9yZWxhdGVkKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCi0gICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLAotICAgICAgYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgotICAgICAgdGhlIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgY2FsbCA6bWV0aDpgbWFrZV9yZWxhdGVkYCBhbmQgdGhlbgotICAgICAgcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsCi0gICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotICAgICAgSWYgdGhlIGFkZGVkIHBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsCi0gICAgICBhZGQgb25lIHdpdGggdGhlIHZhbHVlIGBgaW5saW5lYGAuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX2FsdGVybmF0aXZlKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQotICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCi0gICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjYWxsCi0gICAgICA6bWV0aDpgbWFrZV9hbHRlcm5hdGl2ZWAgYW5kIHRoZW4gcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzCi0gICAgICBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmCi0gICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCi0gICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfYXR0YWNobWVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0LAotICAgICAgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQotICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjYWxsIDptZXRoOmBtYWtlX21peGVkYCBhbmQgdGhlbiBwcm9jZWVkIGFzCi0gICAgICBhYm92ZS4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuICBJZiB0aGUgYWRkZWQgcGFydAotICAgICAgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUKLSAgICAgIGBgYXR0YWNobWVudGBgLiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgYm90aCBmb3IgZXhwbGljaXQgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGAgYW5kIGBgaW5saW5lYGAgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lYCksIGJ5IHBhc3NpbmcgYXBwcm9wcmlhdGUKLSAgICAgIG9wdGlvbnMgdG8gdGhlIGBgY29udGVudF9tYW5hZ2VyYGAuCi0KLQotICAgLi4gbWV0aG9kOjogY2xlYXIoKQotCi0gICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgaGVhZGVycy4KLQotCi0gICAuLiBtZXRob2Q6OiBjbGVhcl9jb250ZW50KCkKLQotICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIDpleGM6YENvbnRlbnQtYCBoZWFkZXJzLCBsZWF2aW5nCi0gICAgICBhbGwgb3RoZXIgaGVhZGVycyBpbnRhY3QgYW5kIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgotCi0KLS4uIGNsYXNzOjogTUlNRVBhcnQocG9saWN5PWRlZmF1bHQpCi0KLSAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJwYXJ0IG9mIGEgTUlNRSBtZXNzYWdlLiAgSXQgaXMgaWRlbnRpY2FsIHRvCi0gICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgLCBleGNlcHQgdGhhdCBubyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzIGFyZQotICAgIGFkZGVkIHdoZW4gOm1ldGg6YH5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGlzIGNhbGxlZCwgc2luY2Ugc3ViLXBhcnRzIGRvCi0gICAgbm90IG5lZWQgdGhlaXIgb3duIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMuCi0KKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCiAKLS4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5jb250ZW50bWFuYWdlcgogCiAuLiBjbGFzczo6IENvbnRlbnRNYW5hZ2VyKCkKIApAQCAtMzYyLDcgKzEyMyw3IEBACiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnYnl0ZXMnPiwgbWFpbnR5cGUsIHN1YnR5cGUsIGN0ZT0iYmFzZTY0IiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCi0gICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J0VtYWlsTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnbGlzdCc+LCBzdWJ0eXBlPSdtaXhlZCcsIFwKQEAgLTM3OCwxNCArMTM5LDE0IEBACiAgICAgICAgICAgICAgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMgc3BlY2lmaWVkLCBvciBgYHBsYWluYGAgaWYgaXQgaXMgbm90LgogICAgICAgICAgICAqIEZvciBgYGJ5dGVzYGAsIHVzZSB0aGUgc3BlY2lmaWVkICptYWludHlwZSogYW5kICpzdWJ0eXBlKiwgb3IKICAgICAgICAgICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhleSBhcmUgbm90IHNwZWNpZmllZC4KLSAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlIHRvCi0gICAgICAgICAgICAgYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzIHNwZWNpZmllZAotICAgICAgICAgICAgIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzIGBgcGFydGlhbGBgLCByYWlzZSBhbgotICAgICAgICAgICAgIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8gY29uc3RydWN0Ci0gICAgICAgICAgICAgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCisgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlCisgICAgICAgICAgICAgdG8gYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCisgICAgICAgICAgICAgc3BlY2lmaWVkIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzCisgICAgICAgICAgICAgYGBwYXJ0aWFsYGAsIHJhaXNlIGFuIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8KKyAgICAgICAgICAgICBjb25zdHJ1Y3QgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCiAgICAgICAgICAgICogRm9yICo8J2xpc3QnPiosIHdoaWNoIHNob3VsZCBiZSBhIGxpc3Qgb2YKLSAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgYGBtYWludHlwZWBgIHRvCi0gICAgICAgICAgICAgYGBtdWx0aXBhcnRgYCwgYW5kIHRoZSBgYHN1YnR5cGVgYCB0byAqc3VidHlwZSogaWYgaXQgaXMKKyAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBgYG1haW50eXBlYGAKKyAgICAgICAgICAgICB0byBgYG11bHRpcGFydGBgLCBhbmQgdGhlIGBgc3VidHlwZWBgIHRvICpzdWJ0eXBlKiBpZiBpdCBpcwogICAgICAgICAgICAgIHNwZWNpZmllZCwgYW5kIGBgbWl4ZWRgYCBpZiBpdCBpcyBub3QuICBJZiB0aGUgbWVzc2FnZSBwYXJ0cyBpbgogICAgICAgICAgICAgIHRoZSAqPCdsaXN0Jz4qIGhhdmUgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycywgcmVtb3ZlCiAgICAgICAgICAgICAgdGhlbS4KQEAgLTM5NywzMiArMTU4LDM1IEBACiAKICAgICAgICBJZiAqY3RlKiBpcyBzZXQsIGVuY29kZSB0aGUgcGF5bG9hZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgdHJhbnNmZXIKICAgICAgICBlbmNvZGluZywgYW5kIHNldCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5kY29kaW5nYCBoZWFkZXIgdG8KLSAgICAgICB0aGF0IHZhbHVlLiAgRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgaXQgaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bwotICAgICAgIGRldGVybWluZSB0aGUgbW9zdCBjb21wYWN0IGVuY29kaW5nLiAgUG9zc2libGUgdmFsdWVzIGZvciAqY3RlKiBhcmUKLSAgICAgICBgYHF1b3RlZC1wcmludGFibGVgYCwgYGBiYXNlNjRgYCwgYGA3Yml0YGAsIGBgOGJpdGBgLCBhbmQgYGBiaW5hcnlgYC4KLSAgICAgICBJZiB0aGUgaW5wdXQgY2Fubm90IGJlIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZWc6IGBgN2JpdGBgKSwKLSAgICAgICByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsIHBlcgotICAgICAgIDpyZmM6YDIwNDZgLCByYWlzZSBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yCi0gICAgICAgYGBiYXNlNjRgYCBpcyByZXF1ZXN0ZWQgZm9yICpzdWJ0eXBlKiBgYHJmYzgyMmBgLCBhbmQgZm9yIGFueSAqY3RlKgotICAgICAgIG90aGVyIHRoYW4gYGA3Yml0YGAgZm9yICpzdWJ0eXBlKiBgYGV4dGVybmFsLWJvZHlgYC4gIEZvcgotICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IgYWxsCi0gICAgICAgb3RoZXIgdmFsdWVzIG9mICpzdWJ0eXBlKiwgdXNlIGBgN2JpdGBgLgorICAgICAgIHRoYXQgdmFsdWUuICBQb3NzaWJsZSB2YWx1ZXMgZm9yICpjdGUqIGFyZSBgYHF1b3RlZC1wcmludGFibGVgYCwKKyAgICAgICBgYGJhc2U2NGBgLCBgYDdiaXRgYCwgYGA4Yml0YGAsIGFuZCBgYGJpbmFyeWBgLiAgSWYgdGhlIGlucHV0IGNhbm5vdCBiZQorICAgICAgIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZm9yIGV4YW1wbGUsIHNwZWNpZnlpbmcgYSAqY3RlKiBvZgorICAgICAgIGBgN2JpdGBgIGZvciBhbiBpbnB1dCB0aGF0IGNvbnRhaW5zIG5vbi1BU0NJSSB2YWx1ZXMpLCByYWlzZSBhCisgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCisKKyAgICAgICAgICAgICogRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgKmN0ZSogaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bworICAgICAgICAgICAgICBkZXRlcm1pbmUgdGhlIG1vc3QgY29tcGFjdCBlbmNvZGluZy4KKyAgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCwgcGVyIDpyZmM6YDIwNDZgLCByYWlzZQorICAgICAgICAgICAgICBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAgaXMKKyAgICAgICAgICAgICAgcmVxdWVzdGVkIGZvciAqc3VidHlwZSogYGByZmM4MjJgYCwgYW5kIGZvciBhbnkgKmN0ZSogb3RoZXIgdGhhbgorICAgICAgICAgICAgICBgYDdiaXRgYCBmb3IgKnN1YnR5cGUqIGBgZXh0ZXJuYWwtYm9keWBgLiAgRm9yCisgICAgICAgICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IKKyAgICAgICAgICAgICAgYWxsIG90aGVyIHZhbHVlcyBvZiAqc3VidHlwZSosIHVzZSBgYDdiaXRgYC4KIAogICAgICAgIC4uIG5vdGU6OiBBICpjdGUqIG9mIGBgYmluYXJ5YGAgZG9lcyBub3QgYWN0dWFsbHkgd29yayBjb3JyZWN0bHkgeWV0LgotICAgICAgICAgIFRoZSBgYE1lc3NhZ2VgYCBvYmplY3QgYXMgbW9kaWZpZWQgYnkgYGBzZXRfY29udGVudGBgIGlzIGNvcnJlY3QsIGJ1dAotICAgICAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZG9lcyBub3Qgc2VyaWFsaXplIGl0Ci0gICAgICAgICAgY29ycmVjdGx5LgorICAgICAgICAgIFRoZSBgYEVtYWlsTWVzc2FnZWBgIG9iamVjdCBhcyBtb2RpZmllZCBieSBgYHNldF9jb250ZW50YGAgaXMKKyAgICAgICAgICBjb3JyZWN0LCBidXQgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBkb2VzIG5vdAorICAgICAgICAgIHNlcmlhbGl6ZSBpdCBjb3JyZWN0bHkuCiAKICAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIHNldCwgdXNlIGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLiAgSWYgbm90IHNwZWNpZmllZCwgYW5kCiAgICAgICAgKmZpbGVuYW1lKiBpcyBzcGVjaWZpZWQsIGFkZCB0aGUgaGVhZGVyIHdpdGggdGhlIHZhbHVlIGBgYXR0YWNobWVudGBgLgotICAgICAgIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLCBkbyBub3QgYWRkCi0gICAgICAgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUgYGBhdHRhY2htZW50YGAKLSAgICAgICBhbmQgYGBpbmxpbmVgYC4KKyAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLAorICAgICAgIGRvIG5vdCBhZGQgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUKKyAgICAgICBgYGF0dGFjaG1lbnRgYCBhbmQgYGBpbmxpbmVgYC4KIAogICAgICAgIElmICpmaWxlbmFtZSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZSBgYGZpbGVuYW1lYGAKLSAgICAgICBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuICBUaGVyZSBpcyBubwotICAgICAgIGRlZmF1bHQuCisgICAgICAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLgogCiAgICAgICAgSWYgKmNpZCogaXMgc3BlY2lmaWVkLCBhZGQgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaGVhZGVyIHdpdGgKICAgICAgICAqY2lkKiBhcyBpdHMgdmFsdWUuCkBAIC00MzUsMyArMTk5LDkgQEAKICAgICAgICBgYGhlYWRlcm5hbWU6IGhlYWRlcnZhbHVlYGAgb3IgYSBsaXN0IG9mIGBgaGVhZGVyYGAgb2JqZWN0cwogICAgICAgIChkaXN0aW5ndWlzaGVkIGZyb20gc3RyaW5ncyBieSBoYXZpbmcgYSBgYG5hbWVgYCBhdHRyaWJ1dGUpLCBhZGQgdGhlCiAgICAgICAgaGVhZGVycyB0byAqbXNnKi4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjQgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CmluZGV4IDlkN2Y5YmYuLmUyNGFjN2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKQEAgLTgsNiArOCwxMiBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlCituZXcgQVBJIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkIGJ5IHRoZSAqY3RlKiBwYXJhbWV0ZXIgb2YKK3RoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2QuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogV2hlbiBjcmVhdGluZyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMgZnJvbSBzY3JhdGNoLCB5b3Ugb2Z0ZW4KIG5lZWQgdG8gZW5jb2RlIHRoZSBwYXlsb2FkcyBmb3IgdHJhbnNwb3J0IHRocm91Z2ggY29tcGxpYW50IG1haWwgc2VydmVycy4gVGhpcwogaXMgZXNwZWNpYWxseSB0cnVlIGZvciA6bWltZXR5cGU6YGltYWdlL1wqYCBhbmQgOm1pbWV0eXBlOmB0ZXh0L1wqYCB0eXBlIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdAppbmRleCA4NDcwNzgzLi4yZDBkMTkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKQEAgLTIwLDMzICsyMCwyNyBAQAogCiAuLiBleGNlcHRpb246OiBNZXNzYWdlUGFyc2VFcnJvcigpCiAKLSAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYAotICAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZUVycm9yYC4KKyAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZQorICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20KKyAgIDpleGM6YE1lc3NhZ2VFcnJvcmAuICBUaGlzIGNsYXNzIGlzIGFsc28gdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBwYXJzZXIgdXNlZAorICAgYnkgOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YC4KIAogCiAuLiBleGNlcHRpb246OiBIZWFkZXJQYXJzZUVycm9yKCkKIAotICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDI4MjJgIGhlYWRlcnMgb2YgYQotICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiBJdCBjYW4gYmUgcmFpc2VkCi0gICBmcm9tIHRoZSA6bWV0aDpgUGFyc2VyLnBhcnNlIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlPmAgb3IKLSAgIDptZXRoOmBQYXJzZXIucGFyc2VzdHIgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHI+YCBtZXRob2RzLgotCi0gICBTaXR1YXRpb25zIHdoZXJlIGl0IGNhbiBiZSByYWlzZWQgaW5jbHVkZSBmaW5kaW5nIGFuIGVudmVsb3BlIGhlYWRlciBhZnRlciB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgbWVzc2FnZSwgZmluZGluZyBhIGNvbnRpbnVhdGlvbiBsaW5lIGJlZm9yZSB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBpcyBmb3VuZCwgb3IgZmluZGluZyBhIGxpbmUgaW4gdGhlIGhlYWRlcnMgd2hpY2ggaXMKLSAgIG5laXRoZXIgYSBoZWFkZXIgb3IgYSBjb250aW51YXRpb24gbGluZS4KKyAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIGEKKyAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gIFRoZQorICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfYm91bmRhcnlgIG1ldGhvZCB3aWxsIHJhaXNlIHRoaXMKKyAgIGVycm9yIGlmIHRoZSBjb250ZW50IHR5cGUgaXMgdW5rbm93biB3aGVuIHRoZSBtZXRob2QgaXMgY2FsbGVkLgorICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgbWF5IHJhaXNlIHRoaXMgZXJyb3IgZm9yIGNlcnRhaW4gYmFzZTY0CisgICBkZWNvZGluZyBlcnJvcnMsIGFuZCB3aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjcmVhdGUgYSBoZWFkZXIgdGhhdCBhcHBlYXJzCisgICB0byBjb250YWluIGFuIGVtYmVkZGVkIGhlYWRlciAodGhhdCBpcywgdGhlcmUgaXMgd2hhdCBpcyBzdXBwb3NlZCB0byBiZSBhCisgICBjb250aW51YXRpb24gbGluZSB0aGF0IGhhcyBubyBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGxvb2tzIGxpa2UgYSBoZWFkZXIpLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEJvdW5kYXJ5RXJyb3IoKQogCi0gICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgMjgyMmAgaGVhZGVycyBvZiBhCi0gICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuIEl0IGNhbiBiZSByYWlzZWQKLSAgIGZyb20gdGhlIDptZXRoOmBQYXJzZXIucGFyc2UgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2U+YCBvcgotICAgOm1ldGg6YFBhcnNlci5wYXJzZXN0ciA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cj5gIG1ldGhvZHMuCi0KLSAgIFNpdHVhdGlvbnMgd2hlcmUgaXQgY2FuIGJlIHJhaXNlZCBpbmNsdWRlIG5vdCBiZWluZyBhYmxlIHRvIGZpbmQgdGhlIHN0YXJ0aW5nIG9yCi0gICB0ZXJtaW5hdGluZyBib3VuZGFyeSBpbiBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBtZXNzYWdlIHdoZW4gc3RyaWN0IHBhcnNpbmcKLSAgIGlzIHVzZWQuCisgICBEZXByZWNhdGVkIGFuZCBubyBsb25nZXIgdXNlZC4KIAogCiAuLiBleGNlcHRpb246OiBNdWx0aXBhcnRDb252ZXJzaW9uRXJyb3IoKQpAQCAtNjQsMTQgKzU4LDE0IEBACiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLm5vbm11bHRpcGFydC5NSU1FTm9uTXVsdGlwYXJ0YCAoZS5nLgogICAgOmNsYXNzOmB+ZW1haWwubWltZS5pbWFnZS5NSU1FSW1hZ2VgKS4KIAotSGVyZSdzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAorCitIZXJlIGlzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAogY2FuIGZpbmQgd2hpbGUgcGFyc2luZyBtZXNzYWdlcy4gIE5vdGUgdGhhdCB0aGUgZGVmZWN0cyBhcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKIHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZCwgc28gZm9yIGV4YW1wbGUsIGlmIGEgbWVzc2FnZSBuZXN0ZWQgaW5zaWRlIGEKIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYCBoYWQgYSBtYWxmb3JtZWQgaGVhZGVyLCB0aGF0IG5lc3RlZCBtZXNzYWdlCiBvYmplY3Qgd291bGQgaGF2ZSBhIGRlZmVjdCwgYnV0IHRoZSBjb250YWluaW5nIG1lc3NhZ2VzIHdvdWxkIG5vdC4KIAotQWxsIGRlZmVjdCBjbGFzc2VzIGFyZSBzdWJjbGFzc2VkIGZyb20gOmNsYXNzOmBlbWFpbC5lcnJvcnMuTWVzc2FnZURlZmVjdGAsIGJ1dAotdGhpcyBjbGFzcyBpcyAqbm90KiBhbiBleGNlcHRpb24hCitBbGwgZGVmZWN0IGNsYXNzZXMgYXJlIHN1YmNsYXNzZWQgZnJvbSA6Y2xhc3M6YGVtYWlsLmVycm9ycy5NZXNzYWdlRGVmZWN0YC4KIAogKiA6Y2xhc3M6YE5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdGAgLS0gQSBtZXNzYWdlIGNsYWltZWQgdG8gYmUgYSBtdWx0aXBhcnQsCiAgIGJ1dCBoYWQgbm8gOm1pbWV0eXBlOmBib3VuZGFyeWAgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZTlhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QKQEAgLTAsMCArMSw2NyBAQAorLi4gX2VtYWlsLWV4YW1wbGVzOgorCis6bW9kOmBlbWFpbGA6IEV4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHRvIHJlYWQsIHdyaXRlLAorYW5kIHNlbmQgc2ltcGxlIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIG1vcmUgY29tcGxleCBNSU1FIG1lc3NhZ2VzLgorCitGaXJzdCwgbGV0J3Mgc2VlIGhvdyB0byBjcmVhdGUgYW5kIHNlbmQgYSBzaW1wbGUgdGV4dCBtZXNzYWdlIChib3RoIHRoZQordGV4dCBjb250ZW50IGFuZCB0aGUgYWRkcmVzc2VzIG1heSBjb250YWluIHVuaWNvZGUgY2hhcmFjdGVycyk6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CisKKworUGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHVzaW5nIHRoZSBjbGFzc2VzCitmcm9tIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBtb2R1bGU6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIGEgTUlNRSBtZXNzYWdlIGNvbnRhaW5pbmcgYSBidW5jaCBvZiBmYW1pbHkKK3BpY3R1cmVzIHRoYXQgbWF5IGJlIHJlc2lkaW5nIGluIGEgZGlyZWN0b3J5OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGFuIGVtYWlsCittZXNzYWdlOiBbMV1fCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtZGlyLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVucGFjayBhIE1JTUUgbWVzc2FnZSBsaWtlIHRoZSBvbmUKK2Fib3ZlLCBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBjcmVhdGUgYW4gSFRNTCBtZXNzYWdlIHdpdGggYW4gYWx0ZXJuYXRpdmUgcGxhaW4KK3RleHQgdmVyc2lvbi4gIFRvIG1ha2UgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHdlIGluY2x1ZGUgYSByZWxhdGVkCitpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQgd2Ugc2F2ZSBhIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZCB0bworZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisKKworSWYgd2Ugd2VyZSBzZW50IHRoZSBtZXNzYWdlIGZyb20gdGhlIGxhc3QgZXhhbXBsZSwgaGVyZSBpcyBvbmUgd2F5IHdlIGNvdWxkCitwcm9jZXNzIGl0OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKKworVXAgdG8gdGhlIHByb21wdCwgdGhlIG91dHB1dCBmcm9tIHRoZSBhYm92ZSBpczoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIFRvOiBQZW5lbG9wZSBQdXNzeWNhdCA8cGVuZWxvcGVAZXhhbXBsZS5jb20+LCBGYWJyZXR0ZSBQdXNzeWNhdCA8ZmFicmV0dGVAZXhhbXBsZS5jb20+CisgICAgRnJvbTogUGVww6kgTGUgUGV3IDxwZXBlQGV4YW1wbGUuY29tPgorICAgIFN1YmplY3Q6IEF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyCisKKyAgICBTYWx1dCEKKworICAgIENlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIFRoYW5rcyB0byBNYXR0aGV3IERpeG9uIENvd2xlcyBmb3IgdGhlIG9yaWdpbmFsIGluc3BpcmF0aW9uIGFuZCBleGFtcGxlcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IGQ1OTZlZDguLmFiMGZiYzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtOCwyMTAgKzgsMjQ0IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLU9uZSBvZiB0aGUgbW9zdCBjb21tb24gdGFza3MgaXMgdG8gZ2VuZXJhdGUgdGhlIGZsYXQgdGV4dCBvZiB0aGUgZW1haWwgbWVzc2FnZQotcmVwcmVzZW50ZWQgYnkgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUuICBZb3Ugd2lsbCBuZWVkIHRvIGRvIHRoaXMgaWYgeW91IHdhbnQKLXRvIHNlbmQgeW91ciBtZXNzYWdlIHZpYSB0aGUgOm1vZDpgc210cGxpYmAgbW9kdWxlIG9yIHRoZSA6bW9kOmBubnRwbGliYCBtb2R1bGUsCi1vciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBhbmQKLXByb2R1Y2luZyBhIGZsYXQgdGV4dCBkb2N1bWVudCBpcyB0aGUgam9iIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MuCitPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHRhc2tzIGlzIHRvIGdlbmVyYXRlIHRoZSBmbGF0IChzZXJpYWxpemVkKSB2ZXJzaW9uIG9mCit0aGUgZW1haWwgbWVzc2FnZSByZXByZXNlbnRlZCBieSBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZS4gIFlvdSB3aWxsIG5lZWQgdG8KK2RvIHRoaXMgaWYgeW91IHdhbnQgdG8gc2VuZCB5b3VyIG1lc3NhZ2UgdmlhIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZG1haWxgIG9yCit0aGUgOm1vZDpgbm50cGxpYmAgbW9kdWxlLCBvciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhCittZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYW5kIHByb2R1Y2luZyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gaXMgdGhlIGpvYgorb2YgdGhlIGdlbmVyYXRvciBjbGFzc2VzLgogCi1BZ2FpbiwgYXMgd2l0aCB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsIHlvdSBhcmVuJ3QgbGltaXRlZCB0byB0aGUKLWZ1bmN0aW9uYWxpdHkgb2YgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yOyB5b3UgY291bGQgd3JpdGUgb25lIGZyb20gc2NyYXRjaAoteW91cnNlbGYuICBIb3dldmVyIHRoZSBidW5kbGVkIGdlbmVyYXRvciBrbm93cyBob3cgdG8gZ2VuZXJhdGUgbW9zdCBlbWFpbCBpbiBhCi1zdGFuZGFyZHMtY29tcGxpYW50IHdheSwgc2hvdWxkIGhhbmRsZSBNSU1FIGFuZCBub24tTUlNRSBlbWFpbCBtZXNzYWdlcyBqdXN0Ci1maW5lLCBhbmQgaXMgZGVzaWduZWQgc28gdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmbGF0IHRleHQsIHRvIGEgbWVzc2FnZQotc3RydWN0dXJlIHZpYSB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MsIGFuZCBiYWNrIHRvIGZsYXQgdGV4dCwKLWlzIGlkZW1wb3RlbnQgKHRoZSBpbnB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG91dHB1dCkgWyNdXy4gIE9uIHRoZSBvdGhlciBoYW5kLAotdXNpbmcgdGhlIEdlbmVyYXRvciBvbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY29uc3RydWN0ZWQgYnkgcHJvZ3JhbQotbWF5IHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBhcyBkZWZhdWx0cwotYXJlIGZpbGxlZCBpbi4KK0FzIHdpdGggdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLCB5b3UgYXJlbid0IGxpbWl0ZWQgdG8gdGhlIGZ1bmN0aW9uYWxpdHkKK29mIHRoZSBidW5kbGVkIGdlbmVyYXRvcjsgeW91IGNvdWxkIHdyaXRlIG9uZSBmcm9tIHNjcmF0Y2ggeW91cnNlbGYuICBIb3dldmVyCit0aGUgYnVuZGxlZCBnZW5lcmF0b3Iga25vd3MgaG93IHRvIGdlbmVyYXRlIG1vc3QgZW1haWwgaW4gYSBzdGFuZGFyZHMtY29tcGxpYW50Cit3YXksIHNob3VsZCBoYW5kbGUgTUlNRSBhbmQgbm9uLU1JTUUgZW1haWwgbWVzc2FnZXMganVzdCBmaW5lLCBhbmQgaXMgZGVzaWduZWQKK3NvIHRoYXQgdGhlIGJ5dGVzLW9yaWVudGVkIHBhcnNpbmcgYW5kIGdlbmVyYXRpb24gb3BlcmF0aW9ucyBhcmUgaW52ZXJzZXMsCithc3N1bWluZyB0aGUgc2FtZSBub24tdHJhbnNmb3JtaW5nIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGlzIHVzZWQgZm9yIGJvdGguICBUaGF0CitpcywgcGFyc2luZyB0aGUgc2VyaWFsaXplZCBieXRlIHN0cmVhbSB2aWEgdGhlCis6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzIGFuZCB0aGVuIHJlZ2VuZXJhdGluZyB0aGUgc2VyaWFsaXplZAorYnl0ZSBzdHJlYW0gdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgc2hvdWxkIHByb2R1Y2Ugb3V0cHV0IGlkZW50aWNhbCB0bwordGhlIGlucHV0IFsjXV8uICAoT24gdGhlIG90aGVyIGhhbmQsIHVzaW5nIHRoZSBnZW5lcmF0b3Igb24gYW4KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjb25zdHJ1Y3RlZCBieSBwcm9ncmFtIG1heSByZXN1bHQgaW4KK2NoYW5nZXMgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3QgYXMgZGVmYXVsdHMgYXJlCitmaWxsZWQgaW4uKQogCi06Y2xhc3M6YGJ5dGVzYCBvdXRwdXQgY2FuIGJlIGdlbmVyYXRlZCB1c2luZyB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgY2xhc3MuCi1JZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGNvbnRhaW5zIG5vbi1BU0NJSSBieXRlcywgdGhpcyBnZW5lcmF0b3IncwotOm1ldGg6YH5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2Qgd2lsbCBlbWl0IHRoZSBvcmlnaW5hbCBieXRlcy4gIFBhcnNpbmcgYQotYmluYXJ5IG1lc3NhZ2UgYW5kIHRoZW4gZmxhdHRlbmluZyBpdCB3aXRoIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIHNob3VsZCBiZQotaWRlbXBvdGVudCBmb3Igc3RhbmRhcmRzIGNvbXBsaWFudCBtZXNzYWdlcy4KLQotSGVyZSBhcmUgdGhlIHB1YmxpYyBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlCi06bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZToKK1RoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgY2FuIGJlIHVzZWQgdG8gZmxhdHRlbiBhIG1lc3NhZ2UgaW50byBhIHRleHQgKGFzCitvcHBvc2VkIHRvIGJpbmFyeSkgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiwgYnV0IHNpbmNlIFVuaWNvZGUgY2Fubm90CityZXByZXNlbnQgYmluYXJ5IGRhdGEgZGlyZWN0bHksIHRoZSBtZXNzYWdlIGlzIG9mIG5lY2Vzc2l0eSB0cmFuc2Zvcm1lZCBpbnRvCitzb21ldGhpbmcgdGhhdCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMsIHVzaW5nIHRoZSBzdGFuZGFyZCBlbWFpbCBSRkMKK0NvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgdGVjaG5pcXVlcyBmb3IgZW5jb2RpbmcgZW1haWwgbWVzc2FnZXMgZm9yIHRyYW5zcG9ydAorb3ZlciBjaGFubmVscyB0aGF0IGFyZSBub3QgIjggYml0IGNsZWFuIi4KIAogCi0uLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCi0KLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAotICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCi0gICBhbmQgYmUgdXNhYmxlIGFzIHRoZSBvdXRwdXQgZmlsZSBmb3IgdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIE9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGEgZmxhZyB0aGF0LCB3aGVuIGBgVHJ1ZWBgLCBwdXRzIGEgYGA+YGAgY2hhcmFjdGVyIGluCi0gICBmcm9udCBvZiBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyBleGFjdGx5IGFzIGBgRnJvbWBgLCBpLmUuIGBgRnJvbWBgCi0gICBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuICBUaGlzIGlzIHRoZSBvbmx5IGd1YXJhbnRlZWQKLSAgIHBvcnRhYmxlIHdheSB0byBhdm9pZCBoYXZpbmcgc3VjaCBsaW5lcyBiZSBtaXN0YWtlbiBmb3IgYSBVbml4IG1haWxib3ggZm9ybWF0Ci0gICBlbnZlbG9wZSBoZWFkZXIgc2VwYXJhdG9yIChzZWUgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAotICAgPGh0dHBzOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8gZm9yIGRldGFpbHMpLiAgKm1hbmdsZV9mcm9tXyoKLSAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8gYGBGYWxzZWBgIGlmIHlvdSBhcmUgbm90Ci0gICB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCi0KLSAgIE9wdGlvbmFsICptYXhoZWFkZXJsZW4qIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZCBoZWFkZXIuCi0gICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsIHdpdGggdGFicwotICAgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCi0gICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgotCi0gICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCi0gICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAotICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKLSAgIGlzIHVzZWQuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKLQotCi0gICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKLQotICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQgYXQKLSAgICAgICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlCi0gICAgICB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nIHRleHQgd2lsbAotICAgICAgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLgotCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQotICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KLQotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgKm1zZypcJ3Mgb3IgYGBHZW5lcmF0b3JgYFwncyBgYHBvbGljeWBgLgotCi0gICAgICBCZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBub24tQVNDSUkgYnl0ZXMsIGlmIHRoZSBwb2xpY3kgdGhhdAotICAgICAgYXBwbGllcyB3aGVuIGBgZmxhdHRlbmBgIGlzIHJ1biBoYXMgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAotICAgICAgc2V0IHRvIGBgOGJpdGBgLCBgYEdlbmVyYXRvcmBgIHdpbGwgb3BlcmF0ZSBhcyBpZiBpdCB3ZXJlIHNldCB0bwotICAgICAgYGA3Yml0YGAuICBUaGlzIG1lYW5zIHRoYXQgbWVzc2FnZXMgcGFyc2VkIHdpdGggYSBCeXRlcyBwYXJzZXIgdGhhdCBoYXZlCi0gICAgICBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiBgYDhiaXRgYCB3aWxsIGJlIGNvbnZlcnRlZAotICAgICAgdG8gYSB1c2UgYSBgYDdiaXRgYCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgTm9uLUFTQ0lJIGJ5dGVzIGluIHRoZQotICAgICAgaGVhZGVycyB3aWxsIGJlIDpyZmM6YDIwNDdgIGVuY29kZWQgd2l0aCBhIGNoYXJzZXQgb2YgYGB1bmtub3duLThiaXRgYC4KLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlLWVuY29kaW5nIGBgOGJpdGBgIG1lc3NhZ2UgYm9kaWVzLCBhbmQgdGhlCi0gICAgICAgICAqbGluZXNlcCogYXJndW1lbnQuCi0KLSAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQotCi0gICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aCB0aGUKLSAgICAgIGV4YWN0IHNhbWUgb3B0aW9ucy4KLQotICAgLi4gbWV0aG9kOjogd3JpdGUocykKLQotICAgICAgV3JpdGUgdGhlIHN0cmluZyAqcyogdG8gdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QsIGkuZS4gKm91dGZwKiBwYXNzZWQgdG8KLSAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJCi0gICAgICBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi1BcyBhIGNvbnZlbmllbmNlLCBzZWUgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgbWV0aG9kcwotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAsIGEuay5hLgotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuX19zdHJfX2AsIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mIGEKLWZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCi06bW9kOmBlbWFpbC5tZXNzYWdlYC4KLQotLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgXAorLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKQogCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIGJpbmFyeQotICAgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgIGNhbGxlZCAqb3V0ZnAqIGZvciBhbiBhcmd1bWVudC4gICpvdXRmcCogbXVzdAotICAgc3VwcG9ydCBhIDptZXRoOmB3cml0ZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyBiaW5hcnkgZGF0YS4KKyAgIFJldHVybiBhIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgdGV4dCBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouCisgICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhIGBgd3JpdGVgYCBtZXRob2QgdGhhdCBhY2NlcHRzIGJpbmFyeSBkYXRhLgogCi0gICBPcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBhIGZsYWcgdGhhdCwgd2hlbiBgYFRydWVgYCwgcHV0cyBhIGBgPmBgCi0gICBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgZXhhY3RseSBhcyBgYEZyb21gYCwKLSAgIGkuZS4gYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiAgVGhpcyBpcyB0aGUKLSAgIG9ubHkgZ3VhcmFudGVlZCBwb3J0YWJsZSB3YXkgdG8gYXZvaWQgaGF2aW5nIHN1Y2ggbGluZXMgYmUgbWlzdGFrZW4gZm9yIGEKLSAgIFVuaXggbWFpbGJveCBmb3JtYXQgZW52ZWxvcGUgaGVhZGVyIHNlcGFyYXRvciAoc2VlIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RICi0gICBGT1JNQVQgSVMgQkFEIDxodHRwczovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfIGZvciBkZXRhaWxzKS4KLSAgICptYW5nbGVfZnJvbV8qIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8KLSAgIGBgRmFsc2VgYCBpZiB5b3UgYXJlIG5vdCB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCisgICBJZiBvcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBgYFRydWVgYCwgcHV0IGEgYGA+YGAgY2hhcmFjdGVyIGluIGZyb250IG9mCisgICBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBleGFjdCBzdHJpbmcgYGAiRnJvbSAiYGAsIHRoYXQgaXMKKyAgIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuICAqbWFuZ2xlX2Zyb21fKgorICAgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fYAorICAgc2V0dGluZyBvZiB0aGUgKnBvbGljeSogKHdoaWNoIGlzIGBgVHJ1ZWBgIGZvciB0aGUKKyAgIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBwb2xpY3kgYW5kIGBgRmFsc2VgYCBmb3IgYWxsIG90aGVycykuCisgICAqbWFuZ2xlX2Zyb21fKiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB1bml4IG1ib3gKKyAgIGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgIGFuZCBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECisgICA8aHR0cDovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfKS4KIAotICAgT3B0aW9uYWwgKm1heGhlYWRlcmxlbiogc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkCi0gICBoZWFkZXIuICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsCi0gICB3aXRoIHRhYnMgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIKLSAgIHdyYXBwaW5nLiAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKSBieQotICAgOnJmYzpgMjgyMmAuCisgICBJZiAqbWF4aGVhZGVybGVuKiBpcyBub3QgYGBOb25lYGAsIHJlZm9sZCBhbnkgaGVhZGVyIGxpbmVzIHRoYXQgYXJlIGxvbmdlcgorICAgdGhhbiAqbWF4aGVhZGVybGVuKiwgb3IgaWYgYGAwYGAsIGRvIG5vdCByZXdyYXAgYW55IGhlYWRlcnMuICBJZgorICAgKm1hbmhlYWRlcmxlbiogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgd3JhcCBoZWFkZXJzIGFuZCBvdGhlciBtZXNzYWdlCisgICBsaW5lcyBhY2NvcmRpbmcgdG8gdGhlICpwb2xpY3kqIHNldHRpbmdzLgogCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHBvbGljeSB0byBjb250cm9sIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIElmCisgICAqcG9saWN5KiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB1c2UgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgb2JqZWN0IHBhc3NlZCB0byBgYGZsYXR0ZW5gYCB0byBjb250cm9sIHRoZSBtZXNzYWdlIGdlbmVyYXRpb24uICBTZWUKKyAgIDptb2Q6YGVtYWlsLnBvbGljeWAgZm9yIGRldGFpbHMgb24gd2hhdCAqcG9saWN5KiBjb250cm9scy4KIAotICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQotICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIElmIG5vICpwb2xpY3kqIGlzIHNwZWNpZmllZCwKLSAgIHRoZW4gdGhlICpwb2xpY3kqIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlIG9iamVjdCBwYXNzZWQgdG8gOmF0dHI6YGZsYXR0ZW5gCi0gICBpcyB1c2VkLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKICAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAKLSAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLiAgU3VicGFydHMgYXJlIHZpc2l0ZWQgZGVwdGgtZmlyc3QgYW5kIHRoZSByZXN1bHRpbmcKLSAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uCi0gICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksCi0gICAgICB0aGVuIGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZCBtZXNzYWdlIHRoYXQKLSAgICAgIGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LiAgSWYKLSAgICAgIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgdGhlIGJ5dGVzIHdpbGwgYmUgY29udmVydGVkIGFzIG5lZWRlZAotICAgICAgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgSW4gcGFydGljdWxhciwKLSAgICAgIFJGQy1pbnZhbGlkIG5vbi1BU0NJSSBieXRlcyBpbiBoZWFkZXJzIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUgTUlNRQotICAgICAgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KIAotICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYSBjb21wbGVtZW50YXJ5IG9wdGlvbiB0aGF0IGp1c3QgZG9lcyB0aGUgUkZDCi0gICAgICAgICBjb21wbGlhbmNlIHRyYW5zZm9ybWF0aW9uIGJ1dCBsZWF2ZXMgQ1RFIDhiaXQgcGFydHMgYWxvbmUuCisgICAgICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKKyAgICAgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksIGNvcHkgYW55IGhlYWRlcnMgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZAorICAgICAgbWVzc2FnZSB0aGF0IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgdG8gdGhlIG91dHB1dCB3aXRoIGFueSBieXRlcyB3aXRoIHRoZQorICAgICAgaGlnaCBiaXQgc2V0IHJlcHJvZHVjZWQgYXMgaW4gdGhlIG9yaWdpbmFsLCBhbmQgcHJlc2VydmUgdGhlIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGFueSBib2R5IHBhcnRzIHRoYXQgaGF2ZSB0aGVtLgorICAgICAgSWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLCBjb252ZXJ0IHRoZSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMKKyAgICAgIG5lZWRlZCB1c2luZyBhbiBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4KKyAgICAgIFRoYXQgaXMsIHRyYW5zZm9ybSBwYXJ0cyB3aXRoIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCiAKLSAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIHJlY29uc3RydWN0ZWQKLSAgICAgIGFzIDhiaXQgaWYgdGhleSBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkLgorICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYW4gb3B0aW9uIHRoYXQganVzdCBkb2VzIHRoZSBSRkMKKyAgICAgICAgIGNvbXBsaWFuY2UgdHJhbnNmb3JtYXRpb24gb24gaGVhZGVycyBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgogCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQorICAgICAgSWYgKnVuaXhmcm9tKiBpcyBgYFRydWVgYCwgcHJpbnQgdGhlIGVudmVsb3BlIGhlYWRlciBkZWxpbWl0ZXIgdXNlZCBieQorICAgICAgdGhlIFVuaXggbWFpbGJveCBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCkgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUKKyAgICAgIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzCisgICAgICBubyBlbnZlbG9wZSBoZWFkZXIsIGNyYWZ0IGEgc3RhbmRhcmQgb25lLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgogICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KIAotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgYGBHZW5lcmF0b3JgYFwgb3IgKm1zZypcICdzIGBgcG9saWN5YGAuCisgICAgICBJZiAqbGluZXNlcCogaXMgbm90IGBgTm9uZWBgLCB1c2UgaXQgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIgYmV0d2VlbgorICAgICAgYWxsIHRoZSBsaW5lcyBvZiB0aGUgZmxhdHRlbmVkIG1lc3NhZ2UuICBJZiAqbGluZXNlcCogaXMgYGBOb25lYGAgKHRoZQorICAgICAgZGVmYXVsdCksIHVzZSB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSAqcG9saWN5Ki4KKworICAgICAgLi4gWFhYOiBmbGF0dGVuIHNob3VsZCB0YWtlIGEgKnBvbGljeSoga2V5d29yZC4KKwogCiAgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKIAogICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aAotICAgICAgdGhlIGV4YWN0IHNhbWUgb3B0aW9ucy4KKyAgICAgIHRoZSBleGFjdCBzYW1lIG9wdGlvbiBzZXR0aW5ncywgYW5kICpmcCogYXMgdGhlIG5ldyAqb3V0ZnAqLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCiAKLSAgICAgIFdyaXRlIHRoZSBzdHJpbmcgKnMqIHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LiAgKnMqIGlzIGVuY29kZWQgdXNpbmcKLSAgICAgIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHdyaXR0ZW4gdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAgKm91dGZwKgotICAgICAgKm91dGZwKiBwYXNzZWQgdG8gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzCi0gICAgICBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJIGZvciA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZXMKLSAgICAgIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi1UaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsIGNhbGxlZAotOmNsYXNzOmBEZWNvZGVkR2VuZXJhdG9yYCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKLWV4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIHN1YnN0aXR1dGVkIHdpdGggYSBmb3JtYXQgc3RyaW5nCi1yZXByZXNlbnRpbmcgdGhlIHBhcnQuCisgICAgICBFbmNvZGUgKnMqIHVzaW5nIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yCisgICAgICBoYW5kbGVyLCBhbmQgcGFzcyBpdCB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICpvdXRmcCogcGFzc2VkIHRvIHRoZQorICAgICAgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4KIAogCi0uLiBjbGFzczo6IERlY29kZWRHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKQorQXMgYSBjb252ZW5pZW5jZSwgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBtZXRob2RzCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmFzX2J5dGVzYCBhbmQgYGBieXRlcyhhTWVzc2FnZSlgYCAoYS5rLmEuCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLl9fYnl0ZXNfX2ApLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorYSBzZXJpYWxpemVkIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKKzptb2Q6YGVtYWlsLm1lc3NhZ2VgLgogCi0gICBUaGlzIGNsYXNzLCBkZXJpdmVkIGZyb20gOmNsYXNzOmBHZW5lcmF0b3JgIHdhbGtzIHRocm91Z2ggYWxsIHRoZSBzdWJwYXJ0cyBvZiBhCi0gICBtZXNzYWdlLiAgSWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlIDptaW1ldHlwZTpgdGV4dGAsIHRoZW4gaXQgcHJpbnRzIHRoZQotICAgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LiBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZQotICAgYXMgd2l0aCB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKLSAgIElmIHRoZSBzdWJwYXJ0IGlzIG5vdCBvZiBtYWluIHR5cGUgOm1pbWV0eXBlOmB0ZXh0YCwgb3B0aW9uYWwgKmZtdCogaXMgYSBmb3JtYXQKLSAgIHN0cmluZyB0aGF0IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgbWVzc2FnZSBwYXlsb2FkLiAqZm10KiBpcyBleHBhbmRlZCB3aXRoIHRoZQotICAgZm9sbG93aW5nIGtleXdvcmRzLCBgYCUoa2V5d29yZClzYGAgZm9ybWF0OgorQmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgYmluYXJ5IGRhdGEsIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgbXVzdAorY29udmVydCBhbnkgYmluYXJ5IGRhdGEgaW4gYW55IG1lc3NhZ2UgaXQgZmxhdHRlbnMgdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorZm9ybWF0LCBieSBjb252ZXJ0aW5nIHRoZW0gdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXJfRW5jb2RpbmdgLiAgVXNpbmcgdGhlIHRlcm1pbm9sb2d5IG9mIHRoZSBlbWFpbAorUkZDcywgeW91IGNhbiB0aGluayBvZiB0aGlzIGFzIDpjbGFzczpgR2VuZXJhdG9yYCBzZXJpYWxpemluZyB0byBhbiBJL08gc3RyZWFtCit0aGF0IGlzIG5vdCAiOCBiaXQgY2xlYW4iLiAgSW4gb3RoZXIgd29yZHMsIG1vc3QgYXBwbGljYXRpb25zIHdpbGwgd2FudAordG8gYmUgdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAsIGFuZCBub3QgOmNsYXNzOmBHZW5lcmF0b3JgLgorCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSkKKworICAgUmV0dXJuIGEgOmNsYXNzOmBHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgdGV4dCBwcm92aWRlZCB0byB0aGUgOm1ldGg6YHdyaXRlYAorICAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhCisgICBgYHdyaXRlYGAgbWV0aG9kIHRoYXQgYWNjZXB0cyBzdHJpbmcgZGF0YS4KKworICAgSWYgb3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYGBUcnVlYGAsIHB1dCBhIGBgPmBgIGNoYXJhY3RlciBpbiBmcm9udCBvZgorICAgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZXhhY3Qgc3RyaW5nIGBgIkZyb20gImBgLCB0aGF0IGlzCisgICBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLiAgKm1hbmdsZV9mcm9tXyoKKyAgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1hbmdsZV9mcm9tX2AKKyAgIHNldHRpbmcgb2YgdGhlICpwb2xpY3kqICh3aGljaCBpcyBgYFRydWVgYCBmb3IgdGhlCisgICA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlcnMpLgorICAgKm1hbmdsZV9mcm9tXyogaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdW5peCBtYm94CisgICBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCBhbmQgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAorICAgPGh0dHA6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXykuCisKKyAgIElmICptYXhoZWFkZXJsZW4qIGlzIG5vdCBgYE5vbmVgYCwgcmVmb2xkIGFueSBoZWFkZXIgbGluZXMgdGhhdCBhcmUgbG9uZ2VyCisgICB0aGFuICptYXhoZWFkZXJsZW4qLCBvciBpZiBgYDBgYCwgZG8gbm90IHJld3JhcCBhbnkgaGVhZGVycy4gIElmCisgICAqbWFuaGVhZGVybGVuKiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB3cmFwIGhlYWRlcnMgYW5kIG90aGVyIG1lc3NhZ2UKKyAgIGxpbmVzIGFjY29yZGluZyB0byB0aGUgKnBvbGljeSogc2V0dGluZ3MuCisKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQgcG9saWN5IHRvIGNvbnRyb2wgbWVzc2FnZSBnZW5lcmF0aW9uLiAgSWYKKyAgICpwb2xpY3kqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHVzZSB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCisgICBvYmplY3QgcGFzc2VkIHRvIGBgZmxhdHRlbmBgIHRvIGNvbnRyb2wgdGhlIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIFNlZQorICAgOm1vZDpgZW1haWwucG9saWN5YCBmb3IgZGV0YWlscyBvbiB3aGF0ICpwb2xpY3kqIGNvbnRyb2xzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KKworCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKKworICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKKyAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KKworICAgICAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBpcyBgYDhiaXRgYCwgZ2VuZXJhdGUgdGhlIG1lc3NhZ2UgYXMgaWYgdGhlIG9wdGlvbiB3ZXJlIHNldCB0byBgYDdiaXRgYC4KKyAgICAgIChUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcy4pCisgICAgICBDb252ZXJ0IGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMgbmVlZGVkIHVzaW5nIGFuCisgICAgICBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIFRoYXQgaXMsCisgICAgICB0cmFuc2Zvcm0gcGFydHMgd2l0aCBub24tQVNDSUkgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisKKyAgICAgIElmICp1bml4ZnJvbSogaXMgYGBUcnVlYGAsIHByaW50IHRoZSBlbnZlbG9wZSBoZWFkZXIgZGVsaW1pdGVyIHVzZWQgYnkKKyAgICAgIHRoZSBVbml4IG1haWxib3ggZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGApIGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhlCisgICAgICA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcworICAgICAgbm8gZW52ZWxvcGUgaGVhZGVyLCBjcmFmdCBhIHN0YW5kYXJkIG9uZS4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCisKKyAgICAgIElmICpsaW5lc2VwKiBpcyBub3QgYGBOb25lYGAsIHVzZSBpdCBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3RlciBiZXR3ZWVuCisgICAgICBhbGwgdGhlIGxpbmVzIG9mIHRoZSBmbGF0dGVuZWQgbWVzc2FnZS4gIElmICpsaW5lc2VwKiBpcyBgYE5vbmVgYCAodGhlCisgICAgICBkZWZhdWx0KSwgdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlICpwb2xpY3kqLgorCisgICAgICAuLiBYWFg6IGZsYXR0ZW4gc2hvdWxkIHRha2UgYSAqcG9saWN5KiBrZXl3b3JkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKKyAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KKworCisgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKKworICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGggdGhlCisgICAgICBleGFjdCBzYW1lIG9wdGlvbnMsIGFuZCAqZnAqIGFzIHRoZSBuZXcgKm91dGZwKi4KKworCisgICAuLiBtZXRob2Q6OiB3cml0ZShzKQorCisgICAgICBXcml0ZSAqcyogdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAqb3V0ZnAqIHBhc3NlZCB0byB0aGUKKyAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UKKyAgICAgIEFQSSBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgCisgICAgICBmdW5jdGlvbi4KKworCitBcyBhIGNvbnZlbmllbmNlLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIG1ldGhvZHMKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAgKGEuay5hLgorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5fX3N0cl9fYCksIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mCithIGZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCis6bW9kOmBlbWFpbC5tZXNzYWdlYC4KKworCitUaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsCis6Y2xhc3M6YERlY29kZWRHZW5lcmF0b3JgLCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKK2V4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIG5vdCBzZXJpYWxpemVkLCBidXQgYXJlIGluc3RlYWQKK3JlcHJlc2VudGVkIGluIHRoZSBvdXRwdXQgc3RyZWFtIGJ5IGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIHRlbXBsYXRlIGZpbGxlZAoraW4gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFydC4KKworLi4gY2xhc3M6OiBEZWNvZGVkR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQ9Tm9uZSwgKiwgcG9saWN5PU5vbmUpCisKKyAgIEFjdCBsaWtlIDpjbGFzczpgR2VuZXJhdG9yYCwgZXhjZXB0IHRoYXQgZm9yIGFueSBzdWJwYXJ0IG9mIHRoZSBtZXNzYWdlCisgICBwYXNzZWQgdG8gOm1ldGg6YEdlbmVyYXRvci5mbGF0dGVuYCwgaWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlCisgICA6bWltZXR5cGU6YHRleHRgLCBwcmludCB0aGUgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LCBhbmQgaWYgdGhlIG1haW4KKyAgIHR5cGUgaXMgbm90IDptaW1ldHlwZTpgdGV4dGAsIGluc3RlYWQgb2YgcHJpbnRpbmcgaXQgZmlsbCBpbiB0aGUgc3RyaW5nCisgICAqZm10KiB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJ0IGFuZCBwcmludCB0aGUgcmVzdWx0aW5nCisgICBmaWxsZWQtaW4gc3RyaW5nLgorCisgICBUbyBmaWxsIGluICpmbXQqLCBleGVjdXRlIGBgZm10ICUgcGFydF9pbmZvYGAsIHdoZXJlIGBgcGFydF9pbmZvYGAKKyAgIGlzIGEgZGljdGlvbmFyeSBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIGtleXMgYW5kIHZhbHVlczoKIAogICAgKiBgYHR5cGVgYCAtLSBGdWxsIE1JTUUgdHlwZSBvZiB0aGUgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0CiAKQEAgLTIyNSwxNSArMjU5LDIxIEBACiAKICAgICogYGBlbmNvZGluZ2BgIC0tIENvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcgb2YgdGhlIG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydAogCi0gICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgKmZtdCogaXMgYGBOb25lYGAsIG1lYW5pbmcgOjoKKyAgIElmICpmbXQqIGlzIGBgTm9uZWBgLCB1c2UgdGhlIGZvbGxvd2luZyBkZWZhdWx0ICpmbXQqOgogCi0gICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQorICAgICAgIltOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdIgorCisgICBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZSBhcyB3aXRoIHRoZQorICAgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IgdGhlCi0gICAgICAgYGB1bml4ZnJvbWBgIGFyZ3VtZW50LCBhbmQgdGhhdCB5b3Ugc2V0IG1heGhlYWRlcmxlbj0wICh3aGljaCB3aWxsCi0gICAgICAgcHJlc2VydmUgd2hhdGV2ZXIgdGhlIGlucHV0IGxpbmUgbGVuZ3RocyB3ZXJlKS4gIEl0IGlzIGFsc28gbm90IHN0cmljdGx5Ci0gICAgICAgdHJ1ZSwgc2luY2UgaW4gbWFueSBjYXNlcyBydW5zIG9mIHdoaXRlc3BhY2UgaW4gaGVhZGVycyBhcmUgY29sbGFwc2VkCi0gICAgICAgaW50byBzaW5nbGUgYmxhbmtzLiAgVGhlIGxhdHRlciBpcyBhIGJ1ZyB0aGF0IHdpbGwgZXZlbnR1YWxseSBiZSBmaXhlZC4KKy4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IKKyAgICAgICBgYHVuaXhmcm9tYGAsIGFuZCB0aGF0IHRoZXJlIGFyZSBubyA6bW9kOmBwb2xpY3lgIHNldHRpbmdzIGNhbGxpbmcgZm9yCisgICAgICAgYXV0b21hdGljIGFkanVzdG1lbnRzIChmb3IgZXhhbXBsZSwKKyAgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kucmVmb2xkX3NvdXJjZWAgbXVzdCBiZSBgYG5vbmVgYCwgd2hpY2ggaXMKKyAgICAgICAqbm90KiB0aGUgZGVmYXVsdCkuICBJdCBpcyBhbHNvIG5vdCAxMDAlIHRydWUsIHNpbmNlIGlmIHRoZSBtZXNzYWdlCisgICAgICAgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgUkZDIHN0YW5kYXJkcyBvY2Nhc2lvbmFsbHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICAgZXhhY3Qgb3JpZ2luYWwgdGV4dCBpcyBsb3N0IGR1cmluZyBwYXJzaW5nIGVycm9yIHJlY292ZXJ5LiAgSXQgaXMgYSBnb2FsCisgICAgICAgdG8gZml4IHRoZXNlIGxhdHRlciBlZGdlIGNhc2VzIHdoZW4gcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdAppbmRleCBlOTQ4MzdjLi4wNzE1MmMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKQEAgLTgsNiArOCwxNCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlIGN1cnJlbnQgQVBJCitlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgaGVhZGVycyBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgdGhlCitkaWN0aW9uYXJ5LWxpa2UgQVBJIG9mIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MuICBJbgorYWRkaXRpb24gdG8gdXNlcyBpbiBsZWdhY3kgY29kZSwgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdGhhdAorbmVlZCB0byBjb21wbGV0ZWx5IGNvbnRyb2wgdGhlIGNoYXJhY3RlciBzZXRzIHVzZWQgd2hlbiBlbmNvZGluZyBoZWFkZXJzLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIDpyZmM6YDI4MjJgIGlzIHRoZSBiYXNlIHN0YW5kYXJkIHRoYXQgZGVzY3JpYmVzIHRoZSBmb3JtYXQgb2YgZW1haWwgbWVzc2FnZXMuCiBJdCBkZXJpdmVzIGZyb20gdGhlIG9sZGVyIDpyZmM6YDgyMmAgc3RhbmRhcmQgd2hpY2ggY2FtZSBpbnRvIHdpZGVzcHJlYWQgdXNlIGF0CiBhIHRpbWUgd2hlbiBtb3N0IGVtYWlsIHdhcyBjb21wb3NlZCBvZiBBU0NJSSBjaGFyYWN0ZXJzIG9ubHkuICA6cmZjOmAyODIyYCBpcyBhCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKaW5kZXggMDcwN2JkOC4uMmM4MzBjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdApAQCAtNywyMCArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5YAogCi0uLiBub3RlOjoKLQotICAgVGhlIGhlYWRlcnJlZ2lzdHJ5IG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBtb2R1bGUpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAtLS0tLS0tLS0tLS0tLQogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXworCiBIZWFkZXJzIGFyZSByZXByZXNlbnRlZCBieSBjdXN0b21pemVkIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBzdHJgLiAgVGhlCiBwYXJ0aWN1bGFyIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGEgZ2l2ZW4gaGVhZGVyIGlzIGRldGVybWluZWQgYnkgdGhlCiA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeWAgb2YgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGluCkBAIC04NiwxMCArNzgsMTEgQEAKICAgIC4uIG1ldGhvZDo6IGZvbGQoKiwgcG9saWN5KQogCiAgICAgICBSZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubGluZXNlcGAKLSAgICAgIGNoYXJhY3RlcnMgYXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IGZvbGQgdGhlIGhlYWRlciBhY2NvcmRpbmcKLSAgICAgIHRvICpwb2xpY3kqLiAgQSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIG9mCi0gICAgICBgYDhiaXRgYCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBgYDdiaXRgYCwgc2luY2Ugc3RyaW5ncwotICAgICAgbWF5IG5vdCBjb250YWluIGJpbmFyeSBkYXRhLgorICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZyB0bworICAgICAgKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YgYGA4Yml0YGAgd2lsbCBiZQorICAgICAgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBoZWFkZXJzIG1heSBub3QgY29udGFpbiBhcmJpdHJhcnkKKyAgICAgIGJpbmFyeSBkYXRhLiAgSWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kudXRmOGAgaXMgYGBGYWxzZWBgLAorICAgICAgbm9uLUFTQ0lJIGRhdGEgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkLgogCiAKICAgIGBgQmFzZUhlYWRlcmBgIGJ5IGl0c2VsZiBjYW5ub3QgYmUgdXNlZCB0byBjcmVhdGUgYSBoZWFkZXIgb2JqZWN0LiAgSXQKQEAgLTEwNiw3ICs5OSw3IEBACiAgICB2YWx1ZXMgZm9yIGF0IGxlYXN0IHRoZSBrZXlzIGBgZGVjb2RlZGBgIGFuZCBgYGRlZmVjdHNgYC4gIGBgZGVjb2RlZGBgCiAgICBzaG91bGQgYmUgdGhlIHN0cmluZyB2YWx1ZSBmb3IgdGhlIGhlYWRlciAodGhhdCBpcywgdGhlIGhlYWRlciB2YWx1ZSBmdWxseQogICAgZGVjb2RlZCB0byB1bmljb2RlKS4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFzc3VtZSB0aGF0ICpzdHJpbmcqIG1heQotICAgY29udGFpbiB0cmFuc3BvcnQgZW5jb2RlZCBwYXJ0cywgYnV0IHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFsbCB2YWxpZAorICAgY29udGFpbiBjb250ZW50LXRyYW5zZmVyLWVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKICAgIHVuaWNvZGUgY2hhcmFjdGVycyBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIHBhcnNlIHVuLWVuY29kZWQgaGVhZGVyIHZhbHVlcy4KIAogICAgYGBCYXNlSGVhZGVyYGAncyBgYF9fbmV3X19gYCB0aGVuIGNyZWF0ZXMgdGhlIGhlYWRlciBpbnN0YW5jZSwgYW5kIGNhbGxzIGl0cwpAQCAtMTM1LDExICsxMjgsMTAgQEAKICAgIG1lY2hhbmlzbSBmb3IgZW5jb2Rpbmcgbm9uLUFTQ0lJIHRleHQgYXMgQVNDSUkgY2hhcmFjdGVycyB3aXRoaW4gYSBoZWFkZXIKICAgIHZhbHVlLiAgV2hlbiBhICp2YWx1ZSogY29udGFpbmluZyBlbmNvZGVkIHdvcmRzIGlzIHBhc3NlZCB0byB0aGUKICAgIGNvbnN0cnVjdG9yLCB0aGUgYGBVbnN0cnVjdHVyZWRIZWFkZXJgYCBwYXJzZXIgY29udmVydHMgc3VjaCBlbmNvZGVkIHdvcmRzCi0gICBiYWNrIGluIHRvIHRoZSBvcmlnaW5hbCB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvcgotICAgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluCi0gICBub24tY29tcGxpYW50IGVuY29kZWQgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwKLSAgIGFzIGRlZmVjdHMgZm9yIGlzc3VlcyBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IKLSAgIHRoZSBub24tZW5jb2RlZCB0ZXh0LgorICAgaW50byB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvciB1bnN0cnVjdHVyZWQgdGV4dC4gIFRoZQorICAgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluIG5vbi1jb21wbGlhbnQgZW5jb2RlZAorICAgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwgYXMgZGVmZWN0cyBmb3IgaXNzdWVzCisgICBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IgdGhlIG5vbi1lbmNvZGVkIHRleHQuCiAKICAgIFRoaXMgaGVhZGVyIHR5cGUgcHJvdmlkZXMgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLgogCkBAIC0yMTMsMTUgKzIwNSwxNiBAQAogICAgICAgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzICJmbGF0dGVuZWQiIGludG8gYSBvbmUgZGltZW5zaW9uYWwgbGlzdCkuCiAKICAgIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBvZiB0aGUgaGVhZGVyIHdpbGwgaGF2ZSBhbGwgZW5jb2RlZCB3b3JkcyBkZWNvZGVkIHRvCi0gICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8gdW5pY29kZS4gIFRoZQotICAgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlIDpjbGFzczpgc3RyYCB2YWx1ZSBvZgotICAgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywgJ2BgLgorICAgdW5pY29kZS4gIDpjbGFzczpgfmVuY29kaW5ncy5pZG5hYCBlbmNvZGVkIGRvbWFpbiBuYW1lcyBhcmUgYWxzbyBkZWNvZGVkIHRvCisgICB1bmljb2RlLiAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIGlzIHNldCBieSA6YXR0cjpgfnN0ci5qb2luYFwgaW5nIHRoZQorICAgOmNsYXNzOmBzdHJgIHZhbHVlIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgd2l0aCBgYCcsCisgICAnYGAuCiAKICAgIEEgbGlzdCBvZiA6Y2xhc3M6YC5BZGRyZXNzYCBhbmQgOmNsYXNzOmAuR3JvdXBgIG9iamVjdHMgaW4gYW55IGNvbWJpbmF0aW9uCiAgICBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIG9mIGFuIGFkZHJlc3MgaGVhZGVyLiAgYGBHcm91cGBgIG9iamVjdHMgd2hvc2UKICAgIGBgZGlzcGxheV9uYW1lYGAgaXMgYGBOb25lYGAgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBzaW5nbGUgYWRkcmVzc2VzLCB3aGljaAogICAgYWxsb3dzIGFuIGFkZHJlc3MgbGlzdCB0byBiZSBjb3BpZWQgd2l0aCBncm91cHMgaW50YWN0IGJ5IHVzaW5nIHRoZSBsaXN0Ci0gICBvYnRhaW5lZCBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSBvZiB0aGUgc291cmNlIGhlYWRlci4KKyAgIG9idGFpbmVkIGZyb20gdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIG9mIHRoZSBzb3VyY2UgaGVhZGVyLgogCiAKIC4uIGNsYXNzOjogU2luZ2xlQWRkcmVzc0hlYWRlcgpAQCAtMjY3LDcgKzI2MCw3IEBACiAKIC4uIGNsYXNzOjogUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIKIAotICAgIE1PTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKKyAgICBNSU1FIGhlYWRlcnMgYWxsIHN0YXJ0IHdpdGggdGhlIHByZWZpeCAnQ29udGVudC0nLiAgRWFjaCBzcGVjaWZpYyBoZWFkZXIgaGFzCiAgICAgYSBjZXJ0YWluIHZhbHVlLCBkZXNjcmliZWQgdW5kZXIgdGhlIGNsYXNzIGZvciB0aGF0IGhlYWRlci4gIFNvbWUgY2FuCiAgICAgYWxzbyB0YWtlIGEgbGlzdCBvZiBzdXBwbGVtZW50YWwgcGFyYW1ldGVycywgd2hpY2ggaGF2ZSBhIGNvbW1vbiBmb3JtYXQuCiAgICAgVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBiYXNlIGZvciBhbGwgdGhlIE1JTUUgaGVhZGVycyB0aGF0IHRha2UgcGFyYW1ldGVycy4KQEAgLTQ1NCwzICs0NDcsOSBAQAogICAgICAgYGBkaXNwbGF5X25hbWVgYCBpcyBub25lIGFuZCB0aGVyZSBpcyBhIHNpbmdsZSBgYEFkZHJlc3NgYCBpbiB0aGUKICAgICAgIGBgYWRkcmVzc2VzYGAgbGlzdCwgdGhlIGBgc3RyYGAgdmFsdWUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgYGBzdHJgYCBvZgogICAgICAgdGhhdCBzaW5nbGUgYGBBZGRyZXNzYGAuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy4zIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggMjkwNzk3NS4uOTUxMzZkMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTMsOTEgKzMsMTAyIEBACiAKIC4uIG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKICAgIDpzeW5vcHNpczogVGhlIGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGVtYWlsIG1lc3NhZ2VzLgorLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+LAorICAgICAgICAgICAgICAgICAgIEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvbWVzc2FnZS5weWAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlIGNlbnRyYWwgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzLAotaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLiAgSXQgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZQotOm1vZDpgZW1haWxgIG9iamVjdCBtb2RlbC4gIDpjbGFzczpgTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IKLXNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGFuZCBmb3IgYWNjZXNzaW5nIG1lc3NhZ2UgYm9kaWVzLgorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KIAotQ29uY2VwdHVhbGx5LCBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgKnBheWxvYWRzKi4KLUhlYWRlcnMgYXJlIDpyZmM6YDI4MjJgIHN0eWxlIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kCi12YWx1ZSBhcmUgc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24gaXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lCi1vciB0aGUgZmllbGQgdmFsdWUuCitUaGUgY2VudHJhbCBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4gIEl0IGlzIHRoZSBiYXNlIGNsYXNzIGZvcgordGhlIDptb2Q6YGVtYWlsYCBvYmplY3QgbW9kZWwuICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUKK2Z1bmN0aW9uYWxpdHkgZm9yIHNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGZvciBhY2Nlc3NpbmcgbWVzc2FnZQorYm9kaWVzLCBhbmQgZm9yIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBzdHJ1Y3R1cmVkIG1lc3NhZ2VzLgogCi1IZWFkZXJzIGFyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtIGJ1dCBhcmUgbWF0Y2hlZAotY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVGhlcmUgbWF5IGFsc28gYmUgYSBzaW5nbGUgZW52ZWxvcGUgaGVhZGVyLCBhbHNvIGtub3duIGFzCi10aGUgKlVuaXgtRnJvbSogaGVhZGVyIG9yIHRoZSBgYEZyb21fYGAgaGVhZGVyLiAgVGhlIHBheWxvYWQgaXMgZWl0aGVyIGEgc3RyaW5nCi1pbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZSBvYmplY3RzIG9yIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgZm9yCi1NSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4gOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZAotOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqICh3aGljaCBpcyBhbHNvIHJlZmVycmVkCit0byBhcyB0aGUgKmNvbnRlbnQqKS4gIEhlYWRlcnMgYXJlIDpyZmM6YDUzMjJgIG9yIDpyZmM6YDY1MzJgIHN0eWxlIGZpZWxkIG5hbWVzCithbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uCitpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlIGZpZWxkIHZhbHVlLiAgVGhlIHBheWxvYWQgbWF5IGJlIGEKK3NpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IgYSBzdHJ1Y3R1cmVkIHNlcXVlbmNlIG9mCitzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQgdGhlaXIgb3duIHBheWxvYWQuICBUaGUKK2xhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlIGhhdmluZyBhIE1JTUUgdHlwZSBzdWNoIGFzCis6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCiAKLTpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBwcm92aWRlIGEgbWFwcGluZyBzdHlsZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLW1lc3NhZ2UgaGVhZGVycywgYW5kIGFuIGV4cGxpY2l0IGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIGJvdGggdGhlIGhlYWRlcnMgYW5kCi10aGUgcGF5bG9hZC4gIEl0IHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGdlbmVyYXRpbmcgYSBmbGF0IHRleHQKLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCB0cmVlLCBmb3IgYWNjZXNzaW5nIGNvbW1vbmx5IHVzZWQgaGVhZGVyCi1wYXJhbWV0ZXJzLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcgb3ZlciB0aGUgb2JqZWN0IHRyZWUuCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhbiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIGNvdXBsZWQgd2l0aCBhICpwYXlsb2FkKiB0aGF0IHJlcHJlc2VudHMgdGhlCis6cmZjOmA1MzIyYCBib2R5IG9mIHRoZSBtZXNzYWdlLCB3aGljaCBtaWdodCBiZSBhIGxpc3Qgb2Ygc3ViLWBgRW1haWxNZXNzYWdlYGAKK29iamVjdHMuICBJbiBhZGRpdGlvbiB0byB0aGUgbm9ybWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIHRoZSBoZWFkZXIKK25hbWVzIGFuZCB2YWx1ZXMsIHRoZXJlIGFyZSBtZXRob2RzIGZvciBhY2Nlc3Npbmcgc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbQordGhlIGhlYWRlcnMgKGZvciBleGFtcGxlIHRoZSBNSU1FIGNvbnRlbnQgdHlwZSksIGZvciBvcGVyYXRpbmcgb24gdGhlIHBheWxvYWQsCitmb3IgZ2VuZXJhdGluZyBhIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nCitvdmVyIHRoZSBvYmplY3QgdHJlZS4KIAotSGVyZSBhcmUgdGhlIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3M6CitUaGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIGRpY3Rpb25hcnktbGlrZSBpbnRlcmZhY2UgaXMgaW5kZXhlZCBieSB0aGUgaGVhZGVyCituYW1lcywgd2hpY2ggbXVzdCBiZSBBU0NJSSB2YWx1ZXMuICBUaGUgdmFsdWVzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSBzdHJpbmdzCit3aXRoIHNvbWUgZXh0cmEgbWV0aG9kcy4gIEhlYWRlcnMgYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nCitmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVW5saWtlIGEgcmVhbCBkaWN0LAordGhlcmUgaXMgYW4gb3JkZXJpbmcgdG8gdGhlIGtleXMsIGFuZCB0aGVyZSBjYW4gYmUgZHVwbGljYXRlIGtleXMuICBBZGRpdGlvbmFsCittZXRob2RzIGFyZSBwcm92aWRlZCBmb3Igd29ya2luZyB3aXRoIGhlYWRlcnMgdGhhdCBoYXZlIGR1cGxpY2F0ZSBrZXlzLgorCitUaGUgKnBheWxvYWQqIGlzIGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3QsIGluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlCitvYmplY3RzLCBvciBhIGxpc3Qgb2YgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lcgorZG9jdW1lbnRzIHN1Y2ggYXMgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYAorbWVzc2FnZSBvYmplY3RzLgogCiAKLS4uIGNsYXNzOjogTWVzc2FnZShwb2xpY3k9Y29tcGF0MzIpCisuLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKIAotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVkcGF0ZSBhbmQgc2VyaWFsaXplCisgICB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuZGVmYXVsdGAgcG9saWN5LCB3aGljaCBmb2xsb3dzIHRoZSBydWxlcyBvZiB0aGUgZW1haWwKKyAgIFJGQ3MgZXhjZXB0IGZvciBsaW5lIGVuZGluZ3MgKGluc3RlYWQgb2YgdGhlIFJGQyBtYW5kYXRlZCBgYFxyXG5gYCwgaXQgdXNlcworICAgdGhlIFB5dGhvbiBzdGFuZGFyZCBgYFxuYGAgbGluZSBlbmRpbmdzKS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKICAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIFRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPU5vbmUsIHBvbGljeT1Ob25lKQogCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwKKyAgICAgICp1bml4ZnJvbSogaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZy4gICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkKKyAgICAgIHdpdGggdGhlIGJhc2UgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyAqbWF4aGVhZGVybGVuKiBpcworICAgICAgYWNjZXB0ZWQsIGJ1dCBkZWZhdWx0cyB0byBgYE5vbmVgYCwgd2hpY2ggbWVhbnMgdGhhdCBieSBkZWZhdWx0IHRoZSBsaW5lCisgICAgICBsZW5ndGggaXMgY29udHJvbGxlZCBieSB0aGUKKyAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5Lm1heF9saW5lX2xlbmd0aGAgb2YgdGhlIHBvbGljeS4gIFRoZQorICAgICAgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkCisgICAgICBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlCisgICAgICBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZSBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZQorICAgICAgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYC4KIAotICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgICAgaWYgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEKKyAgICAgIHN0cmluZyAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KIAotICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsICp1bml4ZnJvbSoKLSAgICAgIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIHN0cmluZy4KLSAgICAgICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkgcmVhc29ucywKLSAgICAgICptYXhoZWFkZXJsZW4qIGRlZmF1bHRzIHRvIGBgMGBgLCBzbyBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCB2YWx1ZSB5b3UKLSAgICAgIG11c3Qgb3ZlcnJpZGUgaXQgZXhwbGljaXRseSAodGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgKm1heF9saW5lX2xlbmd0aCogaW4KLSAgICAgIHRoZSBwb2xpY3kgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoaXMgbWV0aG9kKS4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKLSAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCi0gICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKLSAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYGBHZW5lcmF0b3JgYC4KKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBmb3IgYSBtb3JlIGZsZXhpYmxlIEFQSSBmb3IKKyAgICAgIHNlcmlhbGl6aW5nIG1lc3NhZ2VzLiAgTm90ZSBhbHNvIHRoYXQgdGhpcyBtZXRob2QgaXMgcmVzdHJpY3RlZCB0bworICAgICAgcHJvZHVjaW5nIG1lc3NhZ2VzIHNlcmlhbGl6ZWQgYXMgIjcgYml0IGNsZWFuIiB3aGVuCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4YCBpcyBgYEZhbHNlYGAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgogCi0gICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKLSAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZwotICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCi0KLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cwotICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4gIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IKLSAgICAgICAgIGZwID0gU3RyaW5nSU8oKQotICAgICAgICAgZyA9IEdlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZCBhY2NvcmRpbmcKLSAgICAgIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieSB1bmljb2RlCi0gICAgICAidW5rbm93biBjaGFyYWN0ZXIiIGNvZGUgcG9pbnRzLiAgKFNlZSBhbHNvIDptZXRoOmAuYXNfYnl0ZXNgIGFuZAotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4pCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gKm1heGhlYWRlcmxlbioKKyAgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgd2FzIGNoYW5nZWQgZnJvbSBkZWZhdWx0aW5nIHRvIDAgdG8gZGVmYXVsdGluZworICAgICAgICAgdG8gdGhlIHZhbHVlIG9mICptYXhfbGluZV9sZW5ndGgqIGZyb20gdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKIAotICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX3N0cmluZygpYC4gIEFsbG93cyBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhCi0gICAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisgICAgICBFcXVpdmFsZW50IHRvIGBhc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSlgLiAgQWxsb3dzCisgICAgICBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UgaW4gYQorICAgICAgcmVhZGFibGUgZm9ybWF0LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgbWV0aG9kIHdhcyBjaGFuZ2VkIHRvIHVzZSBgYHV0Zjg9VHJ1ZWBgLAorICAgICAgICAgdGh1cyBwcm9kdWNpbmcgYW4gOnJmYzpgNjUzMWAtbGlrZSBtZXNzYWdlIHJlcHJlc2VudGF0aW9uLCBpbnN0ZWFkIG9mCisgICAgICAgICBiZWluZyBhIGRpcmVjdCBhbGlhcyBmb3IgOm1ldGg6YGFzX3N0cmluZ2AuCiAKIAogICAgLi4gbWV0aG9kOjogYXNfYnl0ZXModW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKQpAQCAtOTgsNTIgKzEwOSw0MiBAQAogICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQogICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQotICAgICAgYGBCeXRlc0dlbmVyYXRvcmBgLgorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4KIAotICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCi0gICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKLSAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgICAgIGlmIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhCisgICAgICBzdHJpbmcgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCiAKLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCi0gICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuCi0gICAgICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgotICAgICAgICAgZnAgPSBCeXRlc0lPKCkKLSAgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGZvciBhIG1vcmUgZmxleGlibGUgQVBJIGZvcgorICAgICAgc2VyaWFsaXppbmcgbWVzc2FnZXMuCiAKIAogICAgLi4gbWV0aG9kOjogX19ieXRlc19fKCkKIAogICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX2J5dGVzKClgLiAgQWxsb3dzIGBgYnl0ZXMobXNnKWBgIHRvIHByb2R1Y2UgYQotICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UuCiAKIAogICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCiAgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCi0gICAgICBvYmplY3QuICAoTm90ZSB0aGF0IDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdAotICAgICAgbmVjZXNzYXJpbHkgbWVhbiB0aGF0ICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbAotICAgICAgcmV0dXJuIHRoZSBgYFRydWVgYC4gICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYAotICAgICAgd2hlbiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4pCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQpLiAgTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuCiAKIAogICAgLi4gbWV0aG9kOjogc2V0X3VuaXhmcm9tKHVuaXhmcm9tKQogCi0gICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEgc3RyaW5nLgorICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhCisgICAgICBzdHJpbmcuICAoU2VlIDpjbGFzczpgfm1haWxib3gubWJveE1lc3NhZ2VgIGZvciBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mCisgICAgICB0aGlzIGhlYWRlci4pCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKQEAgLTE1MiwxMDkgKzE1MywyMyBAQAogICAgICAgZW52ZWxvcGUgaGVhZGVyIHdhcyBuZXZlciBzZXQuCiAKIAotICAgLi4gbWV0aG9kOjogYXR0YWNoKHBheWxvYWQpCi0KLSAgICAgIEFkZCB0aGUgZ2l2ZW4gKnBheWxvYWQqIHRvIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIG11c3QgYmUgYGBOb25lYGAgb3IKLSAgICAgIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgYmVmb3JlIHRoZSBjYWxsLiBBZnRlciB0aGUgY2FsbCwgdGhlCi0gICAgICBwYXlsb2FkIHdpbGwgYWx3YXlzIGJlIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMuICBJZiB5b3Ugd2FudCB0bwotICAgICAgc2V0IHRoZSBwYXlsb2FkIHRvIGEgc2NhbGFyIG9iamVjdCAoZS5nLiBhIHN0cmluZyksIHVzZQotICAgICAgOm1ldGg6YHNldF9wYXlsb2FkYCBpbnN0ZWFkLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQotCi0gICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCi0gICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKLSAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCi0KLSAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKLSAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKLSAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCi0gICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQotICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCi0gICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KLQotICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKLSAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKLSAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgotICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKLSAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcwotICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQotICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKLSAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKLSAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKLSAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCi0gICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKLSAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCi0KLSAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKLSAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCi0gICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCi0gICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgotICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90Ci0gICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0Ci0gICAgICBBU0NJSSBjaGFyc2V0LgotCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9wYXlsb2FkKHBheWxvYWQsIGNoYXJzZXQ9Tm9uZSkKLQotICAgICAgU2V0IHRoZSBlbnRpcmUgbWVzc2FnZSBvYmplY3QncyBwYXlsb2FkIHRvICpwYXlsb2FkKi4gIEl0IGlzIHRoZSBjbGllbnQncwotICAgICAgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoZSBwYXlsb2FkIGludmFyaWFudHMuICBPcHRpb25hbCAqY2hhcnNldCogc2V0cwotICAgICAgdGhlIG1lc3NhZ2UncyBkZWZhdWx0IGNoYXJhY3RlciBzZXQ7IHNlZSA6bWV0aDpgc2V0X2NoYXJzZXRgIGZvciBkZXRhaWxzLgotCi0gICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQotCi0gICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKLSAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCi0gICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCi0gICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCi0gICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgotCi0gICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKLSAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKLSAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCi0gICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCi0gICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKLSAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKLSAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCi0gICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCi0gICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCi0gICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCi0KLSAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KLQotICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBhIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLSAgIG1lc3NhZ2UncyA6cmZjOmAyODIyYCBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHRoZSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCisgICBtZXNzYWdlJ3MgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcwogICAgYmV0d2VlbiB0aGVzZSBtZXRob2RzIGFuZCBhIG5vcm1hbCBtYXBwaW5nIChpLmUuIGRpY3Rpb25hcnkpIGludGVyZmFjZS4gIEZvcgogICAgZXhhbXBsZSwgaW4gYSBkaWN0aW9uYXJ5IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5cywgYnV0IGhlcmUgdGhlcmUgbWF5IGJlCiAgICBkdXBsaWNhdGUgbWVzc2FnZSBoZWFkZXJzLiAgQWxzbywgaW4gZGljdGlvbmFyaWVzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZWQKLSAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QsCi0gICBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCi0gICBtZXNzYWdlLCBvciB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55IGhlYWRlciBkZWxldGVkIGFuZCB0aGVuCi0gICByZS1hZGRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGhlYWRlciBsaXN0LgorICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYW4gOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICBvYmplY3QsIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUKKyAgIG9yaWdpbmFsIG1lc3NhZ2UsIG9yIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueQorICAgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4gcmUtYWRkZWQgaXMgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlCisgICBoZWFkZXIgbGlzdC4KIAotICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCi0gICBjb252ZW5pZW5jZS4KKyAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQKKyAgIGNvbnZlbmllbmNlIGluIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZXMuCiAKICAgIE5vdGUgdGhhdCBpbiBhbGwgY2FzZXMsIGFueSBlbnZlbG9wZSBoZWFkZXIgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBpcyBub3QKICAgIGluY2x1ZGVkIGluIHRoZSBtYXBwaW5nIGludGVyZmFjZS4KIAotICAgSW4gYSBtb2RlbCBnZW5lcmF0ZWQgZnJvbSBieXRlcywgYW55IGhlYWRlciB2YWx1ZXMgdGhhdCAoaW4gY29udHJhdmVudGlvbiBvZgotICAgdGhlIFJGQ3MpIGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzIHdpbGwsIHdoZW4gcmV0cmlldmVkIHRocm91Z2ggdGhpcwotICAgaW50ZXJmYWNlLCBiZSByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3RzIHdpdGgKLSAgIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KLQogCiAgICAuLiBtZXRob2Q6OiBfX2xlbl9fKCkKIApAQCAtMjY0LDggKzE3OSw4IEBACiAgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKIAogICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKLSAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KLSAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorICAgICAgZG9uZSB3aXRob3V0IHJlZ2FyZCB0byBjYXNlIGFuZCAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcKKyAgICAgIGNvbG9uLiAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvci4gIEZvciBleGFtcGxlOjoKIAogICAgICAgICAgICBpZiAnbWVzc2FnZS1pZCcgaW4gbXlNZXNzYWdlOgogICAgICAgICAgICAgICBwcmludCgnTWVzc2FnZS1JRDonLCBteU1lc3NhZ2VbJ21lc3NhZ2UtaWQnXSkKQEAgLTI3MywyMCArMTg4LDIzIEBACiAKICAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCiAKLSAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUKICAgICAgIGNvbG9uIGZpZWxkIHNlcGFyYXRvci4gIElmIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgYGBOb25lYGAgaXMgcmV0dXJuZWQ7IGEKICAgICAgIDpleGM6YEtleUVycm9yYCBpcyBuZXZlciByYWlzZWQuCiAKICAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbmFtZWQgZmllbGQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgbWVzc2FnZSdzCiAgICAgICBoZWFkZXJzLCBleGFjdGx5IHdoaWNoIG9mIHRob3NlIGZpZWxkIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkIGlzCiAgICAgICB1bmRlZmluZWQuICBVc2UgdGhlIDptZXRoOmBnZXRfYWxsYCBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgYWxsIHRoZQotICAgICAgZXh0YW50IG5hbWVkIGhlYWRlcnMuCisgICAgICBleHRhbnQgaGVhZGVycyBuYW1lZCAqbmFtZSouCisKKyAgICAgIFVzaW5nIHRoZSBzdGFuZGFyZCAobm9uLWBgY29tcGF0MzJgYCkgcG9saWNpZXMsIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbgorICAgICAgaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXJgLgogCiAKICAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKIAogICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCi0gICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGhlYWRlcnMuCiAKICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgKm5vdCogb3ZlcndyaXRlIG9yIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUKICAgICAgIG5hbWUuICBJZiB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IGhlYWRlciBpcyB0aGUgb25seSBvbmUgcHJlc2VudCBpbiB0aGUKQEAgLTI5NSw2ICsyMTMsMTMgQEAKICAgICAgICAgIGRlbCBtc2dbJ3N1YmplY3QnXQogICAgICAgICAgbXNnWydzdWJqZWN0J10gPSAnUHl0aG9uIHJvb2x6IScKIAorICAgICAgSWYgdGhlIDptb2Q6YHBvbGljeWAgZGVmaW5lcyBjZXJ0YWluIGhhZGVycyB0byBiZSB1bmlxdWUgKGFzIHRoZSBzdGFuZGFyZAorICAgICAgcG9saWNpZXMgZG8pLCB0aGlzIG1ldGhvZCBtYXkgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIGFuIGF0dGVtcHQKKyAgICAgIGlzIG1hZGUgdG8gYXNzaWduIGEgdmFsdWUgdG8gc3VjaCBhIGhlYWRlciB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4gIFRoaXMKKyAgICAgIGJlaGF2aW9yIGlzIGludGVudGlvbmFsIGZvciBjb25zaXN0ZW5jeSdzIHNha2UsIGJ1dCBkbyBub3QgZGVwZW5kIG9uIGl0CisgICAgICBhcyB3ZSBtYXkgY2hvb3NlIHRvIG1ha2Ugc3VjaCBhc3NpZ25tZW50cyBkbyBhbiBhdXRvbWF0aWMgZGVsZXRpb24gb2YgdGhlCisgICAgICBleGlzdGluZyBoZWFkZXIgaW4gdGhlIGZ1dHVyZS4KKwogCiAgICAuLiBtZXRob2Q6OiBfX2RlbGl0ZW1fXyhuYW1lKQogCkBAIC0zMjMsOSArMjQ4LDEwIEBACiAKICAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCiAgICAgICA6bWV0aDpgX19nZXRpdGVtX19gIGV4Y2VwdCB0aGF0IG9wdGlvbmFsICpmYWlsb2JqKiBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoKmZhaWxvYmoqIGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KIAotICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBtZXRob2RzOgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIGhlYWRlciByZWxhdGVkIG1ldGhvZHM6CiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCkBAIC0zNDYsMTcgKzI3MiwxOSBAQAogICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCiAgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKICAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCi0gICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKLSAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0Ci0gICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKLSAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0Ci0gICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAotICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKLSAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAotICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCi0gICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuCiAKLSAgICAgIEhlcmUncyBhbiBleGFtcGxlOjoKKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgdGhlIGNoYXJzZXQgYW5kIGxhbmd1YWdlIG1heQorICAgICAgYmUgZXhwbGljaXRseSBjb250cm9sbGVkIGJ5IHNwZWNpZmluZyB0aGUgdmFsdWUgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUKKyAgICAgIGZvcm1hdCBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nCisgICAgICBuYW1pbmcgdGhlIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuCisgICAgICB1c3VhbGx5IGJlIHNldCB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyCisgICAgICBwb3NzaWJpbGl0aWVzKSwgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJCisgICAgICBjb2RlIHBvaW50cy4gIElmIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zCisgICAgICBub24tQVNDSUkgY2hhcmFjdGVycywgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdAorICAgICAgdXNpbmcgYSBgYENIQVJTRVRgYCBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorCisgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6OgogCiAgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywgZmlsZW5hbWU9J2J1ZC5naWYnKQogCkBAIC0zNjQsMzcgKzI5MiwzNSBAQAogCiAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iYnVkLmdpZiIKIAotICAgICAgQW4gZXhhbXBsZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKKyAgICAgIEFuIGV4YW1wbGUgb2YgdGhlIGV4dGVuZGVkIGludGVyZmFjZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKIAogICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0oJ2lzby04ODU5LTEnLCAnJywgJ0Z1w59iYWxsZXIucHB0JykpCiAKLSAgICAgIFdoaWNoIHByb2R1Y2VzIDo6Ci0KLSAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj0iaXNvLTg4NTktMScnRnUlREZiYWxsZXIucHB0IgotCiAKICAgIC4uIG1ldGhvZDo6IHJlcGxhY2VfaGVhZGVyKF9uYW1lLCBfdmFsdWUpCiAKICAgICAgIFJlcGxhY2UgYSBoZWFkZXIuICBSZXBsYWNlIHRoZSBmaXJzdCBoZWFkZXIgZm91bmQgaW4gdGhlIG1lc3NhZ2UgdGhhdAotICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2UuICBJZiBubwotICAgICAgbWF0Y2hpbmcgaGVhZGVyIHdhcyBmb3VuZCwgYSA6ZXhjOmBLZXlFcnJvcmAgaXMgcmFpc2VkLgorICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2Ugb2YgdGhlCisgICAgICBvcmlnaW5hbCBoZWFkZXIuICBJZiBubyBtYXRjaGluZyBoZWFkZXIgaXMgZm91bmQsIHJhaXNlIGEKKyAgICAgIDpleGM6YEtleUVycm9yYC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF90eXBlKCkKIAotICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBjb2VyY2VkIHRvCi0gICAgICBsb3dlciBjYXNlIG9mIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSB3YXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbWVzc2FnZSB0aGUgZGVmYXVsdCB0eXBlIGFzIGdpdmVuCi0gICAgICBieSA6bWV0aDpgZ2V0X2RlZmF1bHRfdHlwZWAgd2lsbCBiZSByZXR1cm5lZC4gIFNpbmNlIGFjY29yZGluZyB0bwotICAgICAgOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLCA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAKLSAgICAgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLgorICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLCBjb2VyY2VkIHRvIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0KKyAgICAgIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSBpcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHJldHVybiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKyAgICAgIDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYC4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMKKyAgICAgIGludmFsaWQsIHJldHVybiBgYHRleHQvcGxhaW5gYC4KIAotICAgICAgOnJmYzpgMjA0NWAgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYAotICAgICAgdW5sZXNzIGl0IGFwcGVhcnMgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluCi0gICAgICB3aGljaCBjYXNlIGl0IHdvdWxkIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLAotICAgICAgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdCB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuCisgICAgICAoQWNjb3JkaW5nIHRvIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwKKyAgICAgIDptZXRoOmBnZXRfY29udGVudF90eXBlYCB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4gIDpyZmM6YDIwNDVgIGRlZmluZXMKKyAgICAgIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gIHVubGVzcyBpdCBhcHBlYXJzCisgICAgICBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSBpdCB3b3VsZAorICAgICAgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyCisgICAgICBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sIDpyZmM6YDIwNDVgIG1hbmRhdGVzIHRoYXQgdGhlIGRlZmF1bHQKKyAgICAgIHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4pCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKQpAQCAtNDIwLDgxICszNDYsNDEgQEAKICAgIC4uIG1ldGhvZDo6IHNldF9kZWZhdWx0X3R5cGUoY3R5cGUpCiAKICAgICAgIFNldCB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUuICAqY3R5cGUqIHNob3VsZCBlaXRoZXIgYmUKLSAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAsIGFsdGhvdWdoIHRoaXMgaXMgbm90Ci0gICAgICBlbmZvcmNlZC4gIFRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RvcmVkIGluIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbXMoZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKLQotICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgcGFyYW1ldGVycywgYXMgYSBsaXN0LgotICAgICAgVGhlIGVsZW1lbnRzIG9mIHRoZSByZXR1cm5lZCBsaXN0IGFyZSAyLXR1cGxlcyBvZiBrZXkvdmFsdWUgcGFpcnMsIGFzCi0gICAgICBzcGxpdCBvbiB0aGUgYGAnPSdgYCBzaWduLiAgVGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBgYCc9J2BgIGlzIHRoZSBrZXksCi0gICAgICB3aGlsZSB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHRoZSB2YWx1ZS4gIElmIHRoZXJlIGlzIG5vIGBgJz0nYGAgc2lnbiBpbgotICAgICAgdGhlIHBhcmFtZXRlciB0aGUgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBhcwotICAgICAgZGVzY3JpYmVkIGluIDptZXRoOmBnZXRfcGFyYW1gIGFuZCBpcyB1bnF1b3RlZCBpZiBvcHRpb25hbCAqdW5xdW90ZSogaXMKLSAgICAgIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkuCi0KLSAgICAgIE9wdGlvbmFsICpmYWlsb2JqKiBpcyB0aGUgb2JqZWN0IHRvIHJldHVybiBpZiB0aGVyZSBpcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgT3B0aW9uYWwgKmhlYWRlciogaXMgdGhlIGhlYWRlciB0bwotICAgICAgc2VhcmNoIGluc3RlYWQgb2YgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtKHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQotCi0gICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIncyBwYXJhbWV0ZXIKLSAgICAgICpwYXJhbSogYXMgYSBzdHJpbmcuICBJZiB0aGUgbWVzc2FnZSBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKLSAgICAgIGhlYWRlciBvciBpZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciwgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQKLSAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCi0KLSAgICAgIE9wdGlvbmFsICpoZWFkZXIqIGlmIGdpdmVuLCBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIHVzZSBpbnN0ZWFkIG9mCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KLQotICAgICAgUGFyYW1ldGVyIGtleXMgYXJlIGFsd2F5cyBjb21wYXJlZCBjYXNlIGluc2Vuc2l0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlCi0gICAgICBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgOnJmYzpgMjIzMWAKLSAgICAgIGVuY29kZWQuICBXaGVuIGl0J3MgYSAzLXR1cGxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBvZiB0aGUgZm9ybQotICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLiAgTm90ZSB0aGF0IGJvdGggYGBDSEFSU0VUYGAgYW5kCi0gICAgICBgYExBTkdVQUdFYGAgY2FuIGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHlvdSBzaG91bGQgY29uc2lkZXIgYGBWQUxVRWBgCi0gICAgICB0byBiZSBlbmNvZGVkIGluIHRoZSBgYHVzLWFzY2lpYGAgY2hhcnNldC4gIFlvdSBjYW4gdXN1YWxseSBpZ25vcmUKLSAgICAgIGBgTEFOR1VBR0VgYC4KLQotICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBlbmNvZGVkIGFzIGluCi0gICAgICA6cmZjOmAyMjMxYCwgeW91IGNhbiBjb2xsYXBzZSB0aGUgcGFyYW1ldGVyIHZhbHVlIGJ5IGNhbGxpbmcKLSAgICAgIDpmdW5jOmBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlYCwgcGFzc2luZyBpbiB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICBmcm9tIDptZXRoOmBnZXRfcGFyYW1gLiAgVGhpcyB3aWxsIHJldHVybiBhIHN1aXRhYmx5IGRlY29kZWQgVW5pY29kZQotICAgICAgc3RyaW5nIHdoZW4gdGhlIHZhbHVlIGlzIGEgdHVwbGUsIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgdW5xdW90ZWQgaWYgaXQKLSAgICAgIGlzbid0LiAgRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICByYXdwYXJhbSA9IG1zZy5nZXRfcGFyYW0oJ2ZvbycpCi0gICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCi0KLSAgICAgIEluIGFueSBjYXNlLCB0aGUgcGFyYW1ldGVyIHZhbHVlIChlaXRoZXIgdGhlIHJldHVybmVkIHN0cmluZywgb3IgdGhlCi0gICAgICBgYFZBTFVFYGAgaXRlbSBpbiB0aGUgMy10dXBsZSkgaXMgYWx3YXlzIHVucXVvdGVkLCB1bmxlc3MgKnVucXVvdGUqIGlzIHNldAotICAgICAgdG8gYGBGYWxzZWBgLgorICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcworICAgICAgbm90IGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHNvIGl0IG9ubHkgYWZmZWN0cyB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgICB0aGUgYGBnZXRfY29udGVudF90eXBlYGAgbWV0aG9kcyB3aGVuIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgbWVzc2FnZS4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXRfcGFyYW0ocGFyYW0sIHZhbHVlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9JycsIHJlcGxhY2U9RmFsc2UpCiAKICAgICAgIFNldCBhIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYgdGhlCi0gICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aAotICAgICAgKnZhbHVlKi4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXMgbm90IHlldCBiZWVuIGRlZmluZWQKLSAgICAgIGZvciB0aGlzIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgYW5kIHRoZSBuZXcKLSAgICAgIHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGFzIHBlciA6cmZjOmAyMDQ1YC4KKyAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCByZXBsYWNlIGl0cyB2YWx1ZSB3aXRoICp2YWx1ZSouCisgICAgICBXaGVuICpoZWFkZXIqIGlzIGBgQ29udGVudC1UeXBlYGAgKHRoZSBkZWZhdWx0KSBhbmQgdGhlIGhlYWRlciBkb2VzIG5vdAorICAgICAgeWV0IGV4aXN0IGluIHRoZSBtZXNzYWdlLCBhZGQgaXQsIHNldCBpdHMgdmFsdWUgdG8KKyAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAsIGFuZCBhcHBlbmQgdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWUuICBPcHRpb25hbAorICAgICAgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KIAotICAgICAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0bwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAsIGFuZCBhbGwgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkKLSAgICAgIHVubGVzcyBvcHRpb25hbCAqcmVxdW90ZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuCi0KLSAgICAgIElmIG9wdGlvbmFsICpjaGFyc2V0KiBpcyBzcGVjaWZpZWQsIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBlbmNvZGVkCi0gICAgICBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSBSRkMgMjIzMQotICAgICAgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCi0gICAgICBzaG91bGQgYmUgc3RyaW5ncy4KKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgdGhlIGNoYXJzZXQgYW5kIGxhbmd1YWdlIG1heQorICAgICAgYmUgZXhwbGljaXR5IHNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uYWwgKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCisgICAgICBwYXJhbWV0ZXJzLiAgT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIDpyZmM6YDIyMzFgIGxhbmd1YWdlLAorICAgICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSogc2hvdWxkIGJlCisgICAgICBzdHJpbmdzLiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBgYHV0ZjhgYCAqY2hhcnNldCogYW5kIGBgTm9uZWBgIGZvcgorICAgICAgdGhlICpsYW5ndWFnZSouCiAKICAgICAgIElmICpyZXBsYWNlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgaGVhZGVyIGlzIG1vdmVkIHRvIHRoZQogICAgICAgZW5kIG9mIHRoZSBsaXN0IG9mIGhlYWRlcnMuICBJZiAqcmVwbGFjZSogaXMgYGBUcnVlYGAsIHRoZSBoZWFkZXIKICAgICAgIHdpbGwgYmUgdXBkYXRlZCBpbiBwbGFjZS4KIAorICAgICAgVXNlIG9mIHRoZSAqcmVxdW90ZSogcGFyYW1ldGVyIHdpdGggOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaXMKKyAgICAgIGRlcHJlY2F0ZWQuCisKKyAgICAgIE5vdGUgdGhhdCBleGlzdGluZyBwYXJhbWV0ZXIgdmFsdWVzIG9mIGhlYWRlcnMgbWF5IGJlIGFjY2Vzc2VkIHRocm91Z2gKKyAgICAgIHRoZSA6YXR0cjpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIucGFyYW1zYCBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICBoZWFkZXIgdmFsdWUgKGZvciBleGFtcGxlLCBgYG1zZ1snQ29udGVudC1UeXBlJ10ucGFyYW1zWydjaGFyc2V0J11gYC4KKwogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgYGByZXBsYWNlYGAga2V5d29yZCB3YXMgYWRkZWQuCiAKIApAQCAtNTAyLDI1ICszODgsMTEgQEAKIAogICAgICAgUmVtb3ZlIHRoZSBnaXZlbiBwYXJhbWV0ZXIgY29tcGxldGVseSBmcm9tIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAogICAgICAgaGVhZGVyLiAgVGhlIGhlYWRlciB3aWxsIGJlIHJlLXdyaXR0ZW4gaW4gcGxhY2Ugd2l0aG91dCB0aGUgcGFyYW1ldGVyIG9yCi0gICAgICBpdHMgdmFsdWUuICBBbGwgdmFsdWVzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeSB1bmxlc3MgKnJlcXVvdGUqIGlzCi0gICAgICBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbgotICAgICAgYWx0ZXJuYXRpdmUgdG8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisgICAgICBpdHMgdmFsdWUuICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgdG8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgogCi0KLSAgIC4uIG1ldGhvZDo6IHNldF90eXBlKHR5cGUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlKQotCi0gICAgICBTZXQgdGhlIG1haW4gdHlwZSBhbmQgc3VidHlwZSBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCi0gICAgICBoZWFkZXIuICp0eXBlKiBtdXN0IGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAsCi0gICAgICBvdGhlcndpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCi0KLSAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIGtlZXBpbmcgYWxsCi0gICAgICB0aGUgcGFyYW1ldGVycyBpbiBwbGFjZS4gIElmICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAsIHRoaXMgbGVhdmVzIHRoZQotICAgICAgZXhpc3RpbmcgaGVhZGVyJ3MgcXVvdGluZyBhcyBpcywgb3RoZXJ3aXNlIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkCi0gICAgICAodGhlIGRlZmF1bHQpLgotCi0gICAgICBBbiBhbHRlcm5hdGl2ZSBoZWFkZXIgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgKmhlYWRlciogYXJndW1lbnQuIFdoZW4gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgc2V0IGEgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAKLSAgICAgIGhlYWRlciBpcyBhbHNvIGFkZGVkLgorICAgICAgVXNlIG9mIHRoZSAqcmVxdW90ZSogcGFyYW1ldGVyIHdpdGggOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaXMKKyAgICAgIGRlcHJlY2F0ZWQuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZhaWxvYmo9Tm9uZSkKQEAgLTU0OSwxMiArNDIxLDExIEBACiAgICAgICBuZWNlc3NhcnkuICBBIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyUGFyc2VFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgbWVzc2FnZSBvYmplY3QgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KIAotICAgICAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgbWV0aG9kIGlzIHN1YnRseSBkaWZmZXJlbnQgdGhhbiBkZWxldGluZyB0aGUgb2xkCisgICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCBmcm9tIGRlbGV0aW5nIHRoZSBvbGQKICAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbmQgYWRkaW5nIGEgbmV3IG9uZSB3aXRoIHRoZSBuZXcKICAgICAgIGJvdW5kYXJ5IHZpYSA6bWV0aDpgYWRkX2hlYWRlcmAsIGJlY2F1c2UgOm1ldGg6YHNldF9ib3VuZGFyeWAgcHJlc2VydmVzCiAgICAgICB0aGUgb3JkZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbGlzdCBvZgotICAgICAgaGVhZGVycy4gSG93ZXZlciwgaXQgZG9lcyAqbm90KiBwcmVzZXJ2ZSBhbnkgY29udGludWF0aW9uIGxpbmVzIHdoaWNoIG1heQotICAgICAgaGF2ZSBiZWVuIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKyAgICAgIGhlYWRlcnMuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfY2hhcnNldChmYWlsb2JqPU5vbmUpCkBAIC01NjMsOSArNDM0LDYgQEAKICAgICAgIGNvZXJjZWQgdG8gbG93ZXIgY2FzZS4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb3IgaWYKICAgICAgIHRoYXQgaGVhZGVyIGhhcyBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsICpmYWlsb2JqKiBpcyByZXR1cm5lZC4KIAotICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSA6bWV0aDpgZ2V0X2NoYXJzZXRgIHdoaWNoIHJldHVybnMgdGhlCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGZvciB0aGUgZGVmYXVsdCBlbmNvZGluZyBvZiB0aGUgbWVzc2FnZSBib2R5LgotCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0cyhmYWlsb2JqPU5vbmUpCiAKQEAgLTU3NSwxMCArNDQzLDE5IEBACiAKICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCB3aWxsIGJlIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgIGBgY2hhcnNldGBgIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGZvciB0aGUKLSAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBIb3dldmVyLCBpZiB0aGUgc3VicGFydCBoYXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YKLSAgICAgIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4gTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdAotICAgICAgd2lsbCBiZSAqZmFpbG9iaiouCisgICAgICByZXByZXNlbnRlZCBzdWJwYXJ0LiAgSWYgdGhlIHN1YnBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIsIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgb3IgaXMgbm90IG9mIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4KKyAgICAgIE1JTUUgdHlwZSwgdGhlbiB0aGF0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxpc3Qgd2lsbCBiZSAqZmFpbG9iaiouCisKKworICAgLi4gbWV0aG9kOjogaXNfYXR0YWNobWVudAorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlcmUgaXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyCisgICAgICBhbmQgaXRzIChjYXNlIGluc2Vuc2l0aXZlKSB2YWx1ZSBpcyBgYGF0dGFjaG1lbnRgYCwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMgorICAgICAgICAgaXNfYXR0YWNobWVudCBpcyBub3cgYSBtZXRob2QgaW5zdGVhZCBvZiBhIHByb3BlcnR5LCBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgIHdpdGggOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCkBAIC01OTAsNiArNDY3LDExIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyByZWxhdGUgdG8gaW50ZXJyb2dhdGluZyBhbmQgbWFuaXB1bGF0aW5nIHRoZSBjb250ZW50CisgICAocGF5bG9hZCkgb2YgdGhlIG1lc3NhZ2UuCisKKwogICAgLi4gbWV0aG9kOjogd2FsaygpCiAKICAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bwpAQCAtNjUxLDggKzUzMywxNjkgQEAKICAgICAgIGludG8gdGhlIHN1YnBhcnRzLgogCiAKLSAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBjYW4gYWxzbyBvcHRpb25hbGx5IGNvbnRhaW4gdHdvIGluc3RhbmNlIGF0dHJpYnV0ZXMsCi0gICB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHBsYWluIHRleHQgb2YgYSBNSU1FIG1lc3NhZ2UuCisgICAuLiBtZXRob2Q6OiBnZXRfYm9keShwcmVmZXJlbmNlbGlzdD0oJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpKQorCisgICAgICBSZXR1cm4gdGhlIE1JTUUgcGFydCB0aGF0IGlzIHRoZSBiZXN0IGNhbmRpZGF0ZSB0byBiZSB0aGUgImJvZHkiIG9mIHRoZQorICAgICAgbWVzc2FnZS4KKworICAgICAgKnByZWZlcmVuY2VsaXN0KiBtdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBmcm9tIHRoZSBzZXQgYGByZWxhdGVkYGAsCisgICAgICBgYGh0bWxgYCwgYW5kIGBgcGxhaW5gYCwgYW5kIGluZGljYXRlcyB0aGUgb3JkZXIgb2YgcHJlZmVyZW5jZSBmb3IgdGhlCisgICAgICBjb250ZW50IHR5cGUgb2YgdGhlIHBhcnQgcmV0dXJuZWQuCisKKyAgICAgIFN0YXJ0IGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCB0aGUKKyAgICAgIGBgZ2V0X2JvZHlgYCBtZXRob2QgaXMgY2FsbGVkLgorCisgICAgICBJZiBgYHJlbGF0ZWRgYCBpcyBub3QgaW5jbHVkZWQgaW4gKnByZWZlcmVuY2VsaXN0KiwgY29uc2lkZXIgdGhlIHJvb3QKKyAgICAgIHBhcnQgKG9yIHN1YnBhcnQgb2YgdGhlIHJvb3QgcGFydCkgb2YgYW55IHJlbGF0ZWQgZW5jb3VudGVyZWQgYXMgYQorICAgICAgY2FuZGlkYXRlIGlmIHRoZSAoc3ViLSlwYXJ0IG1hdGNoZXMgYSBwcmVmZXJlbmNlLgorCisgICAgICBXaGVuIGVuY291bnRlcmluZyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2hlY2sgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIKKyAgICAgIGFuZCBpZiBhIHBhcnQgd2l0aCBhIG1hdGNoaW5nIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBpcyBmb3VuZCwgY29uc2lkZXIKKyAgICAgIG9ubHkgaXQgd2hlbiBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcy4gIE90aGVyd2lzZSBjb25zaWRlciBvbmx5IHRoZQorICAgICAgZmlyc3QgKGRlZmF1bHQgcm9vdCkgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLgorCisgICAgICBJZiBhIHBhcnQgaGFzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgb25seSBjb25zaWRlcgorICAgICAgdGhlIHBhcnQgYSBjYW5kaWRhdGUgbWF0Y2ggaWYgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgYGBpbmxpbmVgYC4KKworICAgICAgSWYgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBtYXRjaGVzIGFueSBvZiB0aGUgcHJlZmVyZW5jZXMgaW4KKyAgICAgICpwcmVmZXJuZWNsaXN0KiwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICBOb3RlczogKDEpIEZvciBtb3N0IGFwcGxpY2F0aW9ucyB0aGUgb25seSAqcHJlZmVyZW5jZWxpc3QqIGNvbWJpbmF0aW9ucworICAgICAgdGhhdCByZWFsbHkgbWFrZSBzZW5zZSBhcmUgYGAoJ3BsYWluJywpYGAsIGBgKCdodG1sJywgJ3BsYWluJylgYCwgYW5kIHRoZQorICAgICAgZGVmYXVsdCBgYCgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJylgYC4gICgyKSBCZWNhdXNlIG1hdGNoaW5nIHN0YXJ0cworICAgICAgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIGBgZ2V0X2JvZHlgYCBpcyBjYWxsZWQsIGNhbGxpbmcgYGBnZXRfYm9keWBgIG9uCisgICAgICBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCB3aWxsIHJldHVybiB0aGUgb2JqZWN0IGl0c2VsZiB1bmxlc3MKKyAgICAgICpwcmVmZXJlbmNlbGlzdCogaGFzIGEgbm9uLWRlZmF1bHQgdmFsdWUuICgzKSBNZXNzYWdlcyAob3IgbWVzc2FnZSBwYXJ0cykKKyAgICAgIHRoYXQgZG8gbm90IHNwZWNpZnkgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBvciB3aG9zZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIGludmFsaWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkKKyAgICAgIGFyZSBvZiB0eXBlIGBgdGV4dC9wbGFpbmBgLCB3aGljaCBtYXkgb2NjYXNpb25hbGx5IGNhdXNlIGBgZ2V0X2JvZHlgYCB0bworICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQgcmVzdWx0cy4KKworCisgICAuLiBtZXRob2Q6OiBpdGVyX2F0dGFjaG1lbnRzKCkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlCisgICAgICB0aGF0IGFyZSBub3QgY2FuZGlkYXRlICJib2R5IiBwYXJ0cy4gIFRoYXQgaXMsIHNraXAgdGhlIGZpcnN0IG9jY3VycmVuY2UKKyAgICAgIG9mIGVhY2ggb2YgYGB0ZXh0L3BsYWluYGAsIGBgdGV4dC9odG1sYGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgKHVubGVzcyB0aGV5IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcworICAgICAgYXR0YWNobWVudHMgdmlhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCksIGFuZAorICAgICAgcmV0dXJuIGFsbCByZW1haW5pbmcgcGFydHMuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYQorICAgICAgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgYWxsIHRoZSByZWxhdGVkIHBhcnRzCisgICAgICBleGNlcHQgdGhlIHJvb3QgcGFydCAoaWU6IHRoZSBwYXJ0IHBvaW50ZWQgdG8gYnkgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIsCisgICAgICBvciB0aGUgZmlyc3QgcGFydCBpZiB0aGVyZSBpcyBubyBgYHN0YXJ0YGAgcGFyYW1ldGVyIG9yIHRoZSBgYHN0YXJ0YGAKKyAgICAgIHBhcmFtZXRlciBkb2Vzbid0IG1hdGNoIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgb2YgYW55IG9mIHRoZQorICAgICAgcGFydHMpLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCBvciBhCisgICAgICBub24tYGBtdWx0aXBhcnRgYCwgcmV0dXJuIGFuIGVtcHR5IGl0ZXJhdG9yLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZXJfcGFydHMoKQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UsCisgICAgICB3aGljaCB3aWxsIGJlIGVtcHR5IGZvciBhIG5vbi1gYG11bHRpcGFydGBgLiAgKFNlZSBhbHNvCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLndhbGtgLikKKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIENhbGwgdGhlIDptZXRoOmB+ZW1haWwuY29udGVudG1hbmFnZXIuQ29udGVudE1hbmFnZXIuZ2V0X2NvbnRlbnRgIG1ldGhvZAorICAgICAgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZworICAgICAgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcyBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIENhbGwgdGhlIDptZXRoOmB+ZW1haWwuY29udGVudG1hbmFnZXIuQ29udGVudE1hbmFnZXIuc2V0X2NvbnRlbnRgIG1ldGhvZAorICAgICAgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZworICAgICAgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcyBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX3JlbGF0ZWQoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG1lc3NhZ2UgaW50byBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBtZXNzYWdlLAorICAgICAgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhCisgICAgICAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZQorICAgICAgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5CisgICAgICB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZQorICAgICAgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX2FsdGVybmF0aXZlKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBvciBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBpbnRvIGEKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYAorICAgICAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCisgICAgICAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwKKyAgICAgIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMKKyAgICAgIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogbWFrZV9taXhlZChib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvciBhCisgICAgICBgYG11bHRpcGFydC1hbHRlcm5hdGl2ZWBgIGludG8gYSBgYG11bHRpcGFydC9taXhlZGBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlCisgICAgICBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nCisgICAgICBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkKKyAgICAgIGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9yZWxhdGVkKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCisgICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLAorICAgICAgYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgorICAgICAgdGhlIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgY2FsbCA6bWV0aDpgbWFrZV9yZWxhdGVkYCBhbmQgdGhlbgorICAgICAgcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsCisgICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQorICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorICAgICAgSWYgdGhlIGFkZGVkIHBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsCisgICAgICBhZGQgb25lIHdpdGggdGhlIHZhbHVlIGBgaW5saW5lYGAuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2FsdGVybmF0aXZlKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQorICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjYWxsCisgICAgICA6bWV0aDpgbWFrZV9hbHRlcm5hdGl2ZWAgYW5kIHRoZW4gcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzCisgICAgICBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfYXR0YWNobWVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0LAorICAgICAgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQorICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCisgICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjYWxsIDptZXRoOmBtYWtlX21peGVkYCBhbmQgdGhlbiBwcm9jZWVkIGFzCisgICAgICBhYm92ZS4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgCisgICAgICBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuICBJZiB0aGUgYWRkZWQgcGFydAorICAgICAgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUKKyAgICAgIGBgYXR0YWNobWVudGBgLiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgYm90aCBmb3IgZXhwbGljaXQgYXR0YWNobWVudHMKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGAgYW5kIGBgaW5saW5lYGAgYXR0YWNobWVudHMKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lYCksIGJ5IHBhc3NpbmcgYXBwcm9wcmlhdGUKKyAgICAgIG9wdGlvbnMgdG8gdGhlIGBgY29udGVudF9tYW5hZ2VyYGAuCisKKworICAgLi4gbWV0aG9kOjogY2xlYXIoKQorCisgICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBjbGVhcl9jb250ZW50KCkKKworICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIDpleGM6YENvbnRlbnQtYCBoZWFkZXJzLCBsZWF2aW5nCisgICAgICBhbGwgb3RoZXIgaGVhZGVycyBpbnRhY3QgYW5kIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgorCisKKyAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSBhdHRyaWJ1dGVzOgogCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHByZWFtYmxlCkBAIC02ODIsMTEgKzcyNSw4IEBACiAKICAgICAgIFRoZSAqZXBpbG9ndWUqIGF0dHJpYnV0ZSBhY3RzIHRoZSBzYW1lIHdheSBhcyB0aGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUsCiAgICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyB0ZXh0IHRoYXQgYXBwZWFycyBiZXR3ZWVuIHRoZSBsYXN0IGJvdW5kYXJ5IGFuZAotICAgICAgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZS4KLQotICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHNldCB0aGUgZXBpbG9ndWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiBvcmRlciBmb3IgdGhlCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB0byBwcmludCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgIGZpbGUuCisgICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLiAgQXMgd2l0aCB0aGUgOmF0dHI6YH5FbWFpbE1lc3NhZ2UucHJlYW1ibGVgLAorICAgICAgaWYgdGhlcmUgaXMgbm8gZXBpbG9nIHRleHQgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBgYE5vbmVgYC4KIAogCiAgICAuLiBhdHRyaWJ1dGU6OiBkZWZlY3RzCkBAIC02OTQsMyArNzM0LDE4IEBACiAgICAgICBUaGUgKmRlZmVjdHMqIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIHRoZSBwcm9ibGVtcyBmb3VuZCB3aGVuCiAgICAgICBwYXJzaW5nIHRoaXMgbWVzc2FnZS4gIFNlZSA6bW9kOmBlbWFpbC5lcnJvcnNgIGZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uCiAgICAgICBvZiB0aGUgcG9zc2libGUgcGFyc2luZyBkZWZlY3RzLgorCisKKy4uIGNsYXNzOjogTUlNRVBhcnQocG9saWN5PWRlZmF1bHQpCisKKyAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJwYXJ0IG9mIGEgTUlNRSBtZXNzYWdlLiAgSXQgaXMgaWRlbnRpY2FsIHRvCisgICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgLCBleGNlcHQgdGhhdCBubyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzIGFyZQorICAgIGFkZGVkIHdoZW4gOm1ldGg6YH5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGlzIGNhbGxlZCwgc2luY2Ugc3ViLXBhcnRzIGRvCisgICAgbm90IG5lZWQgdGhlaXIgb3duIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy40IGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAuICBEb2NzIGZvciBsZWdhY3kgbWVzc2FnZSBjbGFzcyBtb3ZlZCB0bworICAgICAgIDpyZWY6YGNvbXBhdDMyX21lc3NhZ2VgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAppbmRleCA4Mjk3ZGVhLi5kOWRhZTlmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdApAQCAtOCw2ICs4LDExIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJdHMgZnVuY3Rpb25hbGl0eQoraXMgcGFydGlhbGx5IHJlcGxhY2VkIGJ5IHRoZSA6bW9kOmB+ZW1haWwuY29udGVudG1hbmFnZXJgIGluIHRoZSBuZXcgQVBJLCBidXQKK2luIGNlcnRhaW4gYXBwbGljYXRpb25zIHRoZXNlIGNsYXNzZXMgbWF5IHN0aWxsIGJlIHVzZWZ1bCwgZXZlbiBpbiBub24tbGVnYWN5Citjb2RlLgorCiBPcmRpbmFyaWx5LCB5b3UgZ2V0IGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGJ5IHBhc3NpbmcgYSBmaWxlIG9yIHNvbWUgdGV4dCB0bwogYSBwYXJzZXIsIHdoaWNoIHBhcnNlcyB0aGUgdGV4dCBhbmQgcmV0dXJucyB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIEhvd2V2ZXIKIHlvdSBjYW4gYWxzbyBidWlsZCBhIGNvbXBsZXRlIG1lc3NhZ2Ugc3RydWN0dXJlIGZyb20gc2NyYXRjaCwgb3IgZXZlbiBpbmRpdmlkdWFsCkBAIC0yNSw3ICszMCw3IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmJhc2UKIAotLi4gY2xhc3M6OiBNSU1FQmFzZShfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVCYXNlKF9tYWludHlwZSwgX3N1YnR5cGUsICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYmFzZWAKIApAQCAtNDEsMTAgKzQ2LDE3IEBACiAgICBrZXkvdmFsdWUgZGljdGlvbmFyeSBhbmQgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIDptZXRoOmBNZXNzYWdlLmFkZF9oZWFkZXIKICAgIDxlbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYWRkX2hlYWRlcj5gLgogCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIChkZWZhdWx0cyB0byB0aGUKKyAgIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSkgaXQgd2lsbCBiZSBwYXNzZWQgdG8KKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAuCisKICAgIFRoZSA6Y2xhc3M6YE1JTUVCYXNlYCBjbGFzcyBhbHdheXMgYWRkcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcgogICAgKGJhc2VkIG9uICpfbWFpbnR5cGUqLCAqX3N1YnR5cGUqLCBhbmQgKl9wYXJhbXMqKSwgYW5kIGEKICAgIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlciAoYWx3YXlzIHNldCB0byBgYDEuMGBgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCisKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0CiAKQEAgLTYyLDcgKzc0LDggQEAKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubXVsdGlwYXJ0CiAKLS4uIGNsYXNzOjogTUlNRU11bHRpcGFydChfc3VidHlwZT0nbWl4ZWQnLCBib3VuZGFyeT1Ob25lLCBfc3VicGFydHM9Tm9uZSwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FTXVsdGlwYXJ0KF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5tdWx0aXBhcnRgCiAKQEAgLTgyLDE0ICs5NSwyMCBAQAogICAgdG8gdGhlIG1lc3NhZ2UgYnkgdXNpbmcgdGhlIDptZXRoOmBNZXNzYWdlLmF0dGFjaAogICAgPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2g+YCBtZXRob2QuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXJlIHRha2VuIGZyb20KICAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50cywgb3IgcGFzc2VkIGludG8gdGhlICpfcGFyYW1zKiBhcmd1bWVudCwgd2hpY2ggaXMgYSBrZXl3b3JkCiAgICBkaWN0aW9uYXJ5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYXBwbGljYXRpb24KIAotLi4gY2xhc3M6OiBNSU1FQXBwbGljYXRpb24oX2RhdGEsIF9zdWJ0eXBlPSdvY3RldC1zdHJlYW0nLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVBcHBsaWNhdGlvbihfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYXBwbGljYXRpb25gCiAKQEAgLTEwOSwxMiArMTI4LDE4IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5hdWRpbwogCi0uLiBjbGFzczo6IE1JTUVBdWRpbyhfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVBdWRpbyhfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmF1ZGlvYAogCkBAIC0xMzcsMTIgKzE2MiwxOCBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuaW1hZ2UKIAotLi4gY2xhc3M6OiBNSU1FSW1hZ2UoX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FSW1hZ2UoX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmltYWdlYAogCkBAIC0xNjUsMTMgKzE5NiwxNyBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLmJhc2UuTUlNRUJhc2VgCiAgICBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLm1lc3NhZ2UKIAotLi4gY2xhc3M6OiBNSU1FTWVzc2FnZShfbXNnLCBfc3VidHlwZT0ncmZjODIyJykKKy4uIGNsYXNzOjogTUlNRU1lc3NhZ2UoX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1jb21wYXQzMikKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLm1lc3NhZ2VgCiAKQEAgLTE4NCwxMCArMjE5LDE0IEBACiAgICBPcHRpb25hbCAqX3N1YnR5cGUqIHNldHMgdGhlIHN1YnR5cGUgb2YgdGhlIG1lc3NhZ2U7IGl0IGRlZmF1bHRzIHRvCiAgICA6bWltZXR5cGU6YHJmYzgyMmAuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUudGV4dAogCi0uLiBjbGFzczo6IE1JTUVUZXh0KF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKQorLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSwgKiwgcG9saWN5PWNvbXBhdDMyKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUudGV4dGAKIApAQCAtMjExLDUgKzI1MCwxMCBAQAogICAgd2lsbCBhdXRvbWF0aWNhbGx5IGVuY29kZSB0aGUgbmV3IHBheWxvYWQgKGFuZCBhZGQgYSBuZXcKICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIpLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgICpfY2hhcnNldCogYWxzbyBhY2NlcHRzIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2VzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CmluZGV4IGI4ZWI3YzUuLmMzMjNlYmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdApAQCAtOCwxOTAgKzgsMTU4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLU1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZXMgY2FuIGJlIGNyZWF0ZWQgaW4gb25lIG9mIHR3byB3YXlzOiB0aGV5IGNhbiBiZSBjcmVhdGVkCi1mcm9tIHdob2xlIGNsb3RoIGJ5IGluc3RhbnRpYXRpbmcgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzIGFuZAotc3RyaW5naW5nIHRoZW0gdG9nZXRoZXIgdmlhIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgYW5kCi06bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfcGF5bG9hZGAgY2FsbHMsIG9yIHRoZXkKLWNhbiBiZSBjcmVhdGVkIGJ5IHBhcnNpbmcgYSBmbGF0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVtYWlsIG1lc3NhZ2UuCitNZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmVzIGNhbiBiZSBjcmVhdGVkIGluIG9uZSBvZiB0d28gd2F5czogdGhleSBjYW4gYmUKK2NyZWF0ZWQgZnJvbSB3aG9sZSBjbG90aCBieSBjcmVhdGluZyBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKK29iamVjdCwgYWRkaW5nIGhlYWRlcnMgdXNpbmcgdGhlIGRpY3Rpb25hcnkgaW50ZXJmYWNlLCBhbmQgYWRkaW5nIHBheWxvYWQocykKK3VzaW5nIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGFuZCByZWxhdGVkIG1ldGhvZHMsIG9yCit0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHBhcnNpbmcgYSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbWFpbAorbWVzc2FnZS4KIAogVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHByb3ZpZGVzIGEgc3RhbmRhcmQgcGFyc2VyIHRoYXQgdW5kZXJzdGFuZHMgbW9zdCBlbWFpbAotZG9jdW1lbnQgc3RydWN0dXJlcywgaW5jbHVkaW5nIE1JTUUgZG9jdW1lbnRzLiAgWW91IGNhbiBwYXNzIHRoZSBwYXJzZXIgYSBzdHJpbmcKLW9yIGEgZmlsZSBvYmplY3QsIGFuZCB0aGUgcGFyc2VyIHdpbGwgcmV0dXJuIHRvIHlvdSB0aGUgcm9vdAotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBvZiB0aGUgb2JqZWN0IHN0cnVjdHVyZS4gIEZvciBzaW1wbGUsCi1ub24tTUlNRSBtZXNzYWdlcyB0aGUgcGF5bG9hZCBvZiB0aGlzIHJvb3Qgb2JqZWN0IHdpbGwgbGlrZWx5IGJlIGEgc3RyaW5nCi1jb250YWluaW5nIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiAgRm9yIE1JTUUgbWVzc2FnZXMsIHRoZSByb290IG9iamVjdCB3aWxsCi1yZXR1cm4gYGBUcnVlYGAgZnJvbSBpdHMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QsIGFuZAotdGhlIHN1YnBhcnRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYAotYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLndhbGtgIG1ldGhvZHMuCitkb2N1bWVudCBzdHJ1Y3R1cmVzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuICBZb3UgY2FuIHBhc3MgdGhlIHBhcnNlciBhCitieXRlcywgc3RyaW5nIG9yIGZpbGUgb2JqZWN0LCBhbmQgdGhlIHBhcnNlciB3aWxsIHJldHVybiB0byB5b3UgdGhlIHJvb3QKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpbnN0YW5jZSBvZiB0aGUgb2JqZWN0IHN0cnVjdHVyZS4gIEZvcgorc2ltcGxlLCBub24tTUlNRSBtZXNzYWdlcyB0aGUgcGF5bG9hZCBvZiB0aGlzIHJvb3Qgb2JqZWN0IHdpbGwgbGlrZWx5IGJlIGEKK3N0cmluZyBjb250YWluaW5nIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiAgRm9yIE1JTUUgbWVzc2FnZXMsIHRoZSByb290IG9iamVjdAord2lsbCByZXR1cm4gYGBUcnVlYGAgZnJvbSBpdHMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgCittZXRob2QsIGFuZCB0aGUgc3VicGFydHMgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgcGF5bG9hZCBtYW5pcHVsYXRpb24gbWV0aG9kcywKK3N1Y2ggYXMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfYm9keWAsCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgLCBhbmQKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uud2Fsa2AuCiAKLVRoZXJlIGFyZSBhY3R1YWxseSB0d28gcGFyc2VyIGludGVyZmFjZXMgYXZhaWxhYmxlIGZvciB1c2UsIHRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIGFuZCB0aGUgaW5jcmVtZW50YWwgOmNsYXNzOmBGZWVkUGFyc2VyYCBBUEkuICBUaGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBpcyBmaW5lIGlmIHlvdSBoYXZlIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgbWVzc2FnZSBpbiBtZW1vcnkKLWFzIGEgc3RyaW5nLCBvciBpZiB0aGUgZW50aXJlIG1lc3NhZ2UgbGl2ZXMgaW4gYSBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS4KLTpjbGFzczpgRmVlZFBhcnNlcmAgaXMgbW9yZSBhcHByb3ByaWF0ZSBmb3Igd2hlbiB5b3UncmUgcmVhZGluZyB0aGUgbWVzc2FnZSBmcm9tCi1hIHN0cmVhbSB3aGljaCBtaWdodCBibG9jayB3YWl0aW5nIGZvciBtb3JlIGlucHV0IChlLmcuIHJlYWRpbmcgYW4gZW1haWwgbWVzc2FnZQotZnJvbSBhIHNvY2tldCkuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gY29uc3VtZSBhbmQgcGFyc2UgdGhlIG1lc3NhZ2UKLWluY3JlbWVudGFsbHksIGFuZCBvbmx5IHJldHVybnMgdGhlIHJvb3Qgb2JqZWN0IHdoZW4geW91IGNsb3NlIHRoZSBwYXJzZXIgWyNdXy4KK1RoZXJlIGFyZSBhY3R1YWxseSB0d28gcGFyc2VyIGludGVyZmFjZXMgYXZhaWxhYmxlIGZvciB1c2UsIHRoZSA6Y2xhc3M6YFBhcnNlcmAKK0FQSSBhbmQgdGhlIGluY3JlbWVudGFsIDpjbGFzczpgRmVlZFBhcnNlcmAgQVBJLiAgVGhlIDpjbGFzczpgUGFyc2VyYCBBUEkgaXMKK21vc3QgdXNlZnVsIGlmIHlvdSBoYXZlIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgbWVzc2FnZSBpbiBtZW1vcnksIG9yIGlmIHRoZQorZW50aXJlIG1lc3NhZ2UgbGl2ZXMgaW4gYSBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS4gIDpjbGFzczpgRmVlZFBhcnNlcmAgaXMgbW9yZQorYXBwcm9wcmlhdGUgd2hlbiB5b3UgYXJlIHJlYWRpbmcgdGhlIG1lc3NhZ2UgZnJvbSBhIHN0cmVhbSB3aGljaCBtaWdodCBibG9jaword2FpdGluZyBmb3IgbW9yZSBpbnB1dCAoc3VjaCBhcyByZWFkaW5nIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhIHNvY2tldCkuICBUaGUKKzpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIGNvbnN1bWUgYW5kIHBhcnNlIHRoZSBtZXNzYWdlIGluY3JlbWVudGFsbHksIGFuZCBvbmx5CityZXR1cm5zIHRoZSByb290IG9iamVjdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFyc2VyLgogCiBOb3RlIHRoYXQgdGhlIHBhcnNlciBjYW4gYmUgZXh0ZW5kZWQgaW4gbGltaXRlZCB3YXlzLCBhbmQgb2YgY291cnNlIHlvdSBjYW4KLWltcGxlbWVudCB5b3VyIG93biBwYXJzZXIgY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBUaGVyZSBpcyBubyBtYWdpY2FsCi1jb25uZWN0aW9uIGJldHdlZW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlJ3MgYnVuZGxlZCBwYXJzZXIgYW5kIHRoZQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcywgc28geW91ciBjdXN0b20gcGFyc2VyIGNhbiBjcmVhdGUgbWVzc2FnZQotb2JqZWN0IHRyZWVzIGFueSB3YXkgaXQgZmluZHMgbmVjZXNzYXJ5LgoraW1wbGVtZW50IHlvdXIgb3duIHBhcnNlciBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaC4gIEFsbCBvZiB0aGUgbG9naWMgdGhhdAorY29ubmVjdHMgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlJ3MgYnVuZGxlZCBwYXJzZXIgYW5kIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGlzIGVtYm9kaWVkIGluIHRoZSA6bW9kOmBwb2xpY3lgCitjbGFzcywgc28gYSBjdXN0b20gcGFyc2VyIGNhbiBjcmVhdGUgbWVzc2FnZSBvYmplY3QgdHJlZXMgYW55IHdheSBpdCBmaW5kcworbmVjZXNzYXJ5IGJ5IGltcGxlbWVudGluZyBjdXN0b20gdmVyc2lvbnMgb2YgdGhlIGFwcHJvcHJpYXRlIDptb2Q6YHBvbGljeWAKK21ldGhvZHMuCiAKIAogRmVlZFBhcnNlciBBUEkKIF5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5mZWVkcGFyc2VyYCBtb2R1bGUsCi1wcm92aWRlcyBhbiBBUEkgdGhhdCBpcyBjb25kdWNpdmUgdG8gaW5jcmVtZW50YWwgcGFyc2luZyBvZiBlbWFpbCBtZXNzYWdlcywgc3VjaAotYXMgd291bGQgYmUgbmVjZXNzYXJ5IHdoZW4gcmVhZGluZyB0aGUgdGV4dCBvZiBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYSBzb3VyY2UKLXRoYXQgY2FuIGJsb2NrIChlLmcuIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBvZiBjb3Vyc2UgYmUgdXNlZAotdG8gcGFyc2UgYW4gZW1haWwgbWVzc2FnZSBmdWxseSBjb250YWluZWQgaW4gYSBzdHJpbmcgb3IgYSBmaWxlLCBidXQgdGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgbWF5IGJlIG1vcmUgY29udmVuaWVudCBmb3Igc3VjaCB1c2UgY2FzZXMuICBUaGUgc2VtYW50aWNzCi1hbmQgcmVzdWx0cyBvZiB0aGUgdHdvIHBhcnNlciBBUElzIGFyZSBpZGVudGljYWwuCitUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5mZWVkcGFyc2VyYCBtb2R1bGUsCitwcm92aWRlcyBhbiBBUEkgdGhhdCBpcyBjb25kdWNpdmUgdG8gaW5jcmVtZW50YWwgcGFyc2luZyBvZiBlbWFpbCBtZXNzYWdlcywKK3N1Y2ggYXMgd291bGQgYmUgbmVjZXNzYXJ5IHdoZW4gcmVhZGluZyB0aGUgdGV4dCBvZiBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYQorc291cmNlIHRoYXQgY2FuIGJsb2NrIChzdWNoIGFzIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgY2FuIG9mCitjb3Vyc2UgYmUgdXNlZCB0byBwYXJzZSBhbiBlbWFpbCBtZXNzYWdlIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIDp0ZXJtOmBieXRlcy1saWtlCitvYmplY3RgLCBzdHJpbmcsIG9yIGZpbGUsIGJ1dCB0aGUgOmNsYXNzOmBCeXRlc1BhcnNlcmAgQVBJIG1heSBiZSBtb3JlCitjb252ZW5pZW50IGZvciBzdWNoIHVzZSBjYXNlcy4gIFRoZSBzZW1hbnRpY3MgYW5kIHJlc3VsdHMgb2YgdGhlIHR3byBwYXJzZXIKK0FQSXMgYXJlIGlkZW50aWNhbC4KIAotVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAncyBBUEkgaXMgc2ltcGxlOyB5b3UgY3JlYXRlIGFuIGluc3RhbmNlLCBmZWVkIGl0IGEgYnVuY2gKLW9mIHRleHQgdW50aWwgdGhlcmUncyBubyBtb3JlIHRvIGZlZWQgaXQsIHRoZW4gY2xvc2UgdGhlIHBhcnNlciB0byByZXRyaWV2ZSB0aGUKLXJvb3QgbWVzc2FnZSBvYmplY3QuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBleHRyZW1lbHkgYWNjdXJhdGUgd2hlbiBwYXJzaW5nCi1zdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzLCBhbmQgaXQgZG9lcyBhIHZlcnkgZ29vZCBqb2Igb2YgcGFyc2luZwotbm9uLWNvbXBsaWFudCBtZXNzYWdlcywgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGhvdyBhIG1lc3NhZ2Ugd2FzIGRlZW1lZAotYnJva2VuLiAgSXQgd2lsbCBwb3B1bGF0ZSBhIG1lc3NhZ2Ugb2JqZWN0J3MgKmRlZmVjdHMqIGF0dHJpYnV0ZSB3aXRoIGEgbGlzdCBvZgotYW55IHByb2JsZW1zIGl0IGZvdW5kIGluIGEgbWVzc2FnZS4gIFNlZSB0aGUgOm1vZDpgZW1haWwuZXJyb3JzYCBtb2R1bGUgZm9yIHRoZQorVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCdzIEFQSSBpcyBzaW1wbGU7IHlvdSBjcmVhdGUgYW4gaW5zdGFuY2UsIGZlZWQgaXQgYQorYnVuY2ggb2YgYnl0ZXMgdW50aWwgdGhlcmUncyBubyBtb3JlIHRvIGZlZWQgaXQsIHRoZW4gY2xvc2UgdGhlIHBhcnNlciB0bworcmV0cmlldmUgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGlzIGV4dHJlbWVseQorYWNjdXJhdGUgd2hlbiBwYXJzaW5nIHN0YW5kYXJkcy1jb21wbGlhbnQgbWVzc2FnZXMsIGFuZCBpdCBkb2VzIGEgdmVyeSBnb29kIGpvYgorb2YgcGFyc2luZyBub24tY29tcGxpYW50IG1lc3NhZ2VzLCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgbWVzc2FnZQord2FzIGRlZW1lZCBicm9rZW4uICBJdCB3aWxsIHBvcHVsYXRlIGEgbWVzc2FnZSBvYmplY3QncworOmF0dHI6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5kZWZlY3RzYCBhdHRyaWJ1dGUgd2l0aCBhIGxpc3Qgb2YgYW55Citwcm9ibGVtcyBpdCBmb3VuZCBpbiBhIG1lc3NhZ2UuICBTZWUgdGhlIDptb2Q6YGVtYWlsLmVycm9yc2AgbW9kdWxlIGZvciB0aGUKIGxpc3Qgb2YgZGVmZWN0cyB0aGF0IGl0IGNhbiBmaW5kLgogCi1IZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgOgorSGVyZSBpcyB0aGUgQVBJIGZvciB0aGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgOgogCiAKLS4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBjbGFzczo6IEJ5dGVzRmVlZFBhcnNlcihfZmFjdG9yeT1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBDcmVhdGUgYSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGluc3RhbmNlLiAgT3B0aW9uYWwgKl9mYWN0b3J5KiBpcyBhIG5vLWFyZ3VtZW50Ci0gICBjYWxsYWJsZSB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0IGlzIG5lZWRlZC4gIEl0Ci0gICBkZWZhdWx0cyB0byB0aGUgOmNsYXNzOmBlbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLgorICAgQ3JlYXRlIGEgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGluc3RhbmNlLiAgT3B0aW9uYWwgKl9mYWN0b3J5KiBpcyBhCisgICBuby1hcmd1bWVudCBjYWxsYWJsZTsgaWYgbm90IHNwZWNpZmllZCB1c2UgdGhlCisgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YCBmcm9tIHRoZSAqcG9saWN5Ki4gIENhbGwKKyAgICpfZmFjdG9yeSogd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLgogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUKKyAgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQorICAgOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQKKyAgIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGFuZCBwcm92aWRlcworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBhcyB0aGUgZGVmYXVsdCBmYWN0b3J5LiAgQWxsIG90aGVyIHBvbGljaWVzCisgICBwcm92aWRlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBhcyB0aGUgZGVmYXVsdCAqX2ZhY3RvcnkqLiBGb3IKKyAgIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBlbHNlICpwb2xpY3kqIGNvbnRyb2xzLCBzZWUgdGhlCiAgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQotCi0gICAgICBGZWVkIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIHNvbWUgbW9yZSBkYXRhLiAgKmRhdGEqIHNob3VsZCBiZSBhIHN0cmluZwotICAgICAgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsaW5lcy4gIFRoZSBsaW5lcyBjYW4gYmUgcGFydGlhbCBhbmQgdGhlCi0gICAgICA6Y2xhc3M6YEZlZWRQYXJzZXJgIHdpbGwgc3RpdGNoIHN1Y2ggcGFydGlhbCBsaW5lcyB0b2dldGhlciBwcm9wZXJseS4gIFRoZQotICAgICAgbGluZXMgaW4gdGhlIHN0cmluZyBjYW4gaGF2ZSBhbnkgb2YgdGhlIGNvbW1vbiB0aHJlZSBsaW5lIGVuZGluZ3MsCi0gICAgICBjYXJyaWFnZSByZXR1cm4sIG5ld2xpbmUsIG9yIGNhcnJpYWdlIHJldHVybiBhbmQgbmV3bGluZSAodGhleSBjYW4gZXZlbiBiZQotICAgICAgbWl4ZWQpLgotCi0gICAuLiBtZXRob2Q6OiBjbG9zZSgpCi0KLSAgICAgIENsb3NpbmcgYSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNvbXBsZXRlcyB0aGUgcGFyc2luZyBvZiBhbGwgcHJldmlvdXNseSBmZWQKLSAgICAgIGRhdGEsIGFuZCByZXR1cm5zIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucwotICAgICAgaWYgeW91IGZlZWQgbW9yZSBkYXRhIHRvIGEgY2xvc2VkIDpjbGFzczpgRmVlZFBhcnNlcmAuCi0KLQotLi4gY2xhc3M6OiBCeXRlc0ZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlKQotCi0gICBXb3JrcyBleGFjdGx5IGxpa2UgOmNsYXNzOmBGZWVkUGFyc2VyYCBleGNlcHQgdGhhdCB0aGUgaW5wdXQgdG8gdGhlCi0gICA6bWV0aDpgfkZlZWRQYXJzZXIuZmVlZGAgbWV0aG9kIG11c3QgYmUgYnl0ZXMgYW5kIG5vdCBzdHJpbmcuCisgICBOb3RlOiAqKlRoZSBwb2xpY3kga2V5d29yZCBzaG91bGQgYWx3YXlzIGJlIHNwZWNpZmllZCoqOyBUaGUgZGVmYXVsdCB3aWxsCisgICBjaGFuZ2UgdG8gOmRhdGE6YGVtYWlsLnBvbGljeS5kZWZhdWx0YCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgKl9mYWN0b3J5KiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLVBhcnNlciBjbGFzcyBBUEkKLV5eXl5eXl5eXl5eXl5eXl4KIAotVGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCisgICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCisKKyAgICAgIEZlZWQgdGhlIHBhcnNlciBzb21lIG1vcmUgZGF0YS4gICpkYXRhKiBzaG91bGQgYmUgYSA6dGVybTpgYnl0ZXMtbGlrZQorICAgICAgb2JqZWN0YCBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzLiAgVGhlIGxpbmVzIGNhbiBiZSBwYXJ0aWFsIGFuZCB0aGUKKyAgICAgIHBhcnNlciB3aWxsIHN0aXRjaCBzdWNoIHBhcnRpYWwgbGluZXMgdG9nZXRoZXIgcHJvcGVybHkuICBUaGUgbGluZXMgY2FuCisgICAgICBoYXZlIGFueSBvZiB0aGUgdGhyZWUgY29tbW9uIGxpbmUgZW5kaW5nczogY2FycmlhZ2UgcmV0dXJuLCBuZXdsaW5lLCBvcgorICAgICAgY2FycmlhZ2UgcmV0dXJuIGFuZCBuZXdsaW5lICh0aGV5IGNhbiBldmVuIGJlIG1peGVkKS4KKworCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIENvbXBsZXRlIHRoZSBwYXJzaW5nIG9mIGFsbCBwcmV2aW91c2x5IGZlZCBkYXRhIGFuZCByZXR1cm4gdGhlIHJvb3QKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0LiAgSXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucyBpZiA6bWV0aDpgfmZlZWRgIGlzIGNhbGxlZAorICAgICAgYWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLgorCisKKy4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBXb3JrcyBsaWtlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBleGNlcHQgdGhhdCB0aGUgaW5wdXQgdG8gdGhlCisgICA6bWV0aDpgfkJ5dGVzRmVlZFBhcnNlci5mZWVkYCBtZXRob2QgbXVzdCBiZSBhIHN0cmluZy4gIFRoaXMgaXMgb2YgbGltaXRlZAorICAgdXRpbGl0eSwgc2luY2UgdGhlIG9ubHkgd2F5IGZvciBzdWNoIGEgbWVzc2FnZSB0byBiZSB2YWxpZCBpcyBmb3IgaXQgdG8KKyAgIGNvbnRhaW4gb25seSBBU0NJSSB0ZXh0IG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMKKyAgIGBgVHJ1ZWBgLCBubyBiaW5hcnkgYXR0YWNobWVudHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKK1BhcnNlciBBUEkKK15eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwKIHByb3ZpZGVzIGFuIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhcnNlIGEgbWVzc2FnZSB3aGVuIHRoZSBjb21wbGV0ZSBjb250ZW50cwotb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIHN0cmluZyBvciBmaWxlLiAgVGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAKLW1vZHVsZSBhbHNvIHByb3ZpZGVzIGhlYWRlci1vbmx5IHBhcnNlcnMsIGNhbGxlZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kCi06Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCwgd2hpY2ggY2FuIGJlIHVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUKLWhlYWRlcnMgb2YgdGhlIG1lc3NhZ2UuICA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgCitvZiB0aGUgbWVzc2FnZSBhcmUgYXZhaWxhYmxlIGluIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBmaWxlLiAgVGhlCis6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIDpjbGFzczpgUGFyc2VyYCBmb3IgcGFyc2luZyBzdHJpbmdzLAorYW5kIGhlYWRlci1vbmx5IHBhcnNlcnMsIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZAorOmNsYXNzOmBIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQoraGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAKIGNhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSB0aGV5IGRvIG5vdCBhdHRlbXB0IHRvIHBhcnNlIHRoZQotbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nLiAgVGhleQotaGF2ZSB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3Nlcy4KLQotLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICBUaGUgQnl0ZXNIZWFkZXJQYXJzZXIgY2xhc3MuCittZXNzYWdlIGJvZHksIGluc3RlYWQgc2V0dGluZyB0aGUgcGF5bG9hZCB0byB0aGUgcmF3IGJvZHkuCiAKIAotLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudAotICAgKl9jbGFzcyouICBUaGlzIG11c3QgYmUgYSBjYWxsYWJsZSBmYWN0b3J5IChzdWNoIGFzIGEgZnVuY3Rpb24gb3IgYSBjbGFzcyksIGFuZAotICAgaXQgaXMgdXNlZCB3aGVuZXZlciBhIHN1Yi1tZXNzYWdlIG9iamVjdCBuZWVkcyB0byBiZSBjcmVhdGVkLiAgSXQgZGVmYXVsdHMgdG8KLSAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgKHNlZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCkuICBUaGUgZmFjdG9yeSB3aWxsCi0gICBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCisgICBDcmVhdGUgYSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBpbnN0YW5jZS4gIFRoZSAqX2NsYXNzKiBhbmQgKnBvbGljeSoKKyAgIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYW5kIHNlbWF0bmljcyBhcyB0aGUgKl9mYWN0b3J5KgorICAgYW5kICpwb2xpY3kqIGFyZ3VtZW50cyBvZiA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAuCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorICAgTm90ZTogKipUaGUgcG9saWN5IGtleXdvcmQgc2hvdWxkIGFsd2F5cyBiZSBzcGVjaWZpZWQqKjsgVGhlIGRlZmF1bHQgd2lsbAorICAgY2hhbmdlIHRvIDpkYXRhOmBlbWFpbC5wb2xpY3kuZGVmYXVsdGAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudCB0aGF0IHdhcyBkZXByZWNhdGVkIGluIDIuNC4gIEFkZGVkIHRoZQogICAgICAgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42ICpfY2xhc3MqIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KIAotICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YFBhcnNlcmAgbWV0aG9kcyBhcmU6Ci0KLQotICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcnNvbmx5PUZhbHNlKQotCi0gICAgICBSZWFkIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZSByZXN1bHRpbmcKLSAgICAgIHRleHQsIGFuZCByZXR1cm4gdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICAqZnAqIG11c3Qgc3VwcG9ydCBib3RoIHRoZQotICAgICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYCBhbmQgdGhlIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkYAotICAgICAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KLQotICAgICAgVGhlIHRleHQgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmAyODIyYAotICAgICAgc3R5bGUgaGVhZGVycyBhbmQgaGVhZGVyIGNvbnRpbnVhdGlvbiBsaW5lcywgb3B0aW9uYWxseSBwcmVjZWRlZCBieSBhbgotICAgICAgZW52ZWxvcGUgaGVhZGVyLiAgVGhlIGhlYWRlciBibG9jayBpcyB0ZXJtaW5hdGVkIGVpdGhlciBieSB0aGUgZW5kIG9mIHRoZQotICAgICAgZGF0YSBvciBieSBhIGJsYW5rIGxpbmUuICBGb2xsb3dpbmcgdGhlIGhlYWRlciBibG9jayBpcyB0aGUgYm9keSBvZiB0aGUKLSAgICAgIG1lc3NhZ2UgKHdoaWNoIG1heSBjb250YWluIE1JTUUtZW5jb2RlZCBzdWJwYXJ0cykuCi0KLSAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYSBmbGFnIHNwZWNpZnlpbmcgd2hldGhlciB0byBzdG9wIHBhcnNpbmcgYWZ0ZXIKLSAgICAgIHJlYWRpbmcgdGhlIGhlYWRlcnMgb3Igbm90LiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLCBtZWFuaW5nIGl0IHBhcnNlcwotICAgICAgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KLQotICAgLi4gbWV0aG9kOjogcGFyc2VzdHIodGV4dCwgaGVhZGVyc29ubHk9RmFsc2UpCi0KLSAgICAgIFNpbWlsYXIgdG8gdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLCBleGNlcHQgaXQgdGFrZXMgYSBzdHJpbmcgb2JqZWN0Ci0gICAgICBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBzdHJpbmcgaXMgZXhhY3RseQotICAgICAgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5TdHJpbmdJT2AgaW5zdGFuY2UgZmlyc3QgYW5kCi0gICAgICBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCi0KLSAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCi0KLQotLi4gY2xhc3M6OiBCeXRlc1BhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQotCi0gICBUaGlzIGNsYXNzIGlzIGV4YWN0bHkgcGFyYWxsZWwgdG8gOmNsYXNzOmBQYXJzZXJgLCBidXQgaGFuZGxlcyBieXRlcyBpbnB1dC4KLSAgIFRoZSAqX2NsYXNzKiBhbmQgKnN0cmljdCogYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yCi0gICB0aGUgOmNsYXNzOmBQYXJzZXJgIGNvbnN0cnVjdG9yLgotCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKICAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKIAogICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgYmluYXJ5IGZpbGUtbGlrZSBvYmplY3QgKmZwKiwgcGFyc2UgdGhlCiAgICAgICByZXN1bHRpbmcgYnl0ZXMsIGFuZCByZXR1cm4gdGhlIG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQKICAgICAgIGJvdGggdGhlIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lYCBhbmQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRgCi0gICAgICBtZXRob2RzIG9uIGZpbGUtbGlrZSBvYmplY3RzLgorICAgICAgbWV0aG9kcy4KIAotICAgICAgVGhlIGJ5dGVzIGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgMjgyMmAKKyAgICAgIFRoZSBieXRlcyBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDUzMjJgCisgICAgICAob3IsIGlmIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS51dGY4YCBpcyBgYFRydWVgYCwgOnJmYzpgNjUzMmApCiAgICAgICBzdHlsZSBoZWFkZXJzIGFuZCBoZWFkZXIgY29udGludWF0aW9uIGxpbmVzLCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGFuCiAgICAgICBlbnZlbG9wZSBoZWFkZXIuICBUaGUgaGVhZGVyIGJsb2NrIGlzIHRlcm1pbmF0ZWQgZWl0aGVyIGJ5IHRoZSBlbmQgb2YgdGhlCiAgICAgICBkYXRhIG9yIGJ5IGEgYmxhbmsgbGluZS4gIEZvbGxvd2luZyB0aGUgaGVhZGVyIGJsb2NrIGlzIHRoZSBib2R5IG9mIHRoZQpAQCAtMjAyLDczICsxNzAsMTIxIEBACiAgICAgICByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYCwgbWVhbmluZyBpdCBwYXJzZXMKICAgICAgIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCiAKLSAgIC4uIG1ldGhvZDo6IHBhcnNlYnl0ZXModGV4dCwgaGVhZGVyc29ubHk9RmFsc2UpCisKKyAgIC4uIG1ldGhvZDo6IHBhcnNlYnl0ZXMoYnl0ZXMsIGhlYWRlcnNvbmx5PUZhbHNlKQogCiAgICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgOnRlcm06YGJ5dGVzLWxpa2UKLSAgICAgIG9iamVjdGAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQKLSAgICAgIHRvIHdyYXBwaW5nICp0ZXh0KiBpbiBhIDpjbGFzczpgfmlvLkJ5dGVzSU9gIGluc3RhbmNlIGZpcnN0IGFuZCBjYWxsaW5nCi0gICAgICA6bWV0aDpgcGFyc2VgLgorICAgICAgb2JqZWN0YCBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYQorICAgICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBlcXVpdmFsZW50IHRvIHdyYXBwaW5nICpieXRlcyogaW4gYQorICAgICAgOmNsYXNzOmB+aW8uQnl0ZXNJT2AgaW5zdGFuY2UgZmlyc3QgYW5kIGNhbGxpbmcgOm1ldGg6YHBhcnNlYC4KIAogICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhcyB3aXRoIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gY2xhc3M6OiBCeXRlc0hlYWRlclBhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgRXhhY3RseSBsaWtlIDpjbGFzczpgQnl0ZXNQYXJzZXJgLCBleGNlcHQgdGhhdCAqaGVhZGVyc29ubHkqCisgICBkZWZhdWx0cyB0byBgYFRydWVgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFRoaXMgY2xhc3MgaXMgcGFyYWxsZWwgdG8gOmNsYXNzOmBCeXRlc1BhcnNlcmAsIGJ1dCBoYW5kbGVzIHN0cmluZyBpbnB1dC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiAqX2NsYXNzKiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCisKKworICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAgICBSZWFkIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSB0ZXh0LW1vZGUgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUKKyAgICAgIHJlc3VsdGluZyB0ZXh0LCBhbmQgcmV0dXJuIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQKKyAgICAgIGJvdGggdGhlIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgYW5kIHRoZQorICAgICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCisKKyAgICAgIE90aGVyIHRoYW4gdGhlIHRleHQgbW9kZSByZXF1aXJlbWVudCwgdGhpcyBtZXRob2Qgb3BlcmF0ZXMgbGlrZQorICAgICAgOm1ldGg6YEJ5dGVzUGFyc2VyLnBhcnNlYC4KKworCisgICAuLiBtZXRob2Q6OiBwYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seT1GYWxzZSkKKworICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIHN0cmluZyBvYmplY3QKKyAgICAgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIHN0cmluZyBpcworICAgICAgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5TdHJpbmdJT2AgaW5zdGFuY2UgZmlyc3QKKyAgICAgIGFuZCBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCisKKworLi4gY2xhc3M6OiBIZWFkZXJQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIEV4YWN0bHkgbGlrZSA6Y2xhc3M6YFBhcnNlcmAsIGV4Y2VwdCB0aGF0ICpoZWFkZXJzb25seSoKKyAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCisKIFNpbmNlIGNyZWF0aW5nIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcgb3IgYSBmaWxlIG9iamVjdCBpcyBzdWNoCiBhIGNvbW1vbiB0YXNrLCBmb3VyIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZS4gIFRoZXkgYXJlIGF2YWlsYWJsZQogaW4gdGhlIHRvcC1sZXZlbCA6bW9kOmBlbWFpbGAgcGFja2FnZSBuYW1lc3BhY2UuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbAogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2J5dGVzKHMsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuICBUaGlzIGlzCisgICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKKyAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzCisgICBjb25zdHJ1Y3Rvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmcCwgX2NsYXNzPU5vbmUsICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gYmluYXJ5IDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqIGFuZAorICAgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MKKyAgIGNvbnN0cnVjdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX3N0cmluZyhzLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KICAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMKICAgIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLiAgVGhpcyBpcyBleGFjdGx5Ci0gICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKLSAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcwotICAgY29uc3RydWN0b3IuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCiAgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YC4KLSAgIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKgotICAgYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcwotICAgY29uc3RydWN0b3IuCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUKKyAgIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42ICpfY2xhc3MqIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuCi0gICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHlvdSBtaWdodCB1c2UgdGhpcyBhdCBhbiBpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIDpmdW5jOmBtZXNzYWdlX2Zyb21fYnl0ZXNgIGF0IGFuCitpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKIAogICAgPj4+IGltcG9ydCBlbWFpbAotICAgPj4+IG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobXlTdHJpbmcpICAjIGRvY3Rlc3Q6ICtTS0lQCisgICA+Pj4gbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKG15Qnl0ZXMpICAjIGRvY3Rlc3Q6ICtTS0lQCiAKIAogQWRkaXRpb25hbCBub3RlcwpAQCAtMjc4LDM1ICsyOTQsMjcgQEAKIAogKiBNb3N0IG5vbi1cIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCB0eXBlIG1lc3NhZ2VzIGFyZSBwYXJzZWQgYXMgYSBzaW5nbGUgbWVzc2FnZQogICBvYmplY3Qgd2l0aCBhIHN0cmluZyBwYXlsb2FkLiAgVGhlc2Ugb2JqZWN0cyB3aWxsIHJldHVybiBgYEZhbHNlYGAgZm9yCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuICBUaGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kIHdpbGwgcmV0dXJuIGEgc3RyaW5nIG9iamVjdC4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgLCBhbmQKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCB3aWxsIHlpZWxkIGFuIGVtcHR5IGxpc3QuCiAKICogQWxsIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCB0eXBlIG1lc3NhZ2VzIHdpbGwgYmUgcGFyc2VkIGFzIGEgY29udGFpbmVyIG1lc3NhZ2UKICAgb2JqZWN0IHdpdGggYSBsaXN0IG9mIHN1Yi1tZXNzYWdlIG9iamVjdHMgZm9yIHRoZWlyIHBheWxvYWQuICBUaGUgb3V0ZXIKICAgY29udGFpbmVyIG1lc3NhZ2Ugd2lsbCByZXR1cm4gYGBUcnVlYGAgZm9yCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgYW5kIHRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIGxpc3Qgb2YKLSAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBzdWJwYXJ0cy4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgLCBhbmQKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCB3aWxsIHlpZWxkIGEgbGlzdCBvZiBzdWJwYXJ0cy4KIAotKiBNb3N0IG1lc3NhZ2VzIHdpdGggYSBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL1wqYCAoZS5nLgotICA6bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApIHdpbGwgYWxzbyBiZQotICBwYXJzZWQgYXMgY29udGFpbmVyIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBwYXlsb2FkIG9mIGxlbmd0aCAxLiAgVGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2Qgd2lsbCByZXR1cm4gYGBUcnVlYGAuCi0gIFRoZSBzaW5nbGUgZWxlbWVudCBpbiB0aGUgbGlzdCBwYXlsb2FkIHdpbGwgYmUgYSBzdWItbWVzc2FnZSBvYmplY3QuCisqIE1vc3QgbWVzc2FnZXMgd2l0aCBhIGNvbnRlbnQgdHlwZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvXCpgIChzdWNoIGFzCisgIDptaW1ldHlwZTpgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkgd2lsbCBhbHNvCisgIGJlIHBhcnNlZCBhcyBjb250YWluZXIgb2JqZWN0IGNvbnRhaW5pbmcgYSBsaXN0IHBheWxvYWQgb2YgbGVuZ3RoIDEuICBUaGVpcgorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLgorICBUaGUgc2luZ2xlIGVsZW1lbnQgeWllbGRlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgCisgIHdpbGwgYmUgYSBzdWItbWVzc2FnZSBvYmplY3QuCiAKLSogU29tZSBub24tc3RhbmRhcmRzIGNvbXBsaWFudCBtZXNzYWdlcyBtYXkgbm90IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBhYm91dAorKiBTb21lIG5vbi1zdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzIG1heSBub3QgYmUgaW50ZXJuYWxseSBjb25zaXN0ZW50IGFib3V0CiAgIHRoZWlyIDptaW1ldHlwZTpgbXVsdGlwYXJ0YFwgLWVkbmVzcy4gIFN1Y2ggbWVzc2FnZXMgbWF5IGhhdmUgYQogICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgb2YgdHlwZSA6bWltZXR5cGU6YG11bHRpcGFydGAsIGJ1dCB0aGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4KICAgSWYgc3VjaCBtZXNzYWdlcyB3ZXJlIHBhcnNlZCB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAsCiAgIHRoZXkgd2lsbCBoYXZlIGFuIGluc3RhbmNlIG9mIHRoZQogICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0YCBjbGFzcyBpbiB0aGVpcgogICAqZGVmZWN0cyogYXR0cmlidXRlIGxpc3QuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgZGV0YWlscy4KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsjXSBBcyBvZiBlbWFpbCBwYWNrYWdlIHZlcnNpb24gMy4wLCBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjQsIHRoZSBjbGFzc2ljCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCB3YXMgcmUtaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAsIHNvIHRoZSBzZW1hbnRpY3MgYW5kIHJlc3VsdHMgYXJlCi0gICBpZGVudGljYWwgYmV0d2VlbiB0aGUgdHdvIHBhcnNlcnMuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CmluZGV4IDJhNjA0N2QuLjhhNDE4NzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdApAQCAtMTgsOSArMTgsMTIgQEAKIGVtYWlsIG1lc3NhZ2VzIChhIGJsb2NrIG9mIGhlYWRlciBmaWVsZHMgZWFjaCBjb25zaXN0aW5nIG9mIGEgbmFtZSBmb2xsb3dlZCBieQogYSBjb2xvbiBmb2xsb3dlZCBieSBhIHZhbHVlLCB0aGUgd2hvbGUgYmxvY2sgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lIGFuZCBhbgogYXJiaXRyYXJ5ICdib2R5JyksIGlzIGEgZm9ybWF0IHRoYXQgaGFzIGZvdW5kIHV0aWxpdHkgb3V0c2lkZSBvZiB0aGUgcmVhbG0gb2YKLWVtYWlsLiAgU29tZSBvZiB0aGVzZSB1c2VzIGNvbmZvcm0gZmFpcmx5IGNsb3NlbHkgdG8gdGhlIG1haW4gUkZDcywgc29tZSBkbwotbm90LiAgQW5kIGV2ZW4gd2hlbiB3b3JraW5nIHdpdGggZW1haWwsIHRoZXJlIGFyZSB0aW1lcyB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0bwotYnJlYWsgc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcy4KK2VtYWlsLiAgU29tZSBvZiB0aGVzZSB1c2VzIGNvbmZvcm0gZmFpcmx5IGNsb3NlbHkgdG8gdGhlIG1haW4gZW1haWwgUkZDcywgc29tZQorZG8gbm90LiAgRXZlbiB3aGVuIHdvcmtpbmcgd2l0aCBlbWFpbCwgdGhlcmUgYXJlIHRpbWVzIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvCiticmVhayBzdHJpY3QgY29tcGxpYW5jZSB3aXRoIHRoZSBSRkNzLCBzdWNoIGFzIGdlbmVyYXRpbmcgZW1haWxzIHRoYXQKK2ludGVyb3BlcmF0ZSB3aXRoIGVtYWlsIHNlcnZlcnMgdGhhdCBkbyBub3QgdGhlbXNlbHZlcyBmb2xsb3cgdGhlIHN0YW5kYXJkcywgb3IKK3RoYXQgaW1wbGVtZW50IGV4dGVuc2lvbnMgeW91IHdhbnQgdG8gdXNlIGluIHdheXMgdGhhdCB2aW9sYXRlIHRoZQorc3RhbmRhcmRzLgogCiBQb2xpY3kgb2JqZWN0cyBnaXZlIHRoZSBlbWFpbCBwYWNrYWdlIHRoZSBmbGV4aWJpbGl0eSB0byBoYW5kbGUgYWxsIHRoZXNlCiBkaXNwYXJhdGUgdXNlIGNhc2VzLgpAQCAtMzEsMjcgKzM0LDQwIEBACiBlbWFpbCBwYWNrYWdlIHRvIGFsdGVyIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiAgVGhlIHNldHRhYmxlIHZhbHVlcyBhbmQgdGhlaXIKIGRlZmF1bHRzIGFyZSBkZXNjcmliZWQgYmVsb3cuCiAKLVRoZXJlIGlzIGEgZGVmYXVsdCBwb2xpY3kgdXNlZCBieSBhbGwgY2xhc3NlcyBpbiB0aGUgZW1haWwgcGFja2FnZS4gIFRoaXMKLXBvbGljeSBpcyBuYW1lZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2l0aCBhIGNvcnJlc3BvbmRpbmcgcHJlLWRlZmluZWQgaW5zdGFuY2UKLW5hbWVkIDpjb25zdDpgY29tcGF0MzJgLiAgSXQgcHJvdmlkZXMgZm9yIGNvbXBsZXRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGluCi1zb21lIGNhc2VzLCBpbmNsdWRpbmcgYnVnIGNvbXBhdGliaWxpdHkpIHdpdGggdGhlIHByZS1QeXRob24zLjMgdmVyc2lvbiBvZiB0aGUKLWVtYWlsIHBhY2thZ2UuCitUaGVyZSBpcyBhIGRlZmF1bHQgcG9saWN5IHVzZWQgYnkgYWxsIGNsYXNzZXMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgYWxsIG9mCit0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgY2xhc3NlcyBhbmQgdGhlIHJlbGF0ZWQgY29udmVuaWVuY2UgZnVuY3Rpb25zLCBhbmQgZm9yCit0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcywgdGhpcyBpcyB0aGUgOmNsYXNzOmBDb21wYXQzMmAKK3BvbGljeSwgdmlhIGl0cyBjb3JyZXNwb25kaW5nIHByZS1kZWZpbmVkIGluc3RhbmNlIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcworcG9saWN5IHByb3ZpZGVzIGZvciBjb21wbGV0ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IChpbiBzb21lIGNhc2VzLCBpbmNsdWRpbmcKK2J1ZyBjb21wYXRpYmlsaXR5KSB3aXRoIHRoZSBwcmUtUHl0aG9uMy4zIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuCisKK1RoaXMgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICpwb2xpY3kqIGtleXdvcmQgdG8KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyB0aGUgOmNsYXNzOmBFbWFpbFBvbGljeWAgcG9saWN5LCB2aWEKK2l0cyBwcmUtZGVmaW5lZCBpbnN0YW5jZSA6ZGF0YTpgfmRlZmF1bHRgLgorCitXaGVuIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKK29iamVjdCBpcyBjcmVhdGVkLCBpdCBhY3F1aXJlcyBhIHBvbGljeS4gIElmIHRoZSBtZXNzYWdlIGlzIGNyZWF0ZWQgYnkgYQorOm1vZDpgfmVtYWlsLnBhcnNlcmAsIGEgcG9saWN5IHBhc3NlZCB0byB0aGUgcGFyc2VyIHdpbGwgYmUgdGhlIHBvbGljeSB1c2VkIGJ5Cit0aGUgbWVzc2FnZSBpdCBjcmVhdGVzLiAgSWYgdGhlIG1lc3NhZ2UgaXMgY3JlYXRlZCBieSB0aGUgcHJvZ3JhbSwgdGhlbiB0aGUKK3BvbGljeSBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaXQgaXMgY3JlYXRlZC4gIFdoZW4gYSBtZXNzYWdlIGlzIHBhc3NlZCB0byBhCis6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwgdGhlIGdlbmVyYXRvciB1c2VzIHRoZSBwb2xpY3kgZnJvbSB0aGUgbWVzc2FnZSBieQorZGVmYXVsdCwgYnV0IHlvdSBjYW4gYWxzbyBwYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsCitvdmVycmlkZSB0aGUgb25lIHN0b3JlZCBvbiB0aGUgbWVzc2FnZSBvYmplY3QuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKnBvbGljeSoga2V5d29yZCBmb3IgdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgY2xhc3NlcworYW5kIHRoZSBwYXJzZXIgY29udmVuaWVuY2UgZnVuY3Rpb25zICoqd2lsbCBiZSBjaGFuZ2luZyoqIGluIGEgZnV0dXJlIHZlcnNpb24gb2YKK1B5dGhvbi4gIFRoZXJlZm9yZSB5b3Ugc2hvdWxkICoqYWx3YXlzIHNwZWNpZnkgZXhwbGljaXRseSB3aGljaCBwb2xpY3kgeW91IHdhbnQKK3RvIHVzZSoqIHdoZW4gY2FsbGluZyBhbnkgb2YgdGhlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gdGhlCis6bW9kOmB+ZW1haWwucGFyc2VyYCBtb2R1bGUuCiAKIFRoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgZG9jdW1lbnRhdGlvbiBjb3ZlcnMgdGhlIGZlYXR1cmVzIG9mIDpjbGFzczpgUG9saWN5YCwgYW4KLTp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCAgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCis6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCiBwb2xpY3kgb2JqZWN0cywgaW5jbHVkaW5nIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcyBpbmNsdWRlcyBjZXJ0YWluIGhvb2sKIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHdoaWNoIGEgY3VzdG9tIHBvbGljeQotY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4KLQotV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGFjcXVpcmVzIGEgcG9saWN5LgotQnkgZGVmYXVsdCB0aGlzIHdpbGwgYmUgOmNvbnN0OmBjb21wYXQzMmAsIGJ1dCBhIGRpZmZlcmVudCBwb2xpY3kgY2FuIGJlCi1zcGVjaWZpZWQuICBJZiB0aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeQotcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2lsbCBiZSB0aGUgcG9saWN5IHVzZWQgYnkgdGhlIGBgTWVzc2FnZWBgIGl0IGNyZWF0ZXMuICBJZgotdGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlIHBvbGljeSBjYW4gYmUgc3BlY2lmaWVkCi13aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgYGBNZXNzYWdlYGAgaXMgcGFzc2VkIHRvIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsCi10aGUgZ2VuZXJhdG9yIHVzZXMgdGhlIHBvbGljeSBmcm9tIHRoZSBgYE1lc3NhZ2VgYCBieSBkZWZhdWx0LCBidXQgeW91IGNhbiBhbHNvCi1wYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsIG92ZXJyaWRlIHRoZSBvbmUgc3RvcmVkIG9uCi10aGUgYGBNZXNzYWdlYGAgb2JqZWN0LgorY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4gIFRoZSBzZWNvbmQgcGFydCBkZXNjcmliZXMgdGhlCitjb25jcmV0ZSBjbGFzc2VzIDpjbGFzczpgRW1haWxQb2xpY3lgIGFuZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2hpY2ggaW1wbGVtZW50Cit0aGUgaG9va3MgdGhhdCBwcm92aWRlIHRoZSBzdGFuZGFyZCBiZWhhdmlvciBhbmQgdGhlIGJhY2t3YXJkIGNvbXBhdGlibGUKK2JlaGF2aW9yIGFuZCBmZWF0dXJlcywgcmVzcGVjdGl2ZWx5LgogCiA6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2VzIGFyZSBpbW11dGFibGUsIGJ1dCB0aGV5IGNhbiBiZSBjbG9uZWQsIGFjY2VwdGluZyB0aGUKIHNhbWUga2V5d29yZCBhcmd1bWVudHMgYXMgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5pbmcgYSBuZXcKQEAgLTE0Nyw2ICsxNjMsNyBAQAogICAgVGhpcyBjbGFzcyBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcywgYW5kIHRodXMgdmFsdWVzIGZvciB0aGUKICAgIGZvbGxvd2luZyBtYXkgYmUgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhbnkgcG9saWN5IGNsYXNzOgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IG1heF9saW5lX2xlbmd0aAogCiAgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGxpbmUgaW4gdGhlIHNlcmlhbGl6ZWQgb3V0cHV0LCBub3QgY291bnRpbmcgdGhlCkBAIC0xNTQsMTIgKzE3MSwxNCBAQAogICAgICAgYGAwYGAgb3IgOmNvbnN0OmBOb25lYCBpbmRpY2F0ZXMgdGhhdCBubyBsaW5lIHdyYXBwaW5nIHNob3VsZCBiZQogICAgICAgZG9uZSBhdCBhbGwuCiAKKwogICAgLi4gYXR0cmlidXRlOjogbGluZXNlcAogCiAgICAgICBUaGUgc3RyaW5nIHRvIGJlIHVzZWQgdG8gdGVybWluYXRlIGxpbmVzIGluIHNlcmlhbGl6ZWQgb3V0cHV0LiAgVGhlCiAgICAgICBkZWZhdWx0IGlzIGBgXG5gYCBiZWNhdXNlIHRoYXQncyB0aGUgaW50ZXJuYWwgZW5kLW9mLWxpbmUgZGlzY2lwbGluZSB1c2VkCiAgICAgICBieSBQeXRob24sIHRob3VnaCBgYFxyXG5gYCBpcyByZXF1aXJlZCBieSB0aGUgUkZDcy4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBjdGVfdHlwZQogCiAgICAgICBDb250cm9scyB0aGUgdHlwZSBvZiBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5ncyB0aGF0IG1heSBiZSBvciBhcmUKQEAgLTE3NCw4ICsxOTMsOCBAQAogCiAgICAgICBgYDhiaXRgYCAgZGF0YSBpcyBub3QgY29uc3RyYWluZWQgdG8gYmUgNyBiaXQgY2xlYW4uICBEYXRhIGluIGhlYWRlcnMgaXMKICAgICAgICAgICAgICAgICBzdGlsbCByZXF1aXJlZCB0byBiZSBBU0NJSS1vbmx5IGFuZCBzbyB3aWxsIGJlIGVuY29kZWQgKHNlZQotICAgICAgICAgICAgICAgICdiaW5hcnlfZm9sZCcgYmVsb3cgZm9yIGFuIGV4Y2VwdGlvbiksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UKLSAgICAgICAgICAgICAgICB0aGUgYGA4Yml0YGAgQ1RFLgorICAgICAgICAgICAgICAgIDptZXRoOmBmb2xkX2JpbmFyeWAgYW5kIDphdHRyOmB+RW1haWxQb2xpY3kudXRmOGAgYmVsb3cgZm9yCisgICAgICAgICAgICAgICAgZXhjZXB0aW9ucyksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UgdGhlIGBgOGJpdGBgIENURS4KICAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogICAgICAgQSBgYGN0ZV90eXBlYGAgdmFsdWUgb2YgYGA4Yml0YGAgb25seSB3b3JrcyB3aXRoIGBgQnl0ZXNHZW5lcmF0b3JgYCwgbm90CkBAIC0xODMsNiArMjAyLDcgQEAKICAgICAgIGBgR2VuZXJhdG9yYGAgaXMgb3BlcmF0aW5nIHVuZGVyIGEgcG9saWN5IHRoYXQgc3BlY2lmaWVzCiAgICAgICBgYGN0ZV90eXBlPThiaXRgYCwgaXQgd2lsbCBhY3QgYXMgaWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJhaXNlX29uX2RlZmVjdAogCiAgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBhbnkgZGVmZWN0cyBlbmNvdW50ZXJlZCB3aWxsIGJlIHJhaXNlZCBhcyBlcnJvcnMuICBJZgpAQCAtMTkwLDcgKzIxMCw2IEBACiAgICAgICA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YCBtZXRob2QuCiAKIAotCiAgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbVxfCiAKICAgICAgIElmIDpjb25zdDpgVHJ1ZWAsIGxpbmVzIHN0YXJ0aW5nIHdpdGggKiJGcm9tICIqIGluIHRoZSBib2R5IGFyZQpAQCAtMjAxLDE5ICsyMjAsMzEgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogICAgICAgICAgVGhlICptYW5nbGVfZnJvbV8qIHBhcmFtZXRlci4KIAorCisgICAuLiBhdHRyaWJ1dGU6OiBtZXNzYWdlX2ZhY3RvcnkKKworICAgICAgQSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBjb25zdHJ1Y3RpbmcgYSBuZXcgZW1wdHkgbWVzc2FnZSBvYmplY3QuICBVc2VkCisgICAgICBieSB0aGUgcGFyc2VyIHdoZW4gYnVpbGRpbmcgbWVzc2FnZXMuICBEZWZhdWx0cyB0byBgYE5vbmVgYCwgaW4KKyAgICAgIHdoaWNoIGNhc2UgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpcyB1c2VkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogICAgVGhlIGZvbGxvd2luZyA6Y2xhc3M6YFBvbGljeWAgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb2RlIHVzaW5nCiAgICB0aGUgZW1haWwgbGlicmFyeSB0byBjcmVhdGUgcG9saWN5IGluc3RhbmNlcyB3aXRoIGN1c3RvbSBzZXR0aW5nczoKIAorCiAgICAuLiBtZXRob2Q6OiBjbG9uZSgqKmt3KQogCiAgICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlIHdob3NlIGF0dHJpYnV0ZXMgaGF2ZSB0aGUgc2FtZQogICAgICAgdmFsdWVzIGFzIHRoZSBjdXJyZW50IGluc3RhbmNlLCBleGNlcHQgd2hlcmUgdGhvc2UgYXR0cmlidXRlcyBhcmUKICAgICAgIGdpdmVuIG5ldyB2YWx1ZXMgYnkgdGhlIGtleXdvcmQgYXJndW1lbnRzLgogCisKICAgIFRoZSByZW1haW5pbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgZW1haWwgcGFja2FnZSBjb2RlLAogICAgYW5kIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlLgogICAgQSBjdXN0b20gcG9saWN5IG11c3QgaW1wbGVtZW50IGFsbCBvZiB0aGVzZSBtZXRob2RzLgogCisKICAgIC4uIG1ldGhvZDo6IGhhbmRsZV9kZWZlY3Qob2JqLCBkZWZlY3QpCiAKICAgICAgIEhhbmRsZSBhICpkZWZlY3QqIGZvdW5kIG9uICpvYmoqLiAgV2hlbiB0aGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzCkBAIC0yMjQsNiArMjU1LDcgQEAKICAgICAgIGl0IGlzIGBgVHJ1ZWBgLCAqZGVmZWN0KiBpcyByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLiAgSWYgaXQgaXMgYGBGYWxzZWBgCiAgICAgICAodGhlIGRlZmF1bHQpLCAqb2JqKiBhbmQgKmRlZmVjdCogYXJlIHBhc3NlZCB0byA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YC4KIAorCiAgICAuLiBtZXRob2Q6OiByZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCiAKICAgICAgIFJlZ2lzdGVyIGEgKmRlZmVjdCogb24gKm9iaiouICBJbiB0aGUgZW1haWwgcGFja2FnZSwgKmRlZmVjdCogd2lsbCBhbHdheXMKQEAgLTIzNiwxNCArMjY4LDE2IEBACiAgICAgICBjdXN0b20gYGBNZXNzYWdlYGAgb2JqZWN0cykgc2hvdWxkIGFsc28gcHJvdmlkZSBzdWNoIGFuIGF0dHJpYnV0ZSwKICAgICAgIG90aGVyd2lzZSBkZWZlY3RzIGluIHBhcnNlZCBtZXNzYWdlcyB3aWxsIHJhaXNlIHVuZXhwZWN0ZWQgZXJyb3JzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKIAogICAgICAgUmV0dXJuIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIGhlYWRlcnMgbmFtZWQgKm5hbWUqLgogCi0gICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAKLSAgICAgIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBub3QgYGAwYGAgb3IgYGBOb25lYGAsIGFuZCB0aGVyZSBhcmUKLSAgICAgIGFscmVhZHkgYSBudW1iZXIgb2YgaGVhZGVycyB3aXRoIHRoZSBuYW1lICpuYW1lKiBlcXVhbCB0byB0aGUgdmFsdWUKLSAgICAgIHJldHVybmVkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIENhbGxlZCB3aGVuIGEgaGVhZGVyIGlzIGFkZGVkIHRvIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgICAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90CisgICAgICBgYDBgYCBvciBgYE5vbmVgYCwgYW5kIHRoZXJlIGFyZSBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUKKyAgICAgIG5hbWUgKm5hbWUqIGdyZWF0aGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIHJldHVybmVkLCBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKICAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGBNZXNzYWdlLl9fc2V0aXRlbV9fYGAgaXMgdG8gYXBwZW5kIHRoZQogICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKQEAgLTI1NSw2ICsyODksNyBAQAogCiAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGBgTm9uZWBgIGZvciBhbGwgaGVhZGVyIG5hbWVzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggYSBsaXN0IG9mIHN0cmluZ3MsIGVhY2ggc3RyaW5nCkBAIC0yNzQsNiArMzA5LDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgbmFtZSBhbmQgdmFsdWUgcHJvdmlkZWQgYnkKQEAgLTI4OSw2ICszMjUsNyBAQAogCiAgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSAqbmFtZSogYW5kICp2YWx1ZSogY3VycmVudGx5CkBAIC0zMDQsNiArMzQxLDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKQEAgLTMxNiw2ICszNTQsNyBAQAogICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCiAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZC4KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIHNhbWUgYXMgOm1ldGg6YGZvbGRgLCBleGNlcHQgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIGJlIGEKQEAgLTMyNSw3MyArMzY0LDYgQEAKICAgICAgIGNvbnZlcnRlZCBiYWNrIGludG8gYmluYXJ5IGRhdGEgaW4gdGhlIHJldHVybmVkIGJ5dGVzIG9iamVjdC4KIAogCi0uLiBjbGFzczo6IENvbXBhdDMyKCoqa3cpCi0KLSAgIFRoaXMgY29uY3JldGUgOmNsYXNzOmBQb2xpY3lgIGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHBvbGljeS4gIEl0Ci0gICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgVGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCi0gICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKLSAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgotCi0gICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgaGF2ZSB2YWx1ZXMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlCi0gICA6Y2xhc3M6YFBvbGljeWAgZGVmYXVsdDoKLQotICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21fCi0KLSAgICAgIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgLgotCi0gICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCi0gICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKLQotICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKLQotICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCi0gICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKLSAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCi0gICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KLQotICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQotCi0gICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCi0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKLQotICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KLSAgICAgIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQotCi0gICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKLSAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCi0gICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQotICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KLQotICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCi0KLSAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZwotICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKLSAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKLSAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKLSAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKLSAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbnkgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpdCBtYXkgY29udGFpbi4KLQotCi1BbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCBpcyBwcm92aWRlZCBhcyBhIG1vZHVsZSBjb25zdGFudDoKLQotLi4gZGF0YTo6IGNvbXBhdDMyCi0KLSAgIEFuIGluc3RhbmNlIG9mIDpjbGFzczpgQ29tcGF0MzJgLCBwcm92aWRpbmcgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuCi0KLQotLi4gbm90ZTo6Ci0KLSAgIFRoZSBkb2N1bWVudGF0aW9uIGJlbG93IGRlc2NyaWJlcyBuZXcgcG9saWNpZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlCi0gICBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0gICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgZmVhdHVyZSkKLSAgIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIAogLi4gY2xhc3M6OiBFbWFpbFBvbGljeSgqKmt3KQogCkBAIC00MDQsOSArMzc2LDE1IEBACiAgICBvbiB0aGUgdHlwZSBvZiB0aGUgZmllbGQuICBUaGUgcGFyc2luZyBhbmQgZm9sZGluZyBhbGdvcml0aG0gZnVsbHkgaW1wbGVtZW50CiAgICA6cmZjOmAyMDQ3YCBhbmQgOnJmYzpgNTMyMmAuCiAKKyAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1lc3NhZ2VfZmFjdG9yeWAKKyAgIGF0dHJpYnV0ZSBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzZXR0YWJsZSBhdHRyaWJ1dGVzIGxpc3RlZCBhYm92ZSB0aGF0IGFwcGx5IHRvIGFsbAogICAgcG9saWNpZXMsIHRoaXMgcG9saWN5IGFkZHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCisKKwogICAgLi4gYXR0cmlidXRlOjogdXRmOAogCiAgICAgICBJZiBgYEZhbHNlYGAsIGZvbGxvdyA6cmZjOmA1MzIyYCwgc3VwcG9ydGluZyBub24tQVNDSUkgY2hhcmFjdGVycyBpbgpAQCAtNDE1LDEzICszOTMsMTQgQEAKICAgICAgIGZvcm1hdHRlZCBpbiB0aGlzIHdheSBtYXkgYmUgcGFzc2VkIHRvIFNNVFAgc2VydmVycyB0aGF0IHN1cHBvcnQKICAgICAgIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkuCiAKKwogICAgLi4gYXR0cmlidXRlOjogcmVmb2xkX3NvdXJjZQogCiAgICAgICBJZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBgYE1lc3NhZ2VgYCBvYmplY3Qgb3JpZ2luYXRlZCBmcm9tIGEKICAgICAgIDptb2Q6YH5lbWFpbC5wYXJzZXJgIChhcyBvcHBvc2VkIHRvIGJlaW5nIHNldCBieSBhIHByb2dyYW0pLCB0aGlzCiAgICAgICBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZXJhdG9yIHNob3VsZCByZWZvbGQgdGhhdCB2YWx1ZQotICAgICAgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvIHN0cmVhbSBmb3JtLiAgVGhlIHBvc3NpYmxlIHZhbHVlcwotICAgICAgYXJlOgorICAgICAgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvIHNlcmlhbGl6ZWQgZm9ybS4gIFRoZSBwb3NzaWJsZQorICAgICAgdmFsdWVzIGFyZToKIAogICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgYGBub25lYGAgIGFsbCBzb3VyY2UgdmFsdWVzIHVzZSBvcmlnaW5hbCBmb2xkaW5nCkBAIC00MzQsMjMgKzQxMywyNCBAQAogCiAgICAgICBUaGUgZGVmYXVsdCBpcyBgYGxvbmdgYC4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBoZWFkZXJfZmFjdG9yeQogCiAgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCwgd2hlcmUKICAgICAgIGBgbmFtZWBgIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kIGBgdmFsdWVgYCBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQKICAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyBhIHN0cmluZyBzdWJjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIuICBBCiAgICAgICBkZWZhdWx0IGBgaGVhZGVyX2ZhY3RvcnlgYCAoc2VlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWApIGlzIHByb3ZpZGVkCi0gICAgICB0aGF0IHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIDpSRkM6YDUzMjJgIGhlYWRlciBmaWVsZCB0eXBlcy4gIChDdXJyZW50bHkKLSAgICAgIGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIKLSAgICAgIGZpZWxkcyBhcmUgdHJlYXRlZCBhcyB1bnN0cnVjdHVyZWQuICBUaGlzIGxpc3Qgd2lsbCBiZSBjb21wbGV0ZWQgYmVmb3JlCi0gICAgICB0aGUgZXh0ZW5zaW9uIGlzIG1hcmtlZCBzdGFibGUuKQorICAgICAgdGhhdCBzdXBwb3J0cyBjdXN0b20gcGFyc2luZyBmb3IgdGhlIHZhcmlvdXMgYWRkcmVzcyBhbmQgZGF0ZSA6UkZDOmA1MzIyYAorICAgICAgaGVhZGVyIGZpZWxkIHR5cGVzLCBhbmQgdGhlIG1ham9yIE1JTUUgaGVhZGVyIGZpZWxkIHN0eXBlcy4gIFN1cHBvcnQgZm9yCisgICAgICBhZGRpdGlvbmFsIGN1c3RvbSBwYXJzaW5nIHdpbGwgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KKwogCiAgICAuLiBhdHRyaWJ1dGU6OiBjb250ZW50X21hbmFnZXIKIAogICAgICAgQW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgdHdvIG1ldGhvZHM6IGdldF9jb250ZW50IGFuZCBzZXRfY29udGVudC4gIFdoZW4KLSAgICAgIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfY29udGVudGAgb3IKLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2Qgb2YgYQotICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgaXMgY2FsbGVkLCBpdCBjYWxscyB0aGUKKyAgICAgIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9jb250ZW50YCBvcgorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kIG9mIGFuCisgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0IGlzIGNhbGxlZCwgaXQgY2FsbHMgdGhlCiAgICAgICBjb3JyZXNwb25kaW5nIG1ldGhvZCBvZiB0aGlzIG9iamVjdCwgcGFzc2luZyBpdCB0aGUgbWVzc2FnZSBvYmplY3QgYXMgaXRzCiAgICAgICBmaXJzdCBhcmd1bWVudCwgYW5kIGFueSBhcmd1bWVudHMgb3Iga2V5d29yZHMgdGhhdCB3ZXJlIHBhc3NlZCB0byBpdCBhcwogICAgICAgYWRkaXRpb25hbCBhcmd1bWVudHMuICBCeSBkZWZhdWx0IGBgY29udGVudF9tYW5hZ2VyYGAgaXMgc2V0IHRvCkBAIC00NjIsMTYgKzQ0MiwyMiBAQAogICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhYnN0cmFjdAogICAgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX21heF9jb3VudChuYW1lKQogCiAgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5tYXhfY291bnRgIGF0dHJpYnV0ZSBvZiB0aGUKICAgICAgIHNwZWNpYWxpemVkIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQogCi0gICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QgaXMgdGhlIHNhbWUgYXMgdGhhdCBmb3IgdGhlCi0gICAgICA6Y2xhc3M6YENvbXBhdDMyYCBwb2xpY3kuCisKKyAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAorICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCisgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAorICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKIAogICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQogCkBAIC00ODIsNiArNDY4LDcgQEAKICAgICAgIHRoZSB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQgdmFsdWUKICAgICAgIGNvbnRhaW5zIENSIG9yIExGIGNoYXJhY3RlcnMuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQogCiAgICAgICBJZiB0aGUgdmFsdWUgaGFzIGEgYGBuYW1lYGAgYXR0cmlidXRlLCBpdCBpcyByZXR1cm5lZCB0byB1bm1vZGlmaWVkLgpAQCAtNDkwLDYgKzQ3Nyw3IEBACiAgICAgICBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkLiAgQW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgZ2V0IHR1cm5lZCBpbnRvCiAgICAgICB0aGUgdW5pY29kZSB1bmtub3duLWNoYXJhY3RlciBnbHlwaC4KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQogCiAgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YXR0cjpgcmVmb2xkX3NvdXJjZWAgcG9saWN5IHNldHRpbmcuCkBAIC01MDgsNiArNDk2LDcgQEAKICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGBgcmVmb2xkX3NvdXJjZWBgIHNldHRpbmcsIHdoaWNoIGNhdXNlcyB0aGUgYmluYXJ5IGRhdGEKICAgICAgIHRvIGJlIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCBpZiA6YXR0cjpgflBvbGljeS5jdGVfdHlwZWAgaXMgYGA3Yml0YGAsIGV4Y2VwdApAQCAtNTE5LDIzICs1MDgsMjcgQEAKICAgICAgIGBgcmVmb2xkX2hlYWRlcmBgIHNldHRpbmcsIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZXRoZXIgdGhlCiAgICAgICBiaW5hcnkgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgogCisKIFRoZSBmb2xsb3dpbmcgaW5zdGFuY2VzIG9mIDpjbGFzczpgRW1haWxQb2xpY3lgIHByb3ZpZGUgZGVmYXVsdHMgc3VpdGFibGUgZm9yCiBzcGVjaWZpYyBhcHBsaWNhdGlvbiBkb21haW5zLiAgTm90ZSB0aGF0IGluIHRoZSBmdXR1cmUgdGhlIGJlaGF2aW9yIG9mIHRoZXNlCiBpbnN0YW5jZXMgKGluIHBhcnRpY3VsYXIgdGhlIGBgSFRUUGBgIGluc3RhbmNlKSBtYXkgYmUgYWRqdXN0ZWQgdG8gY29uZm9ybSBldmVuCiBtb3JlIGNsb3NlbHkgdG8gdGhlIFJGQ3MgcmVsZXZhbnQgdG8gdGhlaXIgZG9tYWlucy4KIAorCiAuLiBkYXRhOjogZGVmYXVsdAogCiAgICBBbiBpbnN0YW5jZSBvZiBgYEVtYWlsUG9saWN5YGAgd2l0aCBhbGwgZGVmYXVsdHMgdW5jaGFuZ2VkLiAgVGhpcyBwb2xpY3kKICAgIHVzZXMgdGhlIHN0YW5kYXJkIFB5dGhvbiBgYFxuYGAgbGluZSBlbmRpbmdzIHJhdGhlciB0aGFuIHRoZSBSRkMtY29ycmVjdAogICAgYGBcclxuYGAuCiAKKwogLi4gZGF0YTo6IFNNVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIG1lc3NhZ2VzIGluIGNvbmZvcm1hbmNlIHdpdGggdGhlIGVtYWlsIFJGQ3MuCiAgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQwogICAgY29tcGxpYW50LgogCisKIC4uIGRhdGE6OiBTTVRQVVRGOAogCiAgICBUaGUgc2FtZSBhcyBgYFNNVFBgYCBleGNlcHQgdGhhdCA6YXR0cjpgfkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgVHJ1ZWBgLgpAQCAtNTQ0LDExICs1MzcsMTMgQEAKICAgIHNlbmRlciBvciByZWNpcGllbnQgYWRkcmVzc2VzIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgKHRoZQogICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zZW5kX21lc3NhZ2VgIG1ldGhvZCBoYW5kbGVzIHRoaXMgYXV0b21hdGljYWxseSkuCiAKKwogLi4gZGF0YTo6IEhUVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIGhlYWRlcnMgd2l0aCBmb3IgdXNlIGluIEhUVFAgdHJhZmZpYy4gIExpa2UKICAgIGBgU01UUGBgIGV4Y2VwdCB0aGF0IGBgbWF4X2xpbmVfbGVuZ3RoYGAgaXMgc2V0IHRvIGBgTm9uZWBgICh1bmxpbWl0ZWQpLgogCisKIC4uIGRhdGE6OiBzdHJpY3QKIAogICAgQ29udmVuaWVuY2UgaW5zdGFuY2UuICBUaGUgc2FtZSBhcyBgYGRlZmF1bHRgYCBleGNlcHQgdGhhdApAQCAtNTU3LDYgKzU1Miw3IEBACiAKICAgICAgICAgc29tZXBvbGljeSArIHBvbGljeS5zdHJpY3QKIAorCiBXaXRoIGFsbCBvZiB0aGVzZSA6Y2xhc3M6YEVtYWlsUG9saWNpZXMgPC5FbWFpbFBvbGljeT5gLCB0aGUgZWZmZWN0aXZlIEFQSSBvZgogdGhlIGVtYWlsIHBhY2thZ2UgaXMgY2hhbmdlZCBmcm9tIHRoZSBQeXRob24gMy4yIEFQSSBpbiB0aGUgZm9sbG93aW5nIHdheXM6CiAKQEAgLTU3Myw3ICs1NjksNyBAQAogICAgICBhbmQgYWxsb3dlZC4KIAogRnJvbSB0aGUgYXBwbGljYXRpb24gdmlldywgdGhpcyBtZWFucyB0aGF0IGFueSBoZWFkZXIgb2J0YWluZWQgdGhyb3VnaCB0aGUKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXMgYSBoZWFkZXIgb2JqZWN0IHdpdGggZXh0cmEKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyBhIGhlYWRlciBvYmplY3Qgd2l0aCBleHRyYQogYXR0cmlidXRlcywgd2hvc2Ugc3RyaW5nIHZhbHVlIGlzIHRoZSBmdWxseSBkZWNvZGVkIHVuaWNvZGUgdmFsdWUgb2YgdGhlCiBoZWFkZXIuICBMaWtld2lzZSwgYSBoZWFkZXIgbWF5IGJlIGFzc2lnbmVkIGEgbmV3IHZhbHVlLCBvciBhIG5ldyBoZWFkZXIKIGNyZWF0ZWQsIHVzaW5nIGEgdW5pY29kZSBzdHJpbmcsIGFuZCB0aGUgcG9saWN5IHdpbGwgdGFrZSBjYXJlIG9mIGNvbnZlcnRpbmcKQEAgLTU4MSwzICs1NzcsNzUgQEAKIAogVGhlIGhlYWRlciBvYmplY3RzIGFuZCB0aGVpciBhdHRyaWJ1dGVzIGFyZSBkZXNjcmliZWQgaW4KIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAuCisKKworCisuLiBjbGFzczo6IENvbXBhdDMyKCoqa3cpCisKKyAgIFRoaXMgY29uY3JldGUgOmNsYXNzOmBQb2xpY3lgIGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHBvbGljeS4gIEl0CisgICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgVGhlCisgICA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCisgICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgorCisgICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgaGF2ZSB2YWx1ZXMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlCisgICA6Y2xhc3M6YFBvbGljeWAgZGVmYXVsdDoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbV8KKworICAgICAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAuCisKKworICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZQorICAgYWJzdHJhY3QgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCisgICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKKyAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCisgICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYQorICAgICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0IHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCisgICAgICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKKyAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCisgICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQorICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworCisgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCisgICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcworICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIElmIGBgY3RlX3R5cGVgYCBpcworICAgICAgYGA3Yml0YGAsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYAorICAgICAgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlIGhlYWRlciBpcyB1c2VkLCB3aXRoIGl0cyBleGlzdGluZworICAgICAgbGluZSBicmVha3MgYW5kIGFueSAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGl0IG1heSBjb250YWluLgorCisKKy4uIGRhdGE6OiBjb21wYXQzMgorCisgICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuMyBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBmZWF0dXJlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAppbmRleCBlOGJiMDJiLi5jNDE4N2RkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CkBAIC0zLDUwICszLDEwNCBAQAogCiAuLiBtb2R1bGU6OiBlbWFpbAogICAgOnN5bm9wc2lzOiBQYWNrYWdlIHN1cHBvcnRpbmcgdGhlIHBhcnNpbmcsIG1hbmlwdWxhdGluZywgYW5kIGdlbmVyYXRpbmcKLSAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4KLQotLi4gbW9kdWxlYXV0aG9yOjogQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgotLi4gc2VjdGlvbmF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KLS4uIENvcHlyaWdodCAoQykgMjAwMS0yMDEwIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2VzLgorLi4gbW9kdWxlYXV0aG9yOjogQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPiwKKyAgICAgICAgICAgICAgICAgIFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9fX2luaXRfXy5weWAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIGEgbGlicmFyeSBmb3IgbWFuYWdpbmcgZW1haWwgbWVzc2FnZXMsIGluY2x1ZGluZwotTUlNRSBhbmQgb3RoZXIgOnJmYzpgMjgyMmBcIC1iYXNlZCBtZXNzYWdlIGRvY3VtZW50cy4gIEl0IGlzIHNwZWNpZmljYWxseSAqbm90KgotZGVzaWduZWQgdG8gZG8gYW55IHNlbmRpbmcgb2YgZW1haWwgbWVzc2FnZXMgdG8gU01UUCAoOnJmYzpgMjgyMWApLCBOTlRQLCBvcgotb3RoZXIgc2VydmVyczsgdGhvc2UgYXJlIGZ1bmN0aW9ucyBvZiBtb2R1bGVzIHN1Y2ggYXMgOm1vZDpgc210cGxpYmAgYW5kCi06bW9kOmBubnRwbGliYC4gVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGF0dGVtcHRzIHRvIGJlIGFzIFJGQy1jb21wbGlhbnQgYXMKLXBvc3NpYmxlLCBzdXBwb3J0aW5nIGluIGFkZGl0aW9uIHRvIDpyZmM6YDI4MjJgLCBzdWNoIE1JTUUtcmVsYXRlZCBSRkNzIGFzCi06cmZjOmAyMDQ1YCwgOnJmYzpgMjA0NmAsIDpyZmM6YDIwNDdgLCBhbmQgOnJmYzpgMjIzMWAuCitUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgYSBsaWJyYXJ5IGZvciBtYW5hZ2luZyBlbWFpbCBtZXNzYWdlcy4gIEl0IGlzCitzcGVjaWZpY2FsbHkgKm5vdCogZGVzaWduZWQgdG8gZG8gYW55IHNlbmRpbmcgb2YgZW1haWwgbWVzc2FnZXMgdG8gU01UUAorKDpyZmM6YDI4MjFgKSwgTk5UUCwgb3Igb3RoZXIgc2VydmVyczsgdGhvc2UgYXJlIGZ1bmN0aW9ucyBvZiBtb2R1bGVzIHN1Y2ggYXMKKzptb2Q6YHNtdHBsaWJgIGFuZCA6bW9kOmBubnRwbGliYC4gIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBhdHRlbXB0cyB0byBiZSBhcworUkZDLWNvbXBsaWFudCBhcyBwb3NzaWJsZSwgc3VwcG9ydGluZyA6cmZjOmA1MjMzYCBhbmQgOnJmYzpgNjUzMmAsIGFzIHdlbGwgYXMKK3N1Y2ggTUlNRS1yZWxhdGVkIFJGQ3MgYXMgOnJmYzpgMjA0NWAsIDpyZmM6YDIwNDZgLCA6cmZjOmAyMDQ3YCwgOnJmYzpgMjE4M2AsCithbmQgOnJmYzpgMjIzMWAuCiAKLVRoZSBwcmltYXJ5IGRpc3Rpbmd1aXNoaW5nIGZlYXR1cmUgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoYXQgaXQgc3BsaXRzCi10aGUgcGFyc2luZyBhbmQgZ2VuZXJhdGluZyBvZiBlbWFpbCBtZXNzYWdlcyBmcm9tIHRoZSBpbnRlcm5hbCAqb2JqZWN0IG1vZGVsKgotcmVwcmVzZW50YXRpb24gb2YgZW1haWwuICBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGRlYWwKLXByaW1hcmlseSB3aXRoIG9iamVjdHM7IHlvdSBjYW4gYWRkIHN1Yi1vYmplY3RzIHRvIG1lc3NhZ2VzLCByZW1vdmUgc3ViLW9iamVjdHMKLWZyb20gbWVzc2FnZXMsIGNvbXBsZXRlbHkgcmUtYXJyYW5nZSB0aGUgY29udGVudHMsIGV0Yy4gIFRoZXJlIGlzIGEgc2VwYXJhdGUKLXBhcnNlciBhbmQgYSBzZXBhcmF0ZSBnZW5lcmF0b3Igd2hpY2ggaGFuZGxlcyB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmbGF0IHRleHQKLXRvIHRoZSBvYmplY3QgbW9kZWwsIGFuZCB0aGVuIGJhY2sgdG8gZmxhdCB0ZXh0IGFnYWluLiAgVGhlcmUgYXJlIGFsc28gaGFuZHkKLXN1YmNsYXNzZXMgZm9yIHNvbWUgY29tbW9uIE1JTUUgb2JqZWN0IHR5cGVzLCBhbmQgYSBmZXcgbWlzY2VsbGFuZW91cyB1dGlsaXRpZXMKLXRoYXQgaGVscCB3aXRoIHN1Y2ggY29tbW9uIHRhc2tzIGFzIGV4dHJhY3RpbmcgYW5kIHBhcnNpbmcgbWVzc2FnZSBmaWVsZCB2YWx1ZXMsCi1jcmVhdGluZyBSRkMtY29tcGxpYW50IGRhdGVzLCBldGMuCitUaGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIGVtYWlsIHBhY2thZ2UgY2FuIGJlIGRpdmlkZWQgaW50byB0aHJlZSBtYWpvcgorY29tcG9uZW50cywgcGx1cyBhIGZvdXJ0aCBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdGhlIG90aGVyCitjb21wb25lbnRzLgorCitUaGUgY2VudHJhbCBjb21wb25lbnQgb2YgdGhlIHBhY2thZ2UgaXMgYW4gIm9iamVjdCBtb2RlbCIgdGhhdCByZXByZXNlbnRzIGVtYWlsCittZXNzYWdlcy4gIEFuIGFwcGxpY2F0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBwYWNrYWdlIHByaW1hcmlseSB0aHJvdWdoIHRoZQorb2JqZWN0IG1vZGVsIGludGVyZmFjZSBkZWZpbmVkIGluIHRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgc3ViLW1vZHVsZS4gIFRoZQorYXBwbGljYXRpb24gY2FuIHVzZSB0aGlzIEFQSSB0byBhc2sgcXVlc3Rpb25zIGFib3V0IGFuIGV4aXN0aW5nIGVtYWlsLCB0bworY29uc3RydWN0IGEgbmV3IGVtYWlsLCBvciB0byBhZGQgb3IgcmVtb3ZlIGVtYWlsIHN1YmNvbXBvbmVudHMgdGhhdCB0aGVtc2VsdmVzCit1c2UgdGhlIHNhbWUgb2JqZWN0IG1vZGVsIGludGVyZmFjZS4gIFRoYXQgaXMsIGZvbGxvd2luZyB0aGUgbmF0dXJlIG9mIGVtYWlsCittZXNzYWdlcyBhbmQgdGhlaXIgTUlNRSBzdWJjb21wb25lbnRzLCB0aGUgZW1haWwgb2JqZWN0IG1vZGVsIGlzIGEgdHJlZQorc3RydWN0dXJlIG9mIG9iamVjdHMgdGhhdCBhbGwgcHJvdmlkZSB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitBUEkuCisKK1RoZSBvdGhlciB0d28gbWFqb3IgY29tcG9uZW50cyBvZiB0aGUgcGFja2FnZSBhcmUgdGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGFuZAordGhlIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLiAgVGhlIHBhcnNlciB0YWtlcyB0aGUgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIGFuCitlbWFpbCBtZXNzYWdlIChhIHN0cmVhbSBvZiBieXRlcykgYW5kIGNvbnZlcnRzIGl0IGludG8gYSB0cmVlIG9mCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cy4gIFRoZSBnZW5lcmF0b3IgdGFrZXMgYW4KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBhbmQgdHVybnMgaXQgYmFjayBpbnRvIGEgc2VyaWFsaXplZCBieXRlCitzdHJlYW0uICAoVGhlIHBhcnNlciBhbmQgZ2VuZXJhdG9yIGFsc28gaGFuZGxlIHN0cmVhbXMgb2YgdGV4dCBjaGFyYWN0ZXJzLCBidXQKK3RoaXMgdXNhZ2UgaXMgZGlzY291cmFnZWQgYXMgaXQgaXMgdG9vIGVhc3kgdG8gZW5kIHVwIHdpdGggbWVzc2FnZXMgdGhhdCBhcmUKK25vdCB2YWxpZCBpbiBvbmUgd2F5IG9yIGFub3RoZXIuKQorCitUaGUgY29udHJvbCBjb21wb25lbnQgaXMgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG1vZHVsZS4gIEV2ZXJ5Cis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAsIGV2ZXJ5IDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLCBhbmQgZXZlcnkKKzptb2Q6YH5lbWFpbC5wYXJzZXJgIGhhcyBhbiBhc3NvY2lhdGVkIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0Citjb250cm9scyBpdHMgYmVoYXZpb3IuICBVc3VhbGx5IGFuIGFwcGxpY2F0aW9uIG9ubHkgbmVlZHMgdG8gc3BlY2lmeSB0aGUgcG9saWN5Cit3aGVuIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyBjcmVhdGVkLCBlaXRoZXIgYnkgZGlyZWN0bHkKK2luc3RhbnRpYXRpbmcgYW4gOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgICB0byBjcmVhdGUgYSBuZXcgZW1haWwsCitvciBieSBwYXJzaW5nIGFuIGlucHV0IHN0cmVhbSB1c2luZyBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLiAgQnV0IHRoZSBwb2xpY3kgY2FuCitiZSBjaGFuZ2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCB1c2luZyBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLgorVGhpcyBhbGxvd3MsIGZvciBleGFtcGxlLCBhIGdlbmVyaWMgZW1haWwgbWVzc2FnZSB0byBiZSBwYXJzZWQgZnJvbSBkaXNrLCBidXQKK3RvIHNlcmlhbGl6ZSBpdCB1c2luZyBzdGFuZGFyZCBTTVRQIHNldHRpbmdzIHdoZW4gc2VuZGluZyBpdCB0byBhbiBlbWFpbAorc2VydmVyLgorCitUaGUgZW1haWwgcGFja2FnZSBkb2VzIGl0cyBiZXN0IHRvIGhpZGUgdGhlIGRldGFpbHMgb2YgdGhlIHZhcmlvdXMgZ292ZXJuaW5nCitSRkNzIGZyb20gdGhlIGFwcGxpY2F0aW9uLiAgQ29uY2VwdHVhbGx5IHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYmUgYWJsZSB0bwordHJlYXQgdGhlIGVtYWlsIG1lc3NhZ2UgYXMgYSBzdHJ1Y3R1cmVkIHRyZWUgb2YgdW5pY29kZSB0ZXh0IGFuZCBiaW5hcnkKK2F0dGFjaG1lbnRzLCB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCBob3cgdGhlc2UgYXJlIHJlcHJlc2VudGVkIHdoZW4KK3NlcmlhbGl6ZWQuICBJbiBwcmFjdGljZSwgaG93ZXZlciwgaXQgaXMgb2Z0ZW4gbmVjZXNzYXJ5IHRvIGJlIGF3YXJlIG9mIGF0CitsZWFzdCBzb21lIG9mIHRoZSBydWxlcyBnb3Zlcm5pbmcgTUlNRSBtZXNzYWdlcyBhbmQgdGhlaXIgc3RydWN0dXJlLAorc3BlY2lmaWNhbGx5IHRoZSBuYW1lcyBhbmQgbmF0dXJlIG9mIHRoZSBNSU1FICJjb250ZW50IHR5cGVzIiBhbmQgaG93IHRoZXkKK2lkZW50aWZ5IG11bHRpcGFydCBkb2N1bWVudHMuICBGb3IgdGhlIG1vc3QgcGFydCB0aGlzIGtub3dsZWRnZSBzaG91bGQgb25seSBiZQorcmVxdWlyZWQgZm9yIG1vcmUgY29tcGxleCBhcHBsaWNhdGlvbnMsIGFuZCBldmVuIHRoZW4gaXQgc2hvdWxkIG9ubHkgYmUgdGhlCitoaWdoIGxldmVsIHN0cnVjdHVyZSBpbiBxdWVzdGlvbiwgYW5kIG5vdCB0aGUgZGV0YWlscyBvZiBob3cgdGhvc2Ugc3RydWN0dXJlcworYXJlIHJlcHJlc2VudGVkLiAgU2luY2UgTUlNRSBjb250ZW50IHR5cGVzIGFyZSB1c2VkIHdpZGVseSBpbiBtb2Rlcm4gaW50ZXJuZXQKK3NvZnR3YXJlIChub3QganVzdCBlbWFpbCksIHRoaXMgd2lsbCBiZSBhIGZhbWlsaWFyIGNvbmNlcHQgdG8gbWFueSBwcm9ncmFtbWVycy4KIAogVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UuCi1UaGUgb3JkZXJpbmcgZm9sbG93cyBhIHByb2dyZXNzaW9uIHRoYXQgc2hvdWxkIGJlIGNvbW1vbiBpbiBhcHBsaWNhdGlvbnM6IGFuCi1lbWFpbCBtZXNzYWdlIGlzIHJlYWQgYXMgZmxhdCB0ZXh0IGZyb20gYSBmaWxlIG9yIG90aGVyIHNvdXJjZSwgdGhlIHRleHQgaXMKLXBhcnNlZCB0byBwcm9kdWNlIHRoZSBvYmplY3Qgc3RydWN0dXJlIG9mIHRoZSBlbWFpbCBtZXNzYWdlLCB0aGlzIHN0cnVjdHVyZSBpcwotbWFuaXB1bGF0ZWQsIGFuZCBmaW5hbGx5LCB0aGUgb2JqZWN0IHRyZWUgaXMgcmVuZGVyZWQgYmFjayBpbnRvIGZsYXQgdGV4dC4KK1dlIHN0YXJ0IHdpdGggdGhlIDptb2Q6YH5lbWFpbC5tZXNzYWdlYCBvYmplY3QgbW9kZWwsIHdoaWNoIGlzIHRoZSBwcmltYXJ5CitpbnRlcmZhY2UgYW4gYXBwbGljYXRpb24gd2lsbCB1c2UsIGFuZCBmb2xsb3cgdGhhdCB3aXRoIHRoZQorOm1vZDpgfmVtYWlsLnBhcnNlcmAgYW5kIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgIGNvbXBvbmVudHMuICBUaGVuIHdlIGNvdmVyIHRoZQorOm1vZDpgfmVtYWlsLnBvbGljeWAgY29udHJvbHMsIHdoaWNoIGNvbXBsZXRlcyB0aGUgdHJlYXRtZW50IG9mIHRoZSBtYWluCitjb21wb25lbnRzIG9mIHRoZSBsaWJyYXJ5LgogCi1JdCBpcyBwZXJmZWN0bHkgZmVhc2libGUgdG8gY3JlYXRlIHRoZSBvYmplY3Qgc3RydWN0dXJlIG91dCBvZiB3aG9sZSBjbG90aCAtLS0KLWkuZS4gY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBGcm9tIHRoZXJlLCBhIHNpbWlsYXIgcHJvZ3Jlc3Npb24gY2FuIGJlIHRha2VuIGFzCi1hYm92ZS4KK1RoZSBuZXh0IHRocmVlIHNlY3Rpb25zIGNvdmVyIHRoZSBleGNlcHRpb25zIHRoZSBwYWNrYWdlIG1heSByYWlzZSBhbmQgdGhlCitkZWZlY3RzIChub24tY29tcGxpYW5jZSB3aXRoIHRoZSBSRkNzKSB0aGF0IHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBtYXkKK2RldGVjdC4gIFRoZW4gd2UgY292ZXIgdGhlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAgYW5kIHRoZQorOm1vZDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyYCBzdWItY29tcG9uZW50cywgd2hpY2ggcHJvdmlkZSB0b29scyBmb3IgZG9pbmcgbW9yZQorZGV0YWlsZWQgbWFuaXB1bGF0aW9uIG9mIGhlYWRlcnMgYW5kIHBheWxvYWRzLCByZXNwZWN0aXZlbHkuICBCb3RoIG9mIHRoZXNlCitjb21wb25lbnRzIGNvbnRhaW4gZmVhdHVyZXMgcmVsZXZhbnQgdG8gY29uc3VtaW5nIGFuZCBwcm9kdWNpbmcgbm9uLXRyaXZpYWwKK21lc3NhZ2VzLCBidXQgYWxzbyBkb2N1bWVudCB0aGVpciBleHRlbnNpYmlsaXR5IEFQSXMsIHdoaWNoIHdpbGwgYmUgb2YgaW50ZXJlc3QKK3RvIGFkdmFuY2VkIGFwcGxpY2F0aW9ucy4KIAotQWxzbyBpbmNsdWRlZCBhcmUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgb2YgYWxsIHRoZSBjbGFzc2VzIGFuZCBtb2R1bGVzIHRoYXQKLXRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBwcm92aWRlcywgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzIHlvdSBtaWdodCBlbmNvdW50ZXIKLXdoaWxlIHVzaW5nIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSwgc29tZSBhdXhpbGlhcnkgdXRpbGl0aWVzLCBhbmQgYSBmZXcKLWV4YW1wbGVzLiAgRm9yIHVzZXJzIG9mIHRoZSBvbGRlciA6bW9kOmBtaW1lbGliYCBwYWNrYWdlLCBvciBwcmV2aW91cyB2ZXJzaW9ucwotb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlLCBhIHNlY3Rpb24gb24gZGlmZmVyZW5jZXMgYW5kIHBvcnRpbmcgaXMgcHJvdmlkZWQuCitGb2xsb3dpbmcgdGhvc2UgaXMgYSBzZXQgb2YgZXhhbXBsZXMgb2YgdXNpbmcgdGhlIGZ1bmRhbWVudGFsIHBhcnRzIG9mIHRoZSBBUElzCitjb3ZlcmVkIGluIHRoZSBwcmVjZWRpbmcgc2VjdGlvbnMuCisKK1RoZSBmb3Jnb2luZyByZXByZXNlbnQgdGhlIG1vZGVybiAodW5pY29kZSBmcmllbmRseSkgQVBJIG9mIHRoZSBlbWFpbCBwYWNrYWdlLgorVGhlIHJlbWFpbmluZyBzZWN0aW9ucywgc3RhcnRpbmcgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYAorY2xhc3MsIGNvdmVyIHRoZSBsZWdhY3kgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSB0aGF0IGRlYWxzIG11Y2ggbW9yZQorZGlyZWN0bHkgd2l0aCB0aGUgZGV0YWlscyBvZiBob3cgZW1haWwgbWVzc2FnZXMgYXJlIHJlcHJlc2VudGVkLiAgVGhlCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJIGRvZXMgKm5vdCogaGlkZSB0aGUgZGV0YWlscyBvZiB0aGUgUkZDcyBmcm9tCit0aGUgYXBwbGljYXRpb24sIGJ1dCBmb3IgYXBwbGljYXRpb25zIHRoYXQgbmVlZCB0byBvcGVyYXRlIGF0IHRoYXQgbGV2ZWwsIHRoZXkKK2NhbiBiZSB1c2VmdWwgdG9vbHMuICBUaGlzIGRvY3VtZW50YXRpb24gaXMgYWxzbyByZWxldmFudCBmb3IgYXBwbGljYXRpb25zIHRoYXQKK2FyZSBzdGlsbCB1c2luZyB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJIGZvciBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSByZWFzb25zLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgRG9jcyByZW9yZ2FuaXplZCBhbmQgcmV3cml0dGVuIHRvIHByb21vdGUgdGhlIG5ldworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLzpjbGFzczpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAKKyAgIEFQSS4KIAogQ29udGVudHMgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGRvY3VtZW50YXRpb246CiAKQEAgLTU2LDMzNSArMTEwLDQzIEBACiAgICBlbWFpbC5wYXJzZXIucnN0CiAgICBlbWFpbC5nZW5lcmF0b3IucnN0CiAgICBlbWFpbC5wb2xpY3kucnN0CisKKyAgIGVtYWlsLmVycm9ycy5yc3QKICAgIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdAogICAgZW1haWwuY29udGVudG1hbmFnZXIucnN0CisKKyAgIGVtYWlsLmV4YW1wbGVzLnJzdAorCitMZWdhY3kgQVBJOgorCisuLiB0b2N0cmVlOjoKKworICAgZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QKICAgIGVtYWlsLm1pbWUucnN0CiAgICBlbWFpbC5oZWFkZXIucnN0CiAgICBlbWFpbC5jaGFyc2V0LnJzdAogICAgZW1haWwuZW5jb2RlcnMucnN0Ci0gICBlbWFpbC5lcnJvcnMucnN0CiAgICBlbWFpbC51dGlsLnJzdAogICAgZW1haWwuaXRlcmF0b3JzLnJzdAotICAgZW1haWwtZXhhbXBsZXMucnN0CiAKIAogLi4gc2VlYWxzbzo6CiAKICAgIE1vZHVsZSA6bW9kOmBzbXRwbGliYAotICAgICAgU01UUCBwcm90b2NvbCBjbGllbnQKKyAgICAgIFNNVFAgKFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBQcm90Y29sKSBjbGllbnQKKworICAgTW9kdWxlIDptb2Q6YHBvcGxpYmAKKyAgICAgIFBPUCAoUG9zdCBPZmZpY2UgUHJvdG9jb2wpIGNsaWVudAorCisgICBNb2R1bGUgOm1vZDpgaW1hcGxpYmAKKyAgICAgIElNQVAgKEludGVybmV0IE1lc3NhZ2UgQWNjZXNzIFByb3RvY29sKSBjbGllbnQKIAogICAgTW9kdWxlIDptb2Q6YG5udHBsaWJgCi0gICAgICBOTlRQIHByb3RvY29sIGNsaWVudAorICAgICAgTk5UUCAoTmV0IE5ld3MgVHJhbnNwb3J0IFByb3RvY29sKSBjbGllbnQKIAorICAgTW9kdWxlIDptb2Q6YG1haWxib3hgCisgICAgICBUb29scyBmb3IgY3JlYXRpbmcsIHJlYWRpbmcsIGFuZCBtYW5hZ2luZyBjb2xsZWN0aW9ucyBvZiBtZXNzYWdlcyBvbiBkaXNrCisgICAgICB1c2luZyBhIHZhcmlldHkgc3RhbmRhcmQgZm9ybWF0cy4KIAotLi4gX2VtYWlsLXBrZy1oaXN0b3J5OgotCi1QYWNrYWdlIEhpc3RvcnkKLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHRhYmxlIGRlc2NyaWJlcyB0aGUgcmVsZWFzZSBoaXN0b3J5IG9mIHRoZSBlbWFpbCBwYWNrYWdlLCBjb3JyZXNwb25kaW5nIHRvCi10aGUgdmVyc2lvbiBvZiBQeXRob24gdGhhdCB0aGUgcGFja2FnZSB3YXMgcmVsZWFzZWQgd2l0aC4gIEZvciBwdXJwb3NlcyBvZiB0aGlzCi1kb2N1bWVudCwgd2hlbiB5b3Ugc2VlIGEgbm90ZSBhYm91dCBjaGFuZ2Ugb3IgYWRkZWQgdmVyc2lvbnMsIHRoZXNlIHJlZmVyIHRvIHRoZQotUHl0aG9uIHZlcnNpb24gdGhlIGNoYW5nZSB3YXMgbWFkZSBpbiwgKm5vdCogdGhlIGVtYWlsIHBhY2thZ2UgdmVyc2lvbi4gIFRoaXMKLXRhYmxlIGFsc28gZGVzY3JpYmVzIHRoZSBQeXRob24gY29tcGF0aWJpbGl0eSBvZiBlYWNoIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UuCi0KLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBlbWFpbCB2ZXJzaW9uIHwgZGlzdHJpYnV0ZWQgd2l0aCAgICAgICAgICAgICB8IGNvbXBhdGlibGUgd2l0aCAgICAgICB8Ci0rPT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgOmNvbnN0OmAxLnhgICB8IFB5dGhvbiAyLjIuMCB0byBQeXRob24gMi4yLjEgfCAqbm8gbG9uZ2VyIHN1cHBvcnRlZCogfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgMi41YCAgfCBQeXRob24gMi4yLjIrIGFuZCBQeXRob24gMi4zIHwgUHl0aG9uIDIuMSB0byAyLjUgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDMuMGAgIHwgUHl0aG9uIDIuNCBhbmQgUHl0aG9uIDIuNSAgICB8IFB5dGhvbiAyLjMgdG8gMi42ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmA0LjBgICB8IFB5dGhvbiAyLjUgdG8gUHl0aG9uIDIuNyAgICAgfCBQeXRob24gMi4zIHRvIDIuNyAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgNS4wYCAgfCBQeXRob24gMy4wIGFuZCBQeXRob24gMy4xICAgIHwgUHl0aG9uIDMuMCB0byAzLjIgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDUuMWAgIHwgUHl0aG9uIDMuMiAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiAzLjIgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotQWZ0ZXIgVmVyc2lvbiA1LjEgKFB5dGhvbiAzLjIpLCB0aGUgZW1haWwgcGFja2FnZSBubyBsb25nZXIgaGFzIGEgdmVyc2lvbiB0aGF0Ci1pcyBzZXBhcmF0ZSBmcm9tIHRoZSBQeXRob24gdmVyc2lvbi4gIChTZWUgdGhlIDpyZWY6YHdoYXRzbmV3LWluZGV4YCBkb2N1bWVudHMKLWZvciB0aGUgcmVzcGVjdGl2ZSBQeXRob24gdmVyc2lvbnMgZm9yIGRldGFpbHMgb24gY2hhbmdlcy4pCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDUuMSBhbmQKLXZlcnNpb24gNS4wOgotCi0qIEl0IGlzIG9uY2UgYWdhaW4gcG9zc2libGUgdG8gcGFyc2UgbWVzc2FnZXMgY29udGFpbmluZyBub24tQVNDSUkgYnl0ZXMsCi0gIGFuZCB0byByZXByb2R1Y2Ugc3VjaCBtZXNzYWdlcyBpZiB0aGUgZGF0YSBjb250YWluaW5nIHRoZSBub24tQVNDSUkKLSAgYnl0ZXMgaXMgbm90IG1vZGlmaWVkLgotCi0qIE5ldyBmdW5jdGlvbnMgOmZ1bmM6YG1lc3NhZ2VfZnJvbV9ieXRlc2AgYW5kIDpmdW5jOmBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGVgLAotICBhbmQgbmV3IGNsYXNzZXMgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzRmVlZFBhcnNlcmAgYW5kCi0gIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgYWxsb3cgYmluYXJ5IG1lc3NhZ2UgZGF0YSB0byBiZSBwYXJzZWQKLSAgaW50byBtb2RlbCBvYmplY3RzLgotCi0qIEdpdmVuIGJ5dGVzIGlucHV0IHRvIHRoZSBtb2RlbCwgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgCi0gIHdpbGwgYnkgZGVmYXVsdCBkZWNvZGUgYSBtZXNzYWdlIGJvZHkgdGhhdCBoYXMgYQotICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYGA4Yml0YGAgdXNpbmcgdGhlIGNoYXJzZXQKLSAgc3BlY2lmaWVkIGluIHRoZSBNSU1FIGhlYWRlcnMgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIHN0cmluZy4KLQotKiBHaXZlbiBieXRlcyBpbnB1dCB0byB0aGUgbW9kZWwsIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHdpbGwKLSAgY29udmVydCBtZXNzYWdlIGJvZGllcyB0aGF0IGhhdmUgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YKLSAgOGJpdCB0byBpbnN0ZWFkIGhhdmUgYSA3Yml0IENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuCi0KLSogTmV3IGNsYXNzIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgcHJvZHVjZXMgYnl0ZXMKLSAgYXMgb3V0cHV0LCBwcmVzZXJ2aW5nIGFueSB1bmNoYW5nZWQgbm9uLUFTQ0lJIGRhdGEgdGhhdCB3YXMKLSAgcHJlc2VudCBpbiB0aGUgaW5wdXQgdXNlZCB0byBidWlsZCB0aGUgbW9kZWwsIGluY2x1ZGluZyBtZXNzYWdlIGJvZGllcwotICB3aXRoIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQuCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDUuMCBhbmQgdmVyc2lvbiA0OgotCi0qIEFsbCBvcGVyYXRpb25zIGFyZSBvbiB1bmljb2RlIHN0cmluZ3MuICBUZXh0IGlucHV0cyBtdXN0IGJlIHN0cmluZ3MsCi0gIHRleHQgb3V0cHV0cyBhcmUgc3RyaW5ncy4gIE91dHB1dHMgYXJlIGxpbWl0ZWQgdG8gdGhlIEFTQ0lJIGNoYXJhY3RlcgotICBzZXQgYW5kIHNvIGNhbiBiZSBlbmNvZGVkIHRvIEFTQ0lJIGZvciB0cmFuc21pc3Npb24uICBJbnB1dHMgYXJlIGFsc28KLSAgbGltaXRlZCB0byBBU0NJSTsgdGhpcyBpcyBhbiBhY2tub3dsZWRnZWQgbGltaXRhdGlvbiBvZiBlbWFpbCA1LjAgYW5kCi0gIG1lYW5zIGl0IGNhbiBvbmx5IGJlIHVzZWQgdG8gcGFyc2UgZW1haWwgdGhhdCBpcyA3Yml0IGNsZWFuLgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA0IGFuZCB2ZXJzaW9uIDM6Ci0KLSogQWxsIG1vZHVsZXMgaGF2ZSBiZWVuIHJlbmFtZWQgYWNjb3JkaW5nIHRvIDpwZXA6YDhgIHN0YW5kYXJkcy4gIEZvciBleGFtcGxlLAotICB0aGUgdmVyc2lvbiAzIG1vZHVsZSA6bW9kOmBlbWFpbC5NZXNzYWdlYCB3YXMgcmVuYW1lZCB0byA6bW9kOmBlbWFpbC5tZXNzYWdlYCBpbgotICB2ZXJzaW9uIDQuCi0KLSogQSBuZXcgc3VicGFja2FnZSA6bW9kOmBlbWFpbC5taW1lYCB3YXMgYWRkZWQgYW5kIGFsbCB0aGUgdmVyc2lvbiAzCi0gIDptb2Q6YGVtYWlsLk1JTUVcKmAgbW9kdWxlcyB3ZXJlIHJlbmFtZWQgYW5kIHNpdHVhdGVkIGludG8gdGhlIDptb2Q6YGVtYWlsLm1pbWVgCi0gIHN1YnBhY2thZ2UuICBGb3IgZXhhbXBsZSwgdGhlIHZlcnNpb24gMyBtb2R1bGUgOm1vZDpgZW1haWwuTUlNRVRleHRgIHdhcyByZW5hbWVkCi0gIHRvIDptb2Q6YGVtYWlsLm1pbWUudGV4dGAuCi0KLSAgKk5vdGUgdGhhdCB0aGUgdmVyc2lvbiAzIG5hbWVzIHdpbGwgY29udGludWUgdG8gd29yayB1bnRpbCBQeXRob24gMi42Ki4KLQotKiBUaGUgOm1vZDpgZW1haWwubWltZS5hcHBsaWNhdGlvbmAgbW9kdWxlIHdhcyBhZGRlZCwgd2hpY2ggY29udGFpbnMgdGhlCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUuYXBwbGljYXRpb24uTUlNRUFwcGxpY2F0aW9uYCBjbGFzcy4KLQotKiBNZXRob2RzIHRoYXQgd2VyZSBkZXByZWNhdGVkIGluIHZlcnNpb24gMyBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXNlIGluY2x1ZGUKLSAgOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AsIDptZXRoOmBNZXNzYWdlLmdldF90eXBlYCwKLSAgOm1ldGg6YE1lc3NhZ2UuZ2V0X21haW5fdHlwZWAsIDptZXRoOmBNZXNzYWdlLmdldF9zdWJ0eXBlYC4KLQotKiBGaXhlcyBoYXZlIGJlZW4gYWRkZWQgZm9yIDpyZmM6YDIyMzFgIHN1cHBvcnQgd2hpY2ggY2FuIGNoYW5nZSBzb21lIG9mIHRoZQotICByZXR1cm4gdHlwZXMgZm9yIDpmdW5jOmBNZXNzYWdlLmdldF9wYXJhbSA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbT5gCi0gIGFuZCBmcmllbmRzLiAgVW5kZXIgc29tZQotICBjaXJjdW1zdGFuY2VzLCB2YWx1ZXMgd2hpY2ggdXNlZCB0byByZXR1cm4gYSAzLXR1cGxlIG5vdyByZXR1cm4gc2ltcGxlIHN0cmluZ3MKLSAgKHNwZWNpZmljYWxseSwgaWYgYWxsIGV4dGVuZGVkIHBhcmFtZXRlciBzZWdtZW50cyB3ZXJlIHVuZW5jb2RlZCwgdGhlcmUgaXMgbm8KLSAgbGFuZ3VhZ2UgYW5kIGNoYXJzZXQgZGVzaWduYXRpb24gZXhwZWN0ZWQsIHNvIHRoZSByZXR1cm4gdHlwZSBpcyBub3cgYSBzaW1wbGUKLSAgc3RyaW5nKS4gIEFsc28sICUtZGVjb2RpbmcgdXNlZCB0byBiZSBkb25lIGZvciBib3RoIGVuY29kZWQgYW5kIHVuZW5jb2RlZAotICBzZWdtZW50czsgdGhpcyBkZWNvZGluZyBpcyBub3cgZG9uZSBvbmx5IGZvciBlbmNvZGVkIHNlZ21lbnRzLgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAzIGFuZCB2ZXJzaW9uIDI6Ci0KLSogVGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYCBjbGFzcyB3YXMgaW50cm9kdWNlZCwgYW5kIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyB3YXMgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgdGhlCi0gIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYC4gIEFsbCBwYXJzaW5nIHRoZXJlZm9yZSBpcwotICBub24tc3RyaWN0LCBhbmQgcGFyc2luZyB3aWxsIG1ha2UgYSBiZXN0IGVmZm9ydCBuZXZlciB0byByYWlzZSBhbiBleGNlcHRpb24uCi0gIFByb2JsZW1zIGZvdW5kIHdoaWxlIHBhcnNpbmcgbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWVzc2FnZSdzICpkZWZlY3QqCi0gIGF0dHJpYnV0ZS4KLQotKiBBbGwgYXNwZWN0cyBvZiB0aGUgQVBJIHdoaWNoIHJhaXNlZCA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgXCBzIGluIHZlcnNpb24gMgotICBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXNlIGluY2x1ZGUgdGhlICpfZW5jb2RlciogYXJndW1lbnQgdG8gdGhlCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dGAgY29uc3RydWN0b3IsIHRoZQotICA6bWV0aDpgTWVzc2FnZS5hZGRfcGF5bG9hZGAgbWV0aG9kLCB0aGUgOmZ1bmM6YFV0aWxzLmR1bXBfYWRkcmVzc19wYWlyYAotICBmdW5jdGlvbiwgYW5kIHRoZSBmdW5jdGlvbnMgOmZ1bmM6YFV0aWxzLmRlY29kZWAgYW5kIDpmdW5jOmBVdGlscy5lbmNvZGVgLgotCi0qIE5ldyA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgXCBzIGhhdmUgYmVlbiBhZGRlZCB0bzoKLSAgOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AsIDptZXRoOmBNZXNzYWdlLmdldF90eXBlYCwKLSAgOm1ldGg6YE1lc3NhZ2UuZ2V0X21haW5fdHlwZWAsIDptZXRoOmBNZXNzYWdlLmdldF9zdWJ0eXBlYCwgYW5kIHRoZSAqc3RyaWN0KgotICBhcmd1bWVudCB0byB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MuICBUaGVzZSBhcmUgZXhwZWN0ZWQgdG8KLSAgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuCi0KLSogU3VwcG9ydCBmb3IgUHl0aG9ucyBlYXJsaWVyIHRoYW4gMi4zIGhhcyBiZWVuIHJlbW92ZWQuCi0KLUhlcmUgYXJlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIgYW5kIHZlcnNpb24gMToKLQotKiBUaGUgOm1vZDpgZW1haWwuSGVhZGVyYCBhbmQgOm1vZDpgZW1haWwuQ2hhcnNldGAgbW9kdWxlcyBoYXZlIGJlZW4gYWRkZWQuCi0KLSogVGhlIHBpY2tsZSBmb3JtYXQgZm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzIGhhcyBjaGFuZ2VkLgotICBTaW5jZSB0aGlzIHdhcyBuZXZlciAoYW5kIHN0aWxsIGlzbid0KSBmb3JtYWxseSBkZWZpbmVkLCB0aGlzIGlzbid0Ci0gIGNvbnNpZGVyZWQgYSBiYWNrd2FyZCBpbmNvbXBhdGliaWxpdHkuICBIb3dldmVyIGlmIHlvdXIgYXBwbGljYXRpb24gcGlja2xlcwotICBhbmQgdW5waWNrbGVzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzLCBiZSBhd2FyZSB0aGF0IGluCi0gIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIsIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzIG5vdyBoYXZlCi0gIHByaXZhdGUgdmFyaWFibGVzICpfY2hhcnNldCogYW5kICpfZGVmYXVsdF90eXBlKi4KLQotKiBTZXZlcmFsIG1ldGhvZHMgaW4gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgaGF2ZSBiZWVuCi0gIGRlcHJlY2F0ZWQsIG9yIHRoZWlyIHNpZ25hdHVyZXMgY2hhbmdlZC4gIEFsc28sIG1hbnkgbmV3IG1ldGhvZHMgaGF2ZSBiZWVuCi0gIGFkZGVkLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcwotICBmb3IgZGV0YWlscy4gIFRoZSBjaGFuZ2VzIHNob3VsZCBiZSBjb21wbGV0ZWx5IGJhY2t3YXJkIGNvbXBhdGlibGUuCi0KLSogVGhlIG9iamVjdCBzdHJ1Y3R1cmUgaGFzIGNoYW5nZWQgaW4gdGhlIGZhY2Ugb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAKLSAgY29udGVudCB0eXBlcy4gIEluIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDEsIHN1Y2ggYSB0eXBlIHdvdWxkIGJlIHJlcHJlc2VudGVkCi0gIGJ5IGEgc2NhbGFyIHBheWxvYWQsIGkuZS4gdGhlIGNvbnRhaW5lciBtZXNzYWdlJ3MKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCByZXR1cm5lZCBmYWxzZSwKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIHdhcyBub3QgYSBsaXN0IG9iamVjdCwgYnV0IGEKLSAgc2luZ2xlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2UuCi0KLSAgVGhpcyBzdHJ1Y3R1cmUgd2FzIGluY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLCBzbyB0aGUgb2JqZWN0Ci0gIHJlcHJlc2VudGF0aW9uIGZvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCBjb250ZW50IHR5cGVzIHdhcyBjaGFuZ2VkLiAgSW4KLSAgOm1vZDpgZW1haWxgIHZlcnNpb24gMiwgdGhlIGNvbnRhaW5lciAqZG9lcyogcmV0dXJuIGBgVHJ1ZWBgIGZyb20KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCByZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIGEgc2luZ2xlCi0gIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXRlbS4KLQotICBOb3RlIHRoYXQgdGhpcyBpcyBvbmUgcGxhY2UgdGhhdCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGNvdWxkIG5vdCBiZQotICBjb21wbGV0ZWx5IG1haW50YWluZWQuICBIb3dldmVyLCBpZiB5b3UncmUgYWxyZWFkeSB0ZXN0aW5nIHRoZSByZXR1cm4gdHlwZSBvZgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAsIHlvdSBzaG91bGQgYmUgZmluZS4gIFlvdSBqdXN0IG5lZWQKLSAgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSBkb2Vzbid0IGRvIGEgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X3BheWxvYWRgCi0gIHdpdGggYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlIG9uIGEgY29udGFpbmVyIHdpdGggYSBjb250ZW50Ci0gIHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCi0KLSogVGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNvbnN0cnVjdG9yJ3MgKnN0cmljdCogYXJndW1lbnQgd2FzIGFkZGVkLAotICBhbmQgaXRzIDptZXRoOmB+ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZWAgYW5kCi0gIDptZXRoOmB+ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cmAgbWV0aG9kcyBncmV3IGEgKmhlYWRlcnNvbmx5KiBhcmd1bWVudC4KLSAgVGhlICpzdHJpY3QqIGZsYWcgd2FzIGFsc28gYWRkZWQgdG8gZnVuY3Rpb25zIDpmdW5jOmBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZWAKLSAgYW5kIDpmdW5jOmBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nYC4KLQotKiA6bWV0aDpgR2VuZXJhdG9yLl9fY2FsbF9fYCBpcyBkZXByZWNhdGVkOyB1c2UgOm1ldGg6YEdlbmVyYXRvci5mbGF0dGVuCi0gIDxlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW4+YCBpbnN0ZWFkLiAgVGhlCi0gIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGNsYXNzIGhhcyBhbHNvIGdyb3duIHRoZQotICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuY2xvbmVgIG1ldGhvZC4KLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3JgIGNsYXNzIGluIHRoZQotICA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSB3YXMgYWRkZWQuCi0KLSogVGhlIGludGVybWVkaWF0ZSBiYXNlIGNsYXNzZXMKLSAgOmNsYXNzOmB+ZW1haWwubWltZS5ub25tdWx0aXBhcnQuTUlNRU5vbk11bHRpcGFydGAgYW5kCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUubXVsdGlwYXJ0Lk1JTUVNdWx0aXBhcnRgIGhhdmUgYmVlbiBhZGRlZCwgYW5kIGludGVycG9zZWQKLSAgaW4gdGhlIGNsYXNzIGhpZXJhcmNoeSBmb3IgbW9zdCBvZiB0aGUgb3RoZXIgTUlNRS1yZWxhdGVkIGRlcml2ZWQgY2xhc3Nlcy4KLQotKiBUaGUgKl9lbmNvZGVyKiBhcmd1bWVudCB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWltZS50ZXh0Lk1JTUVUZXh0YCBjb25zdHJ1Y3RvcgotICBoYXMgYmVlbiBkZXByZWNhdGVkLiAgRW5jb2RpbmcgIG5vdyBoYXBwZW5zIGltcGxpY2l0bHkgYmFzZWQgb24gdGhlCi0gICpfY2hhcnNldCogYXJndW1lbnQuCi0KLSogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YGVtYWlsLlV0aWxzYCBtb2R1bGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQ6Ci0gIDpmdW5jOmBkdW1wX2FkZHJlc3NfcGFpcnNgLCA6ZnVuYzpgZGVjb2RlYCwgYW5kIDpmdW5jOmBlbmNvZGVgLiAgVGhlIGZvbGxvd2luZwotICBmdW5jdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBtb2R1bGU6IDpmdW5jOmBtYWtlX21zZ2lkYCwKLSAgOmZ1bmM6YGRlY29kZV9yZmMyMjMxYCwgOmZ1bmM6YGVuY29kZV9yZmMyMjMxYCwgYW5kIDpmdW5jOmBkZWNvZGVfcGFyYW1zYC4KLQotKiBUaGUgbm9uLXB1YmxpYyBmdW5jdGlvbiA6ZnVuYzpgZW1haWwuSXRlcmF0b3JzLl9zdHJ1Y3R1cmVgIHdhcyBhZGRlZC4KLQotCi1EaWZmZXJlbmNlcyBmcm9tIDptb2Q6YG1pbWVsaWJgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB3YXMgb3JpZ2luYWxseSBwcm90b3R5cGVkIGFzIGEgc2VwYXJhdGUgbGlicmFyeSBjYWxsZWQKLWBtaW1lbGliIDxodHRwOi8vbWltZWxpYi5zb3VyY2Vmb3JnZS5uZXQvPmBfLiBDaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHNvIHRoYXQgbWV0aG9kIG5hbWVzCi1hcmUgbW9yZSBjb25zaXN0ZW50LCBhbmQgc29tZSBtZXRob2RzIG9yIG1vZHVsZXMgaGF2ZSBlaXRoZXIgYmVlbiBhZGRlZCBvcgotcmVtb3ZlZC4gIFRoZSBzZW1hbnRpY3Mgb2Ygc29tZSBvZiB0aGUgbWV0aG9kcyBoYXZlIGFsc28gY2hhbmdlZC4gIEZvciB0aGUgbW9zdAotcGFydCwgYW55IGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIDptb2Q6YG1pbWVsaWJgIGlzIHN0aWxsIGF2YWlsYWJsZSBpbiB0aGUKLTptb2Q6YGVtYWlsYCBwYWNrYWdlLCBhbGJlaXQgb2Z0ZW4gaW4gYSBkaWZmZXJlbnQgd2F5LiAgQmFja3dhcmQgY29tcGF0aWJpbGl0eQotYmV0d2VlbiB0aGUgOm1vZDpgbWltZWxpYmAgcGFja2FnZSBhbmQgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHdhcyBub3QgYQotcHJpb3JpdHkuCi0KLUhlcmUgaXMgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgOm1vZDpgbWltZWxpYmAgYW5kCi10aGUgOm1vZDpgZW1haWxgIHBhY2thZ2VzLCBhbG9uZyB3aXRoIGhpbnRzIG9uIGhvdyB0byBwb3J0IHlvdXIgYXBwbGljYXRpb25zLgotCi1PZiBjb3Vyc2UsIHRoZSBtb3N0IHZpc2libGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gcGFja2FnZXMgaXMgdGhhdCB0aGUKLXBhY2thZ2UgbmFtZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIDptb2Q6YGVtYWlsYC4gIEluIGFkZGl0aW9uLCB0aGUgdG9wLWxldmVsCi1wYWNrYWdlIGhhcyB0aGUgZm9sbG93aW5nIGRpZmZlcmVuY2VzOgotCi0qIDpmdW5jOmBtZXNzYWdlRnJvbVN0cmluZ2AgaGFzIGJlZW4gcmVuYW1lZCB0byA6ZnVuYzpgbWVzc2FnZV9mcm9tX3N0cmluZ2AuCi0KLSogOmZ1bmM6YG1lc3NhZ2VGcm9tRmlsZWAgaGFzIGJlZW4gcmVuYW1lZCB0byA6ZnVuYzpgbWVzc2FnZV9mcm9tX2ZpbGVgLgotCi1UaGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKLQotKiBUaGUgbWV0aG9kIDptZXRoOmBhc1N0cmluZ2Agd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBpc211bHRpcGFydGAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KLQotKiBUaGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZCBoYXMgZ3Jvd24gYSAqZGVjb2RlKgotICBvcHRpb25hbCBhcmd1bWVudC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRhbGxgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9hbGxgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGFkZGhlYWRlcmAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYWRkX2hlYWRlcmAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0dHlwZWAgd2FzIHJlbmFtZWQgdG8gOm1ldGg6YGdldF90eXBlYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRtYWludHlwZWAgd2FzIHJlbmFtZWQgdG8gOm1ldGg6YGdldF9tYWluX3R5cGVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHN1YnR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfc3VidHlwZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGFyYW1zYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW1zYC4gQWxzbywgd2hlcmVhcyA6bWV0aDpgZ2V0cGFyYW1zYAotICByZXR1cm5lZCBhIGxpc3Qgb2Ygc3RyaW5ncywgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtc2AgcmV0dXJucwotICBhIGxpc3Qgb2YgMi10dXBsZXMsIGVmZmVjdGl2ZWx5IHRoZSBrZXkvdmFsdWUgcGFpcnMgb2YgdGhlIHBhcmFtZXRlcnMsIHNwbGl0Ci0gIG9uIHRoZSBgYCc9J2BgIHNpZ24uCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGFyYW1gIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Y2hhcnNldHNgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9jaGFyc2V0c2AuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0ZmlsZW5hbWVgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9maWxlbmFtZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Ym91bmRhcnlgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9ib3VuZGFyeWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgc2V0Ym91bmRhcnlgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9ib3VuZGFyeWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0ZGVjb2RlZHBheWxvYWRgIHdhcyByZW1vdmVkLiAgVG8gZ2V0IHNpbWlsYXIKLSAgZnVuY3Rpb25hbGl0eSwgcGFzcyB0aGUgdmFsdWUgMSB0byB0aGUgKmRlY29kZSogZmxhZyBvZiB0aGUKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRwYXlsb2FkYXN0ZXh0YCB3YXMgcmVtb3ZlZC4gIFNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpcwotICBzdXBwb3J0ZWQgYnkgdGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBjbGFzcyBpbiB0aGUKLSAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Ym9keWFzdGV4dGAgd2FzIHJlbW92ZWQuICBZb3UgY2FuIGdldCBzaW1pbGFyCi0gIGZ1bmN0aW9uYWxpdHkgYnkgY3JlYXRpbmcgYW4gaXRlcmF0b3Igd2l0aAotICA6ZnVuYzpgfmVtYWlsLml0ZXJhdG9ycy50eXBlZF9zdWJwYXJ0X2l0ZXJhdG9yYCBpbiB0aGUgOm1vZDpgZW1haWwuaXRlcmF0b3JzYAotICBtb2R1bGUuCi0KLVRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBoYXMgbm8gZGlmZmVyZW5jZXMgaW4gaXRzIHB1YmxpYwotaW50ZXJmYWNlLiBJdCBkb2VzIGhhdmUgc29tZSBhZGRpdGlvbmFsIHNtYXJ0cyB0byByZWNvZ25pemUKLTptaW1ldHlwZTpgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNgIHR5cGUgbWVzc2FnZXMsIHdoaWNoIGl0IHJlcHJlc2VudHMgYXMgYQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBjb250YWluaW5nIHNlcGFyYXRlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIHN1YnBhcnRzIGZvciBlYWNoIGhlYWRlciBibG9jayBpbiB0aGUgZGVsaXZlcnkKLXN0YXR1cyBub3RpZmljYXRpb24gWyNdXy4KLQotVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGNsYXNzIGhhcyBubyBkaWZmZXJlbmNlcyBpbiBpdHMgcHVibGljCi1pbnRlcmZhY2UuICBUaGVyZSBpcyBhIG5ldyBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgdGhvdWdoLAotY2FsbGVkIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCB3aGljaCBwcm92aWRlcyBtb3N0IG9mIHRoZQotZnVuY3Rpb25hbGl0eSBwcmV2aW91c2x5IGF2YWlsYWJsZSBpbiB0aGUgOm1ldGg6YE1lc3NhZ2UuZ2V0cGF5bG9hZGFzdGV4dGAKLW1ldGhvZC4KLQotVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFuZCBjbGFzc2VzIGhhdmUgYmVlbiBjaGFuZ2VkOgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLmJhc2UuTUlNRUJhc2VgIGNsYXNzIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyAqX21ham9yKgotICBhbmQgKl9taW5vciogaGF2ZSBjaGFuZ2VkIHRvICpfbWFpbnR5cGUqIGFuZCAqX3N1YnR5cGUqIHJlc3BlY3RpdmVseS4KLQotKiBUaGUgYGBJbWFnZWBgIGNsYXNzL21vZHVsZSBoYXMgYmVlbiByZW5hbWVkIHRvIGBgTUlNRUltYWdlYGAuICBUaGUgKl9taW5vcioKLSAgYXJndW1lbnQgaGFzIGJlZW4gcmVuYW1lZCB0byAqX3N1YnR5cGUqLgotCi0qIFRoZSBgYFRleHRgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVUZXh0YGAuICBUaGUgKl9taW5vcioKLSAgYXJndW1lbnQgaGFzIGJlZW4gcmVuYW1lZCB0byAqX3N1YnR5cGUqLgotCi0qIFRoZSBgYE1lc3NhZ2VSRkM4MjJgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVNZXNzYWdlYGAuICBOb3RlCi0gIHRoYXQgYW4gZWFybGllciB2ZXJzaW9uIG9mIDptb2Q6YG1pbWVsaWJgIGNhbGxlZCB0aGlzIGNsYXNzL21vZHVsZSBgYFJGQzgyMmBgLAotICBidXQgdGhhdCBjbGFzaGVkIHdpdGggdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZSA6bW9kOmByZmM4MjJgIG9uIHNvbWUKLSAgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuCi0KLSAgQWxzbywgdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUubWVzc2FnZS5NSU1FTWVzc2FnZWAgY2xhc3Mgbm93IHJlcHJlc2VudHMgYW55Ci0gIGtpbmQgb2YgTUlNRSBtZXNzYWdlCi0gIHdpdGggbWFpbiB0eXBlIDptaW1ldHlwZTpgbWVzc2FnZWAuICBJdCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCAqX3N1YnR5cGUqCi0gIHdoaWNoIGlzIHVzZWQgdG8gc2V0IHRoZSBNSU1FIHN1YnR5cGUuICAqX3N1YnR5cGUqIGRlZmF1bHRzIHRvCi0gIDptaW1ldHlwZTpgcmZjODIyYC4KLQotOm1vZDpgbWltZWxpYmAgcHJvdmlkZWQgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucyBpbiBpdHMgOm1vZDpgYWRkcmVzc2AgYW5kCi06bW9kOmBkYXRlYCBtb2R1bGVzLiAgQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW92ZWQgdG8gdGhlCi06bW9kOmBlbWFpbC51dGlsc2AgbW9kdWxlLgotCi1UaGUgYGBNc2dSZWFkZXJgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVtb3ZlZC4gIEl0cyBmdW5jdGlvbmFsaXR5IGlzIG1vc3QKLWNsb3NlbHkgc3VwcG9ydGVkIGluIHRoZSA6ZnVuYzpgfmVtYWlsLml0ZXJhdG9ycy5ib2R5X2xpbmVfaXRlcmF0b3JgIGZ1bmN0aW9uCi1pbiB0aGUgOm1vZDpgZW1haWwuaXRlcmF0b3JzYCBtb2R1bGUuCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gRGVsaXZlcnkgU3RhdHVzIE5vdGlmaWNhdGlvbnMgKERTTikgYXJlIGRlZmluZWQgaW4gOnJmYzpgMTg5NGAuCisgICBNb2R1bGUgOm1vZDpgc210cGRgCisgICAgICBTTVRQIHNlcnZlciBmcmFtZXdvcmsgKHByaW1hcmlseSB1c2VmdWwgZm9yIHRlc3RpbmcpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CmluZGV4IDVjZmY3NDYuLjYzZmFlMmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CkBAIC04LDcgKzgsNDMgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlcmUgYXJlIHNldmVyYWwgdXNlZnVsIHV0aWxpdGllcyBwcm92aWRlZCBpbiB0aGUgOm1vZDpgZW1haWwudXRpbHNgIG1vZHVsZToKK1RoZXJlIGFyZSBhIGNvdXBsZSBvZiB1c2VmdWwgdXRpbGl0aWVzIHByb3ZpZGVkIGluIHRoZSA6bW9kOmBlbWFpbC51dGlsc2AKK21vZHVsZToKKworLi4gZnVuY3Rpb246OiBsb2NhbHRpbWUoZHQ9Tm9uZSkKKworICAgIFJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4gIElmIGNhbGxlZCB3aXRob3V0CisgICAgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCogYXJndW1lbnQgc2hvdWxkIGJlIGEKKyAgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxvY2FsIHRpbWUKKyAgICB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMgbmFpdmUgKHRoYXQKKyAgICBpcywgYGBkdC50emluZm9gYCBpcyBgYE5vbmVgYCksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4gIEluIHRoaXMKKyAgICBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGBgbG9jYWx0aW1lYGAgdG8gcHJlc3VtZQorICAgIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpIGlzIG9yIGlzIG5vdAorICAgIChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQSBuZWdhdGl2ZSB2YWx1ZSBmb3IKKyAgICAqaXNkc3QqIGNhdXNlcyB0aGUgYGBsb2NhbHRpbWVgYCB0byBhdHRlbXB0IHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lCisgICAgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpCisKKyAgIFJldHVybnMgYSBzdHJpbmcgc3VpdGFibGUgZm9yIGFuIDpyZmM6YDI4MjJgXCAtY29tcGxpYW50CisgICA6bWFpbGhlYWRlcjpgTWVzc2FnZS1JRGAgaGVhZGVyLiAgT3B0aW9uYWwgKmlkc3RyaW5nKiBpZiBnaXZlbiwgaXMgYSBzdHJpbmcKKyAgIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgbWVzc2FnZSBpZC4gIE9wdGlvbmFsICpkb21haW4qIGlmCisgICBnaXZlbiBwcm92aWRlcyB0aGUgcG9ydGlvbiBvZiB0aGUgbXNnaWQgYWZ0ZXIgdGhlICdAJy4gIFRoZSBkZWZhdWx0IGlzIHRoZQorICAgbG9jYWwgaG9zdG5hbWUuICBJdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgYnV0CisgICBtYXkgYmUgdXNlZnVsIGNlcnRhaW4gY2FzZXMsIHN1Y2ggYXMgYSBjb25zdHJ1Y3RpbmcgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYXQKKyAgIHVzZXMgYSBjb25zaXN0ZW50IGRvbWFpbiBuYW1lIGFjcm9zcyBtdWx0aXBsZSBob3N0cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFkZGVkIHRoZSAqZG9tYWluKiBrZXl3b3JkLgorCisKK1RoZSByZW1haW5pbmcgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgVGhlcmUKK2lzIG5vIG5lZWQgdG8gZGlyZWN0bHkgdXNlIHRoZXNlIHdpdGggdGhlIG5ldyBBUEksIHNpbmNlIHRoZSBwYXJzaW5nIGFuZAorZm9ybWF0dGluZyB0aGV5IHByb3ZpZGUgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBoZWFkZXIgcGFyc2luZyBtYWNoaW5lcnkKK29mIHRoZSBuZXcgQVBJLgogCiAKIC4uIGZ1bmN0aW9uOjogcXVvdGUoc3RyKQpAQCAtMTQxLDM2ICsxNzcsNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gZnVuY3Rpb246OiBsb2NhbHRpbWUoZHQ9Tm9uZSkKLQotICAgIFJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4gIElmIGNhbGxlZCB3aXRob3V0Ci0gICAgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCogYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxvY2FsIHRpbWUKLSAgICB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMgbmFpdmUgKHRoYXQKLSAgICBpcywgYGBkdC50emluZm9gYCBpcyBgYE5vbmVgYCksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4gIEluIHRoaXMKLSAgICBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGBgbG9jYWx0aW1lYGAgdG8gcHJlc3VtZQotICAgIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpIGlzIG9yIGlzIG5vdAotICAgIChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQSBuZWdhdGl2ZSB2YWx1ZSBmb3IKLSAgICAqaXNkc3QqIGNhdXNlcyB0aGUgYGBsb2NhbHRpbWVgYCB0byBhdHRlbXB0IHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lCi0gICAgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCi0KLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotCi0uLiBmdW5jdGlvbjo6IG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpCi0KLSAgIFJldHVybnMgYSBzdHJpbmcgc3VpdGFibGUgZm9yIGFuIDpyZmM6YDI4MjJgXCAtY29tcGxpYW50Ci0gICA6bWFpbGhlYWRlcjpgTWVzc2FnZS1JRGAgaGVhZGVyLiAgT3B0aW9uYWwgKmlkc3RyaW5nKiBpZiBnaXZlbiwgaXMgYSBzdHJpbmcKLSAgIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgbWVzc2FnZSBpZC4gIE9wdGlvbmFsICpkb21haW4qIGlmCi0gICBnaXZlbiBwcm92aWRlcyB0aGUgcG9ydGlvbiBvZiB0aGUgbXNnaWQgYWZ0ZXIgdGhlICdAJy4gIFRoZSBkZWZhdWx0IGlzIHRoZQotICAgbG9jYWwgaG9zdG5hbWUuICBJdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgYnV0Ci0gICBtYXkgYmUgdXNlZnVsIGNlcnRhaW4gY2FzZXMsIHN1Y2ggYXMgYSBjb25zdHJ1Y3RpbmcgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYXQKLSAgIHVzZXMgYSBjb25zaXN0ZW50IGRvbWFpbiBuYW1lIGFjcm9zcyBtdWx0aXBsZSBob3N0cy4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIEFkZGVkIHRoZSAqZG9tYWluKiBrZXl3b3JkLgotCi0KIC4uIGZ1bmN0aW9uOjogZGVjb2RlX3JmYzIyMzEocykKIAogICAgRGVjb2RlIHRoZSBzdHJpbmcgKnMqIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VudW0ucnN0IGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKaW5kZXggYTNkNWFmYy4uODdhYThiMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW51bS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKQEAgLTIzLDkgKzIzLDEwIEBACiBNb2R1bGUgQ29udGVudHMKIC0tLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHR3byBlbnVtZXJhdGlvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHVuaXF1ZQotc2V0cyBvZiBuYW1lcyBhbmQgdmFsdWVzOiA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEludEVudW1gLiAgSXQgYWxzbyBkZWZpbmVzCi1vbmUgZGVjb3JhdG9yLCA6ZnVuYzpgdW5pcXVlYC4KK1RoaXMgbW9kdWxlIGRlZmluZXMgZm91ciBlbnVtZXJhdGlvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHVuaXF1ZQorc2V0cyBvZiBuYW1lcyBhbmQgdmFsdWVzOiA6Y2xhc3M6YEVudW1gLCA6Y2xhc3M6YEludEVudW1gLCBhbmQKKzpjbGFzczpgSW50RmxhZ3NgLiAgSXQgYWxzbyBkZWZpbmVzIG9uZSBkZWNvcmF0b3IsIDpmdW5jOmB1bmlxdWVgLCBhbmQgb25lCitoZWxwZXIsIDpjbGFzczpgYXV0b2AuCiAKIC4uIGNsYXNzOjogRW51bQogCkBAIC0zNywxMCArMzgsMjcgQEAKICAgICBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBlbnVtZXJhdGVkIGNvbnN0YW50cyB0aGF0IGFyZSBhbHNvCiAgICAgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAuCiAKKy4uIGNsYXNzOjogSW50RmxhZworCisgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBjYW4gYmUgY29tYmluZWQgdXNpbmcKKyAgICB0aGUgYml0d2lzZSBvcGVyYXRvcnMgd2l0aG91dCBsb3NpbmcgdGhlaXIgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzaGlwLgorICAgIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVycyBhcmUgYWxzbyBzdWJjbGFzc2VzIG9mIDpjbGFzczpgaW50YC4KKworLi4gY2xhc3M6OiBGbGFnCisKKyAgICBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBlbnVtZXJhdGVkIGNvbnN0YW50cyB0aGF0IGNhbiBiZSBjb21iaW5lZCB1c2luZworICAgIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgd2l0aG91dCBsb3NpbmcgdGhlaXIgOmNsYXNzOmBGbGFnYCBtZW1iZXJzaGlwLgorCiAuLiBmdW5jdGlvbjo6IHVuaXF1ZQogCiAgICAgRW51bSBjbGFzcyBkZWNvcmF0b3IgdGhhdCBlbnN1cmVzIG9ubHkgb25lIG5hbWUgaXMgYm91bmQgdG8gYW55IG9uZSB2YWx1ZS4KIAorLi4gY2xhc3M6OiBhdXRvCisKKyAgICBJbnN0YW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggYW4gYXBwcm9wcmlhdGUgdmFsdWUgZm9yIEVudW0gbWVtYmVycy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42ICBgYEZsYWdgYCwgYGBJbnRGbGFnYGAsIGBgYXV0b2BgCisKIAogQ3JlYXRpbmcgYW4gRW51bQogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTcsNiArNzUsMTMgQEAKICAgICAuLi4gICAgIGJsdWUgPSAzCiAgICAgLi4uCiAKKy4uIG5vdGU6OiBFbnVtIG1lbWJlciB2YWx1ZXMKKworICAgIE1lbWJlciB2YWx1ZXMgY2FuIGJlIGFueXRoaW5nOiA6Y2xhc3M6YGludGAsIDpjbGFzczpgc3RyYCwgZXRjLi4gIElmCisgICAgdGhlIGV4YWN0IHZhbHVlIGlzIHVuaW1wb3J0YW50IHlvdSBtYXkgdXNlIDpjbGFzczpgYXV0b2AgaW5zdGFuY2VzIGFuZCBhbgorICAgIGFwcHJvcHJpYXRlIHZhbHVlIHdpbGwgYmUgY2hvc2VuIGZvciB5b3UuICBDYXJlIG11c3QgYmUgdGFrZW4gaWYgeW91IG1peAorICAgIDpjbGFzczpgYXV0b2Agd2l0aCBvdGhlciB2YWx1ZXMuCisKIC4uIG5vdGU6OiBOb21lbmNsYXR1cmUKIAogICAtIFRoZSBjbGFzcyA6Y2xhc3M6YENvbG9yYCBpcyBhbiAqZW51bWVyYXRpb24qIChvciAqZW51bSopCkBAIC0yMTIsNiArMjM3LDQyIEBACiAgICAgVmFsdWVFcnJvcjogZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBmb3VyIC0+IHRocmVlCiAKIAorVXNpbmcgYXV0b21hdGljIHZhbHVlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgZXhhY3QgdmFsdWUgaXMgdW5pbXBvcnRhbnQgeW91IGNhbiB1c2UgOmNsYXNzOmBhdXRvYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRvCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KENvbG9yKQorICAgIFs8Q29sb3IucmVkOiAxPiwgPENvbG9yLmJsdWU6IDI+LCA8Q29sb3IuZ3JlZW46IDM+XQorCitUaGUgdmFsdWVzIGFyZSBjaG9zZW4gYnkgOmZ1bmM6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AsIHdoaWNoIGNhbiBiZQorb3ZlcnJpZGRlbjo6CisKKyAgICA+Pj4gY2xhc3MgQXV0b05hbWUoRW51bSk6CisgICAgLi4uICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBuYW1lCisgICAgLi4uCisgICAgPj4+IGNsYXNzIE9yZGluYWwoQXV0b05hbWUpOgorICAgIC4uLiAgICAgbm9ydGggPSBhdXRvKCkKKyAgICAuLi4gICAgIHNvdXRoID0gYXV0bygpCisgICAgLi4uICAgICBlYXN0ID0gYXV0bygpCisgICAgLi4uICAgICB3ZXN0ID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IGxpc3QoT3JkaW5hbCkKKyAgICBbPE9yZGluYWwubm9ydGg6ICdub3J0aCc+LCA8T3JkaW5hbC5zb3V0aDogJ3NvdXRoJz4sIDxPcmRpbmFsLmVhc3Q6ICdlYXN0Jz4sIDxPcmRpbmFsLndlc3Q6ICd3ZXN0Jz5dCisKKy4uIG5vdGU6OgorCisgICAgVGhlIGdvYWwgb2YgdGhlIGRlZmF1bHQgOm1ldGg6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AgbWV0aG9kcyBpcyB0byBwcm92aWRlCisgICAgdGhlIG5leHQgOmNsYXNzOmBpbnRgIGluIHNlcXVlbmNlIHdpdGggdGhlIGxhc3QgOmNsYXNzOmBpbnRgIHByb3ZpZGVkLCBidXQKKyAgICB0aGUgd2F5IGl0IGRvZXMgdGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIG1heSBjaGFuZ2UuCisKIEl0ZXJhdGlvbgogLS0tLS0tLS0tCiAKQEAgLTI1Nyw3ICszMTgsNyBAQAogICAgID4+PiBDb2xvci5yZWQgPCBDb2xvci5ibHVlCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgICBUeXBlRXJyb3I6IHVub3JkZXJhYmxlIHR5cGVzOiBDb2xvcigpIDwgQ29sb3IoKQorICAgIFR5cGVFcnJvcjogJzwnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ0NvbG9yJyBhbmQgJ0NvbG9yJwogCiBFcXVhbGl0eSBjb21wYXJpc29ucyBhcmUgZGVmaW5lZCB0aG91Z2g6OgogCkBAIC00NzgsNyArNTM5LDcgQEAKIEludEVudW0KIF5eXl5eXl4KIAotQSB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCBpcyBwcm92aWRlZCB3aGljaCBpcyBhbHNvIGEgc3ViY2xhc3Mgb2YKK1RoZSBmaXJzdCB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCB0aGF0IGlzIHByb3ZpZGVkIGlzIGFsc28gYSBzdWJjbGFzcyBvZgogOmNsYXNzOmBpbnRgLiAgTWVtYmVycyBvZiBhbiA6Y2xhc3M6YEludEVudW1gIGNhbiBiZSBjb21wYXJlZCB0byBpbnRlZ2VyczsKIGJ5IGV4dGVuc2lvbiwgaW50ZWdlciBlbnVtZXJhdGlvbnMgb2YgZGlmZmVyZW50IHR5cGVzIGNhbiBhbHNvIGJlIGNvbXBhcmVkCiB0byBlYWNoIG90aGVyOjoKQEAgLTUyMSwxMyArNTgyLDEyNCBAQAogICAgID4+PiBbaSBmb3IgaSBpbiByYW5nZShTaGFwZS5zcXVhcmUpXQogICAgIFswLCAxXQogCi1Gb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YgY29kZSwgOmNsYXNzOmBFbnVtYCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCwKLXNpbmNlIDpjbGFzczpgSW50RW51bWAgYnJlYWtzIHNvbWUgc2VtYW50aWMgcHJvbWlzZXMgb2YgYW4gZW51bWVyYXRpb24gKGJ5Ci1iZWluZyBjb21wYXJhYmxlIHRvIGludGVnZXJzLCBhbmQgdGh1cyBieSB0cmFuc2l0aXZpdHkgdG8gb3RoZXIKLXVucmVsYXRlZCBlbnVtZXJhdGlvbnMpLiAgSXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBzcGVjaWFsIGNhc2VzIHdoZXJlCi10aGVyZSdzIG5vIG90aGVyIGNob2ljZTsgZm9yIGV4YW1wbGUsIHdoZW4gaW50ZWdlciBjb25zdGFudHMgYXJlCi1yZXBsYWNlZCB3aXRoIGVudW1lcmF0aW9ucyBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQgd2l0aCBjb2RlCi10aGF0IHN0aWxsIGV4cGVjdHMgaW50ZWdlcnMuCisKK0ludEZsYWcKK15eXl5eXl4KKworVGhlIG5leHQgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgcHJvdmlkZWQsIDpjbGFzczpgSW50RmxhZ2AsIGlzIGFsc28gYmFzZWQKK29uIDpjbGFzczpgaW50YC4gIFRoZSBkaWZmZXJlbmNlIGJlaW5nIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVycyBjYW4gYmUgY29tYmluZWQKK3VzaW5nIHRoZSBiaXR3aXNlIG9wZXJhdG9ycyAoJiwgXHwsIF4sIH4pIGFuZCB0aGUgcmVzdWx0IGlzIHN0aWxsIGFuCis6Y2xhc3M6YEludEZsYWdgIG1lbWJlci4gIEhvd2V2ZXIsIGFzIHRoZSBuYW1lIGltcGxpZXMsIDpjbGFzczpgSW50RmxhZ2AKK21lbWJlcnMgYWxzbyBzdWJjbGFzcyA6Y2xhc3M6YGludGAgYW5kIGNhbiBiZSB1c2VkIHdoZXJldmVyIGFuIDpjbGFzczpgaW50YCBpcwordXNlZC4gIEFueSBvcGVyYXRpb24gb24gYW4gOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXIgYmVzaWRlcyB0aGUgYml0LXdpc2UKK29wZXJhdGlvbnMgd2lsbCBsb3NlIHRoZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnNoaXAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitTYW1wbGUgOmNsYXNzOmBJbnRGbGFnYCBjbGFzczo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBJbnRGbGFnCisgICAgPj4+IGNsYXNzIFBlcm0oSW50RmxhZyk6CisgICAgLi4uICAgICBSID0gNAorICAgIC4uLiAgICAgVyA9IDIKKyAgICAuLi4gICAgIFggPSAxCisgICAgLi4uCisgICAgPj4+IFBlcm0uUiB8IFBlcm0uVworICAgIDxQZXJtLlJ8VzogNj4KKyAgICA+Pj4gUGVybS5SICsgUGVybS5XCisgICAgNgorICAgID4+PiBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgID4+PiBQZXJtLlIgaW4gUlcKKyAgICBUcnVlCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gbmFtZSB0aGUgY29tYmluYXRpb25zOjoKKworICAgID4+PiBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgIC4uLiAgICAgUiA9IDQKKyAgICAuLi4gICAgIFcgPSAyCisgICAgLi4uICAgICBYID0gMQorICAgIC4uLiAgICAgUldYID0gNworICAgID4+PiBQZXJtLlJXWAorICAgIDxQZXJtLlJXWDogNz4KKyAgICA+Pj4gflBlcm0uUldYCisgICAgPFBlcm0uLTg6IC04PgorCitBbm90aGVyIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gOmNsYXNzOmBJbnRGbGFnYCBhbmQgOmNsYXNzOmBFbnVtYCBpcyB0aGF0CitpZiBubyBmbGFncyBhcmUgc2V0ICh0aGUgdmFsdWUgaXMgMCksIGl0cyBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gUGVybS5SICYgUGVybS5YCisgICAgPFBlcm0uMDogMD4KKyAgICA+Pj4gYm9vbChQZXJtLlIgJiBQZXJtLlgpCisgICAgRmFsc2UKKworQmVjYXVzZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgYXJlIGFsc28gc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAgdGhleSBjYW4KK2JlIGNvbWJpbmVkIHdpdGggdGhlbTo6CisKKyAgICA+Pj4gUGVybS5YIHwgOAorICAgIDxQZXJtLjh8WDogOT4KKworCitGbGFnCiteXl5eCisKK1RoZSBsYXN0IHZhcmlhdGlvbiBpcyA6Y2xhc3M6YEZsYWdgLiAgTGlrZSA6Y2xhc3M6YEludEZsYWdgLCA6Y2xhc3M6YEZsYWdgCittZW1iZXJzIGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBvcGVyYXRvcnMgKCYsIFx8LCBeLCB+KS4gIFVubGlrZQorOmNsYXNzOmBJbnRGbGFnYCwgdGhleSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCwgbm9yIGNvbXBhcmVkIGFnYWluc3QsIGFueQorb3RoZXIgOmNsYXNzOmBGbGFnYCBlbnVtZXJhdGlvbiwgbm9yIDpjbGFzczpgaW50YC4gIFdoaWxlIGl0IGlzIHBvc3NpYmxlIHRvCitzcGVjaWZ5IHRoZSB2YWx1ZXMgZGlyZWN0bHkgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIDpjbGFzczpgYXV0b2AgYXMgdGhlCit2YWx1ZSBhbmQgbGV0IDpjbGFzczpgRmxhZ2Agc2VsZWN0IGFuIGFwcHJvcHJpYXRlIHZhbHVlLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworTGlrZSA6Y2xhc3M6YEludEZsYWdgLCBpZiBhIGNvbWJpbmF0aW9uIG9mIDpjbGFzczpgRmxhZ2AgbWVtYmVycyByZXN1bHRzIGluIG5vCitmbGFncyBiZWluZyBzZXQsIHRoZSBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBGbGFnCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5yZWQgJiBDb2xvci5ncmVlbgorICAgIDxDb2xvci4wOiAwPgorICAgID4+PiBib29sKENvbG9yLnJlZCAmIENvbG9yLmdyZWVuKQorICAgIEZhbHNlCisKK0luZGl2aWR1YWwgZmxhZ3Mgc2hvdWxkIGhhdmUgdmFsdWVzIHRoYXQgYXJlIHBvd2VycyBvZiB0d28gKDEsIDIsIDQsIDgsIC4uLiksCit3aGlsZSBjb21iaW5hdGlvbnMgb2YgZmxhZ3Mgd29uJ3Q6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLiAgICAgd2hpdGUgPSByZWQgfCBibHVlIHwgZ3JlZW4KKyAgICAuLi4KKyAgICA+Pj4gQ29sb3Iud2hpdGUKKyAgICA8Q29sb3Iud2hpdGU6IDc+CisKK0dpdmluZyBhIG5hbWUgdG8gdGhlICJubyBmbGFncyBzZXQiIGNvbmRpdGlvbiBkb2VzIG5vdCBjaGFuZ2UgaXRzIGJvb2xlYW4KK3ZhbHVlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIGJsYWNrID0gMAorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5ibGFjaworICAgIDxDb2xvci5ibGFjazogMD4KKyAgICA+Pj4gYm9vbChDb2xvci5ibGFjaykKKyAgICBGYWxzZQorCisuLiBub3RlOjoKKworICAgIEZvciB0aGUgbWFqb3JpdHkgb2YgbmV3IGNvZGUsIDpjbGFzczpgRW51bWAgYW5kIDpjbGFzczpgRmxhZ2AgYXJlIHN0cm9uZ2x5CisgICAgcmVjb21tZW5kZWQsIHNpbmNlIDpjbGFzczpgSW50RW51bWAgYW5kIDpjbGFzczpgSW50RmxhZ2AgYnJlYWsgc29tZQorICAgIHNlbWFudGljIHByb21pc2VzIG9mIGFuIGVudW1lcmF0aW9uIChieSBiZWluZyBjb21wYXJhYmxlIHRvIGludGVnZXJzLCBhbmQKKyAgICB0aHVzIGJ5IHRyYW5zaXRpdml0eSB0byBvdGhlciB1bnJlbGF0ZWQgZW51bWVyYXRpb25zKS4gIDpjbGFzczpgSW50RW51bWAKKyAgICBhbmQgOmNsYXNzOmBJbnRGbGFnYCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2VzIHdoZXJlIDpjbGFzczpgRW51bWAgYW5kCisgICAgOmNsYXNzOmBGbGFnYCB3aWxsIG5vdCBkbzsgZm9yIGV4YW1wbGUsIHdoZW4gaW50ZWdlciBjb25zdGFudHMgYXJlIHJlcGxhY2VkCisgICAgd2l0aCBlbnVtZXJhdGlvbnMsIG9yIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggb3RoZXIgc3lzdGVtcy4KIAogCiBPdGhlcnMKQEAgLTU1OCw3ICs3MzAsOCBAQAogNC4gJS1zdHlsZSBmb3JtYXR0aW5nOiAgYCVzYCBhbmQgYCVyYCBjYWxsIHRoZSA6Y2xhc3M6YEVudW1gIGNsYXNzJ3MKICAgIDptZXRoOmBfX3N0cl9fYCBhbmQgOm1ldGg6YF9fcmVwcl9fYCByZXNwZWN0aXZlbHk7IG90aGVyIGNvZGVzIChzdWNoIGFzCiAgICBgJWlgIG9yIGAlaGAgZm9yIEludEVudW0pIHRyZWF0IHRoZSBlbnVtIG1lbWJlciBhcyBpdHMgbWl4ZWQtaW4gdHlwZS4KLTUuIDptZXRoOmBzdHIuZm9ybWF0YCAob3IgOmZ1bmM6YGZvcm1hdGApIHdpbGwgdXNlIHRoZSBtaXhlZC1pbgorNS4gOnJlZjpgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIDptZXRoOmBzdHIuZm9ybWF0YCwKKyAgIGFuZCA6ZnVuYzpgZm9ybWF0YCB3aWxsIHVzZSB0aGUgbWl4ZWQtaW4KICAgIHR5cGUncyA6bWV0aDpgX19mb3JtYXRfX2AuICBJZiB0aGUgOmNsYXNzOmBFbnVtYCBjbGFzcydzIDpmdW5jOmBzdHJgIG9yCiAgICA6ZnVuYzpgcmVwcmAgaXMgZGVzaXJlZCwgdXNlIHRoZSBgIXNgIG9yIGAhcmAgZm9ybWF0IGNvZGVzLgogCkBAIC01NjYsMTggKzczOSw4NyBAQAogSW50ZXJlc3RpbmcgZXhhbXBsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoaWxlIDpjbGFzczpgRW51bWAgYW5kIDpjbGFzczpgSW50RW51bWAgYXJlIGV4cGVjdGVkIHRvIGNvdmVyIHRoZSBtYWpvcml0eSBvZgotdXNlLWNhc2VzLCB0aGV5IGNhbm5vdCBjb3ZlciB0aGVtIGFsbC4gIEhlcmUgYXJlIHJlY2lwZXMgZm9yIHNvbWUgZGlmZmVyZW50Ci10eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBkaXJlY3RseSwgb3IgYXMgZXhhbXBsZXMgZm9yIGNyZWF0aW5nCi1vbmUncyBvd24uCitXaGlsZSA6Y2xhc3M6YEVudW1gLCA6Y2xhc3M6YEludEVudW1gLCA6Y2xhc3M6YEludEZsYWdgLCBhbmQgOmNsYXNzOmBGbGFnYCBhcmUKK2V4cGVjdGVkIHRvIGNvdmVyIHRoZSBtYWpvcml0eSBvZiB1c2UtY2FzZXMsIHRoZXkgY2Fubm90IGNvdmVyIHRoZW0gYWxsLiAgSGVyZQorYXJlIHJlY2lwZXMgZm9yIHNvbWUgZGlmZmVyZW50IHR5cGVzIG9mIGVudW1lcmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGRpcmVjdGx5LAorb3IgYXMgZXhhbXBsZXMgZm9yIGNyZWF0aW5nIG9uZSdzIG93bi4KIAogCi1BdXRvTnVtYmVyCi1eXl5eXl5eXl5eCitPbWl0dGluZyB2YWx1ZXMKK15eXl5eXl5eXl5eXl5eXgogCi1Bdm9pZHMgaGF2aW5nIHRvIHNwZWNpZnkgdGhlIHZhbHVlIGZvciBlYWNoIGVudW1lcmF0aW9uIG1lbWJlcjo6CitJbiBtYW55IHVzZS1jYXNlcyBvbmUgZG9lc24ndCBjYXJlIHdoYXQgdGhlIGFjdHVhbCB2YWx1ZSBvZiBhbiBlbnVtZXJhdGlvbgoraXMuIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZGVmaW5lIHRoaXMgdHlwZSBvZiBzaW1wbGUgZW51bWVyYXRpb246CiAKLSAgICA+Pj4gY2xhc3MgQXV0b051bWJlcihFbnVtKToKKy0gdXNlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YGF1dG9gIGZvciB0aGUgdmFsdWUKKy0gdXNlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YG9iamVjdGAgYXMgdGhlIHZhbHVlCistIHVzZSBhIGRlc2NyaXB0aXZlIHN0cmluZyBhcyB0aGUgdmFsdWUKKy0gdXNlIGEgdHVwbGUgYXMgdGhlIHZhbHVlIGFuZCBhIGN1c3RvbSA6bWV0aDpgX19uZXdfX2AgdG8gcmVwbGFjZSB0aGUKKyAgdHVwbGUgd2l0aCBhbiA6Y2xhc3M6YGludGAgdmFsdWUKKworVXNpbmcgYW55IG9mIHRoZXNlIG1ldGhvZHMgc2lnbmlmaWVzIHRvIHRoZSB1c2VyIHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBub3QKK2ltcG9ydGFudCwgYW5kIGFsc28gZW5hYmxlcyBvbmUgdG8gYWRkLCByZW1vdmUsIG9yIHJlb3JkZXIgbWVtYmVycyB3aXRob3V0CitoYXZpbmcgdG8gcmVudW1iZXIgdGhlIHJlbWFpbmluZyBtZW1iZXJzLgorCitXaGljaGV2ZXIgbWV0aG9kIHlvdSBjaG9vc2UsIHlvdSBzaG91bGQgcHJvdmlkZSBhIDptZXRoOmByZXByYCB0aGF0IGFsc28gaGlkZXMKK3RoZSAodW5pbXBvcnRhbnQpIHZhbHVlOjoKKworICAgID4+PiBjbGFzcyBOb1ZhbHVlKEVudW0pOgorICAgIC4uLiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiAnPCVzLiVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKKyAgICAuLi4KKworCitVc2luZyA6Y2xhc3M6YGF1dG9gCisiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIDpjbGFzczpgb2JqZWN0YCB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5ncmVlbgorICAgIDxDb2xvci5ncmVlbj4KKworCitVc2luZyA6Y2xhc3M6YG9iamVjdGAKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyA6Y2xhc3M6YG9iamVjdGAgd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihOb1ZhbHVlKToKKyAgICAuLi4gICAgIHJlZCA9IG9iamVjdCgpCisgICAgLi4uICAgICBncmVlbiA9IG9iamVjdCgpCisgICAgLi4uICAgICBibHVlID0gb2JqZWN0KCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisKKworVXNpbmcgYSBkZXNjcmlwdGl2ZSBzdHJpbmcKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIGEgc3RyaW5nIGFzIHRoZSB2YWx1ZSB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgcmVkID0gJ3N0b3AnCisgICAgLi4uICAgICBncmVlbiA9ICdnbycKKyAgICAuLi4gICAgIGJsdWUgPSAndG9vIGZhc3QhJworICAgIC4uLgorICAgID4+PiBDb2xvci5ncmVlbgorICAgIDxDb2xvci5ncmVlbj4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4udmFsdWUKKyAgICAnZ28nCisKKworVXNpbmcgYSBjdXN0b20gOm1ldGg6YF9fbmV3X19gCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgYW4gYXV0by1udW1iZXJpbmcgOm1ldGg6YF9fbmV3X19gIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQXV0b051bWJlcihOb1ZhbHVlKToKICAgICAuLi4gICAgIGRlZiBfX25ld19fKGNscyk6CiAgICAgLi4uICAgICAgICAgdmFsdWUgPSBsZW4oY2xzLl9fbWVtYmVyc19fKSArIDEKICAgICAuLi4gICAgICAgICBvYmogPSBvYmplY3QuX19uZXdfXyhjbHMpCkBAIC01ODksOCArODMxLDExIEBACiAgICAgLi4uICAgICBncmVlbiA9ICgpCiAgICAgLi4uICAgICBibHVlID0gKCkKICAgICAuLi4KLSAgICA+Pj4gQ29sb3IuZ3JlZW4udmFsdWUgPT0gMgotICAgIFRydWUKKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisgICAgPj4+IENvbG9yLmdyZWVuLnZhbHVlCisgICAgMgorCiAKIC4uIG5vdGU6OgogCkBAIC03MzAsMTAgKzk3NSw2MCBAQAogRmluZXIgUG9pbnRzCiBeXl5eXl5eXl5eXl4KIAotOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBpbnN0YW5jZXMgb2YgYW4gOmNsYXNzOmBFbnVtYCBjbGFzcywgYW5kIGV2ZW4KLXRob3VnaCB0aGV5IGFyZSBhY2Nlc3NpYmxlIGFzIGBFbnVtQ2xhc3MubWVtYmVyYCwgdGhleSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkCi1kaXJlY3RseSBmcm9tIHRoZSBtZW1iZXIgYXMgdGhhdCBsb29rdXAgbWF5IGZhaWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nCi1iZXNpZGVzIHRoZSA6Y2xhc3M6YEVudW1gIG1lbWJlciB5b3UgbG9va2luZyBmb3I6OgorU3VwcG9ydGVkIGBgX19kdW5kZXJfX2BgIG5hbWVzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmF0dHI6YF9fbWVtYmVyc19fYCBpcyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvZiBgYG1lbWJlcl9uYW1lYGA6YGBtZW1iZXJgYAoraXRlbXMuICBJdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUgY2xhc3MuCisKKzptZXRoOmBfX25ld19fYCwgaWYgc3BlY2lmaWVkLCBtdXN0IGNyZWF0ZSBhbmQgcmV0dXJuIHRoZSBlbnVtIG1lbWJlcnM7IGl0IGlzCithbHNvIGEgdmVyeSBnb29kIGlkZWEgdG8gc2V0IHRoZSBtZW1iZXIncyA6YXR0cjpgX3ZhbHVlX2AgYXBwcm9wcmlhdGVseS4gIE9uY2UKK2FsbCB0aGUgbWVtYmVycyBhcmUgY3JlYXRlZCBpdCBpcyBubyBsb25nZXIgdXNlZC4KKworCitTdXBwb3J0ZWQgYGBfc3VuZGVyX2BgIG5hbWVzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKy0gYGBfbmFtZV9gYCAtLSBuYW1lIG9mIHRoZSBtZW1iZXIKKy0gYGBfdmFsdWVfYGAgLS0gdmFsdWUgb2YgdGhlIG1lbWJlcjsgY2FuIGJlIHNldCAvIG1vZGlmaWVkIGluIGBgX19uZXdfX2BgCisKKy0gYGBfbWlzc2luZ19gYCAtLSBhIGxvb2t1cCBmdW5jdGlvbiB1c2VkIHdoZW4gYSB2YWx1ZSBpcyBub3QgZm91bmQ7IG1heSBiZQorICBvdmVycmlkZGVuCistIGBgX29yZGVyX2BgIC0tIHVzZWQgaW4gUHl0aG9uIDIvMyBjb2RlIHRvIGVuc3VyZSBtZW1iZXIgb3JkZXIgaXMgY29uc2lzdGVudAorICAoY2xhc3MgYXR0cmlidXRlLCByZW1vdmVkIGR1cmluZyBjbGFzcyBjcmVhdGlvbikKKy0gYGBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gYCAtLSB1c2VkIGJ5IHRoZSBgRnVuY3Rpb25hbCBBUElgXyBhbmQgYnkKKyAgOmNsYXNzOmBhdXRvYCB0byBnZXQgYW4gYXBwcm9wcmlhdGUgdmFsdWUgZm9yIGFuIGVudW0gbWVtYmVyOyBtYXkgYmUKKyAgb3ZlcnJpZGRlbgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgYGBfbWlzc2luZ19gYCwgYGBfb3JkZXJfYGAsIGBgX2dlbmVyYXRlX25leHRfdmFsdWVfYGAKKworVG8gaGVscCBrZWVwIFB5dGhvbiAyIC8gUHl0aG9uIDMgY29kZSBpbiBzeW5jIGFuIDphdHRyOmBfb3JkZXJfYCBhdHRyaWJ1dGUgY2FuCitiZSBwcm92aWRlZC4gIEl0IHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBhY3R1YWwgb3JkZXIgb2YgdGhlIGVudW1lcmF0aW9uCithbmQgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIHR3byBkbyBub3QgbWF0Y2g6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAuLi4gICAgIHJlZCA9IDEKKyAgICAuLi4gICAgIGJsdWUgPSAzCisgICAgLi4uICAgICBncmVlbiA9IDIKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiBtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXworCisuLiBub3RlOjoKKworICAgIEluIFB5dGhvbiAyIGNvZGUgdGhlIDphdHRyOmBfb3JkZXJfYCBhdHRyaWJ1dGUgaXMgbmVjZXNzYXJ5IGFzIGRlZmluaXRpb24KKyAgICBvcmRlciBpcyBsb3N0IGJlZm9yZSBpdCBjYW4gYmUgcmVjb3JkZWQuCisKK2BgRW51bWBgIG1lbWJlciB0eXBlCisiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6Y2xhc3M6YEVudW1gIG1lbWJlcnMgYXJlIGluc3RhbmNlcyBvZiB0aGVpciA6Y2xhc3M6YEVudW1gIGNsYXNzLCBhbmQgYXJlCitub3JtYWxseSBhY2Nlc3NlZCBhcyBgYEVudW1DbGFzcy5tZW1iZXJgYC4gIFVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB0aGV5CitjYW4gYWxzbyBiZSBhY2Nlc3NlZCBhcyBgYEVudW1DbGFzcy5tZW1iZXIubWVtYmVyYGAsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyIGRvCit0aGlzIGFzIHRoYXQgbG9va3VwIG1heSBmYWlsIG9yLCB3b3JzZSwgcmV0dXJuIHNvbWV0aGluZyBiZXNpZGVzIHRoZQorOmNsYXNzOmBFbnVtYCBtZW1iZXIgeW91IGFyZSBsb29raW5nIGZvcjo6CiAKICAgICA+Pj4gY2xhc3MgRmllbGRUeXBlcyhFbnVtKToKICAgICAuLi4gICAgIG5hbWUgPSAwCkBAIC03NDcsNyArMTA0MiwyNCBAQAogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogCi1UaGUgOmF0dHI6YF9fbWVtYmVyc19fYCBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgb24gdGhlIGNsYXNzLgorCitCb29sZWFuIHZhbHVlIG9mIGBgRW51bWBgIGNsYXNzZXMgYW5kIG1lbWJlcnMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6Y2xhc3M6YEVudW1gIG1lbWJlcnMgdGhhdCBhcmUgbWl4ZWQgd2l0aCBub24tOmNsYXNzOmBFbnVtYCB0eXBlcyAoc3VjaCBhcworOmNsYXNzOmBpbnRgLCA6Y2xhc3M6YHN0cmAsIGV0Yy4pIGFyZSBldmFsdWF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBtaXhlZC1pbgordHlwZSdzIHJ1bGVzOyBvdGhlcndpc2UsIGFsbCBtZW1iZXJzIGV2YWx1YXRlIGFzIDpkYXRhOmBUcnVlYC4gIFRvIG1ha2UgeW91cgorb3duIEVudW0ncyBib29sZWFuIGV2YWx1YXRpb24gZGVwZW5kIG9uIHRoZSBtZW1iZXIncyB2YWx1ZSBhZGQgdGhlIGZvbGxvd2luZyB0bworeW91ciBjbGFzczo6CisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYudmFsdWUpCisKKzpjbGFzczpgRW51bWAgY2xhc3NlcyBhbHdheXMgZXZhbHVhdGUgYXMgOmRhdGE6YFRydWVgLgorCisKK2BgRW51bWBgIGNsYXNzZXMgd2l0aCBtZXRob2RzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBJZiB5b3UgZ2l2ZSB5b3VyIDpjbGFzczpgRW51bWAgc3ViY2xhc3MgZXh0cmEgbWV0aG9kcywgbGlrZSB0aGUgYFBsYW5ldGBfCiBjbGFzcyBhYm92ZSwgdGhvc2UgbWV0aG9kcyB3aWxsIHNob3cgdXAgaW4gYSA6ZnVuYzpgZGlyYCBvZiB0aGUgbWVtYmVyLApAQCAtNzU4LDExICsxMDcwLDIzIEBACiAgICAgPj4+IGRpcihQbGFuZXQuRUFSVEgpCiAgICAgWydfX2NsYXNzX18nLCAnX19kb2NfXycsICdfX21vZHVsZV9fJywgJ25hbWUnLCAnc3VyZmFjZV9ncmF2aXR5JywgJ3ZhbHVlJ10KIAotVGhlIDptZXRoOmBfX25ld19fYCBtZXRob2Qgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUKLTpjbGFzczpgRW51bWAgbWVtYmVycyAtLSBhZnRlciB0aGF0IGl0IGlzIHJlcGxhY2VkLiAgQW55IGN1c3RvbSA6bWV0aDpgX19uZXdfX2AKLW1ldGhvZCBtdXN0IGNyZWF0ZSB0aGUgb2JqZWN0IGFuZCBzZXQgdGhlIDphdHRyOmBfdmFsdWVfYCBhdHRyaWJ1dGUKLWFwcHJvcHJpYXRlbHkuCiAKLUlmIHlvdSB3aXNoIHRvIGNoYW5nZSBob3cgOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBsb29rZWQgdXAgeW91IHNob3VsZCBlaXRoZXIKLXdyaXRlIGEgaGVscGVyIGZ1bmN0aW9uIG9yIGEgOmZ1bmM6YGNsYXNzbWV0aG9kYCBmb3IgdGhlIDpjbGFzczpgRW51bWAKLXN1YmNsYXNzLgorQ29tYmluaW5nIG1lbWJlcnMgb2YgYGBGbGFnYGAKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK0lmIGEgY29tYmluYXRpb24gb2YgRmxhZyBtZW1iZXJzIGlzIG5vdCBuYW1lZCwgdGhlIDpmdW5jOmByZXByYCB3aWxsIGluY2x1ZGUKK2FsbCBuYW1lZCBmbGFncyBhbmQgYWxsIG5hbWVkIGNvbWJpbmF0aW9ucyBvZiBmbGFncyB0aGF0IGFyZSBpbiB0aGUgdmFsdWU6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgbWFnZW50YSA9IHJlZCB8IGJsdWUKKyAgICAuLi4gICAgIHllbGxvdyA9IHJlZCB8IGdyZWVuCisgICAgLi4uICAgICBjeWFuID0gZ3JlZW4gfCBibHVlCisgICAgLi4uCisgICAgPj4+IENvbG9yKDMpICAjIG5hbWVkIGNvbWJpbmF0aW9uCisgICAgPENvbG9yLnllbGxvdzogMz4KKyAgICA+Pj4gQ29sb3IoNykgICAgICAjIG5vdCBuYW1lZCBjb21iaW5hdGlvbgorICAgIDxDb2xvci5jeWFufG1hZ2VudGF8Ymx1ZXx5ZWxsb3d8Z3JlZW58cmVkOiA3PgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CmluZGV4IDVhNzE5MzMuLmE0MjhmNTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CkBAIC0xNzAsOCArMTcwLDkgQEAKIAogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAotICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCi0gICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgorICAgUmFpc2VkIHdoZW4gdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBoYXMgdHJvdWJsZXMgdHJ5aW5nIHRvCisgICBsb2FkIGEgbW9kdWxlLiAgQWxzbyByYWlzZWQgd2hlbiB0aGUgImZyb20gbGlzdCIgaW4gYGBmcm9tIC4uLiBpbXBvcnRgYAorICAgaGFzIGEgbmFtZSB0aGF0IGNhbm5vdCBiZSBmb3VuZC4KIAogICAgVGhlIDphdHRyOmBuYW1lYCBhbmQgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCB1c2luZyBrZXl3b3JkLW9ubHkKICAgIGFyZ3VtZW50cyB0byB0aGUgY29uc3RydWN0b3IuIFdoZW4gc2V0IHRoZXkgcmVwcmVzZW50IHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUKQEAgLTE4MSw2ICsxODIsMTQgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcy4KIAorLi4gZXhjZXB0aW9uOjogTW9kdWxlTm90Rm91bmRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YEltcG9ydEVycm9yYCB3aGljaCBpcyByYWlzZWQgYnkgOmtleXdvcmQ6YGltcG9ydGAKKyAgIHdoZW4gYSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQuICBJdCBpcyBhbHNvIHJhaXNlZCB3aGVuIGBgTm9uZWBgCisgICBpcyBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAuLiBleGNlcHRpb246OiBJbmRleEVycm9yCiAKQEAgLTIyOCw5ICsyMzcsMjEgQEAKIC4uIGV4Y2VwdGlvbjo6IE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgVGhpcyBleGNlcHRpb24gaXMgZGVyaXZlZCBmcm9tIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBJbiB1c2VyIGRlZmluZWQgYmFzZQotICAgY2xhc3NlcywgYWJzdHJhY3QgbWV0aG9kcyBzaG91bGQgcmFpc2UgdGhpcyBleGNlcHRpb24gd2hlbiB0aGV5IHJlcXVpcmUgZGVyaXZlZAotICAgY2xhc3NlcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kLgorICAgY2xhc3NlcywgYWJzdHJhY3QgbWV0aG9kcyBzaG91bGQgcmFpc2UgdGhpcyBleGNlcHRpb24gd2hlbiB0aGV5IHJlcXVpcmUKKyAgIGRlcml2ZWQgY2xhc3NlcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kLCBvciB3aGlsZSB0aGUgY2xhc3MgaXMgYmVpbmcKKyAgIGRldmVsb3BlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZWFsIGltcGxlbWVudGF0aW9uIHN0aWxsIG5lZWRzIHRvIGJlIGFkZGVkLgogCisgICAuLiBub3RlOjoKKworICAgICAgSXQgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgYW4gb3BlcmF0ZXIgb3IgbWV0aG9kIGlzIG5vdAorICAgICAgbWVhbnQgdG8gYmUgc3VwcG9ydGVkIGF0IGFsbCAtLSBpbiB0aGF0IGNhc2UgZWl0aGVyIGxlYXZlIHRoZSBvcGVyYXRvciAvCisgICAgICBtZXRob2QgdW5kZWZpbmVkIG9yLCBpZiBhIHN1YmNsYXNzLCBzZXQgaXQgdG8gOmRhdGE6YE5vbmVgLgorCisgICAuLiBub3RlOjoKKworICAgICAgYGBOb3RJbXBsZW1lbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4gIFNlZQorICAgICAgOmRhdGE6YE5vdEltcGxlbWVudGVkYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogLi4gZXhjZXB0aW9uOjogT1NFcnJvcihbYXJnXSkKICAgICAgICAgICAgICAgIE9TRXJyb3IoZXJybm8sIHN0cmVycm9yWywgZmlsZW5hbWVbLCB3aW5lcnJvclssIGZpbGVuYW1lMl1dXSkKQEAgLTQzNiw2ICs0NTcsMTUgQEAKICAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiBvciBmdW5jdGlvbiBpcyBhcHBsaWVkIHRvIGFuIG9iamVjdCBvZiBpbmFwcHJvcHJpYXRlCiAgICB0eXBlLiAgVGhlIGFzc29jaWF0ZWQgdmFsdWUgaXMgYSBzdHJpbmcgZ2l2aW5nIGRldGFpbHMgYWJvdXQgdGhlIHR5cGUgbWlzbWF0Y2guCiAKKyAgIFRoaXMgZXhjZXB0aW9uIG1heSBiZSByYWlzZWQgYnkgdXNlciBjb2RlIHRvIGluZGljYXRlIHRoYXQgYW4gYXR0ZW1wdGVkCisgICBvcGVyYXRpb24gb24gYW4gb2JqZWN0IGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmUuIElmIGFuIG9iamVjdAorICAgaXMgbWVhbnQgdG8gc3VwcG9ydCBhIGdpdmVuIG9wZXJhdGlvbiBidXQgaGFzIG5vdCB5ZXQgcHJvdmlkZWQgYW4KKyAgIGltcGxlbWVudGF0aW9uLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyB0aGUgcHJvcGVyIGV4Y2VwdGlvbiB0byByYWlzZS4KKworICAgUGFzc2luZyBhcmd1bWVudHMgb2YgdGhlIHdyb25nIHR5cGUgKGUuZy4gcGFzc2luZyBhIDpjbGFzczpgbGlzdGAgd2hlbiBhbgorICAgOmNsYXNzOmBpbnRgIGlzIGV4cGVjdGVkKSBzaG91bGQgcmVzdWx0IGluIGEgOmV4YzpgVHlwZUVycm9yYCwgYnV0IHBhc3NpbmcKKyAgIGFyZ3VtZW50cyB3aXRoIHRoZSB3cm9uZyB2YWx1ZSAoZS5nLiBhIG51bWJlciBvdXRzaWRlIGV4cGVjdGVkIGJvdW5kYXJpZXMpCisgICBzaG91bGQgcmVzdWx0IGluIGEgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IFVuYm91bmRMb2NhbEVycm9yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QgYi9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CmluZGV4IGRlZWRlYTEuLmQwYzRjZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdApAQCAtNzAsNiArNzAsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9yIHRvIHRoaXMgZnVuY3Rpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPbiBXaW5kb3dzLCBhIGhhbmRsZXIgZm9yIFdpbmRvd3MgZXhjZXB0aW9uIGlzIGFsc28gaW5zdGFsbGVkLgorCiAuLiBmdW5jdGlvbjo6IGRpc2FibGUoKQogCiAgICBEaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiB1bmluc3RhbGwgdGhlIHNpZ25hbCBoYW5kbGVycyBpbnN0YWxsZWQgYnkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QgYi9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CmluZGV4IGFhNGM1MjkuLjU4ODFmZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdApAQCAtNzIsOSArNzIsOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIENhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KLQorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIuCiAKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHVzZSB0aGUgZ2xvYmFsIHN0YXRlIGNyZWF0ZWQgYnkgOmZ1bmM6YGZpbGVpbnB1dC5pbnB1dGA7CiBpZiB0aGVyZSBpcyBubyBhY3RpdmUgc3RhdGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgpAQCAtMTY3LDggKzE2Niw4IEBACiAgICAuLiBkZXByZWNhdGVkOjogMy40CiAgICAgICBUaGUgYGAnclUnYGAgYW5kIGBgJ1UnYGAgbW9kZXMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjIKLSAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyIGlzIG5vIGxvbmdlciB1c2VkLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIuCiAKIAogKipPcHRpb25hbCBpbi1wbGFjZSBmaWx0ZXJpbmc6KiogaWYgdGhlIGtleXdvcmQgYXJndW1lbnQgYGBpbnBsYWNlPVRydWVgYCBpcwpAQCAtMTk1LDEwICsxOTQsMTQgQEAKICAgIFVzYWdlIGV4YW1wbGU6ICBgYGZpID0gZmlsZWlucHV0LkZpbGVJbnB1dChvcGVuaG9vaz1maWxlaW5wdXQuaG9va19jb21wcmVzc2VkKWBgCiAKIAotLi4gZnVuY3Rpb246OiBob29rX2VuY29kZWQoZW5jb2RpbmcpCisuLiBmdW5jdGlvbjo6IGhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPU5vbmUpCiAKICAgIFJldHVybnMgYSBob29rIHdoaWNoIG9wZW5zIGVhY2ggZmlsZSB3aXRoIDpmdW5jOmBvcGVuYCwgdXNpbmcgdGhlIGdpdmVuCi0gICAqZW5jb2RpbmcqIHRvIHJlYWQgdGhlIGZpbGUuCisgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB0byByZWFkIHRoZSBmaWxlLgogCiAgICBVc2FnZSBleGFtcGxlOiBgYGZpID0KLSAgIGZpbGVpbnB1dC5GaWxlSW5wdXQob3Blbmhvb2s9ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgiaXNvLTg4NTktMSIpKWBgCisgICBmaWxlaW5wdXQuRmlsZUlucHV0KG9wZW5ob29rPWZpbGVpbnB1dC5ob29rX2VuY29kZWQoInV0Zi04IiwKKyAgICJzdXJyb2dhdGVlc2NhcGUiKSlgYAorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsICplcnJvcnMqIHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CmluZGV4IDFlMzVmMzcuLmI4YzFkY2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnRwbGliLnJzdApAQCAtOTcsNiArOTcsMTMgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKICAgIEhlcmUncyBhIHNhbXBsZSBzZXNzaW9uIHVzaW5nIHRoZSA6Y2xhc3M6YEZUUF9UTFNgIGNsYXNzOjoKIAogICAgICAgPj4+IGZ0cHMgPSBGVFBfVExTKCdmdHAucHVyZWZ0cGQub3JnJykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CmluZGV4IDVhZjlmZTQuLmM0ZmNkOTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdApAQCAtMjcxLDYgKzI3MSw5IEBACiAKICAgIFRoZSBjb21wbGV4IHR5cGUgaXMgZGVzY3JpYmVkIGluIDpyZWY6YHR5cGVzbnVtZXJpY2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBHcm91cGluZyBkaWdpdHMgd2l0aCB1bmRlcnNjb3JlcyBhcyBpbiBjb2RlIGxpdGVyYWxzIGlzIGFsbG93ZWQuCisKIAogLi4gZnVuY3Rpb246OiBkZWxhdHRyKG9iamVjdCwgbmFtZSkKIApAQCAtNTMxLDExICs1MzQsMTQgQEAKIAogICAgVGhlIGZsb2F0IHR5cGUgaXMgZGVzY3JpYmVkIGluIDpyZWY6YHR5cGVzbnVtZXJpY2AuCiAKLSAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogX19mb3JtYXRfXwotICAgICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdCgpIChidWlsdC1pbiBmdW5jdGlvbikKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBHcm91cGluZyBkaWdpdHMgd2l0aCB1bmRlcnNjb3JlcyBhcyBpbiBjb2RlIGxpdGVyYWxzIGlzIGFsbG93ZWQuCiAKIAorLi4gaW5kZXg6OgorICAgc2luZ2xlOiBfX2Zvcm1hdF9fCisgICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0KCkgKGJ1aWx0LWluIGZ1bmN0aW9uKQorCiAuLiBmdW5jdGlvbjo6IGZvcm1hdCh2YWx1ZVssIGZvcm1hdF9zcGVjXSkKIAogICAgQ29udmVydCBhICp2YWx1ZSogdG8gYSAiZm9ybWF0dGVkIiByZXByZXNlbnRhdGlvbiwgYXMgY29udHJvbGxlZCBieQpAQCAtNzAyLDYgKzcwOCwxMCBAQAogICAgICAgOm1ldGg6YGJhc2UuX19pbnRfXyA8b2JqZWN0Ll9faW50X18+YCBpbnN0ZWFkIG9mIDptZXRoOmBiYXNlLl9faW5kZXhfXwogICAgICAgPG9iamVjdC5fX2luZGV4X18+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEdyb3VwaW5nIGRpZ2l0cyB3aXRoIHVuZGVyc2NvcmVzIGFzIGluIGNvZGUgbGl0ZXJhbHMgaXMgYWxsb3dlZC4KKworCiAuLiBmdW5jdGlvbjo6IGlzaW5zdGFuY2Uob2JqZWN0LCBjbGFzc2luZm8pCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSAqb2JqZWN0KiBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgKmNsYXNzaW5mbyoKQEAgLTg3OCwxMSArODg4LDExIEBACiAgICBPcGVuICpmaWxlKiBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyA6dGVybTpgZmlsZSBvYmplY3RgLiAgSWYgdGhlIGZpbGUKICAgIGNhbm5vdCBiZSBvcGVuZWQsIGFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAotICAgKmZpbGUqIGlzIGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3QgZ2l2aW5nIHRoZSBwYXRobmFtZSAoYWJzb2x1dGUgb3IKLSAgIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0byBiZSBvcGVuZWQgb3IKLSAgIGFuIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlIHdyYXBwZWQuICAoSWYgYSBmaWxlIGRlc2NyaXB0b3IKLSAgIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGUgcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcwotICAgKmNsb3NlZmQqIGlzIHNldCB0byBgYEZhbHNlYGAuKQorICAgKmZpbGUqIGlzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGdpdmluZyB0aGUgcGF0aG5hbWUgKGFic29sdXRlIG9yCisgICByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkIG9yIGFuCisgICBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZSB3cmFwcGVkLiAgKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzCisgICBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlIHJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MgKmNsb3NlZmQqCisgICBpcyBzZXQgdG8gYGBGYWxzZWBgLikKIAogICAgKm1vZGUqIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZSBpcwogICAgb3BlbmVkLiAgSXQgZGVmYXVsdHMgdG8gYGAncidgYCB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQgbW9kZS4KQEAgLTEwNTUsMjcgKzEwNjUsMzggQEAKICAgICh3aGVyZSA6ZnVuYzpgb3BlbmAgaXMgZGVjbGFyZWQpLCA6bW9kOmBvc2AsIDptb2Q6YG9zLnBhdGhgLCA6bW9kOmB0ZW1wZmlsZWAsCiAgICBhbmQgOm1vZDpgc2h1dGlsYC4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgotICAgICAgVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQuCi0gICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgotICAgICAgOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIHRoZSBmaWxlIG9wZW5lZCBpbiBleGNsdXNpdmUKLSAgICAgIGNyZWF0aW9uIG1vZGUgKGBgJ3gnYGApIGFscmVhZHkgZXhpc3RzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy4zCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40Ci0gICAgICBUaGUgZmlsZSBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgorICAgICAgICAgKiBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKyAgICAgICAgICogVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQuCisgICAgICAgICAqIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisgICAgICAgICAqIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiB0aGUgZmlsZSBvcGVuZWQgaW4gZXhjbHVzaXZlCisgICAgICAgICAqIGNyZWF0aW9uIG1vZGUgKGBgJ3gnYGApIGFscmVhZHkgZXhpc3RzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAgICAzLjQKKworICAgICAgICAgKiBUaGUgZmlsZSBpcyBub3cgbm9uLWluaGVyaXRhYmxlLgogCiAgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjQgNC4wCiAKICAgICAgIFRoZSBgYCdVJ2BgIG1vZGUuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41Ci0gICAgICBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgotICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgotICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAgICAzLjUKIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIFRoZSBgYCduYW1lcmVwbGFjZSdgYCBlcnJvciBoYW5kbGVyIHdhcyBhZGRlZC4KKyAgICAgICAgICogSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KKyAgICAgICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgorICAgICAgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKyAgICAgICAgICogVGhlIGBgJ25hbWVyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXIgd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAgICAzLjYKKworICAgICAgICAgKiBTdXBwb3J0IGFkZGVkIHRvIGFjY2VwdCBvYmplY3RzIGltcGxlbWVudGluZyA6Y2xhc3M6YG9zLlBhdGhMaWtlYC4KKyAgICAgICAgICogT24gV2luZG93cywgb3BlbmluZyBhIGNvbnNvbGUgYnVmZmVyIG1heSByZXR1cm4gYSBzdWJjbGFzcyBvZgorICAgICAgICAgICA6Y2xhc3M6YGlvLlJhd0lPQmFzZWAgb3RoZXIgdGhhbiA6Y2xhc3M6YGlvLkZpbGVJT2AuCiAKIC4uIGZ1bmN0aW9uOjogb3JkKGMpCiAKQEAgLTE0NjAsNiArMTQ4MSw5IEBACiAKICAgIFNlZSBhbHNvIDpyZWY6YGJsdGluLXR5cGUtb2JqZWN0c2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdWJjbGFzc2VzIG9mIDpjbGFzczpgdHlwZWAgd2hpY2ggZG9uJ3Qgb3ZlcnJpZGUgYGB0eXBlLl9fbmV3X19gYCBtYXkgbm8KKyAgICAgIGxvbmdlciB1c2UgdGhlIG9uZS1hcmd1bWVudCBmb3JtIHRvIGdldCB0aGUgdHlwZSBvZiBhbiBvYmplY3QuCiAKIC4uIGZ1bmN0aW9uOjogdmFycyhbb2JqZWN0XSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ2xvYi5yc3QgYi9Eb2MvbGlicmFyeS9nbG9iLnJzdAppbmRleCAzMjhlZWYzLi5hOGE1YTUwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nbG9iLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nbG9iLnJzdApAQCAtMTQsNyArMTQsNyBAQAogYWNjb3JkaW5nIHRvIHRoZSBydWxlcyB1c2VkIGJ5IHRoZSBVbml4IHNoZWxsLCBhbHRob3VnaCByZXN1bHRzIGFyZSByZXR1cm5lZCBpbgogYXJiaXRyYXJ5IG9yZGVyLiAgTm8gdGlsZGUgZXhwYW5zaW9uIGlzIGRvbmUsIGJ1dCBgYCpgYCwgYGA/YGAsIGFuZCBjaGFyYWN0ZXIKIHJhbmdlcyBleHByZXNzZWQgd2l0aCBgYFtdYGAgd2lsbCBiZSBjb3JyZWN0bHkgbWF0Y2hlZC4gIFRoaXMgaXMgZG9uZSBieSB1c2luZwotdGhlIDpmdW5jOmBvcy5saXN0ZGlyYCBhbmQgOmZ1bmM6YGZubWF0Y2guZm5tYXRjaGAgZnVuY3Rpb25zIGluIGNvbmNlcnQsIGFuZAordGhlIDpmdW5jOmBvcy5zY2FuZGlyYCBhbmQgOmZ1bmM6YGZubWF0Y2guZm5tYXRjaGAgZnVuY3Rpb25zIGluIGNvbmNlcnQsIGFuZAogbm90IGJ5IGFjdHVhbGx5IGludm9raW5nIGEgc3Vic2hlbGwuICBOb3RlIHRoYXQgdW5saWtlIDpmdW5jOmBmbm1hdGNoLmZubWF0Y2hgLAogOm1vZDpgZ2xvYmAgdHJlYXRzIGZpbGVuYW1lcyBiZWdpbm5pbmcgd2l0aCBhIGRvdCAoYGAuYGApIGFzIHNwZWNpYWwgY2FzZXMuCiAoRm9yIHRpbGRlIGFuZCBzaGVsbCB2YXJpYWJsZSBleHBhbnNpb24sIHVzZSA6ZnVuYzpgb3MucGF0aC5leHBhbmR1c2VyYCBhbmQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dycC5yc3QgYi9Eb2MvbGlicmFyeS9ncnAucnN0CmluZGV4IGEzMGU2MjIuLjc0ZGUzZjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dycC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ3JwLnJzdApAQCAtNDMsNiArNDMsOSBAQAogICAgUmV0dXJuIHRoZSBncm91cCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIG51bWVyaWMgZ3JvdXAgSUQuIDpleGM6YEtleUVycm9yYAogICAgaXMgcmFpc2VkIGlmIHRoZSBlbnRyeSBhc2tlZCBmb3IgY2Fubm90IGJlIGZvdW5kLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisgICAgICBTaW5jZSBQeXRob24gMy42IHRoZSBzdXBwb3J0IG9mIG5vbi1pbnRlZ2VyIGFyZ3VtZW50cyBsaWtlIGZsb2F0cyBvcgorICAgICAgc3RyaW5ncyBpbiA6ZnVuYzpgZ2V0Z3JnaWRgIGlzIGRlcHJlY2F0ZWQuCiAKIC4uIGZ1bmN0aW9uOjogZ2V0Z3JuYW0obmFtZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QgYi9Eb2MvbGlicmFyeS9nemlwLnJzdAppbmRleCA3OTJkNTdhLi45YzZiNzIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nemlwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nemlwLnJzdApAQCAtNTYsNiArNTYsOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCd4J2BgLCBgYCd4YidgYCBhbmQgYGAneHQnYGAgbW9kZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCiAuLiBjbGFzczo6IEd6aXBGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9Tm9uZSwgY29tcHJlc3NsZXZlbD05LCBmaWxlb2JqPU5vbmUsIG10aW1lPU5vbmUpCiAKQEAgLTE1MSw2ICsxNTMsOSBAQAogICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCiAgICAgICBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBjb21wcmVzc2xldmVsPTkpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLXRyZWUucG5nIGIvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTItdHJlZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEwZGNiYQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLXRyZWUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLnJzdCBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjVlNDQxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIucnN0CkBAIC0wLDAgKzEsNDQ0IEBACisuLiBfaGFzaGxpYi1ibGFrZTI6CisKKzptb2Q6YGhhc2hsaWJgIC0tLSBCTEFLRTIgaGFzaCBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogaGFzaGxpYgorICAgOnN5bm9wc2lzOiBCTEFLRTIgaGFzaCBmdW5jdGlvbiBmb3IgUHl0aG9uCisuLiBzZWN0aW9uYXV0aG9yOjogRG1pdHJ5IENoZXN0bnlraAorCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGJsYWtlMmIsIGJsYWtlMnMKKworQkxBS0UyXyBpcyBhIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbiBkZWZpbmVkIGluIFJGQy03NjkzXyB0aGF0IGNvbWVzIGluIHR3bworZmxhdm9yczoKKworKiAqKkJMQUtFMmIqKiwgb3B0aW1pemVkIGZvciA2NC1iaXQgcGxhdGZvcm1zIGFuZCBwcm9kdWNlcyBkaWdlc3RzIG9mIGFueSBzaXplCisgIGJldHdlZW4gMSBhbmQgNjQgYnl0ZXMsCisKKyogKipCTEFLRTJzKiosIG9wdGltaXplZCBmb3IgOC0gdG8gMzItYml0IHBsYXRmb3JtcyBhbmQgcHJvZHVjZXMgZGlnZXN0cyBvZiBhbnkKKyAgc2l6ZSBiZXR3ZWVuIDEgYW5kIDMyIGJ5dGVzLgorCitCTEFLRTIgc3VwcG9ydHMgKiprZXllZCBtb2RlKiogKGEgZmFzdGVyIGFuZCBzaW1wbGVyIHJlcGxhY2VtZW50IGZvciBITUFDXyksCisqKnNhbHRlZCBoYXNoaW5nKiosICoqcGVyc29uYWxpemF0aW9uKiosIGFuZCAqKnRyZWUgaGFzaGluZyoqLgorCitIYXNoIG9iamVjdHMgZnJvbSB0aGlzIG1vZHVsZSBmb2xsb3cgdGhlIEFQSSBvZiBzdGFuZGFyZCBsaWJyYXJ5J3MKKzptb2Q6YGhhc2hsaWJgIG9iamVjdHMuCisKKworTW9kdWxlCis9PT09PT0KKworQ3JlYXRpbmcgaGFzaCBvYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmV3IGhhc2ggb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBjYWxsaW5nIGNvbnN0cnVjdG9yIGZ1bmN0aW9uczoKKworCisuLiBmdW5jdGlvbjo6IGJsYWtlMmIoZGF0YT1iJycsIGRpZ2VzdF9zaXplPTY0LCBrZXk9YicnLCBzYWx0PWInJywgXAorICAgICAgICAgICAgICAgIHBlcnNvbj1iJycsIGZhbm91dD0xLCBkZXB0aD0xLCBsZWFmX3NpemU9MCwgbm9kZV9vZmZzZXQ9MCwgIFwKKyAgICAgICAgICAgICAgICBub2RlX2RlcHRoPTAsIGlubmVyX3NpemU9MCwgbGFzdF9ub2RlPUZhbHNlKQorCisuLiBmdW5jdGlvbjo6IGJsYWtlMnMoZGF0YT1iJycsIGRpZ2VzdF9zaXplPTMyLCBrZXk9YicnLCBzYWx0PWInJywgXAorICAgICAgICAgICAgICAgIHBlcnNvbj1iJycsIGZhbm91dD0xLCBkZXB0aD0xLCBsZWFmX3NpemU9MCwgbm9kZV9vZmZzZXQ9MCwgIFwKKyAgICAgICAgICAgICAgICBub2RlX2RlcHRoPTAsIGlubmVyX3NpemU9MCwgbGFzdF9ub2RlPUZhbHNlKQorCisKK1RoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgaGFzaCBvYmplY3RzIGZvciBjYWxjdWxhdGluZworQkxBS0UyYiBvciBCTEFLRTJzLiBUaGV5IG9wdGlvbmFsbHkgdGFrZSB0aGVzZSBnZW5lcmFsIHBhcmFtZXRlcnM6CisKKyogKmRhdGEqOiBpbml0aWFsIGNodW5rIG9mIGRhdGEgdG8gaGFzaCwgd2hpY2ggbXVzdCBiZSBpbnRlcnByZXRhYmxlIGFzIGJ1ZmZlcgorICBvZiBieXRlcy4KKworKiAqZGlnZXN0X3NpemUqOiBzaXplIG9mIG91dHB1dCBkaWdlc3QgaW4gYnl0ZXMuCisKKyogKmtleSo6IGtleSBmb3Iga2V5ZWQgaGFzaGluZyAodXAgdG8gNjQgYnl0ZXMgZm9yIEJMQUtFMmIsIHVwIHRvIDMyIGJ5dGVzIGZvcgorICBCTEFLRTJzKS4KKworKiAqc2FsdCo6IHNhbHQgZm9yIHJhbmRvbWl6ZWQgaGFzaGluZyAodXAgdG8gMTYgYnl0ZXMgZm9yIEJMQUtFMmIsIHVwIHRvIDgKKyAgYnl0ZXMgZm9yIEJMQUtFMnMpLgorCisqICpwZXJzb24qOiBwZXJzb25hbGl6YXRpb24gc3RyaW5nICh1cCB0byAxNiBieXRlcyBmb3IgQkxBS0UyYiwgdXAgdG8gOCBieXRlcworICBmb3IgQkxBS0UycykuCisKK1RoZSBmb2xsb3dpbmcgdGFibGUgc2hvd3MgbGltaXRzIGZvciBnZW5lcmFsIHBhcmFtZXRlcnMgKGluIGJ5dGVzKToKKworPT09PT09PSA9PT09PT09PT09PSA9PT09PT09PSA9PT09PT09PT0gPT09PT09PT09PT0KK0hhc2ggICAgZGlnZXN0X3NpemUgbGVuKGtleSkgbGVuKHNhbHQpIGxlbihwZXJzb24pCis9PT09PT09ID09PT09PT09PT09ID09PT09PT09ID09PT09PT09PSA9PT09PT09PT09PQorQkxBS0UyYiAgICAgNjQgICAgICAgICA2NCAgICAgICAxNiAgICAgICAgMTYKK0JMQUtFMnMgICAgIDMyICAgICAgICAgMzIgICAgICAgOCAgICAgICAgIDgKKz09PT09PT0gPT09PT09PT09PT0gPT09PT09PT0gPT09PT09PT09ID09PT09PT09PT09CisKKy4uIG5vdGU6OgorCisgICAgQkxBS0UyIHNwZWNpZmljYXRpb24gZGVmaW5lcyBjb25zdGFudCBsZW5ndGhzIGZvciBzYWx0IGFuZCBwZXJzb25hbGl6YXRpb24KKyAgICBwYXJhbWV0ZXJzLCBob3dldmVyLCBmb3IgY29udmVuaWVuY2UsIHRoaXMgaW1wbGVtZW50YXRpb24gYWNjZXB0cyBieXRlCisgICAgc3RyaW5ncyBvZiBhbnkgc2l6ZSB1cCB0byB0aGUgc3BlY2lmaWVkIGxlbmd0aC4gSWYgdGhlIGxlbmd0aCBvZiB0aGUKKyAgICBwYXJhbWV0ZXIgaXMgbGVzcyB0aGFuIHNwZWNpZmllZCwgaXQgaXMgcGFkZGVkIHdpdGggemVyb3MsIHRodXMsIGZvcgorICAgIGV4YW1wbGUsIGBgYidzYWx0J2BgIGFuZCBgYGInc2FsdFx4MDAnYGAgaXMgdGhlIHNhbWUgdmFsdWUuIChUaGlzIGlzIG5vdAorICAgIHRoZSBjYXNlIGZvciAqa2V5Ki4pCisKK1RoZXNlIHNpemVzIGFyZSBhdmFpbGFibGUgYXMgbW9kdWxlIGBjb25zdGFudHNgXyBkZXNjcmliZWQgYmVsb3cuCisKK0NvbnN0cnVjdG9yIGZ1bmN0aW9ucyBhbHNvIGFjY2VwdCB0aGUgZm9sbG93aW5nIHRyZWUgaGFzaGluZyBwYXJhbWV0ZXJzOgorCisqICpmYW5vdXQqOiBmYW5vdXQgKDAgdG8gMjU1LCAwIGlmIHVubGltaXRlZCwgMSBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpkZXB0aCo6IG1heGltYWwgZGVwdGggb2YgdHJlZSAoMSB0byAyNTUsIDI1NSBpZiB1bmxpbWl0ZWQsIDEgaW4KKyAgc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbGVhZl9zaXplKjogbWF4aW1hbCBieXRlIGxlbmd0aCBvZiBsZWFmICgwIHRvIDIqKjMyLTEsIDAgaWYgdW5saW1pdGVkIG9yIGluCisgIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKm5vZGVfb2Zmc2V0Kjogbm9kZSBvZmZzZXQgKDAgdG8gMioqNjQtMSBmb3IgQkxBS0UyYiwgMCB0byAyKio0OC0xIGZvcgorICBCTEFLRTJzLCAwIGZvciB0aGUgZmlyc3QsIGxlZnRtb3N0LCBsZWFmLCBvciBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpub2RlX2RlcHRoKjogbm9kZSBkZXB0aCAoMCB0byAyNTUsIDAgZm9yIGxlYXZlcywgb3IgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqaW5uZXJfc2l6ZSo6IGlubmVyIGRpZ2VzdCBzaXplICgwIHRvIDY0IGZvciBCTEFLRTJiLCAwIHRvIDMyIGZvcgorICBCTEFLRTJzLCAwIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmxhc3Rfbm9kZSo6IGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwcm9jZXNzZWQgbm9kZSBpcyB0aGUgbGFzdAorICBvbmUgKGBGYWxzZWAgZm9yIHNlcXVlbnRpYWwgbW9kZSkuCisKKy4uIGZpZ3VyZTo6IGhhc2hsaWItYmxha2UyLXRyZWUucG5nCisgICA6YWx0OiBFeHBsYW5hdGlvbiBvZiB0cmVlIG1vZGUgcGFyYW1ldGVycy4KKworU2VlIHNlY3Rpb24gMi4xMCBpbiBgQkxBS0UyIHNwZWNpZmljYXRpb24KKzxodHRwczovL2JsYWtlMi5uZXQvYmxha2UyXzIwMTMwMTI5LnBkZj5gXyBmb3IgY29tcHJlaGVuc2l2ZSByZXZpZXcgb2YgdHJlZQoraGFzaGluZy4KKworCitDb25zdGFudHMKKy0tLS0tLS0tLQorCisuLiBkYXRhOjogYmxha2UyYi5TQUxUX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLlNBTFRfU0laRQorCitTYWx0IGxlbmd0aCAobWF4aW11bSBsZW5ndGggYWNjZXB0ZWQgYnkgY29uc3RydWN0b3JzKS4KKworCisuLiBkYXRhOjogYmxha2UyYi5QRVJTT05fU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuUEVSU09OX1NJWkUKKworUGVyc29uYWxpemF0aW9uIHN0cmluZyBsZW5ndGggKG1heGltdW0gbGVuZ3RoIGFjY2VwdGVkIGJ5IGNvbnN0cnVjdG9ycykuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuTUFYX0tFWV9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5NQVhfS0VZX1NJWkUKKworTWF4aW11bSBrZXkgc2l6ZS4KKworCisuLiBkYXRhOjogYmxha2UyYi5NQVhfRElHRVNUX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLk1BWF9ESUdFU1RfU0laRQorCitNYXhpbXVtIGRpZ2VzdCBzaXplIHRoYXQgdGhlIGhhc2ggZnVuY3Rpb24gY2FuIG91dHB1dC4KKworCitFeGFtcGxlcworPT09PT09PT0KKworU2ltcGxlIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0tCisKK1RvIGNhbGN1bGF0ZSBoYXNoIG9mIHNvbWUgZGF0YSwgeW91IHNob3VsZCBmaXJzdCBjb25zdHJ1Y3QgYSBoYXNoIG9iamVjdCBieQorY2FsbGluZyB0aGUgYXBwcm9wcmlhdGUgY29uc3RydWN0b3IgZnVuY3Rpb24gKDpmdW5jOmBibGFrZTJiYCBvcgorOmZ1bmM6YGJsYWtlMnNgKSwgdGhlbiB1cGRhdGUgaXQgd2l0aCB0aGUgZGF0YSBieSBjYWxsaW5nIDptZXRoOmB1cGRhdGVgIG9uIHRoZQorb2JqZWN0LCBhbmQsIGZpbmFsbHksIGdldCB0aGUgZGlnZXN0IG91dCBvZiB0aGUgb2JqZWN0IGJ5IGNhbGxpbmcKKzptZXRoOmBkaWdlc3RgIChvciA6bWV0aDpgaGV4ZGlnZXN0YCBmb3IgaGV4LWVuY29kZWQgc3RyaW5nKS4KKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gaCA9IGJsYWtlMmIoKQorICAgID4+PiBoLnVwZGF0ZShiJ0hlbGxvIHdvcmxkJykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICc2ZmY4NDNiYTY4NTg0MmFhODIwMzFkM2Y1M2M0OGI2NjMyNmRmNzYzOWE2M2QxMjg5NzRjNWMxNGYzMWEwZjMzMzQzYThjNjU1NTExMzRlZDFhZTBmMmIwZGQyYmI0OTVkYzgxMDM5ZTNlZWIwYWExYmIwMzg4YmJlYWMyOTE4MycKKworCitBcyBhIHNob3J0Y3V0LCB5b3UgY2FuIHBhc3MgdGhlIGZpcnN0IGNodW5rIG9mIGRhdGEgdG8gdXBkYXRlIGRpcmVjdGx5IHRvIHRoZQorY29uc3RydWN0b3IgYXMgdGhlIGZpcnN0IGFyZ3VtZW50IChvciBhcyAqZGF0YSoga2V5d29yZCBhcmd1bWVudCk6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGJsYWtlMmIoYidIZWxsbyB3b3JsZCcpLmhleGRpZ2VzdCgpCisgICAgJzZmZjg0M2JhNjg1ODQyYWE4MjAzMWQzZjUzYzQ4YjY2MzI2ZGY3NjM5YTYzZDEyODk3NGM1YzE0ZjMxYTBmMzMzNDNhOGM2NTU1MTEzNGVkMWFlMGYyYjBkZDJiYjQ5NWRjODEwMzllM2VlYjBhYTFiYjAzODhiYmVhYzI5MTgzJworCitZb3UgY2FuIGNhbGwgOm1ldGg6YGhhc2gudXBkYXRlYCBhcyBtYW55IHRpbWVzIGFzIHlvdSBuZWVkIHRvIGl0ZXJhdGl2ZWx5Cit1cGRhdGUgdGhlIGhhc2g6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGl0ZW1zID0gW2InSGVsbG8nLCBiJyAnLCBiJ3dvcmxkJ10KKyAgICA+Pj4gaCA9IGJsYWtlMmIoKQorICAgID4+PiBmb3IgaXRlbSBpbiBpdGVtczoKKyAgICAuLi4gICAgIGgudXBkYXRlKGl0ZW0pCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnNmZmODQzYmE2ODU4NDJhYTgyMDMxZDNmNTNjNDhiNjYzMjZkZjc2MzlhNjNkMTI4OTc0YzVjMTRmMzFhMGYzMzM0M2E4YzY1NTUxMTM0ZWQxYWUwZjJiMGRkMmJiNDk1ZGM4MTAzOWUzZWViMGFhMWJiMDM4OGJiZWFjMjkxODMnCisKKworVXNpbmcgZGlmZmVyZW50IGRpZ2VzdCBzaXplcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitCTEFLRTIgaGFzIGNvbmZpZ3VyYWJsZSBzaXplIG9mIGRpZ2VzdHMgdXAgdG8gNjQgYnl0ZXMgZm9yIEJMQUtFMmIgYW5kIHVwIHRvIDMyCitieXRlcyBmb3IgQkxBS0Uycy4gRm9yIGV4YW1wbGUsIHRvIHJlcGxhY2UgU0hBLTEgd2l0aCBCTEFLRTJiIHdpdGhvdXQgY2hhbmdpbmcKK3RoZSBzaXplIG9mIG91dHB1dCwgd2UgY2FuIHRlbGwgQkxBS0UyYiB0byBwcm9kdWNlIDIwLWJ5dGUgZGlnZXN0czoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gaCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MjApCisgICAgPj4+IGgudXBkYXRlKGInUmVwbGFjaW5nIFNIQTEgd2l0aCB0aGUgbW9yZSBzZWN1cmUgZnVuY3Rpb24nKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJ2QyNGYyNmNmOGRlNjY0NzJkNThkNGUxYjE3NzRiNGM5MTU4YjFmNGMnCisgICAgPj4+IGguZGlnZXN0X3NpemUKKyAgICAyMAorICAgID4+PiBsZW4oaC5kaWdlc3QoKSkKKyAgICAyMAorCitIYXNoIG9iamVjdHMgd2l0aCBkaWZmZXJlbnQgZGlnZXN0IHNpemVzIGhhdmUgY29tcGxldGVseSBkaWZmZXJlbnQgb3V0cHV0cworKHNob3J0ZXIgaGFzaGVzIGFyZSAqbm90KiBwcmVmaXhlcyBvZiBsb25nZXIgaGFzaGVzKTsgQkxBS0UyYiBhbmQgQkxBS0UycworcHJvZHVjZSBkaWZmZXJlbnQgb3V0cHV0cyBldmVuIGlmIHRoZSBvdXRwdXQgbGVuZ3RoIGlzIHRoZSBzYW1lOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYiwgYmxha2UycworICAgID4+PiBibGFrZTJiKGRpZ2VzdF9zaXplPTEwKS5oZXhkaWdlc3QoKQorICAgICc2ZmExZDhmY2ZkNzE5MDQ2ZDc2MicKKyAgICA+Pj4gYmxha2UyYihkaWdlc3Rfc2l6ZT0xMSkuaGV4ZGlnZXN0KCkKKyAgICAnZWI2ZWMxNWRhZjk1NDYyNTRmMDgwOScKKyAgICA+Pj4gYmxha2UycyhkaWdlc3Rfc2l6ZT0xMCkuaGV4ZGlnZXN0KCkKKyAgICAnMWJmMjFhOThjNzhhMWMzNzZhZTknCisgICAgPj4+IGJsYWtlMnMoZGlnZXN0X3NpemU9MTEpLmhleGRpZ2VzdCgpCisgICAgJzU2NzAwNGJmOTZlNGEyNTc3M2ViZjQnCisKKworS2V5ZWQgaGFzaGluZworLS0tLS0tLS0tLS0tLQorCitLZXllZCBoYXNoaW5nIGNhbiBiZSB1c2VkIGZvciBhdXRoZW50aWNhdGlvbiBhcyBhIGZhc3RlciBhbmQgc2ltcGxlcgorcmVwbGFjZW1lbnQgZm9yIGBIYXNoLWJhc2VkIG1lc3NhZ2UgYXV0aGVudGljYXRpb24gY29kZQorPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFzaC1iYXNlZF9tZXNzYWdlX2F1dGhlbnRpY2F0aW9uX2NvZGU+YF8gKEhNQUMpLgorQkxBS0UyIGNhbiBiZSBzZWN1cmVseSB1c2VkIGluIHByZWZpeC1NQUMgbW9kZSB0aGFua3MgdG8gdGhlCitpbmRpZmZlcmVudGlhYmlsaXR5IHByb3BlcnR5IGluaGVyaXRlZCBmcm9tIEJMQUtFLgorCitUaGlzIGV4YW1wbGUgc2hvd3MgaG93IHRvIGdldCBhIChoZXgtZW5jb2RlZCkgMTI4LWJpdCBhdXRoZW50aWNhdGlvbiBjb2RlIGZvcgorbWVzc2FnZSBgYGInbWVzc2FnZSBkYXRhJ2BgIHdpdGgga2V5IGBgYidwc2V1ZG9yYW5kb20ga2V5J2BgOjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gaCA9IGJsYWtlMmIoa2V5PWIncHNldWRvcmFuZG9tIGtleScsIGRpZ2VzdF9zaXplPTE2KQorICAgID4+PiBoLnVwZGF0ZShiJ21lc3NhZ2UgZGF0YScpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnM2QzNjNmZjc0MDFlMDIwMjZmNGE0Njg3ZDQ4NjNjZWQnCisKKworQXMgYSBwcmFjdGljYWwgZXhhbXBsZSwgYSB3ZWIgYXBwbGljYXRpb24gY2FuIHN5bW1ldHJpY2FsbHkgc2lnbiBjb29raWVzIHNlbnQKK3RvIHVzZXJzIGFuZCBsYXRlciB2ZXJpZnkgdGhlbSB0byBtYWtlIHN1cmUgdGhleSB3ZXJlbid0IHRhbXBlcmVkIHdpdGg6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0CisgICAgPj4+CisgICAgPj4+IFNFQ1JFVF9LRVkgPSBiJ3BzZXVkb3JhbmRvbWx5IGdlbmVyYXRlZCBzZXJ2ZXIgc2VjcmV0IGtleScKKyAgICA+Pj4gQVVUSF9TSVpFID0gMTYKKyAgICA+Pj4KKyAgICA+Pj4gZGVmIHNpZ24oY29va2llKToKKyAgICAuLi4gICAgIGggPSBibGFrZTJiKGRhdGE9Y29va2llLCBkaWdlc3Rfc2l6ZT1BVVRIX1NJWkUsIGtleT1TRUNSRVRfS0VZKQorICAgIC4uLiAgICAgcmV0dXJuIGguaGV4ZGlnZXN0KCkKKyAgICA+Pj4KKyAgICA+Pj4gY29va2llID0gYid1c2VyOnZhdHJvZ2FzYWMnCisgICAgPj4+IHNpZyA9IHNpZ24oY29va2llKQorICAgID4+PiBwcmludCgiezB9LHsxfSIuZm9ybWF0KGNvb2tpZS5kZWNvZGUoJ3V0Zi04JyksIHNpZykpCisgICAgdXNlcjp2YXRyb2dhc2FjLDM0OWNmOTA0NTMzNzY3ZWQyZDc1NTI3OWE4ZGY4NGQwCisgICAgPj4+IGNvbXBhcmVfZGlnZXN0KGNvb2tpZSwgc2lnKQorICAgIFRydWUKKyAgICA+Pj4gY29tcGFyZV9kaWdlc3QoYid1c2VyOnBvbGljYWphYycsIHNpZykKKyAgICBGYWxzZQorICAgID4+PiBjb21wYXJlX2RpZ2VzdHkoY29va2llLCAnMDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmMDAnKQorICAgIEZhbHNlCisKK0V2ZW4gdGhvdWdoIHRoZXJlJ3MgYSBuYXRpdmUga2V5ZWQgaGFzaGluZyBtb2RlLCBCTEFLRTIgY2FuLCBvZiBjb3Vyc2UsIGJlIHVzZWQKK2luIEhNQUMgY29uc3RydWN0aW9uIHdpdGggOm1vZDpgaG1hY2AgbW9kdWxlOjoKKworICAgID4+PiBpbXBvcnQgaG1hYywgaGFzaGxpYgorICAgID4+PiBtID0gaG1hYy5uZXcoYidzZWNyZXQga2V5JywgZGlnZXN0bW9kPWhhc2hsaWIuYmxha2UycykKKyAgICA+Pj4gbS51cGRhdGUoYidtZXNzYWdlJykKKyAgICA+Pj4gbS5oZXhkaWdlc3QoKQorICAgICdlM2M4MTAyODY4ZDI4YjVmZjg1ZmMzNWRkYTA3MzI5OTcwZDFhMDFlMjczYzM3NDgxMzI2ZmUwYzg2MWM4MTQyJworCisKK1JhbmRvbWl6ZWQgaGFzaGluZworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0J5IHNldHRpbmcgKnNhbHQqIHBhcmFtZXRlciB1c2VycyBjYW4gaW50cm9kdWNlIHJhbmRvbWl6YXRpb24gdG8gdGhlIGhhc2gKK2Z1bmN0aW9uLiBSYW5kb21pemVkIGhhc2hpbmcgaXMgdXNlZnVsIGZvciBwcm90ZWN0aW5nIGFnYWluc3QgY29sbGlzaW9uIGF0dGFja3MKK29uIHRoZSBoYXNoIGZ1bmN0aW9uIHVzZWQgaW4gZGlnaXRhbCBzaWduYXR1cmVzLgorCisgICAgUmFuZG9taXplZCBoYXNoaW5nIGlzIGRlc2lnbmVkIGZvciBzaXR1YXRpb25zIHdoZXJlIG9uZSBwYXJ0eSwgdGhlIG1lc3NhZ2UKKyAgICBwcmVwYXJlciwgZ2VuZXJhdGVzIGFsbCBvciBwYXJ0IG9mIGEgbWVzc2FnZSB0byBiZSBzaWduZWQgYnkgYSBzZWNvbmQKKyAgICBwYXJ0eSwgdGhlIG1lc3NhZ2Ugc2lnbmVyLiBJZiB0aGUgbWVzc2FnZSBwcmVwYXJlciBpcyBhYmxlIHRvIGZpbmQKKyAgICBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24gY29sbGlzaW9ucyAoaS5lLiwgdHdvIG1lc3NhZ2VzIHByb2R1Y2luZyB0aGUKKyAgICBzYW1lIGhhc2ggdmFsdWUpLCB0aGVuIHNoZSBtaWdodCBwcmVwYXJlIG1lYW5pbmdmdWwgdmVyc2lvbnMgb2YgdGhlIG1lc3NhZ2UKKyAgICB0aGF0IHdvdWxkIHByb2R1Y2UgdGhlIHNhbWUgaGFzaCB2YWx1ZSBhbmQgZGlnaXRhbCBzaWduYXR1cmUsIGJ1dCB3aXRoCisgICAgZGlmZmVyZW50IHJlc3VsdHMgKGUuZy4sIHRyYW5zZmVycmluZyAkMSwwMDAsMDAwIHRvIGFuIGFjY291bnQsIHJhdGhlciB0aGFuCisgICAgJDEwKS4gQ3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9ucyBoYXZlIGJlZW4gZGVzaWduZWQgd2l0aCBjb2xsaXNpb24KKyAgICByZXNpc3RhbmNlIGFzIGEgbWFqb3IgZ29hbCwgYnV0IHRoZSBjdXJyZW50IGNvbmNlbnRyYXRpb24gb24gYXR0YWNraW5nCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9ucyBtYXkgcmVzdWx0IGluIGEgZ2l2ZW4gY3J5cHRvZ3JhcGhpYyBoYXNoCisgICAgZnVuY3Rpb24gcHJvdmlkaW5nIGxlc3MgY29sbGlzaW9uIHJlc2lzdGFuY2UgdGhhbiBleHBlY3RlZC4gUmFuZG9taXplZAorICAgIGhhc2hpbmcgb2ZmZXJzIHRoZSBzaWduZXIgYWRkaXRpb25hbCBwcm90ZWN0aW9uIGJ5IHJlZHVjaW5nIHRoZSBsaWtlbGlob29kCisgICAgdGhhdCBhIHByZXBhcmVyIGNhbiBnZW5lcmF0ZSB0d28gb3IgbW9yZSBtZXNzYWdlcyB0aGF0IHVsdGltYXRlbHkgeWllbGQgdGhlCisgICAgc2FtZSBoYXNoIHZhbHVlIGR1cmluZyB0aGUgZGlnaXRhbCBzaWduYXR1cmUgZ2VuZXJhdGlvbiBwcm9jZXNzIOKAkyBldmVuIGlmCisgICAgaXQgaXMgcHJhY3RpY2FsIHRvIGZpbmQgY29sbGlzaW9ucyBmb3IgdGhlIGhhc2ggZnVuY3Rpb24uIEhvd2V2ZXIsIHRoZSB1c2UKKyAgICBvZiByYW5kb21pemVkIGhhc2hpbmcgbWF5IHJlZHVjZSB0aGUgYW1vdW50IG9mIHNlY3VyaXR5IHByb3ZpZGVkIGJ5IGEKKyAgICBkaWdpdGFsIHNpZ25hdHVyZSB3aGVuIGFsbCBwb3J0aW9ucyBvZiB0aGUgbWVzc2FnZSBhcmUgcHJlcGFyZWQKKyAgICBieSB0aGUgc2lnbmVyLgorCisgICAgKGBOSVNUIFNQLTgwMC0xMDYgIlJhbmRvbWl6ZWQgSGFzaGluZyBmb3IgRGlnaXRhbCBTaWduYXR1cmVzIgorICAgIDxodHRwOi8vY3NyYy5uaXN0Lmdvdi9wdWJsaWNhdGlvbnMvbmlzdHB1YnMvODAwLTEwNi9OSVNULVNQLTgwMC0xMDYucGRmPmBfKQorCitJbiBCTEFLRTIgdGhlIHNhbHQgaXMgcHJvY2Vzc2VkIGFzIGEgb25lLXRpbWUgaW5wdXQgdG8gdGhlIGhhc2ggZnVuY3Rpb24gZHVyaW5nCitpbml0aWFsaXphdGlvbiwgcmF0aGVyIHRoYW4gYXMgYW4gaW5wdXQgdG8gZWFjaCBjb21wcmVzc2lvbiBmdW5jdGlvbi4KKworLi4gd2FybmluZzo6CisKKyAgICAqU2FsdGVkIGhhc2hpbmcqIChvciBqdXN0IGhhc2hpbmcpIHdpdGggQkxBS0UyIG9yIGFueSBvdGhlciBnZW5lcmFsLXB1cnBvc2UKKyAgICBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24sIHN1Y2ggYXMgU0hBLTI1NiwgaXMgbm90IHN1aXRhYmxlIGZvciBoYXNoaW5nCisgICAgcGFzc3dvcmRzLiAgU2VlIGBCTEFLRTIgRkFRIDxodHRwczovL2JsYWtlMi5uZXQvI3FhPmBfIGZvciBtb3JlCisgICAgaW5mb3JtYXRpb24uCisuLgorCisgICAgPj4+IGltcG9ydCBvcworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gbXNnID0gYidzb21lIG1lc3NhZ2UnCisgICAgPj4+ICMgQ2FsY3VsYXRlIHRoZSBmaXJzdCBoYXNoIHdpdGggYSByYW5kb20gc2FsdC4KKyAgICA+Pj4gc2FsdDEgPSBvcy51cmFuZG9tKGJsYWtlMmIuU0FMVF9TSVpFKQorICAgID4+PiBoMSA9IGJsYWtlMmIoc2FsdD1zYWx0MSkKKyAgICA+Pj4gaDEudXBkYXRlKG1zZykKKyAgICA+Pj4gIyBDYWxjdWxhdGUgdGhlIHNlY29uZCBoYXNoIHdpdGggYSBkaWZmZXJlbnQgcmFuZG9tIHNhbHQuCisgICAgPj4+IHNhbHQyID0gb3MudXJhbmRvbShibGFrZTJiLlNBTFRfU0laRSkKKyAgICA+Pj4gaDIgPSBibGFrZTJiKHNhbHQ9c2FsdDIpCisgICAgPj4+IGgyLnVwZGF0ZShtc2cpCisgICAgPj4+ICMgVGhlIGRpZ2VzdHMgYXJlIGRpZmZlcmVudC4KKyAgICA+Pj4gaDEuZGlnZXN0KCkgIT0gaDIuZGlnZXN0KCkKKyAgICBUcnVlCisKKworUGVyc29uYWxpemF0aW9uCistLS0tLS0tLS0tLS0tLS0KKworU29tZXRpbWVzIGl0IGlzIHVzZWZ1bCB0byBmb3JjZSBoYXNoIGZ1bmN0aW9uIHRvIHByb2R1Y2UgZGlmZmVyZW50IGRpZ2VzdHMgZm9yCit0aGUgc2FtZSBpbnB1dCBmb3IgZGlmZmVyZW50IHB1cnBvc2VzLiBRdW90aW5nIHRoZSBhdXRob3JzIG9mIHRoZSBTa2VpbiBoYXNoCitmdW5jdGlvbjoKKworICAgIFdlIHJlY29tbWVuZCB0aGF0IGFsbCBhcHBsaWNhdGlvbiBkZXNpZ25lcnMgc2VyaW91c2x5IGNvbnNpZGVyIGRvaW5nIHRoaXM7CisgICAgd2UgaGF2ZSBzZWVuIG1hbnkgcHJvdG9jb2xzIHdoZXJlIGEgaGFzaCB0aGF0IGlzIGNvbXB1dGVkIGluIG9uZSBwYXJ0IG9mCisgICAgdGhlIHByb3RvY29sIGNhbiBiZSB1c2VkIGluIGFuIGVudGlyZWx5IGRpZmZlcmVudCBwYXJ0IGJlY2F1c2UgdHdvIGhhc2gKKyAgICBjb21wdXRhdGlvbnMgd2VyZSBkb25lIG9uIHNpbWlsYXIgb3IgcmVsYXRlZCBkYXRhLCBhbmQgdGhlIGF0dGFja2VyIGNhbgorICAgIGZvcmNlIHRoZSBhcHBsaWNhdGlvbiB0byBtYWtlIHRoZSBoYXNoIGlucHV0cyB0aGUgc2FtZS4gUGVyc29uYWxpemluZyBlYWNoCisgICAgaGFzaCBmdW5jdGlvbiB1c2VkIGluIHRoZSBwcm90b2NvbCBzdW1tYXJpbHkgc3RvcHMgdGhpcyB0eXBlIG9mIGF0dGFjay4KKworICAgIChgVGhlIFNrZWluIEhhc2ggRnVuY3Rpb24gRmFtaWx5CisgICAgPGh0dHA6Ly93d3cuc2tlaW4taGFzaC5pbmZvL3NpdGVzL2RlZmF1bHQvZmlsZXMvc2tlaW4xLjMucGRmPmBfLAorICAgIHAuIDIxKQorCitCTEFLRTIgY2FuIGJlIHBlcnNvbmFsaXplZCBieSBwYXNzaW5nIGJ5dGVzIHRvIHRoZSAqcGVyc29uKiBhcmd1bWVudDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IEZJTEVTX0hBU0hfUEVSU09OID0gYidNeUFwcCBGaWxlcyBIYXNoJworICAgID4+PiBCTE9DS19IQVNIX1BFUlNPTiA9IGInTXlBcHAgQmxvY2sgSGFzaCcKKyAgICA+Pj4gaCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MzIsIHBlcnNvbj1GSUxFU19IQVNIX1BFUlNPTikKKyAgICA+Pj4gaC51cGRhdGUoYid0aGUgc2FtZSBjb250ZW50JykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICcyMGQ5Y2QwMjRkNGZiMDg2YWFlODE5YTE0MzJkZDI0NjZkZTEyOTQ3ODMxYjc1YzVhMzBjZjI2NzYwOTVkM2I0JworICAgID4+PiBoID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0zMiwgcGVyc29uPUJMT0NLX0hBU0hfUEVSU09OKQorICAgID4+PiBoLnVwZGF0ZShiJ3RoZSBzYW1lIGNvbnRlbnQnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJ2NmNjhmYjU3NjFiOWM0NGU3ODc4YmZiMmM0YzlhZWE1MjI2NGE4MGI3NTAwNWU2NTYxOTc3OGRlNTlmMzgzYTMnCisKK1BlcnNvbmFsaXphdGlvbiB0b2dldGhlciB3aXRoIHRoZSBrZXllZCBtb2RlIGNhbiBhbHNvIGJlIHVzZWQgdG8gZGVyaXZlIGRpZmZlcmVudAora2V5cyBmcm9tIGEgc2luZ2xlIG9uZS4KKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMnMKKyAgICA+Pj4gZnJvbSBiYXNlNjQgaW1wb3J0IGI2NGRlY29kZSwgYjY0ZW5jb2RlCisgICAgPj4+IG9yaWdfa2V5ID0gYjY0ZGVjb2RlKGInUm01RVBKYWk3MnFjSzNSR0JwVzN2UE5mWnk1T1pvdGhZK2tIWTZoMjFLTT0nKQorICAgID4+PiBlbmNfa2V5ID0gYmxha2UycyhrZXk9b3JpZ19rZXksIHBlcnNvbj1iJ2tFbmNyeXB0JykuZGlnZXN0KCkKKyAgICA+Pj4gbWFjX2tleSA9IGJsYWtlMnMoa2V5PW9yaWdfa2V5LCBwZXJzb249YidrTUFDJykuZGlnZXN0KCkKKyAgICA+Pj4gcHJpbnQoYjY0ZW5jb2RlKGVuY19rZXkpLmRlY29kZSgndXRmLTgnKSkKKyAgICByYlBiMTVTL1o5dCthZ2Zmbm81d3VoQjc3VmJSaTZGOUl2MnFJeFU3V0h3PQorICAgID4+PiBwcmludChiNjRlbmNvZGUobWFjX2tleSkuZGVjb2RlKCd1dGYtOCcpKQorICAgIEc5R3RIRkUxWWx1WFkxeldQbFlrMWUvbldmdTBXU0ViMEtSY2poRGVQL289CisKK1RyZWUgbW9kZQorLS0tLS0tLS0tCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhhc2hpbmcgYSBtaW5pbWFsIHRyZWUgd2l0aCB0d28gbGVhZiBub2Rlczo6CisKKyAgICAgICAxMAorICAgICAgLyAgXAorICAgICAwMCAgMDEKKworVGhpcyBleGFtcGxlIHVzZXMgNjQtYnl0ZSBpbnRlcm5hbCBkaWdlc3RzLCBhbmQgcmV0dXJucyB0aGUgMzItYnl0ZSBmaW5hbAorZGlnZXN0OjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4KKyAgICA+Pj4gRkFOT1VUID0gMgorICAgID4+PiBERVBUSCA9IDIKKyAgICA+Pj4gTEVBRl9TSVpFID0gNDA5NgorICAgID4+PiBJTk5FUl9TSVpFID0gNjQKKyAgICA+Pj4KKyAgICA+Pj4gYnVmID0gYnl0ZWFycmF5KDYwMDApCisgICAgPj4+CisgICAgPj4+ICMgTGVmdCBsZWFmCisgICAgLi4uIGgwMCA9IGJsYWtlMmIoYnVmWzA6TEVBRl9TSVpFXSwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsCisgICAgLi4uICAgICAgICAgICAgICAgbGVhZl9zaXplPUxFQUZfU0laRSwgaW5uZXJfc2l6ZT1JTk5FUl9TSVpFLAorICAgIC4uLiAgICAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTAsIG5vZGVfZGVwdGg9MCwgbGFzdF9ub2RlPUZhbHNlKQorICAgID4+PiAjIFJpZ2h0IGxlYWYKKyAgICAuLi4gaDAxID0gYmxha2UyYihidWZbTEVBRl9TSVpFOl0sIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILAorICAgIC4uLiAgICAgICAgICAgICAgIGxlYWZfc2l6ZT1MRUFGX1NJWkUsIGlubmVyX3NpemU9SU5ORVJfU0laRSwKKyAgICAuLi4gICAgICAgICAgICAgICBub2RlX29mZnNldD0xLCBub2RlX2RlcHRoPTAsIGxhc3Rfbm9kZT1UcnVlKQorICAgID4+PiAjIFJvb3Qgbm9kZQorICAgIC4uLiBoMTAgPSBibGFrZTJiKGRpZ2VzdF9zaXplPTMyLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwKKyAgICAuLi4gICAgICAgICAgICAgICBsZWFmX3NpemU9TEVBRl9TSVpFLCBpbm5lcl9zaXplPUlOTkVSX1NJWkUsCisgICAgLi4uICAgICAgICAgICAgICAgbm9kZV9vZmZzZXQ9MCwgbm9kZV9kZXB0aD0xLCBsYXN0X25vZGU9VHJ1ZSkKKyAgICA+Pj4gaDEwLnVwZGF0ZShoMDAuZGlnZXN0KCkpCisgICAgPj4+IGgxMC51cGRhdGUoaDAxLmRpZ2VzdCgpKQorICAgID4+PiBoMTAuaGV4ZGlnZXN0KCkKKyAgICAnM2FkMmE5YjM3YzYwNzBlMzc0YzdhOGM1MDhmZTIwY2E4NmI2ZWQ1NGUyODZlOTNhMDMxOGU5NWU4ODFkYjVhYScKKworQ3JlZGl0cworPT09PT09PQorCitCTEFLRTJfIHdhcyBkZXNpZ25lZCBieSAqSmVhbi1QaGlsaXBwZSBBdW1hc3NvbiosICpTYW11ZWwgTmV2ZXMqLCAqWm9va28KK1dpbGNveC1PJ0hlYXJuKiwgYW5kICpDaHJpc3RpYW4gV2lubmVybGVpbiogYmFzZWQgb24gU0hBLTNfIGZpbmFsaXN0IEJMQUtFXworY3JlYXRlZCBieSAqSmVhbi1QaGlsaXBwZSBBdW1hc3NvbiosICpMdWNhIEhlbnplbiosICpXaWxsaSBNZWllciosIGFuZAorKlJhcGhhZWwgQy4tVy4gUGhhbiouCisKK0l0IHVzZXMgY29yZSBhbGdvcml0aG0gZnJvbSBDaGFDaGFfIGNpcGhlciBkZXNpZ25lZCBieSAqRGFuaWVsIEouICBCZXJuc3RlaW4qLgorCitUaGUgc3RkbGliIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHB5Ymxha2UyXyBtb2R1bGUuIEl0IHdhcyB3cml0dGVuIGJ5CisqRG1pdHJ5IENoZXN0bnlraCogYmFzZWQgb24gQyBpbXBsZW1lbnRhdGlvbiB3cml0dGVuIGJ5ICpTYW11ZWwgTmV2ZXMqLiBUaGUKK2RvY3VtZW50YXRpb24gd2FzIGNvcGllZCBmcm9tIHB5Ymxha2UyXyBhbmQgd3JpdHRlbiBieSAqRG1pdHJ5IENoZXN0bnlraCouCisKK1RoZSBDIGNvZGUgd2FzIHBhcnRseSByZXdyaXR0ZW4gZm9yIFB5dGhvbiBieSAqQ2hyaXN0aWFuIEhlaW1lcyouCisKK1RoZSBmb2xsb3dpbmcgcHVibGljIGRvbWFpbiBkZWRpY2F0aW9uIGFwcGxpZXMgZm9yIGJvdGggQyBoYXNoIGZ1bmN0aW9uCitpbXBsZW1lbnRhdGlvbiwgZXh0ZW5zaW9uIGNvZGUsIGFuZCB0aGlzIGRvY3VtZW50YXRpb246CisKKyAgIFRvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgYXV0aG9yKHMpIGhhdmUgZGVkaWNhdGVkIGFsbCBjb3B5cmlnaHQKKyAgIGFuZCByZWxhdGVkIGFuZCBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhpcyBzb2Z0d2FyZSB0byB0aGUgcHVibGljIGRvbWFpbgorICAgd29ybGR3aWRlLiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHdpdGhvdXQgYW55IHdhcnJhbnR5LgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBDQzAgUHVibGljIERvbWFpbiBEZWRpY2F0aW9uIGFsb25nCisgICB3aXRoIHRoaXMgc29mdHdhcmUuIElmIG5vdCwgc2VlCisgICBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvLgorCitUaGUgZm9sbG93aW5nIHBlb3BsZSBoYXZlIGhlbHBlZCB3aXRoIGRldmVsb3BtZW50IG9yIGNvbnRyaWJ1dGVkIHRoZWlyIGNoYW5nZXMKK3RvIHRoZSBwcm9qZWN0IGFuZCB0aGUgcHVibGljIGRvbWFpbiBhY2NvcmRpbmcgdG8gdGhlIENyZWF0aXZlIENvbW1vbnMgUHVibGljCitEb21haW4gRGVkaWNhdGlvbiAxLjAgVW5pdmVyc2FsOgorCisqICpBbGV4YW5kciBTb2tvbG92c2tpeSoKKworLi4gc2VlYWxzbzo6IE9mZmljaWFsIEJMQUtFMiB3ZWJzaXRlOiBodHRwczovL2JsYWtlMi5uZXQKKworLi4gX1JGQy03NjkzOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzY5MworLi4gX0JMQUtFMjogaHR0cHM6Ly9ibGFrZTIubmV0CisuLiBfSE1BQzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSGFzaC1iYXNlZF9tZXNzYWdlX2F1dGhlbnRpY2F0aW9uX2NvZGUKKy4uIF9CTEFLRTogaHR0cHM6Ly8xMzEwMDIubmV0L2JsYWtlLworLi4gX1NIQS0zOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9OSVNUX2hhc2hfZnVuY3Rpb25fY29tcGV0aXRpb24KKy4uIF9DaGFDaGE6IGh0dHBzOi8vY3IueXAudG8vY2hhY2hhLmh0bWwKKy4uIF9weWJsYWtlMjogaHR0cHM6Ly9weXRob25ob3N0ZWQub3JnL3B5Ymxha2UyLworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdCBiL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0CmluZGV4IGEyZTk2Y2EuLjJjYjNjNzggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0CkBAIC00NCw4ICs0NCw4IEBACiAtLS0tLS0tLS0tLS0tLS0KIAogVGhlcmUgaXMgb25lIGNvbnN0cnVjdG9yIG1ldGhvZCBuYW1lZCBmb3IgZWFjaCB0eXBlIG9mIDpkZm46YGhhc2hgLiAgQWxsIHJldHVybgotYSBoYXNoIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNpbXBsZSBpbnRlcmZhY2UuIEZvciBleGFtcGxlOiB1c2UgOmZ1bmM6YHNoYTFgIHRvCi1jcmVhdGUgYSBTSEExIGhhc2ggb2JqZWN0LiBZb3UgY2FuIG5vdyBmZWVkIHRoaXMgb2JqZWN0IHdpdGggOnRlcm06YGJ5dGVzLWxpa2UKK2EgaGFzaCBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaW1wbGUgaW50ZXJmYWNlLiBGb3IgZXhhbXBsZTogdXNlIDpmdW5jOmBzaGEyNTZgIHRvCitjcmVhdGUgYSBTSEEtMjU2IGhhc2ggb2JqZWN0LiBZb3UgY2FuIG5vdyBmZWVkIHRoaXMgb2JqZWN0IHdpdGggOnRlcm06YGJ5dGVzLWxpa2UKIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAgKG5vcm1hbGx5IDpjbGFzczpgYnl0ZXNgKSB1c2luZyB0aGUgOm1ldGg6YHVwZGF0ZWAgbWV0aG9kLgogQXQgYW55IHBvaW50IHlvdSBjYW4gYXNrIGl0IGZvciB0aGUgOmRmbjpgZGlnZXN0YCBvZiB0aGUKIGNvbmNhdGVuYXRpb24gb2YgdGhlIGRhdGEgZmVkIHRvIGl0IHNvIGZhciB1c2luZyB0aGUgOm1ldGg6YGRpZ2VzdGAgb3IKQEAgLTY0LDIxICs2NCwzMyBAQAogLi4gaW5kZXg6OiBzaW5nbGU6IE9wZW5TU0w7ICh1c2UgaW4gbW9kdWxlIGhhc2hsaWIpCiAKIENvbnN0cnVjdG9ycyBmb3IgaGFzaCBhbGdvcml0aG1zIHRoYXQgYXJlIGFsd2F5cyBwcmVzZW50IGluIHRoaXMgbW9kdWxlIGFyZQotOmZ1bmM6YG1kNWAsIDpmdW5jOmBzaGExYCwgOmZ1bmM6YHNoYTIyNGAsIDpmdW5jOmBzaGEyNTZgLCA6ZnVuYzpgc2hhMzg0YCwKLWFuZCA6ZnVuYzpgc2hhNTEyYC4gQWRkaXRpb25hbCBhbGdvcml0aG1zIG1heSBhbHNvIGJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgdXBvbgotdGhlIE9wZW5TU0wgbGlicmFyeSB0aGF0IFB5dGhvbiB1c2VzIG9uIHlvdXIgcGxhdGZvcm0uCis6ZnVuYzpgc2hhMWAsIDpmdW5jOmBzaGEyMjRgLCA6ZnVuYzpgc2hhMjU2YCwgOmZ1bmM6YHNoYTM4NGAsCis6ZnVuYzpgc2hhNTEyYCwgOmZ1bmM6YGJsYWtlMmJgLCBhbmQgOmZ1bmM6YGJsYWtlMnNgLgorOmZ1bmM6YG1kNWAgaXMgbm9ybWFsbHkgYXZhaWxhYmxlIGFzIHdlbGwsIHRob3VnaCBpdAorbWF5IGJlIG1pc3NpbmcgaWYgeW91IGFyZSB1c2luZyBhIHJhcmUgIkZJUFMgY29tcGxpYW50IiBidWlsZCBvZiBQeXRob24uCitBZGRpdGlvbmFsIGFsZ29yaXRobXMgbWF5IGFsc28gYmUgYXZhaWxhYmxlIGRlcGVuZGluZyB1cG9uIHRoZSBPcGVuU1NMCitsaWJyYXJ5IHRoYXQgUHl0aG9uIHVzZXMgb24geW91ciBwbGF0Zm9ybS4gT24gbW9zdCBwbGF0Zm9ybXMgdGhlCis6ZnVuYzpgc2hhM18yMjRgLCA6ZnVuYzpgc2hhM18yNTZgLCA6ZnVuYzpgc2hhM18zODRgLCA6ZnVuYzpgc2hhM181MTJgLAorOmZ1bmM6YHNoYWtlXzEyOGAsIDpmdW5jOmBzaGFrZV8yNTZgIGFyZSBhbHNvIGF2YWlsYWJsZS4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICBTSEEzIChLZWNjYWspIGFuZCBTSEFLRSBjb25zdHJ1Y3RvcnMgOmZ1bmM6YHNoYTNfMjI0YCwgOmZ1bmM6YHNoYTNfMjU2YCwKKyAgIDpmdW5jOmBzaGEzXzM4NGAsIDpmdW5jOmBzaGEzXzUxMmAsIDpmdW5jOmBzaGFrZV8xMjhgLCA6ZnVuYzpgc2hha2VfMjU2YC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICA6ZnVuYzpgYmxha2UyYmAgYW5kIDpmdW5jOmBibGFrZTJzYCB3ZXJlIGFkZGVkLgogCiBGb3IgZXhhbXBsZSwgdG8gb2J0YWluIHRoZSBkaWdlc3Qgb2YgdGhlIGJ5dGUgc3RyaW5nIGBgYidOb2JvZHkgaW5zcGVjdHMgdGhlCiBzcGFtbWlzaCByZXBldGl0aW9uJ2BgOjoKIAogICAgPj4+IGltcG9ydCBoYXNobGliCi0gICA+Pj4gbSA9IGhhc2hsaWIubWQ1KCkKKyAgID4+PiBtID0gaGFzaGxpYi5zaGEyNTYoKQogICAgPj4+IG0udXBkYXRlKGIiTm9ib2R5IGluc3BlY3RzIikKICAgID4+PiBtLnVwZGF0ZShiIiB0aGUgc3BhbW1pc2ggcmVwZXRpdGlvbiIpCiAgICA+Pj4gbS5kaWdlc3QoKQotICAgYidceGJiZFx4OWNceDgzXHhkZFx4MWVceGE1XHhjOVx4ZDlceGRlXHhjOVx4YTFceDhkXHhmMFx4ZmZceGU5JworICAgYidceDAzXHgxZVx4ZGR9QWVceDE1XHg5M1x4YzVceGZlXFxceDAwb1x4YTV1KzdceGZkXHhkZlx4ZjdceGJjTlx4ODQ6XHhhNlx4YWZceDBjXHg5NVx4MGZLXHg5NFx4MDYnCiAgICA+Pj4gbS5kaWdlc3Rfc2l6ZQotICAgMTYKKyAgIDMyCiAgICA+Pj4gbS5ibG9ja19zaXplCiAgICA2NAogCkBAIC0xMDcsNyArMTE5LDkgQEAKIC4uIGRhdGE6OiBhbGdvcml0aG1zX2d1YXJhbnRlZWQKIAogICAgQSBzZXQgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGhhc2ggYWxnb3JpdGhtcyBndWFyYW50ZWVkIHRvIGJlIHN1cHBvcnRlZAotICAgYnkgdGhpcyBtb2R1bGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgIGJ5IHRoaXMgbW9kdWxlIG9uIGFsbCBwbGF0Zm9ybXMuICBOb3RlIHRoYXQgJ21kNScgaXMgaW4gdGhpcyBsaXN0IGRlc3BpdGUKKyAgIHNvbWUgdXBzdHJlYW0gdmVuZG9ycyBvZmZlcmluZyBhbiBvZGQgIkZJUFMgY29tcGxpYW50IiBQeXRob24gYnVpbGQgdGhhdAorICAgZXhjbHVkZXMgaXQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0xODEsNiArMTk1LDI4IEBACiAgICBjb21wdXRlIHRoZSBkaWdlc3RzIG9mIGRhdGEgc2hhcmluZyBhIGNvbW1vbiBpbml0aWFsIHN1YnN0cmluZy4KIAogCitTSEFLRSB2YXJpYWJsZSBsZW5ndGggZGlnZXN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDpmdW5jOmBzaGFrZV8xMjhgIGFuZCA6ZnVuYzpgc2hha2VfMjU2YCBhbGdvcml0aG1zIHByb3ZpZGUgdmFyaWFibGUKK2xlbmd0aCBkaWdlc3RzIHdpdGggbGVuZ3RoX2luX2JpdHMvLzIgdXAgdG8gMTI4IG9yIDI1NiBiaXRzIG9mIHNlY3VyaXR5LgorQXMgc3VjaCwgdGhlaXIgZGlnZXN0IG1ldGhvZHMgcmVxdWlyZSBhIGxlbmd0aC4gTWF4aW11bSBsZW5ndGggaXMgbm90IGxpbWl0ZWQKK2J5IHRoZSBTSEFLRSBhbGdvcml0aG0uCisKKy4uIG1ldGhvZDo6IHNoYWtlLmRpZ2VzdChsZW5ndGgpCisKKyAgIFJldHVybiB0aGUgZGlnZXN0IG9mIHRoZSBkYXRhIHBhc3NlZCB0byB0aGUgOm1ldGg6YHVwZGF0ZWAgbWV0aG9kIHNvIGZhci4KKyAgIFRoaXMgaXMgYSBieXRlcyBvYmplY3Qgb2Ygc2l6ZSBgYGxlbmd0aGBgIHdoaWNoIG1heSBjb250YWluIGJ5dGVzIGluCisgICB0aGUgd2hvbGUgcmFuZ2UgZnJvbSAwIHRvIDI1NS4KKworCisuLiBtZXRob2Q6OiBzaGFrZS5oZXhkaWdlc3QobGVuZ3RoKQorCisgICBMaWtlIDptZXRoOmBkaWdlc3RgIGV4Y2VwdCB0aGUgZGlnZXN0IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nIG9iamVjdCBvZgorICAgZG91YmxlIGxlbmd0aCwgY29udGFpbmluZyBvbmx5IGhleGFkZWNpbWFsIGRpZ2l0cy4gIFRoaXMgbWF5IGJlIHVzZWQgdG8KKyAgIGV4Y2hhbmdlIHRoZSB2YWx1ZSBzYWZlbHkgaW4gZW1haWwgb3Igb3RoZXIgbm9uLWJpbmFyeSBlbnZpcm9ubWVudHMuCisKKwogS2V5IGRlcml2YXRpb24KIC0tLS0tLS0tLS0tLS0tCiAKQEAgLTIyMSw2ICsyNTcsMjkgQEAKICAgICAgIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiB1c2VzIGFuIGlubGluZSB2ZXJzaW9uIG9mIDptb2Q6YGhtYWNgLiBJdCBpcyBhYm91dAogICAgICAgdGhyZWUgdGltZXMgc2xvd2VyIGFuZCBkb2Vzbid0IHJlbGVhc2UgdGhlIEdJTC4KIAorLi4gZnVuY3Rpb246OiBzY3J5cHQocGFzc3dvcmQsICosIHNhbHQsIG4sIHIsIHAsIG1heG1lbT0wLCBka2xlbj02NCkKKworICAgVGhlIGZ1bmN0aW9uIHByb3ZpZGVzIHNjcnlwdCBwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBhcworICAgZGVmaW5lZCBpbiA6cmZjOmA3OTE0YC4KKworICAgKnBhc3N3b3JkKiBhbmQgKnNhbHQqIG11c3QgYmUgYnl0ZXMtbGlrZSBvYmplY3RzLiBBcHBsaWNhdGlvbnMgYW5kCisgICBsaWJyYXJpZXMgc2hvdWxkIGxpbWl0ICpwYXNzd29yZCogdG8gYSBzZW5zaWJsZSBsZW5ndGggKGUuZy4gMTAyNCkuICpzYWx0KgorICAgc2hvdWxkIGJlIGFib3V0IDE2IG9yIG1vcmUgYnl0ZXMgZnJvbSBhIHByb3BlciBzb3VyY2UsIGUuZy4gOmZ1bmM6YG9zLnVyYW5kb21gLgorCisgICAqbiogaXMgdGhlIENQVS9NZW1vcnkgY29zdCBmYWN0b3IsICpyKiB0aGUgYmxvY2sgc2l6ZSwgKnAqIHBhcmFsbGVsaXphdGlvbgorICAgZmFjdG9yIGFuZCAqbWF4bWVtKiBsaW1pdHMgbWVtb3J5IChPcGVuU1NMIDEuMS4wIGRlZmF1bHRzIHRvIDMyIE1CKS4KKyAgICpka2xlbiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgZGVyaXZlZCBrZXkuCisKKyAgIEF2YWlsYWJpbGl0eTogT3BlblNTTCAxLjErCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKK0JMQUtFMgorLS0tLS0tCisKK0JMQUtFMiB0YWtlcyBhZGRpdGlvbmFsIGFyZ3VtZW50cywgc2VlIDpyZWY6YGhhc2hsaWItYmxha2UyYC4KKwogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjMwLDYgKzI4OSw4IEBACiAgICBNb2R1bGUgOm1vZDpgYmFzZTY0YAogICAgICAgQW5vdGhlciB3YXkgdG8gZW5jb2RlIGJpbmFyeSBoYXNoZXMgZm9yIG5vbi1iaW5hcnkgZW52aXJvbm1lbnRzLgogCisgICBTZWUgOnJlZjpgaGFzaGxpYi1ibGFrZTJgLgorCiAgICBodHRwOi8vY3NyYy5uaXN0Lmdvdi9wdWJsaWNhdGlvbnMvZmlwcy9maXBzMTgwLTIvZmlwczE4MC0yLnBkZgogICAgICAgVGhlIEZJUFMgMTgwLTIgcHVibGljYXRpb24gb24gU2VjdXJlIEhhc2ggQWxnb3JpdGhtcy4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CmluZGV4IGQ4NjNmZTkuLjE3ZjI4OWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKQEAgLTY5LDEzICs2OSw2IEBACiAgICBtdXN0IGJlIGEgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgaW5zdGFuY2UgZGVzY3JpYmluZyB0aGUgdmFyaW91cyBTU0wKICAgIG9wdGlvbnMuCiAKLSAgICprZXlfZmlsZSogYW5kICpjZXJ0X2ZpbGUqIGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNlCi0gICA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKLSAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCi0gICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4gIFRoZSAqY2hlY2tfaG9zdG5hbWUqIHBhcmFtZXRlciBpcyBhbHNvIGRlcHJlY2F0ZWQ7IHRoZQotICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhdHRyaWJ1dGUgb2YgKmNvbnRleHQqIHNob3VsZCBiZSB1c2VkCi0gICBpbnN0ZWFkLgotCiAgICBQbGVhc2UgcmVhZCA6cmVmOmBzc2wtc2VjdXJpdHlgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGJlc3QgcHJhY3RpY2VzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpAQCAtOTUsNiArODgsMTcgQEAKICAgICAgIDpmdW5jOmBzc2wuX2NyZWF0ZV91bnZlcmlmaWVkX2NvbnRleHRgIGNhbiBiZSBwYXNzZWQgdG8gdGhlICpjb250ZXh0KgogICAgICAgcGFyYW1ldGVyLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCisgICAgICAgVGhlICpjaGVja19ob3N0bmFtZSogcGFyYW1ldGVyIGlzIGFsc28gZGVwcmVjYXRlZDsgdGhlCisgICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhdHRyaWJ1dGUgb2YgKmNvbnRleHQqIHNob3VsZAorICAgICAgIGJlIHVzZWQgaW5zdGVhZC4KKwogCiAuLiBjbGFzczo6IEhUVFBSZXNwb25zZShzb2NrLCBkZWJ1Z2xldmVsPTAsIG1ldGhvZD1Ob25lLCB1cmw9Tm9uZSkKIApAQCAtMjE3LDM5ICsyMjEsNjEgQEAKIDpjbGFzczpgSFRUUENvbm5lY3Rpb25gIGluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogCi0uLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30pCisuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30sICosIFwKKyAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKQogCiAgICBUaGlzIHdpbGwgc2VuZCBhIHJlcXVlc3QgdG8gdGhlIHNlcnZlciB1c2luZyB0aGUgSFRUUCByZXF1ZXN0CiAgICBtZXRob2QgKm1ldGhvZCogYW5kIHRoZSBzZWxlY3RvciAqdXJsKi4KIAogICAgSWYgKmJvZHkqIGlzIHNwZWNpZmllZCwgdGhlIHNwZWNpZmllZCBkYXRhIGlzIHNlbnQgYWZ0ZXIgdGhlIGhlYWRlcnMgYXJlCi0gICBmaW5pc2hlZC4gIEl0IG1heSBiZSBhIHN0cmluZywgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBhbiBvcGVuCi0gICA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBhbiBpdGVyYWJsZSBvZiA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgXHMuICBJZgotICAgKmJvZHkqIGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkIGFzIElTTy04ODU5LTEsIHRoZSBkZWZhdWx0IGZvciBIVFRQLiAgSWYKLSAgIGl0IGlzIGEgYnl0ZXMtbGlrZSBvYmplY3QgdGhlIGJ5dGVzIGFyZSBzZW50IGFzIGlzLiAgSWYgaXQgaXMgYSA6dGVybTpgZmlsZQotICAgb2JqZWN0YCwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGlzIHNlbnQ7IHRoaXMgZmlsZSBvYmplY3Qgc2hvdWxkIHN1cHBvcnQKLSAgIGF0IGxlYXN0IHRoZSBgYHJlYWQoKWBgIG1ldGhvZC4gIElmIHRoZSBmaWxlIG9iamVjdCBoYXMgYSBgYG1vZGVgYAotICAgYXR0cmlidXRlLCB0aGUgZGF0YSByZXR1cm5lZCBieSB0aGUgYGByZWFkKClgYCBtZXRob2Qgd2lsbCBiZSBlbmNvZGVkIGFzCi0gICBJU08tODg1OS0xIHVubGVzcyB0aGUgYGBtb2RlYGAgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBzdWJzdHJpbmcgYGBiYGAsCi0gICBvdGhlcndpc2UgdGhlIGRhdGEgcmV0dXJuZWQgYnkgYGByZWFkKClgYCBpcyBzZW50IGFzIGlzLiAgSWYgKmJvZHkqIGlzIGFuCi0gICBpdGVyYWJsZSwgdGhlIGVsZW1lbnRzIG9mIHRoZSBpdGVyYWJsZSBhcmUgc2VudCBhcyBpcyB1bnRpbCB0aGUgaXRlcmFibGUgaXMKLSAgIGV4aGF1c3RlZC4KKyAgIGZpbmlzaGVkLiAgSXQgbWF5IGJlIGEgOmNsYXNzOmBzdHJgLCBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAsIGFuCisgICBvcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAsIG9yIGFuIGl0ZXJhYmxlIG9mIDpjbGFzczpgYnl0ZXNgLiAgSWYgKmJvZHkqCisgICBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZCBhcyBJU08tODg1OS0xLCB0aGUgZGVmYXVsdCBmb3IgSFRUUC4gIElmIGl0CisgICBpcyBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCB0aGUgYnl0ZXMgYXJlIHNlbnQgYXMgaXMuICBJZiBpdCBpcyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgaXMgc2VudDsgdGhpcyBmaWxlIG9iamVjdCBzaG91bGQKKyAgIHN1cHBvcnQgYXQgbGVhc3QgdGhlIGBgcmVhZCgpYGAgbWV0aG9kLiAgSWYgdGhlIGZpbGUgb2JqZWN0IGlzIGFuCisgICBpbnN0YW5jZSBvZiA6Y2xhc3M6YGlvLlRleHRJT0Jhc2VgLCB0aGUgZGF0YSByZXR1cm5lZCBieSB0aGUgYGByZWFkKClgYAorICAgbWV0aG9kIHdpbGwgYmUgZW5jb2RlZCBhcyBJU08tODg1OS0xLCBvdGhlcndpc2UgdGhlIGRhdGEgcmV0dXJuZWQgYnkKKyAgIGBgcmVhZCgpYGAgaXMgc2VudCBhcyBpcy4gIElmICpib2R5KiBpcyBhbiBpdGVyYWJsZSwgdGhlIGVsZW1lbnRzIG9mIHRoZQorICAgaXRlcmFibGUgYXJlIHNlbnQgYXMgaXMgdW50aWwgdGhlIGl0ZXJhYmxlIGlzIGV4aGF1c3RlZC4KIAotICAgVGhlICpoZWFkZXJzKiBhcmd1bWVudCBzaG91bGQgYmUgYSBtYXBwaW5nIG9mIGV4dHJhIEhUVFAKLSAgIGhlYWRlcnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LgorICAgVGhlICpoZWFkZXJzKiBhcmd1bWVudCBzaG91bGQgYmUgYSBtYXBwaW5nIG9mIGV4dHJhIEhUVFAgaGVhZGVycyB0byBzZW5kCisgICB3aXRoIHRoZSByZXF1ZXN0LgogCi0gICBJZiAqaGVhZGVycyogZG9lcyBub3QgY29udGFpbiBhIENvbnRlbnQtTGVuZ3RoIGl0ZW0sIG9uZSBpcyBhZGRlZAotICAgYXV0b21hdGljYWxseSBpZiBwb3NzaWJsZS4gIElmICpib2R5KiBpcyBgYE5vbmVgYCwgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlcgotICAgaXMgc2V0IHRvIGBgMGBgIGZvciBtZXRob2RzIHRoYXQgZXhwZWN0IGEgYm9keSAoYGBQVVRgYCwgYGBQT1NUYGAsIGFuZAotICAgYGBQQVRDSGBgKS4gIElmICpib2R5KiBpcyBhIHN0cmluZyBvciBieXRlcyBvYmplY3QsIHRoZSBDb250ZW50LUxlbmd0aAotICAgaGVhZGVyIGlzIHNldCB0byBpdHMgbGVuZ3RoLiAgSWYgKmJvZHkqIGlzIGEgOnRlcm06YGZpbGUgb2JqZWN0YCBhbmQgaXQKLSAgIHdvcmtzIHRvIGNhbGwgOmZ1bmM6YH5vcy5mc3RhdGAgb24gdGhlIHJlc3VsdCBvZiBpdHMgYGBmaWxlbm8oKWBgIG1ldGhvZCwKLSAgIHRoZW4gdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcyBzZXQgdG8gdGhlIGBgc3Rfc2l6ZWBgIHJlcG9ydGVkIGJ5IHRoZQotICAgYGBmc3RhdGBgIGNhbGwuICBPdGhlcndpc2Ugbm8gQ29udGVudC1MZW5ndGggaGVhZGVyIGlzIGFkZGVkLgorICAgSWYgKmhlYWRlcnMqIGNvbnRhaW5zIG5laXRoZXIgQ29udGVudC1MZW5ndGggbm9yIFRyYW5zZmVyLUVuY29kaW5nLAorICAgYnV0IHRoZXJlIGlzIGEgcmVxdWVzdCBib2R5LCBvbmUgb2YgdGhvc2UKKyAgIGhlYWRlciBmaWVsZHMgd2lsbCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5LiAgSWYKKyAgICpib2R5KiBpcyBgYE5vbmVgYCwgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcyBzZXQgdG8gYGAwYGAgZm9yCisgICBtZXRob2RzIHRoYXQgZXhwZWN0IGEgYm9keSAoYGBQVVRgYCwgYGBQT1NUYGAsIGFuZCBgYFBBVENIYGApLiAgSWYKKyAgICpib2R5KiBpcyBhIHN0cmluZyBvciBhIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoYXQgaXMgbm90IGFsc28gYQorICAgOnRlcm06YGZpbGUgPGZpbGUgb2JqZWN0PmAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMKKyAgIHNldCB0byBpdHMgbGVuZ3RoLiAgQW55IG90aGVyIHR5cGUgb2YgKmJvZHkqIChmaWxlcworICAgYW5kIGl0ZXJhYmxlcyBpbiBnZW5lcmFsKSB3aWxsIGJlIGNodW5rLWVuY29kZWQsIGFuZCB0aGUKKyAgIFRyYW5zZmVyLUVuY29kaW5nIGhlYWRlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2V0IGluc3RlYWQgb2YKKyAgIENvbnRlbnQtTGVuZ3RoLgorCisgICBUaGUgKmVuY29kZV9jaHVua2VkKiBhcmd1bWVudCBpcyBvbmx5IHJlbGV2YW50IGlmIFRyYW5zZmVyLUVuY29kaW5nIGlzCisgICBzcGVjaWZpZWQgaW4gKmhlYWRlcnMqLiAgSWYgKmVuY29kZV9jaHVua2VkKiBpcyBgYEZhbHNlYGAsIHRoZQorICAgSFRUUENvbm5lY3Rpb24gb2JqZWN0IGFzc3VtZXMgdGhhdCBhbGwgZW5jb2RpbmcgaXMgaGFuZGxlZCBieSB0aGUKKyAgIGNhbGxpbmcgY29kZS4gIElmIGl0IGlzIGBgVHJ1ZWBgLCB0aGUgYm9keSB3aWxsIGJlIGNodW5rLWVuY29kZWQuCisKKyAgIC4uIG5vdGU6OgorICAgICAgQ2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBoYXMgYmVlbiBhZGRlZCB0byB0aGUgSFRUUCBwcm90b2NvbAorICAgICAgdmVyc2lvbiAxLjEuICBVbmxlc3MgdGhlIEhUVFAgc2VydmVyIGlzIGtub3duIHRvIGhhbmRsZSBIVFRQIDEuMSwKKyAgICAgIHRoZSBjYWxsZXIgbXVzdCBlaXRoZXIgc3BlY2lmeSB0aGUgQ29udGVudC1MZW5ndGgsIG9yIG11c3QgcGFzcyBhCisgICAgICA6Y2xhc3M6YHN0cmAgb3IgYnl0ZXMtbGlrZSBvYmplY3QgdGhhdCBpcyBub3QgYWxzbyBhIGZpbGUgYXMgdGhlCisgICAgICBib2R5IHJlcHJlc2VudGF0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgICAgICpib2R5KiBjYW4gbm93IGJlIGFuIGl0ZXJhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgSWYgbmVpdGhlciBDb250ZW50LUxlbmd0aCBub3IgVHJhbnNmZXItRW5jb2RpbmcgYXJlIHNldCBpbgorICAgICAgKmhlYWRlcnMqLCBmaWxlIGFuZCBpdGVyYWJsZSAqYm9keSogb2JqZWN0cyBhcmUgbm93IGNodW5rLWVuY29kZWQuCisgICAgICBUaGUgKmVuY29kZV9jaHVua2VkKiBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAgICBObyBhdHRlbXB0IGlzIG1hZGUgdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LUxlbmd0aCBmb3IgZmlsZQorICAgICAgb2JqZWN0cy4KKwogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uZ2V0cmVzcG9uc2UoKQogCiAgICBTaG91bGQgYmUgY2FsbGVkIGFmdGVyIGEgcmVxdWVzdCBpcyBzZW50IHRvIGdldCB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLgpAQCAtMzM1LDEzICszNjEsMzIgQEAKICAgIGFuIGFyZ3VtZW50LgogCiAKLS4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnMobWVzc2FnZV9ib2R5PU5vbmUpCisuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5lbmRoZWFkZXJzKG1lc3NhZ2VfYm9keT1Ob25lLCAqLCBlbmNvZGVfY2h1bmtlZD1GYWxzZSkKIAogICAgU2VuZCBhIGJsYW5rIGxpbmUgdG8gdGhlIHNlcnZlciwgc2lnbmFsbGluZyB0aGUgZW5kIG9mIHRoZSBoZWFkZXJzLiBUaGUKICAgIG9wdGlvbmFsICptZXNzYWdlX2JvZHkqIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHBhc3MgYSBtZXNzYWdlIGJvZHkKLSAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdC4gIFRoZSBtZXNzYWdlIGJvZHkgd2lsbCBiZSBzZW50IGluIHRoZSBzYW1lCi0gICBwYWNrZXQgYXMgdGhlIG1lc3NhZ2UgaGVhZGVycyBpZiBpdCBpcyBzdHJpbmcsIG90aGVyd2lzZSBpdCBpcyBzZW50IGluIGEKLSAgIHNlcGFyYXRlIHBhY2tldC4KKyAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdC4KKworICAgSWYgKmVuY29kZV9jaHVua2VkKiBpcyBgYFRydWVgYCwgdGhlIHJlc3VsdCBvZiBlYWNoIGl0ZXJhdGlvbiBvZgorICAgKm1lc3NhZ2VfYm9keSogd2lsbCBiZSBjaHVuay1lbmNvZGVkIGFzIHNwZWNpZmllZCBpbiA6cmZjOmA3MjMwYCwKKyAgIFNlY3Rpb24gMy4zLjEuICBIb3cgdGhlIGRhdGEgaXMgZW5jb2RlZCBpcyBkZXBlbmRlbnQgb24gdGhlIHR5cGUgb2YKKyAgICptZXNzYWdlX2JvZHkqLiAgSWYgKm1lc3NhZ2VfYm9keSogaW1wbGVtZW50cyB0aGUgOnJlZjpgYnVmZmVyIGludGVyZmFjZQorICAgPGJ1ZmZlcm9iamVjdHM+YCB0aGUgZW5jb2Rpbmcgd2lsbCByZXN1bHQgaW4gYSBzaW5nbGUgY2h1bmsuCisgICBJZiAqbWVzc2FnZV9ib2R5KiBpcyBhIDpjbGFzczpgY29sbGVjdGlvbnMuSXRlcmFibGVgLCBlYWNoIGl0ZXJhdGlvbgorICAgb2YgKm1lc3NhZ2VfYm9keSogd2lsbCByZXN1bHQgaW4gYSBjaHVuay4gIElmICptZXNzYWdlX2JvZHkqIGlzIGEKKyAgIDp0ZXJtOmBmaWxlIG9iamVjdGAsIGVhY2ggY2FsbCB0byBgYC5yZWFkKClgYCB3aWxsIHJlc3VsdCBpbiBhIGNodW5rLgorICAgVGhlIG1ldGhvZCBhdXRvbWF0aWNhbGx5IHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgY2h1bmstZW5jb2RlZCBkYXRhCisgICBpbW1lZGlhdGVseSBhZnRlciAqbWVzc2FnZV9ib2R5Ki4KKworICAgLi4gbm90ZTo6IER1ZSB0byB0aGUgY2h1bmtlZCBlbmNvZGluZyBzcGVjaWZpY2F0aW9uLCBlbXB0eSBjaHVua3MKKyAgICAgIHlpZWxkZWQgYnkgYW4gaXRlcmF0b3IgYm9keSB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIGNodW5rLWVuY29kZXIuCisgICAgICBUaGlzIGlzIHRvIGF2b2lkIHByZW1hdHVyZSB0ZXJtaW5hdGlvbiBvZiB0aGUgcmVhZCBvZiB0aGUgcmVxdWVzdCBieQorICAgICAgdGhlIHRhcmdldCBzZXJ2ZXIgZHVlIHRvIG1hbGZvcm1lZCBlbmNvZGluZy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBDaHVua2VkIGVuY29kaW5nIHN1cHBvcnQuICBUaGUgKmVuY29kZV9jaHVua2VkKiBwYXJhbWV0ZXIgd2FzCisgICAgICBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5zZW5kKGRhdGEpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAppbmRleCBhZTdmYjk3Li5mYjVjMWRmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CkBAIC05OCw4ICs5OCw4IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IHJmaWxlCiAKLSAgICAgIENvbnRhaW5zIGFuIGlucHV0IHN0cmVhbSwgcG9zaXRpb25lZCBhdCB0aGUgc3RhcnQgb2YgdGhlIG9wdGlvbmFsIGlucHV0Ci0gICAgICBkYXRhLgorICAgICAgQW4gOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgaW5wdXQgc3RyZWFtLCByZWFkeSB0byByZWFkIGZyb20KKyAgICAgIHRoZSBzdGFydCBvZiB0aGUgb3B0aW9uYWwgaW5wdXQgZGF0YS4KIAogICAgLi4gYXR0cmlidXRlOjogd2ZpbGUKIApAQCAtMTA3LDYgKzEwNyw5IEBACiAgICAgICBjbGllbnQuIFByb3BlciBhZGhlcmVuY2UgdG8gdGhlIEhUVFAgcHJvdG9jb2wgbXVzdCBiZSB1c2VkIHdoZW4gd3JpdGluZyB0bwogICAgICAgdGhpcyBzdHJlYW0uCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBUaGlzIGlzIGFuIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHN0cmVhbS4KKwogICAgOmNsYXNzOmBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyYCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBzZXJ2ZXJfdmVyc2lvbgpAQCAtMzY5LDEwICszNzIsOSBAQAogCiAgICBIYW5kbGVyID0gaHR0cC5zZXJ2ZXIuU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyCiAKLSAgIGh0dHBkID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBIYW5kbGVyKQotCi0gICBwcmludCgic2VydmluZyBhdCBwb3J0IiwgUE9SVCkKLSAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgd2l0aCBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKCgiIiwgUE9SVCksIEhhbmRsZXIpIGFzIGh0dHBkOgorICAgICAgIHByaW50KCJzZXJ2aW5nIGF0IHBvcnQiLCBQT1JUKQorICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAuLiBfaHR0cC1zZXJ2ZXItY2xpOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CmluZGV4IDc3MWNhNDMuLjE2MzJlYjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CkBAIC0xMDMsNiArMTAzLDE0IEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqc3NsX2NvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworCiBUaGUgc2Vjb25kIHN1YmNsYXNzIGFsbG93cyBmb3IgY29ubmVjdGlvbnMgY3JlYXRlZCBieSBhIGNoaWxkIHByb2Nlc3M6CiAKIApAQCAtNTAwLDYgKzUwOCwxNyBAQAogICAgICAgICAgTS5zdG9yZShudW0sICcrRkxBR1MnLCAnXFxEZWxldGVkJykKICAgICAgIE0uZXhwdW5nZSgpCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBDcmVhdGluZyBmbGFncyBjb250YWluaW5nICddJyAoZm9yIGV4YW1wbGU6ICJbdGVzdF0iKSB2aW9sYXRlcworICAgICAgOnJmYzpgMzUwMWAgKHRoZSBJTUFQIHByb3RvY29sKS4gIEhvd2V2ZXIsIGltYXBsaWIgaGFzIGhpc3RvcmljYWxseQorICAgICAgYWxsb3dlZCBjcmVhdGlvbiBvZiBzdWNoIHRhZ3MsIGFuZCBwb3B1bGFyIElNQVAgc2VydmVycywgc3VjaCBhcyBHbWFpbCwKKyAgICAgIGFjY2VwdCBhbmQgcHJvZHVjZSBzdWNoIGZsYWdzLiAgVGhlcmUgYXJlIG5vbi1QeXRob24gcHJvZ3JhbXMgd2hpY2ggYWxzbworICAgICAgY3JlYXRlIHN1Y2ggdGFncy4gIEFsdGhvdWdoIGl0IGlzIGFuIFJGQyB2aW9sYXRpb24gYW5kIElNQVAgY2xpZW50cyBhbmQKKyAgICAgIHNlcnZlcnMgYXJlIHN1cHBvc2VkIHRvIGJlIHN0cmljdCwgaW1hcGxpYiBub25ldGhlbGVzcyBjb250aW51ZXMgdG8gYWxsb3cKKyAgICAgIHN1Y2ggdGFncyB0byBiZSBjcmVhdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGFuZCBhcyBvZgorICAgICAgcHl0aG9uIDMuNiwgaGFuZGxlcyB0aGVtIGlmIHRoZXkgYXJlIHNlbnQgZnJvbSB0aGUgc2VydmVyLCBzaW5jZSB0aGlzCisgICAgICBpbXByb3ZlcyByZWFsLXdvcmxkIGNvbXBhdGliaWxpdHkuCiAKIC4uIG1ldGhvZDo6IElNQVA0LnN1YnNjcmliZShtYWlsYm94KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0IGIvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAppbmRleCBmMTFmNmRjLi44MDBlOTE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKQEAgLTIwLDYgKzIwLDkgQEAKICAgIHN0cmluZyBkZXNjcmliaW5nIHRoZSBpbWFnZSB0eXBlLiAgSWYgb3B0aW9uYWwgKmgqIGlzIHByb3ZpZGVkLCB0aGUgKmZpbGVuYW1lKgogICAgaXMgaWdub3JlZCBhbmQgKmgqIGlzIGFzc3VtZWQgdG8gY29udGFpbiB0aGUgYnl0ZSBzdHJlYW0gdG8gdGVzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIFRoZSBmb2xsb3dpbmcgaW1hZ2UgdHlwZXMgYXJlIHJlY29nbml6ZWQsIGFzIGxpc3RlZCBiZWxvdyB3aXRoIHRoZSByZXR1cm4gdmFsdWUKIGZyb20gOmZ1bmM6YHdoYXRgOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXAucnN0IGIvRG9jL2xpYnJhcnkvaW1wLnJzdAppbmRleCA5ODI4YmE2Li5jY2Y1ZjkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKQEAgLTg1LDcgKzg1LDkgQEAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKICAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjYCBpbnN0ZWFkIHVubGVzcyBQeXRob24gMy4zCiAgICAgICBjb21wYXRpYmlsaXR5IGlzIHJlcXVpcmVkLCBpbiB3aGljaCBjYXNlIHVzZQotICAgICAgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAuCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLmZpbmRfbG9hZGVyYC4gRm9yIGV4YW1wbGUgdXNhZ2Ugb2YgdGhlIGZvcm1lciBjYXNlLAorICAgICAgc2VlIHRoZSA6cmVmOmBpbXBvcnRsaWItZXhhbXBsZXNgIHNlY3Rpb24gb2YgdGhlIDptb2Q6YGltcG9ydGxpYmAKKyAgICAgIGRvY3VtZW50YXRpb24uCiAKIAogLi4gZnVuY3Rpb246OiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24pCkBAIC0xMTIsOSArMTE0LDEyIEBACiAgICAgICBJZiBwcmV2aW91c2x5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCA6ZnVuYzpgaW1wLmZpbmRfbW9kdWxlYCB0aGVuCiAgICAgICBjb25zaWRlciB1c2luZyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLCBvdGhlcndpc2UgdXNlIHRoZSBsb2FkZXIKICAgICAgIHJldHVybmVkIGJ5IHRoZSByZXBsYWNlbWVudCB5b3UgY2hvc2UgZm9yIDpmdW5jOmBpbXAuZmluZF9tb2R1bGVgLiBJZiB5b3UKLSAgICAgIGNhbGxlZCA6ZnVuYzpgaW1wLmxvYWRfbW9kdWxlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgZGlyZWN0bHkgdGhlbiB1c2UgdGhlCi0gICAgICBjbGFzc2VzIGluIDptb2Q6YGltcG9ydGxpYi5tYWNoaW5lcnlgLCBlLmcuCi0gICAgICBgYGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKS5sb2FkX21vZHVsZSgpYGAuCisgICAgICBjYWxsZWQgOmZ1bmM6YGltcC5sb2FkX21vZHVsZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGRpcmVjdGx5IHdpdGggZmlsZQorICAgICAgcGF0aCBhcmd1bWVudHMgdGhlbiB1c2UgYSBjb21iaW5hdGlvbiBvZgorICAgICAgOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uYCBhbmQKKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjYC4gU2VlIHRoZSA6cmVmOmBpbXBvcnRsaWItZXhhbXBsZXNgCisgICAgICBzZWN0aW9uIG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgb2YgdGhlIHZhcmlvdXMKKyAgICAgIGFwcHJvYWNoZXMuCiAKIAogLi4gZnVuY3Rpb246OiBuZXdfbW9kdWxlKG5hbWUpCkBAIC0xMjMsNyArMTI4LDcgQEAKICAgIGluIGBgc3lzLm1vZHVsZXNgYC4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAotICAgICAgVXNlIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAgaW5zdGVhZC4KKyAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AgaW5zdGVhZC4KIAogCiAuLiBmdW5jdGlvbjo6IHJlbG9hZChtb2R1bGUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAppbmRleCBjYjUyZjc0Li5mNjNhMThkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgbW9kdWxlIGFuZCAqcGF0aCogd2lsbCBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZQogICAgICAgcGFyZW50IHBhY2thZ2UuIElmIGEgc3BlYyBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogICAgICAgV2hlbiBwYXNzZWQgaW4sIGBgdGFyZ2V0YGAgaXMgYSBtb2R1bGUgb2JqZWN0IHRoYXQgdGhlIGZpbmRlciBtYXkKLSAgICAgIHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZCBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgorICAgICAgdXNlIHRvIG1ha2UgYSBtb3JlIGVkdWNhdGVkIGd1ZXNzIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCkBAIC0zMTcsNyArMzE3LDcgQEAKICAgICAgIHdpdGhpbiB0aGUgOnRlcm06YHBhdGggZW50cnlgIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkLiAgSWYgYSBzcGVjCiAgICAgICBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgV2hlbiBwYXNzZWQgaW4sIGBgdGFyZ2V0YGAKICAgICAgIGlzIGEgbW9kdWxlIG9iamVjdCB0aGF0IHRoZSBmaW5kZXIgbWF5IHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZAotICAgICAgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KKyAgICAgIGd1ZXNzIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCkBAIC0zNzksMTAgKzM3OSwxNCBAQAogCiAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHRoYXQgZXhlY3V0ZXMgdGhlIG1vZHVsZSBpbiBpdHMgb3duIG5hbWVzcGFjZQogICAgICAgIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgb3IgcmVsb2FkZWQuICBUaGUgbW9kdWxlIHNob3VsZCBhbHJlYWR5Ci0gICAgICAgYmUgaW5pdGlhbGl6ZWQgd2hlbiBleGVjX21vZHVsZSgpIGlzIGNhbGxlZC4KKyAgICAgICBiZSBpbml0aWFsaXplZCB3aGVuIGBgZXhlY19tb2R1bGUoKWBgIGlzIGNhbGxlZC4gV2hlbiB0aGlzIG1ldGhvZCBleGlzdHMsCisgICAgICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtdXN0IGJlIGRlZmluZWQuCiAKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtdXN0IGFsc28gYmUgZGVmaW5lZC4KKwogICAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQogCiAgICAgICAgIEEgbGVnYWN5IG1ldGhvZCBmb3IgbG9hZGluZyBhIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUKQEAgLTkzNiw2ICs5NDAsMTAgQEAKICAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgd2hlcmUKICAgICAgIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIGlzIG9wdGlvbmFsLgogCisgICAgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAgIFVzZSA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBTb3VyY2VsZXNzRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKIApAQCAtOTc1LDYgKzk4MywxMCBAQAogICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB3aGVyZQogICAgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIGxvYWQgaXMgb3B0aW9uYWwuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgVXNlIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgaW5zdGVhZC4KKwogCiAuLiBjbGFzczo6IEV4dGVuc2lvbkZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCiAKQEAgLTExMzcsNiArMTE0OSw5IEBACiAgICAgICBUaGUgKm9wdGltaXphdGlvbiogcGFyYW1ldGVyIHdhcyBhZGRlZCBhbmQgdGhlICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyCiAgICAgICB3YXMgZGVwcmVjYXRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCkBAIC0xMTUwLDYgKzExNjUsOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpCiAKICAgIERlY29kZSB0aGUgZ2l2ZW4gYnl0ZXMgcmVwcmVzZW50aW5nIHNvdXJjZSBjb2RlIGFuZCByZXR1cm4gaXQgYXMgYSBzdHJpbmcKQEAgLTExOTIsMTIgKzEyMTAsMTMgQEAKIAogLi4gZnVuY3Rpb246OiBtb2R1bGVfZnJvbV9zcGVjKHNwZWMpCiAKLSAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgYmFzZWQgb24gKipzcGVjKiogYW5kIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAuCisgICBDcmVhdGUgYSBuZXcgbW9kdWxlIGJhc2VkIG9uICoqc3BlYyoqIGFuZAorICAgOm1ldGg6YHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUgPGltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGU+YC4KIAotICAgSWYgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIHRoZW4gYW55Ci0gICBwcmUtZXhpc3RpbmcgYXR0cmlidXRlcyB3aWxsIG5vdCBiZSByZXNldC4gQWxzbywgbm8gOmV4YzpgQXR0cmlidXRlRXJyb3JgCi0gICB3aWxsIGJlIHJhaXNlZCBpZiB0cmlnZ2VyZWQgd2hpbGUgYWNjZXNzaW5nICoqc3BlYyoqIG9yIHNldHRpbmcgYW4gYXR0cmlidXRlCi0gICBvbiB0aGUgbW9kdWxlLgorICAgSWYgOm1ldGg6YHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUgPGltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGU+YAorICAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueSBwcmUtZXhpc3RpbmcgYXR0cmlidXRlcyB3aWxsIG5vdCBiZSByZXNldC4KKyAgIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiB0cmlnZ2VyZWQgd2hpbGUgYWNjZXNzaW5nCisgICAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZSBvbiB0aGUgbW9kdWxlLgogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHVzaW5nIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAgdG8gY3JlYXRlIGEKICAgIG5ldyBtb2R1bGUgYXMgKipzcGVjKiogaXMgdXNlZCB0byBzZXQgYXMgbWFueSBpbXBvcnQtY29udHJvbGxlZCBhdHRyaWJ1dGVzIG9uCkBAIC0xMjU5LDcgKzEyNzgsOCBAQAogCiAuLiBkZWNvcmF0b3I6OiBzZXRfcGFja2FnZQogCi0gICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHRvIHNldCB0aGUgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYAorICAgQSA6dGVybTpgZGVjb3JhdG9yYCBmb3IgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB0byBzZXQgdGhlCisgICA6YXR0cjpgX19wYWNrYWdlX19gIGF0dHJpYnV0ZSBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiBJZiA6YXR0cjpgX19wYWNrYWdlX19gCiAgICBpcyBzZXQgYW5kIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gYGBOb25lYGAgaXQgd2lsbCBub3QgYmUgY2hhbmdlZC4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNApAQCAtMTI4NCw2ICsxMzA0LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBjbGFzczo6IExhenlMb2FkZXIobG9hZGVyKQogCiAgICBBIGNsYXNzIHdoaWNoIHBvc3Rwb25lcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBsb2FkZXIgb2YgYSBtb2R1bGUgdW50aWwgdGhlCkBAIC0xMjkyLDEzICsxMzE1LDEyIEBACiAgICBUaGlzIGNsYXNzICoqb25seSoqIHdvcmtzIHdpdGggbG9hZGVycyB0aGF0IGRlZmluZQogICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgYXMgY29udHJvbCBvdmVyIHdoYXQgbW9kdWxlIHR5cGUKICAgIGlzIHVzZWQgZm9yIHRoZSBtb2R1bGUgaXMgcmVxdWlyZWQuIEZvciB0aG9zZSBzYW1lIHJlYXNvbnMsIHRoZSBsb2FkZXIncwotICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2Qgd2lsbCBiZSBpZ25vcmVkIChpLmUuLCB0aGUKLSAgIGxvYWRlcidzIG1ldGhvZCBzaG91bGQgb25seSByZXR1cm4gYGBOb25lYGA7IHRoaXMgZXhjbHVkZXMKLSAgIDpjbGFzczpgQnVpbHRpbkltcG9ydGVyYCBhbmQgOmNsYXNzOmBFeHRlbnNpb25GaWxlTG9hZGVyYCkuIEZpbmFsbHksCi0gICBtb2R1bGVzIHdoaWNoIHN1YnN0aXR1dGUgdGhlIG9iamVjdCBwbGFjZWQgaW50byA6YXR0cjpgc3lzLm1vZHVsZXNgIHdpbGwKLSAgIG5vdCB3b3JrIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwcm9wZXJseSByZXBsYWNlIHRoZSBtb2R1bGUgcmVmZXJlbmNlcwotICAgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgc2FmZWx5OyA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgc3VjaCBhCi0gICBzdWJzdGl0dXRpb24gaXMgZGV0ZWN0ZWQuCisgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG1ldGhvZCBtdXN0IHJldHVybiBgYE5vbmVgYCBvciBhCisgICB0eXBlIGZvciB3aGljaCBpdHMgYGBfX2NsYXNzX19gYCBhdHRyaWJ1dGUgY2FuIGJlIG11dGF0ZWQgYWxvbmcgd2l0aCBub3QKKyAgIHVzaW5nIDp0ZXJtOmBzbG90cyA8X19zbG90c19fPmAuIEZpbmFsbHksIG1vZHVsZXMgd2hpY2ggc3Vic3RpdHV0ZSB0aGUgb2JqZWN0CisgICBwbGFjZWQgaW50byA6YXR0cjpgc3lzLm1vZHVsZXNgIHdpbGwgbm90IHdvcmsgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHByb3Blcmx5CisgICByZXBsYWNlIHRoZSBtb2R1bGUgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoZSBpbnRlcnByZXRlciBzYWZlbHk7CisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgc3VjaCBhIHN1YnN0aXR1dGlvbiBpcyBkZXRlY3RlZC4KIAogICAgLi4gbm90ZTo6CiAgICAgICBGb3IgcHJvamVjdHMgd2hlcmUgc3RhcnR1cCB0aW1lIGlzIGNyaXRpY2FsLCB0aGlzIGNsYXNzIGFsbG93cyBmb3IKQEAgLTEzMDksNiArMTMzMSwxMSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEJlZ2FuIGNhbGxpbmcgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCwgcmVtb3ZpbmcgdGhlCisgICAgICBjb21wYXRpYmlsaXR5IHdhcm5pbmcgZm9yIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXJgIGFuZAorICAgICAgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJgLgorCiAgICAuLiBjbGFzc21ldGhvZDo6IGZhY3RvcnkobG9hZGVyKQogCiAgICAgICBBIHN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNhbGxhYmxlIHRoYXQgY3JlYXRlcyBhIGxhenkgbG9hZGVyLiBUaGlzCkBAIC0xMzIwLDMgKzEzNDcsMTM5IEBACiAgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcgogICAgICAgICBsYXp5X2xvYWRlciA9IGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuZmFjdG9yeShsb2FkZXIpCiAgICAgICAgIGZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcihwYXRoLCAobGF6eV9sb2FkZXIsIHN1ZmZpeGVzKSkKKworLi4gX2ltcG9ydGxpYi1leGFtcGxlczoKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK0ltcG9ydGluZyBwcm9ncmFtbWF0aWNhbGx5CisnJycnJycnJycnJycnJycnJycnJycnJycnJworCitUbyBwcm9ncmFtbWF0aWNhbGx5IGltcG9ydCBhIG1vZHVsZSwgdXNlIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIKKworICBpdGVydG9vbHMgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnaXRlcnRvb2xzJykKKworCitDaGVja2luZyBpZiBhIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWQKKycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJworCitJZiB5b3UgbmVlZCB0byBmaW5kIG91dCBpZiBhIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWQgd2l0aG91dCBhY3R1YWxseSBkb2luZyB0aGUKK2ltcG9ydCwgdGhlbiB5b3Ugc2hvdWxkIHVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjYC4KKzo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMuCisgIG5hbWUgPSAnaXRlcnRvb2xzJworCisgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMobmFtZSkKKyAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgcHJpbnQoImNhbid0IGZpbmQgdGhlIGl0ZXJ0b29scyBtb2R1bGUiKQorICBlbHNlOgorICAgICAgIyBJZiB5b3UgY2hvc2UgdG8gcGVyZm9ybSB0aGUgYWN0dWFsIGltcG9ydCAuLi4KKyAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgICMgQWRkaW5nIHRoZSBtb2R1bGUgdG8gc3lzLm1vZHVsZXMgaXMgb3B0aW9uYWwuCisgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorCisKK0ltcG9ydGluZyBhIHNvdXJjZSBmaWxlIGRpcmVjdGx5CisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJworCitUbyBpbXBvcnQgYSBQeXRob24gc291cmNlIGZpbGUgZGlyZWN0bHksIHVzZSB0aGUgZm9sbG93aW5nIHJlY2lwZQorKFB5dGhvbiAzLjQgYW5kIG5ld2VyIG9ubHkpOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3Nlcy4KKyAgaW1wb3J0IHRva2VuaXplCisgIGZpbGVfcGF0aCA9IHRva2VuaXplLl9fZmlsZV9fCisgIG1vZHVsZV9uYW1lID0gdG9rZW5pemUuX19uYW1lX18KKworICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obW9kdWxlX25hbWUsIGZpbGVfcGF0aCkKKyAgbW9kdWxlID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICMgT3B0aW9uYWw7IG9ubHkgbmVjZXNzYXJ5IGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gaW1wb3J0IHRoZSBtb2R1bGUKKyAgIyBieSBuYW1lIGxhdGVyLgorICBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0gPSBtb2R1bGUKKworCitTZXR0aW5nIHVwIGFuIGltcG9ydGVyCisnJycnJycnJycnJycnJycnJycnJycnCisKK0ZvciBkZWVwIGN1c3RvbWl6YXRpb25zIG9mIGltcG9ydCwgeW91IHR5cGljYWxseSB3YW50IHRvIGltcGxlbWVudCBhbgorOnRlcm06YGltcG9ydGVyYC4gVGhpcyBtZWFucyBtYW5hZ2luZyBib3RoIHRoZSA6dGVybTpgZmluZGVyYCBhbmQgOnRlcm06YGxvYWRlcmAKK3NpZGUgb2YgdGhpbmdzLiBGb3IgZmluZGVycyB0aGVyZSBhcmUgdHdvIGZsYXZvdXJzIHRvIGNob29zZSBmcm9tIGRlcGVuZGluZyBvbgoreW91ciBuZWVkczogYSA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAgb3IgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgLiBUaGUKK2Zvcm1lciBpcyB3aGF0IHlvdSB3b3VsZCBwdXQgb24gOmF0dHI6YHN5cy5tZXRhX3BhdGhgIHdoaWxlIHRoZSBsYXR0ZXIgaXMgd2hhdAoreW91IGNyZWF0ZSB1c2luZyBhIDp0ZXJtOmBwYXRoIGVudHJ5IGhvb2tgIG9uIDphdHRyOmBzeXMucGF0aF9ob29rc2Agd2hpY2ggd29ya3MKK3dpdGggOmF0dHI6YHN5cy5wYXRoYCBlbnRyaWVzIHRvIHBvdGVudGlhbGx5IGNyZWF0ZSBhIGZpbmRlci4gVGhpcyBleGFtcGxlIHdpbGwKK3Nob3cgeW91IGhvdyB0byByZWdpc3RlciB5b3VyIG93biBpbXBvcnRlcnMgc28gdGhhdCBpbXBvcnQgd2lsbCB1c2UgdGhlbSAoZm9yCitjcmVhdGluZyBhbiBpbXBvcnRlciBmb3IgeW91cnNlbGYsIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcHByb3ByaWF0ZQorY2xhc3NlcyBkZWZpbmVkIHdpdGhpbiB0aGlzIHBhY2thZ2UpOjoKKworICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzIG9ubHkuCisgIFNwYW1NZXRhUGF0aEZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcgorICBTcGFtUGF0aEVudHJ5RmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyCisgIGxvYWRlcl9kZXRhaWxzID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpCisKKyAgIyBTZXR0aW5nIHVwIGEgbWV0YSBwYXRoIGZpbmRlci4KKyAgIyBNYWtlIHN1cmUgdG8gcHV0IHRoZSBmaW5kZXIgaW4gdGhlIHByb3BlciBsb2NhdGlvbiBpbiB0aGUgbGlzdCBpbiB0ZXJtcyBvZgorICAjIHByaW9yaXR5LgorICBzeXMubWV0YV9wYXRoLmFwcGVuZChTcGFtTWV0YVBhdGhGaW5kZXIpCisKKyAgIyBTZXR0aW5nIHVwIGEgcGF0aCBlbnRyeSBmaW5kZXIuCisgICMgTWFrZSBzdXJlIHRvIHB1dCB0aGUgcGF0aCBob29rIGluIHRoZSBwcm9wZXIgbG9jYXRpb24gaW4gdGhlIGxpc3QgaW4gdGVybXMKKyAgIyBvZiBwcmlvcml0eS4KKyAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKFNwYW1QYXRoRW50cnlGaW5kZXIucGF0aF9ob29rKGxvYWRlcl9kZXRhaWxzKSkKKworCitBcHByb3hpbWF0aW5nIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAKKycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJworCitJbXBvcnQgaXRzZWxmIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiBjb2RlLCBtYWtpbmcgaXQgcG9zc2libGUgdG8KK2V4cG9zZSBtb3N0IG9mIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHRocm91Z2ggaW1wb3J0bGliLiBUaGUgZm9sbG93aW5nCitoZWxwcyBpbGx1c3RyYXRlIHRoZSB2YXJpb3VzIEFQSXMgdGhhdCBpbXBvcnRsaWIgZXhwb3NlcyBieSBwcm92aWRpbmcgYW4KK2FwcHJveGltYXRlIGltcGxlbWVudGF0aW9uIG9mCis6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIChQeXRob24gMy40IGFuZCBuZXdlciBmb3IgdGhlIGltcG9ydGxpYiB1c2FnZSwKK1B5dGhvbiAzLjYgYW5kIG5ld2VyIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZSkuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgZGVmIGltcG9ydF9tb2R1bGUobmFtZSwgcGFja2FnZT1Ob25lKToKKyAgICAgICIiIkFuIGFwcHJveGltYXRlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKKyAgICAgIGFic29sdXRlX25hbWUgPSBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSkKKyAgICAgIHRyeToKKyAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbYWJzb2x1dGVfbmFtZV0KKyAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICBwYXNzCisKKyAgICAgIHBhdGggPSBOb25lCisgICAgICBpZiAnLicgaW4gYWJzb2x1dGVfbmFtZToKKyAgICAgICAgICBwYXJlbnRfbmFtZSwgXywgY2hpbGRfbmFtZSA9IGFic29sdXRlX25hbWUucnBhcnRpdGlvbignLicpCisgICAgICAgICAgcGFyZW50X21vZHVsZSA9IGltcG9ydF9tb2R1bGUocGFyZW50X25hbWUpCisgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICAgIHNwZWMgPSBmaW5kZXIuZmluZF9zcGVjKGFic29sdXRlX25hbWUsIHBhdGgpCisgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgIGVsc2U6CisgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoZidObyBtb2R1bGUgbmFtZWQge2Fic29sdXRlX25hbWUhcn0nKQorICAgICAgbW9kdWxlID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAgICAgc3lzLm1vZHVsZXNbYWJzb2x1dGVfbmFtZV0gPSBtb2R1bGUKKyAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgc2V0YXR0cihwYXJlbnRfbW9kdWxlLCBjaGlsZF9uYW1lLCBtb2R1bGUpCisgICAgICByZXR1cm4gbW9kdWxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IDYyYTM5ODguLmZjODE1YTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0yMzUsMjQgKzIzNSw2IEBACiAgICAgICBsaXN0ZWQgaW4gdGhlIG1ldGFjbGFzcycgY3VzdG9tIDptZXRoOmBfX2Rpcl9fYC4KIAogCi0uLiBmdW5jdGlvbjo6IGdldG1vZHVsZWluZm8ocGF0aCkKLQotICAgUmV0dXJucyBhIDp0ZXJtOmBuYW1lZCB0dXBsZWAgYGBNb2R1bGVJbmZvKG5hbWUsIHN1ZmZpeCwgbW9kZSwgbW9kdWxlX3R5cGUpYGAKLSAgIG9mIHZhbHVlcyB0aGF0IGRlc2NyaWJlIGhvdyBQeXRob24gd2lsbCBpbnRlcnByZXQgdGhlIGZpbGUgaWRlbnRpZmllZCBieQotICAgKnBhdGgqIGlmIGl0IGlzIGEgbW9kdWxlLCBvciBgYE5vbmVgYCBpZiBpdCB3b3VsZCBub3QgYmUgaWRlbnRpZmllZCBhcyBhCi0gICBtb2R1bGUuICBJbiB0aGF0IHR1cGxlLCAqbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB3aXRob3V0IHRoZSBuYW1lIG9mCi0gICBhbnkgZW5jbG9zaW5nIHBhY2thZ2UsICpzdWZmaXgqIGlzIHRoZSB0cmFpbGluZyBwYXJ0IG9mIHRoZSBmaWxlIG5hbWUgKHdoaWNoCi0gICBtYXkgbm90IGJlIGEgZG90LWRlbGltaXRlZCBleHRlbnNpb24pLCAqbW9kZSogaXMgdGhlIDpmdW5jOmBvcGVuYCBtb2RlIHRoYXQKLSAgIHdvdWxkIGJlIHVzZWQgKGBgJ3InYGAgb3IgYGAncmInYGApLCBhbmQgKm1vZHVsZV90eXBlKiBpcyBhbiBpbnRlZ2VyIGdpdmluZwotICAgdGhlIHR5cGUgb2YgdGhlIG1vZHVsZS4gICptb2R1bGVfdHlwZSogd2lsbCBoYXZlIGEgdmFsdWUgd2hpY2ggY2FuIGJlCi0gICBjb21wYXJlZCB0byB0aGUgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIDptb2Q6YGltcGAgbW9kdWxlOyBzZWUgdGhlCi0gICBkb2N1bWVudGF0aW9uIGZvciB0aGF0IG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBtb2R1bGUgdHlwZXMuCi0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKLSAgICAgIFlvdSBtYXkgY2hlY2sgdGhlIGZpbGUgcGF0aCdzIHN1ZmZpeCBhZ2FpbnN0IHRoZSBzdXBwb3J0ZWQgc3VmZml4ZXMKLSAgICAgIGxpc3RlZCBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCB0byBpbmZlciB0aGUgc2FtZSBpbmZvcm1hdGlvbi4KLQotCiAuLiBmdW5jdGlvbjo6IGdldG1vZHVsZW5hbWUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgbmFtZWQgYnkgdGhlIGZpbGUgKnBhdGgqLCB3aXRob3V0IGluY2x1ZGluZyB0aGUKQEAgLTI2Niw4ICsyNDgsNyBAQAogICAgc3RpbGwgcmV0dXJuIGBgTm9uZWBgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiB0aGUKLSAgICAgIGRlcHJlY2F0ZWQgOmZ1bmM6YGdldG1vZHVsZWluZm9gLgorICAgICAgVGhlIGZ1bmN0aW9uIGlzIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAuCiAKIAogLi4gZnVuY3Rpb246OiBpc21vZHVsZShvYmplY3QpCkBAIC02NDYsNiArNjI3LDE2IEBACiAgICAgICBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGFzIGEgc3RyaW5nLiAgVGhlIG5hbWUgbXVzdCBiZSBhIHZhbGlkCiAgICAgICBQeXRob24gaWRlbnRpZmllci4KIAorICAgICAgLi4gaW1wbC1kZXRhaWw6OgorCisgICAgICAgICBDUHl0aG9uIGdlbmVyYXRlcyBpbXBsaWNpdCBwYXJhbWV0ZXIgbmFtZXMgb2YgdGhlIGZvcm0gYGAuMGBgIG9uIHRoZQorICAgICAgICAgY29kZSBvYmplY3RzIHVzZWQgdG8gaW1wbGVtZW50IGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IKKyAgICAgICAgIGV4cHJlc3Npb25zLgorCisgICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgICAgVGhlc2UgcGFyYW1ldGVyIG5hbWVzIGFyZSBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlIGFzIG5hbWVzIGxpa2UKKyAgICAgICAgICAgIGBgaW1wbGljaXQwYGAuCisKICAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZhdWx0CiAKICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdApAQCAtODU0LDggKzg0NSw2IEBACiAgICBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuICAqYW5ub3RhdGlvbnMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50CiAgICBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAotICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gOmZ1bmM6YGdldGFyZ3NwZWNgLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgb24gOmZ1bmM6YHNpZ25hdHVyZWAsIGJ1dCBzdGlsbCBpZ25vcmVzCiAgICAgICBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlcyBhbmQgaW5jbHVkZXMgdGhlIGFscmVhZHkgYm91bmQgZmlyc3QKQEAgLTg4NCw3ICs4NzMsNyBAQAogLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9uc1ssIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlLCBmb3JtYXRyZXR1cm5zLCBmb3JtYXRhbm5vdGF0aW9uc11dKQogCiAgICBGb3JtYXQgYSBwcmV0dHkgYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBnZXRhcmdzcGVjYCBvciA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgLgorICAgOmZ1bmM6YGdldGZ1bGxhcmdzcGVjYC4KIAogICAgVGhlIGZpcnN0IHNldmVuIGFyZ3VtZW50cyBhcmUgKGBgYXJnc2BgLCBgYHZhcmFyZ3NgYCwgYGB2YXJrd2BgLAogICAgYGBkZWZhdWx0c2BgLCBgYGt3b25seWFyZ3NgYCwgYGBrd29ubHlkZWZhdWx0c2BgLCBgYGFubm90YXRpb25zYGApLgpAQCAtMTI2NCwyMCArMTI1MywyOSBAQAogCiAuLiBkYXRhOjogQ09fQ09ST1VUSU5FCiAKLSAgIFRoZSBmbGFnIGlzIHNldCB3aGVuIHRoZSBjb2RlIG9iamVjdCBpcyBhIGNvcm91dGluZSBmdW5jdGlvbiwgaS5lLgotICAgYSBjb3JvdXRpbmUgb2JqZWN0IGlzIHJldHVybmVkIHdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGV4ZWN1dGVkLiAgU2VlCi0gICA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisgICBUaGUgZmxhZyBpcyBzZXQgd2hlbiB0aGUgY29kZSBvYmplY3QgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24uCisgICBXaGVuIHRoZSBjb2RlIG9iamVjdCBpcyBleGVjdXRlZCBpdCByZXR1cm5zIGEgY29yb3V0aW5lIG9iamVjdC4KKyAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAuLiBkYXRhOjogQ09fSVRFUkFCTEVfQ09ST1VUSU5FCiAKLSAgIFVzZWQgdG8gdHVybiBnZW5lcmF0b3JzIGludG8gZ2VuZXJhdG9yLWJhc2VkIGNvcm91dGluZXMuICBHZW5lcmF0b3IKLSAgIG9iamVjdHMgd2l0aCB0aGlzIGZsYWcgY2FuIGJlIHVzZWQgaW4gYGBhd2FpdGBgIGV4cHJlc3Npb24sIGFuZCBjYW4KLSAgIGBgeWllbGQgZnJvbWBgIGNvcm91dGluZSBvYmplY3RzLiAgU2VlIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KKyAgIFRoZSBmbGFnIGlzIHVzZWQgdG8gdHJhbnNmb3JtIGdlbmVyYXRvcnMgaW50byBnZW5lcmF0b3ItYmFzZWQKKyAgIGNvcm91dGluZXMuICBHZW5lcmF0b3Igb2JqZWN0cyB3aXRoIHRoaXMgZmxhZyBjYW4gYmUgdXNlZCBpbgorICAgYGBhd2FpdGBgIGV4cHJlc3Npb24sIGFuZCBjYW4gYGB5aWVsZCBmcm9tYGAgY29yb3V0aW5lIG9iamVjdHMuCisgICBTZWUgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorLi4gZGF0YTo6IENPX0FTWU5DX0dFTkVSQVRPUgorCisgICBUaGUgZmxhZyBpcyBzZXQgd2hlbiB0aGUgY29kZSBvYmplY3QgaXMgYW4gYXN5bmNocm9ub3VzIGdlbmVyYXRvcgorICAgZnVuY3Rpb24uICBXaGVuIHRoZSBjb2RlIG9iamVjdCBpcyBleGVjdXRlZCBpdCByZXR1cm5zIGFuCisgICBhc3luY2hyb25vdXMgZ2VuZXJhdG9yIG9iamVjdC4gIFNlZSA6cGVwOmA1MjVgIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBub3RlOjoKICAgIFRoZSBmbGFncyBhcmUgc3BlY2lmaWMgdG8gQ1B5dGhvbiwgYW5kIG1heSBub3QgYmUgZGVmaW5lZCBpbiBvdGhlcgogICAgUHl0aG9uIGltcGxlbWVudGF0aW9ucy4gIEZ1cnRoZXJtb3JlLCB0aGUgZmxhZ3MgYXJlIGFuIGltcGxlbWVudGF0aW9uCkBAIC0xMjg2LDcgKzEyODQsNiBAQAogICAgZm9yIGFueSBpbnRyb3NwZWN0aW9uIG5lZWRzLgogCiAKLQogLi4gX2luc3BlY3QtbW9kdWxlLWNsaToKIAogQ29tbWFuZCBMaW5lIEludGVyZmFjZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdCBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKaW5kZXggZGZjMWRkYy4uYjBkMGE4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CkBAIC01OTEsNyArNTkxLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogdGVlKGl0ZXJhYmxlLCBuPTIpCiAKLSAgIFJldHVybiAqbiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIGZyb20gYSBzaW5nbGUgaXRlcmFibGUuICBSb3VnaGx5IGVxdWl2YWxlbnQgdG86OgorICAgUmV0dXJuICpuKiBpbmRlcGVuZGVudCBpdGVyYXRvcnMgZnJvbSBhIHNpbmdsZSBpdGVyYWJsZS4KKworICAgVGhlIGZvbGxvd2luZyBQeXRob24gY29kZSBoZWxwcyBleHBsYWluIHdoYXQgKnRlZSogZG9lcyAoYWx0aG91Z2ggdGhlIGFjdHVhbAorICAgaW1wbGVtZW50YXRpb24gaXMgbW9yZSBjb21wbGV4IGFuZCB1c2VzIG9ubHkgYSBzaW5nbGUgdW5kZXJseWluZworICAgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSkuCisKKyAgIFJvdWdobHkgZXF1aXZhbGVudCB0bzo6CiAKICAgICAgICAgZGVmIHRlZShpdGVyYWJsZSwgbj0yKToKICAgICAgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2pzb24ucnN0IGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKaW5kZXggYzFhNTJhNy4uMDMzZTNmYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvanNvbi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKQEAgLTEyNiw3ICsxMjYsNyBAQAogQmFzaWMgVXNhZ2UKIC0tLS0tLS0tLS0tCiAKLS4uIGZ1bmN0aW9uOjogZHVtcChvYmosIGZwLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKKy4uIGZ1bmN0aW9uOjogZHVtcChvYmosIGZwLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9RmFsc2UsICoqa3cpCkBAIC0xODcsOCArMTg3LDExIEBACiAgICA6bWV0aDpgZGVmYXVsdGAgbWV0aG9kIHRvIHNlcmlhbGl6ZSBhZGRpdGlvbmFsIHR5cGVzKSwgc3BlY2lmeSBpdCB3aXRoIHRoZQogICAgKmNscyoga3dhcmc7IG90aGVyd2lzZSA6Y2xhc3M6YEpTT05FbmNvZGVyYCBpcyB1c2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KIAotLi4gZnVuY3Rpb246OiBkdW1wcyhvYmosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAorCisuLiBmdW5jdGlvbjo6IGR1bXBzKG9iaiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPUZhbHNlLCAqKmt3KQpAQCAtMjEyLDcgKzIxNSw3IEBACiAgICAgICB0aGUgb3JpZ2luYWwgb25lLiBUaGF0IGlzLCBgYGxvYWRzKGR1bXBzKHgpKSAhPSB4YGAgaWYgeCBoYXMgbm9uLXN0cmluZwogICAgICAga2V5cy4KIAotLi4gZnVuY3Rpb246OiBsb2FkKGZwLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCisuLiBmdW5jdGlvbjo6IGxvYWQoZnAsICosIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKIAogICAgRGVzZXJpYWxpemUgKmZwKiAoYSBgYC5yZWFkKClgYC1zdXBwb3J0aW5nIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAogICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdCB1c2luZyB0aGlzIDpyZWY6YGNvbnZlcnNpb24KQEAgLTI2MCwxMCArMjYzLDE0IEBACiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQogICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAotLi4gZnVuY3Rpb246OiBsb2FkcyhzLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KIAotICAgRGVzZXJpYWxpemUgKnMqIChhIDpjbGFzczpgc3RyYCBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYQotICAgUHl0aG9uIG9iamVjdCB1c2luZyB0aGlzIDpyZWY6YGNvbnZlcnNpb24gdGFibGUgPGpzb24tdG8tcHktdGFibGU+YC4KKy4uIGZ1bmN0aW9uOjogbG9hZHMocywgKiwgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorCisgICBEZXNlcmlhbGl6ZSAqcyogKGEgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAKKyAgIGluc3RhbmNlIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcworICAgOnJlZjpgY29udmVyc2lvbiB0YWJsZSA8anNvbi10by1weS10YWJsZT5gLgogCiAgICBUaGUgb3RoZXIgYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBpbiA6ZnVuYzpgbG9hZGAsIGV4Y2VwdAogICAgKmVuY29kaW5nKiB3aGljaCBpcyBpZ25vcmVkIGFuZCBkZXByZWNhdGVkLgpAQCAtMjc0LDcgKzI4MSw3IEBACiBFbmNvZGVycyBhbmQgRGVjb2RlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBjbGFzczo6IEpTT05EZWNvZGVyKG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKKy4uIGNsYXNzOjogSlNPTkRlY29kZXIoKiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIHN0cmljdD1UcnVlLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQogCiAgICBTaW1wbGUgSlNPTiBkZWNvZGVyLgogCkBAIC0zNDQsNiArMzUxLDkgQEAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCiAgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKwogICAgLi4gbWV0aG9kOjogZGVjb2RlKHMpCiAKICAgICAgIFJldHVybiB0aGUgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UKQEAgLTM2Miw3ICszNzIsNyBAQAogICAgICAgZXh0cmFuZW91cyBkYXRhIGF0IHRoZSBlbmQuCiAKIAotLi4gY2xhc3M6OiBKU09ORW5jb2Rlcihza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBzb3J0X2tleXM9RmFsc2UsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSkKKy4uIGNsYXNzOjogSlNPTkVuY29kZXIoKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpCiAKICAgIEV4dGVuc2libGUgSlNPTiBlbmNvZGVyIGZvciBQeXRob24gZGF0YSBzdHJ1Y3R1cmVzLgogCkBAIC00NDMsNiArNDUzLDkgQEAKICAgIHRoZSBvYmplY3Qgb3IgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiAgSWYgbm90IHNwZWNpZmllZCwgOmV4YzpgVHlwZUVycm9yYAogICAgaXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKwogCiAgICAuLiBtZXRob2Q6OiBkZWZhdWx0KG8pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKaW5kZXggMGMwMmQzZC4uNmJlMzI3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKQEAgLTg0LDYgKzg0LDkgQEAKICAgIHdpdGggdGhhdCBlbmNvZGluZy4gIElmICpkZWxheSogaXMgdHJ1ZSwgdGhlbiBmaWxlIG9wZW5pbmcgaXMgZGVmZXJyZWQgdW50aWwgdGhlCiAgICBmaXJzdCBjYWxsIHRvIDptZXRoOmBlbWl0YC4gQnkgZGVmYXVsdCwgdGhlIGZpbGUgZ3Jvd3MgaW5kZWZpbml0ZWx5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC0xNjAsMTIgKzE2MywyMyBAQAogICAgd2l0aCB0aGF0IGVuY29kaW5nLiAgSWYgKmRlbGF5KiBpcyB0cnVlLCB0aGVuIGZpbGUgb3BlbmluZyBpcyBkZWZlcnJlZCB1bnRpbCB0aGUKICAgIGZpcnN0IGNhbGwgdG8gOm1ldGg6YGVtaXRgLiAgQnkgZGVmYXVsdCwgdGhlIGZpbGUgZ3Jvd3MgaW5kZWZpbml0ZWx5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KKworICAgLi4gbWV0aG9kOjogcmVvcGVuSWZOZWVkZWQoKQorCisgICAgICBDaGVja3MgdG8gc2VlIGlmIHRoZSBmaWxlIGhhcyBjaGFuZ2VkLiAgSWYgaXQgaGFzLCB0aGUgZXhpc3Rpbmcgc3RyZWFtIGlzCisgICAgICBmbHVzaGVkIGFuZCBjbG9zZWQgYW5kIHRoZSBmaWxlIG9wZW5lZCBhZ2FpbiwgdHlwaWNhbGx5IGFzIGEgcHJlY3Vyc29yIHRvCisgICAgICBvdXRwdXR0aW5nIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCi0gICAgICBPdXRwdXRzIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGJ1dCBmaXJzdCBjaGVja3MgdG8gc2VlIGlmIHRoZSBmaWxlIGhhcwotICAgICAgY2hhbmdlZC4gIElmIGl0IGhhcywgdGhlIGV4aXN0aW5nIHN0cmVhbSBpcyBmbHVzaGVkIGFuZCBjbG9zZWQgYW5kIHRoZQotICAgICAgZmlsZSBvcGVuZWQgYWdhaW4sIGJlZm9yZSBvdXRwdXR0aW5nIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUuCisgICAgICBPdXRwdXRzIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGJ1dCBmaXJzdCBjYWxscyA6bWV0aDpgcmVvcGVuSWZOZWVkZWRgIHRvCisgICAgICByZW9wZW4gdGhlIGZpbGUgaWYgaXQgaGFzIGNoYW5nZWQuCiAKIC4uIF9iYXNlLXJvdGF0aW5nLWhhbmRsZXI6CiAKQEAgLTI3OSw2ICsyOTMsOSBAQAogICAgOmZpbGU6YGFwcC5sb2cuMmAsIGV0Yy4gIGV4aXN0LCB0aGVuIHRoZXkgYXJlIHJlbmFtZWQgdG8gOmZpbGU6YGFwcC5sb2cuMmAsCiAgICA6ZmlsZTpgYXBwLmxvZy4zYCBldGMuICByZXNwZWN0aXZlbHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgogCiAgICAuLiBtZXRob2Q6OiBkb1JvbGxvdmVyKCkKIApAQCAtMzEwLDIxICszMjcsMjQgQEAKICAgIFlvdSBjYW4gdXNlIHRoZSAqd2hlbiogdG8gc3BlY2lmeSB0aGUgdHlwZSBvZiAqaW50ZXJ2YWwqLiBUaGUgbGlzdCBvZiBwb3NzaWJsZQogICAgdmFsdWVzIGlzIGJlbG93LiAgTm90ZSB0aGF0IHRoZXkgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZS4KIAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IFZhbHVlICAgICAgICAgIHwgVHlwZSBvZiBpbnRlcnZhbCAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09KwotICAgfCBgYCdTJ2BgICAgICAgICB8IFNlY29uZHMgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnTSdgYCAgICAgICAgfCBNaW51dGVzICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ0gnYGAgICAgICAgIHwgSG91cnMgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdEJ2BgICAgICAgICB8IERheXMgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnVzAnLSdXNidgYCAgfCBXZWVrZGF5ICgwPU1vbmRheSkgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ21pZG5pZ2h0J2BgIHwgUm9sbCBvdmVyIGF0IG1pZG5pZ2h0IHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBWYWx1ZSAgICAgICAgICB8IFR5cGUgb2YgaW50ZXJ2YWwgICAgICAgICAgIHwgSWYvaG93ICphdFRpbWUqIGlzIHVzZWQgfAorICAgKz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCBgYCdTJ2BgICAgICAgICB8IFNlY29uZHMgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdNJ2BgICAgICAgICB8IE1pbnV0ZXMgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdIJ2BgICAgICAgICB8IEhvdXJzICAgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdEJ2BgICAgICAgICB8IERheXMgICAgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdXMCctJ1c2J2BgICB8IFdlZWtkYXkgKDA9TW9uZGF5KSAgICAgICAgIHwgVXNlZCB0byBjb21wdXRlIGluaXRpYWwgfAorICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcm9sbG92ZXIgdGltZSAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdtaWRuaWdodCdgYCB8IFJvbGwgb3ZlciBhdCBtaWRuaWdodCwgaWYgIHwgVXNlZCB0byBjb21wdXRlIGluaXRpYWwgfAorICAgfCAgICAgICAgICAgICAgICB8ICphdFRpbWUqIG5vdCBzcGVjaWZpZWQsICAgIHwgcm9sbG92ZXIgdGltZSAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICB8IGVsc2UgYXQgdGltZSAqYXRUaW1lKiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBXaGVuIHVzaW5nIHdlZWtkYXktYmFzZWQgcm90YXRpb24sIHNwZWNpZnkgJ1cwJyBmb3IgTW9uZGF5LCAnVzEnIGZvcgogICAgVHVlc2RheSwgYW5kIHNvIG9uIHVwIHRvICdXNicgZm9yIFN1bmRheS4gSW4gdGhpcyBjYXNlLCB0aGUgdmFsdWUgcGFzc2VkIGZvcgpAQCAtMzUyLDE2ICszNzIsMzUgQEAKIAogICAgSWYgKmF0VGltZSogaXMgbm90IGBgTm9uZWBgLCBpdCBtdXN0IGJlIGEgYGBkYXRldGltZS50aW1lYGAgaW5zdGFuY2Ugd2hpY2gKICAgIHNwZWNpZmllcyB0aGUgdGltZSBvZiBkYXkgd2hlbiByb2xsb3ZlciBvY2N1cnMsIGZvciB0aGUgY2FzZXMgd2hlcmUgcm9sbG92ZXIKLSAgIGlzIHNldCB0byBoYXBwZW4gImF0IG1pZG5pZ2h0IiBvciAib24gYSBwYXJ0aWN1bGFyIHdlZWtkYXkiLgorICAgaXMgc2V0IHRvIGhhcHBlbiAiYXQgbWlkbmlnaHQiIG9yICJvbiBhIHBhcnRpY3VsYXIgd2Vla2RheSIuIE5vdGUgdGhhdCBpbgorICAgdGhlc2UgY2FzZXMsIHRoZSAqYXRUaW1lKiB2YWx1ZSBpcyBlZmZlY3RpdmVseSB1c2VkIHRvIGNvbXB1dGUgdGhlICppbml0aWFsKgorICAgcm9sbG92ZXIsIGFuZCBzdWJzZXF1ZW50IHJvbGxvdmVycyB3b3VsZCBiZSBjYWxjdWxhdGVkIHZpYSB0aGUgbm9ybWFsCisgICBpbnRlcnZhbCBjYWxjdWxhdGlvbi4KKworICAgLi4gbm90ZTo6IENhbGN1bGF0aW9uIG9mIHRoZSBpbml0aWFsIHJvbGxvdmVyIHRpbWUgaXMgZG9uZSB3aGVuIHRoZSBoYW5kbGVyCisgICAgICBpcyBpbml0aWFsaXNlZC4gQ2FsY3VsYXRpb24gb2Ygc3Vic2VxdWVudCByb2xsb3ZlciB0aW1lcyBpcyBkb25lIG9ubHkKKyAgICAgIHdoZW4gcm9sbG92ZXIgb2NjdXJzLCBhbmQgcm9sbG92ZXIgb2NjdXJzIG9ubHkgd2hlbiBlbWl0dGluZyBvdXRwdXQuIElmCisgICAgICB0aGlzIGlzIG5vdCBrZXB0IGluIG1pbmQsIGl0IG1pZ2h0IGxlYWQgdG8gc29tZSBjb25mdXNpb24uIEZvciBleGFtcGxlLAorICAgICAgaWYgYW4gaW50ZXJ2YWwgb2YgImV2ZXJ5IG1pbnV0ZSIgaXMgc2V0LCB0aGF0IGRvZXMgbm90IG1lYW4geW91IHdpbGwKKyAgICAgIGFsd2F5cyBzZWUgbG9nIGZpbGVzIHdpdGggdGltZXMgKGluIHRoZSBmaWxlbmFtZSkgc2VwYXJhdGVkIGJ5IGEgbWludXRlOworICAgICAgaWYsIGR1cmluZyBhcHBsaWNhdGlvbiBleGVjdXRpb24sIGxvZ2dpbmcgb3V0cHV0IGlzIGdlbmVyYXRlZCBtb3JlCisgICAgICBmcmVxdWVudGx5IHRoYW4gb25jZSBhIG1pbnV0ZSwgKnRoZW4qIHlvdSBjYW4gZXhwZWN0IHRvIHNlZSBsb2cgZmlsZXMKKyAgICAgIHdpdGggdGltZXMgc2VwYXJhdGVkIGJ5IGEgbWludXRlLiBJZiwgb24gdGhlIG90aGVyIGhhbmQsIGxvZ2dpbmcgbWVzc2FnZXMKKyAgICAgIGFyZSBvbmx5IG91dHB1dCBvbmNlIGV2ZXJ5IGZpdmUgbWludXRlcyAoc2F5KSwgdGhlbiB0aGVyZSB3aWxsIGJlIGdhcHMgaW4KKyAgICAgIHRoZSBmaWxlIHRpbWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1pbnV0ZXMgd2hlcmUgbm8gb3V0cHV0IChhbmQgaGVuY2Ugbm8KKyAgICAgIHJvbGxvdmVyKSBvY2N1cnJlZC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgICphdFRpbWUqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgorCiAgICAuLiBtZXRob2Q6OiBkb1JvbGxvdmVyKCkKIAogICAgICAgRG9lcyBhIHJvbGxvdmVyLCBhcyBkZXNjcmliZWQgYWJvdmUuCiAKLQogICAgLi4gbWV0aG9kOjogZW1pdChyZWNvcmQpCiAKICAgICAgIE91dHB1dHMgdGhlIHJlY29yZCB0byB0aGUgZmlsZSwgY2F0ZXJpbmcgZm9yIHJvbGxvdmVyIGFzIGRlc2NyaWJlZCBhYm92ZS4KQEAgLTc5OCwxMiArODM3LDE4IEBACiAgICAgICBvdmVycmlkZGVuIHRvIGltcGxlbWVudCBjdXN0b20gZmx1c2hpbmcgc3RyYXRlZ2llcy4KIAogCi0uLiBjbGFzczo6IE1lbW9yeUhhbmRsZXIoY2FwYWNpdHksIGZsdXNoTGV2ZWw9RVJST1IsIHRhcmdldD1Ob25lKQorLi4gY2xhc3M6OiBNZW1vcnlIYW5kbGVyKGNhcGFjaXR5LCBmbHVzaExldmVsPUVSUk9SLCB0YXJnZXQ9Tm9uZSwgZmx1c2hPbkNsb3NlPVRydWUpCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgTWVtb3J5SGFuZGxlcmAgY2xhc3MuIFRoZSBpbnN0YW5jZSBpcwogICAgaW5pdGlhbGl6ZWQgd2l0aCBhIGJ1ZmZlciBzaXplIG9mICpjYXBhY2l0eSouIElmICpmbHVzaExldmVsKiBpcyBub3Qgc3BlY2lmaWVkLAogICAgOmNvbnN0OmBFUlJPUmAgaXMgdXNlZC4gSWYgbm8gKnRhcmdldCogaXMgc3BlY2lmaWVkLCB0aGUgdGFyZ2V0IHdpbGwgbmVlZCB0byBiZQotICAgc2V0IHVzaW5nIDptZXRoOmBzZXRUYXJnZXRgIGJlZm9yZSB0aGlzIGhhbmRsZXIgZG9lcyBhbnl0aGluZyB1c2VmdWwuCisgICBzZXQgdXNpbmcgOm1ldGg6YHNldFRhcmdldGAgYmVmb3JlIHRoaXMgaGFuZGxlciBkb2VzIGFueXRoaW5nIHVzZWZ1bC4gSWYKKyAgICpmbHVzaE9uQ2xvc2UqIGlzIHNwZWNpZmllZCBhcyBgYEZhbHNlYGAsIHRoZW4gdGhlIGJ1ZmZlciBpcyAqbm90KiBmbHVzaGVkIHdoZW4KKyAgIHRoZSBoYW5kbGVyIGlzIGNsb3NlZC4gSWYgbm90IHNwZWNpZmllZCBvciBzcGVjaWZpZWQgYXMgYGBUcnVlYGAsIHRoZSBwcmV2aW91cworICAgYmVoYXZpb3VyIG9mIGZsdXNoaW5nIHRoZSBidWZmZXIgd2lsbCBvY2N1ciB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSAqZmx1c2hPbkNsb3NlKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2x6bWEucnN0IGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKaW5kZXggNjFiM2JhMy4uNWVkYjIzZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbHptYS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTM5LDggKzM5LDkgQEAKICAgIG9iamVjdGAuCiAKICAgIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYQotICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMKLSAgIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKyAgIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2Agb3IgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIG9iamVjdCksIGluCisgICB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0CisgICB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCiAKICAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCJyImBgLCBgYCJyYiJgYCwgYGAidyJgYCwgYGAid2IiYGAsCiAgICBgYCJ4ImBgLCBgYCJ4YiJgYCwgYGAiYSJgYCBvciBgYCJhYiJgYCBmb3IgYmluYXJ5IG1vZGUsIG9yIGBgInJ0ImBgLApAQCAtNjQsNiArNjUsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCJ4ImBgLCBgYCJ4YiJgYCBhbmQgYGAieHQiYGAgbW9kZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogTFpNQUZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT0iciIsIFwqLCBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpCiAKQEAgLTcxLDkgKzc1LDEwIEBACiAKICAgIEFuIDpjbGFzczpgTFpNQUZpbGVgIGNhbiB3cmFwIGFuIGFscmVhZHktb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBvcGVyYXRlCiAgICBkaXJlY3RseSBvbiBhIG5hbWVkIGZpbGUuIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IHNwZWNpZmllcyBlaXRoZXIgdGhlIGZpbGUKLSAgIG9iamVjdCB0byB3cmFwLCBvciB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBvcGVuIChhcyBhIDpjbGFzczpgc3RyYCBvcgotICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0KS4gV2hlbiB3cmFwcGluZyBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgdGhlIHdyYXBwZWQKLSAgIGZpbGUgd2lsbCBub3QgYmUgY2xvc2VkIHdoZW4gdGhlIDpjbGFzczpgTFpNQUZpbGVgIGlzIGNsb3NlZC4KKyAgIG9iamVjdCB0byB3cmFwLCBvciB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBvcGVuIChhcyBhIDpjbGFzczpgc3RyYCwKKyAgIDpjbGFzczpgYnl0ZXNgIG9yIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBvYmplY3QpLiBXaGVuIHdyYXBwaW5nIGFuCisgICBleGlzdGluZyBmaWxlIG9iamVjdCwgdGhlIHdyYXBwZWQgZmlsZSB3aWxsIG5vdCBiZSBjbG9zZWQgd2hlbiB0aGUKKyAgIDpjbGFzczpgTFpNQUZpbGVgIGlzIGNsb3NlZC4KIAogICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGBgInIiYGAgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCBgYCJ3ImBgIGZvcgogICAgb3ZlcndyaXRpbmcsIGBgIngiYGAgZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiwgb3IgYGAiYSJgYCBmb3IgYXBwZW5kaW5nLiBUaGVzZQpAQCAtMTE4LDYgKzEyMyw5IEBACiAgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKICAgICAgIGBgTm9uZWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBDb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZyBkYXRhIGluIG1lbW9yeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21hdGgucnN0IGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKaW5kZXggM2ZkZWExOC4uZGEyYjhjYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKQEAgLTQyNiw2ICs0MjYsMTUgQEAKIAogICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCBlID0gMi43MTgyODEuLi4sIHRvIGF2YWlsYWJsZSBwcmVjaXNpb24uCiAKKy4uIGRhdGE6OiB0YXUKKworICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCDPhCA9IDYuMjgzMTg1Li4uLCB0byBhdmFpbGFibGUgcHJlY2lzaW9uLgorICAgVGF1IGlzIGEgY2lyY2xlIGNvbnN0YW50IGVxdWFsIHRvIDLPgCwgdGhlIHJhdGlvIG9mIGEgY2lyY2xlJ3MgY2lyY3VtZmVyZW5jZSB0bworICAgaXRzIHJhZGl1cy4gVG8gbGVhcm4gbW9yZSBhYm91dCBUYXUsIGNoZWNrIG91dCBWaSBIYXJ0J3MgdmlkZW8gYFBpIGlzIChzdGlsbCkKKyAgIFdyb25nIDxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWpHN3ZoTU1YYWdRPmBfLCBhbmQgc3RhcnQgY2VsZWJyYXRpbmcKKyAgIGBUYXUgZGF5IDxodHRwOi8vdGF1ZGF5LmNvbS8+YF8gYnkgZWF0aW5nIHR3aWNlIGFzIG11Y2ggcGllIQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZGF0YTo6IGluZgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tbWFwLnJzdCBiL0RvYy9saWJyYXJ5L21tYXAucnN0CmluZGV4IGY0YTZmNTMuLjZlNmUyOTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21tYXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L21tYXAucnN0CkBAIC0yNjQsMTMgKzI2NCwxOCBAQAogICAgLi4gbWV0aG9kOjogd3JpdGUoYnl0ZXMpCiAKICAgICAgIFdyaXRlIHRoZSBieXRlcyBpbiAqYnl0ZXMqIGludG8gbWVtb3J5IGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZQotICAgICAgZmlsZSBwb2ludGVyOyB0aGUgZmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IGFmdGVyIHRoZSBieXRlcyB0aGF0Ci0gICAgICB3ZXJlIHdyaXR0ZW4uIElmIHRoZSBtbWFwIHdhcyBjcmVhdGVkIHdpdGggOmNvbnN0OmBBQ0NFU1NfUkVBRGAsIHRoZW4KKyAgICAgIGZpbGUgcG9pbnRlciBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuCisgICAgICBgYGxlbihieXRlcylgYCwgc2luY2UgaWYgdGhlIHdyaXRlIGZhaWxzLCBhIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUKKyAgICAgIHJhaXNlZCkuICBUaGUgZmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IGFmdGVyIHRoZSBieXRlcyB0aGF0CisgICAgICB3ZXJlIHdyaXR0ZW4uICBJZiB0aGUgbW1hcCB3YXMgY3JlYXRlZCB3aXRoIDpjb25zdDpgQUNDRVNTX1JFQURgLCB0aGVuCiAgICAgICB3cml0aW5nIHRvIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGlzIG5vdyByZXR1cm5lZC4KKwogCiAgICAuLiBtZXRob2Q6OiB3cml0ZV9ieXRlKGJ5dGUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CmluZGV4IGQ0NWJjMjAuLjk2ZDE0MjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdApAQCAtNjUwLDggKzY1MCw5IEBACiBGb3IgcGFzc2luZyBtZXNzYWdlcyBvbmUgY2FuIHVzZSA6ZnVuYzpgUGlwZWAgKGZvciBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0d28KIHByb2Nlc3Nlcykgb3IgYSBxdWV1ZSAod2hpY2ggYWxsb3dzIG11bHRpcGxlIHByb2R1Y2VycyBhbmQgY29uc3VtZXJzKS4KIAotVGhlIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcyBhcmUgbXVsdGktcHJvZHVjZXIsCi1tdWx0aS1jb25zdW1lciBGSUZPIHF1ZXVlcyBtb2RlbGxlZCBvbiB0aGUgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MgaW4gdGhlCitUaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzCithcmUgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAKK3F1ZXVlcyBtb2RlbGxlZCBvbiB0aGUgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MgaW4gdGhlCiBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhleSBkaWZmZXIgaW4gdGhhdCA6Y2xhc3M6YFF1ZXVlYCBsYWNrcyB0aGUKIDptZXRoOmB+cXVldWUuUXVldWUudGFza19kb25lYCBhbmQgOm1ldGg6YH5xdWV1ZS5RdWV1ZS5qb2luYCBtZXRob2RzIGludHJvZHVjZWQKIGludG8gUHl0aG9uIDIuNSdzIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzLgpAQCAtODg5LDggKzg5MCwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IGNwdV9jb3VudCgpCiAKLSAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gIE1heSByYWlzZQotICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0uCisKKyAgIFRoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgorICAgdXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorICAgYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKKworICAgTWF5IHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgogCiAgICAuLiBzZWVhbHNvOjoKICAgICAgIDpmdW5jOmBvcy5jcHVfY291bnRgCkBAIC0xNjc5LDcgKzE2ODUsOSBAQAogICAgb2YgcHJvY2Vzc2VzLiAgT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHJldHVybmVkIGJ5CiAgICA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLk1hbmFnZXJgLgogCi0gICBJdCBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgorICAgSXRzIG1ldGhvZHMgY3JlYXRlIGFuZCByZXR1cm4gOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgIGZvciBhCisgICBudW1iZXIgb2YgY29tbW9ubHkgdXNlZCBkYXRhIHR5cGVzIHRvIGJlIHN5bmNocm9uaXplZCBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgVGhpcyBub3RhYmx5IGluY2x1ZGVzIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgogCiAgICAuLiBtZXRob2Q6OiBCYXJyaWVyKHBhcnRpZXNbLCBhY3Rpb25bLCB0aW1lb3V0XV0pCiAKQEAgLTE3NDIsMzEgKzE3NTAsMTcgQEAKICAgICAgICAgICAgICAgIGRpY3QobWFwcGluZykKICAgICAgICAgICAgICAgIGRpY3Qoc2VxdWVuY2UpCiAKLSAgICAgIENyZWF0ZSBhIHNoYXJlZCBgYGRpY3RgYCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YGRpY3RgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgogCiAgICAuLiBtZXRob2Q6OiBsaXN0KCkKICAgICAgICAgICAgICAgIGxpc3Qoc2VxdWVuY2UpCiAKLSAgICAgIENyZWF0ZSBhIHNoYXJlZCBgYGxpc3RgYCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YGxpc3RgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgogCi0gICAuLiBub3RlOjoKLQotICAgICAgTW9kaWZpY2F0aW9ucyB0byBtdXRhYmxlIHZhbHVlcyBvciBpdGVtcyBpbiBkaWN0IGFuZCBsaXN0IHByb3hpZXMgd2lsbCBub3QKLSAgICAgIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCB0aGUgbWFuYWdlciwgYmVjYXVzZSB0aGUgcHJveHkgaGFzIG5vIHdheSBvZiBrbm93aW5nCi0gICAgICB3aGVuIGl0cyB2YWx1ZXMgb3IgaXRlbXMgYXJlIG1vZGlmaWVkLiAgVG8gbW9kaWZ5IHN1Y2ggYW4gaXRlbSwgeW91IGNhbgotICAgICAgcmUtYXNzaWduIHRoZSBtb2RpZmllZCBvYmplY3QgdG8gdGhlIGNvbnRhaW5lciBwcm94eTo6Ci0KLSAgICAgICAgICMgY3JlYXRlIGEgbGlzdCBwcm94eSBhbmQgYXBwZW5kIGEgbXV0YWJsZSBvYmplY3QgKGEgZGljdGlvbmFyeSkKLSAgICAgICAgIGxwcm94eSA9IG1hbmFnZXIubGlzdCgpCi0gICAgICAgICBscHJveHkuYXBwZW5kKHt9KQotICAgICAgICAgIyBub3cgbXV0YXRlIHRoZSBkaWN0aW9uYXJ5Ci0gICAgICAgICBkID0gbHByb3h5WzBdCi0gICAgICAgICBkWydhJ10gPSAxCi0gICAgICAgICBkWydiJ10gPSAyCi0gICAgICAgICAjIGF0IHRoaXMgcG9pbnQsIHRoZSBjaGFuZ2VzIHRvIGQgYXJlIG5vdCB5ZXQgc3luY2VkLCBidXQgYnkKLSAgICAgICAgICMgcmVhc3NpZ25pbmcgdGhlIGRpY3Rpb25hcnksIHRoZSBwcm94eSBpcyBub3RpZmllZCBvZiB0aGUgY2hhbmdlCi0gICAgICAgICBscHJveHlbMF0gPSBkCi0KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTaGFyZWQgb2JqZWN0cyBhcmUgY2FwYWJsZSBvZiBiZWluZyBuZXN0ZWQuICBGb3IgZXhhbXBsZSwgYSBzaGFyZWQKKyAgICAgIGNvbnRhaW5lciBvYmplY3Qgc3VjaCBhcyBhIHNoYXJlZCBsaXN0IGNhbiBjb250YWluIG90aGVyIHNoYXJlZCBvYmplY3RzCisgICAgICB3aGljaCB3aWxsIGFsbCBiZSBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIDpjbGFzczpgU3luY01hbmFnZXJgLgogCiAuLiBjbGFzczo6IE5hbWVzcGFjZQogCkBAIC0xODc4LDYgKzE4NzIsOCBAQAogICAgID4+PiBzID0gbS5nZXRfc2VydmVyKCkKICAgICA+Pj4gcy5zZXJ2ZV9mb3JldmVyKCkKIAorLi4gX211bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzOgorCiBQcm94eSBPYmplY3RzCiB+fn5+fn5+fn5+fn5+CiAKQEAgLTE4ODcsOCArMTg4Myw3IEBACiAKIEEgcHJveHkgb2JqZWN0IGhhcyBtZXRob2RzIHdoaWNoIGludm9rZSBjb3JyZXNwb25kaW5nIG1ldGhvZHMgb2YgaXRzIHJlZmVyZW50CiAoYWx0aG91Z2ggbm90IGV2ZXJ5IG1ldGhvZCBvZiB0aGUgcmVmZXJlbnQgd2lsbCBuZWNlc3NhcmlseSBiZSBhdmFpbGFibGUgdGhyb3VnaAotdGhlIHByb3h5KS4gIEEgcHJveHkgY2FuIHVzdWFsbHkgYmUgdXNlZCBpbiBtb3N0IG9mIHRoZSBzYW1lIHdheXMgdGhhdCBpdHMKLXJlZmVyZW50IGNhbjoKK3RoZSBwcm94eSkuICBJbiB0aGlzIHdheSwgYSBwcm94eSBjYW4gYmUgdXNlZCBqdXN0IGxpa2UgaXRzIHJlZmVyZW50IGNhbjoKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE5MDksOSArMTkwNCw5IEBACiB0aGUgcHJveHkuCiAKIEFuIGltcG9ydGFudCBmZWF0dXJlIG9mIHByb3h5IG9iamVjdHMgaXMgdGhhdCB0aGV5IGFyZSBwaWNrbGFibGUgc28gdGhleSBjYW4gYmUKLXBhc3NlZCBiZXR3ZWVuIHByb2Nlc3Nlcy4gIE5vdGUsIGhvd2V2ZXIsIHRoYXQgaWYgYSBwcm94eSBpcyBzZW50IHRvIHRoZQotY29ycmVzcG9uZGluZyBtYW5hZ2VyJ3MgcHJvY2VzcyB0aGVuIHVucGlja2xpbmcgaXQgd2lsbCBwcm9kdWNlIHRoZSByZWZlcmVudAotaXRzZWxmLiAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQgb25lIHNoYXJlZCBvYmplY3QgY2FuIGNvbnRhaW4gYSBzZWNvbmQ6CitwYXNzZWQgYmV0d2VlbiBwcm9jZXNzZXMuICBBcyBzdWNoLCBhIHJlZmVyZW50IGNhbiBjb250YWluCis6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2AuICBUaGlzIHBlcm1pdHMgbmVzdGluZyBvZiB0aGVzZSBtYW5hZ2VkCitsaXN0cywgZGljdHMsIGFuZCBvdGhlciA6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2A6CiAKIC4uIGRvY3Rlc3Q6OgogCkBAIC0xOTE5LDEwICsxOTE0LDQ2IEBACiAgICA+Pj4gYiA9IG1hbmFnZXIubGlzdCgpCiAgICA+Pj4gYS5hcHBlbmQoYikgICAgICAgICAjIHJlZmVyZW50IG9mIGEgbm93IGNvbnRhaW5zIHJlZmVyZW50IG9mIGIKICAgID4+PiBwcmludChhLCBiKQotICAgW1tdXSBbXQorICAgWzxMaXN0UHJveHkgb2JqZWN0LCB0eXBlaWQgJ2xpc3QnIGF0IC4uLj5dIFtdCiAgICA+Pj4gYi5hcHBlbmQoJ2hlbGxvJykKLSAgID4+PiBwcmludChhLCBiKQotICAgW1snaGVsbG8nXV0gWydoZWxsbyddCisgICA+Pj4gcHJpbnQoYVswXSwgYikKKyAgIFsnaGVsbG8nXSBbJ2hlbGxvJ10KKworU2ltaWxhcmx5LCBkaWN0IGFuZCBsaXN0IHByb3hpZXMgbWF5IGJlIG5lc3RlZCBpbnNpZGUgb25lIGFub3RoZXI6OgorCisgICA+Pj4gbF9vdXRlciA9IG1hbmFnZXIubGlzdChbIG1hbmFnZXIuZGljdCgpIGZvciBpIGluIHJhbmdlKDIpIF0pCisgICA+Pj4gZF9maXJzdF9pbm5lciA9IGxfb3V0ZXJbMF0KKyAgID4+PiBkX2ZpcnN0X2lubmVyWydhJ10gPSAxCisgICA+Pj4gZF9maXJzdF9pbm5lclsnYiddID0gMgorICAgPj4+IGxfb3V0ZXJbMV1bJ2MnXSA9IDMKKyAgID4+PiBsX291dGVyWzFdWyd6J10gPSAyNgorICAgPj4+IHByaW50KGxfb3V0ZXJbMF0pCisgICB7J2EnOiAxLCAnYic6IDJ9CisgICA+Pj4gcHJpbnQobF9vdXRlclsxXSkKKyAgIHsnYyc6IDMsICd6JzogMjZ9CisKK0lmIHN0YW5kYXJkIChub24tcHJveHkpIDpjbGFzczpgbGlzdGAgb3IgOmNsYXNzOmBkaWN0YCBvYmplY3RzIGFyZSBjb250YWluZWQKK2luIGEgcmVmZXJlbnQsIG1vZGlmaWNhdGlvbnMgdG8gdGhvc2UgbXV0YWJsZSB2YWx1ZXMgd2lsbCBub3QgYmUgcHJvcGFnYXRlZAordGhyb3VnaCB0aGUgbWFuYWdlciBiZWNhdXNlIHRoZSBwcm94eSBoYXMgbm8gd2F5IG9mIGtub3dpbmcgd2hlbiB0aGUgdmFsdWVzCitjb250YWluZWQgd2l0aGluIGFyZSBtb2RpZmllZC4gIEhvd2V2ZXIsIHN0b3JpbmcgYSB2YWx1ZSBpbiBhIGNvbnRhaW5lciBwcm94eQorKHdoaWNoIHRyaWdnZXJzIGEgYGBfX3NldGl0ZW1fX2BgIG9uIHRoZSBwcm94eSBvYmplY3QpIGRvZXMgcHJvcGFnYXRlIHRocm91Z2gKK3RoZSBtYW5hZ2VyIGFuZCBzbyB0byBlZmZlY3RpdmVseSBtb2RpZnkgc3VjaCBhbiBpdGVtLCBvbmUgY291bGQgcmUtYXNzaWduIHRoZQorbW9kaWZpZWQgdmFsdWUgdG8gdGhlIGNvbnRhaW5lciBwcm94eTo6CisKKyAgICMgY3JlYXRlIGEgbGlzdCBwcm94eSBhbmQgYXBwZW5kIGEgbXV0YWJsZSBvYmplY3QgKGEgZGljdGlvbmFyeSkKKyAgIGxwcm94eSA9IG1hbmFnZXIubGlzdCgpCisgICBscHJveHkuYXBwZW5kKHt9KQorICAgIyBub3cgbXV0YXRlIHRoZSBkaWN0aW9uYXJ5CisgICBkID0gbHByb3h5WzBdCisgICBkWydhJ10gPSAxCisgICBkWydiJ10gPSAyCisgICAjIGF0IHRoaXMgcG9pbnQsIHRoZSBjaGFuZ2VzIHRvIGQgYXJlIG5vdCB5ZXQgc3luY2VkLCBidXQgYnkKKyAgICMgdXBkYXRpbmcgdGhlIGRpY3Rpb25hcnksIHRoZSBwcm94eSBpcyBub3RpZmllZCBvZiB0aGUgY2hhbmdlCisgICBscHJveHlbMF0gPSBkCisKK1RoaXMgYXBwcm9hY2ggaXMgcGVyaGFwcyBsZXNzIGNvbnZlbmllbnQgdGhhbiBlbXBsb3lpbmcgbmVzdGVkCis6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2AgZm9yIG1vc3QgdXNlIGNhc2VzIGJ1dCBhbHNvCitkZW1vbnN0cmF0ZXMgYSBsZXZlbCBvZiBjb250cm9sIG92ZXIgdGhlIHN5bmNocm9uaXphdGlvbi4KIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggYmYwZGZhYy4uNDA2MDU0ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTYxLDYgKzYxLDkgQEAKICAgIHBsYXRmb3JtcywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIDpmdW5jOmBub3JtcGF0aGAgYXMKICAgIGZvbGxvd3M6IGBgbm9ybXBhdGgoam9pbihvcy5nZXRjd2QoKSwgcGF0aCkpYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogYmFzZW5hbWUocGF0aCkKIApAQCAtNzEsNiArNzQsOSBAQAogICAgYGAnL2Zvby9iYXIvJ2BgIHJldHVybnMgYGAnYmFyJ2BgLCB0aGUgOmZ1bmM6YGJhc2VuYW1lYCBmdW5jdGlvbiByZXR1cm5zIGFuCiAgICBlbXB0eSBzdHJpbmcgKGBgJydgYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tbW9ucGF0aChwYXRocykKIApAQCAtODMsNiArODksOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSBzZXF1ZW5jZSBvZiA6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbW1vbnByZWZpeChsaXN0KQogCkBAIC0xMDQsMTIgKzExMywxOCBAQAogICAgICAgICA+Pj4gb3MucGF0aC5jb21tb25wYXRoKFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInXSkKICAgICAgICAgJy91c3InCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZGlybmFtZShwYXRoKQogCiAgICBSZXR1cm4gdGhlIGRpcmVjdG9yeSBuYW1lIG9mIHBhdGhuYW1lICpwYXRoKi4gIFRoaXMgaXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YKICAgIHRoZSBwYWlyIHJldHVybmVkIGJ5IHBhc3NpbmcgKnBhdGgqIHRvIHRoZSBmdW5jdGlvbiA6ZnVuYzpgc3BsaXRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGV4aXN0cyhwYXRoKQogCkBAIC0xMjMsNiArMTM4LDkgQEAKICAgICAgICpwYXRoKiBjYW4gbm93IGJlIGFuIGludGVnZXI6IGBgVHJ1ZWBgIGlzIHJldHVybmVkIGlmIGl0IGlzIGFuCiAgICAgICAgb3BlbiBmaWxlIGRlc2NyaXB0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGV4aXN0cyhwYXRoKQogCkBAIC0xMzAsNiArMTQ4LDkgQEAKICAgIGJyb2tlbiBzeW1ib2xpYyBsaW5rcy4gICBFcXVpdmFsZW50IHRvIDpmdW5jOmBleGlzdHNgIG9uIHBsYXRmb3JtcyBsYWNraW5nCiAgICA6ZnVuYzpgb3MubHN0YXRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGV4cGFuZHVzZXIocGF0aCkKIApAQCAtMTUxLDYgKzE3Miw5IEBACiAgICBJZiB0aGUgZXhwYW5zaW9uIGZhaWxzIG9yIGlmIHRoZSBwYXRoIGRvZXMgbm90IGJlZ2luIHdpdGggYSB0aWxkZSwgdGhlIHBhdGggaXMKICAgIHJldHVybmVkIHVuY2hhbmdlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleHBhbmR2YXJzKHBhdGgpCiAKQEAgLTE2Miw2ICsxODYsOSBAQAogICAgT24gV2luZG93cywgYGAlbmFtZSVgYCBleHBhbnNpb25zIGFyZSBzdXBwb3J0ZWQgaW4gYWRkaXRpb24gdG8gYGAkbmFtZWBgIGFuZAogICAgYGAke25hbWV9YGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YXRpbWUocGF0aCkKIApAQCAtMTgyLDYgKzIwOSw5IEBACiAgICBJZiA6ZnVuYzpgb3Muc3RhdF9mbG9hdF90aW1lc2AgcmV0dXJucyBgYFRydWVgYCwgdGhlIHJlc3VsdCBpcyBhIGZsb2F0aW5nIHBvaW50CiAgICBudW1iZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0Y3RpbWUocGF0aCkKIApAQCAtMTkxLDEyICsyMjEsMTggQEAKICAgIHRoZSAgOm1vZDpgdGltZWAgbW9kdWxlKS4gIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yCiAgICBpcyBpbmFjY2Vzc2libGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0c2l6ZShwYXRoKQogCiAgICBSZXR1cm4gdGhlIHNpemUsIGluIGJ5dGVzLCBvZiAqcGF0aCouICBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgZmlsZSBkb2VzCiAgICBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzYWJzKHBhdGgpCiAKQEAgLTIwNCwyNCArMjQwLDM2IEBACiAgICBiZWdpbnMgd2l0aCBhIHNsYXNoLCBvbiBXaW5kb3dzIHRoYXQgaXQgYmVnaW5zIHdpdGggYSAoYmFjaylzbGFzaCBhZnRlciBjaG9wcGluZwogICAgb2ZmIGEgcG90ZW50aWFsIGRyaXZlIGxldHRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2ZpbGUocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiBpcyBhbiBleGlzdGluZyByZWd1bGFyIGZpbGUuICBUaGlzIGZvbGxvd3Mgc3ltYm9saWMKICAgIGxpbmtzLCBzbyBib3RoIDpmdW5jOmBpc2xpbmtgIGFuZCA6ZnVuYzpgaXNmaWxlYCBjYW4gYmUgdHJ1ZSBmb3IgdGhlIHNhbWUgcGF0aC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2RpcihwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIGlzIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gIFRoaXMgZm9sbG93cyBzeW1ib2xpYwogICAgbGlua3MsIHNvIGJvdGggOmZ1bmM6YGlzbGlua2AgYW5kIDpmdW5jOmBpc2RpcmAgY2FuIGJlIHRydWUgZm9yIHRoZSBzYW1lIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNsaW5rKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogcmVmZXJzIHRvIGEgZGlyZWN0b3J5IGVudHJ5IHRoYXQgaXMgYSBzeW1ib2xpYyBsaW5rLgogICAgQWx3YXlzIGBgRmFsc2VgYCBpZiBzeW1ib2xpYyBsaW5rcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgUHl0aG9uIHJ1bnRpbWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNtb3VudChwYXRoKQogCkBAIC0yMzcsNiArMjg1LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogICAgICAgU3VwcG9ydCBmb3IgZGV0ZWN0aW5nIG5vbi1yb290IG1vdW50IHBvaW50cyBvbiBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGpvaW4ocGF0aCwgKnBhdGhzKQogCkBAIC0yNTUsMTMgKzMwNiwyMCBAQAogICAgYGBvcy5wYXRoLmpvaW4oImM6IiwgImZvbyIpYGAgcmVwcmVzZW50cyBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKICAgIGRpcmVjdG9yeSBvbiBkcml2ZSA6ZmlsZTpgQzpgICg6ZmlsZTpgYzpmb29gKSwgbm90IDpmaWxlOmBjOlxcZm9vYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKnBhdGhzKi4KKwogCiAuLiBmdW5jdGlvbjo6IG5vcm1jYXNlKHBhdGgpCiAKICAgIE5vcm1hbGl6ZSB0aGUgY2FzZSBvZiBhIHBhdGhuYW1lLiAgT24gVW5peCBhbmQgTWFjIE9TIFgsIHRoaXMgcmV0dXJucyB0aGUKICAgIHBhdGggdW5jaGFuZ2VkOyBvbiBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLCBpdCBjb252ZXJ0cyB0aGUgcGF0aCB0bwogICAgbG93ZXJjYXNlLiAgT24gV2luZG93cywgaXQgYWxzbyBjb252ZXJ0cyBmb3J3YXJkIHNsYXNoZXMgdG8gYmFja3dhcmQgc2xhc2hlcy4KLSAgIFJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZSB0eXBlIG9mICpwYXRoKiBpcyBub3QgYGBzdHJgYCBvciBgYGJ5dGVzYGAuCisgICBSYWlzZSBhIFR5cGVFcnJvciBpZiB0aGUgdHlwZSBvZiAqcGF0aCogaXMgbm90IGBgc3RyYGAgb3IgYGBieXRlc2BgIChkaXJlY3RseQorICAgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogCiAuLiBmdW5jdGlvbjo6IG5vcm1wYXRoKHBhdGgpCkBAIC0yNzIsMTIgKzMzMCwxOCBAQAogICAgdGhhdCBjb250YWlucyBzeW1ib2xpYyBsaW5rcy4gIE9uIFdpbmRvd3MsIGl0IGNvbnZlcnRzIGZvcndhcmQgc2xhc2hlcyB0bwogICAgYmFja3dhcmQgc2xhc2hlcy4gVG8gbm9ybWFsaXplIGNhc2UsIHVzZSA6ZnVuYzpgbm9ybWNhc2VgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlYWxwYXRoKHBhdGgpCiAKICAgIFJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55IHN5bWJvbGljCiAgICBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aCAoaWYgdGhleSBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZWxwYXRoKHBhdGgsIHN0YXJ0PW9zLmN1cmRpcikKIApAQCAtMjkwLDYgKzM1NCw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzYW1lZmlsZShwYXRoMSwgcGF0aDIpCiAKQEAgLTMwNSw2ICszNzIsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFdpbmRvd3Mgbm93IHVzZXMgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gYXMgYWxsIG90aGVyIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzYW1lb3BlbmZpbGUoZnAxLCBmcDIpCiAKQEAgLTMxNSw2ICszODUsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzYW1lc3RhdChzdGF0MSwgc3RhdDIpCiAKQEAgLTMyOCw2ICs0MDEsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdChwYXRoKQogCkBAIC0zNDEsNiArNDE3LDkgQEAKICAgIChidXQgdGhlIHN0cmluZ3MgbWF5IGRpZmZlcikuICBBbHNvIHNlZSB0aGUgZnVuY3Rpb25zIDpmdW5jOmBkaXJuYW1lYCBhbmQKICAgIDpmdW5jOmBiYXNlbmFtZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXRkcml2ZShwYXRoKQogCkBAIC0zNTksNiArNDM4LDkgQEAKICAgIGFuZCBzaGFyZSwgdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcgdGhlIGZvdXJ0aCBzZXBhcmF0b3IuCiAgICBlLmcuIGBgc3BsaXRkcml2ZSgiLy9ob3N0L2NvbXB1dGVyL2RpciIpYGAgcmV0dXJucyBgYCgiLy9ob3N0L2NvbXB1dGVyIiwgIi9kaXIiKWBgCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXRleHQocGF0aCkKIApAQCAtMzY3LDYgKzQ0OSw5IEBACiAgICBwZXJpb2QuIExlYWRpbmcgcGVyaW9kcyBvbiB0aGUgYmFzZW5hbWUgYXJlICBpZ25vcmVkOyBgYHNwbGl0ZXh0KCcuY3NocmMnKWBgCiAgICByZXR1cm5zICBgYCgnLmNzaHJjJywgJycpYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXR1bmMocGF0aCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucnN0IGIvRG9jL2xpYnJhcnkvb3MucnN0CmluZGV4IDVhNjdmOTMuLjMyNjBjZGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5yc3QKQEAgLTU3LDcgKzU3LDcgQEAKIAogICAgVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50IG1vZHVsZSBpbXBvcnRlZC4gIFRoZSBmb2xsb3dpbmcKICAgIG5hbWVzIGhhdmUgY3VycmVudGx5IGJlZW4gcmVnaXN0ZXJlZDogYGAncG9zaXgnYGAsIGBgJ250J2BgLAotICAgYGAnY2UnYGAsIGBgJ2phdmEnYGAuCisgICBgYCdqYXZhJ2BgLgogCiAgICAuLiBzZWVhbHNvOjoKICAgICAgIDphdHRyOmBzeXMucGxhdGZvcm1gIGhhcyBhIGZpbmVyIGdyYW51bGFyaXR5LiAgOmZ1bmM6YG9zLnVuYW1lYCBnaXZlcwpAQCAtMTcxLDIzICsxNzEsNjAgQEAKIAogLi4gZnVuY3Rpb246OiBmc2VuY29kZShmaWxlbmFtZSkKIAotICAgRW5jb2RlICpmaWxlbmFtZSogdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAKLSAgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBieXRlc2AgdW5jaGFuZ2VkLgorICAgRW5jb2RlIDp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCAqZmlsZW5hbWUqIHRvIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24KKyAgIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YGJ5dGVzYCB1bmNoYW5nZWQuCiAKICAgIDpmdW5jOmBmc2RlY29kZWAgaXMgdGhlIHJldmVyc2UgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgCisgICAgICBpbnRlcmZhY2UuCisKIAogLi4gZnVuY3Rpb246OiBmc2RlY29kZShmaWxlbmFtZSkKIAotICAgRGVjb2RlICpmaWxlbmFtZSogZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYAotICAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YHN0cmAgdW5jaGFuZ2VkLgorICAgRGVjb2RlIHRoZSA6dGVybTpgcGF0aC1saWtlIDxwYXRoLWxpa2Ugb2JqZWN0PmAgKmZpbGVuYW1lKiBmcm9tIHRoZQorICAgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAKKyAgIG9uIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YHN0cmAgdW5jaGFuZ2VkLgogCiAgICA6ZnVuYzpgZnNlbmNvZGVgIGlzIHRoZSByZXZlcnNlIGZ1bmN0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYAorICAgICAgaW50ZXJmYWNlLgorCisKKy4uIGZ1bmN0aW9uOjogZnNwYXRoKHBhdGgpCisKKyAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdGguCisKKyAgIElmIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBpcyBwYXNzZWQgaW4sIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKyAgIE90aGVyd2lzZSA6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIGlzIGNhbGxlZCBhbmQgaXRzIHZhbHVlIGlzCisgICByZXR1cm5lZCBhcyBsb25nIGFzIGl0IGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKyAgIEluIGFsbCBvdGhlciBjYXNlcywgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIGNsYXNzOjogUGF0aExpa2UKKworICAgQW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvciBvYmplY3RzIHJlcHJlc2VudGluZyBhIGZpbGUgc3lzdGVtIHBhdGgsCisgICBlLmcuIDpjbGFzczpgcGF0aGxpYi5QdXJlUGF0aGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBhYnN0cmFjdG1ldGhvZDo6IF9fZnNwYXRoX18oKQorCisgICAgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KKworICAgICAgVGhlIG1ldGhvZCBzaG91bGQgb25seSByZXR1cm4gYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LAorICAgICAgd2l0aCB0aGUgcHJlZmVyZW5jZSBiZWluZyBmb3IgOmNsYXNzOmBzdHJgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0ZW52KGtleSwgZGVmYXVsdD1Ob25lKQogCkBAIC04OTYsNiArOTMzLDkgQEAKICAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KICAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYXJlIG9wdGlvbnMgZm9yIHRoZSAqZmxhZ3MqIHBhcmFtZXRlciB0byB0aGUKIDpmdW5jOmB+b3Mub3BlbmAgZnVuY3Rpb24uICBUaGV5IGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBPUiBvcGVyYXRvcgogYGB8YGAuICBTb21lIG9mIHRoZW0gYXJlIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4gIEZvciBkZXNjcmlwdGlvbnMgb2YKQEAgLTEzOTIsNiArMTQzMiw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqLCAqZWZmZWN0aXZlX2lkcyosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXJzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBkYXRhOjogRl9PSwogICAgICAgICAgIFJfT0sKQEAgLTE0MTYsNiArMTQ1OSw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhIGZpbGUgZGVzY3JpcHRvcgogICAgICAgb24gc29tZSBwbGF0Zm9ybXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hmbGFncyhwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE0NDIsNiArMTQ4OCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE0ODMsNiArMTUzMiw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNTAyLDYgKzE1NTQsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaHJvb3QocGF0aCkKIApAQCAtMTUwOSw2ICsxNTY0LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGZjaGRpcihmZCkKIApAQCAtMTUzNyw2ICsxNTk1LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxjaG1vZChwYXRoLCBtb2RlKQogCkBAIC0xNTQ3LDYgKzE2MDgsOCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCiAuLiBmdW5jdGlvbjo6IGxjaG93bihwYXRoLCB1aWQsIGdpZCkKIApAQCAtMTU1Niw2ICsxNjE5LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxpbmsoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTU3Myw2ICsxNjM5LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlICpzcmNfZGlyX2ZkKiwgKmRzdF9kaXJfZmQqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogbGlzdGRpcihwYXRoPScuJykKIApAQCAtMTU4MCw4ICsxNjQ5LDkgQEAKICAgICpwYXRoKi4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlciwgYW5kIGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKICAgIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuCiAKLSAgICpwYXRoKiBtYXkgYmUgZWl0aGVyIG9mIHR5cGUgYGBzdHJgYCBvciBvZiB0eXBlIGBgYnl0ZXNgYC4gIElmICpwYXRoKgotICAgaXMgb2YgdHlwZSBgYGJ5dGVzYGAsIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIG9mIHR5cGUgYGBieXRlc2BgOworICAgKnBhdGgqIG1heSBiZSBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4gIElmICpwYXRoKiBpcyBvZiB0eXBlIGBgYnl0ZXNgYAorICAgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKSwKKyAgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIG9mIHR5cGUgYGBieXRlc2BgOwogICAgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXMsIHRoZXkgd2lsbCBiZSBvZiB0eXBlIGBgc3RyYGAuCiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yCkBAIC0xNjAyLDYgKzE2NzIsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbHN0YXQocGF0aCwgXCosIGRpcl9mZD1Ob25lKQogCkBAIC0xNjI4LDYgKzE3MDEsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTY1Miw2ICsxNzI4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1ha2VkaXJzKG5hbWUsIG1vZGU9MG83NzcsIGV4aXN0X29rPUZhbHNlKQogCkBAIC0xNjg1LDYgKzE3NjQsOSBAQAogICAgICAgbW9kZSBvZiB0aGUgZXhpc3RpbmcgZGlyZWN0b3J5LiBTaW5jZSB0aGlzIGJlaGF2aW9yIHdhcyBpbXBvc3NpYmxlIHRvCiAgICAgICBpbXBsZW1lbnQgc2FmZWx5LCBpdCB3YXMgcmVtb3ZlZCBpbiBQeXRob24gMy40LjEuIFNlZSA6aXNzdWU6YDIxMDgyYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE3MDUsNiArMTc4Nyw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBta25vZChwYXRoLCBtb2RlPTBvNjAwLCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE3MjQsNiArMTgwOSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBtYWpvcihkZXZpY2UpCiAKQEAgLTE3NjIsNiArMTg1MCw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZGF0YTo6IHBhdGhjb25mX25hbWVzCiAKQEAgLTE3NzksOSArMTg3MCwxMCBAQAogICAgbWF5IGJlIGNvbnZlcnRlZCB0byBhbiBhYnNvbHV0ZSBwYXRobmFtZSB1c2luZwogICAgYGBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHBhdGgpLCByZXN1bHQpYGAuCiAKLSAgIElmIHRoZSAqcGF0aCogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgcmVzdWx0IHdpbGwgYWxzbyBiZSBhIHN0cmluZyBvYmplY3QsCisgICBJZiB0aGUgKnBhdGgqIGlzIGEgc3RyaW5nIG9iamVjdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIGEKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSksIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKICAgIGFuZCB0aGUgY2FsbCBtYXkgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3IuIElmIHRoZSAqcGF0aCogaXMgYSBieXRlcwotICAgb2JqZWN0LCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCisgICBvYmplY3QgKGRpcmVjdCBvciBpbmRpcmVjdGx5KSwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCiAgICA8ZGlyX2ZkPmAuCkBAIC0xNzk0LDYgKzE4ODYsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xODEyLDYgKzE5MDcsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZlZGlycyhuYW1lKQogCkBAIC0xODI2LDYgKzE5MjQsOSBAQAogICAgdGhleSBhcmUgZW1wdHkuIFJhaXNlcyA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgbGVhZiBkaXJlY3RvcnkgY291bGQgbm90IGJlCiAgICBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWUoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQogCkBAIC0xODQ1LDYgKzE5NDYsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKnNyY19kaXJfZmQqIGFuZCAqZHN0X2Rpcl9mZCogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVuYW1lcyhvbGQsIG5ldykKIApAQCAtMTg1OCw2ICsxOTYyLDkgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gY2FuIGZhaWwgd2l0aCB0aGUgbmV3IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgbWFkZSBpZiB5b3UgbGFjawogICAgICAgcGVybWlzc2lvbnMgbmVlZGVkIHRvIHJlbW92ZSB0aGUgbGVhZiBkaXJlY3Rvcnkgb3IgZmlsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpvbGQqIGFuZCAqbmV3Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHJlcGxhY2Uoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQogCkBAIC0xODcyLDYgKzE5NzksOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xODg1LDM4ICsxOTk1LDU4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2NhbmRpcihwYXRoPScuJykKIAotICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIDpjbGFzczpgRGlyRW50cnlgIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgZW50cmllcwotICAgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieSAqcGF0aCouIFRoZSBlbnRyaWVzIGFyZSB5aWVsZGVkIGluIGFyYml0cmFyeQotICAgb3JkZXIsIGFuZCB0aGUgc3BlY2lhbCBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGFyZSBub3QgaW5jbHVkZWQuCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBvcy5EaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5ICpwYXRoKi4gVGhlIGVudHJpZXMgYXJlIHlpZWxkZWQgaW4KKyAgIGFyYml0cmFyeSBvcmRlciwgYW5kIHRoZSBzcGVjaWFsIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgYXJlIG5vdAorICAgaW5jbHVkZWQuCiAKICAgIFVzaW5nIDpmdW5jOmBzY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBsaXN0ZGlyYCBjYW4gc2lnbmlmaWNhbnRseQogICAgaW5jcmVhc2UgdGhlIHBlcmZvcm1hbmNlIG9mIGNvZGUgdGhhdCBhbHNvIG5lZWRzIGZpbGUgdHlwZSBvciBmaWxlCi0gICBhdHRyaWJ1dGUgaW5mb3JtYXRpb24sIGJlY2F1c2UgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBleHBvc2UgdGhpcworICAgYXR0cmlidXRlIGluZm9ybWF0aW9uLCBiZWNhdXNlIDpjbGFzczpgb3MuRGlyRW50cnlgIG9iamVjdHMgZXhwb3NlIHRoaXMKICAgIGluZm9ybWF0aW9uIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzIGl0IHdoZW4gc2Nhbm5pbmcgYSBkaXJlY3RvcnkuCi0gICBBbGwgOmNsYXNzOmBEaXJFbnRyeWAgbWV0aG9kcyBtYXkgcGVyZm9ybSBhIHN5c3RlbSBjYWxsLCBidXQKLSAgIDpmdW5jOmB+RGlyRW50cnkuaXNfZGlyYCBhbmQgOmZ1bmM6YH5EaXJFbnRyeS5pc19maWxlYCB1c3VhbGx5IG9ubHkKLSAgIHJlcXVpcmUgYSBzeXN0ZW0gY2FsbCBmb3Igc3ltYm9saWMgbGlua3M7IDpmdW5jOmBEaXJFbnRyeS5zdGF0YAorICAgQWxsIDpjbGFzczpgb3MuRGlyRW50cnlgIG1ldGhvZHMgbWF5IHBlcmZvcm0gYSBzeXN0ZW0gY2FsbCwgYnV0CisgICA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2RpcmAgYW5kIDpmdW5jOmB+b3MuRGlyRW50cnkuaXNfZmlsZWAgdXN1YWxseSBvbmx5CisgICByZXF1aXJlIGEgc3lzdGVtIGNhbGwgZm9yIHN5bWJvbGljIGxpbmtzOyA6ZnVuYzpgb3MuRGlyRW50cnkuc3RhdGAKICAgIGFsd2F5cyByZXF1aXJlcyBhIHN5c3RlbSBjYWxsIG9uIFVuaXggYnV0IG9ubHkgcmVxdWlyZXMgb25lIGZvcgogICAgc3ltYm9saWMgbGlua3Mgb24gV2luZG93cy4KIAotICAgT24gVW5peCwgKnBhdGgqIGNhbiBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCAodXNlCisgICBPbiBVbml4LCAqcGF0aCogY2FuIGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIChlaXRoZXIKKyAgIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlOyB1c2UKICAgIDpmdW5jOmB+b3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBlbmNvZGUgYW5kIGRlY29kZQogICAgOmNsYXNzOmBieXRlc2AgcGF0aHMpLiBPbiBXaW5kb3dzLCAqcGF0aCogbXVzdCBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYC4KLSAgIE9uIGJvdGggc3lzdGVtcywgdGhlIHR5cGUgb2YgdGhlIDphdHRyOmB+RGlyRW50cnkubmFtZWAgYW5kCi0gICA6YXR0cjpgfkRpckVudHJ5LnBhdGhgIGF0dHJpYnV0ZXMgb2YgZWFjaCA6Y2xhc3M6YERpckVudHJ5YCB3aWxsIGJlIG9mCisgICBPbiBib3RoIHN5c3RlbXMsIHRoZSB0eXBlIG9mIHRoZSA6YXR0cjpgfm9zLkRpckVudHJ5Lm5hbWVgIGFuZAorICAgOmF0dHI6YH5vcy5EaXJFbnRyeS5wYXRoYCBhdHRyaWJ1dGVzIG9mIGVhY2ggOmNsYXNzOmBvcy5EaXJFbnRyeWAgd2lsbCBiZSBvZgogICAgdGhlIHNhbWUgdHlwZSBhcyAqcGF0aCouCiAKKyAgIFRoZSA6ZnVuYzpgc2NhbmRpcmAgaXRlcmF0b3Igc3VwcG9ydHMgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sCisgICBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBzY2FuZGlyLmNsb3NlKCkKKworICAgICAgQ2xvc2UgdGhlIGl0ZXJhdG9yIGFuZCBmcmVlIGFjcXVpcmVkIHJlc291cmNlcy4KKworICAgICAgVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgb3IgZ2FyYmFnZQorICAgICAgY29sbGVjdGVkLCBvciB3aGVuIGFuIGVycm9yIGhhcHBlbnMgZHVyaW5nIGl0ZXJhdGluZy4gIEhvd2V2ZXIgaXQKKyAgICAgIGlzIGFkdmlzYWJsZSB0byBjYWxsIGl0IGV4cGxpY2l0bHkgb3IgdXNlIHRoZSA6a2V5d29yZDpgd2l0aGAKKyAgICAgIHN0YXRlbWVudC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBhIHNpbXBsZSB1c2Ugb2YgOmZ1bmM6YHNjYW5kaXJgIHRvIGRpc3BsYXkgYWxsCiAgICB0aGUgZmlsZXMgKGV4Y2x1ZGluZyBkaXJlY3RvcmllcykgaW4gdGhlIGdpdmVuICpwYXRoKiB0aGF0IGRvbid0IHN0YXJ0IHdpdGgKICAgIGBgJy4nYGAuIFRoZSBgYGVudHJ5LmlzX2ZpbGUoKWBgIGNhbGwgd2lsbCBnZW5lcmFsbHkgbm90IG1ha2UgYW4gYWRkaXRpb25hbAogICAgc3lzdGVtIGNhbGw6OgogCi0gICAgICBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcihwYXRoKToKLSAgICAgICAgIGlmIG5vdCBlbnRyeS5uYW1lLnN0YXJ0c3dpdGgoJy4nKSBhbmQgZW50cnkuaXNfZmlsZSgpOgotICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCisgICAgICB3aXRoIG9zLnNjYW5kaXIocGF0aCkgYXMgaXQ6CisgICAgICAgICAgZm9yIGVudHJ5IGluIGl0OgorICAgICAgICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xOTMyLDYgKzIwNjIsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sIGFuZCB0aGUKKyAgICAgIDpmdW5jOmB+c2NhbmRpci5jbG9zZSgpYCBtZXRob2QuICBJZiBhIDpmdW5jOmBzY2FuZGlyYCBpdGVyYXRvciBpcyBuZWl0aGVyCisgICAgICBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3aWxsIGJlIGVtaXR0ZWQKKyAgICAgIGluIGl0cyBkZXN0cnVjdG9yLgorCisgICAgICBUaGUgZnVuY3Rpb24gYWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IERpckVudHJ5CiAKQEAgLTE5NDAsMTkgKzIwNzgsMjIgQEAKIAogICAgOmZ1bmM6YHNjYW5kaXJgIHdpbGwgcHJvdmlkZSBhcyBtdWNoIG9mIHRoaXMgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgd2l0aG91dAogICAgbWFraW5nIGFkZGl0aW9uYWwgc3lzdGVtIGNhbGxzLiBXaGVuIGEgYGBzdGF0KClgYCBvciBgYGxzdGF0KClgYCBzeXN0ZW0gY2FsbAotICAgaXMgbWFkZSwgdGhlIGBgRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgorICAgaXMgbWFkZSwgdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgogCi0gICBgYERpckVudHJ5YGAgaW5zdGFuY2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgc3RvcmVkIGluIGxvbmctbGl2ZWQgZGF0YQorICAgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKICAgIHN0cnVjdHVyZXM7IGlmIHlvdSBrbm93IHRoZSBmaWxlIG1ldGFkYXRhIGhhcyBjaGFuZ2VkIG9yIGlmIGEgbG9uZyB0aW1lIGhhcwogICAgZWxhcHNlZCBzaW5jZSBjYWxsaW5nIDpmdW5jOmBzY2FuZGlyYCwgY2FsbCBgYG9zLnN0YXQoZW50cnkucGF0aClgYCB0byBmZXRjaAogICAgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAotICAgQmVjYXVzZSB0aGUgYGBEaXJFbnRyeWBgIG1ldGhvZHMgY2FuIG1ha2Ugb3BlcmF0aW5nIHN5c3RlbSBjYWxscywgdGhleSBtYXkKKyAgIEJlY2F1c2UgdGhlIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CiAgICBhbHNvIHJhaXNlIDpleGM6YE9TRXJyb3JgLiBJZiB5b3UgbmVlZCB2ZXJ5IGZpbmUtZ3JhaW5lZAogICAgY29udHJvbCBvdmVyIGVycm9ycywgeW91IGNhbiBjYXRjaCA6ZXhjOmBPU0Vycm9yYCB3aGVuIGNhbGxpbmcgb25lIG9mIHRoZQotICAgYGBEaXJFbnRyeWBgIG1ldGhvZHMgYW5kIGhhbmRsZSBhcyBhcHByb3ByaWF0ZS4KKyAgIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCiAKLSAgIEF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgb24gYSBgYERpckVudHJ5YGAgaW5zdGFuY2UgYXJlIGFzIGZvbGxvd3M6CisgICBUbyBiZSBkaXJlY3RseSB1c2FibGUgYXMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAsIGBgb3MuRGlyRW50cnlgYAorICAgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlLgorCisgICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCiAKQEAgLTE5NzgsOCArMjExOSw5IEBACiAKICAgICAgIFJldHVybiB0aGUgaW5vZGUgbnVtYmVyIG9mIHRoZSBlbnRyeS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIFVzZSBgYG9zLnN0YXQoZW50cnkucGF0aCwKLSAgICAgIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuc3RfaW5vYGAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LiBVc2UKKyAgICAgIGBgb3Muc3RhdChlbnRyeS5wYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lub2BgIHRvIGZldGNoIHVwLXRvLWRhdGUKKyAgICAgIGluZm9ybWF0aW9uLgogCiAgICAgICBPbiB0aGUgZmlyc3QsIHVuY2FjaGVkIGNhbGwsIGEgc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQgb24gV2luZG93cyBidXQKICAgICAgIG5vdCBvbiBVbml4LgpAQCAtMTk5NCw3ICsyMTM2LDcgQEAKICAgICAgIGlzIGEgZGlyZWN0b3J5ICh3aXRob3V0IGZvbGxvd2luZyBzeW1saW5rcyk7IHJldHVybiBgYEZhbHNlYGAgaWYgdGhlCiAgICAgICBlbnRyeSBpcyBhbnkgb3RoZXIga2luZCBvZiBmaWxlIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQogICAgICAgZm9yICpmb2xsb3dfc3ltbGlua3MqIGBgVHJ1ZWBgIGFuZCBgYEZhbHNlYGAuIENhbGwgOmZ1bmM6YG9zLnN0YXRgIGFsb25nCiAgICAgICB3aXRoIDpmdW5jOmBzdGF0LlNfSVNESVJgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKQEAgLTIwMTgsOCArMjE2MCw4IEBACiAgICAgICBpcyBhIGZpbGUgKHdpdGhvdXQgZm9sbG93aW5nIHN5bWxpbmtzKTsgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUgZW50cnkgaXMKICAgICAgIGEgZGlyZWN0b3J5IG9yIG90aGVyIG5vbi1maWxlIGVudHJ5LCBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWNoaW5nLCBzeXN0ZW0gY2FsbHMKLSAgICAgIG1hZGUsIGFuZCBleGNlcHRpb25zIHJhaXNlZCBhcmUgYXMgcGVyIDpmdW5jOmB+RGlyRW50cnkuaXNfZGlyYC4KKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LiBDYWNoaW5nLCBzeXN0ZW0gY2FsbHMKKyAgICAgIG1hZGUsIGFuZCBleGNlcHRpb25zIHJhaXNlZCBhcmUgYXMgcGVyIDpmdW5jOmB+b3MuRGlyRW50cnkuaXNfZGlyYC4KIAogICAgLi4gbWV0aG9kOjogaXNfc3ltbGluaygpCiAKQEAgLTIwMjcsNyArMjE2OSw3IEBACiAgICAgICByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZSBlbnRyeSBwb2ludHMgdG8gYSBkaXJlY3Rvcnkgb3IgYW55IGtpbmQgb2YgZmlsZSwKICAgICAgIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LiBDYWxsCiAgICAgICA6ZnVuYzpgb3MucGF0aC5pc2xpbmtgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKICAgICAgIE9uIHRoZSBmaXJzdCwgdW5jYWNoZWQgY2FsbCwgbm8gc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQgaW4gbW9zdCBjYXNlcy4KQEAgLTIwNTIsMjMgKzIxOTQsMjggQEAKICAgICAgIDpjbGFzczpgc3RhdF9yZXN1bHRgIGFyZSBhbHdheXMgc2V0IHRvIHplcm8uIENhbGwgOmZ1bmM6YG9zLnN0YXRgIHRvCiAgICAgICBnZXQgdGhlc2UgYXR0cmlidXRlcy4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQogICAgICAgZm9yICpmb2xsb3dfc3ltbGlua3MqIGBgVHJ1ZWBgIGFuZCBgYEZhbHNlYGAuIENhbGwgOmZ1bmM6YG9zLnN0YXRgIHRvCiAgICAgICBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCiAgICBOb3RlIHRoYXQgdGhlcmUgaXMgYSBuaWNlIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gc2V2ZXJhbCBhdHRyaWJ1dGVzCi0gICBhbmQgbWV0aG9kcyBvZiBgYERpckVudHJ5YGAgYW5kIG9mIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4gIEluCi0gICBwYXJ0aWN1bGFyLCB0aGUgYGBuYW1lYGAgYXR0cmlidXRlIGhhcyB0aGUgc2FtZSBtZWFuaW5nLCBhcyBkbyB0aGUKLSAgIGBgaXNfZGlyKClgYCwgYGBpc19maWxlKClgYCwgYGBpc19zeW1saW5rKClgYCBhbmQgYGBzdGF0KClgYCBtZXRob2RzLgorICAgYW5kIG1ldGhvZHMgb2YgYGBvcy5EaXJFbnRyeWBgIGFuZCBvZiA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAuICBJbgorICAgcGFydGljdWxhciwgdGhlIGBgbmFtZWBgIGF0dHJpYnV0ZSBoYXMgdGhlIHNhbWUKKyAgIG1lYW5pbmcsIGFzIGRvIHRoZSBgYGlzX2RpcigpYGAsIGBgaXNfZmlsZSgpYGAsIGBgaXNfc3ltbGluaygpYGAKKyAgIGFuZCBgYHN0YXQoKWBgIG1ldGhvZHMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDpjbGFzczpgfm9zLlBhdGhMaWtlYCBpbnRlcmZhY2UuCisKIAogLi4gZnVuY3Rpb246OiBzdGF0KHBhdGgsIFwqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIEdldCB0aGUgc3RhdHVzIG9mIGEgZmlsZSBvciBhIGZpbGUgZGVzY3JpcHRvci4gUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhCiAgICA6YzpmdW5jOmBzdGF0YCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4gKnBhdGgqIG1heSBiZSBzcGVjaWZpZWQgYXMKLSAgIGVpdGhlciBhIHN0cmluZyBvciBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4gUmV0dXJuIGEgOmNsYXNzOmBzdGF0X3Jlc3VsdGAKKyAgIGVpdGhlciBhIHN0cmluZyAtLSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgCisgICBpbnRlcmZhY2UgLS0gb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgCiAgICBvYmplY3QuCiAKICAgIFRoaXMgZnVuY3Rpb24gbm9ybWFsbHkgZm9sbG93cyBzeW1saW5rczsgdG8gc3RhdCBhIHN5bWxpbmsgYWRkIHRoZSBhcmd1bWVudApAQCAtMjA5OCw2ICsyMjQ1LDkgQEAKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLCBzcGVjaWZ5aW5nIGEgZmlsZQogICAgICAgZGVzY3JpcHRvciBpbnN0ZWFkIG9mIGEgcGF0aC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBzdGF0X3Jlc3VsdAogCkBAIC0yMzE5LDE5ICsyNDY5LDIyIEBACiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLgogCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgOmNvbnN0OmBTVF9SRE9OTFlgIGFuZCA6Y29uc3Q6YFNUX05PU1VJRGAgY29uc3RhbnRzIHdlcmUgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIDpjb25zdDpgU1RfTk9ERVZgLCA6Y29uc3Q6YFNUX05PRVhFQ2AsIDpjb25zdDpgU1RfU1lOQ0hST05PVVNgLAogICAgICAgOmNvbnN0OmBTVF9NQU5ETE9DS2AsIDpjb25zdDpgU1RfV1JJVEVgLCA6Y29uc3Q6YFNUX0FQUEVORGAsCiAgICAgICA6Y29uc3Q6YFNUX0lNTVVUQUJMRWAsIDpjb25zdDpgU1RfTk9BVElNRWAsIDpjb25zdDpgU1RfTk9ESVJBVElNRWAsCiAgICAgICBhbmQgOmNvbnN0OmBTVF9SRUxBVElNRWAgY29uc3RhbnRzIHdlcmUgYWRkZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogCiAuLiBkYXRhOjogc3VwcG9ydHNfZGlyX2ZkCkBAIC0yNDUyLDYgKzI2MDUsOSBAQAogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIGFyZ3VtZW50LCBhbmQgbm93IGFsbG93ICp0YXJnZXRfaXNfZGlyZWN0b3J5KgogICAgICAgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogc3luYygpCiAKQEAgLTI0NzYsNiArMjYzMiwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKKwogLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBUaGlzIGZ1bmN0aW9uIGlzIHNlbWFudGljYWxseQpAQCAtMjQ4Niw2ICsyNjQ2LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiB1dGltZShwYXRoLCB0aW1lcz1Ob25lLCAqWywgbnNdLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTI1MjMsNiArMjY4Niw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCiAgICAgICBhbmQgdGhlICpkaXJfZmQqLCAqZm9sbG93X3N5bWxpbmtzKiwgYW5kICpucyogcGFyYW1ldGVycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiB3YWxrKHRvcCwgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsIGZvbGxvd2xpbmtzPUZhbHNlKQogCkBAIC0yNjEzLDYgKzI3NzksOSBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgOmZ1bmM6YG9zLnNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YG9zLmxpc3RkaXJgLAogICAgICAgbWFraW5nIGl0IGZhc3RlciBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDpmdW5jOmBvcy5zdGF0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBmd2Fsayh0b3A9Jy4nLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMjY2OSw2ICsyODM4LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIExpbnV4IGV4dGVuZGVkIGF0dHJpYnV0ZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTI2ODAsMTIgKzI4NTIsMTYgQEAKIC4uIGZ1bmN0aW9uOjogZ2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogZm9yCi0gICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZAotICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KKyAgICpwYXRoKi4gKmF0dHJpYnV0ZSogY2FuIGJlIGJ5dGVzIG9yIHN0ciAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZQorICAgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKS4gSWYgaXQgaXMgc3RyLCBpdCBpcyBlbmNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0KKyAgIGVuY29kaW5nLgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKICAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmcHIgKnBhdGgqIGFuZCAqYXR0cmlidXRlKi4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3R4YXR0cihwYXRoPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0yNjk3LDIxICsyODczLDI5IEBACiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKICAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZXhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFJlbW92ZXMgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZyb20gKnBhdGgqLgotICAgKmF0dHJpYnV0ZSogc2hvdWxkIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQKKyAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCiAgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKICAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnBhdGgqIGFuZCAqYXR0cmlidXRlKi4KKwogCiAuLiBmdW5jdGlvbjo6IHNldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgdmFsdWUsIGZsYWdzPTAsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBTZXQgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIG9uICpwYXRoKiB0byAqdmFsdWUqLgotICAgKmF0dHJpYnV0ZSogbXVzdCBiZSBhIGJ5dGVzIG9yIHN0ciB3aXRoIG5vIGVtYmVkZGVkIE5VTHMuIElmIGl0IGlzIGEgc3RyLAorICAgKmF0dHJpYnV0ZSogbXVzdCBiZSBhIGJ5dGVzIG9yIHN0ciB3aXRoIG5vIGVtYmVkZGVkIE5VTHMgKGRpcmVjdGx5IG9yCisgICBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIGEgc3RyLAogICAgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLiAgKmZsYWdzKiBtYXkgYmUKICAgIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBvciA6ZGF0YTpgWEFUVFJfQ1JFQVRFYC4gSWYgOmRhdGE6YFhBVFRSX1JFUExBQ0VgIGlzCiAgICBnaXZlbiBhbmQgdGhlIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgYGBFRVhJU1RTYGAgd2lsbCBiZSByYWlzZWQuCkBAIC0yNzI2LDYgKzI5MTAsOSBAQAogICAgICAgQSBidWcgaW4gTGludXgga2VybmVsIHZlcnNpb25zIGxlc3MgdGhhbiAyLjYuMzkgY2F1c2VkIHRoZSBmbGFncyBhcmd1bWVudAogICAgICAgdG8gYmUgaWdub3JlZCBvbiBzb21lIGZpbGVzeXN0ZW1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnBhdGgqIGFuZCAqYXR0cmlidXRlKi4KKwogCiAuLiBkYXRhOjogWEFUVFJfU0laRV9NQVgKIApAQCAtMjgyNyw2ICszMDE0LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKgogICAgICAgZm9yIDpmdW5jOmBleGVjdmVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gZnVuY3Rpb246OiBfZXhpdChuKQogCiAgICBFeGl0IHRoZSBwcm9jZXNzIHdpdGggc3RhdHVzICpuKiwgd2l0aG91dCBjYWxsaW5nIGNsZWFudXAgaGFuZGxlcnMsIGZsdXNoaW5nCkBAIC0zMTM3LDYgKzMzMjcsOSBAQAogICAgOmZ1bmM6YHNwYXdudmVgIGFyZSBub3QgdGhyZWFkLXNhZmUgb24gV2luZG93czsgd2UgYWR2aXNlIHlvdSB0byB1c2UgdGhlCiAgICA6bW9kOmBzdWJwcm9jZXNzYCBtb2R1bGUgaW5zdGVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZGF0YTo6IFBfTk9XQUlUCiAgICAgICAgICAgUF9OT1dBSVRPCkBAIC0zNjIzLDYgKzM4MTYsMTEgQEAKIAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLiBSZXR1cm5zIGBgTm9uZWBgIGlmIHVuZGV0ZXJtaW5lZC4KIAorICAgVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuCisgICB1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoCisgICBgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAorCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAKQEAgLTM3MzgsMzUgKzM5MzYsODkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKLS4uIF9vcy1taXNjZnVuYzoKIAotTWlzY2VsbGFuZW91cyBGdW5jdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSYW5kb20gbnVtYmVycworLS0tLS0tLS0tLS0tLS0KIAogCi0uLiBmdW5jdGlvbjo6IHVyYW5kb20obikKKy4uIGZ1bmN0aW9uOjogZ2V0cmFuZG9tKHNpemUsIGZsYWdzPTApCiAKLSAgIFJldHVybiBhIHN0cmluZyBvZiAqbiogcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KKyAgIEdldCB1cCB0byAqc2l6ZSogcmFuZG9tIGJ5dGVzLiBUaGUgZnVuY3Rpb24gY2FuIHJldHVybiBsZXNzIGJ5dGVzIHRoYW4KKyAgIHJlcXVlc3RlZC4KKworICAgVGhlc2UgYnl0ZXMgY2FuIGJlIHVzZWQgdG8gc2VlZCB1c2VyLXNwYWNlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9ycyBvciBmb3IKKyAgIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuCisKKyAgIGBgZ2V0cmFuZG9tKClgYCByZWxpZXMgb24gZW50cm9weSBnYXRoZXJlZCBmcm9tIGRldmljZSBkcml2ZXJzIGFuZCBvdGhlcgorICAgc291cmNlcyBvZiBlbnZpcm9ubWVudGFsIG5vaXNlLiBVbm5lY2Vzc2FyaWx5IHJlYWRpbmcgbGFyZ2UgcXVhbnRpdGllcyBvZgorICAgZGF0YSB3aWxsIGhhdmUgYSBuZWdhdGl2ZSBpbXBhY3Qgb24gIG90aGVyIHVzZXJzICBvZiB0aGUgYGAvZGV2L3JhbmRvbWBgIGFuZAorICAgYGAvZGV2L3VyYW5kb21gYCBkZXZpY2VzLgorCisgICBUaGUgZmxhZ3MgYXJndW1lbnQgaXMgYSBiaXQgbWFzayB0aGF0IGNhbiBjb250YWluIHplcm8gb3IgbW9yZSBvZiB0aGUKKyAgIGZvbGxvd2luZyB2YWx1ZXMgT1JlZCB0b2dldGhlcjogOnB5OmRhdGE6YG9zLkdSTkRfUkFORE9NYCBhbmQKKyAgIDpweTpkYXRhOmBHUk5EX05PTkJMT0NLYC4KKworICAgU2VlIGFsc28gdGhlIGBMaW51eCBnZXRyYW5kb20oKSBtYW51YWwgcGFnZQorICAgPGh0dHA6Ly9tYW43Lm9yZy9saW51eC9tYW4tcGFnZXMvbWFuMi9nZXRyYW5kb20uMi5odG1sPmBfLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4IDMuMTcgYW5kIG5ld2VyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZnVuY3Rpb246OiB1cmFuZG9tKHNpemUpCisKKyAgIFJldHVybiBhIHN0cmluZyBvZiAqc2l6ZSogcmFuZG9tIGJ5dGVzIHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHVzZS4KIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHJhbmRvbSBieXRlcyBmcm9tIGFuIE9TLXNwZWNpZmljIHJhbmRvbW5lc3Mgc291cmNlLiAgVGhlCiAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSB1bnByZWRpY3RhYmxlIGVub3VnaCBmb3IgY3J5cHRvZ3JhcGhpYyBhcHBsaWNhdGlvbnMsCiAgICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uCiAKLSAgIE9uIExpbnV4LCBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyB1c2VkIGlmIGF2YWlsYWJsZSBhbmQgdGhlIHVyYW5kb20KLSAgIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZCAoYGBnZXRyYW5kb20oKWBgIGRvZXMgbm90IGJsb2NrKS4KLSAgIE9uIGEgVW5peC1saWtlIHN5c3RlbSB0aGlzIHdpbGwgcXVlcnkgYGAvZGV2L3VyYW5kb21gYC4gT24gV2luZG93cywgaXQKLSAgIHdpbGwgdXNlIGBgQ3J5cHRHZW5SYW5kb20oKWBgLiAgSWYgYSByYW5kb21uZXNzIHNvdXJjZSBpcyBub3QgZm91bmQsCi0gICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKyAgIE9uIExpbnV4LCBpZiB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgYXZhaWxhYmxlLCBpdCBpcyB1c2VkIGluCisgICBibG9ja2luZyBtb2RlOiBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkCisgICAoMTI4IGJpdHMgb2YgZW50cm9weSBhcmUgY29sbGVjdGVkIGJ5IHRoZSBrZXJuZWwpLiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yCisgICB0aGUgcmF0aW9uYWxlLiBPbiBMaW51eCwgdGhlIDpmdW5jOmBnZXRyYW5kb21gIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGdldAorICAgcmFuZG9tIGJ5dGVzIGluIG5vbi1ibG9ja2luZyBtb2RlICh1c2luZyB0aGUgOmRhdGE6YEdSTkRfTk9OQkxPQ0tgIGZsYWcpIG9yCisgICB0byBwb2xsIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQuCiAKLSAgIEZvciBhbiBlYXN5LXRvLXVzZSBpbnRlcmZhY2UgdG8gdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yCi0gICBwcm92aWRlZCBieSB5b3VyIHBsYXRmb3JtLCBwbGVhc2Ugc2VlIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAuCisgICBPbiBhIFVuaXgtbGlrZSBzeXN0ZW0sIHJhbmRvbSBieXRlcyBhcmUgcmVhZCBmcm9tIHRoZSBgYC9kZXYvdXJhbmRvbWBgCisgICBkZXZpY2UuIElmIHRoZSBgYC9kZXYvdXJhbmRvbWBgIGRldmljZSBpcyBub3QgYXZhaWxhYmxlIG9yIG5vdCByZWFkYWJsZSwgdGhlCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICBPbiBXaW5kb3dzLCBpdCB3aWxsIHVzZSBgYENyeXB0R2VuUmFuZG9tKClgYC4KKworICAgLi4gc2VlYWxzbzo6CisgICAgICBUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGhpZ2hlciBsZXZlbCBmdW5jdGlvbnMuIEZvciBhbgorICAgICAgZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBwcm92aWRlZCBieSB5b3VyCisgICAgICBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNi4wCisgICAgICBPbiBMaW51eCwgYGBnZXRyYW5kb20oKWBgIGlzIG5vdyB1c2VkIGluIGJsb2NraW5nIG1vZGUgdG8gaW5jcmVhc2UgdGhlCisgICAgICBzZWN1cml0eS4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMgotICAgICAgT24gTGludXgsIGlmIGBgZ2V0cmFuZG9tKClgYCBibG9ja3MgKHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QKLSAgICAgIGluaXRpYWxpemVkIHlldCksIGZhbGwgYmFjayBvbiByZWFkaW5nIGBgL2Rldi91cmFuZG9tYGAuCisgICAgICBPbiBMaW51eCwgaWYgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGJsb2NrcyAodGhlIHVyYW5kb20gZW50cm9weSBwb29sCisgICAgICBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0KSwgZmFsbCBiYWNrIG9uIHJlYWRpbmcgYGAvZGV2L3VyYW5kb21gYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgbm93IHVzZWQKICAgICAgIHdoZW4gYXZhaWxhYmxlLiAgT24gT3BlbkJTRCA1LjYgYW5kIG5ld2VyLCB0aGUgQyBgYGdldGVudHJvcHkoKWBgCiAgICAgICBmdW5jdGlvbiBpcyBub3cgdXNlZC4gVGhlc2UgZnVuY3Rpb25zIGF2b2lkIHRoZSB1c2FnZSBvZiBhbiBpbnRlcm5hbCBmaWxlCiAgICAgICBkZXNjcmlwdG9yLgorCisuLiBkYXRhOjogR1JORF9OT05CTE9DSworCisgICBCeSAgZGVmYXVsdCwgd2hlbiByZWFkaW5nIGZyb20gYGAvZGV2L3JhbmRvbWBgLCA6ZnVuYzpgZ2V0cmFuZG9tYCBibG9ja3MgaWYKKyAgIG5vIHJhbmRvbSBieXRlcyBhcmUgYXZhaWxhYmxlLCBhbmQgd2hlbiByZWFkaW5nIGZyb20gYGAvZGV2L3VyYW5kb21gYCwgaXQgYmxvY2tzCisgICBpZiB0aGUgZW50cm9weSBwb29sIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuCisKKyAgIElmIHRoZSA6cHk6ZGF0YTpgR1JORF9OT05CTE9DS2AgZmxhZyBpcyBzZXQsIHRoZW4gOmZ1bmM6YGdldHJhbmRvbWAgZG9lcyBub3QKKyAgIGJsb2NrIGluIHRoZXNlIGNhc2VzLCBidXQgaW5zdGVhZCBpbW1lZGlhdGVseSByYWlzZXMgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBHUk5EX1JBTkRPTQorCisgICBJZiAgdGhpcyAgYml0ICBpcyAgc2V0LCAgdGhlbiAgcmFuZG9tIGJ5dGVzIGFyZSBkcmF3biBmcm9tIHRoZQorICAgYGAvZGV2L3JhbmRvbWBgIHBvb2wgaW5zdGVhZCBvZiB0aGUgYGAvZGV2L3VyYW5kb21gYCBwb29sLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0IGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKaW5kZXggN2I5MGExZi4uNWE4MTkxNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QKQEAgLTM1LDEyICszNSw2IEBACiAgICBhY2Nlc3NpbmcgdGhlIE9TLiBJbiB0aGlzIGNhc2UsIGluc3RhbnRpYXRpbmcgb25lIG9mIHRoZSBwdXJlIGNsYXNzZXMgbWF5IGJlCiAgICB1c2VmdWwgc2luY2UgdGhvc2Ugc2ltcGx5IGRvbid0IGhhdmUgYW55IE9TLWFjY2Vzc2luZyBvcGVyYXRpb25zLgogCi0uLiBub3RlOjoKLSAgIFRoaXMgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIHBhY2thZ2UpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAuLiBzZWVhbHNvOjoKICAgIDpwZXA6YDQyOGA6IFRoZSBwYXRobGliIG1vZHVsZSAtLSBvYmplY3Qtb3JpZW50ZWQgZmlsZXN5c3RlbSBwYXRocy4KIApAQCAtMTExLDcgKzEwNSw4IEBACiAgICAgICBQdXJlUG9zaXhQYXRoKCdzZXR1cC5weScpCiAKICAgIEVhY2ggZWxlbWVudCBvZiAqcGF0aHNlZ21lbnRzKiBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIHJlcHJlc2VudGluZyBhCi0gICBwYXRoIHNlZ21lbnQsIG9yIGFub3RoZXIgcGF0aCBvYmplY3Q6OgorICAgcGF0aCBzZWdtZW50LCBhbiBvYmplY3QgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UKKyAgIHdoaWNoIHJldHVybnMgYSBzdHJpbmcsIG9yIGFub3RoZXIgcGF0aCBvYmplY3Q6OgogCiAgICAgICA+Pj4gUHVyZVBhdGgoJ2ZvbycsICdzb21lL3BhdGgnLCAnYmFyJykKICAgICAgIFB1cmVQb3NpeFBhdGgoJ2Zvby9zb21lL3BhdGgvYmFyJykKQEAgLTE1Miw2ICsxNDcsMTIgQEAKICAgIHRvIGBgUHVyZVBvc2l4UGF0aCgnYmFyJylgYCwgd2hpY2ggaXMgd3JvbmcgaWYgYGBmb29gYCBpcyBhIHN5bWJvbGljIGxpbmsKICAgIHRvIGFub3RoZXIgZGlyZWN0b3J5KQogCisgICBQdXJlIHBhdGggb2JqZWN0cyBpbXBsZW1lbnQgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSwgYWxsb3dpbmcgdGhlbQorICAgdG8gYmUgdXNlZCBhbnl3aGVyZSB0aGUgaW50ZXJmYWNlIGlzIGFjY2VwdGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZS4KKwogLi4gY2xhc3M6OiBQdXJlUG9zaXhQYXRoKCpwYXRoc2VnbWVudHMpCiAKICAgIEEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBQdXJlUGF0aGAsIHRoaXMgcGF0aCBmbGF2b3VyIHJlcHJlc2VudHMgbm9uLVdpbmRvd3MKQEAgLTE5OSw3ICsyMDAsNyBAQAogICAgPj4+IFB1cmVXaW5kb3dzUGF0aCgnZm9vJykgPCBQdXJlUG9zaXhQYXRoKCdmb28nKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgVHlwZUVycm9yOiB1bm9yZGVyYWJsZSB0eXBlczogUHVyZVdpbmRvd3NQYXRoKCkgPCBQdXJlUG9zaXhQYXRoKCkKKyAgIFR5cGVFcnJvcjogJzwnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ1B1cmVXaW5kb3dzUGF0aCcgYW5kICdQdXJlUG9zaXhQYXRoJwogCiAKIE9wZXJhdG9ycwpAQCAtMjE2LDYgKzIxNywxNCBAQAogICAgPj4+ICcvdXNyJyAvIHEKICAgIFB1cmVQb3NpeFBhdGgoJy91c3IvYmluJykKIAorQSBwYXRoIG9iamVjdCBjYW4gYmUgdXNlZCBhbnl3aGVyZSBhbiBvYmplY3QgaW1wbGVtZW50aW5nIDpjbGFzczpgb3MuUGF0aExpa2VgCitpcyBhY2NlcHRlZDo6CisKKyAgID4+PiBpbXBvcnQgb3MKKyAgID4+PiBwID0gUHVyZVBhdGgoJy9ldGMnKQorICAgPj4+IG9zLmZzcGF0aChwKQorICAgJy9ldGMnCisKIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoIGlzIHRoZSByYXcgZmlsZXN5c3RlbSBwYXRoIGl0c2VsZgogKGluIG5hdGl2ZSBmb3JtLCBlLmcuIHdpdGggYmFja3NsYXNoZXMgdW5kZXIgV2luZG93cyksIHdoaWNoIHlvdSBjYW4KIHBhc3MgdG8gYW55IGZ1bmN0aW9uIHRha2luZyBhIGZpbGUgcGF0aCBhcyBhIHN0cmluZzo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wZGIucnN0IGIvRG9jL2xpYnJhcnkvcGRiLnJzdAppbmRleCBkNzdkZTJlLi41MmJlZjY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wZGIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKQEAgLTE0NCw3ICsxNDQsNyBAQAogYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6CiAKIC4uIGNsYXNzOjogUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBcCi0gICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSkKKyAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSkKIAogICAgOmNsYXNzOmBQZGJgIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy4KIApAQCAtMTYwLDYgKzE2MCw5IEBACiAgICBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgYWdhaW4gYnkgcHJlc3NpbmcgOmtiZDpgQ3RybC1DYC4gIElmIHlvdQogICAgd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlQgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG8gdHJ1ZS4KIAorICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgUGRiIHdpbGwgbG9hZAorICAgLnBkYnJjIGZpbGVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisKICAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjo6CiAKICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ2RqYW5nby4qJ10pLnNldF90cmFjZSgpCkBAIC0xNzEsNiArMTc0LDkgQEAKICAgICAgIFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlQgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5CiAgICAgICBQZGIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKnJlYWRyYyogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggMGQ2NDE5MS4uNmU4NDMwZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC00OTIsNyArNDkyLDcgQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19leF9fKCkKIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50cyB0aGUKKyAgIEluIHByb3RvY29scyAyIGFuZCBuZXdlciwgY2xhc3NlcyB0aGF0IGltcGxlbWVudHMgdGhlCiAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIG1ldGhvZCBjYW4gZGljdGF0ZSB0aGUgdmFsdWVzIHBhc3NlZCB0byB0aGUKICAgIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLiAgVGhlIG1ldGhvZCBtdXN0IHJldHVybiBhIHBhaXIKICAgIGBgKGFyZ3MsIGt3YXJncylgYCB3aGVyZSAqYXJncyogaXMgYSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cwpAQCAtNTA0LDE1ICs1MDQsMjIgQEAKICAgIGNsYXNzIHJlcXVpcmVzIGtleXdvcmQtb25seSBhcmd1bWVudHMuICBPdGhlcndpc2UsIGl0IGlzIHJlY29tbWVuZGVkIGZvcgogICAgY29tcGF0aWJpbGl0eSB0byBpbXBsZW1lbnQgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgaXMgbm93IHVzZWQgaW4gcHJvdG9jb2xzIDIgYW5kIDMuCisKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19fKCkKIAotICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBidXQKLSAgIGZvciBwcm90b2NvbHMgMiBhbmQgbmV3ZXIuICBJdCBtdXN0IHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cyBgYGFyZ3NgYAotICAgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLgorICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCwgYnV0CisgICBzdXBwb3J0cyBvbmx5IHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgSXQgbXVzdCByZXR1cm4gYSB0dXBsZSBvZiBhcmd1bWVudHMKKyAgIGBgYXJnc2BgIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHVwb24gdW5waWNrbGluZy4KIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdpbGwgbm90IGJlIGNhbGxlZCBpZgotICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcyBkZWZpbmVkLgorICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYCB3aWxsIG5vdCBiZSBjYWxsZWQgaWYgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcworICAgZGVmaW5lZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEJlZm9yZSBQeXRob24gMy42LCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdhcyBjYWxsZWQgaW5zdGVhZCBvZgorICAgICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpbiBwcm90b2NvbHMgMiBhbmQgMy4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRzdGF0ZV9fKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggYWJlYWM2Mi4uOTBkNjllNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTExLDYgKzExLDExIEBACiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHRoZSBpbXBvcnQgc3lzdGVtLCBpbiBwYXJ0aWN1bGFyIHBhY2thZ2UKIHN1cHBvcnQuCiAKKy4uIGNsYXNzOjogTW9kdWxlSW5mbyhtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykKKworICAgIEEgbmFtZWR0dXBsZSB0aGF0IGhvbGRzIGEgYnJpZWYgc3VtbWFyeSBvZiBhIG1vZHVsZSdzIGluZm8uCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZnVuY3Rpb246OiBleHRlbmRfcGF0aChwYXRoLCBuYW1lKQogCkBAIC0xMzksNyArMTQ0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKKyAgIFlpZWxkcyA6Y2xhc3M6YE1vZHVsZUluZm9gIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgogICAgKnBhdGgqIGlzIGBgTm9uZWBgLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gYGBzeXMucGF0aGBgLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KQEAgLTE2MCw3ICsxNjUsNyBAQAogCiAuLiBmdW5jdGlvbjo6IHdhbGtfcGFja2FnZXMocGF0aD1Ob25lLCBwcmVmaXg9JycsIG9uZXJyb3I9Tm9uZSkKIAotICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseSBvbgorICAgWWllbGRzIDpjbGFzczpgTW9kdWxlSW5mb2AgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCiAgICAqcGF0aCosIG9yLCBpZiAqcGF0aCogaXMgYGBOb25lYGAsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdCBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKaW5kZXggZmZhYmMzMi4uZDcyYjY2MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CkBAIC02Miw2ICs2MiwxMyBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKwogT25lIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGUgOm1vZDpgcG9wbGliYCBtb2R1bGU6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcXVldWUucnN0IGIvRG9jL2xpYnJhcnkvcXVldWUucnN0CmluZGV4IDkyNGJlNWEuLmJkMGZjMmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIG1vZHVsZS4KIAogVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRocmVlIHR5cGVzIG9mIHF1ZXVlLCB3aGljaCBkaWZmZXIgb25seSBpbiB0aGUgb3JkZXIgaW4KLXdoaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIEZJRk8gcXVldWUsIHRoZSBmaXJzdCB0YXNrcyBhZGRlZCBhcmUKLXRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEgTElGTyBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKK3doaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAKK3F1ZXVlLCB0aGUgZmlyc3QgdGFza3MgYWRkZWQgYXJlIHRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEKKzphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKIHRoZSBmaXJzdCByZXRyaWV2ZWQgKG9wZXJhdGluZyBsaWtlIGEgc3RhY2spLiAgV2l0aCBhIHByaW9yaXR5IHF1ZXVlLAogdGhlIGVudHJpZXMgYXJlIGtlcHQgc29ydGVkICh1c2luZyB0aGUgOm1vZDpgaGVhcHFgIG1vZHVsZSkgYW5kIHRoZQogbG93ZXN0IHZhbHVlZCBlbnRyeSBpcyByZXRyaWV2ZWQgZmlyc3QuCkBAIC0yOSwxNCArMzAsMTYgQEAKIAogLi4gY2xhc3M6OiBRdWV1ZShtYXhzaXplPTApCiAKLSAgIENvbnN0cnVjdG9yIGZvciBhIEZJRk8gcXVldWUuICAqbWF4c2l6ZSogaXMgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKKyAgIENvbnN0cnVjdG9yIGZvciBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUuICAqbWF4c2l6ZSogaXMKKyAgIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCiAgICBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUgcXVldWUuICBJbnNlcnRpb24gd2lsbAogICAgYmxvY2sgb25jZSB0aGlzIHNpemUgaGFzIGJlZW4gcmVhY2hlZCwgdW50aWwgcXVldWUgaXRlbXMgYXJlIGNvbnN1bWVkLiAgSWYKICAgICptYXhzaXplKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuCiAKIC4uIGNsYXNzOjogTGlmb1F1ZXVlKG1heHNpemU9MCkKIAotICAgQ29uc3RydWN0b3IgZm9yIGEgTElGTyBxdWV1ZS4gICptYXhzaXplKiBpcyBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAorICAgQ29uc3RydWN0b3IgZm9yIGEgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLiAgKm1heHNpemUqIGlzCisgICBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAogICAgbGltaXQgb24gdGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IGNhbiBiZSBwbGFjZWQgaW4gdGhlIHF1ZXVlLiAgSW5zZXJ0aW9uIHdpbGwKICAgIGJsb2NrIG9uY2UgdGhpcyBzaXplIGhhcyBiZWVuIHJlYWNoZWQsIHVudGlsIHF1ZXVlIGl0ZW1zIGFyZSBjb25zdW1lZC4gIElmCiAgICAqbWF4c2l6ZSogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8sIHRoZSBxdWV1ZSBzaXplIGlzIGluZmluaXRlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKaW5kZXggMjJmMThhMC4uYTQ3ZWQ5YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CkBAIC00Niw3ICs0Niw4IEBACiAuLiB3YXJuaW5nOjoKIAogICAgVGhlIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9ycyBvZiB0aGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yCi0gICBzZWN1cml0eSBwdXJwb3Nlcy4KKyAgIHNlY3VyaXR5IHB1cnBvc2VzLiAgRm9yIHNlY3VyaXR5IG9yIGNyeXB0b2dyYXBoaWMgdXNlcywgc2VlIHRoZQorICAgOm1vZDpgc2VjcmV0c2AgbW9kdWxlLgogCiAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKQEAgLTEyMyw2ICsxMjQsMzEgQEAKICAgIFJldHVybiBhIHJhbmRvbSBlbGVtZW50IGZyb20gdGhlIG5vbi1lbXB0eSBzZXF1ZW5jZSAqc2VxKi4gSWYgKnNlcSogaXMgZW1wdHksCiAgICByYWlzZXMgOmV4YzpgSW5kZXhFcnJvcmAuCiAKKy4uIGZ1bmN0aW9uOjogY2hvaWNlcyhwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSkKKworICAgUmV0dXJuIGEgKmsqIHNpemVkIGxpc3Qgb2YgZWxlbWVudHMgY2hvc2VuIGZyb20gdGhlICpwb3B1bGF0aW9uKiB3aXRoIHJlcGxhY2VtZW50LgorICAgSWYgdGhlICpwb3B1bGF0aW9uKiBpcyBlbXB0eSwgcmFpc2VzIDpleGM6YEluZGV4RXJyb3JgLgorCisgICBJZiBhICp3ZWlnaHRzKiBzZXF1ZW5jZSBpcyBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUgYWNjb3JkaW5nIHRvIHRoZQorICAgcmVsYXRpdmUgd2VpZ2h0cy4gIEFsdGVybmF0aXZlbHksIGlmIGEgKmN1bV93ZWlnaHRzKiBzZXF1ZW5jZSBpcyBnaXZlbiwgdGhlCisgICBzZWxlY3Rpb25zIGFyZSBtYWRlIGFjY29yZGluZyB0byB0aGUgY3VtdWxhdGl2ZSB3ZWlnaHRzIChwZXJoYXBzIGNvbXB1dGVkCisgICB1c2luZyA6ZnVuYzpgaXRlcnRvb2xzLmFjY3VtdWxhdGVgKS4gIEZvciBleGFtcGxlLCB0aGUgcmVsYXRpdmUgd2VpZ2h0cworICAgYGBbMTAsIDUsIDMwLCA1XWBgIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBjdW11bGF0aXZlIHdlaWdodHMKKyAgIGBgWzEwLCAxNSwgNDUsIDUwXWBgLiAgSW50ZXJuYWxseSwgdGhlIHJlbGF0aXZlIHdlaWdodHMgYXJlIGNvbnZlcnRlZCB0bworICAgY3VtdWxhdGl2ZSB3ZWlnaHRzIGJlZm9yZSBtYWtpbmcgc2VsZWN0aW9ucywgc28gc3VwcGx5aW5nIHRoZSBjdW11bGF0aXZlCisgICB3ZWlnaHRzIHNhdmVzIHdvcmsuCisKKyAgIElmIG5laXRoZXIgKndlaWdodHMqIG5vciAqY3VtX3dlaWdodHMqIGFyZSBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUKKyAgIHdpdGggZXF1YWwgcHJvYmFiaWxpdHkuICBJZiBhIHdlaWdodHMgc2VxdWVuY2UgaXMgc3VwcGxpZWQsIGl0IG11c3QgYmUKKyAgIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgKnBvcHVsYXRpb24qIHNlcXVlbmNlLiAgSXQgaXMgYSA6ZXhjOmBUeXBlRXJyb3JgCisgICB0byBzcGVjaWZ5IGJvdGggKndlaWdodHMqIGFuZCAqY3VtX3dlaWdodHMqLgorCisgICBUaGUgKndlaWdodHMqIG9yICpjdW1fd2VpZ2h0cyogY2FuIHVzZSBhbnkgbnVtZXJpYyB0eXBlIHRoYXQgaW50ZXJvcGVyYXRlcworICAgd2l0aCB0aGUgOmNsYXNzOmBmbG9hdGAgdmFsdWVzIHJldHVybmVkIGJ5IDpmdW5jOmByYW5kb21gICh0aGF0IGluY2x1ZGVzCisgICBpbnRlZ2VycywgZmxvYXRzLCBhbmQgZnJhY3Rpb25zIGJ1dCBleGNsdWRlcyBkZWNpbWFscykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGZ1bmN0aW9uOjogc2h1ZmZsZSh4WywgcmFuZG9tXSkKIApAQCAtMzEzLDM2ICszMzksMjggQEAKICAgID4+PiByYW5kb20uY2hvaWNlKCdhYmNkZWZnaGlqJykgICAgICAgICAgIyBTaW5nbGUgcmFuZG9tIGVsZW1lbnQKICAgICdjJwogCi0gICA+Pj4gaXRlbXMgPSBbMSwgMiwgMywgNCwgNSwgNiwgN10KLSAgID4+PiByYW5kb20uc2h1ZmZsZShpdGVtcykKLSAgID4+PiBpdGVtcwotICAgWzcsIDMsIDIsIDUsIDYsIDQsIDFdCisgICA+Pj4gZGVjayA9IFsnamFjaycsICdxdWVlbicsICdraW5nJywgJ2FjZSddCisgICA+Pj4gc2h1ZmZsZShkZWNrKQorICAgPj4+IGRlY2sKKyAgIFsna2luZycsICdxdWVlbicsICdhY2UnLCAnamFjayddCiAKICAgID4+PiByYW5kb20uc2FtcGxlKFsxLCAyLCAzLCA0LCA1XSwgIDMpICAgIyBUaHJlZSBzYW1wbGVzIHdpdGhvdXQgcmVwbGFjZW1lbnQKICAgIFs0LCAxLCA1XQogCi1BIGNvbW1vbiB0YXNrIGlzIHRvIG1ha2UgYSA6ZnVuYzpgcmFuZG9tLmNob2ljZWAgd2l0aCB3ZWlnaHRlZCBwcm9iYWJpbGl0aWVzLgorICAgPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpeCB3ZWlnaHRlZCBzYW1wbGVzIHdpdGggcmVwbGFjZW1lbnQKKyAgID4+PiBjaG9pY2VzKFsncmVkJywgJ2JsYWNrJywgJ2dyZWVuJ10sIFsxOCwgMTgsIDJdLCBrPTYpCisgICBbJ3JlZCcsICdncmVlbicsICdibGFjaycsICdibGFjaycsICdyZWQnLCAnYmxhY2snXQogCi1JZiB0aGUgd2VpZ2h0cyBhcmUgc21hbGwgaW50ZWdlciByYXRpb3MsIGEgc2ltcGxlIHRlY2huaXF1ZSBpcyB0byBidWlsZCBhIHNhbXBsZQotcG9wdWxhdGlvbiB3aXRoIHJlcGVhdHM6OgorRXhhbXBsZSBvZiBgc3RhdGlzdGljYWwgYm9vdHN0cmFwcGluZworPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jvb3RzdHJhcHBpbmdfKHN0YXRpc3RpY3MpPmBfIHVzaW5nIHJlc2FtcGxpbmcKK3dpdGggcmVwbGFjZW1lbnQgdG8gZXN0aW1hdGUgYSBjb25maWRlbmNlIGludGVydmFsIGZvciB0aGUgbWVhbiBvZiBhIHNtYWxsCitzYW1wbGUgb2Ygc2l6ZSBmaXZlOjoKIAotICAgID4+PiB3ZWlnaHRlZF9jaG9pY2VzID0gWygnUmVkJywgMyksICgnQmx1ZScsIDIpLCAoJ1llbGxvdycsIDEpLCAoJ0dyZWVuJywgNCldCi0gICAgPj4+IHBvcHVsYXRpb24gPSBbdmFsIGZvciB2YWwsIGNudCBpbiB3ZWlnaHRlZF9jaG9pY2VzIGZvciBpIGluIHJhbmdlKGNudCldCi0gICAgPj4+IHBvcHVsYXRpb24KLSAgICBbJ1JlZCcsICdSZWQnLCAnUmVkJywgJ0JsdWUnLCAnQmx1ZScsICdZZWxsb3cnLCAnR3JlZW4nLCAnR3JlZW4nLCAnR3JlZW4nLCAnR3JlZW4nXQorICAgIyBodHRwOi8vc3RhdGlzdGljcy5hYm91dC5jb20vb2QvQXBwbGljYXRpb25zL2EvRXhhbXBsZS1PZi1Cb290c3RyYXBwaW5nLmh0bQorICAgZnJvbSBzdGF0aXN0aWNzIGltcG9ydCBtZWFuCisgICBmcm9tIHJhbmRvbSBpbXBvcnQgY2hvaWNlcwogCi0gICAgPj4+IHJhbmRvbS5jaG9pY2UocG9wdWxhdGlvbikKLSAgICAnR3JlZW4nCi0KLUEgbW9yZSBnZW5lcmFsIGFwcHJvYWNoIGlzIHRvIGFycmFuZ2UgdGhlIHdlaWdodHMgaW4gYSBjdW11bGF0aXZlIGRpc3RyaWJ1dGlvbgotd2l0aCA6ZnVuYzpgaXRlcnRvb2xzLmFjY3VtdWxhdGVgLCBhbmQgdGhlbiBsb2NhdGUgdGhlIHJhbmRvbSB2YWx1ZSB3aXRoCi06ZnVuYzpgYmlzZWN0LmJpc2VjdGA6OgotCi0gICAgPj4+IGNob2ljZXMsIHdlaWdodHMgPSB6aXAoKndlaWdodGVkX2Nob2ljZXMpCi0gICAgPj4+IGN1bWRpc3QgPSBsaXN0KGl0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQotICAgID4+PiBjdW1kaXN0ICAgICAgICAgICAgIyBbMywgMysyLCAzKzIrMSwgMysyKzErNF0KLSAgICBbMywgNSwgNiwgMTBdCi0KLSAgICA+Pj4geCA9IHJhbmRvbS5yYW5kb20oKSAqIGN1bWRpc3RbLTFdCi0gICAgPj4+IGNob2ljZXNbYmlzZWN0LmJpc2VjdChjdW1kaXN0LCB4KV0KLSAgICAnQmx1ZScKKyAgIGRhdGEgPSAxLCAyLCA0LCA0LCAxMAorICAgbWVhbnMgPSBzb3J0ZWQobWVhbihjaG9pY2VzKGRhdGEsIGs9NSkpIGZvciBpIGluIHJhbmdlKDIwKSkKKyAgIHByaW50KCdUaGUgc2FtcGxlIG1lYW4gb2YgezouMWZ9IGhhcyBhIDkwJSBjb25maWRlbmNlIGludGVydmFsICcKKyAgICAgICAgICdmcm9tIHs6LjFmfSB0byB7Oi4xZn0nLmZvcm1hdChtZWFuKGRhdGEpLCBtZWFuc1sxXSwgbWVhbnNbLTJdKSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlLnJzdCBiL0RvYy9saWJyYXJ5L3JlLnJzdAppbmRleCAxY2E2MjFlLi5jOWYyMjYzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmUucnN0CkBAIC0yMzAsMTIgKzIzMCw4IEBACiAgICBmbGFncyBhcmUgZGVzY3JpYmVkIGluIDpyZWY6YGNvbnRlbnRzLW9mLW1vZHVsZS1yZWAuKSBUaGlzCiAgICBpcyB1c2VmdWwgaWYgeW91IHdpc2ggdG8gaW5jbHVkZSB0aGUgZmxhZ3MgYXMgcGFydCBvZiB0aGUgcmVndWxhcgogICAgZXhwcmVzc2lvbiwgaW5zdGVhZCBvZiBwYXNzaW5nIGEgKmZsYWcqIGFyZ3VtZW50IHRvIHRoZQotICAgOmZ1bmM6YHJlLmNvbXBpbGVgIGZ1bmN0aW9uLgotCi0gICBOb3RlIHRoYXQgdGhlIGBgKD94KWBgIGZsYWcgY2hhbmdlcyBob3cgdGhlIGV4cHJlc3Npb24gaXMgcGFyc2VkLiBJdCBzaG91bGQgYmUKLSAgIHVzZWQgZmlyc3QgaW4gdGhlIGV4cHJlc3Npb24gc3RyaW5nLCBvciBhZnRlciBvbmUgb3IgbW9yZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCi0gICBJZiB0aGVyZSBhcmUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZsYWcsIHRoZSByZXN1bHRzIGFyZQotICAgdW5kZWZpbmVkLgorICAgOmZ1bmM6YHJlLmNvbXBpbGVgIGZ1bmN0aW9uLiAgRmxhZ3Mgc2hvdWxkIGJlIHVzZWQgZmlyc3QgaW4gdGhlCisgICBleHByZXNzaW9uIHN0cmluZy4KIAogYGAoPzouLi4pYGAKICAgIEEgbm9uLWNhcHR1cmluZyB2ZXJzaW9uIG9mIHJlZ3VsYXIgcGFyZW50aGVzZXMuICBNYXRjaGVzIHdoYXRldmVyIHJlZ3VsYXIKQEAgLTI0Myw2ICsyMzksMTYgQEAKICAgICpjYW5ub3QqIGJlIHJldHJpZXZlZCBhZnRlciBwZXJmb3JtaW5nIGEgbWF0Y2ggb3IgcmVmZXJlbmNlZCBsYXRlciBpbiB0aGUKICAgIHBhdHRlcm4uCiAKK2BgKD9pbXN4LWltc3g6Li4uKWBgCisgICAoWmVybyBvciBtb3JlIGxldHRlcnMgZnJvbSB0aGUgc2V0IGBgJ2knYGAsIGBgJ20nYGAsIGBgJ3MnYGAsIGBgJ3gnYGAsCisgICBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGBgJy0nYGAgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgbGV0dGVycyBmcm9tIHRoZQorICAgc2FtZSBzZXQuKSAgVGhlIGxldHRlcnMgc2V0IG9yIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZ3M6CisgICA6Y29uc3Q6YHJlLklgIChpZ25vcmUgY2FzZSksIDpjb25zdDpgcmUuTWAgKG11bHRpLWxpbmUpLCA6Y29uc3Q6YHJlLlNgCisgICAoZG90IG1hdGNoZXMgYWxsKSwgYW5kIDpjb25zdDpgcmUuWGAgKHZlcmJvc2UpLCBmb3IgdGhlIHBhcnQgb2YgdGhlCisgICBleHByZXNzaW9uLiAgKFRoZSBmbGFncyBhcmUgZGVzY3JpYmVkIGluIDpyZWY6YGNvbnRlbnRzLW9mLW1vZHVsZS1yZWAuKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogYGAoP1A8bmFtZT4uLi4pYGAKICAgIFNpbWlsYXIgdG8gcmVndWxhciBwYXJlbnRoZXNlcywgYnV0IHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSB0aGUgZ3JvdXAgaXMKICAgIGFjY2Vzc2libGUgdmlhIHRoZSBzeW1ib2xpYyBncm91cCBuYW1lICpuYW1lKi4gIEdyb3VwIG5hbWVzIG11c3QgYmUgdmFsaWQKQEAgLTMyNyw4ICszMzMsOSBAQAogCiAKIFRoZSBzcGVjaWFsIHNlcXVlbmNlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIGEgY2hhcmFjdGVyIGZyb20gdGhlIGxpc3QgYmVsb3cuCi1JZiB0aGUgb3JkaW5hcnkgY2hhcmFjdGVyIGlzIG5vdCBvbiB0aGUgbGlzdCwgdGhlbiB0aGUgcmVzdWx0aW5nIFJFIHdpbGwgbWF0Y2gKLXRoZSBzZWNvbmQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsIGBgXCRgYCBtYXRjaGVzIHRoZSBjaGFyYWN0ZXIgYGAnJCdgYC4KK0lmIHRoZSBvcmRpbmFyeSBjaGFyYWN0ZXIgaXMgbm90IGFuIEFTQ0lJIGRpZ2l0IG9yIGFuIEFTQ0lJIGxldHRlciwgdGhlbiB0aGUKK3Jlc3VsdGluZyBSRSB3aWxsIG1hdGNoIHRoZSBzZWNvbmQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsIGBgXCRgYCBtYXRjaGVzIHRoZQorY2hhcmFjdGVyIGBgJyQnYGAuCiAKIGBgXG51bWJlcmBgCiAgICBNYXRjaGVzIHRoZSBjb250ZW50cyBvZiB0aGUgZ3JvdXAgb2YgdGhlIHNhbWUgbnVtYmVyLiAgR3JvdXBzIGFyZSBudW1iZXJlZApAQCAtNDQ4LDkgKzQ1NSw4IEBACiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgVGhlIGBgJ1x1J2BgIGFuZCBgYCdcVSdgYCBlc2NhcGUgc2VxdWVuY2VzIGhhdmUgYmVlbiBhZGRlZC4KIAotLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgotICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhCi0gICBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlciBub3cgYXJlIGVycm9ycy4KIAogCiAuLiBzZWVhbHNvOjoKQEAgLTUzOCwxMSArNTQ0LDExIEBACiAgICBjdXJyZW50IGxvY2FsZS4gVGhlIHVzZSBvZiB0aGlzIGZsYWcgaXMgZGlzY291cmFnZWQgYXMgdGhlIGxvY2FsZSBtZWNoYW5pc20KICAgIGlzIHZlcnkgdW5yZWxpYWJsZSwgYW5kIGl0IG9ubHkgaGFuZGxlcyBvbmUgImN1bHR1cmUiIGF0IGEgdGltZSBhbnl3YXk7CiAgICB5b3Ugc2hvdWxkIHVzZSBVbmljb2RlIG1hdGNoaW5nIGluc3RlYWQsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGluIFB5dGhvbiAzCi0gICBmb3IgVW5pY29kZSAoc3RyKSBwYXR0ZXJucy4gVGhpcyBmbGFnIG1ha2VzIHNlbnNlIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KKyAgIGZvciBVbmljb2RlIChzdHIpIHBhdHRlcm5zLiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICAgICBEZXByZWNhdGVkIHRoZSB1c2Ugb2YgIDpjb25zdDpgcmUuTE9DQUxFYCB3aXRoIHN0cmluZyBwYXR0ZXJucyBvcgotICAgICAgOmNvbnN0OmByZS5BU0NJSWAuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmNvbnN0OmByZS5MT0NBTEVgIGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucyBhbmQgaXMKKyAgICAgIG5vdCBjb21wYXRpYmxlIHdpdGggOmNvbnN0OmByZS5BU0NJSWAuCiAKIAogLi4gZGF0YTo6IE0KQEAgLTc0OCw5ICs3NTQsOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICAgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEKLSAgICAgIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjYuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyIG5vdyBhcmUgZXJyb3JzLgogCiAKIC4uIGZ1bmN0aW9uOjogc3VibihwYXR0ZXJuLCByZXBsLCBzdHJpbmcsIGNvdW50PTAsIGZsYWdzPTApCkBAIC0xMDE2LDYgKzEwMjEsMjIgQEAKICAgICAgICdjMycKIAogCisuLiBtZXRob2Q6OiBtYXRjaC5fX2dldGl0ZW1fXyhnKQorCisgICBUaGlzIGlzIGlkZW50aWNhbCB0byBgYG0uZ3JvdXAoZylgYC4gIFRoaXMgYWxsb3dzIGVhc2llciBhY2Nlc3MgdG8KKyAgIGFuIGluZGl2aWR1YWwgZ3JvdXAgZnJvbSBhIG1hdGNoOgorCisgICAgICA+Pj4gbSA9IHJlLm1hdGNoKHIiKFx3KykgKFx3KykiLCAiSXNhYWMgTmV3dG9uLCBwaHlzaWNpc3QiKQorICAgICAgPj4+IG1bMF0gICAgICAgIyBUaGUgZW50aXJlIG1hdGNoCisgICAgICAnSXNhYWMgTmV3dG9uJworICAgICAgPj4+IG1bMV0gICAgICAgIyBUaGUgZmlyc3QgcGFyZW50aGVzaXplZCBzdWJncm91cC4KKyAgICAgICdJc2FhYycKKyAgICAgID4+PiBtWzJdICAgICAgICMgVGhlIHNlY29uZCBwYXJlbnRoZXNpemVkIHN1Ymdyb3VwLgorICAgICAgJ05ld3RvbicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gbWV0aG9kOjogbWF0Y2guZ3JvdXBzKGRlZmF1bHQ9Tm9uZSkKIAogICAgUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGZyb20gMSB1cCB0byBob3dldmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggNGQzYzA5OS4uNTRjNTRiNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtMTY3LDYgKzE2NywyMCBAQAogICAgVGhpcyBjYWxscyA6YzpmdW5jOmBhZGRfaGlzdG9yeWAgaW4gdGhlIHVuZGVybHlpbmcgbGlicmFyeS4KIAogCisuLiBmdW5jdGlvbjo6IHNldF9hdXRvX2hpc3RvcnkoZW5hYmxlZCkKKworICAgRW5hYmxlIG9yIGRpc2FibGUgYXV0b21hdGljIGNhbGxzIHRvIDpjOmZ1bmM6YGFkZF9oaXN0b3J5YCB3aGVuIHJlYWRpbmcKKyAgIGlucHV0IHZpYSByZWFkbGluZS4gIFRoZSAqZW5hYmxlZCogYXJndW1lbnQgc2hvdWxkIGJlIGEgQm9vbGVhbiB2YWx1ZQorICAgdGhhdCB3aGVuIHRydWUsIGVuYWJsZXMgYXV0byBoaXN0b3J5LCBhbmQgdGhhdCB3aGVuIGZhbHNlLCBkaXNhYmxlcworICAgYXV0byBoaXN0b3J5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gaW1wbC1kZXRhaWw6OgorICAgICAgQXV0byBoaXN0b3J5IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGNoYW5nZXMgdG8gdGhpcyBkbyBub3QgcGVyc2lzdAorICAgICAgYWNyb3NzIG11bHRpcGxlIHNlc3Npb25zLgorCisKIFN0YXJ0dXAgaG9va3MKIC0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VjcmV0cy5yc3QgYi9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmY4NDhmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvc2VjcmV0cy5yc3QKQEAgLTAsMCArMSwxOTggQEAKKzptb2Q6YHNlY3JldHNgIC0tLSBHZW5lcmF0ZSBzZWN1cmUgcmFuZG9tIG51bWJlcnMgZm9yIG1hbmFnaW5nIHNlY3JldHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogc2VjcmV0cworICAgOnN5bm9wc2lzOiBHZW5lcmF0ZSBzZWN1cmUgcmFuZG9tIG51bWJlcnMgZm9yIG1hbmFnaW5nIHNlY3JldHMuCisKKy4uIG1vZHVsZWF1dGhvcjo6IFN0ZXZlbiBEJ0FwcmFubyA8c3RldmUrcHl0aG9uQHBlYXJ3b29kLmluZm8+CisuLiBzZWN0aW9uYXV0aG9yOjogU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4KKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiB0ZXN0c2V0dXA6OgorCisgICBmcm9tIHNlY3JldHMgaW1wb3J0ICoKKyAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvc2VjcmV0cy5weWAKKworLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIGlzIHVzZWQgZm9yIGdlbmVyYXRpbmcgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nCityYW5kb20gbnVtYmVycyBzdWl0YWJsZSBmb3IgbWFuYWdpbmcgZGF0YSBzdWNoIGFzIHBhc3N3b3JkcywgYWNjb3VudAorYXV0aGVudGljYXRpb24sIHNlY3VyaXR5IHRva2VucywgYW5kIHJlbGF0ZWQgc2VjcmV0cy4KKworSW4gcGFydGljdWxhcmx5LCA6bW9kOmBzZWNyZXRzYCBzaG91bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZQorZGVmYXVsdCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaW4gdGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlLCB3aGljaAoraXMgZGVzaWduZWQgZm9yIG1vZGVsbGluZyBhbmQgc2ltdWxhdGlvbiwgbm90IHNlY3VyaXR5IG9yIGNyeXB0b2dyYXBoeS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUwNmAKKworCitSYW5kb20gbnVtYmVycworLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG1vc3Qgc2VjdXJlIHNvdXJjZSBvZgorcmFuZG9tbmVzcyB0aGF0IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcy4KKworLi4gY2xhc3M6OiBTeXN0ZW1SYW5kb20KKworICAgQSBjbGFzcyBmb3IgZ2VuZXJhdGluZyByYW5kb20gbnVtYmVycyB1c2luZyB0aGUgaGlnaGVzdC1xdWFsaXR5CisgICBzb3VyY2VzIHByb3ZpZGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgU2VlCisgICA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuCisKKy4uIGZ1bmN0aW9uOjogY2hvaWNlKHNlcXVlbmNlKQorCisgICBSZXR1cm4gYSByYW5kb21seS1jaG9zZW4gZWxlbWVudCBmcm9tIGEgbm9uLWVtcHR5IHNlcXVlbmNlLgorCisuLiBmdW5jdGlvbjo6IHJhbmRiZWxvdyhuKQorCisgICBSZXR1cm4gYSByYW5kb20gaW50IGluIHRoZSByYW5nZSBbMCwgKm4qKS4KKworLi4gZnVuY3Rpb246OiByYW5kYml0cyhrKQorCisgICBSZXR1cm4gYW4gaW50IHdpdGggKmsqIHJhbmRvbSBiaXRzLgorCisKK0dlbmVyYXRpbmcgdG9rZW5zCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyBzZWN1cmUKK3Rva2Vucywgc3VpdGFibGUgZm9yIGFwcGxpY2F0aW9ucyBzdWNoIGFzIHBhc3N3b3JkIHJlc2V0cywKK2hhcmQtdG8tZ3Vlc3MgVVJMcywgYW5kIHNpbWlsYXIuCisKKy4uIGZ1bmN0aW9uOjogdG9rZW5fYnl0ZXMoW25ieXRlcz1Ob25lXSkKKworICAgUmV0dXJuIGEgcmFuZG9tIGJ5dGUgc3RyaW5nIGNvbnRhaW5pbmcgKm5ieXRlcyogbnVtYmVyIG9mIGJ5dGVzLgorICAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcworICAgdXNlZC4KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiB0b2tlbl9ieXRlcygxNikgICNkb2N0ZXN0OitTS0lQCisgICAgICBiJ1x4ZWJyXHgxN0QqdFx4YWVceGQ0XHhlM1NceGI2XHhlMlx4ZWJQMVx4OGInCisKKworLi4gZnVuY3Rpb246OiB0b2tlbl9oZXgoW25ieXRlcz1Ob25lXSkKKworICAgUmV0dXJuIGEgcmFuZG9tIHRleHQgc3RyaW5nLCBpbiBoZXhhZGVjaW1hbC4gIFRoZSBzdHJpbmcgaGFzICpuYnl0ZXMqCisgICByYW5kb20gYnl0ZXMsIGVhY2ggYnl0ZSBjb252ZXJ0ZWQgdG8gdHdvIGhleCBkaWdpdHMuICBJZiAqbmJ5dGVzKiBpcworICAgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX2hleCgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgICAnZjliZjc4YjlhMThjZTZkNDZhMGNkMmIwYjg2ZGY5ZGEnCisKKy4uIGZ1bmN0aW9uOjogdG9rZW5fdXJsc2FmZShbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gVVJMLXNhZmUgdGV4dCBzdHJpbmcsIGNvbnRhaW5pbmcgKm5ieXRlcyogcmFuZG9tCisgICBieXRlcy4gIFRoZSB0ZXh0IGlzIEJhc2U2NCBlbmNvZGVkLCBzbyBvbiBhdmVyYWdlIGVhY2ggYnl0ZSByZXN1bHRzCisgICBpbiBhcHByb3hpbWF0ZWx5IDEuMyBjaGFyYWN0ZXJzLiAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90CisgICBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiB0b2tlbl91cmxzYWZlKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgICdEcm1oemU2RVBjdjBmTl84MUJqLW5BJworCisKK0hvdyBtYW55IGJ5dGVzIHNob3VsZCB0b2tlbnMgdXNlPworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RvIGJlIHNlY3VyZSBhZ2FpbnN0CitgYnJ1dGUtZm9yY2UgYXR0YWNrcyA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJ1dGUtZm9yY2VfYXR0YWNrPmBfLAordG9rZW5zIG5lZWQgdG8gaGF2ZSBzdWZmaWNpZW50IHJhbmRvbW5lc3MuICBVbmZvcnR1bmF0ZWx5LCB3aGF0IGlzCitjb25zaWRlcmVkIHN1ZmZpY2llbnQgd2lsbCBuZWNlc3NhcmlseSBpbmNyZWFzZSBhcyBjb21wdXRlcnMgZ2V0IG1vcmUKK3Bvd2VyZnVsIGFuZCBhYmxlIHRvIG1ha2UgbW9yZSBndWVzc2VzIGluIGEgc2hvcnRlciBwZXJpb2QuICBBcyBvZiAyMDE1LAoraXQgaXMgYmVsaWV2ZWQgdGhhdCAzMiBieXRlcyAoMjU2IGJpdHMpIG9mIHJhbmRvbW5lc3MgaXMgc3VmZmljaWVudCBmb3IKK3RoZSB0eXBpY2FsIHVzZS1jYXNlIGV4cGVjdGVkIGZvciB0aGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlLgorCitGb3IgdGhvc2Ugd2hvIHdhbnQgdG8gbWFuYWdlIHRoZWlyIG93biB0b2tlbiBsZW5ndGgsIHlvdSBjYW4gZXhwbGljaXRseQorc3BlY2lmeSBob3cgbXVjaCByYW5kb21uZXNzIGlzIHVzZWQgZm9yIHRva2VucyBieSBnaXZpbmcgYW4gOmNsYXNzOmBpbnRgCithcmd1bWVudCB0byB0aGUgdmFyaW91cyBgYHRva2VuXypgYCBmdW5jdGlvbnMuICBUaGF0IGFyZ3VtZW50IGlzIHRha2VuCithcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHJhbmRvbW5lc3MgdG8gdXNlLgorCitPdGhlcndpc2UsIGlmIG5vIGFyZ3VtZW50IGlzIHByb3ZpZGVkLCBvciBpZiB0aGUgYXJndW1lbnQgaXMgYGBOb25lYGAsCit0aGUgYGB0b2tlbl8qYGAgZnVuY3Rpb25zIHdpbGwgdXNlIGEgcmVhc29uYWJsZSBkZWZhdWx0IGluc3RlYWQuCisKKy4uIG5vdGU6OgorCisgICBUaGF0IGRlZmF1bHQgaXMgc3ViamVjdCB0byBjaGFuZ2UgYXQgYW55IHRpbWUsIGluY2x1ZGluZyBkdXJpbmcKKyAgIG1haW50ZW5hbmNlIHJlbGVhc2VzLgorCisKK090aGVyIGZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogY29tcGFyZV9kaWdlc3QoYSwgYikKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZ3MgKmEqIGFuZCAqYiogYXJlIGVxdWFsLCBvdGhlcndpc2UgYGBGYWxzZWBgLAorICAgaW4gc3VjaCBhIHdheSBhcyB0byByZWR1Y2UgdGhlIHJpc2sgb2YKKyAgIGB0aW1pbmcgYXR0YWNrcyA8aHR0cDovL2NvZGFoYWxlLmNvbS9hLWxlc3Nvbi1pbi10aW1pbmctYXR0YWNrcy8+YF8uCisgICBTZWUgOmZ1bmM6YGhtYWMuY29tcGFyZV9kaWdlc3RgIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuCisKKworUmVjaXBlcyBhbmQgYmVzdCBwcmFjdGljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBzaG93cyByZWNpcGVzIGFuZCBiZXN0IHByYWN0aWNlcyBmb3IgdXNpbmcgOm1vZDpgc2VjcmV0c2AKK3RvIG1hbmFnZSBhIGJhc2ljIGxldmVsIG9mIHNlY3VyaXR5LgorCitHZW5lcmF0ZSBhbiBlaWdodC1jaGFyYWN0ZXIgYWxwaGFudW1lcmljIHBhc3N3b3JkOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgIGltcG9ydCBzdHJpbmcKKyAgIGFscGhhYmV0ID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzCisgICBwYXNzd29yZCA9ICcnLmpvaW4oY2hvaWNlKGFscGhhYmV0KSBmb3IgaSBpbiByYW5nZSg4KSkKKworCisuLiBub3RlOjoKKworICAgQXBwbGljYXRpb25zIHNob3VsZCBub3QKKyAgIGBzdG9yZSBwYXNzd29yZHMgaW4gYSByZWNvdmVyYWJsZSBmb3JtYXQgPGh0dHA6Ly9jd2UubWl0cmUub3JnL2RhdGEvZGVmaW5pdGlvbnMvMjU3Lmh0bWw+YF8sCisgICB3aGV0aGVyIHBsYWluIHRleHQgb3IgZW5jcnlwdGVkLiAgVGhleSBzaG91bGQgYmUgc2FsdGVkIGFuZCBoYXNoZWQKKyAgIHVzaW5nIGEgY3J5cHRvZ3JhcGhpY2FsbHktc3Ryb25nIG9uZS13YXkgKGlycmV2ZXJzaWJsZSkgaGFzaCBmdW5jdGlvbi4KKworCitHZW5lcmF0ZSBhIHRlbi1jaGFyYWN0ZXIgYWxwaGFudW1lcmljIHBhc3N3b3JkIHdpdGggYXQgbGVhc3Qgb25lCitsb3dlcmNhc2UgY2hhcmFjdGVyLCBhdCBsZWFzdCBvbmUgdXBwZXJjYXNlIGNoYXJhY3RlciwgYW5kIGF0IGxlYXN0Cit0aHJlZSBkaWdpdHM6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgaW1wb3J0IHN0cmluZworICAgYWxwaGFiZXQgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgIHdoaWxlIFRydWU6CisgICAgICAgcGFzc3dvcmQgPSAnJy5qb2luKGNob2ljZShhbHBoYWJldCkgZm9yIGkgaW4gcmFuZ2UoMTApKQorICAgICAgIGlmIChhbnkoYy5pc2xvd2VyKCkgZm9yIGMgaW4gcGFzc3dvcmQpCisgICAgICAgICAgICAgICBhbmQgYW55KGMuaXN1cHBlcigpIGZvciBjIGluIHBhc3N3b3JkKQorICAgICAgICAgICAgICAgYW5kIHN1bShjLmlzZGlnaXQoKSBmb3IgYyBpbiBwYXNzd29yZCkgPj0gMyk6CisgICAgICAgICAgIGJyZWFrCisKKworR2VuZXJhdGUgYW4gYFhLQ0Qtc3R5bGUgcGFzc3BocmFzZSA8aHR0cDovL3hrY2QuY29tLzkzNi8+YF86CisKKy4uIHRlc3Rjb2RlOjoKKworICAgIyBPbiBzdGFuZGFyZCBMaW51eCBzeXN0ZW1zLCB1c2UgYSBjb252ZW5pZW50IGRpY3Rpb25hcnkgZmlsZS4KKyAgICMgT3RoZXIgcGxhdGZvcm1zIG1heSBuZWVkIHRvIHByb3ZpZGUgdGhlaXIgb3duIHdvcmQtbGlzdC4KKyAgIHdpdGggb3BlbignL3Vzci9zaGFyZS9kaWN0L3dvcmRzJykgYXMgZjoKKyAgICAgICB3b3JkcyA9IFt3b3JkLnN0cmlwKCkgZm9yIHdvcmQgaW4gZl0KKyAgICAgICBwYXNzd29yZCA9ICcgJy5qb2luKGNob2ljZSh3b3JkcykgZm9yIGkgaW4gcmFuZ2UoNCkpCisKKworR2VuZXJhdGUgYSBoYXJkLXRvLWd1ZXNzIHRlbXBvcmFyeSBVUkwgY29udGFpbmluZyBhIHNlY3VyaXR5IHRva2VuCitzdWl0YWJsZSBmb3IgcGFzc3dvcmQgcmVjb3ZlcnkgYXBwbGljYXRpb25zOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgIHVybCA9ICdodHRwczovL215ZG9tYWluLmNvbS9yZXNldD0nICsgdG9rZW5fdXJsc2FmZSgpCisKKworCisuLgorICAgIyBUaGlzIG1vZGVsaW5lIG11c3QgYXBwZWFyIHdpdGhpbiB0aGUgbGFzdCB0ZW4gbGluZXMgb2YgdGhlIGZpbGUuCisgICBrYXRlOiBpbmRlbnQtd2lkdGggMzsgcmVtb3ZlLXRyYWlsaW5nLXNwYWNlIG9uOyByZXBsYWNlLXRhYnMgb247IGVuY29kaW5nIHV0Zi04OwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdCBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKaW5kZXggYTgxMzg2YS4uZjk3MTE4ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CkBAIC0yNjgsMzUgKzI2OCw0MyBAQAogCiAgICAqZXZlbnRtYXNrKgogCi0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IENvbnN0YW50ICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCi0gICB8IDpjb25zdDpgRVBPTExJTmAgICAgICB8IEF2YWlsYWJsZSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExPVVRgICAgICB8IEF2YWlsYWJsZSBmb3Igd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExQUklgICAgICB8IFVyZ2VudCBkYXRhIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExFUlJgICAgICB8IEVycm9yIGNvbmRpdGlvbiBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExIVVBgICAgICB8IEhhbmcgdXAgaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExFVGAgICAgICB8IFNldCBFZGdlIFRyaWdnZXIgYmVoYXZpb3IsIHRoZSBkZWZhdWx0IGlzICAgICB8Ci0gICB8ICAgICAgICAgICAgICAgICAgICAgICB8IExldmVsIFRyaWdnZXIgYmVoYXZpb3IgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExPTkVTSE9UYCB8IFNldCBvbmUtc2hvdCBiZWhhdmlvci4gQWZ0ZXIgb25lIGV2ZW50IGlzICAgICB8Ci0gICB8ICAgICAgICAgICAgICAgICAgICAgICB8IHB1bGxlZCBvdXQsIHRoZSBmZCBpcyBpbnRlcm5hbGx5IGRpc2FibGVkICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExSRE5PUk1gICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTElOYCAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExSREJBTkRgICB8IFByaW9yaXR5IGRhdGEgYmFuZCBjYW4gYmUgcmVhZC4gICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExXUk5PUk1gICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExXUkJBTkRgICB8IFByaW9yaXR5IGRhdGEgbWF5IGJlIHdyaXR0ZW4uICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExNU0dgICAgICB8IElnbm9yZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICB8IDpjb25zdDpgRVBPTExJTmAgICAgICAgIHwgQXZhaWxhYmxlIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICB8IEF2YWlsYWJsZSBmb3Igd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFBSSWAgICAgICAgfCBVcmdlbnQgZGF0YSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExFUlJgICAgICAgIHwgRXJyb3IgY29uZGl0aW9uIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMSFVQYCAgICAgICB8IEhhbmcgdXAgaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVUYCAgICAgICAgfCBTZXQgRWRnZSBUcmlnZ2VyIGJlaGF2aW9yLCB0aGUgZGVmYXVsdCBpcyAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IExldmVsIFRyaWdnZXIgYmVoYXZpb3IgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTE9ORVNIT1RgICAgfCBTZXQgb25lLXNob3QgYmVoYXZpb3IuIEFmdGVyIG9uZSBldmVudCBpcyAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHB1bGxlZCBvdXQsIHRoZSBmZCBpcyBpbnRlcm5hbGx5IGRpc2FibGVkICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVYQ0xVU0lWRWAgfCBXYWtlIG9ubHkgb25lIGVwb2xsIG9iamVjdCB3aGVuIHRoZSAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzc29jaWF0ZWQgZmQgaGFzIGFuIGV2ZW50LiBUaGUgZGVmYXVsdCAoaWYgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhpcyBmbGFnIGlzIG5vdCBzZXQpIGlzIHRvIHdha2UgYWxsIGVwb2xsICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBvYmplY3RzIHBvbGxpbmcgb24gb24gYSBmZC4gICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSREhVUGAgICAgIHwgU3RyZWFtIHNvY2tldCBwZWVyIGNsb3NlZCBjb25uZWN0aW9uIG9yIHNodXQgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBkb3duIHdyaXRpbmcgaGFsZiBvZiBjb25uZWN0aW9uLiAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSRE5PUk1gICAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUkRCQU5EYCAgICB8IFByaW9yaXR5IGRhdGEgYmFuZCBjYW4gYmUgcmVhZC4gICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFdSTk9STWAgICAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExPVVRgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExXUkJBTkRgICAgIHwgUHJpb3JpdHkgZGF0YSBtYXkgYmUgd3JpdHRlbi4gICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMTVNHYCAgICAgICB8IElnbm9yZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogCiAuLiBtZXRob2Q6OiBlcG9sbC5jbG9zZSgpCkBAIC0zODUsNiArMzkzLDkgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmNvbnN0OmBQT0xMSFVQYCAgfCBIdW5nIHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBQT0xMUkRIVVBgfCBTdHJlYW0gc29ja2V0IHBlZXIgY2xvc2VkIGNvbm5lY3Rpb24sIG9yIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCBzaHV0IGRvd24gd3JpdGluZyBoYWxmIG9mIGNvbm5lY3Rpb24gICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmNvbnN0OmBQT0xMTlZBTGAgfCBJbnZhbGlkIHJlcXVlc3Q6IGRlc2NyaXB0b3Igbm90IG9wZW4gICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0IGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CmluZGV4IGU4MWY5ODIuLjFhODliZjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKQEAgLTczLDExICs3MywxMSBAQAogVGhlIDptb2Q6YHNobGV4YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzOgogCiAKLS4uIGNsYXNzOjogc2hsZXgoaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlKQorLi4gY2xhc3M6OiBzaGxleChpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UsIHB1bmN0dWF0aW9uX2NoYXJzPUZhbHNlKQogCiAgICBBIDpjbGFzczpgfnNobGV4LnNobGV4YCBpbnN0YW5jZSBvciBzdWJjbGFzcyBpbnN0YW5jZSBpcyBhIGxleGljYWwgYW5hbHl6ZXIKICAgIG9iamVjdC4gIFRoZSBpbml0aWFsaXphdGlvbiBhcmd1bWVudCwgaWYgcHJlc2VudCwgc3BlY2lmaWVzIHdoZXJlIHRvIHJlYWQKLSAgIGNoYXJhY3RlcnMgZnJvbS4gSXQgbXVzdCBiZSBhIGZpbGUtL3N0cmVhbS1saWtlIG9iamVjdCB3aXRoCisgICBjaGFyYWN0ZXJzIGZyb20uICBJdCBtdXN0IGJlIGEgZmlsZS0vc3RyZWFtLWxpa2Ugb2JqZWN0IHdpdGgKICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkYCBhbmQgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYCBtZXRob2RzLCBvcgogICAgYSBzdHJpbmcuICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgaW5wdXQgd2lsbCBiZSB0YWtlbiBmcm9tIGBgc3lzLnN0ZGluYGAuCiAgICBUaGUgc2Vjb25kIG9wdGlvbmFsIGFyZ3VtZW50IGlzIGEgZmlsZW5hbWUgc3RyaW5nLCB3aGljaCBzZXRzIHRoZSBpbml0aWFsCkBAIC04Nyw4ICs4NywxOSBAQAogICAgd2hlbiAqcG9zaXgqIGlzIG5vdCB0cnVlIChkZWZhdWx0KSwgdGhlIDpjbGFzczpgfnNobGV4LnNobGV4YCBpbnN0YW5jZSB3aWxsCiAgICBvcGVyYXRlIGluIGNvbXBhdGliaWxpdHkgbW9kZS4gIFdoZW4gb3BlcmF0aW5nIGluIFBPU0lYIG1vZGUsCiAgICA6Y2xhc3M6YH5zaGxleC5zaGxleGAgd2lsbCB0cnkgdG8gYmUgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIFBPU0lYIHNoZWxsCi0gICBwYXJzaW5nIHJ1bGVzLgorICAgcGFyc2luZyBydWxlcy4gIFRoZSAqcHVuY3R1YXRpb25fY2hhcnMqIGFyZ3VtZW50IHByb3ZpZGVzIGEgd2F5IHRvIG1ha2UgdGhlCisgICBiZWhhdmlvdXIgZXZlbiBjbG9zZXIgdG8gaG93IHJlYWwgc2hlbGxzIHBhcnNlLiAgVGhpcyBjYW4gdGFrZSBhIG51bWJlciBvZgorICAgdmFsdWVzOiB0aGUgZGVmYXVsdCB2YWx1ZSwgYGBGYWxzZWBgLCBwcmVzZXJ2ZXMgdGhlIGJlaGF2aW91ciBzZWVuIHVuZGVyCisgICBQeXRob24gMy41IGFuZCBlYXJsaWVyLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHBhcnNpbmcgb2YgdGhlIGNoYXJhY3RlcnMKKyAgIGBgKCk7PD58JmBgIGlzIGNoYW5nZWQ6IGFueSBydW4gb2YgdGhlc2UgY2hhcmFjdGVycyAoY29uc2lkZXJlZCBwdW5jdHVhdGlvbgorICAgY2hhcmFjdGVycykgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nIG9mCisgICBjaGFyYWN0ZXJzLCB0aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBhcyB0aGUgcHVuY3R1YXRpb24gY2hhcmFjdGVycy4gIEFueQorICAgY2hhcmFjdGVycyBpbiB0aGUgOmF0dHI6YHdvcmRjaGFyc2AgYXR0cmlidXRlIHRoYXQgYXBwZWFyIGluCisgICAqcHVuY3R1YXRpb25fY2hhcnMqIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIDphdHRyOmB3b3JkY2hhcnNgLiAgU2VlCisgICA6cmVmOmBpbXByb3ZlZC1zaGVsbC1jb21wYXRpYmlsaXR5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSAqcHVuY3R1YXRpb25fY2hhcnMqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIC4uIHNlZWFsc286OgogCkBAIC0xOTEsNyArMjAyLDEzIEBACiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53b3JkY2hhcnMKIAogICAgVGhlIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBhY2N1bXVsYXRlIGludG8gbXVsdGktY2hhcmFjdGVyIHRva2Vucy4gIEJ5Ci0gICBkZWZhdWx0LCBpbmNsdWRlcyBhbGwgQVNDSUkgYWxwaGFudW1lcmljcyBhbmQgdW5kZXJzY29yZS4KKyAgIGRlZmF1bHQsIGluY2x1ZGVzIGFsbCBBU0NJSSBhbHBoYW51bWVyaWNzIGFuZCB1bmRlcnNjb3JlLiAgSW4gUE9TSVggbW9kZSwgdGhlCisgICBhY2NlbnRlZCBjaGFyYWN0ZXJzIGluIHRoZSBMYXRpbi0xIHNldCBhcmUgYWxzbyBpbmNsdWRlZC4gIElmCisgICA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgIGlzIG5vdCBlbXB0eSwgdGhlIGNoYXJhY3RlcnMgYGB+LS4vKj89YGAsIHdoaWNoIGNhbgorICAgYXBwZWFyIGluIGZpbGVuYW1lIHNwZWNpZmljYXRpb25zIGFuZCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycywgd2lsbCBhbHNvIGJlCisgICBpbmNsdWRlZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIGFueSBjaGFyYWN0ZXJzIHdoaWNoIGFwcGVhciBpbgorICAgYGBwdW5jdHVhdGlvbl9jaGFyc2BgIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGBgd29yZGNoYXJzYGAgaWYgdGhleSBhcmUgcHJlc2VudAorICAgdGhlcmUuCiAKIAogLi4gYXR0cmlidXRlOjogc2hsZXgud2hpdGVzcGFjZQpAQCAtMjIyLDkgKzIzOSwxMyBAQAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53aGl0ZXNwYWNlX3NwbGl0CiAKLSAgIElmIGBgVHJ1ZWBgLCB0b2tlbnMgd2lsbCBvbmx5IGJlIHNwbGl0IGluIHdoaXRlc3BhY2VzLiBUaGlzIGlzIHVzZWZ1bCwgZm9yCisgICBJZiBgYFRydWVgYCwgdG9rZW5zIHdpbGwgb25seSBiZSBzcGxpdCBpbiB3aGl0ZXNwYWNlcy4gIFRoaXMgaXMgdXNlZnVsLCBmb3IKICAgIGV4YW1wbGUsIGZvciBwYXJzaW5nIGNvbW1hbmQgbGluZXMgd2l0aCA6Y2xhc3M6YH5zaGxleC5zaGxleGAsIGdldHRpbmcKLSAgIHRva2VucyBpbiBhIHNpbWlsYXIgd2F5IHRvIHNoZWxsIGFyZ3VtZW50cy4KKyAgIHRva2VucyBpbiBhIHNpbWlsYXIgd2F5IHRvIHNoZWxsIGFyZ3VtZW50cy4gIElmIHRoaXMgYXR0cmlidXRlIGlzIGBgVHJ1ZWBgLAorICAgOmF0dHI6YHB1bmN0dWF0aW9uX2NoYXJzYCB3aWxsIGhhdmUgbm8gZWZmZWN0LCBhbmQgc3BsaXR0aW5nIHdpbGwgaGFwcGVuCisgICBvbmx5IG9uIHdoaXRlc3BhY2VzLiAgV2hlbiB1c2luZyA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgLCB3aGljaCBpcworICAgaW50ZW5kZWQgdG8gcHJvdmlkZSBwYXJzaW5nIGNsb3NlciB0byB0aGF0IGltcGxlbWVudGVkIGJ5IHNoZWxscywgaXQgaXMKKyAgIGFkdmlzYWJsZSB0byBsZWF2ZSBgYHdoaXRlc3BhY2Vfc3BsaXRgYCBhcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IHZhbHVlKS4KIAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC5pbmZpbGUKQEAgLTI0NSwxMCArMjY2LDkgQEAKICAgIFRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgIGJ5IGRlZmF1bHQuICBJZiB5b3UgYXNzaWduIGEgc3RyaW5nIHRvIGl0LCB0aGF0CiAgICBzdHJpbmcgd2lsbCBiZSByZWNvZ25pemVkIGFzIGEgbGV4aWNhbC1sZXZlbCBpbmNsdXNpb24gcmVxdWVzdCBzaW1pbGFyIHRvIHRoZQogICAgYGBzb3VyY2VgYCBrZXl3b3JkIGluIHZhcmlvdXMgc2hlbGxzLiAgVGhhdCBpcywgdGhlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0b2tlbgotICAgd2lsbCBiZSBvcGVuZWQgYXMgYSBmaWxlbmFtZSBhbmQgaW5wdXQgd2lsbAotICAgYmUgdGFrZW4gZnJvbSB0aGF0IHN0cmVhbSB1bnRpbCBFT0YsIGF0IHdoaWNoCi0gICBwb2ludCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UuY2xvc2VgIG1ldGhvZCBvZiB0aGF0IHN0cmVhbSB3aWxsIGJlIGNhbGxlZCBhbmQKLSAgIHRoZSBpbnB1dCBzb3VyY2Ugd2lsbCBhZ2FpbiBiZWNvbWUgdGhlIG9yaWdpbmFsIGlucHV0IHN0cmVhbS4gIFNvdXJjZQorICAgd2lsbCBiZSBvcGVuZWQgYXMgYSBmaWxlbmFtZSBhbmQgaW5wdXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoYXQgc3RyZWFtIHVudGlsCisgICBFT0YsIGF0IHdoaWNoIHBvaW50IHRoZSA6bWV0aDpgfmlvLklPQmFzZS5jbG9zZWAgbWV0aG9kIG9mIHRoYXQgc3RyZWFtIHdpbGwgYmUKKyAgIGNhbGxlZCBhbmQgdGhlIGlucHV0IHNvdXJjZSB3aWxsIGFnYWluIGJlY29tZSB0aGUgb3JpZ2luYWwgaW5wdXQgc3RyZWFtLiAgU291cmNlCiAgICByZXF1ZXN0cyBtYXkgYmUgc3RhY2tlZCBhbnkgbnVtYmVyIG9mIGxldmVscyBkZWVwLgogCiAKQEAgLTI3NSw2ICsyOTUsMTYgQEAKICAgIChgYCcnYGApLCBpbiBub24tUE9TSVggbW9kZSwgYW5kIHRvIGBgTm9uZWBgIGluIFBPU0lYIG1vZGUuCiAKIAorLi4gYXR0cmlidXRlOjogc2hsZXgucHVuY3R1YXRpb25fY2hhcnMKKworICAgQ2hhcmFjdGVycyB0aGF0IHdpbGwgYmUgY29uc2lkZXJlZCBwdW5jdHVhdGlvbi4gUnVucyBvZiBwdW5jdHVhdGlvbgorICAgY2hhcmFjdGVycyB3aWxsIGJlIHJldHVybmVkIGFzIGEgc2luZ2xlIHRva2VuLiBIb3dldmVyLCBub3RlIHRoYXQgbm8KKyAgIHNlbWFudGljIHZhbGlkaXR5IGNoZWNraW5nIHdpbGwgYmUgcGVyZm9ybWVkOiBmb3IgZXhhbXBsZSwgJz4+PicgY291bGQgYmUKKyAgIHJldHVybmVkIGFzIGEgdG9rZW4sIGV2ZW4gdGhvdWdoIGl0IG1heSBub3QgYmUgcmVjb2duaXNlZCBhcyBzdWNoIGJ5IHNoZWxscy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gX3NobGV4LXBhcnNpbmctcnVsZXM6CiAKIFBhcnNpbmcgUnVsZXMKQEAgLTMyNywzICszNTcsNjIgQEAKICogRU9GIGlzIHNpZ25hbGVkIHdpdGggYSA6Y29uc3Q6YE5vbmVgIHZhbHVlOwogCiAqIFF1b3RlZCBlbXB0eSBzdHJpbmdzIChgYCcnYGApIGFyZSBhbGxvd2VkLgorCisuLiBfaW1wcm92ZWQtc2hlbGwtY29tcGF0aWJpbGl0eToKKworSW1wcm92ZWQgQ29tcGF0aWJpbGl0eSB3aXRoIFNoZWxscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworVGhlIDpjbGFzczpgc2hsZXhgIGNsYXNzIHByb3ZpZGVzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgcGFyc2luZyBwZXJmb3JtZWQgYnkKK2NvbW1vbiBVbml4IHNoZWxscyBsaWtlIGBgYmFzaGBgLCBgYGRhc2hgYCwgYW5kIGBgc2hgYC4gIFRvIHRha2UgYWR2YW50YWdlIG9mCit0aGlzIGNvbXBhdGliaWxpdHksIHNwZWNpZnkgdGhlIGBgcHVuY3R1YXRpb25fY2hhcnNgYCBhcmd1bWVudCBpbiB0aGUKK2NvbnN0cnVjdG9yLiAgVGhpcyBkZWZhdWx0cyB0byBgYEZhbHNlYGAsIHdoaWNoIHByZXNlcnZlcyBwcmUtMy42IGJlaGF2aW91ci4KK0hvd2V2ZXIsIGlmIGl0IGlzIHNldCB0byBgYFRydWVgYCwgdGhlbiBwYXJzaW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGBgKCk7PD58JmBgCitpcyBjaGFuZ2VkOiBhbnkgcnVuIG9mIHRoZXNlIGNoYXJhY3RlcnMgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uICBXaGlsZQordGhpcyBpcyBzaG9ydCBvZiBhIGZ1bGwgcGFyc2VyIGZvciBzaGVsbHMgKHdoaWNoIHdvdWxkIGJlIG91dCBvZiBzY29wZSBmb3IgdGhlCitzdGFuZGFyZCBsaWJyYXJ5LCBnaXZlbiB0aGUgbXVsdGlwbGljaXR5IG9mIHNoZWxscyBvdXQgdGhlcmUpLCBpdCBkb2VzIGFsbG93Cit5b3UgdG8gcGVyZm9ybSBwcm9jZXNzaW5nIG9mIGNvbW1hbmQgbGluZXMgbW9yZSBlYXNpbHkgdGhhbiB5b3UgY291bGQKK290aGVyd2lzZS4gIFRvIGlsbHVzdHJhdGUsIHlvdSBjYW4gc2VlIHRoZSBkaWZmZXJlbmNlIGluIHRoZSBmb2xsb3dpbmcgc25pcHBldDo6CisKKyAgICBpbXBvcnQgc2hsZXgKKworICAgIGZvciBwdW5jdCBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICBpZiBwdW5jdDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnT2xkJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWVzc2FnZSA9ICdOZXcnCisgICAgICAgIHRleHQgPSAiYSAmJiBiOyBjICYmIGQgfHwgZTsgZiA+J2FiYyc7IChkZWYgXCJnaGlcIikiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCh0ZXh0LCBwdW5jdHVhdGlvbl9jaGFycz1wdW5jdCkKKyAgICAgICAgcHJpbnQoJyVzOiAlcycgJSAobWVzc2FnZSwgbGlzdChzKSkpCisKK3doaWNoIHByaW50cyBvdXQ6OgorCisgICAgT2xkOiBbJ2EnLCAnJicsICcmJywgJ2InLCAnOycsICdjJywgJyYnLCAnJicsICdkJywgJ3wnLCAnfCcsICdlJywgJzsnLCAnZicsICc+JywgIidhYmMnIiwgJzsnLCAnKCcsICdkZWYnLCAnImdoaSInLCAnKSddCisgICAgTmV3OiBbJ2EnLCAnJiYnLCAnYicsICc7JywgJ2MnLCAnJiYnLCAnZCcsICd8fCcsICdlJywgJzsnLCAnZicsICc+JywgIidhYmMnIiwgJzsnLCAnKCcsICdkZWYnLCAnImdoaSInLCAnKSddCisKK09mIGNvdXJzZSwgdG9rZW5zIHdpbGwgYmUgcmV0dXJuZWQgd2hpY2ggYXJlIG5vdCB2YWxpZCBmb3Igc2hlbGxzLCBhbmQgeW91J2xsCituZWVkIHRvIGltcGxlbWVudCB5b3VyIG93biBlcnJvciBjaGVja3Mgb24gdGhlIHJldHVybmVkIHRva2Vucy4KKworSW5zdGVhZCBvZiBwYXNzaW5nIGBgVHJ1ZWBgIGFzIHRoZSB2YWx1ZSBmb3IgdGhlIHB1bmN0dWF0aW9uX2NoYXJzIHBhcmFtZXRlciwKK3lvdSBjYW4gcGFzcyBhIHN0cmluZyB3aXRoIHNwZWNpZmljIGNoYXJhY3RlcnMsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUKK3doaWNoIGNoYXJhY3RlcnMgY29uc3RpdHV0ZSBwdW5jdHVhdGlvbi4gRm9yIGV4YW1wbGU6OgorCisgICAgPj4+IGltcG9ydCBzaGxleAorICAgID4+PiBzID0gc2hsZXguc2hsZXgoImEgJiYgYiB8fCBjIiwgcHVuY3R1YXRpb25fY2hhcnM9InwiKQorICAgID4+PiBsaXN0KHMpCisgICAgWydhJywgJyYnLCAnJicsICdiJywgJ3x8JywgJ2MnXQorCisuLiBub3RlOjogV2hlbiBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgaXMgc3BlY2lmaWVkLCB0aGUgOmF0dHI6YH5zaGxleC53b3JkY2hhcnNgCisgICBhdHRyaWJ1dGUgaXMgYXVnbWVudGVkIHdpdGggdGhlIGNoYXJhY3RlcnMgYGB+LS4vKj89YGAuICBUaGF0IGlzIGJlY2F1c2UgdGhlc2UKKyAgIGNoYXJhY3RlcnMgY2FuIGFwcGVhciBpbiBmaWxlIG5hbWVzIChpbmNsdWRpbmcgd2lsZGNhcmRzKSBhbmQgY29tbWFuZC1saW5lCisgICBhcmd1bWVudHMgKGUuZy4gYGAtLWNvbG9yPWF1dG9gYCkuIEhlbmNlOjoKKworICAgICAgPj4+IGltcG9ydCBzaGxleAorICAgICAgPj4+IHMgPSBzaGxleC5zaGxleCgnfi9hICYmIGItYyAtLWNvbG9yPWF1dG8gfHwgZCAqLnB5PycsCisgICAgICAuLi4gICAgICAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICA+Pj4gbGlzdChzKQorICAgICAgWyd+L2EnLCAnJiYnLCAnYi1jJywgJy0tY29sb3I9YXV0bycsICd8fCcsICdkJywgJyoucHk/J10KKworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0IGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAppbmRleCBhMWNmMjQxLi5mZWZkNmFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKQEAgLTQyNSw3ICs0MjUsNyBAQAogICAgaW1wb3J0IGxvZ2dpbmcKIAogICAgZGVmIF9sb2dwYXRoKHBhdGgsIG5hbWVzKToKLSAgICAgICBsb2dnaW5nLmluZm8oJ1dvcmtpbmcgaW4gJXMnICUgcGF0aCkKKyAgICAgICBsb2dnaW5nLmluZm8oJ1dvcmtpbmcgaW4gJXMnLCBwYXRoKQogICAgICAgIHJldHVybiBbXSAgICMgbm90aGluZyB3aWxsIGJlIGlnbm9yZWQKIAogICAgY29weXRyZWUoc291cmNlLCBkZXN0aW5hdGlvbiwgaWdub3JlPV9sb2dwYXRoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QgYi9Eb2MvbGlicmFyeS9zaXRlLnJzdAppbmRleCAwYTczZjVhLi40M2RhZjc5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaXRlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaXRlLnJzdApAQCAtNTIsNyArNTIsOCBAQAogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0gOmZpbGU6YHtuYW1lfS5wdGhgCiBhbmQgZXhpc3RzIGluIG9uZSBvZiB0aGUgZm91ciBkaXJlY3RvcmllcyBtZW50aW9uZWQgYWJvdmU7IGl0cyBjb250ZW50cyBhcmUKIGFkZGl0aW9uYWwgaXRlbXMgKG9uZSBwZXIgbGluZSkgdG8gYmUgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm9uLWV4aXN0aW5nIGl0ZW1zCi1hcmUgbmV2ZXIgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm8gaXRlbSBpcyBhZGRlZCB0byBgYHN5cy5wYXRoYGAgbW9yZSB0aGFuCithcmUgbmV2ZXIgYWRkZWQgdG8gYGBzeXMucGF0aGBgLCBhbmQgbm8gY2hlY2sgaXMgbWFkZSB0aGF0IHRoZSBpdGVtIHJlZmVycyB0byBhCitkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYSBmaWxlLiAgTm8gaXRlbSBpcyBhZGRlZCB0byBgYHN5cy5wYXRoYGAgbW9yZSB0aGFuCiBvbmNlLiAgQmxhbmsgbGluZXMgYW5kIGxpbmVzIGJlZ2lubmluZyB3aXRoIGBgI2BgIGFyZSBza2lwcGVkLiAgTGluZXMgc3RhcnRpbmcKIHdpdGggYGBpbXBvcnRgYCAoZm9sbG93ZWQgYnkgc3BhY2Ugb3IgdGFiKSBhcmUgZXhlY3V0ZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAppbmRleCBhMDk2ZGUwLi5lMzgzMjAxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGQucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAKIAogLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgQm90aApAQCAtNDYsMjAgKzQ2LDE5IEBACiAgICBnbG9iYWwgc29ja2V0IG1hcCBpcyB1c2VkLgogCiAgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKGFzIGRlZmluZWQKLSAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4gIElmIHNldCB0bwotICAgYGBUcnVlYGAsICpkZWNvZGVfZGF0YSogbXVzdCBiZSBgYEZhbHNlYGAgKG90aGVyd2lzZSBhbiBlcnJvciBpcyByYWlzZWQpLgorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgogICAgV2hlbiBgYFRydWVgYCwgYGBTTVRQVVRGOGBgIGlzIGFjY2VwdGVkIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBgYE1BSUxgYAogICAgY29tbWFuZCBhbmQgd2hlbiBwcmVzZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYCBpbiB0aGUKLSAgIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisgICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LiAgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCoKKyAgIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KIAogICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCi0gICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAotICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjY7IHNwZWNpZnkKLSAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBXaGVuCi0gICAqZGVjb2RlX2RhdGEqIGlzIHNldCB0byBgYEZhbHNlYGAgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKKyAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgV2hlbiAqZGVjb2RlX2RhdGEqIGlzIGBgRmFsc2VgYCAodGhlCisgICBkZWZhdWx0KSwgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKICAgIGV4dGVuc2lvbiAoOnJmYzpgNjE1MmApLCBhY2NlcHRzIHRoZSBgYEJPRFk9OEJJVE1JTUVgYCBwYXJhbWV0ZXIgdG8KICAgIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBhbmQgd2hlbiBwcmVzZW50IHBhc3NlcyBpdCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYAotICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisgICBpbiB0aGUgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4gKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCoKKyAgIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KIAogICAgLi4gbWV0aG9kOjogcHJvY2Vzc19tZXNzYWdlKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3YXJncykKIApAQCAtNzYsOSArNzUsOCBAQAogICAgICAgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KIAogICAgICAgKmt3YXJncyogaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gSXQgaXMgZW1wdHkKLSAgICAgIHVubGVzcyBhdCBsZWFzdCBvbmUgb2YgYGBkZWNvZGVfZGF0YT1GYWxzZWBgIG9yIGBgZW5hYmxlX1NNVFBVVEY4PVRydWVgYAotICAgICAgd2FzIGdpdmVuIGFzIGFuIGluaXQgcGFyYW1ldGVyLCBpbiB3aGljaCBjYXNlIGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKLSAgICAgIGtleXM6CisgICAgICBpZiBgYGRlY29kZV9kYXRhPVRydWVgYCB3YXMgZ2l2ZW4gYXMgYW4gaW5pdCBhcmd1bWVudCwgb3RoZXJ3aXNlCisgICAgICBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nIGtleXM6CiAKICAgICAgICAgICAqbWFpbF9vcHRpb25zKjoKICAgICAgICAgICAgICBhIGxpc3Qgb2YgYWxsIHJlY2VpdmVkIHBhcmFtZXRlcnMgdG8gdGhlIGBgTUFJTGBgCkBAIC0xMDksOSArMTA3LDEyIEBACiAgICAgICAqbG9jYWxhZGRyKiBhbmQgKnJlbW90ZWFkZHIqIG1heSBub3cgY29udGFpbiBJUHY2IGFkZHJlc3Nlcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41Ci0gICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY29uc3RydWN0b3IgYXJndW1lbnRzLCBhbmQgdGhlCi0gICAgICAqa3dhcmdzKiBhcmd1bWVudCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYCB3aGVuIG9uZSBvciBtb3JlIG9mIHRoZXNlIGlzCi0gICAgICBzcGVjaWZpZWQuCisgICAgICBUaGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY29uc3RydWN0b3IgcGFyYW1ldGVycywgYW5kIHRoZQorICAgICAgKmt3YXJncyogcGFyYW1ldGVyIHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gKmRlY29kZV9kYXRhKiBpcworICAgICAgYGBGYWxzZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmRlY29kZV9kYXRhKiBpcyBub3cgYGBGYWxzZWBgIGJ5IGRlZmF1bHQuCiAKIAogRGVidWdnaW5nU2VydmVyIE9iamVjdHMKQEAgLTE1MSw3ICsxNTIsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBjbGFzczo6IFNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNNVFBDaGFubmVsYCBvYmplY3Qgd2hpY2ggbWFuYWdlcyB0aGUgY29tbXVuaWNhdGlvbgogICAgYmV0d2VlbiB0aGUgc2VydmVyIGFuZCBhIHNpbmdsZSBTTVRQIGNsaWVudC4KQEAgLTE2MywyMiArMTY0LDI1IEBACiAgICBsaW1pdC4KIAogICAgKmVuYWJsZV9TTVRQVVRGOCogZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCi0gICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBBCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgYm90aCAqZW5hYmxlX1NNVFBVVEY4KiBhbmQgKmRlY29kZV9kYXRhKiBhcmUKLSAgIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgorICAgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZQorICAgdGltZS4KIAogICAgQSBkaWN0aW9uYXJ5IGNhbiBiZSBzcGVjaWZpZWQgaW4gKm1hcCogdG8gYXZvaWQgdXNpbmcgYSBnbG9iYWwgc29ja2V0IG1hcC4KIAogICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCi0gICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAotICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBTcGVjaWZ5Ci0gICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLgorICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lCisgICB0aW1lLgogCiAgICBUbyB1c2UgYSBjdXN0b20gU01UUENoYW5uZWwgaW1wbGVtZW50YXRpb24geW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhlCiAgICA6YXR0cjpgU01UUFNlcnZlci5jaGFubmVsX2NsYXNzYCBvZiB5b3VyIDpjbGFzczpgU01UUFNlcnZlcmAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41Ci0gICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogYXJndW1lbnRzIHdlcmUgYWRkZWQuCisgICAgICBUaGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogcGFyYW1ldGVycyB3ZXJlIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmRlY29kZV9kYXRhKiBpcyBub3cgYGBGYWxzZWBgIGJ5IGRlZmF1bHQuCiAKICAgIFRoZSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBoYXMgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKaW5kZXggOGI5OGNjZi4uODZlNzY5ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKQEAgLTk1LDYgKzk1LDE0IEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCisKIC4uIGNsYXNzOjogTE1UUChob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgVGhlIExNVFAgcHJvdG9jb2wsIHdoaWNoIGlzIHZlcnkgc2ltaWxhciB0byBFU01UUCwgaXMgaGVhdmlseSBiYXNlZCBvbiB0aGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CmluZGV4IDc5Yzc2MDkuLjk2NzE4NTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdApAQCAtMTMzLDYgKzEzMywyMiBAQAogICAgIHN0cmluZyBmb3JtYXQuIChleC4gYGBiJzEyOjIzOjM0OjQ1OjU2OjY3J2BgKSBUaGlzIHByb3RvY29sIGlzIG5vdAogICAgIHN1cHBvcnRlZCB1bmRlciBGcmVlQlNELgogCistIDpjb25zdDpgQUZfQUxHYCBpcyBhIExpbnV4LW9ubHkgc29ja2V0IGJhc2VkIGludGVyZmFjZSB0byBLZXJuZWwKKyAgY3J5cHRvZ3JhcGh5LiBBbiBhbGdvcml0aG0gc29ja2V0IGlzIGNvbmZpZ3VyZWQgd2l0aCBhIHR1cGxlIG9mIHR3byB0byBmb3VyCisgIGVsZW1lbnRzIGBgKHR5cGUsIG5hbWUgWywgZmVhdCBbLCBtYXNrXV0pYGAsIHdoZXJlOgorCisgIC0gKnR5cGUqIGlzIHRoZSBhbGdvcml0aG0gdHlwZSBhcyBzdHJpbmcsIGUuZy4gYGBhZWFkYGAsIGBgaGFzaGBgLAorICAgIGBgc2tjaXBoZXJgYCBvciBgYHJuZ2BgLgorCisgIC0gKm5hbWUqIGlzIHRoZSBhbGdvcml0aG0gbmFtZSBhbmQgb3BlcmF0aW9uIG1vZGUgYXMgc3RyaW5nLCBlLmcuCisgICAgYGBzaGEyNTZgYCwgYGBobWFjKHNoYTI1NilgYCwgYGBjYmMoYWVzKWBgIG9yIGBgZHJiZ19ub3ByX2N0cl9hZXMyNTZgYC4KKworICAtICpmZWF0KiBhbmQgKm1hc2sqIGFyZSB1bnNpZ25lZCAzMmJpdCBpbnRlZ2Vycy4KKworICBBdmFpbGFiaWxpdHkgTGludXggMi42LjM4LCBzb21lIGFsZ29yaXRobSB0eXBlcyByZXF1aXJlIG1vcmUgcmVjZW50IEtlcm5lbHMuCisKKyAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC0gQ2VydGFpbiBvdGhlciBhZGRyZXNzIGZhbWlsaWVzICg6Y29uc3Q6YEFGX1BBQ0tFVGAsIDpjb25zdDpgQUZfQ0FOYCkKICAgc3VwcG9ydCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuCiAKQEAgLTI4Myw2ICsyOTksMTAgQEAKICAgIGluIHRoZSBVbml4IGhlYWRlciBmaWxlcyBhcmUgZGVmaW5lZDsgZm9yIGEgZmV3IHN5bWJvbHMsIGRlZmF1bHQgdmFsdWVzIGFyZQogICAgcHJvdmlkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNPX0RPTUFJTmBgLCBgYFNPX1BST1RPQ09MYGAsIGBgU09fUEVFUlNFQ2BgLCBgYFNPX1BBU1NTRUNgYAorICAgICAgd2VyZSBhZGRlZC4KKwogLi4gZGF0YTo6IEFGX0NBTgogICAgICAgICAgIFBGX0NBTgogICAgICAgICAgIFNPTF9DQU5fKgpAQCAtMzMxLDE4ICszNTEsMzMgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGRhdGE6OiBTSU9fKgorLi4gZGF0YTo6IFNJT19SQ1ZBTEwKKyAgICAgICAgICBTSU9fS0VFUEFMSVZFX1ZBTFMKKyAgICAgICAgICBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRICiAgICAgICAgICAgUkNWQUxMXyoKIAogICAgQ29uc3RhbnRzIGZvciBXaW5kb3dzJyBXU0FJb2N0bCgpLiBUaGUgY29uc3RhbnRzIGFyZSB1c2VkIGFzIGFyZ3VtZW50cyB0byB0aGUKICAgIDptZXRoOmB+c29ja2V0LnNvY2tldC5pb2N0bGAgbWV0aG9kIG9mIHNvY2tldCBvYmplY3RzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAgd2FzIGFkZGVkLgorCiAKIC4uIGRhdGE6OiBUSVBDXyoKIAogICAgVElQQyByZWxhdGVkIGNvbnN0YW50cywgbWF0Y2hpbmcgdGhlIG9uZXMgZXhwb3J0ZWQgYnkgdGhlIEMgc29ja2V0IEFQSS4gU2VlCiAgICB0aGUgVElQQyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCisuLiBkYXRhOjogQUZfQUxHCisgICAgICAgICAgU09MX0FMRworICAgICAgICAgIEFMR18qCisKKyAgIENvbnN0YW50cyBmb3IgTGludXggS2VybmVsIGNyeXB0b2dyYXBoeS4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCA+PSAyLjYuMzguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogQUZfTElOSwogCiAgIEF2YWlsYWJpbGl0eTogQlNELCBPU1guCkBAIC04NzQsNiArOTA5LDEwIEBACiAgICBpdCBpcyByZWNvbW1lbmRlZCB0byA6bWV0aDpgY2xvc2VgIHRoZW0gZXhwbGljaXRseSwgb3IgdG8gdXNlIGEKICAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYXJvdW5kIHRoZW0uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIHRoZSB1bmRlcmx5aW5nCisgICAgICA6YzpmdW5jOmBjbG9zZWAgY2FsbCBpcyBtYWRlLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgOm1ldGg6YGNsb3NlKClgIHJlbGVhc2VzIHRoZSByZXNvdXJjZSBhc3NvY2lhdGVkIHdpdGggYSBjb25uZWN0aW9uIGJ1dApAQCAtOTk0LDYgKzEwMzMsMTIgQEAKICAgIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIGdlbmVyaWMgOmZ1bmM6YGZjbnRsLmZjbnRsYCBhbmQgOmZ1bmM6YGZjbnRsLmlvY3RsYAogICAgZnVuY3Rpb25zIG1heSBiZSB1c2VkOyB0aGV5IGFjY2VwdCBhIHNvY2tldCBvYmplY3QgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCiAKKyAgIEN1cnJlbnRseSBvbmx5IHRoZSBmb2xsb3dpbmcgY29udHJvbCBjb2RlcyBhcmUgc3VwcG9ydGVkOgorICAgYGBTSU9fUkNWQUxMYGAsIGBgU0lPX0tFRVBBTElWRV9WQUxTYGAsIGFuZCBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgIHdhcyBhZGRlZC4KKwogLi4gbWV0aG9kOjogc29ja2V0Lmxpc3RlbihbYmFja2xvZ10pCiAKICAgIEVuYWJsZSBhIHNlcnZlciB0byBhY2NlcHQgY29ubmVjdGlvbnMuICBJZiAqYmFja2xvZyogaXMgc3BlY2lmaWVkLCBpdCBtdXN0CkBAIC0xMjc3LDYgKzEzMjIsMTUgQEAKICAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCiAgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KIAorLi4gbWV0aG9kOjogc29ja2V0LnNlbmRtc2dfYWZhbGcoW21zZ10sICosIG9wWywgaXZbLCBhc3NvY2xlblssIGZsYWdzXV1dKQorCisgICBTcGVjaWFsaXplZCB2ZXJzaW9uIG9mIDptZXRoOmB+c29ja2V0LnNlbmRtc2dgIGZvciA6Y29uc3Q6YEFGX0FMR2Agc29ja2V0LgorICAgU2V0IG1vZGUsIElWLCBBRUFEIGFzc29jaWF0ZWQgZGF0YSBsZW5ndGggYW5kIGZsYWdzIGZvciA6Y29uc3Q6YEFGX0FMR2Agc29ja2V0LgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4zOAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbWV0aG9kOjogc29ja2V0LnNlbmRmaWxlKGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKQogCiAgICBTZW5kIGEgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZCBieSB1c2luZyBoaWdoLXBlcmZvcm1hbmNlCkBAIC0xMzI1LDIxICsxMzc5LDI5IEBACiAgICBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnN1bHQgdGhlIDpyZWY6YG5vdGVzIG9uIHNvY2tldCB0aW1lb3V0cyA8c29ja2V0LXRpbWVvdXRzPmAuCiAKIAotLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlKQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlOiBpbnQpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWU6IGJ1ZmZlcikKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCBOb25lLCBvcHRsZW46IGludCkKIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IHN0cnVjdAogCiAgICBTZXQgdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBzb2NrZXQgb3B0aW9uIChzZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UKICAgIDptYW5wYWdlOmBzZXRzb2Nrb3B0KDIpYCkuICBUaGUgbmVlZGVkIHN5bWJvbGljIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiB0aGUKLSAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciBvcgotICAgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIHJlcHJlc2VudGluZyBhIGJ1ZmZlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSBpdCBpcwotICAgdXAgdG8gdGhlIGNhbGxlciB0bwotICAgZW5zdXJlIHRoYXQgdGhlIGJ5dGVzdHJpbmcgY29udGFpbnMgdGhlIHByb3BlciBiaXRzIChzZWUgdGhlIG9wdGlvbmFsIGJ1aWx0LWluCi0gICBtb2R1bGUgOm1vZDpgc3RydWN0YCBmb3IgYSB3YXkgdG8gZW5jb2RlIEMgc3RydWN0dXJlcyBhcyBieXRlc3RyaW5ncykuCisgICA6bW9kOmBzb2NrZXRgIG1vZHVsZSAoOmNvbnN0OmBTT19cKmAgZXRjLikuICBUaGUgdmFsdWUgY2FuIGJlIGFuIGludGVnZXIsCisgICBgYE5vbmVgYCBvciBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiBJbiB0aGUgbGF0ZXIKKyAgIGNhc2UgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUKKyAgIHByb3BlciBiaXRzIChzZWUgdGhlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0bworICAgZW5jb2RlIEMgc3RydWN0dXJlcyBhcyBieXRlc3RyaW5ncykuIFdoZW4gdmFsdWUgaXMgc2V0IHRvIGBgTm9uZWBgLAorICAgb3B0bGVuIGFyZ3VtZW50IGlzIHJlcXVpcmVkLiBJdCdzIGVxdWl2YWxlbnQgdG8gY2FsbCBzZXRzb2Nrb3B0IEMKKyAgIGZ1bmN0aW9uIHdpdGggb3B0dmFsPU5VTEwgYW5kIG9wdGxlbj1vcHRsZW4uCisKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgTm9uZSwgb3B0bGVuOiBpbnQpIGZvcm0gYWRkZWQuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNodXRkb3duKGhvdykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggMDg3ZjRlMC4uMjE4YTMxYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC01MiwxMSArNTIsMTIgQEAKIG92ZXJyaWRpbmcgaXRzIDptZXRoOmB+QmFzZVJlcXVlc3RIYW5kbGVyLmhhbmRsZWAgbWV0aG9kOwogdGhpcyBtZXRob2Qgd2lsbCBwcm9jZXNzIGluY29taW5nCiByZXF1ZXN0cy4gIFNlY29uZCwgeW91IG11c3QgaW5zdGFudGlhdGUgb25lIG9mIHRoZSBzZXJ2ZXIgY2xhc3NlcywgcGFzc2luZyBpdAotdGhlIHNlcnZlcidzIGFkZHJlc3MgYW5kIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MuICBUaGVuIGNhbGwgdGhlCit0aGUgc2VydmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlCit0aGUgc2VydmVyIGluIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlbiBjYWxsIHRoZQogOm1ldGg6YH5CYXNlU2VydmVyLmhhbmRsZV9yZXF1ZXN0YCBvcgogOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXJgIG1ldGhvZCBvZiB0aGUgc2VydmVyIG9iamVjdCB0bwogcHJvY2VzcyBvbmUgb3IgbWFueSByZXF1ZXN0cy4gIEZpbmFsbHksIGNhbGwgOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlcl9jbG9zZWAKLXRvIGNsb3NlIHRoZSBzb2NrZXQuCit0byBjbG9zZSB0aGUgc29ja2V0ICh1bmxlc3MgeW91IHVzZWQgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4KIAogV2hlbiBpbmhlcml0aW5nIGZyb20gOmNsYXNzOmBUaHJlYWRpbmdNaXhJbmAgZm9yIHRocmVhZGVkIGNvbm5lY3Rpb24gYmVoYXZpb3IsCiB5b3Ugc2hvdWxkIGV4cGxpY2l0bHkgZGVjbGFyZSBob3cgeW91IHdhbnQgeW91ciB0aHJlYWRzIHRvIGJlaGF2ZSBvbiBhbiBhYnJ1cHQKQEAgLTExMSw2ICsxMTIsOCBAQAogICAgOmNsYXNzOmBVRFBTZXJ2ZXJgLiAgU2V0dGluZyB0aGUgdmFyaW91cyBhdHRyaWJ1dGVzIGFsc28gY2hhbmdlcyB0aGUKICAgIGJlaGF2aW9yIG9mIHRoZSB1bmRlcmx5aW5nIHNlcnZlciBtZWNoYW5pc20uCiAKKyAgIDpjbGFzczpgRm9ya2luZ01peEluYCBhbmQgdGhlIEZvcmtpbmcgY2xhc3NlcyBtZW50aW9uZWQgYmVsb3cgYXJlCisgICBvbmx5IGF2YWlsYWJsZSBvbiBQT1NJWCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpmdW5jOmB+b3MuZm9ya2AuCiAKIC4uIGNsYXNzOjogRm9ya2luZ1RDUFNlcnZlcgogICAgICAgICAgICBGb3JraW5nVURQU2VydmVyCkBAIC0zMDQsNyArMzA3LDExIEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpZiB0aGUgOm1ldGg6YH5CYXNlUmVxdWVzdEhhbmRsZXIuaGFuZGxlYAogICAgICAgbWV0aG9kIG9mIGEgOmF0dHI6YFJlcXVlc3RIYW5kbGVyQ2xhc3NgIGluc3RhbmNlIHJhaXNlcwogICAgICAgYW4gZXhjZXB0aW9uLiAgVGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIHByaW50IHRoZSB0cmFjZWJhY2sgdG8KLSAgICAgIHN0YW5kYXJkIG91dHB1dCBhbmQgY29udGludWUgaGFuZGxpbmcgZnVydGhlciByZXF1ZXN0cy4KKyAgICAgIHN0YW5kYXJkIGVycm9yIGFuZCBjb250aW51ZSBoYW5kbGluZyBmdXJ0aGVyIHJlcXVlc3RzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTm93IG9ubHkgY2FsbGVkIGZvciBleGNlcHRpb25zIGRlcml2ZWQgZnJvbSB0aGUgOmV4YzpgRXhjZXB0aW9uYAorICAgICAgICAgY2xhc3MuCiAKIAogICAgLi4gbWV0aG9kOjogaGFuZGxlX3RpbWVvdXQoKQpAQCAtMzQ5LDYgKzM1NiwxMSBAQAogICAgICAgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyA6Y29uc3Q6YFRydWVgLgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGZvciB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wgd2FzIGFkZGVkLiAgRXhpdGluZyB0aGUKKyAgICAgIGNvbnRleHQgbWFuYWdlciBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgOm1ldGg6YHNlcnZlcl9jbG9zZWAuCisKKwogUmVxdWVzdCBIYW5kbGVyIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTM5Nyw2ICs0MDksMTUgQEAKICAgIHJlYWQgb3Igd3JpdHRlbiwgcmVzcGVjdGl2ZWx5LCB0byBnZXQgdGhlIHJlcXVlc3QgZGF0YSBvciByZXR1cm4gZGF0YQogICAgdG8gdGhlIGNsaWVudC4KIAorICAgVGhlIDphdHRyOmByZmlsZWAgYXR0cmlidXRlcyBvZiBib3RoIGNsYXNzZXMgc3VwcG9ydCB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHJlYWRhYmxlIGludGVyZmFjZSwgYW5kCisgICA6YXR0cjpgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgc3VwcG9ydHMgdGhlCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGFsc28gc3VwcG9ydHMgdGhlCisgICAgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKIAogRXhhbXBsZXMKIC0tLS0tLS0tCkBAIC00MjksMTEgKzQ1MCwxMCBAQAogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQogCiAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciwgYmluZGluZyB0byBsb2NhbGhvc3Qgb24gcG9ydCA5OTk5Ci0gICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VENQSGFuZGxlcikKLQotICAgICAgICMgQWN0aXZhdGUgdGhlIHNlcnZlcjsgdGhpcyB3aWxsIGtlZXAgcnVubmluZyB1bnRpbCB5b3UKLSAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQwotICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVRDUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIyBBY3RpdmF0ZSB0aGUgc2VydmVyOyB0aGlzIHdpbGwga2VlcCBydW5uaW5nIHVudGlsIHlvdQorICAgICAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQworICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIEFuIGFsdGVybmF0aXZlIHJlcXVlc3QgaGFuZGxlciBjbGFzcyB0aGF0IG1ha2VzIHVzZSBvZiBzdHJlYW1zIChmaWxlLWxpa2UKIG9iamVjdHMgdGhhdCBzaW1wbGlmeSBjb21tdW5pY2F0aW9uIGJ5IHByb3ZpZGluZyB0aGUgc3RhbmRhcmQgZmlsZSBpbnRlcmZhY2UpOjoKQEAgLTUyNSw4ICs1NDUsOCBAQAogCiAgICBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQotICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5VRFBTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVVEUEhhbmRsZXIpCi0gICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgIHdpdGggc29ja2V0c2VydmVyLlVEUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VURQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIFRoaXMgaXMgdGhlIGNsaWVudCBzaWRlOjoKIApAQCAtNTg1LDIyICs2MDUsMjIgQEAKICAgICAgICBIT1NULCBQT1JUID0gImxvY2FsaG9zdCIsIDAKIAogICAgICAgIHNlcnZlciA9IFRocmVhZGVkVENQU2VydmVyKChIT1NULCBQT1JUKSwgVGhyZWFkZWRUQ1BSZXF1ZXN0SGFuZGxlcikKLSAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcworICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcwogCi0gICAgICAgIyBTdGFydCBhIHRocmVhZCB3aXRoIHRoZSBzZXJ2ZXIgLS0gdGhhdCB0aHJlYWQgd2lsbCB0aGVuIHN0YXJ0IG9uZQotICAgICAgICMgbW9yZSB0aHJlYWQgZm9yIGVhY2ggcmVxdWVzdAotICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKLSAgICAgICAjIEV4aXQgdGhlIHNlcnZlciB0aHJlYWQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdGVybWluYXRlcwotICAgICAgIHNlcnZlcl90aHJlYWQuZGFlbW9uID0gVHJ1ZQotICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQotICAgICAgIHByaW50KCJTZXJ2ZXIgbG9vcCBydW5uaW5nIGluIHRocmVhZDoiLCBzZXJ2ZXJfdGhyZWFkLm5hbWUpCisgICAgICAgICAgICMgU3RhcnQgYSB0aHJlYWQgd2l0aCB0aGUgc2VydmVyIC0tIHRoYXQgdGhyZWFkIHdpbGwgdGhlbiBzdGFydCBvbmUKKyAgICAgICAgICAgIyBtb3JlIHRocmVhZCBmb3IgZWFjaCByZXF1ZXN0CisgICAgICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKKyAgICAgICAgICAgIyBFeGl0IHRoZSBzZXJ2ZXIgdGhyZWFkIHdoZW4gdGhlIG1haW4gdGhyZWFkIHRlcm1pbmF0ZXMKKyAgICAgICAgICAgc2VydmVyX3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICBwcmludCgiU2VydmVyIGxvb3AgcnVubmluZyBpbiB0aHJlYWQ6Iiwgc2VydmVyX3RocmVhZC5uYW1lKQogCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMSIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMiIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDEiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAyIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCiAKLSAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQotICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQogCiAKIFRoZSBvdXRwdXQgb2YgdGhlIGV4YW1wbGUgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKQEAgLTYxNiwzICs2MzYsNSBAQAogCiBUaGUgOmNsYXNzOmBGb3JraW5nTWl4SW5gIGNsYXNzIGlzIHVzZWQgaW4gdGhlIHNhbWUgd2F5LCBleGNlcHQgdGhhdCB0aGUgc2VydmVyCiB3aWxsIHNwYXduIGEgbmV3IHByb2Nlc3MgZm9yIGVhY2ggcmVxdWVzdC4KK0F2YWlsYWJsZSBvbmx5IG9uIFBPU0lYIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmZ1bmM6YH5vcy5mb3JrYC4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3B3ZC5yc3QgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdAppbmRleCBmZDNjOWFkLi5jNmNhZDJhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcHdkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdApAQCAtNTUsNiArNTUsOSBAQAogCiAgICBSZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJhaXNlcyBhIDpleGM6YFBlcm1pc3Npb25FcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlIHVzZXIKKyAgICAgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgogCiAuLiBmdW5jdGlvbjo6IGdldHNwYWxsKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCA4NGE0NzgzLi41NjM1NTc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdApAQCAtNjI5LDkgKzYyOSwxNiBAQAogICAgLi4gYXR0cmlidXRlOjogbGFzdHJvd2lkCiAKICAgICAgIFRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSBwcm92aWRlcyB0aGUgcm93aWQgb2YgdGhlIGxhc3QgbW9kaWZpZWQgcm93LiBJdCBpcwotICAgICAgb25seSBzZXQgaWYgeW91IGlzc3VlZCBhbiBgYElOU0VSVGBgIHN0YXRlbWVudCB1c2luZyB0aGUgOm1ldGg6YGV4ZWN1dGVgCi0gICAgICBtZXRob2QuIEZvciBvcGVyYXRpb25zIG90aGVyIHRoYW4gYGBJTlNFUlRgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMKLSAgICAgIGNhbGxlZCwgOmF0dHI6YGxhc3Ryb3dpZGAgaXMgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisgICAgICBvbmx5IHNldCBpZiB5b3UgaXNzdWVkIGFuIGBgSU5TRVJUYGAgb3IgYSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQgdXNpbmcgdGhlCisgICAgICA6bWV0aDpgZXhlY3V0ZWAgbWV0aG9kLiAgRm9yIG9wZXJhdGlvbnMgb3RoZXIgdGhhbiBgYElOU0VSVGBgIG9yCisgICAgICBgYFJFUExBQ0VgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMgY2FsbGVkLCA6YXR0cjpgbGFzdHJvd2lkYCBpcworICAgICAgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisKKyAgICAgIElmIHRoZSBgYElOU0VSVGBgIG9yIGBgUkVQTEFDRWBgIHN0YXRlbWVudCBmYWlsZWQgdG8gaW5zZXJ0IHRoZSBwcmV2aW91cworICAgICAgc3VjY2Vzc2Z1bCByb3dpZCBpcyByZXR1cm5lZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGRlc2NyaXB0aW9uCiAKQEAgLTkxOCw5ICs5MjUsNyBAQAogCiBCeSBkZWZhdWx0LCB0aGUgOm1vZDpgc3FsaXRlM2AgbW9kdWxlIG9wZW5zIHRyYW5zYWN0aW9ucyBpbXBsaWNpdGx5IGJlZm9yZSBhCiBEYXRhIE1vZGlmaWNhdGlvbiBMYW5ndWFnZSAoRE1MKSAgc3RhdGVtZW50IChpLmUuCi1gYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCksIGFuZCBjb21taXRzIHRyYW5zYWN0aW9ucwotaW1wbGljaXRseSBiZWZvcmUgYSBub24tRE1MLCBub24tcXVlcnkgc3RhdGVtZW50IChpLiBlLgotYW55dGhpbmcgb3RoZXIgdGhhbiBgYFNFTEVDVGBgIG9yIHRoZSBhZm9yZW1lbnRpb25lZCkuCitgYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCkuCiAKIFNvIGlmIHlvdSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24gYW5kIGlzc3VlIGEgY29tbWFuZCBsaWtlIGBgQ1JFQVRFIFRBQkxFCiAuLi5gYCwgYGBWQUNVVU1gYCwgYGBQUkFHTUFgYCwgdGhlIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZSB3aWxsIGNvbW1pdCBpbXBsaWNpdGx5CkBAIC05NDAsNiArOTQ1LDkgQEAKIHN0YXRlbWVudCwgb3Igc2V0IGl0IHRvIG9uZSBvZiBTUUxpdGUncyBzdXBwb3J0ZWQgaXNvbGF0aW9uIGxldmVsczogIkRFRkVSUkVEIiwKICJJTU1FRElBVEUiIG9yICJFWENMVVNJVkUiLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgOm1vZDpgc3FsaXRlM2AgdXNlZCB0byBpbXBsaWNpdGx5IGNvbW1pdCBhbiBvcGVuIHRyYW5zYWN0aW9uIGJlZm9yZSBEREwKKyAgIHN0YXRlbWVudHMuICBUaGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4KIAogCiBVc2luZyA6bW9kOmBzcWxpdGUzYCBlZmZpY2llbnRseQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggYTJmMDA4My4uZWVlNDg0OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC00OSw2ICs0OSwxMiBAQAogaGVscHMgbWFuYWdlIHNldHRpbmdzIGFuZCBjZXJ0aWZpY2F0ZXMsIHdoaWNoIGNhbiB0aGVuIGJlIGluaGVyaXRlZAogYnkgU1NMIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBPcGVuU1NMIDAuOS44LCAxLjAuMCBhbmQgMS4wLjEgYXJlIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICBJbiB0aGUgZnV0dXJlIHRoZSBzc2wgbW9kdWxlIHdpbGwgcmVxdWlyZSBhdCBsZWFzdCBPcGVuU1NMIDEuMC4yIG9yCisgICAxLjEuMC4KKwogCiBGdW5jdGlvbnMsIENvbnN0YW50cywgYW5kIEV4Y2VwdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTg2LDE2ICsxOTIsMjAgQEAKIAogICAgICAuLiB0YWJsZTo6CiAKLSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQotICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAqKlNTTHYzKiogICoqVExTKiogICAgICoqVExTdjEqKiAgKipUTFN2MS4xKiogICoqVExTdjEuMioqCi0gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0KLSAgICAgICAgKlNTTHYyKiAgICAgICAgICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqU1NMdjMqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpUTFMqICgqU1NMdjIzKikgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgeWVzCi0gICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubwotICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcwotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICAgKmNsaWVudCogLyAqKnNlcnZlcioqICAgICoqU1NMdjIqKiAgICAgKipTU0x2MyoqICAgICAqKlRMUyoqICAgICAgICAqKlRMU3YxKiogICoqVExTdjEuMSoqICAqKlRMU3YxLjIqKgorICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tCisgICAgICAgICpTU0x2MiogICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgICAgbm8gICAgICAgICAgICBubyBbMV1fICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgIG5vIFsyXV8gICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqVExTKiAoKlNTTHYyMyopICAgICAgICAgICBubyBbMV1fICAgICAgIG5vIFsyXV8gICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgIHllcworICAgICAgICAqVExTdjEqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFN2MS4xKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjIqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMKKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorCisgICAuLiBydWJyaWM6OiBGb290bm90ZXMKKyAgIC4uIFsxXSA6Y2xhc3M6YFNTTENvbnRleHRgIGRpc2FibGVzIFNTTHYyIHdpdGggOmRhdGE6YE9QX05PX1NTTHYyYCBieSBkZWZhdWx0LgorICAgLi4gWzJdIDpjbGFzczpgU1NMQ29udGV4dGAgZGlzYWJsZXMgU1NMdjMgd2l0aCA6ZGF0YTpgT1BfTk9fU1NMdjNgIGJ5IGRlZmF1bHQuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yMjQsNyArMjM0LDYgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBOZXcgb3B0aW9uYWwgYXJndW1lbnQgKmNpcGhlcnMqLgogCi0KIENvbnRleHQgY3JlYXRpb24KIF5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMjc5LDcgKzI4OCw3IEBACiAKICAgICAgUkM0IHdhcyBkcm9wcGVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAogICAgICBDaGFDaGEyMC9Qb2x5MTMwNSB3YXMgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIApAQCAtMzIyLDcgKzMzMSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCA6ZnVuYzpgc3NsLlJBTkRfcHNldWRvX2J5dGVzYCwgdXNlCiAgICAgICA6ZnVuYzpgc3NsLlJBTkRfYnl0ZXNgIGluc3RlYWQuCkBAIC01MDksNiArNTE4LDEwIEBACiBDb25zdGFudHMKIF5eXl5eXl5eXgogCisgICBBbGwgY29uc3RhbnRzIGFyZSBub3cgOmNsYXNzOmBlbnVtLkludEVudW1gIG9yIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBDRVJUX05PTkUKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCwgb3IgdGhlIGBgY2VydF9yZXFzYGAKQEAgLTU0Miw2ICs1NTUsMTIgQEAKICAgIGJlIHBhc3NlZCwgZWl0aGVyIHRvIDptZXRoOmBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9uc2Agb3IgYXMgYQogICAgdmFsdWUgb2YgdGhlIGBgY2FfY2VydHNgYCBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHdyYXBfc29ja2V0YC4KIAorLi4gY2xhc3M6OiBWZXJpZnlNb2RlCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIENFUlRfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogVkVSSUZZX0RFRkFVTFQKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AuIEluIHRoaXMgbW9kZSwgY2VydGlmaWNhdGUKQEAgLTU4MiwxOCArNjAxLDQwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNC40CiAKKy4uIGNsYXNzOjogVmVyaWZ5RmxhZ3MKKworICAgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb24gb2YgVkVSSUZZXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFBST1RPQ09MX1RMUwogCiAgICBTZWxlY3RzIHRoZSBoaWdoZXN0IHByb3RvY29sIHZlcnNpb24gdGhhdCBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzdXBwb3J0LgogICAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBvcHRpb24gY2FuIHNlbGVjdCAiVExTIiBwcm90b2NvbHMgYXMgd2VsbCBhcyAiU1NMIi4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy41LjMKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX0NMSUVOVAorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBjbGllbnQtc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuIFRoZSBwcm90b2NvbAorICAgZW5hYmxlcyA6ZGF0YTpgQ0VSVF9SRVFVSVJFRGAgYW5kIDphdHRyOmB+U1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYnkKKyAgIGRlZmF1bHQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX1NFUlZFUgorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBzZXJ2ZXItc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBkYXRhOjogUFJPVE9DT0xfU1NMdjIzCiAKICAgIEFsaWFzIGZvciBkYXRhOmBQUk9UT0NPTF9UTFNgLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgVXNlIGRhdGE6YFBST1RPQ09MX1RMU2AgaW5zdGVhZC4KIApAQCAtNjA4LDcgKzY0OSw3IEBACiAKICAgICAgIFNTTCB2ZXJzaW9uIDIgaXMgaW5zZWN1cmUuICBJdHMgdXNlIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIHJlbW92ZWQgc3VwcG9ydCBmb3IgU1NMdjIuCiAKQEAgLTYyMyw3ICs2NjQsNyBAQAogCiAgICAgICBTU0wgdmVyc2lvbiAzIGlzIGluc2VjdXJlLiAgSXRzIHVzZSBpcyBoaWdobHkgZGlzY291cmFnZWQuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTYzMiw3ICs2NzMsNyBAQAogCiAgICBTZWxlY3RzIFRMUyB2ZXJzaW9uIDEuMCBhcyB0aGUgY2hhbm5lbCBlbmNyeXB0aW9uIHByb3RvY29sLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NDQsNyArNjg1LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY1Nyw3ICs2OTgsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjc4LDcgKzcxOSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgU1NMdjIgaXMgZGVwcmVjYXRlZAogCkBAIC02OTEsNyArNzMyLDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBTU0x2MyBpcyBkZXByZWNhdGVkCiAKQEAgLTc1MSw2ICs3OTIsMTYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIGNsYXNzOjogT3B0aW9ucworCisgICA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbiBvZiBPUF8qIGNvbnN0YW50cy4KKworLi4gZGF0YTo6IE9QX05PX1RJQ0tFVAorCisgICBQcmV2ZW50IGNsaWVudCBzaWRlIGZyb20gcmVxdWVzdGluZyBhIHNlc3Npb24gdGlja2V0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IEhBU19BTFBOCiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpBcHBsaWNhdGlvbi1MYXllcgpAQCAtODMzLDYgKzg4NCwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gY2xhc3M6OiBBbGVydERlc2NyaXB0aW9uCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIEFMRVJUX0RFU0NSSVBUSU9OXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFB1cnBvc2UuU0VSVkVSX0FVVEgKIAogICAgT3B0aW9uIGZvciA6ZnVuYzpgY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgYW5kCkBAIC04NTEsNiArOTA4LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBjbGFzczo6IFNTTEVycm9yTnVtYmVyCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIFNTTF9FUlJPUl8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIFNvY2tldHMKIC0tLS0tLS0tLS0tCkBAIC04ODUsNyArOTQ4LDcgQEAKICAgIDpyZWY6YG5vdGVzIG9uIG5vbi1ibG9ja2luZyBzb2NrZXRzIDxzc2wtbm9uYmxvY2tpbmc+YC4KIAogICAgVXN1YWxseSwgOmNsYXNzOmBTU0xTb2NrZXRgIGFyZSBub3QgY3JlYXRlZCBkaXJlY3RseSwgYnV0IHVzaW5nIHRoZQotICAgOmZ1bmM6YHdyYXBfc29ja2V0YCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KKyAgIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgVGhlIDptZXRoOmBzZW5kZmlsZWAgbWV0aG9kIHdhcyBhZGRlZC4KQEAgLTg5NSw2ICs5NTgsMTAgQEAKICAgICAgIGFyZSByZWNlaXZlZCBvciBzZW50LiBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24KICAgICAgIG9mIHRoZSBzaHV0ZG93bi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgSXQgaXMgZGVwcmVjYXRlZCB0byBjcmVhdGUgYSA6Y2xhc3M6YFNTTFNvY2tldGAgaW5zdGFuY2UgZGlyZWN0bHksIHVzZQorICAgICAgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIHRvIHdyYXAgYSBzb2NrZXQuCisKIAogU1NMIHNvY2tldHMgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCkBAIC05MTUsNiArOTgyLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byByZWFkIHVwIHRvICpsZW4qCiAgICAgICBieXRlcy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnJlY3ZgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAuCisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC53cml0ZShidWYpCiAKICAgIFdyaXRlICpidWYqIHRvIHRoZSBTU0wgc29ja2V0IGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiBUaGUKQEAgLTkzMCw2ICsxMDAwLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byB3cml0ZSAqYnVmKi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnNlbmRgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgLgorCiAuLiBub3RlOjoKIAogICAgVGhlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIGFuZCA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAgbWV0aG9kcyBhcmUgdGhlCkBAIC0xMTI3LDYgKzEyMDAsMTkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5zZXNzaW9uCisKKyAgIFRoZSA6Y2xhc3M6YFNTTFNlc3Npb25gIGZvciB0aGlzIFNTTCBjb25uZWN0aW9uLiBUaGUgc2Vzc2lvbiBpcyBhdmFpbGFibGUKKyAgIGZvciBjbGllbnQgYW5kIHNlcnZlciBzaWRlIHNvY2tldHMgYWZ0ZXIgdGhlIFRMUyBoYW5kc2hha2UgaGFzIGJlZW4KKyAgIHBlcmZvcm1lZC4gRm9yIGNsaWVudCBzb2NrZXRzIHRoZSBzZXNzaW9uIGNhbiBiZSBzZXQgYmVmb3JlCisgICA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgIGhhcyBiZWVuIGNhbGxlZCB0byByZXVzZSBhIHNlc3Npb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIENvbnRleHRzCiAtLS0tLS0tLS0tLS0KQEAgLTExNDksOSArMTIzNSwxNiBAQAogICAgICAgOmZ1bmM6YGNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIGxldHMgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGNob29zZQogICAgICAgc2VjdXJpdHkgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gcHVycG9zZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAotICAgICAgOmRhdGE6YFBST1RPQ09MX1RMU2AgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisgICAgICBUaGUgY29udGV4dCBpcyBjcmVhdGVkIHdpdGggc2VjdXJlIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucworICAgICAgOmRhdGE6YE9QX05PX0NPTVBSRVNTSU9OYCwgOmRhdGE6YE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRWAsCisgICAgICA6ZGF0YTpgT1BfU0lOR0xFX0RIX1VTRWAsIDpkYXRhOmBPUF9TSU5HTEVfRUNESF9VU0VgLAorICAgICAgOmRhdGE6YE9QX05PX1NTTHYyYCAoZXhjZXB0IGZvciA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKSwKKyAgICAgIGFuZCA6ZGF0YTpgT1BfTk9fU1NMdjNgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2M2ApIGFyZQorICAgICAgc2V0IGJ5IGRlZmF1bHQuIFRoZSBpbml0aWFsIGNpcGhlciBzdWl0ZSBsaXN0IGNvbnRhaW5zIG9ubHkgYGBISUdIYGAKKyAgICAgIGNpcGhlcnMsIG5vIGBgTlVMTGBgIGNpcGhlcnMgYW5kIG5vIGBgTUQ1YGAgY2lwaGVycyAoZXhjZXB0IGZvcgorICAgICAgOmRhdGE6YFBST1RPQ09MX1NTTHYyYCkuCiAKIAogOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgpAQCAtMTI1OSw2ICsxMzUyLDYyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmdldF9jaXBoZXJzKCkKKworICAgR2V0IGEgbGlzdCBvZiBlbmFibGVkIGNpcGhlcnMuIFRoZSBsaXN0IGlzIGluIG9yZGVyIG9mIGNpcGhlciBwcmlvcml0eS4KKyAgIFNlZSA6bWV0aDpgU1NMQ29udGV4dC5zZXRfY2lwaGVyc2AuCisKKyAgIEV4YW1wbGU6OgorCisgICAgICAgPj4+IGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgPj4+IGN0eC5zZXRfY2lwaGVycygnRUNESEUrQUVTR0NNOiFFQ0RTQScpCisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4wLngKKyAgICAgICBbeydhbGdfYml0cyc6IDI1NiwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDI1NikgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDgsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMjU2fSwKKyAgICAgICAgeydhbGdfYml0cyc6IDEyOCwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDEyOCkgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMTI4fV0KKworICAgT24gT3BlblNTTCAxLjEgYW5kIG5ld2VyIHRoZSBjaXBoZXIgZGljdCBjb250YWlucyBhZGRpdGlvbmFsIGZpZWxkczo6CisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4xKworICAgICAgIFt7J2FlYWQnOiBUcnVlLAorICAgICAgICAgJ2FsZ19iaXRzJzogMjU2LAorICAgICAgICAgJ2F1dGgnOiAnYXV0aC1yc2EnLAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRCcsCisgICAgICAgICAnZGlnZXN0JzogTm9uZSwKKyAgICAgICAgICdpZCc6IDUwMzgwODQ4LAorICAgICAgICAgJ2tlYSc6ICdreC1lY2RoZScsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxLjInLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAyNTYsCisgICAgICAgICAnc3ltbWV0cmljJzogJ2Flcy0yNTYtZ2NtJ30sCisgICAgICAgIHsnYWVhZCc6IFRydWUsCisgICAgICAgICAnYWxnX2JpdHMnOiAxMjgsCisgICAgICAgICAnYXV0aCc6ICdhdXRoLXJzYScsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgxMjgpIE1hYz1BRUFEJywKKyAgICAgICAgICdkaWdlc3QnOiBOb25lLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAna2VhJzogJ2t4LWVjZGhlJywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NicsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEuMicsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDEyOCwKKyAgICAgICAgICdzeW1tZXRyaWMnOiAnYWVzLTEyOC1nY20nfV0KKworICAgQXZhaWxhYmlsaXR5OiBPcGVuU1NMIDEuMC4yKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCiAgICBMb2FkIGEgc2V0IG9mIGRlZmF1bHQgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyBmcm9tCkBAIC0xMzk3LDcgKzE1NDYsNyBAQAogCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLCBcCiAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBcCi0gICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKKyAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIFdyYXAgYW4gZXhpc3RpbmcgUHl0aG9uIHNvY2tldCAqc29jayogYW5kIHJldHVybiBhbiA6Y2xhc3M6YFNTTFNvY2tldGAKICAgIG9iamVjdC4gICpzb2NrKiBtdXN0IGJlIGEgOmRhdGE6YH5zb2NrZXQuU09DS19TVFJFQU1gIHNvY2tldDsgb3RoZXIgc29ja2V0CkBAIC0xNDE0LDE5ICsxNTYzLDI3IEBACiAgICBxdWl0ZSBzaW1pbGFybHkgdG8gSFRUUCB2aXJ0dWFsIGhvc3RzLiBTcGVjaWZ5aW5nICpzZXJ2ZXJfaG9zdG5hbWUqIHdpbGwKICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKnNlcnZlcl9zaWRlKiBpcyB0cnVlLgogCisgICAqc2Vzc2lvbiosIHNlZSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFsd2F5cyBhbGxvdyBhIHNlcnZlcl9ob3N0bmFtZSB0byBiZSBwYXNzZWQsIGV2ZW4gaWYgT3BlblNTTCBkb2VzIG5vdAogICAgICAgaGF2ZSBTTkkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqc2Vzc2lvbiogYXJndW1lbnQgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYnkgd3JhcHBpbmcgdGhlIEJJTyBvYmplY3RzCiAgICAqaW5jb21pbmcqIGFuZCAqb3V0Z29pbmcqLiBUaGUgU1NMIHJvdXRpbmVzIHdpbGwgcmVhZCBpbnB1dCBkYXRhIGZyb20gdGhlCiAgICBpbmNvbWluZyBCSU8gYW5kIHdyaXRlIGRhdGEgdG8gdGhlIG91dGdvaW5nIEJJTy4KIAotICAgVGhlICpzZXJ2ZXJfc2lkZSogYW5kICpzZXJ2ZXJfaG9zdG5hbWUqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzCi0gICBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisgICBUaGUgKnNlcnZlcl9zaWRlKiwgKnNlcnZlcl9ob3N0bmFtZSogYW5kICpzZXNzaW9uKiBwYXJhbWV0ZXJzIGhhdmUgdGhlCisgICBzYW1lIG1lYW5pbmcgYXMgaW4gOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKnNlc3Npb24qIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXNzaW9uX3N0YXRzKCkKIApAQCAtMTQ3OCw2ICsxNjM1LDEyIEBACiAgICAgICB0byBzZXQgb3B0aW9ucywgbm90IHRvIGNsZWFyIHRoZW0uICBBdHRlbXB0aW5nIHRvIGNsZWFyIGFuIG9wdGlvbgogICAgICAgKGJ5IHJlc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBiaXRzKSB3aWxsIHJhaXNlIGEgYGBWYWx1ZUVycm9yYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU1NMQ29udGV4dC5vcHRpb25zYCByZXR1cm5zIDpjbGFzczpgT3B0aW9uc2AgZmxhZ3M6CisKKyAgICAgICAgID4+PiBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLm9wdGlvbnMKKyAgICAgICAgIDxPcHRpb25zLk9QX0FMTHxPUF9OT19TU0x2M3xPUF9OT19TU0x2MnxPUF9OT19DT01QUkVTU0lPTjogMjE5Nzk0NzM5MT4KKwogLi4gYXR0cmlidXRlOjogU1NMQ29udGV4dC5wcm90b2NvbAogCiAgICBUaGUgcHJvdG9jb2wgdmVyc2lvbiBjaG9zZW4gd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQuICBUaGlzIGF0dHJpYnV0ZQpAQCAtMTQ5MiwxMiArMTY1NSwyMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AgcmV0dXJucyA6Y2xhc3M6YFZlcmlmeUZsYWdzYCBmbGFnczoKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X2ZsYWdzCisgICAgICAgICA8VmVyaWZ5RmxhZ3MuVkVSSUZZX1g1MDlfVFJVU1RFRF9GSVJTVDogMzI3Njg+CisKIC4uIGF0dHJpYnV0ZTo6IFNTTENvbnRleHQudmVyaWZ5X21vZGUKIAogICAgV2hldGhlciB0byB0cnkgdG8gdmVyaWZ5IG90aGVyIHBlZXJzJyBjZXJ0aWZpY2F0ZXMgYW5kIGhvdyB0byBiZWhhdmUKICAgIGlmIHZlcmlmaWNhdGlvbiBmYWlscy4gIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgb25lIG9mCiAgICA6ZGF0YTpgQ0VSVF9OT05FYCwgOmRhdGE6YENFUlRfT1BUSU9OQUxgIG9yIDpkYXRhOmBDRVJUX1JFUVVJUkVEYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCByZXR1cm5zIDpjbGFzczpgVmVyaWZ5TW9kZWAgZW51bToKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X21vZGUKKyAgICAgICAgIDxWZXJpZnlNb2RlLkNFUlRfUkVRVUlSRUQ6IDI+CiAKIC4uIGluZGV4Ojogc2luZ2xlOiBjZXJ0aWZpY2F0ZXMKIApAQCAtMTkxNiw2ICsyMDkwLDggQEAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuY29udGV4dGAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX3NpZGVgCiAgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlcnZlcl9ob3N0bmFtZWAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYAogICAgLSA6bWV0aDpgflNTTFNvY2tldC5nZXRwZWVyY2VydGAKQEAgLTE5OTcsNiArMjE3MywyMiBAQAogICAgICAgYmVjb21lIHRydWUgYWZ0ZXIgYWxsIGRhdGEgY3VycmVudGx5IGluIHRoZSBidWZmZXIgaGFzIGJlZW4gcmVhZC4KIAogCitTU0wgc2Vzc2lvbgorLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGNsYXNzOjogU1NMU2Vzc2lvbgorCisgICBTZXNzaW9uIG9iamVjdCB1c2VkIGJ5IDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpZAorICAgLi4gYXR0cmlidXRlOjogdGltZQorICAgLi4gYXR0cmlidXRlOjogdGltZW91dAorICAgLi4gYXR0cmlidXRlOjogdGlja2V0X2xpZmV0aW1lX2hpbnQKKyAgIC4uIGF0dHJpYnV0ZTo6IGhhc190aWNrZXQKKworCiAuLiBfc3NsLXNlY3VyaXR5OgogCiBTZWN1cml0eSBjb25zaWRlcmF0aW9ucwpAQCAtMjA2MywxOCArMjI1NSwyMCBAQAogCiBTU0wgdmVyc2lvbnMgMiBhbmQgMyBhcmUgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgYXJlIHRoZXJlZm9yZSBkYW5nZXJvdXMgdG8KIHVzZS4gIElmIHlvdSB3YW50IG1heGltdW0gY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGNsaWVudHMgYW5kIHNlcnZlcnMsIGl0IGlzCi1yZWNvbW1lbmRlZCB0byB1c2UgOmNvbnN0OmBQUk9UT0NPTF9UTFNgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGFuZCB0aGVuCi1kaXNhYmxlIFNTTHYyIGFuZCBTU0x2MyBleHBsaWNpdGx5IHVzaW5nIHRoZSA6ZGF0YTpgU1NMQ29udGV4dC5vcHRpb25zYAotYXR0cmlidXRlOjoKK3JlY29tbWVuZGVkIHRvIHVzZSA6Y29uc3Q6YFBST1RPQ09MX1RMU19DTElFTlRgIG9yCis6Y29uc3Q6YFBST1RPQ09MX1RMU19TRVJWRVJgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBTU0x2MiBhbmQgU1NMdjMgYXJlCitkaXNhYmxlZCBieSBkZWZhdWx0LgogCi0gICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMUykKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjIKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjMKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMQorICAgPj4+IGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICA+Pj4gY2xpZW50X2NvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKKyAgID4+PiBjbGllbnRfY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8xCisKIAogVGhlIFNTTCBjb250ZXh0IGNyZWF0ZWQgYWJvdmUgd2lsbCBvbmx5IGFsbG93IFRMU3YxLjIgYW5kIGxhdGVyIChpZgotc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtKSBjb25uZWN0aW9ucy4KK3N1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSkgY29ubmVjdGlvbnMgdG8gYSBzZXJ2ZXIuIDpjb25zdDpgUFJPVE9DT0xfVExTX0NMSUVOVGAKK2ltcGxpZXMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBhbmQgaG9zdG5hbWUgY2hlY2tzIGJ5IGRlZmF1bHQuIFlvdSBoYXZlIHRvCitsb2FkIGNlcnRpZmljYXRlcyBpbnRvIHRoZSBjb250ZXh0LgorCiAKIENpcGhlciBzZWxlY3Rpb24KICcnJycnJycnJycnJycnJycKQEAgLTIwODUsOCArMjI3OSw5IEBACiBzc2wgbW9kdWxlIGRpc2FibGVzIGNlcnRhaW4gd2VhayBjaXBoZXJzIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgbWF5IHdhbnQKIHRvIGZ1cnRoZXIgcmVzdHJpY3QgdGhlIGNpcGhlciBjaG9pY2UuIEJlIHN1cmUgdG8gcmVhZCBPcGVuU1NMJ3MgZG9jdW1lbnRhdGlvbgogYWJvdXQgdGhlIGBjaXBoZXIgbGlzdCBmb3JtYXQgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvYXBwcy9jaXBoZXJzLmh0bWwjQ0lQSEVSLUxJU1QtRk9STUFUPmBfLgotSWYgeW91IHdhbnQgdG8gY2hlY2sgd2hpY2ggY2lwaGVycyBhcmUgZW5hYmxlZCBieSBhIGdpdmVuIGNpcGhlciBsaXN0LCB1c2UgdGhlCi1gYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91ciBzeXN0ZW0uCitJZiB5b3Ugd2FudCB0byBjaGVjayB3aGljaCBjaXBoZXJzIGFyZSBlbmFibGVkIGJ5IGEgZ2l2ZW4gY2lwaGVyIGxpc3QsIHVzZQorOm1ldGg6YFNTTENvbnRleHQuZ2V0X2NpcGhlcnNgIG9yIHRoZSBgYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91cgorc3lzdGVtLgogCiBNdWx0aS1wcm9jZXNzaW5nCiBeXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdCBiL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CmluZGV4IGVhM2Q3ZGEuLmMwMjBhMzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CkBAIC0zOSw2ICszOSw3IEBACiAKID09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpmdW5jOmBtZWFuYCAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKCJhdmVyYWdlIikgb2YgZGF0YS4KKzpmdW5jOmBoYXJtb25pY19tZWFuYCAgICBIYXJtb25pYyBtZWFuIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuYCAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuX2xvd2AgICAgICAgTG93IG1lZGlhbiBvZiBkYXRhLgogOmZ1bmM6YG1lZGlhbl9oaWdoYCAgICAgIEhpZ2ggbWVkaWFuIG9mIGRhdGEuCkBAIC0xMTEsNiArMTEyLDM4IEBACiAgICAgICBgYG1lYW4oZGF0YSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHRoZSB0cnVlIHBvcHVsYXRpb24gbWVhbiDOvC4KIAogCisuLiBmdW5jdGlvbjo6IGhhcm1vbmljX21lYW4oZGF0YSkKKworICAgUmV0dXJuIHRoZSBoYXJtb25pYyBtZWFuIG9mICpkYXRhKiwgYSBzZXF1ZW5jZSBvciBpdGVyYXRvciBvZgorICAgcmVhbC12YWx1ZWQgbnVtYmVycy4KKworICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgcmVjaXByb2NhbCBvZiB0aGUgYXJpdGhtZXRpYyA6ZnVuYzpgbWVhbmAgb2YgdGhlIHJlY2lwcm9jYWxzIG9mIHRoZQorICAgZGF0YS4gRm9yIGV4YW1wbGUsIHRoZSBoYXJtb25pYyBtZWFuIG9mIHRocmVlIHZhbHVlcyAqYSosICpiKiBhbmQgKmMqCisgICB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gYGAzLygxL2EgKyAxL2IgKyAxL2MpYGAuCisKKyAgIFRoZSBoYXJtb25pYyBtZWFuIGlzIGEgdHlwZSBvZiBhdmVyYWdlLCBhIG1lYXN1cmUgb2YgdGhlIGNlbnRyYWwKKyAgIGxvY2F0aW9uIG9mIHRoZSBkYXRhLiAgSXQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgd2hlbiBhdmVyYWdpbmcgcXVhbnRpdGllcworICAgd2hpY2ggYXJlIHJhdGVzIG9yIHJhdGlvcywgZm9yIGV4YW1wbGUgc3BlZWRzLiBGb3IgZXhhbXBsZToKKworICAgU3VwcG9zZSBhbiBpbnZlc3RvciBwdXJjaGFzZXMgYW4gZXF1YWwgdmFsdWUgb2Ygc2hhcmVzIGluIGVhY2ggb2YKKyAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgV2hhdCBpcyB0aGUgYXZlcmFnZSBQL0UgcmF0aW8gZm9yIHRoZSBpbnZlc3RvcidzIHBvcnRmb2xpbz8KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiBoYXJtb25pY19tZWFuKFsyLjUsIDMsIDEwXSkgICMgRm9yIGFuIGVxdWFsIGludmVzdG1lbnQgcG9ydGZvbGlvLgorICAgICAgMy42CisKKyAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgaXMgdG9vIGhpZ2guCisKKyAgIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkIGlmICpkYXRhKiBpcyBlbXB0eSwgb3IgYW55IGVsZW1lbnQKKyAgIGlzIGxlc3MgdGhhbiB6ZXJvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBmdW5jdGlvbjo6IG1lZGlhbihkYXRhKQogCiAgICBSZXR1cm4gdGhlIG1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBudW1lcmljIGRhdGEsIHVzaW5nIHRoZSBjb21tb24gIm1lYW4gb2YKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAppbmRleCAyNTg3YWM4Li4xOWEwMmZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CkBAIC0xMzYzLDYgKzEzNjMsMTEgQEAKICAgIFRoZSA6YXR0cjpgfnJhbmdlLnN0YXJ0YCwgOmF0dHI6YH5yYW5nZS5zdG9wYCBhbmQgOmF0dHI6YH5yYW5nZS5zdGVwYAogICAgYXR0cmlidXRlcy4KIAorLi4gc2VlYWxzbzo6CisKKyAgICogVGhlIGBsaW5zcGFjZSByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3OTAwMC8+YF8KKyAgICAgc2hvd3MgaG93IHRvIGltcGxlbWVudCBhIGxhenkgdmVyc2lvbiBvZiByYW5nZSB0aGF0IHN1aXRhYmxlIGZvciBmbG9hdGluZworICAgICBwb2ludCBhcHBsaWNhdGlvbnMuCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogc3RyaW5nOyB0ZXh0IHNlcXVlbmNlIHR5cGUKQEAgLTE0NTMsOCArMTQ1OCw4IEBACiAKICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBgYHN0cmBgIGNsYXNzIGFuZCBpdHMgbWV0aG9kcywgc2VlCiAgICA6cmVmOmB0ZXh0c2VxYCBhbmQgdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uIGJlbG93LiAgVG8gb3V0cHV0Ci0gICBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLiAgSW4gYWRkaXRpb24sCi0gICBzZWUgdGhlIDpyZWY6YHN0cmluZ3NlcnZpY2VzYCBzZWN0aW9uLgorICAgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgZi1zdHJpbmdzYCBhbmQgOnJlZjpgZm9ybWF0c3RyaW5nc2AKKyAgIHNlY3Rpb25zLiAgSW4gYWRkaXRpb24sIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCiAKIAogLi4gaW5kZXg6OgpAQCAtMjA1Niw4ICsyMDYxLDggQEAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogZm9ybWF0dGluZywgc3RyaW5nICglKQogICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBzdHJpbmcgKCUpCi0gICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0dGluZwotICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0aW5nLCBwcmludGYKKyAgIHNpbmdsZTogc3RyaW5nOyBpbnRlcnBvbGF0aW9uLCBwcmludGYKICAgIHNpbmdsZTogcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogc3ByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgZm9ybWF0dGluZwpAQCAtMjA2Nyw5ICsyMDcyLDEwIEBACiAKICAgIFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgZXhoaWJpdCBhIHZhcmlldHkgb2YgcXVpcmtzIHRoYXQKICAgIGxlYWQgdG8gYSBudW1iZXIgb2YgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBmYWlsaW5nIHRvIGRpc3BsYXkgdHVwbGVzIGFuZAotICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOm1ldGg6YHN0ci5mb3JtYXRgIGludGVyZmFjZQotICAgaGVscHMgYXZvaWQgdGhlc2UgZXJyb3JzLCBhbmQgYWxzbyBwcm92aWRlcyBhIGdlbmVyYWxseSBtb3JlIHBvd2VyZnVsLAotICAgZmxleGlibGUgYW5kIGV4dGVuc2libGUgYXBwcm9hY2ggdG8gZm9ybWF0dGluZyB0ZXh0LgorICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOnJlZjpgZm9ybWF0dGVkCisgICBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIG9yIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgaW50ZXJmYWNlCisgICBoZWxwcyBhdm9pZCB0aGVzZSBlcnJvcnMuICBUaGVzZSBhbHRlcm5hdGl2ZXMgYWxzbyBwcm92aWRlIG1vcmUgcG93ZXJmdWwsCisgICBmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBhcHByb2FjaGVzIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KQEAgLTI2MzAsOCArMjYzNiw4IEBACiAgICBUaGUgcHJlZml4KGVzKSB0byBzZWFyY2ggZm9yIG1heSBiZSBhbnkgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KIAogCi0uLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGVbLCBkZWxldGVdKQotICAgICAgICAgICAgYnl0ZWFycmF5LnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pCisuLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGUsIGRlbGV0ZT1iJycpCisgICAgICAgICAgICBieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlLCBkZWxldGU9YicnKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0IHdoZXJlIGFsbCBieXRlcyBvY2N1cnJpbmcgaW4KICAgIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlKiBhcmUgcmVtb3ZlZCwgYW5kIHRoZSByZW1haW5pbmcgYnl0ZXMgaGF2ZQpAQCAtMjY0Nyw2ICsyNjUzLDkgQEAKICAgICAgID4+PiBiJ3JlYWQgdGhpcyBzaG9ydCB0ZXh0Jy50cmFuc2xhdGUoTm9uZSwgYidhZWlvdScpCiAgICAgICBiJ3JkIHRocyBzaHJ0IHR4dCcKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWxldGUqIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgorCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgaGF2ZSBkZWZhdWx0IGJlaGF2aW91cnMKIHRoYXQgYXNzdW1lIHRoZSB1c2Ugb2YgQVNDSUkgY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cywgYnV0IGNhbiBzdGlsbCBiZSB1c2VkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0IGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAppbmRleCAwNTQxOGE5Li5hMDk3N2I2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKQEAgLTE4OCw3ICsxODgsOSBAQAogCiBUaGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBhbmQgdGhlIDpjbGFzczpgRm9ybWF0dGVyYCBjbGFzcyBzaGFyZSB0aGUgc2FtZQogc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgOmNsYXNzOmBGb3JtYXR0ZXJgLAotc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuCitzdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4gIFRoZSBzeW50YXggaXMKK3JlbGF0ZWQgdG8gdGhhdCBvZiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCwgYnV0Cit0aGVyZSBhcmUgZGlmZmVyZW5jZXMuCiAKIEZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXMgYGB7fWBgLgogQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWwgdGV4dCwgd2hpY2ggaXMKQEAgLTI4Myw3ICsyODUsOCBAQAogCiAiRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gYQogZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWQgKHNlZQotOnJlZjpgZm9ybWF0c3RyaW5nc2ApLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWx0LWluCis6cmVmOmBmb3JtYXRzdHJpbmdzYCBhbmQgOnJlZjpgZi1zdHJpbmdzYCkuCitUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4KIDpmdW5jOmBmb3JtYXRgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93IHRoZSBmb3JtYXQKIHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuCiAKQEAgLTI5NywxOCArMzAwLDIwIEBACiBUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6IHNmCi0gICBmb3JtYXRfc3BlYzogW1tgZmlsbGBdYGFsaWduYF1bYHNpZ25gXVsjXVswXVtgd2lkdGhgXVssXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KKyAgIGZvcm1hdF9zcGVjOiBbW2BmaWxsYF1gYWxpZ25gXVtgc2lnbmBdWyNdWzBdW2B3aWR0aGBdW2Bncm91cGluZ19vcHRpb25gXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KICAgIGZpbGw6IDxhbnkgY2hhcmFjdGVyPgogICAgYWxpZ246ICI8IiB8ICI+IiB8ICI9IiB8ICJeIgogICAgc2lnbjogIisiIHwgIi0iIHwgIiAiCiAgICB3aWR0aDogYGludGVnZXJgCisgICBncm91cGluZ19vcHRpb246ICJfIiB8ICIsIgogICAgcHJlY2lzaW9uOiBgaW50ZWdlcmAKICAgIHR5cGU6ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIgogCiBJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgYnkgYSAqZmlsbCoKIGNoYXJhY3RlciB0aGF0IGNhbiBiZSBhbnkgY2hhcmFjdGVyIGFuZCBkZWZhdWx0cyB0byBhIHNwYWNlIGlmIG9taXR0ZWQuCiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAoImBge2BgIiBvciAiYGB9YGAiKSBhcwotdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgCit0aGUgKmZpbGwqIGNoYXJhY3RlciBpbiBhIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbAorPGYtc3RyaW5ncz5gIG9yIHdoZW4gdXNpbmcgdGhlIDptZXRoOmBzdHIuZm9ybWF0YAogbWV0aG9kLiAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2UKIHdpdGggYSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc24ndAogYWZmZWN0IHRoZSA6ZnVuYzpgZm9ybWF0YCBmdW5jdGlvbi4KQEAgLTM3NCw2ICszNzksMTYgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICBBZGRlZCB0aGUgYGAnLCdgYCBvcHRpb24gKHNlZSBhbHNvIDpwZXA6YDM3OGApLgogCitUaGUgYGAnXydgYCBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGFuIHVuZGVyc2NvcmUgZm9yIGEgdGhvdXNhbmRzCitzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yIGludGVnZXIKK3ByZXNlbnRhdGlvbiB0eXBlIGBgJ2QnYGAuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYGAnYidgYCwKK2BgJ28nYGAsIGBgJ3gnYGAsIGFuZCBgYCdYJ2BgLCB1bmRlcnNjb3JlcyB3aWxsIGJlIGluc2VydGVkIGV2ZXJ5IDQKK2RpZ2l0cy4gIEZvciBvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4KK2Vycm9yLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgQWRkZWQgdGhlIGBgJ18nYGAgb3B0aW9uIChzZWUgYWxzbyA6cGVwOmA1MTVgKS4KKwogKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdAogc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CmluZGV4IGFlMmUzOGYuLjdlODYxZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdApAQCAtMjE2LDYgKzIxNiw4IEBACiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgTmBgICB8IDpjOnR5cGU6YHNpemVfdGAgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IGBgZWBgICB8IFwoNykgICAgICAgICAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CisrLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZmBgICB8IDpjOnR5cGU6YGZsb2F0YCAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZGBgICB8IDpjOnR5cGU6YGRvdWJsZWAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CkBAIC0yNTcsOSArMjU5LDEwIEBACiAgICBmaXRzIHlvdXIgYXBwbGljYXRpb24uCiAKICg1KQotICAgRm9yIHRoZSBgYCdmJ2BgIGFuZCBgYCdkJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQgcmVwcmVzZW50YXRpb24gdXNlcwotICAgdGhlIElFRUUgNzU0IGJpbmFyeTMyIChmb3IgYGAnZidgYCkgb3IgYmluYXJ5NjQgKGZvciBgYCdkJ2BgKSBmb3JtYXQsCi0gICByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCisgICBGb3IgdGhlIGBgJ2YnYGAsIGBgJ2QnYGAgYW5kIGBgJ2UnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZAorICAgcmVwcmVzZW50YXRpb24gdXNlcyB0aGUgSUVFRSA3NTQgYmluYXJ5MzIsIGJpbmFyeTY0IG9yIGJpbmFyeTE2IGZvcm1hdCAoZm9yCisgICBgYCdmJ2BgLCBgYCdkJ2BgIG9yIGBgJ2UnYGAgcmVzcGVjdGl2ZWx5KSwgcmVnYXJkbGVzcyBvZiB0aGUgZmxvYXRpbmctcG9pbnQKKyAgIGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KIAogKDYpCiAgICBUaGUgYGAnUCdgYCBmb3JtYXQgY2hhcmFjdGVyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlIGJ5dGUgb3JkZXJpbmcKQEAgLTI2OCw2ICsyNzEsMTYgQEAKICAgIG9uIHRoZSBob3N0IHN5c3RlbS4gVGhlIHN0cnVjdCBtb2R1bGUgZG9lcyBub3QgaW50ZXJwcmV0IHRoaXMgYXMgbmF0aXZlCiAgICBvcmRlcmluZywgc28gdGhlIGBgJ1AnYGAgZm9ybWF0IGlzIG5vdCBhdmFpbGFibGUuCiAKKyg3KQorICAgVGhlIElFRUUgNzU0IGJpbmFyeTE2ICJoYWxmIHByZWNpc2lvbiIgdHlwZSB3YXMgaW50cm9kdWNlZCBpbiB0aGUgMjAwOAorICAgcmV2aXNpb24gb2YgdGhlIGBJRUVFIDc1NCBzdGFuZGFyZCA8aWVlZSA3NTQgc3RhbmRhcmRfPmBfLiBJdCBoYXMgYSBzaWduCisgICBiaXQsIGEgNS1iaXQgZXhwb25lbnQgYW5kIDExLWJpdCBwcmVjaXNpb24gKHdpdGggMTAgYml0cyBleHBsaWNpdGx5IHN0b3JlZCksCisgICBhbmQgY2FuIHJlcHJlc2VudCBudW1iZXJzIGJldHdlZW4gYXBwcm94aW1hdGVseSBgYDYuMWUtMDVgYCBhbmQgYGA2LjVlKzA0YGAKKyAgIGF0IGZ1bGwgcHJlY2lzaW9uLiBUaGlzIHR5cGUgaXMgbm90IHdpZGVseSBzdXBwb3J0ZWQgYnkgQyBjb21waWxlcnM6IG9uIGEKKyAgIHR5cGljYWwgbWFjaGluZSwgYW4gdW5zaWduZWQgc2hvcnQgY2FuIGJlIHVzZWQgZm9yIHN0b3JhZ2UsIGJ1dCBub3QgZm9yIG1hdGgKKyAgIG9wZXJhdGlvbnMuIFNlZSB0aGUgV2lraXBlZGlhIHBhZ2Ugb24gdGhlIGBoYWxmLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludAorICAgZm9ybWF0IDxoYWxmIHByZWNpc2lvbiBmb3JtYXRfPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCiAKIEEgZm9ybWF0IGNoYXJhY3RlciBtYXkgYmUgcHJlY2VkZWQgYnkgYW4gaW50ZWdyYWwgcmVwZWF0IGNvdW50LiAgRm9yIGV4YW1wbGUsCiB0aGUgZm9ybWF0IHN0cmluZyBgYCc0aCdgYCBtZWFucyBleGFjdGx5IHRoZSBzYW1lIGFzIGBgJ2hoaGgnYGAuCkBAIC00MzAsMyArNDQzLDcgQEAKICAgICAgIFRoZSBjYWxjdWxhdGVkIHNpemUgb2YgdGhlIHN0cnVjdCAoYW5kIGhlbmNlIG9mIHRoZSBieXRlcyBvYmplY3QgcHJvZHVjZWQKICAgICAgIGJ5IHRoZSA6bWV0aDpgcGFja2AgbWV0aG9kKSBjb3JyZXNwb25kaW5nIHRvIDphdHRyOmBmb3JtYXRgLgogCisKKy4uIF9oYWxmIHByZWNpc2lvbiBmb3JtYXQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGYtcHJlY2lzaW9uX2Zsb2F0aW5nLXBvaW50X2Zvcm1hdAorCisuLiBfaWVlZSA3NTQgc3RhbmRhcmQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVfZmxvYXRpbmdfcG9pbnQjSUVFRV83NTQtMjAwOApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCBjMWIyOGY4Li5hZDJhYmU4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMzgsNyArMzgsOCBAQAogCiAKIC4uIGZ1bmN0aW9uOjogcnVuKGFyZ3MsICosIHN0ZGluPU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSxcCi0gICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCiAgICByZXR1cm4gYSA6Y2xhc3M6YENvbXBsZXRlZFByb2Nlc3NgIGluc3RhbmNlLgpAQCAtNjAsMTUgKzYxLDIwIEBACiAKICAgIFRoZSAqaW5wdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4uY29tbXVuaWNhdGVgIGFuZCB0aHVzIHRvIHRoZQogICAgc3VicHJvY2VzcydzIHN0ZGluLiAgSWYgdXNlZCBpdCBtdXN0IGJlIGEgYnl0ZSBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gIFdoZW4gdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdAotICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGggYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkKLSAgIG5vdCBiZSB1c2VkIGFzIHdlbGwuCisgICAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIHNwZWNpZmllZCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyB0cnVlLiAgV2hlbgorICAgdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2l0aAorICAgYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkgbm90IGJlIHVzZWQgYXMgd2VsbC4KIAogICAgSWYgKmNoZWNrKiBpcyB0cnVlLCBhbmQgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSwgYQogICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuIEF0dHJpYnV0ZXMgb2YgdGhhdAogICAgZXhjZXB0aW9uIGhvbGQgdGhlIGFyZ3VtZW50cywgdGhlIGV4aXQgY29kZSwgYW5kIHN0ZG91dCBhbmQgc3RkZXJyIGlmIHRoZXkKICAgIHdlcmUgY2FwdHVyZWQuCiAKKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgb3IgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgdHJ1ZSwKKyAgIGZpbGUgb2JqZWN0cyBmb3Igc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHVzaW5nIHRoZQorICAgc3BlY2lmaWVkICplbmNvZGluZyogYW5kICplcnJvcnMqIG9yIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGRlZmF1bHQuCisgICBPdGhlcndpc2UsIGZpbGUgb2JqZWN0cyBhcmUgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgorCiAgICBFeGFtcGxlczo6CiAKICAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIl0pICAjIGRvZXNuJ3QgY2FwdHVyZSBvdXRwdXQKQEAgLTg1LDYgKzkxLDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICAgICBBZGRlZCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzCisKIC4uIGNsYXNzOjogQ29tcGxldGVkUHJvY2VzcwogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gOmZ1bmM6YHJ1bmAsIHJlcHJlc2VudGluZyBhIHByb2Nlc3MgdGhhdCBoYXMgZmluaXNoZWQuCkBAIC0xMDQsOCArMTE0LDggQEAKICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAogCiAgICAgICBDYXB0dXJlZCBzdGRvdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIGBgTm9uZWBgIGlmIHN0ZG91dAotICAgICAgd2FzIG5vdCBjYXB0dXJlZC4KKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBhbiBlbmNvZGluZyBvciBlcnJvcnMuIGBgTm9uZWBgIGlmIHN0ZG91dCB3YXMgbm90CisgICAgICBjYXB0dXJlZC4KIAogICAgICAgSWYgeW91IHJhbiB0aGUgcHJvY2VzcyB3aXRoIGBgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUYGAsIHN0ZG91dCBhbmQKICAgICAgIHN0ZGVyciB3aWxsIGJlIGNvbWJpbmVkIGluIHRoaXMgYXR0cmlidXRlLCBhbmQgOmF0dHI6YHN0ZGVycmAgd2lsbCBiZQpAQCAtMTE0LDggKzEyNCw4IEBACiAgICAuLiBhdHRyaWJ1dGU6OiBzdGRlcnIKIAogICAgICAgQ2FwdHVyZWQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIEEgYnl0ZXMgc2VxdWVuY2UsIG9yIGEgc3RyaW5nIGlmCi0gICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiBgYE5vbmVgYCBpZiBzdGRlcnIKLSAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisgICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYW4gZW5jb2Rpbmcgb3IgZXJyb3JzLiBgYE5vbmVgYCBpZiBzdGRlcnIgd2FzIG5vdAorICAgICAgY2FwdHVyZWQuCiAKICAgIC4uIG1ldGhvZDo6IGNoZWNrX3JldHVybmNvZGUoKQogCkBAIC0yNDksMTkgKzI1OSwyMiBAQAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IHN1YnByb2Nlc3MgbW9kdWxlCiAKLSAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgRmFsc2VgYCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqIGFuZAotICAgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgYXMgYmluYXJ5IHN0cmVhbXMsIGFuZCBubyBsaW5lIGVuZGluZyBjb252ZXJzaW9uIGlzCi0gICBkb25lLgorICAgSWYgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmUgc3BlY2lmaWVkLCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyB0cnVlLAorICAgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgaW4gdGV4dAorICAgbW9kZSB1c2luZyB0aGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogc3BlY2lmaWVkIGluIHRoZSBjYWxsIG9yIHRoZQorICAgZGVmYXVsdHMgZm9yIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAuCiAKLSAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGVzZSBmaWxlIG9iamVjdHMKLSAgIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlCi0gICB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKLSAgIDxsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rpbmc+YC4gIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzCi0gICBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IKLSAgIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQgKnN0ZGVyciosIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlCi0gICBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKgotICAgYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgorICAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkCisgICB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvciA6ZGF0YTpgb3MubGluZXNlcGAuIEZvciAqc3Rkb3V0KiBhbmQgKnN0ZGVyciosCisgICBhbGwgbGluZSBlbmRpbmdzIGluIHRoZSBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuICBGb3IgbW9yZQorICAgaW5mb3JtYXRpb24gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzCisgICB3aGVuIHRoZSAqbmV3bGluZSogYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgorCisgICBJZiB0ZXh0IG1vZGUgaXMgbm90IHVzZWQsICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcworICAgYmluYXJ5IHN0cmVhbXMuIE5vIGVuY29kaW5nIG9yIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkICplbmNvZGluZyogYW5kICplcnJvcnMqIHBhcmFtZXRlcnMuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0zMDYsNyArMzE5LDggQEAKICAgICAgICAgICAgICAgICAgc3RkZXJyPU5vbmUsIHByZWV4ZWNfZm49Tm9uZSwgY2xvc2VfZmRzPVRydWUsIHNoZWxsPUZhbHNlLCBcCiAgICAgICAgICAgICAgICAgIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBcCiAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvPU5vbmUsIGNyZWF0aW9uZmxhZ3M9MCwgcmVzdG9yZV9zaWduYWxzPVRydWUsIFwKLSAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X3Nlc3Npb249RmFsc2UsIHBhc3NfZmRzPSgpKQorICAgICAgICAgICAgICAgICBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCksICosIFwKKyAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCiAKICAgIEV4ZWN1dGUgYSBjaGlsZCBwcm9ncmFtIGluIGEgbmV3IHByb2Nlc3MuICBPbiBQT1NJWCwgdGhlIGNsYXNzIHVzZXMKICAgIDptZXRoOmBvcy5leGVjdnBgLWxpa2UgYmVoYXZpb3IgdG8gZXhlY3V0ZSB0aGUgY2hpbGQgcHJvZ3JhbS4gIE9uIFdpbmRvd3MsCkBAIC00ODIsMTAgKzQ5NiwxNCBAQAogCiAgICAuLiBfc2lkZS1ieS1zaWRlIGFzc2VtYmx5OiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaWRlLWJ5LVNpZGVfQXNzZW1ibHkKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCoKLSAgIGFuZCAqc3RkZXJyKiBhcmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSwgYXMKLSAgIGRlc2NyaWJlZCBhYm92ZSBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCwgb3RoZXJ3aXNlIHRoZXkgYXJlCi0gICBvcGVuZWQgYXMgYmluYXJ5IHN0cmVhbXMuCisgICBJZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZSBzcGVjaWZpZWQsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCoKKyAgIGFuZCAqc3RkZXJyKiBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgYW5kCisgICAqZXJyb3JzKiwgYXMgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLiBJZgorICAgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZXkgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgd2l0aCBkZWZhdWx0CisgICBlbmNvZGluZy4gT3RoZXJ3aXNlLCB0aGV5IGFyZSBvcGVuZWQgYXMgYmluYXJ5IHN0cmVhbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogd2VyZSBhZGRlZC4KIAogICAgSWYgZ2l2ZW4sICpzdGFydHVwaW5mbyogd2lsbCBiZSBhIDpjbGFzczpgU1RBUlRVUElORk9gIG9iamVjdCwgd2hpY2ggaXMKICAgIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyBgYENyZWF0ZVByb2Nlc3NgYCBmdW5jdGlvbi4KQEAgLTUwMiw2ICs1MjAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBjb250ZXh0IG1hbmFnZXIgc3VwcG9ydC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFBvcGVuIGRlc3RydWN0b3Igbm93IGVtaXRzIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nIGlmIHRoZSBjaGlsZAorICAgICAgcHJvY2VzcyBpcyBzdGlsbCBydW5uaW5nLgorCiAKIEV4Y2VwdGlvbnMKIF5eXl5eXl5eXl4KQEAgLTU5NywxMSArNjE5LDEyIEBACiAgICBJbnRlcmFjdCB3aXRoIHByb2Nlc3M6IFNlbmQgZGF0YSB0byBzdGRpbi4gIFJlYWQgZGF0YSBmcm9tIHN0ZG91dCBhbmQgc3RkZXJyLAogICAgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsCiAgICAqaW5wdXQqIGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlIGNoaWxkIHByb2Nlc3MsIG9yCi0gICBgYE5vbmVgYCwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuICBUaGUgdHlwZSBvZiAqaW5wdXQqCi0gICBtdXN0IGJlIGJ5dGVzIG9yLCBpZiAqdW5pdmVyc2FsX25ld2xpbmVzKiB3YXMgYGBUcnVlYGAsIGEgc3RyaW5nLgorICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgSWYgc3RyZWFtcyB3ZXJlIG9wZW5lZCBpbgorICAgdGV4dCBtb2RlLCAqaW5wdXQqIG11c3QgYmUgYSBzdHJpbmcuICBPdGhlcndpc2UsIGl0IG11c3QgYmUgYnl0ZXMuCiAKICAgIDptZXRoOmBjb21tdW5pY2F0ZWAgcmV0dXJucyBhIHR1cGxlIGBgKHN0ZG91dF9kYXRhLCBzdGRlcnJfZGF0YSlgYC4KLSAgIFRoZSBkYXRhIHdpbGwgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgc3RyaW5ncy4KKyAgIFRoZSBkYXRhIHdpbGwgYmUgc3RyaW5ncyBpZiBzdHJlYW1zIHdlcmUgb3BlbmVkIGluIHRleHQgbW9kZTsgb3RoZXJ3aXNlLAorICAgYnl0ZXMuCiAKICAgIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBzZW5kIGRhdGEgdG8gdGhlIHByb2Nlc3MncyBzdGRpbiwgeW91IG5lZWQgdG8gY3JlYXRlCiAgICB0aGUgUG9wZW4gb2JqZWN0IHdpdGggYGBzdGRpbj1QSVBFYGAuICBTaW1pbGFybHksIHRvIGdldCBhbnl0aGluZyBvdGhlciB0aGFuCkBAIC02NjgsMjggKzY5MSwzMCBAQAogLi4gYXR0cmlidXRlOjogUG9wZW4uc3RkaW4KIAogICAgSWYgdGhlICpzdGRpbiogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSB3cml0ZWFibGUKLSAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBJZiB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyoKLSAgIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlCi0gICBzdHJlYW0uIElmIHRoZSAqc3RkaW4qIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcwotICAgYGBOb25lYGAuCisgICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gSWYgdGhlICplbmNvZGluZyogb3IgKmVycm9ycyoKKyAgIGFyZ3VtZW50cyB3ZXJlIHNwZWNpZmllZCBvciB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLAorICAgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlICpzdGRpbioKKyAgIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KIAogCiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRvdXQKIAogICAgSWYgdGhlICpzdGRvdXQqIGFyZ3VtZW50IHdhcyA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGEgcmVhZGFibGUKICAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBSZWFkaW5nIGZyb20gdGhlIHN0cmVhbSBwcm92aWRlcwotICAgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMKLSAgIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUKLSAgICpzdGRvdXQqIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KKyAgIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmd1bWVudHMgd2VyZQorICAgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYQorICAgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZG91dCogYXJndW1lbnQgd2FzIG5vdAorICAgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KIAogCiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRlcnIKIAogICAgSWYgdGhlICpzdGRlcnIqIGFyZ3VtZW50IHdhcyA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGEgcmVhZGFibGUKICAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBSZWFkaW5nIGZyb20gdGhlIHN0cmVhbSBwcm92aWRlcwotICAgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMKLSAgIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUKLSAgICpzdGRlcnIqIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KKyAgIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmd1bWVudHMKKyAgIHdlcmUgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsIHRoZSBzdHJlYW0KKyAgIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZGVyciogYXJndW1lbnQgd2FzCisgICBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KIAogLi4gd2FybmluZzo6CiAKQEAgLTg4Miw3ICs5MDcsOSBAQAogICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAogCi0uLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQorLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCiAKICAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dC4KIApAQCAtMTEzOCw3ICsxMTY1LDcgQEAKICAgIFJldHVybiBgYChzdGF0dXMsIG91dHB1dClgYCBvZiBleGVjdXRpbmcgKmNtZCogaW4gYSBzaGVsbC4KIAogICAgRXhlY3V0ZSB0aGUgc3RyaW5nICpjbWQqIGluIGEgc2hlbGwgd2l0aCA6bWV0aDpgUG9wZW4uY2hlY2tfb3V0cHV0YCBhbmQKLSAgIHJldHVybiBhIDItdHVwbGUgYGAoc3RhdHVzLCBvdXRwdXQpYGAuIFVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzIHVzZWQ7CisgICByZXR1cm4gYSAyLXR1cGxlIGBgKHN0YXR1cywgb3V0cHV0KWBgLiBUaGUgbG9jYWxlIGVuY29kaW5nIGlzIHVzZWQ7CiAgICBzZWUgdGhlIG5vdGVzIG9uIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIGZvciBtb3JlIGRldGFpbHMuCiAKICAgIEEgdHJhaWxpbmcgbmV3bGluZSBpcyBzdHJpcHBlZCBmcm9tIHRoZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXMucnN0IGIvRG9jL2xpYnJhcnkvc3lzLnJzdAppbmRleCA3YWVkNzVkLi4yZDE0YTFkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgKGRlZmF1bHRpbmcgdG8gemVybyksIG9yIGFub3RoZXIgdHlwZSBvZiBvYmplY3QuICBJZiBpdCBpcyBhbiBpbnRlZ2VyLCB6ZXJvCiAgICBpcyBjb25zaWRlcmVkICJzdWNjZXNzZnVsIHRlcm1pbmF0aW9uIiBhbmQgYW55IG5vbnplcm8gdmFsdWUgaXMgY29uc2lkZXJlZAogICAgImFibm9ybWFsIHRlcm1pbmF0aW9uIiBieSBzaGVsbHMgYW5kIHRoZSBsaWtlLiAgTW9zdCBzeXN0ZW1zIHJlcXVpcmUgaXQgdG8gYmUKLSAgIGluIHRoZSByYW5nZSAwLTEyNywgYW5kIHByb2R1Y2UgdW5kZWZpbmVkIHJlc3VsdHMgb3RoZXJ3aXNlLiAgU29tZSBzeXN0ZW1zCisgICBpbiB0aGUgcmFuZ2UgMC0tMTI3LCBhbmQgcHJvZHVjZSB1bmRlZmluZWQgcmVzdWx0cyBvdGhlcndpc2UuICBTb21lIHN5c3RlbXMKICAgIGhhdmUgYSBjb252ZW50aW9uIGZvciBhc3NpZ25pbmcgc3BlY2lmaWMgbWVhbmluZ3MgdG8gc3BlY2lmaWMgZXhpdCBjb2RlcywgYnV0CiAgICB0aGVzZSBhcmUgZ2VuZXJhbGx5IHVuZGVyZGV2ZWxvcGVkOyBVbml4IHByb2dyYW1zIGdlbmVyYWxseSB1c2UgMiBmb3IgY29tbWFuZAogICAgbGluZSBzeW50YXggZXJyb3JzIGFuZCAxIGZvciBhbGwgb3RoZXIga2luZCBvZiBlcnJvcnMuICBJZiBhbm90aGVyIHR5cGUgb2YKQEAgLTI2OSw2ICsyNjksMTEgQEAKICAgIHRoZSBwcm9jZXNzIHdoZW4gY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBub3QKICAgIGludGVyY2VwdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGluIHRoZSBjbGVhbnVwIGFmdGVyIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKKyAgICAgIGhhcyBjYXVnaHQgOmV4YzpgU3lzdGVtRXhpdGAgKHN1Y2ggYXMgYW4gZXJyb3IgZmx1c2hpbmcgYnVmZmVyZWQgZGF0YQorICAgICAgaW4gdGhlIHN0YW5kYXJkIHN0cmVhbXMpLCB0aGUgZXhpdCBzdGF0dXMgaXMgY2hhbmdlZCB0byAxMjAuCisKIAogLi4gZGF0YTo6IGZsYWdzCiAKQEAgLTQyMywyNSArNDI4LDQyIEBACiAKIC4uIGZ1bmN0aW9uOjogZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKIAotICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZSBmaWxlbmFtZXMgaW50bwotICAgc3lzdGVtIGZpbGUgbmFtZXMuIFRoZSByZXN1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgb3BlcmF0aW5nIHN5c3RlbToKKyAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gVW5pY29kZQorICAgZmlsZW5hbWVzIGFuZCBieXRlcyBmaWxlbmFtZXMuIEZvciBiZXN0IGNvbXBhdGliaWxpdHksIHN0ciBzaG91bGQgYmUKKyAgIHVzZWQgZm9yIGZpbGVuYW1lcyBpbiBhbGwgY2FzZXMsIGFsdGhvdWdoIHJlcHJlc2VudGluZyBmaWxlbmFtZXMgYXMgYnl0ZXMKKyAgIGlzIGFsc28gc3VwcG9ydGVkLiBGdW5jdGlvbnMgYWNjZXB0aW5nIG9yIHJldHVybmluZyBmaWxlbmFtZXMgc2hvdWxkIHN1cHBvcnQKKyAgIGVpdGhlciBzdHIgb3IgYnl0ZXMgYW5kIGludGVybmFsbHkgY29udmVydCB0byB0aGUgc3lzdGVtJ3MgcHJlZmVycmVkCisgICByZXByZXNlbnRhdGlvbi4KKworICAgVGhpcyBlbmNvZGluZyBpcyBhbHdheXMgQVNDSUktY29tcGF0aWJsZS4KKworICAgOmZ1bmM6YG9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YG9zLmZzZGVjb2RlYCBzaG91bGQgYmUgdXNlZCB0byBlbnN1cmUgdGhhdAorICAgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlIGFyZSB1c2VkLgogCiAgICAqIE9uIE1hYyBPUyBYLCB0aGUgZW5jb2RpbmcgaXMgYGAndXRmLTgnYGAuCiAKLSAgICogT24gVW5peCwgdGhlIGVuY29kaW5nIGlzIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZSBhY2NvcmRpbmcgdG8gdGhlIHJlc3VsdCBvZgotICAgICBubF9sYW5naW5mbyhDT0RFU0VUKS4KKyAgICogT24gVW5peCwgdGhlIGVuY29kaW5nIGlzIHRoZSBsb2NhbGUgZW5jb2RpbmcuCiAKLSAgICogT24gV2luZG93cyBOVCssIGZpbGUgbmFtZXMgYXJlIFVuaWNvZGUgbmF0aXZlbHksIHNvIG5vIGNvbnZlcnNpb24gaXMKLSAgICAgcGVyZm9ybWVkLiA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCBzdGlsbCByZXR1cm5zIGBgJ21iY3MnYGAsIGFzCi0gICAgIHRoaXMgaXMgdGhlIGVuY29kaW5nIHRoYXQgYXBwbGljYXRpb25zIHNob3VsZCB1c2Ugd2hlbiB0aGV5IGV4cGxpY2l0bHkKLSAgICAgd2FudCB0byBjb252ZXJ0IFVuaWNvZGUgc3RyaW5ncyB0byBieXRlIHN0cmluZ3MgdGhhdCBhcmUgZXF1aXZhbGVudCB3aGVuCi0gICAgIHVzZWQgYXMgZmlsZSBuYW1lcy4KLQotICAgKiBPbiBXaW5kb3dzIDl4LCB0aGUgZW5jb2RpbmcgaXMgYGAnbWJjcydgYC4KKyAgICogT24gV2luZG93cywgdGhlIGVuY29kaW5nIG1heSBiZSBgYCd1dGYtOCdgYCBvciBgYCdtYmNzJ2BgLCBkZXBlbmRpbmcKKyAgICAgb24gdXNlciBjb25maWd1cmF0aW9uLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgOmZ1bmM6YGdldGZpbGVzeXN0ZW1lbmNvZGluZ2AgcmVzdWx0IGNhbm5vdCBiZSBgYE5vbmVgYCBhbnltb3JlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgV2luZG93cyBpcyBubyBsb25nZXIgZ3VhcmFudGVlZCB0byByZXR1cm4gYGAnbWJjcydgYC4gU2VlIDpwZXA6YDUyOWAKKyAgICAgIGFuZCA6ZnVuYzpgX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLi4gZnVuY3Rpb246OiBnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkKKworICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlcnJvciBtb2RlIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIFVuaWNvZGUgZmlsZW5hbWVzCisgICBhbmQgYnl0ZXMgZmlsZW5hbWVzLiBUaGUgZW5jb2RpbmcgbmFtZSBpcyByZXR1cm5lZCBmcm9tCisgICA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYC4KKworICAgOmZ1bmM6YG9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YG9zLmZzZGVjb2RlYCBzaG91bGQgYmUgdXNlZCB0byBlbnN1cmUgdGhhdAorICAgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlIGFyZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZnVuY3Rpb246OiBnZXRyZWZjb3VudChvYmplY3QpCiAKQEAgLTUzMCwyNiArNTUyLDE1IEBACiAgICBSZXR1cm4gYSBuYW1lZCB0dXBsZSBkZXNjcmliaW5nIHRoZSBXaW5kb3dzIHZlcnNpb24KICAgIGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIG5hbWVkIGVsZW1lbnRzIGFyZSAqbWFqb3IqLCAqbWlub3IqLAogICAgKmJ1aWxkKiwgKnBsYXRmb3JtKiwgKnNlcnZpY2VfcGFjayosICpzZXJ2aWNlX3BhY2tfbWlub3IqLAotICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgYW5kICpwcm9kdWN0X3R5cGUqLgotICAgKnNlcnZpY2VfcGFjayogY29udGFpbnMgYSBzdHJpbmcgd2hpbGUgYWxsIG90aGVyIHZhbHVlcyBhcmUKKyAgICpzZXJ2aWNlX3BhY2tfbWFqb3IqLCAqc3VpdGVfbWFzayosICpwcm9kdWN0X3R5cGUqIGFuZAorICAgKnBsYXRmb3JtX3ZlcnNpb24qLiAqc2VydmljZV9wYWNrKiBjb250YWlucyBhIHN0cmluZywKKyAgICpwbGF0Zm9ybV92ZXJzaW9uKiBhIDMtdHVwbGUgYW5kIGFsbCBvdGhlciB2YWx1ZXMgYXJlCiAgICBpbnRlZ2Vycy4gVGhlIGNvbXBvbmVudHMgY2FuIGFsc28gYmUgYWNjZXNzZWQgYnkgbmFtZSwgc28KICAgIGBgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbMF1gYCBpcyBlcXVpdmFsZW50IHRvCiAgICBgYHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yYGAuIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJpb3IKICAgIHZlcnNpb25zLCBvbmx5IHRoZSBmaXJzdCA1IGVsZW1lbnRzIGFyZSByZXRyaWV2YWJsZSBieSBpbmRleGluZy4KIAotICAgKnBsYXRmb3JtKiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotCi0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGxhdGZvcm0gICAgICAgICAgICAgICAgfAotICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT0rCi0gICB8IDpjb25zdDpgMCAoVkVSX1BMQVRGT1JNX1dJTjMycylgICAgICAgICB8IFdpbjMycyBvbiBXaW5kb3dzIDMuMSAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDEgKFZFUl9QTEFURk9STV9XSU4zMl9XSU5ET1dTKWAgfCBXaW5kb3dzIDk1Lzk4L01FICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAyIChWRVJfUExBVEZPUk1fV0lOMzJfTlQpYCAgICAgIHwgV2luZG93cyBOVC8yMDAwL1hQL3g2NCAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMyAoVkVSX1BMQVRGT1JNX1dJTjMyX0NFKWAgICAgICB8IFdpbmRvd3MgQ0UgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgKnBsYXRmb3JtKiB3aWxsIGJlIDpjb25zdDpgMiAoVkVSX1BMQVRGT1JNX1dJTjMyX05UKWAuCiAKICAgICpwcm9kdWN0X3R5cGUqIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAKQEAgLTU2NSwxNyArNTc2LDIzIEBACiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRvbWFpbiBjb250cm9sbGVyLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0KICAgIFRoaXMgZnVuY3Rpb24gd3JhcHMgdGhlIFdpbjMyIDpjOmZ1bmM6YEdldFZlcnNpb25FeGAgZnVuY3Rpb247IHNlZSB0aGUKICAgIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIG9uIDpjOmZ1bmM6YE9TVkVSU0lPTklORk9FWGAgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAgIGFib3V0IHRoZXNlIGZpZWxkcy4KIAorICAgKnBsYXRmb3JtX3ZlcnNpb24qIHJldHVybnMgdGhlIGFjY3VyYXRlIG1ham9yIHZlcnNpb24sIG1pbm9yIHZlcnNpb24gYW5kCisgICBidWlsZCBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSwgcmF0aGVyIHRoYW4gdGhlIHZlcnNpb24gdGhhdAorICAgaXMgYmVpbmcgZW11bGF0ZWQgZm9yIHRoZSBwcm9jZXNzLiBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGxvZ2dpbmcgcmF0aGVyCisgICB0aGFuIGZvciBmZWF0dXJlIGRldGVjdGlvbi4KKwogICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQ2hhbmdlZCB0byBhIG5hbWVkIHR1cGxlIGFuZCBhZGRlZCAqc2VydmljZV9wYWNrX21pbm9yKiwKICAgICAgICpzZXJ2aWNlX3BhY2tfbWFqb3IqLCAqc3VpdGVfbWFzayosIGFuZCAqcHJvZHVjdF90eXBlKi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwbGF0Zm9ybV92ZXJzaW9uKgogCiAuLiBmdW5jdGlvbjo6IGdldF9jb3JvdXRpbmVfd3JhcHBlcigpCiAKQEAgLTEwODIsMTggKzEwOTksNiBAQAogICAgICAgdGh1cyBtYXkgbm90IGJlIGF2YWlsYWJsZSBpbiBhbGwgUHl0aG9uIGltcGxlbWVudGF0aW9ucy4KIAogCi0uLiBmdW5jdGlvbjo6IHNldHRzY2R1bXAob25fZmxhZykKLQotICAgQWN0aXZhdGUgZHVtcGluZyBvZiBWTSBtZWFzdXJlbWVudHMgdXNpbmcgdGhlIFBlbnRpdW0gdGltZXN0YW1wIGNvdW50ZXIsIGlmCi0gICAqb25fZmxhZyogaXMgdHJ1ZS4gRGVhY3RpdmF0ZSB0aGVzZSBkdW1wcyBpZiAqb25fZmxhZyogaXMgb2ZmLiBUaGUgZnVuY3Rpb24gaXMKLSAgIGF2YWlsYWJsZSBvbmx5IGlmIFB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBgYC0td2l0aC10c2NgYC4gVG8gdW5kZXJzdGFuZAotICAgdGhlIG91dHB1dCBvZiB0aGlzIGR1bXAsIHJlYWQgOmZpbGU6YFB5dGhvbi9jZXZhbC5jYCBpbiB0aGUgUHl0aG9uIHNvdXJjZXMuCi0KLSAgIC4uIGltcGwtZGV0YWlsOjoKLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgaW50aW1hdGVseSBib3VuZCB0byBDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kCi0gICAgICB0aHVzIG5vdCBsaWtlbHkgdG8gYmUgaW1wbGVtZW50ZWQgZWxzZXdoZXJlLgotCi0KIC4uIGZ1bmN0aW9uOjogc2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXBwZXIpCiAKICAgIEFsbG93cyBpbnRlcmNlcHRpbmcgY3JlYXRpb24gb2YgOnRlcm06YGNvcm91dGluZWAgb2JqZWN0cyAob25seSBvbmVzIHRoYXQKQEAgLTExMzMsNiArMTEzOCwxOCBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAogICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KIAorLi4gZnVuY3Rpb246OiBfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKQorCisgICBDaGFuZ2VzIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlIHRvICdtYmNzJyBhbmQKKyAgICdyZXBsYWNlJyByZXNwZWN0aXZlbHksIGZvciBjb25zaXN0ZW5jeSB3aXRoIHZlcnNpb25zIG9mIFB5dGhvbiBwcmlvciB0byAzLjYuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBkZWZpbmluZyB0aGUgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkdgCisgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgbGF1bmNoaW5nIFB5dGhvbi4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgU2VlIDpwZXA6YDUyOWAgZm9yIG1vcmUgZGV0YWlscy4KIAogLi4gZGF0YTo6IHN0ZGluCiAgICAgICAgICAgc3Rkb3V0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0IGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdAppbmRleCAwMmFhYWIzLi4wOGI3NGE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKQEAgLTE2NCw3ICsxNjQsNyBAQAogLi4gZnVuY3Rpb246OiBnZXRfcHl0aG9uX3ZlcnNpb24oKQogCiAgICBSZXR1cm4gdGhlIGBgTUFKT1IuTUlOT1JgYCBQeXRob24gdmVyc2lvbiBudW1iZXIgYXMgYSBzdHJpbmcuICBTaW1pbGFyIHRvCi0gICBgYHN5cy52ZXJzaW9uWzozXWBgLgorICAgYGAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml1gYC4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF9wbGF0Zm9ybSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0IGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAppbmRleCBiOTUwZTQxLi5mOWM1MTUzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKQEAgLTQzLDYgKzQzLDE3IEBACiAgICA6ZXhjOmBFT0ZFcnJvcmAgd2hlbiB0aGUgZW5kIG9mIHRoZSBjb25uZWN0aW9uIGlzIHJlYWQsIGJlY2F1c2UgdGhleSBjYW4gcmV0dXJuCiAgICBhbiBlbXB0eSBzdHJpbmcgZm9yIG90aGVyIHJlYXNvbnMuICBTZWUgdGhlIGluZGl2aWR1YWwgZGVzY3JpcHRpb25zIGJlbG93LgogCisgICBBIDpjbGFzczpgVGVsbmV0YCBvYmplY3QgaXMgYSBjb250ZXh0IG1hbmFnZXIgYW5kIGNhbiBiZSB1c2VkIGluIGEKKyAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBXaGVuIHRoZSA6a2V5d29yZDpgd2l0aGAgYmxvY2sgZW5kcywgdGhlCisgICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBpcyBjYWxsZWQ6OgorCisgICAgICAgPj4+IGZyb20gdGVsbmV0bGliIGltcG9ydCBUZWxuZXQKKyAgICAgICA+Pj4gd2l0aCBUZWxuZXQoJ2xvY2FsaG9zdCcsIDIzKSBhcyB0bjoKKyAgICAgICAuLi4gICAgIHRuLmludGVyYWN0KCkKKyAgICAgICAuLi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgQ29udGV4dCBtYW5hZ2VyIHN1cHBvcnQgYWRkZWQKKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdAppbmRleCA1OTU3N2YwLi5mYWIzZTFmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdApAQCAtNTgyLDYgKzU4Miw0OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIAorLi4gZnVuY3Rpb246OiBjaGVja19fYWxsX18odGVzdF9jYXNlLCBtb2R1bGUsIG5hbWVfb2ZfbW9kdWxlPU5vbmUsIGV4dHJhPSgpLCBibGFja2xpc3Q9KCkpCisKKyAgIEFzc2VydCB0aGF0IHRoZSBgYF9fYWxsX19gYCB2YXJpYWJsZSBvZiAqbW9kdWxlKiBjb250YWlucyBhbGwgcHVibGljIG5hbWVzLgorCisgICBUaGUgbW9kdWxlJ3MgcHVibGljIG5hbWVzIChpdHMgQVBJKSBhcmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseQorICAgYmFzZWQgb24gd2hldGhlciB0aGV5IG1hdGNoIHRoZSBwdWJsaWMgbmFtZSBjb252ZW50aW9uIGFuZCB3ZXJlIGRlZmluZWQgaW4KKyAgICptb2R1bGUqLgorCisgICBUaGUgKm5hbWVfb2ZfbW9kdWxlKiBhcmd1bWVudCBjYW4gc3BlY2lmeSAoYXMgYSBzdHJpbmcgb3IgdHVwbGUgdGhlcmVvZikgd2hhdAorICAgbW9kdWxlKHMpIGFuIEFQSSBjb3VsZCBiZSBkZWZpbmVkIGluIGluIG9yZGVyIHRvIGJlIGRldGVjdGVkIGFzIGEgcHVibGljCisgICBBUEkuIE9uZSBjYXNlIGZvciB0aGlzIGlzIHdoZW4gKm1vZHVsZSogaW1wb3J0cyBwYXJ0IG9mIGl0cyBwdWJsaWMgQVBJIGZyb20KKyAgIG90aGVyIG1vZHVsZXMsIHBvc3NpYmx5IGEgQyBiYWNrZW5kIChsaWtlIGBgY3N2YGAgYW5kIGl0cyBgYF9jc3ZgYCkuCisKKyAgIFRoZSAqZXh0cmEqIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IHdvdWxkbid0IG90aGVyd2lzZSBiZSBhdXRvbWF0aWNhbGx5CisgICBkZXRlY3RlZCBhcyAicHVibGljIiwgbGlrZSBvYmplY3RzIHdpdGhvdXQgYSBwcm9wZXIgYGBfX21vZHVsZV9fYGAKKyAgIGF0dHJpYnV0ZS4gSWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgb25lcy4KKworICAgVGhlICpibGFja2xpc3QqIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IG11c3Qgbm90IGJlIHRyZWF0ZWQgYXMgcGFydCBvZgorICAgdGhlIHB1YmxpYyBBUEkgZXZlbiB0aG91Z2ggdGhlaXIgbmFtZXMgaW5kaWNhdGUgb3RoZXJ3aXNlLgorCisgICBFeGFtcGxlIHVzZTo6CisKKyAgICAgIGltcG9ydCBiYXIKKyAgICAgIGltcG9ydCBmb28KKyAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgIGNsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmb28pCisKKyAgICAgIGNsYXNzIE90aGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgZXh0cmEgPSB7J0JBUl9DT05TVCcsICdGT09fQ09OU1QnfQorICAgICAgICAgICAgICBibGFja2xpc3QgPSB7J2Jheid9ICAjIFVuZG9jdW1lbnRlZCBuYW1lLgorICAgICAgICAgICAgICAjIGJhciBpbXBvcnRzIHBhcnQgb2YgaXRzIEFQSSBmcm9tIF9iYXIuCisgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGJhciwgKCdiYXInLCAnX2JhcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4YywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1lLnJzdCBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CmluZGV4IGU2NjI2ZjIuLmFlMTdmNmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CkBAIC04Myw2ICs4MywxMCBAQAogICAgICBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgd2hlbiBwbGF0Zm9ybSBzdXBwb3J0cyBjb3JyZXNwb25kaW5nCiAgICAgIGBgc3RydWN0IHRtYGAgbWVtYmVycy4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICBUaGUgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgYXR0cmlidXRlcyA6YXR0cjpgdG1fZ210b2ZmYCBhbmQgOmF0dHI6YHRtX3pvbmVgCisgICAgIGFyZSBub3cgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuCisKICogVXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGNvbnZlcnQgYmV0d2VlbiB0aW1lIHJlcHJlc2VudGF0aW9uczoKIAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC01NjYsMTAgKzU3MCw2IEBACiAgICA6Y2xhc3M6YHN0cnVjdF90aW1lYCwgb3IgaGF2aW5nIGVsZW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlLCBhCiAgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KIAotICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICA6YXR0cjpgdG1fZ210b2ZmYCBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMKLSAgICAgd2l0aCBDIGxpYnJhcnkgc3VwcG9ydGluZyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4gYGBzdHJ1Y3QgdG1gYC4KLQogLi4gZnVuY3Rpb246OiB0aW1lKCkKIAogICAgUmV0dXJuIHRoZSB0aW1lIGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIGFzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgpAQCAtNjM3LDExICs2MzcsMTEgQEAKICAgICAgICAgIGl0IGlzIHBvc3NpYmxlIHRvIHJlZmVyIHRvIEZlYnJ1YXJ5IDI5LgogCiAgICAgICA6c2FtcDpgTXttfS57bn0ue2R9YAotICAgICAgICAgVGhlICpkKid0aCBkYXkgKDAgPD0gKmQqIDw9IDYpIG9yIHdlZWsgKm4qIG9mIG1vbnRoICptKiBvZiB0aGUgeWVhciAoMQorICAgICAgICAgVGhlICpkKid0aCBkYXkgKDAgPD0gKmQqIDw9IDYpIG9mIHdlZWsgKm4qIG9mIG1vbnRoICptKiBvZiB0aGUgeWVhciAoMQogICAgICAgICAgPD0gKm4qIDw9IDUsIDEgPD0gKm0qIDw9IDEyLCB3aGVyZSB3ZWVrIDUgbWVhbnMgInRoZSBsYXN0ICpkKiBkYXkgaW4KICAgICAgICAgIG1vbnRoICptKiIgd2hpY2ggbWF5IG9jY3VyIGluIGVpdGhlciB0aGUgZm91cnRoIG9yIHRoZSBmaWZ0aAogICAgICAgICAgd2VlaykuIFdlZWsgMSBpcyB0aGUgZmlyc3Qgd2VlayBpbiB3aGljaCB0aGUgKmQqJ3RoIGRheSBvY2N1cnMuIERheQotICAgICAgICAgemVybyBpcyBTdW5kYXkuCisgICAgICAgICB6ZXJvIGlzIGEgU3VuZGF5LgogCiAgICAgICBgYHRpbWVgYCBoYXMgdGhlIHNhbWUgZm9ybWF0IGFzIGBgb2Zmc2V0YGAgZXhjZXB0IHRoYXQgbm8gbGVhZGluZyBzaWduCiAgICAgICAoJy0nIG9yICcrJykgaXMgYWxsb3dlZC4gVGhlIGRlZmF1bHQsIGlmIHRpbWUgaXMgbm90IGdpdmVuLCBpcyAwMjowMDowMC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CmluZGV4IDU3YTQ4MzQuLjNiNzcyNzYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdApAQCAtMTAwLDggKzEwMCw4IEBACiAgICBjYW4gYmUgY29udHJvbGxlZCBieSBwYXNzaW5nIGEgbmFtZXNwYWNlIHRvICpnbG9iYWxzKi4KIAogICAgVG8gbWVhc3VyZSB0aGUgZXhlY3V0aW9uIHRpbWUgb2YgdGhlIGZpcnN0IHN0YXRlbWVudCwgdXNlIHRoZSA6bWV0aDpgLnRpbWVpdGAKLSAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgbWV0aG9kIGlzIGEgY29udmVuaWVuY2UgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAKLSAgIG11bHRpcGxlIHRpbWVzIGFuZCByZXR1cm4gYSBsaXN0IG9mIHJlc3VsdHMuCisgICBtZXRob2QuICBUaGUgOm1ldGg6YC5yZXBlYXRgIGFuZCA6bWV0aDpgLmF1dG9yYW5nZWAgbWV0aG9kcyBhcmUgY29udmVuaWVuY2UKKyAgIG1ldGhvZHMgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAgbXVsdGlwbGUgdGltZXMuCiAKICAgIFRoZSBleGVjdXRpb24gdGltZSBvZiAqc2V0dXAqIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIG92ZXJhbGwgdGltZWQgZXhlY3V0aW9uIHJ1bi4KIApAQCAtMTM0LDYgKzEzNCwyMyBAQAogICAgICAgICAgICAgdGltZWl0LlRpbWVyKCdmb3IgaSBpbiByYW5nZSgxMCk6IG9jdChpKScsICdnYy5lbmFibGUoKScpLnRpbWVpdCgpCiAKIAorICAgIC4uIG1ldGhvZDo6IFRpbWVyLmF1dG9yYW5nZShjYWxsYmFjaz1Ob25lKQorCisgICAgICAgQXV0b21hdGljYWxseSBkZXRlcm1pbmUgaG93IG1hbnkgdGltZXMgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAuCisKKyAgICAgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjYWxscyA6bWV0aDpgLnRpbWVpdGAgcmVwZWF0ZWRseQorICAgICAgIHNvIHRoYXQgdGhlIHRvdGFsIHRpbWUgPj0gMC4yIHNlY29uZCwgcmV0dXJuaW5nIHRoZSBldmVudHVhbAorICAgICAgIChudW1iZXIgb2YgbG9vcHMsIHRpbWUgdGFrZW4gZm9yIHRoYXQgbnVtYmVyIG9mIGxvb3BzKS4gSXQgY2FsbHMKKyAgICAgICA6bWV0aDpgLnRpbWVpdGAgd2l0aCAqbnVtYmVyKiBzZXQgdG8gc3VjY2Vzc2l2ZSBwb3dlcnMgb2YgdGVuICgxMCwKKyAgICAgICAxMDAsIDEwMDAsIC4uLikgdXAgdG8gYSBtYXhpbXVtIG9mIG9uZSBiaWxsaW9uLCB1bnRpbCB0aGUgdGltZSB0YWtlbgorICAgICAgIGlzIGF0IGxlYXN0IDAuMiBzZWNvbmQsIG9yIHRoZSBtYXhpbXVtIGlzIHJlYWNoZWQuCisKKyAgICAgICAgSWYgKmNhbGxiYWNrKiBpcyBnaXZlbiBhbmQgaXMgbm90IGBgTm9uZWBgLCBpdCB3aWxsIGJlIGNhbGxlZCBhZnRlcgorICAgICAgICBlYWNoIHRyaWFsIHdpdGggdHdvIGFyZ3VtZW50czogYGBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogICAgLi4gbWV0aG9kOjogVGltZXIucmVwZWF0KHJlcGVhdD0zLCBudW1iZXI9MTAwMDAwMCkKIAogICAgICAgQ2FsbCA6bWV0aDpgLnRpbWVpdGAgYSBmZXcgdGltZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QgYi9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKaW5kZXggNDFmMjBkZC4uMTFlZDc1NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdApAQCAtMTAsNiArMTAsMTAgQEAKIAogLi4gaW5kZXg6OiBzaW5nbGU6IFRpeAogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBUaGlzIFRrIGV4dGVuc2lvbiBpcyB1bm1haW50YWluZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBuZXcgY29kZS4gIFVzZQorICAgOm1vZDpgdGtpbnRlci50dGtgIGluc3RlYWQuCisKIC0tLS0tLS0tLS0tLS0tCiAKIFRoZSA6bW9kOmB0a2ludGVyLnRpeGAgKFRrIEludGVyZmFjZSBFeHRlbnNpb24pIG1vZHVsZSBwcm92aWRlcyBhbiBhZGRpdGlvbmFsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0IGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAppbmRleCAzYzFkOWJiLi4wNjZlZTk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKQEAgLTI5MSw2ICsyOTEsMjAgQEAKICAgICAgIG9mIHR1cGxlcy4gRWFjaCB0dXBsZSBzaG91bGQgYmUgYSA0LXR1cGxlIHdpdGggZmlsZW5hbWUsIGxpbmVubywgbmFtZSwKICAgICAgIGxpbmUgYXMgdGhlIGVsZW1lbnRzLgogCisgICAuLiBtZXRob2Q6OiBmb3JtYXQoKQorCisgICAgICBSZXR1cm5zIGEgbGlzdCBvZiBzdHJpbmdzIHJlYWR5IGZvciBwcmludGluZy4gIEVhY2ggc3RyaW5nIGluIHRoZQorICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCisgICAgICBFYWNoIHN0cmluZyBlbmRzIGluIGEgbmV3bGluZTsgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcyB3aXRoIHNvdXJjZSB0ZXh0IGxpbmVzLgorCisgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgIHJlcGV0aXRpb25zIGFyZSBzaG93biwgZm9sbG93ZWQgYnkgYSBzdW1tYXJ5IGxpbmUgc3RhdGluZyB0aGUgZXhhY3QKKyAgICAgIG51bWJlciBvZiBmdXJ0aGVyIHJlcGV0aXRpb25zLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgZnJhbWVzIGFyZSBub3cgYWJicmV2aWF0ZWQuCisKIAogOmNsYXNzOmBGcmFtZVN1bW1hcnlgIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKaW5kZXggM2EwYjFlMC4uZjU2ZjI3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdApAQCAtMzU5LDEwICszNTksMzIgQEAKICAgIFNlZSBhbHNvIHRoZSA6ZnVuYzpgZ2V0X29iamVjdF90cmFjZWJhY2tgIGZ1bmN0aW9uLgogCiAKK0RvbWFpbkZpbHRlcgorXl5eXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogRG9tYWluRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZG9tYWluOiBpbnQpCisKKyAgIEZpbHRlciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBieSB0aGVpciBhZGRyZXNzIHNwYWNlIChkb21haW4pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCisKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgbWF0Y2ggbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYEZhbHNlYGAgKGV4Y2x1ZGUpLCBtYXRjaCBtZW1vcnkgYmxvY2tzIG5vdCBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBkb21haW4KKworICAgICAgQWRkcmVzcyBzcGFjZSBvZiBhIG1lbW9yeSBibG9jayAoYGBpbnRgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KKworCiBGaWx0ZXIKIF5eXl5eXgogCi0uLiBjbGFzczo6IEZpbHRlcihpbmNsdXNpdmU6IGJvb2wsIGZpbGVuYW1lX3BhdHRlcm46IHN0ciwgbGluZW5vOiBpbnQ9Tm9uZSwgYWxsX2ZyYW1lczogYm9vbD1GYWxzZSkKKy4uIGNsYXNzOjogRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZmlsZW5hbWVfcGF0dGVybjogc3RyLCBsaW5lbm86IGludD1Ob25lLCBhbGxfZnJhbWVzOiBib29sPUZhbHNlLCBkb21haW46IGludD1Ob25lKQogCiAgICBGaWx0ZXIgb24gdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MuCiAKQEAgLTM4Miw5ICs0MDQsMTcgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgYGAnLnB5bydgYCBmaWxlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVwbGFjZWQgd2l0aCBgYCcucHknYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgOmF0dHI6YGRvbWFpbmAgYXR0cmlidXRlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRvbWFpbgorCisgICAgICBBZGRyZXNzIHNwYWNlIG9mIGEgbWVtb3J5IGJsb2NrIChgYGludGBgIG9yIGBgTm9uZWBgKS4KKwogICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCiAKLSAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgb25seSB0cmFjZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IG1hdGNoIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCiAgICAgICBpbiBhIGZpbGUgd2l0aCBhIG5hbWUgbWF0Y2hpbmcgOmF0dHI6YGZpbGVuYW1lX3BhdHRlcm5gIGF0IGxpbmUgbnVtYmVyCiAgICAgICA6YXR0cjpgbGluZW5vYC4KIApAQCAtMzk5LDcgKzQyOSw3IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IGZpbGVuYW1lX3BhdHRlcm4KIAotICAgICAgRmlsZW5hbWUgcGF0dGVybiBvZiB0aGUgZmlsdGVyIChgYHN0cmBgKS4KKyAgICAgIEZpbGVuYW1lIHBhdHRlcm4gb2YgdGhlIGZpbHRlciAoYGBzdHJgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KIAogICAgLi4gYXR0cmlidXRlOjogYWxsX2ZyYW1lcwogCkBAIC00NjIsMTQgKzQ5MiwxNyBAQAogICAgLi4gbWV0aG9kOjogZmlsdGVyX3RyYWNlcyhmaWx0ZXJzKQogCiAgICAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGZpbHRlcmVkIDphdHRyOmB0cmFjZXNgCi0gICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqCi0gICAgICBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YKLSAgICAgIHRoZSB0cmFjZXMuCisgICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YERvbWFpbkZpbHRlcmAgYW5kCisgICAgICA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhIG5ldworICAgICAgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KIAogICAgICAgQWxsIGluY2x1c2l2ZSBmaWx0ZXJzIGFyZSBhcHBsaWVkIGF0IG9uY2UsIGEgdHJhY2UgaXMgaWdub3JlZCBpZiBubwogICAgICAgaW5jbHVzaXZlIGZpbHRlcnMgbWF0Y2ggaXQuIEEgdHJhY2UgaXMgaWdub3JlZCBpZiBhdCBsZWFzdCBvbmUgZXhjbHVzaXZlCiAgICAgICBmaWx0ZXIgbWF0Y2hlcyBpdC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIDpjbGFzczpgRG9tYWluRmlsdGVyYCBpbnN0YW5jZXMgYXJlIG5vdyBhbHNvIGFjY2VwdGVkIGluICpmaWx0ZXJzKi4KKwogCiAgICAuLiBjbGFzc21ldGhvZDo6IGxvYWQoZmlsZW5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAppbmRleCAxMThiYzRjLi44OThiOTVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CkBAIC01NSw2ICs1NSwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBgYG5hbWVzcGFjZWBgIGVsZW1lbnQgb2YgdGhlIHJldHVybmVkCisgICAgICB0dXBsZSBoYXMgY2hhbmdlZC4gIE5vdyBhbiBpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nIGlzCisgICAgICB1c2VkIHdoZW4gdGhlIG1ldGFjbGFzcyBkb2VzIG5vdCBoYXZlIGEgYGBfX3ByZXBhcmVfX2BgIG1ldGhvZCwKKwogLi4gc2VlYWxzbzo6CiAKICAgIDpyZWY6YG1ldGFjbGFzc2VzYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKaW5kZXggOWY3ZmExYS4uYmJmNWRiNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBpbmcucnN0CkBAIC0xMCw4ICsxMCw4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAuICBUaGUgbW9zdAotZnVuZGFtZW50YWwgc3VwcG9ydCBjb25zaXN0cyBvZiB0aGUgdHlwZSA6ZGF0YTpgQW55YCwgOmRhdGE6YFVuaW9uYCwKK1RoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAgYW5kIDpwZXA6YDUyNmAuCitUaGUgbW9zdCBmdW5kYW1lbnRhbCBzdXBwb3J0IGNvbnNpc3RzIG9mIHRoZSB0eXBlIDpkYXRhOmBBbnlgLCA6ZGF0YTpgVW5pb25gLAogOmRhdGE6YFR1cGxlYCwgOmRhdGE6YENhbGxhYmxlYCwgOmNsYXNzOmBUeXBlVmFyYCwgYW5kCiA6Y2xhc3M6YEdlbmVyaWNgLiAgRm9yIGZ1bGwgc3BlY2lmaWNhdGlvbiBwbGVhc2Ugc2VlIDpwZXA6YDQ4NGAuICBGb3IKIGEgc2ltcGxpZmllZCBpbnRyb2R1Y3Rpb24gdG8gdHlwZSBoaW50cyBzZWUgOnBlcDpgNDgzYC4KQEAgLTUwNyw3ICs1MDcsMTMgQEAKIAogICAgQW4gYWxpYXMgdG8gOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2l6ZWRgCiAKLS4uIGNsYXNzOjogQWJzdHJhY3RTZXQoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisuLiBjbGFzczo6IENvbGxlY3Rpb24oU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkNvbGxlY3Rpb25gCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBDb2xsZWN0aW9uW1RfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YC4KIApAQCAtNTE1LDcgKzUyMSw3IEBACiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2V0YC4KIAotLi4gY2xhc3M6OiBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZVtLVF0sIENvbnRhaW5lcltLVF0sIEdlbmVyaWNbVlRfY29dKQorLi4gY2xhc3M6OiBNYXBwaW5nKFNpemVkLCBDb2xsZWN0aW9uW0tUXSwgR2VuZXJpY1tWVF9jb10pCiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nYC4KIApAQCAtNTIzLDcgKzUyOSw3IEBACiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AuCiAKLS4uIGNsYXNzOjogU2VxdWVuY2UoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisuLiBjbGFzczo6IFNlcXVlbmNlKFJldmVyc2libGVbVF9jb10sIENvbGxlY3Rpb25bVF9jb10pCiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWAuCiAKQEAgLTU5MCw2ICs1OTYsMTIgQEAKIAogICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Bc3luY0l0ZXJhdG9yYC4KIAorLi4gY2xhc3M6OiBDb250ZXh0TWFuYWdlcihHZW5lcmljW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IERpY3QoZGljdCwgTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSkKIAogICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBkaWN0YC4KQEAgLTcwMiw3ICs3MTQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldF90eXBlX2hpbnRzKG9iaikKIAotICAgUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKyAgIFJldHVybiB0eXBlIGhpbnRzIGZvciBhIGNsYXNzLCBtb2R1bGUsIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QuCiAKICAgIFRoaXMgaXMgb2Z0ZW4gdGhlIHNhbWUgYXMgYGBvYmouX19hbm5vdGF0aW9uc19fYGAsIGJ1dCBpdCBoYW5kbGVzCiAgICBmb3J3YXJkIHJlZmVyZW5jZXMgZW5jb2RlZCBhcyBzdHJpbmcgbGl0ZXJhbHMsIGFuZCBpZiBuZWNlc3NhcnkKQEAgLTg0NSw4ICs4NTcsOCBAQAogICAgYW5kIHNob3VsZCBub3QgYmUgc2V0IG9uIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzLiBVc2FnZTo6CiAKICAgICAgIGNsYXNzIFN0YXJzaGlwOgotICAgICAgICAgIHN0YXRzID0ge30gICMgdHlwZTogQ2xhc3NWYXJbRGljdFtzdHIsIGludF1dICMgY2xhc3MgdmFyaWFibGUKLSAgICAgICAgICBkYW1hZ2UgPSAxMCAjIHR5cGU6IGludCAgICAgICAgICAgICAgICAgICAgICAjIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgICAgc3RhdHM6IENsYXNzVmFyW0RpY3Rbc3RyLCBpbnRdXSA9IHt9ICMgY2xhc3MgdmFyaWFibGUKKyAgICAgICAgICBkYW1hZ2U6IGludCA9IDEwICAgICAgICAgICAgICAgICAgICAgIyBpbnN0YW5jZSB2YXJpYWJsZQogCiAgICA6ZGF0YTpgQ2xhc3NWYXJgIGFjY2VwdHMgb25seSB0eXBlcyBhbmQgY2Fubm90IGJlIGZ1cnRoZXIgc3Vic2NyaWJlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5kb2MucnN0IGIvRG9jL2xpYnJhcnkvdW5kb2MucnN0CmluZGV4IDIwODMwZTIuLjI0NDQwODAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuZG9jLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmRvYy5yc3QKQEAgLTIwLDcgKzIwLDcgQEAKIGRvY3VtZW50ZWQgYmV5b25kIHRoaXMgbWVudGlvbi4gIFRoZXJlJ3MgbGl0dGxlIG5lZWQgdG8gZG9jdW1lbnQgdGhlc2UuCiAKIDptb2Q6YG50cGF0aGAKLSAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBXaW4zMiwgV2luNjQsIGFuZCBXaW5DRSBwbGF0Zm9ybXMuCisgICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gV2luMzIgYW5kIFdpbjY0IHBsYXRmb3Jtcy4KIAogOm1vZDpgcG9zaXhwYXRoYAogICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFBPU0lYLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0IGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CmluZGV4IDZjZDgxMzIuLjY0MzE4MDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKQEAgLTE3LDggKzE3LDggQEAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSB3aGljaAogZGVmaW5lcyBjaGFyYWN0ZXIgcHJvcGVydGllcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVycy4gVGhlIGRhdGEgY29udGFpbmVkIGluCi10aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA4LjAuMAotPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZD5gXy4KK3RoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDkuMC4wCis8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOS4wLjAvdWNkPmBfLgogCiBUaGUgbW9kdWxlIHVzZXMgdGhlIHNhbWUgbmFtZXMgYW5kIHN5bWJvbHMgYXMgZGVmaW5lZCBieSBVbmljb2RlCiBTdGFuZGFyZCBBbm5leCAjNDQsIGAiVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UiCkBAIC0xNjgsNiArMTY4LDYgQEAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOS4wLjAvdWNkL05hbWVBbGlhc2VzLnR4dAogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKaW5kZXggZWYzMGMwMS4uM2NjMjJmZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKQEAgLTI2Miw2ICsyNjIsMzQgQEAKICAgICB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGl0IGlzIGNyZWF0ZWQuIFNlZSB0aGUKICAgICA6bWV0aDpgY29uZmlndXJlX21vY2tgIG1ldGhvZCBmb3IgZGV0YWlscy4KIAorICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgYXQgbGVhc3Qgb25jZS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZC5hc3NlcnRfY2FsbGVkKCkKKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfb25jZSgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBleGFjdGx5IG9uY2UuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZC5hc3NlcnRfY2FsbGVkX29uY2UoKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgJ21ldGhvZCcgdG8gaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLiBDYWxsZWQgMiB0aW1lcy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKIApAQCAtMzM5LDcgKzM2Nyw3IEBACiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKLSAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKKyAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCosIHJldHVybl92YWx1ZT1GYWxzZSwgc2lkZV9lZmZlY3Q9RmFsc2UpCiAKICAgICAgICAgVGhlIHJlc2V0X21vY2sgbWV0aG9kIHJlc2V0cyBhbGwgdGhlIGNhbGwgYXR0cmlidXRlcyBvbiBhIG1vY2sgb2JqZWN0OgogCkBAIC0zNTEsMTIgKzM3OSwyMCBAQAogICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCiAgICAgICAgICAgICBGYWxzZQogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICAgIEFkZGVkIHR3byBrZXl3b3JkIG9ubHkgYXJndW1lbnQgdG8gdGhlIHJlc2V0X21vY2sgZnVuY3Rpb24uCisKICAgICAgICAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZXJlIHlvdSB3YW50IHRvIG1ha2UgYSBzZXJpZXMgb2YgYXNzZXJ0aW9ucyB0aGF0CiAgICAgICAgIHJldXNlIHRoZSBzYW1lIG9iamVjdC4gTm90ZSB0aGF0IDptZXRoOmByZXNldF9tb2NrYCAqZG9lc24ndCogY2xlYXIgdGhlCiAgICAgICAgIHJldHVybiB2YWx1ZSwgOmF0dHI6YHNpZGVfZWZmZWN0YCBvciBhbnkgY2hpbGQgYXR0cmlidXRlcyB5b3UgaGF2ZQotICAgICAgICBzZXQgdXNpbmcgbm9ybWFsIGFzc2lnbm1lbnQuIENoaWxkIG1vY2tzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG1vY2sKKyAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50IGJ5IGRlZmF1bHQuIEluIGNhc2UgeW91IHdhbnQgdG8gcmVzZXQKKyAgICAgICAgKnJldHVybl92YWx1ZSogb3IgOmF0dHI6YHNpZGVfZWZmZWN0YCwgdGhlbiBwYXNzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIHBhcmFtZXRlciBhcyBgYFRydWVgYC4gQ2hpbGQgbW9ja3MgYW5kIHRoZSByZXR1cm4gdmFsdWUgbW9jawogICAgICAgICAoaWYgYW55KSBhcmUgcmVzZXQgYXMgd2VsbC4KIAorICAgICAgICAuLiBub3RlOjogKnJldHVybl92YWx1ZSosIGFuZCA6YXR0cjpgc2lkZV9lZmZlY3RgIGFyZSBrZXl3b3JkIG9ubHkKKyAgICAgICAgICAgICAgICAgIGFyZ3VtZW50LgorCiAKICAgICAuLiBtZXRob2Q6OiBtb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKaW5kZXggYjliMzM5Yi4uMWIwZDdhNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdApAQCAtMTM5MSw5ICsxMzkxLDkgQEAKIAogICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIDptZXRoOmB0ZWFyRG93bmAgdG8gY2xlYW51cCByZXNvdXJjZXMKICAgICAgIHVzZWQgZHVyaW5nIHRoZSB0ZXN0LiBGdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgaW4gcmV2ZXJzZSBvcmRlciB0byB0aGUKLSAgICAgIG9yZGVyIHRoZXkgYXJlIGFkZGVkIChMSUZPKS4gVGhleSBhcmUgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cyBhbmQKLSAgICAgIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBpbnRvIDptZXRoOmBhZGRDbGVhbnVwYCB3aGVuIHRoZXkgYXJlCi0gICAgICBhZGRlZC4KKyAgICAgIG9yZGVyIHRoZXkgYXJlIGFkZGVkICg6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWApLiAgVGhleQorICAgICAgYXJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMgYW5kIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBpbnRvCisgICAgICA6bWV0aDpgYWRkQ2xlYW51cGAgd2hlbiB0aGV5IGFyZSBhZGRlZC4KIAogICAgICAgSWYgOm1ldGg6YHNldFVwYCBmYWlscywgbWVhbmluZyB0aGF0IDptZXRoOmB0ZWFyRG93bmAgaXMgbm90IGNhbGxlZCwKICAgICAgIHRoZW4gYW55IGNsZWFudXAgZnVuY3Rpb25zIGFkZGVkIHdpbGwgc3RpbGwgYmUgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKaW5kZXggNDk5YjIxMS4uNjc2MzIxYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CkBAIC0xMTQsOCArMTE0LDkgQEAKICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgaWYgcHJlc2VudCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLSAgIFNlZSBzZWN0aW9uIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQKLSAgIG9iamVjdC4KKyAgIFJlYWRpbmcgdGhlIDphdHRyOmBwb3J0YCBhdHRyaWJ1dGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlmCisgICBhbiBpbnZhbGlkIHBvcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwuICBTZWUgc2VjdGlvbgorICAgOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdCBvYmplY3QuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBJUHY2IFVSTCBwYXJzaW5nIGNhcGFiaWxpdGllcy4KQEAgLTEyNSw2ICsxMjYsMTAgQEAKICAgICAgIGZhbHNlKSwgaW4gYWNjb3JkYW5jZSB3aXRoIDpyZmM6YDM5ODZgLiAgUHJldmlvdXNseSwgYSB3aGl0ZWxpc3Qgb2YKICAgICAgIHNjaGVtZXMgdGhhdCBzdXBwb3J0IGZyYWdtZW50cyBleGlzdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT3V0LW9mLXJhbmdlIHBvcnQgbnVtYmVycyBub3cgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGluc3RlYWQgb2YKKyAgICAgIHJldHVybmluZyA6Y29uc3Q6YE5vbmVgLgorCiAKIC4uIGZ1bmN0aW9uOjogcGFyc2VfcXMocXMsIGtlZXBfYmxhbmtfdmFsdWVzPUZhbHNlLCBzdHJpY3RfcGFyc2luZz1GYWxzZSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdyZXBsYWNlJykKIApAQCAtMjI3LDggKzIzMiwxMyBAQAogICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgfCBpZiBwcmVzZW50ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLSAgIFNlZSBzZWN0aW9uIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQKLSAgIG9iamVjdC4KKyAgIFJlYWRpbmcgdGhlIDphdHRyOmBwb3J0YCBhdHRyaWJ1dGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlmCisgICBhbiBpbnZhbGlkIHBvcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwuICBTZWUgc2VjdGlvbgorICAgOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdCBvYmplY3QuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPdXQtb2YtcmFuZ2UgcG9ydCBudW1iZXJzIG5vdyByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwgaW5zdGVhZCBvZgorICAgICAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuCiAKIAogLi4gZnVuY3Rpb246OiB1cmx1bnNwbGl0KHBhcnRzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CmluZGV4IDQxYjVlY2UuLmM5OTBmYjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKQEAgLTMwLDE4ICszMCw5IEBACiAgICBPcGVuIHRoZSBVUkwgKnVybCosIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYQogICAgOmNsYXNzOmBSZXF1ZXN0YCBvYmplY3QuCiAKLSAgICpkYXRhKiBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlCi0gICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICpkYXRhKiBtYXkgYWxzbyBiZSBhbgotICAgaXRlcmFibGUgb2JqZWN0IGFuZCBpbiB0aGF0IGNhc2UgQ29udGVudC1MZW5ndGggdmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQgaW4KLSAgIHRoZSBoZWFkZXJzLiBDdXJyZW50bHkgSFRUUCByZXF1ZXN0cyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSo7IHRoZQotICAgSFRUUCByZXF1ZXN0IHdpbGwgYmUgYSBQT1NUIGluc3RlYWQgb2YgYSBHRVQgd2hlbiB0aGUgKmRhdGEqIHBhcmFtZXRlciBpcwotICAgcHJvdmlkZWQuCi0KLSAgICpkYXRhKiBzaG91bGQgYmUgYSBidWZmZXIgaW4gdGhlIHN0YW5kYXJkCi0gICA6bWltZXR5cGU6YGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgZm9ybWF0LiAgVGhlCi0gICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gdGFrZXMgYSBtYXBwaW5nIG9yIHNlcXVlbmNlIG9mCi0gICAyLXR1cGxlcyBhbmQgcmV0dXJucyBhbiBBU0NJSSB0ZXh0IHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkCi0gICBiZSBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgorICAgKmRhdGEqIG11c3QgYmUgYW4gb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlCisgICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBTZWUgOmNsYXNzOmBSZXF1ZXN0YAorICAgZm9yIGRldGFpbHMuCiAKICAgIHVybGxpYi5yZXF1ZXN0IG1vZHVsZSB1c2VzIEhUVFAvMS4xIGFuZCBpbmNsdWRlcyBgYENvbm5lY3Rpb246Y2xvc2VgYCBoZWFkZXIKICAgIGluIGl0cyBIVFRQIHJlcXVlc3RzLgpAQCAtMTIwLDYgKzExMSwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMwogICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmNhZmlsZSosICpjYXBhdGgqIGFuZCAqY2FkZWZhdWx0KiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgogCiAuLiBmdW5jdGlvbjo6IGluc3RhbGxfb3BlbmVyKG9wZW5lcikKIApAQCAtMTkyLDE0ICsxODksMjEgQEAKIAogICAgKnVybCogc2hvdWxkIGJlIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCBVUkwuCiAKLSAgICpkYXRhKiBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIHNlbmQgdG8gdGhlCi0gICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBDdXJyZW50bHkgSFRUUCByZXF1ZXN0cyBhcmUKLSAgIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqOyB0aGUgSFRUUCByZXF1ZXN0IHdpbGwgYmUgYSBQT1NUIGluc3RlYWQgb2YgYQotICAgR0VUIHdoZW4gdGhlICpkYXRhKiBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQuICAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZQotICAgc3RhbmRhcmQgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4KLSAgIFRoZSA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gdGFrZXMgYSBtYXBwaW5nIG9yIHNlcXVlbmNlIG9mCi0gICAyLXR1cGxlcyBhbmQgcmV0dXJucyBhbiBBU0NJSSBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZCBiZQotICAgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KKyAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBzZW5kIHRvIHRoZQorICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgQ3VycmVudGx5IEhUVFAKKyAgIHJlcXVlc3RzIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKi4gIFRoZSBzdXBwb3J0ZWQgb2JqZWN0CisgICB0eXBlcyBpbmNsdWRlIGJ5dGVzLCBmaWxlLWxpa2Ugb2JqZWN0cywgYW5kIGl0ZXJhYmxlcy4gIElmIG5vCisgICBgYENvbnRlbnQtTGVuZ3RoYGAgbm9yIGBgVHJhbnNmZXItRW5jb2RpbmdgYCBoZWFkZXIgZmllbGQKKyAgIGhhcyBiZWVuIHByb3ZpZGVkLCA6Y2xhc3M6YEhUVFBIYW5kbGVyYCB3aWxsIHNldCB0aGVzZSBoZWFkZXJzIGFjY29yZGluZworICAgdG8gdGhlIHR5cGUgb2YgKmRhdGEqLiAgYGBDb250ZW50LUxlbmd0aGBgIHdpbGwgYmUgdXNlZCB0byBzZW5kCisgICBieXRlcyBvYmplY3RzLCB3aGlsZSBgYFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkYGAgYXMgc3BlY2lmaWVkIGluCisgICA6cmZjOmA3MjMwYCwgU2VjdGlvbiAzLjMuMSB3aWxsIGJlIHVzZWQgdG8gc2VuZCBmaWxlcyBhbmQgb3RoZXIgaXRlcmFibGVzLgorCisgICBGb3IgYW4gSFRUUCBQT1NUIHJlcXVlc3QgbWV0aG9kLCAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZQorICAgc3RhbmRhcmQgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4gIFRoZQorICAgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZQorICAgb2YgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQKKyAgIGJlIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCiAKICAgICpoZWFkZXJzKiBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LCBhbmQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmCiAgICA6bWV0aDpgYWRkX2hlYWRlcmAgd2FzIGNhbGxlZCB3aXRoIGVhY2gga2V5IGFuZCB2YWx1ZSBhcyBhcmd1bWVudHMuCkBAIC0yMTEsOCArMjE1LDEwIEBACiAgICA6bW9kOmB1cmxsaWJgJ3MgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZyBpcwogICAgYGAiUHl0aG9uLXVybGxpYi8yLjYiYGAgKG9uIFB5dGhvbiAyLjYpLgogCi0gICBBbiBleGFtcGxlIG9mIHVzaW5nIGBgQ29udGVudC1UeXBlYGAgaGVhZGVyIHdpdGggKmRhdGEqIGFyZ3VtZW50IHdvdWxkIGJlCi0gICBzZW5kaW5nIGEgZGljdGlvbmFyeSBsaWtlIGBgeyJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn1gYC4KKyAgIEFuIGFwcHJvcHJpYXRlIGBgQ29udGVudC1UeXBlYGAgaGVhZGVyIHNob3VsZCBiZSBpbmNsdWRlZCBpZiB0aGUgKmRhdGEqCisgICBhcmd1bWVudCBpcyBwcmVzZW50LiAgSWYgdGhpcyBoZWFkZXIgaGFzIG5vdCBiZWVuIHByb3ZpZGVkIGFuZCAqZGF0YSoKKyAgIGlzIG5vdCBOb25lLCBgYENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYGAgd2lsbAorICAgYmUgYWRkZWQgYXMgYSBkZWZhdWx0LgogCiAgICBUaGUgZmluYWwgdHdvIGFyZ3VtZW50cyBhcmUgb25seSBvZiBpbnRlcmVzdCBmb3IgY29ycmVjdCBoYW5kbGluZwogICAgb2YgdGhpcmQtcGFydHkgSFRUUCBjb29raWVzOgpAQCAtMjM1LDE1ICsyNDEsMjggQEAKICAgICptZXRob2QqIHNob3VsZCBiZSBhIHN0cmluZyB0aGF0IGluZGljYXRlcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0aGF0CiAgICB3aWxsIGJlIHVzZWQgKGUuZy4gYGAnSEVBRCdgYCkuICBJZiBwcm92aWRlZCwgaXRzIHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUKICAgIDphdHRyOmB+UmVxdWVzdC5tZXRob2RgIGF0dHJpYnV0ZSBhbmQgaXMgdXNlZCBieSA6bWV0aDpgZ2V0X21ldGhvZCgpYC4KLSAgIFN1YmNsYXNzZXMgbWF5IGluZGljYXRlIGEgZGVmYXVsdCBtZXRob2QgYnkgc2V0dGluZyB0aGUKKyAgIFRoZSBkZWZhdWx0IGlzIGBgJ0dFVCdgYCBpZiAqZGF0YSogaXMgYGBOb25lYGAgb3IgYGAnUE9TVCdgYCBvdGhlcndpc2UuCisgICBTdWJjbGFzc2VzIG1heSBpbmRpY2F0ZSBhIGRpZmZlcmVudCBkZWZhdWx0IG1ldGhvZCBieSBzZXR0aW5nIHRoZQogICAgOmF0dHI6YH5SZXF1ZXN0Lm1ldGhvZGAgYXR0cmlidXRlIGluIHRoZSBjbGFzcyBpdHNlbGYuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgVGhlIHJlcXVlc3Qgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCBpZiB0aGUgZGF0YSBvYmplY3QgaXMgdW5hYmxlCisgICAgICB0byBkZWxpdmVyIGl0cyBjb250ZW50IG1vcmUgdGhhbiBvbmNlIChlLmcuIGEgZmlsZSBvciBhbiBpdGVyYWJsZQorICAgICAgdGhhdCBjYW4gcHJvZHVjZSB0aGUgY29udGVudCBvbmx5IG9uY2UpIGFuZCB0aGUgcmVxdWVzdCBpcyByZXRyaWVkCisgICAgICBmb3IgSFRUUCByZWRpcmVjdHMgb3IgYXV0aGVudGljYXRpb24uICBUaGUgKmRhdGEqIGlzIHNlbnQgdG8gdGhlCisgICAgICBIVFRQIHNlcnZlciByaWdodCBhd2F5IGFmdGVyIHRoZSBoZWFkZXJzLiAgVGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IKKyAgICAgIGEgMTAwLWNvbnRpbnVlIGV4cGVjdGF0aW9uIGluIHRoZSBsaWJyYXJ5LgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBhcmd1bWVudCBpcyBhZGRlZCB0byB0aGUgUmVxdWVzdCBjbGFzcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIERlZmF1bHQgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBtYXkgYmUgaW5kaWNhdGVkIGF0IHRoZSBjbGFzcyBsZXZlbC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIERvIG5vdCByYWlzZSBhbiBlcnJvciBpZiB0aGUgYGBDb250ZW50LUxlbmd0aGBgIGhhcyBub3QgYmVlbgorICAgICAgcHJvdmlkZWQgYW5kICpkYXRhKiBpcyBuZWl0aGVyIGBgTm9uZWBgIG5vciBhIGJ5dGVzIG9iamVjdC4KKyAgICAgIEZhbGwgYmFjayB0byB1c2UgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBpbnN0ZWFkLgogCiAuLiBjbGFzczo6IE9wZW5lckRpcmVjdG9yKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKaW5kZXggYmE3MDFjMy4uN2QzMTkzMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CkBAIC01NywxNSArNTcsNDEgQEAKICAgICAgIFNldHMgdGhlIHRpbWUgdGhlIGBgcm9ib3RzLnR4dGBgIGZpbGUgd2FzIGxhc3QgZmV0Y2hlZCB0byB0aGUgY3VycmVudAogICAgICAgdGltZS4KIAorICAgLi4gbWV0aG9kOjogY3Jhd2xfZGVsYXkodXNlcmFnZW50KQogCi1UaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGJhc2ljIHVzZSBvZiB0aGUgUm9ib3RGaWxlUGFyc2VyIGNsYXNzLgorICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGBgQ3Jhd2wtZGVsYXlgYCBwYXJhbWV0ZXIgZnJvbSBgYHJvYm90cy50eHRgYAorICAgICAgZm9yIHRoZSAqdXNlcmFnZW50KiBpbiBxdWVzdGlvbi4gIElmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyIG9yIGl0CisgICAgICBkb2Vzbid0IGFwcGx5IHRvIHRoZSAqdXNlcmFnZW50KiBzcGVjaWZpZWQgb3IgdGhlIGBgcm9ib3RzLnR4dGBgIGVudHJ5CisgICAgICBmb3IgdGhpcyBwYXJhbWV0ZXIgaGFzIGludmFsaWQgc3ludGF4LCByZXR1cm4gYGBOb25lYGAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBtZXRob2Q6OiByZXF1ZXN0X3JhdGUodXNlcmFnZW50KQorCisgICAgICBSZXR1cm5zIHRoZSBjb250ZW50cyBvZiB0aGUgYGBSZXF1ZXN0LXJhdGVgYCBwYXJhbWV0ZXIgZnJvbQorICAgICAgYGByb2JvdHMudHh0YGAgaW4gdGhlIGZvcm0gb2YgYSA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgCisgICAgICBgYChyZXF1ZXN0cywgc2Vjb25kcylgYC4gIElmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyIG9yIGl0IGRvZXNuJ3QKKyAgICAgIGFwcGx5IHRvIHRoZSAqdXNlcmFnZW50KiBzcGVjaWZpZWQgb3IgdGhlIGBgcm9ib3RzLnR4dGBgIGVudHJ5IGZvciB0aGlzCisgICAgICBwYXJhbWV0ZXIgaGFzIGludmFsaWQgc3ludGF4LCByZXR1cm4gYGBOb25lYGAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgYmFzaWMgdXNlIG9mIHRoZSA6Y2xhc3M6YFJvYm90RmlsZVBhcnNlcmAKK2NsYXNzOjoKIAogICAgPj4+IGltcG9ydCB1cmxsaWIucm9ib3RwYXJzZXIKICAgID4+PiBycCA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoKQogICAgPj4+IHJwLnNldF91cmwoImh0dHA6Ly93d3cubXVzaS1jYWwuY29tL3JvYm90cy50eHQiKQogICAgPj4+IHJwLnJlYWQoKQorICAgPj4+IHJyYXRlID0gcnAucmVxdWVzdF9yYXRlKCIqIikKKyAgID4+PiBycmF0ZS5yZXF1ZXN0cworICAgMworICAgPj4+IHJyYXRlLnNlY29uZHMKKyAgIDIwCisgICA+Pj4gcnAuY3Jhd2xfZGVsYXkoIioiKQorICAgNgogICAgPj4+IHJwLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS9jZ2ktYmluL3NlYXJjaD9jaXR5PVNhbitGcmFuY2lzY28iKQogICAgRmFsc2UKICAgID4+PiBycC5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vIikKICAgIFRydWUKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdmVudi5yc3QgYi9Eb2MvbGlicmFyeS92ZW52LnJzdAppbmRleCA2Mjg5MmQ0Li5hODBkMmQ2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS92ZW52LnJzdAorKysgYi9Eb2MvbGlicmFyeS92ZW52LnJzdApAQCAtMzcsNDQgKzM3LDUwIEBACiAKIC4uIF92ZW52LWRlZjoKIAotLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCAoYWxzbyBjYWxsZWQgYSBgYHZlbnZgYCkgaXMgYSBQeXRob24KLSAgIGVudmlyb25tZW50IHN1Y2ggdGhhdCB0aGUgUHl0aG9uIGludGVycHJldGVyLCBsaWJyYXJpZXMgYW5kIHNjcmlwdHMKLSAgIGluc3RhbGxlZCBpbnRvIGl0IGFyZSBpc29sYXRlZCBmcm9tIHRob3NlIGluc3RhbGxlZCBpbiBvdGhlciB2aXJ0dWFsCi0gICBlbnZpcm9ubWVudHMsIGFuZCAoYnkgZGVmYXVsdCkgYW55IGxpYnJhcmllcyBpbnN0YWxsZWQgaW4gYSAic3lzdGVtIiBQeXRob24sCi0gICBpLmUuIG9uZSB3aGljaCBpcyBpbnN0YWxsZWQgYXMgcGFydCBvZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0uCisuLiBub3RlOjogQSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGEgUHl0aG9uIGVudmlyb25tZW50IHN1Y2ggdGhhdCB0aGUgUHl0aG9uCisgICBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzIGluc3RhbGxlZCBpbnRvIGl0IGFyZSBpc29sYXRlZCBmcm9tIHRob3NlCisgICBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCAoYnkgZGVmYXVsdCkgYW55IGxpYnJhcmllcworICAgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLCBpLmUuLCBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91cgorICAgb3BlcmF0aW5nIHN5c3RlbS4KIAotICAgQSB2ZW52IGlzIGEgZGlyZWN0b3J5IHRyZWUgd2hpY2ggY29udGFpbnMgUHl0aG9uIGV4ZWN1dGFibGUgZmlsZXMgYW5kCi0gICBvdGhlciBmaWxlcyB3aGljaCBpbmRpY2F0ZSB0aGF0IGl0IGlzIGEgdmVudi4KKyAgIEEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlCisgICBmaWxlcyBhbmQgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKICAgIENvbW1vbiBpbnN0YWxsYXRpb24gdG9vbHMgc3VjaCBhcyBgYFNldHVwdG9vbHNgYCBhbmQgYGBwaXBgYCB3b3JrIGFzCi0gICBleHBlY3RlZCB3aXRoIHZlbnZzIC0gaS5lLiB3aGVuIGEgdmVudiBpcyBhY3RpdmUsIHRoZXkgaW5zdGFsbCBQeXRob24KLSAgIHBhY2thZ2VzIGludG8gdGhlIHZlbnYgd2l0aG91dCBuZWVkaW5nIHRvIGJlIHRvbGQgdG8gZG8gc28gZXhwbGljaXRseS4KKyAgIGV4cGVjdGVkIHdpdGggdmlydHVhbCBlbnZpcm9ubWVudHMuIEluIG90aGVyIHdvcmRzLCB3aGVuIGEgdmlydHVhbAorICAgZW52aXJvbm1lbnQgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uIHBhY2thZ2VzIGludG8gdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCiAKLSAgIFdoZW4gYSB2ZW52IGlzIGFjdGl2ZSAoaS5lLiB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBpcyBydW5uaW5nKSwgdGhlCi0gICBhdHRyaWJ1dGVzIDphdHRyOmBzeXMucHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIGJhc2UKLSAgIGRpcmVjdG9yeSBvZiB0aGUgdmVudiwgd2hlcmVhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKLSAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24KLSAgIHdoaWNoIHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdmVudi4gSWYgYSB2ZW52IGlzIG5vdCBhY3RpdmUsIHRoZW4KLSAgIDphdHRyOmBzeXMucHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKLSAgIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkKLSAgIGFsbCBwb2ludCB0byBhIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24pLgorICAgV2hlbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZlIChpLmUuLCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIgaXMgcnVubmluZyksIHRoZSBhdHRyaWJ1dGVzIDphdHRyOmBzeXMucHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBub24tdmlydHVhbCBlbnZpcm9ubWVudCBQeXRob24KKyAgIGluc3RhbGxhdGlvbiB3aGljaCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIElmIGEgdmlydHVhbAorICAgZW52aXJvbm1lbnQgaXMgbm90IGFjdGl2ZSwgdGhlbiA6YXR0cjpgc3lzLnByZWZpeGAgaXMgdGhlIHNhbWUgYXMKKyAgIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZCA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBpcyB0aGUgc2FtZSBhcworICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCAodGhleSBhbGwgcG9pbnQgdG8gYSBub24tdmlydHVhbCBlbnZpcm9ubWVudAorICAgUHl0aG9uIGluc3RhbGxhdGlvbikuCiAKLSAgIFdoZW4gYSB2ZW52IGlzIGFjdGl2ZSwgYW55IG9wdGlvbnMgdGhhdCBjaGFuZ2UgdGhlIGluc3RhbGxhdGlvbiBwYXRoIHdpbGwgYmUKLSAgIGlnbm9yZWQgZnJvbSBhbGwgZGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gcHJldmVudCBwcm9qZWN0cyBiZWluZwotICAgaW5hZHZlcnRlbnRseSBpbnN0YWxsZWQgb3V0c2lkZSBvZiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgIFdoZW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2ZSwgYW55IG9wdGlvbnMgdGhhdCBjaGFuZ2UgdGhlCisgICBpbnN0YWxsYXRpb24gcGF0aCB3aWxsIGJlIGlnbm9yZWQgZnJvbSBhbGwgZGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8KKyAgIHByZXZlbnQgcHJvamVjdHMgYmVpbmcgaW5hZHZlcnRlbnRseSBpbnN0YWxsZWQgb3V0c2lkZSBvZiB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQuCiAKLSAgIFdoZW4gd29ya2luZyBpbiBhIGNvbW1hbmQgc2hlbGwsIHVzZXJzIGNhbiBtYWtlIGEgdmVudiBhY3RpdmUgYnkgcnVubmluZyBhbgotICAgYGBhY3RpdmF0ZWBgIHNjcmlwdCBpbiB0aGUgdmVudidzIGV4ZWN1dGFibGVzIGRpcmVjdG9yeSAodGhlIHByZWNpc2UgZmlsZW5hbWUKLSAgIGlzIHNoZWxsLWRlcGVuZGVudCksIHdoaWNoIHByZXBlbmRzIHRoZSB2ZW52J3MgZGlyZWN0b3J5IGZvciBleGVjdXRhYmxlcyB0bwotICAgdGhlIGBgUEFUSGBgIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGUgcnVubmluZyBzaGVsbC4gVGhlcmUgc2hvdWxkIGJlIG5vCi0gICBuZWVkIGluIG90aGVyIGNpcmN1bXN0YW5jZXMgdG8gYWN0aXZhdGUgYSB2ZW52IC0tIHNjcmlwdHMgaW5zdGFsbGVkIGludG8KLSAgIHZlbnZzIGhhdmUgYSBzaGViYW5nIGxpbmUgd2hpY2ggcG9pbnRzIHRvIHRoZSB2ZW52J3MgUHl0aG9uIGludGVycHJldGVyLiBUaGlzCi0gICBtZWFucyB0aGF0IHRoZSBzY3JpcHQgd2lsbCBydW4gd2l0aCB0aGF0IGludGVycHJldGVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlCi0gICBvZiBgYFBBVEhgYC4gT24gV2luZG93cywgc2hlYmFuZyBsaW5lIHByb2Nlc3NpbmcgaXMgc3VwcG9ydGVkIGlmIHlvdSBoYXZlIHRoZQotICAgUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIGluc3RhbGxlZCAodGhpcyB3YXMgYWRkZWQgdG8gUHl0aG9uIGluIDMuMyAtIHNlZQotICAgOnBlcDpgMzk3YCBmb3IgbW9yZSBkZXRhaWxzKS4gVGh1cywgZG91YmxlLWNsaWNraW5nIGFuIGluc3RhbGxlZCBzY3JpcHQgaW4KLSAgIGEgV2luZG93cyBFeHBsb3JlciB3aW5kb3cgc2hvdWxkIHJ1biB0aGUgc2NyaXB0IHdpdGggdGhlIGNvcnJlY3QgaW50ZXJwcmV0ZXIKLSAgIHdpdGhvdXQgdGhlcmUgbmVlZGluZyB0byBiZSBhbnkgcmVmZXJlbmNlIHRvIGl0cyB2ZW52IGluIGBgUEFUSGBgLgorICAgV2hlbiB3b3JraW5nIGluIGEgY29tbWFuZCBzaGVsbCwgdXNlcnMgY2FuIG1ha2UgYSB2aXJ0dWFsIGVudmlyb25tZW50IGFjdGl2ZQorICAgYnkgcnVubmluZyBhbiBgYGFjdGl2YXRlYGAgc2NyaXB0IGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgZXhlY3V0YWJsZXMKKyAgIGRpcmVjdG9yeSAodGhlIHByZWNpc2UgZmlsZW5hbWUgaXMgc2hlbGwtZGVwZW5kZW50KSwgd2hpY2ggcHJlcGVuZHMgdGhlCisgICB2aXJ0dWFsIGVudmlyb25tZW50J3MgZGlyZWN0b3J5IGZvciBleGVjdXRhYmxlcyB0byB0aGUgYGBQQVRIYGAgZW52aXJvbm1lbnQKKyAgIHZhcmlhYmxlIGZvciB0aGUgcnVubmluZyBzaGVsbC4gVGhlcmUgc2hvdWxkIGJlIG5vIG5lZWQgaW4gb3RoZXIKKyAgIGNpcmN1bXN0YW5jZXMgdG8gYWN0aXZhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW504oCUc2NyaXB0cyBpbnN0YWxsZWQgaW50bworICAgdmlydHVhbCBlbnZpcm9ubWVudHMgaGF2ZSBhICJzaGViYW5nIiBsaW5lIHdoaWNoIHBvaW50cyB0byB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQncyBQeXRob24gaW50ZXJwcmV0ZXIuIFRoaXMgbWVhbnMgdGhhdCB0aGUgc2NyaXB0IHdpbGwgcnVuIHdpdGgKKyAgIHRoYXQgaW50ZXJwcmV0ZXIgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgYGBQQVRIYGAuIE9uIFdpbmRvd3MsICJzaGViYW5nIgorICAgbGluZSBwcm9jZXNzaW5nIGlzIHN1cHBvcnRlZCBpZiB5b3UgaGF2ZSB0aGUgUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzCisgICBpbnN0YWxsZWQgKHRoaXMgd2FzIGFkZGVkIHRvIFB5dGhvbiBpbiAzLjMgLSBzZWUgOnBlcDpgMzk3YCBmb3IgbW9yZQorICAgZGV0YWlscykuIFRodXMsIGRvdWJsZS1jbGlja2luZyBhbiBpbnN0YWxsZWQgc2NyaXB0IGluIGEgV2luZG93cyBFeHBsb3JlcgorICAgd2luZG93IHNob3VsZCBydW4gdGhlIHNjcmlwdCB3aXRoIHRoZSBjb3JyZWN0IGludGVycHJldGVyIHdpdGhvdXQgdGhlcmUKKyAgIG5lZWRpbmcgdG8gYmUgYW55IHJlZmVyZW5jZSB0byBpdHMgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBgYFBBVEhgYC4KIAogCiAuLiBfdmVudi1hcGk6CkBAIC04OSw3ICs5NSw4IEBACiBjcmVhdGlvbiBhY2NvcmRpbmcgdG8gdGhlaXIgbmVlZHMsIHRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzLgogCiAuLiBjbGFzczo6IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UsIHdpdGhfcGlwPUZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHByb21wdD1Ob25lKQogCiAgICAgVGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIG9uCiAgICAgaW5zdGFudGlhdGlvbjoKQEAgLTExMyw5ICsxMjAsMTYgQEAKICAgICAgIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB1c2VzIDptb2Q6YGVuc3VyZXBpcGAgd2l0aAogICAgICAgdGhlIGBgLS1kZWZhdWx0LXBpcGBgIG9wdGlvbi4KIAorICAgICogYGBwcm9tcHRgYCAtLSBhIFN0cmluZyB0byBiZSB1c2VkIGFmdGVyIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZhdGVkCisgICAgICAoZGVmYXVsdHMgdG8gYGBOb25lYGAgd2hpY2ggbWVhbnMgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHdvdWxkCisgICAgICBiZSB1c2VkKS4KKwogICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICAgQWRkZWQgdGhlIGBgd2l0aF9waXBgYCBwYXJhbWV0ZXIKIAorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgIEFkZGVkIHRoZSBgYHByb21wdGBgIHBhcmFtZXRlcgorCiAKICAgICBDcmVhdG9ycyBvZiB0aGlyZC1wYXJ0eSB2aXJ0dWFsIGVudmlyb25tZW50IHRvb2xzIHdpbGwgYmUgZnJlZSB0byB1c2UgdGhlCiAgICAgcHJvdmlkZWQgYGBFbnZCdWlsZGVyYGAgY2xhc3MgYXMgYSBiYXNlIGNsYXNzLgpAQCAtMjI1LDcgKzIzOSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgZm9sbG93aW5nIHNjcmlwdCBzaG93cyBob3cgdG8gZXh0ZW5kIDpjbGFzczpgRW52QnVpbGRlcmAgYnkgaW1wbGVtZW50aW5nIGEKLXN1YmNsYXNzIHdoaWNoIGluc3RhbGxzIHNldHVwdG9vbHMgYW5kIHBpcCBpbnRvIGEgY3JlYXRlZCB2ZW52OjoKK3N1YmNsYXNzIHdoaWNoIGluc3RhbGxzIHNldHVwdG9vbHMgYW5kIHBpcCBpbnRvIGEgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50OjoKIAogICAgIGltcG9ydCBvcwogICAgIGltcG9ydCBvcy5wYXRoCkBAIC0yMzksMTIgKzI1MywxMiBAQAogICAgIGNsYXNzIEV4dGVuZGVkRW52QnVpbGRlcih2ZW52LkVudkJ1aWxkZXIpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBidWlsZGVyIGluc3RhbGxzIHNldHVwdG9vbHMgYW5kIHBpcCBzbyB0aGF0IHlvdSBjYW4gcGlwIG9yCi0gICAgICAgIGVhc3lfaW5zdGFsbCBvdGhlciBwYWNrYWdlcyBpbnRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LgorICAgICAgICBlYXN5X2luc3RhbGwgb3RoZXIgcGFja2FnZXMgaW50byB0aGUgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50LgogCiAgICAgICAgIDpwYXJhbSBub2Rpc3Q6IElmIFRydWUsIHNldHVwdG9vbHMgYW5kIHBpcCBhcmUgbm90IGluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAgICAgICAgIDpwYXJhbSBub3BpcDogSWYgVHJ1ZSwgcGlwIGlzIG5vdCBpbnN0YWxsZWQgaW50byB0aGUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAgICAgICAgIDpwYXJhbSBwcm9ncmVzczogSWYgc2V0dXB0b29scyBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBjYW4gYmUgbW9uaXRvcmVkIGJ5IHBhc3NpbmcgYSBwcm9ncmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlLiBJZiBzcGVjaWZpZWQsIGl0IGlzIGNhbGxlZCB3aXRoIHR3bwpAQCAtMjcwLDEwICsyODQsMTAgQEAKICAgICAgICAgZGVmIHBvc3Rfc2V0dXAoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFNldCB1cCBhbnkgcGFja2FnZXMgd2hpY2ggbmVlZCB0byBiZSBwcmUtaW5zdGFsbGVkIGludG8gdGhlCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBiZWluZyBjcmVhdGVkLgorICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudCBiZWluZyBjcmVhdGVkLgogCi0gICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIG9zLmVudmlyb25bJ1ZJUlRVQUxfRU5WJ10gPSBjb250ZXh0LmVudl9kaXIKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLm5vZGlzdDoKQEAgLTMwNyw3ICszMjEsNyBAQAogICAgICAgICAgICAgZm4gPSBvcy5wYXRoLnNwbGl0KHBhdGgpWy0xXQogICAgICAgICAgICAgYmlucGF0aCA9IGNvbnRleHQuYmluX3BhdGgKICAgICAgICAgICAgIGRpc3RwYXRoID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGZuKQotICAgICAgICAgICAgIyBEb3dubG9hZCBzY3JpcHQgaW50byB0aGUgZW52J3MgYmluYXJpZXMgZm9sZGVyCisgICAgICAgICAgICAjIERvd25sb2FkIHNjcmlwdCBpbnRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJpZXMgZm9sZGVyCiAgICAgICAgICAgICB1cmxyZXRyaWV2ZSh1cmwsIGRpc3RwYXRoKQogICAgICAgICAgICAgcHJvZ3Jlc3MgPSBzZWxmLnByb2dyZXNzCiAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CkBAIC0zMTksNyArMzMzLDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSW5zdGFsbGluZyAlcyAuLi4lcycgJSAobmFtZSwgdGVybSkpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICAjIEluc3RhbGwgaW4gdGhlIGVudgorICAgICAgICAgICAgIyBJbnN0YWxsIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CiAgICAgICAgICAgICBhcmdzID0gW2NvbnRleHQuZW52X2V4ZSwgZm5dCiAgICAgICAgICAgICBwID0gUG9wZW4oYXJncywgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLCBjd2Q9YmlucGF0aCkKICAgICAgICAgICAgIHQxID0gVGhyZWFkKHRhcmdldD1zZWxmLnJlYWRlciwgYXJncz0ocC5zdGRvdXQsICdzdGRvdXQnKSkKQEAgLTMzOCwxMCArMzUyLDEwIEBACiAKICAgICAgICAgZGVmIGluc3RhbGxfc2V0dXB0b29scyhzZWxmLCBjb250ZXh0KToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgSW5zdGFsbCBzZXR1cHRvb2xzIGluIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIEluc3RhbGwgc2V0dXB0b29scyBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvc2V0dXB0b29scy9kb3dubG9hZHMvZXpfc2V0dXAucHknCiAgICAgICAgICAgICBzZWxmLmluc3RhbGxfc2NyaXB0KGNvbnRleHQsICdzZXR1cHRvb2xzJywgdXJsKQpAQCAtMzU0LDEwICszNjgsMTAgQEAKIAogICAgICAgICBkZWYgaW5zdGFsbF9waXAoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEluc3RhbGwgcGlwIGluIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIEluc3RhbGwgcGlwIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgogCi0gICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHVybCA9ICdodHRwczovL3Jhdy5naXRodWIuY29tL3B5cGEvcGlwL21hc3Rlci9jb250cmliL2dldC1waXAucHknCiAgICAgICAgICAgICBzZWxmLmluc3RhbGxfc2NyaXB0KGNvbnRleHQsICdwaXAnLCB1cmwpCkBAIC0zODAsNyArMzk0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3JlIHRhcmdldCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3JpZXMuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2RpcnMnLCBtZXRhdmFyPSdFTlZfRElSJywgbmFyZ3M9JysnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0EgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudC4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uby1zZXR1cHRvb2xzJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nbm9kaXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3QgaW5zdGFsbCBzZXR1cHRvb2xzIG9yIHBpcCBpbiB0aGUgIgpAQCAtNDA0LDE0ICs0MTksMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHBsYXRmb3JtLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNsZWFyJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY2xlYXInLCBoZWxwPSdEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHJlYWR5IGV4aXN0cywgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXJ0dWFsIGVudmlyb25tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RzLCBiZWZvcmUgdmlydHVhbCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgY3JlYXRpb24uJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdXBncmFkZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VwZ3JhZGUnLCBoZWxwPSdVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgdmlydHVhbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIHRoaXMgdmVyc2lvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMgYmVlbiB1cGdyYWRlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbi1wbGFjZS4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12ZXJib3NlJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmVyYm9zZScsIGhlbHA9J0Rpc3BsYXkgdGhlIG91dHB1dCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbSB0aGUgc2NyaXB0cyB3aGljaCAnCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKaW5kZXggMzdmNjg3NC4uNWE0MmNjNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdApAQCAtMzAxLDcgKzMwMSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAotLi4gZnVuY3Rpb246OiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSkKKy4uIGZ1bmN0aW9uOjogd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEsIHNvdXJjZT1Ob25lKQogCiAgICBJc3N1ZSBhIHdhcm5pbmcsIG9yIG1heWJlIGlnbm9yZSBpdCBvciByYWlzZSBhbiBleGNlcHRpb24uICBUaGUgKmNhdGVnb3J5KgogICAgYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGEgd2FybmluZyBjYXRlZ29yeSBjbGFzcyAoc2VlIGFib3ZlKTsgaXQgZGVmYXVsdHMgdG8KQEAgLTMxOSw4ICszMTksMTQgQEAKICAgIHNvdXJjZSBvZiA6ZnVuYzpgZGVwcmVjYXRpb25gIGl0c2VsZiAoc2luY2UgdGhlIGxhdHRlciB3b3VsZCBkZWZlYXQgdGhlIHB1cnBvc2UKICAgIG9mIHRoZSB3YXJuaW5nIG1lc3NhZ2UpLgogCisgICAqc291cmNlKiwgaWYgc3VwcGxpZWQsIGlzIHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorICAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4KIAotLi4gZnVuY3Rpb246OiB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqc291cmNlKiBwYXJhbWV0ZXIuCisKKworLi4gZnVuY3Rpb246OiB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSwgc291cmNlPU5vbmUpCiAKICAgIFRoaXMgaXMgYSBsb3ctbGV2ZWwgaW50ZXJmYWNlIHRvIHRoZSBmdW5jdGlvbmFsaXR5IG9mIDpmdW5jOmB3YXJuYCwgcGFzc2luZyBpbgogICAgZXhwbGljaXRseSB0aGUgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciwgYW5kIG9wdGlvbmFsbHkgdGhlCkBAIC0zMzYsNiArMzQyLDEyIEBACiAgICBzb3VyY2UgZm9yIG1vZHVsZXMgZm91bmQgaW4gemlwZmlsZXMgb3Igb3RoZXIgbm9uLWZpbGVzeXN0ZW0gaW1wb3J0CiAgICBzb3VyY2VzKS4KIAorICAgKnNvdXJjZSosIGlmIHN1cHBsaWVkLCBpcyB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGQgdGhlICpzb3VyY2UqIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IHNob3d3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdCBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKaW5kZXggNTJkNTkxYS4uNDhiZGYxNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CkBAIC02MzUsNyArNjM1LDcgQEAKIAogLi4gZGF0YTo6IFJFR19EV09SRF9MSVRUTEVfRU5ESUFOCiAKLSAgIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4KKyAgIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byA6Y29uc3Q6YFJFR19EV09SRGAuCiAKIC4uIGRhdGE6OiBSRUdfRFdPUkRfQklHX0VORElBTgogCkBAIC02NTksNiArNjU5LDE4IEBACiAKICAgIE5vIGRlZmluZWQgdmFsdWUgdHlwZS4KIAorLi4gZGF0YTo6IFJFR19RV09SRAorCisgICBBIDY0LWJpdCBudW1iZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4KKworICAgQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIDpjb25zdDpgUkVHX1FXT1JEYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBSRUdfUkVTT1VSQ0VfTElTVAogCiAgICBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdCBiL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdAppbmRleCBkMmM0MjEwLi4zNzJmNzkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CkBAIC0yNSw3ICsyNSw4IEBACiAuLiBmdW5jdGlvbjo6IFBsYXlTb3VuZChzb3VuZCwgZmxhZ3MpCiAKICAgIENhbGwgdGhlIHVuZGVybHlpbmcgOmM6ZnVuYzpgUGxheVNvdW5kYCBmdW5jdGlvbiBmcm9tIHRoZSBQbGF0Zm9ybSBBUEkuICBUaGUKLSAgICpzb3VuZCogcGFyYW1ldGVyIG1heSBiZSBhIGZpbGVuYW1lLCBhdWRpbyBkYXRhIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYC4gIEl0cworICAgKnNvdW5kKiBwYXJhbWV0ZXIgbWF5IGJlIGEgZmlsZW5hbWUsIGEgc3lzdGVtIHNvdW5kIGFsaWFzLCBhdWRpbyBkYXRhIGFzIGEKKyAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAsIG9yIGBgTm9uZWBgLiAgSXRzCiAgICBpbnRlcnByZXRhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiAqZmxhZ3MqLCB3aGljaCBjYW4gYmUgYSBiaXR3aXNlIE9SZWQKICAgIGNvbWJpbmF0aW9uIG9mIHRoZSBjb25zdGFudHMgZGVzY3JpYmVkIGJlbG93LiBJZiB0aGUgKnNvdW5kKiBwYXJhbWV0ZXIgaXMKICAgIGBgTm9uZWBgLCBhbnkgY3VycmVudGx5IHBsYXlpbmcgd2F2ZWZvcm0gc291bmQgaXMgc3RvcHBlZC4gSWYgdGhlIHN5c3RlbQpAQCAtMzksNyArNDAsOCBAQAogICAgc291bmQgdG8gcGxheTsgcG9zc2libGUgdmFsdWVzIGFyZSBgYC0xYGAsIGBgTUJfSUNPTkFTVEVSSVNLYGAsCiAgICBgYE1CX0lDT05FWENMQU1BVElPTmBgLCBgYE1CX0lDT05IQU5EYGAsIGBgTUJfSUNPTlFVRVNUSU9OYGAsIGFuZCBgYE1CX09LYGAsIGFsbAogICAgZGVzY3JpYmVkIGJlbG93LiAgVGhlIHZhbHVlIGBgLTFgYCBwcm9kdWNlcyBhICJzaW1wbGUgYmVlcCI7IHRoaXMgaXMgdGhlIGZpbmFsCi0gICBmYWxsYmFjayBpZiBhIHNvdW5kIGNhbm5vdCBiZSBwbGF5ZWQgb3RoZXJ3aXNlLgorICAgZmFsbGJhY2sgaWYgYSBzb3VuZCBjYW5ub3QgYmUgcGxheWVkIG90aGVyd2lzZS4gIElmIHRoZSBzeXN0ZW0gaW5kaWNhdGVzIGFuCisgICBlcnJvciwgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuCiAKIAogLi4gZGF0YTo6IFNORF9GSUxFTkFNRQpAQCAtOTIsNyArOTQsNyBAQAogLi4gZGF0YTo6IFNORF9NRU1PUlkKIAogICAgVGhlICpzb3VuZCogcGFyYW1ldGVyIHRvIDpmdW5jOmBQbGF5U291bmRgIGlzIGEgbWVtb3J5IGltYWdlIG9mIGEgV0FWIGZpbGUsIGFzIGEKLSAgIHN0cmluZy4KKyAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuCiAKICAgIC4uIG5vdGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdCBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CmluZGV4IGFhZDI3YTguLmExZDQ0NjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CkBAIC0xMzMsOSArMTMzLDkgQEAKICAgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZW52aXJvbi5pdGVtcygpXQogICAgICAgICAgIHJldHVybiByZXQKIAotICAgICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgc2ltcGxlX2FwcCkKLSAgICAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCi0gICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHNpbXBsZV9hcHApIGFzIGh0dHBkOgorICAgICAgICAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGVudmlyb25tZW50IGZ1bmN0aW9ucyBhYm92ZSwgdGhlIDptb2Q6YHdzZ2lyZWYudXRpbGAgbW9kdWxlCkBAIC0yODUsMTQgKzI4NSwxNCBAQAogCiAgICAgICBmcm9tIHdzZ2lyZWYuc2ltcGxlX3NlcnZlciBpbXBvcnQgbWFrZV9zZXJ2ZXIsIGRlbW9fYXBwCiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKQotICAgICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiBwb3J0IDgwMDAuLi4iKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApIGFzIGh0dHBkOgorICAgICAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24gcG9ydCA4MDAwLi4uIikKIAotICAgICAgIyBSZXNwb25kIHRvIHJlcXVlc3RzIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCi0gICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgICAjIFJlc3BvbmQgdG8gcmVxdWVzdHMgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAotICAgICAgIyBBbHRlcm5hdGl2ZTogc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdAotICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICAgICMgQWx0ZXJuYXRpdmU6IHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKKyAgICAgICAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpCiAKIAogLi4gZnVuY3Rpb246OiBkZW1vX2FwcChlbnZpcm9uLCBzdGFydF9yZXNwb25zZSkKQEAgLTQzMiw5ICs0MzIsOSBAQAogICAgICAgIyBUaGlzIGlzIHRoZSBhcHBsaWNhdGlvbiB3cmFwcGVkIGluIGEgdmFsaWRhdG9yCiAgICAgICB2YWxpZGF0b3JfYXBwID0gdmFsaWRhdG9yKHNpbXBsZV9hcHApCiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHZhbGlkYXRvcl9hcHApCi0gICAgICBwcmludCgiTGlzdGVuaW5nIG9uIHBvcnQgODAwMC4uLi4iKQotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCB2YWxpZGF0b3JfYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiTGlzdGVuaW5nIG9uIHBvcnQgODAwMC4uLi4iKQorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAKIDptb2Q6YHdzZ2lyZWYuaGFuZGxlcnNgIC0tIHNlcnZlci9nYXRld2F5IGJhc2UgY2xhc3NlcwpAQCAtNzc0LDggKzc3NCw4IEBACiAgICAgICAgIyBUaGUgcmV0dXJuZWQgb2JqZWN0IGlzIGdvaW5nIHRvIGJlIHByaW50ZWQKICAgICAgICByZXR1cm4gW2IiSGVsbG8gV29ybGQiXQogCi0gICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBoZWxsb193b3JsZF9hcHApCi0gICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQorICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgaGVsbG9fd29ybGRfYXBwKSBhcyBodHRwZDoKKyAgICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQogCi0gICAjIFNlcnZlIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCi0gICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAjIFNlcnZlIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCisgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGRhZDdhMDIuLjM5MDgyOGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC04OCw5ICs4OCwxMyBAQAogICAgKz09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKICAgIHwgYGBib29sZWFuYGAgICAgICAgICAgfCA6Y2xhc3M6YGJvb2xgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYGludGBgIG9yIGBgaTRgYCAgICB8IDpjbGFzczpgaW50YCBpbiByYW5nZSBmcm9tIC0yMTQ3NDgzNjQ4IHRvIDIxNDc0ODM2NDcuIHwKKyAgIHwgYGBpbnRgYCwgYGBpMWBgLCAgICAgfCA6Y2xhc3M6YGludGAgaW4gcmFuZ2UgZnJvbSAtMjE0NzQ4MzY0OCB0byAyMTQ3NDgzNjQ3LiB8CisgICB8IGBgaTJgYCwgIGBgaTRgYCwgICAgIHwgVmFsdWVzIGdldCB0aGUgYGA8aW50PmBgIHRhZy4gICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCBgYGk4YGAgb3IgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBiaWdpbnRlZ2VyYGAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYGRvdWJsZWBgICAgICAgICAgICB8IDpjbGFzczpgZmxvYXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBkb3VibGVgYCBvciAgICAgICAgfCA6Y2xhc3M6YGZsb2F0YC4gIFZhbHVlcyBnZXQgdGhlIGBgPGRvdWJsZT5gYCB0YWcuICAgICB8CisgICB8IGBgZmxvYXRgYCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGBzdHJpbmdgYCAgICAgICAgICAgfCA6Y2xhc3M6YHN0cmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTE0LDYgKzExOCw4IEBACiAgICB8IGBgbmlsYGAgICAgICAgICAgICAgIHwgVGhlIGBgTm9uZWBgIGNvbnN0YW50LiAgUGFzc2luZyBpcyBhbGxvd2VkIG9ubHkgaWYgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICphbGxvd19ub25lKiBpcyB0cnVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgYmlnZGVjaW1hbGBgICAgICAgIHwgOmNsYXNzOmBkZWNpbWFsLkRlY2ltYWxgLiAgUmV0dXJuZWQgdHlwZSBvbmx5LiAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgVGhpcyBpcyB0aGUgZnVsbCBzZXQgb2YgZGF0YSB0eXBlcyBzdXBwb3J0ZWQgYnkgWE1MLVJQQy4gIE1ldGhvZCBjYWxscyBtYXkgYWxzbwogICAgcmFpc2UgYSBzcGVjaWFsIDpleGM6YEZhdWx0YCBpbnN0YW5jZSwgdXNlZCB0byBzaWduYWwgWE1MLVJQQyBzZXJ2ZXIgZXJyb3JzLCBvcgpAQCAtMTM3LDYgKzE0MywxMyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFkZGVkIHRoZSAqY29udGV4dCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIHR5cGUgdGFncyB3aXRoIHByZWZpeGVzIChlLmcuIGBgZXg6bmlsYGApLgorICAgICAgQWRkZWQgc3VwcG9ydCBvZiB1bm1hcnNhbGxpbmcgYWRkaXRpb25hbCB0eXBlcyB1c2VkIGJ5IEFwYWNoZSBYTUwtUlBDCisgICAgICBpbXBsZW1lbnRhdGlvbiBmb3IgbnVtZXJpY3M6IGBgaTFgYCwgYGBpMmBgLCBgYGk4YGAsIGBgYmlnaW50ZWdlcmBgLAorICAgICAgYGBmbG9hdGBgIGFuZCBgYGJpZ2RlY2ltYWxgYC4KKyAgICAgIFNlZSBodHRwOi8vd3MuYXBhY2hlLm9yZy94bWxycGMvdHlwZXMuaHRtbCBmb3IgYSBkZXNjcmlwdGlvbi4KKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAppbmRleCAxYzc3ZTg0Li4wNTExZGRmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdApAQCAtMTQ4LDI5ICsxNDgsMjkgQEAKICAgICAgICBycGNfcGF0aHMgPSAoJy9SUEMyJywpCiAKICAgICMgQ3JlYXRlIHNlcnZlcgotICAgc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXI9UmVxdWVzdEhhbmRsZXIpCi0gICBzZXJ2ZXIucmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9mdW5jdGlvbnMoKQorICAgd2l0aCBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPVJlcXVlc3RIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKCkKIAotICAgIyBSZWdpc3RlciBwb3coKSBmdW5jdGlvbjsgdGhpcyB3aWxsIHVzZSB0aGUgdmFsdWUgb2YKLSAgICMgcG93Ll9fbmFtZV9fIGFzIHRoZSBuYW1lLCB3aGljaCBpcyBqdXN0ICdwb3cnLgotICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAjIFJlZ2lzdGVyIHBvdygpIGZ1bmN0aW9uOyB0aGlzIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZgorICAgICAgICMgcG93Ll9fbmFtZV9fIGFzIHRoZSBuYW1lLCB3aGljaCBpcyBqdXN0ICdwb3cnLgorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCiAKLSAgICMgUmVnaXN0ZXIgYSBmdW5jdGlvbiB1bmRlciBhIGRpZmZlcmVudCBuYW1lCi0gICBkZWYgYWRkZXJfZnVuY3Rpb24oeCx5KToKLSAgICAgICByZXR1cm4geCArIHkKLSAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihhZGRlcl9mdW5jdGlvbiwgJ2FkZCcpCisgICAgICAgIyBSZWdpc3RlciBhIGZ1bmN0aW9uIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUKKyAgICAgICBkZWYgYWRkZXJfZnVuY3Rpb24oeCx5KToKKyAgICAgICAgICAgcmV0dXJuIHggKyB5CisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGFkZGVyX2Z1bmN0aW9uLCAnYWRkJykKIAotICAgIyBSZWdpc3RlciBhbiBpbnN0YW5jZTsgYWxsIHRoZSBtZXRob2RzIG9mIHRoZSBpbnN0YW5jZSBhcmUKLSAgICMgcHVibGlzaGVkIGFzIFhNTC1SUEMgbWV0aG9kcyAoaW4gdGhpcyBjYXNlLCBqdXN0ICdtdWwnKS4KLSAgIGNsYXNzIE15RnVuY3M6Ci0gICAgICAgZGVmIG11bChzZWxmLCB4LCB5KToKLSAgICAgICAgICAgcmV0dXJuIHggKiB5CisgICAgICAgIyBSZWdpc3RlciBhbiBpbnN0YW5jZTsgYWxsIHRoZSBtZXRob2RzIG9mIHRoZSBpbnN0YW5jZSBhcmUKKyAgICAgICAjIHB1Ymxpc2hlZCBhcyBYTUwtUlBDIG1ldGhvZHMgKGluIHRoaXMgY2FzZSwganVzdCAnbXVsJykuCisgICAgICAgY2xhc3MgTXlGdW5jczoKKyAgICAgICAgICAgZGVmIG11bChzZWxmLCB4LCB5KToKKyAgICAgICAgICAgICAgIHJldHVybiB4ICogeQogCi0gICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoTXlGdW5jcygpKQorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShNeUZ1bmNzKCkpCiAKLSAgICMgUnVuIHRoZSBzZXJ2ZXIncyBtYWluIGxvb3AKLSAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAjIFJ1biB0aGUgc2VydmVyJ3MgbWFpbiBsb29wCisgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQogCiBUaGUgZm9sbG93aW5nIGNsaWVudCBjb2RlIHdpbGwgY2FsbCB0aGUgbWV0aG9kcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUgcHJlY2VkaW5nCiBzZXJ2ZXI6OgpAQCAtMjA3LDE4ICsyMDcsMTcgQEAKICAgICAgICAgICAgIGRlZiBnZXRDdXJyZW50VGltZSgpOgogICAgICAgICAgICAgICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZS5ub3coKQogCi0gICAgc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCi0gICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQotICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCi0gICAgdHJ5OgotICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKLSAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHN5cy5leGl0KDApCisgICAgd2l0aCBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkgYXMgc2VydmVyOgorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCisgICAgICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQogCiBUaGlzIEV4YW1wbGVTZXJ2aWNlIGRlbW8gY2FuIGJlIGludm9rZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAppbmRleCAxZDY1MjZjLi40N2JhMGI1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdApAQCAtMTQ3LDEwICsxNDcsMTAgQEAKICAgICpjb21wcmVzc2lvbiogaXMgdGhlIFpJUCBjb21wcmVzc2lvbiBtZXRob2QgdG8gdXNlIHdoZW4gd3JpdGluZyB0aGUgYXJjaGl2ZSwKICAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLAogICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgOyB1bnJlY29nbml6ZWQKLSAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YFJ1bnRpbWVFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgLAogICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlCiAgICAoOm1vZDpgemxpYmAsIDptb2Q6YGJ6MmAgb3IgOm1vZDpgbHptYWApIGlzIG5vdCBhdmFpbGFibGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAKLSAgIGlzIGFsc28gcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCisgICBpcyByYWlzZWQuIFRoZSBkZWZhdWx0IGlzIDpjb25zdDpgWklQX1NUT1JFRGAuICBJZiAqYWxsb3daaXA2NCogaXMKICAgIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkgemlwZmlsZSB3aWxsIGNyZWF0ZSBaSVAgZmlsZXMgdGhhdCB1c2UgdGhlIFpJUDY0CiAgICBleHRlbnNpb25zIHdoZW4gdGhlIHppcGZpbGUgaXMgbGFyZ2VyIHRoYW4gMiBHaUIuIElmIGl0IGlzICBmYWxzZSA6bW9kOmB6aXBmaWxlYAogICAgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgWklQIGZpbGUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zLgpAQCAtMTc5LDYgKzE3OSwxMCBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyB0byB1bnNlZWthYmxlIHN0cmVhbXMuCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCBtb2RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUHJldmlvdXNseSwgYSBwbGFpbiA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQgZm9yIHVucmVjb2duaXplZAorICAgICAgY29tcHJlc3Npb24gdmFsdWVzLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuY2xvc2UoKQogCkBAIC0yMDUsMTggKzIwOSwxMiBAQAogICAgUmV0dXJuIGEgbGlzdCBvZiBhcmNoaXZlIG1lbWJlcnMgYnkgbmFtZS4KIAogCi0uLiBpbmRleDo6Ci0gICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgemlwZmlsZS5aaXBGaWxlLm9wZW4gbWV0aG9kCisuLiBtZXRob2Q6OiBaaXBGaWxlLm9wZW4obmFtZSwgbW9kZT0ncicsIHB3ZD1Ob25lLCAqLCBmb3JjZV96aXA2ND1GYWxzZSkKIAotLi4gbWV0aG9kOjogWmlwRmlsZS5vcGVuKG5hbWUsIG1vZGU9J3InLCBwd2Q9Tm9uZSkKLQotICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZS1saWtlIG9iamVjdCAoWmlwRXh0RmlsZSkuICpuYW1lKgotICAgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3QuIFRoZQotICAgKm1vZGUqIHBhcmFtZXRlciwgaWYgaW5jbHVkZWQsIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6IGBgJ3InYGAgKHRoZQotICAgZGVmYXVsdCksIGBgJ1UnYGAsIG9yIGBgJ3JVJ2BgLiBDaG9vc2luZyBgYCdVJ2BgIG9yICBgYCdyVSdgYCB3aWxsIGVuYWJsZQotICAgOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2Agc3VwcG9ydCBpbiB0aGUgcmVhZC1vbmx5IG9iamVjdC4gICpwd2QqIGlzIHRoZQotICAgcGFzc3dvcmQgdXNlZCBmb3IgZW5jcnlwdGVkIGZpbGVzLiAgQ2FsbGluZyAgOm1ldGg6YC5vcGVuYCBvbiBhIGNsb3NlZAotICAgWmlwRmlsZSB3aWxsIHJhaXNlIGEgIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBBY2Nlc3MgYSBtZW1iZXIgb2YgdGhlIGFyY2hpdmUgYXMgYSBiaW5hcnkgZmlsZS1saWtlIG9iamVjdC4gICpuYW1lKgorICAgY2FuIGJlIGVpdGhlciB0aGUgbmFtZSBvZiBhIGZpbGUgd2l0aGluIHRoZSBhcmNoaXZlIG9yIGEgOmNsYXNzOmBaaXBJbmZvYAorICAgb2JqZWN0LiAgVGhlICptb2RlKiBwYXJhbWV0ZXIsIGlmIGluY2x1ZGVkLCBtdXN0IGJlIGBgJ3InYGAgKHRoZSBkZWZhdWx0KQorICAgb3IgYGAndydgYC4gICpwd2QqIGlzIHRoZSBwYXNzd29yZCB1c2VkIHRvIGRlY3J5cHQgZW5jcnlwdGVkIFpJUCBmaWxlcy4KIAogICAgOm1ldGg6YH5aaXBGaWxlLm9wZW5gIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKICAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQ6OgpAQCAtMjI1LDE3ICsyMjMsMjMgQEAKICAgICAgICAgICB3aXRoIG15emlwLm9wZW4oJ2VnZ3MudHh0JykgYXMgbXlmaWxlOgogICAgICAgICAgICAgICBwcmludChteWZpbGUucmVhZCgpKQogCi0gICAuLiBub3RlOjoKKyAgIFdpdGggKm1vZGUqIGBgJ3InYGAgdGhlIGZpbGUtbGlrZSBvYmplY3QKKyAgIChgYFppcEV4dEZpbGVgYCkgaXMgcmVhZC1vbmx5IGFuZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgLCA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAsCisgICA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZXNgLCA6bWV0aDpgX19pdGVyX19gLAorICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AuICBUaGVzZSBvYmplY3RzIGNhbiBvcGVyYXRlIGluZGVwZW5kZW50bHkgb2YKKyAgIHRoZSBaaXBGaWxlLgogCi0gICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLSAgICAgIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAsIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lYCwKLSAgICAgIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lc2AsIDptZXRoOmBfX2l0ZXJfX2AsCi0gICAgICA6bWV0aDpgfml0ZXJhdG9yLl9fbmV4dF9fYC4KKyAgIFdpdGggYGBtb2RlPSd3J2BgLCBhIHdyaXRhYmxlIGZpbGUgaGFuZGxlIGlzIHJldHVybmVkLCB3aGljaCBzdXBwb3J0cyB0aGUKKyAgIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVgIG1ldGhvZC4gIFdoaWxlIGEgd3JpdGFibGUgZmlsZSBoYW5kbGUgaXMgb3BlbiwKKyAgIGF0dGVtcHRpbmcgdG8gcmVhZCBvciB3cml0ZSBvdGhlciBmaWxlcyBpbiB0aGUgWklQIGZpbGUgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBWYWx1ZUVycm9yYC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIE9iamVjdHMgcmV0dXJuZWQgYnkgOm1ldGg6YC5vcGVuYCBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZQotICAgICAgWmlwRmlsZS4KKyAgIFdoZW4gd3JpdGluZyBhIGZpbGUsIGlmIHRoZSBmaWxlIHNpemUgaXMgbm90IGtub3duIGluIGFkdmFuY2UgYnV0IG1heSBleGNlZWQKKyAgIDIgR2lCLCBwYXNzIGBgZm9yY2VfemlwNjQ9VHJ1ZWBgIHRvIGVuc3VyZSB0aGF0IHRoZSBoZWFkZXIgZm9ybWF0IGlzCisgICBjYXBhYmxlIG9mIHN1cHBvcnRpbmcgbGFyZ2UgZmlsZXMuICBJZiB0aGUgZmlsZSBzaXplIGlzIGtub3duIGluIGFkdmFuY2UsCisgICBjb25zdHJ1Y3QgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdCB3aXRoIDphdHRyOmB+WmlwSW5mby5maWxlX3NpemVgIHNldCwgYW5kCisgICB1c2UgdGhhdCBhcyB0aGUgKm5hbWUqIHBhcmFtZXRlci4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTI0MywxMCArMjQ3LDE5IEBACiAgICAgICBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiAgWW91IHdpbGwgYXBwcmVjaWF0ZSB0aGlzIHdoZW4gdHJ5aW5nIHRvIHJlYWQgYQogICAgICAgWklQIGZpbGUgdGhhdCBjb250YWlucyBtZW1iZXJzIHdpdGggZHVwbGljYXRlIG5hbWVzLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjQgMy42Ci0gICAgICBUaGUgYGAnVSdgYCBvciAgYGAnclUnYGAgbW9kZS4gIFVzZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGZvciByZWFkaW5nCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUmVtb3ZlZCBzdXBwb3J0IG9mIGBgbW9kZT0nVSdgYC4gIFVzZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGZvciByZWFkaW5nCiAgICAgICBjb21wcmVzc2VkIHRleHQgZmlsZXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBvcGVuYCBjYW4gbm93IGJlIHVzZWQgdG8gd3JpdGUgZmlsZXMgaW50byB0aGUgYXJjaGl2ZSB3aXRoIHRoZQorICAgICAgYGBtb2RlPSd3J2BgIG9wdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YC5vcGVuYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgICAgIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIC4uIG1ldGhvZDo6IFppcEZpbGUuZXh0cmFjdChtZW1iZXIsIHBhdGg9Tm9uZSwgcHdkPU5vbmUpCiAKICAgIEV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeTsgKm1lbWJlcioKQEAgLTI2Nyw2ICsyODAsMTAgQEAKICAgICAgIGNoYXJhY3RlcnMgKGBgOmBgLCBgYDxgYCwgYGA+YGAsIGBgfGBgLCBgYCJgYCwgYGA/YGAsIGFuZCBgYCpgYCkKICAgICAgIHJlcGxhY2VkIGJ5IHVuZGVyc2NvcmUgKGBgX2BgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YGV4dHJhY3RgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuZXh0cmFjdGFsbChwYXRoPU5vbmUsIG1lbWJlcnM9Tm9uZSwgcHdkPU5vbmUpCiAKQEAgLTI4Myw2ICszMDAsMTAgQEAKICAgICAgIGRvdHMgYGAiLi4iYGAuICBUaGlzIG1vZHVsZSBhdHRlbXB0cyB0byBwcmV2ZW50IHRoYXQuCiAgICAgICBTZWUgOm1ldGg6YGV4dHJhY3RgIG5vdGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmBleHRyYWN0YWxsYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLnByaW50ZGlyKCkKIApAQCAtMzAwLDE4ICszMjEsMjQgQEAKICAgIGZpbGUgaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3QuICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gZm9yCiAgICByZWFkIG9yIGFwcGVuZC4gKnB3ZCogaXMgdGhlIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRlZCAgZmlsZXMgYW5kLCBpZiBzcGVjaWZpZWQsCiAgICBpdCB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhc3N3b3JkIHNldCB3aXRoIDptZXRoOmBzZXRwYXNzd29yZGAuICBDYWxsaW5nCi0gICA6bWV0aDpgcmVhZGAgb24gYSBjbG9zZWQgWmlwRmlsZSAgd2lsbCByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAuIENhbGxpbmcKICAgIDptZXRoOmByZWFkYCBvbiBhIFppcEZpbGUgdGhhdCB1c2VzIGEgY29tcHJlc3Npb24gbWV0aG9kIG90aGVyIHRoYW4KICAgIDpjb25zdDpgWklQX1NUT1JFRGAsIDpjb25zdDpgWklQX0RFRkxBVEVEYCwgOmNvbnN0OmBaSVBfQlpJUDJgIG9yCiAgICA6Y29uc3Q6YFpJUF9MWk1BYCB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuIEFuIGVycm9yIHdpbGwgYWxzbwogICAgYmUgcmFpc2VkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGNvbXByZXNzaW9uIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgcmVhZGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLnRlc3R6aXAoKQogCiAgICBSZWFkIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGFyY2hpdmUgYW5kIGNoZWNrIHRoZWlyIENSQydzIGFuZCBmaWxlIGhlYWRlcnMuCi0gICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGJhZCBmaWxlLCBvciBlbHNlIHJldHVybiBgYE5vbmVgYC4gQ2FsbGluZwotICAgOm1ldGg6YHRlc3R6aXBgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGJhZCBmaWxlLCBvciBlbHNlIHJldHVybiBgYE5vbmVgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHRlc3RmaWxlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KIAogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLndyaXRlKGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUsIGNvbXByZXNzX3R5cGU9Tm9uZSkKQEAgLTMyMSwxMCArMzQ4LDcgQEAKICAgIGxldHRlciBhbmQgd2l0aCBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4gIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSoKICAgIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yCiAgICB0aGUgbmV3IGVudHJ5LgotICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZwotICAgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBDYWxsaW5nICA6bWV0aDpgd3JpdGVgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0zNDMsMTYgKzM2NywxOSBAQAogICAgICAgSWYgYGBhcmNuYW1lYGAgKG9yIGBgZmlsZW5hbWVgYCwgaWYgYGBhcmNuYW1lYGAgaXMgIG5vdCBnaXZlbikgY29udGFpbnMgYSBudWxsCiAgICAgICBieXRlLCB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB0aGUgYXJjaGl2ZSB3aWxsIGJlIHRydW5jYXRlZCBhdCB0aGUgbnVsbCBieXRlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgd3JpdGVgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIG9yCisgICAgICBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksCisgICAgICBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiAuLiBtZXRob2Q6OiBaaXBGaWxlLndyaXRlc3RyKHppbmZvX29yX2FyY25hbWUsIGRhdGFbLCBjb21wcmVzc190eXBlXSkKIAogICAgV3JpdGUgdGhlIHN0cmluZyAqZGF0YSogdG8gdGhlIGFyY2hpdmU7ICp6aW5mb19vcl9hcmNuYW1lKiBpcyBlaXRoZXIgdGhlIGZpbGUKICAgIG5hbWUgaXQgd2lsbCBiZSBnaXZlbiBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlLiAgSWYgaXQncwogICAgYW4gaW5zdGFuY2UsIGF0IGxlYXN0IHRoZSBmaWxlbmFtZSwgZGF0ZSwgYW5kIHRpbWUgbXVzdCBiZSBnaXZlbi4gIElmIGl0J3MgYQogICAgbmFtZSwgdGhlIGRhdGUgYW5kIHRpbWUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUuCi0gICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKLSAgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbAotICAgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYC4KIAogICAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKiBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKgogICAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIG5ldyBlbnRyeSwgb3IgaW4gdGhlICp6aW5mb19vcl9hcmNuYW1lKgpAQCAtMzY4LDYgKzM5NSwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSAqY29tcHJlc3NfdHlwZSogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgb3IKKyAgICAgIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwKKyAgICAgIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIFRoZSBmb2xsb3dpbmcgZGF0YSBhdHRyaWJ1dGVzIGFyZSBhbHNvIGF2YWlsYWJsZToKIAogCkBAIC00NjUsNyArNDk4LDMxIEBACiA6bWV0aDpgLmluZm9saXN0YCBtZXRob2RzIG9mIDpjbGFzczpgWmlwRmlsZWAgb2JqZWN0cy4gIEVhY2ggb2JqZWN0IHN0b3JlcwogaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgbWVtYmVyIG9mIHRoZSBaSVAgYXJjaGl2ZS4KIAotSW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorVGhlcmUgaXMgb25lIGNsYXNzbWV0aG9kIHRvIG1ha2UgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlIGZvciBhIGZpbGVzeXN0ZW0KK2ZpbGU6CisKKy4uIGNsYXNzbWV0aG9kOjogWmlwSW5mby5mcm9tX2ZpbGUoZmlsZW5hbWUsIGFyY25hbWU9Tm9uZSkKKworICAgQ29uc3RydWN0IGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZSBmb3IgYSBmaWxlIG9uIHRoZSBmaWxlc3lzdGVtLCBpbgorICAgcHJlcGFyYXRpb24gZm9yIGFkZGluZyBpdCB0byBhIHppcCBmaWxlLgorCisgICAqZmlsZW5hbWUqIHNob3VsZCBiZSB0aGUgcGF0aCB0byBhIGZpbGUgb3IgZGlyZWN0b3J5IG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICBJZiAqYXJjbmFtZSogaXMgc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGFzIHRoZSBuYW1lIHdpdGhpbiB0aGUgYXJjaGl2ZS4KKyAgIElmICphcmNuYW1lKiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmFtZSB3aWxsIGJlIHRoZSBzYW1lIGFzICpmaWxlbmFtZSosIGJ1dAorICAgd2l0aCBhbnkgZHJpdmUgbGV0dGVyIGFuZCBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworSW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgorCisuLiBtZXRob2Q6OiBaaXBJbmZvLmlzX2RpcigpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiB0aGlzIGFyY2hpdmUgbWVtYmVyIGlzIGEgZGlyZWN0b3J5LgorCisgICBUaGlzIHVzZXMgdGhlIGVudHJ5J3MgbmFtZTogZGlyZWN0b3JpZXMgc2hvdWxkIGFsd2F5cyBlbmQgd2l0aCBgYC9gYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIAogLi4gYXR0cmlidXRlOjogWmlwSW5mby5maWxlbmFtZQpAQCAtNTc0LDQgKzYzMSw1IEBACiAKICAgIFNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBmaWxlLgogCisKIC4uIF9QS1pJUCBBcHBsaWNhdGlvbiBOb3RlOiBodHRwczovL3Brd2FyZS5jYWNoZWZseS5uZXQvd2ViZG9jcy9jYXNlc3R1ZGllcy9BUFBOT1RFLlRYVApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemxpYi5yc3QgYi9Eb2MvbGlicmFyeS96bGliLnJzdAppbmRleCAxZGU3YmFlLi4zZDc0MmFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS96bGliLnJzdApAQCAtNDcsMTQgKzQ3LDE5IEBACiAgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGFkbGVyMzIoZGF0YSkgJiAweGZmZmZmZmZmYGAuCiAKIAotLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhWywgbGV2ZWxdKQorLi4gZnVuY3Rpb246OiBjb21wcmVzcyhkYXRhLCBsZXZlbD0tMSkKIAogICAgQ29tcHJlc3NlcyB0aGUgYnl0ZXMgaW4gKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuCi0gICAqbGV2ZWwqIGlzIGFuIGludGVnZXIgZnJvbSBgYDBgYCB0byBgYDlgYCBjb250cm9sbGluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb247CisgICAqbGV2ZWwqIGlzIGFuIGludGVnZXIgZnJvbSBgYDBgYCB0byBgYDlgYCBvciBgYC0xYGAgY29udHJvbGxpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOwogICAgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLCBgYDlgYCBpcyBzbG93ZXN0IGFuZAotICAgcHJvZHVjZXMgdGhlIG1vc3QuICBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgNmBgLgorICAgcHJvZHVjZXMgdGhlIG1vc3QuICBgYDBgYCBpcyBubyBjb21wcmVzc2lvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgLTFgYAorICAgKFpfREVGQVVMVF9DT01QUkVTU0lPTikuICBaX0RFRkFVTFRfQ09NUFJFU1NJT04gcmVwcmVzZW50cyBhIGRlZmF1bHQKKyAgIGNvbXByb21pc2UgYmV0d2VlbiBzcGVlZCBhbmQgY29tcHJlc3Npb24gKGN1cnJlbnRseSBlcXVpdmFsZW50IHRvIGxldmVsIDYpLgogICAgUmFpc2VzIHRoZSA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uIGlmIGFueSBlcnJvciBvY2N1cnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqbGV2ZWwqIGNhbiBub3cgYmUgdXNlZCBhcyBhIGtleXdvcmQgcGFyYW1ldGVyLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3NvYmoobGV2ZWw9LTEsIG1ldGhvZD1ERUZMQVRFRCwgd2JpdHM9MTUsIG1lbUxldmVsPTgsIHN0cmF0ZWd5PVpfREVGQVVMVF9TVFJBVEVHWVssIHpkaWN0XSkKIApAQCAtMTI0LDcgKzEyOSw3IEBACiAgICAgICBwbGF0Zm9ybXMsIHVzZSBgYGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLgogCiAKLS4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhWywgd2JpdHNbLCBidWZzaXplXV0pCisuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YSwgd2JpdHM9TUFYX1dCSVRTLCBidWZzaXplPURFRl9CVUZfU0laRSkKIAogICAgRGVjb21wcmVzc2VzIHRoZSBieXRlcyBpbiAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZQogICAgdW5jb21wcmVzc2VkIGRhdGEuICBUaGUgKndiaXRzKiBwYXJhbWV0ZXIgZGVwZW5kcyBvbgpAQCAtMTU5LDE0ICsxNjQsMTYgQEAKICAgIFdoZW4gZGVjb21wcmVzc2luZyBhIHN0cmVhbSwgdGhlIHdpbmRvdyBzaXplIG11c3Qgbm90IGJlIHNtYWxsZXIKICAgIHRoYW4gdGhlIHNpemUgb3JpZ2luYWxseSB1c2VkIHRvIGNvbXByZXNzIHRoZSBzdHJlYW07IHVzaW5nIGEgdG9vLXNtYWxsCiAgICB2YWx1ZSBtYXkgcmVzdWx0IGluIGFuIDpleGM6YGVycm9yYCBleGNlcHRpb24uIFRoZSBkZWZhdWx0ICp3Yml0cyogdmFsdWUKLSAgIGlzIDE1LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgbGFyZ2VzdCB3aW5kb3cgc2l6ZSBhbmQgcmVxdWlyZXMgYSB6bGliCi0gICBoZWFkZXIgYW5kIHRyYWlsZXIgdG8gYmUgaW5jbHVkZWQuCisgICBjb3JyZXNwb25kcyB0byB0aGUgbGFyZ2VzdCB3aW5kb3cgc2l6ZSBhbmQgcmVxdWlyZXMgYSB6bGliIGhlYWRlciBhbmQKKyAgIHRyYWlsZXIgdG8gYmUgaW5jbHVkZWQuCiAKICAgICpidWZzaXplKiBpcyB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBob2xkIGRlY29tcHJlc3NlZCBkYXRhLiAgSWYKICAgIG1vcmUgc3BhY2UgaXMgcmVxdWlyZWQsIHRoZSBidWZmZXIgc2l6ZSB3aWxsIGJlIGluY3JlYXNlZCBhcyBuZWVkZWQsIHNvIHlvdQogICAgZG9uJ3QgaGF2ZSB0byBnZXQgdGhpcyB2YWx1ZSBleGFjdGx5IHJpZ2h0OyB0dW5pbmcgaXQgd2lsbCBvbmx5IHNhdmUgYSBmZXcgY2FsbHMKLSAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuICBUaGUgZGVmYXVsdCBzaXplIGlzIDE2Mzg0LgorICAgdG8gOmM6ZnVuYzpgbWFsbG9jYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICp3Yml0cyogYW5kICpidWZzaXplKiBjYW4gYmUgdXNlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KIAogLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzb2JqKHdiaXRzPTE1WywgemRpY3RdKQogCkBAIC0yNTIsNyArMjU5LDcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIG1ldGhvZDo6IERlY29tcHJlc3MuZGVjb21wcmVzcyhkYXRhWywgbWF4X2xlbmd0aF0pCisuLiBtZXRob2Q6OiBEZWNvbXByZXNzLmRlY29tcHJlc3MoZGF0YSwgbWF4X2xlbmd0aD0wKQogCiAgICBEZWNvbXByZXNzICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhCiAgICBjb3JyZXNwb25kaW5nIHRvIGF0IGxlYXN0IHBhcnQgb2YgdGhlIGRhdGEgaW4gKnN0cmluZyouICBUaGlzIGRhdGEgc2hvdWxkIGJlCkBAIC0yNjQsOSArMjcxLDExIEBACiAgICBubyBsb25nZXIgdGhhbiAqbWF4X2xlbmd0aCouIFRoaXMgbWF5IG1lYW4gdGhhdCBub3QgYWxsIG9mIHRoZSBjb21wcmVzc2VkIGlucHV0CiAgICBjYW4gYmUgcHJvY2Vzc2VkOyBhbmQgdW5jb25zdW1lZCBkYXRhIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBhdHRyaWJ1dGUKICAgIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgLiBUaGlzIGJ5dGVzdHJpbmcgbXVzdCBiZSBwYXNzZWQgdG8gYSBzdWJzZXF1ZW50IGNhbGwgdG8KLSAgIDptZXRoOmBkZWNvbXByZXNzYCBpZiBkZWNvbXByZXNzaW9uIGlzIHRvIGNvbnRpbnVlLiAgSWYgKm1heF9sZW5ndGgqIGlzIG5vdAotICAgc3VwcGxpZWQgdGhlbiB0aGUgd2hvbGUgaW5wdXQgaXMgZGVjb21wcmVzc2VkLCBhbmQgOmF0dHI6YHVuY29uc3VtZWRfdGFpbGAgaXMKLSAgIGVtcHR5LgorICAgOm1ldGg6YGRlY29tcHJlc3NgIGlmIGRlY29tcHJlc3Npb24gaXMgdG8gY29udGludWUuICBJZiAqbWF4X2xlbmd0aCogaXMgemVybworICAgdGhlbiB0aGUgd2hvbGUgaW5wdXQgaXMgZGVjb21wcmVzc2VkLCBhbmQgOmF0dHI6YHVuY29uc3VtZWRfdGFpbGAgaXMgZW1wdHkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqbWF4X2xlbmd0aCogY2FuIGJlIHVzZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgogCiAKIC4uIG1ldGhvZDo6IERlY29tcHJlc3MuZmx1c2goW2xlbmd0aF0pCmRpZmYgLS1naXQgYS9Eb2MvbWFrZS5iYXQgYi9Eb2MvbWFrZS5iYXQKaW5kZXggNWFiODA4NS4uZGExZjg3NiAxMDA2NDQKLS0tIGEvRG9jL21ha2UuYmF0CisrKyBiL0RvYy9tYWtlLmJhdApAQCAtNDAsNyArNDAsNyBAQAogICAgIGdvdG8gZW5kDQogKQ0KIA0KLSVTUEhJTlhCVUlMRCUgMj4gbnVsDQorJVNQSElOWEJVSUxEJSA+bnVsIDI+IG51bA0KIGlmIGVycm9ybGV2ZWwgOTAwOSAoDQogICAgIGVjaG8uDQogICAgIGVjaG8uVGhlICdzcGhpbngtYnVpbGQnIGNvbW1hbmQgd2FzIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHlvdSBoYXZlIFNwaGlueA0KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKaW5kZXggODhiOTRlYS4uNGZjNmFmMCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKQEAgLTQ3MSwxMCArNDcxLDEwIEBACiAgICBkZWNvcmF0b3JzOiBgZGVjb3JhdG9yYCsKICAgIGRlY29yYXRvcjogIkAiIGBkb3R0ZWRfbmFtZWAgWyIoIiBbYGFyZ3VtZW50X2xpc3RgIFsiLCJdXSAiKSJdIE5FV0xJTkUKICAgIGRvdHRlZF9uYW1lOiBgaWRlbnRpZmllcmAgKCIuIiBgaWRlbnRpZmllcmApKgotICAgcGFyYW1ldGVyX2xpc3Q6IChgZGVmcGFyYW1ldGVyYCAiLCIpKgotICAgICAgICAgICAgICAgICA6IHwgIioiIFtgcGFyYW1ldGVyYF0gKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgIioqIiBgcGFyYW1ldGVyYF0KLSAgICAgICAgICAgICAgICAgOiB8ICIqKiIgYHBhcmFtZXRlcmAKLSAgICAgICAgICAgICAgICAgOiB8IGBkZWZwYXJhbWV0ZXJgIFsiLCJdICkKKyAgIHBhcmFtZXRlcl9saXN0OiBgZGVmcGFyYW1ldGVyYCAoIiwiIGBkZWZwYXJhbWV0ZXJgKSogWyIsIiBbYHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzYF1dCisgICAgICAgICAgICAgICAgIDogfCBgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NgCisgICBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnczogIioiIFtgcGFyYW1ldGVyYF0gKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgWyIqKiIgYHBhcmFtZXRlcmAgWyIsIl1dXQorICAgICAgICAgICAgICAgICAgICAgICAgIDogfCAiKioiIGBwYXJhbWV0ZXJgIFsiLCJdCiAgICBwYXJhbWV0ZXI6IGBpZGVudGlmaWVyYCBbIjoiIGBleHByZXNzaW9uYF0KICAgIGRlZnBhcmFtZXRlcjogYHBhcmFtZXRlcmAgWyI9IiBgZXhwcmVzc2lvbmBdCiAgICBmdW5jbmFtZTogYGlkZW50aWZpZXJgCkBAIC01NDYsMTEgKzU0NiwxMiBAQAogZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgbWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIKIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbSBrZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0CiB2YWx1ZXMuICBJZiB0aGUgZm9ybSAiYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlCi1yZWNlaXZpbmcgYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYKLXRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldyBkaWN0aW9uYXJ5Ci1yZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LgotUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQKLW1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLgorcmVjZWl2aW5nIGFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4KK0lmIHRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldworb3JkZXJlZCBtYXBwaW5nIHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEKK25ldyBlbXB0eSBtYXBwaW5nIG9mIHRoZSBzYW1lIHR5cGUuICBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IKKyJgYCppZGVudGlmaWVyYGAiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkCit1c2VkIGtleXdvcmQgYXJndW1lbnRzLgogCiAuLiBpbmRleDo6IHBhaXI6IGZ1bmN0aW9uOyBhbm5vdGF0aW9ucwogCkBAIC02MzIsNiArNjMzLDExIEBACiBkaWN0aW9uYXJ5LiAgVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsCiBuYW1lc3BhY2UuCiAKK1RoZSBvcmRlciBpbiB3aGljaCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcyBib2R5IGlzIHByZXNlcnZlZAoraW4gdGhlIG5ldyBjbGFzcydzIGBgX19kaWN0X19gYC4gIE5vdGUgdGhhdCB0aGlzIGlzIHJlbGlhYmxlIG9ubHkgcmlnaHQKK2FmdGVyIHRoZSBjbGFzcyBpcyBjcmVhdGVkIGFuZCBvbmx5IGZvciBjbGFzc2VzIHRoYXQgd2VyZSBkZWZpbmVkIHVzaW5nCit0aGUgZGVmaW5pdGlvbiBzeW50YXguCisKIENsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgOnJlZjpgbWV0YWNsYXNzZXMgPG1ldGFjbGFzc2VzPmAuCiAKIENsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucywgOjoKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdCBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAppbmRleCBiNzYzZjEwLi45NjE5ZTUzIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CkBAIC02ODYsMTAgKzY4NiwyOCBAQAogICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sCiAgICBgYG0ueCA9IDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgogCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2RvY19fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2ZpbGVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19hbm5vdGF0aW9uc19fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgcGFpcjogbW9kdWxlOyBuYW1lc3BhY2UKKworICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IDphdHRyOmBfX25hbWVfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWU7CisgICA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZgorICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2Fubm90YXRpb25zX19gIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgIDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9ucyA8dmFyaWFibGUgYW5ub3RhdGlvbj5gIGNvbGxlY3RlZCBkdXJpbmcgbW9kdWxlCisgICBib2R5IGV4ZWN1dGlvbjsgOmF0dHI6YF9fZmlsZV9fYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUKKyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgOmF0dHI6YF9fZmlsZV9fYAorICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQyBtb2R1bGVzCisgICB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzCisgICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZAorICAgbGlicmFyeSBmaWxlLgorCiAgICAuLiBpbmRleDo6IHNpbmdsZTogX19kaWN0X18gKG1vZHVsZSBhdHRyaWJ1dGUpCiAKLSAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGlzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgYXMgYQotICAgZGljdGlvbmFyeSBvYmplY3QuCisgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUgbW9kdWxlJ3MKKyAgIG5hbWVzcGFjZSBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LgogCiAgICAuLiBpbXBsLWRldGFpbDo6CiAKQEAgLTY5OCwyMSArNzE2LDYgQEAKICAgICAgIGRpY3Rpb25hcnkgc3RpbGwgaGFzIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkKICAgICAgIG9yIGtlZXAgdGhlIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuCiAKLSAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCi0gICAgICBzaW5nbGU6IF9fZG9jX18gKG1vZHVsZSBhdHRyaWJ1dGUpCi0gICAgICBzaW5nbGU6IF9fZmlsZV9fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgcGFpcjogbW9kdWxlOyBuYW1lc3BhY2UKLQotICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IDphdHRyOmBfX25hbWVfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWU7Ci0gICA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZgotICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCi0gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKLSAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcwotICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcwotICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKLSAgIGxpYnJhcnkgZmlsZS4KLQogQ3VzdG9tIGNsYXNzZXMKICAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZSBzZWN0aW9uCiAgICA6cmVmOmBjbGFzc2ApLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4KQEAgLTc2MSwxMyArNzY0LDE3IEBACiAgICAgICBzaW5nbGU6IF9fZGljdF9fIChjbGFzcyBhdHRyaWJ1dGUpCiAgICAgICBzaW5nbGU6IF9fYmFzZXNfXyAoY2xhc3MgYXR0cmlidXRlKQogICAgICAgc2luZ2xlOiBfX2RvY19fIChjbGFzcyBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fYW5ub3RhdGlvbnNfXyAoY2xhc3MgYXR0cmlidXRlKQogCiAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6IDphdHRyOmB+ZGVmaW5pdGlvbi5fX25hbWVfX2AgaXMgdGhlIGNsYXNzIG5hbWU7IDphdHRyOmBfX21vZHVsZV9fYCBpcwogICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGlzIHRoZQogICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzcydzIG5hbWVzcGFjZTsgOmF0dHI6YH5jbGFzcy5fX2Jhc2VzX19gIGlzIGEKICAgIHR1cGxlIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGUKICAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgOmF0dHI6YF9fZG9jX19gIGlzIHRoZQotICAgY2xhc3MncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYgdW5kZWZpbmVkLgorICAgY2xhc3MncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYgdW5kZWZpbmVkOworICAgOmF0dHI6YF9fYW5ub3RhdGlvbnNfX2AgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZworICAgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAgY29sbGVjdGVkIGR1cmluZworICAgY2xhc3MgYm9keSBleGVjdXRpb24uCiAKIENsYXNzIGluc3RhbmNlcwogICAgLi4gaW5kZXg6OgpAQCAtMTA2Myw2ICsxMDcwLDEyIEBACiBvcGVyYXRpb24gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseQogOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9yIDpleGM6YFR5cGVFcnJvcmApLgogCitTZXR0aW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gYGBOb25lYGAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiAgRm9yIGV4YW1wbGUsIGlmIGEgY2xhc3Mgc2V0cworOm1ldGg6YF9faXRlcl9fYCB0byBgYE5vbmVgYCwgdGhlIGNsYXNzIGlzIG5vdCBpdGVyYWJsZSwgc28gY2FsbGluZworOmZ1bmM6YGl0ZXJgIG9uIGl0cyBpbnN0YW5jZXMgd2lsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgKHdpdGhvdXQKK2ZhbGxpbmcgYmFjayB0byA6bWV0aDpgX19nZXRpdGVtX19gKS4gWyNdXworCiBXaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzIGltcG9ydGFudCB0aGF0CiB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0IG1ha2VzIHNlbnNlIGZvciB0aGUKIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lIHNlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsCkBAIC0xMjMzLDggKzEyNDYsOSBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYykKIAotICAgQ2FsbGVkIGJ5IHRoZSA6ZnVuYzpgZm9ybWF0YCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlCi0gICA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kIG9mIGNsYXNzIDpjbGFzczpgc3RyYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiCisgICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBmb3JtYXRgIGJ1aWx0LWluIGZ1bmN0aW9uLAorICAgYW5kIGJ5IGV4dGVuc2lvbiwgZXZhbHVhdGlvbiBvZiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzCisgICA8Zi1zdHJpbmdzPmAgYW5kIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kLCB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIKICAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMKICAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuCiAgICBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZQpAQCAtMTQ5MSw2ICsxNTA1LDE0IEBACiAgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXIgY2xhc3MuCiAKIAorLi4gbWV0aG9kOjogb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSkKKworICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyBjcmVhdGVkLiBUaGUKKyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBUaGUgYXR0cmlidXRlIDphdHRyOmBfX29iamNsYXNzX19gIGlzIGludGVycHJldGVkIGJ5IHRoZSA6bW9kOmBpbnNwZWN0YCBtb2R1bGUKIGFzIHNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXMKIGFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzcyBhdHRyaWJ1dGVzKS4KQEAgLTE2MjgsMTEgKzE2NTAsNTYgQEAKICogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lICpfX3Nsb3RzX18qLgogCiAKLS4uIF9tZXRhY2xhc3NlczoKKy4uIF9jbGFzcy1jdXN0b21pemF0aW9uOgogCiBDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICpfX2luaXRfc3ViY2xhc3NfXyogaXMKK2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgY2xhc3NlcyB3aGljaAorY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBjbGFzcworZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlIHNwZWNpZmljIGNsYXNzIHRoZXkncmUKK2FwcGxpZWQgdG8sIGBgX19pbml0X3N1YmNsYXNzX19gYCBzb2xlbHkgYXBwbGllcyB0byBmdXR1cmUgc3ViY2xhc3NlcyBvZiB0aGUKK2NsYXNzIGRlZmluaW5nIHRoZSBtZXRob2QuCisKKy4uIGNsYXNzbWV0aG9kOjogb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscykKKworICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzIHN1YmNsYXNzZWQuCisgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgaW5zdGFuY2UgbWV0aG9kLAorICAgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyBtZXRob2QuCisKKyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgcGFzc2VkIHRvCisgICB0aGUgcGFyZW50J3MgY2xhc3MgYGBfX2luaXRfc3ViY2xhc3NfX2BgLiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoCisgICBvdGhlciBjbGFzc2VzIHVzaW5nIGBgX19pbml0X3N1YmNsYXNzX19gYCwgb25lIHNob3VsZCB0YWtlIG91dCB0aGUKKyAgIG5lZWRlZCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UKKyAgIGNsYXNzLCBhcyBpbjo6CisKKyAgICAgICBjbGFzcyBQaGlsb3NvcGhlcjoKKyAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgY2xzLmRlZmF1bHRfbmFtZSA9IGRlZmF1bHRfbmFtZQorCisgICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCBkZWZhdWx0X25hbWU9IkJydWNlIik6CisgICAgICAgICAgIHBhc3MKKworICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYGBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gYCBkb2VzCisgICBub3RoaW5nLCBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGUgbWV0YWNsYXNzIGhpbnQgYGBtZXRhY2xhc3NgYCBpcyBjb25zdW1lZCBieSB0aGUgcmVzdCBvZiB0aGUgdHlwZQorICAgICAgbWFjaGluZXJ5LCBhbmQgaXMgbmV2ZXIgcGFzc2VkIHRvIGBgX19pbml0X3N1YmNsYXNzX19gYCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICBUaGUgYWN0dWFsIG1ldGFjbGFzcyAocmF0aGVyIHRoYW4gdGhlIGV4cGxpY2l0IGhpbnQpIGNhbiBiZSBhY2Nlc3NlZCBhcworICAgICAgYGB0eXBlKGNscylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gX21ldGFjbGFzc2VzOgorCitNZXRhY2xhc3NlcworXl5eXl5eXl5eXl4KKwogQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgOmZ1bmM6YHR5cGVgLiBUaGUgY2xhc3MgYm9keSBpcwogZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZQogcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKWBgLgpAQCAtMTY5MCw3ICsxNzU3LDcgQEAKIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZSBmcm9tIHRoZSBjbGFzcyBkZWZpbml0aW9uKS4KIAogSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gYGBfX3ByZXBhcmVfX2BgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3MgbmFtZXNwYWNlCi1pcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSA6ZnVuYzpgZGljdGAgaW5zdGFuY2UuCitpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSBvcmRlcmVkIG1hcHBpbmcuCiAKIC4uIHNlZWFsc286OgogCkBAIC0xNzM0LDkgKzE4MDEsOSBAQAogaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy4KIAogV2hlbiBhIG5ldyBjbGFzcyBpcyBjcmVhdGVkIGJ5IGBgdHlwZS5fX25ld19fYGAsIHRoZSBvYmplY3QgcHJvdmlkZWQgYXMgdGhlCi1uYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIHN0YW5kYXJkIFB5dGhvbiBkaWN0aW9uYXJ5IGFuZCB0aGUgb3JpZ2luYWwKLW9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBiZWNvbWVzIHRoZSA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgYXR0cmlidXRlCi1vZiB0aGUgY2xhc3Mgb2JqZWN0LgorbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBuZXcgb3JkZXJlZCBtYXBwaW5nIGFuZCB0aGUgb3JpZ2luYWwKK29iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBpcyB3cmFwcGVkIGluIGEgcmVhZC1vbmx5IHByb3h5LCB3aGljaAorYmVjb21lcyB0aGUgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3Mgb2JqZWN0LgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjA1OSw3ICsyMTI2LDcgQEAKICAgIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYEBgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLAogICAgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCwgYGB8YGApIHdpdGggcmVmbGVjdGVkCiAgICAoc3dhcHBlZCkgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcwotICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudAorICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFsjXV8gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50CiAgICB0eXBlcy4gWyNdXyBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzCiAgICBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIDptZXRoOmBfX3JzdWJfX2AgbWV0aG9kLCBgYHkuX19yc3ViX18oeClgYAogICAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJucyAqTm90SW1wbGVtZW50ZWQqLgpAQCAtMjQ3NSw2ICsyNTQyLDE3IEBACiAgICBjb250cm9sbGVkIGNvbmRpdGlvbnMuIEl0IGdlbmVyYWxseSBpc24ndCBhIGdvb2QgaWRlYSB0aG91Z2gsIHNpbmNlIGl0IGNhbgogICAgbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXMgaGFuZGxlZCBpbmNvcnJlY3RseS4KIAorLi4gWyNdIFRoZSA6bWV0aDpgX19oYXNoX19gLCA6bWV0aDpgX19pdGVyX19gLCA6bWV0aDpgX19yZXZlcnNlZF9fYCwgYW5kCisgICA6bWV0aDpgX19jb250YWluc19fYCBtZXRob2RzIGhhdmUgc3BlY2lhbCBoYW5kbGluZyBmb3IgdGhpczsgb3RoZXJzCisgICB3aWxsIHN0aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCwgYnV0IG1heSBkbyBzbyBieSByZWx5aW5nIG9uCisgICB0aGUgYmVoYXZpb3IgdGhhdCBgYE5vbmVgYCBpcyBub3QgY2FsbGFibGUuCisKKy4uIFsjXSAiRG9lcyBub3Qgc3VwcG9ydCIgaGVyZSBtZWFucyB0aGF0IHRoZSBjbGFzcyBoYXMgbm8gc3VjaCBtZXRob2QsIG9yCisgICB0aGUgbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgRG8gbm90IHNldCB0aGUgbWV0aG9kIHRvCisgICBgYE5vbmVgYCBpZiB5b3Ugd2FudCB0byBmb3JjZSBmYWxsYmFjayB0byB0aGUgcmlnaHQgb3BlcmFuZCdzIHJlZmxlY3RlZAorICAgbWV0aG9kLS10aGF0IHdpbGwgaW5zdGVhZCBoYXZlIHRoZSBvcHBvc2l0ZSBlZmZlY3Qgb2YgZXhwbGljaXRseQorICAgKmJsb2NraW5nKiBzdWNoIGZhbGxiYWNrLgorCiAuLiBbI10gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLXJlZmxlY3RlZCBtZXRob2QKICAgIChzdWNoIGFzIDptZXRoOmBfX2FkZF9fYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlCiAgICByZWZsZWN0ZWQgbWV0aG9kIGlzIG5vdCBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKaW5kZXggNjQzMDJiOC4uNWUyYzFjOCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApAQCAtMzYsNyArMzYsNyBAQAogCiBXaGVuIGEgbW9kdWxlIGlzIGZpcnN0IGltcG9ydGVkLCBQeXRob24gc2VhcmNoZXMgZm9yIHRoZSBtb2R1bGUgYW5kIGlmIGZvdW5kLAogaXQgY3JlYXRlcyBhIG1vZHVsZSBvYmplY3QgWyNmbm1vXV8sIGluaXRpYWxpemluZyBpdC4gIElmIHRoZSBuYW1lZCBtb2R1bGUKLWNhbm5vdCBiZSBmb3VuZCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIFB5dGhvbiBpbXBsZW1lbnRzIHZhcmlvdXMKK2Nhbm5vdCBiZSBmb3VuZCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgUHl0aG9uIGltcGxlbWVudHMgdmFyaW91cwogc3RyYXRlZ2llcyB0byBzZWFyY2ggZm9yIHRoZSBuYW1lZCBtb2R1bGUgd2hlbiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpcwogaW52b2tlZC4gIFRoZXNlIHN0cmF0ZWdpZXMgY2FuIGJlIG1vZGlmaWVkIGFuZCBleHRlbmRlZCBieSB1c2luZyB2YXJpb3VzIGhvb2tzCiBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb25zIGJlbG93LgpAQCAtMTY3LDcgKzE2Nyw3IEBACiBUaGlzIG5hbWUgd2lsbCBiZSB1c2VkIGluIHZhcmlvdXMgcGhhc2VzIG9mIHRoZSBpbXBvcnQgc2VhcmNoLCBhbmQgaXQgbWF5IGJlCiB0aGUgZG90dGVkIHBhdGggdG8gYSBzdWJtb2R1bGUsIGUuZy4gYGBmb28uYmFyLmJhemBgLiAgSW4gdGhpcyBjYXNlLCBQeXRob24KIGZpcnN0IHRyaWVzIHRvIGltcG9ydCBgYGZvb2BgLCB0aGVuIGBgZm9vLmJhcmBgLCBhbmQgZmluYWxseSBgYGZvby5iYXIuYmF6YGAuCi1JZiBhbnkgb2YgdGhlIGludGVybWVkaWF0ZSBpbXBvcnRzIGZhaWwsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCitJZiBhbnkgb2YgdGhlIGludGVybWVkaWF0ZSBpbXBvcnRzIGZhaWwsIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4KIAogCiBUaGUgbW9kdWxlIGNhY2hlCkBAIC0xODYsNyArMTg2LDcgQEAKIER1cmluZyBpbXBvcnQsIHRoZSBtb2R1bGUgbmFtZSBpcyBsb29rZWQgdXAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBhbmQgaWYKIHByZXNlbnQsIHRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIHRoZSBtb2R1bGUgc2F0aXNmeWluZyB0aGUgaW1wb3J0LCBhbmQgdGhlCiBwcm9jZXNzIGNvbXBsZXRlcy4gIEhvd2V2ZXIsIGlmIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgdGhlbiBhbgotOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBtaXNzaW5nLCBQeXRob24gd2lsbAorOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIG1pc3NpbmcsIFB5dGhvbiB3aWxsCiBjb250aW51ZSBzZWFyY2hpbmcgZm9yIHRoZSBtb2R1bGUuCiAKIDpkYXRhOmBzeXMubW9kdWxlc2AgaXMgd3JpdGFibGUuICBEZWxldGluZyBhIGtleSBtYXkgbm90IGRlc3Ryb3kgdGhlCkBAIC0xOTQsNyArMTk0LDcgQEAKIGJ1dCBpdCB3aWxsIGludmFsaWRhdGUgdGhlIGNhY2hlIGVudHJ5IGZvciB0aGUgbmFtZWQgbW9kdWxlLCBjYXVzaW5nCiBQeXRob24gdG8gc2VhcmNoIGFuZXcgZm9yIHRoZSBuYW1lZCBtb2R1bGUgdXBvbiBpdHMgbmV4dAogaW1wb3J0LiBUaGUga2V5IGNhbiBhbHNvIGJlIGFzc2lnbmVkIHRvIGBgTm9uZWBgLCBmb3JjaW5nIHRoZSBuZXh0IGltcG9ydAotb2YgdGhlIG1vZHVsZSB0byByZXN1bHQgaW4gYW4gOmV4YzpgSW1wb3J0RXJyb3JgLgorb2YgdGhlIG1vZHVsZSB0byByZXN1bHQgaW4gYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAuCiAKIEJld2FyZSB0aG91Z2gsIGFzIGlmIHlvdSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LAogaW52YWxpZGF0ZSBpdHMgY2FjaGUgZW50cnkgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgYW5kIHRoZW4gcmUtaW1wb3J0IHRoZQpAQCAtMjg4LDggKzI4OCw4IEBACiBJZiB0aGUgbWV0YSBwYXRoIGZpbmRlciBrbm93cyBob3cgdG8gaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYQogc3BlYyBvYmplY3QuICBJZiBpdCBjYW5ub3QgaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYGBOb25lYGAuICBJZgogOmRhdGE6YHN5cy5tZXRhX3BhdGhgIHByb2Nlc3NpbmcgcmVhY2hlcyB0aGUgZW5kIG9mIGl0cyBsaXN0IHdpdGhvdXQgcmV0dXJuaW5nCi1hIHNwZWMsIHRoZW4gYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIEFueSBvdGhlciBleGNlcHRpb25zIHJhaXNlZAotYXJlIHNpbXBseSBwcm9wYWdhdGVkIHVwLCBhYm9ydGluZyB0aGUgaW1wb3J0IHByb2Nlc3MuCithIHNwZWMsIHRoZW4gYSA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBBbnkgb3RoZXIgZXhjZXB0aW9ucworcmFpc2VkIGFyZSBzaW1wbHkgcHJvcGFnYXRlZCB1cCwgYWJvcnRpbmcgdGhlIGltcG9ydCBwcm9jZXNzLgogCiBUaGUgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfc3BlYygpYCBtZXRob2Qgb2YgbWV0YSBwYXRoCiBmaW5kZXJzIGlzIGNhbGxlZCB3aXRoIHR3byBvciB0aHJlZSBhcmd1bWVudHMuICBUaGUgZmlyc3QgaXMgdGhlIGZ1bGx5CkBAIC0yOTgsOSArMjk4LDkgQEAKIHRvcC1sZXZlbCBtb2R1bGVzLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGBgTm9uZWBgLCBidXQgZm9yIHN1Ym1vZHVsZXMgb3IKIHN1YnBhY2thZ2VzLCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyZW50IHBhY2thZ2UncwogYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZS4gSWYgdGhlIGFwcHJvcHJpYXRlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgY2Fubm90Ci1iZSBhY2Nlc3NlZCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIFRoZSB0aGlyZCBhcmd1bWVudCBpcyBhbgotZXhpc3RpbmcgbW9kdWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgdGhlIHRhcmdldCBvZiBsb2FkaW5nIGxhdGVyLiAgVGhlCi1pbXBvcnQgc3lzdGVtIHBhc3NlcyBpbiBhIHRhcmdldCBtb2R1bGUgb25seSBkdXJpbmcgcmVsb2FkLgorYmUgYWNjZXNzZWQsIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIFRoZSB0aGlyZCBhcmd1bWVudAoraXMgYW4gZXhpc3RpbmcgbW9kdWxlIG9iamVjdCB0aGF0IHdpbGwgYmUgdGhlIHRhcmdldCBvZiBsb2FkaW5nIGxhdGVyLgorVGhlIGltcG9ydCBzeXN0ZW0gcGFzc2VzIGluIGEgdGFyZ2V0IG1vZHVsZSBvbmx5IGR1cmluZyByZWxvYWQuCiAKIFRoZSBtZXRhIHBhdGggbWF5IGJlIHRyYXZlcnNlZCBtdWx0aXBsZSB0aW1lcyBmb3IgYSBzaW5nbGUgaW1wb3J0IHJlcXVlc3QuCiBGb3IgZXhhbXBsZSwgYXNzdW1pbmcgbm9uZSBvZiB0aGUgbW9kdWxlcyBpbnZvbHZlZCBoYXMgYWxyZWFkeSBiZWVuIGNhY2hlZCwKQEAgLTU1NCwxOSArNTU0LDMwIEBACiAgICBkZXRhaWxzLgogCiAgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGluc3RlYWQgb2YgYGBfX25hbWVfX2BgIHRvIGNhbGN1bGF0ZSBleHBsaWNpdAotICAgcmVsYXRpdmUgaW1wb3J0cyBmb3IgbWFpbiBtb2R1bGVzLCBhcyBkZWZpbmVkIGluIDpwZXA6YDM2NmAuCisgICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4gSXQgaXMKKyAgIGV4cGVjdGVkIHRvIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgYGBfX3NwZWNfXy5wYXJlbnRgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSB2YWx1ZSBvZiBgYF9fcGFja2FnZV9fYGAgaXMgZXhwZWN0ZWQgdG8gYmUgdGhlIHNhbWUgYXMKKyAgICAgIGBgX19zcGVjX18ucGFyZW50YGAuCiAKIC4uIGF0dHJpYnV0ZTo6IF9fc3BlY19fCiAKICAgIFRoZSBgYF9fc3BlY19fYGAgYXR0cmlidXRlIG11c3QgYmUgc2V0IHRvIHRoZSBtb2R1bGUgc3BlYyB0aGF0IHdhcwotICAgdXNlZCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlLiAgVGhpcyBpcyB1c2VkIHByaW1hcmlseSBmb3IKLSAgIGludHJvc3BlY3Rpb24gYW5kIGR1cmluZyByZWxvYWRpbmcuICBTZXR0aW5nIGBgX19zcGVjX19gYAorICAgdXNlZCB3aGVuIGltcG9ydGluZyB0aGUgbW9kdWxlLiBTZXR0aW5nIGBgX19zcGVjX19gYAogICAgYXBwcm9wcmlhdGVseSBhcHBsaWVzIGVxdWFsbHkgdG8gOnJlZjpgbW9kdWxlcyBpbml0aWFsaXplZCBkdXJpbmcKICAgIGludGVycHJldGVyIHN0YXJ0dXAgPHByb2dyYW1zPmAuICBUaGUgb25lIGV4Y2VwdGlvbiBpcyBgYF9fbWFpbl9fYGAsCiAgICB3aGVyZSBgYF9fc3BlY19fYGAgaXMgOnJlZjpgc2V0IHRvIE5vbmUgaW4gc29tZSBjYXNlcyA8bWFpbl9zcGVjPmAuCiAKKyAgIFdoZW4gYGBfX3BhY2thZ2VfX2BgIGlzIG5vdCBkZWZpbmVkLCBgYF9fc3BlY19fLnBhcmVudGBgIGlzIHVzZWQgYXMKKyAgIGEgZmFsbGJhY2suCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBfX3NwZWNfXy5wYXJlbnRgYCBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgd2hlbiBgYF9fcGFja2FnZV9fYGAgaXMKKyAgICAgIG5vdCBkZWZpbmVkLgorCiAuLiBhdHRyaWJ1dGU6OiBfX3BhdGhfXwogCiAgICBJZiB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSAoZWl0aGVyIHJlZ3VsYXIgb3IgbmFtZXNwYWNlKSwgdGhlIG1vZHVsZQpAQCAtODc2LDcgKzg4Nyw3IEBACiAKIFRvIHNlbGVjdGl2ZWx5IHByZXZlbnQgaW1wb3J0IG9mIHNvbWUgbW9kdWxlcyBmcm9tIGEgaG9vayBlYXJseSBvbiB0aGUKIG1ldGEgcGF0aCAocmF0aGVyIHRoYW4gZGlzYWJsaW5nIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtIGVudGlyZWx5KSwKLWl0IGlzIHN1ZmZpY2llbnQgdG8gcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgIGRpcmVjdGx5IGZyb20KK2l0IGlzIHN1ZmZpY2llbnQgdG8gcmFpc2UgOmV4YzpgTW9kdWxlTm9Gb3VuZEVycm9yYCBkaXJlY3RseSBmcm9tCiA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIuZmluZF9zcGVjYCBpbnN0ZWFkIG9mIHJldHVybmluZwogYGBOb25lYGAuIFRoZSBsYXR0ZXIgaW5kaWNhdGVzIHRoYXQgdGhlIG1ldGEgcGF0aCBzZWFyY2ggc2hvdWxkIGNvbnRpbnVlLAogd2hpbGUgcmFpc2luZyBhbiBleGNlcHRpb24gdGVybWluYXRlcyBpdCBpbW1lZGlhdGVseS4KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CmluZGV4IDM3ZjI1ZjEuLmE3YzZhNjggMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdApAQCAtNDA1LDcgKzQwNSw4IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIHN0cmluZ2xpdGVyYWw6IFtgc3RyaW5ncHJlZml4YF0oYHNob3J0c3RyaW5nYCB8IGBsb25nc3RyaW5nYCkKLSAgIHN0cmluZ3ByZWZpeDogInIiIHwgInUiIHwgIlIiIHwgIlUiCisgICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIiB8ICJmIiB8ICJGIgorICAgICAgICAgICAgICAgOiB8ICJmciIgfCAiRnIiIHwgImZSIiB8ICJGUiIgfCAicmYiIHwgInJGIiB8ICJSZiIgfCAiUkYiCiAgICBzaG9ydHN0cmluZzogIiciIGBzaG9ydHN0cmluZ2l0ZW1gKiAiJyIgfCAnIicgYHNob3J0c3RyaW5naXRlbWAqICciJwogICAgbG9uZ3N0cmluZzogIicnJyIgYGxvbmdzdHJpbmdpdGVtYCogIicnJyIgfCAnIiIiJyBgbG9uZ3N0cmluZ2l0ZW1gKiAnIiIiJwogICAgc2hvcnRzdHJpbmdpdGVtOiBgc2hvcnRzdHJpbmdjaGFyYCB8IGBzdHJpbmdlc2NhcGVzZXFgCkBAIC00NjQsNiArNDY1LDExIEBACiAgICB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbCBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLgogICAgU2VlIDpwZXA6YDQxNGAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKK0Egc3RyaW5nIGxpdGVyYWwgd2l0aCBgYCdmJ2BgIG9yIGBgJ0YnYGAgaW4gaXRzIHByZWZpeCBpcyBhCis6ZGZuOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxgOyBzZWUgOnJlZjpgZi1zdHJpbmdzYC4gIFRoZSBgYCdmJ2BgIG1heSBiZQorY29tYmluZWQgd2l0aCBgYCdyJ2BgLCBidXQgbm90IHdpdGggYGAnYidgYCBvciBgYCd1J2BgLCB0aGVyZWZvcmUgcmF3Citmb3JtYXR0ZWQgc3RyaW5ncyBhcmUgcG9zc2libGUsIGJ1dCBmb3JtYXR0ZWQgYnl0ZXMgbGl0ZXJhbHMgYXJlIG5vdC4KKwogSW4gdHJpcGxlLXF1b3RlZCBsaXRlcmFscywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWQgKGFuZCBhcmUKIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvdyB0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQQogInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGUgbGl0ZXJhbCwgaS5lLiBlaXRoZXIgYGAnYGAgb3IgYGAiYGAuKQpAQCAtNTU0LDYgKzU2MCwxMCBAQAogZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGZhbGwgaW50byB0aGUgY2F0ZWdvcnkgb2YKIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlcyBsaXRlcmFscy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIHByb2R1Y2UgYSBEZXByZWNhdGlvbldhcm5pbmcuICBJbgorICAgICAgc29tZSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24gdGhleSB3aWxsIGJlIGEgU3ludGF4RXJyb3IuCisKIEV2ZW4gaW4gYSByYXcgbGl0ZXJhbCwgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsIGJ1dCB0aGUKIGJhY2tzbGFzaCByZW1haW5zIGluIHRoZSByZXN1bHQ7IGZvciBleGFtcGxlLCBgYHIiXCIiYGAgaXMgYSB2YWxpZCBzdHJpbmcKIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlIHF1b3RlOyBgYHIiXCJgYApAQCAtNTgzLDcgKzU5MywxMDYgQEAKIE5vdGUgdGhhdCB0aGlzIGZlYXR1cmUgaXMgZGVmaW5lZCBhdCB0aGUgc3ludGFjdGljYWwgbGV2ZWwsIGJ1dCBpbXBsZW1lbnRlZCBhdAogY29tcGlsZSB0aW1lLiAgVGhlICcrJyBvcGVyYXRvciBtdXN0IGJlIHVzZWQgdG8gY29uY2F0ZW5hdGUgc3RyaW5nIGV4cHJlc3Npb25zCiBhdCBydW4gdGltZS4gIEFsc28gbm90ZSB0aGF0IGxpdGVyYWwgY29uY2F0ZW5hdGlvbiBjYW4gdXNlIGRpZmZlcmVudCBxdW90aW5nCi1zdHlsZXMgZm9yIGVhY2ggY29tcG9uZW50IChldmVuIG1peGluZyByYXcgc3RyaW5ncyBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmdzKS4KK3N0eWxlcyBmb3IgZWFjaCBjb21wb25lbnQgKGV2ZW4gbWl4aW5nIHJhdyBzdHJpbmdzIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZ3MpLAorYW5kIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgbWF5IGJlIGNvbmNhdGVuYXRlZCB3aXRoIHBsYWluIHN0cmluZyBsaXRlcmFscy4KKworCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbAorICAgc2luZ2xlOiBpbnRlcnBvbGF0ZWQgc3RyaW5nIGxpdGVyYWwKKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0ZWQgbGl0ZXJhbAorICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRlZCBsaXRlcmFsCisgICBzaW5nbGU6IGYtc3RyaW5nCisuLiBfZi1zdHJpbmdzOgorCitGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitBIDpkZm46YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbGAgb3IgOmRmbjpgZi1zdHJpbmdgIGlzIGEgc3RyaW5nIGxpdGVyYWwKK3RoYXQgaXMgcHJlZml4ZWQgd2l0aCBgYCdmJ2BgIG9yIGBgJ0YnYGAuICBUaGVzZSBzdHJpbmdzIG1heSBjb250YWluCityZXBsYWNlbWVudCBmaWVsZHMsIHdoaWNoIGFyZSBleHByZXNzaW9ucyBkZWxpbWl0ZWQgYnkgY3VybHkgYnJhY2VzIGBge31gYC4KK1doaWxlIG90aGVyIHN0cmluZyBsaXRlcmFscyBhbHdheXMgaGF2ZSBhIGNvbnN0YW50IHZhbHVlLCBmb3JtYXR0ZWQgc3RyaW5ncworYXJlIHJlYWxseSBleHByZXNzaW9ucyBldmFsdWF0ZWQgYXQgcnVuIHRpbWUuCisKK0VzY2FwZSBzZXF1ZW5jZXMgYXJlIGRlY29kZWQgbGlrZSBpbiBvcmRpbmFyeSBzdHJpbmcgbGl0ZXJhbHMgKGV4Y2VwdCB3aGVuCithIGxpdGVyYWwgaXMgYWxzbyBtYXJrZWQgYXMgYSByYXcgc3RyaW5nKS4gIEFmdGVyIGRlY29kaW5nLCB0aGUgZ3JhbW1hcgorZm9yIHRoZSBjb250ZW50cyBvZiB0aGUgc3RyaW5nIGlzOgorCisuLiBwcm9kdWN0aW9ubGlzdDo6CisgICBmX3N0cmluZzogKGBsaXRlcmFsX2NoYXJgIHwgInt7IiB8ICJ9fSIgfCBgcmVwbGFjZW1lbnRfZmllbGRgKSoKKyAgIHJlcGxhY2VtZW50X2ZpZWxkOiAieyIgYGZfZXhwcmVzc2lvbmAgWyIhIiBgY29udmVyc2lvbmBdIFsiOiIgYGZvcm1hdF9zcGVjYF0gIn0iCisgICBmX2V4cHJlc3Npb246IChgY29uZGl0aW9uYWxfZXhwcmVzc2lvbmAgfCAiKiIgYG9yX2V4cHJgKQorICAgICAgICAgICAgICAgOiAgICgiLCIgYGNvbmRpdGlvbmFsX2V4cHJlc3Npb25gIHwgIiwiICIqIiBgb3JfZXhwcmApKiBbIiwiXQorICAgICAgICAgICAgICAgOiB8IGB5aWVsZF9leHByZXNzaW9uYAorICAgY29udmVyc2lvbjogInMiIHwgInIiIHwgImEiCisgICBmb3JtYXRfc3BlYzogKGBsaXRlcmFsX2NoYXJgIHwgTlVMTCB8IGByZXBsYWNlbWVudF9maWVsZGApKgorICAgbGl0ZXJhbF9jaGFyOiA8YW55IGNvZGUgcG9pbnQgZXhjZXB0ICJ7IiwgIn0iIG9yIE5VTEw+CisKK1RoZSBwYXJ0cyBvZiB0aGUgc3RyaW5nIG91dHNpZGUgY3VybHkgYnJhY2VzIGFyZSB0cmVhdGVkIGxpdGVyYWxseSwKK2V4Y2VwdCB0aGF0IGFueSBkb3VibGVkIGN1cmx5IGJyYWNlcyBgYCd7eydgYCBvciBgYCd9fSdgYCBhcmUgcmVwbGFjZWQKK3dpdGggdGhlIGNvcnJlc3BvbmRpbmcgc2luZ2xlIGN1cmx5IGJyYWNlLiAgQSBzaW5nbGUgb3BlbmluZyBjdXJseQorYnJhY2tldCBgYCd7J2BgIG1hcmtzIGEgcmVwbGFjZW1lbnQgZmllbGQsIHdoaWNoIHN0YXJ0cyB3aXRoIGEKK1B5dGhvbiBleHByZXNzaW9uLiAgQWZ0ZXIgdGhlIGV4cHJlc3Npb24sIHRoZXJlIG1heSBiZSBhIGNvbnZlcnNpb24gZmllbGQsCitpbnRyb2R1Y2VkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgJyEnYGAuICBBIGZvcm1hdCBzcGVjaWZpZXIgbWF5IGFsc28KK2JlIGFwcGVuZGVkLCBpbnRyb2R1Y2VkIGJ5IGEgY29sb24gYGAnOidgYC4gIEEgcmVwbGFjZW1lbnQgZmllbGQgZW5kcword2l0aCBhIGNsb3NpbmcgY3VybHkgYnJhY2tldCBgYCd9J2BgLgorCitFeHByZXNzaW9ucyBpbiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSB0cmVhdGVkIGxpa2UgcmVndWxhcgorUHl0aG9uIGV4cHJlc3Npb25zIHN1cnJvdW5kZWQgYnkgcGFyZW50aGVzZXMsIHdpdGggYSBmZXcgZXhjZXB0aW9ucy4KK0FuIGVtcHR5IGV4cHJlc3Npb24gaXMgbm90IGFsbG93ZWQsIGFuZCBhIDprZXl3b3JkOmBsYW1iZGFgIGV4cHJlc3Npb24KK211c3QgYmUgc3Vycm91bmRlZCBieSBleHBsaWNpdCBwYXJlbnRoZXNlcy4gIFJlcGxhY2VtZW50IGV4cHJlc3Npb25zCitjYW4gY29udGFpbiBsaW5lIGJyZWFrcyAoZS5nLiBpbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MpLCBidXQgdGhleQorY2Fubm90IGNvbnRhaW4gY29tbWVudHMuICBFYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGluIHRoZSBjb250ZXh0Cit3aGVyZSB0aGUgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsIGFwcGVhcnMsIGluIG9yZGVyIGZyb20gbGVmdCB0byByaWdodC4KKworSWYgYSBjb252ZXJzaW9uIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdCBvZiBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uCitpcyBjb252ZXJ0ZWQgYmVmb3JlIGZvcm1hdHRpbmcuICBDb252ZXJzaW9uIGBgJyFzJ2BgIGNhbGxzIDpmdW5jOmBzdHJgIG9uCit0aGUgcmVzdWx0LCBgYCchcidgYCBjYWxscyA6ZnVuYzpgcmVwcmAsIGFuZCBgYCchYSdgYCBjYWxscyA6ZnVuYzpgYXNjaWlgLgorCitUaGUgcmVzdWx0IGlzIHRoZW4gZm9ybWF0dGVkIHVzaW5nIHRoZSA6ZnVuYzpgZm9ybWF0YCBwcm90b2NvbC4gIFRoZQorZm9ybWF0IHNwZWNpZmllciBpcyBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX2Zvcm1hdF9fYCBtZXRob2Qgb2YgdGhlCitleHByZXNzaW9uIG9yIGNvbnZlcnNpb24gcmVzdWx0LiAgQW4gZW1wdHkgc3RyaW5nIGlzIHBhc3NlZCB3aGVuIHRoZQorZm9ybWF0IHNwZWNpZmllciBpcyBvbWl0dGVkLiAgVGhlIGZvcm1hdHRlZCByZXN1bHQgaXMgdGhlbiBpbmNsdWRlZCBpbgordGhlIGZpbmFsIHZhbHVlIG9mIHRoZSB3aG9sZSBzdHJpbmcuCisKK1RvcC1sZXZlbCBmb3JtYXQgc3BlY2lmaWVycyBtYXkgaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzLgorVGhlc2UgbmVzdGVkIGZpZWxkcyBtYXkgaW5jbHVkZSB0aGVpciBvd24gY29udmVyc2lvbiBmaWVsZHMgYW5kCitmb3JtYXQgc3BlY2lmaWVycywgYnV0IG1heSBub3QgaW5jbHVkZSBtb3JlIGRlZXBseS1uZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzLgorCitGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIG1heSBiZSBjb25jYXRlbmF0ZWQsIGJ1dCByZXBsYWNlbWVudCBmaWVsZHMKK2Nhbm5vdCBiZSBzcGxpdCBhY3Jvc3MgbGl0ZXJhbHMuCisKK1NvbWUgZXhhbXBsZXMgb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsczo6CisKKyAgID4+PiBuYW1lID0gIkZyZWQiCisgICA+Pj4gZiJIZSBzYWlkIGhpcyBuYW1lIGlzIHtuYW1lIXJ9LiIKKyAgICJIZSBzYWlkIGhpcyBuYW1lIGlzICdGcmVkJy4iCisgICA+Pj4gZiJIZSBzYWlkIGhpcyBuYW1lIGlzIHtyZXByKG5hbWUpfS4iICAjIHJlcHIoKSBpcyBlcXVpdmFsZW50IHRvICFyCisgICAiSGUgc2FpZCBoaXMgbmFtZSBpcyAnRnJlZCcuIgorICAgPj4+IHdpZHRoID0gMTAKKyAgID4+PiBwcmVjaXNpb24gPSA0CisgICA+Pj4gdmFsdWUgPSBkZWNpbWFsLkRlY2ltYWwoIjEyLjM0NTY3IikKKyAgID4+PiBmInJlc3VsdDoge3ZhbHVlOnt3aWR0aH0ue3ByZWNpc2lvbn19IiAgIyBuZXN0ZWQgZmllbGRzCisgICAncmVzdWx0OiAgICAgIDEyLjM1JworCitBIGNvbnNlcXVlbmNlIG9mIHNoYXJpbmcgdGhlIHNhbWUgc3ludGF4IGFzIHJlZ3VsYXIgc3RyaW5nIGxpdGVyYWxzIGlzCit0aGF0IGNoYXJhY3RlcnMgaW4gdGhlIHJlcGxhY2VtZW50IGZpZWxkcyBtdXN0IG5vdCBjb25mbGljdCB3aXRoIHRoZQorcXVvdGluZyB1c2VkIGluIHRoZSBvdXRlciBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwuICBBbHNvLCBlc2NhcGUKK3NlcXVlbmNlcyBub3JtYWxseSBhcHBseSB0byB0aGUgb3V0ZXIgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsLAorcmF0aGVyIHRoYW4gaW5uZXIgc3RyaW5nIGxpdGVyYWxzOjoKKworICAgZiJhYmMge2FbIngiXX0gZGVmIiAgICAjIGVycm9yOiBvdXRlciBzdHJpbmcgbGl0ZXJhbCBlbmRlZCBwcmVtYXR1cmVseQorICAgZiJhYmMge2FbXCJ4XCJdfSBkZWYiICAjIHdvcmthcm91bmQ6IGVzY2FwZSB0aGUgaW5uZXIgcXVvdGVzCisgICBmImFiYyB7YVsneCddfSBkZWYiICAgICMgd29ya2Fyb3VuZDogdXNlIGRpZmZlcmVudCBxdW90aW5nCisKKyAgIGYibmV3bGluZToge29yZCgnXG4nKX0iICAgIyBlcnJvcjogbGl0ZXJhbCBsaW5lIGJyZWFrIGluIGlubmVyIHN0cmluZworICAgZiJuZXdsaW5lOiB7b3JkKCdcXG4nKX0iICAjIHdvcmthcm91bmQ6IGRvdWJsZSBlc2NhcGluZworICAgZnIibmV3bGluZToge29yZCgnXG4nKX0iICAjIHdvcmthcm91bmQ6IHJhdyBvdXRlciBzdHJpbmcKKworU2VlIGFsc28gOnBlcDpgNDk4YCBmb3IgdGhlIHByb3Bvc2FsIHRoYXQgYWRkZWQgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscywKK2FuZCA6bWV0aDpgc3RyLmZvcm1hdGAsIHdoaWNoIHVzZXMgYSByZWxhdGVkIGZvcm1hdCBzdHJpbmcgbWVjaGFuaXNtLgogCiAKIC4uIF9udW1iZXJzOgpAQCAtNjEyLDIwICs3MjEsMjQgQEAKIEludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIGludGVnZXI6IGBkZWNpbWFsaW50ZWdlcmAgfCBgb2N0aW50ZWdlcmAgfCBgaGV4aW50ZWdlcmAgfCBgYmluaW50ZWdlcmAKLSAgIGRlY2ltYWxpbnRlZ2VyOiBgbm9uemVyb2RpZ2l0YCBgZGlnaXRgKiB8ICIwIisKKyAgIGludGVnZXI6IGBkZWNpbnRlZ2VyYCB8IGBiaW5pbnRlZ2VyYCB8IGBvY3RpbnRlZ2VyYCB8IGBoZXhpbnRlZ2VyYAorICAgZGVjaW50ZWdlcjogYG5vbnplcm9kaWdpdGAgKFsiXyJdIGBkaWdpdGApKiB8ICIwIisgKFsiXyJdICIwIikqCisgICBiaW5pbnRlZ2VyOiAiMCIgKCJiIiB8ICJCIikgKFsiXyJdIGBiaW5kaWdpdGApKworICAgb2N0aW50ZWdlcjogIjAiICgibyIgfCAiTyIpIChbIl8iXSBgb2N0ZGlnaXRgKSsKKyAgIGhleGludGVnZXI6ICIwIiAoIngiIHwgIlgiKSAoWyJfIl0gYGhleGRpZ2l0YCkrCiAgICBub256ZXJvZGlnaXQ6ICIxIi4uLiI5IgogICAgZGlnaXQ6ICIwIi4uLiI5IgotICAgb2N0aW50ZWdlcjogIjAiICgibyIgfCAiTyIpIGBvY3RkaWdpdGArCi0gICBoZXhpbnRlZ2VyOiAiMCIgKCJ4IiB8ICJYIikgYGhleGRpZ2l0YCsKLSAgIGJpbmludGVnZXI6ICIwIiAoImIiIHwgIkIiKSBgYmluZGlnaXRgKworICAgYmluZGlnaXQ6ICIwIiB8ICIxIgogICAgb2N0ZGlnaXQ6ICIwIi4uLiI3IgogICAgaGV4ZGlnaXQ6IGBkaWdpdGAgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiIKLSAgIGJpbmRpZ2l0OiAiMCIgfCAiMSIKIAogVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXQgY2FuIGJlCiBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS4KIAorVW5kZXJzY29yZXMgYXJlIGlnbm9yZWQgZm9yIGRldGVybWluaW5nIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBsaXRlcmFsLiAgVGhleQorY2FuIGJlIHVzZWQgdG8gZ3JvdXAgZGlnaXRzIGZvciBlbmhhbmNlZCByZWFkYWJpbGl0eS4gIE9uZSB1bmRlcnNjb3JlIGNhbiBvY2N1cgorYmV0d2VlbiBkaWdpdHMsIGFuZCBhZnRlciBiYXNlIHNwZWNpZmllcnMgbGlrZSBgYDB4YGAuCisKIE5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLiBUaGlzIGlzCiBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob24gdXNlZCBiZWZvcmUgdmVyc2lvbgogMy4wLgpAQCAtNjM0LDYgKzc0NywxMCBAQAogCiAgICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTEKICAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweGRlYWRiZWVmCisgICAgICAgICAxMDBfMDAwXzAwMF8wMDAgICAgICAgICAgICAgICAgICAgMGJfMTExMF8wMTAxCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yIGdyb3VwaW5nIHB1cnBvc2VzIGluIGxpdGVyYWxzLgogCiAKIC4uIF9mbG9hdGluZzoKQEAgLTY0NSwyMyArNzYyLDI4IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGZsb2F0bnVtYmVyOiBgcG9pbnRmbG9hdGAgfCBgZXhwb25lbnRmbG9hdGAKLSAgIHBvaW50ZmxvYXQ6IFtgaW50cGFydGBdIGBmcmFjdGlvbmAgfCBgaW50cGFydGAgIi4iCi0gICBleHBvbmVudGZsb2F0OiAoYGludHBhcnRgIHwgYHBvaW50ZmxvYXRgKSBgZXhwb25lbnRgCi0gICBpbnRwYXJ0OiBgZGlnaXRgKwotICAgZnJhY3Rpb246ICIuIiBgZGlnaXRgKwotICAgZXhwb25lbnQ6ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGBkaWdpdGArCisgICBwb2ludGZsb2F0OiBbYGRpZ2l0cGFydGBdIGBmcmFjdGlvbmAgfCBgZGlnaXRwYXJ0YCAiLiIKKyAgIGV4cG9uZW50ZmxvYXQ6IChgZGlnaXRwYXJ0YCB8IGBwb2ludGZsb2F0YCkgYGV4cG9uZW50YAorICAgZGlnaXRwYXJ0OiBgZGlnaXRgIChbIl8iXSBgZGlnaXRgKSoKKyAgIGZyYWN0aW9uOiAiLiIgYGRpZ2l0cGFydGAKKyAgIGV4cG9uZW50OiAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBgZGlnaXRwYXJ0YAogCiBOb3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgdXNpbmcgcmFkaXggMTAuCiBGb3IgZXhhbXBsZSwgYGAwNzdlMDEwYGAgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlciBhcyBgYDc3ZTEwYGAuIFRoZQotYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUKLWV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOjoKK2FsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgQXMgaW4KK2ludGVnZXIgbGl0ZXJhbHMsIHVuZGVyc2NvcmVzIGFyZSBzdXBwb3J0ZWQgZm9yIGRpZ2l0IGdyb3VwaW5nLgogCi0gICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMAorU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczo6CisKKyAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwICAgIDMuMTRfMTVfOTMKIAogTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlIGBgLTFgYCBpcwogYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgYGAtYGAgYW5kIHRoZSBsaXRlcmFsCiBgYDFgYC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgZ3JvdXBpbmcgcHVycG9zZXMgaW4gbGl0ZXJhbHMuCisKIAogLi4gX2ltYWdpbmFyeToKIApAQCAtNjcxLDcgKzc5Myw3IEBACiBJbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIGltYWdudW1iZXI6IChgZmxvYXRudW1iZXJgIHwgYGludHBhcnRgKSAoImoiIHwgIkoiKQorICAgaW1hZ251bWJlcjogKGBmbG9hdG51bWJlcmAgfCBgZGlnaXRwYXJ0YCkgKCJqIiB8ICJKIikKIAogQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuICBDb21wbGV4CiBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhbmQgaGF2ZSB0aGUgc2FtZQpAQCAtNjc5LDcgKzgwMSw3IEBACiBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsIGUuZy4sIGBgKDMrNGopYGAuICBTb21lIGV4YW1wbGVzIG9mCiBpbWFnaW5hcnkgbGl0ZXJhbHM6OgogCi0gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqCisgICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgIDMuMTRlLTEwaiAgIDMuMTRfMTVfOTNqCiAKIAogLi4gX29wZXJhdG9yczoKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCBkNDAzYzRkLi4zZGM0NDE4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICAgIDogfCBgYXNzZXJ0X3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgYXNzaWdubWVudF9zdG10YAogICAgICAgICAgICAgICA6IHwgYGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXRgCisgICAgICAgICAgICAgIDogfCBgYW5ub3RhdGVkX2Fzc2lnbm1lbnRfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBwYXNzX3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgZGVsX3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgcmV0dXJuX3N0bXRgCkBAIC04NCw3ICs4NSw3IEBACiAgICBhc3NpZ25tZW50X3N0bXQ6IChgdGFyZ2V0X2xpc3RgICI9IikrIChgc3RhcnJlZF9leHByZXNzaW9uYCB8IGB5aWVsZF9leHByZXNzaW9uYCkKICAgIHRhcmdldF9saXN0OiBgdGFyZ2V0YCAoIiwiIGB0YXJnZXRgKSogWyIsIl0KICAgIHRhcmdldDogYGlkZW50aWZpZXJgCi0gICAgICAgICA6IHwgIigiIGB0YXJnZXRfbGlzdGAgIikiCisgICAgICAgICA6IHwgIigiIFtgdGFyZ2V0X2xpc3RgXSAiKSIKICAgICAgICAgIDogfCAiWyIgW2B0YXJnZXRfbGlzdGBdICJdIgogICAgICAgICAgOiB8IGBhdHRyaWJ1dGVyZWZgCiAgICAgICAgICA6IHwgYHN1YnNjcmlwdGlvbmAKQEAgLTMxMiw2ICszMTMsNTAgQEAKIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzIDxhdHRyLXRhcmdldC1ub3RlPmAgYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy4KIAogCisuLiBfYW5uYXNzaWduOgorCitBbm5vdGF0ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgIHBhaXI6IGFubm90YXRlZDsgYXNzaWdubWVudAorICAgc2luZ2xlOiBzdGF0ZW1lbnQ7IGFzc2lnbm1lbnQsIGFubm90YXRlZAorCitBbm5vdGF0aW9uIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsCitvZiBhIHZhcmlhYmxlIG9yIGF0dHJpYnV0ZSBhbm5vdGF0aW9uIGFuZCBhbiBvcHRpb25hbCBhc3NpZ25tZW50IHN0YXRlbWVudDoKKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYW5ub3RhdGVkX2Fzc2lnbm1lbnRfc3RtdDogYGF1Z3RhcmdldGAgIjoiIGBleHByZXNzaW9uYCBbIj0iIGBleHByZXNzaW9uYF0KKworVGhlIGRpZmZlcmVuY2UgZnJvbSBub3JtYWwgOnJlZjpgYXNzaWdubWVudGAgaXMgdGhhdCBvbmx5IHNpbmdsZSB0YXJnZXQgYW5kCitvbmx5IHNpbmdsZSByaWdodCBoYW5kIHNpZGUgdmFsdWUgaXMgYWxsb3dlZC4KKworRm9yIHNpbXBsZSBuYW1lcyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIGlmIGluIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwKK3RoZSBhbm5vdGF0aW9ucyBhcmUgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gYSBzcGVjaWFsIGNsYXNzIG9yIG1vZHVsZQorYXR0cmlidXRlIDphdHRyOmBfX2Fubm90YXRpb25zX19gCit0aGF0IGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gdmFyaWFibGUgbmFtZXMgKG1hbmdsZWQgaWYgcHJpdmF0ZSkgdG8KK2V2YWx1YXRlZCBhbm5vdGF0aW9ucy4gVGhpcyBhdHRyaWJ1dGUgaXMgd3JpdGFibGUgYW5kIGlzIGF1dG9tYXRpY2FsbHkKK2NyZWF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGNsYXNzIG9yIG1vZHVsZSBib2R5IGV4ZWN1dGlvbiwgaWYgYW5ub3RhdGlvbnMKK2FyZSBmb3VuZCBzdGF0aWNhbGx5LgorCitGb3IgZXhwcmVzc2lvbnMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCB0aGUgYW5ub3RhdGlvbnMgYXJlIGV2YWx1YXRlZCBpZgoraW4gY2xhc3Mgb3IgbW9kdWxlIHNjb3BlLCBidXQgbm90IHN0b3JlZC4KKworSWYgYSBuYW1lIGlzIGFubm90YXRlZCBpbiBhIGZ1bmN0aW9uIHNjb3BlLCB0aGVuIHRoaXMgbmFtZSBpcyBsb2NhbCBmb3IKK3RoYXQgc2NvcGUuIEFubm90YXRpb25zIGFyZSBuZXZlciBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBmdW5jdGlvbiBzY29wZXMuCisKK0lmIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgcHJlc2VudCwgYW4gYW5ub3RhdGVkCithc3NpZ25tZW50IHBlcmZvcm1zIHRoZSBhY3R1YWwgYXNzaWdubWVudCBiZWZvcmUgZXZhbHVhdGluZyBhbm5vdGF0aW9ucworKHdoZXJlIGFwcGxpY2FibGUpLiBJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIG5vdCBwcmVzZW50IGZvciBhbiBleHByZXNzaW9uCit0YXJnZXQsIHRoZW4gdGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgdGFyZ2V0IGV4Y2VwdCBmb3IgdGhlIGxhc3QKKzptZXRoOmBfX3NldGl0ZW1fX2Agb3IgOm1ldGg6YF9fc2V0YXR0cl9fYCBjYWxsLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI2YCAtIFZhcmlhYmxlIGFuZCBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBzeW50YXgKKyAgIDpwZXA6YDQ4NGAgLSBUeXBlIGhpbnRzCisKKwogLi4gX2Fzc2VydDoKIAogVGhlIDprZXl3b3JkOmBhc3NlcnRgIHN0YXRlbWVudApAQCAtODU5LDExICs5MDQsMTIgQEAKIAogTmFtZXMgbGlzdGVkIGluIGEgOmtleXdvcmQ6YGdsb2JhbGAgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgZm9ybWFsCiBwYXJhbWV0ZXJzIG9yIGluIGEgOmtleXdvcmQ6YGZvcmAgbG9vcCBjb250cm9sIHRhcmdldCwgOmtleXdvcmQ6YGNsYXNzYAotZGVmaW5pdGlvbiwgZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LgorZGVmaW5pdGlvbiwgZnVuY3Rpb24gZGVmaW5pdGlvbiwgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LCBvciB2YXJpYWJsZQorYW5ub3RhdGlvbi4KIAogLi4gaW1wbC1kZXRhaWw6OgogCi0gICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBlbmZvcmNlIHRoZSB0d28gcmVzdHJpY3Rpb25zLCBidXQKKyAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGVuZm9yY2Ugc29tZSBvZiB0aGVzZSByZXN0cmljdGlvbiwgYnV0CiAgICBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlIHRoaXMgZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZQogICAgdGhlbSBvciBzaWxlbnRseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uCiAKZGlmZiAtLWdpdCBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CmluZGV4IDYzMTEyODMuLjI3MzE5MWIgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKKysrIGIvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQpAQCAtMzQsNyArMzQsNyBAQAogCiAKIElTU1VFX1VSSSA9ICdodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZSVzJwotU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNS8lcycKK1NPVVJDRV9VUkkgPSAnaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjYvJXMnCiAKICMgbW9ua2V5LXBhdGNoIHJlU1QgcGFyc2VyIHRvIGRpc2FibGUgYWxwaGFiZXRpYyBhbmQgcm9tYW4gZW51bWVyYXRlZCBsaXN0cwogZnJvbSBkb2N1dGlscy5wYXJzZXJzLnJzdC5zdGF0ZXMgaW1wb3J0IEJvZHkKZGlmZiAtLWdpdCBhL0RvYy90b29scy9yc3RsaW50LnB5IGIvRG9jL3Rvb2xzL3JzdGxpbnQucHkKaW5kZXggZGU3ODA0MS4uMmMxODE2ZSAxMDA3NTUKLS0tIGEvRG9jL3Rvb2xzL3JzdGxpbnQucHkKKysrIGIvRG9jL3Rvb2xzL3JzdGxpbnQucHkKQEAgLTksOCArOSw2IEBACiAjIFRPRE86IC0gd3JvbmcgdmVyc2lvbnMgaW4gdmVyc2lvbmFkZGVkL2NoYW5nZWQKICMgICAgICAgLSB3cm9uZyBtYXJrdXAgYWZ0ZXIgdmVyc2lvbmNoYW5nZWQgZGlyZWN0aXZlCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKaW5kZXggZGJhOTNiZi4uNWRlNTVhMiAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKKysrIGIvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKQEAgLTI1LDYgKzI1LDMwIEBACiBob3d0by9jdXJzZXMsLDptYWdlbnRhLCIyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIDc6d2hpdGUuICBUaGUiCiBob3d0by9jdXJzZXMsLDpjeWFuLCIyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIDc6d2hpdGUuICBUaGUiCiBob3d0by9jdXJzZXMsLDp3aGl0ZSwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6OixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6OixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpjYWxsLDE1NjY0MTM2MDUwMjI4MCAgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworaG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6c3RhcnQsMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1MTg4MDQgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTMyNzk3ICBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1NDY4MDcgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1NjMzNjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTc4MzY1ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU5MTc1NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjA1NTU2ICBmdW5jdGlvbi1lbnRyeTogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjE3NDgyIGZ1bmN0aW9uLXJldHVybjogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYyOTgxNCBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjQyMjg1IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY1Njc3MCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2Njk3MDcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY4Nzg1MyAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxMworaG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNzAwNzE5IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA3MTk2NDAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDczMjU2NyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6Y2FsbCwxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOnN0YXJ0LDE1NjY0MTM2MDc0NzM3MCBmdW5jdGlvbi1yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOAogaG93dG8vaXBhZGRyZXNzLCw6REI4LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQogaG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKIGhvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQpAQCAtMTA2LDYgKzEzMCwxMCBAQAogbGlicmFyeS9mdW5jdGlvbnMsLDpzdGVwLGFbc3RhcnQ6c3RvcDpzdGVwXQogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLCJhW3N0YXJ0OnN0b3AsIGldIgogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLGFbc3RhcnQ6c3RvcDpzdGVwXQorbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOnZhdHJvZ2FzYWMsPj4+IGNvb2tpZSA9IGIndXNlcjp2YXRyb2dhc2FjJworbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOnZhdHJvZ2FzYWMsInVzZXI6dmF0cm9nYXNhYywzNDljZjkwNDUzMzc2N2VkMmQ3NTUyNzlhOGRmODRkMCIKK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDpwb2xpY2FqYWMsIj4+PiBjb21wYXJlX2RpZ2VzdChiJ3VzZXI6cG9saWNhamFjJywgc2lnKSIKK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDpMRUFGLCJoMDAgPSBibGFrZTJiKGJ1ZlswOkxFQUZfU0laRV0sIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILCIKIGxpYnJhcnkvaHR0cC5jbGllbnQsLDpwb3J0LGhvc3Q6cG9ydAogbGlicmFyeS9odHRwLmNvb2tpZXMsLGAsISMkJSYnKistLl5fYHx+OgogbGlicmFyeS9pbWFwbGliLCw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCkBAIC0yMDUsNyArMjMzLDggQEAKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBzZXR1cHRvb2xzIGFuZCBwaXAgYXJlIG5vdCBpbnN0YWxsZWQgaW50byB0aGUiCiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIHByb2dyZXNzOiBJZiBzZXR1cHRvb2xzIG9yIHBpcCBhcmUgaW5zdGFsbGVkLCB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIgogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBub3BpcDogSWYgVHJ1ZSwgcGlwIGlzIG5vdCBpbnN0YWxsZWQgaW50byB0aGUgY3JlYXRlZCIKLWxpYnJhcnkvdmVudiwsOnBhcmFtLDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CitsaWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorbGlicmFyeS94bWxycGMuY2xpZW50LCw6bmlsLGV4Om5pbAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCiBsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLHVzZXI6cGFzcwogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cG9ydCxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCkBAIC0yMzksNyArMjY4LDcgQEAKIHVzaW5nL2NtZGxpbmUsLDptZXNzYWdlLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCiB1c2luZy9jbWRsaW5lLCw6bW9kdWxlLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCiB1c2luZy91bml4LCw6UGFja2FnaW5nLGh0dHBzOi8vZW4ub3BlbnN1c2Uub3JnL1BvcnRhbDpQYWNrYWdpbmcKLXdoYXRzbmV3LzIuMCw0MTgsOmxlbiwKK3doYXRzbmV3LzIuMCwsOmxlbiwKIHdoYXRzbmV3LzIuMywsOjosCiB3aGF0c25ldy8yLjMsLDpjb25maWcsCiB3aGF0c25ldy8yLjMsLDpDcml0aWNhbCwKQEAgLTI3MiwyNyArMzAxLDI3IEBACiB3aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igogd2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQogd2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotd2hhdHNuZXcvY2hhbmdlbG9nLCw6Z3osIjogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAiInc6Z3oiIiBtb2RlIGRpZG4ndCIKLXdoYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKLWxpYnJhcnkvdGFyZmlsZSwxNDksOnh6LCd4Onh6JwotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMjkwLDpzb21ldGFnLHByZWZpeDpzb21ldGFnCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmZpY3Rpb25hbCwiPGFjdG9ycyB4bWxuczpmaWN0aW9uYWw9IiJodHRwOi8vY2hhcmFjdGVycy5leGFtcGxlLmNvbSIiIgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+TGFuY2Vsb3Q8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5BcmNoaWUgTGVhY2g8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5TaXIgUm9iaW48L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5HdW50aGVyPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+Q29tbWFuZGVyIENsZW1lbnQ8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwneDp4eicKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZworbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgogbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDphY3RvciwiZm9yIGFjdG9yIGluIHJvb3QuZmluZGFsbCgncmVhbF9wZXJzb246YWN0b3InLCBucyk6IgogbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpuYW1lLCJuYW1lID0gYWN0b3IuZmluZCgncmVhbF9wZXJzb246bmFtZScsIG5zKSIKIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLCJmb3IgY2hhciBpbiBhY3Rvci5maW5kYWxsKCdyb2xlOmNoYXJhY3RlcicsIG5zKToiCi1saWJyYXJ5L3ppcGFwcCwzMSw6bWFpbiwiJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICIibXlhcHA6bWFpbiIiIgotbGlicmFyeS96aXBhcHAsODIsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKLWxpYnJhcnkvemlwYXBwLDE1NSw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCitsaWJyYXJ5L3ppcGFwcCwsOm1haW4sIiQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtbSAiIm15YXBwOm1haW4iIiIKK2xpYnJhcnkvemlwYXBwLCw6Zm4sImFyZ3VtZW50IHNob3VsZCBoYXZlIHRoZSBmb3JtICIicGtnLm1vZDpmbiIiLCB3aGVyZSAiInBrZy5tb2QiIiBpcyBhIgorbGlicmFyeS96aXBhcHAsLDpjYWxsYWJsZSwiIiJwa2cubW9kdWxlOmNhbGxhYmxlIiIgYW5kIHRoZSBhcmNoaXZlIHdpbGwgYmUgcnVuIGJ5IGltcG9ydGluZyIKIGxpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBtWzo6Ml0udG9saXN0KCkKIGxpYnJhcnkvc3lzLCxgLCMgYGB3cmFwcGVyYGAgY3JlYXRlcyBhIGBgd3JhcChjb3JvKWBgIGNvcm91dGluZToKLXR1dG9yaWFsL3ZlbnYsNzcsOmM3Yjk2NDVhNmYzNSwiUHl0aG9uIDMuNC4zKyAoMy40OmM3Yjk2NDVhNmYzNSssIE1heSAyMiAyMDE1LCAwOTozMToyNSkiCiB3aGF0c25ldy8zLjUsLDpyb290LCdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJwogd2hhdHNuZXcvMy41LCw6d2FybmluZywnV0FSTklORzpyb290Ondhcm5pbmdcbicKIHdoYXRzbmV3LzMuNSwsOjosPj4+IGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKQogd2hhdHNuZXcvMy41LCw6cm9vdCxFUlJPUjpyb290OmV4Y2VwdGlvbgogd2hhdHNuZXcvMy41LCw6ZXhjZXB0aW9uLEVSUk9SOnJvb3Q6ZXhjZXB0aW9uCit3aGF0c25ldy9jaGFuZ2Vsb2csLDp2ZXJzaW9uLGltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCit3aGF0c25ldy9jaGFuZ2Vsb2csLDpneiwiOiBUYXJGaWxlIG9wZW5lZCB3aXRoIGV4dGVybmFsIGZpbGVvYmogYW5kICIidzpneiIiIG1vZGUgZGlkbid0Igord2hhdHNuZXcvY2hhbmdlbG9nLCw6OiwiOiBVc2UgIiIxMjcuMC4wLjEiIiBvciAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIiBhcyBtdWNoIGFzIgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdCBiL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKaW5kZXggMTI5ODliMi4uZDQzNDYxOCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CkBAIC03OCw2ICs3OCw5IEBACiAgICA+Pj4gd29yZHMKICAgIFsnZGVmZW5lc3RyYXRlJywgJ2NhdCcsICd3aW5kb3cnLCAnZGVmZW5lc3RyYXRlJ10KIAorV2l0aCBgYGZvciB3IGluIHdvcmRzOmBgLCB0aGUgZXhhbXBsZSB3b3VsZCBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmZpbml0ZSBsaXN0LAoraW5zZXJ0aW5nIGBgZGVmZW5lc3RyYXRlYGAgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KKwogCiAuLiBfdHV0LXJhbmdlOgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0IGIvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdAppbmRleCBkZDljN2NkLi5iZWVhYWMzIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKQEAgLTI1LDcgKzI1LDggQEAKIGNvbmNhdGVuYXRpb24gb3BlcmF0aW9ucyB5b3UgY2FuIGNyZWF0ZSBhbnkgbGF5b3V0IHlvdSBjYW4gaW1hZ2luZS4gIFRoZQogc3RyaW5nIHR5cGUgaGFzIHNvbWUgbWV0aG9kcyB0aGF0IHBlcmZvcm0gdXNlZnVsIG9wZXJhdGlvbnMgZm9yIHBhZGRpbmcKIHN0cmluZ3MgdG8gYSBnaXZlbiBjb2x1bW4gd2lkdGg7IHRoZXNlIHdpbGwgYmUgZGlzY3Vzc2VkIHNob3J0bHkuICBUaGUgc2Vjb25kCi13YXkgaXMgdG8gdXNlIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kLgord2F5IGlzIHRvIHVzZSA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCwgb3IgdGhlCis6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kLgogCiBUaGUgOm1vZDpgc3RyaW5nYCBtb2R1bGUgY29udGFpbnMgYSA6Y2xhc3M6YH5zdHJpbmcuVGVtcGxhdGVgIGNsYXNzIHdoaWNoIG9mZmVycwogeWV0IGFub3RoZXIgd2F5IHRvIHN1YnN0aXR1dGUgdmFsdWVzIGludG8gc3RyaW5ncy4KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CmluZGV4IGU4ZDhlMmIuLmZhZjU3YTMgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdApAQCAtMTAsMTMgKzEwLDEzIEBACiBJbnZva2luZyB0aGUgSW50ZXJwcmV0ZXIKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjVgCitUaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjZgCiBvbiB0aG9zZSBtYWNoaW5lcyB3aGVyZSBpdCBpcyBhdmFpbGFibGU7IHB1dHRpbmcgOmZpbGU6YC91c3IvbG9jYWwvYmluYCBpbiB5b3VyCiBVbml4IHNoZWxsJ3Mgc2VhcmNoIHBhdGggbWFrZXMgaXQgcG9zc2libGUgdG8gc3RhcnQgaXQgYnkgdHlwaW5nIHRoZSBjb21tYW5kOgogCiAuLiBjb2RlLWJsb2NrOjogdGV4dAogCi0gICBweXRob24zLjUKKyAgIHB5dGhvbjMuNgogCiB0byB0aGUgc2hlbGwuIFsjXV8gU2luY2UgdGhlIGNob2ljZSBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbnRlcnByZXRlciBsaXZlcwogaXMgYW4gaW5zdGFsbGF0aW9uIG9wdGlvbiwgb3RoZXIgcGxhY2VzIGFyZSBwb3NzaWJsZTsgY2hlY2sgd2l0aCB5b3VyIGxvY2FsCkBAIC0yNCwxMSArMjQsMTEgQEAKIHBvcHVsYXIgYWx0ZXJuYXRpdmUgbG9jYXRpb24uKQogCiBPbiBXaW5kb3dzIG1hY2hpbmVzLCB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyB1c3VhbGx5IHBsYWNlZCBpbgotOmZpbGU6YEM6XFxQeXRob24zNWAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCis6ZmlsZTpgQzpcXFB5dGhvbjM2YCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKIGluc3RhbGxlci4gIFRvIGFkZCB0aGlzIGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsICB5b3UgY2FuIHR5cGUgdGhlIGZvbGxvd2luZwogY29tbWFuZCBpbnRvIHRoZSBjb21tYW5kIHByb21wdCBpbiBhIERPUyBib3g6OgogCi0gICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzUKKyAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zNgogCiBUeXBpbmcgYW4gZW5kLW9mLWZpbGUgY2hhcmFjdGVyICg6a2JkOmBDb250cm9sLURgIG9uIFVuaXgsIDprYmQ6YENvbnRyb2wtWmAgb24KIFdpbmRvd3MpIGF0IHRoZSBwcmltYXJ5IHByb21wdCBjYXVzZXMgdGhlIGludGVycHJldGVyIHRvIGV4aXQgd2l0aCBhIHplcm8gZXhpdApAQCAtOTgsOCArOTgsOCBAQAogCiAuLiBjb2RlLWJsb2NrOjogc2hlbGwtc2Vzc2lvbgogCi0gICAkIHB5dGhvbjMuNQotICAgUHl0aG9uIDMuNSAoZGVmYXVsdCwgU2VwIDE2IDIwMTUsIDA5OjI1OjA0KQorICAgJCBweXRob24zLjYKKyAgIFB5dGhvbiAzLjYgKGRlZmF1bHQsIFNlcCAxNiAyMDE1LCAwOToyNTowNCkKICAgIFtHQ0MgNC44LjJdIG9uIGxpbnV4CiAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICA+Pj4KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0IGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKaW5kZXggMjE0MDMyOS4uN2U4ZWUzZSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKQEAgLTM1Miw2ICszNTIsOSBAQAogICAgICAgU3RyaW5ncyBzdXBwb3J0IGEgbGFyZ2UgbnVtYmVyIG9mIG1ldGhvZHMgZm9yCiAgICAgICBiYXNpYyB0cmFuc2Zvcm1hdGlvbnMgYW5kIHNlYXJjaGluZy4KIAorICAgOnJlZjpgZi1zdHJpbmdzYAorICAgICAgU3RyaW5nIGxpdGVyYWxzIHRoYXQgaGF2ZSBlbWJlZGRlZCBleHByZXNzaW9ucy4KKwogICAgOnJlZjpgZm9ybWF0c3RyaW5nc2AKICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHN0cmluZyBmb3JtYXR0aW5nIHdpdGggOm1ldGg6YHN0ci5mb3JtYXRgLgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CmluZGV4IDUyZmZkYmUuLjFkZDA2YzIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CkBAIC0xNSw3ICsxNSw3IEBACiAKICAgID4+PiBpbXBvcnQgb3MKICAgID4+PiBvcy5nZXRjd2QoKSAgICAgICMgUmV0dXJuIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Ci0gICAnQzpcXFB5dGhvbjM1JworICAgJ0M6XFxQeXRob24zNicKICAgID4+PiBvcy5jaGRpcignL3NlcnZlci9hY2Nlc3Nsb2dzJykgICAjIENoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CiAgICA+Pj4gb3Muc3lzdGVtKCdta2RpciB0b2RheScpICAgIyBSdW4gdGhlIGNvbW1hbmQgbWtkaXIgaW4gdGhlIHN5c3RlbSBzaGVsbAogICAgMApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CmluZGV4IDM3MTQzODQuLmJmNGNmODcgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKQEAgLTI3OCw3ICsyNzgsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGRbJ3ByaW1hcnknXSAgICAgICAgICAgICAgICAjIGVudHJ5IHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQKLSAgICAgRmlsZSAiQzovcHl0aG9uMzUvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXworICAgICBGaWxlICJDOi9weXRob24zNi9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCiAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgIEtleUVycm9yOiAncHJpbWFyeScKIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3ZlbnYucnN0IGIvRG9jL3R1dG9yaWFsL3ZlbnYucnN0CmluZGV4IDNiMmVlMmUuLmUyZGQ1N2QgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC92ZW52LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvdmVudi5yc3QKQEAgLTIwLDE1ICsyMCwxNCBAQAogdGhlIHJlcXVpcmVtZW50cyBhcmUgaW4gY29uZmxpY3QgYW5kIGluc3RhbGxpbmcgZWl0aGVyIHZlcnNpb24gMS4wIG9yIDIuMAogd2lsbCBsZWF2ZSBvbmUgYXBwbGljYXRpb24gdW5hYmxlIHRvIHJ1bi4KIAotVGhlIHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gaXMgdG8gY3JlYXRlIGEgOnRlcm06YHZpcnR1YWwKLWVudmlyb25tZW50YCAob2Z0ZW4gc2hvcnRlbmVkIHRvICJ2aXJ0dWFsZW52IiksIGEgc2VsZi1jb250YWluZWQKLWRpcmVjdG9yeSB0cmVlIHRoYXQgY29udGFpbnMgYSBQeXRob24gaW5zdGFsbGF0aW9uIGZvciBhIHBhcnRpY3VsYXIKLXZlcnNpb24gb2YgUHl0aG9uLCBwbHVzIGEgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcGFja2FnZXMuCitUaGUgc29sdXRpb24gZm9yIHRoaXMgcHJvYmxlbSBpcyB0byBjcmVhdGUgYSA6dGVybTpgdmlydHVhbCBlbnZpcm9ubWVudGAsIGEKK3NlbGYtY29udGFpbmVkIGRpcmVjdG9yeSB0cmVlIHRoYXQgY29udGFpbnMgYSBQeXRob24gaW5zdGFsbGF0aW9uIGZvciBhCitwYXJ0aWN1bGFyIHZlcnNpb24gb2YgUHl0aG9uLCBwbHVzIGEgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcGFja2FnZXMuCiAKIERpZmZlcmVudCBhcHBsaWNhdGlvbnMgY2FuIHRoZW4gdXNlIGRpZmZlcmVudCB2aXJ0dWFsIGVudmlyb25tZW50cy4KIFRvIHJlc29sdmUgdGhlIGVhcmxpZXIgZXhhbXBsZSBvZiBjb25mbGljdGluZyByZXF1aXJlbWVudHMsCiBhcHBsaWNhdGlvbiBBIGNhbiBoYXZlIGl0cyBvd24gdmlydHVhbCBlbnZpcm9ubWVudCB3aXRoIHZlcnNpb24gMS4wCi1pbnN0YWxsZWQgd2hpbGUgYXBwbGljYXRpb24gQiBoYXMgYW5vdGhlciB2aXJ0dWFsZW52IHdpdGggdmVyc2lvbiAyLjAuCitpbnN0YWxsZWQgd2hpbGUgYXBwbGljYXRpb24gQiBoYXMgYW5vdGhlciB2aXJ0dWFsIGVudmlyb25tZW50IHdpdGggdmVyc2lvbiAyLjAuCiBJZiBhcHBsaWNhdGlvbiBCIHJlcXVpcmVzIGEgbGlicmFyeSBiZSB1cGdyYWRlZCB0byB2ZXJzaW9uIDMuMCwgdGhpcyB3aWxsCiBub3QgYWZmZWN0IGFwcGxpY2F0aW9uIEEncyBlbnZpcm9ubWVudC4KIApAQCAtMzYsMjkgKzM1LDI2IEBACiBDcmVhdGluZyBWaXJ0dWFsIEVudmlyb25tZW50cwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIHNjcmlwdCB1c2VkIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHZpcnR1YWwgZW52aXJvbm1lbnRzIGlzIGNhbGxlZAotOnByb2dyYW06YHB5dmVudmAuICA6cHJvZ3JhbTpgcHl2ZW52YCB3aWxsIHVzdWFsbHkgaW5zdGFsbCB0aGUgbW9zdAotcmVjZW50IHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgeW91IGhhdmUgYXZhaWxhYmxlOyB0aGUgc2NyaXB0IGlzIGFsc28KLWluc3RhbGxlZCB3aXRoIGEgdmVyc2lvbiBudW1iZXIsIHNvIGlmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mCi1QeXRob24gb24geW91ciBzeXN0ZW0geW91IGNhbiBzZWxlY3QgYSBzcGVjaWZpYyBQeXRob24gdmVyc2lvbiBieQotcnVubmluZyBgYHB5dmVudi0zLjRgYCBvciB3aGljaGV2ZXIgdmVyc2lvbiB5b3Ugd2FudC4KK1RoZSBtb2R1bGUgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBjYWxsZWQKKzptb2Q6YHZlbnZgLiAgOm1vZDpgdmVudmAgd2lsbCB1c3VhbGx5IGluc3RhbGwgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YKK1B5dGhvbiB0aGF0IHlvdSBoYXZlIGF2YWlsYWJsZS4gSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIG9uIHlvdXIKK3N5c3RlbSwgeW91IGNhbiBzZWxlY3QgYSBzcGVjaWZpYyBQeXRob24gdmVyc2lvbiBieSBydW5uaW5nIGBgcHl0aG9uM2BgIG9yCit3aGljaGV2ZXIgdmVyc2lvbiB5b3Ugd2FudC4KIAotVG8gY3JlYXRlIGEgdmlydHVhbGVudiwgZGVjaWRlIHVwb24gYSBkaXJlY3RvcnkKLXdoZXJlIHlvdSB3YW50IHRvIHBsYWNlIGl0IGFuZCBydW4gOnByb2dyYW06YHB5dmVudmAgd2l0aCB0aGUKLWRpcmVjdG9yeSBwYXRoOjoKK1RvIGNyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIGRlY2lkZSB1cG9uIGEgZGlyZWN0b3J5IHdoZXJlIHlvdSB3YW50IHRvCitwbGFjZSBpdCwgYW5kIHJ1biB0aGUgOm1vZDpgdmVudmAgbW9kdWxlIGFzIGEgc2NyaXB0IHdpdGggdGhlIGRpcmVjdG9yeSBwYXRoOjoKIAotICAgcHl2ZW52IHR1dG9yaWFsLWVudgorICAgcHl0aG9uMyAtbSB2ZW52IHR1dG9yaWFsLWVudgogCiBUaGlzIHdpbGwgY3JlYXRlIHRoZSBgYHR1dG9yaWFsLWVudmBgIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0LAogYW5kIGFsc28gY3JlYXRlIGRpcmVjdG9yaWVzIGluc2lkZSBpdCBjb250YWluaW5nIGEgY29weSBvZiB0aGUgUHl0aG9uCiBpbnRlcnByZXRlciwgdGhlIHN0YW5kYXJkIGxpYnJhcnksIGFuZCB2YXJpb3VzIHN1cHBvcnRpbmcgZmlsZXMuCiAKLU9uY2UgeW91J3ZlIGNyZWF0ZWQgYSB2aXJ0dWFsIGVudmlyb25tZW50LCB5b3UgbmVlZCB0bwotYWN0aXZhdGUgaXQuCitPbmNlIHlvdSd2ZSBjcmVhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IG1heSBhY3RpdmF0ZSBpdC4KIAogT24gV2luZG93cywgcnVuOjoKIAotICB0dXRvcmlhbC1lbnYvU2NyaXB0cy9hY3RpdmF0ZQorICB0dXRvcmlhbC1lbnZcU2NyaXB0c1xhY3RpdmF0ZS5iYXQKIAogT24gVW5peCBvciBNYWNPUywgcnVuOjoKIApAQCAtNjksMzMgKzY1LDM2IEBACiBgYGFjdGl2YXRlLmNzaGBgIGFuZCBgYGFjdGl2YXRlLmZpc2hgYCBzY3JpcHRzIHlvdSBzaG91bGQgdXNlCiBpbnN0ZWFkLikKIAotQWN0aXZhdGluZyB0aGUgdmlydHVhbGVudiB3aWxsIGNoYW5nZSB5b3VyIHNoZWxsJ3MgcHJvbXB0IHRvIHNob3cgd2hhdAotdmlydHVhbGVudiB5b3UncmUgdXNpbmcsIGFuZCBtb2RpZnkgdGhlIGVudmlyb25tZW50IHNvIHRoYXQgcnVubmluZwotYGBweXRob25gYCB3aWxsIGdldCB5b3UgdGhhdCBwYXJ0aWN1bGFyIHZlcnNpb24gYW5kIGluc3RhbGxhdGlvbiBvZgotUHl0aG9uLiAgRm9yIGV4YW1wbGU6OgorQWN0aXZhdGluZyB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3aWxsIGNoYW5nZSB5b3VyIHNoZWxsJ3MgcHJvbXB0IHRvIHNob3cgd2hhdAordmlydHVhbCBlbnZpcm9ubWVudCB5b3UncmUgdXNpbmcsIGFuZCBtb2RpZnkgdGhlIGVudmlyb25tZW50IHNvIHRoYXQgcnVubmluZworYGBweXRob25gYCB3aWxsIGdldCB5b3UgdGhhdCBwYXJ0aWN1bGFyIHZlcnNpb24gYW5kIGluc3RhbGxhdGlvbiBvZiBQeXRob24uCitGb3IgZXhhbXBsZToKIAotICAtPiBzb3VyY2Ugfi9lbnZzL3R1dG9yaWFsLWVudi9iaW4vYWN0aXZhdGUKLSAgKHR1dG9yaWFsLWVudikgLT4gcHl0aG9uCi0gIFB5dGhvbiAzLjQuMysgKDMuNDpjN2I5NjQ1YTZmMzUrLCBNYXkgMjIgMjAxNSwgMDk6MzE6MjUpCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICQgc291cmNlIH4vZW52cy90dXRvcmlhbC1lbnYvYmluL2FjdGl2YXRlCisgICh0dXRvcmlhbC1lbnYpICQgcHl0aG9uCisgIFB5dGhvbiAzLjUuMSAoZGVmYXVsdCwgTWF5ICA2IDIwMTYsIDEwOjU5OjM2KQogICAgIC4uLgogICA+Pj4gaW1wb3J0IHN5cwogICA+Pj4gc3lzLnBhdGgKLSAgWycnLCAnL3Vzci9sb2NhbC9saWIvcHl0aG9uMzQuemlwJywgLi4uLAotICAnfi9lbnZzL3R1dG9yaWFsLWVudi9saWIvcHl0aG9uMy40L3NpdGUtcGFja2FnZXMnXQorICBbJycsICcvdXNyL2xvY2FsL2xpYi9weXRob24zNS56aXAnLCAuLi4sCisgICd+L2VudnMvdHV0b3JpYWwtZW52L2xpYi9weXRob24zLjUvc2l0ZS1wYWNrYWdlcyddCiAgID4+PgogCiAKIE1hbmFnaW5nIFBhY2thZ2VzIHdpdGggcGlwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1PbmNlIHlvdSd2ZSBhY3RpdmF0ZWQgYSB2aXJ0dWFsIGVudmlyb25tZW50LCB5b3UgY2FuIGluc3RhbGwsIHVwZ3JhZGUsCi1hbmQgcmVtb3ZlIHBhY2thZ2VzIHVzaW5nIGEgcHJvZ3JhbSBjYWxsZWQgOnByb2dyYW06YHBpcGAuICBCeSBkZWZhdWx0Ci1gYHBpcGBgIHdpbGwgaW5zdGFsbCBwYWNrYWdlcyBmcm9tIHRoZSBQeXRob24gUGFja2FnZSBJbmRleCwKLTxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPi4gIFlvdSBjYW4gYnJvd3NlIHRoZSBQeXRob24gUGFja2FnZSBJbmRleAotYnkgZ29pbmcgdG8gaXQgaW4geW91ciB3ZWIgYnJvd3Nlciwgb3IgeW91IGNhbiB1c2UgYGBwaXBgYCdzCi1saW1pdGVkIHNlYXJjaCBmZWF0dXJlOjoKK1lvdSBjYW4gaW5zdGFsbCwgdXBncmFkZSwgYW5kIHJlbW92ZSBwYWNrYWdlcyB1c2luZyBhIHByb2dyYW0gY2FsbGVkCis6cHJvZ3JhbTpgcGlwYC4gIEJ5IGRlZmF1bHQgYGBwaXBgYCB3aWxsIGluc3RhbGwgcGFja2FnZXMgZnJvbSB0aGUgUHl0aG9uCitQYWNrYWdlIEluZGV4LCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT4uICBZb3UgY2FuIGJyb3dzZSB0aGUgUHl0aG9uCitQYWNrYWdlIEluZGV4IGJ5IGdvaW5nIHRvIGl0IGluIHlvdXIgd2ViIGJyb3dzZXIsIG9yIHlvdSBjYW4gdXNlIGBgcGlwYGAncworbGltaXRlZCBzZWFyY2ggZmVhdHVyZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgc2VhcmNoIGFzdHJvbm9teQorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBzZWFyY2ggYXN0cm9ub215CiAgIHNreWZpZWxkICAgICAgICAgICAgICAgLSBFbGVnYW50IGFzdHJvbm9teSBmb3IgUHl0aG9uCiAgIGdhcnkgICAgICAgICAgICAgICAgICAgLSBHYWxhY3RpYyBhc3Ryb25vbXkgYW5kIGdyYXZpdGF0aW9uYWwgZHluYW1pY3MuCiAgIG5vdmFzICAgICAgICAgICAgICAgICAgLSBUaGUgVW5pdGVkIFN0YXRlcyBOYXZhbCBPYnNlcnZhdG9yeSBOT1ZBUyBhc3Ryb25vbXkgbGlicmFyeQpAQCAtMTA3LDkgKzEwNiwxMSBAQAogImZyZWV6ZSIsIGV0Yy4gIChDb25zdWx0IHRoZSA6cmVmOmBpbnN0YWxsaW5nLWluZGV4YCBndWlkZSBmb3IKIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gZm9yIGBgcGlwYGAuKQogCi1Zb3UgY2FuIGluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgcGFja2FnZSBieSBzcGVjaWZ5aW5nIGEgcGFja2FnZSdzIG5hbWU6OgorWW91IGNhbiBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHBhY2thZ2UgYnkgc3BlY2lmeWluZyBhIHBhY2thZ2UncyBuYW1lOgogCi0gIC0+IHBpcCBpbnN0YWxsIG5vdmFzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgbm92YXMKICAgQ29sbGVjdGluZyBub3ZhcwogICAgIERvd25sb2FkaW5nIG5vdmFzLTMuMS4xLjMudGFyLmd6ICgxMzZrQikKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IG5vdmFzCkBAIC0xMTcsOSArMTE4LDExIEBACiAgIFN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgbm92YXMtMy4xLjEuMwogCiBZb3UgY2FuIGFsc28gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSBwYWNrYWdlIGJ5IGdpdmluZyB0aGUKLXBhY2thZ2UgbmFtZSAgZm9sbG93ZWQgYnkgYGA9PWBgIGFuZCB0aGUgdmVyc2lvbiBudW1iZXI6OgorcGFja2FnZSBuYW1lICBmb2xsb3dlZCBieSBgYD09YGAgYW5kIHRoZSB2ZXJzaW9uIG51bWJlcjoKIAotICAtPiBwaXAgaW5zdGFsbCByZXF1ZXN0cz09Mi42LjAKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCByZXF1ZXN0cz09Mi42LjAKICAgQ29sbGVjdGluZyByZXF1ZXN0cz09Mi42LjAKICAgICBVc2luZyBjYWNoZWQgcmVxdWVzdHMtMi42LjAtcHkyLnB5My1ub25lLWFueS53aGwKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IHJlcXVlc3RzCkBAIC0xMjgsOSArMTMxLDExIEBACiBJZiB5b3UgcmUtcnVuIHRoaXMgY29tbWFuZCwgYGBwaXBgYCB3aWxsIG5vdGljZSB0aGF0IHRoZSByZXF1ZXN0ZWQKIHZlcnNpb24gaXMgYWxyZWFkeSBpbnN0YWxsZWQgYW5kIGRvIG5vdGhpbmcuICBZb3UgY2FuIHN1cHBseSBhCiBkaWZmZXJlbnQgdmVyc2lvbiBudW1iZXIgdG8gZ2V0IHRoYXQgdmVyc2lvbiwgb3IgeW91IGNhbiBydW4gYGBwaXAKLWluc3RhbGwgLS11cGdyYWRlYGAgdG8gdXBncmFkZSB0aGUgcGFja2FnZSB0byB0aGUgbGF0ZXN0IHZlcnNpb246OgoraW5zdGFsbCAtLXVwZ3JhZGVgYCB0byB1cGdyYWRlIHRoZSBwYWNrYWdlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbjoKIAotICAtPiBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcmVxdWVzdHMKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcmVxdWVzdHMKICAgQ29sbGVjdGluZyByZXF1ZXN0cwogICBJbnN0YWxsaW5nIGNvbGxlY3RlZCBwYWNrYWdlczogcmVxdWVzdHMKICAgICBGb3VuZCBleGlzdGluZyBpbnN0YWxsYXRpb246IHJlcXVlc3RzIDIuNi4wCkBAIC0xNDEsOSArMTQ2LDExIEBACiBgYHBpcCB1bmluc3RhbGxgYCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwYWNrYWdlIG5hbWVzIHdpbGwgcmVtb3ZlIHRoZQogcGFja2FnZXMgZnJvbSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotYGBwaXAgc2hvd2BgIHdpbGwgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcGFja2FnZTo6CitgYHBpcCBzaG93YGAgd2lsbCBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IGEgcGFydGljdWxhciBwYWNrYWdlOgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBzaG93IHJlcXVlc3RzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIHNob3cgcmVxdWVzdHMKICAgLS0tCiAgIE1ldGFkYXRhLVZlcnNpb246IDIuMAogICBOYW1lOiByZXF1ZXN0cwpAQCAtMTU3LDkgKzE2NCwxMSBAQAogICBSZXF1aXJlczoKIAogYGBwaXAgbGlzdGBgIHdpbGwgZGlzcGxheSBhbGwgb2YgdGhlIHBhY2thZ2VzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAotZW52aXJvbm1lbnQ6OgorZW52aXJvbm1lbnQ6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIGxpc3QKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgbGlzdAogICBub3ZhcyAoMy4xLjEuMykKICAgbnVtcHkgKDEuOS4yKQogICBwaXAgKDcuMC4zKQpAQCAtMTY4LDE5ICsxNzcsMjMgQEAKIAogYGBwaXAgZnJlZXplYGAgd2lsbCBwcm9kdWNlIGEgc2ltaWxhciBsaXN0IG9mIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMsCiBidXQgdGhlIG91dHB1dCB1c2VzIHRoZSBmb3JtYXQgdGhhdCBgYHBpcCBpbnN0YWxsYGAgZXhwZWN0cy4KLUEgY29tbW9uIGNvbnZlbnRpb24gaXMgdG8gcHV0IHRoaXMgbGlzdCBpbiBhIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGZpbGU6OgorQSBjb21tb24gY29udmVudGlvbiBpcyB0byBwdXQgdGhpcyBsaXN0IGluIGEgYGByZXF1aXJlbWVudHMudHh0YGAgZmlsZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgZnJlZXplID4gcmVxdWlyZW1lbnRzLnR4dAotICAodHV0b3JpYWwtZW52KSAtPiBjYXQgcmVxdWlyZW1lbnRzLnR4dAorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBmcmVlemUgPiByZXF1aXJlbWVudHMudHh0CisgICh0dXRvcmlhbC1lbnYpICQgY2F0IHJlcXVpcmVtZW50cy50eHQKICAgbm92YXM9PTMuMS4xLjMKICAgbnVtcHk9PTEuOS4yCiAgIHJlcXVlc3RzPT0yLjcuMAogCiBUaGUgYGByZXF1aXJlbWVudHMudHh0YGAgY2FuIHRoZW4gYmUgY29tbWl0dGVkIHRvIHZlcnNpb24gY29udHJvbCBhbmQKIHNoaXBwZWQgYXMgcGFydCBvZiBhbiBhcHBsaWNhdGlvbi4gIFVzZXJzIGNhbiB0aGVuIGluc3RhbGwgYWxsIHRoZQotbmVjZXNzYXJ5IHBhY2thZ2VzIHdpdGggYGBpbnN0YWxsIC1yYGA6OgorbmVjZXNzYXJ5IHBhY2thZ2VzIHdpdGggYGBpbnN0YWxsIC1yYGA6CiAKLSAgLT4gcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dAorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKICAgQ29sbGVjdGluZyBub3Zhcz09My4xLjEuMyAoZnJvbSAtciByZXF1aXJlbWVudHMudHh0IChsaW5lIDEpKQogICAgIC4uLgogICBDb2xsZWN0aW5nIG51bXB5PT0xLjkuMiAoZnJvbSAtciByZXF1aXJlbWVudHMudHh0IChsaW5lIDIpKQpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0IGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CmluZGV4IDU3ZmFmODkuLjc1Y2I4ZWEgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9jbWRsaW5lLnJzdAorKysgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKQEAgLTM5NSw2ICszOTUsOCBAQAogICAgICBzdG9yZWQgaW4gYSB0cmFjZWJhY2sgb2YgYSB0cmFjZS4gVXNlIGBgLVggdHJhY2VtYWxsb2M9TkZSQU1FYGAgdG8gc3RhcnQKICAgICAgdHJhY2luZyB3aXRoIGEgdHJhY2ViYWNrIGxpbWl0IG9mICpORlJBTUUqIGZyYW1lcy4gU2VlIHRoZQogICAgICA6ZnVuYzpgdHJhY2VtYWxsb2Muc3RhcnRgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgKiBgYC1YIHNob3dhbGxvY2NvdW50YGAgdG8gZW5hYmxlIHRoZSBvdXRwdXQgb2YgdGhlIHRvdGFsIGNvdW50IG9mIGFsbG9jYXRlZAorICAgICBvYmplY3RzIGZvciBlYWNoIHR5cGUgKG9ubHkgd29ya3Mgd2hlbiBidWlsdCB3aXRoIGBgQ09VTlRfQUxMT0NTYGAgZGVmaW5lZCk7CiAKICAgIEl0IGFsc28gYWxsb3dzIHBhc3NpbmcgYXJiaXRyYXJ5IHZhbHVlcyBhbmQgcmV0cmlldmluZyB0aGVtIHRocm91Z2ggdGhlCiAgICA6ZGF0YTpgc3lzLl94b3B0aW9uc2AgZGljdGlvbmFyeS4KQEAgLTQwOCw2ICs0MTAsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICAgICBUaGUgYGAtWCBzaG93cmVmY291bnRgYCBhbmQgYGAtWCB0cmFjZW1hbGxvY2BgIG9wdGlvbnMuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgVGhlIGBgLVggc2hvd2FsbG9jY291bnRgYCBvcHRpb24uCisKIAogT3B0aW9ucyB5b3Ugc2hvdWxkbid0IHVzZQogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtNTU0LDYgKzU1OSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSBgYGVuY29kaW5nbmFtZWBgIHBhcnQgaXMgbm93IG9wdGlvbmFsLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT24gV2luZG93cywgdGhlIGVuY29kaW5nIHNwZWNpZmllZCBieSB0aGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIGludGVyYWN0aXZlCisgICAgICBjb25zb2xlIGJ1ZmZlcnMgdW5sZXNzIDplbnZ2YXI6YFBZVEhPTkxFR0FDWVdJTkRPV1NJT0VOQ09ESU5HYCBpcyBhbHNvIHNwZWNpZmllZC4KKyAgICAgIEZpbGVzIGFuZCBwaXBlcyByZWRpcmVjdGVkIHRocm91Z2ggdGhlIHN0YW5kYXJkIHN0cmVhbXMgYXJlIG5vdCBhZmZlY3RlZC4KIAogLi4gZW52dmFyOjogUFlUSE9OTk9VU0VSU0lURQogCkBAIC02MTksNiArNjI4LDgxIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCisuLiBlbnZ2YXI6OiBQWVRIT05NQUxMT0MKKworICAgU2V0IHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3MuCisKKyAgIFNldCB0aGUgZmFtaWx5IG9mIG1lbW9yeSBhbGxvY2F0b3JzIHVzZWQgYnkgUHl0aG9uOgorCisgICAqIGBgbWFsbG9jYGA6IHVzZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBmdW5jdGlvbiBvZiB0aGUgQyBsaWJyYXJ5CisgICAgIGZvciBhbGwgZG9tYWlucyAoOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX1JBV2AsIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gLAorICAgICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCkuCisgICAqIGBgcHltYWxsb2NgYDogdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBhbGxvY2F0b3IgPHB5bWFsbG9jPmAgZm9yCisgICAgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIGFuZCA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCBkb21haW5zIGFuZCB1c2UKKyAgICAgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgZnVuY3Rpb24gZm9yIHRoZSA6YzpkYXRhOmBQWU1FTV9ET01BSU5fUkFXYCBkb21haW4uCisKKyAgIEluc3RhbGwgZGVidWcgaG9va3M6CisKKyAgICogYGBkZWJ1Z2BgOiBpbnN0YWxsIGRlYnVnIGhvb2tzIG9uIHRvcCBvZiB0aGUgZGVmYXVsdCBtZW1vcnkgYWxsb2NhdG9yCisgICAqIGBgbWFsbG9jX2RlYnVnYGA6IHNhbWUgYXMgYGBtYWxsb2NgYCBidXQgYWxzbyBpbnN0YWxsIGRlYnVnIGhvb2tzCisgICAqIGBgcHltYWxsb2NfZGVidWdgYDogc2FtZSBhcyBgYHB5bWFsbG9jYGAgYnV0IGFsc28gaW5zdGFsbCBkZWJ1ZyBob29rcworCisgICBXaGVuIFB5dGhvbiBpcyBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUsIHRoZSBkZWZhdWx0IGlzIGBgcHltYWxsb2NgYC4gV2hlbgorICAgY29tcGlsZWQgaW4gZGVidWcgbW9kZSwgdGhlIGRlZmF1bHQgaXMgYGBweW1hbGxvY19kZWJ1Z2BgIGFuZCB0aGUgZGVidWcgaG9va3MKKyAgIGFyZSB1c2VkIGF1dG9tYXRpY2FsbHkuCisKKyAgIElmIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgYGBweW1hbGxvY2BgIHN1cHBvcnQsIGBgcHltYWxsb2NgYCBhbmQKKyAgIGBgcHltYWxsb2NfZGVidWdgYCBhcmUgbm90IGF2YWlsYWJsZSwgdGhlIGRlZmF1bHQgaXMgYGBtYWxsb2NgYCBpbiByZWxlYXNlCisgICBtb2RlIGFuZCBgYG1hbGxvY19kZWJ1Z2BgIGluIGRlYnVnIG1vZGUuCisKKyAgIFNlZSB0aGUgOmM6ZnVuYzpgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzYCBmdW5jdGlvbiBmb3IgZGVidWcgaG9va3Mgb24gUHl0aG9uCisgICBtZW1vcnkgYWxsb2NhdG9ycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gZW52dmFyOjogUFlUSE9OTUFMTE9DU1RBVFMKKworICAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgUHl0aG9uIHdpbGwgcHJpbnQgc3RhdGlzdGljcyBvZiB0aGUKKyAgIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAgZXZlcnkgdGltZSBhIG5ldyBweW1hbGxvYyBvYmplY3QKKyAgIGFyZW5hIGlzIGNyZWF0ZWQsIGFuZCBvbiBzaHV0ZG93bi4KKworICAgVGhpcyB2YXJpYWJsZSBpcyBpZ25vcmVkIGlmIHRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlCisgICBpcyB1c2VkIHRvIGZvcmNlIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGFsbG9jYXRvciBvZiB0aGUgQyBsaWJyYXJ5LCBvciBpZgorICAgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBgYHB5bWFsbG9jYGAgc3VwcG9ydC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgdmFyaWFibGUgY2FuIG5vdyBhbHNvIGJlIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgIEl0IG5vdyBoYXMgbm8gZWZmZWN0IGlmIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuCisKKworLi4gZW52dmFyOjogUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkcKKworICAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUKKyAgIHdpbGwgcmV2ZXJ0IHRvIHRoZWlyIHByZS0zLjYgdmFsdWVzIG9mICdtYmNzJyBhbmQgJ3JlcGxhY2UnLCByZXNwZWN0aXZlbHkuCisgICBPdGhlcndpc2UsIHRoZSBuZXcgZGVmYXVsdHMgJ3V0Zi04JyBhbmQgJ3N1cnJvZ2F0ZXBhc3MnIGFyZSB1c2VkLgorCisgICBUaGlzIG1heSBhbHNvIGJlIGVuYWJsZWQgYXQgcnVudGltZSB3aXRoCisgICA6ZnVuYzpgc3lzLl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpYC4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgU2VlIDpwZXA6YDUyOWAgZm9yIG1vcmUgZGV0YWlscy4KKworLi4gZW52dmFyOjogUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkcKKworICAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgZG9lcyBub3QgdXNlIHRoZSBuZXcgY29uc29sZSByZWFkZXIgYW5kCisgICB3cml0ZXIuIFRoaXMgbWVhbnMgdGhhdCBVbmljb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBlbmNvZGVkIGFjY29yZGluZyB0bworICAgdGhlIGFjdGl2ZSBjb25zb2xlIGNvZGUgcGFnZSwgcmF0aGVyIHRoYW4gdXNpbmcgdXRmLTguCisKKyAgIFRoaXMgdmFyaWFibGUgaXMgaWdub3JlZCBpZiB0aGUgc3RhbmRhcmQgc3RyZWFtcyBhcmUgcmVkaXJlY3RlZCAodG8gZmlsZXMKKyAgIG9yIHBpcGVzKSByYXRoZXIgdGhhbiByZWZlcnJpbmcgdG8gY29uc29sZSBidWZmZXJzLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIERlYnVnLW1vZGUgdmFyaWFibGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fgogCkBAIC02MzQsOSArNzE4LDMgQEAKIAogICAgSWYgc2V0LCBQeXRob24gd2lsbCBkdW1wIG9iamVjdHMgYW5kIHJlZmVyZW5jZSBjb3VudHMgc3RpbGwgYWxpdmUgYWZ0ZXIKICAgIHNodXR0aW5nIGRvd24gdGhlIGludGVycHJldGVyLgotCi0KLS4uIGVudnZhcjo6IFBZVEhPTk1BTExPQ1NUQVRTCi0KLSAgIElmIHNldCwgUHl0aG9uIHdpbGwgcHJpbnQgbWVtb3J5IGFsbG9jYXRpb24gc3RhdGlzdGljcyBldmVyeSB0aW1lIGEgbmV3Ci0gICBvYmplY3QgYXJlbmEgaXMgY3JlYXRlZCwgYW5kIG9uIHNodXRkb3duLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2luZGV4LnJzdCBiL0RvYy91c2luZy9pbmRleC5yc3QKaW5kZXggNTAyYWZhOS4uYTVkZjcxMyAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CkBAIC0xNyw0ICsxNywzIEBACiAgICB1bml4LnJzdAogICAgd2luZG93cy5yc3QKICAgIG1hYy5yc3QKLSAgIHNjcmlwdHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvbWFjLnJzdCBiL0RvYy91c2luZy9tYWMucnN0CmluZGV4IDA1YzkxYmIuLjhmMWFjM2YgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9tYWMucnN0CisrKyBiL0RvYy91c2luZy9tYWMucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAKIFdoYXQgeW91IGdldCBhZnRlciBpbnN0YWxsaW5nIGlzIGEgbnVtYmVyIG9mIHRoaW5nczoKIAotKiBBIDpmaWxlOmBNYWNQeXRob24gMy41YCBmb2xkZXIgaW4geW91ciA6ZmlsZTpgQXBwbGljYXRpb25zYCBmb2xkZXIuIEluIGhlcmUKKyogQSA6ZmlsZTpgTWFjUHl0aG9uIDMuNmAgZm9sZGVyIGluIHlvdXIgOmZpbGU6YEFwcGxpY2F0aW9uc2AgZm9sZGVyLiBJbiBoZXJlCiAgIHlvdSBmaW5kIElETEUsIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGF0IGlzIGEgc3RhbmRhcmQgcGFydCBvZiBvZmZpY2lhbAogICBQeXRob24gZGlzdHJpYnV0aW9uczsgUHl0aG9uTGF1bmNoZXIsIHdoaWNoIGhhbmRsZXMgZG91YmxlLWNsaWNraW5nIFB5dGhvbgogICBzY3JpcHRzIGZyb20gdGhlIEZpbmRlcjsgYW5kIHRoZSAiQnVpbGQgQXBwbGV0IiB0b29sLCB3aGljaCBhbGxvd3MgeW91IHRvCkBAIC05Myw3ICs5Myw3IEBACiBhbnl0aGluZyB0aGF0IGhhcyBhIEdVSSkgbmVlZCB0byBiZSBydW4gaW4gYSBzcGVjaWFsIHdheS4gVXNlIDpwcm9ncmFtOmBweXRob253YAogaW5zdGVhZCBvZiA6cHJvZ3JhbTpgcHl0aG9uYCB0byBzdGFydCBzdWNoIHNjcmlwdHMuCiAKLVdpdGggUHl0aG9uIDMuNSwgeW91IGNhbiB1c2UgZWl0aGVyIDpwcm9ncmFtOmBweXRob25gIG9yIDpwcm9ncmFtOmBweXRob253YC4KK1dpdGggUHl0aG9uIDMuNiwgeW91IGNhbiB1c2UgZWl0aGVyIDpwcm9ncmFtOmBweXRob25gIG9yIDpwcm9ncmFtOmBweXRob253YC4KIAogCiBDb25maWd1cmF0aW9uCkBAIC0xNTksNyArMTU5LDcgQEAKIERpc3RyaWJ1dGluZyBQeXRob24gQXBwbGljYXRpb25zIG9uIHRoZSBNYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlICJCdWlsZCBBcHBsZXQiIHRvb2wgdGhhdCBpcyBwbGFjZWQgaW4gdGhlIE1hY1B5dGhvbiAzLjUgZm9sZGVyIGlzIGZpbmUgZm9yCitUaGUgIkJ1aWxkIEFwcGxldCIgdG9vbCB0aGF0IGlzIHBsYWNlZCBpbiB0aGUgTWFjUHl0aG9uIDMuNiBmb2xkZXIgaXMgZmluZSBmb3IKIHBhY2thZ2luZyBzbWFsbCBQeXRob24gc2NyaXB0cyBvbiB5b3VyIG93biBtYWNoaW5lIHRvIHJ1biBhcyBhIHN0YW5kYXJkIE1hYwogYXBwbGljYXRpb24uIFRoaXMgdG9vbCwgaG93ZXZlciwgaXMgbm90IHJvYnVzdCBlbm91Z2ggdG8gZGlzdHJpYnV0ZSBQeXRob24KIGFwcGxpY2F0aW9ucyB0byBvdGhlciB1c2Vycy4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy9zY3JpcHRzLnJzdCBiL0RvYy91c2luZy9zY3JpcHRzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4NzQxNi4uMDAwMDAwMAotLS0gYS9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0uLiBfdG9vbHMtYW5kLXNjcmlwdHM6Ci0KLUFkZGl0aW9uYWwgVG9vbHMgYW5kIFNjcmlwdHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLi4gX3NjcmlwdHMtcHl2ZW52OgotCi1weXZlbnYgLSBDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gaW5jbHVkZTo6IHZlbnYtY3JlYXRlLmluYwotCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwppbmRleCA3YWQzMDA4Li41M2Y0MzFiIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTEsMzEgKzEsMzkgQEAKIENyZWF0aW9uIG9mIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnRzIDx2ZW52LWRlZj5gIGlzIGRvbmUgYnkgZXhlY3V0aW5nIHRoZQotYGBweXZlbnZgYCBzY3JpcHQ6OgorY29tbWFuZCBgYHZlbnZgYDo6CiAKLSAgICBweXZlbnYgL3BhdGgvdG8vbmV3L3ZpcnR1YWwvZW52aXJvbm1lbnQKKyAgICBweXRob24zIC1tIHZlbnYgL3BhdGgvdG8vbmV3L3ZpcnR1YWwvZW52aXJvbm1lbnQKIAogUnVubmluZyB0aGlzIGNvbW1hbmQgY3JlYXRlcyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSAoY3JlYXRpbmcgYW55IHBhcmVudAogZGlyZWN0b3JpZXMgdGhhdCBkb24ndCBleGlzdCBhbHJlYWR5KSBhbmQgcGxhY2VzIGEgYGBweXZlbnYuY2ZnYGAgZmlsZSBpbiBpdAotd2l0aCBhIGBgaG9tZWBgIGtleSBwb2ludGluZyB0byB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB0aGUgY29tbWFuZCB3YXMgcnVuCi1mcm9tLiAgSXQgYWxzbyBjcmVhdGVzIGEgYGBiaW5gYCAob3IgYGBTY3JpcHRzYGAgb24gV2luZG93cykgc3ViZGlyZWN0b3J5Cit3aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGZyb20gd2hpY2ggdGhlIGNvbW1hbmQKK3dhcyBydW4uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKIGNvbnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBgYHB5dGhvbmBgIGJpbmFyeSAob3IgYmluYXJpZXMsIGluIHRoZSBjYXNlIG9mCiBXaW5kb3dzKS4gIEl0IGFsc28gY3JlYXRlcyBhbiAoaW5pdGlhbGx5IGVtcHR5KSBgYGxpYi9weXRob25YLlkvc2l0ZS1wYWNrYWdlc2BgCiBzdWJkaXJlY3RvcnkgKG9uIFdpbmRvd3MsIHRoaXMgaXMgYGBMaWJcc2l0ZS1wYWNrYWdlc2BgKS4KIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgYGBweXZlbnZgYCB3YXMgdGhlIHJlY29tbWVuZGVkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzIGZvcgorICAgUHl0aG9uIDMuMyBhbmQgMy40LCBhbmQgaXMgYGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNgorICAgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2Rldi93aGF0c25ldy8zLjYuaHRtbCNkZXByZWNhdGVkLWZlYXR1cmVzPmBfLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIHVzZSBvZiBgYHZlbnZgYCBpcyBub3cgcmVjb21tZW5kZWQgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorCiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQ3JlYXRpbmcgYW5kIHVzaW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvaW5zdGFsbGluZy8jY3JlYXRpbmctdmlydHVhbC1lbnZpcm9ubWVudHM+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KIAogLi4gaGlnaGxpZ2h0Ojogbm9uZQogCi1PbiBXaW5kb3dzLCB5b3UgbWF5IGhhdmUgdG8gaW52b2tlIHRoZSBgYHB5dmVudmBgIHNjcmlwdCBhcyBmb2xsb3dzLCBpZiB5b3UKLWRvbid0IGhhdmUgdGhlIHJlbGV2YW50IFBBVEggYW5kIFBBVEhFWFQgc2V0dGluZ3M6OgorT24gV2luZG93cywgaW52b2tlIHRoZSBgYHZlbnZgYCBjb21tYW5kIGFzIGZvbGxvd3M6OgogCi0gICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gYzpcUHl0aG9uMzVcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKKyAgICBjOlw+YzpcUHl0aG9uMzVccHl0aG9uIC1tIHZlbnYgYzpccGF0aFx0b1xteWVudgogCi1vciBlcXVpdmFsZW50bHk6OgorQWx0ZXJuYXRpdmVseSwgaWYgeW91IGNvbmZpZ3VyZWQgdGhlIGBgUEFUSGBgIGFuZCBgYFBBVEhFWFRgYCB2YXJpYWJsZXMgZm9yCit5b3VyIDpyZWY6YFB5dGhvbiBpbnN0YWxsYXRpb24gPHVzaW5nLW9uLXdpbmRvd3M+YDo6CiAKLSAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IG15ZW52CisgICAgYzpcPnB5dGhvbiAtbSB2ZW52IG15ZW52IGM6XHBhdGhcdG9cbXllbnYKIAogVGhlIGNvbW1hbmQsIGlmIHJ1biB3aXRoIGBgLWhgYCwgd2lsbCBzaG93IHRoZSBhdmFpbGFibGUgb3B0aW9uczo6CiAKQEAgLTM2LDI1ICs0NCwyNiBAQAogICAgIENyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KIAogICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgotICAgICAgRU5WX0RJUiAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgorICAgICAgRU5WX0RJUiAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCiAKICAgICBvcHRpb25hbCBhcmd1bWVudHM6Ci0gICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLSAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KLSAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgotICAgICAgLS1jb3BpZXMgICAgICAgICAgICAgICBUcnkgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcywgZXZlbiB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgotICAgICAgLS1jbGVhciAgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KLSAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCi0gICAgICAtLXdpdGhvdXQtcGlwICAgICAgICAgIFNraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgdmlydHVhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQorICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCisgICAgICAtLXN5bWxpbmtzICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCisgICAgICAtLWNvcGllcyAgICAgICAgICAgICAgVHJ5IHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MsIGV2ZW4gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jbGVhciAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCisgICAgICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KKyAgICAgIC0td2l0aG91dC1waXAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQogCi1EZXBlbmRpbmcgb24gaG93IHRoZSBgYHZlbnZgYCBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGludm9rZWQsIHRoZSB1c2FnZSBtZXNzYWdlCi1tYXkgdmFyeSBzbGlnaHRseSwgZS5nLiByZWZlcmVuY2luZyBgYHB5dmVudmBgIHJhdGhlciB0aGFuIGBgdmVudmBgLgorICAgIE9uY2UgYW4gZW52aXJvbm1lbnQgaGFzIGJlZW4gY3JlYXRlZCwgeW91IG1heSB3aXNoIHRvIGFjdGl2YXRlIGl0LCBlLmcuIGJ5CisgICAgc291cmNpbmcgYW4gYWN0aXZhdGUgc2NyaXB0IGluIGl0cyBiaW4gZGlyZWN0b3J5LgogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgSW5zdGFsbHMgcGlwIGJ5IGRlZmF1bHQsIGFkZGVkIHRoZSBgYC0td2l0aG91dC1waXBgYCAgYW5kIGBgLS1jb3BpZXNgYApAQCAtNzMsMTIgKzgyLDEzIEBACiBVbmxlc3MgdGhlIGBgLS13aXRob3V0LXBpcGBgIG9wdGlvbiBpcyBnaXZlbiwgOm1vZDpgZW5zdXJlcGlwYCB3aWxsIGJlCiBpbnZva2VkIHRvIGJvb3RzdHJhcCBgYHBpcGBgIGludG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLU11bHRpcGxlIHBhdGhzIGNhbiBiZSBnaXZlbiB0byBgYHB5dmVudmBgLCBpbiB3aGljaCBjYXNlIGFuIGlkZW50aWNhbAotdmlydHVhbGVudiB3aWxsIGJlIGNyZWF0ZWQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gb3B0aW9ucywgYXQgZWFjaAotcHJvdmlkZWQgcGF0aC4KK011bHRpcGxlIHBhdGhzIGNhbiBiZSBnaXZlbiB0byBgYHZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwgdmlydHVhbAorZW52aXJvbm1lbnQgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2ggcHJvdmlkZWQKK3BhdGguCiAKLU9uY2UgYSB2ZW52IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhIHNjcmlwdCBpbiB0aGUKLXZlbnYncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUgc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOgorT25jZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaGFzIGJlZW4gY3JlYXRlZCwgaXQgY2FuIGJlICJhY3RpdmF0ZWQiIHVzaW5nIGEKK3NjcmlwdCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyeSBkaXJlY3RvcnkuIFRoZSBpbnZvY2F0aW9uIG9mIHRoZQorc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOgogCiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgUGxhdGZvcm0gICAgfCBTaGVsbCAgICAgICAgICAgfCBDb21tYW5kIHRvIGFjdGl2YXRlIHZpcnR1YWwgZW52aXJvbm1lbnQgfApAQCAtOTUsMTYgKzEwNSwxNyBAQAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFlvdSBkb24ndCBzcGVjaWZpY2FsbHkgKm5lZWQqIHRvIGFjdGl2YXRlIGFuIGVudmlyb25tZW50OyBhY3RpdmF0aW9uIGp1c3QKLXByZXBlbmRzIHRoZSB2ZW52J3MgYmluYXJ5IGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsIHNvIHRoYXQgInB5dGhvbiIgaW52b2tlcyB0aGUKLXZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIHlvdSBjYW4gcnVuIGluc3RhbGxlZCBzY3JpcHRzIHdpdGhvdXQgaGF2aW5nIHRvCi11c2UgdGhlaXIgZnVsbCBwYXRoLiBIb3dldmVyLCBhbGwgc2NyaXB0cyBpbnN0YWxsZWQgaW4gYSB2ZW52IHNob3VsZCBiZQotcnVubmFibGUgd2l0aG91dCBhY3RpdmF0aW5nIGl0LCBhbmQgcnVuIHdpdGggdGhlIHZlbnYncyBQeXRob24gYXV0b21hdGljYWxseS4KK3ByZXBlbmRzIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJ5IGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsIHNvIHRoYXQKKyJweXRob24iIGludm9rZXMgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIHlvdSBjYW4gcnVuCitpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0byB1c2UgdGhlaXIgZnVsbCBwYXRoLiBIb3dldmVyLCBhbGwgc2NyaXB0cworaW5zdGFsbGVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBzaG91bGQgYmUgcnVubmFibGUgd2l0aG91dCBhY3RpdmF0aW5nIGl0LAorYW5kIHJ1biB3aXRoIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCiAKLVlvdSBjYW4gZGVhY3RpdmF0ZSBhIHZlbnYgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLiBUaGUgZXhhY3QKLW1lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24gc2NyaXB0IGRlZmluZXMKLWEgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlIHNjcmlwdHMgY2FsbGVkCi1gYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkIHdoZW4gdGhlIHZlbnYgaXMKLWNyZWF0ZWQuCitZb3UgY2FuIGRlYWN0aXZhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGJ5IHR5cGluZyAiZGVhY3RpdmF0ZSIgaW4geW91ciBzaGVsbC4KK1RoZSBleGFjdCBtZWNoYW5pc20gaXMgcGxhdGZvcm0tc3BlY2lmaWM6IGZvciBleGFtcGxlLCB0aGUgQmFzaCBhY3RpdmF0aW9uCitzY3JpcHQgZGVmaW5lcyBhICJkZWFjdGl2YXRlIiBmdW5jdGlvbiwgd2hlcmVhcyBvbiBXaW5kb3dzIHRoZXJlIGFyZSBzZXBhcmF0ZQorc2NyaXB0cyBjYWxsZWQgYGBkZWFjdGl2YXRlLmJhdGBgIGFuZCBgYERlYWN0aXZhdGUucHMxYGAgd2hpY2ggYXJlIGluc3RhbGxlZAord2hlbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBjcmVhdGVkLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgIGBgZmlzaGBgIGFuZCBgYGNzaGBgIGFjdGl2YXRpb24gc2NyaXB0cy4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy93aW5kb3dzLnJzdCBiL0RvYy91c2luZy93aW5kb3dzLnJzdAppbmRleCBhNGE2YTMwLi44MWVmYmIwIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QKKysrIGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CkBAIC0yOSwxNSArMjksMTUgQEAKIAogQXMgc3BlY2lmaWVkIGluIDpwZXA6YDExYCwgYSBQeXRob24gcmVsZWFzZSBvbmx5IHN1cHBvcnRzIGEgV2luZG93cyBwbGF0Zm9ybQogd2hpbGUgTWljcm9zb2Z0IGNvbnNpZGVycyB0aGUgcGxhdGZvcm0gdW5kZXIgZXh0ZW5kZWQgc3VwcG9ydC4gVGhpcyBtZWFucyB0aGF0Ci1QeXRob24gMy41IHN1cHBvcnRzIFdpbmRvd3MgVmlzdGEgYW5kIG5ld2VyLiBJZiB5b3UgcmVxdWlyZSBXaW5kb3dzIFhQIHN1cHBvcnQKLXRoZW4gcGxlYXNlIGluc3RhbGwgUHl0aG9uIDMuNC4KK1B5dGhvbiB8dmVyc2lvbnwgc3VwcG9ydHMgV2luZG93cyBWaXN0YSBhbmQgbmV3ZXIuIElmIHlvdSByZXF1aXJlIFdpbmRvd3MgWFAKK3N1cHBvcnQgdGhlbiBwbGVhc2UgaW5zdGFsbCBQeXRob24gMy40LgogCiBJbnN0YWxsYXRpb24gU3RlcHMKIC0tLS0tLS0tLS0tLS0tLS0tLQogCi1Gb3VyIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtIHR3byBlYWNoIGZvciB0aGUgMzItYml0Ci1hbmQgNjQtYml0IHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci4gVGhlICp3ZWIgaW5zdGFsbGVyKiBpcyBhIHNtYWxsIGluaXRpYWwKLWRvd25sb2FkLCBhbmQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGFzCitGb3VyIFB5dGhvbiB8dmVyc2lvbnwgaW5zdGFsbGVycyBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtIHR3byBlYWNoIGZvciB0aGUKKzMyLWJpdCBhbmQgNjQtYml0IHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci4gVGhlICp3ZWIgaW5zdGFsbGVyKiBpcyBhIHNtYWxsCitpbml0aWFsIGRvd25sb2FkLCBhbmQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGFzCiBuZWNlc3NhcnkuIFRoZSAqb2ZmbGluZSBpbnN0YWxsZXIqIGluY2x1ZGVzIHRoZSBjb21wb25lbnRzIG5lY2Vzc2FyeSBmb3IgYQogZGVmYXVsdCBpbnN0YWxsYXRpb24gYW5kIG9ubHkgcmVxdWlyZXMgYW4gaW50ZXJuZXQgY29ubmVjdGlvbiBmb3Igb3B0aW9uYWwKIGZlYXR1cmVzLiBTZWUgOnJlZjpgaW5zdGFsbC1sYXlvdXQtb3B0aW9uYCBmb3Igb3RoZXIgd2F5cyB0byBhdm9pZCBkb3dubG9hZGluZwpAQCAtNzQsNiArNzQsMzEgQEAKICogSWYgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzeXN0ZW0gOmVudnZhcjpgUEFUSGAKICogU2hvcnRjdXRzIGFyZSBhdmFpbGFibGUgZm9yIGFsbCB1c2VycwogCisuLiBfbWF4LXBhdGg6CisKK1JlbW92aW5nIHRoZSBNQVhfUEFUSCBMaW1pdGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaW5kb3dzIGhpc3RvcmljYWxseSBoYXMgbGltaXRlZCBwYXRoIGxlbmd0aHMgdG8gMjYwIGNoYXJhY3RlcnMuIFRoaXMgbWVhbnQgdGhhdAorcGF0aHMgbG9uZ2VyIHRoYW4gdGhpcyB3b3VsZCBub3QgcmVzb2x2ZSBhbmQgZXJyb3JzIHdvdWxkIHJlc3VsdC4KKworSW4gdGhlIGxhdGVzdCB2ZXJzaW9ucyBvZiBXaW5kb3dzLCB0aGlzIGxpbWl0YXRpb24gY2FuIGJlIGV4cGFuZGVkIHRvCithcHByb3hpbWF0ZWx5IDMyLDAwMCBjaGFyYWN0ZXJzLiBZb3VyIGFkbWluaXN0cmF0b3Igd2lsbCBuZWVkIHRvIGFjdGl2YXRlIHRoZQorIkVuYWJsZSBXaW4zMiBsb25nIHBhdGhzIiBncm91cCBwb2xpY3ksIG9yIHNldCB0aGUgcmVnaXN0cnkgdmFsdWUKK2BgSEtFWV9MT0NBTF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXEZpbGVTeXN0ZW1ATG9uZ1BhdGhzRW5hYmxlZGBgCit0byBgYDFgYC4KKworVGhpcyBhbGxvd3MgdGhlIDpmdW5jOmBvcGVuYCBmdW5jdGlvbiwgdGhlIDptb2Q6YG9zYCBtb2R1bGUgYW5kIG1vc3Qgb3RoZXIKK3BhdGggZnVuY3Rpb25hbGl0eSB0byBhY2NlcHQgYW5kIHJldHVybiBwYXRocyBsb25nZXIgdGhhbiAyNjAgY2hhcmFjdGVycyB3aGVuCit1c2luZyBzdHJpbmdzLiAoVXNlIG9mIGJ5dGVzIGFzIHBhdGhzIGlzIGRlcHJlY2F0ZWQgb24gV2luZG93cywgYW5kIHRoaXMgZmVhdHVyZQoraXMgbm90IGF2YWlsYWJsZSB3aGVuIHVzaW5nIGJ5dGVzLikKKworQWZ0ZXIgY2hhbmdpbmcgdGhlIGFib3ZlIG9wdGlvbiwgbm8gZnVydGhlciBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBTdXBwb3J0IGZvciBsb25nIHBhdGhzIHdhcyBlbmFibGVkIGluIFB5dGhvbi4KKwogLi4gX2luc3RhbGwtcXVpZXQtb3B0aW9uOgogCiBJbnN0YWxsaW5nIFdpdGhvdXQgVUkKQEAgLTE2OCwxMyArMTkzLDEzIEBACiBGb3IgZXhhbXBsZSwgdG8gc2lsZW50bHkgaW5zdGFsbCBhIGRlZmF1bHQsIHN5c3RlbS13aWRlIFB5dGhvbiBpbnN0YWxsYXRpb24sCiB5b3UgY291bGQgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCAoZnJvbSBhbiBlbGV2YXRlZCBjb21tYW5kIHByb21wdCk6OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSAvcXVpZXQgSW5zdGFsbEFsbFVzZXJzPTEgUHJlcGVuZFBhdGg9MSBJbmNsdWRlX3Rlc3Q9MAorICAgIHB5dGhvbi0zLjYuMC5leGUgL3F1aWV0IEluc3RhbGxBbGxVc2Vycz0xIFByZXBlbmRQYXRoPTEgSW5jbHVkZV90ZXN0PTAKIAogVG8gYWxsb3cgdXNlcnMgdG8gZWFzaWx5IGluc3RhbGwgYSBwZXJzb25hbCBjb3B5IG9mIFB5dGhvbiB3aXRob3V0IHRoZSB0ZXN0CiBzdWl0ZSwgeW91IGNvdWxkIHByb3ZpZGUgYSBzaG9ydGN1dCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZC4gVGhpcyB3aWxsCiBkaXNwbGF5IGEgc2ltcGxpZmllZCBpbml0aWFsIHBhZ2UgYW5kIGRpc2FsbG93IGN1c3RvbWl6YXRpb246OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSBJbnN0YWxsQWxsVXNlcnM9MCBJbmNsdWRlX2xhdW5jaGVyPTAgSW5jbHVkZV90ZXN0PTAKKyAgICBweXRob24tMy42LjAuZXhlIEluc3RhbGxBbGxVc2Vycz0wIEluY2x1ZGVfbGF1bmNoZXI9MCBJbmNsdWRlX3Rlc3Q9MAogICAgICAgICBTaW1wbGVJbnN0YWxsPTEgU2ltcGxlSW5zdGFsbERlc2NyaXB0aW9uPSJKdXN0IGZvciBtZSwgbm8gdGVzdCBzdWl0ZS4iCiAKIChOb3RlIHRoYXQgb21pdHRpbmcgdGhlIGxhdW5jaGVyIGFsc28gb21pdHMgZmlsZSBhc3NvY2lhdGlvbnMsIGFuZCBpcyBvbmx5CkBAIC0yMDksMTMgKzIzNCwxMyBAQAogdXNlZnVsIHRvIGhhdmUgYSBsb2NhbGx5IGNhY2hlZCBjb3B5LgogCiBFeGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIENvbW1hbmQgUHJvbXB0IHRvIGRvd25sb2FkIGFsbCBwb3NzaWJsZQotcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNS4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCityZXF1aXJlZCBmaWxlcy4gIFJlbWVtYmVyIHRvIHN1YnN0aXR1dGUgYGBweXRob24tMy42LjAuZXhlYGAgZm9yIHRoZSBhY3R1YWwKIG5hbWUgb2YgeW91ciBpbnN0YWxsZXIsIGFuZCB0byBjcmVhdGUgbGF5b3V0cyBpbiB0aGVpciBvd24gZGlyZWN0b3JpZXMgdG8KIGF2b2lkIGNvbGxpc2lvbnMgYmV0d2VlbiBmaWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuCiAKIDo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIC9sYXlvdXQgW29wdGlvbmFsIHRhcmdldCBkaXJlY3RvcnldCisgICAgcHl0aG9uLTMuNi4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQogCiBZb3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgYGAvcXVpZXRgYCBvcHRpb24gdG8gaGlkZSB0aGUgcHJvZ3Jlc3MgZGlzcGxheS4KIApAQCAtMzIwLDcgKzM0NSw3IEBACiBUbyB0ZW1wb3JhcmlseSBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvcGVuIENvbW1hbmQgUHJvbXB0IGFuZCB1c2UgdGhlCiA6Y29tbWFuZDpgc2V0YCBjb21tYW5kOjoKIAotICAgIEM6XD5zZXQgUEFUSD1DOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjU7JVBBVEglCisgICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNjslUEFUSCUKICAgICBDOlw+c2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKICAgICBDOlw+cHl0aG9uCiAKQEAgLTM3NiwxMCArNDAxLDEwIEBACiAKIEJlc2lkZXMgdXNpbmcgdGhlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBzdGFydCBtZW51IGVudHJ5IGZvciB0aGUgUHl0aG9uCiBpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gVGhlCi1pbnN0YWxsZXIgZm9yIFB5dGhvbiAzLjUgYW5kIGxhdGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KK2luc3RhbGxlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCiAKLU9uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiAzLjUgdG8KLVBBVEgiIGNhbiBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCitPbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgaW5zdGFsbGVyLCBhbiBvcHRpb24gbGFiZWxsZWQgIkFkZCBQeXRob24gdG8gUEFUSCIKK21heSBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCiA6ZW52dmFyOmBQQVRIYC4gIFRoZSBsb2NhdGlvbiBvZiB0aGUgOmZpbGU6YFNjcmlwdHNcXGAgZm9sZGVyIGlzIGFsc28gYWRkZWQuCiBUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSA6Y29tbWFuZDpgcHl0aG9uYCB0byBydW4gdGhlIGludGVycHJldGVyLCBhbmQKIDpjb21tYW5kOmBwaXBgIGZvciB0aGUgcGFja2FnZSBpbnN0YWxsZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKQEAgLTM5Myw3ICs0MTgsNyBAQAogZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFscmVhZHkKIGV4aXN0ZWQpOjoKIAotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjUKKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy42CiAKIC4uIF9sYXVuY2hlcjoKIApAQCAtNDE4LDYgKzQ0Myw4IEBACiBGcm9tIHRoZSBjb21tYW5kLWxpbmUKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCiBTeXN0ZW0td2lkZSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiAzLjMgYW5kIGxhdGVyIHdpbGwgcHV0IHRoZSBsYXVuY2hlciBvbiB5b3VyCiA6ZW52dmFyOmBQQVRIYC4gVGhlIGxhdW5jaGVyIGlzIGNvbXBhdGlibGUgd2l0aCBhbGwgYXZhaWxhYmxlIHZlcnNpb25zIG9mCiBQeXRob24sIHNvIGl0IGRvZXMgbm90IG1hdHRlciB3aGljaCB2ZXJzaW9uIGlzIGluc3RhbGxlZC4gVG8gY2hlY2sgdGhhdCB0aGUKQEAgLTQyNywyNSArNDU0LDI2IEBACiAKICAgcHkKIAotWW91IHNob3VsZCBmaW5kIHRoYXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggeW91IGhhdmUgaW5zdGFsbGVkIGlzCitZb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIHlvdSBoYXZlIGluc3RhbGxlZCBpcwogc3RhcnRlZCAtIGl0IGNhbiBiZSBleGl0ZWQgYXMgbm9ybWFsLCBhbmQgYW55IGFkZGl0aW9uYWwgY29tbWFuZC1saW5lCiBhcmd1bWVudHMgc3BlY2lmaWVkIHdpbGwgYmUgc2VudCBkaXJlY3RseSB0byBQeXRob24uCiAKLUlmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiAyLnggaW5zdGFsbGVkIChlLmcuLCAyLjYgYW5kIDIuNykgeW91Ci13aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiAyLjcgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNiwgdHJ5IHRoZQorSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIGluc3RhbGxlZCAoZS5nLiwgMi43IGFuZCB8dmVyc2lvbnwpIHlvdQord2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gfHZlcnNpb258IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjcsIHRyeQordGhlIGNvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTIuNworCitJZiB5b3Ugd2FudCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQsIHRyeSB0aGUKIGNvbW1hbmQ6CiAKIDo6CiAKLSAgcHkgLTIuNgorICBweSAtMgogCi1JZiB5b3UgaGF2ZSBhIFB5dGhvbiAzLnggaW5zdGFsbGVkLCB0cnkgdGhlIGNvbW1hbmQ6Ci0KLTo6Ci0KLSAgcHkgLTMKLQotWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMy54IHN0YXJ0cy4KK1lvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCBzdGFydHMuCiAKIElmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciwgeW91IGRvIG5vdCBoYXZlIHRoZSBsYXVuY2hlciBpbnN0YWxsZWQ6CiAKQEAgLTUwMCw2ICs1MjgsMTEgQEAKIGZpcnN0IGxpbmUgdG8gYGAjISBweXRob24yLjZgYCBhbmQgeW91IHNob3VsZCBmaW5kIHRoZSAyLjYgdmVyc2lvbgogaW5mb3JtYXRpb24gcHJpbnRlZC4KIAorTm90ZSB0aGF0IHVubGlrZSBpbnRlcmFjdGl2ZSB1c2UsIGEgYmFyZSAicHl0aG9uIiB3aWxsIHVzZSB0aGUgbGF0ZXN0Cit2ZXJzaW9uIG9mIFB5dGhvbiAyLnggdGhhdCB5b3UgaGF2ZSBpbnN0YWxsZWQuICBUaGlzIGlzIGZvciBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSBhbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBVbml4LCB3aGVyZSB0aGUgY29tbWFuZCBgYHB5dGhvbmBgCit0eXBpY2FsbHkgcmVmZXJzIHRvIFB5dGhvbiAyLgorCiBGcm9tIGZpbGUgYXNzb2NpYXRpb25zCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKQEAgLTY3Niw3ICs3MDksNyBAQAogCiAKIAotLi4gZmluZGluZ19tb2R1bGVzOgorLi4gX2ZpbmRpbmdfbW9kdWxlczoKIAogRmluZGluZyBtb2R1bGVzCiA9PT09PT09PT09PT09PT0KQEAgLTY4Nyw3ICs3MjAsMjQgQEAKIDpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgogOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KIAotVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKK1RvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgOmRhdGE6YHN5cy5wYXRoYCwgY3JlYXRlIGEgYGAuX3B0aGBgIGZpbGUgd2l0aCB0aGUgc2FtZQorbmFtZSBhcyB0aGUgRExMIChgYHB5dGhvbjM2Ll9wdGhgYCkgb3IgdGhlIGV4ZWN1dGFibGUgKGBgcHl0aG9uLl9wdGhgYCkgYW5kCitzcGVjaWZ5IG9uZSBsaW5lIGZvciBlYWNoIHBhdGggdG8gYWRkIHRvIDpkYXRhOmBzeXMucGF0aGAuIFRoZSBmaWxlIGJhc2VkIG9uIHRoZQorRExMIG5hbWUgb3ZlcnJpZGVzIHRoZSBvbmUgYmFzZWQgb24gdGhlIGV4ZWN1dGFibGUsIHdoaWNoIGFsbG93cyBwYXRocyB0byBiZQorcmVzdHJpY3RlZCBmb3IgYW55IHByb2dyYW0gbG9hZGluZyB0aGUgcnVudGltZSBpZiBkZXNpcmVkLgorCitXaGVuIHRoZSBmaWxlIGV4aXN0cywgYWxsIHJlZ2lzdHJ5IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGlnbm9yZWQsCitpc29sYXRlZCBtb2RlIGlzIGVuYWJsZWQsIGFuZCA6bW9kOmBzaXRlYCBpcyBub3QgaW1wb3J0ZWQgdW5sZXNzIG9uZSBsaW5lIGluIHRoZQorZmlsZSBzcGVjaWZpZXMgYGBpbXBvcnQgc2l0ZWBgLiBCbGFuayBwYXRocyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCBgYCNgYCBhcmUKK2lnbm9yZWQuIEVhY2ggcGF0aCBtYXkgYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlLgorSW1wb3J0IHN0YXRlbWVudHMgb3RoZXIgdGhhbiB0byBgYHNpdGVgYCBhcmUgbm90IHBlcm1pdHRlZCwgYW5kIGFyYml0cmFyeSBjb2RlCitjYW5ub3QgYmUgc3BlY2lmaWVkLgorCitOb3RlIHRoYXQgYGAucHRoYGAgZmlsZXMgKHdpdGhvdXQgbGVhZGluZyB1bmRlcnNjb3JlKSB3aWxsIGJlIHByb2Nlc3NlZCBub3JtYWxseQorYnkgdGhlIDptb2Q6YHNpdGVgIG1vZHVsZS4KKworV2hlbiBubyBgYC5fcHRoYGAgZmlsZSBpcyBmb3VuZCwgdGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24KK1dpbmRvd3M6CiAKICogQW4gZW1wdHkgZW50cnkgaXMgYWRkZWQgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudAogICBkaXJlY3RvcnkuCkBAIC03MDYsMTAgKzc1NiwxMSBAQAogCiAqIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05IT01FYCBpcyBzZXQsIGl0IGlzIGFzc3VtZWQgYXMKICAgIlB5dGhvbiBIb21lIi4gIE90aGVyd2lzZSwgdGhlIHBhdGggb2YgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUgaXMgdXNlZCB0bwotICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGBgTGliXG9zLnB5YGApIHRvIGRlZHVjZSB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEKLSAgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYAotICAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0IGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUKLSAgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aCBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgorICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGVpdGhlciBgYExpYlxvcy5weWBgIG9yIGBgcHl0aG9uWFkuemlwYGApIHRvIGRlZHVjZQorICB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMKKyAgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYCAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0CisgIGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aAorICBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgogCiAqIElmIHRoZSBQeXRob24gSG9tZSBjYW5ub3QgYmUgbG9jYXRlZCwgbm8gOmVudnZhcjpgUFlUSE9OUEFUSGAgaXMgc3BlY2lmaWVkIGluCiAgIHRoZSBlbnZpcm9ubWVudCwgYW5kIG5vIHJlZ2lzdHJ5IGVudHJpZXMgY2FuIGJlIGZvdW5kLCBhIGRlZmF1bHQgcGF0aCB3aXRoCkBAIC03MjIsMTAgKzc3Myw2IEBACiAgIHBhdGggaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwYXRoIHRvIHRoZSBtYWluIGV4ZWN1dGFibGUgd2hlbiBkZWR1Y2luZyB0aGUKICAgaG9tZSBsb2NhdGlvbi4KIAotKiBJZiBgYGFwcGxvY2FsYGAgaXMgc2V0IHRvIHRydWUsIHRoZSBgYGhvbWVgYCBwcm9wZXJ0eSBvciB0aGUgbWFpbiBleGVjdXRhYmxlCi0gIGlzIGFsd2F5cyB1c2VkIGFzIHRoZSBob21lIHBhdGgsIGFuZCBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHJlZ2lzdHJ5Ci0gIHZhbHVlcyBhZmZlY3RpbmcgdGhlIHBhdGggYXJlIGlnbm9yZWQuIFRoZSBsYW5kbWFyayBmaWxlIGlzIG5vdCBjaGVja2VkLgotCiBUaGUgZW5kIHJlc3VsdCBvZiBhbGwgdGhpcyBpczoKIAogKiBXaGVuIHJ1bm5pbmcgOmZpbGU6YHB5dGhvbi5leGVgLCBvciBhbnkgb3RoZXIgLmV4ZSBpbiB0aGUgbWFpbiBQeXRob24KQEAgLTc0NCwxMyArNzkxLDEyIEBACiBGb3IgdGhvc2Ugd2hvIHdhbnQgdG8gYnVuZGxlIFB5dGhvbiBpbnRvIHRoZWlyIGFwcGxpY2F0aW9uIG9yIGRpc3RyaWJ1dGlvbiwgdGhlCiBmb2xsb3dpbmcgYWR2aWNlIHdpbGwgcHJldmVudCBjb25mbGljdHMgd2l0aCBvdGhlciBpbnN0YWxsYXRpb25zOgogCi0qIEluY2x1ZGUgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGFsb25nc2lkZSB5b3VyIGV4ZWN1dGFibGUgY29udGFpbmluZwotICBgYGFwcGxvY2FsID0gdHJ1ZWBgLiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgeW91ciBvd24gZGlyZWN0b3J5IHdpbGwgYmUgdXNlZCB0bwotICByZXNvbHZlIHBhdGhzIGV2ZW4gaWYgeW91IGhhdmUgaW5jbHVkZWQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW4gYSBaSVAgZmlsZS4KLSAgSXQgd2lsbCBhbHNvIGlnbm9yZSB1c2VyIHNpdGUtcGFja2FnZXMgYW5kIG90aGVyIHBhdGhzIGxpc3RlZCBpbiB0aGUKLSAgcmVnaXN0cnkuCisqIEluY2x1ZGUgYSBgYC5fcHRoYGAgZmlsZSBhbG9uZ3NpZGUgeW91ciBleGVjdXRhYmxlIGNvbnRhaW5pbmcgdGhlCisgIGRpcmVjdG9yaWVzIHRvIGluY2x1ZGUuIFRoaXMgd2lsbCBpZ25vcmUgcGF0aHMgbGlzdGVkIGluIHRoZSByZWdpc3RyeSBhbmQKKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgYWxzbyBpZ25vcmUgOm1vZDpgc2l0ZWAgdW5sZXNzIGBgaW1wb3J0IHNpdGVgYCBpcworICBsaXN0ZWQuCiAKLSogSWYgeW91IGFyZSBsb2FkaW5nIDpmaWxlOmBweXRob24zLmRsbGAgb3IgOmZpbGU6YHB5dGhvbjM1LmRsbGAgaW4geW91ciBvd24KKyogSWYgeW91IGFyZSBsb2FkaW5nIDpmaWxlOmBweXRob24zLmRsbGAgb3IgOmZpbGU6YHB5dGhvbjM2LmRsbGAgaW4geW91ciBvd24KICAgZXhlY3V0YWJsZSwgZXhwbGljaXRseSBjYWxsIDpjOmZ1bmM6YFB5X1NldFBhdGhgIG9yIChhdCBsZWFzdCkKICAgOmM6ZnVuYzpgUHlfU2V0UHJvZ3JhbU5hbWVgIGJlZm9yZSA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIApAQCAtNzYwLDcgKzgwNiw4IEBACiAqIElmIHlvdSBjYW5ub3QgdXNlIHRoZSBwcmV2aW91cyBzdWdnZXN0aW9ucyAoZm9yIGV4YW1wbGUsIHlvdSBhcmUgYQogICBkaXN0cmlidXRpb24gdGhhdCBhbGxvd3MgcGVvcGxlIHRvIHJ1biA6ZmlsZTpgcHl0aG9uLmV4ZWAgZGlyZWN0bHkpLCBlbnN1cmUKICAgdGhhdCB0aGUgbGFuZG1hcmsgZmlsZSAoOmZpbGU6YExpYlxcb3MucHlgKSBleGlzdHMgaW4geW91ciBpbnN0YWxsIGRpcmVjdG9yeS4KLSAgKE5vdGUgdGhhdCBpdCB3aWxsIG5vdCBiZSBkZXRlY3RlZCBpbnNpZGUgYSBaSVAgZmlsZS4pCisgIChOb3RlIHRoYXQgaXQgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgaW5zaWRlIGEgWklQIGZpbGUsIGJ1dCBhIGNvcnJlY3RseSBuYW1lZAorICBaSVAgZmlsZSB3aWxsIGJlIGRldGVjdGVkIGluc3RlYWQuKQogCiBUaGVzZSB3aWxsIGVuc3VyZSB0aGF0IHRoZSBmaWxlcyBpbiBhIHN5c3RlbS13aWRlIGluc3RhbGxhdGlvbiB3aWxsIG5vdCB0YWtlCiBwcmVjZWRlbmNlIG92ZXIgdGhlIGNvcHkgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYnVuZGxlZCB3aXRoIHlvdXIgYXBwbGljYXRpb24uCkBAIC03NjgsNiArODE1LDE0IEBACiB0aGUgZmlyc3Qgc3VnZ2VzdGlvbiBpcyB0aGUgYmVzdCwgYXMgdGhlIG90aGVyIG1heSBzdGlsbCBiZSBzdXNjZXB0aWJsZSB0bwogbm9uLXN0YW5kYXJkIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhbmQgdXNlciBzaXRlLXBhY2thZ2VzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAzLjYKKworICAgICAgKiBBZGRzIGBgLl9wdGhgYCBmaWxlIHN1cHBvcnQgYW5kIHJlbW92ZXMgYGBhcHBsb2NhbGBgIG9wdGlvbiBmcm9tCisgICAgICAgIGBgcHl2ZW52LmNmZ2BgLgorICAgICAgKiBBZGRzIGBgcHl0aG9uWFguemlwYGAgYXMgYSBwb3RlbnRpYWwgbGFuZG1hcmsgd2hlbiBkaXJlY3RseSBhZGphY2VudAorICAgICAgICB0byB0aGUgZXhlY3V0YWJsZS4KKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtODY3LDcgKzkyMiw3IEBACiBXaGVuIGV4dHJhY3RlZCwgdGhlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBpcyAoYWxtb3N0KSBmdWxseSBpc29sYXRlZCBmcm9tIHRoZQogdXNlcidzIHN5c3RlbSwgaW5jbHVkaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgc3lzdGVtIHJlZ2lzdHJ5IHNldHRpbmdzLCBhbmQKIGluc3RhbGxlZCBwYWNrYWdlcy4gVGhlIHN0YW5kYXJkIGxpYnJhcnkgaXMgaW5jbHVkZWQgYXMgcHJlLWNvbXBpbGVkIGFuZAotb3B0aW1pemVkIGBgLnB5Y2BgIGZpbGVzIGluIGEgWklQLCBhbmQgYGBweXRob24zLmRsbGBgLCBgYHB5dGhvbjM1LmRsbGBgLAorb3B0aW1pemVkIGBgLnB5Y2BgIGZpbGVzIGluIGEgWklQLCBhbmQgYGBweXRob24zLmRsbGBgLCBgYHB5dGhvbjM2LmRsbGBgLAogYGBweXRob24uZXhlYGAgYW5kIGBgcHl0aG9udy5leGVgYCBhcmUgYWxsIHByb3ZpZGVkLiBUY2wvdGsgKGluY2x1ZGluZyBhbGwKIGRlcGVuZGFudHMsIHN1Y2ggYXMgSWRsZSksIHBpcCBhbmQgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGFyZSBub3QgaW5jbHVkZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjEucnN0IGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKaW5kZXggMDYzNjZiOC4uNmFhZTcyNiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKQEAgLTM2Nyw3ICszNjcsNyBAQAogCiBUaGlzIHZlcnNpb24gd29ya3MgZm9yIHNpbXBsZSB0aGluZ3Mgc3VjaCBhcyBpbnRlZ2VycywgYnV0IGl0IGhhcyBhIHNpZGUgZWZmZWN0OwogdGhlIGBgX2NhY2hlYGAgZGljdGlvbmFyeSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgcmV0dXJuIHZhbHVlcywgc28gdGhleSdsbAotbmV2ZXIgYmUgZGVhbGxvY2F0ZWQgdW50aWwgdGhlIFB5dGhvbiBwcm9jZXNzIGV4aXRzIGFuZCBjbGVhbnMgdXAgVGhpcyBpc24ndAorbmV2ZXIgYmUgZGVhbGxvY2F0ZWQgdW50aWwgdGhlIFB5dGhvbiBwcm9jZXNzIGV4aXRzIGFuZCBjbGVhbnMgdXAuIFRoaXMgaXNuJ3QKIHZlcnkgbm90aWNlYWJsZSBmb3IgaW50ZWdlcnMsIGJ1dCBpZiA6ZnVuYzpgZmAgcmV0dXJucyBhbiBvYmplY3QsIG9yIGEgZGF0YQogc3RydWN0dXJlIHRoYXQgdGFrZXMgdXAgYSBsb3Qgb2YgbWVtb3J5LCB0aGlzIGNhbiBiZSBhIHByb2JsZW0uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjIucnN0IGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKaW5kZXggOWFjYzczNC4uYjkwMGU3NyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMi5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKQEAgLTEyNTMsOSArMTI1Myw5IEBACiAKICAgICBAY29udGV4dG1hbmFnZXIKICAgICBkZWYgdHJhY2tfZW50cnlfYW5kX2V4aXQobmFtZSk6Ci0gICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgbmFtZSkKICAgICAgICAgeWllbGQKLSAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KG5hbWUpKQorICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgbmFtZSkKIAogRm9ybWVybHksIHRoaXMgd291bGQgaGF2ZSBvbmx5IGJlZW4gdXNhYmxlIGFzIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdAppbmRleCAwYzlmMmJiLi45M2IyOTdjIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdApAQCAtMTA4LDcgKzEwOCw3IEBACiB3aXRoIHRoZSBpbnRlcnByZXRlciBjb3JlLgogCiBUaGlzIFBFUCBhZGRzIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MsIGFuZCB0aGUKLTpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBzY3JpcHQgZm9yIGNvbW1hbmQtbGluZSBhY2Nlc3MgYW5kCitgYHB5dmVudmBgIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKIGFkbWluaXN0cmF0aW9uLiAgVGhlIFB5dGhvbiBpbnRlcnByZXRlciBjaGVja3MgZm9yIGEgYGBweXZlbnYuY2ZnYGAsCiBmaWxlIHdob3NlIGV4aXN0ZW5jZSBzaWduYWxzIHRoZSBiYXNlIG9mIGEgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeQogdHJlZS4KZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjQucnN0IGIvRG9jL3doYXRzbmV3LzMuNC5yc3QKaW5kZXggMWU1YzlkMS4uNzIzOThmOSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuNC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuNC5yc3QKQEAgLTE5Nyw3ICsxOTcsNyBAQAogYGBwaXBgYCBjb21tYW5kIHR5cGljYWxseSByZWZlcnMgdG8gdGhlIHNlcGFyYXRlbHkgaW5zdGFsbGVkIFB5dGhvbiAyCiB2ZXJzaW9uLgogCi1UaGUgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFuZCB0aGUgOm1vZDpgdmVudmAKK1RoZSBgYHB5dmVudmBgIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFuZCB0aGUgOm1vZDpgdmVudmAKIG1vZHVsZSBtYWtlIHVzZSBvZiB0aGUgOm1vZDpgZW5zdXJlcGlwYCBtb2R1bGUgdG8gbWFrZSBgYHBpcGBgIHJlYWRpbHkKIGF2YWlsYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gV2hlbiB1c2luZyB0aGUgY29tbWFuZCBsaW5lIHV0aWxpdHksCiBgYHBpcGBgIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0LCB3aGlsZSB3aGVuIHVzaW5nIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUKQEAgLTgyNCw3ICs4MjQsNyBAQAogOnRlcm06YHByb3Zpc2lvbmFsIEFQSWAuICBUaGVzZSBjbGFzc2VzIHByb3ZpZGUgYSBudW1iZXIgb2YgbmV3IG1ldGhvZHMgdGhhdAogbWFrZSBleHRyYWN0aW5nIGNvbnRlbnQgZnJvbSBhbmQgaW5zZXJ0aW5nIGNvbnRlbnQgaW50byBlbWFpbCBtZXNzYWdlcyBtdWNoCiBlYXNpZXIuICBGb3IgZGV0YWlscywgc2VlIHRoZSA6bW9kOmB+ZW1haWwuY29udGVudG1hbmFnZXJgIGRvY3VtZW50YXRpb24gYW5kCi10aGUgOnJlZjpgZW1haWwtY29udGVudG1hbmFnZXItYXBpLWV4YW1wbGVzYC4gIFRoZXNlIEFQSSBhZGRpdGlvbnMgY29tcGxldGUgdGhlCit0aGUgOnJlZjpgZW1haWwtZXhhbXBsZXNgLiAgVGhlc2UgQVBJIGFkZGl0aW9ucyBjb21wbGV0ZSB0aGUKIGJ1bGsgb2YgdGhlIHdvcmsgdGhhdCB3YXMgcGxhbm5lZCBhcyBwYXJ0IG9mIHRoZSBlbWFpbDYgcHJvamVjdC4gIFRoZSBjdXJyZW50bHkKIHByb3Zpc2lvbmFsIEFQSSBpcyBzY2hlZHVsZWQgdG8gYmVjb21lIGZpbmFsIGluIFB5dGhvbiAzLjUgKHBvc3NpYmx5IHdpdGggYSBmZXcKIG1pbm9yIGFkZGl0aW9ucyBpbiB0aGUgYXJlYSBvZiBlcnJvciBoYW5kbGluZykuICAoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQKQEAgLTE5ODksMTEgKzE5ODksMTEgQEAKICAgU3Rpbm5lciB1c2luZyBoaXMgOnBlcDpgNDQ1YC1iYXNlZCBgYHB5ZmFpbG1hbGxvY2BgIHRvb2wgKDppc3N1ZTpgMTg0MDhgLAogICA6aXNzdWU6YDE4NTIwYCkuCiAKLSogVGhlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBjb21tYW5kIG5vdyBhY2NlcHRzIGEgYGAtLWNvcGllc2BgIG9wdGlvbgorKiBUaGUgYGBweXZlbnZgYCBjb21tYW5kIG5vdyBhY2NlcHRzIGEgYGAtLWNvcGllc2BgIG9wdGlvbgogICB0byB1c2UgY29waWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzIGV2ZW4gb24gc3lzdGVtcyB3aGVyZSBzeW1saW5rcyBhcmUgdGhlCiAgIGRlZmF1bHQuICAoQ29udHJpYnV0ZWQgYnkgVmluYXkgU2FqaXAgaW4gOmlzc3VlOmAxODgwN2AuKQogCi0qIFRoZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgY29tbWFuZCBhbHNvIGFjY2VwdHMgYSBgYC0td2l0aG91dC1waXBgYAorKiBUaGUgYGBweXZlbnZgYCBjb21tYW5kIGFsc28gYWNjZXB0cyBhIGBgLS13aXRob3V0LXBpcGBgCiAgIG9wdGlvbiB0byBzdXBwcmVzcyB0aGUgb3RoZXJ3aXNlLWF1dG9tYXRpYyBib290c3RyYXBwaW5nIG9mIHBpcCBpbnRvCiAgIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiAgKENvbnRyaWJ1dGVkIGJ5IE5pY2sgQ29naGxhbiBpbiA6aXNzdWU6YDE5NTUyYAogICBhcyBwYXJ0IG9mIHRoZSA6cGVwOmA0NTNgIGltcGxlbWVudGF0aW9uLikKQEAgLTI0NTksNyArMjQ1OSw3IEBACiAgIHN0cmVhbSBpbiA6bW9kOmB+aW8uVGV4dElPV3JhcHBlcmAgdG8gdXNlIGl0cyAqbmV3bGluZSogYXJndW1lbnQKICAgKDppc3N1ZTpgMTUyMDRgKS4KIAotKiBJZiB5b3UgdXNlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBpbiBhIHNjcmlwdCBhbmQgZGVzaXJlIHRoYXQgcGlwCisqIElmIHlvdSB1c2UgYGBweXZlbnZgYCBpbiBhIHNjcmlwdCBhbmQgZGVzaXJlIHRoYXQgcGlwCiAgICpub3QqIGJlIGluc3RhbGxlZCwgeW91IG11c3QgYWRkIGBgLS13aXRob3V0LXBpcGBgIHRvIHlvdXIgY29tbWFuZAogICBpbnZvY2F0aW9uLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdCBiL0RvYy93aGF0c25ldy8zLjUucnN0CmluZGV4IDJlZjRlOTEuLjI0NmQ5YzUgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjUucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjUucnN0CkBAIC00Niw3ICs0Niw4IEBACiAKIFRoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjUsIGNvbXBhcmVkIHRvIDMuNC4KIFB5dGhvbiAzLjUgd2FzIHJlbGVhc2VkIG9uIFNlcHRlbWJlciAxMywgMjAxNS4gwqBTZWUgdGhlCi06cmVmOmBjaGFuZ2Vsb2cgPGNoYW5nZWxvZz5gIGZvciBhIGZ1bGwgbGlzdCBvZiBjaGFuZ2VzLgorYGNoYW5nZWxvZyA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3L2NoYW5nZWxvZy5odG1sPmBfIGZvciBhIGZ1bGwKK2xpc3Qgb2YgY2hhbmdlcy4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIxNzUsOCArMjE3Niw3IEBACiAKICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYCwKICogOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCwKLSogOmM6ZnVuYzpgX1B5T2JqZWN0X0dDX0NhbGxvY2AuCisqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AuCiAKIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIxMjMzYC4pCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjYucnN0IGIvRG9jL3doYXRzbmV3LzMuNi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdjODU3NAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy93aGF0c25ldy8zLjYucnN0CkBAIC0wLDAgKzEsMTQ3NiBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICBXaGF0J3MgTmV3IEluIFB5dGhvbiAzLjYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOlJlbGVhc2U6IHxyZWxlYXNlfAorOkRhdGU6IHx0b2RheXwKKworLi4gUnVsZXMgZm9yIG1haW50ZW5hbmNlOgorCisgICAqIEFueW9uZSBjYW4gYWRkIHRleHQgdG8gdGhpcyBkb2N1bWVudC4gIERvIG5vdCBzcGVuZCB2ZXJ5IG11Y2ggdGltZQorICAgb24gdGhlIHdvcmRpbmcgb2YgeW91ciBjaGFuZ2VzLCBiZWNhdXNlIHlvdXIgdGV4dCB3aWxsIHByb2JhYmx5CisgICBnZXQgcmV3cml0dGVuIHRvIHNvbWUgZGVncmVlLgorCisgICAqIFRoZSBtYWludGFpbmVyIHdpbGwgZ28gdGhyb3VnaCBNaXNjL05FV1MgcGVyaW9kaWNhbGx5IGFuZCBhZGQKKyAgIGNoYW5nZXM7IGl0J3MgdGhlcmVmb3JlIG1vcmUgaW1wb3J0YW50IHRvIGFkZCB5b3VyIGNoYW5nZXMgdG8KKyAgIE1pc2MvTkVXUyB0aGFuIHRvIHRoaXMgZmlsZS4KKworICAgKiBUaGlzIGlzIG5vdCBhIGNvbXBsZXRlIGxpc3Qgb2YgZXZlcnkgc2luZ2xlIGNoYW5nZTsgY29tcGxldGVuZXNzCisgICBpcyB0aGUgcHVycG9zZSBvZiBNaXNjL05FV1MuICBTb21lIGNoYW5nZXMgSSBjb25zaWRlciB0b28gc21hbGwKKyAgIG9yIGVzb3RlcmljIHRvIGluY2x1ZGUuICBJZiBzdWNoIGEgY2hhbmdlIGlzIGFkZGVkIHRvIHRoZSB0ZXh0LAorICAgSSdsbCBqdXN0IHJlbW92ZSBpdC4gIChUaGlzIGlzIGFub3RoZXIgcmVhc29uIHlvdSBzaG91bGRuJ3Qgc3BlbmQKKyAgIHRvbyBtdWNoIHRpbWUgb24gd3JpdGluZyB5b3VyIGFkZGl0aW9uLikKKworICAgKiBJZiB5b3Ugd2FudCB0byBkcmF3IHlvdXIgbmV3IHRleHQgdG8gdGhlIGF0dGVudGlvbiBvZiB0aGUKKyAgIG1haW50YWluZXIsIGFkZCAnWFhYJyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXJhZ3JhcGggb3IKKyAgIHNlY3Rpb24uCisKKyAgICogSXQncyBPSyB0byBqdXN0IGFkZCBhIGZyYWdtZW50YXJ5IG5vdGUgYWJvdXQgYSBjaGFuZ2UuICBGb3IKKyAgIGV4YW1wbGU6ICJYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZQorICAgc29ja2V0IG1vZHVsZS4iICBUaGUgbWFpbnRhaW5lciB3aWxsIHJlc2VhcmNoIHRoZSBjaGFuZ2UgYW5kCisgICB3cml0ZSB0aGUgbmVjZXNzYXJ5IHRleHQuCisKKyAgICogWW91IGNhbiBjb21tZW50IG91dCB5b3VyIGFkZGl0aW9ucyBpZiB5b3UgbGlrZSwgYnV0IGl0J3Mgbm90CisgICBuZWNlc3NhcnkgKGVzcGVjaWFsbHkgd2hlbiBhIGZpbmFsIHJlbGVhc2UgaXMgc29tZSBtb250aHMgYXdheSkuCisKKyAgICogQ3JlZGl0IHRoZSBhdXRob3Igb2YgYSBwYXRjaCBvciBidWdmaXguICAgSnVzdCB0aGUgbmFtZSBpcworICAgc3VmZmljaWVudDsgdGhlIGUtbWFpbCBhZGRyZXNzIGlzbid0IG5lY2Vzc2FyeS4KKworICAgKiBJdCdzIGhlbHBmdWwgdG8gYWRkIHRoZSBidWcvcGF0Y2ggbnVtYmVyIGFzIGEgY29tbWVudDoKKworICAgWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUgc29ja2V0CisgICBtb2R1bGUuCisgICAoQ29udHJpYnV0ZWQgYnkgUC5ZLiBEZXZlbG9wZXIgaW4gOmlzc3VlOmAxMjM0NWAuKQorCisgICBUaGlzIHNhdmVzIHRoZSBtYWludGFpbmVyIHRoZSBlZmZvcnQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgTWVyY3VyaWFsIGxvZworICAgd2hlbiByZXNlYXJjaGluZyBhIGNoYW5nZS4KKworVGhpcyBhcnRpY2xlIGV4cGxhaW5zIHRoZSBuZXcgZmVhdHVyZXMgaW4gUHl0aG9uIDMuNiwgY29tcGFyZWQgdG8gMy41LgorCitGb3IgZnVsbCBkZXRhaWxzLCBzZWUgdGhlIDpyZWY6YGNoYW5nZWxvZyA8Y2hhbmdlbG9nPmAuCisKKy4uIG5vdGU6OgorCisgICBQcmVyZWxlYXNlIHVzZXJzIHNob3VsZCBiZSBhd2FyZSB0aGF0IHRoaXMgZG9jdW1lbnQgaXMgY3VycmVudGx5IGluIGRyYWZ0CisgICBmb3JtLiBJdCB3aWxsIGJlIHVwZGF0ZWQgc3Vic3RhbnRpYWxseSBhcyBQeXRob24gMy42IG1vdmVzIHRvd2FyZHMgcmVsZWFzZSwKKyAgIHNvIGl0J3Mgd29ydGggY2hlY2tpbmcgYmFjayBldmVuIGFmdGVyIHJlYWRpbmcgZWFybGllciB2ZXJzaW9ucy4KKworCitTdW1tYXJ5IC0tIFJlbGVhc2UgaGlnaGxpZ2h0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gVGhpcyBzZWN0aW9uIHNpbmdsZXMgb3V0IHRoZSBtb3N0IGltcG9ydGFudCBjaGFuZ2VzIGluIFB5dGhvbiAzLjYuCisgICBCcmV2aXR5IGlzIGtleS4KKworTmV3IHN5bnRheCBmZWF0dXJlczoKKworKiBBIGBgZ2xvYmFsYGAgb3IgYGBub25sb2NhbGBgIHN0YXRlbWVudCBtdXN0IG5vdyB0ZXh0dWFsbHkgYXBwZWFyCisgIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mIHRoZSBhZmZlY3RlZCBuYW1lIGluIHRoZSBzYW1lIHNjb3BlLgorICBQcmV2aW91c2x5IHRoaXMgd2FzIGEgU3ludGF4V2FybmluZy4KKworKiBQRVAgNDk4OiA6cmVmOmBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDx3aGF0c25ldy1mc3RyaW5ncz5gCisKKyogUEVQIDUxNTogVW5kZXJzY29yZXMgaW4gTnVtZXJpYyBMaXRlcmFscworCisqIFBFUCA1MjY6IDpyZWY6YFN5bnRheCBmb3IgVmFyaWFibGUgQW5ub3RhdGlvbnMgPHZhcmlhYmxlLWFubm90YXRpb25zPmAKKworKiBQRVAgNTI1OiBBc3luY2hyb25vdXMgR2VuZXJhdG9ycworCisqIFBFUCA1MzA6IEFzeW5jaHJvbm91cyBDb21wcmVoZW5zaW9ucworCitTdGFuZGFyZCBsaWJyYXJ5IGltcHJvdmVtZW50czoKKworU2VjdXJpdHkgaW1wcm92ZW1lbnRzOgorCisqIE9uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGJsb2NrcyB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sCisgIGlzIGluaXRpYWxpemVkIHRvIGluY3JlYXNlIHRoZSBzZWN1cml0eS4gU2VlIHRoZSA6cGVwOmA1MjRgIGZvciB0aGUKKyAgcmF0aW9uYWxlLgorCisqIDptb2Q6YGhhc2hsaWJgIGFuZCA6bW9kOmBzc2xgIG5vdyBzdXBwb3J0IE9wZW5TU0wgMS4xLjAuCisKKyogVGhlIGRlZmF1bHQgc2V0dGluZ3MgYW5kIGZlYXR1cmUgc2V0IG9mIHRoZSA6bW9kOmBzc2xgIGhhdmUgYmVlbiBpbXByb3ZlZC4KKworKiBUaGUgOm1vZDpgaGFzaGxpYmAgbW9kdWxlIGhhcyBnb3Qgc3VwcG9ydCBmb3IgQkxBS0UyLCBTSEEtMyBhbmQgU0hBS0UgaGFzaAorICBhbGdvcml0aG1zIGFuZCA6ZnVuYzpgfmhhc2hsaWIuc2NyeXB0YCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4KKworV2luZG93cyBpbXByb3ZlbWVudHM6CisKKyogUEVQIDUyOTogOnJlZjpgQ2hhbmdlIFdpbmRvd3MgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBVVEYtOCA8cGVwLTUyOT5gCisKKyogUEVQIDUyODogOnJlZjpgQ2hhbmdlIFdpbmRvd3MgY29uc29sZSBlbmNvZGluZyB0byBVVEYtOCA8cGVwLTUyOD5gCisKKyogVGhlIGBgcHkuZXhlYGAgbGF1bmNoZXIsIHdoZW4gdXNlZCBpbnRlcmFjdGl2ZWx5LCBubyBsb25nZXIgcHJlZmVycworICBQeXRob24gMiBvdmVyIFB5dGhvbiAzIHdoZW4gdGhlIHVzZXIgZG9lc24ndCBzcGVjaWZ5IGEgdmVyc2lvbiAodmlhCisgIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb3IgYSBjb25maWcgZmlsZSkuICBIYW5kbGluZyBvZiBzaGViYW5nIGxpbmVzCisgIHJlbWFpbnMgdW5jaGFuZ2VkIC0gInB5dGhvbiIgcmVmZXJzIHRvIFB5dGhvbiAyIGluIHRoYXQgY2FzZS4KKworKiBgYHB5dGhvbi5leGVgYCBhbmQgYGBweXRob253LmV4ZWBgIGhhdmUgYmVlbiBtYXJrZWQgYXMgbG9uZy1wYXRoIGF3YXJlLAorICB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIDI2MCBjaGFyYWN0ZXIgcGF0aCBsaW1pdCBtYXkgbm8gbG9uZ2VyIGFwcGx5LgorICBTZWUgOnJlZjpgcmVtb3ZpbmcgdGhlIE1BWF9QQVRIIGxpbWl0YXRpb24gPG1heC1wYXRoPmAgZm9yIGRldGFpbHMuCisKKyogQSBgYC5fcHRoYGAgZmlsZSBjYW4gYmUgYWRkZWQgdG8gZm9yY2UgaXNvbGF0ZWQgbW9kZSBhbmQgZnVsbHkgc3BlY2lmeQorICBhbGwgc2VhcmNoIHBhdGhzIHRvIGF2b2lkIHJlZ2lzdHJ5IGFuZCBlbnZpcm9ubWVudCBsb29rdXAuIFNlZQorICA6cmVmOmB0aGUgZG9jdW1lbnRhdGlvbiA8ZmluZGluZ19tb2R1bGVzPmAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyogQSBgYHB5dGhvbjM2LnppcGBgIGZpbGUgbm93IHdvcmtzIGFzIGEgbGFuZG1hcmsgdG8gaW5mZXIKKyAgOmVudnZhcjpgUFlUSE9OSE9NRWAuIFNlZSA6cmVmOmB0aGUgZG9jdW1lbnRhdGlvbiA8ZmluZGluZ19tb2R1bGVzPmAgZm9yCisgIG1vcmUgaW5mb3JtYXRpb24uCisKKy4uIFBFUC1zaXplZCBpdGVtcyBuZXh0LgorCisuLiBfcGVwLTRYWDoKKworLi4gUEVQIDRYWDogVmlydHVhbCBFbnZpcm9ubWVudHMKKy4uID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworLi4gKEltcGxlbWVudGVkIGJ5IEZvbyBCYXIuKQorCisuLiAuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDRYWGAgLSBQeXRob24gVmlydHVhbCBFbnZpcm9ubWVudHMKKyAgICAgICBQRVAgd3JpdHRlbiBieSBDYXJsIE1leWVyCisKK05ldyBidWlsdC1pbiBmZWF0dXJlczoKKworKiBQRVAgNTIwOiA6cmVmOmBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyPHdoYXRzbmV3LWRlZm9yZGVyPmAKKworKiBQRVAgNDY4OiA6cmVmOmBQcmVzZXJ2aW5nIEtleXdvcmQgQXJndW1lbnQgT3JkZXI8d2hhdHNuZXcta3dhcmdzPmAKKworQSBjb21wbGV0ZSBsaXN0IG9mIFBFUCdzIGltcGxlbWVudGVkIGluIFB5dGhvbiAzLjY6CisKKyogOnBlcDpgNDY4YCwgOnJlZjpgUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyPHdoYXRzbmV3LWt3YXJncz5gCisqIDpwZXA6YDQ4N2AsIDpyZWY6YFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbjx3aGF0c25ldy1wZXA0ODc+YAorKiA6cGVwOmA0OTVgLCBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uCisqIDpwZXA6YDQ5OGAsIDpyZWY6YEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPHdoYXRzbmV3LWZzdHJpbmdzPmAKKyogOnBlcDpgNTA2YCwgQWRkaW5nIEEgU2VjcmV0cyBNb2R1bGUgVG8gVGhlIFN0YW5kYXJkIExpYnJhcnkKKyogOnBlcDpgNTA5YCwgOnJlZjpgQWRkIGEgcHJpdmF0ZSB2ZXJzaW9uIHRvIGRpY3Q8d2hhdHNuZXctcGVwNTA5PmAKKyogOnBlcDpgNTE1YCwgOnJlZjpgVW5kZXJzY29yZXMgaW4gTnVtZXJpYyBMaXRlcmFsczxwZXAtNTE1PmAKKyogOnBlcDpgNTE5YCwgOnJlZjpgQWRkaW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbDxwZXAtNTE5PmAKKyogOnBlcDpgNTIwYCwgOnJlZjpgUHJlc2VydmluZyBDbGFzcyBBdHRyaWJ1dGUgRGVmaW5pdGlvbiBPcmRlcjx3aGF0c25ldy1kZWZvcmRlcj5gCisqIDpwZXA6YDUyM2AsIDpyZWY6YEFkZGluZyBhIGZyYW1lIGV2YWx1YXRpb24gQVBJIHRvIENQeXRob248cGVwLTUyMz5gCisqIDpwZXA6YDUyNGAsIE1ha2Ugb3MudXJhbmRvbSgpIGJsb2NraW5nIG9uIExpbnV4IChkdXJpbmcgc3lzdGVtIHN0YXJ0dXApCisqIDpwZXA6YDUyNWAsIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzIChwcm92aXNpb25hbCkKKyogOnBlcDpgNTI2YCwgOnJlZjpgU3ludGF4IGZvciBWYXJpYWJsZSBBbm5vdGF0aW9ucyAocHJvdmlzaW9uYWwpPHZhcmlhYmxlLWFubm90YXRpb25zPmAKKyogOnBlcDpgNTI4YCwgOnJlZjpgQ2hhbmdlIFdpbmRvd3MgY29uc29sZSBlbmNvZGluZyB0byBVVEYtOCAocHJvdmlzaW9uYWwpPHBlcC01Mjg+YAorKiA6cGVwOmA1MjlgLCA6cmVmOmBDaGFuZ2UgV2luZG93cyBmaWxlc3lzdGVtIGVuY29kaW5nIHRvIFVURi04IChwcm92aXNpb25hbCk8cGVwLTUyOT5gCisqIDpwZXA6YDUzMGAsIEFzeW5jaHJvbm91cyBDb21wcmVoZW5zaW9ucworCisKK05ldyBGZWF0dXJlcworPT09PT09PT09PT09CisKKy4uIF9wZXAtNTE1OgorCitQRVAgNTE1OiBVbmRlcnNjb3JlcyBpbiBOdW1lcmljIExpdGVyYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1ByaW9yIHRvIFBFUCA1MTUsIHRoZXJlIHdhcyBubyBzdXBwb3J0IGZvciB3cml0aW5nIGxvbmcgbnVtZXJpYworbGl0ZXJhbHMgd2l0aCBzb21lIGZvcm0gb2Ygc2VwYXJhdG9yIHRvIGltcHJvdmUgcmVhZGFiaWxpdHkuIEZvcgoraW5zdGFuY2UsIGhvdyBiaWcgaXMgYGAxMDAwMDAwMDAwMDAwMDAwYGA/IFdpdGggOnBlcDpgNTE1YCwgdGhvdWdoLAoreW91IGNhbiB1c2UgdW5kZXJzY29yZXMgdG8gc2VwYXJhdGUgZGlnaXRzIGFzIGRlc2lyZWQgdG8gbWFrZSBudW1lcmljCitsaXRlcmFscyBlYXNpZXIgdG8gcmVhZDogYGAxXzAwMF8wMDBfMDAwXzAwMF8wMDBgYC4gVW5kZXJzY29yZXMgY2FuIGJlCit1c2VkIHdpdGggb3RoZXIgbnVtZXJpYyBsaXRlcmFscyBiZXlvbmQgaW50ZWdlcnMsIGUuZy4KK2BgMHhfRkZfRkZfRkZfRkZgYC4KKworU2luZ2xlIHVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGJldHdlZW4gZGlnaXRzIGFuZCBhZnRlciBhbnkgYmFzZQorc3BlY2lmaWVyLiBNb3JlIHRoYW4gYSBzaW5nbGUgdW5kZXJzY29yZSBpbiBhIHJvdywgbGVhZGluZywgb3IKK3RyYWlsaW5nIHVuZGVyc2NvcmVzIGFyZSBub3QgYWxsb3dlZC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUxNWAgLS0gVW5kZXJzY29yZXMgaW4gTnVtZXJpYyBMaXRlcmFscworICAgICAgUEVQIHdyaXR0ZW4gYnkgR2VvcmcgQnJhbmRsIGFuZCBTZXJoaXkgU3RvcmNoYWthLgorCisKKy4uIF9wZXAtNTIzOgorCitQRVAgNTIzOiBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doaWxlIFB5dGhvbiBwcm92aWRlcyBleHRlbnNpdmUgc3VwcG9ydCB0byBjdXN0b21pemUgaG93IGNvZGUKK2V4ZWN1dGVzLCBvbmUgcGxhY2UgaXQgaGFzIG5vdCBkb25lIHNvIGlzIGluIHRoZSBldmFsdWF0aW9uIG9mIGZyYW1lCitvYmplY3RzLiBJZiB5b3Ugd2FudGVkIHNvbWUgd2F5IHRvIGludGVyY2VwdCBmcmFtZSBldmFsdWF0aW9uIGluCitQeXRob24gdGhlcmUgcmVhbGx5IHdhc24ndCBhbnkgd2F5IHdpdGhvdXQgZGlyZWN0bHkgbWFuaXB1bGF0aW5nCitmdW5jdGlvbiBwb2ludGVycyBmb3IgZGVmaW5lZCBmdW5jdGlvbnMuCisKKzpwZXA6YDUyM2AgY2hhbmdlcyB0aGlzIGJ5IHByb3ZpZGluZyBhbiBBUEkgdG8gbWFrZSBmcmFtZQorZXZhbHVhdGlvbiBwbHVnZ2FibGUgYXQgdGhlIEMgbGV2ZWwuIFRoaXMgd2lsbCBhbGxvdyBmb3IgdG9vbHMgc3VjaAorYXMgZGVidWdnZXJzIGFuZCBKSVRzIHRvIGludGVyY2VwdCBmcmFtZSBldmFsdWF0aW9uIGJlZm9yZSB0aGUKK2V4ZWN1dGlvbiBvZiBQeXRob24gY29kZSBiZWdpbnMuIFRoaXMgZW5hYmxlcyB0aGUgdXNlIG9mIGFsdGVybmF0aXZlCitldmFsdWF0aW9uIGltcGxlbWVudGF0aW9ucyBmb3IgUHl0aG9uIGNvZGUsIHRyYWNraW5nIGZyYW1lCitldmFsdWF0aW9uLCBldGMuCisKK1RoaXMgQVBJIGlzIG5vdCBwYXJ0IG9mIHRoZSBsaW1pdGVkIEMgQVBJIGFuZCBpcyBtYXJrZWQgYXMgcHJpdmF0ZSB0bworc2lnbmFsIHRoYXQgdXNhZ2Ugb2YgdGhpcyBBUEkgaXMgZXhwZWN0ZWQgdG8gYmUgbGltaXRlZCBhbmQgb25seQorYXBwbGljYWJsZSB0byB2ZXJ5IHNlbGVjdCwgbG93LWxldmVsIHVzZS1jYXNlcy4gU2VtYW50aWNzIG9mIHRoZQorQVBJIHdpbGwgY2hhbmdlIHdpdGggUHl0aG9uIGFzIG5lY2Vzc2FyeS4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA1MjNgIC0tIEFkZGluZyBhIGZyYW1lIGV2YWx1YXRpb24gQVBJIHRvIENQeXRob24KKyAgICAgICBQRVAgd3JpdHRlbiBieSBCcmV0dCBDYW5ub24gYW5kIERpbm8gVmllaGxhbmQuCisKKworLi4gX3BlcC01MTk6CisKK1BFUCA1MTk6IEFkZGluZyBhIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2wKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZSBzeXN0ZW0gcGF0aHMgaGF2ZSBoaXN0b3JpY2FsbHkgYmVlbiByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YHN0cmAKK29yIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMuIFRoaXMgaGFzIGxlZCB0byBwZW9wbGUgd2hvIHdyaXRlIGNvZGUgd2hpY2gKK29wZXJhdGUgb24gZmlsZSBzeXN0ZW0gcGF0aHMgdG8gYXNzdW1lIHRoYXQgc3VjaCBvYmplY3RzIGFyZSBvbmx5IG9uZQorb2YgdGhvc2UgdHdvIHR5cGVzIChhbiA6Y2xhc3M6YGludGAgcmVwcmVzZW50aW5nIGEgZmlsZSBkZXNjcmlwdG9yCitkb2VzIG5vdCBjb3VudCBhcyB0aGF0IGlzIG5vdCBhIGZpbGUgcGF0aCkuIFVuZm9ydHVuYXRlbHkgdGhhdAorYXNzdW1wdGlvbiBwcmV2ZW50cyBhbHRlcm5hdGl2ZSBvYmplY3QgcmVwcmVzZW50YXRpb25zIG9mIGZpbGUgc3lzdGVtCitwYXRocyBsaWtlIDptb2Q6YHBhdGhsaWJgIGZyb20gd29ya2luZyB3aXRoIHByZS1leGlzdGluZyBjb2RlLAoraW5jbHVkaW5nIFB5dGhvbidzIHN0YW5kYXJkIGxpYnJhcnkuCisKK1RvIGZpeCB0aGlzIHNpdHVhdGlvbiwgYSBuZXcgaW50ZXJmYWNlIHJlcHJlc2VudGVkIGJ5Cis6Y2xhc3M6YG9zLlBhdGhMaWtlYCBoYXMgYmVlbiBkZWZpbmVkLiBCeSBpbXBsZW1lbnRpbmcgdGhlCis6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIG1ldGhvZCwgYW4gb2JqZWN0IHNpZ25hbHMgdGhhdCBpdAorcmVwcmVzZW50cyBhIHBhdGguIEFuIG9iamVjdCBjYW4gdGhlbiBwcm92aWRlIGEgbG93LWxldmVsCityZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgc3lzdGVtIHBhdGggYXMgYSA6Y2xhc3M6YHN0cmAgb3IKKzpjbGFzczpgYnl0ZXNgIG9iamVjdC4gVGhpcyBtZWFucyBhbiBvYmplY3QgaXMgY29uc2lkZXJlZAorOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gIGlmIGl0IGltcGxlbWVudHMKKzpjbGFzczpgb3MuUGF0aExpa2VgIG9yIGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdAord2hpY2ggcmVwcmVzZW50cyBhIGZpbGUgc3lzdGVtIHBhdGguIENvZGUgY2FuIHVzZSA6ZnVuYzpgb3MuZnNwYXRoYCwKKzpmdW5jOmBvcy5mc2RlY29kZWAsIG9yIDpmdW5jOmBvcy5mc2VuY29kZWAgdG8gZXhwbGljaXRseSBnZXQgYQorOmNsYXNzOmBzdHJgIGFuZC9vciA6Y2xhc3M6YGJ5dGVzYCByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGgtbGlrZQorb2JqZWN0LgorCitUaGUgYnVpbHQtaW4gOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYWNjZXB0Cis6Y2xhc3M6YG9zLlBhdGhMaWtlYCBvYmplY3RzIGFzIGhhdmUgYWxsIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGUKKzptb2Q6YG9zYCBhbmQgOm1vZDpgb3MucGF0aGAgbW9kdWxlcy4gOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYAorYW5kIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0NvbnZlcnRlcmAgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gYWNjZXB0CitwYXRoLWxpa2Ugb2JqZWN0cy4gVGhlIDpjbGFzczpgb3MuRGlyRW50cnlgIGNsYXNzCithbmQgcmVsZXZhbnQgY2xhc3NlcyBpbiA6bW9kOmBwYXRobGliYCBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvCitpbXBsZW1lbnQgOmNsYXNzOmBvcy5QYXRoTGlrZWAuCisKK1RoZSBob3BlIGluIGlzIHRoYXQgdXBkYXRpbmcgdGhlIGZ1bmRhbWVudGFsIGZ1bmN0aW9ucyBmb3Igb3BlcmF0aW5nCitvbiBmaWxlIHN5c3RlbSBwYXRocyB3aWxsIGxlYWQgdG8gdGhpcmQtcGFydHkgY29kZSB0byBpbXBsaWNpdGx5CitzdXBwb3J0IGFsbCA6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YCB3aXRob3V0IGFueQorY29kZSBjaGFuZ2VzIG9yIGF0IGxlYXN0IHZlcnkgbWluaW1hbCBvbmVzIChlLmcuIGNhbGxpbmcKKzpmdW5jOmBvcy5mc3BhdGhgIGF0IHRoZSBiZWdpbm5pbmcgb2YgY29kZSBiZWZvcmUgb3BlcmF0aW5nIG9uIGEKK3BhdGgtbGlrZSBvYmplY3QpLgorCitIZXJlIGFyZSBzb21lIGV4YW1wbGVzIG9mIGhvdyB0aGUgbmV3IGludGVyZmFjZSBhbGxvd3MgZm9yCis6Y2xhc3M6YHBhdGhsaWIuUGF0aGAgdG8gYmUgdXNlZCBtb3JlIGVhc2lseSBhbmQgdHJhbnNwYXJlbnRseSB3aXRoCitwcmUtZXhpc3RpbmcgY29kZTo6CisKKyAgPj4+IGltcG9ydCBwYXRobGliCisgID4+PiB3aXRoIG9wZW4ocGF0aGxpYi5QYXRoKCJSRUFETUUiKSkgYXMgZjoKKyAgLi4uICAgICBjb250ZW50cyA9IGYucmVhZCgpCisgIC4uLgorICA+Pj4gaW1wb3J0IG9zLnBhdGgKKyAgPj4+IG9zLnBhdGguc3BsaXRleHQocGF0aGxpYi5QYXRoKCJzb21lX2ZpbGUudHh0IikpCisgICgnc29tZV9maWxlJywgJy50eHQnKQorICA+Pj4gb3MucGF0aC5qb2luKCIvYS9iIiwgcGF0aGxpYi5QYXRoKCJjIikpCisgICcvYS9iL2MnCisgID4+PiBpbXBvcnQgb3MKKyAgPj4+IG9zLmZzcGF0aChwYXRobGliLlBhdGgoInNvbWVfZmlsZS50eHQiKSkKKyAgJ3NvbWVfZmlsZS50eHQnCisKKyhJbXBsZW1lbnRlZCBieSBCcmV0dCBDYW5ub24sIEV0aGFuIEZ1cm1hbiwgRHVzdHkgUGhpbGxpcHMsIGFuZCBKZWxsZSBaaWpsc3RyYS4pCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNTE5YCAtLSBBZGRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uIGFuZCBLb29zIFpldmVuaG92ZW4uCisKKworLi4gX3doYXRzbmV3LWZzdHJpbmdzOgorCitQRVAgNDk4OiBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYXJlIGEgbmV3IGtpbmQgb2Ygc3RyaW5nIGxpdGVyYWwsIHByZWZpeGVkCit3aXRoIGBgJ2YnYGAuICBUaGV5IGFyZSBzaW1pbGFyIHRvIHRoZSBmb3JtYXQgc3RyaW5ncyBhY2NlcHRlZCBieQorOm1ldGg6YHN0ci5mb3JtYXRgLiAgVGhleSBjb250YWluIHJlcGxhY2VtZW50IGZpZWxkcyBzdXJyb3VuZGVkIGJ5CitjdXJseSBicmFjZXMuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIGFyZSBleHByZXNzaW9ucywgd2hpY2ggYXJlCitldmFsdWF0ZWQgYXQgcnVuIHRpbWUsIGFuZCB0aGVuIGZvcm1hdHRlZCB1c2luZyB0aGUgOmZ1bmM6YGZvcm1hdGAgcHJvdG9jb2w6OgorCisgICAgPj4+IG5hbWUgPSAiRnJlZCIKKyAgICA+Pj4gZiJIZSBzYWlkIGhpcyBuYW1lIGlzIHtuYW1lfS4iCisgICAgJ0hlIHNhaWQgaGlzIG5hbWUgaXMgRnJlZC4nCisKK1NlZSA6cGVwOmA0OThgIGFuZCB0aGUgbWFpbiBkb2N1bWVudGF0aW9uIGF0IDpyZWY6YGYtc3RyaW5nc2AuCisKKworLi4gX3ZhcmlhYmxlLWFubm90YXRpb25zOgorCitQRVAgNTI2OiBTeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ4NGAgaW50cm9kdWNlZCBzdGFuZGFyZCBmb3IgdHlwZSBhbm5vdGF0aW9ucyBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzLAorYS5rLmEuIHR5cGUgaGludHMuIFRoaXMgUEVQIGFkZHMgc3ludGF4IHRvIFB5dGhvbiBmb3IgYW5ub3RhdGluZyB0aGUKK3R5cGVzIG9mIHZhcmlhYmxlcyBpbmNsdWRpbmcgY2xhc3MgdmFyaWFibGVzIGFuZCBpbnN0YW5jZSB2YXJpYWJsZXM6OgorCisgICAgcHJpbWVzOiBMaXN0W2ludF0gPSBbXQorCisgICAgY2FwdGFpbjogc3RyICAjIE5vdGU6IG5vIGluaXRpYWwgdmFsdWUhCisKKyAgICBjbGFzcyBTdGFyc2hpcDoKKyAgICAgICAgc3RhdHM6IERpY3Rbc3RyLCBpbnRdID0ge30KKworSnVzdCBhcyBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZG9lcyBub3QgYXR0YWNoIGFueQorcGFydGljdWxhciBtZWFuaW5nIHRvIHZhcmlhYmxlIGFubm90YXRpb25zIGFuZCBvbmx5IHN0b3JlcyB0aGVtIGluIGEgc3BlY2lhbAorYXR0cmlidXRlIGBgX19hbm5vdGF0aW9uc19fYGAgb2YgYSBjbGFzcyBvciBtb2R1bGUuCitJbiBjb250cmFzdCB0byB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgaW4gc3RhdGljYWxseSB0eXBlZCBsYW5ndWFnZXMsCit0aGUgZ29hbCBvZiBhbm5vdGF0aW9uIHN5bnRheCBpcyB0byBwcm92aWRlIGFuIGVhc3kgd2F5IHRvIHNwZWNpZnkgc3RydWN0dXJlZAordHlwZSBtZXRhZGF0YSBmb3IgdGhpcmQgcGFydHkgdG9vbHMgYW5kIGxpYnJhcmllcyB2aWEgdGhlIGFic3RyYWN0IHN5bnRheCB0cmVlCithbmQgdGhlIGBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI2YCAtLSBTeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb25zLgorICAgICAgUEVQIHdyaXR0ZW4gYnkgUnlhbiBHb256YWxleiwgUGhpbGlwIEhvdXNlLCBJdmFuIExldmtpdnNreWksIExpc2EgUm9hY2gsCisgICAgICBhbmQgR3VpZG8gdmFuIFJvc3N1bS4gSW1wbGVtZW50ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCisgICBUb29scyB0aGF0IHVzZSBvciB3aWxsIHVzZSB0aGUgbmV3IHN5bnRheDoKKyAgIGBteXB5IDxodHRwOi8vZ2l0aHViLmNvbS9weXRob24vbXlweT5gXywKKyAgIGBweXR5cGUgPGh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9weXR5cGU+YF8sIFB5Q2hhcm0sIGV0Yy4KKworCisuLiBfcGVwLTUyOToKKworUEVQIDUyOTogQ2hhbmdlIFdpbmRvd3MgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBVVEYtOAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXByZXNlbnRpbmcgZmlsZXN5c3RlbSBwYXRocyBpcyBiZXN0IHBlcmZvcm1lZCB3aXRoIHN0ciAoVW5pY29kZSkgcmF0aGVyIHRoYW4KK2J5dGVzLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIHdoZXJlIHVzaW5nIGJ5dGVzIGlzIHN1ZmZpY2llbnQgYW5kCitjb3JyZWN0LgorCitQcmlvciB0byBQeXRob24gMy42LCBkYXRhIGxvc3MgY291bGQgcmVzdWx0IHdoZW4gdXNpbmcgYnl0ZXMgcGF0aHMgb24gV2luZG93cy4KK1dpdGggdGhpcyBjaGFuZ2UsIHVzaW5nIGJ5dGVzIHRvIHJlcHJlc2VudCBwYXRocyBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MsCitwcm92aWRlZCB0aG9zZSBieXRlcyBhcmUgZW5jb2RlZCB3aXRoIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieQorOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKWAsIHdoaWNoIG5vdyBkZWZhdWx0cyB0byBgYCd1dGYtOCdgYC4KKworQXBwbGljYXRpb25zIHRoYXQgZG8gbm90IHVzZSBzdHIgdG8gcmVwcmVzZW50IHBhdGhzIHNob3VsZCB1c2UKKzpmdW5jOmBvcy5mc2VuY29kZSgpYCBhbmQgOmZ1bmM6YG9zLmZzZGVjb2RlKClgIHRvIGVuc3VyZSB0aGVpciBieXRlcyBhcmUKK2NvcnJlY3RseSBlbmNvZGVkLiBUbyByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciwgc2V0Cis6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElOR2Agb3IgY2FsbAorOmZ1bmM6YHN5cy5fZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdgLgorCitTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgZGlzY3Vzc2lvbiBvZiBjb2RlIG1vZGlmaWNhdGlvbnMgdGhhdAorbWF5IGJlIHJlcXVpcmVkLgorCisuLiBub3RlOjoKKworICAgVGhpcyBjaGFuZ2UgaXMgY29uc2lkZXJlZCBleHBlcmltZW50YWwgZm9yIDMuNi4wIGJldGEgcmVsZWFzZXMuIFRoZSBkZWZhdWx0CisgICBlbmNvZGluZyBtYXkgY2hhbmdlIGJlZm9yZSB0aGUgZmluYWwgcmVsZWFzZS4KKworLi4gX3doYXRzbmV3LXBlcDQ4NzoKKworUEVQIDQ4NzogU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXBvbiBzdWJjbGFzc2luZyBhIGNsYXNzLCB0aGUgYGBfX2luaXRfc3ViY2xhc3NfX2BgIGNsYXNzbWV0aG9kIChpZiBkZWZpbmVkKSBpcworY2FsbGVkIG9uIHRoZSBiYXNlIGNsYXNzLiBUaGlzIG1ha2VzIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byB3cml0ZSBjbGFzc2VzIHRoYXQKK2N1c3RvbWl6ZSBpbml0aWFsaXphdGlvbiBvZiBmdXR1cmUgc3ViY2xhc3NlcyB3aXRob3V0IGludHJvZHVjaW5nIHRoZQorY29tcGxleGl0eSBvZiBhIGZ1bGwgY3VzdG9tIG1ldGFjbGFzcy4KKworVGhlIGRlc2NyaXB0b3IgcHJvdG9jb2wgaGFzIGFsc28gYmVlbiBleHBhbmRlZCB0byBpbmNsdWRlIGEgbmV3IG9wdGlvbmFsIG1ldGhvZCwKK2BgX19zZXRfbmFtZV9fYGAuIFdoZW5ldmVyIGEgbmV3IGNsYXNzIGlzIGRlZmluZWQsIHRoZSBuZXcgbWV0aG9kIHdpbGwgYmUgY2FsbGVkCitvbiBhbGwgZGVzY3JpcHRvcnMgaW5jbHVkZWQgaW4gdGhlIGRlZmluaXRpb24sIHByb3ZpZGluZyB0aGVtIHdpdGggYSByZWZlcmVuY2UKK3RvIHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkIGFuZCB0aGUgbmFtZSBnaXZlbiB0byB0aGUgZGVzY3JpcHRvciB3aXRoaW4gdGhlCitjbGFzcyBuYW1lc3BhY2UuCisKK0Fsc28gc2VlIDpwZXA6YDQ4N2AgYW5kIHRoZSB1cGRhdGVkIGNsYXNzIGN1c3RvbWl6YXRpb24gZG9jdW1lbnRhdGlvbiBhdAorOnJlZjpgY2xhc3MtY3VzdG9taXphdGlvbmAgYW5kIDpyZWY6YGRlc2NyaXB0b3JzYC4KKworKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBUZWljaG1hbm4gaW4gOmlzc3VlOmAyNzM2NmApCisKKy4uIF9wZXAtNTI4OgorCitQRVAgNTI4OiBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBkZWZhdWx0IGNvbnNvbGUgb24gV2luZG93cyB3aWxsIG5vdyBhY2NlcHQgYWxsIFVuaWNvZGUgY2hhcmFjdGVycyBhbmQKK3Byb3ZpZGUgY29ycmVjdGx5IHJlYWQgc3RyIG9iamVjdHMgdG8gUHl0aG9uIGNvZGUuIGBgc3lzLnN0ZGluYGAsCitgYHN5cy5zdGRvdXRgYCBhbmQgYGBzeXMuc3RkZXJyYGAgbm93IGRlZmF1bHQgdG8gdXRmLTggZW5jb2RpbmcuCisKK1RoaXMgY2hhbmdlIG9ubHkgYXBwbGllcyB3aGVuIHVzaW5nIGFuIGludGVyYWN0aXZlIGNvbnNvbGUsIGFuZCBub3Qgd2hlbgorcmVkaXJlY3RpbmcgZmlsZXMgb3IgcGlwZXMuIFRvIHJldmVydCB0byB0aGUgcHJldmlvdXMgYmVoYXZpb3VyIGZvciBpbnRlcmFjdGl2ZQorY29uc29sZSB1c2UsIHNldCA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTSU9FTkNPRElOR2AuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjhgIC0tIENoYW5nZSBXaW5kb3dzIGNvbnNvbGUgZW5jb2RpbmcgdG8gVVRGLTgKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBTdGV2ZSBEb3dlci4KKworUFlUSE9OTUFMTE9DIGVudmlyb25tZW50IHZhcmlhYmxlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIG5ldyA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGFsbG93cyBzZXR0aW5nIHRoZSBQeXRob24KK21lbW9yeSBhbGxvY2F0b3JzIGFuZC9vciBpbnN0YWxsIGRlYnVnIGhvb2tzLgorCitJdCBpcyBub3cgcG9zc2libGUgdG8gaW5zdGFsbCBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgb24gUHl0aG9uCitjb21waWxlZCBpbiByZWxlYXNlIG1vZGUgdXNpbmcgYGBQWVRIT05NQUxMT0M9ZGVidWdgYC4gRWZmZWN0cyBvZiBkZWJ1ZyBob29rczoKKworKiBOZXdseSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhDQmBgCisqIEZyZWVkIG1lbW9yeSBpcyBmaWxsZWQgd2l0aCB0aGUgYnl0ZSBgYDB4REJgYAorKiBEZXRlY3QgdmlvbGF0aW9ucyBvZiBQeXRob24gbWVtb3J5IGFsbG9jYXRvciBBUEkuIEZvciBleGFtcGxlLAorICA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYCBjYWxsZWQgb24gYSBtZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGJ5CisgIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AuCisqIERldGVjdCB3cml0ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKGJ1ZmZlciB1bmRlcmZsb3cpCisqIERldGVjdCB3cml0ZSBhZnRlciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKGJ1ZmZlciBvdmVyZmxvdykKKyogQ2hlY2sgdGhhdCB0aGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBpcyBoZWxkIHdoZW4gYWxsb2NhdG9yCisgIGZ1bmN0aW9ucyBvZiA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCAoZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2ApIGFuZAorICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6IDpjOmZ1bmM6YFB5TWVtX01hbGxvY2ApIGRvbWFpbnMgYXJlIGNhbGxlZC4KKworQ2hlY2tpbmcgaWYgdGhlIEdJTCBpcyBoZWxkIGlzIGFsc28gYSBuZXcgZmVhdHVyZSBvZiBQeXRob24gMy42LgorCitTZWUgdGhlIDpjOmZ1bmM6YFB5TWVtX1NldHVwRGVidWdIb29rc2AgZnVuY3Rpb24gZm9yIGRlYnVnIGhvb2tzIG9uIFB5dGhvbgorbWVtb3J5IGFsbG9jYXRvcnMuCisKK0l0IGlzIG5vdyBhbHNvIHBvc3NpYmxlIHRvIGZvcmNlIHRoZSB1c2FnZSBvZiB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBhbGxvY2F0b3Igb2YKK3RoZSBDIGxpYnJhcnkgZm9yIGFsbCBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zIHVzaW5nIGBgUFlUSE9OTUFMTE9DPW1hbGxvY2BgLgorSXQgaGVscHMgdG8gdXNlIGV4dGVybmFsIG1lbW9yeSBkZWJ1Z2dlcnMgbGlrZSBWYWxncmluZCBvbiBhIFB5dGhvbiBjb21waWxlZCBpbgorcmVsZWFzZSBtb2RlLgorCitPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgdXNlIHRoZQorOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZSB0byBnZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMKK2FsbG9jYXRlZC4KKworRXhhbXBsZSBvZiBmYXRhbCBlcnJvciBvbiBidWZmZXIgb3ZlcmZsb3cgdXNpbmcKK2BgcHl0aG9uMy42IC1YIHRyYWNlbWFsbG9jPTVgYCAoc3RvcmUgNSBmcmFtZXMgaW4gdHJhY2VzKTo6CisKKyAgICBEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPTB4N2ZiY2Q0MTY2NmY4OiBBUEkgJ28nCisgICAgICAgIDQgYnl0ZXMgb3JpZ2luYWxseSByZXF1ZXN0ZWQKKyAgICAgICAgVGhlIDcgcGFkIGJ5dGVzIGF0IHAtNyBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuCisgICAgICAgIFRoZSA4IHBhZCBieXRlcyBhdCB0YWlsPTB4N2ZiY2Q0MTY2NmZjIGFyZSBub3QgYWxsIEZPUkJJRERFTkJZVEUgKDB4ZmIpOgorICAgICAgICAgICAgYXQgdGFpbCswOiAweDAyICoqKiBPVUNICisgICAgICAgICAgICBhdCB0YWlsKzE6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrMjogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCszOiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzQ6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNTogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs2OiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzc6IDB4ZmIKKyAgICAgICAgVGhlIGJsb2NrIHdhcyBtYWRlIGJ5IGNhbGwgIzEyMzMzMjkgdG8gZGVidWcgbWFsbG9jL3JlYWxsb2MuCisgICAgICAgIERhdGEgYXQgcDogMWEgMmIgMzAgMDAKKworICAgIE1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgRmlsZSAidGVzdC90ZXN0X2J5dGVzLnB5IiwgbGluZSAzMjMKKyAgICAgIEZpbGUgInVuaXR0ZXN0L2Nhc2UucHkiLCBsaW5lIDYwMAorICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjQ4CisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgMTIyCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgODQKKworICAgIEZhdGFsIFB5dGhvbiBlcnJvcjogYmFkIHRyYWlsaW5nIHBhZCBieXRlCisKKyAgICBDdXJyZW50IHRocmVhZCAweDAwMDA3ZmJjZGJkMzI3MDAgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgRmlsZSAidGVzdC90ZXN0X2J5dGVzLnB5IiwgbGluZSAzMjMgaW4gdGVzdF9oZXgKKyAgICAgIEZpbGUgInVuaXR0ZXN0L2Nhc2UucHkiLCBsaW5lIDYwMCBpbiBydW4KKyAgICAgIEZpbGUgInVuaXR0ZXN0L2Nhc2UucHkiLCBsaW5lIDY0OCBpbiBfX2NhbGxfXworICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDEyMiBpbiBydW4KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSA4NCBpbiBfX2NhbGxfXworICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDEyMiBpbiBydW4KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSA4NCBpbiBfX2NhbGxfXworICAgICAgLi4uCisKKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2NTE2YCBhbmQgOmlzc3VlOmAyNjU2NGAuKQorCisKK0RUcmFjZSBhbmQgU3lzdGVtVGFwIHByb2Jpbmcgc3VwcG9ydAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1B5dGhvbiBjYW4gbm93IGJlIGJ1aWx0IGBgLS13aXRoLWR0cmFjZWBgIHdoaWNoIGVuYWJsZXMgc3RhdGljIG1hcmtlcnMKK2ZvciB0aGUgZm9sbG93aW5nIGV2ZW50cyBpbiB0aGUgaW50ZXJwcmV0ZXI6CisKKyogZnVuY3Rpb24gY2FsbC9yZXR1cm4KKworKiBnYXJiYWdlIGNvbGxlY3Rpb24gc3RhcnRlZC9maW5pc2hlZAorCisqIGxpbmUgb2YgY29kZSBleGVjdXRlZC4KKworVGhpcyBjYW4gYmUgdXNlZCB0byBpbnN0cnVtZW50IHJ1bm5pbmcgaW50ZXJwcmV0ZXJzIGluIHByb2R1Y3Rpb24sCit3aXRob3V0IHRoZSBuZWVkIHRvIHJlY29tcGlsZSBzcGVjaWZpYyBkZWJ1ZyBidWlsZHMgb3IgcHJvdmlkaW5nCithcHBsaWNhdGlvbi1zcGVjaWZpYyBwcm9maWxpbmcvZGVidWdnaW5nIGNvZGUuCisKK01vcmUgZGV0YWlscyBpbiA6cmVmOmBpbnN0cnVtZW50YXRpb25gLgorCitUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyB0ZXN0ZWQgb24gTGludXggYW5kIG1hY09TLiAgQWRkaXRpb25hbAorbWFya2VycyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KKworKENvbnRyaWJ1dGVkIGJ5IMWBdWthc3ogTGFuZ2EgaW4gOmlzc3VlOmAyMTU5MGAsIGJhc2VkIG9uIHBhdGNoZXMgYnkKK0plc8O6cyBDZWEgQXZpw7NuLCBEYXZpZCBNYWxjb2xtLCBhbmQgTmlraGlsIEJlbmVzY2guKQorCisKKy4uIF93aGF0c25ldy1kZWZvcmRlcjoKKworUEVQIDUyMDogUHJlc2VydmluZyBDbGFzcyBBdHRyaWJ1dGUgRGVmaW5pdGlvbiBPcmRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBdHRyaWJ1dGVzIGluIGEgY2xhc3MgZGVmaW5pdGlvbiBib2R5IGhhdmUgYSBuYXR1cmFsIG9yZGVyaW5nOiB0aGUgc2FtZQorb3JkZXIgaW4gd2hpY2ggdGhlIG5hbWVzIGFwcGVhciBpbiB0aGUgc291cmNlLiAgVGhpcyBvcmRlciBpcyBub3cKK3ByZXNlcnZlZCBpbiB0aGUgbmV3IGNsYXNzJ3MgYGBfX2RpY3RfX2BgIGF0dHJpYnV0ZS4KKworQWxzbywgdGhlIGVmZmVjdGl2ZSBkZWZhdWx0IGNsYXNzICpleGVjdXRpb24qIG5hbWVzcGFjZSAocmV0dXJuZWQgZnJvbQorYGB0eXBlLl9fcHJlcGFyZV9fKClgYCkgaXMgbm93IGFuIGluc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nIG1hcHBpbmcuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjBgIC0tIFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXIKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBFcmljIFNub3cuCisKKworLi4gX3doYXRzbmV3LWt3YXJnczoKKworUEVQIDQ2ODogUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGAqKmt3YXJnc2BgIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlIGFuCitpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDY4YCAtLSBQcmVzZXJ2aW5nIEtleXdvcmQgQXJndW1lbnQgT3JkZXIKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBFcmljIFNub3cuCisKKy4uIF93aGF0c25ldy1wZXA1MDk6CisKK1BFUCA1MDk6IEFkZCBhIHByaXZhdGUgdmVyc2lvbiB0byBkaWN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZGQgYSBuZXcgcHJpdmF0ZSB2ZXJzaW9uIHRvIHRoZSBidWlsdGluIGBgZGljdGBgIHR5cGUsIGluY3JlbWVudGVkIGF0CitlYWNoIGRpY3Rpb25hcnkgY3JlYXRpb24gYW5kIGF0IGVhY2ggZGljdGlvbmFyeSBjaGFuZ2UsIHRvIGltcGxlbWVudAorZmFzdCBndWFyZHMgb24gbmFtZXNwYWNlcy4KKworKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjYwNThgLikKKworCitPdGhlciBMYW5ndWFnZSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1NvbWUgc21hbGxlciBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvcmUgUHl0aG9uIGxhbmd1YWdlIGFyZToKKworKiA6ZnVuYzpgZGljdGAgbm93IHVzZXMgYSAiY29tcGFjdCIgcmVwcmVzZW50YXRpb24gYHBpb25lZXJlZCBieSBQeVB5CisgIDxodHRwczovL21vcmVweXB5LmJsb2dzcG90LmNvbS8yMDE1LzAxL2Zhc3Rlci1tb3JlLW1lbW9yeS1lZmZpY2llbnQtYW5kLW1vcmUuaHRtbD5gXy4KKyAgVGhlIG1lbW9yeSB1c2FnZSBvZiB0aGUgbmV3IDpmdW5jOmBkaWN0YCBpcyBiZXR3ZWVuIDIwJSBhbmQgMjUlIHNtYWxsZXIKKyAgY29tcGFyZWQgdG8gUHl0aG9uIDMuNS4KKyAgOnBlcDpgNDY4YCAoUHJlc2VydmluZyB0aGUgb3JkZXIgb2YgYGAqKmt3YXJnc2BgIGluIGEgZnVuY3Rpb24uKSBpcworICBpbXBsZW1lbnRlZCBieSB0aGlzLiBUaGUgb3JkZXItcHJlc2VydmluZyBhc3BlY3Qgb2YgdGhpcyBuZXcKKyAgaW1wbGVtZW50YXRpb24gaXMgY29uc2lkZXJlZCBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIHNob3VsZAorICBub3QgYmUgcmVsaWVkIHVwb24gKHRoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLCBidXQgaXQgaXMgZGVzaXJlZAorICB0byBoYXZlIHRoaXMgbmV3IGRpY3QgaW1wbGVtZW50YXRpb24gaW4gdGhlIGxhbmd1YWdlIGZvciBhIGZldworICByZWxlYXNlcyBiZWZvcmUgY2hhbmdpbmcgdGhlIGxhbmd1YWdlIHNwZWMgdG8gbWFuZGF0ZQorICBvcmRlci1wcmVzZXJ2aW5nIHNlbWFudGljcyBmb3IgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBQeXRob24KKyAgaW1wbGVtZW50YXRpb25zOyB0aGlzIGFsc28gaGVscHMgcHJlc2VydmUgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkKKyAgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgbGFuZ3VhZ2Ugd2hlcmUgcmFuZG9tIGl0ZXJhdGlvbiBvcmRlciBpcworICBzdGlsbCBpbiBlZmZlY3QsIGUuZy4gUHl0aG9uIDMuNSkuCisgIChDb250cmlidXRlZCBieSBJTkFEQSBOYW9raSBpbiA6aXNzdWU6YDI3MzUwYC4gSWRlYQorICBgb3JpZ2luYWxseSBzdWdnZXN0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIKKyAgPGh0dHBzOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMTItRGVjZW1iZXIvMTIzMDI4Lmh0bWw+YF8uKQorCisqIExvbmcgc2VxdWVuY2VzIG9mIHJlcGVhdGVkIHRyYWNlYmFjayBsaW5lcyBhcmUgbm93IGFiYnJldmlhdGVkIGFzCisgIGBgIltQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudH0gbW9yZSB0aW1lc10iYGAgKHNlZQorICA6cmVmOmBweTM2LXRyYWNlYmFja2AgZm9yIGFuIGV4YW1wbGUpLgorICAoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeSBpbiA6aXNzdWU6YDI2ODIzYC4pCisKKyogSW1wb3J0IG5vdyByYWlzZXMgdGhlIG5ldyBleGNlcHRpb24gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAKKyAgKHN1YmNsYXNzIG9mIDpleGM6YEltcG9ydEVycm9yYCkgd2hlbiBpdCBjYW5ub3QgZmluZCBhIG1vZHVsZS4gIENvZGUKKyAgdGhhdCBjdXJyZW50IGNoZWNrcyBmb3IgSW1wb3J0RXJyb3IgKGluIHRyeS1leGNlcHQpIHdpbGwgc3RpbGwgd29yay4KKworCitOZXcgTW9kdWxlcworPT09PT09PT09PT0KKworKiBOb25lIHlldC4KKworCitJbXByb3ZlZCBNb2R1bGVzCis9PT09PT09PT09PT09PT09CisKK09uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGJsb2NrcyB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sCitpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IgdGhlIHJhdGlvbmFsZS4KKworCithc3luY2lvCistLS0tLS0tCisKK1NpbmNlIHRoZSA6bW9kOmBhc3luY2lvYCBtb2R1bGUgaXMgOnRlcm06YHByb3Zpc2lvbmFsIDxwcm92aXNpb25hbCBhcGk+YCwKK2FsbCBjaGFuZ2VzIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNiBoYXZlIGFsc28gYmVlbiBiYWNrcG9ydGVkIHRvIFB5dGhvbgorMy41LnguCisKK05vdGFibGUgY2hhbmdlcyBpbiB0aGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIHNpbmNlIFB5dGhvbiAzLjUuMDoKKworKiBUaGUgOmZ1bmM6YH5hc3luY2lvLmVuc3VyZV9mdXR1cmVgIGZ1bmN0aW9uIGFuZCBhbGwgZnVuY3Rpb25zIHRoYXQKKyAgdXNlIGl0LCBzdWNoIGFzIDptZXRoOmBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSgpIDxhc3luY2lvLkJhc2VFdmVudExvb3AucnVuX3VudGlsX2NvbXBsZXRlPmAsCisgIG5vdyBhY2NlcHQgYWxsIGtpbmRzIG9mIDp0ZXJtOmBhd2FpdGFibGUgb2JqZWN0cyA8YXdhaXRhYmxlPmAuCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4pCisKKyogTmV3IDpmdW5jOmB+YXN5bmNpby5ydW5fY29yb3V0aW5lX3RocmVhZHNhZmVgIGZ1bmN0aW9uIHRvIHN1Ym1pdAorICBjb3JvdXRpbmVzIHRvIGV2ZW50IGxvb3BzIGZyb20gb3RoZXIgdGhyZWFkcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpbmNlbnQgTWljaGVsLikKKworKiBOZXcgOm1ldGg6YFRyYW5zcG9ydC5pc19jbG9zaW5nKCkgPGFzeW5jaW8uQmFzZVRyYW5zcG9ydC5pc19jbG9zaW5nPmAKKyAgbWV0aG9kIHRvIGNoZWNrIGlmIHRoZSB0cmFuc3BvcnQgaXMgY2xvc2luZyBvciBjbG9zZWQuCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4pCisKKyogVGhlIDptZXRoOmBsb29wLmNyZWF0ZV9zZXJ2ZXIoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmNyZWF0ZV9zZXJ2ZXI+YAorICBtZXRob2QgY2FuIG5vdyBhY2NlcHQgYSBsaXN0IG9mIGhvc3RzLgorICAoQ29udHJpYnV0ZWQgYnkgWWFubiBTaW9ubmVhdS4pCisKKyogTmV3IDptZXRoOmBsb29wLmNyZWF0ZV9mdXR1cmUoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmNyZWF0ZV9mdXR1cmU+YAorICBtZXRob2QgdG8gY3JlYXRlIEZ1dHVyZSBvYmplY3RzLiAgVGhpcyBhbGxvd3MgYWx0ZXJuYXRpdmUgZXZlbnQKKyAgbG9vcCBpbXBsZW1lbnRhdGlvbnMsIHN1Y2ggYXMKKyAgYHV2bG9vcCA8aHR0cHM6Ly9naXRodWIuY29tL01hZ2ljU3RhY2svdXZsb29wPmBfLCB0byBwcm92aWRlIGEgZmFzdGVyCisgIDpjbGFzczpgYXN5bmNpby5GdXR1cmVgIGltcGxlbWVudGF0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6bWV0aDpgbG9vcC5nZXRfZXhjZXB0aW9uX2hhbmRsZXIoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLmdldF9leGNlcHRpb25faGFuZGxlcj5gCisgIG1ldGhvZCB0byBnZXQgdGhlIGN1cnJlbnQgZXhjZXB0aW9uIGhhbmRsZXIuCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdi4pCisKKyogTmV3IDptZXRoOmBTdHJlYW1SZWFkZXIucmVhZHVudGlsKCkgPGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWR1bnRpbD5gCisgIG1ldGhvZCB0byByZWFkIGRhdGEgZnJvbSB0aGUgc3RyZWFtIHVudGlsIGEgc2VwYXJhdG9yIGJ5dGVzCisgIHNlcXVlbmNlIGFwcGVhcnMuCisgIChDb250cmlidXRlZCBieSBNYXJrIEtvcmVuYmVyZy4pCisKKyogVGhlIDptZXRoOmBsb29wLmdldGFkZHJpbmZvKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5nZXRhZGRyaW5mbz5gCisgIG1ldGhvZCBpcyBvcHRpbWl6ZWQgdG8gYXZvaWQgY2FsbGluZyB0aGUgc3lzdGVtIGBgZ2V0YWRkcmluZm9gYAorICBmdW5jdGlvbiBpZiB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IHJlc29sdmVkLgorICAoQ29udHJpYnV0ZWQgYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuKQorCisKK2NvbnRleHRsaWIKKy0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyYCBjbGFzcyBoYXMgYmVlbiBhZGRlZCB0bworcHJvdmlkZSBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb250ZXh0IG1hbmFnZXJzLiBJdCBwcm92aWRlcyBhCitzZW5zaWJsZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBgX19lbnRlcl9fKClgIHdoaWNoIHJldHVybnMKK2Bgc2VsZmBgIGFuZCBsZWF2ZXMgYF9fZXhpdF9fKClgIGFuIGFic3RyYWN0IG1ldGhvZC4gQSBtYXRjaGluZworY2xhc3MgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlIGFzCis6Y2xhc3M6YHR5cGluZy5Db250ZXh0TWFuYWdlcmAuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU2MDlgLikKKworCit2ZW52CistLS0tCisKKzptb2Q6YHZlbnZgIGFjY2VwdHMgYSBuZXcgcGFyYW1ldGVyIGBgLS1wcm9tcHRgYC4gVGhpcyBwYXJhbWV0ZXIgcHJvdmlkZXMgYW4KK2FsdGVybmF0aXZlIHByZWZpeCBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIChQcm9wb3NlZCBieSDFgXVrYXN6LkJhbGNlcnphaworYW5kIHBvcnRlZCB0byAzLjYgYnkgU3TDqXBoYW5lIFdpcnRlbCBpbiA6aXNzdWU6YDIyODI5YC4pCisKKworZGF0ZXRpbWUKKy0tLS0tLS0tCisKK1RoZSA6bWV0aDpgZGF0ZXRpbWUuc3RyZnRpbWUoKSA8ZGF0ZXRpbWUuZGF0ZXRpbWUuc3RyZnRpbWU+YCBhbmQKKzptZXRoOmBkYXRlLnN0cmZ0aW1lKCkgPGRhdGV0aW1lLmRhdGUuc3RyZnRpbWU+YCBtZXRob2RzIG5vdyBzdXBwb3J0IElTTyA4NjAxIGRhdGUKK2RpcmVjdGl2ZXMgYGAlR2BgLCBgYCV1YGAgYW5kIGBgJVZgYC4KKyhDb250cmlidXRlZCBieSBBc2hsZXkgQW5kZXJzb24gaW4gOmlzc3VlOmAxMjAwNmAuKQorCisKK2Rpc3R1dGlscy5jb21tYW5kLnNkaXN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYGBkZWZhdWx0X2Zvcm1hdGBgIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGZyb20KKzpjbGFzczpgZGlzdHV0aWxzLmNvbW1hbmQuc2Rpc3Quc2Rpc3RgIGFuZCB0aGUgYGBmb3JtYXRzYGAKK2F0dHJpYnV0ZSBkZWZhdWx0cyB0byBgYFsnZ3p0YXInXWBgLiBBbHRob3VnaCBub3QgYW50aWNpcGF0ZWQsCitBbnkgY29kZSByZWx5aW5nIG9uIHRoZSBwcmVzZW5jZSBvZiBgYGRlZmF1bHRfZm9ybWF0YGAgbWF5CituZWVkIHRvIGJlIGFkYXB0ZWQuIFNlZSA6aXNzdWU6YDI3ODE5YCBmb3IgbW9yZSBkZXRhaWxzLgorCisKK2VtYWlsCistLS0tLQorCitUaGUgbmV3IGVtYWlsIEFQSSwgZW5hYmxlZCB2aWEgdGhlICpwb2xpY3kqIGtleXdvcmQgdG8gdmFyaW91cyBjb25zdHJ1Y3RvcnMsIGlzCitubyBsb25nZXIgcHJvdmlzaW9uYWwuICBUaGUgOm1vZDpgZW1haWxgIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gcmVvcmdhbml6ZWQgYW5kCityZXdyaXR0ZW4gdG8gZm9jdXMgb24gdGhlIG5ldyBBUEksIHdoaWxlIHJldGFpbmluZyB0aGUgb2xkIGRvY3VtZW50YXRpb24gZm9yCit0aGUgbGVnYWN5IEFQSS4gIChDb250cmlidXRlZCBieSBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyNDI3N2AuKQorCitUaGUgOm1vZDpgZW1haWwubWltZWAgY2xhc3NlcyBub3cgYWxsIGFjY2VwdCBhbiBvcHRpb25hbCAqcG9saWN5KiBrZXl3b3JkLgorKENvbnRyaWJ1dGVkIGJ5IEJlcmtlciBQZWtzYWcgaW4gOmlzc3VlOmAyNzMzMWAuKQorCitUaGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3JgIG5vdyBzdXBwb3J0cyB0aGUgKnBvbGljeSoKK2tleXdvcmQuCisKK1RoZXJlIGlzIGEgbmV3IDptb2Q6YH5lbWFpbC5wb2xpY3lgIGF0dHJpYnV0ZSwKKzphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgLCB0aGF0IGNvbnRyb2xzIHdoYXQgY2xhc3MgaXMgdXNlZAorYnkgZGVmYXVsdCB3aGVuIHRoZSBwYXJzZXIgY3JlYXRlcyBuZXcgbWVzc2FnZSBvYmplY3RzLiAgRm9yIHRoZQorOmF0dHI6YGVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IHRoaXMgaXMgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCwKK2ZvciB0aGUgbmV3IHBvbGljaWVzIGl0IGlzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYC4KKyhDb250cmlidXRlZCBieSBSLiBEYXZpZCBNdXJyYXkgaW4gOmlzc3VlOmAyMDQ3NmAuKQorCisKK2VuY29kaW5ncworLS0tLS0tLS0tCisKK09uIFdpbmRvd3MsIGFkZGVkIHRoZSBgYCdvZW0nYGAgZW5jb2RpbmcgdG8gdXNlIGBgQ1BfT0VNQ1BgYCBhbmQgdGhlIGBgJ2Fuc2knYGAKK2FsaWFzIGZvciB0aGUgZXhpc3RpbmcgYGAnbWJjcydgYCBlbmNvZGluZywgd2hpY2ggdXNlcyB0aGUgYGBDUF9BQ1BgYCBjb2RlIHBhZ2UuCisKKworZmF1bHRoYW5kbGVyCistLS0tLS0tLS0tLS0KKworT24gV2luZG93cywgdGhlIDptb2Q6YGZhdWx0aGFuZGxlcmAgbW9kdWxlIG5vdyBpbnN0YWxscyBhIGhhbmRsZXIgZm9yIFdpbmRvd3MKK2V4Y2VwdGlvbnM6IHNlZSA6ZnVuYzpgZmF1bHRoYW5kbGVyLmVuYWJsZWAuIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorOmlzc3VlOmAyMzg0OGAuKQorCisKK2hhc2hsaWIKKy0tLS0tLS0KKworOm1vZDpgaGFzaGxpYmAgc3VwcG9ydHMgT3BlblNTTCAxLjEuMC4gVGhlIG1pbmltdW0gcmVjb21tZW5kIHZlcnNpb24gaXMgMS4wLjIuCitJdCBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCAwLjkuOHpjLCAwLjkuOHpoIGFuZCAxLjAuMXQgYXMgd2VsbCBhcyBMaWJyZVNTTCAyLjMKK2FuZCAyLjQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI2NDcwYC4pCisKK0JMQUtFMiBoYXNoIGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHRvIHRoZSBtb2R1bGUuIDpmdW5jOmB+aGFzaGxpYi5ibGFrZTJiYAorYW5kIDpmdW5jOmB+aGFzaGxpYi5ibGFrZTJzYCBhcmUgYWx3YXlzIGF2YWlsYWJsZSBhbmQgc3VwcG9ydCB0aGUgZnVsbAorZmVhdHVyZSBzZXQgb2YgQkxBS0UyLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjc5OGAgYmFzZWQgb24gY29kZSBieQorRG1pdHJ5IENoZXN0bnlraCBhbmQgU2FtdWVsIE5ldmVzLiBEb2N1bWVudGF0aW9uIHdyaXR0ZW4gYnkgRG1pdHJ5IENoZXN0bnlraC4pCisKK1RoZSBTSEEtMyBoYXNoIGZ1bmN0aW9ucyA6ZnVuYzpgfmhhc2hsaWIuc2hhM18yMjRgLCA6ZnVuYzpgfmhhc2hsaWIuc2hhM18yNTZgLAorOmZ1bmM6YH5oYXNobGliLnNoYTNfMzg0YCwgOmZ1bmM6YH5oYXNobGliLnNoYTNfNTEyYCwgYW5kIFNIQUtFIGhhc2ggZnVuY3Rpb25zCis6ZnVuYzpgfmhhc2hsaWIuc2hha2VfMTI4YCBhbmQgOmZ1bmM6YH5oYXNobGliLnNoYWtlXzI1NmAgd2VyZSBhZGRlZC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMTYxMTNgLiBLZWNjYWsgQ29kZSBQYWNrYWdlCitieSBHdWlkbyBCZXJ0b25pLCBKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUsIGFuZAorUm9ubnkgVmFuIEtlZXIuKQorCitUaGUgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gOmZ1bmM6YH5oYXNobGliLnNjcnlwdGAgaXMgbm93CithdmFpbGFibGUgd2l0aCBPcGVuU1NMIDEuMS4wIGFuZCBuZXdlci4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc5MjhgLikKKworaHR0cC5jbGllbnQKKy0tLS0tLS0tLS0tCisKKzptZXRoOmBIVFRQQ29ubmVjdGlvbi5yZXF1ZXN0KCkgPGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnJlcXVlc3Q+YCBhbmQKKzptZXRoOmB+aHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVyc2AgYm90aCBub3cgc3VwcG9ydAorY2h1bmtlZCBlbmNvZGluZyByZXF1ZXN0IGJvZGllcy4KKyhDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBSb2xmIEtyYWhsIGluIDppc3N1ZTpgMTIzMTlgLikKKworCitpZGxlbGliIGFuZCBJRExFCistLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBpZGxlbGliIHBhY2thZ2UgaXMgYmVpbmcgbW9kZXJuaXplZCBhbmQgcmVmYWN0b3JlZCB0byBtYWtlIElETEUgbG9vayBhbmQgd29yayBiZXR0ZXIgYW5kIHRvIG1ha2UgdGhlIGNvZGUgZWFzaWVyIHRvIHVuZGVyc3RhbmQsIHRlc3QsIGFuZCBpbXByb3ZlLiBQYXJ0IG9mIG1ha2luZyBJRExFIGxvb2sgYmV0dGVyLCBlc3BlY2lhbGx5IG9uIExpbnV4IGFuZCBNYWMsIGlzIHVzaW5nIHR0ayB3aWRnZXRzLCBtb3N0bHkgaW4gdGhlIGRpYWxvZ3MuICBBcyBhIHJlc3VsdCwgSURMRSBubyBsb25nZXIgcnVucyB3aXRoIHRjbC90ayA4LjQuICBJdCBub3cgcmVxdWlyZXMgdGNsL3RrIDguNSBvciA4LjYuICBXZSByZWNvbW1lbmQgcnVubmluZyB0aGUgbGF0ZXN0IHJlbGVhc2Ugb2YgZWl0aGVyLgorCisnTW9kZXJuaXppbmcnIGluY2x1ZGVzIHJlbmFtaW5nIGFuZCBjb25zb2xpZGF0aW9uIG9mIGlkbGVsaWIgbW9kdWxlcy4gVGhlIHJlbmFtaW5nIG9mIGZpbGVzIHdpdGggcGFydGlhbCB1cHBlcmNhc2UgbmFtZXMgaXMgc2ltaWxhciB0byB0aGUgcmVuYW1pbmcgb2YsIGZvciBpbnN0YW5jZSwgVGtpbnRlciBhbmQgVGtGb250IHRvIHRraW50ZXIgYW5kIHRraW50ZXIuZm9udCBpbiAzLjAuICBBcyBhIHJlc3VsdCwgaW1wb3J0cyBvZiBpZGxlbGliIGZpbGVzIHRoYXQgd29ya2VkIGluIDMuNSB3aWxsIHVzdWFsbHkgbm90IHdvcmsgaW4gMy42LiAgQXQgbGVhc3QgYSBtb2R1bGUgbmFtZSBjaGFuZ2Ugd2lsbCBiZSBuZWVkZWQgKHNlZSBpZGxlbGliL1JFQURNRS50eHQpLCBzb21ldGltZXMgbW9yZS4gIChOYW1lIGNoYW5nZXMgY29udHJpYnV0ZWQgYnkgQWwgU3dpZWdhcnQgYW5kIFRlcnJ5IFJlZWR5IGluIDppc3N1ZTpgMjQyMjVgLiAgTW9zdCBpZGxlbGliIHBhdGNoZXMgc2luY2UgaGF2ZSBiZWVuIGFuZCB3aWxsIGJlIHBhcnQgb2YgdGhlIHByb2Nlc3MuKQorCitJbiBjb21wZW5zYXRpb24sIHRoZSBldmVudHVhbCByZXN1bHQgd2l0aCBiZSB0aGF0IHNvbWUgaWRsZWxpYiBjbGFzc2VzIHdpbGwgYmUgZWFzaWVyIHRvIHVzZSwgd2l0aCBiZXR0ZXIgQVBJcyBhbmQgZG9jc3RyaW5ncyBleHBsYWluaW5nIHRoZW0uICBBZGRpdGlvbmFsIHVzZWZ1bCBpbmZvcm1hdGlvbiB3aWxsIGJlIGFkZGVkIHRvIGlkbGVsaWIgd2hlbiBhdmFpbGFibGUuCisKKworaW1wb3J0bGliCistLS0tLS0tLS0KKworOmNsYXNzOmBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyYCBub3cgY2FsbHMKKzptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgb24gdGhlIHdyYXBwZWQgbG9hZGVyLCByZW1vdmluZyB0aGUKK3Jlc3RyaWN0aW9uIHRoYXQgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcmAgYW5kCis6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcmAgY291bGRuJ3QgYmUgdXNlZCB3aXRoCis6Y2xhc3M6YGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXJgLgorCis6ZnVuYzpgaW1wb3J0bGliLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2VgLAorOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlYCwgYW5kCis6ZnVuYzpgaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb25gIG5vdyBhY2NlcHQgYQorOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCisKK2pzb24KKy0tLS0KKworOmZ1bmM6YGpzb24ubG9hZGAgYW5kIDpmdW5jOmBqc29uLmxvYWRzYCBub3cgc3VwcG9ydCBiaW5hcnkgaW5wdXQuICBFbmNvZGVkCitKU09OIHNob3VsZCBiZSByZXByZXNlbnRlZCB1c2luZyBlaXRoZXIgVVRGLTgsIFVURi0xNiwgb3IgVVRGLTMyLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxNzkwOWAuKQorCisKK29zCistLQorCitBIG5ldyA6bWV0aDpgfm9zLnNjYW5kaXIuY2xvc2VgIG1ldGhvZCBhbGxvd3MgZXhwbGljaXRseSBjbG9zaW5nIGEKKzpmdW5jOmB+b3Muc2NhbmRpcmAgaXRlcmF0b3IuICBUaGUgOmZ1bmM6YH5vcy5zY2FuZGlyYCBpdGVyYXRvciBub3cKK3N1cHBvcnRzIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbC4gIElmIGEgOmZ1bmM6YHNjYW5kaXJgCitpdGVyYXRvciBpcyBuZWl0aGVyIGV4aGF1c3RlZCBub3IgZXhwbGljaXRseSBjbG9zZWQgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgCit3aWxsIGJlIGVtaXR0ZWQgaW4gaXRzIGRlc3RydWN0b3IuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1OTk0YC4pCisKK1RoZSBMaW51eCBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCAoZ2V0IHJhbmRvbSBieXRlcykgaXMgbm93IGV4cG9zZWQgYXMgdGhlIG5ldworOmZ1bmM6YG9zLmdldHJhbmRvbWAgZnVuY3Rpb24uCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIsIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGApCisKK1NlZSB0aGUgc3VtbWFyeSBmb3IgOnJlZjpgUEVQIDUxOSA8cGVwLTUxOT5gIGZvciBkZXRhaWxzIG9uIGhvdyB0aGUKKzptb2Q6YG9zYCBhbmQgOm1vZDpgb3MucGF0aGAgbW9kdWxlcyBub3cgc3VwcG9ydAorOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisKKworcGlja2xlCistLS0tLS0KKworT2JqZWN0cyB0aGF0IG5lZWQgY2FsbGluZyBgYF9fbmV3X19gYCB3aXRoIGtleXdvcmQgYXJndW1lbnRzIGNhbiBub3cgYmUgcGlja2xlZAordXNpbmcgOnJlZjpgcGlja2xlIHByb3RvY29scyA8cGlja2xlLXByb3RvY29scz5gIG9sZGVyIHRoYW4gcHJvdG9jb2wgdmVyc2lvbiA0LgorUHJvdG9jb2wgdmVyc2lvbiA0IGFscmVhZHkgc3VwcG9ydHMgdGhpcyBjYXNlLiAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeQorU3RvcmNoYWthIGluIDppc3N1ZTpgMjQxNjRgLikKKworCityZQorLS0KKworQWRkZWQgc3VwcG9ydCBvZiBtb2RpZmllciBzcGFucyBpbiByZWd1bGFyIGV4cHJlc3Npb25zLiAgRXhhbXBsZXM6CitgYCcoP2k6cCl5dGhvbidgYCBtYXRjaGVzIGBgJ3B5dGhvbidgYCBhbmQgYGAnUHl0aG9uJ2BgLCBidXQgbm90IGBgJ1BZVEhPTidgYDsKK2BgJyg/aSlnKD8taTp2KXInYGAgbWF0Y2hlcyBgYCdHdlInYGAgYW5kIGBgJ2d2cidgYCwgYnV0IG5vdCBgYCdHVlInYGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDQzMzAyOGAuKQorCitNYXRjaCBvYmplY3QgZ3JvdXBzIGNhbiBiZSBhY2Nlc3NlZCBieSBgYF9fZ2V0aXRlbV9fYGAsIHdoaWNoIGlzCitlcXVpdmFsZW50IHRvIGBgZ3JvdXAoKWBgLiAgU28gYGBtb1snbmFtZSddYGAgaXMgbm93IGVxdWl2YWxlbnQgdG8KK2BgbW8uZ3JvdXAoJ25hbWUnKWBgLiAgKENvbnRyaWJ1dGVkIGJ5IEVyaWMgU21pdGggaW4gOmlzc3VlOmAyNDQ1NGAuKQorCisKK3JlYWRsaW5lCistLS0tLS0tLQorCitBZGRlZCA6ZnVuYzpgfnJlYWRsaW5lLnNldF9hdXRvX2hpc3RvcnlgIHRvIGVuYWJsZSBvciBkaXNhYmxlCithdXRvbWF0aWMgYWRkaXRpb24gb2YgaW5wdXQgdG8gdGhlIGhpc3RvcnkgbGlzdC4gIChDb250cmlidXRlZCBieQorVHlsZXIgQ3JvbXB0b24gaW4gOmlzc3VlOmAyNjg3MGAuKQorCisKK3JsY29tcGxldGVyCistLS0tLS0tLS0tLQorCitQcml2YXRlIGFuZCBzcGVjaWFsIGF0dHJpYnV0ZSBuYW1lcyBub3cgYXJlIG9taXR0ZWQgdW5sZXNzIHRoZSBwcmVmaXggc3RhcnRzCit3aXRoIHVuZGVyc2NvcmVzLiAgQSBzcGFjZSBvciBhIGNvbG9uIGlzIGFkZGVkIGFmdGVyIHNvbWUgY29tcGxldGVkIGtleXdvcmRzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTAxMWAgYW5kIDppc3N1ZTpgMjUyMDlgLikKKworTmFtZXMgb2YgbW9zdCBhdHRyaWJ1dGVzIGxpc3RlZCBieSA6ZnVuYzpgZGlyYCBhcmUgbm93IGNvbXBsZXRlZC4KK1ByZXZpb3VzbHksIG5hbWVzIG9mIHByb3BlcnRpZXMgYW5kIHNsb3RzIHdoaWNoIHdlcmUgbm90IHlldCBjcmVhdGVkIG9uCithbiBpbnN0YW5jZSB3ZXJlIGV4Y2x1ZGVkLiAgKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAyNTU5MGAuKQorCisKK3NpdGUKKy0tLS0KKworV2hlbiBzcGVjaWZ5aW5nIHBhdGhzIHRvIGFkZCB0byA6YXR0cjpgc3lzLnBhdGhgIGluIGEgYC5wdGhgIGZpbGUsCit5b3UgbWF5IG5vdyBzcGVjaWZ5IGZpbGUgcGF0aHMgb24gdG9wIG9mIGRpcmVjdG9yaWVzIChlLmcuIHppcCBmaWxlcykuCisoQ29udHJpYnV0ZWQgYnkgV29sZmdhbmcgTGFuZ25lciBpbiA6aXNzdWU6YDI2NTg3YCkuCisKKworc3FsaXRlMworLS0tLS0tLQorCis6YXR0cjpgc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkYCBub3cgc3VwcG9ydHMgdGhlIGBgUkVQTEFDRWBgIHN0YXRlbWVudC4KKyhDb250cmlidXRlZCBieSBBbGV4IExvcmRUaG9yc2VuIGluIDppc3N1ZTpgMTY4NjRgLikKKworCitzb2NrZXQKKy0tLS0tLQorCitUaGUgOmZ1bmM6YH5zb2NrZXQuc29ja2V0LmlvY3RsYCBmdW5jdGlvbiBub3cgc3VwcG9ydHMgdGhlIDpkYXRhOmB+c29ja2V0LlNJT19MT09QQkFDS19GQVNUX1BBVEhgCitjb250cm9sIGNvZGUuCisoQ29udHJpYnV0ZWQgYnkgRGFuaWVsIFN0b2tlcyBpbiA6aXNzdWU6YDI2NTM2YC4pCisKK1RoZSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuZ2V0c29ja29wdGAgY29uc3RhbnRzIGBgU09fRE9NQUlOYGAsCitgYFNPX1BST1RPQ09MYGAsIGBgU09fUEVFUlNFQ2BgLCBhbmQgYGBTT19QQVNTU0VDYGAgYXJlIG5vdyBzdXBwb3J0ZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI2OTA3YC4pCisKK1RoZSBzb2NrZXQgbW9kdWxlIG5vdyBzdXBwb3J0cyB0aGUgYWRkcmVzcyBmYW1pbHkKKzpkYXRhOmB+c29ja2V0LkFGX0FMR2AgdG8gaW50ZXJmYWNlIHdpdGggTGludXggS2VybmVsIGNyeXB0byBBUEkuIGBgQUxHXypgYCwKK2BgU09MX0FMR2BgIGFuZCA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZG1zZ19hZmFsZ2Agd2VyZSBhZGRlZC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc3NDRgIHdpdGggc3VwcG9ydCBmcm9tCitWaWN0b3IgU3Rpbm5lci4pCisKK3NvY2tldHNlcnZlcgorLS0tLS0tLS0tLS0tCisKK1NlcnZlcnMgYmFzZWQgb24gdGhlIDptb2Q6YHNvY2tldHNlcnZlcmAgbW9kdWxlLCBpbmNsdWRpbmcgdGhvc2UKK2RlZmluZWQgaW4gOm1vZDpgaHR0cC5zZXJ2ZXJgLCA6bW9kOmB4bWxycGMuc2VydmVyYCBhbmQKKzptb2Q6YHdzZ2lyZWYuc2ltcGxlX3NlcnZlcmAsIG5vdyBzdXBwb3J0IHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYAorcHJvdG9jb2wuCisoQ29udHJpYnV0ZWQgYnkgQXZpdiBQYWxpdm9kYSBpbiA6aXNzdWU6YDI2NDA0YC4pCisKK1RoZSA6YXR0cjpgfnNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgYXR0cmlidXRlIG9mCis6Y2xhc3M6YH5zb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXJgIGNsYXNzZXMgbm93IGltcGxlbWVudHMKK3RoZSA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuICBJbiBwYXJ0aWN1bGFyLAorY2FsbGluZyA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLndyaXRlYCBpcyBub3cgZ3VhcmFudGVlZCB0byBzZW5kIHRoZQorZGF0YSBpbiBmdWxsLiAgKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBQYW50ZXIgaW4gOmlzc3VlOmAyNjcyMWAuKQorCitzc2wKKy0tLQorCis6bW9kOmBzc2xgIHN1cHBvcnRzIE9wZW5TU0wgMS4xLjAuIFRoZSBtaW5pbXVtIHJlY29tbWVuZCB2ZXJzaW9uIGlzIDEuMC4yLgorSXQgaGFzIGJlZW4gdGVzdGVkIHdpdGggMC45Ljh6YywgMC45Ljh6aCBhbmQgMS4wLjF0IGFzIHdlbGwgYXMgTGlicmVTU0wgMi4zCithbmQgMi40LgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjQ3MGAuKQorCiszREVTIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgZGVmYXVsdCBjaXBoZXIgc3VpdGVzIGFuZCBDaGFDaGEyMCBQb2x5MTMwNQorY2lwaGVyIHN1aXRlcyBhcmUgbm93IGluIHRoZSByaWdodCBwb3NpdGlvbi4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc4NTBgIGFuZCA6aXNzdWU6YDI3NzY2YC4pCisKKzpjbGFzczpgfnNzbC5TU0xDb250ZXh0YCBoYXMgYmV0dGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3Igb3B0aW9ucworYW5kIGNpcGhlcnMuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDQzYC4pCisKK1NTTCBzZXNzaW9uIGNhbiBiZSBjb3BpZWQgZnJvbSBvbmUgY2xpZW50LXNpZGUgY29ubmVjdGlvbiB0byBhbm90aGVyCit3aXRoIDpjbGFzczpgfnNzbC5TU0xTZXNzaW9uYC4gVExTIHNlc3Npb24gcmVzdW1wdGlvbiBjYW4gc3BlZWQgdXAKK3RoZSBpbml0aWFsIGhhbmRzaGFrZSwgcmVkdWNlIGxhdGVuY3kgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UKKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMTk1MDBgIGJhc2VkIG9uIGEgZHJhZnQgYnkKK0FsZXggV2FyaGF3ay4pCisKK0FsbCBjb25zdGFudHMgYW5kIGZsYWdzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gOmNsYXNzOmB+ZW51bS5JbnRFbnVtYCBhbmQKKzpjbGFzczpgfmVudW0uSW50RmxhZ3NgLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODAyNWAuKQorCitTZXJ2ZXIgYW5kIGNsaWVudC1zaWRlIHNwZWNpZmljIFRMUyBwcm90b2NvbHMgZm9yIDpjbGFzczpgfnNzbC5TU0xDb250ZXh0YAord2VyZSBhZGRlZC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwODVgLikKKworR2VuZXJhbCByZXNvdXJjZSBpZHMgKGBgR0VOX1JJRGBgKSBpbiBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUgZXh0ZW5zaW9ucworbm8gbG9uZ2VyIGNhc2UgYSBTeXN0ZW1FcnJvci4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc2OTFgLikKKworc3VicHJvY2VzcworLS0tLS0tLS0tLQorCis6Y2xhc3M6YHN1YnByb2Nlc3MuUG9wZW5gIGRlc3RydWN0b3Igbm93IGVtaXRzIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nCitpZiB0aGUgY2hpbGQgcHJvY2VzcyBpcyBzdGlsbCBydW5uaW5nLiBVc2UgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAoYGB3aXRoCitwcm9jOiAuLi5gYCkgb3IgY2FsbCBleHBsaWNpdGx5IHRoZSA6bWV0aDpgfnN1YnByb2Nlc3MuUG9wZW4ud2FpdGAgbWV0aG9kIHRvCityZWFkIHRoZSBleGl0IHN0YXR1cyBvZiB0aGUgY2hpbGQgcHJvY2VzcyAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKzppc3N1ZTpgMjY3NDFgKS4KKworVGhlIDpjbGFzczpgc3VicHJvY2Vzcy5Qb3BlbmAgY29uc3RydWN0b3IgYW5kIGFsbCBmdW5jdGlvbnMgdGhhdCBwYXNzIGFyZ3VtZW50cwordGhyb3VnaCB0byBpdCBub3cgYWNjZXB0ICplbmNvZGluZyogYW5kICplcnJvcnMqIGFyZ3VtZW50cy4gU3BlY2lmeWluZyBlaXRoZXIKK29mIHRoZXNlIHdpbGwgZW5hYmxlIHRleHQgbW9kZSBmb3IgdGhlICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiBzdHJlYW1zLgorCit0ZWxuZXRsaWIKKy0tLS0tLS0tLQorCis6Y2xhc3M6YH50ZWxuZXRsaWIuVGVsbmV0YCBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIgKGNvbnRyaWJ1dGVkIGJ5CitTdMOpcGhhbmUgV2lydGVsIGluIDppc3N1ZTpgMjU0ODVgKS4KKworCit0a2ludGVyCistLS0tLS0tCisKK0FkZGVkIG1ldGhvZHMgOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX2FkZGAsCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfcmVtb3ZlYCBhbmQgOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX2luZm9gCitpbiB0aGUgOmNsYXNzOmB0a2ludGVyLlZhcmlhYmxlYCBjbGFzcy4gIFRoZXkgcmVwbGFjZSBvbGQgbWV0aG9kcworOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3ZhcmlhYmxlYCwgOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlYCwKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV92ZGVsZXRlYCBhbmQKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV92aW5mb2AgdGhhdCB1c2Ugb2Jzb2xldGUgVGNsIGNvbW1hbmRzIGFuZCBtaWdodAorbm90IHdvcmsgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFRjbC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjIxMTVgKS4KKworCisuLiBfcHkzNi10cmFjZWJhY2s6CisKK3RyYWNlYmFjaworLS0tLS0tLS0tCisKK0JvdGggdGhlIHRyYWNlYmFjayBtb2R1bGUgYW5kIHRoZSBpbnRlcnByZXRlcidzIGJ1aWx0aW4gZXhjZXB0aW9uIGRpc3BsYXkgbm93CithYmJyZXZpYXRlIGxvbmcgc2VxdWVuY2VzIG9mIHJlcGVhdGVkIGxpbmVzIGluIHRyYWNlYmFja3MgYXMgc2hvd24gaW4gdGhlCitmb2xsb3dpbmcgZXhhbXBsZTo6CisKKyAgICA+Pj4gZGVmIGYoKTogZigpCisgICAgLi4uCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiBmCisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiBmCisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiBmCisgICAgICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA5OTUgbW9yZSB0aW1lc10KKyAgICBSZWN1cnNpb25FcnJvcjogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWQKKworKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkgaW4gOmlzc3VlOmAyNjgyM2AuKQorCisKK3R5cGluZworLS0tLS0tCisKK1RoZSA6Y2xhc3M6YHR5cGluZy5Db250ZXh0TWFuYWdlcmAgY2xhc3MgaGFzIGJlZW4gYWRkZWQgZm9yCityZXByZXNlbnRpbmcgOmNsYXNzOmBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXJgLgorKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1NjA5YC4pCisKKwordW5pY29kZWRhdGEKKy0tLS0tLS0tLS0tCisKK1RoZSBpbnRlcm5hbCBkYXRhYmFzZSBoYXMgYmVlbiB1cGdyYWRlZCB0byB1c2UgVW5pY29kZSA5LjAuMC4gKENvbnRyaWJ1dGVkIGJ5CitCZW5qYW1pbiBQZXRlcnNvbi4pCisKKwordW5pdHRlc3QubW9jaworLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+dW5pdHRlc3QubW9jay5Nb2NrYCBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBpbXByb3ZlbWVudHM6CisKKyogVHdvIG5ldyBtZXRob2RzLCA6bWV0aDpgTW9jay5hc3NlcnRfY2FsbGVkKCkKKyAgPHVuaXR0ZXN0Lm1vY2suTW9jay5hc3NlcnRfY2FsbGVkPmAgYW5kIDptZXRoOmBNb2NrLmFzc2VydF9jYWxsZWRfb25jZSgpCisgIDx1bml0dGVzdC5tb2NrLk1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlPmAgdG8gY2hlY2sgaWYgdGhlIG1vY2sgb2JqZWN0CisgIHdhcyBjYWxsZWQuCisgIChDb250cmlidXRlZCBieSBBbWl0IFNhaGEgaW4gOmlzc3VlOmAyNjMyM2AuKQorCisKK3VybGxpYi5yZXF1ZXN0CistLS0tLS0tLS0tLS0tLQorCitJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHkgKG90aGVyIHRoYW4gYQorYnl0ZXMgb2JqZWN0KSBidXQgbm8gQ29udGVudC1MZW5ndGggaGVhZGVyLCByYXRoZXIgdGhhbgordGhyb3dpbmcgYW4gZXJyb3IsIDpjbGFzczpgfnVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXJgIG5vdworZmFsbHMgYmFjayB0byB1c2UgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZy4KKyhDb250cmlidXRlZCBieSBEZW1pYW4gQnJlY2h0IGFuZCBSb2xmIEtyYWhsIGluIDppc3N1ZTpgMTIzMTlgLikKKworCit1cmxsaWIucm9ib3RwYXJzZXIKKy0tLS0tLS0tLS0tLS0tLS0tLQorCis6Y2xhc3M6YH51cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyYCBub3cgc3VwcG9ydHMgdGhlIGBgQ3Jhd2wtZGVsYXlgYCBhbmQKK2BgUmVxdWVzdC1yYXRlYGAgZXh0ZW5zaW9ucy4KKyhDb250cmlidXRlZCBieSBOaWtvbGF5IEJvZ295Y2hldiBpbiA6aXNzdWU6YDE2MDk5YC4pCisKKword2FybmluZ3MKKy0tLS0tLS0tCisKK0EgbmV3IG9wdGlvbmFsICpzb3VyY2UqIHBhcmFtZXRlciBoYXMgYmVlbiBhZGRlZCB0byB0aGUKKzpmdW5jOmB3YXJuaW5ncy53YXJuX2V4cGxpY2l0YCBmdW5jdGlvbjogdGhlIGRlc3Ryb3llZCBvYmplY3Qgd2hpY2ggZW1pdHRlZCBhCis6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgLiBBICpzb3VyY2UqIGF0dHJpYnV0ZSBoYXMgYWxzbyBiZWVuIGFkZGVkIHRvCis6Y2xhc3M6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYCAoY29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKzppc3N1ZTpgMjY1NjhgIGFuZCA6aXNzdWU6YDI2NTY3YCkuCisKK1doZW4gYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHdhcm5pbmcgaXMgbG9nZ2VkLCB0aGUgOm1vZDpgdHJhY2VtYWxsb2NgIGlzIG5vdwordXNlZCB0byB0cnkgdG8gcmV0cmlldmUgdGhlIHRyYWNlYmFjayB3aGVyZSB0aGUgZGV0cm95ZWQgb2JqZWN0IHdhcyBhbGxvY2F0ZWQuCisKK0V4YW1wbGUgd2l0aCB0aGUgc2NyaXB0IGBgZXhhbXBsZS5weWBgOjoKKworICAgIGltcG9ydCB3YXJuaW5ncworCisgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgcmV0dXJuIG9wZW4oX19maWxlX18pCisKKyAgICBmID0gZnVuYygpCisgICAgZiA9IE5vbmUKKworT3V0cHV0IG9mIHRoZSBjb21tYW5kIGBgcHl0aG9uMy42IC1XZCAtWCB0cmFjZW1hbGxvYz01IGV4YW1wbGUucHlgYDo6CisKKyAgICBleGFtcGxlLnB5Ojc6IFJlc291cmNlV2FybmluZzogdW5jbG9zZWQgZmlsZSA8X2lvLlRleHRJT1dyYXBwZXIgbmFtZT0nZXhhbXBsZS5weScgbW9kZT0ncicgZW5jb2Rpbmc9J1VURi04Jz4KKyAgICAgIGYgPSBOb25lCisgICAgT2JqZWN0IGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJleGFtcGxlLnB5IiwgbGluZW5vIDQKKyAgICAgICAgcmV0dXJuIG9wZW4oX19maWxlX18pCisgICAgICBGaWxlICJleGFtcGxlLnB5IiwgbGluZW5vIDYKKyAgICAgICAgZiA9IGZ1bmMoKQorCitUaGUgIk9iamVjdCBhbGxvY2F0ZWQgYXQiIHRyYWNlYmFjayBpcyBuZXcgYW5kIG9ubHkgZGlzcGxheWVkIGlmCis6bW9kOmB0cmFjZW1hbGxvY2AgaXMgdHJhY2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRpb25zIGFuZCBpZiB0aGUKKzptb2Q6YHdhcm5pbmdzYCB3YXMgYWxyZWFkeSBpbXBvcnRlZC4KKworCit3aW5yZWcKKy0tLS0tLQorCitBZGRlZCB0aGUgNjQtYml0IGludGVnZXIgdHlwZSA6ZGF0YTpgUkVHX1FXT1JEIDx3aW5yZWcuUkVHX1FXT1JEPmAuCisoQ29udHJpYnV0ZWQgYnkgQ2xlbWVudCBSb3VhdWx0IGluIDppc3N1ZTpgMjMwMjZgLikKKworCit3aW5zb3VuZAorLS0tLS0tLS0KKworQWxsb3dlZCBrZXl3b3JkIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gOmZ1bmM6YEJlZXAgPHdpbnNvdW5kLkJlZXA+YCwKKzpmdW5jOmBNZXNzYWdlQmVlcCA8d2luc291bmQuTWVzc2FnZUJlZXA+YCwgYW5kIDpmdW5jOmBQbGF5U291bmQKKzx3aW5zb3VuZC5QbGF5U291bmQ+YCAoOmlzc3VlOmAyNzk4MmApLgorCisKK3htbHJwYy5jbGllbnQKKy0tLS0tLS0tLS0tLS0KKworVGhlIG1vZHVsZSBub3cgc3VwcG9ydHMgdW5tYXJzaGFsbGluZyBhZGRpdGlvbmFsIGRhdGEgdHlwZXMgdXNlZCBieQorQXBhY2hlIFhNTC1SUEMgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzIGFuZCBgYE5vbmVgYC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjY4ODVgLikKKworCit6aXBmaWxlCistLS0tLS0tCisKK0EgbmV3IDptZXRoOmBaaXBJbmZvLmZyb21fZmlsZSgpIDx6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlPmAgY2xhc3MgbWV0aG9kCithbGxvd3MgbWFraW5nIGEgOmNsYXNzOmB+emlwZmlsZS5aaXBJbmZvYCBpbnN0YW5jZSBmcm9tIGEgZmlsZXN5c3RlbSBmaWxlLgorQSBuZXcgOm1ldGg6YFppcEluZm8uaXNfZGlyKCkgPHppcGZpbGUuWmlwSW5mby5pc19kaXI+YCBtZXRob2QgY2FuIGJlIHVzZWQKK3RvIGNoZWNrIGlmIHRoZSA6Y2xhc3M6YH56aXBmaWxlLlppcEluZm9gIGluc3RhbmNlIHJlcHJlc2VudHMgYSBkaXJlY3RvcnkuCisoQ29udHJpYnV0ZWQgYnkgVGhvbWFzIEtsdXl2ZXIgaW4gOmlzc3VlOmAyNjAzOWAuKQorCitUaGUgOm1ldGg6YFppcEZpbGUub3BlbigpIDx6aXBmaWxlLlppcEZpbGUub3Blbj5gIG1ldGhvZCBjYW4gbm93IGJlIHVzZWQgdG8KK3dyaXRlIGRhdGEgaW50byBhIFpJUCBmaWxlLCBhcyB3ZWxsIGFzIGZvciBleHRyYWN0aW5nIGRhdGEuCisoQ29udHJpYnV0ZWQgYnkgVGhvbWFzIEtsdXl2ZXIgaW4gOmlzc3VlOmAyNjAzOWAuKQorCisKK3psaWIKKy0tLS0KKworVGhlIDpmdW5jOmB+emxpYi5jb21wcmVzc2AgZnVuY3Rpb24gbm93IGFjY2VwdHMga2V5d29yZCBhcmd1bWVudHMuCisoQ29udHJpYnV0ZWQgYnkgQXZpdiBQYWxpdm9kYSBpbiA6aXNzdWU6YDI2MjQzYC4pCisKKworZmlsZWlucHV0CistLS0tLS0tLS0KKworOmZ1bmM6YH5maWxlaW5wdXQuaG9va19lbmNvZGVkYCBub3cgc3VwcG9ydHMgdGhlICplcnJvcnMqIGFyZ3VtZW50LgorKENvbnRyaWJ1dGVkIGJ5IEpvc2VwaCBIYWNrbWFuIGluIDppc3N1ZTpgMjU3ODhgLikKKworCitPcHRpbWl6YXRpb25zCis9PT09PT09PT09PT09CisKKyogVGhlIEFTQ0lJIGRlY29kZXIgaXMgbm93IHVwIHRvIDYwIHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yIGhhbmRsZXJzCisgIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgaWdub3JlYGAgYW5kIGBgcmVwbGFjZWBgIChDb250cmlidXRlZAorICBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI0ODcwYCkuCisKKyogVGhlIEFTQ0lJIGFuZCB0aGUgTGF0aW4xIGVuY29kZXJzIGFyZSBub3cgdXAgdG8gMyB0aW1lcyBhcyBmYXN0IGZvciB0aGUKKyAgZXJyb3IgaGFuZGxlciBgYHN1cnJvZ2F0ZWVzY2FwZWBgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1MjI3YCkuCisKKyogVGhlIFVURi04IGVuY29kZXIgaXMgbm93IHVwIHRvIDc1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yIGhhbmRsZXJzCisgIGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgLCBgYHN1cnJvZ2F0ZWVzY2FwZWBgLCBgYHN1cnJvZ2F0ZXBhc3NgYCAoQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTI2N2ApLgorCisqIFRoZSBVVEYtOCBkZWNvZGVyIGlzIG5vdyB1cCB0byAxNSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCBhbmQgYGBzdXJyb2dhdGVlc2NhcGVgYCAoQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTMwMWApLgorCisqIGBgYnl0ZXMgJSBhcmdzYGAgaXMgbm93IHVwIHRvIDIgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIKKyAgaW4gOmlzc3VlOmAyNTM0OWApLgorCisqIGBgYnl0ZWFycmF5ICUgYXJnc2BgIGlzIG5vdyBiZXR3ZWVuIDIuNSBhbmQgNSB0aW1lcyBmYXN0ZXIuIChDb250cmlidXRlZCBieQorICBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1Mzk5YCkuCisKKyogT3B0aW1pemUgOm1ldGg6YGJ5dGVzLmZyb21oZXhgIGFuZCA6bWV0aDpgYnl0ZWFycmF5LmZyb21oZXhgOiB0aGV5IGFyZSBub3cKKyAgYmV0d2VlbiAyeCBhbmQgMy41eCBmYXN0ZXIuIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1NDAxYCkuCisKKyogT3B0aW1pemUgYGBieXRlcy5yZXBsYWNlKGInJywgYicuJylgYCBhbmQgYGBieXRlYXJyYXkucmVwbGFjZShiJycsIGInLicpYGA6CisgIHVwIHRvIDgwJSBmYXN0ZXIuIChDb250cmlidXRlZCBieSBKb3NoIFNuaWRlciBpbiA6aXNzdWU6YDI2NTc0YCkuCisKKyogQWxsb2NhdG9yIGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBkb21haW4KKyAgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gKSBub3cgdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yCisgIDxweW1hbGxvYz5gIGluc3RlYWQgb2YgOmM6ZnVuYzpgbWFsbG9jYCBmdW5jdGlvbiBvZiB0aGUgQyBsaWJyYXJ5LiBUaGUKKyAgcHltYWxsb2MgYWxsb2NhdG9yIGlzIG9wdGltaXplZCBmb3Igb2JqZWN0cyBzbWFsbGVyIG9yIGVxdWFsIHRvIDUxMiBieXRlcworICB3aXRoIGEgc2hvcnQgbGlmZXRpbWUsIGFuZCB1c2UgOmM6ZnVuYzpgbWFsbG9jYCBmb3IgbGFyZ2VyIG1lbW9yeSBibG9ja3MuCisgIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2MjQ5YCkuCisKKyogOmZ1bmM6YHBpY2tsZS5sb2FkYCBhbmQgOmZ1bmM6YHBpY2tsZS5sb2Fkc2AgYXJlIG5vdyB1cCB0byAxMCUgZmFzdGVyIHdoZW4KKyAgZGVzZXJpYWxpemluZyBtYW55IHNtYWxsIG9iamVjdHMgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCisgIDppc3N1ZTpgMjcwNTZgKS4KKworLSBQYXNzaW5nIDp0ZXJtOmBrZXl3b3JkIGFyZ3VtZW50cyA8a2V5d29yZCBhcmd1bWVudD5gIHRvIGEgZnVuY3Rpb24gaGFzIGFuCisgIG92ZXJoZWFkIGluIGNvbXBhcmlzb24gd2l0aCBwYXNzaW5nIDp0ZXJtOmBwb3NpdGlvbmFsIGFyZ3VtZW50cworICA8cG9zaXRpb25hbCBhcmd1bWVudD5gLiAgTm93IGluIGV4dGVuc2lvbiBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgd2l0aCB1c2luZworICBBcmd1bWVudCBDbGluaWMgdGhpcyBvdmVyaGVhZCBpcyBzaWduaWZpY2FudGx5IGRlY3JlYXNlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNzU3NGApLgorCisqIE9wdGltaXplZCA6ZnVuYzpgfmdsb2IuZ2xvYmAgYW5kIDpmdW5jOmB+Z2xvYi5pZ2xvYmAgZnVuY3Rpb25zIGluIHRoZQorICA6bW9kOmBnbG9iYCBtb2R1bGU7IHRoZXkgYXJlIG5vdyBhYm91dCAzLS02IHRpbWVzIGZhc3Rlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTU5NmApLgorCisqIE9wdGltaXplZCBnbG9iYmluZyBpbiA6bW9kOmBwYXRobGliYCBieSB1c2luZyA6ZnVuYzpgb3Muc2NhbmRpcmA7CisgIGl0IGlzIG5vdyBhYm91dCAxLjUtLTQgdGltZXMgZmFzdGVyLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2MDMyYCkuCisKK0J1aWxkIGFuZCBDIEFQSSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PQorCisqIFB5dGhvbiBub3cgcmVxdWlyZXMgc29tZSBDOTkgc3VwcG9ydCBpbiB0aGUgdG9vbGNoYWluIHRvIGJ1aWxkLiBGb3IgbW9yZQorICBpbmZvcm1hdGlvbiwgc2VlIDpwZXA6YDdgLgorCisqIENyb3NzLWNvbXBpbGluZyBDUHl0aG9uIHdpdGggdGhlIEFuZHJvaWQgTkRLIGFuZCB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwgc2V0IHRvCisgIDIxIChBbmRyb2lkIDUuMCBMb2xsaWxvcCkgb3IgZ3JlYXRlciwgcnVucyBzdWNjZXNzZnVsbHkuIFdoaWxlIEFuZHJvaWQgaXMgbm90CisgIHlldCBhIHN1cHBvcnRlZCBwbGF0Zm9ybSwgdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHJ1bnMgb24gdGhlIEFuZHJvaWQgZW11bGF0b3IKKyAgd2l0aCBvbmx5IGFib3V0IDE2IHRlc3RzIGZhaWx1cmVzLiBTZWUgdGhlIEFuZHJvaWQgbWV0YS1pc3N1ZSA6aXNzdWU6YDI2ODY1YC4KKworKiBUaGUgYGAtLXdpdGgtb3B0aW1pemF0aW9uc2BgIGNvbmZpZ3VyZSBmbGFnIGhhcyBiZWVuIGFkZGVkLiBUdXJuaW5nIGl0IG9uCisgIHdpbGwgYWN0aXZhdGUgTFRPIGFuZCBQR08gYnVpbGQgc3VwcG9ydCAod2hlbiBhdmFpbGFibGUpLgorICAoT3JpZ2luYWwgcGF0Y2ggYnkgQWxlY3NhbmRydSBQYXRyYXNjdSBvZiBJbnRlbCBpbiA6aXNzdWU6YDI2NTM5YC4pCisKKyogTmV3IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIEFQSSB3aGljaCBpbmRpY2F0ZXMgaWYgZmx1c2hpbmcgYnVmZmVyZWQgZGF0YQorICBmYWlsZWQgKDppc3N1ZTpgNTMxOWApLgorCisqIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc2Agbm93IHN1cHBvcnRzIDpyZWY6YHBvc2l0aW9uYWwtb25seQorICBwYXJhbWV0ZXJzIDxwb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyPmAuICBQb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBhcmUKKyAgZGVmaW5lZCBieSBlbXB0eSBuYW1lcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjI4MmApLgorCisqIGBgUHlUcmFjZWJhY2tfUHJpbnRgYCBtZXRob2Qgbm93IGFiYnJldmlhdGVzIGxvbmcgc2VxdWVuY2VzIG9mIHJlcGVhdGVkIGxpbmVzCisgIGFzIGBgIltQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudH0gbW9yZSB0aW1lc10iYGAuCisgIChDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworCitEZXByZWNhdGVkCis9PT09PT09PT09CisKK0RlcHJlY2F0ZWQgQnVpbGQgT3B0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBgYC0td2l0aC1zeXN0ZW0tZmZpYGAgY29uZmlndXJlIGZsYWcgaXMgbm93IG9uIGJ5IGRlZmF1bHQgb24gbm9uLU9TWCBVTklYCitwbGF0Zm9ybXMuICBJdCBtYXkgYmUgZGlzYWJsZWQgYnkgdXNpbmcgYGAtLXdpdGhvdXQtc3lzdGVtLWZmaWBgLCBidXQgdXNpbmcgdGhlCitmbGFnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgbm90IGJlIGFjY2VwdGVkIGluIFB5dGhvbiAzLjcuICBPU1ggaXMgdW5hZmZlY3RlZAorYnkgdGhpcyBjaGFuZ2UuICBOb3RlIHRoYXQgbWFueSBPUyBkaXN0cmlidXRvcnMgYWxyZWFkeSB1c2UgdGhlCitgYC0td2l0aC1zeXN0ZW0tZmZpYGAgZmxhZyB3aGVuIGJ1aWxkaW5nIHRoZWlyIHN5c3RlbSBQeXRob24uCisKKworTmV3IEtleXdvcmRzCistLS0tLS0tLS0tLS0KKworYGBhc3luY2BgIGFuZCBgYGF3YWl0YGAgYXJlIG5vdCByZWNvbW1lbmRlZCB0byBiZSB1c2VkIGFzIHZhcmlhYmxlLCBjbGFzcywKK2Z1bmN0aW9uIG9yIG1vZHVsZSBuYW1lcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYCBpbiBQeXRob24gMy41LCB0aGV5IHdpbGwKK2JlY29tZSBwcm9wZXIga2V5d29yZHMgaW4gUHl0aG9uIDMuNy4KKworCitEZXByZWNhdGVkIFB5dGhvbiBtb2R1bGVzLCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIDptZXRoOmBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIubG9hZF9tb2R1bGVgIGFuZAorICA6bWV0aDpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlci5sb2FkX21vZHVsZWAgYXJlIG5vdworICBkZXByZWNhdGVkLiBUaGV5IHdlcmUgdGhlIG9ubHkgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIGluIDptb2Q6YGltcG9ydGxpYmAgdGhhdCBoYWQgbm90CisgIGJlZW4gZGVwcmVjYXRlZCBpbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBQeXRob24gaW4gZmF2b3VyIG9mCisgIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAuCisKKyogVGhlIDptb2Q6YHRraW50ZXIudGl4YCBtb2R1bGUgaXMgbm93IGRlcHJlY2F0ZWQuICA6bW9kOmB0a2ludGVyYCB1c2VycyBzaG91bGQKKyAgdXNlIDptb2Q6YHRraW50ZXIudHRrYCBpbnN0ZWFkLgorCisKK0RlcHJlY2F0ZWQgZnVuY3Rpb25zIGFuZCB0eXBlcyBvZiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBOb25lIHlldC4KKworCitEZXByZWNhdGVkIGZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIGBgcHl2ZW52YGAgc2NyaXB0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGBgcHl0aG9uMyAtbSB2ZW52YGAuCisgIFRoaXMgcHJldmVudHMgY29uZnVzaW9uIGFzIHRvIHdoYXQgUHl0aG9uIGludGVycHJldGVyIGBgcHl2ZW52YGAgaXMKKyAgY29ubmVjdGVkIHRvIGFuZCB0aHVzIHdoYXQgUHl0aG9uIGludGVycHJldGVyIHdpbGwgYmUgdXNlZCBieSB0aGUgdmlydHVhbAorICBlbnZpcm9ubWVudC4gKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1MTU0YC4pCisKKyogV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBmYWxsaW5nIGJhY2sgb24gYGBfX25hbWVfX2BgIGFuZAorICBgYF9fcGF0aF9fYGAgZnJvbSB0aGUgY2FsbGluZyBtb2R1bGUgd2hlbiBgYF9fc3BlY19fYGAgb3IKKyAgYGBfX3BhY2thZ2VfX2BgIGFyZSBub3QgZGVmaW5lZCBub3cgcmFpc2VzIGFuIDpleGM6YEltcG9ydFdhcm5pbmdgLgorICAoQ29udHJpYnV0ZWQgYnkgUm9zZSBBbWVzIGluIDppc3N1ZTpgMjU3OTFgLikKKworKiBVbmxpa2UgdG8gb3RoZXIgOm1vZDpgZGJtYCBpbXBsZW1lbnRhdGlvbnMsIHRoZSA6bW9kOmBkYm0uZHVtYmAgbW9kdWxlCisgIGNyZWF0ZXMgZGF0YWJhc2UgaW4gYGAncidgYCBhbmQgYGAndydgYCBtb2RlcyBpZiBpdCBkb2Vzbid0IGV4aXN0IGFuZAorICBhbGxvd3MgbW9kaWZ5aW5nIGRhdGFiYXNlIGluIGBgJ3InYGAgbW9kZS4gIFRoaXMgYmVoYXZpb3IgaXMgbm93IGRlcHJlY2F0ZWQKKyAgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjguCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjE3MDhgLikKKworKiBVbmRvY3VtZW50ZWQgc3VwcG9ydCBvZiBnZW5lcmFsIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAKKyAgYXMgcGF0aHMgaW4gOm1vZDpgb3NgIGZ1bmN0aW9ucywgOmZ1bmM6YGNvbXBpbGVgIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpcworICBub3cgZGVwcmVjYXRlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTc5MWAgYW5kIDppc3N1ZTpgMjY3NTRgLikKKworKiBUaGUgdW5kb2N1bWVudGVkIGBgZXh0cmFfcGF0aGBgIGFyZ3VtZW50IHRvIGEgZGlzdHV0aWxzIERpc3RyaWJ1dGlvbgorICBpcyBub3cgY29uc2lkZXJlZAorICBkZXByZWNhdGVkLCB3aWxsIHJhaXNlIGEgd2FybmluZyBkdXJpbmcgaW5zdGFsbCBpZiBzZXQuIFN1cHBvcnQgZm9yIHRoaXMKKyAgcGFyYW1ldGVyIHdpbGwgYmUgZHJvcHBlZCBpbiBhIGZ1dHVyZSBQeXRob24gcmVsZWFzZSBhbmQgbGlrZWx5IGVhcmxpZXIKKyAgdGhyb3VnaCB0aGlyZCBwYXJ0eSB0b29scy4gU2VlIDppc3N1ZTpgMjc5MTlgIGZvciBkZXRhaWxzLgorCisqIEEgYmFja3NsYXNoLWNoYXJhY3RlciBwYWlyIHRoYXQgaXMgbm90IGEgdmFsaWQgZXNjYXBlIHNlcXVlbmNlIG5vdyBnZW5lcmF0ZXMKKyAgYSBEZXByZWNhdGlvbldhcm5pbmcuICBBbHRob3VnaCB0aGlzIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUgYSBTeW50YXhFcnJvciwKKyAgdGhhdCB3aWxsIG5vdCBiZSBmb3Igc2V2ZXJhbCBQeXRob24gcmVsZWFzZXMuICAoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeQorICBpbiA6aXNzdWU6YDI3MzY0YC4pCisKKyogSW5saW5lIGZsYWdzIGBgKD9sZXR0ZXJzKWBgIG5vdyBzaG91bGQgYmUgdXNlZCBvbmx5IGF0IHRoZSBzdGFydCBvZiB0aGUKKyAgcmVndWxhciBleHByZXNzaW9uLiAgSW5saW5lIGZsYWdzIGluIHRoZSBtaWRkbGUgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbgorICBhZmZlY3RzIGdsb2JhbCBmbGFncyBpbiBQeXRob24gOm1vZDpgcmVgIG1vZHVsZS4gIFRoaXMgaXMgYW4gZXhjZXB0aW9uIHRvCisgIG90aGVyIHJlZ3VsYXIgZXhwcmVzc2lvbiBlbmdpbmVzIHRoYXQgZWl0aGVyIGFwcGx5IGZsYWdzIHRvIG9ubHkgcGFydCBvZgorICB0aGUgcmVndWxhciBleHByZXNzaW9uIG9yIHRyZWF0IHRoZW0gYXMgYW4gZXJyb3IuICBUbyBhdm9pZCBkaXN0aW5ndWlzaGluZworICBpbmxpbmUgZmxhZ3MgaW4gdGhlIG1pZGRsZSBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uIG5vdyBlbWl0IGEgZGVwcmVjYXRpb24KKyAgd2FybmluZy4gIEl0IHdpbGwgYmUgYW4gZXJyb3IgaW4gZnV0dXJlIFB5dGhvbiByZWxlYXNlcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjQ5M2AuKQorCisqIFNTTC1yZWxhdGVkIGFyZ3VtZW50cyBsaWtlIGBgY2VydGZpbGVgYCwgYGBrZXlmaWxlYGAgYW5kIGBgY2hlY2tfaG9zdG5hbWVgYAorICBpbiA6bW9kOmBmdHBsaWJgLCA6bW9kOmBodHRwLmNsaWVudGAsIDptb2Q6YGltYXBsaWJgLCA6bW9kOmBwb3BsaWJgLAorICBhbmQgOm1vZDpgc210cGxpYmAgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYGBjb250ZXh0YGAuCisgIChDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwMjJgLikKKworKiBBIGNvdXBsZSBvZiBwcm90b2NvbHMgYW5kIGZ1bmN0aW9ucyBvZiB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgYXJlIG5vdworICBkZXByZWNhdGVkLiBTb21lIGZlYXR1cmVzIHdpbGwgbm8gbG9uZ2VyIGJlIGF2YWlsYWJsZSBpbiBmdXR1cmUgdmVyc2lvbnMKKyAgb2YgT3BlblNTTC4gT3RoZXIgZmVhdHVyZXMgYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYSBkaWZmZXJlbnQgQVBJLgorICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDIyYCBhbmQgOmlzc3VlOmAyNjQ3MGAuKQorCisKK0RlcHJlY2F0ZWQgUHl0aG9uIGJlaGF2aW9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFJhaXNpbmcgdGhlIDpleGM6YFN0b3BJdGVyYXRpb25gIGV4Y2VwdGlvbiBpbnNpZGUgYSBnZW5lcmF0b3Igd2lsbCBub3cgZ2VuZXJhdGUgYQorICA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLCBhbmQgd2lsbCB0cmlnZ2VyIGEgOmV4YzpgUnVudGltZUVycm9yYCBpbiBQeXRob24gMy43LgorICBTZWUgOnJlZjpgd2hhdHNuZXctcGVwLTQ3OWAgZm9yIGRldGFpbHMuCisKKworUmVtb3ZlZAorPT09PT09PQorCitBUEkgYW5kIEZlYXR1cmUgUmVtb3ZhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIGBgaW5zcGVjdC5nZXRtb2R1bGVpbmZvKClgYCB3YXMgcmVtb3ZlZCAod2FzIGRlcHJlY2F0ZWQgc2luY2UgQ1B5dGhvbiAzLjMpLgorICA6ZnVuYzpgaW5zcGVjdC5nZXRtb2R1bGVuYW1lYCBzaG91bGQgYmUgdXNlZCBmb3Igb2J0YWluaW5nIHRoZSBtb2R1bGUKKyAgbmFtZSBmb3IgYSBnaXZlbiBwYXRoLgorCisqIGBgdHJhY2ViYWNrLklnbm9yZWBgIGNsYXNzIGFuZCBgYHRyYWNlYmFjay51c2FnZWBgLCBgYHRyYWNlYmFjay5tb2RuYW1lYGAsCisgIGBgdHJhY2ViYWNrLmZ1bGxtb2RuYW1lYGAsIGBgdHJhY2ViYWNrLmZpbmRfbGluZXNfZnJvbV9jb2RlYGAsCisgIGBgdHJhY2ViYWNrLmZpbmRfbGluZXNgYCwgYGB0cmFjZWJhY2suZmluZF9zdHJpbmdzYGAsCisgIGBgdHJhY2ViYWNrLmZpbmRfZXhlY3V0YWJsZV9saW5lc2BgIG1ldGhvZHMgd2VyZSByZW1vdmVkIGZyb20gdGhlCisgIDptb2Q6YHRyYWNlYmFja2AgbW9kdWxlLiBUaGV5IHdlcmUgdW5kb2N1bWVudGVkIG1ldGhvZHMgZGVwcmVjYXRlZCBzaW5jZQorICBQeXRob24gMy4yIGFuZCBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlIGZyb20gcHJpdmF0ZSBtZXRob2RzLgorCisqIFRoZSBgYHRrX21lbnVCYXIoKWBgIGFuZCBgYHRrX2JpbmRGb3JUcmF2ZXJzYWwoKWBgIGR1bW15IG1ldGhvZHMgaW4KKyAgOm1vZDpgdGtpbnRlcmAgd2lkZ2V0IGNsYXNzZXMgd2VyZSByZW1vdmVkIChjb3JyZXNwb25kaW5nIFRrIGNvbW1hbmRzCisgIHdlcmUgb2Jzb2xldGUgc2luY2UgVGsgNC4wKS4KKworKiBUaGUgOm1ldGg6YH56aXBmaWxlLlppcEZpbGUub3BlbmAgbWV0aG9kIG9mIHRoZSA6Y2xhc3M6YHppcGZpbGUuWmlwRmlsZWAKKyAgY2xhc3Mgbm8gbG9uZ2VyIHN1cHBvcnRzIHRoZSBgYCdVJ2BgIG1vZGUgKHdhcyBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAzLjQpLgorICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZyBjb21wcmVzc2VkIHRleHQgZmlsZXMgaW4KKyAgOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZS4KKworKiBUaGUgdW5kb2N1bWVudGVkIGBgSU5gYCwgYGBDRFJPTWBgLCBgYERMRkNOYGAsIGBgVFlQRVNgYCwgYGBDRElPYGAsIGFuZAorICBgYFNUUk9QVFNgYCBtb2R1bGVzIGhhdmUgYmVlbiByZW1vdmVkLiAgVGhleSBoYWQgYmVlbiBhdmFpbGFibGUgaW4gdGhlCisgIHBsYXRmb3JtIHNwZWNpZmljIGBgTGliL3BsYXQtKi9gYCBkaXJlY3RvcmllcywgYnV0IHdlcmUgY2hyb25pY2FsbHkgb3V0IG9mCisgIGRhdGUsIGluY29uc2lzdGVudGx5IGF2YWlsYWJsZSBhY3Jvc3MgcGxhdGZvcm1zLCBhbmQgdW5tYWludGFpbmVkLiAgVGhlCisgIHNjcmlwdCB0aGF0IGNyZWF0ZWQgdGhlc2UgbW9kdWxlcyBpcyBzdGlsbCBhdmFpbGFibGUgaW4gdGhlIHNvdXJjZQorICBkaXN0cmlidXRpb24gYXQgOnNvdXJjZTpgVG9vbHMvc2NyaXB0cy9oMnB5LnB5YC4KKworCitQb3J0aW5nIHRvIFB5dGhvbiAzLjYKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHNlY3Rpb24gbGlzdHMgcHJldmlvdXNseSBkZXNjcmliZWQgY2hhbmdlcyBhbmQgb3RoZXIgYnVnZml4ZXMKK3RoYXQgbWF5IHJlcXVpcmUgY2hhbmdlcyB0byB5b3VyIGNvZGUuCisKK0NoYW5nZXMgaW4gJ3B5dGhvbicgQ29tbWFuZCBCZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIG91dHB1dCBvZiBhIHNwZWNpYWwgUHl0aG9uIGJ1aWxkIHdpdGggZGVmaW5lZCBgYENPVU5UX0FMTE9DU2BgLAorICBgYFNIT1dfQUxMT0NfQ09VTlRgYCBvciBgYFNIT1dfVFJBQ0tfQ09VTlRgYCBtYWNyb3MgaXMgbm93IG9mZiBieQorICBkZWZhdWx0LiAgSXQgY2FuIGJlIHJlLWVuYWJsZWQgdXNpbmcgdGhlIGBgLVggc2hvd2FsbG9jY291bnRgYCBvcHRpb24uCisgIEl0IG5vdyBvdXRwdXRzIHRvIGBgc3RkZXJyYGAgaW5zdGVhZCBvZiBgYHN0ZG91dGBgLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIzMDM0YC4pCisKKworQ2hhbmdlcyBpbiB0aGUgUHl0aG9uIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIDptb2Q6YHNxbGl0ZTNgIG5vIGxvbmdlciBpbXBsaWNpdGx5IGNvbW1pdCBhbiBvcGVuIHRyYW5zYWN0aW9uIGJlZm9yZSBEREwKKyAgc3RhdGVtZW50cy4KKworKiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbAorICBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkuCisKKyogV2hlbiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGlzIGRlZmluZWQsCisgIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtdXN0IGFsc28gYmUgZGVmaW5lZC4KKworKiA6YzpmdW5jOmBQeUVycl9TZXRJbXBvcnRFcnJvcmAgbm93IHNldHMgOmV4YzpgVHlwZUVycm9yYCB3aGVuIGl0cyAqKm1zZyoqCisgIGFyZ3VtZW50IGlzIG5vdCBzZXQuIFByZXZpb3VzbHkgb25seSBgYE5VTExgYCB3YXMgcmV0dXJuZWQuCisKKyogVGhlIGZvcm1hdCBvZiB0aGUgYGBjb19sbm90YWJgYCBhdHRyaWJ1dGUgb2YgY29kZSBvYmplY3RzIGNoYW5nZWQgdG8gc3VwcG9ydAorICBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gQnkgZGVmYXVsdCwgUHl0aG9uIGRvZXMgbm90IGVtaXQgYnl0ZWNvZGUgd2l0aAorICBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gRnVuY3Rpb25zIHVzaW5nIGBgZnJhbWUuZl9saW5lbm9gYCwKKyAgYGBQeUZyYW1lX0dldExpbmVOdW1iZXIoKWBgIG9yIGBgUHlDb2RlX0FkZHIyTGluZSgpYGAgYXJlIG5vdCBhZmZlY3RlZC4KKyAgRnVuY3Rpb25zIGRlY29kaW5nIGRpcmVjdGx5IGBgY29fbG5vdGFiYGAgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlIGEgc2lnbmVkCisgIDgtYml0IGludGVnZXIgdHlwZSBmb3IgdGhlIGxpbmUgbnVtYmVyIGRlbHRhLCBidXQgaXQncyBvbmx5IHJlcXVpcmVkIHRvCisgIHN1cHBvcnQgYXBwbGljYXRpb25zIHVzaW5nIG5lZ2F0aXZlIGxpbmUgbnVtYmVyIGRlbHRhLiBTZWUKKyAgYGBPYmplY3RzL2xub3RhYl9ub3Rlcy50eHRgYCBmb3IgdGhlIGBgY29fbG5vdGFiYGAgZm9ybWF0IGFuZCBob3cgdG8gZGVjb2RlCisgIGl0LCBhbmQgc2VlIHRoZSA6cGVwOmA1MTFgIGZvciB0aGUgcmF0aW9uYWxlLgorCisqIFRoZSBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YGNvbXBpbGVhbGxgIG1vZHVsZSBub3cgcmV0dXJuIGJvb2xlYW5zIGluc3RlYWQKKyAgb2YgYGAxYGAgb3IgYGAwYGAgdG8gcmVwcmVzZW50IHN1Y2Nlc3Mgb3IgZmFpbHVyZSwgcmVzcGVjdGl2ZWx5LiBUaGFua3MgdG8KKyAgYm9vbGVhbnMgYmVpbmcgYSBzdWJjbGFzcyBvZiBpbnRlZ2VycywgdGhpcyBzaG91bGQgb25seSBiZSBhbiBpc3N1ZSBpZiB5b3UKKyAgd2VyZSBkb2luZyBpZGVudGl0eSBjaGVja3MgZm9yIGBgMWBgIG9yIGBgMGBgLiBTZWUgOmlzc3VlOmAyNTc2OGAuCisKKyogUmVhZGluZyB0aGUgOmF0dHI6YH51cmxsaWIucGFyc2UuU3BsaXRSZXN1bHQucG9ydGAgYXR0cmlidXRlIG9mCisgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsc3BsaXRgIGFuZCA6ZnVuYzpgfnVybGxpYi5wYXJzZS51cmxwYXJzZWAgcmVzdWx0cworICBub3cgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGZvciBvdXQtb2YtcmFuZ2UgdmFsdWVzLCByYXRoZXIgdGhhbgorICByZXR1cm5pbmcgOmNvbnN0OmBOb25lYC4gIFNlZSA6aXNzdWU6YDIwMDU5YC4KKworKiBUaGUgOm1vZDpgaW1wYCBtb2R1bGUgbm93IHJhaXNlcyBhIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AgaW5zdGVhZCBvZgorICA6ZXhjOmBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nYC4KKworKiBUaGUgZm9sbG93aW5nIG1vZHVsZXMgaGF2ZSBoYWQgbWlzc2luZyBBUElzIGFkZGVkIHRvIHRoZWlyIDphdHRyOmBfX2FsbF9fYAorICBhdHRyaWJ1dGVzIHRvIG1hdGNoIHRoZSBkb2N1bWVudGVkIEFQSXM6CisgIDptb2Q6YGNhbGVuZGFyYCwgOm1vZDpgY2dpYCwgOm1vZDpgY3N2YCwKKyAgOm1vZDpgfnhtbC5ldHJlZS5FbGVtZW50VHJlZWAsIDptb2Q6YGVudW1gLAorICA6bW9kOmBmaWxlaW5wdXRgLCA6bW9kOmBmdHBsaWJgLCA6bW9kOmBsb2dnaW5nYCwgOm1vZDpgbWFpbGJveGAsCisgIDptb2Q6YG1pbWV0eXBlc2AsIDptb2Q6YG9wdHBhcnNlYCwgOm1vZDpgcGxpc3RsaWJgLCA6bW9kOmBzbXRwZGAsCisgIDptb2Q6YHN1YnByb2Nlc3NgLCA6bW9kOmB0YXJmaWxlYCwgOm1vZDpgdGhyZWFkaW5nYCBhbmQKKyAgOm1vZDpgd2F2ZWAuICBUaGlzIG1lYW5zIHRoZXkgd2lsbCBleHBvcnQgbmV3IHN5bWJvbHMgd2hlbiBgYGltcG9ydCAqYGAKKyAgaXMgdXNlZC4gIFNlZSA6aXNzdWU6YDIzODgzYC4KKworKiBXaGVuIHBlcmZvcm1pbmcgYSByZWxhdGl2ZSBpbXBvcnQsIGlmIGBgX19wYWNrYWdlX19gYCBkb2VzIG5vdCBjb21wYXJlIGVxdWFsCisgIHRvIGBgX19zcGVjX18ucGFyZW50YGAgdGhlbiA6ZXhjOmBJbXBvcnRXYXJuaW5nYCBpcyByYWlzZWQuCisgIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTc5MWAuKQorCisqIFdoZW4gYSByZWxhdGl2ZSBpbXBvcnQgaXMgcGVyZm9ybWVkIGFuZCBubyBwYXJlbnQgcGFja2FnZSBpcyBrbm93biwgdGhlbgorICA6ZXhjOmBJbXBvcnRFcnJvcmAgd2lsbCBiZSByYWlzZWQuIFByZXZpb3VzbHksIDpleGM6YFN5c3RlbUVycm9yYCBjb3VsZCBiZQorICByYWlzZWQuIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAxODAxOGAuKQorCisqIFNlcnZlcnMgYmFzZWQgb24gdGhlIDptb2Q6YHNvY2tldHNlcnZlcmAgbW9kdWxlLCBpbmNsdWRpbmcgdGhvc2UKKyAgZGVmaW5lZCBpbiA6bW9kOmBodHRwLnNlcnZlcmAsIDptb2Q6YHhtbHJwYy5zZXJ2ZXJgIGFuZAorICA6bW9kOmB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXJgLCBub3cgb25seSBjYXRjaCBleGNlcHRpb25zIGRlcml2ZWQKKyAgZnJvbSA6ZXhjOmBFeGNlcHRpb25gLiBUaGVyZWZvcmUgaWYgYSByZXF1ZXN0IGhhbmRsZXIgcmFpc2VzCisgIGFuIGV4Y2VwdGlvbiBsaWtlIDpleGM6YFN5c3RlbUV4aXRgIG9yIDpleGM6YEtleWJvYXJkSW50ZXJydXB0YCwKKyAgOm1ldGg6YH5zb2NrZXRzZXJ2ZXIuQmFzZVNlcnZlci5oYW5kbGVfZXJyb3JgIGlzIG5vIGxvbmdlciBjYWxsZWQsIGFuZAorICB0aGUgZXhjZXB0aW9uIHdpbGwgc3RvcCBhIHNpbmdsZS10aHJlYWRlZCBzZXJ2ZXIuIChDb250cmlidXRlZCBieQorICBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjM0MzBgLikKKworKiA6ZnVuYzpgc3B3ZC5nZXRzcG5hbWAgbm93IHJhaXNlcyBhIDpleGM6YFBlcm1pc3Npb25FcnJvcmAgaW5zdGVhZCBvZgorICA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIHByaXZpbGVnZXMuCisKKyogVGhlIDptZXRoOmBzb2NrZXQuc29ja2V0LmNsb3NlYCBtZXRob2Qgbm93IHJhaXNlcyBhbiBleGNlcHRpb24gaWYKKyAgYW4gZXJyb3IgKGUuZy4gRUJBREYpIHdhcyByZXBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBzeXN0ZW0gY2FsbC4KKyAgU2VlIDppc3N1ZTpgMjY2ODVgLgorCisqIFRoZSAqZGVjb2RlX2RhdGEqIGFyZ3VtZW50IGZvciA6Y2xhc3M6YHNtdHBkLlNNVFBDaGFubmVsYCBhbmQKKyAgOmNsYXNzOmBzbXRwZC5TTVRQU2VydmVyYCBjb25zdHJ1Y3RvcnMgaXMgbm93IGBgRmFsc2VgYCBieSBkZWZhdWx0LgorICBUaGlzIG1lYW5zIHRoYXQgdGhlIGFyZ3VtZW50IHBhc3NlZCB0bworICA6bWV0aDpgfnNtdHBkLlNNVFBTZXJ2ZXIucHJvY2Vzc19tZXNzYWdlYCBpcyBub3cgYSBieXRlcyBvYmplY3QgYnkKKyAgZGVmYXVsdCwgYW5kIGBgcHJvY2Vzc19tZXNzYWdlKClgYCB3aWxsIGJlIHBhc3NlZCBrZXl3b3JkIGFyZ3VtZW50cy4KKyAgQ29kZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gdXBkYXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGRlcHJlY2F0aW9uCisgIHdhcm5pbmcgZ2VuZXJhdGVkIGJ5IDMuNSB3aWxsIG5vdCBiZSBhZmZlY3RlZC4KKworKiBBbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBvZiB0aGUgOmZ1bmM6YH5qc29uLmR1bXBgLCA6ZnVuYzpgfmpzb24uZHVtcHNgLAorICA6ZnVuYzpgfmpzb24ubG9hZGAgYW5kIDpmdW5jOmB+anNvbi5sb2Fkc2AgZnVuY3Rpb25zIGFuZAorICA6Y2xhc3M6YH5qc29uLkpTT05FbmNvZGVyYCBhbmQgOmNsYXNzOmB+anNvbi5KU09ORGVjb2RlcmAgY2xhc3MKKyAgY29uc3RydWN0b3JzIGluIHRoZSA6bW9kOmBqc29uYCBtb2R1bGUgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkKKyAgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAxODcyNmAuKQorCisqIEFzIHBhcnQgb2YgOnBlcDpgNDg3YCwgdGhlIGhhbmRsaW5nIG9mIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCB0bworICA6Y2xhc3M6YHR5cGVgIChvdGhlciB0aGFuIHRoZSBtZXRhY2xhc3MgaGludCwgYGBtZXRhY2xhc3NgYCkgaXMgbm93CisgIGNvbnNpc3RlbnRseSBkZWxlZ2F0ZWQgdG8gOm1ldGg6YG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2AuIFRoaXMgbWVhbnMgdGhhdAorICA6bWV0aDpgdHlwZS5fX25ld19fYCBhbmQgOm1ldGg6YHR5cGUuX19pbml0X19gIGJvdGggbm93IGFjY2VwdCBhcmJpdHJhcnkKKyAga2V5d29yZCBhcmd1bWVudHMsIGJ1dCA6bWV0aDpgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYCAod2hpY2ggaXMgY2FsbGVkIGZyb20KKyAgOm1ldGg6YHR5cGUuX19uZXdfX2ApIHdpbGwgcmVqZWN0IHRoZW0gYnkgZGVmYXVsdC4gQ3VzdG9tIG1ldGFjbGFzc2VzCisgIGFjY2VwdGluZyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzIHdpbGwgbmVlZCB0byBhZGp1c3QgdGhlaXIgY2FsbHMgdG8KKyAgOm1ldGg6YHR5cGUuX19uZXdfX2AgKHdoZXRoZXIgZGlyZWN0IG9yIHZpYSA6Y2xhc3M6YHN1cGVyYCkgYWNjb3JkaW5nbHkuCisKKyogSW4gOmNsYXNzOmBkaXN0dXRpbHMuY29tbWFuZC5zZGlzdC5zZGlzdGAsIHRoZSBgYGRlZmF1bHRfZm9ybWF0YGAKKyAgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQgYW5kIGlzIG5vIGxvbmdlciBob25vcmVkLiBJbnN0ZWFkLCB0aGUKKyAgZ3ppcHBlZCB0YXJmaWxlIGZvcm1hdCBpcyB0aGUgZGVmYXVsdCBvbiBhbGwgcGxhdGZvcm1zIGFuZCBubworICBwbGF0Zm9ybS1zcGVjaWZpYyBzZWxlY3Rpb24gaXMgbWFkZS4KKyAgSW4gZW52aXJvbm1lbnRzIHdoZXJlIGRpc3RyaWJ1dGlvbnMgYXJlCisgIGJ1aWx0IG9uIFdpbmRvd3MgYW5kIHppcCBkaXN0cmlidXRpb25zIGFyZSByZXF1aXJlZCwgY29uZmlndXJlCisgIHRoZSBwcm9qZWN0IHdpdGggYSBgYHNldHVwLmNmZ2BgIGZpbGUgY29udGFpbmluZyB0aGUgZm9sbG93aW5nOjoKKworICAgIFtzZGlzdF0KKyAgICBmb3JtYXRzPXppcAorCisgIFRoaXMgYmVoYXZpb3IgaGFzIGFsc28gYmVlbiBiYWNrcG9ydGVkIHRvIGVhcmxpZXIgUHl0aG9uIHZlcnNpb25zCisgIGJ5IFNldHVwdG9vbHMgMjYuMC4wLgorCisqIEluIHRoZSA6bW9kOmB1cmxsaWIucmVxdWVzdGAgbW9kdWxlIGFuZCB0aGUKKyAgOm1ldGg6YGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnJlcXVlc3RgIG1ldGhvZCwgaWYgbm8gQ29udGVudC1MZW5ndGgKKyAgaGVhZGVyIGZpZWxkIGhhcyBiZWVuIHNwZWNpZmllZCBhbmQgdGhlIHJlcXVlc3QgYm9keSBpcyBhIGZpbGUgb2JqZWN0LAorICBpdCBpcyBub3cgc2VudCB3aXRoIEhUVFAgMS4xIGNodW5rZWQgZW5jb2RpbmcuIElmIGEgZmlsZSBvYmplY3QgaGFzIHRvCisgIGJlIHNlbnQgdG8gYSBIVFRQIDEuMCBzZXJ2ZXIsIHRoZSBDb250ZW50LUxlbmd0aCB2YWx1ZSBub3cgaGFzIHRvIGJlCisgIHNwZWNpZmllZCBieSB0aGUgY2FsbGVyLiBTZWUgOmlzc3VlOmAxMjMxOWAuCisKK0NoYW5nZXMgaW4gdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgYWxsb2NhdG9yIGZhbWlseSBub3cgdXNlcyB0aGUgOnJlZjpgcHltYWxsb2MgYWxsb2NhdG9yCisgIDxweW1hbGxvYz5gIHJhdGhlciB0aGFuIHN5c3RlbSA6YzpmdW5jOmBtYWxsb2NgLiBBcHBsaWNhdGlvbnMgY2FsbGluZworICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMIGNhbiBub3cgY3Jhc2guIFNldCB0aGUKKyAgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgYGRlYnVnYGAgdG8gdmFsaWRhdGUgdGhlCisgIHVzYWdlIG9mIG1lbW9yeSBhbGxvY2F0b3JzIGluIHlvdXIgYXBwbGljYXRpb24uIFNlZSA6aXNzdWU6YDI2MjQ5YC4KKworKiA6YzpmdW5jOmBQeV9FeGl0YCAoYW5kIHRoZSBtYWluIGludGVycHJldGVyKSBub3cgb3ZlcnJpZGUgdGhlIGV4aXQgc3RhdHVzCisgIHdpdGggMTIwIGlmIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEgZmFpbGVkLiAgU2VlIDppc3N1ZTpgNTMxOWAuCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0IGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdAppbmRleCBlZGI1NTAyLi43YzkyNTI0IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CisrKyBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKQEAgLTExLDYgKzExLDcgQEAKIC4uIHRvY3RyZWU6OgogICAgOm1heGRlcHRoOiAyCiAKKyAgIDMuNi5yc3QKICAgIDMuNS5yc3QKICAgIDMuNC5yc3QKICAgIDMuMy5yc3QKZGlmZiAtLWdpdCBhL0dyYW1tYXIvR3JhbW1hciBiL0dyYW1tYXIvR3JhbW1hcgppbmRleCA0MzA3NTIzLi5iMTM5ZTlmIDEwMDY0NAotLS0gYS9HcmFtbWFyL0dyYW1tYXIKKysrIGIvR3JhbW1hci9HcmFtbWFyCkBAIC0yNywyNSArMjcsMzEgQEAKIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKIAogcGFyYW1ldGVyczogJygnIFt0eXBlZGFyZ3NsaXN0XSAnKScKLXR5cGVkYXJnc2xpc3Q6ICh0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJwotICAgICAgIFsnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwgJyoqJyB0ZnBkZWZdXQotICAgICB8ICAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwgJyoqJyB0ZnBkZWYpCit0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgICAgIHwgJyoqJyB0ZnBkZWYgWycsJ11dXQorICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICB8ICcqKicgdGZwZGVmIFsnLCddKQogdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLXZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKLSAgICAgICBbJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmXV0KLSAgICAgfCAgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmKQordmFyYXJnc2xpc3Q6ICh2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbCisgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgfCAnKionIHZmcGRlZiBbJywnXV1dCisgIHwgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHZmcGRlZiBbJywnXV1dCisgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKykKIHZmcGRlZjogTkFNRQogCiBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKIHNpbXBsZV9zdG10OiBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKIHNtYWxsX3N0bXQ6IChleHByX3N0bXQgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8CiAgICAgICAgICAgICAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IG5vbmxvY2FsX3N0bXQgfCBhc3NlcnRfc3RtdCkKLWV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKK2V4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhbm5hc3NpZ24gfCBhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10KIGF1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CiAgICAgICAgICAgICAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JykKLSMgRm9yIG5vcm1hbCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCisjIEZvciBub3JtYWwgYW5kIGFubm90YXRlZCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCiBkZWxfc3RtdDogJ2RlbCcgZXhwcmxpc3QKIHBhc3Nfc3RtdDogJ3Bhc3MnCiBmbG93X3N0bXQ6IGJyZWFrX3N0bXQgfCBjb250aW51ZV9zdG10IHwgcmV0dXJuX3N0bXQgfCByYWlzZV9zdG10IHwgeWllbGRfc3RtdApAQCAtMTQwLDcgKzE0Niw3IEBACiAgICAgICAgICAgICAnKicgdGVzdCApCiAKIGNvbXBfaXRlcjogY29tcF9mb3IgfCBjb21wX2lmCi1jb21wX2ZvcjogJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCitjb21wX2ZvcjogW0FTWU5DXSAnZm9yJyBleHBybGlzdCAnaW4nIG9yX3Rlc3QgW2NvbXBfaXRlcl0KIGNvbXBfaWY6ICdpZicgdGVzdF9ub2NvbmQgW2NvbXBfaXRlcl0KIAogIyBub3QgdXNlZCBpbiBncmFtbWFyLCBidXQgbWF5IGFwcGVhciBpbiAibm9kZSIgcGFzc2VkIGZyb20gUGFyc2VyIHRvIENvbXBpbGVyCmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi1hc3QuaCBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCmluZGV4IDJkM2VhY2IuLjcwNDk0YjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCkBAIC02NSwxMSArNjUsMTIgQEAKIAogZW51bSBfc3RtdF9raW5kIHtGdW5jdGlvbkRlZl9raW5kPTEsIEFzeW5jRnVuY3Rpb25EZWZfa2luZD0yLCBDbGFzc0RlZl9raW5kPTMsCiAgICAgICAgICAgICAgICAgICBSZXR1cm5fa2luZD00LCBEZWxldGVfa2luZD01LCBBc3NpZ25fa2luZD02LAotICAgICAgICAgICAgICAgICAgQXVnQXNzaWduX2tpbmQ9NywgRm9yX2tpbmQ9OCwgQXN5bmNGb3Jfa2luZD05LCBXaGlsZV9raW5kPTEwLAotICAgICAgICAgICAgICAgICAgSWZfa2luZD0xMSwgV2l0aF9raW5kPTEyLCBBc3luY1dpdGhfa2luZD0xMywgUmFpc2Vfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTE1LCBBc3NlcnRfa2luZD0xNiwgSW1wb3J0X2tpbmQ9MTcsCi0gICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTgsIEdsb2JhbF9raW5kPTE5LCBOb25sb2NhbF9raW5kPTIwLAotICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTIxLCBQYXNzX2tpbmQ9MjIsIEJyZWFrX2tpbmQ9MjMsIENvbnRpbnVlX2tpbmQ9MjR9OworICAgICAgICAgICAgICAgICAgQXVnQXNzaWduX2tpbmQ9NywgQW5uQXNzaWduX2tpbmQ9OCwgRm9yX2tpbmQ9OSwKKyAgICAgICAgICAgICAgICAgIEFzeW5jRm9yX2tpbmQ9MTAsIFdoaWxlX2tpbmQ9MTEsIElmX2tpbmQ9MTIsIFdpdGhfa2luZD0xMywKKyAgICAgICAgICAgICAgICAgIEFzeW5jV2l0aF9raW5kPTE0LCBSYWlzZV9raW5kPTE1LCBUcnlfa2luZD0xNiwKKyAgICAgICAgICAgICAgICAgIEFzc2VydF9raW5kPTE3LCBJbXBvcnRfa2luZD0xOCwgSW1wb3J0RnJvbV9raW5kPTE5LAorICAgICAgICAgICAgICAgICAgR2xvYmFsX2tpbmQ9MjAsIE5vbmxvY2FsX2tpbmQ9MjEsIEV4cHJfa2luZD0yMiwgUGFzc19raW5kPTIzLAorICAgICAgICAgICAgICAgICAgQnJlYWtfa2luZD0yNCwgQ29udGludWVfa2luZD0yNX07CiBzdHJ1Y3QgX3N0bXQgewogICAgIGVudW0gX3N0bXRfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTExOCw2ICsxMTksMTMgQEAKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICBpbnQgc2ltcGxlOworICAgICAgICB9IEFubkFzc2lnbjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBleHByX3R5IHRhcmdldDsKICAgICAgICAgICAgIGV4cHJfdHkgaXRlcjsKICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgYXNkbF9zZXEgKm9yZWxzZTsKQEAgLTIwMSw5ICsyMDksMTAgQEAKICAgICAgICAgICAgICAgICAgIFNldENvbXBfa2luZD05LCBEaWN0Q29tcF9raW5kPTEwLCBHZW5lcmF0b3JFeHBfa2luZD0xMSwKICAgICAgICAgICAgICAgICAgIEF3YWl0X2tpbmQ9MTIsIFlpZWxkX2tpbmQ9MTMsIFlpZWxkRnJvbV9raW5kPTE0LAogICAgICAgICAgICAgICAgICAgQ29tcGFyZV9raW5kPTE1LCBDYWxsX2tpbmQ9MTYsIE51bV9raW5kPTE3LCBTdHJfa2luZD0xOCwKLSAgICAgICAgICAgICAgICAgIEJ5dGVzX2tpbmQ9MTksIE5hbWVDb25zdGFudF9raW5kPTIwLCBFbGxpcHNpc19raW5kPTIxLAotICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MjIsIFN1YnNjcmlwdF9raW5kPTIzLCBTdGFycmVkX2tpbmQ9MjQsCi0gICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjUsIExpc3Rfa2luZD0yNiwgVHVwbGVfa2luZD0yN307CisgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZV9raW5kPTE5LCBKb2luZWRTdHJfa2luZD0yMCwgQnl0ZXNfa2luZD0yMSwKKyAgICAgICAgICAgICAgICAgIE5hbWVDb25zdGFudF9raW5kPTIyLCBFbGxpcHNpc19raW5kPTIzLCBDb25zdGFudF9raW5kPTI0LAorICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MjUsIFN1YnNjcmlwdF9raW5kPTI2LCBTdGFycmVkX2tpbmQ9MjcsCisgICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjgsIExpc3Rfa2luZD0yOSwgVHVwbGVfa2luZD0zMH07CiBzdHJ1Y3QgX2V4cHIgewogICAgIGVudW0gX2V4cHJfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTI5Nyw2ICszMDYsMTYgQEAKICAgICAgICAgfSBTdHI7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgIGludCBjb252ZXJzaW9uOworICAgICAgICAgICAgZXhwcl90eSBmb3JtYXRfc3BlYzsKKyAgICAgICAgfSBGb3JtYXR0ZWRWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBhc2RsX3NlcSAqdmFsdWVzOworICAgICAgICB9IEpvaW5lZFN0cjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBieXRlcyBzOwogICAgICAgICB9IEJ5dGVzOwogICAgICAgICAKQEAgLTMwNSw2ICszMjQsMTAgQEAKICAgICAgICAgfSBOYW1lQ29uc3RhbnQ7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgY29uc3RhbnQgdmFsdWU7CisgICAgICAgIH0gQ29uc3RhbnQ7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgIGlkZW50aWZpZXIgYXR0cjsKICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CkBAIC0zNjYsNiArMzg5LDcgQEAKICAgICBleHByX3R5IHRhcmdldDsKICAgICBleHByX3R5IGl0ZXI7CiAgICAgYXNkbF9zZXEgKmlmczsKKyAgICBpbnQgaXNfYXN5bmM7CiB9OwogCiBlbnVtIF9leGNlcHRoYW5kbGVyX2tpbmQge0V4Y2VwdEhhbmRsZXJfa2luZD0xfTsKQEAgLTQ0Niw2ICs0NzAsOSBAQAogI2RlZmluZSBBdWdBc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0F1Z0Fzc2lnbihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogc3RtdF90eSBfUHlfQXVnQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBvcGVyYXRvcl90eSBvcCwgZXhwcl90eSB2YWx1ZSwgaW50CiAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBBbm5Bc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Bbm5Bc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCitzdG10X3R5IF9QeV9Bbm5Bc3NpZ24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgYW5ub3RhdGlvbiwgZXhwcl90eSB2YWx1ZSwgaW50CisgICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBGb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Gb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCiBzdG10X3R5IF9QeV9Gb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqCiAgICAgICAgICAgICAgICAgb3JlbHNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNTQzLDYgKzU3MCwxMiBAQAogZXhwcl90eSBfUHlfTnVtKG9iamVjdCBuLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9TdHIoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9TdHIoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEZvcm1hdHRlZFZhbHVlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9Gb3JtYXR0ZWRWYWx1ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQorZXhwcl90eSBfUHlfRm9ybWF0dGVkVmFsdWUoZXhwcl90eSB2YWx1ZSwgaW50IGNvbnZlcnNpb24sIGV4cHJfdHkgZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBKb2luZWRTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9Kb2luZWRTdHIoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Kb2luZWRTdHIoYXNkbF9zZXEgKiB2YWx1ZXMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQnl0ZXMoYTAsIGExLCBhMiwgYTMpIF9QeV9CeXRlcyhhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X0J5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIE5hbWVDb25zdGFudChhMCwgYTEsIGEyLCBhMykgX1B5X05hbWVDb25zdGFudChhMCwgYTEsIGEyLCBhMykKQEAgLTU1MCw2ICs1ODMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEVsbGlwc2lzKGEwLCBhMSwgYTIpIF9QeV9FbGxpcHNpcyhhMCwgYTEsIGEyKQogZXhwcl90eSBfUHlfRWxsaXBzaXMoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9Db25zdGFudChhMCwgYTEsIGEyLCBhMykKK2V4cHJfdHkgX1B5X0NvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdHRyaWJ1dGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4cHJfdHkgX1B5X0F0dHJpYnV0ZShleHByX3R5IHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dF90eSBjdHgsIGludAogICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTU3NCw5ICs2MTAsOSBAQAogc2xpY2VfdHkgX1B5X0V4dFNsaWNlKGFzZGxfc2VxICogZGltcywgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBJbmRleChhMCwgYTEpIF9QeV9JbmRleChhMCwgYTEpCiBzbGljZV90eSBfUHlfSW5kZXgoZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBjb21wcmVoZW5zaW9uKGEwLCBhMSwgYTIsIGEzKSBfUHlfY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMykKKyNkZWZpbmUgY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9jb21wcmVoZW5zaW9uKGEwLCBhMSwgYTIsIGEzLCBhNCkKIGNvbXByZWhlbnNpb25fdHkgX1B5X2NvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnMsIFB5QXJlbmEgKmFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzLCBpbnQgaXNfYXN5bmMsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRXhjZXB0SGFuZGxlcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfRXhjZXB0SGFuZGxlcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogZXhjZXB0aGFuZGxlcl90eSBfUHlfRXhjZXB0SGFuZGxlcihleHByX3R5IHR5cGUsIGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24uaCBiL0luY2x1ZGUvUHl0aG9uLmgKaW5kZXggODU4ZGJkMS4uNGM3YzlhNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24uaAorKysgYi9JbmNsdWRlL1B5dGhvbi5oCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRlICJweWxpZmVjeWNsZS5oIgogI2luY2x1ZGUgImNldmFsLmgiCiAjaW5jbHVkZSAic3lzbW9kdWxlLmgiCisjaW5jbHVkZSAib3Ntb2R1bGUuaCIKICNpbmNsdWRlICJpbnRyY2hlY2suaCIKICNpbmNsdWRlICJpbXBvcnQuaCIKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IDM2ZGY1YTcuLjQ0MTA3YTggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTcsNyArNyw5IEBACiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgogI2RlZmluZSBQeU9iamVjdF9DYWxsRnVuY3Rpb24gX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAogI2RlZmluZSBQeU9iamVjdF9DYWxsTWV0aG9kIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2VuZGlmCiAKIC8qIEFic3RyYWN0IE9iamVjdCBJbnRlcmZhY2UgKG1hbnkgdGhhbmtzIHRvIEppbSBGdWx0b24pICovCkBAIC0yNjQsMTggKzI2Niw5NiBAQAogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlTdGFja19Bc1R1cGxlKAorICAgICAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzKTsKKworICAgIC8qIENvbnZlcnQga2V5d29yZCBhcmd1bWVudHMgZnJvbSB0aGUgKHN0YWNrLCBrd25hbWVzKSBmb3JtYXQgdG8gYSBQeXRob24KKyAgICAgICBkaWN0aW9uYXJ5LgorCisgICAgICAga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZS4ga3duYW1lcyBpcyBub3QgY2hlY2tlZCwgdXN1YWxseSB0aGVzZSBjaGVja3MgYXJlIGRvbmUgYmVmb3JlIG9yIGxhdGVyCisgICAgICAgY2FsbGluZyBfUHlTdGFja19Bc0RpY3QoKS4gRm9yIGV4YW1wbGUsIF9QeUFyZ19QYXJzZVN0YWNrKCkgcmFpc2VzIGFuCisgICAgICAgZXJyb3IgaWYgYSBrZXkgaXMgbm90IGEgc3RyaW5nLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3RhY2tfQXNEaWN0KAorICAgICAgICBQeU9iamVjdCAqKnZhbHVlcywKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpOworCisgICAgLyogQ29udmVydCAoYXJncywgbmFyZ3MsIGt3YXJncykgaW50byBhIChzdGFjaywgbmFyZ3MsIGt3bmFtZXMpLgorCisgICAgICAgUmV0dXJuIGEgbmV3IHN0YWNrIHdoaWNoIHNob3VsZCBiZSByZWxlYXNlZCBieSBQeU1lbV9GcmVlKCksIG9yIHJldHVybgorICAgICAgIGFyZ3MgdW5jaGFuZ2VkIGlmIGt3YXJncyBpcyBOVUxMIG9yIGFuIGVtcHR5IGRpY3Rpb25hcnkuCisKKyAgICAgICBUaGUgc3RhY2sgdXNlcyBib3Jyb3dlZCByZWZlcmVuY2VzLgorCisgICAgICAgVGhlIHR5cGUgb2Yga2V5d29yZCBrZXlzIGlzIG5vdCBjaGVja2VkLCB0aGVzZSBjaGVja3Mgc2hvdWxkIGJlIGRvbmUKKyAgICAgICBsYXRlciAoZXg6IF9QeUFyZ19QYXJzZVN0YWNrKS4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICoqKSBfUHlTdGFja19VbnBhY2tEaWN0KAorICAgICAgICBQeU9iamVjdCAqKmFyZ3MsCisgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MsCisgICAgICAgIFB5T2JqZWN0ICoqa3duYW1lcywKKyAgICAgICAgUHlPYmplY3QgKmZ1bmMpOworCisgICAgLyogQ2FsbCB0aGUgY2FsbGFibGUgb2JqZWN0IGZ1bmMgd2l0aCB0aGUgImZhc3QgY2FsbCIgY2FsbGluZyBjb252ZW50aW9uOgorICAgICAgIGFyZ3MgaXMgYSBDIGFycmF5IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cyAobmFyZ3MgaXMgdGhlIG51bWJlciBvZgorICAgICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzKSwga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBmb3Iga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICBJZiBuYXJncyBpcyBlcXVhbCB0byB6ZXJvLCBhcmdzIGNhbiBiZSBOVUxMLiBrd2FyZ3MgY2FuIGJlIE5VTEwuCisgICAgICAgbmFyZ3MgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHplcm8uCisKKyAgICAgICBSZXR1cm4gdGhlIHJlc3VsdCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gb24gcmV0dXJuIE5VTEwgb24KKyAgICAgICBlcnJvci4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncyk7CisKKyAgICAvKiBDYWxsIHRoZSBjYWxsYWJsZSBvYmplY3QgZnVuYyB3aXRoIHRoZSAiZmFzdCBjYWxsIiBjYWxsaW5nIGNvbnZlbnRpb246CisgICAgICAgYXJncyBpcyBhIEMgYXJyYXkgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnRzIGZvbGxvd2VkIGJ5IHZhbHVlcyBvZgorICAgICAgIGtleXdvcmQgYXJndW1lbnRzLiBLZXlzIG9mIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzdG9yZWQgYXMgYSB0dXBsZQorICAgICAgIG9mIHN0cmluZ3MgaW4ga3duYW1lcy4gbmFyZ3MgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgYXQKKyAgICAgICB0aGUgYmVnaW5uaW5nIG9mIHN0YWNrLiBUaGUgc2l6ZSBvZiBrd25hbWVzIGdpdmVzIHRoZSBudW1iZXIgb2Yga2V5d29yZAorICAgICAgIHZhbHVlcyBpbiB0aGUgc3RhY2sgYWZ0ZXIgcG9zaXRpb25hbCBhcmd1bWVudHMuCisKKyAgICAgICBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlLgorCisgICAgICAgSWYgbmFyZ3MgaXMgZXF1YWwgdG8gemVybyBhbmQgdGhlcmUgaXMgbm8ga2V5d29yZCBhcmd1bWVudCAoa3duYW1lcyBpcworICAgICAgIE5VTEwgb3IgaXRzIHNpemUgaXMgemVybyksIGFyZ3MgY2FuIGJlIE5VTEwuCisKKyAgICAgICBSZXR1cm4gdGhlIHJlc3VsdCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uCisgICAgICAgZXJyb3IuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfRmFzdENhbGxLZXl3b3JkcworICAgICAgIChQeU9iamVjdCAqZnVuYywKKyAgICAgICAgUHlPYmplY3QgKiphcmdzLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICBQeU9iamVjdCAqa3duYW1lcyk7CisKKyNkZWZpbmUgX1B5T2JqZWN0X0Zhc3RDYWxsKGZ1bmMsIGFyZ3MsIG5hcmdzKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCgoZnVuYyksIChhcmdzKSwgKG5hcmdzKSwgTlVMTCkKKworI2RlZmluZSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpIFwKKyAgICBfUHlPYmplY3RfRmFzdENhbGwoKGZ1bmMpLCBOVUxMLCAwKQorCisjZGVmaW5lIF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBhcmcpIFwKKyAgICBfUHlPYmplY3RfRmFzdENhbGwoKGZ1bmMpLCAmKGFyZyksIDEpCisKKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsX1ByZXBlbmQoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKTsKKwogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KFB5T2JqZWN0ICpmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqd2hlcmUpOwotI2VuZGlmCisjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgICAgLyoKICAgICAgQ2FsbCBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QsIGNhbGxhYmxlX29iamVjdCwgd2l0aAogICAgICBhcmd1bWVudHMgYW5kIGtleXdvcmRzIGFyZ3VtZW50cy4gIFRoZSAnYXJncycgYXJndW1lbnQgY2FuIG5vdCBiZQotICAgICBOVUxMLCBidXQgdGhlICdrdycgYXJndW1lbnQgY2FuIGJlIE5VTEwuCisgICAgIE5VTEwuCiAgICAgICAgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxPYmplY3QoUHlPYmplY3QgKmNhbGxhYmxlX29iamVjdCwKQEAgLTMxNSw2ICszOTUsNyBAQAogICAgICBQeXRob24gZXhwcmVzc2lvbjogby5tZXRob2QoYXJncykuCiAgICAgICAgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwpAQCAtMzIzLDYgKzQwNCw3IEBACiAgICAgICAgICBMaWtlIFB5T2JqZWN0X0NhbGxNZXRob2QsIGJ1dCBleHBlY3QgYSBfUHlfSWRlbnRpZmllciogYXMgdGhlCiAgICAgICAgICBtZXRob2QgbmFtZS4KICAgICAgICAqLworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCkBAIC0zMzEsMTAgKzQxMywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVChQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKQEAgLTM1MCw5ICs0MzQsMTEgQEAKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRob2QsIC4uLik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgICAgLyoKICAgICAgQ2FsbCB0aGUgbWV0aG9kIG5hbWVkIG0gb2Ygb2JqZWN0IG8gd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgpAQCAtMTI3MCwxMyArMTM1NiwxMyBAQAogUHlBUElfRlVOQyhjaGFyICpjb25zdCAqKSBfUHlTZXF1ZW5jZV9CeXRlc1RvQ2hhcnBBcnJheShQeU9iamVjdCogc2VsZik7CiAKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0ZyZWVDaGFyUEFycmF5KGNoYXIgKmNvbnN0IGFycmF5W10pOwotI2VuZGlmCiAKIC8qIEZvciBpbnRlcm5hbCB1c2UgYnkgYnVmZmVyIEFQSSBmdW5jdGlvbnMgKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5X2FkZF9vbmVfdG9faW5kZXhfRihpbnQgbmQsIFB5X3NzaXplX3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X2FkZF9vbmVfdG9faW5kZXhfQyhpbnQgbmQsIFB5X3NzaXplX3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYXNkbC5oIGIvSW5jbHVkZS9hc2RsLmgKaW5kZXggNDk1MTUzYy4uMzVlOWZhMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc2RsLmgKKysrIGIvSW5jbHVkZS9hc2RsLmgKQEAgLTYsNiArNiw3IEBACiB0eXBlZGVmIFB5T2JqZWN0ICogYnl0ZXM7CiB0eXBlZGVmIFB5T2JqZWN0ICogb2JqZWN0OwogdHlwZWRlZiBQeU9iamVjdCAqIHNpbmdsZXRvbjsKK3R5cGVkZWYgUHlPYmplY3QgKiBjb25zdGFudDsKIAogLyogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXNkbF9jLnB5IHdhcyBjb21wbGV0ZWx5CiAgICBpbmRlcGVuZGVudCBvZiBQeXRob24sIGJ1dCBpdCBpcyBhIGdvYWwgdGhlIHJlcXVpcmVzIHRvbyBtdWNoIHdvcmsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKaW5kZXggMTFkNWY0Mi4uN2ZhNzU0MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKKysrIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKQEAgLTE3LDkgKzE3LDE4IEBACiAvKiBUaGVzZSBzdG9yZSB0aGVpciBsZW4gc2l6ZWQgYW5zd2VyIGluIHRoZSBnaXZlbiBwcmVhbGxvY2F0ZWQgKnJlc3VsdCBhcmcuICovCiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfbG93ZXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpjcHRyLCBQeV9zc2l6ZV90IGxlbik7CiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfdXBwZXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpjcHRyLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKLWV4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOworZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOworCitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19maW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX2luZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3JmaW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3JpbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19jb3VudChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gaW50IF9QeV9ieXRlc19jb250YWlucyhjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJnKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3N0YXJ0c3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfZW5kc3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOwogCiAvKiBUaGUgbWFrZXRyYW5zKCkgc3RhdGljIG1ldGhvZC4gKi8KIGV4dGVybiBQeU9iamVjdCogX1B5X2J5dGVzX21ha2V0cmFucyhQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0byk7CkBAIC0zNyw3ICs0NiwxOSBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3RpdGxlX19kb2NfX1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2NhcGl0YWxpemVfX2RvY19fW107CiBleHRlcm4gY29uc3QgY2hhciBfUHlfc3dhcGNhc2VfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfY291bnRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZmluZF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9pbmRleF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yZmluZF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yaW5kZXhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfc3RhcnRzd2l0aF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9lbmRzd2l0aF9fZG9jX19bXTsKIGV4dGVybiBjb25zdCBjaGFyIF9QeV9tYWtldHJhbnNfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZXhwYW5kdGFic19fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9sanVzdF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yanVzdF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9jZW50ZXJfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfemZpbGxfX2RvY19fW107CiAKIC8qIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBkb2NzIGFyZSBzaGFyZWQgZnJvbSB0aGUgLm8sIG5vdCBzdGF0aWMgKi8KICNkZWZpbmUgUHlEb2NfU1RSVkFSX3NoYXJlZChuYW1lLHN0cikgY29uc3QgY2hhciBuYW1lW10gPSBQeURvY19TVFIoc3RyKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc29iamVjdC5oIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCmluZGV4IDZjMWUwYzMuLjExZDgyMTggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAorKysgYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKQEAgLTYyLDcgKzYyLDE0IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlCeXRlc19SZXNpemUoUHlPYmplY3QgKiosIFB5X3NzaXplX3QpOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5Qnl0ZXNfRm9ybWF0RXgoCisgICAgY29uc3QgY2hhciAqZm9ybWF0LAorICAgIFB5X3NzaXplX3QgZm9ybWF0X2xlbiwKKyAgICBQeU9iamVjdCAqYXJncywKKyAgICBpbnQgdXNlX2J5dGVhcnJheSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5Qnl0ZXNfRnJvbUhleCgKKyAgICBQeU9iamVjdCAqc3RyaW5nLAorICAgIGludCB1c2VfYnl0ZWFycmF5KTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICosIFB5X3NzaXplX3QsCiAJCQkJCQkgICBjb25zdCBjaGFyICosIFB5X3NzaXplX3QsCkBAIC0xMjMsNiArMTMwLDg3IEBACiAjZGVmaW5lIEZfQUxUCSgxPDwzKQogI2RlZmluZSBGX1pFUk8JKDE8PDQpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIFRoZSBfUHlCeXRlc1dyaXRlciBzdHJ1Y3R1cmUgaXMgYmlnOiBpdCBjb250YWlucyBhbiBlbWJlZGRlZCAic3RhY2sgYnVmZmVyIi4KKyAgIEEgX1B5Qnl0ZXNXcml0ZXIgdmFyaWFibGUgbXVzdCBiZSBkZWNsYXJlZCBhdCB0aGUgZW5kIG9mIHZhcmlhYmxlcyBpbiBhCisgICBmdW5jdGlvbiB0byBvcHRpbWl6ZSB0aGUgbWVtb3J5IGFsbG9jYXRpb24gb24gdGhlIHN0YWNrLiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIGJ5dGVzLCBieXRlYXJyYXkgb3IgTlVMTCAod2hlbiB0aGUgc21hbGwgYnVmZmVyIGlzIHVzZWQpICovCisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKworICAgIC8qIE51bWJlciBvZiBhbGxvY2F0ZWQgc2l6ZS4gKi8KKyAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZDsKKworICAgIC8qIE1pbmltdW0gbnVtYmVyIG9mIGFsbG9jYXRlZCBieXRlcywKKyAgICAgICBpbmNyZW1lbnRlZCBieSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCkgKi8KKyAgICBQeV9zc2l6ZV90IG1pbl9zaXplOworCisgICAgLyogSWYgbm9uLXplcm8sIHVzZSBhIGJ5dGVhcnJheSBpbnN0ZWFkIG9mIGEgYnl0ZXMgb2JqZWN0IGZvciBidWZmZXIuICovCisgICAgaW50IHVzZV9ieXRlYXJyYXk7CisKKyAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgKGRlZmF1bHQ6IDApLgorICAgICAgIFRoaXMgZmxhZyBtdXN0IGJlIHplcm8gaWYgdXNlX2J5dGVhcnJheSBpcyBub24temVyby4gKi8KKyAgICBpbnQgb3ZlcmFsbG9jYXRlOworCisgICAgLyogU3RhY2sgYnVmZmVyICovCisgICAgaW50IHVzZV9zbWFsbF9idWZmZXI7CisgICAgY2hhciBzbWFsbF9idWZmZXJbNTEyXTsKK30gX1B5Qnl0ZXNXcml0ZXI7CisKKy8qIEluaXRpYWxpemUgYSBieXRlcyB3cml0ZXIKKworICAgQnkgZGVmYXVsdCwgdGhlIG92ZXJhbGxvY2F0aW9uIGlzIGRpc2FibGVkLiBTZXQgdGhlIG92ZXJhbGxvY2F0ZSBhdHRyaWJ1dGUKKyAgIHRvIGNvbnRyb2wgdGhlIGFsbG9jYXRpb24gb2YgdGhlIGJ1ZmZlci4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5Qnl0ZXNXcml0ZXJfSW5pdChfUHlCeXRlc1dyaXRlciAqd3JpdGVyKTsKKworLyogR2V0IHRoZSBidWZmZXIgY29udGVudCBhbmQgcmVzZXQgdGhlIHdyaXRlci4KKyAgIFJldHVybiBhIGJ5dGVzIG9iamVjdCwgb3IgYSBieXRlYXJyYXkgb2JqZWN0IGlmIHVzZV9ieXRlYXJyYXkgaXMgbm9uLXplcm8uCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc1dyaXRlcl9GaW5pc2goX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIpOworCisvKiBEZWFsbG9jYXRlIG1lbW9yeSBvZiBhIHdyaXRlciAoY2xlYXIgaXRzIGludGVybmFsIGJ1ZmZlcikuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcik7CisKKy8qIEFsbG9jYXRlIHRoZSBidWZmZXIgdG8gd3JpdGUgc2l6ZSBieXRlcy4KKyAgIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIGJ1ZmZlciBkYXRhLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX0FsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogRW5zdXJlIHRoYXQgdGhlIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2ggdG8gd3JpdGUgKnNpemUqIGJ5dGVzLgorICAgQWRkIHNpemUgdG8gdGhlIHdyaXRlciBtaW5pbXVtIHNpemUgKG1pbl9zaXplIGF0dHJpYnV0ZSkuCisKKyAgIHN0ciBpcyB0aGUgY3VycmVudCBwb2ludGVyIGluc2lkZSB0aGUgYnVmZmVyLgorICAgUmV0dXJuIHRoZSB1cGRhdGVkIGN1cnJlbnQgcG9pbnRlciBpbnNpZGUgdGhlIGJ1ZmZlci4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIFJlc2l6ZSB0aGUgYnVmZmVyIHRvIG1ha2UgaXQgbGFyZ2VyLgorICAgVGhlIG5ldyBidWZmZXIgbWF5IGJlIGxhcmdlciB0aGFuIHNpemUgYnl0ZXMgYmVjYXVzZSBvZiBvdmVyYWxsb2NhdGlvbi4KKyAgIFJldHVybiB0aGUgdXBkYXRlZCBjdXJyZW50IHBvaW50ZXIgaW5zaWRlIHRoZSBidWZmZXIuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLgorCisgICBOb3RlOiBzaXplIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIGJ5dGVzIGluIHRoZSB3cml0ZXIuCisKKyAgIFRoaXMgZnVuY3Rpb24gZG9lc24ndCB1c2UgdGhlIHdyaXRlciBtaW5pbXVtIHNpemUgKG1pbl9zaXplIGF0dHJpYnV0ZSkuCisKKyAgIFNlZSBhbHNvIF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoKS4KKyAgICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9SZXNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogV3JpdGUgYnl0ZXMuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0ciwKKyAgICBjb25zdCB2b2lkICpieXRlcywKKyAgICBQeV9zc2l6ZV90IHNpemUpOworI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvY2V2YWwuaCBiL0luY2x1ZGUvY2V2YWwuaAppbmRleCBiNTM3M2E5Li44OWM2MDYyIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NldmFsLmgKKysrIGIvSW5jbHVkZS9jZXZhbC5oCkBAIC04LDcgKzgsNyBAQAogLyogSW50ZXJmYWNlIHRvIHJhbmRvbSBwYXJ0cyBpbiBjZXZhbC5jICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoCi0gICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisgICAgUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKTsKIAogLyogSW5saW5lIHRoaXMgKi8KICNkZWZpbmUgUHlFdmFsX0NhbGxPYmplY3QoZnVuYyxhcmcpIFwKQEAgLTI1LDYgKzI1LDEwIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9TZXRUcmFjZShQeV90cmFjZWZ1bmMsIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NldENvcm91dGluZVdyYXBwZXIoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0Q29yb3V0aW5lV3JhcHBlcih2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcih2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9HZXRBc3luY0dlbkZpbmFsaXplcih2b2lkKTsKICNlbmRpZgogCiBzdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwpAQCAtMTE5LDYgKzEyMyw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9HZXRDYWxsU3RhdHMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9FdmFsRnJhbWUoc3RydWN0IF9mcmFtZSAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFdmFsX0V2YWxGcmFtZUV4KHN0cnVjdCBfZnJhbWUgKmYsIGludCBleGMpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQoc3RydWN0IF9mcmFtZSAqZiwgaW50IGV4Yyk7CisjZW5kaWYKIAogLyogSW50ZXJmYWNlIGZvciB0aHJlYWRzLgogCkBAIC0xNzIsNyArMTc5LDkgQEAKIAogUHlBUElfRlVOQyhpbnQpICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfSW5pdFRocmVhZHModm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfRmluaVRocmVhZHModm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9BY3F1aXJlTG9jayh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX1JlbGVhc2VMb2NrKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfQWNxdWlyZVRocmVhZChQeVRocmVhZFN0YXRlICp0c3RhdGUpOwpAQCAtMTg0LDYgKzE5MywxMCBAQAogUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nKSBfUHlFdmFsX0dldFN3aXRjaEludGVydmFsKHZvaWQpOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5RXZhbF9SZXF1ZXN0Q29kZUV4dHJhSW5kZXgoZnJlZWZ1bmMpOworI2VuZGlmCisKICNkZWZpbmUgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyB7IFwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKl9zYXZlOyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBfc2F2ZSA9IFB5RXZhbF9TYXZlVGhyZWFkKCk7CkBAIC0yMDYsNiArMjE5LDE0IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2lnbmFsQXN5bmNFeGModm9pZCk7CiAjZW5kaWYKIAorLyogTWFza3MgYW5kIHZhbHVlcyB1c2VkIGJ5IEZPUk1BVF9WQUxVRSBvcGNvZGUuICovCisjZGVmaW5lIEZWQ19NQVNLICAgICAgMHgzCisjZGVmaW5lIEZWQ19OT05FICAgICAgMHgwCisjZGVmaW5lIEZWQ19TVFIgICAgICAgMHgxCisjZGVmaW5lIEZWQ19SRVBSICAgICAgMHgyCisjZGVmaW5lIEZWQ19BU0NJSSAgICAgMHgzCisjZGVmaW5lIEZWU19NQVNLICAgICAgMHg0CisjZGVmaW5lIEZWU19IQVZFX1NQRUMgMHg0CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb2RlLmggYi9JbmNsdWRlL2NvZGUuaAppbmRleCA4ZWNmMzhhLi4wNjE5MDI5IDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGUuaAorKysgYi9JbmNsdWRlL2NvZGUuaApAQCAtNyw2ICs3LDE2IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCit0eXBlZGVmIHVpbnQxNl90IF9QeV9DT0RFVU5JVDsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIF9QeV9PUENPREUod29yZCkgKCh3b3JkKSA+PiA4KQorIyAgZGVmaW5lIF9QeV9PUEFSRyh3b3JkKSAoKHdvcmQpICYgMjU1KQorI2Vsc2UKKyMgIGRlZmluZSBfUHlfT1BDT0RFKHdvcmQpICgod29yZCkgJiAyNTUpCisjICBkZWZpbmUgX1B5X09QQVJHKHdvcmQpICgod29yZCkgPj4gOCkKKyNlbmRpZgorCiAvKiBCeXRlY29kZSBvYmplY3QgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0xNSw2ICsyNSw3IEBACiAgICAgaW50IGNvX25sb2NhbHM7CQkvKiAjbG9jYWwgdmFyaWFibGVzICovCiAgICAgaW50IGNvX3N0YWNrc2l6ZTsJCS8qICNlbnRyaWVzIG5lZWRlZCBmb3IgZXZhbHVhdGlvbiBzdGFjayAqLwogICAgIGludCBjb19mbGFnczsJCS8qIENPXy4uLiwgc2VlIGJlbG93ICovCisgICAgaW50IGNvX2ZpcnN0bGluZW5vOyAgIC8qIGZpcnN0IHNvdXJjZSBsaW5lIG51bWJlciAqLwogICAgIFB5T2JqZWN0ICpjb19jb2RlOwkJLyogaW5zdHJ1Y3Rpb24gb3Bjb2RlcyAqLwogICAgIFB5T2JqZWN0ICpjb19jb25zdHM7CS8qIGxpc3QgKGNvbnN0YW50cyB1c2VkKSAqLwogICAgIFB5T2JqZWN0ICpjb19uYW1lczsJCS8qIGxpc3Qgb2Ygc3RyaW5ncyAobmFtZXMgdXNlZCkgKi8KQEAgLTMwLDExICs0MSwxNCBAQAogICAgIHVuc2lnbmVkIGNoYXIgKmNvX2NlbGwyYXJnOyAvKiBNYXBzIGNlbGwgdmFycyB3aGljaCBhcmUgYXJndW1lbnRzLiAqLwogICAgIFB5T2JqZWN0ICpjb19maWxlbmFtZTsJLyogdW5pY29kZSAod2hlcmUgaXQgd2FzIGxvYWRlZCBmcm9tKSAqLwogICAgIFB5T2JqZWN0ICpjb19uYW1lOwkJLyogdW5pY29kZSAobmFtZSwgZm9yIHJlZmVyZW5jZSkgKi8KLSAgICBpbnQgY29fZmlyc3RsaW5lbm87CQkvKiBmaXJzdCBzb3VyY2UgbGluZSBudW1iZXIgKi8KICAgICBQeU9iamVjdCAqY29fbG5vdGFiOwkvKiBzdHJpbmcgKGVuY29kaW5nIGFkZHI8LT5saW5lbm8gbWFwcGluZykgU2VlCiAJCQkJICAgT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0IGZvciBkZXRhaWxzLiAqLwogICAgIHZvaWQgKmNvX3pvbWJpZWZyYW1lOyAgICAgLyogZm9yIG9wdGltaXphdGlvbiBvbmx5IChzZWUgZnJhbWVvYmplY3QuYykgKi8KICAgICBQeU9iamVjdCAqY29fd2Vha3JlZmxpc3Q7ICAgLyogdG8gc3VwcG9ydCB3ZWFrcmVmcyB0byBjb2RlIG9iamVjdHMgKi8KKyAgICAvKiBTY3JhdGNoIHNwYWNlIGZvciBleHRyYSBkYXRhIHJlbGF0aW5nIHRvIHRoZSBjb2RlIG9iamVjdC5fX2ljY19uYW4KKyAgICAgICBUeXBlIGlzIGEgdm9pZCogdG8ga2VlcCB0aGUgZm9ybWF0IHByaXZhdGUgaW4gY29kZW9iamVjdC5jIHRvIGZvcmNlCisgICAgICAgcGVvcGxlIHRvIGdvIHRocm91Z2ggdGhlIHByb3BlciBBUElzLiAqLworICAgIHZvaWQgKmNvX2V4dHJhOwogfSBQeUNvZGVPYmplY3Q7CiAKIC8qIE1hc2tzIGZvciBjb19mbGFncyBhYm92ZSAqLwpAQCAtNTUsNiArNjksNyBAQAogICAgYGBhc3luYyBkZWZgYCBrZXl3b3JkcykgKi8KICNkZWZpbmUgQ09fQ09ST1VUSU5FICAgICAgICAgICAgMHgwMDgwCiAjZGVmaW5lIENPX0lURVJBQkxFX0NPUk9VVElORSAgIDB4MDEwMAorI2RlZmluZSBDT19BU1lOQ19HRU5FUkFUT1IgICAgICAweDAyMDAKIAogLyogVGhlc2UgYXJlIG5vIGxvbmdlciB1c2VkLiAqLwogI2lmIDAKQEAgLTEyNiw3ICsxNDEsMTUgQEAKICNlbmRpZgogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlDb2RlX09wdGltaXplKFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCogY29uc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICpsaW5lbm9fb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzLCBQeU9iamVjdCAqbG5vdGFiKTsKKworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKGludCkgX1B5Q29kZV9HZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipleHRyYSk7CitQeUFQSV9GVU5DKGludCkgX1B5Q29kZV9TZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmV4dHJhKTsKKyNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGF0ZXRpbWUuaCBiL0luY2x1ZGUvZGF0ZXRpbWUuaAppbmRleCAwNmNiYzRhLi4zYmYzNWNiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RhdGV0aW1lLmgKKysrIGIvSW5jbHVkZS9kYXRldGltZS5oCkBAIC04MSw2ICs4MSw3IEBACiB0eXBlZGVmIHN0cnVjdAogewogICAgIF9QeURhdGVUaW1lX1RJTUVIRUFECisgICAgdW5zaWduZWQgY2hhciBmb2xkOwogICAgIFB5T2JqZWN0ICp0emluZm87CiB9IFB5RGF0ZVRpbWVfVGltZTsgICAgICAgICAgICAgIC8qIGhhc3R6aW5mbyB0cnVlICovCiAKQEAgLTEwOCw2ICsxMDksNyBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBfUHlEYXRlVGltZV9EQVRFVElNRUhFQUQKKyAgICB1bnNpZ25lZCBjaGFyIGZvbGQ7CiAgICAgUHlPYmplY3QgKnR6aW5mbzsKIH0gUHlEYXRlVGltZV9EYXRlVGltZTsgICAgICAgICAgLyogaGFzdHppbmZvIHRydWUgKi8KIApAQCAtMTI1LDYgKzEyNyw3IEBACiAgICAgKCgoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5kYXRhWzddIDw8IDE2KSB8ICAgICAgIFwKICAgICAgKCgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmRhdGFbOF0gPDwgOCkgIHwgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+ZGF0YVs5XSkKKyNkZWZpbmUgUHlEYXRlVGltZV9EQVRFX0dFVF9GT0xEKG8pICAgICAgICAoKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+Zm9sZCkKIAogLyogQXBwbHkgZm9yIHRpbWUgaW5zdGFuY2VzLiAqLwogI2RlZmluZSBQeURhdGVUaW1lX1RJTUVfR0VUX0hPVVIobykgICAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbMF0pCkBAIC0xMzQsNiArMTM3LDcgQEAKICAgICAoKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVszXSA8PCAxNikgfCAgICAgICAgICAgXAogICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzRdIDw8IDgpICB8ICAgICAgICAgICBcCiAgICAgICAoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbNV0pCisjZGVmaW5lIFB5RGF0ZVRpbWVfVElNRV9HRVRfRk9MRChvKSAgICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+Zm9sZCkKIAogLyogQXBwbHkgZm9yIHRpbWUgZGVsdGEgaW5zdGFuY2VzICovCiAjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMobykgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+ZGF5cykKQEAgLTE2Miw2ICsxNjYsMTEgQEAKICAgICBQeU9iamVjdCAqKCpEYXRlVGltZV9Gcm9tVGltZXN0YW1wKShQeU9iamVjdCosIFB5T2JqZWN0KiwgUHlPYmplY3QqKTsKICAgICBQeU9iamVjdCAqKCpEYXRlX0Zyb21UaW1lc3RhbXApKFB5T2JqZWN0KiwgUHlPYmplY3QqKTsKIAorICAgIC8qIFBFUCA0OTUgY29uc3RydWN0b3JzICovCisgICAgUHlPYmplY3QgKigqRGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lQW5kRm9sZCkoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAorICAgICAgICBQeU9iamVjdCosIGludCwgUHlUeXBlT2JqZWN0Kik7CisgICAgUHlPYmplY3QgKigqVGltZV9Gcm9tVGltZUFuZEZvbGQpKGludCwgaW50LCBpbnQsIGludCwgUHlPYmplY3QqLCBpbnQsIFB5VHlwZU9iamVjdCopOworCiB9IFB5RGF0ZVRpbWVfQ0FQSTsKIAogI2RlZmluZSBQeURhdGVUaW1lX0NBUFNVTEVfTkFNRSAiZGF0ZXRpbWUuZGF0ZXRpbWVfQ0FQSSIKQEAgLTIxNywxMCArMjI2LDE4IEBACiAgICAgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIFwKICAgICAgICAgbWluLCBzZWMsIHVzZWMsIFB5X05vbmUsIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lVHlwZSkKIAorI2RlZmluZSBQeURhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGQoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWluLCBzZWMsIHVzZWMsIGZvbGQpIFwKKyAgICBQeURhdGVUaW1lQVBJLT5EYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWVBbmRGb2xkKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIFwKKyAgICAgICAgbWluLCBzZWMsIHVzZWMsIFB5X05vbmUsIGZvbGQsIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lVHlwZSkKKwogI2RlZmluZSBQeVRpbWVfRnJvbVRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQpIFwKICAgICBQeURhdGVUaW1lQVBJLT5UaW1lX0Zyb21UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBcCiAgICAgICAgIFB5X05vbmUsIFB5RGF0ZVRpbWVBUEktPlRpbWVUeXBlKQogCisjZGVmaW5lIFB5VGltZV9Gcm9tVGltZUFuZEZvbGQoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIGZvbGQpIFwKKyAgICBQeURhdGVUaW1lQVBJLT5UaW1lX0Zyb21UaW1lQW5kRm9sZChob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgXAorICAgICAgICBQeV9Ob25lLCBmb2xkLCBQeURhdGVUaW1lQVBJLT5UaW1lVHlwZSkKKwogI2RlZmluZSBQeURlbHRhX0Zyb21EU1UoZGF5cywgc2Vjb25kcywgdXNlY29uZHMpIFwKICAgICBQeURhdGVUaW1lQVBJLT5EZWx0YV9Gcm9tRGVsdGEoZGF5cywgc2Vjb25kcywgdXNlY29uZHMsIDEsIFwKICAgICAgICAgUHlEYXRlVGltZUFQSS0+RGVsdGFUeXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kZXNjcm9iamVjdC5oIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCmluZGV4IGUyYmE5N2YuLjhmM2U4NGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaAorKysgYi9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKQEAgLTc4LDcgKzc4LDkgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeU1ldGhvZERlc2NyX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlXcmFwcGVyRGVzY3JfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeURpY3RQcm94eV9UeXBlOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU1ldGhvZFdyYXBwZXJfVHlwZTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGVzY3JfTmV3TWV0aG9kKFB5VHlwZU9iamVjdCAqLCBQeU1ldGhvZERlZiAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEZXNjcl9OZXdDbGFzc01ldGhvZChQeVR5cGVPYmplY3QgKiwgUHlNZXRob2REZWYgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2RpY3RvYmplY3QuaCBiL0luY2x1ZGUvZGljdG9iamVjdC5oCmluZGV4IGJhOTBhYWYuLmYwNmYyNDAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGljdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGljdG9iamVjdC5oCkBAIC0yMiw4ICsyMiwyMSBAQAogICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAorCisgICAgLyogTnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICovCiAgICAgUHlfc3NpemVfdCBtYV91c2VkOworCisgICAgLyogRGljdGlvbmFyeSB2ZXJzaW9uOiBnbG9iYWxseSB1bmlxdWUsIHZhbHVlIGNoYW5nZSBlYWNoIHRpbWUKKyAgICAgICB0aGUgZGljdGlvbmFyeSBpcyBtb2RpZmllZCAqLworICAgIHVpbnQ2NF90IG1hX3ZlcnNpb25fdGFnOworCiAgICAgUHlEaWN0S2V5c09iamVjdCAqbWFfa2V5czsKKworICAgIC8qIElmIG1hX3ZhbHVlcyBpcyBOVUxMLCB0aGUgdGFibGUgaXMgImNvbWJpbmVkIjoga2V5cyBhbmQgdmFsdWVzCisgICAgICAgYXJlIHN0b3JlZCBpbiBtYV9rZXlzLgorCisgICAgICAgSWYgbWFfdmFsdWVzIGlzIG5vdCBOVUxMLCB0aGUgdGFibGUgaXMgc3BsaXR0ZWQ6CisgICAgICAga2V5cyBhcmUgc3RvcmVkIGluIG1hX2tleXMgYW5kIHZhbHVlcyBhcmUgc3RvcmVkIGluIG1hX3ZhbHVlcyAqLwogICAgIFB5T2JqZWN0ICoqbWFfdmFsdWVzOwogfSBQeURpY3RPYmplY3Q7CiAKQEAgLTYwLDkgKzczLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoKTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvcihQeU9iamVjdCAqZHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X1NldERlZmF1bHQoCiAgICAgUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdG9iaik7CiAjZW5kaWYKQEAgLTExOSw2ICsxMzIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJyaWRlKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogTGlrZSBQeURpY3RfTWVyZ2UsIGJ1dCBvdmVycmlkZSBjYW4gYmUgMCwgMSBvciAyLiAgSWYgb3ZlcnJpZGUgaXMgMCwKKyAgIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGEga2V5IHdpbnMsIGlmIG92ZXJyaWRlIGlzIDEsIHRoZSBsYXN0IG9jY3VycmVuY2UKKyAgIG9mIGEga2V5IHdpbnMsIGlmIG92ZXJyaWRlIGlzIDIsIGEgS2V5RXJyb3Igd2l0aCBjb25mbGljdGluZyBrZXkgYXMKKyAgIGFyZ3VtZW50IGlzIHJhaXNlZC4KKyovCitQeUFQSV9GVU5DKGludCkgX1B5RGljdF9NZXJnZUV4KFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ZlcnJpZGUpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0Vmlld19JbnRlcnNlY3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0ICpvdGhlcik7CiAjZW5kaWYKIApAQCAtMTMyLDkgKzE1MSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlEaWN0X0dldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfU2V0SXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSwgUHlPYmplY3QgKml0ZW0pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfU2V0SXRlbUlkKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXksIFB5T2JqZWN0ICppdGVtKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkMoaW50KSBQeURpY3RfRGVsSXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZW9iamVjdC5oIGIvSW5jbHVkZS9maWxlb2JqZWN0LmgKaW5kZXggMDMxNTVkMy4uMDM5ODRiYSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9maWxlb2JqZWN0LmgKQEAgLTIzLDYgKzIzLDcgQEAKICAgIElmIG5vbi1OVUxMLCB0aGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBkZWZhdWx0IGVuY29kaW5nIGZvciBzdHJpbmdzCiAqLwogUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc7CitQeUFQSV9EQVRBKGNvbnN0IGNoYXIgKikgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnM7CiBQeUFQSV9EQVRBKGludCkgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZzsKIAogLyogSW50ZXJuYWwgQVBJCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGV1dGlscy5oIGIvSW5jbHVkZS9maWxldXRpbHMuaAppbmRleCBiNGE2ODNjLi40MDE2NDMxIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZpbGV1dGlscy5oCisrKyBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKQEAgLTUsOCArNSw2IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9kZXZpY2VfZW5jb2RpbmcoaW50KTsKLQogUHlBUElfRlVOQyh3Y2hhcl90ICopIFB5X0RlY29kZUxvY2FsZSgKICAgICBjb25zdCBjaGFyICphcmcsCiAgICAgc2l6ZV90ICpzaXplKTsKQEAgLTE3LDYgKzE1LDggQEAKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9kZXZpY2VfZW5jb2RpbmcoaW50KTsKKwogI2lmZGVmIE1TX1dJTkRPV1MKIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgewogICAgIHVuc2lnbmVkIGxvbmcgc3RfZGV2OwpAQCAtNDYsMTMgKzQ2LDExIEBACiBQeUFQSV9GVU5DKGludCkgX1B5X2ZzdGF0X25vcmFpc2UoCiAgICAgaW50IGZkLAogICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnN0YXR1cyk7Ci0jZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9GVU5DKGludCkgX1B5X3N0YXQoCiAgICAgUHlPYmplY3QgKnBhdGgsCiAgICAgc3RydWN0IHN0YXQgKnN0YXR1cyk7CiAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlfb3BlbigKICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKICAgICBpbnQgZmxhZ3MpOwpAQCAtNjAsNyArNTgsNiBAQAogUHlBUElfRlVOQyhpbnQpIF9QeV9vcGVuX25vcmFpc2UoCiAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsCiAgICAgaW50IGZsYWdzKTsKLSNlbmRpZgogCiBQeUFQSV9GVU5DKEZJTEUgKikgX1B5X3dmb3BlbigKICAgICBjb25zdCB3Y2hhcl90ICpwYXRoLApAQCAtMTA3LDcgKzEwNCw2IEBACiAgICAgd2NoYXJfdCAqYnVmLAogICAgIHNpemVfdCBzaXplKTsKIAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeV9nZXRfaW5oZXJpdGFibGUoaW50IGZkKTsKIAogUHlBUElfRlVOQyhpbnQpIF9QeV9zZXRfaW5oZXJpdGFibGUoaW50IGZkLCBpbnQgaW5oZXJpdGFibGUsCkBAIC0xMjEsMTggKzExNyw2IEBACiBQeUFQSV9GVU5DKGludCkgX1B5X3NldF9ibG9ja2luZyhpbnQgZmQsIGludCBibG9ja2luZyk7CiAjZW5kaWYgICAvKiAhTVNfV0lORE9XUyAqLwogCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAotLyogQSByb3V0aW5lIHRvIGNoZWNrIGlmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHZhbGlkIG9uIFdpbmRvd3MuICBSZXR1cm5zIDAKLSAqIGFuZCBzZXRzIGVycm5vIHRvIEVCQURGIGlmIGl0IGlzbid0LiAgVGhpcyBpcyB0byBhdm9pZCBBc3NlcnRpb25zCi0gKiBmcm9tIHZhcmlvdXMgZnVuY3Rpb25zIGluIHRoZSBXaW5kb3dzIENSVCBiZWdpbm5pbmcgd2l0aAotICogVmlzdWFsIFN0dWRpbyAyMDA1Ci0gKi8KLWludCBfUHlWZXJpZnlfZmQoaW50IGZkKTsKLQotI2Vsc2UKLSNkZWZpbmUgX1B5VmVyaWZ5X2ZkKEEpICgxKSAvKiBkdW1teSAqLwotI2VuZGlmCi0KICNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCmluZGV4IGUyNDBmZGIuLmYxMDQ0ZDYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaAorKysgYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKQEAgLTc0LDkgKzc0LDkgQEAKICAqIGhhcHBlbnMgaW4gc3VjaCBjYXNlcyBpcyBwYXJ0bHkgYWNjaWRlbnRhbCAoYWxhcykuCiAgKi8KIAotLyogVGhlIHBhY2sgcm91dGluZXMgd3JpdGUgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCisvKiBUaGUgcGFjayByb3V0aW5lcyB3cml0ZSAyLCA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKICAqIGFyZ3VtZW50LCB0cnVlIGlmIHlvdSB3YW50IHRoZSBzdHJpbmcgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50Ci0gKiBsYXN0LCBhdCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgeW91IHdhbnQgYmlnLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50CisgKiBsYXN0LCBhdCBwKzEsIHArMyBvciBwKzcpLCBmYWxzZSBpZiB5b3Ugd2FudCBiaWctZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKICAqIGZpcnN0LCBhdCBwKS4KICAqIFJldHVybiB2YWx1ZTogIDAgaWYgYWxsIGlzIE9LLCAtMSBpZiBlcnJvciAoYW5kIGFuIGV4Y2VwdGlvbiBpcwogICogc2V0LCBtb3N0IGxpa2VseSBPdmVyZmxvd0Vycm9yKS4KQEAgLTg0LDYgKzg0LDcgQEAKICAqIDEpOiAgV2hhdCB0aGlzIGRvZXMgaXMgdW5kZWZpbmVkIGlmIHggaXMgYSBOYU4gb3IgaW5maW5pdHkuCiAgKiAyKTogIC0wLjAgYW5kICswLjAgcHJvZHVjZSB0aGUgc2FtZSBzdHJpbmcuCiAgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9QYWNrMihkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9QYWNrNChkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9QYWNrOChkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIApAQCAtOTYsMTQgKzk3LDE1IEBACiBQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfRGlnaXRzKGNoYXIgKmJ1ZiwgZG91YmxlIHYsIGludCAqc2lnbnVtKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RmxvYXRfRGlnaXRzSW5pdCh2b2lkKTsKIAotLyogVGhlIHVucGFjayByb3V0aW5lcyByZWFkIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAorLyogVGhlIHVucGFjayByb3V0aW5lcyByZWFkIDIsIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAogICogYXJndW1lbnQsIHRydWUgaWYgdGhlIHN0cmluZyBpcyBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKLSAqIGxhc3QsIGF0IHArMyBvciBwKzcpLCBmYWxzZSBpZiBiaWctZW5kaWFuIChleHBvbmVudCBmaXJzdCwgYXQgcCkuCisgKiBsYXN0LCBhdCBwKzEsIHArMyBvciBwKzcpLCBmYWxzZSBpZiBiaWctZW5kaWFuIChleHBvbmVudCBmaXJzdCwgYXQgcCkuCiAgKiBSZXR1cm4gdmFsdWU6ICBUaGUgdW5wYWNrZWQgZG91YmxlLiAgT24gZXJyb3IsIHRoaXMgaXMgLTEuMCBhbmQKICAqIFB5RXJyX09jY3VycmVkKCkgaXMgdHJ1ZSAoYW5kIGFuIGV4Y2VwdGlvbiBpcyBzZXQsIG1vc3QgbGlrZWx5CiAgKiBPdmVyZmxvd0Vycm9yKS4gIE5vdGUgdGhhdCBvbiBhIG5vbi1JRUVFIHBsYXRmb3JtIHRoaXMgd2lsbCByZWZ1c2UKICAqIHRvIHVucGFjayBhIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYSBOYU4gb3IgaW5maW5pdHkuCiAgKi8KK1B5QVBJX0ZVTkMoZG91YmxlKSBfUHlGbG9hdF9VbnBhY2syKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGRvdWJsZSkgX1B5RmxvYXRfVW5wYWNrNChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhkb3VibGUpIF9QeUZsb2F0X1VucGFjazgoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mdW5jb2JqZWN0LmggYi9JbmNsdWRlL2Z1bmNvYmplY3QuaAppbmRleCBjYzE0MjZjLi43N2JiOGMzIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Z1bmNvYmplY3QuaAorKysgYi9JbmNsdWRlL2Z1bmNvYmplY3QuaApAQCAtNTgsNiArNTgsMjAgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9HZXRBbm5vdGF0aW9ucyhQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUZ1bmN0aW9uX1NldEFubm90YXRpb25zKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsRGljdCgKKyAgICBQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKmFyZ3MsCisgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICBQeU9iamVjdCAqa3dhcmdzKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKAorICAgIFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICBQeU9iamVjdCAqa3duYW1lcyk7CisjZW5kaWYKKwogLyogTWFjcm9zIGZvciBkaXJlY3QgYWNjZXNzIHRvIHRoZXNlIHZhbHVlcy4gVHlwZSBjaGVja3MgYXJlICpub3QqCiAgICBkb25lLCBzbyB1c2Ugd2l0aCBjYXJlLiAqLwogI2RlZmluZSBQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpIFwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ2Vub2JqZWN0LmggYi9JbmNsdWRlL2dlbm9iamVjdC5oCmluZGV4IDFmZjMyYTguLjk3M2JkZDUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ2Vub2JqZWN0LmgKKysrIGIvSW5jbHVkZS9nZW5vYmplY3QuaApAQCAtNjEsNiArNjEsMzcgQEAKIFB5T2JqZWN0ICpfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIoUHlPYmplY3QgKm8pOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNvcm9fTmV3KHN0cnVjdCBfZnJhbWUgKiwKICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKKworLyogQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMgKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIF9QeUdlbk9iamVjdF9IRUFEKGFnKQorICAgIFB5T2JqZWN0ICphZ19maW5hbGl6ZXI7CisKKyAgICAvKiBGbGFnIGlzIHNldCB0byAxIHdoZW4gaG9va3Mgc2V0IHVwIGJ5IHN5cy5zZXRfYXN5bmNnZW5faG9va3MKKyAgICAgICB3ZXJlIGNhbGxlZCBvbiB0aGUgZ2VuZXJhdG9yLCB0byBhdm9pZCBjYWxsaW5nIHRoZW0gbW9yZQorICAgICAgIHRoYW4gb25jZS4gKi8KKyAgICBpbnQgYWdfaG9va3NfaW5pdGVkOworCisgICAgLyogRmxhZyBpcyBzZXQgdG8gMSB3aGVuIGFjbG9zZSgpIGlzIGNhbGxlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIG9yCisgICAgICAgd2hlbiBhIFN0b3BBc3luY0l0ZXJhdGlvbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqLworICAgIGludCBhZ19jbG9zZWQ7Cit9IFB5QXN5bmNHZW5PYmplY3Q7CisKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUFzeW5jR2VuX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5QXN5bmNHZW5BU2VuZF9UeXBlOworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5QXN5bmNHZW5BVGhyb3dfVHlwZTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUFzeW5jR2VuX05ldyhzdHJ1Y3QgX2ZyYW1lICosCisgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSk7CisKKyNkZWZpbmUgUHlBc3luY0dlbl9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5QXN5bmNHZW5fVHlwZSkKKworUHlPYmplY3QgKl9QeUFzeW5jR2VuVmFsdWVXcmFwcGVyTmV3KFB5T2JqZWN0ICopOworCitpbnQgUHlBc3luY0dlbl9DbGVhckZyZWVMaXN0cyh2b2lkKTsKKwogI2VuZGlmCiAKICN1bmRlZiBfUHlHZW5PYmplY3RfSEVBRApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ncmFtaW5pdC5oIGIvSW5jbHVkZS9ncmFtaW5pdC5oCmluZGV4IGQwMzBiYzMuLmU5YjRhOTMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbWluaXQuaAorKysgYi9JbmNsdWRlL2dyYW1pbml0LmgKQEAgLTE3LDcxICsxNyw3MiBAQAogI2RlZmluZSBzaW1wbGVfc3RtdCAyNzAKICNkZWZpbmUgc21hbGxfc3RtdCAyNzEKICNkZWZpbmUgZXhwcl9zdG10IDI3MgotI2RlZmluZSB0ZXN0bGlzdF9zdGFyX2V4cHIgMjczCi0jZGVmaW5lIGF1Z2Fzc2lnbiAyNzQKLSNkZWZpbmUgZGVsX3N0bXQgMjc1Ci0jZGVmaW5lIHBhc3Nfc3RtdCAyNzYKLSNkZWZpbmUgZmxvd19zdG10IDI3NwotI2RlZmluZSBicmVha19zdG10IDI3OAotI2RlZmluZSBjb250aW51ZV9zdG10IDI3OQotI2RlZmluZSByZXR1cm5fc3RtdCAyODAKLSNkZWZpbmUgeWllbGRfc3RtdCAyODEKLSNkZWZpbmUgcmFpc2Vfc3RtdCAyODIKLSNkZWZpbmUgaW1wb3J0X3N0bXQgMjgzCi0jZGVmaW5lIGltcG9ydF9uYW1lIDI4NAotI2RlZmluZSBpbXBvcnRfZnJvbSAyODUKLSNkZWZpbmUgaW1wb3J0X2FzX25hbWUgMjg2Ci0jZGVmaW5lIGRvdHRlZF9hc19uYW1lIDI4NwotI2RlZmluZSBpbXBvcnRfYXNfbmFtZXMgMjg4Ci0jZGVmaW5lIGRvdHRlZF9hc19uYW1lcyAyODkKLSNkZWZpbmUgZG90dGVkX25hbWUgMjkwCi0jZGVmaW5lIGdsb2JhbF9zdG10IDI5MQotI2RlZmluZSBub25sb2NhbF9zdG10IDI5MgotI2RlZmluZSBhc3NlcnRfc3RtdCAyOTMKLSNkZWZpbmUgY29tcG91bmRfc3RtdCAyOTQKLSNkZWZpbmUgYXN5bmNfc3RtdCAyOTUKLSNkZWZpbmUgaWZfc3RtdCAyOTYKLSNkZWZpbmUgd2hpbGVfc3RtdCAyOTcKLSNkZWZpbmUgZm9yX3N0bXQgMjk4Ci0jZGVmaW5lIHRyeV9zdG10IDI5OQotI2RlZmluZSB3aXRoX3N0bXQgMzAwCi0jZGVmaW5lIHdpdGhfaXRlbSAzMDEKLSNkZWZpbmUgZXhjZXB0X2NsYXVzZSAzMDIKLSNkZWZpbmUgc3VpdGUgMzAzCi0jZGVmaW5lIHRlc3QgMzA0Ci0jZGVmaW5lIHRlc3Rfbm9jb25kIDMwNQotI2RlZmluZSBsYW1iZGVmIDMwNgotI2RlZmluZSBsYW1iZGVmX25vY29uZCAzMDcKLSNkZWZpbmUgb3JfdGVzdCAzMDgKLSNkZWZpbmUgYW5kX3Rlc3QgMzA5Ci0jZGVmaW5lIG5vdF90ZXN0IDMxMAotI2RlZmluZSBjb21wYXJpc29uIDMxMQotI2RlZmluZSBjb21wX29wIDMxMgotI2RlZmluZSBzdGFyX2V4cHIgMzEzCi0jZGVmaW5lIGV4cHIgMzE0Ci0jZGVmaW5lIHhvcl9leHByIDMxNQotI2RlZmluZSBhbmRfZXhwciAzMTYKLSNkZWZpbmUgc2hpZnRfZXhwciAzMTcKLSNkZWZpbmUgYXJpdGhfZXhwciAzMTgKLSNkZWZpbmUgdGVybSAzMTkKLSNkZWZpbmUgZmFjdG9yIDMyMAotI2RlZmluZSBwb3dlciAzMjEKLSNkZWZpbmUgYXRvbV9leHByIDMyMgotI2RlZmluZSBhdG9tIDMyMwotI2RlZmluZSB0ZXN0bGlzdF9jb21wIDMyNAotI2RlZmluZSB0cmFpbGVyIDMyNQotI2RlZmluZSBzdWJzY3JpcHRsaXN0IDMyNgotI2RlZmluZSBzdWJzY3JpcHQgMzI3Ci0jZGVmaW5lIHNsaWNlb3AgMzI4Ci0jZGVmaW5lIGV4cHJsaXN0IDMyOQotI2RlZmluZSB0ZXN0bGlzdCAzMzAKLSNkZWZpbmUgZGljdG9yc2V0bWFrZXIgMzMxCi0jZGVmaW5lIGNsYXNzZGVmIDMzMgotI2RlZmluZSBhcmdsaXN0IDMzMwotI2RlZmluZSBhcmd1bWVudCAzMzQKLSNkZWZpbmUgY29tcF9pdGVyIDMzNQotI2RlZmluZSBjb21wX2ZvciAzMzYKLSNkZWZpbmUgY29tcF9pZiAzMzcKLSNkZWZpbmUgZW5jb2RpbmdfZGVjbCAzMzgKLSNkZWZpbmUgeWllbGRfZXhwciAzMzkKLSNkZWZpbmUgeWllbGRfYXJnIDM0MAorI2RlZmluZSBhbm5hc3NpZ24gMjczCisjZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzQKKyNkZWZpbmUgYXVnYXNzaWduIDI3NQorI2RlZmluZSBkZWxfc3RtdCAyNzYKKyNkZWZpbmUgcGFzc19zdG10IDI3NworI2RlZmluZSBmbG93X3N0bXQgMjc4CisjZGVmaW5lIGJyZWFrX3N0bXQgMjc5CisjZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjgwCisjZGVmaW5lIHJldHVybl9zdG10IDI4MQorI2RlZmluZSB5aWVsZF9zdG10IDI4MgorI2RlZmluZSByYWlzZV9zdG10IDI4MworI2RlZmluZSBpbXBvcnRfc3RtdCAyODQKKyNkZWZpbmUgaW1wb3J0X25hbWUgMjg1CisjZGVmaW5lIGltcG9ydF9mcm9tIDI4NgorI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODcKKyNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg4CisjZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODkKKyNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI5MAorI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTEKKyNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkyCisjZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkzCisjZGVmaW5lIGFzc2VydF9zdG10IDI5NAorI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NQorI2RlZmluZSBhc3luY19zdG10IDI5NgorI2RlZmluZSBpZl9zdG10IDI5NworI2RlZmluZSB3aGlsZV9zdG10IDI5OAorI2RlZmluZSBmb3Jfc3RtdCAyOTkKKyNkZWZpbmUgdHJ5X3N0bXQgMzAwCisjZGVmaW5lIHdpdGhfc3RtdCAzMDEKKyNkZWZpbmUgd2l0aF9pdGVtIDMwMgorI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMworI2RlZmluZSBzdWl0ZSAzMDQKKyNkZWZpbmUgdGVzdCAzMDUKKyNkZWZpbmUgdGVzdF9ub2NvbmQgMzA2CisjZGVmaW5lIGxhbWJkZWYgMzA3CisjZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwOAorI2RlZmluZSBvcl90ZXN0IDMwOQorI2RlZmluZSBhbmRfdGVzdCAzMTAKKyNkZWZpbmUgbm90X3Rlc3QgMzExCisjZGVmaW5lIGNvbXBhcmlzb24gMzEyCisjZGVmaW5lIGNvbXBfb3AgMzEzCisjZGVmaW5lIHN0YXJfZXhwciAzMTQKKyNkZWZpbmUgZXhwciAzMTUKKyNkZWZpbmUgeG9yX2V4cHIgMzE2CisjZGVmaW5lIGFuZF9leHByIDMxNworI2RlZmluZSBzaGlmdF9leHByIDMxOAorI2RlZmluZSBhcml0aF9leHByIDMxOQorI2RlZmluZSB0ZXJtIDMyMAorI2RlZmluZSBmYWN0b3IgMzIxCisjZGVmaW5lIHBvd2VyIDMyMgorI2RlZmluZSBhdG9tX2V4cHIgMzIzCisjZGVmaW5lIGF0b20gMzI0CisjZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI1CisjZGVmaW5lIHRyYWlsZXIgMzI2CisjZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI3CisjZGVmaW5lIHN1YnNjcmlwdCAzMjgKKyNkZWZpbmUgc2xpY2VvcCAzMjkKKyNkZWZpbmUgZXhwcmxpc3QgMzMwCisjZGVmaW5lIHRlc3RsaXN0IDMzMQorI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzIKKyNkZWZpbmUgY2xhc3NkZWYgMzMzCisjZGVmaW5lIGFyZ2xpc3QgMzM0CisjZGVmaW5lIGFyZ3VtZW50IDMzNQorI2RlZmluZSBjb21wX2l0ZXIgMzM2CisjZGVmaW5lIGNvbXBfZm9yIDMzNworI2RlZmluZSBjb21wX2lmIDMzOAorI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOQorI2RlZmluZSB5aWVsZF9leHByIDM0MAorI2RlZmluZSB5aWVsZF9hcmcgMzQxCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1tYXIuaCBiL0luY2x1ZGUvZ3JhbW1hci5oCmluZGV4IDg1MTIwYjkuLmY3NzVmOTYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbW1hci5oCisrKyBiL0luY2x1ZGUvZ3JhbW1hci5oCkBAIC02OSw2ICs2OSw3IEBACiAvKiBGVU5DVElPTlMgKi8KIAogZ3JhbW1hciAqbmV3Z3JhbW1hcihpbnQgc3RhcnQpOwordm9pZCBmcmVlZ3JhbW1hcihncmFtbWFyICpnKTsKIGRmYSAqYWRkZGZhKGdyYW1tYXIgKmcsIGludCB0eXBlLCBjb25zdCBjaGFyICpuYW1lKTsKIGludCBhZGRzdGF0ZShkZmEgKmQpOwogdm9pZCBhZGRhcmMoZGZhICpkLCBpbnQgZnJvbSwgaW50IHRvLCBpbnQgbGJsKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW1wb3J0LmggYi9JbmNsdWRlL2ltcG9ydC5oCmluZGV4IGFmZGZhYzIuLjQ2YzBkOGUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW1wb3J0LmgKKysrIGIvSW5jbHVkZS9pbXBvcnQuaApAQCAtNyw3ICs3LDkgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0WmlwX0luaXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIFB5TU9ESU5JVF9GVU5DIFB5SW5pdF9pbXAodm9pZCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKHZvaWQpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbnRyY2hlY2suaCBiL0luY2x1ZGUvaW50cmNoZWNrLmgKaW5kZXggZjUzZmVlMS4uOGZiOTZjZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbnRyY2hlY2suaAorKysgYi9JbmNsdWRlL2ludHJjaGVjay5oCkBAIC04LDEyICs4LDE1IEBACiBQeUFQSV9GVU5DKGludCkgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19BZnRlckZvcmsodm9pZCk7CisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlPU19Jc01haW5UaHJlYWQodm9pZCk7CiAKICNpZmRlZiBNU19XSU5ET1dTCiAvKiB3aW5kb3dzLmggaXMgbm90IGluY2x1ZGVkIGJ5IFB5dGhvbi5oIHNvIHVzZSB2b2lkKiBpbnN0ZWFkIG9mIEhBTkRMRSAqLwogUHlBUElfRlVOQyh2b2lkKikgX1B5T1NfU2lnaW50RXZlbnQodm9pZCk7CiAjZW5kaWYKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdpbnRyZXByLmggYi9JbmNsdWRlL2xvbmdpbnRyZXByLmgKaW5kZXggYmJiYTRkOC4uYTNiNzRiNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25naW50cmVwci5oCisrKyBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaApAQCAtNDIsMTQgKzQyLDEwIEBACiAqLwogCiAjaWYgUFlMT05HX0JJVFNfSU5fRElHSVQgPT0gMzAKLSNpZiAhKGRlZmluZWQgSEFWRV9VSU5UNjRfVCAmJiBkZWZpbmVkIEhBVkVfVUlOVDMyX1QgJiYgICAgICAgICAgXAotICAgICAgZGVmaW5lZCBIQVZFX0lOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX0lOVDMyX1QpCi0jZXJyb3IgIjMwLWJpdCBsb25nIGRpZ2l0cyByZXF1ZXN0ZWQsIGJ1dCB0aGUgbmVjZXNzYXJ5IHR5cGVzIGFyZSBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iCi0jZW5kaWYKLXR5cGVkZWYgUFlfVUlOVDMyX1QgZGlnaXQ7Ci10eXBlZGVmIFBZX0lOVDMyX1Qgc2RpZ2l0OyAvKiBzaWduZWQgdmFyaWFudCBvZiBkaWdpdCAqLwotdHlwZWRlZiBQWV9VSU5UNjRfVCB0d29kaWdpdHM7Ci10eXBlZGVmIFBZX0lOVDY0X1Qgc3R3b2RpZ2l0czsgLyogc2lnbmVkIHZhcmlhbnQgb2YgdHdvZGlnaXRzICovCit0eXBlZGVmIHVpbnQzMl90IGRpZ2l0OwordHlwZWRlZiBpbnQzMl90IHNkaWdpdDsgLyogc2lnbmVkIHZhcmlhbnQgb2YgZGlnaXQgKi8KK3R5cGVkZWYgdWludDY0X3QgdHdvZGlnaXRzOwordHlwZWRlZiBpbnQ2NF90IHN0d29kaWdpdHM7IC8qIHNpZ25lZCB2YXJpYW50IG9mIHR3b2RpZ2l0cyAqLwogI2RlZmluZSBQeUxvbmdfU0hJRlQJMzAKICNkZWZpbmUgX1B5TG9uZ19ERUNJTUFMX1NISUZUCTkgLyogbWF4KGUgc3VjaCB0aGF0IDEwKiplIGZpdHMgaW4gYSBkaWdpdCkgKi8KICNkZWZpbmUgX1B5TG9uZ19ERUNJTUFMX0JBU0UJKChkaWdpdCkxMDAwMDAwMDAwKSAvKiAxMCAqKiBERUNJTUFMX1NISUZUICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2xvbmdvYmplY3QuaCBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCmluZGV4IDJhMmVlY2YuLmVmZDQwOWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbG9uZ29iamVjdC5oCisrKyBiL0luY2x1ZGUvbG9uZ29iamVjdC5oCkBAIC02NSw3ICs2NSw4IEBACiAjICBlcnJvciAidm9pZCogZGlmZmVyZW50IGluIHNpemUgZnJvbSBpbnQsIGxvbmcgYW5kIGxvbmcgbG9uZyIKICNlbmRpZiAvKiBTSVpFT0ZfVk9JRF9QICovCiAKLS8qIFVzZWQgYnkgUHl0aG9uL215c3RydG91bC5jLiAqLworLyogVXNlZCBieSBQeXRob24vbXlzdHJ0b3VsLmMsIF9QeUJ5dGVzX0Zyb21IZXgoKSwKKyAgIF9QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZSgpLCBldGMuICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKHVuc2lnbmVkIGNoYXIpIF9QeUxvbmdfRGlnaXRWYWx1ZVsyNTZdOwogI2VuZGlmCkBAIC04NCwxNCArODUsMTIgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKik7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlMb25nX0FzVm9pZFB0cihQeU9iamVjdCAqKTsKIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7Ci1QeUFQSV9GVU5DKFBZX0xPTkdfTE9ORykgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKik7Ci1QeUFQSV9GVU5DKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModW5zaWduZWQgUFlfTE9OR19MT05HKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUFlfTE9OR19MT05HKSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICosIGludCAqKTsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBsb25nIGxvbmcpOworUHlBUElfRlVOQyhsb25nIGxvbmcpIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nIGxvbmcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcgbG9uZykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGxvbmcgbG9uZykgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqLCBpbnQgKik7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtMTgyLDYgKzE4MSwxMyBAQAogICAgIGludCBiYXNlLAogICAgIGludCBhbHRlcm5hdGUpOwogCitQeUFQSV9GVU5DKGNoYXIqKSBfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKAorICAgIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgY2hhciAqc3RyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgaW50IGJhc2UsCisgICAgaW50IGFsdGVybmF0ZSk7CisKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKApAQCAtMTk4LDggKzIwNCwxMCBAQAogUHlBUElfRlVOQyh1bnNpZ25lZCBsb25nKSBQeU9TX3N0cnRvdWwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwogUHlBUElfRlVOQyhsb25nKSBQeU9TX3N0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEZvciB1c2UgYnkgdGhlIGdjZCBmdW5jdGlvbiBpbiBtYXRobW9kdWxlLmMgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19HQ0QoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKaW5kZXggZTJhZDgwNC4uNzlmYWQ4MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9tZXRob2RvYmplY3QuaAorKysgYi9JbmNsdWRlL21ldGhvZG9iamVjdC5oCkBAIC0xNiw2ICsxNiw4IEBACiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5Q0Z1bmN0aW9uX1R5cGUpCiAKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb24pKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwordHlwZWRlZiBQeU9iamVjdCAqKCpfUHlDRnVuY3Rpb25GYXN0KSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKIHR5cGVkZWYgUHlPYmplY3QgKigqUHlOb0FyZ3NGdW5jdGlvbikoUHlPYmplY3QgKik7CkBAIC0zNyw2ICszOSwxOCBAQAogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX0NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKmFyZ3MsCisgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICBQeU9iamVjdCAqa3dhcmdzKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3bmFtZXMpOworI2VuZGlmCisKIHN0cnVjdCBQeU1ldGhvZERlZiB7CiAgICAgY29uc3QgY2hhciAgKm1sX25hbWU7ICAgLyogVGhlIG5hbWUgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uL21ldGhvZCAqLwogICAgIFB5Q0Z1bmN0aW9uIG1sX21ldGg7ICAgIC8qIFRoZSBDIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBpdCAqLwpAQCAtNzIsNiArODYsOCBAQAogI2RlZmluZSBNRVRIX0NPRVhJU1QgICAweDAwNDAKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2RlZmluZSBNRVRIX0ZBU1RDQUxMICAweDAwODAKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU1ldGhvZERlZiAqbV9tbDsgLyogRGVzY3JpcHRpb24gb2YgdGhlIEMgZnVuY3Rpb24gdG8gY2FsbCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9tb2RzdXBwb3J0LmggYi9JbmNsdWRlL21vZHN1cHBvcnQuaAppbmRleCA4MjlhYWY4Li44MzNlMzNkIDEwMDY0NAotLS0gYS9JbmNsdWRlL21vZHN1cHBvcnQuaAorKysgYi9JbmNsdWRlL21vZHN1cHBvcnQuaApAQCAtMTUsMTIgKzE1LDE2IEBACiAjZGVmaW5lIFB5QXJnX1BhcnNlICAgICAgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlX1NpemVUCiAjZGVmaW5lIFB5QXJnX1BhcnNlVHVwbGUgICAgICAgICAgICAgICAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKICNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzICAgICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIFB5QXJnX1ZhUGFyc2UgICAgICAgICAgICAgICAgICAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKICNkZWZpbmUgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMgICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNkZWZpbmUgUHlfQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgICBfUHlfQnVpbGRWYWx1ZV9TaXplVAogI2RlZmluZSBQeV9WYUJ1aWxkVmFsdWUgICAgICAgICAgICAgICAgIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKICNlbHNlCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBEdWUgdG8gYSBnbGl0Y2ggaW4gMy4yLCB0aGUgX1NpemVUIHZlcnNpb25zIHdlcmVuJ3QgZXhwb3J0ZWQgZnJvbSB0aGUgRExMLiAqLwpAQCAtNDQsNiArNDgsMzIgQEAKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeV9WYUJ1aWxkVmFsdWUoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQordHlwZWRlZiBzdHJ1Y3QgX1B5QXJnX1BhcnNlciB7CisgICAgY29uc3QgY2hhciAqZm9ybWF0OworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqa2V5d29yZHM7CisgICAgY29uc3QgY2hhciAqZm5hbWU7CisgICAgY29uc3QgY2hhciAqY3VzdG9tX21zZzsKKyAgICBpbnQgcG9zOyAgICAgICAgICAgIC8qIG51bWJlciBvZiBwb3NpdGlvbmFsLW9ubHkgYXJndW1lbnRzICovCisgICAgaW50IG1pbjsgICAgICAgICAgICAvKiBtaW5pbWFsIG51bWJlciBvZiBhcmd1bWVudHMgKi8KKyAgICBpbnQgbWF4OyAgICAgICAgICAgIC8qIG1heGltYWwgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICovCisgICAgUHlPYmplY3QgKmt3dHVwbGU7ICAvKiB0dXBsZSBvZiBrZXl3b3JkIHBhcmFtZXRlciBuYW1lcyAqLworICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpuZXh0OworfSBfUHlBcmdfUGFyc2VyOworI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KKyNkZWZpbmUgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUCisjZGVmaW5lIF9QeUFyZ19QYXJzZVN0YWNrICBfUHlBcmdfUGFyc2VTdGFja19TaXplVAorI2RlZmluZSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0ICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUCisjZW5kaWYKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlU3RhY2soUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QpOwordm9pZCBfUHlBcmdfRmluaSh2b2lkKTsKKyNlbmRpZgorCiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkT2JqZWN0KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBsb25nKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oIGIvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaAppbmRleCBhNDEyZjA1Li4wYzhkOTVjIDEwMDY0NAotLS0gYS9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKQEAgLTcsOSArNywxMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5hbWVzcGFjZV9UeXBlOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU5hbWVzcGFjZV9OZXcoUHlPYmplY3QgKmt3ZHMpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqZWN0LmggYi9JbmNsdWRlL29iamVjdC5oCmluZGV4IDUwZDk3NDcuLjMzOGVjMWIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9vYmplY3QuaApAQCAtMTE4LDYgKzExOCw3IEBACiAjZGVmaW5lIFB5X1RZUEUob2IpICAgICAgICAgICAgICgoKFB5T2JqZWN0Kikob2IpKS0+b2JfdHlwZSkKICNkZWZpbmUgUHlfU0laRShvYikgICAgICAgICAgICAgKCgoUHlWYXJPYmplY3QqKShvYikpLT5vYl9zaXplKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKioqKioqKioqKioqKioqKioqKioqIFN0cmluZyBMaXRlcmFscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogVGhpcyBzdHJ1Y3R1cmUgaGVscHMgbWFuYWdpbmcgc3RhdGljIHN0cmluZ3MuIFRoZSBiYXNpYyB1c2FnZSBnb2VzIGxpa2UgdGhpczoKICAgIEluc3RlYWQgb2YgZG9pbmcKQEAgLTE0NCwxMCArMTQ1LDEyIEBACiAgICAgUHlPYmplY3QgKm9iamVjdDsKIH0gX1B5X0lkZW50aWZpZXI7CiAKLSNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmdfaW5pdCh2YWx1ZSkgeyAwLCB2YWx1ZSwgMCB9CisjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpIHsgLm5leHQgPSBOVUxMLCAuc3RyaW5nID0gdmFsdWUsIC5vYmplY3QgPSBOVUxMIH0KICNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmcodmFybmFtZSwgdmFsdWUpICBzdGF0aWMgX1B5X0lkZW50aWZpZXIgdmFybmFtZSA9IF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpCiAjZGVmaW5lIF9QeV9JREVOVElGSUVSKHZhcm5hbWUpIF9QeV9zdGF0aWNfc3RyaW5nKFB5SWRfIyN2YXJuYW1lLCAjdmFybmFtZSkKIAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAvKgogVHlwZSBvYmplY3RzIGNvbnRhaW4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBuYW1lICh0byBoZWxwIHNvbWV3aGF0CiBpbiBkZWJ1Z2dpbmcpLCB0aGUgYWxsb2NhdGlvbiBwYXJhbWV0ZXJzIChzZWUgUHlPYmplY3RfTmV3KCkgYW5kCkBAIC01MTIsOCArNTE1LDggQEAKICNlbmRpZgogCiAvKiBHZW5lcmljIG9wZXJhdGlvbnMgb24gb2JqZWN0cyAqLwotc3RydWN0IF9QeV9JZGVudGlmaWVyOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorc3RydWN0IF9QeV9JZGVudGlmaWVyOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICosIEZJTEUgKiwgaW50KTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0JyZWFrUG9pbnQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EdW1wKFB5T2JqZWN0ICopOwpAQCAtNTMwLDExICs1MzMsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9TZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0hhc0F0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9TZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9IYXNBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5T2JqZWN0X0dldERpY3RQdHIoUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfU2VsZkl0ZXIoUHlPYmplY3QgKik7CkBAIC01NTcsNiArNTYwLDcgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoUHlPYmplY3QgKik7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2FtZSBhcyBQeU9iamVjdF9HZW5lcmlje0dldCxTZXR9QXR0ciwgYnV0IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZXMKICAgIGRpY3QgYXMgdGhlIGxhc3QgcGFyYW1ldGVyLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKQpAQCAtNTY0LDYgKzU2OCw3IEBACiBQeUFQSV9GVU5DKGludCkKIF9QeU9iamVjdF9HZW5lcmljU2V0QXR0cldpdGhEaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogSGVscGVyIHRvIGxvb2sgdXAgYSBidWlsdGluIG9iamVjdCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtNzA4LDcgKzcxMyw2IEBACiBQeUFQSV9EQVRBKFB5X3NzaXplX3QpIF9QeV9SZWZUb3RhbDsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X05lZ2F0aXZlUmVmY291bnQoY29uc3QgY2hhciAqZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIFB5T2JqZWN0ICpvcCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfRHVtbXkodm9pZCk7CiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9HZXRSZWZUb3RhbCh2b2lkKTsKICNkZWZpbmUgX1B5X0lOQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsKysKICNkZWZpbmUgX1B5X0RFQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsLS0KQEAgLTc4NSw3ICs3ODksNyBAQAogICAgICAgICAtLShfcHlfZGVjcmVmX3RtcCktPm9iX3JlZmNudCAhPSAwKSAgICAgICAgICAgICBcCiAgICAgICAgICAgICBfUHlfQ0hFQ0tfUkVGQ05UKF9weV9kZWNyZWZfdG1wKSAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCiAvKiBTYWZlbHkgZGVjcmVmIGBvcGAgYW5kIHNldCBgb3BgIHRvIE5VTEwsIGVzcGVjaWFsbHkgdXNlZnVsIGluIHRwX2NsZWFyCkBAIC04ODksOCArODkzLDEwIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luY1JlZihQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfRGVjUmVmKFB5T2JqZWN0ICopOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5Tm9uZV9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5vdEltcGxlbWVudGVkX1R5cGU7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qCiBfUHlfTm9uZVN0cnVjdCBpcyBhbiBvYmplY3Qgb2YgdW5kZWZpbmVkIHR5cGUgd2hpY2ggY2FuIGJlIHVzZWQgaW4gY29udGV4dHMKQEAgLTkyMywxMCArOTI5LDEyIEBACiAjZGVmaW5lIFB5X0dUIDQKICNkZWZpbmUgUHlfR0UgNQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBNYXBzIFB5X0xUIHRvIFB5X0dULCAuLi4sIFB5X0dFIHRvIFB5X0xFLgogICogRGVmaW5lZCBpbiBvYmplY3QuYy4KICAqLwogUHlBUElfREFUQShpbnQpIF9QeV9Td2FwcGVkT3BbXTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogCiAvKgpAQCAtMTAyMywxMiArMTAzMSwxNCBAQAogd2l0aCB0aGUgY2FsbCBzdGFjayBuZXZlciBleGNlZWRpbmcgYSBkZXB0aCBvZiBQeVRyYXNoX1VOV0lORF9MRVZFTC4KICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoaXMgaXMgdGhlIG9sZCBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlZm9yZSAzLjIuNC4KICAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMgdXNpbmcgdGhlIHN0YWJsZSBBQkkuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CiBQeUFQSV9EQVRBKGludCkgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcjsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogVGhlIG5ldyB0aHJlYWQtc2FmZSBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlbG93LiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3QoUHlPYmplY3QqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqaW1wbC5oIGIvSW5jbHVkZS9vYmppbXBsLmgKaW5kZXggNjViNmQ5MS4uYzBlZDliNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmppbXBsLmgKKysrIGIvSW5jbHVkZS9vYmppbXBsLmgKQEAgLTk5LDggKzk5LDEwIEBACiBQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0ZyZWUodm9pZCAqcHRyKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIG1lbW9yeSBibG9ja3MsIHJlZ2FyZGxlc3Mgb2Ygc2l6ZSAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfR2V0QWxsb2NhdGVkQmxvY2tzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBNYWNyb3MgKi8KICNpZmRlZiBXSVRIX1BZTUFMTE9DCkBAIC0yMjQsMTEgKzIyNiwxMiBAQAogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqLwogCi0vKiBDIGVxdWl2YWxlbnQgb2YgZ2MuY29sbGVjdCgpLiAqLworLyogQyBlcXVpdmFsZW50IG9mIGdjLmNvbGxlY3QoKSB3aGljaCBpZ25vcmVzIHRoZSBzdGF0ZSBvZiBnYy5lbmFibGVkLiAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeUdDX0NvbGxlY3Qodm9pZCk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCh2b2lkKTsKICNlbmRpZgogCiAvKiBUZXN0IGlmIGEgdHlwZSBoYXMgYSBHQyBoZWFkICovCkBAIC0zMjIsOCArMzI1LDEwIEBACiAgICAgICAgICghUHlUdXBsZV9DaGVja0V4YWN0KG9iaikgfHwgX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob2JqKSkpCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCBzaXplKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXcoUHlUeXBlT2JqZWN0ICopOwogUHlBUElfRlVOQyhQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3VmFyKFB5VHlwZU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfR0NfVHJhY2sodm9pZCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Bjb2RlLmggYi9JbmNsdWRlL29wY29kZS5oCmluZGV4IDNmOTE3ZmIuLmJlMzYwZTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3Bjb2RlLmgKKysrIGIvSW5jbHVkZS9vcGNvZGUuaApAQCAtNjAsNiArNjAsNyBAQAogI2RlZmluZSBXSVRIX0NMRUFOVVBfRklOSVNIICAgICAgODIKICNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDgzCiAjZGVmaW5lIElNUE9SVF9TVEFSICAgICAgICAgICAgICA4NAorI2RlZmluZSBTRVRVUF9BTk5PVEFUSU9OUyAgICAgICAgODUKICNkZWZpbmUgWUlFTERfVkFMVUUgICAgICAgICAgICAgIDg2CiAjZGVmaW5lIFBPUF9CTE9DSyAgICAgICAgICAgICAgICA4NwogI2RlZmluZSBFTkRfRklOQUxMWSAgICAgICAgICAgICAgODgKQEAgLTk4LDE4ICs5OSwxNyBAQAogI2RlZmluZSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAxMjQKICNkZWZpbmUgU1RPUkVfRkFTVCAgICAgICAgICAgICAgMTI1CiAjZGVmaW5lIERFTEVURV9GQVNUICAgICAgICAgICAgIDEyNgorI2RlZmluZSBTVE9SRV9BTk5PVEFUSU9OICAgICAgICAxMjcKICNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgMTMwCiAjZGVmaW5lIENBTExfRlVOQ1RJT04gICAgICAgICAgIDEzMQogI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAxMzIKICNkZWZpbmUgQlVJTERfU0xJQ0UgICAgICAgICAgICAgMTMzCi0jZGVmaW5lIE1BS0VfQ0xPU1VSRSAgICAgICAgICAgIDEzNAogI2RlZmluZSBMT0FEX0NMT1NVUkUgICAgICAgICAgICAxMzUKICNkZWZpbmUgTE9BRF9ERVJFRiAgICAgICAgICAgICAgMTM2CiAjZGVmaW5lIFNUT1JFX0RFUkVGICAgICAgICAgICAgIDEzNwogI2RlZmluZSBERUxFVEVfREVSRUYgICAgICAgICAgICAxMzgKLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgMTQwCiAjZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgIDE0MQotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAxNDIKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9FWCAgICAgICAgMTQyCiAjZGVmaW5lIFNFVFVQX1dJVEggICAgICAgICAgICAgIDE0MwogI2RlZmluZSBFWFRFTkRFRF9BUkcgICAgICAgICAgICAxNDQKICNkZWZpbmUgTElTVF9BUFBFTkQgICAgICAgICAgICAgMTQ1CkBAIC0xMjIsNiArMTIyLDEwIEBACiAjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDSyAgICAgIDE1MgogI2RlZmluZSBCVUlMRF9TRVRfVU5QQUNLICAgICAgICAxNTMKICNkZWZpbmUgU0VUVVBfQVNZTkNfV0lUSCAgICAgICAgMTU0CisjZGVmaW5lIEZPUk1BVF9WQUxVRSAgICAgICAgICAgIDE1NQorI2RlZmluZSBCVUlMRF9DT05TVF9LRVlfTUFQICAgICAxNTYKKyNkZWZpbmUgQlVJTERfU1RSSU5HICAgICAgICAgICAgMTU3CisjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwgMTU4CiAKIC8qIEVYQ0VQVF9IQU5ETEVSIGlzIGEgc3BlY2lhbCwgaW1wbGljaXQgYmxvY2sgdHlwZSB3aGljaCBpcyBjcmVhdGVkIHdoZW4KICAgIGVudGVyaW5nIGFuIGV4Y2VwdCBoYW5kbGVyLiBJdCBpcyBub3QgYW4gb3Bjb2RlIGJ1dCB3ZSBkZWZpbmUgaXQgaGVyZQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vc21vZHVsZS5oIGIvSW5jbHVkZS9vc21vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNDY3NTcKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL29zbW9kdWxlLmgKQEAgLTAsMCArMSwxNSBAQAorCisvKiBvcyBtb2R1bGUgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgUHlfT1NNT0RVTEVfSAorI2RlZmluZSBQeV9PU01PRFVMRV9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPU19GU1BhdGgoUHlPYmplY3QgKnBhdGgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9PU01PRFVMRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCmluZGV4IDQ1ZTU3MzYuLjI5ZGE0ODkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCisrKyBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCkBAIC0xNywxMyArMTcsMTMgQEAKIC8qIFZlcnNpb24gcGFyc2VkIG91dCBpbnRvIG51bWVyaWMgdmFsdWVzICovCiAvKi0tc3RhcnQgY29uc3RhbnRzLS0qLwogI2RlZmluZSBQWV9NQUpPUl9WRVJTSU9OCTMKLSNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk1Ci0jZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMgotI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfRklOQUwKLSNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMAorI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTYKKyNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkwCisjZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9CRVRBCisjZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTIKIAogLyogVmVyc2lvbiBhcyBhIHN0cmluZyAqLwotI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjUuMisiCisjZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNi4wYjIrIgogLyotLWVuZCBjb25zdGFudHMtLSovCiAKIC8qIFZlcnNpb24gYXMgYSBzaW5nbGUgNC1ieXRlIGhleCBudW1iZXIsIGUuZy4gMHgwMTA1MDJCMiA9PSAxLjUuMmIyLgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIGIvSW5jbHVkZS9wZ2VuaGVhZGVycy5oCmluZGV4IDIwNDlhZTMuLjQ4NDNkZTYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGdlbmhlYWRlcnMuaAorKysgYi9JbmNsdWRlL3BnZW5oZWFkZXJzLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgZGVsYml0c2V0IF9QeV9kZWxiaXRzZXQKICNkZWZpbmUgZHVtcHRyZWUgX1B5X2R1bXB0cmVlCiAjZGVmaW5lIGZpbmRsYWJlbCBfUHlfZmluZGxhYmVsCisjZGVmaW5lIGZyZWVncmFtbWFyIF9QeV9mcmVlZ3JhbW1hcgogI2RlZmluZSBtZXJnZWJpdHNldCBfUHlfbWVyZ2ViaXRzZXQKICNkZWZpbmUgbWV0YV9ncmFtbWFyIF9QeV9tZXRhX2dyYW1tYXIKICNkZWZpbmUgbmV3Yml0c2V0IF9QeV9uZXdiaXRzZXQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlfY3Vyc2VzLmggYi9JbmNsdWRlL3B5X2N1cnNlcy5oCmluZGV4IGYyYzA4ZjYuLjNjMjE2OTcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlfY3Vyc2VzLmgKKysrIGIvSW5jbHVkZS9weV9jdXJzZXMuaApAQCAtMTAzLDggKzEwMyw4IEBACiAjZW5kaWYKIAogLyogZ2VuZXJhbCBlcnJvciBtZXNzYWdlcyAqLwotc3RhdGljIGNoYXIgKmNhdGNoYWxsX0VSUiAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7Ci1zdGF0aWMgY2hhciAqY2F0Y2hhbGxfTlVMTCA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9FUlJbXSAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9OVUxMW10gPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwiOwogCiAvKiBGdW5jdGlvbiBQcm90b3R5cGUgTWFjcm9zIC0gVGhleSBhcmUgdWdseSBidXQgdmVyeSwgdmVyeSB1c2VmdWwuIDstKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5YXRvbWljLmggYi9JbmNsdWRlL3B5YXRvbWljLmgKaW5kZXggODkwMjhlZi4uODkzZDMwZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWF0b21pYy5oCisrKyBiL0luY2x1ZGUvcHlhdG9taWMuaApAQCAtNjEsNyArNjEsNyBAQAogfSBfUHlfbWVtb3J5X29yZGVyOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2FkZHJlc3MgewotICAgIFB5X3VpbnRwdHJfdCBfdmFsdWU7CisgICAgdWludHB0cl90IF92YWx1ZTsKIH0gX1B5X2F0b21pY19hZGRyZXNzOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2ludCB7CkBAIC05OCw3ICs5OCw3IEBACiB9IF9QeV9tZW1vcnlfb3JkZXI7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7Ci0gICAgUHlfdWludHB0cl90IF92YWx1ZTsKKyAgICB1aW50cHRyX3QgX3ZhbHVlOwogfSBfUHlfYXRvbWljX2FkZHJlc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggMTliZWMyYi4uNmUyM2E4OSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTI0LDYgKzI0LDEwIEBACiBQeUFQSV9EQVRBKGludCkgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0lzb2xhdGVkRmxhZzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKK1B5QVBJX0RBVEEoaW50KSBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnOworI2VuZGlmCisKIC8qIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBnZXRlbnYoKSB0aGF0IHBheXMgYXR0ZW50aW9uIHRvCiAgICBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcuICBJdCBzaG91bGQgYmUgdXNlZCBmb3IgZ2V0dGluZyB2YXJpYWJsZXMgbGlrZQogICAgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5kIGIvSW5jbHVkZS9weWR0cmFjZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MzYwNTUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmQKQEAgLTAsMCArMSwxOSBAQAorLyogUHl0aG9uIERUcmFjZSBwcm92aWRlciAqLworCitwcm92aWRlciBweXRob24geworICAgIHByb2JlIGZ1bmN0aW9uX19lbnRyeShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBmdW5jdGlvbl9fcmV0dXJuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGluc3RhbmNlX19uZXdfX3N0YXJ0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fbmV3X19kb25lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fZGVsZXRlX19zdGFydChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgaW5zdGFuY2VfX2RlbGV0ZV9fZG9uZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgbGluZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBnY19fc3RhcnQoaW50KTsKKyAgICBwcm9iZSBnY19fZG9uZShsb25nKTsKK307CisKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gcHJvdmlkZXIKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gbW9kdWxlCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIGZ1bmN0aW9uCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIG5hbWUKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gYXJncwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5oIGIvSW5jbHVkZS9weWR0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2EyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmgKQEAgLTAsMCArMSw1MyBAQAorLyogU3RhdGljIERUcmFjZSBwcm9iZXMgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgUHlfRFRSQUNFX0gKKyNkZWZpbmUgUHlfRFRSQUNFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmZGVmIFdJVEhfRFRSQUNFCisKKyNpbmNsdWRlICJweWR0cmFjZV9wcm9iZXMuaCIKKworLyogcHlkdHJhY2VfcHJvYmVzLmgsIG9uIHN5c3RlbXMgd2l0aCBEVHJhY2UsIGlzIGF1dG8tZ2VuZXJhdGVkIHRvIGluY2x1ZGUKKyAgIGBQeURUcmFjZV97UFJPQkV9YCBhbmQgYFB5RFRyYWNlX3tQUk9CRX1fRU5BQkxFRCgpYCBtYWNyb3MgZm9yIGV2ZXJ5IHByb2JlCisgICBkZWZpbmVkIGluIHB5ZHRyYWNlX3Byb3ZpZGVyLmQuCisKKyAgIENhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgZ3VhcmRlZCBieSBhIGBQeURUcmFjZV97UFJPQkV9X0VOQUJMRUQoKWAKKyAgIGNoZWNrIHRvIG1pbmltaXplIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHByb2JpbmcgaXMgb2ZmLiBGb3IgZXhhbXBsZToKKworICAgICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKCkpCisgICAgICAgICAgIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGYpOworKi8KKworI2Vsc2UKKworLyogV2l0aG91dCBEVHJhY2UsIGNvbXBpbGUgdG8gbm90aGluZy4gKi8KKworc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0xJTkUoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpICB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9HQ19TVEFSVChpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9HQ19ET05FKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVChpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfRE9ORShpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlQoaW50IGFyZzApIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkUoaW50IGFyZzApIHt9CisKK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0xJTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTl9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0dDX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfRE9ORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVF9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CisKKyNlbmRpZiAvKiAhV0lUSF9EVFJBQ0UgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfRFRSQUNFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCAzNWFlZGI3Li5mOWY3NGMwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC0xNjAsNiArMTYwLDcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PU0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZXhFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfS2V5RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0OwpAQCAtMjU0LDYgKzI1NSwxNyBAQAogICAgIHZhX2xpc3QgdmFyZ3MpOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIExpa2UgUHlFcnJfRm9ybWF0KCksIGJ1dCBzYXZlcyBjdXJyZW50IGV4Y2VwdGlvbiBhcyBfX2NvbnRleHRfXyBhbmQKKyAgIF9fY2F1c2VfXy4KKyAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKAorICAgIFB5T2JqZWN0ICpleGNlcHRpb24sCisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLworICAgIC4uLgorICAgICk7CisjZW5kaWYKKwogI2lmZGVmIE1TX1dJTkRPV1MKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoCiAgICAgaW50IGllcnIsCkBAIC0yODMsNiArMjk1LDkgQEAKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRFeGNXaXRoQXJnc0t3YXJncyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgIFB5T2JqZWN0ICopOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICBQeU9iamVjdCAqKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWdldG9wdC5oIGIvSW5jbHVkZS9weWdldG9wdC5oCmluZGV4IDQyNWM3ZGQuLjk2MjcyMGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlnZXRvcHQuaAorKysgYi9JbmNsdWRlL3B5Z2V0b3B0LmgKQEAgLTExLDkgKzExLDkgQEAKIFB5QVBJX0RBVEEod2NoYXJfdCAqKSBfUHlPU19vcHRhcmc7CiAKIFB5QVBJX0ZVTkModm9pZCkgX1B5T1NfUmVzZXRHZXRPcHQodm9pZCk7Ci0jZW5kaWYKIAogUHlBUElfRlVOQyhpbnQpIF9QeU9TX0dldE9wdChpbnQgYXJnYywgd2NoYXJfdCAqKmFyZ3YsIHdjaGFyX3QgKm9wdHN0cmluZyk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWhhc2guaCBiL0luY2x1ZGUvcHloYXNoLmgKaW5kZXggYTdjYTkzNy4uYTgxNGFmNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWhhc2guaAorKysgYi9JbmNsdWRlL3B5aGFzaC5oCkBAIC0zNiwxNCArMzYsMTQgQEAKICAqIG1lbW9yeSBsYXlvdXQgb24gNjQgYml0IHN5c3RlbXMKICAqICAgY2NjY2NjY2MgY2NjY2NjY2MgY2NjY2NjY2MgIHVjIC0tIHVuc2lnbmVkIGNoYXJbMjRdCiAgKiAgIHBwcHBwcHBwIHNzc3Nzc3NzIC4uLi4uLi4uICBmbnYgLS0gdHdvIFB5X2hhc2hfdAotICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gUFlfVUlOVDY0X1QKKyAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIHVpbnQ2NF90CiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIHNzc3Nzc3NzICBkamJ4MzNhIC0tIDE2IGJ5dGVzIHBhZGRpbmcgKyBvbmUgUHlfaGFzaF90CiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIGVlZWVlZWVlICBweWV4cGF0IFhNTCBoYXNoIHNhbHQKICAqCiAgKiBtZW1vcnkgbGF5b3V0IG9uIDMyIGJpdCBzeXN0ZW1zCiAgKiAgIGNjY2NjY2NjIGNjY2NjY2NjIGNjY2NjY2NjICB1YwogICogICBwcHBwc3NzcyAuLi4uLi4uLiAuLi4uLi4uLiAgZm52IC0tIHR3byBQeV9oYXNoX3QKLSAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIFBZX1VJTlQ2NF9UICgqKQorICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gdWludDY0X3QgKCopCiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIHNzc3MuLi4uICBkamJ4MzNhIC0tIDE2IGJ5dGVzIHBhZGRpbmcgKyBvbmUgUHlfaGFzaF90CiAgKiAgIC4uLi4uLi4uIC4uLi4uLi4uIGVlZWUuLi4uICBweWV4cGF0IFhNTCBoYXNoIHNhbHQKICAqCkBAIC01OSwxMyArNTksMTEgQEAKICAgICAgICAgUHlfaGFzaF90IHByZWZpeDsKICAgICAgICAgUHlfaGFzaF90IHN1ZmZpeDsKICAgICB9IGZudjsKLSNpZmRlZiBQWV9VSU5UNjRfVAogICAgIC8qIHR3byB1aW50NjQgZm9yIFNpcEhhc2gyNCAqLwogICAgIHN0cnVjdCB7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIGswOwotICAgICAgICBQWV9VSU5UNjRfVCBrMTsKKyAgICAgICAgdWludDY0X3QgazA7CisgICAgICAgIHVpbnQ2NF90IGsxOwogICAgIH0gc2lwaGFzaDsKLSNlbmRpZgogICAgIC8qIGEgZGlmZmVyZW50ICghKSBQeV9oYXNoX3QgZm9yIHNtYWxsIHN0cmluZyBvcHRpbWl6YXRpb24gKi8KICAgICBzdHJ1Y3QgewogICAgICAgICB1bnNpZ25lZCBjaGFyIHBhZGRpbmdbMTZdOwpAQCAtMTIxLDggKzExOSw3IEBACiAgKiBjb25maWd1cmUgc2NyaXB0LgogICoKICAqIC0gRk5WIGlzIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIGFuZCBhcmNoaXRlY3R1cmVzLgotICogLSBTSVBIQVNIMjQgb25seSB3b3JrcyBvbiBwbGFmb3JtcyB0aGF0IHByb3ZpZGUgUFlfVUlOVDY0X1QgYW5kIGRvZXNuJ3QKLSAqICAgcmVxdWlyZSBhbGlnbmVkIG1lbW9yeSBmb3IgaW50ZWdlcnMuCisgKiAtIFNJUEhBU0gyNCBvbmx5IHdvcmtzIG9uIHBsYWZvcm1zIHRoYXQgZG9uJ3QgcmVxdWlyZSBhbGlnbmVkIG1lbW9yeSBmb3IgaW50ZWdlcnMuCiAgKiAtIFdpdGggRVhURVJOQUwgZW1iZWRkZXJzIGNhbiBwcm92aWRlIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uIHdpdGg6OgogICoKICAqICAgICBQeUhhc2hfRnVuY0RlZiBQeUhhc2hfRnVuYyA9IHsuLi59OwpAQCAtMTM0LDggKzEzMSw3IEBACiAjZGVmaW5lIFB5X0hBU0hfRk5WIDIKIAogI2lmbmRlZiBQeV9IQVNIX0FMR09SSVRITQotIyAgaWYgKGRlZmluZWQoUFlfVUlOVDY0X1QpICYmIGRlZmluZWQoUFlfVUlOVDMyX1QpIFwKLSAgICAgICAmJiAhZGVmaW5lZChIQVZFX0FMSUdORURfUkVRVUlSRUQpKQorIyAgaWZuZGVmIEhBVkVfQUxJR05FRF9SRVFVSVJFRAogIyAgICBkZWZpbmUgUHlfSEFTSF9BTEdPUklUSE0gUHlfSEFTSF9TSVBIQVNIMjQKICMgIGVsc2UKICMgICAgZGVmaW5lIFB5X0hBU0hfQUxHT1JJVEhNIFB5X0hBU0hfRk5WCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmggYi9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKaW5kZXggY2NkZWJlMi4uNWE2NzY2NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWxpZmVjeWNsZS5oCisrKyBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaApAQCAtMjcsNiArMjcsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW50LCBpbnQpOwogI2VuZGlmCiBQeUFQSV9GVU5DKHZvaWQpIFB5X0ZpbmFsaXplKHZvaWQpOworUHlBUElfRlVOQyhpbnQpIFB5X0ZpbmFsaXplRXgodm9pZCk7CiBQeUFQSV9GVU5DKGludCkgUHlfSXNJbml0aWFsaXplZCh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeV9OZXdJbnRlcnByZXRlcih2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfRW5kSW50ZXJwcmV0ZXIoUHlUaHJlYWRTdGF0ZSAqKTsKQEAgLTEwNiw2ICsxMDcsNyBAQAogUHlBUElfRlVOQyh2b2lkKSBQeVNsaWNlX0Zpbmkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVR5cGVfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5UmFuZG9tX0Zpbmkodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIFB5QXN5bmNHZW5fRmluaSh2b2lkKTsKIAogUHlBUElfREFUQShQeVRocmVhZFN0YXRlICopIF9QeV9GaW5hbGl6aW5nOwogI2VuZGlmCkBAIC0xMTUsOCArMTE3LDExIEBACiBQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX2dldHNpZyhpbnQpOwogUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19zZXRzaWcoaW50LCBQeU9TX3NpZ2hhbmRsZXJfdCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFJhbmRvbSAqLwotUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20gKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tTm9uYmxvY2sodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYWNyby5oIGIvSW5jbHVkZS9weW1hY3JvLmgKaW5kZXggM2Y2ZjVkYy4uMmE4MzlhYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1hY3JvLmgKKysrIGIvSW5jbHVkZS9weW1hY3JvLmgKQEAgLTE4LDYgKzE4LDkgQEAKICAgIGJ5ICJfX0xJTkVfXyIuICovCiAjZGVmaW5lIFB5X1NUUklOR0lGWSh4KSBfUHlfWFNUUklOR0lGWSh4KQogCisvKiBHZXQgdGhlIHNpemUgb2YgYSBzdHJ1Y3R1cmUgbWVtYmVyIGluIGJ5dGVzICovCisjZGVmaW5lIFB5X01FTUJFUl9TSVpFKHR5cGUsIG1lbWJlcikgc2l6ZW9mKCgodHlwZSAqKTApLT5tZW1iZXIpCisKIC8qIEFyZ3VtZW50IG11c3QgYmUgYSBjaGFyIG9yIGFuIGludCBpbiBbLTEyOCwgMTI3XSBvciBbMCwgMjU1XS4gKi8KICNkZWZpbmUgUHlfQ0hBUk1BU0soYykgKCh1bnNpZ25lZCBjaGFyKSgoYykgJiAweGZmKSkKIApAQCAtMzYsNiArMzksMTAgQEAKICNkZWZpbmUgUHlfQlVJTERfQVNTRVJUX0VYUFIoY29uZCkgXAogICAgIChzaXplb2YoY2hhciBbMSAtIDIqIShjb25kKV0pIC0gMSkKIAorI2RlZmluZSBQeV9CVUlMRF9BU1NFUlQoY29uZCkgIGRvIHsgICAgICAgICBcCisgICAgICAgICh2b2lkKVB5X0JVSUxEX0FTU0VSVF9FWFBSKGNvbmQpOyAgIFwKKyAgICB9IHdoaWxlKDApCisKIC8qIEdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdmlzaWJsZSBhcnJheQogCiAgICBUaGlzIGRvZXMgbm90IHdvcmsgb24gcG9pbnRlcnMsIG9yIGFycmF5cyBkZWNsYXJlZCBhcyBbXSwgb3IgZnVuY3Rpb24KQEAgLTc1LDEyICs4MiwxMiBAQAogI2RlZmluZSBfUHlfU0laRV9ST1VORF9VUChuLCBhKSAoKChzaXplX3QpKG4pICsgXAogICAgICAgICAoc2l6ZV90KSgoYSkgLSAxKSkgJiB+KHNpemVfdCkoKGEpIC0gMSkpCiAvKiBSb3VuZCBwb2ludGVyICJwIiBkb3duIHRvIHRoZSBjbG9zZXN0ICJhIi1hbGlnbmVkIGFkZHJlc3MgPD0gInAiLiAqLwotI2RlZmluZSBfUHlfQUxJR05fRE9XTihwLCBhKSAoKHZvaWQgKikoKFB5X3VpbnRwdHJfdCkocCkgJiB+KFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfQUxJR05fRE9XTihwLCBhKSAoKHZvaWQgKikoKHVpbnRwdHJfdCkocCkgJiB+KHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogLyogUm91bmQgcG9pbnRlciAicCIgdXAgdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA+PSAicCIuICovCi0jZGVmaW5lIF9QeV9BTElHTl9VUChwLCBhKSAoKHZvaWQgKikoKChQeV91aW50cHRyX3QpKHApICsgXAotICAgICAgICAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkgJiB+KFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfQUxJR05fVVAocCwgYSkgKCh2b2lkICopKCgodWludHB0cl90KShwKSArIFwKKyAgICAgICAgKHVpbnRwdHJfdCkoKGEpIC0gMSkpICYgfih1aW50cHRyX3QpKChhKSAtIDEpKSkKIC8qIENoZWNrIGlmIHBvaW50ZXIgInAiIGlzIGFsaWduZWQgdG8gImEiLWJ5dGVzIGJvdW5kYXJ5LiAqLwotI2RlZmluZSBfUHlfSVNfQUxJR05FRChwLCBhKSAoISgoUHlfdWludHB0cl90KShwKSAmIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKyNkZWZpbmUgX1B5X0lTX0FMSUdORUQocCwgYSkgKCEoKHVpbnRwdHJfdCkocCkgJiAodWludHB0cl90KSgoYSkgLSAxKSkpCiAKICNpZmRlZiBfX0dOVUNfXwogI2RlZmluZSBQeV9VTlVTRUQobmFtZSkgX3VudXNlZF8gIyMgbmFtZSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hdGguaCBiL0luY2x1ZGUvcHltYXRoLmgKaW5kZXggMWM4ZDcxOC4uNzIxNmEwOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1hdGguaAorKysgYi9JbmNsdWRlL3B5bWF0aC5oCkBAIC01NSw2ICs1NSwxMiBAQAogI2RlZmluZSBQeV9NQVRIX0UgMi43MTgyODE4Mjg0NTkwNDUyMzU0CiAjZW5kaWYKIAorLyogVGF1ICgycGkpIHRvIDQwIGRpZ2l0cywgdGFrZW4gZnJvbSB0YXVkYXkuY29tL3RhdS1kaWdpdHMuICovCisjaWZuZGVmIFB5X01BVEhfVEFVCisjZGVmaW5lIFB5X01BVEhfVEFVIDYuMjgzMTg1MzA3MTc5NTg2NDc2OTI1Mjg2NzY2NTU5MDA1NzY4Mzk0M0wKKyNlbmRpZgorCisKIC8qIE9uIHg4NiwgUHlfRk9SQ0VfRE9VQkxFIGZvcmNlcyBhIGZsb2F0aW5nLXBvaW50IG51bWJlciBvdXQgb2YgYW4geDg3IEZQVQogICAgcmVnaXN0ZXIgYW5kIGludG8gYSA2NC1iaXQgbWVtb3J5IGxvY2F0aW9uLCByb3VuZGluZyBmcm9tIGV4dGVuZGVkCiAgICBwcmVjaXNpb24gdG8gZG91YmxlIHByZWNpc2lvbiBpbiB0aGUgcHJvY2Vzcy4gIE9uIG90aGVyIHBsYXRmb3JtcyBpdCBkb2VzCkBAIC0xNjksNyArMTc1LDcgQEAKICAgICAgICAgI3ByYWdtYSBmbG9hdF9jb250cm9sIChwb3ApCiAgICAgICAgICNkZWZpbmUgUHlfTkFOIF9faWNjX25hbigpCiAgICAgI2Vsc2UgLyogSUNDX05BTl9SRUxBWEVEIGFzIGRlZmF1bHQgZm9yIEludGVsIENvbXBpbGVyICovCi0gICAgICAgIHN0YXRpYyB1bmlvbiB7IHVuc2lnbmVkIGNoYXIgYnVmWzhdOyBkb3VibGUgX19pY2NfbmFuOyB9IF9fbmFuX3N0b3JlID0gezAsMCwwLDAsMCwwLDB4ZjgsMHg3Zn07CisgICAgICAgIHN0YXRpYyBjb25zdCB1bmlvbiB7IHVuc2lnbmVkIGNoYXIgYnVmWzhdOyBkb3VibGUgX19pY2NfbmFuOyB9IF9fbmFuX3N0b3JlID0gezAsMCwwLDAsMCwwLDB4ZjgsMHg3Zn07CiAgICAgICAgICNkZWZpbmUgUHlfTkFOIChfX25hbl9zdG9yZS5fX2ljY19uYW4pCiAgICAgI2VuZGlmIC8qIElDQ19OQU5fU1RSSUNUICovCiAjZW5kaWYgLyogX19JTlRFTF9DT01QSUxFUiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1lbS5oIGIvSW5jbHVkZS9weW1lbS5oCmluZGV4IDA0M2RiNjQuLmNlNjNiZjggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltZW0uaAorKysgYi9JbmNsdWRlL3B5bWVtLmgKQEAgLTE2LDggKzE2LDUxIEBACiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3Q2FsbG9jKHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQgKikgUHlNZW1fUmF3UmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5TWVtX1Jhd0ZyZWUodm9pZCAqcHRyKTsKKworLyogQ29uZmlndXJlIHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMuIFBhc3MgTlVMTCB0byB1c2UgZGVmYXVsdAorICAgYWxsb2NhdG9ycy4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKGNvbnN0IGNoYXIgKm9wdCk7CisKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCitQeUFQSV9GVU5DKGludCkgX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCh2b2lkKTsKICNlbmRpZgogCisvKiBJZGVudGlmaWVyIG9mIGFuIGFkZHJlc3Mgc3BhY2UgKGRvbWFpbikgaW4gdHJhY2VtYWxsb2MgKi8KK3R5cGVkZWYgdW5zaWduZWQgaW50IF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90OworCisvKiBUcmFjayBhbiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIGluIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByZXR1cm4gLTEgb24gZXJyb3IgKGZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgdG8gc3RvcmUKKyAgIHRoZSB0cmFjZSkuCisKKyAgIFJldHVybiAtMiBpZiB0cmFjZW1hbGxvYyBpcyBkaXNhYmxlZC4KKworICAgSWYgbWVtb3J5IGJsb2NrIGlzIGFscmVhZHkgdHJhY2tlZCwgdXBkYXRlIHRoZSBleGlzdGluZyB0cmFjZS4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUcmFjZU1hbGxvY19UcmFjaygKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sCisgICAgdWludHB0cl90IHB0ciwKKyAgICBzaXplX3Qgc2l6ZSk7CisKKy8qIFVudHJhY2sgYW4gYWxsb2NhdGVkIG1lbW9yeSBibG9jayBpbiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlLgorICAgRG8gbm90aGluZyBpZiB0aGUgYmxvY2sgd2FzIG5vdCB0cmFja2VkLgorCisgICBSZXR1cm4gLTIgaWYgdHJhY2VtYWxsb2MgaXMgZGlzYWJsZWQsIG90aGVyd2lzZSByZXR1cm4gMC4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyKTsKKworLyogR2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZC4KKworICAgUmV0dXJuIGEgdHVwbGUgb2YgKGZpbGVuYW1lOiBzdHIsIGxpbmVubzogaW50KSB0dXBsZXMuCisKKyAgIFJldHVybiBOb25lIGlmIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUgaXMgZGlzYWJsZWQgb3IgaWYgdGhlIG1lbW9yeSBibG9jaworICAgaXMgbm90IHRyYWNrZWQgYnkgdHJhY2VtYWxsb2MuCisKKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyKTsKKyNlbmRpZiAgIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAKIC8qIEJFV0FSRToKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXBvcnQuaCBiL0luY2x1ZGUvcHlwb3J0LmgKaW5kZXggZTdlNTE3OC4uMjBmM2RiNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXBvcnQuaAorKysgYi9JbmNsdWRlL3B5cG9ydC5oCkBAIC0zLDE1ICszLDcgQEAKIAogI2luY2x1ZGUgInB5Y29uZmlnLmgiIC8qIGluY2x1ZGUgZm9yIGRlZmluZXMgKi8KIAotLyogU29tZSB2ZXJzaW9ucyBvZiBIUC1VWCAmIFNvbGFyaXMgbmVlZCBpbnR0eXBlcy5oIGZvciBpbnQzMl90LAotICAgSU5UMzJfTUFYLCBldGMuICovCi0jaWZkZWYgSEFWRV9JTlRUWVBFU19ICiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9TVERJTlRfSAotI2luY2x1ZGUgPHN0ZGludC5oPgotI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogU3ltYm9scyBhbmQgbWFjcm9zIHRvIHN1cHBseSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBpbnRlcmZhY2VzIHRvIGJhc2ljCkBAIC0zMSwxNCArMjMsNiBAQAogTWVhbmluZzogIEV4dHJhIGNoZWNrcyBjb21waWxlZCBpbiBmb3IgZGVidWcgbW9kZS4KIFVzZWQgaW46ICBQeV9TQUZFX0RPV05DQVNUCiAKLUhBVkVfVUlOVFBUUl9UCi1NZWFuaW5nOiAgVGhlIEM5WCB0eXBlIHVpbnRwdHJfdCBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNvbXBpbGVyCi1Vc2VkIGluOiAgUHlfdWludHB0cl90Ci0KLUhBVkVfTE9OR19MT05HCi1NZWFuaW5nOiAgVGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSBDIHR5cGUgImxvbmcgbG9uZyIKLVVzZWQgaW46ICBQWV9MT05HX0xPTkcKLQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIHR5cGVkZWZzIGZvciBzb21lIEM5WC1kZWZpbmVkIHN5bm9ueW1zIGZvciBpbnRlZ3JhbCB0eXBlcy4KQEAgLTUzLDkxICszNywzMCBAQAogICogaW50ZWdyYWwgc3lub255bXMuICBPbmx5IGRlZmluZSB0aGUgb25lcyB3ZSBhY3R1YWxseSBuZWVkLgogICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORworLy8gbG9uZyBsb25nIGlzIHJlcXVpcmVkIG5vdy4gRGVmaW5lIEhBVkVfTE9OR19MT05HIHVuY29uZGl0aW9uYWxseSBmb3IKKy8vIGNvbXBhdGliaWxpdHkuCisjZGVmaW5lIEhBVkVfTE9OR19MT05HCiAjaWZuZGVmIFBZX0xPTkdfTE9ORwogI2RlZmluZSBQWV9MT05HX0xPTkcgbG9uZyBsb25nCi0jaWYgZGVmaW5lZChMTE9OR19NQVgpCiAvKiBJZiBMTE9OR19NQVggaXMgZGVmaW5lZCBpbiBsaW1pdHMuaCwgdXNlIHRoYXQuICovCiAjZGVmaW5lIFBZX0xMT05HX01JTiBMTE9OR19NSU4KICNkZWZpbmUgUFlfTExPTkdfTUFYIExMT05HX01BWAogI2RlZmluZSBQWV9VTExPTkdfTUFYIFVMTE9OR19NQVgKLSNlbGlmIGRlZmluZWQoX19MT05HX0xPTkdfTUFYX18pCi0vKiBPdGhlcndpc2UsIGlmIEdDQyBoYXMgYSBidWlsdGluIGRlZmluZSwgdXNlIHRoYXQuICAoRGVmaW5pdGlvbiBvZgotICogUFlfTExPTkdfTUlOIGFzc3VtZXMgdHdvJ3MgY29tcGxlbWVudCB3aXRoIG5vIHRyYXAgcmVwcmVzZW50YXRpb24uKSAqLwotI2RlZmluZSBQWV9MTE9OR19NQVggX19MT05HX0xPTkdfTUFYX18KLSNkZWZpbmUgUFlfTExPTkdfTUlOICgtUFlfTExPTkdfTUFYIC0gMSkKLSNkZWZpbmUgUFlfVUxMT05HX01BWCAoUFlfTExPTkdfTUFYICogUHlfVUxMKDIpICsgMSkKLSNlbGlmIGRlZmluZWQoU0laRU9GX0xPTkdfTE9ORykKLS8qIE90aGVyd2lzZSBjb21wdXRlIGZyb20gU0laRU9GX0xPTkdfTE9ORywgYXNzdW1pbmcgdHdvJ3MgY29tcGxlbWVudCwgbm8KLSAgIHBhZGRpbmcgYml0cywgYW5kIG5vIHRyYXAgcmVwcmVzZW50YXRpb24uICBOb3RlOiBQWV9VTExPTkdfTUFYIHdhcwotICAgcHJldmlvdXNseSAjZGVmaW5lZCBhcyAofjBVTEwpIGhlcmU7IGJ1dCB0aGF0J2xsIGdpdmUgdGhlIHdyb25nIHZhbHVlIGluIGEKLSAgIHByZXByb2Nlc3NvciBleHByZXNzaW9uIG9uIHN5c3RlbXMgd2hlcmUgbG9uZyBsb25nICE9IGludG1heF90LiAqLwotI2RlZmluZSBQWV9MTE9OR19NQVggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICgxICsgMiAqICgoUHlfTEwoMSkgPDwgKENIQVJfQklUICogU0laRU9GX0xPTkdfTE9ORyAtIDIpKSAtIDEpKQotI2RlZmluZSBQWV9MTE9OR19NSU4gKC1QWV9MTE9OR19NQVggLSAxKQotI2RlZmluZSBQWV9VTExPTkdfTUFYIChQWV9MTE9OR19NQVggKiBQeV9VTEwoMikgKyAxKQotI2VuZGlmIC8qIExMT05HX01BWCAqLwotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KLQotLyogYSBidWlsZCB3aXRoIDMwLWJpdCBkaWdpdHMgZm9yIFB5dGhvbiBpbnRlZ2VycyBuZWVkcyBhbiBleGFjdC13aWR0aAotICogMzItYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZSB0byBzdG9yZSB0aG9zZSBkaWdpdHMuICAoV2UgY291bGQganVzdCB1c2UKLSAqIHR5cGUgJ3Vuc2lnbmVkIGxvbmcnLCBidXQgdGhhdCB3b3VsZCBiZSB3YXN0ZWZ1bCBvbiBhIHN5c3RlbSB3aGVyZSBsb25ncwotICogYXJlIDY0LWJpdHMuKSAgT24gVW5peCBzeXN0ZW1zLCB0aGUgYXV0b2NvbmYgbWFjcm8gQUNfVFlQRV9VSU5UMzJfVCBkZWZpbmVzCi0gKiB1aW50MzJfdCB0byBiZSBzdWNoIGEgdHlwZSB1bmxlc3Mgc3RkaW50Lmggb3IgaW50dHlwZXMuaCBkZWZpbmVzIHVpbnQzMl90LgotICogSG93ZXZlciwgaXQgZG9lc24ndCBzZXQgSEFWRV9VSU5UMzJfVCwgc28gd2UgZG8gdGhhdCBoZXJlLgotICovCi0jaWZkZWYgdWludDMyX3QKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfVUlOVDMyX1QKLSNpZm5kZWYgUFlfVUlOVDMyX1QKICNkZWZpbmUgUFlfVUlOVDMyX1QgdWludDMyX3QKLSNlbmRpZgotI2VuZGlmCi0KLS8qIE1hY3JvcyBmb3IgYSA2NC1iaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlOyB1c2VkIGZvciB0eXBlICd0d29kaWdpdHMnIGluIHRoZQotICogaW50ZWdlciBpbXBsZW1lbnRhdGlvbiwgd2hlbiAzMC1iaXQgZGlnaXRzIGFyZSBlbmFibGVkLgotICovCi0jaWZkZWYgdWludDY0X3QKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfVUlOVDY0X1QKLSNpZm5kZWYgUFlfVUlOVDY0X1QKICNkZWZpbmUgUFlfVUlOVDY0X1QgdWludDY0X3QKLSNlbmRpZgotI2VuZGlmCiAKIC8qIFNpZ25lZCB2YXJpYW50cyBvZiB0aGUgYWJvdmUgKi8KLSNpZmRlZiBpbnQzMl90Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSU5UMzJfVAotI2lmbmRlZiBQWV9JTlQzMl9UCiAjZGVmaW5lIFBZX0lOVDMyX1QgaW50MzJfdAotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIGludDY0X3QKLSNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9JTlQ2NF9UCi0jaWZuZGVmIFBZX0lOVDY0X1QKICNkZWZpbmUgUFlfSU5UNjRfVCBpbnQ2NF90Ci0jZW5kaWYKLSNlbmRpZgogCiAvKiBJZiBQWUxPTkdfQklUU19JTl9ESUdJVCBpcyBub3QgZGVmaW5lZCB0aGVuIHdlJ2xsIHVzZSAzMC1iaXQgZGlnaXRzIGlmIGFsbAogICAgdGhlIG5lY2Vzc2FyeSBpbnRlZ2VyIHR5cGVzIGFyZSBhdmFpbGFibGUsIGFuZCB3ZSdyZSBvbiBhIDY0LWJpdCBwbGF0Zm9ybQogICAgKGFzIGRldGVybWluZWQgYnkgU0laRU9GX1ZPSURfUCk7IG90aGVyd2lzZSB3ZSB1c2UgMTUtYml0IGRpZ2l0cy4gKi8KIAogI2lmbmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAotI2lmIChkZWZpbmVkIEhBVkVfVUlOVDY0X1QgJiYgZGVmaW5lZCBIQVZFX0lOVDY0X1QgJiYgXAotICAgICBkZWZpbmVkIEhBVkVfVUlOVDMyX1QgJiYgZGVmaW5lZCBIQVZFX0lOVDMyX1QgJiYgU0laRU9GX1ZPSURfUCA+PSA4KQorI2lmIFNJWkVPRl9WT0lEX1AgPj0gOAogI2RlZmluZSBQWUxPTkdfQklUU19JTl9ESUdJVCAzMAogI2Vsc2UKICNkZWZpbmUgUFlMT05HX0JJVFNfSU5fRElHSVQgMTUKQEAgLTE0OSwyNiArNzIsOSBAQAogICogd2l0aG91dCBsb3NzIG9mIGluZm9ybWF0aW9uLiAgU2ltaWxhcmx5IGZvciBpbnRwdHJfdCwgd3J0IGEgc2lnbmVkCiAgKiBpbnRlZ3JhbCB0eXBlLgogICovCi0jaWZkZWYgSEFWRV9VSU5UUFRSX1QKIHR5cGVkZWYgdWludHB0cl90ICAgICAgIFB5X3VpbnRwdHJfdDsKIHR5cGVkZWYgaW50cHRyX3QgICAgICAgIFB5X2ludHB0cl90OwogCi0jZWxpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9JTlQKLXR5cGVkZWYgdW5zaWduZWQgaW50ICAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgaW50ICAgICAgICAgICAgIFB5X2ludHB0cl90OwotCi0jZWxpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIGxvbmcgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2VsaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkdfTE9ORykKLXR5cGVkZWYgdW5zaWduZWQgUFlfTE9OR19MT05HICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBQWV9MT05HX0xPTkcgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2Vsc2UKLSMgICBlcnJvciAiUHl0aG9uIG5lZWRzIGEgdHlwZWRlZiBmb3IgUHlfdWludHB0cl90IGluIHB5cG9ydC5oLiIKLSNlbmRpZiAvKiBIQVZFX1VJTlRQVFJfVCAqLwotCiAvKiBQeV9zc2l6ZV90IGlzIGEgc2lnbmVkIGludGVncmFsIHR5cGUgc3VjaCB0aGF0IHNpemVvZihQeV9zc2l6ZV90KSA9PQogICogc2l6ZW9mKHNpemVfdCkuICBDOTkgZG9lc24ndCBkZWZpbmUgc3VjaCBhIHRoaW5nIGRpcmVjdGx5IChzaXplX3QgaXMgYW4KICAqIHVuc2lnbmVkIGludGVncmFsIHR5cGUpLiAgU2VlIFBFUCAzNTMgZm9yIGRldGFpbHMuCkBAIC0xOTUsMTYgKzEwMSw4IEBACiB0eXBlZGVmIGludCBQeV9zc2l6ZV9jbGVhbl90OwogI2VuZGlmCiAKLS8qIExhcmdlc3QgcG9zc2libGUgdmFsdWUgb2Ygc2l6ZV90LgotICAgU0laRV9NQVggaXMgcGFydCBvZiBDOTksIHNvIGl0IG1pZ2h0IGJlIGRlZmluZWQgb24gc29tZQotICAgcGxhdGZvcm1zLiBJZiBpdCBpcyBub3QgZGVmaW5lZCwgKHNpemVfdCktMSBpcyBhIHBvcnRhYmxlCi0gICBkZWZpbml0aW9uIGZvciBDODksIGR1ZSB0byB0aGUgd2F5IHNpZ25lZC0+dW5zaWduZWQKLSAgIGNvbnZlcnNpb24gaXMgZGVmaW5lZC4gKi8KLSNpZmRlZiBTSVpFX01BWAorLyogTGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBvZiBzaXplX3QuICovCiAjZGVmaW5lIFBZX1NJWkVfTUFYIFNJWkVfTUFYCi0jZWxzZQotI2RlZmluZSBQWV9TSVpFX01BWCAoKHNpemVfdCktMSkKLSNlbmRpZgogCiAvKiBMYXJnZXN0IHBvc2l0aXZlIHZhbHVlIG9mIHR5cGUgUHlfc3NpemVfdC4gKi8KICNkZWZpbmUgUFlfU1NJWkVfVF9NQVggKChQeV9zc2l6ZV90KSgoKHNpemVfdCktMSk+PjEpKQpAQCAtMjQ3LDIyICsxNDUsNiBAQAogIyAgIGVuZGlmCiAjZW5kaWYKIAotLyogUFlfRk9STUFUX0xPTkdfTE9ORyBpcyBhbmFsb2dvdXMgdG8gUFlfRk9STUFUX1NJWkVfVCBhYm92ZSwgYnV0IGZvcgotICogdGhlIGxvbmcgbG9uZyB0eXBlIGluc3RlYWQgb2YgdGhlIHNpemVfdCB0eXBlLiAgSXQncyBvbmx5IGF2YWlsYWJsZQotICogd2hlbiBIQVZFX0xPTkdfTE9ORyBpcyBkZWZpbmVkLiBUaGUgImhpZ2ggbGV2ZWwiIFB5dGhvbiBmb3JtYXQKLSAqIGZ1bmN0aW9ucyBsaXN0ZWQgYWJvdmUgd2lsbCBpbnRlcnByZXQgImxsZCIgb3IgImxsdSIgY29ycmVjdGx5IG9uCi0gKiBhbGwgcGxhdGZvcm1zLgotICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSMgICBpZm5kZWYgUFlfRk9STUFUX0xPTkdfTE9ORwotIyAgICAgICBpZmRlZiBNU19XSU5ET1dTCi0jICAgICAgICAgICBkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyAiSTY0IgotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBlcnJvciAiVGhpcyBwbGF0Zm9ybSdzIHB5Y29uZmlnLmggbmVlZHMgdG8gZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkciCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLSNlbmRpZgotCiAvKiBQeV9MT0NBTCBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIHN0YXRpYyB0byBnZXQgdGhlIGZhc3Rlc3QgcG9zc2libGUgY2FsbGluZwogICogY29udmVudGlvbiBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIGxvY2FsIHRvIGEgZ2l2ZW4gbW9kdWxlLgogICoKQEAgLTI5OCwyNiArMTgwLDkgQEAKICNkZWZpbmUgUHlfTE9DQUxfSU5MSU5FKHR5cGUpIHN0YXRpYyB0eXBlCiAjZW5kaWYKIAotLyogUHlfTUVNQ1BZIGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgbWVtY3B5IGluIGNhc2VzIHdoZXJlIHRoZSBjb3BpZWQgYmxvY2tzCi0gKiBhcmUgb2Z0ZW4gdmVyeSBzaG9ydC4gIFdoaWxlIG1vc3QgcGxhdGZvcm1zIGhhdmUgaGlnaGx5IG9wdGltaXplZCBjb2RlIGZvcgotICogbGFyZ2UgdHJhbnNmZXJzLCB0aGUgc2V0dXAgY29zdHMgZm9yIG1lbWNweSBhcmUgb2Z0ZW4gcXVpdGUgaGlnaC4gIE1FTUNQWQotICogc29sdmVzIHRoaXMgYnkgZG9pbmcgc2hvcnQgY29waWVzICJpbiBsaW5lIi4KLSAqLwotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNkZWZpbmUgUHlfTUVNQ1BZKHRhcmdldCwgc291cmNlLCBsZW5ndGgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc2l6ZV90IGlfLCBuXyA9IChsZW5ndGgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY2hhciAqdF8gPSAodm9pZCopICh0YXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgY29uc3QgY2hhciAqc18gPSAodm9pZCopIChzb3VyY2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKG5fID49IDE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG1lbWNweSh0Xywgc18sIG5fKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGZvciAoaV8gPSAwOyBpXyA8IG5fOyBpXysrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB0X1tpX10gPSBzX1tpX107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQotI2Vsc2UKKy8qIFB5X01FTUNQWSBpcyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwKKyAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI4MTI2ICovCiAjZGVmaW5lIFB5X01FTUNQWSBtZW1jcHkKLSNlbmRpZgogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKQEAgLTU3MCwxOCArNDM1LDE4IEBACiAjZGVmaW5lIEhBVkVfUFlfU0VUXzUzQklUX1BSRUNJU0lPTiAxCiAjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0hFQURFUiBcCiAgIHVuc2lnbmVkIGludCBvbGRfZnBjciwgbmV3X2ZwY3IKLSNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fU1RBUlQJCQkJCVwKLSAgZG8gewkJCQkJCQkJCVwKLSAgICBfX2FzbV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAob2xkX2ZwY3IpKTsJCQlcCi0gICAgLyogU2V0IGRvdWJsZSBwcmVjaXNpb24gLyByb3VuZCB0byBuZWFyZXN0LiAgKi8JCQlcCi0gICAgbmV3X2ZwY3IgPSAob2xkX2ZwY3IgJiB+MHhmMCkgfCAweDgwOwkJCQlcCi0gICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKLSAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAobmV3X2ZwY3IpKTsJXAorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9TVEFSVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIF9fYXNtX18gKCJmbW92ZS5sICUlZnBjciwlMCIgOiAiPWciIChvbGRfZnBjcikpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIC8qIFNldCBkb3VibGUgcHJlY2lzaW9uIC8gcm91bmQgdG8gbmVhcmVzdC4gICovICAgICAgICAgICAgICAgICAgICAgXAorICAgIG5ld19mcGNyID0gKG9sZF9mcGNyICYgfjB4ZjApIHwgMHg4MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChuZXdfZnBjcikpOyAgICAgICAgXAogICB9IHdoaWxlICgwKQotI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9FTkQJCQkJCVwKLSAgZG8gewkJCQkJCQkJCVwKLSAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAotICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChvbGRfZnBjcikpOwlcCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG9sZF9mcGNyKSk7ICAgICAgICBcCiAgIH0gd2hpbGUgKDApCiAjZW5kaWYKIApAQCAtODUwLDEwICs3MTUsNiBAQAogI3ByYWdtYSBlcnJvcl9tZXNzYWdlcyAob2ZmLEVfRU5EX09GX0xPT1BfQ09ERV9OT1RfUkVBQ0hFRCkKICNlbmRpZgogCi0vKgotICogT2xkZXIgTWljcm9zb2Z0IGNvbXBpbGVycyBkb24ndCBzdXBwb3J0IHRoZSBDOTkgbG9uZyBsb25nIGxpdGVyYWwgc3VmZml4ZXMsCi0gKiBzbyB0aGVzZSB3aWxsIGJlIGRlZmluZWQgaW4gUEMvcHljb25maWcuaCBmb3IgdGhvc2UgY29tcGlsZXJzLgotICovCiAjaWZuZGVmIFB5X0xMCiAjZGVmaW5lIFB5X0xMKHgpIHgjI0xMCiAjZW5kaWYKQEAgLTg2MiwxNSArNzIzLDcgQEAKICNkZWZpbmUgUHlfVUxMKHgpIFB5X0xMKHgjI1UpCiAjZW5kaWYKIAotI2lmZGVmIFZBX0xJU1RfSVNfQVJSQVkKLSNkZWZpbmUgUHlfVkFfQ09QWSh4LCB5KSBQeV9NRU1DUFkoKHgpLCAoeSksIHNpemVvZih2YV9saXN0KSkKLSNlbHNlCi0jaWZkZWYgX192YV9jb3B5Ci0jZGVmaW5lIFB5X1ZBX0NPUFkgX192YV9jb3B5Ci0jZWxzZQotI2RlZmluZSBQeV9WQV9DT1BZKHgsIHkpICh4KSA9ICh5KQotI2VuZGlmCi0jZW5kaWYKKyNkZWZpbmUgUHlfVkFfQ09QWSB2YV9jb3B5CiAKIC8qCiAgKiBDb252ZW5pZW50IG1hY3JvcyB0byBkZWFsIHdpdGggZW5kaWFubmVzcyBvZiB0aGUgcGxhdGZvcm0uIFdPUkRTX0JJR0VORElBTiBpcwpAQCAtOTA2LDQgKzc1OSw4IEBACiAjZW5kaWYgLyogX01TQ19WRVIgPj0gMTkwMCAqLwogI2VuZGlmIC8qIFB5X0JVSUxEX0NPUkUgKi8KIAorI2lmZGVmIF9fQU5EUk9JRF9fCisjaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KKyNlbmRpZgorCiAjZW5kaWYgLyogUHlfUFlQT1JUX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdGF0ZS5oIGIvSW5jbHVkZS9weXN0YXRlLmgKaW5kZXggMDQ5OWE3NC4uYWZjM2MwYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0YXRlLmgKKysrIGIvSW5jbHVkZS9weXN0YXRlLmgKQEAgLTgsMTQgKzgsMjEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIFRoaXMgbGltaXRhdGlvbiBpcyBmb3IgcGVyZm9ybWFuY2UgYW5kIHNpbXBsaWNpdHkuIElmIG5lZWRlZCBpdCBjYW4gYmUKK3JlbW92ZWQgKHdpdGggZWZmb3J0KS4gKi8KKyNkZWZpbmUgTUFYX0NPX0VYVFJBX1VTRVJTIDI1NQorCiAvKiBTdGF0ZSBzaGFyZWQgYmV0d2VlbiB0aHJlYWRzICovCiAKIHN0cnVjdCBfdHM7IC8qIEZvcndhcmQgKi8KIHN0cnVjdCBfaXM7IC8qIEZvcndhcmQgKi8KK3N0cnVjdCBfZnJhbWU7IC8qIEZvcndhcmQgZGVjbGFyYXRpb24gZm9yIFB5RnJhbWVPYmplY3QuICovCiAKICNpZmRlZiBQeV9MSU1JVEVEX0FQSQogdHlwZWRlZiBzdHJ1Y3QgX2lzIFB5SW50ZXJwcmV0ZXJTdGF0ZTsKICNlbHNlCit0eXBlZGVmIFB5T2JqZWN0KiAoKl9QeUZyYW1lRXZhbEZ1bmN0aW9uKShzdHJ1Y3QgX2ZyYW1lICosIGludCk7CisKIHR5cGVkZWYgc3RydWN0IF9pcyB7CiAKICAgICBzdHJ1Y3QgX2lzICpuZXh0OwpAQCAtMzYsMTkgKzQzLDE3IEBACiAjaWZkZWYgSEFWRV9ETE9QRU4KICAgICBpbnQgZGxvcGVuZmxhZ3M7CiAjZW5kaWYKLSNpZmRlZiBXSVRIX1RTQwotICAgIGludCB0c2NkdW1wOwotI2VuZGlmCiAKICAgICBQeU9iamVjdCAqYnVpbHRpbnNfY29weTsKKyAgICBQeU9iamVjdCAqaW1wb3J0X2Z1bmM7CisgICAgLyogSW5pdGlhbGl6ZWQgdG8gUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQoKS4gKi8KKyAgICBfUHlGcmFtZUV2YWxGdW5jdGlvbiBldmFsX2ZyYW1lOwogfSBQeUludGVycHJldGVyU3RhdGU7CiAjZW5kaWYKIAogCiAvKiBTdGF0ZSB1bmlxdWUgcGVyIHRocmVhZCAqLwogCi1zdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwotCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBQeV90cmFjZWZ1bmMgcmV0dXJuIC0xIHdoZW4gcmFpc2luZyBhbiBleGNlcHRpb24sIG9yIDAgZm9yIHN1Y2Nlc3MuICovCiB0eXBlZGVmIGludCAoKlB5X3RyYWNlZnVuYykoUHlPYmplY3QgKiwgc3RydWN0IF9mcmFtZSAqLCBpbnQsIFB5T2JqZWN0ICopOwpAQCAtMTM3LDYgKzE0MiwxMiBAQAogICAgIFB5T2JqZWN0ICpjb3JvdXRpbmVfd3JhcHBlcjsKICAgICBpbnQgaW5fY29yb3V0aW5lX3dyYXBwZXI7CiAKKyAgICBQeV9zc2l6ZV90IGNvX2V4dHJhX3VzZXJfY291bnQ7CisgICAgZnJlZWZ1bmMgY29fZXh0cmFfZnJlZWZ1bmNzW01BWF9DT19FWFRSQV9VU0VSU107CisKKyAgICBQeU9iamVjdCAqYXN5bmNfZ2VuX2ZpcnN0aXRlcjsKKyAgICBQeU9iamVjdCAqYXN5bmNfZ2VuX2ZpbmFsaXplcjsKKwogICAgIC8qIFhYWCBzaWduYWwgaGFuZGxlcnMgc2hvdWxkIGFsc28gYmUgaGVyZSAqLwogCiB9IFB5VGhyZWFkU3RhdGU7CkBAIC0xNDYsNyArMTU3LDkgQEAKIFB5QVBJX0ZVTkMoUHlJbnRlcnByZXRlclN0YXRlICopIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcihQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoUHlJbnRlcnByZXRlclN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2lmICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIC8qIE5ldyBpbiAzLjMgKi8KIFB5QVBJX0ZVTkMoaW50KSBQeVN0YXRlX0FkZE1vZHVsZShQeU9iamVjdCosIHN0cnVjdCBQeU1vZHVsZURlZiopOwpAQCAtMTU4LDE0ICsxNzEsMjAgQEAKICNlbmRpZgogCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9OZXcoUHlJbnRlcnByZXRlclN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VGhyZWFkU3RhdGVfSW5pdChQeVRocmVhZFN0YXRlICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0NsZWFyKFB5VGhyZWFkU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkU3RhdGVfRGVsZXRlKFB5VGhyZWFkU3RhdGUgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRocmVhZFN0YXRlX0RlbGV0ZUV4Y2VwdChQeVRocmVhZFN0YXRlICp0c3RhdGUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2lmZGVmIFdJVEhfVEhSRUFECiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudCh2b2lkKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5R0lMU3RhdGVfUmVpbml0KHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2VuZGlmCiAKIC8qIFJldHVybiB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUuIFRoZSBnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jayBtdXN0IGJlIGhlbGQuCkBAIC0xNzMsOSArMTkyLDExIEBACiAgKiB0aGUgY2FsbGVyIG5lZWRuJ3QgY2hlY2sgZm9yIE5VTEwpLiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfR2V0KHZvaWQpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBTaW1pbGFyIHRvIFB5VGhyZWFkU3RhdGVfR2V0KCksIGJ1dCBkb24ndCBpc3N1ZSBhIGZhdGFsIGVycm9yCiAgKiBpZiBpdCBpcyBOVUxMLiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfU3dhcChQeVRocmVhZFN0YXRlICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVRocmVhZFN0YXRlX0dldERpY3Qodm9pZCk7CkBAIC0yNDEsMTEgKzI2MiwyMyBAQAogKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSh2b2lkKTsKIAotLyogSGVscGVyL2RpYWdub3N0aWMgZnVuY3Rpb24gLSByZXR1cm4gMSBpZiB0aGUgY3VycmVudCB0aHJlYWQKLSAqIGN1cnJlbnRseSBob2xkcyB0aGUgR0lMLCAwIG90aGVyd2lzZQotICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBJc3N1ZSAjMjY1NTg6IEZsYWcgdG8gZGlzYWJsZSBQeUdJTFN0YXRlX0NoZWNrKCkuCisgICBJZiBzZXQgdG8gbm9uLXplcm8sIFB5R0lMU3RhdGVfQ2hlY2soKSBhbHdheXMgcmV0dXJuIDEuICovCitQeUFQSV9EQVRBKGludCkgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZDsKKworLyogSGVscGVyL2RpYWdub3N0aWMgZnVuY3Rpb24gLSByZXR1cm4gMSBpZiB0aGUgY3VycmVudCB0aHJlYWQKKyAgIGN1cnJlbnRseSBob2xkcyB0aGUgR0lMLCAwIG90aGVyd2lzZS4KKworICAgVGhlIGZ1bmN0aW9uIHJldHVybnMgMSBpZiBfUHlHSUxTdGF0ZV9jaGVja19lbmFibGVkIGlzIG5vbi16ZXJvLiAqLwogUHlBUElfRlVOQyhpbnQpIFB5R0lMU3RhdGVfQ2hlY2sodm9pZCk7CisKKy8qIFVuc2FmZSBmdW5jdGlvbiB0byBnZXQgdGhlIHNpbmdsZSBQeUludGVycHJldGVyU3RhdGUgdXNlZCBieSB0aGlzIHByb2Nlc3MnCisgICBHSUxTdGF0ZSBpbXBsZW1lbnRhdGlvbi4KKworICAgUmV0dXJuIE5VTEwgYmVmb3JlIF9QeUdJTFN0YXRlX0luaXQoKSBpcyBjYWxsZWQgYW5kIGFmdGVyIF9QeUdJTFN0YXRlX0ZpbmkoKQorICAgaXMgY2FsbGVkLiAqLworUHlBUElfRlVOQyhQeUludGVycHJldGVyU3RhdGUgKikgX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSh2b2lkKTsKICNlbmRpZgogCiAjZW5kaWYgICAvKiAjaWZkZWYgV0lUSF9USFJFQUQgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdHJoZXguaCBiL0luY2x1ZGUvcHlzdHJoZXguaAppbmRleCAxZGMxMjU1Li42NmEzMGUyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RyaGV4LmgKKysrIGIvSW5jbHVkZS9weXN0cmhleC5oCkBAIC01LDEwICs1LDEyIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSZXR1cm5zIGEgc3RyKCkgY29udGFpbmluZyB0aGUgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGFyZ2J1Zi4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfc3RyaGV4KGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pOwogLyogUmV0dXJucyBhIGJ5dGVzKCkgY29udGFpbmluZyB0aGUgQVNDSUkgaGV4IHJlcHJlc2VudGF0aW9uIG9mIGFyZ2J1Zi4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlfc3RyaGV4X2J5dGVzKGNvbnN0IGNoYXIqIGFyZ2J1ZiwgY29uc3QgUHlfc3NpemVfdCBhcmdsZW4pOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlzdHJ0b2QuaCBiL0luY2x1ZGUvcHlzdHJ0b2QuaAppbmRleCAyM2ZkMWM2Li5jMWU4NGRlIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RydG9kLmgKKysrIGIvSW5jbHVkZS9weXN0cnRvZC5oCkBAIC0xOSw2ICsxOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMoCisgICAgY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgY29uc3QgY2hhciAqd2hhdCwgUHlPYmplY3QgKm9iaiwgdm9pZCAqYXJnLAorICAgIFB5T2JqZWN0ICooKmlubmVyZnVuYykoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCB2b2lkICopKTsKKwogUHlBUElfRlVOQyhkb3VibGUpIF9QeV9wYXJzZV9pbmZfb3JfbmFuKGNvbnN0IGNoYXIgKnAsIGNoYXIgKiplbmRwdHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IDljMmU4MTMuLmNmYTBhOWYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtNjYsOCArNjYsOCBAQAogICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyKiBlbmMsCiAgICAgaW50IHN0YXJ0LAotICAgIGNoYXIgKnBzMSwKLSAgICBjaGFyICpwczIsCisgICAgY29uc3QgY2hhciAqcHMxLAorICAgIGNvbnN0IGNoYXIgKnBzMiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLAogICAgIGludCAqZXJyY29kZSwKICAgICBQeUFyZW5hICphcmVuYSk7CkBAIC03Niw4ICs3Niw4IEBACiAgICAgUHlPYmplY3QgKmZpbGVuYW1lLAogICAgIGNvbnN0IGNoYXIqIGVuYywKICAgICBpbnQgc3RhcnQsCi0gICAgY2hhciAqcHMxLAotICAgIGNoYXIgKnBzMiwKKyAgICBjb25zdCBjaGFyICpwczEsCisgICAgY29uc3QgY2hhciAqcHMyLAogICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsCiAgICAgaW50ICplcnJjb2RlLAogICAgIFB5QXJlbmEgKmFyZW5hKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aHJlYWQuaCBiL0luY2x1ZGUvcHl0aHJlYWQuaAppbmRleCA2ZTlmMzAzLi5kZDY4MWJlIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhyZWFkLmgKKysrIGIvSW5jbHVkZS9weXRocmVhZC5oCkBAIC0zNywxOSArMzcsMTQgQEAKICAgIG1vZHVsZSBleHBvc2VzIGEgaGlnaGVyLWxldmVsIEFQSSwgd2l0aCB0aW1lb3V0cyBleHByZXNzZWQgaW4gc2Vjb25kcwogICAgYW5kIGZsb2F0aW5nLXBvaW50IG51bWJlcnMgYWxsb3dlZC4KICovCi0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKLSNkZWZpbmUgUFlfVElNRU9VVF9UIFBZX0xPTkdfTE9ORworI2RlZmluZSBQWV9USU1FT1VUX1QgbG9uZyBsb25nCiAjZGVmaW5lIFBZX1RJTUVPVVRfTUFYIFBZX0xMT05HX01BWAotI2Vsc2UKLSNkZWZpbmUgUFlfVElNRU9VVF9UIGxvbmcKLSNkZWZpbmUgUFlfVElNRU9VVF9NQVggTE9OR19NQVgKLSNlbmRpZgogCiAvKiBJbiB0aGUgTlQgQVBJLCB0aGUgdGltZW91dCBpcyBhIERXT1JEIGFuZCBpcyBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzICovCiAjaWYgZGVmaW5lZCAoTlRfVEhSRUFEUykKLSNpZiAoUHlfTEwoMHhGRkZGRkZGRikgKiAxMDAwIDwgUFlfVElNRU9VVF9NQVgpCisjaWYgMHhGRkZGRkZGRkxMICogMTAwMCA8IFBZX1RJTUVPVVRfTUFYCiAjdW5kZWYgUFlfVElNRU9VVF9NQVgKLSNkZWZpbmUgUFlfVElNRU9VVF9NQVggKFB5X0xMKDB4RkZGRkZGRkYpICogMTAwMCkKKyNkZWZpbmUgUFlfVElNRU9VVF9NQVggKDB4RkZGRkZGRkZMTCAqIDEwMDApCiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGltZS5oIGIvSW5jbHVkZS9weXRpbWUuaAppbmRleCA0OTQzMjJjLi44N2FjN2ZjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGltZS5oCisrKyBiL0luY2x1ZGUvcHl0aW1lLmgKQEAgLTEzLDE2ICsxMywxMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotI2lmZGVmIFBZX0lOVDY0X1QKIC8qIF9QeVRpbWVfdDogUHl0aG9uIHRpbWVzdGFtcCB3aXRoIHN1YnNlY29uZCBwcmVjaXNpb24uIEl0IGNhbiBiZSB1c2VkIHRvCiAgICBzdG9yZSBhIGR1cmF0aW9uLCBhbmQgc28gaW5kaXJlY3RseSBhIGRhdGUgKHJlbGF0ZWQgdG8gYW5vdGhlciBkYXRlLCBsaWtlCiAgICBVTklYIGVwb2NoKS4gKi8KLXR5cGVkZWYgUFlfSU5UNjRfVCBfUHlUaW1lX3Q7Cit0eXBlZGVmIGludDY0X3QgX1B5VGltZV90OwogI2RlZmluZSBfUHlUaW1lX01JTiBQWV9MTE9OR19NSU4KICNkZWZpbmUgX1B5VGltZV9NQVggUFlfTExPTkdfTUFYCi0jZWxzZQotIyAgZXJyb3IgIl9QeVRpbWVfdCBuZWVkIHNpZ25lZCA2NC1iaXQgaW50ZWdlciB0eXBlIgotI2VuZGlmCiAKIHR5cGVkZWYgZW51bSB7CiAgICAgLyogUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikuCkBAIC0zMCw3ICsyNiwxMCBAQAogICAgIF9QeVRpbWVfUk9VTkRfRkxPT1I9MCwKICAgICAvKiBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKS4KICAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCBmb3IgdGltZW91dCB0byB3YWl0ICJhdCBsZWFzdCIgTiBzZWNvbmRzLiAqLwotICAgIF9QeVRpbWVfUk9VTkRfQ0VJTElORworICAgIF9QeVRpbWVfUk9VTkRfQ0VJTElORz0xLAorICAgIC8qIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyLgorICAgICAgIEZvciBleGFtcGxlLCB1c2VkIHRvIHJvdW5kIGZyb20gYSBQeXRob24gZmxvYXQuICovCisgICAgX1B5VGltZV9ST1VORF9IQUxGX0VWRU4KIH0gX1B5VGltZV9yb3VuZF90OwogCiAvKiBDb252ZXJ0IGEgdGltZV90IHRvIGEgUHlMb25nLiAqLwpAQCAtNzUsNyArNzQsNyBAQAogICAgICAgICAgICAgKChfUHlUaW1lX3QpKHNlY29uZHMpICogKDEwMDAgKiAxMDAwICogMTAwMCkpCiAKIC8qIENyZWF0ZSBhIHRpbWVzdGFtcCBmcm9tIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzLiAqLwotUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKFBZX0xPTkdfTE9ORyBucyk7CitQeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tTmFub3NlY29uZHMobG9uZyBsb25nIG5zKTsKIAogLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzIChQeXRob24gZmxvYXQgb3IgaW50KSB0byBhIHRpbWV0YW1wLgogICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IsIHJldHVybiAwIG9uIHN1Y2Nlc3MuICovCkBAIC0xODUsNiArMTg0LDE0IEBACiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIFB5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX0luaXQodm9pZCk7CiAKKy8qIENvbnZlcnRzIGEgdGltZXN0YW1wIHRvIHRoZSBHcmVnb3JpYW4gdGltZSwgdXNpbmcgdGhlIGxvY2FsIHRpbWUgem9uZS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfbG9jYWx0aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKTsKKworLyogQ29udmVydHMgYSB0aW1lc3RhbXAgdG8gdGhlIEdyZWdvcmlhbiB0aW1lLCBhc3N1bWluZyBVVEMuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX2dtdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3NldG9iamVjdC5oIGIvSW5jbHVkZS9zZXRvYmplY3QuaAppbmRleCBmMTdiYzFiLi44N2VjMWM4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3NldG9iamVjdC5oCisrKyBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKQEAgLTEwLDEyICsxMCwxMyBAQAogCiAvKiBUaGVyZSBhcmUgdGhyZWUga2luZHMgb2YgZW50cmllcyBpbiB0aGUgdGFibGU6CiAKLTEuIFVudXNlZDogIGtleSA9PSBOVUxMCi0yLiBBY3RpdmU6ICBrZXkgIT0gTlVMTCBhbmQga2V5ICE9IGR1bW15Ci0zLiBEdW1teTogICBrZXkgPT0gZHVtbXkKKzEuIFVudXNlZDogIGtleSA9PSBOVUxMIGFuZCBoYXNoID09IDAKKzIuIER1bW15OiAgIGtleSA9PSBkdW1teSBhbmQgaGFzaCA9PSAtMQorMy4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teSBhbmQgaGFzaCAhPSAtMQogCi1UaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaGF2ZSBubyBtZWFuaW5nLgotVGhlIGhhc2ggZmllbGQgb2YgRHVtbW55IHNsb3RzIGFyZSBzZXQgdG8gLTEKK1RoZSBoYXNoIGZpZWxkIG9mIFVudXNlZCBzbG90cyBpcyBhbHdheXMgemVyby4KKworVGhlIGhhc2ggZmllbGQgb2YgRHVtbXkgc2xvdHMgYXJlIHNldCB0byAtMQogbWVhbmluZyB0aGF0IGR1bW15IGVudHJpZXMgY2FuIGJlIGRldGVjdGVkIGJ5CiBlaXRoZXIgZW50cnktPmtleT09ZHVtbXkgb3IgYnkgZW50cnktPmhhc2g9PS0xLgogKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmggYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCmluZGV4IDk0OGY2OTAuLjVkYThhNDYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKKysrIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaApAQCAtNDksMTAgKzQ5LDggQEAKICNkZWZpbmUgVF9PQkpFQ1RfRVggMTYgIC8qIExpa2UgVF9PQkpFQ1QsIGJ1dCByYWlzZXMgQXR0cmlidXRlRXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gdGhlIHZhbHVlIGlzIE5VTEwsIGluc3RlYWQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRpbmcgdG8gTm9uZS4gKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogI2RlZmluZSBUX0xPTkdMT05HICAgICAgMTcKICNkZWZpbmUgVF9VTE9OR0xPTkcgICAgIDE4Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KIAogI2RlZmluZSBUX1BZU1NJWkVUICAgICAgMTkgICAgICAvKiBQeV9zc2l6ZV90ICovCiAjZGVmaW5lIFRfTk9ORSAgICAgICAgICAyMCAgICAgIC8qIFZhbHVlIGlzIGFsd2F5cyBOb25lICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N5bXRhYmxlLmggYi9JbmNsdWRlL3N5bXRhYmxlLmgKaW5kZXggMTQwOWNkOS4uODZhZTNjMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeW10YWJsZS5oCisrKyBiL0luY2x1ZGUvc3ltdGFibGUuaApAQCAtNDgsNiArNDgsNyBAQAogICAgIHVuc2lnbmVkIHN0ZV9jaGlsZF9mcmVlIDogMTsgIC8qIHRydWUgaWYgYSBjaGlsZCBibG9jayBoYXMgZnJlZSB2YXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBmcmVlIHJlZnMgdG8gZ2xvYmFscyAqLwogICAgIHVuc2lnbmVkIHN0ZV9nZW5lcmF0b3IgOiAxOyAgIC8qIHRydWUgaWYgbmFtZXNwYWNlIGlzIGEgZ2VuZXJhdG9yICovCisgICAgdW5zaWduZWQgc3RlX2Nvcm91dGluZSA6IDE7ICAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgaXMgYSBjb3JvdXRpbmUgKi8KICAgICB1bnNpZ25lZCBzdGVfdmFyYXJncyA6IDE7ICAgICAvKiB0cnVlIGlmIGJsb2NrIGhhcyB2YXJhcmdzICovCiAgICAgdW5zaWduZWQgc3RlX3ZhcmtleXdvcmRzIDogMTsgLyogdHJ1ZSBpZiBibG9jayBoYXMgdmFya2V5d29yZHMgKi8KICAgICB1bnNpZ25lZCBzdGVfcmV0dXJuc192YWx1ZSA6IDE7ICAvKiB0cnVlIGlmIG5hbWVzcGFjZSB1c2VzIHJldHVybiB3aXRoCkBAIC05MSw2ICs5Miw3IEBACiAjZGVmaW5lIERFRl9GUkVFIDI8PDQgICAgICAgICAgLyogbmFtZSB1c2VkIGJ1dCBub3QgZGVmaW5lZCBpbiBuZXN0ZWQgYmxvY2sgKi8KICNkZWZpbmUgREVGX0ZSRUVfQ0xBU1MgMjw8NSAgICAvKiBmcmVlIHZhcmlhYmxlIGZyb20gY2xhc3MncyBtZXRob2QgKi8KICNkZWZpbmUgREVGX0lNUE9SVCAyPDw2ICAgICAgICAvKiBhc3NpZ25tZW50IG9jY3VycmVkIHZpYSBpbXBvcnQgKi8KKyNkZWZpbmUgREVGX0FOTk9UIDI8PDcgICAgICAgICAvKiB0aGlzIG5hbWUgaXMgYW5ub3RhdGVkICovCiAKICNkZWZpbmUgREVGX0JPVU5EIChERUZfTE9DQUwgfCBERUZfUEFSQU0gfCBERUZfSU1QT1JUKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N5c21vZHVsZS5oIGIvSW5jbHVkZS9zeXNtb2R1bGUuaAppbmRleCBjZGUxMGFjLi5jNTU0N2ZmIDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5c21vZHVsZS5oCisrKyBiL0luY2x1ZGUvc3lzbW9kdWxlLmgKQEAgLTgsMTEgKzgsMTEgQEAKICNlbmRpZgogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5U3lzX0dldE9iamVjdChjb25zdCBjaGFyICopOworUHlBUElfRlVOQyhpbnQpIFB5U3lzX1NldE9iamVjdChjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlTeXNfR2V0T2JqZWN0SWQoX1B5X0lkZW50aWZpZXIgKmtleSk7Ci0jZW5kaWYKLVB5QVBJX0ZVTkMoaW50KSBQeVN5c19TZXRPYmplY3QoY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlTeXNfU2V0T2JqZWN0SWQoX1B5X0lkZW50aWZpZXIgKmtleSwgUHlPYmplY3QgKik7CisjZW5kaWYKIAogUHlBUElfRlVOQyh2b2lkKSBQeVN5c19TZXRBcmd2KGludCwgd2NoYXJfdCAqKik7CiBQeUFQSV9GVU5DKHZvaWQpIFB5U3lzX1NldEFyZ3ZFeChpbnQsIHdjaGFyX3QgKiosIGludCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3RyYWNlYmFjay5oIGIvSW5jbHVkZS90cmFjZWJhY2suaAppbmRleCBjM2VjYmUyLi5iNTg3NDEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3RyYWNlYmFjay5oCisrKyBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKQEAgLTMxLDYgKzMxLDcgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVRyYWNlQmFja19UeXBlOwogI2RlZmluZSBQeVRyYWNlQmFja19DaGVjayh2KSAoUHlfVFlQRSh2KSA9PSAmUHlUcmFjZUJhY2tfVHlwZSkKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogV3JpdGUgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaW50byB0aGUgZmlsZSAnZmQnLiBGb3IgZXhhbXBsZToKIAogICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CkBAIC01MywxOSArNTQsNjQgQEAKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUpOwogCiAvKiBXcml0ZSB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzIGludG8gdGhlIGZpbGUgJ2ZkJy4gY3VycmVudF90aHJlYWQgY2FuIGJlCi0gICBOVUxMLiBSZXR1cm4gTlVMTCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBtZXNzYWdlIG9uIGVycm9yLgorICAgTlVMTC4KKworICAgUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KIAogICAgVGhpcyBmdW5jdGlvbiBpcyB3cml0dGVuIGZvciBkZWJ1ZyBwdXJwb3NlIG9ubHkuIEl0IGNhbGxzCiAgICBfUHlfRHVtcFRyYWNlYmFjaygpIGZvciBlYWNoIHRocmVhZCwgYW5kIHNvIGhhcyB0aGUgc2FtZSBsaW1pdGF0aW9ucy4gSXQKICAgIG9ubHkgd3JpdGUgdGhlIHRyYWNlYmFjayBvZiB0aGUgZmlyc3QgMTAwIHRocmVhZHM6IHdyaXRlICIuLi4iIGlmIHRoZXJlIGFyZQogICAgbW9yZSB0aHJlYWRzLgogCisgICBJZiBjdXJyZW50X3RzdGF0ZSBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gZ2V0IHRoZSBQeXRob24gdGhyZWFkIHN0YXRlCisgICBvZiB0aGUgY3VycmVudCB0aHJlYWQuIEl0IGlzIG5vdCBhbiBlcnJvciBpZiB0aGUgZnVuY3Rpb24gaXMgdW5hYmxlIHRvIGdldAorICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZS4KKworICAgSWYgaW50ZXJwIGlzIE5VTEwsIHRoZSBmdW5jdGlvbiB0cmllcyB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIGZyb20KKyAgIHRoZSBjdXJyZW50IFB5dGhvbiB0aHJlYWQgc3RhdGUsIG9yIGZyb20KKyAgIF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUoKSBpbiBsYXN0IHJlc29ydC4KKworICAgSXQgaXMgYmV0dGVyIHRvIHBhc3MgTlVMTCB0byBpbnRlcnAgYW5kIGN1cnJlbnRfdHN0YXRlLCB0aGUgZnVuY3Rpb24gdHJpZXMKKyAgIGRpZmZlcmVudCBvcHRpb25zIHRvIHJldHJpZXZlIHRoZXNlIGluZm9ybWF0aW9ucy4KKwogICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KIAogUHlBUElfRlVOQyhjb25zdCBjaGFyKikgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKAotICAgIGludCBmZCwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCi0gICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90aHJlYWQpOworICAgIGludCBmZCwKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKKyAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RzdGF0ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKworLyogV3JpdGUgYSBVbmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuIEVuY29kZSB0aGUgc3RyaW5nIHRvCisgICBBU0NJSSB1c2luZyB0aGUgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLgorCisgICBEbyBub3RoaW5nIGlmIHRleHQgaXMgbm90IGEgVW5pY29kZSBvYmplY3QuIFRoZSBmdW5jdGlvbiBhY2NlcHRzIFVuaWNvZGUKKyAgIHN0cmluZyB3aGljaCBpcyBub3QgcmVhZHkgKFB5VW5pY29kZV9XQ0hBUl9LSU5EKS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X0R1bXBBU0NJSShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KTsKKworLyogRm9ybWF0IGFuIGludGVnZXIgYXMgZGVjaW1hbCBpbnRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wRGVjaW1hbCgKKyAgICBpbnQgZmQsCisgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSk7CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGFzIGhleGFkZWNpbWFsIGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZCB3aXRoIGF0IGxlYXN0CisgICB3aWR0aCBkaWdpdHMuCisKKyAgIFRoZSBtYXhpbXVtIHdpZHRoIGlzIHNpemVvZih1bnNpZ25lZCBsb25nKSoyIGRpZ2l0cy4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X0R1bXBIZXhhZGVjaW1hbCgKKyAgICBpbnQgZmQsCisgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSwKKyAgICBQeV9zc2l6ZV90IHdpZHRoKTsKKworI2VuZGlmICAgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAppbmRleCAyYzQ5NmVhLi42NDNkMTBkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaApAQCAtMTAzLDEwICsxMDMsNiBAQAogIyBlbmRpZgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0jICBkZWZpbmUgSEFWRV9NQkNTCi0jZW5kaWYKLQogI2lmZGVmIEhBVkVfV0NIQVJfSAogLyogV29yayBhcm91bmQgYSBjb3NtZXRpYyBidWcgaW4gQlNESSA0Lnggd2NoYXIuaDsgdGhhbmtzIHRvIFRob21hcyBXb3V0ZXJzICovCiAjIGlmZGVmIF9IQVZFX0JTREkKQEAgLTExNywyMSArMTEzLDkgQEAKIAogLyogUHlfVUNTNCBhbmQgUHlfVUNTMiBhcmUgdHlwZWRlZnMgZm9yIHRoZSByZXNwZWN0aXZlCiAgICB1bmljb2RlIHJlcHJlc2VudGF0aW9ucy4gKi8KLSNpZiBTSVpFT0ZfSU5UID09IDQKLXR5cGVkZWYgdW5zaWduZWQgaW50IFB5X1VDUzQ7Ci0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci10eXBlZGVmIHVuc2lnbmVkIGxvbmcgUHlfVUNTNDsKLSNlbHNlCi0jZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzQiCi0jZW5kaWYKLQotI2lmIFNJWkVPRl9TSE9SVCA9PSAyCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0IFB5X1VDUzI7Ci0jZWxzZQotI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1MyIgotI2VuZGlmCi0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciBQeV9VQ1MxOwordHlwZWRlZiB1aW50MzJfdCBQeV9VQ1M0OwordHlwZWRlZiB1aW50MTZfdCBQeV9VQ1MyOwordHlwZWRlZiB1aW50OF90IFB5X1VDUzE7CiAKIC8qIC0tLSBJbnRlcm5hbCBVbmljb2RlIE9wZXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xNzIsNyArMTU2LDcgQEAKICAgICBQeV9VTklDT0RFX0lTTlVNRVJJQyhjaCkpCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9DT1BZKHRhcmdldCwgc291cmNlLCBsZW5ndGgpIFwKLSAgICBQeV9NRU1DUFkoKHRhcmdldCksIChzb3VyY2UpLCAobGVuZ3RoKSpzaXplb2YoUHlfVU5JQ09ERSkpCisgICAgbWVtY3B5KCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfRklMTCh0YXJnZXQsIHZhbHVlLCBsZW5ndGgpIFwKICAgICBkbyB7UHlfc3NpemVfdCBpXzsgUHlfVU5JQ09ERSAqdF8gPSAodGFyZ2V0KTsgUHlfVU5JQ09ERSB2XyA9ICh2YWx1ZSk7XApAQCAtOTAwLDcgKzg4NCw3IEBACiAgICAgLyogbWluaW11bSBjaGFyYWN0ZXIgKGRlZmF1bHQ6IDEyNywgQVNDSUkpICovCiAgICAgUHlfVUNTNCBtaW5fY2hhcjsKIAotICAgIC8qIElmIG5vbi16ZXJvLCBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBieSAyNSUgKGRlZmF1bHQ6IDApLiAqLworICAgIC8qIElmIG5vbi16ZXJvLCBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciAoZGVmYXVsdDogMCkuICovCiAgICAgdW5zaWduZWQgY2hhciBvdmVyYWxsb2NhdGU7CiAKICAgICAvKiBJZiByZWFkb25seSBpcyAxLCBidWZmZXIgaXMgYSBzaGFyZWQgc3RyaW5nIChjYW5ub3QgYmUgbW9kaWZpZWQpCkBAIC05MzQsNiArOTE4LDIzIEBACiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKTsKIAorLyogUHJlcGFyZSB0aGUgYnVmZmVyIHRvIGhhdmUgYXQgbGVhc3QgdGhlIGtpbmQgS0lORC4KKyAgIEZvciBleGFtcGxlLCBraW5kPVB5VW5pY29kZV8yQllURV9LSU5EIGVuc3VyZXMgdGhhdCB0aGUgd3JpdGVyIHdpbGwKKyAgIHN1cHBvcnQgY2hhcmFjdGVycyBpbiByYW5nZSBVKzAwMC1VK0ZGRkYuCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworI2RlZmluZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKFdSSVRFUiwgS0lORCkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KChLSU5EKSAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCksICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChLSU5EKSA8PSAoV1JJVEVSKS0+a2luZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA/IDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoKFdSSVRFUiksIChLSU5EKSkpCisKKy8qIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgdXNlIHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCkKKyAgIG1hY3JvIGluc3RlYWQuICovCitQeUFQSV9GVU5DKGludCkKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kKTsKKwogLyogQXBwZW5kIGEgVW5pY29kZSBjaGFyYWN0ZXIuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIFB5QVBJX0ZVTkMoaW50KQpAQCAtMTY0MCwxMyArMTY0MSwxMyBAQAogICAgICk7CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIAogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlTUJDUygKICAgICBjb25zdCBjaGFyICpzdHJpbmcsICAgICAgICAgLyogTUJDUyBlbmNvZGVkIHN0cmluZyAqLwotICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAgICAgLyogc2l6ZSBvZiBzdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogc2l6ZSBvZiBzdHJpbmcgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogCkBAIC0xNjgzLDcgKzE2ODQsNyBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBEZWNpbWFsIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xOTM4LDYgKzE5MzksMTQgQEAKICAgICBQeU9iamVjdCAqc2VxICAgICAgICAgICAgICAgLyogU2VxdWVuY2Ugb2JqZWN0ICovCiAgICAgKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlX0pvaW5BcnJheSgKKyAgICBQeU9iamVjdCAqc2VwYXJhdG9yLAorICAgIFB5T2JqZWN0ICoqaXRlbXMsCisgICAgUHlfc3NpemVfdCBzZXFsZW4KKyAgICApOworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCisKIC8qIFJldHVybiAxIGlmIHN1YnN0ciBtYXRjaGVzIHN0cltzdGFydDplbmRdIGF0IHRoZSBnaXZlbiB0YWlsIGVuZCwgMAogICAgb3RoZXJ3aXNlLiAqLwogCkBAIC0yMjQ4LDExICsyMjU3LDE3IEBACiAgICAgaW50IGNoZWNrX2NvbnRlbnQpOwogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFJldHVybiBhbiBpbnRlcm5lZCBVbmljb2RlIG9iamVjdCBmb3IgYW4gSWRlbnRpZmllcjsgbWF5IGZhaWwgaWYgdGhlcmUgaXMgbm8gbWVtb3J5LiovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gcm9tSWQoX1B5X0lkZW50aWZpZXIqKTsKIC8qIENsZWFyIGFsbCBzdGF0aWMgc3RyaW5ncy4gKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3Modm9pZCk7CiAKKy8qIEZhc3QgZXF1YWxpdHkgY2hlY2sgd2hlbiB0aGUgaW5wdXRzIGFyZSBrbm93biB0byBiZSBleGFjdCB1bmljb2RlIHR5cGVzCisgICBhbmQgd2hlcmUgdGhlIGhhc2ggdmFsdWVzIGFyZSBlcXVhbCAoaS5lLiBhIHZlcnkgcHJvYmFibGUgbWF0Y2gpICovCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9FUShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvd2FybmluZ3MuaCBiL0luY2x1ZGUvd2FybmluZ3MuaAppbmRleCBlZmZiOWZhZC4uYzFjNjk5MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS93YXJuaW5ncy5oCisrKyBiL0luY2x1ZGUvd2FybmluZ3MuaApAQCAtMTcsNiArMTcsMTMgQEAKICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgICAgICAgICAvKiBBU0NJSS1lbmNvZGVkIHN0cmluZyAgKi8KICAgICAuLi4pOworCisvKiBFbWl0IGEgUmVzb3VyY2VXYXJuaW5nIHdhcm5pbmcgKi8KK1B5QVBJX0ZVTkMoaW50KSBQeUVycl9SZXNvdXJjZVdhcm5pbmcoCisgICAgUHlPYmplY3QgKnNvdXJjZSwKKyAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgICAgICAgICAvKiBBU0NJSS1lbmNvZGVkIHN0cmluZyAgKi8KKyAgICAuLi4pOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdCgKICAgICBQeU9iamVjdCAqY2F0ZWdvcnksCmRpZmYgLS1naXQgYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weSBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CmluZGV4IDhiZWJkNjkuLmVlN2QwZjEgMTAwNjQ0Ci0tLSBhL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CisrKyBiL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5CkBAIC0xMCw4ICsxMCw4IEBACiBpbXBvcnQgc3lzCiAKIF9fYWxsX18gPSBbIkF3YWl0YWJsZSIsICJDb3JvdXRpbmUiLCAiQXN5bmNJdGVyYWJsZSIsICJBc3luY0l0ZXJhdG9yIiwKLSAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsCi0gICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLAorICAgICAgICAgICAiSGFzaGFibGUiLCAiSXRlcmFibGUiLCAiSXRlcmF0b3IiLCAiR2VuZXJhdG9yIiwgIlJldmVyc2libGUiLAorICAgICAgICAgICAiU2l6ZWQiLCAiQ29udGFpbmVyIiwgIkNhbGxhYmxlIiwgIkNvbGxlY3Rpb24iLAogICAgICAgICAgICAiU2V0IiwgIk11dGFibGVTZXQiLAogICAgICAgICAgICAiTWFwcGluZyIsICJNdXRhYmxlTWFwcGluZyIsCiAgICAgICAgICAgICJNYXBwaW5nVmlldyIsICJLZXlzVmlldyIsICJJdGVtc1ZpZXciLCAiVmFsdWVzVmlldyIsCkBAIC02Myw2ICs2MywxOCBAQAogCiAjIyMgT05FLVRSSUNLIFBPTklFUyAjIyMKIAorZGVmIF9jaGVja19tZXRob2RzKEMsICptZXRob2RzKToKKyAgICBtcm8gPSBDLl9fbXJvX18KKyAgICBmb3IgbWV0aG9kIGluIG1ldGhvZHM6CisgICAgICAgIGZvciBCIGluIG1ybzoKKyAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBCLl9fZGljdF9fOgorICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bbWV0aG9kXSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgcmV0dXJuIFRydWUKKwogY2xhc3MgSGFzaGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTc0LDExICs4Niw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEhhc2hhYmxlOgotICAgICAgICAgICAgZm9yIEIgaW4gQy5fX21yb19fOgotICAgICAgICAgICAgICAgIGlmICJfX2hhc2hfXyIgaW4gQi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1siX19oYXNoX18iXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9faGFzaF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtOTMsMTEgKzEwMSw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEF3YWl0YWJsZToKLSAgICAgICAgICAgIGZvciBCIGluIEMuX19tcm9fXzoKLSAgICAgICAgICAgICAgICBpZiAiX19hd2FpdF9fIiBpbiBCLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fWyJfX2F3YWl0X18iXToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYXdhaXRfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTEzOCwxNCArMTQyLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ29yb3V0aW5lOgotICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCi0gICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKToKLSAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBiYXNlLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLSAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19fYXdhaXRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTYzLDggKzE2MCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fYWl0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYWl0ZXJfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTE4Myw5ICsxNzksNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBBc3luY0l0ZXJhdG9yOgotICAgICAgICAgICAgaWYgKGFueSgiX19hbmV4dF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykgYW5kCi0gICAgICAgICAgICAgICAgYW55KCJfX2FpdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19hbmV4dF9fIiwgIl9fYWl0ZXJfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTIwMSw4ICsxOTUsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBJdGVyYWJsZToKLSAgICAgICAgICAgIGlmIGFueSgiX19pdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2l0ZXJfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTIyMSw5ICsyMTQsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBJdGVyYXRvcjoKLSAgICAgICAgICAgIGlmIChhbnkoIl9fbmV4dF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykgYW5kCi0gICAgICAgICAgICAgICAgYW55KCJfX2l0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2l0ZXJfXycsICdfX25leHRfXycpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiBJdGVyYXRvci5yZWdpc3RlcihieXRlc19pdGVyYXRvcikKQEAgLTI0Miw2ICsyMzMsMjIgQEAKIEl0ZXJhdG9yLnJlZ2lzdGVyKHppcF9pdGVyYXRvcikKIAogCitjbGFzcyBSZXZlcnNpYmxlKEl0ZXJhYmxlKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICB3aGlsZSBGYWxzZToKKyAgICAgICAgICAgIHlpZWxkIE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBSZXZlcnNpYmxlOgorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX3JldmVyc2VkX18iLCAiX19pdGVyX18iKQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworCiBjbGFzcyBHZW5lcmF0b3IoSXRlcmF0b3IpOgogCiAgICAgX19zbG90c19fID0gKCkKQEAgLTI4NSwxNyArMjkyLDEwIEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEdlbmVyYXRvcjoKLSAgICAgICAgICAgIG1ybyA9IEMuX19tcm9fXwotICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ19faXRlcl9fJywgJ19fbmV4dF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKToKLSAgICAgICAgICAgICAgICBmb3IgYmFzZSBpbiBtcm86Ci0gICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZCBpbiBiYXNlLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKLSAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19faXRlcl9fJywgJ19fbmV4dF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCi0KIEdlbmVyYXRvci5yZWdpc3RlcihnZW5lcmF0b3IpCiAKIApAQCAtMzEwLDggKzMxMCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIFNpemVkOgotICAgICAgICAgICAgaWYgYW55KCJfX2xlbl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19sZW5fXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTMyNiwxMCArMzI1LDE4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENvbnRhaW5lcjoKLSAgICAgICAgICAgIGlmIGFueSgiX19jb250YWluc19fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19jb250YWluc19fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKK2NsYXNzIENvbGxlY3Rpb24oU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CisgICAgICAgIGlmIGNscyBpcyBDb2xsZWN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICAiX19sZW5fXyIsICJfX2l0ZXJfXyIsICJfX2NvbnRhaW5zX18iKQorICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogY2xhc3MgQ2FsbGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCkBAIC0zNDIsMTUgKzM0OSwxNCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDYWxsYWJsZToKLSAgICAgICAgICAgIGlmIGFueSgiX19jYWxsX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2NhbGxfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKICMjIyBTRVRTICMjIwogCiAKLWNsYXNzIFNldChTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBTZXQoQ29sbGVjdGlvbik6CiAKICAgICAiIiJBIHNldCBpcyBhIGZpbml0ZSwgaXRlcmFibGUgY29udGFpbmVyLgogCkBAIC01NzUsNyArNTgxLDcgQEAKICMjIyBNQVBQSU5HUyAjIyMKIAogCi1jbGFzcyBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIE1hcHBpbmcoQ29sbGVjdGlvbik6CiAKICAgICBfX3Nsb3RzX18gPSAoKQogCkBAIC02MjMsNiArNjI5LDggQEAKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICByZXR1cm4gZGljdChzZWxmLml0ZW1zKCkpID09IGRpY3Qob3RoZXIuaXRlbXMoKSkKIAorICAgIF9fcmV2ZXJzZWRfXyA9IE5vbmUKKwogTWFwcGluZy5yZWdpc3RlcihtYXBwaW5ncHJveHkpCiAKIApAQCAtNjcyLDcgKzY4MCw3IEBACiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHYgPT0gdmFsdWUKKyAgICAgICAgICAgIHJldHVybiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWUKIAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9tYXBwaW5nOgpAQCAtNjg3LDcgKzY5NSw4IEBACiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKICAgICAgICAgZm9yIGtleSBpbiBzZWxmLl9tYXBwaW5nOgotICAgICAgICAgICAgaWYgdmFsdWUgPT0gc2VsZi5fbWFwcGluZ1trZXldOgorICAgICAgICAgICAgdiA9IHNlbGYuX21hcHBpbmdba2V5XQorICAgICAgICAgICAgaWYgdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCkBAIC03OTYsNyArODA1LDcgQEAKICMjIyBTRVFVRU5DRVMgIyMjCiAKIAotY2xhc3MgU2VxdWVuY2UoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgU2VxdWVuY2UoUmV2ZXJzaWJsZSwgQ29sbGVjdGlvbik6CiAKICAgICAiIiJBbGwgdGhlIG9wZXJhdGlvbnMgb24gYSByZWFkLW9ubHkgc2VxdWVuY2UuCiAKQEAgLTgyMiw3ICs4MzEsNyBAQAogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIGZvciB2IGluIHNlbGY6Ci0gICAgICAgICAgICBpZiB2ID09IHZhbHVlOgorICAgICAgICAgICAgaWYgdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCmRpZmYgLS1naXQgYS9MaWIvX2NvbXBhdF9waWNrbGUucHkgYi9MaWIvX2NvbXBhdF9waWNrbGUucHkKaW5kZXggYzBlMDQ0My4uZjY4NDk2YSAxMDA2NDQKLS0tIGEvTGliL19jb21wYXRfcGlja2xlLnB5CisrKyBiL0xpYi9fY29tcGF0X3BpY2tsZS5weQpAQCAtMjQyLDMgKzI0MiwxMCBAQAogCiBmb3IgZXhjbmFtZSBpbiBQWVRIT04zX09TRVJST1JfRVhDRVBUSU9OUzoKICAgICBSRVZFUlNFX05BTUVfTUFQUElOR1soJ2J1aWx0aW5zJywgZXhjbmFtZSldID0gKCdleGNlcHRpb25zJywgJ09TRXJyb3InKQorCitQWVRIT04zX0lNUE9SVEVSUk9SX0VYQ0VQVElPTlMgPSAoCisgICAgJ01vZHVsZU5vdEZvdW5kRXJyb3InLAorKQorCitmb3IgZXhjbmFtZSBpbiBQWVRIT04zX0lNUE9SVEVSUk9SX0VYQ0VQVElPTlM6CisgICAgUkVWRVJTRV9OQU1FX01BUFBJTkdbKCdidWlsdGlucycsIGV4Y25hbWUpXSA9ICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpCmRpZmYgLS1naXQgYS9MaWIvX29zeF9zdXBwb3J0LnB5IGIvTGliL19vc3hfc3VwcG9ydC5weQppbmRleCAxM2ZjZDhiLi5lYWRmMDZmIDEwMDY0NAotLS0gYS9MaWIvX29zeF9zdXBwb3J0LnB5CisrKyBiL0xpYi9fb3N4X3N1cHBvcnQucHkKQEAgLTIxMCw3ICsyMTAsNyBAQAogICAgICAgICAjIERvIG5vdCBhbHRlciBhIGNvbmZpZyB2YXIgZXhwbGljaXRseSBvdmVycmlkZGVuIGJ5IGVudiB2YXIKICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQotICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKKyAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWFyY2hccytcdytccycsICcgJywgZmxhZ3MsIHJlLkFTQ0lJKQogICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdCBbXiBcdF0qJywgJyAnLCBmbGFncykKICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQogCkBAIC0yMzIsNyArMjMyLDcgQEAKICAgICBpZiAnQ0MnIGluIG9zLmVudmlyb246CiAgICAgICAgIHJldHVybiBfY29uZmlnX3ZhcnMKIAotICAgIGlmIHJlLnNlYXJjaCgnLWFyY2hccytwcGMnLCBfY29uZmlnX3ZhcnNbJ0NGTEFHUyddKSBpcyBub3QgTm9uZToKKyAgICBpZiByZS5zZWFyY2gocictYXJjaFxzK3BwYycsIF9jb25maWdfdmFyc1snQ0ZMQUdTJ10pIGlzIG5vdCBOb25lOgogICAgICAgICAjIE5PVEU6IENhbm5vdCB1c2Ugc3VicHJvY2VzcyBoZXJlIGJlY2F1c2Ugb2YgYm9vdHN0cmFwCiAgICAgICAgICMgaXNzdWVzIHdoZW4gYnVpbGRpbmcgUHl0aG9uIGl0c2VsZgogICAgICAgICBzdGF0dXMgPSBvcy5zeXN0ZW0oCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgICAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgogICAgICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CiAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytwcGNcdypccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWFyY2hccytwcGNcdypccycsICcgJywgZmxhZ3MpCiAgICAgICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQogCiAgICAgcmV0dXJuIF9jb25maWdfdmFycwpAQCAtMjY3LDcgKzI2Nyw3IEBACiAgICAgICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgogICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCAnLWFyY2gnIGluIF9jb25maWdfdmFyc1tjdl06CiAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKHInLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCiAgICAgICAgICAgICAgICAgZmxhZ3MgPSBmbGFncyArICcgJyArIGFyY2gKICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIApAQCAtNDY1LDcgKzQ2NSw3IEBACiAKICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwogCi0gICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCisgICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwocictYXJjaFxzKyhcUyspJywgY2ZsYWdzKQogICAgICAgICAgICAgYXJjaHMgPSB0dXBsZShzb3J0ZWQoc2V0KGFyY2hzKSkpCiAKICAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKZGlmZiAtLWdpdCBhL0xpYi9fcHlkZWNpbWFsLnB5IGIvTGliL19weWRlY2ltYWwucHkKaW5kZXggYTVlYTM0MC4uMGI0MDkyOCAxMDA2NDQKLS0tIGEvTGliL19weWRlY2ltYWwucHkKKysrIGIvTGliL19weWRlY2ltYWwucHkKQEAgLTE0OCw3ICsxNDgsNyBAQAogX19uYW1lX18gPSAnZGVjaW1hbCcgICAgIyBGb3IgcGlja2xpbmcKIF9fdmVyc2lvbl9fID0gJzEuNzAnICAgICMgSGlnaGVzdCB2ZXJzaW9uIG9mIHRoZSBzcGVjIHRoaXMgY29tcGxpZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsLwotX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjEiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCitfX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMiIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KIAogaW1wb3J0IG1hdGggYXMgX21hdGgKIGltcG9ydCBudW1iZXJzIGFzIF9udW1iZXJzCkBAIC01ODksNyArNTg5LDcgQEAKICAgICAgICAgIyBGcm9tIGEgc3RyaW5nCiAgICAgICAgICMgUkVzIGluc2lzdCBvbiByZWFsIHN0cmluZ3MsIHNvIHdlIGNhbiB0b28uCiAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpKQorICAgICAgICAgICAgbSA9IF9wYXJzZXIodmFsdWUuc3RyaXAoKS5yZXBsYWNlKCJfIiwgIiIpKQogICAgICAgICAgICAgaWYgbSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQpAQCAtMTAxMCw2ICsxMDEwLDU2IEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gRGVjaW1hbFR1cGxlKHNlbGYuX3NpZ24sIHR1cGxlKG1hcChpbnQsIHNlbGYuX2ludCkpLCBzZWxmLl9leHApCiAKKyAgICBkZWYgYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKKyAgICAgICAgIiIiRXhwcmVzcyBhIGZpbml0ZSBEZWNpbWFsIGluc3RhbmNlIGluIHRoZSBmb3JtIG4gLyBkLgorCisgICAgICAgIFJldHVybnMgYSBwYWlyIChuLCBkKSBvZiBpbnRlZ2Vycy4gIFdoZW4gY2FsbGVkIG9uIGFuIGluZmluaXR5CisgICAgICAgIG9yIE5hTiwgcmFpc2VzIE92ZXJmbG93RXJyb3Igb3IgVmFsdWVFcnJvciByZXNwZWN0aXZlbHkuCisKKyAgICAgICAgPj4+IERlY2ltYWwoJzMuMTQnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgKDE1NywgNTApCisgICAgICAgID4+PiBEZWNpbWFsKCctMTIzZTUnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgKC0xMjMwMDAwMCwgMSkKKyAgICAgICAgPj4+IERlY2ltYWwoJzAuMDAnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgKDAsIDEpCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX2lzX3NwZWNpYWw6CisgICAgICAgICAgICBpZiBzZWxmLmlzX25hbigpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIpCisKKyAgICAgICAgaWYgbm90IHNlbGY6CisgICAgICAgICAgICByZXR1cm4gMCwgMQorCisgICAgICAgICMgRmluZCBuLCBkIGluIGxvd2VzdCB0ZXJtcyBzdWNoIHRoYXQgYWJzKHNlbGYpID09IG4gLyBkOworICAgICAgICAjIHdlJ2xsIGRlYWwgd2l0aCB0aGUgc2lnbiBsYXRlci4KKyAgICAgICAgbiA9IGludChzZWxmLl9pbnQpCisgICAgICAgIGlmIHNlbGYuX2V4cCA+PSAwOgorICAgICAgICAgICAgIyBzZWxmIGlzIGFuIGludGVnZXIuCisgICAgICAgICAgICBuLCBkID0gbiAqIDEwKipzZWxmLl9leHAsIDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgRmluZCBkMiwgZDUgc3VjaCB0aGF0IGFicyhzZWxmKSA9IG4gLyAoMioqZDIgKiA1KipkNSkuCisgICAgICAgICAgICBkNSA9IC1zZWxmLl9leHAKKyAgICAgICAgICAgIHdoaWxlIGQ1ID4gMCBhbmQgbiAlIDUgPT0gMDoKKyAgICAgICAgICAgICAgICBuIC8vPSA1CisgICAgICAgICAgICAgICAgZDUgLT0gMQorCisgICAgICAgICAgICAjIChuICYgLW4pLmJpdF9sZW5ndGgoKSAtIDEgY291bnRzIHRyYWlsaW5nIHplcm9zIGluIGJpbmFyeQorICAgICAgICAgICAgIyByZXByZXNlbnRhdGlvbiBvZiBuIChwcm92aWRlZCBuIGlzIG5vbnplcm8pLgorICAgICAgICAgICAgZDIgPSAtc2VsZi5fZXhwCisgICAgICAgICAgICBzaGlmdDIgPSBtaW4oKG4gJiAtbikuYml0X2xlbmd0aCgpIC0gMSwgZDIpCisgICAgICAgICAgICBpZiBzaGlmdDI6CisgICAgICAgICAgICAgICAgbiA+Pj0gc2hpZnQyCisgICAgICAgICAgICAgICAgZDIgLT0gc2hpZnQyCisKKyAgICAgICAgICAgIGQgPSA1KipkNSA8PCBkMgorCisgICAgICAgIGlmIHNlbGYuX3NpZ246CisgICAgICAgICAgICBuID0gLW4KKyAgICAgICAgcmV0dXJuIG4sIGQKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgIiIiUmVwcmVzZW50cyB0aGUgbnVtYmVyIGFzIGFuIGluc3RhbmNlIG9mIERlY2ltYWwuIiIiCiAgICAgICAgICMgSW52YXJpYW50OiAgZXZhbChyZXByKGQpKSA9PSBkCkBAIC00MDc1LDcgKzQxMjUsNyBAQAogICAgICAgICBUaGlzIHdpbGwgbWFrZSBpdCByb3VuZCB1cCBmb3IgdGhhdCBvcGVyYXRpb24uCiAgICAgICAgICIiIgogICAgICAgICByb3VuZGluZyA9IHNlbGYucm91bmRpbmcKLSAgICAgICAgc2VsZi5yb3VuZGluZz0gdHlwZQorICAgICAgICBzZWxmLnJvdW5kaW5nID0gdHlwZQogICAgICAgICByZXR1cm4gcm91bmRpbmcKIAogICAgIGRlZiBjcmVhdGVfZGVjaW1hbChzZWxmLCBudW09JzAnKToKQEAgLTQwODQsMTAgKzQxMzQsMTAgQEAKICAgICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUKICAgICAgICAgSUJNIERlY2ltYWwgc3BlY2lmaWNhdGlvbi4iIiIKIAotICAgICAgICBpZiBpc2luc3RhbmNlKG51bSwgc3RyKSBhbmQgbnVtICE9IG51bS5zdHJpcCgpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG51bSwgc3RyKSBhbmQgKG51bSAhPSBudW0uc3RyaXAoKSBvciAnXycgaW4gbnVtKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yYWlzZV9lcnJvcihDb252ZXJzaW9uU3ludGF4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyB0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJtaXR0ZWQuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZGVyc2NvcmVzIGFyZSBub3QgcGVybWl0dGVkLiIpCiAKICAgICAgICAgZCA9IERlY2ltYWwobnVtLCBjb250ZXh0PXNlbGYpCiAgICAgICAgIGlmIGQuX2lzbmFuKCkgYW5kIGxlbihkLl9pbnQpID4gc2VsZi5wcmVjIC0gc2VsZi5jbGFtcDoKZGlmZiAtLWdpdCBhL0xpYi9fcHlpby5weSBiL0xpYi9fcHlpby5weQppbmRleCAwZDk4Yjc0Li5kMDk0N2YwIDEwMDY0NAotLS0gYS9MaWIvX3B5aW8ucHkKKysrIGIvTGliL19weWlvLnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IGFiYwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCi1pbXBvcnQgYXJyYXkKIGltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCiAjIEltcG9ydCBfdGhyZWFkIGluc3RlYWQgb2YgdGhyZWFkaW5nIHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKQEAgLTE2MSw2ICsxNjAsOCBAQAogICAgIG9wZW5lZCBpbiBhIHRleHQgbW9kZSwgYW5kIGZvciBieXRlcyBhIEJ5dGVzSU8gY2FuIGJlIHVzZWQgbGlrZSBhIGZpbGUKICAgICBvcGVuZWQgaW4gYSBiaW5hcnkgbW9kZS4KICAgICAiIiIKKyAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlLCBpbnQpOgorICAgICAgICBmaWxlID0gb3MuZnNwYXRoKGZpbGUpCiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZSwgKHN0ciwgYnl0ZXMsIGludCkpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZmlsZTogJXIiICUgZmlsZSkKICAgICBpZiBub3QgaXNpbnN0YW5jZShtb2RlLCBzdHIpOgpAQCAtMTgyLDggKzE4Myw4IEBACiAgICAgdGV4dCA9ICJ0IiBpbiBtb2RlcwogICAgIGJpbmFyeSA9ICJiIiBpbiBtb2RlcwogICAgIGlmICJVIiBpbiBtb2RlczoKLSAgICAgICAgaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmc6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCB1c2UgVSBhbmQgd3JpdGluZyBtb2RlIGF0IG9uY2UiKQorICAgICAgICBpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZyBvciB1cGRhdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1vZGUgVSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAneCcsICd3JywgJ2EnLCBvciAnKyciKQogICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgd2FybmluZ3Mud2FybigiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQpAQCAtMTUxNiw3ICsxNTE3LDcgQEAKICAgICAgICAgaWYgc2VsZi5fZmQgPj0gMCBhbmQgc2VsZi5fY2xvc2VmZCBhbmQgbm90IHNlbGYuY2xvc2VkOgogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCd1bmNsb3NlZCBmaWxlICVyJyAlIChzZWxmLCksIFJlc291cmNlV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIsIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL19zdHJwdGltZS5weSBiL0xpYi9fc3RycHRpbWUucHkKaW5kZXggZjg0MjI3Yi4uZmU5NDM2MSAxMDA2NDQKLS0tIGEvTGliL19zdHJwdGltZS5weQorKysgYi9MaWIvX3N0cnB0aW1lLnB5CkBAIC0xOTksMTIgKzE5OSwxNSBAQAogICAgICAgICAgICAgJ2YnOiByIig/UDxmPlswLTldezEsNn0pIiwKICAgICAgICAgICAgICdIJzogciIoP1A8SD4yWzAtM118WzAtMV1cZHxcZCkiLAogICAgICAgICAgICAgJ0knOiByIig/UDxJPjFbMC0yXXwwWzEtOV18WzEtOV0pIiwKKyAgICAgICAgICAgICdHJzogciIoP1A8Rz5cZFxkXGRcZCkiLAogICAgICAgICAgICAgJ2onOiByIig/UDxqPjM2WzAtNl18M1swLTVdXGR8WzEtMl1cZFxkfDBbMS05XVxkfDAwWzEtOV18WzEtOV1cZHwwWzEtOV18WzEtOV0pIiwKICAgICAgICAgICAgICdtJzogciIoP1A8bT4xWzAtMl18MFsxLTldfFsxLTldKSIsCiAgICAgICAgICAgICAnTSc6IHIiKD9QPE0+WzAtNV1cZHxcZCkiLAogICAgICAgICAgICAgJ1MnOiByIig/UDxTPjZbMC0xXXxbMC01XVxkfFxkKSIsCiAgICAgICAgICAgICAnVSc6IHIiKD9QPFU+NVswLTNdfFswLTRdXGR8XGQpIiwKICAgICAgICAgICAgICd3JzogciIoP1A8dz5bMC02XSkiLAorICAgICAgICAgICAgJ3UnOiByIig/UDx1PlsxLTddKSIsCisgICAgICAgICAgICAnVic6IHIiKD9QPFY+NVswLTNdfDBbMS05XXxbMS00XVxkfFxkKSIsCiAgICAgICAgICAgICAjIFcgaXMgc2V0IGJlbG93IGJ5IHVzaW5nICdVJwogICAgICAgICAgICAgJ3knOiByIig/UDx5PlxkXGQpIiwKICAgICAgICAgICAgICNYWFg6IERvZXMgJ1knIG5lZWQgdG8gd29ycnkgYWJvdXQgaGF2aW5nIGxlc3Mgb3IgbW9yZSB0aGFuCkBAIC0yOTksNiArMzAyLDIyIEBACiAgICAgICAgIHJldHVybiAxICsgZGF5c190b193ZWVrICsgZGF5X29mX3dlZWsKIAogCitkZWYgX2NhbGNfanVsaWFuX2Zyb21fVihpc29feWVhciwgaXNvX3dlZWssIGlzb193ZWVrZGF5KToKKyAgICAiIiJDYWxjdWxhdGUgdGhlIEp1bGlhbiBkYXkgYmFzZWQgb24gdGhlIElTTyA4NjAxIHllYXIsIHdlZWssIGFuZCB3ZWVrZGF5LgorICAgIElTTyB3ZWVrcyBzdGFydCBvbiBNb25kYXlzLCB3aXRoIHdlZWsgMDEgYmVpbmcgdGhlIHdlZWsgY29udGFpbmluZyA0IEphbi4KKyAgICBJU08gd2VlayBkYXlzIHJhbmdlIGZyb20gMSAoTW9uZGF5KSB0byA3IChTdW5kYXkpLgorICAgICIiIgorICAgIGNvcnJlY3Rpb24gPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCA0KS5pc293ZWVrZGF5KCkgKyAzCisgICAgb3JkaW5hbCA9IChpc29fd2VlayAqIDcpICsgaXNvX3dlZWtkYXkgLSBjb3JyZWN0aW9uCisgICAgIyBvcmRpbmFsIG1heSBiZSBuZWdhdGl2ZSBvciAwIG5vdywgd2hpY2ggbWVhbnMgdGhlIGRhdGUgaXMgaW4gdGhlIHByZXZpb3VzCisgICAgIyBjYWxlbmRhciB5ZWFyCisgICAgaWYgb3JkaW5hbCA8IDE6CisgICAgICAgIG9yZGluYWwgKz0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgMSkudG9vcmRpbmFsKCkKKyAgICAgICAgaXNvX3llYXIgLT0gMQorICAgICAgICBvcmRpbmFsIC09IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDEpLnRvb3JkaW5hbCgpCisgICAgcmV0dXJuIGlzb195ZWFyLCBvcmRpbmFsCisKKwogZGVmIF9zdHJwdGltZShkYXRhX3N0cmluZywgZm9ybWF0PSIlYSAlYiAlZCAlSDolTTolUyAlWSIpOgogICAgICIiIlJldHVybiBhIDItdHVwbGUgY29uc2lzdGluZyBvZiBhIHRpbWUgc3RydWN0IGFuZCBhbiBpbnQgY29udGFpbmluZwogICAgIHRoZSBudW1iZXIgb2YgbWljcm9zZWNvbmRzIGJhc2VkIG9uIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZQpAQCAtMzQ1LDE1ICszNjQsMTUgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5jb252ZXJ0ZWQgZGF0YSByZW1haW5zOiAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cmluZ1tmb3VuZC5lbmQoKTpdKQogCi0gICAgeWVhciA9IE5vbmUKKyAgICBpc29feWVhciA9IHllYXIgPSBOb25lCiAgICAgbW9udGggPSBkYXkgPSAxCiAgICAgaG91ciA9IG1pbnV0ZSA9IHNlY29uZCA9IGZyYWN0aW9uID0gMAogICAgIHR6ID0gLTEKICAgICB0em9mZnNldCA9IE5vbmUKICAgICAjIERlZmF1bHQgdG8gLTEgdG8gc2lnbmlmeSB0aGF0IHZhbHVlcyBub3Qga25vd247IG5vdCBjcml0aWNhbCB0byBoYXZlLAogICAgICMgdGhvdWdoCi0gICAgd2Vla19vZl95ZWFyID0gLTEKLSAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSAtMQorICAgIGlzb193ZWVrID0gd2Vla19vZl95ZWFyID0gTm9uZQorICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IE5vbmUKICAgICAjIHdlZWtkYXkgYW5kIGp1bGlhbiBkZWZhdWx0ZWQgdG8gTm9uZSBzbyBhcyB0byBzaWduYWwgbmVlZCB0byBjYWxjdWxhdGUKICAgICAjIHZhbHVlcwogICAgIHdlZWtkYXkgPSBqdWxpYW4gPSBOb25lCkBAIC0zNzUsNiArMzk0LDggQEAKICAgICAgICAgICAgICAgICB5ZWFyICs9IDE5MDAKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ1knOgogICAgICAgICAgICAgeWVhciA9IGludChmb3VuZF9kaWN0WydZJ10pCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdHJzoKKyAgICAgICAgICAgIGlzb195ZWFyID0gaW50KGZvdW5kX2RpY3RbJ0cnXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ20nOgogICAgICAgICAgICAgbW9udGggPSBpbnQoZm91bmRfZGljdFsnbSddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnQic6CkBAIC00MjAsNiArNDQxLDkgQEAKICAgICAgICAgICAgICAgICB3ZWVrZGF5ID0gNgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB3ZWVrZGF5IC09IDEKKyAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ3UnOgorICAgICAgICAgICAgd2Vla2RheSA9IGludChmb3VuZF9kaWN0Wyd1J10pCisgICAgICAgICAgICB3ZWVrZGF5IC09IDEKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ2onOgogICAgICAgICAgICAganVsaWFuID0gaW50KGZvdW5kX2RpY3RbJ2onXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgaW4gKCdVJywgJ1cnKToKQEAgLTQzMCw2ICs0NTQsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIFcgc3RhcnRzIHdlZWsgb24gTW9uZGF5LgogICAgICAgICAgICAgICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IDAKKyAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ1YnOgorICAgICAgICAgICAgaXNvX3dlZWsgPSBpbnQoZm91bmRfZGljdFsnViddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAneic6CiAgICAgICAgICAgICB6ID0gZm91bmRfZGljdFsneiddCiAgICAgICAgICAgICB0em9mZnNldCA9IGludCh6WzE6M10pICogNjAgKyBpbnQoelszOjVdKQpAQCAtNDUwLDMyICs0NzYsNjEgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHR6ID0gdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgIyBEZWFsIHdpdGggdGhlIGNhc2VzIHdoZXJlIGFtYmlndWl0aWVzIGFyaXplCisgICAgIyBkb24ndCBhc3N1bWUgZGVmYXVsdCB2YWx1ZXMgZm9yIElTTyB3ZWVrL3llYXIKKyAgICBpZiB5ZWFyIGlzIE5vbmUgYW5kIGlzb195ZWFyIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBpc29fd2VlayBpcyBOb25lIG9yIHdlZWtkYXkgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB5ZWFyIGRpcmVjdGl2ZSAnJUcnIG11c3QgYmUgdXNlZCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBhbmQgYSB3ZWVrZGF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGl2ZSAoJyVBJywgJyVhJywgJyV3Jywgb3IgJyV1JykuIikKKyAgICAgICAgaWYganVsaWFuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRGF5IG9mIHRoZSB5ZWFyIGRpcmVjdGl2ZSAnJWonIGlzIG5vdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wYXRpYmxlIHdpdGggSVNPIHllYXIgZGlyZWN0aXZlICclRycuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVzZSAnJVknIGluc3RlYWQuIikKKyAgICBlbGlmIHdlZWtfb2ZfeWVhciBpcyBOb25lIGFuZCBpc29fd2VlayBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd2Vla2RheSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHdlZWsgZGlyZWN0aXZlICclVicgbXVzdCBiZSB1c2VkIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIElTTyB5ZWFyIGRpcmVjdGl2ZSAnJUcnIGFuZCBhIHdlZWtkYXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aXZlICgnJUEnLCAnJWEnLCAnJXcnLCBvciAnJXUnKS4iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHdlZWsgZGlyZWN0aXZlICclVicgaXMgaW5jb21wYXRpYmxlIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHllYXIgZGlyZWN0aXZlICclWScuIFVzZSB0aGUgSVNPIHllYXIgJyVHJyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0ZWFkLiIpCisKICAgICBsZWFwX3llYXJfZml4ID0gRmFsc2UKICAgICBpZiB5ZWFyIGlzIE5vbmUgYW5kIG1vbnRoID09IDIgYW5kIGRheSA9PSAyOToKICAgICAgICAgeWVhciA9IDE5MDQgICMgMTkwNCBpcyBmaXJzdCBsZWFwIHllYXIgb2YgMjB0aCBjZW50dXJ5CiAgICAgICAgIGxlYXBfeWVhcl9maXggPSBUcnVlCiAgICAgZWxpZiB5ZWFyIGlzIE5vbmU6CiAgICAgICAgIHllYXIgPSAxOTAwCisKKwogICAgICMgSWYgd2Uga25vdyB0aGUgd2VlayBvZiB0aGUgeWVhciBhbmQgd2hhdCBkYXkgb2YgdGhhdCB3ZWVrLCB3ZSBjYW4gZmlndXJlCiAgICAgIyBvdXQgdGhlIEp1bGlhbiBkYXkgb2YgdGhlIHllYXIuCi0gICAgaWYganVsaWFuIGlzIE5vbmUgYW5kIHdlZWtfb2ZfeWVhciAhPSAtMSBhbmQgd2Vla2RheSBpcyBub3QgTm9uZToKLSAgICAgICAgd2Vla19zdGFydHNfTW9uID0gVHJ1ZSBpZiB3ZWVrX29mX3llYXJfc3RhcnQgPT0gMCBlbHNlIEZhbHNlCi0gICAgICAgIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1Vfb3JfVyh5ZWFyLCB3ZWVrX29mX3llYXIsIHdlZWtkYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtfc3RhcnRzX01vbikKLSAgICAgICAgaWYganVsaWFuIDw9IDA6CisgICAgaWYganVsaWFuIGlzIE5vbmUgYW5kIHdlZWtkYXkgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHdlZWtfb2ZfeWVhciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdlZWtfc3RhcnRzX01vbiA9IFRydWUgaWYgd2Vla19vZl95ZWFyX3N0YXJ0ID09IDAgZWxzZSBGYWxzZQorICAgICAgICAgICAganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVV9vcl9XKHllYXIsIHdlZWtfb2ZfeWVhciwgd2Vla2RheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlZWtfc3RhcnRzX01vbikKKyAgICAgICAgZWxpZiBpc29feWVhciBpcyBub3QgTm9uZSBhbmQgaXNvX3dlZWsgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB5ZWFyLCBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9WKGlzb195ZWFyLCBpc29fd2Vlaywgd2Vla2RheSArIDEpCisgICAgICAgIGlmIGp1bGlhbiBpcyBub3QgTm9uZSBhbmQganVsaWFuIDw9IDA6CiAgICAgICAgICAgICB5ZWFyIC09IDEKICAgICAgICAgICAgIHlkYXkgPSAzNjYgaWYgY2FsZW5kYXIuaXNsZWFwKHllYXIpIGVsc2UgMzY1CiAgICAgICAgICAgICBqdWxpYW4gKz0geWRheQotICAgICMgQ2Fubm90IHByZS1jYWxjdWxhdGUgZGF0ZXRpbWVfZGF0ZSgpIHNpbmNlIGNhbiBjaGFuZ2UgaW4gSnVsaWFuCi0gICAgIyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBjb3VsZCBoYXZlIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIGRheSBvZiB0aGUgd2VlawotICAgICMgY2FsY3VsYXRpb24uCisKICAgICBpZiBqdWxpYW4gaXMgTm9uZToKKyAgICAgICAgIyBDYW5ub3QgcHJlLWNhbGN1bGF0ZSBkYXRldGltZV9kYXRlKCkgc2luY2UgY2FuIGNoYW5nZSBpbiBKdWxpYW4KKyAgICAgICAgIyBjYWxjdWxhdGlvbiBhbmQgdGh1cyBjb3VsZCBoYXZlIGRpZmZlcmVudCB2YWx1ZSBmb3IgdGhlIGRheSBvZgorICAgICAgICAjIHRoZSB3ZWVrIGNhbGN1bGF0aW9uLgogICAgICAgICAjIE5lZWQgdG8gYWRkIDEgdG8gcmVzdWx0IHNpbmNlIGZpcnN0IGRheSBvZiB0aGUgeWVhciBpcyAxLCBub3QgMC4KICAgICAgICAganVsaWFuID0gZGF0ZXRpbWVfZGF0ZSh5ZWFyLCBtb250aCwgZGF5KS50b29yZGluYWwoKSAtIFwKICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lX2RhdGUoeWVhciwgMSwgMSkudG9vcmRpbmFsKCkgKyAxCi0gICAgZWxzZTogICMgQXNzdW1lIHRoYXQgaWYgdGhleSBib3RoZXJlZCB0byBpbmNsdWRlIEp1bGlhbiBkYXkgaXQgd2lsbAotICAgICAgICAgICAjIGJlIGFjY3VyYXRlLgotICAgICAgICBkYXRldGltZV9yZXN1bHQgPSBkYXRldGltZV9kYXRlLmZyb21vcmRpbmFsKChqdWxpYW4gLSAxKSArIGRhdGV0aW1lX2RhdGUoeWVhciwgMSwgMSkudG9vcmRpbmFsKCkpCisgICAgZWxzZTogICMgQXNzdW1lIHRoYXQgaWYgdGhleSBib3RoZXJlZCB0byBpbmNsdWRlIEp1bGlhbiBkYXkgKG9yIGlmIGl0IHdhcworICAgICAgICAgICAjIGNhbGN1bGF0ZWQgYWJvdmUgd2l0aCB5ZWFyL3dlZWsvd2Vla2RheSkgaXQgd2lsbCBiZSBhY2N1cmF0ZS4KKyAgICAgICAgZGF0ZXRpbWVfcmVzdWx0ID0gZGF0ZXRpbWVfZGF0ZS5mcm9tb3JkaW5hbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoanVsaWFuIC0gMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGV0aW1lX2RhdGUoeWVhciwgMSwgMSkudG9vcmRpbmFsKCkpCiAgICAgICAgIHllYXIgPSBkYXRldGltZV9yZXN1bHQueWVhcgogICAgICAgICBtb250aCA9IGRhdGV0aW1lX3Jlc3VsdC5tb250aAogICAgICAgICBkYXkgPSBkYXRldGltZV9yZXN1bHQuZGF5CmRpZmYgLS1naXQgYS9MaWIvYWlmYy5weSBiL0xpYi9haWZjLnB5CmluZGV4IDdlYmRiZWIuLjY5MmQwYmYgMTAwNjQ0Ci0tLSBhL0xpYi9haWZjLnB5CisrKyBiL0xpYi9haWZjLnB5CkBAIC0yNTcsNiArMjU3LDE1IEBACiBfYWlmY19wYXJhbXMgPSBuYW1lZHR1cGxlKCdfYWlmY19wYXJhbXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnbmNoYW5uZWxzIHNhbXB3aWR0aCBmcmFtZXJhdGUgbmZyYW1lcyBjb21wdHlwZSBjb21wbmFtZScpCiAKK19haWZjX3BhcmFtcy5uY2hhbm5lbHMuX19kb2NfXyA9ICdOdW1iZXIgb2YgYXVkaW8gY2hhbm5lbHMgKDEgZm9yIG1vbm8sIDIgZm9yIHN0ZXJlbyknCitfYWlmY19wYXJhbXMuc2FtcHdpZHRoLl9fZG9jX18gPSAnU2FtcGxlIHdpZHRoIGluIGJ5dGVzJworX2FpZmNfcGFyYW1zLmZyYW1lcmF0ZS5fX2RvY19fID0gJ1NhbXBsaW5nIGZyZXF1ZW5jeScKK19haWZjX3BhcmFtcy5uZnJhbWVzLl9fZG9jX18gPSAnTnVtYmVyIG9mIGF1ZGlvIGZyYW1lcycKK19haWZjX3BhcmFtcy5jb21wdHlwZS5fX2RvY19fID0gJ0NvbXByZXNzaW9uIHR5cGUgKCJOT05FIiBmb3IgQUlGRiBmaWxlcyknCitfYWlmY19wYXJhbXMuY29tcG5hbWUuX19kb2NfXyA9ICgiIiJcCitBIGh1bWFuLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNvbXByZXNzaW9uIHR5cGUKKygnbm90IGNvbXByZXNzZWQnIGZvciBBSUZGIGZpbGVzKSIiIikKKwogCiBjbGFzcyBBaWZjX3JlYWQ6CiAgICAgIyBWYXJpYWJsZXMgdXNlZCBpbiB0aGlzIGNsYXNzOgpkaWZmIC0tZ2l0IGEvTGliL2FyZ3BhcnNlLnB5IGIvTGliL2FyZ3BhcnNlLnB5CmluZGV4IDlhMDY3MTkuLjIwOWI0ZTkgMTAwNjQ0Ci0tLSBhL0xpYi9hcmdwYXJzZS5weQorKysgYi9MaWIvYXJncGFyc2UucHkKQEAgLTExOCwxMCArMTE4LDE2IEBACiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICB0eXBlX25hbWUgPSB0eXBlKHNlbGYpLl9fbmFtZV9fCiAgICAgICAgIGFyZ19zdHJpbmdzID0gW10KKyAgICAgICAgc3Rhcl9hcmdzID0ge30KICAgICAgICAgZm9yIGFyZyBpbiBzZWxmLl9nZXRfYXJncygpOgogICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKHJlcHIoYXJnKSkKICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX2dldF9rd2FyZ3MoKToKLSAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgIGlmIG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdGFyX2FyZ3NbbmFtZV0gPSB2YWx1ZQorICAgICAgICBpZiBzdGFyX2FyZ3M6CisgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyoqJXMnICUgcmVwcihzdGFyX2FyZ3MpKQogICAgICAgICByZXR1cm4gJyVzKCVzKScgJSAodHlwZV9uYW1lLCAnLCAnLmpvaW4oYXJnX3N0cmluZ3MpKQogCiAgICAgZGVmIF9nZXRfa3dhcmdzKHNlbGYpOgpAQCAtMjA0LDggKzIxMCw2IEBACiAgICAgICAgICAgICBpZiBzZWxmLnBhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdHRlci5faW5kZW50KCkKICAgICAgICAgICAgIGpvaW4gPSBzZWxmLmZvcm1hdHRlci5fam9pbl9wYXJ0cwotICAgICAgICAgICAgZm9yIGZ1bmMsIGFyZ3MgaW4gc2VsZi5pdGVtczoKLSAgICAgICAgICAgICAgICBmdW5jKCphcmdzKQogICAgICAgICAgICAgaXRlbV9oZWxwID0gam9pbihbZnVuYygqYXJncykgZm9yIGZ1bmMsIGFyZ3MgaW4gc2VsZi5pdGVtc10pCiAgICAgICAgICAgICBpZiBzZWxmLnBhcmVudCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdHRlci5fZGVkZW50KCkKZGlmZiAtLWdpdCBhL0xpYi9hc3QucHkgYi9MaWIvYXN0LnB5CmluZGV4IDAxNzA0NzIuLjE1NmExZjIgMTAwNjQ0Ci0tLSBhL0xpYi9hc3QucHkKKysrIGIvTGliL2FzdC5weQpAQCAtMzUsNiArMzUsOCBAQAogICAgIHJldHVybiBjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIFB5Q0ZfT05MWV9BU1QpCiAKIAorX05VTV9UWVBFUyA9IChpbnQsIGZsb2F0LCBjb21wbGV4KQorCiBkZWYgbGl0ZXJhbF9ldmFsKG5vZGVfb3Jfc3RyaW5nKToKICAgICAiIiIKICAgICBTYWZlbHkgZXZhbHVhdGUgYW4gZXhwcmVzc2lvbiBub2RlIG9yIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBQeXRob24KQEAgLTQ3LDcgKzQ5LDkgQEAKICAgICBpZiBpc2luc3RhbmNlKG5vZGVfb3Jfc3RyaW5nLCBFeHByZXNzaW9uKToKICAgICAgICAgbm9kZV9vcl9zdHJpbmcgPSBub2RlX29yX3N0cmluZy5ib2R5CiAgICAgZGVmIF9jb252ZXJ0KG5vZGUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIChTdHIsIEJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgQ29uc3RhbnQpOgorICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWUKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIChTdHIsIEJ5dGVzKSk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS5zCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBOdW0pOgogICAgICAgICAgICAgcmV0dXJuIG5vZGUubgpAQCAtNjIsMjQgKzY2LDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB6aXAobm9kZS5rZXlzLCBub2RlLnZhbHVlcykpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBOYW1lQ29uc3RhbnQpOgogICAgICAgICAgICAgcmV0dXJuIG5vZGUudmFsdWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFVuYXJ5T3ApIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wLCAoVUFkZCwgVVN1YikpIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wZXJhbmQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSk6CisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBVbmFyeU9wKSBhbmQgaXNpbnN0YW5jZShub2RlLm9wLCAoVUFkZCwgVVN1YikpOgogICAgICAgICAgICAgb3BlcmFuZCA9IF9jb252ZXJ0KG5vZGUub3BlcmFuZCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgVUFkZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICsgb3BlcmFuZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gLSBvcGVyYW5kCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBCaW5PcCkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3AsIChBZGQsIFN1YikpIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLnJpZ2h0LCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLmxlZnQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9wZXJhbmQsIF9OVU1fVFlQRVMpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgVUFkZCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiArIG9wZXJhbmQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLSBvcGVyYW5kCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBCaW5PcCkgYW5kIGlzaW5zdGFuY2Uobm9kZS5vcCwgKEFkZCwgU3ViKSk6CiAgICAgICAgICAgICBsZWZ0ID0gX2NvbnZlcnQobm9kZS5sZWZ0KQogICAgICAgICAgICAgcmlnaHQgPSBfY29udmVydChub2RlLnJpZ2h0KQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBBZGQpOgotICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgLSByaWdodAorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsZWZ0LCBfTlVNX1RZUEVTKSBhbmQgaXNpbnN0YW5jZShyaWdodCwgX05VTV9UWVBFUyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBBZGQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgLSByaWdodAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdtYWxmb3JtZWQgbm9kZSBvciBzdHJpbmc6ICcgKyByZXByKG5vZGUpKQogICAgIHJldHVybiBfY29udmVydChub2RlX29yX3N0cmluZykKIApAQCAtMTk2LDEyICsxOTcsMTkgQEAKICAgICAiIiIKICAgICBpZiBub3QgaXNpbnN0YW5jZShub2RlLCAoQXN5bmNGdW5jdGlvbkRlZiwgRnVuY3Rpb25EZWYsIENsYXNzRGVmLCBNb2R1bGUpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlciBjYW4ndCBoYXZlIGRvY3N0cmluZ3MiICUgbm9kZS5fX2NsYXNzX18uX19uYW1lX18pCi0gICAgaWYgbm9kZS5ib2R5IGFuZCBpc2luc3RhbmNlKG5vZGUuYm9keVswXSwgRXhwcikgYW5kIFwKLSAgICAgICBpc2luc3RhbmNlKG5vZGUuYm9keVswXS52YWx1ZSwgU3RyKToKLSAgICAgICAgaWYgY2xlYW46Ci0gICAgICAgICAgICBpbXBvcnQgaW5zcGVjdAotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3QuY2xlYW5kb2Mobm9kZS5ib2R5WzBdLnZhbHVlLnMpCi0gICAgICAgIHJldHVybiBub2RlLmJvZHlbMF0udmFsdWUucworICAgIGlmIG5vdChub2RlLmJvZHkgYW5kIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLCBFeHByKSk6CisgICAgICAgIHJldHVybgorICAgIG5vZGUgPSBub2RlLmJvZHlbMF0udmFsdWUKKyAgICBpZiBpc2luc3RhbmNlKG5vZGUsIFN0cik6CisgICAgICAgIHRleHQgPSBub2RlLnMKKyAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQ29uc3RhbnQpIGFuZCBpc2luc3RhbmNlKG5vZGUudmFsdWUsIHN0cik6CisgICAgICAgIHRleHQgPSBub2RlLnZhbHVlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuCisgICAgaWYgY2xlYW46CisgICAgICAgIGltcG9ydCBpbnNwZWN0CisgICAgICAgIHRleHQgPSBpbnNwZWN0LmNsZWFuZG9jKHRleHQpCisgICAgcmV0dXJuIHRleHQKIAogCiBkZWYgd2Fsayhub2RlKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCBmNzI4ZDFiLi5mYzExNDZhIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC0yODUsMzUgKzI4NSw2IEBACiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKIAotY2xhc3MgZmlmbzoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbGlzdD1Ob25lKToKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ2ZpZm8gY2xhc3Mgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICBpZiBub3QgbGlzdDoKLSAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubGlzdCA9IGRlcXVlKGxpc3QpCi0KLSAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLmxpc3QpCi0KLSAgICBkZWYgaXNfZW1wdHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBub3Qgc2VsZi5saXN0Ci0KLSAgICBkZWYgZmlyc3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmxpc3RbMF0KLQotICAgIGRlZiBwdXNoKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxpc3QuYXBwZW5kKGRhdGEpCi0KLSAgICBkZWYgcG9wKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmxpc3Q6Ci0gICAgICAgICAgICByZXR1cm4gKDEsIHNlbGYubGlzdC5wb3BsZWZ0KCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gKDAsIE5vbmUpCi0KLQogIyBHaXZlbiAnaGF5c3RhY2snLCBzZWUgaWYgYW55IHByZWZpeCBvZiAnbmVlZGxlJyBpcyBhdCBpdHMgZW5kLiAgVGhpcwogIyBhc3N1bWVzIGFuIGV4YWN0IG1hdGNoIGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZC4gIFJldHVybiB0aGUgbnVtYmVyIG9mCiAjIGNoYXJhY3RlcnMgbWF0Y2hlZC4KZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkKaW5kZXggYjNlMzE4ZS4uNTg4MDA2MSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkKQEAgLTM0OCw2ICszNDgsOSBAQAogICAgICAgICBzZWxmLl9hc3luY2dlbnMuZGlzY2FyZChhZ2VuKQogICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3Rhc2soYWdlbi5hY2xvc2UoKSkKKyAgICAgICAgICAgICMgV2FrZSB1cCB0aGUgbG9vcCBpZiB0aGUgZmluYWxpemVyIHdhcyBjYWxsZWQgZnJvbQorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCB0aHJlYWQuCisgICAgICAgICAgICBzZWxmLl93cml0ZV90b19zZWxmKCkKIAogICAgIGRlZiBfYXN5bmNnZW5fZmlyc3RpdGVyX2hvb2soc2VsZiwgYWdlbik6CiAgICAgICAgIGlmIHNlbGYuX2FzeW5jZ2Vuc19zaHV0ZG93bl9jYWxsZWQ6CkBAIC00ODUsNyArNDg4LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weSBiL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQppbmRleCAyMzc0MmExLi5hMDBkOWQ1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CkBAIC0xMjcsNyArMTI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIGdldF9waWQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5IGIvTGliL2FzeW5jaW8vZnV0dXJlcy5weQppbmRleCBiY2Q0ZDE2Li5iNTcxMTMwIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Z1dHVyZXMucHkKQEAgLTIsNyArMiw3IEBACiAKIF9fYWxsX18gPSBbJ0NhbmNlbGxlZEVycm9yJywgJ1RpbWVvdXRFcnJvcicsCiAgICAgICAgICAgICdJbnZhbGlkU3RhdGVFcnJvcicsCi0gICAgICAgICAgICdGdXR1cmUnLCAnd3JhcF9mdXR1cmUnLAorICAgICAgICAgICAnRnV0dXJlJywgJ3dyYXBfZnV0dXJlJywgJ2lzZnV0dXJlJwogICAgICAgICAgICBdCiAKIGltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMuX2Jhc2UKQEAgLTEyMCw2ICsxMjAsNDYgQEAKICAgICByZXR1cm4gZ2V0YXR0cihvYmosICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnLCBOb25lKSBpcyBub3QgTm9uZQogCiAKK2RlZiBfZm9ybWF0X2NhbGxiYWNrcyhjYik6CisgICAgIiIiaGVscGVyIGZ1bmN0aW9uIGZvciBGdXR1cmUuX19yZXByX18iIiIKKyAgICBzaXplID0gbGVuKGNiKQorICAgIGlmIG5vdCBzaXplOgorICAgICAgICBjYiA9ICcnCisKKyAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKKyAgICAgICAgcmV0dXJuIGV2ZW50cy5fZm9ybWF0X2NhbGxiYWNrX3NvdXJjZShjYWxsYmFjaywgKCkpCisKKyAgICBpZiBzaXplID09IDE6CisgICAgICAgIGNiID0gZm9ybWF0X2NiKGNiWzBdKQorICAgIGVsaWYgc2l6ZSA9PSAyOgorICAgICAgICBjYiA9ICd7fSwge30nLmZvcm1hdChmb3JtYXRfY2IoY2JbMF0pLCBmb3JtYXRfY2IoY2JbMV0pKQorICAgIGVsaWYgc2l6ZSA+IDI6CisgICAgICAgIGNiID0gJ3t9LCA8e30gbW9yZT4sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXSkpCisgICAgcmV0dXJuICdjYj1bJXNdJyAlIGNiCisKKworZGVmIF9mdXR1cmVfcmVwcl9pbmZvKGZ1dHVyZSk6CisgICAgIyAoRnV0dXJlKSAtPiBzdHIKKyAgICAiIiJoZWxwZXIgZnVuY3Rpb24gZm9yIEZ1dHVyZS5fX3JlcHJfXyIiIgorICAgIGluZm8gPSBbZnV0dXJlLl9zdGF0ZS5sb3dlcigpXQorICAgIGlmIGZ1dHVyZS5fc3RhdGUgPT0gX0ZJTklTSEVEOgorICAgICAgICBpZiBmdXR1cmUuX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGNlcHRpb249eyFyfScuZm9ybWF0KGZ1dHVyZS5fZXhjZXB0aW9uKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LCBlc3BlY2lhbGx5CisgICAgICAgICAgICAjIGZvciB2ZXJ5IGxvbmcgc3RyaW5ncworICAgICAgICAgICAgcmVzdWx0ID0gcmVwcmxpYi5yZXByKGZ1dHVyZS5fcmVzdWx0KQorICAgICAgICAgICAgaW5mby5hcHBlbmQoJ3Jlc3VsdD17fScuZm9ybWF0KHJlc3VsdCkpCisgICAgaWYgZnV0dXJlLl9jYWxsYmFja3M6CisgICAgICAgIGluZm8uYXBwZW5kKF9mb3JtYXRfY2FsbGJhY2tzKGZ1dHVyZS5fY2FsbGJhY2tzKSkKKyAgICBpZiBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2s6CisgICAgICAgIGZyYW1lID0gZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQorICAgICAgICBpbmZvLmFwcGVuZCgnY3JlYXRlZCBhdCAlczolcycgJSAoZnJhbWVbMF0sIGZyYW1lWzFdKSkKKyAgICByZXR1cm4gaW5mbworCisKIGNsYXNzIEZ1dHVyZToKICAgICAiIiJUaGlzIGNsYXNzIGlzICphbG1vc3QqIGNvbXBhdGlibGUgd2l0aCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLgogCkBAIC0xNzIsNDUgKzIxMiwxMCBAQAogICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgc2VsZi5fc291cmNlX3RyYWNlYmFjayA9IHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKHN5cy5fZ2V0ZnJhbWUoMSkpCiAKLSAgICBkZWYgX19mb3JtYXRfY2FsbGJhY2tzKHNlbGYpOgotICAgICAgICBjYiA9IHNlbGYuX2NhbGxiYWNrcwotICAgICAgICBzaXplID0gbGVuKGNiKQotICAgICAgICBpZiBub3Qgc2l6ZToKLSAgICAgICAgICAgIGNiID0gJycKLQotICAgICAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKLSAgICAgICAgICAgIHJldHVybiBldmVudHMuX2Zvcm1hdF9jYWxsYmFja19zb3VyY2UoY2FsbGJhY2ssICgpKQotCi0gICAgICAgIGlmIHNpemUgPT0gMToKLSAgICAgICAgICAgIGNiID0gZm9ybWF0X2NiKGNiWzBdKQotICAgICAgICBlbGlmIHNpemUgPT0gMjoKLSAgICAgICAgICAgIGNiID0gJ3t9LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksIGZvcm1hdF9jYihjYlsxXSkpCi0gICAgICAgIGVsaWYgc2l6ZSA+IDI6Ci0gICAgICAgICAgICBjYiA9ICd7fSwgPHt9IG1vcmU+LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXSkpCi0gICAgICAgIHJldHVybiAnY2I9WyVzXScgJSBjYgotCi0gICAgZGVmIF9yZXByX2luZm8oc2VsZik6Ci0gICAgICAgIGluZm8gPSBbc2VsZi5fc3RhdGUubG93ZXIoKV0KLSAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gX0ZJTklTSEVEOgotICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGNlcHRpb249eyFyfScuZm9ybWF0KHNlbGYuX2V4Y2VwdGlvbikpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LCBlc3BlY2lhbGx5Ci0gICAgICAgICAgICAgICAgIyBmb3IgdmVyeSBsb25nIHN0cmluZ3MKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXBybGliLnJlcHIoc2VsZi5fcmVzdWx0KQotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdyZXN1bHQ9e30nLmZvcm1hdChyZXN1bHQpKQotICAgICAgICBpZiBzZWxmLl9jYWxsYmFja3M6Ci0gICAgICAgICAgICBpbmZvLmFwcGVuZChzZWxmLl9fZm9ybWF0X2NhbGxiYWNrcygpKQotICAgICAgICBpZiBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrOgotICAgICAgICAgICAgZnJhbWUgPSBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2NyZWF0ZWQgYXQgJXM6JXMnICUgKGZyYW1lWzBdLCBmcmFtZVsxXSkpCi0gICAgICAgIHJldHVybiBpbmZvCisgICAgX3JlcHJfaW5mbyA9IF9mdXR1cmVfcmVwcl9pbmZvCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGluZm8gPSBzZWxmLl9yZXByX2luZm8oKQotICAgICAgICByZXR1cm4gJzwlcyAlcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnICcuam9pbihpbmZvKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJyAnLmpvaW4oc2VsZi5fcmVwcl9pbmZvKCkpKQogCiAgICAgIyBPbiBQeXRob24gMy4zIGFuZCBvbGRlciwgb2JqZWN0cyB3aXRoIGEgZGVzdHJ1Y3RvciBwYXJ0IG9mIGEgcmVmZXJlbmNlCiAgICAgIyBjeWNsZSBhcmUgbmV2ZXIgZGVzdHJveWVkLiBJdCdzIG5vdCBtb3JlIHRoZSBjYXNlIG9uIFB5dGhvbiAzLjQgdGhhbmtzCkBAIC0yNDIsMTAgKzI0NywxMCBAQAogICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBfUEVORElORzoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBzZWxmLl9zdGF0ZSA9IF9DQU5DRUxMRUQKLSAgICAgICAgc2VsZi5fc2NoZWR1bGVfY2FsbGJhY2tzKCkKKyAgICAgICAgc2VsZi5fX3NjaGVkdWxlX2NhbGxiYWNrcygpCiAgICAgICAgIHJldHVybiBUcnVlCiAKLSAgICBkZWYgX3NjaGVkdWxlX2NhbGxiYWNrcyhzZWxmKToKKyAgICBkZWYgX19zY2hlZHVsZV9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgICIiIkludGVybmFsOiBBc2sgdGhlIGV2ZW50IGxvb3AgdG8gY2FsbCBhbGwgY2FsbGJhY2tzLgogCiAgICAgICAgIFRoZSBjYWxsYmFja3MgYXJlIHNjaGVkdWxlZCB0byBiZSBjYWxsZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4gQWxzbwpAQCAtMzQ3LDcgKzM1Miw3IEBACiAgICAgICAgICAgICByYWlzZSBJbnZhbGlkU3RhdGVFcnJvcigne306IHshcn0nLmZvcm1hdChzZWxmLl9zdGF0ZSwgc2VsZikpCiAgICAgICAgIHNlbGYuX3Jlc3VsdCA9IHJlc3VsdAogICAgICAgICBzZWxmLl9zdGF0ZSA9IF9GSU5JU0hFRAotICAgICAgICBzZWxmLl9zY2hlZHVsZV9jYWxsYmFja3MoKQorICAgICAgICBzZWxmLl9fc2NoZWR1bGVfY2FsbGJhY2tzKCkKIAogICAgIGRlZiBzZXRfZXhjZXB0aW9uKHNlbGYsIGV4Y2VwdGlvbik6CiAgICAgICAgICIiIk1hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgYW4gZXhjZXB0aW9uLgpAQCAtMzY0LDcgKzM2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBjYW5ub3QgYmUgcmFpc2VkIGludG8gYSBGdXR1cmUiKQogICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBleGNlcHRpb24KICAgICAgICAgc2VsZi5fc3RhdGUgPSBfRklOSVNIRUQKLSAgICAgICAgc2VsZi5fc2NoZWR1bGVfY2FsbGJhY2tzKCkKKyAgICAgICAgc2VsZi5fX3NjaGVkdWxlX2NhbGxiYWNrcygpCiAgICAgICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICAgICAgc2VsZi5fbG9nX3RyYWNlYmFjayA9IFRydWUKICAgICAgICAgZWxzZToKQEAgLTM4NCw2ICszODksMTAgQEAKICAgICAgICAgX19hd2FpdF9fID0gX19pdGVyX18gIyBtYWtlIGNvbXBhdGlibGUgd2l0aCAnYXdhaXQnIGV4cHJlc3Npb24KIAogCisjIE5lZWRlZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KK19QeUZ1dHVyZSA9IEZ1dHVyZQorCisKIGRlZiBfc2V0X3Jlc3VsdF91bmxlc3NfY2FuY2VsbGVkKGZ1dCwgcmVzdWx0KToKICAgICAiIiJIZWxwZXIgc2V0dGluZyB0aGUgcmVzdWx0IG9ubHkgaWYgdGhlIGZ1dHVyZSB3YXMgbm90IGNhbmNlbGxlZC4iIiIKICAgICBpZiBmdXQuY2FuY2VsbGVkKCk6CkBAIC00NzYsMyArNDg1LDEyIEBACiAgICAgbmV3X2Z1dHVyZSA9IGxvb3AuY3JlYXRlX2Z1dHVyZSgpCiAgICAgX2NoYWluX2Z1dHVyZShmdXR1cmUsIG5ld19mdXR1cmUpCiAgICAgcmV0dXJuIG5ld19mdXR1cmUKKworCit0cnk6CisgICAgaW1wb3J0IF9hc3luY2lvCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcworZWxzZToKKyAgICAjIF9DRnV0dXJlIGlzIG5lZWRlZCBmb3IgdGVzdHMuCisgICAgRnV0dXJlID0gX0NGdXR1cmUgPSBfYXN5bmNpby5GdXR1cmUKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQppbmRleCBmZWYzMjA1Li5mZjEyODc3IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CkBAIC05Miw3ICs5Miw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fc29jayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CmluZGV4IDEyZDM1N2IuLjlkYmU1NTAgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKQEAgLTYyNyw3ICs2MjcsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NvY2sgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5fc29jay5jbG9zZSgpCiAKICAgICBkZWYgX2ZhdGFsX2Vycm9yKHNlbGYsIGV4YywgbWVzc2FnZT0nRmF0YWwgZXJyb3Igb24gdHJhbnNwb3J0Jyk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9zc2xwcm90by5weSBiL0xpYi9hc3luY2lvL3NzbHByb3RvLnB5CmluZGV4IDgwNGM1YzMuLjk5MWM3N2IgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3NzbHByb3RvLnB5CisrKyBiL0xpYi9hc3luY2lvL3NzbHByb3RvLnB5CkBAIC0zMzEsNyArMzMxLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIHBhdXNlX3JlYWRpbmcoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5IGIvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQppbmRleCAzMDdmZmZjLi5mZGQzYmEwIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CisrKyBiL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKQEAgLTExOSwxMCArMTE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0JywgJ3Rlc3RfYXN5bmNpbycpCiAgICAgICAgIGtleWZpbGUgPSBvcy5wYXRoLmpvaW4oaGVyZSwgJ3NzbF9rZXkucGVtJykKICAgICAgICAgY2VydGZpbGUgPSBvcy5wYXRoLmpvaW4oaGVyZSwgJ3NzbF9jZXJ0LnBlbScpCi0gICAgICAgIHNzb2NrID0gc3NsLndyYXBfc29ja2V0KHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlKQorCisgICAgICAgIHNzb2NrID0gY29udGV4dC53cmFwX3NvY2tldChyZXF1ZXN0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLlJlcXVlc3RIYW5kbGVyQ2xhc3Moc3NvY2ssIGNsaWVudF9hZGRyZXNzLCBzZWxmKQogICAgICAgICAgICAgc3NvY2suY2xvc2UoKQpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkgYi9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQppbmRleCA2NWI2MWRiLi4yODQzNjc4IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQpAQCAtNDExLDcgKzQxMSw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9waXBlLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpOgpAQCAtNjExLDcgKzYxMiw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9waXBlLmNsb3NlKCkKIAogICAgIGRlZiBhYm9ydChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKaW5kZXggNjY4ZmUxNC4uYjc3N2RkMCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKQEAgLTE3MSw4ICsxNzEsMTMgQEAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIl9XYWl0Q2FuY2VsRnV0dXJlIG11c3Qgbm90IGJlIGNhbmNlbGxlZCIpCiAKLSAgICBkZWYgX3NjaGVkdWxlX2NhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc3VwZXIoX1dhaXRDYW5jZWxGdXR1cmUsIHNlbGYpLl9zY2hlZHVsZV9jYWxsYmFja3MoKQorICAgIGRlZiBzZXRfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHN1cGVyKCkuc2V0X3Jlc3VsdChyZXN1bHQpCisgICAgICAgIGlmIHNlbGYuX2RvbmVfY2FsbGJhY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9kb25lX2NhbGxiYWNrKHNlbGYpCisKKyAgICBkZWYgc2V0X2V4Y2VwdGlvbihzZWxmLCBleGNlcHRpb24pOgorICAgICAgICBzdXBlcigpLnNldF9leGNlcHRpb24oZXhjZXB0aW9uKQogICAgICAgICBpZiBzZWxmLl9kb25lX2NhbGxiYWNrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFjayhzZWxmKQogCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5IGIvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQppbmRleCA4NzBjZDEzLi43YzYzZmI5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CisrKyBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKQEAgLTE1OSw3ICsxNTksOCBAQAogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNvcmUucHkgYi9MaWIvYXN5bmNvcmUucHkKaW5kZXggM2I1MWYwZi4uNzA1ZTQwNiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jb3JlLnB5CisrKyBiL0xpYi9hc3luY29yZS5weQpAQCAtMzMzLDcgKzMzMyw3IEBACiAgICAgICAgIHNlbGYuY29ubmVjdGluZyA9IFRydWUKICAgICAgICAgZXJyID0gc2VsZi5zb2NrZXQuY29ubmVjdF9leChhZGRyZXNzKQogICAgICAgICBpZiBlcnIgaW4gKEVJTlBST0dSRVNTLCBFQUxSRUFEWSwgRVdPVUxEQkxPQ0spIFwKLSAgICAgICAgb3IgZXJyID09IEVJTlZBTCBhbmQgb3MubmFtZSBpbiAoJ250JywgJ2NlJyk6CisgICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHJlc3MKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBlcnIgaW4gKDAsIEVJU0NPTk4pOgpAQCAtNTk1LDcgKzU5NSw4IEBACiAKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLmZkID49IDA6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgICAgIGRlZiByZWN2KHNlbGYsICphcmdzKToKZGlmZiAtLWdpdCBhL0xpYi9iYXNlNjQucHkgYi9MaWIvYmFzZTY0LnB5CmluZGV4IGFkYWVjMWQuLjU4ZjZhZDYgMTAwNzU1Ci0tLSBhL0xpYi9iYXNlNjQucHkKKysrIGIvTGliL2Jhc2U2NC5weQpAQCAtNTUsOCArNTUsNyBAQAogICAgIGFsdGVybmF0aXZlIGFscGhhYmV0IGZvciB0aGUgJysnIGFuZCAnLycgY2hhcmFjdGVycy4gIFRoaXMgYWxsb3dzIGFuCiAgICAgYXBwbGljYXRpb24gdG8gZS5nLiBnZW5lcmF0ZSB1cmwgb3IgZmlsZXN5c3RlbSBzYWZlIEJhc2U2NCBzdHJpbmdzLgogICAgICIiIgotICAgICMgU3RyaXAgb2ZmIHRoZSB0cmFpbGluZyBuZXdsaW5lCi0gICAgZW5jb2RlZCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQocylbOi0xXQorICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMsIG5ld2xpbmU9RmFsc2UpCiAgICAgaWYgYWx0Y2hhcnMgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCiAgICAgICAgIHJldHVybiBlbmNvZGVkLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYicrLycsIGFsdGNoYXJzKSkKQEAgLTE1Niw3ICsxNTUsNyBAQAogICAgIGxlZnRvdmVyID0gbGVuKHMpICUgNQogICAgICMgUGFkIHRoZSBsYXN0IHF1YW50dW0gd2l0aCB6ZXJvIGJpdHMgaWYgbmVjZXNzYXJ5CiAgICAgaWYgbGVmdG92ZXI6Ci0gICAgICAgIHMgPSBzICsgYnl0ZXMoNSAtIGxlZnRvdmVyKSAgIyBEb24ndCB1c2UgKz0gIQorICAgICAgICBzID0gcyArIGInXDAnICogKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKICAgICBlbmNvZGVkID0gYnl0ZWFycmF5KCkKICAgICBmcm9tX2J5dGVzID0gaW50LmZyb21fYnl0ZXMKICAgICBiMzJ0YWIyID0gX2IzMnRhYjIKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IGJjNzhjNTQuLjZmNTYzMjggMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTEsNiArMTEsNyBAQAogCiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBvcGVuIGFzIF9idWlsdGluX29wZW4KIGltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBfY29tcHJlc3Npb24KIApAQCAtNDIsOSArNDMsOSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpOgogICAgICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlLgogCi0gICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgaXQgZ2l2ZXMgdGhlIG5hbWUKLSAgICAgICAgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0LAotICAgICAgICB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgorICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciwgYnl0ZXMsIG9yIFBhdGhMaWtlIG9iamVjdCwgaXQgZ2l2ZXMgdGhlCisgICAgICAgIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgICAgICAgb2JqZWN0LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgogCiAgICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywKICAgICAgICAgJ3gnIGZvciBjcmVhdGluZyBleGNsdXNpdmVseSwgb3IgJ2EnIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbgpAQCAtOTEsNyArOTIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICAgICAgc2VsZi5fZnAgPSBfYnVpbHRpbl9vcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKQEAgLTk5LDcgKzEwMCw3IEBACiAgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyLCBieXRlcywgZmlsZSBvciBQYXRoTGlrZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLApAQCAtMjg5LDggKzI5MCw5IEBACiAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLSAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMKLSAgICBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyLCBieXRlcywgb3IKKyAgICBQYXRoTGlrZSBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUKKyAgICB0by4KIAogICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgIngiLCAieGIiLCAiYSIgb3IKICAgICAiYWIiIGZvciBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiwgInh0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuCmRpZmYgLS1naXQgYS9MaWIvY2FsZW5kYXIucHkgYi9MaWIvY2FsZW5kYXIucHkKaW5kZXggYjU0NzJmMy4uOTIxNDliNyAxMDA2NDQKLS0tIGEvTGliL2NhbGVuZGFyLnB5CisrKyBiL0xpYi9jYWxlbmRhci5weQpAQCAtMTMsNyArMTMsOSBAQAogX19hbGxfXyA9IFsiSWxsZWdhbE1vbnRoRXJyb3IiLCAiSWxsZWdhbFdlZWtkYXlFcnJvciIsICJzZXRmaXJzdHdlZWtkYXkiLAogICAgICAgICAgICAiZmlyc3R3ZWVrZGF5IiwgImlzbGVhcCIsICJsZWFwZGF5cyIsICJ3ZWVrZGF5IiwgIm1vbnRocmFuZ2UiLAogICAgICAgICAgICAibW9udGhjYWxlbmRhciIsICJwcm1vbnRoIiwgIm1vbnRoIiwgInByY2FsIiwgImNhbGVuZGFyIiwKLSAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiXQorICAgICAgICAgICAidGltZWdtIiwgIm1vbnRoX25hbWUiLCAibW9udGhfYWJiciIsICJkYXlfbmFtZSIsICJkYXlfYWJiciIsCisgICAgICAgICAgICJDYWxlbmRhciIsICJUZXh0Q2FsZW5kYXIiLCAiSFRNTENhbGVuZGFyIiwgIkxvY2FsZVRleHRDYWxlbmRhciIsCisgICAgICAgICAgICJMb2NhbGVIVE1MQ2FsZW5kYXIiLCAid2Vla2hlYWRlciJdCiAKICMgRXhjZXB0aW9uIHJhaXNlZCBmb3IgYmFkIGlucHV0ICh3aXRoIHN0cmluZyBwYXJhbWV0ZXIgZm9yIGRldGFpbHMpCiBlcnJvciA9IFZhbHVlRXJyb3IKQEAgLTYwNCw1MSArNjA2LDYzIEBACiAKIAogZGVmIG1haW4oYXJncyk6Ci0gICAgaW1wb3J0IG9wdHBhcnNlCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgW29wdGlvbnNdIFt5ZWFyIFttb250aF1dIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBpbXBvcnQgYXJncGFyc2UKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgdGV4dGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgndGV4dCBvbmx5IGFyZ3VtZW50cycpCisgICAgaHRtbGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnaHRtbCBvbmx5IGFyZ3VtZW50cycpCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi13IiwgIi0td2lkdGgiLAotICAgICAgICBkZXN0PSJ3aWR0aCIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MiwKLSAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MiwKKyAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMikiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItbCIsICItLWxpbmVzIiwKLSAgICAgICAgZGVzdD0ibGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTEsCi0gICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTEsCisgICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXMiLCAiLS1zcGFjaW5nIiwKLSAgICAgICAgZGVzdD0ic3BhY2luZyIsIHR5cGU9ImludCIsIGRlZmF1bHQ9NiwKLSAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2LCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD02LAorICAgICAgICBoZWxwPSJzcGFjaW5nIGJldHdlZW4gbW9udGhzIChkZWZhdWx0IDYpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLW0iLCAiLS1tb250aHMiLAotICAgICAgICBkZXN0PSJtb250aHMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsCi0gICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTMsCisgICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBodG1sZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWMiLCAiLS1jc3MiLAotICAgICAgICBkZXN0PSJjc3MiLCBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAotICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIChodG1sIG9ubHkpIgorICAgICAgICBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAorICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLUwiLCAiLS1sb2NhbGUiLAotICAgICAgICBkZXN0PSJsb2NhbGUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgaGVscD0ibG9jYWxlIHRvIGJlIHVzZWQgZnJvbSBtb250aCBhbmQgd2Vla2RheSBuYW1lcyIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1lIiwgIi0tZW5jb2RpbmciLAotICAgICAgICBkZXN0PSJlbmNvZGluZyIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0iRW5jb2RpbmcgdG8gdXNlIGZvciBvdXRwdXQuIgorICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgIGhlbHA9ImVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0IgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXQiLCAiLS10eXBlIiwKLSAgICAgICAgZGVzdD0idHlwZSIsIGRlZmF1bHQ9InRleHQiLAorICAgICAgICBkZWZhdWx0PSJ0ZXh0IiwKICAgICAgICAgY2hvaWNlcz0oInRleHQiLCAiaHRtbCIpLAogICAgICAgICBoZWxwPSJvdXRwdXQgdHlwZSAodGV4dCBvciBodG1sKSIKICAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgInllYXIiLAorICAgICAgICBuYXJncz0nPycsIHR5cGU9aW50LAorICAgICAgICBoZWxwPSJ5ZWFyIG51bWJlciAoMS05OTk5KSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIm1vbnRoIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ibW9udGggbnVtYmVyICgxLTEyLCB0ZXh0IG9ubHkpIgorICAgICkKIAotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3NbMTpdKQogCiAgICAgaWYgb3B0aW9ucy5sb2NhbGUgYW5kIG5vdCBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICBwYXJzZXIuZXJyb3IoImlmIC0tbG9jYWxlIGlzIHNwZWNpZmllZCAtLWVuY29kaW5nIGlzIHJlcXVpcmVkIikKQEAgLTY2NiwxMCArNjgwLDEwIEBACiAgICAgICAgICAgICBlbmNvZGluZyA9IHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQogICAgICAgICBvcHRkaWN0ID0gZGljdChlbmNvZGluZz1lbmNvZGluZywgY3NzPW9wdGlvbnMuY3NzKQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShkYXRldGltZS5kYXRlLnRvZGF5KCkueWVhciwgKipvcHRkaWN0KSkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgd3JpdGUoY2FsLmZvcm1hdHllYXJwYWdlKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhcnNlci5lcnJvcigiaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKQEAgLTY3OSwxOCArNjkzLDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjYWwgPSBUZXh0Q2FsZW5kYXIoKQogICAgICAgICBvcHRkaWN0ID0gZGljdCh3PW9wdGlvbnMud2lkdGgsIGw9b3B0aW9ucy5saW5lcykKLSAgICAgICAgaWYgbGVuKGFyZ3MpICE9IDM6CisgICAgICAgIGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKICAgICAgICAgICAgIG9wdGRpY3RbImMiXSA9IG9wdGlvbnMuc3BhY2luZwogICAgICAgICAgICAgb3B0ZGljdFsibSJdID0gb3B0aW9ucy5tb250aHMKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDE6CisgICAgICAgIGlmIG9wdGlvbnMueWVhciBpcyBOb25lOgogICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGludChhcmdzWzFdKSwgKipvcHRkaWN0KQotICAgICAgICBlbGlmIGxlbihhcmdzKSA9PSAzOgotICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKGludChhcmdzWzFdKSwgaW50KGFyZ3NbMl0pLCAqKm9wdGRpY3QpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIob3B0aW9ucy55ZWFyLCAqKm9wdGRpY3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0bW9udGgob3B0aW9ucy55ZWFyLCBvcHRpb25zLm1vbnRoLCAqKm9wdGRpY3QpCiAgICAgICAgIHdyaXRlID0gc3lzLnN0ZG91dC53cml0ZQogICAgICAgICBpZiBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmVuY29kZShvcHRpb25zLmVuY29kaW5nKQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggMTg5YzZkNS4uMjMzYTQ5NiAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC00NSw3ICs0NSw3IEBACiAKIF9fYWxsX18gPSBbIk1pbmlGaWVsZFN0b3JhZ2UiLCAiRmllbGRTdG9yYWdlIiwKICAgICAgICAgICAgInBhcnNlIiwgInBhcnNlX3FzIiwgInBhcnNlX3FzbCIsICJwYXJzZV9tdWx0aXBhcnQiLAotICAgICAgICAgICAicGFyc2VfaGVhZGVyIiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKKyAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJ0ZXN0IiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKICAgICAgICAgICAgInByaW50X2Zvcm0iLCAicHJpbnRfZGlyZWN0b3J5IiwgInByaW50X2FyZ3VtZW50cyIsCiAgICAgICAgICAgICJwcmludF9lbnZpcm9uX3VzYWdlIiwgImVzY2FwZSJdCiAKZGlmZiAtLWdpdCBhL0xpYi9jb2RlLnB5IGIvTGliL2NvZGUucHkKaW5kZXggNTMyNDRlMy4uMjMyOTVmNCAxMDA2NDQKLS0tIGEvTGliL2NvZGUucHkKKysrIGIvTGliL2NvZGUucHkKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICAiIiJSZXNldCB0aGUgaW5wdXQgYnVmZmVyLiIiIgogICAgICAgICBzZWxmLmJ1ZmZlciA9IFtdCiAKLSAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUpOgorICAgIGRlZiBpbnRlcmFjdChzZWxmLCBiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4KIAogICAgICAgICBUaGUgb3B0aW9uYWwgYmFubmVyIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYmFubmVyIHRvIHByaW50CkBAIC0xOTYsNiArMTk2LDExIEBACiAgICAgICAgIHRvIGNvbmZ1c2UgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28KICAgICAgICAgY2xvc2UhKS4KIAorICAgICAgICBUaGUgb3B0aW9uYWwgZXhpdG1zZyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGV4aXQgbWVzc2FnZQorICAgICAgICBwcmludGVkIHdoZW4gZXhpdGluZy4gUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzCisgICAgICAgIHByaW50aW5nIGFuIGV4aXQgbWVzc2FnZS4gSWYgZXhpdG1zZyBpcyBub3QgZ2l2ZW4gb3IgTm9uZSwKKyAgICAgICAgYSBkZWZhdWx0IG1lc3NhZ2UgaXMgcHJpbnRlZC4KKwogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnBzMQpAQCAtMjMwLDYgKzIzNSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIlxuS2V5Ym9hcmRJbnRlcnJ1cHRcbiIpCiAgICAgICAgICAgICAgICAgc2VsZi5yZXNldGJ1ZmZlcigpCiAgICAgICAgICAgICAgICAgbW9yZSA9IDAKKyAgICAgICAgaWYgZXhpdG1zZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnbm93IGV4aXRpbmcgJXMuLi5cbicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAgICAgZWxpZiBleGl0bXNnICE9ICcnOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnJXNcbicgJSBleGl0bXNnKQogCiAgICAgZGVmIHB1c2goc2VsZiwgbGluZSk6CiAgICAgICAgICIiIlB1c2ggYSBsaW5lIHRvIHRoZSBpbnRlcnByZXRlci4KQEAgLTI2Nyw3ICsyNzYsNyBAQAogCiAKIAotZGVmIGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lKToKK2RlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAiIiJDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlci4KIAogICAgIFRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdGhlIEludGVyYWN0aXZlQ29uc29sZQpAQCAtMjc5LDYgKzI4OCw3IEBACiAgICAgYmFubmVyIC0tIHBhc3NlZCB0byBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoKQogICAgIHJlYWRmdW5jIC0tIGlmIG5vdCBOb25lLCByZXBsYWNlcyBJbnRlcmFjdGl2ZUNvbnNvbGUucmF3X2lucHV0KCkKICAgICBsb2NhbCAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVJbnRlcnByZXRlci5fX2luaXRfXygpCisgICAgZXhpdG1zZyAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKIAogICAgICIiIgogICAgIGNvbnNvbGUgPSBJbnRlcmFjdGl2ZUNvbnNvbGUobG9jYWwpCkBAIC0yODksNyArMjk5LDcgQEAKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIpCisgICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIsIGV4aXRtc2cpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBlYmU4ZWU3Li5iY2M0MjkxIDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICB7bmFtZX0gPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoe2luZGV4OmR9KSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIHtpbmRleDpkfScpCiAnJycKIAotZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpOgorZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UsIG1vZHVsZT1Ob25lKToKICAgICAiIiJSZXR1cm5zIGEgbmV3IHN1YmNsYXNzIG9mIHR1cGxlIHdpdGggbmFtZWQgZmllbGRzLgogCiAgICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQpAQCAtMzkzLDcgKzM5Myw3IEBACiAgICAgICAgICAgICAgICAgZmllbGRfbmFtZXNbaW5kZXhdID0gJ18lZCcgJSBpbmRleAogICAgICAgICAgICAgc2Vlbi5hZGQobmFtZSkKICAgICBmb3IgbmFtZSBpbiBbdHlwZW5hbWVdICsgZmllbGRfbmFtZXM6Ci0gICAgICAgIGlmIHR5cGUobmFtZSkgIT0gc3RyOgorICAgICAgICBpZiB0eXBlKG5hbWUpIGlzIG5vdCBzdHI6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgc3RyaW5ncycpCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgbXVzdCBiZSB2YWxpZCAnCkBAIC00MzQsMTEgKzQzNCwxNSBAQAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9ubWVudHMgd2hlcmUKICAgICAjIHN5cy5fZ2V0ZnJhbWUgaXMgbm90IGRlZmluZWQgKEp5dGhvbiBmb3IgZXhhbXBsZSkgb3Igc3lzLl9nZXRmcmFtZSBpcyBub3QKLSAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbikuCi0gICAgdHJ5OgotICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKLSAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgcGFzcworICAgICMgZGVmaW5lZCBmb3IgYXJndW1lbnRzIGdyZWF0ZXIgdGhhbiAwIChJcm9uUHl0aG9uKSwgb3Igd2hlcmUgdGhlIHVzZXIgaGFzCisgICAgIyBzcGVjaWZpZWQgYSBwYXJ0aWN1bGFyIG1vZHVsZS4KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kdWxlID0gX3N5cy5fZ2V0ZnJhbWUoMSkuZl9nbG9iYWxzLmdldCgnX19uYW1lX18nLCAnX19tYWluX18nKQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBtb2R1bGUgaXMgbm90IE5vbmU6CisgICAgICAgIHJlc3VsdC5fX21vZHVsZV9fID0gbW9kdWxlCiAKICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTg0Miw3ICs4NDYsNyBAQAogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIgYW5kIHN0cmluZy5UZW1wbGF0ZSkKKyMjIyAgQ2hhaW5NYXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CkBAIC05NjksNyArOTczLDcgQEAKICAgICAgICAgICAgIGRpY3QgPSBrd2FyZ3MucG9wKCdkaWN0JykKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiUGFzc2luZyAnZGljdCcgYXMga2V5d29yZCBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpY3QgPSBOb25lCiAgICAgICAgIHNlbGYuZGF0YSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2M2UzOGUuLjAwMDAwMDAKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTaW1wbGUgdGVzdHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCi1Qb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotcCA9IFBvaW50KHg9MTAsIHk9MjApCi1hc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKLQotIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLWNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQotCi1mb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgotICAgIHByaW50IChwKQotCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKLSAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi1wcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKLQotUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQotcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi1pbXBvcnQgZG9jdGVzdCwgY29sbGVjdGlvbnMKLVRlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCi1wcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKGNvbGxlY3Rpb25zKSkpCmRpZmYgLS1naXQgYS9MaWIvY29tcGlsZWFsbC5weSBiL0xpYi9jb21waWxlYWxsLnB5CmluZGV4IDBjYzBjMWQuLjNlNDU3ODUgMTAwNjQ0Ci0tLSBhL0xpYi9jb21waWxlYWxsLnB5CisrKyBiL0xpYi9jb21waWxlYWxsLnB5CkBAIC0yNSw2ICsyNSw4IEBACiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKIGRlZiBfd2Fsa19kaXIoZGlyLCBkZGlyPU5vbmUsIG1heGxldmVscz0xMCwgcXVpZXQ9MCk6CisgICAgaWYgcXVpZXQgPCAyIGFuZCBpc2luc3RhbmNlKGRpciwgb3MuUGF0aExpa2UpOgorICAgICAgICBkaXIgPSBvcy5mc3BhdGgoZGlyKQogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgpAQCAtNjgsNyArNzAsNyBAQAogICAgICIiIgogICAgIGZpbGVzID0gX3dhbGtfZGlyKGRpciwgcXVpZXQ9cXVpZXQsIG1heGxldmVscz1tYXhsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1kZGlyKQotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKICAgICBpZiB3b3JrZXJzIGlzIG5vdCBOb25lIGFuZCB3b3JrZXJzICE9IDEgYW5kIFByb2Nlc3NQb29sRXhlY3V0b3IgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmIHdvcmtlcnMgPCAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignd29ya2VycyBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMCcpCkBAIC04MSwxMiArODMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3k9bGVnYWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMpCi0gICAgICAgICAgICBzdWNjZXNzID0gbWluKHJlc3VsdHMsIGRlZmF1bHQ9MSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtaW4ocmVzdWx0cywgZGVmYXVsdD1UcnVlKQogICAgIGVsc2U6CiAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmaWxlLCBkZGlyLCBmb3JjZSwgcngsIHF1aWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3ksIG9wdGltaXplKToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgIHJldHVybiBzdWNjZXNzCiAKIGRlZiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsCkBAIC0xMDQsNyArMTA2LDkgQEAKICAgICBsZWdhY3k6ICAgIGlmIFRydWUsIHByb2R1Y2UgbGVnYWN5IHB5YyBwYXRocyBpbnN0ZWFkIG9mIFBFUCAzMTQ3IHBhdGhzCiAgICAgb3B0aW1pemU6ICBvcHRpbWl6YXRpb24gbGV2ZWwgb3IgLTEgZm9yIGxldmVsIG9mIHRoZSBpbnRlcnByZXRlcgogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKKyAgICBpZiBxdWlldCA8IDIgYW5kIGlzaW5zdGFuY2UoZnVsbG5hbWUsIG9zLlBhdGhMaWtlKToKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5mc3BhdGgoZnVsbG5hbWUpCiAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZnVsbG5hbWUpCiAgICAgaWYgZGRpciBpcyBub3QgTm9uZToKICAgICAgICAgZGZpbGUgPSBvcy5wYXRoLmpvaW4oZGRpciwgbmFtZSkKQEAgLTE0NCw3ICsxNDgsNyBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBpZiBxdWlldCA+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+OiB0b28gbWFueSBpbml0aWFsaXplcnMiKQogCiAgICAgZGVmIHRlc3RfaHVnZV9maWVsZF9uYW1lKHNlbGYpOgogICAgICAgICAjIGlzc3VlMTI4ODE6IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKaW5kZXggNWEzYTQ3Zi4uZTcxYjQ4MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQpAQCAtNzksOSArNzksOSBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoKGVudHJ5Lm5hbWUuZGVjb2RlKCJhc2NpaSIpLCBlbnRyeS5zaXplKSkKIAotICAgICAgICBleHBlY3RlZCA9IFsoIl9faGVsbG9fXyIsIDE2MSksCi0gICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXyIsIC0xNjEpLAotICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18uc3BhbSIsIDE2MSksCisgICAgICAgIGV4cGVjdGVkID0gWygiX19oZWxsb19fIiwgMTM5KSwKKyAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fIiwgLTEzOSksCisgICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXy5zcGFtIiwgMTM5KSwKICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1zLCBleHBlY3RlZCwgIlB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgZXhhbXBsZSAiCiAgICAgICAgICAgICAiaW4gRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBtYXkgYmUgb3V0IG9mIGRhdGUiKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy91dGlsLnB5IGIvTGliL2N0eXBlcy91dGlsLnB5CmluZGV4IDc2ODRlYWIuLjMzOWFlOGEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdXRpbC5weQorKysgYi9MaWIvY3R5cGVzL3V0aWwucHkKQEAgLTY3LDE2ICs2Nyw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGZuYW1lCiAgICAgICAgIHJldHVybiBOb25lCiAKLWlmIG9zLm5hbWUgPT0gImNlIjoKLSAgICAjIHNlYXJjaCBwYXRoIGFjY29yZGluZyB0byBNU0ROOgotICAgICMgLSBhYnNvbHV0ZSBwYXRoIHNwZWNpZmllZCBieSBmaWxlbmFtZQotICAgICMgLSBUaGUgLmV4ZSBsYXVuY2ggZGlyZWN0b3J5Ci0gICAgIyAtIHRoZSBXaW5kb3dzIGRpcmVjdG9yeQotICAgICMgLSBST00gZGxsIGZpbGVzICh3aGVyZSBhcmUgdGhleT8pCi0gICAgIyAtIE9FTSBzcGVjaWZpZWQgc2VhcmNoIHBhdGg6IEhLTE1cTG9hZGVyXFN5c3RlbVBhdGgKLSAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgotICAgICAgICByZXR1cm4gbmFtZQotCiBpZiBvcy5uYW1lID09ICJwb3NpeCIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICBmcm9tIGN0eXBlcy5tYWNob2xpYi5keWxkIGltcG9ydCBkeWxkX2ZpbmQgYXMgX2R5bGRfZmluZAogICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6CkBAIC0yNzEsOCArMjYxLDggQEAKICAgICAgICAgICAgIGFiaV90eXBlID0gbWFjaF9tYXAuZ2V0KG1hY2hpbmUsICdsaWJjNicpCiAKICAgICAgICAgICAgICMgWFhYIGFzc3VtaW5nIEdMSUJDJ3MgbGRjb25maWcgKHdpdGggb3B0aW9uIC1wKQotICAgICAgICAgICAgcmVnZXggPSBvcy5mc2VuY29kZSgKLSAgICAgICAgICAgICAgICAnXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCisgICAgICAgICAgICByZWdleCA9IHInXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycKKyAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUocmVnZXggJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKFsnL3NiaW4vbGRjb25maWcnLCAnLXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLApAQCAtMjg1LDggKzI3NSwzMiBAQAogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgICAgIGRlZiBfZmluZExpYl9sZChuYW1lKToKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICM5OTk4IGZvciB3aHkgdGhpcyBpcyBuZWVkZWQKKyAgICAgICAgICAgIGV4cHIgPSByJ1teXChcKVxzXSpsaWIlc1wuW15cKFwpXHNdKicgJSByZS5lc2NhcGUobmFtZSkKKyAgICAgICAgICAgIGNtZCA9IFsnbGQnLCAnLXQnXQorICAgICAgICAgICAgbGlicGF0aCA9IG9zLmVudmlyb24uZ2V0KCdMRF9MSUJSQVJZX1BBVEgnKQorICAgICAgICAgICAgaWYgbGlicGF0aDoKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBsaWJwYXRoLnNwbGl0KCc6Jyk6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctTCcsIGRdKQorICAgICAgICAgICAgY21kLmV4dGVuZChbJy1vJywgb3MuZGV2bnVsbCwgJy1sJXMnICUgbmFtZV0pCisgICAgICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgICAgICAgICAgb3V0LCBfID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKGV4cHIsIG9zLmZzZGVjb2RlKG91dCkpCisgICAgICAgICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZ3JvdXAoMCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBwYXNzICAjIHJlc3VsdCB3aWxsIGJlIE5vbmUKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKwogICAgICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSkKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICM5OTk4CisgICAgICAgICAgICByZXR1cm4gX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSkgb3IgXAorICAgICAgICAgICAgICAgICAgIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSBvciBfZmluZExpYl9sZChuYW1lKSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyB0ZXN0IGNvZGUKZGlmZiAtLWdpdCBhL0xpYi9kYXRldGltZS5weSBiL0xpYi9kYXRldGltZS5weQppbmRleCBhMjE3OGM3Li4zNjM3NGFhIDEwMDY0NAotLS0gYS9MaWIvZGF0ZXRpbWUucHkKKysrIGIvTGliL2RhdGV0aW1lLnB5CkBAIC0xNTIsMTIgKzE1MiwyNiBAQAogICAgIGRudW0gPSBfZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkCiAgICAgcmV0dXJuIF90aW1lLnN0cnVjdF90aW1lKCh5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZGF5LCBkbnVtLCBkc3RmbGFnKSkKIAotZGVmIF9mb3JtYXRfdGltZShoaCwgbW0sIHNzLCB1cyk6Ci0gICAgIyBTa2lwIHRyYWlsaW5nIG1pY3Jvc2Vjb25kcyB3aGVuIHVzPT0wLgotICAgIHJlc3VsdCA9ICIlMDJkOiUwMmQ6JTAyZCIgJSAoaGgsIG1tLCBzcykKLSAgICBpZiB1czoKLSAgICAgICAgcmVzdWx0ICs9ICIuJTA2ZCIgJSB1cwotICAgIHJldHVybiByZXN1bHQKK2RlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMsIHRpbWVzcGVjPSdhdXRvJyk6CisgICAgc3BlY3MgPSB7CisgICAgICAgICdob3Vycyc6ICd7OjAyZH0nLAorICAgICAgICAnbWludXRlcyc6ICd7OjAyZH06ezowMmR9JywKKyAgICAgICAgJ3NlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0nLAorICAgICAgICAnbWlsbGlzZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9Lns6MDNkfScsCisgICAgICAgICdtaWNyb3NlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0uezowNmR9JworICAgIH0KKworICAgIGlmIHRpbWVzcGVjID09ICdhdXRvJzoKKyAgICAgICAgIyBTa2lwIHRyYWlsaW5nIG1pY3Jvc2Vjb25kcyB3aGVuIHVzPT0wLgorICAgICAgICB0aW1lc3BlYyA9ICdtaWNyb3NlY29uZHMnIGlmIHVzIGVsc2UgJ3NlY29uZHMnCisgICAgZWxpZiB0aW1lc3BlYyA9PSAnbWlsbGlzZWNvbmRzJzoKKyAgICAgICAgdXMgLy89IDEwMDAKKyAgICB0cnk6CisgICAgICAgIGZtdCA9IHNwZWNzW3RpbWVzcGVjXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5rbm93biB0aW1lc3BlYyB2YWx1ZScpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGZtdC5mb3JtYXQoaGgsIG1tLCBzcywgdXMpCiAKICMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCiBkZWYgX3dyYXBfc3RyZnRpbWUob2JqZWN0LCBmb3JtYXQsIHRpbWV0dXBsZSk6CkBAIC0yMzYsMTEgKzI1MCwxMSBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKG9mZnNldCwgdGltZWRlbHRhKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0emluZm8uJXMoKSBtdXN0IHJldHVybiBOb25lICIKICAgICAgICAgICAgICAgICAgICAgICAgICJvciB0aW1lZGVsdGEsIG5vdCAnJXMnIiAlIChuYW1lLCB0eXBlKG9mZnNldCkpKQotICAgIGlmIG9mZnNldCAlIHRpbWVkZWx0YShtaW51dGVzPTEpIG9yIG9mZnNldC5taWNyb3NlY29uZHM6CisgICAgaWYgb2Zmc2V0Lm1pY3Jvc2Vjb25kczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gYSB3aG9sZSBudW1iZXIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBtaW51dGVzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHNlY29uZHMsIGdvdCAlcyIgJSAobmFtZSwgb2Zmc2V0KSkKICAgICBpZiBub3QgLXRpbWVkZWx0YSgxKSA8IG9mZnNldCA8IHRpbWVkZWx0YSgxKToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcygpPSVzLCBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICItdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQgdGltZWRlbHRhKGhvdXJzPTI0KSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBvZmZzZXQpKQogCkBAIC0yNzQsNyArMjg4LDcgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGF5IG11c3QgYmUgaW4gMS4uJWQnICUgZGltLCBkYXkpCiAgICAgcmV0dXJuIHllYXIsIG1vbnRoLCBkYXkKIAotZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpOgorZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQpOgogICAgIGhvdXIgPSBfY2hlY2tfaW50X2ZpZWxkKGhvdXIpCiAgICAgbWludXRlID0gX2NoZWNrX2ludF9maWVsZChtaW51dGUpCiAgICAgc2Vjb25kID0gX2NoZWNrX2ludF9maWVsZChzZWNvbmQpCkBAIC0yODcsNyArMzAxLDkgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc2Vjb25kIG11c3QgYmUgaW4gMC4uNTknLCBzZWNvbmQpCiAgICAgaWYgbm90IDAgPD0gbWljcm9zZWNvbmQgPD0gOTk5OTk5OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdtaWNyb3NlY29uZCBtdXN0IGJlIGluIDAuLjk5OTk5OScsIG1pY3Jvc2Vjb25kKQotICAgIHJldHVybiBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQKKyAgICBpZiBmb2xkIG5vdCBpbiAoMCwgMSk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxJywgZm9sZCkKKyAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkCiAKIGRlZiBfY2hlY2tfdHppbmZvX2FyZyh0eik6CiAgICAgaWYgdHogaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgpAQCAtMzE2LDYgKzMzMiw3IEBACiAKICAgICByZXR1cm4gcQogCisKIGNsYXNzIHRpbWVkZWx0YToKICAgICAiIiJSZXByZXNlbnQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXRpbWUgb2JqZWN0cy4KIApAQCAtOTE1LDcgKzkzMiw3IEBACiAKICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCi0gICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKKyAgICBkZWYgX2dldHN0YXRlKHNlbGYsIHByb3RvY29sPTMpOgogICAgICAgICB5aGksIHlsbyA9IGRpdm1vZChzZWxmLl95ZWFyLCAyNTYpCiAgICAgICAgIHJldHVybiBieXRlcyhbeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXldKSwKIApAQCAtOTIzLDggKzk0MCw4IEBACiAgICAgICAgIHloaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5ID0gc3RyaW5nCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KIAotICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZSgpKQorICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvY29sKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUocHJvdG9jb2wpKQogCiBfZGF0ZV9jbGFzcyA9IGRhdGUgICMgc28gZnVuY3Rpb25zIHcvIGFyZ3MgbmFtZWQgImRhdGUiIGNhbiBnZXQgYXQgdGhlIGNsYXNzCiAKQEAgLTkzMiw2ICs5NDksNyBAQAogZGF0ZS5tYXggPSBkYXRlKDk5OTksIDEyLCAzMSkKIGRhdGUucmVzb2x1dGlvbiA9IHRpbWVkZWx0YShkYXlzPTEpCiAKKwogY2xhc3MgdHppbmZvOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHRpbWUgem9uZSBpbmZvIGNsYXNzZXMuCiAKQEAgLTEwMjMsMTEgKzEwNDEsMTEgQEAKICAgICBkc3QoKQogCiAgICAgUHJvcGVydGllcyAocmVhZG9ubHkpOgotICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvCisgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQKICAgICAiIiIKLSAgICBfX3Nsb3RzX18gPSAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJywgJ19oYXNoY29kZScKKyAgICBfX3Nsb3RzX18gPSAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJywgJ19oYXNoY29kZScsICdfZm9sZCcKIAotICAgIGRlZiBfX25ld19fKGNscywgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKToKKyAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuCiAKICAgICAgICAgQXJndW1lbnRzOgpAQCAtMTAzNSwxNSArMTA1MywxNiBAQAogICAgICAgICBob3VyLCBtaW51dGUgKHJlcXVpcmVkKQogICAgICAgICBzZWNvbmQsIG1pY3Jvc2Vjb25kIChkZWZhdWx0IHRvIHplcm8pCiAgICAgICAgIHR6aW5mbyAoZGVmYXVsdCB0byBOb25lKQorICAgICAgICBmb2xkIChrZXl3b3JkIG9ubHksIGRlZmF1bHQgdG8gVHJ1ZSkKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaG91ciwgYnl0ZXMpIGFuZCBsZW4oaG91cikgPT0gNiBhbmQgaG91clswXSA8IDI0OgorICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0mMHg3RiA8IDI0OgogICAgICAgICAgICAgIyBQaWNrbGUgc3VwcG9ydAogICAgICAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgICAgIHNlbGYuX19zZXRzdGF0ZShob3VyLCBtaW51dGUgb3IgTm9uZSkKICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKLSAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX2hvdXIgPSBob3VyCkBAIC0xMDUyLDYgKzEwNzEsNyBAQAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCisgICAgICAgIHNlbGYuX2ZvbGQgPSBmb2xkCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEwODAsNiArMTEwMCwxMCBAQAogICAgICAgICAiIiJ0aW1lem9uZSBpbmZvIG9iamVjdCIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdHppbmZvCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQKKwogICAgICMgU3RhbmRhcmQgY29udmVyc2lvbnMsIF9faGFzaF9fIChhbmQgaGVscGVycykKIAogICAgICMgQ29tcGFyaXNvbnMgb2YgdGltZSBvYmplY3RzIHdpdGggb3RoZXIuCkBAIC0xMTQ1LDkgKzExNjksMTMgQEAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgICIiIkhhc2guIiIiCiAgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgotICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBzZWxmLmZvbGQ6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYucmVwbGFjZShmb2xkPTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmCisgICAgICAgICAgICB0em9mZiA9IHQudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIGlmIG5vdCB0em9mZjogICMgemVybyBvciBOb25lCi0gICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHQuX2dldHN0YXRlKClbMF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGgsIG0gPSBkaXZtb2QodGltZWRlbHRhKGhvdXJzPXNlbGYuaG91ciwgbWludXRlcz1zZWxmLm1pbnV0ZSkgLSB0em9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVkZWx0YShob3Vycz0xKSkKQEAgLTExNzEsMTAgKzExOTksMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2lnbiA9ICIrIgogICAgICAgICAgICAgaGgsIG1tID0gZGl2bW9kKG9mZiwgdGltZWRlbHRhKGhvdXJzPTEpKQotICAgICAgICAgICAgYXNzZXJ0IG5vdCBtbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICAgICAgbW0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICBtbSwgc3MgPSBkaXZtb2QobW0sIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgICAgICAgYXNzZXJ0IDAgPD0gaGggPCAyNAogICAgICAgICAgICAgb2ZmID0gIiVzJTAyZCVzJTAyZCIgJSAoc2lnbiwgaGgsIHNlcCwgbW0pCisgICAgICAgICAgICBpZiBzczoKKyAgICAgICAgICAgICAgICBvZmYgKz0gJzolMDJkJyAlIHNzLnNlY29uZHMKICAgICAgICAgcmV0dXJuIG9mZgogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtMTE5MSwxNiArMTIyMCwyMiBAQAogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKKyAgICAgICAgaWYgc2VsZi5fZm9sZDoKKyAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCisgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgZm9sZD0xKSIKICAgICAgICAgcmV0dXJuIHMKIAotICAgIGRlZiBpc29mb3JtYXQoc2VsZik6CisgICAgZGVmIGlzb2Zvcm1hdChzZWxmLCB0aW1lc3BlYz0nYXV0bycpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCiAKLSAgICAgICAgVGhpcyBpcyAnSEg6TU06U1MubW1tbW1tK3p6Onp6Jywgb3IgJ0hIOk1NOlNTK3p6Onp6JyBpZgotICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisgICAgICAgIFRoZSBmdWxsIGZvcm1hdCBpcyAnSEg6TU06U1MubW1tbW1tK3p6Onp6Jy4gQnkgZGVmYXVsdCwgdGhlIGZyYWN0aW9uYWwKKyAgICAgICAgcGFydCBpcyBvbWl0dGVkIGlmIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KKworICAgICAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgICAgICB0ZXJtcyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLgogICAgICAgICAiIiIKICAgICAgICAgcyA9IF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQsIHRpbWVzcGVjKQogICAgICAgICB0eiA9IHNlbGYuX3R6c3RyKCkKICAgICAgICAgaWYgdHo6CiAgICAgICAgICAgICBzICs9IHR6CkBAIC0xMjY2LDcgKzEzMDEsNyBAQAogICAgICAgICByZXR1cm4gb2Zmc2V0CiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCBob3VyPU5vbmUsIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwKLSAgICAgICAgICAgICAgICB0emluZm89VHJ1ZSk6CisgICAgICAgICAgICAgICAgdHppbmZvPVRydWUsICosIGZvbGQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIG5ldyB0aW1lIHdpdGggbmV3IHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZHMuIiIiCiAgICAgICAgIGlmIGhvdXIgaXMgTm9uZToKICAgICAgICAgICAgIGhvdXIgPSBzZWxmLmhvdXIKQEAgLTEyNzgsMTQgKzEzMTMsMTkgQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIHJldHVybiB0aW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvKQorICAgICAgICBpZiBmb2xkIGlzIE5vbmU6CisgICAgICAgICAgICBmb2xkID0gc2VsZi5fZm9sZAorICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZD1mb2xkKQogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgdXMyLCB1czMgPSBkaXZtb2Qoc2VsZi5fbWljcm9zZWNvbmQsIDI1NikKICAgICAgICAgdXMxLCB1czIgPSBkaXZtb2QodXMyLCAyNTYpCi0gICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFtzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKKyAgICAgICAgaCA9IHNlbGYuX2hvdXIKKyAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgorICAgICAgICAgICAgaCArPSAxMjgKKyAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW2gsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIChiYXNlc3RhdGUsKQpAQCAtMTI5NSwxMiArMTMzNSwxOCBAQAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCi0gICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCisgICAgICAgIGgsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCisgICAgICAgIGlmIGggPiAxMjc6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMQorICAgICAgICAgICAgc2VsZi5faG91ciA9IGggLSAxMjgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAwCisgICAgICAgICAgICBzZWxmLl9ob3VyID0gaAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICh0aW1lLCBzZWxmLl9nZXRzdGF0ZSgpKQorICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvY29sKToKKyAgICAgICAgcmV0dXJuICh0aW1lLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCiAKIF90aW1lX2NsYXNzID0gdGltZSAgIyBzbyBmdW5jdGlvbnMgdy8gYXJncyBuYW1lZCAidGltZSIgY2FuIGdldCBhdCB0aGUgY2xhc3MKIApAQCAtMTMxNywxNiArMTM2MywxNiBAQAogICAgIF9fc2xvdHNfXyA9IGRhdGUuX19zbG90c19fICsgdGltZS5fX3Nsb3RzX18KIAogICAgIGRlZiBfX25ld19fKGNscywgeWVhciwgbW9udGg9Tm9uZSwgZGF5PU5vbmUsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLAotICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSAxMCBhbmQgMSA8PSB5ZWFyWzJdIDw9IDEyOgorICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApOgorICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwIGFuZCAxIDw9IHllYXJbMl0mMHg3RiA8PSAxMjoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhciwgbW9udGgpCiAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCi0gICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKLSAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCkBAIC0xMzM4LDYgKzEzODQsNyBAQAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCisgICAgICAgIHNlbGYuX2ZvbGQgPSBmb2xkCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEzNjYsNiArMTQxMywxMCBAQAogICAgICAgICAiIiJ0aW1lem9uZSBpbmZvIG9iamVjdCIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdHppbmZvCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfZnJvbXRpbWVzdGFtcChjbHMsIHQsIHV0YywgdHopOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYSBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wIChsaWtlIHRpbWUudGltZSgpKS4KQEAgLTEzODQsNyArMTQzNSwyMyBAQAogICAgICAgICBjb252ZXJ0ZXIgPSBfdGltZS5nbXRpbWUgaWYgdXRjIGVsc2UgX3RpbWUubG9jYWx0aW1lCiAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MsIHdlZWtkYXksIGpkYXksIGRzdCA9IGNvbnZlcnRlcih0KQogICAgICAgICBzcyA9IG1pbihzcywgNTkpICAgICMgY2xhbXAgb3V0IGxlYXAgc2Vjb25kcyBpZiB0aGUgcGxhdGZvcm0gaGFzIHRoZW0KLSAgICAgICAgcmV0dXJuIGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgIHJlc3VsdCA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgICAgICAjIEFzIG9mIHZlcnNpb24gMjAxNWYgbWF4IGZvbGQgaW4gSUFOQSBkYXRhYmFzZSBpcworICAgICAgICAgICAgIyAyMyBob3VycyBhdCAxOTY5LTA5LTMwIDEzOjAwOjAwIGluIEt3YWphbGVpbi4KKyAgICAgICAgICAgICMgTGV0J3MgcHJvYmUgMjQgaG91cnMgaW4gdGhlIHBhc3QgdG8gZGV0ZWN0IGEgdHJhbnNpdGlvbjoKKyAgICAgICAgICAgIG1heF9mb2xkX3NlY29uZHMgPSAyNCAqIDM2MDAKKyAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBjb252ZXJ0ZXIodCAtIG1heF9mb2xkX3NlY29uZHMpWzo2XQorICAgICAgICAgICAgcHJvYmUxID0gY2xzKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0eikKKyAgICAgICAgICAgIHRyYW5zID0gcmVzdWx0IC0gcHJvYmUxIC0gdGltZWRlbHRhKDAsIG1heF9mb2xkX3NlY29uZHMpCisgICAgICAgICAgICBpZiB0cmFucy5kYXlzIDwgMDoKKyAgICAgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gY29udmVydGVyKHQgKyB0cmFucyAvLyB0aW1lZGVsdGEoMCwgMSkpWzo2XQorICAgICAgICAgICAgICAgIHByb2JlMiA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgICAgICAgICAgaWYgcHJvYmUyID09IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Ll9mb2xkID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gdHouZnJvbXV0YyhyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tdGltZXN0YW1wKGNscywgdCwgdHo9Tm9uZSk6CkBAIC0xMzk0LDEwICsxNDYxLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6KQogCi0gICAgICAgIHJlc3VsdCA9IGNscy5fZnJvbXRpbWVzdGFtcCh0LCB0eiBpcyBub3QgTm9uZSwgdHopCi0gICAgICAgIGlmIHR6IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ID0gdHouZnJvbXV0YyhyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgcmV0dXJuIGNscy5fZnJvbXRpbWVzdGFtcCh0LCB0eiBpcyBub3QgTm9uZSwgdHopCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdXRjZnJvbXRpbWVzdGFtcChjbHMsIHQpOgpAQCAtMTQxNywxNSArMTQ4MSwxNyBAQAogICAgICAgICByZXR1cm4gY2xzLnV0Y2Zyb210aW1lc3RhbXAodCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjb21iaW5lKGNscywgZGF0ZSwgdGltZSk6CisgICAgZGVmIGNvbWJpbmUoY2xzLCBkYXRlLCB0aW1lLCB0emluZm89VHJ1ZSk6CiAgICAgICAgICJDb25zdHJ1Y3QgYSBkYXRldGltZSBmcm9tIGEgZ2l2ZW4gZGF0ZSBhbmQgYSBnaXZlbiB0aW1lLiIKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0ZSwgX2RhdGVfY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkYXRlIGFyZ3VtZW50IG11c3QgYmUgYSBkYXRlIGluc3RhbmNlIikKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGltZSwgX3RpbWVfY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0aW1lIGFyZ3VtZW50IG11c3QgYmUgYSB0aW1lIGluc3RhbmNlIikKKyAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CisgICAgICAgICAgICB0emluZm8gPSB0aW1lLnR6aW5mbwogICAgICAgICByZXR1cm4gY2xzKGRhdGUueWVhciwgZGF0ZS5tb250aCwgZGF0ZS5kYXksCiAgICAgICAgICAgICAgICAgICAgdGltZS5ob3VyLCB0aW1lLm1pbnV0ZSwgdGltZS5zZWNvbmQsIHRpbWUubWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgdGltZS50emluZm8pCisgICAgICAgICAgICAgICAgICAgdHppbmZvLCBmb2xkPXRpbWUuZm9sZCkKIAogICAgIGRlZiB0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gbG9jYWwgdGltZSB0dXBsZSBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4iCkBAIC0xNDQwLDEyICsxNTA2LDQ2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0KQogCisgICAgZGVmIF9ta3RpbWUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBpbnRlZ2VyIFBPU0lYIHRpbWVzdGFtcC4iIiIKKyAgICAgICAgZXBvY2ggPSBkYXRldGltZSgxOTcwLCAxLCAxKQorICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCisgICAgICAgIHQgPSAoc2VsZiAtIGVwb2NoKSAvLyB0aW1lZGVsdGEoMCwgMSkKKyAgICAgICAgZGVmIGxvY2FsKHUpOgorICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IF90aW1lLmxvY2FsdGltZSh1KVs6Nl0KKyAgICAgICAgICAgIHJldHVybiAoZGF0ZXRpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcykgLSBlcG9jaCkgLy8gdGltZWRlbHRhKDAsIDEpCisKKyAgICAgICAgIyBPdXIgZ29hbCBpcyB0byBzb2x2ZSB0ID0gbG9jYWwodSkgZm9yIHUuCisgICAgICAgIGEgPSBsb2NhbCh0KSAtIHQKKyAgICAgICAgdTEgPSB0IC0gYQorICAgICAgICB0MSA9IGxvY2FsKHUxKQorICAgICAgICBpZiB0MSA9PSB0OgorICAgICAgICAgICAgIyBXZSBmb3VuZCBvbmUgc29sdXRpb24sIGJ1dCBpdCBtYXkgbm90IGJlIHRoZSBvbmUgd2UgbmVlZC4KKyAgICAgICAgICAgICMgTG9vayBmb3IgYW4gZWFybGllciBzb2x1dGlvbiAoaWYgYGZvbGRgIGlzIDApLCBvciBhCisgICAgICAgICAgICAjIGxhdGVyIG9uZSAoaWYgYGZvbGRgIGlzIDEpLgorICAgICAgICAgICAgdTIgPSB1MSArICgtbWF4X2ZvbGRfc2Vjb25kcywgbWF4X2ZvbGRfc2Vjb25kcylbc2VsZi5mb2xkXQorICAgICAgICAgICAgYiA9IGxvY2FsKHUyKSAtIHUyCisgICAgICAgICAgICBpZiBhID09IGI6CisgICAgICAgICAgICAgICAgcmV0dXJuIHUxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiID0gdDEgLSB1MQorICAgICAgICAgICAgYXNzZXJ0IGEgIT0gYgorICAgICAgICB1MiA9IHQgLSBiCisgICAgICAgIHQyID0gbG9jYWwodTIpCisgICAgICAgIGlmIHQyID09IHQ6CisgICAgICAgICAgICByZXR1cm4gdTIKKyAgICAgICAgaWYgdDEgPT0gdDoKKyAgICAgICAgICAgIHJldHVybiB1MQorICAgICAgICAjIFdlIGhhdmUgZm91bmQgYm90aCBvZmZzZXRzIGEgYW5kIGIsIGJ1dCBuZWl0aGVyIHQgLSBhIG5vciB0IC0gYiBpcworICAgICAgICAjIGEgc29sdXRpb24uICBUaGlzIG1lYW5zIHQgaXMgaW4gdGhlIGdhcC4KKyAgICAgICAgcmV0dXJuIChtYXgsIG1pbilbc2VsZi5mb2xkXSh1MSwgdTIpCisKKwogICAgIGRlZiB0aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0IgogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBfdGltZS5ta3RpbWUoKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEpKSArIHNlbGYubWljcm9zZWNvbmQgLyAxZTYKKyAgICAgICAgICAgIHMgPSBzZWxmLl9ta3RpbWUoKQorICAgICAgICAgICAgcmV0dXJuIHMgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gKHNlbGYgLSBfRVBPQ0gpLnRvdGFsX3NlY29uZHMoKQogCkBAIC0xNDY0LDE1ICsxNTY0LDE2IEBACiAKICAgICBkZWYgdGltZShzZWxmKToKICAgICAgICAgIlJldHVybiB0aGUgdGltZSBwYXJ0LCB3aXRoIHR6aW5mbyBOb25lLiIKLSAgICAgICAgcmV0dXJuIHRpbWUoc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpCisgICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kLCBmb2xkPXNlbGYuZm9sZCkKIAogICAgIGRlZiB0aW1ldHooc2VsZik6CiAgICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCBzYW1lIHR6aW5mby4iCiAgICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3R6aW5mbywgZm9sZD1zZWxmLmZvbGQpCiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCB5ZWFyPU5vbmUsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPU5vbmUsCi0gICAgICAgICAgICAgICAgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLCB0emluZm89VHJ1ZSk6CisgICAgICAgICAgICAgICAgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLCB0emluZm89VHJ1ZSwKKyAgICAgICAgICAgICAgICAqLCBmb2xkPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSBuZXcgZGF0ZXRpbWUgd2l0aCBuZXcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkcy4iIiIKICAgICAgICAgaWYgeWVhciBpcyBOb25lOgogICAgICAgICAgICAgeWVhciA9IHNlbGYueWVhcgpAQCAtMTQ5MCw0NiArMTU5MSw0NSBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbykKKyAgICAgICAgaWYgZm9sZCBpcyBOb25lOgorICAgICAgICAgICAgZm9sZCA9IHNlbGYuZm9sZAorICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQ9Zm9sZCkKKworICAgIGRlZiBfbG9jYWxfdGltZXpvbmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICB0cyA9IHNlbGYuX21rdGltZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQorICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQorICAgICAgICBsb2NhbCA9IGRhdGV0aW1lKCpsb2NhbHRtWzo2XSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCisgICAgICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgorICAgICAgICAgICAgem9uZSA9IGxvY2FsdG0udG1fem9uZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQorICAgICAgICAgICAgem9uZSA9IF90aW1lLnN0cmZ0aW1lKCclWicsIGxvY2FsdG0pCisgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCB6b25lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHogPSB0aW1lem9uZSh0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpLCB6b25lKQorICAgICAgICByZXR1cm4gdHoKIAogICAgIGRlZiBhc3RpbWV6b25lKHNlbGYsIHR6PU5vbmUpOgogICAgICAgICBpZiB0eiBpcyBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi50emluZm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQotICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKLSAgICAgICAgICAgIGxvY2FsdG0gPSBfdGltZS5sb2NhbHRpbWUodHMpCi0gICAgICAgICAgICBsb2NhbCA9IGRhdGV0aW1lKCpsb2NhbHRtWzo2XSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIEV4dHJhY3QgVFogZGF0YSBpZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgotICAgICAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAjIENvbXB1dGUgVVRDIG9mZnNldCBhbmQgY29tcGFyZSB3aXRoIHRoZSB2YWx1ZSBpbXBsaWVkCi0gICAgICAgICAgICAgICAgIyBieSB0bV9pc2RzdC4gIElmIHRoZSB2YWx1ZXMgbWF0Y2gsIHVzZSB0aGUgem9uZSBuYW1lCi0gICAgICAgICAgICAgICAgIyBpbXBsaWVkIGJ5IHRtX2lzZHN0LgotICAgICAgICAgICAgICAgIGRlbHRhID0gbG9jYWwgLSBkYXRldGltZSgqX3RpbWUuZ210aW1lKHRzKVs6Nl0pCi0gICAgICAgICAgICAgICAgZHN0ID0gX3RpbWUuZGF5bGlnaHQgYW5kIGxvY2FsdG0udG1faXNkc3QgPiAwCi0gICAgICAgICAgICAgICAgZ210b2ZmID0gLShfdGltZS5hbHR6b25lIGlmIGRzdCBlbHNlIF90aW1lLnRpbWV6b25lKQotICAgICAgICAgICAgICAgIGlmIGRlbHRhID09IHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZik6Ci0gICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEsIF90aW1lLnR6bmFtZVtkc3RdKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKLQorICAgICAgICAgICAgdHogPSBzZWxmLl9sb2NhbF90aW1lem9uZSgpCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdHppbmZvIikKIAogICAgICAgICBteXR6ID0gc2VsZi50emluZm8KICAgICAgICAgaWYgbXl0eiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKKyAgICAgICAgICAgIG15dHogPSBzZWxmLl9sb2NhbF90aW1lem9uZSgpCiAKICAgICAgICAgaWYgdHogaXMgbXl0ejoKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAgICAgIyBDb252ZXJ0IHNlbGYgdG8gVVRDLCBhbmQgYXR0YWNoIHRoZSBuZXcgdGltZSB6b25lIG9iamVjdC4KLSAgICAgICAgbXlvZmZzZXQgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgIG15b2Zmc2V0ID0gbXl0ei51dGNvZmZzZXQoc2VsZikKICAgICAgICAgaWYgbXlvZmZzZXQgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCiAgICAgICAgIHV0YyA9IChzZWxmIC0gbXlvZmZzZXQpLnJlcGxhY2UodHppbmZvPXR6KQpAQCAtMTU0OSwyMSArMTY0OSwyNSBAQAogICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICBzZWxmLl95ZWFyKQogCi0gICAgZGVmIGlzb2Zvcm1hdChzZWxmLCBzZXA9J1QnKToKKyAgICBkZWYgaXNvZm9ybWF0KHNlbGYsIHNlcD0nVCcsIHRpbWVzcGVjPSdhdXRvJyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgdGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIElTTy4KIAotICAgICAgICBUaGlzIGlzICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbScsIG9yICdZWVlZLU1NLUREIEhIOk1NOlNTJyBpZgotICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisgICAgICAgIFRoZSBmdWxsIGZvcm1hdCBsb29rcyBsaWtlICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbScuCisgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXMgb21pdHRlZCBpZiBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCiAKICAgICAgICAgSWYgc2VsZi50emluZm8gaXMgbm90IE5vbmUsIHRoZSBVVEMgb2Zmc2V0IGlzIGFsc28gYXR0YWNoZWQsIGdpdmluZwotICAgICAgICAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0rSEg6TU0nIG9yICdZWVlZLU1NLUREIEhIOk1NOlNTK0hIOk1NJy4KKyAgICAgICAgZ2l2aW5nIGEgZnVsbCBmb3JtYXQgb2YgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tK0hIOk1NJy4KIAogICAgICAgICBPcHRpb25hbCBhcmd1bWVudCBzZXAgc3BlY2lmaWVzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiBkYXRlIGFuZAogICAgICAgICB0aW1lLCBkZWZhdWx0ICdUJy4KKworICAgICAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgICAgICB0ZXJtcyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLgogICAgICAgICAiIiIKICAgICAgICAgcyA9ICgiJTA0ZC0lMDJkLSUwMmQlYyIgJSAoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VwKSArCiAgICAgICAgICAgICAgX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kLCB0aW1lc3BlYykpCisKICAgICAgICAgb2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICBpZiBvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBvZmYuZGF5cyA8IDA6CkBAIC0xNTcyLDkgKzE2NzYsMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2lnbiA9ICIrIgogICAgICAgICAgICAgaGgsIG1tID0gZGl2bW9kKG9mZiwgdGltZWRlbHRhKGhvdXJzPTEpKQotICAgICAgICAgICAgYXNzZXJ0IG5vdCBtbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICAgICAgbW0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICBtbSwgc3MgPSBkaXZtb2QobW0sIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgICAgICAgcyArPSAiJXMlMDJkOiUwMmQiICUgKHNpZ24sIGhoLCBtbSkKKyAgICAgICAgICAgIGlmIHNzOgorICAgICAgICAgICAgICAgIGFzc2VydCBub3Qgc3MubWljcm9zZWNvbmRzCisgICAgICAgICAgICAgICAgcyArPSAiOiUwMmQiICUgc3Muc2Vjb25kcwogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtMTU5MSw2ICsxNjk3LDkgQEAKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCisgICAgICAgIGlmIHNlbGYuX2ZvbGQ6CisgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgorICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgIHJldHVybiBzCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTE2OTMsNiArMTgwMiwxMiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCisgICAgICAgICAgICAjIEFzc3VtZSB0aGF0IGFsbG93X21peGVkIG1lYW5zIHRoYXQgd2UgYXJlIGNhbGxlZCBmcm9tIF9fZXFfXworICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CisgICAgICAgICAgICAgICAgaWYgbXlvZmYgIT0gc2VsZi5yZXBsYWNlKGZvbGQ9bm90IHNlbGYuZm9sZCkudXRjb2Zmc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgICAgICAgICAgaWYgb3RvZmYgIT0gb3RoZXIucmVwbGFjZShmb2xkPW5vdCBvdGhlci5mb2xkKS51dGNvZmZzZXQoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IG15b2ZmID09IG90b2ZmCiAKICAgICAgICAgaWYgYmFzZV9jb21wYXJlOgpAQCAtMTc2MCw5ICsxODc1LDEzIEBACiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgotICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBzZWxmLmZvbGQ6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYucmVwbGFjZShmb2xkPTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmCisgICAgICAgICAgICB0em9mZiA9IHQudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIGlmIHR6b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHQuX2dldHN0YXRlKClbMF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQogICAgICAgICAgICAgICAgIHNlY29uZHMgPSBzZWxmLmhvdXIgKiAzNjAwICsgc2VsZi5taW51dGUgKiA2MCArIHNlbGYuc2Vjb25kCkBAIC0xNzcxLDExICsxODkwLDE0IEBACiAKICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCi0gICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKKyAgICBkZWYgX2dldHN0YXRlKHNlbGYsIHByb3RvY29sPTMpOgogICAgICAgICB5aGksIHlsbyA9IGRpdm1vZChzZWxmLl95ZWFyLCAyNTYpCiAgICAgICAgIHVzMiwgdXMzID0gZGl2bW9kKHNlbGYuX21pY3Jvc2Vjb25kLCAyNTYpCiAgICAgICAgIHVzMSwgdXMyID0gZGl2bW9kKHVzMiwgMjU2KQotICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksCisgICAgICAgIG0gPSBzZWxmLl9tb250aAorICAgICAgICBpZiBzZWxmLl9mb2xkIGFuZCBwcm90b2NvbCA+IDM6CisgICAgICAgICAgICBtICs9IDEyOAorICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbeWhpLCB5bG8sIG0sIHNlbGYuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgpAQCAtMTc4NiwxNCArMTkwOCwyMCBAQAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCi0gICAgICAgICh5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VsZi5faG91ciwKKyAgICAgICAgKHloaSwgeWxvLCBtLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCiAgICAgICAgICBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKKyAgICAgICAgaWYgbSA+IDEyNzoKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAxCisgICAgICAgICAgICBzZWxmLl9tb250aCA9IG0gLSAxMjgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAwCisgICAgICAgICAgICBzZWxmLl9tb250aCA9IG0KICAgICAgICAgc2VsZi5feWVhciA9IHloaSAqIDI1NiArIHlsbwogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKIAogCiBkYXRldGltZS5taW4gPSBkYXRldGltZSgxLCAxLCAxKQpAQCAtMTkxMyw2ICsyMDQxLDggQEAKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX25hbWVfZnJvbV9vZmZzZXQoZGVsdGEpOgorICAgICAgICBpZiBub3QgZGVsdGE6CisgICAgICAgICAgICByZXR1cm4gJ1VUQycKICAgICAgICAgaWYgZGVsdGEgPCB0aW1lZGVsdGEoMCk6CiAgICAgICAgICAgICBzaWduID0gJy0nCiAgICAgICAgICAgICBkZWx0YSA9IC1kZWx0YQpkaWZmIC0tZ2l0IGEvTGliL2RibS9kdW1iLnB5IGIvTGliL2RibS9kdW1iLnB5CmluZGV4IDc3NzdhN2MuLmU3YzY0NDAgMTAwNjQ0Ci0tLSBhL0xpYi9kYm0vZHVtYi5weQorKysgYi9MaWIvZGJtL2R1bWIucHkKQEAgLTQ3LDYgKzQ3LDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlYmFzZW5hbWUsIG1vZGUsIGZsYWc9J2MnKToKICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGUKKyAgICAgICAgc2VsZi5fcmVhZG9ubHkgPSAoZmxhZyA9PSAncicpCiAKICAgICAgICAgIyBUaGUgZGlyZWN0b3J5IGZpbGUgaXMgYSB0ZXh0IGZpbGUuICBFYWNoIGxpbmUgbG9va3MgbGlrZQogICAgICAgICAjICAgICIlciwgKCVkLCAlZClcbiIgJSAoa2V5LCBwb3MsIHNpeikKQEAgLTgwLDYgKzgxLDExIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBfaW8ub3BlbihzZWxmLl9kYXRmaWxlLCAncicsIGVuY29kaW5nPSJMYXRpbi0xIikKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiAoJ2MnLCAnbicpOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBkYXRhYmFzZSBmaWxlIGlzIG1pc3NpbmcsIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VtYW50aWNzIG9mIHRoZSAnYycgZmxhZyB3aWxsIGJlIHVzZWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD00KQogICAgICAgICAgICAgd2l0aCBfaW8ub3BlbihzZWxmLl9kYXRmaWxlLCAndycsIGVuY29kaW5nPSJMYXRpbi0xIikgYXMgZjoKICAgICAgICAgICAgICAgICBzZWxmLl9jaG1vZChzZWxmLl9kYXRmaWxlKQogICAgICAgICBlbHNlOgpAQCAtMTc4LDYgKzE4NCwxMCBAQAogICAgICAgICAgICAgZi53cml0ZSgiJXIsICVyXG4iICUgKGtleS5kZWNvZGUoIkxhdGluLTEiKSwgcG9zX2FuZF9zaXpfcGFpcikpCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWwpOgorICAgICAgICBpZiBzZWxmLl9yZWFkb25seToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybignVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgogICAgICAgICAgICAga2V5ID0ga2V5LmVuY29kZSgndXRmLTgnKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGtleSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKQEAgLTIxMiw2ICsyMjIsMTAgQEAKICAgICAgICAgICAgICMgKHNvIHRoYXQgX2NvbW1pdCgpIG5ldmVyIGdldHMgY2FsbGVkKS4KIAogICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICBpZiBzZWxmLl9yZWFkb25seToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybignVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgogICAgICAgICAgICAga2V5ID0ga2V5LmVuY29kZSgndXRmLTgnKQogICAgICAgICBzZWxmLl92ZXJpZnlfb3BlbigpCkBAIC0zMDAsNCArMzE0LDggQEAKICAgICBlbHNlOgogICAgICAgICAjIFR1cm4gb2ZmIGFueSBiaXRzIHRoYXQgYXJlIHNldCBpbiB0aGUgdW1hc2sKICAgICAgICAgbW9kZSA9IG1vZGUgJiAofnVtKQorICAgIGlmIGZsYWcgbm90IGluICgncicsICd3JywgJ2MnLCAnbicpOgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3Mud2FybigiRmxhZyBtdXN0IGJlIG9uZSBvZiAncicsICd3JywgJ2MnLCBvciAnbiciLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHJldHVybiBfRGF0YWJhc2UoZmlsZSwgbW9kZSwgZmxhZz1mbGFnKQpkaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQppbmRleCAwNzZiYmFjLi4yMDk1YTVlIDEwMDY0NAotLS0gYS9MaWIvZGlmZmxpYi5weQorKysgYi9MaWIvZGlmZmxpYi5weQpAQCAtMTQxNSw3ICsxNDE1LDcgQEAKICAgICBpbXBvcnQgcmUKIAogICAgICMgcmVndWxhciBleHByZXNzaW9uIGZvciBmaW5kaW5nIGludHJhbGluZSBjaGFuZ2UgaW5kaWNlcwotICAgIGNoYW5nZV9yZSA9IHJlLmNvbXBpbGUoJyhcKyt8XC0rfFxeKyknKQorICAgIGNoYW5nZV9yZSA9IHJlLmNvbXBpbGUocicoXCsrfFwtK3xcXispJykKIAogICAgICMgY3JlYXRlIHRoZSBkaWZmZXJlbmNlIGl0ZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBkaWZmZXJlbmNlcwogICAgIGRpZmZfbGluZXNfaXRlcmF0b3IgPSBuZGlmZihmcm9tbGluZXMsdG9saW5lcyxsaW5lanVuayxjaGFyanVuaykKZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IGY3ZTNjN2YuLjA3OTRiN2YgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMTYsNiArMTYsOCBAQAogX2hhdmVfY29kZSA9ICh0eXBlcy5NZXRob2RUeXBlLCB0eXBlcy5GdW5jdGlvblR5cGUsIHR5cGVzLkNvZGVUeXBlLAogICAgICAgICAgICAgICBjbGFzc21ldGhvZCwgc3RhdGljbWV0aG9kLCB0eXBlKQogCitGT1JNQVRfVkFMVUUgPSBvcG1hcFsnRk9STUFUX1ZBTFVFJ10KKwogZGVmIF90cnlfY29tcGlsZShzb3VyY2UsIG5hbWUpOgogICAgICIiIkF0dGVtcHRzIHRvIGNvbXBpbGUgdGhlIGdpdmVuIHNvdXJjZSwgZmlyc3QgYXMgYW4gZXhwcmVzc2lvbiBhbmQKICAgICAgICB0aGVuIGFzIGEgc3RhdGVtZW50IGlmIHRoZSBmaXJzdCBhcHByb2FjaCBmYWlscy4KQEAgLTg3LDYgKzg5LDcgQEAKICAgICA2NDogIk5PRlJFRSIsCiAgICAxMjg6ICJDT1JPVVRJTkUiLAogICAgMjU2OiAiSVRFUkFCTEVfQ09ST1VUSU5FIiwKKyAgIDUxMjogIkFTWU5DX0dFTkVSQVRPUiIsCiB9CiAKIGRlZiBwcmV0dHlfZmxhZ3MoZmxhZ3MpOgpAQCAtMTYzLDYgKzE2NiwxNSBAQAogX0luc3RydWN0aW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiX0luc3RydWN0aW9uIiwKICAgICAgIm9wbmFtZSBvcGNvZGUgYXJnIGFyZ3ZhbCBhcmdyZXByIG9mZnNldCBzdGFydHNfbGluZSBpc19qdW1wX3RhcmdldCIpCiAKK19JbnN0cnVjdGlvbi5vcG5hbWUuX19kb2NfXyA9ICJIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24ub3Bjb2RlLl9fZG9jX18gPSAiTnVtZXJpYyBjb2RlIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24uYXJnLl9fZG9jX18gPSAiTnVtZXJpYyBhcmd1bWVudCB0byBvcGVyYXRpb24gKGlmIGFueSksIG90aGVyd2lzZSBOb25lIgorX0luc3RydWN0aW9uLmFyZ3ZhbC5fX2RvY19fID0gIlJlc29sdmVkIGFyZyB2YWx1ZSAoaWYga25vd24pLCBvdGhlcndpc2Ugc2FtZSBhcyBhcmciCitfSW5zdHJ1Y3Rpb24uYXJncmVwci5fX2RvY19fID0gIkh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIG9wZXJhdGlvbiBhcmd1bWVudCIKK19JbnN0cnVjdGlvbi5vZmZzZXQuX19kb2NfXyA9ICJTdGFydCBpbmRleCBvZiBvcGVyYXRpb24gd2l0aGluIGJ5dGVjb2RlIHNlcXVlbmNlIgorX0luc3RydWN0aW9uLnN0YXJ0c19saW5lLl9fZG9jX18gPSAiTGluZSBzdGFydGVkIGJ5IHRoaXMgb3Bjb2RlIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKK19JbnN0cnVjdGlvbi5pc19qdW1wX3RhcmdldC5fX2RvY19fID0gIlRydWUgaWYgb3RoZXIgY29kZSBqdW1wcyB0byBoZXJlLCBvdGhlcndpc2UgRmFsc2UiCisKIGNsYXNzIEluc3RydWN0aW9uKF9JbnN0cnVjdGlvbik6CiAgICAgIiIiRGV0YWlscyBmb3IgYSBieXRlY29kZSBvcGVyYXRpb24KIApAQCAtMjc2LDcgKzI4OCw2IEBACiAgICAgIiIiCiAgICAgbGFiZWxzID0gZmluZGxhYmVscyhjb2RlKQogICAgIHN0YXJ0c19saW5lID0gTm9uZQotICAgIGZyZWUgPSBOb25lCiAgICAgZm9yIG9mZnNldCwgb3AsIGFyZyBpbiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgICAgICAgaWYgbGluZXN0YXJ0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHN0YXJ0c19saW5lID0gbGluZXN0YXJ0cy5nZXQob2Zmc2V0LCBOb25lKQpAQCAtMjk2LDcgKzMwNyw3IEBACiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hbWU6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCBuYW1lcykKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzanJlbDoKLSAgICAgICAgICAgICAgICBhcmd2YWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgYXJndmFsID0gb2Zmc2V0ICsgMiArIGFyZwogICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAidG8gIiArIHJlcHIoYXJndmFsKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNsb2NhbDoKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIHZhcm5hbWVzKQpAQCAtMzA1LDggKzMxNiwxMyBAQAogICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSBhcmd2YWwKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzZnJlZToKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIGNlbGxzKQotICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKLSAgICAgICAgICAgICAgICBhcmdyZXByID0gIiVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciIgJSAoYXJnJTI1NiwgYXJnLy8yNTYpCisgICAgICAgICAgICBlbGlmIG9wID09IEZPUk1BVF9WQUxVRToKKyAgICAgICAgICAgICAgICBhcmd2YWwgPSAoKE5vbmUsIHN0ciwgcmVwciwgYXNjaWkpW2FyZyAmIDB4M10sIGJvb2woYXJnICYgMHg0KSkKKyAgICAgICAgICAgICAgICBhcmdyZXByID0gKCcnLCAnc3RyJywgJ3JlcHInLCAnYXNjaWknKVthcmcgJiAweDNdCisgICAgICAgICAgICAgICAgaWYgYXJndmFsWzFdOgorICAgICAgICAgICAgICAgICAgICBpZiBhcmdyZXByOgorICAgICAgICAgICAgICAgICAgICAgICAgYXJncmVwciArPSAnLCAnCisgICAgICAgICAgICAgICAgICAgIGFyZ3JlcHIgKz0gJ3dpdGggZm9ybWF0JwogICAgICAgICB5aWVsZCBJbnN0cnVjdGlvbihvcG5hbWVbb3BdLCBvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBhcmd2YWwsIGFyZ3JlcHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgc3RhcnRzX2xpbmUsIGlzX2p1bXBfdGFyZ2V0KQpAQCAtMzQzLDIzICszNTksMTUgQEAKIGRpc2NvID0gZGlzYXNzZW1ibGUgICAgICAgICAgICAgICAgICAgICAjIFhYWCBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKIAogZGVmIF91bnBhY2tfb3BhcmdzKGNvZGUpOgotICAgICMgZW51bWVyYXRlKCkgaXMgbm90IGFuIG9wdGlvbiwgc2luY2Ugd2Ugc29tZXRpbWVzIHByb2Nlc3MKLSAgICAjIG11bHRpcGxlIGVsZW1lbnRzIG9uIGEgc2luZ2xlIHBhc3MgdGhyb3VnaCB0aGUgbG9vcAogICAgIGV4dGVuZGVkX2FyZyA9IDAKLSAgICBuID0gbGVuKGNvZGUpCi0gICAgaSA9IDAKLSAgICB3aGlsZSBpIDwgbjoKKyAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY29kZSksIDIpOgogICAgICAgICBvcCA9IGNvZGVbaV0KLSAgICAgICAgb2Zmc2V0ID0gaQotICAgICAgICBpID0gaSsxCi0gICAgICAgIGFyZyA9IE5vbmUKICAgICAgICAgaWYgb3AgPj0gSEFWRV9BUkdVTUVOVDoKLSAgICAgICAgICAgIGFyZyA9IGNvZGVbaV0gKyBjb2RlW2krMV0qMjU2ICsgZXh0ZW5kZWRfYXJnCi0gICAgICAgICAgICBleHRlbmRlZF9hcmcgPSAwCi0gICAgICAgICAgICBpID0gaSsyCi0gICAgICAgICAgICBpZiBvcCA9PSBFWFRFTkRFRF9BUkc6Ci0gICAgICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gYXJnKjY1NTM2Ci0gICAgICAgIHlpZWxkIChvZmZzZXQsIG9wLCBhcmcpCisgICAgICAgICAgICBhcmcgPSBjb2RlW2krMV0gfCBleHRlbmRlZF9hcmcKKyAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IChhcmcgPDwgOCkgaWYgb3AgPT0gRVhURU5ERURfQVJHIGVsc2UgMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJnID0gTm9uZQorICAgICAgICB5aWVsZCAoaSwgb3AsIGFyZykKIAogZGVmIGZpbmRsYWJlbHMoY29kZSk6CiAgICAgIiIiRGV0ZWN0IGFsbCBvZmZzZXRzIGluIGEgYnl0ZSBjb2RlIHdoaWNoIGFyZSBqdW1wIHRhcmdldHMuCkBAIC0zNzAsMTQgKzM3OCwxNCBAQAogICAgIGxhYmVscyA9IFtdCiAgICAgZm9yIG9mZnNldCwgb3AsIGFyZyBpbiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgICAgICAgaWYgYXJnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgbGFiZWwgPSAtMQogICAgICAgICAgICAgaWYgb3AgaW4gaGFzanJlbDoKLSAgICAgICAgICAgICAgICBsYWJlbCA9IG9mZnNldCArIDMgKyBhcmcKKyAgICAgICAgICAgICAgICBsYWJlbCA9IG9mZnNldCArIDIgKyBhcmcKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzamFiczoKICAgICAgICAgICAgICAgICBsYWJlbCA9IGFyZwotICAgICAgICAgICAgaWYgbGFiZWwgPj0gMDoKLSAgICAgICAgICAgICAgICBpZiBsYWJlbCBub3QgaW4gbGFiZWxzOgotICAgICAgICAgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKGxhYmVsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIGxhYmVsczoKKyAgICAgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKGxhYmVsKQogICAgIHJldHVybiBsYWJlbHMKIAogZGVmIGZpbmRsaW5lc3RhcnRzKGNvZGUpOgpAQCAtMzg2LDggKzM5NCw4IEBACiAgICAgR2VuZXJhdGUgcGFpcnMgKG9mZnNldCwgbGluZW5vKSBhcyBkZXNjcmliZWQgaW4gUHl0aG9uL2NvbXBpbGUuYy4KIAogICAgICIiIgotICAgIGJ5dGVfaW5jcmVtZW50cyA9IGxpc3QoY29kZS5jb19sbm90YWJbMDo6Ml0pCi0gICAgbGluZV9pbmNyZW1lbnRzID0gbGlzdChjb2RlLmNvX2xub3RhYlsxOjoyXSkKKyAgICBieXRlX2luY3JlbWVudHMgPSBjb2RlLmNvX2xub3RhYlswOjoyXQorICAgIGxpbmVfaW5jcmVtZW50cyA9IGNvZGUuY29fbG5vdGFiWzE6OjJdCiAKICAgICBsYXN0bGluZW5vID0gTm9uZQogICAgIGxpbmVubyA9IGNvZGUuY29fZmlyc3RsaW5lbm8KQEAgLTM5OCw2ICs0MDYsOSBAQAogICAgICAgICAgICAgICAgIHlpZWxkIChhZGRyLCBsaW5lbm8pCiAgICAgICAgICAgICAgICAgbGFzdGxpbmVubyA9IGxpbmVubwogICAgICAgICAgICAgYWRkciArPSBieXRlX2luY3IKKyAgICAgICAgaWYgbGluZV9pbmNyID49IDB4ODA6CisgICAgICAgICAgICAjIGxpbmVfaW5jcmVtZW50cyBpcyBhbiBhcnJheSBvZiA4LWJpdCBzaWduZWQgaW50ZWdlcnMKKyAgICAgICAgICAgIGxpbmVfaW5jciAtPSAweDEwMAogICAgICAgICBsaW5lbm8gKz0gbGluZV9pbmNyCiAgICAgaWYgbGluZW5vICE9IGxhc3RsaW5lbm86CiAgICAgICAgIHlpZWxkIChhZGRyLCBsaW5lbm8pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CmluZGV4IGJlZDEzODQuLjc4YWU1NzUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpKQogICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHppcC53cml0ZShwYXRoLCBwYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oImFkZGluZyAnJXMnIiAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQogICAgICAgICAgICAgemlwLmNsb3NlKCkKIAogICAgIHJldHVybiB6aXBfZmlsZW5hbWUKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY21kLnB5IGIvTGliL2Rpc3R1dGlscy9jbWQucHkKaW5kZXggYzg5ZDVlZi4uOTM5Zjc5NSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jbWQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jbWQucHkKQEAgLTIyMSw3ICsyMjEsNyBAQAogICAgICAgICBzZWxmLl9lbnN1cmVfc3RyaW5nbGlrZShvcHRpb24sICJzdHJpbmciLCBkZWZhdWx0KQogCiAgICAgZGVmIGVuc3VyZV9zdHJpbmdfbGlzdChzZWxmLCBvcHRpb24pOgotICAgICAgICAiIiJFbnN1cmUgdGhhdCAnb3B0aW9uJyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncy4gIElmICdvcHRpb24nIGlzCisgICAgICAgIHIiIiJFbnN1cmUgdGhhdCAnb3B0aW9uJyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncy4gIElmICdvcHRpb24nIGlzCiAgICAgICAgIGN1cnJlbnRseSBhIHN0cmluZywgd2Ugc3BsaXQgaXQgZWl0aGVyIG9uIC8sXHMqLyBvciAvXHMrLywgc28KICAgICAgICAgImZvbyBiYXIgYmF6IiwgImZvbyxiYXIsYmF6IiwgYW5kICJmb28sICAgYmFyIGJheiIgYWxsIGJlY29tZQogICAgICAgICBbImZvbyIsICJiYXIiLCAiYmF6Il0uCkBAIC0zMjksOCArMzI5LDcgQEAKICAgICAjIC0tIEV4dGVybmFsIHdvcmxkIG1hbmlwdWxhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgZGVmIHdhcm4oc2VsZiwgbXNnKToKLSAgICAgICAgbG9nLndhcm4oIndhcm5pbmc6ICVzOiAlc1xuIiAlCi0gICAgICAgICAgICAgICAgKHNlbGYuZ2V0X2NvbW1hbmRfbmFtZSgpLCBtc2cpKQorICAgICAgICBsb2cud2Fybigid2FybmluZzogJXM6ICVzXG4iLCBzZWxmLmdldF9jb21tYW5kX25hbWUoKSwgbXNnKQogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgZnVuYywgYXJncywgbXNnPU5vbmUsIGxldmVsPTEpOgogICAgICAgICB1dGlsLmV4ZWN1dGUoZnVuYywgYXJncywgbXNnLCBkcnlfcnVuPXNlbGYuZHJ5X3J1bikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKaW5kZXggZjFiZmIyNC4uZTkyNzRkOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgaW5zdGFsbC5za2lwX2J1aWxkID0gc2VsZi5za2lwX2J1aWxkCiAgICAgICAgIGluc3RhbGwud2Fybl9kaXIgPSAwCiAKLSAgICAgICAgbG9nLmluZm8oImluc3RhbGxpbmcgdG8gJXMiICUgc2VsZi5iZGlzdF9kaXIpCisgICAgICAgIGxvZy5pbmZvKCJpbnN0YWxsaW5nIHRvICVzIiwgc2VsZi5iZGlzdF9kaXIpCiAgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoJ2luc3RhbGwnKQogCiAgICAgICAgICMgQW5kIG1ha2UgYW4gYXJjaGl2ZSByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CmluZGV4IGIzY2ZlOWMuLmE0YmQ1YTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQpAQCAtMTk5LDcgKzE5OSw3IEBACiAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHNlbGYudGFyZ2V0X3ZlcnNpb24KICAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfdmVyc2lvbjoKICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5za2lwX2J1aWxkLCAiU2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoaXMiCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzeXMudmVyc2lvblswOjNdCisgICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHRhcmdldF92ZXJzaW9uKQogICAgICAgICAgICAgYnVpbGQgPSBzZWxmLmdldF9maW5hbGl6ZWRfY29tbWFuZCgnYnVpbGQnKQogICAgICAgICAgICAgYnVpbGQuYnVpbGRfbGliID0gb3MucGF0aC5qb2luKGJ1aWxkLmJ1aWxkX2Jhc2UsCkBAIC02MjMsNyArNjIzLDcgQEAKICAgICAgICAgY29zdCA9IFB5RGlhbG9nKGRiLCAiRGlza0Nvc3REbGciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAiT0siLCAiT0siLCAiT0siLCBiaXRtYXA9RmFsc2UpCiAgICAgICAgIGNvc3QudGV4dCgiVGl0bGUiLCAxNSwgNiwgMjAwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1EaXNrIFNwYWNlIFJlcXVpcmVtZW50cyIpCisgICAgICAgICAgICAgICAgIHIie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQogICAgICAgICBjb3N0LnRleHQoIkRlc2NyaXB0aW9uIiwgMjAsIDIwLCAyODAsIDIwLCAweDMwMDAzLAogICAgICAgICAgICAgICAgICAgIlRoZSBkaXNrIHNwYWNlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBmZWF0dXJlcy4iKQogICAgICAgICBjb3N0LnRleHQoIlRleHQiLCAyMCwgNTMsIDMzMCwgNjAsIDMsCkBAIC02NzAsNyArNjcwLDcgQEAKICAgICAgICAgcHJvZ3Jlc3MgPSBQeURpYWxvZyhkYiwgIlByb2dyZXNzRGxnIiwgeCwgeSwgdywgaCwgbW9kZWxlc3MsIHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5jZWwiLCAiQ2FuY2VsIiwgIkNhbmNlbCIsIGJpdG1hcD1GYWxzZSkKICAgICAgICAgcHJvZ3Jlc3MudGV4dCgiVGl0bGUiLCAyMCwgMTUsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAgICAgIntcRGxnRm9udEJvbGQ4fVtQcm9ncmVzczFdIFtQcm9kdWN0TmFtZV0iKQorICAgICAgICAgICAgICAgICAgICAgciJ7XERsZ0ZvbnRCb2xkOH1bUHJvZ3Jlc3MxXSBbUHJvZHVjdE5hbWVdIikKICAgICAgICAgcHJvZ3Jlc3MudGV4dCgiVGV4dCIsIDM1LCA2NSwgMzAwLCAzMCwgMywKICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIEluc3RhbGxlciBbUHJvZ3Jlc3MyXSBbUHJvZHVjdE5hbWVdLiAiCiAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgbWF5IHRha2Ugc2V2ZXJhbCBtaW51dGVzLiIpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IDBjMGUyYzEuLmQzZTFkM2EgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc2VsZi50YXJnZXRfdmVyc2lvbgogICAgICAgICAgICAgaWYgbm90IHRhcmdldF92ZXJzaW9uOgogICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLnNraXBfYnVpbGQsICJTaG91bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyIKLSAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHN5cy52ZXJzaW9uWzA6M10KKyAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgICAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgdGFyZ2V0X3ZlcnNpb24pCiAgICAgICAgICAgICBidWlsZCA9IHNlbGYuZ2V0X2ZpbmFsaXplZF9jb21tYW5kKCdidWlsZCcpCiAgICAgICAgICAgICBidWlsZC5idWlsZF9saWIgPSBvcy5wYXRoLmpvaW4oYnVpbGQuYnVpbGRfYmFzZSwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQppbmRleCAzMzdkZDBiLi5jNmY1MmU2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CkBAIC04MSw3ICs4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcGxhdC1uYW1lIG9ubHkgc3VwcG9ydGVkIG9uIFdpbmRvd3MgKHRyeSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzaW5nICcuL2NvbmZpZ3VyZSAtLWhlbHAnIG9uIHlvdXIgcGxhdGZvcm0pIikKIAotICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCBzeXMudmVyc2lvblswOjNdKQorICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJWQuJWQiICUgKHNlbGYucGxhdF9uYW1lLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKICAgICAgICAgIyBNYWtlIGl0IHNvIFB5dGhvbiAyLnggYW5kIFB5dGhvbiAyLnggd2l0aCAtLXdpdGgtcHlkZWJ1ZyBkb24ndAogICAgICAgICAjIHNoYXJlIHRoZSBzYW1lIGJ1aWxkIGRpcmVjdG9yaWVzLiBEb2luZyBzbyBjb25mdXNlcyB0aGUgYnVpbGQKQEAgLTExNCw3ICsxMTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZW1wJyArIHBsYXRfc3BlY2lmaWVyKQogICAgICAgICBpZiBzZWxmLmJ1aWxkX3NjcmlwdHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuYnVpbGRfc2NyaXB0cyA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX2Jhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMtJyArIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMtJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKICAgICAgICAgaWYgc2VsZi5leGVjdXRhYmxlIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUgPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjdXRhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKaW5kZXggN2MyNzhlZi4uNzRkZTc4MiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CkBAIC0zNjQsOSArMzY0LDkgQEAKIAogICAgICAgICAgICAgZXh0X25hbWUsIGJ1aWxkX2luZm8gPSBleHQKIAotICAgICAgICAgICAgbG9nLndhcm4oKCJvbGQtc3R5bGUgKGV4dF9uYW1lLCBidWlsZF9pbmZvKSB0dXBsZSBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgImV4dF9tb2R1bGVzIGZvciBleHRlbnNpb24gJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAiLS0gcGxlYXNlIGNvbnZlcnQgdG8gRXh0ZW5zaW9uIGluc3RhbmNlIiAlIGV4dF9uYW1lKSkKKyAgICAgICAgICAgIGxvZy53YXJuKCJvbGQtc3R5bGUgKGV4dF9uYW1lLCBidWlsZF9pbmZvKSB0dXBsZSBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICAgICAiZXh0X21vZHVsZXMgZm9yIGV4dGVuc2lvbiAnJXMnIgorICAgICAgICAgICAgICAgICAgICAgIi0tIHBsZWFzZSBjb252ZXJ0IHRvIEV4dGVuc2lvbiBpbnN0YW5jZSIsIGV4dF9uYW1lKQogCiAgICAgICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UoZXh0X25hbWUsIHN0cikgYW5kCiAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lX3JlLm1hdGNoKGV4dF9uYW1lKSk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CmluZGV4IDkwYTgzODAuLmNjYzcwZTYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKIAogICAgIGRlZiBjb3B5X3NjcmlwdHMoc2VsZik6Ci0gICAgICAgICIiIkNvcHkgZWFjaCBzY3JpcHQgbGlzdGVkIGluICdzZWxmLnNjcmlwdHMnOyBpZiBpdCdzIG1hcmtlZCBhcyBhCisgICAgICAgIHIiIiJDb3B5IGVhY2ggc2NyaXB0IGxpc3RlZCBpbiAnc2VsZi5zY3JpcHRzJzsgaWYgaXQncyBtYXJrZWQgYXMgYQogICAgICAgICBQeXRob24gc2NyaXB0IGluIHRoZSBVbml4IHdheSAoZmlyc3QgbGluZSBtYXRjaGVzICdmaXJzdF9saW5lX3JlJywKICAgICAgICAgaWUuIHN0YXJ0cyB3aXRoICJcIyEiIGFuZCBjb250YWlucyAicHl0aG9uIiksIHRoZW4gYWRqdXN0IHRoZSBmaXJzdAogICAgICAgICBsaW5lIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IFB5dGhvbiBpbnRlcnByZXRlciBhcyB3ZSBjb3B5LgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKaW5kZXggODQ3ZTg1OC4uNGFlMTUzZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CkBAIC05LDcgKzksNyBAQAogdGhpcyBoZWFkZXIgZmlsZSBsaXZlcyIuCiAiIiIKIAotaW1wb3J0IHN5cywgb3MsIHJlCitpbXBvcnQgb3MsIHJlCiAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IENvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCkBAIC0zMzcsNyArMzM3LDcgQEAKICAgICBJZiBoZWFkIGlzIG5vdCBOb25lLCB3aWxsIGJlIGR1bXBlZCBiZWZvcmUgdGhlIGZpbGUgY29udGVudC4KICAgICAiIiIKICAgICBpZiBoZWFkIGlzIE5vbmU6Ci0gICAgICAgIGxvZy5pbmZvKCclcycgJSBmaWxlbmFtZSkKKyAgICAgICAgbG9nLmluZm8oJyVzJywgZmlsZW5hbWUpCiAgICAgZWxzZToKICAgICAgICAgbG9nLmluZm8oaGVhZCkKICAgICBmaWxlID0gb3BlbihmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKaW5kZXggNjdkYjAwNy4uMDI1OGQzZGUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CkBAIC0xNzUsNiArMTc1LDcgQEAKICAgICAgICAgc2VsZi5jb21waWxlID0gTm9uZQogICAgICAgICBzZWxmLm9wdGltaXplID0gTm9uZQogCisgICAgICAgICMgRGVwcmVjYXRlZAogICAgICAgICAjIFRoZXNlIHR3byBhcmUgZm9yIHB1dHRpbmcgbm9uLXBhY2thZ2l6ZWQgZGlzdHJpYnV0aW9ucyBpbnRvIHRoZWlyCiAgICAgICAgICMgb3duIGRpcmVjdG9yeSBhbmQgY3JlYXRpbmcgYSAucHRoIGZpbGUgaWYgaXQgbWFrZXMgc2Vuc2UuCiAgICAgICAgICMgJ2V4dHJhX3BhdGgnIGNvbWVzIGZyb20gdGhlIHNldHVwIGZpbGU7ICdpbnN0YWxsX3BhdGhfZmlsZScgY2FuCkBAIC0yOTAsOCArMjkxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzdF92ZXJzaW9uJzogc2VsZi5kaXN0cmlidXRpb24uZ2V0X3ZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzdF9mdWxsbmFtZSc6IHNlbGYuZGlzdHJpYnV0aW9uLmdldF9mdWxsbmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uJzogcHlfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9zaG9ydCc6IHB5X3ZlcnNpb25bMDozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9ub2RvdCc6IHB5X3ZlcnNpb25bMF0gKyBweV92ZXJzaW9uWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX3Nob3J0JzogJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX25vZG90JzogJyVkJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c19wcmVmaXgnOiBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZWZpeCc6IHByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzX2V4ZWNfcHJlZml4JzogZXhlY19wcmVmaXgsCkBAIC0zNDQsNiArMzQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzJywgJ2RhdGEnLCAnaGVhZGVycycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlcmJhc2UnLCAndXNlcnNpdGUnKQogCisgICAgICAgICMgRGVwcmVjYXRlZAogICAgICAgICAjIFdlbGwsIHdlJ3JlIG5vdCBhY3R1YWxseSBmdWxseSBjb21wbGV0ZWx5IGZpbmFsaXplZCB5ZXQ6IHdlIHN0aWxsCiAgICAgICAgICMgaGF2ZSB0byBkZWFsIHdpdGggJ2V4dHJhX3BhdGgnLCB3aGljaCBpcyB0aGUgaGFjayBmb3IgYWxsb3dpbmcKICAgICAgICAgIyBub24tcGFja2FnaXplZCBtb2R1bGUgZGlzdHJpYnV0aW9ucyAoaGVsbG8sIE51bWVyaWNhbCBQeXRob24hKSB0bwpAQCAtMzg1LDcgKzM4Nyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG9wdF9uYW1lID0gb3B0X25hbWUudHJhbnNsYXRlKGxvbmdvcHRfeGxhdGUpCiAgICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cihzZWxmLCBvcHRfbmFtZSkKLSAgICAgICAgICAgIGxvZy5kZWJ1ZygiICAlczogJXMiICUgKG9wdF9uYW1lLCB2YWwpKQorICAgICAgICAgICAgbG9nLmRlYnVnKCIgICVzOiAlcyIsIG9wdF9uYW1lLCB2YWwpCiAKICAgICBkZWYgZmluYWxpemVfdW5peChzZWxmKToKICAgICAgICAgIiIiRmluYWxpemVzIG9wdGlvbnMgZm9yIHBvc2l4IHBsYXRmb3Jtcy4iIiIKQEAgLTQ5MCw2ICs0OTIsMTAgQEAKICAgICAgICAgICAgIHNlbGYuZXh0cmFfcGF0aCA9IHNlbGYuZGlzdHJpYnV0aW9uLmV4dHJhX3BhdGgKIAogICAgICAgICBpZiBzZWxmLmV4dHJhX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2cud2FybigKKyAgICAgICAgICAgICAgICAiRGlzdHJpYnV0aW9uIG9wdGlvbiBleHRyYV9wYXRoIGlzIGRlcHJlY2F0ZWQuICIKKyAgICAgICAgICAgICAgICAiU2VlIGlzc3VlMjc5MTkgZm9yIGRldGFpbHMuIgorICAgICAgICAgICAgKQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmV4dHJhX3BhdGgsIHN0cik6CiAgICAgICAgICAgICAgICAgc2VsZi5leHRyYV9wYXRoID0gc2VsZi5leHRyYV9wYXRoLnNwbGl0KCcsJykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weQppbmRleCBjMmE3ZDY0Li4wZGRjNzM2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weQpAQCAtMjEsMTAgKzIxLDEwIEBACiAKICAgICBkZWYgZmluYWxpemVfb3B0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5zZXRfdW5kZWZpbmVkX29wdGlvbnMoJ2luc3RhbGxfbGliJywoJ2luc3RhbGxfZGlyJywnaW5zdGFsbF9kaXInKSkKLSAgICAgICAgYmFzZW5hbWUgPSAiJXMtJXMtcHklcy5lZ2ctaW5mbyIgJSAoCisgICAgICAgIGJhc2VuYW1lID0gIiVzLSVzLXB5JWQuJWQuZWdnLWluZm8iICUgKAogICAgICAgICAgICAgdG9fZmlsZW5hbWUoc2FmZV9uYW1lKHNlbGYuZGlzdHJpYnV0aW9uLmdldF9uYW1lKCkpKSwKICAgICAgICAgICAgIHRvX2ZpbGVuYW1lKHNhZmVfdmVyc2lvbihzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfdmVyc2lvbigpKSksCi0gICAgICAgICAgICBzeXMudmVyc2lvbls6M10KKyAgICAgICAgICAgICpzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgICAgICApCiAgICAgICAgIHNlbGYudGFyZ2V0ID0gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFsbF9kaXIsIGJhc2VuYW1lKQogICAgICAgICBzZWxmLm91dHB1dHMgPSBbc2VsZi50YXJnZXRdCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKaW5kZXggODYzNDNjOC4uMGZhYzk0ZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQpAQCAtNSw3ICs1LDcgQEAKIAogIyBjcmVhdGVkIDIwMDIvMTAvMjEsIFJpY2hhcmQgSm9uZXMKIAotaW1wb3J0IG9zLCBzdHJpbmcsIGdldHBhc3MKK2ltcG9ydCBnZXRwYXNzCiBpbXBvcnQgaW8KIGltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0CiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICcnJwogICAgICAgICAjIHNlbmQgdGhlIGluZm8gdG8gdGhlIHNlcnZlciBhbmQgcmVwb3J0IHRoZSByZXN1bHQKICAgICAgICAgKGNvZGUsIHJlc3VsdCkgPSBzZWxmLnBvc3RfdG9fc2VydmVyKHNlbGYuYnVpbGRfcG9zdF9kYXRhKCd2ZXJpZnknKSkKLSAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycgJSAoY29kZSwgcmVzdWx0KSkKKyAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKIAogICAgIGRlZiBzZW5kX21ldGFkYXRhKHNlbGYpOgogICAgICAgICAnJycgU2VuZCB0aGUgbWV0YWRhdGEgdG8gdGhlIHBhY2thZ2UgaW5kZXggc2VydmVyLgpAQCAtMjA1LDcgKzIwNSw3IEBACiAgICAgICAgICAgICAgICAgZGF0YVsnZW1haWwnXSA9IGlucHV0KCcgICBFTWFpbDogJykKICAgICAgICAgICAgIGNvZGUsIHJlc3VsdCA9IHNlbGYucG9zdF90b19zZXJ2ZXIoZGF0YSkKICAgICAgICAgICAgIGlmIGNvZGUgIT0gMjAwOgotICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbG9nLmluZm8oJ1lvdSB3aWxsIHJlY2VpdmUgYW4gZW1haWwgc2hvcnRseS4nKQogICAgICAgICAgICAgICAgIGxvZy5pbmZvKCgnRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gaXQgdG8gJwpAQCAtMjE2LDcgKzIxNiw3IEBACiAgICAgICAgICAgICB3aGlsZSBub3QgZGF0YVsnZW1haWwnXToKICAgICAgICAgICAgICAgICBkYXRhWydlbWFpbCddID0gaW5wdXQoJ1lvdXIgZW1haWwgYWRkcmVzczogJykKICAgICAgICAgICAgIGNvZGUsIHJlc3VsdCA9IHNlbGYucG9zdF90b19zZXJ2ZXIoZGF0YSkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJywgY29kZSwgcmVzdWx0KQogCiAgICAgZGVmIGJ1aWxkX3Bvc3RfZGF0YShzZWxmLCBhY3Rpb24pOgogICAgICAgICAjIGZpZ3VyZSB0aGUgZGF0YSB0byBzZW5kIC0gdGhlIG1ldGFkYXRhIHBsdXMgc29tZSBhZGRpdGlvbmFsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKaW5kZXggN2VhM2Q1Zi4uNGZkMWQ0NyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQpAQCAtMyw3ICszLDYgQEAKIEltcGxlbWVudHMgdGhlIERpc3R1dGlscyAnc2Rpc3QnIGNvbW1hbmQgKGNyZWF0ZSBhIHNvdXJjZSBkaXN0cmlidXRpb24pLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0ICoKIGZyb20gZ2xvYiBpbXBvcnQgZ2xvYgpAQCAtOTIsOSArOTEsNiBAQAogICAgIG5lZ2F0aXZlX29wdCA9IHsnbm8tZGVmYXVsdHMnOiAndXNlLWRlZmF1bHRzJywKICAgICAgICAgICAgICAgICAgICAgJ25vLXBydW5lJzogJ3BydW5lJyB9CiAKLSAgICBkZWZhdWx0X2Zvcm1hdCA9IHsncG9zaXgnOiAnZ3p0YXInLAotICAgICAgICAgICAgICAgICAgICAgICdudCc6ICd6aXAnIH0KLQogICAgIHN1Yl9jb21tYW5kcyA9IFsoJ2NoZWNrJywgY2hlY2tpbmdfbWV0YWRhdGEpXQogCiAgICAgZGVmIGluaXRpYWxpemVfb3B0aW9ucyhzZWxmKToKQEAgLTExMSw3ICsxMDcsNyBAQAogICAgICAgICBzZWxmLm1hbmlmZXN0X29ubHkgPSAwCiAgICAgICAgIHNlbGYuZm9yY2VfbWFuaWZlc3QgPSAwCiAKLSAgICAgICAgc2VsZi5mb3JtYXRzID0gTm9uZQorICAgICAgICBzZWxmLmZvcm1hdHMgPSBbJ2d6dGFyJ10KICAgICAgICAgc2VsZi5rZWVwX3RlbXAgPSAwCiAgICAgICAgIHNlbGYuZGlzdF9kaXIgPSBOb25lCiAKQEAgLTEyNywxMyArMTIzLDYgQEAKICAgICAgICAgICAgIHNlbGYudGVtcGxhdGUgPSAiTUFOSUZFU1QuaW4iCiAKICAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5nX2xpc3QoJ2Zvcm1hdHMnKQotICAgICAgICBpZiBzZWxmLmZvcm1hdHMgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdHMgPSBbc2VsZi5kZWZhdWx0X2Zvcm1hdFtvcy5uYW1lXV0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBrbm93IGhvdyB0byBjcmVhdGUgc291cmNlIGRpc3RyaWJ1dGlvbnMgIgotICAgICAgICAgICAgICAgICAgICAgICJvbiBwbGF0Zm9ybSAlcyIgJSBvcy5uYW1lKQogCiAgICAgICAgIGJhZF9mb3JtYXQgPSBhcmNoaXZlX3V0aWwuY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKHNlbGYuZm9ybWF0cykKICAgICAgICAgaWYgYmFkX2Zvcm1hdDoKQEAgLTQyMyw3ICs0MTIsNyBAQAogICAgICAgICAgICAgbG9nLmluZm8obXNnKQogICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlKToKLSAgICAgICAgICAgICAgICBsb2cud2FybigiJyVzJyBub3QgYSByZWd1bGFyIGZpbGUgLS0gc2tpcHBpbmciICUgZmlsZSkKKyAgICAgICAgICAgICAgICBsb2cud2FybigiJyVzJyBub3QgYSByZWd1bGFyIGZpbGUgLS0gc2tpcHBpbmciLCBmaWxlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKGJhc2VfZGlyLCBmaWxlKQogICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKGZpbGUsIGRlc3QsIGxpbms9bGluaykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29yZS5weSBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQppbmRleCBmMDViMzRiLi5kNjAzZDRhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb3JlLnB5CkBAIC0yMDQsMTYgKzIwNCwxNSBAQAogICAgIGdsb2JhbCBfc2V0dXBfc3RvcF9hZnRlciwgX3NldHVwX2Rpc3RyaWJ1dGlvbgogICAgIF9zZXR1cF9zdG9wX2FmdGVyID0gc3RvcF9hZnRlcgogCi0gICAgc2F2ZV9hcmd2ID0gc3lzLmFyZ3YKKyAgICBzYXZlX2FyZ3YgPSBzeXMuYXJndi5jb3B5KCkKICAgICBnID0geydfX2ZpbGVfXyc6IHNjcmlwdF9uYW1lfQotICAgIGwgPSB7fQogICAgIHRyeToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLmFyZ3ZbMF0gPSBzY3JpcHRfbmFtZQogICAgICAgICAgICAgaWYgc2NyaXB0X2FyZ3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdID0gc2NyaXB0X2FyZ3MKICAgICAgICAgICAgIHdpdGggb3BlbihzY3JpcHRfbmFtZSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnLCBsKQorICAgICAgICAgICAgICAgIGV4ZWMoZi5yZWFkKCksIGcpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuYXJndiA9IHNhdmVfYXJndgogICAgICAgICAgICAgX3NldHVwX3N0b3BfYWZ0ZXIgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CmluZGV4IGM4Nzk2NDYuLjFjMzY5OTAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CkBAIC0zNjgsNyArMzY4LDcgQEAKICAgICAgICAgcmV0dXJuIChDT05GSUdfSF9VTkNFUlRBSU4sCiAgICAgICAgICAgICAgICAgImNvdWxkbid0IHJlYWQgJyVzJzogJXMiICUgKGZuLCBleGMuc3RyZXJyb3IpKQogCi1SRV9WRVJTSU9OID0gcmUuY29tcGlsZShiJyhcZCtcLlxkKyhcLlxkKykqKScpCitSRV9WRVJTSU9OID0gcmUuY29tcGlsZShicicoXGQrXC5cZCsoXC5cZCspKiknKQogCiBkZWYgX2ZpbmRfZXhlX3ZlcnNpb24oY21kKToKICAgICAiIiJGaW5kIHRoZSB2ZXJzaW9uIG9mIGFuIGV4ZWN1dGFibGUgYnkgcnVubmluZyBgY21kYCBpbiB0aGUgc2hlbGwuCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2Rpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKaW5kZXggZmZiMzNmZjYuLjYyYTI0NTEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKQEAgLTEwMTgsOCArMTAxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm1haW50YWluZXIiLCAibWFpbnRhaW5lcl9lbWFpbCIsICJ1cmwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIiwgImRlc2NyaXB0aW9uIiwgImxvbmdfZGVzY3JpcHRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyIsICJwbGF0Zm9ybXMiLCAiZnVsbG5hbWUiLCAiY29udGFjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhY3RfZW1haWwiLCAibGljZW5zZSIsICJjbGFzc2lmaWVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImRvd25sb2FkX3VybCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhY3RfZW1haWwiLCAiY2xhc3NpZmllcnMiLCAiZG93bmxvYWRfdXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBFUCAzMTQKICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlkZXMiLCAicmVxdWlyZXMiLCAib2Jzb2xldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weSBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CmluZGV4IDdlZmJiNzQuLmM1MDdkYTMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CkBAIC00LDcgKzQsNiBAQAogbW9kdWxlcyBpbiBzZXR1cCBzY3JpcHRzLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogCiAjIFRoaXMgY2xhc3MgaXMgcmVhbGx5IG9ubHkgdXNlZCBieSB0aGUgImJ1aWxkX2V4dCIgY29tbWFuZCwgc28gaXQgbWlnaHQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CmluZGV4IDY1MjJlNjkuLmM5MmQ1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQpAQCAtMzAyLDIxICszMDIsMjYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuCiAKKyAgICAjIGRpdGNoIHN0YXJ0IGFuZCBlbmQgY2hhcmFjdGVycworICAgIHN0YXJ0LCBfLCBlbmQgPSBnbG9iX3RvX3JlKCdfJykucGFydGl0aW9uKCdfJykKKwogICAgIGlmIHBhdHRlcm46CiAgICAgICAgIHBhdHRlcm5fcmUgPSBnbG9iX3RvX3JlKHBhdHRlcm4pCisgICAgICAgIGFzc2VydCBwYXR0ZXJuX3JlLnN0YXJ0c3dpdGgoc3RhcnQpIGFuZCBwYXR0ZXJuX3JlLmVuZHN3aXRoKGVuZCkKICAgICBlbHNlOgogICAgICAgICBwYXR0ZXJuX3JlID0gJycKIAogICAgIGlmIHByZWZpeCBpcyBub3QgTm9uZToKLSAgICAgICAgIyBkaXRjaCBlbmQgb2YgcGF0dGVybiBjaGFyYWN0ZXIKLSAgICAgICAgZW1wdHlfcGF0dGVybiA9IGdsb2JfdG9fcmUoJycpCi0gICAgICAgIHByZWZpeF9yZSA9IGdsb2JfdG9fcmUocHJlZml4KVs6LWxlbihlbXB0eV9wYXR0ZXJuKV0KKyAgICAgICAgcHJlZml4X3JlID0gZ2xvYl90b19yZShwcmVmaXgpCisgICAgICAgIGFzc2VydCBwcmVmaXhfcmUuc3RhcnRzd2l0aChzdGFydCkgYW5kIHByZWZpeF9yZS5lbmRzd2l0aChlbmQpCisgICAgICAgIHByZWZpeF9yZSA9IHByZWZpeF9yZVtsZW4oc3RhcnQpOiBsZW4ocHJlZml4X3JlKSAtIGxlbihlbmQpXQogICAgICAgICBzZXAgPSBvcy5zZXAKICAgICAgICAgaWYgb3Muc2VwID09ICdcXCc6CiAgICAgICAgICAgICBzZXAgPSByJ1xcJwotICAgICAgICBwYXR0ZXJuX3JlID0gIl4iICsgc2VwLmpvaW4oKHByZWZpeF9yZSwgIi4qIiArIHBhdHRlcm5fcmUpKQorICAgICAgICBwYXR0ZXJuX3JlID0gcGF0dGVybl9yZVtsZW4oc3RhcnQpOiBsZW4ocGF0dGVybl9yZSkgLSBsZW4oZW5kKV0KKyAgICAgICAgcGF0dGVybl9yZSA9IHInJXNcQSVzJXMuKiVzJXMnICUgKHN0YXJ0LCBwcmVmaXhfcmUsIHNlcCwgcGF0dGVybl9yZSwgZW5kKQogICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gcHJlZml4IC0tIHJlc3BlY3QgYW5jaG9yIGZsYWcKICAgICAgICAgaWYgYW5jaG9yOgotICAgICAgICAgICAgcGF0dGVybl9yZSA9ICJeIiArIHBhdHRlcm5fcmUKKyAgICAgICAgICAgIHBhdHRlcm5fcmUgPSByJyVzXEElcycgJSAoc3RhcnQsIHBhdHRlcm5fcmVbbGVuKHN0YXJ0KTpdKQogCiAgICAgcmV0dXJuIHJlLmNvbXBpbGUocGF0dGVybl9yZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQppbmRleCAwYjFmZDE5Li4yMTE5MTI3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CkBAIC03MTYsNyArNzE2LDcgQEAKICAgICAgICAgICAgICAgICByIiIiVkNcZHsyfVwuQ1JUKCJ8JykuKj8oLz58PC9hc3NlbWJseUlkZW50aXR5PikiIiIsCiAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKQogICAgICAgICAgICAgbWFuaWZlc3RfYnVmID0gcmUuc3ViKHBhdHRlcm4sICIiLCBtYW5pZmVzdF9idWYpCi0gICAgICAgICAgICBwYXR0ZXJuID0gIjxkZXBlbmRlbnRBc3NlbWJseT5ccyo8L2RlcGVuZGVudEFzc2VtYmx5PiIKKyAgICAgICAgICAgIHBhdHRlcm4gPSByIjxkZXBlbmRlbnRBc3NlbWJseT5ccyo8L2RlcGVuZGVudEFzc2VtYmx5PiIKICAgICAgICAgICAgIG1hbmlmZXN0X2J1ZiA9IHJlLnN1YihwYXR0ZXJuLCAiIiwgbWFuaWZlc3RfYnVmKQogICAgICAgICAgICAgIyBOb3cgc2VlIGlmIGFueSBvdGhlciBhc3NlbWJsaWVzIGFyZSByZWZlcmVuY2VkIC0gaWYgbm90LCB3ZQogICAgICAgICAgICAgIyBkb24ndCB3YW50IGEgbWFuaWZlc3QgZW1iZWRkZWQuCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CmluZGV4IDU3MzcyNGQuLjhiZjFhNzAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CkBAIC03MCw3ICs3MCw3IEBACiAgICAgbGVhdmluZyBvZmYgdGhlIHBhdGNobGV2ZWwuICBTYW1wbGUgcmV0dXJuIHZhbHVlcyBjb3VsZCBiZSAnMS41JwogICAgIG9yICcyLjInLgogICAgICIiIgotICAgIHJldHVybiBzeXMudmVyc2lvbls6M10KKyAgICByZXR1cm4gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKIAogZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgpAQCAtMjQyLDYgKzI0Miw4IEBACiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIHByb2plY3RfYmFzZSwgIk1ha2VmaWxlIikKICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKICAgICBjb25maWdfZmlsZSA9ICdjb25maWcte317fScuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpLCBidWlsZF9mbGFncykKKyAgICBpZiBoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnKToKKyAgICAgICAgY29uZmlnX2ZpbGUgKz0gJy0lcycgJSBzeXMuaW1wbGVtZW50YXRpb24uX211bHRpYXJjaAogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGliX2RpciwgY29uZmlnX2ZpbGUsICdNYWtlZmlsZScpCiAKIApAQCAtMjc2LDcgKzI3OCw3IEBACiAKICMgUmVnZXhlcyBuZWVkZWQgZm9yIHBhcnNpbmcgTWFrZWZpbGUgKGFuZCBzaW1pbGFyIHN5bnRheGVzLAogIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCi1fdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKK192YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUociIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKIF9maW5kdmFyMV9yeCA9IHJlLmNvbXBpbGUociJcJFwoKFtBLVphLXpdW0EtWmEtejAtOV9dKilcKSIpCiBfZmluZHZhcjJfcnggPSByZS5jb21waWxlKHIiXCR7KFtBLVphLXpdW0EtWmEtejAtOV9dKil9IikKIApAQCAtNDE1LDM4ICs0MTcsMTggQEAKIAogZGVmIF9pbml0X3Bvc2l4KCk6CiAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgotICAgIGcgPSB7fQotICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgotICAgIHRyeToKLSAgICAgICAgZmlsZW5hbWUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQotICAgICAgICBwYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgZykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6Ci0gICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKLQotICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLQotICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIHB5Y29uZmlnLmg6Ci0gICAgdHJ5OgotICAgICAgICBmaWxlbmFtZSA9IGdldF9jb25maWdfaF9maWxlbmFtZSgpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19oKGZpbGUsIGcpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgotICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0KLSAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0KLSAgICAjIE9uIEFJWCwgdGhlcmUgYXJlIHdyb25nIHBhdGhzIHRvIHRoZSBsaW5rZXIgc2NyaXB0cyBpbiB0aGUgTWFrZWZpbGUKLSAgICAjIC0tIHRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgUHl0aG9uIHNvdXJjZSwgYnV0IHdoZW4gaW5zdGFsbGVkCi0gICAgIyB0aGUgc2NyaXB0cyBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnkuCi0gICAgaWYgcHl0aG9uX2J1aWxkOgotICAgICAgICBnWydMRFNIQVJFRCddID0gZ1snQkxEU0hBUkVEJ10KLQorICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSB0aGUgc3lzY29uZmlnIG1vZHVsZQorICAgIG5hbWUgPSBvcy5lbnZpcm9uLmdldCgnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnLAorICAgICAgICAnX3N5c2NvbmZpZ2RhdGFfe2FiaX1fe3BsYXRmb3JtfV97bXVsdGlhcmNofScuZm9ybWF0KAorICAgICAgICBhYmk9c3lzLmFiaWZsYWdzLAorICAgICAgICBwbGF0Zm9ybT1zeXMucGxhdGZvcm0sCisgICAgICAgIG11bHRpYXJjaD1nZXRhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnLCAnJyksCisgICAgKSkKKyAgICBfdGVtcCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWydidWlsZF90aW1lX3ZhcnMnXSwgMCkKKyAgICBidWlsZF90aW1lX3ZhcnMgPSBfdGVtcC5idWlsZF90aW1lX3ZhcnMKICAgICBnbG9iYWwgX2NvbmZpZ192YXJzCi0gICAgX2NvbmZpZ192YXJzID0gZworICAgIF9jb25maWdfdmFycyA9IHt9CisgICAgX2NvbmZpZ192YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCiAKIAogZGVmIF9pbml0X250KCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQppbmRleCBlOTc5NWVlLi5kN2M5ZmViIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKQEAgLTksOCArOSw2IEBACiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJkaXN0X3JwbSBpbXBvcnQgYmRpc3RfcnBtCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQotZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHNwYXduCi1mcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgogCiBTRVRVUF9QWSA9ICIiIlwKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKaW5kZXggMzM5MWYzNi4uYjAyMGE1YiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQpAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICAjIGJ1aWxkX3BsYXRsaWIgaXMgJ2J1aWxkL2xpYi5wbGF0Zm9ybS14LnhbLXB5ZGVidWddJwogICAgICAgICAjIGV4YW1wbGVzOgogICAgICAgICAjICAgYnVpbGQvbGliLm1hY29zeC0xMC4zLWkzODYtMi43Ci0gICAgICAgIHBsYXRfc3BlYyA9ICcuJXMtJXMnICUgKGNtZC5wbGF0X25hbWUsIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgIHBsYXRfc3BlYyA9ICcuJXMtJWQuJWQnICUgKGNtZC5wbGF0X25hbWUsICpzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgaWYgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY21kLmJ1aWxkX3BsYXRsaWIuZW5kc3dpdGgoJy1weWRlYnVnJykpCiAgICAgICAgICAgICBwbGF0X3NwZWMgKz0gJy1weWRlYnVnJwpAQCAtNDIsNyArNDIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5idWlsZF90ZW1wLCB3YW50ZWQpCiAKICAgICAgICAgIyBidWlsZF9zY3JpcHRzIGlzIGJ1aWxkL3NjcmlwdHMteC54Ci0gICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbihjbWQuYnVpbGRfYmFzZSwgJ3NjcmlwdHMtJyArICBzeXMudmVyc2lvblswOjNdKQorICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cy0lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuYnVpbGRfc2NyaXB0cywgd2FudGVkKQogCiAgICAgICAgICMgZXhlY3V0YWJsZSBpcyBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjdXRhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKaW5kZXggZjNkZjU2NC4uNmJlMGNhMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CkBAIC0xNjYsNyArMTY2LDYgQEAKICAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogCi0gICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKICAgICAgICAgcHlfaW5jbHVkZSA9IHN5c2NvbmZpZy5nZXRfcHl0aG9uX2luYygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHlfaW5jbHVkZSwgY21kLmluY2x1ZGVfZGlycykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CmluZGV4IDE4MjgzZGMuLjA3MTJlOTIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKQEAgLTE2OCw3ICsxNjgsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBvbGRfZG9udF93cml0ZV9ieXRlY29kZQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywgc2VsZi5sb2dzWzBdWzFdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dzWzBdWzFdICUgc2VsZi5sb2dzWzBdWzJdKQogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKaW5kZXggYjY0ZjMwMC4uYzYwNWFmZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5jbGVhbi4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZ2V0cGFzcwogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmNsZWFuIGltcG9ydCBjbGVhbgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CmluZGV4IGEzODQ0OTcuLjc3ZWY3ODggMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMucHlwaXJjLnB5cGlyYy4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKIAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgUHlQSVJDQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgRGlzdHJpYnV0aW9uCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CmluZGV4IDY1NDIyN2MuLjI3Y2U3MzIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CkBAIC0yOSw2ICsyOSwyMSBAQAogc2V0dXAoKQogIiIiCiAKK3NldHVwX2RvZXNfbm90aGluZyA9ICIiIlwKK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCitzZXR1cCgpCisiIiIKKworCitzZXR1cF9kZWZpbmVzX3N1YmNsYXNzID0gIiIiXAorZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKK2Zyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbCBpbXBvcnQgaW5zdGFsbCBhcyBfaW5zdGFsbAorCitjbGFzcyBpbnN0YWxsKF9pbnN0YWxsKToKKyAgICBzdWJfY29tbWFuZHMgPSBfaW5zdGFsbC5zdWJfY29tbWFuZHMgKyBbJ2NtZCddCisKK3NldHVwKGNtZGNsYXNzPXsnaW5zdGFsbCc6IGluc3RhbGx9KQorIiIiCiAKIGNsYXNzIENvcmVUZXN0Q2FzZShzdXBwb3J0LkVudmlyb25HdWFyZCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02Nyw2ICs4MiwyMSBAQAogICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCiAgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX3VzaW5nX19fZmlsZV9fKSkKIAorICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9wcmVzZXJ2ZXNfc3lzX2FyZ3Yoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHJ1bl9zZXR1cCBkb2VzIG5vdCBjbG9iYmVyIHN5cy5hcmd2CisgICAgICAgIGFyZ3ZfY29weSA9IHN5cy5hcmd2LmNvcHkoKQorICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCisgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX2RvZXNfbm90aGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmFyZ3YsIGFyZ3ZfY29weSkKKworICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9kZWZpbmVzX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2NyaXB0IGNhbiB1c2UgX19maWxlX187IGlmIHRoYXQncyBtaXNzaW5nLCB0aGUgdGVzdAorICAgICAgICAjIHNldHVwLnB5IHNjcmlwdCB3aWxsIHJhaXNlIE5hbWVFcnJvci4KKyAgICAgICAgZGlzdCA9IGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfZGVmaW5lc19zdWJjbGFzcykpCisgICAgICAgIGluc3RhbGwgPSBkaXN0LmdldF9jb21tYW5kX29iaignaW5zdGFsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NtZCcsIGluc3RhbGwuc3ViX2NvbW1hbmRzKQorCiAgICAgZGVmIHRlc3RfcnVuX3NldHVwX3VzZXNfY3VycmVudF9kaXIoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IHRoZSBzZXR1cCBzY3JpcHQgaXMgcnVuIHdpdGggdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgYXMgaXRzIG93biBjdXJyZW50IGRpcmVjdG9yeTsgdGhpcyB3YXMgdGVtcG9yYXJpbHkgYnJva2VuIGJ5IGEKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CmluZGV4IDg1NjkyMTYuLjlkYzg2OWQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQpAQCAtMywxMSArMywxMCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCi1pbXBvcnQgc3VicHJvY2VzcwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgY3lnd2luY2NvbXBpbGVyCi1mcm9tIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgaW1wb3J0IChDeWd3aW5DQ29tcGlsZXIsIGNoZWNrX2NvbmZpZ19oLAorZnJvbSBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGltcG9ydCAoY2hlY2tfY29uZmlnX2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9PSywgQ09ORklHX0hfTk9UT0ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9VTkNFUlRBSU4sIGdldF92ZXJzaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tc3ZjcikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQppbmRleCAzZTFjMzY2Li5jNmZhZTM5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5kZXBfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIsIG5ld2VyX3BhaXJ3aXNlLCBuZXdlcl9ncm91cAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNGaWxlRXJyb3IKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CmluZGV4IGE2ZDA0ZjAuLjAzMDQwYWYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuZmlsZV91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBlcnJubwogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKaW5kZXggMzkxYWYzYy4uYzcxMzQyZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQpAQCAtNTEsMTQgKzUxLDE0IEBACiAKICAgICAgICAgZm9yIGdsb2IsIHJlZ2V4IGluICgKICAgICAgICAgICAgICMgc2ltcGxlIGNhc2VzCi0gICAgICAgICAgICAoJ2ZvbyonLCByJ2Zvb1teJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/Jywgcidmb29bXiUoc2VwKXNdXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/PycsIHInZm9vW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCisgICAgICAgICAgICAoJ2ZvbyonLCByJyg/czpmb29bXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKCdmb28/JywgcicoP3M6Zm9vW14lKHNlcClzXSlcWicpLAorICAgICAgICAgICAgKCdmb28/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdKVxaJyksCiAgICAgICAgICAgICAjIHNwZWNpYWwgY2FzZXMKLSAgICAgICAgICAgIChyJ2Zvb1xcKicsIHInZm9vXFxcXFteJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKHInZm9vXFxcKicsIHInZm9vXFxcXFxcW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8/Pz8nLCByJ2Zvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCi0gICAgICAgICAgICAocidmb29cXD8/Jywgcidmb29cXFxcW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJykpOgorICAgICAgICAgICAgKHInZm9vXFwqJywgcicoP3M6Zm9vXFxcXFteJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAocidmb29cXFwqJywgcicoP3M6Zm9vXFxcXFxcW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgICgnZm9vPz8/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc10pXFonKSwKKyAgICAgICAgICAgIChyJ2Zvb1xcPz8nLCByJyg/czpmb29cXFxcW14lKHNlcClzXVteJShzZXApc10pXFonKSk6CiAgICAgICAgICAgICByZWdleCA9IHJlZ2V4ICUgeydzZXAnOiBzZXB9CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JfdG9fcmUoZ2xvYiksIHJlZ2V4KQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQppbmRleCA0ZDhjMDBhLi4zMmFiMjk2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhIGltcG9ydCBpbnN0YWxsX2RhdGEKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQppbmRleCBkOTUzMTU3Li4yMjE3YjMyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzIGltcG9ydCBpbnN0YWxsX2hlYWRlcnMKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKaW5kZXggNTM3OGFhOC4uZmRhNjMxNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQpAQCAtMTA0LDcgKzEwNCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9sZF9kb250X3dyaXRlX2J5dGVjb2RlCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLCBzZWxmLmxvZ3NbMF1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ3NbMF1bMV0gJSBzZWxmLmxvZ3NbMF1bMl0pCiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQppbmRleCA2YzdlYjIwLi41ZWRjMjRhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CkBAIC0xLDExICsxLDExIEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnNwYXduLiIiIgogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVuaXhfc2hlbGwKIAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IF9udF9xdW90ZV9hcmdzCi1mcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24sIGZpbmRfZXhlY3V0YWJsZQorZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIApAQCAtMzAsOSArMzAsOSBAQAogCiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIGV4ZWN1dGFibGUKICAgICAgICAgIyB0aHJvdWdoIHRoZSBzaGVsbCB0aGF0IHJldHVybnMgMQotICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5zaCcpCi0gICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyEvYmluL3NoXG5leGl0IDEnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhJXNcbmV4aXQgMScgJSB1bml4X3NoZWxsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5iYXQnKQogICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJ2V4aXQgMScpCkBAIC00MSw5ICs0MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpc3R1dGlsc0V4ZWNFcnJvciwgc3Bhd24sIFtleGVdKQogCiAgICAgICAgICMgbm93IHNvbWV0aGluZyB0aGF0IHdvcmtzCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLnNoJykKLSAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjIS9iaW4vc2hcbmV4aXQgMCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyElc1xuZXhpdCAwJyAlIHVuaXhfc2hlbGwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLmJhdCcpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnZXhpdCAwJykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKaW5kZXggZTE3MWVlOS4uZWZiYTI3ZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKQEAgLTEsNSArMSw0IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIuIiIiCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQppbmRleCA0NzgzMzZmLi45M2FiYWQzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQpAQCAtNCw3ICs0LDcgQEAKIHRoYXQgKG9wdGlvbmFsbHkpIHRha2VzIGNhcmUgb2Ygc3RyaXBwaW5nIGNvbW1lbnRzLCBpZ25vcmluZyBibGFuawogbGluZXMsIGFuZCBqb2luaW5nIGxpbmVzIHdpdGggYmFja3NsYXNoZXMuIiIiCiAKLWltcG9ydCBzeXMsIG9zLCBpbworaW1wb3J0IHN5cywgaW8KIAogCiBjbGFzcyBUZXh0RmlsZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQppbmRleCBlNDIzMzI1Li5mZGNmNmZhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CkBAIC03LDggKzcsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBpbXBvcnRsaWIudXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgpAQCAtMzUwLDYgKzM1MCwxMSBAQAogICAgIGdlbmVyYXRlZCBpbiBpbmRpcmVjdCBtb2RlOyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcsIGxlYXZlCiAgICAgaXQgc2V0IHRvIE5vbmUuCiAgICAgIiIiCisKKyAgICAjIExhdGUgaW1wb3J0IHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZTogX3Bvc2l4c3VicHJvY2VzcyBpcyBidWlsdCBieQorICAgICMgc2V0dXAucHksIGJ1dCBzZXR1cC5weSB1c2VzIGRpc3R1dGlscy4KKyAgICBpbXBvcnQgc3VicHJvY2VzcworCiAgICAgIyBub3RoaW5nIGlzIGRvbmUgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgVHJ1ZQogICAgIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlOgogICAgICAgICByYWlzZSBEaXN0dXRpbHNCeXRlQ29tcGlsZUVycm9yKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZC4nKQpAQCAtNDEyLDExICs0MTcsOSBAQAogCiAgICAgICAgICAgICBzY3JpcHQuY2xvc2UoKQogCi0gICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgc2NyaXB0X25hbWVdCi0gICAgICAgIGlmIG9wdGltaXplID09IDE6Ci0gICAgICAgICAgICBjbWQuaW5zZXJ0KDEsICItTyIpCi0gICAgICAgIGVsaWYgb3B0aW1pemUgPT0gMjoKLSAgICAgICAgICAgIGNtZC5pbnNlcnQoMSwgIi1PTyIpCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZV0KKyAgICAgICAgY21kLmV4dGVuZChzdWJwcm9jZXNzLl9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKKyAgICAgICAgY21kLmFwcGVuZChzY3JpcHRfbmFtZSkKICAgICAgICAgc3Bhd24oY21kLCBkcnlfcnVuPWRyeV9ydW4pCiAgICAgICAgIGV4ZWN1dGUob3MucmVtb3ZlLCAoc2NyaXB0X25hbWUsKSwgInJlbW92aW5nICVzIiAlIHNjcmlwdF9uYW1lLAogICAgICAgICAgICAgICAgIGRyeV9ydW49ZHJ5X3J1bikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weSBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQppbmRleCBiMGRkOWY0Li4wNjJjOThmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKKysrIGIvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CkBAIC0xNTQsNyArMTU0LDcgQEAKICAgICBnbG9iYWwgX3Byb3Zpc2lvbl9yeAogICAgIGlmIF9wcm92aXNpb25fcnggaXMgTm9uZToKICAgICAgICAgX3Byb3Zpc2lvbl9yeCA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAiKFthLXpBLVpfXVx3Kig/OlwuW2EtekEtWl9dXHcqKSopKD86XHMqXChccyooW14pXHNdKylccypcKSk/JCIsCisgICAgICAgICAgICByIihbYS16QS1aX11cdyooPzpcLlthLXpBLVpfXVx3KikqKSg/OlxzKlwoXHMqKFteKVxzXSspXHMqXCkpPyQiLAogICAgICAgICAgICAgcmUuQVNDSUkpCiAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcCgpCiAgICAgbSA9IF9wcm92aXNpb25fcngubWF0Y2godmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IDM4ZmRkODAuLjBiNzg1NDQgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC0zODEsMTIgKzM4MSwxNSBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0CiAKICMgW1hYXSBOb3JtYWxpemUgd2l0aCByZXNwZWN0IHRvIG9zLnBhdGgucGFyZGlyPwotZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHBhdGgpOgorZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHRlc3RfcGF0aCk6CiAgICAgaWYgbm90IGluc3BlY3QuaXNtb2R1bGUobW9kdWxlKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBhIG1vZHVsZTogJXInICUgbW9kdWxlKQotICAgIGlmIHBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgIGlmIHRlc3RfcGF0aC5zdGFydHN3aXRoKCcvJyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01vZHVsZS1yZWxhdGl2ZSBmaWxlcyBtYXkgbm90IGhhdmUgYWJzb2x1dGUgcGF0aHMnKQogCisgICAgIyBOb3JtYWxpemUgdGhlIHBhdGguIE9uIFdpbmRvd3MsIHJlcGxhY2UgIi8iIHdpdGggIlwiLgorICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbigqKHRlc3RfcGF0aC5zcGxpdCgnLycpKSkKKwogICAgICMgRmluZCB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBwYXRoLgogICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKICAgICAgICAgIyBBIG5vcm1hbCBtb2R1bGUvcGFja2FnZQpAQCAtMzk4LDEzICs0MDEsMTkgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJhc2VkaXIgPSBvcy5jdXJkaXIKICAgICBlbHNlOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG1vZHVsZS5fX3BhdGhfXzoKKyAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIHRlc3RfcGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmdWxscGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxscGF0aAorCiAgICAgICAgICMgQSBtb2R1bGUgdy9vIF9fZmlsZV9fICh0aGlzIGluY2x1ZGVzIGJ1aWx0aW5zKQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZXNvbHZlIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBtb2R1bGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICIlciAoaXQgaGFzIG5vIF9fZmlsZV9fKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAlIG1vZHVsZS5fX25hbWVfXykKIAotICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSBwYXRoLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZWRpciwgKihwYXRoLnNwbGl0KCcvJykpKQorICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSB0ZXN0IHBhdGguCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlZGlyLCB0ZXN0X3BhdGgpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIDIuIEV4YW1wbGUgJiBEb2NUZXN0CkBAIC03NTYsNyArNzY1LDcgQEAKIAogICAgICMgVGhpcyByZWd1bGFyIGV4cHJlc3Npb24gZmluZHMgdGhlIGluZGVudGF0aW9uIG9mIGV2ZXJ5IG5vbi1ibGFuawogICAgICMgbGluZSBpbiBhIHN0cmluZy4KLSAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZSgnXihbIF0qKSg/PVxTKScsIHJlLk1VTFRJTElORSkKKyAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZShyJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCiAKICAgICBkZWYgX21pbl9pbmRlbnQoc2VsZiwgcyk6CiAgICAgICAgICJSZXR1cm4gdGhlIG1pbmltdW0gaW5kZW50YXRpb24gb2YgYW55IG5vbi1ibGFuayBsaW5lIGluIGBzYCIKQEAgLTEwOTcsNyArMTEwNiw3IEBACiAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIHNvdXJjZV9saW5lcyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8rMQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKF58Lio6KVxzKlx3KigifFwnKScpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKF58Lio6KVxzKlx3KigifFwnKScpCiAgICAgICAgICAgICBmb3IgbGluZW5vIGluIHJhbmdlKGxpbmVubywgbGVuKHNvdXJjZV9saW5lcykpOgogICAgICAgICAgICAgICAgIGlmIHBhdC5tYXRjaChzb3VyY2VfbGluZXNbbGluZW5vXSk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KQEAgLTE1OTksMTEgKzE2MDgsMTEgQEAKICAgICAgICAgIyBibGFuayBsaW5lLCB1bmxlc3MgdGhlIERPTlRfQUNDRVBUX0JMQU5LTElORSBmbGFnIGlzIHVzZWQuCiAgICAgICAgIGlmIG5vdCAob3B0aW9uZmxhZ3MgJiBET05UX0FDQ0VQVF9CTEFOS0xJTkUpOgogICAgICAgICAgICAgIyBSZXBsYWNlIDxCTEFOS0xJTkU+IGluIHdhbnQgd2l0aCBhIGJsYW5rIGxpbmUuCi0gICAgICAgICAgICB3YW50ID0gcmUuc3ViKCcoP20pXiVzXHMqPyQnICUgcmUuZXNjYXBlKEJMQU5LTElORV9NQVJLRVIpLAorICAgICAgICAgICAgd2FudCA9IHJlLnN1YihyJyg/bSleJXNccyo/JCcgJSByZS5lc2NhcGUoQkxBTktMSU5FX01BUktFUiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCB3YW50KQogICAgICAgICAgICAgIyBJZiBhIGxpbmUgaW4gZ290IGNvbnRhaW5zIG9ubHkgc3BhY2VzLCB0aGVuIHJlbW92ZSB0aGUKICAgICAgICAgICAgICMgc3BhY2VzLgotICAgICAgICAgICAgZ290ID0gcmUuc3ViKCcoP20pXlxzKj8kJywgJycsIGdvdCkKKyAgICAgICAgICAgIGdvdCA9IHJlLnN1YihyJyg/bSleXHMqPyQnLCAnJywgZ290KQogICAgICAgICAgICAgaWYgZ290ID09IHdhbnQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IDVkZjk1MTEuLjU3ZDAxZmIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTY1Miw4ICs2NTIsOCBAQAogICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKICAgICAgICAgICAgIHJldHVybiBzdHIodmFsdWUpCiAgICAgICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgJ1woJykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsICdcKScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygnLCByJ1woJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsIHInXCknKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNvbnRlbnQoc2VsZik6CkBAIC0xMzU2LDE1ICsxMzU2LDE1IEBACiAKIF93c3Bfc3BsaXR0ZXIgPSByZS5jb21waWxlKHInKFt7fV0rKScuZm9ybWF0KCcnLmpvaW4oV1NQKSkpLnNwbGl0CiBfbm9uX2F0b21fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCi0gICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUT01fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fcHJpbnRhYmxlX2ZpbmRlciA9IHJlLmNvbXBpbGUociJbXHgwMC1ceDIwXHg3Rl0iKS5maW5kYWxsCiBfbm9uX3Rva2VuX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJyxyJ1xdJykpKS5tYXRjaAogX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCiAgICAgJycuam9pbihFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIAogZGVmIF92YWxpZGF0ZV94dGV4dCh4dGV4dCk6CiAgICAgIiIiSWYgaW5wdXQgdG9rZW4gY29udGFpbnMgQVNDSUkgbm9uLXByaW50YWJsZXMsIHJlZ2lzdGVyIGEgZGVmZWN0LiIiIgpAQCAtMTUxNyw3ICsxNTE3LDcgQEAKICAgICByZXR1cm4gdW5zdHJ1Y3R1cmVkCiAKIGRlZiBnZXRfcXBfY3RleHQodmFsdWUpOgotICAgICIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CisgICAgciIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CiAKICAgICBUaGlzIGlzIG5vdCB0aGUgUkZDIGN0ZXh0LCBzaW5jZSB3ZSBhcmUgaGFuZGxpbmcgbmVzdGVkIGNvbW1lbnRzIGluIGNvbW1lbnQKICAgICBhbmQgdW5xdW90aW5nIHF1b3RlZC1wYWlycyBoZXJlLiAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSAnKCknCkBAIC0xODc4LDcgKzE4NzgsNyBAQAogICAgIHJldHVybiBvYnNfbG9jYWxfcGFydCwgdmFsdWUKIAogZGVmIGdldF9kdGV4dCh2YWx1ZSk6Ci0gICAgIiIiIGR0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCBbIF0+IC8gb2JzLWR0ZXh0CisgICAgciIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAogICAgICAgICBvYnMtZHRleHQgPSBvYnMtTk8tV1MtQ1RMIC8gcXVvdGVkLXBhaXIKIAogICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycywgYnV0IGlmIHdlIGZpbmQgYW55CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKaW5kZXggYzBkOThhNC4uZGY0NjQ5NiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpAQCAtMTU0LDYgKzE1NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVzc2FnZSBpcyBiZWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZCBieSBhIGdlbmVyYXRvci4gRGVmYXVsdDogVHJ1ZS4KIAorICAgIG1lc3NhZ2VfZmFjdG9yeSAgICAgLS0gdGhlIGNsYXNzIHRvIHVzZSB0byBjcmVhdGUgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBpcyBOb25lLCB0aGUgZGVmYXVsdCBpcyBNZXNzYWdlLgorCiAgICAgIiIiCiAKICAgICByYWlzZV9vbl9kZWZlY3QgPSBGYWxzZQpAQCAtMTYxLDYgKzE2NCw3IEBACiAgICAgY3RlX3R5cGUgPSAnOGJpdCcKICAgICBtYXhfbGluZV9sZW5ndGggPSA3OAogICAgIG1hbmdsZV9mcm9tXyA9IEZhbHNlCisgICAgbWVzc2FnZV9mYWN0b3J5ID0gTm9uZQogCiAgICAgZGVmIGhhbmRsZV9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgogICAgICAgICAiIiJCYXNlZCBvbiBwb2xpY3ksIGVpdGhlciByYWlzZSBkZWZlY3Qgb3IgY2FsbCByZWdpc3Rlcl9kZWZlY3QuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkgYi9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKaW5kZXggYjk4Y2UyNy4uYjkwNGRlZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CisrKyBiL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQpAQCAtMTQyLDcgKzE0Miw3IEBACiBkZWYgX2VuY29kZV90ZXh0KHN0cmluZywgY2hhcnNldCwgY3RlLCBwb2xpY3kpOgogICAgIGxpbmVzID0gc3RyaW5nLmVuY29kZShjaGFyc2V0KS5zcGxpdGxpbmVzKCkKICAgICBsaW5lc2VwID0gcG9saWN5LmxpbmVzZXAuZW5jb2RlKCdhc2NpaScpCi0gICAgZGVmIGVtYmVkZWRfYm9keShsaW5lcyk6IHJldHVybiBsaW5lc2VwLmpvaW4obGluZXMpICsgbGluZXNlcAorICAgIGRlZiBlbWJlZGRlZF9ib2R5KGxpbmVzKTogcmV0dXJuIGxpbmVzZXAuam9pbihsaW5lcykgKyBsaW5lc2VwCiAgICAgZGVmIG5vcm1hbF9ib2R5KGxpbmVzKTogcmV0dXJuIGInXG4nLmpvaW4obGluZXMpICsgYidcbicKICAgICBpZiBjdGU9PU5vbmU6CiAgICAgICAgICMgVXNlIGhldXJpc3RpY3MgdG8gZGVjaWRlIG9uIHRoZSAiYmVzdCIgZW5jb2RpbmcuCkBAIC0xNTMsNyArMTUzLDcgQEAKICAgICAgICAgaWYgKHBvbGljeS5jdGVfdHlwZSA9PSAnOGJpdCcgYW5kCiAgICAgICAgICAgICAgICAgbWF4KGxlbih4KSBmb3IgeCBpbiBsaW5lcykgPD0gcG9saWN5Lm1heF9saW5lX2xlbmd0aCk6CiAgICAgICAgICAgICByZXR1cm4gJzhiaXQnLCBub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQotICAgICAgICBzbmlmZiA9IGVtYmVkZWRfYm9keShsaW5lc1s6MTBdKQorICAgICAgICBzbmlmZiA9IGVtYmVkZGVkX2JvZHkobGluZXNbOjEwXSkKICAgICAgICAgc25pZmZfcXAgPSBxdW9wcmltaW1lLmJvZHlfZW5jb2RlKHNuaWZmLmRlY29kZSgnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgICAgICAgc25pZmZfYmFzZTY0ID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzbmlmZikKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICBkYXRhID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdsYXRpbi0xJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6Ci0gICAgICAgIGRhdGEgPSBfZW5jb2RlX2Jhc2U2NChlbWJlZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQorICAgICAgICBkYXRhID0gX2VuY29kZV9iYXNlNjQoZW1iZWRkZWRfYm9keShsaW5lcyksIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHt9Ii5mb3JtYXQoY3RlKSkKICAgICByZXR1cm4gY3RlLCBkYXRhCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weSBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CmluZGV4IDBiMzEyZTUuLjdjMDdjYTggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CkBAIC0yNCwxNSArMjQsMTQgQEAKIGltcG9ydCByZQogCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKIGZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotTkxDUkUgPSByZS5jb21waWxlKCdcclxufFxyfFxuJykKLU5MQ1JFX2JvbCA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCi1OTENSRV9lb2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbilcWicpCi1OTENSRV9jcmFjayA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCitOTENSRSA9IHJlLmNvbXBpbGUocidcclxufFxyfFxuJykKK05MQ1JFX2JvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbiknKQorTkxDUkVfZW9sID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKVxaJykKK05MQ1JFX2NyYWNrID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKScpCiAjIFJGQyAyODIyICQzLjYuOCBPcHRpb25hbCBmaWVsZHMuICBmdGV4dCBpcyAlZDMzLTU3IC8gJWQ1OS0xMjYsIEFueSBjaGFyYWN0ZXIKICMgZXhjZXB0IGNvbnRyb2xzLCBTUCwgYW5kICI6Ii4KIGhlYWRlclJFID0gcmUuY29tcGlsZShyJ14oRnJvbSB8W1wwNDEtXDA3MVwwNzMtXDE3Nl0qOnxbXHQgXSknKQpAQCAtMTQ4LDEzICsxNDcsMTEgQEAKICAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKICAgICAgICAgc2VsZi5fb2xkX3N0eWxlX2ZhY3RvcnkgPSBGYWxzZQogICAgICAgICBpZiBfZmFjdG9yeSBpcyBOb25lOgotICAgICAgICAgICAgIyBXaGF0IHRoaXMgc2hvdWxkIGJlOgotICAgICAgICAgICAgI3NlbGYuX2ZhY3RvcnkgPSBwb2xpY3kuZGVmYXVsdF9tZXNzYWdlX2ZhY3RvcnkKLSAgICAgICAgICAgICMgYnV0LCBiZWNhdXNlIHdlIGFyZSBwb3N0IDMuNCBmZWF0dXJlIGZyZWV6ZSwgZml4IHdpdGggdGVtcCBoYWNrOgotICAgICAgICAgICAgaWYgc2VsZi5wb2xpY3kgaXMgY29tcGF0MzI6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IG1lc3NhZ2UuTWVzc2FnZQorICAgICAgICAgICAgaWYgcG9saWN5Lm1lc3NhZ2VfZmFjdG9yeSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBNZXNzYWdlCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBtZXNzYWdlLkVtYWlsTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBwb2xpY3kubWVzc2FnZV9mYWN0b3J5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gX2ZhY3RvcnkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CmluZGV4IDI1NjI3OGQuLmFlNjcwYzIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKKysrIGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQpAQCAtNDQ4LDcgKzQ0OCw4IEBACiAgICAgTGlrZSB0aGUgR2VuZXJhdG9yIGJhc2UgY2xhc3MsIGV4Y2VwdCB0aGF0IG5vbi10ZXh0IHBhcnRzIGFyZSBzdWJzdGl0dXRlZAogICAgIHdpdGggYSBmb3JtYXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFydC4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgZm10PU5vbmUsICosCisgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiTGlrZSBHZW5lcmF0b3IuX19pbml0X18oKSBleGNlcHQgdGhhdCBhbiBhZGRpdGlvbmFsIG9wdGlvbmFsCiAgICAgICAgIGFyZ3VtZW50IGlzIGFsbG93ZWQuCiAKQEAgLTQ3MCw3ICs0NzEsOCBAQAogCiAgICAgICAgIFtOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdCiAgICAgICAgICIiIgotICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuKQorICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeSkKICAgICAgICAgaWYgZm10IGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9mbXQgPSBfRk1UCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVyLnB5IGIvTGliL2VtYWlsL2hlYWRlci5weQppbmRleCA2ODIwZWExLi5jN2IyZGQ5IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVyLnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXIucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogIyBGaW5kIGEgaGVhZGVyIGVtYmVkZGVkIGluIGEgcHV0YXRpdmUgaGVhZGVyIHZhbHVlLiAgVXNlZCB0byBjaGVjayBmb3IKICMgaGVhZGVyIGluamVjdGlvbiBhdHRhY2suCi1fZW1iZWRlZF9oZWFkZXIgPSByZS5jb21waWxlKHInXG5bXiBcdF0rOicpCitfZW1iZWRkZWRfaGVhZGVyID0gcmUuY29tcGlsZShyJ1xuW14gXHRdKzonKQogCiAKIAwKQEAgLTM4NSw3ICszODUsNyBAQAogICAgICAgICBpZiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQogICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlci5fc3RyKGxpbmVzZXApCi0gICAgICAgIGlmIF9lbWJlZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgorICAgICAgICBpZiBfZW1iZWRkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgICByYWlzZSBIZWFkZXJQYXJzZUVycm9yKCJoZWFkZXIgdmFsdWUgYXBwZWFycyB0byBjb250YWluICIKICAgICAgICAgICAgICAgICAiYW4gZW1iZWRkZWQgaGVhZGVyOiB7IXJ9Ii5mb3JtYXQodmFsdWUpKQogICAgICAgICByZXR1cm4gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5IGIvTGliL2VtYWlsL21lc3NhZ2UucHkKaW5kZXggNGIwNDI4My4uYjY1MTJmMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21lc3NhZ2UucHkKQEAgLTQsMTggKzQsMTcgQEAKIAogIiIiQmFzaWMgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBlbWFpbCBwYWNrYWdlIG9iamVjdCBtb2RlbC4iIiIKIAotX19hbGxfXyA9IFsnTWVzc2FnZSddCitfX2FsbF9fID0gWydNZXNzYWdlJywgJ0VtYWlsTWVzc2FnZSddCiAKIGltcG9ydCByZQogaW1wb3J0IHV1CiBpbXBvcnQgcXVvcHJpCi1pbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBQb2xpY3ksIGNvbXBhdDMyCiBmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0CiBmcm9tIGVtYWlsLl9lbmNvZGVkX3dvcmRzIGltcG9ydCBkZWNvZGVfYgogQ2hhcnNldCA9IF9jaGFyc2V0LkNoYXJzZXQKQEAgLTk1MSw2ICs5NTAsMjYgQEAKICAgICAgICAgICAgIHBvbGljeSA9IGRlZmF1bHQKICAgICAgICAgTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3kpCiAKKworICAgIGRlZiBhc19zdHJpbmcoc2VsZiwgdW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj1Ob25lLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZW50aXJlIGZvcm1hdHRlZCBtZXNzYWdlIGFzIGEgc3RyaW5nLgorCisgICAgICAgIE9wdGlvbmFsICd1bml4ZnJvbScsIHdoZW4gdHJ1ZSwgbWVhbnMgaW5jbHVkZSB0aGUgVW5peCBGcm9tXyBlbnZlbG9wZQorICAgICAgICBoZWFkZXIuICBtYXhoZWFkZXJsZW4gaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKKyAgICAgICAgYmFzZSBNZXNzYWdlIGNsYXNzLCBidXQgZGVmYXVsdHMgdG8gTm9uZSwgbWVhbmluZyB0aGF0IHRoZSBwb2xpY3kgdmFsdWUKKyAgICAgICAgZm9yIG1heF9saW5lX2xlbmd0aCBjb250cm9scyB0aGUgaGVhZGVyIG1heGltdW0gbGVuZ3RoLiAgJ3BvbGljeScgaXMKKyAgICAgICAgcGFzc2VkIHRvIHRoZSBHZW5lcmF0b3IgaW5zdGFuY2UgdXNlZCB0byBzZXJpYWxpemUgdGhlIG1lc2FzZ2U7IGlmIGl0CisgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgaW5zdGFuY2UgaXMKKyAgICAgICAgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIGlmIG1heGhlYWRlcmxlbiBpcyBOb25lOgorICAgICAgICAgICAgbWF4aGVhZGVybGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aAorICAgICAgICByZXR1cm4gc3VwZXIoKS5hc19zdHJpbmcobWF4aGVhZGVybGVuPW1heGhlYWRlcmxlbiwgcG9saWN5PXBvbGljeSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5hc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSkpCisKICAgICBkZWYgaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgY19kID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQogICAgICAgICByZXR1cm4gRmFsc2UgaWYgY19kIGlzIE5vbmUgZWxzZSBjX2QuY29udGVudF9kaXNwb3NpdGlvbiA9PSAnYXR0YWNobWVudCcKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5IGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKaW5kZXggZjVjNTkwNS4uNjg3N2U1NSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhcHBsaWNhdGlvbi8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywKLSAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKToKKyAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgICIiIkNyZWF0ZSBhbiBhcHBsaWNhdGlvbi8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXBwbGljYXRpb24gZGF0YS4KQEAgLTMxLDYgKzMxLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ludmFsaWQgYXBwbGljYXRpb24gTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXBwbGljYXRpb24nLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhcHBsaWNhdGlvbicsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5IGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKaW5kZXggZmJjMTE4OS4uNGJjZDdiMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhdWRpby8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gYXVkaW8vKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2F1ZGlvZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXVkaW8gZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNjgsNiArNjgsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBfd2hhdHNuZChfYXVkaW9kYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZmluZCBhdWRpbyBNSU1FIHN1YnR5cGUnKQotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhdWRpbycsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2F1ZGlvJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKQogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9hdWRpb2RhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5IGIvTGliL2VtYWlsL21pbWUvYmFzZS5weQppbmRleCBhYzkxOTI1Li4xYTNmOWI1IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKQEAgLTYsNiArNiw4IEBACiAKIF9fYWxsX18gPSBbJ01JTUVCYXNlJ10KIAoraW1wb3J0IGVtYWlsLnBvbGljeQorCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCiAKIApAQCAtMTMsMTQgKzE1LDE2IEBACiBjbGFzcyBNSU1FQmFzZShtZXNzYWdlLk1lc3NhZ2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIE1JTUUgc3BlY2lhbGl6YXRpb25zLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICoqX3BhcmFtcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJUaGlzIGNvbnN0cnVjdG9yIGFkZHMgYSBDb250ZW50LVR5cGU6IGFuZCBhIE1JTUUtVmVyc2lvbjogaGVhZGVyLgogCiAgICAgICAgIFRoZSBDb250ZW50LVR5cGU6IGhlYWRlciBpcyB0YWtlbiBmcm9tIHRoZSBfbWFpbnR5cGUgYW5kIF9zdWJ0eXBlCiAgICAgICAgIGFyZ3VtZW50cy4gIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhpcyBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzLgogICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZS5NZXNzYWdlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gZW1haWwucG9saWN5LmNvbXBhdDMyCisgICAgICAgIG1lc3NhZ2UuTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBjdHlwZSA9ICclcy8lcycgJSAoX21haW50eXBlLCBfc3VidHlwZSkKICAgICAgICAgc2VsZi5hZGRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCBjdHlwZSwgKipfcGFyYW1zKQogICAgICAgICBzZWxmWydNSU1FLVZlcnNpb24nXSA9ICcxLjAnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9pbWFnZS5weSBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CmluZGV4IDU1NjM4MjMuLjkyNzI0NjQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2ltYWdlZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgaW1hZ2UgZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNDEsNiArNDEsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBpbWdoZHIud2hhdChOb25lLCBfaW1hZ2VkYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZ3Vlc3MgaW1hZ2UgTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdpbWFnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfaW1hZ2VkYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKaW5kZXggMjc1ZGJmZC4uMDdlNGYyZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FTWVzc2FnZShNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgbWVzc2FnZS8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbWVzc2FnZS8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfbXNnIGlzIGEgbWVzc2FnZSBvYmplY3QgYW5kIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZSwgb3IgYQpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBkZWZhdWx0IGlzICJyZmM4MjIiICh0aGlzIGlzIGRlZmluZWQgYnkgdGhlIE1JTUUgc3RhbmRhcmQsIGV2ZW4gdGhvdWdoCiAgICAgICAgIHRoZSB0ZXJtICJyZmM4MjIiIGlzIHRlY2huaWNhbGx5IG91dGRhdGVkIGJ5IFJGQyAyODIyKS4KICAgICAgICAgIiIiCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSkKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnbWVzc2FnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShfbXNnLCBtZXNzYWdlLk1lc3NhZ2UpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBcmd1bWVudCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZScpCiAgICAgICAgICMgSXQncyBjb252ZW5pZW50IHRvIHVzZSB0aGlzIGJhc2UgY2xhc3MgbWV0aG9kLiAgV2UgbmVlZCB0byBkbyBpdApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5IGIvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CmluZGV4IDk2NjE4NjUuLjJkM2YyODggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQorKysgYi9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIG11bHRpcGFydC8qIHR5cGUgbWVzc2FnZXMuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsCisgICAgICAgICAgICAgICAgICosIHBvbGljeT1Ob25lLAogICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGVzIGEgbXVsdGlwYXJ0LyogdHlwZSBtZXNzYWdlLgogCkBAIC0zMyw3ICszNCw3IEBACiAgICAgICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIChvciBwYXNzZWQgaW50byB0aGUgX3BhcmFtcyBhcmd1bWVudCkuCiAgICAgICAgICIiIgotICAgICAgICBNSU1FQmFzZS5fX2luaXRfXyhzZWxmLCAnbXVsdGlwYXJ0JywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRUJhc2UuX19pbml0X18oc2VsZiwgJ211bHRpcGFydCcsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LCAqKl9wYXJhbXMpCiAKICAgICAgICAgIyBJbml0aWFsaXNlIF9wYXlsb2FkIHRvIGFuIGVtcHR5IGxpc3QgYXMgdGhlIE1lc3NhZ2Ugc3VwZXJjbGFzcydzCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24gb2YgaXNfbXVsdGlwYXJ0IGFzc3VtZXMgdGhhdCBfcGF5bG9hZCBpcyBhIGxpc3QgZm9yCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5IGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQppbmRleCBkYTAzMDg2Li4zNWI0NDIzIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKQEAgLTE0LDcgKzE0LDcgQEAKIGNsYXNzIE1JTUVUZXh0KE1JTUVOb25NdWx0aXBhcnQpOgogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfdGV4dCBpcyB0aGUgc3RyaW5nIGZvciB0aGlzIG1lc3NhZ2Ugb2JqZWN0LgpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1dGYtOCcKIAotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IHN0cihfY2hhcnNldCl9KQogCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX3RleHQsIF9jaGFyc2V0KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKaW5kZXggMzVkMGU2OS4uNTEzMTMxMWFjIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvcG9saWN5LnB5CisrKyBiL0xpYi9lbWFpbC9wb2xpY3kucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKIGZyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5IGFzIEhlYWRlclJlZ2lzdHJ5CiBmcm9tIGVtYWlsLmNvbnRlbnRtYW5hZ2VyIGltcG9ydCByYXdfZGF0YV9tYW5hZ2VyCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCiBfX2FsbF9fID0gWwogICAgICdDb21wYXQzMicsCkBAIC04Miw2ICs4Myw3IEBACiAKICAgICAiIiIKIAorICAgIG1lc3NhZ2VfZmFjdG9yeSA9IEVtYWlsTWVzc2FnZQogICAgIHV0ZjggPSBGYWxzZQogICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKICAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkgYi9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CmluZGV4IDhkZDcxMzAuLmFhMmZiN2MgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQpAQCAtMjksNiArMjksNyBAQAogIiIiIyIKIAogaW1wb3J0IGNvZGVjcworaW1wb3J0IHN5cwogZnJvbSAuIGltcG9ydCBhbGlhc2VzCiAKIF9jYWNoZSA9IHt9CkBAIC01NCw2ICs1NSw3IEBACiAgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShlbmNvZGluZywgYnl0ZXMpOgogICAgICAgICBlbmNvZGluZyA9IHN0cihlbmNvZGluZywgImFzY2lpIikKKwogICAgIGNoYXJzID0gW10KICAgICBwdW5jdCA9IEZhbHNlCiAgICAgZm9yIGMgaW4gZW5jb2Rpbmc6CkBAIC05Nyw2ICs5OSw4IEBACiAgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCdlbmNvZGluZ3MuJyArIG1vZG5hbWUsIGZyb21saXN0PV9pbXBvcnRfdGFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MCkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBtYXkgb2NjdXIgYmVjYXVzZSAnZW5jb2RpbmdzLihtb2RuYW1lKScgZG9lcyBub3QgZXhpc3QsCisgICAgICAgICAgICAjIG9yIGJlY2F1c2UgaXQgaW1wb3J0cyBhIG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCAoc2VlIG1iY3MgYW5kIG9lbSkKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJyZWFrCkBAIC0xNTAsMyArMTU0LDE2IEBACiAKICMgUmVnaXN0ZXIgdGhlIHNlYXJjaF9mdW5jdGlvbiBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5CiBjb2RlY3MucmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKQorCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBkZWYgX2FsaWFzX21iY3MoZW5jb2RpbmcpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX2Jvb3Rsb2NhbGUKKyAgICAgICAgICAgIGlmIGVuY29kaW5nID09IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgZW5jb2RpbmdzLm1iY3MKKyAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmdzLm1iY3MuZ2V0cmVnZW50cnkoKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAjIEltcG9ydHMgbWF5IGZhaWwgd2hpbGUgd2UgYXJlIHNodXR0aW5nIGRvd24KKyAgICAgICAgICAgIHBhc3MKKworICAgIGNvZGVjcy5yZWdpc3RlcihfYWxpYXNfbWJjcykKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQppbmRleCA2N2M4MjhkLi4yZTYzYzJmIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKKysrIGIvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CkBAIC00NTgsNiArNDU4LDcgQEAKICAgICAnbWFjdHVya2lzaCcgICAgICAgICA6ICdtYWNfdHVya2lzaCcsCiAKICAgICAjIG1iY3MgY29kZWMKKyAgICAnYW5zaScgICAgICAgICAgICAgICA6ICdtYmNzJywKICAgICAnZGJjcycgICAgICAgICAgICAgICA6ICdtYmNzJywKIAogICAgICMgcHRjcDE1NCBjb2RlYwpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9vZW0ucHkgYi9MaWIvZW5jb2RpbmdzL29lbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzM0MjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VuY29kaW5ncy9vZW0ucHkKQEAgLTAsMCArMSw0MSBAQAorIiIiIFB5dGhvbiAnb2VtJyBDb2RlYyBmb3IgV2luZG93cworCisiIiIKKyMgSW1wb3J0IHRoZW0gZXhwbGljaXRseSB0byBjYXVzZSBhbiBJbXBvcnRFcnJvcgorIyBvbiBub24tV2luZG93cyBzeXN0ZW1zCitmcm9tIGNvZGVjcyBpbXBvcnQgb2VtX2VuY29kZSwgb2VtX2RlY29kZQorIyBmb3IgSW5jcmVtZW50YWxEZWNvZGVyLCBJbmNyZW1lbnRhbEVuY29kZXIsIC4uLgoraW1wb3J0IGNvZGVjcworCisjIyMgQ29kZWMgQVBJcworCitlbmNvZGUgPSBvZW1fZW5jb2RlCisKK2RlZiBkZWNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgcmV0dXJuIG9lbV9kZWNvZGUoaW5wdXQsIGVycm9ycywgVHJ1ZSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIG9lbV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQorCitjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBfYnVmZmVyX2RlY29kZSA9IG9lbV9kZWNvZGUKKworY2xhc3MgU3RyZWFtV3JpdGVyKGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIGVuY29kZSA9IG9lbV9lbmNvZGUKKworY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIGRlY29kZSA9IG9lbV9kZWNvZGUKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdvZW0nLAorICAgICAgICBlbmNvZGU9ZW5jb2RlLAorICAgICAgICBkZWNvZGU9ZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKZGlmZiAtLWdpdCBhL0xpYi9lbnVtLnB5IGIvTGliL2VudW0ucHkKaW5kZXggYjg3ODdkMS4uNGJlYjE4NyAxMDA2NDQKLS0tIGEvTGliL2VudW0ucHkKKysrIGIvTGliL2VudW0ucHkKQEAgLTEsOCArMSwyMCBAQAogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUsIER5bmFtaWNDbGFzc0F0dHJpYnV0ZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQorZnJvbSBvcGVyYXRvciBpbXBvcnQgb3JfIGFzIF9vcl8sIGFuZF8gYXMgX2FuZF8sIHhvciwgbmVnCiAKLV9fYWxsX18gPSBbJ0VudW0nLCAnSW50RW51bScsICd1bmlxdWUnXQorIyB0cnkgX2NvbGxlY3Rpb25zIGZpcnN0IHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorCisKK19fYWxsX18gPSBbCisgICAgICAgICdFbnVtTWV0YScsCisgICAgICAgICdFbnVtJywgJ0ludEVudW0nLCAnRmxhZycsICdJbnRGbGFnJywKKyAgICAgICAgJ2F1dG8nLCAndW5pcXVlJywKKyAgICAgICAgXQogCiAKIGRlZiBfaXNfZGVzY3JpcHRvcihvYmopOgpAQCAtMjgsNyArNDAsNiBAQAogICAgICAgICAgICAgbmFtZVstMjotMV0gIT0gJ18nIGFuZAogICAgICAgICAgICAgbGVuKG5hbWUpID4gMikKIAotCiBkZWYgX21ha2VfY2xhc3NfdW5waWNrbGFibGUoY2xzKToKICAgICAiIiJNYWtlIHRoZSBnaXZlbiBjbGFzcyB1bi1waWNrbGFibGUuIiIiCiAgICAgZGVmIF9icmVha19vbl9jYWxsX3JlZHVjZShzZWxmLCBwcm90byk6CkBAIC0zNiw2ICs0NywxMyBAQAogICAgIGNscy5fX3JlZHVjZV9leF9fID0gX2JyZWFrX29uX2NhbGxfcmVkdWNlCiAgICAgY2xzLl9fbW9kdWxlX18gPSAnPHVua25vd24+JwogCitfYXV0b19udWxsID0gb2JqZWN0KCkKK2NsYXNzIGF1dG86CisgICAgIiIiCisgICAgSW5zdGFuY2VzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGluIEVudW0gY2xhc3Mgc3VpdGVzLgorICAgICIiIgorICAgIHZhbHVlID0gX2F1dG9fbnVsbAorCiAKIGNsYXNzIF9FbnVtRGljdChkaWN0KToKICAgICAiIiJUcmFjayBlbnVtIG1lbWJlciBvcmRlciBhbmQgZW5zdXJlIG1lbWJlciBuYW1lcyBhcmUgbm90IHJldXNlZC4KQEAgLTQ3LDYgKzY1LDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgICBzZWxmLl9tZW1iZXJfbmFtZXMgPSBbXQorICAgICAgICBzZWxmLl9sYXN0X3ZhbHVlcyA9IFtdCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgICIiIkNoYW5nZXMgYW55dGhpbmcgbm90IGR1bmRlcmVkIG9yIG5vdCBhIGRlc2NyaXB0b3IuCkBAIC01OCwyMSArNzcsMzIgQEAKIAogICAgICAgICAiIiIKICAgICAgICAgaWYgX2lzX3N1bmRlcihrZXkpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignX25hbWVzXyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBFbnVtIHVzZScpCisgICAgICAgICAgICBpZiBrZXkgbm90IGluICgKKyAgICAgICAgICAgICAgICAgICAgJ19vcmRlcl8nLCAnX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXycsCisgICAgICAgICAgICAgICAgICAgICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nLCAnX21pc3NpbmdfJywKKyAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdfbmFtZXNfIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIEVudW0gdXNlJykKKyAgICAgICAgICAgIGlmIGtleSA9PSAnX2dlbmVyYXRlX25leHRfdmFsdWVfJzoKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICdfZ2VuZXJhdGVfbmV4dF92YWx1ZScsIHZhbHVlKQogICAgICAgICBlbGlmIF9pc19kdW5kZXIoa2V5KToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIGtleSA9PSAnX19vcmRlcl9fJzoKKyAgICAgICAgICAgICAgICBrZXkgPSAnX29yZGVyXycKICAgICAgICAgZWxpZiBrZXkgaW4gc2VsZi5fbWVtYmVyX25hbWVzOgogICAgICAgICAgICAgIyBkZXNjcmlwdG9yIG92ZXJ3cml0aW5nIGFuIGVudW0/CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0F0dGVtcHRlZCB0byByZXVzZSBrZXk6ICVyJyAlIGtleSkKICAgICAgICAgZWxpZiBub3QgX2lzX2Rlc2NyaXB0b3IodmFsdWUpOgogICAgICAgICAgICAgaWYga2V5IGluIHNlbGY6CiAgICAgICAgICAgICAgICAgIyBlbnVtIG92ZXJ3cml0aW5nIGEgZGVzY3JpcHRvcj8KLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0tleSBhbHJlYWR5IGRlZmluZWQgYXM6ICVyJyAlIHNlbGZba2V5XSkKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVyIGFscmVhZHkgZGVmaW5lZCBhczogJXInICUgKGtleSwgc2VsZltrZXldKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGF1dG8pOgorICAgICAgICAgICAgICAgIGlmIHZhbHVlLnZhbHVlID09IF9hdXRvX251bGw6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gc2VsZi5fZ2VuZXJhdGVfbmV4dF92YWx1ZShrZXksIDEsIGxlbihzZWxmLl9tZW1iZXJfbmFtZXMpLCBzZWxmLl9sYXN0X3ZhbHVlc1s6XSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnZhbHVlCiAgICAgICAgICAgICBzZWxmLl9tZW1iZXJfbmFtZXMuYXBwZW5kKGtleSkKKyAgICAgICAgICAgIHNlbGYuX2xhc3RfdmFsdWVzLmFwcGVuZCh2YWx1ZSkKICAgICAgICAgc3VwZXIoKS5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQogCiAKLQogIyBEdW1teSB2YWx1ZSBmb3IgRW51bSBhcyBFbnVtTWV0YSBleHBsaWNpdGx5IGNoZWNrcyBmb3IgaXQsIGJ1dCBvZiBjb3Vyc2UKICMgdW50aWwgRW51bU1ldGEgZmluaXNoZXMgcnVubmluZyB0aGUgZmlyc3QgdGltZSB0aGUgRW51bSBjbGFzcyBkb2Vzbid0IGV4aXN0LgogIyBUaGlzIGlzIGFsc28gd2h5IHRoZXJlIGFyZSBjaGVja3MgaW4gRW51bU1ldGEgbGlrZSBgaWYgRW51bSBpcyBub3QgTm9uZWAKQEAgLTgzLDcgKzExMywxMyBAQAogICAgICIiIk1ldGFjbGFzcyBmb3IgRW51bSIiIgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBjbHMsIGJhc2VzKToKLSAgICAgICAgcmV0dXJuIF9FbnVtRGljdCgpCisgICAgICAgICMgY3JlYXRlIHRoZSBuYW1lc3BhY2UgZGljdAorICAgICAgICBlbnVtX2RpY3QgPSBfRW51bURpY3QoKQorICAgICAgICAjIGluaGVyaXQgcHJldmlvdXMgZmxhZ3MgYW5kIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyBmdW5jdGlvbgorICAgICAgICBtZW1iZXJfdHlwZSwgZmlyc3RfZW51bSA9IG1ldGFjbHMuX2dldF9taXhpbnNfKGJhc2VzKQorICAgICAgICBpZiBmaXJzdF9lbnVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW51bV9kaWN0WydfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nXSA9IGdldGF0dHIoZmlyc3RfZW51bSwgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXycsIE5vbmUpCisgICAgICAgIHJldHVybiBlbnVtX2RpY3QKIAogICAgIGRlZiBfX25ld19fKG1ldGFjbHMsIGNscywgYmFzZXMsIGNsYXNzZGljdCk6CiAgICAgICAgICMgYW4gRW51bSBjbGFzcyBpcyBmaW5hbCBvbmNlIGVudW1lcmF0aW9uIGl0ZW1zIGhhdmUgYmVlbiBkZWZpbmVkOyBpdApAQCAtOTYsMTIgKzEzMiwxNSBAQAogCiAgICAgICAgICMgc2F2ZSBlbnVtIGl0ZW1zIGludG8gc2VwYXJhdGUgbWFwcGluZyBzbyB0aGV5IGRvbid0IGdldCBiYWtlZCBpbnRvCiAgICAgICAgICMgdGhlIG5ldyBjbGFzcwotICAgICAgICBtZW1iZXJzID0ge2s6IGNsYXNzZGljdFtrXSBmb3IgayBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lc30KKyAgICAgICAgZW51bV9tZW1iZXJzID0ge2s6IGNsYXNzZGljdFtrXSBmb3IgayBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lc30KICAgICAgICAgZm9yIG5hbWUgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXM6CiAgICAgICAgICAgICBkZWwgY2xhc3NkaWN0W25hbWVdCiAKKyAgICAgICAgIyBhZGp1c3QgdGhlIHN1bmRlcnMKKyAgICAgICAgX29yZGVyXyA9IGNsYXNzZGljdC5wb3AoJ19vcmRlcl8nLCBOb25lKQorCiAgICAgICAgICMgY2hlY2sgZm9yIGlsbGVnYWwgZW51bSBuYW1lcyAoYW55IG90aGVycz8pCi0gICAgICAgIGludmFsaWRfbmFtZXMgPSBzZXQobWVtYmVycykgJiB7J21ybycsIH0KKyAgICAgICAgaW52YWxpZF9uYW1lcyA9IHNldChlbnVtX21lbWJlcnMpICYgeydtcm8nLCB9CiAgICAgICAgIGlmIGludmFsaWRfbmFtZXM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVudW0gbWVtYmVyIG5hbWU6IHswfScuZm9ybWF0KAogICAgICAgICAgICAgICAgICcsJy5qb2luKGludmFsaWRfbmFtZXMpKSkKQEAgLTE0NSw3ICsxODQsNyBAQAogICAgICAgICAjIGEgY3VzdG9tIF9fbmV3X18gaXMgZG9pbmcgc29tZXRoaW5nIGZ1bmt5IHdpdGggdGhlIHZhbHVlcyAtLSBzdWNoIGFzCiAgICAgICAgICMgYXV0by1udW1iZXJpbmcgOykKICAgICAgICAgZm9yIG1lbWJlcl9uYW1lIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzOgotICAgICAgICAgICAgdmFsdWUgPSBtZW1iZXJzW21lbWJlcl9uYW1lXQorICAgICAgICAgICAgdmFsdWUgPSBlbnVtX21lbWJlcnNbbWVtYmVyX25hbWVdCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICAgICAgIGFyZ3MgPSAodmFsdWUsICkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNTksNyArMTk4LDEwIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyID0gX19uZXdfXyhlbnVtX2NsYXNzLCAqYXJncykKICAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihlbnVtX21lbWJlciwgJ192YWx1ZV8nKToKLSAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IG1lbWJlcl90eXBlKCphcmdzKQorICAgICAgICAgICAgICAgICAgICBpZiBtZW1iZXJfdHlwZSBpcyBvYmplY3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSBtZW1iZXJfdHlwZSgqYXJncykKICAgICAgICAgICAgIHZhbHVlID0gZW51bV9tZW1iZXIuX3ZhbHVlXwogICAgICAgICAgICAgZW51bV9tZW1iZXIuX25hbWVfID0gbWVtYmVyX25hbWUKICAgICAgICAgICAgIGVudW1fbWVtYmVyLl9fb2JqY2xhc3NfXyA9IGVudW1fY2xhc3MKQEAgLTIwNCw2ICsyNDYsMTQgQEAKICAgICAgICAgICAgIGlmIHNhdmVfbmV3OgogICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX19uZXdfbWVtYmVyX18gPSBfX25ld19fCiAgICAgICAgICAgICBlbnVtX2NsYXNzLl9fbmV3X18gPSBFbnVtLl9fbmV3X18KKworICAgICAgICAjIHB5MyBzdXBwb3J0IGZvciBkZWZpbml0aW9uIG9yZGVyIChoZWxwcyBrZWVwIHB5Mi9weTMgY29kZSBpbiBzeW5jKQorICAgICAgICBpZiBfb3JkZXJfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShfb3JkZXJfLCBzdHIpOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSBfb3JkZXJfLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKKyAgICAgICAgICAgIGlmIF9vcmRlcl8gIT0gZW51bV9jbGFzcy5fbWVtYmVyX25hbWVzXzoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJykKKwogICAgICAgICByZXR1cm4gZW51bV9jbGFzcwogCiAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgpAQCAtMzI1LDEzICszNzUsMTkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIG1ldGFjbHMgPSBjbHMuX19jbGFzc19fCiAgICAgICAgIGJhc2VzID0gKGNscywgKSBpZiB0eXBlIGlzIE5vbmUgZWxzZSAodHlwZSwgY2xzKQorICAgICAgICBfLCBmaXJzdF9lbnVtID0gY2xzLl9nZXRfbWl4aW5zXyhiYXNlcykKICAgICAgICAgY2xhc3NkaWN0ID0gbWV0YWNscy5fX3ByZXBhcmVfXyhjbGFzc19uYW1lLCBiYXNlcykKIAogICAgICAgICAjIHNwZWNpYWwgcHJvY2Vzc2luZyBuZWVkZWQgZm9yIG5hbWVzPwogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCBzdHIpOgogICAgICAgICAgICAgbmFtZXMgPSBuYW1lcy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZXMsICh0dXBsZSwgbGlzdCkpIGFuZCBpc2luc3RhbmNlKG5hbWVzWzBdLCBzdHIpOgotICAgICAgICAgICAgbmFtZXMgPSBbKGUsIGkpIGZvciAoaSwgZSkgaW4gZW51bWVyYXRlKG5hbWVzLCBzdGFydCldCisgICAgICAgICAgICBvcmlnaW5hbF9uYW1lcywgbmFtZXMgPSBuYW1lcywgW10KKyAgICAgICAgICAgIGxhc3RfdmFsdWVzID0gW10KKyAgICAgICAgICAgIGZvciBjb3VudCwgbmFtZSBpbiBlbnVtZXJhdGUob3JpZ2luYWxfbmFtZXMpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gZmlyc3RfZW51bS5fZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlc1s6XSkKKyAgICAgICAgICAgICAgICBsYXN0X3ZhbHVlcy5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCiAKICAgICAgICAgIyBIZXJlLCBuYW1lcyBpcyBlaXRoZXIgYW4gaXRlcmFibGUgb2YgKG5hbWUsIHZhbHVlKSBvciBhIG1hcHBpbmcuCiAgICAgICAgIGZvciBpdGVtIGluIG5hbWVzOgpAQCAtNDczLDYgKzUyOSwyMCBAQAogICAgICAgICAgICAgZm9yIG1lbWJlciBpbiBjbHMuX21lbWJlcl9tYXBfLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGlmIG1lbWJlci5fdmFsdWVfID09IHZhbHVlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtYmVyCisgICAgICAgICMgc3RpbGwgbm90IGZvdW5kIC0tIHRyeSBfbWlzc2luZ18gaG9vaworICAgICAgICByZXR1cm4gY2xzLl9taXNzaW5nXyh2YWx1ZSkKKworICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CisgICAgICAgIGZvciBsYXN0X3ZhbHVlIGluIHJldmVyc2VkKGxhc3RfdmFsdWVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFzdF92YWx1ZSArIDEKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciBpcyBub3QgYSB2YWxpZCAlcyIgJSAodmFsdWUsIGNscy5fX25hbWVfXykpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC01NDQsOCArNjE0LDIxIEBACiAgICAgICAgICAgICBzb3VyY2UgPSB2YXJzKHNvdXJjZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNvdXJjZSA9IG1vZHVsZV9nbG9iYWxzCi0gICAgICAgIG1lbWJlcnMgPSB7bmFtZTogdmFsdWUgZm9yIG5hbWUsIHZhbHVlIGluIHNvdXJjZS5pdGVtcygpCi0gICAgICAgICAgICAgICAgaWYgZmlsdGVyKG5hbWUpfQorICAgICAgICAjIFdlIHVzZSBhbiBPcmRlcmVkRGljdCBvZiBzb3J0ZWQgc291cmNlIGtleXMgc28gdGhhdCB0aGUKKyAgICAgICAgIyBfdmFsdWUybWVtYmVyX21hcCBpcyBwb3B1bGF0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgZXZlcnkgdGltZQorICAgICAgICAjIGZvciBhIGNvbnNpc3RlbnQgcmV2ZXJzZSBtYXBwaW5nIG9mIG51bWJlciB0byBuYW1lIHdoZW4gdGhlcmUKKyAgICAgICAgIyBhcmUgbXVsdGlwbGUgbmFtZXMgZm9yIHRoZSBzYW1lIG51bWJlciByYXRoZXIgdGhhbiB2YXJ5aW5nCisgICAgICAgICMgYmV0d2VlbiBydW5zIGR1ZSB0byBoYXNoIHJhbmRvbWl6YXRpb24gb2YgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5LgorICAgICAgICBtZW1iZXJzID0gWworICAgICAgICAgICAgICAgIChuYW1lLCBzb3VyY2VbbmFtZV0pCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc291cmNlLmtleXMoKQorICAgICAgICAgICAgICAgIGlmIGZpbHRlcihuYW1lKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBzb3J0IGJ5IHZhbHVlCisgICAgICAgICAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSB0OiAodFsxXSwgdFswXSkpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAjIHVubGVzcyBzb21lIHZhbHVlcyBhcmVuJ3QgY29tcGFyYWJsZSwgaW4gd2hpY2ggY2FzZSBzb3J0IGJ5IG5hbWUKKyAgICAgICAgICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIHQ6IHRbMF0pCiAgICAgICAgIGNscyA9IGNscyhuYW1lLCBtZW1iZXJzLCBtb2R1bGU9bW9kdWxlKQogICAgICAgICBjbHMuX19yZWR1Y2VfZXhfXyA9IF9yZWR1Y2VfZXhfYnlfbmFtZQogICAgICAgICBtb2R1bGVfZ2xvYmFscy51cGRhdGUoY2xzLl9fbWVtYmVyc19fKQpAQCAtNTYwLDYgKzY0MywxODAgQEAKIGRlZiBfcmVkdWNlX2V4X2J5X25hbWUoc2VsZiwgcHJvdG8pOgogICAgIHJldHVybiBzZWxmLm5hbWUKIAorY2xhc3MgRmxhZyhFbnVtKToKKyAgICAiIiJTdXBwb3J0IGZvciBmbGFncyIiIgorCisgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBuZXh0IHZhbHVlIHdoZW4gbm90IGdpdmVuLgorCisgICAgICAgIG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIKKyAgICAgICAgc3RhcnQ6IHRoZSBpbml0aXRhbCBzdGFydCB2YWx1ZSBvciBOb25lCisgICAgICAgIGNvdW50OiB0aGUgbnVtYmVyIG9mIGV4aXN0aW5nIG1lbWJlcnMKKyAgICAgICAgbGFzdF92YWx1ZTogdGhlIGxhc3QgdmFsdWUgYXNzaWduZWQgb3IgTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGNvdW50OgorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0IGlmIHN0YXJ0IGlzIG5vdCBOb25lIGVsc2UgMQorICAgICAgICBmb3IgbGFzdF92YWx1ZSBpbiByZXZlcnNlZChsYXN0X3ZhbHVlcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaGlnaF9iaXQgPSBfaGlnaF9iaXQobGFzdF92YWx1ZSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ludmFsaWQgRmxhZyB2YWx1ZTogJXInICUgbGFzdF92YWx1ZSkgZnJvbSBOb25lCisgICAgICAgIHJldHVybiAyICoqIChoaWdoX2JpdCsxKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKKyAgICAgICAgb3JpZ2luYWxfdmFsdWUgPSB2YWx1ZQorICAgICAgICBpZiB2YWx1ZSA8IDA6CisgICAgICAgICAgICB2YWx1ZSA9IH52YWx1ZQorICAgICAgICBwb3NzaWJsZV9tZW1iZXIgPSBjbHMuX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyh2YWx1ZSkKKyAgICAgICAgaWYgb3JpZ2luYWxfdmFsdWUgPCAwOgorICAgICAgICAgICAgcG9zc2libGVfbWVtYmVyID0gfnBvc3NpYmxlX21lbWJlcgorICAgICAgICByZXR1cm4gcG9zc2libGVfbWVtYmVyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyhjbHMsIHZhbHVlKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIGNvbXBvc2l0ZSBtZW1iZXIgaWZmIHZhbHVlIGNvbnRhaW5zIG9ubHkgbWVtYmVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHBzZXVkb19tZW1iZXIgPSBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfLmdldCh2YWx1ZSwgTm9uZSkKKyAgICAgICAgaWYgcHNldWRvX21lbWJlciBpcyBOb25lOgorICAgICAgICAgICAgIyB2ZXJpZnkgYWxsIGJpdHMgYXJlIGFjY291bnRlZCBmb3IKKyAgICAgICAgICAgIF8sIGV4dHJhX2ZsYWdzID0gX2RlY29tcG9zZShjbHMsIHZhbHVlKQorICAgICAgICAgICAgaWYgZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQorICAgICAgICAgICAgIyBjb25zdHJ1Y3QgYSBzaW5nbGV0b24gZW51bSBwc2V1ZG8tbWVtYmVyCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gb2JqZWN0Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgcHNldWRvX21lbWJlci5fbmFtZV8gPSBOb25lCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgY2xzLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0gPSBwc2V1ZG9fbWVtYmVyCisgICAgICAgIHJldHVybiBwc2V1ZG9fbWVtYmVyCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3RoZXIuX3ZhbHVlXyAmIHNlbGYuX3ZhbHVlXyA9PSBvdGhlci5fdmFsdWVfCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuICc8JXMuJXM6ICVyPicgJSAoY2xzLl9fbmFtZV9fLCBzZWxmLl9uYW1lXywgc2VsZi5fdmFsdWVfKQorICAgICAgICBtZW1iZXJzLCB1bmNvdmVyZWQgPSBfZGVjb21wb3NlKGNscywgc2VsZi5fdmFsdWVfKQorICAgICAgICByZXR1cm4gJzwlcy4lczogJXI+JyAlICgKKyAgICAgICAgICAgICAgICBjbHMuX19uYW1lX18sCisgICAgICAgICAgICAgICAgJ3wnLmpvaW4oW3N0cihtLl9uYW1lXyBvciBtLl92YWx1ZV8pIGZvciBtIGluIG1lbWJlcnNdKSwKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZV8sCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAoY2xzLl9fbmFtZV9fLCBzZWxmLl9uYW1lXykKKyAgICAgICAgbWVtYmVycywgdW5jb3ZlcmVkID0gX2RlY29tcG9zZShjbHMsIHNlbGYuX3ZhbHVlXykKKyAgICAgICAgaWYgbGVuKG1lbWJlcnMpID09IDEgYW5kIG1lbWJlcnNbMF0uX25hbWVfIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVyJyAlIChjbHMuX19uYW1lX18sIG1lbWJlcnNbMF0uX3ZhbHVlXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXMnICUgKAorICAgICAgICAgICAgICAgICAgICBjbHMuX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICd8Jy5qb2luKFtzdHIobS5fbmFtZV8gb3IgbS5fdmFsdWVfKSBmb3IgbSBpbiBtZW1iZXJzXSksCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdmFsdWVfKQorCisgICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyB8IG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyAmIG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX194b3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyBeIG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX19pbnZlcnRfXyhzZWxmKToKKyAgICAgICAgbWVtYmVycywgdW5jb3ZlcmVkID0gX2RlY29tcG9zZShzZWxmLl9fY2xhc3NfXywgc2VsZi5fdmFsdWVfKQorICAgICAgICBpbnZlcnRlZF9tZW1iZXJzID0gWworICAgICAgICAgICAgICAgIG0gZm9yIG0gaW4gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgICAgICAgICBpZiBtIG5vdCBpbiBtZW1iZXJzIGFuZCBub3QgbS5fdmFsdWVfICYgc2VsZi5fdmFsdWVfCisgICAgICAgICAgICAgICAgXQorICAgICAgICBpbnZlcnRlZCA9IHJlZHVjZShfb3JfLCBpbnZlcnRlZF9tZW1iZXJzLCBzZWxmLl9fY2xhc3NfXygwKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludmVydGVkKQorCisKK2NsYXNzIEludEZsYWcoaW50LCBGbGFnKToKKyAgICAiIiJTdXBwb3J0IGZvciBpbnRlZ2VyLWJhc2VkIEZsYWdzIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGlzIG5vdCBhIHZhbGlkICVzIiAlICh2YWx1ZSwgY2xzLl9fbmFtZV9fKSkKKyAgICAgICAgbmV3X21lbWJlciA9IGNscy5fY3JlYXRlX3BzZXVkb19tZW1iZXJfKHZhbHVlKQorICAgICAgICByZXR1cm4gbmV3X21lbWJlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jcmVhdGVfcHNldWRvX21lbWJlcl8oY2xzLCB2YWx1ZSk6CisgICAgICAgIHBzZXVkb19tZW1iZXIgPSBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfLmdldCh2YWx1ZSwgTm9uZSkKKyAgICAgICAgaWYgcHNldWRvX21lbWJlciBpcyBOb25lOgorICAgICAgICAgICAgbmVlZF90b19jcmVhdGUgPSBbdmFsdWVdCisgICAgICAgICAgICAjIGdldCB1bmFjY291bnRlZCBmb3IgYml0cworICAgICAgICAgICAgXywgZXh0cmFfZmxhZ3MgPSBfZGVjb21wb3NlKGNscywgdmFsdWUpCisgICAgICAgICAgICAjIHRpbWVyID0gMTAKKyAgICAgICAgICAgIHdoaWxlIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICMgdGltZXIgLT0gMQorICAgICAgICAgICAgICAgIGJpdCA9IF9oaWdoX2JpdChleHRyYV9mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlID0gMiAqKiBiaXQKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ192YWx1ZSBub3QgaW4gY2xzLl92YWx1ZTJtZW1iZXJfbWFwXyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUgbm90IGluIG5lZWRfdG9fY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBuZWVkX3RvX2NyZWF0ZS5hcHBlbmQoZmxhZ192YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBleHRyYV9mbGFncyA9PSAtZmxhZ192YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ3MgPSAwCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ3MgXj0gZmxhZ192YWx1ZQorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHJldmVyc2VkKG5lZWRfdG9fY3JlYXRlKToKKyAgICAgICAgICAgICAgICAjIGNvbnN0cnVjdCBzaW5nbGV0b24gcHNldWRvLW1lbWJlcnMKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyA9IE5vbmUKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgICAgIGNscy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdID0gcHNldWRvX21lbWJlcgorICAgICAgICByZXR1cm4gcHNldWRvX21lbWJlcgorCisgICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyB8IHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gJiBzZWxmLl9fY2xhc3NfXyhvdGhlcikuX3ZhbHVlXykKKworICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyBeIHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorCisgICAgX19yb3JfXyA9IF9fb3JfXworICAgIF9fcmFuZF9fID0gX19hbmRfXworICAgIF9fcnhvcl9fID0gX194b3JfXworCisgICAgZGVmIF9faW52ZXJ0X18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19jbGFzc19fKH5zZWxmLl92YWx1ZV8pCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitkZWYgX2hpZ2hfYml0KHZhbHVlKToKKyAgICAiIiJyZXR1cm5zIGluZGV4IG9mIGhpZ2hlc3QgYml0LCBvciAtMSBpZiB2YWx1ZSBpcyB6ZXJvIG9yIG5lZ2F0aXZlIiIiCisgICAgcmV0dXJuIHZhbHVlLmJpdF9sZW5ndGgoKSAtIDEKKwogZGVmIHVuaXF1ZShlbnVtZXJhdGlvbik6CiAgICAgIiIiQ2xhc3MgZGVjb3JhdG9yIGZvciBlbnVtZXJhdGlvbnMgZW5zdXJpbmcgdW5pcXVlIG1lbWJlciB2YWx1ZXMuIiIiCiAgICAgZHVwbGljYXRlcyA9IFtdCkBAIC01NzIsMyArODI5LDQwIEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2R1cGxpY2F0ZSB2YWx1ZXMgZm91bmQgaW4gJXI6ICVzJyAlCiAgICAgICAgICAgICAgICAgKGVudW1lcmF0aW9uLCBhbGlhc19kZXRhaWxzKSkKICAgICByZXR1cm4gZW51bWVyYXRpb24KKworZGVmIF9kZWNvbXBvc2UoZmxhZywgdmFsdWUpOgorICAgICIiIkV4dHJhY3QgYWxsIG1lbWJlcnMgZnJvbSB0aGUgdmFsdWUuIiIiCisgICAgIyBfZGVjb21wb3NlIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSB2YWx1ZSBpcyBub3QgbmFtZWQKKyAgICBub3RfY292ZXJlZCA9IHZhbHVlCisgICAgbmVnYXRpdmUgPSB2YWx1ZSA8IDAKKyAgICBpZiBuZWdhdGl2ZToKKyAgICAgICAgIyBvbmx5IGNoZWNrIGZvciBuYW1lZCBmbGFncworICAgICAgICBmbGFnc190b19jaGVjayA9IFsKKyAgICAgICAgICAgICAgICAobSwgdikKKyAgICAgICAgICAgICAgICBmb3IgdiwgbSBpbiBmbGFnLl92YWx1ZTJtZW1iZXJfbWFwXy5pdGVtcygpCisgICAgICAgICAgICAgICAgaWYgbS5uYW1lIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgICMgY2hlY2sgZm9yIG5hbWVkIGZsYWdzIGFuZCBwb3dlcnMtb2YtdHdvIGZsYWdzCisgICAgICAgIGZsYWdzX3RvX2NoZWNrID0gWworICAgICAgICAgICAgICAgIChtLCB2KQorICAgICAgICAgICAgICAgIGZvciB2LCBtIGluIGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfLml0ZW1zKCkKKyAgICAgICAgICAgICAgICBpZiBtLm5hbWUgaXMgbm90IE5vbmUgb3IgX3Bvd2VyX29mX3R3byh2KQorICAgICAgICAgICAgICAgIF0KKyAgICBtZW1iZXJzID0gW10KKyAgICBmb3IgbWVtYmVyLCBtZW1iZXJfdmFsdWUgaW4gZmxhZ3NfdG9fY2hlY2s6CisgICAgICAgIGlmIG1lbWJlcl92YWx1ZSBhbmQgbWVtYmVyX3ZhbHVlICYgdmFsdWUgPT0gbWVtYmVyX3ZhbHVlOgorICAgICAgICAgICAgbWVtYmVycy5hcHBlbmQobWVtYmVyKQorICAgICAgICAgICAgbm90X2NvdmVyZWQgJj0gfm1lbWJlcl92YWx1ZQorICAgIGlmIG5vdCBtZW1iZXJzIGFuZCB2YWx1ZSBpbiBmbGFnLl92YWx1ZTJtZW1iZXJfbWFwXzoKKyAgICAgICAgbWVtYmVycy5hcHBlbmQoZmxhZy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdKQorICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIG06IG0uX3ZhbHVlXywgcmV2ZXJzZT1UcnVlKQorICAgIGlmIGxlbihtZW1iZXJzKSA+IDEgYW5kIG1lbWJlcnNbMF0udmFsdWUgPT0gdmFsdWU6CisgICAgICAgICMgd2UgaGF2ZSB0aGUgYnJlYWtkb3duLCBkb24ndCBuZWVkIHRoZSB2YWx1ZSBtZW1iZXIgaXRzZWxmCisgICAgICAgIG1lbWJlcnMucG9wKDApCisgICAgcmV0dXJuIG1lbWJlcnMsIG5vdF9jb3ZlcmVkCisKK2RlZiBfcG93ZXJfb2ZfdHdvKHZhbHVlKToKKyAgICBpZiB2YWx1ZSA8IDE6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiB2YWx1ZSA9PSAyICoqIF9oaWdoX2JpdCh2YWx1ZSkKZGlmZiAtLWdpdCBhL0xpYi9maWxlaW5wdXQucHkgYi9MaWIvZmlsZWlucHV0LnB5CmluZGV4IGQyYjUyMDYuLjcyMWZlOWMgMTAwNjQ0Ci0tLSBhL0xpYi9maWxlaW5wdXQucHkKKysrIGIvTGliL2ZpbGVpbnB1dC5weQpAQCAtNzUsMTMgKzc1LDExIEBACiBpbXBvcnQgc3lzLCBvcwogCiBfX2FsbF9fID0gWyJpbnB1dCIsICJjbG9zZSIsICJuZXh0ZmlsZSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLCAiZmlsZWxpbmVubyIsCi0gICAgICAgICAgICJpc2ZpcnN0bGluZSIsICJpc3N0ZGluIiwgIkZpbGVJbnB1dCJdCisgICAgICAgICAgICJmaWxlbm8iLCAiaXNmaXJzdGxpbmUiLCAiaXNzdGRpbiIsICJGaWxlSW5wdXQiLCAiaG9va19jb21wcmVzc2VkIiwKKyAgICAgICAgICAgImhvb2tfZW5jb2RlZCJdCiAKIF9zdGF0ZSA9IE5vbmUKIAotIyBObyBsb25nZXIgdXNlZAotREVGQVVMVF9CVUZTSVpFID0gOCoxMDI0Ci0KIGRlZiBpbnB1dChmaWxlcz1Ob25lLCBpbnBsYWNlPUZhbHNlLCBiYWNrdXA9IiIsIGJ1ZnNpemU9MCwKICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSk6CiAgICAgIiIiUmV0dXJuIGFuIGluc3RhbmNlIG9mIHRoZSBGaWxlSW5wdXQgY2xhc3MsIHdoaWNoIGNhbiBiZSBpdGVyYXRlZC4KQEAgLTIwMSw2ICsxOTksMTAgQEAKICAgICAgICAgc2VsZi5fZmlsZXMgPSBmaWxlcwogICAgICAgICBzZWxmLl9pbnBsYWNlID0gaW5wbGFjZQogICAgICAgICBzZWxmLl9iYWNrdXAgPSBiYWNrdXAKKyAgICAgICAgaWYgYnVmc2l6ZToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybignYnVmc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIHNlbGYuX3NhdmVzdGRvdXQgPSBOb25lCiAgICAgICAgIHNlbGYuX291dHB1dCA9IE5vbmUKICAgICAgICAgc2VsZi5fZmlsZW5hbWUgPSBOb25lCkBAIC0zOTgsOSArNDAwLDkgQEAKICAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAKIAotZGVmIGhvb2tfZW5jb2RlZChlbmNvZGluZyk6CitkZWYgaG9va19lbmNvZGVkKGVuY29kaW5nLCBlcnJvcnM9Tm9uZSk6CiAgICAgZGVmIG9wZW5ob29rKGZpbGVuYW1lLCBtb2RlKToKLSAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQorICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAgICAgcmV0dXJuIG9wZW5ob29rCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ZubWF0Y2gucHkgYi9MaWIvZm5tYXRjaC5weQppbmRleCA2MzMwYjBjLi5mZDNiNTE0IDEwMDY0NAotLS0gYS9MaWIvZm5tYXRjaC5weQorKysgYi9MaWIvZm5tYXRjaC5weQpAQCAtMTA2LDQgKzEwNiw0IEBACiAgICAgICAgICAgICAgICAgcmVzID0gJyVzWyVzXScgJSAocmVzLCBzdHVmZikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlcyA9IHJlcyArIHJlLmVzY2FwZShjKQotICAgIHJldHVybiByZXMgKyAnXFooP21zKScKKyAgICByZXR1cm4gcicoP3M6JXMpXFonICUgcmVzCmRpZmYgLS1naXQgYS9MaWIvZnJhY3Rpb25zLnB5IGIvTGliL2ZyYWN0aW9ucy5weQppbmRleCA5YWFiYWIzLi44MzMwMjAyIDEwMDY0NAotLS0gYS9MaWIvZnJhY3Rpb25zLnB5CisrKyBiL0xpYi9mcmFjdGlvbnMucHkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICBfX3Nsb3RzX18gPSAoJ19udW1lcmF0b3InLCAnX2Rlbm9taW5hdG9yJykKIAogICAgICMgV2UncmUgaW1tdXRhYmxlLCBzbyB1c2UgX19uZXdfXyBub3QgX19pbml0X18KLSAgICBkZWYgX19uZXdfXyhjbHMsIG51bWVyYXRvcj0wLCBkZW5vbWluYXRvcj1Ob25lLCBfbm9ybWFsaXplPVRydWUpOgorICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsICosIF9ub3JtYWxpemU9VHJ1ZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdHMgYSBSYXRpb25hbC4KIAogICAgICAgICBUYWtlcyBhIHN0cmluZyBsaWtlICczLzInIG9yICcxLjUnLCBhbm90aGVyIFJhdGlvbmFsIGluc3RhbmNlLCBhCkBAIC0xMjUsMTcgKzEyNSw5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSBudW1lcmF0b3IuZGVub21pbmF0b3IKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBmbG9hdCk6Ci0gICAgICAgICAgICAgICAgIyBFeGFjdCBjb252ZXJzaW9uIGZyb20gZmxvYXQKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IEZyYWN0aW9uLmZyb21fZmxvYXQobnVtZXJhdG9yKQotICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IHZhbHVlLl9udW1lcmF0b3IKLSAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IHZhbHVlLl9kZW5vbWluYXRvcgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIERlY2ltYWwpOgotICAgICAgICAgICAgICAgIHZhbHVlID0gRnJhY3Rpb24uZnJvbV9kZWNpbWFsKG51bWVyYXRvcikKLSAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSB2YWx1ZS5fbnVtZXJhdG9yCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSB2YWx1ZS5fZGVub21pbmF0b3IKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIChmbG9hdCwgRGVjaW1hbCkpOgorICAgICAgICAgICAgICAgICMgRXhhY3QgY29udmVyc2lvbgorICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciwgc2VsZi5fZGVub21pbmF0b3IgPSBudW1lcmF0b3IuYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgc3RyKToKQEAgLTIxMCwxMCArMjAyLDYgQEAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzLmZyb21fZmxvYXQoKSBvbmx5IHRha2VzIGZsb2F0cywgbm90ICVyICglcykiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBmLCB0eXBlKGYpLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgbWF0aC5pc25hbihmKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvICVzLiIgJSAoZiwgY2xzLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgbWF0aC5pc2luZihmKToKLSAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvICVzLiIgJSAoZiwgY2xzLl9fbmFtZV9fKSkKICAgICAgICAgcmV0dXJuIGNscygqZi5hc19pbnRlZ2VyX3JhdGlvKCkpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTIyNiwxOSArMjE0LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAiJXMuZnJvbV9kZWNpbWFsKCkgb25seSB0YWtlcyBEZWNpbWFscywgbm90ICVyICglcykiICUKICAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBkZWMsIHR5cGUoZGVjKS5fX25hbWVfXykpCi0gICAgICAgIGlmIGRlYy5pc19pbmZpbml0ZSgpOgotICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigKLSAgICAgICAgICAgICAgICAiQ2Fubm90IGNvbnZlcnQgJXMgdG8gJXMuIiAlIChkZWMsIGNscy5fX25hbWVfXykpCi0gICAgICAgIGlmIGRlYy5pc19uYW4oKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVzIHRvICVzLiIgJSAoZGVjLCBjbHMuX19uYW1lX18pKQotICAgICAgICBzaWduLCBkaWdpdHMsIGV4cCA9IGRlYy5hc190dXBsZSgpCi0gICAgICAgIGRpZ2l0cyA9IGludCgnJy5qb2luKG1hcChzdHIsIGRpZ2l0cykpKQotICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgZGlnaXRzID0gLWRpZ2l0cwotICAgICAgICBpZiBleHAgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiBjbHMoZGlnaXRzICogMTAgKiogZXhwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNscyhkaWdpdHMsIDEwICoqIC1leHApCisgICAgICAgIHJldHVybiBjbHMoKmRlYy5hc19pbnRlZ2VyX3JhdGlvKCkpCiAKICAgICBkZWYgbGltaXRfZGVub21pbmF0b3Ioc2VsZiwgbWF4X2Rlbm9taW5hdG9yPTEwMDAwMDApOgogICAgICAgICAiIiJDbG9zZXN0IEZyYWN0aW9uIHRvIHNlbGYgd2l0aCBkZW5vbWluYXRvciBhdCBtb3N0IG1heF9kZW5vbWluYXRvci4KZGlmZiAtLWdpdCBhL0xpYi9mdHBsaWIucHkgYi9MaWIvZnRwbGliLnB5CmluZGV4IGM0MTZkODUuLjhmMzZmNTMgMTAwNjQ0Ci0tLSBhL0xpYi9mdHBsaWIucHkKKysrIGIvTGliL2Z0cGxpYi5weQpAQCAtMzYsMTMgKzM2LDEyIEBACiAjIE1vZGlmaWVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEnIHRvIGFkZCBUTFMgc3VwcG9ydC4KICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgd2FybmluZ3MKIGZyb20gc29ja2V0IGltcG9ydCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVAogCi1fX2FsbF9fID0gWyJGVFAiXQorX19hbGxfXyA9IFsiRlRQIiwgImVycm9yX3JlcGx5IiwgImVycm9yX3RlbXAiLCAiZXJyb3JfcGVybSIsICJlcnJvcl9wcm90byIsCisgICAgICAgICAgICJhbGxfZXJyb3JzIl0KIAogIyBNYWdpYyBudW1iZXIgZnJvbSA8c29ja2V0Lmg+CiBNU0dfT09CID0gMHgxICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQcm9jZXNzIGRhdGEgb3V0IG9mIGJhbmQKQEAgLTcyOSw2ICs3MjgsMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CkBAIC04MjIsNyArODI1LDcgQEAKICAgICBpZiBfMTUwX3JlIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBfMTUwX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgICAgICIxNTAgLiogXCgoXGQrKSBieXRlc1wpIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLkFTQ0lJKQorICAgICAgICAgICAgciIxNTAgLiogXCgoXGQrKSBieXRlc1wpIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLkFTQ0lJKQogICAgIG0gPSBfMTUwX3JlLm1hdGNoKHJlc3ApCiAgICAgaWYgbm90IG06CiAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvZnVuY3Rvb2xzLnB5IGIvTGliL2Z1bmN0b29scy5weQppbmRleCAyMTQ1MjNjLi45ODQ1ZGYyIDEwMDY0NAotLS0gYS9MaWIvZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi9mdW5jdG9vbHMucHkKQEAgLTIxLDYgKzIxLDcgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUKIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha0tleURpY3Rpb25hcnkKK2Zyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IFJMb2NrCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMzcsMjYgKzIzOCw4MyBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBQdXJlbHkgZnVuY3Rpb25hbCwgbm8gZGVzY3JpcHRvciBiZWhhdmlvdXIKLWRlZiBwYXJ0aWFsKGZ1bmMsICphcmdzLCAqKmtleXdvcmRzKToKK2NsYXNzIHBhcnRpYWw6CiAgICAgIiIiTmV3IGZ1bmN0aW9uIHdpdGggcGFydGlhbCBhcHBsaWNhdGlvbiBvZiB0aGUgZ2l2ZW4gYXJndW1lbnRzCiAgICAgYW5kIGtleXdvcmRzLgogICAgICIiIgotICAgIGlmIGhhc2F0dHIoZnVuYywgJ2Z1bmMnKToKLSAgICAgICAgYXJncyA9IGZ1bmMuYXJncyArIGFyZ3MKLSAgICAgICAgdG1wa3cgPSBmdW5jLmtleXdvcmRzLmNvcHkoKQotICAgICAgICB0bXBrdy51cGRhdGUoa2V5d29yZHMpCi0gICAgICAgIGtleXdvcmRzID0gdG1wa3cKLSAgICAgICAgZGVsIHRtcGt3Ci0gICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKIAotICAgIGRlZiBuZXdmdW5jKCpmYXJncywgKipma2V5d29yZHMpOgotICAgICAgICBuZXdrZXl3b3JkcyA9IGtleXdvcmRzLmNvcHkoKQotICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoZmtleXdvcmRzKQotICAgICAgICByZXR1cm4gZnVuYygqKGFyZ3MgKyBmYXJncyksICoqbmV3a2V5d29yZHMpCi0gICAgbmV3ZnVuYy5mdW5jID0gZnVuYwotICAgIG5ld2Z1bmMuYXJncyA9IGFyZ3MKLSAgICBuZXdmdW5jLmtleXdvcmRzID0ga2V5d29yZHMKLSAgICByZXR1cm4gbmV3ZnVuYworICAgIF9fc2xvdHNfXyA9ICJmdW5jIiwgImFyZ3MiLCAia2V5d29yZHMiLCAiX19kaWN0X18iLCAiX193ZWFrcmVmX18iCisKKyAgICBkZWYgX19uZXdfXygqYXJncywgKiprZXl3b3Jkcyk6CisgICAgICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkZXNjcmlwdG9yICdfX25ld19fJyBvZiBwYXJ0aWFsIG5lZWRzIGFuIGFyZ3VtZW50IikKKyAgICAgICAgaWYgbGVuKGFyZ3MpIDwgMjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHlwZSAncGFydGlhbCcgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikKKyAgICAgICAgY2xzLCBmdW5jLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgaWYgbm90IGNhbGxhYmxlKGZ1bmMpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBjYWxsYWJsZSIpCisgICAgICAgIGFyZ3MgPSB0dXBsZShhcmdzKQorCisgICAgICAgIGlmIGhhc2F0dHIoZnVuYywgImZ1bmMiKToKKyAgICAgICAgICAgIGFyZ3MgPSBmdW5jLmFyZ3MgKyBhcmdzCisgICAgICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCisgICAgICAgICAgICB0bXBrdy51cGRhdGUoa2V5d29yZHMpCisgICAgICAgICAgICBrZXl3b3JkcyA9IHRtcGt3CisgICAgICAgICAgICBkZWwgdG1wa3cKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKKworICAgICAgICBzZWxmID0gc3VwZXIocGFydGlhbCwgY2xzKS5fX25ld19fKGNscykKKworICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGtleXdvcmRzCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19jYWxsX18oKmFyZ3MsICoqa2V5d29yZHMpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGVzY3JpcHRvciAnX19jYWxsX18nIG9mIHBhcnRpYWwgbmVlZHMgYW4gYXJndW1lbnQiKQorICAgICAgICBzZWxmLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgbmV3a2V5d29yZHMgPSBzZWxmLmtleXdvcmRzLmNvcHkoKQorICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoa2V5d29yZHMpCisgICAgICAgIHJldHVybiBzZWxmLmZ1bmMoKnNlbGYuYXJncywgKmFyZ3MsICoqbmV3a2V5d29yZHMpCisKKyAgICBAcmVjdXJzaXZlX3JlcHIoKQorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcXVhbG5hbWUgPSB0eXBlKHNlbGYpLl9fcXVhbG5hbWVfXworICAgICAgICBhcmdzID0gW3JlcHIoc2VsZi5mdW5jKV0KKyAgICAgICAgYXJncy5leHRlbmQocmVwcih4KSBmb3IgeCBpbiBzZWxmLmFyZ3MpCisgICAgICAgIGFyZ3MuZXh0ZW5kKGYie2t9PXt2IXJ9IiBmb3IgKGssIHYpIGluIHNlbGYua2V5d29yZHMuaXRlbXMoKSkKKyAgICAgICAgaWYgdHlwZShzZWxmKS5fX21vZHVsZV9fID09ICJmdW5jdG9vbHMiOgorICAgICAgICAgICAgcmV0dXJuIGYiZnVuY3Rvb2xzLntxdWFsbmFtZX0oeycsICcuam9pbihhcmdzKX0pIgorICAgICAgICByZXR1cm4gZiJ7cXVhbG5hbWV9KHsnLCAnLmpvaW4oYXJncyl9KSIKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gdHlwZShzZWxmKSwgKHNlbGYuZnVuYywpLCAoc2VsZi5mdW5jLCBzZWxmLmFyZ3MsCisgICAgICAgICAgICAgICBzZWxmLmtleXdvcmRzIG9yIE5vbmUsIHNlbGYuX19kaWN0X18gb3IgTm9uZSkKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdGF0ZSwgdHVwbGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCB0byBfX3NldHN0YXRlX18gbXVzdCBiZSBhIHR1cGxlIikKKyAgICAgICAgaWYgbGVuKHN0YXRlKSAhPSA0OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiZXhwZWN0ZWQgNCBpdGVtcyBpbiBzdGF0ZSwgZ290IHtsZW4oc3RhdGUpfSIpCisgICAgICAgIGZ1bmMsIGFyZ3MsIGt3ZHMsIG5hbWVzcGFjZSA9IHN0YXRlCisgICAgICAgIGlmIChub3QgY2FsbGFibGUoZnVuYykgb3Igbm90IGlzaW5zdGFuY2UoYXJncywgdHVwbGUpIG9yCisgICAgICAgICAgIChrd2RzIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShrd2RzLCBkaWN0KSkgb3IKKyAgICAgICAgICAgKG5hbWVzcGFjZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmFtZXNwYWNlLCBkaWN0KSkpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIHBhcnRpYWwgc3RhdGUiKQorCisgICAgICAgIGFyZ3MgPSB0dXBsZShhcmdzKSAjIGp1c3QgaW4gY2FzZSBpdCdzIGEgc3ViY2xhc3MKKyAgICAgICAgaWYga3dkcyBpcyBOb25lOgorICAgICAgICAgICAga3dkcyA9IHt9CisgICAgICAgIGVsaWYgdHlwZShrd2RzKSBpcyBub3QgZGljdDogIyBYWFggZG9lcyBpdCBuZWVkIHRvIGJlICpleGFjdGx5KiBkaWN0PworICAgICAgICAgICAga3dkcyA9IGRpY3Qoa3dkcykKKyAgICAgICAgaWYgbmFtZXNwYWNlIGlzIE5vbmU6CisgICAgICAgICAgICBuYW1lc3BhY2UgPSB7fQorCisgICAgICAgIHNlbGYuX19kaWN0X18gPSBuYW1lc3BhY2UKKyAgICAgICAgc2VsZi5mdW5jID0gZnVuYworICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYua2V5d29yZHMgPSBrd2RzCiAKIHRyeToKICAgICBmcm9tIF9mdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKZGlmZiAtLWdpdCBhL0xpYi9nZW5lcmljcGF0aC5weSBiL0xpYi9nZW5lcmljcGF0aC5weQppbmRleCA2NzE0MDYxLi4zMDNiM2IzIDEwMDY0NAotLS0gYS9MaWIvZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL2dlbmVyaWNwYXRoLnB5CkBAIC02OSw2ICs2OSwxMiBAQAogZGVmIGNvbW1vbnByZWZpeChtKToKICAgICAiR2l2ZW4gYSBsaXN0IG9mIHBhdGhuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gbGVhZGluZyBjb21wb25lbnQiCiAgICAgaWYgbm90IG06IHJldHVybiAnJworICAgICMgU29tZSBwZW9wbGUgcGFzcyBpbiBhIGxpc3Qgb2YgcGF0aG5hbWUgcGFydHMgdG8gb3BlcmF0ZSBpbiBhbiBPUy1hZ25vc3RpYworICAgICMgZmFzaGlvbjsgZG9uJ3QgdHJ5IHRvIHRyYW5zbGF0ZSBpbiB0aGF0IGNhc2UgYXMgdGhhdCdzIGFuIGFidXNlIG9mIHRoZQorICAgICMgQVBJIGFuZCB0aGV5IGFyZSBhbHJlYWR5IGRvaW5nIHdoYXQgdGhleSBuZWVkIHRvIGJlIE9TLWFnbm9zdGljIGFuZCBzbworICAgICMgdGhleSBtb3N0IGxpa2VseSB3b24ndCBiZSB1c2luZyBhbiBvcy5QYXRoTGlrZSBvYmplY3QgaW4gdGhlIHN1Ymxpc3RzLgorICAgIGlmIG5vdCBpc2luc3RhbmNlKG1bMF0sIChsaXN0LCB0dXBsZSkpOgorICAgICAgICBtID0gdHVwbGUobWFwKG9zLmZzcGF0aCwgbSkpCiAgICAgczEgPSBtaW4obSkKICAgICBzMiA9IG1heChtKQogICAgIGZvciBpLCBjIGluIGVudW1lcmF0ZShzMSk6CmRpZmYgLS1naXQgYS9MaWIvZ2xvYi5weSBiL0xpYi9nbG9iLnB5CmluZGV4IDE2MzMwZDguLjAwMmNkOTIgMTAwNjQ0Ci0tLSBhL0xpYi9nbG9iLnB5CisrKyBiL0xpYi9nbG9iLnB5CkBAIC0zMCwxNSArMzAsMTYgQEAKICAgICBJZiByZWN1cnNpdmUgaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gJyoqJyB3aWxsIG1hdGNoIGFueSBmaWxlcyBhbmQKICAgICB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLgogICAgICIiIgotICAgIGl0ID0gX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUpCisgICAgaXQgPSBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSwgRmFsc2UpCiAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUocGF0aG5hbWUpOgogICAgICAgICBzID0gbmV4dChpdCkgICMgc2tpcCBlbXB0eSBzdHJpbmcKICAgICAgICAgYXNzZXJ0IG5vdCBzCiAgICAgcmV0dXJuIGl0CiAKLWRlZiBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSk6CitkZWYgX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUsIGRpcm9ubHkpOgogICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICBpZiBub3QgaGFzX21hZ2ljKHBhdGhuYW1lKToKKyAgICAgICAgYXNzZXJ0IG5vdCBkaXJvbmx5CiAgICAgICAgIGlmIGJhc2VuYW1lOgogICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKHBhdGhuYW1lKToKICAgICAgICAgICAgICAgICB5aWVsZCBwYXRobmFtZQpAQCAtNDksNDcgKzUwLDM5IEBACiAgICAgICAgIHJldHVybgogICAgIGlmIG5vdCBkaXJuYW1lOgogICAgICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShiYXNlbmFtZSk6Ci0gICAgICAgICAgICB5aWVsZCBmcm9tIGdsb2IyKGRpcm5hbWUsIGJhc2VuYW1lKQorICAgICAgICAgICAgeWllbGQgZnJvbSBfZ2xvYjIoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB5aWVsZCBmcm9tIGdsb2IxKGRpcm5hbWUsIGJhc2VuYW1lKQorICAgICAgICAgICAgeWllbGQgZnJvbSBfZ2xvYjEoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpCiAgICAgICAgIHJldHVybgogICAgICMgYG9zLnBhdGguc3BsaXQoKWAgcmV0dXJucyB0aGUgYXJndW1lbnQgaXRzZWxmIGFzIGEgZGlybmFtZSBpZiBpdCBpcyBhCiAgICAgIyBkcml2ZSBvciBVTkMgcGF0aC4gIFByZXZlbnQgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGlmIGEgZHJpdmUgb3IgVU5DIHBhdGgKICAgICAjIGNvbnRhaW5zIG1hZ2ljIGNoYXJhY3RlcnMgKGkuZS4gcidcXD9cQzonKS4KICAgICBpZiBkaXJuYW1lICE9IHBhdGhuYW1lIGFuZCBoYXNfbWFnaWMoZGlybmFtZSk6Ci0gICAgICAgIGRpcnMgPSBfaWdsb2IoZGlybmFtZSwgcmVjdXJzaXZlKQorICAgICAgICBkaXJzID0gX2lnbG9iKGRpcm5hbWUsIHJlY3Vyc2l2ZSwgVHJ1ZSkKICAgICBlbHNlOgogICAgICAgICBkaXJzID0gW2Rpcm5hbWVdCiAgICAgaWYgaGFzX21hZ2ljKGJhc2VuYW1lKToKICAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgotICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMgorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBfZ2xvYjIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjEKKyAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IxCiAgICAgZWxzZToKLSAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMAorICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMAogICAgIGZvciBkaXJuYW1lIGluIGRpcnM6Ci0gICAgICAgIGZvciBuYW1lIGluIGdsb2JfaW5fZGlyKGRpcm5hbWUsIGJhc2VuYW1lKToKKyAgICAgICAgZm9yIG5hbWUgaW4gZ2xvYl9pbl9kaXIoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpOgogICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKGRpcm5hbWUsIG5hbWUpCiAKICMgVGhlc2UgMiBoZWxwZXIgZnVuY3Rpb25zIG5vbi1yZWN1cnNpdmVseSBnbG9iIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgotIyBUaGV5IHJldHVybiBhIGxpc3Qgb2YgYmFzZW5hbWVzLiBgZ2xvYjFgIGFjY2VwdHMgYSBwYXR0ZXJuIHdoaWxlIGBnbG9iMGAKKyMgVGhleSByZXR1cm4gYSBsaXN0IG9mIGJhc2VuYW1lcy4gIF9nbG9iMSBhY2NlcHRzIGEgcGF0dGVybiB3aGlsZSBfZ2xvYjAKICMgdGFrZXMgYSBsaXRlcmFsIGJhc2VuYW1lIChzbyBpdCBvbmx5IGhhcyB0byBjaGVjayBmb3IgaXRzIGV4aXN0ZW5jZSkuCiAKLWRlZiBnbG9iMShkaXJuYW1lLCBwYXR0ZXJuKToKLSAgICBpZiBub3QgZGlybmFtZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBieXRlcyk6Ci0gICAgICAgICAgICBkaXJuYW1lID0gYnl0ZXMob3MuY3VyZGlyLCAnQVNDSUknKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGlybmFtZSA9IG9zLmN1cmRpcgotICAgIHRyeToKLSAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHJldHVybiBbXQorZGVmIF9nbG9iMShkaXJuYW1lLCBwYXR0ZXJuLCBkaXJvbmx5KToKKyAgICBuYW1lcyA9IGxpc3QoX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSkpCiAgICAgaWYgbm90IF9pc2hpZGRlbihwYXR0ZXJuKToKLSAgICAgICAgbmFtZXMgPSBbeCBmb3IgeCBpbiBuYW1lcyBpZiBub3QgX2lzaGlkZGVuKHgpXQorICAgICAgICBuYW1lcyA9ICh4IGZvciB4IGluIG5hbWVzIGlmIG5vdCBfaXNoaWRkZW4oeCkpCiAgICAgcmV0dXJuIGZubWF0Y2guZmlsdGVyKG5hbWVzLCBwYXR0ZXJuKQogCi1kZWYgZ2xvYjAoZGlybmFtZSwgYmFzZW5hbWUpOgorZGVmIF9nbG9iMChkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSk6CiAgICAgaWYgbm90IGJhc2VuYW1lOgogICAgICAgICAjIGBvcy5wYXRoLnNwbGl0KClgIHJldHVybnMgYW4gZW1wdHkgYmFzZW5hbWUgZm9yIHBhdGhzIGVuZGluZyB3aXRoIGEKICAgICAgICAgIyBkaXJlY3Rvcnkgc2VwYXJhdG9yLiAgJ3EqeC8nIHNob3VsZCBtYXRjaCBvbmx5IGRpcmVjdG9yaWVzLgpAQCAtMTAwLDMwICs5Myw0OSBAQAogICAgICAgICAgICAgcmV0dXJuIFtiYXNlbmFtZV0KICAgICByZXR1cm4gW10KIAorIyBGb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3QgcHVibGljIGJ1dCBjYW4gYmUgdXNlZCBieSB0aGlyZC1wYXJ0eSBjb2RlLgorCitkZWYgZ2xvYjAoZGlybmFtZSwgcGF0dGVybik6CisgICAgcmV0dXJuIF9nbG9iMChkaXJuYW1lLCBwYXR0ZXJuLCBGYWxzZSkKKworZGVmIGdsb2IxKGRpcm5hbWUsIHBhdHRlcm4pOgorICAgIHJldHVybiBfZ2xvYjEoZGlybmFtZSwgcGF0dGVybiwgRmFsc2UpCisKICMgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsCiAjIGRpcmVjdG9yeS4KIAotZGVmIGdsb2IyKGRpcm5hbWUsIHBhdHRlcm4pOgorZGVmIF9nbG9iMihkaXJuYW1lLCBwYXR0ZXJuLCBkaXJvbmx5KToKICAgICBhc3NlcnQgX2lzcmVjdXJzaXZlKHBhdHRlcm4pCiAgICAgeWllbGQgcGF0dGVybls6MF0KLSAgICB5aWVsZCBmcm9tIF9ybGlzdGRpcihkaXJuYW1lKQorICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUsIGRpcm9ubHkpCiAKLSMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KLWRlZiBfcmxpc3RkaXIoZGlybmFtZSk6CisjIElmIGRpcm9ubHkgaXMgZmFsc2UsIHlpZWxkcyBhbGwgZmlsZSBuYW1lcyBpbnNpZGUgYSBkaXJlY3RvcnkuCisjIElmIGRpcm9ubHkgaXMgdHJ1ZSwgeWllbGRzIG9ubHkgZGlyZWN0b3J5IG5hbWVzLgorZGVmIF9pdGVyZGlyKGRpcm5hbWUsIGRpcm9ubHkpOgogICAgIGlmIG5vdCBkaXJuYW1lOgogICAgICAgICBpZiBpc2luc3RhbmNlKGRpcm5hbWUsIGJ5dGVzKToKICAgICAgICAgICAgIGRpcm5hbWUgPSBieXRlcyhvcy5jdXJkaXIsICdBU0NJSScpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaXJuYW1lID0gb3MuY3VyZGlyCiAgICAgdHJ5OgotICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlybmFtZSkKLSAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgIHdpdGggb3Muc2NhbmRpcihkaXJuYW1lKSBhcyBpdDoKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBpdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJvbmx5IG9yIGVudHJ5LmlzX2RpcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZW50cnkubmFtZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybgorCisjIFJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCitkZWYgX3JsaXN0ZGlyKGRpcm5hbWUsIGRpcm9ubHkpOgorICAgIG5hbWVzID0gbGlzdChfaXRlcmRpcihkaXJuYW1lLCBkaXJvbmx5KSkKICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgaWYgbm90IF9pc2hpZGRlbih4KToKICAgICAgICAgICAgIHlpZWxkIHgKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgeCkgaWYgZGlybmFtZSBlbHNlIHgKLSAgICAgICAgICAgIGZvciB5IGluIF9ybGlzdGRpcihwYXRoKToKKyAgICAgICAgICAgIGZvciB5IGluIF9ybGlzdGRpcihwYXRoLCBkaXJvbmx5KToKICAgICAgICAgICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oeCwgeSkKIAogCmRpZmYgLS1naXQgYS9MaWIvZ3ppcC5weSBiL0xpYi9nemlwLnB5CmluZGV4IGRhNDQ3OWUuLjc2YWI0OTcgMTAwNjQ0Ci0tLSBhL0xpYi9nemlwLnB5CisrKyBiL0xpYi9nemlwLnB5CkBAIC00OSw3ICs0OSw3IEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCiAKICAgICBnel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCi0gICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShmaWxlbmFtZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCkKICAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CiAgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoTm9uZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCwgZmlsZW5hbWUpCkBAIC0xNjUsNiArMTY1LDggQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAnbmFtZScsICcnKQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5mc3BhdGgoZmlsZW5hbWUpCiAgICAgICAgIGlmIG1vZGUgaXMgTm9uZToKICAgICAgICAgICAgIG1vZGUgPSBnZXRhdHRyKGZpbGVvYmosICdtb2RlJywgJ3JiJykKIApAQCAtMzU3LDEwICszNTksMTAgQEAKICAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYub2Zmc2V0OgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05lZ2F0aXZlIHNlZWsgaW4gd3JpdGUgbW9kZScpCiAgICAgICAgICAgICBjb3VudCA9IG9mZnNldCAtIHNlbGYub2Zmc2V0Ci0gICAgICAgICAgICBjaHVuayA9IGJ5dGVzKDEwMjQpCisgICAgICAgICAgICBjaHVuayA9IGInXDAnICogMTAyNAogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQgLy8gMTAyNCk6CiAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShjaHVuaykKLSAgICAgICAgICAgIHNlbGYud3JpdGUoYnl0ZXMoY291bnQgJSAxMDI0KSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoYidcMCcgKiAoY291bnQgJSAxMDI0KSkKICAgICAgICAgZWxpZiBzZWxmLm1vZGUgPT0gUkVBRDoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5zZWVrKG9mZnNldCwgd2hlbmNlKQpkaWZmIC0tZ2l0IGEvTGliL2hhc2hsaWIucHkgYi9MaWIvaGFzaGxpYi5weQppbmRleCAzMTZjZWNlLi4wNTNhN2FkIDEwMDY0NAotLS0gYS9MaWIvaGFzaGxpYi5weQorKysgYi9MaWIvaGFzaGxpYi5weQpAQCAtNCwxNCArNCwxNSBAQAogCiBfX2RvY19fID0gIiIiaGFzaGxpYiBtb2R1bGUgLSBBIGNvbW1vbiBpbnRlcmZhY2UgdG8gbWFueSBoYXNoIGZ1bmN0aW9ucy4KIAotbmV3KG5hbWUsIGRhdGE9YicnKSAtIHJldHVybnMgYSBuZXcgaGFzaCBvYmplY3QgaW1wbGVtZW50aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGhhc2ggZnVuY3Rpb247IGluaXRpYWxpemluZyB0aGUgaGFzaAotICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBnaXZlbiBiaW5hcnkgZGF0YS4KK25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpIC0gcmV0dXJucyBhIG5ldyBoYXNoIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGhhc2ggZnVuY3Rpb247IGluaXRpYWxpemluZyB0aGUgaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEuCiAKIE5hbWVkIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyBhcmUgYWxzbyBhdmFpbGFibGUsIHRoZXNlIGFyZSBmYXN0ZXIKIHRoYW4gdXNpbmcgbmV3KG5hbWUpOgogCi1tZDUoKSwgc2hhMSgpLCBzaGEyMjQoKSwgc2hhMjU2KCksIHNoYTM4NCgpLCBhbmQgc2hhNTEyKCkKK21kNSgpLCBzaGExKCksIHNoYTIyNCgpLCBzaGEyNTYoKSwgc2hhMzg0KCksIHNoYTUxMigpLCBibGFrZTJiKCksIGJsYWtlMnMoKSwKK3NoYTNfMjI0LCBzaGEzXzI1Niwgc2hhM18zODQsIHNoYTNfNTEyLCBzaGFrZV8xMjgsIGFuZCBzaGFrZV8yNTYuCiAKIE1vcmUgYWxnb3JpdGhtcyBtYXkgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0gYnV0IHRoZSBhYm92ZSBhcmUgZ3VhcmFudGVlZAogdG8gZXhpc3QuICBTZWUgdGhlIGFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQgYWxnb3JpdGhtc19hdmFpbGFibGUgYXR0cmlidXRlcwpAQCAtNTQsNyArNTUsMTEgQEAKIAogIyBUaGlzIHR1cGxlIGFuZCBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKCkgbXVzdCBiZSBtb2RpZmllZCBpZiBhIG5ldwogIyBhbHdheXMgYXZhaWxhYmxlIGFsZ29yaXRobSBpcyBhZGRlZC4KLV9fYWx3YXlzX3N1cHBvcnRlZCA9ICgnbWQ1JywgJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJykKK19fYWx3YXlzX3N1cHBvcnRlZCA9ICgnbWQ1JywgJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAnYmxha2UyYicsICdibGFrZTJzJywKKyAgICAgICAgICAgICAgICAgICAgICAnc2hhM18yMjQnLCAnc2hhM18yNTYnLCAnc2hhM18zODQnLCAnc2hhM181MTInLAorICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKwogCiBhbGdvcml0aG1zX2d1YXJhbnRlZWQgPSBzZXQoX19hbHdheXNfc3VwcG9ydGVkKQogYWxnb3JpdGhtc19hdmFpbGFibGUgPSBzZXQoX19hbHdheXNfc3VwcG9ydGVkKQpAQCAtODUsNiArOTAsMTkgQEAKICAgICAgICAgICAgIGltcG9ydCBfc2hhNTEyCiAgICAgICAgICAgICBjYWNoZVsnU0hBMzg0J10gPSBjYWNoZVsnc2hhMzg0J10gPSBfc2hhNTEyLnNoYTM4NAogICAgICAgICAgICAgY2FjaGVbJ1NIQTUxMiddID0gY2FjaGVbJ3NoYTUxMiddID0gX3NoYTUxMi5zaGE1MTIKKyAgICAgICAgZWxpZiBuYW1lIGluICgnYmxha2UyYicsICdibGFrZTJzJyk6CisgICAgICAgICAgICBpbXBvcnQgX2JsYWtlMgorICAgICAgICAgICAgY2FjaGVbJ2JsYWtlMmInXSA9IF9ibGFrZTIuYmxha2UyYgorICAgICAgICAgICAgY2FjaGVbJ2JsYWtlMnMnXSA9IF9ibGFrZTIuYmxha2UycworICAgICAgICBlbGlmIG5hbWUgaW4geydzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnfToKKyAgICAgICAgICAgIGltcG9ydCBfc2hhMworICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMjI0J10gPSBfc2hhMy5zaGEzXzIyNAorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMjU2J10gPSBfc2hhMy5zaGEzXzI1NgorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMzg0J10gPSBfc2hhMy5zaGEzXzM4NAorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfNTEyJ10gPSBfc2hhMy5zaGEzXzUxMgorICAgICAgICAgICAgY2FjaGVbJ3NoYWtlXzEyOCddID0gX3NoYTMuc2hha2VfMTI4CisgICAgICAgICAgICBjYWNoZVsnc2hha2VfMjU2J10gPSBfc2hhMy5zaGFrZV8yNTYKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MgICMgbm8gZXh0ZW5zaW9uIG1vZHVsZSwgdGhpcyBoYXNoIGlzIHVuc3VwcG9ydGVkLgogCkBAIC05Niw2ICsxMTQsOSBAQAogCiAKIGRlZiBfX2dldF9vcGVuc3NsX2NvbnN0cnVjdG9yKG5hbWUpOgorICAgIGlmIG5hbWUgaW4geydibGFrZTJiJywgJ2JsYWtlMnMnfToKKyAgICAgICAgIyBQcmVmZXIgb3VyIGJsYWtlMiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkKICAgICB0cnk6CiAgICAgICAgIGYgPSBnZXRhdHRyKF9oYXNobGliLCAnb3BlbnNzbF8nICsgbmFtZSkKICAgICAgICAgIyBBbGxvdyB0aGUgQyBtb2R1bGUgdG8gcmFpc2UgVmFsdWVFcnJvci4gIFRoZSBmdW5jdGlvbiB3aWxsIGJlCkBAIC0xMDcsMTcgKzEyOCwyMyBAQAogICAgICAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKQogCiAKLWRlZiBfX3B5X25ldyhuYW1lLCBkYXRhPWInJyk6CitkZWYgX19weV9uZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKToKKyAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUKKyAgICBuYW1lZCBhbGdvcml0aG07IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KKyAgICAiIiIKKyAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKShkYXRhLCAqKmt3YXJncykKKworCitkZWYgX19oYXNoX25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpOgogICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJykgLSBSZXR1cm4gYSBuZXcgaGFzaGluZyBvYmplY3QgdXNpbmcgdGhlIG5hbWVkIGFsZ29yaXRobTsKICAgICBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBieXRlcykuCiAgICAgIiIiCi0gICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkoZGF0YSkKLQotCi1kZWYgX19oYXNoX25ldyhuYW1lLCBkYXRhPWInJyk6Ci0gICAgIiIibmV3KG5hbWUsIGRhdGE9YicnKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUgbmFtZWQgYWxnb3JpdGhtOwotICAgIG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KLSAgICAiIiIKKyAgICBpZiBuYW1lIGluIHsnYmxha2UyYicsICdibGFrZTJzJ306CisgICAgICAgICMgUHJlZmVyIG91ciBibGFrZTIgaW1wbGVtZW50YXRpb24uCisgICAgICAgICMgT3BlblNTTCAxLjEuMCBjb21lcyB3aXRoIGEgbGltaXRlZCBpbXBsZW1lbnRhdGlvbiBvZiBibGFrZTJiL3MuCisgICAgICAgICMgSXQgZG9lcyBuZWl0aGVyIHN1cHBvcnQga2V5ZWQgYmxha2UyIG5vciBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlCisgICAgICAgICMgc2FsdCwgcGVyc29uYWwsIHRyZWUgaGFzaGluZyBvciBTU0UuCisgICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEsICoqa3dhcmdzKQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIF9oYXNobGliLm5ldyhuYW1lLCBkYXRhKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtMjAyLDYgKzIyOSwxMiBAQAogCiAgICAgICAgIHJldHVybiBka2V5Wzpka2xlbl0KIAordHJ5OgorICAgICMgT3BlblNTTCdzIHNjcnlwdCByZXF1aXJlcyBPcGVuU1NMIDEuMSsKKyAgICBmcm9tIF9oYXNobGliIGltcG9ydCBzY3J5cHQKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKIAogZm9yIF9fZnVuY19uYW1lIGluIF9fYWx3YXlzX3N1cHBvcnRlZDoKICAgICAjIHRyeSB0aGVtIGFsbCwgc29tZSBtYXkgbm90IHdvcmsgZHVlIHRvIHRoZSBPcGVuU1NMCkBAIC0yMTIsNiArMjQ1LDcgQEAKICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAgbG9nZ2luZy5leGNlcHRpb24oJ2NvZGUgZm9yIGhhc2ggJXMgd2FzIG5vdCBmb3VuZC4nLCBfX2Z1bmNfbmFtZSkKIAorCiAjIENsZWFudXAgbG9jYWxzKCkKIGRlbCBfX2Fsd2F5c19zdXBwb3J0ZWQsIF9fZnVuY19uYW1lLCBfX2dldF9oYXNoCiBkZWwgX19weV9uZXcsIF9faGFzaF9uZXcsIF9fZ2V0X29wZW5zc2xfY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL0xpYi9obWFjLnB5IGIvTGliL2htYWMucHkKaW5kZXggNzc3ODVhMi4uMTIxMDI5YSAxMDA2NDQKLS0tIGEvTGliL2htYWMucHkKKysrIGIvTGliL2htYWMucHkKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgaWYgbGVuKGtleSkgPiBibG9ja3NpemU6CiAgICAgICAgICAgICBrZXkgPSBzZWxmLmRpZ2VzdF9jb25zKGtleSkuZGlnZXN0KCkKIAotICAgICAgICBrZXkgPSBrZXkgKyBieXRlcyhibG9ja3NpemUgLSBsZW4oa2V5KSkKKyAgICAgICAga2V5ID0ga2V5LmxqdXN0KGJsb2Nrc2l6ZSwgYidcMCcpCiAgICAgICAgIHNlbGYub3V0ZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfNUMpKQogICAgICAgICBzZWxmLmlubmVyLnVwZGF0ZShrZXkudHJhbnNsYXRlKHRyYW5zXzM2KSkKICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGI3ODFjNjMuLmVmODY5YmMgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTM0LDcgKzM0LDcgQEAKICMgICAgIGV4cGxvZGUsIHNvIGRvbid0IGRvIGl0LgogIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW9wZW4tc3RhdGUKICMgYW5kIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1uYW1lLXN0YXRlCi10YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgnKFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKikoPzpcc3wvKD8hPikpKicpCit0YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZShyJyhbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSopKD86XHN8Lyg/IT4pKSonKQogYXR0cmZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKAogICAgIHInKCg/PD1bXCciXHMvXSlbXlxzLz5dW15ccy89Pl0qKShccyo9K1xzKicKICAgICByJyhcJ1teXCddKlwnfCJbXiJdKiJ8KD8hW1wnIl0pW14+XHNdKikpPyg/OlxzfC8oPyE+KSkqJykKQEAgLTU2LDcgKzU2LDcgQEAKIGVuZGVuZHRhZyA9IHJlLmNvbXBpbGUoJz4nKQogIyB0aGUgSFRNTCA1IHNwZWMsIHNlY3Rpb24gOC4xLjIuMiwgZG9lc24ndCBhbGxvdyBzcGFjZXMgYmV0d2VlbgogIyA8LyBhbmQgdGhlIHRhZyBuYW1lLCBzbyBtYXliZSB0aGlzIHNob3VsZCBiZSBmaXhlZAotZW5kdGFnZmluZCA9IHJlLmNvbXBpbGUoJzwvXHMqKFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKilccyo+JykKK2VuZHRhZ2ZpbmQgPSByZS5jb21waWxlKHInPC9ccyooW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKVxzKj4nKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDM1MmMxMDEuLmE4ZTU5YjkgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTEsNCArMSw0IEBACi0iIiJIVFRQLzEuMSBjbGllbnQgbGlicmFyeQorciIiIkhUVFAvMS4xIGNsaWVudCBsaWJyYXJ5CiAKIDxpbnRybyBzdHVmZiBnb2VzIGhlcmU+CiA8b3RoZXIgc3R1ZmYsIHRvbz4KQEAgLTQyMCw2ICs0MjAsNyBAQAogICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCiAKICAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIkFsd2F5cyByZXR1cm5zIFRydWUiIiIKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICMgRW5kIG9mICJyYXcgc3RyZWFtIiBtZXRob2RzCkBAIC00NjcsNiArNDY4LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSBiIGFuZCByZXR1cm4gdGhlIG51bWJlcgorICAgICAgICBvZiBieXRlcyByZWFkLgorICAgICAgICAiIiIKKwogICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gMAogCkBAIC03MDYsNiArNzExLDE3IEBACiAgICAgICAgIHJldHVybiBzZWxmLmZwLmZpbGVubygpCiAKICAgICBkZWYgZ2V0aGVhZGVyKHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICcnJ1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgbWF0Y2hpbmcgKm5hbWUqLgorCisgICAgICAgIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGluZyBoZWFkZXJzLCB0aGUgdmFsdWVzIGFyZQorICAgICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyBzZXBhcmF0ZWQgYnkgY29tbWFzIGFuZCBzcGFjZXMuCisKKyAgICAgICAgSWYgbm8gbWF0Y2hpbmcgaGVhZGVyIGlzIGZvdW5kLCByZXR1cm5zICpkZWZhdWx0KiBvciBOb25lIGlmCisgICAgICAgIHRoZSAqZGVmYXVsdCogaXMgbm90IHNwZWNpZmllZC4KKworICAgICAgICBJZiB0aGUgaGVhZGVycyBhcmUgdW5rbm93biwgcmFpc2VzIGh0dHAuY2xpZW50LlJlc3BvbnNlTm90UmVhZHkuCisKKyAgICAgICAgJycnCiAgICAgICAgIGlmIHNlbGYuaGVhZGVycyBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgUmVzcG9uc2VOb3RSZWFkeSgpCiAgICAgICAgIGhlYWRlcnMgPSBzZWxmLmhlYWRlcnMuZ2V0X2FsbChuYW1lKSBvciBkZWZhdWx0CkBAIC03MjgsMTIgKzc0NCw0NSBAQAogICAgICMgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQtc3R5bGUgdXJsbGliIHJlc3BvbnNlcy4KIAogICAgIGRlZiBpbmZvKHNlbGYpOgorICAgICAgICAnJydSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyBtaW1ldG9vbHMuTWVzc2FnZSBjb250YWluaW5nCisgICAgICAgIG1ldGEtaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBVUkwuCisKKyAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIEhUVFAsIHRoZXNlIGhlYWRlcnMgYXJlIHRob3NlIHJldHVybmVkIGJ5CisgICAgICAgIHRoZSBzZXJ2ZXIgYXQgdGhlIGhlYWQgb2YgdGhlIHJldHJpZXZlZCBIVE1MIHBhZ2UgKGluY2x1ZGluZworICAgICAgICBDb250ZW50LUxlbmd0aCBhbmQgQ29udGVudC1UeXBlKS4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgRlRQLCBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlciB3aWxsIGJlCisgICAgICAgIHByZXNlbnQgaWYgKGFzIGlzIG5vdyB1c3VhbCkgdGhlIHNlcnZlciBwYXNzZWQgYmFjayBhIGZpbGUKKyAgICAgICAgbGVuZ3RoIGluIHJlc3BvbnNlIHRvIHRoZSBGVFAgcmV0cmlldmFsIHJlcXVlc3QuIEEKKyAgICAgICAgQ29udGVudC1UeXBlIGhlYWRlciB3aWxsIGJlIHByZXNlbnQgaWYgdGhlIE1JTUUgdHlwZSBjYW4gYmUKKyAgICAgICAgZ3Vlc3NlZC4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgbG9jYWwtZmlsZSwgcmV0dXJuZWQgaGVhZGVycyB3aWxsIGluY2x1ZGUKKyAgICAgICAgYSBEYXRlIHJlcHJlc2VudGluZyB0aGUgZmlsZSdzIGxhc3QtbW9kaWZpZWQgdGltZSwgYQorICAgICAgICBDb250ZW50LUxlbmd0aCBnaXZpbmcgZmlsZSBzaXplLCBhbmQgYSBDb250ZW50LVR5cGUKKyAgICAgICAgY29udGFpbmluZyBhIGd1ZXNzIGF0IHRoZSBmaWxlJ3MgdHlwZS4gU2VlIGFsc28gdGhlCisgICAgICAgIGRlc2NyaXB0aW9uIG9mIHRoZSBtaW1ldG9vbHMgbW9kdWxlLgorCisgICAgICAgICcnJwogICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJzCiAKICAgICBkZWYgZ2V0dXJsKHNlbGYpOgorICAgICAgICAnJydSZXR1cm4gdGhlIHJlYWwgVVJMIG9mIHRoZSBwYWdlLgorCisgICAgICAgIEluIHNvbWUgY2FzZXMsIHRoZSBIVFRQIHNlcnZlciByZWRpcmVjdHMgYSBjbGllbnQgdG8gYW5vdGhlcgorICAgICAgICBVUkwuIFRoZSB1cmxvcGVuKCkgZnVuY3Rpb24gaGFuZGxlcyB0aGlzIHRyYW5zcGFyZW50bHksIGJ1dCBpbgorICAgICAgICBzb21lIGNhc2VzIHRoZSBjYWxsZXIgbmVlZHMgdG8ga25vdyB3aGljaCBVUkwgdGhlIGNsaWVudCB3YXMKKyAgICAgICAgcmVkaXJlY3RlZCB0by4gVGhlIGdldHVybCgpIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBnZXQgYXQgdGhpcworICAgICAgICByZWRpcmVjdGVkIFVSTC4KKworICAgICAgICAnJycKICAgICAgICAgcmV0dXJuIHNlbGYudXJsCiAKICAgICBkZWYgZ2V0Y29kZShzZWxmKToKKyAgICAgICAgJycnUmV0dXJuIHRoZSBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgd2FzIHNlbnQgd2l0aCB0aGUgcmVzcG9uc2UsCisgICAgICAgIG9yIE5vbmUgaWYgdGhlIFVSTCBpcyBub3QgYW4gSFRUUCBVUkwuCisKKyAgICAgICAgJycnCiAgICAgICAgIHJldHVybiBzZWxmLnN0YXR1cwogCiBjbGFzcyBIVFRQQ29ubmVjdGlvbjoKQEAgLTc0Niw2ICs3OTUsNDQgQEAKICAgICBhdXRvX29wZW4gPSAxCiAgICAgZGVidWdsZXZlbCA9IDAKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2lzX3RleHRJTyhzdHJlYW0pOgorICAgICAgICAiIiJUZXN0IHdoZXRoZXIgYSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGEgdGV4dCBvciBhIGJpbmFyeSBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShzdHJlYW0sIGlvLlRleHRJT0Jhc2UpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9nZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKToKKyAgICAgICAgIiIiR2V0IHRoZSBjb250ZW50LWxlbmd0aCBiYXNlZCBvbiB0aGUgYm9keS4KKworICAgICAgICBJZiB0aGUgYm9keSBpcyBOb25lLCB3ZSBzZXQgQ29udGVudC1MZW5ndGg6IDAgZm9yIG1ldGhvZHMgdGhhdCBleHBlY3QKKyAgICAgICAgYSBib2R5IChSRkMgNzIzMCwgU2VjdGlvbiAzLjMuMikuIFdlIGFsc28gc2V0IHRoZSBDb250ZW50LUxlbmd0aCBmb3IKKyAgICAgICAgYW55IG1ldGhvZCBpZiB0aGUgYm9keSBpcyBhIHN0ciBvciBieXRlcy1saWtlIG9iamVjdCBhbmQgbm90IGEgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGJvZHkgaXMgTm9uZToKKyAgICAgICAgICAgICMgZG8gYW4gZXhwbGljaXQgY2hlY2sgZm9yIG5vdCBOb25lIGhlcmUgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgICAgICMgYmV0d2VlbiB1bnNldCBhbmQgc2V0IGJ1dCBlbXB0eQorICAgICAgICAgICAgaWYgbWV0aG9kLnVwcGVyKCkgaW4gX01FVEhPRFNfRVhQRUNUSU5HX0JPRFk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpZiBoYXNhdHRyKGJvZHksICdyZWFkJyk6CisgICAgICAgICAgICAjIGZpbGUtbGlrZSBvYmplY3QuCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgZG9lcyBpdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciBwcm90b2NvbCAoYnl0ZXMsIGJ5dGVhcnJheSwgYXJyYXkpPworICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGJvZHkpCisgICAgICAgICAgICByZXR1cm4gbXYubmJ5dGVzCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgorICAgICAgICAgICAgcmV0dXJuIGxlbihib2R5KQorCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKQEAgLTg4NCwxOCArOTcxLDkgQEAKICAgICAgICAgaWYgaGFzYXR0cihkYXRhLCAicmVhZCIpIDoKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICAgcHJpbnQoInNlbmRJbmcgYSByZWFkKClhYmxlIikKLSAgICAgICAgICAgIGVuY29kZSA9IEZhbHNlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kZSA9IGRhdGEubW9kZQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICMgaW8uQnl0ZXNJTyBhbmQgb3RoZXIgZmlsZS1saWtlIG9iamVjdHMgZG9uJ3QgaGF2ZSBhIGBtb2RlYAotICAgICAgICAgICAgICAgICMgYXR0cmlidXRlLgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgotICAgICAgICAgICAgICAgICAgICBlbmNvZGUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiZW5jb2RpbmcgZmlsZSB1c2luZyBpc28tODg1OS0xIikKKyAgICAgICAgICAgIGVuY29kZSA9IHNlbGYuX2lzX3RleHRJTyhkYXRhKQorICAgICAgICAgICAgaWYgZW5jb2RlIGFuZCBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBkYXRhYmxvY2sgPSBkYXRhLnJlYWQoYmxvY2tzaXplKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhYmxvY2s6CkBAIC05MjEsNyArOTk5LDIyIEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9idWZmZXIuYXBwZW5kKHMpCiAKLSAgICBkZWYgX3NlbmRfb3V0cHV0KHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lKToKKyAgICBkZWYgX3JlYWRfcmVhZGFibGUoc2VsZiwgcmVhZGFibGUpOgorICAgICAgICBibG9ja3NpemUgPSA4MTkyCisgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICBwcmludCgic2VuZEluZyBhIHJlYWQoKWFibGUiKQorICAgICAgICBlbmNvZGUgPSBzZWxmLl9pc190ZXh0SU8ocmVhZGFibGUpCisgICAgICAgIGlmIGVuY29kZSBhbmQgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YWJsb2NrID0gcmVhZGFibGUucmVhZChibG9ja3NpemUpCisgICAgICAgICAgICBpZiBub3QgZGF0YWJsb2NrOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBlbmNvZGU6CisgICAgICAgICAgICAgICAgZGF0YWJsb2NrID0gZGF0YWJsb2NrLmVuY29kZSgiaXNvLTg4NTktMSIpCisgICAgICAgICAgICB5aWVsZCBkYXRhYmxvY2sKKworICAgIGRlZiBfc2VuZF9vdXRwdXQoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUsIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgIiIiU2VuZCB0aGUgY3VycmVudGx5IGJ1ZmZlcmVkIHJlcXVlc3QgYW5kIGNsZWFyIHRoZSBidWZmZXIuCiAKICAgICAgICAgQXBwZW5kcyBhbiBleHRyYSBcXHJcXG4gdG8gdGhlIGJ1ZmZlci4KQEAgLTkzMCwxMCArMTAyMyw1MCBAQAogICAgICAgICBzZWxmLl9idWZmZXIuZXh0ZW5kKChiIiIsIGIiIikpCiAgICAgICAgIG1zZyA9IGIiXHJcbiIuam9pbihzZWxmLl9idWZmZXIpCiAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbOl0KLQogICAgICAgICBzZWxmLnNlbmQobXNnKQorCiAgICAgICAgIGlmIG1lc3NhZ2VfYm9keSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2VuZChtZXNzYWdlX2JvZHkpCisKKyAgICAgICAgICAgICMgY3JlYXRlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgdG8gbWVzc2FnZV9ib2R5CisgICAgICAgICAgICBpZiBoYXNhdHRyKG1lc3NhZ2VfYm9keSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICAjIExldCBmaWxlLWxpa2UgdGFrZSBwcmVjZWRlbmNlIG92ZXIgYnl0ZS1saWtlLiAgVGhpcworICAgICAgICAgICAgICAgICMgaXMgbmVlZGVkIHRvIGFsbG93IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIG1tYXAnZWQKKyAgICAgICAgICAgICAgICAjIGZpbGVzIHRvIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgICAgICAgICAgICAgICBjaHVua3MgPSBzZWxmLl9yZWFkX3JlYWRhYmxlKG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaXMgc29sZWx5IHRvIGNoZWNrIHRvIHNlZSBpZiBtZXNzYWdlX2JvZHkKKyAgICAgICAgICAgICAgICAgICAgIyBpbXBsZW1lbnRzIHRoZSBidWZmZXIgQVBJLiAgaXQgL3dvdWxkLyBiZSBlYXNpZXIKKyAgICAgICAgICAgICAgICAgICAgIyB0byBjYXB0dXJlIGlmIFB5T2JqZWN0X0NoZWNrQnVmZmVyIHdhcyBleHBvc2VkCisgICAgICAgICAgICAgICAgICAgICMgdG8gUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBpdGVyKG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibWVzc2FnZV9ib2R5IHNob3VsZCBiZSBhIGJ5dGVzLWxpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Qgb3IgYW4gaXRlcmFibGUsIGdvdCAlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUobWVzc2FnZV9ib2R5KSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgYnVmZmVyIGludGVyZmFjZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IGludG8gc29ja2V0IG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gKG1lc3NhZ2VfYm9keSwpCisKKyAgICAgICAgICAgIGZvciBjaHVuayBpbiBjaHVua3M6CisgICAgICAgICAgICAgICAgaWYgbm90IGNodW5rOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1plcm8gbGVuZ3RoIGNodW5rIGlnbm9yZWQnKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgZW5jb2RlX2NodW5rZWQgYW5kIHNlbGYuX2h0dHBfdnNuID09IDExOgorICAgICAgICAgICAgICAgICAgICAjIGNodW5rZWQgZW5jb2RpbmcKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBmJ3tsZW4oY2h1bmspOlh9XHJcbicuZW5jb2RlKCdhc2NpaScpICsgY2h1bmsgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBiJ1xyXG4nCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGNodW5rKQorCisgICAgICAgICAgICBpZiBlbmNvZGVfY2h1bmtlZCBhbmQgc2VsZi5faHR0cF92c24gPT0gMTE6CisgICAgICAgICAgICAgICAgIyBlbmQgY2h1bmtlZCB0cmFuc2ZlcgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZChiJzBcclxuXHJcbicpCiAKICAgICBkZWYgcHV0cmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgc2tpcF9ob3N0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgIHNraXBfYWNjZXB0X2VuY29kaW5nPUZhbHNlKToKQEAgLTEwODcsNTIgKzEyMjAsMjcgQEAKICAgICAgICAgaGVhZGVyID0gaGVhZGVyICsgYic6ICcgKyB2YWx1ZQogICAgICAgICBzZWxmLl9vdXRwdXQoaGVhZGVyKQogCi0gICAgZGVmIGVuZGhlYWRlcnMoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUpOgorICAgIGRlZiBlbmRoZWFkZXJzKHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lLCAqLCBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgICIiIkluZGljYXRlIHRoYXQgdGhlIGxhc3QgaGVhZGVyIGxpbmUgaGFzIGJlZW4gc2VudCB0byB0aGUgc2VydmVyLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIHNlbmRzIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuICBUaGUgb3B0aW9uYWwgbWVzc2FnZV9ib2R5CiAgICAgICAgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHBhc3MgYSBtZXNzYWdlIGJvZHkgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgICAgICByZXF1ZXN0LiAgVGhlIG1lc3NhZ2UgYm9keSB3aWxsIGJlIHNlbnQgaW4gdGhlIHNhbWUgcGFja2V0IGFzIHRoZQotICAgICAgICBtZXNzYWdlIGhlYWRlcnMgaWYgaXQgaXMgYSBzdHJpbmcsIG90aGVyd2lzZSBpdCBpcyBzZW50IGFzIGEgc2VwYXJhdGUKLSAgICAgICAgcGFja2V0LgorICAgICAgICByZXF1ZXN0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fX3N0YXRlID09IF9DU19SRVFfU1RBUlRFRDoKICAgICAgICAgICAgIHNlbGYuX19zdGF0ZSA9IF9DU19SRVFfU0VOVAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgQ2Fubm90U2VuZEhlYWRlcigpCi0gICAgICAgIHNlbGYuX3NlbmRfb3V0cHV0KG1lc3NhZ2VfYm9keSkKKyAgICAgICAgc2VsZi5fc2VuZF9vdXRwdXQobWVzc2FnZV9ib2R5LCBlbmNvZGVfY2h1bmtlZD1lbmNvZGVfY2h1bmtlZCkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30pOgorICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30sICosCisgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICAiIiJTZW5kIGEgY29tcGxldGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiIiIgotICAgICAgICBzZWxmLl9zZW5kX3JlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpCisgICAgICAgIHNlbGYuX3NlbmRfcmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycywgZW5jb2RlX2NodW5rZWQpCiAKLSAgICBkZWYgX3NldF9jb250ZW50X2xlbmd0aChzZWxmLCBib2R5LCBtZXRob2QpOgotICAgICAgICAjIFNldCB0aGUgY29udGVudC1sZW5ndGggYmFzZWQgb24gdGhlIGJvZHkuIElmIHRoZSBib2R5IGlzICJlbXB0eSIsIHdlCi0gICAgICAgICMgc2V0IENvbnRlbnQtTGVuZ3RoOiAwIGZvciBtZXRob2RzIHRoYXQgZXhwZWN0IGEgYm9keSAoUkZDIDcyMzAsCi0gICAgICAgICMgU2VjdGlvbiAzLjMuMikuIElmIHRoZSBib2R5IGlzIHNldCBmb3Igb3RoZXIgbWV0aG9kcywgd2Ugc2V0IHRoZQotICAgICAgICAjIGhlYWRlciBwcm92aWRlZCB3ZSBjYW4gZmlndXJlIG91dCB3aGF0IHRoZSBsZW5ndGggaXMuCi0gICAgICAgIHRoZWxlbiA9IE5vbmUKLSAgICAgICAgbWV0aG9kX2V4cGVjdHNfYm9keSA9IG1ldGhvZC51cHBlcigpIGluIF9NRVRIT0RTX0VYUEVDVElOR19CT0RZCi0gICAgICAgIGlmIGJvZHkgaXMgTm9uZSBhbmQgbWV0aG9kX2V4cGVjdHNfYm9keToKLSAgICAgICAgICAgIHRoZWxlbiA9ICcwJwotICAgICAgICBlbGlmIGJvZHkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGhlbGVuID0gc3RyKGxlbihib2R5KSkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBJZiB0aGlzIGlzIGEgZmlsZS1saWtlIG9iamVjdCwgdHJ5IHRvCi0gICAgICAgICAgICAgICAgIyBmc3RhdCBpdHMgZmlsZSBkZXNjcmlwdG9yCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB0aGVsZW4gPSBzdHIob3MuZnN0YXQoYm9keS5maWxlbm8oKSkuc3Rfc2l6ZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBzZW5kIGEgbGVuZ3RoIGlmIHRoaXMgZmFpbGVkCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6IHByaW50KCJDYW5ub3Qgc3RhdCEhIikKLQotICAgICAgICBpZiB0aGVsZW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignQ29udGVudC1MZW5ndGgnLCB0aGVsZW4pCi0KLSAgICBkZWYgX3NlbmRfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgZGVmIF9zZW5kX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMsIGVuY29kZV9jaHVua2VkKToKICAgICAgICAgIyBIb25vciBleHBsaWNpdGx5IHJlcXVlc3RlZCBIb3N0OiBhbmQgQWNjZXB0LUVuY29kaW5nOiBoZWFkZXJzLgotICAgICAgICBoZWFkZXJfbmFtZXMgPSBkaWN0LmZyb21rZXlzKFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIGhlYWRlcl9uYW1lcyA9IGZyb3plbnNldChrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycykKICAgICAgICAgc2tpcHMgPSB7fQogICAgICAgICBpZiAnaG9zdCcgaW4gaGVhZGVyX25hbWVzOgogICAgICAgICAgICAgc2tpcHNbJ3NraXBfaG9zdCddID0gMQpAQCAtMTE0MSwxNSArMTI0OSw0MCBAQAogCiAgICAgICAgIHNlbGYucHV0cmVxdWVzdChtZXRob2QsIHVybCwgKipza2lwcykKIAorICAgICAgICAjIGNodW5rZWQgZW5jb2Rpbmcgd2lsbCBoYXBwZW4gaWYgSFRUUC8xLjEgaXMgdXNlZCBhbmQgZWl0aGVyCisgICAgICAgICMgdGhlIGNhbGxlciBwYXNzZXMgZW5jb2RlX2NodW5rZWQ9VHJ1ZSBvciB0aGUgZm9sbG93aW5nCisgICAgICAgICMgY29uZGl0aW9ucyBob2xkOgorICAgICAgICAjIDEuIGNvbnRlbnQtbGVuZ3RoIGhhcyBub3QgYmVlbiBleHBsaWNpdGx5IHNldAorICAgICAgICAjIDIuIHRoZSBib2R5IGlzIGEgZmlsZSBvciBpdGVyYWJsZSwgYnV0IG5vdCBhIHN0ciBvciBieXRlcy1saWtlCisgICAgICAgICMgMy4gVHJhbnNmZXItRW5jb2RpbmcgaGFzIE5PVCBiZWVuIGV4cGxpY2l0bHkgc2V0IGJ5IHRoZSBjYWxsZXIKKwogICAgICAgICBpZiAnY29udGVudC1sZW5ndGgnIG5vdCBpbiBoZWFkZXJfbmFtZXM6Ci0gICAgICAgICAgICBzZWxmLl9zZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKQorICAgICAgICAgICAgIyBvbmx5IGNodW5rIGJvZHkgaWYgbm90IGV4cGxpY2l0bHkgc2V0IGZvciBiYWNrd2FyZHMKKyAgICAgICAgICAgICMgY29tcGF0aWJpbGl0eSwgYXNzdW1pbmcgdGhlIGNsaWVudCBjb2RlIGlzIGFscmVhZHkgaGFuZGxpbmcgdGhlCisgICAgICAgICAgICAjIGNodW5raW5nCisgICAgICAgICAgICBpZiAndHJhbnNmZXItZW5jb2RpbmcnIG5vdCBpbiBoZWFkZXJfbmFtZXM6CisgICAgICAgICAgICAgICAgIyBpZiBjb250ZW50LWxlbmd0aCBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBkZXRlcm1pbmVkLCBmYWxsCisgICAgICAgICAgICAgICAgIyBiYWNrIHRvIGNodW5rZWQgZW5jb2RpbmcKKyAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBzZWxmLl9nZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKQorICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRfbGVuZ3RoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGJvZHkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdVbmFibGUgdG8gZGV0ZXJtaW5lIHNpemUgb2YgJXInICUgYm9keSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJywgJ2NodW5rZWQnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHN0cihjb250ZW50X2xlbmd0aCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IEZhbHNlCisKICAgICAgICAgZm9yIGhkciwgdmFsdWUgaW4gaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoaGRyLCB2YWx1ZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgogICAgICAgICAgICAgIyBSRkMgMjYxNiBTZWN0aW9uIDMuNy4xIHNheXMgdGhhdCB0ZXh0IGRlZmF1bHQgaGFzIGEKICAgICAgICAgICAgICMgZGVmYXVsdCBjaGFyc2V0IG9mIGlzby04ODU5LTEuCiAgICAgICAgICAgICBib2R5ID0gX2VuY29kZShib2R5LCAnYm9keScpCi0gICAgICAgIHNlbGYuZW5kaGVhZGVycyhib2R5KQorICAgICAgICBzZWxmLmVuZGhlYWRlcnMoYm9keSwgZW5jb2RlX2NodW5rZWQ9ZW5jb2RlX2NodW5rZWQpCiAKICAgICBkZWYgZ2V0cmVzcG9uc2Uoc2VsZik6CiAgICAgICAgICIiIkdldCB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLgpAQCAtMTIzMiw2ICsxMzY1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1Ob25lKToKICAgICAgICAgICAgIHN1cGVyKEhUVFBTQ29ubmVjdGlvbiwgc2VsZikuX19pbml0X18oaG9zdCwgcG9ydCwgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3MpCisgICAgICAgICAgICBpZiAoa2V5X2ZpbGUgaXMgbm90IE5vbmUgb3IgY2VydF9maWxlIGlzIG5vdCBOb25lIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5X2ZpbGUsIGNlcnRfZmlsZSBhbmQgY2hlY2tfaG9zdG5hbWUgYXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkLCB1c2UgYSBjdXN0b20gY29udGV4dCBpbnN0ZWFkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleV9maWxlID0ga2V5X2ZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydF9maWxlID0gY2VydF9maWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jb29raWVqYXIucHkgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKaW5kZXggNmQ0NTcyYS4uYWRmOTU2ZCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llamFyLnB5CisrKyBiL0xpYi9odHRwL2Nvb2tpZWphci5weQpAQCAtMjAwLDcgKzIwMCw3IEBACiAKIFNUUklDVF9EQVRFX1JFID0gcmUuY29tcGlsZSgKICAgICByIl5bU01UV0ZdW2Etel1bYS16XSwgKFxkXGQpIChbSkZNQVNPTkRdW2Etel1bYS16XSkgIgotICAgICIoXGRcZFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQiLCByZS5BU0NJSSkKKyAgICByIihcZFxkXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJCIsIHJlLkFTQ0lJKQogV0VFS0RBWV9SRSA9IHJlLmNvbXBpbGUoCiAgICAgciJeKD86U3VufE1vbnxUdWV8V2VkfFRodXxGcml8U2F0KVthLXpdKiw/XHMqIiwgcmUuSSB8IHJlLkFTQ0lJKQogTE9PU0VfSFRUUF9EQVRFX1JFID0gcmUuY29tcGlsZSgKQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgIHJldHVybiBfc3RyMnRpbWUoZGF5LCBtb24sIHlyLCBociwgbWluLCBzZWMsIHR6KQogCiBJU09fREFURV9SRSA9IHJlLmNvbXBpbGUoCi0gICAgIiIiXgorICAgIHIiIiJeCiAgICAgKFxkezR9KSAgICAgICAgICAgICAgIyB5ZWFyCiAgICAgICAgWy1cL10/CiAgICAgKFxkXGQ/KSAgICAgICAgICAgICAgIyBudW1lcmljYWwgbW9udGgKQEAgLTQxMSw3ICs0MTEsNyBAQAogICAgICAgICAgICAgICAgIHBhaXJzID0gW10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBza2lwIGp1bmsKLSAgICAgICAgICAgICAgICBub25fanVuaywgbnJfanVua19jaGFycyA9IHJlLnN1Ym4oIl5bPVxzO10qIiwgIiIsIHRleHQpCisgICAgICAgICAgICAgICAgbm9uX2p1bmssIG5yX2p1bmtfY2hhcnMgPSByZS5zdWJuKHIiXls9XHM7XSoiLCAiIiwgdGV4dCkKICAgICAgICAgICAgICAgICBhc3NlcnQgbnJfanVua19jaGFycyA+IDAsICgKICAgICAgICAgICAgICAgICAgICAgInNwbGl0X2hlYWRlcl93b3JkcyBidWc6ICclcycsICclcycsICVzIiAlCiAgICAgICAgICAgICAgICAgICAgIChvcmlnX3RleHQsIHRleHQsIHBhaXJzKSkKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZXMucHkgYi9MaWIvaHR0cC9jb29raWVzLnB5CmluZGV4IGE3M2ZlMzguLmJlM2IwODAgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZXMucHkKKysrIGIvTGliL2h0dHAvY29va2llcy5weQpAQCAtNDU2LDkgKzQ1Niw4IEBACiAjCiAKIF9MZWdhbEtleUNoYXJzICA9IHIiXHdcZCEjJSYnfl9gPjxALDovXCRcKlwrXC1cLlxeXHxcKVwoXD9cfVx7XD0iCi1fTGVnYWxWYWx1ZUNoYXJzID0gX0xlZ2FsS2V5Q2hhcnMgKyAnXFtcXScKK19MZWdhbFZhbHVlQ2hhcnMgPSBfTGVnYWxLZXlDaGFycyArIHInXFtcXScKIF9Db29raWVQYXR0ZXJuID0gcmUuY29tcGlsZShyIiIiCi0gICAgKD94KSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHZlcmJvc2UgcGF0dGVybgogICAgIFxzKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsIHdoaXRlc3BhY2UgYXQgc3RhcnQgb2YgY29va2llCiAgICAgKD9QPGtleT4gICAgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZ3JvdXAgJ2tleScKICAgICBbIiIiICsgX0xlZ2FsS2V5Q2hhcnMgKyByIiIiXSs/ICAgIyBBbnkgd29yZCBvZiBhdCBsZWFzdCBvbmUgbGV0dGVyCkBAIC00NzUsNyArNDc0LDcgQEAKICAgICApPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2Ygb3B0aW9uYWwgdmFsdWUgZ3JvdXAKICAgICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBbnkgbnVtYmVyIG9mIHNwYWNlcy4KICAgICAoXHMrfDt8JCkgICAgICAgICAgICAgICAgICAgICAgIyBFbmRpbmcgZWl0aGVyIGF0IHNwYWNlLCBzZW1pY29sb24sIG9yIEVPUy4KLSAgICAiIiIsIHJlLkFTQ0lJKSAgICAgICAgICAgICAgICAgIyBNYXkgYmUgcmVtb3ZlZCBpZiBzYWZlLgorICAgICIiIiwgcmUuQVNDSUkgfCByZS5WRVJCT1NFKSAgICAjIHJlLkFTQ0lJIG1heSBiZSByZW1vdmVkIGlmIHNhZmUuCiAKIAogIyBBdCBsb25nIGxhc3QsIGhlcmUgaXMgdGhlIGNvb2tpZSBjbGFzcy4gIFVzaW5nIHRoaXMgY2xhc3MgaXMgYWxtb3N0IGp1c3QgbGlrZQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvc2VydmVyLnB5IGIvTGliL2h0dHAvc2VydmVyLnB5CmluZGV4IDAwNjIwZDEuLmUxMmU0NWIgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL3NlcnZlci5weQorKysgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKQEAgLTg3LDYgKzg3LDcgQEAKICAgICAiU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyIiwgIkNHSUhUVFBSZXF1ZXN0SGFuZGxlciIsCiBdCiAKK2ltcG9ydCBlbWFpbC51dGlscwogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGlvCkBAIC0xMjYsOSArMTI3LDYgQEAKIAogREVGQVVMVF9FUlJPUl9DT05URU5UX1RZUEUgPSAidGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiCiAKLWRlZiBfcXVvdGVfaHRtbChodG1sKToKLSAgICByZXR1cm4gaHRtbC5yZXBsYWNlKCImIiwgIiZhbXA7IikucmVwbGFjZSgiPCIsICImbHQ7IikucmVwbGFjZSgiPiIsICImZ3Q7IikKLQogY2xhc3MgSFRUUFNlcnZlcihzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKToKIAogICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSAxICAgICMgU2VlbXMgdG8gbWFrZSBzZW5zZSBpbiB0ZXN0aW5nIGVudmlyb25tZW50CkBAIC0xMzYsNyArMTM0LDcgQEAKICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CiAgICAgICAgICIiIk92ZXJyaWRlIHNlcnZlcl9iaW5kIHRvIHN0b3JlIHRoZSBzZXJ2ZXIgbmFtZS4iIiIKICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfYmluZChzZWxmKQotICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbOjJdCiAgICAgICAgIHNlbGYuc2VydmVyX25hbWUgPSBzb2NrZXQuZ2V0ZnFkbihob3N0KQogICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gcG9ydAogCkBAIC0yODIsMTIgKzI4MCw5IEBACiAgICAgICAgIHdvcmRzID0gcmVxdWVzdGxpbmUuc3BsaXQoKQogICAgICAgICBpZiBsZW4od29yZHMpID09IDM6CiAgICAgICAgICAgICBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uID0gd29yZHMKLSAgICAgICAgICAgIGlmIHZlcnNpb25bOjVdICE9ICdIVFRQLyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAotICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAotICAgICAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbls6NV0gIT0gJ0hUVFAvJzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgICAgIGJhc2VfdmVyc2lvbl9udW1iZXIgPSB2ZXJzaW9uLnNwbGl0KCcvJywgMSlbMV0KICAgICAgICAgICAgICAgICB2ZXJzaW9uX251bWJlciA9IGJhc2VfdmVyc2lvbl9udW1iZXIuc3BsaXQoIi4iKQogICAgICAgICAgICAgICAgICMgUkZDIDIxNDUgc2VjdGlvbiAzLjEgc2F5cyB0aGVyZSBjYW4gYmUgb25seSBvbmUgIi4iIGFuZApAQCAtMzA5LDcgKzMwNCw3IEBACiAgICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMiwgMCk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVELAotICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIFZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIHZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMjoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGggPSB3b3JkcwpAQCAtMzMyLDEwICszMjcsMTEgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5oZWFkZXJzID0gaHR0cC5jbGllbnQucGFyc2VfaGVhZGVycyhzZWxmLnJmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xhc3M9c2VsZi5NZXNzYWdlQ2xhc3MpCi0gICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5MaW5lVG9vTG9uZzoKKyAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkxpbmVUb29Mb25nIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKLSAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAotICAgICAgICAgICAgICAgICJMaW5lIHRvbyBsb25nIikKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLlJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UsCisgICAgICAgICAgICAgICAgIkxpbmUgdG9vIGxvbmciLAorICAgICAgICAgICAgICAgIHN0cihlcnIpKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5IVFRQRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKQEAgLTQ2NSw4ICs0NjEsOCBAQAogICAgICAgICAgICAgIyAoc2VlIGJ1ZyAjMTEwMDIwMSkKICAgICAgICAgICAgIGNvbnRlbnQgPSAoc2VsZi5lcnJvcl9tZXNzYWdlX2Zvcm1hdCAlIHsKICAgICAgICAgICAgICAgICAnY29kZSc6IGNvZGUsCi0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBfcXVvdGVfaHRtbChtZXNzYWdlKSwKLSAgICAgICAgICAgICAgICAnZXhwbGFpbic6IF9xdW90ZV9odG1sKGV4cGxhaW4pCisgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBodG1sLmVzY2FwZShtZXNzYWdlLCBxdW90ZT1GYWxzZSksCisgICAgICAgICAgICAgICAgJ2V4cGxhaW4nOiBodG1sLmVzY2FwZShleHBsYWluLCBxdW90ZT1GYWxzZSkKICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICBib2R5ID0gY29udGVudC5lbmNvZGUoJ1VURi04JywgJ3JlcGxhY2UnKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1UeXBlIiwgc2VsZi5lcnJvcl9jb250ZW50X3R5cGUpCkBAIC00OTEsMTIgKzQ4NywxMiBAQAogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Vfb25seShzZWxmLCBjb2RlLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJTZW5kIHRoZSByZXNwb25zZSBoZWFkZXIgb25seS4iIiIKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgY29kZSBpbiBzZWxmLnJlc3BvbnNlczoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5yZXNwb25zZXNbY29kZV1bMF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CisgICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgY29kZSBpbiBzZWxmLnJlc3BvbnNlczoKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVzcG9uc2VzW2NvZGVdWzBdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnCiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIgPSBbXQogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKCgiJXMgJWQgJXNcclxuIiAlCkBAIC01ODMsMTIgKzU3OSw3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIGZvcm1hdHRlZCBmb3IgYSBtZXNzYWdlIGhlYWRlci4iIiIKICAgICAgICAgaWYgdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgICB0aW1lc3RhbXAgPSB0aW1lLnRpbWUoKQotICAgICAgICB5ZWFyLCBtb250aCwgZGF5LCBoaCwgbW0sIHNzLCB3ZCwgeSwgeiA9IHRpbWUuZ210aW1lKHRpbWVzdGFtcCkKLSAgICAgICAgcyA9ICIlcywgJTAyZCAlM3MgJTRkICUwMmQ6JTAyZDolMDJkIEdNVCIgJSAoCi0gICAgICAgICAgICAgICAgc2VsZi53ZWVrZGF5bmFtZVt3ZF0sCi0gICAgICAgICAgICAgICAgZGF5LCBzZWxmLm1vbnRobmFtZVttb250aF0sIHllYXIsCi0gICAgICAgICAgICAgICAgaGgsIG1tLCBzcykKLSAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgcmV0dXJuIGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUodGltZXN0YW1wLCB1c2VnbXQ9VHJ1ZSkKIAogICAgIGRlZiBsb2dfZGF0ZV90aW1lX3N0cmluZyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgZm9ybWF0dGVkIGZvciBsb2dnaW5nLiIiIgpAQCAtNzI2LDcgKzcxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICBkaXNwbGF5cGF0aCA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHBhdGgpCi0gICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUoZGlzcGxheXBhdGgpCisgICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUoZGlzcGxheXBhdGgsIHF1b3RlPUZhbHNlKQogICAgICAgICBlbmMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKICAgICAgICAgdGl0bGUgPSAnRGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzJyAlIGRpc3BsYXlwYXRoCiAgICAgICAgIHIuYXBwZW5kKCc8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iICcKQEAgLTc1MCw3ICs3NDEsNyBAQAogICAgICAgICAgICAgci5hcHBlbmQoJzxsaT48YSBocmVmPSIlcyI+JXM8L2E+PC9saT4nCiAgICAgICAgICAgICAgICAgICAgICUgKHVybGxpYi5wYXJzZS5xdW90ZShsaW5rbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpLAotICAgICAgICAgICAgICAgICAgICAgICBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSkpKQorICAgICAgICAgICAgICAgICAgICAgICBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSwgcXVvdGU9RmFsc2UpKSkKICAgICAgICAgci5hcHBlbmQoJzwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4nKQogICAgICAgICBlbmNvZGVkID0gJ1xuJy5qb2luKHIpLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICBmID0gaW8uQnl0ZXNJTygpCkBAIC0xMTkxLDE2ICsxMTgyLDE1IEBACiAgICAgc2VydmVyX2FkZHJlc3MgPSAoYmluZCwgcG9ydCkKIAogICAgIEhhbmRsZXJDbGFzcy5wcm90b2NvbF92ZXJzaW9uID0gcHJvdG9jb2wKLSAgICBodHRwZCA9IFNlcnZlckNsYXNzKHNlcnZlcl9hZGRyZXNzLCBIYW5kbGVyQ2xhc3MpCi0KLSAgICBzYSA9IGh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiIsIHNhWzBdLCAicG9ydCIsIHNhWzFdLCAiLi4uIikKLSAgICB0cnk6Ci0gICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIGh0dHBkLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHN5cy5leGl0KDApCisgICAgd2l0aCBTZXJ2ZXJDbGFzcyhzZXJ2ZXJfYWRkcmVzcywgSGFuZGxlckNsYXNzKSBhcyBodHRwZDoKKyAgICAgICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBzZXJ2ZV9tZXNzYWdlID0gIlNlcnZpbmcgSFRUUCBvbiB7aG9zdH0gcG9ydCB7cG9ydH0gKGh0dHA6Ly97aG9zdH06e3BvcnR9LykgLi4uIgorICAgICAgICBwcmludChzZXJ2ZV9tZXNzYWdlLmZvcm1hdChob3N0PXNhWzBdLCBwb3J0PXNhWzFdKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9NdWx0aVN0YXR1c0Jhci5weSBiL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODJiYTlhLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCi0KLWNsYXNzIE11bHRpU3RhdHVzQmFyKEZyYW1lKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKiprdyk6Ci0gICAgICAgIGlmIG1hc3RlciBpcyBOb25lOgotICAgICAgICAgICAgbWFzdGVyID0gVGsoKQotICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICoqa3cpCi0gICAgICAgIHNlbGYubGFiZWxzID0ge30KLQotICAgIGRlZiBzZXRfbGFiZWwoc2VsZiwgbmFtZSwgdGV4dD0nJywgc2lkZT1MRUZULCB3aWR0aD0wKToKLSAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5sYWJlbHM6Ci0gICAgICAgICAgICBsYWJlbCA9IExhYmVsKHNlbGYsIGJvcmRlcndpZHRoPTAsIGFuY2hvcj1XKQotICAgICAgICAgICAgbGFiZWwucGFjayhzaWRlPXNpZGUsIHBhZHk9MCwgcGFkeD00KQotICAgICAgICAgICAgc2VsZi5sYWJlbHNbbmFtZV0gPSBsYWJlbAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGFiZWwgPSBzZWxmLmxhYmVsc1tuYW1lXQotICAgICAgICBpZiB3aWR0aCAhPSAwOgotICAgICAgICAgICAgbGFiZWwuY29uZmlnKHdpZHRoPXdpZHRoKQotICAgICAgICBsYWJlbC5jb25maWcodGV4dD10ZXh0KQotCi1kZWYgX211bHRpc3RhdHVzX2JhcihwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIgJSh4LCB5ICsgMTUwKSkKLSAgICByb290LnRpdGxlKCJUZXN0IG11bHRpc3RhdHVzIGJhciIpCi0gICAgZnJhbWUgPSBGcmFtZShyb290KQotICAgIHRleHQgPSBUZXh0KGZyYW1lKQotICAgIHRleHQucGFjaygpCi0gICAgbXNiID0gTXVsdGlTdGF0dXNCYXIoZnJhbWUpCi0gICAgbXNiLnNldF9sYWJlbCgib25lIiwgImhlbGxvIikKLSAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAid29ybGQiKQotICAgIG1zYi5wYWNrKHNpZGU9Qk9UVE9NLCBmaWxsPVgpCi0KLSAgICBkZWYgY2hhbmdlKCk6Ci0gICAgICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJmb28iKQotICAgICAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAiYmFyIikKLQotICAgIGJ1dHRvbiA9IEJ1dHRvbihyb290LCB0ZXh0PSJVcGRhdGUgc3RhdHVzIiwgY29tbWFuZD1jaGFuZ2UpCi0gICAgYnV0dG9uLnBhY2soc2lkZT1CT1RUT00pCi0gICAgZnJhbWUucGFjaygpCi0gICAgZnJhbWUubWFpbmxvb3AoKQotICAgIHJvb3QubWFpbmxvb3AoKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihfbXVsdGlzdGF0dXNfYmFyKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTkVXUy50eHQgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dAppbmRleCA3MjkwNWMxLi5hM2ZjNTAxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ORVdTLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dApAQCAtMSw0NSArMSwxMDEgQEAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjUuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTctMDEtMDE/KgorV2hhdCdzIE5ldyBpbiBJRExFIDMuNi4wPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisqUmVsZWFzZSBkYXRlOiAyMDE2LTEyLTE2PyoKIAogLSBJc3N1ZSAjMTUzMDg6IEFkZCAnaW50ZXJydXB0IGV4ZWN1dGlvbicgKF5DKSB0byBTaGVsbCBtZW51LgogICBQYXRjaCBieSBSb2dlciBTZXJ3eSwgdXBkYXRlZCBieSBCYXlhcmQgUmFuZGVsLgogCiAtIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgogCistIElzc3VlICMyNzg5MTogQ29uc2lzdGVudGx5IGdyb3VwIGFuZCBzb3J0IGltcG9ydHMgd2l0aGluIGlkbGVsaWIgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTc2NDI6IGFkZCBsYXJnZXIgZm9udCBzaXplcyBmb3IgY2xhc3Nyb29tIHByb2plY3Rpb24uCisKIC0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KIAogLSBJc3N1ZSAjMjU1NjQ6IEluIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQKICAgdXNpbmcgZXhlYyBtZWFucyB0aGF0IF9fYnVpbHRpbnNfXyBpcyBkZWZpbmVkIGZvciBlYWNoIHN0YXRlbWVudC4KIAorLSBJc3N1ZSAjMjc4MjE6IEZpeCAzLjYuMGEzIHJlZ3Jlc3Npb24gdGhhdCBwcmV2ZW50ZWQgY3VzdG9tIGtleSBzZXRzCisgIGZyb20gYmVpbmcgc2VsZWN0ZWQgd2hlbiBubyBjdXN0b20gdGhlbWUgd2FzIGRlZmluZWQuCisKIC0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgogICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKICAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCiAKKy0gSXNzdWUgIzI3NjIxOiBQdXQgcXVlcnkgcmVzcG9uc2UgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyBpbiB0aGUgcXVlcnkKKyAgYm94IGl0c2VsZiBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgbWFzc2FnZWJveC4gIFJlZG8gdGVzdHMgdG8gbWF0Y2guCisgIEFkZCBNYWMgT1NYIHJlZmluZW1lbnRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNzYyMDogRXNjYXBlIGtleSBub3cgY2xvc2VzIFF1ZXJ5IGJveCBhcyBjYW5jZWxsZWQuCisKKy0gSXNzdWUgIzI3NjA5OiBJRExFOiB0YWIgYWZ0ZXIgaW5pdGlhbCB3aGl0ZXNwYWNlIHNob3VsZCB0YWIsIG5vdAorICBhdXRvY29tcGxldGUuIFRoaXMgZml4ZXMgcHJvYmxlbSB3aXRoIHdyaXRpbmcgZG9jc3RyaW5ncyBhdCBsZWFzdAorICB0d2ljZSBpbmRlbnRlZC4KKworLSBJc3N1ZSAjMjc2MDk6IEV4cGxpY2l0bHkgcmV0dXJuIE5vbmUgd2hlbiB0aGVyZSBhcmUgYWxzbyBub24tTm9uZQorICByZXR1cm5zLiBJbiBhIGZldyBjYXNlcywgcmV2ZXJzZSBhIGNvbmRpdGlvbiBhbmQgZWxpbWluYXRlIGEgcmV0dXJuLgorCiAtIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KICAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KIAorLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgogCistIElzc3VlICMyNzQ3NzogSURMRSBzZWFyY2ggZGlhbG9ncyBub3cgdXNlIHR0ayB3aWRnZXRzLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogbWFrZSBjb21tYW5kIGxpbmUgImlkbGUtdGVzdD4gcHl0aG9uIHRlc3RfaGVscC5weSIgd29yay4KKyAgX19maWxlX18gaXMgcmVsYXRpdmUgd2hlbiBweXRob24gaXMgc3RhcnRlZCBpbiB0aGUgZmlsZSdzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgorCistIElzc3VlICMyNzM4MDogSURMRTogYWRkIHF1ZXJ5LnB5IHdpdGggYmFzZSBRdWVyeSBkaWFsb2cgYW5kIHR0ayB3aWRnZXRzLgorICBNb2R1bGUgaGFkIHN1YmNsYXNzZXMgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlLCB3aGljaCBhcmUKKyAgdXNlZCB0byBnZXQgaW5mb3JtYXRpb24gZnJvbSB1c2VycyBieSBjb25maWdkaWFsb2cgYW5kIGZpbGUgPT5Mb2FkIE1vZHVsZS4KKyAgRWFjaCBzdWJjbGFzcyBoYXMgaXR3IG93biB2YWxpZGl0eSBjaGVja3MuICBVc2luZyBNb2R1bGVOYW1lIGFsbG93cyB1c2VycworICB0byBlZGl0IGJhZCBtb2R1bGUgbmFtZXMgaW5zdGVhZCBvZiBzdGFydGluZyBvdmVyLgorICBBZGQgdGVzdHMgYW5kIGRlbGV0ZSB0aGUgdHdvIGZpbGVzIGNvbWJpbmVkIGludG8gdGhlIG5ldyBvbmUuCisKKy0gSXNzdWUgIzI3MzcyOiBUZXN0X2lkbGUgbm8gbG9uZ2VyIGNoYW5nZXMgdGhlIGxvY2FsZS4KKwogLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBjaGFycyBpbiBJRExFIE5FV1MudHh0LCBmb3IgY29udHJpYnV0b3IgbmFtZXMuCiAKIC0gSXNzdWUgIzI3MjQ1OiBJRExFOiBDbGVhbmx5IGRlbGV0ZSBjdXN0b20gdGhlbWVzIGFuZCBrZXkgYmluZGluZ3MuCiAgIFByZXZpb3VzbHksIHdoZW4gSURMRSB3YXMgc3RhcnRlZCBmcm9tIGEgY29uc29sZSBvciBieSBpbXBvcnQsIGEgY2FzY2FkZQogICBvZiB3YXJuaW5ncyB3YXMgZW1pdHRlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzI0MTM3OiBSdW4gSURMRSwgdGVzdF9pZGxlLCBhbmQgaHRlc3Qgd2l0aCB0a2ludGVyIGRlZmF1bHQgcm9vdCBkaXNhYmxlZC4KKyAgRml4IGNvZGUgYW5kIHRlc3RzIHRoYXQgZmFpbCB3aXRoIHRoaXMgcmVzdHJpY3Rpb24uCisgIEZpeCBodGVzdHMgdG8gbm90IGNyZWF0ZSBhIHNlY29uZCBhbmQgcmVkdW5kYW50IHJvb3QgYW5kIG1haW5sb29wLgogCi1XaGF0J3MgTmV3IGluIElETEUgMy41LjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTI2KgorLSBJc3N1ZSAjMjczMTA6IEZpeCBJRExFLmFwcCBmYWlsdXJlIHRvIGxhdW5jaCBvbiBPUyBYIGR1ZSB0byB2ZXN0aWdpYWwgaW1wb3J0LgogCiAtIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgogICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKICAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQ3NTA6IFN3aXRjaCBhbGwgc2Nyb2xsYmFycyBpbiBJRExFIHRvIHR0ayB2ZXJzaW9ucy4KKyAgV2hlcmUgbmVlZGVkLCBtaW5pbWFsIHRlc3RzIGFyZSBhZGRlZCB0byBjb3ZlciBjaGFuZ2VzLgorCistIElzc3VlICMyNDc1OTogSURMRSByZXF1aXJlcyB0ayA4LjUgYW5kIGF2YWlsYWJpbGl0eSB0dGsgd2lkZ2V0cy4KKyAgRGVsZXRlIG5vdyB1bm5lZWRlZCB0ayB2ZXJzaW9uIHRlc3RzIGFuZCBjb2RlIGZvciBvbGRlciB2ZXJzaW9ucy4KKyAgQWRkIHRlc3QgZm9yIElETEUgc3ludGF4IGNvbG9yaXplci4KKworLSBJc3N1ZSAjMjcyMzk6IGlkbGVsaWIubWFjb3N4LmlzWHl6VGsgZnVuY3Rpb25zIGluaXRpYWxpemUgYXMgbmVlZGVkLgorCistIElzc3VlICMyNzI2MjogbW92ZSBBcXVhIHVuYmluZGluZyBjb2RlLCB3aGljaCBlbmFibGUgY29udGV4dCBtZW51cywgdG8gbWF4b3N4LgorCiAtIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKICAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KIAotLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZicgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCistIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VkJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KICAgVGhlc2UgcGVyc2lzdGVkIGFmdGVyIG90aGVyIHdhcm5pbmdzIHdlcmUgc3VwcHJlc3NlZCBpbiAjMjA1NjcuCiAgIEFwcGx5IFNlcmhpeSBTdG9yY2hha2EncyB1cGRhdGVfaWRsZXRhc2tzIHNvbHV0aW9uIHRvIGZvdXIgdGVzdCBmaWxlcy4KICAgUmVjb3JkIHRoaXMgYWRkaXRpb25hbCBhZHZpY2UgaW4gaWRsZV90ZXN0L1JFQURNRS50eHQKQEAgLTQ3LDkgKzEwMywyNiBAQAogLSBJc3N1ZSAjMjA1Njc6IFJldmlzZSBpZGxlX3Rlc3QvUkVBRE1FLnR4dCB3aXRoIGFkdmljZSBhYm91dCBhdm9pZGluZwogICB0ayB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGVzdHMuICBBcHBseSBhZHZpY2UgdG8gc2V2ZXJhbCBJRExFIHRlc3RzLgogCistIElzc3VlICMgMjQyMjU6IFVwZGF0ZSBpZGxlbGliL1JFQURNRS50eHQgd2l0aCBuZXcgZmlsZSBuYW1lcworICBhbmQgZXZlbnQgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzI3MTU2OiBSZW1vdmUgb2Jzb2xldGUgY29kZSBub3QgdXNlZCBieSBJRExFLiAgUmVwbGFjZW1lbnRzOgorICAxLiBoZWxwLnR4dCwgcmVwbGFjZWQgYnkgaGVscC5odG1sLCBpcyBvdXQtb2YtZGF0ZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorICBJdHMgZGVkaWNhdGVkIHZpZXdlciBoYXMgYmUgcmVwbGFjZWQgYnkgdGhlIGh0bWwgdmlld2VyIGluIGhlbHAucHkuCisgIDIuICdpbXBvcnQgaWRsZXZlcjsgSSA9IGlkbGV2ZXIuSURMRV9WRVJTSU9OJyBpcyB0aGUgc2FtZSBhcworICAnaW1wb3J0IHN5czsgSSA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0nCisgIDMuIEFmdGVyICdvYiA9IHN0YWNrdmlld2VyLlZhcmlhYmxlc1RyZWVJdGVtKCphcmdzKScsCisgICdvYi5rZXlzKCknID09ICdsaXN0KG9iLm9iamVjdC5rZXlzKS4KKyAgNC4gSW4gbWFjb3NjLCBydW5uaW5nQXNPU1hBUFAgPT0gaXNBcXVhVGs7IGlkQ2FyYm9uQXF1YVRrID09IGlzQ2FyYm9uVGsKKwogLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KICAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCiAKKy0gSXNzdWUgIzI0MjI1OiBSZW5hbWUgbWFueSBpZGxlbGliLyoucHkgYW5kIGlkbGVfdGVzdC90ZXN0XyoucHkgZmlsZXMuCisgIEVkaXQgZmlsZXMgdG8gcmVwbGFjZSBvbGQgbmFtZXMgd2l0aCBuZXcgbmFtZXMgd2hlbiB0aGUgb2xkIG5hbWUKKyAgcmVmZXJyZWQgdG8gdGhlIG1vZHVsZSByYXRoZXIgdGhhbiB0aGUgY2xhc3MgaXQgY29udGFpbmVkLgorICBTZWUgdGhlIGlzc3VlIGFuZCBJRExFIHNlY3Rpb24gaW4gV2hhdCdzIE5ldyBpbiAzLjYgZm9yIG1vcmUuCisKIC0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgogICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgogCkBAIC02Miw4ICsxMzUsOCBAQAogLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KICAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCiAKLS0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthciAuCistIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLiAgUGF0Y2ggbW9zdGx5IGJ5CisgIFNhaW1hZGhhdiBIZWJsaWthciAuCiAKIC0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgogCkBAIC04MiwxMSArMTU1LDYgQEAKICAgTUFSSyBpbiBSRUFETUUudHh0IGFuZCBvcGVuIHRoaXMgYW5kIE5FV1MudHh0IHdpdGggJ2FzY2lpJy4KICAgUmUtZW5jb2RlIENSRURJVFMudHh0IHRvIHV0Zi04IGFuZCBvcGVuIGl0IHdpdGggJ3V0Zi04Jy4KIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy41LjE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE1LTEyLTA2KgotCiAtIElzc3VlIDE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQogICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgogICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0IGIvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAppbmRleCBmZjQ0NTA0Li41MWU4ZWY1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0CisrKyBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKQEAgLTI5LDYxICsyOSw2MSBAQAogCiBJbXBsZW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLS0KLUF1dG9Db21wbGV0ZS5weSAgICMgQ29tcGxldGUgYXR0cmlidXRlIG5hbWVzIG9yIGZpbGVuYW1lcy4KLUF1dG9Db21wbGV0ZVdpbmRvdy5weSAgIyBEaXNwbGF5IGNvbXBsZXRpb25zLgotQXV0b0V4cGFuZC5weSAgICAgIyBFeHBhbmQgd29yZCB3aXRoIHByZXZpb3VzIHdvcmQgaW4gZmlsZS4KLUJpbmRpbmdzLnB5ICAgICAgICMgRGVmaW5lIG1vc3Qgb2YgSURMRSBtZW51LgotQ2FsbFRpcFdpbmRvdy5weSAgIyBEaXNwbGF5IGNhbGx0aXAuCi1DYWxsVGlwcy5weSAgICAgICAjIENyZWF0ZSBjYWxsdGlwIHRleHQuCi1DbGFzc0Jyb3dzZXIucHkgICAjIENyZWF0ZSBtb2R1bGUgYnJvd3NlciB3aW5kb3cuCi1Db2RlQ29udGV4dC5weSAgICAjIFNob3cgY29tcG91bmQgc3RhdGVtZW50IGhlYWRlcnMgb3RoZXJ3aXNlIG5vdCB2aXNpYmxlLgotQ29sb3JEZWxlZ2F0b3IucHkgIyBDb2xvcml6ZSB0ZXh0IChuaW0pLgotRGVidWdnZXIucHkgICAgICAgIyBEZWJ1ZyBjb2RlIHJ1biBmcm9tIGVkaXRvcjsgc2hvdyB3aW5kb3cuCi1EZWxlZ2F0b3IucHkgICAgICAjIERlZmluZSBiYXNlIGNsYXNzIGZvciBkZWxlZ2F0b3JzIChuaW0pLgotRWRpdG9yV2luZG93LnB5ICAgIyBEZWZpbmUgbW9zdCBvZiBlZGl0b3IgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLgotRmlsZUxpc3QucHkgICAgICAgIyBPcGVuIGZpbGVzIGFuZCBtYW5hZ2UgbGlzdCBvZiBvcGVuIHdpbmRvd3MgKG5pbSkuCi1Gb3JtYXRQYXJhZ3JhcGgucHkjIFJlLXdyYXAgbXVsdGlsaW5lIHN0cmluZ3MgYW5kIGNvbW1lbnRzLgotR3JlcERpYWxvZy5weSAgICAgIyBGaW5kIGFsbCBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIG11bHRpcGxlIGZpbGVzLgotSHlwZXJQYXJzZXIucHkgICAgIyBQYXJzZSBjb2RlIGFyb3VuZCBhIGdpdmVuIGluZGV4LgotSU9CaW5kaW5nLnB5ICAgICAgIyBPcGVuLCByZWFkLCBhbmQgd3JpdGUgZmlsZXMKLUlkbGVIaXN0b3J5LnB5ICAgICMgR2V0IHByZXZpb3VzIG9yIG5leHQgdXNlciBpbnB1dCBpbiBzaGVsbCAobmltKQotTXVsdGlDYWxsLnB5ICAgICAgIyBXcmFwIHRrIHdpZGdldCB0byBhbGxvdyBtdWx0aXBsZSBjYWxscyBwZXIgZXZlbnQgKG5pbSkuCi1NdWx0aVN0YXR1c0Jhci5weSAjIERlZmluZSBzdGF0dXMgYmFyIGZvciB3aW5kb3dzIChuaW0pLgotT2JqZWN0QnJvd3Nlci5weSAgIyBEZWZpbmUgY2xhc3MgdXNlZCBpbiBTdGFja1ZpZXdlciAobmltKS4KLU91dHB1dFdpbmRvdy5weSAgICMgQ3JlYXRlIHdpbmRvdyBmb3IgZ3JlcCBvdXRwdXQuCi1QYXJlbk1hdGNoLnB5ICAgICAjIE1hdGNoIGZlbmNlcG9zdHM6ICgpLCBbXSwgYW5kIHt9LgotUGF0aEJyb3dzZXIucHkgICAgIyBDcmVhdGUgcGF0aCBicm93c2VyIHdpbmRvdy4KLVBlcmNvbGF0b3IucHkgICAgICMgTWFuYWdlIGRlbGVnYXRvciBzdGFjayAobmltKS4KLVB5UGFyc2UucHkgICAgICAgICMgR2l2ZSBpbmZvcm1hdGlvbiBvbiBjb2RlIGluZGVudGF0aW9uCi1QeVNoZWxsLnB5ICAgICAgICAjIFN0YXJ0IElETEUsIG1hbmFnZSBzaGVsbCwgY29tcGxldGUgZWRpdG9yIHdpbmRvdwotUmVtb3RlRGVidWdnZXIucHkgIyBEZWJ1ZyBjb2RlIHJ1biBpbiByZW1vdGUgcHJvY2Vzcy4KLVJlbW90ZU9iamVjdEJyb3dzZXIucHkgIyBDb21tdW5pY2F0ZSBvYmplY3RzIGJldHdlZW4gcHJvY2Vzc2VzIHdpdGggcnBjIChuaW0pLgotUmVwbGFjZURpYWxvZy5weSAgIyBTZWFyY2ggYW5kIHJlcGxhY2UgcGF0dGVybiBpbiB0ZXh0LgotUnN0cmlwRXh0ZW5zaW9uLnB5IyBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlCi1TY3JpcHRCaW5kaW5nLnB5ICAjIENoZWNrIGFuZCBydW4gdXNlciBjb2RlLgotU2Nyb2xsZWRMaXN0LnB5ICAgIyBEZWZpbmUgU2Nyb2xsZWRMaXN0IHdpZGdldCBmb3IgSURMRSAobmltKS4KLVNlYXJjaERpYWxvZy5weSAgICMgU2VhcmNoIGZvciBwYXR0ZXJuIGluIHRleHQuCi1TZWFyY2hEaWFsb2dCYXNlLnB5ICAjIERlZmluZSBiYXNlIGZvciBzZWFyY2gsIHJlcGxhY2UsIGFuZCBncmVwIGRpYWxvZ3MuCi1TZWFyY2hFbmdpbmUucHkgICAjIERlZmluZSBlbmdpbmUgZm9yIGFsbCAzIHNlYXJjaCBkaWFsb2dzLgotU3RhY2tWaWV3ZXIucHkgICAgIyBWaWV3IHN0YWNrIGFmdGVyIGV4Y2VwdGlvbi4KLVRyZWVXaWRnZXQucHkgICAgICMgRGVmaW5lIHRyZWUgd2lkZ2VyLCB1c2VkIGluIGJyb3dzZXJzIChuaW0pLgotVW5kb0RlbGVnYXRvci5weSAgIyBNYW5hZ2UgdW5kbyBzdGFjay4KLVdpZGdldFJlZGlyZWN0b3IucHkgIyBJbnRlcmNlcHQgd2lkZ2V0IHN1YmNvbW1hbmRzIChmb3IgcGVyY29sYXRvcikgKG5pbSkuCi1XaW5kb3dMaXN0LnB5ICAgICAjIE1hbmFnZSB3aW5kb3cgbGlzdCBhbmQgZGVmaW5lIGxpc3RlZCB0b3AgbGV2ZWwuCi1ab29tSGVpZ2h0LnB5ICAgICAjIFpvb20gd2luZG93IHRvIGZ1bGwgaGVpZ2h0IG9mIHNjcmVlbi4KLWFib3V0RGlhbG9nLnB5ICAgICMgRGlzcGxheSBBYm91dCBJRExFIGRpYWxvZy4KLWNvbmZpZ0RpYWxvZy5weSAgICMgRGlzcGxheSB1c2VyIGNvbmZpZ3VyYXRpb24gZGlhbG9ncy4KLWNvbmZpZ0hhbmRsZXIucHkgICMgTG9hZCwgZmV0Y2gsIGFuZCBzYXZlIGNvbmZpZ3VyYXRpb24gKG5pbSkuCi1jb25maWdIZWxwU291cmNlRWRpdC5weSAgIyBTcGVjaWZ5IGhlbHAgc291cmNlLgotY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgICMgU3BlZmlmeSB1c2VyIGNvbmZpZyBzZWN0aW9uIG5hbWUKLWR5bk9wdGlvbk1lbnVXaWRnZXQucHkgICMgZGVmaW5lIG11dGFibGUgT3B0aW9uTWVudSB3aWRnZXQgKG5pbSkuCithdXRvY29tcGxldGUucHkgICAjIENvbXBsZXRlIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlbmFtZXMuCithdXRvY29tcGxldGVfdy5weSAjIERpc3BsYXkgY29tcGxldGlvbnMuCithdXRvZXhwYW5kLnB5ICAgICAjIEV4cGFuZCB3b3JkIHdpdGggcHJldmlvdXMgd29yZCBpbiBmaWxlLgorYnJvd3Nlci5weSAgICAgICAgIyBDcmVhdGUgbW9kdWxlIGJyb3dzZXIgd2luZG93LgorY2FsbHRpcF93LnB5ICAgICAgIyBEaXNwbGF5IGNhbGx0aXAuCitjYWxsdGlwcy5weSAgICAgICAjIENyZWF0ZSBjYWxsdGlwIHRleHQuCitjb2RlY29udGV4dC5weSAgICAjIFNob3cgY29tcG91bmQgc3RhdGVtZW50IGhlYWRlcnMgb3RoZXJ3aXNlIG5vdCB2aXNpYmxlLgorY29sb3JpemVyLnB5ICAgICAgIyBDb2xvcml6ZSB0ZXh0IChuaW0pCitjb25maWcucHkgICAgICAgICAjIExvYWQsIGZldGNoLCBhbmQgc2F2ZSBjb25maWd1cmF0aW9uIChuaW0pLgorY29uZmlnZGlhbG9nLnB5ICAgIyBEaXNwbGF5IHVzZXIgY29uZmlndXJhdGlvbiBkaWFsb2dzLgorY29uZmlnX2hlbHAucHkgICAgIyBTcGVjaWZ5IGhlbHAgc291cmNlIGluIGNvbmZpZ2RpYWxvZy4KK2NvbmZpZ19rZXkucHkgICAgICMgQ2hhbmdlIGtleWJpbmRpbmdzLgorZHlub3B0aW9uLnB5ICAgICAgIyBEZWZpbmUgbXV0YWJsZSBPcHRpb25NZW51IHdpZGdldCAobmltKS4KK2RlYnVnb2JqLnB5ICAgICAgICMgRGVmaW5lIGNsYXNzIHVzZWQgaW4gc3RhY2t2aWV3ZXIuCitkZWJ1Z29ial9yLnB5ICAgICAjIENvbW11bmljYXRlIG9iamVjdHMgYmV0d2VlbiBwcm9jZXNzZXMgd2l0aCBycGMgKG5pbSkuCitkZWJ1Z2dlci5weSAgICAgICAjIERlYnVnIGNvZGUgcnVuIGZyb20gc2hlbGwgb3IgZWRpdG9yOyBzaG93IHdpbmRvdy4KK2RlYnVnZ2VyX3IucHkgICAgICMgRGVidWcgY29kZSBydW4gaW4gcmVtb3RlIHByb2Nlc3MuCitkZWxlZ2F0b3IucHkgICAgICAjIERlZmluZSBiYXNlIGNsYXNzIGZvciBkZWxlZ2F0b3JzIChuaW0pLgorZWRpdG9yLnB5ICAgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBlZGl0b3IgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLgorZmlsZWxpc3QucHkgICAgICAgIyBPcGVuIGZpbGVzIGFuZCBtYW5hZ2UgbGlzdCBvZiBvcGVuIHdpbmRvd3MgKG5pbSkuCitncmVwLnB5ICAgICAgICAgICAjIEZpbmQgYWxsIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gbXVsdGlwbGUgZmlsZXMuCiBoZWxwLnB5ICAgICAgICAgICAjIERpc3BsYXkgSURMRSdzIGh0bWwgZG9jLgota2V5YmluZGluZ0RpYWxvZy5weSAgIyBDaGFuZ2Uga2V5YmluZGluZ3MuCi1tYWNvc3hTdXBwb3J0LnB5ICAjIEhlbHAgSURMRSBydW4gb24gTWFjcyAobmltKS4KK2hlbHBfYWJvdXQucHkgICAgICMgRGlzcGxheSBBYm91dCBJRExFIGRpYWxvZy4KK2hpc3RvcnkucHkgICAgICAgICMgR2V0IHByZXZpb3VzIG9yIG5leHQgdXNlciBpbnB1dCBpbiBzaGVsbCAobmltKQoraHlwZXJwYXJzZXIucHkgICAgIyBQYXJzZSBjb2RlIGFyb3VuZCBhIGdpdmVuIGluZGV4LgoraW9tZW51LnB5ICAgICAgICAgIyBPcGVuLCByZWFkLCBhbmQgd3JpdGUgZmlsZXMKK21hY29zeC5weSAgICAgICAgICMgSGVscCBJRExFIHJ1biBvbiBNYWNzIChuaW0pLgorbWFpbm1lbnUucHkgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBJRExFIG1lbnUuCittdWx0aWNhbGwucHkgICAgICAjIFdyYXAgdGsgd2lkZ2V0IHRvIGFsbG93IG11bHRpcGxlIGNhbGxzIHBlciBldmVudCAobmltKS4KK291dHdpbi5weSAgICAgICAgICMgQ3JlYXRlIHdpbmRvdyBmb3IgZ3JlcCBvdXRwdXQuCitwYXJhZ3JhcGgucHkgICAgICAjIFJlLXdyYXAgbXVsdGlsaW5lIHN0cmluZ3MgYW5kIGNvbW1lbnRzLgorcGFyZW5tYXRjaC5weSAgICAgIyBNYXRjaCBmZW5jZXBvc3RzOiAoKSwgW10sIGFuZCB7fS4KK3BhdGhicm93c2VyLnB5ICAgICMgQ3JlYXRlIHBhdGggYnJvd3NlciB3aW5kb3cuCitwZXJjb2xhdG9yLnB5ICAgICAjIE1hbmFnZSBkZWxlZ2F0b3Igc3RhY2sgKG5pbSkuCitweXBhcnNlLnB5ICAgICAgICAjIEdpdmUgaW5mb3JtYXRpb24gb24gY29kZSBpbmRlbnRhdGlvbgorcHlzaGVsbC5weSAgICAgICAgIyBTdGFydCBJRExFLCBtYW5hZ2Ugc2hlbGwsIGNvbXBsZXRlIGVkaXRvciB3aW5kb3cKK3F1ZXJ5LnB5ICAgICAgICAgICMgUXVlcnkgdXNlciBmb3IgaW5mb3JtYXRpb24KK3JlZGlyZWN0b3IucHkgICAgICMgSW50ZXJjZXB0IHdpZGdldCBzdWJjb21tYW5kcyAoZm9yIHBlcmNvbGF0b3IpIChuaW0pLgorcmVwbGFjZS5weSAgICAgICAgIyBTZWFyY2ggYW5kIHJlcGxhY2UgcGF0dGVybiBpbiB0ZXh0LgogcnBjLnB5ICAgICAgICAgICAgIyBDb21tdWljYXRlIGJldHdlZW4gaWRsZSBhbmQgdXNlciBwcm9jZXNzZXMgKG5pbSkuCityc3RyaXAucHkgICAgICAgICAjIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UuCiBydW4ucHkgICAgICAgICAgICAjIE1hbmFnZSB1c2VyIGNvZGUgZXhlY3V0aW9uIHN1YnByb2Nlc3MuCitydW5zY3JpcHQucHkgICAgICAjIENoZWNrIGFuZCBydW4gdXNlciBjb2RlLgorc2Nyb2xsZWRsaXN0LnB5ICAgIyBEZWZpbmUgc2Nyb2xsZWRsaXN0IHdpZGdldCBmb3IgSURMRSAobmltKS4KK3NlYXJjaC5weSAgICAgICAgICMgU2VhcmNoIGZvciBwYXR0ZXJuIGluIHRleHQuCitzZWFyY2hiYXNlLnB5ICAgICAjIERlZmluZSBiYXNlIGZvciBzZWFyY2gsIHJlcGxhY2UsIGFuZCBncmVwIGRpYWxvZ3MuCitzZWFyY2hlbmdpbmUucHkgICAjIERlZmluZSBlbmdpbmUgZm9yIGFsbCAzIHNlYXJjaCBkaWFsb2dzLgorc3RhY2t2aWV3ZXIucHkgICAgIyBWaWV3IHN0YWNrIGFmdGVyIGV4Y2VwdGlvbi4KK3N0YXR1c2Jhci5weSAgICAgICMgRGVmaW5lIHN0YXR1cyBiYXIgZm9yIHdpbmRvd3MgKG5pbSkuCiB0YWJiZWRwYWdlcy5weSAgICAjIERlZmluZSB0YWJiZWQgcGFnZXMgd2lkZ2V0IChuaW0pLgotdGV4dFZpZXcucHkgICAgICAgIyBEZWZpbmUgcmVhZC1vbmx5IHRleHQgd2lkZ2V0IChuaW0pLgordGV4dHZpZXcucHkgICAgICAgIyBEZWZpbmUgcmVhZC1vbmx5IHRleHQgd2lkZ2V0IChuaW0pLgordHJlZS5weSAgICAgICAgICAgIyBEZWZpbmUgdHJlZSB3aWRnZXIsIHVzZWQgaW4gYnJvd3NlcnMgKG5pbSkuCit1bmRvLnB5ICAgICAgICAgICAjIE1hbmFnZSB1bmRvIHN0YWNrLgord2luZG93cy5weSAgICAgICAgIyBNYW5hZ2Ugd2luZG93IGxpc3QgYW5kIGRlZmluZSBsaXN0ZWQgdG9wIGxldmVsLgorem9vbWhlaWdodC5weSAgICAgIyBab29tIHdpbmRvdyB0byBmdWxsIGhlaWdodCBvZiBzY3JlZW4uCiAKIENvbmZpZ3VyYXRpb24KIC0tLS0tLS0tLS0tLS0KQEAgLTEwNCwxMjcgKzEwNCwxNDggQEAKIAogU3ViZGlyZWN0b3JpZXMKIC0tLS0tLS0tLS0tLS0tCi1JY29ucyAgIyBzbWFsbCBpbWFnZSBmaWxlcwotaWRsZV90ZXN0ICAjIGZpbGVzIGZvciBodW1hbiB0ZXN0IGFuZCBhdXRvbWF0ZWQgdW5pdCB0ZXN0cworSWNvbnMgICAgICAgICMgc21hbGwgaW1hZ2UgZmlsZXMKK2lkbGVfdGVzdCAgICAjIGZpbGVzIGZvciBodW1hbiB0ZXN0IGFuZCBhdXRvbWF0ZWQgdW5pdCB0ZXN0cwogCiBVbnVzZWQgYW5kIERlcHJlY2F0ZWQgZmlsZXMgYW5kIG9iamVjdHMgKG5pbSkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotRWRpdG9yV2luZG93LnB5OiBIZWxwZGlhbG9nIGFuZCBoZWxwRGlhbG9nCi1Ub29sVGlwLnB5OiB1bnVzZWQuCi1oZWxwLnR4dAotaWRsZXZlci5weQordG9vbHRpcC5weSAjIHVudXNlZAorCiAKIAogSURMRSBNRU5VUwotVG9wIGxldmVsIGl0ZW1zIGFuZCBtb3N0IHN1Ym1lbnUgaXRlbXMgYXJlIGRlZmluZWQgaW4gQmluZGluZ3MuCitUb3AgbGV2ZWwgaXRlbXMgYW5kIG1vc3Qgc3VibWVudSBpdGVtcyBhcmUgZGVmaW5lZCBpbiBtYWlubWVudS4KIEV4dGVuc3Rpb25zIGFkZCBzdWJtZW51IGl0ZW1zIHdoZW4gYWN0aXZlLiAgVGhlIG5hbWVzIGdpdmVuIGFyZQogZm91bmQsIHF1b3RlZCwgaW4gb25lIG9mIHRoZXNlIG1vZHVsZXMsIHBhaXJlZCB3aXRoIGEgJzw8cHNldWRvZXZlbnQ+PicuCiBFYWNoIHBzZXVkb2V2ZW50IGlzIGJvdW5kIHRvIGFuIGV2ZW50IGhhbmRsZXIuICBTb21lIGV2ZW50IGhhbmRsZXJzCiBjYWxsIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBhY3R1YWwgd29yay4gIFRoZSBhbm5vdGF0aW9ucyBiZWxvdwogYXJlIGludGVuZGVkIHRvIGF0IGxlYXN0IGdpdmUgdGhlIG1vZHVsZSB3aGVyZSB0aGUgYWN0dWFsIHdvcmsgaXMgZG9uZS4KKydlRVcnID0gZWRpdG9yLkVkaXRvcldpbmRvdwogCi1GaWxlICAjIElPQmluZGlnIGV4Y2VwdCBhcyBub3RlZAotICBOZXcgRmlsZQotICBPcGVuLi4uICAjIElPQmluZGluZy5vcGVuCi0gIE9wZW4gTW9kdWxlCitGaWxlCisgIE5ldyBGaWxlICAgICAgICAgIyBlRVcubmV3X2NhbGxiYWNrCisgIE9wZW4uLi4gICAgICAgICAgIyBpb21lbnUub3BlbgorICBPcGVuIE1vZHVsZSAgICAgICMgZUV3Lm9wZW5fbW9kdWxlCiAgIFJlY2VudCBGaWxlcwotICBDbGFzcyBCcm93c2VyICAjIENsYXNzIEJyb3dzZXIKLSAgUGF0aCBCcm93c2VyICAjIFBhdGggQnJvd3NlcgorICBDbGFzcyBCcm93c2VyICAgICMgZUVXLm9wZW5fY2xhc3NfYnJvd3NlciwgYnJvd3Nlci5DbGFzc0Jyb3dzZXIKKyAgUGF0aCBCcm93c2VyICAgICAjIGVFVy5vcGVuX3BhdGhfYnJvd3NlciwgcGF0aGJyb3dzZXIKICAgLS0tCi0gIFNhdmUgICMgSURCaW5kaW5nLnNhdmUKLSAgU2F2ZSBBcy4uLiAgIyBJT0JpbmRpbmcuc2F2ZV9hcwotICBTYXZlIENvcHkgQXMuLi4gICMgSU9CaW5kbGluZy5zYXZlX2FfY29weQorICBTYXZlICAgICAgICAgICAgICMgaW9tZW51LnNhdmUKKyAgU2F2ZSBBcy4uLiAgICAgICAjIGlvbWVudS5zYXZlX2FzCisgIFNhdmUgQ29weSBBcy4uLiAgIyBpb21lbnUuc2F2ZV9hX2NvcHkKICAgLS0tCi0gIFByaW50IFdpbmRvdyAgIyBJT0JpbmRpbmcucHJpbnRfd2luZG93CisgIFByaW50IFdpbmRvdyAgICAgIyBpb21lbnUucHJpbnRfd2luZG93CiAgIC0tLQotICBDbG9zZQotICBFeGl0CisgIENsb3NlICAgICAgICAgICAgIyBlRVcuY2xvc2VfZXZlbnQKKyAgRXhpdCAgICAgICAgICAgICAjIGZsaXN0LmNsb3NlX2FsbF9jYWxsYmFjayAoYm91bmQgaW4gZUVXKQogCiBFZGl0Ci0gIFVuZG8gICMgdW5kb0RlbGVnYXRvcgotICBSZWRvICAjIHVuZG9EZWxlZ2F0b3IKLSAgLS0tCi0gIEN1dAotICBDb3B5Ci0gIFBhc3RlCi0gIFNlbGVjdCBBbGwKLSAgLS0tICAjIE5leHQgNSBpdGVtcyB1c2UgU2VhcmNoRW5naW5lOyBkaWFsb2dzIHVzZSBTZWFyY2hEaWFsb2dCYXNlCi0gIEZpbmQgICMgU2VhcmNoIERpYWxvZwotICBGaW5kIEFnYWluCi0gIEZpbmQgU2VsZWN0aW9uCi0gIEZpbmQgaW4gRmlsZXMuLi4gICMgR3JlcERpYWxvZwotICBSZXBsYWNlLi4uICAjIFJlcGxhY2VEaWFsb2cKLSAgR28gdG8gTGluZQotICBTaG93IENvbXBsZXRpb25zICAjIEF1dG9Db21wbGV0ZSBleHRlbnNpb24gYW5kIEF1dG9Db21wbGV0ZVdpZG93ICgmSFApCi0gIEV4cGFuZCBXb3JkICAjIEF1dG9FeHBhbmQgZXh0ZW5zaW9uCi0gIFNob3cgY2FsbCB0aXAgICMgQ2FsbHRpcHMgZXh0ZW5zaW9uIGFuZCBDYWxsdGlwV2luZG93ICgmIEh5cGVycGFyc2VyKQotICBTaG93IHN1cnJvdW5kaW5nIHBhcmVucyAgIyBQYXJlbk1hdGNoICgmIEh5cGVycGFyc2VyKQorICBVbmRvICAgICAgICAgICAgICMgdW5kb2RlbGVnYXRvcgorICBSZWRvICAgICAgICAgICAgICMgdW5kb2RlbGVnYXRvcgorICAtLS0gICAgICAgICAgICAgICMgZUVXLnJpZ2h0X21lbnVfZXZlbnQKKyAgQ3V0ICAgICAgICAgICAgICAjIGVFVy5jdXQKKyAgQ29weSAgICAgICAgICAgICAjIGVFVy5jb3B5CisgIFBhc3RlICAgICAgICAgICAgIyBlRVcucGFzdAorICBTZWxlY3QgQWxsICAgICAgICMgZUVXLnNlbGVjdF9hbGwgKCsgc2VlIGVFVy5yZW1vdmVfc2VsZWN0aW9uKQorICAtLS0gICAgICAgICAgICAgICMgTmV4dCA1IGl0ZW1zIHVzZSBzZWFyY2hlbmdpbmU7IGRpYWxvZ3MgdXNlIHNlYXJjaGJhc2UKKyAgRmluZCAgICAgICAgICAgICAjIGVFVy5maW5kX2V2ZW50LCBzZWFyY2guU2VhcmNoRGlhbG9nLmZpbmQKKyAgRmluZCBBZ2FpbiAgICAgICAjIGVFVy5maW5kX2FnYWluX2V2ZW50LCBzU0QuZmluZF9hZ2FpbgorICBGaW5kIFNlbGVjdGlvbiAgICMgZUVXLmZpbmRfc2VsZWN0aW9uX2V2ZW50LCBzU0QuZmluZF9zZWxlY3Rpb24KKyAgRmluZCBpbiBGaWxlcy4uLiAjIGVFVy5maW5kX2luX2ZpbGVzX2V2ZW50LCBncmVwCisgIFJlcGxhY2UuLi4gICAgICAgIyBlRVcucmVwbGFjZV9ldmVudCwgcmVwbGFjZS5SZXBsYWNlRGlhbG9nLnJlcGxhY2UKKyAgR28gdG8gTGluZSAgICAgICAjIGVFVy5nb3RvX2xpbmVfZXZlbnQKKyAgU2hvdyBDb21wbGV0aW9ucyAjIGF1dG9jb21wbGV0ZSBleHRlbnNpb24gYW5kIGF1dG9jb21wbGV0ZVdpZG93ICgmSFApCisgIEV4cGFuZCBXb3JkICAgICAgIyBhdXRvZXhwYW5kIGV4dGVuc2lvbgorICBTaG93IGNhbGwgdGlwICAgICMgQ2FsbHRpcHMgZXh0ZW5zaW9uIGFuZCBDYWxsdGlwV2luZG93ICgmIEh5cGVycGFyc2VyKQorICBTaG93IHN1cnJvdW5kaW5nIHBhcmVucyAgIyBwYXJlbm1hdGNoICgmIEh5cGVycGFyc2VyKQogCi1TaGVsbCAgIyBQeVNoZWxsCi0gIFZpZXcgTGFzdCBSZXN0YXJ0ICAgICMgUHlTaGVsbC5QeVNoZWxsLnZpZXdfcmVzdGFydF9tYXJrCi0gIFJlc3RhcnQgU2hlbGwgICAgICAgICMgUHlTaGVsbC5QeVNoZWxsLnJlc3RhcnRfc2hlbGwKK1NoZWxsICAjIHB5c2hlbGwKKyAgVmlldyBMYXN0IFJlc3RhcnQgICAgIyBweXNoZWxsLlB5U2hlbGwudmlld19yZXN0YXJ0X21hcmsKKyAgUmVzdGFydCBTaGVsbCAgICAgICAgIyBweXNoZWxsLlB5U2hlbGwucmVzdGFydF9zaGVsbAogICBJbnRlcnJ1cHQgRXhlY3V0aW9uICAjIHB5c2hlbGwuUHlTaGVsbC5jYW5jZWxfY2FsbGJhY2sKIAogRGVidWcgKFNoZWxsIG9ubHkpCiAgIEdvIHRvIEZpbGUvTGluZQotICBEZWJ1Z2dlciAgICAgICAgICAgICAgICMgRGVidWdnZXIsIFJlbW90ZURlYnVnZ2VyLCBQeVNoZWxsLnRvZ2dsZV9kZWJ1Z2VyCi0gIFN0YWNrIFZpZXdlciAgICAgICAgICAgIyBTdGFja1ZpZXdlciwgUHlTaGVsbC5vcGVuX3N0YWNrX3ZpZXdlcgotICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICMgU3RhY2tWaWV3ZXIKKyAgZGVidWdnZXIgICAgICAgICAjIGRlYnVnZ2VyLCBkZWJ1Z2dlcl9yLCBQeVNoZWxsLnRvZ2dsZV9kZWJ1Z2VyCisgIFN0YWNrIFZpZXdlciAgICAgIyBzdGFja3ZpZXdlciwgUHlTaGVsbC5vcGVuX3N0YWNrX3ZpZXdlcgorICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICAjIHN0YWNrdmlld2VyCiAKIEZvcm1hdCAoRWRpdG9yIG9ubHkpCi0gIEluZGVudCBSZWdpb24KLSAgRGVkZW50IFJlZ2lvbgotICBDb21tZW50IE91dCBSZWdpb24KLSAgVW5jb21tZW50IFJlZ2lvbgotICBUYWJpZnkgUmVnaW9uCi0gIFVudGFiaWZ5IFJlZ2lvbgotICBUb2dnbGUgVGFicwotICBOZXcgSW5kZW50IFdpZHRoCi0gIEZvcm1hdCBQYXJhZ3JhcGggICMgRm9ybWF0UGFyYWdyYXBoIGV4dGVuc2lvbgorICBJbmRlbnQgUmVnaW9uICAgICMgZUVXLmluZGVudF9yZWdpb25fZXZlbnQKKyAgRGVkZW50IFJlZ2lvbiAgICAjIGVFVy5kZWRlbnRfcmVnaW9uX2V2ZW50CisgIENvbW1lbnQgT3V0IFJlZy4gIyBlRVcuY29tbWVudF9yZWdpb25fZXZlbnQKKyAgVW5jb21tZW50IFJlZ2lvbiAjIGVFVy51bmNvbW1lbnRfcmVnaW9uX2V2ZW50CisgIFRhYmlmeSBSZWdpb24gICAgIyBlRVcudGFiaWZ5X3JlZ2lvbl9ldmVudAorICBVbnRhYmlmeSBSZWdpb24gICMgZUVXLnVudGFiaWZ5X3JlZ2lvbl9ldmVudAorICBUb2dnbGUgVGFicyAgICAgICMgZUVXLnRvZ2dsZV90YWJzX2V2ZW50CisgIE5ldyBJbmRlbnQgV2lkdGggIyBlRVcuY2hhbmdlX2luZGVudHdpZHRoX2V2ZW50CisgIEZvcm1hdCBQYXJhZ3JhcGggIyBwYXJhZ3JhcGggZXh0ZW5zaW9uCiAgIC0tLQotICBTdHJpcCB0YWlsaW5nIHdoaXRlc3BhY2UgICMgUnN0cmlwRXh0ZW5zaW9uIGV4dGVuc2lvbgorICBTdHJpcCB0YWlsaW5nIHdoaXRlc3BhY2UgICMgcnN0cmlwIGV4dGVuc2lvbgogCiBSdW4gKEVkaXRvciBvbmx5KQotICBQeXRob24gU2hlbGwgICMgUHlTaGVsbAorICBQeXRob24gU2hlbGwgICAgICMgcHlzaGVsbAogICAtLS0KLSAgQ2hlY2sgTW9kdWxlICAjIFNjcmlwdEJpbmRpbmcKLSAgUnVuIE1vZHVsZSAgIyBTY3JpcHRCaW5kaW5nCisgIENoZWNrIE1vZHVsZSAgICAgIyBydW5zY3JpcHQKKyAgUnVuIE1vZHVsZSAgICAgICAjIHJ1bnNjcmlwdAogCiBPcHRpb25zCi0gIENvbmZpZ3VyZSBJRExFICAjIGNvbmZpZ0RpYWxvZworICBDb25maWd1cmUgSURMRSAgICMgZUVXLmNvbmZpZ19kaWFsb2csIGNvbmZpZ2RpYWxvZwogICAgICh0YWJzIGluIHRoZSBkaWFsb2cpCi0gICAgRm9udCB0YWIgICMgb25maWctbWFpbi5kZWYKLSAgICBIaWdobGlnaHQgdGFiICAjIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLCBjb25maWctaGlnaGxpZ2h0LmRlZgotICAgIEtleXMgdGFiICAjIGtleWJpbmRpbmdEaWFsb2csIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLCBvbmZpZy1rZXVzLmRlZgotICAgIEdlbmVyYWwgdGFiICAjIGNvbmZpZ0hlbHBTb3VyY2VFZGl0LCBjb25maWctbWFpbi5kZWYKLSAgQ29uZmlndXJlIEV4dGVuc2lvbnMgICMgY29uZmlnRGlhbG9nCi0gICAgWHl6IHRhYiAgIyB4eXoucHksIGNvbmZpZy1leHRlbnNpb25zLmRlZgorICAgIEZvbnQgdGFiICAgICAgICMgY29uZmlnLW1haW4uZGVmCisgICAgSGlnaGxpZ2h0IHRhYiAgIyBxdWVyeSwgY29uZmlnLWhpZ2hsaWdodC5kZWYKKyAgICBLZXlzIHRhYiAgICAgICAjIHF1ZXJ5LCBjb25maWdfa2V5LCBjb25maWdfa2V5cy5kZWYKKyAgICBHZW5lcmFsIHRhYiAgICAjIGNvbmZpZ19oZWxwLCBjb25maWctbWFpbi5kZWYKKyAgICBFeHRlbnNpb25zIHRhYiAjIGNvbmZpZy1leHRlbnNpb25zLmRlZiwgY29ycmVzcG9uZGluZyAucHkKICAgLS0tCi0gIENvZGUgQ29udGV4dCAoZWRpdG9yIG9ubHkpICAjIENvZGVDb250ZXh0IGV4dGVuc2lvbgorICBDb2RlIENvbnRleHQgKGVkKSMgY29kZWNvbnRleHQgZXh0ZW5zaW9uCiAKIFdpbmRvdwotICBab29taGVpZ2h0ICAjIFpvb21IZWlnaHQgZXh0ZW5zaW9uCisgIFpvb21oZWlnaHQgICAgICAgIyB6b29taGVpZ2h0IGV4dGVuc2lvbgogICAtLS0KLSAgPG9wZW4gd2luZG93cz4gICMgV2luZG93TGlzdAorICA8b3BlbiB3aW5kb3dzPiAgICMgd2luZG93cwogCiBIZWxwCi0gIEFib3V0IElETEUgICMgYWJvdXREaWFsb2cKKyAgQWJvdXQgSURMRSAgICAgICAjIGVFVy5hYm91dF9kaWFsb2csIGhlbHBfYWJvdXQuQWJvdXREaWFsb2cgCiAgIC0tLQotICBJRExFIEhlbHAgICMgaGVscAotICBQeXRob24gRG9jCi0gIFR1cnRsZSBEZW1vCisgIElETEUgSGVscCAgICAgICAgIyBlRVcuaGVscF9kaWFsb2csIGhlbHBzaG93X2lkbGVoZWxwCisgIFB5dGhvbiBEb2MgICAgICAgIyBlRVcucHl0aG9uX2RvY3MKKyAgVHVydGxlIERlbW8gICAgICAjIGVFVy5vcGVuX3R1cnRsZV9kZW1vCiAgIC0tLQogICA8b3RoZXIgaGVscCBzb3VyY2VzPgogCiA8Q29udGV4dCBNZW51PiAocmlnaHQgY2xpY2spCi1EZWZpbmVkIGluIEVkaXRvcldpbmRvdywgUHlTaGVsbCwgT3V0cHV0Ci0gICBDdXQKLSAgIENvcHkKLSAgIFBhc3RlCi0gICAtLS0KLSAgIEdvIHRvIGZpbGUvbGluZSAoc2hlbGwgYW5kIG91dHB1dCBvbmx5KQotICAgU2V0IEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQotICAgQ2xlYXIgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCi0gRGVmaW5lZCBpbiBEZWJ1Z2dlcgotICAgR28gdG8gc291cmNlIGxpbmUKLSAgIFNob3cgc3RhY2sgZnJhbWUKKyAgRGVmaW5lZCBpbiBlZGl0b3IsIFB5U2hlbHB5c2hlbGx1dAorICAgIEN1dAorICAgIENvcHkKKyAgICBQYXN0ZQorICAgIC0tLQorICAgIEdvIHRvIGZpbGUvbGluZSAoc2hlbGwgYW5kIG91dHB1dCBvbmx5KQorICAgIFNldCBCcmVha3BvaW50IChlZGl0b3Igb25seSkKKyAgICBDbGVhciBCcmVha3BvaW50IChlZGl0b3Igb25seSkKKyAgRGVmaW5lZCBpbiBkZWJ1Z2dlcgorICAgIEdvIHRvIHNvdXJjZSBsaW5lCisgICAgU2hvdyBzdGFjayBmcmFtZQorCis8Tm8gbWVudT4KK0NlbnRlciBJbnNlcnQgICAgICAjIGVFVy5jZW50ZXJfaW5zZXJ0X2V2ZW50CisKKyAgCitDT0RFIFNUWUxFIC0tIEdlbmVyYWxseSBQRVAgOC4KKworaW1wb3J0CistLS0tLS0KK1B1dCBpbXBvcnQgYXQgdGhlIHRvcCwgdW5sZXNzIHRoZXJlIGlzIGEgZ29vZCByZWFzb24gb3RoZXJ3aXNlLgorUEVQIDggc2F5cyB0byBncm91cCBzdGRsaWIsIDNyZC1wYXJ0eSBkZXBlbmRlbmNpZXMsIGFuZCBwYWNrYWdlIGltcG9ydHMuCitGb3IgaWRsZWxpYiwgdGhlIGdyb3VwcyBhcmUgZ2VuZXJhbCBzdGRsaWIsIHRraW50ZXIsIGFuZCBpZGxlbGliLgorU29ydCBtb2R1bGVzIHdpdGhpbiBlYWNoIGdyb3VwLCBleGNlcHQgdGhhdCB0a2ludGVyLnR0ayBmb2xsb3dzIHRraW50ZXIuCitTb3J0ICdmcm9tIGlkbGVsaWIgaW1wb3J0IG1vZDEnIGFuZCAnZnJvbSBpZGxlbGliLm1vZDIgaW1wb3J0IG9iamVjdCcKK3RvZ2V0aGVyIGJ5IG1vZHVsZSwgaWdub3Jpbmcgd2l0aGluIG1vZHVsZSBvYmplY3RzLgorUHV0ICdpbXBvcnQgX19tYWluX18nIGFmdGVyIG90aGVyIGlkbGVsaWIgaW1wb3J0cy4KKworSW1wb3J0cyBvbmx5IG5lZWRlZCBmb3IgdGVzdGluZyBhcmUgcHV0IG5vdCBhdCB0aGUgdG9wIGJ1dCBpbiBhbgoraHRlc3QgZnVuY3Rpb24gZGVmIG9yICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nIiBjbGF1c2UuCisKK1dpdGhpbiBtb2R1bGUgaW1wb3J0cyBsaWtlICJmcm9tIGlkbGVsaWIubW9kIGltcG9ydCBjbGFzcyIgbWF5IGNhdXNlCitjaXJjdWxhciBpbXBvcnRzIHRvIGRlYWRsb2NrLiAgRXZlbiB3aXRob3V0IHRoaXMsIGNpcmN1bGFyIGltcG9ydHMgbWF5CityZXF1aXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgaW1wb3J0cyB0byBiZSBkZWxheWVkIHVudGlsIGEgZnVuY3Rpb24gY2FsbC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19faW5pdF9fLnB5IGIvTGliL2lkbGVsaWIvX19pbml0X18ucHkKaW5kZXggNzExZjYxYi4uNzkxZGRlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvX19pbml0X18ucHkKQEAgLTEsOCArMSwxMCBAQAogIiIiVGhlIGlkbGVsaWIgcGFja2FnZSBpbXBsZW1lbnRzIHRoZSBJZGxlIGFwcGxpY2F0aW9uLgogCiBJZGxlIGluY2x1ZGVzIGFuIGludGVyYWN0aXZlIHNoZWxsIGFuZCBlZGl0b3IuCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYsIElETEUgcmVxdWlyZXMgdGNsL3RrIDguNSBvciBsYXRlci4KIFVzZSB0aGUgZmlsZXMgbmFtZWQgaWRsZS4qIHRvIHN0YXJ0IElkbGUuCiAKIFRoZSBvdGhlciBmaWxlcyBhcmUgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbnMuICBUaGVpciBkZXRhaWxzIGFyZSBzdWJqZWN0IHRvCiBjaGFuZ2UuICBTZWUgUEVQIDQzNCBmb3IgbW9yZS4gIEltcG9ydCB0aGVtIGF0IHlvdXIgb3duIHJpc2suCiAiIiIKK3Rlc3RpbmcgPSBGYWxzZSAgIyBTZXQgVHJ1ZSBieSB0ZXN0LnRlc3RfaWRsZS4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5IGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKaW5kZXggMmVkZjVmNy4uNjM0OWVjNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvX19tYWluX18ucHkKKysrIGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKQEAgLTMsNiArMyw2IEBACiAKIFJ1biBJRExFIGFzIHB5dGhvbiAtbSBpZGxlbGliCiAiIiIKLWltcG9ydCBpZGxlbGliLlB5U2hlbGwKLWlkbGVsaWIuUHlTaGVsbC5tYWluKCkKK2ltcG9ydCBpZGxlbGliLnB5c2hlbGwKK2lkbGVsaWIucHlzaGVsbC5tYWluKCkKICMgVGhpcyBmaWxlIGRvZXMgbm90IHdvcmsgZm9yIDIuNzsgU2VlIGlzc3VlIDI0MjEyLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CmluZGV4IGZmMDg1ZDUuLjFlNDRmYTUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGUucHkKQEAgLTEsMjkgKzEsMzAgQEAKLSIiIkF1dG9Db21wbGV0ZS5weSAtIEFuIElETEUgZXh0ZW5zaW9uIGZvciBhdXRvbWF0aWNhbGx5IGNvbXBsZXRpbmcgbmFtZXMuCisiIiJhdXRvY29tcGxldGUucHkgLSBBbiBJRExFIGV4dGVuc2lvbiBmb3IgYXV0b21hdGljYWxseSBjb21wbGV0aW5nIG5hbWVzLgogCiBUaGlzIGV4dGVuc2lvbiBjYW4gY29tcGxldGUgZWl0aGVyIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlIG5hbWVzLiBJdCBjYW4gcG9wCiBhIHdpbmRvdyB3aXRoIGFsbCBhdmFpbGFibGUgbmFtZXMsIGZvciB0aGUgdXNlciB0byBzZWxlY3QgZnJvbS4KICIiIgogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotCi0jIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCi1JRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgotCi0jIFRoZXNlIGNvbnN0YW50cyByZXByZXNlbnQgdGhlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcGxldGlvbnMKKyMgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBjb21wbGV0aW9ucy4KKyMgVGhleSBtdXN0IGJlIGRlZmluZWQgaGVyZSBzbyBhdXRvY29tcGxlX3cgY2FuIGltcG9ydCB0aGVtLgogQ09NUExFVEVfQVRUUklCVVRFUywgQ09NUExFVEVfRklMRVMgPSByYW5nZSgxLCAyKzEpCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgQXV0b0NvbXBsZXRlV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCi0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgYXV0b2NvbXBsZXRlX3cKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCiBpbXBvcnQgX19tYWluX18KIAorIyBUaGlzIHN0cmluZyBpbmNsdWRlcyBhbGwgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYW4gaWRlbnRpZmllci4KKyMgVE9ETyBVcGRhdGUgdGhpcyBoZXJlIGFuZCBlbHNld2hlcmUuCitJRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgorCiBTRVBTID0gb3Muc2VwCiBpZiBvcy5hbHRzZXA6ICAjIGUuZy4gJy8nIG9uIFdpbmRvd3MuLi4KICAgICBTRVBTICs9IG9zLmFsdHNlcAogCisKIGNsYXNzIEF1dG9Db21wbGV0ZToKIAogICAgIG1lbnVkZWZzID0gWwpAQCAtMzcsMTkgKzM4LDE3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbj1Ob25lKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgotICAgICAgICBpZiBlZGl0d2luIGlzIE5vbmU6ICAjIHN1YnByb2Nlc3MgYW5kIHRlc3QKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKLSAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgPSBOb25lCi0KLSAgICAgICAgIyBpZCBvZiBkZWxheWVkIGNhbGwsIGFuZCB0aGUgaW5kZXggb2YgdGhlIHRleHQgaW5zZXJ0IHdoZW4gdGhlIGRlbGF5ZWQKLSAgICAgICAgIyBjYWxsIHdhcyBpc3N1ZWQuIElmIF9kZWxheWVkX2NvbXBsZXRpb25faWQgaXMgTm9uZSwgdGhlcmUgaXMgbm8KLSAgICAgICAgIyBkZWxheWVkIGNhbGwuCi0gICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gTm9uZQorICAgICAgICBpZiBlZGl0d2luIGlzIG5vdCBOb25lOiAgIyBub3QgaW4gc3VicHJvY2VzcyBvciB0ZXN0CisgICAgICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKKyAgICAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gTm9uZQorICAgICAgICAgICAgIyBpZCBvZiBkZWxheWVkIGNhbGwsIGFuZCB0aGUgaW5kZXggb2YgdGhlIHRleHQgaW5zZXJ0IHdoZW4KKyAgICAgICAgICAgICMgdGhlIGRlbGF5ZWQgY2FsbCB3YXMgaXNzdWVkLiBJZiBfZGVsYXllZF9jb21wbGV0aW9uX2lkIGlzCisgICAgICAgICAgICAjIE5vbmUsIHRoZXJlIGlzIG5vIGRlbGF5ZWQgY2FsbC4KKyAgICAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleCA9IE5vbmUKIAogICAgIGRlZiBfbWFrZV9hdXRvY29tcGxldGVfd2luZG93KHNlbGYpOgotICAgICAgICByZXR1cm4gQXV0b0NvbXBsZXRlV2luZG93LkF1dG9Db21wbGV0ZVdpbmRvdyhzZWxmLnRleHQpCisgICAgICAgIHJldHVybiBhdXRvY29tcGxldGVfdy5BdXRvQ29tcGxldGVXaW5kb3coc2VsZi50ZXh0KQogCiAgICAgZGVmIF9yZW1vdmVfYXV0b2NvbXBsZXRlX3dpbmRvdyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgaWYgc2VsZi5hdXRvY29tcGxldGV3aW5kb3c6CkBAIC04MCwxNiArNzksMTcgQEAKICAgICAgICAgb3BlbiBhIGNvbXBsZXRpb24gbGlzdCBhZnRlciB0aGF0IChpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lCiAgICAgICAgIGNvbXBsZXRpb24pCiAgICAgICAgICIiIgotICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKSBhbmQgZXZlbnQubWNfc3RhdGU6Ci0gICAgICAgICAgICAjIEEgbW9kaWZpZXIgd2FzIHByZXNzZWQgYWxvbmcgd2l0aCB0aGUgdGFiLCBjb250aW51ZSBhcyB1c3VhbC4KLSAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKSBhbmQgZXZlbnQubWNfc3RhdGUgb3JcCisgICAgICAgICAgICAgICAgbm90IHNlbGYudGV4dC5nZXQoImluc2VydCBsaW5lc3RhcnQiLCAiaW5zZXJ0Iikuc3RyaXAoKToKKyAgICAgICAgICAgICMgQSBtb2RpZmllciB3YXMgcHJlc3NlZCBhbG9uZyB3aXRoIHRoZSB0YWIgb3IKKyAgICAgICAgICAgICMgdGhlcmUgaXMgb25seSBwcmV2aW91cyB3aGl0ZXNwYWNlIG9uIHRoaXMgbGluZSwgc28gdGFiLgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgaWYgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgYW5kIHNlbGYuYXV0b2NvbXBsZXRld2luZG93LmlzX2FjdGl2ZSgpOgogICAgICAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cuY29tcGxldGUoKQogICAgICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9wZW5lZCA9IHNlbGYub3Blbl9jb21wbGV0aW9ucyhGYWxzZSwgVHJ1ZSwgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG9wZW5lZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gImJyZWFrIgorICAgICAgICAgICAgcmV0dXJuICJicmVhayIgaWYgb3BlbmVkIGVsc2UgTm9uZQogCiAgICAgZGVmIF9vcGVuX2NvbXBsZXRpb25zX2xhdGVyKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKQpAQCAtMTAxLDkgKzEwMSw4IEBACiAKICAgICBkZWYgX2RlbGF5ZWRfb3Blbl9jb21wbGV0aW9ucyhzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKSAhPSBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5vcGVuX2NvbXBsZXRpb25zKCphcmdzKQorICAgICAgICBpZiBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpID09IHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleDoKKyAgICAgICAgICAgIHNlbGYub3Blbl9jb21wbGV0aW9ucygqYXJncykKIAogICAgIGRlZiBvcGVuX2NvbXBsZXRpb25zKHNlbGYsIGV2YWxmdW5jcywgY29tcGxldGUsIHVzZXJXYW50c1dpbiwgbW9kZT1Ob25lKToKICAgICAgICAgIiIiRmluZCB0aGUgY29tcGxldGlvbnMgYW5kIGNyZWF0ZSB0aGUgQXV0b0NvbXBsZXRlV2luZG93LgpAQCAtMTQ4LDE3ICsxNDcsMTcgQEAKICAgICAgICAgICAgICAgICBjb21wX3doYXQgPSBocC5nZXRfZXhwcmVzc2lvbigpCiAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBfd2hhdCBvciBcCiAgICAgICAgICAgICAgICAgICAgKG5vdCBldmFsZnVuY3MgYW5kIGNvbXBfd2hhdC5maW5kKCcoJykgIT0gLTEpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29tcF93aGF0ID0gIiIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBpZiBjb21wbGV0ZSBhbmQgbm90IGNvbXBfd2hhdCBhbmQgbm90IGNvbXBfc3RhcnQ6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGNvbXBfbGlzdHMgPSBzZWxmLmZldGNoX2NvbXBsZXRpb25zKGNvbXBfd2hhdCwgbW9kZSkKICAgICAgICAgaWYgbm90IGNvbXBfbGlzdHNbMF06Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gc2VsZi5fbWFrZV9hdXRvY29tcGxldGVfd2luZG93KCkKICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdy5zaG93X3dpbmRvdygKICAgICAgICAgICAgICAgICBjb21wX2xpc3RzLCAiaW5zZXJ0LSVkYyIgJSBsZW4oY29tcF9zdGFydCksCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2F1dG9jb21wbGV0ZV93LnB5CmluZGV4IDJlZTY4NzguLjMzNzRjNmUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZVdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQpAQCAtMSw5ICsxLDExIEBACiAiIiIKLUFuIGF1dG8tY29tcGxldGlvbiB3aW5kb3cgZm9yIElETEUsIHVzZWQgYnkgdGhlIEF1dG9Db21wbGV0ZSBleHRlbnNpb24KK0FuIGF1dG8tY29tcGxldGlvbiB3aW5kb3cgZm9yIElETEUsIHVzZWQgYnkgdGhlIGF1dG9jb21wbGV0ZSBleHRlbnNpb24KICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuTXVsdGlDYWxsIGltcG9ydCBNQ19TSElGVAotZnJvbSBpZGxlbGliLkF1dG9Db21wbGV0ZSBpbXBvcnQgQ09NUExFVEVfRklMRVMsIENPTVBMRVRFX0FUVFJJQlVURVMKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIuYXV0b2NvbXBsZXRlIGltcG9ydCBDT01QTEVURV9GSUxFUywgQ09NUExFVEVfQVRUUklCVVRFUworZnJvbSBpZGxlbGliLm11bHRpY2FsbCBpbXBvcnQgTUNfU0hJRlQKIAogSElERV9WSVJUVUFMX0VWRU5UX05BTUUgPSAiPDxhdXRvY29tcGxldGV3aW5kb3ctaGlkZT4+IgogSElERV9TRVFVRU5DRVMgPSAoIjxGb2N1c091dD4iLCAiPEJ1dHRvblByZXNzPiIpCkBAIC0zNCw4ICszNiw4IEBACiAgICAgICAgIHNlbGYuY29tcGxldGlvbnMgPSBOb25lCiAgICAgICAgICMgQSBsaXN0IHdpdGggbW9yZSBjb21wbGV0aW9ucywgb3IgTm9uZQogICAgICAgICBzZWxmLm1vcmVjb21wbGV0aW9ucyA9IE5vbmUKLSAgICAgICAgIyBUaGUgY29tcGxldGlvbiBtb2RlLiBFaXRoZXIgQXV0b0NvbXBsZXRlLkNPTVBMRVRFX0FUVFJJQlVURVMgb3IKLSAgICAgICAgIyBBdXRvQ29tcGxldGUuQ09NUExFVEVfRklMRVMKKyAgICAgICAgIyBUaGUgY29tcGxldGlvbiBtb2RlLiBFaXRoZXIgYXV0b2NvbXBsZXRlLkNPTVBMRVRFX0FUVFJJQlVURVMgb3IKKyAgICAgICAgIyBhdXRvY29tcGxldGUuQ09NUExFVEVfRklMRVMKICAgICAgICAgc2VsZi5tb2RlID0gTm9uZQogICAgICAgICAjIFRoZSBjdXJyZW50IGNvbXBsZXRpb24gc3RhcnQsIG9uIHRoZSB0ZXh0IGJveCAoYSBzdHJpbmcpCiAgICAgICAgIHNlbGYuc3RhcnQgPSBOb25lCkBAIC0yMTUsNiArMjE3LDcgQEAKICAgICAgICAgc2VsZi53aW5jb25maWdpZCA9IGFjdy5iaW5kKFdJTkNPTkZJR19TRVFVRU5DRSwgc2VsZi53aW5jb25maWdfZXZlbnQpCiAgICAgICAgIHNlbGYuZG91YmxlY2xpY2tpZCA9IGxpc3Rib3guYmluZChET1VCTEVDTElDS19TRVFVRU5DRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG91YmxlY2xpY2tfZXZlbnQpCisgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgd2luY29uZmlnX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6CkBAIC0yMzgsMTYgKzI0MSwxNCBAQAogICAgICAgICBhY3cud21fZ2VvbWV0cnkoIislZCslZCIgJSAobmV3X3gsIG5ld195KSkKIAogICAgIGRlZiBoaWRlX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCisgICAgICAgIGlmIHNlbGYuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKIAogICAgIGRlZiBsaXN0c2VsZWN0X2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi51c2Vyd2FudHN3aW5kb3cgPSBUcnVlCi0gICAgICAgIGN1cnNlbCA9IGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pCi0gICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLmNvbXBsZXRpb25zW2N1cnNlbF0pCisgICAgICAgIGlmIHNlbGYuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICBzZWxmLnVzZXJ3YW50c3dpbmRvdyA9IFRydWUKKyAgICAgICAgICAgIGN1cnNlbCA9IGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pCisgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5jb21wbGV0aW9uc1tjdXJzZWxdKQogCiAgICAgZGVmIGRvdWJsZWNsaWNrX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgIyBQdXQgdGhlIHNlbGVjdGVkIGNvbXBsZXRpb24gaW4gdGhlIHRleHQsIGFuZCBjbG9zZSB0aGUgbGlzdApAQCAtMjU3LDcgKzI1OCw3IEBACiAKICAgICBkZWYga2V5cHJlc3NfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAga2V5c3ltID0gZXZlbnQua2V5c3ltCiAgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICJtY19zdGF0ZSIpOgogICAgICAgICAgICAgc3RhdGUgPSBldmVudC5tY19zdGF0ZQpAQCAtMjgyLDcgKzI4Myw3IEBACiAgICAgICAgICAgICAgICAgIyBrZXlzeW0gPT0gIkJhY2tTcGFjZSIKICAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5zdGFydCkgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLnN0YXJ0WzotMV0pCiAgICAgICAgICAgICBzZWxmLmxhc3R0eXBlZHN0YXJ0ID0gc2VsZi5zdGFydAogICAgICAgICAgICAgc2VsZi5saXN0Ym94LnNlbGVjdF9jbGVhcigwLCBpbnQoc2VsZi5saXN0Ym94LmN1cnNlbGVjdGlvbigpWzBdKSkKQEAgLTI5Miw3ICsyOTMsNyBAQAogCiAgICAgICAgIGVsaWYga2V5c3ltID09ICJSZXR1cm4iOgogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiAoc2VsZi5tb2RlID09IENPTVBMRVRFX0FUVFJJQlVURVMgYW5kIGtleXN5bSBpbgogICAgICAgICAgICAgICAoInBlcmlvZCIsICJzcGFjZSIsICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJicmFja2V0bGVmdCIsCkBAIC0zMDgsNyArMzA5LDcgQEAKICAgICAgICAgICAgICAgIGFuZCAoc2VsZi5tb2RlID09IENPTVBMRVRFX0FUVFJJQlVURVMgb3Igc2VsZi5zdGFydCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuY29tcGxldGlvbnNbY3Vyc2VsXSkKICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYga2V5c3ltIGluICgiSG9tZSIsICJFbmQiLCAiUHJpb3IiLCAiTmV4dCIsICJVcCIsICJEb3duIikgYW5kIFwKICAgICAgICAgICAgICBub3Qgc3RhdGU6CkBAIC0zNDksMTIgKzM1MCwxMiBAQAogICAgICAgICAgICAgICAgICMgZmlyc3QgdGFiOyBsZXQgQXV0b0NvbXBsZXRlIGhhbmRsZSB0aGUgY29tcGxldGlvbgogICAgICAgICAgICAgICAgIHNlbGYudXNlcndhbnRzd2luZG93ID0gVHJ1ZQogICAgICAgICAgICAgICAgIHNlbGYubGFzdGtleV93YXNfdGFiID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiBhbnkocyBpbiBrZXlzeW0gZm9yIHMgaW4gKCJTaGlmdCIsICJDb250cm9sIiwgIkFsdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWV0YSIsICJDb21tYW5kIiwgIk9wdGlvbiIpKToKICAgICAgICAgICAgICMgQSBtb2RpZmllciBrZXksIHNvIGlnbm9yZQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYgZXZlbnQuY2hhciBhbmQgZXZlbnQuY2hhciA+PSAnICc6CiAgICAgICAgICAgICAjIFJlZ3VsYXIgY2hhcmFjdGVyIHdpdGggYSBub24tbGVuZ3RoLTEga2V5Y29kZQpAQCAtMzY4LDcgKzM2OSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFVua25vd24gZXZlbnQsIGNsb3NlIHRoZSB3aW5kb3cgYW5kIGxldCBpdCB0aHJvdWdoLgogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYga2V5cmVsZWFzZV9ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2V4cGFuZC5weQppbmRleCA3MDU5MDU0Li42YjQ2YmVlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvRXhwYW5kLnB5CisrKyBiL0xpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKQEAgLTEyLDggKzEyLDggQEAKIAogVGhpcyBpcyBhbiBleHRlbnNpb24gZmlsZSBhbmQgdGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgQXV0b0V4cGFuZC4KICcnJwotaW1wb3J0IHN0cmluZwogaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCiAKICMjIyQgZXZlbnQgPDxleHBhbmQtd29yZD4+CiAjIyMkIHdpbiA8QWx0LXNsYXNoPgpAQCAtMzEsNiArMzEsNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW4pOgogICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKKyAgICAgICAgc2VsZi5iZWxsID0gc2VsZi50ZXh0LmJlbGwKICAgICAgICAgc2VsZi5zdGF0ZSA9IE5vbmUKIAogICAgIGRlZiBleHBhbmRfd29yZF9ldmVudChzZWxmLCBldmVudCk6CkBAIC00NiwxNCArNDcsMTQgQEAKICAgICAgICAgICAgICAgICB3b3JkcyA9IHNlbGYuZ2V0d29yZHMoKQogICAgICAgICAgICAgICAgIGluZGV4ID0gMAogICAgICAgICBpZiBub3Qgd29yZHM6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICAgICAgd29yZCA9IHNlbGYuZ2V0cHJldndvcmQoKQogICAgICAgICBzZWxmLnRleHQuZGVsZXRlKCJpbnNlcnQgLSAlZCBjaGFycyIgJSBsZW4od29yZCksICJpbnNlcnQiKQogICAgICAgICBuZXd3b3JkID0gd29yZHNbaW5kZXhdCiAgICAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJSBsZW4od29yZHMpCiAgICAgICAgIGlmIGluZGV4ID09IDA6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpICAgICAgICAgICAgIyBXYXJuIHdlIGN5Y2xlZCBhcm91bmQKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpICAgICAgICAgICAgIyBXYXJuIHdlIGN5Y2xlZCBhcm91bmQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgiaW5zZXJ0IiwgbmV3d29yZCkKICAgICAgICAgY3VyaW5zZXJ0ID0gc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKQogICAgICAgICBjdXJsaW5lID0gc2VsZi50ZXh0LmdldCgiaW5zZXJ0IGxpbmVzdGFydCIsICJpbnNlcnQgbGluZWVuZCIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9icm93c2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NsYXNzQnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYnJvd3Nlci5weQppbmRleCBkMDljNTJmLi5lYTA1NjM4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvYnJvd3Nlci5weQpAQCAtMTEsMTYgKzExLDE2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgcHljbGJyCitpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAotZnJvbSBpZGxlbGliLldpbmRvd0xpc3QgaW1wb3J0IExpc3RlZFRvcGxldmVsCi1mcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcwotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcworZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIGZpbGVfb3BlbiA9IE5vbmUgICMgTWV0aG9kLi4uSXRlbSBhbmQgQ2xhc3MuLi5JdGVtIHVzZSB0aGlzLgotIyBOb3JtYWxseSBQeVNoZWxsLmZsaXN0Lm9wZW4sIGJ1dCB0aGVyZSBpcyBubyBQeVNoZWxsLmZsaXN0IGZvciBodGVzdC4KKyMgTm9ybWFsbHkgcHlzaGVsbC5mbGlzdC5vcGVuLCBidXQgdGhlcmUgaXMgbm8gcHlzaGVsbC5mbGlzdCBmb3IgaHRlc3QuCiAKIGNsYXNzIENsYXNzQnJvd3NlcjoKIApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgZ2xvYmFsIGZpbGVfb3BlbgogICAgICAgICBpZiBub3QgX2h0ZXN0OgotICAgICAgICAgICAgZmlsZV9vcGVuID0gUHlTaGVsbC5mbGlzdC5vcGVuCisgICAgICAgICAgICBmaWxlX29wZW4gPSBweXNoZWxsLmZsaXN0Lm9wZW4KICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmZpbGUgPSBvcy5wYXRoLmpvaW4ocGF0aFswXSwgc2VsZi5uYW1lICsgIi5weSIpCiAgICAgICAgIHNlbGYuX2h0ZXN0ID0gX2h0ZXN0CkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgUHlTaGVsbC5mbGlzdC5vcGVuKHNlbGYuZmlsZSkKKyAgICAgICAgcHlzaGVsbC5mbGlzdC5vcGVuKHNlbGYuZmlsZSkKIAogICAgIGRlZiBJc0V4cGFuZGFibGUoc2VsZik6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1jYXNlKHNlbGYuZmlsZVstMzpdKSA9PSAiLnB5IgpAQCAtMjI2LDcgKzIyNiw3IEBACiAgICAgICAgICAgICBmaWxlID0gc3lzLmFyZ3ZbMF0KICAgICBkaXIsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGUpCiAgICAgbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZSlbMF0KLSAgICBmbGlzdCA9IFB5U2hlbGwuUHlTaGVsbEZpbGVMaXN0KHBhcmVudCkKKyAgICBmbGlzdCA9IHB5c2hlbGwuUHlTaGVsbEZpbGVMaXN0KHBhcmVudCkKICAgICBnbG9iYWwgZmlsZV9vcGVuCiAgICAgZmlsZV9vcGVuID0gZmxpc3Qub3BlbgogICAgIENsYXNzQnJvd3NlcihmbGlzdCwgbmFtZSwgW2Rpcl0sIF9odGVzdD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weSBiL0xpYi9pZGxlbGliL2NhbGx0aXBfdy5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKaW5kZXggOWVlYzE3NS4uYzczNjFkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKQEAgLTEsNyArMSw3IEBACiAiIiJBIENhbGxUaXAgd2luZG93IGNsYXNzIGZvciBUa2ludGVyL0lETEUuCiAKLUFmdGVyIFRvb2xUaXAucHksIHdoaWNoIHVzZXMgaWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCi1Vc2VkIGJ5IHRoZSBDYWxsVGlwcyBJRExFIGV4dGVuc2lvbi4KK0FmdGVyIHRvb2x0aXAucHksIHdoaWNoIHVzZXMgaWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCitVc2VkIGJ5IHRoZSBjYWxsdGlwcyBJRExFIGV4dGVuc2lvbi4KICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgTGFiZWwsIExFRlQsIFNPTElELCBUY2xFcnJvcgogCkBAIC0xMzgsOCArMTM4LDggQEAKIAogICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKICAgICB0b3AudGl0bGUoIlRlc3QgY2FsbHRpcHMiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdGV4dCA9IFRleHQodG9wKQogICAgIHRleHQucGFjayhzaWRlPUxFRlQsIGZpbGw9Qk9USCwgZXhwYW5kPTEpCiAgICAgdGV4dC5pbnNlcnQoImluc2VydCIsICJzdHJpbmcuc3BsaXQiKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkgYi9MaWIvaWRsZWxpYi9jYWxsdGlwcy5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DYWxsVGlwcy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKaW5kZXggODFiZDVmMS4uNGM1YWVhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkKKysrIGIvTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKQEAgLTEsMTkgKzEsMTkgQEAKLSIiIkNhbGxUaXBzLnB5IC0gQW4gSURMRSBFeHRlbnNpb24gdG8gSm9nIFlvdXIgTWVtb3J5CisiIiJjYWxsdGlwcy5weSAtIEFuIElETEUgRXh0ZW5zaW9uIHRvIEpvZyBZb3VyIE1lbW9yeQogCiBDYWxsIFRpcHMgYXJlIGZsb2F0aW5nIHdpbmRvd3Mgd2hpY2ggZGlzcGxheSBmdW5jdGlvbiwgY2xhc3MsIGFuZCBtZXRob2QKIHBhcmFtZXRlciBhbmQgZG9jc3RyaW5nIGluZm9ybWF0aW9uIHdoZW4geW91IHR5cGUgYW4gb3BlbmluZyBwYXJlbnRoZXNpcywgYW5kCiB3aGljaCBkaXNhcHBlYXIgd2hlbiB5b3UgdHlwZSBhIGNsb3NpbmcgcGFyZW50aGVzaXMuCiAKICIiIgotaW1wb3J0IF9fbWFpbl9fCiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0eXBlcwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBXaW5kb3cKLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY2FsbHRpcF93Citmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitpbXBvcnQgX19tYWluX18KIAogY2xhc3MgQ2FsbFRpcHM6CiAKQEAgLTM3LDcgKzM3LDcgQEAKIAogICAgIGRlZiBfbWFrZV90a19jYWxsdGlwX3dpbmRvdyhzZWxmKToKICAgICAgICAgIyBTZWUgX19pbml0X18gZm9yIHVzYWdlCi0gICAgICAgIHJldHVybiBDYWxsVGlwV2luZG93LkNhbGxUaXAoc2VsZi50ZXh0KQorICAgICAgICByZXR1cm4gY2FsbHRpcF93LkNhbGxUaXAoc2VsZi50ZXh0KQogCiAgICAgZGVmIF9yZW1vdmVfY2FsbHRpcF93aW5kb3coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NhbGx0aXA6CkBAIC0xMjAsNyArMTIwLDcgQEAKIF9NQVhfQ09MUyA9IDg1CiBfTUFYX0xJTkVTID0gNSAgIyBlbm91Z2ggZm9yIGJ5dGVzCiBfSU5ERU5UID0gJyAnKjQgICMgZm9yIHdyYXBwZWQgc2lnbmF0dXJlcwotX2ZpcnN0X3BhcmFtID0gcmUuY29tcGlsZSgnKD88PVwoKVx3KlwsP1xzKicpCitfZmlyc3RfcGFyYW0gPSByZS5jb21waWxlKHInKD88PVwoKVx3KlwsP1xzKicpCiBfZGVmYXVsdF9jYWxsYWJsZV9hcmdzcGVjID0gIlNlZSBzb3VyY2Ugb3IgZG9jIgogCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5IGIvTGliL2lkbGVsaWIvY29kZWNvbnRleHQucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CmluZGV4IDdkMjVhZGEuLmYyNWUxYjMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CkBAIC0xLDE5ICsxLDIxIEBACi0iIiJDb2RlQ29udGV4dCAtIEV4dGVuc2lvbiB0byBkaXNwbGF5IHRoZSBibG9jayBjb250ZXh0IGFib3ZlIHRoZSBlZGl0IHdpbmRvdworIiIiY29kZWNvbnRleHQgLSBFeHRlbnNpb24gdG8gZGlzcGxheSB0aGUgYmxvY2sgY29udGV4dCBhYm92ZSB0aGUgZWRpdCB3aW5kb3cKIAogT25jZSBjb2RlIGhhcyBzY3JvbGxlZCBvZmYgdGhlIHRvcCBvZiBhIHdpbmRvdywgaXQgY2FuIGJlIGRpZmZpY3VsdCB0bwogZGV0ZXJtaW5lIHdoaWNoIGJsb2NrIHlvdSBhcmUgaW4uICBUaGlzIGV4dGVuc2lvbiBpbXBsZW1lbnRzIGEgcGFuZSBhdCB0aGUgdG9wCiBvZiBlYWNoIElETEUgZWRpdCB3aW5kb3cgd2hpY2ggcHJvdmlkZXMgYmxvY2sgc3RydWN0dXJlIGhpbnRzLiAgVGhlc2UgaGludHMgYXJlCiB0aGUgbGluZXMgd2hpY2ggY29udGFpbiB0aGUgYmxvY2sgb3BlbmluZyBrZXl3b3JkcywgZS5nLiAnaWYnLCBmb3IgdGhlCiBlbmNsb3NpbmcgYmxvY2suICBUaGUgbnVtYmVyIG9mIGhpbnQgbGluZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbnVtbGluZXMKLXZhcmlhYmxlIGluIHRoZSBDb2RlQ29udGV4dCBzZWN0aW9uIG9mIGNvbmZpZy1leHRlbnNpb25zLmRlZi4gTGluZXMgd2hpY2ggZG8KK3ZhcmlhYmxlIGluIHRoZSBjb2RlY29udGV4dCBzZWN0aW9uIG9mIGNvbmZpZy1leHRlbnNpb25zLmRlZi4gTGluZXMgd2hpY2ggZG8KIG5vdCBvcGVuIGJsb2NrcyBhcmUgbm90IHNob3duIGluIHRoZSBjb250ZXh0IGhpbnRzIHBhbmUuCiAKICIiIgotaW1wb3J0IHRraW50ZXIKLWZyb20gdGtpbnRlci5jb25zdGFudHMgaW1wb3J0IFRPUCwgTEVGVCwgWCwgVywgU1VOS0VOCiBpbXBvcnQgcmUKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplIGFzIElORklOSVRZCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKKworaW1wb3J0IHRraW50ZXIKK2Zyb20gdGtpbnRlci5jb25zdGFudHMgaW1wb3J0IFRPUCwgTEVGVCwgWCwgVywgU1VOS0VOCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIEJMT0NLT1BFTkVSUyA9IHsiY2xhc3MiLCAiZGVmIiwgImVsaWYiLCAiZWxzZSIsICJleGNlcHQiLCAiZmluYWxseSIsICJmb3IiLAogICAgICAgICAgICAgICAgICAgICAiaWYiLCAidHJ5IiwgIndoaWxlIiwgIndpdGgifQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbG9yaXplci5weQppbmRleCAwMmVhYzQ3Li43MzEwYmIyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKQEAgLTEsMTAgKzEsMTAgQEAKLWltcG9ydCB0aW1lCi1pbXBvcnQgcmUKLWltcG9ydCBrZXl3b3JkCiBpbXBvcnQgYnVpbHRpbnMKLWZyb20gdGtpbnRlciBpbXBvcnQgVGtWZXJzaW9uCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgoraW1wb3J0IGtleXdvcmQKK2ltcG9ydCByZQoraW1wb3J0IHRpbWUKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgogCiBERUJVRyA9IEZhbHNlCiAKQEAgLTQ5LDExICs0OSw4IEBACiAgICAgICAgIGluc2VydGJhY2tncm91bmQ9Y3Vyc29yX2NvbG9yLAogICAgICAgICBzZWxlY3Rmb3JlZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2ZvcmVncm91bmQnXSwKICAgICAgICAgc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10sCi0gICAgICAgICkKLSAgICBpZiBUa1ZlcnNpb24gPj0gOC41OgotICAgICAgICB0ZXh0LmNvbmZpZygKLSAgICAgICAgICAgIGluYWN0aXZlc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10pCi0KKyAgICAgICAgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSwgICMgbmV3IGluIDguNQorICAgICkKIAogY2xhc3MgQ29sb3JEZWxlZ2F0b3IoRGVsZWdhdG9yKToKIApAQCAtMjU5LDEyICsyNTYsMTIgQEAKIAogZGVmIF9jb2xvcl9kZWxlZ2F0b3IocGFyZW50KTogICMgaHRlc3QgIwogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKLSAgICBmcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIGZyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKICAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXN0IENvbG9yRGVsZWdhdG9yIikKLSAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHBhcmVudC53aW5mb19yb290eCgpICsgMjAwLAotICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHggKyAyNTAsIHkgKyAxNzUpKQogICAgIHNvdXJjZSA9ICJpZiBzb21lbmFtZTogeCA9ICdhYmMnICMgY29tbWVudFxucHJpbnRcbiIKICAgICB0ZXh0ID0gVGV4dCh0b3AsIGJhY2tncm91bmQ9IndoaXRlIikKICAgICB0ZXh0LnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiKQpAQCAtMjc3LDUgKzI3NCw5IEBACiAgICAgcC5pbnNlcnRmaWx0ZXIoZCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbG9yaXplcicsCisgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfY29sb3JfZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmIGIvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmCmluZGV4IDNiZmNiNjkuLjY0Nzg4ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZgorKysgYi9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYKQEAgLTEwOSw2ICsxMDksNTcgQEAKIGRlbC13b3JkLWxlZnQ9PEFsdC1LZXktQmFja1NwYWNlPgogZGVsLXdvcmQtcmlnaHQ9PEFsdC1LZXktZD4KIAorW0lETEUgTW9kZXJuIFVuaXhdCitjb3B5ID0gPENvbnRyb2wtU2hpZnQtS2V5LUM+IDxDb250cm9sLUtleS1JbnNlcnQ+CitjdXQgPSA8Q29udHJvbC1LZXkteD4gPFNoaWZ0LUtleS1EZWxldGU+CitwYXN0ZSA9IDxDb250cm9sLUtleS12PiA8U2hpZnQtS2V5LUluc2VydD4KK2JlZ2lubmluZy1vZi1saW5lID0gPEtleS1Ib21lPgorY2VudGVyLWluc2VydCA9IDxDb250cm9sLUtleS1sPgorY2xvc2UtYWxsLXdpbmRvd3MgPSA8Q29udHJvbC1LZXktcT4KK2Nsb3NlLXdpbmRvdyA9IDxDb250cm9sLUtleS13PiA8Q29udHJvbC1TaGlmdC1LZXktVz4KK2RvLW5vdGhpbmcgPSA8Q29udHJvbC1LZXktRjEyPgorZW5kLW9mLWZpbGUgPSA8Q29udHJvbC1LZXktZD4KK2hpc3RvcnktbmV4dCA9IDxBbHQtS2V5LW4+IDxNZXRhLUtleS1uPgoraGlzdG9yeS1wcmV2aW91cyA9IDxBbHQtS2V5LXA+IDxNZXRhLUtleS1wPgoraW50ZXJydXB0LWV4ZWN1dGlvbiA9IDxDb250cm9sLUtleS1jPgordmlldy1yZXN0YXJ0ID0gPEtleS1GNj4KK3Jlc3RhcnQtc2hlbGwgPSA8Q29udHJvbC1LZXktRjY+CitvcGVuLWNsYXNzLWJyb3dzZXIgPSA8Q29udHJvbC1LZXktYj4KK29wZW4tbW9kdWxlID0gPENvbnRyb2wtS2V5LW0+CitvcGVuLW5ldy13aW5kb3cgPSA8Q29udHJvbC1LZXktbj4KK29wZW4td2luZG93LWZyb20tZmlsZSA9IDxDb250cm9sLUtleS1vPgorcGxhaW4tbmV3bGluZS1hbmQtaW5kZW50ID0gPENvbnRyb2wtS2V5LWo+CitwcmludC13aW5kb3cgPSA8Q29udHJvbC1LZXktcD4KK3B5dGhvbi1jb250ZXh0LWhlbHAgPSA8U2hpZnQtS2V5LUYxPgorcHl0aG9uLWRvY3MgPSA8S2V5LUYxPgorcmVkbyA9IDxDb250cm9sLVNoaWZ0LUtleS1aPgorcmVtb3ZlLXNlbGVjdGlvbiA9IDxLZXktRXNjYXBlPgorc2F2ZS1jb3B5LW9mLXdpbmRvdy1hcy1maWxlID0gPEFsdC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93LWFzLWZpbGUgPSA8Q29udHJvbC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93ID0gPENvbnRyb2wtS2V5LXM+CitzZWxlY3QtYWxsID0gPENvbnRyb2wtS2V5LWE+Cit0b2dnbGUtYXV0by1jb2xvcmluZyA9IDxDb250cm9sLUtleS1zbGFzaD4KK3VuZG8gPSA8Q29udHJvbC1LZXktej4KK2ZpbmQgPSA8Q29udHJvbC1LZXktZj4KK2ZpbmQtYWdhaW4gPSA8S2V5LUYzPgorZmluZC1pbi1maWxlcyA9IDxDb250cm9sLVNoaWZ0LUtleS1mPgorZmluZC1zZWxlY3Rpb24gPSA8Q29udHJvbC1LZXktaD4KK3JlcGxhY2UgPSA8Q29udHJvbC1LZXktcj4KK2dvdG8tbGluZSA9IDxDb250cm9sLUtleS1nPgorc21hcnQtYmFja3NwYWNlID0gPEtleS1CYWNrU3BhY2U+CituZXdsaW5lLWFuZC1pbmRlbnQgPSA8S2V5LVJldHVybj4gPEtleS1LUF9FbnRlcj4KK3NtYXJ0LWluZGVudCA9IDxLZXktVGFiPgoraW5kZW50LXJlZ2lvbiA9IDxDb250cm9sLUtleS1icmFja2V0cmlnaHQ+CitkZWRlbnQtcmVnaW9uID0gPENvbnRyb2wtS2V5LWJyYWNrZXRsZWZ0PgorY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1LZXktZD4KK3VuY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1TaGlmdC1LZXktRD4KK3RhYmlmeS1yZWdpb24gPSA8QWx0LUtleS01PgordW50YWJpZnktcmVnaW9uID0gPEFsdC1LZXktNj4KK3RvZ2dsZS10YWJzID0gPENvbnRyb2wtS2V5LVQ+CitjaGFuZ2UtaW5kZW50d2lkdGggPSA8QWx0LUtleS11PgorZGVsLXdvcmQtbGVmdCA9IDxDb250cm9sLUtleS1CYWNrU3BhY2U+CitkZWwtd29yZC1yaWdodCA9IDxDb250cm9sLUtleS1EZWxldGU+CisKIFtJRExFIENsYXNzaWMgTWFjXQogY29weT08Q29tbWFuZC1LZXktYz4KIGN1dD08Q29tbWFuZC1LZXkteD4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZiBiL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgppbmRleCA4ZWJiYzFiLi5hNjFiYmE3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCkBAIC03MCw3ICs3MCw5IEBACiAKIFtLZXlzXQogZGVmYXVsdD0gMQotbmFtZT0gSURMRSBDbGFzc2ljIFdpbmRvd3MKK25hbWU9CituYW1lMj0KKyMgbmFtZTIgc2V0IGluIHVzZXIgY29uZmlnLW1haW4uY2ZnIGZvciBrZXlzIGFkZGVkIGFmdGVyIDIwMTYgSnVseSAxCiAKIFtIaXN0b3J5XQogY3ljbGljPTEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkgYi9MaWIvaWRsZWxpYi9jb25maWcucHkKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnLnB5CmluZGV4IDg5NTQ0ODguLjEwZmUzYmEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLnB5CkBAIC03LDcgKzcsNyBAQAogYW5kIGlmIGEgZmlsZSBiZWNvbWVzIGVtcHR5LCBpdCB3aWxsIGJlIGRlbGV0ZWQuCiAKIFRoZSBjb250ZW50cyBvZiB0aGUgdXNlciBmaWxlcyBtYXkgYmUgYWx0ZXJlZCB1c2luZyB0aGUgT3B0aW9ucy9Db25maWd1cmUgSURMRQotbWVudSB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gR1VJIChjb25maWdEaWFsb2cucHkpLCBvciBtYW51YWxseS4KK21lbnUgdG8gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIEdVSSAoY29uZmlnZGlhbG9nLnB5KSwgb3IgbWFudWFsbHkuCiAKIFRocm91Z2hvdXQgdGhpcyBtb2R1bGUgdGhlcmUgaXMgYW4gZW1waGFzaXMgb24gcmV0dXJuaW5nIHVzZWFibGUgZGVmYXVsdHMKIHdoZW4gYSBwcm9ibGVtIG9jY3VycyBpbiByZXR1cm5pbmcgYSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiB2YWx1ZSBiYWNrIHRvCkBAIC0xOCwxMSArMTgsMTAgQEAKICIiIgogIyBUT0RPcyBhZGRlZCBPY3QgMjAxNCwgdGpyCiAKK2Zyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1mcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrVmVyc2lvbgogZnJvbSB0a2ludGVyLmZvbnQgaW1wb3J0IEZvbnQsIG5hbWV0b2ZvbnQKIAogY2xhc3MgSW52YWxpZENvbmZpZ1R5cGUoRXhjZXB0aW9uKTogcGFzcwpAQCAtMjMwLDE1ICsyMjksMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi51c2VyQ2ZnW2NvbmZpZ1R5cGVdLkdldChzZWN0aW9uLCBvcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT10eXBlLCByYXc9cmF3KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJworICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBpbnZhbGlkICVyIHZhbHVlIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbiAlclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGZyb20gc2VjdGlvbiAlcjogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUsIG9wdGlvbiwgc2VjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51c2VyQ2ZnW2NvbmZpZ1R5cGVdLkdldChzZWN0aW9uLCBvcHRpb24sIHJhdz1yYXcpKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNlbGYuZGVmYXVsdENmZ1tjb25maWdUeXBlXS5oYXNfb3B0aW9uKHNlY3Rpb24sb3B0aW9uKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0Q2ZnW2NvbmZpZ1R5cGVdLkdldCgKQEAgLTI0NywxNSArMjQzLDEyIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICNyZXR1cm5pbmcgZGVmYXVsdCwgcHJpbnQgd2FybmluZwogICAgICAgICBpZiB3YXJuX29uX2RlZmF1bHQ6Ci0gICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKKyAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgcHJvYmxlbSByZXRyaWV2aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uICVyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBzZWN0aW9uICVyLlxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uLCBzZWN0aW9uLCBkZWZhdWx0KSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24pCiAgICAgICAgIHJldHVybiBkZWZhdWx0CiAKICAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUpOgpAQCAtMzU4LDUyICszNTEsNzMgQEAKICAgICAgICAgZm9yIGVsZW1lbnQgaW4gdGhlbWU6CiAgICAgICAgICAgICBpZiBub3QgY2ZnUGFyc2VyLmhhc19vcHRpb24odGhlbWVOYW1lLCBlbGVtZW50KToKICAgICAgICAgICAgICAgICAjIFByaW50IHdhcm5pbmcgdGhhdCB3aWxsIHJldHVybiBhIGRlZmF1bHQgY29sb3IKLSAgICAgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLklkbGVDb25mLkdldFRoZW1lRGljdCcKKyAgICAgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcuSWRsZUNvbmYuR2V0VGhlbWVEaWN0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtXG4gcHJvYmxlbSByZXRyaWV2aW5nIHRoZW1lIGVsZW1lbnQgJXInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gZnJvbSB0aGVtZSAlci5cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgY29sb3I6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWxlbWVudCwgdGhlbWVOYW1lLCB0aGVtZVtlbGVtZW50XSkpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAnaGlnaGxpZ2h0JywgdGhlbWVOYW1lLCBlbGVtZW50KQogICAgICAgICAgICAgdGhlbWVbZWxlbWVudF0gPSBjZmdQYXJzZXIuR2V0KAogICAgICAgICAgICAgICAgICAgICB0aGVtZU5hbWUsIGVsZW1lbnQsIGRlZmF1bHQ9dGhlbWVbZWxlbWVudF0pCiAgICAgICAgIHJldHVybiB0aGVtZQogCiAgICAgZGVmIEN1cnJlbnRUaGVtZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHQgY29sb3IgdGhlbWUuCisgICAgICAgICJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGV4dCBjb2xvciB0aGVtZS4iCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKCdUaGVtZScpCiAKLSAgICAgICAgaWRsZWxpYi5jb25maWctbWFpbi5kZWYgaW5jbHVkZXMgdGhpcyBzZWN0aW9uCisgICAgZGVmIEN1cnJlbnRLZXlzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5IHNldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMoJ0tleXMnKQorCisgICAgZGVmIGN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKHNlbGYsIHNlY3Rpb24pOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbmFtZSBmb3IgVGhlbWUgb3IgS2V5cyBzZWN0aW9uLgorCisgICAgICAgIGlkbGVsaWIuY29uZmlnLW1haW4uZGVmICgnZGVmYXVsdCcpIGluY2x1ZGVzIHRoZXNlIHNlY3Rpb25zCisKICAgICAgICAgW1RoZW1lXQogICAgICAgICBkZWZhdWx0PSAxCiAgICAgICAgIG5hbWU9IElETEUgQ2xhc3NpYwogICAgICAgICBuYW1lMj0KLSAgICAgICAgIyBuYW1lMiBzZXQgaW4gdXNlciBjb25maWctbWFpbi5jZmcgZm9yIHRoZW1lcyBhZGRlZCBhZnRlciAyMDE1IE9jdCAxCiAKLSAgICAgICAgSXRlbSBuYW1lMiBpcyBuZWVkZWQgYmVjYXVzZSBzZXR0aW5nIG5hbWUgdG8gYSBuZXcgYnVpbHRpbgotICAgICAgICBjYXVzZXMgb2xkZXIgSURMRXMgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcyBvciBxdWl0LgorICAgICAgICBbS2V5c10KKyAgICAgICAgZGVmYXVsdD0gMQorICAgICAgICBuYW1lPQorICAgICAgICBuYW1lMj0KKworICAgICAgICBJdGVtICduYW1lMicsIGlzIHVzZWQgZm9yIGJ1aWx0LWluICgnZGVmYXVsdCcpIHRoZW1lcyBhbmQga2V5cworICAgICAgICBhZGRlZCBhZnRlciAyMDE1IE9jdCAxIGFuZCAyMDE2IEp1bHkgMS4gIFRoaXMga2x1ZGdlIGlzIG5lZWRlZAorICAgICAgICBiZWNhdXNlIHNldHRpbmcgJ25hbWUnIHRvIGEgYnVpbHRpbiBub3QgZGVmaW5lZCBpbiBvbGRlciBJRExFcworICAgICAgICB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzIG9yIHF1aXQuCiAgICAgICAgIFNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI1MzEzLgotICAgICAgICBXaGVuIGRlZmF1bHQgPSBUcnVlLCBuYW1lMiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbmFtZSwKLSAgICAgICAgd2hpbGUgb2xkZXIgSURMRXMgd2lsbCBqdXN0IHVzZSBuYW1lLgorICAgICAgICBXaGVuIGRlZmF1bHQgPSBUcnVlLCAnbmFtZTInIHRha2VzIHByZWNlZGVuY2Ugb3ZlciAnbmFtZScsCisgICAgICAgIHdoaWxlIG9sZGVyIElETEVzIHdpbGwganVzdCB1c2UgbmFtZS4gIFdoZW4gZGVmYXVsdCA9IEZhbHNlLAorICAgICAgICAnbmFtZTInIG1heSBzdGlsbCBiZSBzZXQsIGJ1dCBpdCBpcyBpZ25vcmVkLgogICAgICAgICAiIiIKLSAgICAgICAgZGVmYXVsdCA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ2RlZmF1bHQnLAorICAgICAgICBjZmduYW1lID0gJ2hpZ2hsaWdodCcgaWYgc2VjdGlvbiA9PSAnVGhlbWUnIGVsc2UgJ2tleXMnCisgICAgICAgIGRlZmF1bHQgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICdkZWZhdWx0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnLCBkZWZhdWx0PVRydWUpCisgICAgICAgIG5hbWUgPSAnJwogICAgICAgICBpZiBkZWZhdWx0OgotICAgICAgICAgICAgdGhlbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lMicsIGRlZmF1bHQ9JycpCi0gICAgICAgIGlmIGRlZmF1bHQgYW5kIG5vdCB0aGVtZSBvciBub3QgZGVmYXVsdDoKLSAgICAgICAgICAgIHRoZW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScsIGRlZmF1bHQ9JycpCi0gICAgICAgIHNvdXJjZSA9IHNlbGYuZGVmYXVsdENmZyBpZiBkZWZhdWx0IGVsc2Ugc2VsZi51c2VyQ2ZnCi0gICAgICAgIGlmIHNvdXJjZVsnaGlnaGxpZ2h0J10uaGFzX3NlY3Rpb24odGhlbWUpOgotICAgICAgICAgICAgcmV0dXJuIHRoZW1lCisgICAgICAgICAgICBuYW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCBzZWN0aW9uLCAnbmFtZTInLCBkZWZhdWx0PScnKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICduYW1lJywgZGVmYXVsdD0nJykKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuZGVmYXVsdENmZyBpZiBkZWZhdWx0IGVsc2Ugc2VsZi51c2VyQ2ZnCisgICAgICAgICAgICBpZiBzb3VyY2VbY2ZnbmFtZV0uaGFzX3NlY3Rpb24obmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgcmV0dXJuICJJRExFIENsYXNzaWMiIGlmIHNlY3Rpb24gPT0gJ1RoZW1lJyBlbHNlIHNlbGYuZGVmYXVsdF9rZXlzKCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZGVmYXVsdF9rZXlzKCk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CisgICAgICAgICAgICByZXR1cm4gJ0lETEUgQ2xhc3NpYyBXaW5kb3dzJworICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBDbGFzc2ljIE9TWCcKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiSURMRSBDbGFzc2ljIgorICAgICAgICAgICAgcmV0dXJuICdJRExFIE1vZGVybiBVbml4JwogCi0gICAgZGVmIEN1cnJlbnRLZXlzKHNlbGYpOgotICAgICAgICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGtleSBzZXQuIgotICAgICAgICByZXR1cm4gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnS2V5cycsICduYW1lJywgZGVmYXVsdD0nJykKLQotICAgIGRlZiBHZXRFeHRlbnNpb25zKHNlbGYsIGFjdGl2ZV9vbmx5PVRydWUsIGVkaXRvcl9vbmx5PUZhbHNlLCBzaGVsbF9vbmx5PUZhbHNlKToKKyAgICBkZWYgR2V0RXh0ZW5zaW9ucyhzZWxmLCBhY3RpdmVfb25seT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcl9vbmx5PUZhbHNlLCBzaGVsbF9vbmx5PUZhbHNlKToKICAgICAgICAgIiIiUmV0dXJuIGV4dGVuc2lvbnMgaW4gZGVmYXVsdCBhbmQgdXNlciBjb25maWctZXh0ZW5zaW9ucyBmaWxlcy4KIAogICAgICAgICBJZiBhY3RpdmVfb25seSBUcnVlLCBvbmx5IHJldHVybiBhY3RpdmUgKGVuYWJsZWQpIGV4dGVuc2lvbnMKQEAgLTQyMyw3ICs0MzcsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuR2V0T3B0aW9uKCdleHRlbnNpb25zJywgZXh0biwgJ2VuYWJsZScsIGRlZmF1bHQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdib29sJyk6CiAgICAgICAgICAgICAgICAgICAgICN0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHkgb3Igc2hlbGxfb25seTogICMgVE9ETyBpZiBib3RoLCBjb250cmFkaWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5IG9yIHNoZWxsX29ubHk6ICAjIFRPRE8gYm90aCBUcnVlIGNvbnRyYWRpY3QKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9ICJlbmFibGVfZWRpdG9yIgogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTUyOCw3ICs1NDIsOCBAQAogICAgICAgICBldmVudFN0ciAtIHZpcnR1YWwgZXZlbnQsIGluY2x1ZGluZyBicmFja2V0cywgYXMgaW4gJzw8ZXZlbnQ+PicuCiAgICAgICAgICIiIgogICAgICAgICBldmVudE5hbWUgPSBldmVudFN0clsyOi0yXSAjdHJpbSBvZmYgdGhlIGFuZ2xlIGJyYWNrZXRzCi0gICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldE9wdGlvbigna2V5cycsIGtleVNldE5hbWUsIGV2ZW50TmFtZSwgZGVmYXVsdD0nJykuc3BsaXQoKQorICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRPcHRpb24oJ2tleXMnLCBrZXlTZXROYW1lLCBldmVudE5hbWUsIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuX29uX2RlZmF1bHQ9RmFsc2UpLnNwbGl0KCkKICAgICAgICAgcmV0dXJuIGJpbmRpbmcKIAogICAgIGRlZiBHZXRDdXJyZW50S2V5U2V0KHNlbGYpOgpAQCAtNjM5LDIwICs2NTQsMjggQEAKICAgICAgICAgICAgICc8PGRlbC13b3JkLXJpZ2h0Pj4nOiBbJzxDb250cm9sLUtleS1EZWxldGU+J10KICAgICAgICAgICAgIH0KICAgICAgICAgaWYga2V5U2V0TmFtZToKLSAgICAgICAgICAgIGZvciBldmVudCBpbiBrZXlCaW5kaW5nczoKLSAgICAgICAgICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRLZXlCaW5kaW5nKGtleVNldE5hbWUsIGV2ZW50KQotICAgICAgICAgICAgICAgIGlmIGJpbmRpbmc6Ci0gICAgICAgICAgICAgICAgICAgIGtleUJpbmRpbmdzW2V2ZW50XSA9IGJpbmRpbmcKLSAgICAgICAgICAgICAgICBlbHNlOiAjd2UgYXJlIGdvaW5nIHRvIHJldHVybiBhIGRlZmF1bHQsIHByaW50IHdhcm5pbmcKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZz0oJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1cbiBwcm9ibGVtIHJldHJpZXZpbmcga2V5IGJpbmRpbmcgZm9yIGV2ZW50ICVyJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBmcm9tIGtleSBzZXQgJXIuXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQsIGtleVNldE5hbWUsIGtleUJpbmRpbmdzW2V2ZW50XSkpCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBpZiBub3QgKHNlbGYudXNlckNmZ1sna2V5cyddLmhhc19zZWN0aW9uKGtleVNldE5hbWUpIG9yCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVmYXVsdENmZ1sna2V5cyddLmhhc19zZWN0aW9uKGtleVNldE5hbWUpKToKKyAgICAgICAgICAgICAgICB3YXJuaW5nID0gKAorICAgICAgICAgICAgICAgICAgICAnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMgLVxuJworICAgICAgICAgICAgICAgICAgICAnIGtleSBzZXQgJXIgaXMgbm90IGRlZmluZWQsIHVzaW5nIGRlZmF1bHQgYmluZGluZ3MuJyAlCisgICAgICAgICAgICAgICAgICAgIChrZXlTZXROYW1lLCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgX3dhcm4od2FybmluZywgJ2tleXMnLCBrZXlTZXROYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgZXZlbnQgaW4ga2V5QmluZGluZ3M6CisgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldEtleUJpbmRpbmcoa2V5U2V0TmFtZSwgZXZlbnQpCisgICAgICAgICAgICAgICAgICAgIGlmIGJpbmRpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlCaW5kaW5nc1tldmVudF0gPSBiaW5kaW5nCisgICAgICAgICAgICAgICAgICAgIGVsc2U6ICN3ZSBhcmUgZ29pbmcgdG8gcmV0dXJuIGEgZGVmYXVsdCwgcHJpbnQgd2FybmluZworICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMgLVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcHJvYmxlbSByZXRyaWV2aW5nIGtleSBiaW5kaW5nIGZvciBldmVudCAlclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBrZXkgc2V0ICVyLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LCBrZXlTZXROYW1lLCBrZXlCaW5kaW5nc1tldmVudF0pCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAna2V5cycsIGtleVNldE5hbWUsIGV2ZW50KQogICAgICAgICByZXR1cm4ga2V5QmluZGluZ3MKIAogICAgIGRlZiBHZXRFeHRyYUhlbHBTb3VyY2VMaXN0KHNlbGYsIGNvbmZpZ1NldCk6CkBAIC03MTMsMTYgKzczNiwxMyBAQAogICAgICAgICBib2xkID0gc2VsZi5HZXRPcHRpb24oY29uZmlnVHlwZSwgc2VjdGlvbiwgJ2ZvbnQtYm9sZCcsIGRlZmF1bHQ9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnKQogICAgICAgICBpZiAoZmFtaWx5ID09ICdUa0ZpeGVkRm9udCcpOgotICAgICAgICAgICAgaWYgVGtWZXJzaW9uIDwgOC41OgotICAgICAgICAgICAgICAgIGZhbWlseSA9ICdDb3VyaWVyJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmID0gRm9udChuYW1lPSdUa0ZpeGVkRm9udCcsIGV4aXN0cz1UcnVlLCByb290PXJvb3QpCi0gICAgICAgICAgICAgICAgYWN0dWFsRm9udCA9IEZvbnQuYWN0dWFsKGYpCi0gICAgICAgICAgICAgICAgZmFtaWx5ID0gYWN0dWFsRm9udFsnZmFtaWx5J10KLSAgICAgICAgICAgICAgICBzaXplID0gYWN0dWFsRm9udFsnc2l6ZSddCi0gICAgICAgICAgICAgICAgaWYgc2l6ZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gMTAgICMgaWYgZm9udCBpbiBwaXhlbHMsIGlnbm9yZSBhY3R1YWwgc2l6ZQotICAgICAgICAgICAgICAgIGJvbGQgPSBhY3R1YWxGb250Wyd3ZWlnaHQnXT09J2JvbGQnCisgICAgICAgICAgICBmID0gRm9udChuYW1lPSdUa0ZpeGVkRm9udCcsIGV4aXN0cz1UcnVlLCByb290PXJvb3QpCisgICAgICAgICAgICBhY3R1YWxGb250ID0gRm9udC5hY3R1YWwoZikKKyAgICAgICAgICAgIGZhbWlseSA9IGFjdHVhbEZvbnRbJ2ZhbWlseSddCisgICAgICAgICAgICBzaXplID0gYWN0dWFsRm9udFsnc2l6ZSddCisgICAgICAgICAgICBpZiBzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgc2l6ZSA9IDEwICAjIGlmIGZvbnQgaW4gcGl4ZWxzLCBpZ25vcmUgYWN0dWFsIHNpemUKKyAgICAgICAgICAgIGJvbGQgPSBhY3R1YWxGb250Wyd3ZWlnaHQnXSA9PSAnYm9sZCcKICAgICAgICAgcmV0dXJuIChmYW1pbHksIHNpemUsICdib2xkJyBpZiBib2xkIGVsc2UgJ25vcm1hbCcpCiAKICAgICBkZWYgTG9hZENmZ0ZpbGVzKHNlbGYpOgpAQCAtNzM5LDYgKzc1OSwxOCBAQAogCiBpZGxlQ29uZiA9IElkbGVDb25mKCkKIAorCitfd2FybmVkID0gc2V0KCkKK2RlZiBfd2Fybihtc2csICprZXkpOgorICAgIGtleSA9IChtc2csKSArIGtleQorICAgIGlmIGtleSBub3QgaW4gX3dhcm5lZDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBfd2FybmVkLmFkZChrZXkpCisKKwogIyBUT0RPIFJldmlzZSB0ZXN0IG91dHB1dCwgd3JpdGUgZXhwYW5kZWQgdW5pdHRlc3QKICMKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU4MTE4Li4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLSJEaWFsb2cgdG8gc3BlY2lmeSBvciBlZGl0IHRoZSBwYXJhbWV0ZXJzIGZvciBhIHVzZXIgY29uZmlndXJlZCBoZWxwIHNvdXJjZS4iCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1pbXBvcnQgdGtpbnRlci5maWxlZGlhbG9nIGFzIHRrRmlsZURpYWxvZwotCi1jbGFzcyBHZXRIZWxwU291cmNlRGlhbG9nKFRvcGxldmVsKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVudUl0ZW09JycsIGZpbGVQYXRoPScnLCBfaHRlc3Q9RmFsc2UpOgotICAgICAgICAiIiJHZXQgbWVudSBlbnRyeSBhbmQgdXJsLyBsb2NhbCBmaWxlIGxvY2F0aW9uIGZvciBBZGRpdGlvbmFsIEhlbHAKLQotICAgICAgICBVc2VyIHNlbGVjdHMgYSBuYW1lIGZvciB0aGUgSGVscCByZXNvdXJjZSBhbmQgcHJvdmlkZXMgYSB3ZWIgdXJsCi0gICAgICAgIG9yIGEgbG9jYWwgZmlsZSBhcyBpdHMgc291cmNlLiAgVGhlIHVzZXIgY2FuIGVudGVyIGEgdXJsIG9yIGJyb3dzZQotICAgICAgICBmb3IgdGhlIGZpbGUuCi0KLSAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKLSAgICAgICAgIiIiCi0gICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKLSAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKLSAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKLSAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQotICAgICAgICBzZWxmLmdyYWJfc2V0KCkKLSAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2FuY2VsKQotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKLSAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCi0gICAgICAgIHNlbGYubWVudS5zZXQobWVudUl0ZW0pCi0gICAgICAgIHNlbGYucGF0aC5zZXQoZmlsZVBhdGgpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5Ci0gICAgICAgICNuZWVkcyB0byBiZSBkb25lIGhlcmUgc28gdGhhdCB0aGUgd2luZm9fcmVxd2lkdGggaXMgdmFsaWQKLSAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKLSAgICAgICAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQuIGJlbG93IHBhcmVudCBpZiBydW5uaW5nIGh0ZXN0LgotICAgICAgICBzZWxmLmdlb21ldHJ5KAotICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArCi0gICAgICAgICAgICAgICAgICAgIChwYXJlbnQud2luZm9fd2lkdGgoKS8yIC0gc2VsZi53aW5mb19yZXF3aWR0aCgpLzIpLAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArCi0gICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApKSkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKLSAgICAgICAgc2VsZi5iaW5kKCc8UmV0dXJuPicsIHNlbGYub2spCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQotCi0gICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgotICAgICAgICBzZWxmLm1lbnUgPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5wYXRoID0gU3RyaW5nVmFyKHNlbGYpCi0gICAgICAgIHNlbGYuZm9udFNpemUgPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5mcmFtZU1haW4gPSBGcmFtZShzZWxmLCBib3JkZXJ3aWR0aD0yLCByZWxpZWY9R1JPT1ZFKQotICAgICAgICBzZWxmLmZyYW1lTWFpbi5wYWNrKHNpZGU9VE9QLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBsYWJlbE1lbnUgPSBMYWJlbChzZWxmLmZyYW1lTWFpbiwgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nTWVudSBJdGVtOicpCi0gICAgICAgIHNlbGYuZW50cnlNZW51ID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLm1lbnUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MzApCi0gICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgIGxhYmVsUGF0aCA9IExhYmVsKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdIZWxwIEZpbGUgUGF0aDogRW50ZXIgVVJMIG9yIGJyb3dzZSBmb3IgZmlsZScpCi0gICAgICAgIHNlbGYuZW50cnlQYXRoID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9NDApCi0gICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgIGxhYmVsTWVudS5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIGxhYmVsUGF0aC5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgc2VsZi5lbnRyeVBhdGgucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIGJyb3dzZUJ1dHRvbiA9IEJ1dHRvbihzZWxmLmZyYW1lTWFpbiwgdGV4dD0nQnJvd3NlJywgd2lkdGg9OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5icm93c2VfZmlsZSkKLSAgICAgICAgYnJvd3NlQnV0dG9uLnBhY2socGFkeT0zKQotICAgICAgICBmcmFtZUJ1dHRvbnMgPSBGcmFtZShzZWxmKQotICAgICAgICBmcmFtZUJ1dHRvbnMucGFjayhzaWRlPUJPVFRPTSwgZmlsbD1YKQotICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nT0snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTgsIGRlZmF1bHQ9QUNUSVZFLCAgY29tbWFuZD1zZWxmLm9rKQotICAgICAgICBzZWxmLmJ1dHRvbk9rLmdyaWQocm93PTAsIGNvbHVtbj0wLCBwYWR4PTUscGFkeT01KQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbCA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0NhbmNlbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5jYW5jZWwpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsLmdyaWQocm93PTAsIGNvbHVtbj0xLCBwYWR4PTUsIHBhZHk9NSkKLQotICAgIGRlZiBicm93c2VfZmlsZShzZWxmKToKLSAgICAgICAgZmlsZXR5cGVzID0gWwotICAgICAgICAgICAgKCJIVE1MIEZpbGVzIiwgIiouaHRtICouaHRtbCIsICJURVhUIiksCi0gICAgICAgICAgICAoIlBERiBGaWxlcyIsICIqLnBkZiIsICJURVhUIiksCi0gICAgICAgICAgICAoIldpbmRvd3MgSGVscCBGaWxlcyIsICIqLmNobSIpLAotICAgICAgICAgICAgKCJUZXh0IEZpbGVzIiwgIioudHh0IiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiQWxsIEZpbGVzIiwgIioiKV0KLSAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKQotICAgICAgICBpZiBwYXRoOgotICAgICAgICAgICAgZGlyLCBiYXNlID0gb3MucGF0aC5zcGxpdChwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmFzZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6Ci0gICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksICdEb2MnKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcik6Ci0gICAgICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgIG9wZW5kaWFsb2cgPSB0a0ZpbGVEaWFsb2cuT3BlbihwYXJlbnQ9c2VsZiwgZmlsZXR5cGVzPWZpbGV0eXBlcykKLSAgICAgICAgZmlsZSA9IG9wZW5kaWFsb2cuc2hvdyhpbml0aWFsZGlyPWRpciwgaW5pdGlhbGZpbGU9YmFzZSkKLSAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgIHNlbGYucGF0aC5zZXQoZmlsZSkKLQotICAgIGRlZiBtZW51X29rKHNlbGYpOgotICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBhIHNlbnNpYmxlIG1lbnUgaXRlbSBuYW1lIgotICAgICAgICBtZW51X29rID0gVHJ1ZQotICAgICAgICBtZW51ID0gc2VsZi5tZW51LmdldCgpCi0gICAgICAgIG1lbnUuc3RyaXAoKQotICAgICAgICBpZiBub3QgbWVudToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J01lbnUgSXRlbSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05vIG1lbnUgaXRlbSBzcGVjaWZpZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgICAgICBtZW51X29rID0gRmFsc2UKLSAgICAgICAgZWxpZiBsZW4obWVudSkgPiAzMDoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J01lbnUgSXRlbSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J01lbnUgaXRlbSB0b28gbG9uZzonCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuTGltaXQgMzAgY2hhcmFjdGVycy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgICAgICBtZW51X29rID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIG1lbnVfb2sKLQotICAgIGRlZiBwYXRoX29rKHNlbGYpOgotICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBtZW51IGZpbGUgcGF0aCIKLSAgICAgICAgcGF0aF9vayA9IFRydWUKLSAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKQotICAgICAgICBwYXRoLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IHBhdGg6ICNubyBwYXRoIHNwZWNpZmllZAotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBQYXRoIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gaGVscCBmaWxlIHBhdGggc3BlY2lmaWVkLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeVBhdGguZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIHBhdGhfb2sgPSBGYWxzZQotICAgICAgICBlbGlmIHBhdGguc3RhcnRzd2l0aCgoJ3d3dy4nLCAnaHR0cCcpKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHBhdGhbOjVdID09ICdmaWxlOic6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhbNTpdCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBQYXRoIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbHAgZmlsZSBwYXRoIGRvZXMgbm90IGV4aXN0LicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmVudHJ5UGF0aC5mb2N1c19zZXQoKQotICAgICAgICAgICAgICAgIHBhdGhfb2sgPSBGYWxzZQotICAgICAgICByZXR1cm4gcGF0aF9vawotCi0gICAgZGVmIG9rKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBpZiBzZWxmLm1lbnVfb2soKSBhbmQgc2VsZi5wYXRoX29rKCk6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IChzZWxmLm1lbnUuZ2V0KCkuc3RyaXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aC5nZXQoKS5zdHJpcCgpKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgICAgIHBhdGggPSBzZWxmLnJlc3VsdFsxXQotICAgICAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgoJ3d3dycsICdmaWxlOicsICdodHRwOicsICdodHRwczonKSk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIE1hYyBTYWZhcmkgaW5zaXN0cyBvbiB1c2luZyB0aGUgVVJJIGZvcm0gZm9yIGxvY2FsIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gbGlzdChzZWxmLnJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRbMV0gPSAiZmlsZTovLyIgKyBwYXRoCi0gICAgICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi0gICAgZGVmIGNhbmNlbChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCi0gICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb25maWdfaGVscCcsCi0gICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCi0KLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oR2V0SGVscFNvdXJjZURpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMzc4MzYuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0iIiIKLURpYWxvZyB0aGF0IGFsbG93cyB1c2VyIHRvIHNwZWNpZnkgYSBuZXcgY29uZmlnIGZpbGUgc2VjdGlvbiBuYW1lLgotVXNlZCB0byBnZXQgbmV3IGhpZ2hsaWdodCB0aGVtZSBhbmQga2V5YmluZGluZyBzZXQgbmFtZXMuCi1UaGUgJ3JldHVybiB2YWx1ZScgZm9yIHRoZSBkaWFsb2csIHVzZWQgdHdvIHBsYWNlZCBpbiBjb25maWdEaWFsb2cucHksCi1pcyB0aGUgLnJlc3VsdCBhdHRyaWJ1dGUgc2V0IGluIHRoZSBPayBhbmQgQ2FuY2VsIG1ldGhvZHMuCi0iIiIKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLQotY2xhc3MgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzLCBfaHRlc3Q9RmFsc2UpOgotICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZSAtIHN0cmluZywgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkKLSAgICAgICAgdXNlZF9uYW1lcyAtIHN0cmluZyBjb2xsZWN0aW9uLCBuYW1lcyBhbHJlYWR5IGluIHVzZSBmb3IgdmFsaWRpdHkgY2hlY2sKLSAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKLSAgICAgICAgIiIiCi0gICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKLSAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKLSAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKLSAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQotICAgICAgICBzZWxmLmdyYWJfc2V0KCkKLSAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuQ2FuY2VsKQotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCi0gICAgICAgIHNlbGYudXNlZF9uYW1lcyA9IHVzZWRfbmFtZXMKLSAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQotICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICAjbmVlZHMgdG8gYmUgZG9uZSBoZXJlIHNvIHRoYXQgdGhlIHdpbmZvX3JlcXdpZHRoIGlzIHZhbGlkCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8uY29uZmlnKHdpZHRoPXNlbGYuZnJhbWVNYWluLndpbmZvX3JlcXdpZHRoKCkpCi0gICAgICAgIHNlbGYuZ2VvbWV0cnkoCi0gICAgICAgICAgICAgICAgIislZCslZCIgJSAoCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKLSAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKLSAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDEwMCkKLSAgICAgICAgICAgICAgICApICkgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKLQotICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5uYW1lID0gU3RyaW5nVmFyKHNlbGYucGFyZW50KQotICAgICAgICBzZWxmLmZvbnRTaXplID0gU3RyaW5nVmFyKHNlbGYucGFyZW50KQotICAgICAgICBzZWxmLmZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsIGJvcmRlcndpZHRoPTIsIHJlbGllZj1TVU5LRU4pCi0gICAgICAgIHNlbGYuZnJhbWVNYWluLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8gPSBNZXNzYWdlKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICBwYWR4PTUsIHBhZHk9NSwgdGV4dD1zZWxmLm1lc3NhZ2UpICMsYXNwZWN0PTIwMCkKLSAgICAgICAgZW50cnlOYW1lID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLm5hbWUsIHdpZHRoPTMwKQotICAgICAgICBlbnRyeU5hbWUuZm9jdXNfc2V0KCkKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mby5wYWNrKHBhZHg9NSwgcGFkeT01KSAjLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBlbnRyeU5hbWUucGFjayhwYWR4PTUsIHBhZHk9NSkKLQotICAgICAgICBmcmFtZUJ1dHRvbnMgPSBGcmFtZShzZWxmLCBwYWR5PTIpCi0gICAgICAgIGZyYW1lQnV0dG9ucy5wYWNrKHNpZGU9Qk9UVE9NKQotICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nT2snLAotICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5PaykKLSAgICAgICAgc2VsZi5idXR0b25Pay5wYWNrKHNpZGU9TEVGVCwgcGFkeD01KQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbCA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0NhbmNlbCcsCi0gICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLkNhbmNlbCkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwucGFjayhzaWRlPVJJR0hULCBwYWR4PTUpCi0KLSAgICBkZWYgbmFtZV9vayhzZWxmKToKLSAgICAgICAgJycnIEFmdGVyIHN0cmlwcGluZyBlbnRlcmVkIG5hbWUsIGNoZWNrIHRoYXQgaXQgaXMgYSAgc2Vuc2libGUKLSAgICAgICAgQ29uZmlnUGFyc2VyIGZpbGUgc2VjdGlvbiBuYW1lLiBSZXR1cm4gaXQgaWYgaXQgaXMsICcnIGlmIG5vdC4KLSAgICAgICAgJycnCi0gICAgICAgIG5hbWUgPSBzZWxmLm5hbWUuZ2V0KCkuc3RyaXAoKQotICAgICAgICBpZiBub3QgbmFtZTogI25vIG5hbWUgc3BlY2lmaWVkCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gbmFtZSBzcGVjaWZpZWQuJywgcGFyZW50PXNlbGYpCi0gICAgICAgIGVsaWYgbGVuKG5hbWUpPjMwOiAjbmFtZSB0b28gbG9uZwotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05hbWUgdG9vIGxvbmcuIEl0IHNob3VsZCBiZSBubyBtb3JlIHRoYW4gJysKLSAgICAgICAgICAgICAgICAgICAgJzMwIGNoYXJhY3RlcnMuJywgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBuYW1lID0gJycKLSAgICAgICAgZWxpZiBuYW1lIGluIHNlbGYudXNlZF9uYW1lczoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdUaGlzIG5hbWUgaXMgYWxyZWFkeSBpbiB1c2UuJywgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBuYW1lID0gJycKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotICAgIGRlZiBPayhzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgbmFtZSA9IHNlbGYubmFtZV9vaygpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IG5hbWUKLSAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLSAgICBkZWYgQ2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBzZWxmLnJlc3VsdCA9ICcnCi0gICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb25maWdfbmFtZScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQotCi0gICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCi0gICAgcnVuKEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQppbmRleCBlNjQzOGJmLi4yNjAyMjkzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKQEAgLTIsMzEgKzIsMzUgQEAKIERpYWxvZyBmb3IgYnVpbGRpbmcgVGtpbnRlciBhY2NlbGVyYXRvciBrZXkgYmluZGluZ3MKICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiAKIGNsYXNzIEdldEtleXNEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCx0aXRsZSxhY3Rpb24sY3VycmVudEtleVNlcXVlbmNlcyxfaHRlc3Q9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBhY3Rpb24sIGN1cnJlbnRLZXlTZXF1ZW5jZXMsCisgICAgICAgICAgICAgICAgIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIGFjdGlvbiAtIHN0cmluZywgdGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgZXZlbnQgdGhlc2Uga2V5cyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgIG1hcHBlZCB0bwogICAgICAgICBjdXJyZW50S2V5cyAtIGxpc3QsIGEgbGlzdCBvZiBhbGwga2V5IHNlcXVlbmNlIGxpc3RzIGN1cnJlbnRseSBtYXBwZWQKICAgICAgICAgICAgICAgICAgdG8gdmlydHVhbCBldmVudHMsIGZvciBvdmVybGFwIGNoZWNraW5nCisgICAgICAgIF91dGVzdCAtIGJvb2wsIGRvIG5vdCB3YWl0IHdoZW4gcnVubmluZyB1bml0dGVzdAogICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAogICAgICAgICAiIiIKICAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQorICAgICAgICBzZWxmLndpdGhkcmF3KCkgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQogICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0Usd2lkdGg9RkFMU0UpCisgICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSwgd2lkdGg9RkFMU0UpCiAgICAgICAgIHNlbGYudGl0bGUodGl0bGUpCiAgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKICAgICAgICAgc2VsZi5ncmFiX3NldCgpCiAgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLkNhbmNlbCkKICAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICAgc2VsZi5hY3Rpb249YWN0aW9uCi0gICAgICAgIHNlbGYuY3VycmVudEtleVNlcXVlbmNlcz1jdXJyZW50S2V5U2VxdWVuY2VzCi0gICAgICAgIHNlbGYucmVzdWx0PScnCi0gICAgICAgIHNlbGYua2V5U3RyaW5nPVN0cmluZ1ZhcihzZWxmKQorICAgICAgICBzZWxmLmN1cnJlbnRLZXlTZXF1ZW5jZXMgPSBjdXJyZW50S2V5U2VxdWVuY2VzCisgICAgICAgIHNlbGYucmVzdWx0ID0gJycKKyAgICAgICAgc2VsZi5rZXlTdHJpbmcgPSBTdHJpbmdWYXIoc2VsZikKICAgICAgICAgc2VsZi5rZXlTdHJpbmcuc2V0KCcnKQogICAgICAgICBzZWxmLlNldE1vZGlmaWVyc0ZvclBsYXRmb3JtKCkgIyBzZXQgc2VsZi5tb2RpZmllcnMsIHNlbGYubW9kaWZpZXJfbGFiZWwKICAgICAgICAgc2VsZi5tb2RpZmllcl92YXJzID0gW10KQEAgLTM3LDcgKzQxLDYgQEAKICAgICAgICAgc2VsZi5hZHZhbmNlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuQ3JlYXRlV2lkZ2V0cygpCiAgICAgICAgIHNlbGYuTG9hZEZpbmFsS2V5TGlzdCgpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5CiAgICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCiAgICAgICAgIHNlbGYuZ2VvbWV0cnkoCiAgICAgICAgICAgICAgICAgIislZCslZCIgJSAoCkBAIC00Nyw4ICs1MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApCiAgICAgICAgICAgICAgICAgKSApICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKKyAgICAgICAgaWYgbm90IF91dGVzdDoKKyAgICAgICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCisgICAgICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKIAogICAgIGRlZiBDcmVhdGVXaWRnZXRzKHNlbGYpOgogICAgICAgICBmcmFtZU1haW4gPSBGcmFtZShzZWxmLGJvcmRlcndpZHRoPTIscmVsaWVmPVNVTktFTikKQEAgLTI2MSw2ICsyNjUsNyBAQAogICAgICAgICAgICAga2V5c09LID0gVHJ1ZQogICAgICAgICByZXR1cm4ga2V5c09LCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oR2V0S2V5c0RpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQppbmRleCA1ZjViZDM2Li5mYTQ3YWFhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CkBAIC0xMCwxOCArMTAsMTggQEAKIAogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKIGltcG9ydCB0a2ludGVyLmNvbG9yY2hvb3NlciBhcyB0a0NvbG9yQ2hvb3NlcgogaW1wb3J0IHRraW50ZXIuZm9udCBhcyB0a0ZvbnQKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliLmR5bk9wdGlvbk1lbnVXaWRnZXQgaW1wb3J0IER5bk9wdGlvbk1lbnUKLWZyb20gaWRsZWxpYi5rZXliaW5kaW5nRGlhbG9nIGltcG9ydCBHZXRLZXlzRGlhbG9nCi1mcm9tIGlkbGVsaWIuY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cgaW1wb3J0IEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nCi1mcm9tIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQgaW1wb3J0IEdldEhlbHBTb3VyY2VEaWFsb2cKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnX2tleSBpbXBvcnQgR2V0S2V5c0RpYWxvZworZnJvbSBpZGxlbGliLmR5bm9wdGlvbiBpbXBvcnQgRHluT3B0aW9uTWVudQorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5xdWVyeSBpbXBvcnQgU2VjdGlvbk5hbWUsIEhlbHBTb3VyY2UKIGZyb20gaWRsZWxpYi50YWJiZWRwYWdlcyBpbXBvcnQgVGFiYmVkUGFnZVNldAotZnJvbSBpZGxlbGliLnRleHRWaWV3IGltcG9ydCB2aWV3X3RleHQKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliLnRleHR2aWV3IGltcG9ydCB2aWV3X3RleHQKIAogY2xhc3MgQ29uZmlnRGlhbG9nKFRvcGxldmVsKToKIApAQCAtOTEsNyArOTEsNyBAQAogICAgICAgICBzZWxmLmNyZWF0ZV9hY3Rpb25fYnV0dG9ucygpLnBhY2soc2lkZT1CT1RUT00pCiAKICAgICBkZWYgY3JlYXRlX2FjdGlvbl9idXR0b25zKHNlbGYpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDaGFuZ2luZyB0aGUgZGVmYXVsdCBwYWRkaW5nIG9uIE9TWCByZXN1bHRzIGluIHVucmVhZGFibGUKICAgICAgICAgICAgICMgdGV4dCBpbiB0aGUgYnV0dG9ucwogICAgICAgICAgICAgcGFkZGluZ0FyZ3MgPSB7fQpAQCAtMzQxLDYgKzM0MSw3IEBACiAgICAgICAgIGJ1dHRvblNhdmVDdXN0b21LZXlzID0gQnV0dG9uKAogICAgICAgICAgICAgICAgIGZyYW1lc1sxXSwgdGV4dD0nU2F2ZSBhcyBOZXcgQ3VzdG9tIEtleSBTZXQnLAogICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TYXZlQXNOZXdLZXlTZXQpCisgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzID0gTGFiZWwoZnJhbWVzWzBdLCBiZD0yKQogCiAgICAgICAgICMjd2lkZ2V0IHBhY2tpbmcKICAgICAgICAgI2JvZHkKQEAgLTM2MSw2ICszNjIsNyBAQAogICAgICAgICBzZWxmLnJhZGlvS2V5c0N1c3RvbS5ncmlkKHJvdz0xLCBjb2x1bW49MCwgc3RpY2t5PVcrTlMpCiAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLmdyaWQocm93PTAsIGNvbHVtbj0xLCBzdGlja3k9TlNFVykKICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0N1c3RvbS5ncmlkKHJvdz0xLCBjb2x1bW49MSwgc3RpY2t5PU5TRVcpCisgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9TlNFVywgcGFkeD01LCBwYWR5PTUpCiAgICAgICAgIHNlbGYuYnV0dG9uRGVsZXRlQ3VzdG9tS2V5cy5wYWNrKHNpZGU9TEVGVCwgZmlsbD1YLCBleHBhbmQ9VHJ1ZSwgcGFkeD0yKQogICAgICAgICBidXR0b25TYXZlQ3VzdG9tS2V5cy5wYWNrKHNpZGU9TEVGVCwgZmlsbD1YLCBleHBhbmQ9VHJ1ZSwgcGFkeD0yKQogICAgICAgICBmcmFtZXNbMF0ucGFjayhzaWRlPVRPUCwgZmlsbD1CT1RILCBleHBhbmQ9VHJ1ZSkKQEAgLTQ2NCwyNCArNDY2LDI0IEBACiAgICAgICAgIHJldHVybiBmcmFtZQogCiAgICAgZGVmIEF0dGFjaFZhckNhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc2VsZi5mb250U2l6ZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuZm9udEJvbGQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5zcGFjZU51bS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKLSAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY29sb3VyKQotICAgICAgICBzZWxmLmJ1aWx0aW5UaGVtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUpCi0gICAgICAgIHNlbGYuY3VzdG9tVGhlbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCi0gICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfdGhlbWVJc0J1aWx0aW4pCi0gICAgICAgIHNlbGYuaGlnaGxpZ2h0VGFyZ2V0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2hpZ2hsaWdodFRhcmdldCkKLSAgICAgICAgc2VsZi5rZXlCaW5kaW5nLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCi0gICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpbktleXMpCi0gICAgICAgIHNlbGYuY3VzdG9tS2V5cy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21LZXlzKQotICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQotICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3dpbldpZHRoKQotICAgICAgICBzZWxmLndpbkhlaWdodC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF93aW5IZWlnaHQpCi0gICAgICAgIHNlbGYuc3RhcnR1cEVkaXQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCi0gICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYXV0b1NhdmUpCi0gICAgICAgIHNlbGYuZW5jb2RpbmcudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZW5jb2RpbmcpCisgICAgICAgIHNlbGYuZm9udFNpemUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5mb250Qm9sZC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuc3BhY2VOdW0udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKKyAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jb2xvdXIpCisgICAgICAgIHNlbGYuYnVpbHRpblRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpblRoZW1lKQorICAgICAgICBzZWxmLmN1c3RvbVRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCisgICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF90aGVtZUlzQnVpbHRpbikKKyAgICAgICAgc2VsZi5oaWdobGlnaHRUYXJnZXQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9oaWdobGlnaHRUYXJnZXQpCisgICAgICAgIHNlbGYua2V5QmluZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCisgICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluS2V5cykKKyAgICAgICAgc2VsZi5jdXN0b21LZXlzLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tS2V5cykKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQorICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luV2lkdGgpCisgICAgICAgIHNlbGYud2luSGVpZ2h0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luSGVpZ2h0KQorICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCisgICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9hdXRvU2F2ZSkKKyAgICAgICAgc2VsZi5lbmNvZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2VuY29kaW5nKQogCiAgICAgZGVmIHJlbW92ZV92YXJfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICAiUmVtb3ZlIGNhbGxiYWNrcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4iCkBAIC00OTIsNyArNDk0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmtleUJpbmRpbmcsIHNlbGYuYnVpbHRpbktleXMsIHNlbGYuY3VzdG9tS2V5cywKICAgICAgICAgICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLCBzZWxmLndpbldpZHRoLCBzZWxmLndpbkhlaWdodCwKICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LCBzZWxmLmF1dG9TYXZlLCBzZWxmLmVuY29kaW5nLCk6Ci0gICAgICAgICAgICB2YXIudHJhY2VfdmRlbGV0ZSgndycsIHZhci50cmFjZV92aW5mbygpWzBdWzFdKQorICAgICAgICAgICAgdmFyLnRyYWNlX3JlbW92ZSgnd3JpdGUnLCB2YXIudHJhY2VfaW5mbygpWzBdWzFdKQogCiAgICAgZGVmIFZhckNoYW5nZWRfZm9udChzZWxmLCAqcGFyYW1zKToKICAgICAgICAgJycnV2hlbiBvbmUgZm9udCBhdHRyaWJ1dGUgY2hhbmdlcywgc2F2ZSB0aGVtIGFsbCwgYXMgdGhleSBhcmUKQEAgLTUxNCwxMCArNTE2LDExIEBACiAgICAgICAgIHNlbGYuT25OZXdDb2xvdXJTZXQoKQogCiAgICAgZGVmIFZhckNoYW5nZWRfYnVpbHRpblRoZW1lKHNlbGYsICpwYXJhbXMpOgorICAgICAgICBvbGR0aGVtZXMgPSAoJ0lETEUgQ2xhc3NpYycsICdJRExFIE5ldycpCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluVGhlbWUuZ2V0KCkKLSAgICAgICAgaWYgdmFsdWUgPT0gJ0lETEUgRGFyayc6Ci0gICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpICE9ICdJRExFIE5ldyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgJ0lETEUgQ2xhc3NpYycpCisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgb2xkdGhlbWVzWzBdKQogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lMicsIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX3RoZW1lLmNvbmZpZyh0ZXh0PSdOZXcgdGhlbWUsIHNlZSBIZWxwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9JyM1MDAwMDAnKQpAQCAtNTU3LDggKzU2MCwyMyBAQAogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnZXh0ZW5zaW9ucycsIGV4dEtleWJpbmRTZWN0aW9uLCBldmVudCwgdmFsdWUpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9idWlsdGluS2V5cyhzZWxmLCAqcGFyYW1zKToKKyAgICAgICAgb2xka2V5cyA9ICgKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgV2luZG93cycsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIFVuaXgnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBNYWMnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBPU1gnLAorICAgICAgICApCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluS2V5cy5nZXQoKQotICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIHZhbHVlKQorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnKSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIG9sZGtleXNbMF0pCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PSdOZXcga2V5IHNldCwgc2VlIEhlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPScjNTAwMDAwJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgdmFsdWUpCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCAnJykKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PScnLCBmZz0nYmxhY2snKQogICAgICAgICBzZWxmLkxvYWRLZXlzTGlzdCh2YWx1ZSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2N1c3RvbUtleXMoc2VsZiwgKnBhcmFtcyk6CkBAIC02ODMsNyArNzAxLDcgQEAKICAgICBkZWYgR2V0TmV3S2V5c05hbWUoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHVzZWROYW1lcyA9IChpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgndXNlcicsICdrZXlzJykgKwogICAgICAgICAgICAgICAgIGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2tleXMnKSkKLSAgICAgICAgbmV3S2V5U2V0ID0gR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coCisgICAgICAgIG5ld0tleVNldCA9IFNlY3Rpb25OYW1lKAogICAgICAgICAgICAgICAgIHNlbGYsICdOZXcgQ3VzdG9tIEtleSBTZXQnLCBtZXNzYWdlLCB1c2VkTmFtZXMpLnJlc3VsdAogICAgICAgICByZXR1cm4gbmV3S2V5U2V0CiAKQEAgLTc2Nyw4ICs3ODUsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgaXRlbUxpc3RbMF0pCiAgICAgICAgICNyZXZlcnQgdG8gZGVmYXVsdCBrZXkgc2V0Ci0gICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4uc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQotICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQorICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKSkKICAgICAgICAgI3VzZXIgY2FuJ3QgYmFjayBvdXQgb2YgdGhlc2UgY2hhbmdlcywgdGhleSBtdXN0IGJlIGFwcGxpZWQgbm93CiAgICAgICAgIHNlbGYuU2F2ZUFsbENoYW5nZWRDb25maWdzKCkKICAgICAgICAgc2VsZi5BY3RpdmF0ZUNvbmZpZ0NoYW5nZXMoKQpAQCAtODM2LDcgKzg1Niw3IEBACiAgICAgZGVmIEdldE5ld1RoZW1lTmFtZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgdXNlZE5hbWVzID0gKGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCd1c2VyJywgJ2hpZ2hsaWdodCcpICsKICAgICAgICAgICAgICAgICBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdoaWdobGlnaHQnKSkKLSAgICAgICAgbmV3VGhlbWUgPSBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZygKKyAgICAgICAgbmV3VGhlbWUgPSBTZWN0aW9uTmFtZSgKICAgICAgICAgICAgICAgICBzZWxmLCAnTmV3IEN1c3RvbSBUaGVtZScsIG1lc3NhZ2UsIHVzZWROYW1lcykucmVzdWx0CiAgICAgICAgIHJldHVybiBuZXdUaGVtZQogCkBAIC05MzksNyArOTU5LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmJ1dHRvbkhlbHBMaXN0UmVtb3ZlLmNvbmZpZyhzdGF0ZT1ESVNBQkxFRCkKIAogICAgIGRlZiBIZWxwTGlzdEl0ZW1BZGQoc2VsZik6Ci0gICAgICAgIGhlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKHNlbGYsICdOZXcgSGVscCBTb3VyY2UnKS5yZXN1bHQKKyAgICAgICAgaGVscFNvdXJjZSA9IEhlbHBTb3VyY2Uoc2VsZiwgJ05ldyBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkucmVzdWx0CiAgICAgICAgIGlmIGhlbHBTb3VyY2U6CiAgICAgICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdC5hcHBlbmQoKGhlbHBTb3VyY2VbMF0sIGhlbHBTb3VyY2VbMV0pKQogICAgICAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoRU5ELCBoZWxwU291cmNlWzBdKQpAQCAtOTQ5LDE2ICs5NzAsMTcgQEAKICAgICBkZWYgSGVscExpc3RJdGVtRWRpdChzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCiAgICAgICAgIGhlbHBTb3VyY2UgPSBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdCi0gICAgICAgIG5ld0hlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKAotICAgICAgICAgICAgICAgIHNlbGYsICdFZGl0IEhlbHAgU291cmNlJywgbWVudUl0ZW09aGVscFNvdXJjZVswXSwKLSAgICAgICAgICAgICAgICBmaWxlUGF0aD1oZWxwU291cmNlWzFdKS5yZXN1bHQKLSAgICAgICAgaWYgKG5vdCBuZXdIZWxwU291cmNlKSBvciAobmV3SGVscFNvdXJjZSA9PSBoZWxwU291cmNlKToKLSAgICAgICAgICAgIHJldHVybiAjbm8gY2hhbmdlcwotICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdID0gbmV3SGVscFNvdXJjZQotICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCi0gICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KGl0ZW1JbmRleCwgbmV3SGVscFNvdXJjZVswXSkKLSAgICAgICAgc2VsZi5VcGRhdGVVc2VySGVscENoYW5nZWRJdGVtcygpCi0gICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQorICAgICAgICBuZXdIZWxwU291cmNlID0gSGVscFNvdXJjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAnRWRpdCBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgbWVudWl0ZW09aGVscFNvdXJjZVswXSwKKyAgICAgICAgICAgICAgICBmaWxlcGF0aD1oZWxwU291cmNlWzFdLAorICAgICAgICAgICAgICAgICkucmVzdWx0CisgICAgICAgIGlmIG5ld0hlbHBTb3VyY2UgYW5kIG5ld0hlbHBTb3VyY2UgIT0gaGVscFNvdXJjZToKKyAgICAgICAgICAgIHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0gPSBuZXdIZWxwU291cmNlCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChpdGVtSW5kZXgsIG5ld0hlbHBTb3VyY2VbMF0pCisgICAgICAgICAgICBzZWxmLlVwZGF0ZVVzZXJIZWxwQ2hhbmdlZEl0ZW1zKCkKKyAgICAgICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQogCiAgICAgZGVmIEhlbHBMaXN0SXRlbVJlbW92ZShzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCkBAIC05OTYsNyArMTAxOCw4IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMjZm9udCBzaXplIGRyb3Bkb3duCiAgICAgICAgIHNlbGYub3B0TWVudUZvbnRTaXplLlNldE1lbnUoKCc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicpLCBmb250U2l6ZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNScsICcyOScsICczNCcsICc0MCcpLCBmb250U2l6ZSApCiAgICAgICAgICMjZm9udFdlaWdodAogICAgICAgICBzZWxmLmZvbnRCb2xkLnNldChmb250Qm9sZCkKICAgICAgICAgIyNmb250IHNhbXBsZQpAQCAtMTA2NSw3ICsxMDg4LDcgQEAKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgY3VycmVudE9wdGlvbikKICAgICAgICAgICAgIGl0ZW1MaXN0ID0gaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAna2V5cycpCiAgICAgICAgICAgICBpdGVtTGlzdC5zb3J0KCkKLSAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLlNldE1lbnUoaXRlbUxpc3QsIGl0ZW1MaXN0WzBdKQorICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uU2V0TWVudShpdGVtTGlzdCwgaWRsZUNvbmYuZGVmYXVsdF9rZXlzKCkpCiAgICAgICAgIHNlbGYuU2V0S2V5c1R5cGUoKQogICAgICAgICAjI2xvYWQga2V5c2V0IGVsZW1lbnQgbGlzdAogICAgICAgICBrZXlTZXROYW1lID0gaWRsZUNvbmYuQ3VycmVudEtleXMoKQpAQCAtMTM2NywxMiArMTM5MCwxOCBAQAogW0NhbmNlbF0gb25seSBjYW5jZWxzIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCBzYXZlLgogJycnCiBoZWxwX3BhZ2VzID0gewotICAgICdIaWdobGlnaHRpbmcnOicnJworICAgICdIaWdobGlnaHRpbmcnOiAnJycKIEhpZ2hsaWdodGluZzoKIFRoZSBJRExFIERhcmsgY29sb3IgdGhlbWUgaXMgbmV3IGluIE9jdG9iZXIgMjAxNS4gIEl0IGNhbiBvbmx5CiBiZSB1c2VkIHdpdGggb2xkZXIgSURMRSByZWxlYXNlcyBpZiBpdCBpcyBzYXZlZCBhcyBhIGN1c3RvbQogdGhlbWUsIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLScnJworJycnLAorICAgICdLZXlzJzogJycnCitLZXlzOgorVGhlIElETEUgTW9kZXJuIFVuaXgga2V5IHNldCBpcyBuZXcgaW4gSnVuZSAyMDE2LiAgSXQgY2FuIG9ubHkKK2JlIHVzZWQgd2l0aCBvbGRlciBJRExFIHJlbGVhc2VzIGlmIGl0IGlzIHNhdmVkIGFzIGEgY3VzdG9tCitrZXkgc2V0LCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisnJycsCiB9CiAKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9EZWJ1Z2dlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdnZXIucHkKaW5kZXggZDVlMjE3ZC4uMTE0ZDBkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdnZXIucHkKQEAgLTEsOSArMSwxMiBAQAotaW1wb3J0IG9zCiBpbXBvcnQgYmRiCitpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuV2luZG93TGlzdCBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKLWZyb20gaWRsZWxpYi5TY3JvbGxlZExpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5zY3JvbGxlZGxpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAorZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIAogY2xhc3MgSWRiKGJkYi5CZGIpOgpAQCAtMzQsOCArMzcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmV2X2ZyYW1lID0gZnJhbWUuZl9iYWNrCi0gICAgICAgICAgICBpZiBwcmV2X2ZyYW1lLmZfY29kZS5jb19maWxlbmFtZS5jb3VudCgnRGVidWdnZXIucHknKToKLSAgICAgICAgICAgICAgICAjICh0aGF0IHRlc3Qgd2lsbCBjYXRjaCBib3RoIERlYnVnZ2VyLnB5IGFuZCBSZW1vdGVEZWJ1Z2dlci5weSkKKyAgICAgICAgICAgIHByZXZfbmFtZSA9IHByZXZfZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiAnaWRsZWxpYicgaW4gcHJldl9uYW1lIGFuZCAnZGVidWdnZXInIGluIHByZXZfbmFtZToKKyAgICAgICAgICAgICAgICAjIGNhdGNoIGJvdGggaWRsZWxpYi9kZWJ1Z2dlci5weSBhbmQgaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CisgICAgICAgICAgICAgICAgIyBvbiBib3RoIHBvc2l4IGFuZCB3aW5kb3dzCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbl9ycGNfY29kZShwcmV2X2ZyYW1lKQogCkBAIC0zNzAsNyArMzc1LDcgQEAKIGNsYXNzIFN0YWNrVmlld2VyKFNjcm9sbGVkTGlzdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCBmbGlzdCwgZ3VpKToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQXQgbGVhc3Qgb24gd2l0aCB0aGUgc3RvY2sgQXF1YVRrIHZlcnNpb24gb24gT1NYIDEwLjQgeW91J2xsCiAgICAgICAgICAgICAjIGdldCBhIHNoYWtpbmcgR1VJIHRoYXQgZXZlbnR1YWxseSBraWxscyBJRExFIGlmIHRoZSB3aWR0aAogICAgICAgICAgICAgIyBhcmd1bWVudCBpcyBzcGVjaWZpZWQuCkBAIC01MDIsNyArNTA3LDcgQEAKICAgICAgICAgICAgICMKICAgICAgICAgICAgICMgVGhlcmUgaXMgYWxzbyBhbiBvYnNjdXJlIGJ1ZyBpbiBzb3J0ZWQoZGljdCkgd2hlcmUgdGhlCiAgICAgICAgICAgICAjIGludGVycHJldGVyIGdldHMgaW50byBhIGxvb3AgcmVxdWVzdGluZyBub24tZXhpc3RpbmcgZGljdFswXSwKLSAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIFJlbW90ZURlYnVnZ2VyLkRpY3RQcm94eS4KKyAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIGRlYnVnZ2VyX3IuRGljdFByb3h5LgogICAgICAgICAgICAgIyMjCiAgICAgICAgICAgICBrZXlzX2xpc3QgPSBkaWN0LmtleXMoKQogICAgICAgICAgICAgbmFtZXMgPSBzb3J0ZWQoa2V5c19saXN0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CmluZGV4IGJlMjI2MmYuLmJjOTcxMjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKQEAgLTIxLDcgKzIxLDcgQEAKICIiIgogCiBpbXBvcnQgdHlwZXMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKIAogZGVidWdnaW5nID0gMAogCkBAIC0xODcsNyArMTg3LDcgQEAKIAogICAgICIiIgogICAgIGd1aV9wcm94eSA9IEdVSVByb3h5KHJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKLSAgICBpZGIgPSBEZWJ1Z2dlci5JZGIoZ3VpX3Byb3h5KQorICAgIGlkYiA9IGRlYnVnZ2VyLklkYihndWlfcHJveHkpCiAgICAgaWRiX2FkYXAgPSBJZGJBZGFwdGVyKGlkYikKICAgICBycGNoYW5kbGVyLnJlZ2lzdGVyKGlkYl9hZGFwX29pZCwgaWRiX2FkYXApCiAgICAgcmV0dXJuIGlkYl9hZGFwX29pZApAQCAtMzYyLDcgKzM2Miw3IEBACiAgICAgaWRiX2FkYXBfb2lkID0gcnBjY2x0LnJlbW90ZWNhbGwoImV4ZWMiLCAic3RhcnRfdGhlX2RlYnVnZ2VyIixcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndWlfYWRhcF9vaWQsKSwge30pCiAgICAgaWRiX3Byb3h5ID0gSWRiUHJveHkocnBjY2x0LCBweXNoZWxsLCBpZGJfYWRhcF9vaWQpCi0gICAgZ3VpID0gRGVidWdnZXIuRGVidWdnZXIocHlzaGVsbCwgaWRiX3Byb3h5KQorICAgIGd1aSA9IGRlYnVnZ2VyLkRlYnVnZ2VyKHB5c2hlbGwsIGlkYl9wcm94eSkKICAgICBndWlfYWRhcCA9IEdVSUFkYXB0ZXIocnBjY2x0LCBndWkpCiAgICAgcnBjY2x0LnJlZ2lzdGVyKGd1aV9hZGFwX29pZCwgZ3VpX2FkYXApCiAgICAgcmV0dXJuIGd1aQpAQCAtMzczLDcgKzM3Myw3IEBACiAgICAgUmVxdWVzdCB0aGF0IHRoZSBSUENTZXJ2ZXIgc2h1dCBkb3duIHRoZSBzdWJwcm9jZXNzIGRlYnVnZ2VyIGFuZCBsaW5rLgogICAgIFVucmVnaXN0ZXIgdGhlIEdVSUFkYXB0ZXIsIHdoaWNoIHdpbGwgY2F1c2UgYSBHQyBvbiB0aGUgSWRsZSBwcm9jZXNzCiAgICAgZGVidWdnZXIgYW5kIFJQQyBsaW5rIG9iamVjdHMuICAoVGhlIHNlY29uZCByZWZlcmVuY2UgdG8gdGhlIGRlYnVnZ2VyIEdVSQotICAgIGlzIGRlbGV0ZWQgaW4gUHlTaGVsbC5jbG9zZV9yZW1vdGVfZGVidWdnZXIoKS4pCisgICAgaXMgZGVsZXRlZCBpbiBweXNoZWxsLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcigpLikKIAogICAgICIiIgogICAgIGNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIocnBjY2x0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnb2JqLnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnb2JqLnB5CmluZGV4IDdiNTdhYTQuLmI3MGIxM2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdvYmoucHkKQEAgLTgsMTMgKzgsMTAgQEAKIAogIyBYWFggVE8gRE86CiAjIC0gZm9yIGNsYXNzZXMvbW9kdWxlcywgYWRkICJvcGVuIHNvdXJjZSIgdG8gb2JqZWN0IGJyb3dzZXIKLQotaW1wb3J0IHJlCi0KLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbSwgVHJlZU5vZGUsIFNjcm9sbGVkQ2FudmFzCi0KIGZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgogCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0sIFRyZWVOb2RlLCBTY3JvbGxlZENhbnZhcworCiBteXJlcHIgPSBSZXByKCkKIG15cmVwci5tYXhzdHJpbmcgPSAxMDAKIG15cmVwci5tYXhvdGhlciA9IDEwMApAQCAtMTIyLDIxICsxMTksMjAgQEAKICAgICByZXR1cm4gYyhsYWJlbHRleHQsIG9iamVjdCwgc2V0ZnVuY3Rpb24pCiAKIAotZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOgorZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHN5cwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgT2JqZWN0QnJvd3NlciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHJvb3QuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQotICAgIHJvb3QuZm9jdXNfc2V0KCkKLSAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBkZWJ1ZyBvYmplY3QgYnJvd3NlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgMTAwLCB5ICsgMTc1KSkKKyAgICB0b3AuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQorICAgIHRvcC5mb2N1c19zZXQoKQorICAgIHNjID0gU2Nyb2xsZWRDYW52YXModG9wLCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCiAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIpCiAgICAgaXRlbSA9IG1ha2Vfb2JqZWN0dHJlZWl0ZW0oInN5cyIsIHN5cykKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUudXBkYXRlKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlbW90ZU9iamVjdEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZW1vdGVPYmplY3RCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9EZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9kZWxlZ2F0b3IucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVsZWdhdG9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5IGIvTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2R5bm9wdGlvbi5weQppbmRleCA1MTViNGJhLi45YzZmZmE0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5CisrKyBiL0xpYi9pZGxlbGliL2R5bm9wdGlvbi5weQpAQCAtMyw2ICszLDcgQEAKIGFuZCBzZXR0aW5nIG9mIGhpZ2hsaWdodHRoaWNrbmVzcwogIiIiCiBpbXBvcnQgY29weQorCiBmcm9tIHRraW50ZXIgaW1wb3J0IE9wdGlvbk1lbnUsIF9zZXRpdCwgU3RyaW5nVmFyLCBCdXR0b24KIAogY2xhc3MgRHluT3B0aW9uTWVudShPcHRpb25NZW51KToKQEAgLTM0LDEyICszNSwxMiBAQAogICAgICAgICAgICAgc2VsZi52YXJpYWJsZS5zZXQodmFsdWUpCiAKIGRlZiBfZHluX29wdGlvbl9tZW51KHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCAjICsgU3RyaW5nVmFyLCBCdXR0b24KIAotICAgIHRvcCA9IFRvcGxldmVsKCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXRzIGR5bmFtaWMgb3B0aW9uIG1lbnUiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdG9wLmZvY3VzX3NldCgpCiAKICAgICB2YXIgPSBTdHJpbmdWYXIodG9wKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvZWRpdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZWRpdG9yLnB5CmluZGV4IDk5NDRkYTMuLmFlNDc1Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9lZGl0b3IucHkKQEAgLTYsMjggKzYsMzQgQEAKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpbXBvcnQgdG9rZW5pemUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3ZWJicm93c2VyCiAKLWZyb20gaWRsZWxpYi5NdWx0aUNhbGwgaW1wb3J0IE11bHRpQ2FsbENyZWF0b3IKLWZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgR3JlcERpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBSZXBsYWNlRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5UGFyc2UKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZywgdGV4dFZpZXcsIGNvbmZpZ0RpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgoraW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZ3JlcAogZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIubXVsdGljYWxsIGltcG9ydCBNdWx0aUNhbGxDcmVhdG9yCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5cGFyc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcmVwbGFjZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2gKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgd2luZG93cwogCiAjIFRoZSBkZWZhdWx0IHRhYiBzZXR0aW5nIGZvciBhIFRleHQgd2lkZ2V0LCBpbiBhdmVyYWdlLXdpZHRoIGNoYXJhY3RlcnMuCiBUS19UQUJXSURUSF9ERUZBVUxUID0gOAotCiBfcHlfdmVyc2lvbiA9ICcgKCVzKScgJSBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpCiAKKwogZGVmIF9zcGhpbnhfdmVyc2lvbigpOgogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwpAQCAtNDAsNjMgKzQ2LDE2IEBACiAgICAgcmV0dXJuIHJlbGVhc2UKIAogCi1jbGFzcyBIZWxwRGlhbG9nKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZSAgICAgICMgcGFyZW50IG9mIGhlbHAgd2luZG93Ci0gICAgICAgIHNlbGYuZGxnID0gTm9uZSAgICAgICAgICMgdGhlIGhlbHAgd2luZG93IGl0ZXNlbGYKLQotICAgIGRlZiBkaXNwbGF5KHNlbGYsIHBhcmVudCwgbmVhcj1Ob25lKToKLSAgICAgICAgIiIiIERpc3BsYXkgdGhlIGhlbHAgZGlhbG9nLgotCi0gICAgICAgICAgICBwYXJlbnQgLSBwYXJlbnQgd2lkZ2V0IGZvciB0aGUgaGVscCB3aW5kb3cKLQotICAgICAgICAgICAgbmVhciAtIGEgVG9wbGV2ZWwgd2lkZ2V0IChlLmcuIEVkaXRvcldpbmRvdyBvciBQeVNoZWxsKQotICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhcyBhIHJlZmVyZW5jZSBmb3IgcGxhY2luZyB0aGUgaGVscCB3aW5kb3cKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncyBhcyB3Ci0gICAgICAgIHcud2FybigiRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS5cbiIKLSAgICAgICAgICAgICAgICJJdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLlxuIgotICAgICAgICAgICAgICAgIkl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHByaXZhdGUgaGVscC5IZWxwV2luZG93XG4iLAotICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIHNlbGYuZGxnIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNob3dfZGlhbG9nKHBhcmVudCkKLSAgICAgICAgaWYgbmVhcjoKLSAgICAgICAgICAgIHNlbGYubmVhcndpbmRvdyhuZWFyKQotCi0gICAgZGVmIHNob3dfZGlhbG9nKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIGZuPW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksJ2hlbHAudHh0JykKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcgPSB0ZXh0Vmlldy52aWV3X2ZpbGUocGFyZW50LCdIZWxwJyxmbiwgbW9kYWw9RmFsc2UpCi0gICAgICAgIGRsZy5iaW5kKCc8RGVzdHJveT4nLCBzZWxmLmRlc3Ryb3ksICcrJykKLQotICAgIGRlZiBuZWFyd2luZG93KHNlbGYsIG5lYXIpOgotICAgICAgICAjIFBsYWNlIHRoZSBoZWxwIGRpYWxvZyBuZWFyIHRoZSB3aW5kb3cgc3BlY2lmaWVkIGJ5IHBhcmVudC4KLSAgICAgICAgIyBOb3RlIC0gdGhpcyBtYXkgbm90IHJlcG9zaXRpb24gdGhlIHdpbmRvdyBpbiBNZXRhY2l0eQotICAgICAgICAjICBpZiAiL2FwcHMvbWV0YWNpdHkvZ2VuZXJhbC9kaXNhYmxlX3dvcmthcm91bmRzIiBpcyBlbmFibGVkCi0gICAgICAgIGRsZyA9IHNlbGYuZGxnCi0gICAgICAgIGdlb20gPSAobmVhci53aW5mb19yb290eCgpICsgMTAsIG5lYXIud2luZm9fcm9vdHkoKSArIDEwKQotICAgICAgICBkbGcud2l0aGRyYXcoKQotICAgICAgICBkbGcuZ2VvbWV0cnkoIj0rJWQrJWQiICUgZ2VvbSkKLSAgICAgICAgZGxnLmRlaWNvbmlmeSgpCi0gICAgICAgIGRsZy5saWZ0KCkKLQotICAgIGRlZiBkZXN0cm95KHNlbGYsIGV2PU5vbmUpOgotICAgICAgICBzZWxmLmRsZyA9IE5vbmUKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0KLWhlbHBEaWFsb2cgPSBIZWxwRGlhbG9nKCkgICMgc2luZ2xldG9uIGluc3RhbmNlLCBubyBsb25nZXIgdXNlZAotCi0KIGNsYXNzIEVkaXRvcldpbmRvdyhvYmplY3QpOgotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgZnJvbSBpZGxlbGliLkNvbG9yRGVsZWdhdG9yIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCi0gICAgZnJvbSBpZGxlbGliLlVuZG9EZWxlZ2F0b3IgaW1wb3J0IFVuZG9EZWxlZ2F0b3IKLSAgICBmcm9tIGlkbGVsaWIuSU9CaW5kaW5nIGltcG9ydCBJT0JpbmRpbmcsIGZpbGVzeXN0ZW1lbmNvZGluZywgZW5jb2RpbmcKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IEJpbmRpbmdzCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICBmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCisgICAgZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKKyAgICBmcm9tIGlkbGVsaWIuaW9tZW51IGltcG9ydCBJT0JpbmRpbmcsIGVuY29kaW5nCisgICAgZnJvbSBpZGxlbGliIGltcG9ydCBtYWlubWVudQogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKLSAgICBmcm9tIGlkbGVsaWIuTXVsdGlTdGF0dXNCYXIgaW1wb3J0IE11bHRpU3RhdHVzQmFyCisgICAgZnJvbSBpZGxlbGliLnN0YXR1c2JhciBpbXBvcnQgTXVsdGlTdGF0dXNCYXIKIAorICAgIGZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyBmb3IgZmlsZSBuYW1lcwogICAgIGhlbHBfdXJsID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIGZpbGVuYW1lPU5vbmUsIGtleT1Ob25lLCByb290PU5vbmUpOgpAQCAtMTM2LDExICs5NSwxMSBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBzeXMucHMxID0gJz4+PiAnCiAgICAgICAgIHNlbGYubWVudWJhciA9IE1lbnUocm9vdCkKLSAgICAgICAgc2VsZi50b3AgPSB0b3AgPSBXaW5kb3dMaXN0Lkxpc3RlZFRvcGxldmVsKHJvb3QsIG1lbnU9c2VsZi5tZW51YmFyKQorICAgICAgICBzZWxmLnRvcCA9IHRvcCA9IHdpbmRvd3MuTGlzdGVkVG9wbGV2ZWwocm9vdCwgbWVudT1zZWxmLm1lbnViYXIpCiAgICAgICAgIGlmIGZsaXN0OgogICAgICAgICAgICAgc2VsZi50a2ludGVyX3ZhcnMgPSBmbGlzdC52YXJzCiAgICAgICAgICAgICAjc2VsZi50b3AuaW5zdGFuY2VfZGljdCBtYWtlcyBmbGlzdC5pbnZlcnNlZGljdCBhdmFpbGFibGUgdG8KLSAgICAgICAgICAgICNjb25maWdEaWFsb2cucHkgc28gaXQgY2FuIGFjY2VzcyBhbGwgRWRpdG9yV2luZG93IGluc3RhbmNlcworICAgICAgICAgICAgI2NvbmZpZ2RpYWxvZy5weSBzbyBpdCBjYW4gYWNjZXNzIGFsbCBFZGl0b3JXaW5kb3cgaW5zdGFuY2VzCiAgICAgICAgICAgICBzZWxmLnRvcC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGtpbnRlcl92YXJzID0ge30gICMga2V5czogVGtpbnRlciBldmVudCBuYW1lcwpAQCAtMTU4LDEzICsxMTcsMTAgQEAKICAgICAgICAgICAgICAgICAnd3JhcCc6ICdub25lJywKICAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0dGhpY2tuZXNzJzogMCwKICAgICAgICAgICAgICAgICAnd2lkdGgnOiBzZWxmLndpZHRoLAotICAgICAgICAgICAgICAgICdoZWlnaHQnOiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnRWRpdG9yV2luZG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLCB0eXBlPSdpbnQnKX0KLSAgICAgICAgaWYgVGtWZXJzaW9uID49IDguNToKLSAgICAgICAgICAgICMgU3RhcnRpbmcgd2l0aCB0ayA4LjUgd2UgaGF2ZSB0byBzZXQgdGhlIG5ldyB0YWJzdHlsZSBvcHRpb24KLSAgICAgICAgICAgICMgdG8gJ3dvcmRwcm9jZXNzb3InIHRvIGFjaGlldmUgdGhlIHNhbWUgZGlzcGxheSBvZiB0YWJzIGFzIGluCi0gICAgICAgICAgICAjIG9sZGVyIHRrIHZlcnNpb25zLgotICAgICAgICAgICAgdGV4dF9vcHRpb25zWyd0YWJzdHlsZSddID0gJ3dvcmRwcm9jZXNzb3InCisgICAgICAgICAgICAgICAgJ3RhYnN0eWxlJzogJ3dvcmRwcm9jZXNzb3InLCAgIyBuZXcgaW4gOC41CisgICAgICAgICAgICAgICAgJ2hlaWdodCc6IGlkbGVDb25mLkdldE9wdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdtYWluJywgJ0VkaXRvcldpbmRvdycsICdoZWlnaHQnLCB0eXBlPSdpbnQnKSwKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKFRleHQpKHRleHRfZnJhbWUsICoqdGV4dF9vcHRpb25zKQogICAgICAgICBzZWxmLnRvcC5mb2N1c2VkX3dpZGdldCA9IHNlbGYudGV4dAogCkBAIC0xNzMsNyArMTI5LDcgQEAKIAogICAgICAgICBzZWxmLnRvcC5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2xvc2UpCiAgICAgICAgIHNlbGYudG9wLmJpbmQoIjw8Y2xvc2Utd2luZG93Pj4iLCBzZWxmLmNsb3NlX2V2ZW50KQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDb21tYW5kLVcgb24gZWRpdG9yd2luZG93cyBkb2Vzbid0IHdvcmsgd2l0aG91dCB0aGlzLgogICAgICAgICAgICAgdGV4dC5iaW5kKCc8PGNsb3NlLXdpbmRvdz4+Jywgc2VsZi5jbG9zZV9ldmVudCkKICAgICAgICAgICAgICMgU29tZSBPUyBYIHN5c3RlbXMgaGF2ZSBvbmx5IG9uZSBtb3VzZSBidXR0b24sIHNvIHVzZQpAQCAtMzA5LDcgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAgbWVudS5hZGRfc2VwYXJhdG9yKCkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCiAgICAgICAgICAgICBzZWxmLndtZW51X2VuZCA9IGVuZAotICAgICAgICAgICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAKICAgICAgICAgIyBTb21lIGFic3RyYWN0aW9ucyBzbyBJRExFIGV4dGVuc2lvbnMgYXJlIGNyb3NzLUlERQogICAgICAgICBzZWxmLmFza3llc25vID0gdGtNZXNzYWdlQm94LmFza3llc25vCkBAIC00MTgsNyArMzc0LDcgQEAKICAgICAgICAgICAgIHVuZGVybGluZSwgbGFiZWwgPSBwcmVwc3RyKGxhYmVsKQogICAgICAgICAgICAgbWVudWRpY3RbbmFtZV0gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPW5hbWUsIHRlYXJvZmY9MCkKICAgICAgICAgICAgIG1iYXIuYWRkX2Nhc2NhZGUobGFiZWw9bGFiZWwsIG1lbnU9bWVudSwgdW5kZXJsaW5lPXVuZGVybGluZSkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NhcmJvblRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NhcmJvblRrKCk6CiAgICAgICAgICAgICAjIEluc2VydCB0aGUgYXBwbGljYXRpb24gbWVudQogICAgICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJvZmY9MCkKQEAgLTQzOSw3ICszOTUsNyBAQAogICAgICAgICAgICAgZW5kID0gLTEKICAgICAgICAgaWYgZW5kID4gc2VsZi53bWVudV9lbmQ6CiAgICAgICAgICAgICBtZW51LmRlbGV0ZShzZWxmLndtZW51X2VuZCsxLCBlbmQpCi0gICAgICAgIFdpbmRvd0xpc3QuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgICAgICB3aW5kb3dzLmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKIAogICAgIHJtZW51ID0gTm9uZQogCkBAIC01MDcsMTcgKzQ2MywxNyBAQAogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuYWJvdXRfZGlhbG9nLgotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhzZWxmLnRvcCwnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5hYm91dF9kaWFsb2cuCisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2coc2VsZi50b3AsJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgotICAgICAgICBjb25maWdEaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuaGVscF9kaWFsb2cuCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5oZWxwX2RpYWxvZy4KICAgICAgICAgaWYgc2VsZi5yb290OgogICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5yb290CiAgICAgICAgIGVsc2U6CkBAIC01OTAsMjMgKzU0NiwyMyBAQAogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZChzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX2FnYWluX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgU2VhcmNoRGlhbG9nLmZpbmRfYWdhaW4oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9hZ2FpbihzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9zZWxlY3Rpb25fZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfaW5fZmlsZXNfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBHcmVwRGlhbG9nLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQorICAgICAgICBncmVwLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIHJlcGxhY2VfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBSZXBsYWNlRGlhbG9nLnJlcGxhY2Uoc2VsZi50ZXh0KQorICAgICAgICByZXBsYWNlLnJlcGxhY2Uoc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGdvdG9fbGluZV9ldmVudChzZWxmLCBldmVudCk6CkBAIC02MjIsNDYgKzU3OCwyNyBAQAogICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKIAogICAgIGRlZiBvcGVuX21vZHVsZShzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgIyBYWFggU2hvdWxkbid0IHRoaXMgYmUgaW4gSU9CaW5kaW5nPworICAgICAgICAiIiJHZXQgbW9kdWxlIG5hbWUgZnJvbSB1c2VyIGFuZCBvcGVuIGl0LgorCisgICAgICAgIFJldHVybiBtb2R1bGUgcGF0aCBvciBOb25lIGZvciBjYWxscyBieSBvcGVuX2NsYXNzX2Jyb3dzZXIKKyAgICAgICAgd2hlbiBsYXR0ZXIgaXMgbm90IGludm9rZWQgaW4gbmFtZWQgZWRpdG9yIHdpbmRvdy4KKyAgICAgICAgIiIiCisgICAgICAgICMgWFhYIFRoaXMsIG9wZW5fY2xhc3NfYnJvd3NlciwgYW5kIG9wZW5fcGF0aF9icm93c2VyCisgICAgICAgICMgd291bGQgZml0IGJldHRlciBpbiBpb21lbnUuSU9CaW5kaW5nLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuYW1lID0gc2VsZi50ZXh0LmdldCgic2VsLmZpcnN0IiwgInNlbC5sYXN0IikKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLnRleHQuZ2V0KCJzZWwuZmlyc3QiLCAic2VsLmxhc3QiKS5zdHJpcCgpCiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKLSAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoKQotICAgICAgICBuYW1lID0gdGtTaW1wbGVEaWFsb2cuYXNrc3RyaW5nKCJNb2R1bGUiLAotICAgICAgICAgICAgICAgICAiRW50ZXIgdGhlIG5hbWUgb2YgYSBQeXRob24gbW9kdWxlXG4iCi0gICAgICAgICAgICAgICAgICJ0byBzZWFyY2ggb24gc3lzLnBhdGggYW5kIG9wZW46IiwKLSAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCwgaW5pdGlhbHZhbHVlPW5hbWUpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW1wb3J0RXJyb3IpIGFzIG1zZzoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsIHN0cihtc2cpLCBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsICJtb2R1bGUgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIpOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgIm5vdCBhIHNvdXJjZS1iYXNlZCBtb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZGVyIGRvZXMgbm90IHN1cHBvcnQgZ2V0X2ZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLmZsaXN0OgotICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaW8ubG9hZGZpbGUoZmlsZV9wYXRoKQorICAgICAgICAgICAgbmFtZSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9IHF1ZXJ5Lk1vZHVsZU5hbWUoCisgICAgICAgICAgICAgICAgc2VsZi50ZXh0LCAiT3BlbiBNb2R1bGUiLAorICAgICAgICAgICAgICAgICJFbnRlciB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGVcbiIKKyAgICAgICAgICAgICAgICAidG8gc2VhcmNoIG9uIHN5cy5wYXRoIGFuZCBvcGVuOiIsCisgICAgICAgICAgICAgICAgbmFtZSkucmVzdWx0CisgICAgICAgIGlmIGZpbGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuZmxpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5pby5sb2FkZmlsZShmaWxlX3BhdGgpCiAgICAgICAgIHJldHVybiBmaWxlX3BhdGgKIAogICAgIGRlZiBvcGVuX2NsYXNzX2Jyb3dzZXIoc2VsZiwgZXZlbnQ9Tm9uZSk6CkBAIC02NzMsMTIgKzYxMCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBoZWFkLCB0YWlsID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dCh0YWlsKQotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IENsYXNzQnJvd3NlcgotICAgICAgICBDbGFzc0Jyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBicm93c2VyCisgICAgICAgIGJyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKIAogICAgIGRlZiBvcGVuX3BhdGhfYnJvd3NlcihzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBQYXRoQnJvd3NlcgotICAgICAgICBQYXRoQnJvd3Nlci5QYXRoQnJvd3NlcihzZWxmLmZsaXN0KQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCisgICAgICAgIHBhdGhicm93c2VyLlBhdGhCcm93c2VyKHNlbGYuZmxpc3QpCiAKICAgICBkZWYgb3Blbl90dXJ0bGVfZGVtbyhzZWxmLCBldmVudCA9IE5vbmUpOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwpAQCAtNzM5LDcgKzY3Niw3IEBACiAKICAgICBkZWYgUmVzZXRDb2xvcml6ZXIoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGNvbG9yIHRoZW1lIgotICAgICAgICAjIENhbGxlZCBmcm9tIHNlbGYuZmlsZW5hbWVfY2hhbmdlX2hvb2sgYW5kIGZyb20gY29uZmlnRGlhbG9nLnB5CisgICAgICAgICMgQ2FsbGVkIGZyb20gc2VsZi5maWxlbmFtZV9jaGFuZ2VfaG9vayBhbmQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgc2VsZi5fcm1jb2xvcml6ZXIoKQogICAgICAgICBzZWxmLl9hZGRjb2xvcml6ZXIoKQogICAgICAgICBFZGl0b3JXaW5kb3cuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKQEAgLTc1OSwxNCArNjk2LDE0IEBACiAKICAgICBkZWYgUmVzZXRGb250KHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSB0ZXh0IHdpZGdldHMnIGZvbnQgaWYgaXQgaXMgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKIAogICAgICAgICBzZWxmLnRleHRbJ2ZvbnQnXSA9IGlkbGVDb25mLkdldEZvbnQoc2VsZi5yb290LCAnbWFpbicsJ0VkaXRvcldpbmRvdycpCiAKICAgICBkZWYgUmVtb3ZlS2V5YmluZGluZ3Moc2VsZik6CiAgICAgICAgICJSZW1vdmUgdGhlIGtleWJpbmRpbmdzIGJlZm9yZSB0aGV5IGFyZSBjaGFuZ2VkLiIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi50ZXh0LmV2ZW50X2RlbGV0ZShldmVudCwgKmtleWxpc3QpCiAgICAgICAgIGZvciBleHRlbnNpb25OYW1lIGluIHNlbGYuZ2V0X3N0YW5kYXJkX2V4dGVuc2lvbl9uYW1lcygpOgpAQCAtNzc3LDggKzcxNCw4IEBACiAKICAgICBkZWYgQXBwbHlLZXliaW5kaW5ncyhzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUga2V5YmluZGluZ3MgYWZ0ZXIgdGhleSBhcmUgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKCkKICAgICAgICAgZm9yIGV4dGVuc2lvbk5hbWUgaW4gc2VsZi5nZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKCk6CiAgICAgICAgICAgICB4a2V5ZGVmcyA9IGlkbGVDb25mLkdldEV4dGVuc2lvbkJpbmRpbmdzKGV4dGVuc2lvbk5hbWUpCkBAIC03ODYsNyArNzIzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKHhrZXlkZWZzKQogICAgICAgICAjdXBkYXRlIG1lbnUgYWNjZWxlcmF0b3JzCiAgICAgICAgIG1lbnVFdmVudERpY3QgPSB7fQotICAgICAgICBmb3IgbWVudSBpbiBzZWxmLkJpbmRpbmdzLm1lbnVkZWZzOgorICAgICAgICBmb3IgbWVudSBpbiBzZWxmLm1haW5tZW51Lm1lbnVkZWZzOgogICAgICAgICAgICAgbWVudUV2ZW50RGljdFttZW51WzBdXSA9IHt9CiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBtZW51WzFdOgogICAgICAgICAgICAgICAgIGlmIGl0ZW06CkBAIC04MTMsNyArNzUwLDcgQEAKIAogICAgIGRlZiBzZXRfbm90YWJzX2luZGVudHdpZHRoKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBpbmRlbnR3aWR0aCBpZiBjaGFuZ2VkIGFuZCBub3QgdXNpbmcgdGFicyBpbiB0aGlzIHdpbmRvdyIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgaWYgbm90IHNlbGYudXNldGFiczoKICAgICAgICAgICAgIHNlbGYuaW5kZW50d2lkdGggPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnSW5kZW50JywnbnVtLXNwYWNlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcpCkBAIC05OTMsNyArOTMwLDcgQEAKICAgICBkZWYgX2Nsb3NlKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlvLmZpbGVuYW1lOgogICAgICAgICAgICAgc2VsZi51cGRhdGVfcmVjZW50X2ZpbGVzX2xpc3QobmV3X2ZpbGU9c2VsZi5pby5maWxlbmFtZSkKLSAgICAgICAgV2luZG93TGlzdC51bnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQorICAgICAgICB3aW5kb3dzLnVucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAgICAgICAgIHNlbGYudW5sb2FkX2V4dGVuc2lvbnMoKQogICAgICAgICBzZWxmLmlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5pbyA9IE5vbmUKQEAgLTEwMzEsMTIgKzk2OCwyNSBAQAogICAgIGRlZiBnZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gaWRsZUNvbmYuR2V0RXh0ZW5zaW9ucyhlZGl0b3Jfb25seT1UcnVlKQogCisgICAgZXh0ZmlsZXMgPSB7ICAjIG1hcCBjb25maWctZXh0ZW5zaW9uIHNlY3Rpb24gbmFtZXMgdG8gbmV3IGZpbGUgbmFtZXMKKyAgICAgICAgJ0F1dG9Db21wbGV0ZSc6ICdhdXRvY29tcGxldGUnLAorICAgICAgICAnQXV0b0V4cGFuZCc6ICdhdXRvZXhwYW5kJywKKyAgICAgICAgJ0NhbGxUaXBzJzogJ2NhbGx0aXBzJywKKyAgICAgICAgJ0NvZGVDb250ZXh0JzogJ2NvZGVjb250ZXh0JywKKyAgICAgICAgJ0Zvcm1hdFBhcmFncmFwaCc6ICdwYXJhZ3JhcGgnLAorICAgICAgICAnUGFyZW5NYXRjaCc6ICdwYXJlbm1hdGNoJywKKyAgICAgICAgJ1JzdHJpcEV4dGVuc2lvbic6ICdyc3RyaXAnLAorICAgICAgICAnU2NyaXB0QmluZGluZyc6ICdydW5zY3JpcHQnLAorICAgICAgICAnWm9vbUhlaWdodCc6ICd6b29taGVpZ2h0JywKKyAgICAgICAgfQorCiAgICAgZGVmIGxvYWRfZXh0ZW5zaW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBmbmFtZSA9IHNlbGYuZXh0ZmlsZXMuZ2V0KG5hbWUsIG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuJyArIGZuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGZuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCkBAIC0xMDYwLDcgKzEwMTAsNyBAQAogCiAgICAgZGVmIGFwcGx5X2JpbmRpbmdzKHNlbGYsIGtleWRlZnM9Tm9uZSk6CiAgICAgICAgIGlmIGtleWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcworICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgdGV4dC5rZXlkZWZzID0ga2V5ZGVmcwogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgpAQCAtMTA3Myw5ICsxMDIzLDkgQEAKICAgICAgICAgTWVudXMgdGhhdCBhcmUgYWJzZW50IG9yIE5vbmUgaW4gc2VsZi5tZW51ZGljdCBhcmUgaWdub3JlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1lbnVkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBtZW51ZGVmcyA9IHNlbGYuQmluZGluZ3MubWVudWRlZnMKKyAgICAgICAgICAgIG1lbnVkZWZzID0gc2VsZi5tYWlubWVudS5tZW51ZGVmcwogICAgICAgICBpZiBrZXlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMKKyAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcwogICAgICAgICBtZW51ZGljdCA9IHNlbGYubWVudWRpY3QKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICBmb3IgbW5hbWUsIGVudHJ5bGlzdCBpbiBtZW51ZGVmczoKQEAgLTEzMDIsNyArMTI1Miw3IEBACiAgICAgICAgICAgICAjIGFkanVzdCBpbmRlbnRhdGlvbiBmb3IgY29udGludWF0aW9ucyBhbmQgYmxvY2sKICAgICAgICAgICAgICMgb3Blbi9jbG9zZSBmaXJzdCBuZWVkIHRvIGZpbmQgdGhlIGxhc3Qgc3RtdAogICAgICAgICAgICAgbG5vID0gaW5kZXgybGluZSh0ZXh0LmluZGV4KCdpbnNlcnQnKSkKLSAgICAgICAgICAgIHkgPSBQeVBhcnNlLlBhcnNlcihzZWxmLmluZGVudHdpZHRoLCBzZWxmLnRhYndpZHRoKQorICAgICAgICAgICAgeSA9IHB5cGFyc2UuUGFyc2VyKHNlbGYuaW5kZW50d2lkdGgsIHNlbGYudGFid2lkdGgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb250ZXh0X3VzZV9wczE6CiAgICAgICAgICAgICAgICAgZm9yIGNvbnRleHQgaW4gc2VsZi5udW1fY29udGV4dF9saW5lczoKICAgICAgICAgICAgICAgICAgICAgc3RhcnRhdCA9IG1heChsbm8gLSBjb250ZXh0LCAxKQpAQCAtMTMyNiwyMiArMTI3NiwyMiBAQAogICAgICAgICAgICAgICAgIHkuc2V0X2xvKDApCiAKICAgICAgICAgICAgIGMgPSB5LmdldF9jb250aW51YXRpb25fdHlwZSgpCi0gICAgICAgICAgICBpZiBjICE9IFB5UGFyc2UuQ19OT05FOgorICAgICAgICAgICAgaWYgYyAhPSBweXBhcnNlLkNfTk9ORToKICAgICAgICAgICAgICAgICAjIFRoZSBjdXJyZW50IHN0bXQgaGFzbid0IGVuZGVkIHlldC4KLSAgICAgICAgICAgICAgICBpZiBjID09IFB5UGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKKyAgICAgICAgICAgICAgICBpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciB0aGUgZmlyc3QgbGluZSBvZiBhIHN0cmluZzsgZG8gbm90IGluZGVudCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBQeVBhcnNlLkNfU1RSSU5HX05FWFRfTElORVM6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfTkVYVF9MSU5FUzoKICAgICAgICAgICAgICAgICAgICAgIyBpbnNpZGUgYSBzdHJpbmcgd2hpY2ggc3RhcnRlZCBiZWZvcmUgdGhpcyBsaW5lOwogICAgICAgICAgICAgICAgICAgICAjIGp1c3QgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50CiAgICAgICAgICAgICAgICAgICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCBpbmRlbnQpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CUkFDS0VUOgorICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBweXBhcnNlLkNfQlJBQ0tFVDoKICAgICAgICAgICAgICAgICAgICAgIyBsaW5lIHVwIHdpdGggdGhlIGZpcnN0IChpZiBhbnkpIGVsZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICMgbGFzdCBvcGVuIGJyYWNrZXQgc3RydWN0dXJlOyBlbHNlIGluZGVudCBvbmUKICAgICAgICAgICAgICAgICAgICAgIyBsZXZlbCBiZXlvbmQgdGhlIGluZGVudCBvZiB0aGUgbGluZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGxhc3Qgb3BlbiBicmFja2V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVpbmRlbnRfdG8oeS5jb21wdXRlX2JyYWNrZXRfaW5kZW50KCkpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CQUNLU0xBU0g6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19CQUNLU0xBU0g6CiAgICAgICAgICAgICAgICAgICAgICMgaWYgbW9yZSB0aGFuIG9uZSBsaW5lIGluIHRoaXMgc3RtdCBhbHJlYWR5LCBqdXN0CiAgICAgICAgICAgICAgICAgICAgICMgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50OyBlbHNlIGlmIGluaXRpYWwgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGhhcyBhIHN0YXJ0IG9uIGFuIGFzc2lnbm1lbnQgc3RtdCwgaW5kZW50IHRvCkBAIC0xNTY5LDkgKzE1MTksNiBAQAogICAgICAgICAgICAgYnJlYWsKICAgICByZXR1cm4gcmF3LCBlZmZlY3RpdmUKIAotaW1wb3J0IHRva2VuaXplCi1fdG9rZW5pemUgPSB0b2tlbml6ZQotZGVsIHRva2VuaXplCiAKIGNsYXNzIEluZGVudFNlYXJjaGVyKG9iamVjdCk6CiAKQEAgLTE1OTYsOCArMTU0Myw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRleHQuZ2V0KG1hcmssIG1hcmsgKyAiIGxpbmVlbmQrMWMiKQogCiAgICAgZGVmIHRva2VuZWF0ZXIoc2VsZiwgdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgSU5ERU5UPV90b2tlbml6ZS5JTkRFTlQsCi0gICAgICAgICAgICAgICAgICAgTkFNRT1fdG9rZW5pemUuTkFNRSwKKyAgICAgICAgICAgICAgICAgICBJTkRFTlQ9dG9rZW5pemUuSU5ERU5ULAorICAgICAgICAgICAgICAgICAgIE5BTUU9dG9rZW5pemUuTkFNRSwKICAgICAgICAgICAgICAgICAgICBPUEVORVJTPSgnY2xhc3MnLCAnZGVmJywgJ2ZvcicsICdpZicsICd0cnknLCAnd2hpbGUnKSk6CiAgICAgICAgIGlmIHNlbGYuZmluaXNoZWQ6CiAgICAgICAgICAgICBwYXNzCkBAIC0xNjA4LDE5ICsxNTU1LDE5IEBACiAgICAgICAgICAgICBzZWxmLmZpbmlzaGVkID0gMQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2F2ZV90YWJzaXplID0gX3Rva2VuaXplLnRhYnNpemUKLSAgICAgICAgX3Rva2VuaXplLnRhYnNpemUgPSBzZWxmLnRhYndpZHRoCisgICAgICAgIHNhdmVfdGFic2l6ZSA9IHRva2VuaXplLnRhYnNpemUKKyAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNlbGYudGFid2lkdGgKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRva2VucyA9IF90b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKKyAgICAgICAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuZWF0ZXIoKnRva2VuKQotICAgICAgICAgICAgZXhjZXB0IChfdG9rZW5pemUuVG9rZW5FcnJvciwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0ICh0b2tlbml6ZS5Ub2tlbkVycm9yLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgIyBzaW5jZSB3ZSBjdXQgb2ZmIHRoZSB0b2tlbml6ZXIgZWFybHksIHdlIGNhbiB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgIyBzcHVyaW91cyBlcnJvcnMKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQorICAgICAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQogICAgICAgICByZXR1cm4gc2VsZi5ibGtvcGVubGluZSwgc2VsZi5pbmRlbnRlZGxpbmUKIAogIyMjIGVuZCBhdXRvaW5kZW50IGNvZGUgIyMjCkBAIC0xNjQ0LDcgKzE1OTEsNyBAQAogICAgIGtleWxpc3QgPSBrZXlkZWZzLmdldChldmVudG5hbWUpCiAgICAgIyBpc3N1ZTEwOTQwOiB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBwcmV2ZW50IGhhbmcgd2l0aCBPUyBYIENvY29hIFRrIDguNQogICAgICMgaWYgbm90IGtleWxpc3Q6Ci0gICAgaWYgKG5vdCBrZXlsaXN0KSBvciAobWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKSBhbmQgZXZlbnRuYW1lIGluIHsKKyAgICBpZiAobm90IGtleWxpc3QpIG9yIChtYWNvc3guaXNDb2NvYVRrKCkgYW5kIGV2ZW50bmFtZSBpbiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8b3Blbi1tb2R1bGU+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8Z290by1saW5lPj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PGNoYW5nZS1pbmRlbnR3aWR0aD4+In0pOgpAQCAtMTY3OSwxMiArMTYyNiwxNSBAQAogICAgICAgICBmaWxlbmFtZSA9IHN5cy5hcmd2WzFdCiAgICAgZWxzZToKICAgICAgICAgZmlsZW5hbWUgPSBOb25lCi0gICAgbWFjb3N4U3VwcG9ydC5zZXR1cEFwcChyb290LCBOb25lKQorICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBOb25lKQogICAgIGVkaXQgPSBFZGl0b3JXaW5kb3cocm9vdD1yb290LCBmaWxlbmFtZT1maWxlbmFtZSkKICAgICBlZGl0LnRleHQuYmluZCgiPDxjbG9zZS1hbGwtd2luZG93cz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKICAgICAjIERvZXMgbm90IHN0b3AgZXJyb3IsIG5laXRoZXIgZG9lcyBmb2xsb3dpbmcKICAgICAjIGVkaXQudGV4dC5iaW5kKCI8PGNsb3NlLXdpbmRvdz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2VkaXRvcicsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9lZGl0b3Jfd2luZG93KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkgYi9MaWIvaWRsZWxpYi9maWxlbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9GaWxlTGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKaW5kZXggYTk5ODlhOC4uZjQ2YWQ3YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC02LDcgKzcsNyBAQAogY2xhc3MgRmlsZUxpc3Q6CiAKICAgICAjIE4uQi4gdGhpcyBpbXBvcnQgb3ZlcnJpZGRlbiBpbiBQeVNoZWxsRmlsZUxpc3QuCi0gICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93CisgICAgZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6CiAgICAgICAgIHNlbGYucm9vdCA9IHJvb3QKQEAgLTExMSw3ICsxMTIsNyBAQAogCiAKIGRlZiBfdGVzdCgpOgotICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IGZpeHdvcmRicmVha3MKKyAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBmaXh3b3JkYnJlYWtzCiAgICAgaW1wb3J0IHN5cwogICAgIHJvb3QgPSBUaygpCiAgICAgZml4d29yZGJyZWFrcyhyb290KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weSBiL0xpYi9pZGxlbGliL2dyZXAucHkKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZ3JlcC5weQppbmRleCA3MjFiMjMxLi42NGJhMjhkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2dyZXAucHkKQEAgLTEsMTcgKzEsMTkgQEAKLWltcG9ydCBvcwogaW1wb3J0IGZubWF0Y2gKLWltcG9ydCByZSAgIyBmb3IgaHRlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIENoZWNrYnV0dG9uICAjIGZvciBHcmVwRGlhbG9nCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0LCBCdXR0b24sIFNFTCwgRU5EICAjIGZvciBodGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCi0jIEltcG9ydGluZyBPdXRwdXRXaW5kb3cgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBDaGVja2J1dHRvbgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKKworIyBJbXBvcnRpbmcgT3V0cHV0V2luZG93IGhlcmUgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCiAjIEVkaXRvcldpbmRvdyAtPiBHcmVwRGlhbG9wIC0+IE91dHB1dFdpbmRvdyAtPiBFZGl0b3JXaW5kb3cKIAogZGVmIGdyZXAodGV4dCwgaW89Tm9uZSwgZmxpc3Q9Tm9uZSk6CiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX2dyZXBkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9ncmVwZGlhbG9nID0gR3JlcERpYWxvZyhyb290LCBlbmdpbmUsIGZsaXN0KQogICAgIGRpYWxvZyA9IGVuZ2luZS5fZ3JlcGRpYWxvZwpAQCAtNDcsMTMgKzQ5LDEwIEBACiAgICAgICAgIHNlbGYuZ2xvYmVudCA9IHNlbGYubWFrZV9lbnRyeSgiSW4gZmlsZXM6Iiwgc2VsZi5nbG9idmFyKVswXQogCiAgICAgZGVmIGNyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5tYWtlX2ZyYW1lKClbMF0KLQotICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgIHZhcmlhYmxlPXNlbGYucmVjdmFyLAorICAgICAgICBidG4gPSBDaGVja2J1dHRvbigKKyAgICAgICAgICAgICAgICBzZWxmLm1ha2VfZnJhbWUoKVswXSwgdmFyaWFibGU9c2VsZi5yZWN2YXIsCiAgICAgICAgICAgICAgICAgdGV4dD0iUmVjdXJzZSBkb3duIHN1YmRpcmVjdG9yaWVzIikKICAgICAgICAgYnRuLnBhY2soc2lkZT0idG9wIiwgZmlsbD0iYm90aCIpCi0gICAgICAgIGJ0bi5zZWxlY3QoKQogCiAgICAgZGVmIGNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIFNlYXJjaERpYWxvZ0Jhc2UuY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKQpAQCAtNjcsNyArNjYsNyBAQAogICAgICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgICAgIHNlbGYudG9wLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZyb20gaWRsZWxpYi5PdXRwdXRXaW5kb3cgaW1wb3J0IE91dHB1dFdpbmRvdyAgIyBsZWF2ZSBoZXJlIQorICAgICAgICBmcm9tIGlkbGVsaWIub3V0d2luIGltcG9ydCBPdXRwdXRXaW5kb3cgICMgbGVhdmUgaGVyZSEKICAgICAgICAgc2F2ZSA9IHN5cy5zdGRvdXQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IE91dHB1dFdpbmRvdyhzZWxmLmZsaXN0KQpAQCAtMTMxLDE0ICsxMzAsMTYgQEAKIAogCiBkZWYgX2dyZXBfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBTRUwsIEVORAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorICAgIGZyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKLSAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQotICAgIHRleHQgPSBUZXh0KHJvb3QsIGhlaWdodD01KQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKKyAgICB0ZXh0ID0gVGV4dCh0b3AsIGhlaWdodD01KQogICAgIHRleHQucGFjaygpCiAKICAgICBkZWYgc2hvd19ncmVwX2RpYWxvZygpOgpAQCAtMTQ2LDkgKzE0Nyw4IEBACiAgICAgICAgIGdyZXAodGV4dCwgZmxpc3Q9Zmxpc3QpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCiAKLSAgICBidXR0b24gPSBCdXR0b24ocm9vdCwgdGV4dD0iU2hvdyBHcmVwRGlhbG9nIiwgY29tbWFuZD1zaG93X2dyZXBfZGlhbG9nKQorICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlNob3cgR3JlcERpYWxvZyIsIGNvbW1hbmQ9c2hvd19ncmVwX2RpYWxvZykKICAgICBidXR0b24ucGFjaygpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnB5IGIvTGliL2lkbGVsaWIvaGVscC5weQppbmRleCBhNzAwOGU5Li43N2UwMWEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9oZWxwLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHAucHkKQEAgLTQsNyArNCw3IEBACiAKIEhlbHAgPT4gQWJvdXQgSURMRTogZGlwbGF5IEFib3V0IElkbGUgZGlhbG9nCiAKLTx0byBiZSBtb3ZlZCBoZXJlIGZyb20gYWJvdXREaWFsb2cucHk+Cis8dG8gYmUgbW92ZWQgaGVyZSBmcm9tIGhlbHBfYWJvdXQucHk+CiAKIAogSGVscCA9PiBJRExFIEhlbHA6IERpc3BsYXkgaGVscC5odG1sIHdpdGggcHJvcGVyIGZvcm1hdHRpbmcuCkBAIC0yNSwxNSArMjUsMTQgQEAKIHNob3dfaWRsZWhlbHAgLSBDcmVhdGUgSGVscFdpbmRvdy4gIENhbGxlZCBpbiBFZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAiIiIKIGZyb20gaHRtbC5wYXJzZXIgaW1wb3J0IEhUTUxQYXJzZXIKLWZyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgaXNkaXIsIGlzZmlsZSwgam9pbgorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBpc2ZpbGUsIGpvaW4KIGZyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIFNjcm9sbGJhciwgTWVudSwgTWVudWJ1dHRvbgotZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCiAKLXVzZV90dGsgPSBGYWxzZSAjIHVudGlsIGF2YWlsYWJsZSB0byBpbXBvcnQKLWlmIHVzZV90dGs6Ci0gICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgTWVudWJ1dHRvbgorZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIE1lbnUKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IE1lbnVidXR0b24sIFNjcm9sbGJhcgorZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiAjIyBBYm91dCBJRExFICMjCiAKQEAgLTE5NywxNSArMTk2LDE4IEBACiAgICAgIkRpc3BsYXkgaHRtbCB0ZXh0LCBzY3JvbGxiYXIsIGFuZCB0b2MuIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGZpbGVuYW1lKToKICAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCisgICAgICAgICMga2VlcCByZWZlcmVuY2VzIHRvIHdpZGdldHMgZm9yIHRlc3QgYWNjZXNzLgorICAgICAgICBzZWxmLnRleHQgPSB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCiAgICAgICAgIHNlbGZbJ2JhY2tncm91bmQnXSA9IHRleHRbJ2JhY2tncm91bmQnXQotICAgICAgICBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQorICAgICAgICBzZWxmLnRvYyA9IHRvYyA9IHNlbGYudG9jX21lbnUodGV4dCkKKyAgICAgICAgc2VsZi5zY3JvbGwgPSBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgICAgICB0ZXh0Wyd5c2Nyb2xsY29tbWFuZCddID0gc2Nyb2xsLnNldAorCiAgICAgICAgIHNlbGYucm93Y29uZmlndXJlKDAsIHdlaWdodD0xKQogICAgICAgICBzZWxmLmNvbHVtbmNvbmZpZ3VyZSgxLCB3ZWlnaHQ9MSkgICMgdGV4dAotICAgICAgICBzZWxmLnRvY19tZW51KHRleHQpLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J253JykKLSAgICAgICAgdGV4dC5ncmlkKGNvbHVtbj0xLCByb3c9MCwgc3RpY2t5PSduc2V3JykKLSAgICAgICAgc2Nyb2xsLmdyaWQoY29sdW1uPTIsIHJvdz0wLCBzdGlja3k9J25zJykKKyAgICAgICAgdG9jLmdyaWQocm93PTAsIGNvbHVtbj0wLCBzdGlja3k9J253JykKKyAgICAgICAgdGV4dC5ncmlkKHJvdz0wLCBjb2x1bW49MSwgc3RpY2t5PSduc2V3JykKKyAgICAgICAgc2Nyb2xsLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9J25zJykKIAogICAgIGRlZiB0b2NfbWVudShzZWxmLCB0ZXh0KToKICAgICAgICAgIkNyZWF0ZSB0YWJsZSBvZiBjb250ZW50cyBhcyBkcm9wLWRvd24gbWVudS4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnR4dCBiL0xpYi9pZGxlbGliL2hlbHAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWZiZTBiLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2hlbHAudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLVRoaXMgZmlsZSwgaWRsZWxpYi9oZWxwLnR4dCBpcyBvdXQtb2YtZGF0ZSBhbmQgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS4KLUl0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBwb3NzaWJseSBpbiAzLjYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotW1NlZSB0aGUgZW5kIG9mIHRoaXMgZmlsZSBmb3IgKiogVElQUyAqKiBvbiB1c2luZyBJRExFICEhXQotCi1JRExFIGlzIHRoZSBQeXRob24gSURFIGJ1aWx0IHdpdGggdGhlIHRraW50ZXIgR1VJIHRvb2xraXQuCi0KLUlETEUgaGFzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Ci0tY29kZWQgaW4gMTAwJSBwdXJlIFB5dGhvbiwgdXNpbmcgdGhlIHRraW50ZXIgR1VJIHRvb2xraXQKLS1jcm9zcy1wbGF0Zm9ybTogd29ya3Mgb24gV2luZG93cywgVW5peCwgYW5kIE9TIFgKLS1tdWx0aS13aW5kb3cgdGV4dCBlZGl0b3Igd2l0aCBtdWx0aXBsZSB1bmRvLCBQeXRob24gY29sb3JpemluZywgc21hcnQgaW5kZW50LAotY2FsbCB0aXBzLCBhbmQgbWFueSBvdGhlciBmZWF0dXJlcwotLVB5dGhvbiBzaGVsbCB3aW5kb3cgKGEuay5hIGludGVyYWN0aXZlIGludGVycHJldGVyKQotLWRlYnVnZ2VyIChub3QgY29tcGxldGUsIGJ1dCB5b3UgY2FuIHNldCBicmVha3BvaW50cywgdmlldyBhbmQgc3RlcCkKLQotTWVudXM6Ci0KLUlETEUgaGFzIHR3byB3aW5kb3cgdHlwZXMgdGhlIFNoZWxsIHdpbmRvdyBhbmQgdGhlIEVkaXRvciB3aW5kb3cuIEl0IGlzCi1wb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIGVkaXRvciB3aW5kb3dzIHNpbXVsdGFuZW91c2x5LiBJRExFJ3MKLW1lbnVzIGR5bmFtaWNhbGx5IGNoYW5nZSBiYXNlZCBvbiB3aGljaCB3aW5kb3cgaXMgY3VycmVudGx5IHNlbGVjdGVkLiBFYWNoIG1lbnUKLWRvY3VtZW50ZWQgYmVsb3cgaW5kaWNhdGVzIHdoaWNoIHdpbmRvdyB0eXBlIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gCi0KLUZpbGUgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgTmV3IEZpbGUgICAgICAgICAtLSBDcmVhdGUgYSBuZXcgZmlsZSBlZGl0aW5nIHdpbmRvdwotICAgICAgICBPcGVuLi4uICAgICAgICAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgZmlsZQotICAgICAgICBPcGVuIE1vZHVsZS4uLiAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgbW9kdWxlIChzZWFyY2hlcyBzeXMucGF0aCkKLSAgICAgICAgUmVjZW50IEZpbGVzLi4uICAtLSBPcGVuIGEgbGlzdCBvZiByZWNlbnQgZmlsZXMKLSAgICAgICAgQ2xhc3MgQnJvd3NlciAgICAtLSBTaG93IGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gY3VycmVudCBmaWxlCi0gICAgICAgIFBhdGggQnJvd3NlciAgICAgLS0gU2hvdyBzeXMucGF0aCBkaXJlY3RvcmllcywgbW9kdWxlcywgY2xhc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWV0aG9kcwotICAgICAgICAtLS0KLSAgICAgICAgU2F2ZSAgICAgICAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBhc3NvY2lhdGVkIGZpbGUgKHVuc2F2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dzIGhhdmUgYSAqIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHdpbmRvdyB0aXRsZSkKLQotICAgICAgICBTYXZlIEFzLi4uICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gbmV3IGZpbGUsIHdoaWNoIGJlY29tZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBmaWxlCi0gICAgICAgIFNhdmUgQ29weSBBcy4uLiAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byBkaWZmZXJlbnQgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGFzc29jaWF0ZWQgZmlsZQotICAgICAgICAtLS0KLSAgICAgICAgUHJpbnQgV2luZG93ICAgICAtLSBQcmludCB0aGUgY3VycmVudCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIENsb3NlICAgICAgICAgICAgLS0gQ2xvc2UgY3VycmVudCB3aW5kb3cgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQotICAgICAgICBFeGl0ICAgICAgICAgICAgIC0tIENsb3NlIGFsbCB3aW5kb3dzLCBxdWl0IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKLQotRWRpdCBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBVbmRvICAgICAgICAgICAgIC0tIFVuZG8gbGFzdCBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSBtYXhpbXVtIG9mIDEwMDAgY2hhbmdlcyBtYXkgYmUgdW5kb25lKQotICAgICAgICBSZWRvICAgICAgICAgICAgIC0tIFJlZG8gbGFzdCB1bmRvbmUgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZWxlY3QgQWxsICAgICAgIC0tIFNlbGVjdCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBlZGl0IGJ1ZmZlcgotICAgICAgICAtLS0KLSAgICAgICAgRmluZC4uLiAgICAgICAgICAtLSBPcGVuIGEgc2VhcmNoIGRpYWxvZyBib3ggd2l0aCBtYW55IG9wdGlvbnMKLSAgICAgICAgRmluZCBBZ2FpbiAgICAgICAtLSBSZXBlYXQgbGFzdCBzZWFyY2gKLSAgICAgICAgRmluZCBTZWxlY3Rpb24gICAtLSBTZWFyY2ggZm9yIHRoZSBzdHJpbmcgaW4gdGhlIHNlbGVjdGlvbgotICAgICAgICBGaW5kIGluIEZpbGVzLi4uIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCBmb3Igc2VhcmNoaW5nIGZpbGVzCi0gICAgICAgIFJlcGxhY2UuLi4gICAgICAgLS0gT3BlbiBhIHNlYXJjaC1hbmQtcmVwbGFjZSBkaWFsb2cgYm94Ci0gICAgICAgIEdvIHRvIExpbmUgICAgICAgLS0gQXNrIGZvciBhIGxpbmUgbnVtYmVyIGFuZCBzaG93IHRoYXQgbGluZQotICAgICAgICBFeHBhbmQgV29yZCAgICAgIC0tIEV4cGFuZCB0aGUgd29yZCB5b3UgaGF2ZSB0eXBlZCB0byBtYXRjaCBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBpbiB0aGUgc2FtZSBidWZmZXI7IHJlcGVhdCB0byBnZXQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBleHBhbnNpb24KLSAgICAgICAgU2hvdyBDYWxsdGlwICAgICAtLSBBZnRlciBhbiB1bmNsb3NlZCBwYXJlbnRoZXNpcyBmb3IgYSBmdW5jdGlvbiwgb3BlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc21hbGwgd2luZG93IHdpdGggZnVuY3Rpb24gcGFyYW1ldGVyIGhpbnRzCi0gICAgICAgIFNob3cgUGFyZW5zICAgICAgLS0gSGlnaGxpZ2h0IHRoZSBzdXJyb3VuZGluZyBwYXJlbnRoZXNpcwotICAgICAgICBTaG93IENvbXBsZXRpb25zIC0tIE9wZW4gYSBzY3JvbGwgd2luZG93IGFsbG93aW5nIHNlbGVjdGlvbiBrZXl3b3JkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhdHRyaWJ1dGVzLiAoc2VlICcqVElQUyonLCBiZWxvdykKLQotRm9ybWF0IE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgSW5kZW50IFJlZ2lvbiAgICAgICAtLSBTaGlmdCBzZWxlY3RlZCBsaW5lcyByaWdodCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIERlZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgbGVmdCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIENvbW1lbnQgT3V0IFJlZ2lvbiAgLS0gSW5zZXJ0ICMjIGluIGZyb250IG9mIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFVuY29tbWVudCBSZWdpb24gICAgLS0gUmVtb3ZlIGxlYWRpbmcgIyBvciAjIyBmcm9tIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFRhYmlmeSBSZWdpb24gICAgICAgLS0gVHVybnMgKmxlYWRpbmcqIHN0cmV0Y2hlcyBvZiBzcGFjZXMgaW50byB0YWJzLgotICAgICAgICAgICAgICAgIChOb3RlOiBXZSByZWNvbW1lbmQgdXNpbmcgNCBzcGFjZSBibG9ja3MgdG8gaW5kZW50IFB5dGhvbiBjb2RlLikKLSAgICAgICAgVW50YWJpZnkgUmVnaW9uICAgICAtLSBUdXJuICphbGwqIHRhYnMgaW50byB0aGUgY29ycmVudCBudW1iZXIgb2Ygc3BhY2VzCi0gICAgICAgIFRvZ2dsZSB0YWJzICAgICAgICAgLS0gT3BlbiBhIGRpYWxvZyB0byBzd2l0Y2ggYmV0d2VlbiBpbmRlbnRpbmcgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcyBhbmQgdGFicy4KLSAgICAgICAgTmV3IEluZGVudCBXaWR0aC4uLiAtLSBPcGVuIGEgZGlhbG9nIHRvIGNoYW5nZSBpbmRlbnQgd2lkdGguICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZCBkZWZhdWx0IGJ5IHRoZSBQeXRob24gY29tbXVuaXR5IGlzIDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMuCi0gICAgICAgIEZvcm1hdCBQYXJhZ3JhcGggICAgLS0gUmVmb3JtYXQgdGhlIGN1cnJlbnQgYmxhbmstbGluZS1zZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGguIEFsbCBsaW5lcyBpbiB0aGUgcGFyYWdyYXBoIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgdG8gbGVzcyB0aGFuIDgwIGNvbHVtbnMuCi0gICAgICAgIC0tLQotICAgICAgICBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIC0tIFJlbW92ZWQgYW55IHNwYWNlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXN0IG5vbi1zcGFjZSBjaGFyYWN0ZXIKLQotUnVuIE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgUHl0aG9uIFNoZWxsIC0tIE9wZW4gb3Igd2FrZSB1cCB0aGUgUHl0aG9uIHNoZWxsIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ2hlY2sgTW9kdWxlIC0tIENoZWNrIHRoZSBzeW50YXggb2YgdGhlIG1vZHVsZSBjdXJyZW50bHkgb3BlbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRvciB3aW5kb3cuICBJZiB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBzYXZlZCBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZSBjb2RlLgotICAgICAgICBSdW4gTW9kdWxlICAgLS0gUmVzdGFydCB0aGUgc2hlbGwgdG8gY2xlYW4gdGhlIGVudmlyb25tZW50LCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBjdXJyZW50bHkgb3BlbiBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYmVlbiBzYXZlZCBJRExFIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLgotCi1TaGVsbCBNZW51IChTaGVsbCB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgVmlldyBMYXN0IFJlc3RhcnQgLS0gU2Nyb2xsIHRoZSBzaGVsbCB3aW5kb3cgdG8gdGhlIGxhc3QgU2hlbGwgcmVzdGFydAotICAgICAgICBSZXN0YXJ0IFNoZWxsICAgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQKLQotRGVidWcgTWVudSAoU2hlbGwgd2luZG93IG9ubHkpOgotCi0gICAgICAgIEdvIHRvIEZpbGUvTGluZSAgIC0tIExvb2sgYXJvdW5kIHRoZSBpbnNlcnQgcG9pbnQgZm9yIGEgZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLCBhbmQgc2hvdyB0aGUgbGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlZnVsIHRvIHZpZXcgdGhlIHNvdXJjZSBsaW5lcyByZWZlcmVuY2VkIGluIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiB0cmFjZWJhY2suICBBdmFpbGFibGUgaW4gdGhlIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSBvZiB0aGUgU2hlbGwgd2luZG93LgotICAgICAgICBEZWJ1Z2dlciAodG9nZ2xlKSAtLSBUaGlzIGZlYXR1cmUgaXMgbm90IGNvbXBsZXRlIGFuZCBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbC4gUnVuIGNvbW1hbmRzIGluIHRoZSBzaGVsbCB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXIuCi0gICAgICAgIFN0YWNrIFZpZXdlciAgICAgIC0tIFNob3cgdGhlIHN0YWNrIHRyYWNlYmFjayBvZiB0aGUgbGFzdCBleGNlcHRpb24KLSAgICAgICAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAodG9nZ2xlKSAtLSBUb2dnbGUgYXV0b21hdGljYWxseSBvcGVuaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIHZpZXdlciBvbiB1bmhhbmRsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24KLQotT3B0aW9ucyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBDb25maWd1cmUgSURMRSAtLSBPcGVuIGEgY29uZmlndXJhdGlvbiBkaWFsb2cuICBGb250cywgaW5kZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJpbmRpbmdzLCBhbmQgY29sb3IgdGhlbWVzIG1heSBiZSBhbHRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydHVwIFByZWZlcmVuY2VzIG1heSBiZSBzZXQsIGFuZCBhZGRpdGlvbmFsIEhlbHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcyBjYW4gYmUgc3BlY2lmaWVkLiAgT24gT1MgWCwgb3BlbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaWFsb2cgYnkgc2VsZWN0aW5nIFByZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotCi0gICAgICAgIC0tLQotICAgICAgICBDb2RlIENvbnRleHQgKHRvZ2dsZSkgLS0gT3BlbiBhIHBhbmUgYXQgdGhlIHRvcCBvZiB0aGUgZWRpdCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3dzIHRoZSBibG9jayBjb250ZXh0IG9mIHRoZSBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBjb2RlIHdoaWNoIGlzIHNjcm9sbGluZyBvZmYgdGhlIHRvcCBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy4gVGhpcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgU2hlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdyBvbmx5IHRoZSBFZGl0b3Igd2luZG93LgotCi1XaW5kb3cgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgWm9vbSBIZWlnaHQgLS0gVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbm9ybWFsIHNpemUgKDQweDgwIGluaXRpYWwKLSAgICAgICAgc2V0dGluZykgYW5kIG1heGltdW0gaGVpZ2h0LiAgVGhlIGluaXRpYWwgc2l6ZSBpcyBpbiB0aGUgQ29uZmlndXJlCi0gICAgICAgIElETEUgZGlhbG9nIHVuZGVyIHRoZSBnZW5lcmFsIHRhYi4KLSAgICAgICAgLS0tCi0gICAgICAgIFRoZSByZXN0IG9mIHRoaXMgbWVudSBsaXN0cyB0aGUgbmFtZXMgb2YgYWxsIG9wZW4gd2luZG93czsKLSAgICAgICAgc2VsZWN0IG9uZSB0byBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmCi0gICAgICAgIG5lY2Vzc2FyeSkuCi0KLUhlbHAgTWVudToKLQotICAgICAgICBBYm91dCBJRExFICAtLSBWZXJzaW9uLCBjb3B5cmlnaHQsIGxpY2Vuc2UsIGNyZWRpdHMKLSAgICAgICAgLS0tCi0gICAgICAgIElETEUgSGVscCAgIC0tIERpc3BsYXkgdGhpcyBmaWxlIHdoaWNoIGlzIGEgaGVscCBmaWxlIGZvciBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGluZyB0aGUgbWVudSBvcHRpb25zLCBiYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgdGlwcy4KLSAgICAgICAgUHl0aG9uIERvY3MgLS0gQWNjZXNzIGxvY2FsIFB5dGhvbiBkb2N1bWVudGF0aW9uLCBpZgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuICBPciB3aWxsIHN0YXJ0IGEgd2ViIGJyb3dzZXIgYW5kIG9wZW4KLSAgICAgICAgICAgICAgICAgICAgICAgZG9jcy5weXRob24ub3JnIHNob3dpbmcgdGhlIGxhdGVzdCBQeXRob24gZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgLS0tCi0gICAgICAgIEFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIG1heSBiZSBhZGRlZCBoZXJlIHdpdGggdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUgR2VuZXJhbCB0YWIuCi0KLUVkaXRvciBjb250ZXh0IG1lbnUgKFJpZ2h0LWNsaWNrIC8gQ29udHJvbC1jbGljayBvbiBPUyBYIGluIEVkaXQgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZXQgQnJlYWtwb2ludCAgIC0tIFNldHMgYSBicmVha3BvaW50LiBCcmVha3BvaW50cyBhcmUgb25seSBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgZGVidWdnZXIgaXMgb3Blbi4KLSAgICAgICAgQ2xlYXIgQnJlYWtwb2ludCAtLSBDbGVhcnMgdGhlIGJyZWFrcG9pbnQgb24gdGhhdCBsaW5lCi0KLVNoZWxsIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gU2hlbGwgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgR28gdG8gZmlsZS9saW5lICAtLSBTYW1lIGFzIGluIERlYnVnIG1lbnUKLQotCi0qKiBUSVBTICoqCi09PT09PT09PT09Ci0KLUFkZGl0aW9uYWwgSGVscCBTb3VyY2VzOgotCi0gICAgICAgIFdpbmRvd3MgdXNlcnMgY2FuIEdvb2dsZSBvbiB6b3Blc2hlbGYuY2htIHRvIGFjY2VzcyBab3BlIGhlbHAgZmlsZXMgaW4KLSAgICAgICAgdGhlIFdpbmRvd3MgaGVscCBmb3JtYXQuICBUaGUgQWRkaXRpb25hbCBIZWxwIFNvdXJjZXMgZmVhdHVyZSBvZiB0aGUKLSAgICAgICAgY29uZmlndXJhdGlvbiBHVUkgc3VwcG9ydHMgLmNobSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZmlsZXR5cGVzCi0gICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuICBTdXBwbHkgYSBNZW51IEl0ZW0gdGl0bGUsIGFuZCBlbnRlciB0aGUKLSAgICAgICAgbG9jYXRpb24gaW4gdGhlIEhlbHAgRmlsZSBQYXRoIHNsb3Qgb2YgdGhlIE5ldyBIZWxwIFNvdXJjZSBkaWFsb2cuICBVc2UKLSAgICAgICAgaHR0cDovLyBhbmQvb3Igd3d3LiB0byBpZGVudGlmeSBleHRlcm5hbCBVUkxzLCBvciBkb3dubG9hZCB0aGUgZmlsZSBhbmQKLSAgICAgICAgYnJvd3NlIGZvciBpdHMgcGF0aCBvbiB5b3VyIG1hY2hpbmUgdXNpbmcgdGhlIEJyb3dzZSBidXR0b24uCi0KLSAgICAgICAgQWxsIHVzZXJzIGNhbiBhY2Nlc3MgdGhlIGV4dGVuc2l2ZSBzb3VyY2VzIG9mIGhlbHAsIGluY2x1ZGluZwotICAgICAgICB0dXRvcmlhbHMsIGF2YWlsYWJsZSBhdCBkb2NzLnB5dGhvbi5vcmcuICBTZWxlY3RlZCBVUkxzIGNhbiBiZSBhZGRlZAotICAgICAgICBvciByZW1vdmVkIGZyb20gdGhlIEhlbHAgbWVudSBhdCBhbnkgdGltZSB1c2luZyBDb25maWd1cmUgSURMRS4KLQotQmFzaWMgZWRpdGluZyBhbmQgbmF2aWdhdGlvbjoKLQotICAgICAgICBCYWNrc3BhY2UgZGVsZXRlcyBjaGFyIHRvIHRoZSBsZWZ0OyBERUwgZGVsZXRlcyBjaGFyIHRvIHRoZSByaWdodC4KLSAgICAgICAgQ29udHJvbC1iYWNrc3BhY2UgZGVsZXRlcyB3b3JkIGxlZnQsIENvbnRyb2wtREVMIGRlbGV0ZXMgd29yZCByaWdodC4KLSAgICAgICAgQXJyb3cga2V5cyBhbmQgUGFnZSBVcC9Eb3duIG1vdmUgYXJvdW5kLgotICAgICAgICBDb250cm9sLWxlZnQvcmlnaHQgQXJyb3cgbW92ZXMgYnkgd29yZHMgaW4gYSBzdHJhbmdlIGJ1dCB1c2VmdWwgd2F5LgotICAgICAgICBIb21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZS4KLSAgICAgICAgQ29udHJvbC1Ib21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgZmlsZS4KLSAgICAgICAgU29tZSB1c2VmdWwgRW1hY3MgYmluZGluZ3MgYXJlIGluaGVyaXRlZCBmcm9tIFRjbC9UazoKLSAgICAgICAgICAgICAgICBDb250cm9sLWEgICAgIGJlZ2lubmluZyBvZiBsaW5lCi0gICAgICAgICAgICAgICAgQ29udHJvbC1lICAgICBlbmQgb2YgbGluZQotICAgICAgICAgICAgICAgIENvbnRyb2wtayAgICAga2lsbCBsaW5lIChidXQgZG9lc24ndCBwdXQgaXQgaW4gY2xpcGJvYXJkKQotICAgICAgICAgICAgICAgIENvbnRyb2wtbCAgICAgY2VudGVyIHdpbmRvdyBhcm91bmQgdGhlIGluc2VydGlvbiBwb2ludAotICAgICAgICBTdGFuZGFyZCBrZXliaW5kaW5ncyAobGlrZSBDb250cm9sLWMgdG8gY29weSBhbmQgQ29udHJvbC12IHRvCi0gICAgICAgIHBhc3RlKSBtYXkgd29yay4gIEtleWJpbmRpbmdzIGFyZSBzZWxlY3RlZCBpbiB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nLgotCi1BdXRvbWF0aWMgaW5kZW50YXRpb246Ci0KLSAgICAgICAgQWZ0ZXIgYSBibG9jay1vcGVuaW5nIHN0YXRlbWVudCwgdGhlIG5leHQgbGluZSBpcyBpbmRlbnRlZCBieSA0IHNwYWNlcwotICAgICAgICAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgYnkgb25lIHRhYikuICBBZnRlciBjZXJ0YWluIGtleXdvcmRzCi0gICAgICAgIChicmVhaywgcmV0dXJuIGV0Yy4pIHRoZSBuZXh0IGxpbmUgaXMgZGVkZW50ZWQuICBJbiBsZWFkaW5nCi0gICAgICAgIGluZGVudGF0aW9uLCBCYWNrc3BhY2UgZGVsZXRlcyB1cCB0byA0IHNwYWNlcyBpZiB0aGV5IGFyZSB0aGVyZS4gIFRhYgotICAgICAgICBpbnNlcnRzIHNwYWNlcyAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgb25lIHRhYiksIG51bWJlciBkZXBlbmRzIG9uCi0gICAgICAgIEluZGVudCBXaWR0aC4gQ3VycmVudGx5IHRhYnMgYXJlIHJlc3RyaWN0ZWQgdG8gZm91ciBzcGFjZXMgZHVlCi0gICAgICAgIHRvIFRjbC9UayBsaW1pdGF0aW9ucy4KLQotICAgICAgICBTZWUgYWxzbyB0aGUgaW5kZW50L2RlZGVudCByZWdpb24gY29tbWFuZHMgaW4gdGhlIGVkaXQgbWVudS4KLQotQ29tcGxldGlvbnM6Ci0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIHN1cHBsaWVkIGZvciBmdW5jdGlvbnMsIGNsYXNzZXMsIGFuZCBhdHRyaWJ1dGVzIG9mCi0gICAgICAgIGNsYXNzZXMsIGJvdGggYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZC4gIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkCi0gICAgICAgIGZvciBmaWxlbmFtZXMuCi0KLSAgICAgICAgVGhlIEF1dG9Db21wbGV0ZVdpbmRvdyAoQUNXKSB3aWxsIG9wZW4gYWZ0ZXIgYSBwcmVkZWZpbmVkIGRlbGF5Ci0gICAgICAgIChkZWZhdWx0IGlzIHR3byBzZWNvbmRzKSBhZnRlciBhICcuJyBvciAoaW4gYSBzdHJpbmcpIGFuIG9zLnNlcCBpcwotICAgICAgICB0eXBlZC4gIElmIGFmdGVyIG9uZSBvZiB0aG9zZSBjaGFyYWN0ZXJzIChwbHVzIHplcm8gb3IgbW9yZSBvdGhlcgotICAgICAgICBjaGFyYWN0ZXJzKSBhIHRhYiBpcyB0eXBlZCB0aGUgQUNXIHdpbGwgb3BlbiBpbW1lZGlhdGVseSBpZiBhIHBvc3NpYmxlCi0gICAgICAgIGNvbnRpbnVhdGlvbiBpcyBmb3VuZC4KLQotICAgICAgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIGZvciB0aGUgY2hhcmFjdGVycyBlbnRlcmVkLCBhCi0gICAgICAgIHRhYiB3aWxsIHN1cHBseSB0aGF0IGNvbXBsZXRpb24gd2l0aG91dCBvcGVuaW5nIHRoZSBBQ1cuCi0KLSAgICAgICAgJ1Nob3cgQ29tcGxldGlvbnMnIHdpbGwgZm9yY2Ugb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdywgYnkgZGVmYXVsdCB0aGUKLSAgICAgICAgQ29udHJvbC1zcGFjZSBrZXlzIHdpbGwgb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdy4gIEluIGFuIGVtcHR5Ci0gICAgICAgIHN0cmluZywgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIE9uIGEKLSAgICAgICAgYmxhbmsgbGluZSwgaXQgd2lsbCBjb250YWluIHRoZSBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQKLSAgICAgICAgY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gIElmIHNvbWUKLSAgICAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gZW50ZXJlZCwgdGhlIEFDVyB3aWxsIGF0dGVtcHQgdG8gYmUgbW9yZSBzcGVjaWZpYy4KLQotICAgICAgICBJZiBzdHJpbmcgb2YgY2hhcmFjdGVycyBpcyB0eXBlZCwgdGhlIEFDVyBzZWxlY3Rpb24gd2lsbCBqdW1wIHRvIHRoZQotICAgICAgICBlbnRyeSBtb3N0IGNsb3NlbHkgbWF0Y2hpbmcgdGhvc2UgY2hhcmFjdGVycy4gRW50ZXJpbmcgYSB0YWIgd2lsbCBjYXVzZQotICAgICAgICB0aGUgbG9uZ2VzdCBub24tYW1iaWd1b3VzIG1hdGNoIHRvIGJlIGVudGVyZWQgaW4gdGhlIEVkaXQgd2luZG93IG9yCi0gICAgICAgIFNoZWxsLiAgVHdvIHRhYnMgaW4gYSByb3cgd2lsbCBzdXBwbHkgdGhlIGN1cnJlbnQgQUNXIHNlbGVjdGlvbiwgYXMKLSAgICAgICAgd2lsbCByZXR1cm4gb3IgYSBkb3VibGUgY2xpY2suICBDdXJzb3Iga2V5cywgUGFnZSBVcC9Eb3duLCBtb3VzZQotICAgICAgICBzZWxlY3Rpb24sIGFuZCB0aGUgc2Nyb2xsIHdoZWVsIGFsbCBvcGVyYXRlIG9uIHRoZSBBQ1cuCi0KLSAgICAgICAgIkhpZGRlbiIgYXR0cmlidXRlcyBjYW4gYmUgYWNjZXNzZWQgYnkgdHlwaW5nIHRoZSBiZWdpbm5pbmcgb2YgaGlkZGVuCi0gICAgICAgIG5hbWUgYWZ0ZXIgYSAnLicsICBlLmcuICdfJy4gIFRoaXMgYWxsb3dzIGFjY2VzcyB0byBtb2R1bGVzIHdpdGgKLSAgICAgICAgJ19fYWxsX18nIHNldCwgb3IgdG8gY2xhc3MtcHJpdmF0ZSBhdHRyaWJ1dGVzLgotCi0gICAgICAgIENvbXBsZXRpb25zIGFuZCB0aGUgJ0V4cGFuZCBXb3JkJyBmYWNpbGl0eSBjYW4gc2F2ZSBhIGxvdCBvZiB0eXBpbmchCi0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIGN1cnJlbnRseSBsaW1pdGVkIHRvIHRob3NlIGluIHRoZSBuYW1lc3BhY2VzLiAgTmFtZXMgaW4KLSAgICAgICAgYW4gRWRpdG9yIHdpbmRvdyB3aGljaCBhcmUgbm90IHZpYSBfX21haW5fXyBvciBzeXMubW9kdWxlcyB3aWxsIG5vdCBiZQotICAgICAgICBmb3VuZC4gIFJ1biB0aGUgbW9kdWxlIG9uY2Ugd2l0aCB5b3VyIGltcG9ydHMgdG8gY29ycmVjdCB0aGlzCi0gICAgICAgIHNpdHVhdGlvbi4gIE5vdGUgdGhhdCBJRExFIGl0c2VsZiBwbGFjZXMgcXVpdGUgYSBmZXcgbW9kdWxlcyBpbgotICAgICAgICBzeXMubW9kdWxlcywgc28gbXVjaCBjYW4gYmUgZm91bmQgYnkgZGVmYXVsdCwgZS5nLiB0aGUgcmUgbW9kdWxlLgotCi0gICAgICAgIElmIHlvdSBkb24ndCBsaWtlIHRoZSBBQ1cgcG9wcGluZyB1cCB1bmJpZGRlbiwgc2ltcGx5IG1ha2UgdGhlIGRlbGF5Ci0gICAgICAgIGxvbmdlciBvciBkaXNhYmxlIHRoZSBleHRlbnNpb24uICBPciBhbm90aGVyIG9wdGlvbiBpcyB0aGUgZGVsYXkgY291bGQKLSAgICAgICAgYmUgc2V0IHRvIHplcm8uIEFub3RoZXIgYWx0ZXJuYXRpdmUgdG8gcHJldmVudGluZyBBQ1cgcG9wdXBzIGlzIHRvCi0gICAgICAgIGRpc2FibGUgdGhlIGNhbGwgdGlwcyBleHRlbnNpb24uCi0KLVB5dGhvbiBTaGVsbCB3aW5kb3c6Ci0KLSAgICAgICAgQ29udHJvbC1jIGludGVycnVwdHMgZXhlY3V0aW5nIGNvbW1hbmQuCi0gICAgICAgIENvbnRyb2wtZCBzZW5kcyBlbmQtb2YtZmlsZTsgY2xvc2VzIHdpbmRvdyBpZiB0eXBlZCBhdCA+Pj4gcHJvbXB0LgotICAgICAgICBBbHQtLyBleHBhbmQgd29yZCBpcyBhbHNvIHVzZWZ1bCB0byByZWR1Y2UgdHlwaW5nLgotCi0gICAgQ29tbWFuZCBoaXN0b3J5OgotCi0gICAgICAgIEFsdC1wIHJldHJpZXZlcyBwcmV2aW91cyBjb21tYW5kIG1hdGNoaW5nIHdoYXQgeW91IGhhdmUgdHlwZWQuIE9uIE9TIFgKLSAgICAgICAgdXNlIENvbnRyb2wtcC4KLSAgICAgICAgQWx0LW4gcmV0cmlldmVzIG5leHQuIE9uIE9TIFggdXNlIENvbnRyb2wtbi4KLSAgICAgICAgUmV0dXJuIHdoaWxlIGN1cnNvciBpcyBvbiBhIHByZXZpb3VzIGNvbW1hbmQgcmV0cmlldmVzIHRoYXQgY29tbWFuZC4KLQotICAgIFN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgVGhlIGNvbG9yaW5nIGlzIGFwcGxpZWQgaW4gYSBiYWNrZ3JvdW5kICJ0aHJlYWQiLCBzbyB5b3UgbWF5Ci0gICAgICAgIG9jY2FzaW9uYWxseSBzZWUgdW5jb2xvcml6ZWQgdGV4dC4gIFRvIGNoYW5nZSB0aGUgY29sb3IKLSAgICAgICAgc2NoZW1lLCB1c2UgdGhlIENvbmZpZ3VyZSBJRExFIC8gSGlnaGxpZ2h0aW5nIGRpYWxvZy4KLQotICAgIFB5dGhvbiBkZWZhdWx0IHN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgS2V5d29yZHMgICAgICAgIG9yYW5nZQotICAgICAgICBCdWlsdGlucyAgICAgICAgcm95YWwgcHVycGxlCi0gICAgICAgIFN0cmluZ3MgICAgICAgICBncmVlbgotICAgICAgICBDb21tZW50cyAgICAgICAgcmVkCi0gICAgICAgIERlZmluaXRpb25zICAgICBibHVlCi0KLSAgICBTaGVsbCBkZWZhdWx0IGNvbG9yczoKLQotICAgICAgICBDb25zb2xlIG91dHB1dCAgYnJvd24KLSAgICAgICAgc3Rkb3V0ICAgICAgICAgIGJsdWUKLSAgICAgICAgc3RkZXJyICAgICAgICAgIHJlZAotICAgICAgICBzdGRpbiAgICAgICAgICAgYmxhY2sKLQotT3RoZXIgcHJlZmVyZW5jZXM6Ci0KLSAgICAgICAgVGhlIGZvbnQgcHJlZmVyZW5jZXMsIGhpZ2hsaWdodGluZywga2V5cywgYW5kIGdlbmVyYWwgcHJlZmVyZW5jZXMgY2FuCi0gICAgICAgIGJlIGNoYW5nZWQgdmlhIHRoZSBDb25maWd1cmUgSURMRSBtZW51IG9wdGlvbi4gIEJlIHN1cmUgdG8gbm90ZSB0aGF0Ci0gICAgICAgIGtleXMgY2FuIGJlIHVzZXIgZGVmaW5lZCwgSURMRSBzaGlwcyB3aXRoIGZvdXIgYnVpbHQgaW4ga2V5IHNldHMuIEluCi0gICAgICAgIGFkZGl0aW9uIGEgdXNlciBjYW4gY3JlYXRlIGEgY3VzdG9tIGtleSBzZXQgaW4gdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUga2V5cyB0YWIuCi0KLUNvbW1hbmQgbGluZSB1c2FnZToKLQotICAgICAgICBFbnRlciBpZGxlIC1oIGF0IHRoZSBjb21tYW5kIHByb21wdCB0byBnZXQgYSB1c2FnZSBtZXNzYWdlLgotCi0gICAgICAgIGlkbGUucHkgWy1jIGNvbW1hbmRdIFstZF0gWy1lXSBbLXNdIFstdCB0aXRsZV0gW2FyZ10gLi4uCi0KLSAgICAgICAgLWMgY29tbWFuZCAgcnVuIHRoaXMgY29tbWFuZAotICAgICAgICAtZCAgICAgICAgICBlbmFibGUgZGVidWdnZXIKLSAgICAgICAgLWUgICAgICAgICAgZWRpdCBtb2RlOyBhcmd1bWVudHMgYXJlIGZpbGVzIHRvIGJlIGVkaXRlZAotICAgICAgICAtcyAgICAgICAgICBydW4gJElETEVTVEFSVFVQIG9yICRQWVRIT05TVEFSVFVQIGZpcnN0Ci0gICAgICAgIC10IHRpdGxlICAgIHNldCB0aXRsZSBvZiBzaGVsbCB3aW5kb3cKLQotICAgICAgICBJZiB0aGVyZSBhcmUgYXJndW1lbnRzOgotICAgICAgICAxLiBJZiAtZSBpcyB1c2VkLCBhcmd1bWVudHMgYXJlIGZpbGVzIG9wZW5lZCBmb3IgZWRpdGluZyBhbmQgc3lzLmFyZ3YKLSAgICAgICAgICAgcmVmbGVjdHMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gSURMRSBpdHNlbGYuCi0gICAgICAgIDIuIE90aGVyd2lzZSwgaWYgLWMgaXMgdXNlZCwgYWxsIGFyZ3VtZW50cyBhcmUgcGxhY2VkIGluCi0gICAgICAgICAgIHN5cy5hcmd2WzE6Li4uXSwgd2l0aCBzeXMuYXJndlswXSBzZXQgdG8gLWMuCi0gICAgICAgIDMuIE90aGVyd2lzZSwgaWYgbmVpdGhlciAtZSBub3IgLWMgaXMgdXNlZCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEKLSAgICAgICAgICAgc2NyaXB0IHdoaWNoIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4KLSAgICAgICAgICAgc3lzLmFyZ3ZbMTouLi5dICBhbmQgc3lzLmFyZ3ZbMF0gc2V0IHRvIHRoZSBzY3JpcHQgbmFtZS4gIElmIHRoZQotICAgICAgICAgICBzY3JpcHQgbmFtZSBpcyAtLCBubyBzY3JpcHQgaXMgZXhlY3V0ZWQgYnV0IGFuIGludGVyYWN0aXZlIFB5dGhvbgotICAgICAgICAgICBzZXNzaW9uIGlzIHN0YXJ0ZWQ7IHRoZSBhcmd1bWVudHMgYXJlIHN0aWxsIGF2YWlsYWJsZSBpbiBzeXMuYXJndi4KLQotUnVubmluZyB3aXRob3V0IGEgc3VicHJvY2VzczogKERFUFJFQ0FURUQgaW4gUHl0aG9uIDMuNCBzZWUgSXNzdWUgMTYxMjMpCi0KLSAgICAgICAgSWYgSURMRSBpcyBzdGFydGVkIHdpdGggdGhlIC1uIGNvbW1hbmQgbGluZSBzd2l0Y2ggaXQgd2lsbCBydW4gaW4gYQotICAgICAgICBzaW5nbGUgcHJvY2VzcyBhbmQgd2lsbCBub3QgY3JlYXRlIHRoZSBzdWJwcm9jZXNzIHdoaWNoIHJ1bnMgdGhlIFJQQwotICAgICAgICBQeXRob24gZXhlY3V0aW9uIHNlcnZlci4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiBQeXRob24gY2Fubm90IGNyZWF0ZQotICAgICAgICB0aGUgc3VicHJvY2VzcyBvciB0aGUgUlBDIHNvY2tldCBpbnRlcmZhY2Ugb24geW91ciBwbGF0Zm9ybS4gIEhvd2V2ZXIsCi0gICAgICAgIGluIHRoaXMgbW9kZSB1c2VyIGNvZGUgaXMgbm90IGlzb2xhdGVkIGZyb20gSURMRSBpdHNlbGYuICBBbHNvLCB0aGUKLSAgICAgICAgZW52aXJvbm1lbnQgaXMgbm90IHJlc3RhcnRlZCB3aGVuIFJ1bi9SdW4gTW9kdWxlIChGNSkgaXMgc2VsZWN0ZWQuICBJZgotICAgICAgICB5b3VyIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQsIHlvdSBtdXN0IHJlbG9hZCgpIHRoZSBhZmZlY3RlZCBtb2R1bGVzIGFuZAotICAgICAgICByZS1pbXBvcnQgYW55IHNwZWNpZmljIGl0ZW1zIChlLmcuIGZyb20gZm9vIGltcG9ydCBiYXopIGlmIHRoZSBjaGFuZ2VzCi0gICAgICAgIGFyZSB0byB0YWtlIGVmZmVjdC4gIEZvciB0aGVzZSByZWFzb25zLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHJ1biBJRExFCi0gICAgICAgIHdpdGggdGhlIGRlZmF1bHQgc3VicHJvY2VzcyBpZiBhdCBhbGwgcG9zc2libGUuCi0KLUV4dGVuc2lvbnM6Ci0KLSAgICAgICAgSURMRSBjb250YWlucyBhbiBleHRlbnNpb24gZmFjaWxpdHkuICBTZWUgdGhlIGJlZ2lubmluZyBvZgotICAgICAgICBjb25maWctZXh0ZW5zaW9ucy5kZWYgaW4gdGhlIGlkbGVsaWIgZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotICAgICAgICBUaGUgZGVmYXVsdCBleHRlbnNpb25zIGFyZSBjdXJyZW50bHk6Ci0KLSAgICAgICAgICAgICAgICBGb3JtYXRQYXJhZ3JhcGgKLSAgICAgICAgICAgICAgICBBdXRvRXhwYW5kCi0gICAgICAgICAgICAgICAgWm9vbUhlaWdodAotICAgICAgICAgICAgICAgIFNjcmlwdEJpbmRpbmcKLSAgICAgICAgICAgICAgICBDYWxsVGlwcwotICAgICAgICAgICAgICAgIFBhcmVuTWF0Y2gKLSAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUKLSAgICAgICAgICAgICAgICBDb2RlQ29udGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CmluZGV4IGE4Zjc1ZDIuLjA3MWJkM2UgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKQEAgLTEsMTEgKzEsMTMgQEAKICIiIkFib3V0IERpYWxvZyBmb3IgSURMRQogCiAiIiIKLQogaW1wb3J0IG9zCiBmcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgorCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcKKworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldworCiAKIGNsYXNzIEFib3V0RGlhbG9nKFRvcGxldmVsKToKICAgICAiIiJNb2RhbCBhYm91dCBkaWFsb2cgZm9yIGlkbGUKQEAgLTEzNSwxNyArMTM3LDE4IEBACiAgICAgZGVmIGRpc3BsYXlfcHJpbnRlcl90ZXh0KHNlbGYsIHRpdGxlLCBwcmludGVyKToKICAgICAgICAgcHJpbnRlci5fUHJpbnRlcl9fc2V0dXAoKQogICAgICAgICB0ZXh0ID0gJ1xuJy5qb2luKHByaW50ZXIuX1ByaW50ZXJfX2xpbmVzKQotICAgICAgICB0ZXh0Vmlldy52aWV3X3RleHQoc2VsZiwgdGl0bGUsIHRleHQpCisgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dChzZWxmLCB0aXRsZSwgdGV4dCkKIAogICAgIGRlZiBkaXNwbGF5X2ZpbGVfdGV4dChzZWxmLCB0aXRsZSwgZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBmbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksIGZpbGVuYW1lKQotICAgICAgICB0ZXh0Vmlldy52aWV3X2ZpbGUoc2VsZiwgdGl0bGUsIGZuLCBlbmNvZGluZykKKyAgICAgICAgdGV4dHZpZXcudmlld19maWxlKHNlbGYsIHRpdGxlLCBmbiwgZW5jb2RpbmcpCiAKICAgICBkZWYgT2soc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hlbHBhYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGVscF9hYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihBYm91dERpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaGlzdG9yeS5weQppbmRleCAwNzhhZjI5Li41NmY1M2EwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9oaXN0b3J5LnB5CkBAIC0xLDExICsxLDEyIEBACiAiSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20gd2l0aCBIaXN0b3J5IGNsYXNzIgogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgSGlzdG9yeToKICAgICAnJycgSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20uCiAKLSAgICBzdG9yZSAtIFN0b3JlIHNvdXJjZSBzdGF0ZW1lbnQgKGNhbGxlZCBmcm9tIFB5U2hlbGwucmVzZXRvdXRwdXQpLgorICAgIHN0b3JlIC0gU3RvcmUgc291cmNlIHN0YXRlbWVudCAoY2FsbGVkIGZyb20gcHlzaGVsbC5yZXNldG91dHB1dCkuCiAgICAgZmV0Y2ggLSBGZXRjaCBzdG9yZWQgc3RhdGVtZW50IG1hdGNoaW5nIHByZWZpeCBhbHJlYWR5IGVudGVyZWQuCiAgICAgaGlzdG9yeV9uZXh0IC0gQm91bmQgdG8gPDxoaXN0b3J5LW5leHQ+PiBldmVudCAoZGVmYXVsdCBBbHQtTikuCiAgICAgaGlzdG9yeV9wcmV2IC0gQm91bmQgdG8gPDxoaXN0b3J5LXByZXY+PiBldmVudCAoZGVmYXVsdCBBbHQtUCkuCkBAIC05OSw2ICsxMDAsNyBAQAogICAgICAgICBzZWxmLnBvaW50ZXIgPSBOb25lCiAgICAgICAgIHNlbGYucHJlZml4ID0gTm9uZQogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgotICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaWRsZWhpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CmluZGV4IDc3Y2IwNTcuLjQ1MGE3MDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CkBAIC00LDExICs0LDEwIEBACiBwcm9wZXIgaW5kZW50YXRpb24gb2YgY29kZS4gIEh5cGVyUGFyc2VyIGdpdmVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24KIHRoZSBzdHJ1Y3R1cmUgb2YgY29kZS4KICIiIgotCi1pbXBvcnQgc3RyaW5nCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVBhcnNlCitpbXBvcnQgc3RyaW5nCiAKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlwYXJzZQogCiAjIGFsbCBBU0NJSSBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCiBfQVNDSUlfSURfQ0hBUlMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iKQpAQCAtMzAsNyArMjksNyBAQAogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBlZGl0d2luLnRleHQKIAotICAgICAgICBwYXJzZXIgPSBQeVBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQorICAgICAgICBwYXJzZXIgPSBweXBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQogCiAgICAgICAgIGRlZiBpbmRleDJsaW5lKGluZGV4KToKICAgICAgICAgICAgIHJldHVybiBpbnQoZmxvYXQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZS5weSBiL0xpYi9pZGxlbGliL2lkbGUucHkKaW5kZXggMTQxNTM0ZC4uNDg1ZDVhNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAorCiAjIEVuYWJsZSBydW5uaW5nIElETEUgd2l0aCBpZGxlbGliIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uLgogIyBUaGlzIHdhcyBvbmNlIHVzZWQgdG8gcnVuIGRldmVsb3BtZW50IHZlcnNpb25zIG9mIElETEUuCiAjIEJlY2F1c2UgUEVQIDQzNCBkZWNsYXJlZCBpZGxlLnB5IGEgcHVibGljIGludGVyZmFjZSwKQEAgLTksNSArMTAsNSBAQAogaWYgaWRsZWxpYl9kaXIgbm90IGluIHN5cy5wYXRoOgogICAgIHN5cy5wYXRoLmluc2VydCgwLCBpZGxlbGliX2RpcikKIAotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLnB5dyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CmluZGV4IDE0MmNiMzIuLmU3M2MwNDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGUucHl3CisrKyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CkBAIC0xLDEwICsxLDEwIEBACiB0cnk6Ci0gICAgaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAorICAgIGltcG9ydCBpZGxlbGliLnB5c2hlbGwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIElETEUgaXMgbm90IGluc3RhbGxlZCwgYnV0IG1heWJlIFB5U2hlbGwgaXMgb24gc3lzLnBhdGg6Ci0gICAgZnJvbSAuIGltcG9ydCBQeVNoZWxsCisgICAgIyBJRExFIGlzIG5vdCBpbnN0YWxsZWQsIGJ1dCBtYXliZSBweXNoZWxsIGlzIG9uIHN5cy5wYXRoOgorICAgIGZyb20gLiBpbXBvcnQgcHlzaGVsbAogICAgIGltcG9ydCBvcwotICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKFB5U2hlbGwuX19maWxlX18pKQorICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHB5c2hlbGwuX19maWxlX18pKQogICAgIGlmIGlkbGVkaXIgIT0gb3MuZ2V0Y3dkKCk6CiAgICAgICAgICMgV2UncmUgbm90IGluIHRoZSBJRExFIGRpcmVjdG9yeSwgaGVscCB0aGUgc3VicHJvY2VzcyBmaW5kIHJ1bi5weQogICAgICAgICBweXBhdGggPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OUEFUSCcsICcnKQpAQCAtMTIsNiArMTIsNiBAQAogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gcHlwYXRoICsgJzonICsgaWRsZWRpcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gaWRsZWRpcgotICAgIFB5U2hlbGwubWFpbigpCisgICAgcHlzaGVsbC5tYWluKCkKIGVsc2U6Ci0gICAgaWRsZWxpYi5QeVNoZWxsLm1haW4oKQorICAgIGlkbGVsaWIucHlzaGVsbC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQppbmRleCA4NDVjOTJkLi5hZDA2N2I0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CkBAIC0xLDYgKzEsOCBAQAogJycnaWRsZWxpYi5pZGxlX3Rlc3QgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlLAogd2hpY2ggdGVzdHMgdGhlIElETEUgYXBwbGljYXRpb24gYXMgcGFydCBvZiB0aGUgc3RkbGliIHRlc3Qgc3VpdGUuCiBSdW4gSURMRSB0ZXN0cyBhbG9uZSB3aXRoICJweXRob24gLW0gdGVzdC50ZXN0X2lkbGUiLgorU3RhcnRpbmcgd2l0aCBQeXRob24gMy42LCBJRExFIHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgbGF0ZXIuCisKIFRoaXMgcGFja2FnZSBhbmQgaXRzIGNvbnRhaW5lZCBtb2R1bGVzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSBhbmQKIGFueSBkaXJlY3QgdXNlIGlzIGF0IHlvdXIgb3duIHJpc2suCiAnJycKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQppbmRleCA1OGU2MmNiLi42ZjY3NmFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CkBAIC01OSwxOSArNTksMjAgQEAKIAogCiBNb2R1bGVzIGFuZCBjbGFzc2VzIG5vdCBiZWluZyB0ZXN0ZWQgYXQgdGhlIG1vbWVudDoKLVB5U2hlbGwuUHlTaGVsbEVkaXRvcldpbmRvdwotRGVidWdnZXIuRGVidWdnZXIKLUF1dG9Db21wbGV0ZVdpbmRvdy5BdXRvQ29tcGxldGVXaW5kb3cKLU91dHB1dFdpbmRvdy5PdXRwdXRXaW5kb3cgKGluZGlyZWN0bHkgYmVpbmcgdGVzdGVkIHdpdGggZ3JlcCB0ZXN0KQorcHlzaGVsbC5QeVNoZWxsRWRpdG9yV2luZG93CitkZWJ1Z2dlci5EZWJ1Z2dlcgorYXV0b2NvbXBsZXRlX3cuQXV0b0NvbXBsZXRlV2luZG93CitvdXR3aW4uT3V0cHV0V2luZG93IChpbmRpcmVjdGx5IGJlaW5nIHRlc3RlZCB3aXRoIGdyZXAgdGVzdCkKICcnJwogCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW1wb3J0X21vZHVsZQotZnJvbSBpZGxlbGliLm1hY29zeFN1cHBvcnQgaW1wb3J0IF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK3RrLk5vRGVmYXVsdFJvb3QoKQogCiBBYm91dERpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2Fib3V0RGlhbG9nJywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnYWJvdXREaWFsb2cgdGVzdCcsCisgICAgJ2ZpbGUnOiAnaGVscF9hYm91dCcsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ2hlbHBfYWJvdXQgdGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsCiAgICAgICAgICAgICAgfSwKICAgICAnbXNnJzogIlRlc3QgZXZlcnkgYnV0dG9uLiBFbnN1cmUgUHl0aG9uLCBUSyBhbmQgSURMRSB2ZXJzaW9ucyAiCkBAIC03OSwxNCArODAsMTQgQEAKICAgICB9CiAKIF9jYWxsdGlwX3dpbmRvd19zcGVjID0gewotICAgICdmaWxlJzogJ0NhbGxUaXBXaW5kb3cnLAorICAgICdmaWxlJzogJ2NhbGx0aXBfdycsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlR5cGluZyAnKCcgc2hvdWxkIGRpc3BsYXkgYSBjYWxsdGlwLlxuIgogICAgICAgICAgICAiVHlwaW5nICcpIHNob3VsZCBoaWRlIHRoZSBjYWxsdGlwLlxuIgogICAgIH0KIAogX2NsYXNzX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdDbGFzc0Jyb3dzZXInLAorICAgICdmaWxlJzogJ2Jyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJJbnNwZWN0IG5hbWVzIG9mIG1vZHVsZSwgY2xhc3Mod2l0aCBzdXBlcmNsYXNzIGlmICIKICAgICAgICAgICAgImFwcGxpY2FibGUpLCBtZXRob2RzIGFuZCBmdW5jdGlvbnMuXG5Ub2dnbGUgbmVzdGVkIGl0ZW1zLlxuIgpAQCAtOTUsNyArOTYsNyBAQAogICAgIH0KIAogX2NvbG9yX2RlbGVnYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ0NvbG9yRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICdjb2xvcml6ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgdGV4dCBpcyBzYW1wbGUgUHl0aG9uIGNvZGUuXG4iCiAgICAgICAgICAgICJFbnN1cmUgY29tcG9uZW50cyBsaWtlIGNvbW1lbnRzLCBrZXl3b3JkcywgYnVpbHRpbnMsXG4iCkBAIC0xMDQsNyArMTA1LDcgQEAKICAgICB9CiAKIENvbmZpZ0RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ0RpYWxvZycsCisgICAgJ2ZpbGUnOiAnY29uZmlnZGlhbG9nJywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnQ29uZmlnRGlhbG9nVGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsfSwKICAgICAnbXNnJzogIklETEUgcHJlZmVyZW5jZXMgZGlhbG9nLlxuIgpAQCAtMTIxLDcgKzEyMiw3IEBACiAKICMgVE9ETyBJbXByb3ZlIG1lc3NhZ2UKIF9keW5fb3B0aW9uX21lbnVfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdkeW5PcHRpb25NZW51V2lkZ2V0JywKKyAgICAnZmlsZSc6ICdkeW5vcHRpb24nLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJTZWxlY3Qgb25lIG9mIHRoZSBtYW55IG9wdGlvbnMgaW4gdGhlICdvbGQgb3B0aW9uIHNldCcuXG4iCiAgICAgICAgICAgICJDbGljayB0aGUgYnV0dG9uIHRvIGNoYW5nZSB0aGUgb3B0aW9uIHNldC5cbiIKQEAgLTEzMCwzOSArMTMxLDE1IEBACiAKICMgVE9ETyBlZGl0IHdyYXBwZXIKIF9lZGl0b3Jfd2luZG93X3NwZWMgPSB7Ci0gICAnZmlsZSc6ICdFZGl0b3JXaW5kb3cnLAorICAgJ2ZpbGUnOiAnZWRpdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGVzdCBlZGl0b3IgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuIgogICAgICAgICAgICAiQmVzdCB0byBjbG9zZSBlZGl0b3IgZmlyc3QuIgogICAgIH0KIAotR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdTZWN0aW9uTmFtZURpYWxvZycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzonR2V0IE5hbWUnLAotICAgICAgICAgICAgICdtZXNzYWdlJzonRW50ZXIgc29tZXRoaW5nJywKLSAgICAgICAgICAgICAndXNlZF9uYW1lcyc6IHsnYWJjJ30sCi0gICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAotICAgICdtc2cnOiAiQWZ0ZXIgdGhlIHRleHQgZW50ZXJlZCB3aXRoIFtPa10gaXMgc3RyaXBwZWQsIDxub3RoaW5nPiwgIgotICAgICAgICAgICAiJ2FiYycsIG9yIG1vcmUgdGhhdCAzMCBjaGFycyBhcmUgZXJyb3JzLlxuIgotICAgICAgICAgICAiQ2xvc2UgJ0dldCBOYW1lJyB3aXRoIGEgdmFsaWQgZW50cnkgKHByaW50ZWQgdG8gU2hlbGwpLCAiCi0gICAgICAgICAgICJbQ2FuY2VsXSwgb3IgW1hdIiwKLSAgICB9Ci0KLUdldEhlbHBTb3VyY2VEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdIZWxwU291cmNlRWRpdCcsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0dldCBoZWxwc291cmNlJywKLSAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCi0gICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiAiCi0gICAgICAgICAgICI8bm90aGluZz4gYW5kIG1vcmUgdGhhbiAzMCBjaGFycyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCi0gICAgICAgICAgICI8bm90aGluZz4sIGZpbGUgZG9lcyBub3QgZXhpc3QgYXJlIGludmFsaWQgcGF0aCBpdGVtcy5cbiIKLSAgICAgICAgICAgIlRlc3QgZm9yIGluY29tcGxldGUgd2ViIGFkZHJlc3MgZm9yIGhlbHAgZmlsZSBwYXRoLlxuIgotICAgICAgICAgICAiQSB2YWxpZCBlbnRyeSB3aWxsIGJlIHByaW50ZWQgdG8gc2hlbGwgd2l0aCBbMGtdLlxuIgotICAgICAgICAgICAiW0NhbmNlbF0gd2lsbCBwcmludCBOb25lIHRvIHNoZWxsIiwKLSAgICB9Ci0KICMgVXBkYXRlIG9uY2UgaXNzdWUyMTUxOSBpcyByZXNvbHZlZC4KIEdldEtleXNEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdrZXliaW5kaW5nRGlhbG9nJywKKyAgICAnZmlsZSc6ICdjb25maWdfa2V5JywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCBrZXliaW5kaW5ncycsCiAgICAgICAgICAgICAgJ2FjdGlvbic6ICdmaW5kLWFnYWluJywKICAgICAgICAgICAgICAnY3VycmVudEtleVNlcXVlbmNlcyc6IFsnJ10gLApAQCAtMTc3LDcgKzE1NCw3IEBACiAgICAgfQogCiBfZ3JlcF9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdHcmVwRGlhbG9nJywKKyAgICAnZmlsZSc6ICdncmVwJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTaG93IEdyZXBEaWFsb2cnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdGhlIHZhcmlvdXMgJ0ZpbmQtaW4tZmlsZXMnIGZ1bmN0aW9ucy5cbiIKQEAgLTE4Niw4ICsxNjMsMjQgQEAKICAgICAgICAgICAgInNob3VsZCBvcGVuIHRoYXQgZmlsZSBcbmluIGEgbmV3IEVkaXRvcldpbmRvdy4iCiAgICAgfQogCitIZWxwU291cmNlX3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdIZWxwIG5hbWUgYW5kIHNvdXJjZScsCisgICAgICAgICAgICAgJ21lbnVpdGVtJzogJ3Rlc3QnLAorICAgICAgICAgICAgICdmaWxlcGF0aCc6IF9fZmlsZV9fLAorICAgICAgICAgICAgICd1c2VkX25hbWVzJzogeydhYmMnfSwKKyAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCisgICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiIKKyAgICAgICAgICAgIicnLCA+IHRoYW4gMzAgY2hhcnMsIGFuZCAnYWJjJyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCisgICAgICAgICAgICInJyBhbmQgZmlsZSBkb2VzIG5vdCBleGlzdCBhcmUgaW52YWxpZCBwYXRoIGl0ZW1zLlxuIgorICAgICAgICAgICAiQW55IHVybCAoJ3d3dy4uLicsICdodHRwLi4uJykgaXMgYWNjZXB0ZWQuXG4iCisgICAgICAgICAgICJUZXN0IEJyb3dzZSB3aXRoIGFuZCB3aXRob3V0IHBhdGgsIGFzIGNhbm5vdCB1bml0dGVzdC5cbiIKKyAgICAgICAgICAgIltPa10gb3IgPFJldHVybj4gcHJpbnRzIHZhbGlkIGVudHJ5IHRvIHNoZWxsXG4iCisgICAgICAgICAgICJbQ2FuY2VsXSBvciA8RXNjYXBlPiBwcmludHMgTm9uZSB0byBzaGVsbCIKKyAgICB9CisKIF9pb19iaW5kaW5nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnSU9CaW5kaW5nJywKKyAgICAnZmlsZSc6ICdpb21lbnUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IHRoZSBmb2xsb3dpbmcgYmluZGluZ3MuXG4iCiAgICAgICAgICAgICI8Q29udHJvbC1vPiB0byBvcGVuIGZpbGUgZnJvbSBkaWFsb2cuXG4iCkBAIC0yMDAsNyArMTkzLDcgQEAKICAgICB9CiAKIF9tdWx0aV9jYWxsX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlDYWxsJywKKyAgICAnZmlsZSc6ICdtdWx0aWNhbGwnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgZm9sbG93aW5nIGFjdGlvbnMgc2hvdWxkIHRyaWdnZXIgYSBwcmludCB0byBjb25zb2xlIG9yIElETEUiCiAgICAgICAgICAgICIgU2hlbGwuXG5FbnRlcmluZyBhbmQgbGVhdmluZyB0aGUgdGV4dCBhcmVhLCBrZXkgZW50cnksICIKQEAgLTIxMCwxNCArMjAzLDE0IEBACiAgICAgfQogCiBfbXVsdGlzdGF0dXNfYmFyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlTdGF0dXNCYXInLAorICAgICdmaWxlJzogJ3N0YXR1c2JhcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkVuc3VyZSBwcmVzZW5jZSBvZiBtdWx0aS1zdGF0dXMgYmFyIGJlbG93IHRleHQgYXJlYS5cbiIKICAgICAgICAgICAgIkNsaWNrICdVcGRhdGUgU3RhdHVzJyB0byBjaGFuZ2UgdGhlIG11bHRpLXN0YXR1cyB0ZXh0IgogICAgIH0KIAogX29iamVjdF9icm93c2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnT2JqZWN0QnJvd3NlcicsCisgICAgJ2ZpbGUnOiAnZGVidWdvYmonLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJEb3VibGUgY2xpY2sgb24gaXRlbXMgdXB0byB0aGUgbG93ZXN0IGxldmVsLlxuIgogICAgICAgICAgICAiQXR0cmlidXRlcyBvZiB0aGUgb2JqZWN0cyBhbmQgcmVsYXRlZCBpbmZvcm1hdGlvbiAiCkBAIC0yMjUsNyArMjE4LDcgQEAKICAgICB9CiAKIF9wYXRoX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdQYXRoQnJvd3NlcicsCisgICAgJ2ZpbGUnOiAncGF0aGJyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IGZvciBjb3JyZWN0IGRpc3BsYXkgb2YgYWxsIHBhdGhzIGluIHN5cy5wYXRoLlxuIgogICAgICAgICAgICAiVG9nZ2xlIG5lc3RlZCBpdGVtcyB1cHRvIHRoZSBsb3dlc3QgbGV2ZWwuXG4iCkBAIC0yMzQsNyArMjI3LDcgQEAKICAgICB9CiAKIF9wZXJjb2xhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUGVyY29sYXRvcicsCisgICAgJ2ZpbGUnOiAncGVyY29sYXRvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZXJlIGFyZSB0d28gdHJhY2VycyB3aGljaCBjYW4gYmUgdG9nZ2xlZCB1c2luZyBhIGNoZWNrYm94LlxuIgogICAgICAgICAgICAiVG9nZ2xpbmcgYSB0cmFjZXIgJ29uJyBieSBjaGVja2luZyBpdCBzaG91bGQgcHJpbnQgdHJhY2VyIgpAQCAtMjQ0LDggKzIzNywyMCBAQAogICAgICAgICAgICAiVGVzdCBmb3IgYWN0aW9ucyBsaWtlIHRleHQgZW50cnksIGFuZCByZW1vdmFsLiIKICAgICB9CiAKK1F1ZXJ5X3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdRdWVyeScsCisgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnRW50ZXIgc29tZXRoaW5nJywKKyAgICAgICAgICAgICAndGV4dDAnOiAnR28nLAorICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKKyAgICAnbXNnJzogIkVudGVyIHdpdGggPFJldHVybj4gb3IgW09rXS4gIFByaW50IHZhbGlkIGVudHJ5IHRvIFNoZWxsXG4iCisgICAgICAgICAgICJCbGFuayBsaW5lLCBhZnRlciBzdHJpcHBpbmcsIGlzIGlnbm9yZWRcbiIKKyAgICAgICAgICAgIkNsb3NlIGRpYWxvZyB3aXRoIHZhbGlkIGVudHJ5LCA8RXNjYXBlPiwgW0NhbmNlbF0sIFtYXSIKKyAgICB9CisKKwogX3JlcGxhY2VfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUmVwbGFjZURpYWxvZycsCisgICAgJ2ZpbGUnOiAncmVwbGFjZScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIHRoZSAnUmVwbGFjZScgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB2YXJpb3VzIHJlcGxhY2Ugb3B0aW9ucyBpbiB0aGUgJ1JlcGxhY2UgZGlhbG9nJy5cbiIKQEAgLTI1MywxNSArMjU4LDIyIEBACiAgICAgfQogCiBfc2VhcmNoX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ1NlYXJjaERpYWxvZycsCisgICAgJ2ZpbGUnOiAnc2VhcmNoJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTZWFyY2gnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdmFyaW91cyBzZWFyY2ggb3B0aW9ucyBpbiB0aGUgJ1NlYXJjaCBkaWFsb2cnLlxuIgogICAgICAgICAgICAiQ2xpY2sgW0Nsb3NlXSBvciBbWF0gdG8gY2xvc2UgdGhlICdTZWFyY2ggRGlhbG9nJy4iCiAgICAgfQogCitfc2VhcmNoYmFzZV9zcGVjID0geworICAgICdmaWxlJzogJ3NlYXJjaGJhc2UnLAorICAgICdrd2RzJzoge30sCisgICAgJ21zZyc6ICJDaGVjayB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYmFzZSBzZWFyY2ggZGlhbG9nXG4iCisgICAgICAgICAgICJJdHMgb25seSBhY3Rpb24gaXMgdG8gY2xvc2UuIgorICAgIH0KKwogX3Njcm9sbGVkX2xpc3Rfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTY3JvbGxlZExpc3QnLAorICAgICdmaWxlJzogJ3Njcm9sbGVkbGlzdCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIllvdSBzaG91bGQgc2VlIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIGl0ZW1zXG4iCiAgICAgICAgICAgICJTZWxlY3RpbmcgKGNsaWNraW5nKSBvciBkb3VibGUgY2xpY2tpbmcgYW4gaXRlbSAiCkBAIC0yNzcsNyArMjg5LDcgQEAKICAgICB9CiAKIF9zdGFja192aWV3ZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTdGFja1ZpZXdlcicsCisgICAgJ2ZpbGUnOiAnc3RhY2t2aWV3ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJBIHN0YWNrdHJhY2UgZm9yIGEgTmFtZUVycm9yIGV4Y2VwdGlvbi5cbiIKICAgICAgICAgICAgIkV4cGFuZCAnaWRsZWxpYiAuLi4nIGFuZCAnPGxvY2Fscz4nLlxuIgpAQCAtMjk1LDggKzMwNyw4IEBACiAgICAgfQogCiBUZXh0Vmlld2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAndGV4dFZpZXcnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IHRleHRWaWV3JywKKyAgICAnZmlsZSc6ICd0ZXh0dmlldycsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3QgdGV4dHZpZXcnLAogICAgICAgICAgICAgICd0ZXh0JzonVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy5cbicqMzUsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAogICAgICdtc2cnOiAiVGVzdCBmb3IgcmVhZC1vbmx5IHByb3BlcnR5IG9mIHRleHQuXG4iCkBAIC0zMDQsMjEgKzMxNiwyMSBAQAogICAgICB9CiAKIF90b29sdGlwX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVG9vbFRpcCcsCisgICAgJ2ZpbGUnOiAndG9vbHRpcCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlBsYWNlIG1vdXNlIGN1cnNvciBvdmVyIGJvdGggdGhlIGJ1dHRvbnNcbiIKICAgICAgICAgICAgIkEgdG9vbHRpcCBzaG91bGQgYXBwZWFyIHdpdGggc29tZSB0ZXh0LiIKICAgICB9CiAKIF90cmVlX3dpZGdldF9zcGVjID0gewotICAgICdmaWxlJzogJ1RyZWVXaWRnZXQnLAorICAgICdmaWxlJzogJ3RyZWUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgY2FudmFzIGlzIHNjcm9sbGFibGUuXG4iCiAgICAgICAgICAgICJDbGljayBvbiBmb2xkZXJzIHVwdG8gdG8gdGhlIGxvd2VzdCBsZXZlbC4iCiAgICAgfQogCiBfdW5kb19kZWxlZ2F0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdVbmRvRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICd1bmRvJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgW1VuZG9dIHRvIHVuZG8gYW55IGFjdGlvbi5cbiIKICAgICAgICAgICAgIkNsaWNrIFtSZWRvXSB0byByZWRvIGFueSBhY3Rpb24uXG4iCkBAIC0zMjcsNyArMzM5LDcgQEAKICAgICB9CiAKIF93aWRnZXRfcmVkaXJlY3Rvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1dpZGdldFJlZGlyZWN0b3InLAorICAgICdmaWxlJzogJ3JlZGlyZWN0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJFdmVyeSB0ZXh0IGluc2VydCBzaG91bGQgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4iCiAgICAgICAgICAgICJvciB0aGUgSURMRSBzaGVsbC4iCkBAIC0zMzcsMTQgKzM0OSwxMyBAQAogICAgIHJvb3QgPSB0ay5UaygpCiAgICAgcm9vdC50aXRsZSgnSURMRSBodGVzdCcpCiAgICAgcm9vdC5yZXNpemFibGUoMCwgMCkKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAKICAgICAjIGEgc2Nyb2xsYWJsZSBMYWJlbCBsaWtlIGNvbnN0YW50IHdpZHRoIHRleHQgd2lkZ2V0LgogICAgIGZyYW1lTGFiZWwgPSB0ay5GcmFtZShyb290LCBwYWR4PTEwKQogICAgIGZyYW1lTGFiZWwucGFjaygpCiAgICAgdGV4dCA9IHRrLlRleHQoZnJhbWVMYWJlbCwgd3JhcD0nd29yZCcpCiAgICAgdGV4dC5jb25maWd1cmUoYmc9cm9vdC5jZ2V0KCdiZycpLCByZWxpZWY9J2ZsYXQnLCBoZWlnaHQ9NCwgd2lkdGg9NzApCi0gICAgc2Nyb2xsYmFyID0gdGsuU2Nyb2xsYmFyKGZyYW1lTGFiZWwsIGNvbW1hbmQ9dGV4dC55dmlldykKKyAgICBzY3JvbGxiYXIgPSBTY3JvbGxiYXIoZnJhbWVMYWJlbCwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgIHRleHQuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNjcm9sbGJhci5zZXQpCiAgICAgc2Nyb2xsYmFyLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd5JywgZXhwYW5kPUZhbHNlKQogICAgIHRleHQucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKQpAQCAtMzY1LDExICszNzYsMTEgQEAKICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihtb2QsIHRlc3RfbmFtZSkKICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QuYXBwZW5kKCh0ZXN0X3NwZWMsIHRlc3QpKQogCi0gICAgdGVzdF9uYW1lID0gdGsuU3RyaW5nVmFyKCcnKQorICAgIHRlc3RfbmFtZSA9IHRrLlN0cmluZ1Zhcihyb290KQogICAgIGNhbGxhYmxlX29iamVjdCA9IE5vbmUKICAgICB0ZXN0X2t3ZHMgPSBOb25lCiAKLSAgICBkZWYgbmV4dCgpOgorICAgIGRlZiBuZXh0X3Rlc3QoKToKIAogICAgICAgICBub25sb2NhbCB0ZXN0X25hbWUsIGNhbGxhYmxlX29iamVjdCwgdGVzdF9rd2RzCiAgICAgICAgIGlmIGxlbih0ZXN0X2xpc3QpID09IDE6CkBAIC0zODQsMjAgKzM5NSwyNiBAQAogICAgICAgICB0ZXh0Lmluc2VydCgiMS4wIix0ZXN0X3NwZWNbJ21zZyddKQogICAgICAgICB0ZXh0LmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKSAjIHByZXNlcnZlIHJlYWQtb25seSBwcm9wZXJ0eQogCi0gICAgZGVmIHJ1bl90ZXN0KCk6CisgICAgZGVmIHJ1bl90ZXN0KF89Tm9uZSk6CiAgICAgICAgIHdpZGdldCA9IGNhbGxhYmxlX29iamVjdCgqKnRlc3Rfa3dkcykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcHJpbnQod2lkZ2V0LnJlc3VsdCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHR2YXJpYWJsZT10ZXN0X25hbWUsIGNvbW1hbmQ9cnVuX3Rlc3QpCisgICAgZGVmIGNsb3NlKF89Tm9uZSk6CisgICAgICAgIHJvb3QuZGVzdHJveSgpCisKKyAgICBidXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dHZhcmlhYmxlPXRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nYWN0aXZlJywgY29tbWFuZD1ydW5fdGVzdCkKKyAgICBuZXh0X2J1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0PSJOZXh0IiwgY29tbWFuZD1uZXh0X3Rlc3QpCiAgICAgYnV0dG9uLnBhY2soKQotICAgIG5leHRfYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHQ9Ik5leHQiLCBjb21tYW5kPW5leHQpCiAgICAgbmV4dF9idXR0b24ucGFjaygpCisgICAgbmV4dF9idXR0b24uZm9jdXNfc2V0KCkKKyAgICByb290LmJpbmQoJzxLZXktUmV0dXJuPicsIHJ1bl90ZXN0KQorICAgIHJvb3QuYmluZCgnPEtleS1Fc2NhcGU+JywgY2xvc2UpCiAKLSAgICBuZXh0KCkKLQorICAgIG5leHRfdGVzdCgpCiAgICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQppbmRleCAxNjcyYTM0Li5jN2I0OWVmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogCiBjbGFzcyBFZGl0b3I6Ci0gICAgJycnTWluaW1hbGx5IGltaXRhdGUgRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdyBjbGFzcy4KKyAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBlZGl0b3IuRWRpdG9yV2luZG93IGNsYXNzLgogICAgICcnJwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgc2VsZi50ZXh0ID0gVGV4dCgpCkBAIC00Niw3ICs0Niw3IEBACiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvcjoKLSAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBVbmRvRGVsZWdhdG9yLFVuZG9EZWxlZ2F0b3IgY2xhc3MuCisgICAgJycnTWluaW1hbGx5IGltaXRhdGUgdW5kby5VbmRvRGVsZWdhdG9yIGNsYXNzLgogICAgICcnJwogICAgICMgQSByZWFsIHVuZG8gYmxvY2sgaXMgb25seSBuZWVkZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKmFyZ3MpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CmluZGV4IDVmYzg5OWQuLmYzZjJkZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKQEAgLTEsOSArMSwxMyBAQAorJycnIFRlc3QgYXV0b2NvbXBsZXRlIGFuZCBhdXRvY29tcGxlX3cKKworQ292ZXJhZ2Ugb2YgYXV0b2NvbXBsZTogNTYlCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiAKLWltcG9ydCBpZGxlbGliLkF1dG9Db21wbGV0ZSBhcyBhYwotaW1wb3J0IGlkbGVsaWIuQXV0b0NvbXBsZXRlV2luZG93IGFzIGFjdworaW1wb3J0IGlkbGVsaWIuYXV0b2NvbXBsZXRlIGFzIGFjCitpbXBvcnQgaWRsZWxpYi5hdXRvY29tcGxldGVfdyBhcyBhY3cKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IEV2ZW50CiAKQEAgLTkxLDYgKzk1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVfZXZlbnQoZXYpKQogICAgICAgICBkZWwgZXYubWNfc3RhdGUKIAorICAgICAgICAjIFRlc3QgdGhhdCB0YWIgYWZ0ZXIgd2hpdGVzcGFjZSBpcyBpZ25vcmVkLgorICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAnICAgICAgICAiIiJEb2NzdHJpbmcuXG4gICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZV9ldmVudChldikpCisgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQorCiAgICAgICAgICMgSWYgYXV0b2NvbXBsZXRlIHdpbmRvdyBpcyBvcGVuLCBjb21wbGV0ZSgpIG1ldGhvZCBpcyBjYWxsZWQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ3JlLicpCiAgICAgICAgICMgVGhpcyBtdXN0IGNhbGwgYXV0b2NvbXBsZXRlLl9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKaW5kZXggZDJhMzE1Ni4uYWU4MTg2YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5BdXRvRXhwYW5kIiIiCisiIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmF1dG9leHBhbmQiIiIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCiAjZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0Ci1mcm9tIGlkbGVsaWIuQXV0b0V4cGFuZCBpbXBvcnQgQXV0b0V4cGFuZAorZnJvbSBpZGxlbGliLmF1dG9leHBhbmQgaW1wb3J0IEF1dG9FeHBhbmQKIAogCiBjbGFzcyBEdW1teV9FZGl0d2luOgpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2xzLnRleHQgPSBUZXh0KCkKICAgICAgICAgY2xzLmF1dG9fZXhwYW5kID0gQXV0b0V4cGFuZChEdW1teV9FZGl0d2luKGNscy50ZXh0KSkKKyAgICAgICAgY2xzLmF1dG9fZXhwYW5kLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0xMzcsNSArMTM4LDYgQEAKICAgICAgICAgbmV3X3N0YXRlID0gc2VsZi5hdXRvX2V4cGFuZC5zdGF0ZQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluaXRpYWxfc3RhdGUsIG5ld19zdGF0ZSkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CmluZGV4IGIyYTczM2MuLjBiMTE2MDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5DYWxsVGlwcyBhcyBjdAoraW1wb3J0IGlkbGVsaWIuY2FsbHRpcHMgYXMgY3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHR5cGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzhiYzNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5CkBAIC0wLDAgKzEsNTYgQEAKKycnJ1Rlc3QgaWRsZWxpYi9jb2xvcml6ZXIucHkKKworUGVyZm9ybSBtaW5pbWFsIHNhbml0eSBjaGVja3MgdGhhdCBtb2R1bGUgaW1wb3J0cyBhbmQgc29tZSB0aGluZ3MgcnVuLgorCitDb3ZlcmFnZSAyMiUuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29sb3JpemVyICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sb3JpemVyLmFueSgndGVzdCcsICgnYScsICdiJykpKQorCisgICAgZGVmIHRlc3RfbWFrZV9wYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xvcml6ZXIubWFrZV9wYXQoKSkKKworCitjbGFzcyBDb2xvckNvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLnRleHQKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfY29sb3JpemVyKHNlbGYpOgorICAgICAgICBjb2xvcml6ZXIuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKKworY2xhc3MgQ29sb3JEZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2NvbG9yaXplcihzZWxmKToKKyAgICAgICAgY29sb3JpemVyLkNvbG9yRGVsZWdhdG9yKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNmYTFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weQpAQCAtMCwwICsxLDE2MCBAQAorJycnVGVzdCBpZGxlbGliLmNvbmZpZy4KKworTXVjaCBpcyB0ZXN0ZWQgYnkgb3BlbmluZyBjb25maWcgZGlhbG9nIGxpdmUgb3IgaW4gdGVzdF9jb25maWdkaWFsb2cuCitDb3ZlcmFnZTogMjclCisnJycKK2Zyb20gc3lzIGltcG9ydCBtb2R1bGVzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnCisKKyMgVGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gZm9ydHVpdG91cyB1c2VyIGNvbmZpZ3VyYXRpb25zLgorIyBUaGV5IG11c3Qgbm90IGFmZmVjdCBhY3R1YWwgdXNlciAuY2ZnIGZpbGVzLgorIyBSZXBsYWNlIHVzZXIgcGFyc2VycyB3aXRoIGVtcHR5IHBhcnNlcnMgdGhhdCBjYW5ub3QgYmUgc2F2ZWQuCisKK2lkbGVDb25mID0gY29uZmlnLmlkbGVDb25mCit1c2VyY2ZnID0gaWRsZUNvbmYudXNlckNmZwordGVzdGNmZyA9IHt9Cit1c2VybWFpbiA9IHRlc3RjZmdbJ21haW4nXSA9IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpICAjIGZpbGVuYW1lCit1c2VyaGlnaCA9IHRlc3RjZmdbJ2hpZ2hsaWdodCddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKK3VzZXJrZXlzID0gdGVzdGNmZ1sna2V5cyddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKworZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHVzZXJjZmcKKworCitjbGFzcyBDdXJyZW50Q29sb3JLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIFRlc3QgY29sb3JrZXlzIGZ1bmN0aW9uIHdpdGggdXNlciBjb25maWcgW1RoZW1lXSBhbmQgW0tleXNdIHBhdHRlcm5zLgorCisgICAgICAgIGNvbG9ya2V5cyA9IGNvbmZpZy5JZGxlQ29uZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cworICAgICAgICBUZXN0IGFsbCBwYXR0ZXJucyB3cml0dGVuIGJ5IElETEUgYW5kIHNvbWUgZXJyb3JzCisgICAgICAgIEl0ZW0gJ2RlZmF1bHQnIHNob3VsZCByZWFsbHkgYmUgJ2J1aWx0aW4nICh2ZXJzdXMgJ2N1c3RvbSkuCisgICAgIiIiCisgICAgY29sb3JrZXlzID0gaWRsZUNvbmYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMKKyAgICBkZWZhdWx0X3RoZW1lID0gJ0lETEUgQ2xhc3NpYycKKyAgICBkZWZhdWx0X2tleXMgPSBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKQorCisgICAgZGVmIHRlc3Rfb2xkX2J1aWx0aW5fdGhlbWUoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICAjIEZvciBvbGQgZGVmYXVsdCwgbmFtZTIgbXVzdCBiZSBibGFuay4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgJycnKQorICAgICAgICAjIElETEUgb21pdHMgJ25hbWUnIGZvciBkZWZhdWx0IG9sZCBidWlsdGluIHRoZW1lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgSURMRSBhZGRzICduYW1lJyBmb3Igbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gdGhlbWUuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIE5ldycpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG9sZCBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKworICAgIGRlZiB0ZXN0X25ld19idWlsdGluX3RoZW1lKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW1RoZW1lXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgIG5hbWUyID0gSURMRSBEYXJrCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBuZXcgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorCisgICAgZGVmIHRlc3RfdXNlcl9vdmVycmlkZV90aGVtZShzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gRmFsc2UKKyAgICAgICAgICAgIG5hbWUgPSBDdXN0b20gRGFyaworICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJoaWdoLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIERhcmtdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnQ3VzdG9tIERhcmsnKQorICAgICAgICAjIE5hbWUyIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0N1c3RvbSBEYXJrJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKyAgICAgICAgdXNlcmhpZ2gucmVtb3ZlX3NlY3Rpb24oJ0N1c3RvbSBEYXJrJykKKworICAgIGRlZiB0ZXN0X29sZF9idWlsdGluX2tleXMoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgIyBGb3Igb2xkIGRlZmF1bHQsIG5hbWUyIG11c3QgYmUgYmxhbmssIG5hbWUgaXMgYWx3YXlzIHVzZWQuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZSA9IElETEUgQ2xhc3NpYyBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgQ2xhc3NpYyBVbml4JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisKKyAgICBkZWYgdGVzdF9uZXdfYnVpbHRpbl9rZXlzKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZTIgPSBJRExFIE1vZGVybiBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgTW9kZXJuIFVuaXgnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUnXSA9ICdJRExFIENsYXNzaWMgVW5peCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBNb2Rlcm4gVW5peCcpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG5ldyBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKworICAgIGRlZiB0ZXN0X3VzZXJfb3ZlcnJpZGVfa2V5cyhzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZQorICAgICAgICAgICAgbmFtZSA9IEN1c3RvbSBLZXlzCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJrZXlzLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIEtleXNdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdDdXN0b20gS2V5cycpCisgICAgICAgICMgTmFtZTIgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0N1c3RvbSBLZXlzJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorICAgICAgICB1c2Vya2V5cy5yZW1vdmVfc2VjdGlvbignQ3VzdG9tIEtleXMnKQorCisKK2NsYXNzIFdhcm5pbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dhcm4oc2VsZik6CisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBjb25maWcuX3dhcm5lZCA9IHNldCgpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5Jyl9KQorICAgICAgICBFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ3dhcm5pbmcnKydcbicpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm4yJywgJ3llaycpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5JyksICgnd2FybjInLCd5ZWsnKX0pCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnd2FybjInKydcbicpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ZjhlZC4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0iIiJVbml0dGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQiIiIKLWltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gsIEVudHJ5Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0hlbHBTb3VyY2VFZGl0IGFzIGhlbHBfZGlhbG9nX21vZHVsZQotCi1oZWxwX2RpYWxvZyA9IGhlbHBfZGlhbG9nX21vZHVsZS5HZXRIZWxwU291cmNlRGlhbG9nCi0KLQotY2xhc3MgRHVtbXlfaGVscF9kaWFsb2c6Ci0gICAgIyBNb2NrIGZvciB0ZXN0aW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBoZWxwX2RpYWxvZwotICAgIG1lbnVfb2sgPSBoZWxwX2RpYWxvZy5tZW51X29rCi0gICAgcGF0aF9vayA9IGhlbHBfZGlhbG9nLnBhdGhfb2sKLSAgICBvayA9IGhlbHBfZGlhbG9nLm9rCi0gICAgY2FuY2VsID0gaGVscF9kaWFsb2cuY2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIG1lbnUgPSBWYXIoKQotICAgIGVudHJ5TWVudSA9IEVudHJ5KCkKLSAgICBwYXRoID0gVmFyKCkKLSAgICBlbnRyeVBhdGggPSBFbnRyeSgpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIGRlc3Ryb3llZCA9IEZhbHNlCi0KLSAgICBkZWYgZGVzdHJveShzZWxmKToKLSAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCi0KLQotIyBtZW51X29rIGFuZCBwYXRoX29rIGNhbGwgTWJveC5zaG93ZXJyb3IgaWYgbWVudSBhbmQgcGF0aCBhcmUgbm90IG9rLgotb3JpZ19tYm94ID0gaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveAotc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKLQotCi1jbGFzcyBDb25maWdIZWxwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfaGVscF9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGhlbHBfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdNZW51IEl0ZW0gRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfbG9uZ19tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVsbG8nICogMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ01lbnUgSXRlbSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xvbmcnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJ2hlbHAnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3RfYmxhbmtfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2ZpbGVfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2Zvb2JhcicgKiAxMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF91cmxfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ3d3LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVscCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHRwczovL2RvY3MucHl0aG9uLm9yZycpCi0gICAgICAgIHNlbGYuZGlhbG9nLm9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICgnaGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLSAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLmNhbmNlbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTNmMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpAQCAtMCwwICsxLDMzIEBACisnJycgVGVzdCBpZGxlbGliLmNvbmZpZ19rZXkuCisKK0NvdmVyYWdlOiA1NiUgZnJvbSBjcmVhdGluZyBhbmQgY2xvc2luZyBkaWFsb2cuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnX2tleQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAorCisKK2NsYXNzIEdldEtleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGUoKSAgIyBTdG9wICJjYW4ndCBydW4gZXZlbnQgY29tbWFuZCIgd2FybmluZy4KKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkaWEgPSBjb25maWdfa2V5LkdldEtleXNEaWFsb2coCisgICAgICAgICAgICBzZWxmLnJvb3QsICd0ZXN0JywgJzw8VGVzdD4+JywgWyc8S2V5LUYxMj4nXSwgX3V0ZXN0PVRydWUpCisgICAgICAgIGRpYS5DYW5jZWwoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTcyYjkuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0iIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIiIiCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIGFzIG5hbWVfZGlhbG9nX21vZHVsZQotCi1uYW1lX2RpYWxvZyA9IG5hbWVfZGlhbG9nX21vZHVsZS5HZXRDZmdTZWN0aW9uTmFtZURpYWxvZwotCi1jbGFzcyBEdW1teV9uYW1lX2RpYWxvZzoKLSAgICAjIE1vY2sgZm9yIHRlc3RpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIG5hbWVfZGlhbG9nCi0gICAgbmFtZV9vayA9IG5hbWVfZGlhbG9nLm5hbWVfb2sKLSAgICBPayA9IG5hbWVfZGlhbG9nLk9rCi0gICAgQ2FuY2VsID0gbmFtZV9kaWFsb2cuQ2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQotICAgIG5hbWUgPSBWYXIoKQotICAgIHJlc3VsdCA9IE5vbmUKLSAgICBkZXN0cm95ZWQgPSBGYWxzZQotICAgIGRlZiBkZXN0cm95KHNlbGYpOgotICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKLQotIyBuYW1lX29rIGNhbGxzIE1ib3guc2hvd2Vycm9yIGlmIG5hbWUgaXMgbm90IG9rCi1vcmlnX21ib3ggPSBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94Ci1zaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgotCi1jbGFzcyBDb25maWdOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfbmFtZV9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfdXNlZF9uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgndXNlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9sb25nX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCdnb29kJyo4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RvbyBsb25nJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9nb29kX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgIGdvb2QgJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJ2dvb2QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnZ29vZCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLk9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICdnb29kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cuQ2FuY2VsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICcnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQppbmRleCA1YzA5NzkwLi43MGJkMTRlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CkBAIC0xLDE0ICsxLDEzIEBACi0nJydUZXN0IGlkbGVsaWIuY29uZmlnRGlhbG9nLgorJycnVGVzdCBpZGxlbGliLmNvbmZpZ2RpYWxvZy4KIAogQ292ZXJhZ2U6IDQ2JSBqdXN0IGJ5IGNyZWF0aW5nIGRpYWxvZy4KIFRoZSBvdGhlciBoYWxmIGlzIGNvZGUgZm9yIHdvcmtpbmcgd2l0aCB1c2VyIGN1c3RvbWl6YXRpb25zLgogJycnCi1mcm9tIGlkbGVsaWIuY29uZmlnRGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2cgICMgYWx3YXlzIHRlc3QgaW1wb3J0Citmcm9tIGlkbGVsaWIuY29uZmlnZGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2cgICMgYWx3YXlzIHRlc3QgaW1wb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogZnJvbSB0a2ludGVyIGltcG9ydCBUawogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQgYXMgbWFjb3N4CiAKIGNsYXNzIENvbmZpZ0RpYWxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNiw3ICsxNSw2IEBACiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnJvb3QgPSBUaygpCiAgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKLSAgICAgICAgbWFjb3N4Ll9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMoY2xzLnJvb3QpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgpAQCAtMjQsNyArMjIsNyBAQAogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKICAgICAgICAgZGVsIGNscy5yb290CiAKLSAgICBkZWYgdGVzdF9kaWFsb2coc2VsZik6CisgICAgZGVmIHRlc3RfY29uZmlnZGlhbG9nKHNlbGYpOgogICAgICAgICBkID0gQ29uZmlnRGlhbG9nKHNlbGYucm9vdCwgJ1Rlc3QnLCBfdXRlc3Q9VHJ1ZSkKICAgICAgICAgZC5yZW1vdmVfdmFyX2NhbGxiYWNrcygpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVidWdnZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNiYTlhNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5CkBAIC0wLDAgKzEsMjkgQEAKKycnJyBUZXN0IGlkbGVsaWIuZGVidWdnZXIuCisKK0NvdmVyYWdlOiAxOSUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIE5hbWVTcGFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIGRlYnVnZ2VyLk5hbWVzcGFjZVZpZXdlcihzZWxmLnJvb3QsICdUZXN0JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKaW5kZXggMWYwYmFhOS4uODU2MjRmYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKIAogY2xhc3MgRGVsZWdhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKaW5kZXggYTI1OGUyOS4uMTdlYjI1YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKQEAgLTUsOCArNSw5IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogaW1wb3J0IHRraW50ZXIgYXMgdGsKK2Zyb20gdGtpbnRlciBpbXBvcnQgdHRrCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGNsYXNzIFBhc3RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVGVzdCBwYXN0aW5nIGludG8gd2lkZ2V0cyB0aGF0IGFsbG93IHBhc3RpbmcuCkBAIC0xNiwxNyArMTcsMTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSB0ay5UaygpCi0gICAgICAgIHJvb3Qud2l0aGRyYXcoKQotICAgICAgICBQeVNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBweXNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKICAgICAgICAgY2xzLnRleHQgPSB0ay5UZXh0KHJvb3QpCiAgICAgICAgIGNscy5lbnRyeSA9IHRrLkVudHJ5KHJvb3QpCisgICAgICAgIGNscy50ZW50cnkgPSB0dGsuRW50cnkocm9vdCkKICAgICAgICAgY2xzLnNwaW4gPSB0ay5TcGluYm94KHJvb3QpCiAgICAgICAgIHJvb3QuY2xpcGJvYXJkX2NsZWFyKCkKICAgICAgICAgcm9vdC5jbGlwYm9hcmRfYXBwZW5kKCd0d28nKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgZGVsIGNscy50ZXh0LCBjbHMuZW50cnksIGNscy5zcGluCisgICAgICAgIGRlbCBjbHMudGV4dCwgY2xzLmVudHJ5LCBjbHMudGVudHJ5CiAgICAgICAgIGNscy5yb290LmNsaXBib2FyZF9jbGVhcigpCiAgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKQEAgLTQ0LDE2ICs0NiwxNiBAQAogCiAgICAgZGVmIHRlc3RfcGFzdGVfZW50cnkoc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhbiBlbnRyeSB3aXRoIGFuZCB3aXRob3V0IGEgc2VsZWN0aW9uLiIKLSAgICAgICAgIyBPbiAzLjYsIGdlbmVyYXRlZCA8PFBhc3RlPj4gZmFpbHMgd2l0aG91dCBlbXB0eSBzZWxlY3QgcmFuZ2UKLSAgICAgICAgIyBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgotICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnkKLSAgICAgICAgZm9yIGVuZCwgYW5zIGluICgwLCAnb25ldHdvJyksICgnZW5kJywgJ3R3bycpOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgotICAgICAgICAgICAgICAgIGVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgICAgICBlbnRyeS5pbnNlcnQoMCwgJ29uZScpCi0gICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkgICMgc2VlIG5vdGUKLSAgICAgICAgICAgICAgICBlbnRyeS5ldmVudF9nZW5lcmF0ZSgnPDxQYXN0ZT4+JykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmdldCgpLCBhbnMpCisgICAgICAgICMgR2VuZXJhdGVkIDw8UGFzdGU+PiBmYWlscyBmb3IgdGsgZW50cnkgd2l0aG91dCBlbXB0eSBzZWxlY3QKKyAgICAgICAgIyByYW5nZSBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyeSwgc2VsZi50ZW50cnk6CisgICAgICAgICAgICBmb3IgZW5kLCBhbnMgaW4gKDAsICdvbmV0d28nKSwgKCdlbmQnLCAndHdvJyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgorICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmluc2VydCgwLCAnb25lJykKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZXZlbnRfZ2VuZXJhdGUoJzw8UGFzdGU+PicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuZ2V0KCksIGFucykKIAogICAgIGRlZiB0ZXN0X3Bhc3RlX3NwaW4oc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhIHNwaW5ib3ggd2l0aCBhbmQgd2l0aG91dCBhIHNlbGVjdGlvbi4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKaW5kZXggYTMxZDI2ZC4uZTlkMjlkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogCiBjbGFzcyBFZGl0b3JfZnVuY190ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CmluZGV4IDBkOGZmMGQuLjZiNTRjMTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQpAQCAtMSw1ICsxLDUgQEAKICIiIiAhQ2hhbmdpbmcgdGhpcyBsaW5lIHdpbGwgYnJlYWsgVGVzdF9maW5kZmlsZS50ZXN0X2ZvdW5kIQotTm9uLWd1aSB1bml0IHRlc3RzIGZvciBpZGxlbGliLkdyZXBEaWFsb2cgbWV0aG9kcy4KK05vbi1ndWkgdW5pdCB0ZXN0cyBmb3IgZ3JlcC5HcmVwRGlhbG9nIG1ldGhvZHMuCiBkdW1teV9jb21tYW5kIGNhbGxzIGdyZXBfaXQgY2FsbHMgZmluZGZpbGVzLgogQW4gZXhjZXB0aW9uIHJhaXNlZCBpbiBvbmUgbWV0aG9kIHdpbGwgZmFpbCBjYWxsZXJzLgogT3RoZXJ3aXNlLCB0ZXN0cyBhcmUgbW9zdGx5IGluZGVwZW5kZW50LgpAQCAtOCw3ICs4LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKLWZyb20gaWRsZWxpYi5HcmVwRGlhbG9nIGltcG9ydCBHcmVwRGlhbG9nCitmcm9tIGlkbGVsaWIuZ3JlcCBpbXBvcnQgR3JlcERpYWxvZwogaW1wb3J0IHJlCiAKIGNsYXNzIER1bW15X3NlYXJjaGVuZ2luZToKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzRdLnN0YXJ0c3dpdGgoJyhIaW50OicpKQogCiBjbGFzcyBEZWZhdWx0X2NvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRvIHdyaXRlIHRoaXMsIG1vZGUgT3V0cHV0V2luZG93IGltcG9ydCB0byB0b3Agb2YgR3JlcERpYWxvZworICAgICMgVG8gd3JpdGUgdGhpcywgbW92ZSBvdXR3aW4gaW1wb3J0IHRvIHRvcCBvZiBHcmVwRGlhbG9nCiAgICAgIyBzbyBpdCBjYW4gYmUgcmVwbGFjZWQgYnkgY2FwdHVyZWRfc3Rkb3V0IGluIGNsYXNzIHNldHVwL3RlYXJkb3duLgogICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2OGUyMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKQEAgLTAsMCArMSwzNCBAQAorJycnVGVzdCBpZGxlbGliLmhlbHAuCisKK0NvdmVyYWdlOiA4NyUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBqb2luCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKKworY2xhc3MgSGVscEZyYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiQnkgaXRzZWxmLCB0aGlzIHRlc3RzIHRoYXQgZmlsZSBwYXJzZWQgd2l0aG91dCBleGNlcHRpb24uIgorICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBoZWxwZmlsZSA9IGpvaW4oZGlybmFtZShkaXJuYW1lKGFic3BhdGgoX19maWxlX18pKSksICdoZWxwLmh0bWwnKQorICAgICAgICBjbHMuZnJhbWUgPSBoZWxwLkhlbHBGcmFtZShyb290LCBoZWxwZmlsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGRlbCBjbHMuZnJhbWUKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2xpbmUxKHNlbGYpOgorICAgICAgICB0ZXh0ID0gc2VsZi5mcmFtZS50ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5nZXQoJzEuMCcsICcxLmVuZCcpLCAnIElETEUgJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKaW5kZXggZDBhMDEyNy4uODQzZWZiOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CkBAIC0yLDEwICsyLDEwIEBACiAKIENvdmVyYWdlOgogJycnCi1mcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nIGFzIGhlbHBfYWJvdXQKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcgYXMgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscF9hYm91dAorZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIGltcG9ydCB1bml0dGVzdAogCiBBYm91dCA9IGhlbHBfYWJvdXQuQWJvdXREaWFsb2cKQEAgLTE5LDMzICsxOSwzMyBAQAogCiAKIGNsYXNzIERpc3BsYXlGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIlRlc3QgdGhhdCAudHh0IGZpbGVzIGFyZSBmb3VuZCBhbmQgcHJvcGVybHkgZGVjb2RlZC4iCiAgICAgZGlhbG9nID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0ZXh0dmlldy50a01lc3NhZ2VCb3gKKyAgICAgICAgY2xzLm9yaWdfZXJyb3IgPSB0ZXh0dmlldy5zaG93ZXJyb3IKICAgICAgICAgY2xzLm9yaWdfdmlldyA9IHRleHR2aWV3LnZpZXdfdGV4dAotICAgICAgICBjbHMubWJveCA9IE1ib3goKQorICAgICAgICBjbHMuZXJyb3IgPSBNYm94X2Z1bmMoKQogICAgICAgICBjbHMudmlldyA9IEZ1bmMoKQotICAgICAgICB0ZXh0dmlldy50a01lc3NhZ2VCb3ggPSBjbHMubWJveAorICAgICAgICB0ZXh0dmlldy5zaG93ZXJyb3IgPSBjbHMuZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLnZpZXcKICAgICAgICAgY2xzLkFib3V0ID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHRleHR2aWV3LnRrTWVzc2FnZUJveCA9IGNscy5vcmlnX21ib3gKKyAgICAgICAgdGV4dHZpZXcuc2hvd2Vycm9yID0gY2xzLm9yaWdfZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLm9yaWdfdmlldwogCiAgICAgZGVmIHRlc3RfZmlsZV9pc3BsYXkoc2VsZik6CiAgICAgICAgIGZvciBoYW5kbGVyIGluIChzZWxmLmRpYWxvZy5pZGxlX2NyZWRpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZy5pZGxlX3JlYWRtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlhbG9nLmlkbGVfbmV3cyk6Ci0gICAgICAgICAgICBzZWxmLm1ib3guc2hvd2Vycm9yLm1lc3NhZ2UgPSAnJworICAgICAgICAgICAgc2VsZi5lcnJvci5tZXNzYWdlID0gJycKICAgICAgICAgICAgIHNlbGYudmlldy5jYWxsZWQgPSBGYWxzZQotICAgICAgICAgICAgaGFuZGxlcigpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWJveC5zaG93ZXJyb3IubWVzc2FnZSwgJycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoYW5kbGVyPWhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lcnJvci5tZXNzYWdlLCAnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lkbGVoaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQppbmRleCA2ZTdjNmMzLi5iMjc4MDEwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oaXN0b3J5LnB5CkBAIC00LDggKzQsOCBAQAogaW1wb3J0IHRraW50ZXIgYXMgdGsKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCBhcyB0a1RleHQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBta1RleHQKLWZyb20gaWRsZWxpYi5JZGxlSGlzdG9yeSBpbXBvcnQgSGlzdG9yeQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaGlzdG9yeSBpbXBvcnQgSGlzdG9yeQorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogbGluZTEgPSAnYSA9IDcnCiBsaW5lMiA9ICdiID0gYScKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKaW5kZXggOWNlM2YyYy4uNzNjODI4MSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKQEAgLTEsOSArMSw5IEBACi0iIiJVbml0dGVzdCBmb3IgaWRsZWxpYi5IeXBlclBhcnNlciIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuaHlwZXJwYXJzZXIucHkuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pb21lbnUucHkKaW5kZXggZTBlM2I5OC4uNjViZjU5MyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW8KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKKworZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCiAKIAogY2xhc3MgUyhzdHIpOgpAQCAtMjMwLDQgKzIzMSw0IEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTc1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9tYWNvc3gucHkKQEAgLTAsMCArMSwxMDMgQEAKKycnJ1Rlc3QgaWRsZWxpYi5tYWNvc3gucHkuCisKK0NvdmVyYWdlOiA3MSUgb24gV2luZG93cy4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworaW1wb3J0IHRraW50ZXIgYXMgdGsKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sgYXMgbW9jaworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorCittYWN0eXBlcyA9IHsnY2FyYm9uJywgJ2NvY29hJywgJ3hxdWFydHonfQorbm9udHlwZXMgPSB7J290aGVyJ30KK2FsbHR5cGVzID0gbWFjdHlwZXMgfCBub250eXBlcworCisKK2NsYXNzIEluaXRUa3R5cGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBfaW5pdF90a190eXBlLiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHRrLlRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBjbHMub3JpZ19wbGF0Zm9ybSA9IG1hY29zeC5wbGF0Zm9ybQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKyAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gY2xzLm9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X2luaXRfc2V0c190a3R5cGUoc2VsZik6CisgICAgICAgICJUZXN0IHRoYXQgX2luaXRfdGtfdHlwZSBzZXRzIF90a190eXBlIGFjY29yZGluZyB0byBwbGF0Zm9ybS4iCisgICAgICAgIGZvciBwbGF0Zm9ybSwgdHlwZXMgaW4gKCdkYXJ3aW4nLCBhbGx0eXBlcyksICgnb3RoZXInLCBub250eXBlcyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwbGF0Zm9ybT1wbGF0Zm9ybSk6CisgICAgICAgICAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPT0gTm9uZQorICAgICAgICAgICAgICAgIG1hY29zeC5faW5pdF90a190eXBlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1hY29zeC5fdGtfdHlwZSwgdHlwZXMpCisKKworY2xhc3MgSXNUeXBlVGtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlYWNoIG9mIHRoZSBmb3VyIGlzVHlwZVRrIHByZWRlY2F0ZXMuIgorICAgIGlzZnVuY3MgPSAoKG1hY29zeC5pc0FxdWFUaywgKCdjYXJib24nLCAnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzQ2FyYm9uVGssICgnY2FyYm9uJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc0NvY29hVGssICgnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzWFF1YXJ0eiwgKCd4cXVhcnR6JykpLAorICAgICAgICAgICAgICAgKQorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Ll9pbml0X3RrX3R5cGUnKQorICAgIGRlZiB0ZXN0X2lzX2NhbGxzX2luaXQoc2VsZiwgbW9ja2luaXQpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgY2FsbHMgX2luaXRfdGtfdHlwZSB3aGVuIF90a190eXBlIGlzIE5vbmUuIgorICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSBOb25lCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMpOgorICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NraW5pdC5jYWxsZWQpCisgICAgICAgICAgICAgICAgbW9ja2luaXQucmVzZXRfbW9jaygpCisKKyAgICBkZWYgdGVzdF9pc2Z1bmNzKHNlbGYpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgcmV0dXJuIGNvcnJlY3QgYm9vbC4iCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICBmb3IgdGt0eXBlIGluIGFsbHR5cGVzOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYywgd2hlbnRydWU9d2hlbnRydWUsIHRrdHlwZT10a3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuYXNzZXJ0VHJ1ZSBpZiB0a3R5cGUgaW4gd2hlbnRydWUgZWxzZSBzZWxmLmFzc2VydEZhbHNlKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuYygpKQorCisKK2NsYXNzIFNldHVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3Qgc2V0dXBBcHAuIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gdGsuVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUnKSAgIzI3MzEyCisgICAgZGVmIHRlc3Rfc2V0dXBhcHAoc2VsZiwgb3ZlcnJpZGVSb290TWVudSk6CisgICAgICAgICJDYWxsIHNldHVwQXBwIHdpdGggZWFjaCBwb3NzaWJsZSBncmFwaGljcyB0eXBlLiIKKyAgICAgICAgcm9vdCA9IHNlbGYucm9vdAorICAgICAgICBmbGlzdCA9IEZpbGVMaXN0KHJvb3QpCisgICAgICAgIGZvciB0a3R5cGUgaW4gYWxsdHlwZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0a3R5cGU9dGt0eXBlKToKKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICBtYWNvc3guc2V0dXBBcHAocm9vdCwgZmxpc3QpCisgICAgICAgICAgICAgICAgaWYgdGt0eXBlIGluICgnY2FyYm9uJywgJ2NvY29hJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdmVycmlkZVJvb3RNZW51LmNhbGxlZCkKKyAgICAgICAgICAgICAgICBvdmVycmlkZVJvb3RNZW51LnJlc2V0X21vY2soKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2Zvcm1hdHBhcmFncmFwaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQppbmRleCBiNmViMmYzLi5iYTM1MGM5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyYWdyYXBoLnB5CkBAIC0xLDcgKzEsNyBAQAotIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIEZvcm1hdFBhcmFncmFwaC5weQorIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIHBhcmFncmFwaC5weQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IEZvcm1hdFBhcmFncmFwaCBhcyBmcAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIgaW1wb3J0IHBhcmFncmFwaCBhcyBmcAorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIApAQCAtMzgsNyArMzgsNyBAQAogCiAKIGNsYXNzIEZpbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0IHRoZSBmaW5kX3BhcmFncmFwaCBmdW5jdGlvbiBpbiBGb3JtYXRQYXJhZ3JhcGguCisgICAgIiIiVGVzdCB0aGUgZmluZF9wYXJhZ3JhcGggZnVuY3Rpb24gaW4gcGFyYWdyYXBoIG1vZHVsZS4KIAogICAgIFVzaW5nIHRoZSBydW5jYXNlKCkgZnVuY3Rpb24sIGZpbmRfcGFyYWdyYXBoKCkgaXMgY2FsbGVkIHdpdGggJ21hcmsnIHNldCBhdAogICAgIG11bHRpcGxlIGluZGV4ZXMgYmVmb3JlIGFuZCBpbnNpZGUgdGhlIHRlc3QgcGFyYWdyYXBoLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKaW5kZXggOTVjYzIyYy4uMDUxZjdlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLlBhcmVuTWF0Y2guCisnJydUZXN0IGlkbGVsaWIucGFyZW5tYXRjaC4KIAogVGhpcyBtdXN0IGN1cnJlbnRseSBiZSBhIGd1aSB0ZXN0IGJlY2F1c2UgUGFyZW5NYXRjaCBtZXRob2RzIHVzZQogc2V2ZXJhbCB0ZXh0IG1ldGhvZHMgbm90IGRlZmluZWQgb24gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ay5UZXh0LgpAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci1mcm9tIGlkbGVsaWIuUGFyZW5NYXRjaCBpbXBvcnQgUGFyZW5NYXRjaAorZnJvbSBpZGxlbGliLnBhcmVubWF0Y2ggaW1wb3J0IFBhcmVuTWF0Y2gKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKQEAgLTM4LDEyICszOCwxNyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgnMS4wJywgJ2VuZCcpCiAKKyAgICBkZWYgZ2V0X3BhcmVubWF0Y2goc2VsZik6CisgICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtLmJlbGwgPSBsYW1iZGE6IE5vbmUKKyAgICAgICAgcmV0dXJuIHBtCisKICAgICBkZWYgdGVzdF9wYXJlbl9leHByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2V4cHJlc3Npb24nIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2V4cHJlc3Npb24nKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTY2LDcgKzcxLDcgQEAKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2RlZmF1bHQnIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2RlZmF1bHQnKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTg2LDcgKzkxLDcgQEAKICAgICAgICAgVGhlc2UgY2FzZXMgZm9yY2UgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgYWx0ZXJuYXRlIHBhdGhzLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnIyB0aGlzIGlzIGEgY29tbWVuKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKQEAgLTk5LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXN0b3JlX3RpbWVyKHNlbGYpOgotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5yZXN0b3JlX2V2ZW50ID0gTW9jaygpCiAgICAgICAgIHBtLmhhbmRsZV9yZXN0b3JlX3RpbWVyKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbS5yZXN0b3JlX2V2ZW50LmNhbGxlZCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKaW5kZXggYWZiODg2Zi4uODEzY2JjYyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKQEAgLTIsMTMgKzIsMTMgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGlkbGVsaWIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUGF0aEJyb3dzZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcGF0aGJyb3dzZXIKIAogY2xhc3MgUGF0aEJyb3dzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X0RpckJyb3dzZXJUcmVlSXRlbShzZWxmKToKICAgICAgICAgIyBJc3N1ZTE2MjI2IC0gbWFrZSBzdXJlIHRoYXQgZ2V0dGluZyBhIHN1Ymxpc3Qgd29ya3MKLSAgICAgICAgZCA9IFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKKyAgICAgICAgZCA9IHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKICAgICAgICAgZC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZC5HZXRUZXh0KCkpCiAKQEAgLTE3LDExICsxNywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaXNwYWNrYWdlZGlyKGRpciArICcvSWNvbnMnKSwgRmFsc2UpCiAKICAgICBkZWYgdGVzdF9QYXRoQnJvd3NlclRyZWVJdGVtKHNlbGYpOgotICAgICAgICBwID0gUGF0aEJyb3dzZXIuUGF0aEJyb3dzZXJUcmVlSXRlbSgpCisgICAgICAgIHAgPSBwYXRoYnJvd3Nlci5QYXRoQnJvd3NlclRyZWVJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLkdldFRleHQoKSwgJ3N5cy5wYXRoJykKICAgICAgICAgc3ViID0gcC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3ViKSwgbGVuKHN5cy5wYXRoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKaW5kZXggNGMwYTdhZC4uNTczYjlhMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CkBAIC0xLDEwICsxLDEwIEBACi0nJydUZXN0IFBlcmNvbGF0b3InJycKKycnJ1Rlc3QgcGVyY29sYXRvci5weS4nJycKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUZXh0LCBUaywgRU5ECi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCiAKIAogY2xhc3MgTXlGaWx0ZXIoRGVsZWdhdG9yKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhZjhlYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzUzIEBACisiIiJUZXN0IGlkbGVsaWIucXVlcnkuCisKK05vbi1ndWkgdGVzdHMgZm9yIFF1ZXJ5LCBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UgdXNlCitkdW1teSB2ZXJzaW9ucyB0aGF0IGV4dHJhY3QgdGhlIG5vbi1ndWkgbWV0aG9kcyBhbmQgYWRkIG90aGVyIG5lZWRlZAorYXR0cmlidXRlcy4gIEdVSSB0ZXN0cyBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgZWFjaCBjbGFzcyBhbmQgc2ltdWxhdGUKK2VudHJpZXMgYW5kIGJ1dHRvbiBjbGlja3MuICBTdWJjbGFzcyB0ZXN0cyBvbmx5IHRhcmdldCB0aGUgbmV3IGNvZGUgaW4KK3RoZSBzdWJjbGFzcyBkZWZpbml0aW9uLgorCitUaGUgYXBwZWFyYW5jZSBvZiB0aGUgd2lkZ2V0cyBpcyBjaGVja2VkIGJ5IHRoZSBRdWVyeSBhbmQKK0hlbHBTb3VyY2UgaHRlc3RzLiAgVGhlc2UgYXJlIHJ1biBieSBydW5uaW5nIHF1ZXJ5LnB5LgorCitDb3ZlcmFnZTogOTQlICgxMDAlIGZvciBRdWVyeSBhbmQgU2VjdGlvbk5hbWUpLgorNiBvZiA4IG1pc3NpbmcgYXJlIE1vZHVsZU5hbWUgZXhjZXB0aW9ucyBJIGRvbid0IGtub3cgaG93IHRvIHRyaWdnZXIuCisiIiIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhcgorZnJvbSBpZGxlbGliIGltcG9ydCBxdWVyeQorCisKKyMgTk9OLUdVSSBURVNUUworCitjbGFzcyBRdWVyeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFF1ZXJ5IGJhc2UgY2xhc3MuIgorCisgICAgY2xhc3MgRHVtbXlfUXVlcnk6CisgICAgICAgICMgVGVzdCB0aGUgZm9sbG93aW5nIFF1ZXJ5IG1ldGhvZHMuCisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuUXVlcnkuZW50cnlfb2sKKyAgICAgICAgb2sgPSBxdWVyeS5RdWVyeS5vaworICAgICAgICBjYW5jZWwgPSBxdWVyeS5RdWVyeS5jYW5jZWwKKyAgICAgICAgIyBBZGQgYXR0cmlidXRlcyBhbmQgaW5pdGlhbGl6YXRpb24gbmVlZGVkIGZvciB0ZXN0cy4KKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveWVkID0gRmFsc2UKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKyAgICAgICAgZGVmIGRlc3Ryb3koc2VsZik6CisgICAgICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2JsYW5rIGxpbmUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2dvb2Qoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJyAgZ29vZCAnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5X29rKCksICdnb29kJykKKyAgICAgICAgRXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSwgJycpCisKKyAgICBkZWYgdGVzdF9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnJykKKyAgICAgICAgZGlhbG9nLmVudHJ5LmZvY3VzX3NldCA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLm9rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZW50cnkuZm9jdXNfc2V0LmNhbGxlZCkKKyAgICAgICAgZGVsIGRpYWxvZy5lbnRyeS5mb2N1c19zZXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisKKyAgICBkZWYgdGVzdF9va19nb29kKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdnb29kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cub2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksICgnZ29vZCcsIFRydWUpKQorCisgICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdkb2VzIG5vdCBtYXR0ZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5jYW5jZWwoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBUcnVlKSkKKworCitjbGFzcyBTZWN0aW9uTmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFNlY3Rpb25OYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X1NlY3Rpb25OYW1lOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LlNlY3Rpb25OYW1lLmVudHJ5X29rICAjIEZ1bmN0aW9uIGJlaW5nIHRlc3RlZC4KKyAgICAgICAgdXNlZF9uYW1lcyA9IFsndXNlZCddCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgZGVmIHRlc3RfYmxhbmtfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfdXNlZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJ3VzZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCd1c2UnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2xvbmdfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCdnb29kJyo4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsb25nZXIgdGhhbiAzMCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZ29vZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJyAgZ29vZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCAnZ29vZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKK2NsYXNzIE1vZHVsZU5hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBNb2R1bGVOYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X01vZHVsZU5hbWU6CisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuTW9kdWxlTmFtZS5lbnRyeV9vayAgIyBGdW5jdGlvbiBiZWluZyB0ZXN0ZWQuCisgICAgICAgIHRleHQwID0gJycKKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBkZWYgdGVzdF9ibGFua19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfYm9ndXNfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnX19uYW1lX3h5ejEyM19zaG91bGRfbm90X2V4aXN0X18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZm91bmQnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2Nfc291cmNlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnaXRlcnRvb2xzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc291cmNlLWJhc2VkJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9nb29kX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ2lkbGVsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmVudHJ5X29rKCkuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKKyMgMyBIZWxwU291cmNlIHRlc3QgY2xhc3NlcyBlYWNoIHRlc3Qgb25lIGZ1bmN0aW9uLgorCitvcmlnX3BsYXRmb3JtID0gcXVlcnkucGxhdGZvcm0KKworY2xhc3MgSGVscHNvdXJjZUJyb3dzZWZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBicm93c2VfZmlsZSBtZXRob2Qgb2YgTW9kdWxlTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBicm93c2VfZmlsZSA9IHF1ZXJ5LkhlbHBTb3VyY2UuYnJvd3NlX2ZpbGUKKyAgICAgICAgcGF0aHZhciA9IFZhcigpCisKKyAgICBkZWYgdGVzdF9maWxlX3JlcGxhY2VzX3BhdGgoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgpCisgICAgICAgICMgUGF0aCBpcyB3aWRnZXQgZW50cnksIGVpdGhlciAnJyBvciBzb21ldGhpbmcuCisgICAgICAgICMgRnVuYyByZXR1cm4gaXMgZmlsZSBkaWFsb2cgcmV0dXJuLCBlaXRoZXIgJycgb3Igc29tZXRoaW5nLgorICAgICAgICAjIEZ1bmMgcmV0dXJuIHNob3VsZCBvdmVycmlkZSB3aWRnZXQgZW50cnkuCisgICAgICAgICMgV2UgbmVlZCBhbGwgNCBjb21iaW5hdGlvbiB0byB0ZXN0IGFsbCAobW9zdCkgY29kZSBwYXRocy4KKyAgICAgICAgZm9yIHBhdGgsIGZ1bmMsIHJlc3VsdCBpbiAoCisgICAgICAgICAgICAgICAgKCcnLCBsYW1iZGEgYSxiLGM6JycsICcnKSwKKyAgICAgICAgICAgICAgICAoJycsIGxhbWJkYSBhLGIsYzogX19maWxlX18sIF9fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOicnLCAnaHRlc3QnKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOiBfX2ZpbGVfXywgX19maWxlX18pKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGh2YXIuc2V0KHBhdGgpCisgICAgICAgICAgICAgICAgZGlhbG9nLmFza2ZpbGVuYW1lID0gZnVuYworICAgICAgICAgICAgICAgIGRpYWxvZy5icm93c2VfZmlsZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aHZhci5nZXQoKSwgcmVzdWx0KQorCisKK2NsYXNzIEhlbHBzb3VyY2VQYXRob2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBwYXRoX29rIG1ldGhvZCBvZiBIZWxwU291cmNlIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X0hlbHBTb3VyY2U6CisgICAgICAgIHBhdGhfb2sgPSBxdWVyeS5IZWxwU291cmNlLnBhdGhfb2sKKyAgICAgICAgcGF0aCA9IFZhcigpCisgICAgICAgIHBhdGhfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfcGF0aCk6CisgICAgICAgICAgICBzZWxmLnBhdGguc2V0KGR1bW15X3BhdGgpCisgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBxdWVyeS5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gaGVscCBmaWxlJywgZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmFkKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoX19maWxlX18gKyAnYmFkLWJhZC1iYWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX3dlYihzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZm9yIHVybCBpbiAnd3d3LnB5Lm9yZycsICdodHRwOi8vcHkub3JnJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGguc2V0KHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10sICcnKQorCisgICAgZGVmIHRlc3RfcGF0aF9va19maWxlKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJycpCisgICAgICAgIGZvciBwbGF0Zm9ybSwgcHJlZml4IGluICgnZGFyd2luJywgJ2ZpbGU6Ly8nKSwgKCdvdGhlcicsICcnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgcXVlcnkucGxhdGZvcm0gPSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRoLnNldChfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHByZWZpeCArIF9fZmlsZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSwgJycpCisKKworY2xhc3MgSGVscHNvdXJjZUVudHJ5b2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlbnRyeV9vayBtZXRob2Qgb2YgSGVscFNvdXJjZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LkhlbHBTb3VyY2UuZW50cnlfb2sKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBwYXRoX2Vycm9yID0ge30KKyAgICAgICAgZGVmIGl0ZW1fb2soc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisgICAgICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHRlc3RfZW50cnlfb2tfaGVscHNvdXJjZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCkKKyAgICAgICAgZm9yIG5hbWUsIHBhdGgsIHJlc3VsdCBpbiAoKE5vbmUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2RvYy50eHQnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCAnZG9jLnR4dCcsICgnZG9jJywgJ2RvYy50eHQnKSkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgICAgICBkaWFsb2cubmFtZSwgZGlhbG9nLnBhdGggPSBuYW1lLCBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgcmVzdWx0KQorCisKKyMgR1VJIFRFU1RTCisKK2NsYXNzIFF1ZXJ5R3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSByb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisgICAgICAgIGNscy5kaWFsb2cgPSBxdWVyeS5RdWVyeShyb290LCAnVEVTVCcsICd0ZXN0JywgX3V0ZXN0PVRydWUpCisgICAgICAgIGNscy5kaWFsb2cuZGVzdHJveSA9IG1vY2suTW9jaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLmRpYWxvZworICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLmVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKKyAgICAgICAgc2VsZi5kaWFsb2cucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95LnJlc2V0X21vY2soKQorCisgICAgZGVmIHRlc3RfY2xpY2tfb2soc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jbGlja19jYW5jZWwoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fY2FuY2VsLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworCitjbGFzcyBTZWN0aW9ubmFtZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBkaWFsb2cgPSAgcXVlcnkuU2VjdGlvbk5hbWUocm9vdCwgJ1QnLCAndCcsIHsnYWJjJ30sIF91dGVzdD1UcnVlKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cudXNlZF9uYW1lcywgeydhYmMnfSkKKyAgICAgICAgZGlhbG9nLmVudHJ5Lmluc2VydCgwLCAnb2theScpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnb2theScpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBNb2R1bGVuYW1lR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5Lk1vZHVsZU5hbWUocm9vdCwgJ1QnLCAndCcsICdpZGxlbGliJywgX3V0ZXN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnRleHQwLCAnaWRsZWxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5LmdldCgpLCAnaWRsZWxpYicpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5yZXN1bHQuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBIZWxwc291cmNlR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX2hlbHBfc291cmNlKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5LkhlbHBTb3VyY2Uocm9vdCwgJ1QnLCBtZW51aXRlbT0nX190ZXN0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcGF0aD1fX2ZpbGVfXywgX3V0ZXN0PVRydWUpCisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnkuZ2V0KCksICdfX3Rlc3RfXycpCisgICAgICAgIEVxdWFsKGRpYWxvZy5wYXRoLmdldCgpLCBfX2ZpbGVfXykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBwcmVmaXggPSAiZmlsZTovLyIgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGVsc2UgJycKKyAgICAgICAgRXF1YWwoZGlhbG9nLnJlc3VsdCwgKCdfX3Rlc3RfXycsIHByZWZpeCArIF9fZmlsZV9fKSkKKyAgICAgICAgZGVsIGRpYWxvZworICAgICAgICByb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgcm9vdAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dpZGdldHJlZGlyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQppbmRleCBiYWE5NzVkLi5iMDM4NWZhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZWRpcmVjdG9yLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IuCisnJydUZXN0IGlkbGVsaWIucmVkaXJlY3Rvci4KIAogMTAwJSBjb3ZlcmFnZQogJycnCkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dCwgVGNsRXJyb3IKLWZyb20gaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCitmcm9tIGlkbGVsaWIucmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgogCiAKIGNsYXNzIEluaXRDbG9zZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTIwLDYgKzEyMCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yb290LmNhbGwoc2VsZi50ZXh0Ll93LCAnaW5zZXJ0JywgJ2JvbycpLCAnJykKIAogCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2UucHkKaW5kZXggZmY0NDgyMC4uOTkxM2VkMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZWRpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuUmVwbGFjZURpYWxvZyIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIucmVwbGFjZS5weSIiIgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIApAQCAtNiw4ICs2LDggQEAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94Ci1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlJlcGxhY2VEaWFsb2cgYXMgcmQKK2ltcG9ydCBpZGxlbGliLnNlYXJjaGVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliLnJlcGxhY2UgaW1wb3J0IFJlcGxhY2VEaWFsb2cKIAogb3JpZ19tYm94ID0gc2UudGtNZXNzYWdlQm94CiBzaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgpAQCAtMjEsNyArMjEsOCBAQAogICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCiAgICAgICAgIHNlLnRrTWVzc2FnZUJveCA9IE1ib3gKICAgICAgICAgY2xzLmVuZ2luZSA9IHNlLlNlYXJjaEVuZ2luZShjbHMucm9vdCkKLSAgICAgICAgY2xzLmRpYWxvZyA9IHJkLlJlcGxhY2VEaWFsb2coY2xzLnJvb3QsIGNscy5lbmdpbmUpCisgICAgICAgIGNscy5kaWFsb2cgPSBSZXBsYWNlRGlhbG9nKGNscy5yb290LCBjbHMuZW5naW5lKQorICAgICAgICBjbHMuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgY2xzLmRpYWxvZy5vayA9IE1vY2soKQogICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCiAgICAgICAgIGNscy50ZXh0LnVuZG9fYmxvY2tfc3RhcnQgPSBNb2NrKCkKQEAgLTcwLDcgKzcxLDYgQEAKICAgICAgICAgIyB0ZXh0IGZvdW5kIGFuZCByZXBsYWNlZAogICAgICAgICBwdi5zZXQoJ2EnKQogICAgICAgICBydi5zZXQoJ2FzZGYnKQotICAgICAgICBzZWxmLmRpYWxvZy5vcGVuKHNlbGYudGV4dCkKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGVxdWFsKHRleHQuZ2V0KCcxLjgnLCAnMS4xMicpLCAnYXNkZicpCiAKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgdGV4dC5tYXJrX3NldCgnaW5zZXJ0JywgJ2VuZCcpCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnXG5saW5lNDI6JykKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgYWZ0ZXJfdGV4dCA9IHRleHQuZ2V0KCcxLjAnLCAnZW5kJykKICAgICAgICAgZXF1YWwoYmVmb3JlX3RleHQsIGFmdGVyX3RleHQpCkBAIC0xOTIsNyArMTkyLDcgQEAKICAgICAgICAgc2VsZi5lbmdpbmUucmV2YXIuc2V0KFRydWUpCiAKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICBydi5zZXQoJ2hlbGxvJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGFmdGVyX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCkBAIC0yMDcsNyArMjA3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VtcHR5Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCiAKLSAgICAgICAgcHYuc2V0KCdbXGQnKQorICAgICAgICBwdi5zZXQocidbXGQnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1BhdHRlcm4nLCBzaG93ZXJyb3IubWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQppbmRleCAxYzkwYjkzLi4xMzBlNmJlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5Sc3RyaXBFeHRlbnNpb24gYXMgcnMKK2ltcG9ydCBpZGxlbGliLnJzdHJpcCBhcyBycwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEVkaXRvcgogCiBjbGFzcyByc3RyaXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIxLDcgKzIxLDcgQEAKICAgICBkZWYgdGVzdF9yc3RyaXBfbXVsdGlwbGUoc2VsZik6CiAgICAgICAgIGVkaXRvciA9IEVkaXRvcigpCiAgICAgICAgICMgIFVuY29tbWVudCBmb2xsb3dpbmcgdG8gdmVyaWZ5IHRoYXQgdGVzdCBwYXNzZXMgd2l0aCByZWFsIHdpZGdldHMuCi0jIyAgICAgICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93IGFzIEVkaXRvcgorIyMgICAgICAgIGZyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdyBhcyBFZGl0b3IKICMjICAgICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRrCiAjIyAgICAgICAgZWRpdG9yID0gRWRpdG9yKHJvb3Q9VGsoKSkKICAgICAgICAgdGV4dCA9IGVkaXRvci50ZXh0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhYWJmZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3Njcm9sbGVkbGlzdC5weQpAQCAtMCwwICsxLDI5IEBACisnJycgVGVzdCBpZGxlbGliLnNjcm9sbGVkbGlzdC4KKworQ292ZXJhZ2U6IDM5JQorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNjcm9sbGVkbGlzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIFNjcm9sbGVkTGlzdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIHNjcm9sbGVkbGlzdC5TY3JvbGxlZExpc3Qoc2VsZi5yb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQppbmRleCAxOTBjODY2Li44MGZhOTNhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVGVzdCBTZWFyY2hEaWFsb2cgY2xhc3MgaW4gU2VhcmNoRGlhbG9ndWUucHkiIiIKKyIiIlRlc3QgU2VhcmNoRGlhbG9nIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoLnB5IiIiCiAKICMgRG9lcyBub3QgY3VycmVudGx5IHRlc3QgdGhlIGV2ZW50IGhhbmRsZXIgd3JhcHBlcnMuCiAjIEEgdXNhZ2UgdGVzdCBzaG91bGQgc2ltdWxhdGUgY2xpY2tzIGFuZCBjaGVjayBoaWxpZ2h0aW5nLgpAQCAtMTEsOCArMTEsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGtpbnRlciBhcyB0awogZnJvbSB0a2ludGVyIGltcG9ydCBCb29sZWFuVmFyCi1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlNlYXJjaERpYWxvZyBhcyBzZAoraW1wb3J0IGlkbGVsaWIuc2VhcmNoZW5naW5lIGFzIHNlCitpbXBvcnQgaWRsZWxpYi5zZWFyY2ggYXMgc2QKIAogCiBjbGFzcyBTZWFyY2hEaWFsb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI5LDYgKzI5LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZW5naW5lID0gc2UuU2VhcmNoRW5naW5lKHNlbGYucm9vdCkKICAgICAgICAgc2VsZi5kaWFsb2cgPSBzZC5TZWFyY2hEaWFsb2coc2VsZi5yb290LCBzZWxmLmVuZ2luZSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogICAgICAgICBzZWxmLnRleHQgPSB0ay5UZXh0KHNlbGYucm9vdCkKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ0hlbGxvIFdvcmxkIScpCiAKQEAgLTM4LDYgKzM5LDcgQEAKIAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnSGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGJhc2UucHkKaW5kZXggODAzNmI5MS4uZDc2OWZhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nYmFzZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CkBAIC0xLDE0ICsxLDEzIEBACi0nJydVbml0dGVzdHMgZm9yIGlkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQorJycndGVzdHMgaWRsZWxpYi5zZWFyY2hiYXNlLgogCiBDb3ZlcmFnZTogOTklLiBUaGUgb25seSB0aGluZyBub3QgY292ZXJlZCBpcyBpbmNvbnNlcXVlbnRpYWwgLS0KIHRlc3Rpbmcgc2tpcHBpbmcgb2Ygc3VpdGUgd2hlbiBzZWxmLm5lZWR3cmFwYnV0dG9uIGlzIGZhbHNlLgotCiAnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUgIyMsIEJvb2xlYW5WYXIsIFN0cmluZ1ZhcgotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUgYXMgc2UKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZSBhcyBzZGIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGJhc2UgYXMgc2RiCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogIyMgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKIApAQCAtNzQsNyArNzMsNyBAQAogICAgIGRlZiB0ZXN0X21ha2VfZW50cnkoc2VsZik6CiAgICAgICAgIGVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCi0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIGVudHJ5LCBsYWJlbCA9IHNlbGYuZGlhbG9nLm1ha2VfZW50cnkoIlRlc3Q6IiwgJ2hlbGxvJykKICAgICAgICAgZXF1YWwobGFiZWxbJ3RleHQnXSwgJ1Rlc3Q6JykKIApAQCAtODcsNiArODYsNyBAQAogICAgICAgICBlcXVhbChzZWxmLmRpYWxvZy5yb3csIDEpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfZW50cmllcyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCdoZWxsbycpCiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9lbnRyaWVzKCkKQEAgLTk0LDcgKzk0LDcgQEAKIAogICAgIGRlZiB0ZXN0X21ha2VfZnJhbWUoc2VsZik6CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgZnJhbWUsIGxhYmVsID0gc2VsZi5kaWFsb2cubWFrZV9mcmFtZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGFiZWwsICcnKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnJhbWUsIEZyYW1lKQpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmcmFtZSwgRnJhbWUpCiAKICAgICBkZWYgYnRuX3Rlc3Rfc2V0dXAoc2VsZiwgbWV0aCk6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgcmV0dXJuIG1ldGgoKQogCkBAIC0xMTksMTEgKzExOSw2IEBACiAgICAgICAgICAgICAgICAgdmFyLCBsYWJlbCA9IHNwZWMKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1dHRvblsndGV4dCddLCBsYWJlbCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCi0gICAgICAgICAgICAgICAgaWYgc3RhdGUgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmRlc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBidXR0b24uc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgMSAtIHN0YXRlKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIGZvciBzdGF0ZSBpbiAoRmFsc2UsIFRydWUpOgpAQCAtMTM5LDE4ICsxMzQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIyBoaXQgb3RoZXIgYnV0dG9uLCB0aGVuIHRoaXMgb25lCiAgICAgICAgICAgICAgICAgICAgICMgaW5kZXhlcyBkZXBlbmQgb24gYnV0dG9uIG9yZGVyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uc1t2YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCAxIC0gc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbMS12YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKIAogICAgIGRlZiB0ZXN0X21ha2VfYnV0dG9uKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5idXR0b25mcmFtZSA9IEZyYW1lKHNlbGYuZGlhbG9nLnRvcCkKICAgICAgICAgYnRuID0gc2VsZi5kaWFsb2cubWFrZV9idXR0b24oJ1Rlc3QnLCBzZWxmLmRpYWxvZy5jbG9zZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidG5bJ3RleHQnXSwgJ1Rlc3QnKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoKQogICAgICAgICAjIExvb2sgZm9yIGNsb3NlIGJ1dHRvbiBjb21tYW5kIGluIGJ1dHRvbmZyYW1lCiAgICAgICAgIGNsb3NlYnV0dG9uY29tbWFuZCA9ICcnCkBAIC0xNjAsNiArMTUyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignY2xvc2UnLCBjbG9zZWJ1dHRvbmNvbW1hbmQpCiAKIAotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQppbmRleCBlZGJkNTU4Li5iM2FhOGViIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBmdW5jdGlvbnMgYW5kIFNlYXJjaEVuZ2luZSBjbGFzcyBpbiBTZWFyY2hFbmdpbmUucHkuJycnCisnJydUZXN0IGZ1bmN0aW9ucyBhbmQgU2VhcmNoRW5naW5lIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoZW5naW5lLnB5LicnJwogCiAjIFdpdGggbW9jayByZXBsYWNlbWVudHMsIHRoZSBtb2R1bGUgZG9lcyBub3QgdXNlIGFueSBndWkgd2lkZ2V0cy4KICMgVGhlIHVzZSBvZiB0ay5UZXh0IGlzIGF2b2lkZWQgKGZvciBub3csIHVudGlsIG1vY2sgVGV4dCBpcyBpbXByb3ZlZCkKQEAgLTEwLDcgKzEwLDcgQEAKICMgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0ICBCb29sZWFuVmFyLCBTdHJpbmdWYXIsIFRjbEVycm9yICAjICxUaywgVGV4dAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZSBhcyBzZQogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBtb2NrVGV4dAogCkBAIC0xMzksMTAgKzEzOSwxMCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0Y29va2VkcGF0KHNlbGYpOgogICAgICAgICBlbmdpbmUgPSBzZWxmLmVuZ2luZQotICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KCdccycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5naW5lLmdldHBhdCgpLCAnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidccycpCiAgICAgICAgIGVuZ2luZS5yZXZhci5zZXQoMSkKLSAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdCgnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidcXHMnKQogCiAgICAgZGVmIHRlc3RfZ2V0Y29va2VkcGF0KHNlbGYpOgpAQCAtMTU2LDEwICsxNTYsMTAgQEAKICAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xiaGVsbG9cYicpCiAgICAgICAgIGVuZ2luZS53b3JkdmFyLnNldChGYWxzZSkKIAotICAgICAgICBlbmdpbmUuc2V0cGF0KCdccycpCisgICAgICAgIGVuZ2luZS5zZXRwYXQocidccycpCiAgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidcXHMnKQogICAgICAgICBlbmdpbmUucmV2YXIuc2V0KFRydWUpCi0gICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgJ1xzJykKKyAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xzJykKIAogICAgIGRlZiB0ZXN0X2dldHByb2coc2VsZik6CiAgICAgICAgIGVuZ2luZSA9IHNlbGYuZW5naW5lCkBAIC0yODIsNyArMjgyLDcgQEAKICAgICAgICAgY2xzLnBhdCA9IHJlLmNvbXBpbGUoJ3RhcmdldCcpCiAgICAgICAgIGNscy5yZXMgPSAoMiwgKDEwLCAxNikpICAjIGxpbmUsIHNsaWNlIGluZGV4ZXMgb2YgJ3RhcmdldCcKICAgICAgICAgY2xzLmZhaWxwYXQgPSByZS5jb21waWxlKCd4eXonKSAgIyBub3QgaW4gdGV4dAotICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKCdcdyonKSAgIyBlbXB0eSBtYXRjaCBwb3NzaWJsZQorICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKHInXHcqJykgICMgZW1wdHkgbWF0Y2ggcG9zc2libGUKIAogICAgIGRlZiBtYWtlX3NlYXJjaChzZWxmLCBmdW5jKToKICAgICAgICAgZGVmIHNlYXJjaChwYXQsIGxpbmUsIGNvbCwgd3JhcCwgb2s9MCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQppbmRleCA3ZTgyM2RmLi5hNWJhN2JiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKQEAgLTEsMTcgKzEsMTkgQEAKLSMgVGVzdCBtb2NrX3RrLlRleHQgY2xhc3MgYWdhaW5zdCB0a2ludGVyLlRleHQgY2xhc3MgYnkgcnVubmluZyBzYW1lIHRlc3RzIHdpdGggYm90aC4KKycnJyBUZXN0IG1vY2tfdGsuVGV4dCBjbGFzcyBhZ2FpbnN0IHRraW50ZXIuVGV4dCBjbGFzcworCitSdW4gc2FtZSB0ZXN0cyB3aXRoIGJvdGggYnkgY3JlYXRpbmcgYSBtaXhpbiBjbGFzcy4KKycnJwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKLQogZnJvbSBfdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAogY2xhc3MgVGV4dFRlc3Qob2JqZWN0KToKKyAgICAiRGVmaW5lIGl0ZW1zIGNvbW1vbiB0byBib3RoIHNldHMgb2YgdGVzdHMuIgogCi0gICAgaHcgPSAnaGVsbG9cbndvcmxkJyAgIyB1c3VhbCBpbml0aWFsIGluc2VydCBhZnRlciBpbml0aWFsaXphdGlvbgorICAgIGh3ID0gJ2hlbGxvXG53b3JsZCcgICMgU2V2ZXJhbCB0ZXN0cyBpbnNlcnQgdGhpcyBhZnRlciBhZnRlciBpbml0aWFsaXphdGlvbi4KICAgICBod24gPSBodysnXG4nICAjIFxuIHByZXNlbnQgYXQgaW5pdGlhbGl6YXRpb24sIGJlZm9yZSBpbnNlcnQKIAotICAgIFRleHQgPSBOb25lCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoKQorICAgICMgc2V0VXBDbGFzcyBkZWZpbmVzIGNscy5UZXh0IGFuZCBtYXliZSBjbHMucm9vdC4KKyAgICAjIHNldFVwIGRlZmluZXMgc2VsZi50ZXh0IGZyb20gVGV4dCBhbmQgbWF5YmUgcm9vdC4KIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0LmdldCgnMS4wJyksICdcbicpCkBAIC0xOTYsNiArMTk4LDEwIEBACiAgICAgICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dAogICAgICAgICBjbHMuVGV4dCA9IFRleHQKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KCkKKworCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgogICAgICAgICAjIHRlc3QgZW5kZmxhZ3MgKC0xLCAwKSBub3QgdGVzdGVkIGJ5IHRlc3RfaW5kZXggKHdoaWNoIHVzZXMgKzEpCiAgICAgICAgIGRlY29kZSA9IHNlbGYudGV4dC5fZGVjb2RlCkBAIC0yMjIsNiArMjI4LDkgQEAKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCiAgICAgICAgIGRlbCBjbHMucm9vdAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoc2VsZi5yb290KQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKaW5kZXggNWQyZTYwMC4uZjAxOGY1ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKQEAgLTEsMjEgKzEsMjEgQEAKLScnJ1Rlc3QgaWRsZWxpYi50ZXh0Vmlldy4KKycnJ1Rlc3QgaWRsZWxpYi50ZXh0dmlldy4KIAogU2luY2UgYWxsIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBjcmVhdGUgKG9yIGRlc3Ryb3kpIGEgVGV4dFZpZXdlciwgd2hpY2gKIGlzIGEgd2lkZ2V0IGNvbnRhaW5pbmcgbXVsdGlwbGUgd2lkZ2V0cywgYWxsIHRlc3RzIG11c3QgYmUgZ3VpIHRlc3RzLgogVXNpbmcgbW9jayBUZXh0IHdvdWxkIG5vdCBjaGFuZ2UgdGhpcy4gIE90aGVyIG1vY2tzIGFyZSB1c2VkIHRvIHJldHJpZXZlCiBpbmZvcm1hdGlvbiBhYm91dCBjYWxscy4KIAotVGhlIGNvdmVyYWdlIGlzIGVzc2VudGlhbGx5IDEwMCUuCitDb3ZlcmFnZTogOTQlLgogJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3IGFzIHR2CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogZnJvbSB0a2ludGVyIGltcG9ydCBUawotZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0VmlldyBhcyB0dgogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIAogZGVmIHNldFVwTW9kdWxlKCk6CiAgICAgZ2xvYmFsIHJvb3QKQEAgLTY0LDE3ICs2NCwxNyBAQAogICAgICAgICB2aWV3LmRlc3Ryb3koKQogCiAKLWNsYXNzIHRleHR2aWV3VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBWaWV3RnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0di50a01lc3NhZ2VCb3gKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gTWJveAorICAgICAgICBjbHMub3JpZ19lcnJvciA9IHR2LnNob3dlcnJvcgorICAgICAgICB0di5zaG93ZXJyb3IgPSBNYm94X2Z1bmMoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gY2xzLm9yaWdfbWJveAotICAgICAgICBkZWwgY2xzLm9yaWdfbWJveAorICAgICAgICB0di5zaG93ZXJyb3IgPSBjbHMub3JpZ19lcnJvcgorICAgICAgICBkZWwgY2xzLm9yaWdfZXJyb3IKIAogICAgIGRlZiB0ZXN0X3ZpZXdfdGV4dChzZWxmKToKICAgICAgICAgIyBJZiBtb2RhbCBUcnVlLCBnZXQgdGsgZXJyb3IgJ2Nhbid0IGludm9rZSAiZXZlbnQiIGNvbW1hbmQnLgpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdUZXN0Jywgdmlldy50ZXh0Vmlldy5nZXQoJzEuMCcsICcxLmVuZCcpKQogICAgICAgICB2aWV3Lk9rKCkKIAotICAgICAgICAjIE1vY2sgbWVzc2FnZWJveCB3aWxsIGJlIHVzZWQgYW5kIHZpZXdfZmlsZSB3aWxsIG5vdCByZXR1cm4gYW55dGhpbmcKKyAgICAgICAgIyBNb2NrIHNob3dlcnJvciB3aWxsIGJlIHVzZWQ7IHZpZXdfZmlsZSB3aWxsIHJldHVybiBOb25lLgogICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJy4uL25vdHRoZXJlLnB5JykKICAgICAgICAgdmlldyA9IHR2LnZpZXdfZmlsZShyb290LCAnVGl0bGUnLCB0ZXN0ZmlsZSwgbW9kYWw9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90cmVlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWJhOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpAQCAtMCwwICsxLDM2IEBACisnJycgVGVzdCBpZGxlbGliLnRyZWUuCisKK0NvdmVyYWdlOiA1NiUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCB0cmVlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBUcmVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIyBTdGFydCB3aXRoIGNvZGUgc2xpZ2h0bHkgYWRhcHRlZCBmcm9tIGh0ZXN0LgorICAgICAgICBzYyA9IHRyZWUuU2Nyb2xsZWRDYW52YXMoCisgICAgICAgICAgICBzZWxmLnJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIsIHNpZGU9J2xlZnQnKQorICAgICAgICBpdGVtID0gdHJlZS5GaWxlVHJlZUl0ZW0odHJlZS5JQ09ORElSKQorICAgICAgICBub2RlID0gdHJlZS5UcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCisgICAgICAgIG5vZGUuZXhwYW5kKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvLnB5CmluZGV4IDJiODNjOTkuLmU4NzI5MjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG9kZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIuVW5kb0RlbGVnYXRvci4KKyIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIudW5kby5weS4KIAogQ292ZXJhZ2UgYWJvdXQgODAlIChyZXRlc3QpLgogIiIiCkBAIC04LDggKzgsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGsKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjksOCArMjksOCBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRlbGVnYXRvciA9IFVuZG9EZWxlZ2F0b3IoKQorICAgICAgICBzZWxmLmRlbGVnYXRvci5iZWxsID0gTW9jaygpCiAgICAgICAgIHNlbGYucGVyY29sYXRvci5pbnNlcnRmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCi0gICAgICAgIHNlbGYuZGVsZWdhdG9yLmJlbGwgPSBNb2NrKHdyYXBzPXNlbGYuZGVsZWdhdG9yLmJlbGwpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYucGVyY29sYXRvci5yZW1vdmVmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQppbmRleCAxODYyN2RkLi5mMzI2OWYxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKQEAgLTEsNCArMSw0IEBACi0nJydUZXN0IHdhcm5pbmdzIHJlcGxhY2VtZW50IGluIFB5U2hlbGwucHkgYW5kIHJ1bi5weS4KKycnJ1Rlc3Qgd2FybmluZ3MgcmVwbGFjZW1lbnQgaW4gcHlzaGVsbC5weSBhbmQgcnVuLnB5LgogCiBUaGlzIGZpbGUgY291bGQgYmUgZXhwYW5kZWQgdG8gaW5jbHVkZSB0cmFjZWJhY2sgb3ZlcnJpZGVzCiAoaW4gc2FtZSB0d28gbW9kdWxlcykuIElmIHNvLCBjaGFuZ2UgbmFtZS4KQEAgLTE3LDkgKzE3LDkgQEAKIHJ1bm5pbmdfaW5faWRsZSA9ICdpZGxlJyBpbiBzaG93d2FybmluZy5fX25hbWVfXwogCiBmcm9tIGlkbGVsaWIgaW1wb3J0IHJ1bgotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsIGFzIHNoZWxsCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwgYXMgc2hlbGwKIAotIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBQeVNoZWxsLmlkbGVfZm9ybWF0d2FybmluZworIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBweXNoZWxsLmlkbGVfZm9ybWF0d2FybmluZwogIyBhbmQgY2hlY2tlZCBhcyBtYXRjaGluZyBleHBlY3RhdGlvbi4KIGlkbGVtc2cgPSAnJycKIFdhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTlmNjlhLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0iIiIKLVRoZSBzZXBhcmF0ZSBJZGxlIHZlcnNpb24gd2FzIGVsaW1pbmF0ZWQgeWVhcnMgYWdvOwotaWRsZWxpYi5pZGxldmVyIGlzIG5vIGxvbmdlciB1c2VkIGJ5IElkbGUKLWFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLiAgVXNlCi0gICAgZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KLSAgICBJRExFX1ZFUlNJT04gPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCi0iIiIKLSMgS2VwdCBmb3Igbm93IG9ubHkgZm9yIHBvc3NpYmxlIGV4aXN0aW5nIGV4dGVuc2lvbiB1c2UKLWltcG9ydCB3YXJuaW5ncyBhcyB3Ci13Lndhcm4oX19kb2NfXywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi1mcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgotSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0lPQmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaW9tZW51LnB5CmluZGV4IDg0ZjM5YTIuLjM0MTRjN2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9pb21lbnUucHkKQEAgLTEwLDU3ICsxMCw2MCBAQAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIGZyb20gdGtpbnRlci5zaW1wbGVkaWFsb2cgaW1wb3J0IGFza3N0cmluZwogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2ltcG9ydCBpZGxlbGliCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0KLSMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKLSMgd2hhdCBlbmNvZGluZyB0byB1c2UKLXRyeToKLSAgICBpbXBvcnQgbG9jYWxlCi0gICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUsICIiKQotZXhjZXB0IChJbXBvcnRFcnJvciwgbG9jYWxlLkVycm9yKToKLSAgICBwYXNzCi0KLSMgRW5jb2RpbmcgZm9yIGZpbGUgbmFtZXMKLWZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyMjIGN1cnJlbnRseSB1bnVzZWQKLQotbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgIyBPbiBXaW5kb3dzLCB3ZSBjb3VsZCB1c2UgIm1iY3MiLiBIb3dldmVyLCB0byBnaXZlIHRoZSB1c2VyCi0gICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCi0gICAgdHJ5OgotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCi0gICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQotICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKLSAgICAgICAgcGFzcworaWYgaWRsZWxpYi50ZXN0aW5nOiAgIyBTZXQgVHJ1ZSBieSB0ZXN0LnRlc3RfaWRsZSB0byBhdm9pZCBzZXRsb2NhbGUuCisgICAgZW5jb2RpbmcgPSAndXRmLTgnCiBlbHNlOgorICAgICMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKKyAgICAjIHdoYXQgZW5jb2RpbmcgdG8gdXNlCiAgICAgdHJ5OgotICAgICAgICAjIERpZmZlcmVudCB0aGluZ3MgY2FuIGZhaWwgaGVyZTogdGhlIGxvY2FsZSBtb2R1bGUgbWF5IG5vdCBiZQotICAgICAgICAjIGxvYWRlZCwgaXQgbWF5IG5vdCBvZmZlciBubF9sYW5naW5mbywgb3IgQ09ERVNFVCwgb3IgdGhlCi0gICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCi0gICAgICAgICMgdGhlc2UgcHJvYmxlbXMsIGZhbGxpbmcgYmFjayB0byBBU0NJSQotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUubmxfbGFuZ2luZm8obG9jYWxlLkNPREVTRVQpCi0gICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKLSAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAotICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICBleGNlcHQgKE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIExvb2t1cEVycm9yKToKLSAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKLSAgICAgICAgIyB3aGljaCBtYXkgZ2l2ZSBhIGNsdWUuIFVuZm9ydHVuYXRlbHksIGdldGRlZmF1bHRsb2NhbGUgaGFzCi0gICAgICAgICMgYnVncyB0aGF0IGNhbiBjYXVzZSBWYWx1ZUVycm9yLgorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCAiIikKKyAgICBleGNlcHQgKEltcG9ydEVycm9yLCBsb2NhbGUuRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICBsb2NhbGVfZGVjb2RlID0gJ2FzY2lpJworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAjIE9uIFdpbmRvd3MsIHdlIGNvdWxkIHVzZSAibWJjcyIuIEhvd2V2ZXIsIHRvIGdpdmUgdGhlIHVzZXIKKyAgICAgICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KKyAgICAgICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQorICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBEaWZmZXJlbnQgdGhpbmdzIGNhbiBmYWlsIGhlcmU6IHRoZSBsb2NhbGUgbW9kdWxlIG1heSBub3QgYmUKKyAgICAgICAgICAgICMgbG9hZGVkLCBpdCBtYXkgbm90IG9mZmVyIG5sX2xhbmdpbmZvLCBvciBDT0RFU0VULCBvciB0aGUKKyAgICAgICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCisgICAgICAgICAgICAjIHRoZXNlIHByb2JsZW1zLCBmYWxsaW5nIGJhY2sgdG8gQVNDSUkKKyAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5ubF9sYW5naW5mbyhsb2NhbGUuQ09ERVNFVCkKICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKICAgICAgICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKICAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCAoTmFtZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKKyAgICAgICAgICAgICMgd2hpY2ggbWF5IGdpdmUgYSBjbHVlLiBVbmZvcnR1bmF0ZWx5LCBnZXRkZWZhdWx0bG9jYWxlIGhhcworICAgICAgICAgICAgIyBidWdzIHRoYXQgY2FuIGNhdXNlIFZhbHVlRXJyb3IuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQorICAgICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKKyAgICAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCisgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKIAotbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nLmxvd2VyKCkKKyAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcubG93ZXIoKQogCi1lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZyAgIyMjIEtCSyAwN1NlcDA3ICBUaGlzIGlzIHVzZWQgYWxsIG92ZXIgSURMRSwgY2hlY2shCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjICdlbmNvZGluZycgaXMgdXNlZCBiZWxvdyBpbiBlbmNvZGUoKSwgY2hlY2shCisgICAgZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcKKyAgICAjIEVuY29kaW5nIGlzIHVzZWQgaW4gbXVsdGlwbGUgZmlsZXM7IGxvY2FsZV9lbmNvZGluZyBub3doZXJlLgorICAgICMgVGhlIG9ubHkgdXNlIG9mICdlbmNvZGluZycgYmVsb3cgaXMgaW4gX2RlY29kZSBhcyBpbml0aWFsIHZhbHVlCisgICAgIyBvZiBkZXByZWNhdGVkIGJsb2NrIGFza2luZyB1c2VyIGZvciBlbmNvZGluZy4KKyAgICAjIFBlcmhhcHMgdXNlIGVsc2V3aGVyZSBzaG91bGQgYmUgcmV2aWV3ZWQuCiAKIGNvZGluZ19yZSA9IHJlLmNvbXBpbGUocideWyBcdFxmXSojLio/Y29kaW5nWzo9XVsgXHRdKihbLVx3Ll0rKScsIHJlLkFTQ0lJKQogYmxhbmtfcmUgPSByZS5jb21waWxlKHInXlsgXHRcZl0qKD86WyNcclxuXXwkKScsIHJlLkFTQ0lJKQpAQCAtMTA3LDYgKzExMCw5IEBACiAKIAogY2xhc3MgSU9CaW5kaW5nOgorIyBPbmUgaW5zdGFuY2UgcGVyIGVkaXRvciBXaW5kb3cgc28gbWV0aG9kcyBrbm93IHdoaWNoIHRvIHNhdmUsIGNsb3NlLgorIyBPcGVuIHJldHVybnMgZm9jdXMgdG8gc2VsZi5lZGl0d2luIGlmIGFib3J0ZWQuCisjIEVkaXRvcldpbmRvdy5vcGVuX21vZHVsZSwgb3RoZXJzLCBiZWxvbmcgaGVyZS4KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgpAQCAtMzAxLDcgKzMwNyw3IEBACiAgICAgICAgICAgICAgICAgIlRoZSBmaWxlJ3MgZW5jb2RpbmcgaXMgaW52YWxpZCBmb3IgUHl0aG9uIDMueC5cbiIKICAgICAgICAgICAgICAgICAiSURMRSB3aWxsIGNvbnZlcnQgaXQgdG8gVVRGLTguXG4iCiAgICAgICAgICAgICAgICAgIldoYXQgaXMgdGhlIGN1cnJlbnQgZW5jb2Rpbmcgb2YgdGhlIGZpbGU/IiwKLSAgICAgICAgICAgICAgICBpbml0aWFsdmFsdWUgPSBsb2NhbGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgaW5pdGlhbHZhbHVlID0gZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5lZGl0d2luLnRleHQpCiAKICAgICAgICAgICAgIGlmIGVuYzoKQEAgLTUyOSw4ICs1MzUsOCBAQAogCiAgICAgcm9vdCA9IFRvcGxldmVsKHBhcmVudCkKICAgICByb290LnRpdGxlKCJUZXN0IElPQmluZGluZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIGNsYXNzIE15RWRpdFdpbjoKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQpOgogICAgICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dApAQCAtNTYxLDUgKzU2Nyw4IEBACiAgICAgSU9CaW5kaW5nKGVkaXR3aW4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9pb21lbnUnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfaW9fYmluZGluZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkgYi9MaWIvaWRsZWxpYi9tYWNvc3gucHkKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbWFjb3N4LnB5CmluZGV4IGI5NmJhZTEuLmMyMjVkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKKysrIGIvTGliL2lkbGVsaWIvbWFjb3N4LnB5CkBAIC0xLDMwICsxLDI1IEBACiAiIiIKIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyB0aGF0IGVuaGFuY2UgSURMRSBvbiBNYWMgT1NYLgogIiIiCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGtpbnRlcgotZnJvbSBvcyBpbXBvcnQgcGF0aAorZnJvbSBzeXMgaW1wb3J0IHBsYXRmb3JtICAjIFVzZWQgaW4gX2luaXRfdGtfdHlwZSwgY2hhbmdlZCBieSB0ZXN0LgogaW1wb3J0IHdhcm5pbmdzCiAKLWRlZiBydW5uaW5nQXNPU1hBcHAoKToKLSAgICB3YXJuaW5ncy53YXJuKCJydW5uaW5nQXNPU1hBcHAoKSBpcyBkZXByZWNhdGVkLCB1c2UgaXNBcXVhVGsoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gaXNBcXVhVGsoKQoraW1wb3J0IHRraW50ZXIKIAotZGVmIGlzQ2FyYm9uQXF1YVRrKHJvb3QpOgotICAgIHdhcm5pbmdzLndhcm4oImlzQ2FyYm9uQXF1YVRrKHJvb3QpIGlzIGRlcHJlY2F0ZWQsIHVzZSBpc0NhcmJvblRrKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuIGlzQ2FyYm9uVGsoKQorCisjIyBEZWZpbmUgZnVuY3Rpb25zIHRoYXQgcXVlcnkgdGhlIE1hYyBncmFwaGljcyB0eXBlLgorIyMgX3RrX3R5cGUgYW5kIGl0cyBpbml0aWFsaXplciBhcmUgcHJpdmF0ZSB0byB0aGlzIHNlY3Rpb24uCiAKIF90a190eXBlID0gTm9uZQogCi1kZWYgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhyb290KToKK2RlZiBfaW5pdF90a190eXBlKCk6CiAgICAgIiIiCiAgICAgSW5pdGlhbGl6ZXMgT1MgWCBUayB2YXJpYW50IHZhbHVlcyBmb3IKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBhbmQgaXNYUXVhcnR6KCkuCiAgICAgIiIiCiAgICAgZ2xvYmFsIF90a190eXBlCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICByb290ID0gdGtpbnRlci5UaygpCiAgICAgICAgIHdzID0gcm9vdC50ay5jYWxsKCd0aycsICd3aW5kb3dpbmdzeXN0ZW0nKQogICAgICAgICBpZiAneDExJyBpbiB3czoKICAgICAgICAgICAgIF90a190eXBlID0gInhxdWFydHoiCkBAIC0zNCw2ICsyOSw3IEBACiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJjb2NvYSIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF90a190eXBlID0gImNhcmJvbiIKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKICAgICBlbHNlOgogICAgICAgICBfdGtfdHlwZSA9ICJvdGhlciIKIApAQCAtNDEsNyArMzcsOCBAQAogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgbmF0aXZlIE9TIFggVGsgKENvY29hIG9yIENhcmJvbikuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNvY29hIiBvciBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDYXJib25UaygpOgpAQCAtNDksMjMgKzQ2LDI3IEBACiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDYXJib24gQXF1YSBUayAoaW5zdGVhZCBvZiB0aGUKICAgICBuZXdlciBDb2NvYSBBcXVhIFRrKS4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDb2NvYVRrKCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDb2NvYSBBcXVhIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjb2NvYSIKIAogZGVmIGlzWFF1YXJ0eigpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGFuIE9TIFggWDExIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJ4cXVhcnR6IgogCisKIGRlZiB0a1ZlcnNpb25XYXJuaW5nKHJvb3QpOgogICAgICIiIgogICAgIFJldHVybnMgYSBzdHJpbmcgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBUayB2ZXJzaW9uIGluIHVzZSBhcHBlYXJzIHRvCkBAIC04Niw2ICs4Nyw5IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKworIyMgRml4IHRoZSBtZW51IGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KKwogZGVmIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlc3BvbmQgdG8gb3BlbiBBcHBsZUV2ZW50cywgd2hpY2gKQEAgLTEyNCwyMyArMTI4LDIzIEBACiAgICAgIyBEdWUgdG8gYSAobWlzLSlmZWF0dXJlIG9mIFRrQXF1YSB0aGUgdXNlciB3aWxsIGFsc28gc2VlIGFuIGVtcHR5IEhlbHAKICAgICAjIG1lbnUuCiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBNZW51Ci0gICAgZnJvbSBpZGxlbGliIGltcG9ydCBCaW5kaW5ncwotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAorICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgbWFpbm1lbnUKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHdpbmRvd3MKIAotICAgIGNsb3NlSXRlbSA9IEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0yXQorICAgIGNsb3NlSXRlbSA9IG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdWy0yXQogCiAgICAgIyBSZW1vdmUgdGhlIGxhc3QgMyBpdGVtcyBvZiB0aGUgZmlsZSBtZW51OiBhIHNlcGFyYXRvciwgY2xvc2Ugd2luZG93IGFuZAogICAgICMgcXVpdC4gQ2xvc2Ugd2luZG93IHdpbGwgYmUgcmVpbnNlcnRlZCBqdXN0IGFib3ZlIHRoZSBzYXZlIGl0ZW0sIHdoZXJlCiAgICAgIyBpdCBzaG91bGQgYmUgYWNjb3JkaW5nIHRvIHRoZSBISUcuIFF1aXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uIG1lbnUuCi0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0zOl0KLSAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5pbnNlcnQoNiwgY2xvc2VJdGVtKQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1swXVsxXVstMzpdCisgICAgbWFpbm1lbnUubWVudWRlZnNbMF1bMV0uaW5zZXJ0KDYsIGNsb3NlSXRlbSkKIAogICAgICMgUmVtb3ZlIHRoZSAnQWJvdXQnIGVudHJ5IGZyb20gdGhlIGhlbHAgbWVudSwgaXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uCiAgICAgIyBtZW51Ci0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0xXVsxXVswOjJdCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0xXVsxXVswOjJdCiAgICAgIyBSZW1vdmUgdGhlICdDb25maWd1cmUgSWRsZScgZW50cnkgZnJvbSB0aGUgb3B0aW9ucyBtZW51LCBpdCBpcyBpbiB0aGUKICAgICAjIGFwcGxpY2F0aW9uIG1lbnUgYXMgJ1ByZWZlcmVuY2VzJwotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMl1bMV1bMF0KKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTJdWzFdWzBdCiAgICAgbWVudWJhciA9IE1lbnUocm9vdCkKICAgICByb290LmNvbmZpZ3VyZShtZW51PW1lbnViYXIpCiAgICAgbWVudWRpY3QgPSB7fQpAQCAtMTU1LDMwICsxNTksMzAgQEAKIAogICAgICAgICBpZiBlbmQgPiAwOgogICAgICAgICAgICAgbWVudS5kZWxldGUoMCwgZW5kKQotICAgICAgICBXaW5kb3dMaXN0LmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKLSAgICBXaW5kb3dMaXN0LnJlZ2lzdGVyX2NhbGxiYWNrKHBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgd2luZG93cy5hZGRfd2luZG93c190b19tZW51KG1lbnUpCisgICAgd2luZG93cy5yZWdpc3Rlcl9jYWxsYmFjayhwb3N0d2luZG93c21lbnUpCiAKICAgICBkZWYgYWJvdXRfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0Fib3V0IElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nCi0gICAgICAgIGFib3V0RGlhbG9nLkFib3V0RGlhbG9nKHJvb3QsICdBYm91dCBJRExFJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKKyAgICAgICAgaGVscF9hYm91dC5BYm91dERpYWxvZyhyb290LCAnQWJvdXQgSURMRScpCiAKICAgICBkZWYgY29uZmlnX2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBPcHRpb25zICdDb25maWd1cmUgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0RpYWxvZworICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ2RpYWxvZwogCiAgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIHJvb3Qgb2JqZWN0IGhhcyBhbiBpbnN0YW5jZV9kaWN0IGF0dHJpYnV0ZSwKICAgICAgICAgIyBtaXJyb3JzIGNvZGUgaW4gRWRpdG9yV2luZG93IChhbHRob3VnaCB0aGF0IHNldHMgdGhlIGF0dHJpYnV0ZQogICAgICAgICAjIG9uIGFuIEVkaXRvcldpbmRvdyBpbnN0YW5jZSB0aGF0IGlzIHRoZW4gcGFzc2VkIGFzIHRoZSBmaXJzdAogICAgICAgICAjIGFyZ3VtZW50IHRvIENvbmZpZ0RpYWxvZykKICAgICAgICAgcm9vdC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKLSAgICAgICAgY29uZmlnRGlhbG9nLkNvbmZpZ0RpYWxvZyhyb290LCAnU2V0dGluZ3MnKQorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHJvb3QsICdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmhlbHBfZGlhbG9nLgorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KICAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCiAgICAgICAgIGhlbHAuc2hvd19pZGxlaGVscChyb290KQogCkBAIC0xOTgsMjkgKzIwMiwzMyBAQAogICAgICAgICBtZW51ZGljdFsnYXBwbGljYXRpb24nXSA9IG1lbnUgPSBNZW51KG1lbnViYXIsIG5hbWU9J2FwcGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyb2ZmPTApCiAgICAgICAgIG1lbnViYXIuYWRkX2Nhc2NhZGUobGFiZWw9J0lETEUnLCBtZW51PW1lbnUpCi0gICAgICAgIEJpbmRpbmdzLm1lbnVkZWZzLmluc2VydCgwLAorICAgICAgICBtYWlubWVudS5tZW51ZGVmcy5pbnNlcnQoMCwKICAgICAgICAgICAgICgnYXBwbGljYXRpb24nLCBbCiAgICAgICAgICAgICAgICAgKCdBYm91dCBJRExFJywgJzw8YWJvdXQtaWRsZT4+JyksCiAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgXSkpCi0gICAgICAgIHRrdmVyc2lvbiA9IHJvb3QudGsuZXZhbCgnaW5mbyBwYXRjaGxldmVsJykKLSAgICAgICAgaWYgdHVwbGUobWFwKGludCwgdGt2ZXJzaW9uLnNwbGl0KCcuJykpKSA8ICg4LCA0LCAxNCk6Ci0gICAgICAgICAgICAjIGZvciBlYXJsaWVyIEFxdWFUayB2ZXJzaW9ucywgc3VwcGx5IGEgUHJlZmVyZW5jZXMgbWVudSBpdGVtCi0gICAgICAgICAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICgnX1ByZWZlcmVuY2VzLi4uLicsICc8PG9wZW4tY29uZmlnLWRpYWxvZz4+JyksCi0gICAgICAgICAgICAgICAgKQogICAgIGlmIGlzQ29jb2FUaygpOgogICAgICAgICAjIHJlcGxhY2UgZGVmYXVsdCBBYm91dCBkaWFsb2cgd2l0aCBBYm91dCBJRExFIG9uZQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJ3RrQWJvdXREaWFsb2cnLCBhYm91dF9kaWFsb2cpCiAgICAgICAgICMgcmVwbGFjZSBkZWZhdWx0ICJIZWxwIiBpdGVtIGluIEhlbHAgbWVudQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJzo6dGs6Om1hYzo6U2hvd0hlbHAnLCBoZWxwX2RpYWxvZykKICAgICAgICAgIyByZW1vdmUgcmVkdW5kYW50ICJJRExFIEhlbHAiIGZyb20gbWVudQotICAgICAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTFdWzFdWzBdCisgICAgICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMV1bMV1bMF0KKworZGVmIGZpeGIyY29udGV4dChyb290KToKKyAgICAnJydSZW1vdmVkIGJhZCBBcXVhVGsgQnV0dG9uLTIgKHJpZ2h0KSBhbmQgUGFzdGUgYmluZGluZ3MuCisKKyAgICBUaGV5IHByZXZlbnQgY29udGV4dCBtZW51IGFjY2VzcyBhbmQgc2VlbSB0byBiZSBnb25lIGluIEFxdWFUazguNi4KKyAgICBTZWUgaXNzdWUgIzI0ODAxLgorICAgICcnJworICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQorICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMi1Nb3Rpb24+JykKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8PFBhc3RlU2VsZWN0aW9uPj4nKQogCiBkZWYgc2V0dXBBcHAocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFBlcmZvcm0gaW5pdGlhbCBPUyBYIGN1c3RvbWl6YXRpb25zIGlmIG5lZWRlZC4KLSAgICBDYWxsZWQgZnJvbSBQeVNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKKyAgICBDYWxsZWQgZnJvbSBweXNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKIAogICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdGhyZWUgbWFqb3IgdmVyc2lvbnMgb2YgVGsgaW4gdXNlIG9uIE9TIFg6CiAgICAgICAgIDEuIEFxdWEgQ29jb2EgVGsgKG5hdGl2ZSBkZWZhdWx0IHNpbmNlIE9TIFggMTAuNikKQEAgLTIzMyw4ICsyNDEsMTMgQEAKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBpc1hRdWFydHooKSBmdW5jdGlvbnMgd2hpY2gKICAgICBhcmUgaW5pdGlhbGl6ZWQgaGVyZSBhcyB3ZWxsLgogICAgICIiIgotICAgIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCkKICAgICBpZiBpc0FxdWFUaygpOgogICAgICAgICBoaWRlVGtDb25zb2xlKHJvb3QpCiAgICAgICAgIG92ZXJyaWRlUm9vdE1lbnUocm9vdCwgZmxpc3QpCiAgICAgICAgIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpCisgICAgICAgIGZpeGIyY29udGV4dChyb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgorICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfbWFjb3N4JywgdmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weSBiL0xpYi9pZGxlbGliL21haW5tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0JpbmRpbmdzLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tYWlubWVudS5weQppbmRleCBlMTlhMjc5Li42NTM0NWNkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weQorKysgYi9MaWIvaWRsZWxpYi9tYWlubWVudS5weQpAQCAtMTAsOSArMTAsOSBAQAogIiIiCiBmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBmaW5kX3NwZWMKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0jICAgV2FybmluZzogbWVudWRlZnMgaXMgYWx0ZXJlZCBpbiBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUoKQorIyAgIFdhcm5pbmc6IG1lbnVkZWZzIGlzIGFsdGVyZWQgaW4gbWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUoKQogIyAgIGFmdGVyIGl0IGlzIGRldGVybWluZWQgdGhhdCBhbiBPUyBYIEFxdWEgVGsgaXMgaW4gdXNlLAogIyAgIHdoaWNoIGNhbm5vdCBiZSBkb25lIHVudGlsIGFmdGVyIFRrKCkgaXMgZmlyc3QgY2FsbGVkLgogIyAgIERvIG5vdCBhbHRlciB0aGUgJ2ZpbGUnLCAnb3B0aW9ucycsIG9yICdoZWxwJyBjYXNjYWRlcyBoZXJlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9NdWx0aUNhbGwucHkgYi9MaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKaW5kZXggODQ2Mjg1NC4uYjc0ZmVkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL211bHRpY2FsbC5weQpAQCAtMjgsOSArMjgsOSBAQAogICAgdW5sZXNzIHRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGZpcnN0IHJ1bGUuCiBFYWNoIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCBldmVudC4KICIiIgotCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwogaW1wb3J0IHRraW50ZXIKIAogIyB0aGUgZXZlbnQgdHlwZSBjb25zdGFudHMsIHdoaWNoIGRlZmluZSB0aGUgbWVhbmluZyBvZiBtY190eXBlCkBAIC00MTQsMTIgKzQxNCwxMiBAQAogICAgIHJldHVybiBNdWx0aUNhbGwKIAogCi1kZWYgX211bHRpX2NhbGwocGFyZW50KToKLSAgICByb290ID0gdGtpbnRlci5UaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICB0ZXh0ID0gTXVsdGlDYWxsQ3JlYXRvcih0a2ludGVyLlRleHQpKHJvb3QpCitkZWYgX211bHRpX2NhbGwocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IHRraW50ZXIuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IodGtpbnRlci5UZXh0KSh0b3ApCiAgICAgdGV4dC5wYWNrKCkKICAgICBkZWYgYmluZHNlcShzZXEsIG49WzBdKToKICAgICAgICAgZGVmIGhhbmRsZXIoZXZlbnQpOgpAQCAtNDM5LDcgKzQzOSw2IEBACiAgICAgYmluZHNlcSgiPEZvY3VzT3V0PiIpCiAgICAgYmluZHNlcSgiPEVudGVyPiIpCiAgICAgYmluZHNlcSgiPExlYXZlPiIpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9PdXRwdXRXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9vdXR3aW4ucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9vdXR3aW4ucHkKaW5kZXggZTYxNGY5Yi4uZjZkMjkxNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL291dHdpbi5weQpAQCAtMSw4ICsxLDExIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdwogaW1wb3J0IHJlCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCisKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKwogCiBjbGFzcyBPdXRwdXRXaW5kb3coRWRpdG9yV2luZG93KToKIApAQCAtMzYsNyArMzksNyBAQAogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMsIHRhZ3M9KCksIG1hcms9Imluc2VydCIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHMsIChieXRlcywgYnl0ZXMpKToKLSAgICAgICAgICAgIHMgPSBzLmRlY29kZShJT0JpbmRpbmcuZW5jb2RpbmcsICJyZXBsYWNlIikKKyAgICAgICAgICAgIHMgPSBzLmRlY29kZShpb21lbnUuZW5jb2RpbmcsICJyZXBsYWNlIikKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydChtYXJrLCBzLCB0YWdzKQogICAgICAgICBzZWxmLnRleHQuc2VlKG1hcmspCiAgICAgICAgIHNlbGYudGV4dC51cGRhdGUoKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRm9ybWF0UGFyYWdyYXBoLnB5IGIvTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CmluZGV4IDdhOWQxODUuLmYxMWJkYWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJhZ3JhcGgucHkKQEAgLTE0LDkgKzE0LDEwIEBACiAgIHNwYWNlcywgdGhleSB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNhbWUgYmxvY2suCiAqIEZhbmN5IGNvbW1lbnRzLCBsaWtlIHRoaXMgYnVsbGV0ZWQgbGlzdCwgYXJlbid0IGhhbmRsZWQgOi0pCiAiIiIKLQogaW1wb3J0IHJlCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKKwogCiBjbGFzcyBGb3JtYXRQYXJhZ3JhcGg6CiAKQEAgLTEyOSw3ICsxMzAsNyBAQAogICAgIHBhcnRpYWwgPSBpbmRlbnQxCiAgICAgd2hpbGUgaSA8IG4gYW5kIG5vdCBpc19hbGxfd2hpdGUobGluZXNbaV0pOgogICAgICAgICAjIFhYWCBTaG91bGQgdGFrZSBkb3VibGUgc3BhY2UgYWZ0ZXIgcGVyaW9kIChldGMuKSBpbnRvIGFjY291bnQKLSAgICAgICAgd29yZHMgPSByZS5zcGxpdCgiKFxzKykiLCBsaW5lc1tpXSkKKyAgICAgICAgd29yZHMgPSByZS5zcGxpdChyIihccyspIiwgbGluZXNbaV0pCiAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIGxlbih3b3JkcyksIDIpOgogICAgICAgICAgICAgd29yZCA9IHdvcmRzW2pdCiAgICAgICAgICAgICBpZiBub3Qgd29yZDoKQEAgLTE4OSw3ICsxOTAsOCBAQAogICAgIGlmIG0gaXMgTm9uZTogcmV0dXJuICIiCiAgICAgcmV0dXJuIG0uZ3JvdXAoMSkKIAorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfZm9ybWF0cGFyYWdyYXBoJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3BhcmFncmFwaCcsCiAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhcmVubWF0Y2gucHkKaW5kZXggNDdlMTBmMy4uY2NlYzcwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGFyZW5NYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CkBAIC00LDkgKzQsOCBAQAogcGFyZW4uICBQYXJlbiBoZXJlIGlzIHVzZWQgZ2VuZXJpY2FsbHk7IHRoZSBtYXRjaGluZyBhcHBsaWVzIHRvCiBwYXJlbnRoZXNlcywgc3F1YXJlIGJyYWNrZXRzLCBhbmQgY3VybHkgYnJhY2VzLgogIiIiCi0KLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogX29wZW5lcnMgPSB7JyknOicoJywnXSc6J1snLCd9Jzoneyd9CiBDSEVDS19ERUxBWSA9IDEwMCAjIG1pbGxpc2Vjb25kcwpAQCAtNjQsNiArNjMsNyBAQAogICAgICAgICAjIGFuZCBkZWFjdGl2YXRlX3Jlc3RvcmUgKHdoaWNoIGNhbGxzIGV2ZW50X2RlbGV0ZSkuCiAgICAgICAgIGVkaXR3aW4udGV4dC5iaW5kKHNlbGYuUkVTVE9SRV9WSVJUVUFMX0VWRU5UX05BTUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdG9yZV9ldmVudCkKKyAgICAgICAgc2VsZi5iZWxsID0gc2VsZi50ZXh0LmJlbGwgaWYgc2VsZi5CRUxMIGVsc2UgbGFtYmRhOiBOb25lCiAgICAgICAgIHNlbGYuY291bnRlciA9IDAKICAgICAgICAgc2VsZi5pc19yZXN0b3JlX2FjdGl2ZSA9IDAKICAgICAgICAgc2VsZi5zZXRfc3R5bGUoc2VsZi5TVFlMRSkKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IChIeXBlclBhcnNlcihzZWxmLmVkaXR3aW4sICJpbnNlcnQiKQogICAgICAgICAgICAgICAgICAgIC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoKSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGluZGljZXMgPSBocC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoX29wZW5lcnNbY2xvc2VyXSwgVHJ1ZSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEyNCwxMCArMTI0LDYgQEAKICAgICAgICAgaWYgdGltZXJfY291bnQgPT0gc2VsZi5jb3VudGVyOgogICAgICAgICAgICAgc2VsZi5yZXN0b3JlX2V2ZW50KCkKIAotICAgIGRlZiB3YXJuX21pc21hdGNoZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuQkVMTDoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkKLQogICAgICMgYW55IG9uZSBvZiB0aGUgY3JlYXRlX3RhZ19YWFggbWV0aG9kcyBjYW4gYmUgdXNlZCBkZXBlbmRpbmcgb24KICAgICAjIHRoZSBzdHlsZQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL3BhdGhicm93c2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQppbmRleCA5YWI3NjMyLi42YzE5NTA4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQpAQCAtMSwxMCArMSwxMCBAQAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVJdGVtCi1mcm9tIGlkbGVsaWIuQ2xhc3NCcm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLmJyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Citmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0KIAogCiBjbGFzcyBQYXRoQnJvd3NlcihDbGFzc0Jyb3dzZXIpOgpAQCAtMjQsNiArMjQsNyBAQAogICAgIGRlZiByb290bm9kZShzZWxmKToKICAgICAgICAgcmV0dXJuIFBhdGhCcm93c2VyVHJlZUl0ZW0oKQogCisKIGNsYXNzIFBhdGhCcm93c2VyVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIEdldFRleHQoc2VsZik6CkBAIC0zNiw2ICszNyw3IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCisKIGNsYXNzIERpckJyb3dzZXJUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyLCBwYWNrYWdlcz1bXSk6CkBAIC05NSw2ICs5Nyw3IEBACiAgICAgICAgIHNvcnRlZC5zb3J0KCkKICAgICAgICAgcmV0dXJuIHNvcnRlZAogCisKIGRlZiBfcGF0aF9icm93c2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCiAgICAgUGF0aEJyb3dzZXIoZmxpc3QsIF9odGVzdD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUGVyY29sYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGVyY29sYXRvci5weQppbmRleCBiOGJlMmFhLi5kMThkYWYwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QZXJjb2xhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKQEAgLTEsNSArMSw1IEBACi1mcm9tIGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5yZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCiAKIAogY2xhc3MgUGVyY29sYXRvcjoKQEAgLTU3LDcgKzU3LDYgQEAKIAogZGVmIF9wZXJjb2xhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGltcG9ydCByZQogCiAgICAgY2xhc3MgVHJhY2VyKERlbGVnYXRvcik6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKQEAgLTc0LDggKzczLDggQEAKIAogICAgIGJveCA9IHRrLlRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUGVyY29sYXRvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSB0ay5UZXh0KGJveCkKICAgICBwID0gUGVyY29sYXRvcih0ZXh0KQogICAgIHBpbiA9IHAuaW5zZXJ0ZmlsdGVyCkBAIC04OSwxMCArODgsMTAgQEAKICAgICAgICAgKHBpbiBpZiB2YXIyLmdldCgpIGVsc2UgcG91dCkodDIpCiAKICAgICB0ZXh0LnBhY2soKQotICAgIHZhcjEgPSB0ay5JbnRWYXIoKQorICAgIHZhcjEgPSB0ay5JbnRWYXIocGFyZW50KQogICAgIGNiMSA9IHRrLkNoZWNrYnV0dG9uKGJveCwgdGV4dD0iVHJhY2VyMSIsIGNvbW1hbmQ9dG9nZ2xlMSwgdmFyaWFibGU9dmFyMSkKICAgICBjYjEucGFjaygpCi0gICAgdmFyMiA9IHRrLkludFZhcigpCisgICAgdmFyMiA9IHRrLkludFZhcihwYXJlbnQpCiAgICAgY2IyID0gdGsuQ2hlY2tidXR0b24oYm94LCB0ZXh0PSJUcmFjZXIyIiwgY29tbWFuZD10b2dnbGUyLCB2YXJpYWJsZT12YXIyKQogICAgIGNiMi5wYWNrKCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlQYXJzZS5weSBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlQYXJzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlwYXJzZS5weQppbmRleCA5Y2NiYjI1Li42NzM5ZGZkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QeVBhcnNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKQEAgLTEsNiArMSw2IEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcKIAogIyBSZWFzb24gbGFzdCBzdG10IGlzIGNvbnRpbnVlZCAob3IgQ19OT05FIGlmIGl0J3Mgbm90KS4KIChDX05PTkUsIENfQkFDS1NMQVNILCBDX1NUUklOR19GSVJTVF9MSU5FLApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weSBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlTaGVsbC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlzaGVsbC5weQppbmRleCA1ZGVjNjhlLi5lMWVhZGUxIDEwMDc1NQotLS0gYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKQEAgLTEsMjEgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotaW1wb3J0IGdldG9wdAotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHRpbWUKLWltcG9ydCB0b2tlbml6ZQotaW1wb3J0IGlvCi0KLWltcG9ydCBsaW5lY2FjaGUKLWZyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgotZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24sIHN5c3RlbQotCiB0cnk6CiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCAqCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMywxNyArNyw0MiBAQAogICAgICAgICAgICJZb3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrLiAqKiIsIGZpbGU9c3lzLl9fc3RkZXJyX18pCiAgICAgc3lzLmV4aXQoMSkKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpZiBUa1ZlcnNpb24gPCA4LjU6CisgICAgcm9vdCA9IFRrKCkgICMgb3RoZXJ3aXNlIGNyZWF0ZSByb290IGluIG1haW4KKyAgICByb290LndpdGhkcmF3KCkKKyAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJZGxlIENhbm5vdCBTdGFydCIsCisgICAgICAgICAgICAiSWRsZSByZXF1aXJlcyB0Y2wvdGsgOC41Kywgbm90ICRzLiIgJSBUa1ZlcnNpb24sCisgICAgICAgICAgICBwYXJlbnQ9cm9vdCkKKyAgICBzeXMuZXhpdCgxKQogCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3csIGZpeHdvcmRicmVha3MKLWZyb20gaWRsZWxpYi5GaWxlTGlzdCBpbXBvcnQgRmlsZUxpc3QKLWZyb20gaWRsZWxpYi5Db2xvckRlbGVnYXRvciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuT3V0cHV0V2luZG93IGltcG9ydCBPdXRwdXRXaW5kb3cKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBjb2RlIGltcG9ydCBJbnRlcmFjdGl2ZUludGVycHJldGVyCitpbXBvcnQgZ2V0b3B0CitpbXBvcnQgaW8KK2ltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2Zyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uLCBzeXN0ZW0KK2ltcG9ydCByZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB3YXJuaW5ncworCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRlc3RpbmcgICMgYm9vbCB2YWx1ZQorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdywgZml4d29yZGJyZWFrcworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5vdXR3aW4gaW1wb3J0IE91dHB1dFdpbmRvdwogZnJvbSBpZGxlbGliIGltcG9ydCBycGMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgaWRsZV9mb3JtYXR3YXJuaW5nLCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKK2Zyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCiAKIEhPU1QgPSAnMTI3LjAuMC4xJyAjIHB5dGhvbiBleGVjdXRpb24gc2VydmVyIG9uIGxvY2FsaG9zdCBsb29wYmFjawogUE9SVCA9IDAgICMgc29tZWRheSBwYXNzIGluIGhvc3QsIHBvcnQgZm9yIHJlbW90ZSBkZWJ1ZyBjYXBhYmlsaXR5CkBAIC00MywyMCArNTIsNiBAQAogIyB0ZW1wb3JhcmlseSByZWRpcmVjdCB0aGUgc3RyZWFtIHRvIHRoZSBzaGVsbCB3aW5kb3cgdG8gZGlzcGxheSB3YXJuaW5ncyB3aGVuCiAjIGNoZWNraW5nIHVzZXIncyBjb2RlLgogd2FybmluZ19zdHJlYW0gPSBzeXMuX19zdGRlcnJfXyAgIyBOb25lLCBhdCBsZWFzdCBvbiBXaW5kb3dzLCBpZiBubyBjb25zb2xlLgotaW1wb3J0IHdhcm5pbmdzCi0KLWRlZiBpZGxlX2Zvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6Ci0gICAgIiIiRm9ybWF0IHdhcm5pbmdzIHRoZSBJRExFIHdheS4iIiIKLQotICAgIHMgPSAiXG5XYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6XG4iCi0gICAgcyArPSAnICBGaWxlIFwiJXNcIiwgbGluZSAlc1xuJyAlIChmaWxlbmFtZSwgbGluZW5vKQotICAgIGlmIGxpbmUgaXMgTm9uZToKLSAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCi0gICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgIGlmIGxpbmU6Ci0gICAgICAgIHMgKz0gIiAgICAlc1xuIiAlIGxpbmUKLSAgICBzICs9ICIlczogJXNcbiIgJSAoY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCi0gICAgcmV0dXJuIHMKIAogZGVmIGlkbGVfc2hvd3dhcm5pbmcoCiAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CkBAIC00MTAsNyArNDA1LDcgQEAKICAgICAgICAgIyBydW4gZnJvbSB0aGUgSURMRSBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICBkZWxfZXhpdGYgPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnR2VuZXJhbCcsICdkZWxldGUtZXhpdGZ1bmMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgdHlwZT0nYm9vbCcpCi0gICAgICAgIGlmIF9fbmFtZV9fID09ICdpZGxlbGliLlB5U2hlbGwnOgorICAgICAgICBpZiBfX25hbWVfXyA9PSAnaWRsZWxpYi5weXNoZWxsJzoKICAgICAgICAgICAgIGNvbW1hbmQgPSAiX19pbXBvcnRfXygnaWRsZWxpYi5ydW4nKS5ydW4ubWFpbiglcikiICUgKGRlbF9leGl0ZiwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb21tYW5kID0gIl9faW1wb3J0X18oJ3J1bicpLm1haW4oJXIpIiAlIChkZWxfZXhpdGYsKQpAQCAtNDY4LDcgKzQ2Myw3IEBACiAgICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgT25seSBjbG9zZSBzdWJwcm9jZXNzIGRlYnVnZ2VyLCBkb24ndCB1bnJlZ2lzdGVyIGd1aV9hZGFwIQotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBLaWxsIHN1YnByb2Nlc3MsIHNwYXduIGEgbmV3IG9uZSwgYWNjZXB0IGNvbm5lY3Rpb24uCkBAIC00OTcsNyArNDkyLDcgQEAKICAgICAgICAgIyByZXN0YXJ0IHN1YnByb2Nlc3MgZGVidWdnZXIKICAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgICAjIFJlc3RhcnRlZCBkZWJ1Z2dlciBjb25uZWN0cyB0byBjdXJyZW50IGluc3RhbmNlIG9mIGRlYnVnIEdVSQotICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIucmVzdGFydF9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQorICAgICAgICAgICAgZGVidWdnZXJfci5yZXN0YXJ0X3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCiAgICAgICAgICAgICAjIHJlbG9hZCByZW1vdGUgZGVidWdnZXIgYnJlYWtwb2ludHMgZm9yIGFsbCBQeVNoZWxsRWRpdFdpbmRvd3MKICAgICAgICAgICAgIGRlYnVnLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzZWxmLmNvbXBpbGUuY29tcGlsZXIuZmxhZ3MgPSBzZWxmLm9yaWdpbmFsX2NvbXBpbGVyX2ZsYWdzCkBAIC01NzgsNyArNTczLDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnRrY29uc29sZS5nZXR2YXIoIjw8dG9nZ2xlLWppdC1zdGFjay12aWV3ZXI+PiIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW90ZV9zdGFja192aWV3ZXIoKQogICAgICAgICAgICAgZWxpZiBob3cgPT0gIkVSUk9SIjoKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiUHlTaGVsbC5Nb2RpZmllZEludGVycHJldGVyOiBTdWJwcm9jZXNzIEVSUk9SOlxuIgorICAgICAgICAgICAgICAgIGVycm1zZyA9ICJweXNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXI6IFN1YnByb2Nlc3MgRVJST1I6XG4iCiAgICAgICAgICAgICAgICAgcHJpbnQoZXJybXNnLCB3aGF0LCBmaWxlPXN5cy5fX3N0ZGVycl9fKQogICAgICAgICAgICAgICAgIHByaW50KGVycm1zZywgd2hhdCwgZmlsZT1jb25zb2xlKQogICAgICAgICAgICAgIyB3ZSByZWNlaXZlZCBhIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIHNlcSBudW1iZXI6CkBAIC02MTMsMTMgKzYwOCwxMyBAQAogICAgICAgICByZXR1cm4KIAogICAgIGRlZiByZW1vdGVfc3RhY2tfdmlld2VyKHNlbGYpOgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z29ial9yCiAgICAgICAgIG9pZCA9IHNlbGYucnBjY2x0LnJlbW90ZXF1ZXVlKCJleGVjIiwgInN0YWNrdmlld2VyIiwgKCJmbGlzdCIsKSwge30pCiAgICAgICAgIGlmIG9pZCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50a2NvbnNvbGUucm9vdC5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpdGVtID0gUmVtb3RlT2JqZWN0QnJvd3Nlci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKLSAgICAgICAgZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQorICAgICAgICBpdGVtID0gZGVidWdvYmpfci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKKyAgICAgICAgZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQogICAgICAgICB0b3AgPSBUb3BsZXZlbChzZWxmLnRrY29uc29sZS5yb290KQogICAgICAgICB0aGVtZSA9IGlkbGVDb25mLkN1cnJlbnRUaGVtZSgpCiAgICAgICAgIGJhY2tncm91bmQgPSBpZGxlQ29uZi5HZXRIaWdobGlnaHQodGhlbWUsICdub3JtYWwnKVsnYmFja2dyb3VuZCddCkBAIC02NjIsOSArNjU3LDkgQEAKICAgICAgICAgIyBhdCB0aGUgbW9tZW50LCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGV4cGVjdHMgc3RyCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZSwgc3RyKQogICAgICAgICAjaWYgaXNpbnN0YW5jZShzb3VyY2UsIHN0cik6Ci0gICAgICAgICMgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKKyAgICAgICAgIyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudQogICAgICAgICAjICAgIHRyeToKLSAgICAgICAgIyAgICAgICAgc291cmNlID0gc291cmNlLmVuY29kZShJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgICMgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoaW9tZW51LmVuY29kaW5nKQogICAgICAgICAjICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICMgICAgICAgIHNlbGYudGtjb25zb2xlLnJlc2V0b3V0cHV0KCkKICAgICAgICAgIyAgICAgICAgc2VsZi53cml0ZSgiVW5zdXBwb3J0ZWQgY2hhcmFjdGVycyBpbiBpbnB1dFxuIikKQEAgLTg1MCw3ICs4NDUsNyBAQAogCiAKICAgICAjIE5ldyBjbGFzc2VzCi0gICAgZnJvbSBpZGxlbGliLklkbGVIaXN0b3J5IGltcG9ydCBIaXN0b3J5CisgICAgZnJvbSBpZGxlbGliLmhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lKToKICAgICAgICAgaWYgdXNlX3N1YnByb2Nlc3M6CkBAIC04ODgsMTEgKzg4MywxMSBAQAogICAgICAgICBzZWxmLnNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzZWxmLnNhdmVfc3RkZXJyID0gc3lzLnN0ZGVycgogICAgICAgICBzZWxmLnNhdmVfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKLSAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKyAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIGlvbWVudS5lbmNvZGluZykKICAgICAgICAgaWYgbm90IHVzZV9zdWJwcm9jZXNzOgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuc3Rkb3V0CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2VsZi5zdGRlcnIKQEAgLTkwMCw3ICs4OTUsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCiAgICAgICAgICAgICBpbXBvcnQgcHlkb2MgIyBpbXBvcnQgbXVzdCBiZSBkb25lIGhlcmUgdG8gY2FwdHVyZSBpL28gcmViaW5kaW5nLgotICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIGEgdGV4dFZpZXcgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYworICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIFRleHRWaWV3ZXIgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYwogICAgICAgICAgICAgcHlkb2MucGFnZXIgPSBweWRvYy5wbGFpbnBhZ2VyCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwpAQCAtOTU0LDcgKzk0OSw3IEBACiAgICAgICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihOb25lKQogICAgICAgICAgICAgZGIuY2xvc2UoKQogICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnAucnBjY2x0OgotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0KQogICAgICAgICAgICAgc2VsZi5yZXNldG91dHB1dCgpCiAgICAgICAgICAgICBzZWxmLmNvbnNvbGUud3JpdGUoIltERUJVRyBPRkZdXG4iKQogICAgICAgICAgICAgc3lzLnBzMSA9ICI+Pj4gIgpAQCAtOTYzLDEwICs5NTgsMTAgQEAKIAogICAgIGRlZiBvcGVuX2RlYnVnZ2VyKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmludGVycC5ycGNjbHQ6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gUmVtb3RlRGVidWdnZXIuc3RhcnRfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCwKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlcl9yLnN0YXJ0X3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gRGVidWdnZXIuRGVidWdnZXIoc2VsZikKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlci5EZWJ1Z2dlcihzZWxmKQogICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihkYmdfZ3VpKQogICAgICAgICBkYmdfZ3VpLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzeXMucHMxID0gIltERUJVRyBPTl1cbj4+PiAiCkBAIC0xMjQxLDcgKzEyMzYsNyBAQAogICAgICAgICAgICAgICAgICIoc3lzLmxhc3RfdHJhY2ViYWNrIGlzIG5vdCBkZWZpbmVkKSIsCiAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBmcm9tIGlkbGVsaWIuU3RhY2tWaWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgorICAgICAgICBmcm9tIGlkbGVsaWIuc3RhY2t2aWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgogICAgICAgICBTdGFja0Jyb3dzZXIoc2VsZi5yb290LCBzZWxmLmZsaXN0KQogCiAgICAgZGVmIHZpZXdfcmVzdGFydF9tYXJrKHNlbGYsIGV2ZW50PU5vbmUpOgpAQCAtMTMwOSw5MiArMTMwNCw2IEBACiAgICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJwogICAgICAgICByZXR1cm4gc3VwZXIoKS5ybWVudV9jaGVja19wYXN0ZSgpCiAKLWNsYXNzIFBzZXVkb0ZpbGUoaW8uVGV4dElPQmFzZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBzZWxmLnNoZWxsID0gc2hlbGwKLSAgICAgICAgc2VsZi50YWdzID0gdGFncwotICAgICAgICBzZWxmLl9lbmNvZGluZyA9IGVuY29kaW5nCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZW5jb2Rpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9lbmNvZGluZwotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnPCVzPicgJSBzZWxmLnRhZ3MKLQotICAgIGRlZiBpc2F0dHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLQotY2xhc3MgUHNldWRvT3V0cHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiB3cml0YWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiB3cml0ZShzZWxmLCBzKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHR5cGUocykgaXMgbm90IHN0cjoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIHN0ciwgbm90ICcgKyB0eXBlKHMpLl9fbmFtZV9fKQotICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzE5NDgxCi0gICAgICAgICAgICBzID0gc3RyLl9fc3RyX18ocykKLSAgICAgICAgcmV0dXJuIHNlbGYuc2hlbGwud3JpdGUocywgc2VsZi50YWdzKQotCi0KLWNsYXNzIFBzZXVkb0lucHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgIFBzZXVkb0ZpbGUuX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nKQotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0KLSAgICBkZWYgcmVhZGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBzaXplID0gLTEKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQotICAgICAgICByZXN1bHQgPSBzZWxmLl9saW5lX2J1ZmZlcgotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0gICAgICAgIGlmIHNpemUgPCAwOgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdoaWxlIGxlbihyZXN1bHQpIDwgc2l6ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gcmVzdWx0W3NpemU6XQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzpzaXplXQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgc2l6ZSA9IC0xCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKLSAgICAgICAgbGluZSA9IHNlbGYuX2xpbmVfYnVmZmVyIG9yIHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIHNpemUgPSBsZW4obGluZSkKLSAgICAgICAgZW9sID0gbGluZS5maW5kKCdcbicsIDAsIHNpemUpCi0gICAgICAgIGlmIGVvbCA+PSAwOgotICAgICAgICAgICAgc2l6ZSA9IGVvbCArIDEKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSBsaW5lW3NpemU6XQotICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5zaGVsbC5jbG9zZSgpCi0KIAogZGVmIGZpeF94MTFfcGFzdGUocm9vdCk6CiAgICAgIk1ha2UgcGFzdGUgcmVwbGFjZSBzZWxlY3Rpb24gb24geDExLiAgU2VlIGlzc3VlICM1MTI0LiIKQEAgLTE1NDAsNyArMTQ0OSwxMCBAQAogICAgIGVuYWJsZV9lZGl0ID0gZW5hYmxlX2VkaXQgb3IgZWRpdF9zdGFydAogICAgIGVuYWJsZV9zaGVsbCA9IGVuYWJsZV9zaGVsbCBvciBub3QgZW5hYmxlX2VkaXQKIAotICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgorICAgICMgU2V0dXAgcm9vdC4gIERvbid0IGJyZWFrIHVzZXIgY29kZSBydW4gaW4gSURMRSBwcm9jZXNzLgorICAgICMgRG9uJ3QgY2hhbmdlIGVudmlyb25tZW50IHdoZW4gdGVzdGluZy4KKyAgICBpZiB1c2Vfc3VicHJvY2VzcyBhbmQgbm90IHRlc3Rpbmc6CisgICAgICAgIE5vRGVmYXVsdFJvb3QoKQogICAgIHJvb3QgPSBUayhjbGFzc05hbWU9IklkbGUiKQogICAgIHJvb3Qud2l0aGRyYXcoKQogCkBAIC0xNTQ5LDI1ICsxNDYxLDE5IEBACiAgICAgaWYgc3lzdGVtKCkgPT0gJ1dpbmRvd3MnOgogICAgICAgICBpY29uZmlsZSA9IG9zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZS5pY28nKQogICAgICAgICByb290LndtX2ljb25iaXRtYXAoZGVmYXVsdD1pY29uZmlsZSkKLSAgICBlbGlmIFRrVmVyc2lvbiA+PSA4LjU6CisgICAgZWxzZToKICAgICAgICAgZXh0ID0gJy5wbmcnIGlmIFRrVmVyc2lvbiA+PSA4LjYgZWxzZSAnLmdpZicKICAgICAgICAgaWNvbmZpbGVzID0gW29zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZV8lZCVzJyAlIChzaXplLCBleHQpKQogICAgICAgICAgICAgICAgICAgICAgZm9yIHNpemUgaW4gKDE2LCAzMiwgNDgpXQotICAgICAgICBpY29ucyA9IFtQaG90b0ltYWdlKGZpbGU9aWNvbmZpbGUpIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCisgICAgICAgIGljb25zID0gW1Bob3RvSW1hZ2UobWFzdGVyPXJvb3QsIGZpbGU9aWNvbmZpbGUpCisgICAgICAgICAgICAgICAgIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCiAgICAgICAgIHJvb3Qud21faWNvbnBob3RvKFRydWUsICppY29ucykKIAorICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgogICAgIGZpeHdvcmRicmVha3Mocm9vdCkKICAgICBmaXhfeDExX3Bhc3RlKHJvb3QpCiAgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKLSAgICBtYWNvc3hTdXBwb3J0LnNldHVwQXBwKHJvb3QsIGZsaXN0KQotCi0gICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgotICAgICAgICAjIFRoZXJlIGFyZSBzb21lIHNjcmV3ZWQgdXAgPDI+IGNsYXNzIGJpbmRpbmdzIGZvciB0ZXh0Ci0gICAgICAgICMgd2lkZ2V0cyBkZWZpbmVkIGluIFRrIHdoaWNoIHdlIG5lZWQgdG8gZG8gYXdheSB3aXRoLgotICAgICAgICAjIFNlZSBpc3N1ZSAjMjQ4MDEuCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjItTW90aW9uPicpCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzw8UGFzdGVTZWxlY3Rpb24+PicpCisgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIGZsaXN0KQogCiAgICAgaWYgZW5hYmxlX2VkaXQ6CiAgICAgICAgIGlmIG5vdCAoY21kIG9yIHNjcmlwdCk6CkBAIC0xNTgyLDcgKzE0ODgsNyBAQAogICAgICAgICBzaGVsbCA9IGZsaXN0Lm9wZW5fc2hlbGwoKQogICAgICAgICBpZiBub3Qgc2hlbGw6CiAgICAgICAgICAgICByZXR1cm4gIyBjb3VsZG4ndCBvcGVuIHNoZWxsCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKSBhbmQgZmxpc3QuZGljdDoKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCkgYW5kIGZsaXN0LmRpY3Q6CiAgICAgICAgICAgICAjIE9uIE9TWDogd2hlbiB0aGUgdXNlciBoYXMgZG91YmxlLWNsaWNrZWQgb24gYSBmaWxlIHRoYXQgY2F1c2VzCiAgICAgICAgICAgICAjIElETEUgdG8gYmUgbGF1bmNoZWQgdGhlIHNoZWxsIHdpbmRvdyB3aWxsIG9wZW4ganVzdCBpbiBmcm9udCBvZgogICAgICAgICAgICAgIyB0aGUgZmlsZSBzaGUgd2FudHMgdG8gc2VlLiBMb3dlciB0aGUgaW50ZXJwcmV0ZXIgd2luZG93IHdoZW4KQEAgLTE2MTYsNyArMTUyMiw3IEBACiAgICAgICAgICMgY2hlY2sgZm9yIHByb2JsZW1hdGljIE9TIFggVGsgdmVyc2lvbnMgYW5kIHByaW50IGEgd2FybmluZwogICAgICAgICAjIG1lc3NhZ2UgaW4gdGhlIElETEUgc2hlbGwgd2luZG93OyB0aGlzIGlzIGxlc3MgaW50cnVzaXZlCiAgICAgICAgICMgdGhhbiBhbHdheXMgb3BlbmluZyBhIHNlcGFyYXRlIHdpbmRvdy4KLSAgICAgICAgdGt2ZXJzaW9ud2FybmluZyA9IG1hY29zeFN1cHBvcnQudGtWZXJzaW9uV2FybmluZyhyb290KQorICAgICAgICB0a3ZlcnNpb253YXJuaW5nID0gbWFjb3N4LnRrVmVyc2lvbldhcm5pbmcocm9vdCkKICAgICAgICAgaWYgdGt2ZXJzaW9ud2FybmluZzoKICAgICAgICAgICAgIHNoZWxsLmludGVycC5ydW5jb21tYW5kKCJwcmludCgnJXMnKSIgJSB0a3ZlcnNpb253YXJuaW5nKQogCkBAIC0xNjI2LDcgKzE1MzIsNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgc3lzLm1vZHVsZXNbJ1B5U2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCisgICAgc3lzLm1vZHVsZXNbJ3B5c2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCiAgICAgbWFpbigpCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxZjFlMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzA4IEBACisiIiIKK0RpYWxvZ3MgdGhhdCBxdWVyeSB1c2VycyBhbmQgdmVyaWZ5IHRoZSBhbnN3ZXIgYmVmb3JlIGFjY2VwdGluZy4KK1VzZSB0dGsgd2lkZ2V0cywgbGltaXRpbmcgdXNlIHRvIHRjbC90ayA4LjUrLCBhcyBpbiBJRExFIDMuNisuCisKK1F1ZXJ5IGlzIHRoZSBnZW5lcmljIGJhc2UgY2xhc3MgZm9yIGEgcG9wdXAgZGlhbG9nLgorVGhlIHVzZXIgbXVzdCBlaXRoZXIgZW50ZXIgYSB2YWxpZCBhbnN3ZXIgb3IgY2xvc2UgdGhlIGRpYWxvZy4KK0VudHJpZXMgYXJlIHZhbGlkYXRlZCB3aGVuIDxSZXR1cm4+IGlzIGVudGVyZWQgb3IgW09rXSBpcyBjbGlja2VkLgorRW50cmllcyBhcmUgaWdub3JlZCB3aGVuIFtDYW5jZWxdIG9yIFtYXSBhcmUgY2xpY2tlZC4KK1RoZSAncmV0dXJuIHZhbHVlJyBpcyAucmVzdWx0IHNldCB0byBlaXRoZXIgYSB2YWxpZCBhbnN3ZXIgb3IgTm9uZS4KKworU3ViY2xhc3MgU2VjdGlvbk5hbWUgZ2V0cyBhIG5hbWUgZm9yIGEgbmV3IGNvbmZpZyBmaWxlIHNlY3Rpb24uCitDb25maWdkaWFsb2cgdXNlcyBpdCBmb3IgbmV3IGhpZ2hsaWdodCB0aGVtZSBhbmQga2V5YmluZGluZyBzZXQgbmFtZXMuCitTdWJjbGFzcyBNb2R1bGVOYW1lIGdldHMgYSBuYW1lIGZvciBGaWxlID0+IE9wZW4gTW9kdWxlLgorU3ViY2xhc3MgSGVscFNvdXJjZSBnZXRzIG1lbnUgaXRlbSBhbmQgcGF0aCBmb3IgYWRkaXRpb25zIHRvIEhlbHAgbWVudS4KKyIiIgorIyBRdWVyeSBhbmQgU2VjdGlvbiBuYW1lIHJlc3VsdCBmcm9tIHNwbGl0dGluZyBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZworIyBvZiBjb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSAodGVtcG9yYXJpbHkgY29uZmlnX3NlYy5weSkgaW50bworIyBnZW5lcmljIGFuZCBzcGVjaWZpYyBwYXJ0cy4gIDMuNiBvbmx5LCBKdWx5IDIwMTYuCisjIE1vZHVsZU5hbWUuZW50cnlfb2sgY2FtZSBmcm9tIGVkaXRvci5FZGl0b3JXaW5kb3cubG9hZF9tb2R1bGUuCisjIEhlbHBTb3VyY2Ugd2FzIGV4dHJhY3RlZCBmcm9tIGNvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5ICh0ZW1wb3JhcmlseQorIyBjb25maWdfaGVscC5weSksIHdpdGggZGFyd2luIGNvZGUgbW92ZWQgZnJvbSBvayB0byBwYXRoX29rLgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgb3MKK2Zyb20gc3lzIGltcG9ydCBleGVjdXRhYmxlLCBwbGF0Zm9ybSAgIyBQbGF0Zm9ybSBpcyBzZXQgZm9yIG9uZSB0ZXN0LgorCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBTdHJpbmdWYXIsIFcsIEUsIE4sIFMKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IEZyYW1lLCBCdXR0b24sIEVudHJ5LCBMYWJlbAorZnJvbSB0a2ludGVyIGltcG9ydCBmaWxlZGlhbG9nCitmcm9tIHRraW50ZXIuZm9udCBpbXBvcnQgRm9udAorCitjbGFzcyBRdWVyeShUb3BsZXZlbCk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZ2V0dGluZyB2ZXJpZmllZCBhbnN3ZXIgZnJvbSBhIHVzZXIuCisKKyAgICBGb3IgdGhpcyBiYXNlIGNsYXNzLCBhY2NlcHQgYW55IG5vbi1ibGFuayBzdHJpbmcuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsICosIHRleHQwPScnLCB1c2VkX25hbWVzPXt9LAorICAgICAgICAgICAgICAgICBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgICIiIkNyZWF0ZSBwb3B1cCwgZG8gbm90IHJldHVybiB1bnRpbCB0ayB3aWRnZXQgZGVzdHJveWVkLgorCisgICAgICAgIEFkZGl0aW9uYWwgc3ViY2xhc3MgaW5pdCBtdXN0IGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgdGhpcworICAgICAgICB1bmxlc3MgIF91dGVzdD1UcnVlIGlzIHBhc3NlZCB0byBzdXBwcmVzcyB3YWl0X3dpbmRvdygpLgorCisgICAgICAgIHRpdGxlIC0gc3RyaW5nLCB0aXRsZSBvZiBwb3B1cCBkaWFsb2cKKyAgICAgICAgbWVzc2FnZSAtIHN0cmluZywgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkKKyAgICAgICAgdGV4dDAgLSBpbml0aWFsIHZhbHVlIGZvciBlbnRyeQorICAgICAgICB1c2VkX25hbWVzIC0gbmFtZXMgYWxyZWFkeSBpbiB1c2UKKyAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgX3V0ZXN0IC0gYm9vbCwgbGVhdmUgd2luZG93IGhpZGRlbiBhbmQgbm90IG1vZGFsCisgICAgICAgICIiIgorICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCisgICAgICAgIHNlbGYud2l0aGRyYXcoKSAgIyBIaWRlIHdoaWxlIGNvbmZpZ3VyaW5nLCBlc3BlY2lhbGx5IGdlb21ldHJ5LgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQorICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCisgICAgICAgIHNlbGYudGV4dDAgPSB0ZXh0MAorICAgICAgICBzZWxmLnVzZWRfbmFtZXMgPSB1c2VkX25hbWVzCisgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKKyAgICAgICAgc2VsZi5ncmFiX3NldCgpCisgICAgICAgIHdpbmRvd2luZ3N5c3RlbSA9IHNlbGYudGsuY2FsbCgndGsnLCAnd2luZG93aW5nc3lzdGVtJykKKyAgICAgICAgaWYgd2luZG93aW5nc3lzdGVtID09ICdhcXVhJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJzo6dGs6OnVuc3VwcG9ydGVkOjpNYWNXaW5kb3dTdHlsZScsICdzdHlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3csICdtb3ZlYWJsZU1vZGFsJywgJycpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5iaW5kKCI8Q29tbWFuZC0uPiIsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLmJpbmQoJzxLZXktRXNjYXBlPicsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYuYmluZCgnPEtleS1SZXR1cm4+Jywgc2VsZi5vaykKKyAgICAgICAgc2VsZi5iaW5kKCI8S1BfRW50ZXI+Iiwgc2VsZi5vaykKKyAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZhbHNlLCB3aWR0aD1GYWxzZSkKKyAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpICAjIE5lZWRlZCBoZXJlIGZvciB3aW5mb19yZXF3aWR0aCBiZWxvdy4KKyAgICAgICAgc2VsZi5nZW9tZXRyeSggICMgQ2VudGVyIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KS4KKyAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKworICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKworICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKQorICAgICAgICAgICAgICAgICkgKQorICAgICAgICBpZiBub3QgX3V0ZXN0OgorICAgICAgICAgICAgc2VsZi5kZWljb25pZnkoKSAgIyBVbmhpZGUgbm93IHRoYXQgZ2VvbWV0cnkgc2V0LgorICAgICAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCisKKyAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6ICAjIENhbGwgZnJvbSBvdmVycmlkZSwgaWYgYW55LgorICAgICAgICAjIEJpbmQgdG8gc2VsZiB3aWRnZXRzIG5lZWRlZCBmb3IgZW50cnlfb2sgb3IgdW5pdHRlc3QuCisgICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZSA9IEZyYW1lKHNlbGYsIHBhZGRpbmc9MTApCisgICAgICAgIGZyYW1lLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J25ld3MnKQorICAgICAgICBmcmFtZS5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCB3ZWlnaHQ9MSkKKworICAgICAgICBlbnRyeWxhYmVsID0gTGFiZWwoZnJhbWUsIGFuY2hvcj0ndycsIGp1c3RpZnk9J2xlZnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1zZWxmLm1lc3NhZ2UpCisgICAgICAgIHNlbGYuZW50cnl2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi50ZXh0MCkKKyAgICAgICAgc2VsZi5lbnRyeSA9IEVudHJ5KGZyYW1lLCB3aWR0aD0zMCwgdGV4dHZhcmlhYmxlPXNlbGYuZW50cnl2YXIpCisgICAgICAgIHNlbGYuZW50cnkuZm9jdXNfc2V0KCkKKyAgICAgICAgc2VsZi5lcnJvcl9mb250ID0gRm9udChuYW1lPSdUa0NhcHRpb25Gb250JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHM9VHJ1ZSwgcm9vdD1zZWxmLnBhcmVudCkKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ9c2VsZi5lcnJvcl9mb250KQorICAgICAgICBzZWxmLmJ1dHRvbl9vayA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nT0snLCBkZWZhdWx0PSdhY3RpdmUnLCBjb21tYW5kPXNlbGYub2spCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbCA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nQ2FuY2VsJywgY29tbWFuZD1zZWxmLmNhbmNlbCkKKworICAgICAgICBlbnRyeWxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgc3RpY2t5PVcpCisgICAgICAgIHNlbGYuZW50cnkuZ3JpZChjb2x1bW49MCwgcm93PTEsIGNvbHVtbnNwYW49MywgcGFkeD01LCBzdGlja3k9VytFLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFkeT1bMTAsMF0pCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3IuZ3JpZChjb2x1bW49MCwgcm93PTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcrRSkKKyAgICAgICAgc2VsZi5idXR0b25fb2suZ3JpZChjb2x1bW49MSwgcm93PTk5LCBwYWR4PTUpCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbC5ncmlkKGNvbHVtbj0yLCByb3c9OTksIHBhZHg9NSkKKworICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAjc2VsZi5iZWxsKGRpc3BsYXlvZj1zZWxmKQorICAgICAgICAod2lkZ2V0IG9yIHNlbGYuZW50cnlfZXJyb3IpWyd0ZXh0J10gPSAnRVJST1I6ICcgKyBtZXNzYWdlCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6ICAjIEV4YW1wbGU6IHVzdWFsbHkgcmVwbGFjZS4KKyAgICAgICAgIlJldHVybiBub24tYmxhbmsgZW50cnkgb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGVudHJ5ID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBlbnRyeToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdibGFuayBsaW5lLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZW50cnkKKworICAgIGRlZiBvayhzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICcnJ0lmIGVudHJ5IGlzIHZhbGlkLCBiaW5kIGl0IHRvICdyZXN1bHQnIGFuZCBkZXN0cm95IHRrIHdpZGdldC4KKworICAgICAgICBPdGhlcndpc2UgbGVhdmUgZGlhbG9nIG9wZW4gZm9yIHVzZXIgdG8gY29ycmVjdCBlbnRyeSBvciBjYW5jZWwuCisgICAgICAgICcnJworICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnlfb2soKQorICAgICAgICBpZiBlbnRyeSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gZW50cnkKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFtPa10gbW92ZXMgZm9jdXMuICAoPFJldHVybj4gZG9lcyBub3QuKSAgTW92ZSBpdCBiYWNrLgorICAgICAgICAgICAgc2VsZi5lbnRyeS5mb2N1c19zZXQoKQorCisgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICJTZXQgZGlhbG9nIHJlc3VsdCB0byBOb25lIGFuZCBkZXN0cm95IHRrIHdpZGdldC4iCisgICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRlc3Ryb3koKQorCisKK2NsYXNzIFNlY3Rpb25OYW1lKFF1ZXJ5KToKKyAgICAiR2V0IGEgbmFtZSBmb3IgYSBjb25maWcgZmlsZSBzZWN0aW9uIG5hbWUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuR2V0TmV3S2V5c05hbWUsIC5HZXROZXdUaGVtZU5hbWUgKDgzNykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcz11c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gc2Vuc2libGUgQ29uZmlnUGFyc2VyIHNlY3Rpb24gbmFtZSBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBuYW1lIHNwZWNpZmllZC4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBsZW4obmFtZSk+MzA6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbmFtZSBpcyBsb25nZXIgdGhhbiAzMCBjaGFyYWN0ZXJzLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi51c2VkX25hbWVzOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25hbWUgaXMgYWxyZWFkeSBpbiB1c2UuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBuYW1lCisKKworY2xhc3MgTW9kdWxlTmFtZShRdWVyeSk6CisgICAgIkdldCBhIG1vZHVsZSBuYW1lIGZvciBPcGVuIE1vZHVsZSBtZW51IGVudHJ5LiIKKyAgICAjIFVzZWQgaW4gb3Blbl9tb2R1bGUgKGVkaXRvci5FZGl0b3JXaW5kb3cgdW50aWwgbW92ZSB0byBpb2JpbmRpbmcpLgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9dGV4dDAsCisgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gZW50ZXJlZCBtb2R1bGUgbmFtZSBhcyBmaWxlIHBhdGggb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gbmFtZSBzcGVjaWZpZWQuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEltcG9ydEVycm9yKSBhcyBtc2c6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcihzdHIobXNnKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJtb2R1bGUgbm90IGZvdW5kIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMubG9hZGVyLCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcik6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibm90IGEgc291cmNlLWJhc2VkIG1vZHVsZSIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlX3BhdGggPSBzcGVjLmxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoImxvYWRlciBkb2VzIG5vdCBzdXBwb3J0IGdldF9maWxlbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZmlsZV9wYXRoCisKKworY2xhc3MgSGVscFNvdXJjZShRdWVyeSk6CisgICAgIkdldCBtZW51IG5hbWUgYW5kIGhlbHAgc291cmNlIGZvciBIZWxwIG1lbnUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuSGVscExpc3RJdGVtQWRkL0VkaXQsICg5NDEvOSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCAqLCBtZW51aXRlbT0nJywgZmlsZXBhdGg9JycsCisgICAgICAgICAgICAgICAgIHVzZWRfbmFtZXM9e30sIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgIiIiR2V0IG1lbnUgZW50cnkgYW5kIHVybC9sb2NhbCBmaWxlIGZvciBBZGRpdGlvbmFsIEhlbHAuCisKKyAgICAgICAgVXNlciBlbnRlcnMgYSBuYW1lIGZvciB0aGUgSGVscCByZXNvdXJjZSBhbmQgYSB3ZWIgdXJsIG9yIGZpbGUKKyAgICAgICAgbmFtZS4gVGhlIHVzZXIgY2FuIGJyb3dzZSBmb3IgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmZpbGVwYXRoID0gZmlsZXBhdGgKKyAgICAgICAgbWVzc2FnZSA9ICdOYW1lIGZvciBpdGVtIG9uIEhlbHAgbWVudTonCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oCisgICAgICAgICAgICAgICAgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9bWVudWl0ZW0sCisgICAgICAgICAgICAgICAgdXNlZF9uYW1lcz11c2VkX25hbWVzLCBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgZnJhbWUgPSBzZWxmLmZyYW1lCisgICAgICAgIHBhdGhsYWJlbCA9IExhYmVsKGZyYW1lLCBhbmNob3I9J3cnLCBqdXN0aWZ5PSdsZWZ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nSGVscCBGaWxlIFBhdGg6IEVudGVyIFVSTCBvciBicm93c2UgZm9yIGZpbGUnKQorICAgICAgICBzZWxmLnBhdGh2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi5maWxlcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gRW50cnkoZnJhbWUsIHRleHR2YXJpYWJsZT1zZWxmLnBhdGh2YXIsIHdpZHRoPTQwKQorICAgICAgICBicm93c2UgPSBCdXR0b24oZnJhbWUsIHRleHQ9J0Jyb3dzZScsIHdpZHRoPTgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuYnJvd3NlX2ZpbGUpCisgICAgICAgIHNlbGYucGF0aF9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1zZWxmLmVycm9yX2ZvbnQpCisKKyAgICAgICAgcGF0aGxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0xMCwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHBhZHk9WzEwLDBdLAorICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VykKKyAgICAgICAgc2VsZi5wYXRoLmdyaWQoY29sdW1uPTAsIHJvdz0xMSwgY29sdW1uc3Bhbj0yLCBwYWR4PTUsIHN0aWNreT1XK0UsCisgICAgICAgICAgICAgICAgICAgICAgIHBhZHk9WzEwLDBdKQorICAgICAgICBicm93c2UuZ3JpZChjb2x1bW49Miwgcm93PTExLCBwYWR4PTUsIHN0aWNreT1XK1MpCisgICAgICAgIHNlbGYucGF0aF9lcnJvci5ncmlkKGNvbHVtbj0wLCByb3c9MTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VytFKQorCisgICAgZGVmIGFza2ZpbGVuYW1lKHNlbGYsIGZpbGV0eXBlcywgaW5pdGRpciwgaW5pdGZpbGUpOiAgIyBodGVzdCAjCisgICAgICAgICMgRXh0cmFjdGVkIGZyb20gYnJvd3NlX2ZpbGUgc28gY2FuIG1vY2sgZm9yIHVuaXR0ZXN0cy4KKyAgICAgICAgIyBDYW5ub3QgdW5pdHRlc3QgYXMgY2Fubm90IHNpbXVsYXRlIGJ1dHRvbiBjbGlja3MuCisgICAgICAgICMgVGVzdCBieSBydW5uaW5nIGh0ZXN0LCBzdWNoIGFzIGJ5IHJ1bm5pbmcgdGhpcyBmaWxlLgorICAgICAgICByZXR1cm4gZmlsZWRpYWxvZy5PcGVuKHBhcmVudD1zZWxmLCBmaWxldHlwZXM9ZmlsZXR5cGVzKVwKKyAgICAgICAgICAgICAgIC5zaG93KGluaXRpYWxkaXI9aW5pdGRpciwgaW5pdGlhbGZpbGU9aW5pdGZpbGUpCisKKyAgICBkZWYgYnJvd3NlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGV0eXBlcyA9IFsKKyAgICAgICAgICAgICgiSFRNTCBGaWxlcyIsICIqLmh0bSAqLmh0bWwiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJQREYgRmlsZXMiLCAiKi5wZGYiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJXaW5kb3dzIEhlbHAgRmlsZXMiLCAiKi5jaG0iKSwKKyAgICAgICAgICAgICgiVGV4dCBGaWxlcyIsICIqLnR4dCIsICJURVhUIiksCisgICAgICAgICAgICAoIkFsbCBGaWxlcyIsICIqIildCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGh2YXIuZ2V0KCkKKyAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJhc2UgPSBOb25lCisgICAgICAgICAgICBpZiBwbGF0Zm9ybVs6M10gPT0gJ3dpbic6CisgICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKSwgJ0RvYycpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgZmlsZSA9IHNlbGYuYXNrZmlsZW5hbWUoZmlsZXR5cGVzLCBkaXIsIGJhc2UpCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICBzZWxmLnBhdGh2YXIuc2V0KGZpbGUpCisKKyAgICBpdGVtX29rID0gU2VjdGlvbk5hbWUuZW50cnlfb2sgICMgbG9jYWxpemUgZm9yIHRlc3Qgb3ZlcnJpZGUKKworICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBtZW51IGZpbGUgcGF0aCIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBwYXRoOiAjbm8gcGF0aCBzcGVjaWZpZWQKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBoZWxwIGZpbGUgcGF0aCBzcGVjaWZpZWQuJywgc2VsZi5wYXRoX2Vycm9yKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBub3QgcGF0aC5zdGFydHN3aXRoKCgnd3d3LicsICdodHRwJykpOgorICAgICAgICAgICAgaWYgcGF0aFs6NV0gPT0gJ2ZpbGU6JzoKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs1Ol0KKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignaGVscCBmaWxlIHBhdGggZG9lcyBub3QgZXhpc3QuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgIyBmb3IgTWFjIFNhZmFyaQorICAgICAgICAgICAgICAgIHBhdGggPSAgImZpbGU6Ly8iICsgcGF0aAorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIGFwcGFyZW50bHkgdmFsaWQgKG5hbWUsIHBhdGgpIG9yIE5vbmUiCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuaXRlbV9vaygpCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGhfb2soKQorICAgICAgICByZXR1cm4gTm9uZSBpZiBuYW1lIGlzIE5vbmUgb3IgcGF0aCBpcyBOb25lIGVsc2UgKG5hbWUsIHBhdGgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3F1ZXJ5JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oUXVlcnksIEhlbHBTb3VyY2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5IGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CmluZGV4IGI2NmJlOWUuLmVjNjgxZGUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpAQCAtMTA0LDcgKzEwNCw3IEBACiAKICAgICAgICAgTm90ZSB0aGF0IGlmIGEgcmVnaXN0ZXJlZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSBvcGVyYXRpb24gaXMgbm90CiAgICAgICAgIHBhc3NlZCB0aHJvdWdoIHRvIFRrLiAgQXBwbHkgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IHNlbGYucmVnaXN0ZXIoKQotICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIENvbG9yRGVsZWdhdG9yLnB5LgorICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIGNvbG9yaXplci5weS4KIAogICAgICAgICAnJycKICAgICAgICAgbSA9IHNlbGYuX29wZXJhdGlvbnMuZ2V0KG9wZXJhdGlvbikKQEAgLTE1MSwxNCArMTUxLDEzIEBACiAKIAogZGVmIF93aWRnZXRfcmVkaXJlY3RvcihwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotICAgIGltcG9ydCByZQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKIAotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBXaWRnZXRSZWRpcmVjdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgdGV4dCA9IFRleHQocm9vdCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IFdpZGdldFJlZGlyZWN0b3IiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IFRleHQodG9wKQogICAgIHRleHQucGFjaygpCiAgICAgdGV4dC5mb2N1c19zZXQoKQogICAgIHJlZGlyID0gV2lkZ2V0UmVkaXJlY3Rvcih0ZXh0KQpAQCAtMTY2LDExICsxNjUsMTEgQEAKICAgICAgICAgcHJpbnQoImluc2VydCIsIGFyZ3MpCiAgICAgICAgIG9yaWdpbmFsX2luc2VydCgqYXJncykKICAgICBvcmlnaW5hbF9pbnNlcnQgPSByZWRpci5yZWdpc3RlcigiaW5zZXJ0IiwgbXlfaW5zZXJ0KQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfd2lkZ2V0cmVkaXInLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVkaXJlY3RvcicsCiAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfd2lkZ2V0X3JlZGlyZWN0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZXBsYWNlLnB5CmluZGV4IGYyZWEyMmUuLmFiZDllNTkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpAQCAtMywxOCArMywxOCBAQAogRGVmaW5lcyB2YXJpb3VzIHJlcGxhY2UgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSByZXBsYWNlLCByZXBsYWNlIGFsbCwKIHJlcGxhY2UrZmluZC4KICIiIgotZnJvbSB0a2ludGVyIGltcG9ydCAqCi0KLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lCi1mcm9tIGlkbGVsaWIuU2VhcmNoRGlhbG9nQmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQogaW1wb3J0IHJlCiAKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBUY2xFcnJvcgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKIAogZGVmIHJlcGxhY2UodGV4dCk6CiAgICAgIiIiUmV0dXJucyBhIHNpbmdsZXRvbiBSZXBsYWNlRGlhbG9nIGluc3RhbmNlLlRoZSBzaW5nbGUgZGlhbG9nCiAgICAgIHNhdmVzIHVzZXIgZW50cmllcyBhbmQgcHJlZmVyZW5jZXMgYWNyb3NzIGluc3RhbmNlcy4iIiIKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfcmVwbGFjZWRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX3JlcGxhY2VkaWFsb2cgPSBSZXBsYWNlRGlhbG9nKHJvb3QsIGVuZ2luZSkKICAgICBkaWFsb2cgPSBlbmdpbmUuX3JlcGxhY2VkaWFsb2cKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICByZXMgPSBzZWxmLmVuZ2luZS5zZWFyY2hfdGV4dCh0ZXh0LCBwcm9nKQogICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCJzZWwiLCAiMS4wIiwgImVuZCIpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZSgiaGl0IiwgIjEuMCIsICJlbmQiKQpAQCAtMTQyLDcgKzE0Miw3IEBACiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgcmVzID0gc2VsZi5lbmdpbmUuc2VhcmNoX3RleHQodGV4dCwgTm9uZSwgb2spCiAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBsaW5lLCBtID0gcmVzCiAgICAgICAgIGksIGogPSBtLnNwYW4oKQpAQCAtMTY0LDcgKzE2NCw3IEBACiAgICAgICAgICAgICBwb3MgPSBOb25lCiAgICAgICAgIGlmIG5vdCBwb3M6CiAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBwb3MgPSB0ZXh0LmluZGV4KCJpbnNlcnQiKQotICAgICAgICBsaW5lLCBjb2wgPSBTZWFyY2hFbmdpbmUuZ2V0X2xpbmVfY29sKHBvcykKKyAgICAgICAgbGluZSwgY29sID0gc2VhcmNoZW5naW5lLmdldF9saW5lX2NvbChwb3MpCiAgICAgICAgIGNoYXJzID0gdGV4dC5nZXQoIiVkLjAiICUgbGluZSwgIiVkLjAiICUgKGxpbmUrMSkpCiAgICAgICAgIG0gPSBwcm9nLm1hdGNoKGNoYXJzLCBjb2wpCiAgICAgICAgIGlmIG5vdCBwcm9nOgpAQCAtMjA0LDExICsyMDQsMTMgQEAKIAogCiBkZWYgX3JlcGxhY2VfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAiIiJodGVzdCB3cmFwcGVyIGZ1bmN0aW9uIiIiCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dCwgRU5ELCBTRUwKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUmVwbGFjZURpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAogICAgICMgbW9jayB1bmRvIGRlbGVnYXRvciBtZXRob2RzCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKToKQEAgLTIzNCw3ICsyMzYsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVwbGFjZWRpYWxvZycsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZXBsYWNlJywKICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKIAogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnBjLnB5IGIvTGliL2lkbGVsaWIvcnBjLnB5CmluZGV4IDQ4MTA1ZjIuLjhmNTdlZGI4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ycGMucHkKKysrIGIvTGliL2lkbGVsaWIvcnBjLnB5CkBAIC0yNiwyMyArMjYsMjEgQEAKIGFjY29tcGxpc2hlZCBpbiBJZGxlLgogCiAiIiIKLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBjb3B5cmVnCiBpbXBvcnQgaW8KLWltcG9ydCBzb2NrZXQKK2ltcG9ydCBtYXJzaGFsCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBxdWV1ZQogaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNvY2tldAogaW1wb3J0IHNvY2tldHNlcnZlcgogaW1wb3J0IHN0cnVjdAotaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHF1ZXVlCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgY29weXJlZwogaW1wb3J0IHR5cGVzCi1pbXBvcnQgbWFyc2hhbAotaW1wb3J0IGJ1aWx0aW5zCi0KIAogZGVmIHVucGlja2xlX2NvZGUobXMpOgogICAgIGNvID0gbWFyc2hhbC5sb2FkcyhtcykKQEAgLTYwLDEwICs1OCwxMiBAQAogICAgIHAuZHVtcChvYmopCiAgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQogCisKIGNsYXNzIENvZGVQaWNrbGVyKHBpY2tsZS5QaWNrbGVyKToKICAgICBkaXNwYXRjaF90YWJsZSA9IHt0eXBlcy5Db2RlVHlwZTogcGlja2xlX2NvZGV9CiAgICAgZGlzcGF0Y2hfdGFibGUudXBkYXRlKGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUpCiAKKwogQlVGU0laRSA9IDgqMTAyNAogTE9DQUxIT1NUID0gJzEyNy4wLjAuMScKIApAQCAtNDg3LDE2ICs0ODcsMTkgQEAKICAgICAjIFRva2VuIG1peC1pbiBjbGFzcwogICAgIHBhc3MKIAorCiBkZWYgcmVtb3RlcmVmKG9iaik6CiAgICAgb2lkID0gaWQob2JqKQogICAgIG9iamVjdHRhYmxlW29pZF0gPSBvYmoKICAgICByZXR1cm4gUmVtb3RlUHJveHkob2lkKQogCisKIGNsYXNzIFJlbW90ZVByb3h5KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb2lkKToKICAgICAgICAgc2VsZi5vaWQgPSBvaWQKIAorCiBjbGFzcyBSUENIYW5kbGVyKHNvY2tldHNlcnZlci5CYXNlUmVxdWVzdEhhbmRsZXIsIFNvY2tldElPKToKIAogICAgIGRlYnVnZ2luZyA9IEZhbHNlCkBAIC01MTQsNiArNTE3LDcgQEAKICAgICBkZWYgZ2V0X3JlbW90ZV9wcm94eShzZWxmLCBvaWQpOgogICAgICAgICByZXR1cm4gUlBDUHJveHkoc2VsZiwgb2lkKQogCisKIGNsYXNzIFJQQ0NsaWVudChTb2NrZXRJTyk6CiAKICAgICBkZWJ1Z2dpbmcgPSBGYWxzZQpAQCAtNTM5LDYgKzU0Myw3IEBACiAgICAgZGVmIGdldF9yZW1vdGVfcHJveHkoc2VsZiwgb2lkKToKICAgICAgICAgcmV0dXJuIFJQQ1Byb3h5KHNlbGYsIG9pZCkKIAorCiBjbGFzcyBSUENQcm94eShvYmplY3QpOgogCiAgICAgX19tZXRob2RzID0gTm9uZQpAQCAtNTg3LDYgKzU5Miw3IEBACiAgICAgICAgIGlmIG5vdCBjYWxsYWJsZShhdHRyKToKICAgICAgICAgICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSAxCiAKKwogY2xhc3MgTWV0aG9kUHJveHkob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NraW8sIG9pZCwgbmFtZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Sc3RyaXBFeHRlbnNpb24ucHkgYi9MaWIvaWRsZWxpYi9yc3RyaXAucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JzdHJpcEV4dGVuc2lvbi5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnN0cmlwLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ydW4ucHkgYi9MaWIvaWRsZWxpYi9ydW4ucHkKaW5kZXggMjhjZTQyMC4uYWZhOTc0NCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnVuLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bi5weQpAQCAtMSwzMyArMSw0NSBAQAotaW1wb3J0IHN5cworaW1wb3J0IGlvCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgcXVldWUKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBxdWV1ZQotaW1wb3J0IHRraW50ZXIKK2ltcG9ydCB3YXJuaW5ncwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBzCi1mcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZQoraW1wb3J0IHRraW50ZXIgICMgVGNsLCBkZWxldGlvbnMsIG1lc3NhZ2Vib3ggaWYgc3RhcnR1cCBmYWlscwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZURlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgU3RhY2tWaWV3ZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgcnBjCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCi0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgYXV0b2NvbXBsZXRlICAjIEF1dG9Db21wbGV0ZSwgZmV0Y2hfZW5jb2RpbmdzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNhbGx0aXBzICAjIENhbGxUaXBzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IgICMgc3RhcnRfZGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdvYmpfciAgIyByZW1vdGVfb2JqZWN0X3RyZWVfaXRlbQorZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUgICMgZW5jb2RpbmcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcnBjICAjIG11bHRpcGxlIG9iamVjdHMKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc3RhY2t2aWV3ZXIgICMgU3RhY2tUcmVlSXRlbQogaW1wb3J0IF9fbWFpbl9fCiAKIGZvciBtb2QgaW4gKCdzaW1wbGVkaWFsb2cnLCAnbWVzc2FnZWJveCcsICdmb250JywKICAgICAgICAgICAgICdkaWFsb2cnLCAnZmlsZWRpYWxvZycsICdjb21tb25kaWFsb2cnLAotICAgICAgICAgICAgJ2NvbG9yY2hvb3NlcicpOgorICAgICAgICAgICAgJ3R0aycpOgogICAgIGRlbGF0dHIodGtpbnRlciwgbW9kKQogICAgIGRlbCBzeXMubW9kdWxlc1sndGtpbnRlci4nICsgbW9kXQogCiBMT0NBTEhPU1QgPSAnMTI3LjAuMC4xJwogCi1pbXBvcnQgd2FybmluZ3MKKworZGVmIGlkbGVfZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKKyAgICAiIiJGb3JtYXQgd2FybmluZ3MgdGhlIElETEUgd2F5LiIiIgorCisgICAgcyA9ICJcbldhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKTpcbiIKKyAgICBzICs9ICcgIEZpbGUgXCIlc1wiLCBsaW5lICVzXG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKKyAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgaWYgbGluZToKKyAgICAgICAgcyArPSAiICAgICVzXG4iICUgbGluZQorICAgIHMgKz0gIiVzOiAlc1xuIiAlIChjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKKyAgICByZXR1cm4gcwogCiBkZWYgaWRsZV9zaG93d2FybmluZ19zdWJwcm9jKAogICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgpAQCAtMzgsNyArNTAsNyBAQAogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKICAgICB0cnk6Ci0gICAgICAgIGZpbGUud3JpdGUoUHlTaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcoCisgICAgICAgIGZpbGUud3JpdGUoaWRsZV9mb3JtYXR3YXJuaW5nKAogICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKSkKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGFzcyAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgpAQCAtODgsNyArMTAwLDcgQEAKICAgICBNeUhhbmRsZXIgb2JqZWN0LiAgVGhhdCByZWZlcmVuY2UgaXMgc2F2ZWQgYXMgYXR0cmlidXRlIHJwY2hhbmRsZXIgb2YgdGhlCiAgICAgRXhlY3V0aXZlIGluc3RhbmNlLiAgVGhlIEV4ZWN1dGl2ZSBtZXRob2RzIGhhdmUgYWNjZXNzIHRvIHRoZSByZWZlcmVuY2UgYW5kCiAgICAgY2FuIHBhc3MgaXQgb24gdG8gZW50aXRpZXMgdGhhdCB0aGV5IGNvbW1hbmQKLSAgICAoZS5nLiBSZW1vdGVEZWJ1Z2dlci5EZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcigpKS4gIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGNhbgorICAgIChlLmcuIGRlYnVnZ2VyX3IuRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoKSkuICBUaGUgbGF0dGVyLCBpbiB0dXJuLCBjYW4KICAgICBjYWxsIE15SGFuZGxlcihTb2NrZXRJTykgcmVnaXN0ZXIvdW5yZWdpc3RlciBtZXRob2RzIHZpYSB0aGUgcmVmZXJlbmNlIHRvCiAgICAgcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgdGhlbXNlbHZlcy4KIApAQCAtMjEwLDcgKzIyMiw3IEBACiAgICAgICAgICAgICB0YmUgPSB0cmFjZWJhY2suZXh0cmFjdF90Yih0YikKICAgICAgICAgICAgIHByaW50KCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JywgZmlsZT1lZmlsZSkKICAgICAgICAgICAgIGV4Y2x1ZGUgPSAoInJ1bi5weSIsICJycGMucHkiLCAidGhyZWFkaW5nLnB5IiwgInF1ZXVlLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90ZURlYnVnZ2VyLnB5IiwgImJkYi5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1Z2dlcl9yLnB5IiwgImJkYi5weSIpCiAgICAgICAgICAgICBjbGVhbnVwX3RyYWNlYmFjayh0YmUsIGV4Y2x1ZGUpCiAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfbGlzdCh0YmUsIGZpbGU9ZWZpbGUpCiAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXAsIGV4YykKQEAgLTI2Nyw2ICsyNzksNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAgICAgc3lzLmV4aXQoMCkKIAorCiBjbGFzcyBNeVJQQ1NlcnZlcihycGMuUlBDU2VydmVyKToKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgpAQCAtMjk3LDYgKzMxMCw5NiBAQAogICAgICAgICAgICAgcXVpdHRpbmcgPSBUcnVlCiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCisKKyMgUHNldWRvZmlsZXMgZm9yIHNoZWxsLXJlbW90ZSBjb21tdW5pY2F0aW9uIChhbHNvIHVzZWQgaW4gcHlzaGVsbCkKKworY2xhc3MgUHNldWRvRmlsZShpby5UZXh0SU9CYXNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgIHNlbGYuc2hlbGwgPSBzaGVsbAorICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCisgICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmNvZGluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2VuY29kaW5nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICc8JXM+JyAlIHNlbGYudGFncworCisgICAgZGVmIGlzYXR0eShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworCitjbGFzcyBQc2V1ZG9PdXRwdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgdHlwZShzKSBpcyBub3Qgc3RyOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgc3RyLCBub3QgJyArIHR5cGUocykuX19uYW1lX18pCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTk0ODEKKyAgICAgICAgICAgIHMgPSBzdHIuX19zdHJfXyhzKQorICAgICAgICByZXR1cm4gc2VsZi5zaGVsbC53cml0ZShzLCBzZWxmLnRhZ3MpCisKKworY2xhc3MgUHNldWRvSW5wdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgUHNldWRvRmlsZS5fX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2xpbmVfYnVmZmVyCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2hpbGUgbGVuKHJlc3VsdCkgPCBzaXplOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSByZXN1bHRbc2l6ZTpdCisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOnNpemVdCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQorICAgICAgICBsaW5lID0gc2VsZi5fbGluZV9idWZmZXIgb3Igc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGxlbihsaW5lKQorICAgICAgICBlb2wgPSBsaW5lLmZpbmQoJ1xuJywgMCwgc2l6ZSkKKyAgICAgICAgaWYgZW9sID49IDA6CisgICAgICAgICAgICBzaXplID0gZW9sICsgMQorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IGxpbmVbc2l6ZTpdCisgICAgICAgIHJldHVybiBsaW5lWzpzaXplXQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLnNoZWxsLmNsb3NlKCkKKworCiBjbGFzcyBNeUhhbmRsZXIocnBjLlJQQ0hhbmRsZXIpOgogCiAgICAgZGVmIGhhbmRsZShzZWxmKToKQEAgLTMwNCwxMiArNDA3LDEyIEBACiAgICAgICAgIGV4ZWN1dGl2ZSA9IEV4ZWN1dGl2ZShzZWxmKQogICAgICAgICBzZWxmLnJlZ2lzdGVyKCJleGVjIiwgZXhlY3V0aXZlKQogICAgICAgICBzZWxmLmNvbnNvbGUgPSBzZWxmLmdldF9yZW1vdGVfcHJveHkoImNvbnNvbGUiKQotICAgICAgICBzeXMuc3RkaW4gPSBQeVNoZWxsLlBzZXVkb0lucHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRpbiIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3Rkb3V0ID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZG91dCIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3RkZXJyID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICBzeXMuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkaW4iLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3Rkb3V0IiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQogCiAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vawogICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCkBAIC0zNDUsOCArNDQ4LDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcnBjaGFuZGxlcik6CiAgICAgICAgIHNlbGYucnBjaGFuZGxlciA9IHJwY2hhbmRsZXIKICAgICAgICAgc2VsZi5sb2NhbHMgPSBfX21haW5fXy5fX2RpY3RfXwotICAgICAgICBzZWxmLmNhbGx0aXAgPSBDYWxsVGlwcy5DYWxsVGlwcygpCi0gICAgICAgIHNlbGYuYXV0b2NvbXBsZXRlID0gQXV0b0NvbXBsZXRlLkF1dG9Db21wbGV0ZSgpCisgICAgICAgIHNlbGYuY2FsbHRpcCA9IGNhbGx0aXBzLkNhbGxUaXBzKCkKKyAgICAgICAgc2VsZi5hdXRvY29tcGxldGUgPSBhdXRvY29tcGxldGUuQXV0b0NvbXBsZXRlKCkKIAogICAgIGRlZiBydW5jb2RlKHNlbGYsIGNvZGUpOgogICAgICAgICBnbG9iYWwgaW50ZXJydXB0YWJsZQpAQCAtMzc4LDcgKzQ4MSw3IEBACiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCiAgICAgZGVmIHN0YXJ0X3RoZV9kZWJ1Z2dlcihzZWxmLCBndWlfYWRhcF9vaWQpOgotICAgICAgICByZXR1cm4gUmVtb3RlRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoc2VsZi5ycGNoYW5kbGVyLCBndWlfYWRhcF9vaWQpCisgICAgICAgIHJldHVybiBkZWJ1Z2dlcl9yLnN0YXJ0X2RlYnVnZ2VyKHNlbGYucnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQogCiAgICAgZGVmIHN0b3BfdGhlX2RlYnVnZ2VyKHNlbGYsIGlkYl9hZGFwX29pZCk6CiAgICAgICAgICJVbnJlZ2lzdGVyIHRoZSBJZGIgQWRhcHRlci4gIExpbmsgb2JqZWN0cyBhbmQgSWRiIHRoZW4gc3ViamVjdCB0byBHQyIKQEAgLTQwMiw3ICs1MDUsNyBAQAogICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CiAgICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXAKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWwKLSAgICAgICAgaXRlbSA9IFN0YWNrVmlld2VyLlN0YWNrVHJlZUl0ZW0oZmxpc3QsIHRiKQotICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0QnJvd3Nlci5yZW1vdGVfb2JqZWN0X3RyZWVfaXRlbShpdGVtKQorICAgICAgICBpdGVtID0gc3RhY2t2aWV3ZXIuU3RhY2tUcmVlSXRlbShmbGlzdCwgdGIpCisgICAgICAgIHJldHVybiBkZWJ1Z29ial9yLnJlbW90ZV9vYmplY3RfdHJlZV9pdGVtKGl0ZW0pCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CmluZGV4IDVjYjgxOGQuLjc5ZDg2YWQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CkBAIC0yMCwxMSArMjAsMTIgQEAKIGltcG9ydCBvcwogaW1wb3J0IHRhYm5hbm55CiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGluZGVudF9tZXNzYWdlID0gIiIiRXJyb3I6IEluY29uc2lzdGVudCBpbmRlbnRhdGlvbiBkZXRlY3RlZCEKIApAQCAtNDYsMTIgKzQ3LDEyIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KLSAgICAgICAgIyBQcm92aWRlIGluc3RhbmNlIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IERlYnVnZ2VyCisgICAgICAgICMgUHJvdmlkZSBpbnN0YW5jZSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBieSBkZWJ1Z2dlcgogICAgICAgICAjIFhYWCBUaGlzIHNob3VsZCBiZSBkb25lIGRpZmZlcmVudGx5CiAgICAgICAgIHNlbGYuZmxpc3QgPSBzZWxmLmVkaXR3aW4uZmxpc3QKICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5lZGl0d2luLnJvb3QKIAotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICBzZWxmLmVkaXR3aW4udGV4dF9mcmFtZS5iaW5kKCc8PHJ1bi1tb2R1bGUtZXZlbnQtMj4+Jywgc2VsZi5fcnVuX21vZHVsZV9ldmVudCkKIAogICAgIGRlZiBjaGVja19tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgpAQCAtMTEyLDcgKzExMyw3IEBACiAgICAgICAgICAgICBzaGVsbC5zZXRfd2FybmluZ19zdHJlYW0oc2F2ZWRfc3RyZWFtKQogCiAgICAgZGVmIHJ1bl9tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICAjIFRrLUNvY29hIGluIE1hY09TWCBpcyBicm9rZW4gdW50aWwgYXQgbGVhc3QKICAgICAgICAgICAgICMgVGsgOC41LjksIGFuZCB3aXRob3V0IHRoaXMgcmF0aGVyCiAgICAgICAgICAgICAjIGNydWRlIHdvcmthcm91bmQgSURMRSB3b3VsZCBoYW5nIHdoZW4gYSB1c2VyCkBAIC0xNDIsNyArMTQzLDcgQEAKICAgICAgICAgaWYgbm90IHNlbGYudGFibmFubnkoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuICdicmVhaycKICAgICAgICAgaW50ZXJwID0gc2VsZi5zaGVsbC5pbnRlcnAKLSAgICAgICAgaWYgUHlTaGVsbC51c2Vfc3VicHJvY2VzczoKKyAgICAgICAgaWYgcHlzaGVsbC51c2Vfc3VicHJvY2VzczoKICAgICAgICAgICAgIGludGVycC5yZXN0YXJ0X3N1YnByb2Nlc3Mod2l0aF9jd2Q9RmFsc2UsIGZpbGVuYW1lPQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lZGl0d2luLl9maWxlbmFtZV90b191bmljb2RlKGZpbGVuYW1lKSkKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKQEAgLTE2MSw3ICsxNjIsNyBAQAogICAgICAgICBpbnRlcnAucHJlcGVuZF9zeXNwYXRoKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBLQksgMDNKdWwwNCBXaGVuIHJ1biB3L28gc3VicHJvY2VzcywgcnVudGltZSB3YXJuaW5ncyBzdGlsbAogICAgICAgICAjICAgICAgICAgZ28gdG8gX19zdGRlcnJfXy4gIFdpdGggc3VicHJvY2VzcywgdGhleSBnbyB0byB0aGUgc2hlbGwuCi0gICAgICAgICMgICAgICAgICBOZWVkIHRvIGNoYW5nZSBzdHJlYW1zIGluIFB5U2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlci4KKyAgICAgICAgIyAgICAgICAgIE5lZWQgdG8gY2hhbmdlIHN0cmVhbXMgaW4gcHlzaGVsbC5Nb2RpZmllZEludGVycHJldGVyLgogICAgICAgICBpbnRlcnAucnVuY29kZShjb2RlKQogICAgICAgICByZXR1cm4gJ2JyZWFrJwogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkgYi9MaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKaW5kZXggNTM1NzZiNS4uY2MwOGMyNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQpAQCAtMSw1ICsxLDggQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKKwogCiBjbGFzcyBTY3JvbGxlZExpc3Q6CiAKQEAgLTIzLDcgKzI2LDcgQEAKICAgICAgICAgIyBCaW5kIGV2ZW50cyB0byB0aGUgbGlzdCBib3gKICAgICAgICAgbGlzdGJveC5iaW5kKCI8QnV0dG9uUmVsZWFzZS0xPiIsIHNlbGYuY2xpY2tfZXZlbnQpCiAgICAgICAgIGxpc3Rib3guYmluZCgiPERvdWJsZS1CdXR0b25SZWxlYXNlLTE+Iiwgc2VsZi5kb3VibGVfY2xpY2tfZXZlbnQpCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxCdXR0b25QcmVzcy0yPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxDb250cm9sLUJ1dHRvbi0xPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgIGVsc2U6CkBAIC0xMjQsMjIgKzEyNywyMCBAQAogICAgICAgICBwYXNzCiAKIAotZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFNjcm9sbGVkTGlzdCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzIwMCwgeSArIDE3NSkpCiAgICAgY2xhc3MgTXlTY3JvbGxlZExpc3QoU2Nyb2xsZWRMaXN0KToKICAgICAgICAgZGVmIGZpbGxfbWVudShzZWxmKTogc2VsZi5tZW51LmFkZF9jb21tYW5kKGxhYmVsPSJyaWdodCBjbGljayIpCiAgICAgICAgIGRlZiBvbl9zZWxlY3Qoc2VsZiwgaW5kZXgpOiBwcmludCgic2VsZWN0Iiwgc2VsZi5nZXQoaW5kZXgpKQogICAgICAgICBkZWYgb25fZG91YmxlKHNlbGYsIGluZGV4KTogcHJpbnQoImRvdWJsZSIsIHNlbGYuZ2V0KGluZGV4KSkKIAotICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdChyb290KQorICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdCh0b3ApCiAgICAgZm9yIGkgaW4gcmFuZ2UoMzApOgogICAgICAgICBzY3JvbGxlZF9saXN0LmFwcGVuZCgiSXRlbSAlMDJkIiAlIGkpCiAKLSAgICByb290Lm1haW5sb29wKCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAjIEF0IHRoZSBtb21lbnQsIHRlc3Rfc2Nyb2xsZWRsaXN0IG1lcmVseSBjcmVhdGVzIGluc3RhbmNlLCBsaWtlIGh0ZXN0LgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfc2Nyb2xsZWRfbGlzdCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weSBiL0xpYi9pZGxlbGliL3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaC5weQppbmRleCA3NjVkNTNmLi40YjkwNjU5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoLnB5CkBAIC0xLDEyICsxLDEyIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorZnJvbSBpZGxlbGliLnNlYXJjaGJhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKIAogZGVmIF9zZXR1cCh0ZXh0KToKICAgICAiQ3JlYXRlIG9yIGZpbmQgdGhlIHNpbmdsZXRvbiBTZWFyY2hEaWFsb2cgaW5zdGFuY2UuIgogICAgIHJvb3QgPSB0ZXh0Ll9yb290KCkKLSAgICBlbmdpbmUgPSBTZWFyY2hFbmdpbmUuZ2V0KHJvb3QpCisgICAgZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChyb290KQogICAgIGlmIG5vdCBoYXNhdHRyKGVuZ2luZSwgIl9zZWFyY2hkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9zZWFyY2hkaWFsb2cgPSBTZWFyY2hEaWFsb2cocm9vdCwgZW5naW5lKQogICAgIHJldHVybiBlbmdpbmUuX3NlYXJjaGRpYWxvZwpAQCAtMjQsNiArMjQsNyBAQAogICAgICJIYW5kbGUgdGhlIGVkaXRvciBlZGl0IG1lbnUgaXRlbSBhbmQgY29ycmVzcG9uZGluZyBldmVudC4iCiAgICAgcmV0dXJuIF9zZXR1cCh0ZXh0KS5maW5kX3NlbGVjdGlvbih0ZXh0KQogCisKIGNsYXNzIFNlYXJjaERpYWxvZyhTZWFyY2hEaWFsb2dCYXNlKToKIAogICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKQEAgLTUxLDcgKzUyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmaXJzdCA9IHRleHQuaW5kZXgoInNlbC5maXJzdCIpCiAgICAgICAgICAgICAgICAgc2VsbGFzdCA9IHRleHQuaW5kZXgoInNlbC5sYXN0IikKICAgICAgICAgICAgICAgICBpZiBzZWxmaXJzdCA9PSBmaXJzdCBhbmQgc2VsbGFzdCA9PSBsYXN0OgotICAgICAgICAgICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCkBAIC02MSw3ICs2Miw3IEBACiAgICAgICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGZpbmRfc2VsZWN0aW9uKHNlbGYsIHRleHQpOgpAQCAtNzIsMjYgKzczLDMwIEBACiAKIAogZGVmIF9zZWFyY2hfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAnJydEaXNwbGF5IHNlYXJjaCB0ZXN0IGJveC4nJycKKyAgICAiRGlzcGxheSBzZWFyY2ggdGVzdCBib3guIgorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgU2VhcmNoRGlhbG9nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSBUZXh0KGJveCwgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPSdncmF5JykKICAgICB0ZXh0LnBhY2soKQogICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCJUaGlzIGlzIGEgc2FtcGxlIHN0cmluZy5cbiIqNSkKIAogICAgIGRlZiBzaG93X2ZpbmQoKToKLSAgICAgICAgdGV4dC50YWdfYWRkKFNFTCwgIjEuMCIsIEVORCkKKyAgICAgICAgdGV4dC50YWdfYWRkKCdzZWwnLCAnMS4wJywgJ2VuZCcpCiAgICAgICAgIF9zZXR1cCh0ZXh0KS5vcGVuKHRleHQpCi0gICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCisgICAgICAgIHRleHQudGFnX3JlbW92ZSgnc2VsJywgJzEuMCcsICdlbmQnKQogCiAgICAgYnV0dG9uID0gQnV0dG9uKGJveCwgdGV4dD0iU2VhcmNoIChzZWxlY3Rpb24gaWdub3JlZCkiLCBjb21tYW5kPXNob3dfZmluZCkKICAgICBidXR0b24ucGFjaygpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hkaWFsb2cnLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoJywKICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9zZWFyY2hfZGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQppbmRleCA1ZmE4NGUyLi41ZjgxNzg1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKQEAgLTEsNyArMSw4IEBACiAnJydEZWZpbmUgU2VhcmNoRGlhbG9nQmFzZSB1c2VkIGJ5IFNlYXJjaCwgUmVwbGFjZSwgYW5kIEdyZXAgZGlhbG9ncy4nJycKIAotZnJvbSB0a2ludGVyIGltcG9ydCAoVG9wbGV2ZWwsIEZyYW1lLCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwKLSAgICAgICAgICAgICAgICAgICAgIENoZWNrYnV0dG9uLCBSYWRpb2J1dHRvbikKK2Zyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwgQ2hlY2tidXR0b24sIFJhZGlvYnV0dG9uCisKIAogY2xhc3MgU2VhcmNoRGlhbG9nQmFzZToKICAgICAnJydDcmVhdGUgbW9zdCBvZiBhIDMgb3IgNCByb3csIDMgY29sdW1uIHNlYXJjaCBkaWFsb2cuCkBAIC03OSw2ICs4MCw3IEBACiAgICAgICAgIHRvcC53bV90aXRsZShzZWxmLnRpdGxlKQogICAgICAgICB0b3Aud21faWNvbm5hbWUoc2VsZi5pY29uKQogICAgICAgICBzZWxmLnRvcCA9IHRvcAorICAgICAgICBzZWxmLmJlbGwgPSB0b3AuYmVsbAogCiAgICAgICAgIHNlbGYucm93ID0gMAogICAgICAgICBzZWxmLnRvcC5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCBwYWQ9Miwgd2VpZ2h0PTApCkBAIC0xMjUsNyArMTI3LDcgQEAKICAgICBkZWYgY3JlYXRlX29wdGlvbl9idXR0b25zKHNlbGYpOgogICAgICAgICAnJydSZXR1cm4gKGZpbGxlZCBmcmFtZSwgb3B0aW9ucykgZm9yIHRlc3RpbmcuCiAKLSAgICAgICAgT3B0aW9ucyBpcyBhIGxpc3Qgb2YgU2VhcmNoRW5naW5lIGJvb2xlYW52YXIsIGxhYmVsIHBhaXJzLgorICAgICAgICBPcHRpb25zIGlzIGEgbGlzdCBvZiBzZWFyY2hlbmdpbmUgYm9vbGVhbnZhciwgbGFiZWwgcGFpcnMuCiAgICAgICAgIEEgZ3JpZGRlZCBmcmFtZSBmcm9tIG1ha2VfZnJhbWUgaXMgZmlsbGVkIHdpdGggYSBDaGVja2J1dHRvbgogICAgICAgICBmb3IgZWFjaCBwYWlyLCBib3VuZCB0byB0aGUgdmFyLCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGxhYmVsLgogICAgICAgICAnJycKQEAgLTEzNywxMCArMTM5LDggQEAKICAgICAgICAgaWYgc2VsZi5uZWVkd3JhcGJ1dHRvbjoKICAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKChlbmdpbmUud3JhcHZhciwgIldyYXAgYXJvdW5kIikpCiAgICAgICAgIGZvciB2YXIsIGxhYmVsIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmcmFtZSwgYW5jaG9yPSJ3IiwgdmFyaWFibGU9dmFyLCB0ZXh0PWxhYmVsKQorICAgICAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oZnJhbWUsIHZhcmlhYmxlPXZhciwgdGV4dD1sYWJlbCkKICAgICAgICAgICAgIGJ0bi5wYWNrKHNpZGU9ImxlZnQiLCBmaWxsPSJib3RoIikKLSAgICAgICAgICAgIGlmIHZhci5nZXQoKToKLSAgICAgICAgICAgICAgICBidG4uc2VsZWN0KCkKICAgICAgICAgcmV0dXJuIGZyYW1lLCBvcHRpb25zCiAKICAgICBkZWYgY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CkBAIC0xNTMsMTEgKzE1Myw4IEBACiAgICAgICAgIHZhciA9IHNlbGYuZW5naW5lLmJhY2t2YXIKICAgICAgICAgb3RoZXJzID0gWygxLCAnVXAnKSwgKDAsICdEb3duJyldCiAgICAgICAgIGZvciB2YWwsIGxhYmVsIGluIG90aGVyczoKLSAgICAgICAgICAgIGJ0biA9IFJhZGlvYnV0dG9uKGZyYW1lLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCisgICAgICAgICAgICBidG4gPSBSYWRpb2J1dHRvbihmcmFtZSwgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCiAgICAgICAgICAgICBidG4ucGFjayhzaWRlPSJsZWZ0IiwgZmlsbD0iYm90aCIpCi0gICAgICAgICAgICBpZiB2YXIuZ2V0KCkgPT0gdmFsOgotICAgICAgICAgICAgICAgIGJ0bi5zZWxlY3QoKQogICAgICAgICByZXR1cm4gZnJhbWUsIG90aGVycwogCiAgICAgZGVmIG1ha2VfYnV0dG9uKHNlbGYsIGxhYmVsLCBjb21tYW5kLCBpc2RlZj0wKToKQEAgLTE3OCw3ICsxNzUsMjYgQEAKICAgICAgICAgYiA9IHNlbGYubWFrZV9idXR0b24oImNsb3NlIiwgc2VsZi5jbG9zZSkKICAgICAgICAgYi5sb3dlcigpCiAKKworY2xhc3MgX3NlYXJjaGJhc2UoU2VhcmNoRGlhbG9nQmFzZSk6ICAjIGh0ZXN0ICMKKyAgICAiQ3JlYXRlIGF1dG8tb3BlbmluZyBkaWFsb2cgd2l0aCBubyB0ZXh0IGNvbm5lY3Rpb24uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgIGltcG9ydCByZQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorCisgICAgICAgIHNlbGYucm9vdCA9IHBhcmVudAorICAgICAgICBzZWxmLmVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocGFyZW50KQorICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgcHJpbnQocGFyZW50Lmdlb21ldHJ5KCkpCisgICAgICAgIHdpZHRoLGhlaWdodCwgeCx5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCisgICAgICAgIHNlbGYudG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyA0MCwgeSArIDE3NSkpCisKKyAgICBkZWYgZGVmYXVsdF9jb21tYW5kKHNlbGYsIGR1bW15KTogcGFzcworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oCi0gICAgICAgICdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UnLCB2ZXJib3NpdHk9MikKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGJhc2UnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKworICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfc2VhcmNoYmFzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQppbmRleCAzNzg4M2JmLi4yNTNmMWIwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CkBAIC0xLDUgKzEsNiBAQAogJycnRGVmaW5lIFNlYXJjaEVuZ2luZSBmb3Igc2VhcmNoIGRpYWxvZ3MuJycnCiBpbXBvcnQgcmUKKwogZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIFRjbEVycm9yCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC0xNCw2ICsxNSw3IEBACiAgICAgICAgICMgVGhpcyBjcmVhdGVzIGEgY3ljbGUgdGhhdCBwZXJzaXN0cyB1bnRpbCByb290IGlzIGRlbGV0ZWQuCiAgICAgcmV0dXJuIHJvb3QuX3NlYXJjaGVuZ2luZQogCisKIGNsYXNzIFNlYXJjaEVuZ2luZToKICAgICAiIiJIYW5kbGVzIHNlYXJjaGluZyBhIHRleHQgd2lkZ2V0IGZvciBGaW5kLCBSZXBsYWNlLCBhbmQgR3JlcC4iIiIKIApAQCAtNTcsNyArNTksNyBAQAogCiAgICAgZGVmIHNldGNvb2tlZHBhdChzZWxmLCBwYXQpOgogICAgICAgICAiU2V0IHBhdHRlcm4gYWZ0ZXIgZXNjYXBpbmcgaWYgcmUuIgotICAgICAgICAjIGNhbGxlZCBvbmx5IGluIFNlYXJjaERpYWxvZy5weTogNjYKKyAgICAgICAgIyBjYWxsZWQgb25seSBpbiBzZWFyY2gucHk6IDY2CiAgICAgICAgIGlmIHNlbGYuaXNyZSgpOgogICAgICAgICAgICAgcGF0ID0gcmUuZXNjYXBlKHBhdCkKICAgICAgICAgc2VsZi5zZXRwYXQocGF0KQpAQCAtMTg2LDYgKzE4OCw3IEBACiAgICAgICAgICAgICBjb2wgPSBsZW4oY2hhcnMpIC0gMQogICAgICAgICByZXR1cm4gTm9uZQogCisKIGRlZiBzZWFyY2hfcmV2ZXJzZShwcm9nLCBjaGFycywgY29sKToKICAgICAnJydTZWFyY2ggYmFja3dhcmRzIGFuZCByZXR1cm4gYW4gcmUgbWF0Y2ggb2JqZWN0IG9yIE5vbmUuCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5IGIvTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CmluZGV4IGNjYzc1NWMuLjA2OThkZWYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CkBAIC0xLDEyICsxLDEyIEBACi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKIGltcG9ydCB0a2ludGVyIGFzIHRrCiAKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCi1mcm9tIGlkbGVsaWIuT2JqZWN0QnJvd3NlciBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi5kZWJ1Z29iaiBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCiAKIGRlZiBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Tm9uZSwgdGI9Tm9uZSwgdG9wPU5vbmUpOgogICAgIGlmIHRvcCBpcyBOb25lOgpAQCAtMTcsNiArMTcsNyBAQAogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQogCisKIGNsYXNzIFN0YWNrVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIHRiPU5vbmUpOgpAQCAtNTUsNiArNTYsNyBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAorCiBjbGFzcyBGcmFtZVRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmZvLCBmbGlzdCk6CkBAIC05Niw2ICs5OCw3IEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5nb3RvZmlsZWxpbmUoZmlsZW5hbWUsIGxpbmVubykKIAorCiBjbGFzcyBWYXJpYWJsZXNUcmVlSXRlbShPYmplY3RUcmVlSXRlbSk6CiAKICAgICBkZWYgR2V0VGV4dChzZWxmKToKQEAgLTEyMCwxNSArMTIzLDE0IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCi0gICAgZGVmIGtleXMoc2VsZik6ICAjIHVudXNlZCwgbGVmdCBmb3IgcG9zc2libGUgM3JkIHBhcnR5IHVzZQotICAgICAgICByZXR1cm4gbGlzdChzZWxmLm9iamVjdC5rZXlzKCkpCiAKLWRlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6Ci0gICAgcm9vdCA9IHRrLlRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFN0YWNrVmlld2VyIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKK2RlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICBmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0CisgICAgdG9wID0gdGsuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBTdGFja1ZpZXdlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgNTAsIHkgKyAxNzUpKQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKICAgICB0cnk6ICMgdG8gb2J0YWluIGEgdHJhY2ViYWNrIG9iamVjdAogICAgICAgICBpbnRlbnRpb25hbF9uYW1lX2Vycm9yCiAgICAgZXhjZXB0IE5hbWVFcnJvcjoKQEAgLTEzOSw3ICsxNDEsNyBAQAogICAgIHN5cy5sYXN0X3ZhbHVlID0gZXhjX3ZhbHVlCiAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gZXhjX3RiCiAKLSAgICBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Zmxpc3QsIHRvcD1yb290LCB0Yj1leGNfdGIpCisgICAgU3RhY2tCcm93c2VyKHRvcCwgZmxpc3Q9Zmxpc3QsIHRvcD10b3AsIHRiPWV4Y190YikKIAogICAgICMgcmVzdG9yZSBzeXMgdG8gb3JpZ2luYWwgc3RhdGUKICAgICBkZWwgc3lzLmxhc3RfdHlwZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5IGIvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTg1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkKQEAgLTAsMCArMSw0NiBAQAorZnJvbSB0a2ludGVyIGltcG9ydCBGcmFtZSwgTGFiZWwKKworCitjbGFzcyBNdWx0aVN0YXR1c0JhcihGcmFtZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KToKKyAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KQorICAgICAgICBzZWxmLmxhYmVscyA9IHt9CisKKyAgICBkZWYgc2V0X2xhYmVsKHNlbGYsIG5hbWUsIHRleHQ9JycsIHNpZGU9J2xlZnQnLCB3aWR0aD0wKToKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5sYWJlbHM6CisgICAgICAgICAgICBsYWJlbCA9IExhYmVsKHNlbGYsIGJvcmRlcndpZHRoPTAsIGFuY2hvcj0ndycpCisgICAgICAgICAgICBsYWJlbC5wYWNrKHNpZGU9c2lkZSwgcGFkeT0wLCBwYWR4PTQpCisgICAgICAgICAgICBzZWxmLmxhYmVsc1tuYW1lXSA9IGxhYmVsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsYWJlbCA9IHNlbGYubGFiZWxzW25hbWVdCisgICAgICAgIGlmIHdpZHRoICE9IDA6CisgICAgICAgICAgICBsYWJlbC5jb25maWcod2lkdGg9d2lkdGgpCisgICAgICAgIGxhYmVsLmNvbmZpZyh0ZXh0PXRleHQpCisKKworZGVmIF9tdWx0aXN0YXR1c19iYXIocGFyZW50KTogICMgaHRlc3QgIworICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lLCBUZXh0LCBCdXR0b24KKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlKHgsIHkgKyAxNzUpKQorICAgIHRvcC50aXRsZSgiVGVzdCBtdWx0aXN0YXR1cyBiYXIiKQorICAgIGZyYW1lID0gRnJhbWUodG9wKQorICAgIHRleHQgPSBUZXh0KGZyYW1lLCBoZWlnaHQ9NSwgd2lkdGg9NDApCisgICAgdGV4dC5wYWNrKCkKKyAgICBtc2IgPSBNdWx0aVN0YXR1c0JhcihmcmFtZSkKKyAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiaGVsbG8iKQorICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJ3b3JsZCIpCisgICAgbXNiLnBhY2soc2lkZT0nYm90dG9tJywgZmlsbD0neCcpCisKKyAgICBkZWYgY2hhbmdlKCk6CisgICAgICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJmb28iKQorICAgICAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAiYmFyIikKKworICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlVwZGF0ZSBzdGF0dXMiLCBjb21tYW5kPWNoYW5nZSkKKyAgICBidXR0b24ucGFjayhzaWRlPSdib3R0b20nKQorICAgIGZyYW1lLnBhY2soKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfbXVsdGlzdGF0dXNfYmFyKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQppbmRleCA5NjVmOWY4Li40MTg2ZmEyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQorKysgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQpAQCAtMjg1LDYgKzI4NSw3IEBACiAgICAgICAgICAgICAjIHBsYWNlZCBoaWRlIGl0CiAgICAgICAgICAgICBzZWxmLnRhYl9zZXQubG93ZXIoKQogCisKIGNsYXNzIFRhYmJlZFBhZ2VTZXQoRnJhbWUpOgogICAgICIiIkEgVGtpbnRlciB0YWJiZWQtcGFuZSB3aWRnZXQuCiAKQEAgLTMwMiw2ICszMDMsNyBAQAogICAgIHJlbW92ZV9wYWdlKCkgbWV0aG9kcy4KIAogICAgICIiIgorCiAgICAgY2xhc3MgUGFnZShvYmplY3QpOgogICAgICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBUYWJiZWRQYWdlU2V0J3MgcGFnZXMuCiAKQEAgLTQ2NywzMSArNDY5LDI5IEBACiAKICAgICAgICAgc2VsZi5fdGFiX3NldC5zZXRfc2VsZWN0ZWRfdGFiKHBhZ2VfbmFtZSkKIAotZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KToKLSAgICAjIHRlc3QgZGlhbG9nCi0gICAgcm9vdD1UaygpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNzUpKQotICAgIHJvb3QudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKLSAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQocm9vdCwgcGFnZV9uYW1lcz1bJ0Zvb2JhcicsJ0JheiddLCBuX3Jvd3M9MCwKKworZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcD1Ub3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKKyAgICB0b3AudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKKyAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQodG9wLCBwYWdlX25hbWVzPVsnRm9vYmFyJywnQmF6J10sIG5fcm93cz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRfdGFicz1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgIHRhYlBhZ2UucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydGb29iYXInXS5mcmFtZSwgdGV4dD0nRm9vJywgcGFkeT0yMCkucGFjaygpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snRm9vYmFyJ10uZnJhbWUsIHRleHQ9J0JhcicsIHBhZHk9MjApLnBhY2soKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0JheiddLmZyYW1lLCB0ZXh0PSdCYXonKS5wYWNrKCkKLSAgICBlbnRyeVBnTmFtZT1FbnRyeShyb290KQotICAgIGJ1dHRvbkFkZD1CdXR0b24ocm9vdCwgdGV4dD0nQWRkIFBhZ2UnLAorICAgIGVudHJ5UGdOYW1lPUVudHJ5KHRvcCkKKyAgICBidXR0b25BZGQ9QnV0dG9uKHRvcCwgdGV4dD0nQWRkIFBhZ2UnLAogICAgICAgICAgICAgY29tbWFuZD1sYW1iZGE6dGFiUGFnZS5hZGRfcGFnZShlbnRyeVBnTmFtZS5nZXQoKSkpCi0gICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbihyb290LCB0ZXh0PSdSZW1vdmUgUGFnZScsCisgICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbih0b3AsIHRleHQ9J1JlbW92ZSBQYWdlJywKICAgICAgICAgICAgIGNvbW1hbmQ9bGFtYmRhOnRhYlBhZ2UucmVtb3ZlX3BhZ2UoZW50cnlQZ05hbWUuZ2V0KCkpKQotICAgIGxhYmVsUGdOYW1lPUxhYmVsKHJvb3QsIHRleHQ9J25hbWUgb2YgcGFnZSB0byBhZGQvcmVtb3ZlOicpCisgICAgbGFiZWxQZ05hbWU9TGFiZWwodG9wLCB0ZXh0PSduYW1lIG9mIHBhZ2UgdG8gYWRkL3JlbW92ZTonKQogICAgIGJ1dHRvbkFkZC5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGJ1dHRvblJlbW92ZS5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGxhYmVsUGdOYW1lLnBhY2socGFkeD01KQogICAgIGVudHJ5UGdOYW1lLnBhY2socGFkeD01KQotICAgIHJvb3QubWFpbmxvb3AoKQotCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weSBiL0xpYi9pZGxlbGliL3RleHR2aWV3LnB5CnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL3RleHRWaWV3LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90ZXh0dmlldy5weQppbmRleCAxMmFjMzE5Li5hZGVlMzI2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weQorKysgYi9MaWIvaWRsZWxpYi90ZXh0dmlldy5weQpAQCAtMSwxNCArMSwxNCBAQAogIiIiU2ltcGxlIHRleHQgYnJvd3NlciBmb3IgSURMRQogCiAiIiIKLQogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCitmcm9tIHRraW50ZXIubWVzc2FnZWJveCBpbXBvcnQgc2hvd2Vycm9yCisKIAogY2xhc3MgVGV4dFZpZXdlcihUb3BsZXZlbCk6Ci0gICAgIiIiQSBzaW1wbGUgdGV4dCB2aWV3ZXIgZGlhbG9nIGZvciBJRExFCisgICAgIkEgc2ltcGxlIHRleHQgdmlld2VyIGRpYWxvZyBmb3IgSURMRS4iCiAKLSAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgdGV4dCwgbW9kYWw9VHJ1ZSwgX2h0ZXN0PUZhbHNlKToKICAgICAgICAgIiIiU2hvdyB0aGUgZ2l2ZW4gdGV4dCBpbiBhIHNjcm9sbGFibGUgd2luZG93IHdpdGggYSAnY2xvc2UnIGJ1dHRvbgogCkBAIC0yMCwxMSArMjAsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKICAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgIyBwbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgIyBQbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QuCiAgICAgICAgIHNlbGYuZ2VvbWV0cnkoIj0lZHglZCslZCslZCIgJSAoNzUwLCA1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAoMTAgaWYgbm90IF9odGVzdCBlbHNlIDEwMCkpKQotICAgICAgICAjZWxndWF2YXMgLSBjb25maWcgcGxhY2Vob2xkZXJzIHRpbCBjb25maWcgc3R1ZmYgY29tcGxldGVkCisgICAgICAgICMgVE9ETzogZ2V0IGZnL2JnIGZyb20gdGhlbWUuCiAgICAgICAgIHNlbGYuYmcgPSAnI2ZmZmZmZicKICAgICAgICAgc2VsZi5mZyA9ICcjMDAwMDAwJwogCkBAIC0zMyw5ICszMyw5IEBACiAgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLk9rKQogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLnRleHRWaWV3LmZvY3VzX3NldCgpCi0gICAgICAgICNrZXkgYmluZGluZ3MgZm9yIHRoaXMgZGlhbG9nCi0gICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spICNkaXNtaXNzIGRpYWxvZwotICAgICAgICBzZWxmLmJpbmQoJzxFc2NhcGU+JyxzZWxmLk9rKSAjZGlzbWlzcyBkaWFsb2cKKyAgICAgICAgIyBCaW5kIGtleXMgZm9yIGNsb3NpbmcgdGhpcyBkaWFsb2cuCisgICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spCisgICAgICAgIHNlbGYuYmluZCgnPEVzY2FwZT4nLHNlbGYuT2spCiAgICAgICAgIHNlbGYudGV4dFZpZXcuaW5zZXJ0KDAuMCwgdGV4dCkKICAgICAgICAgc2VsZi50ZXh0Vmlldy5jb25maWcoc3RhdGU9RElTQUJMRUQpCiAKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuT2ssIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi5zY3JvbGxiYXJWaWV3ID0gU2Nyb2xsYmFyKGZyYW1lVGV4dCwgb3JpZW50PVZFUlRJQ0FMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZWZvY3VzPUZBTFNFLCBoaWdobGlnaHR0aGlja25lc3M9MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi50ZXh0VmlldyA9IFRleHQoZnJhbWVUZXh0LCB3cmFwPVdPUkQsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1zZWxmLmZnLCBiZz1zZWxmLmJnKQogICAgICAgICBzZWxmLnNjcm9sbGJhclZpZXcuY29uZmlnKGNvbW1hbmQ9c2VsZi50ZXh0Vmlldy55dmlldykKQEAgLTcyLDE0ICs3MiwxNCBAQAogICAgIHRyeToKICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgogICAgICAgICAgICAgY29udGVudHMgPSBmaWxlLnJlYWQoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIExvYWQgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1VuYWJsZSB0byBsb2FkIGZpbGUgJXIgLicgJSBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J0ZpbGUgTG9hZCBFcnJvcicsCisgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdVbmFibGUgdG8gbG9hZCBmaWxlICVyIC4nICUgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdVbmljb2RlIERlY29kZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1zdHIoZXJyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J1VuaWNvZGUgRGVjb2RlIEVycm9yJywKKyAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKGVyciksCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB2aWV3X3RleHQocGFyZW50LCB0aXRsZSwgY29udGVudHMsIG1vZGFsKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Ub29sVGlwLnB5IGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Ub29sVGlwLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90b29sdGlwLnB5CmluZGV4IDk2NDEwN2UuLjg0M2ZiNGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1Rvb2xUaXAucHkKKysrIGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWZvcmsKKyMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWxpYgogIyAoYWx0aG91Z2ggdGhlICdjYWxsdGlwcycgZXh0ZW5zaW9uIGlzIHBhcnRseSBiYXNlZCBvbiB0aGlzIGNvZGUpCiAjIG1heSBiZSB1c2VmdWwgZm9yIHNvbWUgcHVycG9zZXMgaW4gKG9yIGFsbW9zdCBpbiA7KSB0aGUgY3VycmVudCBwcm9qZWN0IHNjb3BlCiAjIElkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbApAQCAtNzYsMjEgKzc2LDIwIEBACiAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuaXRlbXM6CiAgICAgICAgICAgICBsaXN0Ym94Lmluc2VydChFTkQsIGl0ZW0pCiAKLWRlZiBfdG9vbHRpcChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCB0b29sdGlwIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgbGFiZWwgPSBMYWJlbChyb290LCB0ZXh0PSJQbGFjZSB5b3VyIG1vdXNlIG92ZXIgYnV0dG9ucyIpCitkZWYgX3Rvb2x0aXAocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgdG9vbHRpcCIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICBsYWJlbCA9IExhYmVsKHRvcCwgdGV4dD0iUGxhY2UgeW91ciBtb3VzZSBvdmVyIGJ1dHRvbnMiKQogICAgIGxhYmVsLnBhY2soKQotICAgIGJ1dHRvbjEgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDEiKQotICAgIGJ1dHRvbjIgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDIiKQorICAgIGJ1dHRvbjEgPSBCdXR0b24odG9wLCB0ZXh0PSJCdXR0b24gMSIpCisgICAgYnV0dG9uMiA9IEJ1dHRvbih0b3AsIHRleHQ9IkJ1dHRvbiAyIikKICAgICBidXR0b24xLnBhY2soKQogICAgIGJ1dHRvbjIucGFjaygpCiAgICAgVG9vbFRpcChidXR0b24xLCAiVGhpcyBpcyB0b29sdGlwIHRleHQgZm9yIGJ1dHRvbjEuIikKICAgICBMaXN0Ym94VG9vbFRpcChidXR0b24yLCBbIlRoaXMgaXMiLCJtdWx0aXBsZSBsaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbHRpcCB0ZXh0IiwiZm9yIGJ1dHRvbjIiXSkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkgYi9MaWIvaWRsZWxpYi90cmVlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3RyZWUucHkKaW5kZXggYTE5NTc4Zi4uMjkyY2UzNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weQorKysgYi9MaWIvaWRsZWxpYi90cmVlLnB5CkBAIC0xNSwxMCArMTUsMTIgQEAKICMgLSBvcHRpbWl6ZSB0cmVlIHJlZHJhdyBhZnRlciBleHBhbmQgb2Ygc3Vibm9kZQogCiBpbXBvcnQgb3MKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFpvb21IZWlnaHQKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgem9vbWhlaWdodAogCiBJQ09ORElSID0gIkljb25zIgogCkBAIC00NDUsMjIgKzQ0NywyMSBAQAogICAgICAgICBzZWxmLmNhbnZhcy55dmlld19zY3JvbGwoMSwgInVuaXQiKQogICAgICAgICByZXR1cm4gImJyZWFrIgogICAgIGRlZiB6b29tX2hlaWdodChzZWxmLCBldmVudCk6Ci0gICAgICAgIFpvb21IZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCisgICAgICAgIHpvb21oZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKIAotZGVmIF90cmVlX3dpZGdldChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBUcmVlV2lkZ2V0IikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgc2MgPSBTY3JvbGxlZENhbnZhcyhyb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCitkZWYgX3RyZWVfd2lkZ2V0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzUwLCB5KzE3NSkpCisgICAgc2MgPSBTY3JvbGxlZENhbnZhcyh0b3AsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKICAgICBzYy5mcmFtZS5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIiwgc2lkZT1MRUZUKQotICAgIGl0ZW0gPSBGaWxlVHJlZUl0ZW0ob3MuZ2V0Y3dkKCkpCisgICAgaXRlbSA9IEZpbGVUcmVlSXRlbShJQ09ORElSKQogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgdGVzdF90cmVlIGlzIGN1cnJlbnRseSBhIGNvcHkgb2YgdGhpcwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdHJlZV93aWRnZXQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi91bmRvLnB5CmluZGV4IDFjMjUwMmQuLjQzMzJmMTAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvdW5kby5weQpAQCAtMSw3ICsxLDkgQEAKIGltcG9ydCBzdHJpbmcKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorCisjIHRraW50dGVyIGltcG9ydCBub3QgbmVlZGVkIGJlY2F1c2UgbW9kdWxlIGRvZXMgbm90IGNyZWF0ZSB3aWRnZXRzLAorIyBhbHRob3VnaCBtYW55IG1ldGhvZHMgb3BlcmF0ZSBvbiB0ZXh0IHdpZGdldCBhcmd1bWVudHMuCiAKICMkIGV2ZW50IDw8cmVkbz4+CiAjJCB3aW4gPENvbnRyb2wteT4KQEAgLTE1OCw3ICsxNjAsNiBAQAogCiAKIGNsYXNzIENvbW1hbmQ6Ci0KICAgICAjIEJhc2UgY2xhc3MgZm9yIFVuZG9hYmxlIGNvbW1hbmRzCiAKICAgICB0YWdzID0gTm9uZQpAQCAtMjA0LDcgKzIwNSw2IEBACiAKIAogY2xhc3MgSW5zZXJ0Q29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgaW5zZXJ0IGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGNoYXJzLCB0YWdzPU5vbmUpOgpAQCAtMjYyLDcgKzI2Miw2IEBACiAKIAogY2xhc3MgRGVsZXRlQ29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgZGVsZXRlIGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGluZGV4Mj1Ob25lKToKQEAgLTI5Nyw4ICsyOTYsOCBAQAogICAgICAgICB0ZXh0LnNlZSgnaW5zZXJ0JykKICAgICAgICAgIyNzeXMuX19zdGRlcnJfXy53cml0ZSgidW5kbzogJXNcbiIgJSBzZWxmKQogCi1jbGFzcyBDb21tYW5kU2VxdWVuY2UoQ29tbWFuZCk6CiAKK2NsYXNzIENvbW1hbmRTZXF1ZW5jZShDb21tYW5kKToKICAgICAjIFdyYXBwZXIgZm9yIGEgc2VxdWVuY2Ugb2YgdW5kb2FibGUgY21kcyB0byBiZSB1bmRvbmUvcmVkb25lCiAgICAgIyBhcyBhIHVuaXQKIApAQCAtMzM4LDEzICszMzcsMTIgQEAKIAogCiBkZWYgX3VuZG9fZGVsZWdhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBpbXBvcnQgcmUKLSAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgdW5kb3dpbiA9IHRrLlRvcGxldmVsKCkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBCdXR0b24KKyAgICBmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIHVuZG93aW4gPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdW5kb3dpbi50aXRsZSgiVGVzdCBVbmRvRGVsZWdhdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgdW5kb3dpbi5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHVuZG93aW4uZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKICAgICB0ZXh0ID0gVGV4dCh1bmRvd2luLCBoZWlnaHQ9MTApCiAgICAgdGV4dC5wYWNrKCkKQEAgLTM2Miw3ICszNjAsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfdW5kb2RlbGVnYXRvcicsIHZlcmJvc2l0eT0yLAotICAgICAgICAgICAgICAgICAgZXhpdD1GYWxzZSkKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3VuZG8nLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdW5kb19kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5IGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi93aW5kb3dzLnB5CmluZGV4IGJjNzQzNDguLmEzZjg1OGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpAQCAtMSw1ICsxLDYgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogCisKIGNsYXNzIFdpbmRvd0xpc3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC00OCw2ICs0OSw3IEBACiAgICAgICAgICAgICAgICAgdCwgdiwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgICAgIHByaW50KCJ3YXJuaW5nOiBjYWxsYmFjayBmYWlsZWQgaW4gV2luZG93TGlzdCIsIHQsICI6IiwgdikKIAorCiByZWdpc3RyeSA9IFdpbmRvd0xpc3QoKQogCiBhZGRfd2luZG93c190b19tZW51ID0gcmVnaXN0cnkuYWRkX3dpbmRvd3NfdG9fbWVudQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weSBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQppbmRleCBhNWQ2NzllLi5hYTRhNDI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5CisrKyBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKQEAgLTMsNyArMyw4IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorCiAKIGNsYXNzIFpvb21IZWlnaHQ6CiAKQEAgLTIwLDYgKzIxLDcgQEAKICAgICAgICAgdG9wID0gc2VsZi5lZGl0d2luLnRvcAogICAgICAgICB6b29tX2hlaWdodCh0b3ApCiAKKwogZGVmIHpvb21faGVpZ2h0KHRvcCk6CiAgICAgZ2VvbSA9IHRvcC53bV9nZW9tZXRyeSgpCiAgICAgbSA9IHJlLm1hdGNoKHIiKFxkKyl4KFxkKylcKygtP1xkKylcKygtP1xkKykiLCBnZW9tKQpAQCAtMzIsNyArMzQsNyBAQAogICAgICAgICBuZXd5ID0gMAogICAgICAgICBuZXdoZWlnaHQgPSBuZXdoZWlnaHQgLSA3MgogCi0gICAgZWxpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgZWxpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgIyBUaGUgJzg4JyBiZWxvdyBpcyBhIG1hZ2ljIG51bWJlciB0aGF0IGF2b2lkcyBwbGFjaW5nIHRoZSBib3R0b20KICAgICAgICAgIyBvZiB0aGUgd2luZG93IGJlbG93IHRoZSBwYW5lbCBvbiBteSBtYWNoaW5lLiBJIGRvbid0IGtub3cgaG93CiAgICAgICAgICMgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHZhbHVlIGZvciB0aGlzIHdpdGggdGtpbnRlci4KZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggNGU4YTRiYi4uY2FkNTA4YSAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTExMSw3ICsxMTEsMTUgQEAKICMgTGl0ZXJhbCBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIExpdGVyYWwgPSByZS5jb21waWxlKGJyJy4qeyg/UDxzaXplPlxkKyl9JCcsIHJlLkFTQ0lJKQogTWFwQ1JMRiA9IHJlLmNvbXBpbGUoYnInXHJcbnxccnxcbicpCi1SZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT5bXlxdXSopKT9cXScpCisjIFdlIG5vIGxvbmdlciBleGNsdWRlIHRoZSAnXScgY2hhcmFjdGVyIGZyb20gdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgY29kZSwgZXZlbiB0aG91Z2ggaXQgdmlvbGF0ZXMgdGhlIFJGQy4gIFBvcHVsYXIgSU1BUCBzZXJ2ZXJzIHN1Y2ggYXMgR21haWwKKyMgYWxsb3cgZmxhZ3Mgd2l0aCAnXScsIGFuZCB0aGVyZSBhcmUgcHJvZ3JhbXMgKGluY2x1ZGluZyBpbWFwbGliISkgdGhhdCBjYW4KKyMgcHJvZHVjZSB0aGVtLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIGlmIHRoZSAndGV4dCcgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgaW5jbHVkZXMgYSAnXScgd2UnbGwgcGFyc2UgdGhlIHJlc3BvbnNlIHdyb25nICh3aGljaCBpcyB0aGUgcG9pbnQgb2YgdGhlIFJGQworIyByZXN0cmljdGlvbikuICBIb3dldmVyLCB0aGF0IHNlZW1zIGxlc3MgbGlrZWx5IHRvIGJlIGEgcHJvYmxlbSBpbiBwcmFjdGljZQorIyB0aGFuIGJlaW5nIHVuYWJsZSB0byBjb3JyZWN0bHkgcGFyc2UgZmxhZ3MgdGhhdCBpbmNsdWRlICddJyBjaGFycywgd2hpY2gKKyMgd2FzIHJlcG9ydGVkIGFzIGEgcmVhbC13b3JsZCBwcm9ibGVtIGluIGlzc3VlICMyMTgxNS4KK1Jlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/XF0nKQogVW50YWdnZWRfcmVzcG9uc2UgPSByZS5jb21waWxlKGJyJ1wqICg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT4uKikpPycpCiAjIFVudGFnZ2VkX3N0YXR1cyBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZSgKQEAgLTEyNCw3ICsxMzIsNyBAQAogCiBjbGFzcyBJTUFQNDoKIAotICAgICIiIklNQVA0IGNsaWVudCBjbGFzcy4KKyAgICByIiIiSU1BUDQgY2xpZW50IGNsYXNzLgogCiAgICAgSW5zdGFudGlhdGUgd2l0aDogSU1BUDQoW2hvc3RbLCBwb3J0XV0pCiAKQEAgLTEyNTksNyArMTI2NywxMCBAQAogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNzbF9jb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQotCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gc3NsX2NvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgTm9uZToKQEAgLTE1MjcsNyArMTUzOCw3IEBACiAgICAgKCdzZWxlY3QnLCAoJy90bXAveXl6IDInLCkpLAogICAgICgnc2VhcmNoJywgKE5vbmUsICdTVUJKRUNUJywgJ3Rlc3QnKSksCiAgICAgKCdmZXRjaCcsICgnMScsICcoRkxBR1MgSU5URVJOQUxEQVRFIFJGQzgyMiknKSksCi0gICAgKCdzdG9yZScsICgnMScsICdGTEFHUycsICcoXERlbGV0ZWQpJykpLAorICAgICgnc3RvcmUnLCAoJzEnLCAnRkxBR1MnLCByJyhcRGVsZXRlZCknKSksCiAgICAgKCduYW1lc3BhY2UnLCAoKSksCiAgICAgKCdleHB1bmdlJywgKCkpLAogICAgICgncmVjZW50JywgKCkpLApkaWZmIC0tZ2l0IGEvTGliL2ltZ2hkci5weSBiL0xpYi9pbWdoZHIucHkKaW5kZXggYjI2NzkyNS4uNzZlOGFiYiAxMDA2NDQKLS0tIGEvTGliL2ltZ2hkci5weQorKysgYi9MaWIvaW1naGRyLnB5CkBAIC0xLDUgKzEsNyBAQAogIiIiUmVjb2duaXplIGltYWdlIGZpbGUgZm9ybWF0cyBiYXNlZCBvbiB0aGVpciBmaXJzdCBmZXcgYnl0ZXMuIiIiCiAKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCisKIF9fYWxsX18gPSBbIndoYXQiXQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKQEAgLTEwLDcgKzEyLDcgQEAKICAgICBmID0gTm9uZQogICAgIHRyeToKICAgICAgICAgaWYgaCBpcyBOb25lOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCBzdHIpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBQYXRoTGlrZSkpOgogICAgICAgICAgICAgICAgIGYgPSBvcGVuKGZpbGUsICdyYicpCiAgICAgICAgICAgICAgICAgaCA9IGYucmVhZCgzMikKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQppbmRleCBlMjY0MzkxLi43ODFmZjIzIDEwMDY0NAotLS0gYS9MaWIvaW1wLnB5CisrKyBiL0xpYi9pbXAucHkKQEAgLTMwLDcgKzMwLDcgQEAKIAogd2FybmluZ3Mud2FybigidGhlIGltcCBtb2R1bGUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliOyAiCiAgICAgICAgICAgICAgICJzZWUgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIGFsdGVybmF0aXZlIHVzZXMiLAotICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogCiAjIERFUFJFQ0FURUQKIFNFQVJDSF9FUlJPUiA9IDAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQppbmRleCA5ZWVjYmZlLi5hNTMxYTAzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CkBAIC0zNiwyMyArMzYsNiBAQAogICAgIHJldHVybiB0eXBlKHN5cykobmFtZSkKIAogCi1jbGFzcyBfTWFuYWdlUmVsb2FkOgotCi0gICAgIiIiTWFuYWdlcyB0aGUgcG9zc2libGUgY2xlYW4tdXAgb2Ygc3lzLm1vZHVsZXMgZm9yIGxvYWRfbW9kdWxlKCkuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLl9pc19yZWxvYWQgPSBzZWxmLl9uYW1lIGluIHN5cy5tb2R1bGVzCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBpZiBhbnkoYXJnIGlzIG5vdCBOb25lIGZvciBhcmcgaW4gYXJncykgYW5kIG5vdCBzZWxmLl9pc19yZWxvYWQ6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW3NlbGYuX25hbWVdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCiAjIE1vZHVsZS1sZXZlbCBsb2NraW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgQSBkaWN0IG1hcHBpbmcgbW9kdWxlIG5hbWVzIHRvIHdlYWtyZWZzIG9mIF9Nb2R1bGVMb2NrIGluc3RhbmNlcwpAQCAtMjcwLDcgKzI1Myw3IEBACiAjIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGRlZiBfbW9kdWxlX3JlcHIobW9kdWxlKToKLSAgICAjIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNb2R1bGVUeXBlX19yZXByX18oKS4KKyAgICAjIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNb2R1bGVUeXBlLl9fcmVwcl9fKCkuCiAgICAgbG9hZGVyID0gZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkKICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ21vZHVsZV9yZXByJyk6CiAgICAgICAgICMgQXMgc29vbiBhcyBCdWlsdGluSW1wb3J0ZXIsIEZyb3plbkltcG9ydGVyLCBhbmQgTmFtZXNwYWNlTG9hZGVyCkBAIC01NzYsOSArNTU5LDggQEAKICAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKICAgICBlbGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICBfd2FybmluZ3Mud2Fybignc3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgbG9hZGVycyBkZWZpbmluZyBleGVjX21vZHVsZSgpICcKLSAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJywKLSAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdsb2FkZXJzIHRoYXQgZGVmaW5lIGV4ZWNfbW9kdWxlKCkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBhbHNvIGRlZmluZSBjcmVhdGVfbW9kdWxlKCknKQogICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICBtb2R1bGUgPSBfbmV3X21vZHVsZShzcGVjLm5hbWUpCiAgICAgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSkKQEAgLTYwMyw3ICs1ODUsNyBAQAogCiAjIFVzZWQgYnkgaW1wb3J0bGliLnJlbG9hZCgpIGFuZCBfbG9hZF9tb2R1bGVfc2hpbSgpLgogZGVmIF9leGVjKHNwZWMsIG1vZHVsZSk6Ci0gICAgIiIiRXhlY3V0ZSB0aGUgc3BlYyBpbiBhbiBleGlzdGluZyBtb2R1bGUncyBuYW1lc3BhY2UuIiIiCisgICAgIiIiRXhlY3V0ZSB0aGUgc3BlYydzIHNwZWNpZmllZCBtb2R1bGUgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgogICAgIG5hbWUgPSBzcGVjLm5hbWUKICAgICBfaW1wLmFjcXVpcmVfbG9jaygpCiAgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6CkBAIC04NzcsMTQgKzg1OSwyMSBAQAogCiAKIGRlZiBfZmluZF9zcGVjKG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKLSAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgotICAgIGlmIHN5cy5tZXRhX3BhdGggaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICIiIkZpbmQgYSBtb2R1bGUncyBzcGVjLiIiIgorICAgIG1ldGFfcGF0aCA9IHN5cy5tZXRhX3BhdGgKKyAgICBpZiBtZXRhX3BhdGggaXMgTm9uZToKKyAgICAgICAgIyBQeUltcG9ydF9DbGVhbnVwKCkgaXMgcnVubmluZyBvciBoYXMgYmVlbiBjYWxsZWQuCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJzeXMubWV0YV9wYXRoIGlzIE5vbmUsIFB5dGhvbiBpcyBsaWtlbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAic2h1dHRpbmcgZG93biIpCisKKyAgICBpZiBub3QgbWV0YV9wYXRoOgogICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisKICAgICAjIFdlIGNoZWNrIHN5cy5tb2R1bGVzIGhlcmUgZm9yIHRoZSByZWxvYWQgY2FzZS4gIFdoaWxlIGEgcGFzc2VkLWluCiAgICAgIyB0YXJnZXQgd2lsbCB1c3VhbGx5IGluZGljYXRlIGEgcmVsb2FkIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSwgd2hlcmVhcwogICAgICMgc3lzLm1vZHVsZXMgcHJvdmlkZXMgb25lLgogICAgIGlzX3JlbG9hZCA9IG5hbWUgaW4gc3lzLm1vZHVsZXMKLSAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgZm9yIGZpbmRlciBpbiBtZXRhX3BhdGg6CiAgICAgICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZmluZF9zcGVjID0gZmluZGVyLmZpbmRfc3BlYwpAQCAtOTI1LDYgKzkxNCw5IEBACiAgICAgaWYgbGV2ZWwgPiAwOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYWNrYWdlLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nJykKKyAgICAgICAgZWxpZiBub3QgcGFja2FnZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IHdpdGggbm8ga25vd24gcGFyZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWNrYWdlJykKICAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIG1zZyA9ICgnUGFyZW50IG1vZHVsZSB7IXJ9IG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICcKICAgICAgICAgICAgICAgICAgICAnaW1wb3J0JykKQEAgLTk1MCwxMCArOTQyLDEwIEBACiAgICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnKS5mb3JtYXQobmFtZSwgcGFyZW50KQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCiAgICAgc3BlYyA9IF9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgIGVsc2U6CiAgICAgICAgIG1vZHVsZSA9IF9sb2FkX3VubG9ja2VkKHNwZWMpCiAgICAgaWYgcGFyZW50OgpAQCAtOTg5LDEwICs5ODEsMTEgQEAKICAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQogICAgICAgICBtZXNzYWdlID0gKCdpbXBvcnQgb2Yge30gaGFsdGVkOyAnCiAgICAgICAgICAgICAgICAgICAgJ05vbmUgaW4gc3lzLm1vZHVsZXMnLmZvcm1hdChuYW1lKSkKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1uYW1lKQorICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKICAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCiAgICAgcmV0dXJuIG1vZHVsZQogCisKIGRlZiBfaGFuZGxlX2Zyb21saXN0KG1vZHVsZSwgZnJvbWxpc3QsIGltcG9ydF8pOgogICAgICIiIkZpZ3VyZSBvdXQgd2hhdCBfX2ltcG9ydF9fIHNob3VsZCByZXR1cm4uCiAKQEAgLTEwMTQsMTMgKzEwMDcsMTIgQEAKICAgICAgICAgICAgICAgICBmcm9tX25hbWUgPSAne30ue30nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGltcG9ydF8sIGZyb21fbmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBNb2R1bGVOb3RGb3VuZEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBkaWN0YXRlcyB3ZSBpZ25vcmUgZmFpbGVkCiAgICAgICAgICAgICAgICAgICAgICMgaW1wb3J0cyB0cmlnZ2VyZWQgYnkgZnJvbWxpc3QgZm9yIG1vZHVsZXMgdGhhdCBkb24ndAogICAgICAgICAgICAgICAgICAgICAjIGV4aXN0LgotICAgICAgICAgICAgICAgICAgICBpZiBzdHIoZXhjKS5zdGFydHN3aXRoKF9FUlJfTVNHX1BSRUZJWCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gZnJvbV9uYW1lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICByZXR1cm4gbW9kdWxlCiAKQEAgLTEwMzMsNyArMTAyNSwxOSBAQAogCiAgICAgIiIiCiAgICAgcGFja2FnZSA9IGdsb2JhbHMuZ2V0KCdfX3BhY2thZ2VfXycpCi0gICAgaWYgcGFja2FnZSBpcyBOb25lOgorICAgIHNwZWMgPSBnbG9iYWxzLmdldCgnX19zcGVjX18nKQorICAgIGlmIHBhY2thZ2UgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIHBhY2thZ2UgIT0gc3BlYy5wYXJlbnQ6CisgICAgICAgICAgICBfd2FybmluZ3Mud2FybigiX19wYWNrYWdlX18gIT0gX19zcGVjX18ucGFyZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiKHtwYWNrYWdlIXJ9ICE9IHtzcGVjLnBhcmVudCFyfSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0V2FybmluZywgc3RhY2tsZXZlbD0zKQorICAgICAgICByZXR1cm4gcGFja2FnZQorICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIHNwZWMucGFyZW50CisgICAgZWxzZToKKyAgICAgICAgX3dhcm5pbmdzLndhcm4oImNhbid0IHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yIF9fcGFja2FnZV9fLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgb24gX19uYW1lX18gYW5kIF9fcGF0aF9fIiwKKyAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0V2FybmluZywgc3RhY2tsZXZlbD0zKQogICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQogICAgICAgICBpZiAnX19wYXRoX18nIG5vdCBpbiBnbG9iYWxzOgogICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKaW5kZXggZTU0ZDY5MS4uNWNiNThhYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQpAQCAtMTM3LDEwICsxMzcsNiBAQAogIyBhIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKICMgQXBwbGUgTVBXIGNvbXBpbGVyIHN3YXBzIHRoZWlyIHZhbHVlcywgYm90Y2hpbmcgc3RyaW5nIGNvbnN0YW50cy4KICMKLSMgVGhlIG1hZ2ljIG51bWJlcnMgbXVzdCBiZSBzcGFjZWQgYXBhcnQgYXQgbGVhc3QgMiB2YWx1ZXMsIGFzIHRoZQotIyAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi0jIG9kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgotIwogIyBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgogIyBUaGUgY3VycmVudCB3b3JraW5nIHNjaGVtZSBpcyB0byBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIHZhbHVlIGJ5CiAjIDEwLgpAQCAtMjMxLDYgKzIyNywxOCBAQAogIyAgICAgUHl0aG9uIDMuNWIyICAzMzQwIChmaXggZGljdGlvbmFyeSBkaXNwbGF5IGV2YWx1YXRpb24gb3JkZXIgIzExMjA1KQogIyAgICAgUHl0aG9uIDMuNWIyICAzMzUwIChhZGQgR0VUX1lJRUxEX0ZST01fSVRFUiBvcGNvZGUgIzI0NDAwKQogIyAgICAgUHl0aG9uIDMuNS4yICAzMzUxIChmaXggQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlICMyNzI4NikKKyMgICAgIFB5dGhvbiAzLjZhMCAgMzM2MCAoYWRkIEZPUk1BVF9WQUxVRSBvcGNvZGUgIzI1NDgzCisjICAgICBQeXRob24gMy42YTAgIDMzNjEgKGxpbmVubyBkZWx0YSBvZiBjb2RlLmNvX2xub3RhYiBiZWNvbWVzIHNpZ25lZCkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MCAoMTYgYml0IHdvcmRjb2RlKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcxIChhZGQgQlVJTERfQ09OU1RfS0VZX01BUCBvcGNvZGUgIzI3MTQwKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcyIChNQUtFX0ZVTkNUSU9OIHNpbXBsaWZpY2F0aW9uLCByZW1vdmUgTUFLRV9DTE9TVVJFCisjICAgICAgICAgICAgICAgICAgICAgICAgICMyNzA5NSkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3MyAoYWRkIEJVSUxEX1NUUklORyBvcGNvZGUgIzI3MDc4KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc1IChhZGQgU0VUVVBfQU5OT1RBVElPTlMgYW5kIFNUT1JFX0FOTk9UQVRJT04gb3Bjb2RlcworIyAgICAgICAgICAgICAgICAgICAgICAgICAjMjc5ODUpCisjICAgICBQeXRob24gMy42YjEgIDMzNzYgKHNpbXBsaWZ5IENBTExfRlVOQ1RJT05zICYgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwpCisjICAgICBQeXRob24gMy42YjEgIDMzNzcgKHNldCBfX2NsYXNzX18gY2VsbCBmcm9tIHR5cGUuX19uZXdfXyAjMjM3MjIpCisjICAgICBQeXRob24gMy42YjIgIDMzNzggKGFkZCBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMICMyODI1NykKICMKICMgTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubwogIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQpAQCAtMjM5LDcgKzI0Nyw3IEBACiAjIFdoZW5ldmVyIE1BR0lDX05VTUJFUiBpcyBjaGFuZ2VkLCB0aGUgcmFuZ2VzIGluIHRoZSBtYWdpY192YWx1ZXMgYXJyYXkKICMgaW4gUEMvbGF1bmNoZXIuYyBtdXN0IGFsc28gYmUgdXBkYXRlZC4KIAotTUFHSUNfTlVNQkVSID0gKDMzNTEpLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKK01BR0lDX05VTUJFUiA9ICgzMzc4KS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCiBfUkFXX01BR0lDX05VTUJFUiA9IGludC5mcm9tX2J5dGVzKE1BR0lDX05VTUJFUiwgJ2xpdHRsZScpICAjIEZvciBpbXBvcnQuYwogCiBfUFlDQUNIRSA9ICdfX3B5Y2FjaGVfXycKQEAgLTI3Niw2ICsyODQsNyBAQAogICAgICAgICAgICAgbWVzc2FnZSA9ICdkZWJ1Z19vdmVycmlkZSBvciBvcHRpbWl6YXRpb24gbXVzdCBiZSBzZXQgdG8gTm9uZScKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtZXNzYWdlKQogICAgICAgICBvcHRpbWl6YXRpb24gPSAnJyBpZiBkZWJ1Z19vdmVycmlkZSBlbHNlIDEKKyAgICBwYXRoID0gX29zLmZzcGF0aChwYXRoKQogICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgIGJhc2UsIHNlcCwgcmVzdCA9IHRhaWwucnBhcnRpdGlvbignLicpCiAgICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwpAQCAtMzA2LDYgKzMxNSw3IEBACiAgICAgIiIiCiAgICAgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQorICAgIHBhdGggPSBfb3MuZnNwYXRoKHBhdGgpCiAgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCiAgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCiAgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKQEAgLTM3MSwxNCArMzgxLDYgQEAKICAgICByZXR1cm4gbW9kZQogCiAKLWRlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6Ci0gICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgotICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKLSAgICAgICAgaWYgbm90IG1lc3NhZ2Uuc3RhcnRzd2l0aCgoJyMnLCAnaW1wb3J0ICcpKToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnIyAnICsgbWVzc2FnZQotICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKLQotCiBkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKICAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG1vZHVsZSBiZWluZyByZXF1ZXN0ZWQgbWF0Y2hlcyB0aGUgb25lIHRoZQogICAgIGxvYWRlciBjYW4gaGFuZGxlLgpAQCAtNDQ4LDE1ICs0NTAsMTUgQEAKICAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KICAgICBpZiBtYWdpYyAhPSBNQUdJQ19OVU1CRVI6CiAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQobmFtZSwgbWFnaWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICAgZWxpZiBsZW4ocmF3X3RpbWVzdGFtcCkgIT0gNDoKICAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHRpbWVzdGFtcCBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKICAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKICAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHNpemUgb2Ygc291cmNlIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQogICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKICAgICAgICAgdHJ5OgpAQCAtNDY2LDcgKzQ2OCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKQEAgLTQ4Myw3ICs0ODUsNyBAQAogICAgICIiIkNvbXBpbGUgYnl0ZWNvZGUgYXMgcmV0dXJuZWQgYnkgX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcigpLiIiIgogICAgIGNvZGUgPSBtYXJzaGFsLmxvYWRzKGRhdGEpCiAgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBfY29kZV90eXBlKToKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIF9pbXAuX2ZpeF9jb19maWxlbmFtZShjb2RlLCBzb3VyY2VfcGF0aCkKICAgICAgICAgcmV0dXJuIGNvZGUKQEAgLTU0MSw2ICs1NDMsOCBAQAogICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBsb2NhdGlvbiA9IF9vcy5mc3BhdGgobG9jYXRpb24pCiAKICAgICAjIElmIHRoZSBsb2NhdGlvbiBpcyBvbiB0aGUgZmlsZXN5c3RlbSwgYnV0IGRvZXNuJ3QgYWN0dWFsbHkgZXhpc3QsCiAgICAgIyB3ZSBjb3VsZCByZXR1cm4gTm9uZSBoZXJlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIGxvY2F0aW9uIGlzIG5vdApAQCAtNjEwLDcgKzYxNCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCiAgICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgogICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gX3dpbnJlZy5RdWVyeVZhbHVlKGhrZXksICcnKQpAQCAtNjczLDYgKzY3Nyw3IEBACiAgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCiAKICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUaGlzIG1vZHVsZSBpcyBkZXByZWNhdGVkLiIiIgogICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKIAogCkBAIC03NjYsMjEgKzc3MSwyMSBAQAogICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbXBpbGVfYnl0ZWNvZGUoYnl0ZXNfZGF0YSwgbmFtZT1mdWxsbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoPWJ5dGVjb2RlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGg9c291cmNlX3BhdGgpCiAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5zb3VyY2VfdG9fY29kZShzb3VyY2VfYnl0ZXMsIHNvdXJjZV9wYXRoKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9Jywgc291cmNlX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQogICAgICAgICBpZiAobm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGFuZCBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICBkYXRhID0gX2NvZGVfdG9fYnl0ZWNvZGUoY29kZV9vYmplY3QsIHNvdXJjZV9tdGltZSwKICAgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZV9ieXRlcykpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfYnl0ZWNvZGUoc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd3cm90ZSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIGNvZGVfb2JqZWN0CkBAIC04NjAsMTQgKzg2NSwxNiBAQAogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgICMgQ291bGQgYmUgYSBwZXJtaXNzaW9uIGVycm9yLCByZWFkLW9ubHkgZmlsZXN5c3RlbToganVzdCBmb3JnZXQKICAgICAgICAgICAgICAgICAjIGFib3V0IHdyaXRpbmcgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGFyZW50LCBleGMpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQsIGV4YykKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBfbW9kZSkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NyZWF0ZWQgeyFyfScsIHBhdGgpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NyZWF0ZWQgeyFyfScsIHBhdGgpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICMgU2FtZSBhcyBhYm92ZToganVzdCBkb24ndCB3cml0ZSB0aGUgYnl0ZWNvZGUuCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLCBleGMpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjKQogCiAKIGNsYXNzIFNvdXJjZWxlc3NGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgpAQCAtOTEyLDE0ICs5MTksMTQgQEAKICAgICAgICAgIiIiQ3JlYXRlIGFuIHVuaXRpYWxpemVkIGV4dGVuc2lvbiBtb2R1bGUiIiIKICAgICAgICAgbW9kdWxlID0gX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKAogICAgICAgICAgICAgX2ltcC5jcmVhdGVfZHluYW1pYywgc3BlYykKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBsb2FkZWQgZnJvbSB7IXJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLm5hbWUsIHNlbGYucGF0aCkKICAgICAgICAgcmV0dXJuIG1vZHVsZQogCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gZXh0ZW5zaW9uIG1vZHVsZSIiIgogICAgICAgICBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5leGVjX2R5bmFtaWMsIG1vZHVsZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGV4ZWN1dGVkIGZyb20geyFyfScsCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGV4ZWN1dGVkIGZyb20geyFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLnBhdGgpCiAKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CkBAIC05ODUsNiArOTkyLDkgQEAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX3JlY2FsY3VsYXRlKCkpCiAKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaW5kZXgsIHBhdGgpOgorICAgICAgICBzZWxmLl9wYXRoW2luZGV4XSA9IHBhdGgKKwogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCiAKQEAgLTEwMzQsNyArMTA0NCw4IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgICMgVGhlIGltcG9ydCBzeXN0ZW0gbmV2ZXIgY2FsbHMgdGhpcyBtZXRob2QuCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9Jywgc2VsZi5fcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoKQogICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKIAogCkBAIC0xMDU0LDExICsxMDY1LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCi0KLSAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KLQotICAgICAgICAiIiIKKyAgICAgICAgIiIiU2VhcmNoIHN5cy5wYXRoX2hvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLiIiIgogICAgICAgICBpZiBzeXMucGF0aF9ob29rcyBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5wYXRoX2hvb2tzOgogICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5wYXRoX2hvb2tzIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKICAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CkBAIC0xMTQwLDggKzExNDcsMTAgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yICdmdWxsbmFtZScgb24gc3lzLnBhdGggb3IgJ3BhdGgnLgorCisgICAgICAgIFRoZSBzZWFyY2ggaXMgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgorICAgICAgICAiIiIKICAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCiAgICAgICAgIHNwZWMgPSBjbHMuX2dldF9zcGVjKGZ1bGxuYW1lLCBwYXRoLCB0YXJnZXQpCkBAIC0xMjIxLDggKzEyMzAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPXNtc2wpCiAKICAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuICBSZXR1cm5zIHRoZQotICAgICAgICBtYXRjaGluZyBzcGVjLCBvciBOb25lIGlmIG5vdCBmb3VuZC4iIiIKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBtYXRjaGluZyBzcGVjLCBvciBOb25lIGlmIG5vdCBmb3VuZC4KKyAgICAgICAgIiIiCiAgICAgICAgIGlzX25hbWVzcGFjZSA9IEZhbHNlCiAgICAgICAgIHRhaWxfbW9kdWxlID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCiAgICAgICAgIHRyeToKQEAgLTEyNTQsMTIgKzEyNjUsMTMgQEAKICAgICAgICAgIyBDaGVjayBmb3IgYSBmaWxlIHcvIGEgcHJvcGVyIHN1ZmZpeCBleGlzdHMuCiAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgogICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9Jy5mb3JtYXQoZnVsbF9wYXRoKSwgdmVyYm9zaXR5PTIpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScsIGZ1bGxfcGF0aCwgdmVyYm9zaXR5PTIpCiAgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CiAgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIE5vbmUsIHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHRhcmdldCkKICAgICAgICAgaWYgaXNfbmFtZXNwYWNlOgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScuZm9ybWF0KGJhc2VfcGF0aCkpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3Bvc3NpYmxlIG5hbWVzcGFjZSBmb3Ige30nLCBiYXNlX3BhdGgpCiAgICAgICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQogICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCiAgICAgICAgICAgICByZXR1cm4gc3BlYwpAQCAtMTQzMCw4ICsxNDQyLDMgQEAKICAgICBpZiBfb3MuX19uYW1lX18gPT0gJ250JzoKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoV2luZG93c1JlZ2lzdHJ5RmluZGVyKQogICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFBhdGhGaW5kZXIpCi0KLSAgICAjIFhYWCBXZSBleHBvc2UgYSBjb3VwbGUgb2YgY2xhc3NlcyBpbiBfYm9vdHN0cmFwIGZvciB0aGUgc2FrZSBvZgotICAgICMgYSBzZXR1cHRvb2xzIGJ1ZyAoaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvc2V0dXB0b29scy9pc3N1ZS8zNzgpLgotICAgIF9ib290c3RyYXBfbW9kdWxlLkZpbGVGaW5kZXIgPSBGaWxlRmluZGVyCi0gICAgX2Jvb3RzdHJhcF9tb2R1bGUuU291cmNlRmlsZUxvYWRlciA9IFNvdXJjZUZpbGVMb2FkZXIKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQppbmRleCBlMWZhMDdhLi42YmRmMGQ0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3V0aWwucHkKKysrIGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CkBAIC0yMiw4ICsyMiw4IEBACiAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpOgogICAgICAgICByZXR1cm4gbmFtZQogICAgIGVsaWYgbm90IHBhY2thZ2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcmVsYXRpdmUgbmFtZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyhubyBsZWFkaW5nIGRvdCknLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ25vIHBhY2thZ2Ugc3BlY2lmaWVkIGZvciB7cmVwcihuYW1lKX0gJworICAgICAgICAgICAgICAgICAgICAgICAgICcocmVxdWlyZWQgZm9yIHJlbGF0aXZlIG1vZHVsZSBuYW1lcyknKQogICAgIGxldmVsID0gMAogICAgIGZvciBjaGFyYWN0ZXIgaW4gbmFtZToKICAgICAgICAgaWYgY2hhcmFjdGVyICE9ICcuJzoKQEAgLTIwNCwxMSArMjA0LDYgQEAKICAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgogCiAKLWNsYXNzIF9Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6Ci0KLSAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB0byBhbGxvdyBfX2NsYXNzX18gbWFuaXB1bGF0aW9uLiIiIgotCi0KIGNsYXNzIF9MYXp5TW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgogCiAgICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgd2hpY2ggdHJpZ2dlcnMgbG9hZGluZyB1cG9uIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCkBAIC0yMTgsMTMgKzIxMywxNCBAQAogICAgICAgICAjIEFsbCBtb2R1bGUgbWV0YWRhdGEgbXVzdCBiZSBnYXJuZXJlZCBmcm9tIF9fc3BlY19fIGluIG9yZGVyIHRvIGF2b2lkCiAgICAgICAgICMgdXNpbmcgbXV0YXRlZCB2YWx1ZXMuCiAgICAgICAgICMgU3RvcCB0cmlnZ2VyaW5nIHRoaXMgbWV0aG9kLgotICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IF9Nb2R1bGUKKyAgICAgICAgc2VsZi5fX2NsYXNzX18gPSB0eXBlcy5Nb2R1bGVUeXBlCiAgICAgICAgICMgR2V0IHRoZSBvcmlnaW5hbCBuYW1lIHRvIG1ha2Ugc3VyZSBubyBvYmplY3Qgc3Vic3RpdHV0aW9uIG9jY3VycmVkCiAgICAgICAgICMgaW4gc3lzLm1vZHVsZXMuCiAgICAgICAgIG9yaWdpbmFsX25hbWUgPSBzZWxmLl9fc3BlY19fLm5hbWUKICAgICAgICAgIyBGaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIHdlcmUgbXV0YXRlZCBiZXR3ZWVuIHRoZSBjcmVhdGlvbgogICAgICAgICAjIG9mIHRoZSBtb2R1bGUgYW5kIG5vdy4KLSAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlCisgICAgICAgIGF0dHJzX3RoZW4gPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZVsnX19kaWN0X18nXQorICAgICAgICBvcmlnaW5hbF90eXBlID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGVbJ19fY2xhc3NfXyddCiAgICAgICAgIGF0dHJzX25vdyA9IHNlbGYuX19kaWN0X18KICAgICAgICAgYXR0cnNfdXBkYXRlZCA9IHt9CiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGF0dHJzX25vdy5pdGVtcygpOgpAQCAtMjM5LDkgKzIzNSw5IEBACiAgICAgICAgICMgb2JqZWN0IHdhcyBwdXQgaW50byBzeXMubW9kdWxlcy4KICAgICAgICAgaWYgb3JpZ2luYWxfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIGlmIGlkKHNlbGYpICE9IGlkKHN5cy5tb2R1bGVzW29yaWdpbmFsX25hbWVdKToKLSAgICAgICAgICAgICAgICBtc2cgPSAoJ21vZHVsZSBvYmplY3QgZm9yIHshcn0gc3Vic3RpdHV0ZWQgaW4gc3lzLm1vZHVsZXMgJwotICAgICAgICAgICAgICAgICAgICAgICAnZHVyaW5nIGEgbGF6eSBsb2FkJykKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZy5mb3JtYXQob3JpZ2luYWxfbmFtZSkpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIm1vZHVsZSBvYmplY3QgZm9yIHtvcmlnaW5hbF9uYW1lIXJ9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vic3RpdHV0ZWQgaW4gc3lzLm1vZHVsZXMgZHVyaW5nIGEgbGF6eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvYWQiKQogICAgICAgICAjIFVwZGF0ZSBhZnRlciBsb2FkaW5nIHNpbmNlIHRoYXQncyB3aGF0IHdvdWxkIGhhcHBlbiBpbiBhbiBlYWdlcgogICAgICAgICAjIGxvYWRpbmcgc2l0dWF0aW9uLgogICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShhdHRyc191cGRhdGVkKQpAQCAtMjc1LDggKzI3MSw3IEBACiAgICAgICAgIHNlbGYubG9hZGVyID0gbG9hZGVyCiAKICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbW9kdWxlIHdoaWNoIGNhbiBoYXZlIGl0cyBfX2NsYXNzX18gbWFuaXB1bGF0ZWQuIiIiCi0gICAgICAgIHJldHVybiBfTW9kdWxlKHNwZWMubmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKIAogICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAiIiJNYWtlIHRoZSBtb2R1bGUgbG9hZCBsYXppbHkuIiIiCkBAIC0yODYsNSArMjgxLDggQEAKICAgICAgICAgIyBvbiBhbiBvYmplY3Qgd291bGQgaGF2ZSB0cmlnZ2VyZWQgdGhlIGxvYWQsCiAgICAgICAgICMgZS5nLiBgYG1vZHVsZS5fX3NwZWNfXy5sb2FkZXIgPSBOb25lYGAgd291bGQgdHJpZ2dlciBhIGxvYWQgZnJvbQogICAgICAgICAjIHRyeWluZyB0byBhY2Nlc3MgbW9kdWxlLl9fc3BlY19fLgotICAgICAgICBtb2R1bGUuX19zcGVjX18ubG9hZGVyX3N0YXRlID0gbW9kdWxlLl9fZGljdF9fLmNvcHkoKQorICAgICAgICBsb2FkZXJfc3RhdGUgPSB7fQorICAgICAgICBsb2FkZXJfc3RhdGVbJ19fZGljdF9fJ10gPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIGxvYWRlcl9zdGF0ZVsnX19jbGFzc19fJ10gPSBtb2R1bGUuX19jbGFzc19fCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBsb2FkZXJfc3RhdGUKICAgICAgICAgbW9kdWxlLl9fY2xhc3NfXyA9IF9MYXp5TW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW5zcGVjdC5weSBiL0xpYi9pbnNwZWN0LnB5CmluZGV4IDBmZDAzODIuLjI5MjNkNmQgMTAwNjQ0Ci0tLSBhL0xpYi9pbnNwZWN0LnB5CisrKyBiL0xpYi9pbnNwZWN0LnB5CkBAIC0xNiw3ICsxNiw3IEBACiAgICAgZ2V0bW9kdWxlKCkgLSBkZXRlcm1pbmUgdGhlIG1vZHVsZSB0aGF0IGFuIG9iamVjdCBjYW1lIGZyb20KICAgICBnZXRjbGFzc3RyZWUoKSAtIGFycmFuZ2UgY2xhc3NlcyBzbyBhcyB0byByZXByZXNlbnQgdGhlaXIgaGllcmFyY2h5CiAKLSAgICBnZXRhcmdzcGVjKCksIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCisgICAgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKICAgICBnZXRmdWxsYXJnc3BlYygpIC0gc2FtZSwgd2l0aCBzdXBwb3J0IGZvciBQeXRob24gMyBmZWF0dXJlcwogICAgIGZvcm1hdGFyZ3NwZWMoKSwgZm9ybWF0YXJndmFsdWVzKCkgLSBmb3JtYXQgYW4gYXJndW1lbnQgc3BlYwogICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKQEAgLTE4NSw2ICsxODUsMTMgQEAKICAgICByZXR1cm4gYm9vbCgoaXNmdW5jdGlvbihvYmplY3QpIG9yIGlzbWV0aG9kKG9iamVjdCkpIGFuZAogICAgICAgICAgICAgICAgIG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0NPUk9VVElORSkKIAorZGVmIGlzYXN5bmNnZW5mdW5jdGlvbihvYmplY3QpOgorICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCisgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKQorCitkZWYgaXNhc3luY2dlbihvYmplY3QpOgorICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQXN5bmNHZW5lcmF0b3JUeXBlKQorCiBkZWYgaXNnZW5lcmF0b3Iob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgZ2VuZXJhdG9yLgogCkBAIC02MjMsMjMgKzYzMCw2IEBACiAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgJwogICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUgb2JqZWN0Jy5mb3JtYXQob2JqZWN0KSkKIAotTW9kdWxlSW5mbyA9IG5hbWVkdHVwbGUoJ01vZHVsZUluZm8nLCAnbmFtZSBzdWZmaXggbW9kZSBtb2R1bGVfdHlwZScpCi0KLWRlZiBnZXRtb2R1bGVpbmZvKHBhdGgpOgotICAgICIiIkdldCB0aGUgbW9kdWxlIG5hbWUsIHN1ZmZpeCwgbW9kZSwgYW5kIG1vZHVsZSB0eXBlIGZvciBhIGdpdmVuIGZpbGUuIiIiCi0gICAgd2FybmluZ3Mud2FybignaW5zcGVjdC5nZXRtb2R1bGVpbmZvKCkgaXMgZGVwcmVjYXRlZCcsIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgIDIpCi0gICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKLSAgICBzdWZmaXhlcyA9IFsoLWxlbihzdWZmaXgpLCBzdWZmaXgsIG1vZGUsIG10eXBlKQotICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCldCi0gICAgc3VmZml4ZXMuc29ydCgpICMgdHJ5IGxvbmdlc3Qgc3VmZml4ZXMgZmlyc3QsIGluIGNhc2UgdGhleSBvdmVybGFwCi0gICAgZm9yIG5lZ2xlbiwgc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBzdWZmaXhlczoKLSAgICAgICAgaWYgZmlsZW5hbWVbbmVnbGVuOl0gPT0gc3VmZml4OgotICAgICAgICAgICAgcmV0dXJuIE1vZHVsZUluZm8oZmlsZW5hbWVbOm5lZ2xlbl0sIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCi0KIGRlZiBnZXRtb2R1bGVuYW1lKHBhdGgpOgogICAgICIiIlJldHVybiB0aGUgbW9kdWxlIG5hbWUgZm9yIGEgZ2l2ZW4gZmlsZSwgb3IgTm9uZS4iIiIKICAgICBmbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKQEAgLTEwNjAsOCArMTA1MCw2IEBACiAgICAgJ2t3b25seWRlZmF1bHRzJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBuYW1lcyBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuCiAgICAgJ2Fubm90YXRpb25zJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudCBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAotICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIGdldGFyZ3NwZWMoKS4KLQogICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZC4KICAgICAiIiIKIApAQCAtMTE3NCw4ICsxMTYyLDcgQEAKICAgICAgICAgICAgICAgICAgIGZvcm1hdHZhbHVlPWxhbWJkYSB2YWx1ZTogJz0nICsgcmVwcih2YWx1ZSksCiAgICAgICAgICAgICAgICAgICBmb3JtYXRyZXR1cm5zPWxhbWJkYSB0ZXh0OiAnIC0+ICcgKyB0ZXh0LAogICAgICAgICAgICAgICAgICAgZm9ybWF0YW5ub3RhdGlvbj1mb3JtYXRhbm5vdGF0aW9uKToKLSAgICAiIiJGb3JtYXQgYW4gYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgZ2V0YXJnc3BlYwotICAgIG9yIGdldGZ1bGxhcmdzcGVjLgorICAgICIiIkZvcm1hdCBhbiBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieSBnZXRmdWxsYXJnc3BlYy4KIAogICAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsCiAgICAga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zKS4gIFRoZSBvdGhlciBmaXZlIGFyZ3VtZW50cwpAQCAtMjQxNyw2ICsyNDA0LDIwIEBACiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgbXVzdCBiZSBhIHN0ciwgbm90IGEgeyFyfSIuZm9ybWF0KG5hbWUpKQogCisgICAgICAgIGlmIG5hbWVbMF0gPT0gJy4nIGFuZCBuYW1lWzE6XS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAjIFRoZXNlIGFyZSBpbXBsaWNpdCBhcmd1bWVudHMgZ2VuZXJhdGVkIGJ5IGNvbXByZWhlbnNpb25zLiBJbgorICAgICAgICAgICAgIyBvcmRlciB0byBwcm92aWRlIGEgZnJpZW5kbGllciBpbnRlcmZhY2UgdG8gdXNlcnMsIHdlIHJlY2FzdAorICAgICAgICAgICAgIyB0aGVpciBuYW1lIGFzICJpbXBsaWNpdE4iIGFuZCB0cmVhdCB0aGVtIGFzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgICAgICMgU2VlIGlzc3VlIDE5NjExLgorICAgICAgICAgICAgaWYga2luZCAhPSBfUE9TSVRJT05BTF9PUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdpbXBsaWNpdCBhcmd1bWVudHMgbXVzdCBiZSBwYXNzZWQgaW4gYXMge30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QT1NJVElPTkFMX09SX0tFWVdPUkQKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2tpbmQgPSBfUE9TSVRJT05BTF9PTkxZCisgICAgICAgICAgICBuYW1lID0gJ2ltcGxpY2l0e30nLmZvcm1hdChuYW1lWzE6XSkKKwogICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnLmZvcm1hdChuYW1lKSkKIApkaWZmIC0tZ2l0IGEvTGliL2lvLnB5IGIvTGliL2lvLnB5CmluZGV4IGUwM2RiOTcuLjk2OGVlNTAgMTAwNjQ0Ci0tLSBhL0xpYi9pby5weQorKysgYi9MaWIvaW8ucHkKQEAgLTkwLDMgKzkwLDEwIEBACiBmb3Iga2xhc3MgaW4gKFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyKToKICAgICBUZXh0SU9CYXNlLnJlZ2lzdGVyKGtsYXNzKQogZGVsIGtsYXNzCisKK3RyeToKKyAgICBmcm9tIF9pbyBpbXBvcnQgX1dpbmRvd3NDb25zb2xlSU8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIFJhd0lPQmFzZS5yZWdpc3RlcihfV2luZG93c0NvbnNvbGVJTykKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5CmluZGV4IDFmOTAwNTguLjIwZjMzY2IgMTAwNjQ0Ci0tLSBhL0xpYi9pcGFkZHJlc3MucHkKKysrIGIvTGliL2lwYWRkcmVzcy5weQpAQCAtNjM2LDEyICs2MzYsMTIgQEAKICAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCiAgICAgICAgIGlmIG4gPj0gMDoKICAgICAgICAgICAgIGlmIG5ldHdvcmsgKyBuID4gYnJvYWRjYXN0OgotICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCdhZGRyZXNzIG91dCBvZiByYW5nZScpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhuZXR3b3JrICsgbikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG4gKz0gMQogICAgICAgICAgICAgaWYgYnJvYWRjYXN0ICsgbiA8IG5ldHdvcms6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ2FkZHJlc3Mgb3V0IG9mIHJhbmdlJykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKGJyb2FkY2FzdCArIG4pCiAKICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKZGlmZiAtLWdpdCBhL0xpYi9qc29uL19faW5pdF9fLnB5IGIvTGliL2pzb24vX19pbml0X18ucHkKaW5kZXggZjcyYjA1OC4uOGRjYzY3OCAxMDA2NDQKLS0tIGEvTGliL2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL2pzb24vX19pbml0X18ucHkKQEAgLTEwNSw2ICsxMDUsNyBAQAogCiBmcm9tIC5kZWNvZGVyIGltcG9ydCBKU09ORGVjb2RlciwgSlNPTkRlY29kZUVycm9yCiBmcm9tIC5lbmNvZGVyIGltcG9ydCBKU09ORW5jb2RlcgoraW1wb3J0IGNvZGVjcwogCiBfZGVmYXVsdF9lbmNvZGVyID0gSlNPTkVuY29kZXIoCiAgICAgc2tpcGtleXM9RmFsc2UsCkBAIC0xMTYsNyArMTE3LDcgQEAKICAgICBkZWZhdWx0PU5vbmUsCiApCiAKLWRlZiBkdW1wKG9iaiwgZnAsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKK2RlZiBkdW1wKG9iaiwgZnAsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKICAgICAgICAgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLAogICAgICAgICBkZWZhdWx0PU5vbmUsIHNvcnRfa2V5cz1GYWxzZSwgKiprdyk6CiAgICAgIiIiU2VyaWFsaXplIGBgb2JqYGAgYXMgYSBKU09OIGZvcm1hdHRlZCBzdHJlYW0gdG8gYGBmcGBgIChhCkBAIC0xNzksNyArMTgwLDcgQEAKICAgICAgICAgZnAud3JpdGUoY2h1bmspCiAKIAotZGVmIGR1bXBzKG9iaiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAorZGVmIGR1bXBzKG9iaiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgICBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsCiAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgc29ydF9rZXlzPUZhbHNlLCAqKmt3KToKICAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCB0byBhIEpTT04gZm9ybWF0dGVkIGBgc3RyYGAuCkBAIC0yNDAsNyArMjQxLDM2IEBACiBfZGVmYXVsdF9kZWNvZGVyID0gSlNPTkRlY29kZXIob2JqZWN0X2hvb2s9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKIAogCi1kZWYgbG9hZChmcCwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCitkZWYgZGV0ZWN0X2VuY29kaW5nKGIpOgorICAgIGJzdGFydHN3aXRoID0gYi5zdGFydHN3aXRoCisgICAgaWYgYnN0YXJ0c3dpdGgoKGNvZGVjcy5CT01fVVRGMzJfQkUsIGNvZGVjcy5CT01fVVRGMzJfTEUpKToKKyAgICAgICAgcmV0dXJuICd1dGYtMzInCisgICAgaWYgYnN0YXJ0c3dpdGgoKGNvZGVjcy5CT01fVVRGMTZfQkUsIGNvZGVjcy5CT01fVVRGMTZfTEUpKToKKyAgICAgICAgcmV0dXJuICd1dGYtMTYnCisgICAgaWYgYnN0YXJ0c3dpdGgoY29kZWNzLkJPTV9VVEY4KToKKyAgICAgICAgcmV0dXJuICd1dGYtOC1zaWcnCisKKyAgICBpZiBsZW4oYikgPj0gNDoKKyAgICAgICAgaWYgbm90IGJbMF06CisgICAgICAgICAgICAjIDAwIDAwIC0tIC0tIC0gdXRmLTMyLWJlCisgICAgICAgICAgICAjIDAwIFhYIC0tIC0tIC0gdXRmLTE2LWJlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1iZScgaWYgYlsxXSBlbHNlICd1dGYtMzItYmUnCisgICAgICAgIGlmIG5vdCBiWzFdOgorICAgICAgICAgICAgIyBYWCAwMCAwMCAwMCAtIHV0Zi0zMi1sZQorICAgICAgICAgICAgIyBYWCAwMCBYWCBYWCAtIHV0Zi0xNi1sZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtbGUnIGlmIGJbMl0gb3IgYlszXSBlbHNlICd1dGYtMzItbGUnCisgICAgZWxpZiBsZW4oYikgPT0gMjoKKyAgICAgICAgaWYgbm90IGJbMF06CisgICAgICAgICAgICAjIDAwIFhYIC0gdXRmLTE2LWJlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1iZScKKyAgICAgICAgaWYgbm90IGJbMV06CisgICAgICAgICAgICAjIFhYIDAwIC0gdXRmLTE2LWxlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1sZScKKyAgICAjIGRlZmF1bHQKKyAgICByZXR1cm4gJ3V0Zi04JworCisKK2RlZiBsb2FkKGZwLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpOgogICAgICIiIkRlc2VyaWFsaXplIGBgZnBgYCAoYSBgYC5yZWFkKClgYC1zdXBwb3J0aW5nIGZpbGUtbGlrZSBvYmplY3QgY29udGFpbmluZwogICAgIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgpAQCAtMjY4LDEwICsyOTgsMTAgQEAKICAgICAgICAgcGFyc2VfY29uc3RhbnQ9cGFyc2VfY29uc3RhbnQsIG9iamVjdF9wYWlyc19ob29rPW9iamVjdF9wYWlyc19ob29rLCAqKmt3KQogCiAKLWRlZiBsb2FkcyhzLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKK2RlZiBsb2FkcyhzLCAqLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpOgotICAgICIiIkRlc2VyaWFsaXplIGBgc2BgIChhIGBgc3RyYGAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04KLSAgICBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgorICAgICIiIkRlc2VyaWFsaXplIGBgc2BgIChhIGBgc3RyYGAsIGBgYnl0ZXNgYCBvciBgYGJ5dGVhcnJheWBgIGluc3RhbmNlCisgICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KIAogICAgIGBgb2JqZWN0X2hvb2tgYCBpcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlCiAgICAgcmVzdWx0IG9mIGFueSBvYmplY3QgbGl0ZXJhbCBkZWNvZGUgKGEgYGBkaWN0YGApLiBUaGUgcmV0dXJuIHZhbHVlIG9mCkBAIC0zMDcsMTIgKzMzNywxNiBAQAogICAgIFRoZSBgYGVuY29kaW5nYGAgYXJndW1lbnQgaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KIAogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyLCBub3QgeyFyfScuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuX19jbGFzc19fLl9fbmFtZV9fKSkKLSAgICBpZiBzLnN0YXJ0c3dpdGgodSdcdWZlZmYnKToKLSAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMCkKKyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnXHVmZWZmJyk6CisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMCkKKyAgICBlbHNlOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QgeyFyfScuZm9ybWF0KHMuX19jbGFzc19fLl9fbmFtZV9fKSkKKyAgICAgICAgcyA9IHMuZGVjb2RlKGRldGVjdF9lbmNvZGluZyhzKSwgJ3N1cnJvZ2F0ZXBhc3MnKQorCiAgICAgaWYgKGNscyBpcyBOb25lIGFuZCBvYmplY3RfaG9vayBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfaW50IGlzIE5vbmUgYW5kIHBhcnNlX2Zsb2F0IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9jb25zdGFudCBpcyBOb25lIGFuZCBvYmplY3RfcGFpcnNfaG9vayBpcyBOb25lIGFuZCBub3Qga3cpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggMGYwM2YyMC4uMjQyMmM2YSAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC0yODAsNyArMjgwLDcgQEAKIAogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsCiAgICAgICAgICAgICBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKToKICAgICAgICAgIiIiYGBvYmplY3RfaG9va2BgLCBpZiBzcGVjaWZpZWQsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdApkaWZmIC0tZ2l0IGEvTGliL2pzb24vZW5jb2Rlci5weSBiL0xpYi9qc29uL2VuY29kZXIucHkKaW5kZXggZDU5NjQ4OS4uNDFhNDk3YyAxMDA2NDQKLS0tIGEvTGliL2pzb24vZW5jb2Rlci5weQorKysgYi9MaWIvanNvbi9lbmNvZGVyLnB5CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAiIiIKICAgICBpdGVtX3NlcGFyYXRvciA9ICcsICcKICAgICBrZXlfc2VwYXJhdG9yID0gJzogJwotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwKICAgICAgICAgICAgIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBzb3J0X2tleXM9RmFsc2UsCiAgICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3RvciBmb3IgSlNPTkVuY29kZXIsIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCkBAIC0xNzYsNyArMTc2LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTkVuY29kZXIuZGVmYXVsdChzZWxmLCBvKQogCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBUeXBlRXJyb3IocmVwcihvKSArICIgaXMgbm90IEpTT04gc2VyaWFsaXphYmxlIikKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJPYmplY3Qgb2YgdHlwZSAnJXMnIGlzIG5vdCBKU09OIHNlcmlhbGl6YWJsZSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgby5fX2NsYXNzX18uX19uYW1lX18pCiAKICAgICBkZWYgZW5jb2RlKHNlbGYsIG8pOgogICAgICAgICAiIiJSZXR1cm4gYSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBkYXRhIHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0IGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKaW5kZXggNjA1MDNkZC4uMmFiZDVlZSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKKysrIGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKQEAgLTU0LDEyICs1NCwxMyBAQAogc2ltcGxlX3N0bXQ6IHNtYWxsX3N0bXQgKCc7JyBzbWFsbF9zdG10KSogWyc7J10gTkVXTElORQogc21hbGxfc3RtdDogKGV4cHJfc3RtdCB8IHByaW50X3N0bXQgIHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAogICAgICAgICAgICAgIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBleGVjX3N0bXQgfCBhc3NlcnRfc3RtdCkKLWV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKK2V4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhbm5hc3NpZ24gfCBhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10KIGF1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CiAgICAgICAgICAgICAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JykKLSMgRm9yIG5vcm1hbCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCisjIEZvciBub3JtYWwgYW5kIGFubm90YXRlZCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCiBwcmludF9zdG10OiAncHJpbnQnICggWyB0ZXN0ICgnLCcgdGVzdCkqIFsnLCddIF0gfAogICAgICAgICAgICAgICAgICAgICAgICc+PicgdGVzdCBbICgnLCcgdGVzdCkrIFsnLCddIF0gKQogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CkBAIC0xNjAsNyArMTYxLDcgQEAKIAkgICAgc3Rhcl9leHByICkKIAogY29tcF9pdGVyOiBjb21wX2ZvciB8IGNvbXBfaWYKLWNvbXBfZm9yOiAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3RsaXN0X3NhZmUgW2NvbXBfaXRlcl0KK2NvbXBfZm9yOiBbQVNZTkNdICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3Rfc2FmZSBbY29tcF9pdGVyXQogY29tcF9pZjogJ2lmJyBvbGRfdGVzdCBbY29tcF9pdGVyXQogCiB0ZXN0bGlzdDE6IHRlc3QgKCcsJyB0ZXN0KSoKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkgYi9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CmluZGV4IDQ0NTAyYmYuLmJhYmU2Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlV0aWxpdHkgZnVuY3Rpb25zLCBub2RlIGNvbnN0cnVjdGlvbiBtYWNyb3MsIGV0Yy4iIiIKICMgQXV0aG9yOiBDb2xsaW4gV2ludGVyCiAKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UKLQogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLnB5dHJlZSBpbXBvcnQgTGVhZiwgTm9kZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQppbmRleCA5NjNmOTUyLi5kMzY1NWM5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQpAQCAtMzAsOSArMzAsOCBAQAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi4gaW1wb3J0IHBhdGNvbXAKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBMUGFyZW4sIFJQYXJlbiwgQXJnTGlzdCwgRG90Citmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgRG90CiBmcm9tIC4uIGltcG9ydCBmaXhlcl91dGlsCiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQppbmRleCAyYzliNzJkLi5hYjkyMWVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQpAQCAtMTAsNyArMTAsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgQ29tbWEsIE5hbWUsIENhbGwKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKaW5kZXggMzkxODg5Zi4uYmI2NzE4YyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CkBAIC0xNCw3ICsxNCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgTGlzdENvbXAsIGluX3NwZWNpYWxfY29udGV4dAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CmluZGV4IDE4YzU2MGYuLjQzOTcwOGMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CkBAIC0zMSw3ICszMSw2IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgcGFyZW50aGVzaXplCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CmluZGV4IDQ2YzdhYWYuLjhlMzQ0NjMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQpAQCAtMjAsNyArMjAsNyBAQAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4ucHlncmFtIGltcG9ydCB0b2tlbgotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHN5bXMsIE5vZGUsIExlYWYKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBzeW1zLCBOb2RlLCBMZWFmCiAKIAogZGVmIGhhc19tZXRhY2xhc3MocGFyZW50KToKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKaW5kZXggYWQ5MWEyOS4uYzIyOTU5NiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKQEAgLTMsNyArMyw3IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHN5bXMKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lCiAKIGNsYXNzIEZpeE5vbnplcm8oZml4ZXJfYmFzZS5CYXNlRml4KToKICAgICBCTV9jb21wYXRpYmxlID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CmluZGV4IGExZmUyZjUuLjg3ODAzMjIgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKQEAgLTE4LDcgKzE4LDcgQEAKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIENvbW1hLCBTdHJpbmcsIGlzX3R1cGxlCitmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgQ29tbWEsIFN0cmluZwogCiAKIHBhcmVuZF9leHByID0gcGF0Y29tcC5jb21waWxlX3BhdHRlcm4oCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKaW5kZXggZGIzNDEwNC4uNjdiZjUxZiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQpAQCAtMjAsNyArMjAsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUKIApAQCAtNDIsNyArNDEsNyBAQAogICAgICAgICAnTm90SW1wbGVtZW50ZWRUeXBlJyA6ICd0eXBlKE5vdEltcGxlbWVudGVkKScsCiAgICAgICAgICdTbGljZVR5cGUnIDogJ3NsaWNlJywKICAgICAgICAgJ1N0cmluZ1R5cGUnOiAnYnl0ZXMnLCAjIFhYWCA/Ci0gICAgICAgICdTdHJpbmdUeXBlcycgOiAnc3RyJywgIyBYWFggPworICAgICAgICAnU3RyaW5nVHlwZXMnIDogJyhzdHIsKScsICMgWFhYID8KICAgICAgICAgJ1R1cGxlVHlwZSc6ICd0dXBsZScsCiAgICAgICAgICdUeXBlVHlwZScgOiAndHlwZScsCiAgICAgICAgICdVbmljb2RlVHlwZSc6ICdzdHInLApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKaW5kZXggMTQ4MWNkOS4uNWEzNjA0OSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CkBAIC02LDcgKzYsNiBAQAogCiAjIExvY2FsIGltcG9ydHMKIGZyb20gbGliMnRvMy5maXhlcy5maXhfaW1wb3J0cyBpbXBvcnQgYWx0ZXJuYXRlcywgRml4SW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIGxpYjJ0bzMuZml4ZXJfdXRpbCBpbXBvcnQgKE5hbWUsIENvbW1hLCBGcm9tSW1wb3J0LCBOZXdsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2luZGVudGF0aW9uLCBOb2RlLCBzeW1zKQogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weSBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CmluZGV4IDA3MjgwODMuLmM1YTFhYTIgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CkBAIC04LDggKzgsNiBAQAogcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgdG8gd3JpdGUgeW91ciBvd24gcmVmYWN0b3JpbmcgdG9vbC4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIF9fYXV0aG9yX18gPSAiR3VpZG8gdmFuIFJvc3N1bSA8Z3VpZG9AcHl0aG9uLm9yZz4iCiAKIApAQCAtMjYsNyArMjQsNiBAQAogZnJvbSAucGdlbjIgaW1wb3J0IGRyaXZlciwgdG9rZW5pemUsIHRva2VuCiBmcm9tIC5maXhlcl91dGlsIGltcG9ydCBmaW5kX3Jvb3QKIGZyb20gLiBpbXBvcnQgcHl0cmVlLCBweWdyYW0KLWZyb20gLiBpbXBvcnQgYnRtX3V0aWxzIGFzIGJ1CiBmcm9tIC4gaW1wb3J0IGJ0bV9tYXRjaGVyIGFzIGJtCiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CmluZGV4IGMwYmY3ZjIuLmNmMzFhNTQgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKQEAgLTMxOSw3ICszMTksNyBAQAogICAgICAgICBkZWYgZih4KSAtPiBsaXN0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncwogICAgICAgICBjbG9zdXJlID0gMQogICAgICAgICBkZWYgZigpOiByZXR1cm4gY2xvc3VyZQogICAgICAgICBkZWYgZih4PTEpOiByZXR1cm4gY2xvc3VyZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKaW5kZXggMDg5NzE3Ny4uYWU3Y2ZlOCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CkBAIC0zLDEwICszLDggQEAKIAogIyBQeXRob24gaW1wb3J0cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgcmUKIGZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAogCiAjIExvY2FsIGltcG9ydHMKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQppbmRleCAxNTA3OWZlLi5jMDUwN2NmIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CkBAIC0xMCw3ICsxMCw2IEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCByZWZhY3RvcgogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQppbmRleCA2NDBkY2VmLi5iM2YyNjgwIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQpAQCAtMiwxMiArMiwxMSBAQAogCiAjIFB5dGhvbiBpbXBvcnRzCiBpbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCBweWdyYW0sIHB5dHJlZSwgcmVmYWN0b3IsIGZpeGVyX3V0aWwKK2Zyb20gbGliMnRvMyBpbXBvcnQgcHlncmFtLCBmaXhlcl91dGlsCiBmcm9tIGxpYjJ0bzMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIAogCkBAIC0zMjM0LDYgKzMyMzMsMTAgQEAKICAgICAgICAgYSA9ICIiInR5cGUoTm9uZSkiIiIKICAgICAgICAgc2VsZi5jaGVjayhiLCBhKQogCisgICAgICAgIGIgPSAidHlwZXMuU3RyaW5nVHlwZXMiCisgICAgICAgIGEgPSAiKHN0ciwpIgorICAgICAgICBzZWxmLmNoZWNrKGIsIGEpCisKIGNsYXNzIFRlc3RfaWRpb21zKEZpeGVyVGVzdENhc2UpOgogICAgIGZpeGVyID0gImlkaW9tcyIKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQppbmRleCBlNGEwMTk0Li45YTk2OWU4IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQpAQCAtOCw3ICs4LDcgQEAKIAogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAotZnJvbSAuc3VwcG9ydCBpbXBvcnQgZHJpdmVyLCB0ZXN0X2RpcgorZnJvbSAuc3VwcG9ydCBpbXBvcnQgZHJpdmVyCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZQogCiAjIFB5dGhvbiBpbXBvcnRzCkBAIC0xMzQsNiArMTM0LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgIiIiKQogCiAgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaSBhc3luYyBmb3IgaSBpbiBiXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2kgZm9yIGkgaW4gYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBhIGlmIGF3YWl0IGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBpfQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gYiBpZiBhd2FpdCBjXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBpIGZvciBpIGluIGIgaWYgY10KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CiAKICAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwogCkBAIC0yNzIsNiArMjkwLDM2IEBACiAgICAgICAgIHNlbGYudmFsaWRhdGUocykKIAogCisjIEFkYXB0ZWQgZnJvbSBQeXRob24gMydzIExpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weTpHcmFtbWFyVGVzdHMudGVzdF92YXJfYW5ub3QKK2NsYXNzIFRlc3RWYXJBbm5vdGF0aW9ucyhHcmFtbWFyVGVzdCk6CisgICAgZGVmIHRlc3RfMShzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgidmFyMTogaW50ID0gNSIpCisKKyAgICBkZWYgdGVzdF8yKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJ2YXIyOiBbaW50LCBzdHJdIikKKworICAgIGRlZiB0ZXN0XzMoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBzdDogc3RyID0gJ0hlbGxvJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgYS5iOiBpbnQgPSAoMSwgMilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBzdFxuIikKKworICAgIGRlZiB0ZXN0XzQoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImRlZiBmYmFkKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHByaW50KHgpXG4iKQorCisgICAgZGVmIHRlc3RfNShzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiY2xhc3MgQzpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgczogc3RyID0gJ2F0dHInXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB6ID0gMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHNlbGYueDogaW50ID0geFxuIikKKworICAgIGRlZiB0ZXN0XzYoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImxzdDogTGlzdFtpbnRdID0gW10iKQorCiBjbGFzcyBUZXN0RXhjZXB0KEdyYW1tYXJUZXN0KToKICAgICBkZWYgdGVzdF9uZXcoc2VsZik6CiAgICAgICAgIHMgPSAiIiIKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKaW5kZXggNGQ1ODVhOC4uMTc3MTI2ZCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKQEAgLTksMTEgKzksNiBAQAogZXNwZWNpYWxseSB3aGVuIGRlYnVnZ2luZyBhIHRlc3QuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKLQogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQppbmRleCA4NTYzMDAxLi5lOWJhZTVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKQEAgLTIsMjQgKzIsMTggQEAKIFVuaXQgdGVzdHMgZm9yIHJlZmFjdG9yLnB5LgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBpbwogaW1wb3J0IHJlCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gbGliMnRvMyBpbXBvcnQgcmVmYWN0b3IsIHB5Z3JhbSwgZml4ZXJfYmFzZQogZnJvbSBsaWIydG8zLnBnZW4yIGltcG9ydCB0b2tlbgogCi1mcm9tIC4gaW1wb3J0IHN1cHBvcnQKLQogCiBURVNUX0RBVEFfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkYXRhIikKIEZJWEVSX0RJUiA9IG9zLnBhdGguam9pbihURVNUX0RBVEFfRElSLCAiZml4ZXJzIikKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCBkMmJlODJjLi5jNmM2MTM5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CkBAIC0zLDkgKzMsNiBAQAogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCi0jIFB5dGhvbiBpbXBvcnRzCi1pbXBvcnQgb3MucGF0aAotCiAjIExvY2FsIGltcG9ydHMKIGZyb20gbGliMnRvMy5weXRyZWUgaW1wb3J0IE5vZGUsIExlYWYKIGZyb20gbGliMnRvMyBpbXBvcnQgZml4ZXJfdXRpbApkaWZmIC0tZ2l0IGEvTGliL2xvY2FsZS5weSBiL0xpYi9sb2NhbGUucHkKaW5kZXggNmQ1OWNkOC4uNGRlMDA5MCAxMDA2NDQKLS0tIGEvTGliL2xvY2FsZS5weQorKysgYi9MaWIvbG9jYWxlLnB5CkBAIC0zMDIsMTIgKzMwMiwxNiBAQAogCiBkZWYgZGVsb2NhbGl6ZShzdHJpbmcpOgogICAgICJQYXJzZXMgYSBzdHJpbmcgYXMgYSBub3JtYWxpemVkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCisKKyAgICBjb252ID0gbG9jYWxlY29udigpCisKICAgICAjRmlyc3QsIGdldCByaWQgb2YgdGhlIGdyb3VwaW5nCi0gICAgdHMgPSBsb2NhbGVjb252KClbJ3Rob3VzYW5kc19zZXAnXQorICAgIHRzID0gY29udlsndGhvdXNhbmRzX3NlcCddCiAgICAgaWYgdHM6CiAgICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHRzLCAnJykKKwogICAgICNuZXh0LCByZXBsYWNlIHRoZSBkZWNpbWFsIHBvaW50IHdpdGggYSBkb3QKLSAgICBkZCA9IGxvY2FsZWNvbnYoKVsnZGVjaW1hbF9wb2ludCddCisgICAgZGQgPSBjb252WydkZWNpbWFsX3BvaW50J10KICAgICBpZiBkZDoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZGQsICcuJykKICAgICByZXR1cm4gc3RyaW5nCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDIyNzQ0ZTEuLjI1OTBkNjUgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0zMyw4ICszMyw5IEBACiAgICAgICAgICAgICdTdHJlYW1IYW5kbGVyJywgJ1dBUk4nLCAnV0FSTklORycsICdhZGRMZXZlbE5hbWUnLCAnYmFzaWNDb25maWcnLAogICAgICAgICAgICAnY2FwdHVyZVdhcm5pbmdzJywgJ2NyaXRpY2FsJywgJ2RlYnVnJywgJ2Rpc2FibGUnLCAnZXJyb3InLAogICAgICAgICAgICAnZXhjZXB0aW9uJywgJ2ZhdGFsJywgJ2dldExldmVsTmFtZScsICdnZXRMb2dnZXInLCAnZ2V0TG9nZ2VyQ2xhc3MnLAotICAgICAgICAgICAnaW5mbycsICdsb2cnLCAnbWFrZUxvZ1JlY29yZCcsICdzZXRMb2dnZXJDbGFzcycsICd3YXJuJywgJ3dhcm5pbmcnLAotICAgICAgICAgICAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywgJ2xhc3RSZXNvcnQnXQorICAgICAgICAgICAnaW5mbycsICdsb2cnLCAnbWFrZUxvZ1JlY29yZCcsICdzZXRMb2dnZXJDbGFzcycsICdzaHV0ZG93bicsCisgICAgICAgICAgICd3YXJuJywgJ3dhcm5pbmcnLCAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywKKyAgICAgICAgICAgJ2xhc3RSZXNvcnQnLCAncmFpc2VFeGNlcHRpb25zJ10KIAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTEwNyw2ICsxMDgsNyBAQAogfQogX25hbWVUb0xldmVsID0gewogICAgICdDUklUSUNBTCc6IENSSVRJQ0FMLAorICAgICdGQVRBTCc6IEZBVEFMLAogICAgICdFUlJPUic6IEVSUk9SLAogICAgICdXQVJOJzogV0FSTklORywKICAgICAnV0FSTklORyc6IFdBUk5JTkcsCkBAIC05MzUsNiArOTM3LDEwIEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGRlbCB0LCB2LCB0YgogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICByZXR1cm4gJzwlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGxldmVsKQorCiBjbGFzcyBTdHJlYW1IYW5kbGVyKEhhbmRsZXIpOgogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgbG9nZ2luZyByZWNvcmRzLCBhcHByb3ByaWF0ZWx5IGZvcm1hdHRlZCwKQEAgLTk4Niw2ICs5OTIsMTQgQEAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICBuYW1lID0gZ2V0YXR0cihzZWxmLnN0cmVhbSwgJ25hbWUnLCAnJykKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIG5hbWUgKz0gJyAnCisgICAgICAgIHJldHVybiAnPCVzICVzKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lLCBsZXZlbCkKKworCiBjbGFzcyBGaWxlSGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGZvcm1hdHRlZCBsb2dnaW5nIHJlY29yZHMgdG8gZGlzayBmaWxlcy4KQEAgLTk5NCw2ICsxMDA4LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIE9wZW4gdGhlIHNwZWNpZmllZCBmaWxlIGFuZCB1c2UgaXQgYXMgdGhlIHN0cmVhbSBmb3IgbG9nZ2luZy4KICAgICAgICAgIiIiCisgICAgICAgICMgSXNzdWUgIzI3NDkzOiBhZGQgc3VwcG9ydCBmb3IgUGF0aCBvYmplY3RzIHRvIGJlIHBhc3NlZCBpbgorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICAgICAgI2tlZXAgdGhlIGFic29sdXRlIHBhdGgsIG90aGVyd2lzZSBkZXJpdmVkIGNsYXNzZXMgd2hpY2ggdXNlIHRoaXMKICAgICAgICAgI21heSBjb21lIGEgY3JvcHBlciB3aGVuIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBjaGFuZ2VzCiAgICAgICAgIHNlbGYuYmFzZUZpbGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQpAQCAtMTA0OCw2ICsxMDY0LDExIEBACiAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQogICAgICAgICBTdHJlYW1IYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuYmFzZUZpbGVuYW1lLCBsZXZlbCkKKworCiBjbGFzcyBfU3RkZXJySGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlzIGxpa2UgYSBTdHJlYW1IYW5kbGVyIHVzaW5nIHN5cy5zdGRlcnIsIGJ1dCBhbHdheXMgdXNlcwpAQCAtMTU0MCw2ICsxNTYxLDExIEBACiAgICAgICAgICAgICBzdWZmaXggPSAnLicuam9pbigoc2VsZi5uYW1lLCBzdWZmaXgpKQogICAgICAgICByZXR1cm4gc2VsZi5tYW5hZ2VyLmdldExvZ2dlcihzdWZmaXgpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIGxldmVsKQorCisKIGNsYXNzIFJvb3RMb2dnZXIoTG9nZ2VyKToKICAgICAiIiIKICAgICBBIHJvb3QgbG9nZ2VyIGlzIG5vdCB0aGF0IGRpZmZlcmVudCB0byBhbnkgb3RoZXIgbG9nZ2VyLCBleGNlcHQgdGhhdApAQCAtMTY2Niw2ICsxNjkyLDExIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBzZWxmLmxvZ2dlcgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBsb2dnZXIubmFtZSwgbGV2ZWwpCisKIHJvb3QgPSBSb290TG9nZ2VyKFdBUk5JTkcpCiBMb2dnZXIucm9vdCA9IHJvb3QKIExvZ2dlci5tYW5hZ2VyID0gTWFuYWdlcihMb2dnZXIucm9vdCkKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggYzM5YTU2Zi4uN2Q3Nzk3MyAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTI0Niw2ICsyNDYsOSBAQAogCiAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByZS5jb21waWxlKHNlbGYuZXh0TWF0Y2gsIHJlLkFTQ0lJKQogICAgICAgICBzZWxmLmludGVydmFsID0gc2VsZi5pbnRlcnZhbCAqIGludGVydmFsICMgbXVsdGlwbHkgYnkgdW5pdHMgcmVxdWVzdGVkCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBsaW5lIGFkZGVkIGJlY2F1c2UgdGhlIGZpbGVuYW1lIHBhc3NlZCBpbiBjb3VsZCBiZSBhCisgICAgICAgICMgcGF0aCBvYmplY3QgKHNlZSBJc3N1ZSAjMjc0OTMpLCBidXQgc2VsZi5iYXNlRmlsZW5hbWUgd2lsbCBiZSBhIHN0cmluZworICAgICAgICBmaWxlbmFtZSA9IHNlbGYuYmFzZUZpbGVuYW1lCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHQgPSBvcy5zdGF0KGZpbGVuYW1lKVtTVF9NVElNRV0KICAgICAgICAgZWxzZToKQEAgLTQ0MCwxMSArNDQzLDExIEBACiAgICAgICAgICAgICBzcmVzID0gb3MuZnN0YXQoc2VsZi5zdHJlYW0uZmlsZW5vKCkpCiAgICAgICAgICAgICBzZWxmLmRldiwgc2VsZi5pbm8gPSBzcmVzW1NUX0RFVl0sIHNyZXNbU1RfSU5PXQogCi0gICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICBkZWYgcmVvcGVuSWZOZWVkZWQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBFbWl0IGEgcmVjb3JkLgorICAgICAgICBSZW9wZW4gbG9nIGZpbGUgaWYgbmVlZGVkLgogCi0gICAgICAgIEZpcnN0IGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIGFuZCBpZiBpdAorICAgICAgICBDaGVja3MgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgYW5kIGlmIGl0CiAgICAgICAgIGhhcywgY2xvc2UgdGhlIG9sZCBzdHJlYW0gYW5kIHJlb3BlbiB0aGUgZmlsZSB0byBnZXQgdGhlCiAgICAgICAgIGN1cnJlbnQgc3RyZWFtLgogICAgICAgICAiIiIKQEAgLTQ2Nyw2ICs0NzAsMTUgQEAKICAgICAgICAgICAgICAgICAjIG9wZW4gYSBuZXcgZmlsZSBoYW5kbGUgYW5kIGdldCBuZXcgc3RhdCBpbmZvIGZyb20gdGhhdCBmZAogICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdHN0cmVhbSgpCisKKyAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgorICAgICAgICAiIiIKKyAgICAgICAgRW1pdCBhIHJlY29yZC4KKworICAgICAgICBJZiB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIHJlb3BlbiB0aGUgZmlsZSBiZWZvcmUgZW1pdHRpbmcgdGhlCisgICAgICAgIHJlY29yZCB0byBpdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYucmVvcGVuSWZOZWVkZWQoKQogICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQogCiAKQEAgLTEyMjksMTcgKzEyNDEsMjUgQEAKICAgICBmbHVzaGluZyB0aGVtIHRvIGEgdGFyZ2V0IGhhbmRsZXIuIEZsdXNoaW5nIG9jY3VycyB3aGVuZXZlciB0aGUgYnVmZmVyCiAgICAgaXMgZnVsbCwgb3Igd2hlbiBhbiBldmVudCBvZiBhIGNlcnRhaW4gc2V2ZXJpdHkgb3IgZ3JlYXRlciBpcyBzZWVuLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eSwgZmx1c2hMZXZlbD1sb2dnaW5nLkVSUk9SLCB0YXJnZXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcGFjaXR5LCBmbHVzaExldmVsPWxvZ2dpbmcuRVJST1IsIHRhcmdldD1Ob25lLAorICAgICAgICAgICAgICAgICBmbHVzaE9uQ2xvc2U9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplIHRoZSBoYW5kbGVyIHdpdGggdGhlIGJ1ZmZlciBzaXplLCB0aGUgbGV2ZWwgYXQgd2hpY2gKICAgICAgICAgZmx1c2hpbmcgc2hvdWxkIG9jY3VyIGFuZCBhbiBvcHRpb25hbCB0YXJnZXQuCiAKICAgICAgICAgTm90ZSB0aGF0IHdpdGhvdXQgYSB0YXJnZXQgYmVpbmcgc2V0IGVpdGhlciBoZXJlIG9yIHZpYSBzZXRUYXJnZXQoKSwKICAgICAgICAgYSBNZW1vcnlIYW5kbGVyIGlzIG5vIHVzZSB0byBhbnlvbmUhCisKKyAgICAgICAgVGhlIGBgZmx1c2hPbkNsb3NlYGAgYXJndW1lbnQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKyAgICAgICAgcmVhc29ucyAtIHRoZSBvbGQgYmVoYXZpb3VyIGlzIHRoYXQgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQsIHRoZQorICAgICAgICBidWZmZXIgaXMgZmx1c2hlZCwgZXZlbiBpZiB0aGUgZmx1c2ggbGV2ZWwgaGFzbid0IGJlZW4gZXhjZWVkZWQgbm9yIHRoZQorICAgICAgICBjYXBhY2l0eSBleGNlZWRlZC4gVG8gcHJldmVudCB0aGlzLCBzZXQgYGBmbHVzaE9uQ2xvc2VgYCB0byBgYEZhbHNlYGAuCiAgICAgICAgICIiIgogICAgICAgICBCdWZmZXJpbmdIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNhcGFjaXR5KQogICAgICAgICBzZWxmLmZsdXNoTGV2ZWwgPSBmbHVzaExldmVsCiAgICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CisgICAgICAgICMgU2VlIElzc3VlICMyNjU1OSBmb3Igd2h5IHRoaXMgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgc2VsZi5mbHVzaE9uQ2xvc2UgPSBmbHVzaE9uQ2xvc2UKIAogICAgIGRlZiBzaG91bGRGbHVzaChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTEyNzMsMTAgKzEyOTMsMTIgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEZsdXNoLCBzZXQgdGhlIHRhcmdldCB0byBOb25lIGFuZCBsb3NlIHRoZSBidWZmZXIuCisgICAgICAgIEZsdXNoLCBpZiBhcHByb3ByaWF0ZWx5IGNvbmZpZ3VyZWQsIHNldCB0aGUgdGFyZ2V0IHRvIE5vbmUgYW5kIGxvc2UgdGhlCisgICAgICAgIGJ1ZmZlci4KICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuZmx1c2goKQorICAgICAgICAgICAgaWYgc2VsZi5mbHVzaE9uQ2xvc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL2x6bWEucHkgYi9MaWIvbHptYS5weQppbmRleCA3ZGZmMWMzLi4wODE3Yjg3IDEwMDY0NAotLS0gYS9MaWIvbHptYS5weQorKysgYi9MaWIvbHptYS5weQpAQCAtMjMsNiArMjMsNyBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbworaW1wb3J0IG9zCiBmcm9tIF9sem1hIGltcG9ydCAqCiBmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCiBpbXBvcnQgX2NvbXByZXNzaW9uCkBAIC00OSw5ICs1MCwxMCBAQAogICAgICAgICAgICAgICAgICBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgogICAgICAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgogCi0gICAgICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IKLSAgICAgICAgYnl0ZXMgb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbgotICAgICAgICBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIsCisgICAgICAgIGJ5dGVzLCBvciBQYXRoTGlrZSBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCisgICAgICAgIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvcgorICAgICAgICB3cml0ZSB0by4KIAogICAgICAgICBtb2RlIGNhbiBiZSAiciIgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAidyIgZm9yIChvdmVyKXdyaXRpbmcsCiAgICAgICAgICJ4IiBmb3IgY3JlYXRpbmcgZXhjbHVzaXZlbHksIG9yICJhIiBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4KQEAgLTExMiw3ICsxMTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMsIG9zLlBhdGhMaWtlKSk6CiAgICAgICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6CiAgICAgICAgICAgICAgICAgbW9kZSArPSAiYiIKICAgICAgICAgICAgIHNlbGYuX2ZwID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSkKQEAgLTEyMiw3ICsxMjQsNyBAQAogICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciwgYnl0ZXMsIGZpbGUgb3IgUGF0aExpa2Ugb2JqZWN0IikKIAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CiAgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwgTFpNQURlY29tcHJlc3NvciwKQEAgLTI2Myw5ICsyNjUsOSBAQAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi0gICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvciBieXRlcwotICAgIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4KLSAgICBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciwgYnl0ZXMsCisgICAgb3IgUGF0aExpa2Ugb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0CisgICAgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KIAogICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIgKGRlZmF1bHQpLCAidyIsICJ3YiIsICJ4IiwgInhiIiwKICAgICAiYSIsIG9yICJhYiIgZm9yIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiLCAieHQiLCBvciAiYXQiIGZvciB0ZXh0CmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IDAyNzBlMjUuLjBlMjM5ODcgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0yMyw5ICsyMywxMCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gTm9uZQogCi1fX2FsbF9fID0gWyAnTWFpbGJveCcsICdNYWlsZGlyJywgJ21ib3gnLCAnTUgnLCAnQmFieWwnLCAnTU1ERicsCi0gICAgICAgICAgICAnTWVzc2FnZScsICdNYWlsZGlyTWVzc2FnZScsICdtYm94TWVzc2FnZScsICdNSE1lc3NhZ2UnLAotICAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZSddCitfX2FsbF9fID0gWydNYWlsYm94JywgJ01haWxkaXInLCAnbWJveCcsICdNSCcsICdCYWJ5bCcsICdNTURGJywKKyAgICAgICAgICAgJ01lc3NhZ2UnLCAnTWFpbGRpck1lc3NhZ2UnLCAnbWJveE1lc3NhZ2UnLCAnTUhNZXNzYWdlJywKKyAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZScsICdFcnJvcicsICdOb1N1Y2hNYWlsYm94RXJyb3InLAorICAgICAgICAgICAnTm90RW1wdHlFcnJvcicsICdFeHRlcm5hbENsYXNoRXJyb3InLCAnRm9ybWF0RXJyb3InXQogCiBsaW5lc2VwID0gb3MubGluZXNlcC5lbmNvZGUoJ2FzY2lpJykKIApkaWZmIC0tZ2l0IGEvTGliL21pbWV0eXBlcy5weSBiL0xpYi9taW1ldHlwZXMucHkKaW5kZXggMGJlNzZhZC4uOWE4ODY4MCAxMDA2NDQKLS0tIGEvTGliL21pbWV0eXBlcy5weQorKysgYi9MaWIvbWltZXR5cGVzLnB5CkBAIC0zMyw4ICszMywxMCBAQAogICAgIF93aW5yZWcgPSBOb25lCiAKIF9fYWxsX18gPSBbCi0gICAgImd1ZXNzX3R5cGUiLCJndWVzc19leHRlbnNpb24iLCJndWVzc19hbGxfZXh0ZW5zaW9ucyIsCi0gICAgImFkZF90eXBlIiwicmVhZF9taW1lX3R5cGVzIiwiaW5pdCIKKyAgICAia25vd25maWxlcyIsICJpbml0ZWQiLCAiTWltZVR5cGVzIiwKKyAgICAiZ3Vlc3NfdHlwZSIsICJndWVzc19hbGxfZXh0ZW5zaW9ucyIsICJndWVzc19leHRlbnNpb24iLAorICAgICJhZGRfdHlwZSIsICJpbml0IiwgInJlYWRfbWltZV90eXBlcyIsCisgICAgInN1ZmZpeF9tYXAiLCAiZW5jb2RpbmdzX21hcCIsICJ0eXBlc19tYXAiLCAiY29tbW9uX3R5cGVzIgogXQogCiBrbm93bmZpbGVzID0gWwpkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggODEwMzUwMi4uZTIyMDMxNSAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xMCw3ICsxMCw3IEBACiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgd2FybmluZ3MKIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgaW1wb3J0IGltcAogCiBMT0FEX0NPTlNUID0gZGlzLm9wbWFwWydMT0FEX0NPTlNUJ10KQEAgLTMzNiw4ICszMzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUgPSBuYW1lICsgIi4iICsgc3ViCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfYmFkbW9kdWxlKGZ1bGxuYW1lLCBjYWxsZXIpCiAKLSAgICBkZWYgc2Nhbl9vcGNvZGVzXzI1KHNlbGYsIGNvLAotICAgICAgICAgICAgICAgICAgICAgdW5wYWNrID0gc3RydWN0LnVucGFjayk6CisgICAgZGVmIHNjYW5fb3Bjb2RlcyhzZWxmLCBjbyk6CiAgICAgICAgICMgU2NhbiB0aGUgY29kZSwgYW5kIHlpZWxkICdpbnRlcmVzdGluZycgb3Bjb2RlIGNvbWJpbmF0aW9ucwogICAgICAgICBjb2RlID0gY28uY29fY29kZQogICAgICAgICBuYW1lcyA9IGNvLmNvX25hbWVzCkBAIC0zNjAsNyArMzU5LDcgQEAKIAogICAgIGRlZiBzY2FuX2NvZGUoc2VsZiwgY28sIG0pOgogICAgICAgICBjb2RlID0gY28uY29fY29kZQotICAgICAgICBzY2FubmVyID0gc2VsZi5zY2FuX29wY29kZXNfMjUKKyAgICAgICAgc2Nhbm5lciA9IHNlbGYuc2Nhbl9vcGNvZGVzCiAgICAgICAgIGZvciB3aGF0LCBhcmdzIGluIHNjYW5uZXIoY28pOgogICAgICAgICAgICAgaWYgd2hhdCA9PSAic3RvcmUiOgogICAgICAgICAgICAgICAgIG5hbWUsID0gYXJncwpkaWZmIC0tZ2l0IGEvTGliL21zaWxpYi9fX2luaXRfXy5weSBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKaW5kZXggNmQwYTI4Zi4uZjAzNzBjMiAxMDA2NDQKLS0tIGEvTGliL21zaWxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CkBAIC0xLDcgKzEsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDUgTWFydGluIHYuIEzDtndpcwogIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiBmcm9tIF9tc2kgaW1wb3J0ICoKLWltcG9ydCBnbG9iCitpbXBvcnQgZm5tYXRjaAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKQEAgLTI4OSw3ICsyODksNyBAQAogICAgIGRlZiBtYWtlX3Nob3J0KHNlbGYsIGZpbGUpOgogICAgICAgICBvbGRmaWxlID0gZmlsZQogICAgICAgICBmaWxlID0gZmlsZS5yZXBsYWNlKCcrJywgJ18nKQotICAgICAgICBmaWxlID0gJycuam9pbihjIGZvciBjIGluIGZpbGUgaWYgbm90IGMgaW4gJyAiL1xbXTo7PSwnKQorICAgICAgICBmaWxlID0gJycuam9pbihjIGZvciBjIGluIGZpbGUgaWYgbm90IGMgaW4gcicgIi9cW106Oz0sJykKICAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIikKICAgICAgICAgaWYgbGVuKHBhcnRzKSA+IDE6CiAgICAgICAgICAgICBwcmVmaXggPSAiIi5qb2luKHBhcnRzWzotMV0pLnVwcGVyKCkKQEAgLTM3OSw3ICszNzksMTMgQEAKICAgICBkZWYgZ2xvYihzZWxmLCBwYXR0ZXJuLCBleGNsdWRlID0gTm9uZSk6CiAgICAgICAgICIiIkFkZCBhIGxpc3Qgb2YgZmlsZXMgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IGFzIHNwZWNpZmllZCBpbiB0aGUKICAgICAgICAgZ2xvYiBwYXR0ZXJuLiBJbmRpdmlkdWFsIGZpbGVzIGNhbiBiZSBleGNsdWRlZCBpbiB0aGUgZXhjbHVkZSBsaXN0LiIiIgotICAgICAgICBmaWxlcyA9IGdsb2IuZ2xvYjEoc2VsZi5hYnNvbHV0ZSwgcGF0dGVybikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZXMgPSBvcy5saXN0ZGlyKHNlbGYuYWJzb2x1dGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGlmIHBhdHRlcm5bOjFdICE9ICcuJzoKKyAgICAgICAgICAgIGZpbGVzID0gKGYgZm9yIGYgaW4gZmlsZXMgaWYgZlswXSAhPSAnLicpCisgICAgICAgIGZpbGVzID0gZm5tYXRjaC5maWx0ZXIoZmlsZXMsIHBhdHRlcm4pCiAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgZXhjbHVkZSBhbmQgZiBpbiBleGNsdWRlOiBjb250aW51ZQogICAgICAgICAgICAgc2VsZi5hZGRfZmlsZShmKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IGQwYTFiODYuLmQ0OWU4ZjAgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTIwLDExICsyMCwxMSBAQAogCiBpbXBvcnQgX211bHRpcHJvY2Vzc2luZwogCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGZyb20gLiBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgQnVmZmVyVG9vU2hvcnQKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgorX0ZvcmtpbmdQaWNrbGVyID0gcmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCiAKIHRyeToKICAgICBpbXBvcnQgX3dpbmFwaQpAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgICAgICIiIlNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQotICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCisgICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCiAKICAgICBkZWYgcmVjdl9ieXRlcyhzZWxmLCBtYXhsZW5ndGg9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKICAgICAgICAgYnVmID0gc2VsZi5fcmVjdl9ieXRlcygpCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQogCiAgICAgZGVmIHBvbGwoc2VsZiwgdGltZW91dD0wLjApOgogICAgICAgICAiIiJXaGV0aGVyIHRoZXJlIGlzIGFueSBpbnB1dCBhdmFpbGFibGUgdG8gYmUgcmVhZCIiIgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CmluZGV4IDYzODQ5ZjkuLjA5NDU1ZTIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKQEAgLTMsNiArMyw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gLiBpbXBvcnQgcHJvY2VzcworZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIAogX19hbGxfXyA9IFtdICAgICAgICAgICAgIyB0aGluZ3MgYXJlIGNvcGllZCBmcm9tIGhlcmUgdG8gX19pbml0X18ucHkKIApAQCAtMTk4LDYgKzE5OSwxNiBAQAogICAgIGRlZiBzZXRfc3RhcnRfbWV0aG9kKHNlbGYsIG1ldGhvZD1Ob25lKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBzdGFydCBtZXRob2Qgb2YgY29uY3JldGUgY29udGV4dCcpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVkdWNlcihzZWxmKToKKyAgICAgICAgJycnQ29udHJvbHMgaG93IG9iamVjdHMgd2lsbCBiZSByZWR1Y2VkIHRvIGEgZm9ybSB0aGF0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBvdGhlciBwcm9jZXNzZXMuJycnCisgICAgICAgIHJldHVybiBnbG9iYWxzKCkuZ2V0KCdyZWR1Y3Rpb24nKQorCisgICAgQHJlZHVjZXIuc2V0dGVyCisgICAgZGVmIHJlZHVjZXIoc2VsZiwgcmVkdWN0aW9uKToKKyAgICAgICAgZ2xvYmFscygpWydyZWR1Y3Rpb24nXSA9IHJlZHVjdGlvbgorCiAgICAgZGVmIF9jaGVja19hdmFpbGFibGUoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMjQ1LDcgKzI1Niw2IEBACiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgcmV0dXJuIFsnc3Bhd24nXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KICAgICAgICAgICAgIGlmIHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgICAgICAgICAgICAgIHJldHVybiBbJ2ZvcmsnLCAnc3Bhd24nLCAnZm9ya3NlcnZlciddCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjkyLDcgKzMwMiw2IEBACiAgICAgICAgIF9uYW1lID0gJ2ZvcmtzZXJ2ZXInCiAgICAgICAgIFByb2Nlc3MgPSBGb3JrU2VydmVyUHJvY2VzcwogICAgICAgICBkZWYgX2NoZWNrX2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAgICAgICAgICAgICBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZm9ya3NlcnZlciBzdGFydCBtZXRob2Qgbm90IGF2YWlsYWJsZScpCiAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQppbmRleCBhZDAxZWRlLi5mMmMxNzllIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CkBAIC05LDcgKzksNyBAQAogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzZW1hcGhvcmVfdHJhY2tlcgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKaW5kZXggNDRkOTYzOC4uNDQzMzIxNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQpAQCAtMTQsOCArMTQsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGhyZWFkaW5nCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgYXNzZXJ0X3NwYXduaW5nCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnQnVmZmVyV3JhcHBlciddCkBAIC00OCw3ICs0Nyw3IEBACiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICAgICAgY29udGV4dC5hc3NlcnRfc3Bhd25pbmcoc2VsZikKKyAgICAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlCiAKICAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQppbmRleCBiMTc1NDcwLi5iOWNlODRiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKQEAgLTIzLDEwICsyMyw5IEBACiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YwogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgcG9vbAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKQEAgLTE0Miw3ICsxNDEsOCBAQAogCiAgICAgICAgIHNlbGYuaWRfdG9fb2JqID0geycwJzogKE5vbmUsICgpKX0KICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudCA9IHt9Ci0gICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuUkxvY2soKQorICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iaiA9IHt9CisgICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuTG9jaygpCiAKICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmKToKICAgICAgICAgJycnCkBAIC0yMjcsNyArMjI3LDE0IEBACiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gcmVjdigpCiAgICAgICAgICAgICAgICAgaWRlbnQsIG1ldGhvZG5hbWUsIGFyZ3MsIGt3ZHMgPSByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBpZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IGlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgc2Vjb25kX2tlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Uga2UKIAogICAgICAgICAgICAgICAgIGlmIG1ldGhvZG5hbWUgbm90IGluIGV4cG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKApAQCAtMzA4LDcgKzMxNSw3IEBACiAgICAgICAgICcnJwogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19vYmoua2V5cygpKQorICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19yZWZjb3VudC5rZXlzKCkpCiAgICAgICAgICAgICBrZXlzLnNvcnQoKQogICAgICAgICAgICAgZm9yIGlkZW50IGluIGtleXM6CiAgICAgICAgICAgICAgICAgaWYgaWRlbnQgIT0gJzAnOgpAQCAtMzIxLDcgKzMyOCw4IEBACiAgICAgICAgICcnJwogICAgICAgICBOdW1iZXIgb2Ygc2hhcmVkIG9iamVjdHMKICAgICAgICAgJycnCi0gICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19vYmopIC0gMSAgICAgICMgZG9uJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgICMgRG9lc24ndCB1c2UgKGxlbihzZWxmLmlkX3RvX29iaikgLSAxKSBhcyB3ZSBzaG91bGRuJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19yZWZjb3VudCkKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCBjKToKICAgICAgICAgJycnCkBAIC0zNjMsMTMgKzM3MSw5IEBACiAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSAob2JqLCBzZXQoZXhwb3NlZCksIG1ldGhvZF90b190eXBlaWQpCiAgICAgICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudDoKICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9IDAKLSAgICAgICAgICAgICMgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgaW1tZWRpYXRlbHksIHRvIGF2b2lkCi0gICAgICAgICAgICAjIHRoaXMgb2JqZWN0IGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBhIFByb3h5Ci0gICAgICAgICAgICAjIG9iamVjdCBmb3IgaXQgY2FuIGJlIGNyZWF0ZWQuICBUaGUgY2FsbGVyIG9mIGNyZWF0ZSgpCi0gICAgICAgICAgICAjIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBhIGRlY3JlZiBvbmNlIHRoZSBQcm94eSBvYmplY3QKLSAgICAgICAgICAgICMgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICAgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQotICAgICAgICAgICAgcmV0dXJuIGlkZW50LCB0dXBsZShleHBvc2VkKQorCisgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQorICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCiAKICAgICBkZWYgZ2V0X21ldGhvZHMoc2VsZiwgYywgdG9rZW4pOgogICAgICAgICAnJycKQEAgLTM4NywxNSArMzkxLDQ1IEBACiAKICAgICBkZWYgaW5jcmVmKHNlbGYsIGMsIGlkZW50KToKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgotICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBrZToKKyAgICAgICAgICAgICAgICAjIElmIG5vIGV4dGVybmFsIHJlZmVyZW5jZXMgZXhpc3QgYnV0IGFuIGludGVybmFsICh0byB0aGUKKyAgICAgICAgICAgICAgICAjIG1hbmFnZXIpIHN0aWxsIGRvZXMgYW5kIGEgbmV3IGV4dGVybmFsIHJlZmVyZW5jZSBpcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgIyBmcm9tIGl0LCByZXN0b3JlIHRoZSBtYW5hZ2VyJ3MgdHJhY2tpbmcgb2YgaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAjIHByZXZpb3VzbHkgc3Rhc2hlZCBpbnRlcm5hbCByZWYuCisgICAgICAgICAgICAgICAgaWYgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBzZWxmLmlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnU2VydmVyIHJlLWVuYWJsZWQgdHJhY2tpbmcgJiBJTkNSRUYgJXInLCBpZGVudCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBrZQogCiAgICAgZGVmIGRlY3JlZihzZWxmLCBjLCBpZGVudCk6CisgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50IGFuZCBcCisgICAgICAgICAgICBpZGVudCBpbiBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciBERUNSRUYgc2tpcHBpbmcgJXInLCBpZGVudCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGFzc2VydCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA+PSAxCiAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9PSAwOgotICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0sIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCi0gICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCisKKyAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQ6CisgICAgICAgICAgICAjIFR3by1zdGVwIHByb2Nlc3MgaW4gY2FzZSB0aGUgb2JqZWN0IHR1cm5zIG91dCB0byBjb250YWluIG90aGVyCisgICAgICAgICAgICAjIHByb3h5IG9iamVjdHMgKGUuZy4gYSBtYW5hZ2VkIGxpc3Qgb2YgbWFuYWdlZCBsaXN0cykuCisgICAgICAgICAgICAjIE90aGVyd2lzZSwgZGVsZXRpbmcgc2VsZi5pZF90b19vYmpbaWRlbnRdIHdvdWxkIHRyaWdnZXIgdGhlCisgICAgICAgICAgICAjIGRlbGV0aW5nIG9mIHRoZSBzdG9yZWQgdmFsdWUgKGFub3RoZXIgbWFuYWdlZCBvYmplY3QpIHdoaWNoIHdvdWxkCisgICAgICAgICAgICAjIGluIHR1cm4gYXR0ZW1wdCB0byBhY3F1aXJlIHRoZSBtdXRleCB0aGF0IGlzIGFscmVhZHkgaGVsZCBoZXJlLgorICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gKE5vbmUsICgpLCBOb25lKSAgIyB0aHJlYWQtc2FmZQorICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fb2JqW2lkZW50XQorCiAKICMKICMgQ2xhc3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIGEgbWFuYWdlcgpAQCAtNjU4LDcgKzY5Miw3IEBACiAgICAgX211dGV4ID0gdXRpbC5Gb3JrQXdhcmVUaHJlYWRMb2NrKCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b2tlbiwgc2VyaWFsaXplciwgbWFuYWdlcj1Ob25lLAotICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUpOgorICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUsIG1hbmFnZXJfb3duZWQ9RmFsc2UpOgogICAgICAgICB3aXRoIEJhc2VQcm94eS5fbXV0ZXg6CiAgICAgICAgICAgICB0bHNfaWRzZXQgPSBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWwuZ2V0KHRva2VuLmFkZHJlc3MsIE5vbmUpCiAgICAgICAgICAgICBpZiB0bHNfaWRzZXQgaXMgTm9uZToKQEAgLTY4MCw2ICs3MTQsMTIgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fQ2xpZW50ID0gbGlzdGVuZXJfY2xpZW50W3NlcmlhbGl6ZXJdWzFdCiAKKyAgICAgICAgIyBTaG91bGQgYmUgc2V0IHRvIFRydWUgb25seSB3aGVuIGEgcHJveHkgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQKKyAgICAgICAgIyBvbiB0aGUgbWFuYWdlciBzZXJ2ZXI7IHByaW1hcnkgdXNlIGNhc2U6IG5lc3RlZCBwcm94eSBvYmplY3RzLgorICAgICAgICAjIFJlYnVpbGRQcm94eSBkZXRlY3RzIHdoZW4gYSBwcm94eSBpcyBiZWluZyBjcmVhdGVkIG9uIHRoZSBtYW5hZ2VyCisgICAgICAgICMgYW5kIHNldHMgdGhpcyB2YWx1ZSBhcHByb3ByaWF0ZWx5LgorICAgICAgICBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyID0gbWFuYWdlcl9vd25lZAorCiAgICAgICAgIGlmIGF1dGhrZXkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9hdXRoa2V5ID0gcHJvY2Vzcy5BdXRoZW50aWNhdGlvblN0cmluZyhhdXRoa2V5KQogICAgICAgICBlbGlmIHNlbGYuX21hbmFnZXIgaXMgbm90IE5vbmU6CkBAIC03MzgsNiArNzc4LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCcjR0VUVkFMVUUnKQogCiAgICAgZGVmIF9pbmNyZWYoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX293bmVkX2J5X21hbmFnZXI6CisgICAgICAgICAgICB1dGlsLmRlYnVnKCdvd25lZF9ieV9tYW5hZ2VyIHNraXBwZWQgSU5DUkVGIG9mICVyJywgc2VsZi5fdG9rZW4uaWQpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX3Rva2VuLmFkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICAgZGlzcGF0Y2goY29ubiwgTm9uZSwgJ2luY3JlZicsIChzZWxmLl9pZCwpKQogICAgICAgICB1dGlsLmRlYnVnKCdJTkNSRUYgJXInLCBzZWxmLl90b2tlbi5pZCkKQEAgLTc4OCw3ICs4MzIsNyBAQAogCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIGt3ZHMgPSB7fQotICAgICAgICBpZiBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBnZXRfc3Bhd25pbmdfcG9wZW4oKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGt3ZHNbJ2F1dGhrZXknXSA9IHNlbGYuX2F1dGhrZXkKIAogICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfaXNhdXRvJywgRmFsc2UpOgpAQCAtODIyLDE5ICs4NjYsMTkgQEAKIGRlZiBSZWJ1aWxkUHJveHkoZnVuYywgdG9rZW4sIHNlcmlhbGl6ZXIsIGt3ZHMpOgogICAgICcnJwogICAgIEZ1bmN0aW9uIHVzZWQgZm9yIHVucGlja2xpbmcgcHJveHkgb2JqZWN0cy4KLQotICAgIElmIHBvc3NpYmxlIHRoZSBzaGFyZWQgb2JqZWN0IGlzIHJldHVybmVkLCBvciBvdGhlcndpc2UgYSBwcm94eSBmb3IgaXQuCiAgICAgJycnCiAgICAgc2VydmVyID0gZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX21hbmFnZXJfc2VydmVyJywgTm9uZSkKLQogICAgIGlmIHNlcnZlciBhbmQgc2VydmVyLmFkZHJlc3MgPT0gdG9rZW4uYWRkcmVzczoKLSAgICAgICAgcmV0dXJuIHNlcnZlci5pZF90b19vYmpbdG9rZW4uaWRdWzBdCi0gICAgZWxzZToKLSAgICAgICAgaW5jcmVmID0gKAotICAgICAgICAgICAga3dkcy5wb3AoJ2luY3JlZicsIFRydWUpIGFuZAotICAgICAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCi0gICAgICAgICAgICApCi0gICAgICAgIHJldHVybiBmdW5jKHRva2VuLCBzZXJpYWxpemVyLCBpbmNyZWY9aW5jcmVmLCAqKmt3ZHMpCisgICAgICAgIHV0aWwuZGVidWcoJ1JlYnVpbGQgYSBwcm94eSBvd25lZCBieSBtYW5hZ2VyLCB0b2tlbj0lcicsIHRva2VuKQorICAgICAgICBrd2RzWydtYW5hZ2VyX293bmVkJ10gPSBUcnVlCisgICAgICAgIGlmIHRva2VuLmlkIG5vdCBpbiBzZXJ2ZXIuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29ialt0b2tlbi5pZF0gPSBcCisgICAgICAgICAgICAgICAgc2VydmVyLmlkX3RvX29ialt0b2tlbi5pZF0KKyAgICBpbmNyZWYgPSAoCisgICAgICAgIGt3ZHMucG9wKCdpbmNyZWYnLCBUcnVlKSBhbmQKKyAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCisgICAgICAgICkKKyAgICByZXR1cm4gZnVuYyh0b2tlbiwgc2VyaWFsaXplciwgaW5jcmVmPWluY3JlZiwgKiprd2RzKQogCiAjCiAjIEZ1bmN0aW9ucyB0byBjcmVhdGUgcHJveGllcyBhbmQgcHJveHkgdHlwZXMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA2ZDI1NDY5Li5mZmRmNDI2IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC02MzgsMjIgKzYzOCwyNiBAQAogICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSBsZW5ndGgvL2NodW5rc2l6ZSArIGJvb2wobGVuZ3RoICUgY2h1bmtzaXplKQogCiAgICAgZGVmIF9zZXQoc2VsZiwgaSwgc3VjY2Vzc19yZXN1bHQpOgorICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgIHN1Y2Nlc3MsIHJlc3VsdCA9IHN1Y2Nlc3NfcmVzdWx0Ci0gICAgICAgIGlmIHN1Y2Nlc3M6CisgICAgICAgIGlmIHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CiAgICAgICAgICAgICBzZWxmLl92YWx1ZVtpKnNlbGYuX2NodW5rc2l6ZTooaSsxKSpzZWxmLl9jaHVua3NpemVdID0gcmVzdWx0Ci0gICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQogICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdWNjZXNzID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0Ci0gICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKLSAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKLSAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQorICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CisgICAgICAgICAgICAgICAgIyBvbmx5IHN0b3JlIGZpcnN0IGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0CisgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICMgb25seSBjb25zaWRlciB0aGUgcmVzdWx0IHJlYWR5IG9uY2UgYWxsIGpvYnMgYXJlIGRvbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KKyAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcCgpYApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CmluZGV4IGU3OTIxOTQuLjIyMmRiMmQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKQEAgLTEsMTAgKzEsOSBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vIHN1cHBvcnQgZm9yIHNlbmRpbmcgZmRzIGJldHdlZW4gcHJvY2Vzc2VzJykKLWZyb20gLiBpbXBvcnQgY29udGV4dAogZnJvbSAuIGltcG9ydCBmb3Jrc2VydmVyCiBmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKIGZyb20gLiBpbXBvcnQgc3Bhd24KQEAgLTQyLDEyICs0MSwxMiBAQAogICAgIGRlZiBfbGF1bmNoKHNlbGYsIHByb2Nlc3Nfb2JqKToKICAgICAgICAgcHJlcF9kYXRhID0gc3Bhd24uZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCiAgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBidWYpCiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgYnVmKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgICAgIHNlbGYuc2VudGluZWwsIHcgPSBmb3Jrc2VydmVyLmNvbm5lY3RfdG9fbmV3X3Byb2Nlc3Moc2VsZi5fZmRzKQogICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAoc2VsZi5zZW50aW5lbCwpKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKaW5kZXggNmIwYThkNi4uOThmOGYwYSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CkBAIC0xLDkgKzEsOCBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBwb3Blbl9mb3JrCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCiAKQEAgLTQyLDEyICs0MSwxMiBAQAogICAgICAgICBzZWxmLl9mZHMuYXBwZW5kKHRyYWNrZXJfZmQpCiAgICAgICAgIHByZXBfZGF0YSA9IHNwYXduLmdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQogICAgICAgICBmcCA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBmcCkKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCBmcCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgICAgICBwYXJlbnRfciA9IGNoaWxkX3cgPSBjaGlsZF9yID0gcGFyZW50X3cgPSBOb25lCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CmluZGV4IDNiNTMwNjguLjZmZDU4OGYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQpAQCAtNCw5ICs0LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBfd2luYXBpCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBzcGF3bgotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydQb3BlbiddCkBAIC02MCwxNSArNTksMTUgQEAKICAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgX3dpbmFwaS5DbG9zZUhhbmRsZSwgKHNlbGYuc2VudGluZWwsKSkKIAogICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCi0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCkKICAgICAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICBkZWYgZHVwbGljYXRlX2Zvcl9jaGlsZChzZWxmLCBoYW5kbGUpOgotICAgICAgICBhc3NlcnQgc2VsZiBpcyBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpCisgICAgICAgIGFzc2VydCBzZWxmIGlzIGdldF9zcGF3bmluZ19wb3BlbigpCiAgICAgICAgIHJldHVybiByZWR1Y3Rpb24uZHVwbGljYXRlKGhhbmRsZSwgc2VsZi5zZW50aW5lbCkKIAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDc4NmEzMDMuLmRkYTAzZGQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC0yMyw5ICsyMyw5IEBACiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgogZnJvbSAuIGltcG9ydCBjb250ZXh0CitfRm9ya2luZ1BpY2tsZXIgPSBjb250ZXh0LnJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBmcm9tIC51dGlsIGltcG9ydCBkZWJ1ZywgaW5mbywgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGlzX2V4aXRpbmcKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKIAogIwogIyBRdWV1ZSB0eXBlIHVzaW5nIGEgcGlwZSwgYnVmZmVyIGFuZCB0aHJlYWQKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzZWxmLl9ybG9jay5yZWxlYXNlKCkKICAgICAgICAgIyB1bnNlcmlhbGl6ZSB0aGUgZGF0YSBhZnRlciBoYXZpbmcgcmVsZWFzZWQgdGhlIGxvY2sKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKICAgICBkZWYgcXNpemUoc2VsZik6CiAgICAgICAgICMgUmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3Igb24gTWFjIE9TWCBiZWNhdXNlIG9mIGJyb2tlbiBzZW1fZ2V0dmFsdWUoKQpAQCAtMjM4LDcgKzIzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB3YWNxdWlyZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZXMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTM0MiwxMSArMzQyLDExIEBACiAgICAgICAgIHdpdGggc2VsZi5fcmxvY2s6CiAgICAgICAgICAgICByZXMgPSBzZWxmLl9yZWFkZXIucmVjdl9ieXRlcygpCiAgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQogCiAgICAgZGVmIHB1dChzZWxmLCBvYmopOgogICAgICAgICAjIHNlcmlhbGl6ZSB0aGUgZGF0YSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrCi0gICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgb2JqID0gX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKICAgICAgICAgaWYgc2VsZi5fd2xvY2sgaXMgTm9uZToKICAgICAgICAgICAgICMgd3JpdGVzIHRvIGEgbWVzc2FnZSBvcmllbnRlZCB3aW4zMiBwaXBlIGFyZSBhdG9taWMKICAgICAgICAgICAgIHNlbGYuX3dyaXRlci5zZW5kX2J5dGVzKG9iaikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKaW5kZXggOGYyMDliNC4uYzA0M2M5YSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKQEAgLTcsNiArNyw3IEBACiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAorZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgY29weXJlZwogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGlvCkBAIC0yMzgsMyArMjM5LDM2IEBACiAgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKICAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgZmlsZW5vPWZkKQogICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQorCisKK2NsYXNzIEFic3RyYWN0UmVkdWNlcihtZXRhY2xhc3M9QUJDTWV0YSk6CisgICAgJycnQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdXNlIGluIGltcGxlbWVudGluZyBhIFJlZHVjdGlvbiBjbGFzcworICAgIHN1aXRhYmxlIGZvciB1c2UgaW4gcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCByZWR1Y3Rpb24gbWVjaGFuaXNtCisgICAgdXNlZCBpbiBtdWx0aXByb2Nlc3NpbmcuJycnCisgICAgRm9ya2luZ1BpY2tsZXIgPSBGb3JraW5nUGlja2xlcgorICAgIHJlZ2lzdGVyID0gcmVnaXN0ZXIKKyAgICBkdW1wID0gZHVtcAorICAgIHNlbmRfaGFuZGxlID0gc2VuZF9oYW5kbGUKKyAgICByZWN2X2hhbmRsZSA9IHJlY3ZfaGFuZGxlCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgc3RlYWxfaGFuZGxlID0gc3RlYWxfaGFuZGxlCisgICAgICAgIGR1cGxpY2F0ZSA9IGR1cGxpY2F0ZQorICAgICAgICBEdXBIYW5kbGUgPSBEdXBIYW5kbGUKKyAgICBlbHNlOgorICAgICAgICBzZW5kZmRzID0gc2VuZGZkcworICAgICAgICByZWN2ZmRzID0gcmVjdmZkcworICAgICAgICBEdXBGZCA9IER1cEZkCisKKyAgICBfcmVkdWNlX21ldGhvZCA9IF9yZWR1Y2VfbWV0aG9kCisgICAgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvciA9IF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IKKyAgICBfcmVidWlsZF9wYXJ0aWFsID0gX3JlYnVpbGRfcGFydGlhbAorICAgIF9yZWR1Y2Vfc29ja2V0ID0gX3JlZHVjZV9zb2NrZXQKKyAgICBfcmVidWlsZF9zb2NrZXQgPSBfcmVidWlsZF9zb2NrZXQKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJlZ2lzdGVyKHR5cGUoX0MoKS5mKSwgX3JlZHVjZV9tZXRob2QpCisgICAgICAgIHJlZ2lzdGVyKHR5cGUobGlzdC5hcHBlbmQpLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQorICAgICAgICByZWdpc3Rlcih0eXBlKGludC5fX2FkZF9fKSwgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcikKKyAgICAgICAgcmVnaXN0ZXIoZnVuY3Rvb2xzLnBhcnRpYWwsIF9yZWR1Y2VfcGFydGlhbCkKKyAgICAgICAgcmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgX3JlZHVjZV9zb2NrZXQpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CmluZGV4IDVlNDZmYzYuLmU0NGE3MjggMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CkBAIC0xNSw3ICsxNSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ3N0b3AnXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQppbmRleCA0MjU4ZjU5Li4yNWNiY2YyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQpAQCAtMTMsOCArMTMsOCBAQAogZnJvbSAuIGltcG9ydCBoZWFwCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKLWZyb20gLmNvbnRleHQgaW1wb3J0IGFzc2VydF9zcGF3bmluZwotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBhc3NlcnRfc3Bhd25pbmcKK19Gb3JraW5nUGlja2xlciA9IHJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBfX2FsbF9fID0gWydSYXdWYWx1ZScsICdSYXdBcnJheScsICdWYWx1ZScsICdBcnJheScsICdjb3B5JywgJ3N5bmNocm9uaXplZCddCiAKQEAgLTEzNCw3ICsxMzQsNyBAQAogZGVmIHJlYnVpbGRfY3R5cGUodHlwZV8sIHdyYXBwZXIsIGxlbmd0aCk6CiAgICAgaWYgbGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICB0eXBlXyA9IHR5cGVfICogbGVuZ3RoCi0gICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKKyAgICBfRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKICAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKICAgICBvYmogPSB0eXBlXy5mcm9tX2J1ZmZlcihidWYpCiAgICAgb2JqLl93cmFwcGVyID0gd3JhcHBlcgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKaW5kZXggNGQ3Njk1MS4uZGZiOWY2NSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CkBAIC05LDEzICs5LDEzIEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN5cwogaW1wb3J0IHJ1bnB5CiBpbXBvcnQgdHlwZXMKIAogZnJvbSAuIGltcG9ydCBnZXRfc3RhcnRfbWV0aG9kLCBzZXRfc3RhcnRfbWV0aG9kCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ19tYWluJywgJ2ZyZWV6ZV9zdXBwb3J0JywgJ3NldF9leGVjdXRhYmxlJywgJ2dldF9leGVjdXRhYmxlJywKQEAgLTk2LDggKzk2LDcgQEAKICAgICBhc3NlcnQgaXNfZm9ya2luZyhzeXMuYXJndikKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgaW1wb3J0IG1zdmNydAotICAgICAgICBmcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IHN0ZWFsX2hhbmRsZQotICAgICAgICBuZXdfaGFuZGxlID0gc3RlYWxfaGFuZGxlKHBhcmVudF9waWQsIHBpcGVfaGFuZGxlKQorICAgICAgICBuZXdfaGFuZGxlID0gcmVkdWN0aW9uLnN0ZWFsX2hhbmRsZShwYXJlbnRfcGlkLCBwaXBlX2hhbmRsZSkKICAgICAgICAgZmQgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUobmV3X2hhbmRsZSwgb3MuT19SRE9OTFkpCiAgICAgZWxzZToKICAgICAgICAgZnJvbSAuIGltcG9ydCBzZW1hcGhvcmVfdHJhY2tlcgpAQCAtMTExLDkgKzExMCw5IEBACiAgICAgd2l0aCBvcy5mZG9wZW4oZmQsICdyYicsIGNsb3NlZmQ9VHJ1ZSkgYXMgZnJvbV9wYXJlbnQ6CiAgICAgICAgIHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2luaGVyaXRpbmcgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHByZXBhcmF0aW9uX2RhdGEgPSBwaWNrbGUubG9hZChmcm9tX3BhcmVudCkKKyAgICAgICAgICAgIHByZXBhcmF0aW9uX2RhdGEgPSByZWR1Y3Rpb24ucGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCiAgICAgICAgICAgICBwcmVwYXJlKHByZXBhcmF0aW9uX2RhdGEpCi0gICAgICAgICAgICBzZWxmID0gcGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCisgICAgICAgICAgICBzZWxmID0gcmVkdWN0aW9uLnBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2luaGVyaXRpbmcKICAgICByZXR1cm4gc2VsZi5fYm9vdHN0cmFwKCkKZGlmZiAtLWdpdCBhL0xpYi9udHBhdGgucHkgYi9MaWIvbnRwYXRoLnB5CmluZGV4IGFmNmE3MDkuLmE4ZjRiMzcgMTAwNjQ0Ci0tLSBhL0xpYi9udHBhdGgucHkKKysrIGIvTGliL250cGF0aC5weQpAQCAtMjgsOCArMjgsNiBAQAogcGF0aHNlcCA9ICc7JwogYWx0c2VwID0gJy8nCiBkZWZwYXRoID0gJy47QzpcXGJpbicKLWlmICdjZScgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgIGRlZnBhdGggPSAnXFxXaW5kb3dzJwogZGV2bnVsbCA9ICdudWwnCiAKIGRlZiBfZ2V0X2JvdGhzZXBzKHBhdGgpOgpAQCAtNDYsNiArNDQsNyBAQAogICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgogCiAgICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzLiIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICB0cnk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZShiJy8nLCBiJ1xcJykubG93ZXIoKQpAQCAtNjYsMTIgKzY1LDE0IEBACiAKIGRlZiBpc2FicyhzKToKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGFic29sdXRlIiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIHMgPSBzcGxpdGRyaXZlKHMpWzFdCiAgICAgcmV0dXJuIGxlbihzKSA+IDAgYW5kIHNbMF0gaW4gX2dldF9ib3Roc2VwcyhzKQogCiAKICMgSm9pbiB0d28gKG9yIG1vcmUpIHBhdGhzLgogZGVmIGpvaW4ocGF0aCwgKnBhdGhzKToKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIHNlcHMgPSBiJ1xcLycKQEAgLTg0LDcgKzg1LDcgQEAKICAgICAgICAgaWYgbm90IHBhdGhzOgogICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgogICAgICAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQotICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgZm9yIHAgaW4gbWFwKG9zLmZzcGF0aCwgcGF0aHMpOgogICAgICAgICAgICAgcF9kcml2ZSwgcF9wYXRoID0gc3BsaXRkcml2ZShwKQogICAgICAgICAgICAgaWYgcF9wYXRoIGFuZCBwX3BhdGhbMF0gaW4gc2VwczoKICAgICAgICAgICAgICAgICAjIFNlY29uZCBwYXRoIGlzIGFic29sdXRlCkBAIC0xMzYsNiArMTM3LDcgQEAKICAgICBQYXRocyBjYW5ub3QgY29udGFpbiBib3RoIGEgZHJpdmUgbGV0dGVyIGFuZCBhIFVOQyBwYXRoLgogCiAgICAgIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIGlmIGxlbihwKSA+PSAyOgogICAgICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgICAgIHNlcCA9IGInXFwnCkBAIC0xOTksNyArMjAxLDcgQEAKIAogICAgIFJldHVybiB0dXBsZSAoaGVhZCwgdGFpbCkgd2hlcmUgdGFpbCBpcyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4KICAgICBFaXRoZXIgcGFydCBtYXkgYmUgZW1wdHkuIiIiCi0KKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocCkKICAgICBkLCBwID0gc3BsaXRkcml2ZShwKQogICAgICMgc2V0IGkgdG8gaW5kZXggYmV5b25kIHAncyBsYXN0IHNsYXNoCkBAIC0yMTgsNiArMjIwLDcgQEAKICMgSXQgaXMgYWx3YXlzIHRydWUgdGhhdCByb290ICsgZXh0ID09IHAuCiAKIGRlZiBzcGxpdGV4dChwKToKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgIHJldHVybiBnZW5lcmljcGF0aC5fc3BsaXRleHQocCwgYidcXCcsIGInLycsIGInLicpCiAgICAgZWxzZToKQEAgLTI3OCw2ICsyODEsNyBAQAogZGVmIGlzbW91bnQocGF0aCk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIG1vdW50IHBvaW50IChhIGRyaXZlIHJvb3QsIHRoZSByb290IG9mIGEKICAgICBzaGFyZSwgb3IgYSBtb3VudGVkIHZvbHVtZSkiIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocGF0aCkKICAgICBwYXRoID0gYWJzcGF0aChwYXRoKQogICAgIHJvb3QsIHJlc3QgPSBzcGxpdGRyaXZlKHBhdGgpCkBAIC0zMDUsNiArMzA5LDcgQEAKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0cy4KIAogICAgIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwgZG8gbm90aGluZy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHRpbGRlID0gYid+JwogICAgIGVsc2U6CkBAIC0zNTQsNiArMzU5LDcgQEAKICAgICAiIiJFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIHRoZSBmb3JtcyAkdmFyLCAke3Zhcn0gYW5kICV2YXIlLgogCiAgICAgVW5rbm93biB2YXJpYWJsZXMgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgaWYgYickJyBub3QgaW4gcGF0aCBhbmQgYiclJyBub3QgaW4gcGF0aDoKICAgICAgICAgICAgIHJldHVybiBwYXRoCkBAIC00NjQsNiArNDcwLDcgQEAKIAogZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgYWx0c2VwID0gYicvJwpAQCAtNTE4LDYgKzUyNSw3IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6ICMgbm90IHJ1bm5pbmcgb24gV2luZG93cyAtIG1vY2sgdXAgc29tZXRoaW5nIHNlbnNpYmxlCiAgICAgZGVmIGFic3BhdGgocGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgdmVyc2lvbiBvZiBhIHBhdGguIiIiCisgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCkBAIC01MzEsNiArNTM5LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2ZXJzaW9uIG9mIGEgcGF0aC4iIiIKIAogICAgICAgICBpZiBwYXRoOiAjIEVtcHR5IHBhdGggbXVzdCByZXR1cm4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwYXRoID0gX2dldGZ1bGxwYXRobmFtZShwYXRoKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CkBAIC01NDksNiArNTU4LDcgQEAKIAogZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Tm9uZSk6CiAgICAgIiIiUmV0dXJuIGEgcmVsYXRpdmUgdmVyc2lvbiBvZiBhIHBhdGgiIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGN1cmRpciA9IGInLicKQEAgLTU2NCw2ICs1NzQsNyBAQAogICAgIGlmIG5vdCBwYXRoOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBwYXRoIHNwZWNpZmllZCIpCiAKKyAgICBzdGFydCA9IG9zLmZzcGF0aChzdGFydCkKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQogICAgICAgICBwYXRoX2FicyA9IGFic3BhdGgobm9ybXBhdGgocGF0aCkpCkBAIC02MDcsNiArNjE4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBhbHRzZXAgPSBiJy8nCmRpZmYgLS1naXQgYS9MaWIvb3Bjb2RlLnB5IGIvTGliL29wY29kZS5weQppbmRleCA0YzgyNmE3Li5iNTkxNmI2IDEwMDY0NAotLS0gYS9MaWIvb3Bjb2RlLnB5CisrKyBiL0xpYi9vcGNvZGUucHkKQEAgLTMxLDEyICszMSwxMCBAQAogaGFzbG9jYWwgPSBbXQogaGFzY29tcGFyZSA9IFtdCiBoYXNmcmVlID0gW10KLWhhc25hcmdzID0gW10KK2hhc25hcmdzID0gW10gIyB1bnVzZWQKIAogb3BtYXAgPSB7fQotb3BuYW1lID0gWycnXSAqIDI1NgotZm9yIG9wIGluIHJhbmdlKDI1Nik6IG9wbmFtZVtvcF0gPSAnPCVyPicgJSAob3AsKQotZGVsIG9wCitvcG5hbWUgPSBbJzwlcj4nICUgKG9wLCkgZm9yIG9wIGluIHJhbmdlKDI1NildCiAKIGRlZiBkZWZfb3AobmFtZSwgb3ApOgogICAgIG9wbmFtZVtvcF0gPSBuYW1lCkBAIC0xMjEsNyArMTE5LDcgQEAKIAogZGVmX29wKCdSRVRVUk5fVkFMVUUnLCA4MykKIGRlZl9vcCgnSU1QT1JUX1NUQVInLCA4NCkKLQorZGVmX29wKCdTRVRVUF9BTk5PVEFUSU9OUycsIDg1KQogZGVmX29wKCdZSUVMRF9WQUxVRScsIDg2KQogZGVmX29wKCdQT1BfQkxPQ0snLCA4NykKIGRlZl9vcCgnRU5EX0ZJTkFMTFknLCA4OCkKQEAgLTE3MSwxMyArMTY5LDEyIEBACiBoYXNsb2NhbC5hcHBlbmQoMTI1KQogZGVmX29wKCdERUxFVEVfRkFTVCcsIDEyNikgICAgICAjIExvY2FsIHZhcmlhYmxlIG51bWJlcgogaGFzbG9jYWwuYXBwZW5kKDEyNikKK25hbWVfb3AoJ1NUT1JFX0FOTk9UQVRJT04nLCAxMjcpICMgSW5kZXggaW4gbmFtZSBsaXN0CiAKIGRlZl9vcCgnUkFJU0VfVkFSQVJHUycsIDEzMCkgICAgIyBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyLCBvciAzKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OJywgMTMxKSAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxMzEpCi1kZWZfb3AoJ01BS0VfRlVOQ1RJT04nLCAxMzIpICAgICMgTnVtYmVyIG9mIGFyZ3Mgd2l0aCBkZWZhdWx0IHZhbHVlcworZGVmX29wKCdDQUxMX0ZVTkNUSU9OJywgMTMxKSAgICAjICNhcmdzCitkZWZfb3AoJ01BS0VfRlVOQ1RJT04nLCAxMzIpICAgICMgRmxhZ3MKIGRlZl9vcCgnQlVJTERfU0xJQ0UnLCAxMzMpICAgICAgIyBOdW1iZXIgb2YgaXRlbXMKLWRlZl9vcCgnTUFLRV9DTE9TVVJFJywgMTM0KQogZGVmX29wKCdMT0FEX0NMT1NVUkUnLCAxMzUpCiBoYXNmcmVlLmFwcGVuZCgxMzUpCiBkZWZfb3AoJ0xPQURfREVSRUYnLCAxMzYpCkBAIC0xODcsMTIgKzE4NCw4IEBACiBkZWZfb3AoJ0RFTEVURV9ERVJFRicsIDEzOCkKIGhhc2ZyZWUuYXBwZW5kKDEzOCkKIAotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUicsIDE0MCkgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MCkKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9LVycsIDE0MSkgICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDEpCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSX0tXJywgMTQyKSAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQyKQorZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgIyAjYXJncyArICNrd2FyZ3MKK2RlZl9vcCgnQ0FMTF9GVU5DVElPTl9FWCcsIDE0MikgICMgRmxhZ3MKIAoganJlbF9vcCgnU0VUVVBfV0lUSCcsIDE0MykKIApAQCAtMjAzLDggKzE5Niw2IEBACiBkZWZfb3AoJ0xPQURfQ0xBU1NERVJFRicsIDE0OCkKIGhhc2ZyZWUuYXBwZW5kKDE0OCkKIAotanJlbF9vcCgnU0VUVVBfQVNZTkNfV0lUSCcsIDE1NCkKLQogZGVmX29wKCdFWFRFTkRFRF9BUkcnLCAxNDQpCiBFWFRFTkRFRF9BUkcgPSAxNDQKIApAQCAtMjE0LDQgKzIwNSwxMSBAQAogZGVmX29wKCdCVUlMRF9UVVBMRV9VTlBBQ0snLCAxNTIpCiBkZWZfb3AoJ0JVSUxEX1NFVF9VTlBBQ0snLCAxNTMpCiAKK2pyZWxfb3AoJ1NFVFVQX0FTWU5DX1dJVEgnLCAxNTQpCisKK2RlZl9vcCgnRk9STUFUX1ZBTFVFJywgMTU1KQorZGVmX29wKCdCVUlMRF9DT05TVF9LRVlfTUFQJywgMTU2KQorZGVmX29wKCdCVUlMRF9TVFJJTkcnLCAxNTcpCitkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwnLCAxNTgpCisKIGRlbCBkZWZfb3AsIG5hbWVfb3AsIGpyZWxfb3AsIGphYnNfb3AKZGlmZiAtLWdpdCBhL0xpYi9vcHRwYXJzZS5weSBiL0xpYi9vcHRwYXJzZS5weQppbmRleCA3NGIzYjM2Li5lOGFjMWUxIDEwMDY0NAotLS0gYS9MaWIvb3B0cGFyc2UucHkKKysrIGIvTGliL29wdHBhcnNlLnB5CkBAIC0zOCw3ICszOCw4IEBACiAgICAgICAgICAgICdPcHRpb25FcnJvcicsCiAgICAgICAgICAgICdPcHRpb25Db25mbGljdEVycm9yJywKICAgICAgICAgICAgJ09wdGlvblZhbHVlRXJyb3InLAotICAgICAgICAgICAnQmFkT3B0aW9uRXJyb3InXQorICAgICAgICAgICAnQmFkT3B0aW9uRXJyb3InLAorICAgICAgICAgICAnY2hlY2tfY2hvaWNlJ10KIAogX19jb3B5cmlnaHRfXyA9ICIiIgogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDYgR3JlZ29yeSBQLiBXYXJkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL0xpYi9vcy5weSBiL0xpYi9vcy5weQppbmRleCBiNGM2NTFkLi4wYzkxMDdjIDEwMDY0NAotLS0gYS9MaWIvb3MucHkKKysrIGIvTGliL29zLnB5CkBAIC0xLDEyICsxLDEyIEBACiByIiIiT1Mgcm91dGluZXMgZm9yIE5UIG9yIFBvc2l4IGRlcGVuZGluZyBvbiB3aGF0IHN5c3RlbSB3ZSdyZSBvbi4KIAogVGhpcyBleHBvcnRzOgotICAtIGFsbCBmdW5jdGlvbnMgZnJvbSBwb3NpeCwgbnQgb3IgY2UsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCisgIC0gYWxsIGZ1bmN0aW9ucyBmcm9tIHBvc2l4IG9yIG50LCBlLmcuIHVubGluaywgc3RhdCwgZXRjLgogICAtIG9zLnBhdGggaXMgZWl0aGVyIHBvc2l4cGF0aCBvciBudHBhdGgKLSAgLSBvcy5uYW1lIGlzIGVpdGhlciAncG9zaXgnLCAnbnQnIG9yICdjZScuCi0gIC0gb3MuY3VyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKCcuJyBvciAnOicpCi0gIC0gb3MucGFyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFyZW50IGRpcmVjdG9yeSAoJy4uJyBvciAnOjonKQotICAtIG9zLnNlcCBpcyB0aGUgKG9yIGEgbW9zdCBjb21tb24pIHBhdGhuYW1lIHNlcGFyYXRvciAoJy8nIG9yICc6JyBvciAnXFwnKQorICAtIG9zLm5hbWUgaXMgZWl0aGVyICdwb3NpeCcgb3IgJ250JworICAtIG9zLmN1cmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IChhbHdheXMgJy4nKQorICAtIG9zLnBhcmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcmVudCBkaXJlY3RvcnkgKGFsd2F5cyAnLi4nKQorICAtIG9zLnNlcCBpcyB0aGUgKG9yIGEgbW9zdCBjb21tb24pIHBhdGhuYW1lIHNlcGFyYXRvciAoJy8nIG9yICdcXCcpCiAgIC0gb3MuZXh0c2VwIGlzIHRoZSBleHRlbnNpb24gc2VwYXJhdG9yIChhbHdheXMgJy4nKQogICAtIG9zLmFsdHNlcCBpcyB0aGUgYWx0ZXJuYXRlIHBhdGhuYW1lIHNlcGFyYXRvciAoTm9uZSBvciAnLycpCiAgIC0gb3MucGF0aHNlcCBpcyB0aGUgY29tcG9uZW50IHNlcGFyYXRvciB1c2VkIGluICRQQVRIIGV0YwpAQCAtMjIsNyArMjIsNyBAQAogIiIiCiAKICMnCi0KK2ltcG9ydCBhYmMKIGltcG9ydCBzeXMsIGVycm5vCiBpbXBvcnQgc3RhdCBhcyBzdAogCkBAIC04NSwyNyArODUsNiBAQAogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogCi1lbGlmICdjZScgaW4gX25hbWVzOgotICAgIG5hbWUgPSAnY2UnCi0gICAgbGluZXNlcCA9ICdcclxuJwotICAgIGZyb20gY2UgaW1wb3J0ICoKLSAgICB0cnk6Ci0gICAgICAgIGZyb20gY2UgaW1wb3J0IF9leGl0Ci0gICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgIyBXZSBjYW4gdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIHBhdGguCi0gICAgaW1wb3J0IG50cGF0aCBhcyBwYXRoCi0KLSAgICBpbXBvcnQgY2UKLSAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChjZSkpCi0gICAgZGVsIGNlCi0KLSAgICB0cnk6Ci0gICAgICAgIGZyb20gY2UgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotCiBlbHNlOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBvcyBzcGVjaWZpYyBtb2R1bGUgZm91bmQnKQogCkBAIC0zNTMsOSArMzMyLDEwIEBACiAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAKICAgICAiIiIKLQorICAgIHRvcCA9IGZzcGF0aCh0b3ApCiAgICAgZGlycyA9IFtdCiAgICAgbm9uZGlycyA9IFtdCisgICAgd2Fsa19kaXJzID0gW10KIAogICAgICMgV2UgbWF5IG5vdCBoYXZlIHJlYWQgcGVybWlzc2lvbiBmb3IgdG9wLCBpbiB3aGljaCBjYXNlIHdlIGNhbid0CiAgICAgIyBnZXQgYSBsaXN0IG9mIHRoZSBmaWxlcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zLiAgb3Mud2FsawpAQCAtMzYzLDQ4ICszNDMsNTUgQEAKICAgICAjIG1pbm9yIHJlYXNvbiB3aGVuIChzYXkpIGEgdGhvdXNhbmQgcmVhZGFibGUgZGlyZWN0b3JpZXMgYXJlIHN0aWxsCiAgICAgIyBsZWZ0IHRvIHZpc2l0LiAgVGhhdCBsb2dpYyBpcyBjb3BpZWQgaGVyZS4KICAgICB0cnk6Ci0gICAgICAgIGlmIG5hbWUgPT0gJ250JyBhbmQgaXNpbnN0YW5jZSh0b3AsIGJ5dGVzKToKLSAgICAgICAgICAgIHNjYW5kaXJfaXQgPSBfZHVtbXlfc2NhbmRpcih0b3ApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdGUgdGhhdCBzY2FuZGlyIGlzIGdsb2JhbCBpbiB0aGlzIG1vZHVsZSBkdWUKLSAgICAgICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KLSAgICAgICAgICAgIHNjYW5kaXJfaXQgPSBzY2FuZGlyKHRvcCkKLSAgICAgICAgZW50cmllcyA9IGxpc3Qoc2NhbmRpcl9pdCkKKyAgICAgICAgIyBOb3RlIHRoYXQgc2NhbmRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCisgICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KKyAgICAgICAgc2NhbmRpcl9pdCA9IHNjYW5kaXIodG9wKQogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgogICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb25lcnJvcihlcnJvcikKICAgICAgICAgcmV0dXJuCiAKLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAjIElmIGlzX2RpcigpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZSBlbnRyeSBpcyBub3QKLSAgICAgICAgICAgICMgYSBkaXJlY3RvcnksIHNhbWUgYmVoYXZpb3VyIHRoYW4gb3MucGF0aC5pc2RpcigpLgotICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKLQotICAgICAgICBpZiBpc19kaXI6Ci0gICAgICAgICAgICBkaXJzLmFwcGVuZChlbnRyeS5uYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQoZW50cnkubmFtZSkKLQotICAgICAgICBpZiBub3QgdG9wZG93biBhbmQgaXNfZGlyOgotICAgICAgICAgICAgIyBCb3R0b20tdXA6IHJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3J5LCBidXQgZXhjbHVkZSBzeW1saW5rcyB0bwotICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBpZiBmb2xsb3dsaW5rcyBpcyBGYWxzZQotICAgICAgICAgICAgaWYgZm9sbG93bGlua3M6Ci0gICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKKyAgICB3aXRoIHNjYW5kaXJfaXQ6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQotICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgotICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKLSAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IG5leHQoc2NhbmRpcl9pdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgorICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAgIGlmIHdhbGtfaW50bzoKLSAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsoZW50cnkucGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAorICAgICAgICAgICAgICAgICMgYSBkaXJlY3RvcnksIHNhbWUgYmVoYXZpb3VyIHRoYW4gb3MucGF0aC5pc2RpcigpLgorICAgICAgICAgICAgICAgIGlzX2RpciA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIGlzX2RpcjoKKyAgICAgICAgICAgICAgICBkaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorCisgICAgICAgICAgICBpZiBub3QgdG9wZG93biBhbmQgaXNfZGlyOgorICAgICAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KKyAgICAgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCisgICAgICAgICAgICAgICAgaWYgZm9sbG93bGlua3M6CisgICAgICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBpc19zeW1saW5rKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgb3MucGF0aC5pc2xpbmsoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworCisgICAgICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgorICAgICAgICAgICAgICAgICAgICB3YWxrX2RpcnMuYXBwZW5kKGVudHJ5LnBhdGgpCiAKICAgICAjIFlpZWxkIGJlZm9yZSByZWN1cnNpb24gaWYgZ29pbmcgdG9wIGRvd24KICAgICBpZiB0b3Bkb3duOgpAQCAtNDIxLDU3ICs0MDgsMTIgQEAKICAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgogICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgZWxzZToKKyAgICAgICAgIyBSZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yaWVzCisgICAgICAgIGZvciBuZXdfcGF0aCBpbiB3YWxrX2RpcnM6CisgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQogICAgICAgICAjIFlpZWxkIGFmdGVyIHJlY3Vyc2lvbiBpZiBnb2luZyBib3R0b20gdXAKICAgICAgICAgeWllbGQgdG9wLCBkaXJzLCBub25kaXJzCiAKLWNsYXNzIF9EdW1teURpckVudHJ5OgotICAgICIiIkR1bW15IGltcGxlbWVudGF0aW9uIG9mIERpckVudHJ5Ci0KLSAgICBPbmx5IHVzZWQgaW50ZXJuYWxseSBieSBvcy53YWxrKGJ5dGVzKS4gU2luY2Ugb3Mud2FsaygpIGRvZXNuJ3QgbmVlZCB0aGUKLSAgICBmb2xsb3dfc3ltbGlua3MgcGFyYW1ldGVyOiBkb24ndCBpbXBsZW1lbnQgaXQsIGFsd2F5cyBmb2xsb3cgc3ltYm9saWMKLSAgICBsaW5rcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXIsIG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGguam9pbihkaXIsIG5hbWUpCi0gICAgICAgICMgTWltaWNrIEZpbmRGaXJzdEZpbGUvRmluZE5leHRGaWxlOiB3ZSBzaG91bGQgZ2V0IGZpbGUgYXR0cmlidXRlcwotICAgICAgICAjIHdoaWxlIGl0ZXJhdGluZyBvbiBhIGRpcmVjdG9yeQotICAgICAgICBzZWxmLl9zdGF0ID0gTm9uZQotICAgICAgICBzZWxmLl9sc3RhdCA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgc3RhdChzZWxmLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6Ci0gICAgICAgIGlmIGZvbGxvd19zeW1saW5rczoKLSAgICAgICAgICAgIGlmIHNlbGYuX3N0YXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ID0gc3RhdChzZWxmLnBhdGgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RhdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2VsZi5fbHN0YXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sc3RhdCA9IHN0YXQoc2VsZi5wYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbHN0YXQKLQotICAgIGRlZiBpc19kaXIoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2xzdGF0IGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5pc19zeW1saW5rKCk6Ci0gICAgICAgICAgICAjIHVzZSB0aGUgY2FjaGUgbHN0YXQKLSAgICAgICAgICAgIHN0YXQgPSBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICAgICAgcmV0dXJuIHN0LlNfSVNESVIoc3RhdC5zdF9tb2RlKQotCi0gICAgICAgIHN0YXQgPSBzZWxmLnN0YXQoKQotICAgICAgICByZXR1cm4gc3QuU19JU0RJUihzdGF0LnN0X21vZGUpCi0KLSAgICBkZWYgaXNfc3ltbGluayhzZWxmKToKLSAgICAgICAgc3RhdCA9IHNlbGYuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgIHJldHVybiBzdC5TX0lTTE5LKHN0YXQuc3RfbW9kZSkKLQotZGVmIF9kdW1teV9zY2FuZGlyKGRpcik6Ci0gICAgIyBsaXN0ZGlyLWJhc2VkIGltcGxlbWVudGF0aW9uIGZvciBieXRlcyBwYXRjaGVzIG9uIFdpbmRvd3MKLSAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKGRpcik6Ci0gICAgICAgIHlpZWxkIF9EdW1teURpckVudHJ5KGRpciwgbmFtZSkKLQogX19hbGxfXy5hcHBlbmQoIndhbGsiKQogCiBpZiB7b3Blbiwgc3RhdH0gPD0gc3VwcG9ydHNfZGlyX2ZkIGFuZCB7bGlzdGRpciwgc3RhdH0gPD0gc3VwcG9ydHNfZmQ6CkBAIC01MDksNiArNDUxLDggQEAKICAgICAgICAgICAgIGlmICdDVlMnIGluIGRpcnM6CiAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcwogICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodG9wLCBpbnQpIG9yIG5vdCBoYXNhdHRyKHRvcCwgJ19faW5kZXhfXycpOgorICAgICAgICAgICAgdG9wID0gZnNwYXRoKHRvcCkKICAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKICAgICAgICAgIyBsc3RhdCgpL29wZW4oKS9mc3RhdCgpIHRyaWNrLgogICAgICAgICBvcmlnX3N0ID0gc3RhdCh0b3AsIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPWRpcl9mZCkKQEAgLTg0MywzNiArNzg3LDMxIEBACiAKIGRlZiBfZnNjb2RlYygpOgogICAgIGVuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCi0gICAgaWYgZW5jb2RpbmcgPT0gJ21iY3MnOgotICAgICAgICBlcnJvcnMgPSAnc3RyaWN0JwotICAgIGVsc2U6Ci0gICAgICAgIGVycm9ycyA9ICdzdXJyb2dhdGVlc2NhcGUnCisgICAgZXJyb3JzID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKQogCiAgICAgZGVmIGZzZW5jb2RlKGZpbGVuYW1lKToKKyAgICAgICAgIiIiRW5jb2RlIGZpbGVuYW1lIChhbiBvcy5QYXRoTGlrZSwgYnl0ZXMsIG9yIHN0cikgdG8gdGhlIGZpbGVzeXN0ZW0KKyAgICAgICAgZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCByZXR1cm4gYnl0ZXMgdW5jaGFuZ2VkLgorICAgICAgICBPbiBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZiB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMKKyAgICAgICAgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCiAgICAgICAgICIiIgotICAgICAgICBFbmNvZGUgZmlsZW5hbWUgdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvcgotICAgICAgICBoYW5kbGVyLCByZXR1cm4gYnl0ZXMgdW5jaGFuZ2VkLiBPbiBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZgotICAgICAgICB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBzdHIpOgorICAgICAgICBmaWxlbmFtZSA9IGZzcGF0aChmaWxlbmFtZSkgICMgRG9lcyB0eXBlLWNoZWNraW5nIG9mIGBmaWxlbmFtZWAuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdCBieXRlcyBvciBzdHIsIG5vdCAlcyIgJSB0eXBlKGZpbGVuYW1lKS5fX25hbWVfXykKKyAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQogCiAgICAgZGVmIGZzZGVjb2RlKGZpbGVuYW1lKToKKyAgICAgICAgIiIiRGVjb2RlIGZpbGVuYW1lIChhbiBvcy5QYXRoTGlrZSwgYnl0ZXMsIG9yIHN0cikgZnJvbSB0aGUgZmlsZXN5c3RlbQorICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBzdHIgdW5jaGFuZ2VkLiBPbgorICAgICAgICBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZiB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMKKyAgICAgICAgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCiAgICAgICAgICIiIgotICAgICAgICBEZWNvZGUgZmlsZW5hbWUgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yCi0gICAgICAgIGhhbmRsZXIsIHJldHVybiBzdHIgdW5jaGFuZ2VkLiBPbiBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZgotICAgICAgICB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBzdHIpOgotICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgorICAgICAgICBmaWxlbmFtZSA9IGZzcGF0aChmaWxlbmFtZSkgICMgRG9lcyB0eXBlLWNoZWNraW5nIG9mIGBmaWxlbmFtZWAuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKICAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0IGJ5dGVzIG9yIHN0ciwgbm90ICVzIiAlIHR5cGUoZmlsZW5hbWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICByZXR1cm4gZnNlbmNvZGUsIGZzZGVjb2RlCiAKQEAgLTEwNzAsMyArMTAwOSw1NSBAQAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZmQgdHlwZSAoJXMsIGV4cGVjdGVkIGludGVnZXIpIiAlIHR5cGUoZmQpKQogICAgIGltcG9ydCBpbwogICAgIHJldHVybiBpby5vcGVuKGZkLCAqYXJncywgKiprd2FyZ3MpCisKKworIyBGb3IgdGVzdGluZyBwdXJwb3NlcywgbWFrZSBzdXJlIHRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUgd2hlbiB0aGUgQworIyBpbXBsZW1lbnRhdGlvbiBleGlzdHMuCitkZWYgX2ZzcGF0aChwYXRoKToKKyAgICAiIiJSZXR1cm4gdGhlIHBhdGggcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoLWxpa2Ugb2JqZWN0LgorCisgICAgSWYgc3RyIG9yIGJ5dGVzIGlzIHBhc3NlZCBpbiwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiBPdGhlcndpc2UgdGhlCisgICAgb3MuUGF0aExpa2UgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZ2V0IHRoZSBwYXRoIHJlcHJlc2VudGF0aW9uLiBJZiB0aGUKKyAgICBwYXRoIHJlcHJlc2VudGF0aW9uIGlzIG5vdCBzdHIgb3IgYnl0ZXMsIFR5cGVFcnJvciBpcyByYWlzZWQuIElmIHRoZQorICAgIHByb3ZpZGVkIHBhdGggaXMgbm90IHN0ciwgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBUeXBlRXJyb3IgaXMgcmFpc2VkLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgICMgV29yayBmcm9tIHRoZSBvYmplY3QncyB0eXBlIHRvIG1hdGNoIG1ldGhvZCByZXNvbHV0aW9uIG9mIG90aGVyIG1hZ2ljCisgICAgIyBtZXRob2RzLgorICAgIHBhdGhfdHlwZSA9IHR5cGUocGF0aCkKKyAgICB0cnk6CisgICAgICAgIHBhdGhfcmVwciA9IHBhdGhfdHlwZS5fX2ZzcGF0aF9fKHBhdGgpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBpZiBoYXNhdHRyKHBhdGhfdHlwZSwgJ19fZnNwYXRoX18nKToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIHN0ciwgYnl0ZXMgb3Igb3MuUGF0aExpa2Ugb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAiICsgcGF0aF90eXBlLl9fbmFtZV9fKQorICAgIGlmIGlzaW5zdGFuY2UocGF0aF9yZXByLCAoc3RyLCBieXRlcykpOgorICAgICAgICByZXR1cm4gcGF0aF9yZXByCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCB7fS5fX2ZzcGF0aF9fKCkgdG8gcmV0dXJuIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCB7fSIuZm9ybWF0KHBhdGhfdHlwZS5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHBhdGhfcmVwcikuX19uYW1lX18pKQorCisjIElmIHRoZXJlIGlzIG5vIEMgaW1wbGVtZW50YXRpb24sIG1ha2UgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gdGhlCisjIGltcGxlbWVudGF0aW9uIGFzIHRyYW5zcGFyZW50bHkgYXMgcG9zc2libGUuCitpZiBub3QgX2V4aXN0cygnZnNwYXRoJyk6CisgICAgZnNwYXRoID0gX2ZzcGF0aAorICAgIGZzcGF0aC5fX25hbWVfXyA9ICJmc3BhdGgiCisKKworY2xhc3MgUGF0aExpa2UoYWJjLkFCQyk6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgdGhlIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2wuIiIiCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIHN1YmNsYXNzKToKKyAgICAgICAgcmV0dXJuIGhhc2F0dHIoc3ViY2xhc3MsICdfX2ZzcGF0aF9fJykKZGlmZiAtLWdpdCBhL0xpYi9wYXRobGliLnB5IGIvTGliL3BhdGhsaWIucHkKaW5kZXggMTQ4MGUyZi4uMWI1YWIzOCAxMDA2NDQKLS0tIGEvTGliL3BhdGhsaWIucHkKKysrIGIvTGliL3BhdGhsaWIucHkKQEAgLTM4NSw2ICszODUsOCBAQAogCiAgICAgbGlzdGRpciA9IF93cmFwX3N0cmZ1bmMob3MubGlzdGRpcikKIAorICAgIHNjYW5kaXIgPSBfd3JhcF9zdHJmdW5jKG9zLnNjYW5kaXIpCisKICAgICBjaG1vZCA9IF93cmFwX3N0cmZ1bmMob3MuY2htb2QpCiAKICAgICBpZiBoYXNhdHRyKG9zLCAibGNobW9kIik6CkBAIC00MjksMjUgKzQzMSw2IEBACiAjIEdsb2JiaW5nIGhlbHBlcnMKICMKIAotQGNvbnRleHRtYW5hZ2VyCi1kZWYgX2NhY2hlZChmdW5jKToKLSAgICB0cnk6Ci0gICAgICAgIGZ1bmMuX19jYWNoZWRfXwotICAgICAgICB5aWVsZCBmdW5jCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBjYWNoZSA9IHt9Ci0gICAgICAgIGRlZiB3cmFwcGVyKCphcmdzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbYXJnc10KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhY2hlW2FyZ3NdID0gZnVuYygqYXJncykKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAgICAgd3JhcHBlci5fX2NhY2hlZF9fID0gVHJ1ZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZCB3cmFwcGVyCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjYWNoZS5jbGVhcigpCi0KIGRlZiBfbWFrZV9zZWxlY3RvcihwYXR0ZXJuX3BhcnRzKToKICAgICBwYXQgPSBwYXR0ZXJuX3BhcnRzWzBdCiAgICAgY2hpbGRfcGFydHMgPSBwYXR0ZXJuX3BhcnRzWzE6XQpAQCAtNDczLDggKzQ1NiwxMCBAQAogICAgICAgICBzZWxmLmNoaWxkX3BhcnRzID0gY2hpbGRfcGFydHMKICAgICAgICAgaWYgY2hpbGRfcGFydHM6CiAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9tYWtlX3NlbGVjdG9yKGNoaWxkX3BhcnRzKQorICAgICAgICAgICAgc2VsZi5kaXJvbmx5ID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zdWNjZXNzb3IgPSBfVGVybWluYXRpbmdTZWxlY3RvcigpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBGYWxzZQogCiAgICAgZGVmIHNlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoKToKICAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIGFsbCBjaGlsZCBwYXRocyBvZiBgcGFyZW50X3BhdGhgIG1hdGNoZWQgYnkgdGhpcwpAQCAtNDgyLDEzICs0NjcsMTUgQEAKICAgICAgICAgcGF0aF9jbHMgPSB0eXBlKHBhcmVudF9wYXRoKQogICAgICAgICBpc19kaXIgPSBwYXRoX2Nscy5pc19kaXIKICAgICAgICAgZXhpc3RzID0gcGF0aF9jbHMuZXhpc3RzCi0gICAgICAgIGxpc3RkaXIgPSBwYXJlbnRfcGF0aC5fYWNjZXNzb3IubGlzdGRpcgotICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X2Zyb20ocGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKQorICAgICAgICBzY2FuZGlyID0gcGFyZW50X3BhdGguX2FjY2Vzc29yLnNjYW5kaXIKKyAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NlbGVjdF9mcm9tKHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcikKIAogCiBjbGFzcyBfVGVybWluYXRpbmdTZWxlY3RvcjoKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHlpZWxkIHBhcmVudF9wYXRoCiAKIApAQCAtNDk4LDEzICs0ODUsMTEgQEAKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKHNlbGYubmFtZSkKLSAgICAgICAgICAgIGlmIGV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20ocGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgICAgICAgICAgaWYgKGlzX2RpciBpZiBzZWxmLmRpcm9ubHkgZWxzZSBleGlzdHMpKHBhdGgpOgorICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgIHJldHVybgpAQCAtNTE2LDE3ICs1MDEsMTggQEAKICAgICAgICAgc2VsZi5wYXQgPSByZS5jb21waWxlKGZubWF0Y2gudHJhbnNsYXRlKHBhdCkpCiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgY2YgPSBwYXJlbnRfcGF0aC5fZmxhdm91ci5jYXNlZm9sZAotICAgICAgICAgICAgZm9yIG5hbWUgaW4gbGlzdGRpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5wYXQubWF0Y2goY2FzZWZvbGRlZCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRpcm9ubHkgb3IgZW50cnkuaXNfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBlbnRyeS5uYW1lCisgICAgICAgICAgICAgICAgICAgIGNhc2Vmb2xkZWQgPSBjZihuYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20ocGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgIHJldHVybgogCkBAIC01MzcsMzIgKzUyMywzMCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXQsIGNoaWxkX3BhcnRzKToKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9pdGVyYXRlX2RpcmVjdG9yaWVzKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGxpc3RkaXIpOgorICAgIGRlZiBfaXRlcmF0ZV9kaXJlY3RvcmllcyhzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKICAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gbGlzdGRpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBpc19kaXIocGF0aCkgYW5kIG5vdCBwYXRoLmlzX3N5bWxpbmsoKToKLSAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXRoLCBpc19kaXIsIGxpc3RkaXIpOgorICAgICAgICAgICAgZW50cmllcyA9IGxpc3Qoc2NhbmRpcihwYXJlbnRfcGF0aCkpCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgICAgICBpZiBlbnRyeS5pc19kaXIoKSBhbmQgbm90IGVudHJ5LmlzX3N5bWxpbmsoKToKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgoZW50cnkubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXRoLCBpc19kaXIsIHNjYW5kaXIpOgogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHdpdGggX2NhY2hlZChsaXN0ZGlyKSBhcyBsaXN0ZGlyOgotICAgICAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc29yX3NlbGVjdCA9IHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbQotICAgICAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHN1Y2Nlc3Nvcl9zZWxlY3Qoc3RhcnRpbmdfcG9pbnQsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwIG5vdCBpbiB5aWVsZGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkZWQuYWRkKHApCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCisgICAgICAgICAgICB5aWVsZGVkID0gc2V0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCisgICAgICAgICAgICAgICAgZm9yIHN0YXJ0aW5nX3BvaW50IGluIHNlbGYuX2l0ZXJhdGVfZGlyZWN0b3JpZXMocGFyZW50X3BhdGgsIGlzX2Rpciwgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHN1Y2Nlc3Nvcl9zZWxlY3Qoc3RhcnRpbmdfcG9pbnQsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkZWQuYWRkKHApCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkZWQuY2xlYXIoKQogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTYzNCwxMyArNjE4LDE2IEBACiAgICAgICAgIGZvciBhIGluIGFyZ3M6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIFB1cmVQYXRoKToKICAgICAgICAgICAgICAgICBwYXJ0cyArPSBhLl9wYXJ0cwotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgIyBGb3JjZS1jYXN0IHN0ciBzdWJjbGFzc2VzIHRvIHN0ciAoaXNzdWUgIzIxMTI3KQotICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzdHIoYSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHBhdGggb3Igc3RyIG9iamVjdCwgbm90ICVyIgotICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCisgICAgICAgICAgICAgICAgYSA9IG9zLmZzcGF0aChhKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgIyBGb3JjZS1jYXN0IHN0ciBzdWJjbGFzc2VzIHRvIHN0ciAoaXNzdWUgIzIxMTI3KQorICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc3RyKGEpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYSBzdHIgb2JqZWN0IG9yIGFuIG9zLlBhdGhMaWtlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgcmV0dXJuaW5nIHN0ciwgbm90ICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgJSB0eXBlKGEpKQogICAgICAgICByZXR1cm4gY2xzLl9mbGF2b3VyLnBhcnNlX3BhcnRzKHBhcnRzKQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC02OTMsNiArNjgwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFydHMpIG9yICcuJwogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0cgogCisgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKwogICAgIGRlZiBhc19wb3NpeChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdGggd2l0aCBmb3J3YXJkICgvKQogICAgICAgICBzbGFzaGVzLiIiIgpAQCAtOTQzLDYgKzkzMywxMCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQogCisjIENhbid0IHN1YmNsYXNzIG9zLlBhdGhMaWtlIGZyb20gUHVyZVBhdGggYW5kIGtlZXAgdGhlIGNvbnN0cnVjdG9yCisjIG9wdGltaXphdGlvbnMgaW4gUHVyZVBhdGguX3BhcnNlX2FyZ3MoKS4KK29zLlBhdGhMaWtlLnJlZ2lzdGVyKFB1cmVQYXRoKQorCiAKIGNsYXNzIFB1cmVQb3NpeFBhdGgoUHVyZVBhdGgpOgogICAgIF9mbGF2b3VyID0gX3Bvc2l4X2ZsYXZvdXIKZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDQ3OTcyNjUuLjk3NjE4YjAgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNTIsNyArNTIsOCBAQAogZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZCBhdCB0aGUKIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmIGJvdGgKIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZCBhbGlhc2VzCi1kZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLgorZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS4gIFRoaXMgYmVoYXZpb3IgY2FuIGJlCitkaXNhYmxlZCBieSBwYXNzaW5nIHRoZSAicmVhZHJjPUZhbHNlIiBhcmd1bWVudCB0byB0aGUgUGRiIGNvbnN0cnVjdG9yLgogCiBBc2lkZSBmcm9tIGFsaWFzZXMsIHRoZSBkZWJ1Z2dlciBpcyBub3QgZGlyZWN0bHkgcHJvZ3JhbW1hYmxlOyBidXQgaXQKIGlzIGltcGxlbWVudGVkIGFzIGEgY2xhc3MgZnJvbSB3aGljaCB5b3UgY2FuIGRlcml2ZSB5b3VyIG93biBkZWJ1Z2dlcgpAQCAtMTM3LDcgKzEzOCw3IEBACiAgICAgX3ByZXZpb3VzX3NpZ2ludF9oYW5kbGVyID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLAotICAgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSk6CiAgICAgICAgIGJkYi5CZGIuX19pbml0X18oc2VsZiwgc2tpcD1za2lwKQogICAgICAgICBjbWQuQ21kLl9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5LCBzdGRpbiwgc3Rkb3V0KQogICAgICAgICBpZiBzdGRvdXQ6CkBAIC0xNjAsMTggKzE2MSwxOSBAQAogCiAgICAgICAgICMgUmVhZCAkSE9NRS8ucGRicmMgYW5kIC4vLnBkYnJjCiAgICAgICAgIHNlbGYucmNMaW5lcyA9IFtdCi0gICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgZW52SG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICBpZiByZWFkcmM6CisgICAgICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBlbnZIb21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKCIucGRicmMiKSBhcyByY0ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHNlbGYuY29tbWFuZHMgPSB7fSAjIGFzc29jaWF0ZXMgYSBjb21tYW5kIGxpc3QgdG8gYnJlYWtwb2ludCBudW1iZXJzCiAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHQgPSB7fSAjIGZvciBlYWNoIGJwIG51bSwgdGVsbHMgaWYgdGhlIHByb21wdApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggMDQwZWNiMi4uYzgzNzBjOSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yNyw2ICsyNyw3IEBACiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIGltcG9ydCBzeXMKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplCiBmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCkBAIC01NDgsNyArNTQ5LDcgQEAKICAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCiAKICAgICAgICAgZnVuY19uYW1lID0gZ2V0YXR0cihmdW5jLCAiX19uYW1lX18iLCAiIikKLSAgICAgICAgaWYgc2VsZi5wcm90byA+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/JykKKyAgICByJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJworICAgIHInXFtQeVB5IFteXF1dK1xdPycpCiAKIF9zeXNfdmVyc2lvbl9jYWNoZSA9IHt9CiAKQEAgLTEzNDUsNyArMTM0NCw3IEBACiAgICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTMyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3BsaXN0bGliLnB5IGIvTGliL3BsaXN0bGliLnB5CmluZGV4IDI1MDJiMzkuLjA5YmU1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9wbGlzdGxpYi5weQorKysgYi9MaWIvcGxpc3RsaWIucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKICIiIgogX19hbGxfXyA9IFsKICAgICAicmVhZFBsaXN0IiwgIndyaXRlUGxpc3QiLCAicmVhZFBsaXN0RnJvbUJ5dGVzIiwgIndyaXRlUGxpc3RUb0J5dGVzIiwKLSAgICAiUGxpc3QiLCAiRGF0YSIsICJEaWN0IiwgIkZNVF9YTUwiLCAiRk1UX0JJTkFSWSIsCisgICAgIlBsaXN0IiwgIkRhdGEiLCAiRGljdCIsICJJbnZhbGlkRmlsZUV4Y2VwdGlvbiIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLAogICAgICJsb2FkIiwgImR1bXAiLCAibG9hZHMiLCAiZHVtcHMiCiBdCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IGY2NzIzOTAuLmNhZTY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtNDMxLDYgKzQzMSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGQ5ZjNmOTkuLjZkYmRhYjIgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtNDksNiArNDksNyBAQAogCiBkZWYgbm9ybWNhc2Uocyk6CiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuICBIYXMgbm8gZWZmZWN0IHVuZGVyIFBvc2l4IiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQpAQCAtNjAsNiArNjEsNyBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzZXAgPSBfZ2V0X3NlcChzKQogICAgIHJldHVybiBzLnN0YXJ0c3dpdGgoc2VwKQogCkBAIC03MywxMiArNzUsMTMgQEAKICAgICBJZiBhbnkgY29tcG9uZW50IGlzIGFuIGFic29sdXRlIHBhdGgsIGFsbCBwcmV2aW91cyBwYXRoIGNvbXBvbmVudHMKICAgICB3aWxsIGJlIGRpc2NhcmRlZC4gIEFuIGVtcHR5IGxhc3QgcGFydCB3aWxsIHJlc3VsdCBpbiBhIHBhdGggdGhhdAogICAgIGVuZHMgd2l0aCBhIHNlcGFyYXRvci4iIiIKKyAgICBhID0gb3MuZnNwYXRoKGEpCiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKICAgICAgICAgaWYgbm90IHA6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCi0gICAgICAgIGZvciBiIGluIHA6CisgICAgICAgIGZvciBiIGluIG1hcChvcy5mc3BhdGgsIHApOgogICAgICAgICAgICAgaWYgYi5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IGIKICAgICAgICAgICAgIGVsaWYgbm90IHBhdGggb3IgcGF0aC5lbmRzd2l0aChzZXApOgpAQCAtOTksNiArMTAyLDcgQEAKIGRlZiBzcGxpdChwKToKICAgICAiIiJTcGxpdCBhIHBhdGhuYW1lLiAgUmV0dXJucyB0dXBsZSAiKGhlYWQsIHRhaWwpIiB3aGVyZSAidGFpbCIgaXMKICAgICBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4gIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQsIHRhaWwgPSBwWzppXSwgcFtpOl0KQEAgLTExMyw2ICsxMTcsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBleHRzZXAgPSBiJy4nCkBAIC0xMjgsNiArMTMzLDcgQEAKIGRlZiBzcGxpdGRyaXZlKHApOgogICAgICIiIlNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZSBhbmQgcGF0aC4gT24gUG9zaXgsIGRyaXZlIGlzIGFsd2F5cwogICAgIGVtcHR5LiIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICByZXR1cm4gcFs6MF0sIHAKIAogCkBAIC0xMzUsNiArMTQxLDcgQEAKIAogZGVmIGJhc2VuYW1lKHApOgogICAgICIiIlJldHVybnMgdGhlIGZpbmFsIGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICByZXR1cm4gcFtpOl0KQEAgLTE0NCw2ICsxNTEsNyBAQAogCiBkZWYgZGlybmFtZShwKToKICAgICAiIiJSZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQgPSBwWzppXQpAQCAtMjIyLDYgKzIzMCw3IEBACiBkZWYgZXhwYW5kdXNlcihwYXRoKToKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0aW9ucy4gIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwKICAgICBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTI2Nyw2ICsyNzYsNyBAQAogZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiBmb3JtICR2YXIgYW5kICR7dmFyfS4gIFVua25vd24gdmFyaWFibGVzCiAgICAgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBnbG9iYWwgX3ZhcnByb2csIF92YXJwcm9nYgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoOgpAQCAtMzE4LDYgKzMyOCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgZW1wdHkgPSBiJycKQEAgLTM1NSw2ICszNjYsNyBAQAogCiBkZWYgYWJzcGF0aChwYXRoKToKICAgICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtMzcwLDYgKzM4Miw3IEBACiBkZWYgcmVhbHBhdGgoZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55CiBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aC4iIiIKKyAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICBwYXRoLCBvayA9IF9qb2lucmVhbHBhdGgoZmlsZW5hbWVbOjBdLCBmaWxlbmFtZSwge30pCiAgICAgcmV0dXJuIGFic3BhdGgocGF0aCkKIApAQCAtNDM0LDYgKzQ0Nyw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgY3VyZGlyID0gYicuJwogICAgICAgICBzZXAgPSBiJy8nCkBAIC00NDUsNiArNDU5LDggQEAKIAogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIHN0YXJ0ID0gY3VyZGlyCisgICAgZWxzZToKKyAgICAgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCkBAIC00NzIsNiArNDg4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGN1cmRpciA9IGInLicKZGlmZiAtLWdpdCBhL0xpYi9weWNsYnIucHkgYi9MaWIvcHljbGJyLnB5CmluZGV4IDRkNDBiODcuLmQ3ZGJhOTcgMTAwNjQ0Ci0tLSBhL0xpYi9weWNsYnIucHkKKysrIGIvTGliL3B5Y2xici5weQpAQCAtNDAsMTIgKzQwLDEwIEBACiAiIiIKIAogaW1wb3J0IGlvCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHRva2VuaXplCiBmcm9tIHRva2VuIGltcG9ydCBOQU1FLCBERURFTlQsIE9QCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIF9fYWxsX18gPSBbInJlYWRtb2R1bGUiLCAicmVhZG1vZHVsZV9leCIsICJDbGFzcyIsICJGdW5jdGlvbiJdCiAKQEAgLTMyOCw2ICszMjYsNyBAQAogZGVmIF9tYWluKCk6CiAgICAgIyBNYWluIHByb2dyYW0gZm9yIHRlc3RpbmcuCiAgICAgaW1wb3J0IG9zCisgICAgZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogICAgIG1vZCA9IHN5cy5hcmd2WzFdCiAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kKToKICAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUobW9kKV0KZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDBkMGQwYWIuLjM5ZGIzOTEKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtMjA5LDYgKzIwOSwxOCBAQAogICAgICAgICByZXN1bHRzLmFwcGVuZCgobmFtZSwga2luZCwgY2xzLCB2YWx1ZSkpCiAgICAgcmV0dXJuIHJlc3VsdHMKIAorZGVmIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KToKKyAgICAnU29ydCB0aGUgYXR0cnMgbGlzdCBpbi1wbGFjZSBieSBfZmllbGRzIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IGJ5IG5hbWUnCisgICAgIyBUaGlzIGFsbG93cyBkYXRhIGRlc2NyaXB0b3JzIHRvIGJlIG9yZGVyZWQgYWNjb3JkaW5nCisgICAgIyB0byBhIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisgICAgZmllbGRzID0gZ2V0YXR0cihvYmplY3QsICdfZmllbGRzJywgW10pCisgICAgdHJ5OgorICAgICAgICBmaWVsZF9vcmRlciA9IHtuYW1lIDogaS1sZW4oZmllbGRzKSBmb3IgKGksIG5hbWUpIGluIGVudW1lcmF0ZShmaWVsZHMpfQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIGZpZWxkX29yZGVyID0ge30KKyAgICBrZXlmdW5jID0gbGFtYmRhIGF0dHI6IChmaWVsZF9vcmRlci5nZXQoYXR0clswXSwgMCksIGF0dHJbMF0pCisgICAgYXR0cnMuc29ydChrZXk9a2V5ZnVuYykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtb2R1bGUgbWFuaXB1bGF0aW9uCiAKIGRlZiBpc3BhY2thZ2UocGF0aCk6CkBAIC0zMzgsNyArMzUwLDcgQEAKICAgICAgICAgZWxpZiBleGMgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHZhbHVlLmZpbGVuYW1lLCBpbmZvKQotICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcikgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKICAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgpAQCAtODY4LDggKzg4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICAgdGFnICs9ICc6PGJyPlxuJwogCi0gICAgICAgICAgICAjIFNvcnQgYXR0cnMgYnkgbmFtZS4KLSAgICAgICAgICAgIGF0dHJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQorICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCdNZXRob2RzICVzJyAlIHRhZywgYXR0cnMsCkBAIC0xMjg3LDggKzEyOTgsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0YWcgPSAiaW5oZXJpdGVkIGZyb20gJXMiICUgY2xhc3NuYW1lKHRoaXNjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQotICAgICAgICAgICAgIyBTb3J0IGF0dHJzIGJ5IG5hbWUuCi0gICAgICAgICAgICBhdHRycy5zb3J0KCkKKworICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCJNZXRob2RzICVzOlxuIiAlIHRhZywgYXR0cnMsCkBAIC0xNDE4LDEzICsxNDI5LDE0IEBACiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKSBvciBub3Qgc3lzLnN0ZG91dC5pc2F0dHkoKToKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKLSAgICBpZiAnUEFHRVInIGluIG9zLmVudmlyb246CisgICAgdXNlX3BhZ2VyID0gb3MuZW52aXJvbi5nZXQoJ01BTlBBR0VSJykgb3Igb3MuZW52aXJvbi5nZXQoJ1BBR0VSJykKKyAgICBpZiB1c2VfcGFnZXI6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIHBpcGVzIGNvbXBsZXRlbHkgYnJva2VuIGluIFdpbmRvd3MKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgICBlbGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgdXNlX3BhZ2VyKQogICAgIGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6CiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CkBAIC0xOTAxLDEwICsxOTEzLDEwIEBACiAKICAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwotV2VsY29tZSB0byBQeXRob24gJXMncyBoZWxwIHV0aWxpdHkhCitXZWxjb21lIHRvIFB5dGhvbiB7MH0ncyBoZWxwIHV0aWxpdHkhCiAKIElmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAotdGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnLyVzL3R1dG9yaWFsLy4KK3RoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy97MH0vdHV0b3JpYWwvLgogCiBFbnRlciB0aGUgbmFtZSBvZiBhbnkgbW9kdWxlLCBrZXl3b3JkLCBvciB0b3BpYyB0byBnZXQgaGVscCBvbiB3cml0aW5nCiBQeXRob24gcHJvZ3JhbXMgYW5kIHVzaW5nIFB5dGhvbiBtb2R1bGVzLiAgVG8gcXVpdCB0aGlzIGhlbHAgdXRpbGl0eSBhbmQKQEAgLTE5MTQsNyArMTkyNiw3IEBACiAibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCiB3aXRoIGEgb25lLWxpbmUgc3VtbWFyeSBvZiB3aGF0IGl0IGRvZXM7IHRvIGxpc3QgdGhlIG1vZHVsZXMgd2hvc2UgbmFtZQogb3Igc3VtbWFyeSBjb250YWluIGEgZ2l2ZW4gc3RyaW5nIHN1Y2ggYXMgInNwYW0iLCB0eXBlICJtb2R1bGVzIHNwYW0iLgotJycnICUgdHVwbGUoW3N5cy52ZXJzaW9uWzozXV0qMikpCisnJycuZm9ybWF0KCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCiAKICAgICBkZWYgbGlzdChzZWxmLCBpdGVtcywgY29sdW1ucz00LCB3aWR0aD04MCk6CiAgICAgICAgIGl0ZW1zID0gbGlzdChzb3J0ZWQoaXRlbXMpKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CmluZGV4IGQ2ZjEzNjYuLmFhZjJjZTYgMTAwNjQ0Ci0tLSBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQorKysgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKQEAgLTEsNzkgKzEsMTI5NDkgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBKdW4gMjUgMTQ6MDg6NDQgMjAxNgotdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiByZWZlclxudG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG5ub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgKGNvbW1hbmRcbmxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG5hc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICBOb3RlXG50aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZXhwcmVzc2lvblxudGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgdGhlXG5zdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAotICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChzdGFycmVkX2V4cHJlc3Npb24gfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuIGVtcHR5XG4gIGl0ZXJhYmxlLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQgaW4gcGFyZW50aGVzZXM6IFRoZSBvYmplY3RcbiAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cywgb3IgYVxuICBzaW5nbGUgdGFyZ2V0IGluIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlXG4gIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlXG4gIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGFuXG4gICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZVxuICAgIHRhcmdldCBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvIHRoZVxuICAgIHRhcmdldHMgYWZ0ZXIgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXNcbiAgICBpbiB0aGUgaXRlcmFibGUgaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0XG4gICAgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lb3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2F0b20taWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgc2luZ2xlIHVuZGVyc2NvcmVcbmluc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgaWRlbnRpZmllciAiX19zcGFtIlxub2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAiX0hhbV9fc3BhbSIuXG5UaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCBjb250ZXh0IGluIHdoaWNoXG50aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgZXh0cmVtZWx5IGxvbmdcbihsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHJ1bmNhdGlvbiBtYXlcbmhhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm9cbnRyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAotICdhdG9tLWxpdGVyYWxzJzogdSJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6IHUnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCi0gJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogdSdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllci4gIFRoaXNcbnByb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gIkF0dHJpYnV0ZUVycm9yIiBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKLSAnYXVnYXNzaWduJzogdSdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiB1J1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIkAiIG1fZXhwciB8XG4gICAgICAgICAgICAgIG1fZXhwciAiLy8iIHVfZXhwcnwgbV9leHByICIvIiB1X2V4cHIgfFxuICAgICAgICAgICAgICBtX2V4cHIgIiUiIHVfZXhwclxuICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG5cblRoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSBhblxuaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGVcbm51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuXG5JbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlXG5yZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSAiQCIgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXhcbm11bHRpcGxpY2F0aW9uLiAgTm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxucXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi5cblxuVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiBvZlxudGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4iWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgIjQqMC43ICtcbjAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lIHNpZ25cbmFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0IGlzXG5zdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlIGFsc29cbmNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4oeC8veSwgeCV5KSIuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgIiUiXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSJcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAotICdiaXR3aXNlJzogdSdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbmFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cblxuVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAotICdibHRpbi1jb2RlLW9iamVjdHMnOiB1J1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiBvYmplY3RzXG50aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgImNvZGUiIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6IHUnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbiJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgcHJvZHVjZXMgdGhlXG4iRWxsaXBzaXMiIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiB1J1xuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShOb25lKSgpIiBwcm9kdWNlcyB0aGVcbnNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCi0gJ2JsdGluLXR5cGUtb2JqZWN0cyc6IHUnXG5UeXBlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5UeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuIG9iamVjdFwncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiBkZWZpbmVzIG5hbWVzIGZvclxuYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuXG5UeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKLSAnYm9vbGVhbnMnOiB1J1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCBlbXB0eVxuc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG5kaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlIGJ5XG5wcm92aWRpbmcgYSAiX19ib29sX18oKSIgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICJGYWxzZSJcbm90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gInggYW5kIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gInggb3IgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIHRydWUsIGl0cyB2YWx1ZVxuaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSBpc1xucmV0dXJuZWQuXG5cbihOb3RlIHRoYXQgbmVpdGhlciAiYW5kIiBub3IgIm9yIiByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG4icyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byBjcmVhdGUgYVxubmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGl0c1xuYXJndW1lbnQgKGZvciBleGFtcGxlLCAibm90IFwnZm9vXCciIHByb2R1Y2VzICJGYWxzZSIgcmF0aGVyIHRoYW4gIlwnXCciLilcbicsCi0gJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKLSAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCi0gJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIgc3RhcnJlZF9hbmRfa2V5d29yZHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgfCBzdGFycmVkX2FuZF9rZXl3b3JkcyBbIiwiIGtleXdvcmRzX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gWyIqIl0gZXhwcmVzc2lvbiAoIiwiIFsiKiJdIGV4cHJlc3Npb24pKlxuICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiICIqIiBleHByZXNzaW9uIHwgIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBrZXl3b3JkX2l0ZW0gfCAiKioiIGV4cHJlc3Npb24pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kXG5rZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3Ncbm9iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbiJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuXG5JZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG5wb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgaXNcbmNyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbmFyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbmtleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZm9ybWFsXG5wYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90IGlzXG5hbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgIlR5cGVFcnJvciJcbmV4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkIGFzXG50aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbmJ1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsIGV2ZW5cbmlmIHRoZXkgYXJlIFwnbmFtZWRcJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG50aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSBjYXNlXG5mb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gcGFyc2VcbnRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cblxuSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbm5hbWUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAiZXhwcmVzc2lvbiJcbm11c3QgZXZhbHVhdGUgdG8gYW4gKml0ZXJhYmxlKi4gIEVsZW1lbnRzIGZyb20gdGhlc2UgaXRlcmFibGVzIGFyZVxudHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIEZvciB0aGUgY2FsbFxuImYoeDEsIHgyLCAqeSwgeDMsIHg0KSIsIGlmICp5KiBldmFsdWF0ZXMgdG8gYSBzZXF1ZW5jZSAqeTEqLCAuLi4sXG4qeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTSs0IHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosXG4qeDIqLCAqeTEqLCAuLi4sICp5TSosICp4MyosICp4NCouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSpcbnRoZSBrZXl3b3JkIGFyZ3VtZW50cyAoYW5kIGFueSAiKipleHByZXNzaW9uIiBhcmd1bWVudHMgLS0gc2VlIGJlbG93KS5cblNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gICAgIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheFxudG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzIG5vdFxuYXJpc2UuXG5cbklmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbiJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgKm1hcHBpbmcqLCB0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlXG50cmVhdGVkIGFzIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMuICBJZiBhIGtleXdvcmQgaXMgYWxyZWFkeVxucHJlc2VudCAoYXMgYW4gZXhwbGljaXQga2V5d29yZCBhcmd1bWVudCwgb3IgZnJvbSBhbm90aGVyIHVucGFja2luZyksXG5hICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNTogRnVuY3Rpb24gY2FsbHMgYWNjZXB0IGFueSBudW1iZXIgb2YgIioiIGFuZFxuIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlIHVucGFja2luZ3NcbigiKiIpLCBhbmQga2V5d29yZCBhcmd1bWVudHMgbWF5IGZvbGxvdyBkaWN0aW9uYXJ5IHVucGFja2luZ3MgKCIqKiIpLlxuT3JpZ2luYWxseSBwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyBhblxuZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbmNhbGxhYmxlIG9iamVjdC5cblxuSWYgaXQgaXMtLS1cblxuYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4gICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgdGhlXG4gICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4gICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiB0aGVcbiAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCi0gJ2NsYXNzJzogdSdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcbicsCi0gJ2NvbXBhcmlzb25zJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblxuVmFsdWUgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBkbyBub3QgbmVlZCB0byBoYXZlIHRoZSBzYW1lIHR5cGUuXG5cbkNoYXB0ZXIgKk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMqIHN0YXRlcyB0aGF0IG9iamVjdHMgaGF2ZSBhIHZhbHVlXG4oaW4gYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhXG5yYXRoZXIgYWJzdHJhY3Qgbm90aW9uIGluIFB5dGhvbjogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIGNhbm9uaWNhbFxuYWNjZXNzIG1ldGhvZCBmb3IgYW4gb2JqZWN0XCdzIHZhbHVlLiAgQWxzbywgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnRcbnRoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4gYSBwYXJ0aWN1bGFyIHdheSxcbmUuZy4gY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9yc1xuaW1wbGVtZW50IGEgcGFydGljdWxhciBub3Rpb24gb2Ygd2hhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzLiAgT25lXG5jYW4gdGhpbmsgb2YgdGhlbSBhcyBkZWZpbmluZyB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGluZGlyZWN0bHksIGJ5XG5tZWFucyBvZiB0aGVpciBjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuXG5CZWNhdXNlIGFsbCB0eXBlcyBhcmUgKGRpcmVjdCBvciBpbmRpcmVjdCkgc3VidHlwZXMgb2YgIm9iamVjdCIsIHRoZXlcbmluaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvciBmcm9tICJvYmplY3QiLiAgVHlwZXMgY2FuXG5jdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggY29tcGFyaXNvblxubWV0aG9kcyogbGlrZSAiX19sdF9fKCkiLCBkZXNjcmliZWQgaW4gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgaXMgYmFzZWRcbm9uIHRoZSBpZGVudGl0eSBvZiB0aGUgb2JqZWN0cy4gIEhlbmNlLCBlcXVhbGl0eSBjb21wYXJpc29uIG9mXG5pbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSByZXN1bHRzIGluIGVxdWFsaXR5LCBhbmQgZXF1YWxpdHlcbmNvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSBkZXNpcmUgdGhhdFxuYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09IHkiKS5cblxuQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90IHByb3ZpZGVkO1xuYW4gYXR0ZW1wdCByYWlzZXMgIlR5cGVFcnJvciIuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCBiZWhhdmlvclxuaXMgdGhlIGxhY2sgb2YgYSBzaW1pbGFyIGludmFyaWFudCBhcyBmb3IgZXF1YWxpdHkuXG5cblRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0IGluc3RhbmNlcyB3aXRoXG5kaWZmZXJlbnQgaWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCB0byB3aGF0XG50eXBlcyB3aWxsIG5lZWQgdGhhdCBoYXZlIGEgc2Vuc2libGUgZGVmaW5pdGlvbiBvZiBvYmplY3QgdmFsdWUgYW5kXG52YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB0aGVpclxuY29tcGFyaXNvbiBiZWhhdmlvciwgYW5kIGluIGZhY3QsIGEgbnVtYmVyIG9mIGJ1aWx0LWluIHR5cGVzIGhhdmUgZG9uZVxudGhhdC5cblxuVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgbW9zdFxuaW1wb3J0YW50IGJ1aWx0LWluIHR5cGVzLlxuXG4qIE51bWJlcnMgb2YgYnVpbHQtaW4gbnVtZXJpYyB0eXBlcyAoKk51bWVyaWMgVHlwZXMgLS0tIGludCwgZmxvYXQsXG4gIGNvbXBsZXgqKSBhbmQgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdHlwZXMgImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4gICJkZWNpbWFsLkRlY2ltYWwiIGNhbiBiZSBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciB0eXBlcyxcbiAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgb3JkZXJcbiAgY29tcGFyaXNvbi4gIFdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSB0eXBlcyBpbnZvbHZlZCwgdGhleSBjb21wYXJlXG4gIG1hdGhlbWF0aWNhbGx5IChhbGdvcml0aG1pY2FsbHkpIGNvcnJlY3Qgd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi5cblxuICBUaGUgbm90LWEtbnVtYmVyIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAiRGVjaW1hbChcJ05hTlwnKSIgYXJlXG4gIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgdHJ1ZSkgYnV0XG4gIGFyZSBub3QgZXF1YWwgdG8gdGhlbXNlbHZlcyAoInggPT0geCIgaXMgZmFsc2UpLiAgQWRkaXRpb25hbGx5LFxuICBjb21wYXJpbmcgYW55IG51bWJlciB0byBhIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAiRmFsc2UiLlxuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbFxuICByZXR1cm4gIkZhbHNlIi5cblxuKiBCaW5hcnkgc2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgImJ5dGVzIiBvciAiYnl0ZWFycmF5IikgY2FuIGJlXG4gIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4gIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIChpbnN0YW5jZXMgb2YgInN0ciIpIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlXG4gIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAib3JkKCkiKSBvZiB0aGVpciBjaGFyYWN0ZXJzLiBbM11cblxuICBTdHJpbmdzIGFuZCBiaW5hcnkgc2VxdWVuY2VzIGNhbm5vdCBiZSBkaXJlY3RseSBjb21wYXJlZC5cblxuKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiBiZVxuICBjb21wYXJlZCBvbmx5IHdpdGhpbiBlYWNoIG9mIHRoZWlyIHR5cGVzLCB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0XG4gIHJhbmdlcyBkbyBub3Qgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uLiAgRXF1YWxpdHkgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmFpc2VzICJUeXBlRXJyb3IiLlxuXG4gIFNlcXVlbmNlcyBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgd2hlcmVieSByZWZsZXhpdml0eSBvZiB0aGUgZWxlbWVudHMgaXNcbiAgZW5mb3JjZWQuXG5cbiAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiBjb2xsZWN0aW9uc1xuICBhc3N1bWVzIHRoYXQgZm9yIGEgY29sbGVjdGlvbiBlbGVtZW50ICJ4IiwgInggPT0geCIgaXMgYWx3YXlzIHRydWUuXG4gIEJhc2VkIG9uIHRoYXQgYXNzdW1wdGlvbiwgZWxlbWVudCBpZGVudGl0eSBpcyBjb21wYXJlZCBmaXJzdCwgYW5kXG4gIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgZWxlbWVudHMuICBUaGlzXG4gIGFwcHJvYWNoIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgYSBzdHJpY3QgZWxlbWVudCBjb21wYXJpc29uXG4gIHdvdWxkLCBpZiB0aGUgY29tcGFyZWQgZWxlbWVudHMgYXJlIHJlZmxleGl2ZS4gIEZvciBub24tcmVmbGV4aXZlXG4gIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuICBjb21wYXJpc29uLCBhbmQgbWF5IGJlIHN1cnByaXNpbmc6ICBUaGUgbm9uLXJlZmxleGl2ZSBub3QtYS1udW1iZXJcbiAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gYmVoYXZpb3Igd2hlblxuICB1c2VkIGluIGEgbGlzdDpcblxuICAgICA+Pj4gbmFuID0gZmxvYXQoXCdOYU5cJylcbiAgICAgPj4+IG5hbiBpcyBuYW5cbiAgICAgVHJ1ZVxuICAgICA+Pj4gbmFuID09IG5hblxuICAgICBGYWxzZSAgICAgICAgICAgICAgICAgPC0tIHRoZSBkZWZpbmVkIG5vbi1yZWZsZXhpdmUgYmVoYXZpb3Igb2YgTmFOXG4gICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuICAgICBUcnVlICAgICAgICAgICAgICAgICAgPC0tIGxpc3QgZW5mb3JjZXMgcmVmbGV4aXZpdHkgYW5kIHRlc3RzIGlkZW50aXR5IGZpcnN0XG5cbiAgTGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2VlbiBidWlsdC1pbiBjb2xsZWN0aW9ucyB3b3JrcyBhc1xuICBmb2xsb3dzOlxuXG4gICogRm9yIHR3byBjb2xsZWN0aW9ucyB0byBjb21wYXJlIGVxdWFsLCB0aGV5IG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgICB0eXBlLCBoYXZlIHRoZSBzYW1lIGxlbmd0aCwgYW5kIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nXG4gICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICgxLDIpIiBpc1xuICAgIGZhbHNlIGJlY2F1c2UgdGhlIHR5cGUgaXMgbm90IHRoZSBzYW1lKS5cblxuICAqIENvbGxlY3Rpb25zIHRoYXQgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uIGFyZSBvcmRlcmVkIHRoZSBzYW1lXG4gICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iXG4gICAgaGFzIHRoZSBzYW1lIHZhbHVlIGFzICJ4IDw9IHkiKS4gIElmIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXNcbiAgICBub3QgZXhpc3QsIHRoZSBzaG9ydGVyIGNvbGxlY3Rpb24gaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsXG4gICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG5cbiogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiAiZGljdCIpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleVxuICBoYXZlIGVxdWFsICooa2V5LCB2YWx1ZSkqIHBhaXJzLiBFcXVhbGl0eSBjb21wYXJpc29uIG9mIHRoZSBrZXlzIGFuZFxuICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cblxuICBPcmRlciBjb21wYXJpc29ucyAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSByYWlzZSAiVHlwZUVycm9yIi5cblxuKiBTZXRzIChpbnN0YW5jZXMgb2YgInNldCIgb3IgImZyb3plbnNldCIpIGNhbiBiZSBjb21wYXJlZCB3aXRoaW5cbiAgYW5kIGFjcm9zcyB0aGVpciB0eXBlcy5cblxuICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgc3VwZXJzZXRcbiAgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKGZvciBleGFtcGxlLFxuICB0aGUgdHdvIHNldHMgInsxLDJ9IiBhbmQgInsyLDN9IiBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZ1xuICAoZm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4gIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cblxuICBDb21wYXJpc29uIG9mIHNldHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkgb2YgaXRzIGVsZW1lbnRzLlxuXG4qIE1vc3Qgb3RoZXIgYnVpbHQtaW4gdHlwZXMgaGF2ZSBubyBjb21wYXJpc29uIG1ldGhvZHMgaW1wbGVtZW50ZWQsXG4gIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuXG5Vc2VyLWRlZmluZWQgY2xhc3NlcyB0aGF0IGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIHNob3VsZFxuZm9sbG93IHNvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOlxuXG4qIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsIGlkZW50aWNhbFxuICBvYmplY3RzIHNob3VsZCBjb21wYXJlIGVxdWFsOlxuXG4gICAgICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSJcblxuKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nXG4gIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgInkgPT0geCJcblxuICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcblxuICAgICAieCA8IHkiIGFuZCAieSA+IHgiXG5cbiAgICAgInggPD0geSIgYW5kICJ5ID49IHgiXG5cbiogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAobm9uLWV4aGF1c3RpdmUpXG4gIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhhdDpcblxuICAgICAieCA+IHkgYW5kIHkgPiB6IiBpbXBsaWVzICJ4ID4geiJcblxuICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG5cbiogSW52ZXJzZSBjb21wYXJpc29uIHNob3VsZCByZXN1bHQgaW4gdGhlIGJvb2xlYW4gbmVnYXRpb24uIEluIG90aGVyXG4gIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgIm5vdCB4ICE9IHkiXG5cbiAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgICAgInggPiB5IiBhbmQgIm5vdCB4IDw9IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCBjb2xsZWN0aW9ucyAoZS5nLlxuICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuICAidG90YWxfb3JkZXJpbmcoKSIgZGVjb3JhdG9yLlxuXG5QeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgdGhlXG5ub3QtYS1udW1iZXIgdmFsdWVzIGFyZSBhbiBleGFtcGxlIGZvciBub3QgZm9sbG93aW5nIHRoZXNlIHJ1bGVzLlxuXG5cbk1lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblxuSWRlbnRpdHkgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiB1J1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsIGNvbnRyb2xcbmZsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXBcbmNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgYWxsb3dzIHRoZVxuZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSBibG9jayBvZlxuY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5IGNvbXBvdW5kXG5zdGF0ZW1lbnRzLlxuXG5BIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2YgYSBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbiJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX3dpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IGFcbiJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzIGJlZ2luXG53aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgImlmIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PVxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWRcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgYmFja1xudG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgImZvciIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09XG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlICJ0cnkiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG5cbkNvcm91dGluZXNcbj09PT09PT09PT1cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5cbkNvcm91dGluZSBmdW5jdGlvbiBkZWZpbml0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mdW5jZGVmIDo6PSBbZGVjb3JhdG9yc10gImFzeW5jIiAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG5cbkV4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnlcbnBvaW50cyAoc2VlICpjb3JvdXRpbmUqKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgImF3YWl0IiBhbmRcbiJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiIGV4cHJlc3Npb25zLFxuImFzeW5jIGZvciIgYW5kICJhc3luYyB3aXRoIiBjYW4gb25seSBiZSB1c2VkIGluIGNvcm91dGluZSBib2RpZXMuXG5cbkZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lXG5mdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIga2V5d29yZHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuY29yb3V0aW5lcy5cblxuQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcblxuICAgYXN5bmMgZGVmIGZ1bmMocGFyYW0xLCBwYXJhbTIpOlxuICAgICAgIGRvX3N0dWZmKClcbiAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpXG5cblxuVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mb3Jfc3RtdCA6Oj0gImFzeW5jIiBmb3Jfc3RtdFxuXG5BbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzXG4qaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbFxuYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG5cblRoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXJcbmFzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG5cblRoZSBmb2xsb3dpbmcgY29kZTpcblxuICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOlxuICAgICAgIEJMT0NLXG4gICBlbHNlOlxuICAgICAgIEJMT0NLMlxuXG5JcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcblxuICAgaXRlciA9IChJVEVSKVxuICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4gICBydW5uaW5nID0gVHJ1ZVxuICAgd2hpbGUgcnVubmluZzpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpXG4gICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjpcbiAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4gICAgICAgZWxzZTpcbiAgICAgICAgICAgQkxPQ0tcbiAgIGVsc2U6XG4gICAgICAgQkxPQ0syXG5cblNlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIGZvciIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5cblRoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG5cbkFuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgYWJsZVxudG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4gICAgICAgQkxPQ0tcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIG1nciA9IChFWFBSKVxuICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4gICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4gICBleGMgPSBUcnVlXG5cbiAgIFZBUiA9IGF3YWl0IGFlbnRlclxuICAgdHJ5OlxuICAgICAgIEJMT0NLXG4gICBleGNlcHQ6XG4gICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbiAgICAgICAgICAgcmFpc2VcbiAgIGVsc2U6XG4gICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuXG5TZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5TZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheFxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbnRleHQtbWFuYWdlcnMnOiB1J1xuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICdjb250aW51ZSc6IHUnXG5UaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbiJjb250aW51ZSIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgImZpbmFsbHkiXG5jbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mIHRoZVxubmVhcmVzdCBlbmNsb3NpbmcgbG9vcC5cblxuV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbiJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKLSAnY29udmVyc2lvbnMnOiB1J1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzIGZvbGxvd3M6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlXG4gIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGFzIGFcbmxlZnQgYXJndW1lbnQgdG8gdGhlIFwnJVwnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgdGhlaXIgb3duXG5jb252ZXJzaW9uIGJlaGF2aW9yLlxuJywKLSAnY3VzdG9taXphdGlvbic6IHUnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXNlXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kIGludmVydHMgdGhlXG4gICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgaW1wbGllZFxuICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBleGFtcGxlLCB0aGVcbiAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvIGF1dG9tYXRpY2FsbHlcbiAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290IG9wZXJhdGlvbiwgc2VlXG4gICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG4gICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gSWYgdGhlXG4gICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGFcbiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzIHR5cGUsIHRoZVxuICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksIG90aGVyd2lzZSB0aGVcbiAgIGxlZnQgb3BlcmFuZFwncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyBpcyBub3RcbiAgIGNvbnNpZGVyZWQuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2hcbiAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW5cbiAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwnc1xuICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICJQeV9zc2l6ZV90Ii4gIFRoaXNcbiAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXRcbiAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4gICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbFxuICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICJweXRob24gLWNcbiAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG4nLAotICdkZWJ1Z2dlcic6IHUnXG4icGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG1vZHVsZSAicGRiIiBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG4iUGRiIi4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieSByZWFkaW5nXG50aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgImNtZCIuXG5cblRoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtIHVuZGVyXG5jb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgInJlYWRsaW5lIiBtb2R1bGUgaXNcbmF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50IGdsb2JhbFxuYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzIGFyZ3VtZW50cyBvZiB0aGUgInAiIGNvbW1hbmQuXG5cbiJwZGIucHkiIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy4gIEZvclxuZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgZXhlY3V0ZXNcbmNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgIi5wZGJyYyIgZmlsZSwgc2VlICpEZWJ1Z2dlciBDb21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjb250aW51ZSIgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgKFNlZSB0aGVcbiAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgInJ1bigpIi5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiAicnVuY2FsbCgpIiByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG5UaGUgInJ1bioiIGZ1bmN0aW9ucyBhbmQgInNldF90cmFjZSgpIiBhcmUgYWxpYXNlcyBmb3IgaW5zdGFudGlhdGluZ1xudGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSB3YW50XG50byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgIlBkYiIgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyAiQ3RybC1DIiBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICAiY29udGludWUiIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlclxuICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZVxuICAgU0lHSU5UIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciB0aGUgaGVscFxuY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyBvclxudGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAoIltdIikgaW5cbnRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKCJ8IikuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgIjs7Ii5cbihBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgY29tbWFuZHNcbmluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgaXNcbmFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgZmlyc3RcbiI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cblxuSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgdGhlc2VcbmNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgcGRiIlxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgImhlbHBcbiAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICJzdGVwIlxuICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbiAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSBzdG9wcGluZyBhdFxuICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCBvciBvdXRcbiAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICBXaXRoXG4gICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0IGRpZmZlcnNcbiAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucCBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxuICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciBjb21tYW5kXG4gICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIHByZXR0eS1cbiAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5ICIlMSIsICIlMiIsIGFuZCBzbyBvbiwgd2hpbGUgIiUqIiBpcyByZXBsYWNlZCBieSBhbGxcbiAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlICIucGRicmMiIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9ucyBhcmVcbiAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlXG4gICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgIl9fbmFtZV9fIiBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6IHUnXG5UaGUgImRlbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbmZyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG5ibG9jay5cbicsCi0gJ2RpY3QnOiB1J1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiB8ICIqKiIgb3JfZXhwclxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRvdWJsZSBhc3RlcmlzayAiKioiIGRlbm90ZXMgKmRpY3Rpb25hcnkgdW5wYWNraW5nKi4gSXRzIG9wZXJhbmRcbm11c3QgYmUgYSAqbWFwcGluZyouICBFYWNoIG1hcHBpbmcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbmV3XG5kaWN0aW9uYXJ5LiAgTGF0ZXIgdmFsdWVzIHJlcGxhY2UgdmFsdWVzIGFscmVhZHkgc2V0IGJ5IGVhcmxpZXJcbmtleS9kYXR1bSBwYWlycyBhbmQgZWFybGllciBkaWN0aW9uYXJ5IHVucGFja2luZ3MuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogVW5wYWNraW5nIGludG8gZGljdGlvbmFyeSBkaXNwbGF5cywgb3JpZ2luYWxseVxucHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cbkEgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG5uZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbiJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgcmVzdWx0aW5nXG5rZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlIG9yZGVyXG50aGV5IGFyZSBwcm9kdWNlZC5cblxuUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSouICAoVG8gc3VtbWFyaXplLCB0aGUga2V5IHR5cGVcbnNob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbmJldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxucmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKLSAnZHluYW1pYy1mZWF0dXJlcyc6IHUnXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ2Vsc2UnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnZXhjZXB0aW9ucyc6IHUnXG5FeGNlcHRpb25zXG4qKioqKioqKioqXG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleGVjbW9kZWwnOiB1J1xuRXhlY3V0aW9uIG1vZGVsXG4qKioqKioqKioqKioqKipcblxuXG5TdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtXG49PT09PT09PT09PT09PT09PT09PT09XG5cbkEgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqIGlzIGEgcGllY2Vcbm9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSBmb2xsb3dpbmcgYXJlXG5ibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uIEVhY2hcbmNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSBmaWxlIGdpdmVuXG5hcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgY29tbWFuZCBsaW5lXG5hcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0IGNvbW1hbmQgKGFcbmNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgXCcqKi1jKipcJ1xub3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgYnVpbHQtaW5cbmZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5cbk5hbWluZyBhbmQgYmluZGluZ1xuPT09PT09PT09PT09PT09PT09XG5cblxuQmluZGluZyBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cblxuXG5FeGNlcHRpb25zXG49PT09PT09PT09XG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleHBybGlzdHMnOiB1J1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgICAgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuICAgc3RhcnJlZF9saXN0ICAgICAgIDo6PSBzdGFycmVkX2l0ZW0gKCAiLCIgc3RhcnJlZF9pdGVtICkqIFsiLCJdXG4gICBzdGFycmVkX2V4cHJlc3Npb24gOjo9IGV4cHJlc3Npb24gfCAoIHN0YXJyZWRfaXRlbSAiLCIgKSogW3N0YXJyZWRfaXRlbV1cbiAgIHN0YXJyZWRfaXRlbSAgICAgICA6Oj0gZXhwcmVzc2lvbiB8ICIqIiBvcl9leHByXG5cbkV4Y2VwdCB3aGVuIHBhcnQgb2YgYSBsaXN0IG9yIHNldCBkaXNwbGF5LCBhbiBleHByZXNzaW9uIGxpc3RcbmNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlIGxlbmd0aCBvZiB0aGUgdHVwbGVcbmlzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGUgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5BbiBhc3RlcmlzayAiKiIgZGVub3RlcyAqaXRlcmFibGUgdW5wYWNraW5nKi4gIEl0cyBvcGVyYW5kIG11c3QgYmUgYW5cbippdGVyYWJsZSouICBUaGUgaXRlcmFibGUgaXMgZXhwYW5kZWQgaW50byBhIHNlcXVlbmNlIG9mIGl0ZW1zLCB3aGljaFxuYXJlIGluY2x1ZGVkIGluIHRoZSBuZXcgdHVwbGUsIGxpc3QsIG9yIHNldCwgYXQgdGhlIHNpdGUgb2YgdGhlXG51bnBhY2tpbmcuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogSXRlcmFibGUgdW5wYWNraW5nIGluIGV4cHJlc3Npb24gbGlzdHMsIG9yaWdpbmFsbHlcbnByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuXG5UaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgKGEuay5hLiBhXG4qc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlIGV4cHJlc3Npb25cbndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2VzblwndCBjcmVhdGUgYSB0dXBsZSwgYnV0IHJhdGhlciB5aWVsZHMgdGhlXG52YWx1ZSBvZiB0aGF0IGV4cHJlc3Npb24uIChUbyBjcmVhdGUgYW4gZW1wdHkgdHVwbGUsIHVzZSBhbiBlbXB0eSBwYWlyXG5vZiBwYXJlbnRoZXNlczogIigpIi4pXG4nLAotICdmbG9hdGluZyc6IHUnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCAiMDc3ZTAxMCIgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlclxuYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ2Zvcic6IHUnXG5UaGUgImZvciIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogdSdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICJGb3JtYXR0ZXIiLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbiJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbiJ7eyIgYW5kICJ9fSIuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0IGZvciB0aGVcbnJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgIlwnMTBcJyIgb3JcbiJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5IGFueVxubnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCB3aGlsZSBhblxuZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwIHVzaW5nXG4iX19nZXRpdGVtX18oKSIuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAiX19mb3JtYXRfXygpIlxubWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzIGRlc2lyYWJsZSB0b1xuZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgb3duXG5kZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcbmNhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgd2hpY2ggY2FsbHNcbiJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgIlwnIWFcJyIgd2hpY2hcbmNhbGxzICJhc2NpaSgpIi5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBtYXkgY29udGFpbiBhIGZpZWxkIG5hbWUsXG5jb252ZXJzaW9uIGZsYWcgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9uLCBidXQgZGVlcGVyIG5lc3RpbmcgaXMgbm90XG5hbGxvd2VkLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZVxuc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZSAqZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpc1xuYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGEgdmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluICJmb3JtYXQoKSIgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkICJzdHIoKSIgb24gdGhlIHZhbHVlLiBBIG5vbi1lbXB0eVxuZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuSWYgYSB2YWxpZCAqYWxpZ24qIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQgY2FuIGJlIHByZWNlZGVkIGJ5IGEgKmZpbGwqXG5jaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSBpZlxub21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgKCIieyIiIG9yXG4iIn0iIikgYXMgdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kLlxuSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2Ugd2l0aCBhIG5lc3RlZFxucmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc25cJ3QgYWZmZWN0IHRoZSAiZm9ybWF0KCkiXG5mdW5jdGlvbi5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCc8XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJz5cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnPVwnIiAgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgSXQgYmVjb21lcyB0aGUgZGVmYXVsdCB3aGVuIFwnMFwnICB8XG4gICB8ICAgICAgICAgICB8IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBmaWVsZCB3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJytcJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnLVwnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSAiXCcwYlwnIiwgIlwnMG9cJyIsIG9yXG4iXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgIlwnR1wnIlxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSAiXCcsXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHMgc2VwYXJhdG9yLlxuRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVcbmluc3RlYWQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSAiXCcsXCciIG9wdGlvbiAoc2VlIGFsc28gKipQRVAgMzc4KiopLlxuXG4qd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90XG5zcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC5cblxuV2hlbiBubyBleHBsaWNpdCBhbGlnbm1lbnQgaXMgZ2l2ZW4sIHByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhXG56ZXJvICgiXCcwXCciKSBjaGFyYWN0ZXIgZW5hYmxlcyBzaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpY1xudHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgd2l0aCBhblxuKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludFxuZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggIlwnZ1wnIiBvciAiXCdHXCciLiAgRm9yIG5vbi1cbm51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpbiBvdGhlclxud29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuIFRoZVxuKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdzXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ29cJyIgICAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0ICJcJ25cJyJcbmFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCB0aGUgaW50ZWdlciB0b1xuYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnRlwnIiAgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyAiXCdmXCciLCBidXQgY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gIklORiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gInAgPj0gMSIsIHRoaXMgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCBwcmVjaXNpb24gInAtMSIgfFxuICAgfCAgICAgICAgICAgfCB3b3VsZCBoYXZlIGV4cG9uZW50ICJleHAiLiAgVGhlbiBpZiAiLTQgPD0gZXhwIDwgcCIsIHRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2ZcJyIgYW5kICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4gICB8ICAgICAgICAgICB8IHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4gICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlIHJlbW92ZWQgZnJvbSB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gcmVtb3ZlZCBpZiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nIGl0LiAgUG9zaXRpdmUgYW5kICB8XG4gICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgemVybywgYW5kIG5hbnMsICAgfFxuICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiBhbmQgIm5hbiIgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4gICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSBwcmVjaXNpb24gb2YgIjEiLiBUaGUgICAgfFxuICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgc3dpdGNoZXMgdG8gIlwnRVwnIiBpZiAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbiAgIHwgICAgICAgICAgIHwgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCBleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4gICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJyVcJyIgICAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvICJcJ2dcJyIsIGV4Y2VwdCB0aGF0IGZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlIGRlY2ltYWwgcG9pbnQuIFRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IHBhcnRpY3VsYXIgdmFsdWUuIFRoZSBvdmVyYWxsIGVmZmVjdCBpcyB0byBtYXRjaCB0aGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSBvdGhlciBmb3JtYXQgICAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgInN0ci5mb3JtYXQoKSIgc3ludGF4IGFuZFxuY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLFxud2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAiJSIuIEZvclxuZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyAiJStmIiwgIiUtZiIsIGFuZCAiJSBmIiBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyAiJXgiIGFuZCAiJW8iIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnQgYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0VcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiB1J1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFthcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCi0gJ2dsb2JhbCc6IHUnXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlIGVudGlyZVxuY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byBiZVxuaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgZ2xvYmFsXG52YXJpYWJsZSB3aXRob3V0ICJnbG9iYWwiLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGNvZGVcbmJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCAiZ2xvYmFsIiBzdGF0ZW1lbnQuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhICJmb3IiIGxvb3AgY29udHJvbCB0YXJnZXQsICJjbGFzcyIgZGVmaW5pdGlvbixcbmZ1bmN0aW9uIGRlZmluaXRpb24sIG9yICJpbXBvcnQiIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgdGhpc1xuZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5IGNoYW5nZVxudGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSAiZ2xvYmFsIiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgcGFyc2VyLiAgSXRcbmFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAiZ2xvYmFsIlxuc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhICJnbG9iYWwiIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSBzdHJpbmdcbm9yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiAiZXhlYygpIiBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgImdsb2JhbCIgc3RhdGVtZW50cyBpbiB0aGVcbmNvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlICJldmFsKCkiXG5hbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKLSAnaWQtY2xhc3Nlcyc6IHUnXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgIkEiIHRocm91Z2ggIloiLCB0aGUgdW5kZXJzY29yZSAiXyIgYW5kLCBleGNlcHQgZm9yIHRoZSBmaXJzdFxuY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cblxuUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlIEFTQ0lJXG5yYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlIGNsYXNzaWZpY2F0aW9uXG51c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyBpbmNsdWRlZCBpbiB0aGVcbiJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL3d3dy5kY2wuaHBpLnVuaS1cbnBvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuXG5cbktleXdvcmRzXG49PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAqa2V5d29yZHMqIG9mXG50aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gIFRoZXkgbXVzdFxuYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcblxuICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbiAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4gICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4gICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbiAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbiAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbiAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG5cblxuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG4iXyoiXG4gICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXIgIl8iXG4gICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZVxuICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgV2hlbiBub3RcbiAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgZGVmaW5lZC5cbiAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCi0gJ2lmJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCi0gJ2ltYWdpbmFyeSc6IHUnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcblxuICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwalxuJywKLSAnaW1wb3J0JzogdSdcblRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbiAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5XaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgdGhlXG50d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzIHRob3VnaFxudGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG5kZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlICppbXBvcnQgc3lzdGVtKixcbndoaWNoIGFsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXRcbmNhbiBiZSBpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbmN1c3RvbWl6ZSB0aGUgaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXlcbmluZGljYXRlIGVpdGhlciB0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhblxuZXJyb3Igb2NjdXJyZWQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvblxub2YgdGhlIG1vZHVsZVwncyBjb2RlLlxuXG5JZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlIG1hZGVcbmF2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuXG4qIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgImZyb20iIGZvcm0gdXNlcyBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBwcm9jZXNzOlxuXG4xLiBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIHRoZSAiZnJvbSIgY2xhdXNlLCBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgImltcG9ydCIgY2xhdXNlczpcblxuICAgMS4gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZVxuXG4gICAyLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCB0aGVuXG4gICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZVxuXG4gICAzLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgIkltcG9ydEVycm9yIiBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSAiYXMiIGNsYXVzZSBpZiBpdCBpcyBwcmVzZW50LFxuICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZVxuXG5FeGFtcGxlczpcblxuICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmJcbiAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhelxuICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHJcblxuSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyICgiXCcqXCciKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgIl9fYWxsX18iOyBpZiBkZWZpbmVkLCBpdCBtdXN0XG5iZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdFxubW9kdWxlLiAgVGhlIG5hbWVzIGdpdmVuIGluICJfX2FsbF9fIiBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZFxuYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgIl9fYWxsX18iIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpY1xubmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdFxuYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkIGNvbnRhaW5cbnRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZ1xuaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZVxuaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyBvbmx5XG5hbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiB5b3VcbmNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbiJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSB3aWxsXG5lbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCBtb2QiXG5mcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG5zcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbiJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlIGZlYXR1cmVcbmJlY29tZXMgc3RhbmRhcmQuXG5cblRoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9uc1xub2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0XG5hbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbnJlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4ibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50IGJlY2F1c2VcbnRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblxuQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbnRpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG5pbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlIGNhc2VcbnRoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgbmV3XG5yZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG5tb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxucnVudGltZS5cblxuRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyBoYXZlXG5iZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgc3RhdGVtZW50XG5jb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuXG5UaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCBzdGF0ZW1lbnQ6XG50aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0IHdpbGxcbmJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSBzdGF0ZW1lbnRcbndpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoIHRoZVxuZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4iY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzogKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG5cbiAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAotICdpbic6IHUnXG5NZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuJywKLSAnaW50ZWdlcnMnOiB1J1xuSW50ZWdlciBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciB8IGJpbmludGVnZXJcbiAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiK1xuICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCtcbiAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4gICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuICAgb2N0ZGlnaXQgICAgICAgOjo9ICIwIi4uLiI3IlxuICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4gICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG5cblRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0XG5jYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cbk5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLlxuVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob25cbnVzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuXG5Tb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG5cbiAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4ZGVhZGJlZWZcbicsCi0gJ2xhbWJkYSc6IHUnXG5MYW1iZGFzXG4qKioqKioqXG5cbiAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uX25vY29uZFxuXG5MYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byBjcmVhdGVcbmFub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiBleHByZXNzaW9uIlxueWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGZ1bmN0aW9uXG5vYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKLSAnbGlzdHMnOiB1J1xuTGlzdCBkaXNwbGF5c1xuKioqKioqKioqKioqKlxuXG5BIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCBpblxuc3F1YXJlIGJyYWNrZXRzOlxuXG4gICBsaXN0X2Rpc3BsYXkgOjo9ICJbIiBbc3RhcnJlZF9saXN0IHwgY29tcHJlaGVuc2lvbl0gIl0iXG5cbkEgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nIHNwZWNpZmllZFxuYnkgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGNvbXByZWhlbnNpb24uICBXaGVuIGEgY29tbWEtXG5zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSBldmFsdWF0ZWRcbmZyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgb3JkZXIuXG5XaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbmVsZW1lbnRzIHJlc3VsdGluZyBmcm9tIHRoZSBjb21wcmVoZW5zaW9uLlxuJywKLSAnbmFtaW5nJzogdSdcbk5hbWluZyBhbmQgYmluZGluZ1xuKioqKioqKioqKioqKioqKioqXG5cblxuQmluZGluZyBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PT09PVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ25vbmxvY2FsJzogdSdcblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBleGNsdWRpbmdcbmdsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGJpbmRpbmcgaXNcbnRvIHNlYXJjaCB0aGUgbG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3NcbmVuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGVcbmJlc2lkZXMgdGhlIGdsb2JhbCAobW9kdWxlKSBzY29wZS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQsIHVubGlrZSB0aG9zZSBsaXN0ZWQgaW4gYVxuImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuZW5jbG9zaW5nIHNjb3BlICh0aGUgc2NvcGUgaW4gd2hpY2ggYSBuZXcgYmluZGluZyBzaG91bGQgYmUgY3JlYXRlZFxuY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCBwcmUtXG5leGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCi0gJ251bWJlcnMnOiB1J1xuTnVtZXJpYyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnbnVtZXJpYy10eXBlcyc6IHUnXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJywKLSAnb2JqZWN0cyc6IHUnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgImlkKHgpIiBpcyB0aGUgbWVtb3J5XG5hZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG5cbkFuIG9iamVjdFwncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzXG4oZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXNcbmZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgImdjIiBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKHNvXG55b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCcidHJ5Ii4uLiJleGNlcHQiXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCcidHJ5Ii4uLiJmaW5hbGx5IlwnIHN0YXRlbWVudCBhbmQgdGhlIFwnIndpdGgiXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgImEgPSAxOyBiID0gMSIsXG4iYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgdmFsdWVcbm9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICJjIlxuYW5kICJkIiBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LCB1bmlxdWUsIG5ld2x5XG5jcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lIG9iamVjdFxudG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAotICdvcGVyYXRvci1zdW1tYXJ5JzogdSdcbk9wZXJhdG9yIHByZWNlZGVuY2VcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlIGluIFB5dGhvbiwgZnJvbVxubG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAobW9zdFxuYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZS4gIFVubGVzc1xudGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gIE9wZXJhdG9ycyBpblxudGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgZXhwb25lbnRpYXRpb24sIHdoaWNoXG5ncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cblxuTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgdGVzdHMsIGFsbCBoYXZlXG50aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyBmZWF0dXJlIGFzXG5kZXNjcmliZWQgaW4gdGhlICpDb21wYXJpc29ucyogc2VjdGlvbi5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYXdhaXQiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0c1xuICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiBoYXZlIHRoZSBzYW1lXG4gICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgMWUxMDAiLCB3aGljaFxuICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSBmdW5jdGlvblxuICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2YgdGhlXG4gICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluIHRoaXMgY2FzZS5cbiAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlIGFwcGxpY2F0aW9uLlxuXG5bMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgeSwgaXRcJ3NcbiAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAiKHgteCV5KS8veSIgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0ICJkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeSIgYmUgdmVyeSBjbG9zZVxuICAgIHRvICJ4Ii5cblxuWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSBwb2ludHMqIChlLmcuXG4gICAgVSswMDQxKSBhbmQgKmFic3RyYWN0IGNoYXJhY3RlcnMqIChlLmcuICJMQVRJTiBDQVBJVEFMIExFVFRFUiBBIikuXG4gICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgcmVwcmVzZW50ZWRcbiAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgY2hhcmFjdGVyc1xuICAgIHRoYXQgY2FuIGluIGFkZGl0aW9uIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2Ugb2YgbW9yZSB0aGFuXG4gICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlXG4gICAgKnByZWNvbXBvc2VkIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwQzcsIG9yIGFzIGEgc2VxdWVuY2VcbiAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOIENBUElUQUxcbiAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb25cbiAgICBVKzAzMjcgKENPTUJJTklORyBDRURJTExBKS5cblxuICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlIGxldmVsIG9mXG4gICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLiAgRm9yXG4gICAgZXhhbXBsZSwgIiJcXHUwMEM3IiA9PSAiXFx1MDA0M1xcdTAzMjciIiBpcyAiRmFsc2UiLCBldmVuIHRob3VnaCBib3RoXG4gICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cblxuICAgIFRvIGNvbXBhcmUgc3RyaW5ncyBhdCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3QgY2hhcmFjdGVycyAodGhhdCBpcyxcbiAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZVxuICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbFxuICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgdGhvc2VcbiAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuXG4gICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuIGFyaXRobWV0aWNcbiAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgIjIqKi0xIiBpcyAiMC41Ii5cbicsCi0gJ3Bhc3MnOiB1J1xuVGhlICJwYXNzIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG5cbiJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKLSAncG93ZXInOiB1J1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9ICggYXdhaXRfZXhwciB8IHByaW1hcnkgKSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbiIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuXG5SYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICJaZXJvRGl2aXNpb25FcnJvciIuXG5SYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgImNvbXBsZXgiXG5udW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAotICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCBleGNlcHRpb25cbnRoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgaW5cbnRoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbiJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG5vYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cblxuVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2VcJ3MgY2xhc3MsIHRoZVxuKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXG5BIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZXhjZXB0aW9uXG5pcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCByZXR1cm5zXG50aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzIGFyZ3VtZW50KSxcbmxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgc2Vjb25kXG4qZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggd2lsbFxudGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgYXR0cmlidXRlXG4od2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbmV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXNcbnRoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdDpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gc2VjdGlvblxuKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCi0gJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuIFRoZVxucmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbiJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCi0gJ3NlcXVlbmNlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAotICdzaGlmdGluZyc6IHUnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICJwb3coMixuKSIuXG5BIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICJwb3coMixuKSIuXG5cbk5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3NsaWNpbmdzJzogdSdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSBzbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgaW5kZXhlZFxuKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhXG5rZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlXG5saXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbiJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6IHUnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuXG5jbGFzcy5fX3N1YmNsYXNzZXNfXygpXG5cbiAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW1tZWRpYXRlXG4gICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlIHJlZmVyZW5jZXNcbiAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8Y2xhc3MgXCdib29sXCc+XVxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSBmb3VuZFxuICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoKkJhc2ljIGN1c3RvbWl6YXRpb24qKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCBpbnZlcnRzIHRoZVxuICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vIG90aGVyIGltcGxpZWRcbiAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgZXhhbXBsZSwgdGhlXG4gICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyBhdXRvbWF0aWNhbGx5XG4gICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCBvcGVyYXRpb24sIHNlZVxuICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cblxuICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzIHJlZmxlY3Rpb24sXG4gICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uIElmIHRoZVxuICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhXG4gICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwncyB0eXBlLCB0aGVcbiAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCBvdGhlcndpc2UgdGhlXG4gICBsZWZ0IG9wZXJhbmRcJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgaXMgbm90XG4gICBjb25zaWRlcmVkLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAiX19lcV9fKCkiXG4gICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgaXRlbXMgaW5cbiAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyBhbmRcbiAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4gICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSBjb2xsZWN0aW9uc1xuICAgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdFwncyBoYXNoXG4gICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gaGFzaCh5KSIuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICJfX2hhc2hfXygpIlxuICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgV2hlbiB0aGVcbiAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3NcbiAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG9cbiAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlIGludGVycHJldGVyXG4gICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gc3VwcHJlc3NcbiAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmRcbiAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90XG4gICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzIGFyZVxuICAgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAieC5uYW1lIikgZm9yXG5jbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLiBUaGlzXG4gICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzIGRvbmUgYm90aCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbiAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlIHRoYXQgYXRcbiAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5IG5vdFxuICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICJfX2dldGF0dHJfXygpIixcbiAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbiAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgbWV0aG9kXG4gICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpblxuICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3NcbiAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3JcbiAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbFxuICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4XG4gICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsIG9iai5uYW1lIiBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICJOb25lIiB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gIkF0dHJpYnV0ZUVycm9yIlxuICAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5UaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAiaW5zcGVjdCIgbW9kdWxlIGFzXG5zcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzXG5hcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3NcbmF0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiBpbnN0YW5jZSBvZiB0aGVcbmdpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSBmaXJzdFxucG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzIGF0dHJpYnV0ZSBmb3JcbnVuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbiJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LCBpdFxuaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiYS54IiBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG4idHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAiYS54Ii4gSG93XG50aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAic3VwZXIoQixcbiAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgY2xhc3MgIkEiXG4gICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3Igd2l0aCB0aGVcbiAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbmRvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldHVyblxudGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgb2JqZWN0XCdzXG5pbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiBhbmQvb3JcbiJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyBuZWl0aGVyLCBpdCBpc1xuYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lIGJvdGhcbiJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZVxuIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAiX19nZXRfXygpIlxuZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluXG5jb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICJjbGFzc21ldGhvZCgpIikgYXJlXG5pbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuLS0tLS0tLS0tXG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICpfX3Nsb3RzX18qXG4gICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgdGhlXG4gICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaFxuICAgaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAiQXR0cmlidXRlRXJyb3IiLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXNcbiAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0c1xuICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZVxuICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlXG4gIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS5cbiAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiIGFuZCAidHVwbGUiLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3NcbiAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuXG5cbkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyAidHlwZSgpIi4gVGhlIGNsYXNzIGJvZHkgaXNcbmV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0byB0aGVcbnJlc3VsdCBvZiAidHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKSIuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG4ibWV0YWNsYXNzIiBrZXl3b3JkIGFyZ3VtZW50IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGxpbmUsIG9yIGJ5XG5pbmhlcml0aW5nIGZyb20gYW4gZXhpc3RpbmcgY2xhc3MgdGhhdCBpbmNsdWRlZCBzdWNoIGFuIGFyZ3VtZW50LiBJblxudGhlIGZvbGxvd2luZyBleGFtcGxlLCBib3RoICJNeUNsYXNzIiBhbmQgIk15U3ViY2xhc3MiIGFyZSBpbnN0YW5jZXNcbm9mICJNZXRhIjpcblxuICAgY2xhc3MgTWV0YSh0eXBlKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU1ldGEpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKTpcbiAgICAgICBwYXNzXG5cbkFueSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbmFyZSBwYXNzZWQgdGhyb3VnaCB0byBhbGwgbWV0YWNsYXNzIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGJlbG93LlxuXG5XaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjpcblxuKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWRcblxuKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkXG5cbiogdGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWRcblxuKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWRcblxuXG5EZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBkZXRlcm1pbmVkIGFzXG5mb2xsb3dzOlxuXG4qIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuICJ0eXBlKCkiIGlzXG4gIHVzZWRcblxuKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mXG4gICJ0eXBlKCkiLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mICJ0eXBlKCkiIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCBtZXRhY2xhc3MsIG9yXG4gIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHVzZWRcblxuVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWRcbm1ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuICJ0eXBlKGNscykiKSBvZiBhbGxcbnNwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhXG5zdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGVcbmNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxud2lsbCBmYWlsIHdpdGggIlR5cGVFcnJvciIuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLFxuaXQgaXMgY2FsbGVkIGFzICJuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsXG4qKmt3ZHMpIiAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZSBmcm9tXG50aGUgY2xhc3MgZGVmaW5pdGlvbikuXG5cbklmIHRoZSBtZXRhY2xhc3MgaGFzIG5vICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5ICJkaWN0KCkiIGluc3RhbmNlLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDBcblxuICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksIGdsb2JhbHMoKSxcbm5hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICJleGVjKCkiIGlzIHRoYXRcbmxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgbWV0aG9kcykgdG9cbnJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgY2xhc3NcbmRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuXG5Ib3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sXG5tZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlXG5jbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3RcbnBhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbFxuZnJvbSBzdGF0aWMgbWV0aG9kcy5cblxuXG5DcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzc1xuYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgIm1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbm5hbWVzcGFjZSwgKiprd2RzKSIgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvICJfX3ByZXBhcmVfXyIpLlxuXG5UaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLVxuYXJndW1lbnQgZm9ybSBvZiAic3VwZXIoKSIuICJfX2NsYXNzX18iIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciAiX19jbGFzc19fIiBvciAic3VwZXIiLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudCBmb3JtXG5vZiAic3VwZXIoKSIgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkIGJhc2VkIG9uXG5sZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvIG1ha2UgdGhlXG5jdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoZVxubWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5XaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgcHJvdmlkZWQgYXNcbnRoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIHN0YW5kYXJkIFB5dGhvbiBkaWN0aW9uYXJ5IGFuZFxudGhlIG9yaWdpbmFsIG9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBiZWNvbWVzIHRoZSAiX19kaWN0X18iXG5hdHRyaWJ1dGUgb2YgdGhlIGNsYXNzIG9iamVjdC5cblxuU2VlIGFsc286ICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuXG4gICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4iY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzIHZhcmlhYmxlc1xuYXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgIEBjbGFzc21ldGhvZFxuICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHMgYW5kXG5hdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG4iaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzIGluXG5vcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG5cbiAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICJpc2luc3RhbmNlKCkiIGFuZFxuICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiBhbmRcbiAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSBpblxuICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICJhYmMiXG4gICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSBpbXBsZW1lbnRlZCBieVxuYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2YgdGhlc2Vcbm1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWwgd2hlblxuaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uIHByb3ZpZGVzXG5zaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlIGludGVycHJldGVyLCBhdFxudGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBtZXRob2RzICh0aGVcbnNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmVcbmNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAotICdzdHJpbmctbWV0aG9kcyc6IHUnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAic3RyLmZvcm1hdCgpIixcbipGb3JtYXQgU3RyaW5nIFN5bnRheCogYW5kICpDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlIG90aGVyXG5iYXNlZCBvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2ZcbnR5cGVzIGFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3JcbnRoZSBjYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiIG1vZHVsZSkuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jYXNlZm9sZCgpXG5cbiAgIFJldHVybiBhIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLiBDYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlXG4gICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cblxuICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSBhZ2dyZXNzaXZlIGJlY2F1c2VcbiAgIGl0IGlzIGludGVuZGVkIHRvIHJlbW92ZSBhbGwgY2FzZSBkaXN0aW5jdGlvbnMgaW4gYSBzdHJpbmcuIEZvclxuICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ1x4ZGZcJyIgaXMgZXF1aXZhbGVudCB0byAiInNzIiIuXG4gICBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgImxvd2VyKCkiIHdvdWxkIGRvIG5vdGhpbmcgdG8gIlwnXHhkZlwnIjtcbiAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG5cbiAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSBzcGFjZSkuIFRoZVxuICAgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAibGVuKHMpIi5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyAiXCdzdHJpY3RcJyIsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuIE90aGVyIHBvc3NpYmxlXG4gICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4gICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHZpYVxuICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gKkVycm9yIEhhbmRsZXJzKi4gRm9yIGEgbGlzdFxuICAgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmQgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN1ZmZpeGVzXG4gICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyh0YWJzaXplPTgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUYWIgcG9zaXRpb25zIG9jY3VyIGV2ZXJ5ICp0YWJzaXplKiBjaGFyYWN0ZXJzXG4gICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2IGFuZCBzbyBvbikuXG4gICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvIGFuZCB0aGVcbiAgIHN0cmluZyBpcyBleGFtaW5lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiAgSWYgdGhlIGNoYXJhY3RlciBpcyBhXG4gICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHJlc3VsdFxuICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiBwb3NpdGlvbi4gKFRoZVxuICAgdGFiIGNoYXJhY3RlciBpdHNlbGYgaXMgbm90IGNvcGllZC4pICBJZiB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVxuICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCBjb2x1bW4gaXNcbiAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgYW5kIHRoZVxuICAgY3VycmVudCBjb2x1bW4gaXMgaW5jcmVtZW50ZWQgYnkgb25lIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZVxuICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cblxuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKClcbiAgIFwnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzRcJ1xuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKDQpXG4gICBcJzAxICAwMTIgMDEyMyAgICAwMTIzNFwnXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCB3aXRoaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCpcbiAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZlxuICAgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vd1xuICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsXG4gICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgIm1hcHBpbmciIGlzIHVzZWRcbiAgIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgImRpY3QiLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yIGV4YW1wbGVcbiAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyICJjIlxuICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgIlRydWUiOlxuICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAiYy5pc251bWVyaWMoKSIuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbiAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgc3VjaCBhc1xuICAgImRlZiIgYW5kICJjbGFzcyIuXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICJyZXByKCkiIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgICAgXCdzcGFjaW91cyAgIFwnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICAic3RyLnRyYW5zbGF0ZSgpIi5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvciBzcGxpdHRpbmdcbiAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggaXNcbiAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+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+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIENvcm91dGluZSBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbiAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCxcbiAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4gICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiIHN0YXRlbWVudHMuXG4gICAgICBTZWUgYWxzbyB0aGUgKkNvcm91dGluZSBPYmplY3RzKiBzZWN0aW9uLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGVcbiAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi5cbiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3MgY2xhc3MgaGFzIGFcbiAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgaW5zdGVhZFxuICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZFxuICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAiZl9sYXN0aSJcbiAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4gICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2ZcbiAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24ganVtcHNcbiAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSBkZWJ1Z2dlclxuICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgd3JpdGluZ1xuICAgICAgdG8gZl9saW5lbm8uXG5cbiAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBmcmFtZS5jbGVhcigpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieVxuICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGVcbiAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXNcbiAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4gICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cblxuICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBub1xuICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpXG4gICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsXG4gICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAiX19nZXRpdGVtX18oKSJcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAic3RvcCJcbiAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiBpZlxuICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCi0gJ3R5cGVzZnVuY3Rpb25zJzogdSdcbkZ1bmN0aW9uc1xuKioqKioqKioqXG5cbkZ1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgb25seVxub3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21hcHBpbmcnOiB1J1xuTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1cbmluICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgIjEiIGFuZCAiMS4wIikgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleFxudGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzIHN0b3JlXG5mbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvIHVzZVxudGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJrZXk6XG52YWx1ZSIgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6ICJ7XCdqYWNrXCc6IDQwOTgsIFwnc2pvZXJkXCc6XG40MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgImRpY3QiXG5jb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdCgqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG5cbiAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgY3JlYXRlZC5cbiAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nIG9iamVjdCwgYVxuICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzIHRoZSBtYXBwaW5nXG4gICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gKml0ZXJhYmxlKlxuICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiBpdGVyYWJsZSB3aXRoXG4gICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gYmVjb21lcyBhIGtleVxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBmb3IgdGhhdCBrZXlcbiAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlaXJcbiAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlIHZhbHVlIGZyb21cbiAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC5cblxuICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbFxuICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcblxuICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbiAgICAgID4+PiBiID0ge1wnb25lXCc6IDEsIFwndHdvXCc6IDIsIFwndGhyZWVcJzogM31cbiAgICAgID4+PiBjID0gZGljdCh6aXAoW1wnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJ10sIFsxLCAyLCAzXSkpXG4gICAgICA+Pj4gZCA9IGRpY3QoWyhcJ3R3b1wnLCAyKSwgKFwnb25lXCcsIDEpLCAoXCd0aHJlZVwnLCAzKV0pXG4gICAgICA+Pj4gZSA9IGRpY3Qoe1wndGhyZWVcJzogMywgXCdvbmVcJzogMSwgXCd0d29cJzogMn0pXG4gICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4gICAgICBUcnVlXG5cbiAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvclxuICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSB2YWxpZCBrZXlzXG4gICBjYW4gYmUgdXNlZC5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgYW5kICprZXkqXG4gICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0IG1ldGhvZCB3aXRoXG4gICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiB0aGVuIHJldHVybnNcbiAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZVxuICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICJLZXlFcnJvciJcbiAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhblxuICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iIG1ldGhvZCBpcyB1c2VkXG4gICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICprZXkqIGlzIG5vdFxuICAgICAgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICJOb25lIiwgc29cbiAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksIHZhbHVlKSJcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cblxuICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogImQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKSIuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSAiKGtleSxcbiAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsIFwnPlwnKSByYWlzZVxuICAgIlR5cGVFcnJvciIuXG5cblNlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5XG4gIHZpZXcgb2YgYSAiZGljdCIuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiBhbmRcbiJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvbiB0aGVcbmRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5IGNoYW5nZXMsXG50aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZ1xuICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyIHdheSB0b1xuICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluIGQuaXRlbXMoKV0iLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cywgdmFsdWVzXG4gICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksIHZhbHVlKSJcbiAgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAiPT0iLFxuIjwiLCBvciAiXiIpLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKLSAndHlwZXNtZXRob2RzJzogdSdcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgb24gbGlzdHMpXG5hbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCB3aXRoIHRoZVxudHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGUgInNlbGYiXG5hcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gc3BlY2lhbCByZWFkLVxub25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kXG5vcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSBtZXRob2QuXG5DYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgZXF1aXZhbGVudCB0b1xuY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cblxuTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgYXJiaXRyYXJ5XG5hdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBvblxudGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhblxuYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJblxub3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlXG51bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAuLi4gICAgICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnICAjIGNhblwndCBzZXQgb24gdGhlIG1ldGhvZFxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgQXR0cmlidXRlRXJyb3I6IFwnbWV0aG9kXCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgXCd3aG9hbWlcJ1xuICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbW9kdWxlcyc6IHUnXG5Nb2R1bGVzXG4qKioqKioqXG5cblRoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSBhY2Nlc3M6ICJtLm5hbWUiLFxud2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgaW4gKm0qXCdzXG5zeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlIHRoYXQgdGhlXG4iaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uIG9uIGEgbW9kdWxlXG5vYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAqZm9vKiB0b1xuZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSBtb2R1bGVcbm5hbWVkICpmb28qIHNvbWV3aGVyZS4pXG5cbkEgc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZVwncyBzeW1ib2wgdGFibGUuIE1vZGlmeWluZyB0aGlzXG5kaWN0aW9uYXJ5IHdpbGwgYWN0dWFsbHkgY2hhbmdlIHRoZSBtb2R1bGVcJ3Mgc3ltYm9sIHRhYmxlLCBidXQgZGlyZWN0XG5hc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW4gd3JpdGVcbiJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgYnV0IHlvdSBjYW5cJ3RcbndyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzIG5vdFxucmVjb21tZW5kZWQuXG5cbk1vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPG1vZHVsZVxuXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlIHdyaXR0ZW4gYXNcbiI8bW9kdWxlIFwnb3NcJyBmcm9tIFwnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAotICd0eXBlc3NlcSc6IHUnXG5TZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG5vYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICpiaW5hcnlcbmRhdGEqIGFuZCAqdGV4dCBzdHJpbmdzKiBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cblxuXG5Db21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3Qgc2VxdWVuY2VcbnR5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zXG5vbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eS5cbkluIHRoZSB0YWJsZSwgKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKixcbipqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnlcbnR5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cblxuVGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZVxuY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiIChyZXBldGl0aW9uKVxub3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWNcbm9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgInggaW4gcyIgICAgICAgICAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiVHJ1ZSIgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMgKyB0IiAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICogbiIgb3IgIm4gKiBzIiAgICAgICAgIHwgZXF1aXZhbGVudCB0byBhZGRpbmcgKnMqIHRvICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2ldIiAgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicy5jb3VudCh4KSIgICAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZVxuICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlc1xuICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcblxuICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4gICAgICBUcnVlXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoIHlpZWxkcyBhblxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluIHRoZVxuICAgc2VxdWVuY2UgKnMqIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlIHRpbWVzLlxuICAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSByZWZlcmVuY2VzXG4gICB0byB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbiAgIEZ1cnRoZXIgZXhwbGFuYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBGQVEgZW50cnkgKkhvdyBkbyBJIGNyZWF0ZVxuICAgYSBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/Ki5cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2ZcbiAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCAiLTAiIGlzIHN0aWxsICIwIi5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpcyBvbWl0dGVkIG9yICJOb25lIixcbiAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpc1xuICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuIDxcbiAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAiaSsyKmsiLFxuICAgImkrMyprIiBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dCBuZXZlclxuICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4gICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAiZW5kIlxuICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqIGNhbm5vdCBiZVxuICAgemVyby4gSWYgKmsqIGlzICJOb25lIiwgaXQgaXMgdHJlYXRlZCBsaWtlICIxIi5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4gICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4gICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsXG4gICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0b1xuICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYW4gImlvLlN0cmluZ0lPIlxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJieXRlcyIgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiBvYmplY3RzIGFyZVxuICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJ0dXBsZSIgb2JqZWN0cywgZXh0ZW5kIGEgImxpc3QiIGluc3RlYWRcblxuICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uXG5cbjcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0XG4gICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuXG4gICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93XG4gICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGVcbiAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgInNbaTpqXS5pbmRleCh4KSIsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiBpbnN0YW5jZXMsIHRvXG5iZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiIGluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzIGNvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qIHRpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG5cbjYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlIHNlcXVlbmNlLlxuICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlXG4gICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyICpDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucyouXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAiW10iXG5cbiAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2FdIixcbiAgICAgIlthLCBiLCBjXSJcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcblxuICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICJsaXN0KFwnYWJjXCcpIlxuICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiByZXR1cm5zICJbMSwgMixcbiAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5XG4gICBsaXN0LCAiW10iLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICJzb3J0ZWQoKSJcbiAgIGJ1aWx0LWluLlxuXG4gICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4gICBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcblxuICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuXG4gICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgY29tcGFyaXNvbnNcbiAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb25cbiAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGVcbiAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG5cbiAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCBieVxuICAgICAga2V5d29yZCAoKmtleXdvcmQtb25seSBhcmd1bWVudHMqKTpcblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLlxuICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgc29ydGVkXG4gICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSBsaXN0XG4gICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2VcbiAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXNcbiAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlXG4gICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0XG4gICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuXG5UdXBsZXNcbj09PT09PVxuXG5UdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5oZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAiZW51bWVyYXRlKCkiXG5idWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgc2VxdWVuY2Vcbm9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAic2V0IiBvclxuImRpY3QiIGluc3RhbmNlKS5cblxuY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcblxuICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAiKCkiXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgIihhLCkiXG5cbiAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG5cbiAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICJ0dXBsZShpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsIFwnYlwnLCBcJ2NcJykiXG4gICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gYXJndW1lbnQgaXNcbiAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cblxuICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlXG4gICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eVxuICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS5cbiAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLFxuICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSBzb2xlXG4gICBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbmFwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cblxuXG5SYW5nZXNcbj09PT09PVxuXG5UaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShzdG9wKVxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgIl9faW5kZXhfXyJcbiAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG9cbiAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gIjAiLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgInJbaV0gPFxuICAgc3RvcCIuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuICAgIk92ZXJmbG93RXJyb3IiLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG4gICBzdGFydFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGFydCogcGFyYW1ldGVyIChvciAiMCIgaWYgdGhlIHBhcmFtZXRlciB3YXNcbiAgICAgIG5vdCBzdXBwbGllZClcblxuICAgc3RvcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXJcblxuICAgc3RlcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyIHdhc1xuICAgICAgbm90IHN1cHBsaWVkKVxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICJ0dXBsZSIgaXNcbnRoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50IG9mXG5tZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgb25seVxuc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWxcbml0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgYW5kXG5wcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLFxuc2xpY2luZyBhbmQgc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS1cbmxpc3QsIHR1cGxlLCByYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzIHRoZW0gYXNcbnNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmIHRoZXlcbnJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSBvYmplY3RzXG50aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCJcbmF0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgInJhbmdlKDAsIDMsXG4yKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50XG50aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgXCc9PVwnIGFuZCBcJyE9XCcgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzXG5iYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZ1xuYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicsCi0gJ3R5cGVzc2VxLW11dGFibGUnOiB1J1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9IDI1NSIpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSBsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsIHNbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gdCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyBjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiB0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9IFt4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbiAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2Vyc1xuICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZFxuICAgc2VxdWVuY2UuXG5cbjUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuXG42LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbiAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSBzZXF1ZW5jZS5cbiAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZVxuICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciAqQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMqLlxuJywKLSAndW5hcnknOiB1J1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG5hcmd1bWVudC5cblxuVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICd3aGlsZSc6IHUnXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKLSAnd2l0aCc6IHUnXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogdSdcblRoZSAieWllbGQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhICp5aWVsZFxuZXhwcmVzc2lvbiouIFRoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXNcbnRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb25cbnN0YXRlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG5cbiAgIHlpZWxkIDxleHByPlxuICAgeWllbGQgZnJvbSA8ZXhwcj5cblxuYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuXG4gICAoeWllbGQgPGV4cHI+KVxuICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuXG5ZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3JcbmZ1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2VcbnRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuZnVuY3Rpb24uXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gTW9uIE9jdCAxMCAxNTo1OToxNyAyMDE2Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgJworICAgICAgICAgICAncmVmZXJcbicKKyAgICAgICAgICAgJ3RvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxuJworICAgICAgICAgICAnbm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgJyhjb21tYW5kXG4nCisgICAgICAgICAgICdsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuJworICAgICAgICAgICAnYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgJworICAgICAgICAgICAnTm90ZVxuJworICAgICAgICAgICAndGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ3RoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc3RhY2sgdHJhY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgJworICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKKyAnYXNzaWdubWVudCc6ICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCAnCisgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICdtb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKHN0YXJyZWRfZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgICAnfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIigiIFt0YXJnZXRfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICcqYXR0cmlidXRlcmVmKixcbicKKyAgICAgICAgICAgICAgICcqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAgICAgJyhyZW1lbWJlciB0aGF0XG4nCisgICAgICAgICAgICAgICAndGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgJworICAgICAgICAgICAgICAgJ2xhdHRlclxuJworICAgICAgICAgICAgICAgJ3lpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byAnCisgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gJworICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZVxuJworICAgICAgICAgICAgICAgJ2hpZXJhcmNoeSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCAnCisgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICdwYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuICcKKyAgICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICAgJyAgaXRlcmFibGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0IGluIHBhcmVudGhlc2VzOiBUaGUgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzLCBvciAnCisgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgJyAgc2luZ2xlIHRhcmdldCBpbiBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAgICcgIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICcgICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICcgICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0IGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgJworICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlICcKKyAgICAgICAgICAgICAgICdzdGFycmVkXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyAnCisgICAgICAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICcodGhlIGxpc3RcbicKKyAgICAgICAgICAgICAgICcgICAgY2FuIGJlIGVtcHR5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyICcKKyAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgJyAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgICAndGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgJworICAgICAgICAgICAgICAgJ2RlZmluZWQgYXNcbicKKyAgICAgICAgICAgICAgICdmb2xsb3dzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuJworICAgICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgICAgICcibm9ubG9jYWwiLFxuJworICAgICAgICAgICAgICAgJyAgICByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgJworICAgICAgICAgICAgICAgJ3RvIHJlYWNoXG4nCisgICAgICAgICAgICAgICAnICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyAnCisgICAgICAgICAgICAgICAnZGVzdHJ1Y3RvciAoaWYgaXRcbicKKyAgICAgICAgICAgICAgICcgIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaW5cbicKKyAgICAgICAgICAgICAgICcgIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgJworICAgICAgICAgICAgICAgJ3JhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggJworICAgICAgICAgICAgICAgJ2FzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgJ25vbm5lZ2F0aXZlXG4nCisgICAgICAgICAgICAgICAiICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2UncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgIgorICAgICAgICAgICAgICAgJ2Fza2VkXG4nCisgICAgICAgICAgICAgICAnICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICAnCisgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAnICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzIGtleSAiCisgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSAnCisgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICdjYWxsZWQgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICAnICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuICIKKyAgICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICAgIiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgdG8gIgorICAgICAgICAgICAgICAgJ2l0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvICcKKyAgICAgICAgICAgICAgICdyZXBsYWNlXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdsZW5ndGggb2ZcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlLFxuJworICAgICAgICAgICAgICAgJyAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsICcKKyAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAidGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnc2ltdWx0YW5lb3VzJyAiCisgICAgICAgICAgICAgICAnKGZvclxuJworICAgICAgICAgICAgICAgJ2V4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsICcKKyAgICAgICAgICAgICAgICdzb21ldGltZXNcbicKKyAgICAgICAgICAgICAgICdyZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gJworICAgICAgICAgICAgICAgJ3ByaW50c1xuJworICAgICAgICAgICAgICAgJyJbMCwgMl0iOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIHggPSBbMCwgMV1cbicKKyAgICAgICAgICAgICAgICcgICBpID0gMFxuJworICAgICAgICAgICAgICAgJyAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyAnCisgICAgICAgICAgICAgICAndXBkYXRlZFxuJworICAgICAgICAgICAgICAgJyAgIHByaW50KHgpXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+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+IHByaW50KHNwYW0pXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJ2luIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpICcKKyAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAnICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55ICcKKyAgICAgICAgICAgICAnY29kZSBpc1xuJworICAgICAgICAgICAgICcgICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91ICcKKyAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICcKKyAgICAgICAgICAgICAnKmxvY2FscypcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQ7IGJ5XG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSAiX19tYWluX18iIGlzIHVzZWQuICAnCisgICAgICAgICAgICAgJyhTZWUgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSAnCisgICAgICAgICAgICAgJ29iamVjdClcbicKKyAgICAgICAgICAgICAnICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICAicnVuKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhICcKKyAgICAgICAgICAgICAnc3RyaW5nKVxuJworICAgICAgICAgICAgICcgICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0ICcKKyAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICcgICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgJworICAgICAgICAgICAgICdhcHBlYXJzXG4nCisgICAgICAgICAgICAgJyAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgJworICAgICAgICAgICAgICd1c2VmdWwgdG9cbicKKyAgICAgICAgICAgICAnICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbicKKyAgICAgICAgICAgICAnICAgZmFpbHMpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICAnCisgICAgICAgICAgICAgJ0lmIG5vXG4nCisgICAgICAgICAgICAgJyAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wbSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuJworICAgICAgICAgICAgICcgICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicnVuKiIgZnVuY3Rpb25zIGFuZCAic2V0X3RyYWNlKCkiIGFyZSBhbGlhc2VzIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbnRpYXRpbmdcbicKKyAgICAgICAgICAgICAndGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSAnCisgICAgICAgICAgICAgJ3dhbnRcbicKKyAgICAgICAgICAgICAndG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgIgorICAgICAgICAgICAgICdza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCAnCisgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICcgICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICcKKyAgICAgICAgICAgICAnZ2xvYi1zdHlsZVxuJworICAgICAgICAgICAgICcgICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICcgICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoICcKKyAgICAgICAgICAgICAnaXMgc2VudFxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgIkN0cmwtQyIgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgJworICAgICAgICAgICAgICdQZGJcbicKKyAgICAgICAgICAgICAnICAgd2lsbCBsb2FkIC5wZGJyYyBmaWxlcyBmcm9tIHRoZSBmaWxlc3lzdGVtLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKClcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhICcKKyAgICAgICAgICAgICAnU0lHSU5UXG4nCisgICAgICAgICAgICAgJyAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBUaGUgKnJlYWRyYyogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJyAgIHNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0RlYnVnZ2VyIENvbW1hbmRzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7ICcKKyAgICAgICAgICAgICAnZS5nLlxuJworICAgICAgICAgICAgICciaChlbHApIiBtZWFucyB0aGF0IGVpdGhlciAiaCIgb3IgImhlbHAiIGNhbiBiZSB1c2VkIHRvIGVudGVyICcKKyAgICAgICAgICAgICAndGhlIGhlbHBcbicKKyAgICAgICAgICAgICAnY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuJworICAgICAgICAgICAgICdBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSAoc3BhY2VzICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAndGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAnCisgICAgICAgICAgICAgJygiW10iKSBpblxuJworICAgICAgICAgICAgICd0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG4nCisgICAgICAgICAgICAgJ0FsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsICcKKyAgICAgICAgICAgICAnYmFyXG4nCisgICAgICAgICAgICAgJygifCIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgJworICAgICAgICAgICAgICdFeGNlcHRpb246IGlmXG4nCisgICAgICAgICAgICAgJ3RoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlICIKKyAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gJworICAgICAgICAgICAgICdleGNsYW1hdGlvblxuJworICAgICAgICAgICAgICdwb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAicHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgc3VwcG9ydHMgYWxpYXNlcy4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJ2FsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuJworICAgICAgICAgICAgICdleGFtaW5hdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieSAnCisgICAgICAgICAgICAgJyI7OyIuXG4nCisgICAgICAgICAgICAgJyhBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgJworICAgICAgICAgICAgICdjb21tYW5kc1xuJworICAgICAgICAgICAgICdpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm8gaW50ZWxsaWdlbmNlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0IGF0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIGEgZmlsZSAiLnBkYnJjIiBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuICcKKyAgICAgICAgICAgICAndHlwZWRcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgJworICAgICAgICAgICAgICdhbGlhc2VzLiAgSWZcbicKKyAgICAgICAgICAgICAnYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdhbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuJworICAgICAgICAgICAgICdjb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCAnCisgICAgICAgICAgICAgJ3RoZXNlXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdoKGVscCkgW2NvbW1hbmRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgJworICAgICAgICAgICAgICdwZGIiXG4nCisgICAgICAgICAgICAgJyAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlICJwZGIiXG4nCisgICAgICAgICAgICAgJyAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgJworICAgICAgICAgICAgICciaGVscFxuJworICAgICAgICAgICAgICcgICBleGVjIiBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlICIhIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndyhoZXJlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlICcKKyAgICAgICAgICAgICAnYm90dG9tLiAgQW5cbicKKyAgICAgICAgICAgICAnICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSAnCisgICAgICAgICAgICAgJ2NvbnRleHQgb2ZcbicKKyAgICAgICAgICAgICAnICAgbW9zdCBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Qob3duKSBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1KHApIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgJworICAgICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICAgICcgICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZmlsZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGFibGVcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSAnCisgICAgICAgICAgICAgJ3ByZWZpeGVkXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gJworICAgICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgICAgIiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgIgorICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIGFcbicKKyAgICAgICAgICAgICAnICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyAnCisgICAgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgICAgJyAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICAgICdjbGVhclxuJworICAgICAgICAgICAgICcgICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0ICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgYXNrIGNvbmZpcm1hdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbicKKyAgICAgICAgICAgICAnICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICAgICcgICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCwgaXRcbicKKyAgICAgICAgICAgICAnICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2VuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lnbm9yZSBicG51bWJlciBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgJworICAgICAgICAgICAgICdjb3VudCBpc1xuJworICAgICAgICAgICAgICcgICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgJworICAgICAgICAgICAgICdhY3RpdmVcbicKKyAgICAgICAgICAgICAnICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbicKKyAgICAgICAgICAgICAnICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvICcKKyAgICAgICAgICAgICAndHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCAnCisgICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICcKKyAgICAgICAgICAgICAnKmNvbmRpdGlvbipcbicKKyAgICAgICAgICAgICAnICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgW2JwbnVtYmVyXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhICcKKyAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICcgICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpIGNvbW1hbmRzIDFcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgJyAgICAgIChjb20pIGVuZFxuJworICAgICAgICAgICAgICcgICAgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgJworICAgICAgICAgICAgICdmb2xsb3dcbicKKyAgICAgICAgICAgICAnICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBzZXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCAnCisgICAgICAgICAgICAgJ2FnYWluLlxuJworICAgICAgICAgICAgICcgICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgJworICAgICAgICAgICAgICdjb21tYW5kIHRoYXRcbicKKyAgICAgICAgICAgICAnICAgcmVzdW1lcyBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5ICcKKyAgICAgICAgICAgICAnY29udGludWUsXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICcgICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAnICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgJworICAgICAgICAgICAgICdicmVha3BvaW50LS13aGljaFxuJworICAgICAgICAgICAgICcgICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0ICcKKyAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAnICAgbGlzdCB0byBleGVjdXRlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgSWYgeW91IHVzZSB0aGUgJ3NpbGVudCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgIgorICAgICAgICAgICAgICd1c3VhbFxuJworICAgICAgICAgICAgICcgICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgJworICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAnICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljICcKKyAgICAgICAgICAgICAnbWVzc2FnZSBhbmRcbicKKyAgICAgICAgICAgICAnICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCAnCisgICAgICAgICAgICAgJ3lvdVxuJworICAgICAgICAgICAgICcgICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncyh0ZXApXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlICcKKyAgICAgICAgICAgICAnb2NjYXNpb25cbicKKyAgICAgICAgICAgICAnICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudCBmdW5jdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICduKGV4dClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIm5leHQiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICcgICBpcyB0aGF0ICJzdGVwIiBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlICJuZXh0IlxuJworICAgICAgICAgICAgICcgICBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHkgJworICAgICAgICAgICAgICdzdG9wcGluZyBhdFxuJworICAgICAgICAgICAgICcgICB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VudChpbCkgW2xpbmVub11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICcgICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gJworICAgICAgICAgICAgICdzdG9wIHdoZW5cbicKKyAgICAgICAgICAgICAnICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lICcKKyAgICAgICAgICAgICAnbnVtYmVyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncihldHVybilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYyhvbnQoaW51ZSkpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2VuY291bnRlcmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaih1bXApIGxpbmVub1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlICcKKyAgICAgICAgICAgICAnYWdhaW4sXG4nCisgICAgICAgICAgICAgIiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBydW4uXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgJyAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhICJmb3IiIGxvb3Agb3IgJworICAgICAgICAgICAgICdvdXRcbicKKyAgICAgICAgICAgICAnICAgb2YgYSAiZmluYWxseSIgY2xhdXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbChpc3QpIFtmaXJzdFssIGxhc3RdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCAnCisgICAgICAgICAgICAgJ2xpc3QgMTFcbicKKyAgICAgICAgICAgICAnICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzICcKKyAgICAgICAgICAgICAnbGlzdGluZy5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICAnCisgICAgICAgICAgICAgJ1dpdGhcbicKKyAgICAgICAgICAgICAnICAgb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuJworICAgICAgICAgICAgICcgICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzICcKKyAgICAgICAgICAgICAnbGVzc1xuJworICAgICAgICAgICAgICcgICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5ICItPiIuICAnCisgICAgICAgICAgICAgJ0lmIGFuXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICAgICcgICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSAiPj4iLCBpZiBpdCAnCisgICAgICAgICAgICAgJ2RpZmZlcnNcbicKKyAgICAgICAgICAgICAnICAgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdsbCB8IGxvbmdsaXN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4nCisgICAgICAgICAgICAgJyAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yICJsaXN0Ii5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2EocmdzKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnICAgdmFsdWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlOiAicHJpbnQoKSIgY2FuIGFsc28gYmUgdXNlZCwgYnV0IGlzIG5vdCBhIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAnY29tbWFuZFxuJworICAgICAgICAgICAgICcgICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncHAgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlrZSB0aGUgInAiIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgJworICAgICAgICAgICAgICdwcmV0dHktXG4nCisgICAgICAgICAgICAgJyAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3doYXRpcyBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc291cmNlIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNwbGF5IFtleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIGZyYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaW50ZXJhY3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFN0YXJ0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgJworICAgICAgICAgICAgICd3aG9zZVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzICcKKyAgICAgICAgICAgICAnZm91bmQgaW5cbicKKyAgICAgICAgICAgICAnICAgdGhlIGN1cnJlbnQgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhbGlhcyBbbmFtZSBbY29tbWFuZF1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiAnCisgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgJyAgIGluZGljYXRlZCBieSAiJTEiLCAiJTIiLCBhbmQgc28gb24sIHdoaWxlICIlKiIgaXMgcmVwbGFjZWQgYnkgJworICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzICcKKyAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgJyAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlICcKKyAgICAgICAgICAgICAnbGlzdGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSAnCisgICAgICAgICAgICAgJ2xlZ2FsbHlcbicKKyAgICAgICAgICAgICAnICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICcKKyAgICAgICAgICAgICAnKmNhbiogYmVcbicKKyAgICAgICAgICAgICAnICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlICcKKyAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICcgICBhbG9uZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuICcKKyAgICAgICAgICAgICAncGxhY2VkXG4nCisgICAgICAgICAgICAgJyAgIGluIHRoZSAiLnBkYnJjIiBmaWxlKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbicKKyAgICAgICAgICAgICAnICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiAnCisgICAgICAgICAgICAgJ3ByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBzIHBpIHNlbGZcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuYWxpYXMgbmFtZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICchIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0ICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbJy1sJ11cbiIKKyAgICAgICAgICAgICAnICAgICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3J1biBbYXJncyAuLi5dXG4nCisgICAgICAgICAgICAgJ3Jlc3RhcnQgW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ3N1cHBsaWVkLFxuJworICAgICAgICAgICAgICcgICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4nCisgICAgICAgICAgICAgJyAgICJzeXMuYXJndiIuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ29wdGlvbnMgYXJlXG4nCisgICAgICAgICAgICAgJyAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3EodWl0KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzICcKKyAgICAgICAgICAgICAnYWJvcnRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gJworICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgIGlzIGRldGVybWluZWQgYnkgdGhlICJfX25hbWVfXyIgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG4nCisgICAgICAgICdUaGUgImRlbCIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ2RlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbicKKyAgICAgICAgJ2hpbnRzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxuJworICAgICAgICAndG8gcmlnaHQuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCAnCisgICAgICAgICdvclxuJworICAgICAgICAnZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbicKKyAgICAgICAgJ3N0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuJworICAgICAgICAnIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgJworICAgICAgICAncGFzc2VkXG4nCisgICAgICAgICd0byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG4nCisgICAgICAgICdlcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCAnCisgICAgICAgICdldmVuXG4nCisgICAgICAgICd0aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbicKKyAgICAgICAgJ2Zyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG4nCisgICAgICAgICdibG9jay5cbicsCisgJ2RpY3QnOiAnXG4nCisgICAgICAgICAnRGljdGlvbmFyeSBkaXNwbGF5c1xuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbicKKyAgICAgICAgICdlbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAnCisgICAgICAgICAnIn0iXG4nCisgICAgICAgICAnICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuJworICAgICAgICAgJyAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiB8ICIqKiIgb3JfZXhwclxuJworICAgICAgICAgJyAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdJZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG4nCisgICAgICAgICAnZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlICcKKyAgICAgICAgICdkaWN0aW9uYXJ5OlxuJworICAgICAgICAgJ2VhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG4nCisgICAgICAgICAnY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG4nCisgICAgICAgICAibXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnkncyAiCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICdmb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkb3VibGUgYXN0ZXJpc2sgIioqIiBkZW5vdGVzICpkaWN0aW9uYXJ5IHVucGFja2luZyouIEl0cyBvcGVyYW5kXG4nCisgICAgICAgICAnbXVzdCBiZSBhICptYXBwaW5nKi4gIEVhY2ggbWFwcGluZyBpdGVtIGlzIGFkZGVkIHRvIHRoZSBuZXdcbicKKyAgICAgICAgICdkaWN0aW9uYXJ5LiAgTGF0ZXIgdmFsdWVzIHJlcGxhY2UgdmFsdWVzIGFscmVhZHkgc2V0IGJ5IGVhcmxpZXJcbicKKyAgICAgICAgICdrZXkvZGF0dW0gcGFpcnMgYW5kIGVhcmxpZXIgZGljdGlvbmFyeSB1bnBhY2tpbmdzLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNTogVW5wYWNraW5nIGludG8gZGljdGlvbmFyeSBkaXNwbGF5cywgb3JpZ2luYWxseVxuJworICAgICAgICAgJ3Byb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG4nCisgICAgICAgICAnbmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4nCisgICAgICAgICAnImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSAnCisgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAna2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSAnCisgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICd0aGV5IGFyZSBwcm9kdWNlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdSZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuJworICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5LiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG4nCisgICAgICAgICAnc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuJworICAgICAgICAgJ2JldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxuJworICAgICAgICAgJ3JpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCisgJ2R5bmFtaWMtZmVhdHVyZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgJworICAgICAgICAgICAgICAgICAgICAgJ2F0IGNvbXBpbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2lsbGVnYWwgd2hlbiB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlICcKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2lsbGVnYWwgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgJworICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZSBsb2NhbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3QgcmVzb2x2ZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCisgJ2Vsc2UnOiAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICAgJ29uZVxuJworICAgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gQm9vbGVhbiAnCisgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgJ2ZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuJworICAgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG4nCisgICAgICAgICAncHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAorICdleGNlcHRpb25zJzogJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mICcKKyAgICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsXG4nCisgICAgICAgICAgICAgICAnY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlICcKKyAgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAgJ2RldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yICcKKyAgICAgICAgICAgICAgICdieSBhbnlcbicKKyAgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBvY2N1cnJlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdUaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgJworICAgICAgICAgICAgICAgJ3J1bi10aW1lXG4nCisgICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICAnZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25cbicKKyAgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgJworICAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgICdjb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ3doZXRoZXIgYW5cbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdQeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgJ2hhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCAnCisgICAgICAgICAgICAgICAnYW4gb3V0ZXJcbicKKyAgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2ZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSAnCisgICAgICAgICAgICAgICAnb2YgY29kZVxuJworICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHRvcCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gJworICAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAgJ2VpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzXG4nCisgICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiICcKKyAgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgICdzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCAnCisgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRoZVxuJworICAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICAncmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbCBjb25kaXRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAgJyAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICAndHJ5XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSByYWlzZSAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgICcgICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgJworICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhlY21vZGVsJzogJ1xuJworICAgICAgICAgICAgICAnRXhlY3V0aW9uIG1vZGVsXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdTdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtXG4nCisgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqIGlzICcKKyAgICAgICAgICAgICAgJ2EgcGllY2VcbicKKyAgICAgICAgICAgICAgJ29mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSAnCisgICAgICAgICAgICAgICdmb2xsb3dpbmcgYXJlXG4nCisgICAgICAgICAgICAgICdibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uICcKKyAgICAgICAgICAgICAgJ0VhY2hcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSBmaWxlICcKKyAgICAgICAgICAgICAgJ2dpdmVuXG4nCisgICAgICAgICAgICAgICdhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgY29tbWFuZCAnCisgICAgICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0IGNvbW1hbmQgJworICAgICAgICAgICAgICAnKGFcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgJworICAgICAgICAgICAgICAiJyoqLWMqKidcbiIKKyAgICAgICAgICAgICAgJ29wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudCBwYXNzZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICdmdW5jdGlvbnMgImV2YWwoKSIgYW5kICJleGVjKCkiIGlzIGEgY29kZSBibG9jay5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSAnCisgICAgICAgICAgICAgICdjb250YWluc1xuJworICAgICAgICAgICAgICAnc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lc1xuJworICAgICAgICAgICAgICAid2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrJ3MgIgorICAgICAgICAgICAgICAnZXhlY3V0aW9uIGhhc1xuJworICAgICAgICAgICAgICAnY29tcGxldGVkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZ1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQmluZGluZyBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byAnCisgICAgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgJworICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICdpZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsICcKKyAgICAgICAgICAgICAgJ29yIGFmdGVyXG4nCisgICAgICAgICAgICAgICciYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICdpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgJworICAgICAgICAgICAgICAnVGhpcyBmb3JtXG4nCisgICAgICAgICAgICAgICdtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgJworICAgICAgICAgICAgICAnYm91bmQgZm9yXG4nCisgICAgICAgICAgICAgICd0aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSAnCisgICAgICAgICAgICAgICduYW1lKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrICcKKyAgICAgICAgICAgICAgJ2RlZmluZWQgYnkgYVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgJworICAgICAgICAgICAgICAndG9wLWxldmVsXG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCAnCisgICAgICAgICAgICAgICdibG9jayxcbicKKyAgICAgICAgICAgICAgJ3VubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kICcKKyAgICAgICAgICAgICAgJ2F0IHRoZVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgJworICAgICAgICAgICAgICAnKmJpbmRpbmcqXG4nCisgICAgICAgICAgICAgICdvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gJworICAgICAgICAgICAgICAncnVsZXMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUmVzb2x1dGlvbiBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiAnCisgICAgICAgICAgICAgICdhIGxvY2FsXG4nCisgICAgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgJworICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgJworICAgICAgICAgICAgICAnYmxvY2tzXG4nCisgICAgICAgICAgICAgICdjb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayAnCisgICAgICAgICAgICAgICdpbnRyb2R1Y2VzXG4nCisgICAgICAgICAgICAgICdhIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSAnCisgICAgICAgICAgICAgICduZWFyZXN0XG4nCisgICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAgICAiaXMgY2FsbGVkIHRoZSBibG9jaydzICplbnZpcm9ubWVudCouXG4iCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAgJ3JhaXNlZC4gSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSAnCisgICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICAndmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50ICcKKyAgICAgICAgICAgICAgJ3doZXJlIHRoZVxuJworICAgICAgICAgICAgICAnbmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICciVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9jaywgYWxsXG4nCisgICAgICAgICAgICAgICd1c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2N1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkICcKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhXG4nCisgICAgICAgICAgICAgICdibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG4nCisgICAgICAgICAgICAgICdkZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciAnCisgICAgICAgICAgICAgICdhbnl3aGVyZVxuJworICAgICAgICAgICAgICAnd2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiAnCisgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiAnCisgICAgICAgICAgICAgICd0aGUgbmFtZVxuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAndG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZSBieVxuJworICAgICAgICAgICAgICAnc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSAnCisgICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkICcKKyAgICAgICAgICAgICAgJ2ZpcnN0LiAgSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyAnCisgICAgICAgICAgICAgICdzZWFyY2hlZC4gIFRoZVxuJworICAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgJworICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICdpbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlICcKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICdjb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSAnCisgICAgICAgICAgICAgICdnbG9iYWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciAnCisgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAgJ3Njb3BlLlxuJworICAgICAgICAgICAgICAnIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgJworICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICdleGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAgJ3RpbWUgYVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgJworICAgICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICAgICciX19tYWluX18iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiAnCisgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgJ3NwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gJworICAgICAgICAgICAgICAnaXMgYW5cbicKKyAgICAgICAgICAgICAgJ2V4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSAnCisgICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICdmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgJ3VuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICcKKyAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9mXG4nCisgICAgICAgICAgICAgICd0aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgJworICAgICAgICAgICAgICAnbGltaXRlZCB0b1xuJworICAgICAgICAgICAgICAndGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mICcKKyAgICAgICAgICAgICAgJ21ldGhvZHMgLS1cbicKKyAgICAgICAgICAgICAgJ3RoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSAnCisgICAgICAgICAgICAgICd0aGV5IGFyZVxuJworICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgICd3aWxsIGZhaWw6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGNsYXNzIEE6XG4nCisgICAgICAgICAgICAgICcgICAgICAgYSA9IDQyXG4nCisgICAgICAgICAgICAgICcgICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0J1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlICcKKyAgICAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICAgICdpcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyAnCisgICAgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgJworICAgICAgICAgICAgICAnbGF0dGVyIGNhc2VcbicKKyAgICAgICAgICAgICAgInRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIgorICAgICAgICAgICAgICAnIl9fbWFpbl9fIlxuJworICAgICAgICAgICAgICAnbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gJworICAgICAgICAgICAgICAnaW4gYW55XG4nCisgICAgICAgICAgICAgICdvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJyJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSAnCisgICAgICAgICAgICAgICd1c2VyLWNyZWF0ZWRcbicKKyAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbicKKyAgICAgICAgICAgICAgJyJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAnCisgICAgICAgICAgICAgICdVc2Vyc1xuJworICAgICAgICAgICAgICAnd2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgJworICAgICAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAgICAgJ3RoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgJworICAgICAgICAgICAgICAnY29tcGlsZVxuJworICAgICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpID0gMTBcbicKKyAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgJyAgIGkgPSA0MlxuJworICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsICcKKyAgICAgICAgICAgICAgJ3doZW4gdXNlZFxuJworICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgJworICAgICAgICAgICAgICAnaWxsZWdhbCB0b1xuJworICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAgICAnZnVsbFxuJworICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgJworICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICdyZXNvbHZlZFxuJworICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICdUaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgJworICAgICAgICAgICAgICAnYnkgYW55XG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuICcKKyAgICAgICAgICAgICAgJ291dGVyXG4nCisgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgJ1RoZWlyXG4nCisgICAgICAgICAgICAgICcgIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgJworICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAnICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuICcKKyAgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAndHJ5XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQgYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlIHJhaXNlICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICcgICAgY29tcGlsZWQuXG4nLAorICdleHBybGlzdHMnOiAnXG4nCisgICAgICAgICAgICAgICdFeHByZXNzaW9uIGxpc3RzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25fbGlzdCAgICA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG4nCisgICAgICAgICAgICAgICcgICBzdGFycmVkX2xpc3QgICAgICAgOjo9IHN0YXJyZWRfaXRlbSAoICIsIiBzdGFycmVkX2l0ZW0gKSogJworICAgICAgICAgICAgICAnWyIsIl1cbicKKyAgICAgICAgICAgICAgJyAgIHN0YXJyZWRfZXhwcmVzc2lvbiA6Oj0gZXhwcmVzc2lvbiB8ICggc3RhcnJlZF9pdGVtICIsIiApKiAnCisgICAgICAgICAgICAgICdbc3RhcnJlZF9pdGVtXVxuJworICAgICAgICAgICAgICAnICAgc3RhcnJlZF9pdGVtICAgICAgIDo6PSBleHByZXNzaW9uIHwgIioiIG9yX2V4cHJcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0IHdoZW4gcGFydCBvZiBhIGxpc3Qgb3Igc2V0IGRpc3BsYXksIGFuIGV4cHJlc3Npb24gbGlzdFxuJworICAgICAgICAgICAgICAnY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGUgbGVuZ3RoIG9mICcKKyAgICAgICAgICAgICAgJ3RoZSB0dXBsZVxuJworICAgICAgICAgICAgICAnaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZSBleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGFzdGVyaXNrICIqIiBkZW5vdGVzICppdGVyYWJsZSB1bnBhY2tpbmcqLiAgSXRzIG9wZXJhbmQgbXVzdCAnCisgICAgICAgICAgICAgICdiZSBhblxuJworICAgICAgICAgICAgICAnKml0ZXJhYmxlKi4gIFRoZSBpdGVyYWJsZSBpcyBleHBhbmRlZCBpbnRvIGEgc2VxdWVuY2Ugb2YgaXRlbXMsICcKKyAgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgICdhcmUgaW5jbHVkZWQgaW4gdGhlIG5ldyB0dXBsZSwgbGlzdCwgb3Igc2V0LCBhdCB0aGUgc2l0ZSBvZiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ3VucGFja2luZy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy41OiBJdGVyYWJsZSB1bnBhY2tpbmcgaW4gZXhwcmVzc2lvbiBsaXN0cywgJworICAgICAgICAgICAgICAnb3JpZ2luYWxseVxuJworICAgICAgICAgICAgICAncHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAnCisgICAgICAgICAgICAgICcoYS5rLmEuIGFcbicKKyAgICAgICAgICAgICAgJypzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAid2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgIgorICAgICAgICAgICAgICAneWllbGRzIHRoZVxuJworICAgICAgICAgICAgICAndmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gJworICAgICAgICAgICAgICAnZW1wdHkgcGFpclxuJworICAgICAgICAgICAgICAnb2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKKyAnZmxvYXRpbmcnOiAnXG4nCisgICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuJworICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4nCisgICAgICAgICAgICAgJyAgIHBvaW50ZmxvYXQgICAgOjo9IFtkaWdpdHBhcnRdIGZyYWN0aW9uIHwgZGlnaXRwYXJ0ICIuIlxuJworICAgICAgICAgICAgICcgICBleHBvbmVudGZsb2F0IDo6PSAoZGlnaXRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbicKKyAgICAgICAgICAgICAnICAgZGlnaXRwYXJ0ICAgICA6Oj0gZGlnaXQgKFsiXyJdIGRpZ2l0KSpcbicKKyAgICAgICAgICAgICAnICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0cGFydFxuJworICAgICAgICAgICAgICcgICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdHBhcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCAnCisgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgJ3JhZGl4IDEwLiBGb3IgZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICdhcyAiNzdlMTAiLiBUaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpc1xuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBcyBpbiBpbnRlZ2VyIGxpdGVyYWxzLCB1bmRlcnNjb3JlcyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdzdXBwb3J0ZWQgZm9yIGRpZ2l0IGdyb3VwaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwICAgICcKKyAgICAgICAgICAgICAnMy4xNF8xNV85M1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICcKKyAgICAgICAgICAgICAnIi0xIlxuJworICAgICAgICAgICAgICdpcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAiLSIgYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWwgIjEiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciAnCisgICAgICAgICAgICAgJ2dyb3VwaW5nXG4nCisgICAgICAgICAgICAgJ3B1cnBvc2VzIGluIGxpdGVyYWxzLlxuJywKKyAnZm9yJzogJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICcoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxuJworICAgICAgICAnb2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgJyJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG4nCisgICAgICAgICdwcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICAnCisgICAgICAgICdFYWNoXG4nCisgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuJworICAgICAgICAnZm9yIGFzc2lnbm1lbnRzIChzZWUgQXNzaWdubWVudCBzdGF0ZW1lbnRzKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG4nCisgICAgICAgICdleGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gJworICAgICAgICAndGhlXG4nCisgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAnZXhjZXB0aW9uKSxcbicKKyAgICAgICAgJ3RoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgJworICAgICAgICAnbG9vcFxuJworICAgICAgICAndGVybWluYXRlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxuJworICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCAnCisgICAgICAgICdjb250aW51ZXNcbicKKyAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyBuZXh0XG4nCisgICAgICAgICdpdGVtLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0ICcKKyAgICAgICAgJ2xpc3QuXG4nCisgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICdpbmNsdWRpbmdcbicKKyAgICAgICAgJ3Rob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuJworICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlICcKKyAgICAgICAgJ25leHRcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdOYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG4nCisgICAgICAgICdidXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdFxuJworICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zIGFuXG4nCisgICAgICAgICdpdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgJworICAgICAgICAnaVxuJworICAgICAgICAnOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdOb3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuJworICAgICAgICAnICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuJworICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbicKKyAgICAgICAgJyAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbicKKyAgICAgICAgJyAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyAnCisgICAgICAgICdtZWFuc1xuJworICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggJworICAgICAgICAnb2ZcbicKKyAgICAgICAgJyAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbicKKyAgICAgICAgJyAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4nCisgICAgICAgICcgIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4nCisgICAgICAgICcgIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICAgIGZvciB4IGluIGFbOl06XG4nCisgICAgICAgICcgICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IFN0cmluZyBTeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QgYW5kIHRoZSAiRm9ybWF0dGVyIiBjbGFzcyBzaGFyZSAnCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICdzeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiAnCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdHRlciIsXG4nCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuICBUaGUgJworICAgICAgICAgICAgICAgICAgJ3N5bnRheCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG8gdGhhdCBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzLCBidXQgdGhlcmUgJworICAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVuY2VzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSAnCisgICAgICAgICAgICAgICAgICAnY3VybHkgYnJhY2VzXG4nCisgICAgICAgICAgICAgICAgICAnInt9Ii4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyAnCisgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBsaXRlcmFsXG4nCisgICAgICAgICAgICAgICAgICAndGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgJworICAgICAgICAgICAgICAgICAgJ3RvIGluY2x1ZGVcbicKKyAgICAgICAgICAgICAgICAgICdhIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSAnCisgICAgICAgICAgICAgICAgICAnZG91Ymxpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnInt7IiBhbmQgIn19Ii5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgJworICAgICAgICAgICAgICAgICAgJyJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgJworICAgICAgICAgICAgICAgICAgJyJdIj4gK1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbj5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlZFxuJworICAgICAgICAgICAgICAgICAgJ2FuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcqZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkLCB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICcKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqLCB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVkIGJ5IGEgY29sb24gIlwnOlwnIi4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyAnCisgICAgICAgICAgICAgICAgICAnZWl0aGVyIGFcbicKKyAgICAgICAgICAgICAgICAgICJudW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXQncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgIgorICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCwgYW5kIGlmIGl0J3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCAiCisgICAgICAgICAgICAgICAgICAna2V5d29yZFxuJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICdhcmUgMCwgMSwgMixcbicKKyAgICAgICAgICAgICAgICAgICcuLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSAnCisgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgICdCZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICdwb3NzaWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgJworICAgICAgICAgICAgICAgICAgJyJcJzEwXCciIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIlwnOi1dXCciKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5IGFueVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtXG4nCisgICAgICAgICAgICAgICAgICAnIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCAnCisgICAgICAgICAgICAgICAgICAnd2hpbGUgYW5cbicKKyAgICAgICAgICAgICAgICAgICdleHByZXNzaW9uIG9mIHRoZSBmb3JtICJcJ1tpbmRleF1cJyIgZG9lcyBhbiBpbmRleCBsb29rdXAgJworICAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgJworICAgICAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQsIHNvICJcJ3t9IHt9XCciIGlzIGVxdWl2YWxlbnQgdG8gIlwnezB9IHsxfVwnIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgJworICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gJworICAgICAgICAgICAgICAgICAgJ3sxfSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgJworICAgICAgICAgICAgICAgICAgImFyZ3VtZW50ICduYW1lJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICdvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICAjIEZpcnN0IGVsZW1lbnQgb2YgJworICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJ3BsYXllcnMnLlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICciX19mb3JtYXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAnZGVzaXJhYmxlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgJworICAgICAgICAgICAgICAgICAgJ293blxuJworICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZyBiZWZvcmVcbicKKyAgICAgICAgICAgICAgICAgICdjYWxsaW5nICJfX2Zvcm1hdF9fKCkiLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmcgbG9naWMgaXMgJworICAgICAgICAgICAgICAgICAgJ2J5cGFzc2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6ICJcJyFzXCciICcKKyAgICAgICAgICAgICAgICAgICd3aGljaCBjYWxsc1xuJworICAgICAgICAgICAgICAgICAgJyJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJcJyFhXCciIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbHMgImFzY2lpKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJyAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsICcKKyAgICAgICAgICAgICAgICAgICdhbGlnbm1lbnQsXG4nCisgICAgICAgICAgICAgICAgICAncGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lIGl0c1xuJworICAgICAgICAgICAgICAgICAgJ293biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJypmb3JtYXRfc3BlYyouXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgJworICAgICAgICAgICAgICAgICAgJ21pbmktbGFuZ3VhZ2UsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAnaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgbWF5IGNvbnRhaW4gYSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgbmFtZSxcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uIGZsYWcgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9uLCBidXQgZGVlcGVyICcKKyAgICAgICAgICAgICAgICAgICduZXN0aW5nIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ2FsbG93ZWQuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgJworICAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAgJ3N1YnN0aXR1dGVkIGJlZm9yZSB0aGUgKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuICcKKyAgICAgICAgICAgICAgICAgICdUaGlzXG4nCisgICAgICAgICAgICAgICAgICAnYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGEgdmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTZWUgdGhlIEZvcm1hdCBleGFtcGxlcyBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2VcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyAnCisgICAgICAgICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkXG4nCisgICAgICAgICAgICAgICAgICAnKHNlZSBGb3JtYXQgU3RyaW5nIFN5bnRheCBhbmQgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscykuICcKKyAgICAgICAgICAgICAgICAgICdUaGV5IGNhblxuJworICAgICAgICAgICAgICAgICAgJ2Fsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBidWlsdC1pbiAiZm9ybWF0KCkiICcKKyAgICAgICAgICAgICAgICAgICdmdW5jdGlvbi4gIEVhY2hcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93IHRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyAnCisgICAgICAgICAgICAgICAgICAndG8gYmVcbicKKyAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXRcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSAnCisgICAgICAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKCIiIiIpICcKKyAgICAgICAgICAgICAgICAgICdwcm9kdWNlc1xuJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSB2YWx1ZS4gJworICAgICAgICAgICAgICAgICAgJ0Egbm9uLWVtcHR5XG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdF9zcGVjICAgICA6Oj0gJworICAgICAgICAgICAgICAgICAgJ1tbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdW2dyb3VwaW5nX29wdGlvbl1bLnByZWNpc2lvbl1bdHlwZV1cbicKKyAgICAgICAgICAgICAgICAgICcgICBmaWxsICAgICAgICAgICAgOjo9IDxhbnkgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFsaWduICAgICAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2lnbiAgICAgICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWR0aCAgICAgICAgICAgOjo9IGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBncm91cGluZ19vcHRpb24gOjo9ICJfIiB8ICIsIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHByZWNpc2lvbiAgICAgICA6Oj0gaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGUgICAgICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgJworICAgICAgICAgICAgICAgICAgJyJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgYSAqZmlsbCpcbicKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSAnCisgICAgICAgICAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAnCisgICAgICAgICAgICAgICAgICAnKCIieyIiIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIiJ9IiIpIGFzIHRoZSAqZmlsbCogY2hhcmFjdGVyIGluIGEgZm9ybWF0dGVkIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbCBvciB3aGVuXG4nCisgICAgICAgICAgICAgICAgICAndXNpbmcgdGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZC4gIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlICcKKyAgICAgICAgICAgICAgICAgICd0byBpbnNlcnQgYVxuJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlIHdpdGggYSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICJsaW1pdGF0aW9uIGRvZXNuJ3RcbiIKKyAgICAgICAgICAgICAgICAgICdhZmZlY3QgdGhlICJmb3JtYXQoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cykuICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciAnCisgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gKGlmIGFueSkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcgZmllbGRzICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gJyswMDAwMDAxMjAnLiBUaGlzIGFsaWdubWVudCAiCisgICAgICAgICAgICAgICAgICAnb3B0aW9uIGlzIG9ubHkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICBJdCBiZWNvbWVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAiZGVmYXVsdCB3aGVuICcwJyAgfFxuIgorICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAndGhlIGF2YWlsYWJsZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgd2lkdGhcbicKKyAgICAgICAgICAgICAgICAgICd3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgb25lIG9mXG4nCisgICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE9wdGlvbiAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2JvdGggcG9zaXRpdmUgYXMgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgICdvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZCBvbiBwb3NpdGl2ZSAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycy4gICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudFxuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4IGFuZFxuJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciAnCisgICAgICAgICAgICAgICAgICAnaGV4YWRlY2ltYWwgb3V0cHV0XG4nCisgICAgICAgICAgICAgICAgICAnaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgIlwnMGJcJyIsICcKKyAgICAgICAgICAgICAgICAgICciXCcwb1wnIiwgb3JcbicKKyAgICAgICAgICAgICAgICAgICciXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCAnCisgICAgICAgICAgICAgICAgICAnRGVjaW1hbCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byAnCisgICAgICAgICAgICAgICAgICAnYWx3YXlzIGNvbnRhaW4gYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuICcKKyAgICAgICAgICAgICAgICAgICdOb3JtYWxseSwgYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAgICdvbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIlwnR1wnIlxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgJ3Jlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgJworICAgICAgICAgICAgICAgICAgJ3Rob3VzYW5kcyBzZXBhcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlXG4nCisgICAgICAgICAgICAgICAgICAnaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSBhbHNvICcKKyAgICAgICAgICAgICAgICAgICcqKlBFUCAzNzgqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJ19cJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhbiB1bmRlcnNjb3JlIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHNcbicKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAncHJlc2VudGF0aW9uIHR5cGUgIlwnZFwnIi4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgICAnIlwnYlwnIiwgIlwnb1wnIixcbicKKyAgICAgICAgICAgICAgICAgICciXCd4XCciLCBhbmQgIlwnWFwnIiwgdW5kZXJzY29yZXMgd2lsbCBiZSBpbnNlcnRlZCBldmVyeSA0ICcKKyAgICAgICAgICAgICAgICAgICdkaWdpdHMuICBGb3JcbicKKyAgICAgICAgICAgICAgICAgICdvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2Vycm9yLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IEFkZGVkIHRoZSAiXCdfXCciIG9wdGlvbiAoc2VlIGFsc28gJworICAgICAgICAgICAgICAgICAgJyoqUEVQIDUxNSoqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gIElmIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnY29udGVudC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdXaGVuIG5vIGV4cGxpY2l0IGFsaWdubWVudCBpcyBnaXZlbiwgcHJlY2VkaW5nIHRoZSAqd2lkdGgqICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCBieSBhXG4nCisgICAgICAgICAgICAgICAgICAnemVybyAoIlwnMFwnIikgY2hhcmFjdGVyIGVuYWJsZXMgc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgJ2ZvciBudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAndHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgJworICAgICAgICAgICAgICAgICAgJ3dpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICcqYWxpZ25tZW50KiB0eXBlIG9mICJcJz1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgJ2JlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludFxuJworICAgICAgICAgICAgICAgICAgJ2ZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyIuICBGb3Igbm9uLVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSAnCisgICAgICAgICAgICAgICAgICAnaW4gb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgICd3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgJworICAgICAgICAgICAgICAgICAgJ2ZvciBzdHJpbmdzIGFuZCAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAyLiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAxMC4gICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzguICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyBsb3dlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuICcKKyAgICAgICAgICAgICAgICAgICdiZSBmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93ICcKKyAgICAgICAgICAgICAgICAgICcoZXhjZXB0ICJcJ25cJyJcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnRlZ2VyIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgICdhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ3NjaWVudGlmaWMgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyICdlJyB0byBpbmRpY2F0ZSAiCisgICAgICAgICAgICAgICAgICAndGhlIGV4cG9uZW50LiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgY2FzZSAnRScgYXMgdGhlIHNlcGFyYXRvciAiCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZlwnIiAgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhICcKKyAgICAgICAgICAgICAgICAgICdmaXhlZC1wb2ludCBudW1iZXIuICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdGXCciICAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzICJcJ2ZcJyIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICAnY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICcKKyAgICAgICAgICAgICAgICAgICciSU5GIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAnCisgICAgICAgICAgICAgICAgICAnInAgPj0gMSIsIHRoaXMgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgb3IgaW4gICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzICcKKyAgICAgICAgICAgICAgICAgICdtYWduaXR1ZGUuICBUaGUgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHQgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciICcKKyAgICAgICAgICAgICAgICAgICdhbmQgcHJlY2lzaW9uICJwLTEiIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCA8PSAnCisgICAgICAgICAgICAgICAgICAnZXhwIDwgcCIsIHRoZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAnCisgICAgICAgICAgICAgICAgICAnIlwnZlwnIiBhbmQgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gJworICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQgaWYgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ2l0LiAgUG9zaXRpdmUgYW5kICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICd6ZXJvLCBhbmQgbmFucywgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiAnCisgICAgICAgICAgICAgICAgICAnYW5kICJuYW4iICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICdzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCAnCisgICAgICAgICAgICAgICAgICAndG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwICcKKyAgICAgICAgICAgICAgICAgICdhbmQgZGlzcGxheXMgaW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICdwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gIlwnZ1wnIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludC4gVGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcGFydGljdWxhciB2YWx1ZS4gVGhlIG92ZXJhbGwgZWZmZWN0IGlzIHRvICcKKyAgICAgICAgICAgICAgICAgICdtYXRjaCB0aGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ21vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgZXhhbXBsZXNcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlICJzdHIuZm9ybWF0KCkiIHN5bnRheCAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgJyIlIi1mb3JtYXR0aW5nLFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAie30iIGFuZCB3aXRoICI6IiB1c2VkIGluc3RlYWQgb2YgJworICAgICAgICAgICAgICAgICAgJyIlIi4gRm9yXG4nCisgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICdvcHRpb25zLCBzaG93blxuJworICAgICAgICAgICAgICAgICAgJ2luIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+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+XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIG5ld1xuJworICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgJ0F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAnICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCB2YXJpYWJsZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiAgQXMgYVxuJworICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgJworICAgICAgICAgICAgICAgICAnZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICdhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouICcKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyAnCisgICAgICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJypfX2luaXRfc3ViY2xhc3NfXyogaXNcbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyB3aGljaFxuJworICAgICAgICAgICAgICAgICAnY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCAnCisgICAgICAgICAgICAgICAgICd0byBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICd0aGV5XCdyZSBhcHBsaWVkIHRvLCAiX19pbml0X3N1YmNsYXNzX18iIHNvbGVseSBhcHBsaWVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2Z1dHVyZVxuJworICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBvZiB0aGUgY2xhc3MgZGVmaW5pbmcgdGhlIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3NtZXRob2Qgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZWQuXG4nCisgICAgICAgICAgICAgICAgICcgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFyZW50XCdzIGNsYXNzICJfX2luaXRfc3ViY2xhc3NfXyIuIEZvciBjb21wYXRpYmlsaXR5ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzZXMgdXNpbmcgIl9faW5pdF9zdWJjbGFzc19fIiwgb25lIHNob3VsZCB0YWtlIG91dCAnCisgICAgICAgICAgICAgICAgICd0aGUgbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MsIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAnCisgICAgICAgICAgICAgICAgICcqKmt3YXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCAnCisgICAgICAgICAgICAgICAgICdkZWZhdWx0X25hbWU9IkJydWNlIik6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAib2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fIiAnCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdGhpbmcsXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBtZXRhY2xhc3MgaGludCAibWV0YWNsYXNzIiBpcyBjb25zdW1lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAncmVzdCBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgdHlwZSBtYWNoaW5lcnksIGFuZCBpcyBuZXZlciBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAnIl9faW5pdF9zdWJjbGFzc19fIlxuJworICAgICAgICAgICAgICAgICAnICAgICBpbXBsZW1lbnRhdGlvbnMuIFRoZSBhY3R1YWwgbWV0YWNsYXNzIChyYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGludCkgY2FuIGJlIGFjY2Vzc2VkIGFzICJ0eXBlKGNscykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICAgICdsb2NhbGx5IHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAncmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgcGFzc2luZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgJworICAgICAgICAgICAgICAgICAnb3IgYnlcbicKKyAgICAgICAgICAgICAgICAgJ2luaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQuIEluXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAnb2YgIk1ldGEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICAgICAnYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzICcKKyAgICAgICAgICAgICAgICAgJ29jY3VyOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gJworICAgICAgICAgICAgICAgICAnInR5cGUoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgdXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcywgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJ3N1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICd3aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsXG4nCisgICAgICAgICAgICAgICAgICdpdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCAnCisgICAgICAgICAgICAgICAgICdiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJyoqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCAnCisgICAgICAgICAgICAgICAgICdjb21lIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBkZWZpbml0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuJworICAgICAgICAgICAgICAgICAnICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMoKSxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgJyJleGVjKCkiIGlzIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcykgdG9cbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VkIGF0IGFsbFxuJworICAgICAgICAgICAgICAgICAnZnJvbSBzdGF0aWMgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ09uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAnIm1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSwgKiprd2RzKSIgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAnYXMgdGhvc2UgcGFzc2VkIHRvICJfX3ByZXBhcmVfXyIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICd6ZXJvLVxuJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZm9ybSBvZiAic3VwZXIoKSIuICJfX2NsYXNzX18iIGlzIGFuIGltcGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ2Nsb3N1cmVcbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2JvZHkgcmVmZXJcbicKKyAgICAgICAgICAgICAgICAgJ3RvIGVpdGhlciAiX19jbGFzc19fIiBvciAic3VwZXIiLiBUaGlzIGFsbG93cyB0aGUgemVybyAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmb3JtXG4nCisgICAgICAgICAgICAgICAgICdvZiAic3VwZXIoKSIgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2VkIG9uXG4nCisgICAgICAgICAgICAgICAgICdsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkICcKKyAgICAgICAgICAgICAgICAgJ3RvIG1ha2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIG5ldyBvcmRlcmVkIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAnb3JpZ2luYWwgb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGlzIHdyYXBwZWQgaW4gYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJ3Byb3h5LCB3aGljaCBiZWNvbWVzIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCAiX19jbGFzc19fIiBjbG9zdXJlIHJlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGFjbGFzcyBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgJworICAgICAgICAgICAgICAgICAndGhhdCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICdiZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNcbicKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgJworICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrcywgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbicKKyAgICAgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzXG4nCisgICAgICAgICAgICAgICAgICdhcmUgZGVmaW5lZDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgT3JkZXJlZENsYXNzKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgQGNsYXNzbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgJworICAgICAgICAgICAgICAgICAnZGljdChuYW1lc3BhY2UpKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+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+PiAnd3d3LmV4YW1wbGUuY29tJy5sc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlLmNvbSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInN0ci50cmFuc2xhdGUoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnbGVuZ3RoIDEpIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciAnCisgICAgICAgICAgICAgICAgICAgJ05vbmUuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCBsZW5ndGgsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggJworICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIG1hcHBlZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGEgdGhpcmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb25lIGluIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHdvIGVtcHR5IHN0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqb2xkKlxuJworICAgICAgICAgICAgICAgICAgICcgICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZ2l2ZW4sIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICcqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgICcic1tzdGFydDplbmRdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHNsaWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYW4gQVNDSUlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHN0cmluZyBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqIHNwbGl0c1xuJworICAgICAgICAgICAgICAgICAgICcgICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgJworICAgICAgICAgICAgICAgICAgICdmb3Igc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggJworICAgICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgJworICAgICAgICAgICAgICAgICAgICdzdWZmaXg7IHJhdGhlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnJzdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICcgICBzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdtaXNzaXNzaXBwaScucnN0cmlwKCdpcHonKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnbWlzc2lzcydcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyptYXhzcGxpdCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyJtYXhzcGxpdCsxIlxuJworICAgICAgICAgICAgICAgICAgICcgICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgJworICAgICAgICAgICAgICAgICAgICd0aGVuIHRoZXJlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIG1hZGUpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ2dyb3VwZWQgdG9nZXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMSwsMlwnLnNwbGl0KFwnLFwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJ1wnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJzJcJywgJworICAgICAgICAgICAgICAgICAgICdcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICcKKyAgICAgICAgICAgICAgICAgICAnIltcJ1wnXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJywgbWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIsMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLCwzLCcuc3BsaXQoJywnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICcnLCAnMycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICAnc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVnYXJkZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gJworICAgICAgICAgICAgICAgICAgICdlbXB0eSBzdHJpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciAnCisgICAgICAgICAgICAgICAgICAgJ3RyYWlsaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgJworICAgICAgICAgICAgICAgICAgICdhIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgIltdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQobWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIgMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgMSAgIDIgICAzICAgJy5zcGxpdCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdyZXN1bHRpbmcgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNwbGl0cyBvbiB0aGUgZm9sbG93aW5nIGxpbmUgYm91bmRhcmllcy4gICcKKyAgICAgICAgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgKnVuaXZlcnNhbCAnCisgICAgICAgICAgICAgICAgICAgJ25ld2xpbmVzKi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSAnCisgICAgICAgICAgICAgICAgICAgJ1JldHVybiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCAnCisgICAgICAgICAgICAgICAgICAgJ0NvZGUpICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3QgJworICAgICAgICAgICAgICAgICAgICdvZiBsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJvdW5kYXJpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG4nLnNwbGl0bGluZXMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ2FiIGMnLCAnJywgJ2RlIGZnJywgJ2tsJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdhYiBjXFxuXFxuZGUgIgorICAgICAgICAgICAgICAgICAgICJmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnYWIgY1xcbicsICdcXG4nLCAnZGUgZmdcXHInLCAna2xcXHJcXG4nXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2dpdmVuLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ2EgdGVybWluYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnT25lIGxpbmUnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJycuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdUd28gbGluZXNcXG4nLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ1R3byBsaW5lcycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4KiwgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gJworICAgICAgICAgICAgICAgICAgICdsb29rIGZvci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlICpjaGFycypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ3NwYWNpb3VzJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScuc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIG91dGVybW9zdCBsZWFkaW5nIGFuZCB0cmFpbGluZyAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSBsZWFkaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVuZCB1bnRpbCByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNldCBvZiBjaGFyYWN0ZXJzIGluICpjaGFycyouIEEgc2ltaWxhciBhY3Rpb24gdGFrZXMgJworICAgICAgICAgICAgICAgICAgICdwbGFjZSBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZyA9ICcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICIKKyAgICAgICAgICAgICAgICAgICAiIzMyIC4uLi4uLi4nXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcCgnLiMhICcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdTZWN0aW9uIDMuMi4xIElzc3VlICMzMidcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zd2FwY2FzZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICduZWNlc3NhcmlseSB0cnVlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzICcKKyAgICAgICAgICAgICAgICAgICAnc3RhcnQgd2l0aCBhblxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ0hlbGxvIHdvcmxkJy50aXRsZSgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdIZWxsbyBXb3JsZCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gJworICAgICAgICAgICAgICAgICAgICd3b3JrcyBpblxuJworICAgICAgICAgICAgICAgICAgICcgICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluICcKKyAgICAgICAgICAgICAgICAgICAnY29udHJhY3Rpb25zIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgJworICAgICAgICAgICAgICAgICAgICdkZXNpcmVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyAnCisgICAgICAgICAgICAgICAgICAgJ3JlZ3VsYXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhwcmVzc2lvbnM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW1wb3J0IHJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86ICcKKyAgICAgICAgICAgICAgICAgICAnbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAnbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBzKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRyYW5zbGF0ZSh0YWJsZSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBpbiB3aGljaCBlYWNoIGNoYXJhY3RlciBoYXMgJworICAgICAgICAgICAgICAgICAgICdiZWVuIG1hcHBlZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4gIFRoZSB0YWJsZSBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICAgICAnYW4gb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgaW1wbGVtZW50cyBpbmRleGluZyB2aWEgIl9fZ2V0aXRlbV9fKCkiLCB0eXBpY2FsbHkgJworICAgICAgICAgICAgICAgICAgICdhICptYXBwaW5nKlxuJworICAgICAgICAgICAgICAgICAgICcgICBvciAqc2VxdWVuY2UqLiAgV2hlbiBpbmRleGVkIGJ5IGEgVW5pY29kZSBvcmRpbmFsIChhbiAnCisgICAgICAgICAgICAgICAgICAgJ2ludGVnZXIpLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGFibGUgb2JqZWN0IGNhbiBkbyBhbnkgb2YgdGhlIGZvbGxvd2luZzogcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlIG9yZGluYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3IgYSBzdHJpbmcsIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIG9uZSBvciBtb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycztcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuICJOb25lIiwgdG8gZGVsZXRlIHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nOyBvclxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZSBhICJMb29rdXBFcnJvciIgZXhjZXB0aW9uLCB0byBtYXAgdGhlIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGl0c2VsZi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFlvdSBjYW4gdXNlICJzdHIubWFrZXRyYW5zKCkiIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnbWFwIGZyb21cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNlZSBhbHNvIHRoZSAiY29kZWNzIiBtb2R1bGUgZm9yIGEgbW9yZSBmbGV4aWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvIGN1c3RvbVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgbWFwcGluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudXBwZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgWzRdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgJworICAgICAgICAgICAgICAgICAgICcic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAnCisgICAgICAgICAgICAgICAgICAgJyhMZXR0ZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuemZpbGwod2lkdGgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAnCisgICAgICAgICAgICAgICAgICAgJyJcJzBcJyIgZGlnaXRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeFxuJworICAgICAgICAgICAgICAgICAgICcgICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAgJyphZnRlciogdGhlIHNpZ25cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIHJhdGhlciB0aGFuIGJlZm9yZS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIjQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnMDAwNDInXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnLTAwNDInXG4iLAorICdzdHJpbmdzJzogJ1xuJworICAgICAgICAgICAgJ1N0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIiB8ICJmIiB8ICJGIlxuJworICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgfCAiZnIiIHwgIkZyIiB8ICJmUiIgfCAiRlIiIHwgInJmIiB8ICJyRiIgfCAnCisgICAgICAgICAgICAnIlJmIiB8ICJSRiJcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0c3RyaW5naXRlbSogXCciXCdcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8ICcKKyAgICAgICAgICAgICdcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgJworICAgICAgICAgICAgJ25ld2xpbmUgb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuJworICAgICAgICAgICAgJyAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAnCisgICAgICAgICAgICAnInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgJworICAgICAgICAgICAgJ2xvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSAnCisgICAgICAgICAgICAnb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbicKKyAgICAgICAgICAgICcgICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgJworICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICd3aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICcKKyAgICAgICAgICAgICciYnl0ZXNwcmVmaXgiXG4nCisgICAgICAgICAgICAnYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXQgaXMgZGVmaW5lZCAnCisgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICd0aGUgZW5jb2RpbmcgZGVjbGFyYXRpb247IGl0IGlzIFVURi04IGlmIG5vIGVuY29kaW5nIGRlY2xhcmF0aW9uICcKKyAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgJ2dpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gRW5jb2RpbmcgZGVjbGFyYXRpb25zLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0luIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluICcKKyAgICAgICAgICAgICdtYXRjaGluZ1xuJworICAgICAgICAgICAgJ3NpbmdsZSBxdW90ZXMgKCJcJyIpIG9yIGRvdWJsZSBxdW90ZXMgKCIiIikuICBUaGV5IGNhbiBhbHNvIGJlICcKKyAgICAgICAgICAgICdlbmNsb3NlZFxuJworICAgICAgICAgICAgJ2luIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2UgYXJlXG4nCisgICAgICAgICAgICAnZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSAnCisgICAgICAgICAgICAnYmFja3NsYXNoXG4nCisgICAgICAgICAgICAnKCJcXCIpIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgJworICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICdzcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG4nCisgICAgICAgICAgICAnY2hhcmFjdGVyLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0J5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgJworICAgICAgICAgICAgJ3Byb2R1Y2VcbicKKyAgICAgICAgICAgICdhbiBpbnN0YW5jZSBvZiB0aGUgImJ5dGVzIiB0eXBlIGluc3RlYWQgb2YgdGhlICJzdHIiIHR5cGUuICBUaGV5ICcKKyAgICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAgICdvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgMTI4ICcKKyAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgJ2dyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0FzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHN0cmluZyBsaXRlcmFscyAnCisgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAnInUiIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54ICcKKyAgICAgICAgICAgICdjb2RlYmFzZXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxuJworICAgICAgICAgICAgJ2xldHRlciAiXCdyXCciIG9yICJcJ1JcJyI7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogJworICAgICAgICAgICAgJ2FuZCB0cmVhdFxuJworICAgICAgICAgICAgJ2JhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgJworICAgICAgICAgICAgJ2xpdGVyYWxzLFxuJworICAgICAgICAgICAgJyJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkICcKKyAgICAgICAgICAgICdzcGVjaWFsbHkuXG4nCisgICAgICAgICAgICAiR2l2ZW4gdGhhdCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5ICIKKyAgICAgICAgICAgICd0aGFuXG4nCisgICAgICAgICAgICAnUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgIlwncmJcJyIgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgJworICAgICAgICAgICAgJ2JlZW5cbicKKyAgICAgICAgICAgICdhZGRlZCBhcyBhIHN5bm9ueW0gb2YgIlwnYnJcJyIuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuJworICAgICAgICAgICAgJygidVwndmFsdWVcJyIpIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mICcKKyAgICAgICAgICAgICdkdWFsXG4nCisgICAgICAgICAgICAnUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlICcKKyAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdBIHN0cmluZyBsaXRlcmFsIHdpdGggIlwnZlwnIiBvciAiXCdGXCciIGluIGl0cyBwcmVmaXggaXMgYSAnCisgICAgICAgICAgICAnKmZvcm1hdHRlZFxuJworICAgICAgICAgICAgJ3N0cmluZyBsaXRlcmFsKjsgc2VlIEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMuICBUaGUgIlwnZlwnIiBtYXkgJworICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAnY29tYmluZWQgd2l0aCAiXCdyXCciLCBidXQgbm90IHdpdGggIlwnYlwnIiBvciAiXCd1XCciLCB0aGVyZWZvcmUgJworICAgICAgICAgICAgJ3Jhd1xuJworICAgICAgICAgICAgJ2Zvcm1hdHRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSwgYnV0IGZvcm1hdHRlZCBieXRlcyBsaXRlcmFscyBhcmUgJworICAgICAgICAgICAgJ25vdC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgJworICAgICAgICAgICAgJ2FsbG93ZWRcbicKKyAgICAgICAgICAgICcoYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbicKKyAgICAgICAgICAgICd0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdsaXRlcmFsLCBpLmUuIGVpdGhlciAiXCciIG9yICIiIi4pXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5sZXNzIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyAnCisgICAgICAgICAgICAnaW4gc3RyaW5nXG4nCisgICAgICAgICAgICAnYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byAnCisgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICd1c2VkIGJ5IFN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxuZXdsaW5lIiAgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXFwiICAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoIlxcIikgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXCciICAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoIlwnIikgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcIiIgICAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlICgiIiIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGEiICAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxiIiAgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcZiIgICAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXG4iICAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxyIiAgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdCIgICAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHYiICAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxvb28iICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAnCisgICAgICAgICAgICAnKDEsMykgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxceGhoIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgJworICAgICAgICAgICAgJygyLDMpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdFc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbicKKyAgICAgICAgICAgICd8ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICcKKyAgICAgICAgICAgICcoNCkgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHV4eHh4IiAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoNSkgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFV4eHh4eHh4eCIgICAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoNikgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcxLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICczLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGVcbicKKyAgICAgICAgICAgICcgICBieXRlIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzXG4nCisgICAgICAgICAgICAnICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNC4gQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsxXSBoYXMgYmVlblxuJworICAgICAgICAgICAgJyAgIGFkZGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzUuIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc2LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5IGVpZ2h0XG4nCisgICAgICAgICAgICAnICAgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCBpbiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gICcKKyAgICAgICAgICAgICcoVGhpc1xuJworICAgICAgICAgICAgJ2JlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzICcKKyAgICAgICAgICAgICdtaXN0eXBlZCxcbicKKyAgICAgICAgICAgICd0aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCBpcyAnCisgICAgICAgICAgICAnYWxzb1xuJworICAgICAgICAgICAgJ2ltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluICcKKyAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICdsaXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciAnCisgICAgICAgICAgICAnYnl0ZXNcbicKKyAgICAgICAgICAgICdsaXRlcmFscy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBwcm9kdWNlICcKKyAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAnICAgRGVwcmVjYXRpb25XYXJuaW5nLiAgSW4gc29tZSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24gdGhleSAnCisgICAgICAgICAgICAnd2lsbCBiZVxuJworICAgICAgICAgICAgJyAgIGEgU3ludGF4RXJyb3IuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgJworICAgICAgICAgICAgJ2J1dCB0aGVcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSAnCisgICAgICAgICAgICAndmFsaWRcbicKKyAgICAgICAgICAgICdzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSAnCisgICAgICAgICAgICAnZG91YmxlXG4nCisgICAgICAgICAgICAncXVvdGU7ICJyIlxcIiIgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXcgc3RyaW5nICcKKyAgICAgICAgICAgICdjYW5ub3RcbicKKyAgICAgICAgICAgICdlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyAnCisgICAgICAgICAgICAnbGl0ZXJhbFxuJworICAgICAgICAgICAgJ2Nhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaCB3b3VsZCAnCisgICAgICAgICAgICAnZXNjYXBlXG4nCisgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBxdW90ZSBjaGFyYWN0ZXIpLiAgTm90ZSBhbHNvIHRoYXQgYSBzaW5nbGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyAnCisgICAgICAgICAgICAncGFydFxuJworICAgICAgICAgICAgJ29mIHRoZSBsaXRlcmFsLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3Vic2NyaXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdTdWJzY3JpcHRpb25zXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Egc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICdvciBsaXN0KVxuJworICAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzICcKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb25cbicKKyAgICAgICAgICAgICAgICAgICcobGlzdHMgb3IgZGljdGlvbmFyaWVzIGZvciBleGFtcGxlKS4gIFVzZXItZGVmaW5lZCBvYmplY3RzICcKKyAgICAgICAgICAgICAgICAgICdjYW4gc3VwcG9ydFxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0XG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0byBhblxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRzIHRvIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICdrZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgJworICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lXG4nCisgICAgICAgICAgICAgICAgICAnaXRlbS4pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdpbmRpY2VzIGluXG4nCisgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSAnCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xlbmd0aCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgICAgICdpdGVtIG9mICJ4IikuXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBudW1iZXJcbicKKyAgICAgICAgICAgICAgICAgICdvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpdGVtIHdob3NlXG4nCisgICAgICAgICAgICAgICAgICAnaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgJworICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcgb2NjdXJzIGluIHRoZSBvYmplY3QncyAiCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvICcKKyAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGFkZFxuJworICAgICAgICAgICAgICAgICAgJ3RoYXQgc3VwcG9ydC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBIHN0cmluZydzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgIgorICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAorICd0cnV0aCc6ICdcbicKKyAgICAgICAgICAnVHJ1dGggVmFsdWUgVGVzdGluZ1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbicKKyAgICAgICAgICAnIndoaWxlIiBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdmb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiAiTm9uZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIkZhbHNlIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCAiXCdcJyIsICIoKSIsICJbXSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgInt9Ii5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4nCisgICAgICAgICAgJyAgIl9fYm9vbF9fKCkiIG9yICJfX2xlbl9fKCkiIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuJworICAgICAgICAgICcgIGludGVnZXIgemVybyBvciAiYm9vbCIgdmFsdWUgIkZhbHNlIi4gWzFdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdhbHdheXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ09wZXJhdGlvbnMgYW5kIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBCb29sZWFuIHJlc3VsdCAnCisgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICdyZXR1cm4gIjAiIG9yICJGYWxzZSIgZm9yIGZhbHNlIGFuZCAiMSIgb3IgIlRydWUiIGZvciB0cnVlLCB1bmxlc3NcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgJworICAgICAgICAgICcib3IiXG4nCisgICAgICAgICAgJ2FuZCAiYW5kIiBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4nLAorICd0cnknOiAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG4nCisgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgJworICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAnICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gJworICAgICAgICAnbm9cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbicKKyAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0ICcKKyAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgJ2luIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gJworICAgICAgICAnZXhwcmVzc2lvbi1cbicKKyAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAnZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0IGV4cHJlc3Npb25cbicKKyAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmdcbicKKyAgICAgICAgJ29iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzIGNvbXBhdGlibGVcbicKKyAgICAgICAgJ3dpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICdoYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gJworICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICdbMV1cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbicKKyAgICAgICAgJ3JhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCAnCisgICAgICAgICdhbmRcbicKKyAgICAgICAgJ2Egc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG4nCisgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgJ3RoZSBleGNlcHRpb24pLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xuJworICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsICcKKyAgICAgICAgJ2lmXG4nCisgICAgICAgICJwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbiIKKyAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayAnCisgICAgICAgICdpc1xuJworICAgICAgICAncmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSAnCisgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICcoVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lICcKKyAgICAgICAgJ2V4Y2VwdGlvbixcbicKKyAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG4nCisgICAgICAgICdvdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbicKKyAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ3dhcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgJyAgICAgICBmaW5hbGx5OlxuJworICAgICAgICAnICAgICAgICAgICBkZWwgTlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG4nCisgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuJworICAgICAgICAnYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG4nCisgICAgICAgICdjeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbicKKyAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgIkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG4iCisgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4nCisgICAgICAgICcic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG4nCisgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxuJworICAgICAgICAncHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG4nCisgICAgICAgICdyZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbicKKyAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxuJworICAgICAgICAndGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbicKKyAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgJworICAgICAgICAnInRyeSJcbicKKyAgICAgICAgJ2NsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiAnCisgICAgICAgICdhblxuJworICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICAnCisgICAgICAgICdJZlxuJworICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAnY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAnCisgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG4nCisgICAgICAgICdpcyBkaXNjYXJkZWQ6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgID4+PiBkZWYgZigpOlxuJworICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuJworICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICcgICA+Pj4gZigpXG4nCisgICAgICAgICcgICA0MlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG4nCisgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbicKKyAgICAgICAgJyJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSAnCisgICAgICAgICdpc1xuJworICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCAnCisgICAgICAgICdpblxuJworICAgICAgICAndGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG4nCisgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuJworICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4nCisgICAgICAgICcicmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgPj4+IGRlZiBmb28oKTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICd0cnknXG4iCisgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgJyAgID4+PiBmb28oKVxuJworICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICdcbicKKyAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byAnCisgICAgICAgICdnZW5lcmF0ZVxuJworICAgICAgICAnZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuJywKKyAndHlwZXMnOiAnXG4nCisgICAgICAgICAgJ1RoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0JlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICAnCisgICAgICAgICAgJ0V4dGVuc2lvblxuJworICAgICAgICAgICdtb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJ1B5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgJworICAgICAgICAgICdudW1iZXJzLFxuJworICAgICAgICAgICdlZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCAnCisgICAgICAgICAgJ2FkZGl0aW9uc1xuJworICAgICAgICAgICd3aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG4nCisgICAgICAgICAgIidzcGVjaWFsIGF0dHJpYnV0ZXMuJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byAiCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciAnCisgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAnbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm9uZVxuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICJOb25lIi4gJworICAgICAgICAgICdJdFxuJworICAgICAgICAgICcgICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsICcKKyAgICAgICAgICAnZS5nLixcbicKKyAgICAgICAgICAiICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVyblxuIgorICAgICAgICAgICcgICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm90SW1wbGVtZW50ZWRcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuJworICAgICAgICAgICcgICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICB0aGUgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlXG4nCisgICAgICAgICAgJyAgIHJlZmxlY3RlZCBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGVcbicKKyAgICAgICAgICAnICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZWUgSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0VsbGlwc2lzXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4nCisgICAgICAgICAgJyAgIGJ1aWx0LWluIG5hbWUgIkVsbGlwc2lzIi4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnIm51bWJlcnMuTnVtYmVyIlxuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgJworICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgJyAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4nCisgICAgICAgICAgJyAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbicKKyAgICAgICAgICAnICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCAnCisgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uXG4nCisgICAgICAgICAgJyAgIGluIGNvbXB1dGVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgIGNvbXBsZXggbnVtYmVyczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLkludGVncmFsIlxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiAnCisgICAgICAgICAgJ2ludGVnZXJzXG4nCisgICAgICAgICAgJyAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEludGVnZXJzICgiaW50IilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuJworICAgICAgICAgICcgICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mICcKKyAgICAgICAgICAnc2hpZnRcbicKKyAgICAgICAgICAnICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAiICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDInc1xuIgorICAgICAgICAgICcgICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQm9vbGVhbnMgKCJib29sIilcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIDEsIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuJworICAgICAgICAgICcgICAgICAgICAiIlRydWUiIiBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuJworICAgICAgICAgICcgICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5SZWFsIiAoImZsb2F0IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyAnCisgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgJyAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbicKKyAgICAgICAgICAnICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4nCisgICAgICAgICAgJyAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgJworICAgICAgICAgICdzaW5nbGUtXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgYXJlXG4nCisgICAgICAgICAgJyAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiAnCisgICAgICAgICAgJ2Zsb2F0aW5nXG4nCisgICAgICAgICAgJyAgICAgIHBvaW50IG51bWJlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4nCisgICAgICAgICAgJyAgICAgIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gIFRoZSBzYW1lIGNhdmVhdHMgJworICAgICAgICAgICdhcHBseVxuJworICAgICAgICAgICcgICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgInoucmVhbCIgYW5kICJ6LmltYWciLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4nCisgICAgICAgICAgJyAgIG51bWJlcnMuIFRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiAnCisgICAgICAgICAgJ2l0ZW1zXG4nCisgICAgICAgICAgJyAgIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlIGluZGV4ICcKKyAgICAgICAgICAnc2V0XG4nCisgICAgICAgICAgJyAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICBzZWxlY3RlZCBieSAiYVtpXSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6ICJhW2k6al0iIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbicKKyAgICAgICAgICAnICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogIjw9IiAqayogIjwiICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuJworICAgICAgICAgICcgICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgJworICAgICAgICAgICdpbXBsaWVzXG4nCisgICAgICAgICAgJyAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAnCisgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICcgICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqICcKKyAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAnICAgInggPSBpICsgbiprIiwgKm4qICI+PSIgIjAiIGFuZCAqaSogIjw9IiAqeCogIjwiICpqKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyICcKKyAgICAgICAgICAnb2JqZWN0cyxcbicKKyAgICAgICAgICAnICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7ICcKKyAgICAgICAgICAnaG93ZXZlcixcbicKKyAgICAgICAgICAnICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTdHJpbmdzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgJworICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgJyAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtICcKKyAgICAgICAgICAnVSsxMEZGRkYiXG4nCisgICAgICAgICAgIiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSAiCisgICAgICAgICAgJyJjaGFyIlxuJworICAgICAgICAgICcgICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgJworICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICcgICAgICAgICBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggIjEiLiAgVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gYW5cbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiOyAiY2hyKCkiIGNvbnZlcnRzIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgJ2xlbmd0aFxuJworICAgICAgICAgICcgICAgICAgICAiMSIgc3RyaW5nIG9iamVjdC4gInN0ci5lbmNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcy5kZWNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUdXBsZXNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbicKKyAgICAgICAgICAiICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhICdzaW5nbGV0b24nKSBjYW4gYmVcbiIKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuJworICAgICAgICAgICcgICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSAnCisgICAgICAgICAgJzgtYml0XG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuJworICAgICAgICAgICcgICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSAiYlwnYWJjXCciKSBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbicKKyAgICAgICAgICAnICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgJworICAgICAgICAgICciZGVjb2RlKCkiXG4nCisgICAgICAgICAgJyAgICAgICAgIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIE11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICcgICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBMaXN0c1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzICcKKyAgICAgICAgICAnbmVlZGVkXG4nCisgICAgICAgICAgJyAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlIEFycmF5c1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlICcKKyAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NldCB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuJworICAgICAgICAgICcgICBvYmplY3RzLiBBcyBzdWNoLCB0aGV5IGNhbm5vdCBiZSBpbmRleGVkIGJ5IGFueSBzdWJzY3JpcHQuICcKKyAgICAgICAgICAnSG93ZXZlcixcbicKKyAgICAgICAgICAnICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4nCisgICAgICAgICAgJyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlICcKKyAgICAgICAgICAnZmFzdFxuJworICAgICAgICAgICcgICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbicKKyAgICAgICAgICAnICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbicKKyAgICAgICAgICAnICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmRcbicKKyAgICAgICAgICAnICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgc2V0IHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2V0c1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgYSBtdXRhYmxlIHNldC4gVGhleSBhcmUgY3JlYXRlZCBieSB0aGUgJworICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSAnCisgICAgICAgICAgJ3NldmVyYWxcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJvemVuIHNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgJworICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgJyAgICAgIHNldCwgb3IgYXMgYSBkaWN0aW9uYXJ5IGtleS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgYXJiaXRyYXJ5ICcKKyAgICAgICAgICAnaW5kZXhcbicKKyAgICAgICAgICAnICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5ICcKKyAgICAgICAgICAnImsiXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICB0YXJnZXQgb2YgYXNzaWdubWVudHMgb3IgImRlbCIgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBEaWN0aW9uYXJpZXNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbicKKyAgICAgICAgICAnICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJyAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuJworICAgICAgICAgICcgICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgIiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleSdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuIgorICAgICAgICAgICcgICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciAnCisgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAnICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAnCisgICAgICAgICAgJyIxLjAiKVxuJworICAgICAgICAgICcgICAgICB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4nCisgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlICJ7Li4ufSJcbicKKyAgICAgICAgICAnICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uIERpY3Rpb25hcnkgZGlzcGxheXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4nCisgICAgICAgICAgJyAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGUgJworICAgICAgICAgICciY29sbGVjdGlvbnMiXG4nCisgICAgICAgICAgJyAgICAgIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NhbGxhYmxlIHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiBDYWxscykgY2FuIGJlIGFwcGxpZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gRnVuY3Rpb24gZGVmaW5pdGlvbnMpLiAgSXQgc2hvdWxkIGJlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICIgICAgICBhcyB0aGUgZnVuY3Rpb24ncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG4iCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICdkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiBpZiAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkIGJ5ICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAnCisgICAgICAgICAgJ25hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19xdWFsbmFtZV9fIiAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICpxdWFsaWZpZWQgJworICAgICAgICAgICduYW1lKiB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvbidzICAgICAgICIKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kaWN0X18iICAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICAgIHwgIk5vbmUiIG9yIGEgdHVwbGUgb2YgY2VsbHMgdGhhdCAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgIiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgIgorICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2Fubm90YXRpb25zX18iICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgIlwncmV0dXJuXCciIGZvciB0aGUgJworICAgICAgICAgICdyZXR1cm4gICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fa3dkZWZhdWx0c19fIiAgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgYXNzaWduZWQgdmFsdWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCAnCisgICAgICAgICAgJ21ldGFkYXRhXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAnb25seVxuJworICAgICAgICAgICcgICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICcKKyAgICAgICAgICAnRnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnV0dXJlLipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvbidzIGRlZmluaXRpb24gY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiAnCisgICAgICAgICAgJ2ludGVybmFsXG4nCisgICAgICAgICAgJyAgICAgIHR5cGVzIGJlbG93LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgSW5zdGFuY2UgbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QsICJfX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgIl9fZG9jX18iIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAnCisgICAgICAgICAgJyJfX25hbWVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzICJfX2Z1bmNfXy5fX25hbWVfXyIpOyAnCisgICAgICAgICAgJyJfX21vZHVsZV9fIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICcKKyAgICAgICAgICAnIk5vbmUiXG4nCisgICAgICAgICAgJyAgICAgIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICd1c2VyLVxuJworICAgICAgICAgICcgICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgJworICAgICAgICAgICdpbnN0YW5jZXMsXG4nCisgICAgICAgICAgJyAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4nCisgICAgICAgICAgJyAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAnCisgICAgICAgICAgJyJfX2Z1bmNfXyJcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgYnV0IGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgICgiX19zZWxmX18iKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgJyAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAnCisgICAgICAgICAgJyJmKCkiLFxuJworICAgICAgICAgICcgICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50ICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgICAgY2FsbGluZyAiQy5mKHgsIDEpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgJworICAgICAgICAgICdhY3R1YWxseVxuJworICAgICAgICAgICcgICAgICBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyICJ4LmYoMSkiIG9yICcKKyAgICAgICAgICAnIkMuZigxKSJcbicKKyAgICAgICAgICAnICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgJworICAgICAgICAgICd1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgJworICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbicKKyAgICAgICAgICAnICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgb2YgdGhlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4nCisgICAgICAgICAgJyAgICAgIHNlY3Rpb24gVGhlIHlpZWxkIHN0YXRlbWVudCkgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciAnCisgICAgICAgICAgJ2Z1bmN0aW9uKi5cbicKKyAgICAgICAgICAnICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3IgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICAnCisgICAgICAgICAgJ2NhbGxpbmdcbicKKyAgICAgICAgICAnICAgICAgdGhlIGl0ZXJhdG9yXCdzICJpdGVyYXRvci5fX25leHRfXygpIiBtZXRob2Qgd2lsbCBjYXVzZSB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAnCisgICAgICAgICAgJyJ5aWVsZCJcbicKKyAgICAgICAgICAnICAgICAgc3RhdGVtZW50LiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSAicmV0dXJuIiBzdGF0ZW1lbnQgJworICAgICAgICAgICdvclxuJworICAgICAgICAgICcgICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgIHJldHVybmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29yb3V0aW5lIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nICJhc3luYyBkZWYiIGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuICcKKyAgICAgICAgICAnY2FsbGVkLFxuJworICAgICAgICAgICcgICAgICByZXR1cm5zIGEgKmNvcm91dGluZSogb2JqZWN0LiAgSXQgbWF5IGNvbnRhaW4gImF3YWl0IlxuJworICAgICAgICAgICcgICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiICcKKyAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnICAgICAgU2VlIGFsc28gdGhlIENvcm91dGluZSBPYmplY3RzIHNlY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJyAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4nCisgICAgICAgICAgJyAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCAnCisgICAgICAgICAgJ3JlYWQtXG4nCisgICAgICAgICAgJyAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4nCisgICAgICAgICAgJyAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSAnCisgICAgICAgICAgImZ1bmN0aW9uJ3NcbiIKKyAgICAgICAgICAnICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuJworICAgICAgICAgICcgICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzICcKKyAgICAgICAgICAnZGVmaW5lZFxuJworICAgICAgICAgICcgICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuJworICAgICAgICAgICcgICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbicKKyAgICAgICAgICAnICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzZXNcbicKKyAgICAgICAgICAnICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyAnCisgICAgICAgICAgJ2ZhY3Rvcmllc1xuJworICAgICAgICAgICcgICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byAiX19uZXdfXygpIiBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4nCisgICAgICAgICAgJyAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBJbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5ICcKKyAgICAgICAgICAnZGVmaW5pbmdcbicKKyAgICAgICAgICAnICAgICAgYSAiX19jYWxsX18oKSIgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICcgICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbicKKyAgICAgICAgICAnICAgY3JlYXRlZCBieSB0aGUgaW1wb3J0IHN5c3RlbSBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgImltcG9ydCJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4nCisgICAgICAgICAgJyAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBICcKKyAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlICJfX2dsb2JhbHNfXyIgYXR0cmlidXRlIG9mXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4nCisgICAgICAgICAgJyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzICcKKyAgICAgICAgICAnZXF1aXZhbGVudFxuJworICAgICAgICAgICcgICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbicKKyAgICAgICAgICAiICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgIgorICAgICAgICAgICdvbmNlXG4nCisgICAgICAgICAgJyAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuIgorICAgICAgICAgICcgICBlLmcuLCAibS54ID0gMSIgaXMgZXF1aXZhbGVudCB0byAibS5fX2RpY3RfX1sieCJdID0gMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZTtcbicKKyAgICAgICAgICAnICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuJworICAgICAgICAgICcgICB1bmF2YWlsYWJsZTsgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnlcbicKKyAgICAgICAgICAnICAgY29udGFpbmluZyAqdmFyaWFibGUgYW5ub3RhdGlvbnMqIGNvbGxlY3RlZCBkdXJpbmcgbW9kdWxlIGJvZHlcbicKKyAgICAgICAgICAnICAgZXhlY3V0aW9uOyAiX19maWxlX18iIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuJworICAgICAgICAgICcgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyAnCisgICAgICAgICAgJ0NcbicKKyAgICAgICAgICAnICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4nCisgICAgICAgICAgJyAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgJworICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAnICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbicKKyAgICAgICAgICAnICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlICcKKyAgICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAgICcgICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgJworICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDdXN0b20gY2xhc3Nlc1xuJworICAgICAgICAgICcgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zICcKKyAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICcgICBzZWN0aW9uIENsYXNzIGRlZmluaXRpb25zKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICcgICAiQy5fX2RpY3RfX1sieCJdIiAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoICcKKyAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAnICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4nCisgICAgICAgICAgJyAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2UgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAnZGlhbW9uZCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiIKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4nCisgICAgICAgICAgJyAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuJworICAgICAgICAgICcgICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgJworICAgICAgICAgICd5aWVsZCBhXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heSAnCisgICAgICAgICAgJ2RpZmZlclxuJworICAgICAgICAgICcgICBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzJ3MgZGljdGlvbmFyeSwgIgorICAgICAgICAgICduZXZlclxuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSAnCisgICAgICAgICAgJ3R1cGxlXG4nCisgICAgICAgICAgJyAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICIgICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZDtcbiIKKyAgICAgICAgICAnICAgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyAnCisgICAgICAgICAgJyp2YXJpYWJsZVxuJworICAgICAgICAgICcgICBhbm5vdGF0aW9ucyogY29sbGVjdGVkIGR1cmluZyBjbGFzcyBib2R5IGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzIGluc3RhbmNlc1xuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlICcKKyAgICAgICAgICAnYWJvdmUpLlxuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICcgICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuJworICAgICAgICAgICIgICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2UncyBjbGFzcyAiCisgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICcgICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuJworICAgICAgICAgICcgICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhICcKKyAgICAgICAgICAndXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbicKKyAgICAgICAgICAnICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuJworICAgICAgICAgICcgICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgZm9yIGFub3RoZXIgd2F5ICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXkgJworICAgICAgICAgICdkaWZmZXJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzICJfX2RpY3RfXyIuICBJZiAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgIiAgIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgYVxuIgorICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZSBsb29rdXAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlJ3NcbiIKKyAgICAgICAgICAiICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzcydzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkICcKKyAgICAgICAgICAnaW5zdGVhZFxuJworICAgICAgICAgICcgICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yICcKKyAgICAgICAgICAnbWFwcGluZ3NcbicKKyAgICAgICAgICAnICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuJworICAgICAgICAgICcgICBTcGVjaWFsIG1ldGhvZCBuYW1lcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4nCisgICAgICAgICAgJyAgICJfX2NsYXNzX18iIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0kvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbicKKyAgICAgICAgICAnICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4nCisgICAgICAgICAgJyAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvbixcbicKKyAgICAgICAgICAnICAgYW5kIGFsc28gIm9zLnBvcGVuKCkiLCAib3MuZmRvcGVuKCkiLCBhbmQgdGhlICJtYWtlZmlsZSgpIiAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuJworICAgICAgICAgICIgICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXInc1xuIgorICAgICAgICAgICcgICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiAnCisgICAgICAgICAgJ3RleHRcbicKKyAgICAgICAgICAnICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ludGVybmFsIHR5cGVzXG4nCisgICAgICAgICAgJyAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbicKKyAgICAgICAgICAnICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29kZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uICcKKyAgICAgICAgICAnY29kZSxcbicKKyAgICAgICAgICAnICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gJworICAgICAgICAgICdleHBsaWNpdFxuJworICAgICAgICAgICIgICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCAiCisgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICcgICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuJworICAgICAgICAgICcgICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJyAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCAnCisgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgJyAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvICcKKyAgICAgICAgICAnbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImNvX25hbWUiIGdpdmVzIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyhpbmNsdWRpbmdcbicKKyAgICAgICAgICAnICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nIGFyZ3VtZW50cyk7XG4nCisgICAgICAgICAgJyAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgJworICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgJyAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuJworICAgICAgICAgICcgICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuJworICAgICAgICAgICcgICAgICBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlczsgImNvX2NvZGUiIGlzIGEgJworICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAnICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICcKKyAgICAgICAgICAnImNvX2NvbnN0cyJcbicKKyAgICAgICAgICAnICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzICcKKyAgICAgICAgICAnY29tcGlsZWQ7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maXJzdGxpbmVubyIgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbicKKyAgICAgICAgICAnICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuJworICAgICAgICAgICcgICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4nCisgICAgICAgICAgJyAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAnZW5jb2RpbmcgYVxuJworICAgICAgICAgICcgICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciAiY29fZmxhZ3MiOiBiaXQgJworICAgICAgICAgICciMHgwNCJcbicKKyAgICAgICAgICAnICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0ICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqKmtleXdvcmRzIiBzeW50YXggdG8gYWNjZXB0ICcKKyAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuJworICAgICAgICAgICcgICAgICBnZW5lcmF0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0ICcKKyAgICAgICAgICAnZGl2aXNpb24iKVxuJworICAgICAgICAgICcgICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0ICIweDIwMDAiICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gJworICAgICAgICAgICdlbmFibGVkO1xuJworICAgICAgICAgICcgICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnICAgICAgUHl0aG9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4nCisgICAgICAgICAgJyAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGcmFtZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuJworICAgICAgICAgICcgICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgJ3N0YWNrXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4nCisgICAgICAgICAgJyAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4nCisgICAgICAgICAgJyAgICAgICJmX2J1aWx0aW5zIiBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lczsgJworICAgICAgICAgICciZl9sYXN0aSJcbicKKyAgICAgICAgICAnICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24gJworICAgICAgICAgICdqdW1wc1xuJworICAgICAgICAgICcgICAgICB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEEgJworICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICcgICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSAnCisgICAgICAgICAgJ3dyaXRpbmdcbicKKyAgICAgICAgICAnICAgICAgdG8gZl9saW5lbm8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lLmNsZWFyKClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBmcmFtZS4gIEFsc28sIGlmIHRoZSBmcmFtZSBiZWxvbmdlZCB0byBhIGdlbmVyYXRvciwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlICcKKyAgICAgICAgICAnY3ljbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgJworICAgICAgICAgICdleGVjdXRpbmcuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssICcKKyAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAnICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgJworICAgICAgICAgICdlbnRlcmVkLFxuJworICAgICAgICAgICcgICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIFRoZSB0cnkgc3RhdGVtZW50LikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSAnCisgICAgICAgICAgJ2Zvcm1hdHRlZClcbicKKyAgICAgICAgICAnICAgICAgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzICcKKyAgICAgICAgICAnaW50ZXJhY3RpdmUsXG4nCisgICAgICAgICAgJyAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgJworICAgICAgICAgICcic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgIk5vbmUiIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7ICJ0Yl9mcmFtZSIgcG9pbnRzIHRvIHRoZVxuJworICAgICAgICAgICcgICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSAnCisgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQ7ICJ0Yl9sYXN0aSIgaW5kaWNhdGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gJworICAgICAgICAgICdpblxuJworICAgICAgICAgICcgICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggJworICAgICAgICAgICdub1xuJworICAgICAgICAgICcgICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNsaWNlIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAnCisgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICcgICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiAic2xpY2UoKSJcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgJworICAgICAgICAgICcic3RvcCJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiAnCisgICAgICAgICAgJ2l0ZW1zLlxuJworICAgICAgICAgICcgICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4nCisgICAgICAgICAgJyAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuJworICAgICAgICAgICcgICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4nCisgICAgICAgICAgJyAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAnICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuJworICAgICAgICAgICcgICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCAnCisgICAgICAgICAgJ3VzdWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4nCisgICAgICAgICAgJyAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSAnCisgICAgICAgICAgJ3dyYXBwZXJcbicKKyAgICAgICAgICAnICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbicKKyAgICAgICAgICAnICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnY3JlYXRlZFxuJworICAgICAgICAgICcgICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKKyAndHlwZXNmdW5jdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgJworICAgICAgICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiAnCisgICAgICAgICAgICAgICAgICAgJyJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICBCb3RoIHN1cHBvcnQgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gKHRvIGNhbGxcbicKKyAgICAgICAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudCBvYmplY3QgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdTZWUgRnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21hcHBpbmcnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgJworICAgICAgICAgICAgICAgICAndGhlIGJ1aWx0LVxuJworICAgICAgICAgICAgICAgICAnaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAiY29sbGVjdGlvbnMiICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIkEgZGljdGlvbmFyeSdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgIgorICAgICAgICAgICAgICAgICAndGhhdCBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyaWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICdvdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICdieSBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJ2lkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAna2V5cyBvYmV5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBhcmUgZXF1YWxcbicKKyAgICAgICAgICAgICAgICAgJyhzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICdpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NvbXB1dGVycyBzdG9yZVxuJworICAgICAgICAgICAgICAgICAnZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3Vud2lzZSB0byB1c2VcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgJworICAgICAgICAgICAgICAgICAnbGlzdCBvZiAia2V5OlxuJworICAgICAgICAgICAgICAgICAndmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCAnCisgICAgICAgICAgICAgICAgICInc2pvZXJkJzpcbiIKKyAgICAgICAgICAgICAgICAgJzQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KCoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICdpcyBjcmVhdGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LCBhXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgJworICAgICAgICAgICAgICAgICAndGhlIG1hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAgICcqaXRlcmFibGUqXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSAnCisgICAgICAgICAgICAgICAgICdiZWNvbWVzIGEga2V5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgJworICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlICcKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGF0IGtleVxuJworICAgICAgICAgICAgICAgICAnICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVpclxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgJworICAgICAgICAgICAgICAgICAndmFsdWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcgICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9IGRpY3Qob25lPTEsIHR3bz0yLCB0aHJlZT0zKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGIgPSB7J29uZSc6IDEsICd0d28nOiAyLCAndGhyZWUnOiAzfVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGMgPSBkaWN0KHppcChbJ29uZScsICd0d28nLCAndGhyZWUnXSwgWzEsIDIsIDNdKSlcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBkID0gZGljdChbKCd0d28nLCAyKSwgKCdvbmUnLCAxKSwgKCd0aHJlZScsIDMpXSlcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBlID0gZGljdCh7J3RocmVlJzogMywgJ29uZSc6IDEsICd0d28nOiAyfSlcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBhID09IGIgPT0gYyA9PSBkID09IGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUHJvdmlkaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIGluIHRoZSBmaXJzdCBleGFtcGxlIG9ubHkgJworICAgICAgICAgICAgICAgICAnd29ya3MgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycy4gIE90aGVyd2lzZSwgYW55ICcKKyAgICAgICAgICAgICAgICAgJ3ZhbGlkIGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kICcKKyAgICAgICAgICAgICAgICAgJ3RoZXJlZm9yZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxlbihkKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIiBpZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICJfX21pc3NpbmdfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQgKmtleSpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3RoZW4gcmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgaW52b2tlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90ICcKKyAgICAgICAgICAgICAgICAgJ2JlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDBcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXSArPSAxXG4iCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDFcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XSA9IHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkZWwgZFtrZXldXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgJworICAgICAgICAgICAgICAgICAnKmtleSogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXkgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IG5vdCBpbiBkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXIoZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICAnCisgICAgICAgICAgICAgICAgICdUaGlzIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHNob3J0Y3V0IGZvciAiaXRlcihkLmtleXMoKSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGVhcigpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY29weSgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIHNldCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdldChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnksIGVsc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gJworICAgICAgICAgICAgICAgICAnIk5vbmUiLCBzb1xuJworICAgICAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVtcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zICgiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgcGFpcnMpLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBrZXlzLiAgU2VlIHRoZVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBvcChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ2l0cyB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICcKKyAgICAgICAgICAgICAgICAgJyprZXkqIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBvcGl0ZW0oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciAnCisgICAgICAgICAgICAgICAgICdmcm9tIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiAnCisgICAgICAgICAgICAgICAgICdub3QsIGluc2VydFxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICcKKyAgICAgICAgICAgICAgICAgJypkZWZhdWx0KlxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB1cGRhdGUoW290aGVyXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJypvdGhlciosXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogJworICAgICAgICAgICAgICAgICAnImQudXBkYXRlKHJlZD0xLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgYmx1ZT0yKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSAiKGtleSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsICcKKyAgICAgICAgICAgICAgICAgIic+JykgcmFpc2VcbiIKKyAgICAgICAgICAgICAgICAgJyAgICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzogInR5cGVzLk1hcHBpbmdQcm94eVR5cGUiIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgICAgJ3JlYWQtb25seVxuJworICAgICAgICAgICAgICAgICAnICB2aWV3IG9mIGEgImRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcnkgdmlldyBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb2JqZWN0cyByZXR1cm5lZCBieSAiZGljdC5rZXlzKCkiLCAiZGljdC52YWx1ZXMoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICciZGljdC5pdGVtcygpIiBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljICcKKyAgICAgICAgICAgICAgICAgJ3ZpZXcgb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5J3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5ICIKKyAgICAgICAgICAgICAgICAgJ2NoYW5nZXMsXG4nCisgICAgICAgICAgICAgICAgICd0aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3BlY3RpdmUgZGF0YSxcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2xlbihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnaXRlcihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAnCisgICAgICAgICAgICAgICAgICcocmVwcmVzZW50ZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgJworICAgICAgICAgICAgICAgICAnd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2RlcGVuZHMgb25cbicKKyAgICAgICAgICAgICAgICAgIiAgIHRoZSBkaWN0aW9uYXJ5J3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmICIKKyAgICAgICAgICAgICAgICAgJ2tleXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gJworICAgICAgICAgICAgICAgICAnaW50ZXJ2ZW5pbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiICcKKyAgICAgICAgICAgICAgICAgJ3BhaXJzIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiemlwKCkiOiAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIEFub3RoZXIgJworICAgICAgICAgICAgICAgICAnd2F5IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyAicGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW4gJworICAgICAgICAgICAgICAgICAnZC5pdGVtcygpXSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsICcKKyAgICAgICAgICAgICAgICAgJ2VudHJpZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ3ggaW4gZGljdHZpZXdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyAnCisgICAgICAgICAgICAgICAgICdrZXlzLCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSAiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgdHVwbGUpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdLZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2hhc2hhYmxlLlxuJworICAgICAgICAgICAgICAgICAnSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgIihrZXksIHZhbHVlKSIgcGFpcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3VuaXF1ZVxuJworICAgICAgICAgICAgICAgICAnYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzICcKKyAgICAgICAgICAgICAgICAgJ3ZpZXdzIGFyZVxuJworICAgICAgICAgICAgICAgICAnbm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgJworICAgICAgICAgICAgICAgICAndW5pcXVlLilcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdhYnN0cmFjdFxuJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcyAiY29sbGVjdGlvbnMuYWJjLlNldCIgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJyI9PSIsXG4nCisgICAgICAgICAgICAgICAgICciPCIsIG9yICJeIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGlzaGVzID0geydlZ2dzJzogMiwgJ3NhdXNhZ2UnOiAxLCAnYmFjb24nOiAxLCAiCisgICAgICAgICAgICAgICAgICInc3BhbSc6IDUwMH1cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBpdGVyYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBuID0gMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBuICs9IHZhbFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHByaW50KG4pXG4nCisgICAgICAgICAgICAgICAgICcgICA1MDRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdChrZXlzKVxuJworICAgICAgICAgICAgICAgICAiICAgWydlZ2dzJywgJ2JhY29uJywgJ3NhdXNhZ2UnLCAnc3BhbSddXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdCh2YWx1ZXMpXG4nCisgICAgICAgICAgICAgICAgICcgICBbMiwgMSwgMSwgNTAwXVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGVsIGRpc2hlc1snZWdncyddXG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGVsIGRpc2hlc1snc2F1c2FnZSddXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdChrZXlzKVxuJworICAgICAgICAgICAgICAgICAiICAgWydzcGFtJywgJ2JhY29uJ11cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBrZXlzICYgeydlZ2dzJywgJ2JhY29uJywgJ3NhbGFkJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgIHsnYmFjb24nfVxuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGtleXMgXiB7J3NhdXNhZ2UnLCAnanVpY2UnfVxuIgorICAgICAgICAgICAgICAgICAiICAgeydqdWljZScsICdzYXVzYWdlJywgJ2JhY29uJywgJ3NwYW0nfVxuIiwKKyAndHlwZXNtZXRob2RzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHVzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbm90YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgdHdvIGZsYXZvcnM6IGJ1aWx0LWluIG1ldGhvZHMgKHN1Y2ggYXMgImFwcGVuZCgpIiAnCisgICAgICAgICAgICAgICAgICdvbiBsaXN0cylcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICd0eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlKVxuJworICAgICAgICAgICAgICAgICAndGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCAnCisgICAgICAgICAgICAgICAgICdtZXRob2QqIChhbHNvXG4nCisgICAgICAgICAgICAgICAgICdjYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkICcKKyAgICAgICAgICAgICAgICAgJ3RoZSAic2VsZiJcbicKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3byAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsIHJlYWQtXG4nCisgICAgICAgICAgICAgICAgICdvbmx5IGF0dHJpYnV0ZXM6ICJtLl9fc2VsZl9fIiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGVzLCBhbmQgIm0uX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ0NhbGxpbmcgIm0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIgaXMgY29tcGxldGVseSAnCisgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgICAgICdjYWxsaW5nICJtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdMaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyAnCisgICAgICAgICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnc3RvcmVkIG9uXG4nCisgICAgICAgICAgICAgICAgICd0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKCJtZXRoLl9fZnVuY19fIiksIHNldHRpbmcgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzIG9uIGJvdW5kIG1ldGhvZHMgaXMgZGlzYWxsb3dlZC4gIEF0dGVtcHRpbmcgdG8gJworICAgICAgICAgICAgICAgICAnc2V0IGFuXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhbiAiQXR0cmlidXRlRXJyb3IiIGJlaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZC4gIEluXG4nCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBzZXQgYSBtZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCAnCisgICAgICAgICAgICAgICAgICdpdCBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3VuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0OlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQzpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSAnbXkgbmFtZSBpcyBtZXRob2QnICAjIGNhbid0IHNldCBvbiAiCisgICAgICAgICAgICAgICAgICd0aGUgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBBdHRyaWJ1dGVFcnJvcjogJ21ldGhvZCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgIgorICAgICAgICAgICAgICAgICAiJ3dob2FtaSdcbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBjLm1ldGhvZC5fX2Z1bmNfXy53aG9hbWkgPSAnbXkgbmFtZSBpcyBtZXRob2QnXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5tZXRob2Qud2hvYW1pXG4nCisgICAgICAgICAgICAgICAgICIgICAnbXkgbmFtZSBpcyBtZXRob2QnXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21vZHVsZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNb2R1bGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSBhY2Nlc3M6ICcKKyAgICAgICAgICAgICAgICAgJyJtLm5hbWUiLFxuJworICAgICAgICAgICAgICAgICAnd2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgaW4gJworICAgICAgICAgICAgICAgICAiKm0qJ3NcbiIKKyAgICAgICAgICAgICAgICAgJ3N5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGUgJworICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnb24gYSBtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdDsgImltcG9ydCBmb28iIGRvZXMgbm90IHJlcXVpcmUgYSBtb2R1bGUgb2JqZWN0IG5hbWVkICcKKyAgICAgICAgICAgICAgICAgJypmb28qIHRvXG4nCisgICAgICAgICAgICAgICAgICdleGlzdCwgcmF0aGVyIGl0IHJlcXVpcmVzIGFuIChleHRlcm5hbCkgKmRlZmluaXRpb24qIGZvciBhICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgICAnbmFtZWQgKmZvbyogc29tZXdoZXJlLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSBzcGVjaWFsIGF0dHJpYnV0ZSBvZiBldmVyeSBtb2R1bGUgaXMgIl9fZGljdF9fIi4gVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgIgorICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLCAiCisgICAgICAgICAgICAgICAgICdidXQgZGlyZWN0XG4nCisgICAgICAgICAgICAgICAgICdhc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSAnCisgICAgICAgICAgICAgICAgICdjYW4gd3JpdGVcbicKKyAgICAgICAgICAgICAgICAgJyJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgYnV0ICcKKyAgICAgICAgICAgICAgICAgInlvdSBjYW4ndFxuIgorICAgICAgICAgICAgICAgICAnd3JpdGUgIm0uX19kaWN0X18gPSB7fSIpLiAgTW9kaWZ5aW5nICJfX2RpY3RfXyIgZGlyZWN0bHkgaXMgJworICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlcyBidWlsdCBpbnRvIHRoZSBpbnRlcnByZXRlciBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICcKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdcJ3N5c1wnIChidWlsdC1pbik+Ii4gIElmIGxvYWRlZCBmcm9tIGEgZmlsZSwgdGhleSBhcmUgJworICAgICAgICAgICAgICAgICAnd3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAgICAnIjxtb2R1bGUgXCdvc1wnIGZyb20gJworICAgICAgICAgICAgICAgICAnXCcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljXCc+Ii5cbicsCisgJ3R5cGVzc2VxJzogJ1xuJworICAgICAgICAgICAgICdTZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG4nCisgICAgICAgICAgICAgJ29iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgJworICAgICAgICAgICAgICdiaW5hcnlcbicKKyAgICAgICAgICAgICAnZGF0YSBhbmQgdGV4dCBzdHJpbmdzIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICcKKyAgICAgICAgICAgICAnImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDXG4nCisgICAgICAgICAgICAgJ2lzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2UgJworICAgICAgICAgICAgICdvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJ29uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyAnCisgICAgICAgICAgICAgJ3ByaW9yaXR5LlxuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAnCisgICAgICAgICAgICAgJyppKixcbicKKyAgICAgICAgICAgICAnKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAnbWVldHMgYW55XG4nCisgICAgICAgICAgICAgJ3R5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSAiKyIgKGNvbmNhdGVuYXRpb24pIGFuZCAiKiIgJworICAgICAgICAgICAgICcocmVwZXRpdGlvbilcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8IE5vdGVzICAgICAgfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAieCBpbiBzIiAgICAgICAgICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgICcKKyAgICAgICAgICAgICAnfCAoMSkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICAnCisgICAgICAgICAgICAgJ3wgKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIlRydWUiICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICsgdCIgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogJworICAgICAgICAgICAgICd8ICg2KSg3KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqIG4iIG9yICJuICogcyIgICAgICAgICB8IGVxdWl2YWxlbnQgdG8gYWRkaW5nICpzKiB0byAgICAgICcKKyAgICAgICAgICAgICAnfCAoMikoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0c2VsZiAqbiogdGltZXMgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaV0iICAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICAnCisgICAgICAgICAgICAgJ3wgKDMpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgJworICAgICAgICAgICAgICd8ICgzKSg0KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgICcKKyAgICAgICAgICAgICAnfCAoMykoNSkgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAnCisgICAgICAgICAgICAgJ3wgKDgpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqIChhdCBvciBhZnRlciBpbmRleCAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluICcKKyAgICAgICAgICAgICAncGFydGljdWxhcixcbicKKyAgICAgICAgICAgICAndHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuJworICAgICAgICAgICAgICdlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgJworICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgJ3R5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICcKKyAgICAgICAgICAgICAnQ29tcGFyaXNvbnMgaW5cbicKKyAgICAgICAgICAgICAndGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICcgICAoc3VjaCBhcyAic3RyIiwgImJ5dGVzIiBhbmQgImJ5dGVhcnJheSIpIGFsc28gdXNlIHRoZW0gZm9yXG4nCisgICAgICAgICAgICAgJyAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbicKKyAgICAgICAgICAgICAnICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggeWllbGRzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlICpzKiBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZSAnCisgICAgICAgICAgICAgJ3RpbWVzLlxuJworICAgICAgICAgICAgICcgICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbW10sIFtdLCBbXV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1szXSwgWzNdLCBbM11dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0ICJbW11dIiBpcyBhIG9uZS1lbGVtZW50IGxpc3QgJworICAgICAgICAgICAgICdjb250YWluaW5nXG4nCisgICAgICAgICAgICAgJyAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSAnCisgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgdG8gdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4nCisgICAgICAgICAgICAgJyAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4nCisgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFs1XSwgWzddXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRnVydGhlciBleHBsYW5hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIEZBUSBlbnRyeSBIb3cgZG8gSSAnCisgICAgICAgICAgICAgJ2NyZWF0ZSBhXG4nCisgICAgICAgICAgICAgJyAgIG11bHRpZGltZW5zaW9uYWwgbGlzdD8uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgJworICAgICAgICAgICAgICdub3RlXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgIi0wIiBpcyBzdGlsbCAiMCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXMgb21pdHRlZCBvciAnCisgICAgICAgICAgICAgJyJOb25lIixcbicKKyAgICAgICAgICAgICAnICAgdXNlICIwIi4gIElmICpqKiBpcyBvbWl0dGVkIG9yICJOb25lIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggICJ4ID0gaSArIG4qayIgc3VjaCB0aGF0ICIwIDw9IG4gJworICAgICAgICAgICAgICc8XG4nCisgICAgICAgICAgICAgJyAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAnCisgICAgICAgICAgICAgJyJpKzIqayIsXG4nCisgICAgICAgICAgICAgJyAgICJpKzMqayIgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXJcbicKKyAgICAgICAgICAgICAnICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4nCisgICAgICAgICAgICAgJyAgICJsZW4ocykiLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciAiTm9uZSIsIHRoZXkgYmVjb21lICcKKyAgICAgICAgICAgICAnImVuZCJcbicKKyAgICAgICAgICAgICAnICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqICcKKyAgICAgICAgICAgICAnY2Fubm90IGJlXG4nCisgICAgICAgICAgICAgJyAgIHplcm8uIElmICprKiBpcyAiTm9uZSIsIGl0IGlzIHRyZWF0ZWQgbGlrZSAiMSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXdcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlICcKKyAgICAgICAgICAgICAndG90YWxcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgbGVuZ3RoLiBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCAnCisgICAgICAgICAgICAgJ3N3aXRjaCB0b1xuJworICAgICAgICAgICAgICcgICBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgJworICAgICAgICAgICAgICd1c2VcbicKKyAgICAgICAgICAgICAnICAgICAic3RyLmpvaW4oKSIgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGFuICJpby5TdHJpbmdJTyJcbicKKyAgICAgICAgICAgICAnICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAiYnl0ZXMiIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuJworICAgICAgICAgICAgICcgICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuJworICAgICAgICAgICAgICcgICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhICJieXRlYXJyYXkiIG9iamVjdC4gICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb2JqZWN0cyBhcmVcbicKKyAgICAgICAgICAgICAnICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAidHVwbGUiIG9iamVjdHMsIGV4dGVuZCBhICJsaXN0IiBpbnN0ZWFkXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzICcKKyAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyAicmFuZ2UiKSBvbmx5IHN1cHBvcnQgaXRlbVxuJworICAgICAgICAgICAgICIgICBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb24ndCAiCisgICAgICAgICAgICAgJ3N1cHBvcnRcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnOC4gImluZGV4IiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouICcKKyAgICAgICAgICAgICAnV2hlblxuJworICAgICAgICAgICAgICcgICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kICcKKyAgICAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAgICAnICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyAnCisgICAgICAgICAgICAgJyJzW2k6al0uaW5kZXgoeCkiLFxuJworICAgICAgICAgICAgICcgICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggJworICAgICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICAgICcgICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCAnCisgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICcgICBzbGljZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbW11dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5ICcKKyAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgJ3RoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyAnCisgICAgICAgICAgICAgJ3N1cHBvcnQgZm9yXG4nCisgICAgICAgICAgICAgJ3RoZSAiaGFzaCgpIiBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyAidHVwbGUiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLCB0b1xuJworICAgICAgICAgICAgICdiZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zICcKKyAgICAgICAgICAgICAndW5oYXNoYWJsZVxuJworICAgICAgICAgICAgICd2YWx1ZXMgd2lsbCByZXN1bHQgaW4gIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgcHJvdmlkZWQgdG8gJworICAgICAgICAgICAgICdtYWtlXG4nCisgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogJworICAgICAgICAgICAgICdpcyBhbnlcbicKKyAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSAnCisgICAgICAgICAgICAgJ3R5cGUgYW5kXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICdhY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCA8PSAnCisgICAgICAgICAgICAgJzI1NSIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCAnCisgICAgICAgICAgICAgJ2J5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICcKKyAgICAgICAgICAgICAnaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgJworICAgICAgICAgICAgICd0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICdbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iICcKKyAgICAgICAgICAgICAnYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlICcKKyAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiAnCisgICAgICAgICAgICAgJ3RoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gInMiICcKKyAgICAgICAgICAgICAnKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgJworICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICcKKyAgICAgICAgICAgICAnInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgJyJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgJworICAgICAgICAgICAgICdvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgcGFydCB0aGUgJworICAgICAgICAgICAgICdzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgJ3QiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzICcKKyAgICAgICAgICAgICAnY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiAnCisgICAgICAgICAgICAgJ3RpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCAnCisgICAgICAgICAgICAgJ3RoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgJworICAgICAgICAgICAgICdhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gJworICAgICAgICAgICAgICdbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiAnCisgICAgICAgICAgICAgJ2FuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gJworICAgICAgICAgICAgICcqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICcKKyAgICAgICAgICAgICAnKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09ICcKKyAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqICcKKyAgICAgICAgICAgICAnaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJ3BsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgJworICAgICAgICAgICAgICdkZWZhdWx0XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbicKKyAgICAgICAgICAgICAnICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kICcKKyAgICAgICAgICAgICAndXNlcnNcbicKKyAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSAnCisgICAgICAgICAgICAgJ3JldmVyc2VkXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4nCisgICAgICAgICAgICAgIiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzbGljaW5nXG4iCisgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgJyAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICcgICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgJworICAgICAgICAgICAgICdtdWx0aXBsZVxuJworICAgICAgICAgICAgICcgICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyIENvbW1vbiBTZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ09wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTGlzdHNcbicKKyAgICAgICAgICAgICAnPT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0xpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICdob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCAnCisgICAgICAgICAgICAgJ3ZhcnkgYnlcbicKKyAgICAgICAgICAgICAnYXBwbGljYXRpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIHNldmVyYWwgd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6ICcKKyAgICAgICAgICAgICAnIltdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICcKKyAgICAgICAgICAgICAnIlthXSIsXG4nCisgICAgICAgICAgICAgJyAgICAgIlthLCBiLCBjXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246ICJbeCBmb3IgeCBpbiBpdGVyYWJsZV0iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiAibGlzdCgpIiBvciAibGlzdChpdGVyYWJsZSkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4nCisgICAgICAgICAgICAgJyAgIHJldHVybmVkLCBzaW1pbGFyIHRvICJpdGVyYWJsZVs6XSIuIEZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgJyJsaXN0KFwnYWJjXCcpIlxuJworICAgICAgICAgICAgICcgICByZXR1cm5zICJbXCdhXCcsIFwnYlwnLCBcJ2NcJ10iIGFuZCAibGlzdCggKDEsIDIsIDMpICkiICcKKyAgICAgICAgICAgICAncmV0dXJucyAiWzEsIDIsXG4nCisgICAgICAgICAgICAgJyAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3ICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnICAgbGlzdCwgIltdIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGUgJworICAgICAgICAgICAgICcic29ydGVkKCkiXG4nCisgICAgICAgICAgICAgJyAgIGJ1aWx0LWluLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIGFuZCBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgJworICAgICAgICAgICAgICdjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICcgICAgICBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmIGFueSAnCisgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAnICAgICAgb3BlcmF0aW9ucyBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAoYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAic29ydCgpIiBhY2NlcHRzIHR3byBhcmd1bWVudHMgdGhhdCBjYW4gb25seSBiZSBwYXNzZWQgYnlcbicKKyAgICAgICAgICAgICAnICAgICAga2V5d29yZCAoa2V5d29yZC1vbmx5IGFyZ3VtZW50cyk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciAnCisgICAgICAgICAgICAgJ2V4YW1wbGUsXG4nCisgICAgICAgICAgICAgJyAgICAgICJrZXk9c3RyLmxvd2VyIikuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gJworICAgICAgICAgICAgICd0aGUgbGlzdFxuJworICAgICAgICAgICAgICcgICAgICBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nICcKKyAgICAgICAgICAgICAncHJvY2Vzcy5cbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgJworICAgICAgICAgICAgICdzb3J0ZWRcbicKKyAgICAgICAgICAgICAnICAgICAgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSAiZnVuY3Rvb2xzLmNtcF90b19rZXkoKSIgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gJworICAgICAgICAgICAgICdjb252ZXJ0IGFcbicKKyAgICAgICAgICAgICAnICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvICJUcnVlIiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2YgJworICAgICAgICAgICAgICdzcGFjZVxuJworICAgICAgICAgICAgICcgICAgICB3aGVuIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0ICcKKyAgICAgICAgICAgICAnb3BlcmF0ZXNcbicKKyAgICAgICAgICAgICAnICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnKHVzZVxuJworICAgICAgICAgICAgICcgICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCAnCisgICAgICAgICAgICAgJ2luc3RhbmNlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICAgICBzdGFibGUgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciAnCisgICAgICAgICAgICAgJ3NvcnRpbmcgaW5cbicKKyAgICAgICAgICAgICAnICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5ICcKKyAgICAgICAgICAgICAnc2FsYXJ5XG4nCisgICAgICAgICAgICAgJyAgICAgIGdyYWRlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nICcKKyAgICAgICAgICAgICAnc29ydGVkLFxuJworICAgICAgICAgICAgICcgICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSAnCisgICAgICAgICAgICAgJ2xpc3QgaXNcbicKKyAgICAgICAgICAgICAnICAgICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0ICcKKyAgICAgICAgICAgICAnYXBwZWFyXG4nCisgICAgICAgICAgICAgJyAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgIlZhbHVlRXJyb3IiIGlmIGl0IGNhbiAnCisgICAgICAgICAgICAgJ2RldGVjdFxuJworICAgICAgICAgICAgICcgICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUdXBsZXNcbicKKyAgICAgICAgICAgICAnPT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlICcKKyAgICAgICAgICAgICAnY29sbGVjdGlvbnMgb2ZcbicKKyAgICAgICAgICAgICAnaGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGUgJworICAgICAgICAgICAgICciZW51bWVyYXRlKCkiXG4nCisgICAgICAgICAgICAgJ2J1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ29mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAnCisgICAgICAgICAgICAgJyJzZXQiIG9yXG4nCisgICAgICAgICAgICAgJyJkaWN0IiBpbnN0YW5jZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogJworICAgICAgICAgICAgICciKCkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiAiYSwiIG9yICcKKyAgICAgICAgICAgICAnIihhLCkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICJhLCBiLCBjIiBvciAiKGEsIGIsIGMpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyB0aGUgInR1cGxlKCkiIGJ1aWx0LWluOiAidHVwbGUoKSIgb3IgJworICAgICAgICAgICAgICcidHVwbGUoaXRlcmFibGUpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgJworICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAiICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgIgorICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gJworICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICcgICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWRcbicKKyAgICAgICAgICAgICAnICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsICcKKyAgICAgICAgICAgICAnXCdiXCcsIFwnY1wnKSJcbicKKyAgICAgICAgICAgICAnICAgYW5kICJ0dXBsZSggWzEsIDIsIDNdICkiIHJldHVybnMgIigxLCAyLCAzKSIuIElmIG5vIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCAiKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgcGFyZW50aGVzZXMuIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgJworICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICcgICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgJworICAgICAgICAgICAgICdhbWJpZ3VpdHkuXG4nCisgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgJworICAgICAgICAgICAgICdhcmd1bWVudHMsXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlICJmKChhLCBiLCBjKSkiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgMy10dXBsZSBhcyB0aGUgJworICAgICAgICAgICAgICdzb2xlXG4nCisgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBzZXF1ZW5jZSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyAnCisgICAgICAgICAgICAgJ2NsZWFyZXJcbicKKyAgICAgICAgICAgICAndGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbicKKyAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Jhbmdlc1xuJworICAgICAgICAgICAgICc9PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicmFuZ2UiIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdjb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiICcKKyAgICAgICAgICAgICAnbG9vcHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyByYW5nZShzdG9wKVxuJworICAgICAgICAgICAgICdjbGFzcyByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAnCisgICAgICAgICAgICAgJyhlaXRoZXJcbicKKyAgICAgICAgICAgICAnICAgYnVpbHQtaW4gImludCIgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlICJfX2luZGV4X18iXG4nCisgICAgICAgICAgICAgJyAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgJworICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICcgICAiMSIuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICIwIi4gJworICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICcgICAqc3RlcCogaXMgemVybywgIlZhbHVlRXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSAnCisgICAgICAgICAgICAgJ2RldGVybWluZWRcbicKKyAgICAgICAgICAgICAnICAgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIgd2hlcmUgImkgPj0gMCIgYW5kICcKKyAgICAgICAgICAgICAnInJbaV0gPFxuJworICAgICAgICAgICAgICcgICBzdG9wIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbicKKyAgICAgICAgICAgICAnICAgZGV0ZXJtaW5lZCBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiwgYnV0IHRoZVxuJworICAgICAgICAgICAgICcgICBjb25zdHJhaW50cyBhcmUgImkgPj0gMCIgYW5kICJyW2ldID4gc3RvcCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmICJyWzBdIiBkb2VzIG5vdCBtZWV0IHRoZSAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieVxuJworICAgICAgICAgICAgICcgICB0aGUgcG9zaXRpdmUgaW5kaWNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJyAgIHBlcm1pdHRlZCBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyAibGVuKCkiKSBtYXkgcmFpc2VcbicKKyAgICAgICAgICAgICAnICAgIk92ZXJmbG93RXJyb3IiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2UgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDMsIDYsIDldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKVxuJworICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBzZXF1ZW5jZSBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAnZXhjZXB0XG4nCisgICAgICAgICAgICAgJyAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICcgICBjYW4gb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0ICcKKyAgICAgICAgICAgICAncGF0dGVybikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzdGFydFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RhcnQqIHBhcmFtZXRlciAob3IgIjAiIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlciB3YXNcbicKKyAgICAgICAgICAgICAnICAgICAgbm90IHN1cHBsaWVkKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RvcFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RvcCogcGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzdGVwXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAnd2FzXG4nCisgICAgICAgICAgICAgJyAgICAgIG5vdCBzdXBwbGllZClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBhZHZhbnRhZ2Ugb2YgdGhlICJyYW5nZSIgdHlwZSBvdmVyIGEgcmVndWxhciAibGlzdCIgb3IgJworICAgICAgICAgICAgICcidHVwbGUiIGlzXG4nCisgICAgICAgICAgICAgJ3RoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50ICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemUgb2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMgKGFzIGl0ICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICdzdG9yZXMgdGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIHZhbHVlcywgY2FsY3VsYXRpbmcgJworICAgICAgICAgICAgICdpbmRpdmlkdWFsXG4nCisgICAgICAgICAgICAgJ2l0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1JhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSAiY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlIiBBQkMsIGFuZFxuJworICAgICAgICAgICAgICdwcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggJworICAgICAgICAgICAgICdsb29rdXAsXG4nCisgICAgICAgICAgICAgJ3NsaWNpbmcgYW5kIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSBTZXF1ZW5jZSBUeXBlcyAtLS0gJworICAgICAgICAgICAgICdsaXN0LFxuJworICAgICAgICAgICAgICd0dXBsZSwgcmFuZ2UpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IHJcbicKKyAgICAgICAgICAgICAncmFuZ2UoMCwgMjAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiAxMSBpbiByXG4nCisgICAgICAgICAgICAgJ0ZhbHNlXG4nCisgICAgICAgICAgICAgJz4+PiAxMCBpbiByXG4nCisgICAgICAgICAgICAgJ1RydWVcbicKKyAgICAgICAgICAgICAnPj4+IHIuaW5kZXgoMTApXG4nCisgICAgICAgICAgICAgJzVcbicKKyAgICAgICAgICAgICAnPj4+IHJbNV1cbicKKyAgICAgICAgICAgICAnMTBcbicKKyAgICAgICAgICAgICAnPj4+IHJbOjVdXG4nCisgICAgICAgICAgICAgJ3JhbmdlKDAsIDEwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gclstMV1cbicKKyAgICAgICAgICAgICAnMThcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Rlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzICcKKyAgICAgICAgICAgICAndGhlbSBhc1xuJworICAgICAgICAgICAgICdzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZiAnCisgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAncmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICd0aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSAicmFuZ2UoMCkgPT0gcmFuZ2UoMiwgMSwgMykiIG9yICcKKyAgICAgICAgICAgICAnInJhbmdlKDAsIDMsXG4nCisgICAgICAgICAgICAgJzIpID09IHJhbmdlKDAsIDQsIDIpIi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCAnCisgICAgICAgICAgICAgJ3NsaWNpbmdcbicKKyAgICAgICAgICAgICAnYW5kIG5lZ2F0aXZlIGluZGljZXMuIFRlc3QgImludCIgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiAnCisgICAgICAgICAgICAgJ2NvbnN0YW50XG4nCisgICAgICAgICAgICAgJ3RpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlICIKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICdiYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mICcKKyAgICAgICAgICAgICAnY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2Jhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICogVGhlIGxpbnNwYWNlIHJlY2lwZSBzaG93cyBob3cgdG8gaW1wbGVtZW50IGEgbGF6eSB2ZXJzaW9uICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgIHJhbmdlIHRoYXQgc3VpdGFibGUgZm9yIGZsb2F0aW5nIHBvaW50IGFwcGxpY2F0aW9ucy5cbicsCisgJ3R5cGVzc2VxLW11dGFibGUnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uICcKKyAgICAgICAgICAgICAgICAgICAgICdtdXRhYmxlIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdwcm92aWRlZCB0byBtYWtlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnY3VzdG9tIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGUsICp0KiBpcyBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ21lZXRzIGFueSB0eXBlIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgICAgICciYnl0ZWFycmF5IiBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggJworICAgICAgICAgICAgICAgICAgICAgJzw9IDI1NSIpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Jlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJyp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogJworICAgICAgICAgICAgICAgICAgICAgJ3RvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICcKKyAgICAgICAgICAgICAgICAgICAgICcqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsICcKKyAgICAgICAgICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgJworICAgICAgICAgICAgICAgICAgICAgJ2NvcHkgb2YgInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICcic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgJworICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldICcKKyAgICAgICAgICAgICAgICAgICAgICc9IHQiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqICcKKyAgICAgICAgICAgICAgICAgICAgICdhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogJworICAgICAgICAgICAgICAgICAgICAgJyhzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAgICAgICAgICdbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAnCisgICAgICAgICAgICAgICAgICAgICAnKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09ICcKKyAgICAgICAgICAgICAgICAgICAgICd4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgJworICAgICAgICAgICAgICAgICAgICAgJypzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdieSBkZWZhdWx0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyAnCisgICAgICAgICAgICAgICAgICAgICAncmVtaW5kIHVzZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgcmV2ZXJzZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc1LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgJworICAgICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAiICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0ICIKKyAgICAgICAgICAgICAgICAgICAgICdzbGljaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZWQgbXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyIENvbW1vbiBTZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9ucy5cbicsCisgJ3VuYXJ5JzogJ1xuJworICAgICAgICAgICdVbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICdwcmlvcml0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG4nCisgICAgICAgICAgJ2FyZ3VtZW50LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50ICcKKyAgICAgICAgICAndW5jaGFuZ2VkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICcKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2ludGVnZXIgYXJndW1lbnQuICBUaGUgYml0d2lzZSBpbnZlcnNpb24gb2YgIngiIGlzIGRlZmluZWQgYXNcbicKKyAgICAgICAgICAnIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0luIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCisgJ3doaWxlJzogJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0cnVlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAnaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzICcKKyAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAnYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyAnCisgICAgICAgICAgJ2JhY2tcbicKKyAgICAgICAgICAndG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCisgJ3dpdGgnOiAnXG4nCisgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxuJworICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gV2l0aCBTdGF0ZW1lbnRcbicKKyAgICAgICAgICdDb250ZXh0IE1hbmFnZXJzKS4gVGhpcyBhbGxvd3MgY29tbW9uICJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbicKKyAgICAgICAgICd1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuJworICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICJ3aXRoX2l0ZW0iKVxuJworICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbicKKyAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzICcKKyAgICAgICAgICdiZVxuJworICAgICAgICAgJyAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuJworICAgICAgICAgJyAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbicKKyAgICAgICAgICcgICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbicKKyAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4nCisgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbicKKyAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuJworICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgJworICAgICAgICAgJ3RoZVxuJworICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbicKKyAgICAgICAgICdtdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gJworICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJywKKyAneWllbGQnOiAnXG4nCisgICAgICAgICAgJ1RoZSAieWllbGQiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgInlpZWxkIiBzdGF0ZW1lbnQgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYSB5aWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb24uXG4nCisgICAgICAgICAgJ1RoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXMgdGhhdCB3b3VsZFxuJworICAgICAgICAgICdvdGhlcndpc2UgYmUgcmVxdWlyZWQgaW4gdGhlIGVxdWl2YWxlbnQgeWllbGQgZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAnRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB5aWVsZCA8ZXhwcj5cbicKKyAgICAgICAgICAnICAgeWllbGQgZnJvbSA8ZXhwcj5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2FyZSBlcXVpdmFsZW50IHRvIHRoZSB5aWVsZCBleHByZXNzaW9uIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICh5aWVsZCA8ZXhwcj4pXG4nCisgICAgICAgICAgJyAgICh5aWVsZCBmcm9tIDxleHByPilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1lpZWxkIGV4cHJlc3Npb25zIGFuZCBzdGF0ZW1lbnRzIGFyZSBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhXG4nCisgICAgICAgICAgJypnZW5lcmF0b3IqIGZ1bmN0aW9uLCBhbmQgYXJlIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgJworICAgICAgICAgICdnZW5lcmF0b3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24uICBVc2luZyB5aWVsZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byAnCisgICAgICAgICAgJ2NhdXNlXG4nCisgICAgICAgICAgJ3RoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuJworICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSBZaWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb25zXG4nCisgICAgICAgICAgJ3NlY3Rpb24uXG4nfQpkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggNGVmYmIwYS4uZWY4Y2IwNSAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC04LDYgKzgsNyBAQAogICAgIC0tLS0tLS0tLQogICAgICAgICAgICBwaWNrIHJhbmRvbSBlbGVtZW50CiAgICAgICAgICAgIHBpY2sgcmFuZG9tIHNhbXBsZQorICAgICAgICAgICBwaWNrIHdlaWdodGVkIHJhbmRvbSBzYW1wbGUKICAgICAgICAgICAgZ2VuZXJhdGUgcmFuZG9tIHBlcm11dGF0aW9uCiAKICAgICBkaXN0cmlidXRpb25zIG9uIHRoZSByZWFsIGxpbmU6CkBAIC00MywxMiArNDQsMTQgQEAKIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KIGZyb20gX2NvbGxlY3Rpb25zX2FiYyBpbXBvcnQgU2V0IGFzIF9TZXQsIFNlcXVlbmNlIGFzIF9TZXF1ZW5jZQogZnJvbSBoYXNobGliIGltcG9ydCBzaGE1MTIgYXMgX3NoYTUxMgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCitpbXBvcnQgYmlzZWN0IGFzIF9iaXNlY3QKIAogX19hbGxfXyA9IFsiUmFuZG9tIiwic2VlZCIsInJhbmRvbSIsInVuaWZvcm0iLCJyYW5kaW50IiwiY2hvaWNlIiwic2FtcGxlIiwKICAgICAgICAgICAgInJhbmRyYW5nZSIsInNodWZmbGUiLCJub3JtYWx2YXJpYXRlIiwibG9nbm9ybXZhcmlhdGUiLAogICAgICAgICAgICAiZXhwb3ZhcmlhdGUiLCJ2b25taXNlc3ZhcmlhdGUiLCJnYW1tYXZhcmlhdGUiLCJ0cmlhbmd1bGFyIiwKICAgICAgICAgICAgImdhdXNzIiwiYmV0YXZhcmlhdGUiLCJwYXJldG92YXJpYXRlIiwid2VpYnVsbHZhcmlhdGUiLAotICAgICAgICAgICAiZ2V0c3RhdGUiLCJzZXRzdGF0ZSIsICJnZXRyYW5kYml0cyIsCisgICAgICAgICAgICJnZXRzdGF0ZSIsInNldHN0YXRlIiwgImdldHJhbmRiaXRzIiwgImNob2ljZXMiLAogICAgICAgICAgICAiU3lzdGVtUmFuZG9tIl0KIAogTlZfTUFHSUNDT05TVCA9IDQgKiBfZXhwKC0wLjUpL19zcXJ0KDIuMCkKQEAgLTEwNSwxNSArMTA4LDYgQEAKIAogICAgICAgICAiIiIKIAotICAgICAgICBpZiBhIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBTZWVkIHdpdGggZW5vdWdoIGJ5dGVzIHRvIHNwYW4gdGhlIDE5OTM3IGJpdAotICAgICAgICAgICAgICAgICMgc3RhdGUgc3BhY2UgZm9yIHRoZSBNZXJzZW5uZSBUd2lzdGVyCi0gICAgICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKF91cmFuZG9tKDI1MDApLCAnYmlnJykKLSAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgICAgICAgICAgYSA9IGludCh0aW1lLnRpbWUoKSAqIDI1NikgIyB1c2UgZnJhY3Rpb25hbCBzZWNvbmRzCi0KICAgICAgICAgaWYgdmVyc2lvbiA9PSAxIGFuZCBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzKSk6CiAgICAgICAgICAgICB4ID0gb3JkKGFbMF0pIDw8IDcgaWYgYSBlbHNlIDAKICAgICAgICAgICAgIGZvciBjIGluIGE6CkBAIC0xMjEsMTIgKzExNSwxMSBAQAogICAgICAgICAgICAgeCBePSBsZW4oYSkKICAgICAgICAgICAgIGEgPSAtMiBpZiB4ID09IC0xIGVsc2UgeAogCi0gICAgICAgIGlmIHZlcnNpb24gPT0gMjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSkpOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKLSAgICAgICAgICAgICAgICBhICs9IF9zaGE1MTIoYSkuZGlnZXN0KCkKLSAgICAgICAgICAgICAgICBhID0gaW50LmZyb21fYnl0ZXMoYSwgJ2JpZycpCisgICAgICAgIGlmIHZlcnNpb24gPT0gMiBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6CisgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKKyAgICAgICAgICAgIGEgKz0gX3NoYTUxMihhKS5kaWdlc3QoKQorICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEsICdiaWcnKQogCiAgICAgICAgIHN1cGVyKCkuc2VlZChhKQogICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBOb25lCkBAIC0zNDQsNiArMzM3LDI4IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gcG9wdWxhdGlvbltqXQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgY2hvaWNlcyhzZWxmLCBwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSk6CisgICAgICAgICIiIlJldHVybiBhIGsgc2l6ZWQgbGlzdCBvZiBwb3B1bGF0aW9uIGVsZW1lbnRzIGNob3NlbiB3aXRoIHJlcGxhY2VtZW50LgorCisgICAgICAgIElmIHRoZSByZWxhdGl2ZSB3ZWlnaHRzIG9yIGN1bXVsYXRpdmUgd2VpZ2h0cyBhcmUgbm90IHNwZWNpZmllZCwKKyAgICAgICAgdGhlIHNlbGVjdGlvbnMgYXJlIG1hZGUgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgY3VtX3dlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHdlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjaG9pY2UgPSBzZWxmLmNob2ljZQorICAgICAgICAgICAgICAgIHJldHVybiBbY2hvaWNlKHBvcHVsYXRpb24pIGZvciBpIGluIHJhbmdlKGspXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjdW1fd2VpZ2h0cyA9IGxpc3QoX2l0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQorICAgICAgICBlbGlmIHdlaWdodHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IGJvdGggd2VpZ2h0cyBhbmQgY3VtdWxhdGl2ZV93ZWlnaHRzJykKKyAgICAgICAgaWYgbGVuKGN1bV93ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGUgbnVtYmVyIG9mIHdlaWdodHMgZG9lcyBub3QgbWF0Y2ggdGhlIHBvcHVsYXRpb24nKQorICAgICAgICBiaXNlY3QgPSBfYmlzZWN0LmJpc2VjdAorICAgICAgICByYW5kb20gPSBzZWxmLnJhbmRvbQorICAgICAgICB0b3RhbCA9IGN1bV93ZWlnaHRzWy0xXQorICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bYmlzZWN0KGN1bV93ZWlnaHRzLCByYW5kb20oKSAqIHRvdGFsKV0gZm9yIGkgaW4gcmFuZ2UoayldCisKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gdW5pZm9ybSBkaXN0cmlidXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjE1LDExICs2MzAsMTEgQEAKIAogICAgICAgICAjIFRoaXMgdmVyc2lvbiBkdWUgdG8gSmFubmUgU2lua2tvbmVuLCBhbmQgbWF0Y2hlcyBhbGwgdGhlIHN0ZAogICAgICAgICAjIHRleHRzIChlLmcuLCBLbnV0aCBWb2wgMiBFZCAzIHBnIDEzNCAidGhlIGJldGEgZGlzdHJpYnV0aW9uIikuCi0gICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4pCisgICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4wKQogICAgICAgICBpZiB5ID09IDA6CiAgICAgICAgICAgICByZXR1cm4gMC4wCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4pKQorICAgICAgICAgICAgcmV0dXJuIHkgLyAoeSArIHNlbGYuZ2FtbWF2YXJpYXRlKGJldGEsIDEuMCkpCiAKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIFBhcmV0byAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC03MzQsNiArNzQ5LDcgQEAKIHJhbmRyYW5nZSA9IF9pbnN0LnJhbmRyYW5nZQogc2FtcGxlID0gX2luc3Quc2FtcGxlCiBzaHVmZmxlID0gX2luc3Quc2h1ZmZsZQorY2hvaWNlcyA9IF9pbnN0LmNob2ljZXMKIG5vcm1hbHZhcmlhdGUgPSBfaW5zdC5ub3JtYWx2YXJpYXRlCiBsb2dub3JtdmFyaWF0ZSA9IF9pbnN0LmxvZ25vcm12YXJpYXRlCiBleHBvdmFyaWF0ZSA9IF9pbnN0LmV4cG92YXJpYXRlCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggZGRlODkwMS4uZDMyMWNmZiAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMTE5LDkgKzExOSwxMCBAQAogCiAiIiIKIAotaW1wb3J0IHN5cworaW1wb3J0IGVudW0KIGltcG9ydCBzcmVfY29tcGlsZQogaW1wb3J0IHNyZV9wYXJzZQoraW1wb3J0IGZ1bmN0b29scwogdHJ5OgogICAgIGltcG9ydCBfbG9jYWxlCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xMzgsMTggKzEzOSwyNiBAQAogCiBfX3ZlcnNpb25fXyA9ICIyLjIuMSIKIAotIyBmbGFncwotQSA9IEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKLUkgPSBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCi1MID0gTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCi1VID0gVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgotTSA9IE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCi1TID0gRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQotWCA9IFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCi0KLSMgc3JlIGV4dGVuc2lvbnMgKGV4cGVyaW1lbnRhbCwgZG9uJ3QgcmVseSBvbiB0aGVzZSkKLVQgPSBURU1QTEFURSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1RFTVBMQVRFICMgZGlzYWJsZSBiYWNrdHJhY2tpbmcKLURFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2NsYXNzIFJlZ2V4RmxhZyhlbnVtLkludEZsYWcpOgorICAgIEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKKyAgICBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCisgICAgTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCisgICAgVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgorICAgIE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCisgICAgRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQorICAgIFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCisgICAgQSA9IEFTQ0lJCisgICAgSSA9IElHTk9SRUNBU0UKKyAgICBMID0gTE9DQUxFCisgICAgVSA9IFVOSUNPREUKKyAgICBNID0gTVVMVElMSU5FCisgICAgUyA9IERPVEFMTAorICAgIFggPSBWRVJCT1NFCisgICAgIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQorICAgIFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZworICAgIFQgPSBURU1QTEFURQorICAgIERFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2dsb2JhbHMoKS51cGRhdGUoUmVnZXhGbGFnLl9fbWVtYmVyc19fKQogCiAjIHNyZSBleGNlcHRpb24KIGVycm9yID0gc3JlX2NvbXBpbGUuZXJyb3IKQEAgLTIyNiw3ICsyMzUsNyBAQAogZGVmIHB1cmdlKCk6CiAgICAgIkNsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGVzIgogICAgIF9jYWNoZS5jbGVhcigpCi0gICAgX2NhY2hlX3JlcGwuY2xlYXIoKQorICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CiAgICAgIkNvbXBpbGUgYSB0ZW1wbGF0ZSBwYXR0ZXJuLCByZXR1cm5pbmcgYSBwYXR0ZXJuIG9iamVjdCIKQEAgLTI3MCw3ICsyNzksNiBAQAogIyBpbnRlcm5hbHMKIAogX2NhY2hlID0ge30KLV9jYWNoZV9yZXBsID0ge30KIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKQEAgLTMwMywxNyArMzExLDEwIEBACiAgICAgICAgIF9jYWNoZVt0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFnc10gPSBwLCBsb2MKICAgICByZXR1cm4gcAogCitAZnVuY3Rvb2xzLmxydV9jYWNoZShfTUFYQ0FDSEUpCiBkZWYgX2NvbXBpbGVfcmVwbChyZXBsLCBwYXR0ZXJuKToKICAgICAjIGludGVybmFsOiBjb21waWxlIHJlcGxhY2VtZW50IHBhdHRlcm4KLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfY2FjaGVfcmVwbFtyZXBsLCBwYXR0ZXJuXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIHAgPSBzcmVfcGFyc2UucGFyc2VfdGVtcGxhdGUocmVwbCwgcGF0dGVybikKLSAgICBpZiBsZW4oX2NhY2hlX3JlcGwpID49IF9NQVhDQUNIRToKLSAgICAgICAgX2NhY2hlX3JlcGwuY2xlYXIoKQotICAgIF9jYWNoZV9yZXBsW3JlcGwsIHBhdHRlcm5dID0gcAotICAgIHJldHVybiBwCisgICAgcmV0dXJuIHNyZV9wYXJzZS5wYXJzZV90ZW1wbGF0ZShyZXBsLCBwYXR0ZXJuKQogCiBkZWYgX2V4cGFuZChwYXR0ZXJuLCBtYXRjaCwgdGVtcGxhdGUpOgogICAgICMgaW50ZXJuYWw6IG1hdGNoLmV4cGFuZCBpbXBsZW1lbnRhdGlvbiBob29rCkBAIC0zNTMsNyArMzU0LDcgQEAKICAgICAgICAgZm9yIHBocmFzZSwgYWN0aW9uIGluIGxleGljb246CiAgICAgICAgICAgICBnaWQgPSBzLm9wZW5ncm91cCgpCiAgICAgICAgICAgICBwLmFwcGVuZChzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbCi0gICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAorICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAoZ2lkLCAwLCAwLCBzcmVfcGFyc2UucGFyc2UocGhyYXNlLCBmbGFncykpKSwKICAgICAgICAgICAgICAgICBdKSkKICAgICAgICAgICAgIHMuY2xvc2Vncm91cChnaWQsIHBbLTFdKQogICAgICAgICBwID0gc3JlX3BhcnNlLlN1YlBhdHRlcm4ocywgWyhCUkFOQ0gsIChOb25lLCBwKSldKQpkaWZmIC0tZ2l0IGEvTGliL3JsY29tcGxldGVyLnB5IGIvTGliL3JsY29tcGxldGVyLnB5CmluZGV4IDQwMWE2MjYuLmJjYTRhN2IgMTAwNjQ0Ci0tLSBhL0xpYi9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvcmxjb21wbGV0ZXIucHkKQEAgLTExMyw2ICsxMTMsMTIgQEAKICAgICAgICAgZm9yIHdvcmQgaW4ga2V5d29yZC5rd2xpc3Q6CiAgICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSB0ZXh0OgogICAgICAgICAgICAgICAgIHNlZW4uYWRkKHdvcmQpCisgICAgICAgICAgICAgICAgaWYgd29yZCBpbiB7J2ZpbmFsbHknLCAndHJ5J306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJzonCisgICAgICAgICAgICAgICAgZWxpZiB3b3JkIG5vdCBpbiB7J0ZhbHNlJywgJ05vbmUnLCAnVHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFrJywgJ2NvbnRpbnVlJywgJ3Bhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbHNlJ306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJyAnCiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKICAgICAgICAgZm9yIG5zcGFjZSBpbiBbc2VsZi5uYW1lc3BhY2UsIGJ1aWx0aW5zLl9fZGljdF9fXToKICAgICAgICAgICAgIGZvciB3b3JkLCB2YWwgaW4gbnNwYWNlLml0ZW1zKCk6CkBAIC0xNTIsMTQgKzE1OCwzMCBAQAogICAgICAgICAgICAgd29yZHMudXBkYXRlKGdldF9jbGFzc19tZW1iZXJzKHRoaXNvYmplY3QuX19jbGFzc19fKSkKICAgICAgICAgbWF0Y2hlcyA9IFtdCiAgICAgICAgIG4gPSBsZW4oYXR0cikKLSAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6Ci0gICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSBhdHRyOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cih0aGlzb2JqZWN0LCB3b3JkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIEV4Y2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3Qgc2V0Ci0gICAgICAgICAgICAgICAgd29yZCA9IHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCAiJXMuJXMiICUgKGV4cHIsIHdvcmQpKQotICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKHdvcmQpCisgICAgICAgIGlmIGF0dHIgPT0gJyc6CisgICAgICAgICAgICBub3ByZWZpeCA9ICdfJworICAgICAgICBlbGlmIGF0dHIgPT0gJ18nOgorICAgICAgICAgICAgbm9wcmVmaXggPSAnX18nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB3b3JkIGluIHdvcmRzOgorICAgICAgICAgICAgICAgIGlmICh3b3JkWzpuXSA9PSBhdHRyIGFuZAorICAgICAgICAgICAgICAgICAgICBub3QgKG5vcHJlZml4IGFuZCB3b3JkWzpuKzFdID09IG5vcHJlZml4KSk6CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gIiVzLiVzIiAlIChleHByLCB3b3JkKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHRoaXNvYmplY3QsIHdvcmQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICAjIEluY2x1ZGUgZXZlbiBpZiBhdHRyaWJ1dGUgbm90IHNldAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLl9jYWxsYWJsZV9wb3N0Zml4KHZhbCwgbWF0Y2gpCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKG1hdGNoKQorICAgICAgICAgICAgaWYgbWF0Y2hlcyBvciBub3Qgbm9wcmVmaXg6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vcHJlZml4ID09ICdfJzoKKyAgICAgICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbm9wcmVmaXggPSBOb25lCiAgICAgICAgIG1hdGNoZXMuc29ydCgpCiAgICAgICAgIHJldHVybiBtYXRjaGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBiNDc2NDhkLi4zZDhjMDExIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC0yMywxMSArMjMsNiBAQAogaGFzIGFub3RoZXIgd2F5IHRvIHJlZmVyZW5jZSBwcml2YXRlIGRhdGEgKGJlc2lkZXMgZ2xvYmFsIHZhcmlhYmxlcykuCiAiIiIKIAotIyBYWFggVGhlIHRpbWVmdW5jIGFuZCBkZWxheWZ1bmMgc2hvdWxkIGhhdmUgYmVlbiBkZWZpbmVkIGFzIG1ldGhvZHMKLSMgWFhYIHNvIHlvdSBjYW4gZGVmaW5lIG5ldyBraW5kcyBvZiBzY2hlZHVsZXJzIHVzaW5nIHN1YmNsYXNzaW5nCi0jIFhYWCBpbnN0ZWFkIG9mIGhhdmluZyB0byBkZWZpbmUgYSBtb2R1bGUgb3IgY2xhc3MganVzdCB0byBob2xkCi0jIFhYWCB0aGUgZ2xvYmFsIHN0YXRlIG9mIHlvdXIgcGFydGljdWxhciB0aW1lIGFuZCBkZWxheSBmdW5jdGlvbnMuCi0KIGltcG9ydCB0aW1lCiBpbXBvcnQgaGVhcHEKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKQEAgLTQwLDEyICszNSwyNCBAQAogX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KIAogY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncycpKToKKyAgICBfX3Nsb3RzX18gPSBbXQogICAgIGRlZiBfX2VxX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA9PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2x0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2xlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2d0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2dlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+PSAoby50aW1lLCBvLnByaW9yaXR5KQogCitFdmVudC50aW1lLl9fZG9jX18gPSAoJycnTnVtZXJpYyB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQordGltZWZ1bmMgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4nJycpCitFdmVudC5wcmlvcml0eS5fX2RvY19fID0gKCcnJ0V2ZW50cyBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lIHRpbWUgd2lsbCBiZSBleGVjdXRlZAoraW4gdGhlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LicnJykKK0V2ZW50LmFjdGlvbi5fX2RvY19fID0gKCcnJ0V4ZWN1dGluZyB0aGUgZXZlbnQgbWVhbnMgZXhlY3V0aW5nCithY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncyknJycpCitFdmVudC5hcmd1bWVudC5fX2RvY19fID0gKCcnJ2FyZ3VtZW50IGlzIGEgc2VxdWVuY2UgaG9sZGluZyB0aGUgcG9zaXRpb25hbAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKK0V2ZW50Lmt3YXJncy5fX2RvY19fID0gKCcnJ2t3YXJncyBpcyBhIGRpY3Rpb25hcnkgaG9sZGluZyB0aGUga2V5d29yZAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKKwogX3NlbnRpbmVsID0gb2JqZWN0KCkKIAogY2xhc3Mgc2NoZWR1bGVyOgpkaWZmIC0tZ2l0IGEvTGliL3NlY3JldHMucHkgYi9MaWIvc2VjcmV0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZhNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3NlY3JldHMucHkKQEAgLTAsMCArMSw3MSBAQAorIiIiR2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gbnVtYmVycyBzdWl0YWJsZSBmb3IKK21hbmFnaW5nIHNlY3JldHMgc3VjaCBhcyBhY2NvdW50IGF1dGhlbnRpY2F0aW9uLCB0b2tlbnMsIGFuZCBzaW1pbGFyLgorCitTZWUgUEVQIDUwNiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK2h0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA1MDYvCisKKyIiIgorCitfX2FsbF9fID0gWydjaG9pY2UnLCAncmFuZGJlbG93JywgJ3JhbmRiaXRzJywgJ1N5c3RlbVJhbmRvbScsCisgICAgICAgICAgICd0b2tlbl9ieXRlcycsICd0b2tlbl9oZXgnLCAndG9rZW5fdXJsc2FmZScsCisgICAgICAgICAgICdjb21wYXJlX2RpZ2VzdCcsCisgICAgICAgICAgIF0KKworCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBvcworCitmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0Citmcm9tIHJhbmRvbSBpbXBvcnQgU3lzdGVtUmFuZG9tCisKK19zeXNyYW5kID0gU3lzdGVtUmFuZG9tKCkKKworcmFuZGJpdHMgPSBfc3lzcmFuZC5nZXRyYW5kYml0cworY2hvaWNlID0gX3N5c3JhbmQuY2hvaWNlCisKK2RlZiByYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gaW50IGluIHRoZSByYW5nZSBbMCwgbikuIiIiCisgICAgcmV0dXJuIF9zeXNyYW5kLl9yYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKQorCitERUZBVUxUX0VOVFJPUFkgPSAzMiAgIyBudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuIGJ5IGRlZmF1bHQKKworZGVmIHRva2VuX2J5dGVzKG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBieXRlcy4KKworICAgIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCisgICAgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICBiJ1xceGViclxceDE3RCp0XFx4YWVcXHhkNFxceGUzU1xceGI2XFx4ZTJcXHhlYlAxXFx4OGInCisKKyAgICAiIiIKKyAgICBpZiBuYnl0ZXMgaXMgTm9uZToKKyAgICAgICAgbmJ5dGVzID0gREVGQVVMVF9FTlRST1BZCisgICAgcmV0dXJuIG9zLnVyYW5kb20obmJ5dGVzKQorCitkZWYgdG9rZW5faGV4KG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLgorCisgICAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyogcmFuZG9tIGJ5dGVzLCBlYWNoIGJ5dGUgY29udmVydGVkIHRvIHR3bworICAgIGhleCBkaWdpdHMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZQorICAgIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl9oZXgoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworICAgICIiIgorICAgIHJldHVybiBiaW5hc2NpaS5oZXhsaWZ5KHRva2VuX2J5dGVzKG5ieXRlcykpLmRlY29kZSgnYXNjaWknKQorCitkZWYgdG9rZW5fdXJsc2FmZShuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIFVSTC1zYWZlIHRleHQgc3RyaW5nLCBpbiBCYXNlNjQgZW5jb2RpbmcuCisKKyAgICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKiByYW5kb20gYnl0ZXMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYAorICAgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl91cmxzYWZlKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAnRHJtaHplNkVQY3YwZk5fODFCai1uQScKKworICAgICIiIgorICAgIHRvayA9IHRva2VuX2J5dGVzKG5ieXRlcykKKyAgICByZXR1cm4gYmFzZTY0LnVybHNhZmVfYjY0ZW5jb2RlKHRvaykucnN0cmlwKGInPScpLmRlY29kZSgnYXNjaWknKQpkaWZmIC0tZ2l0IGEvTGliL3NobGV4LnB5IGIvTGliL3NobGV4LnB5CmluZGV4IGVjZDJlZmQuLmU4NzI2NmYgMTAwNjQ0Ci0tLSBhL0xpYi9zaGxleC5weQorKysgYi9MaWIvc2hsZXgucHkKQEAgLTUsNiArNSw3IEBACiAjIHB1c2hfc291cmNlKCkgYW5kIHBvcF9zb3VyY2UoKSBtYWRlIGV4cGxpY2l0IGJ5IEVTUiwgSmFudWFyeSAyMDAxLgogIyBQb3NpeCBjb21wbGlhbmNlLCBzcGxpdCgpLCBzdHJpbmcgYXJndW1lbnRzLCBhbmQKICMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCisjIGNoYW5nZXMgdG8gdG9rZW5pemUgbW9yZSBsaWtlIFBvc2l4IHNoZWxscyBieSBWaW5heSBTYWppcCwgSnVseSAyMDE2LgogCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMTcsNyArMTgsOCBAQAogCiBjbGFzcyBzaGxleDoKICAgICAiQSBsZXhpY2FsIGFuYWx5emVyIGNsYXNzIGZvciBzaW1wbGUgc2hlbGwtbGlrZSBzeW50YXhlcy4iCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpOgogICAgICAgICBpZiBpc2luc3RhbmNlKGluc3RyZWFtLCBzdHIpOgogICAgICAgICAgICAgaW5zdHJlYW0gPSBTdHJpbmdJTyhpbnN0cmVhbSkKICAgICAgICAgaWYgaW5zdHJlYW0gaXMgbm90IE5vbmU6CkBAIC00OSw2ICs1MSwxOSBAQAogICAgICAgICBzZWxmLnRva2VuID0gJycKICAgICAgICAgc2VsZi5maWxlc3RhY2sgPSBkZXF1ZSgpCiAgICAgICAgIHNlbGYuc291cmNlID0gTm9uZQorICAgICAgICBpZiBub3QgcHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycyA9ICcnCisgICAgICAgIGVsaWYgcHVuY3R1YXRpb25fY2hhcnMgaXMgVHJ1ZToKKyAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJygpOzw+fCYnCisgICAgICAgIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgPSBwdW5jdHVhdGlvbl9jaGFycworICAgICAgICBpZiBwdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICMgX3B1c2hiYWNrX2NoYXJzIGlzIGEgcHVzaCBiYWNrIHF1ZXVlIHVzZWQgYnkgbG9va2FoZWFkIGxvZ2ljCisgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycyA9IGRlcXVlKCkKKyAgICAgICAgICAgICMgdGhlc2UgY2hhcnMgYWRkZWQgYmVjYXVzZSBhbGxvd2VkIGluIGZpbGUgbmFtZXMsIGFyZ3MsIHdpbGRjYXJkcworICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgKz0gJ34tLi8qPz0nCisgICAgICAgICAgICAjcmVtb3ZlIGFueSBwdW5jdHVhdGlvbiBjaGFycyBmcm9tIHdvcmRjaGFycworICAgICAgICAgICAgdCA9IHNlbGYud29yZGNoYXJzLm1ha2V0cmFucyhkaWN0LmZyb21rZXlzKHB1bmN0dWF0aW9uX2NoYXJzKSkKKyAgICAgICAgICAgIHNlbGYud29yZGNoYXJzID0gc2VsZi53b3JkY2hhcnMudHJhbnNsYXRlKHQpCiAKICAgICBkZWYgcHVzaF90b2tlbihzZWxmLCB0b2spOgogICAgICAgICAiUHVzaCBhIHRva2VuIG9udG8gdGhlIHN0YWNrIHBvcHBlZCBieSB0aGUgZ2V0X3Rva2VuIG1ldGhvZCIKQEAgLTExNSwxMiArMTMwLDE1IEBACiAgICAgICAgIHF1b3RlZCA9IEZhbHNlCiAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICcgJwogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKKyAgICAgICAgICAgIGlmIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgYW5kIHNlbGYuX3B1c2hiYWNrX2NoYXJzOgorICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5fcHVzaGJhY2tfY2hhcnMucG9wKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKICAgICAgICAgICAgIGlmIG5leHRjaGFyID09ICdcbic6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBpbiBzdGF0ZSIsIHJlcHIoc2VsZi5zdGF0ZSksIFwKLSAgICAgICAgICAgICAgICAgICAgICAiSSBzZWUgY2hhcmFjdGVyOiIsIHJlcHIobmV4dGNoYXIpKQorICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogaW4gc3RhdGUgJXIgSSBzZWUgY2hhcmFjdGVyOiAlciIgJSAoc2VsZi5zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGFyKSkKICAgICAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gJycgICAgICAgICMgcGFzdCBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMzcsMTMgKzE1NSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYuY29tbWVudGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnN0cmVhbS5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKKyAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2MnCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlczoKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKQEAgLTE2NiwxNyArMTg3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGNsb3NpbmcgcXVvdGF0aW9uIikKICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciA9PSBzZWxmLnN0YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wb3NpeDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2EnCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSBpbiBzZWxmLmVzY2FwZWRxdW90ZXM6CisgICAgICAgICAgICAgICAgZWxpZiAoc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGUgYW5kIHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLmVzY2FwZWRxdW90ZXMpOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSBzZWxmLnN0YXRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjogICAgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKQEAgLTE4NSwxMiArMjA2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGVzY2FwZWQgY2hhcmFjdGVyIikKICAgICAgICAgICAgICAgICAjIEluIHBvc2l4IHNoZWxscywgb25seSB0aGUgcXVvdGUgaXRzZWxmIG9yIHRoZSBlc2NhcGUKICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBtYXkgYmUgZXNjYXBlZCB3aXRoaW4gcXVvdGVzLgotICAgICAgICAgICAgICAgIGlmIGVzY2FwZWRzdGF0ZSBpbiBzZWxmLnF1b3RlcyBhbmQgXAotICAgICAgICAgICAgICAgICAgIG5leHRjaGFyICE9IHNlbGYuc3RhdGUgYW5kIG5leHRjaGFyICE9IGVzY2FwZWRzdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBzZWxmLnN0YXRlCi0gICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkc3RhdGUgaW4gc2VsZi5xdW90ZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciAhPSBzZWxmLnN0YXRlIGFuZCBuZXh0Y2hhciAhPSBlc2NhcGVkc3RhdGUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IGVzY2FwZWRzdGF0ZQotICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09ICdhJzoKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSBpbiAoJ2EnLCAnYycpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IE5vbmUgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0yMDQsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLmNvbW1lbnRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdHJlYW0ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnRva2VuIG9yIChzZWxmLnBvc2l4IGFuZCBxdW90ZWQpOgpAQCAtMjE2LDExICsyMzcsMjIgQEAKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCi0gICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFycyBvciBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlcyBcCi0gICAgICAgICAgICAgICAgICAgIG9yIHNlbGYud2hpdGVzcGFjZV9zcGxpdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSAnYyc6CisgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBub3QgaW4gc2VsZi53aGl0ZXNwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzLmFwcGVuZChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxpZiAobmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnMgb3IgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXMKKyAgICAgICAgICAgICAgICAgICAgICBvciBzZWxmLndoaXRlc3BhY2Vfc3BsaXQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMuYXBwZW5kKG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IEkgc2VlIHB1bmN0dWF0aW9uIGluIHdvcmQgc3RhdGUiKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCA2Y2Y4OGQ5Li45MGI3MTk4IDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTk3NSw2ICs5NzUsOSBAQAogCiAgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQogICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS50b3RhbC5fX2RvY19fID0gJ1RvdGFsIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLnVzZWQuX19kb2NfXyA9ICdVc2VkIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLmZyZWUuX19kb2NfXyA9ICdGcmVlIHNwYWNlIGluIGJ5dGVzJwogCiAgICAgZGVmIGRpc2tfdXNhZ2UocGF0aCk6CiAgICAgICAgICIiIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGguCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0IGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzNmNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMgZGlyZWN0b3J5IGV4aXN0cyBzbyB0aGF0IDNyZCBwYXJ0eSBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkCitoZXJlLiAgUmVhZCB0aGUgc291cmNlIGZvciBzaXRlLnB5IGZvciBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IDNmNzhlZjUuLjA4NTlmMjggMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC02MCw3ICs2MCw4IEBACiAKIFRoZSByZWFkbGluZSBtb2R1bGUgaXMgYWxzbyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgdG8gZW5hYmxlCiBjb21wbGV0aW9uIGZvciBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdC4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4KLXNpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4KK3NpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4gIFN0YXJ0aW5nIFB5dGhvbiBpbgoraXNvbGF0ZWQgbW9kZSAoLUkpIGRpc2FibGVzIGF1dG9tYXRpYyByZWFkbGluZSBjb25maWd1cmF0aW9uLgogCiBBZnRlciB0aGVzZSBvcGVyYXRpb25zLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gaW1wb3J0IGEgbW9kdWxlCiBuYW1lZCBzaXRlY3VzdG9taXplLCB3aGljaCBjYW4gcGVyZm9ybSBhcmJpdHJhcnkgYWRkaXRpb25hbApAQCAtMTMxLDEzICsxMzIsMTMgQEAKIAogCiBkZWYgX2luaXRfcGF0aGluZm8oKToKLSAgICAiIiJSZXR1cm4gYSBzZXQgY29udGFpbmluZyBhbGwgZXhpc3RpbmcgZGlyZWN0b3J5IGVudHJpZXMgZnJvbSBzeXMucGF0aCIiIgorICAgICIiIlJldHVybiBhIHNldCBjb250YWluaW5nIGFsbCBleGlzdGluZyBmaWxlIHN5c3RlbSBpdGVtcyBmcm9tIHN5cy5wYXRoLiIiIgogICAgIGQgPSBzZXQoKQotICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CisgICAgZm9yIGl0ZW0gaW4gc3lzLnBhdGg6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZGlyKToKLSAgICAgICAgICAgICAgICBkaXIsIGRpcmNhc2UgPSBtYWtlcGF0aChkaXIpCi0gICAgICAgICAgICAgICAgZC5hZGQoZGlyY2FzZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGl0ZW0pOgorICAgICAgICAgICAgICAgIF8sIGl0ZW1jYXNlID0gbWFrZXBhdGgoaXRlbSkKKyAgICAgICAgICAgICAgICBkLmFkZChpdGVtY2FzZSkKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgcmV0dXJuIGQKQEAgLTE1MCw5ICsxNTEsOSBAQAogICAgICIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihzaXRlZGlyLCBuYW1lKQogICAgIHRyeToKICAgICAgICAgZiA9IG9wZW4oZnVsbG5hbWUsICJyIikKQEAgLTE5MCw5ICsxOTEsOSBAQAogICAgICdzaXRlZGlyJyIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICAgaWYgbm90IHNpdGVkaXJjYXNlIGluIGtub3duX3BhdGhzOgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2l0ZWRpcikgICAgICAgICMgQWRkIHBhdGggY29tcG9uZW50CkBAIC0zMDQsNyArMzA1LDcgQEAKIAogICAgICAgICBpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocHJlZml4KQpAQCAtMzE3LDcgKzMxOCw3IEBACiAgICAgICAgICAgICBpZiBmcmFtZXdvcms6CiAgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbigiL0xpYnJhcnkiLCBmcmFtZXdvcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdLCAic2l0ZS1wYWNrYWdlcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwgInNpdGUtcGFja2FnZXMiKSkKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgpAQCAtMzM1LDkgKzMzNiw3IEBACiAgICAgVGhlIHJlcHIgb2YgZWFjaCBvYmplY3QgY29udGFpbnMgYSBoaW50IGF0IGhvdyBpdCB3b3Jrcy4KIAogICAgICIiIgotICAgIGlmIG9zLnNlcCA9PSAnOic6Ci0gICAgICAgIGVvZiA9ICdDbWQtUScKLSAgICBlbGlmIG9zLnNlcCA9PSAnXFwnOgorICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgICBlb2YgPSAnQ3RybC1aIHBsdXMgUmV0dXJuJwogICAgIGVsc2U6CiAgICAgICAgIGVvZiA9ICdDdHJsLUQgKGkuZS4gRU9GKScKQEAgLTQyMywyMSArNDIyLDYgQEAKIAogICAgIHN5cy5fX2ludGVyYWN0aXZlaG9va19fID0gcmVnaXN0ZXJfcmVhZGxpbmUKIAotZGVmIGFsaWFzbWJjcygpOgotICAgICIiIk9uIFdpbmRvd3MsIHNvbWUgZGVmYXVsdCBlbmNvZGluZ3MgYXJlIG5vdCBwcm92aWRlZCBieSBQeXRob24sCi0gICAgd2hpbGUgdGhleSBhcmUgYWx3YXlzIGF2YWlsYWJsZSBhcyAibWJjcyIgaW4gZWFjaCBsb2NhbGUuIE1ha2UKLSAgICB0aGVtIHVzYWJsZSBieSBhbGlhc2luZyB0byAibWJjcyIgaW4gc3VjaCBhIGNhc2UuIiIiCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZSwgY29kZWNzCi0gICAgICAgIGVuYyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgICAgICBpZiBlbmMuc3RhcnRzd2l0aCgnY3AnKTogICAgICAgICAgICAjICJjcCoqKiIgPwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAoZW5jKQotICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCBlbmNvZGluZ3MKLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuX2NhY2hlW2VuY10gPSBlbmNvZGluZ3MuX3Vua25vd24KLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKLQogQ09ORklHX0xJTkUgPSByJ14oP1A8a2V5Pihcd3xbLV9dKSspXHMqPVxzKig/UDx2YWx1ZT4uKilccyokJwogCiBkZWYgdmVudihrbm93bl9wYXRocyk6CkBAIC00NzgsMTIgKzQ2Miw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9IHZhbHVlLmxvd2VyKCkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2hvbWUnOgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzLl9ob21lID0gdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2FwcGxvY2FsJyBhbmQgdmFsdWUubG93ZXIoKSA9PSAndHJ1ZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIEFwcC1sb2NhbCBpbnN0YWxscyB1c2UgdGhlIGV4ZV9kaXIgYXMgcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgIyBub3Qgb25lIGxldmVsIGhpZ2hlciwgYW5kIGRvIG5vdCB1c2Ugc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHNpdGUgcGFja2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXRlX3ByZWZpeCA9IGV4ZV9kaXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gJ2ZhbHNlJwogCiAgICAgICAgIHN5cy5wcmVmaXggPSBzeXMuZXhlY19wcmVmaXggPSBzaXRlX3ByZWZpeAogCkBAIC01MDQsMTEgKzQ4MiwxNSBAQAogZGVmIGV4ZWNzaXRlY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSBzaXRlIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBzaXRlY3VzdG9taXplCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBzaXRlY3VzdG9taXplCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMubmFtZSA9PSAnc2l0ZWN1c3RvbWl6ZSc6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgotICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVkVSQk9TRSIpOgorICAgICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKICAgICAgICAgICAgIHN5cy5leGNlcHRob29rKCpzeXMuZXhjX2luZm8oKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCkBAIC01MjAsMTEgKzUwMiwxNSBAQAogZGVmIGV4ZWN1c2VyY3VzdG9taXplKCk6CiAgICAgIiIiUnVuIGN1c3RvbSB1c2VyIHNwZWNpZmljIGNvZGUsIGlmIGF2YWlsYWJsZS4iIiIKICAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB1c2VyY3VzdG9taXplCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB1c2VyY3VzdG9taXplCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMubmFtZSA9PSAndXNlcmN1c3RvbWl6ZSc6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgotICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgiUFlUSE9OVkVSQk9TRSIpOgorICAgICAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZToKICAgICAgICAgICAgIHN5cy5leGNlcHRob29rKCpzeXMuZXhjX2luZm8oKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCkBAIC01NTEsMTMgKzUzNywxMyBAQAogICAgIHNldHF1aXQoKQogICAgIHNldGNvcHlyaWdodCgpCiAgICAgc2V0aGVscGVyKCkKLSAgICBlbmFibGVybGNvbXBsZXRlcigpCi0gICAgYWxpYXNtYmNzKCkKKyAgICBpZiBub3Qgc3lzLmZsYWdzLmlzb2xhdGVkOgorICAgICAgICBlbmFibGVybGNvbXBsZXRlcigpCiAgICAgZXhlY3NpdGVjdXN0b21pemUoKQogICAgIGlmIEVOQUJMRV9VU0VSX1NJVEU6CiAgICAgICAgIGV4ZWN1c2VyY3VzdG9taXplKCkKIAotIyBQcmV2ZW50IGVkaXRpb24gb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKKyMgUHJldmVudCBleHRlbmRpbmcgb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKICMgc2l0ZSBpcyBpbXBvcnRlZCBsYXRlci4KIGlmIG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZToKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9zbXRwZC5weSBiL0xpYi9zbXRwZC5weQppbmRleCA3MzIwNjZlLi44MTAzY2E5IDEwMDc1NQotLS0gYS9MaWIvc210cGQucHkKKysrIGIvTGliL3NtdHBkLnB5CkBAIC04OSw3ICs4OSwxMCBAQAogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogZnJvbSBlbWFpbC5faGVhZGVyX3ZhbHVlX3BhcnNlciBpbXBvcnQgZ2V0X2FkZHJfc3BlYywgZ2V0X2FuZ2xlX2FkZHIKIAotX19hbGxfXyA9IFsiU01UUFNlcnZlciIsIkRlYnVnZ2luZ1NlcnZlciIsIlB1cmVQcm94eSIsIk1haWxtYW5Qcm94eSJdCitfX2FsbF9fID0gWworICAgICJTTVRQQ2hhbm5lbCIsICJTTVRQU2VydmVyIiwgIkRlYnVnZ2luZ1NlcnZlciIsICJQdXJlUHJveHkiLAorICAgICJNYWlsbWFuUHJveHkiLAorXQogCiBwcm9ncmFtID0gc3lzLmFyZ3ZbMF0KIF9fdmVyc2lvbl9fID0gJ1B5dGhvbiBTTVRQIHByb3h5IHZlcnNpb24gMC4zJwpAQCAtMTI4LDI0ICsxMzEsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULAotICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKKyAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpOgogICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIG1hcD1tYXApCiAgICAgICAgIHNlbGYuc210cF9zZXJ2ZXIgPSBzZXJ2ZXIKICAgICAgICAgc2VsZi5jb25uID0gY29ubgogICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4ID0gZW5hYmxlX1NNVFBVVEY4Ci0gICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKLSAgICAgICAgICAgIGlmIGRlY29kZV9kYXRhOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKLSAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKLSAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKLSAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAotICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCiAgICAgICAgIGlmIGRlY29kZV9kYXRhOgogICAgICAgICAgICAgc2VsZi5fZW1wdHlzdHJpbmcgPSAnJwogICAgICAgICAgICAgc2VsZi5fbGluZXNlcCA9ICdcclxuJwpAQCAtNjM1LDIzICs2MzEsMTUgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIsCiAgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwgbWFwPU5vbmUsCi0gICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpOgogICAgICAgICBzZWxmLl9sb2NhbGFkZHIgPSBsb2NhbGFkZHIKICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IHJlbW90ZWFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKLSAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgotICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlIGRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHBhcmFtZXRlcnMgY2Fubm90IGJlIHNldCB0byBUcnVlIGF0IHRoZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgc2FtZSB0aW1lLiIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IEZhbHNlCi0gICAgICAgIGlmIGRlY29kZV9kYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICB3YXJuKCJUaGUgZGVjb2RlX2RhdGEgZGVmYXVsdCBvZiBUcnVlIHdpbGwgY2hhbmdlIHRvIEZhbHNlIGluIDMuNjsiCi0gICAgICAgICAgICAgICAgICIgc3BlY2lmeSBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBrZXl3b3JkIiwKLSAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBUcnVlCiAgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4IGFuZCBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYsIG1hcD1tYXApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGdhaV9yZXN1bHRzID0gc29ja2V0LmdldGFkZHJpbmZvKCpsb2NhbGFkZHIsCkBAIC02OTgsOSArNjg2LDkgQEAKICAgICAgICAgY29udGFpbmluZyBhIGAuJyBmb2xsb3dlZCBieSBvdGhlciB0ZXh0IGhhcyBoYWQgdGhlIGxlYWRpbmcgZG90CiAgICAgICAgIHJlbW92ZWQuCiAKLSAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5Ci0gICAgICAgIHVubGVzcyBkZWNvZGVfZGF0YT1GYWxzZSBvciBlbmFibGVfU01UUFVURjg9VHJ1ZSB3YXMgZ2l2ZW4gYXMgaW5pdAotICAgICAgICBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgdXQgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKKyAgICAgICAga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICBJdCBpcworICAgICAgICBlbXB0eSBpZiBkZWNvZGVfZGF0YT1UcnVlIHdhcyBnaXZlbiBhcyBpbml0IHBhcmFtZXRlciwgb3RoZXJ3aXNlCisgICAgICAgIGl0IHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CiAgICAgICAgICAgICAnbWFpbF9vcHRpb25zJzogbGlzdCBvZiBwYXJhbWV0ZXJzIHRvIHRoZSBtYWlsIGNvbW1hbmQuICBBbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyBhcmUgdXBwZXJjYXNlIHN0cmluZ3MuICBFeGFtcGxlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQk9EWT04QklUTUlNRScsICdTTVRQVVRGOCddLgpkaWZmIC0tZ2l0IGEvTGliL3NtdHBsaWIucHkgYi9MaWIvc210cGxpYi5weQppbmRleCA1YjllNjY1Li5mN2MyYzc3IDEwMDc1NQotLS0gYS9MaWIvc210cGxpYi5weQorKysgYi9MaWIvc210cGxpYi5weQpAQCAtNzU5LDYgKzc1OSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPWtleWZpbGUpCkBAIC0xMDExLDYgKzEwMTUsMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvc25kaGRyLnB5IGIvTGliL3NuZGhkci5weQppbmRleCBlNTkwMWVjLi43ZWNhZmI0IDEwMDY0NAotLS0gYS9MaWIvc25kaGRyLnB5CisrKyBiL0xpYi9zbmRoZHIucHkKQEAgLTM3LDYgKzM3LDE4IEBACiBTbmRIZWFkZXJzID0gbmFtZWR0dXBsZSgnU25kSGVhZGVycycsCiAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXR5cGUgZnJhbWVyYXRlIG5jaGFubmVscyBuZnJhbWVzIHNhbXB3aWR0aCcpCiAKK1NuZEhlYWRlcnMuZmlsZXR5cGUuX19kb2NfXyA9ICgiIiJUaGUgdmFsdWUgZm9yIHR5cGUgaW5kaWNhdGVzIHRoZSBkYXRhIHR5cGUKK2FuZCB3aWxsIGJlIG9uZSBvZiB0aGUgc3RyaW5ncyAnYWlmYycsICdhaWZmJywgJ2F1JywnaGNvbScsCisnc25kcicsICdzbmR0JywgJ3ZvYycsICd3YXYnLCAnOHN2eCcsICdzYicsICd1YicsIG9yICd1bCcuIiIiKQorU25kSGVhZGVycy5mcmFtZXJhdGUuX19kb2NfXyA9ICgiIiJUaGUgc2FtcGxpbmdfcmF0ZSB3aWxsIGJlIGVpdGhlciB0aGUgYWN0dWFsCit2YWx1ZSBvciAwIGlmIHVua25vd24gb3IgZGlmZmljdWx0IHRvIGRlY29kZS4iIiIpCitTbmRIZWFkZXJzLm5jaGFubmVscy5fX2RvY19fID0gKCIiIlRoZSBudW1iZXIgb2YgY2hhbm5lbHMgb3IgMCBpZiBpdCBjYW5ub3QgYmUKK2RldGVybWluZWQgb3IgaWYgdGhlIHZhbHVlIGlzIGRpZmZpY3VsdCB0byBkZWNvZGUuIiIiKQorU25kSGVhZGVycy5uZnJhbWVzLl9fZG9jX18gPSAoIiIiVGhlIHZhbHVlIGZvciBmcmFtZXMgd2lsbCBiZSBlaXRoZXIgdGhlIG51bWJlcgorb2YgZnJhbWVzIG9yIC0xLiIiIikKK1NuZEhlYWRlcnMuc2FtcHdpZHRoLl9fZG9jX18gPSAoIiIiRWl0aGVyIHRoZSBzYW1wbGUgc2l6ZSBpbiBiaXRzIG9yCisnQScgZm9yIEEtTEFXIG9yICdVJyBmb3IgdS1MQVcuIiIiKQorCiBkZWYgd2hhdChmaWxlbmFtZSk6CiAgICAgIiIiR3Vlc3MgdGhlIHR5cGUgb2YgYSBzb3VuZCBmaWxlLiIiIgogICAgIHJlcyA9IHdoYXRoZHIoZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0LnB5IGIvTGliL3NvY2tldC5weQppbmRleCBhOWNhYjMyLi43NDBlNzE3IDEwMDY0NAotLS0gYS9MaWIvc29ja2V0LnB5CisrKyBiL0xpYi9zb2NrZXQucHkKQEAgLTUwLDcgKzUwLDcgQEAKIGZyb20gX3NvY2tldCBpbXBvcnQgKgogCiBpbXBvcnQgb3MsIHN5cywgaW8sIHNlbGVjdG9ycwotZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtCitmcm9tIGVudW0gaW1wb3J0IEludEVudW0sIEludEZsYWcKIAogdHJ5OgogICAgIGltcG9ydCBlcnJubwpAQCAtODAsNiArODAsMTYgQEAKICAgICAgICAgX19uYW1lX18sCiAgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdTT0NLXycpKQogCitJbnRGbGFnLl9jb252ZXJ0KAorICAgICAgICAnTXNnRmxhZycsCisgICAgICAgIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnTVNHXycpKQorCitJbnRGbGFnLl9jb252ZXJ0KAorICAgICAgICAnQWRkcmVzc0luZm8nLAorICAgICAgICBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ0FJXycpKQorCiBfTE9DQUxIT1NUICAgID0gJzEyNy4wLjAuMScKIF9MT0NBTEhPU1RfVjYgPSAnOjoxJwogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCA4ODA4ODEzLi40MWEzNzY2IDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTEyNywxNiArMTI3LDIwIEBACiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubworaW1wb3J0IHN5cwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZworZnJvbSBpbyBpbXBvcnQgQnVmZmVyZWRJT0Jhc2UKIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIHRpbWUKIAotX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwgIkZvcmtpbmdVRFBTZXJ2ZXIiLAotICAgICAgICAgICAiRm9ya2luZ1RDUFNlcnZlciIsICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKK19fYWxsX18gPSBbIkJhc2VTZXJ2ZXIiLCAiVENQU2VydmVyIiwgIlVEUFNlcnZlciIsCisgICAgICAgICAgICJUaHJlYWRpbmdVRFBTZXJ2ZXIiLCAiVGhyZWFkaW5nVENQU2VydmVyIiwKICAgICAgICAgICAgIkJhc2VSZXF1ZXN0SGFuZGxlciIsICJTdHJlYW1SZXF1ZXN0SGFuZGxlciIsCi0gICAgICAgICAgICJEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyIiwgIlRocmVhZGluZ01peEluIiwgIkZvcmtpbmdNaXhJbiJdCisgICAgICAgICAgICJEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyIiwgIlRocmVhZGluZ01peEluIl0KK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgX19hbGxfXy5leHRlbmQoWyJGb3JraW5nVURQU2VydmVyIiwiRm9ya2luZ1RDUFNlcnZlciIsICJGb3JraW5nTWl4SW4iXSkKIGlmIGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpOgogICAgIF9fYWxsX18uZXh0ZW5kKFsiVW5peFN0cmVhbVNlcnZlciIsIlVuaXhEYXRhZ3JhbVNlcnZlciIsCiAgICAgICAgICAgICAgICAgICAgICJUaHJlYWRpbmdVbml4U3RyZWFtU2VydmVyIiwKQEAgLTMxMSw5ICszMTUsMTIgQEAKICAgICAgICAgaWYgc2VsZi52ZXJpZnlfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5wcm9jZXNzX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKIApAQCAtMzY3LDEyICszNzQsMTggQEAKICAgICAgICAgVGhlIGRlZmF1bHQgaXMgdG8gcHJpbnQgYSB0cmFjZWJhY2sgYW5kIGNvbnRpbnVlLgogCiAgICAgICAgICIiIgotICAgICAgICBwcmludCgnLScqNDApCi0gICAgICAgIHByaW50KCdFeGNlcHRpb24gaGFwcGVuZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgcmVxdWVzdCBmcm9tJywgZW5kPScgJykKLSAgICAgICAgcHJpbnQoY2xpZW50X2FkZHJlc3MpCisgICAgICAgIHByaW50KCctJyo0MCwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBwcmludCgnRXhjZXB0aW9uIGhhcHBlbmVkIGR1cmluZyBwcm9jZXNzaW5nIG9mIHJlcXVlc3QgZnJvbScsCisgICAgICAgICAgICBjbGllbnRfYWRkcmVzcywgZmlsZT1zeXMuc3RkZXJyKQogICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKSAjIFhYWCBCdXQgdGhpcyBnb2VzIHRvIHN0ZGVyciEKLSAgICAgICAgcHJpbnQoJy0nKjQwKQorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgcHJpbnQoJy0nKjQwLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQogCiAKIGNsYXNzIFRDUFNlcnZlcihCYXNlU2VydmVyKToKQEAgLTUyNyw4NSArNTQwLDg2IEBACiAgICAgICAgICMgTm8gbmVlZCB0byBjbG9zZSBhbnl0aGluZy4KICAgICAgICAgcGFzcwogCi1jbGFzcyBGb3JraW5nTWl4SW46CitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIGNsYXNzIEZvcmtpbmdNaXhJbjoKKyAgICAgICAgIiIiTWl4LWluIGNsYXNzIHRvIGhhbmRsZSBlYWNoIHJlcXVlc3QgaW4gYSBuZXcgcHJvY2Vzcy4iIiIKIAotICAgICIiIk1peC1pbiBjbGFzcyB0byBoYW5kbGUgZWFjaCByZXF1ZXN0IGluIGEgbmV3IHByb2Nlc3MuIiIiCisgICAgICAgIHRpbWVvdXQgPSAzMDAKKyAgICAgICAgYWN0aXZlX2NoaWxkcmVuID0gTm9uZQorICAgICAgICBtYXhfY2hpbGRyZW4gPSA0MAogCi0gICAgdGltZW91dCA9IDMwMAotICAgIGFjdGl2ZV9jaGlsZHJlbiA9IE5vbmUKLSAgICBtYXhfY2hpbGRyZW4gPSA0MAotCi0gICAgZGVmIGNvbGxlY3RfY2hpbGRyZW4oc2VsZik6Ci0gICAgICAgICIiIkludGVybmFsIHJvdXRpbmUgdG8gd2FpdCBmb3IgY2hpbGRyZW4gdGhhdCBoYXZlIGV4aXRlZC4iIiIKLSAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgSWYgd2UncmUgYWJvdmUgdGhlIG1heCBudW1iZXIgb2YgY2hpbGRyZW4sIHdhaXQgYW5kIHJlYXAgdGhlbSB1bnRpbAotICAgICAgICAjIHdlIGdvIGJhY2sgYmVsb3cgdGhyZXNob2xkLiBOb3RlIHRoYXQgd2UgdXNlIHdhaXRwaWQoLTEpIGJlbG93IHRvIGJlCi0gICAgICAgICMgYWJsZSB0byBjb2xsZWN0IGNoaWxkcmVuIGluIHNpemUoPGRlZnVuY3QgY2hpbGRyZW4+KSBzeXNjYWxscyBpbnN0ZWFkCi0gICAgICAgICMgb2Ygc2l6ZSg8Y2hpbGRyZW4+KTogdGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBtaWdodCByZWFwIGNoaWxkcmVuCi0gICAgICAgICMgd2hpY2ggd2UgZGlkbid0IHNwYXduLCB3aGljaCBpcyB3aHkgd2Ugb25seSByZXNvcnQgdG8gdGhpcyB3aGVuIHdlJ3JlCi0gICAgICAgICMgYWJvdmUgbWF4X2NoaWxkcmVuLgotICAgICAgICB3aGlsZSBsZW4oc2VsZi5hY3RpdmVfY2hpbGRyZW4pID49IHNlbGYubWF4X2NoaWxkcmVuOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQoLTEsIDApCi0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbiwgd2UncmUgZG9uZQotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgIyBOb3cgcmVhcCBhbGwgZGVmdW5jdCBjaGlsZHJlbi4KLSAgICAgICAgZm9yIHBpZCBpbiBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jb3B5KCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZChwaWQsIG9zLldOT0hBTkcpCi0gICAgICAgICAgICAgICAgIyBpZiB0aGUgY2hpbGQgaGFzbid0IGV4aXRlZCB5ZXQsIHBpZCB3aWxsIGJlIDAgYW5kIGlnbm9yZWQgYnkKLSAgICAgICAgICAgICAgICAjIGRpc2NhcmQoKSBiZWxvdwotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgICAgICMgc29tZW9uZSBlbHNlIHJlYXBlZCBpdAotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYpOgotICAgICAgICAiIiJXYWl0IGZvciB6b21iaWVzIGFmdGVyIHNlbGYudGltZW91dCBzZWNvbmRzIG9mIGluYWN0aXZpdHkuCi0KLSAgICAgICAgTWF5IGJlIGV4dGVuZGVkLCBkbyBub3Qgb3ZlcnJpZGUuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQotCi0gICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKLSAgICAgICAgIiIiQ29sbGVjdCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3NlcyByZWd1bGFybHkgaW4gdGhlIEZvcmtpbmdNaXhJbi4KLQotICAgICAgICBzZXJ2aWNlX2FjdGlvbnMgaXMgY2FsbGVkIGluIHRoZSBCYXNlU2VydmVyJ3Mgc2VydmVfZm9ydmVyIGxvb3AuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQotCi0gICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6Ci0gICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgotICAgICAgICBwaWQgPSBvcy5mb3JrKCkKLSAgICAgICAgaWYgcGlkOgotICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcworICAgICAgICBkZWYgY29sbGVjdF9jaGlsZHJlbihzZWxmKToKKyAgICAgICAgICAgICIiIkludGVybmFsIHJvdXRpbmUgdG8gd2FpdCBmb3IgY2hpbGRyZW4gdGhhdCBoYXZlIGV4aXRlZC4iIiIKICAgICAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4gPSBzZXQoKQotICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uYWRkKHBpZCkKLSAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIENoaWxkIHByb2Nlc3MuCi0gICAgICAgICAgICAjIFRoaXMgbXVzdCBuZXZlciByZXR1cm4sIGhlbmNlIG9zLl9leGl0KCkhCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBvcy5fZXhpdCgwKQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICAjIElmIHdlJ3JlIGFib3ZlIHRoZSBtYXggbnVtYmVyIG9mIGNoaWxkcmVuLCB3YWl0IGFuZCByZWFwIHRoZW0gdW50aWwKKyAgICAgICAgICAgICMgd2UgZ28gYmFjayBiZWxvdyB0aHJlc2hvbGQuIE5vdGUgdGhhdCB3ZSB1c2Ugd2FpdHBpZCgtMSkgYmVsb3cgdG8gYmUKKyAgICAgICAgICAgICMgYWJsZSB0byBjb2xsZWN0IGNoaWxkcmVuIGluIHNpemUoPGRlZnVuY3QgY2hpbGRyZW4+KSBzeXNjYWxscyBpbnN0ZWFkCisgICAgICAgICAgICAjIG9mIHNpemUoPGNoaWxkcmVuPik6IHRoZSBkb3duc2lkZSBpcyB0aGF0IHRoaXMgbWlnaHQgcmVhcCBjaGlsZHJlbgorICAgICAgICAgICAgIyB3aGljaCB3ZSBkaWRuJ3Qgc3Bhd24sIHdoaWNoIGlzIHdoeSB3ZSBvbmx5IHJlc29ydCB0byB0aGlzIHdoZW4gd2UncmUKKyAgICAgICAgICAgICMgYWJvdmUgbWF4X2NoaWxkcmVuLgorICAgICAgICAgICAgd2hpbGUgbGVuKHNlbGYuYWN0aXZlX2NoaWxkcmVuKSA+PSBzZWxmLm1heF9jaGlsZHJlbjoKICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQoLTEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyB3ZSBkb24ndCBoYXZlIGFueSBjaGlsZHJlbiwgd2UncmUgZG9uZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgICMgTm93IHJlYXAgYWxsIGRlZnVuY3QgY2hpbGRyZW4uCisgICAgICAgICAgICBmb3IgcGlkIGluIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNvcHkoKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQocGlkLCBvcy5XTk9IQU5HKQorICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBjaGlsZCBoYXNuJ3QgZXhpdGVkIHlldCwgcGlkIHdpbGwgYmUgMCBhbmQgaWdub3JlZCBieQorICAgICAgICAgICAgICAgICAgICAjIGRpc2NhcmQoKSBiZWxvdworICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgc29tZW9uZSBlbHNlIHJlYXBlZCBpdAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKKyAgICAgICAgICAgICIiIldhaXQgZm9yIHpvbWJpZXMgYWZ0ZXIgc2VsZi50aW1lb3V0IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KKworICAgICAgICAgICAgTWF5IGJlIGV4dGVuZGVkLCBkbyBub3Qgb3ZlcnJpZGUuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKKyAgICAgICAgZGVmIHNlcnZpY2VfYWN0aW9ucyhzZWxmKToKKyAgICAgICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4SW4uCisKKyAgICAgICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKworICAgICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKKyAgICAgICAgICAgICIiIkZvcmsgYSBuZXcgc3VicHJvY2VzcyB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LiIiIgorICAgICAgICAgICAgcGlkID0gb3MuZm9yaygpCisgICAgICAgICAgICBpZiBwaWQ6CisgICAgICAgICAgICAgICAgIyBQYXJlbnQgcHJvY2VzcworICAgICAgICAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuID0gc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hZGQocGlkKQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIENoaWxkIHByb2Nlc3MuCisgICAgICAgICAgICAgICAgIyBUaGlzIG11c3QgbmV2ZXIgcmV0dXJuLCBoZW5jZSBvcy5fZXhpdCgpIQorICAgICAgICAgICAgICAgIHN0YXR1cyA9IDEKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IDAKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoMSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdChzdGF0dXMpCiAKIAogY2xhc3MgVGhyZWFkaW5nTWl4SW46CkBAIC02MjMsOSArNjM3LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgZXhjZXB0OgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCisgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKIAogICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgpAQCAtNjM2LDggKzY1MCw5IEBACiAgICAgICAgIHQuc3RhcnQoKQogCiAKLWNsYXNzIEZvcmtpbmdVRFBTZXJ2ZXIoRm9ya2luZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCi1jbGFzcyBGb3JraW5nVENQU2VydmVyKEZvcmtpbmdNaXhJbiwgVENQU2VydmVyKTogcGFzcworaWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBjbGFzcyBGb3JraW5nVURQU2VydmVyKEZvcmtpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcworICAgIGNsYXNzIEZvcmtpbmdUQ1BTZXJ2ZXIoRm9ya2luZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCiAKIGNsYXNzIFRocmVhZGluZ1VEUFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcwogY2xhc3MgVGhyZWFkaW5nVENQU2VydmVyKFRocmVhZGluZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCkBAIC03MjksNyArNzQ0LDEwIEBACiAgICAgICAgICAgICBzZWxmLmNvbm5lY3Rpb24uc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19UQ1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuVENQX05PREVMQVksIFRydWUpCiAgICAgICAgIHNlbGYucmZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3JiJywgc2VsZi5yYnVmc2l6ZSkKLSAgICAgICAgc2VsZi53ZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgnd2InLCBzZWxmLndidWZzaXplKQorICAgICAgICBpZiBzZWxmLndidWZzaXplID09IDA6CisgICAgICAgICAgICBzZWxmLndmaWxlID0gX1NvY2tldFdyaXRlcihzZWxmLmNvbm5lY3Rpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCd3YicsIHNlbGYud2J1ZnNpemUpCiAKICAgICBkZWYgZmluaXNoKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi53ZmlsZS5jbG9zZWQ6CkBAIC03NDIsNiArNzYwLDI0IEBACiAgICAgICAgIHNlbGYud2ZpbGUuY2xvc2UoKQogICAgICAgICBzZWxmLnJmaWxlLmNsb3NlKCkKIAorY2xhc3MgX1NvY2tldFdyaXRlcihCdWZmZXJlZElPQmFzZSk6CisgICAgIiIiU2ltcGxlIHdyaXRhYmxlIEJ1ZmZlcmVkSU9CYXNlIGltcGxlbWVudGF0aW9uIGZvciBhIHNvY2tldAorCisgICAgRG9lcyBub3QgaG9sZCBkYXRhIGluIGEgYnVmZmVyLCBhdm9pZGluZyBhbnkgbmVlZCB0byBjYWxsIGZsdXNoKCkuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29jayk6CisgICAgICAgIHNlbGYuX3NvY2sgPSBzb2NrCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgYik6CisgICAgICAgIHNlbGYuX3NvY2suc2VuZGFsbChiKQorICAgICAgICB3aXRoIG1lbW9yeXZpZXcoYikgYXMgdmlldzoKKyAgICAgICAgICAgIHJldHVybiB2aWV3Lm5ieXRlcworCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NvY2suZmlsZW5vKCkKIAogY2xhc3MgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlcihCYXNlUmVxdWVzdEhhbmRsZXIpOgogCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQppbmRleCA3ZmI4ZDdlLi5jYjg1ODE0IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKQEAgLTE4OCw3ICsxODgsMTAgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuY3ggPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQogICAgICAgICBzZWxmLmN1ID0gc2VsZi5jeC5jdXJzb3IoKQotICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGlkIGludGVnZXIgcHJpbWFyeSBrZXksIG5hbWUgdGV4dCwgaW5jb21lIG51bWJlcikiKQorICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoCisgICAgICAgICAgICAiY3JlYXRlIHRhYmxlIHRlc3QoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgbmFtZSB0ZXh0LCAiCisgICAgICAgICAgICAiaW5jb21lIG51bWJlciwgdW5pcXVlX3Rlc3QgdGV4dCB1bmlxdWUpIgorICAgICAgICApCiAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChuYW1lKSB2YWx1ZXMgKD8pIiwgKCJmb28iLCkpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC00NjIsNiArNDY1LDQ0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIGN1ciA9IHNxbGl0ZS5DdXJzb3IoZm9vKQogCisgICAgZGVmIENoZWNrTGFzdFJvd0lET25SZXBsYWNlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgSU5TRVJUIE9SIFJFUExBQ0UgYW5kIFJFUExBQ0UgSU5UTyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSBiZWhhdmlvci4KKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9ICd7fSBJTlRPIHRlc3QoaWQsIHVuaXF1ZV90ZXN0KSBWQUxVRVMgKD8sID8pJworICAgICAgICBmb3Igc3RhdGVtZW50IGluICgnSU5TRVJUIE9SIFJFUExBQ0UnLCAnUkVQTEFDRScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RhdGVtZW50PXN0YXRlbWVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKDEsICdmb28nKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY3UubGFzdHJvd2lkLCAxKQorCisgICAgZGVmIENoZWNrTGFzdFJvd0lET25JZ25vcmUoc2VsZik6CisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJpbnNlcnQgb3IgaWdub3JlIGludG8gdGVzdCh1bmlxdWVfdGVzdCkgdmFsdWVzICg/KSIsCisgICAgICAgICAgICAoJ3Rlc3QnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDIpCisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJpbnNlcnQgb3IgaWdub3JlIGludG8gdGVzdCh1bmlxdWVfdGVzdCkgdmFsdWVzICg/KSIsCisgICAgICAgICAgICAoJ3Rlc3QnLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDIpCisKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURJbnNlcnRPUihzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gKCdGQUlMJywgJ0FCT1JUJywgJ1JPTExCQUNLJyk6CisgICAgICAgICAgICBzcWwgPSAnSU5TRVJUIE9SIHt9IElOVE8gdGVzdCh1bmlxdWVfdGVzdCkgVkFMVUVTICg/KScKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0YXRlbWVudD0nSU5TRVJUIE9SIHt9Jy5mb3JtYXQoc3RhdGVtZW50KSk6CisgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKHN0YXRlbWVudCwpKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChzdGF0ZW1lbnQsIHNlbGYuY3UubGFzdHJvd2lkKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNxbGl0ZS5JbnRlZ3JpdHlFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZShzcWwuZm9ybWF0KHN0YXRlbWVudCksIChzdGF0ZW1lbnQsKSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgoc3RhdGVtZW50LCBzZWxmLmN1Lmxhc3Ryb3dpZCkpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCdGQUlMJywgMiksICgnRkFJTCcsIDIpLAorICAgICAgICAgICAgKCdBQk9SVCcsIDMpLCAoJ0FCT1JUJywgMyksCisgICAgICAgICAgICAoJ1JPTExCQUNLJywgNCksICgnUk9MTEJBQ0snLCA0KSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMsIGV4cGVjdGVkKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RoaXMgdGVzdCByZXF1aXJlcyB0aHJlYWRpbmcuJykKIGNsYXNzIFRocmVhZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CmluZGV4IGEyNTM2MGEuLjQ1ZjFiMDQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5CkBAIC01MiwxMyArNTIsMTMgQEAKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgQ2hlY2tETUxkb2VzQXV0b0NvbW1pdEJlZm9yZShzZWxmKToKKyAgICBkZWYgQ2hlY2tETUxEb2VzTm90QXV0b0NvbW1pdEJlZm9yZShzZWxmKToKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdDIoaikiKQogICAgICAgICBzZWxmLmN1cjIuZXhlY3V0ZSgic2VsZWN0IGkgZnJvbSB0ZXN0IikKICAgICAgICAgcmVzID0gc2VsZi5jdXIyLmZldGNoYWxsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzKSwgMCkKIAogICAgIGRlZiBDaGVja0luc2VydFN0YXJ0c1RyYW5zYWN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQpAQCAtMTUzLDExICsxNTMsNiBAQAogICAgICAgICBzZWxmLmNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAgICAgICAgIHNlbGYuY3VyID0gc2VsZi5jb24uY3Vyc29yKCkKIAotICAgIGRlZiBDaGVja1ZhY3V1bShzZWxmKToKLSAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGkpIHZhbHVlcyAoNSkiKQotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJ2YWN1dW0iKQotCiAgICAgZGVmIENoZWNrRHJvcFRhYmxlKHNlbGYpOgogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCkBAIC0xNzIsMTAgKzE2NywzNSBAQAogICAgICAgICBzZWxmLmN1ci5jbG9zZSgpCiAgICAgICAgIHNlbGYuY29uLmNsb3NlKCkKIAorY2xhc3MgVHJhbnNhY3Rpb25hbERETCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisKKyAgICBkZWYgQ2hlY2tEZGxEb2VzTm90QXV0b3N0YXJ0VHJhbnNhY3Rpb24oc2VsZik6CisgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIERETCBzdGF0ZW1lbnRzIHNob3VsZCBub3QKKyAgICAgICAgIyBpbXBsaWNpdGx5IHN0YXJ0IGEgdHJhbnNhY3Rpb24uCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKKyAgICAgICAgc2VsZi5jb24ucm9sbGJhY2soKQorICAgICAgICByZXN1bHQgPSBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgKiBmcm9tIHRlc3QiKS5mZXRjaGFsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBbXSkKKworICAgIGRlZiBDaGVja1RyYW5zYWN0aW9uYWxEREwoc2VsZik6CisgICAgICAgICMgWW91IGNhbiBhY2hpZXZlIHRyYW5zYWN0aW9uYWwgRERMIGJ5IGlzc3VpbmcgYSBCRUdJTgorICAgICAgICAjIHN0YXRlbWVudCBtYW51YWxseS4KKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiYmVnaW4iKQorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCisgICAgICAgIHNlbGYuY29uLnJvbGxiYWNrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzcWxpdGUuT3BlcmF0aW9uYWxFcnJvcik6CisgICAgICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJzZWxlY3QgKiBmcm9tIHRlc3QiKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNvbi5jbG9zZSgpCisKIGRlZiBzdWl0ZSgpOgogICAgIGRlZmF1bHRfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoVHJhbnNhY3Rpb25UZXN0cywgIkNoZWNrIikKICAgICBzcGVjaWFsX2NvbW1hbmRfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoU3BlY2lhbENvbW1hbmRUZXN0cywgIkNoZWNrIikKLSAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChkZWZhdWx0X3N1aXRlLCBzcGVjaWFsX2NvbW1hbmRfc3VpdGUpKQorICAgIGRkbF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShUcmFuc2FjdGlvbmFsRERMLCAiQ2hlY2siKQorICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGRlZmF1bHRfc3VpdGUsIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSwgZGRsX3N1aXRlKSkKIAogZGVmIHRlc3QoKToKICAgICBydW5uZXIgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcigpCmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbXBpbGUucHkgYi9MaWIvc3JlX2NvbXBpbGUucHkKaW5kZXggNTAyYjA2MS4uNDIwZDgzZCAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb21waWxlLnB5CisrKyBiL0xpYi9zcmVfY29tcGlsZS5weQpAQCAtNzEsNyArNzEsOCBAQAogICAgIEFTU0VSVF9DT0RFUyA9IF9BU1NFUlRfQ09ERVMKICAgICBpZiAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFIGFuZAogICAgICAgICAgICAgbm90IChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkgYW5kCi0gICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpOgorICAgICAgICAgICAgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFIGFuZAorICAgICAgICAgICAgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKSk6CiAgICAgICAgIGZpeGVzID0gX2lnbm9yZWNhc2VfZml4ZXMKICAgICBlbHNlOgogICAgICAgICBmaXhlcyA9IE5vbmUKQEAgLTEzNywxNCArMTM4LDE1IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZW1pdChNSU5fVU5USUwpCiAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKLSAgICAgICAgICAgIGlmIGF2WzBdOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIGdyb3VwOgogICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKLSAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKQotICAgICAgICAgICAgIyBfY29tcGlsZV9pbmZvKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIGF2WzFdLCBmbGFncykKLSAgICAgICAgICAgIGlmIGF2WzBdOgorICAgICAgICAgICAgICAgIGVtaXQoKGdyb3VwLTEpKjIpCisgICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgcCwgKGZsYWdzIHwgYWRkX2ZsYWdzKSAmIH5kZWxfZmxhZ3MpCisgICAgICAgICAgICBfY29tcGlsZShjb2RlLCBwLCAoZmxhZ3MgfCBhZGRfZmxhZ3MpICYgfmRlbF9mbGFncykKKyAgICAgICAgICAgIGlmIGdyb3VwOgogICAgICAgICAgICAgICAgIGVtaXQoTUFSSykKLSAgICAgICAgICAgICAgICBlbWl0KChhdlswXS0xKSoyKzEpCisgICAgICAgICAgICAgICAgZW1pdCgoZ3JvdXAtMSkqMisxKQogICAgICAgICBlbGlmIG9wIGluIFNVQ0NFU1NfQ09ERVM6CiAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICBlbGlmIG9wIGluIEFTU0VSVF9DT0RFUzoKQEAgLTE3Miw3ICsxNzQsNyBAQAogICAgICAgICAgICAgICAgIGF2ID0gQVRfTVVMVElMSU5FLmdldChhdiwgYXYpCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IEFUX0xPQ0FMRS5nZXQoYXYsIGF2KQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfVU5JQ09ERS5nZXQoYXYsIGF2KQogICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CkBAIC0xOTMsNyArMTk1LDcgQEAKICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBhdiA9IENIX0xPQ0FMRVthdl0KLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBhdiA9IENIX1VOSUNPREVbYXZdCiAgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEdST1VQUkVGOgpAQCAtMjM3LDcgKzIzOSw3IEBACiAgICAgICAgIGVsaWYgb3AgaXMgQ0FURUdPUlk6CiAgICAgICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKICAgICAgICAgICAgICAgICBlbWl0KENIX0xPQ0FMRVthdl0pCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgZW1pdChDSF9VTklDT0RFW2F2XSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW1pdChhdikKQEAgLTQwOSw0MiArNDExLDQyIEBACiAgICAgICAgICAgICB0YWJsZVtpXSA9IGlkeCArIDEKICAgICByZXR1cm4gdGFibGUKIAotZGVmIF9jb21waWxlX2luZm8oY29kZSwgcGF0dGVybiwgZmxhZ3MpOgotICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgYW4gaW5mbyBibG9jay4gIGluIHRoZSBjdXJyZW50IHZlcnNpb24sCi0gICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKLSAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKLSAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKLSAgICBpZiBoaSA+IE1BWENPREU6Ci0gICAgICAgIGhpID0gTUFYQ09ERQotICAgIGlmIGxvID09IDA6Ci0gICAgICAgIGNvZGUuZXh0ZW5kKFtJTkZPLCA0LCAwLCBsbywgaGldKQotICAgICAgICByZXR1cm4KLSAgICAjIGxvb2sgZm9yIGEgbGl0ZXJhbCBwcmVmaXgKK2RlZiBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4pOgorICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKICAgICBwcmVmaXggPSBbXQogICAgIHByZWZpeGFwcGVuZCA9IHByZWZpeC5hcHBlbmQKLSAgICBwcmVmaXhfc2tpcCA9IDAKKyAgICBwcmVmaXhfc2tpcCA9IE5vbmUKKyAgICBmb3Igb3AsIGF2IGluIHBhdHRlcm4uZGF0YToKKyAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKKyAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKKyAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIGFkZF9mbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0U6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHByZWZpeDEsIHByZWZpeF9za2lwMSwgZ290X2FsbCA9IF9nZXRfbGl0ZXJhbF9wcmVmaXgocCkKKyAgICAgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gbGVuKHByZWZpeCkKKyAgICAgICAgICAgICAgICBlbGlmIHByZWZpeF9za2lwMSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBsZW4ocHJlZml4KSArIHByZWZpeF9za2lwMQorICAgICAgICAgICAgcHJlZml4LmV4dGVuZChwcmVmaXgxKQorICAgICAgICAgICAgaWYgbm90IGdvdF9hbGw6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHByZWZpeCwgcHJlZml4X3NraXAsIFRydWUKKyAgICByZXR1cm4gcHJlZml4LCBwcmVmaXhfc2tpcCwgRmFsc2UKKworZGVmIF9nZXRfY2hhcnNldF9wcmVmaXgocGF0dGVybik6CiAgICAgY2hhcnNldCA9IFtdICMgbm90IHVzZWQKICAgICBjaGFyc2V0YXBwZW5kID0gY2hhcnNldC5hcHBlbmQKLSAgICBpZiBub3QgKGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6Ci0gICAgICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKLSAgICAgICAgZm9yIG9wLCBhdiBpbiBwYXR0ZXJuLmRhdGE6Ci0gICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IHByZWZpeF9za2lwICsgMQotICAgICAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTiBhbmQgbGVuKGF2WzFdKSA9PSAxOgotICAgICAgICAgICAgICAgIG9wLCBhdiA9IGF2WzFdWzBdCi0gICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICMgaWYgbm8gcHJlZml4LCBsb29rIGZvciBjaGFyc2V0IHByZWZpeAotICAgICAgICBpZiBub3QgcHJlZml4IGFuZCBwYXR0ZXJuLmRhdGE6Ci0gICAgICAgICAgICBvcCwgYXYgPSBwYXR0ZXJuLmRhdGFbMF0KLSAgICAgICAgICAgIGlmIG9wIGlzIFNVQlBBVFRFUk4gYW5kIGF2WzFdOgotICAgICAgICAgICAgICAgIG9wLCBhdiA9IGF2WzFdWzBdCisgICAgaWYgcGF0dGVybi5kYXRhOgorICAgICAgICBvcCwgYXYgPSBwYXR0ZXJuLmRhdGFbMF0KKyAgICAgICAgaWYgb3AgaXMgU1VCUEFUVEVSTjoKKyAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CisgICAgICAgICAgICBpZiBwIGFuZCBub3QgKGFkZF9mbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgorICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KICAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgogICAgICAgICAgICAgICAgICAgICBjaGFyc2V0YXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgpAQCAtNDYwLDIxICs0NjIsNDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgotICAgICAgICAgICAgICAgIGMgPSBbXQotICAgICAgICAgICAgICAgIGNhcHBlbmQgPSBjLmFwcGVuZAotICAgICAgICAgICAgICAgIGZvciBwIGluIGF2WzFdOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KLSAgICAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhcHBlbmQoKG9wLCBhdikpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKKyAgICAgICAgICAgIGMgPSBbXQorICAgICAgICAgICAgY2FwcGVuZCA9IGMuYXBwZW5kCisgICAgICAgICAgICBmb3IgcCBpbiBhdlsxXToKKyAgICAgICAgICAgICAgICBpZiBub3QgcDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBvcCwgYXYgPSBwWzBdCisgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKKyAgICAgICAgICAgICAgICAgICAgY2FwcGVuZCgob3AsIGF2KSkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYwotICAgICAgICAgICAgZWxpZiBvcCBpcyBJTjoKLSAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYXYKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKKyAgICAgICAgZWxpZiBvcCBpcyBJTjoKKyAgICAgICAgICAgIGNoYXJzZXQgPSBhdgorICAgIHJldHVybiBjaGFyc2V0CisKK2RlZiBfY29tcGlsZV9pbmZvKGNvZGUsIHBhdHRlcm4sIGZsYWdzKToKKyAgICAjIGludGVybmFsOiBjb21waWxlIGFuIGluZm8gYmxvY2suICBpbiB0aGUgY3VycmVudCB2ZXJzaW9uLAorICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCisgICAgIyBwcmVmaXggb3IgYSBjaGFyYWN0ZXIgbWFwCisgICAgbG8sIGhpID0gcGF0dGVybi5nZXR3aWR0aCgpCisgICAgaWYgaGkgPiBNQVhDT0RFOgorICAgICAgICBoaSA9IE1BWENPREUKKyAgICBpZiBsbyA9PSAwOgorICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKKyAgICAgICAgcmV0dXJuCisgICAgIyBsb29rIGZvciBhIGxpdGVyYWwgcHJlZml4CisgICAgcHJlZml4ID0gW10KKyAgICBwcmVmaXhfc2tpcCA9IDAKKyAgICBjaGFyc2V0ID0gW10gIyBub3QgdXNlZAorICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKKyAgICAgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAorICAgICAgICBwcmVmaXgsIHByZWZpeF9za2lwLCBnb3RfYWxsID0gX2dldF9saXRlcmFsX3ByZWZpeChwYXR0ZXJuKQorICAgICAgICAjIGlmIG5vIHByZWZpeCwgbG9vayBmb3IgY2hhcnNldCBwcmVmaXgKKyAgICAgICAgaWYgbm90IHByZWZpeDoKKyAgICAgICAgICAgIGNoYXJzZXQgPSBfZ2V0X2NoYXJzZXRfcHJlZml4KHBhdHRlcm4pCiAjIyAgICAgaWYgcHJlZml4OgogIyMgICAgICAgICBwcmludCgiKioqIFBSRUZJWCIsIHByZWZpeCwgcHJlZml4X3NraXApCiAjIyAgICAgaWYgY2hhcnNldDoKQEAgLTQ4Nyw3ICs1MTEsNyBAQAogICAgIG1hc2sgPSAwCiAgICAgaWYgcHJlZml4OgogICAgICAgICBtYXNrID0gU1JFX0lORk9fUFJFRklYCi0gICAgICAgIGlmIGxlbihwcmVmaXgpID09IHByZWZpeF9za2lwID09IGxlbihwYXR0ZXJuLmRhdGEpOgorICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lIGFuZCBnb3RfYWxsOgogICAgICAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19MSVRFUkFMCiAgICAgZWxpZiBjaGFyc2V0OgogICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0NIQVJTRVQKQEAgLTUwMiw2ICs1MjYsOCBAQAogICAgICMgYWRkIGxpdGVyYWwgcHJlZml4CiAgICAgaWYgcHJlZml4OgogICAgICAgICBlbWl0KGxlbihwcmVmaXgpKSAjIGxlbmd0aAorICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lOgorICAgICAgICAgICAgcHJlZml4X3NraXAgPSAgbGVuKHByZWZpeCkKICAgICAgICAgZW1pdChwcmVmaXhfc2tpcCkgIyBza2lwCiAgICAgICAgIGNvZGUuZXh0ZW5kKHByZWZpeCkKICAgICAgICAgIyBnZW5lcmF0ZSBvdmVybGFwIHRhYmxlCmRpZmYgLS1naXQgYS9MaWIvc3JlX3BhcnNlLnB5IGIvTGliL3NyZV9wYXJzZS5weQppbmRleCA0ZmY1MGQxLi5hYjM3ZmQzIDEwMDY0NAotLS0gYS9MaWIvc3JlX3BhcnNlLnB5CisrKyBiL0xpYi9zcmVfcGFyc2UucHkKQEAgLTY1LDYgKzY1LDEyIEBACiAgICAgInUiOiBTUkVfRkxBR19VTklDT0RFLAogfQogCitHTE9CQUxfRkxBR1MgPSAoU1JFX0ZMQUdfQVNDSUkgfCBTUkVfRkxBR19MT0NBTEUgfCBTUkVfRkxBR19VTklDT0RFIHwKKyAgICAgICAgICAgICAgICBTUkVfRkxBR19ERUJVRyB8IFNSRV9GTEFHX1RFTVBMQVRFKQorCitjbGFzcyBWZXJib3NlKEV4Y2VwdGlvbik6CisgICAgcGFzcworCiBjbGFzcyBQYXR0ZXJuOgogICAgICMgbWFzdGVyIHBhdHRlcm4gb2JqZWN0LiAga2VlcHMgdHJhY2sgb2YgZ2xvYmFsIGF0dHJpYnV0ZXMKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC0xODQsNyArMTkwLDcgQEAKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCiAgICAgICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46Ci0gICAgICAgICAgICAgICAgaSwgaiA9IGF2WzFdLmdldHdpZHRoKCkKKyAgICAgICAgICAgICAgICBpLCBqID0gYXZbLTFdLmdldHdpZHRoKCkKICAgICAgICAgICAgICAgICBsbyA9IGxvICsgaQogICAgICAgICAgICAgICAgIGhpID0gaGkgKyBqCiAgICAgICAgICAgICBlbGlmIG9wIGluIF9SRVBFQVRDT0RFUzoKQEAgLTI3Myw2ICsyNzksOSBAQAogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICByZXN1bHQgKz0gYwogICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgQHByb3BlcnR5CisgICAgZGVmIHBvcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXggLSBsZW4oc2VsZi5uZXh0IG9yICcnKQogICAgIGRlZiB0ZWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHNlZWsoc2VsZiwgaW5kZXgpOgpAQCAtMjgyLDMzICsyOTEsNiBAQAogICAgIGRlZiBlcnJvcihzZWxmLCBtc2csIG9mZnNldD0wKToKICAgICAgICAgcmV0dXJuIGVycm9yKG1zZywgc2VsZi5zdHJpbmcsIHNlbGYudGVsbCgpIC0gb2Zmc2V0KQogCi0jIFRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBub3QgdXNlZCBpbiB0aGlzIG1vZHVsZSBhbnltb3JlLCBidXQgd2Uga2VlcAotIyB0aGVtIGhlcmUgKHdpdGggRGVwcmVjYXRpb25XYXJuaW5ncykgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgotCi1kZWYgaXNpZGVudChjaGFyKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNpZGVudCgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuICJhIiA8PSBjaGFyIDw9ICJ6IiBvciAiQSIgPD0gY2hhciA8PSAiWiIgb3IgY2hhciA9PSAiXyIKLQotZGVmIGlzZGlnaXQoY2hhcik6Ci0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgd2FybmluZ3Mud2Fybignc3JlX3BhcnNlLmlzZGlnaXQoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiAiMCIgPD0gY2hhciA8PSAiOSIKLQotZGVmIGlzbmFtZShuYW1lKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNuYW1lKCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAjIGNoZWNrIHRoYXQgZ3JvdXAgbmFtZSBpcyBhIHZhbGlkIHN0cmluZwotICAgIGlmIG5vdCBpc2lkZW50KG5hbWVbMF0pOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBmb3IgY2hhciBpbiBuYW1lWzE6XToKLSAgICAgICAgaWYgbm90IGlzaWRlbnQoY2hhcikgYW5kIG5vdCBpc2RpZ2l0KGNoYXIpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIFRydWUKLQogZGVmIF9jbGFzc19lc2NhcGUoc291cmNlLCBlc2NhcGUpOgogICAgICMgaGFuZGxlIGVzY2FwZSBjb2RlIGluc2lkZSBjaGFyYWN0ZXIgY2xhc3MKICAgICBjb2RlID0gRVNDQVBFUy5nZXQoZXNjYXBlKQpAQCAtMzUxLDkgKzMzMyw3IEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKQEAgLTQxNSwxOCArMzk1LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgICAgICBzdGF0ZS5jaGVja2xvb2tiZWhpbmRncm91cChncm91cCwgc291cmNlKQogICAgICAgICAgICAgICAgIHJldHVybiBHUk9VUFJFRiwgZ3JvdXAKLSAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLCBsZW4oZXNjYXBlKSkKKyAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgZ3JvdXAsIGxlbihlc2NhcGUpIC0gMSkKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgotICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTgpCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgcGFzcwogICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogCi1kZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBuZXN0ZWQ9VHJ1ZSk6CitkZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCB2ZXJib3NlLCBuZXN0ZWQ9VHJ1ZSk6CiAgICAgIyBwYXJzZSBhbiBhbHRlcm5hdGlvbjogYXxifGMKIAogICAgIGl0ZW1zID0gW10KQEAgLTQzNCw3ICs0MTIsNyBAQAogICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCiAgICAgc3RhcnQgPSBzb3VyY2UudGVsbCgpCiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUpKQorICAgICAgICBpdGVtc2FwcGVuZChfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkpCiAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgifCIpOgogICAgICAgICAgICAgYnJlYWsKIApAQCAtNDc2LDEwICs0NTQsMTAgQEAKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoQlJBTkNILCAoTm9uZSwgaXRlbXMpKSkKICAgICByZXR1cm4gc3VicGF0dGVybgogCi1kZWYgX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCk6Ci0gICAgaXRlbV95ZXMgPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKK2RlZiBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwLCB2ZXJib3NlKToKKyAgICBpdGVtX3llcyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKQogICAgIGlmIHNvdXJjZS5tYXRjaCgifCIpOgotICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCisgICAgICAgIGl0ZW1fbm8gPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICAgICAgaWYgc291cmNlLm5leHQgPT0gInwiOgogICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjb25kaXRpb25hbCBiYWNrcmVmIHdpdGggbW9yZSB0aGFuIHR3byBicmFuY2hlcyIpCiAgICAgZWxzZToKQEAgLTQ4OCw3ICs0NjYsNyBAQAogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChHUk9VUFJFRl9FWElTVFMsIChjb25kZ3JvdXAsIGl0ZW1feWVzLCBpdGVtX25vKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotZGVmIF9wYXJzZShzb3VyY2UsIHN0YXRlKToKK2RlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSk6CiAgICAgIyBwYXJzZSBhIHNpbXBsZSBwYXR0ZXJuCiAgICAgc3VicGF0dGVybiA9IFN1YlBhdHRlcm4oc3RhdGUpCiAKQEAgLTQ5OCw3ICs0NzYsNiBAQAogICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCiAgICAgX2xlbiA9IGxlbgogICAgIF9vcmQgPSBvcmQKLSAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCiAKICAgICB3aGlsZSBUcnVlOgogCkBAIC02NTIsNiArNjI5LDggQEAKICAgICAgICAgICAgIGdyb3VwID0gVHJ1ZQogICAgICAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICAgICAgIGNvbmRncm91cCA9IE5vbmUKKyAgICAgICAgICAgIGFkZF9mbGFncyA9IDAKKyAgICAgICAgICAgIGRlbF9mbGFncyA9IDAKICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCI/Iik6CiAgICAgICAgICAgICAgICAgIyBvcHRpb25zCiAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCkBAIC03MTMsNyArNjkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmdyb3VwcwotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQorICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBpZiBkaXIgPCAwOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBOb25lCkBAIC03NDYsMjIgKzcyNSwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGdyb3VwIG51bWJlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjb25kbmFtZSkgKyAxKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgY29uZGdyb3VwID49IE1BWEdST1VQUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGNvbmRncm91cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjb25kbmFtZSkgKyAxKQogICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jaGVja2xvb2tiZWhpbmRncm91cChjb25kZ3JvdXAsIHNvdXJjZSkKLSAgICAgICAgICAgICAgICBlbGlmIGNoYXIgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluIEZMQUdTIG9yIGNoYXIgPT0gIi0iOgogICAgICAgICAgICAgICAgICAgICAjIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5mbGFncyB8PSBGTEFHU1tjaGFyXQotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICkiKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciA9PSAiKSI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBmbGFnIiwgbGVuKGNoYXIpKQotICAgICAgICAgICAgICAgICAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHBvcyA9IHNvdXJjZS5wb3MKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfcGFyc2VfZmxhZ3Moc291cmNlLCBzdGF0ZSwgY2hhcikKKyAgICAgICAgICAgICAgICAgICAgaWYgZmxhZ3MgaXMgTm9uZTogICMgZ2xvYmFsIGZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwb3MgIT0gMzogICMgIig/eCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmxhZ3Mgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiAlcyVzJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5zdHJpbmdbOjIwXSwgICMgdHJ1bmNhdGUgbG9uZyByZWdleGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICh0cnVuY2F0ZWQpJyBpZiBsZW4oc291cmNlLnN0cmluZykgPiAyMCBlbHNlICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGFkZF9mbGFncywgZGVsX2ZsYWdzID0gZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBOb25lCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGV4dGVuc2lvbiA/IiArIGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY2hhcikgKyAxKQpAQCAtNzczLDE1ICs3NTYsMTcgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZXJyOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoZXJyLm1zZywgbGVuKG5hbWUpICsgMSkgZnJvbSBOb25lCiAgICAgICAgICAgICBpZiBjb25kZ3JvdXA6Ci0gICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXApCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXAsIHZlcmJvc2UpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUpCisgICAgICAgICAgICAgICAgc3ViX3ZlcmJvc2UgPSAoKHZlcmJvc2Ugb3IgKGFkZF9mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgKGRlbF9mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpKQorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIHN1Yl92ZXJib3NlKQogICAgICAgICAgICAgaWYgbm90IHNvdXJjZS5tYXRjaCgiKSIpOgogICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS50ZWxsKCkgLSBzdGFydCkKICAgICAgICAgICAgIGlmIGdyb3VwIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN0YXRlLmNsb3NlZ3JvdXAoZ3JvdXAsIHApCi0gICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChTVUJQQVRURVJOLCAoZ3JvdXAsIHApKSkKKyAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKFNVQlBBVFRFUk4sIChncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHApKSkKIAogICAgICAgICBlbGlmIHRoaXMgPT0gIl4iOgogICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoQVQsIEFUX0JFR0lOTklORykpCkBAIC03OTQsMTQgKzc3OSw1OCBAQAogCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAorZGVmIF9wYXJzZV9mbGFncyhzb3VyY2UsIHN0YXRlLCBjaGFyKToKKyAgICBzb3VyY2VnZXQgPSBzb3VyY2UuZ2V0CisgICAgYWRkX2ZsYWdzID0gMAorICAgIGRlbF9mbGFncyA9IDAKKyAgICBpZiBjaGFyICE9ICItIjoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGFkZF9mbGFncyB8PSBGTEFHU1tjaGFyXQorICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nIC0sIDogb3IgKSIpCisgICAgICAgICAgICBpZiBjaGFyIGluICIpLToiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIC0sIDogb3IgKSIKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY2hhcikpCisgICAgaWYgY2hhciA9PSAiKSI6CisgICAgICAgIGlmICgoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkgYW5kCisgICAgICAgICAgICBub3QgKHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpOgorICAgICAgICAgICAgcmFpc2UgVmVyYm9zZQorICAgICAgICBzdGF0ZS5mbGFncyB8PSBhZGRfZmxhZ3MKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBpZiBhZGRfZmxhZ3MgJiBHTE9CQUxfRkxBR1M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb24gZ2xvYmFsIGZsYWciLCAxKQorICAgIGlmIGNoYXIgPT0gIi0iOgorICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nIGZsYWciKQorICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKKyAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGZsYWciIGlmIGNoYXIuaXNhbHBoYSgpIGVsc2UgIm1pc3NpbmcgZmxhZyIKKyAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGRlbF9mbGFncyB8PSBGTEFHU1tjaGFyXQorICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nIDoiKQorICAgICAgICAgICAgaWYgY2hhciA9PSAiOiI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGZsYWciIGlmIGNoYXIuaXNhbHBoYSgpIGVsc2UgIm1pc3NpbmcgOiIKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY2hhcikpCisgICAgYXNzZXJ0IGNoYXIgPT0gIjoiCisgICAgaWYgZGVsX2ZsYWdzICYgR0xPQkFMX0ZMQUdTOgorICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9mZiBnbG9iYWwgZmxhZyIsIDEpCisgICAgaWYgYWRkX2ZsYWdzICYgZGVsX2ZsYWdzOgorICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBpbmxpbmUgZmxhZ3M6IGZsYWcgdHVybmVkIG9uIGFuZCBvZmYiLCAxKQorICAgIHJldHVybiBhZGRfZmxhZ3MsIGRlbF9mbGFncworCiBkZWYgZml4X2ZsYWdzKHNyYywgZmxhZ3MpOgogICAgICMgQ2hlY2sgYW5kIGZpeCBmbGFncyBhY2NvcmRpbmcgdG8gdGhlIHR5cGUgb2YgcGF0dGVybiAoc3RyIG9yIGJ5dGVzKQogICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgogICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRToKLSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIGlzIGRlcHJlY2F0ZWQuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgdXNlIExPQ0FMRSBmbGFnIHdpdGggYSBzdHIgcGF0dGVybiIpCiAgICAgICAgIGlmIG5vdCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgogICAgICAgICAgICAgZmxhZ3MgfD0gU1JFX0ZMQUdfVU5JQ09ERQogICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKQEAgLTgxMCwxMCArODM5LDcgQEAKICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHVzZSBVTklDT0RFIGZsYWcgd2l0aCBhIGJ5dGVzIHBhdHRlcm4iKQogICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSBhbmQgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKLSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQVNDSUkgYW5kIExPQ0FMRSBmbGFncyBhcmUgaW5jb21wYXRpYmxlLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQVNDSUkgYW5kIExPQ0FMRSBmbGFncyBhcmUgaW5jb21wYXRpYmxlIikKICAgICByZXR1cm4gZmxhZ3MKIAogZGVmIHBhcnNlKHN0ciwgZmxhZ3M9MCwgcGF0dGVybj1Ob25lKToKQEAgLTgyNiwxOCArODUyLDIzIEBACiAgICAgcGF0dGVybi5mbGFncyA9IGZsYWdzCiAgICAgcGF0dGVybi5zdHIgPSBzdHIKIAotICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgMCkKKyAgICB0cnk6CisgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFLCBGYWxzZSkKKyAgICBleGNlcHQgVmVyYm9zZToKKyAgICAgICAgIyB0aGUgVkVSQk9TRSBmbGFnIHdhcyBzd2l0Y2hlZCBvbiBpbnNpZGUgdGhlIHBhdHRlcm4uICB0byBiZQorICAgICAgICAjIG9uIHRoZSBzYWZlIHNpZGUsIHdlJ2xsIHBhcnNlIHRoZSB3aG9sZSB0aGluZyBhZ2Fpbi4uLgorICAgICAgICBwYXR0ZXJuID0gUGF0dGVybigpCisgICAgICAgIHBhdHRlcm4uZmxhZ3MgPSBmbGFncyB8IFNSRV9GTEFHX1ZFUkJPU0UKKyAgICAgICAgcGF0dGVybi5zdHIgPSBzdHIKKyAgICAgICAgc291cmNlLnNlZWsoMCkKKyAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCBUcnVlLCBGYWxzZSkKKwogICAgIHAucGF0dGVybi5mbGFncyA9IGZpeF9mbGFncyhzdHIsIHAucGF0dGVybi5mbGFncykKIAogICAgIGlmIHNvdXJjZS5uZXh0IGlzIG5vdCBOb25lOgogICAgICAgICBhc3NlcnQgc291cmNlLm5leHQgPT0gIikiCiAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5iYWxhbmNlZCBwYXJlbnRoZXNpcyIpCiAKLSAgICBpZiBub3QgKGZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkgYW5kIHAucGF0dGVybi5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0U6Ci0gICAgICAgICMgdGhlIFZFUkJPU0UgZmxhZyB3YXMgc3dpdGNoZWQgb24gaW5zaWRlIHRoZSBwYXR0ZXJuLiAgdG8gYmUKLSAgICAgICAgIyBvbiB0aGUgc2FmZSBzaWRlLCB3ZSdsbCBwYXJzZSB0aGUgd2hvbGUgdGhpbmcgYWdhaW4uLi4KLSAgICAgICAgcmV0dXJuIHBhcnNlKHN0ciwgcC5wYXR0ZXJuLmZsYWdzKQotCiAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19ERUJVRzoKICAgICAgICAgcC5kdW1wKCkKIApAQCAtODUyLDcgKzg4Myw5IEBACiAgICAgbGl0ZXJhbHMgPSBbXQogICAgIGxpdGVyYWwgPSBbXQogICAgIGxhcHBlbmQgPSBsaXRlcmFsLmFwcGVuZAotICAgIGRlZiBhZGRncm91cChpbmRleCk6CisgICAgZGVmIGFkZGdyb3VwKGluZGV4LCBwb3MpOgorICAgICAgICBpZiBpbmRleCA+IHBhdHRlcm4uZ3JvdXBzOgorICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgaW5kZXgsIHBvcykKICAgICAgICAgaWYgbGl0ZXJhbDoKICAgICAgICAgICAgIGxpdGVyYWxzLmFwcGVuZCgnJy5qb2luKGxpdGVyYWwpKQogICAgICAgICAgICAgZGVsIGxpdGVyYWxbOl0KQEAgLTg4NSw5ICs5MTgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICVyIiAlIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihuYW1lKSArIDEpIGZyb20gTm9uZQogICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA+PSBNQVhHUk9VUFM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIsCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkKLSAgICAgICAgICAgICAgICBhZGRncm91cChpbmRleCkKKyAgICAgICAgICAgICAgICBhZGRncm91cChpbmRleCwgbGVuKG5hbWUpICsgMSkKICAgICAgICAgICAgIGVsaWYgYyA9PSAiMCI6CiAgICAgICAgICAgICAgICAgaWYgcy5uZXh0IGluIE9DVERJR0lUUzoKICAgICAgICAgICAgICAgICAgICAgdGhpcyArPSBzZ2V0KCkKQEAgLTkwOCwxNSArOTQxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZ2UgMC0wbzM3NycgJSB0aGlzLCBsZW4odGhpcykpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYXBwZW5kKGNocihjKSkKICAgICAgICAgICAgICAgICBpZiBub3QgaXNvY3RhbDoKLSAgICAgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW50KHRoaXNbMTpdKSkKKyAgICAgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW50KHRoaXNbMTpdKSwgbGVuKHRoaXMpIC0gMSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0aGlzID0gY2hyKEVTQ0FQRVNbdGhpc11bMV0pCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywgbGVuKHRoaXMpKQogICAgICAgICAgICAgICAgIGxhcHBlbmQodGhpcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxhcHBlbmQodGhpcykKQEAgLTkzNyw1ICs5NjgsNSBAQAogICAgICAgICBmb3IgaW5kZXgsIGdyb3VwIGluIGdyb3VwczoKICAgICAgICAgICAgIGxpdGVyYWxzW2luZGV4XSA9IGcoZ3JvdXApIG9yIGVtcHR5CiAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgIHJhaXNlIGVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIpCisgICAgICAgIHJhaXNlIGVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBpbmRleCkKICAgICByZXR1cm4gZW1wdHkuam9pbihsaXRlcmFscykKZGlmZiAtLWdpdCBhL0xpYi9zc2wucHkgYi9MaWIvc3NsLnB5CmluZGV4IGUxOTEzOTAuLjhhZDRhMzMgMTAwNjQ0Ci0tLSBhL0xpYi9zc2wucHkKKysrIGIvTGliL3NzbC5weQpAQCAtNTIsNiArNTIsOCBAQAogUFJPVE9DT0xfU1NMdjMKIFBST1RPQ09MX1NTTHYyMwogUFJPVE9DT0xfVExTCitQUk9UT0NPTF9UTFNfQ0xJRU5UCitQUk9UT0NPTF9UTFNfU0VSVkVSCiBQUk9UT0NPTF9UTFN2MQogUFJPVE9DT0xfVExTdjFfMQogUFJPVE9DT0xfVExTdjFfMgpAQCAtOTQsMTcgKzk2LDE2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKLWZyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bQorZnJvbSBlbnVtIGltcG9ydCBFbnVtIGFzIF9FbnVtLCBJbnRFbnVtIGFzIF9JbnRFbnVtLCBJbnRGbGFnIGFzIF9JbnRGbGFnCiAKIGltcG9ydCBfc3NsICAgICAgICAgICAgICMgaWYgd2UgY2FuJ3QgaW1wb3J0IGl0LCBsZXQgdGhlIGVycm9yIHByb3BhZ2F0ZQogCiBmcm9tIF9zc2wgaW1wb3J0IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIsIE9QRU5TU0xfVkVSU0lPTl9JTkZPLCBPUEVOU1NMX1ZFUlNJT04KLWZyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIE1lbW9yeUJJTworZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgTWVtb3J5QklPLCBTU0xTZXNzaW9uCiBmcm9tIF9zc2wgaW1wb3J0ICgKICAgICBTU0xFcnJvciwgU1NMWmVyb1JldHVybkVycm9yLCBTU0xXYW50UmVhZEVycm9yLCBTU0xXYW50V3JpdGVFcnJvciwKICAgICBTU0xTeXNjYWxsRXJyb3IsIFNTTEVPRkVycm9yLAogICAgICkKLWZyb20gX3NzbCBpbXBvcnQgQ0VSVF9OT05FLCBDRVJUX09QVElPTkFMLCBDRVJUX1JFUVVJUkVECiBmcm9tIF9zc2wgaW1wb3J0IHR4dDJvYmogYXMgX3R4dDJvYmosIG5pZDJvYmogYXMgX25pZDJvYmoKIGZyb20gX3NzbCBpbXBvcnQgUkFORF9zdGF0dXMsIFJBTkRfYWRkLCBSQU5EX2J5dGVzLCBSQU5EX3BzZXVkb19ieXRlcwogdHJ5OgpAQCAtMTEzLDMyICsxMTQsNDcgQEAKICAgICAjIExpYnJlU1NMIGRvZXMgbm90IHByb3ZpZGUgUkFORF9lZ2QKICAgICBwYXNzCiAKLWRlZiBfaW1wb3J0X3N5bWJvbHMocHJlZml4KToKLSAgICBmb3IgbiBpbiBkaXIoX3NzbCk6Ci0gICAgICAgIGlmIG4uc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgZ2xvYmFscygpW25dID0gZ2V0YXR0cihfc3NsLCBuKQotCi1faW1wb3J0X3N5bWJvbHMoJ09QXycpCi1faW1wb3J0X3N5bWJvbHMoJ0FMRVJUX0RFU0NSSVBUSU9OXycpCi1faW1wb3J0X3N5bWJvbHMoJ1NTTF9FUlJPUl8nKQotX2ltcG9ydF9zeW1ib2xzKCdWRVJJRllfJykKIAogZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JLCBIQVNfRUNESCwgSEFTX05QTiwgSEFTX0FMUE4KLQogZnJvbSBfc3NsIGltcG9ydCBfT1BFTlNTTF9BUElfVkVSU0lPTgogCisKIF9JbnRFbnVtLl9jb252ZXJ0KAotICAgICAgICAnX1NTTE1ldGhvZCcsIF9fbmFtZV9fLAotICAgICAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKSBhbmQgbmFtZSAhPSAnUFJPVE9DT0xfU1NMdjIzJywKLSAgICAgICAgc291cmNlPV9zc2wpCisgICAgJ19TU0xNZXRob2QnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKSBhbmQgbmFtZSAhPSAnUFJPVE9DT0xfU1NMdjIzJywKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEZsYWcuX2NvbnZlcnQoCisgICAgJ09wdGlvbnMnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdPUF8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgJ0FsZXJ0RGVzY3JpcHRpb24nLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdBTEVSVF9ERVNDUklQVElPTl8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgJ1NTTEVycm9yTnVtYmVyJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnU1NMX0VSUk9SXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RmxhZy5fY29udmVydCgKKyAgICAnVmVyaWZ5RmxhZ3MnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdWRVJJRllfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdWZXJpZnlNb2RlJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnQ0VSVF8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKwogCiBQUk9UT0NPTF9TU0x2MjMgPSBfU1NMTWV0aG9kLlBST1RPQ09MX1NTTHYyMyA9IF9TU0xNZXRob2QuUFJPVE9DT0xfVExTCiBfUFJPVE9DT0xfTkFNRVMgPSB7dmFsdWU6IG5hbWUgZm9yIG5hbWUsIHZhbHVlIGluIF9TU0xNZXRob2QuX19tZW1iZXJzX18uaXRlbXMoKX0KIAotdHJ5OgotICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBQUk9UT0NPTF9TU0x2MgotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBfU1NMdjJfSUZfRVhJU1RTID0gTm9uZQorX1NTTHYyX0lGX0VYSVNUUyA9IGdldGF0dHIoX1NTTE1ldGhvZCwgJ1BST1RPQ09MX1NTTHYyJywgTm9uZSkKKwogCiBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICBmcm9tIF9zc2wgaW1wb3J0IGVudW1fY2VydGlmaWNhdGVzLCBlbnVtX2NybHMKQEAgLTM3NywxOCArMzkzLDE4IEBACiAgICAgZGVmIHdyYXBfc29ja2V0KHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICByZXR1cm4gU1NMU29ja2V0KHNvY2s9c29jaywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9ZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9c3VwcHJlc3NfcmFnZ2VkX2VvZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmKQorICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0PXNlbGYsIF9zZXNzaW9uPXNlc3Npb24pCiAKICAgICBkZWYgd3JhcF9iaW8oc2VsZiwgaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1GYWxzZSwKLSAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgc3Nsb2JqID0gc2VsZi5fd3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSkKLSAgICAgICAgcmV0dXJuIFNTTE9iamVjdChzc2xvYmopCisgICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqLCBzZXNzaW9uPXNlc3Npb24pCiAKICAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CiAgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCkBAIC00MzQsNiArNDUwLDM0IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzKHN0b3JlbmFtZSwgcHVycG9zZSkKICAgICAgICAgc2VsZi5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG9wdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBPcHRpb25zKHN1cGVyKCkub3B0aW9ucykKKworICAgIEBvcHRpb25zLnNldHRlcgorICAgIGRlZiBvcHRpb25zKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkub3B0aW9ucy5fX3NldF9fKHNlbGYsIHZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcmlmeV9mbGFncyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFZlcmlmeUZsYWdzKHN1cGVyKCkudmVyaWZ5X2ZsYWdzKQorCisgICAgQHZlcmlmeV9mbGFncy5zZXR0ZXIKKyAgICBkZWYgdmVyaWZ5X2ZsYWdzKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkudmVyaWZ5X2ZsYWdzLl9fc2V0X18oc2VsZiwgdmFsdWUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyaWZ5X21vZGUoc2VsZik6CisgICAgICAgIHZhbHVlID0gc3VwZXIoKS52ZXJpZnlfbW9kZQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gVmVyaWZ5TW9kZSh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIEB2ZXJpZnlfbW9kZS5zZXR0ZXIKKyAgICBkZWYgdmVyaWZ5X21vZGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzdXBlcihTU0xDb250ZXh0LCBTU0xDb250ZXh0KS52ZXJpZnlfbW9kZS5fX3NldF9fKHNlbGYsIHZhbHVlKQorCiAKIGRlZiBjcmVhdGVfZGVmYXVsdF9jb250ZXh0KHB1cnBvc2U9UHVycG9zZS5TRVJWRVJfQVVUSCwgKiwgY2FmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBhdGg9Tm9uZSwgY2FkYXRhPU5vbmUpOgpAQCAtNDQ2LDMyICs0OTAsMTYgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShwdXJwb3NlLCBfQVNOMU9iamVjdCk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihwdXJwb3NlKQogCisgICAgIyBTU0xDb250ZXh0IHNldHMgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAjIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRSBhbmQgT1BfU0lOR0xFX0VDREhfVVNFCisgICAgIyBieSBkZWZhdWx0LgogICAgIGNvbnRleHQgPSBTU0xDb250ZXh0KFBST1RPQ09MX1RMUykKIAotICAgICMgU1NMdjIgY29uc2lkZXJlZCBoYXJtZnVsLgotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MgotCi0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MwotCi0gICAgIyBkaXNhYmxlIGNvbXByZXNzaW9uIHRvIHByZXZlbnQgQ1JJTUUgYXR0YWNrcyAoT3BlblNTTCAxLjArKQotICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCi0KICAgICBpZiBwdXJwb3NlID09IFB1cnBvc2UuU0VSVkVSX0FVVEg6CiAgICAgICAgICMgdmVyaWZ5IGNlcnRzIGFuZCBob3N0IG5hbWUgaW4gY2xpZW50IG1vZGUKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IENFUlRfUkVRVUlSRUQKICAgICAgICAgY29udGV4dC5jaGVja19ob3N0bmFtZSA9IFRydWUKICAgICBlbGlmIHB1cnBvc2UgPT0gUHVycG9zZS5DTElFTlRfQVVUSDoKLSAgICAgICAgIyBQcmVmZXIgdGhlIHNlcnZlcidzIGNpcGhlcnMgYnkgZGVmYXVsdCBzbyB0aGF0IHdlIGdldCBzdHJvbmdlcgotICAgICAgICAjIGVuY3J5cHRpb24KLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCi0KLSAgICAgICAgIyBVc2Ugc2luZ2xlIHVzZSBrZXlzIGluIG9yZGVyIHRvIGltcHJvdmUgZm9yd2FyZCBzZWNyZWN5Ci0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApCi0KLSAgICAgICAgIyBkaXNhbGxvdyBjaXBoZXJzIHdpdGgga25vd24gdnVsbmVyYWJpbGl0aWVzCiAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoX1JFU1RSSUNURURfU0VSVkVSX0NJUEhFUlMpCiAKICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGF0YToKQEAgLTQ5NywxMiArNTI1LDEwIEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKIAorICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICMgYnkgZGVmYXVsdC4KICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChwcm90b2NvbCkKLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKLSAgICAjIFNTTHYzIGhhcyBwcm9ibGVtYXRpYyBzZWN1cml0eSBhbmQgaXMgb25seSByZXF1aXJlZCBmb3IgcmVhbGx5IG9sZAotICAgICMgY2xpZW50cyBzdWNoIGFzIElFNiBvbiBXaW5kb3dzIFhQCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYzCiAKICAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKQEAgLTU0OCwxMCArNTc0LDEyIEBACiAgICAgICogVGhlIGBgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3RgYCBhbmQgYGBzdXBwcmVzc19yYWdnZWRfZW9mc2BgIG1hY2hpbmVyeS4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHNlbGYuX3NzbG9iaiA9IHNzbG9iagogICAgICAgICAjIE5vdGU6IF9zc2xvYmogdGFrZXMgYSB3ZWFrIHJlZmVyZW5jZSB0byBvd25lcgogICAgICAgICBzZWxmLl9zc2xvYmoub3duZXIgPSBvd25lciBvciBzZWxmCisgICAgICAgIGlmIHNlc3Npb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjb250ZXh0KHNlbGYpOgpAQCAtNTYzLDYgKzU5MSwyMCBAQAogICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAogCiAgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb24oc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xTZXNzaW9uIGZvciBjbGllbnQgc29ja2V0LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb24KKworICAgIEBzZXNzaW9uLnNldHRlcgorICAgIGRlZiBzZXNzaW9uKHNlbGYsIHNlc3Npb24pOgorICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uX3JldXNlZChzZWxmKToKKyAgICAgICAgIiIiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb25fcmV1c2VkCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgc2VydmVyX3NpZGUoc2VsZik6CiAgICAgICAgICIiIldoZXRoZXIgdGhpcyBpcyBhIHNlcnZlci1zaWRlIHNvY2tldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXJ2ZXJfc2lkZQpAQCAtNjc5LDcgKzcyMSw3IEBACiAgICAgICAgICAgICAgICAgIGZhbWlseT1BRl9JTkVULCB0eXBlPVNPQ0tfU1RSRUFNLCBwcm90bz0wLCBmaWxlbm89Tm9uZSwKICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAotICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSwgX3Nlc3Npb249Tm9uZSk6CiAKICAgICAgICAgaWYgX2NvbnRleHQ6CiAgICAgICAgICAgICBzZWxmLl9jb250ZXh0ID0gX2NvbnRleHQKQEAgLTcxMSwxMSArNzUzLDE2IEBACiAgICAgICAgICMgbWl4ZWQgaW4uCiAgICAgICAgIGlmIHNvY2suZ2V0c29ja29wdChTT0xfU09DS0VULCBTT19UWVBFKSAhPSBTT0NLX1NUUkVBTToKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIm9ubHkgc3RyZWFtIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCi0gICAgICAgIGlmIHNlcnZlcl9zaWRlIGFuZCBzZXJ2ZXJfaG9zdG5hbWU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXJ2ZXJfaG9zdG5hbWUgY2FuIG9ubHkgYmUgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNsaWVudCBtb2RlIikKKyAgICAgICAgaWYgc2VydmVyX3NpZGU6CisgICAgICAgICAgICBpZiBzZXJ2ZXJfaG9zdG5hbWU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX2hvc3RuYW1lIGNhbiBvbmx5IGJlIHNwZWNpZmllZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gY2xpZW50IG1vZGUiKQorICAgICAgICAgICAgaWYgX3Nlc3Npb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2Vzc2lvbiBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBtb2RlIikKICAgICAgICAgaWYgc2VsZi5fY29udGV4dC5jaGVja19ob3N0bmFtZSBhbmQgbm90IHNlcnZlcl9ob3N0bmFtZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNoZWNrX2hvc3RuYW1lIHJlcXVpcmVzIHNlcnZlcl9ob3N0bmFtZSIpCisgICAgICAgIHNlbGYuX3Nlc3Npb24gPSBfc2Vzc2lvbgogICAgICAgICBzZWxmLnNlcnZlcl9zaWRlID0gc2VydmVyX3NpZGUKICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUgPSBzZXJ2ZXJfaG9zdG5hbWUKICAgICAgICAgc2VsZi5kb19oYW5kc2hha2Vfb25fY29ubmVjdCA9IGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0CkBAIC03NTEsNyArNzk4LDggQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzc2xvYmogPSBzZWxmLl9jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBzZXJ2ZXJfc2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlbGYuX3Nlc3Npb24pCiAgICAgICAgICAgICAgICAgaWYgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q6CiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQogICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDAuMDoKQEAgLTc3Miw2ICs4MjAsMjQgQEAKICAgICAgICAgc2VsZi5fY29udGV4dCA9IGN0eAogICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb24oc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xTZXNzaW9uIGZvciBjbGllbnQgc29ja2V0LiIiIgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb24KKworICAgIEBzZXNzaW9uLnNldHRlcgorICAgIGRlZiBzZXNzaW9uKHNlbGYsIHNlc3Npb24pOgorICAgICAgICBzZWxmLl9zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uX3JldXNlZChzZWxmKToKKyAgICAgICAgIiIiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZSIiIgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb25fcmV1c2VkCisKICAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZCgiQ2FuJ3QgZHVwKCkgJXMgaW5zdGFuY2VzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQpAQCAtODk4LDcgKzk2NCw2IEBACiAgICAgICAgICAgICB3aGlsZSAoY291bnQgPCBhbW91bnQpOgogICAgICAgICAgICAgICAgIHYgPSBzZWxmLnNlbmQoZGF0YVtjb3VudDpdKQogICAgICAgICAgICAgICAgIGNvdW50ICs9IHYKLSAgICAgICAgICAgIHJldHVybiBhbW91bnQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuc2VuZGFsbChzZWxmLCBkYXRhLCBmbGFncykKIApAQCAtMTAwNSw3ICsxMDcwLDggQEAKICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdCB0byBjb25uZWN0IGFscmVhZHktY29ubmVjdGVkIFNTTFNvY2tldCEiKQogICAgICAgICBzc2xvYmogPSBzZWxmLmNvbnRleHQuX3dyYXBfc29ja2V0KHNlbGYsIEZhbHNlLCBzZWxmLnNlcnZlcl9ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZikKKyAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb249c2VsZi5fc2Vzc2lvbikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgY29ubmVjdF9leDoKICAgICAgICAgICAgICAgICByYyA9IHNvY2tldC5jb25uZWN0X2V4KHNlbGYsIGFkZHIpCkBAIC0xMDY4LDcgKzExMzQsNiBAQAogICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsCiAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUpOgotCiAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIGtleWZpbGU9a2V5ZmlsZSwgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwgY2VydF9yZXFzPWNlcnRfcmVxcywKICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbF92ZXJzaW9uLCBjYV9jZXJ0cz1jYV9jZXJ0cywKZGlmZiAtLWdpdCBhL0xpYi9zdGF0aXN0aWNzLnB5IGIvTGliL3N0YXRpc3RpY3MucHkKaW5kZXggNGY1YzFjMS4uMzBmZTU1YyAxMDA2NDQKLS0tIGEvTGliL3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3N0YXRpc3RpY3MucHkKQEAgLTEsMjAgKzEsMyBAQAotIyMgIE1vZHVsZSBzdGF0aXN0aWNzLnB5Ci0jIwotIyMgIENvcHlyaWdodCAoYykgMjAxMyBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPi4KLSMjCi0jIyAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotIyMgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIyMKLSMjICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMjCi0jIyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyMgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIyAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyMgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0KICIiIgogQmFzaWMgc3RhdGlzdGljcyBtb2R1bGUuCiAKQEAgLTI4LDYgKzExLDcgQEAKIEZ1bmN0aW9uICAgICAgICAgICAgRGVzY3JpcHRpb24KID09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBtZWFuICAgICAgICAgICAgICAgIEFyaXRobWV0aWMgbWVhbiAoYXZlcmFnZSkgb2YgZGF0YS4KK2hhcm1vbmljX21lYW4gICAgICAgSGFybW9uaWMgbWVhbiBvZiBkYXRhLgogbWVkaWFuICAgICAgICAgICAgICBNZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgZGF0YS4KIG1lZGlhbl9sb3cgICAgICAgICAgTG93IG1lZGlhbiBvZiBkYXRhLgogbWVkaWFuX2hpZ2ggICAgICAgICBIaWdoIG1lZGlhbiBvZiBkYXRhLgpAQCAtOTUsMTYgKzc5LDE4IEBACiBfX2FsbF9fID0gWyAnU3RhdGlzdGljc0Vycm9yJywKICAgICAgICAgICAgICdwc3RkZXYnLCAncHZhcmlhbmNlJywgJ3N0ZGV2JywgJ3ZhcmlhbmNlJywKICAgICAgICAgICAgICdtZWRpYW4nLCAgJ21lZGlhbl9sb3cnLCAnbWVkaWFuX2hpZ2gnLCAnbWVkaWFuX2dyb3VwZWQnLAotICAgICAgICAgICAgJ21lYW4nLCAnbW9kZScsCisgICAgICAgICAgICAnbWVhbicsICdtb2RlJywgJ2hhcm1vbmljX21lYW4nLAogICAgICAgICAgIF0KIAotCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgbWF0aAoraW1wb3J0IG51bWJlcnMKIAogZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBncm91cGJ5Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieSwgY2hhaW4KK2Zyb20gYmlzZWN0IGltcG9ydCBiaXNlY3RfbGVmdCwgYmlzZWN0X3JpZ2h0CiAKIAogCkBAIC0xMzQsNyArMTIwLDggQEAKIAogICAgIFNvbWUgc291cmNlcyBvZiByb3VuZC1vZmYgZXJyb3Igd2lsbCBiZSBhdm9pZGVkOgogCi0gICAgPj4+IF9zdW0oWzFlNTAsIDEsIC0xZTUwXSAqIDEwMDApICAjIEJ1aWx0LWluIHN1bSByZXR1cm5zIHplcm8uCisgICAgIyBCdWlsdC1pbiBzdW0gcmV0dXJucyB6ZXJvLgorICAgID4+PiBfc3VtKFsxZTUwLCAxLCAtMWU1MF0gKiAxMDAwKQogICAgICg8Y2xhc3MgJ2Zsb2F0Jz4sIEZyYWN0aW9uKDEwMDAsIDEpLCAzMDAwKQogCiAgICAgRnJhY3Rpb25zIGFuZCBEZWNpbWFscyBhcmUgYWxzbyBzdXBwb3J0ZWQ6CkBAIC0yMjMsNTYgKzIxMCwyNiBAQAogICAgICAgICAjIE9wdGltaXNlIHRoZSBjb21tb24gY2FzZSBvZiBmbG9hdHMuIFdlIGV4cGVjdCB0aGF0IHRoZSBtb3N0IG9mdGVuCiAgICAgICAgICMgdXNlZCBudW1lcmljIHR5cGUgd2lsbCBiZSBidWlsdGluIGZsb2F0cywgc28gdHJ5IHRvIG1ha2UgdGhpcyBhcwogICAgICAgICAjIGZhc3QgYXMgcG9zc2libGUuCi0gICAgICAgIGlmIHR5cGUoeCkgaXMgZmxvYXQ6CisgICAgICAgIGlmIHR5cGUoeCkgaXMgZmxvYXQgb3IgdHlwZSh4KSBpcyBEZWNpbWFsOgogICAgICAgICAgICAgcmV0dXJuIHguYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgeCBtYXkgYmUgYW4gaW50LCBGcmFjdGlvbiwgb3IgSW50ZWdyYWwgQUJDLgogICAgICAgICAgICAgcmV0dXJuICh4Lm51bWVyYXRvciwgeC5kZW5vbWluYXRvcikKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgeCBtYXkgYmUgYSBmbG9hdCBzdWJjbGFzcy4KKyAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgZmxvYXQgb3IgRGVjaW1hbCBzdWJjbGFzcy4KICAgICAgICAgICAgICAgICByZXR1cm4geC5hc19pbnRlZ2VyX3JhdGlvKCkKICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgeCBtYXkgYmUgYSBEZWNpbWFsLgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2RlY2ltYWxfdG9fcmF0aW8oeCkKLSAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgSnVzdCBnaXZlIHVwPwotICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgIyBKdXN0IGdpdmUgdXA/CisgICAgICAgICAgICAgICAgcGFzcwogICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICMgZmxvYXQgTkFOIG9yIElORi4KLSAgICAgICAgYXNzZXJ0IG5vdCBtYXRoLmlzZmluaXRlKHgpCisgICAgICAgIGFzc2VydCBub3QgX2lzZmluaXRlKHgpCiAgICAgICAgIHJldHVybiAoeCwgTm9uZSkKICAgICBtc2cgPSAiY2FuJ3QgY29udmVydCB0eXBlICd7fScgdG8gbnVtZXJhdG9yL2Rlbm9taW5hdG9yIgogICAgIHJhaXNlIFR5cGVFcnJvcihtc2cuZm9ybWF0KHR5cGUoeCkuX19uYW1lX18pKQogCiAKLSMgRklYTUUgVGhpcyBpcyBmYXN0ZXIgdGhhbiBGcmFjdGlvbi5mcm9tX2RlY2ltYWwsIGJ1dCBzdGlsbCB0b28gc2xvdy4KLWRlZiBfZGVjaW1hbF90b19yYXRpbyhkKToKLSAgICAiIiJDb252ZXJ0IERlY2ltYWwgZCB0byBleGFjdCBpbnRlZ2VyIHJhdGlvIChudW1lcmF0b3IsIGRlbm9taW5hdG9yKS4KLQotICAgID4+PiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKLSAgICA+Pj4gX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMi42IikpCi0gICAgKDI2LCAxMCkKLQotICAgICIiIgotICAgIHNpZ24sIGRpZ2l0cywgZXhwID0gZC5hc190dXBsZSgpCi0gICAgaWYgZXhwIGluICgnRicsICduJywgJ04nKTogICMgSU5GLCBOQU4sIHNOQU4KLSAgICAgICAgYXNzZXJ0IG5vdCBkLmlzX2Zpbml0ZSgpCi0gICAgICAgIHJldHVybiAoZCwgTm9uZSkKLSAgICBudW0gPSAwCi0gICAgZm9yIGRpZ2l0IGluIGRpZ2l0czoKLSAgICAgICAgbnVtID0gbnVtKjEwICsgZGlnaXQKLSAgICBpZiBleHAgPCAwOgotICAgICAgICBkZW4gPSAxMCoqLWV4cAotICAgIGVsc2U6Ci0gICAgICAgIG51bSAqPSAxMCoqZXhwCi0gICAgICAgIGRlbiA9IDEKLSAgICBpZiBzaWduOgotICAgICAgICBudW0gPSAtbnVtCi0gICAgcmV0dXJuIChudW0sIGRlbikKLQotCiBkZWYgX2NvbnZlcnQodmFsdWUsIFQpOgogICAgICIiIkNvbnZlcnQgdmFsdWUgdG8gZ2l2ZW4gbnVtZXJpYyB0eXBlIFQuIiIiCiAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgVDoKQEAgLTMwNSw2ICsyNjIsMzAgQEAKICAgICByZXR1cm4gdGFibGUKIAogCitkZWYgX2ZpbmRfbHRlcShhLCB4KToKKyAgICAnTG9jYXRlIHRoZSBsZWZ0bW9zdCB2YWx1ZSBleGFjdGx5IGVxdWFsIHRvIHgnCisgICAgaSA9IGJpc2VjdF9sZWZ0KGEsIHgpCisgICAgaWYgaSAhPSBsZW4oYSkgYW5kIGFbaV0gPT0geDoKKyAgICAgICAgcmV0dXJuIGkKKyAgICByYWlzZSBWYWx1ZUVycm9yCisKKworZGVmIF9maW5kX3J0ZXEoYSwgbCwgeCk6CisgICAgJ0xvY2F0ZSB0aGUgcmlnaHRtb3N0IHZhbHVlIGV4YWN0bHkgZXF1YWwgdG8geCcKKyAgICBpID0gYmlzZWN0X3JpZ2h0KGEsIHgsIGxvPWwpCisgICAgaWYgaSAhPSAobGVuKGEpKzEpIGFuZCBhW2ktMV0gPT0geDoKKyAgICAgICAgcmV0dXJuIGktMQorICAgIHJhaXNlIFZhbHVlRXJyb3IKKworCitkZWYgX2ZhaWxfbmVnKHZhbHVlcywgZXJybXNnPSduZWdhdGl2ZSB2YWx1ZScpOgorICAgICIiIkl0ZXJhdGUgb3ZlciB2YWx1ZXMsIGZhaWxpbmcgaWYgYW55IGFyZSBsZXNzIHRoYW4gemVyby4iIiIKKyAgICBmb3IgeCBpbiB2YWx1ZXM6CisgICAgICAgIGlmIHggPCAwOgorICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKGVycm1zZykKKyAgICAgICAgeWllbGQgeAorCisKICMgPT09IE1lYXN1cmVzIG9mIGNlbnRyYWwgdGVuZGVuY3kgKGF2ZXJhZ2VzKSA9PT0KIAogZGVmIG1lYW4oZGF0YSk6CkBAIC0zMzMsNiArMzE0LDUyIEBACiAgICAgcmV0dXJuIF9jb252ZXJ0KHRvdGFsL24sIFQpCiAKIAorZGVmIGhhcm1vbmljX21lYW4oZGF0YSk6CisgICAgIiIiUmV0dXJuIHRoZSBoYXJtb25pYyBtZWFuIG9mIGRhdGEuCisKKyAgICBUaGUgaGFybW9uaWMgbWVhbiwgc29tZXRpbWVzIGNhbGxlZCB0aGUgc3ViY29udHJhcnkgbWVhbiwgaXMgdGhlCisgICAgcmVjaXByb2NhbCBvZiB0aGUgYXJpdGhtZXRpYyBtZWFuIG9mIHRoZSByZWNpcHJvY2FscyBvZiB0aGUgZGF0YSwKKyAgICBhbmQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgd2hlbiBhdmVyYWdpbmcgcXVhbnRpdGllcyB3aGljaCBhcmUgcmF0ZXMKKyAgICBvciByYXRpb3MsIGZvciBleGFtcGxlIHNwZWVkcy4gRXhhbXBsZToKKworICAgIFN1cHBvc2UgYW4gaW52ZXN0b3IgcHVyY2hhc2VzIGFuIGVxdWFsIHZhbHVlIG9mIHNoYXJlcyBpbiBlYWNoIG9mCisgICAgdGhyZWUgY29tcGFuaWVzLCB3aXRoIFAvRSAocHJpY2UvZWFybmluZykgcmF0aW9zIG9mIDIuNSwgMyBhbmQgMTAuCisgICAgV2hhdCBpcyB0aGUgYXZlcmFnZSBQL0UgcmF0aW8gZm9yIHRoZSBpbnZlc3RvcidzIHBvcnRmb2xpbz8KKworICAgID4+PiBoYXJtb25pY19tZWFuKFsyLjUsIDMsIDEwXSkgICMgRm9yIGFuIGVxdWFsIGludmVzdG1lbnQgcG9ydGZvbGlvLgorICAgIDMuNgorCisgICAgVXNpbmcgdGhlIGFyaXRobWV0aWMgbWVhbiB3b3VsZCBnaXZlIGFuIGF2ZXJhZ2Ugb2YgYWJvdXQgNS4xNjcsIHdoaWNoCisgICAgaXMgdG9vIGhpZ2guCisKKyAgICBJZiBgYGRhdGFgYCBpcyBlbXB0eSwgb3IgYW55IGVsZW1lbnQgaXMgbGVzcyB0aGFuIHplcm8sCisgICAgYGBoYXJtb25pY19tZWFuYGAgd2lsbCByYWlzZSBgYFN0YXRpc3RpY3NFcnJvcmBgLgorICAgICIiIgorICAgICMgRm9yIGEganVzdGlmaWNhdGlvbiBmb3IgdXNpbmcgaGFybW9uaWMgbWVhbiBmb3IgUC9FIHJhdGlvcywgc2VlCisgICAgIyBodHRwOi8vZml4dGhlcGl0Y2gucGVsbHVjaWQuY29tL2NvbXBzLWFuYWx5c2lzLXRoZS1taXNzaW5nLWhhcm1vbnktb2Ytc3VtbWFyeS1zdGF0aXN0aWNzLworICAgICMgaHR0cDovL3BhcGVycy5zc3JuLmNvbS9zb2wzL3BhcGVycy5jZm0/YWJzdHJhY3RfaWQ9MjYyMTA4NworICAgIGlmIGl0ZXIoZGF0YSkgaXMgZGF0YToKKyAgICAgICAgZGF0YSA9IGxpc3QoZGF0YSkKKyAgICBlcnJtc2cgPSAnaGFybW9uaWMgbWVhbiBkb2VzIG5vdCBzdXBwb3J0IG5lZ2F0aXZlIHZhbHVlcycKKyAgICBuID0gbGVuKGRhdGEpCisgICAgaWYgbiA8IDE6CisgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcignaGFybW9uaWNfbWVhbiByZXF1aXJlcyBhdCBsZWFzdCBvbmUgZGF0YSBwb2ludCcpCisgICAgZWxpZiBuID09IDE6CisgICAgICAgIHggPSBkYXRhWzBdCisgICAgICAgIGlmIGlzaW5zdGFuY2UoeCwgKG51bWJlcnMuUmVhbCwgRGVjaW1hbCkpOgorICAgICAgICAgICAgaWYgeCA8IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKGVycm1zZykKKyAgICAgICAgICAgIHJldHVybiB4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3Vuc3VwcG9ydGVkIHR5cGUnKQorICAgIHRyeToKKyAgICAgICAgVCwgdG90YWwsIGNvdW50ID0gX3N1bSgxL3ggZm9yIHggaW4gX2ZhaWxfbmVnKGRhdGEsIGVycm1zZykpCisgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICByZXR1cm4gMAorICAgIGFzc2VydCBjb3VudCA9PSBuCisgICAgcmV0dXJuIF9jb252ZXJ0KG4vdG90YWwsIFQpCisKKwogIyBGSVhNRTogaW52ZXN0aWdhdGUgd2F5cyB0byBjYWxjdWxhdGUgbWVkaWFucyB3aXRob3V0IHNvcnRpbmc/IFF1aWNrc2VsZWN0PwogZGVmIG1lZGlhbihkYXRhKToKICAgICAiIiJSZXR1cm4gdGhlIG1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBudW1lcmljIGRhdGEuCkBAIC00NDIsOSArNDY5LDE1IEBACiAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgIyBNaXhlZCB0eXBlLiBGb3Igbm93IHdlIGp1c3QgY29lcmNlIHRvIGZsb2F0LgogICAgICAgICBMID0gZmxvYXQoeCkgLSBmbG9hdChpbnRlcnZhbCkvMgotICAgIGNmID0gZGF0YS5pbmRleCh4KSAgIyBOdW1iZXIgb2YgdmFsdWVzIGJlbG93IHRoZSBtZWRpYW4gaW50ZXJ2YWwuCi0gICAgIyBGSVhNRSBUaGUgZm9sbG93aW5nIGxpbmUgY291bGQgYmUgbW9yZSBlZmZpY2llbnQgZm9yIGJpZyBsaXN0cy4KLSAgICBmID0gZGF0YS5jb3VudCh4KSAgIyBOdW1iZXIgb2YgZGF0YSBwb2ludHMgaW4gdGhlIG1lZGlhbiBpbnRlcnZhbC4KKworICAgICMgVXNlcyBiaXNlY3Rpb24gc2VhcmNoIHRvIHNlYXJjaCBmb3IgeCBpbiBkYXRhIHdpdGggbG9nKG4pIHRpbWUgY29tcGxleGl0eQorICAgICMgRmluZCB0aGUgcG9zaXRpb24gb2YgbGVmdG1vc3Qgb2NjdXJyZW5jZSBvZiB4IGluIGRhdGEKKyAgICBsMSA9IF9maW5kX2x0ZXEoZGF0YSwgeCkKKyAgICAjIEZpbmQgdGhlIHBvc2l0aW9uIG9mIHJpZ2h0bW9zdCBvY2N1cnJlbmNlIG9mIHggaW4gZGF0YVtsMS4uLmxlbihkYXRhKV0KKyAgICAjIEFzc3VtaW5nIGFsd2F5cyBsMSA8PSBsMgorICAgIGwyID0gX2ZpbmRfcnRlcShkYXRhLCBsMSwgeCkKKyAgICBjZiA9IGwxCisgICAgZiA9IGwyIC0gbDEgKyAxCiAgICAgcmV0dXJuIEwgKyBpbnRlcnZhbCoobi8yIC0gY2YpL2YKIAogCmRpZmYgLS1naXQgYS9MaWIvc3RyaW5nLnB5IGIvTGliL3N0cmluZy5weQppbmRleCA4OTI4N2M0Li5jOTAyMDA3IDEwMDY0NAotLS0gYS9MaWIvc3RyaW5nLnB5CisrKyBiL0xpYi9zdHJpbmcucHkKQEAgLTI4LDcgKzI4LDcgQEAKIGRpZ2l0cyA9ICcwMTIzNDU2Nzg5JwogaGV4ZGlnaXRzID0gZGlnaXRzICsgJ2FiY2RlZicgKyAnQUJDREVGJwogb2N0ZGlnaXRzID0gJzAxMjM0NTY3JwotcHVuY3R1YXRpb24gPSAiIiIhIiMkJSYnKCkqKywtLi86Ozw9Pj9AW1xdXl9ge3x9fiIiIgorcHVuY3R1YXRpb24gPSByIiIiISIjJCUmJygpKissLS4vOjs8PT4/QFtcXV5fYHt8fX4iIiIKIHByaW50YWJsZSA9IGRpZ2l0cyArIGFzY2lpX2xldHRlcnMgKyBwdW5jdHVhdGlvbiArIHdoaXRlc3BhY2UKIAogIyBGdW5jdGlvbnMgd2hpY2ggYXJlbid0IGF2YWlsYWJsZSBhcyBzdHJpbmcgbWV0aG9kcy4KQEAgLTExNiwxMCArMTE2LDcgQEAKICAgICAgICAgICAgICMgQ2hlY2sgdGhlIG1vc3QgY29tbW9uIHBhdGggZmlyc3QuCiAgICAgICAgICAgICBuYW1lZCA9IG1vLmdyb3VwKCduYW1lZCcpIG9yIG1vLmdyb3VwKCdicmFjZWQnKQogICAgICAgICAgICAgaWYgbmFtZWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgdmFsID0gbWFwcGluZ1tuYW1lZF0KLSAgICAgICAgICAgICAgICAjIFdlIHVzZSB0aGlzIGlkaW9tIGluc3RlYWQgb2Ygc3RyKCkgYmVjYXVzZSB0aGUgbGF0dGVyIHdpbGwKLSAgICAgICAgICAgICAgICAjIGZhaWwgaWYgdmFsIGlzIGEgVW5pY29kZSBjb250YWluaW5nIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLgotICAgICAgICAgICAgICAgIHJldHVybiAnJXMnICUgKHZhbCwpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdlc2NhcGVkJykgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVsaW1pdGVyCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnaW52YWxpZCcpIGlzIG5vdCBOb25lOgpAQCAtMTQ2LDkgKzE0Myw3IEBACiAgICAgICAgICAgICBuYW1lZCA9IG1vLmdyb3VwKCduYW1lZCcpIG9yIG1vLmdyb3VwKCdicmFjZWQnKQogICAgICAgICAgICAgaWYgbmFtZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIFdlIHVzZSB0aGlzIGlkaW9tIGluc3RlYWQgb2Ygc3RyKCkgYmVjYXVzZSB0aGUgbGF0dGVyCi0gICAgICAgICAgICAgICAgICAgICMgd2lsbCBmYWlsIGlmIHZhbCBpcyBhIFVuaWNvZGUgY29udGFpbmluZyBub24tQVNDSUkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICclcycgJSAobWFwcGluZ1tuYW1lZF0sKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKG1hcHBpbmdbbmFtZWRdKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1vLmdyb3VwKCkKICAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdlc2NhcGVkJykgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvc3VicHJvY2Vzcy5weSBiL0xpYi9zdWJwcm9jZXNzLnB5CmluZGV4IGQ4ZDZhYjIuLjlkZjkzMTggMTAwNjQ0Ci0tLSBhL0xpYi9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi9zdWJwcm9jZXNzLnB5CkBAIC0zMCw3ICszMCw4IEBACiAgICAgICAgICAgICBwcmVleGVjX2ZuPU5vbmUsIGNsb3NlX2Zkcz1UcnVlLCBzaGVsbD1GYWxzZSwKICAgICAgICAgICAgIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLAogICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wLAotICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzPVRydWUsIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSk6CisgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHM9VHJ1ZSwgc3RhcnRfbmV3X3Nlc3Npb249RmFsc2UsIHBhc3NfZmRzPSgpLAorICAgICAgICAgICAgKiwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogCiAKIEFyZ3VtZW50cyBhcmU6CkBAIC0xMDQsMjAgKzEwNSwxMyBAQAogSWYgZW52IGlzIG5vdCBOb25lLCBpdCBkZWZpbmVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRoZSBuZXcKIHByb2Nlc3MuCiAKLUlmIHVuaXZlcnNhbF9uZXdsaW5lcyBpcyBGYWxzZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIKLWFyZSBvcGVuZWQgYXMgYmluYXJ5IGZpbGVzLCBhbmQgbm8gbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBkb25lLgorSWYgZW5jb2Rpbmcgb3IgZXJyb3JzIGFyZSBzcGVjaWZpZWQgb3IgdW5pdmVyc2FsX25ld2xpbmVzIGlzIFRydWUsIHRoZSBmaWxlCitvYmplY3RzIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlLiBTZWUgaW8uVGV4dElPV3JhcHBlciBmb3IKK3RoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFyZSB1c2VkLgogCi1JZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgVHJ1ZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUKLW9wZW5lZCBhcyBhIHRleHQgZmlsZSwgYnV0IGxpbmVzIG1heSBiZSB0ZXJtaW5hdGVkIGJ5IGFueSBvZiAnXG4nLAotdGhlIFVuaXggZW5kLW9mLWxpbmUgY29udmVudGlvbiwgJ1xyJywgdGhlIG9sZCBNYWNpbnRvc2ggY29udmVudGlvbiBvcgotJ1xyXG4nLCB0aGUgV2luZG93cyBjb252ZW50aW9uLiAgQWxsIG9mIHRoZXNlIGV4dGVybmFsIHJlcHJlc2VudGF0aW9ucwotYXJlIHNlZW4gYXMgJ1xuJyBieSB0aGUgUHl0aG9uIHByb2dyYW0uICBBbHNvLCB0aGUgbmV3bGluZXMgYXR0cmlidXRlCi1vZiB0aGUgZmlsZSBvYmplY3RzIHN0ZG91dCwgc3RkaW4gYW5kIHN0ZGVyciBhcmUgbm90IHVwZGF0ZWQgYnkgdGhlCi1jb21tdW5pY2F0ZSgpIG1ldGhvZC4KLQotSW4gZWl0aGVyIGNhc2UsIHRoZSBwcm9jZXNzIGJlaW5nIGNvbW11bmljYXRlZCB3aXRoIHNob3VsZCBzdGFydCB1cAotZXhwZWN0aW5nIHRvIHJlY2VpdmUgYnl0ZXMgb24gaXRzIHN0YW5kYXJkIGlucHV0IGFuZCBkZWNvZGUgdGhlbSB3aXRoCi10aGUgc2FtZSBlbmNvZGluZyB0aGV5IGFyZSBzZW50IGluLgorSWYgbm8gZW5jb2RpbmcgaXMgc3BlY2lmaWVkIGFuZCB1bml2ZXJzYWxfbmV3bGluZXMgaXMgRmFsc2UsIHRoZSBmaWxlCitvYmplY3RzIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgb3BlbmVkIGFzIGJpbmFyeSBmaWxlcywgYW5kIG5vCitsaW5lIGVuZGluZyBjb252ZXJzaW9uIGlzIGRvbmUuCiAKIFRoZSBzdGFydHVwaW5mbyBhbmQgY3JlYXRpb25mbGFncywgaWYgZ2l2ZW4sIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogdW5kZXJseWluZyBDcmVhdGVQcm9jZXNzKCkgZnVuY3Rpb24uICBUaGV5IGNhbiBzcGVjaWZ5IHRoaW5ncyBzdWNoIGFzCkBAIC0yMzQsMTEgKzIyOCw4IEBACiAgICAgYW5kIHN0ZGVyciwgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8KICAgICB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUKICAgICBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvCi0gICAgdGhlIGNoaWxkLiBJZiB0aGUgUG9wZW4gaW5zdGFuY2Ugd2FzIGNvbnN0cnVjdGVkIHdpdGggdW5pdmVyc2FsX25ld2xpbmVzCi0gICAgc2V0IHRvIFRydWUsIHRoZSBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmcgYW5kIHdpbGwgYmUgZW5jb2RlZAotICAgIHVzaW5nIHRoZSBwcmVmZXJyZWQgc3lzdGVtIGVuY29kaW5nIChzZWUgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKTsKLSAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgRmFsc2UsIHRoZSBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgIGJ5dGUgc3RyaW5nLgorICAgIHRoZSBjaGlsZC4gSWYgdGhlIFBvcGVuIGluc3RhbmNlIHdhcyBjb25zdHJ1Y3RlZCBpbiB0ZXh0IG1vZGUsIHRoZQorICAgIGlucHV0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZy4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYnl0ZXMuCiAKICAgICBjb21tdW5pY2F0ZSgpIHJldHVybnMgYSB0dXBsZSAoc3Rkb3V0LCBzdGRlcnIpLgogCkBAIC0zNzIsOSArMzYzLDExIEBACiAKIAogY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKFN1YnByb2Nlc3NFcnJvcik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBwcm9jZXNzIHJ1biBieSBjaGVja19jYWxsKCkgb3IKLSAgICBjaGVja19vdXRwdXQoKSByZXR1cm5zIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuCi0gICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZTsKKyAgICAiIiJSYWlzZWQgd2hlbiBhIGNoZWNrX2NhbGwoKSBvciBjaGVja19vdXRwdXQoKSBwcm9jZXNzIHJldHVybnMgbm9uLXplcm8uCisKKyAgICBUaGUgZXhpdCBzdGF0dXMgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLCBuZWdhdGl2ZQorICAgIGlmIGl0IHJlcHJlc2VudHMgYSBzaWduYWwgbnVtYmVyLgorCiAgICAgY2hlY2tfb3V0cHV0KCkgd2lsbCBhbHNvIHN0b3JlIHRoZSBvdXRwdXQgaW4gdGhlIG91dHB1dCBhdHRyaWJ1dGUuCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJldHVybmNvZGUsIGNtZCwgb3V0cHV0PU5vbmUsIHN0ZGVycj1Ob25lKToKQEAgLTM4NCw3ICszNzcsMTYgQEAKICAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZCIgJSAoc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGFuZCBzZWxmLnJldHVybmNvZGUgPCAwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIGRpZWQgd2l0aCAlci4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIHNpZ25hbC5TaWduYWxzKC1zZWxmLnJldHVybmNvZGUpKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgZGllZCB3aXRoIHVua25vd24gc2lnbmFsICVkLiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgLXNlbGYucmV0dXJuY29kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkLiIgJSAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgc3Rkb3V0KHNlbGYpOgpAQCAtNDcxLDcgKzQ3Myw4IEBACiAgICAgX19hbGxfXy5leHRlbmQoWyJDUkVBVEVfTkVXX0NPTlNPTEUiLCAiQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9JTlBVVF9IQU5ETEUiLCAiU1REX09VVFBVVF9IQU5ETEUiLAogICAgICAgICAgICAgICAgICAgICAiU1REX0VSUk9SX0hBTkRMRSIsICJTV19ISURFIiwKLSAgICAgICAgICAgICAgICAgICAgIlNUQVJURl9VU0VTVERIQU5ETEVTIiwgIlNUQVJURl9VU0VTSE9XV0lORE9XIl0pCisgICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyIsCisgICAgICAgICAgICAgICAgICAgICJTVEFSVFVQSU5GTyJdKQogCiAgICAgY2xhc3MgSGFuZGxlKGludCk6CiAgICAgICAgIGNsb3NlZCA9IEZhbHNlCkBAIC01MjAsNiArNTIzLDE2IEBACiAjIGJ1dCBpdCdzIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgaW1wb3J0ZWQgd2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dAogIyB0aHJlYWRzLgogCitkZWYgX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIG9wdGltaXphdGlvbiBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCisgICAgYXJncyA9IFtdCisgICAgdmFsdWUgPSBzeXMuZmxhZ3Mub3B0aW1pemUKKyAgICBpZiB2YWx1ZSA+IDA6CisgICAgICAgIGFyZ3MuYXBwZW5kKCctJyArICdPJyAqIHZhbHVlKQorICAgIHJldHVybiBhcmdzCisKKwogZGVmIF9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKICAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MgYW5kIHN5cy53YXJub3B0aW9ucy4iIiIKQEAgLTUyNyw3ICs1NDAsNiBAQAogICAgICAgICAnZGVidWcnOiAnZCcsCiAgICAgICAgICMgJ2luc3BlY3QnOiAnaScsCiAgICAgICAgICMgJ2ludGVyYWN0aXZlJzogJ2knLAotICAgICAgICAnb3B0aW1pemUnOiAnTycsCiAgICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAogICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAogICAgICAgICAnbm9fc2l0ZSc6ICdTJywKQEAgLTUzNSw4ICs1NDcsOSBAQAogICAgICAgICAndmVyYm9zZSc6ICd2JywKICAgICAgICAgJ2J5dGVzX3dhcm5pbmcnOiAnYicsCiAgICAgICAgICdxdWlldCc6ICdxJywKKyAgICAgICAgIyAtTyBpcyBoYW5kbGVkIGluIF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgIH0KLSAgICBhcmdzID0gW10KKyAgICBhcmdzID0gX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAgICAgZm9yIGZsYWcsIG9wdCBpbiBmbGFnX29wdF9tYXAuaXRlbXMoKToKICAgICAgICAgdiA9IGdldGF0dHIoc3lzLmZsYWdzLCBmbGFnKQogICAgICAgICBpZiB2ID4gMDoKQEAgLTc4Niw4ICs3OTksOCBAQAogICAgICIiIiAgICBSZXR1cm4gKHN0YXR1cywgb3V0cHV0KSBvZiBleGVjdXRpbmcgY21kIGluIGEgc2hlbGwuCiAKICAgICBFeGVjdXRlIHRoZSBzdHJpbmcgJ2NtZCcgaW4gYSBzaGVsbCB3aXRoICdjaGVja19vdXRwdXQnIGFuZAotICAgIHJldHVybiBhIDItdHVwbGUgKHN0YXR1cywgb3V0cHV0KS4gVW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMgdXNlZCwKLSAgICBtZWFuaW5nIHRoYXQgdGhlIHJlc3VsdCB3aXRoIGJlIGRlY29kZWQgdG8gYSBzdHJpbmcuCisgICAgcmV0dXJuIGEgMi10dXBsZSAoc3RhdHVzLCBvdXRwdXQpLiBUaGUgbG9jYWxlIGVuY29kaW5nIGlzIHVzZWQKKyAgICB0byBkZWNvZGUgdGhlIG91dHB1dCBhbmQgcHJvY2VzcyBuZXdsaW5lcy4KIAogICAgIEEgdHJhaWxpbmcgbmV3bGluZSBpcyBzdHJpcHBlZCBmcm9tIHRoZSBvdXRwdXQuCiAgICAgVGhlIGV4aXQgc3RhdHVzIGZvciB0aGUgY29tbWFuZCBjYW4gYmUgaW50ZXJwcmV0ZWQKQEAgLTgzNyw3ICs4NTAsNyBAQAogICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgY3dkPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsCiAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvPU5vbmUsIGNyZWF0aW9uZmxhZ3M9MCwKICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzPVRydWUsIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLAotICAgICAgICAgICAgICAgICBwYXNzX2Zkcz0oKSk6CisgICAgICAgICAgICAgICAgIHBhc3NfZmRzPSgpLCAqLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSk6CiAgICAgICAgICIiIkNyZWF0ZSBuZXcgUG9wZW4gaW5zdGFuY2UuIiIiCiAgICAgICAgIF9jbGVhbnVwKCkKICAgICAgICAgIyBIZWxkIHdoaWxlIGFueXRoaW5nIGlzIGNhbGxpbmcgd2FpdHBpZCBiZWZvcmUgcmV0dXJuY29kZSBoYXMgYmVlbgpAQCAtODkwLDYgKzkwMyw4IEBACiAgICAgICAgIHNlbGYucGlkID0gTm9uZQogICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCiAgICAgICAgIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzID0gdW5pdmVyc2FsX25ld2xpbmVzCisgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZworICAgICAgICBzZWxmLmVycm9ycyA9IGVycm9ycwogCiAgICAgICAgICMgSW5wdXQgYW5kIG91dHB1dCBvYmplY3RzLiBUaGUgZ2VuZXJhbCBwcmluY2lwbGUgaXMgbGlrZQogICAgICAgICAjIHRoaXM6CkBAIC05MjIsMjIgKzkzNywyOCBAQAogICAgICAgICAgICAgaWYgZXJycmVhZCAhPSAtMToKICAgICAgICAgICAgICAgICBlcnJyZWFkID0gbXN2Y3J0Lm9wZW5fb3NmaGFuZGxlKGVycnJlYWQuRGV0YWNoKCksIDApCiAKLSAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6Ci0gICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKLSAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGluLCB3cml0ZV90aHJvdWdoPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9KGJ1ZnNpemUgPT0gMSkpCi0gICAgICAgIGlmIGMycHJlYWQgIT0gLTE6Ci0gICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLm9wZW4oYzJwcmVhZCwgJ3JiJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKLSAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRvdXQpCi0gICAgICAgIGlmIGVycnJlYWQgIT0gLTE6Ci0gICAgICAgICAgICBzZWxmLnN0ZGVyciA9IGlvLm9wZW4oZXJycmVhZCwgJ3JiJywgYnVmc2l6ZSkKLSAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKLSAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyciA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRlcnIpCisgICAgICAgIHRleHRfbW9kZSA9IGVuY29kaW5nIG9yIGVycm9ycyBvciB1bml2ZXJzYWxfbmV3bGluZXMKIAogICAgICAgICBzZWxmLl9jbG9zZWRfY2hpbGRfcGlwZV9mZHMgPSBGYWxzZQorCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5vcGVuKHAyY3dyaXRlLCAnd2InLCBidWZzaXplKQorICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRpbiwgd3JpdGVfdGhyb3VnaD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPShidWZzaXplID09IDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQorICAgICAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLm9wZW4oYzJwcmVhZCwgJ3JiJywgYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiB0ZXh0X21vZGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKKyAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5vcGVuKGVycnJlYWQsICdyYicsIGJ1ZnNpemUpCisgICAgICAgICAgICAgICAgaWYgdGV4dF9tb2RlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyciA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisKICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfY2hpbGQoYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKQEAgLTk3MSw5ICs5OTIsOCBAQAogCiAgICAgICAgICAgICByYWlzZQogCi0KLSAgICBkZWYgX3RyYW5zbGF0ZV9uZXdsaW5lcyhzZWxmLCBkYXRhLCBlbmNvZGluZyk6Ci0gICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZShlbmNvZGluZykKKyAgICBkZWYgX3RyYW5zbGF0ZV9uZXdsaW5lcyhzZWxmLCBkYXRhLCBlbmNvZGluZywgZXJyb3JzKToKKyAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgIHJldHVybiBkYXRhLnJlcGxhY2UoIlxyXG4iLCAiXG4iKS5yZXBsYWNlKCJcciIsICJcbiIpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpAQCAtOTk1LDYgKzEwMTUsMTEgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX2NoaWxkX2NyZWF0ZWQ6CiAgICAgICAgICAgICAjIFdlIGRpZG4ndCBnZXQgdG8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBhIGNoaWxkIHByb2Nlc3MuCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAjIE5vdCByZWFkaW5nIHN1YnByb2Nlc3MgZXhpdCBzdGF0dXMgY3JlYXRlcyBhIHpvbWJpIHByb2Nlc3Mgd2hpY2gKKyAgICAgICAgICAgICMgaXMgb25seSBkZXN0cm95ZWQgYXQgdGhlIHBhcmVudCBweXRob24gcHJvY2VzcyBleGl0CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJzdWJwcm9jZXNzICVzIGlzIHN0aWxsIHJ1bm5pbmciICUgc2VsZi5waWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlV2FybmluZywgc291cmNlPXNlbGYpCiAgICAgICAgICMgSW4gY2FzZSB0aGUgY2hpbGQgaGFzbid0IGJlZW4gd2FpdGVkIG9uLCBjaGVjayBpZiBpdCdzIGRvbmUuCiAgICAgICAgIHNlbGYuX2ludGVybmFsX3BvbGwoX2RlYWRzdGF0ZT1fbWF4c2l6ZSkKICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmUgYW5kIF9hY3RpdmUgaXMgbm90IE5vbmU6CkBAIC0xNTIwLDkgKzE1NDUsMTQgQEAKIAogICAgICAgICAgICAgaWYgZXJycGlwZV9kYXRhOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBvcy53YWl0cGlkKHNlbGYucGlkLCAwKQorICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBzeXMubWF4c2l6ZQogICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25fbmFtZSwgaGV4X2Vycm5vLCBlcnJfbXNnID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfZGF0YS5zcGxpdChiJzonLCAyKSkKQEAgLTE3NDgsMTMgKzE3NzgsMTUgQEAKIAogICAgICAgICAgICAgIyBUcmFuc2xhdGUgbmV3bGluZXMsIGlmIHJlcXVlc3RlZC4KICAgICAgICAgICAgICMgVGhpcyBhbHNvIHR1cm5zIGJ5dGVzIGludG8gc3RyaW5ncy4KLSAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzOgorICAgICAgICAgICAgaWYgc2VsZi5lbmNvZGluZyBvciBzZWxmLmVycm9ycyBvciBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKICAgICAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3RyYW5zbGF0ZV9uZXdsaW5lcyhzdGRvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZXJyb3JzKQogICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lcnJvcnMpCiAKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKQEAgLTE3NjYsOCArMTc5OCwxMCBAQAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgc2VsZi5faW5wdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgPSAwCiAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBpbnB1dAotICAgICAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzIGFuZCBpbnB1dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLl9pbnB1dC5lbmNvZGUoc2VsZi5zdGRpbi5lbmNvZGluZykKKyAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZSBhbmQgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmVuY29kaW5nIG9yIHNlbGYuZXJyb3JzIG9yIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLl9pbnB1dC5lbmNvZGUoc2VsZi5zdGRpbi5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5lcnJvcnMpCiAKIAogICAgICAgICBkZWYgc2VuZF9zaWduYWwoc2VsZiwgc2lnKToKZGlmZiAtLWdpdCBhL0xpYi9zeW1ib2wucHkgYi9MaWIvc3ltYm9sLnB5CmluZGV4IDc1NDE0OTcuLmQ5ZjAxZTAgMTAwNzU1Ci0tLSBhL0xpYi9zeW1ib2wucHkKKysrIGIvTGliL3N5bWJvbC5weQpAQCAtMjcsNzQgKzI3LDc1IEBACiBzaW1wbGVfc3RtdCA9IDI3MAogc21hbGxfc3RtdCA9IDI3MQogZXhwcl9zdG10ID0gMjcyCi10ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzMKLWF1Z2Fzc2lnbiA9IDI3NAotZGVsX3N0bXQgPSAyNzUKLXBhc3Nfc3RtdCA9IDI3NgotZmxvd19zdG10ID0gMjc3Ci1icmVha19zdG10ID0gMjc4Ci1jb250aW51ZV9zdG10ID0gMjc5Ci1yZXR1cm5fc3RtdCA9IDI4MAoteWllbGRfc3RtdCA9IDI4MQotcmFpc2Vfc3RtdCA9IDI4MgotaW1wb3J0X3N0bXQgPSAyODMKLWltcG9ydF9uYW1lID0gMjg0Ci1pbXBvcnRfZnJvbSA9IDI4NQotaW1wb3J0X2FzX25hbWUgPSAyODYKLWRvdHRlZF9hc19uYW1lID0gMjg3Ci1pbXBvcnRfYXNfbmFtZXMgPSAyODgKLWRvdHRlZF9hc19uYW1lcyA9IDI4OQotZG90dGVkX25hbWUgPSAyOTAKLWdsb2JhbF9zdG10ID0gMjkxCi1ub25sb2NhbF9zdG10ID0gMjkyCi1hc3NlcnRfc3RtdCA9IDI5MwotY29tcG91bmRfc3RtdCA9IDI5NAotYXN5bmNfc3RtdCA9IDI5NQotaWZfc3RtdCA9IDI5Ngotd2hpbGVfc3RtdCA9IDI5NwotZm9yX3N0bXQgPSAyOTgKLXRyeV9zdG10ID0gMjk5Ci13aXRoX3N0bXQgPSAzMDAKLXdpdGhfaXRlbSA9IDMwMQotZXhjZXB0X2NsYXVzZSA9IDMwMgotc3VpdGUgPSAzMDMKLXRlc3QgPSAzMDQKLXRlc3Rfbm9jb25kID0gMzA1Ci1sYW1iZGVmID0gMzA2Ci1sYW1iZGVmX25vY29uZCA9IDMwNwotb3JfdGVzdCA9IDMwOAotYW5kX3Rlc3QgPSAzMDkKLW5vdF90ZXN0ID0gMzEwCi1jb21wYXJpc29uID0gMzExCi1jb21wX29wID0gMzEyCi1zdGFyX2V4cHIgPSAzMTMKLWV4cHIgPSAzMTQKLXhvcl9leHByID0gMzE1Ci1hbmRfZXhwciA9IDMxNgotc2hpZnRfZXhwciA9IDMxNwotYXJpdGhfZXhwciA9IDMxOAotdGVybSA9IDMxOQotZmFjdG9yID0gMzIwCi1wb3dlciA9IDMyMQotYXRvbV9leHByID0gMzIyCi1hdG9tID0gMzIzCi10ZXN0bGlzdF9jb21wID0gMzI0Ci10cmFpbGVyID0gMzI1Ci1zdWJzY3JpcHRsaXN0ID0gMzI2Ci1zdWJzY3JpcHQgPSAzMjcKLXNsaWNlb3AgPSAzMjgKLWV4cHJsaXN0ID0gMzI5Ci10ZXN0bGlzdCA9IDMzMAotZGljdG9yc2V0bWFrZXIgPSAzMzEKLWNsYXNzZGVmID0gMzMyCi1hcmdsaXN0ID0gMzMzCi1hcmd1bWVudCA9IDMzNAotY29tcF9pdGVyID0gMzM1Ci1jb21wX2ZvciA9IDMzNgotY29tcF9pZiA9IDMzNwotZW5jb2RpbmdfZGVjbCA9IDMzOAoteWllbGRfZXhwciA9IDMzOQoteWllbGRfYXJnID0gMzQwCithbm5hc3NpZ24gPSAyNzMKK3Rlc3RsaXN0X3N0YXJfZXhwciA9IDI3NAorYXVnYXNzaWduID0gMjc1CitkZWxfc3RtdCA9IDI3NgorcGFzc19zdG10ID0gMjc3CitmbG93X3N0bXQgPSAyNzgKK2JyZWFrX3N0bXQgPSAyNzkKK2NvbnRpbnVlX3N0bXQgPSAyODAKK3JldHVybl9zdG10ID0gMjgxCit5aWVsZF9zdG10ID0gMjgyCityYWlzZV9zdG10ID0gMjgzCitpbXBvcnRfc3RtdCA9IDI4NAoraW1wb3J0X25hbWUgPSAyODUKK2ltcG9ydF9mcm9tID0gMjg2CitpbXBvcnRfYXNfbmFtZSA9IDI4NworZG90dGVkX2FzX25hbWUgPSAyODgKK2ltcG9ydF9hc19uYW1lcyA9IDI4OQorZG90dGVkX2FzX25hbWVzID0gMjkwCitkb3R0ZWRfbmFtZSA9IDI5MQorZ2xvYmFsX3N0bXQgPSAyOTIKK25vbmxvY2FsX3N0bXQgPSAyOTMKK2Fzc2VydF9zdG10ID0gMjk0Citjb21wb3VuZF9zdG10ID0gMjk1Cithc3luY19zdG10ID0gMjk2CitpZl9zdG10ID0gMjk3Cit3aGlsZV9zdG10ID0gMjk4Citmb3Jfc3RtdCA9IDI5OQordHJ5X3N0bXQgPSAzMDAKK3dpdGhfc3RtdCA9IDMwMQord2l0aF9pdGVtID0gMzAyCitleGNlcHRfY2xhdXNlID0gMzAzCitzdWl0ZSA9IDMwNAordGVzdCA9IDMwNQordGVzdF9ub2NvbmQgPSAzMDYKK2xhbWJkZWYgPSAzMDcKK2xhbWJkZWZfbm9jb25kID0gMzA4Citvcl90ZXN0ID0gMzA5CithbmRfdGVzdCA9IDMxMAorbm90X3Rlc3QgPSAzMTEKK2NvbXBhcmlzb24gPSAzMTIKK2NvbXBfb3AgPSAzMTMKK3N0YXJfZXhwciA9IDMxNAorZXhwciA9IDMxNQoreG9yX2V4cHIgPSAzMTYKK2FuZF9leHByID0gMzE3CitzaGlmdF9leHByID0gMzE4Cithcml0aF9leHByID0gMzE5Cit0ZXJtID0gMzIwCitmYWN0b3IgPSAzMjEKK3Bvd2VyID0gMzIyCithdG9tX2V4cHIgPSAzMjMKK2F0b20gPSAzMjQKK3Rlc3RsaXN0X2NvbXAgPSAzMjUKK3RyYWlsZXIgPSAzMjYKK3N1YnNjcmlwdGxpc3QgPSAzMjcKK3N1YnNjcmlwdCA9IDMyOAorc2xpY2VvcCA9IDMyOQorZXhwcmxpc3QgPSAzMzAKK3Rlc3RsaXN0ID0gMzMxCitkaWN0b3JzZXRtYWtlciA9IDMzMgorY2xhc3NkZWYgPSAzMzMKK2FyZ2xpc3QgPSAzMzQKK2FyZ3VtZW50ID0gMzM1Citjb21wX2l0ZXIgPSAzMzYKK2NvbXBfZm9yID0gMzM3Citjb21wX2lmID0gMzM4CitlbmNvZGluZ19kZWNsID0gMzM5Cit5aWVsZF9leHByID0gMzQwCit5aWVsZF9hcmcgPSAzNDEKICMtLWVuZCBjb25zdGFudHMtLQogCiBzeW1fbmFtZSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvc3ltdGFibGUucHkgYi9MaWIvc3ltdGFibGUucHkKaW5kZXggODRmZWM0YS4uYjBlNTI2MCAxMDA2NDQKLS0tIGEvTGliL3N5bXRhYmxlLnB5CisrKyBiL0xpYi9zeW10YWJsZS5weQpAQCAtMiw3ICsyLDcgQEAKIAogaW1wb3J0IF9zeW10YWJsZQogZnJvbSBfc3ltdGFibGUgaW1wb3J0IChVU0UsIERFRl9HTE9CQUwsIERFRl9MT0NBTCwgREVGX1BBUkFNLAotICAgICBERUZfSU1QT1JULCBERUZfQk9VTkQsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKKyAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBERUZfQU5OT1QsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKICAgICAgTE9DQUwsIEdMT0JBTF9JTVBMSUNJVCwgR0xPQkFMX0VYUExJQ0lULCBDRUxMKQogCiBpbXBvcnQgd2Vha3JlZgpAQCAtMTkwLDYgKzE5MCw5IEBACiAgICAgZGVmIGlzX2xvY2FsKHNlbGYpOgogICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBERUZfQk9VTkQpCiAKKyAgICBkZWYgaXNfYW5ub3RhdGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBERUZfQU5OT1QpCisKICAgICBkZWYgaXNfZnJlZShzZWxmKToKICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX3Njb3BlID09IEZSRUUpCiAKZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5CmluZGV4IDljMzRiZTAuLjkzMTRlNzEgMTAwNjQ0Ci0tLSBhL0xpYi9zeXNjb25maWcucHkKKysrIGIvTGliL3N5c2NvbmZpZy5weQpAQCAtODYsOCArODYsOCBAQAogICMgRklYTUUgZG9uJ3QgcmVseSBvbiBzeXMudmVyc2lvbiBoZXJlLCBpdHMgZm9ybWF0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAogICMgb2YgQ1B5dGhvbiwgdXNlIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLmhleHZlcnNpb24KIF9QWV9WRVJTSU9OID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXQotX1BZX1ZFUlNJT05fU0hPUlQgPSBzeXMudmVyc2lvbls6M10KLV9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVCA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KK19QWV9WRVJTSU9OX1NIT1JUID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCitfUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSAnJWQlZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKIF9CQVNFX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KQogX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpCkBAIC0yMTUsNyArMjE1LDcgQEAKICAgICAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICAgICAjIGxpa2Ugb2xkLXN0eWxlIFNldHVwIGZpbGVzKS4KICAgICBpbXBvcnQgcmUKLSAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKKyAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKHIiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCiAgICAgX2ZpbmR2YXIxX3J4ID0gcmUuY29tcGlsZShyIlwkXCgoW0EtWmEtel1bQS1aYS16MC05X10qKVwpIikKICAgICBfZmluZHZhcjJfcnggPSByZS5jb21waWxlKHIiXCR7KFtBLVphLXpdW0EtWmEtejAtOV9dKil9IikKIApAQCAtMzM3LDggKzMzNywyMCBAQAogICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnLSVzJXMnICUgKF9QWV9WRVJTSU9OX1NIT1JULCBzeXMuYWJpZmxhZ3MpCiAgICAgZWxzZToKICAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZycKKyAgICBpZiBoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnKToKKyAgICAgICAgY29uZmlnX2Rpcl9uYW1lICs9ICctJXMnICUgc3lzLmltcGxlbWVudGF0aW9uLl9tdWx0aWFyY2gKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGdldF9wYXRoKCdzdGRsaWInKSwgY29uZmlnX2Rpcl9uYW1lLCAnTWFrZWZpbGUnKQogCisKK2RlZiBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpOgorICAgIHJldHVybiBvcy5lbnZpcm9uLmdldCgnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnLAorICAgICAgICAnX3N5c2NvbmZpZ2RhdGFfe2FiaX1fe3BsYXRmb3JtfV97bXVsdGlhcmNofScuZm9ybWF0KAorICAgICAgICBhYmk9c3lzLmFiaWZsYWdzLAorICAgICAgICBwbGF0Zm9ybT1zeXMucGxhdGZvcm0sCisgICAgICAgIG11bHRpYXJjaD1nZXRhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnLCAnJyksCisgICAgKSkKKworCiBkZWYgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKToKICAgICAiIiJHZW5lcmF0ZSB0aGUgUHl0aG9uIG1vZHVsZSBjb250YWluaW5nIGJ1aWxkLXRpbWUgdmFyaWFibGVzLiIiIgogICAgIGltcG9ydCBwcHJpbnQKQEAgLTM3OSwxNCArMzkxLDE0IEBACiAgICAgIyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgbWFudWFsbHkgYW5kIHBvcHVsYXRlIGl0IHdpdGggdGhlIGJ1aWxkIHZhcnMuCiAgICAgIyBUaGlzIGlzIG1vcmUgdGhhbiBzdWZmaWNpZW50IGZvciBlbnN1cmluZyB0aGUgc3Vic2VxdWVudCBjYWxsIHRvCiAgICAgIyBnZXRfcGxhdGZvcm0oKSBzdWNjZWVkcy4KLSAgICBuYW1lID0gJ19zeXNjb25maWdkYXRhJworICAgIG5hbWUgPSBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpCiAgICAgaWYgJ2RhcndpbicgaW4gc3lzLnBsYXRmb3JtOgogICAgICAgICBpbXBvcnQgdHlwZXMKICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICBtb2R1bGUuYnVpbGRfdGltZV92YXJzID0gdmFycwogICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogCi0gICAgcHlidWlsZGRpciA9ICdidWlsZC9saWIuJXMtJXMnICUgKGdldF9wbGF0Zm9ybSgpLCBzeXMudmVyc2lvbls6M10pCisgICAgcHlidWlsZGRpciA9ICdidWlsZC9saWIuJXMtJXMnICUgKGdldF9wbGF0Zm9ybSgpLCBfUFlfVkVSU0lPTl9TSE9SVCkKICAgICBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICAgICAgcHlidWlsZGRpciArPSAnLXB5ZGVidWcnCiAgICAgb3MubWFrZWRpcnMocHlidWlsZGRpciwgZXhpc3Rfb2s9VHJ1ZSkKQEAgLTQwNSw3ICs0MTcsOSBAQAogZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKICAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQotICAgIGZyb20gX3N5c2NvbmZpZ2RhdGEgaW1wb3J0IGJ1aWxkX3RpbWVfdmFycworICAgIG5hbWUgPSBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpCisgICAgX3RlbXAgPSBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnYnVpbGRfdGltZV92YXJzJ10sIDApCisgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQogCiBkZWYgX2luaXRfbm9uX3Bvc2l4KHZhcnMpOgpAQCAtNTE4LDcgKzUzMiw3IEBACiAgICAgICAgIF9DT05GSUdfVkFSU1snZXhlY19wcmVmaXgnXSA9IF9FWEVDX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb24nXSA9IF9QWV9WRVJTSU9OCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9zaG9ydCddID0gX1BZX1ZFUlNJT05fU0hPUlQKLSAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX25vZG90J10gPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCisgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UCiAgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX2Jhc2UnXSA9IF9CQVNFX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2Jhc2UnXSA9IF9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydpbnN0YWxsZWRfcGxhdGJhc2UnXSA9IF9CQVNFX0VYRUNfUFJFRklYCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IDcyMWY5ZDcuLmE2MmFiODIgMTAwNzU1Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC02NCw3ICs2NCwxMCBAQAogICAgIHBhc3MKIAogIyBmcm9tIHRhcmZpbGUgaW1wb3J0ICoKLV9fYWxsX18gPSBbIlRhckZpbGUiLCAiVGFySW5mbyIsICJpc190YXJmaWxlIiwgIlRhckVycm9yIl0KK19fYWxsX18gPSBbIlRhckZpbGUiLCAiVGFySW5mbyIsICJpc190YXJmaWxlIiwgIlRhckVycm9yIiwgIlJlYWRFcnJvciIsCisgICAgICAgICAgICJDb21wcmVzc2lvbkVycm9yIiwgIlN0cmVhbUVycm9yIiwgIkV4dHJhY3RFcnJvciIsICJIZWFkZXJFcnJvciIsCisgICAgICAgICAgICJFTkNPRElORyIsICJVU1RBUl9GT1JNQVQiLCAiR05VX0ZPUk1BVCIsICJQQVhfRk9STUFUIiwKKyAgICAgICAgICAgIkRFRkFVTFRfRk9STUFUIiwgIm9wZW4iXQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIHRhciBjb25zdGFudHMKQEAgLTE0MSw3ICsxNDQsNyBAQAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBpbml0aWFsaXphdGlvbgogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBvcy5uYW1lID09ICJudCI6CiAgICAgRU5DT0RJTkcgPSAidXRmLTgiCiBlbHNlOgogICAgIEVOQ09ESU5HID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCkBAIC0yMjUsMjEgKzIyOCwyMSBAQAogICAgIHNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFja19mcm9tKCIxNDhiOHgzNTZiIiwgYnVmKSkKICAgICByZXR1cm4gdW5zaWduZWRfY2hrc3VtLCBzaWduZWRfY2hrc3VtCiAKLWRlZiBjb3B5ZmlsZW9iaihzcmMsIGRzdCwgbGVuZ3RoPU5vbmUsIGV4Y2VwdGlvbj1PU0Vycm9yKToKK2RlZiBjb3B5ZmlsZW9iaihzcmMsIGRzdCwgbGVuZ3RoPU5vbmUsIGV4Y2VwdGlvbj1PU0Vycm9yLCBidWZzaXplPU5vbmUpOgogICAgICIiIkNvcHkgbGVuZ3RoIGJ5dGVzIGZyb20gZmlsZW9iaiBzcmMgdG8gZmlsZW9iaiBkc3QuCiAgICAgICAgSWYgbGVuZ3RoIGlzIE5vbmUsIGNvcHkgdGhlIGVudGlyZSBjb250ZW50LgogICAgICIiIgorICAgIGJ1ZnNpemUgPSBidWZzaXplIG9yIDE2ICogMTAyNAogICAgIGlmIGxlbmd0aCA9PSAwOgogICAgICAgICByZXR1cm4KICAgICBpZiBsZW5ndGggaXMgTm9uZToKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0KQorICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooc3JjLCBkc3QsIGJ1ZnNpemUpCiAgICAgICAgIHJldHVybgogCi0gICAgQlVGU0laRSA9IDE2ICogMTAyNAotICAgIGJsb2NrcywgcmVtYWluZGVyID0gZGl2bW9kKGxlbmd0aCwgQlVGU0laRSkKKyAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZChsZW5ndGgsIGJ1ZnNpemUpCiAgICAgZm9yIGIgaW4gcmFuZ2UoYmxvY2tzKToKLSAgICAgICAgYnVmID0gc3JjLnJlYWQoQlVGU0laRSkKLSAgICAgICAgaWYgbGVuKGJ1ZikgPCBCVUZTSVpFOgorICAgICAgICBidWYgPSBzcmMucmVhZChidWZzaXplKQorICAgICAgICBpZiBsZW4oYnVmKSA8IGJ1ZnNpemU6CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb24oInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKQogICAgICAgICBkc3Qud3JpdGUoYnVmKQogCkBAIC0xNDAwLDcgKzE0MDMsOCBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgICB0YXJpbmZvPU5vbmUsIGRlcmVmZXJlbmNlPU5vbmUsIGlnbm9yZV96ZXJvcz1Ob25lLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiLCBwYXhfaGVhZGVycz1Ob25lLCBkZWJ1Zz1Ob25lLCBlcnJvcmxldmVsPU5vbmUpOgorICAgICAgICAgICAgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiLCBwYXhfaGVhZGVycz1Ob25lLCBkZWJ1Zz1Ob25lLAorICAgICAgICAgICAgZXJyb3JsZXZlbD1Ob25lLCBjb3B5YnVmc2l6ZT1Ob25lKToKICAgICAgICAgIiIiT3BlbiBhbiAodW5jb21wcmVzc2VkKSB0YXIgYXJjaGl2ZSBgbmFtZScuIGBtb2RlJyBpcyBlaXRoZXIgJ3InIHRvCiAgICAgICAgICAgIHJlYWQgZnJvbSBhbiBleGlzdGluZyBhcmNoaXZlLCAnYScgdG8gYXBwZW5kIGRhdGEgdG8gYW4gZXhpc3RpbmcKICAgICAgICAgICAgZmlsZSBvciAndycgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3Rpbmcgb25lLiBgbW9kZScKQEAgLTE0NTYsNiArMTQ2MCw3IEBACiAgICAgICAgICAgICBzZWxmLmVycm9ybGV2ZWwgPSBlcnJvcmxldmVsCiAKICAgICAgICAgIyBJbml0IGRhdGFzdHJ1Y3R1cmVzLgorICAgICAgICBzZWxmLmNvcHlidWZzaXplID0gY29weWJ1ZnNpemUKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQogICAgICAgICBzZWxmLm1lbWJlcnMgPSBbXSAgICAgICAjIGxpc3Qgb2YgbWVtYmVycyBhcyBUYXJJbmZvIG9iamVjdHMKICAgICAgICAgc2VsZi5fbG9hZGVkID0gRmFsc2UgICAgIyBmbGFnIGlmIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkCkBAIC0xNTU1LDcgKzE1NjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBzYXZlZF9wb3MgPSBmaWxlb2JqLnRlbGwoKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMobmFtZSwgInIiLCBmaWxlb2JqLCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICBleGNlcHQgKFJlYWRFcnJvciwgQ29tcHJlc3Npb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBleGNlcHQgKFJlYWRFcnJvciwgQ29tcHJlc3Npb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoc2F2ZWRfcG9zKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTk2MCwxMCArMTk2NSwxMCBAQAogICAgICAgICBidWYgPSB0YXJpbmZvLnRvYnVmKHNlbGYuZm9ybWF0LCBzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykKICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGJ1ZikKICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuKGJ1ZikKLQorICAgICAgICBidWZzaXplPXNlbGYuY29weWJ1ZnNpemUKICAgICAgICAgIyBJZiB0aGVyZSdzIGRhdGEgdG8gZm9sbG93LCBhcHBlbmQgaXQuCiAgICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSkKKyAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZpbGVvYmosIHNlbGYuZmlsZW9iaiwgdGFyaW5mby5zaXplLCBidWZzaXplPWJ1ZnNpemUpCiAgICAgICAgICAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZCh0YXJpbmZvLnNpemUsIEJMT0NLU0laRSkKICAgICAgICAgICAgIGlmIHJlbWFpbmRlciA+IDA6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKE5VTCAqIChCTE9DS1NJWkUgLSByZW1haW5kZXIpKQpAQCAtMjE0NSwxNSArMjE1MCwxNiBAQAogICAgICAgICAiIiIKICAgICAgICAgc291cmNlID0gc2VsZi5maWxlb2JqCiAgICAgICAgIHNvdXJjZS5zZWVrKHRhcmluZm8ub2Zmc2V0X2RhdGEpCisgICAgICAgIGJ1ZnNpemUgPSBzZWxmLmNvcHlidWZzaXplCiAgICAgICAgIHdpdGggYmx0bl9vcGVuKHRhcmdldHBhdGgsICJ3YiIpIGFzIHRhcmdldDoKICAgICAgICAgICAgIGlmIHRhcmluZm8uc3BhcnNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGZvciBvZmZzZXQsIHNpemUgaW4gdGFyaW5mby5zcGFyc2U6CiAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZWVrKG9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHNpemUsIFJlYWRFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHNpemUsIFJlYWRFcnJvciwgYnVmc2l6ZSkKICAgICAgICAgICAgICAgICB0YXJnZXQuc2Vlayh0YXJpbmZvLnNpemUpCiAgICAgICAgICAgICAgICAgdGFyZ2V0LnRydW5jYXRlKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHRhcmluZm8uc2l6ZSwgUmVhZEVycm9yKQorICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvciwgYnVmc2l6ZSkKIAogICAgIGRlZiBtYWtldW5rbm93bihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKICAgICAgICAgIiIiTWFrZSBhIGZpbGUgZnJvbSBhIFRhckluZm8gb2JqZWN0IHdpdGggYW4gdW5rbm93biB0eXBlCkBAIC0yMjMyLDcgKzIyMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICBvcy5sY2hvd24odGFyZ2V0cGF0aCwgdSwgZykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvcy5jaG93bih0YXJnZXRwYXRoLCB1LCBnKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBvd25lciIpCiAKICAgICBkZWYgY2htb2Qoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CkBAIC0yMjQxLDcgKzIyNDcsNyBAQAogICAgICAgICBpZiBoYXNhdHRyKG9zLCAnY2htb2QnKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5jaG1vZCh0YXJnZXRwYXRoLCB0YXJpbmZvLm1vZGUpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJjb3VsZCBub3QgY2hhbmdlIG1vZGUiKQogCiAgICAgZGVmIHV0aW1lKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjI1MSw3ICsyMjU3LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy51dGltZSh0YXJnZXRwYXRoLCAodGFyaW5mby5tdGltZSwgdGFyaW5mby5tdGltZSkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJjb3VsZCBub3QgY2hhbmdlIG1vZGlmaWNhdGlvbiB0aW1lIikKIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM3NCw5ICsyMzgwLDMyIEBACiAgICAgICAgICIiIlByb3ZpZGUgYW4gaXRlcmF0b3Igb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fbG9hZGVkOgotICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5tZW1iZXJzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRhckl0ZXIoc2VsZikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5tZW1iZXJzCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIFlpZWxkIGl0ZW1zIHVzaW5nIFRhckZpbGUncyBuZXh0KCkgbWV0aG9kLgorICAgICAgICAjIFdoZW4gYWxsIG1lbWJlcnMgaGF2ZSBiZWVuIHJlYWQsIHNldCBUYXJGaWxlIGFzIF9sb2FkZWQuCisgICAgICAgIGluZGV4ID0gMAorICAgICAgICAjIEZpeCBmb3IgU0YgIzExMDA0Mjk6IFVuZGVyIHJhcmUgY2lyY3Vtc3RhbmNlcyBpdCBjYW4KKyAgICAgICAgIyBoYXBwZW4gdGhhdCBnZXRtZW1iZXJzKCkgaXMgY2FsbGVkIGR1cmluZyBpdGVyYXRpb24sCisgICAgICAgICMgd2hpY2ggd2lsbCBoYXZlIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBuZXh0KCkgbWV0aG9kLgorICAgICAgICBpZiBzZWxmLmZpcnN0bWVtYmVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubmV4dCgpCisgICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgICAgICB5aWVsZCB0YXJpbmZvCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGluZGV4IDwgbGVuKHNlbGYubWVtYmVycyk6CisgICAgICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubWVtYmVyc1tpbmRleF0KKyAgICAgICAgICAgIGVsaWYgbm90IHNlbGYuX2xvYWRlZDoKKyAgICAgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi5uZXh0KCkKKyAgICAgICAgICAgICAgICBpZiBub3QgdGFyaW5mbzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgICAgICB5aWVsZCB0YXJpbmZvCiAKICAgICBkZWYgX2RiZyhzZWxmLCBsZXZlbCwgbXNnKToKICAgICAgICAgIiIiV3JpdGUgZGVidWdnaW5nIG91dHB1dCB0byBzeXMuc3RkZXJyLgpAQCAtMjM5Nyw0NSArMjQyNiw2IEBACiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXh0ZmlsZW9iajoKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCi0jIGNsYXNzIFRhckZpbGUKLQotY2xhc3MgVGFySXRlcjoKLSAgICAiIiJJdGVyYXRvciBDbGFzcy4KLQotICAgICAgIGZvciB0YXJpbmZvIGluIFRhckZpbGUoLi4uKToKLSAgICAgICAgICAgc3VpdGUuLi4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJmaWxlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGEgVGFySXRlciBvYmplY3QuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnRhcmZpbGUgPSB0YXJmaWxlCi0gICAgICAgIHNlbGYuaW5kZXggPSAwCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gaXRlcmF0b3Igb2JqZWN0LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYKLSAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbmV4dCBpdGVtIHVzaW5nIFRhckZpbGUncyBuZXh0KCkgbWV0aG9kLgotICAgICAgICAgICBXaGVuIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkLCBzZXQgVGFyRmlsZSBhcyBfbG9hZGVkLgotICAgICAgICAiIiIKLSAgICAgICAgIyBGaXggZm9yIFNGICMxMTAwNDI5OiBVbmRlciByYXJlIGNpcmN1bXN0YW5jZXMgaXQgY2FuCi0gICAgICAgICMgaGFwcGVuIHRoYXQgZ2V0bWVtYmVycygpIGlzIGNhbGxlZCBkdXJpbmcgaXRlcmF0aW9uLAotICAgICAgICAjIHdoaWNoIHdpbGwgY2F1c2UgVGFySXRlciB0byBzdG9wIHByZW1hdHVyZWx5LgotCi0gICAgICAgIGlmIHNlbGYuaW5kZXggPT0gMCBhbmQgc2VsZi50YXJmaWxlLmZpcnN0bWVtYmVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyZmlsZS5uZXh0KCkKLSAgICAgICAgZWxpZiBzZWxmLmluZGV4IDwgbGVuKHNlbGYudGFyZmlsZS5tZW1iZXJzKToKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubWVtYmVyc1tzZWxmLmluZGV4XQotICAgICAgICBlbGlmIG5vdCBzZWxmLnRhcmZpbGUuX2xvYWRlZDoKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubmV4dCgpCi0gICAgICAgICAgICBpZiBub3QgdGFyaW5mbzoKLSAgICAgICAgICAgICAgICBzZWxmLnRhcmZpbGUuX2xvYWRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCi0gICAgICAgIHNlbGYuaW5kZXggKz0gMQotICAgICAgICByZXR1cm4gdGFyaW5mbwogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgZXhwb3J0ZWQgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9MaWIvdGVsbmV0bGliLnB5IGIvTGliL3RlbG5ldGxpYi5weQppbmRleCA3MmRhYmM3Li5iMDg2M2IxIDEwMDY0NAotLS0gYS9MaWIvdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZWxuZXRsaWIucHkKQEAgLTYzNyw2ICs2MzcsMTIgQEAKICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgIHJldHVybiAoLTEsIE5vbmUsIHRleHQpCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogCiBkZWYgdGVzdCgpOgogICAgICIiIlRlc3QgcHJvZ3JhbSBmb3IgdGVsbmV0bGliLgpAQCAtNjYwLDExICs2NjYsMTAgQEAKICAgICAgICAgICAgIHBvcnQgPSBpbnQocG9ydHN0cikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwb3J0ID0gc29ja2V0LmdldHNlcnZieW5hbWUocG9ydHN0ciwgJ3RjcCcpCi0gICAgdG4gPSBUZWxuZXQoKQotICAgIHRuLnNldF9kZWJ1Z2xldmVsKGRlYnVnbGV2ZWwpCi0gICAgdG4ub3Blbihob3N0LCBwb3J0LCB0aW1lb3V0PTAuNSkKLSAgICB0bi5pbnRlcmFjdCgpCi0gICAgdG4uY2xvc2UoKQorICAgIHdpdGggVGVsbmV0KCkgYXMgdG46CisgICAgICAgIHRuLnNldF9kZWJ1Z2xldmVsKGRlYnVnbGV2ZWwpCisgICAgICAgIHRuLm9wZW4oaG9zdCwgcG9ydCwgdGltZW91dD0wLjUpCisgICAgICAgIHRuLmludGVyYWN0KCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZW1wZmlsZS5weSBiL0xpYi90ZW1wZmlsZS5weQppbmRleCBhZDY4N2I5Li42MTQ2MjM1IDEwMDY0NAotLS0gYS9MaWIvdGVtcGZpbGUucHkKKysrIGIvTGliL3RlbXBmaWxlLnB5CkBAIC03OTcsNyArNzk3LDYgQEAKICAgICAgICAgX3NodXRpbC5ybXRyZWUobmFtZSkKICAgICAgICAgX3dhcm5pbmdzLndhcm4od2Fybl9tZXNzYWdlLCBSZXNvdXJjZVdhcm5pbmcpCiAKLQogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICI8e30geyFyfT4iLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9fX21haW5fXy5weSBiL0xpYi90ZXN0L19fbWFpbl9fLnB5CmluZGV4IGQ1ZmJlMTUuLjE5YTZiMmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L19fbWFpbl9fLnB5CisrKyBiL0xpYi90ZXN0L19fbWFpbl9fLnB5CkBAIC0xLDMgKzEsMiBAQAotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAotCi1yZWdydGVzdC5tYWluX2luX3RlbXBfY3dkKCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgorbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKaW5kZXggMmJlY2ZhYS4uYzAwODQ2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQpAQCAtMTYyOCwxMyArMTYyOCwzMyBAQAogICAgICAgICBkID0gW2EsIGJdCiAgICAgICAgIGUgPSBzZWxmLmxpc3QoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGVbOl0sCisgICAgICAgICAgICBbZWxlbWVudFs6XSBmb3IgZWxlbWVudCBpbiBlXSwKICAgICAgICAgICAgIFtbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0sIFswLCAxLCAyLCAzLCA0LCAwLCAxLCAyLCAzLCA0XV0KICAgICAgICAgICAgICkKIAogICAgICAgICBmID0gc2VsZi5saXN0KFthXSkKICAgICAgICAgYS5hcHBlbmQoJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmWzpdLCBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksICdoZWxsbyddXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmWzBdWzpdLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgJ2hlbGxvJ10pCisKKyAgICBkZWYgdGVzdF9saXN0X3Byb3h5X2luX2xpc3Qoc2VsZik6CisgICAgICAgIGEgPSBzZWxmLmxpc3QoW3NlbGYubGlzdChyYW5nZSgzKSkgZm9yIF9pIGluIHJhbmdlKDMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaW5uZXJbOl0gZm9yIGlubmVyIGluIGFdLCBbWzAsIDEsIDJdXSAqIDMpCisKKyAgICAgICAgYVswXVstMV0gPSA1NQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFbMF1bOl0sIFswLCAxLCA1NV0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhW2ldWzpdLCBbMCwgMSwgMl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzFdLnBvcCgpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhWzFdKSwgMikKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMywgMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhW2ldKSwgMykKKworICAgICAgICBkZWwgYQorCisgICAgICAgIGIgPSBzZWxmLmxpc3QoKQorICAgICAgICBiLmFwcGVuZChiKQorICAgICAgICBkZWwgYgogCiAgICAgZGVmIHRlc3RfZGljdChzZWxmKToKICAgICAgICAgZCA9IHNlbGYuZGljdCgpCkBAIC0xNjQ2LDYgKzE2NjYsNTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZC52YWx1ZXMoKSksIFtjaHIoaSkgZm9yIGkgaW4gaW5kaWNlc10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGQuaXRlbXMoKSksIFsoaSwgY2hyKGkpKSBmb3IgaSBpbiBpbmRpY2VzXSkKIAorICAgIGRlZiB0ZXN0X2RpY3RfcHJveHlfbmVzdGVkKHNlbGYpOgorICAgICAgICBwZXRzID0gc2VsZi5kaWN0KGZlcnJldHM9MiwgaGFtc3RlcnM9NCkKKyAgICAgICAgc3VwcGxpZXMgPSBzZWxmLmRpY3Qod2F0ZXI9MTAsIGZlZWQ9MykKKyAgICAgICAgZCA9IHNlbGYuZGljdChwZXRzPXBldHMsIHN1cHBsaWVzPXN1cHBsaWVzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcGxpZXNbJ3dhdGVyJ10sIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ3dhdGVyJ10sIDEwKQorCisgICAgICAgIGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcGxpZXNbJ2JsYW5rZXRzJ10sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnc3VwcGxpZXMnXVsnYmxhbmtldHMnXSwgNSkKKworICAgICAgICBkWydzdXBwbGllcyddWyd3YXRlciddID0gNworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ3dhdGVyJ10sIDcpCisKKyAgICAgICAgZGVsIHBldHMKKyAgICAgICAgZGVsIHN1cHBsaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsncGV0cyddWydmZXJyZXRzJ10sIDIpCisgICAgICAgIGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10gPSAxMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10sIDExKQorCisgICAgICAgIHBldHMgPSBkWydwZXRzJ10KKyAgICAgICAgc3VwcGxpZXMgPSBkWydzdXBwbGllcyddCisgICAgICAgIHN1cHBsaWVzWyd3YXRlciddID0gNworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ3dhdGVyJ10sIDcpCisKKyAgICAgICAgZC5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGQpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBldHNbJ2hhbXN0ZXJzJ10sIDQpCisKKyAgICAgICAgbCA9IHNlbGYubGlzdChbcGV0cywgc3VwcGxpZXNdKQorICAgICAgICBsWzBdWydtYXJtb3RzJ10gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGV0c1snbWFybW90cyddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMF1bJ21hcm1vdHMnXSwgMSkKKworICAgICAgICBkZWwgcGV0cworICAgICAgICBkZWwgc3VwcGxpZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzBdWydtYXJtb3RzJ10sIDEpCisKKyAgICAgICAgb3V0ZXIgPSBzZWxmLmxpc3QoW1s4OCwgOTldLCBsXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG91dGVyWzBdLCBsaXN0KSAgIyBOb3QgYSBMaXN0UHJveHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRlclstMV1bLTFdWydmZWVkJ10sIDMpCisKICAgICBkZWYgdGVzdF9uYW1lc3BhY2Uoc2VsZik6CiAgICAgICAgIG4gPSBzZWxmLk5hbWVzcGFjZSgpCiAgICAgICAgIG4ubmFtZSA9ICdCb2InCkBAIC0xNjY4LDYgKzE3MzQsMTAgQEAKIGRlZiBtdWwoeCwgeSk6CiAgICAgcmV0dXJuIHgqeQogCitkZWYgcmFpc2VfbGFyZ2VfdmFsdWVycm9yKHdhaXQpOgorICAgIHRpbWUuc2xlZXAod2FpdCkKKyAgICByYWlzZSBWYWx1ZUVycm9yKCJ4IiAqIDEwMjQqKjIpCisKIGNsYXNzIFNheVdoZW5FcnJvcihWYWx1ZUVycm9yKTogcGFzcwogCiBkZWYgZXhjZXB0aW9uX3Rocm93aW5nX2dlbmVyYXRvcih0b3RhbCwgd2hlbik6CkBAIC0xOTEwLDYgKzE5ODAsMjYgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKICAgICAgICAgICAgICAgICBwLmFwcGx5KHNlbGYuX3Rlc3Rfd3JhcHBlZF9leGNlcHRpb24pCiAKKyAgICBkZWYgdGVzdF9tYXBfbm9fZmFpbGZhc3Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIzOTkyOiB0aGUgZmFpbC1mYXN0IGJlaGF2aW91ciB3aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQKKyAgICAgICAgIyBkdXJpbmcgbWFwKCkgd291bGQgbWFrZSBQb29sLmpvaW4oKSBkZWFkbG9jaywgYmVjYXVzZSBhIHdvcmtlcgorICAgICAgICAjIHByb2Nlc3Mgd291bGQgZmlsbCB0aGUgcmVzdWx0IHF1ZXVlIChhZnRlciB0aGUgcmVzdWx0IGhhbmRsZXIgdGhyZWFkCisgICAgICAgICMgdGVybWluYXRlZCwgaGVuY2Ugbm90IGRyYWluaW5nIGl0IGFueW1vcmUpLgorCisgICAgICAgIHRfc3RhcnQgPSB0aW1lLnRpbWUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuUG9vbCgyKSBhcyBwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcC5tYXAocmFpc2VfbGFyZ2VfdmFsdWVycm9yLCBbMCwgMV0pCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAgICAgICAgICAgICAgIHAuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBwLmpvaW4oKQorCisgICAgICAgICMgY2hlY2sgdGhhdCB3ZSBpbmRlZWQgd2FpdGVkIGZvciBhbGwgam9icworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodGltZS50aW1lKCkgLSB0X3N0YXJ0LCAwLjkpCisKIAogZGVmIHJhaXNpbmcoKToKICAgICByYWlzZSBLZXlFcnJvcigia2V5IikKQEAgLTM3NjcsNyArMzg1Nyw3IEBACiAgICAgICAgIHAuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgZXhwZWN0ZWQgPSAnc2VtYXBob3JlX3RyYWNrZXI6IFRoZXJlIGFwcGVhciB0byBiZSAyIGxlYWtlZCBzZW1hcGhvcmVzJwogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgZXhwZWN0ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLCAnc2VtYXBob3JlX3RyYWNrZXI6ICVyOiBcW0Vycm5vJyAlIG5hbWUxKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgcidzZW1hcGhvcmVfdHJhY2tlcjogJXI6IFxbRXJybm8nICUgbmFtZTEpCiAKICMKICMgTWl4aW5zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hbm5fbW9kdWxlLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTZiODdkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYW5uX21vZHVsZS5weQpAQCAtMCwwICsxLDUzIEBACisKKworIiIiCitUaGUgbW9kdWxlIGZvciB0ZXN0aW5nIHZhcmlhYmxlIGFubm90YXRpb25zLgorRW1wdHkgbGluZXMgYWJvdmUgYXJlIGZvciBnb29kIHJlYXNvbiAodGVzdGluZyBmb3IgY29ycmVjdCBsaW5lIG51bWJlcnMpCisiIiIKKworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisKK19fYW5ub3RhdGlvbnNfX1sxXSA9IDIKKworY2xhc3MgQzoKKworICAgIHggPSA1OyB5OiBPcHRpb25hbFsnQyddID0gTm9uZQorCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK3g6IGludCA9IDU7IHk6IHN0ciA9IHg7IGY6IFR1cGxlW2ludCwgaW50XQorCitjbGFzcyBNKHR5cGUpOgorCisgICAgX19hbm5vdGF0aW9uc19fWycxMjMnXSA9IDEyMworICAgIG86IHR5cGUgPSBvYmplY3QKKworKHBhcnMpOiBib29sID0gVHJ1ZQorCitjbGFzcyBEKEMpOgorICAgIGo6IHN0ciA9ICdoaSc7IGs6IHN0cj0gJ2J5ZScKKworZnJvbSB0eXBlcyBpbXBvcnQgbmV3X2NsYXNzCitoX2NsYXNzID0gbmV3X2NsYXNzKCdIJywgKEMsKSkKK2pfY2xhc3MgPSBuZXdfY2xhc3MoJ0onKQorCitjbGFzcyBGKCk6CisgICAgejogaW50ID0gNQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgcGFzcworCitjbGFzcyBZKEYpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoRiwgc2VsZikuX19pbml0X18oMTIzKQorCitjbGFzcyBNZXRhKHR5cGUpOgorICAgIGRlZiBfX25ld19fKG1ldGEsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1ldGEsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKK2NsYXNzIFMobWV0YWNsYXNzID0gTWV0YSk6CisgICAgeDogc3RyID0gJ3NvbWV0aGluZycKKyAgICB5OiBzdHIgPSAnc29tZXRoaW5nIGVsc2UnCisKK2RlZiBmb28oeDogaW50ID0gMTApOgorICAgIGRlZiBiYXIoeTogTGlzdFtzdHJdKToKKyAgICAgICAgeDogc3RyID0gJ3llcycKKyAgICBiYXIoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkgYi9MaWIvdGVzdC9hbm5fbW9kdWxlMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmNmNWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkKQEAgLTAsMCArMSwzNiBAQAorIiIiCitTb21lIGNvcnJlY3Qgc3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9uIGhlcmUuCitNb3JlIGV4YW1wbGVzIGFyZSBpbiB0ZXN0X2dyYW1tYXIgYW5kIHRlc3RfcGFyc2VyLgorIiIiCisKK2Zyb20gdHlwaW5nIGltcG9ydCBub190eXBlX2NoZWNrLCBDbGFzc1ZhcgorCitpOiBpbnQgPSAxCitqOiBpbnQKK3g6IGZsb2F0ID0gaS8xMAorCitkZWYgZigpOgorICAgIGNsYXNzIEM6IC4uLgorICAgIHJldHVybiBDKCkKKworZigpLm5ld19hdHRyOiBvYmplY3QgPSBvYmplY3QoKQorCitjbGFzcyBDOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4OiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYueCA9IHgKKworYyA9IEMoNSkKK2MubmV3X2F0dHI6IGludCA9IDEwCisKK19fYW5ub3RhdGlvbnNfXyA9IHt9CisKKworQG5vX3R5cGVfY2hlY2sKK2NsYXNzIE5UQzoKKyAgICBkZWYgbWV0aChzZWxmLCBwYXJhbTogY29tcGxleCkgLT4gTm9uZToKKyAgICAgICAgLi4uCisKK2NsYXNzIENWOgorICAgIHZhcjogQ2xhc3NWYXJbJ0NWJ10KKworQ1YudmFyID0gQ1YoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkgYi9MaWIvdGVzdC9hbm5fbW9kdWxlMy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2NkN2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkKQEAgLTAsMCArMSwxOCBAQAorIiIiCitDb3JyZWN0IHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbiB0aGF0IHNob3VsZCBmYWlsIGF0IHJ1bnRpbWUKK2luIGEgY2VydGFpbiBtYW5uZXIuIE1vcmUgZXhhbXBsZXMgYXJlIGluIHRlc3RfZ3JhbW1hciBhbmQgdGVzdF9wYXJzZXIuCisiIiIKKworZGVmIGZfYmFkX2FubigpOgorICAgIF9fYW5ub3RhdGlvbnNfX1sxXSA9IDIKKworY2xhc3MgQ19PSzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZWxmLng6IG5vX3N1Y2hfbmFtZSA9IHggICMgVGhpcyBvbmUgaXMgT0sgYXMgcHJvcG9zZWQgYnkgR3VpZG8KKworY2xhc3MgRF9iYWRfYW5uOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4OiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNmZWwueTogaW50ID0gMAorCitkZWYgZ19iYWRfYW5uKCk6CisgICAgbm9fc3VjaF9uYW1lLmF0dHI6IGludCA9IDAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkgYi9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5CmluZGV4IDBhZTIyNDIuLmQzZThlOWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvYXVkaW90ZXN0cy5weQpAQCAtMSw5ICsxLDggQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgVEVTVEZOLCB1bmxpbmsKLWltcG9ydCB1bml0dGVzdAogaW1wb3J0IGFycmF5CiBpbXBvcnQgaW8KIGltcG9ydCBwaWNrbGUKLWltcG9ydCBzeXMKKwogCiBjbGFzcyBVbnNlZWthYmxlSU8oaW8uRmlsZUlPKToKICAgICBkZWYgdGVsbChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2F1dG90ZXN0LnB5IGIvTGliL3Rlc3QvYXV0b3Rlc3QucHkKaW5kZXggNDFjMjA4OC4uZmE4NWNjMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvYXV0b3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvYXV0b3Rlc3QucHkKQEAgLTEsNiArMSw1IEBACiAjIFRoaXMgc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8gcnVubmluZyByZWdydGVzdC5weSBmcm9tIHRoZSBjbWRsaW5lLgogIyBJdCBjYW4gYmUgZXNwZWNpYWxseSBoYW5keSBpZiB5b3UncmUgaW4gYW4gaW50ZXJhY3RpdmUgc2hlbGwsIGUuZy4sCiAjIGZyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QuCi0KLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLXJlZ3J0ZXN0Lm1haW4oKQorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0IGltcG9ydCBtYWluCittYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjg1ZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiODVlMjkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbyhhPWF3YWl0IHNvbWV0aGluZygpKToKLSAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRlMWJjNS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMzNiMjguLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIGF3YWl0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxOWFmNi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1kZWYgZm9vKCk6Ci0gICAgYXdhaXQgc29tZXRoaW5nKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjBhMjNkLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICB5aWVsZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZTRiZjkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIHlpZWxkIGZyb20gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzYzNmY5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICBhd2FpdCBhd2FpdCBmdXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wIGIvTGliL3Rlc3QvY2FwYXRoLzBlNDAxNWI5LjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDI1OWIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY2FwYXRoLzBlNDAxNWI5LjAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUNsVENDQWY2Z0F3SUJBZ0lKQUtHVTk1d0tSOHBUTUEwR0NTcUdTSWIzRFFFQkJRVUFNSEF4Q3pBSkJnTlYKLUJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXUKLUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhJekFoQmdOVkJBTU1Hbk5sYkdZdGMybG5ibVZrTG5CNWRHaHYKLWJuUmxjM1F1Ym1WME1CNFhEVEUwTVRFd01qRTRNRGt5T1ZvWERUSTBNVEF6TURFNE1Ea3lPVm93Y0RFTE1Ba0cKLUExVUVCaE1DV0ZreEZ6QVZCZ05WQkFjTURrTmhjM1JzWlNCQmJuUm9jbUY0TVNNd0lRWURWUVFLREJwUWVYUm8KLWIyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiakVqTUNFR0ExVUVBd3dhYzJWc1ppMXphV2R1WldRdWNIbDAKLWFHOXVkR1Z6ZEM1dVpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTkRYUVhXOXRqeVoKLVh0MEl2MnRMTDEramlucjR3R2czNmlvTERMRmtNZisyWTFHTDB2MEJuS1lHNE4xT0tsQVUxNUxYR2VHZXI4dm0KLVN2L3lJdm1kckVMdmhBYmJvM3c0YTlUTVlRQTRYa0lWTGR2dTNtdk5PQWV0KzhQTUp4bjI2ZGJEaEc4MDlBTHYKLUVIWTU3bFFzQlMzRzU5Ulp5QlBWcUFxbUltV05KblZ6QWdNQkFBR2pOekExTUNVR0ExVWRFUVFlTUJ5Q0duTmwKLWJHWXRjMmxuYm1Wa0xuQjVkR2h2Ym5SbGMzUXVibVYwTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ1lFQUl1ekFoZ01vdUpwTmRmM1VSQ0hJaW5leW9TdDZXSy85K2V5VWNqbEtPckRvWE5aYUQ3MmgKLVRYTWVLWW9Xdkp5VmNTTEtMOGNrUHREb2JnUDJPVHQwVWt5QWFqMG4rWkhhcXExbEgyeVZmR1VBMUlMSnY1MTUKLUM4QnFidlZadXFtM2k3eWdtdzNicUUvbFlNZ09yWXRYWG5xT3J6Nm52c0U2WWM5VjlyRmZsT009Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMCBiL0xpYi90ZXN0L2NhcGF0aC9iMTkzMDIxOC4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzM0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMApAQCAtMCwwICsxLDIxIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURiVENDQWxXZ0F3SUJBZ0lKQUxDU1pMSHkyaUhRTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE16QXhNRFF4T1RRM01EZGFGdzB5TXpBeE1ESXgKK09UUTNNRGRhTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBU0l3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT2ZlNmVNTW53QzJvZjByVzViU2I4emd2b2E1SUY3c0EzcFYKK3ErcWs2ZmxKaGRKbTFlM0hldXBXamkyUDUwTGlZaWlwbjlZYmp1dTF0SnlmRkt2ZjVwU0xkaDArYlNSaDdReS8KK0FJcGhETjljeURaekZnRE5SN3B0cEtSMGlJTWpDaG44Q2FjOFNrdlQ1eDB0NU9wTVZDSHpKdHVKTnhqVUFydEEKK01sK2sveTBjOTlTNzdJN1BYSUtzNW53SWJFaUZZUWQvSmVCYzRMdzBYK0M1QkVkMXlFY0xqYnpXeUdoZk00TmkKKzBpQkVOYkd0Z1JxS3pidzFzRnlMUjlZWTZad1lsOHdCUENuTTZCN2s1TUc0M3VmQ0VSaUhXcE0wMktZbDl4UngKKzYrUWhvdElQTGk3VVlnQTEwOWJ2WEdCTFRLa1U0dDBWV0VZM015YTM1eTVkN1VMa3hVMENBd0VBQWFOUU1FNHcKK0hRWURWUjBPQkJZRUZMemRZdGwyMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQjhHQTFVZEl3UVlNQmFBRkx6ZFl0bDIKKzJodlNWR3ZQNEdhYkhoNTdWZ3dMTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUIKK0FIMEs5Y3VOMDEyOW1ZNzRLdys2NjhMWnBpZFBMbnN2RG1UWUhEVlFUdTc4a0xtTmJhakZ4Z2F3ci9NdHZ6dTQKK1FnZmRHSDF0bFZSWGhSaGdSeS9yZUJ2NTZCZjlXZzJIRnlpc1RHcm12Q24wOUZWd0tVTGVoZXFyYkNNR1pEQjEKK0FvNVR2RjRCTXpmTUhzMjRwUDNLNUY5bE80TWNodkZWQXFBNmo5dVJ0MEFVdE9lTjB1NXp1dVBsTkMyOGxHOU8KK0pBYjNYNHNPcDQ1cjNsNTE5REthVUxGRU01clFCZUo0Z3YvYjJvcGo2Nm5kMGIrZ1lhM2pub29rWFdJTzUweVIKK2YrL2ZORFk3TDEzMWhMSXZ4RzJUbGhwdk1DangyaEthWkxSQU14MjkzaXRUcU9xKzFyeE9sdlZFK3pJWXJ0VWYKKzltbXZ0azU3SFZqc082bFRvMTVZeUo0PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAgYi9MaWIvdGVzdC9jYXBhdGgvY2U3Yjg2NDMuMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZkMjU5Yi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jYXBhdGgvY2U3Yjg2NDMuMAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJQ2xUQ0NBZjZnQXdJQkFnSUpBS0dVOTV3S1I4cFRNQTBHQ1NxR1NJYjNEUUVCQlFVQU1IQXhDekFKQmdOVgotQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNnd2FVSGwwYUc5dQotSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEl6QWhCZ05WQkFNTUduTmxiR1l0YzJsbmJtVmtMbkI1ZEdodgotYm5SbGMzUXVibVYwTUI0WERURTBNVEV3TWpFNE1Ea3lPVm9YRFRJME1UQXpNREU0TURreU9Wb3djREVMTUFrRwotQTFVRUJoTUNXRmt4RnpBVkJnTlZCQWNNRGtOaGMzUnNaU0JCYm5Sb2NtRjRNU013SVFZRFZRUUtEQnBRZVhSbwotYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJqRWpNQ0VHQTFVRUF3d2FjMlZzWmkxemFXZHVaV1F1Y0hsMAotYUc5dWRHVnpkQzV1WlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFORFhRWFc5dGp5WgotWHQwSXYydExMMStqaW5yNHdHZzM2aW9MRExGa01mKzJZMUdMMHYwQm5LWUc0TjFPS2xBVTE1TFhHZUdlcjh2bQotU3YveUl2bWRyRUx2aEFiYm8zdzRhOVRNWVFBNFhrSVZMZHZ1M212Tk9BZXQrOFBNSnhuMjZkYkRoRzgwOUFMdgotRUhZNTdsUXNCUzNHNTlSWnlCUFZxQXFtSW1XTkpuVnpBZ01CQUFHak56QTFNQ1VHQTFVZEVRUWVNQnlDR25ObAotYkdZdGMybG5ibVZrTG5CNWRHaHZiblJsYzNRdWJtVjBNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTgotQVFFRkJRQURnWUVBSXV6QWhnTW91SnBOZGYzVVJDSElpbmV5b1N0NldLLzkrZXlVY2psS09yRG9YTlphRDcyaAotVFhNZUtZb1d2SnlWY1NMS0w4Y2tQdERvYmdQMk9UdDBVa3lBYWowbitaSGFxcTFsSDJ5VmZHVUExSUxKdjUxNQotQzhCcWJ2Vlp1cW0zaTd5Z213M2JxRS9sWU1nT3JZdFhYbnFPcno2bnZzRTZZYzlWOXJGZmxPTT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wIGIvTGliL3Rlc3QvY2FwYXRoL2NlZmYxNzEwLjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzczMzQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wCkBAIC0wLDAgKzEsMjEgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRGJUQ0NBbFdnQXdJQkFnSUpBTENTWkxIeTJpSFFNQTBHQ1NxR1NJYjNEUUVCQlFVQU1FMHhDekFKQmdOVgorQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4TXpBeE1EUXhPVFEzTURkYUZ3MHlNekF4TURJeAorT1RRM01EZGFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FTSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPZmU2ZU1NbndDMm9mMHJXNWJTYjh6Z3ZvYTVJRjdzQTNwVgorcStxazZmbEpoZEptMWUzSGV1cFdqaTJQNTBMaVlpaXBuOVlianV1MXRKeWZGS3ZmNXBTTGRoMCtiU1JoN1F5LworQUlwaEROOWN5RFp6RmdETlI3cHRwS1IwaUlNakNobjhDYWM4U2t2VDV4MHQ1T3BNVkNIekp0dUpOeGpVQXJ0QQorTWwray95MGM5OVM3N0k3UFhJS3M1bndJYkVpRllRZC9KZUJjNEx3MFgrQzVCRWQxeUVjTGpield5R2hmTTROaQorMGlCRU5iR3RnUnFLemJ3MXNGeUxSOVlZNlp3WWw4d0JQQ25NNkI3azVNRzQzdWZDRVJpSFdwTTAyS1lsOXhSeAorNitRaG90SVBMaTdVWWdBMTA5YnZYR0JMVEtrVTR0MFZXRVkzTXlhMzV5NWQ3VUxreFUwQ0F3RUFBYU5RTUU0dworSFFZRFZSME9CQllFRkx6ZFl0bDIyaHZTVkd2UDRHYWJIaDU3Vmd3TE1COEdBMVVkSXdRWU1CYUFGTHpkWXRsMgorMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQgorQUgwSzljdU4wMTI5bVk3NEt3KzY2OExacGlkUExuc3ZEbVRZSERWUVR1NzhrTG1OYmFqRnhnYXdyL010dnp1NAorUWdmZEdIMXRsVlJYaFJoZ1J5L3JlQnY1NkJmOVdnMkhGeWlzVEdybXZDbjA5RlZ3S1VMZWhlcXJiQ01HWkRCMQorQW81VHZGNEJNemZNSHMyNHBQM0s1RjlsTzRNY2h2RlZBcUE2ajl1UnQwQVV0T2VOMHU1enV1UGxOQzI4bEc5TworSkFiM1g0c09wNDVyM2w1MTlES2FVTEZFTTVyUUJlSjRndi9iMm9wajY2bmQwYitnWWEzam5vb2tYV0lPNTB5UgorZisvZk5EWTdMMTMxaExJdnhHMlRsaHB2TUNqeDJoS2FaTFJBTXgyOTNpdFRxT3ErMXJ4T2x2VkUreklZcnRVZgorOW1tdnRrNTdIVmpzTzZsVG8xNVl5SjQ9CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0IGIvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dAppbmRleCA5YjA4NjUzLi5kZDdlNDU4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0CisrKyBiL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQKQEAgLTUzLDYgKzUzLDEyIEBACiAtLSBNUEZSIGhvbWVwYWdlIGF0IGh0dHA6Ly93d3cubXBmci5vcmcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAtLSBNUEZSIHByb2plY3QuCiAKKy0tIEEgbWlub3JpdHkgb2YgdGhlIHRlc3QgY2FzZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aCB0aGUgaGVscCBvZgorLS0gbXBtYXRoIDAuMTkgYXQgMTAwIGJpdCBhY2N1cmFjeSAoaHR0cDovL21wbWF0aC5vcmcpIHRvIGltcHJvdmUKKy0tIGNvdmVyYWdlIG9mIHJlYWwgZnVuY3Rpb25zIHdpdGggcmVhbC12YWx1ZWQgYXJndW1lbnRzLiBUaGVzZSBhcmUKKy0tIHVzZWQgaW4gdGVzdC50ZXN0X21hdGguTWF0aFRlc3RzLnRlc3RfdGVzdGZpbGUsIGFzIHdlbGwgYXMgaW4KKy0tIHRlc3RfY21hdGguCisKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIGFjb3M6IEludmVyc2UgY29zaW5lIC0tCkBAIC04NDgsNiArODU0LDE4IEBACiBhdGFuMDMwMyBhdGFuIC0xZS0xNjUgMS4wIC0+IC0wLjc4NTM5ODE2MzM5NzQ0ODI4IDE5MC4zMDk4NDM3NjIyODg3NQogYXRhbjAzMDQgYXRhbiAtOS45OTk4ODg2NzE4MjY4MzAxZS0zMjEgLTEuMCAtPiAtMC43ODUzOTgxNjMzOTc0NDgyOCAtMzY4Ljc2MDE5NDAzNTc2NjkyCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2F0YW4wNDAwIGF0YW4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggMC4wIC0+IDEuNTcwNzk2MzI2Nzk0ODk2NjE5MiAwLjAKK2F0YW4wNDAxIGF0YW4gLTEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAtMS41NzA3OTYzMjY3OTQ4OTY2MTkyIDAuMAorYXRhbjA0MDIgYXRhbiAxZS0xNyAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwNzE1ZS0xNyAwLjAKK2F0YW4wNDAzIGF0YW4gLTFlLTE3IDAuMCAtPiAtMS4wMDAwMDAwMDAwMDAwMDAwNzE1ZS0xNyAwLjAKK2F0YW4wNDA0IGF0YW4gMC4wMDAxIDAuMCAtPiAwLjAwMDA5OTk5OTk5OTY2NjY2NjY3MzQ1OSAwLjAKK2F0YW4wNDA1IGF0YW4gLTAuMDAwMSAwLjAgLT4gLTAuMDAwMDk5OTk5OTk5NjY2NjY2NjczNDU5IDAuMAorYXRhbjA0MDYgYXRhbiAwLjk5OTk5OTk5OTk5OTk5OSAwLjAgLT4gMC43ODUzOTgxNjMzOTc0NDc4MTAwMiAwLjAKK2F0YW4wNDA3IGF0YW4gMS4wMDAwMDAwMDAwMDAwMDEgMC4wIC0+IDAuNzg1Mzk4MTYzMzk3NDQ4ODY0NzMgMC4wCithdGFuMDQwOCBhdGFuIDE0LjEwMTQxOTk0NzE3MTcxOSAwLjAgLT4gMS40OTk5OTk5OTk5OTk5OTk5OTY5IDAuMAorYXRhbjA0MDkgYXRhbiAxMjU1Ljc2NTU5MTUwMDc4OTcgMC4wIC0+IDEuNTcwMDAwMDAwMDAwMDAwMDYyMiAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIGF0YW4xMDAwIGF0YW4gLTAuMCAwLjAgLT4gLTAuMCAwLjAKIGF0YW4xMDAxIGF0YW4gbmFuIDAuMCAtPiBuYW4gMC4wCkBAIC0xNTE0LDYgKzE1MzIsMTEgQEAKIHNxcnQwMTQwIHNxcnQgMS42OTk5OTk5OTk5OTk5OTk5ZSszMDggLTEuNjk5OTk5OTk5OTk5OTk5OWUrMzA4IC0+IDEuNDMyNTA4ODIzMDE1NDU3M2UrMTU0IC01LjkzMzY0NTgyNzEyMTIyMDdlKzE1Mwogc3FydDAxNDEgc3FydCAtMS43OTdlKzMwOCAtOS45OTk5OTk5OTk5OTk5OTk5ZSszMDYgLT4gMy43Mjg0NDc2NDMyMDU3MzA3ZSsxNTIgLTEuMzQxMDQwNjg5OTgwMjkwMWUrMTU0CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NxcnQwMTUwIHNxcnQgMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggMC4wIC0+IDEuMzQwNzgwNzkyOTk0MjU5NjM1NWUrMTU0IDAuMAorc3FydDAxNTEgc3FydCAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCAwLjAgLT4gMS40OTE2NjgxNDYyNDAwNDEzNDg3ZS0xNTQgMC4wCitzcXJ0MDE1MiBzcXJ0IDVlLTMyNCAwLjAgLT4gMi4yMjI3NTg3NDk0ODUwNzc0ODM0ZS0xNjIgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBzcXJ0MTAwMCBzcXJ0IDAuMCAwLjAgLT4gMC4wIDAuMAogc3FydDEwMDEgc3FydCAtMC4wIDAuMCAtPiAwLjAgMC4wCkBAIC0xNjE2LDYgKzE2MzksMjAgQEAKIGV4cDAwNTMgZXhwIDcxMC4wIDEuNiAtPiAtNi41MjMxNTc5OTk1NTAxMzcyZSszMDYgaW5mICAgb3ZlcmZsb3cKIGV4cDAwNTQgZXhwIDcxMC4wIDIuOCAtPiAtaW5mIDcuNDgzNjE3NzQxNzQ0ODUyOGUrMzA3ICAgb3ZlcmZsb3cKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorZXhwMDA3MCBleHAgMWUtMDggMC4wIC0+IDEuMDAwMDAwMDEwMDAwMDAwMDUgMC4wCitleHAwMDcxIGV4cCAwLjAwMDMgMC4wIC0+IDEuMDAwMzAwMDQ1MDA0NTAwMzM3NSAwLjAKK2V4cDAwNzIgZXhwIDAuMiAwLjAgLT4gMS4yMjE0MDI3NTgxNjAxNjk4NDc1IDAuMAorZXhwMDA3MyBleHAgMS4wIDAuMCAtPiAyLjcxODI4MTgyODQ1OTA0NTIzNTQgMC4wCitleHAwMDc0IGV4cCAtMWUtMDggMC4wIC0+IDAuOTk5OTk5OTkwMDAwMDAwMDUgMC4wCitleHAwMDc1IGV4cCAtMC4wMDAzIDAuMCAtPiAwLjk5OTcwMDA0NDk5NTUwMDMzNzUxIDAuMAorZXhwMDA3NiBleHAgLTEuMCAwLjAgLT4gMC4zNjc4Nzk0NDExNzE0NDIzMjE2IDAuMAorZXhwMDA3NyBleHAgMi4yMjA0NDYwNDkyNTAzMTNlLTE2IDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDIyMiAwLjAKK2V4cDAwNzggZXhwIC0xLjExMDIyMzAyNDYyNTE1NjVlLTE2IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTg4ODk4IDAuMAorZXhwMDA3OSBleHAgMi4zMDI1ODUwOTI5OTQwNDYgMC4wIC0+IDEwLjAwMDAwMDAwMDAwMDAwMjE3MSAwLjAKK2V4cDAwODAgZXhwIC0yLjMwMjU4NTA5Mjk5NDA0NiAwLjAgLT4gMC4wOTk5OTk5OTk5OTk5OTk5NzgyOTIgMC4wCitleHAwMDgxIGV4cCA3MDkuNzgyNyAwLjAgLT4gMS43OTc2Njk5NTY2NjM4MDE0NjU0ZSszMDggMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBleHAxMDAwIGV4cCAwLjAgMC4wIC0+IDEuMCAwLjAKIGV4cDEwMDEgZXhwIC0wLjAgMC4wIC0+IDEuMCAwLjAKQEAgLTE3MDgsNiArMTc0NSwyMyBAQAogY29zaDAwMzAgY29zaCA3MTAuNSAyLjM1MTk5OTk5OTk5OTk5OTkgLT4gLTEuMjk2NzQ2NTIzOTM1NTk5OGUrMzA4IDEuMzA3NjcwNzkwODg1NzMzM2UrMzA4CiBjb3NoMDAzMSBjb3NoIC03MTAuNSAwLjY5OTk5OTk5OTk5OTk5OTk2IC0+IDEuNDA4NTQ2NjM4MTM5MjQ5OWUrMzA4IC0xLjE4NjQwMjQ2NjY0NTAyMzllKzMwOAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitjb3NoMDA1MCBjb3NoIDFlLTE1MCAwLjAgLT4gMS4wIDAuMAorY29zaDAwNTEgY29zaCAxZS0xOCAwLjAgLT4gMS4wIDAuMAorY29zaDAwNTIgY29zaCAxZS0wOSAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMDA1IDAuMAorY29zaDAwNTMgY29zaCAwLjAwMDMgMC4wIC0+IDEuMDAwMDAwMDQ1MDAwMDAwMzM3NSAwLjAKK2Nvc2gwMDU0IGNvc2ggMC4yIDAuMCAtPiAxLjAyMDA2Njc1NTYxOTA3NTg0ODUgMC4wCitjb3NoMDA1NSBjb3NoIDEuMCAwLjAgLT4gMS41NDMwODA2MzQ4MTUyNDM3Nzg1IDAuMAorY29zaDAwNTYgY29zaCAtMWUtMTggMC4wIC0+IDEuMCAtMC4wCitjb3NoMDA1NyBjb3NoIC0wLjAwMDMgMC4wIC0+IDEuMDAwMDAwMDQ1MDAwMDAwMzM3NSAtMC4wCitjb3NoMDA1OCBjb3NoIC0xLjAgMC4wIC0+IDEuNTQzMDgwNjM0ODE1MjQzNzc4NSAtMC4wCitjb3NoMDA1OSBjb3NoIDEuMzE2OTU3ODk2OTI0ODE2OCAwLjAgLT4gMi4wMDAwMDAwMDAwMDAwMDAxNTA0IDAuMAorY29zaDAwNjAgY29zaCAtMS4zMTY5NTc4OTY5MjQ4MTY4IDAuMCAtPiAyLjAwMDAwMDAwMDAwMDAwMDE1MDQgLTAuMAorY29zaDAwNjEgY29zaCAxNy4zMjg2Nzk1MTM5OTg2MzMgMC4wIC0+IDE2Nzc3MjE2LjAwMDAwMDAyMTkzOCAwLjAKK2Nvc2gwMDYyIGNvc2ggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiA2NzEwODg2NC4wMDAwMDAwNDM2NjIgMC4wCitjb3NoMDA2MyBjb3NoIDcwOS43ODI3IDAuMCAtPiA4Ljk4ODM0OTc4MzMxOTAwNzMyNzJlKzMwNyAwLjAKK2Nvc2gwMDY0IGNvc2ggLTcwOS43ODI3IDAuMCAtPiA4Ljk4ODM0OTc4MzMxOTAwNzMyNzJlKzMwNyAtMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBjb3NoMTAwMCBjb3NoIDAuMCAwLjAgLT4gMS4wIDAuMAogY29zaDEwMDEgY29zaCAwLjAgaW5mIC0+IG5hbiAwLjAgICAgICAgIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMTgwMCw2ICsxODU0LDI0IEBACiBzaW5oMDAzMCBzaW5oIDcxMC41IC0yLjM5OTk5OTk5OTk5OTk5OTkgLT4gLTEuMzU3OTk3MDU2NDg4NTkxOWUrMzA4IC0xLjI0Mzk0NDcwOTA3Nzk4ZSszMDgKIHNpbmgwMDMxIHNpbmggLTcxMC41IDAuODAwMDAwMDAwMDAwMDAwMDQgLT4gLTEuMjgzMDY3MTYwMTczNTE2NGUrMzA4IDEuMzIxMDk1NDE5Mzk5NzY3OGUrMzA4CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NpbmgwMDUwIHNpbmggMWUtMTAwIDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAyZS0xMDAgMC4wCitzaW5oMDA1MSBzaW5oIDVlLTE3IDAuMCAtPiA0Ljk5OTk5OTk5OTk5OTk5OTg5NTVlLTE3IDAuMAorc2luaDAwNTIgc2luaCAxZS0xNiAwLjAgLT4gOS45OTk5OTk5OTk5OTk5OTk3OTFlLTE3IDAuMAorc2luaDAwNTMgc2luaCAzLjdlLTA4IDAuMCAtPiAzLjcwMDAwMDAwMDAwMDAwMDg4ODVlLTggMC4wCitzaW5oMDA1NCBzaW5oIDAuMDAxIDAuMCAtPiAwLjAwMTAwMDAwMDE2NjY2NjY3NTAyMDggMC4wCitzaW5oMDA1NSBzaW5oIDAuMiAwLjAgLT4gMC4yMDEzMzYwMDI1NDEwOTM5OTg5NSAwLjAKK3NpbmgwMDU2IHNpbmggMS4wIDAuMCAtPiAxLjE3NTIwMTE5MzY0MzgwMTQ1NjkgMC4wCitzaW5oMDA1NyBzaW5oIC0zLjdlLTA4IDAuMCAtPiAtMy43MDAwMDAwMDAwMDAwMDA4ODg1ZS04IDAuMAorc2luaDAwNTggc2luaCAtMC4wMDEgMC4wIC0+IC0wLjAwMTAwMDAwMDE2NjY2NjY3NTAyMDggMC4wCitzaW5oMDA1OSBzaW5oIC0xLjAgMC4wIC0+IC0xLjE3NTIwMTE5MzY0MzgwMTQ1NjkgMC4wCitzaW5oMDA2MCBzaW5oIDEuNDQzNjM1NDc1MTc4ODEwMyAwLjAgLT4gMS45OTk5OTk5OTk5OTk5OTk5MDc4IDAuMAorc2luaDAwNjEgc2luaCAtMS40NDM2MzU0NzUxNzg4MTAzIDAuMCAtPiAtMS45OTk5OTk5OTk5OTk5OTk5MDc4IDAuMAorc2luaDAwNjIgc2luaCAxNy4zMjg2Nzk1MTM5OTg2MzMgMC4wIC0+IDE2Nzc3MjE1Ljk5OTk5OTk5MjEzNiAwLjAKK3NpbmgwMDYzIHNpbmggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiA2NzEwODg2NC4wMDAwMDAwMzYyMTEgMC4wCitzaW5oMDA2NCBzaW5oIDcwOS43ODI3IDAuMCAtPiA4Ljk4ODM0OTc4MzMxOTAwNzMyNzJlKzMwNyAwLjAKK3NpbmgwMDY1IHNpbmggLTcwOS43ODI3IDAuMCAtPiAtOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBzaW5oMTAwMCBzaW5oIDAuMCAwLjAgLT4gMC4wIDAuMAogc2luaDEwMDEgc2luaCAwLjAgaW5mIC0+IDAuMCBuYW4gICAgICAgIGludmFsaWQgaWdub3JlLXJlYWwtc2lnbgpAQCAtMTg5Nyw2ICsxOTY5LDI0IEBACiB0YW5oMDAzMiB0YW5oIDEwMDAgLTIuMzE5OTk5OTk5OTk5OTk5OCAtPiAxLjAgMC4wCiB0YW5oMDAzMyB0YW5oIC0xLjAwMDAwMDAwMDAwMDAwMDFlKzMwMCAtOS42Njk5OTk5OTk5OTk5OTk5IC0+IC0xLjAgLTAuMAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCit0YW5oMDA1MCB0YW5oIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAordGFuaDAwNTEgdGFuaCA1ZS0xNyAwLjAgLT4gNC45OTk5OTk5OTk5OTk5OTk4OTU1ZS0xNyAwLjAKK3RhbmgwMDUyIHRhbmggMWUtMTYgMC4wIC0+IDkuOTk5OTk5OTk5OTk5OTk5NzkxZS0xNyAwLjAKK3RhbmgwMDUzIHRhbmggMy43ZS0wOCAwLjAgLT4gMy42OTk5OTk5OTk5OTk5OTgzNTU5ZS04IDAuMAordGFuaDAwNTQgdGFuaCAwLjAwMSAwLjAgLT4gMC4wMDA5OTk5OTk2NjY2NjY4MDAwMjA3NiAwLjAKK3RhbmgwMDU1IHRhbmggMC4yIDAuMCAtPiAwLjE5NzM3NTMyMDIyNDkwNDAxMTQxIDAuMAordGFuaDAwNTYgdGFuaCAxLjAgMC4wIC0+IDAuNzYxNTk0MTU1OTU1NzY0ODg4MTIgMC4wCit0YW5oMDA1NyB0YW5oIC0zLjdlLTA4IDAuMCAtPiAtMy42OTk5OTk5OTk5OTk5OTgzNTU5ZS04IDAuMAordGFuaDAwNTggdGFuaCAtMC4wMDEgMC4wIC0+IC0wLjAwMDk5OTk5OTY2NjY2NjgwMDAyMDc2IDAuMAordGFuaDAwNTkgdGFuaCAtMS4wIDAuMCAtPiAtMC43NjE1OTQxNTU5NTU3NjQ4ODgxMiAwLjAKK3RhbmgwMDYwIHRhbmggMC41NDkzMDYxNDQzMzQwNTQ5IDAuMCAtPiAwLjUwMDAwMDAwMDAwMDAwMDAzNDAyIDAuMAordGFuaDAwNjEgdGFuaCAtMC41NDkzMDYxNDQzMzQwNTQ5IDAuMCAtPiAtMC41MDAwMDAwMDAwMDAwMDAwMzQwMiAwLjAKK3RhbmgwMDYyIHRhbmggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5ODIyMzY0IDAuMAordGFuaDAwNjMgdGFuaCAxOC43MTQ5NzM4NzUxMTg1MjQgMC4wIC0+IDAuOTk5OTk5OTk5OTk5OTk5ODg4OTggMC4wCit0YW5oMDA2NCB0YW5oIDcxMSAwLjAgLT4gMS4wIDAuMAordGFuaDAwNjUgdGFuaCAxLjc5N2UrMzA4IDAuMCAtPiAxLjAgMC4wCisKIC0tc3BlY2lhbCB2YWx1ZXMKIHRhbmgxMDAwIHRhbmggMC4wIDAuMCAtPiAwLjAgMC4wCiB0YW5oMTAwMSB0YW5oIDAuMCBpbmYgLT4gbmFuIG5hbiAgICAgICAgaW52YWxpZApAQCAtMTk4NSw2ICsyMDc1LDIyIEBACiBjb3MwMDIyIGNvcyA3Ljk5MTQ1MTU0MzM4NTg1MTUgMC43MTY1OTk2NjYxNTUwMTQzNiAtPiAtMC4xNzM3NTQzOTkwNjkzNjU2NiAtMC43NzIxNzA0MzUyNzI5NDU4MgogY29zMDAyMyBjb3MgMC40NTEyNDM1MTE1MjU0MDIyNiAxLjY5OTI2OTM5OTM4MTIxNTggLT4gMi41NDM0Nzc5NDg5NzIyMzcgLTEuMTUyODE5MzY5NDg3NTQ3NwogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitjb3MwMDUwIGNvcyAxZS0xNTAgMC4wIC0+IDEuMCAtMC4wCitjb3MwMDUxIGNvcyAxZS0xOCAwLjAgLT4gMS4wIC0wLjAKK2NvczAwNTIgY29zIDFlLTA5IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTk5OTUgLTAuMAorY29zMDA1MyBjb3MgMC4wMDAzIDAuMCAtPiAwLjk5OTk5OTk1NTAwMDAwMDMzNzUgLTAuMAorY29zMDA1NCBjb3MgMC4yIDAuMCAtPiAwLjk4MDA2NjU3Nzg0MTI0MTYyODkyIC0wLjAKK2NvczAwNTUgY29zIDEuMCAwLjAgLT4gMC41NDAzMDIzMDU4NjgxMzk3MTc0IC0wLjAKK2NvczAwNTYgY29zIC0xZS0xOCAwLjAgLT4gMS4wIDAuMAorY29zMDA1NyBjb3MgLTAuMDAwMyAwLjAgLT4gMC45OTk5OTk5NTUwMDAwMDAzMzc1IDAuMAorY29zMDA1OCBjb3MgLTEuMCAwLjAgLT4gMC41NDAzMDIzMDU4NjgxMzk3MTc0IDAuMAorY29zMDA1OSBjb3MgMS4wNDcxOTc1NTExOTY1OTc2IDAuMCAtPiAwLjUwMDAwMDAwMDAwMDAwMDA5OTQ1IC0wLjAKK2NvczAwNjAgY29zIDIuNTcwNzk2MzI2Nzk0ODk2NiAwLjAgLT4gLTAuODQxNDcwOTg0ODA3ODk2NDczNTcgLTAuMAorY29zMDA2MSBjb3MgLTIuNTcwNzk2MzI2Nzk0ODk2NiAwLjAgLT4gLTAuODQxNDcwOTg0ODA3ODk2NDczNTcgMC4wCitjb3MwMDYyIGNvcyA3LjIyNTY2MzEwMzI1NjUyMyAwLjAgLT4gMC41ODc3ODUyNTIyOTI0NzQwNzU1OSAtMC4wCitjb3MwMDYzIGNvcyAtOC43OTY0NTk0MzAwNTE0MiAwLjAgLT4gLTAuODA5MDE2OTk0Mzc0OTQ3MjIyNTUgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBjb3MxMDAwIGNvcyAtMC4wIDAuMCAtPiAxLjAgMC4wCiBjb3MxMDAxIGNvcyAtaW5mIDAuMCAtPiBuYW4gMC4wIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMjA3Myw2ICsyMTc5LDIyIEBACiBzaW4wMDIyIHNpbiAxLjE1MTgwODczNTQ0MDM3MjUgNC44NTk3MjM1OTY2MTUwNTU4IC0+IDU4LjkxOTE0MTk4OTYwMzA0MSAyNi4yMzcwMDM0MDM3NTg4NTIKIHNpbjAwMjMgc2luIDAuMDAwODc3NzMwNzg0MDY2NDkxOTIgMzQuNzkyMzc5MjExMzEyMDk1IC0+IDU2NTU0ODE0NTU2OS4zODI0NSA2NDQzMjk2ODU4MjI3MDAuNjIKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorc2luMDA1MCBzaW4gMWUtMTAwIDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAyZS0xMDAgMC4wCitzaW4wMDUxIHNpbiAzLjdlLTA4IDAuMCAtPiAzLjY5OTk5OTk5OTk5OTk5OTIwMDFlLTggMC4wCitzaW4wMDUyIHNpbiAwLjAwMSAwLjAgLT4gMC4wMDA5OTk5OTk4MzMzMzMzNDE2ODc0OCAwLjAKK3NpbjAwNTMgc2luIDAuMiAwLjAgLT4gMC4xOTg2NjkzMzA3OTUwNjEyMjYzNCAwLjAKK3NpbjAwNTQgc2luIDEuMCAwLjAgLT4gMC44NDE0NzA5ODQ4MDc4OTY1MDY2NSAwLjAKK3NpbjAwNTUgc2luIC0zLjdlLTA4IDAuMCAtPiAtMy42OTk5OTk5OTk5OTk5OTkyMDAxZS04IDAuMAorc2luMDA1NiBzaW4gLTAuMDAxIDAuMCAtPiAtMC4wMDA5OTk5OTk4MzMzMzMzNDE2ODc0OCAwLjAKK3NpbjAwNTcgc2luIC0xLjAgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjUwNjY1IDAuMAorc2luMDA1OCBzaW4gMC41MjM1OTg3NzU1OTgyOTg5IDAuMCAtPiAwLjUwMDAwMDAwMDAwMDAwMDA0NjQyIDAuMAorc2luMDA1OSBzaW4gLTAuNTIzNTk4Nzc1NTk4Mjk4OSAwLjAgLT4gLTAuNTAwMDAwMDAwMDAwMDAwMDQ2NDIgMC4wCitzaW4wMDYwIHNpbiAyLjYxNzk5Mzg3Nzk5MTQ5NDQgMC4wIC0+IDAuNDk5OTk5OTk5OTk5OTk5OTYwMTggLTAuMAorc2luMDA2MSBzaW4gLTIuNjE3OTkzODc3OTkxNDk0NCAwLjAgLT4gLTAuNDk5OTk5OTk5OTk5OTk5OTYwMTggLTAuMAorc2luMDA2MiBzaW4gNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDAuODA5MDE2OTk0Mzc0OTQ2NzM2NDggMC4wCitzaW4wMDYzIHNpbiAtOC43OTY0NTk0MzAwNTE0MiAwLjAgLT4gLTAuNTg3Nzg1MjUyMjkyNDczNDA2NTggLTAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc2luMTAwMCBzaW4gLTAuMCAwLjAgLT4gLTAuMCAwLjAKIHNpbjEwMDEgc2luIC1pbmYgMC4wIC0+IG5hbiAwLjAgaW52YWxpZCBpZ25vcmUtaW1hZy1zaWduCkBAIC0yMTYxLDYgKzIyODMsMjUgQEAKIHRhbjAwMjIgdGFuIDEuMTYxNTMxMzkwMDg4MDU3NyAxLjc5NTYyOTg3Mjg2NDcxMDcgLT4gMC4wNDE3OTMxODY4MjYzOTAzNjIgMS4wMzc1MzM5NTQ2MDM0NzkyCiB0YW4wMDIzIHRhbiAwLjA2NzAxNDc3OTQ3NzkwODk0NSA1Ljg1MTczNjE1Nzc0NTcwOTcgLT4gMi4yMDg4NjM5NzU0ODAwMDM0ZS0wNiAwLjk5OTk4MzYxODI0MjAwNjEKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQordGFuMDA1MCB0YW4gMWUtMTAwIDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAyZS0xMDAgMC4wCit0YW4wMDUxIHRhbiAzLjdlLTA4IDAuMCAtPiAzLjcwMDAwMDAwMDAwMDAwMTczMjhlLTggMC4wCit0YW4wMDUyIHRhbiAwLjAwMSAwLjAgLT4gMC4wMDEwMDAwMDAzMzMzMzM0NjY2ODc1IDAuMAordGFuMDA1MyB0YW4gMC4yIDAuMCAtPiAwLjIwMjcxMDAzNTUwODY3MjQ5NDg4IDAuMAordGFuMDA1NCB0YW4gMS4wIDAuMCAtPiAxLjU1NzQwNzcyNDY1NDkwMjIzMDUgMC4wCit0YW4wMDU1IHRhbiAtMy43ZS0wOCAwLjAgLT4gLTMuNzAwMDAwMDAwMDAwMDAxNzMyOGUtOCAwLjAKK3RhbjAwNTYgdGFuIC0wLjAwMSAwLjAgLT4gLTAuMDAxMDAwMDAwMzMzMzMzNDY2Njg3NSAwLjAKK3RhbjAwNTcgdGFuIC0xLjAgMC4wIC0+IC0xLjU1NzQwNzcyNDY1NDkwMjIzMDUgMC4wCit0YW4wMDU4IHRhbiAwLjQ2MzY0NzYwOTAwMDgwNjEgMC4wIC0+IDAuNDk5OTk5OTk5OTk5OTk5OTcxNjMgMC4wCit0YW4wMDU5IHRhbiAtMC40NjM2NDc2MDkwMDA4MDYxIDAuMCAtPiAtMC40OTk5OTk5OTk5OTk5OTk5NzE2MyAwLjAKK3RhbjAwNjAgdGFuIDEuMTA3MTQ4NzE3Nzk0MDkwNCAwLjAgLT4gMS45OTk5OTk5OTk5OTk5OTk1Mjk4IDAuMAordGFuMDA2MSB0YW4gLTEuMTA3MTQ4NzE3Nzk0MDkwNCAwLjAgLT4gLTEuOTk5OTk5OTk5OTk5OTk5NTI5OCAwLjAKK3RhbjAwNjIgdGFuIDEuNSAwLjAgLT4gMTQuMTAxNDE5OTQ3MTcxNzE5Mzg4IDAuMAordGFuMDA2MyB0YW4gMS41NyAwLjAgLT4gMTI1NS43NjU1OTE1MDA3ODk2NDc1IDAuMAordGFuMDA2NCB0YW4gMS41NzA3OTYzMjY3OTQ4OTYxIDAuMCAtPiAxOTc4OTM3OTY2MDk1MjE5LjA1MzggMC4wCit0YW4wMDY1IHRhbiA3LjIyNTY2MzEwMzI1NjUyMyAwLjAgLT4gMS4zNzYzODE5MjA0NzExNzAxNTIyIDAuMAordGFuMDA2NiB0YW4gLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IDAuNzI2NTQyNTI4MDA1MzYxNDA5OCAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHRhbjEwMDAgdGFuIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiB0YW4xMDAxIHRhbiAtaW5mIDAuMCAtPiBuYW4gbmFuIGludmFsaWQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5IGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKaW5kZXggMDg2MGRiOC4uOTg4YzZmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKQEAgLTIsMTQgKzIsMjIgQEAKIAogU2VlIGh0dHA6Ly93d3cuem9wZS5vcmcvTWVtYmVycy9mZHJha2UvRGF0ZVRpbWVXaWtpL1Rlc3RDYXNlcwogIiIiCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaXNfcmVzb3VyY2VfZW5hYmxlZAorCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgYmlzZWN0CiAKIGltcG9ydCBjb3B5CiBpbXBvcnQgZGVjaW1hbAogaW1wb3J0IHN5cworaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RydWN0CiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKKwogZnJvbSBvcGVyYXRvciBpbXBvcnQgbHQsIGxlLCBndCwgZ2UsIGVxLCBuZSwgdHJ1ZWRpdiwgZmxvb3JkaXYsIG1vZAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTI4NCw3ICsyOTIsOCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6IHNlbGYuRVNULmRzdCg1KQogCiAgICAgZGVmIHRlc3RfdHpuYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMrMDA6MDAnLCB0aW1lem9uZShaRVJPKS50em5hbWUoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQycsIHRpbWV6b25lLnV0Yy50em5hbWUoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQycsIHRpbWV6b25lKFpFUk8pLnR6bmFtZShOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDLTA1OjAwJywgdGltZXpvbmUoLTUgKiBIT1VSKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQyswOTozMCcsIHRpbWV6b25lKDkuNSAqIEhPVVIpLnR6bmFtZShOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDLTAwOjAxJywgdGltZXpvbmUodGltZWRlbHRhKG1pbnV0ZXM9LTEpKS50em5hbWUoTm9uZSkpCkBAIC0xNTU4LDEzICsxNTY3LDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCBkdDIpCiAKICAgICBkZWYgdGVzdF9pc29mb3JtYXQoc2VsZik6Ci0gICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIsIDMsIDIsIDQsIDUsIDEsIDEyMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAgICAiMDAwMi0wMy0wMlQwNDowNTowMS4wMDAxMjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdUJyksICIwMDAyLTAzLTAyVDA0OjA1OjAxLjAwMDEyMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJyAnKSwgIjAwMDItMDMtMDIgMDQ6MDU6MDEuMDAwMTIzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnXHgwMCcpLCAiMDAwMi0wMy0wMlx4MDAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxLCAxMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnVCcpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAxLTAyLTAzIDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1x4MDAnKSwgIjAwMDEtMDItMDNceDAwMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0naG91cnMnKSwgIjAwMDEtMDItMDNUMDQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJyksICIwMDAxLTAyLTAzVDA0OjA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHNlcD0nICcsIHRpbWVzcGVjPSdtaW51dGVzJyksICIwMDAxLTAyLTAzIDA0OjA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5pc29mb3JtYXQsIHRpbWVzcGVjPSdmb28nKQogICAgICAgICAjIHN0ciBpcyBJU08gZm9ybWF0IHdpdGggdGhlIHNlcGFyYXRvciBmb3JjZWQgdG8gYSBibGFuay4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodCksICIwMDAyLTAzLTAyIDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMS0wMi0wMyAwNDowNTowMS4wMDAxMjMiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEsIDk5OTUwMCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjk5OSswMDowMCIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSwgOTk5NTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuOTk5IikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAwMDAiKQogCiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIsIDMsIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDItMDMtMDJUMDA6MDA6MDAiKQpAQCAtMTU3Miw2ICsxNjAwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJyAnKSwgIjAwMDItMDMtMDIgMDA6MDA6MDAiKQogICAgICAgICAjIHN0ciBpcyBJU08gZm9ybWF0IHdpdGggdGhlIHNlcGFyYXRvciBmb3JjZWQgdG8gYSBibGFuay4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodCksICIwMDAyLTAzLTAyIDAwOjAwOjAwIikKKyAgICAgICAgIyBJU08gZm9ybWF0IHdpdGggdGltZXpvbmUKKyAgICAgICAgdHogPSBGaXhlZE9mZnNldCh0aW1lZGVsdGEoc2Vjb25kcz0xNiksICdYWFgnKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyLCB0emluZm89dHopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgIjAwMDItMDMtMDJUMDA6MDA6MDArMDA6MDA6MTYiKQogCiAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3MoMjAwNywgOSwgMTAsIDQsIDUsIDEsIDEyMykKQEAgLTE2OTEsNiArMTcyMywxNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAwLCAxLCAzMSwgMjMsIDU5LCA1OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDAwMCkKKyAgICAgICAgIyBiYWQgZm9sZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAwLCAxLCAzMSwgZm9sZD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIGZvbGQ9MikKKyAgICAgICAgIyBQb3NpdGlvbmFsIGZvbGQ6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIDIzLCA1OSwgNTksIDAsIE5vbmUsIDEpCiAKICAgICBkZWYgdGVzdF9oYXNoX2VxdWFsaXR5KHNlbGYpOgogICAgICAgICBkID0gc2VsZi50aGVjbGFzcygyMDAwLCAxMiwgMzEsIDIzLCAzMCwgMTcpCkBAIC0xODc0LDE2ICsxOTE0LDIwIEBACiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIDEsIDIsIDMsIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAxODAwMC4wICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQotICAgICAgICAjIE1pc3NpbmcgaG91ciBtYXkgcHJvZHVjZSBwbGF0Zm9ybS1kZXBlbmRlbnQgcmVzdWx0Ci0gICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDMsIDExLCAyLCAzMCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksCi0gICAgICAgICAgICAgICAgICAgICAgW3QgLSB0aW1lZGVsdGEoaG91cnM9MSksIHQgKyB0aW1lZGVsdGEoaG91cnM9MSldKQorICAgICAgICAjIE1pc3NpbmcgaG91cgorICAgICAgICB0MCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMywgMTEsIDIsIDMwKQorICAgICAgICB0MSA9IHQwLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0MS50aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdDAgLSB0aW1lZGVsdGEoaG91cnM9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQwLnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0MSArIHRpbWVkZWx0YShob3Vycz0xKSkKICAgICAgICAgIyBBbWJpZ3VvdXMgaG91ciBkZWZhdWx0cyB0byBEU1QKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMTEsIDQsIDEsIDMwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwgdCkKIAogICAgICAgICAjIFRpbWVzdGFtcCBtYXkgcmFpc2UgYW4gb3ZlcmZsb3cgZXJyb3Igb24gc29tZSBwbGF0Zm9ybXMKLSAgICAgICAgZm9yIHQgaW4gW3NlbGYudGhlY2xhc3MoMSwxLDEpLCBzZWxmLnRoZWNsYXNzKDk5OTksMTIsMTIpXToKKyAgICAgICAgIyBYWFg6IERvIHdlIGNhcmUgdG8gc3VwcG9ydCB0aGUgZmlyc3QgYW5kIGxhc3QgeWVhcj8KKyAgICAgICAgZm9yIHQgaW4gW3NlbGYudGhlY2xhc3MoMiwxLDEpLCBzZWxmLnRoZWNsYXNzKDk5OTgsMTIsMTIpXToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzID0gdC50aW1lc3RhbXAoKQogICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CkBAIC0xOTAyLDYgKzE5NDYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCiAKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignTVNLLTAzJykgICMgU29tZXRoaW5nIGVhc3Qgb2YgR3JlZW53aWNoCiAgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRfcm91bmRpbmcoc2VsZik6CiAgICAgICAgIGZvciBmdHMgaW4gW3NlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wXToKQEAgLTIwNzYsMTEgKzIxMjEsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lKSAjIG5lZWQgYW4gYXJnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCkgIyBuZWVkIHR3byBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgdCwgZCkgIyBhcmdzIHJldmVyc2VkCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgdCwgMSkgIyB0b28gbWFueSBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgdCwgMSkgIyB3cm9uZyB0emluZm8gdHlwZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEsIDIpICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCAiZGF0ZSIsICJ0aW1lIikgIyB3cm9uZyB0eXBlcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsICJ0aW1lIikgIyB3cm9uZyB0eXBlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgImRhdGUiLCB0KSAjIHdyb25nIHR5cGUKIAorICAgICAgICAjIHR6aW5mbz0gYXJndW1lbnQKKyAgICAgICAgZHQgPSBjb21iaW5lKGQsIHQsIHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkdC50emluZm8sIHRpbWV6b25lLnV0YykKKyAgICAgICAgZHQgPSBjb21iaW5lKGQsIHQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHQudHppbmZvLCB0aW1lem9uZS51dGMpCisgICAgICAgIHQgPSB0aW1lKCkKKyAgICAgICAgZHQgPSBjb21iaW5lKGR0LCB0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmRhdGUoKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC50aW1lKCksIHQpCisKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCiAgICAgICAgIGFyZ3MgPSBbMSwgMiwgMywgNCwgNSwgNiwgN10KQEAgLTIxMDcsNiArMjE2Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJhc2UucmVwbGFjZSwgeWVhcj0yMDAxKQogCiAgICAgZGVmIHRlc3RfYXN0aW1lem9uZShzZWxmKToKKyAgICAgICAgcmV0dXJuICAjIFRoZSByZXN0IGlzIG5vIGxvbmdlciBhcHBsaWNhYmxlCiAgICAgICAgICMgUHJldHR5IGJvcmluZyEgIFRoZSBUWiB0ZXN0IGlzIG1vcmUgaW50ZXJlc3RpbmcgaGVyZS4gIGFzdGltZXpvbmUoKQogICAgICAgICAjIHNpbXBseSBjYW4ndCBiZSBhcHBsaWVkIHRvIGEgbmFpdmUgb2JqZWN0LgogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3Mubm93KCkKQEAgLTIzMjQsNiArMjM4MSwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICIwMDowMDowMC4xMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksIHN0cih0KSkKIAorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MTIzNDU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdob3VycycpLCAiMTIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJyksICIxMjozNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J3NlY29uZHMnKSwgIjEyOjM0OjU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIxMjozNDo1Ni4xMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjEyOjM0OjU2LjEyMzQ1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjEyOjM0OjU2LjEyMzQ1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuaXNvZm9ybWF0LCB0aW1lc3BlYz0nbW9ua2V5JykKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9OTk5NTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjEyOjM0OjU2Ljk5OSIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMTI6MzQ6NTYuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIxMjozNDo1Ni4wMDAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIxMjozNDo1NiIpCisKICAgICBkZWYgdGVzdF8xNjUzNzM2KHNlbGYpOgogICAgICAgICAjIHZlcmlmeSBpdCBkb2Vzbid0IGFjY2VwdCBleHRyYSBrZXl3b3JkIGFyZ3VtZW50cwogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhzZWNvbmQ9MSkKQEAgLTI1ODIsOSArMjY1Niw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQudXRjb2Zmc2V0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LmRzdCkKIAotICAgICAgICAjIE5vdCBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzLgorICAgICAgICAjIE5vdCBhIHdob2xlIG51bWJlciBvZiBzZWNvbmRzLgogICAgICAgICBjbGFzcyBDNyh0emluZm8pOgotICAgICAgICAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6IHJldHVybiB0aW1lZGVsdGEoc2Vjb25kcz02MSkKKyAgICAgICAgICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKG1pY3Jvc2Vjb25kcz02MSkKICAgICAgICAgICAgIGRlZiBkc3Qoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKG1pY3Jvc2Vjb25kcz0tODEpCiAgICAgICAgIHQgPSBjbHMoMSwgMSwgMSwgdHppbmZvPUM3KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQudXRjb2Zmc2V0KQpAQCAtMzkyNywxMiArNDAwMSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZSh4eCwgeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCkpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15hbiBpbnRlZ2VyIGlzIHJlcXVpcmVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1woZ290IHR5cGUgc3RyXCkkJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcKGdvdCB0eXBlIHN0clwpJCcpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAnMTAnKQogCiAgICAgICAgIGYxMCA9IE51bWJlcigxMC45KQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXl9faW50X18gcmV0dXJuZWQgbm9uLWludCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKHR5cGUgZmxvYXRcKSQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1wodHlwZSBmbG9hdFwpJCcpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCBmMTApCiAKICAgICAgICAgY2xhc3MgRmxvYXQoZmxvYXQpOgpAQCAtMzk1Nyw1ICs0MDMxLDc5MCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMC4pCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24KKworIyBBbiBleHBlcmltZW50YWwgcmVpbXBsZW1lbnRhdGlvbiBvZiBmcm9tdXRjIHRoYXQgcmVzcGVjdHMgdGhlICJmb2xkIiBmbGFnLgorCitjbGFzcyB0emluZm8yKHR6aW5mbyk6CisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgICJkYXRldGltZSBpbiBVVEMgLT4gZGF0ZXRpbWUgaW4gbG9jYWwgdGltZS4iCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZHQsIGRhdGV0aW1lKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZnJvbXV0YygpIHJlcXVpcmVzIGEgZGF0ZXRpbWUgYXJndW1lbnQiKQorICAgICAgICBpZiBkdC50emluZm8gaXMgbm90IHNlbGY6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdC50emluZm8gaXMgbm90IHNlbGYiKQorICAgICAgICAjIFJldHVybmVkIHZhbHVlIHNhdGlzZmllcworICAgICAgICAjICAgICAgICAgIGR0ICsgbGR0LnV0Y29mZnNldCgpID0gbGR0CisgICAgICAgIG9mZjAgPSBkdC5yZXBsYWNlKGZvbGQ9MCkudXRjb2Zmc2V0KCkKKyAgICAgICAgb2ZmMSA9IGR0LnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKQorICAgICAgICBpZiBvZmYwIGlzIE5vbmUgb3Igb2ZmMSBpcyBOb25lIG9yIGR0LmRzdCgpIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIG9mZjAgPT0gb2ZmMToKKyAgICAgICAgICAgIGxkdCA9IGR0ICsgb2ZmMAorICAgICAgICAgICAgb2ZmMSA9IGxkdC51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgb2ZmMCA9PSBvZmYxOgorICAgICAgICAgICAgICAgIHJldHVybiBsZHQKKyAgICAgICAgIyBOb3csIHdlIGRpc2NvdmVyZWQgYm90aCBwb3NzaWJsZSBvZmZzZXRzLCBzbworICAgICAgICAjIHdlIGNhbiBqdXN0IHRyeSBmb3VyIHBvc3NpYmxlIHNvbHV0aW9uczoKKyAgICAgICAgZm9yIG9mZiBpbiBbb2ZmMCwgb2ZmMV06CisgICAgICAgICAgICBsZHQgPSBkdCArIG9mZgorICAgICAgICAgICAgaWYgbGR0LnV0Y29mZnNldCgpID09IG9mZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisgICAgICAgICAgICBsZHQgPSBsZHQucmVwbGFjZShmb2xkPTEpCisgICAgICAgICAgICBpZiBsZHQudXRjb2Zmc2V0KCkgPT0gb2ZmOgorICAgICAgICAgICAgICAgIHJldHVybiBsZHQKKworICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBzdWl0YWJsZSBsb2NhbCB0aW1lIGZvdW5kIikKKworIyBSZWltcGxlbWVudGluZyBzaW1wbGlmaWVkIFVTIHRpbWV6b25lcyB0byByZXNwZWN0IHRoZSAiZm9sZCIgZmxhZzoKKworY2xhc3MgVVNUaW1lWm9uZTIodHppbmZvMik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG91cnMsIHJlcHJuYW1lLCBzdGRuYW1lLCBkc3RuYW1lKToKKyAgICAgICAgc2VsZi5zdGRvZmZzZXQgPSB0aW1lZGVsdGEoaG91cnM9aG91cnMpCisgICAgICAgIHNlbGYucmVwcm5hbWUgPSByZXBybmFtZQorICAgICAgICBzZWxmLnN0ZG5hbWUgPSBzdGRuYW1lCisgICAgICAgIHNlbGYuZHN0bmFtZSA9IGRzdG5hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVwcm5hbWUKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICBpZiBzZWxmLmRzdChkdCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kc3RuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zdGRuYW1lCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuc3Rkb2Zmc2V0ICsgc2VsZi5kc3QoZHQpCisKKyAgICBkZWYgZHN0KHNlbGYsIGR0KToKKyAgICAgICAgaWYgZHQgaXMgTm9uZSBvciBkdC50emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgICMgQW4gZXhjZXB0aW9uIGluc3RlYWQgbWF5IGJlIHNlbnNpYmxlIGhlcmUsIGluIG9uZSBvciBtb3JlIG9mCisgICAgICAgICAgICAjIHRoZSBjYXNlcy4KKyAgICAgICAgICAgIHJldHVybiBaRVJPCisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorCisgICAgICAgICMgRmluZCBmaXJzdCBTdW5kYXkgaW4gQXByaWwuCisgICAgICAgIHN0YXJ0ID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKERTVFNUQVJULnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKKyAgICAgICAgYXNzZXJ0IHN0YXJ0LndlZWtkYXkoKSA9PSA2IGFuZCBzdGFydC5tb250aCA9PSA0IGFuZCBzdGFydC5kYXkgPD0gNworCisgICAgICAgICMgRmluZCBsYXN0IFN1bmRheSBpbiBPY3RvYmVyLgorICAgICAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoRFNURU5ELnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKKyAgICAgICAgYXNzZXJ0IGVuZC53ZWVrZGF5KCkgPT0gNiBhbmQgZW5kLm1vbnRoID09IDEwIGFuZCBlbmQuZGF5ID49IDI1CisKKyAgICAgICAgIyBDYW4ndCBjb21wYXJlIG5haXZlIHRvIGF3YXJlIG9iamVjdHMsIHNvIHN0cmlwIHRoZSB0aW1lem9uZSBmcm9tCisgICAgICAgICMgZHQgZmlyc3QuCisgICAgICAgIGR0ID0gZHQucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgaWYgc3RhcnQgKyBIT1VSIDw9IGR0IDwgZW5kOgorICAgICAgICAgICAgIyBEU1QgaXMgaW4gZWZmZWN0LgorICAgICAgICAgICAgcmV0dXJuIEhPVVIKKyAgICAgICAgZWxpZiBlbmQgPD0gZHQgPCBlbmQgKyBIT1VSOgorICAgICAgICAgICAgIyBGb2xkIChhbiBhbWJpZ3VvdXMgaG91cik6IHVzZSBkdC5mb2xkIHRvIGRpc2FtYmlndWF0ZS4KKyAgICAgICAgICAgIHJldHVybiBaRVJPIGlmIGR0LmZvbGQgZWxzZSBIT1VSCisgICAgICAgIGVsaWYgc3RhcnQgPD0gZHQgPCBzdGFydCArIEhPVVI6CisgICAgICAgICAgICAjIEdhcCAoYSBub24tZXhpc3RlbnQgaG91cik6IHJldmVyc2UgdGhlIGZvbGQgcnVsZS4KKyAgICAgICAgICAgIHJldHVybiBIT1VSIGlmIGR0LmZvbGQgZWxzZSBaRVJPCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIERTVCBpcyBvZmYuCisgICAgICAgICAgICByZXR1cm4gWkVSTworCitFYXN0ZXJuMiAgPSBVU1RpbWVab25lMigtNSwgIkVhc3Rlcm4yIiwgICJFU1QiLCAiRURUIikKK0NlbnRyYWwyICA9IFVTVGltZVpvbmUyKC02LCAiQ2VudHJhbDIiLCAgIkNTVCIsICJDRFQiKQorTW91bnRhaW4yID0gVVNUaW1lWm9uZTIoLTcsICJNb3VudGFpbjIiLCAiTVNUIiwgIk1EVCIpCitQYWNpZmljMiAgPSBVU1RpbWVab25lMigtOCwgIlBhY2lmaWMyIiwgICJQU1QiLCAiUERUIikKKworIyBFdXJvcGVfVmlsbml1c18xOTQxIHR6aW5mbyBpbXBsZW1lbnRhdGlvbiByZXByb2R1Y2VzIHRoZSBmb2xsb3dpbmcKKyMgMTk0MSB0cmFuc2l0aW9uIGZyb20gT2xzb24ncyB0emRpc3Q6CisjCisjIFpvbmUgTkFNRSAgICAgICAgICAgR01UT0ZGIFJVTEVTICBGT1JNQVQgW1VOVElMXQorIyBab25lRXVyb3BlL1ZpbG5pdXMgIDE6MDAgICAtICAgICAgQ0VUICAgIDE5NDAgQXVnICAzCisjICAgICAgICAgICAgICAgICAgICAgMzowMCAgIC0gICAgICBNU0sgICAgMTk0MSBKdW4gMjQKKyMgICAgICAgICAgICAgICAgICAgICAxOjAwICAgQy1FdXIgIENFJXNUICAxOTQ0IEF1ZworIworIyAkIHpkdW1wIC12IEV1cm9wZS9WaWxuaXVzIHwgZ3JlcCAxOTQxCisjIEV1cm9wZS9WaWxuaXVzICBNb24gSnVuIDIzIDIwOjU5OjU5IDE5NDEgVVRDID0gTW9uIEp1biAyMyAyMzo1OTo1OSAxOTQxIE1TSyBpc2RzdD0wIGdtdG9mZj0xMDgwMAorIyBFdXJvcGUvVmlsbml1cyAgTW9uIEp1biAyMyAyMTowMDowMCAxOTQxIFVUQyA9IE1vbiBKdW4gMjMgMjM6MDA6MDAgMTk0MSBDRVNUIGlzZHN0PTEgZ210b2ZmPTcyMDAKKworY2xhc3MgRXVyb3BlX1ZpbG5pdXNfMTk0MSh0emluZm8pOgorICAgIGRlZiBfdXRjX2ZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBbZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIxLCB0emluZm89c2VsZiksICAjIE1vbiBKdW4gMjMgMjE6MDA6MDAgMTk0MSBVVEMKKyAgICAgICAgICAgICAgICBkYXRldGltZSgxOTQxLCA2LCAyMywgMjIsIHR6aW5mbz1zZWxmKV0gICMgTW9uIEp1biAyMyAyMjowMDowMCAxOTQxIFVUQworCisgICAgZGVmIF9sb2NfZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFtkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIHR6aW5mbz1zZWxmKSwgICMgTW9uIEp1biAyMyAyMzowMDowMCAxOTQxIE1TSyAvIENFU1QKKyAgICAgICAgICAgICAgICBkYXRldGltZSgxOTQxLCA2LCAyNCwgMCwgdHppbmZvPXNlbGYpXSAgICMgTW9uIEp1biAyNCAwMDowMDowMCAxOTQxIENFU1QKKworICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl9sb2NfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiAzICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoMiBpZiBkdC5mb2xkIGVsc2UgMykgKiBIT1VSCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAyICogSE9VUgorCisgICAgZGVmIGRzdChzZWxmLCBkdCk6CisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX2xvY19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIDAgKiBIT1VSCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuICgxIGlmIGR0LmZvbGQgZWxzZSAwKSAqIEhPVVIKKyAgICAgICAgIyBpZiBkdCA+PSBmb2xkX3N0b3AKKyAgICAgICAgcmV0dXJuIDEgKiBIT1VSCisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fbG9jX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gJ01TSycKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKCdNU0snLCAnQ0VTVCcpW2R0LmZvbGRdCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAnQ0VTVCcKKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LmZvbGQgPT0gMAorICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKyAgICAgICAgaWYgZHQueWVhciAhPSAxOTQxOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl91dGNfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiBkdCArIDMgKiBIT1VSCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuIChkdCArIDIgKiBIT1VSKS5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgIyBpZiBkdCA+PSBmb2xkX3N0b3AKKyAgICAgICAgcmV0dXJuIGR0ICsgMiAqIEhPVVIKKworCitjbGFzcyBUZXN0TG9jYWxUaW1lRGlzYW1iaWd1YXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfdmlsbml1c18xOTQxX2Zyb211dGMoc2VsZik6CisgICAgICAgIFZpbG5pdXMgPSBFdXJvcGVfVmlsbml1c18xOTQxKCkKKworICAgICAgICBnZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjAsIDU5LCA1OSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbGR0ID0gZ2R0LmFzdGltZXpvbmUoVmlsbml1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuc3RyZnRpbWUoIiVjICVaJXoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMzo1OTo1OSAxOTQxIE1TSyswMzAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZHQuZHN0KCkpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIxLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsZHQgPSBnZHQuYXN0aW1lem9uZShWaWxuaXVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5zdHJmdGltZSgiJWMgJVoleiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIzOjAwOjAwIDE5NDEgQ0VTVCswMjAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxkdC5kc3QoKSkKKworICAgICAgICBnZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjIsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxkdCA9IGdkdC5hc3RpbWV6b25lKFZpbG5pdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnN0cmZ0aW1lKCIlYyAlWiV6IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1R1ZSBKdW4gMjQgMDA6MDA6MDAgMTk0MSBDRVNUKzAyMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGR0LmRzdCgpKQorCisgICAgZGVmIHRlc3Rfdmlsbml1c18xOTQxX3RvdXRjKHNlbGYpOgorICAgICAgICBWaWxuaXVzID0gRXVyb3BlX1ZpbG5pdXNfMTk0MSgpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCA1OSwgNTksIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDE5OjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIDU5LCA1OSwgdHppbmZvPVZpbG5pdXMpCisgICAgICAgIGdkdCA9IGxkdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZHQuc3RyZnRpbWUoIiVjICVaIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjA6NTk6NTkgMTk0MSBVVEMnKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMywgNTksIDU5LCB0emluZm89Vmlsbml1cywgZm9sZD0xKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIxOjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyNCwgMCwgdHppbmZvPVZpbG5pdXMpCisgICAgICAgIGdkdCA9IGxkdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZHQuc3RyZnRpbWUoIiVjICVaIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjI6MDA6MDAgMTk0MSBVVEMnKQorCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcnMoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDAsIGZvbGQ9MSkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmZvbGQsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRpbWUoMCwgMCwgMCwgMCwgTm9uZSwgMCkKKworICAgIGRlZiB0ZXN0X21lbWJlcihzZWxmKToKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIHQgPSBkdC50aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZvbGQsIDEpCisgICAgICAgIHQgPSBkdC50aW1ldHooKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZm9sZCwgMSkKKworICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UoZm9sZD0xKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0xKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVwbGFjZShmb2xkPTApLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTApLmZvbGQsIDApCisgICAgICAgICMgQ2hlY2sgdGhhdCByZXBsYWNlbWVudCBvZiBvdGhlciBmaWVsZHMgZG9lcyBub3QgY2hhbmdlICJmb2xkIi4KKyAgICAgICAgdCA9IHQucmVwbGFjZShmb2xkPTEsIHR6aW5mbz1FYXN0ZXJuKQorICAgICAgICBkdCA9IGR0LnJlcGxhY2UoZm9sZD0xLCB0emluZm89RWFzdGVybikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UodHppbmZvPU5vbmUpLmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZSh0emluZm89Tm9uZSkuZm9sZCwgMSkKKyAgICAgICAgIyBDaGVjayB0aGF0IGZvbGQgaXMgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdC5yZXBsYWNlKDEsIDEsIDEsIE5vbmUsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGR0LnJlcGxhY2UoMSwgMSwgMSwgMSwgMSwgMSwgMSwgTm9uZSwgMSkKKworICAgIGRlZiB0ZXN0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0LnJlcGxhY2UoZm9sZD0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgZHQucmVwbGFjZShmb2xkPTEpKQorCisgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoMCkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godCksIGhhc2godC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZHQpLCBoYXNoKGR0LnJlcGxhY2UoZm9sZD0xKSkpCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9mcm9tdGltZXN0YW1wKHNlbGYpOgorICAgICAgICBzID0gMTQxNDkwNjIwMAorICAgICAgICBkdDAgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMpCisgICAgICAgIGR0MSA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocyArIDM2MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQxLmZvbGQsIDEpCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignQXVzdHJhbGlhL0xvcmRfSG93ZScpCisgICAgZGVmIHRlc3RfZnJvbXRpbWVzdGFtcF9sb3JkX2hvd2Uoc2VsZik6CisgICAgICAgIHRtID0gX3RpbWUubG9jYWx0aW1lKDEuNGU5KQorICAgICAgICBpZiBfdGltZS5zdHJmdGltZSgnJVoleicsIHRtKSAhPSAnTEhTVCsxMDMwJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0F1c3RyYWxpYS9Mb3JkX0hvd2UgdGltZXpvbmUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtJykKKyAgICAgICAgIyAkIFRaPUF1c3RyYWxpYS9Mb3JkX0hvd2UgZGF0ZSAtciAxNDI4MTU4NzAwCisgICAgICAgICMgU3VuIEFwciAgNSAwMTo0NTowMCBMSERUIDIwMTUKKyAgICAgICAgIyAkIFRaPUF1c3RyYWxpYS9Mb3JkX0hvd2UgZGF0ZSAtciAxNDI4MTYwNTAwCisgICAgICAgICMgU3VuIEFwciAgNSAwMTo0NTowMCBMSFNUIDIwMTUKKyAgICAgICAgcyA9IDE0MjgxNTg3MDAKKyAgICAgICAgdDAgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMpCisgICAgICAgIHQxID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzICsgMTgwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MCwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS5mb2xkLCAxKQorCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXAoc2VsZik6CisgICAgICAgIGR0MCA9IGRhdGV0aW1lKDIwMTQsIDExLCAyLCAxLCAzMCkKKyAgICAgICAgZHQxID0gZHQwLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MC50aW1lc3RhbXAoKSArIDM2MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZHQxLnRpbWVzdGFtcCgpKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0F1c3RyYWxpYS9Mb3JkX0hvd2UnKQorICAgIGRlZiB0ZXN0X3RpbWVzdGFtcF9sb3JkX2hvd2Uoc2VsZik6CisgICAgICAgIHRtID0gX3RpbWUubG9jYWx0aW1lKDEuNGU5KQorICAgICAgICBpZiBfdGltZS5zdHJmdGltZSgnJVoleicsIHRtKSAhPSAnTEhTVCsxMDMwJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0F1c3RyYWxpYS9Mb3JkX0hvd2UgdGltZXpvbmUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtJykKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMTUsIDQsIDUsIDEsIDQ1KQorICAgICAgICBzMCA9IHQucmVwbGFjZShmb2xkPTApLnRpbWVzdGFtcCgpCisgICAgICAgIHMxID0gdC5yZXBsYWNlKGZvbGQ9MSkudGltZXN0YW1wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMCArIDE4MDAsIHMxKQorCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9hc3RpbWV6b25lKHNlbGYpOgorICAgICAgICBkdDAgPSBkYXRldGltZSgyMDE0LCAxMSwgMiwgMSwgMzApCisgICAgICAgIGR0MSA9IGR0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgIyBDb252ZXJ0IGJvdGggbmFpdmUgaW5zdGFuY2VzIHRvIGF3YXJlLgorICAgICAgICBhZHQwID0gZHQwLmFzdGltZXpvbmUoKQorICAgICAgICBhZHQxID0gZHQxLmFzdGltZXpvbmUoKQorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGZpcnN0IGluc3RhbmNlIGluIERTVCB6b25lIGFuZCB0aGUgc2Vjb25kIGluIFNURAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDAudHpuYW1lKCksICdFRFQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDEudHpuYW1lKCksICdFU1QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDAgKyBIT1VSLCBhZHQxKQorICAgICAgICAjIEF3YXJlIGluc3RhbmNlcyB3aXRoIGZpeGVkIG9mZnNldCB0emluZm8ncyBhbHdheXMgaGF2ZSBmb2xkPTAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MS5mb2xkLCAwKQorCisKKyAgICBkZWYgdGVzdF9waWNrbGVfZm9sZChzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoZm9sZD0xKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgZm9yIHBpY2tsZXIsIHVucGlja2xlciwgcHJvdG8gaW4gcGlja2xlX2Nob2ljZXM6CisgICAgICAgICAgICBmb3IgeCBpbiBbdCwgZHRdOgorICAgICAgICAgICAgICAgIHMgPSBwaWNrbGVyLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIHkgPSB1bnBpY2tsZXIubG9hZHMocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMCBpZiBwcm90byA8IDQgZWxzZSB4LmZvbGQpLCB5LmZvbGQpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICB0ID0gdGltZShmb2xkPTEpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIodCksICdkYXRldGltZS50aW1lKDAsIDAsIGZvbGQ9MSknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRldGltZS5kYXRldGltZSgxLCAxLCAxLCAwLCAwLCBmb2xkPTEpJykKKworICAgIGRlZiB0ZXN0X2RzdChzZWxmKToKKyAgICAgICAgIyBMZXQncyBmaXJzdCBlc3RhYmxpc2ggdGhhdCB0aGluZ3Mgd29yayBpbiByZWd1bGFyIHRpbWVzLgorICAgICAgICBkdF9zdW1tZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIHR6aW5mbz1FYXN0ZXJuMikgLSB0aW1lZGVsdGEucmVzb2x1dGlvbgorICAgICAgICBkdF93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDIsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF9zdW1tZXIuZHN0KCksIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLmRzdCgpLCBaRVJPKQorICAgICAgICAjIFRoZSBkaXNhbWJpZ3VhdGlvbiBmbGFnIGlzIGlnbm9yZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF9zdW1tZXIucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5yZXBsYWNlKGZvbGQ9MSkuZHN0KCksIFpFUk8pCisKKyAgICAgICAgIyBQaWNrIGxvY2FsIHRpbWUgaW4gdGhlIGZvbGQuCisgICAgICAgIGZvciBtaW51dGUgaW4gWzAsIDMwLCA1OV06CisgICAgICAgICAgICBkdCA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgbWludXRlLCB0emluZm89RWFzdGVybjIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0wICh0aGUgZGVmYXVsdCkgaXQgaXMgaW4gRFNULgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5kc3QoKSwgSE9VUikKKyAgICAgICAgICAgICMgV2l0aCBmb2xkPTEgaXQgaXMgaW4gU1RELgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZHN0KCksIFpFUk8pCisKKyAgICAgICAgIyBQaWNrIGxvY2FsIHRpbWUgaW4gdGhlIGdhcC4KKyAgICAgICAgZm9yIG1pbnV0ZSBpbiBbMCwgMzAsIDU5XToKKyAgICAgICAgICAgIGR0ID0gZGF0ZXRpbWUoMjAwMiwgNCwgNywgMiwgbWludXRlLCB0emluZm89RWFzdGVybjIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0wICh0aGUgZGVmYXVsdCkgaXQgaXMgaW4gU1RELgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5kc3QoKSwgWkVSTykKKyAgICAgICAgICAgICMgV2l0aCBmb2xkPTEgaXQgaXMgaW4gRFNULgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZHN0KCksIEhPVVIpCisKKworICAgIGRlZiB0ZXN0X3V0Y29mZnNldChzZWxmKToKKyAgICAgICAgIyBMZXQncyBmaXJzdCBlc3RhYmxpc2ggdGhhdCB0aGluZ3Mgd29yayBpbiByZWd1bGFyIHRpbWVzLgorICAgICAgICBkdF9zdW1tZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIHR6aW5mbz1FYXN0ZXJuMikgLSB0aW1lZGVsdGEucmVzb2x1dGlvbgorICAgICAgICBkdF93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDIsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF9zdW1tZXIudXRjb2Zmc2V0KCksIC00ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIudXRjb2Zmc2V0KCksIC01ICogSE9VUikKKyAgICAgICAgIyBUaGUgZGlzYW1iaWd1YXRpb24gZmxhZyBpcyBpZ25vcmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKSwgLTQgKiBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCksIC01ICogSE9VUikKKworICAgIGRlZiB0ZXN0X2Zyb211dGMoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgdV9zdW1tZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDYsIHR6aW5mbz1FYXN0ZXJuMikgLSB0aW1lZGVsdGEucmVzb2x1dGlvbgorICAgICAgICB1X3dpbnRlciA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNywgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X3N1bW1lciA9IEVhc3Rlcm4yLmZyb211dGModV9zdW1tZXIpCisgICAgICAgIHRfd2ludGVyID0gRWFzdGVybjIuZnJvbXV0Yyh1X3dpbnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3N1bW1lciwgdV9zdW1tZXIgLSA0ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3dpbnRlciwgdV93aW50ZXIgLSA1ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3N1bW1lci5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRfd2ludGVyLmZvbGQsIDApCisKKyAgICAgICAgIyBXaGF0IGhhcHBlbnMgaW4gdGhlIGZhbGwtYmFjayBmb2xkPworICAgICAgICB1ID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA1LCAzMCwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0MCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgdSArPSBIT1VSCisgICAgICAgIHQxID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLCB0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLmZvbGQsIDEpCisgICAgICAgICMgVGhlIHRyaWNreSBwYXJ0IGlzIHdoZW4gdSBpcyBpbiB0aGUgbG9jYWwgZm9sZDoKKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICgyNiwgMjEpKQorICAgICAgICAjIC4uIG9yIGdldHMgaW50byB0aGUgbG9jYWwgZm9sZCBhZnRlciBhIHN0YW5kYXJkIHRpbWUgYWRqdXN0bWVudAorICAgICAgICB1ID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA2LCAzMCwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0ID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh0LmRheSwgdC5ob3VyKSwgKDI3LCAxKSkKKworICAgICAgICAjIFdoYXQgaGFwcGVucyBpbiB0aGUgc3ByaW5nLWZvcndhcmQgZ2FwPworICAgICAgICB1ID0gZGF0ZXRpbWUoMjAwMiwgNCwgNywgMiwgMCwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0ID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh0LmRheSwgdC5ob3VyKSwgKDYsIDIxKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2NvbXBhcmVfcmVndWxhcihzZWxmKToKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDEsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSkKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDYsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2NvbXBhcmVfZm9sZChzZWxmKToKKyAgICAgICAgdF9mb2xkID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2ZvbGRfdXRjID0gdF9mb2xkLmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRfZm9sZCwgdF9mb2xkX3V0YykKKworICAgIGRlZiB0ZXN0X21peGVkX2NvbXBhcmVfZ2FwKHNlbGYpOgorICAgICAgICB0X2dhcCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHRfZ2FwX3V0YyA9IHRfZ2FwLmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRfZ2FwLCB0X2dhcF91dGMpCisKKyAgICBkZWYgdGVzdF9oYXNoX2F3YXJlKHNlbGYpOgorICAgICAgICB0ID0gZGF0ZXRpbWUoMjAwMCwgMSwgMSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godCksIGhhc2godC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICB0X2ZvbGQgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHRfZ2FwID0gZGF0ZXRpbWUoMjAwMiwgNCwgNywgMiwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHRfZm9sZCksIGhhc2godF9mb2xkLnJlcGxhY2UoZm9sZD0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0X2dhcCksIGhhc2godF9nYXAucmVwbGFjZShmb2xkPTEpKSkKKworU0VDID0gdGltZWRlbHRhKDAsIDEpCisKK2RlZiBwYWlycyhpdGVyYWJsZSk6CisgICAgYSwgYiA9IGl0ZXJ0b29scy50ZWUoaXRlcmFibGUpCisgICAgbmV4dChiLCBOb25lKQorICAgIHJldHVybiB6aXAoYSwgYikKKworY2xhc3MgWm9uZUluZm8odHppbmZvKToKKyAgICB6b25lcm9vdCA9ICcvdXNyL3NoYXJlL3pvbmVpbmZvJworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1dCwgdGkpOgorICAgICAgICAiIiIKKworICAgICAgICA6cGFyYW0gdXQ6IGFycmF5CisgICAgICAgICAgICBBcnJheSBvZiB0cmFuc2l0aW9uIHBvaW50IHRpbWVzdGFtcHMKKyAgICAgICAgOnBhcmFtIHRpOiBsaXN0CisgICAgICAgICAgICBBIGxpc3Qgb2YgKG9mZnNldCwgaXNkc3QsIGFiYnIpIHR1cGxlcworICAgICAgICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnV0ID0gdXQKKyAgICAgICAgc2VsZi50aSA9IHRpCisgICAgICAgIHNlbGYubHQgPSBzZWxmLmludmVydCh1dCwgdGkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGludmVydCh1dCwgdGkpOgorICAgICAgICBsdCA9IChhcnJheSgncScsIHV0KSwgYXJyYXkoJ3EnLCB1dCkpCisgICAgICAgIGlmIHV0OgorICAgICAgICAgICAgb2Zmc2V0ID0gdGlbMF1bMF0gLy8gU0VDCisgICAgICAgICAgICBsdFswXVswXSArPSBvZmZzZXQKKyAgICAgICAgICAgIGx0WzFdWzBdICs9IG9mZnNldAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKHV0KSk6CisgICAgICAgICAgICAgICAgbHRbMF1baV0gKz0gdGlbaS0xXVswXSAvLyBTRUMKKyAgICAgICAgICAgICAgICBsdFsxXVtpXSArPSB0aVtpXVswXSAvLyBTRUMKKyAgICAgICAgcmV0dXJuIGx0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbWZpbGUoY2xzLCBmaWxlb2JqKToKKyAgICAgICAgaWYgZmlsZW9iai5yZWFkKDQpLmRlY29kZSgpICE9ICJUWmlmIjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBhIHpvbmVpbmZvIGZpbGUiKQorICAgICAgICBmaWxlb2JqLnNlZWsoMzIpCisgICAgICAgIGNvdW50cyA9IGFycmF5KCdpJykKKyAgICAgICAgY291bnRzLmZyb21maWxlKGZpbGVvYmosIDMpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgIT0gJ2JpZyc6CisgICAgICAgICAgICBjb3VudHMuYnl0ZXN3YXAoKQorCisgICAgICAgIHV0ID0gYXJyYXkoJ2knKQorICAgICAgICB1dC5mcm9tZmlsZShmaWxlb2JqLCBjb3VudHNbMF0pCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgIT0gJ2JpZyc6CisgICAgICAgICAgICB1dC5ieXRlc3dhcCgpCisKKyAgICAgICAgdHlwZV9pbmRpY2VzID0gYXJyYXkoJ0InKQorICAgICAgICB0eXBlX2luZGljZXMuZnJvbWZpbGUoZmlsZW9iaiwgY291bnRzWzBdKQorCisgICAgICAgIHR0aXMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudHNbMV0pOgorICAgICAgICAgICAgdHRpcy5hcHBlbmQoc3RydWN0LnVucGFjaygiPmxiYiIsIGZpbGVvYmoucmVhZCg2KSkpCisKKyAgICAgICAgYWJicnMgPSBmaWxlb2JqLnJlYWQoY291bnRzWzJdKQorCisgICAgICAgICMgQ29udmVydCB0dGlzCisgICAgICAgIGZvciBpLCAoZ210b2ZmLCBpc2RzdCwgYWJicmluZCkgaW4gZW51bWVyYXRlKHR0aXMpOgorICAgICAgICAgICAgYWJiciA9IGFiYnJzW2FiYnJpbmQ6YWJicnMuZmluZCgwLCBhYmJyaW5kKV0uZGVjb2RlKCkKKyAgICAgICAgICAgIHR0aXNbaV0gPSAodGltZWRlbHRhKDAsIGdtdG9mZiksIGlzZHN0LCBhYmJyKQorCisgICAgICAgIHRpID0gW05vbmVdICogbGVuKHV0KQorICAgICAgICBmb3IgaSwgaWR4IGluIGVudW1lcmF0ZSh0eXBlX2luZGljZXMpOgorICAgICAgICAgICAgdGlbaV0gPSB0dGlzW2lkeF0KKworICAgICAgICBzZWxmID0gY2xzKHV0LCB0aSkKKworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21uYW1lKGNscywgbmFtZSk6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnpvbmVyb290LCBuYW1lKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBjbHMuZnJvbWZpbGUoZikKKworICAgIEVQT0NIT1JESU5BTCA9IGRhdGUoMTk3MCwgMSwgMSkudG9vcmRpbmFsKCkKKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgIiIiZGF0ZXRpbWUgaW4gVVRDIC0+IGRhdGV0aW1lIGluIGxvY2FsIHRpbWUuIiIiCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZHQsIGRhdGV0aW1lKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZnJvbXV0YygpIHJlcXVpcmVzIGEgZGF0ZXRpbWUgYXJndW1lbnQiKQorICAgICAgICBpZiBkdC50emluZm8gaXMgbm90IHNlbGY6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdC50emluZm8gaXMgbm90IHNlbGYiKQorCisgICAgICAgIHRpbWVzdGFtcCA9ICgoZHQudG9vcmRpbmFsKCkgLSBzZWxmLkVQT0NIT1JESU5BTCkgKiA4NjQwMAorICAgICAgICAgICAgICAgICAgICAgKyBkdC5ob3VyICogMzYwMAorICAgICAgICAgICAgICAgICAgICAgKyBkdC5taW51dGUgKiA2MAorICAgICAgICAgICAgICAgICAgICAgKyBkdC5zZWNvbmQpCisKKyAgICAgICAgaWYgdGltZXN0YW1wIDwgc2VsZi51dFsxXToKKyAgICAgICAgICAgIHR0aSA9IHNlbGYudGlbMF0KKyAgICAgICAgICAgIGZvbGQgPSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZHggPSBiaXNlY3QuYmlzZWN0X3JpZ2h0KHNlbGYudXQsIHRpbWVzdGFtcCkKKyAgICAgICAgICAgIGFzc2VydCBzZWxmLnV0W2lkeC0xXSA8PSB0aW1lc3RhbXAKKyAgICAgICAgICAgIGFzc2VydCBpZHggPT0gbGVuKHNlbGYudXQpIG9yIHRpbWVzdGFtcCA8IHNlbGYudXRbaWR4XQorICAgICAgICAgICAgdHRpX3ByZXYsIHR0aSA9IHNlbGYudGlbaWR4LTI6aWR4XQorICAgICAgICAgICAgIyBEZXRlY3QgZm9sZAorICAgICAgICAgICAgc2hpZnQgPSB0dGlfcHJldlswXSAtIHR0aVswXQorICAgICAgICAgICAgZm9sZCA9IChzaGlmdCA+IHRpbWVkZWx0YSgwLCB0aW1lc3RhbXAgLSBzZWxmLnV0W2lkeC0xXSkpCisgICAgICAgIGR0ICs9IHR0aVswXQorICAgICAgICBpZiBmb2xkOgorICAgICAgICAgICAgcmV0dXJuIGR0LnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGR0CisKKyAgICBkZWYgX2ZpbmRfdGkoc2VsZiwgZHQsIGkpOgorICAgICAgICB0aW1lc3RhbXAgPSAoKGR0LnRvb3JkaW5hbCgpIC0gc2VsZi5FUE9DSE9SRElOQUwpICogODY0MDAKKyAgICAgICAgICAgICArIGR0LmhvdXIgKiAzNjAwCisgICAgICAgICAgICAgKyBkdC5taW51dGUgKiA2MAorICAgICAgICAgICAgICsgZHQuc2Vjb25kKQorICAgICAgICBsdCA9IHNlbGYubHRbZHQuZm9sZF0KKyAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChsdCwgdGltZXN0YW1wKQorCisgICAgICAgIHJldHVybiBzZWxmLnRpW21heCgwLCBpZHggLSAxKV1baV0KKworICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmluZF90aShkdCwgMCkKKworICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgorICAgICAgICBpc2RzdCA9IHNlbGYuX2ZpbmRfdGkoZHQsIDEpCisgICAgICAgICMgWFhYOiBXZSBjYW5ub3QgYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlICJzYXZlIiB2YWx1ZSwKKyAgICAgICAgIyBzbyBsZXQncyByZXR1cm4gMWggd2hlbmV2ZXIgRFNUIGlzIGluIGVmZmVjdC4gIFNpbmNlCisgICAgICAgICMgd2UgZG9uJ3QgdXNlIGRzdCgpIGluIGZyb211dGMoKSwgaXQgaXMgdW5saWtlbHkgdGhhdAorICAgICAgICAjIGl0IHdpbGwgYmUgbmVlZGVkIGZvciBhbnl0aGluZyBtb3JlIHRoYW4gYm9vbChkc3QoKSkuCisgICAgICAgIHJldHVybiBaRVJPIGlmIGlzZHN0IGVsc2UgSE9VUgorCisgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9maW5kX3RpKGR0LCAyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHpvbmVuYW1lcyhjbHMsIHpvbmVkaXI9Tm9uZSk6CisgICAgICAgIGlmIHpvbmVkaXIgaXMgTm9uZToKKyAgICAgICAgICAgIHpvbmVkaXIgPSBjbHMuem9uZXJvb3QKKyAgICAgICAgem9uZV90YWIgPSBvcy5wYXRoLmpvaW4oem9uZWRpciwgJ3pvbmUudGFiJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IG9wZW4oem9uZV90YWIpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHdpdGggZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIGxpbmUgYW5kIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZS5zcGxpdCgpWzJdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc3RhdHMoY2xzLCBzdGFydF95ZWFyPTEpOgorICAgICAgICBjb3VudCA9IGdhcF9jb3VudCA9IGZvbGRfY291bnQgPSB6ZXJvc19jb3VudCA9IDAKKyAgICAgICAgbWluX2dhcCA9IG1pbl9mb2xkID0gdGltZWRlbHRhLm1heAorICAgICAgICBtYXhfZ2FwID0gbWF4X2ZvbGQgPSBaRVJPCisgICAgICAgIG1pbl9nYXBfZGF0ZXRpbWUgPSBtYXhfZ2FwX2RhdGV0aW1lID0gZGF0ZXRpbWUubWluCisgICAgICAgIG1pbl9nYXBfem9uZSA9IG1heF9nYXBfem9uZSA9IE5vbmUKKyAgICAgICAgbWluX2ZvbGRfZGF0ZXRpbWUgPSBtYXhfZm9sZF9kYXRldGltZSA9IGRhdGV0aW1lLm1pbgorICAgICAgICBtaW5fZm9sZF96b25lID0gbWF4X2ZvbGRfem9uZSA9IE5vbmUKKyAgICAgICAgc3RhdHNfc2luY2UgPSBkYXRldGltZShzdGFydF95ZWFyLCAxLCAxKSAjIFN0YXJ0aW5nIGZyb20gMTk3MCBlbGltaW5hdGVzIGEgbG90IG9mIG5vaXNlCisgICAgICAgIGZvciB6b25lbmFtZSBpbiBjbHMuem9uZW5hbWVzKCk6CisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICB0eiA9IGNscy5mcm9tbmFtZSh6b25lbmFtZSkKKyAgICAgICAgICAgIGZvciBkdCwgc2hpZnQgaW4gdHoudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgICAgICBpZiBkdCA8IHN0YXRzX3NpbmNlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHNoaWZ0ID4gWkVSTzoKKyAgICAgICAgICAgICAgICAgICAgZ2FwX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0LCBkdCkgPiAobWF4X2dhcCwgbWF4X2dhcF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwID0gc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9nYXBfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0LCBkYXRldGltZS5tYXggLSBkdCkgPCAobWluX2dhcCwgZGF0ZXRpbWUubWF4IC0gbWluX2dhcF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwID0gc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9nYXBfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICBlbGlmIHNoaWZ0IDwgWkVSTzoKKyAgICAgICAgICAgICAgICAgICAgZm9sZF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gLXNoaWZ0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZHQpID4gKG1heF9mb2xkLCBtYXhfZm9sZF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9mb2xkX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0LCBkYXRldGltZS5tYXggLSBkdCkgPCAobWluX2ZvbGQsIGRhdGV0aW1lLm1heCAtIG1pbl9mb2xkX2RhdGV0aW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkID0gc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2ZvbGRfZGF0ZXRpbWUgPSBkdAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHplcm9zX2NvdW50ICs9IDEKKyAgICAgICAgdHJhbnNfY291bnRzID0gKGdhcF9jb3VudCwgZm9sZF9jb3VudCwgemVyb3NfY291bnQpCisgICAgICAgIHByaW50KCJOdW1iZXIgb2Ygem9uZXM6ICAgICAgICU1ZCIgJSBjb3VudCkKKyAgICAgICAgcHJpbnQoIk51bWJlciBvZiB0cmFuc2l0aW9uczogJTVkID0gJWQgKGdhcHMpICsgJWQgKGZvbGRzKSArICVkICh6ZXJvcykiICUKKyAgICAgICAgICAgICAgKChzdW0odHJhbnNfY291bnRzKSwpICsgdHJhbnNfY291bnRzKSkKKyAgICAgICAgcHJpbnQoIk1pbiBnYXA6ICAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWluX2dhcCwgbWluX2dhcF9kYXRldGltZSwgbWluX2dhcF96b25lKSkKKyAgICAgICAgcHJpbnQoIk1heCBnYXA6ICAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWF4X2dhcCwgbWF4X2dhcF9kYXRldGltZSwgbWF4X2dhcF96b25lKSkKKyAgICAgICAgcHJpbnQoIk1pbiBmb2xkOiAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWluX2ZvbGQsIG1pbl9mb2xkX2RhdGV0aW1lLCBtaW5fZm9sZF96b25lKSkKKyAgICAgICAgcHJpbnQoIk1heCBmb2xkOiAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWF4X2ZvbGQsIG1heF9mb2xkX2RhdGV0aW1lLCBtYXhfZm9sZF96b25lKSkKKworCisgICAgZGVmIHRyYW5zaXRpb25zKHNlbGYpOgorICAgICAgICBmb3IgKF8sIHByZXZfdGkpLCAodCwgdGkpIGluIHBhaXJzKHppcChzZWxmLnV0LCBzZWxmLnRpKSk6CisgICAgICAgICAgICBzaGlmdCA9IHRpWzBdIC0gcHJldl90aVswXQorICAgICAgICAgICAgeWllbGQgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0KSwgc2hpZnQKKworICAgIGRlZiBub25kc3RfZm9sZHMoc2VsZik6CisgICAgICAgICIiIkZpbmQgYWxsIGZvbGRzIHdpdGggdGhlIHNhbWUgdmFsdWUgb2YgaXNkc3Qgb24gYm90aCBzaWRlcyBvZiB0aGUgdHJhbnNpdGlvbi4iIiIKKyAgICAgICAgZm9yIChfLCBwcmV2X3RpKSwgKHQsIHRpKSBpbiBwYWlycyh6aXAoc2VsZi51dCwgc2VsZi50aSkpOgorICAgICAgICAgICAgc2hpZnQgPSB0aVswXSAtIHByZXZfdGlbMF0KKyAgICAgICAgICAgIGlmIHNoaWZ0IDwgWkVSTyBhbmQgdGlbMV0gPT0gcHJldl90aVsxXToKKyAgICAgICAgICAgICAgICB5aWVsZCBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHQpLCAtc2hpZnQsIHByZXZfdGlbMl0sIHRpWzJdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcHJpbnRfYWxsX25vbmRzdF9mb2xkcyhjbHMsIHNhbWVfYWJicj1GYWxzZSwgc3RhcnRfeWVhcj0xKToKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIGZvciB6b25lbmFtZSBpbiBjbHMuem9uZW5hbWVzKCk6CisgICAgICAgICAgICB0eiA9IGNscy5mcm9tbmFtZSh6b25lbmFtZSkKKyAgICAgICAgICAgIGZvciBkdCwgc2hpZnQsIHByZXZfYWJiciwgYWJiciBpbiB0ei5ub25kc3RfZm9sZHMoKToKKyAgICAgICAgICAgICAgICBpZiBkdC55ZWFyIDwgc3RhcnRfeWVhciBvciBzYW1lX2FiYnIgYW5kIHByZXZfYWJiciAhPSBhYmJyOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICBwcmludCgiJTNkKSAlLTMwcyAlcyAlMTBzICU1cyAtPiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgIChjb3VudCwgem9uZW5hbWUsIGR0LCBzaGlmdCwgcHJldl9hYmJyLCBhYmJyKSkKKworICAgIGRlZiBmb2xkcyhzZWxmKToKKyAgICAgICAgZm9yIHQsIHNoaWZ0IGluIHNlbGYudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgIGlmIHNoaWZ0IDwgWkVSTzoKKyAgICAgICAgICAgICAgICB5aWVsZCB0LCAtc2hpZnQKKworICAgIGRlZiBnYXBzKHNlbGYpOgorICAgICAgICBmb3IgdCwgc2hpZnQgaW4gc2VsZi50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgaWYgc2hpZnQgPiBaRVJPOgorICAgICAgICAgICAgICAgIHlpZWxkIHQsIHNoaWZ0CisKKyAgICBkZWYgemVyb3Moc2VsZik6CisgICAgICAgIGZvciB0LCBzaGlmdCBpbiBzZWxmLnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICBpZiBub3Qgc2hpZnQ6CisgICAgICAgICAgICAgICAgeWllbGQgdAorCisKK2NsYXNzIFpvbmVJbmZvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgem9uZW5hbWUgPSAnQW1lcmljYS9OZXdfWW9yaycKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTa2lwcGluZyB6b25laW5mbyB0ZXN0cyBvbiBXaW5kb3dzIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi50eiA9IFpvbmVJbmZvLmZyb21uYW1lKHNlbGYuem9uZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTa2lwcGluZyAlczogJXMiICUgKHNlbGYuem9uZW5hbWUsIGVycikpCisKKyAgICBkZWYgYXNzZXJ0RXF1aXZEYXRldGltZXMoc2VsZiwgYSwgYik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGEucmVwbGFjZSh0emluZm89Tm9uZSksIGEuZm9sZCwgaWQoYS50emluZm8pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYi5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgYi5mb2xkLCBpZChiLnR6aW5mbykpKQorCisgICAgZGVmIHRlc3RfZm9sZHMoc2VsZik6CisgICAgICAgIHR6ID0gc2VsZi50egorICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LmZvbGRzKCk6CisgICAgICAgICAgICBmb3IgeCBpbiBbMCAqIHNoaWZ0LCAwLjUgKiBzaGlmdCwgc2hpZnQgLSB0aW1lZGVsdGEucmVzb2x1dGlvbl06CisgICAgICAgICAgICAgICAgdWR0ID0gZHQgKyB4CisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQucmVwbGFjZSh0emluZm89dHopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDEpCisgICAgICAgICAgICAgICAgYWR0ID0gdWR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykuYXN0aW1lem9uZSh0eikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWl2RGF0ZXRpbWVzKGFkdCwgbGR0KQorICAgICAgICAgICAgICAgIHV0Y29mZnNldCA9IGxkdC51dGNvZmZzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnJlcGxhY2UodHppbmZvPU5vbmUpLCB1ZHQgKyB1dGNvZmZzZXQpCisgICAgICAgICAgICAgICAgIyBSb3VuZCB0cmlwCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykpCisKKworICAgICAgICAgICAgZm9yIHggaW4gWy10aW1lZGVsdGEucmVzb2x1dGlvbiwgc2hpZnRdOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIHVkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10eikKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorCisgICAgZGVmIHRlc3RfZ2FwcyhzZWxmKToKKyAgICAgICAgdHogPSBzZWxmLnR6CisgICAgICAgIGZvciBkdCwgc2hpZnQgaW4gdHouZ2FwcygpOgorICAgICAgICAgICAgZm9yIHggaW4gWzAgKiBzaGlmdCwgMC41ICogc2hpZnQsIHNoaWZ0IC0gdGltZWRlbHRhLnJlc29sdXRpb25dOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIHVkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10eikKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorICAgICAgICAgICAgICAgIGFkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpLmFzdGltZXpvbmUodHopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhhZHQsIGxkdCkKKyAgICAgICAgICAgICAgICB1dGNvZmZzZXQgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgdWR0LnJlcGxhY2UodHppbmZvPU5vbmUpICsgdXRjb2Zmc2V0KQorICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgbG9jYWwgdGltZSBpbnNpZGUgdGhlIGdhcAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGMoZHQucmVwbGFjZSh0emluZm89dHopKSAtIHNoaWZ0ICsgeAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZHQucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZHQucmVwbGFjZShmb2xkPTApLnV0Y29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXQgJXMuIiAlIGxkdCkKKworICAgICAgICAgICAgZm9yIHggaW4gWy10aW1lZGVsdGEucmVzb2x1dGlvbiwgc2hpZnRdOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0LnJlcGxhY2UodHppbmZvPXR6KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorCisgICAgZGVmIHRlc3Rfc3lzdGVtX3RyYW5zaXRpb25zKHNlbGYpOgorICAgICAgICBpZiAoJ1JpeWFkaDgnIGluIHNlbGYuem9uZW5hbWUgb3IKKyAgICAgICAgICAgICMgRnJvbSB0emRhdGEgTkVXUyBmaWxlOgorICAgICAgICAgICAgIyBUaGUgZmlsZXMgc29sYXI4Nywgc29sYXI4OCwgYW5kIHNvbGFyODkgYXJlIG5vIGxvbmdlciBkaXN0cmlidXRlZC4KKyAgICAgICAgICAgICMgVGhleSB3ZXJlIGEgbmVnYXRpdmUgZXhwZXJpbWVudCAtIHRoYXQgaXMsIGEgZGVtb25zdHJhdGlvbiB0aGF0CisgICAgICAgICAgICAjIHR6IGRhdGEgY2FuIHJlcHJlc2VudCBzb2xhciB0aW1lIG9ubHkgd2l0aCBzb21lIGRpZmZpY3VsdHkgYW5kIGVycm9yLgorICAgICAgICAgICAgIyBUaGVpciBwcmVzZW5jZSBpbiB0aGUgZGlzdHJpYnV0aW9uIGNhdXNlZCBjb25mdXNpb24sIGFzIFJpeWFkaAorICAgICAgICAgICAgIyBjaXZpbCB0aW1lIHdhcyBnZW5lcmFsbHkgbm90IHNvbGFyIHRpbWUgaW4gdGhvc2UgeWVhcnMuCisgICAgICAgICAgICAgICAgc2VsZi56b25lbmFtZS5zdGFydHN3aXRoKCdyaWdodC8nKSk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTa2lwcGluZyAlcyIgJSBzZWxmLnpvbmVuYW1lKQorICAgICAgICB0eiA9IHNlbGYudHoKKyAgICAgICAgVFogPSBvcy5lbnZpcm9uLmdldCgnVFonKQorICAgICAgICBvcy5lbnZpcm9uWydUWiddID0gc2VsZi56b25lbmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfdGltZS50enNldCgpCisgICAgICAgICAgICBmb3IgdWR0LCBzaGlmdCBpbiB0ei50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgICAgIGlmIHVkdC55ZWFyID49IDIwMzc6CisgICAgICAgICAgICAgICAgICAgICMgU3lzdGVtIHN1cHBvcnQgZm9yIHRpbWVzIGFyb3VuZCB0aGUgZW5kIG9mIDMyLWJpdCB0aW1lX3QKKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgbGF0ZXIgaXMgZmxha3kgb24gbWFueSBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHMwID0gKHVkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEpKSAvLyBTRUMKKyAgICAgICAgICAgICAgICBzcyA9IHNoaWZ0IC8vIFNFQyAgICMgc2hpZnQgc2Vjb25kcworICAgICAgICAgICAgICAgIGZvciB4IGluIFstNDAgKiAzNjAwLCAtMjAqMzYwMCwgLTEsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNzIC0gMSwgc3MgKyAyMCAqIDM2MDAsIHNzICsgNDAgKiAzNjAwXToKKyAgICAgICAgICAgICAgICAgICAgcyA9IHMwICsgeAorICAgICAgICAgICAgICAgICAgICBzZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMpCisgICAgICAgICAgICAgICAgICAgIHR6ZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMsIHR6KS5yZXBsYWNlKHR6aW5mbz1Ob25lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWl2RGF0ZXRpbWVzKHNkdCwgdHpkdCkKKyAgICAgICAgICAgICAgICAgICAgczEgPSBzZHQudGltZXN0YW1wKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzMSkKKyAgICAgICAgICAgICAgICBpZiBzcyA+IDA6ICAjIGdhcAorICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBsb2NhbCB0aW1lIGluc2lkZSB0aGUgZ2FwCisgICAgICAgICAgICAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzMCkgLSBzaGlmdCAvIDIKKyAgICAgICAgICAgICAgICAgICAgdHMwID0gZHQudGltZXN0YW1wKCkKKyAgICAgICAgICAgICAgICAgICAgdHMxID0gZHQucmVwbGFjZShmb2xkPTEpLnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHMwLCBzMCArIHNzIC8gMikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0czEsIHMwIC0gc3MgLyAyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgVFogaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWwgb3MuZW52aXJvblsnVFonXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydUWiddID0gVFoKKyAgICAgICAgICAgIF90aW1lLnR6c2V0KCkKKworCitjbGFzcyBab25lSW5mb0NvbXBsZXRlVGVzdCh1bml0dGVzdC5UZXN0U3VpdGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgdGVzdHMgPSBbXQorICAgICAgICBpZiBpc19yZXNvdXJjZV9lbmFibGVkKCd0emRhdGEnKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluIFpvbmVJbmZvLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgICAgIFRlc3QgPSB0eXBlKCdab25lSW5mb1Rlc3RbJXNdJyAlIG5hbWUsIChab25lSW5mb1Rlc3QsKSwge30pCisgICAgICAgICAgICAgICAgVGVzdC56b25lbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBmb3IgbWV0aG9kIGluIGRpcihUZXN0KToKKyAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kLnN0YXJ0c3dpdGgoJ3Rlc3RfJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdChtZXRob2QpKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKHRlc3RzKQorCisjIElyYW4gaGFkIGEgc3ViLW1pbnV0ZSBVVEMgb2Zmc2V0IGJlZm9yZSAxOTQ2LgorY2xhc3MgSXJhblRlc3QoWm9uZUluZm9UZXN0KToKKyAgICB6b25lbmFtZSA9ICdBc2lhL1RlaHJhbicKKworZGVmIGxvYWRfdGVzdHMobG9hZGVyLCBzdGFuZGFyZF90ZXN0cywgcGF0dGVybik6CisgICAgc3RhbmRhcmRfdGVzdHMuYWRkVGVzdChab25lSW5mb0NvbXBsZXRlVGVzdCgpKQorICAgIHJldHVybiBzdGFuZGFyZF90ZXN0cworCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMmQ0ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZApAQCAtMCwwICsxLDUgQEAKK0JFR0lOCit7CisgICAgcHJpbnRmKCJwcm9iZTogc3VjY2Vzc1xuIik7CisgICAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5zdHAgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZTdlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwCkBAIC0wLDAgKzEsNSBAQAorcHJvYmUgYmVnaW4KK3sKKyAgcHJpbnRsbigicHJvYmU6IHN1Y2Nlc3MiKQorICBleGl0ICgpCit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MGU5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZApAQCAtMCwwICsxLDMxIEBACitzZWxmIGludCBpbmRlbnQ7CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworeworICAgIHNlbGYtPnRyYWNlID0gMTsKK30KKworcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5Cisvc2VsZi0+dHJhY2UvCit7CisgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsgCisgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICBzZWxmLT5pbmRlbnQrKzsKK30KKworcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgorL3NlbGYtPnRyYWNlLworeworICAgIHNlbGYtPmluZGVudC0tOworICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7IAorICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDA7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ODQ5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZApAQCAtMCwwICsxLDE4IEBACisgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyBmdW5jdGlvbi1lbnRyeTogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxMworZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4CitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQorZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTlmM2FlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnB5CkBAIC0wLDAgKzEsMzAgQEAKK2RlZiBmdW5jdGlvbl8xKCk6CisgICAgZnVuY3Rpb25fMygxLCAyKQorCisjIENoZWNrIHN0YWNrdHJhY2UKK2RlZiBmdW5jdGlvbl8yKCk6CisgICAgZnVuY3Rpb25fMSgpCisKKyMgQ0FMTF9GVU5DVElPTl9WQVIKK2RlZiBmdW5jdGlvbl8zKGR1bW15LCBkdW1teTIpOgorICAgIHBhc3MKKworIyBDQUxMX0ZVTkNUSU9OX0tXCitkZWYgZnVuY3Rpb25fNCgqKmR1bW15KToKKyAgICByZXR1cm4gMQorICAgIHJldHVybiAyICAjIHVucmVhY2hhYmxlCisKKyMgQ0FMTF9GVU5DVElPTl9WQVJfS1cKK2RlZiBmdW5jdGlvbl81KGR1bW15LCBkdW1teTIsICoqZHVtbXkzKToKKyAgICBpZiBGYWxzZToKKyAgICAgICAgcmV0dXJuIDcKKyAgICByZXR1cm4gOAorCitkZWYgc3RhcnQoKToKKyAgICBmdW5jdGlvbl8xKCkKKyAgICBmdW5jdGlvbl8yKCkKKyAgICBmdW5jdGlvbl8zKDEsIDIpCisgICAgZnVuY3Rpb25fNCh0ZXN0PTQyKQorICAgIGZ1bmN0aW9uXzUoKigxLCAyKSwgKip7InRlc3QiOiA0Mn0pCisKK3N0YXJ0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MDgyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwCkBAIC0wLDAgKzEsNDEgQEAKK2dsb2JhbCB0cmFjaW5nCisKK2Z1bmN0aW9uIGJhc2VuYW1lOnN0cmluZyhwYXRoOnN0cmluZykKK3sKKyAgICBsYXN0X3Rva2VuID0gdG9rZW4gPSB0b2tlbml6ZShwYXRoLCAiLyIpOworICAgIHdoaWxlICh0b2tlbiAhPSAiIikgeworICAgICAgICBsYXN0X3Rva2VuID0gdG9rZW47CisgICAgICAgIHRva2VuID0gdG9rZW5pemUoIiIsICIvIik7CisgICAgfQorICAgIHJldHVybiBsYXN0X3Rva2VuOworfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpCit7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisKKyAgICBpZiAoZnVuY25hbWUgPT0gInN0YXJ0IikgeworICAgICAgICB0cmFjaW5nID0gMTsKKyAgICB9Cit9CisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX2VudHJ5IiksIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCit7CisgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgbGluZW5vID0gJGFyZzM7CisKKyAgICBpZiAodHJhY2luZykgeworICAgICAgICBwcmludGYoIiVkXHQlczolczolczolZFxuIiwgZ2V0dGltZW9mZGF5X3VzKCksICQkbmFtZSwKKyAgICAgICAgICAgICAgIGJhc2VuYW1lKGZpbGVuYW1lKSwgZnVuY25hbWUsIGxpbmVubyk7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJjZjM5NgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4CitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ5MTQ4NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZApAQCAtMCwwICsxLDE4IEBACitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDE7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpnYy1zdGFydCwKK3B5dGhvbiR0YXJnZXQ6OjpnYy1kb25lCisvc2VsZi0+dHJhY2UvCit7CisgICAgcHJpbnRmKCIlZFx0JXM6JWxkXG4iLCB0aW1lc3RhbXAsIHByb2JlbmFtZSwgYXJnMCk7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDA7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1YWMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZC5leHBlY3RlZApAQCAtMCwwICsxLDggQEAKK2djLXN0YXJ0OjAKK2djLWRvbmU6MAorZ2Mtc3RhcnQ6MQorZ2MtZG9uZTowCitnYy1zdGFydDoyCitnYy1kb25lOjAKK2djLXN0YXJ0OjIKK2djLWRvbmU6MQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ0YTc4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGdjCisKK2RlZiBzdGFydCgpOgorICAgIGdjLmNvbGxlY3QoMCkKKyAgICBnYy5jb2xsZWN0KDEpCisgICAgZ2MuY29sbGVjdCgyKQorICAgIGwgPSBbXQorICAgIGwuYXBwZW5kKGwpCisgICAgZGVsIGwKKyAgICBnYy5jb2xsZWN0KDIpCisKK2djLmNvbGxlY3QoKQorc3RhcnQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjJjNmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAKQEAgLTAsMCArMSwyNiBAQAorZ2xvYmFsIHRyYWNpbmcKKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDE7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImdjX19zdGFydCIpLCBwcm9jZXNzLm1hcmsoImdjX19kb25lIikKK3sKKyAgICBpZiAodHJhY2luZykgeworICAgICAgICBwcmludGYoIiVkXHQlczolbGRcbiIsIGdldHRpbWVvZmRheV91cygpLCAkJG5hbWUsICRhcmcxKTsKKyAgICB9Cit9CisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCit7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisKKyAgICBpZiAoZnVuY25hbWUgPT0gInN0YXJ0IikgeworICAgICAgICB0cmFjaW5nID0gMDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNmU2MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZApAQCAtMCwwICsxLDggQEAKK2djX19zdGFydDowCitnY19fZG9uZTowCitnY19fc3RhcnQ6MQorZ2NfX2RvbmU6MAorZ2NfX3N0YXJ0OjIKK2djX19kb25lOjAKK2djX19zdGFydDoyCitnY19fZG9uZToxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2luc3RhbmNlLnB5IGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTQyMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weQpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgZ2MKKworY2xhc3Mgb2xkX3N0eWxlX2NsYXNzKCk6CisgICAgcGFzcworY2xhc3MgbmV3X3N0eWxlX2NsYXNzKG9iamVjdCk6CisgICAgcGFzcworCithID0gb2xkX3N0eWxlX2NsYXNzKCkKK2RlbCBhCitnYy5jb2xsZWN0KCkKK2IgPSBuZXdfc3R5bGVfY2xhc3MoKQorZGVsIGIKK2djLmNvbGxlY3QoKQorCithID0gb2xkX3N0eWxlX2NsYXNzKCkKK2RlbCBvbGRfc3R5bGVfY2xhc3MKK2djLmNvbGxlY3QoKQorYiA9IG5ld19zdHlsZV9jbGFzcygpCitkZWwgbmV3X3N0eWxlX2NsYXNzCitnYy5jb2xsZWN0KCkKK2RlbCBhCitnYy5jb2xsZWN0KCkKK2RlbCBiCitnYy5jb2xsZWN0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmMjJkYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kCkBAIC0wLDAgKzEsNyBAQAorcHl0aG9uJHRhcmdldDo6OmxpbmUKKy8oY29weWluc3RyKGFyZzEpPT0idGVzdF9saW5lIikvCit7CisgICAgcHJpbnRmKCIlZFx0JXM6JXM6JXM6JWRcbiIsIHRpbWVzdGFtcCwKKyAgICAgICAgcHJvYmVuYW1lLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLAorICAgICAgICBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjE2Y2U3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSwyMCBAQAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToyCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjMKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo1CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjYKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NworbGluZTpsaW5lLnB5OnRlc3RfbGluZTo4CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjkKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTAKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTEKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo1CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjYKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NworbGluZTpsaW5lLnB5OnRlc3RfbGluZTo4CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEwCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjExCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTIKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTMwZmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLnB5CkBAIC0wLDAgKzEsMTcgQEAKK2RlZiB0ZXN0X2xpbmUoKToKKyAgICBhID0gMQorICAgIHByaW50KCcjIFByZWFtYmxlJywgYSkKKyAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgYSA9IGkKKyAgICAgICAgYiA9IGkrMgorICAgICAgICBjID0gaSszCisgICAgICAgIGlmIGMgPCA0OgorICAgICAgICAgICAgYSA9IGMKKyAgICAgICAgZCA9IGEgKyBiICtjCisgICAgICAgIHByaW50KCcjJywgYSwgYiwgYywgZCkKKyAgICBhID0gMQorICAgIHByaW50KCcjIEVwaWxvZ3VlJywgYSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbGluZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5IGIvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQppbmRleCBlM2YxYWE1Li45ZmJlMDRkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkKQEAgLTksNyArOSw3IEBACiAiIiIKIAogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBpbworaW1wb3J0IGZhdWx0aGFuZGxlcgogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2lnbmFsCkBAIC01MCw2ICs1MCwxMCBAQAogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgY2xzLnNpZ25hbF9kZWxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2lnbmFsX3BlcmlvZCkKIAorICAgICAgICAjIElzc3VlICMyNTI3NzogVXNlIGZhdWx0aGFuZGxlciB0byB0cnkgdG8gZGVidWcgYSBoYW5nIG9uIEZyZWVCU0QKKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKDEwICogNjAsIGV4aXQ9VHJ1ZSkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzdG9wX2FsYXJtKGNscyk6CiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9SRUFMLCAwLCAwKQpAQCAtNTgsNiArNjIsOCBAQAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAgIGNscy5zdG9wX2FsYXJtKCkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgY2xzLm9yaWdfaGFuZGxlcikKKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQogCiAgICAgZGVmIHN1YnByb2Nlc3Moc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgICBjbWRfYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1jJykgKyBhcmdzCkBAIC03Nyw2ICs4Myw5IEBACiAgICAgICAgIHByb2Nlc3NlcyA9IFtzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkgZm9yIF8gaW4gcmFuZ2UobnVtKV0KICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobnVtKToKICAgICAgICAgICAgIHdhaXRfZnVuYygpCisgICAgICAgICMgQ2FsbCB0aGUgUG9wZW4gbWV0aG9kIHRvIGF2b2lkIGEgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgIGZvciBwcm9jIGluIHByb2Nlc3NlczoKKyAgICAgICAgICAgIHByb2Mud2FpdCgpCiAKICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3dhaXRfbXVsdGlwbGUob3Mud2FpdCkKQEAgLTg4LDYgKzk3LDggQEAKICAgICBkZWYgX3Rlc3Rfd2FpdF9zaW5nbGUoc2VsZiwgd2FpdF9mdW5jKToKICAgICAgICAgcHJvYyA9IHNlbGYubmV3X3NsZWVwX3Byb2Nlc3MoKQogICAgICAgICB3YWl0X2Z1bmMocHJvYy5waWQpCisgICAgICAgICMgQ2FsbCB0aGUgUG9wZW4gbWV0aG9kIHRvIGF2b2lkIGEgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgIHByb2Mud2FpdCgpCiAKICAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3dhaXRfc2luZ2xlKGxhbWJkYSBwaWQ6IG9zLndhaXRwaWQocGlkLCAwKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0IGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKaW5kZXggMDUxMzc2NS4uNzMzM2IyYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKKysrIGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICstLSBCdWZmZXJFcnJvcgogICAgICAgKy0tIEVPRkVycm9yCiAgICAgICArLS0gSW1wb3J0RXJyb3IKKyAgICAgICAgICAgKy0tIE1vZHVsZU5vdEZvdW5kRXJyb3IKICAgICAgICstLSBMb29rdXBFcnJvcgogICAgICAgfCAgICArLS0gSW5kZXhFcnJvcgogICAgICAgfCAgICArLS0gS2V5RXJyb3IKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JhMGU2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNSBAQAorIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgoraW1wb3J0IGltcG9ydGxpYgorCitmcm9tIHRlc3QubGlicmVncnRlc3QuY21kbGluZSBpbXBvcnQgX3BhcnNlX2FyZ3MsIFJFU09VUkNFX05BTUVTCitmcm9tIHRlc3QubGlicmVncnRlc3QubWFpbiBpbXBvcnQgbWFpbgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvY21kbGluZS5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxYjAwYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkKQEAgLTAsMCArMSwzNDcgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitVU0FHRSA9ICIiIlwKK3B5dGhvbiAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQorcHl0aG9uIHBhdGgvdG8vTGliL3Rlc3QvcmVncnRlc3QucHkgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCisiIiIKKworREVTQ1JJUFRJT04gPSAiIiJcCitSdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCisKK0lmIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zIGFyZSBwcm92aWRlZCwgZmluZHMgYWxsIGZpbGVzIG1hdGNoaW5nCit0aGUgcGF0dGVybiAidGVzdF8qIiBpbiB0aGUgTGliL3Rlc3Qgc3ViZGlyZWN0b3J5IGFuZCBydW5zCit0aGVtIGluIGFscGhhYmV0aWNhbCBvcmRlciAoYnV0IHNlZSAtTSBhbmQgLXUsIGJlbG93LCBmb3IgZXhjZXB0aW9ucykuCisKK0ZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIGl0IGlzIHVzZWZ1bCB0byB1c2UgdGhlIGZvbGxvd2luZworY29tbWFuZCBsaW5lOgorCitweXRob24gLUUgLVdkIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIC4uLl0KKyIiIgorCitFUElMT0cgPSAiIiJcCitBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzOgorCistciByYW5kb21pemVzIHRlc3QgZXhlY3V0aW9uIG9yZGVyLiBZb3UgY2FuIHVzZSAtLXJhbmRzZWVkPWludCB0byBwcm92aWRlIGFuCitpbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbWl6ZXI7IHRoaXMgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyB0cm91Ymxlc29tZQordGVzdCBvcmRlcnMuCisKKy1zIE9uIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHJlZ3J0ZXN0IHVzaW5nIC1zLCB0aGUgZmlyc3QgdGVzdCBmaWxlIGZvdW5kCitvciB0aGUgZmlyc3QgdGVzdCBmaWxlIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgcnVuLCBhbmQgdGhlIG5hbWUgb2YKK3RoZSBuZXh0IHRlc3QgaXMgcmVjb3JkZWQgaW4gYSBmaWxlIG5hbWVkIHB5bmV4dHRlc3QuICBJZiBydW4gZnJvbSB0aGUKK1B5dGhvbiBidWlsZCBkaXJlY3RvcnksIHB5bmV4dHRlc3QgaXMgbG9jYXRlZCBpbiB0aGUgJ2J1aWxkJyBzdWJkaXJlY3RvcnksCitvdGhlcndpc2UgaXQgaXMgbG9jYXRlZCBpbiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuICBPbiBzdWJzZXF1ZW50IHJ1bnMsCit0aGUgdGVzdCBpbiBweW5leHR0ZXN0IGlzIHJ1biwgYW5kIHRoZSBuZXh0IHRlc3QgaXMgd3JpdHRlbiB0byBweW5leHR0ZXN0LgorV2hlbiB0aGUgbGFzdCB0ZXN0IGhhcyBiZWVuIHJ1biwgcHluZXh0dGVzdCBpcyBkZWxldGVkLiAgSW4gdGhpcyB3YXkgaXQKK2lzIHBvc3NpYmxlIHRvIHNpbmdsZSBzdGVwIHRocm91Z2ggdGhlIHRlc3QgZmlsZXMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCitkb2luZyBtZW1vcnkgYW5hbHlzaXMgb24gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgd2hpY2ggcHJvY2VzcyB0ZW5kcyB0bworY29uc3VtZSB0b28gbWFueSByZXNvdXJjZXMgdG8gcnVuIHRoZSBmdWxsIHJlZ3Jlc3Npb24gdGVzdCBub24tc3RvcC4KKworLVMgaXMgdXNlZCB0byBjb250aW51ZSBydW5uaW5nIHRlc3RzIGFmdGVyIGFuIGFib3J0ZWQgcnVuLiAgSXQgd2lsbAorbWFpbnRhaW4gdGhlIG9yZGVyIGEgc3RhbmRhcmQgcnVuIChpZSwgdGhpcyBhc3N1bWVzIC1yIGlzIG5vdCB1c2VkKS4KK1RoaXMgaXMgdXNlZnVsIGFmdGVyIHRoZSB0ZXN0cyBoYXZlIHByZW1hdHVyZWx5IHN0b3BwZWQgZm9yIHNvbWUgZXh0ZXJuYWwKK3JlYXNvbiBhbmQgeW91IHdhbnQgdG8gc3RhcnQgcnVubmluZyBmcm9tIHdoZXJlIHlvdSBsZWZ0IG9mZiByYXRoZXIKK3RoYW4gc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgorCistZiByZWFkcyB0aGUgbmFtZXMgb2YgdGVzdHMgZnJvbSB0aGUgZmlsZSBnaXZlbiBhcyBmJ3MgYXJndW1lbnQsIG9uZQorb3IgbW9yZSB0ZXN0IG5hbWVzIHBlciBsaW5lLiAgV2hpdGVzcGFjZSBpcyBpZ25vcmVkLiAgQmxhbmsgbGluZXMgYW5kCitsaW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIGlnbm9yZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgord2hpdHRsaW5nIGRvd24gZmFpbHVyZXMgaW52b2x2aW5nIGludGVyYWN0aW9ucyBhbW9uZyB0ZXN0cy4KKworLUwgY2F1c2VzIHRoZSBsZWFrcygxKSBjb21tYW5kIHRvIGJlIHJ1biBqdXN0IGJlZm9yZSBleGl0IGlmIGl0IGV4aXN0cy4KK2xlYWtzKDEpIGlzIGF2YWlsYWJsZSBvbiBNYWMgT1MgWCBhbmQgcHJlc3VtYWJseSBvbiBzb21lIG90aGVyCitGcmVlQlNELWRlcml2ZWQgc3lzdGVtcy4KKworLVIgcnVucyBlYWNoIHRlc3Qgc2V2ZXJhbCB0aW1lcyBhbmQgZXhhbWluZXMgc3lzLmdldHRvdGFscmVmY291bnQoKSB0bworc2VlIGlmIHRoZSB0ZXN0IGFwcGVhcnMgdG8gYmUgbGVha2luZyByZWZlcmVuY2VzLiAgVGhlIGFyZ3VtZW50IHNob3VsZAorYmUgb2YgdGhlIGZvcm0gc3RhYjpydW46Zm5hbWUgd2hlcmUgJ3N0YWInIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCit0ZXN0IGlzIHJ1biB0byBsZXQgZ2V0dG90YWxyZWZjb3VudCBzZXR0bGUgZG93biwgJ3J1bicgaXMgdGhlIG51bWJlcgorb2YgdGltZXMgZnVydGhlciBpdCBpcyBydW4gYW5kICdmbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhlCityZXBvcnRzIGFyZSB3cml0dGVuIHRvLiAgVGhlc2UgcGFyYW1ldGVycyBhbGwgaGF2ZSBkZWZhdWx0cyAoNSwgNCBhbmQKKyJyZWZsb2cudHh0IiByZXNwZWN0aXZlbHkpLCBhbmQgdGhlIG1pbmltYWwgaW52b2NhdGlvbiBpcyAnLVIgOicuCisKKy1NIHJ1bnMgdGVzdHMgdGhhdCByZXF1aXJlIGFuIGV4b3JiaXRhbnQgYW1vdW50IG9mIG1lbW9yeS4gVGhlc2UgdGVzdHMKK3R5cGljYWxseSB0cnkgdG8gYXNjZXJ0YWluIGNvbnRhaW5lcnMga2VlcCB3b3JraW5nIHdoZW4gY29udGFpbmluZyBtb3JlIHRoYW4KKzIgYmlsbGlvbiBvYmplY3RzLCB3aGljaCBvbmx5IHdvcmtzIG9uIDY0LWJpdCBzeXN0ZW1zLiBUaGVyZSBhcmUgYWxzbyBzb21lCit0ZXN0cyB0aGF0IHRyeSB0byBleGhhdXN0IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBvbmx5IG1ha2VzCitzZW5zZSBvbiAzMi1iaXQgc3lzdGVtcyB3aXRoIGF0IGxlYXN0IDJHYiBvZiBtZW1vcnkuIFRoZSBwYXNzZWQtaW4gbWVtbGltaXQsCit3aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAnMi41R2InLCBkZXRlcm1pbmVzIGhvd211Y2ggbWVtb3J5IHRoZQordGVzdHMgd2lsbCBsaW1pdCB0aGVtc2VsdmVzIHRvIChidXQgdGhleSBtYXkgZ28gc2xpZ2h0bHkgb3Zlci4pIFRoZSBudW1iZXIKK3Nob3VsZG4ndCBiZSBtb3JlIG1lbW9yeSB0aGFuIHRoZSBtYWNoaW5lIGhhcyAoaW5jbHVkaW5nIHN3YXAgbWVtb3J5KS4gWW91CitzaG91bGQgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBzd2FwIG1lbW9yeSBpcyBnZW5lcmFsbHkgbXVjaCwgbXVjaCBzbG93ZXIKK3RoYW4gUkFNLCBhbmQgc2V0dGluZyBtZW1saW1pdCB0byBhbGwgYXZhaWxhYmxlIFJBTSBvciBoaWdoZXIgd2lsbCBoZWF2aWx5Cit0YXggdGhlIG1hY2hpbmUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBubyB1c2UgcnVubmluZyB0aGVzZSB0ZXN0cyB3aXRoIGEKK2xpbWl0IG9mIGxlc3MgdGhhbiAyLjVHYiwgYW5kIG1hbnkgcmVxdWlyZSBtb3JlIHRoYW4gMjBHYi4gVGVzdHMgdGhhdCBleHBlY3QKK3RvIHVzZSBtb3JlIHRoYW4gbWVtbGltaXQgbWVtb3J5IHdpbGwgYmUgc2tpcHBlZC4gVGhlIGJpZy1tZW1vcnkgdGVzdHMKK2dlbmVyYWxseSBydW4gdmVyeSwgdmVyeSBsb25nLgorCistdSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuLAorc3VjaCBhcyB0aG9zZSByZXF1aXJpbmcgbGFyZ2UgZmlsZSBzdXBwb3J0IG9yIG5ldHdvcmsgY29ubmVjdGl2aXR5LgorVGhlIGFyZ3VtZW50IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgaW5kaWNhdGluZyB0aGUKK3Jlc291cmNlcyB0byB0ZXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZDoKKworICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCisKKyAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCisKKyAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgorICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgorICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCisKKyAgICBjdXJzZXMgLSAgICBUZXN0cyB0aGF0IHVzZSBjdXJzZXMgYW5kIHdpbGwgbW9kaWZ5IHRoZSB0ZXJtaW5hbCdzCisgICAgICAgICAgICAgICAgc3RhdGUgYW5kIG91dHB1dCBtb2Rlcy4KKworICAgIGxhcmdlZmlsZSAtIEl0IGlzIG9rYXkgdG8gcnVuIHNvbWUgdGVzdCB0aGF0IG1heSBjcmVhdGUgaHVnZQorICAgICAgICAgICAgICAgIGZpbGVzLiAgVGhlc2UgdGVzdHMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIG1heQorICAgICAgICAgICAgICAgIGNvbnN1bWUgPjJHQiBvZiBkaXNrIHNwYWNlIHRlbXBvcmFyaWx5LgorCisgICAgbmV0d29yayAtICAgSXQgaXMgb2theSB0byBydW4gdGVzdHMgdGhhdCB1c2UgZXh0ZXJuYWwgbmV0d29yaworICAgICAgICAgICAgICAgIHJlc291cmNlLCBlLmcuIHRlc3RpbmcgU1NMIHN1cHBvcnQgZm9yIHNvY2tldHMuCisKKyAgICBkZWNpbWFsIC0gICBUZXN0IHRoZSBkZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGEgbGFyZ2Ugc3VpdGUgdGhhdAorICAgICAgICAgICAgICAgIHZlcmlmaWVzIGNvbXBsaWFuY2Ugd2l0aCBzdGFuZGFyZHMuCisKKyAgICBjcHUgLSAgICAgICBVc2VkIGZvciBjZXJ0YWluIENQVS1oZWF2eSB0ZXN0cy4KKworICAgIHN1YnByb2Nlc3MgIFJ1biBhbGwgdGVzdHMgZm9yIHRoZSBzdWJwcm9jZXNzIG1vZHVsZS4KKworICAgIHVybGZldGNoIC0gIEl0IGlzIG9rYXkgdG8gZG93bmxvYWQgZmlsZXMgcmVxdWlyZWQgb24gdGVzdGluZy4KKworICAgIGd1aSAtICAgICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgYSBydW5uaW5nIEdVSS4KKworICAgIHR6ZGF0YSAtICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgdGltZXpvbmUgZGF0YS4KKworVG8gZW5hYmxlIGFsbCByZXNvdXJjZXMgZXhjZXB0IG9uZSwgdXNlICctdWFsbCwtPHJlc291cmNlPicuICBGb3IKK2V4YW1wbGUsIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGV4Y2VwdCBmb3IgdGhlIGd1aSB0ZXN0cywgZ2l2ZSB0aGUKK29wdGlvbiAnLXVhbGwsLWd1aScuCisiIiIKKworCitSRVNPVVJDRV9OQU1FUyA9ICgnYXVkaW8nLCAnY3Vyc2VzJywgJ2xhcmdlZmlsZScsICduZXR3b3JrJywKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsJywgJ2NwdScsICdzdWJwcm9jZXNzJywgJ3VybGZldGNoJywgJ2d1aScsICd0emRhdGEnKQorCitjbGFzcyBfQXJnUGFyc2VyKGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKToKKworICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgc3VwZXIoKS5lcnJvcihtZXNzYWdlICsgIlxuUGFzcyAtaCBvciAtLWhlbHAgZm9yIGNvbXBsZXRlIGhlbHAuIikKKworCitkZWYgX2NyZWF0ZV9wYXJzZXIoKToKKyAgICAjIFNldCBwcm9nIHRvIHByZXZlbnQgdGhlIHVuaW5mb3JtYXRpdmUgIl9fbWFpbl9fLnB5IiBmcm9tIGRpc3BsYXlpbmcgaW4KKyAgICAjIGVycm9yIG1lc3NhZ2VzIHdoZW4gdXNpbmcgInB5dGhvbiAtbSB0ZXN0IC4uLiIuCisgICAgcGFyc2VyID0gX0FyZ1BhcnNlcihwcm9nPSdyZWdydGVzdC5weScsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZT1VU0FHRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPURFU0NSSVBUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPUVQSUxPRywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcikKKworICAgICMgQXJndW1lbnRzIHdpdGggdGhpcyBjbGF1c2UgYWRkZWQgdG8gaXRzIGhlbHAgYXJlIGRlc2NyaWJlZCBmdXJ0aGVyIGluCisgICAgIyB0aGUgZXBpbG9nJ3MgIkFkZGl0aW9uYWwgb3B0aW9uIGRldGFpbHMiIHNlY3Rpb24uCisgICAgbW9yZV9kZXRhaWxzID0gJyAgU2VlIHRoZSBzZWN0aW9uIGF0IGJvdHRvbSBmb3IgbW9yZSBkZXRhaWxzLicKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnR2VuZXJhbCBvcHRpb25zJykKKyAgICAjIFdlIGFkZCBoZWxwIGV4cGxpY2l0bHkgdG8gY29udHJvbCB3aGF0IGFyZ3VtZW50IGdyb3VwIGl0IHJlbmRlcnMgdW5kZXIuCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGltZW91dCcsIG1ldGF2YXI9J1RJTUVPVVQnLCB0eXBlPWZsb2F0LAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3JlIHRoYW4gVElNRU9VVCBzZWNvbmRzOyBkaXNhYmxlZCBpZiBUSU1FT1VUICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5lZ2F0aXZlIG9yIGVxdWFscyB0byB6ZXJvJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2FpdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3dhaXQgZm9yIHVzZXIgaW5wdXQsIGUuZy4sIGFsbG93IGEgZGVidWdnZXIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBiZSBhdHRhY2hlZCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXNsYXZlYXJncycsIG1ldGF2YXI9J0FSR1MnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVMnLCAnLS1zdGFydCcsIG1ldGF2YXI9J1NUQVJUJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndGhlIG5hbWUgb2YgdGhlIHRlc3QgYXQgd2hpY2ggdG8gc3RhcnQuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdWZXJib3NpdHknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlJywgYWN0aW9uPSdjb3VudCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUgd2l0aCBvdXRwdXQgdG8gc3Rkb3V0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy13JywgJy0tdmVyYm9zZTInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctVycsICctLXZlcmJvc2UzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0ZXN0IG91dHB1dCBvbiBmYWlsdXJlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdubyBvdXRwdXQgdW5sZXNzIG9uZSBvciBtb3JlIHRlc3RzIGZhaWwnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1zbG93ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncHJpbnRfc2xvdycsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IHRoZSBzbG93ZXN0IDEwIHRlc3RzJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0taGVhZGVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgaGVhZGVyIHdpdGggaW50ZXJwcmV0ZXIgaW5mbycpCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1NlbGVjdGluZyB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcicsICctLXJhbmRvbWl6ZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JhbmRvbWl6ZSB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1yYW5kc2VlZCcsIG1ldGF2YXI9J1NFRUQnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdyYW5kb21fc2VlZCcsIHR5cGU9aW50LAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwYXNzIGEgcmFuZG9tIHNlZWQgdG8gcmVwcm9kdWNlIGEgcHJldmlvdXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5kb20gcnVuJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZnJvbWZpbGUnLCBtZXRhdmFyPSdGSUxFJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmVhZCBuYW1lcyBvZiB0ZXN0cyB0byBydW4gZnJvbSBhIGZpbGUuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXgnLCAnLS1leGNsdWRlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYXJndW1lbnRzIGFyZSB0ZXN0cyB0byAqZXhjbHVkZSonKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zaW5nbGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaW5nbGUgc3RlcCB0aHJvdWdoIGEgc2V0IG9mIHRlc3RzLicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbWF0Y2gnLCBtZXRhdmFyPSdQQVQnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdtYXRjaF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J21hdGNoIHRlc3QgY2FzZXMgYW5kIG1ldGhvZHMgd2l0aCBnbG9iIHBhdHRlcm4gUEFUJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1HJywgJy0tZmFpbGZhc3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmYWlsIGFzIHNvb24gYXMgYSB0ZXN0IGZhaWxzIChvbmx5IHdpdGggLXYgb3IgLVcpJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy11JywgJy0tdXNlJywgbWV0YXZhcj0nUkVTMSxSRVMyLC4uLicsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nYXBwZW5kJywgdHlwZT1yZXNvdXJjZXNfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIHJ1bi4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU0nLCAnLS1tZW1saW1pdCcsIG1ldGF2YXI9J0xJTUlUJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cy4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRlc3RkaXInLCBtZXRhdmFyPSdESVInLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdleGVjdXRlIHRlc3QgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoaW5zdGVhZCBvZiB0aGUgUHl0aG9uIHN0ZGxpYiB0ZXN0IHN1aXRlKScpCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1NwZWNpYWwgcnVucycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbCcsICctLWZpbmRsZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2lmIEdDIGlzIGF2YWlsYWJsZSBkZXRlY3QgdGVzdHMgdGhhdCBsZWFrIG1lbW9yeScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTCcsICctLXJ1bmxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBsZWFrcygxKSBjb21tYW5kIGp1c3QgYmVmb3JlIGV4aXQuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVInLCAnLS1odW50cmxlYWtzJywgbWV0YXZhcj0nUlVOQ09VTlRTJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1odW50cmxlYWtzLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZWFyY2ggZm9yIHJlZmVyZW5jZSBsZWFrcyAobmVlZHMgZGVidWcgYnVpbGQsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyeSBzbG93KS4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWonLCAnLS1tdWx0aXByb2Nlc3MnLCBtZXRhdmFyPSdQUk9DRVNTRVMnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfbXAnLCB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIFBST0NFU1NFUyBwcm9jZXNzZXMgYXQgb25jZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctVCcsICctLWNvdmVyYWdlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndHJhY2UnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0dXJuIG9uIGNvZGUgY292ZXJhZ2UgdHJhY2luZyB1c2luZyB0aGUgdHJhY2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2R1bGUnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUQnLCAnLS1jb3ZlcmRpcicsIG1ldGF2YXI9J0RJUicsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2RpcmVjdG9yeSB3aGVyZSBjb3ZlcmFnZSBmaWxlcyBhcmUgcHV0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1OJywgJy0tbm9jb3ZlcmRpcicsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD1Ob25lLCBkZXN0PSdjb3ZlcmRpcicsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3B1dCBjb3ZlcmFnZSBmaWxlcyBhbG9uZ3NpZGUgbW9kdWxlcycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdCcsICctLXRocmVzaG9sZCcsIG1ldGF2YXI9J1RIUkVTSE9MRCcsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjYWxsIGdjLnNldF90aHJlc2hvbGQoVEhSRVNIT0xEKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbicsICctLW5vd2luZG93cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3N1cHByZXNzIGVycm9yIG1lc3NhZ2UgYm94ZXMgb24gV2luZG93cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRicsICctLWZvcmV2ZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIHNwZWNpZmllZCB0ZXN0cyBpbiBhIGxvb3AsIHVudGlsIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3IgaGFwcGVucycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWxpc3QtdGVzdHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IHdyaXRlIHRoZSBuYW1lIG9mIHRlc3RzIHRoYXQgd2lsbCBiZSBydW4sICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgZXhlY3V0ZSB0aGVtIikKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1QJywgJy0tcGdvJywgZGVzdD0ncGdvJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiB0cmFpbmluZycpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6CisgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQorCisKK2RlZiBodW50cmxlYWtzKHN0cmluZyk6CisgICAgYXJncyA9IHN0cmluZy5zcGxpdCgnOicpCisgICAgaWYgbGVuKGFyZ3MpIG5vdCBpbiAoMiwgMyk6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKAorICAgICAgICAgICAgJ25lZWRzIDIgb3IgMyBjb2xvbi1zZXBhcmF0ZWQgYXJndW1lbnRzJykKKyAgICBud2FybXVwID0gaW50KGFyZ3NbMF0pIGlmIGFyZ3NbMF0gZWxzZSA1CisgICAgbnRyYWNrZWQgPSBpbnQoYXJnc1sxXSkgaWYgYXJnc1sxXSBlbHNlIDQKKyAgICBmbmFtZSA9IGFyZ3NbMl0gaWYgbGVuKGFyZ3MpID4gMiBhbmQgYXJnc1syXSBlbHNlICdyZWZsb2cudHh0JworICAgIHJldHVybiBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUKKworCitkZWYgcmVzb3VyY2VzX2xpc3Qoc3RyaW5nKToKKyAgICB1ID0gW3gubG93ZXIoKSBmb3IgeCBpbiBzdHJpbmcuc3BsaXQoJywnKV0KKyAgICBmb3IgciBpbiB1OgorICAgICAgICBpZiByID09ICdhbGwnIG9yIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICByID0gclsxOl0KKyAgICAgICAgaWYgciBub3QgaW4gUkVTT1VSQ0VfTkFNRVM6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcignaW52YWxpZCByZXNvdXJjZTogJyArIHIpCisgICAgcmV0dXJuIHUKKworCitkZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgorICAgICMgRGVmYXVsdHMKKyAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCisgICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKKyAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKKyAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKKyAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKKyAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKKyAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQorICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQorICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKKyAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCisKKyAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCisgICAgIyBJc3N1ZSAjMTQxOTE6IGFyZ3BhcnNlIGRvZXNuJ3Qgc3VwcG9ydCAiaW50ZXJtaXhlZCIgcG9zaXRpb25hbCBhbmQKKyAgICAjIG9wdGlvbmFsIGFyZ3VtZW50cy4gVXNlIHBhcnNlX2tub3duX2FyZ3MoKSBhcyB3b3JrYXJvdW5kLgorICAgIG5zLmFyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzPWFyZ3MsIG5hbWVzcGFjZT1ucylbMV0KKyAgICBmb3IgYXJnIGluIG5zLmFyZ3M6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICBwYXJzZXIuZXJyb3IoInVucmVjb2duaXplZCBhcmd1bWVudHM6ICVzIiAlIGFyZykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMudHJhY2U6CisgICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMudXNlX21wIGFuZCBucy5maW5kbGVha3M6CisgICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMuZmFpbGZhc3QgYW5kIG5vdCAobnMudmVyYm9zZSBvciBucy52ZXJib3NlMyk6CisgICAgICAgIHBhcnNlci5lcnJvcigiLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVciKQorICAgIGlmIG5zLnBnbyBhbmQgKG5zLnZlcmJvc2Ugb3IgbnMudmVyYm9zZTIgb3IgbnMudmVyYm9zZTMpOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi0tcGdvLy12IGRvbid0IGdvIHRvZ2V0aGVyISIpCisKKyAgICBpZiBucy5ub3dpbmRvd3M6CisgICAgICAgIHByaW50KCJXYXJuaW5nOiB0aGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZC4gIgorICAgICAgICAgICAgICAiVXNlIC12diB0byBkaXNwbGF5IGFzc2VydGlvbnMgaW4gc3RkZXJyLiIsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGlmIG5zLnF1aWV0OgorICAgICAgICBucy52ZXJib3NlID0gMAorICAgIGlmIG5zLnRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIG5zLnRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCisgICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBucy51c2VfbXAgPD0gMDoKKyAgICAgICAgICAgICMgVXNlIGFsbCBjb3JlcyArIGV4dHJhcyBmb3IgdGVzdHMgdGhhdCBsaWtlIHRvIHNsZWVwCisgICAgICAgICAgICBucy51c2VfbXAgPSAyICsgKG9zLmNwdV9jb3VudCgpIG9yIDEpCisgICAgaWYgbnMudXNlOgorICAgICAgICBmb3IgYSBpbiBucy51c2U6CisgICAgICAgICAgICBmb3IgciBpbiBhOgorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6CisgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgICAgICAgICBkZWwgbnMudXNlX3Jlc291cmNlc1s6XQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgciA9IHJbMTpdCisgICAgICAgICAgICAgICAgaWYgcmVtb3ZlOgorICAgICAgICAgICAgICAgICAgICBpZiByIGluIG5zLnVzZV9yZXNvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgIGVsaWYgciBub3QgaW4gbnMudXNlX3Jlc291cmNlczoKKyAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5hcHBlbmQocikKKyAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBub3QgTm9uZToKKyAgICAgICAgbnMucmFuZG9taXplID0gVHJ1ZQorCisgICAgcmV0dXJuIG5zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9tYWluLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVmZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpAQCAtMCwwICsxLDUzMiBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgbG9jYWxlCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHRpbWUKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5jbWRsaW5lIGltcG9ydCBfcGFyc2VfYXJncworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3QgaW1wb3J0ICgKKyAgICBmaW5kdGVzdHMsIHJ1bnRlc3QsCisgICAgU1REVEVTVFMsIE5PVFRFU1RTLCBQQVNTRUQsIEZBSUxFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRCwKKyAgICBJTlRFUlJVUFRFRCwgQ0hJTERfRVJST1IsCisgICAgUFJPR1JFU1NfTUlOX1RJTUUsIGZvcm1hdF90ZXN0X3Jlc3VsdCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zZXR1cCBpbXBvcnQgc2V0dXBfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCBnYworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdjID0gTm9uZQorCisKKyMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKKyMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKKyMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KK2lmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCitlbHNlOgorICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKK1RFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKKworCitkZWYgZm9ybWF0X2R1cmF0aW9uKHNlY29uZHMpOgorICAgIGlmIHNlY29uZHMgPCAxLjA6CisgICAgICAgIHJldHVybiAnJS4wZiBtcycgJSAoc2Vjb25kcyAqIDFlMykKKyAgICBpZiBzZWNvbmRzIDwgNjAuMDoKKyAgICAgICAgcmV0dXJuICclLjBmIHNlYycgJSBzZWNvbmRzCisKKyAgICBtaW51dGVzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDYwLjApCisgICAgcmV0dXJuICclLjBmIG1pbiAlLjBmIHNlYycgJSAobWludXRlcywgc2Vjb25kcykKKworCitjbGFzcyBSZWdydGVzdDoKKyAgICAiIiJFeGVjdXRlIGEgdGVzdCBzdWl0ZS4KKworICAgIFRoaXMgYWxzbyBwYXJzZXMgY29tbWFuZC1saW5lIG9wdGlvbnMgYW5kIG1vZGlmaWVzIGl0cyBiZWhhdmlvcgorICAgIGFjY29yZGluZ2x5LgorCisgICAgdGVzdHMgLS0gYSBsaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyB0ZXN0IG5hbWVzIChvcHRpb25hbCkKKyAgICB0ZXN0ZGlyIC0tIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gbG9vayBmb3IgdGVzdHMgKG9wdGlvbmFsKQorCisgICAgVXNlcnMgb3RoZXIgdGhhbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2lsbCBjZXJ0YWlubHkgd2FudCB0bworICAgIHNwZWNpZnkgdGVzdGRpcjsgaWYgaXQncyBvbWl0dGVkLCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlCisgICAgUHl0aG9uIHRlc3Qgc3VpdGUgaXMgc2VhcmNoZWQgZm9yLgorCisgICAgSWYgdGhlIHRlc3RzIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHRoZSB0ZXN0cyBsaXN0ZWQgb24gdGhlCisgICAgY29tbWFuZC1saW5lIHdpbGwgYmUgdXNlZC4gIElmIHRoYXQncyBlbXB0eSwgdG9vLCB0aGVuIGFsbCAqLnB5CisgICAgZmlsZXMgYmVnaW5uaW5nIHdpdGggdGVzdF8gd2lsbCBiZSB1c2VkLgorCisgICAgVGhlIG90aGVyIGRlZmF1bHQgYXJndW1lbnRzICh2ZXJib3NlLCBxdWlldCwgZXhjbHVkZSwKKyAgICBzaW5nbGUsIHJhbmRvbWl6ZSwgZmluZGxlYWtzLCB1c2VfcmVzb3VyY2VzLCB0cmFjZSwgY292ZXJkaXIsCisgICAgcHJpbnRfc2xvdywgYW5kIHJhbmRvbV9zZWVkKSBhbGxvdyBwcm9ncmFtbWVycyBjYWxsaW5nIG1haW4oKQorICAgIGRpcmVjdGx5IHRvIHNldCB0aGUgdmFsdWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgc2V0IGJ5IGZsYWdzCisgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICMgTmFtZXNwYWNlIG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICAgIHNlbGYubnMgPSBOb25lCisKKyAgICAgICAgIyB0ZXN0cworICAgICAgICBzZWxmLnRlc3RzID0gW10KKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IFtdCisKKyAgICAgICAgIyB0ZXN0IHJlc3VsdHMKKyAgICAgICAgc2VsZi5nb29kID0gW10KKyAgICAgICAgc2VsZi5iYWQgPSBbXQorICAgICAgICBzZWxmLnNraXBwZWQgPSBbXQorICAgICAgICBzZWxmLnJlc291cmNlX2RlbmllZHMgPSBbXQorICAgICAgICBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQgPSBbXQorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKworICAgICAgICAjIHVzZWQgYnkgLS1zbG93CisgICAgICAgIHNlbGYudGVzdF90aW1lcyA9IFtdCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tY292ZXJhZ2UsIHRyYWNlLlRyYWNlIGluc3RhbmNlCisgICAgICAgIHNlbGYudHJhY2VyID0gTm9uZQorCisgICAgICAgICMgdXNlZCBieSAtLWZpbmRsZWFrcywgc3RvcmUgZm9yIGdjLmdhcmJhZ2UKKyAgICAgICAgc2VsZi5mb3VuZF9nYXJiYWdlID0gW10KKworICAgICAgICAjIHVzZWQgdG8gZGlzcGxheSB0aGUgcHJvZ3Jlc3MgYmFyICJbIDMvMTAwXSIKKyAgICAgICAgc2VsZi5zdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBzZWxmLnRlc3RfY291bnQgPSAnJworICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAxCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tc2luZ2xlCisgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IE5vbmUKKyAgICAgICAgc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSA9IE5vbmUKKworICAgIGRlZiBhY2N1bXVsYXRlX3Jlc3VsdChzZWxmLCB0ZXN0LCByZXN1bHQpOgorICAgICAgICBvaywgdGVzdF90aW1lID0gcmVzdWx0CisgICAgICAgIGlmIG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKToKKyAgICAgICAgICAgIHNlbGYudGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCisgICAgICAgIGlmIG9rID09IFBBU1NFRDoKKyAgICAgICAgICAgIHNlbGYuZ29vZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6CisgICAgICAgICAgICBzZWxmLmJhZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBFTlZfQ0hBTkdFRDoKKyAgICAgICAgICAgIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBTS0lQUEVEOgorICAgICAgICAgICAgc2VsZi5za2lwcGVkLmFwcGVuZCh0ZXN0KQorICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgIHNlbGYucmVzb3VyY2VfZGVuaWVkcy5hcHBlbmQodGVzdCkKKworICAgIGRlZiBkaXNwbGF5X3Byb2dyZXNzKHNlbGYsIHRlc3RfaW5kZXgsIHRlc3QpOgorICAgICAgICBpZiBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYuYmFkIGFuZCBub3Qgc2VsZi5ucy5wZ286CisgICAgICAgICAgICBmbXQgPSAie3RpbWV9IFt7dGVzdF9pbmRleDp7Y291bnRfd2lkdGh9fXt0ZXN0X2NvdW50fS97bmJhZH1dIHt0ZXN0X25hbWV9IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm10ID0gInt0aW1lfSBbe3Rlc3RfaW5kZXg6e2NvdW50X3dpZHRofX17dGVzdF9jb3VudH1dIHt0ZXN0X25hbWV9IgorICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpIC0gc2VsZi5zdGFydF90aW1lCisgICAgICAgIHRlc3RfdGltZSA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWludCh0ZXN0X3RpbWUpKQorICAgICAgICBsaW5lID0gZm10LmZvcm1hdChjb3VudF93aWR0aD1zZWxmLnRlc3RfY291bnRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5kZXg9dGVzdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudD1zZWxmLnRlc3RfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5iYWQ9bGVuKHNlbGYuYmFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lPXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU9dGVzdF90aW1lKQorICAgICAgICBwcmludChsaW5lLCBmbHVzaD1UcnVlKQorCisgICAgZGVmIHBhcnNlX2FyZ3Moc2VsZiwga3dhcmdzKToKKyAgICAgICAgbnMgPSBfcGFyc2VfYXJncyhzeXMuYXJndlsxOl0sICoqa3dhcmdzKQorCisgICAgICAgIGlmIG5zLnRpbWVvdXQgYW5kIG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBwcmludCgiV2FybmluZzogVGhlIHRpbWVvdXQgb3B0aW9uIHJlcXVpcmVzICIKKyAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQorCisgICAgICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZSBhbmQgZ2MgaXMgTm9uZToKKyAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGlnbm9yZSAtLXRocmVzaG9sZC4nLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aHJlc2hvbGQgPSBOb25lCisKKyAgICAgICAgaWYgbnMuZmluZGxlYWtzOgorICAgICAgICAgICAgaWYgZ2MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgdG8gcmVwb3J0IGdhcmJhZ2UgdGhhdCBpcyBub3QKKyAgICAgICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQorICAgICAgICAgICAgICAgICMgZ2FyYmFnZSB0aGF0IGlzIG5vdCBjb2xsZWN0YWJsZSBieSB0aGUgR0MgaXMgcmVwb3J0ZWQuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIC0tZmluZGxlYWtzJywKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKKworICAgICAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgorICAgICAgICByZW1vdmVweShucy5hcmdzKQorCisgICAgICAgIHJldHVybiBucworCisgICAgZGVmIGZpbmRfdGVzdHMoc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgICAgICBpZiBzZWxmLm5zLnNpbmdsZToKKyAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgJ3B5bmV4dHRlc3QnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAncicpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3QgPSBmcC5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RzID0gW25leHRfdGVzdF0KKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBzZWxmLm5zLmZyb21maWxlOgorICAgICAgICAgICAgc2VsZi50ZXN0cyA9IFtdCisgICAgICAgICAgICAjIHJlZ2V4IHRvIG1hdGNoICd0ZXN0X2J1aWx0aW4nIGluIGxpbmU6CisgICAgICAgICAgICAjICcwOjAwOjAwIFsgIDQvNDAwXSB0ZXN0X2J1aWx0aW4gLS0gdGVzdF9kaWN0IHRvb2sgMSBzZWMnCisgICAgICAgICAgICByZWdleCA9IChyJ14oPzpbMC05XSs6WzAtOV0rOlswLTldKyAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyg/OlxbWzAtOS8gXStcXSAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyh0ZXN0X1thLXpBLVowLTlfXSspJykKKyAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyZWdleCkKKyAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc2VsZi5ucy5mcm9tZmlsZSkpIGFzIGZwOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZwOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0cy5hcHBlbmQobWF0Y2guZ3JvdXAoMSkpCisKKyAgICAgICAgcmVtb3ZlcHkoc2VsZi50ZXN0cykKKworICAgICAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCisgICAgICAgIG5vdHRlc3RzID0gTk9UVEVTVFMuY29weSgpCisgICAgICAgIGlmIHNlbGYubnMuZXhjbHVkZToKKyAgICAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5ucy5hcmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBzdGR0ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKKyAgICAgICAgICAgICAgICBub3R0ZXN0cy5hZGQoYXJnKQorICAgICAgICAgICAgc2VsZi5ucy5hcmdzID0gW10KKworICAgICAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbworICAgICAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQorICAgICAgICBpZiBzZWxmLm5zLnRlc3RkaXI6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKKworICAgICAgICBpZiBub3Qgc2VsZi5ucy5mcm9tZmlsZToKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBzZWxmLnRlc3RzIG9yIHNlbGYubnMuYXJncyBvciBhbGx0ZXN0cworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZCA9IHNlbGYudGVzdHMKKyAgICAgICAgaWYgc2VsZi5ucy5zaW5nbGU6CisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkID0gc2VsZi5zZWxlY3RlZFs6MV0KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwb3MgPSBhbGx0ZXN0cy5pbmRleChzZWxmLnNlbGVjdGVkWzBdKQorICAgICAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IGFsbHRlc3RzW3BvcyArIDFdCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBSZW1vdmUgYWxsIHRoZSBzZWxlY3RlZCB0ZXN0cyB0aGF0IHByZWNlZGUgc3RhcnQgaWYgaXQncyBzZXQuCisgICAgICAgIGlmIHNlbGYubnMuc3RhcnQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuc2VsZWN0ZWRbOnNlbGYuc2VsZWN0ZWQuaW5kZXgoc2VsZi5ucy5zdGFydCldCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIKKyAgICAgICAgICAgICAgICAgICAgICAlIHNlbGYubnMuc3RhcnQsIGZpbGU9c3lzLnN0ZGVycikKKworICAgICAgICBpZiBzZWxmLm5zLnJhbmRvbWl6ZToKKyAgICAgICAgICAgIGlmIHNlbGYubnMucmFuZG9tX3NlZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnJhbmRvbV9zZWVkID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwMDAwMCkKKyAgICAgICAgICAgIHJhbmRvbS5zZWVkKHNlbGYubnMucmFuZG9tX3NlZWQpCisgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxmLnNlbGVjdGVkKQorCisgICAgZGVmIGxpc3RfdGVzdHMoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYuc2VsZWN0ZWQ6CisgICAgICAgICAgICBwcmludChuYW1lKQorCisgICAgZGVmIHJlcnVuX2ZhaWxlZF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlID0gVHJ1ZQorICAgICAgICBzZWxmLm5zLmZhaWxmYXN0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlMyA9IEZhbHNlCisgICAgICAgIHNlbGYubnMubWF0Y2hfdGVzdHMgPSBOb25lCisKKyAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZSIpCisgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuYmFkWzpdOgorICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnZlcmJvc2UgPSBUcnVlCisgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQworICAgICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWQucmVtb3ZlKHRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5iYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCisgICAgICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgZGVmIGRpc3BsYXlfcmVzdWx0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgYWZ0ZXIgXkMKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKKyAgICAgICAgICAgIGV4ZWN1dGVkID0gc2V0KHNlbGYuZ29vZCkgfCBzZXQoc2VsZi5iYWQpIHwgc2V0KHNlbGYuc2tpcHBlZCkKKyAgICAgICAgICAgIG9taXR0ZWQgPSBzZXQoc2VsZi5zZWxlY3RlZCkgLSBleGVjdXRlZAorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKG9taXR0ZWQpLCAidGVzdCIpLCAib21pdHRlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KG9taXR0ZWQpCisKKyAgICAgICAgIyBJZiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIGZvciBQR08gdGhlbiBubyBvbmUgY2FyZXMgYWJvdXQKKyAgICAgICAgIyByZXN1bHRzLgorICAgICAgICBpZiBzZWxmLm5zLnBnbzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuZ29vZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuYmFkCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLnNraXBwZWQKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuaW50ZXJydXB0ZWQKKyAgICAgICAgICAgICAgICBhbmQgbGVuKHNlbGYuZ29vZCkgPiAxKToKKyAgICAgICAgICAgICAgICBwcmludCgiQWxsIiwgZW5kPScgJykKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLmdvb2QpLCAidGVzdCIpLCAiT0suIikKKworICAgICAgICBpZiBzZWxmLm5zLnByaW50X3Nsb3c6CisgICAgICAgICAgICBzZWxmLnRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgiMTAgc2xvd2VzdCB0ZXN0czoiKQorICAgICAgICAgICAgZm9yIHRpbWUsIHRlc3QgaW4gc2VsZi50ZXN0X3RpbWVzWzoxMF06CisgICAgICAgICAgICAgICAgcHJpbnQoIi0gJXM6ICVzIiAlICh0ZXN0LCBmb3JtYXRfZHVyYXRpb24odGltZSkpKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuYmFkKSwgInRlc3QiKSwgImZhaWxlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgICAgIGlmIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZDoKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJ7fSBhbHRlcmVkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQ6Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBjb3VudChsZW4oc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKSwgInRlc3QiKSkpCisgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKQorCisgICAgICAgIGlmIHNlbGYuc2tpcHBlZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5za2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChzZWxmLnNraXBwZWQpCisKKyAgICBkZWYgcnVuX3Rlc3RzX3NlcXVlbnRpYWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYubnMudHJhY2U6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2UKKyAgICAgICAgICAgIHNlbGYudHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCisKKyAgICAgICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCisKKyAgICAgICAgcHJpbnQoIlJ1biB0ZXN0cyBzZXF1ZW50aWFsbHkiKQorCisgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisgICAgICAgIGZvciB0ZXN0X2luZGV4LCB0ZXN0IGluIGVudW1lcmF0ZShzZWxmLnRlc3RzLCAxKToKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisKKyAgICAgICAgICAgIHRleHQgPSB0ZXN0CisgICAgICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgICAgIHRleHQgPSAnJXMgLS0gJXMnICUgKHRleHQsIHByZXZpb3VzX3Rlc3QpCisgICAgICAgICAgICBzZWxmLmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgaWYgc2VsZi50cmFjZXI6CisgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSB0cmFjaW5nIGNvZGUgY292ZXJhZ2UsIHRoZW4gd2UgZG9uJ3QgZXhpdCB3aXRoIHN0YXR1cworICAgICAgICAgICAgICAgICMgaWYgb24gYSBmYWxzZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluLgorICAgICAgICAgICAgICAgIGNtZCA9ICgncmVzdWx0ID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KTsgJworICAgICAgICAgICAgICAgICAgICAgICAnc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpJykKKyAgICAgICAgICAgICAgICBucyA9IGRpY3QobG9jYWxzKCkpCisgICAgICAgICAgICAgICAgc2VsZi50cmFjZXIucnVuY3R4KGNtZCwgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz1ucykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuc1sncmVzdWx0J10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIChJTlRFUlJVUFRFRCwgTm9uZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdCwgcmVzdWx0WzBdKQorICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIHRlc3RfdGltZSA+PSBQUk9HUkVTU19NSU5fVElNRToKKyAgICAgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gIiVzIGluICVzIiAlIChwcmV2aW91c190ZXN0LCBmb3JtYXRfZHVyYXRpb24odGVzdF90aW1lKSkKKyAgICAgICAgICAgIGVsaWYgcmVzdWx0WzBdID09IFBBU1NFRDoKKyAgICAgICAgICAgICAgICAjIGJlIHF1aWV0OiBzYXkgbm90aGluZyBpZiB0aGUgdGVzdCBwYXNzZWQgc2hvcnRseQorICAgICAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisKKyAgICAgICAgICAgIGlmIHNlbGYubnMuZmluZGxlYWtzOgorICAgICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgICAgIGlmIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiB0ZXN0IGNyZWF0ZWQiLCBsZW4oZ2MuZ2FyYmFnZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCJ1bmNvbGxlY3RhYmxlIG9iamVjdChzKS4iKQorICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIHVuY29sbGVjdGFibGUgb2JqZWN0cyBzb21ld2hlcmUgc28gd2UgZG9uJ3Qgc2VlCisgICAgICAgICAgICAgICAgICAgICMgdGhlbSBhZ2FpbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZvdW5kX2dhcmJhZ2UuZXh0ZW5kKGdjLmdhcmJhZ2UpCisgICAgICAgICAgICAgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCisKKyAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCisgICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKKworICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgcHJpbnQocHJldmlvdXNfdGVzdCkKKworICAgIGRlZiBfdGVzdF9mb3JldmVyKHNlbGYsIHRlc3RzKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIEZvciBhIHBhcnRpYWwgcnVuLCB3ZSBkbyBub3QgbmVlZCB0byBjbHV0dGVyIHRoZSBvdXRwdXQuCisgICAgICAgIGlmIChzZWxmLm5zLnZlcmJvc2UKKyAgICAgICAgICAgIG9yIHNlbGYubnMuaGVhZGVyCisgICAgICAgICAgICBvciBub3QgKHNlbGYubnMucGdvIG9yIHNlbGYubnMucXVpZXQgb3Igc2VsZi5ucy5zaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi50ZXN0cyBvciBzZWxmLm5zLmFyZ3MpKToKKyAgICAgICAgICAgICMgUHJpbnQgYmFzaWMgcGxhdGZvcm0gaW5mb3JtYXRpb24KKyAgICAgICAgICAgIHByaW50KCI9PSIsIHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLCAqc3lzLnZlcnNpb24uc3BsaXQoKSkKKyAgICAgICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLWVuZGlhbiIgJSBzeXMuYnl0ZW9yZGVyKQorICAgICAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAiNjRiaXQiIGlmIHN5cy5tYXhzaXplID4gMioqMzIgZWxzZSAiMzJiaXQiKQorICAgICAgICAgICAgcHJpbnQoIj09ICBjd2Q6Iiwgb3MuZ2V0Y3dkKCkpCisgICAgICAgICAgICBwcmludCgiPT0gIGVuY29kaW5nczogbG9jYWxlPSVzLCBGUz0lcyIKKyAgICAgICAgICAgICAgICAgICUgKGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorICAgICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5yYW5kb21pemU6CisgICAgICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBzZWxmLm5zLnJhbmRvbV9zZWVkKQorCisgICAgICAgIGlmIHNlbGYubnMuZm9yZXZlcjoKKyAgICAgICAgICAgIHNlbGYudGVzdHMgPSBzZWxmLl90ZXN0X2ZvcmV2ZXIobGlzdChzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudCA9ICcnCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRlc3RzID0gaXRlcihzZWxmLnNlbGVjdGVkKQorICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50ID0gJy97fScuZm9ybWF0KGxlbihzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudF93aWR0aCA9IGxlbihzZWxmLnRlc3RfY291bnQpIC0gMQorCisgICAgICAgIGlmIHNlbGYubnMudXNlX21wOgorICAgICAgICAgICAgZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3RfbXAgaW1wb3J0IHJ1bl90ZXN0c19tdWx0aXByb2Nlc3MKKyAgICAgICAgICAgIHJ1bl90ZXN0c19tdWx0aXByb2Nlc3Moc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucnVuX3Rlc3RzX3NlcXVlbnRpYWwoKQorCisgICAgZGVmIGZpbmFsaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lOgorICAgICAgICAgICAgaWYgc2VsZi5uZXh0X3NpbmdsZV90ZXN0OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAndycpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBmcC53cml0ZShzZWxmLm5leHRfc2luZ2xlX3Rlc3QgKyAnXG4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSkKKworICAgICAgICBpZiBzZWxmLnRyYWNlcjoKKyAgICAgICAgICAgIHIgPSBzZWxmLnRyYWNlci5yZXN1bHRzKCkKKyAgICAgICAgICAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyZGlyPXNlbGYubnMuY292ZXJkaXIpCisKKyAgICAgICAgcHJpbnQoKQorICAgICAgICBkdXJhdGlvbiA9IHRpbWUubW9ub3RvbmljKCkgLSBzZWxmLnN0YXJ0X3RpbWUKKyAgICAgICAgcHJpbnQoIlRvdGFsIGR1cmF0aW9uOiAlcyIgJSBmb3JtYXRfZHVyYXRpb24oZHVyYXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUxVUkUiCisgICAgICAgIGVsaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICJJTlRFUlJVUFRFRCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTVUNDRVNTIgorICAgICAgICBwcmludCgiVGVzdHMgcmVzdWx0OiAlcyIgJSByZXN1bHQpCisKKyAgICAgICAgaWYgc2VsZi5ucy5ydW5sZWFrczoKKyAgICAgICAgICAgIG9zLnN5c3RlbSgibGVha3MgJWQiICUgb3MuZ2V0cGlkKCkpCisKKyAgICBkZWYgbWFpbihzZWxmLCB0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGdsb2JhbCBURU1QRElSCisKKyAgICAgICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCisgICAgICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKKyAgICAgICAgIyB0ZXN0aW5nIChzZWUgdGhlIC1qIG9wdGlvbikuCisgICAgICAgIHRlc3RfY3dkID0gJ3Rlc3RfcHl0aG9uX3t9Jy5mb3JtYXQob3MuZ2V0cGlkKCkpCisgICAgICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQorCisgICAgICAgICMgUnVuIHRoZSB0ZXN0cyBpbiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIENXRCB0byBhCisgICAgICAgICMgdGVtcG9yYXJ5IGFuZCB3cml0YWJsZSBkaXJlY3RvcnkuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKKyAgICAgICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCisgICAgICAgICMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHRlc3RfY3dkLCBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuX21haW4odGVzdHMsIGt3YXJncykKKworICAgIGRlZiBfbWFpbihzZWxmLCB0ZXN0cywga3dhcmdzKToKKyAgICAgICAgc2VsZi5ucyA9IHNlbGYucGFyc2VfYXJncyhrd2FyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5zbGF2ZWFyZ3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdF9tcCBpbXBvcnQgcnVuX3Rlc3RzX3NsYXZlCisgICAgICAgICAgICBydW5fdGVzdHNfc2xhdmUoc2VsZi5ucy5zbGF2ZWFyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy53YWl0OgorICAgICAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQorCisgICAgICAgIHN1cHBvcnQuUEdPID0gc2VsZi5ucy5wZ28KKworICAgICAgICBzZXR1cF90ZXN0cyhzZWxmLm5zKQorCisgICAgICAgIHNlbGYuZmluZF90ZXN0cyh0ZXN0cykKKworICAgICAgICBpZiBzZWxmLm5zLmxpc3RfdGVzdHM6CisgICAgICAgICAgICBzZWxmLmxpc3RfdGVzdHMoKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgICAgICBzZWxmLnJ1bl90ZXN0cygpCisgICAgICAgIHNlbGYuZGlzcGxheV9yZXN1bHQoKQorCisgICAgICAgIGlmIHNlbGYubnMudmVyYm9zZTIgYW5kIHNlbGYuYmFkOgorICAgICAgICAgICAgc2VsZi5yZXJ1bl9mYWlsZWRfdGVzdHMoKQorCisgICAgICAgIHNlbGYuZmluYWxpemUoKQorICAgICAgICBzeXMuZXhpdChsZW4oc2VsZi5iYWQpID4gMCBvciBzZWxmLmludGVycnVwdGVkKQorCisKK2RlZiByZW1vdmVweShuYW1lcyk6CisgICAgaWYgbm90IG5hbWVzOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShuYW1lcyk6CisgICAgICAgIGJhc2VuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIGV4dCA9PSAnLnB5JzoKKyAgICAgICAgICAgIG5hbWVzW2lkeF0gPSBiYXNlbmFtZQorCisKK2RlZiBjb3VudChuLCB3b3JkKToKKyAgICBpZiBuID09IDE6CisgICAgICAgIHJldHVybiAiJWQgJXMiICUgKG4sIHdvcmQpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICIlZCAlc3MiICUgKG4sIHdvcmQpCisKKworZGVmIHByaW50bGlzdCh4LCB3aWR0aD03MCwgaW5kZW50PTQpOgorICAgICIiIlByaW50IHRoZSBlbGVtZW50cyBvZiBpdGVyYWJsZSB4IHRvIHN0ZG91dC4KKworICAgIE9wdGlvbmFsIGFyZyB3aWR0aCAoZGVmYXVsdCA3MCkgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGguCisgICAgT3B0aW9uYWwgYXJnIGluZGVudCAoZGVmYXVsdCA0KSBpcyB0aGUgbnVtYmVyIG9mIGJsYW5rcyB3aXRoIHdoaWNoIHRvCisgICAgYmVnaW4gZWFjaCBsaW5lLgorICAgICIiIgorCisgICAgYmxhbmtzID0gJyAnICogaW5kZW50CisgICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQorICAgIHByaW50KHRleHR3cmFwLmZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKSkKKworCitkZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIHRoZSBQeXRob24gc3VpdGUuIiIiCisgICAgUmVncnRlc3QoKS5tYWluKHRlc3RzPXRlc3RzLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3JlZmxlYWsucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZGM0OWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5CkBAIC0wLDAgKzEsMjAyIEBACitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKwordHJ5OgorICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQorZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICBNQVhGRCA9IDI1NgorCisKK2RlZiBmZF9jb3VudCgpOgorICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIiIiCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdmcmVlYnNkJykpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoIi9wcm9jL3NlbGYvZmQiKQorICAgICAgICAgICAgcmV0dXJuIGxlbihuYW1lcykKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgY291bnQgPSAwCisgICAgZm9yIGZkIGluIHJhbmdlKE1BWEZEKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBQcmVmZXIgZHVwKCkgb3ZlciBmc3RhdCgpLiBmc3RhdCgpIGNhbiByZXF1aXJlIGlucHV0L291dHB1dAorICAgICAgICAgICAgIyB3aGVyZWFzIGR1cCgpIGRvZXNuJ3QuCisgICAgICAgICAgICBmZDIgPSBvcy5kdXAoZmQpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVCQURGOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy5jbG9zZShmZDIpCisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgcmV0dXJuIGNvdW50CisKKworZGVmIGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCBpbmRpcmVjdF90ZXN0LCBodW50cmxlYWtzKToKKyAgICAiIiJSdW4gYSB0ZXN0IG11bHRpcGxlIHRpbWVzLCBsb29raW5nIGZvciByZWZlcmVuY2UgbGVha3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBGYWxzZSBpZiB0aGUgdGVzdCBkaWRuJ3QgbGVhayByZWZlcmVuY2VzOyBUcnVlIGlmIHdlIGRldGVjdGVkIHJlZmxlYWtzLgorICAgICIiIgorICAgICMgVGhpcyBjb2RlIGlzIGhhY2tpc2ggYW5kIGluZWxlZ2FudCwgYnV0IGl0IHNlZW1zIHRvIGRvIHRoZSBqb2IuCisgICAgaW1wb3J0IGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCisKKyAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9mIFB5dGhvbiIpCisKKyAgICAjIFNhdmUgY3VycmVudCB2YWx1ZXMgZm9yIGRhc2hfUl9jbGVhbnVwKCkgdG8gcmVzdG9yZS4KKyAgICBmcyA9IHdhcm5pbmdzLmZpbHRlcnNbOl0KKyAgICBwcyA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgcGljID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY29weSgpCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICB6ZGMgPSBOb25lICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKKyAgICBlbHNlOgorICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCisgICAgYWJjcyA9IHt9CisgICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKKyAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKKyAgICAgICAgICAgIGFiY3Nbb2JqXSA9IG9iai5fYWJjX3JlZ2lzdHJ5LmNvcHkoKQorCisgICAgbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lID0gaHVudHJsZWFrcworICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGZuYW1lKQorICAgIHJlcGNvdW50ID0gbndhcm11cCArIG50cmFja2VkCisgICAgcmNfZGVsdGFzID0gWzBdICogcmVwY291bnQKKyAgICBhbGxvY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorICAgIGZkX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50CisKKyAgICBwcmludCgiYmVnaW5uaW5nIiwgcmVwY291bnQsICJyZXBldGl0aW9ucyIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBwcmludCgoIjEyMzQ1Njc4OTAiKihyZXBjb3VudC8vMTAgKyAxKSlbOnJlcGNvdW50XSwgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgIyBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBtYWtlIHB5Zmxha2VzIHF1aWV0CisgICAgcmNfYmVmb3JlID0gYWxsb2NfYmVmb3JlID0gZmRfYmVmb3JlID0gMAorICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKKyAgICAgICAgaW5kaXJlY3RfdGVzdCgpCisgICAgICAgIGFsbG9jX2FmdGVyLCByY19hZnRlciwgZmRfYWZ0ZXIgPSBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJjcykKKyAgICAgICAgcHJpbnQoJy4nLCBlbmQ9JycsIGZsdXNoPVRydWUpCisgICAgICAgIGlmIGkgPj0gbndhcm11cDoKKyAgICAgICAgICAgIHJjX2RlbHRhc1tpXSA9IHJjX2FmdGVyIC0gcmNfYmVmb3JlCisgICAgICAgICAgICBhbGxvY19kZWx0YXNbaV0gPSBhbGxvY19hZnRlciAtIGFsbG9jX2JlZm9yZQorICAgICAgICAgICAgZmRfZGVsdGFzW2ldID0gZmRfYWZ0ZXIgLSBmZF9iZWZvcmUKKyAgICAgICAgYWxsb2NfYmVmb3JlID0gYWxsb2NfYWZ0ZXIKKyAgICAgICAgcmNfYmVmb3JlID0gcmNfYWZ0ZXIKKyAgICAgICAgZmRfYmVmb3JlID0gZmRfYWZ0ZXIKKyAgICBwcmludChmaWxlPXN5cy5zdGRlcnIpCisgICAgIyBUaGVzZSBjaGVja2VycyByZXR1cm4gRmFsc2Ugb24gc3VjY2VzcywgVHJ1ZSBvbiBmYWlsdXJlCisgICAgZGVmIGNoZWNrX3JjX2RlbHRhcyhkZWx0YXMpOgorICAgICAgICByZXR1cm4gYW55KGRlbHRhcykKKyAgICBkZWYgY2hlY2tfYWxsb2NfZGVsdGFzKGRlbHRhcyk6CisgICAgICAgICMgQXQgbGVhc3QgMS8zcmQgb2YgMHMKKyAgICAgICAgaWYgMyAqIGRlbHRhcy5jb3VudCgwKSA8IGxlbihkZWx0YXMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgIyBOb3RoaW5nIGVsc2UgdGhhbiAxcywgMHMgYW5kIC0xcworICAgICAgICBpZiBub3Qgc2V0KGRlbHRhcykgPD0gezEsMCwtMX06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmYWlsZWQgPSBGYWxzZQorICAgIGZvciBkZWx0YXMsIGl0ZW1fbmFtZSwgY2hlY2tlciBpbiBbCisgICAgICAgIChyY19kZWx0YXMsICdyZWZlcmVuY2VzJywgY2hlY2tfcmNfZGVsdGFzKSwKKyAgICAgICAgKGFsbG9jX2RlbHRhcywgJ21lbW9yeSBibG9ja3MnLCBjaGVja19hbGxvY19kZWx0YXMpLAorICAgICAgICAoZmRfZGVsdGFzLCAnZmlsZSBkZXNjcmlwdG9ycycsIGNoZWNrX3JjX2RlbHRhcyldOgorICAgICAgICBpZiBjaGVja2VyKGRlbHRhcyk6CisgICAgICAgICAgICBtc2cgPSAnJXMgbGVha2VkICVzICVzLCBzdW09JXMnICUgKAorICAgICAgICAgICAgICAgIHRlc3QsIGRlbHRhc1tud2FybXVwOl0sIGl0ZW1fbmFtZSwgc3VtKGRlbHRhcykpCisgICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgImEiKSBhcyByZWZyZXA6CisgICAgICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXJlZnJlcCkKKyAgICAgICAgICAgICAgICByZWZyZXAuZmx1c2goKQorICAgICAgICAgICAgZmFpbGVkID0gVHJ1ZQorICAgIHJldHVybiBmYWlsZWQKKworCitkZWYgZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcyk6CisgICAgaW1wb3J0IGdjLCBjb3B5cmVnCisgICAgaW1wb3J0IF9zdHJwdGltZSwgbGluZWNhY2hlCisgICAgaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QsIG1pbWV0eXBlcywgZG9jdGVzdAorICAgIGltcG9ydCBzdHJ1Y3QsIGZpbGVjbXAsIGNvbGxlY3Rpb25zLmFiYworICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBfcGF0aF9jcmVhdGVkCisgICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CisKKyAgICAjIENsZWFyIHRoZSB3YXJuaW5ncyByZWdpc3RyeSwgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGFnYWluCisgICAgZm9yIG1vZCBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKKyAgICAgICAgaWYgaGFzYXR0cihtb2QsICdfX3dhcm5pbmdyZWdpc3RyeV9fJyk6CisgICAgICAgICAgICBkZWwgbW9kLl9fd2FybmluZ3JlZ2lzdHJ5X18KKworICAgICMgUmVzdG9yZSBzb21lIG9yaWdpbmFsIHZhbHVlcy4KKyAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gZnMKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNsZWFyKCkKKyAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLnVwZGF0ZShwcykKKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudXBkYXRlKHBpYykKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB6aXBpbXBvcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAorICAgIGVsc2U6CisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCisgICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS51cGRhdGUoemRjKQorCisgICAgIyBjbGVhciB0eXBlIGNhY2hlCisgICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKKworICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CisgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CisgICAgICAgICAgICBvYmouX2FiY19yZWdpc3RyeSA9IGFiY3MuZ2V0KG9iaiwgV2Vha1NldCgpKS5jb3B5KCkKKyAgICAgICAgICAgIG9iai5fYWJjX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgICAgIG9iai5fYWJjX25lZ2F0aXZlX2NhY2hlLmNsZWFyKCkKKworICAgICMgRmx1c2ggc3RhbmRhcmQgb3V0cHV0LCBzbyB0aGF0IGJ1ZmZlcmVkIGRhdGEgaXMgc2VudCB0byB0aGUgT1MgYW5kCisgICAgIyBhc3NvY2lhdGVkIFB5dGhvbiBvYmplY3RzIGFyZSByZWNsYWltZWQuCisgICAgZm9yIHN0cmVhbSBpbiAoc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciwgc3lzLl9fc3Rkb3V0X18sIHN5cy5fX3N0ZGVycl9fKToKKyAgICAgICAgaWYgc3RyZWFtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkKKworICAgICMgQ2xlYXIgYXNzb3J0ZWQgbW9kdWxlIGNhY2hlcy4KKyAgICBfcGF0aF9jcmVhdGVkLmNsZWFyKCkKKyAgICByZS5wdXJnZSgpCisgICAgX3N0cnB0aW1lLl9yZWdleF9jYWNoZS5jbGVhcigpCisgICAgdXJsbGliLnBhcnNlLmNsZWFyX2NhY2hlKCkKKyAgICB1cmxsaWIucmVxdWVzdC51cmxjbGVhbnVwKCkKKyAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCisgICAgbWltZXR5cGVzLl9kZWZhdWx0X21pbWVfdHlwZXMoKQorICAgIGZpbGVjbXAuX2NhY2hlLmNsZWFyKCkKKyAgICBzdHJ1Y3QuX2NsZWFyY2FjaGUoKQorICAgIGRvY3Rlc3QubWFzdGVyID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IGN0eXBlcworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgIyBEb24ndCB3b3JyeSBhYm91dCByZXNldHRpbmcgdGhlIGNhY2hlIGlmIGN0eXBlcyBpcyBub3Qgc3VwcG9ydGVkCisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBjdHlwZXMuX3Jlc2V0X2NhY2hlKCkKKworICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2ggYW5kIHJlYWQgbWVtb3J5IHN0YXRpc3RpY3MgaW1tZWRpYXRlbHkgYWZ0ZXIuCisgICAgZnVuYzEgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzCisgICAgZnVuYzIgPSBzeXMuZ2V0dG90YWxyZWZjb3VudAorICAgIGdjLmNvbGxlY3QoKQorICAgIHJldHVybiBmdW5jMSgpLCBmdW5jMigpLCBmZF9jb3VudCgpCisKKworZGVmIHdhcm1fY2FjaGVzKCk6CisgICAgIyBjaGFyIGNhY2hlCisgICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCisgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKKyAgICAgICAgc1tpOmkrMV0KKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICBbY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NildCisgICAgIyBpbnQgY2FjaGUKKyAgICBsaXN0KHJhbmdlKC01LCAyNTcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdC5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4MjU0MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKQEAgLTAsMCArMSwyNDQgQEAKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5yZWZsZWFrIGltcG9ydCBkYXNoX1IKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zYXZlX2VudiBpbXBvcnQgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudAorCisKKyMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgorUEFTU0VEID0gMQorRkFJTEVEID0gMAorRU5WX0NIQU5HRUQgPSAtMQorU0tJUFBFRCA9IC0yCitSRVNPVVJDRV9ERU5JRUQgPSAtMworSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCisKK19GT1JNQVRfVEVTVF9SRVNVTFQgPSB7CisgICAgUEFTU0VEOiAnJXMgcGFzc2VkJywKKyAgICBGQUlMRUQ6ICclcyBmYWlsZWQnLAorICAgIEVOVl9DSEFOR0VEOiAnJXMgZmFpbGVkIChlbnYgY2hhbmdlZCknLAorICAgIFNLSVBQRUQ6ICclcyBza2lwcGVkJywKKyAgICBSRVNPVVJDRV9ERU5JRUQ6ICclcyBza2lwcGVkIChyZXNvdXJjZSBkZW5pZWQpJywKKyAgICBJTlRFUlJVUFRFRDogJyVzIGludGVycnVwdGVkJywKKyAgICBDSElMRF9FUlJPUjogJyVzIGNyYXNoZWQnLAorfQorCisjIE1pbmltdW0gZHVyYXRpb24gb2YgYSB0ZXN0IHRvIGRpc3BsYXkgaXRzIGR1cmF0aW9uIG9yIHRvIG1lbnRpb24gdGhhdAorIyB0aGUgdGVzdCBpcyBydW5uaW5nIGluIGJhY2tncm91bmQKK1BST0dSRVNTX01JTl9USU1FID0gMzAuMCAgICMgc2Vjb25kcworCisjIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgorIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCitTVERURVNUUyA9IFsKKyAgICAndGVzdF9ncmFtbWFyJywKKyAgICAndGVzdF9vcGNvZGVzJywKKyAgICAndGVzdF9kaWN0JywKKyAgICAndGVzdF9idWlsdGluJywKKyAgICAndGVzdF9leGNlcHRpb25zJywKKyAgICAndGVzdF90eXBlcycsCisgICAgJ3Rlc3RfdW5pdHRlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QnLAorICAgICd0ZXN0X2RvY3Rlc3QyJywKKyAgICAndGVzdF9zdXBwb3J0JworXQorCisjIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAorTk9UVEVTVFMgPSBzZXQoKQorCisKK2RlZiBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCByZXN1bHQpOgorICAgIGZtdCA9IF9GT1JNQVRfVEVTVF9SRVNVTFQuZ2V0KHJlc3VsdCwgIiVzIikKKyAgICByZXR1cm4gZm10ICUgdGVzdF9uYW1lCisKKworZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCisgICAgdGVzdGRpciA9IGZpbmR0ZXN0ZGlyKHRlc3RkaXIpCisgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRlc3RkaXIpCisgICAgdGVzdHMgPSBbXQorICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cworICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICBtb2QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKKyAgICAgICAgaWYgbW9kWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgaW4gKCIucHkiLCAiIikgYW5kIG1vZCBub3QgaW4gb3RoZXJzOgorICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZCkKKyAgICByZXR1cm4gc3RkdGVzdHMgKyBzb3J0ZWQodGVzdHMpCisKKworZGVmIHJ1bnRlc3QobnMsIHRlc3QpOgorICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgorCisgICAgbnMgLS0gcmVncnRlc3QgbmFtZXNwYWNlIG9mIG9wdGlvbnMKKyAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0CisKKyAgICBSZXR1cm5zIHRoZSB0dXBsZSAocmVzdWx0LCB0ZXN0X3RpbWUpLCB3aGVyZSByZXN1bHQgaXMgb25lIG9mIHRoZQorICAgIGNvbnN0YW50czoKKworICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCisgICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCisgICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgorICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50CisgICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKKyAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAorICAgICIiIgorCisgICAgb3V0cHV0X29uX2ZhaWx1cmUgPSBucy52ZXJib3NlMworCisgICAgdXNlX3RpbWVvdXQgPSAobnMudGltZW91dCBpcyBub3QgTm9uZSkKKyAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKG5zLnRpbWVvdXQsIGV4aXQ9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQubWF0Y2hfdGVzdHMgPSBucy5tYXRjaF90ZXN0cworICAgICAgICBpZiBucy5mYWlsZmFzdDoKKyAgICAgICAgICAgIHN1cHBvcnQuZmFpbGZhc3QgPSBUcnVlCisgICAgICAgIGlmIG91dHB1dF9vbl9mYWlsdXJlOgorICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gVHJ1ZQorCisgICAgICAgICAgICAjIFJldXNlIHRoZSBzYW1lIGluc3RhbmNlIHRvIGFsbCBjYWxscyB0byBydW50ZXN0KCkuIFNvbWUKKyAgICAgICAgICAgICMgdGVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIKKyAgICAgICAgICAgICMgKGVnLiB0ZXN0X2FyZ3BhcnNlKS4KKyAgICAgICAgICAgIGlmIHJ1bnRlc3Quc3RyaW5naW8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICAgICAgcnVudGVzdC5zdHJpbmdpbyA9IHN0cmVhbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBydW50ZXN0LnN0cmluZ2lvCisgICAgICAgICAgICAgICAgc3RyZWFtLnNlZWsoMCkKKyAgICAgICAgICAgICAgICBzdHJlYW0udHJ1bmNhdGUoKQorCisgICAgICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICAgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzdHJlYW0KKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3RyZWFtCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPUZhbHNlKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSAhPSBQQVNTRUQ6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IG5zLnZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0CisgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9bm90IG5zLnZlcmJvc2UpCisgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIG5zLnZlcmJvc2UpCitydW50ZXN0LnN0cmluZ2lvID0gTm9uZQorCisKK2RlZiBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSk6CisgICAgc3VwcG9ydC51bmxvYWQodGVzdCkKKworICAgIHRlc3RfdGltZSA9IDAuMAorICAgIHJlZmxlYWsgPSBGYWxzZSAgIyBUcnVlIGlmIHRoZSB0ZXN0IGxlYWtlZCByZWZlcmVuY2VzLgorICAgIHRyeToKKyAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpIG9yIG5zLnRlc3RkaXI6CisgICAgICAgICAgICBhYnN0ZXN0ID0gdGVzdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBbHdheXMgaW1wb3J0IGl0IGZyb20gdGhlIHRlc3QgcGFja2FnZQorICAgICAgICAgICAgYWJzdGVzdCA9ICd0ZXN0LicgKyB0ZXN0CisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCBucy52ZXJib3NlLCBucy5xdWlldCwgcGdvPW5zLnBnbykgYXMgZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQorICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCisgICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KKyAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKKyAgICAgICAgICAgIGlmIHRlc3RfcnVubmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6CisgICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQorICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKKyAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKKyAgICAgICAgICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwgbnMuaHVudHJsZWFrcykKKyAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQorICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKKyAgICAgICAgaWYgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgorICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2csIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBSRVNPVVJDRV9ERU5JRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdCB1bml0dGVzdC5Ta2lwVGVzdCBhcyBtc2c6CisgICAgICAgIGlmIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gU0tJUFBFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICByYWlzZQorICAgIGV4Y2VwdCBzdXBwb3J0LlRlc3RGYWlsZWQgYXMgbXNnOgorICAgICAgICBpZiBub3QgbnMucGdvOgorICAgICAgICAgICAgaWYgZGlzcGxheV9mYWlsdXJlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCIsIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0OgorICAgICAgICBtc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgIGlmIG5vdCBucy5wZ286CisgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJjcmFzaGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKKyAgICBlbHNlOgorICAgICAgICBpZiByZWZsZWFrOgorICAgICAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgICAgIGlmIGVudmlyb25tZW50LmNoYW5nZWQ6CisgICAgICAgICAgICByZXR1cm4gRU5WX0NIQU5HRUQsIHRlc3RfdGltZQorICAgICAgICByZXR1cm4gUEFTU0VELCB0ZXN0X3RpbWUKKworCitkZWYgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0bmFtZSwgdmVyYm9zZSk6CisgICAgaW1wb3J0IHNodXRpbAorICAgIGltcG9ydCBzdGF0CisgICAgaW1wb3J0IGdjCisKKyAgICAjIEZpcnN0IGtpbGwgYW55IGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gb3BlbiBmaWxlcyBldGMuCisgICAgIyBUaGlzIGNhbiBhbHNvIGlzc3VlIHNvbWUgUmVzb3VyY2VXYXJuaW5ncyB3aGljaCB3b3VsZCBvdGhlcndpc2UgZ2V0CisgICAgIyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBmb2xsb3dpbmcgdGVzdCBydW4sIGFuZCBwb3NzaWJseSBwcm9kdWNlIGZhaWx1cmVzLgorICAgIGdjLmNvbGxlY3QoKQorCisgICAgIyBUcnkgdG8gY2xlYW4gdXAganVuayBjb21tb25seSBsZWZ0IGJlaGluZC4gIFdoaWxlIHRlc3RzIHNob3VsZG4ndCBsZWF2ZQorICAgICMgYW55IGZpbGVzIG9yIGRpcmVjdG9yaWVzIGJlaGluZCwgd2hlbiBhIHRlc3QgZmFpbHMgdGhhdCBjYW4gYmUgdGVkaW91cworICAgICMgZm9yIGl0IHRvIGFycmFuZ2UuICBUaGUgY29uc2VxdWVuY2VzIGNhbiBiZSBlc3BlY2lhbGx5IG5hc3R5IG9uIFdpbmRvd3MsCisgICAgIyBzaW5jZSBpZiBhIHRlc3QgbGVhdmVzIGEgZmlsZSBvcGVuLCBpdCBjYW5ub3QgYmUgZGVsZXRlZCBieSBuYW1lICh3aGlsZQorICAgICMgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGF0IGhlcmUgZWl0aGVyLCB3ZSBjYW4gZGlzcGxheSB0aGUKKyAgICAjIG5hbWUgb2YgdGhlIG9mZmVuZGluZyB0ZXN0LCB3aGljaCBpcyBhIHJlYWwgaGVscCkuCisgICAgZm9yIG5hbWUgaW4gKHN1cHBvcnQuVEVTVEZOLAorICAgICAgICAgICAgICAgICAiZGJfaG9tZSIsCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZGlyZWN0b3J5Iiwgc2h1dGlsLnJtdHJlZQorICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZmlsZSIsIG9zLnVubGluaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm9zLnBhdGggc2F5cyAlciBleGlzdHMgYnV0IGlzIG5laXRoZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBub3IgZmlsZSIgJSBuYW1lKQorCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBwcmludCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBpZiB3ZSBoYXZlIGNobW9kLCBmaXggcG9zc2libGUgcGVybWlzc2lvbnMgcHJvYmxlbXMKKyAgICAgICAgICAgICMgdGhhdCBtaWdodCBwcmV2ZW50IGNsZWFudXAKKyAgICAgICAgICAgIGlmIChoYXNhdHRyKG9zLCAnY2htb2QnKSk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QobmFtZSwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hHIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICAgICAgbnVrZXIobmFtZSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBtc2c6CisgICAgICAgICAgICBwcmludCgoIiVyIGxlZnQgYmVoaW5kICVzICVyIGFuZCBpdCBjb3VsZG4ndCBiZSAiCisgICAgICAgICAgICAgICAgInJlbW92ZWQ6ICVzIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSwgbXNnKSksIGZpbGU9c3lzLnN0ZGVycikKKworCitkZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKKyAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkgb3Igb3MuY3VyZGlyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0X21wLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjA0YzE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weQpAQCAtMCwwICsxLDI0NSBAQAoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHF1ZXVlCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHR5cGVzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcHJpbnQoIk11bHRpcHJvY2VzcyBvcHRpb24gcmVxdWlyZXMgdGhyZWFkIHN1cHBvcnQiKQorICAgIHN5cy5leGl0KDIpCisKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0IGltcG9ydCAoCisgICAgcnVudGVzdCwgSU5URVJSVVBURUQsIENISUxEX0VSUk9SLCBQUk9HUkVTU19NSU5fVElNRSwKKyAgICBmb3JtYXRfdGVzdF9yZXN1bHQpCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2V0dXAgaW1wb3J0IHNldHVwX3Rlc3RzCisKKworIyBEaXNwbGF5IHRoZSBydW5uaW5nIHRlc3RzIGlmIG5vdGhpbmcgaGFwcGVuZWQgbGFzdCBOIHNlY29uZHMKK1BST0dSRVNTX1VQREFURSA9IDMwLjAgICAjIHNlY29uZHMKKworIyBJZiBpbnRlcnJ1cHRlZCwgZGlzcGxheSB0aGUgd2FpdCBwcm9ncmVzcyBldmVyeSBOIHNlY29uZHMKK1dBSVRfUFJPR1JFU1MgPSAyLjAgICAjIHNlY29uZHMKKworCitkZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgorICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KKworICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0CisgICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCisgICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQorICAgIDMtdHVwbGUuCisgICAgIiIiCisgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQorCisgICAgbnNfZGljdCA9IHZhcnMobnMpCisgICAgc2xhdmVhcmdzID0gKG5zX2RpY3QsIHRlc3RuYW1lKQorICAgIHNsYXZlYXJncyA9IGpzb24uZHVtcHMoc2xhdmVhcmdzKQorCisgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAqc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgJy1YJywgJ2ZhdWx0aGFuZGxlcicsCisgICAgICAgICAgICctbScsICd0ZXN0LnJlZ3J0ZXN0JywKKyAgICAgICAgICAgJy0tc2xhdmVhcmdzJywgc2xhdmVhcmdzXQorICAgIGlmIG5zLnBnbzoKKyAgICAgICAgY21kICs9IFsnLS1wZ28nXQorCisgICAgIyBSdW5uaW5nIHRoZSBjaGlsZCBmcm9tIHRoZSBzYW1lIHdvcmtpbmcgZGlyZWN0b3J5IGFzIHJlZ3J0ZXN0J3Mgb3JpZ2luYWwKKyAgICAjIGludm9jYXRpb24gZW5zdXJlcyB0aGF0IFRFTVBESVIgZm9yIHRoZSBjaGlsZCBpcyB0aGUgc2FtZSB3aGVuCisgICAgIyBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCkgaXMgdHJ1ZS4gU2VlIGlzc3VlIDE1MzAwLgorICAgIHBvcGVuID0gUG9wZW4oY21kLAorICAgICAgICAgICAgICAgICAgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLAorICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCisgICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCisgICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKKyAgICB3aXRoIHBvcGVuOgorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQorICAgIHJldHVybiByZXRjb2RlLCBzdGRvdXQsIHN0ZGVycgorCisKK2RlZiBydW5fdGVzdHNfc2xhdmUoc2xhdmVhcmdzKToKKyAgICBuc19kaWN0LCB0ZXN0bmFtZSA9IGpzb24ubG9hZHMoc2xhdmVhcmdzKQorICAgIG5zID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCoqbnNfZGljdCkKKworICAgIHNldHVwX3Rlc3RzKG5zKQorCisgICAgdHJ5OgorICAgICAgICByZXN1bHQgPSBydW50ZXN0KG5zLCB0ZXN0bmFtZSkKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCAnJworICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICByZXN1bHQgPSBDSElMRF9FUlJPUiwgc3RyKGUpCisKKyAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKKyAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCksIGZsdXNoPVRydWUpCisgICAgc3lzLmV4aXQoMCkKKworCisjIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCitjbGFzcyBNdWx0aXByb2Nlc3NJdGVyYXRvcjoKKworICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmxvY2s6CisgICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKKyAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCisKKworY2xhc3MgTXVsdGlwcm9jZXNzVGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwZW5kaW5nLCBvdXRwdXQsIG5zKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYucGVuZGluZyA9IHBlbmRpbmcKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi5ucyA9IG5zCisgICAgICAgIHNlbGYuY3VycmVudF90ZXN0ID0gTm9uZQorICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSBOb25lCisKKyAgICBkZWYgX3J1bnRlc3Qoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRlc3QgPSBuZXh0KHNlbGYucGVuZGluZykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IHRlc3QKKworICAgICAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3QsIHNlbGYubnMpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IE5vbmUKKworICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKKyAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgorICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCisgICAgICAgIHNlbGYub3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdG9wID0gRmFsc2UKKyAgICAgICAgICAgIHdoaWxlIG5vdCBzdG9wOgorICAgICAgICAgICAgICAgIHN0b3AgPSBzZWxmLl9ydW50ZXN0KCkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmFpc2UKKworCitkZWYgcnVuX3Rlc3RzX211bHRpcHJvY2VzcyhyZWdydGVzdCk6CisgICAgb3V0cHV0ID0gcXVldWUuUXVldWUoKQorICAgIHBlbmRpbmcgPSBNdWx0aXByb2Nlc3NJdGVyYXRvcihyZWdydGVzdC50ZXN0cykKKyAgICB0ZXN0X3RpbWVvdXQgPSByZWdydGVzdC5ucy50aW1lb3V0CisgICAgdXNlX3RpbWVvdXQgPSAodGVzdF90aW1lb3V0IGlzIG5vdCBOb25lKQorCisgICAgd29ya2VycyA9IFtNdWx0aXByb2Nlc3NUaHJlYWQocGVuZGluZywgb3V0cHV0LCByZWdydGVzdC5ucykKKyAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHJlZ3J0ZXN0Lm5zLnVzZV9tcCldCisgICAgcHJpbnQoIlJ1biB0ZXN0cyBpbiBwYXJhbGxlbCB1c2luZyAlcyBjaGlsZCBwcm9jZXNzZXMiCisgICAgICAgICAgJSBsZW4od29ya2VycykpCisgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICB3b3JrZXIuc3RhcnQoKQorCisgICAgZGVmIGdldF9ydW5uaW5nKHdvcmtlcnMpOgorICAgICAgICBydW5uaW5nID0gW10KKyAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICAgICAgY3VycmVudF90ZXN0ID0gd29ya2VyLmN1cnJlbnRfdGVzdAorICAgICAgICAgICAgaWYgbm90IGN1cnJlbnRfdGVzdDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gd29ya2VyLnN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIGR0ID49IFBST0dSRVNTX01JTl9USU1FOgorICAgICAgICAgICAgICAgIHJ1bm5pbmcuYXBwZW5kKCclcyAoJS4wZiBzZWMpJyAlIChjdXJyZW50X3Rlc3QsIGR0KSkKKyAgICAgICAgcmV0dXJuIHJ1bm5pbmcKKworICAgIGZpbmlzaGVkID0gMAorICAgIHRlc3RfaW5kZXggPSAxCisgICAgZ2V0X3RpbWVvdXQgPSBtYXgoUFJPR1JFU1NfVVBEQVRFLCBQUk9HUkVTU19NSU5fVElNRSkKKyAgICB0cnk6CisgICAgICAgIHdoaWxlIGZpbmlzaGVkIDwgcmVncnRlc3QubnMudXNlX21wOgorICAgICAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKHRlc3RfdGltZW91dCwgZXhpdD1UcnVlKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXRlbSA9IG91dHB1dC5nZXQodGltZW91dD1nZXRfdGltZW91dCkKKyAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5FbXB0eToKKyAgICAgICAgICAgICAgICBydW5uaW5nID0gZ2V0X3J1bm5pbmcod29ya2VycykKKyAgICAgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludCgncnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRlc3QsIHN0ZG91dCwgc3RkZXJyLCByZXN1bHQgPSBpdGVtCisgICAgICAgICAgICBpZiB0ZXN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZmluaXNoZWQgKz0gMQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZWdydGVzdC5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgICMgRGlzcGxheSBwcm9ncmVzcworICAgICAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAorICAgICAgICAgICAgdGV4dCA9IGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0LCBvaykKKyAgICAgICAgICAgIGlmIChvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCkKKyAgICAgICAgICAgICAgICBhbmQgdGVzdF90aW1lID49IFBST0dSRVNTX01JTl9USU1FCisgICAgICAgICAgICAgICAgYW5kIG5vdCByZWdydGVzdC5ucy5wZ28pOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAoJS4wZiBzZWMpJyAlIHRlc3RfdGltZQorICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICBpZiBydW5uaW5nIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgIHRleHQgKz0gJyAtLSBydW5uaW5nOiAlcycgJSAnLCAnLmpvaW4ocnVubmluZykKKyAgICAgICAgICAgIHJlZ3J0ZXN0LmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgIyBDb3B5IHN0ZG91dCBhbmQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MKKyAgICAgICAgICAgIGlmIHN0ZG91dDoKKyAgICAgICAgICAgICAgICBwcmludChzdGRvdXQsIGZsdXNoPVRydWUpCisgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCByZWdydGVzdC5ucy5wZ286CisgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisKKyAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBJTlRFUlJVUFRFRDoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAorICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IENISUxEX0VSUk9SOgorICAgICAgICAgICAgICAgIG1zZyA9ICJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pCisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKG1zZykKKyAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcmVncnRlc3QuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgIHByaW50KCkKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorCisgICAgIyBJZiB0ZXN0cyBhcmUgaW50ZXJydXB0ZWQsIHdhaXQgdW50aWwgdGVzdHMgY29tcGxldGUKKyAgICB3YWl0X3N0YXJ0ID0gdGltZS5tb25vdG9uaWMoKQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHJ1bm5pbmcgPSBbd29ya2VyLmN1cnJlbnRfdGVzdCBmb3Igd29ya2VyIGluIHdvcmtlcnNdCisgICAgICAgIHJ1bm5pbmcgPSBsaXN0KGZpbHRlcihib29sLCBydW5uaW5nKSkKKyAgICAgICAgaWYgbm90IHJ1bm5pbmc6CisgICAgICAgICAgICBicmVhaworCisgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHdhaXRfc3RhcnQKKyAgICAgICAgbGluZSA9ICJXYWl0aW5nIGZvciAlcyAoJXMgdGVzdHMpIiAlICgnLCAnLmpvaW4ocnVubmluZyksIGxlbihydW5uaW5nKSkKKyAgICAgICAgaWYgZHQgPj0gV0FJVF9QUk9HUkVTUzoKKyAgICAgICAgICAgIGxpbmUgPSAiJXMgc2luY2UgJS4wZiBzZWMiICUgKGxpbmUsIGR0KQorICAgICAgICBwcmludChsaW5lKQorICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6CisgICAgICAgICAgICB3b3JrZXIuam9pbihXQUlUX1BST0dSRVNTKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zYXZlX2Vudi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmFkM2FmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkKQEAgLTAsMCArMSwyODUgQEAKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGxvY2FsZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHdhcm5pbmdzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nLCBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKKworCisjIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCisjIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KKyMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKKyMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCisjIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgorIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAorIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KKworY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKKyAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgorCisgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgorICAgICAgICAgICAgI3N0dWZmCisKKyAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgorICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCisgICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCisKKyAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCisgICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgorICAgICIiIgorCisgICAgY2hhbmdlZCA9IEZhbHNlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6CisgICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQorICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCisgICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAorICAgICAgICBzZWxmLnBnbyA9IHBnbworCisgICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAorICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKKyAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKKyAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKKyAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgorICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgorICAgICMKKyAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKKyAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KKworICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAorICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKKyAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCisgICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAorICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywKKyAgICAgICAgICAgICAgICAgIyBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpIG1heSByZWxlYXNlIHJlZgorICAgICAgICAgICAgICAgICAjIHRvIGEgdGhyZWFkLCBzbyBjaGVjayBwcm9jZXNzZXMgZmlyc3QuCisgICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCisgICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCisgICAgICAgICAgICAgICAgICdzaHV0aWxfYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbF91bnBhY2tfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy5hcmd2KSwgc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX2FyZ3Yoc2VsZiwgc2F2ZWRfYXJndik6CisgICAgICAgIHN5cy5hcmd2ID0gc2F2ZWRfYXJndlsxXQorICAgICAgICBzeXMuYXJndls6XSA9IHNhdmVkX2FyZ3ZbMl0KKworICAgIGRlZiBnZXRfY3dkKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKKyAgICBkZWYgcmVzdG9yZV9jd2Qoc2VsZiwgc2F2ZWRfY3dkKToKKyAgICAgICAgb3MuY2hkaXIoc2F2ZWRfY3dkKQorCisgICAgZGVmIGdldF9zeXNfc3Rkb3V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZG91dAorICAgIGRlZiByZXN0b3JlX3N5c19zdGRvdXQoc2VsZiwgc2F2ZWRfc3Rkb3V0KToKKyAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVkX3N0ZG91dAorCisgICAgZGVmIGdldF9zeXNfc3RkZXJyKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgorICAgIGRlZiByZXN0b3JlX3N5c19zdGRlcnIoc2VsZiwgc2F2ZWRfc3RkZXJyKToKKyAgICAgICAgc3lzLnN0ZGVyciA9IHNhdmVkX3N0ZGVycgorCisgICAgZGVmIGdldF9zeXNfc3RkaW4oc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuc3RkaW4KKyAgICBkZWYgcmVzdG9yZV9zeXNfc3RkaW4oc2VsZiwgc2F2ZWRfc3RkaW4pOgorICAgICAgICBzeXMuc3RkaW4gPSBzYXZlZF9zdGRpbgorCisgICAgZGVmIGdldF9vc19lbnZpcm9uKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQob3MuZW52aXJvbiksIG9zLmVudmlyb24sIGRpY3Qob3MuZW52aXJvbikKKyAgICBkZWYgcmVzdG9yZV9vc19lbnZpcm9uKHNlbGYsIHNhdmVkX2Vudmlyb24pOgorICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvblsxXQorICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKKyAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2F2ZWRfZW52aXJvblsyXSkKKworICAgIGRlZiBnZXRfc3lzX3BhdGgoc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMucGF0aCksIHN5cy5wYXRoLCBzeXMucGF0aFs6XQorICAgIGRlZiByZXN0b3JlX3N5c19wYXRoKHNlbGYsIHNhdmVkX3BhdGgpOgorICAgICAgICBzeXMucGF0aCA9IHNhdmVkX3BhdGhbMV0KKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzYXZlZF9wYXRoWzJdCisKKyAgICBkZWYgZ2V0X3N5c19wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGhfaG9va3MpLCBzeXMucGF0aF9ob29rcywgc3lzLnBhdGhfaG9va3NbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aF9ob29rcyhzZWxmLCBzYXZlZF9ob29rcyk6CisgICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KKyAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQorCisgICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQorICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgorICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQorCisgICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXworICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6CisgICAgICAgIGJ1aWx0aW5zLl9faW1wb3J0X18gPSBpbXBvcnRfCisKKyAgICBkZWYgZ2V0X3dhcm5pbmdzX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBpZCh3YXJuaW5ncy5maWx0ZXJzKSwgd2FybmluZ3MuZmlsdGVycywgd2FybmluZ3MuZmlsdGVyc1s6XQorICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX2ZpbHRlcnMoc2VsZiwgc2F2ZWRfZmlsdGVycyk6CisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnMgPSBzYXZlZF9maWx0ZXJzWzFdCisgICAgICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBzYXZlZF9maWx0ZXJzWzJdCisKKyAgICBkZWYgZ2V0X2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZik6CisgICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCisgICAgICAgICMgWFhYIE1ha2luZyBhIGNvcHkga2VlcHMgb2JqZWN0cyBhbGl2ZSB1bnRpbCBfX2V4aXRfXyBnZXRzIGNhbGxlZC4KKyAgICAgICAgcmV0dXJuIGFzeW5jb3JlIGFuZCBhc3luY29yZS5zb2NrZXRfbWFwLmNvcHkoKSBvciB7fQorICAgIGRlZiByZXN0b3JlX2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZiwgc2F2ZWRfbWFwKToKKyAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKKyAgICAgICAgaWYgYXN5bmNvcmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQorICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQorCisgICAgZGVmIGdldF9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgorICAgICAgICAjIHdlIGNvdWxkIGNhbGwgZ2V0X2FyY2hpdmVzX2Zvcm1hdHMoKSBidXQgdGhhdCBvbmx5IHJldHVybnMgdGhlCisgICAgICAgICMgcmVnaXN0cnkga2V5czsgd2Ugd2FudCB0byBjaGVjayB0aGUgdmFsdWVzIHRvbyAodGhlIGZ1bmN0aW9ucyB0aGF0CisgICAgICAgICMgYXJlIHJlZ2lzdGVyZWQpCisgICAgICAgIHJldHVybiBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUywgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTID0gc2F2ZWRbMF0KKyAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCisKKyAgICBkZWYgZ2V0X3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMsIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUyA9IHNhdmVkWzBdCisgICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY2xlYXIoKQorICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKKworICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlcnMoc2VsZik6CisgICAgICAgICMgX2hhbmRsZXJzIGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeQorICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlcnMpLCBsb2dnaW5nLl9oYW5kbGVycywgbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCisgICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlcnMoc2VsZiwgc2F2ZWRfaGFuZGxlcnMpOgorICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKKyAgICAgICAgcGFzcworCisgICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmKToKKyAgICAgICAgIyBfaGFuZGxlckxpc3QgaXMgYSBsaXN0IG9mIHdlYWtyZWZzIHRvIGhhbmRsZXJzCisgICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVyTGlzdCksIGxvZ2dpbmcuX2hhbmRsZXJMaXN0LCBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQorICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYsIHNhdmVkX2hhbmRsZXJMaXN0KToKKyAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCisgICAgICAgIHBhc3MKKworICAgIGRlZiBnZXRfc3lzX3dhcm5vcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLndhcm5vcHRpb25zKSwgc3lzLndhcm5vcHRpb25zLCBzeXMud2Fybm9wdGlvbnNbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfd2Fybm9wdGlvbnMoc2VsZiwgc2F2ZWRfb3B0aW9ucyk6CisgICAgICAgIHN5cy53YXJub3B0aW9ucyA9IHNhdmVkX29wdGlvbnNbMV0KKyAgICAgICAgc3lzLndhcm5vcHRpb25zWzpdID0gc2F2ZWRfb3B0aW9uc1syXQorCisgICAgIyBDb250cm9sbGluZyBkYW5nbGluZyByZWZlcmVuY2VzIHRvIFRocmVhZCBvYmplY3RzIGNhbiBtYWtlIGl0IGVhc2llcgorICAgICMgdG8gdHJhY2sgcmVmZXJlbmNlIGxlYWtzLgorICAgIGRlZiBnZXRfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmKToKKyAgICAgICAgaWYgbm90IHRocmVhZGluZzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCisgICAgICAgIHJldHVybiB0aHJlYWRpbmcuX2RhbmdsaW5nLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcuY2xlYXIoKQorICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKKworICAgICMgU2FtZSBmb3IgUHJvY2VzcyBvYmplY3RzCisgICAgZGVmIGdldF9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFVuam9pbmVkIHByb2Nlc3Mgb2JqZWN0cyBjYW4gc3Vydml2ZSBhZnRlciBwcm9jZXNzIGV4aXRzCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkKKyAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKKyAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgorICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCisgICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCisKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6CisgICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCisgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKKyAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAorICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCisKKyAgICBkZWYgZ2V0X2ZpbGVzKHNlbGYpOgorICAgICAgICByZXR1cm4gc29ydGVkKGZuICsgKCcvJyBpZiBvcy5wYXRoLmlzZGlyKGZuKSBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKCkpCisgICAgZGVmIHJlc3RvcmVfZmlsZXMoc2VsZiwgc2F2ZWRfdmFsdWUpOgorICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIGZuIG5vdCBpbiBzYXZlZF92YWx1ZSBhbmQgKGZuICsgJy8nKSBub3QgaW4gc2F2ZWRfdmFsdWU6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCisgICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgorICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQorCisgICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCisgICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQorICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgorICAgICAgICBwYWlyaW5ncyA9IFtdCisgICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCisgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgcmV0dXJuIHBhaXJpbmdzCisgICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKKyAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgorICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKKworICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6CisgICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZworICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6CisgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCisKKyAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6CisgICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQorICAgICAgICAgICAgZ2V0X25hbWUgPSAnZ2V0XycgKyBtZXRob2Rfc3VmZml4CisgICAgICAgICAgICByZXN0b3JlX25hbWUgPSAncmVzdG9yZV8nICsgbWV0aG9kX3N1ZmZpeAorICAgICAgICAgICAgeWllbGQgbmFtZSwgZ2V0YXR0cihzZWxmLCBnZXRfbmFtZSksIGdldGF0dHIoc2VsZiwgcmVzdG9yZV9uYW1lKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zYXZlZF92YWx1ZXMgPSBkaWN0KChuYW1lLCBnZXQoKSkgZm9yIG5hbWUsIGdldCwgcmVzdG9yZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCkpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CisgICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCisgICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcworICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKSAgIyBTb21lIHJlc291cmNlcyB1c2Ugd2VhayByZWZlcmVuY2VzCisgICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6CisgICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKKyAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQorICAgICAgICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UncyB2YWx1ZQorICAgICAgICAgICAgaWYgY3VycmVudCAhPSBvcmlnaW5hbDoKKyAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmVzdG9yZShvcmlnaW5hbCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5xdWlldCBhbmQgbm90IHNlbGYucGdvOgorICAgICAgICAgICAgICAgICAgICBwcmludChmIldhcm5pbmcgLS0ge25hbWV9IHdhcyBtb2RpZmllZCBieSB7c2VsZi50ZXN0bmFtZX0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChmIiAgQmVmb3JlOiB7b3JpZ2luYWx9XG4gIEFmdGVyOiAge2N1cnJlbnR9ICIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDI0NTMxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkKQEAgLTAsMCArMSwxMjEgQEAKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgZ2MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnYyA9IE5vbmUKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJlZmxlYWsgaW1wb3J0IHdhcm1fY2FjaGVzCisKKworZGVmIHNldHVwX3Rlc3RzKG5zKToKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzIChlLmcuIHNlZ2ZhdWx0KQorICAgIGZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBTSUdBTFJNIG9yIFNJR1VTUjEgc2lnbmFsCisgICAgc2lnbmFscyA9IFtdCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdBTFJNKQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHVVNSMScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHVVNSMSkKKyAgICBmb3Igc2lnbnVtIGluIHNpZ25hbHM6CisgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGNoYWluPVRydWUpCisKKyAgICByZXBsYWNlX3N0ZG91dCgpCisgICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCisKKyAgICBpZiBucy50ZXN0ZGlyOgorICAgICAgICAjIFByZXBlbmQgdGVzdCBkaXJlY3RvcnkgdG8gc3lzLnBhdGgsIHNvIHJ1bnRlc3QoKSB3aWxsIGJlIGFibGUKKyAgICAgICAgIyB0byBsb2NhdGUgdGVzdHMKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aChucy50ZXN0ZGlyKSkKKworICAgICMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KKyAgICAjIExpYi8pIGFuZCwgaWYgd2UgY2hhbmdlIHRoZSBDV0QgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHRlbXBvcmFyeSBkaXIsIHNvbWUKKyAgICAjIGltcG9ydHMgbWlnaHQgZmFpbC4gIFRoaXMgYWZmZWN0cyBvbmx5IHRoZSBtb2R1bGVzIGltcG9ydGVkIGJlZm9yZSBvcy5jaGRpcigpLgorICAgICMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgorICAgICMgdGhleSBhcmUgZm91bmQgaW4gdGhlIENXRCB0aGVpciBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSByZWxhdGl2ZSAodGhpcworICAgICMgaGFwcGVucyBiZWZvcmUgdGhlIGNoZGlyKS4gIEFsbCB0aGUgbW9kdWxlcyBpbXBvcnRlZCBhZnRlciB0aGUgY2hkaXIsIGFyZQorICAgICMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQorICAgICMgKHNpdGUucHkgYWJzb2x1dGl6ZSB0aGVtKSwgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIGFic29sdXRlIHRvby4KKyAgICAjIFRoZXJlZm9yZSBpdCBpcyBuZWNlc3NhcnkgdG8gYWJzb2x1dGl6ZSBtYW51YWxseSB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIG9mCisgICAgIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KKyAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgaW5kZXgsIHBhdGggaW4gZW51bWVyYXRlKG1vZHVsZS5fX3BhdGhfXyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fW2luZGV4XSA9IG9zLnBhdGguYWJzcGF0aChwYXRoKQorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6CisgICAgICAgICAgICBtb2R1bGUuX19maWxlX18gPSBvcy5wYXRoLmFic3BhdGgobW9kdWxlLl9fZmlsZV9fKQorCisgICAgIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAorICAgICMgZm9yIGRlZXBseSByZWN1cnNpdmUgcmVndWxhciBleHByZXNzaW9ucy4gIFdlIHNlZSB0aGlzIGFzIGNyYXNoZXMgaW4KKyAgICAjIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aGVuIHJ1bm5pbmcgdGVzdF9yZS5weSBhbmQgdGVzdF9zcmUucHkuICBUaGUKKyAgICAjIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCisgICAgIyBUaGlzIGFwcHJvYWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Igb3RoZXIgVW5peHkgcGxhdGZvcm1zIHRoYXQKKyAgICAjIHN1ZmZlciBmcm9tIHNtYWxsIGRlZmF1bHQgc3RhY2sgbGltaXRzLgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHJlc291cmNlCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQorICAgICAgICAgICAgbmV3c29mdCA9IG1pbihoYXJkLCBtYXgoc29mdCwgMTAyNCoyMDQ4KSkKKyAgICAgICAgICAgIHJlc291cmNlLnNldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0ssIChuZXdzb2Z0LCBoYXJkKSkKKworICAgIGlmIG5zLmh1bnRybGVha3M6CisgICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQorCisgICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB2YXJpb3VzIGNhY2hlcworICAgICAgICAjIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGE6CisgICAgICAgIHdhcm1fY2FjaGVzKCkKKworICAgIGlmIG5zLm1lbWxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICBzdXBwb3J0LnNldF9tZW1saW1pdChucy5tZW1saW1pdCkKKworICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKKyAgICAgICAgZ2Muc2V0X3RocmVzaG9sZChucy50aHJlc2hvbGQpCisKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCisKKyAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCisKKworZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6CisgICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCisgICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKKyAgICBzdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgc3lzLnN0ZG91dCA9IG9wZW4oc3Rkb3V0LmZpbGVubygpLCAndycsCisgICAgICAgIGVuY29kaW5nPXN0ZG91dC5lbmNvZGluZywKKyAgICAgICAgZXJyb3JzPSJiYWNrc2xhc2hyZXBsYWNlIiwKKyAgICAgICAgY2xvc2VmZD1GYWxzZSwKKyAgICAgICAgbmV3bGluZT0nXG4nKQorCisgICAgZGVmIHJlc3RvcmVfc3Rkb3V0KCk6CisgICAgICAgIHN5cy5zdGRvdXQuY2xvc2UoKQorICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0CisgICAgYXRleGl0LnJlZ2lzdGVyKHJlc3RvcmVfc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggZjIwZmRjMC4uMjZlOTM2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC0yNjYsOSArMjY2LDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgbGlzdCgic3BhbWVnZ3MiKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuZXh0ZW5kLCBOb25lKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5leHRlbmQpCiAKKyAgICAgICAgIyBvdmVyZmxvdyB0ZXN0LiBpc3N1ZTE2MjEKKyAgICAgICAgY2xhc3MgQ3VzdG9tSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKyAgICAgICAgICAgIGRlZiBfX2xlbmd0aF9oaW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tYXhzaXplCisgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbMSwyLDMsNF0pCisgICAgICAgIGEuZXh0ZW5kKEN1c3RvbUl0ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbMSwyLDMsNF0pCisKKwogICAgIGRlZiB0ZXN0X2luc2VydChzZWxmKToKICAgICAgICAgYSA9IHNlbGYudHlwZTJ0ZXN0KFswLCAxLCAyXSkKICAgICAgICAgYS5pbnNlcnQoMCwgLTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5IGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQppbmRleCBhNjRhYTE4Li5hNmNiM2IxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIF90aHJlYWQgaW1wb3J0IHN0YXJ0X25ld190aHJlYWQsIFRJTUVPVVRfTUFYCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0xOTgsNiArMTk5LDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzdWx0c1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1lb3V0KHJlc3VsdHNbMV0sIDAuNSkKIAorICAgIGRlZiB0ZXN0X3dlYWtyZWZfZXhpc3RzKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlZigpKQorCisgICAgZGVmIHRlc3Rfd2Vha3JlZl9kZWxldGVkKHNlbGYpOgorICAgICAgICBsb2NrID0gc2VsZi5sb2NrdHlwZSgpCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGxvY2spCisgICAgICAgIGRlbCBsb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlZigpKQorCiAKIGNsYXNzIExvY2tUZXN0cyhCYXNlTG9ja1Rlc3RzKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5IGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKaW5kZXggYTFmMjk4ZC4uNGQ5ZjAxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKKysrIGIvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkKQEAgLTMsNyArMyw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0ICoKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5IGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CmluZGV4IDc5MjJiNTQuLjVjODMzNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQorKysgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKQEAgLTEwMDAsNyArMTAwMCw3IEBACiAgICAgICAgICAgICBiJzAnLCAgICAgICAgICAgICAgICAgICAgICAgIyBQT1AKICAgICAgICAgICAgIGInMScsICAgICAgICAgICAgICAgICAgICAgICAjIFBPUF9NQVJLCiAgICAgICAgICAgICBiJzInLCAgICAgICAgICAgICAgICAgICAgICAgIyBEVVAKLSAgICAgICAgICAgICMgYicoMicsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIGRvZXNuJ3QgcmFpc2UKKyAgICAgICAgICAgIGInKDInLAogICAgICAgICAgICAgYidSJywgICAgICAgICAgICAgICAgICAgICAgICMgUkVEVUNFCiAgICAgICAgICAgICBiJylSJywKICAgICAgICAgICAgIGInYScsICAgICAgICAgICAgICAgICAgICAgICAjIEFQUEVORApAQCAtMTAwOSw3ICsxMDA5LDcgQEAKICAgICAgICAgICAgIGInTmInLAogICAgICAgICAgICAgYidkJywgICAgICAgICAgICAgICAgICAgICAgICMgRElDVAogICAgICAgICAgICAgYidlJywgICAgICAgICAgICAgICAgICAgICAgICMgQVBQRU5EUwotICAgICAgICAgICAgIyBiJyhlJywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICBiJyhlJywKICAgICAgICAgICAgIGInaWJ1aWx0aW5zXG5saXN0XG4nLCAgICAgICAjIElOU1QKICAgICAgICAgICAgIGInbCcsICAgICAgICAgICAgICAgICAgICAgICAjIExJU1QKICAgICAgICAgICAgIGInbycsICAgICAgICAgICAgICAgICAgICAgICAjIE9CSgpAQCAtMTAyMiw3ICsxMDIyLDcgQEAKICAgICAgICAgICAgIGInTk5zJywKICAgICAgICAgICAgIGIndCcsICAgICAgICAgICAgICAgICAgICAgICAjIFRVUExFCiAgICAgICAgICAgICBiJ3UnLCAgICAgICAgICAgICAgICAgICAgICAgIyBTRVRJVEVNUwotICAgICAgICAgICAgIyBiJyh1JywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgZG9lc24ndCByYWlzZQorICAgICAgICAgICAgYicodScsCiAgICAgICAgICAgICBiJ30oTnUnLAogICAgICAgICAgICAgYidceDgxJywgICAgICAgICAgICAgICAgICAgICMgTkVXT0JKCiAgICAgICAgICAgICBiJylceDgxJywKQEAgLTEwMzMsNyArMTAzMyw3IEBACiAgICAgICAgICAgICBiJ05ceDg3JywKICAgICAgICAgICAgIGInTk5ceDg3JywKICAgICAgICAgICAgIGInXHg5MCcsICAgICAgICAgICAgICAgICAgICAjIEFERElURU1TCi0gICAgICAgICAgICAjIGInKFx4OTAnLCAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciByYWlzZXMgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgICAgIGInKFx4OTAnLAogICAgICAgICAgICAgYidceDkxJywgICAgICAgICAgICAgICAgICAgICMgRlJPWkVOU0VUCiAgICAgICAgICAgICBiJ1x4OTInLCAgICAgICAgICAgICAgICAgICAgIyBORVdPQkpfRVgKICAgICAgICAgICAgIGInKX1ceDkyJywKQEAgLTEwNDYsNyArMTA0Niw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfbWFyayhzZWxmKToKICAgICAgICAgYmFkcGlja2xlcyA9IFsKLSAgICAgICAgICAgICMgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAorICAgICAgICAgICAgYidOKC4nLCAgICAgICAgICAgICAgICAgICAgICMgU1RPUAogICAgICAgICAgICAgYidOKDInLCAgICAgICAgICAgICAgICAgICAgICMgRFVQCiAgICAgICAgICAgICBiJ2NidWlsdGluc1xubGlzdFxuKShSJywgICAgIyBSRURVQ0UKICAgICAgICAgICAgIGInY2J1aWx0aW5zXG5saXN0XG4oKVInLApAQCAtMTA4MSw3ICsxMDgxLDcgQEAKICAgICAgICAgICAgIGInTihceDk0JywgICAgICAgICAgICAgICAgICAjIE1FTU9JWkUKICAgICAgICAgXQogICAgICAgICBmb3IgcCBpbiBiYWRwaWNrbGVzOgotICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX21hcmtfZXJyb3JzLCBwKQorICAgICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKHNlbGYuYmFkX3N0YWNrX2Vycm9ycywgcCkKIAogICAgIGRlZiB0ZXN0X3RydW5jYXRlZF9kYXRhKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3VucGlja2xpbmdfZXJyb3IoRU9GRXJyb3IsIGInJykKQEAgLTE4NTUsMTYgKzE4NTUsMTQgQEAKICAgICAgICAgeC5hYmMgPSA2NjYKICAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvPXByb3RvKToKLSAgICAgICAgICAgICAgICBpZiAyIDw9IHByb3RvIDwgNDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5kdW1wcywgeCwgcHJvdG8pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcyA9IHNlbGYuZHVtcHMoeCwgcHJvdG8pCiAgICAgICAgICAgICAgICAgaWYgcHJvdG8gPCAxOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXG5MNjQyMDYnLCBzKSAgIyBMT05HCiAgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidNXHhjZVx4ZmEnLCBzKSAgIyBCSU5JTlQyCisgICAgICAgICAgICAgICAgZWxpZiBwcm90byA8IDQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidYXHgwNFx4MDBceDAwXHgwMEZBQ0UnLCBzKSAgIyBCSU5VTklDT0RFCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHByb3RvID49IDQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1x4OGNceDA0RkFDRScsIHMpICAjIFNIT1JUX0JJTlVOSUNPREUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSiwgcykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkpfRVgsIHMpLApAQCAtMjU4MywxMSArMjU4MSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBpY2tsZS5QaWNrbGluZ0Vycm9yLCBCYWRQaWNrbGVyKCkuZHVtcCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocGlja2xlLlVucGlja2xpbmdFcnJvciwgQmFkVW5waWNrbGVyKCkubG9hZCkKIAotICAgIGRlZiB0ZXN0X2JhZF9pbnB1dChzZWxmKToKLSAgICAgICAgIyBUZXN0IGlzc3VlNDI5OAotICAgICAgICBzID0gYnl0ZXMoWzB4NTgsIDAsIDAsIDAsIDB4NTRdKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvciwgcGlja2xlLmxvYWRzLCBzKQotCiAKIGNsYXNzIEFic3RyYWN0UGVyc2lzdGVudFBpY2tsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3B5ZG9jX21vZC5weSBiL0xpYi90ZXN0L3B5ZG9jX21vZC5weQppbmRleCBjZGExYzllLi45YzFmZmY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9weWRvY19tb2QucHkKKysrIGIvTGliL3Rlc3QvcHlkb2NfbW9kLnB5CkBAIC0xMiw3ICsxMiw3IEBACiAgICAgICAgIHBhc3MKIAogY2xhc3MgQihvYmplY3QpOgotICAgIE5PX01FQU5JTkcgPSAiZWdncyIKKyAgICBOT19NRUFOSU5HOiBzdHIgPSAiZWdncyIKICAgICBwYXNzCiAKIGNsYXNzIEMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5IGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKaW5kZXggOGMxNThmOC4uYTM3OWQzMyAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvcmVfdGVzdHMucHkKQEAgLTEwNiw4ICsxMDYsOCBAQAogICAgICgnYS4qYicsICdhY2NcbmNjYicsIEZBSUwpLAogICAgICgnYS57NCw1fWInLCAnYWNjXG5jY2InLCBGQUlMKSwKICAgICAoJ2EuYicsICdhXHJiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FccmInKSwKLSAgICAoJ2EuYig/cyknLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCi0gICAgKCdhLiooP3MpYicsICdhY2NcbmNjYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhY2NcbmNjYicpLAorICAgICgnKD9zKWEuYicsICdhXG5iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FcbmInKSwKKyAgICAoJyg/cylhLipiJywgJ2FjY1xuY2NiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FjY1xuY2NiJyksCiAgICAgKCcoP3MpYS57NCw1fWInLCAnYWNjXG5jY2InLCBTVUNDRUVELCAnZm91bmQnLCAnYWNjXG5jY2InKSwKICAgICAoJyg/cylhLmInLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCiAKQEAgLTE1OCw3ICsxNTgsNyBAQAogICAgICgnKGFiYycsICctJywgU1lOVEFYX0VSUk9SKSwKICAgICAoJ2FdJywgJ2FdJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdJyksCiAgICAgKCdhW11dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCi0gICAgKCdhW1xdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAorICAgICgnYVtcXF1dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCiAgICAgKCdhW15iY11kJywgJ2FlZCcsIFNVQ0NFRUQsICdmb3VuZCcsICdhZWQnKSwKICAgICAoJ2FbXmJjXWQnLCAnYWJkJywgRkFJTCksCiAgICAgKCdhW14tYl1jJywgJ2FkYycsIFNVQ0NFRUQsICdmb3VuZCcsICdhZGMnKSwKQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgICMgbG9va2JlaGluZDogc3BsaXQgYnkgOiBidXQgbm90IGlmIGl0IGlzIGVzY2FwZWQgYnkgLS4KICAgICAoJyg/PCEtKTooLio/KSg/PCEtKTonLCAnYTpiYy06ZGU6ZicsIFNVQ0NFRUQsICdnMScsICdiYy06ZGUnICksCiAgICAgIyBlc2NhcGluZyB3aXRoIFwgYXMgd2Uga25vdyBpdAotICAgICgnKD88IVxcXCk6KC4qPykoPzwhXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKKyAgICAoJyg/PCFcXFxcKTooLio/KSg/PCFcXFxcKTonLCAnYTpiY1xcOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmNcXDpkZScgKSwKICAgICAjIHRlcm1pbmF0aW5nIHdpdGggJyBhbmQgZXNjYXBpbmcgd2l0aCA/IGFzIGluIGVkaWZhY3QKICAgICAoIig/PCFcXD8pJyguKj8pKD88IVxcPyknIiwgImEnYmM/J2RlJ2YiLCBTVUNDRUVELCAnZzEnLCAiYmM/J2RlIiApLAogCkBAIC01NjMsNyArNTYzLDcgQEAKICAgICAjIENoZWNrIG9kZCBwbGFjZW1lbnQgb2YgZW1iZWRkZWQgcGF0dGVybiBtb2RpZmllcnMKIAogICAgICMgbm90IGFuIGVycm9yIHVuZGVyIFBDUkUvUFJFOgotICAgICgndyg/aSknLCAnVycsIFNVQ0NFRUQsICdmb3VuZCcsICdXJyksCisgICAgKCcoP2kpdycsICdXJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1cnKSwKICAgICAjICgndyg/aSknLCAnVycsIFNZTlRBWF9FUlJPUiksCiAKICAgICAjIENvbW1lbnRzIHVzaW5nIHRoZSB4IGVtYmVkZGVkIHBhdHRlcm4gbW9kaWZpZXIKQEAgLTYyNyw3ICs2MjcsNyBAQAogICAgICMgYnVnIDExNDAzMzogbm90aGluZyB0byByZXBlYXQKICAgICAocicoeD8pPycsICd4JywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ3gnKSwKICAgICAjIGJ1ZyAxMTUwNDA6IHJlc2NhbiBpZiBmbGFncyBhcmUgbW9kaWZpZWQgaW5zaWRlIHBhdHRlcm4KLSAgICAocicgKD94KWZvbyAnLCAnZm9vJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2ZvbycpLAorICAgIChyJyg/eCkgZm9vICcsICdmb28nLCBTVUNDRUVELCAnZm91bmQnLCAnZm9vJyksCiAgICAgIyBidWcgMTE1NjE4OiBuZWdhdGl2ZSBsb29rYWhlYWQKICAgICAocicoPzwhYWJjKShkLmYpJywgJ2FiY2RlZmRvZicsIFNVQ0NFRUQsICdmb3VuZCcsICdkb2YnKSwKICAgICAjIGJ1ZyAxMTYyNTE6IGNoYXJhY3RlciBjbGFzcyBidWcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvcmVncnRlc3QucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBmODcwODU0Li4yMWIwZWRmCi0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC02LDE2MDggKzYsMzMgQEAKIFJ1biB0aGlzIHNjcmlwdCB3aXRoIC1oIG9yIC0taGVscCBmb3IgZG9jdW1lbnRhdGlvbi4KICIiIgogCi1VU0FHRSA9ICIiIlwKLXB5dGhvbiAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQotcHl0aG9uIHBhdGgvdG8vTGliL3Rlc3QvcmVncnRlc3QucHkgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCi0iIiIKLQotREVTQ1JJUFRJT04gPSAiIiJcCi1SdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCi0KLUlmIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zIGFyZSBwcm92aWRlZCwgZmluZHMgYWxsIGZpbGVzIG1hdGNoaW5nCi10aGUgcGF0dGVybiAidGVzdF8qIiBpbiB0aGUgTGliL3Rlc3Qgc3ViZGlyZWN0b3J5IGFuZCBydW5zCi10aGVtIGluIGFscGhhYmV0aWNhbCBvcmRlciAoYnV0IHNlZSAtTSBhbmQgLXUsIGJlbG93LCBmb3IgZXhjZXB0aW9ucykuCi0KLUZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIGl0IGlzIHVzZWZ1bCB0byB1c2UgdGhlIGZvbGxvd2luZwotY29tbWFuZCBsaW5lOgotCi1weXRob24gLUUgLVdkIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIC4uLl0KLSIiIgotCi1FUElMT0cgPSAiIiJcCi1BZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzOgotCi0tciByYW5kb21pemVzIHRlc3QgZXhlY3V0aW9uIG9yZGVyLiBZb3UgY2FuIHVzZSAtLXJhbmRzZWVkPWludCB0byBwcm92aWRlIGFuCi1pbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbWl6ZXI7IHRoaXMgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyB0cm91Ymxlc29tZQotdGVzdCBvcmRlcnMuCi0KLS1zIE9uIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHJlZ3J0ZXN0IHVzaW5nIC1zLCB0aGUgZmlyc3QgdGVzdCBmaWxlIGZvdW5kCi1vciB0aGUgZmlyc3QgdGVzdCBmaWxlIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgcnVuLCBhbmQgdGhlIG5hbWUgb2YKLXRoZSBuZXh0IHRlc3QgaXMgcmVjb3JkZWQgaW4gYSBmaWxlIG5hbWVkIHB5bmV4dHRlc3QuICBJZiBydW4gZnJvbSB0aGUKLVB5dGhvbiBidWlsZCBkaXJlY3RvcnksIHB5bmV4dHRlc3QgaXMgbG9jYXRlZCBpbiB0aGUgJ2J1aWxkJyBzdWJkaXJlY3RvcnksCi1vdGhlcndpc2UgaXQgaXMgbG9jYXRlZCBpbiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuICBPbiBzdWJzZXF1ZW50IHJ1bnMsCi10aGUgdGVzdCBpbiBweW5leHR0ZXN0IGlzIHJ1biwgYW5kIHRoZSBuZXh0IHRlc3QgaXMgd3JpdHRlbiB0byBweW5leHR0ZXN0LgotV2hlbiB0aGUgbGFzdCB0ZXN0IGhhcyBiZWVuIHJ1biwgcHluZXh0dGVzdCBpcyBkZWxldGVkLiAgSW4gdGhpcyB3YXkgaXQKLWlzIHBvc3NpYmxlIHRvIHNpbmdsZSBzdGVwIHRocm91Z2ggdGhlIHRlc3QgZmlsZXMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCi1kb2luZyBtZW1vcnkgYW5hbHlzaXMgb24gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgd2hpY2ggcHJvY2VzcyB0ZW5kcyB0bwotY29uc3VtZSB0b28gbWFueSByZXNvdXJjZXMgdG8gcnVuIHRoZSBmdWxsIHJlZ3Jlc3Npb24gdGVzdCBub24tc3RvcC4KLQotLVMgaXMgdXNlZCB0byBjb250aW51ZSBydW5uaW5nIHRlc3RzIGFmdGVyIGFuIGFib3J0ZWQgcnVuLiAgSXQgd2lsbAotbWFpbnRhaW4gdGhlIG9yZGVyIGEgc3RhbmRhcmQgcnVuIChpZSwgdGhpcyBhc3N1bWVzIC1yIGlzIG5vdCB1c2VkKS4KLVRoaXMgaXMgdXNlZnVsIGFmdGVyIHRoZSB0ZXN0cyBoYXZlIHByZW1hdHVyZWx5IHN0b3BwZWQgZm9yIHNvbWUgZXh0ZXJuYWwKLXJlYXNvbiBhbmQgeW91IHdhbnQgdG8gc3RhcnQgcnVubmluZyBmcm9tIHdoZXJlIHlvdSBsZWZ0IG9mZiByYXRoZXIKLXRoYW4gc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgotCi0tZiByZWFkcyB0aGUgbmFtZXMgb2YgdGVzdHMgZnJvbSB0aGUgZmlsZSBnaXZlbiBhcyBmJ3MgYXJndW1lbnQsIG9uZQotb3IgbW9yZSB0ZXN0IG5hbWVzIHBlciBsaW5lLiAgV2hpdGVzcGFjZSBpcyBpZ25vcmVkLiAgQmxhbmsgbGluZXMgYW5kCi1saW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIGlnbm9yZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgotd2hpdHRsaW5nIGRvd24gZmFpbHVyZXMgaW52b2x2aW5nIGludGVyYWN0aW9ucyBhbW9uZyB0ZXN0cy4KLQotLUwgY2F1c2VzIHRoZSBsZWFrcygxKSBjb21tYW5kIHRvIGJlIHJ1biBqdXN0IGJlZm9yZSBleGl0IGlmIGl0IGV4aXN0cy4KLWxlYWtzKDEpIGlzIGF2YWlsYWJsZSBvbiBNYWMgT1MgWCBhbmQgcHJlc3VtYWJseSBvbiBzb21lIG90aGVyCi1GcmVlQlNELWRlcml2ZWQgc3lzdGVtcy4KLQotLVIgcnVucyBlYWNoIHRlc3Qgc2V2ZXJhbCB0aW1lcyBhbmQgZXhhbWluZXMgc3lzLmdldHRvdGFscmVmY291bnQoKSB0bwotc2VlIGlmIHRoZSB0ZXN0IGFwcGVhcnMgdG8gYmUgbGVha2luZyByZWZlcmVuY2VzLiAgVGhlIGFyZ3VtZW50IHNob3VsZAotYmUgb2YgdGhlIGZvcm0gc3RhYjpydW46Zm5hbWUgd2hlcmUgJ3N0YWInIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCi10ZXN0IGlzIHJ1biB0byBsZXQgZ2V0dG90YWxyZWZjb3VudCBzZXR0bGUgZG93biwgJ3J1bicgaXMgdGhlIG51bWJlcgotb2YgdGltZXMgZnVydGhlciBpdCBpcyBydW4gYW5kICdmbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhlCi1yZXBvcnRzIGFyZSB3cml0dGVuIHRvLiAgVGhlc2UgcGFyYW1ldGVycyBhbGwgaGF2ZSBkZWZhdWx0cyAoNSwgNCBhbmQKLSJyZWZsb2cudHh0IiByZXNwZWN0aXZlbHkpLCBhbmQgdGhlIG1pbmltYWwgaW52b2NhdGlvbiBpcyAnLVIgOicuCi0KLS1NIHJ1bnMgdGVzdHMgdGhhdCByZXF1aXJlIGFuIGV4b3JiaXRhbnQgYW1vdW50IG9mIG1lbW9yeS4gVGhlc2UgdGVzdHMKLXR5cGljYWxseSB0cnkgdG8gYXNjZXJ0YWluIGNvbnRhaW5lcnMga2VlcCB3b3JraW5nIHdoZW4gY29udGFpbmluZyBtb3JlIHRoYW4KLTIgYmlsbGlvbiBvYmplY3RzLCB3aGljaCBvbmx5IHdvcmtzIG9uIDY0LWJpdCBzeXN0ZW1zLiBUaGVyZSBhcmUgYWxzbyBzb21lCi10ZXN0cyB0aGF0IHRyeSB0byBleGhhdXN0IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBvbmx5IG1ha2VzCi1zZW5zZSBvbiAzMi1iaXQgc3lzdGVtcyB3aXRoIGF0IGxlYXN0IDJHYiBvZiBtZW1vcnkuIFRoZSBwYXNzZWQtaW4gbWVtbGltaXQsCi13aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAnMi41R2InLCBkZXRlcm1pbmVzIGhvd211Y2ggbWVtb3J5IHRoZQotdGVzdHMgd2lsbCBsaW1pdCB0aGVtc2VsdmVzIHRvIChidXQgdGhleSBtYXkgZ28gc2xpZ2h0bHkgb3Zlci4pIFRoZSBudW1iZXIKLXNob3VsZG4ndCBiZSBtb3JlIG1lbW9yeSB0aGFuIHRoZSBtYWNoaW5lIGhhcyAoaW5jbHVkaW5nIHN3YXAgbWVtb3J5KS4gWW91Ci1zaG91bGQgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBzd2FwIG1lbW9yeSBpcyBnZW5lcmFsbHkgbXVjaCwgbXVjaCBzbG93ZXIKLXRoYW4gUkFNLCBhbmQgc2V0dGluZyBtZW1saW1pdCB0byBhbGwgYXZhaWxhYmxlIFJBTSBvciBoaWdoZXIgd2lsbCBoZWF2aWx5Ci10YXggdGhlIG1hY2hpbmUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBubyB1c2UgcnVubmluZyB0aGVzZSB0ZXN0cyB3aXRoIGEKLWxpbWl0IG9mIGxlc3MgdGhhbiAyLjVHYiwgYW5kIG1hbnkgcmVxdWlyZSBtb3JlIHRoYW4gMjBHYi4gVGVzdHMgdGhhdCBleHBlY3QKLXRvIHVzZSBtb3JlIHRoYW4gbWVtbGltaXQgbWVtb3J5IHdpbGwgYmUgc2tpcHBlZC4gVGhlIGJpZy1tZW1vcnkgdGVzdHMKLWdlbmVyYWxseSBydW4gdmVyeSwgdmVyeSBsb25nLgotCi0tdSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuLAotc3VjaCBhcyB0aG9zZSByZXF1aXJpbmcgbGFyZ2UgZmlsZSBzdXBwb3J0IG9yIG5ldHdvcmsgY29ubmVjdGl2aXR5LgotVGhlIGFyZ3VtZW50IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgaW5kaWNhdGluZyB0aGUKLXJlc291cmNlcyB0byB0ZXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZDoKLQotICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCi0KLSAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCi0KLSAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgotICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgotICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCi0KLSAgICBjdXJzZXMgLSAgICBUZXN0cyB0aGF0IHVzZSBjdXJzZXMgYW5kIHdpbGwgbW9kaWZ5IHRoZSB0ZXJtaW5hbCdzCi0gICAgICAgICAgICAgICAgc3RhdGUgYW5kIG91dHB1dCBtb2Rlcy4KLQotICAgIGxhcmdlZmlsZSAtIEl0IGlzIG9rYXkgdG8gcnVuIHNvbWUgdGVzdCB0aGF0IG1heSBjcmVhdGUgaHVnZQotICAgICAgICAgICAgICAgIGZpbGVzLiAgVGhlc2UgdGVzdHMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIG1heQotICAgICAgICAgICAgICAgIGNvbnN1bWUgPjJHQiBvZiBkaXNrIHNwYWNlIHRlbXBvcmFyaWx5LgotCi0gICAgbmV0d29yayAtICAgSXQgaXMgb2theSB0byBydW4gdGVzdHMgdGhhdCB1c2UgZXh0ZXJuYWwgbmV0d29yawotICAgICAgICAgICAgICAgIHJlc291cmNlLCBlLmcuIHRlc3RpbmcgU1NMIHN1cHBvcnQgZm9yIHNvY2tldHMuCi0KLSAgICBkZWNpbWFsIC0gICBUZXN0IHRoZSBkZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGEgbGFyZ2Ugc3VpdGUgdGhhdAotICAgICAgICAgICAgICAgIHZlcmlmaWVzIGNvbXBsaWFuY2Ugd2l0aCBzdGFuZGFyZHMuCi0KLSAgICBjcHUgLSAgICAgICBVc2VkIGZvciBjZXJ0YWluIENQVS1oZWF2eSB0ZXN0cy4KLQotICAgIHN1YnByb2Nlc3MgIFJ1biBhbGwgdGVzdHMgZm9yIHRoZSBzdWJwcm9jZXNzIG1vZHVsZS4KLQotICAgIHVybGZldGNoIC0gIEl0IGlzIG9rYXkgdG8gZG93bmxvYWQgZmlsZXMgcmVxdWlyZWQgb24gdGVzdGluZy4KLQotICAgIGd1aSAtICAgICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgYSBydW5uaW5nIEdVSS4KLQotVG8gZW5hYmxlIGFsbCByZXNvdXJjZXMgZXhjZXB0IG9uZSwgdXNlICctdWFsbCwtPHJlc291cmNlPicuICBGb3IKLWV4YW1wbGUsIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGV4Y2VwdCBmb3IgdGhlIGd1aSB0ZXN0cywgZ2l2ZSB0aGUKLW9wdGlvbiAnLXVhbGwsLWd1aScuCi0iIiIKLQogIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgogaW1wb3J0IGltcG9ydGxpYgogCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBidWlsdGlucwotaW1wb3J0IGZhdWx0aGFuZGxlcgotaW1wb3J0IGlvCi1pbXBvcnQganNvbgotaW1wb3J0IGxvY2FsZQotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKLWltcG9ydCBzeXNjb25maWcKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHRpbWUKLWltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgogCi10cnk6Ci0gICAgaW1wb3J0IHRocmVhZGluZwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHRocmVhZGluZyA9IE5vbmUKLXRyeToKLSAgICBpbXBvcnQgX211bHRpcHJvY2Vzc2luZywgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKKyMgQWxpYXMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGp1c3QgaW4gY2FzZSkKK21haW5faW5fdGVtcF9jd2QgPSBtYWluCiAKLSMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KLSMgTGliLykgYW5kLCBpZiB3ZSBjaGFuZ2UgdGhlIENXRCB0byBydW4gdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpciwgc29tZQotIyBpbXBvcnRzIG1pZ2h0IGZhaWwuICBUaGlzIGFmZmVjdHMgb25seSB0aGUgbW9kdWxlcyBpbXBvcnRlZCBiZWZvcmUgb3MuY2hkaXIoKS4KLSMgVGhlc2UgbW9kdWxlcyBhcmUgc2VhcmNoZWQgZmlyc3QgaW4gc3lzLnBhdGhbMF0gKHNvICcnIC0tIHRoZSBDV0QpIGFuZCBpZgotIyB0aGV5IGFyZSBmb3VuZCBpbiB0aGUgQ1dEIHRoZWlyIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIHJlbGF0aXZlICh0aGlzCi0jIGhhcHBlbnMgYmVmb3JlIHRoZSBjaGRpcikuICBBbGwgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYWZ0ZXIgdGhlIGNoZGlyLCBhcmUKLSMgbm90IGZvdW5kIGluIHRoZSBDV0QsIGFuZCBzaW5jZSB0aGUgb3RoZXIgcGF0aHMgaW4gc3lzLnBhdGhbMTpdIGFyZSBhYnNvbHV0ZQotIyAoc2l0ZS5weSBhYnNvbHV0aXplIHRoZW0pLCB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgYWJzb2x1dGUgdG9vLgotIyBUaGVyZWZvcmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGFic29sdXRpemUgbWFudWFsbHkgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyBvZgotIyB0aGUgcGFja2FnZXMgdG8gcHJldmVudCBsYXRlciBpbXBvcnRzIHRvIGZhaWwgd2hlbiB0aGUgQ1dEIGlzIGRpZmZlcmVudC4KLWZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6Ci0gICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgotICAgICAgICBtb2R1bGUuX19wYXRoX18gPSBbb3MucGF0aC5hYnNwYXRoKHBhdGgpIGZvciBwYXRoIGluIG1vZHVsZS5fX3BhdGhfX10KLSAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJyk6Ci0gICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtb2R1bGUuX19maWxlX18pCiAKLQotIyBNYWNPU1ggKGEuay5hLiBEYXJ3aW4pIGhhcyBhIGRlZmF1bHQgc3RhY2sgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAotIyBmb3IgZGVlcGx5IHJlY3Vyc2l2ZSByZWd1bGFyIGV4cHJlc3Npb25zLiAgV2Ugc2VlIHRoaXMgYXMgY3Jhc2hlcyBpbgotIyB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2hlbiBydW5uaW5nIHRlc3RfcmUucHkgYW5kIHRlc3Rfc3JlLnB5LiAgVGhlCi0jIGZpeCBpcyB0byBzZXQgdGhlIHN0YWNrIGxpbWl0IHRvIDIwNDguCi0jIFRoaXMgYXBwcm9hY2ggbWF5IGFsc28gYmUgdXNlZnVsIGZvciBvdGhlciBVbml4eSBwbGF0Zm9ybXMgdGhhdAotIyBzdWZmZXIgZnJvbSBzbWFsbCBkZWZhdWx0IHN0YWNrIGxpbWl0cy4KLWlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCByZXNvdXJjZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHNvZnQsIGhhcmQgPSByZXNvdXJjZS5nZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLKQotICAgICAgICBuZXdzb2Z0ID0gbWluKGhhcmQsIG1heChzb2Z0LCAxMDI0KjIwNDgpKQotICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLLCAobmV3c29mdCwgaGFyZCkpCi0KLSMgVGVzdCByZXN1bHQgY29uc3RhbnRzLgotUEFTU0VEID0gMQotRkFJTEVEID0gMAotRU5WX0NIQU5HRUQgPSAtMQotU0tJUFBFRCA9IC0yCi1SRVNPVVJDRV9ERU5JRUQgPSAtMwotSU5URVJSVVBURUQgPSAtNAotQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCi0KLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1SRVNPVVJDRV9OQU1FUyA9ICgnYXVkaW8nLCAnY3Vyc2VzJywgJ2xhcmdlZmlsZScsICduZXR3b3JrJywKLSAgICAgICAgICAgICAgICAgICdkZWNpbWFsJywgJ2NwdScsICdzdWJwcm9jZXNzJywgJ3VybGZldGNoJywgJ2d1aScpCi0KLSMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKLSMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKLSMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KLWlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKLSAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCi1lbHNlOgotICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLVRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKLQotY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6Ci0KLSAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCi0KLWRlZiBfY3JlYXRlX3BhcnNlcigpOgotICAgICMgU2V0IHByb2cgdG8gcHJldmVudCB0aGUgdW5pbmZvcm1hdGl2ZSAiX19tYWluX18ucHkiIGZyb20gZGlzcGxheWluZyBpbgotICAgICMgZXJyb3IgbWVzc2FnZXMgd2hlbiB1c2luZyAicHl0aG9uIC1tIHRlc3QgLi4uIi4KLSAgICBwYXJzZXIgPSBfQXJnUGFyc2VyKHByb2c9J3JlZ3J0ZXN0LnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlPVVTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249REVTQ1JJUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9RVBJTE9HLAotICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2hlbHA9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKQotCi0gICAgIyBBcmd1bWVudHMgd2l0aCB0aGlzIGNsYXVzZSBhZGRlZCB0byBpdHMgaGVscCBhcmUgZGVzY3JpYmVkIGZ1cnRoZXIgaW4KLSAgICAjIHRoZSBlcGlsb2cncyAiQWRkaXRpb25hbCBvcHRpb24gZGV0YWlscyIgc2VjdGlvbi4KLSAgICBtb3JlX2RldGFpbHMgPSAnICBTZWUgdGhlIHNlY3Rpb24gYXQgYm90dG9tIGZvciBtb3JlIGRldGFpbHMuJwotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdHZW5lcmFsIG9wdGlvbnMnKQotICAgICMgV2UgYWRkIGhlbHAgZXhwbGljaXRseSB0byBjb250cm9sIHdoYXQgYXJndW1lbnQgZ3JvdXAgaXQgcmVuZGVycyB1bmRlci4KLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1oJywgJy0taGVscCcsIGFjdGlvbj0naGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10aW1lb3V0JywgbWV0YXZhcj0nVElNRU9VVCcsIHR5cGU9ZmxvYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGhhbiBUSU1FT1VUIHNlY29uZHM7IGRpc2FibGVkIGlmIFRJTUVPVVQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbmVnYXRpdmUgb3IgZXF1YWxzIHRvIHplcm8nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13YWl0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIGJlIGF0dGFjaGVkJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tc2xhdmVhcmdzJywgbWV0YXZhcj0nQVJHUycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXN0YXJ0JywgbWV0YXZhcj0nU1RBUlQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0aGUgbmFtZSBvZiB0aGUgdGVzdCBhdCB3aGljaCB0byBzdGFydC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1ZlcmJvc2l0eScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcmJvc2UnLCBhY3Rpb249J2NvdW50JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRlc3RzIGluIHZlcmJvc2UgbW9kZSB3aXRoIG91dHB1dCB0byBzdGRvdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXcnLCAnLS12ZXJib3NlMicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlLXJ1biBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1XJywgJy0tdmVyYm9zZTMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J25vIG91dHB1dCB1bmxlc3Mgb25lIG9yIG1vcmUgdGVzdHMgZmFpbCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbycsICctLXNsb3cnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdwcmludF9zbG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgdGhlIHNsb3dlc3QgMTAgdGVzdHMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1oZWFkZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCBoZWFkZXIgd2l0aCBpbnRlcnByZXRlciBpbmZvJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU2VsZWN0aW5nIHRlc3RzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmFuZG9taXplJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmFuZG9taXplIHRlc3QgZXhlY3V0aW9uIG9yZGVyLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJhbmRzZWVkJywgbWV0YXZhcj0nU0VFRCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3JhbmRvbV9zZWVkJywgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Bhc3MgYSByYW5kb20gc2VlZCB0byByZXByb2R1Y2UgYSBwcmV2aW91cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmRvbSBydW4nKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWYnLCAnLS1mcm9tZmlsZScsIG1ldGF2YXI9J0ZJTEUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZWFkIG5hbWVzIG9mIHRlc3RzIHRvIHJ1biBmcm9tIGEgZmlsZS4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCcteCcsICctLWV4Y2x1ZGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdhcmd1bWVudHMgYXJlIHRlc3RzIHRvICpleGNsdWRlKicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcycsICctLXNpbmdsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NpbmdsZSBzdGVwIHRocm91Z2ggYSBzZXQgb2YgdGVzdHMuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1tYXRjaCcsIG1ldGF2YXI9J1BBVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J21hdGNoX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbWF0Y2ggdGVzdCBjYXNlcyBhbmQgbWV0aG9kcyB3aXRoIGdsb2IgcGF0dGVybiBQQVQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUcnLCAnLS1mYWlsZmFzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZhaWwgYXMgc29vbiBhcyBhIHRlc3QgZmFpbHMgKG9ubHkgd2l0aCAtdiBvciAtVyknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2UnLCBtZXRhdmFyPSdSRVMxLFJFUzIsLi4uJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdhcHBlbmQnLCB0eXBlPXJlc291cmNlc19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gcnVuLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTScsICctLW1lbWxpbWl0JywgbWV0YXZhcj0nTElNSVQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdmVyeSBsYXJnZSBtZW1vcnktY29uc3VtaW5nIHRlc3RzLicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGVzdGRpcicsIG1ldGF2YXI9J0RJUicsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2V4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhpbnN0ZWFkIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpJykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnU3BlY2lhbCBydW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1sJywgJy0tZmluZGxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naWYgR0MgaXMgYXZhaWxhYmxlIGRldGVjdCB0ZXN0cyB0aGF0IGxlYWsgbWVtb3J5JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1MJywgJy0tcnVubGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIGxlYWtzKDEpIGNvbW1hbmQganVzdCBiZWZvcmUgZXhpdC4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUicsICctLWh1bnRybGVha3MnLCBtZXRhdmFyPSdSVU5DT1VOVFMnLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NlYXJjaCBmb3IgcmVmZXJlbmNlIGxlYWtzIChuZWVkcyBkZWJ1ZyBidWlsZCwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJ5IHNsb3cpLicgKyBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaicsICctLW11bHRpcHJvY2VzcycsIG1ldGF2YXI9J1BST0NFU1NFUycsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VzZV9tcCcsIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gUFJPQ0VTU0VTIHByb2Nlc3NlcyBhdCBvbmNlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1UJywgJy0tY292ZXJhZ2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd0cmFjZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3R1cm4gb24gY29kZSBjb3ZlcmFnZSB0cmFjaW5nIHVzaW5nIHRoZSB0cmFjZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vZHVsZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRCcsICctLWNvdmVyZGlyJywgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlyZWN0b3J5IHdoZXJlIGNvdmVyYWdlIGZpbGVzIGFyZSBwdXQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU4nLCAnLS1ub2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PU5vbmUsIGRlc3Q9J2NvdmVyZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHV0IGNvdmVyYWdlIGZpbGVzIGFsb25nc2lkZSBtb2R1bGVzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy10JywgJy0tdGhyZXNob2xkJywgbWV0YXZhcj0nVEhSRVNIT0xEJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2NhbGwgZ2Muc2V0X3RocmVzaG9sZChUSFJFU0hPTEQpJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1uJywgJy0tbm93aW5kb3dzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3VwcHJlc3MgZXJyb3IgbWVzc2FnZSBib3hlcyBvbiBXaW5kb3dzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1GJywgJy0tZm9yZXZlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgc3BlY2lmaWVkIHRlc3RzIGluIGEgbG9vcCwgdW50aWwgYW4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvciBoYXBwZW5zJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1QJywgJy0tcGdvJywgZGVzdD0ncGdvJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiB0cmFpbmluZycpCi0KLSAgICByZXR1cm4gcGFyc2VyCi0KLWRlZiByZWxhdGl2ZV9maWxlbmFtZShzdHJpbmcpOgotICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKLSAgICAjIGpvaW4gaXQgd2l0aCB0aGUgc2F2ZWQgQ1dEIHNvIGl0IGVuZHMgdXAgd2hlcmUgdGhlIHVzZXIgZXhwZWN0cy4KLSAgICByZXR1cm4gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIHN0cmluZykKLQotZGVmIGh1bnRybGVha3Moc3RyaW5nKToKLSAgICBhcmdzID0gc3RyaW5nLnNwbGl0KCc6JykKLSAgICBpZiBsZW4oYXJncykgbm90IGluICgyLCAzKToKLSAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoCi0gICAgICAgICAgICAnbmVlZHMgMiBvciAzIGNvbG9uLXNlcGFyYXRlZCBhcmd1bWVudHMnKQotICAgIG53YXJtdXAgPSBpbnQoYXJnc1swXSkgaWYgYXJnc1swXSBlbHNlIDUKLSAgICBudHJhY2tlZCA9IGludChhcmdzWzFdKSBpZiBhcmdzWzFdIGVsc2UgNAotICAgIGZuYW1lID0gYXJnc1syXSBpZiBsZW4oYXJncykgPiAyIGFuZCBhcmdzWzJdIGVsc2UgJ3JlZmxvZy50eHQnCi0gICAgcmV0dXJuIG53YXJtdXAsIG50cmFja2VkLCBmbmFtZQotCi1kZWYgcmVzb3VyY2VzX2xpc3Qoc3RyaW5nKToKLSAgICB1ID0gW3gubG93ZXIoKSBmb3IgeCBpbiBzdHJpbmcuc3BsaXQoJywnKV0KLSAgICBmb3IgciBpbiB1OgotICAgICAgICBpZiByID09ICdhbGwnIG9yIHIgPT0gJ25vbmUnOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgclswXSA9PSAnLSc6Ci0gICAgICAgICAgICByID0gclsxOl0KLSAgICAgICAgaWYgciBub3QgaW4gUkVTT1VSQ0VfTkFNRVM6Ci0gICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcignaW52YWxpZCByZXNvdXJjZTogJyArIHIpCi0gICAgcmV0dXJuIHUKLQotZGVmIF9wYXJzZV9hcmdzKGFyZ3MsICoqa3dhcmdzKToKLSAgICAjIERlZmF1bHRzCi0gICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UodGVzdGRpcj1Ob25lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLAotICAgICAgICAgZXhjbHVkZT1GYWxzZSwgc2luZ2xlPUZhbHNlLCByYW5kb21pemU9RmFsc2UsIGZyb21maWxlPU5vbmUsCi0gICAgICAgICBmaW5kbGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwgdHJhY2U9RmFsc2UsIGNvdmVyZGlyPSdjb3ZlcmFnZScsCi0gICAgICAgICBydW5sZWFrcz1GYWxzZSwgaHVudHJsZWFrcz1GYWxzZSwgdmVyYm9zZTI9RmFsc2UsIHByaW50X3Nsb3c9RmFsc2UsCi0gICAgICAgICByYW5kb21fc2VlZD1Ob25lLCB1c2VfbXA9Tm9uZSwgdmVyYm9zZTM9RmFsc2UsIGZvcmV2ZXI9RmFsc2UsCi0gICAgICAgICBoZWFkZXI9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLCBwZ289RmFsc2UpCi0gICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKG5zLCBrKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIHRoaXMgZnVuY3Rpb24nICUgaykKLSAgICAgICAgc2V0YXR0cihucywgaywgdikKLSAgICBpZiBucy51c2VfcmVzb3VyY2VzIGlzIE5vbmU6Ci0gICAgICAgIG5zLnVzZV9yZXNvdXJjZXMgPSBbXQotCi0gICAgcGFyc2VyID0gX2NyZWF0ZV9wYXJzZXIoKQotICAgICMgSXNzdWUgIzE0MTkxOiBhcmdwYXJzZSBkb2Vzbid0IHN1cHBvcnQgImludGVybWl4ZWQiIHBvc2l0aW9uYWwgYW5kCi0gICAgIyBvcHRpb25hbCBhcmd1bWVudHMuIFVzZSBwYXJzZV9rbm93bl9hcmdzKCkgYXMgd29ya2Fyb3VuZC4KLSAgICBucy5hcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpWzFdCi0gICAgZm9yIGFyZyBpbiBucy5hcmdzOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLScpOgotICAgICAgICAgICAgcGFyc2VyLmVycm9yKCJ1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcyIgJSBhcmcpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgbnMuc2luZ2xlIGFuZCBucy5mcm9tZmlsZToKLSAgICAgICAgcGFyc2VyLmVycm9yKCItcyBhbmQgLWYgZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy51c2VfbXAgYW5kIG5zLnRyYWNlOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1UIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMuZmluZGxlYWtzOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1sIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMubWVtbGltaXQ6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLU0gYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMuZmFpbGZhc3QgYW5kIG5vdCAobnMudmVyYm9zZSBvciBucy52ZXJib3NlMyk6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVciKQotCi0gICAgaWYgbnMucXVpZXQ6Ci0gICAgICAgIG5zLnZlcmJvc2UgPSAwCi0gICAgaWYgbnMudGltZW91dCBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgotICAgICAgICAgICAgaWYgbnMudGltZW91dCA8PSAwOgotICAgICAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiV2FybmluZzogVGhlIHRpbWVvdXQgb3B0aW9uIHJlcXVpcmVzICIKLSAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIiKQotICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKLSAgICBpZiBucy51c2VfbXAgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5zLnVzZV9tcCA8PSAwOgotICAgICAgICAgICAgIyBVc2UgYWxsIGNvcmVzICsgZXh0cmFzIGZvciB0ZXN0cyB0aGF0IGxpa2UgdG8gc2xlZXAKLSAgICAgICAgICAgIG5zLnVzZV9tcCA9IDIgKyAob3MuY3B1X2NvdW50KCkgb3IgMSkKLSAgICAgICAgaWYgbnMudXNlX21wID09IDE6Ci0gICAgICAgICAgICBucy51c2VfbXAgPSBOb25lCi0gICAgaWYgbnMudXNlOgotICAgICAgICBmb3IgYSBpbiBucy51c2U6Ci0gICAgICAgICAgICBmb3IgciBpbiBhOgotICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6Ci0gICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgotICAgICAgICAgICAgICAgICAgICBkZWwgbnMudXNlX3Jlc291cmNlc1s6XQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgciA9IHJbMTpdCi0gICAgICAgICAgICAgICAgaWYgcmVtb3ZlOgotICAgICAgICAgICAgICAgICAgICBpZiByIGluIG5zLnVzZV9yZXNvdXJjZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLnJlbW92ZShyKQotICAgICAgICAgICAgICAgIGVsaWYgciBub3QgaW4gbnMudXNlX3Jlc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5hcHBlbmQocikKLSAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBub3QgTm9uZToKLSAgICAgICAgbnMucmFuZG9taXplID0gVHJ1ZQotCi0gICAgcmV0dXJuIG5zCi0KLQotZGVmIHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdG5hbWUsIG5zKToKLSAgICAiIiJSdW4gdGhlIGdpdmVuIHRlc3QgaW4gYSBzdWJwcm9jZXNzIHdpdGggLS1zbGF2ZWFyZ3MuCi0KLSAgICBucyBpcyB0aGUgb3B0aW9uIE5hbWVzcGFjZSBwYXJzZWQgZnJvbSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLiByZWdydGVzdAotICAgIGlzIGludm9rZWQgaW4gYSBzdWJwcm9jZXNzIHdpdGggdGhlIC0tc2xhdmVhcmdzIGFyZ3VtZW50OyB3aGVuIHRoZQotICAgIHN1YnByb2Nlc3MgZXhpdHMsIGl0cyByZXR1cm4gY29kZSwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIHJldHVybmVkIGFzIGEKLSAgICAzLXR1cGxlLgotICAgICIiIgotICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKLSAgICBiYXNlX2NtZCA9IChbc3lzLmV4ZWN1dGFibGVdICsgc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSArCi0gICAgICAgICAgICAgICAgWyctWCcsICdmYXVsdGhhbmRsZXInLCAnLW0nLCAndGVzdC5yZWdydGVzdCddKQotICAgICMgcmVxdWlyZWQgdG8gc3Bhd24gYSBuZXcgcHJvY2VzcyB3aXRoIFBHTyBmbGFnIG9uL29mZgotICAgIGlmIG5zLnBnbzoKLSAgICAgICAgYmFzZV9jbWQgPSBiYXNlX2NtZCArIFsnLS1wZ28nXQotICAgIHNsYXZlYXJncyA9ICgKLSAgICAgICAgICAgICh0ZXN0bmFtZSwgbnMudmVyYm9zZSwgbnMucXVpZXQpLAotICAgICAgICAgICAgZGljdChodW50cmxlYWtzPW5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgIHVzZV9yZXNvdXJjZXM9bnMudXNlX3Jlc291cmNlcywKLSAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9bnMudmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgZmFpbGZhc3Q9bnMuZmFpbGZhc3QsCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW5zLm1hdGNoX3Rlc3RzLCBwZ289bnMucGdvKSkKLSAgICAjIFJ1bm5pbmcgdGhlIGNoaWxkIGZyb20gdGhlIHNhbWUgd29ya2luZyBkaXJlY3RvcnkgYXMgcmVncnRlc3QncyBvcmlnaW5hbAotICAgICMgaW52b2NhdGlvbiBlbnN1cmVzIHRoYXQgVEVNUERJUiBmb3IgdGhlIGNoaWxkIGlzIHRoZSBzYW1lIHdoZW4KLSAgICAjIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSBpcyB0cnVlLiBTZWUgaXNzdWUgMTUzMDAuCi0gICAgcG9wZW4gPSBQb3BlbihiYXNlX2NtZCArIFsnLS1zbGF2ZWFyZ3MnLCBqc29uLmR1bXBzKHNsYXZlYXJncyldLAotICAgICAgICAgICAgICAgICAgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLAotICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgICBjbG9zZV9mZHM9KG9zLm5hbWUgIT0gJ250JyksCi0gICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKLSAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKLSAgICByZXRjb2RlID0gcG9wZW4ud2FpdCgpCi0gICAgcmV0dXJuIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyCi0KLQotZGVmIG1haW4odGVzdHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICIiIkV4ZWN1dGUgYSB0ZXN0IHN1aXRlLgotCi0gICAgVGhpcyBhbHNvIHBhcnNlcyBjb21tYW5kLWxpbmUgb3B0aW9ucyBhbmQgbW9kaWZpZXMgaXRzIGJlaGF2aW9yCi0gICAgYWNjb3JkaW5nbHkuCi0KLSAgICB0ZXN0cyAtLSBhIGxpc3Qgb2Ygc3RyaW5ncyBjb250YWluaW5nIHRlc3QgbmFtZXMgKG9wdGlvbmFsKQotICAgIHRlc3RkaXIgLS0gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBsb29rIGZvciB0ZXN0cyAob3B0aW9uYWwpCi0KLSAgICBVc2VycyBvdGhlciB0aGFuIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aWxsIGNlcnRhaW5seSB3YW50IHRvCi0gICAgc3BlY2lmeSB0ZXN0ZGlyOyBpZiBpdCdzIG9taXR0ZWQsIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUKLSAgICBQeXRob24gdGVzdCBzdWl0ZSBpcyBzZWFyY2hlZCBmb3IuCi0KLSAgICBJZiB0aGUgdGVzdHMgYXJndW1lbnQgaXMgb21pdHRlZCwgdGhlIHRlc3RzIGxpc3RlZCBvbiB0aGUKLSAgICBjb21tYW5kLWxpbmUgd2lsbCBiZSB1c2VkLiAgSWYgdGhhdCdzIGVtcHR5LCB0b28sIHRoZW4gYWxsICoucHkKLSAgICBmaWxlcyBiZWdpbm5pbmcgd2l0aCB0ZXN0XyB3aWxsIGJlIHVzZWQuCi0KLSAgICBUaGUgb3RoZXIgZGVmYXVsdCBhcmd1bWVudHMgKHZlcmJvc2UsIHF1aWV0LCBleGNsdWRlLAotICAgIHNpbmdsZSwgcmFuZG9taXplLCBmaW5kbGVha3MsIHVzZV9yZXNvdXJjZXMsIHRyYWNlLCBjb3ZlcmRpciwKLSAgICBwcmludF9zbG93LCBhbmQgcmFuZG9tX3NlZWQpIGFsbG93IHByb2dyYW1tZXJzIGNhbGxpbmcgbWFpbigpCi0gICAgZGlyZWN0bHkgdG8gc2V0IHRoZSB2YWx1ZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBzZXQgYnkgZmxhZ3MKLSAgICBvbiB0aGUgY29tbWFuZCBsaW5lLgotICAgICIiIgotICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMgKGUuZy4gc2VnZmF1bHQpCi0gICAgZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1UcnVlKQotCi0gICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIFNJR0FMUk0gb3IgU0lHVVNSMSBzaWduYWwKLSAgICBzaWduYWxzID0gW10KLSAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR0FMUk0nKToKLSAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR0FMUk0pCi0gICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyk6Ci0gICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdVU1IxKQotICAgIGZvciBzaWdudW0gaW4gc2lnbmFsczoKLSAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgY2hhaW49VHJ1ZSkKLQotICAgIHJlcGxhY2Vfc3Rkb3V0KCkKLQotICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQotCi0gICAgbnMgPSBfcGFyc2VfYXJncyhzeXMuYXJndlsxOl0sICoqa3dhcmdzKQotCi0gICAgaWYgbnMuaHVudHJsZWFrczoKLSAgICAgICAgIyBBdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZHVlIHRvIHZhcmlvdXMgY2FjaGVzCi0gICAgICAgICMgZmlsbGluZyBzbG93bHkgd2l0aCByYW5kb20gZGF0YToKLSAgICAgICAgd2FybV9jYWNoZXMoKQotICAgIGlmIG5zLm1lbWxpbWl0IGlzIG5vdCBOb25lOgotICAgICAgICBzdXBwb3J0LnNldF9tZW1saW1pdChucy5tZW1saW1pdCkKLSAgICBpZiBucy50aHJlc2hvbGQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGltcG9ydCBnYwotICAgICAgICBnYy5zZXRfdGhyZXNob2xkKG5zLnRocmVzaG9sZCkKLSAgICBpZiBucy5ub3dpbmRvd3M6Ci0gICAgICAgIHByaW50KCdUaGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZC4gJwotICAgICAgICAgICAgICAnVXNlIC12diB0byBkaXNwbGF5IGFzc2VydGlvbnMgaW4gc3RkZXJyLicpCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgbXN2Y3J0LlNldEVycm9yTW9kZShtc3ZjcnQuU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT0dQRkFVTFRFUlJPUkJPWHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PT1BFTkZJTEVFUlJPUkJPWCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgIyByZWxlYXNlIGJ1aWxkCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmb3IgbSBpbiBbbXN2Y3J0LkNSVF9XQVJOLCBtc3ZjcnQuQ1JUX0VSUk9SLCBtc3ZjcnQuQ1JUX0FTU0VSVF06Ci0gICAgICAgICAgICAgICAgaWYgbnMudmVyYm9zZSBhbmQgbnMudmVyYm9zZSA+PSAyOgotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCBtc3ZjcnQuQ1JUREJHX01PREVfRklMRSkKLSAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydEZpbGUobSwgbXN2Y3J0LkNSVERCR19GSUxFX1NUREVSUikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCAwKQotICAgIGlmIG5zLndhaXQ6Ci0gICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKLQotICAgIGlmIG5zLnNsYXZlYXJncyBpcyBub3QgTm9uZToKLSAgICAgICAgYXJncywga3dhcmdzID0ganNvbi5sb2Fkcyhucy5zbGF2ZWFyZ3MpCi0gICAgICAgIGlmIGt3YXJncy5nZXQoJ2h1bnRybGVha3MnKToKLSAgICAgICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsICcnCi0gICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgIHJlc3VsdCA9IENISUxEX0VSUk9SLCBzdHIoZSkKLSAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHByaW50KCkgICAjIEZvcmNlIGEgbmV3bGluZSAoanVzdCBpbiBjYXNlKQotICAgICAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCkpCi0gICAgICAgIHN5cy5leGl0KDApCi0KLSAgICBnb29kID0gW10KLSAgICBiYWQgPSBbXQotICAgIHNraXBwZWQgPSBbXQotICAgIHJlc291cmNlX2RlbmllZHMgPSBbXQotICAgIGVudmlyb25tZW50X2NoYW5nZWQgPSBbXQotICAgIGludGVycnVwdGVkID0gRmFsc2UKLQotICAgIGlmIG5zLmZpbmRsZWFrczoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGRpc2FibGluZyBmaW5kbGVha3MuJykKLSAgICAgICAgICAgIG5zLmZpbmRsZWFrcyA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFVuY29tbWVudCB0aGUgbGluZSBiZWxvdyB0byByZXBvcnQgZ2FyYmFnZSB0aGF0IGlzIG5vdAotICAgICAgICAgICAgIyBmcmVlYWJsZSBieSByZWZlcmVuY2UgY291bnRpbmcgYWxvbmUuICBCeSBkZWZhdWx0IG9ubHkKLSAgICAgICAgICAgICMgZ2FyYmFnZSB0aGF0IGlzIG5vdCBjb2xsZWN0YWJsZSBieSB0aGUgR0MgaXMgcmVwb3J0ZWQuCi0gICAgICAgICAgICAjZ2Muc2V0X2RlYnVnKGdjLkRFQlVHX1NBVkVBTEwpCi0gICAgICAgICAgICBmb3VuZF9nYXJiYWdlID0gW10KLQotICAgIGlmIG5zLmh1bnRybGVha3M6Ci0gICAgICAgIHVuaXR0ZXN0LkJhc2VUZXN0U3VpdGUuX2NsZWFudXAgPSBGYWxzZQotCi0gICAgaWYgbnMuc2luZ2xlOgotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihURU1QRElSLCAncHluZXh0dGVzdCcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3InKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBuZXh0X3Rlc3QgPSBmcC5yZWFkKCkuc3RyaXAoKQotICAgICAgICAgICAgICAgIHRlc3RzID0gW25leHRfdGVzdF0KLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBpZiBucy5mcm9tZmlsZToKLSAgICAgICAgdGVzdHMgPSBbXQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIG5zLmZyb21maWxlKSkgYXMgZnA6Ci0gICAgICAgICAgICBjb3VudF9wYXQgPSByZS5jb21waWxlKHInXFtccypcZCsvXHMqXGQrXF0nKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZnA6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGNvdW50X3BhdC5zdWIoJycsIGxpbmUpCi0gICAgICAgICAgICAgICAgZ3V0cyA9IGxpbmUuc3BsaXQoKSAjIGFzc3VtaW5nIG5vIHRlc3QgaGFzIHdoaXRlc3BhY2UgaW4gaXRzIG5hbWUKLSAgICAgICAgICAgICAgICBpZiBndXRzIGFuZCBub3QgZ3V0c1swXS5zdGFydHN3aXRoKCcjJyk6Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RzLmV4dGVuZChndXRzKQotCi0gICAgIyBTdHJpcCAucHkgZXh0ZW5zaW9ucy4KLSAgICByZW1vdmVweShucy5hcmdzKQotICAgIHJlbW92ZXB5KHRlc3RzKQotCi0gICAgc3RkdGVzdHMgPSBTVERURVNUU1s6XQotICAgIG5vdHRlc3RzID0gTk9UVEVTVFMuY29weSgpCi0gICAgaWYgbnMuZXhjbHVkZToKLSAgICAgICAgZm9yIGFyZyBpbiBucy5hcmdzOgotICAgICAgICAgICAgaWYgYXJnIGluIHN0ZHRlc3RzOgotICAgICAgICAgICAgICAgIHN0ZHRlc3RzLnJlbW92ZShhcmcpCi0gICAgICAgICAgICBub3R0ZXN0cy5hZGQoYXJnKQotICAgICAgICBucy5hcmdzID0gW10KLQotICAgICMgRm9yIGEgcGFydGlhbCBydW4sIHdlIGRvIG5vdCBuZWVkIHRvIGNsdXR0ZXIgdGhlIG91dHB1dC4KLSAgICBpZiAobnMudmVyYm9zZSBvciBucy5oZWFkZXIgb3IKLSAgICAgICAgICAgIG5vdCAobnMucGdvIG9yIG5zLnF1aWV0IG9yIG5zLnNpbmdsZSBvciB0ZXN0cyBvciBucy5hcmdzKSk6Ci0gICAgICAgICMgUHJpbnQgYmFzaWMgcGxhdGZvcm0gaW5mb3JtYXRpb24KLSAgICAgICAgcHJpbnQoIj09IiwgcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCksICpzeXMudmVyc2lvbi5zcGxpdCgpKQotICAgICAgICBwcmludCgiPT0gICIsIHBsYXRmb3JtLnBsYXRmb3JtKGFsaWFzZWQ9VHJ1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXMtZW5kaWFuIiAlIHN5cy5ieXRlb3JkZXIpCi0gICAgICAgIHByaW50KCI9PSAgIiwgImhhc2ggYWxnb3JpdGhtOiIsIHN5cy5oYXNoX2luZm8uYWxnb3JpdGhtLAotICAgICAgICAgICAgICAgICI2NGJpdCIgaWYgc3lzLm1heHNpemUgPiAyKiozMiBlbHNlICIzMmJpdCIpCi0gICAgICAgIHByaW50KCI9PSAgIiwgb3MuZ2V0Y3dkKCkpCi0gICAgICAgIHByaW50KCJUZXN0aW5nIHdpdGggZmxhZ3M6Iiwgc3lzLmZsYWdzKQotCi0gICAgIyBpZiB0ZXN0ZGlyIGlzIHNldCwgdGhlbiB3ZSBhcmUgbm90IHJ1bm5pbmcgdGhlIHB5dGhvbiB0ZXN0cyBzdWl0ZSwgc28KLSAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQotICAgIGlmIG5zLnRlc3RkaXI6Ci0gICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKG5zLnRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCi0gICAgZWxzZToKLSAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMobnMudGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQotCi0gICAgc2VsZWN0ZWQgPSB0ZXN0cyBvciBucy5hcmdzIG9yIGFsbHRlc3RzCi0gICAgaWYgbnMuc2luZ2xlOgotICAgICAgICBzZWxlY3RlZCA9IHNlbGVjdGVkWzoxXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuZXh0X3NpbmdsZV90ZXN0ID0gYWxsdGVzdHNbYWxsdGVzdHMuaW5kZXgoc2VsZWN0ZWRbMF0pKzFdCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgbmV4dF9zaW5nbGVfdGVzdCA9IE5vbmUKLSAgICAjIFJlbW92ZSBhbGwgdGhlIHNlbGVjdGVkIHRlc3RzIHRoYXQgcHJlY2VkZSBzdGFydCBpZiBpdCdzIHNldC4KLSAgICBpZiBucy5zdGFydDoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVsIHNlbGVjdGVkWzpzZWxlY3RlZC5pbmRleChucy5zdGFydCldCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgc3RhcnRpbmcgdGVzdCAoJXMpLCB1c2luZyBhbGwgdGVzdHMiICUgbnMuc3RhcnQpCi0gICAgaWYgbnMucmFuZG9taXplOgotICAgICAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBOb25lOgotICAgICAgICAgICAgbnMucmFuZG9tX3NlZWQgPSByYW5kb20ucmFuZHJhbmdlKDEwMDAwMDAwKQotICAgICAgICByYW5kb20uc2VlZChucy5yYW5kb21fc2VlZCkKLSAgICAgICAgcHJpbnQoIlVzaW5nIHJhbmRvbSBzZWVkIiwgbnMucmFuZG9tX3NlZWQpCi0gICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGVjdGVkKQotICAgIGlmIG5zLnRyYWNlOgotICAgICAgICBpbXBvcnQgdHJhY2UsIHRlbXBmaWxlCi0gICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLmdldHRlbXBkaXIoKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPUZhbHNlLCBjb3VudD1UcnVlKQotCi0gICAgdGVzdF90aW1lcyA9IFtdCi0gICAgc3VwcG9ydC52ZXJib3NlID0gbnMudmVyYm9zZSAgICAgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0Ci0gICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gbnMudXNlX3Jlc291cmNlcwotICAgIHNhdmVfbW9kdWxlcyA9IHN5cy5tb2R1bGVzLmtleXMoKQotCi0gICAgZGVmIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCk6Ci0gICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKLSAgICAgICAgaWYgb2sgbm90IGluIChDSElMRF9FUlJPUiwgSU5URVJSVVBURUQpOgotICAgICAgICAgICAgdGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCi0gICAgICAgIGlmIG9rID09IFBBU1NFRDoKLSAgICAgICAgICAgIGdvb2QuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gRkFJTEVEOgotICAgICAgICAgICAgYmFkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IEVOVl9DSEFOR0VEOgotICAgICAgICAgICAgZW52aXJvbm1lbnRfY2hhbmdlZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBTS0lQUEVEOgotICAgICAgICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBSRVNPVVJDRV9ERU5JRUQ6Ci0gICAgICAgICAgICBza2lwcGVkLmFwcGVuZCh0ZXN0KQotICAgICAgICAgICAgcmVzb3VyY2VfZGVuaWVkcy5hcHBlbmQodGVzdCkKLQotICAgIGlmIG5zLmZvcmV2ZXI6Ci0gICAgICAgIGRlZiB0ZXN0X2ZvcmV2ZXIodGVzdHM9bGlzdChzZWxlY3RlZCkpOgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgdGVzdAotICAgICAgICAgICAgICAgICAgICBpZiBiYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdGVzdHMgPSB0ZXN0X2ZvcmV2ZXIoKQotICAgICAgICB0ZXN0X2NvdW50ID0gJycKLSAgICAgICAgdGVzdF9jb3VudF93aWR0aCA9IDMKLSAgICBlbHNlOgotICAgICAgICB0ZXN0cyA9IGl0ZXIoc2VsZWN0ZWQpCi0gICAgICAgIHRlc3RfY291bnQgPSAnL3t9Jy5mb3JtYXQobGVuKHNlbGVjdGVkKSkKLSAgICAgICAgdGVzdF9jb3VudF93aWR0aCA9IGxlbih0ZXN0X2NvdW50KSAtIDEKLQotICAgIGlmIG5zLnVzZV9tcDoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiTXVsdGlwcm9jZXNzIG9wdGlvbiByZXF1aXJlcyB0aHJlYWQgc3VwcG9ydCIpCi0gICAgICAgICAgICBzeXMuZXhpdCgyKQotICAgICAgICBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQotICAgICAgICBkZWJ1Z19vdXRwdXRfcGF0ID0gcmUuY29tcGlsZShyIlxbXGQrIHJlZnMsIFxkKyBibG9ja3NcXSQiKQotICAgICAgICBvdXRwdXQgPSBRdWV1ZSgpCi0gICAgICAgIHBlbmRpbmcgPSBNdWx0aXByb2Nlc3NUZXN0cyh0ZXN0cykKLSAgICAgICAgZGVmIHdvcmsoKToKLSAgICAgICAgICAgICMgQSB3b3JrZXIgdGhyZWFkLgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBuZXh0KHBlbmRpbmcpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIgPSBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3QsIG5zKQotICAgICAgICAgICAgICAgICAgICAjIFN0cmlwIGxhc3QgcmVmY291bnQgb3V0cHV0IGxpbmUgaWYgaXQgZXhpc3RzLCBzaW5jZSBpdAotICAgICAgICAgICAgICAgICAgICAjIGNvbWVzIGZyb20gdGhlIHNodXRkb3duIG9mIHRoZSBpbnRlcnByZXRlciBpbiB0aGUgc3ViY29tbWFuZC4KLSAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gZGVidWdfb3V0cHV0X3BhdC5zdWIoIiIsIHN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBfLCByZXN1bHQgPSBzdGRvdXQuc3RyaXAoKS5ycGFydGl0aW9uKCJcbiIpCi0gICAgICAgICAgICAgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IChDSElMRF9FUlJPUiwgIkV4aXQgY29kZSAlcyIgJSByZXRjb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksIHJlc3VsdCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzb24ubG9hZHMocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKLSAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHdvcmtlcnMgPSBbVGhyZWFkKHRhcmdldD13b3JrKSBmb3IgaSBpbiByYW5nZShucy51c2VfbXApXQotICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6Ci0gICAgICAgICAgICB3b3JrZXIuc3RhcnQoKQotICAgICAgICBmaW5pc2hlZCA9IDAKLSAgICAgICAgdGVzdF9pbmRleCA9IDEKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgZmluaXNoZWQgPCBucy51c2VfbXA6Ci0gICAgICAgICAgICAgICAgdGVzdCwgc3Rkb3V0LCBzdGRlcnIsIHJlc3VsdCA9IG91dHB1dC5nZXQoKQotICAgICAgICAgICAgICAgIGlmIHRlc3QgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgKz0gMQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbnMucXVpZXQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfS97M31dIHs0fSIKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfV0gezR9IgotICAgICAgICAgICAgICAgICAgICBwcmludChmbXQuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudF93aWR0aCwgdGVzdF9pbmRleCwgdGVzdF9jb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbihiYWQpLCB0ZXN0KSkKLSAgICAgICAgICAgICAgICBpZiBzdGRvdXQ6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHN0ZG91dCkKLSAgICAgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHN0ZGVyciwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBJTlRFUlJVUFRFRDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gQ0hJTERfRVJST1I6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2hpbGQgZXJyb3Igb24ge306IHt9Ii5mb3JtYXQodGVzdCwgcmVzdWx0WzFdKSkKLSAgICAgICAgICAgICAgICB0ZXN0X2luZGV4ICs9IDEKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICBwZW5kaW5nLmludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6Ci0gICAgICAgICAgICB3b3JrZXIuam9pbigpCi0gICAgZWxzZToKLSAgICAgICAgZm9yIHRlc3RfaW5kZXgsIHRlc3QgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKLSAgICAgICAgICAgIGlmIG5vdCBucy5xdWlldDoKLSAgICAgICAgICAgICAgICBpZiBiYWQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfS97M31dIHs0fSIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmbXQgPSAiW3sxOnswfX17Mn1dIHs0fSIKLSAgICAgICAgICAgICAgICBwcmludChmbXQuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LCBsZW4oYmFkKSwgdGVzdCkpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICBpZiBucy50cmFjZToKLSAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIHRyYWNpbmcgY29kZSBjb3ZlcmFnZSwgdGhlbiB3ZSBkb24ndCBleGl0IHdpdGggc3RhdHVzCi0gICAgICAgICAgICAgICAgIyBpZiBvbiBhIGZhbHNlIHJldHVybiB2YWx1ZSBmcm9tIG1haW4uCi0gICAgICAgICAgICAgICAgdHJhY2VyLnJ1bmN0eCgncnVudGVzdCh0ZXN0LCBucy52ZXJib3NlLCBucy5xdWlldCwgdGltZW91dD1ucy50aW1lb3V0KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMoKSwgbG9jYWxzPXZhcnMoKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KHRlc3QsIG5zLnZlcmJvc2UsIG5zLnF1aWV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9bnMudmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBmYWlsZmFzdD1ucy5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1ucy5tYXRjaF90ZXN0cywgcGdvPW5zLnBnbykKLSAgICAgICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBucy5maW5kbGVha3M6Ci0gICAgICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICAgICAgaWYgZ2MuZ2FyYmFnZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IHRlc3QgY3JlYXRlZCIsIGxlbihnYy5nYXJiYWdlKSwgZW5kPScgJykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoInVuY29sbGVjdGFibGUgb2JqZWN0KHMpLiIpCi0gICAgICAgICAgICAgICAgICAgICMgbW92ZSB0aGUgdW5jb2xsZWN0YWJsZSBvYmplY3RzIHNvbWV3aGVyZSBzbyB3ZSBkb24ndCBzZWUKLSAgICAgICAgICAgICAgICAgICAgIyB0aGVtIGFnYWluCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kX2dhcmJhZ2UuZXh0ZW5kKGdjLmdhcmJhZ2UpCi0gICAgICAgICAgICAgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCi0gICAgICAgICAgICAjIFVubG9hZCB0aGUgbmV3bHkgaW1wb3J0ZWQgbW9kdWxlcyAoYmVzdCBlZmZvcnQgZmluYWxpemF0aW9uKQotICAgICAgICAgICAgZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5rZXlzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbW9kdWxlIG5vdCBpbiBzYXZlX21vZHVsZXMgYW5kIG1vZHVsZS5zdGFydHN3aXRoKCJ0ZXN0LiIpOgotICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChtb2R1bGUpCi0KLSAgICBpZiBpbnRlcnJ1cHRlZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgYWZ0ZXIgXkMKLSAgICAgICAgcHJpbnQoKQotICAgICAgICBwcmludCgiVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULiIpCi0gICAgICAgIG9taXR0ZWQgPSBzZXQoc2VsZWN0ZWQpIC0gc2V0KGdvb2QpIC0gc2V0KGJhZCkgLSBzZXQoc2tpcHBlZCkKLSAgICAgICAgcHJpbnQoY291bnQobGVuKG9taXR0ZWQpLCAidGVzdCIpLCAib21pdHRlZDoiKQotICAgICAgICBwcmludGxpc3Qob21pdHRlZCkKLSAgICBpZiBnb29kIGFuZCBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIGlmIG5vdCBiYWQgYW5kIG5vdCBza2lwcGVkIGFuZCBub3QgaW50ZXJydXB0ZWQgYW5kIGxlbihnb29kKSA+IDE6Ci0gICAgICAgICAgICBwcmludCgiQWxsIiwgZW5kPScgJykKLSAgICAgICAgcHJpbnQoY291bnQobGVuKGdvb2QpLCAidGVzdCIpLCAiT0suIikKLSAgICBpZiBucy5wcmludF9zbG93OgotICAgICAgICB0ZXN0X3RpbWVzLnNvcnQocmV2ZXJzZT1UcnVlKQotICAgICAgICBwcmludCgiMTAgc2xvd2VzdCB0ZXN0czoiKQotICAgICAgICBmb3IgdGltZSwgdGVzdCBpbiB0ZXN0X3RpbWVzWzoxMF06Ci0gICAgICAgICAgICBwcmludCgiJXM6ICUuMWZzIiAlICh0ZXN0LCB0aW1lKSkKLSAgICBpZiBiYWQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIHByaW50KGNvdW50KGxlbihiYWQpLCAidGVzdCIpLCAiZmFpbGVkOiIpCi0gICAgICAgIHByaW50bGlzdChiYWQpCi0gICAgaWYgZW52aXJvbm1lbnRfY2hhbmdlZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgcHJpbnQoInt9IGFsdGVyZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudDoiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgY291bnQobGVuKGVudmlyb25tZW50X2NoYW5nZWQpLCAidGVzdCIpKSkKLSAgICAgICAgcHJpbnRsaXN0KGVudmlyb25tZW50X2NoYW5nZWQpCi0gICAgaWYgc2tpcHBlZCBhbmQgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgotICAgICAgICBwcmludChjb3VudChsZW4oc2tpcHBlZCksICJ0ZXN0IiksICJza2lwcGVkOiIpCi0gICAgICAgIHByaW50bGlzdChza2lwcGVkKQotCi0gICAgaWYgbnMudmVyYm9zZTIgYW5kIGJhZDoKLSAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZSIpCi0gICAgICAgIGZvciB0ZXN0IGluIGJhZFs6XToKLSAgICAgICAgICAgIGlmIG5vdCBucy5wZ286Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5zLnZlcmJvc2UgPSBUcnVlCi0gICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIG5zLnF1aWV0LCBucy5odW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQsIHBnbz1ucy5wZ28pCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgc2VwYXJhdGUgZnJvbSB0aGUgXkMKLSAgICAgICAgICAgICAgICBwcmludCgpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgb2tbMF0gaW4ge1BBU1NFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRH06Ci0gICAgICAgICAgICAgICAgICAgIGJhZC5yZW1vdmUodGVzdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGJhZDoKLSAgICAgICAgICAgICAgICBwcmludChjb3VudChsZW4oYmFkKSwgJ3Rlc3QnKSwgImZhaWxlZCBhZ2FpbjoiKQotICAgICAgICAgICAgICAgIHByaW50bGlzdChiYWQpCi0KLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIGlmIG5leHRfc2luZ2xlX3Rlc3Q6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3JykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgZnAud3JpdGUobmV4dF9zaW5nbGVfdGVzdCArICdcbicpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUpCi0KLSAgICBpZiBucy50cmFjZToKLSAgICAgICAgciA9IHRyYWNlci5yZXN1bHRzKCkKLSAgICAgICAgci53cml0ZV9yZXN1bHRzKHNob3dfbWlzc2luZz1UcnVlLCBzdW1tYXJ5PVRydWUsIGNvdmVyZGlyPW5zLmNvdmVyZGlyKQotCi0gICAgaWYgbnMucnVubGVha3M6Ci0gICAgICAgIG9zLnN5c3RlbSgibGVha3MgJWQiICUgb3MuZ2V0cGlkKCkpCi0KLSAgICBzeXMuZXhpdChsZW4oYmFkKSA+IDAgb3IgaW50ZXJydXB0ZWQpCi0KLQotIyBzbWFsbCBzZXQgb2YgdGVzdHMgdG8gZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYSBiYXNpY2FsbHkgZnVuY3Rpb25pbmcgaW50ZXJwcmV0ZXIKLSMgKGkuZS4gaWYgYW55IG9mIHRoZXNlIGZhaWwsIHRoZW4gYW55dGhpbmcgZWxzZSBpcyBsaWtlbHkgdG8gZm9sbG93KQotU1REVEVTVFMgPSBbCi0gICAgJ3Rlc3RfZ3JhbW1hcicsCi0gICAgJ3Rlc3Rfb3Bjb2RlcycsCi0gICAgJ3Rlc3RfZGljdCcsCi0gICAgJ3Rlc3RfYnVpbHRpbicsCi0gICAgJ3Rlc3RfZXhjZXB0aW9ucycsCi0gICAgJ3Rlc3RfdHlwZXMnLAotICAgICd0ZXN0X3VuaXR0ZXN0JywKLSAgICAndGVzdF9kb2N0ZXN0JywKLSAgICAndGVzdF9kb2N0ZXN0MicsCi0gICAgJ3Rlc3Rfc3VwcG9ydCcKLV0KLQotIyBzZXQgb2YgdGVzdHMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNpbmcgcmVncnRlc3QKLU5PVFRFU1RTID0gc2V0KCkKLQotZGVmIGZpbmR0ZXN0cyh0ZXN0ZGlyPU5vbmUsIHN0ZHRlc3RzPVNURFRFU1RTLCBub3R0ZXN0cz1OT1RURVNUUyk6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXBwbGljYWJsZSB0ZXN0IG1vZHVsZXMuIiIiCi0gICAgdGVzdGRpciA9IGZpbmR0ZXN0ZGlyKHRlc3RkaXIpCi0gICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRlc3RkaXIpCi0gICAgdGVzdHMgPSBbXQotICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cwotICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICBtb2QsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgbW9kWzo1XSA9PSAidGVzdF8iIGFuZCBleHQgaW4gKCIucHkiLCAiIikgYW5kIG1vZCBub3QgaW4gb3RoZXJzOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZCkKLSAgICByZXR1cm4gc3RkdGVzdHMgKyBzb3J0ZWQodGVzdHMpCi0KLSMgV2UgZG8gbm90IHVzZSBhIGdlbmVyYXRvciBzbyBtdWx0aXBsZSB0aHJlYWRzIGNhbiBjYWxsIG5leHQoKS4KLWNsYXNzIE11bHRpcHJvY2Vzc1Rlc3RzKG9iamVjdCk6Ci0KLSAgICAiIiJBIHRocmVhZC1zYWZlIGl0ZXJhdG9yIG92ZXIgdGVzdHMgZm9yIG11bHRpcHJvY2VzcyBtb2RlLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzKToKLSAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKLSAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCi0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnJ1cHRlZDoKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCd0ZXN0cyBpbnRlcnJ1cHRlZCcpCi0gICAgICAgICAgICByZXR1cm4gbmV4dChzZWxmLnRlc3RzKQotCi1kZWYgcmVwbGFjZV9zdGRvdXQoKToKLSAgICAiIiJTZXQgc3Rkb3V0IGVuY29kZXIgZXJyb3IgaGFuZGxlciB0byBiYWNrc2xhc2hyZXBsYWNlIChhcyBzdGRlcnIgZXJyb3IKLSAgICBoYW5kbGVyKSB0byBhdm9pZCBVbmljb2RlRW5jb2RlRXJyb3Igd2hlbiBwcmludGluZyBhIHRyYWNlYmFjayIiIgotICAgIGltcG9ydCBhdGV4aXQKLQotICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICBzeXMuc3Rkb3V0ID0gb3BlbihzdGRvdXQuZmlsZW5vKCksICd3JywKLSAgICAgICAgZW5jb2Rpbmc9c3Rkb3V0LmVuY29kaW5nLAotICAgICAgICBlcnJvcnM9ImJhY2tzbGFzaHJlcGxhY2UiLAotICAgICAgICBjbG9zZWZkPUZhbHNlLAotICAgICAgICBuZXdsaW5lPSdcbicpCi0KLSAgICBkZWYgcmVzdG9yZV9zdGRvdXQoKToKLSAgICAgICAgc3lzLnN0ZG91dC5jbG9zZSgpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzdGRvdXQKLSAgICBhdGV4aXQucmVnaXN0ZXIocmVzdG9yZV9zdGRvdXQpCi0KLWRlZiBydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0LAotICAgICAgICAgICAgaHVudHJsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLAotICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLAotICAgICAgICAgICAgdGltZW91dD1Ob25lLCAqLCBwZ289RmFsc2UpOgotICAgICIiIlJ1biBhIHNpbmdsZSB0ZXN0LgotCi0gICAgdGVzdCAtLSB0aGUgbmFtZSBvZiB0aGUgdGVzdAotICAgIHZlcmJvc2UgLS0gaWYgdHJ1ZSwgcHJpbnQgbW9yZSBtZXNzYWdlcwotICAgIHF1aWV0IC0tIGlmIHRydWUsIGRvbid0IHByaW50ICdza2lwcGVkJyBtZXNzYWdlcyAocHJvYmFibHkgcmVkdW5kYW50KQotICAgIGh1bnRybGVha3MgLS0gcnVuIG11bHRpcGxlIHRpbWVzIHRvIHRlc3QgZm9yIGxlYWtzOyByZXF1aXJlcyBhIGRlYnVnCi0gICAgICAgICAgICAgICAgICBidWlsZDsgYSB0cmlwbGUgY29ycmVzcG9uZGluZyB0byAtUidzIHRocmVlIGFyZ3VtZW50cwotICAgIHVzZV9yZXNvdXJjZXMgLS0gbGlzdCBvZiBleHRyYSByZXNvdXJjZXMgdG8gdXNlCi0gICAgb3V0cHV0X29uX2ZhaWx1cmUgLS0gaWYgdHJ1ZSwgZGlzcGxheSB0ZXN0IG91dHB1dCBvbiBmYWlsdXJlCi0gICAgdGltZW91dCAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUgdGhhbgotICAgICAgICAgICAgICAgdGltZW91dCBzZWNvbmRzCi0gICAgZmFpbGZhc3QsIG1hdGNoX3Rlc3RzIC0tIFNlZSByZWdydGVzdCBjb21tYW5kLWxpbmUgZmxhZ3MgZm9yIHRoZXNlLgotICAgIHBnbyAtLSBpZiB0cnVlLCBkbyBub3QgcHJpbnQgdW5uZWNlc3NhcnkgaW5mbyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3QKLSAgICAgICAgICAgZm9yIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiBidWlsZAotCi0gICAgUmV0dXJucyB0aGUgdHVwbGUgcmVzdWx0LCB0ZXN0X3RpbWUsIHdoZXJlIHJlc3VsdCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50czoKLSAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagotICAgICAgICBSRVNPVVJDRV9ERU5JRUQgIHRlc3Qgc2tpcHBlZCBiZWNhdXNlIHJlc291cmNlIGRlbmllZAotICAgICAgICBTS0lQUEVEICAgICAgICAgIHRlc3Qgc2tpcHBlZCBmb3Igc29tZSBvdGhlciByZWFzb24KLSAgICAgICAgRU5WX0NIQU5HRUQgICAgICB0ZXN0IGZhaWxlZCBiZWNhdXNlIGl0IGNoYW5nZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudAotICAgICAgICBGQUlMRUQgICAgICAgICAgIHRlc3QgZmFpbGVkCi0gICAgICAgIFBBU1NFRCAgICAgICAgICAgdGVzdCBwYXNzZWQKLSAgICAiIiIKLSAgICBpZiB1c2VfcmVzb3VyY2VzIGlzIG5vdCBOb25lOgotICAgICAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSB1c2VfcmVzb3VyY2VzCi0gICAgdXNlX3RpbWVvdXQgPSAodGltZW91dCBpcyBub3QgTm9uZSkKLSAgICBpZiB1c2VfdGltZW91dDoKLSAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKHRpbWVvdXQsIGV4aXQ9VHJ1ZSkKLSAgICB0cnk6Ci0gICAgICAgIHN1cHBvcnQubWF0Y2hfdGVzdHMgPSBtYXRjaF90ZXN0cwotICAgICAgICBpZiBmYWlsZmFzdDoKLSAgICAgICAgICAgIHN1cHBvcnQuZmFpbGZhc3QgPSBUcnVlCi0gICAgICAgIGlmIG91dHB1dF9vbl9mYWlsdXJlOgotICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gVHJ1ZQotCi0gICAgICAgICAgICAjIFJldXNlIHRoZSBzYW1lIGluc3RhbmNlIHRvIGFsbCBjYWxscyB0byBydW50ZXN0KCkuIFNvbWUKLSAgICAgICAgICAgICMgdGVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byBzeXMuc3Rkb3V0IG9yIHN5cy5zdGRlcnIKLSAgICAgICAgICAgICMgKGVnLiB0ZXN0X2FyZ3BhcnNlKS4KLSAgICAgICAgICAgIGlmIHJ1bnRlc3Quc3RyaW5naW8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgcnVudGVzdC5zdHJpbmdpbyA9IHN0cmVhbQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdHJlYW0gPSBydW50ZXN0LnN0cmluZ2lvCi0gICAgICAgICAgICAgICAgc3RyZWFtLnNlZWsoMCkKLSAgICAgICAgICAgICAgICBzdHJlYW0udHJ1bmNhdGUoKQotCi0gICAgICAgICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICAgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzdHJlYW0KLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3RyZWFtCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcih0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfZmFpbHVyZT1GYWxzZSwgcGdvPXBnbykKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gIT0gUEFTU0VEIGFuZCBub3QgcGdvOgotICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdHJlYW0uZ2V0dmFsdWUoKQotICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ZGVyci53cml0ZShvdXRwdXQpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IG9yaWdfc3Rkb3V0Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSB2ZXJib3NlICAjIFRlbGwgdGVzdHMgdG8gYmUgbW9kZXJhdGVseSBxdWlldAotICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcih0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPW5vdCB2ZXJib3NlLCBwZ289cGdvKQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgZmluYWxseToKLSAgICAgICAgaWYgdXNlX3RpbWVvdXQ6Ci0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKLSAgICAgICAgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0LCB2ZXJib3NlKQotcnVudGVzdC5zdHJpbmdpbyA9IE5vbmUKLQotIyBVbml0IHRlc3RzIGFyZSBzdXBwb3NlZCB0byBsZWF2ZSB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IHVuY2hhbmdlZAotIyBvbmNlIHRoZXkgY29tcGxldGUuICBCdXQgc29tZXRpbWVzIHRlc3RzIGhhdmUgYnVncywgZXNwZWNpYWxseSB3aGVuCi0jIHRlc3RzIGZhaWwsIGFuZCB0aGUgY2hhbmdlcyB0byBlbnZpcm9ubWVudCBnbyBvbiB0byBtZXNzIHVwIG90aGVyCi0jIHRlc3RzLiAgVGhpcyBjYW4gY2F1c2UgaXNzdWVzIHdpdGggYnVpbGRib3Qgc3RhYmlsaXR5LCBzaW5jZSB0ZXN0cwotIyBhcmUgcnVuIGluIHJhbmRvbSBvcmRlciBhbmQgc28gcHJvYmxlbXMgbWF5IGFwcGVhciB0byBjb21lIGFuZCBnby4KLSMgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB3ZSBjYW4gc2F2ZSBhbmQgcmVzdG9yZSB0byBtaXRpZ2F0ZSB0aGlzLCBhbmQKLSMgdGhlIGZvbGxvd2luZyBjb250ZXh0IG1hbmFnZXIgaGFuZGxlcyB0aGlzIHRhc2suCi0KLWNsYXNzIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQ6Ci0gICAgIiIiU2F2ZSBiaXRzIG9mIHRoZSB0ZXN0IGVudmlyb25tZW50IGFuZCByZXN0b3JlIHRoZW0gYXQgYmxvY2sgZXhpdC4KLQotICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdG5hbWUsIHZlcmJvc2UsIHF1aWV0KToKLSAgICAgICAgICAgICNzdHVmZgotCi0gICAgVW5sZXNzIHF1aWV0IGlzIFRydWUsIGEgd2FybmluZyBpcyBwcmludGVkIHRvIHN0ZGVyciBpZiBhbnkgb2YKLSAgICB0aGUgc2F2ZWQgaXRlbXMgd2FzIGNoYW5nZWQgYnkgdGhlIHRlc3QuICBUaGUgYXR0cmlidXRlICdjaGFuZ2VkJwotICAgIGlzIGluaXRpYWxseSBGYWxzZSwgYnV0IGlzIHNldCB0byBUcnVlIGlmIGEgY2hhbmdlIGlzIGRldGVjdGVkLgotCi0gICAgSWYgdmVyYm9zZSBpcyBtb3JlIHRoYW4gMSwgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhdGUgb2YgY2hhbmdlZAotICAgIGl0ZW1zIGlzIGFsc28gcHJpbnRlZC4KLSAgICAiIiIKLQotICAgIGNoYW5nZWQgPSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RuYW1lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLCAqLCBwZ289RmFsc2UpOgotICAgICAgICBzZWxmLnRlc3RuYW1lID0gdGVzdG5hbWUKLSAgICAgICAgc2VsZi52ZXJib3NlID0gdmVyYm9zZQotICAgICAgICBzZWxmLnF1aWV0ID0gcXVpZXQKLSAgICAgICAgc2VsZi5wZ28gPSBwZ28KLQotICAgICMgVG8gYWRkIHRoaW5ncyB0byBzYXZlIGFuZCByZXN0b3JlLCBhZGQgYSBuYW1lIFhYWCB0byB0aGUgcmVzb3VyY2VzIGxpc3QKLSAgICAjIGFuZCBhZGQgY29ycmVzcG9uZGluZyBnZXRfWFhYL3Jlc3RvcmVfWFhYIGZ1bmN0aW9ucy4gIGdldF9YWFggc2hvdWxkCi0gICAgIyByZXR1cm4gdGhlIHZhbHVlIHRvIGJlIHNhdmVkIGFuZCBjb21wYXJlZCBhZ2FpbnN0IGEgc2Vjb25kIGNhbGwgdG8gdGhlCi0gICAgIyBnZXQgZnVuY3Rpb24gd2hlbiB0ZXN0IGV4ZWN1dGlvbiBjb21wbGV0ZXMuICByZXN0b3JlX1hYWCBzaG91bGQgYWNjZXB0Ci0gICAgIyB0aGUgc2F2ZWQgdmFsdWUgYW5kIHJlc3RvcmUgdGhlIHJlc291cmNlIHVzaW5nIGl0LiAgSXQgd2lsbCBiZSBjYWxsZWQgaWYKLSAgICAjIGFuZCBvbmx5IGlmIGEgY2hhbmdlIGluIHRoZSB2YWx1ZSBpcyBkZXRlY3RlZC4KLSAgICAjCi0gICAgIyBOb3RlOiBYWFggd2lsbCBoYXZlIGFueSAnLicgcmVwbGFjZWQgd2l0aCAnXycgY2hhcmFjdGVycyB3aGVuIGRldGVybWluaW5nCi0gICAgIyB0aGUgY29ycmVzcG9uZGluZyBtZXRob2QgbmFtZXMuCi0KLSAgICByZXNvdXJjZXMgPSAoJ3N5cy5hcmd2JywgJ2N3ZCcsICdzeXMuc3RkaW4nLCAnc3lzLnN0ZG91dCcsICdzeXMuc3RkZXJyJywKLSAgICAgICAgICAgICAgICAgJ29zLmVudmlyb24nLCAnc3lzLnBhdGgnLCAnc3lzLnBhdGhfaG9va3MnLCAnX19pbXBvcnRfXycsCi0gICAgICAgICAgICAgICAgICd3YXJuaW5ncy5maWx0ZXJzJywgJ2FzeW5jb3JlLnNvY2tldF9tYXAnLAotICAgICAgICAgICAgICAgICAnbG9nZ2luZy5faGFuZGxlcnMnLCAnbG9nZ2luZy5faGFuZGxlckxpc3QnLCAnc3lzLmdldHRyYWNlJywKLSAgICAgICAgICAgICAgICAgJ3N5cy53YXJub3B0aW9ucycsCi0gICAgICAgICAgICAgICAgICMgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2NsZWFudXAoKSBtYXkgcmVsZWFzZSByZWYKLSAgICAgICAgICAgICAgICAgIyB0byBhIHRocmVhZCwgc28gY2hlY2sgcHJvY2Vzc2VzIGZpcnN0LgotICAgICAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nJywgJ3RocmVhZGluZy5fZGFuZ2xpbmcnLAotICAgICAgICAgICAgICAgICAnc3lzY29uZmlnLl9DT05GSUdfVkFSUycsICdzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUycsCi0gICAgICAgICAgICAgICAgICdmaWxlcycsICdsb2NhbGUnLCAnd2FybmluZ3Muc2hvd3dhcm5pbmcnLAotICAgICAgICAgICAgICAgICAnc2h1dGlsX2FyY2hpdmVfZm9ybWF0cycsICdzaHV0aWxfdW5wYWNrX2Zvcm1hdHMnLAotICAgICAgICAgICAgICAgICkKLQotICAgIGRlZiBnZXRfc3lzX2FyZ3Yoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMuYXJndiksIHN5cy5hcmd2LCBzeXMuYXJndls6XQotICAgIGRlZiByZXN0b3JlX3N5c19hcmd2KHNlbGYsIHNhdmVkX2FyZ3YpOgotICAgICAgICBzeXMuYXJndiA9IHNhdmVkX2FyZ3ZbMV0KLSAgICAgICAgc3lzLmFyZ3ZbOl0gPSBzYXZlZF9hcmd2WzJdCi0KLSAgICBkZWYgZ2V0X2N3ZChzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLmdldGN3ZCgpCi0gICAgZGVmIHJlc3RvcmVfY3dkKHNlbGYsIHNhdmVkX2N3ZCk6Ci0gICAgICAgIG9zLmNoZGlyKHNhdmVkX2N3ZCkKLQotICAgIGRlZiBnZXRfc3lzX3N0ZG91dChzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5zdGRvdXQKLSAgICBkZWYgcmVzdG9yZV9zeXNfc3Rkb3V0KHNlbGYsIHNhdmVkX3N0ZG91dCk6Ci0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlZF9zdGRvdXQKLQotICAgIGRlZiBnZXRfc3lzX3N0ZGVycihzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5zdGRlcnIKLSAgICBkZWYgcmVzdG9yZV9zeXNfc3RkZXJyKHNlbGYsIHNhdmVkX3N0ZGVycik6Ci0gICAgICAgIHN5cy5zdGRlcnIgPSBzYXZlZF9zdGRlcnIKLQotICAgIGRlZiBnZXRfc3lzX3N0ZGluKHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZGluCi0gICAgZGVmIHJlc3RvcmVfc3lzX3N0ZGluKHNlbGYsIHNhdmVkX3N0ZGluKToKLSAgICAgICAgc3lzLnN0ZGluID0gc2F2ZWRfc3RkaW4KLQotICAgIGRlZiBnZXRfb3NfZW52aXJvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKG9zLmVudmlyb24pLCBvcy5lbnZpcm9uLCBkaWN0KG9zLmVudmlyb24pCi0gICAgZGVmIHJlc3RvcmVfb3NfZW52aXJvbihzZWxmLCBzYXZlZF9lbnZpcm9uKToKLSAgICAgICAgb3MuZW52aXJvbiA9IHNhdmVkX2Vudmlyb25bMV0KLSAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCi0gICAgICAgIG9zLmVudmlyb24udXBkYXRlKHNhdmVkX2Vudmlyb25bMl0pCi0KLSAgICBkZWYgZ2V0X3N5c19wYXRoKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGgpLCBzeXMucGF0aCwgc3lzLnBhdGhbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aChzZWxmLCBzYXZlZF9wYXRoKToKLSAgICAgICAgc3lzLnBhdGggPSBzYXZlZF9wYXRoWzFdCi0gICAgICAgIHN5cy5wYXRoWzpdID0gc2F2ZWRfcGF0aFsyXQotCi0gICAgZGVmIGdldF9zeXNfcGF0aF9ob29rcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy5wYXRoX2hvb2tzKSwgc3lzLnBhdGhfaG9va3MsIHN5cy5wYXRoX2hvb2tzWzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX3BhdGhfaG9va3Moc2VsZiwgc2F2ZWRfaG9va3MpOgotICAgICAgICBzeXMucGF0aF9ob29rcyA9IHNhdmVkX2hvb2tzWzFdCi0gICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2F2ZWRfaG9va3NbMl0KLQotICAgIGRlZiBnZXRfc3lzX2dldHRyYWNlKHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLmdldHRyYWNlKCkKLSAgICBkZWYgcmVzdG9yZV9zeXNfZ2V0dHJhY2Uoc2VsZiwgdHJhY2VfZnhuKToKLSAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlX2Z4bikKLQotICAgIGRlZiBnZXRfX19pbXBvcnRfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLl9faW1wb3J0X18KLSAgICBkZWYgcmVzdG9yZV9fX2ltcG9ydF9fKHNlbGYsIGltcG9ydF8pOgotICAgICAgICBidWlsdGlucy5fX2ltcG9ydF9fID0gaW1wb3J0XwotCi0gICAgZGVmIGdldF93YXJuaW5nc19maWx0ZXJzKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQod2FybmluZ3MuZmlsdGVycyksIHdhcm5pbmdzLmZpbHRlcnMsIHdhcm5pbmdzLmZpbHRlcnNbOl0KLSAgICBkZWYgcmVzdG9yZV93YXJuaW5nc19maWx0ZXJzKHNlbGYsIHNhdmVkX2ZpbHRlcnMpOgotICAgICAgICB3YXJuaW5ncy5maWx0ZXJzID0gc2F2ZWRfZmlsdGVyc1sxXQotICAgICAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gc2F2ZWRfZmlsdGVyc1syXQotCi0gICAgZGVmIGdldF9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYpOgotICAgICAgICBhc3luY29yZSA9IHN5cy5tb2R1bGVzLmdldCgnYXN5bmNvcmUnKQotICAgICAgICAjIFhYWCBNYWtpbmcgYSBjb3B5IGtlZXBzIG9iamVjdHMgYWxpdmUgdW50aWwgX19leGl0X18gZ2V0cyBjYWxsZWQuCi0gICAgICAgIHJldHVybiBhc3luY29yZSBhbmQgYXN5bmNvcmUuc29ja2V0X21hcC5jb3B5KCkgb3Ige30KLSAgICBkZWYgcmVzdG9yZV9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYsIHNhdmVkX21hcCk6Ci0gICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCi0gICAgICAgIGlmIGFzeW5jb3JlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKGlnbm9yZV9hbGw9VHJ1ZSkKLSAgICAgICAgICAgIGFzeW5jb3JlLnNvY2tldF9tYXAudXBkYXRlKHNhdmVkX21hcCkKLQotICAgIGRlZiBnZXRfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmKToKLSAgICAgICAgIyB3ZSBjb3VsZCBjYWxsIGdldF9hcmNoaXZlc19mb3JtYXRzKCkgYnV0IHRoYXQgb25seSByZXR1cm5zIHRoZQotICAgICAgICAjIHJlZ2lzdHJ5IGtleXM7IHdlIHdhbnQgdG8gY2hlY2sgdGhlIHZhbHVlcyB0b28gKHRoZSBmdW5jdGlvbnMgdGhhdAotICAgICAgICAjIGFyZSByZWdpc3RlcmVkKQotICAgICAgICByZXR1cm4gc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMsIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUyA9IHNhdmVkWzBdCi0gICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNsZWFyKCkKLSAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMudXBkYXRlKHNhdmVkWzFdKQotCi0gICAgZGVmIGdldF9zaHV0aWxfdW5wYWNrX2Zvcm1hdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLCBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMgPSBzYXZlZFswXQotICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNsZWFyKCkKLSAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCi0KLSAgICBkZWYgZ2V0X2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYpOgotICAgICAgICAjIF9oYW5kbGVycyBpcyBhIFdlYWtWYWx1ZURpY3Rpb25hcnkKLSAgICAgICAgcmV0dXJuIGlkKGxvZ2dpbmcuX2hhbmRsZXJzKSwgbG9nZ2luZy5faGFuZGxlcnMsIGxvZ2dpbmcuX2hhbmRsZXJzLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYsIHNhdmVkX2hhbmRsZXJzKToKLSAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlckxpc3Qoc2VsZik6Ci0gICAgICAgICMgX2hhbmRsZXJMaXN0IGlzIGEgbGlzdCBvZiB3ZWFrcmVmcyB0byBoYW5kbGVycwotICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlckxpc3QpLCBsb2dnaW5nLl9oYW5kbGVyTGlzdCwgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KLSAgICBkZWYgcmVzdG9yZV9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmLCBzYXZlZF9oYW5kbGVyTGlzdCk6Ci0gICAgICAgICMgQ2FuJ3QgZWFzaWx5IHJldmVydCB0aGUgbG9nZ2luZyBzdGF0ZQotICAgICAgICBwYXNzCi0KLSAgICBkZWYgZ2V0X3N5c193YXJub3B0aW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy53YXJub3B0aW9ucyksIHN5cy53YXJub3B0aW9ucywgc3lzLndhcm5vcHRpb25zWzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX3dhcm5vcHRpb25zKHNlbGYsIHNhdmVkX29wdGlvbnMpOgotICAgICAgICBzeXMud2Fybm9wdGlvbnMgPSBzYXZlZF9vcHRpb25zWzFdCi0gICAgICAgIHN5cy53YXJub3B0aW9uc1s6XSA9IHNhdmVkX29wdGlvbnNbMl0KLQotICAgICMgQ29udHJvbGxpbmcgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBUaHJlYWQgb2JqZWN0cyBjYW4gbWFrZSBpdCBlYXNpZXIKLSAgICAjIHRvIHRyYWNrIHJlZmVyZW5jZSBsZWFrcy4KLSAgICBkZWYgZ2V0X3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZik6Ci0gICAgICAgIGlmIG5vdCB0aHJlYWRpbmc6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIFRoaXMgY29waWVzIHRoZSB3ZWFrcmVmcyB3aXRob3V0IG1ha2luZyBhbnkgc3Ryb25nIHJlZmVyZW5jZQotICAgICAgICByZXR1cm4gdGhyZWFkaW5nLl9kYW5nbGluZy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV90aHJlYWRpbmdfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKLSAgICAgICAgaWYgbm90IHRocmVhZGluZzoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLmNsZWFyKCkKLSAgICAgICAgdGhyZWFkaW5nLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCi0KLSAgICAjIFNhbWUgZm9yIFByb2Nlc3Mgb2JqZWN0cwotICAgIGRlZiBnZXRfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYpOgotICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBVbmpvaW5lZCBwcm9jZXNzIG9iamVjdHMgY2FuIHN1cnZpdmUgYWZ0ZXIgcHJvY2VzcyBleGl0cwotICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpCi0gICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCi0gICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKLSAgICAgICAgaWYgbm90IG11bHRpcHJvY2Vzc2luZzoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY2xlYXIoKQotICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQotCi0gICAgZGVmIGdldF9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYpOgotICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgZGljdCBpcyBpbml0aWFsaXplZAotICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3ByZWZpeCcpCi0gICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9DT05GSUdfVkFSUyksIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsCi0gICAgICAgICAgICAgICAgZGljdChzeXNjb25maWcuX0NPTkZJR19WQVJTKSkKLSAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNhdmVkWzFdCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzYXZlZFsyXSkKLQotICAgIGRlZiBnZXRfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZik6Ci0gICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMpLCBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUywKLSAgICAgICAgICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jb3B5KCkpCi0gICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyA9IHNhdmVkWzFdCi0gICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNsZWFyKCkKLSAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMudXBkYXRlKHNhdmVkWzJdKQotCi0gICAgZGVmIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNvcnRlZChmbiArICgnLycgaWYgb3MucGF0aC5pc2RpcihmbikgZWxzZSAnJykKLSAgICAgICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcigpKQotICAgIGRlZiByZXN0b3JlX2ZpbGVzKHNlbGYsIHNhdmVkX3ZhbHVlKToKLSAgICAgICAgZm4gPSBzdXBwb3J0LlRFU1RGTgotICAgICAgICBpZiBmbiBub3QgaW4gc2F2ZWRfdmFsdWUgYW5kIChmbiArICcvJykgbm90IGluIHNhdmVkX3ZhbHVlOgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm4pOgotICAgICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKGZuKQotICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZuKToKLSAgICAgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShmbikKLQotICAgIF9sYyA9IFtnZXRhdHRyKGxvY2FsZSwgbGMpIGZvciBsYyBpbiBkaXIobG9jYWxlKQotICAgICAgICAgICBpZiBsYy5zdGFydHN3aXRoKCdMQ18nKV0KLSAgICBkZWYgZ2V0X2xvY2FsZShzZWxmKToKLSAgICAgICAgcGFpcmluZ3MgPSBbXQotICAgICAgICBmb3IgbGMgaW4gc2VsZi5fbGM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGFpcmluZ3MuYXBwZW5kKChsYywgbG9jYWxlLnNldGxvY2FsZShsYywgTm9uZSkpKQotICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHJldHVybiBwYWlyaW5ncwotICAgIGRlZiByZXN0b3JlX2xvY2FsZShzZWxmLCBzYXZlZCk6Ci0gICAgICAgIGZvciBsYywgc2V0dGluZyBpbiBzYXZlZDoKLSAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobGMsIHNldHRpbmcpCi0KLSAgICBkZWYgZ2V0X3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gd2FybmluZ3Muc2hvd3dhcm5pbmcKLSAgICBkZWYgcmVzdG9yZV93YXJuaW5nc19zaG93d2FybmluZyhzZWxmLCBmeG4pOgotICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZyA9IGZ4bgotCi0gICAgZGVmIHJlc291cmNlX2luZm8oc2VsZik6Ci0gICAgICAgIGZvciBuYW1lIGluIHNlbGYucmVzb3VyY2VzOgotICAgICAgICAgICAgbWV0aG9kX3N1ZmZpeCA9IG5hbWUucmVwbGFjZSgnLicsICdfJykKLSAgICAgICAgICAgIGdldF9uYW1lID0gJ2dldF8nICsgbWV0aG9kX3N1ZmZpeAotICAgICAgICAgICAgcmVzdG9yZV9uYW1lID0gJ3Jlc3RvcmVfJyArIG1ldGhvZF9zdWZmaXgKLSAgICAgICAgICAgIHlpZWxkIG5hbWUsIGdldGF0dHIoc2VsZiwgZ2V0X25hbWUpLCBnZXRhdHRyKHNlbGYsIHJlc3RvcmVfbmFtZSkKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuc2F2ZWRfdmFsdWVzID0gZGljdCgobmFtZSwgZ2V0KCkpIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlbGYucmVzb3VyY2VfaW5mbygpKQotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgotICAgICAgICBzYXZlZF92YWx1ZXMgPSBzZWxmLnNhdmVkX3ZhbHVlcwotICAgICAgICBkZWwgc2VsZi5zYXZlZF92YWx1ZXMKLSAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkgICMgU29tZSByZXNvdXJjZXMgdXNlIHdlYWsgcmVmZXJlbmNlcwotICAgICAgICBmb3IgbmFtZSwgZ2V0LCByZXN0b3JlIGluIHNlbGYucmVzb3VyY2VfaW5mbygpOgotICAgICAgICAgICAgY3VycmVudCA9IGdldCgpCi0gICAgICAgICAgICBvcmlnaW5hbCA9IHNhdmVkX3ZhbHVlcy5wb3AobmFtZSkKLSAgICAgICAgICAgICMgQ2hlY2sgZm9yIGNoYW5nZXMgdG8gdGhlIHJlc291cmNlJ3MgdmFsdWUKLSAgICAgICAgICAgIGlmIGN1cnJlbnQgIT0gb3JpZ2luYWw6Ci0gICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VkID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJlc3RvcmUob3JpZ2luYWwpCi0gICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucXVpZXQgYW5kIG5vdCBzZWxmLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIldhcm5pbmcgLS0ge30gd2FzIG1vZGlmaWVkIGJ5IHt9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi50ZXN0bmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2UgPiAxIGFuZCBub3Qgc2VsZi5wZ286Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiICBCZWZvcmU6IHt9XG4gIEFmdGVyOiAge30gIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsLCBjdXJyZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgcnVudGVzdF9pbm5lcih0ZXN0LCB2ZXJib3NlLCBxdWlldCwKLSAgICAgICAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIGRpc3BsYXlfZmFpbHVyZT1UcnVlLCBwZ289RmFsc2UpOgotICAgIHN1cHBvcnQudW5sb2FkKHRlc3QpCi0KLSAgICB0ZXN0X3RpbWUgPSAwLjAKLSAgICByZWZsZWFrID0gRmFsc2UgICMgVHJ1ZSBpZiB0aGUgdGVzdCBsZWFrZWQgcmVmZXJlbmNlcy4KLSAgICB0cnk6Ci0gICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgndGVzdC4nKToKLSAgICAgICAgICAgIGFic3Rlc3QgPSB0ZXN0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIEFsd2F5cyBpbXBvcnQgaXQgZnJvbSB0aGUgdGVzdCBwYWNrYWdlCi0gICAgICAgICAgICBhYnN0ZXN0ID0gJ3Rlc3QuJyArIHRlc3QKLSAgICAgICAgd2l0aCBzYXZlZF90ZXN0X2Vudmlyb25tZW50KHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBwZ289cGdvKSBhcyBlbnZpcm9ubWVudDoKLSAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICAgICAgdGhlX21vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGFic3Rlc3QpCi0gICAgICAgICAgICAjIElmIHRoZSB0ZXN0IGhhcyBhIHRlc3RfbWFpbiwgdGhhdCB3aWxsIHJ1biB0aGUgYXBwcm9wcmlhdGUKLSAgICAgICAgICAgICMgdGVzdHMuICBJZiBub3QsIHVzZSBub3JtYWwgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLgotICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQotICAgICAgICAgICAgaWYgdGVzdF9ydW5uZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBkZWYgdGVzdF9ydW5uZXIoKToKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RzID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhlX21vZHVsZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIGVycm9yIGluIGxvYWRlci5lcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludChlcnJvciwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBpZiBsb2FkZXIuZXJyb3JzOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJlcnJvcnMgd2hpbGUgbG9hZGluZyB0ZXN0cyIpCi0gICAgICAgICAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3RzKQotICAgICAgICAgICAgdGVzdF9ydW5uZXIoKQotICAgICAgICAgICAgaWYgaHVudHJsZWFrczoKLSAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIHRlc3RfcnVubmVyLCBodW50cmxlYWtzKQotICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCi0gICAgZXhjZXB0IHN1cHBvcnQuUmVzb3VyY2VEZW5pZWQgYXMgbXNnOgotICAgICAgICBpZiBub3QgcXVpZXQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXR1cm4gUkVTT1VSQ0VfREVOSUVELCB0ZXN0X3RpbWUKLSAgICBleGNlcHQgdW5pdHRlc3QuU2tpcFRlc3QgYXMgbXNnOgotICAgICAgICBpZiBub3QgcXVpZXQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZykKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICByZXR1cm4gU0tJUFBFRCwgdGVzdF90aW1lCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICByYWlzZQotICAgIGV4Y2VwdCBzdXBwb3J0LlRlc3RGYWlsZWQgYXMgbXNnOgotICAgICAgICBpZiBub3QgcGdvOgotICAgICAgICAgICAgaWYgZGlzcGxheV9mYWlsdXJlOgotICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQiLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKLSAgICBleGNlcHQ6Ci0gICAgICAgIG1zZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKLSAgICAgICAgaWYgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImNyYXNoZWQgLS0iLCBtc2csIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgIGVsc2U6Ci0gICAgICAgIGlmIHJlZmxlYWs6Ci0gICAgICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKLSAgICAgICAgaWYgZW52aXJvbm1lbnQuY2hhbmdlZDoKLSAgICAgICAgICAgIHJldHVybiBFTlZfQ0hBTkdFRCwgdGVzdF90aW1lCi0gICAgICAgIHJldHVybiBQQVNTRUQsIHRlc3RfdGltZQotCi1kZWYgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0bmFtZSwgdmVyYm9zZSk6Ci0gICAgaW1wb3J0IHNodXRpbAotICAgIGltcG9ydCBzdGF0Ci0gICAgaW1wb3J0IGdjCi0KLSAgICAjIEZpcnN0IGtpbGwgYW55IGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gb3BlbiBmaWxlcyBldGMuCi0gICAgIyBUaGlzIGNhbiBhbHNvIGlzc3VlIHNvbWUgUmVzb3VyY2VXYXJuaW5ncyB3aGljaCB3b3VsZCBvdGhlcndpc2UgZ2V0Ci0gICAgIyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSBmb2xsb3dpbmcgdGVzdCBydW4sIGFuZCBwb3NzaWJseSBwcm9kdWNlIGZhaWx1cmVzLgotICAgIGdjLmNvbGxlY3QoKQotCi0gICAgIyBUcnkgdG8gY2xlYW4gdXAganVuayBjb21tb25seSBsZWZ0IGJlaGluZC4gIFdoaWxlIHRlc3RzIHNob3VsZG4ndCBsZWF2ZQotICAgICMgYW55IGZpbGVzIG9yIGRpcmVjdG9yaWVzIGJlaGluZCwgd2hlbiBhIHRlc3QgZmFpbHMgdGhhdCBjYW4gYmUgdGVkaW91cwotICAgICMgZm9yIGl0IHRvIGFycmFuZ2UuICBUaGUgY29uc2VxdWVuY2VzIGNhbiBiZSBlc3BlY2lhbGx5IG5hc3R5IG9uIFdpbmRvd3MsCi0gICAgIyBzaW5jZSBpZiBhIHRlc3QgbGVhdmVzIGEgZmlsZSBvcGVuLCBpdCBjYW5ub3QgYmUgZGVsZXRlZCBieSBuYW1lICh3aGlsZQotICAgICMgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGF0IGhlcmUgZWl0aGVyLCB3ZSBjYW4gZGlzcGxheSB0aGUKLSAgICAjIG5hbWUgb2YgdGhlIG9mZmVuZGluZyB0ZXN0LCB3aGljaCBpcyBhIHJlYWwgaGVscCkuCi0gICAgZm9yIG5hbWUgaW4gKHN1cHBvcnQuVEVTVEZOLAotICAgICAgICAgICAgICAgICAiZGJfaG9tZSIsCi0gICAgICAgICAgICAgICAgKToKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hbWUpOgotICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZGlyZWN0b3J5Iiwgc2h1dGlsLnJtdHJlZQotICAgICAgICBlbGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgotICAgICAgICAgICAga2luZCwgbnVrZXIgPSAiZmlsZSIsIG9zLnVubGluawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoIm9zLnBhdGggc2F5cyAlciBleGlzdHMgYnV0IGlzIG5laXRoZXIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdG9yeSBub3IgZmlsZSIgJSBuYW1lKQotCi0gICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lKSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBpZiB3ZSBoYXZlIGNobW9kLCBmaXggcG9zc2libGUgcGVybWlzc2lvbnMgcHJvYmxlbXMKLSAgICAgICAgICAgICMgdGhhdCBtaWdodCBwcmV2ZW50IGNsZWFudXAKLSAgICAgICAgICAgIGlmIChoYXNhdHRyKG9zLCAnY2htb2QnKSk6Ci0gICAgICAgICAgICAgICAgb3MuY2htb2QobmFtZSwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hHIHwgc3RhdC5TX0lSV1hPKQotICAgICAgICAgICAgbnVrZXIobmFtZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBtc2c6Ci0gICAgICAgICAgICBwcmludCgoIiVyIGxlZnQgYmVoaW5kICVzICVyIGFuZCBpdCBjb3VsZG4ndCBiZSAiCi0gICAgICAgICAgICAgICAgInJlbW92ZWQ6ICVzIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSwgbXNnKSksIGZpbGU9c3lzLnN0ZGVycikKLQotZGVmIGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCBpbmRpcmVjdF90ZXN0LCBodW50cmxlYWtzKToKLSAgICAiIiJSdW4gYSB0ZXN0IG11bHRpcGxlIHRpbWVzLCBsb29raW5nIGZvciByZWZlcmVuY2UgbGVha3MuCi0KLSAgICBSZXR1cm5zOgotICAgICAgICBGYWxzZSBpZiB0aGUgdGVzdCBkaWRuJ3QgbGVhayByZWZlcmVuY2VzOyBUcnVlIGlmIHdlIGRldGVjdGVkIHJlZmxlYWtzLgotICAgICIiIgotICAgICMgVGhpcyBjb2RlIGlzIGhhY2tpc2ggYW5kIGluZWxlZ2FudCwgYnV0IGl0IHNlZW1zIHRvIGRvIHRoZSBqb2IuCi0gICAgaW1wb3J0IGNvcHlyZWcKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi0KLSAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgotICAgICAgICAgICAgICAgICAgICAgICAgIm9mIFB5dGhvbiIpCi0KLSAgICAjIFNhdmUgY3VycmVudCB2YWx1ZXMgZm9yIGRhc2hfUl9jbGVhbnVwKCkgdG8gcmVzdG9yZS4KLSAgICBmcyA9IHdhcm5pbmdzLmZpbHRlcnNbOl0KLSAgICBwcyA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCi0gICAgcGljID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY29weSgpCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgemlwaW1wb3J0Ci0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICB6ZGMgPSBOb25lICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKLSAgICBlbHNlOgotICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCi0gICAgYWJjcyA9IHt9Ci0gICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKLSAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKLSAgICAgICAgICAgIGFiY3Nbb2JqXSA9IG9iai5fYWJjX3JlZ2lzdHJ5LmNvcHkoKQotCi0gICAgbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lID0gaHVudHJsZWFrcwotICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGZuYW1lKQotICAgIHJlcGNvdW50ID0gbndhcm11cCArIG50cmFja2VkCi0gICAgcmNfZGVsdGFzID0gWzBdICogcmVwY291bnQKLSAgICBhbGxvY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAotCi0gICAgcHJpbnQoImJlZ2lubmluZyIsIHJlcGNvdW50LCAicmVwZXRpdGlvbnMiLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgcHJpbnQoKCIxMjM0NTY3ODkwIioocmVwY291bnQvLzEwICsgMSkpWzpyZXBjb3VudF0sIGZpbGU9c3lzLnN0ZGVycikKLSAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICBmb3IgaSBpbiByYW5nZShyZXBjb3VudCk6Ci0gICAgICAgIGluZGlyZWN0X3Rlc3QoKQotICAgICAgICBhbGxvY19hZnRlciwgcmNfYWZ0ZXIgPSBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCcuJykKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIGlmIGkgPj0gbndhcm11cDoKLSAgICAgICAgICAgIHJjX2RlbHRhc1tpXSA9IHJjX2FmdGVyIC0gcmNfYmVmb3JlCi0gICAgICAgICAgICBhbGxvY19kZWx0YXNbaV0gPSBhbGxvY19hZnRlciAtIGFsbG9jX2JlZm9yZQotICAgICAgICBhbGxvY19iZWZvcmUsIHJjX2JlZm9yZSA9IGFsbG9jX2FmdGVyLCByY19hZnRlcgotICAgIHByaW50KGZpbGU9c3lzLnN0ZGVycikKLSAgICAjIFRoZXNlIGNoZWNrZXJzIHJldHVybiBGYWxzZSBvbiBzdWNjZXNzLCBUcnVlIG9uIGZhaWx1cmUKLSAgICBkZWYgY2hlY2tfcmNfZGVsdGFzKGRlbHRhcyk6Ci0gICAgICAgIHJldHVybiBhbnkoZGVsdGFzKQotICAgIGRlZiBjaGVja19hbGxvY19kZWx0YXMoZGVsdGFzKToKLSAgICAgICAgIyBBdCBsZWFzdCAxLzNyZCBvZiAwcwotICAgICAgICBpZiAzICogZGVsdGFzLmNvdW50KDApIDwgbGVuKGRlbHRhcyk6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAjIE5vdGhpbmcgZWxzZSB0aGFuIDFzLCAwcyBhbmQgLTFzCi0gICAgICAgIGlmIG5vdCBzZXQoZGVsdGFzKSA8PSB7MSwwLC0xfToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGZhaWxlZCA9IEZhbHNlCi0gICAgZm9yIGRlbHRhcywgaXRlbV9uYW1lLCBjaGVja2VyIGluIFsKLSAgICAgICAgKHJjX2RlbHRhcywgJ3JlZmVyZW5jZXMnLCBjaGVja19yY19kZWx0YXMpLAotICAgICAgICAoYWxsb2NfZGVsdGFzLCAnbWVtb3J5IGJsb2NrcycsIGNoZWNrX2FsbG9jX2RlbHRhcyldOgotICAgICAgICBpZiBjaGVja2VyKGRlbHRhcyk6Ci0gICAgICAgICAgICBtc2cgPSAnJXMgbGVha2VkICVzICVzLCBzdW09JXMnICUgKAotICAgICAgICAgICAgICAgIHRlc3QsIGRlbHRhc1tud2FybXVwOl0sIGl0ZW1fbmFtZSwgc3VtKGRlbHRhcykpCi0gICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAiYSIpIGFzIHJlZnJlcDoKLSAgICAgICAgICAgICAgICBwcmludChtc2csIGZpbGU9cmVmcmVwKQotICAgICAgICAgICAgICAgIHJlZnJlcC5mbHVzaCgpCi0gICAgICAgICAgICBmYWlsZWQgPSBUcnVlCi0gICAgcmV0dXJuIGZhaWxlZAotCi1kZWYgZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcyk6Ci0gICAgaW1wb3J0IGdjLCBjb3B5cmVnCi0gICAgaW1wb3J0IF9zdHJwdGltZSwgbGluZWNhY2hlCi0gICAgaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QsIG1pbWV0eXBlcywgZG9jdGVzdAotICAgIGltcG9ydCBzdHJ1Y3QsIGZpbGVjbXAsIGNvbGxlY3Rpb25zLmFiYwotICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBfcGF0aF9jcmVhdGVkCi0gICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0Ci0KLSAgICAjIENsZWFyIHRoZSB3YXJuaW5ncyByZWdpc3RyeSwgc28gdGhleSBjYW4gYmUgZGlzcGxheWVkIGFnYWluCi0gICAgZm9yIG1vZCBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKLSAgICAgICAgaWYgaGFzYXR0cihtb2QsICdfX3dhcm5pbmdyZWdpc3RyeV9fJyk6Ci0gICAgICAgICAgICBkZWwgbW9kLl9fd2FybmluZ3JlZ2lzdHJ5X18KLQotICAgICMgUmVzdG9yZSBzb21lIG9yaWdpbmFsIHZhbHVlcy4KLSAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gZnMKLSAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNsZWFyKCkKLSAgICBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLnVwZGF0ZShwcykKLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCi0gICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudXBkYXRlKHBpYykKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB6aXBpbXBvcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAotICAgIGVsc2U6Ci0gICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCi0gICAgICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS51cGRhdGUoemRjKQotCi0gICAgIyBjbGVhciB0eXBlIGNhY2hlCi0gICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKLQotICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106Ci0gICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106Ci0gICAgICAgICAgICBvYmouX2FiY19yZWdpc3RyeSA9IGFiY3MuZ2V0KG9iaiwgV2Vha1NldCgpKS5jb3B5KCkKLSAgICAgICAgICAgIG9iai5fYWJjX2NhY2hlLmNsZWFyKCkKLSAgICAgICAgICAgIG9iai5fYWJjX25lZ2F0aXZlX2NhY2hlLmNsZWFyKCkKLQotICAgICMgRmx1c2ggc3RhbmRhcmQgb3V0cHV0LCBzbyB0aGF0IGJ1ZmZlcmVkIGRhdGEgaXMgc2VudCB0byB0aGUgT1MgYW5kCi0gICAgIyBhc3NvY2lhdGVkIFB5dGhvbiBvYmplY3RzIGFyZSByZWNsYWltZWQuCi0gICAgZm9yIHN0cmVhbSBpbiAoc3lzLnN0ZG91dCwgc3lzLnN0ZGVyciwgc3lzLl9fc3Rkb3V0X18sIHN5cy5fX3N0ZGVycl9fKToKLSAgICAgICAgaWYgc3RyZWFtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc3RyZWFtLmZsdXNoKCkKLQotICAgICMgQ2xlYXIgYXNzb3J0ZWQgbW9kdWxlIGNhY2hlcy4KLSAgICBfcGF0aF9jcmVhdGVkLmNsZWFyKCkKLSAgICByZS5wdXJnZSgpCi0gICAgX3N0cnB0aW1lLl9yZWdleF9jYWNoZS5jbGVhcigpCi0gICAgdXJsbGliLnBhcnNlLmNsZWFyX2NhY2hlKCkKLSAgICB1cmxsaWIucmVxdWVzdC51cmxjbGVhbnVwKCkKLSAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCi0gICAgbWltZXR5cGVzLl9kZWZhdWx0X21pbWVfdHlwZXMoKQotICAgIGZpbGVjbXAuX2NhY2hlLmNsZWFyKCkKLSAgICBzdHJ1Y3QuX2NsZWFyY2FjaGUoKQotICAgIGRvY3Rlc3QubWFzdGVyID0gTm9uZQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IGN0eXBlcwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgIyBEb24ndCB3b3JyeSBhYm91dCByZXNldHRpbmcgdGhlIGNhY2hlIGlmIGN0eXBlcyBpcyBub3Qgc3VwcG9ydGVkCi0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBjdHlwZXMuX3Jlc2V0X2NhY2hlKCkKLQotICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2ggYW5kIHJlYWQgbWVtb3J5IHN0YXRpc3RpY3MgaW1tZWRpYXRlbHkgYWZ0ZXIuCi0gICAgZnVuYzEgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzCi0gICAgZnVuYzIgPSBzeXMuZ2V0dG90YWxyZWZjb3VudAotICAgIGdjLmNvbGxlY3QoKQotICAgIHJldHVybiBmdW5jMSgpLCBmdW5jMigpCi0KLWRlZiB3YXJtX2NhY2hlcygpOgotICAgICMgY2hhciBjYWNoZQotICAgIHMgPSBieXRlcyhyYW5nZSgyNTYpKQotICAgIGZvciBpIGluIHJhbmdlKDI1Nik6Ci0gICAgICAgIHNbaTppKzFdCi0gICAgIyB1bmljb2RlIGNhY2hlCi0gICAgeCA9IFtjaHIoaSkgZm9yIGkgaW4gcmFuZ2UoMjU2KV0KLSAgICAjIGludCBjYWNoZQotICAgIHggPSBsaXN0KHJhbmdlKC01LCAyNTcpKQotCi1kZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKLSAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpcgotCi1kZWYgcmVtb3ZlcHkobmFtZXMpOgotICAgIGlmIG5vdCBuYW1lczoKLSAgICAgICAgcmV0dXJuCi0gICAgZm9yIGlkeCwgbmFtZSBpbiBlbnVtZXJhdGUobmFtZXMpOgotICAgICAgICBiYXNlbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBleHQgPT0gJy5weSc6Ci0gICAgICAgICAgICBuYW1lc1tpZHhdID0gYmFzZW5hbWUKLQotZGVmIGNvdW50KG4sIHdvcmQpOgotICAgIGlmIG4gPT0gMToKLSAgICAgICAgcmV0dXJuICIlZCAlcyIgJSAobiwgd29yZCkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gIiVkICVzcyIgJSAobiwgd29yZCkKLQotZGVmIHByaW50bGlzdCh4LCB3aWR0aD03MCwgaW5kZW50PTQpOgotICAgICIiIlByaW50IHRoZSBlbGVtZW50cyBvZiBpdGVyYWJsZSB4IHRvIHN0ZG91dC4KLQotICAgIE9wdGlvbmFsIGFyZyB3aWR0aCAoZGVmYXVsdCA3MCkgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGguCi0gICAgT3B0aW9uYWwgYXJnIGluZGVudCAoZGVmYXVsdCA0KSBpcyB0aGUgbnVtYmVyIG9mIGJsYW5rcyB3aXRoIHdoaWNoIHRvCi0gICAgYmVnaW4gZWFjaCBsaW5lLgotICAgICIiIgotCi0gICAgZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZmlsbAotICAgIGJsYW5rcyA9ICcgJyAqIGluZGVudAotICAgICMgUHJpbnQgdGhlIHNvcnRlZCBsaXN0OiAneCcgbWF5IGJlIGEgJy0tcmFuZG9tJyBsaXN0IG9yIGEgc2V0KCkKLSAgICBwcmludChmaWxsKCcgJy5qb2luKHN0cihlbHQpIGZvciBlbHQgaW4gc29ydGVkKHgpKSwgd2lkdGgsCi0gICAgICAgICAgICAgICBpbml0aWFsX2luZGVudD1ibGFua3MsIHN1YnNlcXVlbnRfaW5kZW50PWJsYW5rcykpCi0KLQotZGVmIG1haW5faW5fdGVtcF9jd2QoKToKLSAgICAiIiJSdW4gbWFpbigpIGluIGEgdGVtcG9yYXJ5IHdvcmtpbmcgZGlyZWN0b3J5LiIiIgotICAgIGlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWtkaXIoVEVNUERJUikKLSAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICMgRGVmaW5lIGEgd3JpdGFibGUgdGVtcCBkaXIgdGhhdCB3aWxsIGJlIHVzZWQgYXMgY3dkIHdoaWxlIHJ1bm5pbmcKLSAgICAjIHRoZSB0ZXN0cy4gVGhlIG5hbWUgb2YgdGhlIGRpciBpbmNsdWRlcyB0aGUgcGlkIHRvIGFsbG93IHBhcmFsbGVsCi0gICAgIyB0ZXN0aW5nIChzZWUgdGhlIC1qIG9wdGlvbikuCi0gICAgdGVzdF9jd2QgPSAndGVzdF9weXRob25fe30nLmZvcm1hdChvcy5nZXRwaWQoKSkKLSAgICB0ZXN0X2N3ZCA9IG9zLnBhdGguam9pbihURU1QRElSLCB0ZXN0X2N3ZCkKLQotICAgICMgUnVuIHRoZSB0ZXN0cyBpbiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIENXRCB0byBhCi0gICAgIyB0ZW1wb3JhcnkgYW5kIHdyaXRhYmxlIGRpcmVjdG9yeS4gIElmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgotICAgICMgY2hhbmdlIHRoZSBDV0QsIHRoZSBvcmlnaW5hbCBDV0Qgd2lsbCBiZSB1c2VkLiAgVGhlIG9yaWdpbmFsIENXRCBpcwotICAgICMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KLSAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QodGVzdF9jd2QsIHF1aWV0PVRydWUpOgotICAgICAgICBtYWluKCkKLQorZGVmIF9tYWluKCk6CisgICAgZ2xvYmFsIF9fZmlsZV9fCiAKLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgIyBSZW1vdmUgcmVncnRlc3QucHkncyBvd24gZGlyZWN0b3J5IGZyb20gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aC4gRGVzcGl0ZQogICAgICMgdGhlIGVsaW1pbmF0aW9uIG9mIGltcGxpY2l0IHJlbGF0aXZlIGltcG9ydHMsIHRoaXMgaXMgc3RpbGwgbmVlZGVkIHRvCiAgICAgIyBlbnN1cmUgdGhhdCBzdWJtb2R1bGVzIG9mIHRoZSB0ZXN0IHBhY2thZ2UgZG8gbm90IGluYXBwcm9wcmlhdGVseSBhcHBlYXIKICAgICAjIGFzIHRvcC1sZXZlbCBtb2R1bGVzIGV2ZW4gd2hlbiBwZW9wbGUgKG9yIGJ1aWxkYm90cyEpIGludm9rZSByZWdydGVzdC5weQogICAgICMgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZyB0aGUgLW0gc3dpdGNoCiAgICAgbXlkaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmRpcm5hbWUoc3lzLmFyZ3ZbMF0pKSkKLSAgICBpID0gbGVuKHN5cy5wYXRoKQorICAgIGkgPSBsZW4oc3lzLnBhdGgpIC0gMQogICAgIHdoaWxlIGkgPj0gMDoKLSAgICAgICAgaSAtPSAxCiAgICAgICAgIGlmIG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKHN5cy5wYXRoW2ldKSkgPT0gbXlkaXI6CiAgICAgICAgICAgICBkZWwgc3lzLnBhdGhbaV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGkgLT0gMQogCiAgICAgIyBmaW5kdGVzdGRpcigpIGdldHMgdGhlIGRpcm5hbWUgb3V0IG9mIF9fZmlsZV9fLCBzbyB3ZSBoYXZlIHRvIG1ha2UgaXQKICAgICAjIGFic29sdXRlIGJlZm9yZSBjaGFuZ2luZyB0aGUgd29ya2luZyBkaXJlY3RvcnkuCkBAIC0xNjE4LDQgKzQzLDggQEAKICAgICAjIHNhbml0eSBjaGVjawogICAgIGFzc2VydCBfX2ZpbGVfXyA9PSBvcy5wYXRoLmFic3BhdGgoc3lzLmFyZ3ZbMF0pCiAKLSAgICBtYWluX2luX3RlbXBfY3dkKCkKKyAgICBtYWluKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weSBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQppbmRleCA3MmY0ODQ1Li4xZTdhNmY2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkKKysrIGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CkBAIC0zMTgsNyArMzE4LDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQocyksIGlkKHMqMSkpCiAKICAgICBkZWYgdGVzdF9iaWdyZXBlYXQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBzeXMKICAgICAgICAgaWYgc3lzLm1heHNpemUgPD0gMjE0NzQ4MzY0NzoKICAgICAgICAgICAgIHggPSBzZWxmLnR5cGUydGVzdChbMF0pCiAgICAgICAgICAgICB4ICo9IDIqKjE2CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zaWduYWxpbnRlcnByb2N0ZXN0ZXIucHkgYi9MaWIvdGVzdC9zaWduYWxpbnRlcnByb2N0ZXN0ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhZTE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weQpAQCAtMCwwICsxLDg0IEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgU0lHVVNSMUV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitjbGFzcyBJbnRlclByb2Nlc3NTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzID0geydTSUdIVVAnOiAwLCAnU0lHVVNSMSc6IDAsICdTSUdBTFJNJzogMH0KKworICAgIGRlZiBzaWdodXBfaGFuZGxlcihzZWxmLCBzaWdudW0sIGZyYW1lKToKKyAgICAgICAgc2VsZi5nb3Rfc2lnbmFsc1snU0lHSFVQJ10gKz0gMQorCisgICAgZGVmIHNpZ3VzcjFfaGFuZGxlcihzZWxmLCBzaWdudW0sIGZyYW1lKToKKyAgICAgICAgc2VsZi5nb3Rfc2lnbmFsc1snU0lHVVNSMSddICs9IDEKKyAgICAgICAgcmFpc2UgU0lHVVNSMUV4Y2VwdGlvbgorCisgICAgZGVmIHdhaXRfc2lnbmFsKHNlbGYsIGNoaWxkLCBzaWduYW1lLCBleGNfY2xhc3M9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGNoaWxkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgVGhpcyB3YWl0IHNob3VsZCBiZSBpbnRlcnJ1cHRlZCBieSBleGNfY2xhc3MKKyAgICAgICAgICAgICAgICAjIChpZiBzZXQpCisgICAgICAgICAgICAgICAgY2hpbGQud2FpdCgpCisKKyAgICAgICAgICAgIHRpbWVvdXQgPSAxMC4wCisgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUubW9ub3RvbmljKCkgKyB0aW1lb3V0CisKKyAgICAgICAgICAgIHdoaWxlIHRpbWUubW9ub3RvbmljKCkgPCBkZWFkbGluZToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmdvdF9zaWduYWxzW3NpZ25hbWVdOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICBzaWduYWwucGF1c2UoKQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICBpZiBleGNfY2xhc3MgaXMgbm90IE5vbmUgYW5kIGlzaW5zdGFuY2UoZXhjLCBleGNfY2xhc3MpOgorICAgICAgICAgICAgICAgICMgZ290IHRoZSBleHBlY3RlZCBleGNlcHRpb24KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgc2VsZi5mYWlsKCdzaWduYWwgJXMgbm90IHJlY2VpdmVkIGFmdGVyICVzIHNlY29uZHMnCisgICAgICAgICAgICAgICAgICAlIChzaWduYW1lLCB0aW1lb3V0KSkKKworICAgIGRlZiBzdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHNlbGYsIHBpZCwgc2lnbmFtZSk6CisgICAgICAgIGNvZGUgPSAnaW1wb3J0IG9zLCBzaWduYWw7IG9zLmtpbGwoJXMsIHNpZ25hbC4lcyknICUgKHBpZCwgc2lnbmFtZSkKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywgY29kZV0KKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oYXJncykKKworICAgIGRlZiB0ZXN0X2ludGVycHJvY2Vzc19zaWduYWwoc2VsZik6CisgICAgICAgICMgSW5zdGFsbCBoYW5kbGVycy4gVGhpcyBmdW5jdGlvbiBydW5zIGluIGEgc3ViLXByb2Nlc3MsIHNvIHdlCisgICAgICAgICMgZG9uJ3Qgd29ycnkgYWJvdXQgcmUtc2V0dGluZyB0aGUgZGVmYXVsdCBoYW5kbGVycy4KKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHSFVQLCBzZWxmLnNpZ2h1cF9oYW5kbGVyKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBzZWxmLnNpZ3VzcjFfaGFuZGxlcikKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMiwgc2lnbmFsLlNJR19JR04pCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNpZ25hbC5kZWZhdWx0X2ludF9oYW5kbGVyKQorCisgICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KKyAgICAgICAgcGlkID0gc3RyKG9zLmdldHBpZCgpKQorCisgICAgICAgIHdpdGggc2VsZi5zdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHBpZCwgIlNJR0hVUCIpIGFzIGNoaWxkOgorICAgICAgICAgICAgc2VsZi53YWl0X3NpZ25hbChjaGlsZCwgJ1NJR0hVUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nb3Rfc2lnbmFscywgeydTSUdIVVAnOiAxLCAnU0lHVVNSMSc6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTSUdBTFJNJzogMH0pCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHVVNSMSIpIGFzIGNoaWxkOgorICAgICAgICAgICAgc2VsZi53YWl0X3NpZ25hbChjaGlsZCwgJ1NJR1VTUjEnLCBTSUdVU1IxRXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ290X3NpZ25hbHMsIHsnU0lHSFVQJzogMSwgJ1NJR1VTUjEnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0lHQUxSTSc6IDB9KQorCisgICAgICAgIHdpdGggc2VsZi5zdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHBpZCwgIlNJR1VTUjIiKSBhcyBjaGlsZDoKKyAgICAgICAgICAgICMgTm90aGluZyBzaG91bGQgaGFwcGVuOiBTSUdVU1IyIGlzIGlnbm9yZWQKKyAgICAgICAgICAgIGNoaWxkLndhaXQoKQorCisgICAgICAgIHNpZ25hbC5hbGFybSgxKQorICAgICAgICBzZWxmLndhaXRfc2lnbmFsKE5vbmUsICdTSUdBTFJNJywgS2V5Ym9hcmRJbnRlcnJ1cHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nb3Rfc2lnbmFscywgeydTSUdIVVAnOiAxLCAnU0lHVVNSMSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTSUdBTFJNJzogMH0pCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5IGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKaW5kZXggOTA3MjJmNy4uMTcxZTVjZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc29ydHBlcmYucHkKKysrIGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKQEAgLTY0LDcgKzY0LDcgQEAKICAgICBmbHVzaCgpCiAKIGRlZiB0YWJ1bGF0ZShyKToKLSAgICAiIiJUYWJ1bGF0ZSBzb3J0IHNwZWVkIGZvciBsaXN0cyBvZiB2YXJpb3VzIHNpemVzLgorICAgIHIiIiJUYWJ1bGF0ZSBzb3J0IHNwZWVkIGZvciBsaXN0cyBvZiB2YXJpb3VzIHNpemVzLgogCiAgICAgVGhlIHNpemVzIGFyZSAyKippIGZvciBpIGluIHIgKHRoZSBhcmd1bWVudCwgYSBsaXN0KS4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKaW5kZXggMDA3ZjNiYy4uOGI2NmY5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCitpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHVybGxpYi5lcnJvcgogaW1wb3J0IHdhcm5pbmdzCkBAIC04OSw4ICs5MCw5IEBACiAgICAgImJpZ21lbXRlc3QiLCAiYmlnYWRkcnNwYWNldGVzdCIsICJjcHl0aG9uX29ubHkiLCAiZ2V0X2F0dHJpYnV0ZSIsCiAgICAgInJlcXVpcmVzX0lFRUVfNzU0IiwgInNraXBfdW5sZXNzX3hhdHRyIiwgInJlcXVpcmVzX3psaWIiLAogICAgICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAibG9hZF9wYWNrYWdlX3Rlc3RzIiwgImRldGVjdF9hcGlfbWlzbWF0Y2giLAorICAgICJjaGVja19fYWxsX18iLAogICAgICMgc3lzCi0gICAgImlzX2p5dGhvbiIsICJjaGVja19pbXBsX2RldGFpbCIsCisgICAgImlzX2p5dGhvbiIsICJpc19hbmRyb2lkIiwgImNoZWNrX2ltcGxfZGV0YWlsIiwgInVuaXhfc2hlbGwiLAogICAgICMgbmV0d29yawogICAgICJIT1NUIiwgIklQVjZfRU5BQkxFRCIsICJmaW5kX3VudXNlZF9wb3J0IiwgImJpbmRfcG9ydCIsICJvcGVuX3VybHJlc291cmNlIiwKICAgICAjIHByb2Nlc3NlcwpAQCAtMTAzLDcgKzEwNSw3IEBACiAgICAgImNoZWNrX3dhcm5pbmdzIiwgImNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmciLCAiRW52aXJvbm1lbnRWYXJHdWFyZCIsCiAgICAgInJ1bl93aXRoX2xvY2FsZSIsICJzd2FwX2l0ZW0iLAogICAgICJzd2FwX2F0dHIiLCAiTWF0Y2hlciIsICJzZXRfbWVtbGltaXQiLCAiU3VwcHJlc3NDcmFzaFJlcG9ydCIsICJzb3J0ZGljdCIsCi0gICAgInJ1bl93aXRoX3R6IiwKKyAgICAicnVuX3dpdGhfdHoiLCAiUEdPIiwKICAgICBdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CkBAIC03MzMsNiArNzM1LDEzIEBACiAKIGlzX2p5dGhvbiA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykKIAoraXNfYW5kcm9pZCA9IGJvb2woc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdBTkRST0lEX0FQSV9MRVZFTCcpKQorCitpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICB1bml4X3NoZWxsID0gJy9zeXN0ZW0vYmluL3NoJyBpZiBpc19hbmRyb2lkIGVsc2UgJy9iaW4vc2gnCitlbHNlOgorICAgIHVuaXhfc2hlbGwgPSBOb25lCisKICMgRmlsZW5hbWUgdXNlZCBmb3IgdGVzdGluZwogaWYgb3MubmFtZSA9PSAnamF2YSc6CiAgICAgIyBKeXRob24gZGlzYWxsb3dzIEAgaW4gbW9kdWxlIG5hbWVzCkBAIC04MDIsNyArODExLDcgQEAKICMgZW5jb2RlZCBieSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAoaW4gc3RyaWN0IG1vZGUpLiBJdCBjYW4gYmUgTm9uZSBpZiB3ZQogIyBjYW5ub3QgZ2VuZXJhdGUgc3VjaCBmaWxlbmFtZS4KIFRFU1RGTl9VTkVOQ09EQUJMRSA9IE5vbmUKLWlmIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgoraWYgb3MubmFtZSA9PSAnbnQnOgogICAgICMgc2tpcCB3aW4zMnMgKDApIG9yIFdpbmRvd3MgOXgvTUUgKDEpCiAgICAgaWYgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkucGxhdGZvcm0gPj0gMjoKICAgICAgICAgIyBEaWZmZXJlbnQga2luZHMgb2YgY2hhcmFjdGVycyBmcm9tIHZhcmlvdXMgbGFuZ3VhZ2VzIHRvIG1pbmltaXplIHRoZQpAQCAtODY5LDYgKzg3OCwxMCBAQAogIyBTYXZlIHRoZSBpbml0aWFsIGN3ZAogU0FWRURDV0QgPSBvcy5nZXRjd2QoKQogCisjIFNldCBieSBsaWJyZWdydGVzdC9tYWluLnB5IHNvIHdlIGNhbiBza2lwIHRlc3RzIHRoYXQgYXJlIG5vdAorIyB1c2VmdWwgZm9yIFBHTworUEdPID0gRmFsc2UKKwogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiB0ZW1wX2RpcihwYXRoPU5vbmUsIHF1aWV0PUZhbHNlKToKICAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4KQEAgLTkwMSw3ICs5MTQsNyBAQAogICAgICAgICB5aWVsZCBwYXRoCiAgICAgZmluYWxseToKICAgICAgICAgaWYgZGlyX2NyZWF0ZWQ6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisgICAgICAgICAgICBybXRyZWUocGF0aCkKIAogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiBjaGFuZ2VfY3dkKHBhdGgsIHF1aWV0PUZhbHNlKToKQEAgLTIwNzgsNiArMjA5MSwxMSBAQAogICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgogICAgIHJldHVybiBzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogCitkZWYgb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CisgICAgb3B0aW1pemF0aW9uIHNldHRpbmdzIGluIHN5cy5mbGFncy4iIiIKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5fb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKKwogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBTdXBwb3J0IGZvciBhc3NlcnRpb25zIGFib3V0IGxvZ2dpbmcuCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yMTg0LDcgKzIyMDIsNyBAQAogICAgICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCiAgICAgICAgICAgICAgICAgICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgogICAgICAgICAgICAgICAgICAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQotICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQogICAgICAgICAgICAgICAgICAgICBjYW4gPSBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNhbiA9IEZhbHNlCkBAIC0yMjI5LDYgKzIyNDcsNjUgQEAKICAgICByZXR1cm4gbWlzc2luZ19pdGVtcwogCiAKK2RlZiBjaGVja19fYWxsX18odGVzdF9jYXNlLCBtb2R1bGUsIG5hbWVfb2ZfbW9kdWxlPU5vbmUsIGV4dHJhPSgpLAorICAgICAgICAgICAgICAgICBibGFja2xpc3Q9KCkpOgorICAgICIiIkFzc2VydCB0aGF0IHRoZSBfX2FsbF9fIHZhcmlhYmxlIG9mICdtb2R1bGUnIGNvbnRhaW5zIGFsbCBwdWJsaWMgbmFtZXMuCisKKyAgICBUaGUgbW9kdWxlJ3MgcHVibGljIG5hbWVzIChpdHMgQVBJKSBhcmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbgorICAgIHdoZXRoZXIgdGhleSBtYXRjaCB0aGUgcHVibGljIG5hbWUgY29udmVudGlvbiBhbmQgd2VyZSBkZWZpbmVkIGluCisgICAgJ21vZHVsZScuCisKKyAgICBUaGUgJ25hbWVfb2ZfbW9kdWxlJyBhcmd1bWVudCBjYW4gc3BlY2lmeSAoYXMgYSBzdHJpbmcgb3IgdHVwbGUgdGhlcmVvZikKKyAgICB3aGF0IG1vZHVsZShzKSBhbiBBUEkgY291bGQgYmUgZGVmaW5lZCBpbiBpbiBvcmRlciB0byBiZSBkZXRlY3RlZCBhcyBhCisgICAgcHVibGljIEFQSS4gT25lIGNhc2UgZm9yIHRoaXMgaXMgd2hlbiAnbW9kdWxlJyBpbXBvcnRzIHBhcnQgb2YgaXRzIHB1YmxpYworICAgIEFQSSBmcm9tIG90aGVyIG1vZHVsZXMsIHBvc3NpYmx5IGEgQyBiYWNrZW5kIChsaWtlICdjc3YnIGFuZCBpdHMgJ19jc3YnKS4KKworICAgIFRoZSAnZXh0cmEnIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IHdvdWxkbid0IG90aGVyd2lzZSBiZQorICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYXMgInB1YmxpYyIsIGxpa2Ugb2JqZWN0cyB3aXRob3V0IGEgcHJvcGVyCisgICAgJ19fbW9kdWxlX18nIGF0dHJpdWJ1dGUuIElmIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQorICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgb25lcy4KKworICAgIFRoZSAnYmxhY2tsaXN0JyBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCBtdXN0IG5vdCBiZSB0cmVhdGVkCisgICAgYXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBldmVuIHRob3VnaCB0aGVpciBuYW1lcyBpbmRpY2F0ZSBvdGhlcndpc2UuCisKKyAgICBVc2FnZToKKyAgICAgICAgaW1wb3J0IGJhcgorICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgICBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZvbykKKworICAgICAgICBjbGFzcyBPdGhlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBleHRyYSA9IHsnQkFSX0NPTlNUJywgJ0ZPT19DT05TVCd9CisgICAgICAgICAgICAgICAgYmxhY2tsaXN0ID0geydiYXonfSAgIyBVbmRvY3VtZW50ZWQgbmFtZS4KKyAgICAgICAgICAgICAgICAjIGJhciBpbXBvcnRzIHBhcnQgb2YgaXRzIEFQSSBmcm9tIF9iYXIuCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgYmFyLCAoJ2JhcicsICdfYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgICAiIiIKKworICAgIGlmIG5hbWVfb2ZfbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIG5hbWVfb2ZfbW9kdWxlID0gKG1vZHVsZS5fX25hbWVfXywgKQorICAgIGVsaWYgaXNpbnN0YW5jZShuYW1lX29mX21vZHVsZSwgc3RyKToKKyAgICAgICAgbmFtZV9vZl9tb2R1bGUgPSAobmFtZV9vZl9tb2R1bGUsICkKKworICAgIGV4cGVjdGVkID0gc2V0KGV4dHJhKQorCisgICAgZm9yIG5hbWUgaW4gZGlyKG1vZHVsZSk6CisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIG9yIG5hbWUgaW4gYmxhY2tsaXN0OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgb2JqID0gZ2V0YXR0cihtb2R1bGUsIG5hbWUpCisgICAgICAgIGlmIChnZXRhdHRyKG9iaiwgJ19fbW9kdWxlX18nLCBOb25lKSBpbiBuYW1lX29mX21vZHVsZSBvcgorICAgICAgICAgICAgICAgIChub3QgaGFzYXR0cihvYmosICdfX21vZHVsZV9fJykgYW5kCisgICAgICAgICAgICAgICAgIG5vdCBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTW9kdWxlVHlwZSkpKToKKyAgICAgICAgICAgIGV4cGVjdGVkLmFkZChuYW1lKQorICAgIHRlc3RfY2FzZS5hc3NlcnRDb3VudEVxdWFsKG1vZHVsZS5fX2FsbF9fLCBleHBlY3RlZCkKKworCiBjbGFzcyBTdXBwcmVzc0NyYXNoUmVwb3J0OgogICAgICIiIlRyeSB0byBwcmV2ZW50IGEgY3Jhc2ggcmVwb3J0IGZyb20gcG9wcGluZyB1cC4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CmluZGV4IGU5NGQ5ODQuLmFlOTExNGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKQEAgLTM4LDYgKzM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kbmFtZSwgZS5fX2NsYXNzX18uX19uYW1lX18sIGUpKQogICAgICAgICAgICAgaWYgIl9fYnVpbHRpbnNfXyIgaW4gbmFtZXM6CiAgICAgICAgICAgICAgICAgZGVsIG5hbWVzWyJfX2J1aWx0aW5zX18iXQorICAgICAgICAgICAgaWYgJ19fYW5ub3RhdGlvbnNfXycgaW4gbmFtZXM6CisgICAgICAgICAgICAgICAgZGVsIG5hbWVzWydfX2Fubm90YXRpb25zX18nXQogICAgICAgICAgICAga2V5cyA9IHNldChuYW1lcykKICAgICAgICAgICAgIGFsbF9saXN0ID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0uX19hbGxfXwogICAgICAgICAgICAgYWxsX3NldCA9IHNldChhbGxfbGlzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weSBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQppbmRleCA1OGYyZjA0Li5hYjRlMjQ3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CkBAIC00LDcgKzQsNiBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG5sX2xhbmdpbmZvID0gTm9uZQogCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKaW5kZXggYWM2MzI1YS4uYmNiYThjYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKQEAgLTQsNyArNCw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKaW5kZXggYWI1MTQzNy4uMWJkMWY4OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBhdWRpb3Rlc3RzCiBmcm9tIGF1ZGlvb3AgaW1wb3J0IGJ5dGVzd2FwCi1pbXBvcnQgb3MKIGltcG9ydCBpbwogaW1wb3J0IHN5cwogaW1wb3J0IHN0cnVjdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKaW5kZXggNDc3OWExMy4uYmM4MzE2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CkBAIC00NTEyLDYgKzQ1MTIsMjEgQEAKICAgICAgICAgc3RyaW5nID0gIk5hbWVzcGFjZShiYXI9J3NwYW0nLCBmb289NDIpIgogICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCiAKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Vfc3Rhcmt3YXJnc19ub3RpZGVudGlmaWVyKHNlbGYpOgorICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSgqKnsnIic6ICdxdW90ZSd9KQorICAgICAgICBzdHJpbmcgPSAiIiJOYW1lc3BhY2UoKip7JyInOiAncXVvdGUnfSkiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQorCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX2t3YXJnc19hbmRfc3Rhcmt3YXJnc19ub3RpZGVudGlmaWVyKHNlbGYpOgorICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZShhPTEsICoqeyciJzogJ3F1b3RlJ30pCisgICAgICAgIHN0cmluZyA9ICIiIk5hbWVzcGFjZShhPTEsICoqeyciJzogJ3F1b3RlJ30pIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKKworICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9zdGFya3dhcmdzX2lkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCoqeyd2YWxpZCc6IFRydWV9KQorICAgICAgICBzdHJpbmcgPSAiTmFtZXNwYWNlKHZhbGlkPVRydWUpIgorICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCisKICAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnKQogICAgICAgICBzdHJpbmcgPSAoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCAyYTIxZTc0Li4xZjg5NjdjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTcsOCArNyw2IEBACiBpbXBvcnQgd2Vha3JlZgogaW1wb3J0IHBpY2tsZQogaW1wb3J0IG9wZXJhdG9yCi1pbXBvcnQgaW8KLWltcG9ydCBtYXRoCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKQEAgLTMyOCw4ICszMjYsMTkgQEAKICAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoKGl0b3JpZywgb3JpZyksIHByb3RvKQogICAgICAgICAgICAgaXQsIGEgPSBwaWNrbGUubG9hZHMoZCkKICAgICAgICAgICAgIGEuZnJvbWxpc3QoZGF0YTIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXQpLCB0eXBlKGl0b3JpZykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBkYXRhMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIFtdKQorCisgICAgZGVmIHRlc3RfZXhoYXVzdGVkX2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxpc3Qoc2VsZi5leGFtcGxlKSkKKyAgICAgICAgZXhoaXQgPSBpdGVyKGEpCisgICAgICAgIGVtcGl0ID0gaXRlcihhKQorICAgICAgICBmb3IgeCBpbiBleGhpdDogICMgZXhoYXVzdCB0aGUgaXRlcmF0b3IKKyAgICAgICAgICAgIG5leHQoZW1waXQpICAjIG5vdCBleGhhdXN0ZWQKKyAgICAgICAgYS5hcHBlbmQoc2VsZi5vdXRzaWRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZXhoaXQpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGVtcGl0KSwgW3NlbGYub3V0c2lkZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbGlzdChzZWxmLmV4YW1wbGUpICsgW3NlbGYub3V0c2lkZV0pCiAKICAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CiAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCkBAIC0xMDgwLDYgKzEwODksMTIgQEAKICAgICAgICAgYSA9IGFycmF5LmFycmF5KCdCJywgYiIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBhKQogCisgICAgZGVmIHRlc3RfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgYXJyYXkuYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYudHlwZWNvZGUsKSkKKyAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCByZXZlcnNlZCwgYXJyYXkuYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYudHlwZWNvZGUsKSkKKwogY2xhc3MgU3RyaW5nVGVzdChCYXNlVGVzdCk6CiAKICAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3QucHkgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQppbmRleCBkM2U2ZDM1Li44YzYyNDA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQpAQCAtMSw3ICsxLDggQEAKK2ltcG9ydCBhc3QKK2ltcG9ydCBkaXMKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgYXN0CiBpbXBvcnQgd2Vha3JlZgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTExNSw2ICsxMTYsOCBAQAogICAgICMgUEVQIDQ0ODogQWRkaXRpb25hbCBVbnBhY2tpbmcgR2VuZXJhbGl6YXRpb25zCiAgICAgInsqKnsxOjJ9LCAyOjN9IiwKICAgICAieyp7MSwgMn0sIDN9IiwKKyAgICAjIEFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucworICAgICJhc3luYyBkZWYgZigpOlxuIFtpIGFzeW5jIGZvciBiIGluIGNdIiwKIF0KIAogIyBUaGVzZSBhcmUgY29tcGlsZWQgdGhyb3VnaCAic2luZ2xlIgpAQCAtMjM4LDcgKzI0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFzdF90cmVlID0gY29tcGlsZShpLCAiPyIsIGtpbmQsIGFzdC5QeUNGX09OTFlfQVNUKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvX3R1cGxlKGFzdF90cmVlKSwgbykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0VHJ1ZW9yZGVyKGFzdF90cmVlLCAoMCwgMCkpCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJjb21waWxpbmciLCBpbnB1dD1pKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChhY3Rpb249ImNvbXBpbGluZyIsIGlucHV0PWksIGtpbmQ9a2luZCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUoYXN0X3RyZWUsICI/Iiwga2luZCkKIAogICAgIGRlZiB0ZXN0X3NsaWNlKHNlbGYpOgpAQCAtNTQ3LDYgKzU1MCwxNyBAQAogICAgICAgICAgICAgY29tcGlsZShtb2QsICd0ZXN0JywgJ2V4ZWMnKQogICAgICAgICBzZWxmLmFzc2VydEluKCJpbnZhbGlkIGludGVnZXIgdmFsdWU6IE5vbmUiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAorICAgIGRlZiB0ZXN0X2xldmVsX2FzX25vbmUoc2VsZik6CisgICAgICAgIGJvZHkgPSBbYXN0LkltcG9ydEZyb20obW9kdWxlPSd0aW1lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcz1bYXN0LmFsaWFzKG5hbWU9J3NsZWVwJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vPTAsIGNvbF9vZmZzZXQ9MCldCisgICAgICAgIG1vZCA9IGFzdC5Nb2R1bGUoYm9keSkKKyAgICAgICAgY29kZSA9IGNvbXBpbGUobW9kLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzbGVlcCcsIG5zKQorCiAKIGNsYXNzIEFTVFZhbGlkYXRvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNzQyLDcgKzc1Niw3IEBACiAKICAgICBkZWYgdGVzdF9pbXBvcnRmcm9tKHNlbGYpOgogICAgICAgICBpbXAgPSBhc3QuSW1wb3J0RnJvbShOb25lLCBbYXN0LmFsaWFzKCJ4IiwgTm9uZSldLCAtNDIpCi0gICAgICAgIHNlbGYuc3RtdChpbXAsICJsZXZlbCBsZXNzIHRoYW4gLTEiKQorICAgICAgICBzZWxmLnN0bXQoaW1wLCAiTmVnYXRpdmUgSW1wb3J0RnJvbSBsZXZlbCIpCiAgICAgICAgIHNlbGYuc3RtdChhc3QuSW1wb3J0RnJvbShOb25lLCBbXSwgMCksICJlbXB0eSBuYW1lcyBvbiBJbXBvcnRGcm9tIikKIAogICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKQEAgLTc5NywyMSArODExLDIxIEBACiAgICAgZGVmIF9jaGVja19jb21wcmVoZW5zaW9uKHNlbGYsIGZhYyk6CiAgICAgICAgIHNlbGYuZXhwcihmYWMoW10pLCAiY29tcHJlaGVuc2lvbiB3aXRoIG5vIGdlbmVyYXRvcnMiKQogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCiAgICAgICAgIHkgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCi0gICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbTm9uZV0pCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbTm9uZV0sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIk5vbmUgZGlzYWxsb3dlZCIpCi0gICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAKICAgICBkZWYgX3NpbXBsZV9jb21wKHNlbGYsIGZhYyk6CiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtnXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIGRlZiB3cmFwKGdlbnMpOgpAQCAtODI5LDcgKzg0Myw3IEBACiAKICAgICBkZWYgdGVzdF9kaWN0Y29tcChzZWxmKToKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgYyA9IGFzdC5EaWN0Q29tcChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpLCBbZ10pCiAgICAgICAgIHNlbGYuZXhwcihjLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCkBAIC05MzMsNiArOTQ3LDEyNSBAQAogICAgICAgICAgICAgY29tcGlsZShtb2QsIGZuLCAiZXhlYyIpCiAKIAorY2xhc3MgQ29uc3RhbnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb24gdGhlIGFzdC5Db25zdGFudCBub2RlIHR5cGUuIiIiCisKKyAgICBkZWYgY29tcGlsZV9jb25zdGFudChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoInggPSAxMjMiKQorCisgICAgICAgIG5vZGUgPSB0cmVlLmJvZHlbMF0udmFsdWUKKyAgICAgICAgbmV3X25vZGUgPSBhc3QuQ29uc3RhbnQodmFsdWU9dmFsdWUpCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19ub2RlLCBub2RlKQorICAgICAgICB0cmVlLmJvZHlbMF0udmFsdWUgPSBuZXdfbm9kZQorCisgICAgICAgIGNvZGUgPSBjb21waWxlKHRyZWUsICI8c3RyaW5nPiIsICJleGVjIikKKworICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbnMpCisgICAgICAgIHJldHVybiBuc1sneCddCisKKyAgICBkZWYgdGVzdF92YWxpZGF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmNvbXBpbGVfY29uc3RhbnQoWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYW4gaW52YWxpZCB0eXBlIGluIENvbnN0YW50OiBsaXN0IikKKworICAgIGRlZiB0ZXN0X3NpbmdsZXRvbnMoc2VsZik6CisgICAgICAgIGZvciBjb25zdCBpbiAoTm9uZSwgRmFsc2UsIFRydWUsIEVsbGlwc2lzLCBiJycsIGZyb3plbnNldCgpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvbnN0PWNvbnN0KToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuY29tcGlsZV9jb25zdGFudChjb25zdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHZhbHVlLCBjb25zdCkKKworICAgIGRlZiB0ZXN0X3ZhbHVlcyhzZWxmKToKKyAgICAgICAgbmVzdGVkX3R1cGxlID0gKDEsKQorICAgICAgICBuZXN0ZWRfZnJvemVuc2V0ID0gZnJvemVuc2V0KHsxfSkKKyAgICAgICAgZm9yIGxldmVsIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgbmVzdGVkX3R1cGxlID0gKG5lc3RlZF90dXBsZSwgMikKKyAgICAgICAgICAgIG5lc3RlZF9mcm96ZW5zZXQgPSBmcm96ZW5zZXQoe25lc3RlZF9mcm96ZW5zZXQsIDJ9KQorICAgICAgICB2YWx1ZXMgPSAoMTIzLCAxMjMuMCwgMTIzaiwKKyAgICAgICAgICAgICAgICAgICJ1bmljb2RlIiwgYidieXRlcycsCisgICAgICAgICAgICAgICAgICB0dXBsZSgidHVwbGUiKSwgZnJvemVuc2V0KCJmcm96ZW5zZXQiKSwKKyAgICAgICAgICAgICAgICAgIG5lc3RlZF90dXBsZSwgbmVzdGVkX2Zyb3plbnNldCkKKyAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZhbHVlPXZhbHVlKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmNvbXBpbGVfY29uc3RhbnQodmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIHZhbHVlKQorCisgICAgZGVmIHRlc3RfYXNzaWduX3RvX2NvbnN0YW50KHNlbGYpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCJ4ID0gMSIpCisKKyAgICAgICAgdGFyZ2V0ID0gdHJlZS5ib2R5WzBdLnRhcmdldHNbMF0KKyAgICAgICAgbmV3X3RhcmdldCA9IGFzdC5Db25zdGFudCh2YWx1ZT0xKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfdGFyZ2V0LCB0YXJnZXQpCisgICAgICAgIHRyZWUuYm9keVswXS50YXJnZXRzWzBdID0gbmV3X3RhcmdldAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjb21waWxlKHRyZWUsICJzdHJpbmciLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24gd2hpY2ggY2FuJ3QgYmUgYXNzaWduZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBpbiBTdG9yZSBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2dldF9kb2NzdHJpbmcoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoIidkb2NzdHJpbmcnXG54ID0gMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmdldF9kb2NzdHJpbmcodHJlZSksICdkb2NzdHJpbmcnKQorCisgICAgICAgIHRyZWUuYm9keVswXS52YWx1ZSA9IGFzdC5Db25zdGFudCh2YWx1ZT0nY29uc3RhbnQgZG9jc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZ2V0X2RvY3N0cmluZyh0cmVlKSwgJ2NvbnN0YW50IGRvY3N0cmluZycpCisKKyAgICBkZWYgZ2V0X2xvYWRfY29uc3Qoc2VsZiwgdHJlZSk6CisgICAgICAgICMgQ29tcGlsZSB0byBieXRlY29kZSwgZGlzYXNzZW1ibGUgYW5kIGdldCBwYXJhbWV0ZXIgb2YgTE9BRF9DT05TVAorICAgICAgICAjIGluc3RydWN0aW9ucworICAgICAgICBjbyA9IGNvbXBpbGUodHJlZSwgJzxzdHJpbmc+JywgJ2V4ZWMnKQorICAgICAgICBjb25zdHMgPSBbXQorICAgICAgICBmb3IgaW5zdHIgaW4gZGlzLmdldF9pbnN0cnVjdGlvbnMoY28pOgorICAgICAgICAgICAgaWYgaW5zdHIub3BuYW1lID09ICdMT0FEX0NPTlNUJzoKKyAgICAgICAgICAgICAgICBjb25zdHMuYXBwZW5kKGluc3RyLmFyZ3ZhbCkKKyAgICAgICAgcmV0dXJuIGNvbnN0cworCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfbG9hZF9jb25zdChzZWxmKToKKyAgICAgICAgY29uc3RzID0gW05vbmUsCisgICAgICAgICAgICAgICAgICBUcnVlLCBGYWxzZSwKKyAgICAgICAgICAgICAgICAgIDEyNCwKKyAgICAgICAgICAgICAgICAgIDIuMCwKKyAgICAgICAgICAgICAgICAgIDNqLAorICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLAorICAgICAgICAgICAgICAgICAgYidieXRlcycsCisgICAgICAgICAgICAgICAgICAoMSwgMiwgMyldCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbihbJ3g9eyFyfScuZm9ybWF0KGNvbnN0KSBmb3IgY29uc3QgaW4gY29uc3RzXSkKKyAgICAgICAgY29kZSArPSAnXG54ID0gLi4uJworICAgICAgICBjb25zdHMuZXh0ZW5kKChFbGxpcHNpcywgTm9uZSkpCisKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2xvYWRfY29uc3QodHJlZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzKQorCisgICAgICAgICMgUmVwbGFjZSBleHByZXNzaW9uIG5vZGVzIHdpdGggY29uc3RhbnRzCisgICAgICAgIGZvciBhc3NpZ24sIGNvbnN0IGluIHppcCh0cmVlLmJvZHksIGNvbnN0cyk6CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhc3NpZ24sIGFzdC5Bc3NpZ24pLCBhc3QuZHVtcChhc3NpZ24pCisgICAgICAgICAgICBuZXdfbm9kZSA9IGFzdC5Db25zdGFudCh2YWx1ZT1jb25zdCkKKyAgICAgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19ub2RlLCBhc3NpZ24udmFsdWUpCisgICAgICAgICAgICBhc3NpZ24udmFsdWUgPSBuZXdfbm9kZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfbG9hZF9jb25zdCh0cmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMpCisKKyAgICBkZWYgdGVzdF9saXRlcmFsX2V2YWwoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoIjEgKyAyIikKKyAgICAgICAgYmlub3AgPSB0cmVlLmJvZHlbMF0udmFsdWUKKworICAgICAgICBuZXdfbGVmdCA9IGFzdC5Db25zdGFudCh2YWx1ZT0xMCkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X2xlZnQsIGJpbm9wLmxlZnQpCisgICAgICAgIGJpbm9wLmxlZnQgPSBuZXdfbGVmdAorCisgICAgICAgIG5ld19yaWdodCA9IGFzdC5Db25zdGFudCh2YWx1ZT0yMCkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X3JpZ2h0LCBiaW5vcC5yaWdodCkKKyAgICAgICAgYmlub3AucmlnaHQgPSBuZXdfcmlnaHQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoYmlub3ApLCAzMCkKKworCiBkZWYgbWFpbigpOgogICAgIGlmIF9fbmFtZV9fICE9ICdfX21haW5fXyc6CiAgICAgICAgIHJldHVybgpAQCAtOTQwLDggKzEwNzMsOSBAQAogICAgICAgICBmb3Igc3RhdGVtZW50cywga2luZCBpbiAoKGV4ZWNfdGVzdHMsICJleGVjIiksIChzaW5nbGVfdGVzdHMsICJzaW5nbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmFsX3Rlc3RzLCAiZXZhbCIpKToKICAgICAgICAgICAgIHByaW50KGtpbmQrIl9yZXN1bHRzID0gWyIpCi0gICAgICAgICAgICBmb3IgcyBpbiBzdGF0ZW1lbnRzOgotICAgICAgICAgICAgICAgIHByaW50KHJlcHIodG9fdHVwbGUoY29tcGlsZShzLCAiPyIsIGtpbmQsIDB4NDAwKSkpKyIsIikKKyAgICAgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gc3RhdGVtZW50czoKKyAgICAgICAgICAgICAgICB0cmVlID0gYXN0LnBhcnNlKHN0YXRlbWVudCwgIj8iLCBraW5kKQorICAgICAgICAgICAgICAgIHByaW50KCIlciwiICUgKHRvX3R1cGxlKHRyZWUpLCkpCiAgICAgICAgICAgICBwcmludCgiXSIpCiAgICAgICAgIHByaW50KCJtYWluKCkiKQogICAgICAgICByYWlzZSBTeXN0ZW1FeGl0CkBAIC05NzksMTkgKzExMTMsMjAgQEAKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdCcmVhaycsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICd2JywgKCdMb2FkJywpKSwgWygnQ29udGludWUnLCAoMSwgMTEpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnVHVwbGUnLCAoMSwgNCksIFsoJ05hbWUnLCAoMSwgNCksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA2KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTEpLCAnYycsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgMTQpKV0sIFtdKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMiksIFsoJ05hbWUnLCAoMSwgMTIpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyMCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDIsIDQpLCAoJ1R1cGxlJywgKDMsIDQpLCBbKCdOYW1lJywgKDMsIDQpLCAnQWEnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoNSwgNyksICdCYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICg4LCA0KSwgWygnTmFtZScsICg4LCA0KSwgJ0FhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgNCksICdCYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgMTApLCAnQ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDExKSwgJ3cnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE2KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSksICgnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAyMiksICdtJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyNyksICdwJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAzMiksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnRXhwcicsICgyLCAxKSwgKCdBd2FpdCcsICgyLCAxKSwgKCdDYWxsJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgNyksICdzb21ldGhpbmcnLCAoJ0xvYWQnLCkpLCBbXSwgW10pKSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnQXN5bmNGb3InLCAoMiwgNyksICgnTmFtZScsICgyLCAxMSksICdlJywgKCdTdG9yZScsKSksICgnTmFtZScsICgyLCAxNiksICdpJywgKCdMb2FkJywpKSwgWygnRXhwcicsICgyLCAxOSksICgnTnVtJywgKDIsIDE5KSwgMSkpXSwgWygnRXhwcicsICgzLCA3KSwgKCdOdW0nLCAoMywgNyksIDIpKV0pXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jV2l0aCcsICgyLCA3KSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMiwgMTIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgyLCAxNyksICdiJywgKCdTdG9yZScsKSkpXSwgWygnRXhwcicsICgyLCAyMCksICgnTnVtJywgKDIsIDIwKSwgMSkpXSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0JywgKDEsIDApLCBbTm9uZSwgKCdOdW0nLCAoMSwgMTApLCAyKV0sIFsoJ0RpY3QnLCAoMSwgMyksIFsoJ051bScsICgxLCA0KSwgMSldLCBbKCdOdW0nLCAoMSwgNiksIDIpXSksICgnTnVtJywgKDEsIDEyKSwgMyldKSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXQnLCAoMSwgMCksIFsoJ1N0YXJyZWQnLCAoMSwgMSksICgnU2V0JywgKDEsIDIpLCBbKCdOdW0nLCAoMSwgMyksIDEpLCAoJ051bScsICgxLCA2KSwgMildKSwgKCdMb2FkJywpKSwgKCdOdW0nLCAoMSwgMTApLCAzKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdFeHByJywgKDIsIDEpLCAoJ0xpc3RDb21wJywgKDIsIDIpLCAoJ05hbWUnLCAoMiwgMiksICdpJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgyLCAxNCksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgyLCAxOSksICdjJywgKCdMb2FkJywpKSwgW10sIDEpXSkpXSwgW10sIE5vbmUpXSksCiBdCiBzaW5nbGVfcmVzdWx0cyA9IFsKICgnSW50ZXJhY3RpdmUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0Jpbk9wJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksICgnQWRkJywpLCAoJ051bScsICgxLCAyKSwgMikpKV0pLApAQCAtMTAwNiw4ICsxMTQxLDggQEAKICgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgW10sIFtdKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1NldCcsICgxLCAwKSwgWygnTmFtZUNvbnN0YW50JywgKDEsIDEpLCBOb25lKV0pKSwKICgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgWygnTnVtJywgKDIsIDYpLCAxKV0sIFsoJ051bScsICg0LCAxMCksIDIpXSkpLAotKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAotKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKKygnRXhwcmVzc2lvbicsICgnTGlzdENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldLCAwKV0pKSwKKygnRXhwcmVzc2lvbicsICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSwgMCldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0NvbXBhcmUnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgWygnTHQnLCksICgnTHQnLCldLCBbKCdOdW0nLCAoMSwgNCksIDIpLCAoJ051bScsICgxLCA4KSwgMyldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2YnLCAoJ0xvYWQnLCkpLCBbKCdOdW0nLCAoMSwgMiksIDEpLCAoJ051bScsICgxLCA0KSwgMiksICgnU3RhcnJlZCcsICgxLCAxMCksICgnTmFtZScsICgxLCAxMSksICdkJywgKCdMb2FkJywpKSwgKCdMb2FkJywpKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSksICgna2V5d29yZCcsIE5vbmUsICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ051bScsICgxLCAwKSwgMTApKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNGZiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5CkBAIC0wLDAgKzEsODI1IEBACitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQorYXN5bmNpbyA9IGltcG9ydF9tb2R1bGUoImFzeW5jaW8iKQorCisKK2NsYXNzIEF3YWl0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK0B0eXBlcy5jb3JvdXRpbmUKK2RlZiBhd2FpdGFibGUoKiwgdGhyb3c9RmFsc2UpOgorICAgIGlmIHRocm93OgorICAgICAgICB5aWVsZCAoJ3Rocm93JywpCisgICAgZWxzZToKKyAgICAgICAgeWllbGQgKCdyZXN1bHQnLCkKKworCitkZWYgcnVuX3VudGlsX2NvbXBsZXRlKGNvcm8pOgorICAgIGV4YyA9IEZhbHNlCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZXhjOgorICAgICAgICAgICAgICAgIGV4YyA9IEZhbHNlCisgICAgICAgICAgICAgICAgZnV0ID0gY29yby50aHJvdyhBd2FpdEV4Y2VwdGlvbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnV0ID0gY29yby5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0KKworICAgICAgICBpZiBmdXQgPT0gKCd0aHJvdycsKToKKyAgICAgICAgICAgIGV4YyA9IFRydWUKKworCitkZWYgdG9fbGlzdChnZW4pOgorICAgIGFzeW5jIGRlZiBpdGVyYXRlKCk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGFzeW5jIGZvciBpIGluIGdlbjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoaSkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgcmV0dXJuIHJ1bl91bnRpbF9jb21wbGV0ZShpdGVyYXRlKCkpCisKKworY2xhc3MgQXN5bmNHZW5TeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDEoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkIGZyb20gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3lpZWxkIGZyb20uKmluc2lkZSBhc3luYycpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAyKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAneWllbGQgZnJvbS4qaW5zaWRlIGFzeW5jJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDMoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzA0KHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDUoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBpZiAwOgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworCitjbGFzcyBBc3luY0dlblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGNvbXBhcmVfZ2VuZXJhdG9ycyhzZWxmLCBzeW5jX2dlbiwgYXN5bmNfZ2VuKToKKyAgICAgICAgZGVmIHN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnLl9fbmV4dF9fKCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ1NUT1AnKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHR5cGUoZXgpKSkKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBkZWYgYXN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZy5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnU1RPUCcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4LmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGV4LmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdFTVBUWSBTdG9wSXRlcmF0aW9uJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIodHlwZShleCkpKQorICAgICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIHN5bmNfZ2VuX3Jlc3VsdCA9IHN5bmNfaXRlcmF0ZShzeW5jX2dlbikKKyAgICAgICAgYXN5bmNfZ2VuX3Jlc3VsdCA9IGFzeW5jX2l0ZXJhdGUoYXN5bmNfZ2VuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5bmNfZ2VuX3Jlc3VsdCwgYXN5bmNfZ2VuX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl9yZXN1bHQKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9pdGVyYXRpb25fMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICBhID0geWllbGQgMTIzCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGEsIE5vbmUpCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNDU2CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNzg5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b19saXN0KGdlbigpKSwgWzEyMywgNDU2LCA3ODldKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2l0ZXJhdGlvbl8wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEFzeW5jSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSh0aHJvdz1UcnVlKQorICAgICAgICAgICAgeWllbGQgNDU2CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBd2FpdEV4Y2VwdGlvbik6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3luYyBnZW5lcmF0b3IuKlN0b3BBc3luY0l0ZXJhdGlvbicpOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXN5bmMgZ2VuZXJhdG9yLipTdG9wSXRlcmF0aW9uJyk6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNyhzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA4KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA5KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzEwKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tTm9uZSB2YWx1ZSAuKiBhc3luYyBnZW5lcmF0b3IiKToKKyAgICAgICAgICAgIGdlbigpLl9fYW5leHRfXygpLnNlbmQoMTAwKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FwaV8wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisKKyAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fbmFtZV9fLCAnZ2VuJykKKyAgICAgICAgZy5fX25hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX25hbWVfXywgJzEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbignLmdlbicsIGcuX19xdWFsbmFtZV9fKQorICAgICAgICBnLl9fcXVhbG5hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX3F1YWxuYW1lX18sICcxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuYWdfYXdhaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShnLmFnX2ZyYW1lLCB0eXBlcy5GcmFtZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZy5hZ19ydW5uaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZy5hZ19jb2RlLCB0eXBlcy5Db2RlVHlwZSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShnLmFjbG9zZSgpKSkKKworCitjbGFzcyBBc3luY0dlbkFzeW5jaW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCisgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AoTm9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wID0gTm9uZQorCisgICAgYXN5bmMgZGVmIHRvX2xpc3Qoc2VsZiwgZ2VuKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgYXN5bmMgZm9yIGkgaW4gZ2VuOgorICAgICAgICAgICAgcmVzLmFwcGVuZChpKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICByZXMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMyhzZWxmKToKKyAgICAgICAgbG9vcCA9IHNlbGYubG9vcAorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKworICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoR2VuKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfMDQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAxMDAwCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgeWllbGQgNAorCisgICAgICAgIGFzeW5jIGRlZiBydW4xKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDQpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4yKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnRocm93KFplcm9EaXZpc2lvbkVycm9yKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMDAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgNCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuMSgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bjIoKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA1KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgdiA9IHlpZWxkIHYKKyAgICAgICAgICAgIHlpZWxkIHYgKiAxMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKDEwKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnNlbmQoMTIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCAxMgorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdlbiA9IGZvbygpCisgICAgICAgICAgICBpdCA9IGdlbi5fX2FpdGVyX18oKQorICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImFzeW5jIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDcoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSArPSAxCisgICAgICAgICAgICBET05FICs9IDEwMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hY2xvc2VfMDgoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBmdXQKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FICs9IDEKKyAgICAgICAgICAgIERPTkUgKz0gMTAwMAorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGdlbiA9IGZvbygpCisgICAgICAgICAgICBpdCA9IGdlbi5fX2FpdGVyX18oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMSkKKyAgICAgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2soaXQuX19hbmV4dF9fKCkpCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisgICAgICAgICAgICByZXR1cm4gdAorCisgICAgICAgIHQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICAgICAgIyBTaWxlbmNlIFJlc291cmNlV2FybmluZ3MKKyAgICAgICAgZnV0LmNhbmNlbCgpCisgICAgICAgIHQuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2djX2FjbG9zZV8wOShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIGF3YWl0IGcuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGF3YWl0IGcuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIGRlbCBnCisKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICAjIFNhbml0eSBjaGVjazoKKyAgICAgICAgZGVmIHNnZW4oKToKKyAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICBzZyA9IHNnZW4oKQorICAgICAgICB2ID0gc2cuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgIHYgPSBzZy5zZW5kKDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDApCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKDEwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hc2VuZChOb25lKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FzZW5kXzAyKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBzbGVlcF9uX2NyYXNoKGRlbGF5KToKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMyhzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IHNsZWVwX25fY3Jhc2goMC4wMSkKKyAgICAgICAgICAgICAgICBET05FICs9IDEwMDAKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgYXdhaXQgZy5hc2VuZCgxMDApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd18wMShzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBjbGFzcyBGb29FcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgU2FuaXR5IGNoZWNrOgorICAgICAgICBkZWYgc2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgIHNnID0gc2dlbigpCisgICAgICAgIHYgPSBzZy5zZW5kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgdiA9IHNnLnRocm93KEZvb0VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CisgICAgICAgICAgICBzZy5zZW5kKE5vbmUpCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICAgICAgdiA9IDEwMDAKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgIyByZXR1cm4KKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmF0aHJvdyhGb29FcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwMCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfMDIoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgY2xhc3MgRm9vRXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBmdXQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoYXN5bmNpby5zbGVlcChkZWxheSwgbG9vcD1zZWxmLmxvb3ApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfbGF0ZXIoZGVsYXkgLyAyLCBsYW1iZGE6IGZ1dC5jYW5jZWwoKSkKKyAgICAgICAgICAgIHJldHVybiBhd2FpdCBmdXQKKworICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBub25sb2NhbCBET05FCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICMgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXdhaXQgZy5hdGhyb3coRm9vRXIpCisgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYW5jZWxsZWRFcnJvciB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRE9ORSwgMSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX3NodXRkb3duXzAxKHNlbGYpOgorICAgICAgICBmaW5hbGl6ZWQgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXRlcih0aW1lb3V0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGZpbmFsaXplZAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGZpbmFsaXplZCArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXQoKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBfIGluIHdhaXRlcigxKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdDEgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICB0MiA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayh3YWl0KCkpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmFsaXplZCwgMikKKworICAgICAgICAjIFNpbGVuY2Ugd2FybmluZ3MKKyAgICAgICAgdDEuY2FuY2VsKCkKKyAgICAgICAgdDIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fc2h1dGRvd25fMDIoc2VsZik6CisgICAgICAgIGxvZ2dlZCA9IDAKKworICAgICAgICBkZWYgbG9nZ2VyKGxvb3AsIGNvbnRleHQpOgorICAgICAgICAgICAgbm9ubG9jYWwgbG9nZ2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhc3luY2dlbicsIGNvbnRleHQpCisgICAgICAgICAgICBleHBlY3RlZCA9ICdhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xvc2luZyBvZiBhc3luY2hyb25vdXMnCisgICAgICAgICAgICBpZiBleHBlY3RlZCBpbiBjb250ZXh0WydtZXNzYWdlJ106CisgICAgICAgICAgICAgICAgbG9nZ2VkICs9IDEKKworICAgICAgICBhc3luYyBkZWYgd2FpdGVyKHRpbWVvdXQpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0KCk6CisgICAgICAgICAgICBhc3luYyBmb3IgXyBpbiB3YWl0ZXIoMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgc2VsZi5sb29wLnNldF9leGNlcHRpb25faGFuZGxlcihsb2dnZXIpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2VkLCAxKQorCisgICAgICAgICMgU2lsZW5jZSB3YXJuaW5ncworICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CmluZGV4IDNhMzNmYzguLjBlYmE3NmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QubW9jawogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTI5NywzNyArMjk2LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luY2hhdC5maW5kX3ByZWZpeF9hdF9lbmQoInF3ZXJ0eWRramYiLCAiXHJcbiIpLCAwKQogCiAKLWNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206Ci0gICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgZi5wdXNoKDcpCi0gICAgICAgIGYucHVzaChiJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIDcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIGInYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5pc19lbXB0eSgpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYidhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuaXNfZW1wdHkoKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMCwgTm9uZSkpCi0KLSAgICBkZWYgdGVzdF9naXZlbl9saXN0KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKLSAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIGIneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCAxNykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKLQotCiBjbGFzcyBUZXN0Tm90Q29ubmVjdGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kaXNhbGxvd19uZWdhdGl2ZV90ZXJtaW5hdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTI1OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2Z1dHVyZXMucHkKaW5kZXggZDIwZWI2OC4uMmMxN2VmMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9mdXR1cmVzLnB5CkBAIC05LDYgKzksNyBAQAogCiBpbXBvcnQgYXN5bmNpbwogZnJvbSBhc3luY2lvIGltcG9ydCB0ZXN0X3V0aWxzCitmcm9tIGFzeW5jaW8gaW1wb3J0IGZ1dHVyZXMKIHRyeToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTkzLDE0ICs5NCwxNyBAQAogICAgICAgICBhc3NlcnQgZyBpcyBmCiAKIAotY2xhc3MgRnV0dXJlVGVzdHModGVzdF91dGlscy5UZXN0Q2FzZSk6CitjbGFzcyBCYXNlRnV0dXJlVGVzdHM6CisKKyAgICBkZWYgX25ld19mdXR1cmUoc2VsZiwgbG9vcD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5sb29wLmNsb3NlKQogCiAgICAgZGVmIHRlc3RfaW5pdGlhbF9zdGF0ZShzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNhbmNlbGxlZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuZG9uZSgpKQogICAgICAgICBmLmNhbmNlbCgpCkBAIC0xMDgsMTUgKzExMiwxNSBAQAogCiAgICAgZGVmIHRlc3RfaW5pdF9jb25zdHJ1Y3Rvcl9kZWZhdWx0X2xvb3Aoc2VsZik6CiAgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3Aoc2VsZi5sb29wKQotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUoKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZi5fbG9vcCwgc2VsZi5sb29wKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3JfcG9zaXRpb25hbChzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgRnV0dXJlIGRvZXNuJ3QgYWNjZXB0IGEgcG9zaXRpb25hbCBhcmd1bWVudAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFzeW5jaW8uRnV0dXJlLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLl9uZXdfZnV0dXJlLCA0MikKIAogICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuY2FuY2VsKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNhbmNlbGxlZCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5kb25lKCkpCkBAIC0xMjcsNyArMTMxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNhbmNlbCgpKQogCiAgICAgZGVmIHRlc3RfcmVzdWx0KHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkludmFsaWRTdGF0ZUVycm9yLCBmLnJlc3VsdCkKIAogICAgICAgICBmLnNldF9yZXN1bHQoNDIpCkBAIC0xNDEsNyArMTQ1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbihzZWxmKToKICAgICAgICAgZXhjID0gUnVudGltZUVycm9yKCkKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5JbnZhbGlkU3RhdGVFcnJvciwgZi5leGNlcHRpb24pCiAKICAgICAgICAgIyBTdG9wSXRlcmF0aW9uIGNhbm5vdCBiZSByYWlzZWQgaW50byBhIEZ1dHVyZSAtIENQeXRob24gaXNzdWUyNjIyMQpAQCAtMTU4LDEyICsxNjIsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNhbmNlbCgpKQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9uX2NsYXNzKHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmLnNldF9leGNlcHRpb24oUnVudGltZUVycm9yKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZi5leGNlcHRpb24oKSwgUnVudGltZUVycm9yKQogCiAgICAgZGVmIHRlc3RfeWllbGRfZnJvbV90d2ljZShzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKIAogICAgICAgICBkZWYgZml4dHVyZSgpOgogICAgICAgICAgICAgeWllbGQgJ0EnCkBAIC0xODIsNyArMTg2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZV9yZXByKHNlbGYpOgogICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKFRydWUpCi0gICAgICAgIGZfcGVuZGluZ19kZWJ1ZyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3BlbmRpbmdfZGVidWcgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmcmFtZSA9IGZfcGVuZGluZ19kZWJ1Zy5fc291cmNlX3RyYWNlYmFja1stMV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcGVuZGluZ19kZWJ1ZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxGdXR1cmUgcGVuZGluZyBjcmVhdGVkIGF0ICVzOiVzPicKQEAgLTE5MCwyMSArMTk0LDIxIEBACiAgICAgICAgIGZfcGVuZGluZ19kZWJ1Zy5jYW5jZWwoKQogCiAgICAgICAgIHNlbGYubG9vcC5zZXRfZGVidWcoRmFsc2UpCi0gICAgICAgIGZfcGVuZGluZyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3BlbmRpbmcgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9wZW5kaW5nKSwgJzxGdXR1cmUgcGVuZGluZz4nKQogICAgICAgICBmX3BlbmRpbmcuY2FuY2VsKCkKIAotICAgICAgICBmX2NhbmNlbGxlZCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX2NhbmNlbGxlZCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfY2FuY2VsbGVkLmNhbmNlbCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX2NhbmNlbGxlZCksICc8RnV0dXJlIGNhbmNlbGxlZD4nKQogCi0gICAgICAgIGZfcmVzdWx0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfcmVzdWx0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9yZXN1bHQuc2V0X3Jlc3VsdCg0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9yZXN1bHQpLCAnPEZ1dHVyZSBmaW5pc2hlZCByZXN1bHQ9ND4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZfcmVzdWx0LnJlc3VsdCgpLCA0KQogCiAgICAgICAgIGV4YyA9IFJ1bnRpbWVFcnJvcigpCi0gICAgICAgIGZfZXhjZXB0aW9uID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfZXhjZXB0aW9uID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9leGNlcHRpb24uc2V0X2V4Y2VwdGlvbihleGMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX2V4Y2VwdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxGdXR1cmUgZmluaXNoZWQgZXhjZXB0aW9uPVJ1bnRpbWVFcnJvcigpPicpCkBAIC0yMTUsNyArMjE5LDcgQEAKICAgICAgICAgICAgIHRleHQgPSAnJXMoKSBhdCAlczolcycgJSAoZnVuYy5fX3F1YWxuYW1lX18sIGZpbGVuYW1lLCBsaW5lbm8pCiAgICAgICAgICAgICByZXR1cm4gcmUuZXNjYXBlKHRleHQpCiAKLSAgICAgICAgZl9vbmVfY2FsbGJhY2tzID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfb25lX2NhbGxiYWNrcyA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfb25lX2NhbGxiYWNrcy5hZGRfZG9uZV9jYWxsYmFjayhfZmFrZWZ1bmMpCiAgICAgICAgIGZha2VfcmVwciA9IGZ1bmNfcmVwcihfZmFrZWZ1bmMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcihmX29uZV9jYWxsYmFja3MpLApAQCAtMjI0LDcgKzIyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX29uZV9jYWxsYmFja3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGNhbmNlbGxlZD4nKQogCi0gICAgICAgIGZfdHdvX2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3R3b19jYWxsYmFja3MgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX3R3b19jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2soZmlyc3RfY2IpCiAgICAgICAgIGZfdHdvX2NhbGxiYWNrcy5hZGRfZG9uZV9jYWxsYmFjayhsYXN0X2NiKQogICAgICAgICBmaXJzdF9yZXByID0gZnVuY19yZXByKGZpcnN0X2NiKQpAQCAtMjMzLDcgKzIzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgcic8RnV0dXJlIHBlbmRpbmcgY2I9XFslcywgJXNcXT4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoZmlyc3RfcmVwciwgbGFzdF9yZXByKSkKIAotICAgICAgICBmX21hbnlfY2FsbGJhY2tzID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfbWFueV9jYWxsYmFja3MgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX21hbnlfY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKGZpcnN0X2NiKQogICAgICAgICBmb3IgaSBpbiByYW5nZSg4KToKICAgICAgICAgICAgIGZfbWFueV9jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2soX2Zha2VmdW5jKQpAQCAtMjQ4LDMxICsyNTIsMzEgQEAKICAgICBkZWYgdGVzdF9jb3B5X3N0YXRlKHNlbGYpOgogICAgICAgICBmcm9tIGFzeW5jaW8uZnV0dXJlcyBpbXBvcnQgX2NvcHlfZnV0dXJlX3N0YXRlCiAKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZi5zZXRfcmVzdWx0KDEwKQogCi0gICAgICAgIG5ld2YgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgbmV3ZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmLCBuZXdmKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobmV3Zi5kb25lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Zi5yZXN1bHQoKSwgMTApCiAKLSAgICAgICAgZl9leGNlcHRpb24gPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9leGNlcHRpb24gPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX2V4Y2VwdGlvbi5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcigpKQogCi0gICAgICAgIG5ld2ZfZXhjZXB0aW9uID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIG5ld2ZfZXhjZXB0aW9uID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgX2NvcHlfZnV0dXJlX3N0YXRlKGZfZXhjZXB0aW9uLCBuZXdmX2V4Y2VwdGlvbikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld2ZfZXhjZXB0aW9uLmRvbmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBuZXdmX2V4Y2VwdGlvbi5yZXN1bHQpCiAKLSAgICAgICAgZl9jYW5jZWxsZWQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9jYW5jZWxsZWQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX2NhbmNlbGxlZC5jYW5jZWwoKQogCi0gICAgICAgIG5ld2ZfY2FuY2VsbGVkID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIG5ld2ZfY2FuY2VsbGVkID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgX2NvcHlfZnV0dXJlX3N0YXRlKGZfY2FuY2VsbGVkLCBuZXdmX2NhbmNlbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld2ZfY2FuY2VsbGVkLmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3RfaXRlcihzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAKICAgICAgICAgZGVmIGNvcm8oKToKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0CkBAIC0yODUsMjAgKzI4OSwyMCBAQAogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfYWJhbmRvbmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGRlbCBmdXQKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtX2xvZy5lcnJvci5jYWxsZWQpCiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9yZXN1bHRfdW5yZXRyaWV2ZWQoc2VsZiwgbV9sb2cpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9yZXN1bHQoNDIpCiAgICAgICAgIGRlbCBmdXQKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtX2xvZy5lcnJvci5jYWxsZWQpCiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9yZXN1bHRfcmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KDQyKQogICAgICAgICBmdXQucmVzdWx0KCkKICAgICAgICAgZGVsIGZ1dApAQCAtMzA2LDcgKzMxMCw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fdW5yZXRyaWV2ZWQoc2VsZiwgbV9sb2cpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9leGNlcHRpb24oUnVudGltZUVycm9yKCdib29tJykpCiAgICAgICAgIGRlbCBmdXQKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCkBAIC0zMTUsNyArMzE5LDcgQEAKIAogICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCiAgICAgZGVmIHRlc3RfdGJfbG9nZ2VyX2V4Y2VwdGlvbl9yZXRyaWV2ZWQoc2VsZiwgbV9sb2cpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9leGNlcHRpb24oUnVudGltZUVycm9yKCdib29tJykpCiAgICAgICAgIGZ1dC5leGNlcHRpb24oKQogICAgICAgICBkZWwgZnV0CkBAIC0zMjMsNyArMzI3LDcgQEAKIAogICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCiAgICAgZGVmIHRlc3RfdGJfbG9nZ2VyX2V4Y2VwdGlvbl9yZXN1bHRfcmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGZ1dC5yZXN1bHQpCiAgICAgICAgIGRlbCBmdXQKQEAgLTMzNywxMiArMzQxLDEyIEBACiAgICAgICAgIGYxID0gZXguc3VibWl0KHJ1biwgJ29pJykKICAgICAgICAgZjIgPSBhc3luY2lvLndyYXBfZnV0dXJlKGYxLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgcmVzLCBpZGVudCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoZjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmMiwgYXN5bmNpby5GdXR1cmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLmlzZnV0dXJlKGYyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsICdvaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWRlbnQsIHRocmVhZGluZy5nZXRfaWRlbnQoKSkKIAogICAgIGRlZiB0ZXN0X3dyYXBfZnV0dXJlX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZjEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZjEgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmMiA9IGFzeW5jaW8ud3JhcF9mdXR1cmUoZjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZjEsIGYyKQogCkBAIC0zNzcsMTAgKzM4MSwxMCBAQAogICAgIGRlZiB0ZXN0X2Z1dHVyZV9zb3VyY2VfdHJhY2ViYWNrKHNlbGYpOgogICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKFRydWUpCiAKLSAgICAgICAgZnV0dXJlID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dHVyZSA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGxpbmVubyA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2xpbmVubyAtIDEKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZ1dHVyZS5fc291cmNlX3RyYWNlYmFjaywgbGlzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2tbLTFdWzozXSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2tbLTJdWzozXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoX19maWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfZnV0dXJlX3NvdXJjZV90cmFjZWJhY2snKSkKQEAgLTM5Niw1NyArNDAwLDE4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4YwogICAgICAgICBleGMgPSBtZW1vcnlfZXJyb3IoKQogCi0gICAgICAgIGZ1dHVyZSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgIHNvdXJjZV90cmFjZWJhY2sgPSBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2sKKyAgICAgICAgZnV0dXJlID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnV0dXJlLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICBmdXR1cmUgPSBOb25lCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQogCiAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDQpOgotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgZnJhbWUgPSBzb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInZnV0dXJlOiA8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1NZW1vcnlFcnJvclwoXCkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2NyZWF0ZWQgYXQge2ZpbGVuYW1lfTp7bGluZW5vfT5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ3NvdXJjZV90cmFjZWJhY2s6IE9iamVjdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcidjcmVhdGVkIGF0IFwobW9zdCByZWNlbnQgY2FsbCBsYXN0XCk6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgIEZpbGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicuKlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlICJ7ZmlsZW5hbWV9IiwgbGluZSB7bGluZW5vfSwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInaW4gY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgICBmdXR1cmUgPSBhc3luY2lvXC5GdXR1cmVcKGxvb3A9c2VsZlwubG9vcFwpJCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1hdChmaWxlbmFtZT1yZS5lc2NhcGUoZnJhbWVbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubz1mcmFtZVsxXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAocideRnV0dXJlIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidmdXR1cmU6ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxGdXR1cmUgZmluaXNoZWQgZXhjZXB0aW9uPU1lbW9yeUVycm9yXChcKT4kJwotICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJlZ2V4ID0gcideRnV0dXJlIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCiAgICAgICAgICAgICBleGNfaW5mbyA9ICh0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18pCiAgICAgICAgICAgICBtX2xvZy5lcnJvci5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChtb2NrLkFOWSwgZXhjX2luZm89ZXhjX2luZm8pCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgICAgICAgICBmcmFtZSA9IHNvdXJjZV90cmFjZWJhY2tbLTFdCi0gICAgICAgICAgICAgICAgcmVnZXggPSAocideRnV0dXJlL1Rhc2sgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ0Z1dHVyZS9UYXNrIGNyZWF0ZWQgYXQgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgRmlsZScKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgIEZpbGUgIntmaWxlbmFtZX0iLCBsaW5lIHtsaW5lbm99LCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcidpbiBjaGVja19mdXR1cmVfZXhjZXB0aW9uX25ldmVyX3JldHJpZXZlZFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICAgIGZ1dHVyZSA9IGFzeW5jaW9cLkZ1dHVyZVwobG9vcD1zZWxmXC5sb29wXClcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ1RyYWNlYmFjayBcKG1vc3QgcmVjZW50IGNhbGwgbGFzdFwpOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ01lbW9yeUVycm9yJCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1hdChmaWxlbmFtZT1yZS5lc2NhcGUoZnJhbWVbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubz1mcmFtZVsxXSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAocideRnV0dXJlL1Rhc2sgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ1RyYWNlYmFjayBcKG1vc3QgcmVjZW50IGNhbGwgbGFzdFwpOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ01lbW9yeUVycm9yJCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZWdleCA9IHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCiAgICAgICAgICAgICBtX2xvZy5lcnJvci5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChtb2NrLkFOWSwgZXhjX2luZm89RmFsc2UpCiAgICAgICAgIG1lc3NhZ2UgPSBtX2xvZy5lcnJvci5jYWxsX2FyZ3NbMF1bMF0KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtZXNzYWdlLCByZS5jb21waWxlKHJlZ2V4LCByZS5ET1RBTEwpKQpAQCAtNDU4LDE0ICs0MjMsNDAgQEAKICAgICAgICAgc2VsZi5jaGVja19mdXR1cmVfZXhjZXB0aW9uX25ldmVyX3JldHJpZXZlZChUcnVlKQogCiAgICAgZGVmIHRlc3Rfc2V0X3Jlc3VsdF91bmxlc3NfY2FuY2VsbGVkKHNlbGYpOgotICAgICAgICBmcm9tIGFzeW5jaW8gaW1wb3J0IGZ1dHVyZXMKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5jYW5jZWwoKQogICAgICAgICBmdXR1cmVzLl9zZXRfcmVzdWx0X3VubGVzc19jYW5jZWxsZWQoZnV0LCAyKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnV0LmNhbmNlbGxlZCgpKQogCisgICAgZGVmIHRlc3RfZnV0dXJlX3N0b3BfaXRlcmF0aW9uX2FyZ3Moc2VsZik6CisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dC5zZXRfcmVzdWx0KCgxLCAyKSkKKyAgICAgICAgZmkgPSBmdXQuX19pdGVyX18oKQorICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpLnNlbmQoTm9uZSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICByZXN1bHQgPSBleC5hcmdzWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIGV4cGVjdGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICgxLCAyKSkKIAotY2xhc3MgRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHModGVzdF91dGlscy5UZXN0Q2FzZSk6CisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENGdXR1cmVUZXN0cyhCYXNlRnV0dXJlVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsICAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gZnV0dXJlcy5fQ0Z1dHVyZSgqYXJncywgKiprd2FyZ3MpCisKKworY2xhc3MgUHlGdXR1cmVUZXN0cyhCYXNlRnV0dXJlVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBmdXR1cmVzLl9QeUZ1dHVyZSgqYXJncywgKiprd2FyZ3MpCisKKworY2xhc3MgQmFzZUZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzKCk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcCgpCkBAIC00ODAsNyArNDcxLDcgQEAKICAgICAgICAgcmV0dXJuIGJhZ19hcHBlbmRlcgogCiAgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYpOgotICAgICAgICByZXR1cm4gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiB0ZXN0X2NhbGxiYWNrc19pbnZva2VkX29uX3NldF9yZXN1bHQoc2VsZik6CiAgICAgICAgIGJhZyA9IFtdCkBAIC01NDQsNSArNTM1LDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZXN1bHQoKSwgJ2ZvbycpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgQ0Z1dHVyZURvbmVDYWxsYmFja1Rlc3RzKEJhc2VGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGZ1dHVyZXMuX0NGdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKworY2xhc3MgUHlGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cyhCYXNlRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYpOgorICAgICAgICByZXR1cm4gZnV0dXJlcy5fUHlGdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IDM4NTc5MTYuLmRiZWU1OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtMTEsNiArMTEsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkgYi9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQppbmRleCA1MDkzZTlkLi41OTMwZDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQpAQCAtODMsNiArODMsMTAgQEAKICAgICAgICAgICAgIGRlZiBfX2lhZGRfXyhzZWxmLCB2YWwpOgogICAgICAgICAgICAgICAgIHJldHVybiBhdWdfdGVzdDMoc2VsZi52YWwgKyB2YWwpCiAKKyAgICAgICAgY2xhc3MgYXVnX3Rlc3Q0KGF1Z190ZXN0Myk6CisgICAgICAgICAgICAiIiJCbG9ja3MgaW5oZXJpdGFuY2UsIGFuZCBmYWxsYmFjayB0byBfX2FkZF9fIiIiCisgICAgICAgICAgICBfX2lhZGRfXyA9IE5vbmUKKwogICAgICAgICB4ID0gYXVnX3Rlc3QoMSkKICAgICAgICAgeSA9IHgKICAgICAgICAgeCArPSAxMApAQCAtMTA2LDYgKzExMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnZhbCwgMTMpCiAKKyAgICAgICAgeCA9IGF1Z190ZXN0NCg0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB4ICs9IDEwCisKIAogICAgIGRlZiB0ZXN0Q3VzdG9tTWV0aG9kczIodGVzdF9zZWxmKToKICAgICAgICAgb3V0cHV0ID0gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5IGIvTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKaW5kZXggN2M5OGM0Ni4uMjdkNTE0ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IG9zCiBmcm9tIHBsYXRmb3JtIGltcG9ydCBzeXN0ZW0gYXMgcGxhdGZvcm1fc3lzdGVtCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5IGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKaW5kZXggNDBhYzliZi4uNjEzM2JiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKQEAgLTE0LDcgKzE0LDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3lzCi1pbXBvcnQgZnVuY3Rvb2xzCiAKICMgVGhlc2UgdGVzdHMgYWxsIHVzZSBvbmUgb2YgdGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9ycyB0byBpbmRpY2F0ZSBob3cgbXVjaAogIyBtZW1vcnkgdGhleSB1c2UgYW5kIGhvdyBtdWNoIG1lbW9yeSB0aGV5IG5lZWQgdG8gYmUgZXZlbiBtZWFuaW5nZnVsLiAgVGhlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQppbmRleCAwMzQyNDVkLi42YjNlNDM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKQEAgLTE1OSwxMSArMTU5LDI1IEBACiAgICAgICAgICMgVGhlbiBjYWxjdWxhdGUgdGhlIGhleGJpbjQgYmluYXJ5LXRvLUFTQ0lJIHRyYW5zbGF0aW9uCiAgICAgICAgIHJsZSA9IGJpbmFzY2lpLnJsZWNvZGVfaHF4KHNlbGYuZGF0YSkKICAgICAgICAgYSA9IGJpbmFzY2lpLmIyYV9ocXgoc2VsZi50eXBlMnRlc3QocmxlKSkKKwogICAgICAgICBiLCBfID0gYmluYXNjaWkuYTJiX2hxeChzZWxmLnR5cGUydGVzdChhKSkKICAgICAgICAgcmVzID0gYmluYXNjaWkucmxlZGVjb2RlX2hxeChiKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBzZWxmLnJhd2RhdGEpCiAKKyAgICBkZWYgdGVzdF9ybGUoc2VsZik6CisgICAgICAgICMgdGVzdCByZXBldGl0aW9uIHdpdGggYSByZXBldGl0aW9uIGxvbmdlciB0aGFuIHRoZSBsaW1pdCBvZiAyNTUKKyAgICAgICAgZGF0YSA9IChiJ2EnICogMTAwICsgYidiJyArIGInYycgKiAzMDApCisKKyAgICAgICAgZW5jb2RlZCA9IGJpbmFzY2lpLnJsZWNvZGVfaHF4KGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYidhXHg5MGQnICAgICAgIyAnYScgKiAxMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidiJyAgICAgICAgICAgIyAnYicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidjXHg5MFx4ZmYnICAgIyAnYycgKiAyNTUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidjXHg5MC0nKSkgICAgIyAnYycgKiA0NQorCisgICAgICAgIGRlY29kZWQgPSBiaW5hc2NpaS5ybGVkZWNvZGVfaHF4KGVuY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgZGF0YSkKKwogICAgIGRlZiB0ZXN0X2hleChzZWxmKToKICAgICAgICAgIyB0ZXN0IGhleGxpZmljYXRpb24KICAgICAgICAgcyA9IGIne3NcMDA1XDAwMFwwMDBcMDAwd29ybGRpXDAwMlwwMDBcMDAwXDAwMHNcMDA1XDAwMFwwMDBcMDAwaGVsbG9pXDAwMVwwMDBcMDAwXDAwMDAnCkBAIC0zMzEsNiArMzQ1LDE2IEBACiAgICAgICAgICAgICAjIG5vbi1BU0NJSSBzdHJpbmcKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEyYiwgIlx4ODAiKQogCisgICAgZGVmIHRlc3RfYjJhX2Jhc2U2NF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTM1NzogdGVzdCBuZXdsaW5lIHBhcmFtZXRlcgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiwgbmV3bGluZT1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiwgbmV3bGluZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhR1ZzYkc4PScpCisKIAogY2xhc3MgQXJyYXlCaW5BU0NJSVRlc3QoQmluQVNDSUlUZXN0KToKICAgICBkZWYgdHlwZTJ0ZXN0KHNlbGYsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQppbmRleCA5ZDRjODVhLi4yMWY0NDYzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQpAQCAtNCw3ICs0LDYgQEAKICAgIEJhc2VkIG9uIGFuIG9yaWdpbmFsIHRlc3QgYnkgUm9nZXIgRS4gTWFzc2UuCiAiIiIKIGltcG9ydCBiaW5oZXgKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5vcC5weSBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKaW5kZXggZTlkYmRkYy4uM2VkMDE4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CkBAIC0yLDcgKzIsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEsIG5lLCBsdCwgZ3QsIGxlLCBnZQorZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEsIGxlLCBuZQogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEKIAogZGVmIGdjZChhLCBiKToKQEAgLTM4OCw2ICszODgsNTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcF9zZXF1ZW5jZShlcSwgQiwgViksIFsnQi5fX2VxX18nLCAnVi5fX2VxX18nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcF9zZXF1ZW5jZShsZSwgQiwgViksIFsnQi5fX2xlX18nLCAnVi5fX2dlX18nXSkKIAorY2xhc3MgU3VwRXEob2JqZWN0KToKKyAgICAiIiJDbGFzcyB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5IiIiCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisKK2NsYXNzIFMoU3VwRXEpOgorICAgICIiIlN1YmNsYXNzIG9mIFN1cEVxIHRoYXQgc2hvdWxkIGZhaWwiIiIKKyAgICBfX2VxX18gPSBOb25lCisKK2NsYXNzIEYob2JqZWN0KToKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IHNob3VsZCBmYWxsIGJhY2siIiIKKworY2xhc3MgWChvYmplY3QpOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgc2hvdWxkIGZhaWwiIiIKKyAgICBfX2VxX18gPSBOb25lCisKK2NsYXNzIFNOKFN1cEVxKToKKyAgICAiIiJTdWJjbGFzcyBvZiBTdXBFcSB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5LCBidXQgbm90IG5vbi1lcXVhbGl0eSIiIgorICAgIF9fbmVfXyA9IE5vbmUKKworY2xhc3MgWE46CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBjYW4gdGVzdCBlcXVhbGl0eSwgYnV0IG5vdCBub24tZXF1YWxpdHkiIiIKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBfX25lX18gPSBOb25lCisKK2NsYXNzIEZhbGxiYWNrQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgTm9uZSBtZXRob2QgYmxvY2tpbmciIiIKKworICAgIGRlZiB0ZXN0X2ZhbGxiYWNrX3JtZXRob2RfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGUsIGYsIHMsIHggPSBTdXBFcSgpLCBGKCksIFMoKSwgWCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGUpCisgICAgICAgICMgbGVmdCBvcGVyYW5kIGlzIGNoZWNrZWQgZmlyc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCB4LCBlKQorICAgICAgICAjIFMgaXMgYSBzdWJjbGFzcywgc28gaXQncyBhbHdheXMgY2hlY2tlZCBmaXJzdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCBlLCBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCBzLCBlKQorCisgICAgZGVmIHRlc3RfZmFsbGJhY2tfbmVfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGUsIHNuLCB4biA9IFN1cEVxKCksIFNOKCksIFhOKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlICE9IGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIGUsIHNuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCBzbiwgZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlICE9IHhuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCB4biwgZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weSBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQppbmRleCBkMzBhM2I5Li45ZjhmMGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CkBAIC05Niw2ICs5NiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLzEsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRmFsc2UvMSwgRmFsc2UpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlJTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoVHJ1ZSUxLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlJTIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoVHJ1ZSUyLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlJTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRmFsc2UlMSwgRmFsc2UpCisKICAgICAgICAgZm9yIGIgaW4gRmFsc2UsIFRydWU6CiAgICAgICAgICAgICBmb3IgaSBpbiAwLCAxLCAyOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYioqaSwgaW50KGIpKippKQpAQCAtMzMzLDYgKzM0MCwxNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCAoRXhjZXB0aW9uKSBhcyBlX2xlbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZV9ib29sKSwgc3RyKGVfbGVuKSkKIAorICAgIGRlZiB0ZXN0X2Jsb2NrZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBfX2Jvb2xfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBib29sLCBBKCkpCisKKyAgICAgICAgY2xhc3MgQjoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAxMAorICAgICAgICAgICAgX19ib29sX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYm9vbCwgQigpKQorCiAgICAgZGVmIHRlc3RfcmVhbF9hbmRfaW1hZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLnJlYWwsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5pbWFnLCAwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQppbmRleCAyZWVmOWZjLi5iODNmMmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpAQCAtMTYsNyArMTYsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zLCBwcm9kdWN0CiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzYW1wbGUsIGNob2ljZQotZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBzeXMsIGFycmF5LCBpbwogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZpby5weQppbmRleCA5OTMxYzg0Li5mZWE2ZGE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgc2VsZi5kcml2ZV9vbmUoYiIxMjM0NTY3ODkwXDAwXDAxXDAyXDAzXDA0XDA1XDA2IikKIAogICAgIGRlZiB0ZXN0X251bGxwYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuZHJpdmVfb25lKGJ5dGVzKDEwMDApKQorICAgICAgICBzZWxmLmRyaXZlX29uZShiJ1wwJyAqIDEwMDApCiAKIAogY2xhc3MgQ0J1ZmZlclNpemVUZXN0KEJ1ZmZlclNpemVUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKaW5kZXggMzljODBiMC4uZTBjZmZlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAoJycsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgIFx0XHQgICcsIFZhbHVlRXJyb3IpLAotICAgICAgICAoc3RyKGInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAorICAgICAgICAoc3RyKGJyJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKICAgICAgICAgKGNocigweDIwMCksIFZhbHVlRXJyb3IpLAogXQogCkBAIC0xMDMsNyArMTAzLDcgQEAKICAgICAgICAgKCcnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICBcdFx0ICAnLCBWYWx1ZUVycm9yKSwKLSAgICAgICAgKHN0cihiJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKKyAgICAgICAgKHN0cihicidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCiAgICAgICAgIChjaHIoMHgyMDApLCBWYWx1ZUVycm9yKSwKIF0KIApAQCAtMTcxMCwyMSArMTcxMCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguc3BhbSgpLCAnc3BhbTQyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2J5dGVzKDIsICdsaXR0bGUnKSwgYidceDJhXHgwMCcpCiAKLSAgICBkZWYgdGVzdF90eXBlX25ld19rZXl3b3JkcyhzZWxmKToKLSAgICAgICAgY2xhc3MgQjoKLSAgICAgICAgICAgIGRlZiBoYW0oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdoYW0lZCcgJSBzZWxmCi0gICAgICAgIEMgPSB0eXBlLl9fbmV3X18odHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlcz0oQiwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0PXsnc3BhbSc6IGxhbWJkYSBzZWxmOiAnc3BhbSVzJyAlIHNlbGZ9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICdDJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fcXVhbG5hbWVfXywgJ0MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19tb2R1bGVfXywgX19uYW1lX18pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Jhc2VzX18sIChCLCBpbnQpKQotICAgICAgICBzZWxmLmFzc2VydElzKEMuX19iYXNlX18sIGludCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignc3BhbScsIEMuX19kaWN0X18pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2hhbScsIEMuX19kaWN0X18pCisgICAgZGVmIHRlc3RfdHlwZV9ub2t3YXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZSgnYScsICgpLCB7fSwgeD01KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKCdhJywgKCksIGRpY3Q9e30pCiAKICAgICBkZWYgdGVzdF90eXBlX25hbWUoc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluICdBJywgJ1x4YzQnLCAnXFUwMDAxZjQwZCcsICdCLkEnLCAnNDInLCAnJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CmluZGV4IGNjMzEyYjEuLjIyMjQ0MjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQpAQCAtMjE2LDcgKzIxNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlWzotM10sICJ1dGYtOCIpKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgotICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiY1xkZWYwXGRlZjAiCisgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjIgogICAgICAgICBmb3IgZW5jIGluICgidXRmLTgiLCAidXRmLTE2Iik6CiAgICAgICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCBlbmMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVuYyksIHNhbXBsZSkKQEAgLTI2OSw2ICsyNjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKDIwMCwgYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiAzMDAgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiAtMSBpbiBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHN5cy5tYXhzaXplKzEgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE5vbmUgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGZsb2F0KG9yZCgnYScpKSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogImEiIGluIGIpCkBAIC0zMDAsNiArMzAxLDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICdceDAwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJzEyICAgXHgwMCAgIDM0JykKIAorICAgICAgICBmb3IgZGF0YSwgcG9zIGluICgKKyAgICAgICAgICAgICMgaW52YWxpZCBmaXJzdCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICgnMTIgeDQgNTYnLCAzKSwKKyAgICAgICAgICAgICMgaW52YWxpZCBzZWNvbmQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyCisgICAgICAgICAgICAoJzEyIDN4IDU2JywgNCksCisgICAgICAgICAgICAjIHR3byBpbnZhbGlkIGhleGFkZWNpbWFsIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICgnMTIgeHkgNTYnLCAzKSwKKyAgICAgICAgICAgICMgdGVzdCBub24tQVNDSUkgc3RyaW5nCisgICAgICAgICAgICAoJzEyIDNceGZmIDU2JywgNCksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2F0IHBvc2l0aW9uICVzJyAlIHBvcywgc3RyKGNtLmV4Y2VwdGlvbikpCisKICAgICBkZWYgdGVzdF9oZXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmhleCwgMSkKQEAgLTY3NCw2ICs2ODksMzcgQEAKICAgICAgICAgdGVzdC5zdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIHNlbGYudHlwZTJ0ZXN0KQogICAgICAgICB0ZXN0LnN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgcmV2ZXJzZWQsIHNlbGYudHlwZTJ0ZXN0KQogCisgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisgICAgICAgIHJvc2V0dGEgPSBieXRlYXJyYXkocmFuZ2UoMjU2KSkKKyAgICAgICAgcm9zZXR0YVtvcmQoJ28nKV0gPSBvcmQoJ2UnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIudHJhbnNsYXRlLCBieXRlcyhyYW5nZSgyNTUpKSkKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBzZWxmLnR5cGUydGVzdCkKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSkKKyAgICAgICAgZCA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVsbGUnKQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGInZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKKworICAgICAgICAjIHRlc3QgZGVsZXRlIGFzIGEga2V5d29yZCBhcmd1bWVudAorICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgZGVsZXRlPWInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlbGxlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGRlbGV0ZT1iJ2wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGRlbGV0ZT1iJ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCisKIAogY2xhc3MgQnl0ZXNUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcwpAQCAtNzIyLDMxICs3NjgsMTQyIEBACiAKICAgICAjIFRlc3QgUHlCeXRlc19Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKLSAgICAgICAgdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCi0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBweXRob25hcGksIHB5X29iamVjdCwgY19pbnQsIGNfY2hhcl9wCisgICAgICAgIGN0eXBlcyA9IHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQorICAgICAgICBfdGVzdGNhcGkgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHB5dGhvbmFwaSwgcHlfb2JqZWN0CisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCAoCisgICAgICAgICAgICBjX2ludCwgY191aW50LAorICAgICAgICAgICAgY19sb25nLCBjX3Vsb25nLAorICAgICAgICAgICAgY19zaXplX3QsIGNfc3NpemVfdCwKKyAgICAgICAgICAgIGNfY2hhcl9wKQorCiAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCA9IHB5dGhvbmFwaS5QeUJ5dGVzX0Zyb21Gb3JtYXQKICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LnJlc3R5cGUgPSBweV9vYmplY3QKIAorICAgICAgICAjIGJhc2ljIHRlc3RzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInZm9ybWF0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidmb3JtYXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ0hlbGxvICVzICEnLCBiJ3dvcmxkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidIZWxsbyB3b3JsZCAhJykKIAorICAgICAgICAjIHRlc3QgZm9ybWF0dGVycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludCgwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQob3JkKCdAJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9QCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KDI1NSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1ceGZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidkPSVkIGxkPSVsZCB6ZD0lemQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ludCgxKSwgY19sb25nKDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidkPTEgbGQ9MiB6ZD0zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidkPSVkIGxkPSVsZCB6ZD0lemQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ludCgtMSksIGNfbG9uZygtMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KC0zKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidkPS0xIGxkPS0yIHpkPS0zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid1PSV1IGx1PSVsdSB6dT0lenUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3VpbnQoMTIzKSwgY191bG9uZyg0NTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCg3ODkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3U9MTIzIGx1PTQ1NiB6dT03ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2k9JWknLCBjX2ludCgxMjMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2k9MTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidpPSVpJywgY19pbnQoLTEyMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInaT0tMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid4PSV4JywgY19pbnQoMHhhYmMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3g9YWJjJykKKworICAgICAgICBzaXplb2ZfcHRyID0gY3R5cGVzLnNpemVvZihjX2NoYXJfcCkKKworICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIFdpbmRvd3MgKE1TQ1JUKQorICAgICAgICAgICAgcHRyX2Zvcm1hdCA9ICcweCUwe31YJy5mb3JtYXQoMiAqIHNpemVvZl9wdHIpCisgICAgICAgICAgICBkZWYgcHRyX2Zvcm1hdHRlcihwdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiAocHRyX2Zvcm1hdCAlIHB0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVU5JWCAoZ2xpYmMpCisgICAgICAgICAgICBkZWYgcHRyX2Zvcm1hdHRlcihwdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiAnJSN4JyAlIHB0cgorCisgICAgICAgIHB0ciA9IDB4YWJjZGVmCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIncHRyPSVwJywgY19jaGFyX3AocHRyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCdwdHI9JyArIHB0cl9mb3JtYXR0ZXIocHRyKSkuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3M9JXMnLCBjX2NoYXJfcChiJ2NzdHInKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidzPWNzdHInKQorCisgICAgICAgICMgdGVzdCBtaW5pbXVtIGFuZCBtYXhpbXVtIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNpemVfbWF4ID0gY19zaXplX3QoLTEpLnZhbHVlCisgICAgICAgIGZvciBmb3JtYXRzdHIsIGN0eXBlc190eXBlLCB2YWx1ZSwgcHlfZm9ybWF0dGVyIGluICgKKyAgICAgICAgICAgIChiJyVkJywgY19pbnQsIF90ZXN0Y2FwaS5JTlRfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJWQnLCBjX2ludCwgX3Rlc3RjYXBpLklOVF9NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclbGQnLCBjX2xvbmcsIF90ZXN0Y2FwaS5MT05HX01JTiwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsZCcsIGNfbG9uZywgX3Rlc3RjYXBpLkxPTkdfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJWx1JywgY191bG9uZywgX3Rlc3RjYXBpLlVMT05HX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6ZCcsIGNfc3NpemVfdCwgX3Rlc3RjYXBpLlBZX1NTSVpFX1RfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJXpkJywgY19zc2l6ZV90LCBfdGVzdGNhcGkuUFlfU1NJWkVfVF9NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclenUnLCBjX3NpemVfdCwgc2l6ZV9tYXgsIHN0ciksCisgICAgICAgICAgICAoYiclcCcsIGNfY2hhcl9wLCBzaXplX21heCwgcHRyX2Zvcm1hdHRlciksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChmb3JtYXRzdHIsIGN0eXBlc190eXBlKHZhbHVlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5X2Zvcm1hdHRlcih2YWx1ZSkuZW5jb2RlKCdhc2NpaScpKSwKKworICAgICAgICAjIHdpZHRoIGFuZCBwcmVjaXNpb24gKHdpZHRoIGlzIGN1cnJlbnRseSBpZ25vcmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyU1cycsIGInYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJS4zcycsIGInYWJjZGVmJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhYmMnKQorCisgICAgICAgICMgJyUlJyBmb3JtYXR0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInWyUlXScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInWyVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJSVjJywgY19pbnQob3JkKCdfJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyVfJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyVzJykKKworICAgICAgICAjIEludmFsaWQgZm9ybWF0cyBhbmQgcGFydGlhbCBmb3JtYXR0aW5nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJScpLCBiJyUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJyksIGInJScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSVzJyksIGInJXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ1slJV0nKSwgYidbJV0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJWMnLCBjX2ludChvcmQoJ18nKSkpLCBiJyVfJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid4PSVpIHk9JScsIGNfaW50KDIpLCBjX2ludCgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYid4PTIgeT0lJykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M6JWMnLCBjX2ludCgyNTUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M6XHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInczolcycsIGNfY2hhcl9wKGInY3N0cicpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ3M6Y3N0cicpCi0KLSAgICAgICAgIyBJc3N1ZSAjMTk5NjkKKyAgICAgICAgIyBJc3N1ZSAjMTk5Njk6ICVjIG11c3QgcmFpc2UgT3ZlcmZsb3dFcnJvciBmb3IgdmFsdWVzCisgICAgICAgICMgbm90IGluIHRoZSByYW5nZSBbMDsgMjU1XQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQsIGInJWMnLCBjX2ludCgtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCwgYiclYycsIGNfaW50KDI1NikpCiAKKyAgICBkZWYgdGVzdF9ieXRlc19ibG9ja2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmF0aW9uQmxvY2tlZChsaXN0KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgaSA9IFswLCAxLCAyLCAzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGkpLCBiJ1x4MDBceDAxXHgwMlx4MDMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBJdGVyYXRpb25CbG9ja2VkKGkpKQorCisgICAgICAgICMgQXQgbGVhc3QgaW4gQ1B5dGhvbiwgYmVjYXVzZSBieXRlcy5fX25ld19fIGFuZCB0aGUgQyBBUEkKKyAgICAgICAgIyBQeUJ5dGVzX0Zyb21PYmplY3QgaGF2ZSBkaWZmZXJlbnQgZmFsbGJhY2sgcnVsZXMsIGludGVnZXIKKyAgICAgICAgIyBmYWxsYmFjayBpcyBoYW5kbGVkIHNwZWNpYWxseSwgc28gdGVzdCBzZXBhcmF0ZWx5LgorICAgICAgICBjbGFzcyBJbnRCbG9ja2VkKGludCk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMyksIGInXDBcMFwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgSW50QmxvY2tlZCgzKSkKKworICAgICAgICAjIFdoaWxlIHRoZXJlIGlzIG5vIHNlcGFyYXRlbHktZGVmaW5lZCBydWxlIGZvciBoYW5kbGluZyBieXRlcworICAgICAgICAjIHN1YmNsYXNzZXMgZGlmZmVyZW50bHkgZnJvbSBvdGhlciBidWZmZXItaW50ZXJmYWNlIGNsYXNzZXMsCisgICAgICAgICMgYW4gaW1wbGVtZW50YXRpb24gbWF5IHdlbGwgc3BlY2lhbC1jYXNlIHRoZW0gKGFzIENQeXRob24gMi54CisgICAgICAgICMgc3RyIGRpZCksIHNvIHRlc3QgdGhlbSBzZXBhcmF0ZWx5LgorICAgICAgICBjbGFzcyBCeXRlc1N1YmNsYXNzQmxvY2tlZChieXRlcyk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYidhYicpLCBiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgQnl0ZXNTdWJjbGFzc0Jsb2NrZWQoYidhYicpKQorCisgICAgICAgIGNsYXNzIEJ1ZmZlckJsb2NrZWQoYnl0ZWFycmF5KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgYmEsIGJiID0gYnl0ZWFycmF5KGInYWInKSwgQnVmZmVyQmxvY2tlZChiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiYSksIGInYWInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBiYikKKwogCiBjbGFzcyBCeXRlQXJyYXlUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKQEAgLTEzMjMsMjQgKzE0ODAsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYiIlcyInICUgY2hyKGMpKQogCi0gICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgotICAgICAgICBiID0gYidoZWxsbycKLSAgICAgICAgYmEgPSBieXRlYXJyYXkoYikKLSAgICAgICAgcm9zZXR0YSA9IGJ5dGVhcnJheShyYW5nZSgwLCAyNTYpKQotICAgICAgICByb3NldHRhW29yZCgnbycpXSA9IG9yZCgnZScpCi0gICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKLSAgICAgICAgYyA9IGJhLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCi0gICAgICAgIGMgPSBiLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCi0gICAgICAgIGMgPSBiYS50cmFuc2xhdGUoTm9uZSwgYidlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGIudHJhbnNsYXRlLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKLQogICAgIGRlZiB0ZXN0X3NwbGl0X2J5dGVhcnJheShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2EgYicuc3BsaXQobWVtb3J5dmlldyhiJyAnKSksIFtiJ2EnLCBiJ2InXSkKIApAQCAtMTUwNCw3ICsxNjQzLDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYSksIHR5cGUoYikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYS55KSwgdHlwZShiLnkpKQogCi0gICAgdGVzdF9mcm9taGV4ID0gQmFzZUJ5dGVzVGVzdC50ZXN0X2Zyb21oZXgKKyAgICBkZWYgdGVzdF9mcm9taGV4KHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgc2VsZi50eXBlMnRlc3QpCisKKyAgICAgICAgY2xhc3MgQjEoc2VsZi5iYXNldHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBtZSA9IHNlbGYuYmFzZXR5cGUuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICAgICAgICAgIG1lLmZvbyA9ICdiYXInCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lCisKKyAgICAgICAgYiA9IEIxLmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIEIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZm9vLCAnYmFyJykKKworICAgICAgICBjbGFzcyBCMihzZWxmLmJhc2V0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhtZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJhc2V0eXBlIGlzIG5vdCBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iYXNldHlwZS5fX2luaXRfXyhtZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIG1lLmZvbyA9ICdiYXInCisKKyAgICAgICAgYiA9IEIyLmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIEIyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZm9vLCAnYmFyJykKIAogCiBjbGFzcyBCeXRlQXJyYXlTdWJjbGFzcyhieXRlYXJyYXkpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iejIucHkgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQppbmRleCA0Nzg5MjFhLi40ODIyNDJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J6Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGdsb2IKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwpAQCAtNTYwLDEzICs1NjEsMjAgQEAKICAgICAgICAgd2l0aCBCWjJGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKIAorICAgIGRlZiB0ZXN0T3BlblBhdGhMaWtlRmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKHNlbGYuZmlsZW5hbWUpCisgICAgICAgIHdpdGggQloyRmlsZShmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5EQVRBKQorICAgICAgICB3aXRoIEJaMkZpbGUoZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisKICAgICBkZWYgdGVzdERlY29tcHJlc3NMaW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBjb21wcmVzc2xldmVsPTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSkKIAogICAgICAgICBkZWNvbXAgPSBCWjJGaWxlKEJ5dGVzSU8oYm9tYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weSBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKaW5kZXggNWRlM2NlOC4uNmM3Y2RkMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CkBAIC03MjMsMTkgKzcyMywxOSBAQAogCiAgICAgZGVmIGFzc2VydEZhaWx1cmUoc2VsZiwgKmFyZ3MpOgogICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1tJywgJ2NhbGVuZGFyJywgKmFyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYidVc2FnZTonLCBzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYid1c2FnZTonLCBzdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDIpCiAKICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgogICAgICAgICBzdGRvdXQgPSBzZWxmLnJ1bl9vaygnLWgnKQotICAgICAgICBzZWxmLmFzc2VydEluKGInVXNhZ2U6Jywgc3Rkb3V0KQorICAgICAgICBzZWxmLmFzc2VydEluKGIndXNhZ2U6Jywgc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydEluKGInY2FsZW5kYXIucHknLCBzdGRvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYictLWhlbHAnLCBzdGRvdXQpCiAKICAgICBkZWYgdGVzdF9pbGxlZ2FsX2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCcteicpCi0gICAgICAgICNzZWxmLmFzc2VydEZhaWx1cmUoJ3NwYW0nKQotICAgICAgICAjc2VsZi5hc3NlcnRGYWlsdXJlKCcyMDA0JywgJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJzIwMDQnLCAnc3BhbScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnLXQnLCAnaHRtbCcsICcyMDA0JywgJzEnKQogCiAgICAgZGVmIHRlc3Rfb3V0cHV0X2N1cnJlbnRfeWVhcihzZWxmKToKQEAgLTgzNiw1ICs4MzYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICBiJ2hyZWY9ImN1c3RvbS5jc3MiIC8+Jywgc3Rkb3V0KQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J21kYXlzJywgJ0phbnVhcnknLCAnRmVicnVhcnknLCAnRVBPQ0gnLAorICAgICAgICAgICAgICAgICAgICAgJ01PTkRBWScsICdUVUVTREFZJywgJ1dFRE5FU0RBWScsICdUSFVSU0RBWScsICdGUklEQVknLAorICAgICAgICAgICAgICAgICAgICAgJ1NBVFVSREFZJywgJ1NVTkRBWScsICdkaWZmZXJlbnRfbG9jYWxlJywgJ2MnLAorICAgICAgICAgICAgICAgICAgICAgJ3Byd2VlaycsICd3ZWVrJywgJ2Zvcm1hdCcsICdmb3JtYXRzdHJpbmcnLCAnbWFpbid9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNhbGVuZGFyLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggMWVhZGQyMi4uNmMzNjI1ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNCw4ICs0LDEwIEBACiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KK2ltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtMjIwLDggKzIyMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ3Jlc3VsdCB3aXRoIGFuIGVycm9yIHNldFxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidWYWx1ZUVycm9yXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ29mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInU3lzdGVtRXJyb3I6IDxidWlsdC1pbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ2Z1bmN0aW9uIHJldHVybl9yZXN1bHRfd2l0aF9lcnJvcj4gJwpAQCAtNDQyLDYgKzQ0NCw3IEBACiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWRfb3V0cHV0KQogCisKIGNsYXNzIFNraXBpdGVtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9za2lwaXRlbShzZWxmKToKQEAgLTQ5MSwxMCArNDk0LDEwIEBACiAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3Jkcyh0dXBsZV8xLCBkaWN0X2IsCiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIChpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj4pIgogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gc2tpcHBlZApAQCAtNTAzLDcgKzUwNiw3IEBACiAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhlbXB0eV90dXBsZSwgZGljdF9iLAogICAgICAgICAgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKICAgICAgICAgICAgICAgICB3aGVuX3NraXBwZWQgPSBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCiAgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQogCkBAIC01MjQsNiArNTI3LDMyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbNDJdKQogCisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBwYXJzZSA9IF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMKKworICAgICAgICBwYXJzZSgoMSwgMiwgMyksIHt9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCAyKSwgeydhJzogM30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDEgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwgeydhJzogM30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgpLCB7fSwgYidPfE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsIDIpLCB7J2EnOiAzfSwgYidPTyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgZXhhY3RseSAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMSBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7J2EnOiAzfSwgYidPTyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoKSwge30sIGInT3xPJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3lzdGVtRXJyb3IsIHInRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgXCQnKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098JE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5c3RlbUVycm9yLCAnRW1wdHkga2V5d29yZCcpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPTycsIFsnJywgJ2EnLCAnJ10pCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFRlc3RUaHJlYWRTdGF0ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU0OCw2ICs1NzcsNyBAQAogICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgdC5qb2luKCkKIAorCiBjbGFzcyBUZXN0X3Rlc3RjYXBpKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9fdGVzdGNhcGkoc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluIGRpcihfdGVzdGNhcGkpOgpAQCAtNTU2LDUgKzU4Niw4NSBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihfdGVzdGNhcGksIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHRlc3QoKQogCisKK2NsYXNzIFB5TWVtRGVidWdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgUFlUSE9OTUFMTE9DID0gJ2RlYnVnJworICAgICMgJzB4MDRjMDZlMCcgb3IgJzA0QzA2RTAnCisgICAgUFRSX1JFR0VYID0gcicoPzoweCk/WzAtOWEtZkEtRl0rJworCisgICAgZGVmIGNoZWNrKHNlbGYsIGNvZGUpOgorICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgb3V0ID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OTUFMTE9DPXNlbGYuUFlUSE9OTUFMTE9DKQorICAgICAgICBzdGRlcnIgPSBvdXQuZXJyCisgICAgICAgIHJldHVybiBzdGRlcnIuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKKworICAgIGRlZiB0ZXN0X2J1ZmZlcl9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjaygnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX2J1ZmZlcl9vdmVyZmxvdygpJykKKyAgICAgICAgcmVnZXggPSAociJEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPXtwdHJ9OiBBUEkgJ20nXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIDE2IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgcC1bMC05XSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgdGFpbD17cHRyfSBhcmUgbm90IGFsbCBGT1JCSURERU5CWVRFIFwoMHhbMC05YS1mXXt7Mn19XCk6XG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCswOiAweDc4IFwqXCpcKiBPVUNIXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCsxOiAweGZiXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCsyOiAweGZiXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICAuKlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjWzAtOV0rIHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBEYXRhIGF0IHA6IGNiIGNiIGNiIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiXG4iCisgICAgICAgICAgICAgICAgIHIiRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgdHJhaWxpbmcgcGFkIGJ5dGUiKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChwdHI9c2VsZi5QVFJfUkVHRVgpCisgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyZWdleCwgZmxhZ3M9cmUuRE9UQUxMKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9hcGlfbWlzdXNlKHNlbGYpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKCdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHltZW1fYXBpX21pc3VzZSgpJykKKyAgICAgICAgcmVnZXggPSAociJEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPXtwdHJ9OiBBUEkgJ20nXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIDE2IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgcC1bMC05XSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgdGFpbD17cHRyfSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICNbMC05XSsgdG8gZGVidWcgbWFsbG9jL3JlYWxsb2MuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIERhdGEgYXQgcDogY2IgY2IgY2IgLipcbiIKKyAgICAgICAgICAgICAgICAgciJcbiIKKyAgICAgICAgICAgICAgICAgciJGYXRhbCBQeXRob24gZXJyb3I6IGJhZCBJRDogQWxsb2NhdGVkIHVzaW5nIEFQSSAnbScsIHZlcmlmaWVkIHVzaW5nIEFQSSAncidcbiIpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KHB0cj1zZWxmLlBUUl9SRUdFWCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXQsIHJlZ2V4KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGVzdCByZXF1aXJlcyBhIEdJTCAobXVsdGl0aHJlYWRpbmcpJykKKyAgICBkZWYgY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYsIGNvZGUpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKGNvZGUpCisgICAgICAgIGV4cGVjdGVkID0gKCdGYXRhbCBQeXRob24gZXJyb3I6IFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICAgICd3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWQsIG91dCkKKworICAgIGRlZiB0ZXN0X3B5bWVtX21hbGxvY193aXRob3V0X2dpbChzZWxmKToKKyAgICAgICAgIyBEZWJ1ZyBob29rcyBtdXN0IHJhaXNlIGFuIGVycm9yIGlmIFB5TWVtX01hbGxvYygpIGlzIGNhbGxlZAorICAgICAgICAjIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgIGNvZGUgPSAnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX21hbGxvY193aXRob3V0X2dpbCgpJworICAgICAgICBzZWxmLmNoZWNrX21hbGxvY193aXRob3V0X2dpbChjb2RlKQorCisgICAgZGVmIHRlc3RfcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIERlYnVnIGhvb2tzIG11c3QgcmFpc2UgYW4gZXJyb3IgaWYgUHlPYmplY3RfTWFsbG9jKCkgaXMgY2FsbGVkCisgICAgICAgICMgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKCknCisgICAgICAgIHNlbGYuY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKGNvZGUpCisKKworY2xhc3MgUHlNZW1NYWxsb2NEZWJ1Z1Rlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgUFlUSE9OTUFMTE9DID0gJ21hbGxvY19kZWJ1ZycKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfUFlNQUxMT0MnKSA9PSAxLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgcHltYWxsb2MnKQorY2xhc3MgUHlNZW1QeW1hbGxvY0RlYnVnVGVzdHMoUHlNZW1EZWJ1Z1Rlc3RzKToKKyAgICBQWVRIT05NQUxMT0MgPSAncHltYWxsb2NfZGVidWcnCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoUHlfREVCVUcsICduZWVkIFB5X0RFQlVHJykKK2NsYXNzIFB5TWVtRGVmYXVsdFRlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgIyB0ZXN0IGRlZmF1bHQgYWxsb2NhdG9yIG9mIFB5dGhvbiBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlCisgICAgUFlUSE9OTUFMTE9DID0gJycKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQppbmRleCBhYjlmNmFiLi42MzczMjIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NnaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NnaS5weQpAQCAtNyw2ICs3LDcgQEAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIEJ5dGVzSU8KK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBIYWNrZWRTeXNNb2R1bGU6CiAgICAgIyBUaGUgcmVncmVzc2lvbiB0ZXN0IHdpbGwgaGF2ZSByZWFsIHZhbHVlcyBpbiBzeXMuYXJndiwgd2hpY2gKQEAgLTE0Nyw3ICsxNDgsNyBAQAogICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKICAgICAgICAgIyBjZ2kuZXNjYXBlKCkgaXMgZGVwcmVjYXRlZC4KICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsICdjZ2lcLmVzY2FwZScsCisgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgcidjZ2lcLmVzY2FwZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQpAQCAtNDczLDYgKzQ3NCwxMSBAQAogICAgICAgICAgICAgY2dpLnBhcnNlX2hlYWRlcignZm9ybS1kYXRhOyBuYW1lPSJmaWxlcyI7IGZpbGVuYW1lPSJmb1xcIm87YmFyIicpLAogICAgICAgICAgICAgKCJmb3JtLWRhdGEiLCB7Im5hbWUiOiAiZmlsZXMiLCAiZmlsZW5hbWUiOiAnZm8ibztiYXInfSkpCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsibG9nZmlsZSIsICJsb2dmcCIsICJpbml0bG9nIiwgImRvbG9nIiwgIm5vbG9nIiwKKyAgICAgICAgICAgICAgICAgICAgICJjbG9zZWxvZyIsICJsb2ciLCAibWF4bGVuIiwgInZhbGlkX2JvdW5kYXJ5In0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY2dpLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiAKIEJPVU5EQVJZID0gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTcyMTgzNzM3MzM1MDcwNTUyNjY4ODE2NDY4NCIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQppbmRleCA0MDY0YWVmLi4wZDQ1OTRkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weQpAQCAtOSw3ICs5LDcgQEAKIAogIiIiIyIKIAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgY29kZWNzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CmluZGV4IDFmODg0ZTUuLjA0NTFmYjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQpAQCAtNCw2ICs0LDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNtYXRoLCBtYXRoCiBmcm9tIGNtYXRoIGltcG9ydCBwaGFzZSwgcG9sYXIsIHJlY3QsIHBpCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIAogSU5GID0gZmxvYXQoJ2luZicpCkBAIC0xNTQsNiArMTU2LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY21hdGguZSwgZV9leHBlY3RlZCwgcGxhY2VzPTksCiAgICAgICAgICAgICBtc2c9ImNtYXRoLmUgaXMge307IHNob3VsZCBiZSB7fSIuZm9ybWF0KGNtYXRoLmUsIGVfZXhwZWN0ZWQpKQogCisgICAgZGVmIHRlc3RfaW5maW5pdHlfYW5kX25hbl9jb25zdGFudHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mLnJlYWwsIG1hdGguaW5mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZi5pbWFnLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mai5yZWFsLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mai5pbWFnLCBtYXRoLmluZikKKworICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihjbWF0aC5uYW4ucmVhbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGgubmFuLmltYWcsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5uYW5qLnJlYWwsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oY21hdGgubmFuai5pbWFnKSkKKworICAgICAgICAjIENoZWNrIGNvbnNpc3RlbmN5IHdpdGggcmVwcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5pbmYpLCAiaW5mIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLmluZmopLCAiaW5maiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5uYW4pLCAibmFuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLm5hbmopLCAibmFuaiIpCisKICAgICBkZWYgdGVzdF91c2VyX29iamVjdChzZWxmKToKICAgICAgICAgIyBUZXN0IGF1dG9tYXRpYyBjYWxsaW5nIG9mIF9fY29tcGxleF9fIGFuZCBfX2Zsb2F0X18gYnkgY21hdGgKICAgICAgICAgIyBmdW5jdGlvbnMKQEAgLTMxNSw2ICszMzQsMTggQEAKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X3NwZWNpZmljX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgIyBTb21lIHRlc3RzIG5lZWQgdG8gYmUgc2tpcHBlZCBvbiBhbmNpZW50IE9TIFggdmVyc2lvbnMuCisgICAgICAgICMgU2VlIGlzc3VlICMyNzk1My4KKyAgICAgICAgU0tJUF9PTl9USUdFUiA9IHsndGFuMDA2NCd9CisKKyAgICAgICAgb3N4X3ZlcnNpb24gPSBOb25lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHZlcnNpb25fdHh0ID0gcGxhdGZvcm0ubWFjX3ZlcigpWzBdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBkZWYgcmVjdF9jb21wbGV4KHopOgogICAgICAgICAgICAgIiIiV3JhcHBlZCB2ZXJzaW9uIG9mIHJlY3QgdGhhdCBhY2NlcHRzIGEgY29tcGxleCBudW1iZXIgaW5zdGVhZCBvZgogICAgICAgICAgICAgdHdvIGZsb2F0IGFyZ3VtZW50cy4iIiIKQEAgLTMyOCw2ICszNTksMTIgQEAKICAgICAgICAgZm9yIGlkLCBmbiwgYXIsIGFpLCBlciwgZWksIGZsYWdzIGluIHBhcnNlX3Rlc3RmaWxlKHRlc3RfZmlsZSk6CiAgICAgICAgICAgICBhcmcgPSBjb21wbGV4KGFyLCBhaSkKICAgICAgICAgICAgIGV4cGVjdGVkID0gY29tcGxleChlciwgZWkpCisKKyAgICAgICAgICAgICMgU2tpcCBjZXJ0YWluIHRlc3RzIG9uIE9TIFggMTAuNC4KKyAgICAgICAgICAgIGlmIG9zeF92ZXJzaW9uIGlzIG5vdCBOb25lIGFuZCBvc3hfdmVyc2lvbiA8ICgxMCwgNSk6CisgICAgICAgICAgICAgICAgaWYgaWQgaW4gU0tJUF9PTl9USUdFUjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICAgICAgaWYgZm4gPT0gJ3JlY3QnOgogICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gcmVjdF9jb21wbGV4CiAgICAgICAgICAgICBlbGlmIGZuID09ICdwb2xhcic6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQppbmRleCAzZDJmNzY5Li44NzU3MWQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKQEAgLTM0OCw4ICszNDgsOSBAQAogICAgICAgICAgICAgdGVzdC5zdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKS5fX2VudGVyX18oKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgneCcpCiAgICAgICAgICAgICBvcy5jbG9zZShzeXMuc3Rkb3V0LmZpbGVubygpKSIiIgotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyMCwgcmMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLmRlY29kZSgnYXNjaWknLCAnaWdub3JlJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbiBpZ25vcmVkIGluLipcbk9TRXJyb3I6IC4qJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQppbmRleCBiZWZlMGU0Li4zOGNiMmUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQpAQCAtMTM4LDkgKzEzOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsIGV4cGVjdGVkX2xvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgotICAgICAgICBpZiBub3QgX19kZWJ1Z19fOgotICAgICAgICAgICAgY21kX2xpbmVfc3dpdGNoZXMgKz0gKCctJyArICdPJyAqIHN5cy5mbGFncy5vcHRpbWl6ZSwpCi0gICAgICAgIHJ1bl9hcmdzID0gY21kX2xpbmVfc3dpdGNoZXMgKyAoc2NyaXB0X25hbWUsKSArIHR1cGxlKGV4YW1wbGVfYXJncykKKyAgICAgICAgcnVuX2FyZ3MgPSBbKnN1cHBvcnQub3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcywgc2NyaXB0X25hbWUsICpleGFtcGxlX2FyZ3NdCiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKnJ1bl9hcmdzLCBfX2lzb2xhdGVkPUZhbHNlKQogICAgICAgICBzZWxmLl9jaGVja19vdXRwdXQoc2NyaXB0X25hbWUsIHJjLCBvdXQgKyBlcnIsIGV4cGVjdGVkX2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9hcmd2MCwgZXhwZWN0ZWRfcGF0aDAsCkBAIC00MjksNyArNDI4LDcgQEAKICAgICAgICAgICAgICgnYnVpbHRpbnMueCcsIGJyJ0Vycm9yIHdoaWxlIGZpbmRpbmcgbW9kdWxlIHNwZWNpZmljYXRpb24uKicKICAgICAgICAgICAgICAgICBicidBdHRyaWJ1dGVFcnJvcicpLAogICAgICAgICAgICAgKCdidWlsdGlucy54LnknLCBicidFcnJvciB3aGlsZSBmaW5kaW5nIG1vZHVsZSBzcGVjaWZpY2F0aW9uLionCi0gICAgICAgICAgICAgICAgYnInSW1wb3J0RXJyb3IuKk5vIG1vZHVsZSBuYW1lZC4qbm90IGEgcGFja2FnZScpLAorICAgICAgICAgICAgICAgIGJyJ01vZHVsZU5vdEZvdW5kRXJyb3IuKk5vIG1vZHVsZSBuYW1lZC4qbm90IGEgcGFja2FnZScpLAogICAgICAgICAgICAgKCdvcy5wYXRoJywgYnInbG9hZGVyLipjYW5ub3QgaGFuZGxlJyksCiAgICAgICAgICAgICAoJ2ltcG9ydGxpYicsIGJyJ05vIG1vZHVsZSBuYW1lZC4qJwogICAgICAgICAgICAgICAgIGJyJ2lzIGEgcGFja2FnZSBhbmQgY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkJyksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQppbmRleCAzMzk0YjM5Li4xYThmNjk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgICAgIyB3aXRoIGJhbm5lcgogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9J0ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDMpCiAgICAgICAgIGJhbm5lcl9jYWxsID0gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFubmVyX2NhbGwsIFsnd3JpdGUnLCAoJ0Zvb1xuJywpLCB7fV0pCiAKQEAgLTc3LDggKzc3LDM2IEBACiAgICAgICAgIHNlbGYuc3RkZXJyLnJlc2V0X21vY2soKQogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCiAgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisKKyAgICBkZWYgdGVzdF9leGl0X21zZyhzZWxmKToKKyAgICAgICAgIyBkZWZhdWx0IGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIGVycl9tc2cgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMV0KKyAgICAgICAgZXhwZWN0ZWQgPSAnbm93IGV4aXRpbmcgSW50ZXJhY3RpdmVDb25zb2xlLi4uXG4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyX21zZywgWyd3cml0ZScsIChleHBlY3RlZCwpLCB7fV0pCisKKyAgICAgICAgIyBubyBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJywgZXhpdG1zZz0nJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMSkKIAorICAgICAgICAjIGN1c3RvbSBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCisgICAgICAgIG1lc3NhZ2UgPSAoCisgICAgICAgICAgICAnYnllISBcTntHUkVFSyBTTUFMTCBMRVRURVIgWkVUQX1cTntDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFfScKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnLCBleGl0bXNnPW1lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDIpCisgICAgICAgIGVycl9tc2cgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMV0KKyAgICAgICAgZXhwZWN0ZWQgPSBtZXNzYWdlICsgJ1xuJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycl9tc2csIFsnd3JpdGUnLCAoZXhwZWN0ZWQsKSwge31dKQorCisKICAgICBkZWYgdGVzdF9jYXVzZV90YihzZWxmKToKICAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIGZyb20gQXR0cmlidXRlRXJyb3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU9GRXJyb3IoJ0ZpbmlzaGVkJyldCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQppbmRleCBlZTFlMjhhLi42YTNlOTkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdW5pY29kZWRhdGEKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiAKIGNsYXNzIFBvc1JldHVybjoKICAgICAjIHRoaXMgY2FuIGJlIHVzZWQgZm9yIGNvbmZpZ3VyYWJsZSBjYWxsYmFja3MKQEAgLTI4MSwxMiArMjgwLDEyIEBACiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgYiJcXHUzMDQyXHUzeHh4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKKyAgICAgICAgICAgIGIiXFx1MzA0MlxcdTN4eHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAogICAgICAgICAgICAgIlx1MzA0Mls8OTI+PDExNz48NTE+XXh4eCIKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBiIlxcdTMwNDJcdTN4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCisgICAgICAgICAgICBiIlxcdTMwNDJcXHUzeHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAogICAgICAgICAgICAgIlx1MzA0Mls8OTI+PDExNz48NTE+XXh4IgogICAgICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGQwZTNhMTUuLjNiZGY3ZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUFJDIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQppbmRleCBiYjliZTExLi5jNWUyZjk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIEhvbmdLb25nIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKaW5kZXggOGEzY2E3MC4uMDBlYTFjMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQpAQCAtMSw2ICsxLDUgQEAKICMgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIElTTyAyMDIyIGVuY29kaW5ncy4KIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCA0NGI2M2EwLi45NDM3OGQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIEphcGFuZXNlIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBiNmE3NGZiLi44NjNkMTZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFJPSyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKaW5kZXggOTE3NDI5Ni4uYmIxZDEzMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBST0MgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggZjFiZDM4NC4uODllNTFjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUFJDIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKaW5kZXggNGMwYzQxNS4uN2E0OGQyNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgSG9uZ0tvbmcgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQppbmRleCA1NzczODIzLi5mZGZlYzgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBKYXBhbmVzZSBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CmluZGV4IDZjYjQxYzguLjQ3MWNkNzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFJPSyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CmluZGV4IDJlYTQ0YjUuLjE0NWE5N2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFJPQyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CmluZGV4IDAxM2VjNjQuLjFlNjNlZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CkBAIC00LDE2ICs0LDEwIEBACiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVuY29kaW5ncwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgVklTVEFfT1JfTEFURVIgPSAoc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3IgPj0gNikKLWVsc2U6Ci0gICAgVklTVEFfT1JfTEFURVIgPSBGYWxzZQotCiB0cnk6CiAgICAgaW1wb3J0IGN0eXBlcwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjcsNiArMjEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVyKGlucHV0KSwgKGV4cGVjdCwgbGVuKGlucHV0KSkpCiAgICAgcmV0dXJuIGNoZWNrCiAKKwogY2xhc3MgUXVldWUob2JqZWN0KToKICAgICAiIiIKICAgICBxdWV1ZTogd3JpdGUgYnl0ZXMgYXQgb25lIGVuZCwgcmVhZCBieXRlcyBmcm9tIHRoZSBvdGhlciBlbmQKQEAgLTQ3LDYgKzQyLDcgQEAKICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzaXplOl0KICAgICAgICAgICAgIHJldHVybiBzCiAKKwogY2xhc3MgTWl4SW5DaGVja1N0YXRlSGFuZGxpbmc6CiAgICAgZGVmIGNoZWNrX3N0YXRlX2hhbmRsaW5nX2RlY29kZShzZWxmLCBlbmNvZGluZywgdSwgcyk6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzKSsxKToKQEAgLTgwLDYgKzc2LDcgQEAKICAgICAgICAgICAgIHBhcnQyID0gZC5lbmNvZGUodVtpOl0sIFRydWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHBhcnQxK3BhcnQyKQogCisKIGNsYXNzIFJlYWRUZXN0KE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nKToKICAgICBkZWYgY2hlY2tfcGFydGlhbChzZWxmLCBpbnB1dCwgcGFydGlhbHJlc3VsdHMpOgogICAgICAgICAjIGdldCBhIFN0cmVhbVJlYWRlciBmb3IgdGhlIGVuY29kaW5nIGFuZCBmZWVkIHRoZSBieXRlc3RyaW5nIHZlcnNpb24KQEAgLTM1OCw2ICszNTUsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJbP10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKIAorICAgICAgICAjIHNlcXVlbnRpYWwgc3Vycm9nYXRlIGNoYXJhY3RlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAiaWdub3JlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIltdIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdUQ4MDBcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiWz8/XSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQorCiAgICAgICAgIGJvbSA9ICIiLmVuY29kZShzZWxmLmVuY29kaW5nKQogICAgICAgICBmb3IgYmVmb3JlLCBhZnRlciBpbiBbKCJcVTAwMDEwZmZmIiwgIkEiKSwgKCJbIiwgIl0iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiQSIsICJcVTAwMDEwZmZmIildOgpAQCAtMzgzLDYgKzM4Niw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rfc2VxdWVuY2UuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJiYWNrc2xhc2hyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSArIGJhY2tzbGFzaHJlcGxhY2UgKyBhZnRlcikKIAorCiBjbGFzcyBVVEYzMlRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzIiCiAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAnbGl0dGxlJzoKQEAgLTQ3OCw2ICs0ODIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9kZWNvZGUoZW5jb2RlZF9iZSlbMF0pCiAKKwogY2xhc3MgVVRGMzJMRVRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzItbGUiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHg4MFx4ZGNceDAwXHgwMCIKQEAgLTUyMyw2ICs1MjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwMDAwJyAqIDEwMjQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLnV0Zl8zMl9sZV9kZWNvZGUoZW5jb2RlZClbMF0pCiAKKwogY2xhc3MgVVRGMzJCRVRlc3QoUmVhZFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtMzItYmUiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHgwMFx4MDBceGRjXHg4MCIKQEAgLTc0Nyw2ICs3NTMsNyBAQAogICAgIGVuY29kaW5nID0gInV0Zi04IgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2UgPSBiIlx4ZWRceGIyXHg4MCIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlX3JlcGxhY2UgPSAiXHVmZmZkIiAqIDMKKyAgICBCT00gPSBiJycKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcGFydGlhbCgKQEAgLTc3NSwyNyArNzgyLDQ5IEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKHNlbGYuZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogCisgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGM4MFx1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsICdbXFx4ODBcXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoc2VsZi5lbmNvZGluZywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X2xvbmVfc3Vycm9nYXRlcyhzZWxmKToKICAgICAgICAgc3VwZXIoKS50ZXN0X2xvbmVfc3Vycm9nYXRlcygpCiAgICAgICAgICMgbm90IHN1cmUgaWYgdGhpcyBpcyBtYWtpbmcgc2Vuc2UgZm9yCiAgICAgICAgICMgVVRGLTE2IGFuZCBVVEYtMzIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgndXRmLTgnLCAic3Vycm9nYXRlZXNjYXBlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidbXHg4MF0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVlc2NhcGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGInW1x4ODBdJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAiW1x1REM4MFx1RDgwMFx1REZGRl0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlZXNjYXBlIikKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLm9iamVjdFtleGMuc3RhcnQ6ZXhjLmVuZF0sICdcdUQ4MDBcdURGRkYnKQogCiAgICAgZGVmIHRlc3Rfc3Vycm9nYXRlcGFzc19oYW5kbGVyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYidbXHhlZFx4YTBceDgwXHhlZFx4YjJceDgwXScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiImFiY1x4ZWRceGEwXHg4MGRlZiIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJcVTAwMDEwZmZmXHVEODAwIikKKwogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0gICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQorICAgICAgICAgICAgYiJhYmNceGVkXHhhMCIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgotICAgICAgICAgICAgYiJhYmNceGVkXHhhMHoiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCisgICAgICAgICAgICBiImFiY1x4ZWRceGEweiIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIikKKwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKICAgICAgICAgICAgICAgICAgICAgICdjcDY1MDAxIGlzIGEgV2luZG93cy1vbmx5IGNvZGVjJykKQEAgLTgwNywxOCArODM2LDEzIEBACiAgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAogICAgICAgICAgICAgKCdceGU5XHUyMGFjJywgJ3N0cmljdCcsICBiJ1x4YzNceGE5XHhlMlx4ODJceGFjJyksCiAgICAgICAgICAgICAoJ1xVMDAxMGZmZmYnLCAnc3RyaWN0JywgYidceGY0XHg4Zlx4YmZceGJmJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdyZXBsYWNlJywgYic/JyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICduYW1lcmVwbGFjZScsIGInXFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCiAgICAgICAgIF0KLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIE5vbmUpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2lnbm9yZScsIGInJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAncmVwbGFjZScsIGInPycpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICduYW1lcmVwbGFjZScsIGInXFx1ZGM4MCcpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N1cnJvZ2F0ZXBhc3MnLCBiJ1x4ZWRceGIyXHg4MCcpLAotICAgICAgICAgICAgKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmFwcGVuZCgoJ1x1ZGM4MCcsICdzdHJpY3QnLCBiJ1x4ZWRceGIyXHg4MCcpKQogICAgICAgICBmb3IgdGV4dCwgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTg0NSwxNyArODY5LDEwIEBACiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKICAgICAgICAgXQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgTm9uZSksCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnaWdub3JlJywgJ1tdJyksCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXHVmZmZkXScpLAotICAgICAgICAgICAgKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnc3RyaWN0JywgJ1tcdWRjODBdJyksCi0gICAgICAgICAgICApKQogICAgICAgICBmb3IgcmF3LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtODcwLDcgKzg4Nyw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgICAgICAgICByYXcuZGVjb2RlLCAnY3A2NTAwMScsIGVycm9ycykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgIlx1ZDgwMCIuZW5jb2RlLCAiY3A2NTAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYiJceGVkXHhhMFx4ODAiLmRlY29kZSwgImNwNjUwMDEiKQpAQCAtODg3LDcgKzkwMyw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAicmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInWz9dJykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9zdXJyb2dhdGVwYXNzX2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCkBAIC0xMDU5LDYgKzEwNzQsNyBAQAogCiBjbGFzcyBVVEY4U2lnVGVzdChVVEY4VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi04LXNpZyIKKyAgICBCT00gPSBjb2RlY3MuQk9NX1VURjgKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWwoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcGFydGlhbCgKQEAgLTExNTksNyArMTE3NSw3IEBACiAgICAgICAgIGNoZWNrKGIiW1xcXG5dIiwgYiJbXSIpCiAgICAgICAgIGNoZWNrKGJyJ1tcIl0nLCBiJ1siXScpCiAgICAgICAgIGNoZWNrKGJyIltcJ10iLCBiIlsnXSIpCi0gICAgICAgIGNoZWNrKGJyIltcXF0iLCBiciJbXF0iKQorICAgICAgICBjaGVjayhiciJbXFxdIiwgYiJbXFxdIikKICAgICAgICAgY2hlY2soYnIiW1xhXSIsIGIiW1x4MDddIikKICAgICAgICAgY2hlY2soYnIiW1xiXSIsIGIiW1x4MDhdIikKICAgICAgICAgY2hlY2soYnIiW1x0XSIsIGIiW1x4MDldIikKQEAgLTExNjgsNyArMTE4NCw2IEBACiAgICAgICAgIGNoZWNrKGJyIltcZl0iLCBiIltceDBjXSIpCiAgICAgICAgIGNoZWNrKGJyIltccl0iLCBiIltceDBkXSIpCiAgICAgICAgIGNoZWNrKGJyIltcN10iLCBiIltceDA3XSIpCi0gICAgICAgIGNoZWNrKGJyIltcOF0iLCBiciJbXDhdIikKICAgICAgICAgY2hlY2soYnIiW1w3OF0iLCBiIltceDA3OF0iKQogICAgICAgICBjaGVjayhiciJbXDQxXSIsIGIiWyFdIikKICAgICAgICAgY2hlY2soYnIiW1w0MThdIiwgYiJbIThdIikKQEAgLTExNzYsMTIgKzExOTEsMTggQEAKICAgICAgICAgY2hlY2soYnIiW1wxMDEwXSIsIGIiW0EwXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNTAxXSIsIGIiW0FdIikKICAgICAgICAgY2hlY2soYnIiW1x4NDFdIiwgYiJbQV0iKQotICAgICAgICBjaGVjayhiciJbXFg0MV0iLCBiciJbXFg0MV0iKQogICAgICAgICBjaGVjayhiciJbXHg0MTBdIiwgYiJbQTBdIikKLSAgICAgICAgZm9yIGIgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgICAgIGlmIGIgbm90IGluIGInXG4iXCdcXGFidG52ZnIwMTIzNDU2N3gnOgotICAgICAgICAgICAgICAgIGIgPSBieXRlcyhbYl0pCi0gICAgICAgICAgICAgICAgY2hlY2soYidcXCcgKyBiLCBiJ1xcJyArIGIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDk3LCAxMjMpOgorICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKKyAgICAgICAgICAgIGlmIGIgbm90IGluIGInYWJmbnJ0dngnOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIsIGIiXFwiICsgYikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYi51cHBlcigpLCBiIlxcIiArIGIudXBwZXIoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOCIsIGIiXFw4IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOSIsIGIiXFw5IikKIAogICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVjb2RlID0gY29kZWNzLmVzY2FwZV9kZWNvZGUKQEAgLTExOTQsNiArMTIxNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlKGJyIltceDBdXHgwIiwgImlnbm9yZSIpLCAoYiJbXSIsIDgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZShiciJbXHgwXVx4MCIsICJyZXBsYWNlIiksIChiIls/XT8iLCA4KSkKIAorCiBjbGFzcyBSZWNvZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3JlY29kaW5nKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTygpCkBAIC0xMzEzLDYgKzEzMzUsNyBAQAogICAgIGlmIGxlbihpKSE9MjoKICAgICAgICAgcHJpbnQocmVwcihpKSkKIAorCiBjbGFzcyBQdW55Y29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKICAgICAgICAgZm9yIHVuaSwgcHVueSBpbiBwdW55Y29kZV90ZXN0Y2FzZXM6CkBAIC0xMzMyLDYgKzEzNTUsNyBAQAogICAgICAgICAgICAgcHVueSA9IHB1bnkuZGVjb2RlKCJhc2NpaSIpLmVuY29kZSgiYXNjaWkiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmksIHB1bnkuZGVjb2RlKCJwdW55Y29kZSIpKQogCisKIGNsYXNzIFVuaWNvZGVJbnRlcm5hbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfYnVnMTI1MTMwMChzZWxmKToKQEAgLTE1ODYsNiArMTYxMCw3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIlRlc3QgMy4lZDogJXMiICUgKHBvcysxLCBzdHIoZSkpKQogCisKIGNsYXNzIElETkFDb2RlY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2J1aWx0aW5fZGVjb2RlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihiInB5dGhvbi5vcmciLCAiaWRuYSIpLCAicHl0aG9uLm9yZyIpCkBAIC0xNjcyLDYgKzE2OTcsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLAogICAgICAgICAgICAgICAgIGIicHl0aG9uLm9yZyIuZGVjb2RlLCAiaWRuYSIsIGVycm9ycykKIAorCiBjbGFzcyBDb2RlY3NNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKQEAgLTE3ODAsNiArMTgwNiw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgY29kZWNzLmRlY29kZSwgYidhYmMnLCAndW5kZWZpbmVkJywgZXJyb3JzKQogCisKIGNsYXNzIFN0cmVhbVJlYWRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTc5MCw2ICsxODE3LDcgQEAKICAgICAgICAgZiA9IHNlbGYucmVhZGVyKHNlbGYuc3RyZWFtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZGxpbmVzKCksIFsnXHVkNTVjXG4nLCAnXHVhZTAwJ10pCiAKKwogY2xhc3MgRW5jb2RlZEZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpAQCAtMTkwOSw2ICsxOTM3LDggQEAKIAogaWYgaGFzYXR0cihjb2RlY3MsICJtYmNzX2VuY29kZSIpOgogICAgIGFsbF91bmljb2RlX2VuY29kaW5ncy5hcHBlbmQoIm1iY3MiKQoraWYgaGFzYXR0cihjb2RlY3MsICJvZW1fZW5jb2RlIik6CisgICAgYWxsX3VuaWNvZGVfZW5jb2RpbmdzLmFwcGVuZCgib2VtIikKIAogIyBUaGUgZm9sbG93aW5nIGVuY29kaW5nIGlzIG5vdCB0ZXN0ZWQsIGJlY2F1c2UgaXQncyBub3Qgc3VwcG9zZWQKICMgdG8gd29yazoKQEAgLTE5MjAsNiArMTk1MCw3IEBACiAgICAgInVuaWNvZGVfaW50ZXJuYWwiCiBdCiAKKwogY2xhc3MgQmFzaWNVbmljb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSwgTWl4SW5DaGVja1N0YXRlSGFuZGxpbmcpOgogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKICAgICAgICAgcyA9ICJhYmMxMjMiICAjIGFsbCBjb2RlY3Mgc2hvdWxkIGJlIGFibGUgdG8gZW5jb2RlIHRoZXNlCkBAIC0yMDgyLDYgKzIxMTMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKGVuY29kaW5nLCB1LCB1LmVuY29kZShlbmNvZGluZykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19lbmNvZGUoZW5jb2RpbmcsIHUsIHUuZW5jb2RlKGVuY29kaW5nKSkKIAorCiBjbGFzcyBDaGFybWFwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGVjb2RlX3dpdGhfc3RyaW5nX21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTIzMzIsNiArMjM2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnN0cmVhbXdyaXRlciwgJ3N0cmljdCcpIGFzIHNydzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3J3LnJlYWQoKSwgIlx4ZmMiKQogCisKIGNsYXNzIFR5cGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGVjb2RlX3VuaWNvZGUoc2VsZik6CiAgICAgICAgICMgTW9zdCBkZWNvZGVycyBkb24ndCBhY2NlcHQgdW5pY29kZSBpbnB1dApAQCAtMjQyMCw3ICsyNDUzLDYgQEAKICAgICAgICAgY2hlY2soYnIiW1xmXSIsICJbXHgwY10iKQogICAgICAgICBjaGVjayhiciJbXHJdIiwgIltceDBkXSIpCiAgICAgICAgIGNoZWNrKGJyIltcN10iLCAiW1x4MDddIikKLSAgICAgICAgY2hlY2soYnIiW1w4XSIsIHIiW1w4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNzhdIiwgIltceDA3OF0iKQogICAgICAgICBjaGVjayhiciJbXDQxXSIsICJbIV0iKQogICAgICAgICBjaGVjayhiciJbXDQxOF0iLCAiWyE4XSIpCkBAIC0yNDMwLDkgKzI0NjIsMTggQEAKICAgICAgICAgY2hlY2soYnIiW1x4NDEwXSIsICJbQTBdIikKICAgICAgICAgY2hlY2soYnIiXHUyMGFjIiwgIlx1MjBhYyIpCiAgICAgICAgIGNoZWNrKGJyIlxVMDAwMWQxMjAiLCAiXFUwMDAxZDEyMCIpCi0gICAgICAgIGZvciBiIGluIHJhbmdlKDI1Nik6Ci0gICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ1xuIlwnXFxhYnRudmZyMDEyMzQ1Njd4dVVOJzoKLSAgICAgICAgICAgICAgICBjaGVjayhiJ1xcJyArIGJ5dGVzKFtiXSksICdcXCcgKyBjaHIoYikpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDk3LCAxMjMpOgorICAgICAgICAgICAgYiA9IGJ5dGVzKFtpXSkKKyAgICAgICAgICAgIGlmIGIgbm90IGluIGInYWJmbnJ0dXZ4JzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLCAiXFwiICsgY2hyKGkpKQorICAgICAgICAgICAgaWYgYi51cHBlcigpIG5vdCBpbiBiJ1VOJzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLnVwcGVyKCksICJcXCIgKyBjaHIoaS0zMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDgiLCAiXFw4IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOSIsICJcXDkiKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVjb2RlID0gY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZQpAQCAtMjY0Miw2ICsyNjgzLDcgQEAKICAgICBieXRlc190cmFuc2Zvcm1fZW5jb2RpbmdzLmFwcGVuZCgiYnoyX2NvZGVjIikKICAgICB0cmFuc2Zvcm1fYWxpYXNlc1siYnoyX2NvZGVjIl0gPSBbImJ6MiJdCiAKKwogY2xhc3MgVHJhbnNmb3JtQ29kZWNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKQEAgLTI2OTQsOCArMjczNiw4IEBACiAgICAgICAgIGJhZF9pbnB1dCA9ICJiYWQgaW5wdXQgdHlwZSIKICAgICAgICAgZm9yIGVuY29kaW5nIGluIGJ5dGVzX3RyYW5zZm9ybV9lbmNvZGluZ3M6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbmNvZGluZz1lbmNvZGluZyk6Ci0gICAgICAgICAgICAgICAgZm10ID0gKCAieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICBmbXQgPSAociJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpIGFzIGZhaWx1cmU6CiAgICAgICAgICAgICAgICAgICAgIGJhZF9pbnB1dC5lbmNvZGUoZW5jb2RpbmcpCkBAIC0yNzA0LDcgKzI3NDYsNyBAQAogICAgIGRlZiB0ZXN0X3RleHRfdG9fYmluYXJ5X2JsYWNrbGlzdHNfdGV4dF90cmFuc2Zvcm1zKHNlbGYpOgogICAgICAgICAjIENoZWNrIHN0ci5lbmNvZGUgZ2l2ZXMgYSBnb29kIGVycm9yIG1lc3NhZ2UgZm9yIHN0ciAtPiBzdHIgY29kZWNzCiAgICAgICAgIG1zZyA9IChyIl4ncm90XzEzJyBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKToKICAgICAgICAgICAgICJqdXN0IGFuIGV4YW1wbGUgbWVzc2FnZSIuZW5jb2RlKCJyb3RfMTMiKQogCkBAIC0yNzE2LDcgKzI3NTgsNyBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW5jb2Rpbmc9ZW5jb2RpbmcpOgogICAgICAgICAgICAgICAgIGVuY29kZWRfZGF0YSA9IGNvZGVjcy5lbmNvZGUoZGF0YSwgZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgZm10ID0gKHIieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpOgogICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2RhdGEuZGVjb2RlKGVuY29kaW5nKQpAQCAtMjcyOCw3ICsyNzcwLDcgQEAKICAgICAgICAgZm9yIGJhZF9pbnB1dCBpbiAoYiJpbW11dGFibGUiLCBieXRlYXJyYXkoYiJtdXRhYmxlIikpOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYmFkX2lucHV0PWJhZF9pbnB1dCk6CiAgICAgICAgICAgICAgICAgbXNnID0gKHIiXidyb3RfMTMnIGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpIGFzIGZhaWx1cmU6CiAgICAgICAgICAgICAgICAgICAgIGJhZF9pbnB1dC5kZWNvZGUoInJvdF8xMyIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmFpbHVyZS5leGNlcHRpb24uX19jYXVzZV9fKQpAQCAtMjk0NywxMiArMjk4OSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsIGIibm90IHN0ciEiKQogICAgICAgICAjIFRleHQgbW9kZWwgbWV0aG9kcyBzaG91bGQgY29tcGxhaW4KICAgICAgICAgZm10ID0gKHIiXnshcn0gZW5jb2RlciByZXR1cm5lZCAnc3RyJyBpbnN0ZWFkIG9mICdieXRlcyc7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGVuY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKICAgICAgICAgbXNnID0gZm10LmZvcm1hdChzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAic3RyX2lucHV0Ii5lbmNvZGUoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICBmbXQgPSAociJeeyFyfSBkZWNvZGVyIHJldHVybmVkICdieXRlcycgaW5zdGVhZCBvZiAnc3RyJzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gZGVjb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gZGVjb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQogICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgIGIiYnl0ZXMgaW5wdXQiLmRlY29kZShzZWxmLmNvZGVjX25hbWUpCkBAIC0zMDkzLDExICszMTM1LDEwIEBACiAgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdpZ25vcmUnLCAnXFUwMDEwZmZmZicpLAogICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAncmVwbGFjZScsICdcdWZmZmRcVTAwMTBmZmZmJyksCiAgICAgICAgICkpCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoc2VsZi5DUF9VVEY4LCAoCi0gICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAnaWdub3JlJywgYidbXHhmNFx4OGZceGJmXHhiZl0nKSwKLSAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdyZXBsYWNlJywgYidbXHhmNFx4OGZceGJmXHhiZj9dJyksCi0gICAgICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShzZWxmLkNQX1VURjgsICgKKyAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCisgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdyZXBsYWNlJywgYidbXHhmNFx4OGZceGJmXHhiZj9dJyksCisgICAgICAgICkpCiAKICAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwgYidceDgyJywgJ3N0cmljdCcsIEZhbHNlKQpAQCAtMzExOCw2ICszMTU5LDk2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCAoJ2FiYycsIDMpKQogCisgICAgZGVmIHRlc3RfbWJjc19hbGlhcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGxvb2tpbmcgdXAgb3VyICdkZWZhdWx0JyBjb2RlcGFnZSB3aWxsIHJldHVybgorICAgICAgICAjIG1iY3Mgd2hlbiB3ZSBkb24ndCBoYXZlIGEgbW9yZSBzcGVjaWZpYyBvbmUgYXZhaWxhYmxlCisgICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQorICAgICAgICBkZWYgX2dldF9mYWtlX2NvZGVwYWdlKCphKToKKyAgICAgICAgICAgIHJldHVybiAnY3AxMjMnCisgICAgICAgIG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nCisgICAgICAgIF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nID0gX2dldF9mYWtlX2NvZGVwYWdlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvZGVjID0gY29kZWNzLmxvb2t1cCgnY3AxMjMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlYy5uYW1lLCAnbWJjcycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZworCisKK2NsYXNzIEFTQ0lJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMxMjMnLmVuY29kZSgnYXNjaWknKSwgYidhYmMxMjMnKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ2lnbm9yZScsIGInW10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXScsICdyZXBsYWNlJywgYidbPz8/XScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ3htbGNoYXJyZWZyZXBsYWNlJywgYidbJiMxMjg7JiMyNTU7JiM4MzY0O10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXFUwMDBhYmNkZV0nLCAnYmFja3NsYXNocmVwbGFjZScsCisgICAgICAgICAgICAgYidbXFx4ODBcXHhmZlxcdTIwYWNcXFUwMDBhYmNkZV0nKSwKKyAgICAgICAgICAgICgnW1x1ZGM4MFx1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdhc2NpaScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfc3Vycm9nYXRlZXNjYXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICAjIHRoZSBmaXJzdCBjaGFyYWN0ZXIgY2FuIGJlIGRlY29kZWQsIGJ1dCBub3QgdGhlIHNlY29uZAorICAgICAgICAgICAgJ1x1ZGM4MFx4ZmYnLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2FiYycuZGVjb2RlKCdhc2NpaScpLCAnYWJjJykKKworICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjODBcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceDgwXFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCdhc2NpaScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKworY2xhc3MgTGF0aW4xVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdhYmMnLCBiJ2FiYycpLAorICAgICAgICAgICAgKCdceDgwXHhlOVx4ZmYnLCBiJ1x4ODBceGU5XHhmZicpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnbGF0aW4xJyksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAnaWdub3JlJywgYidbXScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICdyZXBsYWNlJywgYidbPz9dJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcVTAwMGFiY2RlXScsICdiYWNrc2xhc2hyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXHUyMGFjXFxVMDAwYWJjZGVdJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ3htbGNoYXJyZWZyZXBsYWNlJywgYidbJiM4MzY0OyYjNTY0NDg7XScpLAorICAgICAgICAgICAgKCdbXHVkYzgwXHVkY2ZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2xhdGluMScsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfc3Vycm9nYXRlZXNjYXBlX2Vycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICAjIHRoZSBmaXJzdCBjaGFyYWN0ZXIgY2FuIGJlIGRlY29kZWQsIGJ1dCBub3QgdGhlIHNlY29uZAorICAgICAgICAgICAgJ1x1ZGM4MFx1MjBhYycuZW5jb2RlKCdsYXRpbjEnLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ2FiYycsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgnbGF0aW4xJyksIGV4cGVjdGVkKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CmluZGV4IDUwOWJmNWQuLjk4ZGEyNmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5CkBAIC0yODIsNyArMjgyLDYgQEAKICAgICAgICAgYWkoImlmIChhID09IDEgYW5kIGIgPSAyKTogcGFzcyIpCiAKICAgICAgICAgYWkoImRlbCAxIikKLSAgICAgICAgYWkoImRlbCAoKSIpCiAgICAgICAgIGFpKCJkZWwgKDEsKSIpCiAgICAgICAgIGFpKCJkZWwgWzFdIikKICAgICAgICAgYWkoImRlbCAnMSciKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKaW5kZXggNTIzODM4Mi4uNTJmZjI1NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CkBAIC0yMCwxMCArMjAsMTAgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEF3YWl0YWJsZSwgQ29yb3V0aW5lLCBBc3luY0l0ZXJhdG9yLCBBc3luY0l0ZXJhYmxlCi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgR2VuZXJhdG9yCi1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBHZW5lcmF0b3IsIFJldmVyc2libGUKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZSwgQ29sbGVjdGlvbgogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNldCwgTXV0YWJsZVNldAotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcsIFZhbHVlc1ZpZXcKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXF1ZW5jZSwgTXV0YWJsZVNlcXVlbmNlCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQnl0ZVN0cmluZwogCkBAIC0yNDIsNiArMjQyLDEwIEBACiAgICAgICAgIF06CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVkdHVwbGUoJ05UJywgc3BlYywgcmVuYW1lPVRydWUpLl9maWVsZHMsIHJlbmFtZWQpCiAKKyAgICBkZWYgdGVzdF9tb2R1bGVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgbW9kdWxlPWNvbGxlY3Rpb25zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5ULl9fbW9kdWxlX18sIGNvbGxlY3Rpb25zKQorCiAgICAgZGVmIHRlc3RfaW5zdGFuY2Uoc2VsZik6CiAgICAgICAgIFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykKICAgICAgICAgcCA9IFBvaW50KDExLCAyMikKQEAgLTQxMiw2ICs0MTYsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVENvbG9yLl9maWVsZHMsICgncmVkJywgJ2dyZWVuJywgJ2JsdWUnKSkKICAgICAgICAgZ2xvYmFscygpLnBvcCgnTlRDb2xvcicsIE5vbmUpICAgICAgICAgICMgY2xlYW4tdXAgYWZ0ZXIgdGhpcyB0ZXN0CiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX29ubHlfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAyNTYyOAorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgdGVtcGxhdGU6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgdmVyYm9zZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjbGFzcyBOVCcsIE5ULl9zb3VyY2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCBUcnVlKQorCisgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ2FiYycsICdkZWYnXSwgcmVuYW1lPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlQuX2ZpZWxkcywgKCdhYmMnLCAnXzEnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsnYWJjJywgJ2RlZiddLCBGYWxzZSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X25hbWVkdHVwbGVfc3ViY2xhc3NfaXNzdWVfMjQ5MzEoc2VsZik6CiAgICAgICAgIGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ19Qb2ludCcsIFsneCcsICd5J10pKToKQEAgLTQ4Nyw2ICs1MDMsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG90aGVyLnJpZ2h0X3NpZGUsJ1JpZ2h0IHNpZGUgbm90IGNhbGxlZCBmb3IgJXMuJXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodHlwZShpbnN0YW5jZSksIG5hbWUpKQogCitkZWYgX3Rlc3RfZ2VuKCk6CisgICAgeWllbGQKKwogY2xhc3MgVGVzdE9uZVRyaWNrUG9ueUFCQ3MoQUJDVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfQXdhaXRhYmxlKHNlbGYpOgpAQCAtNjc0LDcgKzY5Myw3IEBACiAgICAgICAgIHNhbXBsZXMgPSBbYnl0ZXMoKSwgc3RyKCksCiAgICAgICAgICAgICAgICAgICAgdHVwbGUoKSwgbGlzdCgpLCBzZXQoKSwgZnJvemVuc2V0KCksIGRpY3QoKSwKICAgICAgICAgICAgICAgICAgICBkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKSwgZGljdCgpLnZhbHVlcygpLAotICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKQEAgLTY4OCw2ICs3MDcsMTYxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzdHIsIEkpKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoSXRlcmFibGUsICdfX2l0ZXJfXycpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShJdGVyYWJsZSwgJ19faXRlcl9fJykKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIEl0OgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgY2xhc3MgSXRCbG9ja2VkKEl0KToKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhJdCwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShJdCgpLCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhJdEJsb2NrZWQsIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKEl0QmxvY2tlZCgpLCBJdGVyYWJsZSkpCisKKyAgICBkZWYgdGVzdF9SZXZlcnNpYmxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLXJldmVyc2libGVzCisgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgZGljdCgpLCBzZXQoKSwgZnJvemVuc2V0KCldCisgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBub24tcmV2ZXJzaWJsZSBpdGVyYWJsZXMKKyAgICAgICAgbm9uX3JldmVyc2libGVzID0gW2RpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpLCBkaWN0KCkudmFsdWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyKCksIENvdW50ZXIoKS5rZXlzKCksIENvdW50ZXIoKS5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlcigpLnZhbHVlcygpLCBfdGVzdF9nZW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwgaXRlcihbXSksIHJldmVyc2VkKFtdKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3JldmVyc2libGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSByZXZlcnNpYmxlIGl0ZXJhYmxlcworICAgICAgICBzYW1wbGVzID0gW2J5dGVzKCksIHN0cigpLCB0dXBsZSgpLCBsaXN0KCksIE9yZGVyZWREaWN0KCksCisgICAgICAgICAgICAgICAgICAgT3JkZXJlZERpY3QoKS5rZXlzKCksIE9yZGVyZWREaWN0KCkuaXRlbXMoKSwKKyAgICAgICAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLnZhbHVlcygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIFJldmVyc2libGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBhbHNvIE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBhbmQgU2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIFJldmVyc2libGUpLCByZXByKFNlcXVlbmNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKE1hcHBpbmcsIFJldmVyc2libGUpLCByZXByKE1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTXV0YWJsZU1hcHBpbmcsIFJldmVyc2libGUpLCByZXByKE11dGFibGVNYXBwaW5nKSkKKyAgICAgICAgIyBDaGVjayBkaXJlY3Qgc3ViY2xhc3NpbmcKKyAgICAgICAgY2xhc3MgUihSZXZlcnNpYmxlKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHJldmVyc2VkKFIoKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBSKSkKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKFJldmVyc2libGUsICdfX3JldmVyc2VkX18nLCAnX19pdGVyX18nKQorICAgICAgICAjIENoZWNrIHJldmVyc2libGUgbm9uLWl0ZXJhYmxlICh3aGljaCBpcyBub3QgUmV2ZXJzaWJsZSkKKyAgICAgICAgY2xhc3MgUmV2Tm9JdGVyOgorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKTogcmV0dXJuIHJldmVyc2VkKFtdKQorICAgICAgICBjbGFzcyBSZXZQbHVzSXRlcihSZXZOb0l0ZXIpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldk5vSXRlciwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZOb0l0ZXIoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJldlBsdXNJdGVyLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUmV2UGx1c0l0ZXIoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBSZXY6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKTogcmV0dXJuIHJldmVyc2VkKFtdKQorICAgICAgICBjbGFzcyBSZXZJdEJsb2NrZWQoUmV2KToKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBjbGFzcyBSZXZSZXZCbG9ja2VkKFJldik6CisgICAgICAgICAgICBfX3JldmVyc2VkX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFJldiwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFJldigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldkl0QmxvY2tlZCwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZJdEJsb2NrZWQoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhSZXZSZXZCbG9ja2VkLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldlJldkJsb2NrZWQoKSwgUmV2ZXJzaWJsZSkpCisKKyAgICBkZWYgdGVzdF9Db2xsZWN0aW9uKHNlbGYpOgorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWNvbGxlY3Rpb25zCisgICAgICAgIG5vbl9jb2xsZWN0aW9ucyA9IFtOb25lLCA0MiwgMy4xNCwgMWosIGxhbWJkYSB4OiAyKnhdCisgICAgICAgIGZvciB4IGluIG5vbl9jb2xsZWN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLWNvbGxlY3Rpb24gaXRlcmFibGVzCisgICAgICAgIG5vbl9jb2xfaXRlcmFibGVzID0gW190ZXN0X2dlbigpLCBpdGVyKGInJyksIGl0ZXIoYnl0ZWFycmF5KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksIGRpY3QoKS52YWx1ZXMoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX2NvbF9pdGVyYWJsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBDb2xsZWN0aW9uKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIGNvbGxlY3Rpb25zCisgICAgICAgIHNhbXBsZXMgPSBbc2V0KCksIGZyb3plbnNldCgpLCBkaWN0KCksIGJ5dGVzKCksIHN0cigpLCB0dXBsZSgpLAorICAgICAgICAgICAgICAgICAgIGxpc3QoKSwgZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIGFsc28gTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIGV0Yy4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIENvbGxlY3Rpb24pLCByZXByKFNlcXVlbmNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFwcGluZywgQ29sbGVjdGlvbiksIHJlcHIoTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE11dGFibGVNYXBwaW5nLCBDb2xsZWN0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoTXV0YWJsZU1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXQsIENvbGxlY3Rpb24pLCByZXByKFNldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE11dGFibGVTZXQsIENvbGxlY3Rpb24pLCByZXByKE11dGFibGVTZXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgQ29sbGVjdGlvbiksIHJlcHIoTXV0YWJsZVNldCkpCisgICAgICAgICMgQ2hlY2sgZGlyZWN0IHN1YmNsYXNzaW5nCisgICAgICAgIGNsYXNzIENvbChDb2xsZWN0aW9uKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgRGVyQ29sKENvbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoQ29sKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhsaXN0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2V0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKERlckNvbCgpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MobGlzdCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHNldCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoQ29sbGVjdGlvbiwgJ19fbGVuX18nLCAnX19pdGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fY29udGFpbnNfXycpCisgICAgICAgICMgQ2hlY2sgc2l6ZWQgY29udGFpbmVyIG5vbi1pdGVyYWJsZSAod2hpY2ggaXMgbm90IENvbGxlY3Rpb24pIGV0Yy4KKyAgICAgICAgY2xhc3MgQ29sTm9JdGVyOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOiByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ29sTm9TaXplOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6IHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDb2xOb0NvbnQ6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb0l0ZXIsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9JdGVyKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9TaXplLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vU2l6ZSgpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vQ29udCwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb0NvbnQoKSwgQ29sbGVjdGlvbikpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBTaXplQmxvY2s6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmKTogcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBfX2xlbl9fID0gTm9uZQorICAgICAgICBjbGFzcyBJdGVyQmxvY2s6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZik6IHJldHVybiBUcnVlCisgICAgICAgICAgICBfX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFNpemVCbG9jaywgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShTaXplQmxvY2soKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhJdGVyQmxvY2ssIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoSXRlckJsb2NrKCksIENvbGxlY3Rpb24pKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcgaW4gc3ViY2xhc3MKKyAgICAgICAgY2xhc3MgQ29sSW1wbDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgTm9uQ29sKENvbEltcGwpOgorICAgICAgICAgICAgX19jb250YWluc19fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTm9uQ29sLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKE5vbkNvbCgpLCBDb2xsZWN0aW9uKSkKKwogCiAgICAgZGVmIHRlc3RfSXRlcmF0b3Ioc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgYiIiLCAiIiwgKCksIFtdLCB7fSwgc2V0KCldCkBAIC02OTksNyArODczLDcgQEAKICAgICAgICAgICAgICAgICAgICBpdGVyKHNldCgpKSwgaXRlcihmcm96ZW5zZXQoKSksCiAgICAgICAgICAgICAgICAgICAgaXRlcihkaWN0KCkua2V5cygpKSwgaXRlcihkaWN0KCkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgaXRlcihkaWN0KCkudmFsdWVzKCkpLAotICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKQEAgLTc4Nyw3ICs5NjEsNyBAQAogCiAgICAgZGVmIHRlc3RfU2l6ZWQoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTgwNSw3ICs5NzksNyBAQAogCiAgICAgZGVmIHRlc3RfQ29udGFpbmVyKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04MjQsNyArOTk4LDcgQEAKICAgICBkZWYgdGVzdF9DYWxsYWJsZShzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAogICAgICAgICAgICAgICAgICAgICAgICAiIiwgYiIiLCAoKSwgW10sIHt9LCBzZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTg0MiwxNCArMTAxNiwxNCBAQAogICAgICAgICBzZWxmLnZhbGlkYXRlX2lzaW5zdGFuY2UoQ2FsbGFibGUsICdfX2NhbGxfXycpCiAKICAgICBkZWYgdGVzdF9kaXJlY3Rfc3ViY2xhc3Npbmcoc2VsZik6Ci0gICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgorICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBSZXZlcnNpYmxlLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKICAgICAgICAgICAgIGNsYXNzIEMoQik6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQywgQikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoaW50LCBDKSkKIAogICAgIGRlZiB0ZXN0X3JlZ2lzdHJhdGlvbihzZWxmKToKLSAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CisgICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFJldmVyc2libGUsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICBfX2hhc2hfXyA9IE5vbmUgICMgTWFrZSBzdXJlIGl0IGlzbid0IGhhc2hhYmxlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDLCBCKSwgQi5fX25hbWVfXykKQEAgLTEwNDksNiArMTIyMywyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5jcyA+IGNzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobmNzID49IGNzKQogCisgICAgZGVmIHRlc3RfaXNzdWUyNjkxNShzZWxmKToKKyAgICAgICAgIyBDb250YWluZXIgbWVtYmVyc2hpcCB0ZXN0IHNob3VsZCBjaGVjayBpZGVudGl0eSBmaXJzdAorICAgICAgICBjbGFzcyBDdXN0b21FcXVhbE9iamVjdDoKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDdXN0b21TZXF1ZW5jZShsaXN0KToKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBTZXF1ZW5jZS5fX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpCisKKyAgICAgICAgbmFuID0gZmxvYXQoJ25hbicpCisgICAgICAgIG9iaiA9IEN1c3RvbUVxdWFsT2JqZWN0KCkKKyAgICAgICAgY29udGFpbmVycyA9IFsKKyAgICAgICAgICAgIEN1c3RvbVNlcXVlbmNlKFtuYW4sIG9ial0pLAorICAgICAgICAgICAgSXRlbXNWaWV3KHsxOiBuYW4sIDI6IG9ian0pLAorICAgICAgICAgICAgVmFsdWVzVmlldyh7MTogbmFuLCAyOiBvYmp9KQorICAgICAgICBdCisgICAgICAgIGZvciBjb250YWluZXIgaW4gY29udGFpbmVyczoKKyAgICAgICAgICAgIGZvciBlbGVtIGluIGNvbnRhaW5lcjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVsZW0sIGNvbnRhaW5lcikKKwogICAgIGRlZiBhc3NlcnRTYW1lU2V0KHNlbGYsIHMxLCBzMik6CiAgICAgICAgICMgY29lcmNlIGJvdGggdG8gYSByZWFsIHNldCB0aGVuIGNoZWNrIGVxdWFsaXR5CiAgICAgICAgIHNlbGYuYXNzZXJ0U2V0RXF1YWwoc2V0KHMxKSwgc2V0KHMyKSkKQEAgLTEyMTksNiArMTQxMyw3IEBACiAgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoKCkpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfY29tcGFyaXNvbihNeU1hcHBpbmcoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgTXlNYXBwaW5nKCkpCiAKICAgICBkZWYgdGVzdF9NdXRhYmxlTWFwcGluZyhzZWxmKToKICAgICAgICAgZm9yIHNhbXBsZSBpbiBbZGljdF06CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKaW5kZXggODI0ZTg0My4uNDA5ZWM4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQpAQCAtNDczLDEwICs0NzMsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7MTogMiwgMzogNH0pCiAKICAgICBkZWYgdGVzdF9jb21waWxlX2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKCdmaWxlLnB5JywgYidmaWxlLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5JykpOgorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gJ2ZpbGUucHknLCBiJ2ZpbGUucHknOgogICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoJ3Bhc3MnLCBmaWxlbmFtZSwgJ2V4ZWMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjb2RlID0gY29tcGlsZSgncGFzcycsIGZpbGVuYW1lLCAnZXhlYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21waWxlLCAncGFzcycsIGxpc3QoYidmaWxlLnB5JyksICdleGVjJykKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQpAQCAtNjYxLDYgKzY2NCwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZjEoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMigwLjApKQogCisgICAgZGVmIHRlc3RfcGF0aF9saWtlX29iamVjdHMoc2VsZik6CisgICAgICAgICMgQW4gaW1wbGljaXQgdGVzdCBmb3IgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgICAgICBjb21waWxlKCI0MiIsIFBhdGhMaWtlKCJ0ZXN0X2NvbXBpbGVfcGF0aGxpa2UiKSwgInNpbmdsZSIpCisKIAogY2xhc3MgVGVzdFN0YWNrU2l6ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUaGVzZSB0ZXN0cyBjaGVjayB0aGF0IHRoZSBjb21wdXRlZCBzdGFjayBzaXplIGZvciBhIGNvZGUgb2JqZWN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKaW5kZXggMmNlOGE2MS4uMjM1NmVmYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBjb21waWxlYWxsCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKK2ltcG9ydCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBweV9jb21waWxlCkBAIC00MCw2ICs0MSwxMSBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmRpcmVjdG9yeSkKIAorICAgIGRlZiBhZGRfYmFkX3NvdXJjZV9maWxlKHNlbGYpOgorICAgICAgICBzZWxmLmJhZF9zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRpcmVjdG9yeSwgJ190ZXN0X2JhZC5weScpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmJhZF9zb3VyY2VfcGF0aCwgJ3cnKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZSgneCAoXG4nKQorCiAgICAgZGVmIGRhdGEoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihzZWxmLmJjX3BhdGgsICdyYicpIGFzIGZpbGU6CiAgICAgICAgICAgICBkYXRhID0gZmlsZS5yZWFkKDgpCkBAIC03OCwxNSArODQsNDcgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLnNvdXJjZV9wYXRoLCBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgbm90IG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aDIpKQogICAgICAgICBvcy51bmxpbmsoc2VsZi5iY19wYXRoKQotICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBmb3JjZT1GYWxzZSwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIGZvcmNlPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD1UcnVlKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgyKSkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aCkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aDIpCisgICAgICAgICMgVGVzdCBhZ2FpbnN0IGJhZCBmaWxlcworICAgICAgICBzZWxmLmFkZF9iYWRfc291cmNlX2ZpbGUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuYmFkX3NvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PTIpKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgICMgd2Ugc2hvdWxkIGFsc28gdGVzdCB0aGUgb3V0cHV0CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUocGF0aGxpYi5QYXRoKHNlbGYuc291cmNlX3BhdGgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdGRvdXQuZ2V0dmFsdWUoKSwgcidDb21waWxpbmcgKFteV2luZG93c1BhdGh8UG9zaXhQYXRoXS4qKScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlX3BhdGhsaWtlX2RkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHBhdGhsaWIuUGF0aChzZWxmLnNvdXJjZV9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRkaXI9cGF0aGxpYi5QYXRoKCdkZGlyX3BhdGgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0PTIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfcGF0aChzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3NlbGYuZGlyZWN0b3J5XSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX3BhdGgocXVpZXQ9MikpCisKKyAgICAgICAgd2l0aCB0ZXN0LnRlc3RfaW1wb3J0bGliLnV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3NlbGYuZGlyZWN0b3J5XSk6CisgICAgICAgICAgICBzZWxmLmFkZF9iYWRfc291cmNlX2ZpbGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9VHJ1ZSwgcXVpZXQ9MikpCiAKICAgICBkZWYgdGVzdF9ub19weWNhY2hlX2luX25vbl9wYWNrYWdlKHNlbGYpOgogICAgICAgICAjIEJ1ZyA4NTYzIHJlcG9ydGVkIHRoYXQgX19weWNhY2hlX18gZGlyZWN0b3JpZXMgZ290IGNyZWF0ZWQgYnkKQEAgLTExNSw2ICsxNTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbj1vcHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShjYWNoZWQzKSkKIAorICAgIGRlZiB0ZXN0X2NvbXBpbGVfZGlyX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHBhdGhsaWIuUGF0aChzZWxmLmRpcmVjdG9yeSkpCisgICAgICAgIGxpbmUgPSBzdGRvdXQuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKClbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChsaW5lLCByJ0xpc3RpbmcgKFteV2luZG93c1BhdGh8UG9zaXhQYXRoXS4qKScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorCiAgICAgQG1vY2sucGF0Y2goJ2NvbXBpbGVhbGwuUHJvY2Vzc1Bvb2xFeGVjdXRvcicpCiAgICAgZGVmIHRlc3RfY29tcGlsZV9wb29sX2NhbGxlZChzZWxmLCBwb29sX21vY2spOgogICAgICAgICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBxdWlldD1UcnVlLCB3b3JrZXJzPTUpCkBAIC0xOTcsMTAgKzI0Myw5IEBACiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnbm90IGFsbCBlbnRyaWVzIG9uIHN5cy5wYXRoIGFyZSB3cml0YWJsZScpCiAKICAgICBkZWYgX2dldF9ydW5fYXJncyhzZWxmLCBhcmdzKToKLSAgICAgICAgaW50ZXJwX2FyZ3MgPSBbJy1TJ10KLSAgICAgICAgaWYgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICAgICAgaW50ZXJwX2FyZ3MuYXBwZW5kKHsxIDogJy1PJywgMiA6ICctT08nfVtzeXMuZmxhZ3Mub3B0aW1pemVdKQotICAgICAgICByZXR1cm4gaW50ZXJwX2FyZ3MgKyBbJy1tJywgJ2NvbXBpbGVhbGwnXSArIGxpc3QoYXJncykKKyAgICAgICAgcmV0dXJuIFsqc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAnLVMnLCAnLW0nLCAnY29tcGlsZWFsbCcsCisgICAgICAgICAgICAgICAgKmFyZ3NdCiAKICAgICBkZWYgYXNzZXJ0UnVuT0soc2VsZiwgKmFyZ3MsICoqZW52X3ZhcnMpOgogICAgICAgICByYywgb3V0LCBlcnIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKaW5kZXggNDAzZWUzYi4uYzI0OWNhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQpAQCAtMSw1ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiAKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kb20KIGZyb20gbWF0aCBpbXBvcnQgYXRhbjIsIGlzbmFuLCBjb3B5c2lnbgpAQCAtMzg1LDYgKzM4NywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNvbXBsZXgoY29tcGxleDEoMWopKSwgMmopCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGxleCwgY29tcGxleDIoMWopKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgICMgY2hlY2sgdW5kZXJzY29yZXMKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICd4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobGl0KSwgZXZhbChsaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleChsaXQpLCBjb21wbGV4KGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBsaXQgaW4gKCcwXzcnLCAnMDlfOTknKTogICMgb2N0YWxzIGFyZSBub3QgcmVjb2duaXplZCBoZXJlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAneFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tcGxleCwgbGl0KQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTMwLCAzMCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goeCksIGhhc2goY29tcGxleCh4LCAwKSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CmluZGV4IDc1MTM4MTUuLjIzZTk1YjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5CkBAIC0xNTQsNiArMTU0LDMwIEBACiAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CiAgICAgICAgICAgICB0LmpvaW4oKQogCisgICAgZGVmIHRlc3RfdGhyZWFkX25hbWVzX2Fzc2lnbmVkKHNlbGYpOgorICAgICAgICBleGVjdXRvciA9IGZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKAorICAgICAgICAgICAgbWF4X3dvcmtlcnM9NSwgdGhyZWFkX25hbWVfcHJlZml4PSdTcGVjaWFsUG9vbCcpCisgICAgICAgIGV4ZWN1dG9yLm1hcChhYnMsIHJhbmdlKC01LCA1KSkKKyAgICAgICAgdGhyZWFkcyA9IGV4ZWN1dG9yLl90aHJlYWRzCisgICAgICAgIGRlbCBleGVjdXRvcgorCisgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHQubmFtZSwgcideU3BlY2lhbFBvb2xfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKKyAgICBkZWYgdGVzdF90aHJlYWRfbmFtZXNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz01KQorICAgICAgICBleGVjdXRvci5tYXAoYWJzLCByYW5nZSgtNSwgNSkpCisgICAgICAgIHRocmVhZHMgPSBleGVjdXRvci5fdGhyZWFkcworICAgICAgICBkZWwgZXhlY3V0b3IKKworICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgIyBXZSBkb24ndCBwYXJ0aWN1bGFybHkgY2FyZSB3aGF0IHRoZSBkZWZhdWx0IG5hbWUgaXMsIGp1c3QgdGhhdAorICAgICAgICAgICAgIyBpdCBoYXMgYSBkZWZhdWx0IG5hbWUgaW1wbHlpbmcgdGhhdCBpdCBpcyBhIFRocmVhZFBvb2xFeGVjdXRvcgorICAgICAgICAgICAgIyBmb2xsb3dlZCBieSB3aGF0IGxvb2tzIGxpa2UgYSB0aHJlYWQgbnVtYmVyLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0Lm5hbWUsIHInXi4qVGhyZWFkUG9vbEV4ZWN1dG9yLipfWzAtNF0kJykKKyAgICAgICAgICAgIHQuam9pbigpCisKIAogY2xhc3MgUHJvY2Vzc1Bvb2xTaHV0ZG93blRlc3QoUHJvY2Vzc1Bvb2xNaXhpbiwgRXhlY3V0b3JTaHV0ZG93blRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgX3ByaW1lX2V4ZWN1dG9yKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQppbmRleCA3MWE4ZjNmLi4yYjA4MTk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpAQCAtMjA1Miw1ICsyMDUyLDExIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmZ1sndHdvJ10uZ2V0bGVuKCdvbmUnKSwgNSkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJFcnJvciJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNvbmZpZ3BhcnNlciwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKaW5kZXggM2M2YmRlZi4uMDM2YTFkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CkBAIC04NCw2ICs4NCwzMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb25zdHJ1Y3Rvcih2YWx1ZXMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRhaW5lciA9PSBjb250YWluZXIpCiAKKyAgICBkZWYgdGVzdF9ibG9ja19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBibG9ja2luZyBmYWxsYmFjayB3aXRoIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgQnlDb250YWlucyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGMgPSBCeUNvbnRhaW5zKCkKKyAgICAgICAgY2xhc3MgQmxvY2tDb250YWlucyhCeUNvbnRhaW5zKToKKyAgICAgICAgICAgICIiIklzIG5vdCBhIGNvbnRhaW5lcgorCisgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIGEgcGVyZmVjdGx5IGdvb2QgaXRlcmFibGUgKGFzIHRlc3RlZCBieQorICAgICAgICAgICAgbGlzdChiYykpLCBhcyB3ZWxsIGFzIGluaGVyaXRpbmcgZnJvbSBhIHBlcmZlY3RseSBnb29kCisgICAgICAgICAgICBjb250YWluZXIsIGJ1dCBfX2NvbnRhaW5zX18gPSBOb25lIHByZXZlbnRzIHRoZSB1c3VhbAorICAgICAgICAgICAgZmFsbGJhY2sgdG8gaXRlcmF0aW9uIGluIHRoZSBjb250YWluZXIgcHJvdG9jb2wuIFRoYXQKKyAgICAgICAgICAgIGlzLCBub3JtYWxseSwgMCBpbiBiYyB3b3VsZCBmYWxsIGJhY2sgdG8gdGhlIGVxdWl2YWxlbnQKKyAgICAgICAgICAgIG9mIGFueSh4PT0wIGZvciB4IGluIGJjKSwgYnV0IGhlcmUgaXQncyBibG9ja2VkIGZyb20KKyAgICAgICAgICAgIGRvaW5nIHNvLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgd2hpbGUgRmFsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIE5vbmUKKyAgICAgICAgICAgIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgYmMgPSBCbG9ja0NvbnRhaW5zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBsaXN0KGJjKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IDAgaW4gYmMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKaW5kZXggNTE2NDAzZS4uYzA0YzgwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQpAQCAtMTIsNiArMTIsMzkgQEAKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKIAorY2xhc3MgVGVzdEFic3RyYWN0Q29udGV4dE1hbmFnZXIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZW50ZXIoc2VsZik6CisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBtYW5hZ2VyID0gRGVmYXVsdEVudGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYW5hZ2VyLl9fZW50ZXJfXygpLCBtYW5hZ2VyKQorCisgICAgZGVmIHRlc3RfZXhpdF9pc19hYnN0cmFjdChzZWxmKToKKyAgICAgICAgY2xhc3MgTWlzc2luZ0V4aXQoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTWlzc2luZ0V4aXQoKQorCisgICAgZGVmIHRlc3Rfc3RydWN0dXJhbF9zdWJjbGFzc2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgTWFuYWdlckZyb21TY3JhdGNoOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYW5hZ2VyRnJvbVNjcmF0Y2gsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisgICAgICAgIGNsYXNzIERlZmF1bHRFbnRlcihBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2V4aXRfXygqYXJncykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWZhdWx0RW50ZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpKQorCisKIGNsYXNzIENvbnRleHRNYW5hZ2VyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY29udGV4dG1hbmFnZXJfcGxhaW4oc2VsZik6CkBAIC04OSw3ICsxMjIsNyBAQAogICAgICAgICBkZWYgd29vaG9vKCk6CiAgICAgICAgICAgICB5aWVsZAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgICAgICB3aXRoIHdvb2hvbygpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzdG9wX2V4YwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5IGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CmluZGV4IDBlMWY2NzAuLjQ1YTY5MjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKQEAgLTk4LDcgKzk4LDcgQEAKICAgICAgICAgdGVzdHMgPSBbTm9uZSwgLi4uLCBOb3RJbXBsZW1lbnRlZCwKICAgICAgICAgICAgICAgICAgNDIsIDIqKjEwMCwgMy4xNCwgVHJ1ZSwgRmFsc2UsIDFqLAogICAgICAgICAgICAgICAgICAiaGVsbG8iLCAiaGVsbG9cdTEyMzQiLCBmLl9fY29kZV9fLAotICAgICAgICAgICAgICAgICBiIndvcmxkIiwgYnl0ZXMocmFuZ2UoMjU2KSksIHJhbmdlKDEwKSwKKyAgICAgICAgICAgICAgICAgYiJ3b3JsZCIsIGJ5dGVzKHJhbmdlKDI1NikpLCByYW5nZSgxMCksIHNsaWNlKDEsIDEwLCAyKSwKICAgICAgICAgICAgICAgICAgTmV3U3R5bGUsIENsYXNzaWMsIG1heCwgV2l0aE1ldGFjbGFzc10KICAgICAgICAgZm9yIHggaW4gdGVzdHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvcHkuY29weSh4KSwgeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQppbmRleCBlNTI2NTRjLi5mMjgzOWE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CkBAIC02OSw1NSArNjksMTMwIEBACiBjbGFzcyBBc3luY0JhZFN5bnRheFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFkc3ludGF4XzEoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgIidhd2FpdCcgb3V0c2lkZSIpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMzCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzQKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF81KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzYoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKLQotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNgotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFN5bnRheEVycm9yLCAiJ3lpZWxkIGZyb20nIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgotCi0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM3Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfOChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzgKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF85KHNlbGYpOgotICAgICAgICBucyA9IHt9Ci0gICAgICAgIGZvciBjb21wIGluIHsnKGF3YWl0IGEgZm9yIGEgaW4gYiknLAotICAgICAgICAgICAgICAgICAgICAgJ1thd2FpdCBhIGZvciBhIGluIGJdJywKLSAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYSBmb3IgYSBpbiBifScsCi0gICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGE6IGMgZm9yIGEgaW4gYn0nfToKLQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnYXdhaXQuKmluIGNvbXByZWhlbicpOgotICAgICAgICAgICAgICAgIGV4ZWMoJ2FzeW5jIGRlZiBmKCk6XG5cdHt9Jy5mb3JtYXQoY29tcCksIG5zLCBucykKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xMChzZWxmKToKLSAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKLQogICAgICAgICBzYW1wbGVzID0gWworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0IHNvbWV0aGluZygpCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImF3YWl0IHNvbWV0aGluZygpIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBbXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXQgZnV0CisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGE6YXdhaXQgc29tZXRoaW5nKCkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhd2FpdCBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscyBpZiBhd2FpdCBpXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYgorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXdhaXQgYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzIGlmIGF3YWl0IGldCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdAorICAgICAgICAgICAgIiIiLAorCiAgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CiAgICAgICAgICAgICAgICAgICAgZGVmIGJhcigpOiBwYXNzCiAgICAgICAgICAgICAgICAgICAgYXdhaXQgPSAxCkBAIC0yODMsNTcgKzM1OCwxMTAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCiAKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMihzZWxmKToKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgQmFyOgorICAgICAgICAgICAgICAgIGRlZiBhc3luYygpOiBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIEJhcjoKKyAgICAgICAgICAgICAgICBhc3luYyA9IDEKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgYXN5bmM6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBhd2FpdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImltcG9ydCBtYXRoIGFzIGF3YWl0IiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYXN5bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgZm9vKCosIGF3YWl0PTEpOgorICAgICAgICAgICAgICAgIHBhc3MiIiIKKworICAgICAgICAgICAgIiIiYXN5bmMgPSAxIiIiLAorCisgICAgICAgICAgICAiIiJwcmludChhd2FpdD0xKSIiIgorICAgICAgICBdCisKKyAgICAgICAgZm9yIGNvZGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSksIHNlbGYuYXNzZXJ0V2FybnNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAiJ2F3YWl0JyB3aWxsIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkcyIpOgorICAgICAgICAgICAgICAgIGNvbXBpbGUoY29kZSwgIjx0ZXN0PiIsICJleGVjIikKKworICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8zKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIpCisgICAgICAgICAgICAgICAgY29tcGlsZSgiYXN5bmMgPSAxIiwgIjx0ZXN0PiIsICJleGVjIikKKwogICAgIGRlZiB0ZXN0X2dvb2RzeW50YXhfMShzZWxmKToKICAgICAgICAgIyBUZXN0cyBmb3IgaXNzdWUgMjQ2MTkKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMTApLCAxMSkKKyAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKIAotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCiAKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwogCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgIiIic3BhbSIiIgotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBcCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgIyAxMjMKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgIyA0NTYKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgICIiInNwYW0iIiIKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IFwKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgMTIzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgIyA0NTYKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCi0gICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKLSAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgotICAgICAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDQyKSwgNDIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHJldHVybiBhd2FpdF8KKyAgICAgICAgICAgICAgICBhd2FpdF8gPSBhd2FpdAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgYmFyKCkuc2VuZChOb25lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXSArIDEKKyAgICAgICAgICAgICcnJworICAgICAgICBdCiAKLSAgICAgICAgYXN5bmMgZGVmIGYoKToKLSAgICAgICAgICAgIGFzeW5jIGRlZiBnKCk6IHBhc3MKLSAgICAgICAgICAgIGF3YWl0IHoKLSAgICAgICAgYXdhaXQgPSAxCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oZikpCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpOgorICAgICAgICAgICAgICAgIGxvYyA9IHt9CisKKyAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgICAgICAgICAgZXhlYyhjb2RlLCBsb2MsIGxvYykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jWydmb28nXSgxMCksIDExKQogCiAKIGNsYXNzIFRva2VuaXplclJlZ3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTg5MSw3ICsxMDE5LDcgQEAKICAgICAgICAgICAgIHJldHVybiBhd2FpdCBBd2FpdGFibGUoKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKLSAgICAgICAgICAgIFR5cGVFcnJvciwgIl9fYXdhaXRfX1woXCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKToKKyAgICAgICAgICAgIFR5cGVFcnJvciwgciJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTMzMyw3ICsxNDYxLDcgQEAKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCiAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CisgICAgICAgICAgICAgICAgciJhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0LipfX2FpdGVyLipcOiBJIik6CiAKICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIApAQCAtMTUzNyw2ICsxNjY1LDE4NSBAQAogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQogICAgICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIAorICAgIGRlZiB0ZXN0X2NvbXBfMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaSk6CisgICAgICAgICAgICByZXR1cm4gaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFthd2FpdCBjIGZvciBjIGluIFtmKDEpLCBmKDQxKV1dCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYyBmb3IgYyBpbiBbZigxKSwgZig0MSldfQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdDEoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgYzogJ2EnIGZvciBjIGluIFtmKDEpLCBmKDQxKV19CisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0MigpOgorICAgICAgICAgICAgcmV0dXJuIHtpOiBhd2FpdCBjIGZvciBpLCBjIGluIGVudW1lcmF0ZShbZigxKSwgZig0MSldKX0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl9hc3luYyhydW5fbGlzdCgpKSwgKFtdLCBbMSwgNDFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX3NldCgpKSwgKFtdLCB7MSwgNDF9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QxKCkpLCAoW10sIHsxOiAnYScsIDQxOiAnYSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2RpY3QyKCkpLCAoW10sIHswOiAxLCAxOiA0MX0pKQorCisgICAgZGVmIHRlc3RfY29tcF8yKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpKToKKyAgICAgICAgICAgIHJldHVybiBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW3MgZm9yIGMgaW4gW2YoJycpLCBmKCdhYmMnKSwgZignJyksIGYoWydkZScsICdmZyddKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY10KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJ10pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2QKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gW2YoW2YoWzEwLCAzMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZihbMjBdKV0pXQorICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiBhd2FpdCBjCisgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIGF3YWl0IHN9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwLCAzMH0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0MigpOgorICAgICAgICAgICAgcmV0dXJuIHthd2FpdCBzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIFtmKFtmKDEwKSwgZigyMCldKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgY30KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQyKCkpLAorICAgICAgICAgICAgKFtdLCB7MTAsIDIwfSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsxMSwgMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0KCkpLAorICAgICAgICAgICAgKFtdLCB7MTEsIDIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKX0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fZGljdCgpKSwKKyAgICAgICAgICAgIChbXSwgezExOiAxMiwgMjE6IDIyfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9nZW4oKToKKyAgICAgICAgICAgIGdlbiA9IChpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzExMSwgMTIxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMjFdKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezIxfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9kaWN0KCk6CisgICAgICAgICAgICByZXR1cm4ge2kgKyAxOiBpICsgMiBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2RpY3QoKSksCisgICAgICAgICAgICAoW10sIHsyMTogMjJ9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2dlbigpOgorICAgICAgICAgICAgZ2VuID0gKGkgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMCkKKyAgICAgICAgICAgIHJldHVybiBbZyArIDEwMCBhc3luYyBmb3IgZyBpbiBnZW5dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2dlbigpKSwKKyAgICAgICAgICAgIChbXSwgWzEyMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF81KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGZvciBwYWlyIGluIChbMTAsIDIwXSwgWzMwLCA0MF0pIGlmIHBhaXJbMF0gPiAxMAorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBmKHBhaXIpIGlmIGkgPiAzMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzQxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGl0KToKKyAgICAgICAgICAgIGZvciBpIGluIGl0OgorICAgICAgICAgICAgICAgIHlpZWxkIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSArIDEgYXN5bmMgZm9yIHNlcSBpbiBmKFsoMTAsIDIwKSwgKDMwLCldKQorICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBzZXFdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzExLCAyMSwgMzFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNyhzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignYWFhJykKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbaSBhc3luYyBmb3IgaSBpbiBmKCldCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgJ2FhYScpOgorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9jb21wXzgoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICByZXR1cm4gW2kgZm9yIGkgaW4gWzEsIDIsIDNdXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgWzEsIDIsIDNdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfOShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgeWllbGQgMgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgbCA9IFtpIGFzeW5jIGZvciBpIGluIGdlbigpXQorICAgICAgICAgICAgcmV0dXJuIFtpIGZvciBpIGluIGxdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhmKCkpLAorICAgICAgICAgICAgKFtdLCBbMSwgMl0pKQorCisgICAgZGVmIHRlc3RfY29tcF8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIHh4ID0ge2kgZm9yIGkgaW4gWzEsIDIsIDNdfQorICAgICAgICAgICAgcmV0dXJuIHt4OiB4IGZvciB4IGluIHh4fQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgezE6IDEsIDI6IDIsIDM6IDN9KSkKKwogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgIGFzeW5jIGRlZiBmdW5jKCk6IHBhc3MKICAgICAgICAgY29ybyA9IGZ1bmMoKQpAQCAtMTY2Nyw4ICsxOTc0LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBzaWxlbmNlX2Nvcm9fZ2MoKSwgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKICAgICAgICAgICAgICAgICBSdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCi0gICAgICAgICAgICAgICAgInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgorICAgICAgICAgICAgICAgIHIiY29yb3V0aW5lIHdyYXBwZXIuKlwud3JhcHBlciBhdCAweC4qYXR0ZW1wdGVkIHRvICIKKyAgICAgICAgICAgICAgICByInJlY3Vyc2l2ZWx5IHdyYXAgLiogd3JhcCAuKiIpOgogCiAgICAgICAgICAgICAgICAgZm9vKCkKICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CmluZGV4IGYxODk4M2YuLjUzZjg5MTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQpAQCAtNiw3ICs2LDcgQEAKICMgcmlwIG9mZiBhbGwgaW50ZXJlc3Rpbmcgc3R1ZmYgZnJvbSB0ZXN0X3Byb2ZpbGUKIGltcG9ydCBjUHJvZmlsZQogZnJvbSB0ZXN0LnRlc3RfcHJvZmlsZSBpbXBvcnQgUHJvZmlsZVRlc3QsIHJlZ2VuZXJhdGVfZXhwZWN0ZWRfb3V0cHV0Ci1mcm9tIHRlc3QucHJvZmlsZWUgaW1wb3J0IHRlc3RmdW5jCisKIAogY2xhc3MgQ1Byb2ZpbGVUZXN0KFByb2ZpbGVUZXN0KToKICAgICBwcm9maWxlcmNsYXNzID0gY1Byb2ZpbGUuUHJvZmlsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jc3YucHkgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQppbmRleCA3N2MzMTVlLi4wM2FiMTg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nzdi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nzdi5weQpAQCAtMiw5ICsyLDcgQEAKICMgY3N2IHBhY2thZ2UgdW5pdCB0ZXN0cwogCiBpbXBvcnQgY29weQotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gdGVtcGZpbGUgaW1wb3J0IFRlbXBvcmFyeUZpbGUKQEAgLTEyLDYgKzEwLDkgQEAKIGltcG9ydCBnYwogaW1wb3J0IHBpY2tsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zCitmcm9tIHRleHR3cmFwIGltcG9ydCBkZWRlbnQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiAKIGNsYXNzIFRlc3RfQ3N2KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiIKQEAgLTQyNiwxNyArNDI3LDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LnJlYWRlciwgW10sIHF1b3RpbmcgPSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjc3YucmVhZGVyLCBbXSwgcXVvdGluZyA9IDEwMCkKIAotICAgICMgU2VlIGlzc3VlICMyMjk5NQotICAgICMjIGRlZiB0ZXN0X2NvcHkoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvcHkuY29weSwgZGlhbGVjdCkKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb3B5LmNvcHksIGRpYWxlY3QpCiAKLSAgICAjIyBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgIyMgICAgIGZvciBuYW1lIGluIGNzdi5saXN0X2RpYWxlY3RzKCk6Ci0gICAgIyMgICAgICAgICBkaWFsZWN0ID0gY3N2LmdldF9kaWFsZWN0KG5hbWUpCi0gICAgIyMgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAjIyAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZGlhbGVjdCwgcHJvdG8pCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgorICAgICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQogCiBjbGFzcyBUZXN0Q3N2QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHJlYWRlckFzc2VydEVxdWFsKHNlbGYsIGlucHV0LCBleHBlY3RlZF9yZXN1bHQpOgpAQCAtNjI2LDYgKzYyNiwyNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiJ2YyJyIsIGV4Y2VwdGlvbikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIjEiLCBleGNlcHRpb24pCiAKKyAgICBkZWYgdGVzdF90eXBvX2luX2V4dHJhc2FjdGlvbl9yYWlzZXNfZXJyb3Ioc2VsZik6CisgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNzdi5EaWN0V3JpdGVyLCBmaWxlb2JqLCBbJ2YxJywgJ2YyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhc2FjdGlvbj0icmFpc2VkIikKKworICAgIGRlZiB0ZXN0X3dyaXRlX2ZpZWxkX25vdF9pbl9maWVsZF9uYW1lc19yYWlzZShzZWxmKToKKyAgICAgICAgZmlsZW9iaiA9IFN0cmluZ0lPKCkKKyAgICAgICAgd3JpdGVyID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iaiwgWydmMScsICdmMiddLCBleHRyYXNhY3Rpb249InJhaXNlIikKKyAgICAgICAgZGljdHJvdyA9IHsnZjAnOiAwLCAnZjEnOiAxLCAnZjInOiAyLCAnZjMnOiAzfQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjc3YuRGljdFdyaXRlci53cml0ZXJvdywgd3JpdGVyLCBkaWN0cm93KQorCisgICAgZGVmIHRlc3Rfd3JpdGVfZmllbGRfbm90X2luX2ZpZWxkX25hbWVzX2lnbm9yZShzZWxmKToKKyAgICAgICAgZmlsZW9iaiA9IFN0cmluZ0lPKCkKKyAgICAgICAgd3JpdGVyID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iaiwgWydmMScsICdmMiddLCBleHRyYXNhY3Rpb249Imlnbm9yZSIpCisgICAgICAgIGRpY3Ryb3cgPSB7J2YwJzogMCwgJ2YxJzogMSwgJ2YyJzogMiwgJ2YzJzogM30KKyAgICAgICAgY3N2LkRpY3RXcml0ZXIud3JpdGVyb3cod3JpdGVyLCBkaWN0cm93KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmouZ2V0dmFsdWUoKSwgIjEsMlxyXG4iKQorCiAgICAgZGVmIHRlc3RfcmVhZF9kaWN0X2ZpZWxkcyhzZWxmKToKICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIpIGFzIGZpbGVvYmo6CiAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKCIxLDIsYWJjXHJcbiIpCkBAIC0xMDgwLDcgKzEwOTgsNiBAQAogICAgICAgICAgICAgICJGcmFuw6dvaXMgUGluYXJkIl0KIAogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcmVhZChzZWxmKToKLSAgICAgICAgaW1wb3J0IGlvCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgidysiLCBuZXdsaW5lPScnLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmaWxlb2JqOgogICAgICAgICAgICAgZmlsZW9iai53cml0ZSgiLCIuam9pbihzZWxmLm5hbWVzKSArICJcclxuIikKICAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQpAQCAtMTA4OSw3ICsxMTA2LDYgQEAKIAogCiAgICAgZGVmIHRlc3RfdW5pY29kZV93cml0ZShzZWxmKToKLSAgICAgICAgaW1wb3J0IGlvCiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgidysiLCBuZXdsaW5lPScnLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmaWxlb2JqOgogICAgICAgICAgICAgd3JpdGVyID0gY3N2LndyaXRlcihmaWxlb2JqKQogICAgICAgICAgICAgd3JpdGVyLndyaXRlcm93KHNlbGYubmFtZXMpCkBAIC0xMDk3LDYgKzExMTMsNjMgQEAKICAgICAgICAgICAgIGZpbGVvYmouc2VlaygwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLnJlYWQoKSwgZXhwZWN0ZWQpCiAKK2NsYXNzIEtleU9yZGVyaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9vcmRlcmluZ19mb3JfdGhlX2RpY3RfcmVhZGVyX2FuZF93cml0ZXIoc2VsZik6CisgICAgICAgIHJlc3VsdHNldCA9IHNldCgpCisgICAgICAgIGZvciBrZXlzIGluIHBlcm11dGF0aW9ucygiYWJjZGUiKToKKyAgICAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgndysnLCBuZXdsaW5lPScnLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmaWxlb2JqZWN0OgorICAgICAgICAgICAgICAgIGR3ID0gY3N2LkRpY3RXcml0ZXIoZmlsZW9iamVjdCwga2V5cykKKyAgICAgICAgICAgICAgICBkdy53cml0ZWhlYWRlcigpCisgICAgICAgICAgICAgICAgZmlsZW9iamVjdC5zZWVrKDApCisgICAgICAgICAgICAgICAgZHIgPSBjc3YuRGljdFJlYWRlcihmaWxlb2JqZWN0KQorICAgICAgICAgICAgICAgIGt0ID0gdHVwbGUoZHIuZmllbGRuYW1lcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleXMsIGt0KQorICAgICAgICAgICAgICAgIHJlc3VsdHNldC5hZGQoa3QpCisgICAgICAgICMgRmluYWwgc2FuaXR5IGNoZWNrOiB3ZXJlIGFsbCBwZXJtdXRhdGlvbnMgdW5pcXVlPworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzZXQpLCAxMjAsICJLZXkgb3JkZXJpbmc6IHNvbWUga2V5IHBlcm11dGF0aW9ucyBub3QgY29sbGVjdGVkIChleHBlY3RlZCAxMjApIikKKworICAgIGRlZiB0ZXN0X29yZGVyZWRfZGljdF9yZWFkZXIoc2VsZik6CisgICAgICAgIGRhdGEgPSBkZWRlbnQoJycnXAorICAgICAgICAgICAgRmlyc3ROYW1lLExhc3ROYW1lCisgICAgICAgICAgICBFcmljLElkbGUKKyAgICAgICAgICAgIEdyYWhhbSxDaGFwbWFuLE92ZXIxLE92ZXIyCisKKyAgICAgICAgICAgIFVuZGVyMQorICAgICAgICAgICAgSm9obixDbGVlc2UKKyAgICAgICAgJycnKS5zcGxpdGxpbmVzKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSkpLAorICAgICAgICAgICAgW09yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdFcmljJyksICgnTGFzdE5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0dyYWhhbScpLCAoJ0xhc3ROYW1lJywgJ0NoYXBtYW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnVW5kZXIxJyksICgnTGFzdE5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdKb2huJyksICgnTGFzdE5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEsIHJlc3RrZXk9J090aGVySW5mbycpKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnRXJpYycpLCAoJ0xhc3ROYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdHcmFoYW0nKSwgKCdMYXN0TmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnT3RoZXJJbmZvJywgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdVbmRlcjEnKSwgKCdMYXN0TmFtZScsIE5vbmUpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0pvaG4nKSwgKCdMYXN0TmFtZScsICdDbGVlc2UnKV0pLAorICAgICAgICAgICAgXSkKKworICAgICAgICBkZWwgZGF0YVswXSAgICAgICAgICAgICMgUmVtb3ZlIHRoZSBoZWFkZXIgcm93CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhLCBmaWVsZG5hbWVzPVsnZm5hbWUnLCAnbG5hbWUnXSkpLAorICAgICAgICAgICAgW09yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ0VyaWMnKSwgKCdsbmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdHcmFoYW0nKSwgKCdsbmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnVW5kZXIxJyksICgnbG5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ0pvaG4nKSwgKCdsbmFtZScsICdDbGVlc2UnKV0pLAorICAgICAgICAgICAgXSkKKworCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgZXh0cmEgPSB7J19fZG9jX18nLCAnX192ZXJzaW9uX18nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjc3YsICgnY3N2JywgJ19jc3YnKSwgZXh0cmE9ZXh0cmEpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CmluZGV4IDJkNGViNTIuLjI0MmUxYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQpAQCAtMjMsOSArMjMsMTYgQEAKIHRlc3RfY2xhc3NlcyA9IFtdCiAKIGZvciBtb2R1bGUsIHN1ZmZpeCBpbiB6aXAodGVzdF9tb2R1bGVzLCB0ZXN0X3N1ZmZpeGVzKToKKyAgICB0ZXN0X2NsYXNzZXMgPSBbXQogICAgIGZvciBuYW1lLCBjbHMgaW4gbW9kdWxlLl9fZGljdF9fLml0ZW1zKCk6Ci0gICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShjbHMsIHR5cGUpIGFuZCBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdENhc2UpKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2xzLCB0eXBlKToKICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICB0ZXN0X2NsYXNzZXMuYXBwZW5kKGNscykKKyAgICAgICAgZWxpZiBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdFN1aXRlKToKKyAgICAgICAgICAgIHN1aXQgPSBjbHMoKQorICAgICAgICAgICAgdGVzdF9jbGFzc2VzLmV4dGVuZCh0eXBlKHRlc3QpIGZvciB0ZXN0IGluIHN1aXQpCisgICAgZm9yIGNscyBpbiB0ZXN0X2NsYXNzZXM6CiAgICAgICAgIGNscy5fX25hbWVfXyA9IG5hbWUgKyBzdWZmaXgKICAgICAgICAgQGNsYXNzbWV0aG9kCiAgICAgICAgIGRlZiBzZXRVcENsYXNzKGNsc18sIG1vZHVsZT1tb2R1bGUpOgpAQCAtMzksNyArNDYsNiBAQAogICAgICAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKGNsc18uX3NhdmVfc3lzX21vZHVsZXMpCiAgICAgICAgIGNscy5zZXRVcENsYXNzID0gc2V0VXBDbGFzcwogICAgICAgICBjbHMudGVhckRvd25DbGFzcyA9IHRlYXJEb3duQ2xhc3MKLSAgICAgICAgdGVzdF9jbGFzc2VzLmFwcGVuZChjbHMpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKaW5kZXggNjIzZDk5Mi4uZjBhNDI4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm0ucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHNjcmlwdCBmb3IgdGhlIGRibS5vcGVuIGZ1bmN0aW9uIGJhc2VkIG9uIHRlc3RkdW1iZGJtLnB5IiIiCiAKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgZ2xvYgogaW1wb3J0IHRlc3Quc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKaW5kZXggZmY2M2M4OC4uMmQ3N2YwNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZGJtLmR1bWIgYXMgZHVtYmRibQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbApAQCAtNzgsNiArNzksMTIgQEAKICAgICAgICAgc2VsZi5pbml0X2RiKCkKICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsICdyJykKICAgICAgICAgc2VsZi5yZWFkX2hlbHBlcihmKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknKToKKyAgICAgICAgICAgIGZbYidnJ10gPSBiJ3gnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScpOgorICAgICAgICAgICAgZGVsIGZbYidhJ10KICAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9kdW1iZGJtX2tleXMoc2VsZik6CkBAIC0xNDgsNyArMTU1LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZGljdFtrZXldLCBmW2tleV0pCiAKICAgICBkZWYgaW5pdF9kYihzZWxmKToKLSAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsICd3JykKKyAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsICduJykKICAgICAgICAgZm9yIGsgaW4gc2VsZi5fZGljdDoKICAgICAgICAgICAgIGZba10gPSBzZWxmLl9kaWN0W2tdCiAgICAgICAgIGYuY2xvc2UoKQpAQCAtMjM0LDYgKzI0MSwyNCBAQAogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnJykKIAorICAgIGRlZiB0ZXN0X3dhcm5fb25faWdub3JlZF9mbGFncyhzZWxmKToKKyAgICAgICAgZm9yIHZhbHVlIGluICgncicsICd3Jyk6CisgICAgICAgICAgICBfZGVsZXRlX2ZpbGVzKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZGF0YWJhc2UgZmlsZSBpcyBtaXNzaW5nLCB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbWFudGljcyBvZiB0aGUgJ2MnIGZsYWcgd2lsbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgdXNlZC4iKToKKyAgICAgICAgICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgdmFsdWUpCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfZmxhZyhzZWxmKToKKyAgICAgICAgZm9yIGZsYWcgaW4gKCd4JywgJ3JmJywgTm9uZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmxhZyBtdXN0IGJlIG9uZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3InLCAndycsICdjJywgb3IgJ24nIik6CisgICAgICAgICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsIGZsYWcpCisgICAgICAgICAgICBmLmNsb3NlKCkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgX2RlbGV0ZV9maWxlcygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQppbmRleCBhNzgwOGY1Li4zMDRiMzMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CkBAIC0yLDcgKzIsNyBAQAogZ2RibSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgiZGJtLmdudSIpICNza2lwIGlmIG5vdCBzdXBwb3J0ZWQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCB1bmxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluawogCiAKIGZpbGVuYW1lID0gVEVTVEZOCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQppbmRleCAyMjkxNTYxLi40OWY0NDI2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKQEAgLTEsOCArMSw2IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgiZGJtLm5kYm0iKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IHJhbmRvbQogaW1wb3J0IGRibS5uZGJtCiBmcm9tIGRibS5uZGJtIGltcG9ydCBlcnJvcgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKaW5kZXggMWFhMGJmOC4uNjE3YTM3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQpAQCAtNTU0LDYgKzU1NCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcgIC03Ljg5JykpLCAnLTcuODknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIgIDMuNDU2NzkgICIpKSwgJzMuNDU2NzknKQogCisgICAgICAgICMgdW5kZXJzY29yZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMV8zLjNlNF8wJykpLCAnMS4zM0UrNDEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcxXzBfMF8wJykpLCAnMTAwMCcpCisKICAgICAgICAgIyB1bmljb2RlIHdoaXRlc3BhY2UKICAgICAgICAgZm9yIGxlYWQgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CiAgICAgICAgICAgICBmb3IgdHJhaWwgaW4gWyIiLCAnICcsICdcdTAwYTAnLCAnXHUyMDVmJ106CkBAIC01NzgsNiArNTgyLDkgQEAKICAgICAgICAgICAgICMgZW1iZWRkZWQgTlVMCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMTJcdTAwMDAzIikKIAorICAgICAgICAgICAgIyB1bmRlcnNjb3JlcyBkb24ndCBwcmV2ZW50IGVycm9ycworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjFfMl9cdTAwMDAzIikKKwogICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9mcm9tX2xlZ2FjeV9zdHJpbmdzKHNlbGYpOgogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCkBAIC03NzIsNiArNzc5LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICJ4eXoiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgKDEsICJ4eXoiLCAtMjUpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5jLmNyZWF0ZV9kZWNpbWFsLCAiMTIzNCIsICI1Njc4IikKKyAgICAgICAgIyBubyB3aGl0ZXNwYWNlIGFuZCB1bmRlcnNjb3JlIHN0cmlwcGluZyBpcyBkb25lIHdpdGggdGhpcyBtZXRob2QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICIgMTIzNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAiMTJfMzQiKQogCiAgICAgICAgICMgdG9vIG1hbnkgTmFOIHBheWxvYWQgZGlnaXRzCiAgICAgICAgIG5jLnByZWMgPSAzCkBAIC0yMDQ3LDYgKzIwNTcsMzkgQEAKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoMCwgMiwgNywgMSksICdGJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICgwLCksICdGJykpCiAKKyAgICBkZWYgdGVzdF9hc19pbnRlZ2VyX3JhdGlvKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICAjIGV4Y2VwdGlvbmFsIGNhc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnLWluZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJy1uYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCdzbmFuMTIzJykpCisKKyAgICAgICAgZm9yIGV4cCBpbiByYW5nZSgtNCwgMik6CisgICAgICAgICAgICBmb3IgY29lZmYgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICAgICAgZm9yIHNpZ24gaW4gJysnLCAnLSc6CisgICAgICAgICAgICAgICAgICAgIGQgPSBEZWNpbWFsKCclcyVkRSVkJyAlIChzaWduLCBjb2VmZiwgZXhwKSkKKyAgICAgICAgICAgICAgICAgICAgcHEgPSBkLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAgICAgICAgICAgICBwLCBxID0gcHEKKworICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHJldHVybiB0eXBlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcSwgdHVwbGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBpbnQpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShxLCBpbnQpCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBub3JtYWxpemF0aW9uOiAgcSBzaG91bGQgYmUgcG9zaXRpdmU7CisgICAgICAgICAgICAgICAgICAgICMgcCBzaG91bGQgYmUgcmVsYXRpdmVseSBwcmltZSB0byBxLgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIocSwgMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmdjZChwLCBxKSwgMSkKKworICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgcC9xIGFjdHVhbGx5IGdpdmVzIHRoZSBjb3JyZWN0IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbChwKSAvIERlY2ltYWwocSksIGQpCisKICAgICBkZWYgdGVzdF9zdWJjbGFzc2luZyhzZWxmKToKICAgICAgICAgIyBEaWZmZXJlbnQgYmVoYXZpb3VycyB3aGVuIHN1YmNsYXNzaW5nIERlY2ltYWwKICAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQppbmRleCAxOGUxZGYwLi5jZTUxN2I1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKQEAgLTI4OSw3ICsyODksNyBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmluZGV4KGVsZW1lbnQsIHN0YXJ0LCBzdG9wKSwgdGFyZ2V0KQogCi0gICAgZGVmIHRlc3RfaW5zZXJ0X2J1Z18yNDkxMyhzZWxmKToKKyAgICBkZWYgdGVzdF9pbmRleF9idWdfMjQ5MTMoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnQScgKiAzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgaSA9IGQuaW5kZXgoIkhlbGxvIHdvcmxkIiwgMCwgNCkKQEAgLTYyMiwyMCArNjIyLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAgICAgZCA9IGRlcXVlKHJhbmdlKDIwMCkpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICBzID0gcGlja2xlLmR1bXBzKGQsIGkpCi0gICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKKyAgICAgICAgZm9yIGQgaW4gZGVxdWUocmFuZ2UoMjAwKSksIGRlcXVlKHJhbmdlKDIwMCksIDEwMCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHMgPSBwaWNrbGUuZHVtcHMoZCwgaSkKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChlKSwgaWQoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGUpLCBsaXN0KGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5tYXhsZW4sIGQubWF4bGVuKQogCi0jIyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgotIyMgICAgICAgIGQgPSBkZXF1ZSgnYWJjJykKLSMjICAgICAgICBkLmFwcGVuZChkKQotIyMgICAgICAgIGZvciBpIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0jIyAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIGkpKQotIyMgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSMjICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZVstMV0pKQorICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGZvciBkIGluIGRlcXVlKCdhYmMnKSwgZGVxdWUoJ2FiYycsIDMpOgorICAgICAgICAgICAgZC5hcHBlbmQoZCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCwgaSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChlKSwgaWQoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlWy0xXSksIGlkKGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5tYXhsZW4sIGQubWF4bGVuKQogCiAgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgogICAgICAgICBvcmlnID0gZGVxdWUocmFuZ2UoMjAwKSkKQEAgLTY5Niw2ICs2OTgsMTUgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAorICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIGZvciBtYXhsZW4gaW4gcmFuZ2UoLTEsIDYpOgorICAgICAgICAgICAgICAgIHMgPSBbcmFuZG9tLnJhbmRvbSgpIGZvciBqIGluIHJhbmdlKGkpXQorICAgICAgICAgICAgICAgIGQgPSBkZXF1ZShzKSBpZiBtYXhsZW4gPT0gLTEgZWxzZSBkZXF1ZShzLCBtYXhsZW4pCisgICAgICAgICAgICAgICAgZSA9IGQuY29weSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5tYXhsZW4sIGUubWF4bGVuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoeCBpcyB5IGZvciB4LCB5IGluIHppcChkLCBlKSkpCisKICAgICBkZWYgdGVzdF9jb3B5X21ldGhvZChzZWxmKToKICAgICAgICAgbXV0ID0gWzEwXQogICAgICAgICBkID0gZGVxdWUoW211dF0pCkBAIC04NDUsMjQgKzg1NiwyNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGQpLCB0eXBlKGUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGQpLCBsaXN0KGUpKQogCi0jIyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0jIyAgICAgICAgZCA9IERlcXVlKCdhYmMnKQotIyMgICAgICAgIGQuYXBwZW5kKGQpCi0jIwotIyMgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKSwgdHlwZShlKSkKLSMjICAgICAgICBkZCA9IGQucG9wKCkKLSMjICAgICAgICBlZSA9IGUucG9wKCkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGUpLCBpZChlZSkpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQotIyMKLSMjICAgICAgICBkLnggPSBkCi0jIyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCkpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZS54KSkKLSMjCi0jIyAgICAgICAgZCA9IERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGQpCisgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICBmb3IgZCBpbiBEZXF1ZSgnYWJjJyksIERlcXVlKCdhYmMnLCAzKToKKyAgICAgICAgICAgICAgICBkLmFwcGVuZChkKQorCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlKSwgdHlwZShkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKKyAgICAgICAgICAgICAgICBkZCA9IGQucG9wKCkKKyAgICAgICAgICAgICAgICBlZSA9IGUucG9wKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGVlKSwgaWQoZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBkKQorCisgICAgICAgICAgICAgICAgZC54ID0gZAorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGUueCksIGlkKGUpKQorCisgICAgICAgICAgICBmb3IgZCBpbiBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnKSwgRGVxdWVXaXRoQmFkSXRlcignYWJjJywgMik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGQsIHByb3RvKQogCiAgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKICAgICAgICAgZCA9IGRlcXVlKCdnYWxsYWhhZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQppbmRleCA0MThmOGQyLi4xZTA4ZWQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKQEAgLTQ3MzgsMTEgKzQ3MzgsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAoYXJncywga3dhcmdzKQogICAgICAgICBvYmogPSBDMygpCiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6Ci0gICAgICAgICAgICBpZiBwcm90byA+PSA0OgorICAgICAgICAgICAgaWYgcHJvdG8gPj0gMjoKICAgICAgICAgICAgICAgICBzZWxmLl9jaGVja19yZWR1Y2UocHJvdG8sIG9iaiwgYXJncywga3dhcmdzKQotICAgICAgICAgICAgZWxpZiBwcm90byA+PSAyOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIG9iai5fX3JlZHVjZV9leF9fKHByb3RvKQogCiAgICAgICAgIGNsYXNzIEM0OgogICAgICAgICAgICAgZGVmIF9fZ2V0bmV3YXJnc19leF9fKHNlbGYpOgpAQCAtNTA2MSwxMCArNTA1OCw2IEBACiAgICAgICAgICAgICAgICAga3dhcmdzID0gZ2V0YXR0cihjbHMsICdLV0FSR1MnLCB7fSkKICAgICAgICAgICAgICAgICBvYmogPSBjbHMoKmNscy5BUkdTLCAqKmt3YXJncykKICAgICAgICAgICAgICAgICBwcm90byA9IHBpY2tsZV9jb3BpZXIucHJvdG8KLSAgICAgICAgICAgICAgICBpZiAyIDw9IHByb3RvIDwgNCBhbmQgaGFzYXR0cihjbHMsICdfX2dldG5ld2FyZ3NfZXhfXycpOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlX2NvcGllci5kdW1wcyhvYmosIHByb3RvKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIG9iamNvcHkgPSBwaWNrbGVfY29waWVyLmNvcHkob2JqKQogICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pc19jb3B5KG9iaiwgb2JqY29weSkKICAgICAgICAgICAgICAgICAjIEZvciB0ZXN0IGNsYXNzZXMgdGhhdCBzdXBwb3J0cyB0aGlzLCBtYWtlIHN1cmUgd2UgZGlkbid0IGdvCkBAIC01MTIzLDEyICs1MTE2LDE0IEBACiAgICAgICAgIGEsIGIgPSBBKCksIEIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhiKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHt9KSkKLSAgICAgICAgYS54LCBhLnksIGEueiwgYS53ID0gcmFuZ2UoNCkKKyAgICAgICAgIyBJbml0aWFsIGhhc2ggdGFibGUgY2FuIGNvbnRhaW4gYXQgbW9zdCA1IGVsZW1lbnRzLgorICAgICAgICAjIFNldCA2IGF0dHJpYnV0ZXMgdG8gY2F1c2UgaW50ZXJuYWwgcmVzaXppbmcuCisgICAgICAgIGEueCwgYS55LCBhLnosIGEudywgYS52LCBhLnUgPSByYW5nZSg2KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhiKSkpCiAgICAgICAgIGEyID0gQSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih2YXJzKGEyKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHt9KSkKLSAgICAgICAgYi51LCBiLnYsIGIudywgYi50ID0gcmFuZ2UoNCkKKyAgICAgICAgYi51LCBiLnYsIGIudywgYi50LCBiLnMsIGIuciA9IHJhbmdlKDYpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpLCBzeXMuZ2V0c2l6ZW9mKHt9KSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQppbmRleCA1MDZkMWFiLi5iODRkNjQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKQEAgLTE4Miw2ICsxODIsNyBAQAogICAgICAnX19pYWRkX18nLAogICAgICAnX19pbXVsX18nLAogICAgICAnX19pbml0X18nLAorICAgICAnX19pbml0X3N1YmNsYXNzX18nLAogICAgICAnX19pdGVyX18nLAogICAgICAnX19sZV9fJywKICAgICAgJ19fbGVuX18nLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CmluZGV4IDk1NTYxOGEuLmMxMzNjODEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKQEAgLTUsOSArNSw4IEBACiBpbXBvcnQgb3MKIGltcG9ydCByYW5kb20KIGltcG9ydCBzZWxlY3QKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBjcHl0aG9uX29ubHkKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNweXRob25fb25seQogCiBpZiBub3QgaGFzYXR0cihzZWxlY3QsICdkZXZwb2xsJykgOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCd0ZXN0IHdvcmtzIG9ubHkgb24gU29sYXJpcyBPUyBmYW1pbHknKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CmluZGV4IDZkNjhlNzYuLmVkNjZkZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKQEAgLTEsMTAgKzEsMTMgQEAKLWltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KLWltcG9ydCBjb2xsZWN0aW9ucywgcmFuZG9tLCBzdHJpbmcKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwotaW1wb3J0IGdjLCB3ZWFrcmVmCitpbXBvcnQgZ2MKIGltcG9ydCBwaWNrbGUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTgzNiw2ICs4MzksODMgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5fdHJhY2tlZChNeURpY3QoKSkKIAorICAgIGRlZiBtYWtlX3NoYXJlZF9rZXlfZGljdChzZWxmLCBuKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkaWN0cyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICAgICAgYSA9IEMoKQorICAgICAgICAgICAgYS54LCBhLnksIGEueiA9IDEsIDIsIDMKKyAgICAgICAgICAgIGRpY3RzLmFwcGVuZChhLl9fZGljdF9fKQorCisgICAgICAgIHJldHVybiBkaWN0cworCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9kZWwoc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBkZWwgZFtrXSIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIG9yaWdfc2l6ZSA9IHN5cy5nZXRzaXplb2YoYSkKKworICAgICAgICBkZWwgYVsneSddICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGFbJ3knXQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICAgICAgIyBUd28gZGljdHMgaGF2ZSBkaWZmZXJlbnQgaW5zZXJ0aW9uIG9yZGVyLgorICAgICAgICBhWyd5J10gPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3BvcChzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGQucG9wKGspIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGEucG9wKCd5JykgICMgc3BsaXQgdGFibGUgaXMgY29tYmluZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBhLnBvcCgneScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2YoYSksIG9yaWdfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgICAgICAjIFR3byBkaWN0cyBoYXZlIGRpZmZlcmVudCBpbnNlcnRpb24gb3JkZXIuCisgICAgICAgIGFbJ3knXSA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onLCAneSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9wX3BlbmRpbmcoc2VsZik6CisgICAgICAgICIiInBvcCBhIHBlbmRpbmcga2V5IGluIGEgc3BsaXR0ZWQgdGFibGUgc2hvdWxkIG5vdCBjcmFzaCIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIGFbJ2EnXSA9IDQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBiLnBvcCgnYScpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3BvcGl0ZW0oc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBkLnBvcGl0ZW0oKSIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIG9yaWdfc2l6ZSA9IHN5cy5nZXRzaXplb2YoYSkKKworICAgICAgICBpdGVtID0gYS5wb3BpdGVtKCkgICMgc3BsaXQgdGFibGUgaXMgY29tYmluZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtLCAoJ3onLCAzKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgYVsneiddCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2YoYSksIG9yaWdfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKwogICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIGRhdGEgPSB7MToiYSIsIDI6ImIiLCAzOiJjIn0KQEAgLTk2OSw1ICsxMDQ5LDYgQEAKIGNsYXNzIFN1YmNsYXNzTWFwcGluZ1Rlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKICAgICB0eXBlMnRlc3QgPSBEaWN0CiAKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdF92ZXJzaW9uLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0X3ZlcnNpb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY3MWY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdF92ZXJzaW9uLnB5CkBAIC0wLDAgKzEsMTg2IEBACisiIiIKK1Rlc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBFUCA1MDk6IGRpY3Rpb25hcnkgdmVyc2lvbm5pbmcuCisiIiIKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyMgUEVQIDUwOSBpcyBpbXBsZW1lbnRlZCBpbiBDUHl0aG9uIGJ1dCBvdGhlciBQeXRob24gaW1wbGVtZW50YXRpb25zCisjIGRvbid0IHJlcXVpcmUgdG8gaW1wbGVtZW50IGl0CitfdGVzdGNhcGkgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCisKKworY2xhc3MgRGljdFZlcnNpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgdHlwZTJ0ZXN0ID0gZGljdAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMgPSBzZXQoKQorICAgICAgICBzZWxmLmRpY3QgPSBOb25lCisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl91bmlxdWUoc2VsZiwgbXlkaWN0KToKKyAgICAgICAgdmVyc2lvbiA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbih2ZXJzaW9uLCBzZWxmLnNlZW5fdmVyc2lvbnMpCisgICAgICAgIHNlbGYuc2Vlbl92ZXJzaW9ucy5hZGQodmVyc2lvbikKKworICAgIGRlZiBjaGVja192ZXJzaW9uX2NoYW5nZWQoc2VsZiwgbXlkaWN0LCBtZXRob2QsICphcmdzLCAqKmt3KToKKyAgICAgICAgcmVzdWx0ID0gbWV0aG9kKCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fdW5pcXVlKG15ZGljdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2Uoc2VsZiwgbXlkaWN0LCBtZXRob2QsICphcmdzLCAqKmt3KToKKyAgICAgICAgdmVyc2lvbjEgPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuc2Vlbl92ZXJzaW9ucy5hZGQodmVyc2lvbjEpCisKKyAgICAgICAgcmVzdWx0ID0gbWV0aG9kKCphcmdzLCAqKmt3KQorCisgICAgICAgIHZlcnNpb24yID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZlcnNpb24yLCB2ZXJzaW9uMSwgInZlcnNpb24gY2hhbmdlZCIpCisKKyAgICAgICAgcmV0dXJuICByZXN1bHQKKworICAgIGRlZiBuZXdfZGljdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIGQgPSBzZWxmLnR5cGUydGVzdCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX3VuaXF1ZShkKQorICAgICAgICByZXR1cm4gZAorCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgICMgbmV3IGVtcHR5IGRpY3Rpb25hcmllcyBtdXN0IGFsbCBoYXZlIGFuIHVuaXF1ZSB2ZXJzaW9uCisgICAgICAgIGVtcHR5MSA9IHNlbGYubmV3X2RpY3QoKQorICAgICAgICBlbXB0eTIgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgZW1wdHkzID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBub24tZW1wdHkgZGljdGlvbmFyaWVzIG11c3QgYWxzbyBoYXZlIGFuIHVuaXF1ZSB2ZXJzaW9uCisgICAgICAgIG5vbmVtcHR5MSA9IHNlbGYubmV3X2RpY3QoeD0neCcpCisgICAgICAgIG5vbmVtcHR5MiA9IHNlbGYubmV3X2RpY3QoeD0neCcsIHk9J3knKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoYT0xLCBiPTIpCisKKyAgICAgICAgZDIgPSBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5jb3B5KQorCisgICAgICAgICMgZGljdC5jb3B5KCkgbXVzdCBjcmVhdGUgYSBkaWN0aW9uYXJ5IHdpdGggYSBuZXcgdW5pcXVlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX3VuaXF1ZShkMikKKworICAgIGRlZiB0ZXN0X3NldGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIGNyZWF0aW5nIG5ldyBrZXlzIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICd4JywgJ3gnKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneScsICd5JykKKworICAgICAgICAjIGNoYW5naW5nIHZhbHVlcyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICd5JywgMikKKworICAgIGRlZiB0ZXN0X3NldGl0ZW1fc2FtZV92YWx1ZShzZWxmKToKKyAgICAgICAgdmFsdWUgPSBvYmplY3QoKQorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gdGhlIHNhbWUgdmFsdWUgd2l0aCBkaWN0Ll9fc2V0aXRlbV9fCisgICAgICAgICMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSB0byB0aGUgc2FtZSB2YWx1ZSB3aXRoIGRpY3QudXBkYXRlCisgICAgICAgICMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGtleT12YWx1ZSkKKworICAgICAgICBkMiA9IHNlbGYubmV3X2RpY3Qoa2V5PXZhbHVlKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwgZDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX2VxdWFsKHNlbGYpOgorICAgICAgICBjbGFzcyBBbHdheXNFcXVhbDoKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgdmFsdWUxID0gQWx3YXlzRXF1YWwoKQorICAgICAgICB2YWx1ZTIgPSBBbHdheXNFcXVhbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2YWx1ZTEgPT0gdmFsdWUyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZhbHVlMSAhPSB2YWx1ZTIpCisKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUxKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSB0byBhIHZhbHVlIGVxdWFsIHRvIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICAgICMgd2l0aCBkaWN0Ll9fc2V0aXRlbV9fKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlMikKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gYSB2YWx1ZSBlcXVhbCB0byB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICAjIHdpdGggZGljdC51cGRhdGUoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwga2V5PXZhbHVlMSkKKworICAgICAgICBkMiA9IHNlbGYubmV3X2RpY3Qoa2V5PXZhbHVlMikKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGQyKQorCisgICAgZGVmIHRlc3Rfc2V0ZGVmYXVsdChzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSB3aXRoIGRpY3Quc2V0ZGVmYXVsdCgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuc2V0ZGVmYXVsdCwgJ2tleScsICd2YWx1ZTEnKQorCisgICAgICAgICMgZG9uJ3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBrZXkgYWxyZWFkeSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuc2V0ZGVmYXVsdCwgJ2tleScsICd2YWx1ZTInKQorCisgICAgZGVmIHRlc3RfZGVsaXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBkZWxldGluZyBhIGtleSB3aXRoIGRpY3QuX19kZWxpdGVtX18oKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fZGVsaXRlbV9fLCAna2V5JykKKworICAgICAgICAjIGRvbid0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuX19kZWxpdGVtX18sICdrZXknKQorCisgICAgZGVmIHRlc3RfcG9wKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIHBvcCgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBrZXkgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQucG9wLCAna2V5JykKKworICAgICAgICAjIHBvcCgpIG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnBvcCwgJ2tleScpCisKKyAgICBkZWYgdGVzdF9wb3BpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIHBvcGl0ZW0oKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBub3QgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5wb3BpdGVtKQorCisgICAgICAgICMgcG9waXRlbSgpIG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wb3BpdGVtKQorCisgICAgZGVmIHRlc3RfdXBkYXRlKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIHVwZGF0ZSgpIGNhbGxpbmcgd2l0aCBubyBhcmd1bWVudCBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQudXBkYXRlKQorCisgICAgICAgICMgdXBkYXRlKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGtleT0nbmV3IHZhbHVlJykKKworICAgICAgICBkMiA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZSAzJykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGQyKQorCisgICAgZGVmIHRlc3RfY2xlYXIoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgY2xlYXIoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBub3QgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5jbGVhcikKKworICAgICAgICAjIGNsZWFyKCkgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBkaWN0IGlzIGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLmNsZWFyKQorCisKK2NsYXNzIERpY3QoZGljdCk6CisgICAgcGFzcworCisKK2NsYXNzIERpY3RTdWJ0eXBlVmVyc2lvblRlc3RzKERpY3RWZXJzaW9uVGVzdHMpOgorICAgIHR5cGUydGVzdCA9IERpY3QKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3Rjb21wcy5weQppbmRleCAzYzhiOTVjLi4wODczMDcxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3Rjb21wcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3Rjb21wcy5weQpAQCAtMSw3ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQogIyBGb3Igc2NvcGUgdGVzdGluZy4KIGcgPSAiR2xvYmFsIHZhcmlhYmxlIgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5CmluZGV4IDBjOTk2NTIuLjQ5YTllOWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29weQogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNDUsNiArMjQ2LDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBwaWNrbGUuUGlja2xpbmdFcnJvciksCiAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzLCBkLml0ZW1zKCksIHByb3RvKQogCisgICAgZGVmIHRlc3RfYWJjX3JlZ2lzdHJ5KHNlbGYpOgorICAgICAgICBkID0gZGljdChhPTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5LZXlzVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5TZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuQ29udGFpbmVyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLnZhbHVlcygpLCBjb2xsZWN0aW9ucy5WYWx1ZXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLnZhbHVlcygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5JdGVtc1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5TZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLlNpemVkKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuQ29udGFpbmVyKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKaW5kZXggYWI5ZGViZi4uMTU2YjUyMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQpAQCAtMTIyLDE3ICsxMjIsMTcgQEAKICIiIgogCiBwYXRjaDkxNDU3NV9mcm9tMiA9ICIiIgotXHRcdExpbmUgMTogcHJlY2VlZGVkIGJ5IGZyb206W3R0XSB0bzpbc3Nzc10KLSAgXHRcdExpbmUgMjogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KLSAgXHQgXHRMaW5lIDM6IHByZWNlZWRlZCBieSBmcm9tOltzc3RzdF0gdG86W3Nzc3Nzc10KK1x0XHRMaW5lIDE6IHByZWNlZGVkIGJ5IGZyb206W3R0XSB0bzpbc3Nzc10KKyAgXHRcdExpbmUgMjogcHJlY2VkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQorICBcdCBcdExpbmUgMzogcHJlY2VkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCiBMaW5lIDQ6ICBcdGhhcyBmcm9tOltzc3RdIHRvOltzc3NdIGFmdGVyIDoKIExpbmUgNTogaGFzIGZyb206W3RdIHRvOltzc10gYXQgZW5kXHQKICIiIgogCiBwYXRjaDkxNDU3NV90bzIgPSAiIiIKLSAgICBMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCi0gICAgXHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCi0gICAgICBMaW5lIDM6IHByZWNlZWRlZCBieSBmcm9tOltzc3RzdF0gdG86W3Nzc3Nzc10KKyAgICBMaW5lIDE6IHByZWNlZGVkIGJ5IGZyb206W3R0XSB0bzpbc3Nzc10KKyAgICBcdExpbmUgMjogcHJlY2VkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQorICAgICAgTGluZSAzOiBwcmVjZWRlZCBieSBmcm9tOltzc3RzdF0gdG86W3Nzc3Nzc10KIExpbmUgNDogICBoYXMgZnJvbTpbc3N0XSB0bzpbc3NzXSBhZnRlciA6CiBMaW5lIDU6IGhhcyBmcm9tOlt0XSB0bzpbc3NdIGF0IGVuZAogIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKaW5kZXggZWE3YTI0ZS4uM2U2YTdiNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbApAQCAtMzg3LDkgKzM4Nyw5IEBACiAgICAgICAgIAogICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiIGlkPSJkaWZmbGliX2NoZ190bzlfXzAiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfXzAiPmY8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNSI+NTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NDombmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOzwvc3Bhbj5oYXMmbmJzcDtmcm9tOltzc3RdJm5ic3A7dG86W3Nzc10mbmJzcDthZnRlciZuYnNwOzo8L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNSI+NTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NDombmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOzwvc3Bhbj5oYXMmbmJzcDtmcm9tOltzc3RdJm5ic3A7dG86W3Nzc10mbmJzcDthZnRlciZuYnNwOzo8L3RkPjwvdHI+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8c3BhbiBjbGFzcz0iZGlmZl9zdWIiPiZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDwvdGQ+PC90cj4KICAgICAgICAgPC90Ym9keT4KQEAgLTQwMyw5ICs0MDMsOSBAQAogICAgICAgICAKICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0IiBpZD0iZGlmZmxpYl9jaGdfdG8xMF9fMCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfXzAiPmY8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfXzAiPmY8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF81Ij41PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs0OiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPmhhcyZuYnNwO2Zyb206W3NzdF0mbmJzcDt0bzpbc3NzXSZuYnNwO2FmdGVyJm5ic3A7OjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfNSI+NTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NDombmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOzwvc3Bhbj5oYXMmbmJzcDtmcm9tOltzc3RdJm5ic3A7dG86W3Nzc10mbmJzcDthZnRlciZuYnNwOzo8L3RkPjwvdHI+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPHNwYW4gY2xhc3M9ImRpZmZfc3ViIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPC90ZD48L3RyPgogICAgICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaXMucHkgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQppbmRleCAwZmQxMzQ4Li5iOWI1YWMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rpcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rpcy5weQpAQCAtNDAsNDEgKzQwLDQxIEBACiAKIGRpc19jX2luc3RhbmNlX21ldGhvZCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCi0gICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQorICAgICAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChzZWxmKQorICAgICAgICAgICAgICA4IFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDEyIFJFVFVSTl9WQUxVRQogIiIiICUgKF9DLl9faW5pdF9fLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwpCiAKIGRpc19jX2luc3RhbmNlX21ldGhvZF9ieXRlcyA9ICIiIlwKICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgOSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgIDQgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQorICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgMTIgUkVUVVJOX1ZBTFVFCiAiIiIKIAogZGlzX2NfY2xhc3NfbWV0aG9kID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICAgICAgOSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoY2xzKQotICAgICAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoY2xzKQorICAgICAgICAgICAgICA4IFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDEyIFJFVFVSTl9WQUxVRQogIiIiICUgKF9DLmNtLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMiwpCiAKIGRpc19jX3N0YXRpY19tZXRob2QgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgICAgICA5IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDE1IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICAgICAgNiBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5zbS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIsKQogCiAjIENsYXNzIGRpc2Fzc2VtYmxpbmcgaW5mbyBoYXMgYW4gZXh0cmEgbmV3bGluZSBhdCBlbmQuCkBAIC05NSwyMyArOTUsMjMgQEAKIAogZGlzX2YgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHByaW50KQotICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQotICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQotICAgICAgICAgICAgICA5IFBPUF9UT1AKKyAgICAgICAgICAgICAgMiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKKyAgICAgICAgICAgICAgNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgICA2IFBPUF9UT1AKIAotJTNkICAgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgIDEzIFJFVFVSTl9WQUxVRQorJTNkICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgIDEwIFJFVFVSTl9WQUxVRQogIiIiICUgKF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBfZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIpCiAKIAogZGlzX2ZfY29fY29kZSA9ICIiIlwKICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICA5IFBPUF9UT1AKLSAgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgMiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgICA0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgNiBQT1BfVE9QCisgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgIDEwIFJFVFVSTl9WQUxVRQogIiIiCiAKIApAQCAtMTIxLDIwICsxMjEsMjAgQEAKICAgICAgICAgcGFzcwogCiBkaXNfYnVnNzA4OTAxID0gIiIiXAotJTNkICAgICAgICAgICAwIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDIzICh0byAyNikKLSAgICAgICAgICAgICAgMyBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAocmFuZ2UpCi0gICAgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCislM2QgICAgICAgICAgIDAgU0VUVVBfTE9PUCAgICAgICAgICAgICAgMTggKHRvIDIwKQorICAgICAgICAgICAgICAyIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChyYW5nZSkKKyAgICAgICAgICAgICAgNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKIAotJTNkICAgICAgICAgICA5IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgxMCkKLSAgICAgICAgICAgICAxMiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMiAoMiBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAxNSBHRVRfSVRFUgotICAgICAgICA+PiAgIDE2IEZPUl9JVEVSICAgICAgICAgICAgICAgICA2ICh0byAyNSkKLSAgICAgICAgICAgICAxOSBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAocmVzKQorJTNkICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgxMCkKKyAgICAgICAgICAgICAgOCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMgorICAgICAgICAgICAgIDEwIEdFVF9JVEVSCisgICAgICAgID4+ICAgMTIgRk9SX0lURVIgICAgICAgICAgICAgICAgIDQgKHRvIDE4KQorICAgICAgICAgICAgIDE0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChyZXMpCiAKLSUzZCAgICAgICAgICAyMiBKVU1QX0FCU09MVVRFICAgICAgICAgICAxNgotICAgICAgICA+PiAgIDI1IFBPUF9CTE9DSwotICAgICAgICA+PiAgIDI2IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDI5IFJFVFVSTl9WQUxVRQorJTNkICAgICAgICAgIDE2IEpVTVBfQUJTT0xVVEUgICAgICAgICAgIDEyCisgICAgICAgID4+ICAgMTggUE9QX0JMT0NLCisgICAgICAgID4+ICAgMjAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMjIgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoYnVnNzA4OTAxLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBidWc3MDg5MDEuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyLAogICAgICAgIGJ1ZzcwODkwMS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDMpCkBAIC0xNDcsMjIgKzE0NywyMiBAQAogCiBkaXNfYnVnMTMzMzk4MiA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMCkKLSAgICAgICAgICAgICAgMyBQT1BfSlVNUF9JRl9UUlVFICAgICAgICAzNQotICAgICAgICAgICAgICA2IExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChBc3NlcnRpb25FcnJvcikKLSAgICAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoPGNvZGUgb2JqZWN0IDxsaXN0Y29tcD4gYXQgMHguLi4sIGZpbGUgIiVzIiwgbGluZSAlZD4pCi0gICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDMgKCdidWcxMzMzOTgyLjxsb2NhbHM+LjxsaXN0Y29tcD4nKQotICAgICAgICAgICAgIDE1IE1BS0VfRlVOQ1RJT04gICAgICAgICAgICAwCi0gICAgICAgICAgICAgMTggTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMjEgR0VUX0lURVIKLSAgICAgICAgICAgICAyMiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKKyAgICAgICAgICAgICAgMiBQT1BfSlVNUF9JRl9UUlVFICAgICAgICAyNgorICAgICAgICAgICAgICA0IExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChBc3NlcnRpb25FcnJvcikKKyAgICAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoPGNvZGUgb2JqZWN0IDxsaXN0Y29tcD4gYXQgMHguLi4sIGZpbGUgIiVzIiwgbGluZSAlZD4pCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDMgKCdidWcxMzMzOTgyLjxsb2NhbHM+LjxsaXN0Y29tcD4nKQorICAgICAgICAgICAgIDEwIE1BS0VfRlVOQ1RJT04gICAgICAgICAgICAwCisgICAgICAgICAgICAgMTIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTQgR0VUX0lURVIKKyAgICAgICAgICAgICAxNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQogCi0lM2QgICAgICAgICAgMjUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDQgKDEpCi0gICAgICAgICAgICAgMjggQklOQVJZX0FERAotICAgICAgICAgICAgIDI5IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQotICAgICAgICAgICAgIDMyIFJBSVNFX1ZBUkFSR1MgICAgICAgICAgICAxCislM2QgICAgICAgICAgMTggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDQgKDEpCisgICAgICAgICAgICAgMjAgQklOQVJZX0FERAorICAgICAgICAgICAgIDIyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgMjQgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgIDEKIAotJTNkICAgICA+PiAgIDM1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDM4IFJFVFVSTl9WQUxVRQorJTNkICAgICA+PiAgIDI2IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDI4IFJFVFVSTl9WQUxVRQogIiIiICUgKGJ1ZzEzMzM5ODIuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIF9fZmlsZV9fLAogICAgICAgIGJ1ZzEzMzM5ODIuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLApAQCAtMTcxLDE5ICsxNzEsMTkgQEAKIAogX0JJR19MSU5FTk9fRk9STUFUID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChzcGFtKQotICAgICAgICAgICAgICAzIFBPUF9UT1AKKyAgICAgICAgICAgICAgMiBQT1BfVE9QCiAgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDcgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDYgUkVUVVJOX1ZBTFVFCiAiIiIKIAogZGlzX21vZHVsZV9leHBlY3RlZF9yZXN1bHRzID0gIiIiXAogRGlzYXNzZW1ibHkgb2YgZjoKICAgNCAgICAgICAgICAgMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAgMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBSRVRVUk5fVkFMVUUKIAogRGlzYXNzZW1ibHkgb2YgZzoKICAgNSAgICAgICAgICAgMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAgMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBSRVRVUk5fVkFMVUUKIAogIiIiCiAKQEAgLTE5MSwyMCArMTkxLDUyIEBACiAKIGRpc19leHByX3N0ciA9ICIiIlwKICAgMSAgICAgICAgICAgMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKLSAgICAgICAgICAgICAgNiBCSU5BUllfQURECi0gICAgICAgICAgICAgIDcgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCisgICAgICAgICAgICAgIDQgQklOQVJZX0FERAorICAgICAgICAgICAgICA2IFJFVFVSTl9WQUxVRQogIiIiCiAKIHNpbXBsZV9zdG10X3N0ciA9ICJ4ID0geCArIDEiCiAKIGRpc19zaW1wbGVfc3RtdF9zdHIgPSAiIiJcCiAgIDEgICAgICAgICAgIDAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCi0gICAgICAgICAgICAgIDYgQklOQVJZX0FERAotICAgICAgICAgICAgICA3IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgICAgICAxIChOb25lKQotICAgICAgICAgICAgIDEzIFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IEJJTkFSWV9BREQKKyAgICAgICAgICAgICAgNiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoTm9uZSkKKyAgICAgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKKyIiIgorCithbm5vdF9zdG10X3N0ciA9ICIiIlwKKworeDogaW50ID0gMQoreTogZnVuKDEpCitsc3RbZnVuKDApXTogaW50ID0gMQorIiIiCisjIGxlYWRpbmcgbmV3bGluZSBpcyBmb3IgYSByZWFzb24gKHRlc3RzIGxpbmVubykKKworZGlzX2Fubm90X3N0bXRfc3RyID0gIiIiXAorICAyICAgICAgICAgICAwIFNFVFVQX0FOTk9UQVRJT05TCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCisgICAgICAgICAgICAgIDQgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDYgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDEgKGludCkKKyAgICAgICAgICAgICAgOCBTVE9SRV9BTk5PVEFUSU9OICAgICAgICAgMCAoeCkKKworICAzICAgICAgICAgIDEwIExPQURfTkFNRSAgICAgICAgICAgICAgICAyIChmdW4pCisgICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCisgICAgICAgICAgICAgMTQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAxNiBTVE9SRV9BTk5PVEFUSU9OICAgICAgICAgMyAoeSkKKworICA0ICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgIDIwIExPQURfTkFNRSAgICAgICAgICAgICAgICA0IChsc3QpCisgICAgICAgICAgICAgMjIgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDIgKGZ1bikKKyAgICAgICAgICAgICAyNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMCkKKyAgICAgICAgICAgICAyNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgIDI4IFNUT1JFX1NVQlNDUgorICAgICAgICAgICAgIDMwIExPQURfTkFNRSAgICAgICAgICAgICAgICAxIChpbnQpCisgICAgICAgICAgICAgMzIgUE9QX1RPUAorICAgICAgICAgICAgIDM0IExPQURfQ09OU1QgICAgICAgICAgICAgICAyIChOb25lKQorICAgICAgICAgICAgIDM2IFJFVFVSTl9WQUxVRQogIiIiCiAKIGNvbXBvdW5kX3N0bXRfc3RyID0gIiIiXApAQCAtMjE1LDYwICsyNDcsODEgQEAKIAogZGlzX2NvbXBvdW5kX3N0bXRfc3RyID0gIiIiXAogICAxICAgICAgICAgICAwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgICAgICAzIFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICAyIFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQogCi0gIDIgICAgICAgICAgIDYgU0VUVVBfTE9PUCAgICAgICAgICAgICAgMTQgKHRvIDIzKQorICAyICAgICAgICAgICA0IFNFVFVQX0xPT1AgICAgICAgICAgICAgIDEyICh0byAxOCkKIAotICAzICAgICA+PiAgICA5IExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgIDE1IElOUExBQ0VfQURECi0gICAgICAgICAgICAgMTYgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTkgSlVNUF9BQlNPTFVURSAgICAgICAgICAgIDkKLSAgICAgICAgICAgICAyMiBQT1BfQkxPQ0sKLSAgICAgICAgPj4gICAyMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoTm9uZSkKLSAgICAgICAgICAgICAyNiBSRVRVUk5fVkFMVUUKKyAgMyAgICAgPj4gICAgNiBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAxMCBJTlBMQUNFX0FERAorICAgICAgICAgICAgIDEyIFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDE0IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICA2CisgICAgICAgICAgICAgMTYgUE9QX0JMT0NLCisgICAgICAgID4+ICAgMTggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKE5vbmUpCisgICAgICAgICAgICAgMjAgUkVUVVJOX1ZBTFVFCiAiIiIKIAogZGlzX3RyYWNlYmFjayA9ICIiIlwKLSUzZCAgICAgICAgICAgMCBTRVRVUF9FWENFUFQgICAgICAgICAgICAxMiAodG8gMTUpCislM2QgICAgICAgICAgIDAgU0VUVVBfRVhDRVBUICAgICAgICAgICAgMTIgKHRvIDE0KQogCi0lM2QgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDApCi0gICAgLS0+ICAgICAgIDkgQklOQVJZX1RSVUVfRElWSURFCi0gICAgICAgICAgICAgMTAgUE9QX1RPUAotICAgICAgICAgICAgIDExIFBPUF9CTE9DSwotICAgICAgICAgICAgIDEyIEpVTVBfRk9SV0FSRCAgICAgICAgICAgIDQ2ICh0byA2MSkKKyUzZCAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMCkKKyAgICAtLT4gICAgICAgNiBCSU5BUllfVFJVRV9ESVZJREUKKyAgICAgICAgICAgICAgOCBQT1BfVE9QCisgICAgICAgICAgICAgMTAgUE9QX0JMT0NLCisgICAgICAgICAgICAgMTIgSlVNUF9GT1JXQVJEICAgICAgICAgICAgNDAgKHRvIDU0KQogCi0lM2QgICAgID4+ICAgMTUgRFVQX1RPUAorJTNkICAgICA+PiAgIDE0IERVUF9UT1AKICAgICAgICAgICAgICAxNiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoRXhjZXB0aW9uKQotICAgICAgICAgICAgIDE5IENPTVBBUkVfT1AgICAgICAgICAgICAgIDEwIChleGNlcHRpb24gbWF0Y2gpCi0gICAgICAgICAgICAgMjIgUE9QX0pVTVBfSUZfRkFMU0UgICAgICAgNjAKLSAgICAgICAgICAgICAyNSBQT1BfVE9QCi0gICAgICAgICAgICAgMjYgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgMjkgUE9QX1RPUAotICAgICAgICAgICAgIDMwIFNFVFVQX0ZJTkFMTFkgICAgICAgICAgIDE0ICh0byA0NykKKyAgICAgICAgICAgICAxOCBDT01QQVJFX09QICAgICAgICAgICAgICAxMCAoZXhjZXB0aW9uIG1hdGNoKQorICAgICAgICAgICAgIDIwIFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDUyCisgICAgICAgICAgICAgMjIgUE9QX1RPUAorICAgICAgICAgICAgIDI0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDI2IFBPUF9UT1AKKyAgICAgICAgICAgICAyOCBTRVRVUF9GSU5BTExZICAgICAgICAgICAxMiAodG8gNDIpCiAKLSUzZCAgICAgICAgICAzMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICAzNiBMT0FEX0FUVFIgICAgICAgICAgICAgICAgMSAoX190cmFjZWJhY2tfXykKLSAgICAgICAgICAgICAzOSBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMSAodGIpCi0gICAgICAgICAgICAgNDIgUE9QX0JMT0NLCi0gICAgICAgICAgICAgNDMgUE9QX0VYQ0VQVAotICAgICAgICAgICAgIDQ0IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICA+PiAgIDQ3IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDUwIFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDUzIERFTEVURV9GQVNUICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDU2IEVORF9GSU5BTExZCi0gICAgICAgICAgICAgNTcgSlVNUF9GT1JXQVJEICAgICAgICAgICAgIDEgKHRvIDYxKQotICAgICAgICA+PiAgIDYwIEVORF9GSU5BTExZCislM2QgICAgICAgICAgMzAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgMzIgTE9BRF9BVFRSICAgICAgICAgICAgICAgIDEgKF9fdHJhY2ViYWNrX18pCisgICAgICAgICAgICAgMzQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDEgKHRiKQorICAgICAgICAgICAgIDM2IFBPUF9CTE9DSworICAgICAgICAgICAgIDM4IFBPUF9FWENFUFQKKyAgICAgICAgICAgICA0MCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgPj4gICA0MiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICA0NCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICA0NiBERUxFVEVfRkFTVCAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICA0OCBFTkRfRklOQUxMWQorICAgICAgICAgICAgIDUwIEpVTVBfRk9SV0FSRCAgICAgICAgICAgICAyICh0byA1NCkKKyAgICAgICAgPj4gICA1MiBFTkRfRklOQUxMWQogCi0lM2QgICAgID4+ICAgNjEgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHRiKQotICAgICAgICAgICAgIDY0IFJFVFVSTl9WQUxVRQorJTNkICAgICA+PiAgIDU0IExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh0YikKKyAgICAgICAgICAgICA1NiBSRVRVUk5fVkFMVUUKICIiIiAlIChUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyAyLAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgMywKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDQsCiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyA1KQogCitkZWYgX2ZzdHJpbmcoYSwgYiwgYywgZCk6CisgICAgcmV0dXJuIGYne2F9IHtiOjR9IHtjIXJ9IHtkIXI6NH0nCisKK2Rpc19mc3RyaW5nID0gIiIiXAorJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQorICAgICAgICAgICAgICAyIEZPUk1BVF9WQUxVRSAgICAgICAgICAgICAwCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKCcgJykKKyAgICAgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoYikKKyAgICAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoJzQnKQorICAgICAgICAgICAgIDEwIEZPUk1BVF9WQUxVRSAgICAgICAgICAgICA0ICh3aXRoIGZvcm1hdCkKKyAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoJyAnKQorICAgICAgICAgICAgIDE0IExPQURfRkFTVCAgICAgICAgICAgICAgICAyIChjKQorICAgICAgICAgICAgIDE2IEZPUk1BVF9WQUxVRSAgICAgICAgICAgICAyIChyZXByKQorICAgICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgnICcpCisgICAgICAgICAgICAgMjAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDMgKGQpCisgICAgICAgICAgICAgMjIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKCc0JykKKyAgICAgICAgICAgICAyNCBGT1JNQVRfVkFMVUUgICAgICAgICAgICAgNiAocmVwciwgd2l0aCBmb3JtYXQpCisgICAgICAgICAgICAgMjYgQlVJTERfU1RSSU5HICAgICAgICAgICAgIDcKKyAgICAgICAgICAgICAyOCBSRVRVUk5fVkFMVUUKKyIiIiAlIChfZnN0cmluZy5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsKQorCiBkZWYgX2coeCk6CiAgICAgeWllbGQgeAogCkBAIC0zNDUsNiArMzk4LDcgQEAKICAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9zdHIoc2VsZik6CiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChleHByX3N0ciwgZGlzX2V4cHJfc3RyKQogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3Qoc2ltcGxlX3N0bXRfc3RyLCBkaXNfc2ltcGxlX3N0bXRfc3RyKQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoYW5ub3Rfc3RtdF9zdHIsIGRpc19hbm5vdF9zdG10X3N0cikKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KGNvbXBvdW5kX3N0bXRfc3RyLCBkaXNfY29tcG91bmRfc3RtdF9zdHIpCiAKICAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9ieXRlcyhzZWxmKToKQEAgLTM3MSw2ICs0MjUsOSBAQAogICAgICAgICBnZW5fZGlzYXMgPSBzZWxmLmdldF9kaXNhc3NlbWJseShfZygxKSkgICMgRGlzYXNzZW1ibGUgZ2VuZXJhdG9yIGl0c2VsZgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdlbl9kaXNhcywgZ2VuX2Z1bmNfZGlzYXMpCiAKKyAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9mc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoX2ZzdHJpbmcsIGRpc19mc3RyaW5nKQorCiAgICAgZGVmIHRlc3RfZGlzX25vbmUoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRlbCBzeXMubGFzdF90cmFjZWJhY2sKQEAgLTU0MSw3ICs1OTgsNyBAQAogS3ctb25seSBhcmd1bWVudHM6IDAKIE51bWJlciBvZiBsb2NhbHM6ICAyCiBTdGFjayBzaXplOiAgICAgICAgMTcKLUZsYWdzOiAgICAgICAgICAgICBPUFRJTUlaRUQsIE5FV0xPQ0FMUywgR0VORVJBVE9SLCBOT0ZSRUUsIENPUk9VVElORQorRmxhZ3M6ICAgICAgICAgICAgIE9QVElNSVpFRCwgTkVXTE9DQUxTLCBOT0ZSRUUsIENPUk9VVElORQogQ29uc3RhbnRzOgogICAgMDogTm9uZQogICAgMTogMSIiIgpAQCAtNjQ5LDE3MSArNzA2LDE2OSBAQAogCiBJbnN0cnVjdGlvbiA9IGRpcy5JbnN0cnVjdGlvbgogZXhwZWN0ZWRfb3BpbmZvX291dGVyID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTMsIGFyZ3JlcHI9JzMnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2YsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9mKSwgb2Zmc2V0PTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYnLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZiciLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0NMT1NVUkUnLCBvcGNvZGU9MTM0LCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yNywgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0zMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPScnLCBhcmdyZXByPSInJyIsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9MSVNUJywgb3Bjb2RlPTEwMywgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9NDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9NQVAnLCBvcGNvZGU9MTA1LCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD00NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPSdIZWxsbyB3b3JsZCEnLCBhcmdyZXByPSInSGVsbG8gd29ybGQhJyIsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NywgYXJndmFsPTcsIGFyZ3JlcHI9JzcgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9NTUsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9KDMsIDQpLCBhcmdyZXByPScoMywgNCknLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfZiwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2YpLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYnIiwgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9GVU5DVElPTicsIG9wY29kZT0xMzIsIGFyZz05LCBhcmd2YWw9OSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9JycsIGFyZ3JlcHI9IicnIiwgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX0xJU1QnLCBvcGNvZGU9MTAzLCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX01BUCcsIG9wY29kZT0xMDUsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9J0hlbGxvIHdvcmxkIScsIGFyZ3JlcHI9IidIZWxsbyB3b3JsZCEnIiwgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz03LCBhcmd2YWw9NywgYXJncmVwcj0nJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9fZiA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD01LCBhcmdyZXByPSc1Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfaW5uZXIsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9pbm5lciksIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInIiwgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9DTE9TVVJFJywgb3Bjb2RlPTEzNCwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0zMywgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0zOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD00NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JzQgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD01Miwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0oNSwgNiksIGFyZ3JlcHI9Jyg1LCA2KScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPScnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9pbm5lciwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2lubmVyKSwgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lciciLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMiwgYXJnPTksIGFyZ3ZhbD05LCBhcmdyZXByPScnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JycsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9faW5uZXIgPSBbCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdlJywgYXJncmVwcj0nZScsIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0xLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz02LCBhcmd2YWw9NiwgYXJncmVwcj0nNiBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTI1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0nZScsIGFyZ3JlcHI9J2UnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MSwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NiwgYXJndmFsPTYsIGFyZ3JlcHI9JycsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiBleHBlY3RlZF9vcGluZm9fanVtcHkgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTcxLCBhcmdyZXByPSd0byA3MScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdyYW5nZScsIGFyZ3JlcHI9J3JhbmdlJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nMTAnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0dFVF9JVEVSJywgb3Bjb2RlPTY4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0ZPUl9JVEVSJywgb3Bjb2RlPTkzLCBhcmc9NDQsIGFyZ3ZhbD02MCwgYXJncmVwcj0ndG8gNjAnLCBvZmZzZXQ9MTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOSwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yOSwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz00NCwgYXJndmFsPTQ0LCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD00MSwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTQ3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTUzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD02MSwgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD02NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9NjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz02OCwgYXJndmFsPTE0MiwgYXJncmVwcj0ndG8gMTQyJywgb2Zmc2V0PTcxLCBzdGFydHNfbGluZT0xMSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzMSwgYXJndmFsPTEzMSwgYXJncmVwcj0nJywgb2Zmc2V0PTc3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9ODksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05MCwgc3RhcnRzX2xpbmU9MTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTkzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSU5QTEFDRV9TVUJUUkFDVCcsIG9wY29kZT01NiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMDAsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0xMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTE1LCBhcmd2YWw9MTE1LCBhcmdyZXByPScnLCBvZmZzZXQ9MTA5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTExNSwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTEyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjcsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMzIsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xMzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzMsIGFyZ3ZhbD0yMTgsIGFyZ3JlcHI9J3RvIDIxOCcsIG9mZnNldD0xNDIsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xNjAsIGFyZ3JlcHI9J3RvIDE2MCcsIG9mZnNldD0xNDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTE0OCwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTE1MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTE4OCwgYXJncmVwcj0ndG8gMTg4Jywgb2Zmc2V0PTE1Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTE2MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTE2NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE4NywgYXJndmFsPTE4NywgYXJncmVwcj0nJywgb2Zmc2V0PTE2Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNzMsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0xNzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNywgYXJndmFsPTIxNCwgYXJncmVwcj0ndG8gMjE0Jywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTcsIGFyZ3ZhbD0yMTEsIGFyZ3JlcHI9J3RvIDIxMScsIG9mZnNldD0xOTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0xOTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTk3LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTIwMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjA4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX1NUQVJUJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9GSU5JU0gnLCBvcGNvZGU9ODIsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjE4LCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MjIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIyOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz01MiwgYXJndmFsPTU0LCBhcmdyZXByPSd0byA1NCcsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdyYW5nZScsIGFyZ3JlcHI9J3JhbmdlJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nMTAnLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nR0VUX0lURVInLCBvcGNvZGU9NjgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTMyLCBhcmd2YWw9NDQsIGFyZ3JlcHI9J3RvIDQ0Jywgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9NSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0zMiwgYXJndmFsPTMyLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTAsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NDAsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD00Niwgc3RhcnRzX2xpbmU9MTAsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nSSBjYW4gaGF6IGVsc2UgY2xhdXNlPycsIGFyZ3JlcHI9IidJIGNhbiBoYXogZWxzZSBjbGF1c2U/JyIsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD01MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTUyLCBhcmd2YWw9MTA4LCBhcmdyZXByPSd0byAxMDgnLCBvZmZzZXQ9NTQsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9OTgsIGFyZ3ZhbD05OCwgYXJncmVwcj0nJywgb2Zmc2V0PTU4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT0xMiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTYyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTY4LCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc2LCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz04NiwgYXJndmFsPTg2LCBhcmdyZXByPScnLCBvZmZzZXQ9ODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD04NCwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04Niwgc3RhcnRzX2xpbmU9MTYsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTQsIGFyZ3JlcHI9JzQnLCBvZmZzZXQ9ODgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9OTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz01NiwgYXJndmFsPTU2LCBhcmdyZXByPScnLCBvZmZzZXQ9OTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05NCwgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMDAsIHN0YXJ0c19saW5lPTE5LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9J1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nLCBhcmdyZXByPSInV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPyciLCBvZmZzZXQ9MTAyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MCwgYXJndmFsPTE4MCwgYXJncmVwcj0ndG8gMTgwJywgb2Zmc2V0PTEwOCwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTEyNCwgYXJncmVwcj0ndG8gMTI0Jywgb2Zmc2V0PTExMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTEyLCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MTUyLCBhcmdyZXByPSd0byAxNTInLCBvZmZzZXQ9MTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjQsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTUwLCBhcmd2YWw9MTUwLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEzOCwgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xNDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfRVhDRVBUJywgb3Bjb2RlPTg5LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjYsIGFyZ3ZhbD0xNzYsIGFyZ3JlcHI9J3RvIDE3NicsIG9mZnNldD0xNDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xNTIsIHN0YXJ0c19saW5lPTI1LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9XSVRIJywgb3Bjb2RlPTE0MywgYXJnPTE0LCBhcmd2YWw9MTcwLCBhcmdyZXByPSd0byAxNzAnLCBvZmZzZXQ9MTU0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0xLCBhcmd2YWw9J2RvZGd5JywgYXJncmVwcj0nZG9kZ3knLCBvZmZzZXQ9MTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE1OCwgc3RhcnRzX2xpbmU9MjYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTksIGFyZ3ZhbD0nTmV2ZXIgcmVhY2ggdGhpcycsIGFyZ3JlcHI9IidOZXZlciByZWFjaCB0aGlzJyIsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTYyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTY4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX1NUQVJUJywgb3Bjb2RlPTgxLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9GSU5JU0gnLCBvcGNvZGU9ODIsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xNzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTgwLCBzdGFydHNfbGluZT0yOCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xMCwgYXJndmFsPSJPSywgbm93IHdlJ3JlIGRvbmUiLCBhcmdyZXByPSciT0ssIG5vdyB3ZVwncmUgZG9uZSInLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTkwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xOTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogIyBPbmUgbGFzdCBwaWVjZSBvZiBpbnNwZWN0IGZvZGRlciB0byBjaGVjayB0aGUgZGVmYXVsdCBsaW5lIG51bWJlciBoYW5kbGluZwogZGVmIHNpbXBsZSgpOiBwYXNzCiBleHBlY3RlZF9vcGluZm9fc2ltcGxlID0gWwogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9c2ltcGxlLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSkKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKQogXQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQppbmRleCAzMzE2M2I5Li4yMjU4YzZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CkBAIC0yOTEsNyArMjkxLDcgQEAKICAgICAuLi4KICAgICAuLi4gTm9uLWV4YW1wbGUgdGV4dC4KICAgICAuLi4KLSAgICAuLi4gICAgID4+PiBwcmludCgnYW5vdGhlclxleGFtcGxlJykKKyAgICAuLi4gICAgID4+PiBwcmludCgnYW5vdGhlclxcZXhhbXBsZScpCiAgICAgLi4uICAgICBhbm90aGVyCiAgICAgLi4uICAgICBleGFtcGxlCiAgICAgLi4uICcnJwpAQCAtMTg3Niw3ICsxODc2LDYgQEAKICAgICAgICAgVG8gZGVtb25zdHJhdGUgdGhpcywgd2UnbGwgY3JlYXRlIGEgZmFrZSBzdGFuZGFyZCBpbnB1dCB0aGF0CiAgICAgICAgIGNhcHR1cmVzIG91ciBkZWJ1Z2dlciBpbnB1dDoKIAotICAgICAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKICAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgogICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKICAgICAgICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCkBAIC0xOTE3LDcgKzE5MTYsNyBAQAogICAgICAgICAgIC4uLiBmaW5hbGx5OgogICAgICAgICAgIC4uLiAgICAgc3lzLnN0ZGluID0gcmVhbF9zdGRpbgogICAgICAgICAgIC0tUmV0dXJuLS0KLSAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs4XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQorICAgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlWzddPigzKWNhbGxzX3NldF90cmFjZSgpLT5Ob25lCiAgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCiAgICAgICAgICAgKFBkYikgcHJpbnQoeSkKICAgICAgICAgICAyCkBAIC0yNzk4LDcgKzI3OTcsNiBAQAogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCIgICAgICAgJ2FiYyBkZWYnXG4iKQogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCJcbiIpCiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoJyAgIFwiXCJcIlxuJykKLSAgICAuLi4gICAgIGltcG9ydCBzaHV0aWwKICAgICAuLi4gICAgIHJjMSwgb3V0MSwgZXJyMSA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKAogICAgIC4uLiAgICAgICAgICAgICAnLW0nLCAnZG9jdGVzdCcsIGZuLCBmbjIpCiAgICAgLi4uICAgICByYzIsIG91dDIsIGVycjIgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soCkBAIC0yOTQyLDEyICsyOTQwLDExIEBACiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBpbiBkb2N0ZXN0IGl0c2VsZjoKICAgICByZXQgPSBzdXBwb3J0LnJ1bl9kb2N0ZXN0KGRvY3Rlc3QsIHZlcmJvc2l0eT1UcnVlKQorCiAgICAgIyBDaGVjayB0aGUgZG9jdGVzdCBjYXNlcyBkZWZpbmVkIGhlcmU6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X2RvY3Rlc3QKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCiAKLWltcG9ydCBzeXMsIHJlLCBpbwotCiBkZWYgdGVzdF9jb3ZlcmFnZShjb3ZlcmRpcik6CiAgICAgdHJhY2UgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RyYWNlJykKICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LF0sCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3RfZHRyYWNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMjM5YjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weQpAQCAtMCwwICsxLDE3OCBAQAoraW1wb3J0IGRpcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgcnVuX3VuaXR0ZXN0CisKKworZGVmIGFic3BhdGgoZmlsZW5hbWUpOgorICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgoZmluZGZpbGUoZmlsZW5hbWUsIHN1YmRpcj0iZHRyYWNlZGF0YSIpKQorCisKK2RlZiBub3JtYWxpemVfdHJhY2Vfb3V0cHV0KG91dHB1dCk6CisgICAgIiIiTm9ybWFsaXplIERUcmFjZSBvdXRwdXQgZm9yIGNvbXBhcmlzb24uCisKKyAgICBEVHJhY2Uga2VlcHMgYSBwZXItQ1BVIGJ1ZmZlciwgYW5kIHdoZW4gc2hvd2luZyB0aGUgZmlyZWQgcHJvYmVzLCBidWZmZXJzCisgICAgYXJlIGNvbmNhdGVuYXRlZC4gU28gaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gbW92ZXMgb3VyIHRocmVhZCBhcm91bmQsIHRoZQorICAgIHN0cmFpZ2h0IHJlc3VsdCBjYW4gYmUgIm5vbi1jYXVzYWwiLiBTbyB3ZSBhZGQgdGltZXN0YW1wcyB0byB0aGUgcHJvYmUKKyAgICBmaXJpbmcsIHNvcnQgYnkgdGhhdCBmaWVsZCwgdGhlbiBzdHJpcCBpdCBmcm9tIHRoZSBvdXRwdXQiIiIKKworICAgICMgV2hlbiBjb21waWxpbmcgd2l0aCAnLS13aXRoLXB5ZGVidWcnLCBzdHJpcCAnWyMgcmVmc10nIGRlYnVnIG91dHB1dC4KKyAgICBvdXRwdXQgPSByZS5zdWIociJcW1swLTldKyByZWZzXF0iLCAiIiwgb3V0cHV0KQorICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gWworICAgICAgICAgICAgcm93LnNwbGl0KCJcdCIpCisgICAgICAgICAgICBmb3Igcm93IGluIG91dHB1dC5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgIGlmIHJvdyBhbmQgbm90IHJvdy5zdGFydHN3aXRoKCcjJykKKyAgICAgICAgXQorICAgICAgICByZXN1bHQuc29ydChrZXk9bGFtYmRhIHJvdzogaW50KHJvd1swXSkpCisgICAgICAgIHJlc3VsdCA9IFtyb3dbMV0gZm9yIHJvdyBpbiByZXN1bHRdCisgICAgICAgIHJldHVybiAiXG4iLmpvaW4ocmVzdWx0KQorICAgIGV4Y2VwdCAoSW5kZXhFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgInRyYWNlciBwcm9kdWNlZCB1bnBhcnNlYWJsZSBvdXRwdXQ6XG57fSIuZm9ybWF0KG91dHB1dCkKKyAgICAgICAgKQorCisKK2NsYXNzIFRyYWNlQmFja2VuZDoKKyAgICBFWFRFTlNJT04gPSBOb25lCisgICAgQ09NTUFORCA9IE5vbmUKKyAgICBDT01NQU5EX0FSR1MgPSBbXQorCisgICAgZGVmIHJ1bl9jYXNlKHNlbGYsIG5hbWUsIG9wdGltaXplX3B5dGhvbj1Ob25lKToKKyAgICAgICAgYWN0dWFsX291dHB1dCA9IG5vcm1hbGl6ZV90cmFjZV9vdXRwdXQoc2VsZi50cmFjZV9weXRob24oCisgICAgICAgICAgICBzY3JpcHRfZmlsZT1hYnNwYXRoKG5hbWUgKyBzZWxmLkVYVEVOU0lPTiksCisgICAgICAgICAgICBweXRob25fZmlsZT1hYnNwYXRoKG5hbWUgKyAiLnB5IiksCisgICAgICAgICAgICBvcHRpbWl6ZV9weXRob249b3B0aW1pemVfcHl0aG9uKSkKKworICAgICAgICB3aXRoIG9wZW4oYWJzcGF0aChuYW1lICsgc2VsZi5FWFRFTlNJT04gKyAiLmV4cGVjdGVkIikpIGFzIGY6CisgICAgICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSBmLnJlYWQoKS5yc3RyaXAoKQorCisgICAgICAgIHJldHVybiAoZXhwZWN0ZWRfb3V0cHV0LCBhY3R1YWxfb3V0cHV0KQorCisgICAgZGVmIGdlbmVyYXRlX3RyYWNlX2NvbW1hbmQoc2VsZiwgc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQ9Tm9uZSk6CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLkNPTU1BTkQgKyBbc2NyaXB0X2ZpbGVdCisgICAgICAgIGlmIHN1YmNvbW1hbmQ6CisgICAgICAgICAgICBjb21tYW5kICs9IFsiLWMiLCBzdWJjb21tYW5kXQorICAgICAgICByZXR1cm4gY29tbWFuZAorCisgICAgZGVmIHRyYWNlKHNlbGYsIHNjcmlwdF9maWxlLCBzdWJjb21tYW5kPU5vbmUpOgorICAgICAgICBjb21tYW5kID0gc2VsZi5nZW5lcmF0ZV90cmFjZV9jb21tYW5kKHNjcmlwdF9maWxlLCBzdWJjb21tYW5kKQorICAgICAgICBzdGRvdXQsIF8gPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLmNvbW11bmljYXRlKCkKKyAgICAgICAgcmV0dXJuIHN0ZG91dAorCisgICAgZGVmIHRyYWNlX3B5dGhvbihzZWxmLCBzY3JpcHRfZmlsZSwgcHl0aG9uX2ZpbGUsIG9wdGltaXplX3B5dGhvbj1Ob25lKToKKyAgICAgICAgcHl0aG9uX2ZsYWdzID0gW10KKyAgICAgICAgaWYgb3B0aW1pemVfcHl0aG9uOgorICAgICAgICAgICAgcHl0aG9uX2ZsYWdzLmV4dGVuZChbIi1PIl0gKiBvcHRpbWl6ZV9weXRob24pCisgICAgICAgIHN1YmNvbW1hbmQgPSAiICIuam9pbihbc3lzLmV4ZWN1dGFibGVdICsgcHl0aG9uX2ZsYWdzICsgW3B5dGhvbl9maWxlXSkKKyAgICAgICAgcmV0dXJuIHNlbGYudHJhY2Uoc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQpCisKKyAgICBkZWYgYXNzZXJ0X3VzYWJsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi50cmFjZShhYnNwYXRoKCJhc3NlcnRfdXNhYmxlIiArIHNlbGYuRVhURU5TSU9OKSkKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5zdHJpcCgpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBmbmZlOgorICAgICAgICAgICAgb3V0cHV0ID0gc3RyKGZuZmUpCisgICAgICAgIGlmIG91dHB1dCAhPSAicHJvYmU6IHN1Y2Nlc3MiOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAgICAgICAgICAgInt9KDEpIGZhaWxlZDoge30iLmZvcm1hdChzZWxmLkNPTU1BTkRbMF0sIG91dHB1dCkKKyAgICAgICAgICAgICkKKworCitjbGFzcyBEVHJhY2VCYWNrZW5kKFRyYWNlQmFja2VuZCk6CisgICAgRVhURU5TSU9OID0gIi5kIgorICAgIENPTU1BTkQgPSBbImR0cmFjZSIsICItcSIsICItcyJdCisKKworY2xhc3MgU3lzdGVtVGFwQmFja2VuZChUcmFjZUJhY2tlbmQpOgorICAgIEVYVEVOU0lPTiA9ICIuc3RwIgorICAgIENPTU1BTkQgPSBbInN0YXAiLCAiLWciXQorCisKK2NsYXNzIFRyYWNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdW5pdHRlc3QuVGVzdENhc2Ugb3B0aW9ucworICAgIG1heERpZmYgPSBOb25lCisKKyAgICAjIFRyYWNlVGVzdHMgb3B0aW9ucworICAgIGJhY2tlbmQgPSBOb25lCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYmFja2VuZC5hc3NlcnRfdXNhYmxlKCkKKworICAgIGRlZiBydW5fY2FzZShzZWxmLCBuYW1lKToKKyAgICAgICAgYWN0dWFsX291dHB1dCwgZXhwZWN0ZWRfb3V0cHV0ID0gc2VsZi5iYWNrZW5kLnJ1bl9jYXNlKAorICAgICAgICAgICAgbmFtZSwgb3B0aW1pemVfcHl0aG9uPXNlbGYub3B0aW1pemVfcHl0aG9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9vdXRwdXQsIGV4cGVjdGVkX291dHB1dCkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2VudHJ5X3JldHVybihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgiY2FsbF9zdGFjayIpCisKKyAgICBkZWYgdGVzdF92ZXJpZnlfY2FsbF9vcGNvZGVzKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgb3VyIGNhbGwgc3RhY2sgdGVzdCBoaXRzIGFsbCBmdW5jdGlvbiBjYWxsIG9wY29kZXMiIiIKKworICAgICAgICBvcGNvZGVzID0gc2V0KFsiQ0FMTF9GVU5DVElPTiIsICJDQUxMX0ZVTkNUSU9OX0VYIiwgIkNBTExfRlVOQ1RJT05fS1ciXSkKKworICAgICAgICB3aXRoIG9wZW4oYWJzcGF0aCgiY2FsbF9zdGFjay5weSIpKSBhcyBmOgorICAgICAgICAgICAgY29kZV9zdHJpbmcgPSBmLnJlYWQoKQorCisgICAgICAgIGRlZiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKGZ1bmNuYW1lKToKKyAgICAgICAgICAgICMgUmVjb21waWxlIHdpdGggYXBwcm9wcmlhdGUgb3B0aW1pemF0aW9uIHNldHRpbmcKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKHNvdXJjZT1jb2RlX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSI8c3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlPSJleGVjIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPXNlbGYub3B0aW1pemVfcHl0aG9uKQorCisgICAgICAgICAgICBmb3IgYyBpbiBjb2RlLmNvX2NvbnN0czoKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGMsIHR5cGVzLkNvZGVUeXBlKSBhbmQgYy5jb19uYW1lID09IGZ1bmNuYW1lOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGlzLmdldF9pbnN0cnVjdGlvbnMoYykKKyAgICAgICAgICAgIHJldHVybiBbXQorCisgICAgICAgIGZvciBpbnN0cnVjdGlvbiBpbiBnZXRfZnVuY3Rpb25faW5zdHJ1Y3Rpb25zKCdzdGFydCcpOgorICAgICAgICAgICAgb3Bjb2Rlcy5kaXNjYXJkKGluc3RydWN0aW9uLm9wbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBvcGNvZGVzKQorCisgICAgZGVmIHRlc3RfZ2Moc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImdjIikKKworICAgIGRlZiB0ZXN0X2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImxpbmUiKQorCisKK2NsYXNzIERUcmFjZU5vcm1hbFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBEVHJhY2VCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKworY2xhc3MgRFRyYWNlT3B0aW1pemVkVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IERUcmFjZUJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDIKKworCitjbGFzcyBTeXN0ZW1UYXBOb3JtYWxUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gU3lzdGVtVGFwQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisKK2NsYXNzIFN5c3RlbVRhcE9wdGltaXplZFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBTeXN0ZW1UYXBCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAyCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChEVHJhY2VOb3JtYWxUZXN0cywgRFRyYWNlT3B0aW1pemVkVGVzdHMsIFN5c3RlbVRhcE5vcm1hbFRlc3RzLAorICAgICAgICAgICAgICAgICBTeXN0ZW1UYXBPcHRpbWl6ZWRUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKaW5kZXggNTA4MGVjOS4uM2FlMDkwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQpAQCAtMSw3ICsxLDYgQEAKICMgVGVzdCB0aGUgbW9zdCBkeW5hbWljIGNvcm5lciBjYXNlcyBvZiBQeXRob24ncyBydW50aW1lIHNlbWFudGljcy4KIAogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzd2FwX2l0ZW0sIHN3YXBfYXR0cgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9laW50ci5weSBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKaW5kZXggYWFiYWQ4My4uMjVmODZkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9laW50ci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CkBAIC0xLDcgKzEsNSBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTYsMTQgKzE0LDggQEAKICAgICAgICAgIyBSdW4gdGhlIHRlc3RlciBpbiBhIHN1Yi1wcm9jZXNzLCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBvbmUKICAgICAgICAgIyB0aHJlYWQgKGZvciByZWxpYWJsZSBzaWduYWwgZGVsaXZlcnkpLgogICAgICAgICB0ZXN0ZXIgPSBzdXBwb3J0LmZpbmRmaWxlKCJlaW50cl90ZXN0ZXIucHkiLCBzdWJkaXI9ImVpbnRyZGF0YSIpCi0KLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgdGVzdGVyXQotICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpIGFzIHByb2M6Ci0gICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jLndhaXQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vayh0ZXN0ZXIpCisgICAgICAgICMgdXNlIC11IHRvIHRyeSB0byBnZXQgdGhlIGZ1bGwgb3V0cHV0IGlmIHRoZSB0ZXN0IGhhbmdzIG9yIGNyYXNoCisgICAgICAgIHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygiLXUiLCB0ZXN0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CmluZGV4IGQ0YTAzZWUuLjg4ODc1MWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBlbWFpbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IGY3YWMwZTMuLjI2ZWNlNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTU4MSw3ICs1ODEsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXVvdGVkX3BhcmVucyhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCi0gICAgICAgICAgICAnKGZvb1wpIFwoXCliYXIpJywgJyhmb29cKSBcKFwpYmFyKScsICcgJywgW10sICcnLCBbJ2ZvbykgKCliYXInXSkKKyAgICAgICAgICAgIHInKGZvb1wpIFwoXCliYXIpJywgcicoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9ub25fcHJpbnRhYmxlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKQEAgLTYyNSw3ICs2MjUsNyBAQAogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfcXNfaW5fbmVzdGVkX2NvbW1lbnQoc2VsZik6CiAgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKLSAgICAgICAgICAgICcoZm9vIChiXCkpKScsICcoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbJ2ZvbyAoYlwpKSddKQorICAgICAgICAgICAgcicoZm9vIChiXCkpKScsIHInKGZvbyAoYlwpKSknLCAnICcsIFtdLCAnJywgW3InZm9vIChiXCkpJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudFsyXS5jb250ZW50LCAnYiknKQogCiAgICAgIyBnZXRfY2Z3cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKaW5kZXggZjljZDdkOS4uMWUwY2FlZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CkBAIC0zLDcgKzMsNiBAQAogIyBlbWFpbCBwYWNrYWdlIHVuaXQgdGVzdHMgZm9yIChvcHRpb25hbCkgQXNpYW4gY29kZWNzCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQogZnJvbSBlbWFpbC5jaGFyc2V0IGltcG9ydCBDaGFyc2V0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKaW5kZXggYTUzY2M5Yi4uZGFhMTI4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpAQCAtMzEsNiArMzEsNyBAQAogZnJvbSBlbWFpbC5taW1lLmJhc2UgaW1wb3J0IE1JTUVCYXNlCiBmcm9tIGVtYWlsLm1pbWUubWVzc2FnZSBpbXBvcnQgTUlNRU1lc3NhZ2UKIGZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKK2Zyb20gZW1haWwubWltZS5ub25tdWx0aXBhcnQgaW1wb3J0IE1JTUVOb25NdWx0aXBhcnQKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCkBAIC0yMDc3LDcgKzIwNzgsMTMgQEAKIC0tPT09PT09PT09PT09PT09MDAxMjM5NDE2ND09LS0iIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5nZXRfcGF5bG9hZCgwKS5nZXRfcGF5bG9hZCgpLCAnWVhOa1pnPT0nKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfZGVmYXVsdF9wb2xpY3koc2VsZik6CisgICAgICAgIG0gPSBNSU1FQmFzZSgnbXVsdGlwYXJ0JywgJ21peGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmNvbXBhdDMyKQogCisgICAgZGVmIHRlc3RfbWltZWJhc2VfY3VzdG9tX3BvbGljeShzZWxmKToKKyAgICAgICAgbSA9IE1JTUVCYXNlKCdtdWx0aXBhcnQnLCAnbWl4ZWQnLCBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQogCiAjIFRlc3Qgc29tZSBiYWRseSBmb3JtYXR0ZWQgbWVzc2FnZXMKIGNsYXNzIFRlc3ROb25Db25mb3JtYW50KFRlc3RFbWFpbEJhc2UpOgpAQCAtMjY3OSw2ICsyNjg2LDE5IEBACiAgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobXNnLmlzX211bHRpcGFydCgpKQogCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2RlZmF1bHRfcG9saWN5KHNlbGYpOgorICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KCkKKyAgICAgICAgbXNnWydUbyddID0gJ2FAYi5jb20nCisgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfYWxsKCd0bycpLCBbJ2FAYi5jb20nLCAnY0BkLmNvbSddKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2N1c3RvbV9wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQocG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICBtc2dbJ1RvJ10gPSAnYUBiLmNvbScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG1zZ1snVG8nXSA9ICdjQGQuY29tJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBtYXkgYmUgYXQgbW9zdCAxIFRvIGhlYWRlcnMgaW4gYSBtZXNzYWdlJykKIAogIyBBIGdlbmVyYWwgdGVzdCBvZiBwYXJzZXItPm1vZGVsLT5nZW5lcmF0b3IgaWRlbXBvdGVuY3kuICBJT1csIHJlYWQgYSBtZXNzYWdlCiAjIGluLCBwYXJzZSBpdCBpbnRvIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgdGhlbiB3aXRob3V0IHRvdWNoaW5nIHRoZSB0cmVlLApAQCAtMzAzMiw3ICszMDUyLDcgQEAKIAogICAgIGRlZiB0ZXN0X2VzY2FwZV9iYWNrc2xhc2hlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIHV0aWxzLmZvcm1hdGFkZHIoKCdBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAorICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigocidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJywgJ3BlcnNvbkBkb20uYWluJykpLAogICAgICAgICAgICAgciciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JykKICAgICAgICAgYSA9IHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKQEAgLTMzMjgsNiArMzM0OCwyNyBAQAogICAgICAgICBnLmZsYXR0ZW4obXNnLCBsaW5lc2VwPSdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIG1zZ3R4dCkKIAorICAgIGRlZiB0ZXN0X21pbWVfY2xhc3Nlc19wb2xpY3lfYXJndW1lbnQoc2VsZik6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ2F1ZGlvdGVzdC5hdScsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYXVkaW9kYXRhID0gZnAucmVhZCgpCisgICAgICAgIHdpdGggb3BlbmZpbGUoJ1B5QmFubmVyMDQ4LmdpZicsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgYmluZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICBjbGFzc2VzID0gWworICAgICAgICAgICAgKE1JTUVBcHBsaWNhdGlvbiwgKCcnLCkpLAorICAgICAgICAgICAgKE1JTUVBdWRpbywgKGF1ZGlvZGF0YSwpKSwKKyAgICAgICAgICAgIChNSU1FSW1hZ2UsIChiaW5kYXRhLCkpLAorICAgICAgICAgICAgKE1JTUVNZXNzYWdlLCAoTWVzc2FnZSgpLCkpLAorICAgICAgICAgICAgKE1JTUVOb25NdWx0aXBhcnQsICgnbXVsdGlwYXJ0JywgJ21peGVkJykpLAorICAgICAgICAgICAgKE1JTUVUZXh0LCAoJycsKSksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNscywgY29uc3RydWN0b3IgaW4gY2xhc3NlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNscz1jbHMuX19uYW1lX18sIHBvbGljeT0nY29tcGF0MzInKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuY29tcGF0MzIpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbHM9Y2xzLl9fbmFtZV9fLCBwb2xpY3k9J2RlZmF1bHQnKToKKyAgICAgICAgICAgICAgICBtID0gY2xzKCpjb25zdHJ1Y3RvciwgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5kZWZhdWx0KQorCiAKICMgVGVzdCB0aGUgaXRlcmF0b3IvZ2VuZXJhdG9ycwogY2xhc3MgVGVzdEl0ZXJhdG9ycyhUZXN0RW1haWxCYXNlKToKQEAgLTM0MzYsNyArMzQ3Nyw2IEBACiBjbGFzcyBUZXN0RmVlZFBhcnNlcnMoVGVzdEVtYWlsQmFzZSk6CiAKICAgICBkZWYgcGFyc2Uoc2VsZiwgY2h1bmtzKToKLSAgICAgICAgZnJvbSBlbWFpbC5mZWVkcGFyc2VyIGltcG9ydCBGZWVkUGFyc2VyCiAgICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKCkKICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKICAgICAgICAgICAgIGZlZWRwYXJzZXIuZmVlZChjaHVuaykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CmluZGV4IGIxY2JjZTIuLjdjODg3N2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQpAQCAtMTQzLDcgKzE0Myw3IEBACiAgICAgZGVmIHRlc3Rfc2V0X21hbmdsZV9mcm9tX3ZpYV9wb2xpY3koc2VsZik6CiAgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCiAgICAgICAgICAgICBTdWJqZWN0OiB0ZXN0IHRoYXQKLSAgICAgICAgICAgICBmcm9tIGlzIG1hbmdlbGQgaW4gdGhlIGJvZHkhCisgICAgICAgICAgICAgZnJvbSBpcyBtYW5nbGVkIGluIHRoZSBib2R5IQogCiAgICAgICAgICAgICBGcm9tIHRpbWUgdG8gdGltZSBJIHdyaXRlIGEgcmh5bWUuCiAgICAgICAgICAgICAiIiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKaW5kZXggNTVlY2RlYS4uYWY4MzZkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBkYXRldGltZQogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0eXBlcwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCiBmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQppbmRleCA0MzQ1MTYyLi5mM2E1N2RmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQpAQCAtNzY0LDYgKzc2NCwyNiBAQAogICAgICAgICBtLnNldF9jb250ZW50KGNvbnRlbnRfbWFuYWdlcj1jbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydNSU1FLVZlcnNpb24nXSwgJzEuMCcpCiAKKyAgICBkZWYgdGVzdF9hc19zdHJpbmdfdXNlc19tYXhfaGVhZGVyX2xlbmd0aF9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZygpLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X2FzX3N0cmluZ19hbGxvd3NfbWF4aGVhZGVybGVuKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZyhtYXhoZWFkZXJsZW49MCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKG1heGhlYWRlcmxlbj0zNCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDYpCisKKyAgICBkZWYgdGVzdF9zdHJfZGVmYXVsdHNfdG9fcG9saWN5X21heF9saW5lX2xlbmd0aChzZWxmKToKKyAgICAgICAgbSA9IHNlbGYuX3N0cl9tc2coJ1N1YmplY3Q6IGxvbmcgbGluZScgKyAnIGFiJyo1MCArICdcblxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RyKG0pLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwgMykKKworICAgIGRlZiB0ZXN0X3N0cl9kZWZhdWx0c190b191dGY4KHNlbGYpOgorICAgICAgICBtID0gRW1haWxNZXNzYWdlKCkKKyAgICAgICAgbVsnU3ViamVjdCddID0gJ3VuaWPDtmRlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtKSwgJ1N1YmplY3Q6IHVuaWPDtmRlXG5cbicpCisKIAogY2xhc3MgVGVzdE1JTUVQYXJ0KFRlc3RFbWFpbE1lc3NhZ2VCYXNlLCBUZXN0RW1haWxCYXNlKToKICAgICAjIERvaW5nIHRoZSBmdWxsIHRlc3QgcnVuIGhlcmUgbWF5IHNlZW0gYSBiaXQgcmVkdW5kYW50LCBzaW5jZSB0aGUgdHdvCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQppbmRleCA4ZGRjMTc2My4uMDZjODY0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgZW1haWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UsIEVtYWlsTWVzc2FnZQogZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiAKQEAgLTM5LDM4ICszOSw3MSBAQAogICAgICAgICAjIFRoZSB1bmljb2RlIGxpbmUgc3BsaXR0ZXIgc3BsaXRzIG9uIHVuaWNvZGUgbGluZWJyZWFrcywgd2hpY2ggYXJlCiAgICAgICAgICMgbW9yZSBudW1lcm91cyB0aGFuIGFsbG93ZWQgYnkgdGhlIGVtYWlsIFJGQ3M7IG1ha2Ugc3VyZSB3ZSBhcmUgb25seQogICAgICAgICAjIHNwbGl0dGluZyBvbiB0aG9zZSB0d28uCi0gICAgICAgIG1zZyA9IHNlbGYucGFyc2VyKAotICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTnVsbDogbm90XHgwMGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiVmVydGljYWwtVGFiOiBub3RcdmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCi0gICAgICAgICAgICAiRmlsZS1TZXBhcmF0b3I6IG5vdFx4MUNicm9rZW5cclxuIgotICAgICAgICAgICAgIkdyb3VwLVNlcGFyYXRvcjogbm90XHgxRGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiTGluZS1TZXBhcmF0b3I6IG5vdFx1MjAyOGJyb2tlblxyXG4iCi0gICAgICAgICAgICAiUGFyYWdyYXBoLVNlcGFyYXRvcjogbm90XHUyMDI5YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJcclxuIiwKLSAgICAgICAgICAgIHBvbGljeT1kZWZhdWx0LAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKLSAgICAgICAgICAgICgiTmV4dC1MaW5lIiwgIm5vdFx4ODVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTnVsbCIsICJub3RceDAwYnJva2VuIiksCi0gICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAotICAgICAgICAgICAgKCJGb3JtLUZlZWQiLCAibm90XGZicm9rZW4iKSwKLSAgICAgICAgICAgICgiRmlsZS1TZXBhcmF0b3IiLCAibm90XHgxQ2Jyb2tlbiIpLAotICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAotICAgICAgICAgICAgKCJSZWNvcmQtU2VwYXJhdG9yIiwgIm5vdFx4MUVicm9rZW4iKSwKLSAgICAgICAgICAgICgiTGluZS1TZXBhcmF0b3IiLCAibm90XHUyMDI4YnJva2VuIiksCi0gICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCi0gICAgICAgIF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICIiKQorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigKKyAgICAgICAgICAgICAgICAgICAgIk5leHQtTGluZTogbm90XHg4NWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJOdWxsOiBub3RceDAwYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlZlcnRpY2FsLVRhYjogbm90XHZicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiRm9ybS1GZWVkOiBub3RcZmJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJGaWxlLVNlcGFyYXRvcjogbm90XHgxQ2Jyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJHcm91cC1TZXBhcmF0b3I6IG5vdFx4MURicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiUmVjb3JkLVNlcGFyYXRvcjogbm90XHgxRWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJMaW5lLVNlcGFyYXRvcjogbm90XHUyMDI4YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlBhcmFncmFwaC1TZXBhcmF0b3I6IG5vdFx1MjAyOWJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgcG9saWN5PWRlZmF1bHQsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLml0ZW1zKCksIFsKKyAgICAgICAgICAgICAgICAgICAgKCJOZXh0LUxpbmUiLCAibm90XHg4NWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIk51bGwiLCAibm90XHgwMGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlZlcnRpY2FsLVRhYiIsICJub3RcdmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZvcm0tRmVlZCIsICJub3RcZmJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkZpbGUtU2VwYXJhdG9yIiwgIm5vdFx4MUNicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJHcm91cC1TZXBhcmF0b3IiLCAibm90XHgxRGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlJlY29yZC1TZXBhcmF0b3IiLCAibm90XHgxRWJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkxpbmUtU2VwYXJhdG9yIiwgIm5vdFx1MjAyOGJyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIlBhcmFncmFwaC1TZXBhcmF0b3IiLCAibm90XHUyMDI5YnJva2VuIiksCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAiIikKKworICAgIGNsYXNzIE15TWVzc2FnZShFbWFpbE1lc3NhZ2UpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9mYWN0b3J5X29uX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorCisgICAgZGVmIHRlc3RfZmFjdG9yeV9hcmdfb3ZlcnJpZGVzX3BvbGljeShzZWxmKToKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBNeVBvbGljeSA9IGRlZmF1bHQuY2xvbmUobWVzc2FnZV9mYWN0b3J5PXNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIG1zZyA9IHBhcnNlcigiVG86IGZvb1xuXG50ZXN0IiwgTWVzc2FnZSwgcG9saWN5PU15UG9saWN5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2csIE1lc3NhZ2UpCisKKyMgUGxheSBzb21lIGdhbWVzIHRvIGdldCBuaWNlIG91dHB1dCBpbiBzdWJUZXN0LiAgVGhpcyBjb2RlIGNvdWxkIGJlIGNsZWFyZXIKKyMgaWYgc3RhdGljbWV0aG9kIHN1cHBvcnRlZCBfX25hbWVfXy4KKworZGVmIG1lc3NhZ2VfZnJvbV9maWxlKHMsICphcmdzLCAqKmt3KToKKyAgICBmID0gaW8uU3RyaW5nSU8ocykKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgKmFyZ3MsICoqa3cpCiAKIGNsYXNzIFRlc3RQYXJzZXIoVGVzdFBhcnNlckJhc2UsIFRlc3RFbWFpbEJhc2UpOgotICAgIHBhcnNlciA9IHN0YXRpY21ldGhvZChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKQorICAgIHBhcnNlcnMgPSAoZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZywgbWVzc2FnZV9mcm9tX2ZpbGUpCisKK2RlZiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgKmFyZ3MsICoqa3cpOgorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMocy5lbmNvZGUoKSwgKmFyZ3MsICoqa3cpCisKK2RlZiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUocywgKmFyZ3MsICoqa3cpOgorICAgIGYgPSBpby5CeXRlc0lPKHMuZW5jb2RlKCkpCisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmLCAqYXJncywgKiprdykKIAogY2xhc3MgVGVzdEJ5dGVzUGFyc2VyKFRlc3RQYXJzZXJCYXNlLCBUZXN0RW1haWxCYXNlKToKLSAgICBkZWYgcGFyc2VyKHNlbGYsIHMsICphcmdzLCAqKmt3KToKLSAgICAgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzLmVuY29kZSgpLCAqYXJncywgKiprdykKKyAgICBwYXJzZXJzID0gKG1lc3NhZ2VfZnJvbV9ieXRlcywgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQppbmRleCA3MGFjNGRiLi44ZmVjYjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgZW1haWwucG9saWN5CiBpbXBvcnQgZW1haWwucGFyc2VyCiBpbXBvcnQgZW1haWwuZ2VuZXJhdG9yCitpbXBvcnQgZW1haWwubWVzc2FnZQogZnJvbSBlbWFpbCBpbXBvcnQgaGVhZGVycmVnaXN0cnkKIAogZGVmIG1ha2VfZGVmYXVsdHMoYmFzZV9kZWZhdWx0cywgZGlmZmVyZW5jZXMpOgpAQCAtMjMsNiArMjQsNyBAQAogICAgICAgICAnY3RlX3R5cGUnOiAgICAgICAgICAgICAgICAgJzhiaXQnLAogICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBUcnVlLAorICAgICAgICAnbWVzc2FnZV9mYWN0b3J5JzogICAgICAgICAgTm9uZSwKICAgICAgICAgfQogICAgICMgVGhlc2UgZGVmYXVsdCB2YWx1ZXMgYXJlIHRoZSBvbmVzIHNldCBvbiBlbWFpbC5wb2xpY3kuZGVmYXVsdC4KICAgICAjIElmIGFueSBvZiB0aGVzZSBkZWZhdWx0cyBjaGFuZ2UsIHRoZSBkb2NzIG11c3QgYmUgdXBkYXRlZC4KQEAgLTM0LDYgKzM2LDcgQEAKICAgICAgICAgJ3JlZm9sZF9zb3VyY2UnOiAgICAgICAgICAgICdsb25nJywKICAgICAgICAgJ2NvbnRlbnRfbWFuYWdlcic6ICAgICAgICAgIGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5jb250ZW50X21hbmFnZXIsCiAgICAgICAgICdtYW5nbGVfZnJvbV8nOiAgICAgICAgICAgICBGYWxzZSwKKyAgICAgICAgJ21lc3NhZ2VfZmFjdG9yeSc6ICAgICAgICAgIGVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLAogICAgICAgICB9KQogCiAgICAgIyBGb3IgZWFjaCBwb2xpY3kgdW5kZXIgdGVzdCwgd2UgZ2l2ZSBoZXJlIHdoYXQgd2UgZXhwZWN0IHRoZSBkZWZhdWx0cyB0bwpAQCAtNjIsMjAgKzY1LDIyIEBACiAgICAgZGVmIHRlc3RfZGVmYXVsdHMoc2VsZik6CiAgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBleHBlY3RlZC5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwb2xpY3ksIGF0dHIpLCB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiY2hhbmdlIHt9IGRvY3MvZG9jc3RyaW5ncyBpZiBkZWZhdWx0cyBoYXZlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCiAKICAgICBkZWYgdGVzdF9hbGxfYXR0cmlidXRlc19jb3ZlcmVkKHNlbGYpOgogICAgICAgICBmb3IgcG9saWN5LCBleHBlY3RlZCBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBkaXIocG9saWN5KToKLSAgICAgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKCdfJykgb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie30gaXMgbm90IGZ1bGx5IHRlc3RlZCIuZm9ybWF0KGF0dHIpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBvbGljeT1wb2xpY3ksIGF0dHI9YXR0cik6CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoZ2V0YXR0cihlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3ksIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCiAKICAgICBkZWYgdGVzdF9hYmMoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKQEAgLTIzNyw2ICsyNDIsOSBAQAogICAgICMgd2lucyksIGJ1dCB0aGF0IHRoZSBvcmRlciBzdGlsbCB3b3JrcyAocmlnaHQgb3ZlcnJpZGVzIGxlZnQpLgogCiAKK2NsYXNzIFRlc3RFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGNsYXNzIFRlc3RQb2xpY3lQcm9wYWdhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIFRoZSBhYnN0cmFjdCBtZXRob2RzIGFyZSB1c2VkIGJ5IHRoZSBwYXJzZXIgYnV0IG5vdCBieSB0aGUgd3JhcHBlcgpAQCAtMjQ0LDQwICsyNTIsNDAgQEAKICAgICAjIHBvbGljeSB3YXMgYWN0dWFsbHkgcHJvcGFnYXRlZCBhbGwgdGhlIHdheSB0byBmZWVkcGFyc2VyLgogICAgIGNsYXNzIE15UG9saWN5KGVtYWlsLnBvbGljeS5Qb2xpY3kpOgogICAgICAgICBkZWYgYmFkbWV0aG9kKHNlbGYsICphcmdzLCAqKmt3KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidGVzdCIpCisgICAgICAgICAgICByYWlzZSBUZXN0RXhjZXB0aW9uKCJ0ZXN0IikKICAgICAgICAgZm9sZCA9IGZvbGRfYmluYXJ5ID0gaGVhZGVyX2ZldGNoX3BhcnNlciA9IGJhZG1ldGhvZAogICAgICAgICBoZWFkZXJfc291cmNlX3BhcnNlID0gaGVhZGVyX3N0b3JlX3BhcnNlID0gYmFkbWV0aG9kCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fc3RyaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2J5dGVzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMoYiJTdWJqZWN0OiB0ZXN0XG5cbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fZmlsZShzZWxmKToKICAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCdTdWJqZWN0OiB0ZXN0XG5cbicpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgIyBUaGVzZSBhcmUgcmVkdW5kYW50LCBidXQgd2UgbmVlZCB0aGVtIGZvciBibGFjay1ib3ggY29tcGxldGVuZXNzLgogCiAgICAgZGVmIHRlc3RfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLlBhcnNlcihwb2xpY3k9c2VsZi5NeVBvbGljeSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgcC5wYXJzZXN0cignU3ViamVjdDogdGVzdFxuXG4nKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfcGFyc2VyKHNlbGYpOgogICAgICAgICBwID0gZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBwLnBhcnNlYnl0ZXMoYidTdWJqZWN0OiB0ZXN0XG5cbicpCiAKICAgICAjIE5vdyB0aGF0IHdlJ3ZlIGVzdGFibGlzaGVkIHRoYXQgYWxsIHRoZSBwYXJzZSBtZXRob2RzIGdldCB0aGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weSBiL0xpYi90ZXN0L3Rlc3RfZW51bS5weQppbmRleCA2MzBiMTU1Li4yYjNiZmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CkBAIC0zLDkgKzMsMTAgQEAKIGltcG9ydCBweWRvYwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBJbnRFbnVtLCBFbnVtTWV0YSwgdW5pcXVlCitmcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0sIEVudW1NZXRhLCBGbGFnLCBJbnRGbGFnLCB1bmlxdWUsIGF1dG8KIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzLCBQaWNrbGluZ0Vycm9yLCBISUdIRVNUX1BST1RPQ09MCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBmb3IgcGlja2xlIHRlc3RzCiB0cnk6CkBAIC0zMiw2ICszMywxNCBAQAogZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CiAgICAgRmxvYXRTdG9vZ2VzID0gZXhjCiAKK3RyeToKKyAgICBjbGFzcyBGbGFnU3Rvb2dlcyhGbGFnKToKKyAgICAgICAgTEFSUlkgPSAxCisgICAgICAgIENVUkxZID0gMgorICAgICAgICBNT0UgPSAzCitleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICBGbGFnU3Rvb2dlcyA9IGV4YworCiAjIGZvciBwaWNrbGUgdGVzdCBhbmQgc3ViY2xhc3MgdGVzdHMKIHRyeToKICAgICBjbGFzcyBTdHJFbnVtKHN0ciwgRW51bSk6CkBAIC0xMDQsNiArMTEzLDcgQEAKICAgICAgICAgICAgICAgICAnX18nLCAnX19fJywgJ19fX18nLCAnX19fX18nLCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGVudW0uX2lzX2R1bmRlcihzKSkKIAorIyB0ZXN0cwogCiBjbGFzcyBUZXN0RW51bSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI4Myw2ICsyOTMsMjggQEAKICAgICAgICAgICAgIGNsYXNzIFdyb25nKEVudW0pOgogICAgICAgICAgICAgICAgIF9hbnlfbmFtZV8gPSA5CiAKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIHBsYWluIEVudW0gbWVtYmVycyBhcmUgYWx3YXlzIFRydWUKKyAgICAgICAgY2xhc3MgTG9naWMoRW51bSk6CisgICAgICAgICAgICB0cnVlID0gVHJ1ZQorICAgICAgICAgICAgZmFsc2UgPSBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKExvZ2ljLmZhbHNlKQorICAgICAgICAjIHVubGVzcyBvdmVycmlkZGVuCisgICAgICAgIGNsYXNzIFJlYWxMb2dpYyhFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSBUcnVlCisgICAgICAgICAgICBmYWxzZSA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdmFsdWVfKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUmVhbExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUmVhbExvZ2ljLmZhbHNlKQorICAgICAgICAjIG1peGVkIEVudW1zIGRlcGVuZCBvbiBtaXhlZC1pbiB0eXBlCisgICAgICAgIGNsYXNzIEludExvZ2ljKGludCwgRW51bSk6CisgICAgICAgICAgICB0cnVlID0gMQorICAgICAgICAgICAgZmFsc2UgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJbnRMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEludExvZ2ljLmZhbHNlKQorCiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CiAgICAgICAgIFNlYXNvbiA9IHNlbGYuU2Vhc29uCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oU2Vhc29uLkFVVFVNTiwgU2Vhc29uKQpAQCAtMTU0Nyw2ICsxNTc5LDcwMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExhYmVsbGVkTGlzdC51bnByb2Nlc3NlZCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYWJlbGxlZExpc3QoMSksIExhYmVsbGVkTGlzdC51bnByb2Nlc3NlZCkKIAorICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDMpCisKKyAgICBkZWYgdGVzdF9hdXRvX25hbWUoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgJ2JsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAnZ3JlZW4nKQorCisgICAgZGVmIHRlc3RfYXV0b19uYW1lX2luaGVyaXQoc2VsZik6CisgICAgICAgIGNsYXNzIEF1dG9OYW1lRW51bShFbnVtKToKKyAgICAgICAgICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICBjbGFzcyBDb2xvcihBdXRvTmFtZUVudW0pOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsICdibHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgJ2dyZWVuJykKKworICAgIGRlZiB0ZXN0X2F1dG9fZ2FyYmFnZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSAncmVkJworICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDEpCisKKyAgICBkZWYgdGVzdF9hdXRvX2dhcmJhZ2VfY29ycmVjdGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9ICdyZWQnCisgICAgICAgICAgICBibHVlID0gMgorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAzKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2F1dG8oc2VsZik6CisgICAgICAgIGNsYXNzIER1cGVzKEVudW0pOgorICAgICAgICAgICAgZmlyc3QgPSBwcmltZXJvID0gYXV0bygpCisgICAgICAgICAgICBzZWNvbmQgPSBhdXRvKCkKKyAgICAgICAgICAgIHRoaXJkID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0R1cGVzLmZpcnN0LCBEdXBlcy5zZWNvbmQsIER1cGVzLnRoaXJkXSwgbGlzdChEdXBlcykpCisKKworY2xhc3MgVGVzdE9yZGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVycyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICBibHVlID0gMworCisgICAgZGVmIHRlc3Rfc2FtZV9tZW1iZXJzX3dpdGhfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgdmVyZGUgPSBncmVlbgorCisgICAgZGVmIHRlc3Rfc2FtZV9tZW1iZXJzX3dyb25nX29yZGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisKKyAgICBkZWYgdGVzdF9vcmRlcl9oYXNfZXh0cmFfbWVtYmVycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlIHB1cnBsZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKworICAgIGRlZiB0ZXN0X29yZGVyX2hhc19leHRyYV9tZW1iZXJzX3dpdGhfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlIHB1cnBsZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKyAgICBkZWYgdGVzdF9lbnVtX2hhc19leHRyYV9tZW1iZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgcHVycGxlID0gNAorCisgICAgZGVmIHRlc3RfZW51bV9oYXNfZXh0cmFfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBwdXJwbGUgPSA0CisgICAgICAgICAgICAgICAgdmVyZGUgPSBncmVlbgorCisKK2NsYXNzIFRlc3RGbGFnKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvZiB0aGUgRmxhZ3MuIiIiCisKKyAgICBjbGFzcyBQZXJtKEZsYWcpOgorICAgICAgICBSLCBXLCBYID0gNCwgMiwgMQorCisgICAgY2xhc3MgT3BlbihGbGFnKToKKyAgICAgICAgUk8gPSAwCisgICAgICAgIFdPID0gMQorICAgICAgICBSVyA9IDIKKyAgICAgICAgQUMgPSAzCisgICAgICAgIENFID0gMTw8MTkKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIpLCAnUGVybS5SJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5XKSwgJ1Blcm0uVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uWCksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oMCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uUiksICdQZXJtLld8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlcpLCAnUGVybS5SfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5YKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICdQZXJtLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKH4wKSksICdQZXJtLlJ8V3xYJykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8pLCAnT3Blbi5STycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08pLCAnT3Blbi5XTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uQUMpLCAnT3Blbi5BQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8gfCBPcGVuLkNFKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPIHwgT3Blbi5DRSksICdPcGVuLkNFfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uUk8pLCAnT3Blbi5DRXxBQ3xSV3xXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLldPKSwgJ09wZW4uQ0V8UlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5BQyksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnT3Blbi5BQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJ09wZW4uUlcnKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SKSwgJzxQZXJtLlI6IDQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uVyksICc8UGVybS5XOiAyPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlgpLCAnPFBlcm0uWDogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XKSwgJzxQZXJtLlJ8VzogNj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJzxQZXJtLlJ8V3xYOiA3PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDApKSwgJzxQZXJtLjA6IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlIpLCAnPFBlcm0uV3xYOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5XKSwgJzxQZXJtLlJ8WDogNT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uWCksICc8UGVybS5SfFc6IDY+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XKSksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnPFBlcm0uMDogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+MCkpLCAnPFBlcm0uUnxXfFg6IDc+JykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPKSwgJzxPcGVuLlJPOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPKSwgJzxPcGVuLldPOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLkFDKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPIHwgT3Blbi5DRSksICc8T3Blbi5DRTogNTI0Mjg4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPIHwgT3Blbi5DRSksICc8T3Blbi5DRXxXTzogNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5STyksICc8T3Blbi5DRXxBQ3xSV3xXTzogNTI0MjkxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5XTyksICc8T3Blbi5DRXxSVzogNTI0MjkwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5BQyksICc8T3Blbi5DRTogNTI0Mjg4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICc8T3Blbi5BQzogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnPE9wZW4uUlc6IDI+JykKKworICAgIGRlZiB0ZXN0X29yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKSwgUGVybShpLnZhbHVlIHwgai52YWx1ZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLnZhbHVlLCBpLnZhbHVlIHwgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSB8IGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gfCBPcGVuLkNFLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfYW5kKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgZm9yIGogaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgJiBqKS52YWx1ZSwgaS52YWx1ZSAmIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgJiBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIGksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiBSV1gsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFJXWCAmIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPICYgT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X3hvcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIF4gaikudmFsdWUsIGkudmFsdWUgXiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIF4gaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgXiBQZXJtKDApLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQZXJtKDApIF4gaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gXiBPcGVuLkNFLCBPcGVuLkNFKQorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uQ0UgXiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfaW52ZXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKH5pKSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwofn5pLCBpKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh+fmksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLldPICYgfk9wZW4uV08sIE9wZW4uUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoKE9wZW4uV098T3Blbi5DRSkgJiB+T3Blbi5XTywgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGYgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIGZvciBmIGluIE9wZW46CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvb2woZi52YWx1ZSksIGJvb2woZikpCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmcoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgJ1IgVyBYJykKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ193aXRoX3N0YXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICdSIFcgWCcsIHN0YXJ0PTgpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gODw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfbGlzdChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCBbJ1InLCAnVycsICdYJ10pCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fZnJvbV9kaWN0KHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsIE9yZGVyZWREaWN0KCgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKEZsYWdTdG9vZ2VzLCBFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2UgRmxhZ1N0b29nZXMKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIEZsYWdTdG9vZ2VzLkNVUkxZfEZsYWdTdG9vZ2VzLk1PRSkKKyAgICAgICAgdGVzdF9waWNrbGVfZHVtcF9sb2FkKHNlbGYuYXNzZXJ0SXMsIEZsYWdTdG9vZ2VzKQorCisgICAgZGVmIHRlc3RfY29udGFpbm1lbnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUiwgVywgWCA9IFBlcm0KKyAgICAgICAgUlcgPSBSIHwgVworICAgICAgICBSWCA9IFIgfCBYCisgICAgICAgIFdYID0gVyB8IFgKKyAgICAgICAgUldYID0gUiB8IFcgfCBYCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUiBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShXIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFggaW4gUlcpCisKKyAgICBkZWYgdGVzdF9hdXRvX251bWJlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCA0KQorCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXJfZ2FyYmFnZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ0ludmFsaWQgRmxhZyB2YWx1ZTogLm5vdCBhbiBpbnQuJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAgICAgICAgICAgICByZWQgPSAnbm90IGFuIGludCcKKyAgICAgICAgICAgICAgICBibHVlID0gYXV0bygpCisKKyAgICBkZWYgdGVzdF9jYXNjYWRpbmdfZmFpbHVyZShzZWxmKToKKyAgICAgICAgY2xhc3MgQml6YXJyZShGbGFnKToKKyAgICAgICAgICAgIGMgPSAzCisgICAgICAgICAgICBkID0gNAorICAgICAgICAgICAgZiA9IDYKKyAgICAgICAgIyBCaXphcnJlLmMgfCBCaXphcnJlLmQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiNSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiNSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMiBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMiBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiMSBpcyBub3QgYSB2YWxpZCBCaXphcnJlIiwgQml6YXJyZSwgMSkKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9hdXRvKHNlbGYpOgorICAgICAgICBjbGFzcyBEdXBlcyhFbnVtKToKKyAgICAgICAgICAgIGZpcnN0ID0gcHJpbWVybyA9IGF1dG8oKQorICAgICAgICAgICAgc2Vjb25kID0gYXV0bygpCisgICAgICAgICAgICB0aGlyZCA9IGF1dG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtEdXBlcy5maXJzdCwgRHVwZXMuc2Vjb25kLCBEdXBlcy50aGlyZF0sIGxpc3QoRHVwZXMpKQorCisgICAgZGVmIHRlc3RfYml6YXJyZShzZWxmKToKKyAgICAgICAgY2xhc3MgQml6YXJyZShGbGFnKToKKyAgICAgICAgICAgIGIgPSAzCisgICAgICAgICAgICBjID0gNAorICAgICAgICAgICAgZCA9IDYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEJpemFycmUoNykpLCAnPEJpemFycmUuZHxjfGI6IDc+JykKKworCitjbGFzcyBUZXN0SW50RmxhZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb2YgdGhlIEludEZsYWdzLiIiIgorCisgICAgY2xhc3MgUGVybShJbnRGbGFnKToKKyAgICAgICAgWCA9IDEgPDwgMAorICAgICAgICBXID0gMSA8PCAxCisgICAgICAgIFIgPSAxIDw8IDIKKworICAgIGNsYXNzIE9wZW4oSW50RmxhZyk6CisgICAgICAgIFJPID0gMAorICAgICAgICBXTyA9IDEKKyAgICAgICAgUlcgPSAyCisgICAgICAgIEFDID0gMworICAgICAgICBDRSA9IDE8PDE5CisKKyAgICBkZWYgdGVzdF90eXBlKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYsIFBlcm0pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBmLnZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShQZXJtLlcgfCBQZXJtLlgsIFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBlcm0uVyB8IFBlcm0uWCwgMykKKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGYsIE9wZW4pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBmLnZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShPcGVuLldPIHwgT3Blbi5SVywgT3BlbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoT3Blbi5XTyB8IE9wZW4uUlcsIDMpCisKKworICAgIGRlZiB0ZXN0X3N0cihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIpLCAnUGVybS5SJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5XKSwgJ1Blcm0uVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uWCksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IDgpLCAnUGVybS44fFInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDApKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oOCkpLCAnUGVybS44JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uUiksICdQZXJtLld8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlcpLCAnUGVybS5SfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5YKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICdQZXJtLi04JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCA4KSksICdQZXJtLld8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjApKSwgJ1Blcm0uUnxXfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKH44KSksICdQZXJtLlJ8V3xYJykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8pLCAnT3Blbi5STycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08pLCAnT3Blbi5XTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uQUMpLCAnT3Blbi5BQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uUk8gfCBPcGVuLkNFKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPIHwgT3Blbi5DRSksICdPcGVuLkNFfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbig0KSksICdPcGVuLjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5STyksICdPcGVuLkNFfEFDfFJXfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uV08pLCAnT3Blbi5DRXxSVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLkFDKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICdPcGVuLkFDfFJXfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnT3Blbi5SVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4ofjQpKSwgJ09wZW4uQ0V8QUN8Uld8V08nKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SKSwgJzxQZXJtLlI6IDQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uVyksICc8UGVybS5XOiAyPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlgpLCAnPFBlcm0uWDogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XKSwgJzxQZXJtLlJ8VzogNj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJzxQZXJtLlJ8V3xYOiA3PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCA4KSwgJzxQZXJtLjh8UjogMTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0oMCkpLCAnPFBlcm0uMDogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSg4KSksICc8UGVybS44OiA4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5SKSwgJzxQZXJtLld8WDogLTU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlcpLCAnPFBlcm0uUnxYOiAtMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uWCksICc8UGVybS5SfFc6IC0yPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVykpLCAnPFBlcm0uWDogLTc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICc8UGVybS4tODogLTg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgOCkpLCAnPFBlcm0uV3xYOiAtMTM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjApKSwgJzxQZXJtLlJ8V3xYOiAtMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+OCkpLCAnPFBlcm0uUnxXfFg6IC05PicpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyksICc8T3Blbi5STzogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyksICc8T3Blbi5XTzogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5BQyksICc8T3Blbi5BQzogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0V8V086IDUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbig0KSksICc8T3Blbi40OiA0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5STyksICc8T3Blbi5DRXxBQ3xSV3xXTzogLTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLldPKSwgJzxPcGVuLkNFfFJXOiAtMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uQUMpLCAnPE9wZW4uQ0U6IC00PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICc8T3Blbi5BQ3xSV3xXTzogLTUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnPE9wZW4uUlc6IC01MjQyOTA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4ofjQpKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiAtNT4nKQorCisgICAgZGVmIHRlc3Rfb3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIHwgaiwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLnZhbHVlLCBpLnZhbHVlIHwgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSB8IGopLCBQZXJtKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIHwgaiwgaS52YWx1ZSB8IGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLnZhbHVlLCBpLnZhbHVlIHwgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSB8IGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiB8IGksIGogfCBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogfCBpKS52YWx1ZSwgaiB8IGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogfCBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IGksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCAwLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcygwIHwgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gfCBPcGVuLkNFLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfYW5kKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgZm9yIGogaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSAmIGosIGkudmFsdWUgJiBqLnZhbHVlLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgai52YWx1ZSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0sICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSAmIGosIGkudmFsdWUgJiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgJiBqKS52YWx1ZSwgaS52YWx1ZSAmIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgJiBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogJiBpLCBqICYgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqICYgaSkudmFsdWUsIGogJiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqICYgaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgNywgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoNyAmIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPICYgT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X3hvcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgXiBqLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIF4gaikudmFsdWUsIGkudmFsdWUgXiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIF4gaiksIFBlcm0pCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgXiBqLCBpLnZhbHVlIF4gaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIF4gaikudmFsdWUsIGkudmFsdWUgXiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIF4gaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqIF4gaSwgaiBeIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiBeIGkpLnZhbHVlLCBqIF4gaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiBeIGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIF4gMCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoMCBeIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIF4gT3Blbi5DRSwgT3Blbi5DRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLkNFIF4gT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwofmksIH5pLnZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgofmkpLnZhbHVlLCB+aS52YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSh+aSksIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5+aSwgaSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMofn5pLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5XTyAmIH5PcGVuLldPLCBPcGVuLlJPKQorICAgICAgICBzZWxmLmFzc2VydElzKChPcGVuLldPfE9wZW4uQ0UpICYgfk9wZW4uV08sIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmcoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgJ1IgVyBYJykKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ193aXRoX3N0YXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICdSIFcgWCcsIHN0YXJ0PTgpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gODw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfbGlzdChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCBbJ1InLCAnVycsICdYJ10pCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fZnJvbV9kaWN0KHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsIE9yZGVyZWREaWN0KCgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PCgyKmkrMSkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSLCBXLCBYID0gUGVybQorICAgICAgICBSVyA9IFIgfCBXCisgICAgICAgIFJYID0gUiB8IFgKKyAgICAgICAgV1ggPSBXIHwgWAorICAgICAgICBSV1ggPSBSIHwgVyB8IFgKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFcgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoWCBpbiBSVykKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGYgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIGZvciBmIGluIE9wZW46CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvb2woZi52YWx1ZSksIGJvb2woZikpCiAKIGNsYXNzIFRlc3RVbmlxdWUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNzM5LDUgKzI0NjYsNDcgQEAKICAgICAgICAgaWYgZmFpbGVkOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJyZXN1bHQgZG9lcyBub3QgZXF1YWwgZXhwZWN0ZWQsIHNlZSBwcmludCBhYm92ZSIpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGVudW0pCisKKworIyBUaGVzZSBhcmUgdW5vcmRlcmVkIGhlcmUgb24gcHVycG9zZSB0byBlbnN1cmUgdGhhdCBkZWNsYXJhdGlvbiBvcmRlcgorIyBtYWtlcyBubyBkaWZmZXJlbmNlLgorQ09OVkVSVF9URVNUX05BTUVfRCA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0MgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9CID0gNQorQ09OVkVSVF9URVNUX05BTUVfQSA9IDUgICMgVGhpcyBvbmUgc2hvdWxkIHNvcnQgZmlyc3QuCitDT05WRVJUX1RFU1RfTkFNRV9FID0gNQorQ09OVkVSVF9URVNUX05BTUVfRiA9IDUKKworY2xhc3MgVGVzdEludEVudW1Db252ZXJ0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9jb252ZXJ0X3ZhbHVlX2xvb2t1cF9wcmlvcml0eShzZWxmKToKKyAgICAgICAgdGVzdF90eXBlID0gZW51bS5JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAgICAgICAgICdVbml0dGVzdENvbnZlcnQnLCAndGVzdC50ZXN0X2VudW0nLAorICAgICAgICAgICAgICAgIGZpbHRlcj1sYW1iZGEgeDogeC5zdGFydHN3aXRoKCdDT05WRVJUX1RFU1RfJykpCisgICAgICAgICMgV2UgZG9uJ3Qgd2FudCB0aGUgcmV2ZXJzZSBsb29rdXAgdmFsdWUgdG8gdmFyeSB3aGVuIHRoZXJlIGFyZQorICAgICAgICAjIG11bHRpcGxlIHBvc3NpYmxlIG5hbWVzIGZvciBhIGdpdmVuIHZhbHVlLiAgSXQgc2hvdWxkIGFsd2F5cworICAgICAgICAjIHJlcG9ydCB0aGUgZmlyc3QgbGV4aWdyYXBoaWNhbCBuYW1lIGluIHRoYXQgY2FzZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUoNSkubmFtZSwgJ0NPTlZFUlRfVEVTVF9OQU1FX0EnKQorCisgICAgZGVmIHRlc3RfY29udmVydChzZWxmKToKKyAgICAgICAgdGVzdF90eXBlID0gZW51bS5JbnRFbnVtLl9jb252ZXJ0KAorICAgICAgICAgICAgICAgICdVbml0dGVzdENvbnZlcnQnLCAndGVzdC50ZXN0X2VudW0nLAorICAgICAgICAgICAgICAgIGZpbHRlcj1sYW1iZGEgeDogeC5zdGFydHN3aXRoKCdDT05WRVJUX1RFU1RfJykpCisgICAgICAgICMgRW5zdXJlIHRoYXQgdGVzdF90eXBlIGhhcyBhbGwgb2YgdGhlIGRlc2lyZWQgbmFtZXMgYW5kIHZhbHVlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfQiwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfQywgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfRCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3R5cGUuQ09OVkVSVF9URVNUX05BTUVfRSwgNSkKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0ZXN0X3R5cGUgb25seSBwaWNrZWQgdXAgbmFtZXMgbWF0Y2hpbmcgdGhlIGZpbHRlci4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbmFtZSBmb3IgbmFtZSBpbiBkaXIodGVzdF90eXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuYW1lWzA6Ml0gbm90IGluICgnQ08nLCAnX18nKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgW10sIG1zZz0nTmFtZXMgb3RoZXIgdGhhbiBDT05WRVJUX1RFU1RfKiBmb3VuZC4nKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CmluZGV4IDI2MzBjZjIuLmU0NTVhZGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CkBAIC0yMjMsNyArMjIzLDcgQEAKICAgICBkZWYgdGVzdF9vYmptZXRob2RzKHNlbGYpOgogICAgICAgICAjIE9iamVjdHMgbXVzdCBoYXZlIF9fbGVuX18oKSBhbmQgX19nZXRpdGVtX18oKSBpbXBsZW1lbnRlZC4KICAgICAgICAgY2xhc3MgTm9MZW4ob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmKTogcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKTogcmV0dXJuIDEKICAgICAgICAgbmwgPSBOb0xlbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIG5sKQogCkBAIC0yMzIsNiArMjMyLDEzIEBACiAgICAgICAgIG5naSA9IE5vR2V0SXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIG5naSkKIAorICAgICAgICBjbGFzcyBCbG9ja2VkKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6IHJldHVybiAxCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDIKKyAgICAgICAgICAgIF9fcmV2ZXJzZWRfXyA9IE5vbmUKKyAgICAgICAgYiA9IEJsb2NrZWQoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBiKQorCiAgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgogICAgICAgICBmb3IgZGF0YSBpbiAnYWJjJywgcmFuZ2UoNSksIHR1cGxlKGVudW1lcmF0ZSgnYWJjJykpLCByYW5nZSgxLDE3LDUpOgogICAgICAgICAgICAgc2VsZi5jaGVja19waWNrbGUocmV2ZXJzZWQoZGF0YSksIGxpc3QoZGF0YSlbOjotMV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5IGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQppbmRleCBhNzM1OWU5Li5hN2FmZjhhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKQEAgLTI4LDcgKzI4LDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpZiBub3QgaGFzYXR0cihzZWxlY3QsICJlcG9sbCIpOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IHdvcmtzIG9ubHkgb24gTGludXggMi42IikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25faGllcmFyY2h5LnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9leGNlcHRpb25faGllcmFyY2h5LnB5CmluZGV4IDdiMGQ0NjUuLjg2NDk1OTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKQEAgLTIsNyArMiw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGVycm5vCiBmcm9tIGVycm5vIGltcG9ydCBFRVhJU1QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQppbmRleCA5NmMzYTQ4Li40ODM3OTIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CkBAIC0xMTA5LDcgKzExMDksNiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgSW1wb3J0RXJyb3IoaW52YWxpZD0na2V5d29yZCcpCiAKLSAgICAgICAgbXNnID0gIidpbnZhbGlkfGFub3RoZXInIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgIEltcG9ydEVycm9yKCd0ZXN0JywgaW52YWxpZD0na2V5d29yZCcsIGFub3RoZXI9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CmluZGV4IDljYjBkMzguLjA0M2RmMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKQEAgLTIzOCw2ICsyMzgsMTEgQEAKICAgICAgIC4uLgogICAgIFR5cGVFcnJvcjogaCgpIGFyZ3VtZW50IGFmdGVyICogbXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90IGZ1bmN0aW9uCiAKKyAgICA+Pj4gaCgqWzFdLCAqaCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGgoKSBhcmd1bWVudCBhZnRlciAqIG11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCBmdW5jdGlvbgorCiAgICAgPj4+IGRpcigqaCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKaW5kZXggMTU2MmVlYy4uMjJjY2JjOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKQEAgLTIzLDYgKzIzLDcgQEAKICAgICBfdGVzdGNhcGkgPSBOb25lCiAKIFRJTUVPVVQgPSAwLjUKK01TX1dJTkRPV1MgPSAob3MubmFtZSA9PSAnbnQnKQogCiBkZWYgZXhwZWN0ZWRfdHJhY2ViYWNrKGxpbmVubzEsIGxpbmVubzIsIGhlYWRlciwgbWluX2NvdW50PTEpOgogICAgIHJlZ2V4ID0gaGVhZGVyCkBAIC01OCw4ICs1OSw5IEBACiAgICAgICAgICAgICBwYXNzX2Zkcy5hcHBlbmQoZmQpCiAgICAgICAgIHdpdGggc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CiAgICAgICAgICAgICBwcm9jZXNzID0gc2NyaXB0X2hlbHBlci5zcGF3bl9weXRob24oJy1jJywgY29kZSwgcGFzc19mZHM9cGFzc19mZHMpCi0gICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIHdpdGggcHJvY2VzczoKKyAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKICAgICAgICAgb3V0cHV0ID0gc3VwcG9ydC5zdHJpcF9weXRob25fc3RkZXJyKHN0ZG91dCkKICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCiAgICAgICAgIGlmIGZpbGVuYW1lOgpAQCAtNzMsMTQgKzc1LDExIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oZmQsICJyYiIsIGNsb3NlZmQ9RmFsc2UpIGFzIGZwOgogICAgICAgICAgICAgICAgIG91dHB1dCA9IGZwLnJlYWQoKQogICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCi0gICAgICAgIG91dHB1dCA9IHJlLnN1YignQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0N1cnJlbnQgdGhyZWFkIFhYWCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQpCiAgICAgICAgIHJldHVybiBvdXRwdXQuc3BsaXRsaW5lcygpLCBleGl0Y29kZQogCi0gICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmZD1Ob25lKToKKyAgICBkZWYgY2hlY2tfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqLAorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1Ob25lLCBhbGxfdGhyZWFkcz1UcnVlLCBvdGhlcl9yZWdleD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBmZD1Ob25lLCBrbm93X2N1cnJlbnRfdGhyZWFkPVRydWUpOgogICAgICAgICAiIiIKICAgICAgICAgQ2hlY2sgdGhhdCB0aGUgZmF1bHQgaGFuZGxlciBmb3IgZmF0YWwgZXJyb3JzIGlzIGVuYWJsZWQgYW5kIGNoZWNrIHRoZQogICAgICAgICB0cmFjZWJhY2sgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcyBvdXRwdXQuCkBAIC04OCwxOSArODcsMjIgQEAKICAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCiAgICAgICAgICIiIgogICAgICAgICBpZiBhbGxfdGhyZWFkczoKLSAgICAgICAgICAgIGhlYWRlciA9ICdDdXJyZW50IHRocmVhZCBYWFggKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpJworICAgICAgICAgICAgaWYga25vd19jdXJyZW50X3RocmVhZDoKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGhlYWRlciA9ICdUaHJlYWQgMHhbMC05YS1mXSsnCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnU3RhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpJwotICAgICAgICByZWdleCA9ICIiIgotICAgICAgICAgICAgXkZhdGFsIFB5dGhvbiBlcnJvcjoge25hbWV9CisgICAgICAgICAgICBoZWFkZXIgPSAnU3RhY2snCisgICAgICAgIHJlZ2V4ID0gciIiIgorICAgICAgICAgICAgXntmYXRhbF9lcnJvcn0KIAotICAgICAgICAgICAge2hlYWRlcn06CisgICAgICAgICAgICB7aGVhZGVyfSBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIDxtb2R1bGU+CiAgICAgICAgICAgICAiIiIKICAgICAgICAgcmVnZXggPSBkZWRlbnQocmVnZXguZm9ybWF0KAogICAgICAgICAgICAgbGluZW5vPWxpbmVfbnVtYmVyLAotICAgICAgICAgICAgbmFtZT1uYW1lX3JlZ2V4LAotICAgICAgICAgICAgaGVhZGVyPXJlLmVzY2FwZShoZWFkZXIpKSkuc3RyaXAoKQorICAgICAgICAgICAgZmF0YWxfZXJyb3I9ZmF0YWxfZXJyb3IsCisgICAgICAgICAgICBoZWFkZXI9aGVhZGVyKSkuc3RyaXAoKQogICAgICAgICBpZiBvdGhlcl9yZWdleDoKICAgICAgICAgICAgIHJlZ2V4ICs9ICd8JyArIG90aGVyX3JlZ2V4CiAgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWU9ZmlsZW5hbWUsIGZkPWZkKQpAQCAtMTA4LDE3ICsxMTAsMzYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQogCisgICAgZGVmIGNoZWNrX2ZhdGFsX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LCAqKmt3KToKKyAgICAgICAgZmF0YWxfZXJyb3IgPSAnRmF0YWwgUHl0aG9uIGVycm9yOiAlcycgJSBuYW1lX3JlZ2V4CisgICAgICAgIHNlbGYuY2hlY2tfZXJyb3IoY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqKmt3KQorCisgICAgZGVmIGNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBuYW1lX3JlZ2V4LCAqKmt3KToKKyAgICAgICAgZmF0YWxfZXJyb3IgPSAnV2luZG93cyBmYXRhbCBleGNlcHRpb246ICVzJyAlIG5hbWVfcmVnZXgKKyAgICAgICAgc2VsZi5jaGVja19lcnJvcihjb2RlLCBsaW5lX251bWJlciwgZmF0YWxfZXJyb3IsICoqa3cpCisKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdhaXgnKSwKICAgICAgICAgICAgICAgICAgICAgICJ0aGUgZmlyc3QgcGFnZSBvZiBtZW1vcnkgaXMgYSBtYXBwZWQgcmVhZC1vbmx5IG9uIEFJWCIpCiAgICAgZGVmIHRlc3RfcmVhZF9udWxsKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgotICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCi0gICAgICAgICAgICAiIiIsCi0gICAgICAgICAgICAzLAotICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KLSAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKyAgICAgICAgaWYgbm90IE1TX1dJTkRPV1M6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KKyAgICAgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0JworICAgICAgICAgICAgICAgICAgICAnfEJ1cyBlcnJvcicKKyAgICAgICAgICAgICAgICAgICAgJ3xJbGxlZ2FsIGluc3RydWN0aW9uKScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKCIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgJ2FjY2VzcyB2aW9sYXRpb24nKQogCiAgICAgZGVmIHRlc3Rfc2lnc2VndihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKQEAgLTEyOSw2ICsxNTAsMTcgQEAKICAgICAgICAgICAgIDMsCiAgICAgICAgICAgICAnU2VnbWVudGF0aW9uIGZhdWx0JykKIAorICAgIEB1bml0dGVzdC5za2lwSWYobm90IEhBVkVfVEhSRUFEUywgJ25lZWQgdGhyZWFkcycpCisgICAgZGVmIHRlc3RfZmF0YWxfZXJyb3JfY190aHJlYWQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCisgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fZmF0YWxfZXJyb3JfY190aHJlYWQoKQorICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICdpbiBuZXcgdGhyZWFkJywKKyAgICAgICAgICAgIGtub3dfY3VycmVudF90aHJlYWQ9RmFsc2UpCisKICAgICBkZWYgdGVzdF9zaWdhYnJ0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgpAQCAtNDU4LDE0ICs0OTAsMTQgQEAKICAgICAgICAgICAgIGxpbmVubyA9IDgKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxpbmVubyA9IDEwCi0gICAgICAgIHJlZ2V4ID0gIiIiCisgICAgICAgIHJlZ2V4ID0gciIiIgogICAgICAgICAgICAgXlRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICg/OiAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBbX2Etel0rCiAgICAgICAgICAgICApe3sxLDN9fSAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDIzIGluIHJ1bgogICAgICAgICAgICAgICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXBfaW5uZXIKICAgICAgICAgICAgICAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwCiAKLSAgICAgICAgICAgIEN1cnJlbnQgdGhyZWFkIFhYWCBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKKyAgICAgICAgICAgIEN1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgogICAgICAgICAgICAgICBGaWxlICI8c3RyaW5nPiIsIGxpbmUge2xpbmVub30gaW4gZHVtcAogICAgICAgICAgICAgICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjggaW4gPG1vZHVsZT4kCiAgICAgICAgICAgICAiIiIKQEAgLTYzNyw5ICs2NjksOSBAQAogICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKICAgICAgICAgaWYgbm90IHVucmVnaXN0ZXI6CiAgICAgICAgICAgICBpZiBhbGxfdGhyZWFkczoKLSAgICAgICAgICAgICAgICByZWdleCA9ICdDdXJyZW50IHRocmVhZCBYWFggXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCisgICAgICAgICAgICAgICAgcmVnZXggPSByJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZWdleCA9ICdTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKKyAgICAgICAgICAgICAgICByZWdleCA9IHInU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCiAgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjaygxNCwgMzIsIHJlZ2V4KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0cmFjZSwgcmVnZXgpCiAgICAgICAgIGVsc2U6CkBAIC02OTYsNiArNzI4LDIyIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuY2hlY2tfc3RkZXJyX25vbmUoKToKICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbmFsLlNJR1VTUjEpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhNU19XSU5ET1dTLCAnc3BlY2lmaWMgdG8gV2luZG93cycpCisgICAgZGVmIHRlc3RfcmFpc2VfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBmb3IgZXhjLCBuYW1lIGluICgKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04nLCAnYWNjZXNzIHZpb2xhdGlvbicpLAorICAgICAgICAgICAgKCdFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPJywgJ2ludCBkaXZpZGUgYnkgemVybycpLAorICAgICAgICAgICAgKCdFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1cnLCAnc3RhY2sgb3ZlcmZsb3cnKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfd2luZG93c19leGNlcHRpb24oZiIiIgorICAgICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX3JhaXNlX2V4Y2VwdGlvbihmYXVsdGhhbmRsZXIuX3tleGN9KQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgIG5hbWUpCisKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlLnB5CmluZGV4IDRlMzkyYjcuLjY1YmUzMGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKQEAgLTcsNyArNyw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBfcHlpbyBhcyBweWlvCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKIAogY2xhc3MgQXV0b0ZpbGVUZXN0czoKQEAgLTEzOSw3ICsxMzksNyBAQAogCiAgICAgZGVmIHRlc3RNb2RlU3RyaW5ncyhzZWxmKToKICAgICAgICAgIyBjaGVjayBpbnZhbGlkIG1vZGUgc3RyaW5ncwotICAgICAgICBmb3IgbW9kZSBpbiAoIiIsICJhVSIsICJ3VSsiKToKKyAgICAgICAgZm9yIG1vZGUgaW4gKCIiLCAiYVUiLCAid1UrIiwgIlUrIiwgIitVIiwgInJVKyIpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGYgPSBzZWxmLm9wZW4oVEVTVEZOLCBtb2RlKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CmluZGV4IDc4NGJjOTIuLjU2NTYzM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5CkBAIC0yMiw4ICsyMiw5IEBACiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBTdHJpbmdJTwogZnJvbSBmaWxlaW5wdXQgaW1wb3J0IEZpbGVJbnB1dCwgaG9va19lbmNvZGVkCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHJ1bl91bml0dGVzdCwgY2hlY2tfd2FybmluZ3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIGNoZWNrX3dhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5saW5rIGFzIHNhZmVfdW5saW5rCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIAogCkBAIC05Miw3ICs5MywxMSBAQAogICAgICAgICAgICAgICAgIHQyID0gd3JpdGVUbXAoMiwgWyJMaW5lICVzIG9mIGZpbGUgMlxuIiAlIChpKzEpIGZvciBpIGluIHJhbmdlKDEwKV0pCiAgICAgICAgICAgICAgICAgdDMgPSB3cml0ZVRtcCgzLCBbIkxpbmUgJXMgb2YgZmlsZSAzXG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoNSldKQogICAgICAgICAgICAgICAgIHQ0ID0gd3JpdGVUbXAoNCwgWyJMaW5lICVzIG9mIGZpbGUgNFxuIiAlIChpKzEpIGZvciBpIGluIHJhbmdlKDEpXSkKLSAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplX3Rlc3QodDEsIHQyLCB0MywgdDQsIGJzLCByb3VuZCkKKyAgICAgICAgICAgICAgICBpZiBiczoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplX3Rlc3QodDEsIHQyLCB0MywgdDQsIGJzLCByb3VuZCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlcl9zaXplX3Rlc3QodDEsIHQyLCB0MywgdDQsIGJzLCByb3VuZCkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgcmVtb3ZlX3RlbXBmaWxlcyh0MSwgdDIsIHQzLCB0NCkKIApAQCAtOTQwLDcgKzk0NSw4IEBACiAKICAgICBkZWYgdGVzdChzZWxmKToKICAgICAgICAgZW5jb2RpbmcgPSBvYmplY3QoKQotICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19lbmNvZGVkKGVuY29kaW5nKQorICAgICAgICBlcnJvcnMgPSBvYmplY3QoKQorICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19lbmNvZGVkKGVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQogCiAgICAgICAgIGZha2Vfb3BlbiA9IEludm9jYXRpb25SZWNvcmRlcigpCiAgICAgICAgIG9yaWdpbmFsX29wZW4gPSBidWlsdGlucy5vcGVuCkBAIC05NTgsOCArOTY0LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXJnc1swXSwgZmlsZW5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYXJnc1sxXSwgbW9kZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhrd2FyZ3MucG9wKCdlbmNvZGluZycpLCBlbmNvZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhrd2FyZ3MucG9wKCdlcnJvcnMnKSwgZXJyb3JzKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGt3YXJncykKIAorICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYidceDgwYWJjJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNhZmVfdW5saW5rLCBURVNURk4pCisKKyAgICAgICAgZGVmIGNoZWNrKGVycm9ycywgZXhwZWN0ZWRfbGluZXMpOgorICAgICAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9VEVTVEZOLCBtb2RlPSdyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5ob29rPWhvb2tfZW5jb2RlZCgndXRmLTgnLCBlcnJvcnM9ZXJyb3JzKSkgYXMgZmk6CisgICAgICAgICAgICAgICAgbGluZXMgPSBsaXN0KGZpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgZXhwZWN0ZWRfbGluZXMpCisKKyAgICAgICAgY2hlY2soJ2lnbm9yZScsIFsnYWJjJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKKyAgICAgICAgICAgIGNoZWNrKCdzdHJpY3QnLCBbJ2FiYyddKQorICAgICAgICBjaGVjaygncmVwbGFjZScsIFsnXHVmZmZkYWJjJ10pCisgICAgICAgIGNoZWNrKCdiYWNrc2xhc2hyZXBsYWNlJywgWydcXHg4MGFiYyddKQorCiAgICAgZGVmIHRlc3RfbW9kZXMoc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CiAgICAgICAgICAgICAjIFVURi03IGlzIGEgY29udmVuaWVudCwgc2VsZG9tIHVzZWQgZW5jb2RpbmcKQEAgLTk4MSw1ICsxMDA1LDExIEBACiAgICAgICAgICAgICBjaGVjaygncmInLCBbJ0FcbicsICdCXHJcbicsICdDXHInLCAnRFx1MjBhYyddKQogCiAKK2NsYXNzIE1pc2NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZmlsZWlucHV0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5IGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQppbmRleCBjYjFmNmRiLi5hYzg0NzNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKQEAgLTEsNiArMSw0IEBACi0KIGltcG9ydCBmcmFjdGlvbnMKLWltcG9ydCBtYXRoCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBvcwogaW1wb3J0IHJhbmRvbQpAQCAtMTAsNiArOCw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiBmcm9tIG1hdGggaW1wb3J0IGlzaW5mLCBpc25hbiwgY29weXNpZ24sIGxkZXhwCiAKIElORiA9IGZsb2F0KCJpbmYiKQpAQCAtNjEsNiArNjEsMjcgQEAKICAgICAgICAgZmxvYXQoYicuJyArIGInMScqMTAwMCkKICAgICAgICAgZmxvYXQoJy4nICsgJzEnKjEwMDApCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlcyhzZWxmKToKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICdqSnhYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQobGl0KSwgZXZhbChsaXQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQobGl0KSwgZmxvYXQobGl0LnJlcGxhY2UoJ18nLCAnJykpKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGxpdCBpbiAoJzBfNycsICcwOV85OScpOiAgIyBvY3RhbHMgYXJlIG5vdCByZWNvZ25pemVkIGhlcmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICdqSnhYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBsaXQpCisgICAgICAgICMgQWRkaXRpb25hbCB0ZXN0IGNhc2VzOyBuYW4gYW5kIGluZiBhcmUgbmV2ZXIgdmFsaWQgYXMgbGl0ZXJhbHMsCisgICAgICAgICMgb25seSBpbiB0aGUgZmxvYXQoKSBjb25zdHJ1Y3RvciwgYnV0IHdlIGRvbid0IGFsbG93IHVuZGVyc2NvcmVzCisgICAgICAgICMgaW4gb3IgYXJvdW5kIHRoZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnX05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnTmFfTicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnSU5fRicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnLV9JTkYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJy1JTkZfJykKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGhhbmRsZSBieXRlcyB2YWx1ZXMgY29ycmVjdGx5LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgYicwXy5ceGZmOScpCisKICAgICBkZWYgdGVzdF9ub25fbnVtZXJpY19pbnB1dF90eXBlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHBvc3NpYmxlIG5vbi1udW1lcmljIHR5cGVzIGZvciB0aGUgYXJndW1lbnQgeCwgaW5jbHVkaW5nCiAgICAgICAgICMgc3ViY2xhc3NlcyBvZiB0aGUgZXhwbGljaXRseSBkb2N1bWVudGVkIGFjY2VwdGVkIHR5cGVzLgpAQCAtMTYyLDExICsxODMsMTIgQEAKICAgICAgICAgICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0KHN0cihzZWxmKSkgKyAxCiAKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28xKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMigpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzMoMjEpKSwgNDIuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzEoKSksIDQyLikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb28yKCkpLCA0Mi4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb28zKDIxKSksIDQyLikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmbG9hdCwgRm9vNCg0MikpCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vU3RyKCc4JykpLCA5LikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb29TdHIoJzgnKSksIDkuKQogCiAgICAgICAgIGNsYXNzIEZvbzU6CiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgpAQCAtMTc3LDEwICsxOTksMTQgQEAKICAgICAgICAgY2xhc3MgRjoKICAgICAgICAgICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE90aGVyRmxvYXRTdWJjbGFzcyg0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRigpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZmxvYXQoRigpKSksIE90aGVyRmxvYXRTdWJjbGFzcykKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChGbG9hdFN1YmNsYXNzKEYoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZsb2F0U3ViY2xhc3MoRigpKSksIEZsb2F0U3ViY2xhc3MpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGKCkpLCA0Mi4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGZsb2F0KEYoKSkpLCBmbG9hdCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZsb2F0U3ViY2xhc3MoRigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGbG9hdFN1YmNsYXNzKEYoKSkpLCBGbG9hdFN1YmNsYXNzKQogCiAgICAgZGVmIHRlc3RfaXNfaW50ZWdlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMS4xKS5pc19pbnRlZ2VyKCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKaW5kZXggZmEzN2Y5MC4uZmI3NDI0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQpAQCAtNjIsMTQgKzYyLDE0IEBACiBjbGFzcyBUcmFuc2xhdGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCcqJyksICcuKlxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnPycpLCAnLlxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnYT9iKicpLCAnYS5iLipcWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1thYmNdJyksICdbYWJjXVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW11dJyksICdbXV1cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1sheF0nKSwgJ1teeF1cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1teeF0nKSwgJ1tcXF54XVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW3gnKSwgJ1xcW3hcWig/bXMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJyonKSwgcicoP3M6LiopXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnPycpLCByJyg/czouKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ2E/YionKSwgcicoP3M6YS5iLiopXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW2FiY10nKSwgcicoP3M6W2FiY10pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW11dJyksIHInKD9zOltdXSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbIXhdJyksIHInKD9zOlteeF0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW154XScpLCByJyg/czpbXF54XSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbeCcpLCByJyg/czpcW3gpXFonKQogCiAKIGNsYXNzIEZpbHRlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5IGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKaW5kZXggOWIxMzYzMi4uOGFmZDViOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkKQEAgLTI3NCw3ICsyNzQsNyBAQAogICAgICAgICB0ZXN0X2V4YygnJWQnLCAnMScsIFR5cGVFcnJvciwgIiVkIGZvcm1hdDogYSBudW1iZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4YygnJXgnLCAnMScsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCcleCcsIDMuMTQsIFR5cGVFcnJvciwgIiV4IGZvcm1hdDogYW4gaW50ZWdlciBpcyByZXF1aXJlZCwgbm90IGZsb2F0IikKLSAgICAgICAgdGVzdF9leGMoJyVnJywgJzEnLCBUeXBlRXJyb3IsICJhIGZsb2F0IGlzIHJlcXVpcmVkIikKKyAgICAgICAgdGVzdF9leGMoJyVnJywgJzEnLCBUeXBlRXJyb3IsICJtdXN0IGJlIHJlYWwgbnVtYmVyLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJ25vIGZvcm1hdCcsICcxJywgVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBzdHJpbmcgZm9ybWF0dGluZyIpCiAgICAgICAgIHRlc3RfZXhjKCclYycsIC0xLCBPdmVyZmxvd0Vycm9yLCAiJWMgYXJnIG5vdCBpbiByYW5nZSgweDExMDAwMCkiKQpAQCAtMzAwLDYgKzMwMCw4IEBACiAgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIDcsIGIiXHgwNyIpCiAgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGIiWiIsIGIiWiIpCiAgICAgICAgIHRlc3Rjb21tb24oYiIlYyIsIGJ5dGVhcnJheShiIloiKSwgYiJaIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiU1YyIsIDY1LCBiIiAgICBBIikKKyAgICAgICAgdGVzdGNvbW1vbihiIiUtNWMiLCA2NSwgYiJBICAgICIpCiAgICAgICAgICMgJWIgd2lsbCBpbnNlcnQgYSBzZXJpZXMgb2YgYnl0ZXMsIGVpdGhlciBmcm9tIGEgdHlwZSB0aGF0IHN1cHBvcnRzCiAgICAgICAgICMgdGhlIFB5X2J1ZmZlciBwcm90b2NvbCwgb3Igc29tZXRoaW5nIHRoYXQgaGFzIGEgX19ieXRlc19fIG1ldGhvZAogICAgICAgICBjbGFzcyBGYWtlQnl0ZXMob2JqZWN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKaW5kZXggOWRmNGE1NC4uNzkwNWMzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKQEAgLTE1MCw2ICsxNTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsICIzLzIiLCAzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIDMsIDBqKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIDMsIDFqKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEYsIDEsIDIsIDMpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdEluaXRGcm9tRmxvYXQoc2VsZik6CkBAIC0yNjMsMTMgKzI2NCwxMyBAQAogICAgICAgICBuYW4gPSBpbmYgLSBpbmYKICAgICAgICAgIyBidWcgMTY0Njk6IGVycm9yIHR5cGVzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggZmxvYXQgLT4gaW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCBpbmYgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgaW5mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgLWluZiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCAtaW5mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgbmFuIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCBuYW4pCiAKICAgICBkZWYgdGVzdEZyb21EZWNpbWFsKHNlbGYpOgpAQCAtMjg0LDE2ICsyODUsMTYgQEAKIAogICAgICAgICAjIGJ1ZyAxNjQ2OTogZXJyb3IgdHlwZXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBkZWNpbWFsIC0+IGludAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJpbmYiKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IC1JbmZpbml0eSB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoIi1pbmYiKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IE5hTiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJuYW4iKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IHNOYU4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgic25hbiIpKQogCiAgICAgZGVmIHRlc3RMaW1pdERlbm9taW5hdG9yKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9mc3RyaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOTk1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkKQEAgLTAsMCArMSw3NDggQEAKK2ltcG9ydCBhc3QKK2ltcG9ydCB0eXBlcworaW1wb3J0IGRlY2ltYWwKK2ltcG9ydCB1bml0dGVzdAorCithX2dsb2JhbCA9ICdnbG9iYWwgdmFyaWFibGUnCisKKyMgWW91IGNvdWxkIGFyZ3VlIHRoYXQgSSdtIHRvbyBzdHJpY3QgaW4gbG9va2luZyBmb3Igc3BlY2lmaWMgZXJyb3IKKyMgIHZhbHVlcyB3aXRoIGFzc2VydFJhaXNlc1JlZ2V4LCBidXQgd2l0aG91dCBpdCBpdCdzIHdheSB0b28gZWFzeSB0bworIyAgbWFrZSBhIHN5bnRheCBlcnJvciBpbiB0aGUgdGVzdCBzdHJpbmdzLiBFc3BlY2lhbGx5IHdpdGggYWxsIG9mIHRoZQorIyAgdHJpcGxlIHF1b3RlcywgcmF3IHN0cmluZ3MsIGJhY2tzbGFzaGVzLCBldGMuIEkgdGhpbmsgaXQncyBhCisjICB3b3J0aHdoaWxlIHRyYWRlb2ZmLiBXaGVuIEkgc3dpdGNoZWQgdG8gdGhpcyBtZXRob2QsIEkgZm91bmQgbWFueQorIyAgZXhhbXBsZXMgd2hlcmUgSSB3YXNuJ3QgdGVzdGluZyB3aGF0IEkgdGhvdWdodCBJIHdhcy4KKworY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRBbGxSYWlzZShzZWxmLCBleGNlcHRpb25fdHlwZSwgcmVnZXgsIGVycm9yX3N0cmluZ3MpOgorICAgICAgICBmb3Igc3RyIGluIGVycm9yX3N0cmluZ3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdHI9c3RyKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoZXhjZXB0aW9uX3R5cGUsIHJlZ2V4KToKKyAgICAgICAgICAgICAgICAgICAgZXZhbChzdHIpCisKKyAgICBkZWYgdGVzdF9fZm9ybWF0X19sb29rdXAoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIF9fZm9ybWF0X18gaXMgbG9va2VkIHVwIG9uIHRoZSB0eXBlLCBub3QgdGhlIGluc3RhbmNlLgorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgcmV0dXJuICdjbGFzcycKKworICAgICAgICB4ID0gWCgpCisKKyAgICAgICAgIyBBZGQgYSBib3VuZCBfX2Zvcm1hdF9fIG1ldGhvZCB0byB0aGUgJ3knIGluc3RhbmNlLCBidXQgbm90CisgICAgICAgICMgIHRoZSAneCcgaW5zdGFuY2UuCisgICAgICAgIHkgPSBYKCkKKyAgICAgICAgeS5fX2Zvcm1hdF9fID0gdHlwZXMuTWV0aG9kVHlwZShsYW1iZGEgc2VsZiwgc3BlYzogJ2luc3RhbmNlJywgeSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3l9JywgZm9ybWF0KHkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3l9JywgJ2NsYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoeCksIGZvcm1hdCh5KSkKKworICAgICAgICAjIF9fZm9ybWF0X18gaXMgbm90IGNhbGxlZCB0aGlzIHdheSwgYnV0IHN0aWxsIG1ha2Ugc3VyZSBpdAorICAgICAgICAjICByZXR1cm5zIHdoYXQgd2UgZXhwZWN0IChzbyB3ZSBjYW4gbWFrZSBzdXJlIHdlJ3JlIGJ5cGFzc2luZworICAgICAgICAjICBpdCkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2Zvcm1hdF9fKCcnKSwgJ2NsYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5Ll9fZm9ybWF0X18oJycpLCAnaW5zdGFuY2UnKQorCisgICAgICAgICMgVGhpcyBpcyBob3cgX19mb3JtYXRfXyBpcyBhY3R1YWxseSBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh4KS5fX2Zvcm1hdF9fKHgsICcnKSwgJ2NsYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHkpLl9fZm9ybWF0X18oeSwgJycpLCAnY2xhc3MnKQorCisgICAgZGVmIHRlc3RfYXN0KHNlbGYpOgorICAgICAgICAjIEluc3BpcmVkIGJ5IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNDk3NQorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gNAorICAgICAgICB4ID0gWCgpCisgICAgICAgIGV4cHIgPSAiIiIKK2EgPSAxMAorZid7YSAqIHgoKX0nIiIiCisgICAgICAgIHQgPSBhc3QucGFyc2UoZXhwcikKKyAgICAgICAgYyA9IGNvbXBpbGUodCwgJycsICdleGVjJykKKworICAgICAgICAjIE1ha2Ugc3VyZSB4IHdhcyBub3QgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHguY2FsbGVkKQorCisgICAgICAgICMgQWN0dWFsbHkgcnVuIHRoZSBjb2RlLgorICAgICAgICBleGVjKGMpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgeCB3YXMgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9saXRlcmFsX2V2YWwoc2VsZik6CisgICAgICAgICMgV2l0aCBubyBleHByZXNzaW9ucywgYW4gZi1zdHJpbmcgaXMgb2theS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QubGl0ZXJhbF9ldmFsKCJmJ3gnIiksICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QubGl0ZXJhbF9ldmFsKCJmJ3gnICd5JyIpLCAneHknKQorCisgICAgICAgICMgQnV0IHRoaXMgc2hvdWxkIHJhaXNlIGFuIGVycm9yLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ21hbGZvcm1lZCBub2RlIG9yIHN0cmluZycpOgorICAgICAgICAgICAgYXN0LmxpdGVyYWxfZXZhbCgiZid4ezN9JyIpCisKKyAgICAgICAgIyBBcyBzaG91bGQgdGhpcywgd2hpY2ggdXNlcyBhIGRpZmZlcmVudCBhc3Qgbm9kZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ21hbGZvcm1lZCBub2RlIG9yIHN0cmluZycpOgorICAgICAgICAgICAgYXN0LmxpdGVyYWxfZXZhbCgiZid7M30nIikKKworICAgIGRlZiB0ZXN0X2FzdF9jb21waWxlX3RpbWVfY29uY2F0KHNlbGYpOgorICAgICAgICB4ID0gWycnXQorCisgICAgICAgIGV4cHIgPSAiIiJ4WzBdID0gJ2ZvbycgZid7M30nIiIiCisgICAgICAgIHQgPSBhc3QucGFyc2UoZXhwcikKKyAgICAgICAgYyA9IGNvbXBpbGUodCwgJycsICdleGVjJykKKyAgICAgICAgZXhlYyhjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHhbMF0sICdmb28zJykKKworICAgIGRlZiB0ZXN0X2xpdGVyYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2EnLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicgJywgJyAnKQorCisgICAgZGVmIHRlc3RfdW50ZXJtaW5hdGVkX3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciIiImYneyJ4JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneyJ4fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3soIngnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7KCJ4fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9taXNtYXRjaGVkX3BhcmVucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBtaXNtYXRjaGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneygofSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZG91YmxlX2JyYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7JywgJ3snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7JywgJ2F7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7YicsICd7YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tiJywgJ2F7YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fScsICd9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F9fScsICdhfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fWInLCAnfWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYX19YicsICdhfWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t9fScsICd7fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3t9fScsICdhe30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tifX0nLCAne2J9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7fX1jJywgJ3t9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tifX0nLCAnYXtifScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3t9fWMnLCAnYXt9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2J9fWMnLCAne2J9YycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3tifX1jJywgJ2F7Yn1jJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t7MTB9JywgJ3sxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fXsxMH0nLCAnfTEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319e3t7MTB9JywgJ317MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX1he3t7MTB9JywgJ31hezEwJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfXt7JywgJzEweycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX0nLCAnMTB9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fXt7JywgJzEwfXsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19YXt7JyAnfScsICcxMH1he30nKQorCisgICAgICAgICMgSW5zaWRlIG9mIHN0cmluZ3MsIGRvbid0IGludGVycHJldCBkb3VibGVkIGJyYWNrZXRzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ7e319In0nLCAne3t9fScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7IHt7fX0gfSciLCAjIGRpY3QgaW4gYSBzZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfdGltZV9jb25jYXQoc2VsZik6CisgICAgICAgIHggPSAnZGVmJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYnIyMge3h9Z2hpJywgJ2FiYyMjIGRlZmdoaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZid7eH0nICdnaGknLCAnYWJjZGVmZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJ3t4fScgJ2doJyBmJ2l7eDo0fScsICdhYmNkZWZnaGlkZWYgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3h9JyBmJ3t4fScsICd7eH1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eCcgZid7eH0nLCAne3hkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eH0nIGYne3h9JywgJ3t4fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t7eH19JyBmJ3t4fScsICd7e3h9fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t7eCcgZid7eH0nLCAne3t4ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneH19JyBmJ3t4fScsICd4fX1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyAneH19JywgJ2RlZnh9fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICcnLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJ3t4fScgJycsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYne3h9JywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICcyJywgJ2RlZjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxJyBmJ3t4fScgJzInLCAnMWRlZjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxJyBmJ3t4fScsICcxZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgZicte3h9JywgJ2RlZi1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnICcnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycgJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyAnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnIGYnJyAnJywgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezMnIGYnfSciLCAgIyBjYW4ndCBjb25jYXQgdG8gZ2V0IGEgdmFsaWQgZi1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2NvbW1lbnRzKHNlbGYpOgorICAgICAgICAjIFRoZXNlIGFyZW4ndCBjb21tZW50cywgc2luY2UgdGhleSdyZSBpbiBzdHJpbmdzLgorICAgICAgICBkID0geycjJzogJ2hhc2gnfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIjIn0nLCAnIycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiIyJdfScsICdoYXNoJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlICcjJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3sxI30nIiwgICAjIGVycm9yIGJlY2F1c2UgdGhlIGV4cHJlc3Npb24gYmVjb21lcyAiKDEjKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMoIyl9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sjfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7KSN9JyIsICAgIyBXaGVuIHdyYXBwZWQgaW4gcGFyZW5zLCB0aGlzIGJlY29tZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICcoKSMpJy4gIE1ha2Ugc3VyZSB0aGF0IGRvZXNuJ3QgY29tcGlsZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21hbnlfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgICMgQ3JlYXRlIGEgc3RyaW5nIHdpdGggbWFueSBleHByZXNzaW9ucyBpbiBpdC4gTm90ZSB0aGF0CisgICAgICAgICMgIGJlY2F1c2Ugd2UgaGF2ZSBhIHNwYWNlIGluIGhlcmUgYXMgYSBsaXRlcmFsLCB3ZSdyZSBhY3R1YWxseQorICAgICAgICAjICBnb2luZyB0byB1c2UgdHdpY2UgYXMgbWFueSBhc3Qgbm9kZXM6IG9uZSBmb3IgZWFjaCBsaXRlcmFsCisgICAgICAgICMgIHBsdXMgb25lIGZvciBlYWNoIGV4cHJlc3Npb24uCisgICAgICAgIGRlZiBidWlsZF9mc3RyKG4sIGV4dHJhPScnKToKKyAgICAgICAgICAgIHJldHVybiAiZiciICsgKCd7eH0gJyAqIG4pICsgZXh0cmEgKyAiJyIKKworICAgICAgICB4ID0gJ1gnCisgICAgICAgIHdpZHRoID0gMQorCisgICAgICAgICMgVGVzdCBhcm91bmQgMjU2LgorICAgICAgICBmb3IgaSBpbiByYW5nZSgyNTAsIDI2MCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoYnVpbGRfZnN0cihpKSksICh4KycgJykqaSkKKworICAgICAgICAjIFRlc3QgY29uY2F0ZW5hdGluZyAyIGxhcmdzIGZzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoYnVpbGRfZnN0cigyNTUpKjI1NiksICh4KycgJykqKDI1NSoyNTYpKQorCisgICAgICAgIHMgPSBidWlsZF9mc3RyKDI1MywgJ3t4Ont3aWR0aH19ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChzKSwgKHgrJyAnKSoyNTQpCisKKyAgICAgICAgIyBUZXN0IGxvdHMgb2YgZXhwcmVzc2lvbnMgYW5kIGNvbnN0YW50cywgY29uY2F0ZW5hdGVkLgorICAgICAgICBzID0gImYnezF9JyAneCcgJ3knIiAqIDEwMjQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHMpLCAnMXh5JyAqIDEwMjQpCisKKyAgICBkZWYgdGVzdF9mb3JtYXRfc3BlY2lmaWVyX2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICB3aWR0aCA9IDEwCisgICAgICAgIHByZWNpc2lvbiA9IDQKKyAgICAgICAgdmFsdWUgPSBkZWNpbWFsLkRlY2ltYWwoJzEyLjM0NTY3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aH0ue3ByZWNpc2lvbn19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGghcn0ue3ByZWNpc2lvbn19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGg6MH0ue3ByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnsxfXswOjB9LntwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7IDF9eyAwOjB9LnsgcHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwOiN7MX0weH0nLCAnICAgICAgIDB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6eyIjIn0xezB9eyJ4In19JywgJyAgICAgICAweGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYney0xMDoteyIjIn0xezB9eH0nLCAnICAgICAgLTB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7LTEwOnsiLSJ9I3sxfTB7IngifX0nLCAnICAgICAgLTB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6I3szICE9IHs0OjV9IGFuZCB3aWR0aH14fScsICcgICAgICAgMHhhJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiIiJmJ3sicyIhcnsiOjEwIn19JyIiIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgbG9va3MgbGlrZSBhIG5lc3RlZCBmb3JtYXQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiaW52YWxpZCBzeW50YXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIEludmFsaWQgc3ludGF4IGluc2lkZSBhIG5lc3RlZCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7NDp7LzV9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwcmVzc2lvbnMgbmVzdGVkIHRvbyBkZWVwbHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIENhbid0IG5lc3QgZm9ybWF0IHNwZWNpZmllcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aDp7MH19LntwcmVjaXNpb246MX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIyBObyBleHBhbnNpb24gaW5zaWRlIGNvbnZlcnNpb24gb3IgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIHRoZSA6IG9yICEgaXRzZWxmLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiJmJ3sicyIheyJyIn19JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3NpZGVfZWZmZWN0X29yZGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaSA9IDAKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmLmkpCisKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9IHt4fScsICcxIDInKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19leHByZXNzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGVtcHR5IGV4cHJlc3Npb24gbm90IGFsbG93ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IH0nIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZicge30gJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shcn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAhcn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezEwOnsgfX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnIHsgfSAnIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENhdGNoIHRoZSBlbXB0eSBleHByZXNzaW9uIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgaW52YWxpZCBjb252ZXJzaW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXg6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXg6YX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHI6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cjphfSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7On0nIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGZpbmQgdGhlIGVtcHR5IGV4cHJlc3Npb24gYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBtaXNzaW5nIGNsb3NpbmcgYnJhY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3shczonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezp4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9wYXJlbnNfaW5fZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Myx9JywgJygzLCknKQorCisgICAgICAgICMgQWRkIHRoZXNlIGJlY2F1c2Ugd2hlbiBhbiBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgcGFyZW5zCisgICAgICAgICMgIGFyZSBhZGRlZCBhcm91bmQgaXQuIEJ1dCB3ZSBzaG91bGRuJ3QgZ28gZnJvbSBhbiBpbnZhbGlkCisgICAgICAgICMgIGV4cHJlc3Npb24gdG8gYSB2YWxpZCBvbmUuIFRoZSBhZGRlZCBwYXJlbnMgYXJlIGp1c3QKKyAgICAgICAgIyAgc3VwcG9zZWQgdG8gYWxsb3cgd2hpdGVzcGFjZSAoaW5jbHVkaW5nIG5ld2xpbmVzKS4KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneyx9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3ssfSciLCAgIyB0aGlzIGlzICgsKSwgd2hpY2ggaXMgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MykrKDR9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ0VPTCB3aGlsZSBzY2FubmluZyBzdHJpbmcgbGl0ZXJhbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3tcbn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2JhY2tzbGFzaGVzX2luX3N0cmluZ19wYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHQnLCAnXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHQnLCAnXFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcdCcsICdcXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHQnLCAnMlx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx0ezN9JywgJzJcdDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHR7M30nLCAnXHQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMzk0JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcdTAzOTQnLCAnXFx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHUwMzk0JywgJ1xcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHUwMzk0JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHUwMzk0ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDM5NHszfScsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXFUwMDAwMDM5NCcsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXFUwMDAwMDM5NCcsICdcXFUwMDAwMDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXFUwMDAwMDM5NCcsICdcXFUwMDAwMDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cVTAwMDAwMzk0JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XFUwMDAwMDM5NHszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcVTAwMDAwMzk0ezN9JywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfXszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX17M30nLCAnXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfTMnLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9MycsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHgyMCcsICcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x4MjAnLCAnXFx4MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x4MjAnLCAnXFx4MjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHgyMCcsICcyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1ceDIwezN9JywgJzIgMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwezN9JywgJyAzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlx4MjAnLCAnMiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlx4MjAzJywgJzIgMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwMycsICcgMycpCisKKyAgICBkZWYgdGVzdF9taXNmb3JtZWRfdW5pY29kZV9jaGFyYWN0ZXJfbmFtZShzZWxmKToKKyAgICAgICAgIyBUaGVzZSB0ZXN0IGFyZSBuZWVkZWQgYmVjYXVzZSB1bmljb2RlIG5hbWVzIGFyZSBwYXJzZWQKKyAgICAgICAgIyBkaWZmZXJlbnRseSBpbnNpZGUgZi1zdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCByIlwodW5pY29kZSBlcnJvclwpICd1bmljb2RlZXNjYXBlJyBjb2RlYyBjYW4ndCBkZWNvZGUgYnl0ZXMgaW4gcG9zaXRpb24gLio6IG1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZidcTiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnXE57JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGVyZSBhcmUgdGhlIG5vbi1mLXN0cmluZyB2ZXJzaW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgd2hpY2ggc2hvdWxkIGdpdmUgdGhlIHNhbWUgZXJyb3JzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTnsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciInXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X25vX2JhY2tzbGFzaGVzX2luX2V4cHJlc3Npb25fcGFydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSBhIGJhY2tzbGFzaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7XCdhXCd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7XHQzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne1x9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1wnYVwnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByInJmJ3tcdDN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1x9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJyZid7IlxOe0xFRlQgQ1VSTFkgQlJBQ0tFVH0ifSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9ub19lc2NhcGVzX2Zvcl9icmFjZXMoc2VsZik6CisgICAgICAgICMgXHg3YiBpcyAneycuICBNYWtlIHN1cmUgaXQgZG9lc24ndCBzdGFydCBhbiBleHByZXNzaW9uLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHg3YjJ9fScsICd7Mn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHg3YjInLCAnezInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMDdiMicsICd7MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntMRUZUIENVUkxZIEJSQUNLRVR9MlxOe1JJR0hUIENVUkxZIEJSQUNLRVR9JywgJ3syfScpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lc19pbl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3swfScsICcwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZicnJ3szKworNH0nJycsICc3JykKKworICAgIGRlZiB0ZXN0X2xhbWJkYShzZWxmKToKKyAgICAgICAgeCA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpIXJ9JywgIic4ODg4OCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4IikhcjoxMH0nLCAiJzg4ODg4JyAgICIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKToxMH0nLCAiODg4ODggICAgICIpCisKKyAgICAgICAgIyBsYW1iZGEgZG9lc24ndCB3b3JrIHdpdGhvdXQgcGFyZW5zLCBiZWNhdXNlIHRoZSBjb2xvbgorICAgICAgICAjICBtYWtlcyB0aGUgcGFyc2VyIHRoaW5rIGl0J3MgYSBmb3JtYXRfc3BlYworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAndW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3tsYW1iZGEgeDp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfeWllbGQoc2VsZik6CisgICAgICAgICMgTm90IHRlcnJpYmx5IHVzZWZ1bCwgYnV0IG1ha2Ugc3VyZSB0aGUgeWllbGQgdHVybnMKKyAgICAgICAgIyAgYSBmdW5jdGlvbiBpbnRvIGEgZ2VuZXJhdG9yCisgICAgICAgIGRlZiBmbih5KToKKyAgICAgICAgICAgIGYneTp7eWllbGQgeSoyfScKKworICAgICAgICBnID0gZm4oNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCA4KQorCisgICAgZGVmIHRlc3RfeWllbGRfc2VuZChzZWxmKToKKyAgICAgICAgZGVmIGZuKHgpOgorICAgICAgICAgICAgeWllbGQgZid4Ont5aWVsZCAobGFtYmRhIGk6IHggKiBpKX0nCisKKyAgICAgICAgZyA9IGZuKDEwKQorICAgICAgICB0aGVfbGFtYmRhID0gbmV4dChnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9sYW1iZGEoNCksIDQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuc2VuZCgnc3RyaW5nJyksICd4OnN0cmluZycpCisKKyAgICBkZWYgdGVzdF9leHByZXNzaW9uc193aXRoX3RyaXBsZV9xdW90ZWRfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJyd4JycnfSIsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJydlcmljJ3MnJyd9IiwgImVyaWMncyIpCisKKyAgICAgICAgIyBUZXN0IGNvbmNhdGVuYXRpb24gd2l0aGluIGFuIGV4cHJlc3Npb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieCIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ4IiAiIiJlcmljInMiIiJ9JywgJ3hlcmljInMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiImVyaWMicyIiIiAieSJ9JywgJ2VyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICIiInkiIiJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tyIiIieCIiIiAiIiJlcmljInMiIiIgIiIieSIiIn0nLCAneGVyaWMic3knKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfdmFycyhzZWxmKToKKyAgICAgICAgeCA9IDk4CisgICAgICAgIHkgPSAnYWJjJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9JywgJzk4YWJjJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fXt5fScsICdYOThhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fScsICc5OFhhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9WCcsICc5OGFiY1gnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9WXt5fScsICdYOThZYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH17eX1ZJywgJ1g5OGFiY1knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fVknLCAnOThYYWJjWScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH1Ze3l9WicsICdYOThZYWJjWicpCisKKyAgICBkZWYgdGVzdF9jbG9zdXJlKHNlbGYpOgorICAgICAgICBkZWYgb3V0ZXIoeCk6CisgICAgICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZid4Ont4fScKKyAgICAgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoJzk4NycpKCksICd4Ojk4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoNykoKSwgJ3g6NycpCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHkgPSAyCisgICAgICAgIGRlZiBmKHgsIHdpZHRoKToKKyAgICAgICAgICAgIHJldHVybiBmJ3g9e3gqeTp7d2lkdGh9fScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ2ZvbycsIDEwKSwgJ3g9Zm9vZm9vICAgICcpCisgICAgICAgIHggPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMTAsIDEwKSwgJ3g9ICAgICAgICAyMCcpCisKKyAgICBkZWYgdGVzdF9sb2NhbHMoc2VsZik6CisgICAgICAgIHZhbHVlID0gMTIzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid2Ont2YWx1ZX0nLCAndjoxMjMnKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ192YXJpYWJsZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZid2Ont2YWx1ZX0nCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2Zvcm1hdF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBPOgorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgaWYgbm90IHNwZWM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnKicKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOnh9JywgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKX0nLCAnKicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOn0nLCAnKicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szOn0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyFzOn0nLCAnMycpCisKKyAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpnbG9iYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLCAiZzonZ2xvYmFsIHZhcmlhYmxlJyIpCisKKyAgICAgICAgYV9sb2NhbCA9ICdsb2NhbCB2YXJpYWJsZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2c6Z2xvYmFsIHZhcmlhYmxlIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidnbG9iYWwgdmFyaWFibGUnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzpnbG9iYWwgdmFyaWFibGUgbDonbG9jYWwgdmFyaWFibGUnIikKKworICAgICAgICBzZWxmLmFzc2VydEluKCJtb2R1bGUgJ3VuaXR0ZXN0JyBmcm9tIiwgZid7dW5pdHRlc3R9JykKKworICAgIGRlZiB0ZXN0X3NoYWRvd2VkX2dsb2JhbChzZWxmKToKKyAgICAgICAgYV9nbG9iYWwgPSAncmVhbGx5IGEgbG9jYWwnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpyZWFsbHkgYSBsb2NhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbCFyfScsICJnOidyZWFsbHkgYSBsb2NhbCciKQorCisgICAgICAgIGFfbG9jYWwgPSAnbG9jYWwgdmFyaWFibGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnOnJlYWxseSBhIGxvY2FsIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidyZWFsbHkgYSBsb2NhbCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOnJlYWxseSBhIGxvY2FsIGw6J2xvY2FsIHZhcmlhYmxlJyIpCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBkZWYgZm9vKHgpOgorICAgICAgICAgICAgcmV0dXJuICd4PScgKyBzdHIoeCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2ZvbygxMCl9JywgJ3g9MTAnKQorCisgICAgZGVmIHRlc3RfbmVzdGVkX2ZzdHJpbmdzKHNlbGYpOgorICAgICAgICB5ID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2YiezB9IiozfScsICcwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2Yie3l9IiozfScsICc1NTUnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9zdHJpbmdfcHJlZml4ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICd1bmV4cGVjdGVkIEVPRiB3aGlsZSBwYXJzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImZ1JyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZVJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1RicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVmcicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVyZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZydScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJmdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJ1ZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZVUicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZiJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZkInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZCJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiRicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQkYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9sZWFkaW5nX3RyYWlsaW5nX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sgM30nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ICAzfScsICczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIH0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyAgfScsICczJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZXhwcj17IHt4OiB5IGZvciB4LCB5IGluIFsoMSwgMiksIF19fScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cHI9ezE6IDJ9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2V4cHI9eyB7eDogeSBmb3IgeCwgeSBpbiBbKDEsIDIpLCBdfSB9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwcj17MTogMn0nKQorCisgICAgZGVmIHRlc3Rfbm90X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRoZXJlJ3MgYSBzcGVjaWFsIHRlc3QgZm9yIHRoaXMgYmVjYXVzZSB0aGVyZSdzIGEgc3BlY2lhbAorICAgICAgICAjICBjYXNlIGluIHRoZSBmLXN0cmluZyBwYXJzZXIgdG8gbG9vayBmb3IgIT0gYXMgbm90IGVuZGluZyBhbgorICAgICAgICAjICBleHByZXNzaW9uLiBOb3JtYWxseSBpdCB3b3VsZCwgd2hpbGUgbG9va2luZyBmb3IgIXMgb3IgIXIuCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00fScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00On0nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NCFzfScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00IXM6LjN9JywgJ1RydScpCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OjEwLjEwfScsICcgICAgICAzLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IXM6MTAuMTB9JywgJzMuMTQgICAgICAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhcjoxMC4xMH0nLCAnMy4xNCAgICAgICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFhOjEwLjEwfScsICczLjE0ICAgICAgJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIn0nLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIXJ9JywgIidhJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIWF9JywgIidhJyIpCisKKyAgICAgICAgIyBOb3QgYSBjb252ZXJzaW9uLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIXIifScsICJhIXIiKQorCisgICAgICAgICMgTm90IGEgY29udmVyc2lvbiwgYnV0IHNob3cgdGhhdCAhIGlzIGFsbG93ZWQgaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OiE8MTAuMTB9JywgJzMuMTQhISEhISEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szIWd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISBzfSciLCAgIyBubyBzcGFjZSBiZWZvcmUgY29udmVyc2lvbiBjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne3ghc3t5fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3N9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzOn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3M6c30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Fzc2lnbm1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJycgPSAzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezB9JyA9IHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7eH0nID0geCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJkZWwgZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbCAnJyBmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWlzbWF0Y2hlZF9icmFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t7fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e319fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9eCciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2FuJ3QgaGF2ZSB7IG9yIH0gaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fT4xMH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fX0+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezM6e3s+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MzonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOjMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHt4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOnMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7fX17JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3snIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICAjIEJ1dCB0aGVzZSBhcmUganVzdCBub3JtYWwgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieyJ9JywgJ3snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ9In0nLCAnfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mzp7In0ifT4xMH0nLCAnfX19fX19fX19MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mjp7InsifT4xMH0nLCAne3t7e3t7e3t7MicpCisKKyAgICBkZWYgdGVzdF9pZl9jb25kaXRpb25hbChzZWxmKToKKyAgICAgICAgIyBUaGVyZSdzIHNwZWNpYWwgbG9naWMgaW4gY29tcGlsZS5jIHRvIHRlc3QgaWYgdGhlCisgICAgICAgICMgIGNvbmRpdGlvbmFsIGZvciBhbiBpZiAoYW5kIHdoaWxlKSBhcmUgY29uc3RhbnRzLiBFeGVyY2lzZQorICAgICAgICAjICB0aGF0IGNvZGUuCisKKyAgICAgICAgZGVmIHRlc3RfZnN0cmluZyh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9lbXB0eSh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgJycgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmICcgJyBmJ3t4fSc6CisgICAgICAgICAgICAgICAgZmxhZyA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmxhZyA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgZXhwZWN0ZWQpCisKKyAgICAgICAgdGVzdF9mc3RyaW5nKCcnLCAyKQorICAgICAgICB0ZXN0X2ZzdHJpbmcoJyAnLCAxKQorCisgICAgICAgIHRlc3RfY29uY2F0X2VtcHR5KCcnLCAyKQorICAgICAgICB0ZXN0X2NvbmNhdF9lbXB0eSgnICcsIDEpCisKKyAgICAgICAgdGVzdF9jb25jYXRfbm9uX2VtcHR5KCcnLCAxKQorICAgICAgICB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoJyAnLCAxKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZm9ybWF0X3NwZWNpZmllcihzZWxmKToKKyAgICAgICAgeCA9ICd0ZXN0JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3g6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXM6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXI6fScsICIndGVzdCciKQorCisgICAgZGVmIHRlc3Rfc3RyX2Zvcm1hdF9kaWZmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgZCA9IHsnYSc6ICdzdHJpbmcnLAorICAgICAgICAgICAgIDA6ICdpbnRlZ2VyJywKKyAgICAgICAgICAgICB9CisgICAgICAgIGEgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFswXX0nLCAnaW50ZWdlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiYSJdfScsICdzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbYV19JywgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7ZFthXX0nLmZvcm1hdChkPWQpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne2RbMF19Jy5mb3JtYXQoZD1kKSwgJ2ludGVnZXInKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3thWzQpfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne2EoNF19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBzZWUgaXNzdWUgMjYyODcKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShUeXBlRXJyb3IsICdub24tZW1wdHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYneyhsYW1iZGE6IDApOnh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7KDAsKTp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFZhbHVlRXJyb3IsICdVbmtub3duIGZvcm1hdCBjb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3sxMDAwOmp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7MTAwMDpqfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9sb29wKHNlbGYpOgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidpOntpfScsICdpOicgKyBzdHIoaSkpCisKKyAgICBkZWYgdGVzdF9kaWN0KHNlbGYpOgorICAgICAgICBkID0geyciJzogJ2RxdW90ZScsCisgICAgICAgICAgICAgIiciOiAnc3F1b3RlJywKKyAgICAgICAgICAgICAnZm9vJzogJ2JhcicsCisgICAgICAgICAgICAgfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyd7ZFsiJyJdfScnJywgJ3NxdW90ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiIiIntkWyciJ119IiIiLCAnZHF1b3RlJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbImZvbyJdfScsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYie2RbJ2ZvbyddfSIsICdiYXInKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQppbmRleCBhZWY2NmRhLi4xMmZhYmM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weQpAQCAtMzExLDEwICszMTEsMTIgQEAKICAgICAgICAgX3NzbF9jbG9zaW5nID0gRmFsc2UKIAogICAgICAgICBkZWYgc2VjdXJlX2Nvbm5lY3Rpb24oc2VsZik6Ci0gICAgICAgICAgICBzb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzb2NrZXQgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrZXQpCiAgICAgICAgICAgICBzZWxmLl9zc2xfYWNjZXB0aW5nID0gVHJ1ZQpAQCAtMTA0OSwxMCArMTA1MSwxOSBAQAogICAgICAgICBmdHAuY2xvc2UoKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZShUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J01TR19PT0InLCAnRlRQX1BPUlQnLCAnTUFYTElORScsICdDUkxGJywgJ0JfQ1JMRicsCisgICAgICAgICAgICAgICAgICAgICAnRXJyb3InLCAncGFyc2UxNTAnLCAncGFyc2UyMjcnLCAncGFyc2UyMjknLCAncGFyc2UyNTcnLAorICAgICAgICAgICAgICAgICAgICAgJ3ByaW50X2xpbmUnLCAnZnRwY3AnLCAndGVzdCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZ0cGxpYiwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHMsCiAgICAgICAgICAgICAgVGVzdElQdjZFbnZpcm9ubWVudCwKLSAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3NdCisgICAgICAgICAgICAgVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzLAorICAgICAgICAgICAgIE1pc2NUZXN0Q2FzZV0KIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggNTA3NjY0NC4uOWVhNjc0NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTgsNiArOCw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQoraW1wb3J0IGNvbnRleHRsaWIKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMCw2ICsyMSwxNCBAQAogCiBkZWNpbWFsID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgZnJlc2g9WydfZGVjaW1hbCddKQogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHJlcGxhY2VkX21vZHVsZShuYW1lLCByZXBsYWNlbWVudCk6CisgICAgb3JpZ2luYWxfbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBzeXMubW9kdWxlc1tuYW1lXSA9IHJlcGxhY2VtZW50CisgICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gb3JpZ2luYWxfbW9kdWxlCiAKIGRlZiBjYXB0dXJlKCphcmdzLCAqKmt3KToKICAgICAiIiJjYXB0dXJlIGFsbCBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyIiIgpAQCAtMTY3LDU4ICsxNzYsMzUgQEAKICAgICAgICAgcDIubmV3X2F0dHIgPSAnc3BhbScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwMi5uZXdfYXR0ciwgJ3NwYW0nKQogCi0KLUB1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQotY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgaWYgY19mdW5jdG9vbHM6Ci0gICAgICAgIHBhcnRpYWwgPSBjX2Z1bmN0b29scy5wYXJ0aWFsCi0KLSAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3Vud3JpdGFibGUoc2VsZik6Ci0gICAgICAgICMgYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHdyaXRhYmxlCi0gICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgMSwgMiwgYT0xMCwgYj0yMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdmdW5jJywgbWFwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2FyZ3MnLCAoMSwgMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAna2V5d29yZHMnLCBkaWN0KGE9MSwgYj0yKSkKLQotICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGhleCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVsIHAuX19kaWN0X18KLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgncGFydGlhbCBvYmplY3QgYWxsb3dlZCBfX2RpY3RfXyB0byBiZSBkZWxldGVkJykKLQogICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CiAgICAgICAgIGFyZ3MgPSAob2JqZWN0KCksIG9iamVjdCgpKQogICAgICAgICBhcmdzX3JlcHIgPSAnLCAnLmpvaW4ocmVwcihhKSBmb3IgYSBpbiBhcmdzKQogICAgICAgICBrd2FyZ3MgPSB7J2EnOiBvYmplY3QoKSwgJ2InOiBvYmplY3QoKX0KICAgICAgICAga3dhcmdzX3JlcHJzID0gWydhPXthIXJ9LCBiPXtiIXJ9Jy5mb3JtYXRfbWFwKGt3YXJncyksCiAgICAgICAgICAgICAgICAgICAgICAgICAnYj17YiFyfSwgYT17YSFyfScuZm9ybWF0X21hcChrd2FyZ3MpXQotICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaXMgY19mdW5jdG9vbHMucGFydGlhbDoKKyAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGluIChjX2Z1bmN0b29scy5wYXJ0aWFsLCBweV9mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgICAgICBuYW1lID0gJ2Z1bmN0b29scy5wYXJ0aWFsJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYucGFydGlhbC5fX25hbWVfXwogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSknLmZvcm1hdChuYW1lLCBjYXB0dXJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne25hbWV9KHtjYXB0dXJlIXJ9KScsIHJlcHIoZikpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne30oeyFyfSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwgYXJnc19yZXByKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne25hbWV9KHtjYXB0dXJlIXJ9LCB7YXJnc19yZXByfSknLCByZXByKGYpKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVwcihmKSwKLSAgICAgICAgICAgICAgICAgICAgICBbJ3t9KHshcn0sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGt3YXJnc19yZXByKQorICAgICAgICAgICAgICAgICAgICAgIFtmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2t3YXJnc19yZXByfSknCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrd2FyZ3NfcmVwciBpbiBrd2FyZ3NfcmVwcnNdKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKHJlcHIoZiksCi0gICAgICAgICAgICAgICAgICAgICAgWyd7fSh7IXJ9LCB7fSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwgYXJnc19yZXByLCBrd2FyZ3NfcmVwcikKKyAgICAgICAgICAgICAgICAgICAgICBbZid7bmFtZX0oe2NhcHR1cmUhcn0sIHthcmdzX3JlcHJ9LCB7a3dhcmdzX3JlcHJ9KScKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJnc19yZXByIGluIGt3YXJnc19yZXByc10pCiAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcmVwcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGlzIGNfZnVuY3Rvb2xzLnBhcnRpYWw6CisgICAgICAgIGlmIHNlbGYucGFydGlhbCBpbiAoY19mdW5jdG9vbHMucGFydGlhbCwgcHlfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICAgICAgbmFtZSA9ICdmdW5jdG9vbHMucGFydGlhbCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLnBhcnRpYWwuX19uYW1lX18KQEAgLTIyNiwzMCArMjEyLDMxIEBACiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglcyguLi4pKScgJSAobmFtZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyguLi4pJyAlIChuYW1lLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsICVzKC4uLikpJyAlIChuYW1lLCBjYXB0dXJlLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCAuLi4pJyAlIChuYW1lLCBjYXB0dXJlLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCBhPSVzKC4uLikpJyAlIChuYW1lLCBjYXB0dXJlLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCBhPS4uLiknICUgKG5hbWUsIGNhcHR1cmUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQotICAgICAgICBmLmF0dHIgPSBbXQotICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZl9jb3B5KSwgc2lnbmF0dXJlKGYpKQorICAgICAgICB3aXRoIHNlbGYuQWxsb3dQaWNrbGUoKToKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKKyAgICAgICAgICAgIGYuYXR0ciA9IFtdCisgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmX2NvcHkpLCBzaWduYXR1cmUoZikpCiAKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCkBAIC0yNzQsMTEgKzI2MSwxMyBAQAogICAgIGRlZiB0ZXN0X3NldHN0YXRlKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIGRpY3QoYXR0cj1bXSkpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBkaWN0KGF0dHI9W10pKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDIsIGI9MjApLCAoKDEsIDIpLCB7J2EnOiAxMCwgJ2InOiAyMH0pKQogCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBOb25lKSkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmKSwgKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIHt9KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDIsIGI9MjApLCAoKDEsIDIpLCB7J2EnOiAxMCwgJ2InOiAyMH0pKQogCkBAIC0zMjUsMzggKzMxNCwzOSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoclswXSksIHR1cGxlKQogCiAgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3BpY2tsZShzZWxmKToKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMoZiwgcHJvdG8pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgIHdpdGggc2VsZi5BbGxvd1BpY2tsZSgpOgorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhmLCBwcm90bykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCi0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkuYXJnc1swXSwgZl9jb3B5KQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5hcmdzWzBdLCBmX2NvcHkpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCi0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmtleXdvcmRzWydhJ10sIGZfY29weSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKKyAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmtleXdvcmRzWydhJ10sIGZfY29weSkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICAjIElzc3VlIDYwODM6IFJlZmVyZW5jZSBjb3VudGluZyBidWcKICAgICBkZWYgdGVzdF9zZXRzdGF0ZV9yZWZjb3VudChzZWxmKToKQEAgLTM3NSwyNCArMzY1LDYwIEBACiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwob2JqZWN0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYuX19zZXRzdGF0ZV9fLCBCYWRTZXF1ZW5jZSgpKQogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKK2NsYXNzIFRlc3RQYXJ0aWFsQyhUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBwYXJ0aWFsID0gY19mdW5jdG9vbHMucGFydGlhbAorCisgICAgY2xhc3MgQWxsb3dQaWNrbGU6CisgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRiKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc191bndyaXRhYmxlKHNlbGYpOgorICAgICAgICAjIGF0dHJpYnV0ZXMgc2hvdWxkIG5vdCBiZSB3cml0YWJsZQorICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsIDEsIDIsIGE9MTAsIGI9MjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnZnVuYycsIG1hcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdhcmdzJywgKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2tleXdvcmRzJywgZGljdChhPTEsIGI9MikpCisKKyAgICAgICAgcCA9IHNlbGYucGFydGlhbChoZXgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBwLl9fZGljdF9fCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3BhcnRpYWwgb2JqZWN0IGFsbG93ZWQgX19kaWN0X18gdG8gYmUgZGVsZXRlZCcpCiAKIGNsYXNzIFRlc3RQYXJ0aWFsUHkoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBwYXJ0aWFsID0gc3RhdGljbWV0aG9kKHB5X2Z1bmN0b29scy5wYXJ0aWFsKQorICAgIHBhcnRpYWwgPSBweV9mdW5jdG9vbHMucGFydGlhbAogCisgICAgY2xhc3MgQWxsb3dQaWNrbGU6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2NtID0gcmVwbGFjZWRfbW9kdWxlKCJmdW5jdG9vbHMiLCBweV9mdW5jdG9vbHMpCisgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY20uX19lbnRlcl9fKCkKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0Yik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY20uX19leGl0X18odHlwZSwgdmFsdWUsIHRiKQogCiBpZiBjX2Z1bmN0b29sczoKLSAgICBjbGFzcyBQYXJ0aWFsU3ViY2xhc3MoY19mdW5jdG9vbHMucGFydGlhbCk6CisgICAgY2xhc3MgQ1BhcnRpYWxTdWJjbGFzcyhjX2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgcGFzcwogCitjbGFzcyBQeVBhcnRpYWxTdWJjbGFzcyhweV9mdW5jdG9vbHMucGFydGlhbCk6CisgICAgcGFzcwogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKIGNsYXNzIFRlc3RQYXJ0aWFsQ1N1YmNsYXNzKFRlc3RQYXJ0aWFsQyk6CiAgICAgaWYgY19mdW5jdG9vbHM6Ci0gICAgICAgIHBhcnRpYWwgPSBQYXJ0aWFsU3ViY2xhc3MKKyAgICAgICAgcGFydGlhbCA9IENQYXJ0aWFsU3ViY2xhc3MKIAogICAgICMgcGFydGlhbCBzdWJjbGFzc2VzIGFyZSBub3Qgb3B0aW1pemVkIGZvciBuZXN0ZWQgY2FsbHMKICAgICB0ZXN0X25lc3RlZF9vcHRpbWl6YXRpb24gPSBOb25lCiAKK2NsYXNzIFRlc3RQYXJ0aWFsUHlTdWJjbGFzcyhUZXN0UGFydGlhbFB5KToKKyAgICBwYXJ0aWFsID0gUHlQYXJ0aWFsU3ViY2xhc3MKIAogY2xhc3MgVGVzdFBhcnRpYWxNZXRob2QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02ODMsOSArNzA5LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCiAKLQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCiBjbGFzcyBUZXN0UmVkdWNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBmdW5jID0gZnVuY3Rvb2xzLnJlZHVjZQorICAgIGlmIGNfZnVuY3Rvb2xzOgorICAgICAgICBmdW5jID0gY19mdW5jdG9vbHMucmVkdWNlCiAKICAgICBkZWYgdGVzdF9yZWR1Y2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIFNxdWFyZXM6CkBAIC0xNTQ4LDEzICsxNTc1LDE1IEBACiAgICAgICAgIGJhc2VzID0gW2MuU2VxdWVuY2UsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywgYy5TZXRdCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhkaWN0LCBoYXlzdGFjaykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW2RpY3QsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywgYy5TaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLCBvYmplY3RdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db250YWluZXIsIG9iamVjdF0pCiAgICAgICAgIGJhc2VzID0gW2MuQ29udGFpbmVyLCBjLk1hcHBpbmcsIGMuTXV0YWJsZU1hcHBpbmcsIGMuT3JkZXJlZERpY3RdCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhjLkNoYWluTWFwLCBoYXlzdGFjaykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW2MuQ2hhaW5NYXAsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLCBvYmplY3RdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db250YWluZXIsIG9iamVjdF0pCiAKICAgICAgICAgIyBJZiB0aGVyZSdzIGEgZ2VuZXJpYyBmdW5jdGlvbiB3aXRoIGltcGxlbWVudGF0aW9ucyByZWdpc3RlcmVkIGZvcgogICAgICAgICAjIGJvdGggU2l6ZWQgYW5kIENvbnRhaW5lciwgcGFzc2luZyBhIGRlZmF1bHRkaWN0IHRvIGl0IHJlc3VsdHMgaW4gYW4KQEAgLTE1NzUsOSArMTYwNCw5IEBACiAgICAgICAgIGJhc2VzID0gW2MuTXV0YWJsZVNlcXVlbmNlLCBjLk11dGFibGVNYXBwaW5nXQogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oRCwgYmFzZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtELCBjLk11dGFibGVTZXF1ZW5jZSwgYy5TZXF1ZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZGVmYXVsdGRpY3QsIGRpY3QsIGMuTXV0YWJsZU1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLk1hcHBpbmcsIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbRCwgYy5NdXRhYmxlU2VxdWVuY2UsIGMuU2VxdWVuY2UsIGMuUmV2ZXJzaWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZGVmYXVsdGRpY3QsIGRpY3QsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3RdKQogCiAgICAgICAgICMgQ29udGFpbmVyIGFuZCBDYWxsYWJsZSBhcmUgcmVnaXN0ZXJlZCBvbiBkaWZmZXJlbnQgYmFzZSBjbGFzc2VzIGFuZApAQCAtMTU5MCw3ICsxNjE5LDggQEAKICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKEMsIGhheXN0YWNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbQywgYy5DYWxsYWJsZSwgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKIAogICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2FiYyhzZWxmKToKICAgICAgICAgYyA9IGNvbGxlY3Rpb25zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weSBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CmluZGV4IGJlYWM5OTMuLjIxM2IyYmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CkBAIC00LDcgKzQsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgcmUKIAotcnggPSByZS5jb21waWxlKCdcKChcUyspLnB5LCBsaW5lIChcZCspJykKK3J4ID0gcmUuY29tcGlsZShyJ1woKFxTKykucHksIGxpbmUgKFxkKyknKQogCiBkZWYgZ2V0X2Vycm9yX2xvY2F0aW9uKG1zZyk6CiAgICAgbW8gPSByeC5zZWFyY2goc3RyKG1zZykpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2djLnB5IGIvTGliL3Rlc3QvdGVzdF9nYy5weQppbmRleCBhNGQ2ODRiLi5lNzI3NDk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2djLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKQEAgLTY4NCw3ICs2ODQsNiBAQAogICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB0aHJvdWdoIHRoZSBfX21haW5fXyBtb2R1bGUgYW5kIGNoZWNrCiAgICAgICAgICMgaXQgZ2V0cyBjb2xsZWN0ZWQgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgotICAgICAgICAgICAgaW1wb3J0IHdlYWtyZWYKICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgIHByaW50KCdfX2RlbF9fIGNhbGxlZCcpCkBAIC02OTksNyArNjk4LDYgQEAKICAgICAgICAgIyBTYW1lIGFzIGFib3ZlLCBidXQgd2l0aCBhIG5vbi1fX21haW5fXyBtb2R1bGUuCiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgbW9kdWxlID0gIiIiaWYgMToKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2Vha3JlZgogICAgICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ19fZGVsX18gY2FsbGVkJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5IGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKaW5kZXggM2RiMTBiNi4uNWZiZjE1NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZGIucHkKQEAgLTUsMTMgKzUsMTUgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKLWltcG9ydCBwcHJpbnQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBsb2NhbGUKIAorIyBGSVhNRTogaXNzdWUgIzI4MDIzCityYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiRklYTUU6IGlzc3VlICMyODAyMywgY29tcGFjdCBkaWN0IChpc3N1ZSAjMjczNTApIGJyb2tlIHB5dGhvbi1nZGIucHkiKQorCiAjIElzIHRoaXMgUHl0aG9uIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCB0aHJlYWRzPwogdHJ5OgogICAgIGltcG9ydCBfdGhyZWFkCkBAIC0xMTEsNiArMTEzLDcgQEAKIAogQlJFQUtQT0lOVF9GTj0nYnVpbHRpbl9pZCcKIAorQHVuaXR0ZXN0LnNraXBJZihzdXBwb3J0LlBHTywgIm5vdCB1c2VmdWwgZm9yIFBHTyIpCiBjbGFzcyBEZWJ1Z2dlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3QgdGhhdCB0aGUgZGVidWdnZXIgY2FuIGRlYnVnIFB5dGhvbi4iIiIKQEAgLTE3Nyw2ICsxODAsNyBAQAogICAgICAgICBhcmdzID0gWyctLWV2YWwtY29tbWFuZD0lcycgJSBjbWQgZm9yIGNtZCBpbiBjb21tYW5kc10KICAgICAgICAgYXJncyArPSBbIi0tYXJncyIsCiAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlXQorICAgICAgICBhcmdzLmV4dGVuZChzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKIAogICAgICAgICBpZiBub3QgaW1wb3J0X3NpdGU6CiAgICAgICAgICAgICAjIC1TIHN1cHByZXNzZXMgdGhlIGRlZmF1bHQgJ2ltcG9ydCBzaXRlJwpAQCAtMjQwLDcgKzI0NCw3IEBACiAgICAgICAgICMgZ2RiIGNhbiBpbnNlcnQgYWRkaXRpb25hbCAnXG4nIGFuZCBzcGFjZSBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgcGxhY2VzCiAgICAgICAgICMgaW4gaXRzIG91dHB1dCwgZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwgaXQncyBjb25uZWN0ZWQKICAgICAgICAgIyB0byAodXNpbmcgaXRzICJ3cmFwX2hlcmUiIGZ1bmN0aW9uKQotICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAorICAgICAgICBtID0gcmUubWF0Y2gocicuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytcUypQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsIHJlLkRPVEFMTCkKICAgICAgICAgaWYgbm90IG06CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZ2RiIG91dHB1dDogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKQEAgLTI5Miw3ICsyOTYsOSBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgZGljdGlvbmFyaWVzJwogICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoe30pCiAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInfSwgInsnZm9vJzogJ2Jhcid9IikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2JhcicsICdkb3VnbGFzJzogNDJ9LCAieydkb3VnbGFzJzogNDIsICdmb28nOiAnYmFyJ30iKQorICAgICAgICAjIFBZVEhPTkhBU0hTRUVEIGlzIG5lZWQgdG8gZ2V0IHRoZSBleGFjdCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2JhcicsICdkb3VnbGFzJzogNDJ9LCAieydkb3VnbGFzJzogNDIsICdmb28nOiAnYmFyJ30iKQogCiAgICAgZGVmIHRlc3RfbGlzdHMoc2VsZik6CiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBsaXN0cycKQEAgLTM1NSw5ICszNjEsMTIgQEAKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIHNldHMnCiAgICAgICAgIGlmIChnZGJfbWFqb3JfdmVyc2lvbiwgZ2RiX21pbm9yX3ZlcnNpb24pIDwgKDcsIDMpOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgicHJldHR5LXByaW50aW5nIG9mIHNldHMgbmVlZHMgZ2RiIDcuMyBvciBsYXRlciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoKSwgJ3NldCgpJykKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnLCAnYiddKSwgInsnYScsICdiJ30iKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFs0LCA1LCA2XSksICJ7NCwgNSwgNn0iKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KCksICJzZXQoKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWydhJ10pLCAieydhJ30iKQorICAgICAgICAjIFBZVEhPTkhBU0hTRUVEIGlzIG5lZWQgdG8gZ2V0IHRoZSBleGFjdCBmcm96ZW5zZXQgaXRlbSBvcmRlcgorICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLmlnbm9yZV9lbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWydhJywgJ2InXSksICJ7J2EnLCAnYid9IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWzQsIDUsIDZdKSwgIns0LCA1LCA2fSIpCiAKICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBoYW5kbGUgc2V0cyBjb250YWluaW5nIHRoZSAiZHVtbXkiIGtleSB2YWx1ZSwKICAgICAgICAgIyB3aGljaCBoYXBwZW5zIG9uIGRlbGV0aW9uOgpAQCAtMzcwLDkgKzM3OSwxMiBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgZnJvemVuc2V0cycKICAgICAgICAgaWYgKGdkYl9tYWpvcl92ZXJzaW9uLCBnZGJfbWlub3JfdmVyc2lvbikgPCAoNywgMyk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwcmV0dHktcHJpbnRpbmcgb2YgZnJvemVuc2V0cyBuZWVkcyBnZGIgNy4zIG9yIGxhdGVyIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldCgpLCAnZnJvemVuc2V0KCknKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYScsICdiJ10pLCAiZnJvemVuc2V0KHsnYScsICdiJ30pIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbNCwgNSwgNl0pLCAiZnJvemVuc2V0KHs0LCA1LCA2fSkiKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KCksICJmcm96ZW5zZXQoKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJ10pLCAiZnJvemVuc2V0KHsnYSd9KSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGZyb3plbnNldCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnLCAnYiddKSwgImZyb3plbnNldCh7J2EnLCAnYid9KSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFs0LCA1LCA2XSksICJmcm96ZW5zZXQoezQsIDUsIDZ9KSIpCiAKICAgICBkZWYgdGVzdF9leGNlcHRpb25zKHNlbGYpOgogICAgICAgICAjIFRlc3QgYSBSdW50aW1lRXJyb3IKQEAgLTUwMSw2ICs1MTMsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5zX2hlbHAoc2VsZik6CiAgICAgICAgICdFbnN1cmUgdGhhdCB0aGUgbmV3LXN0eWxlIGNsYXNzIF9IZWxwZXIgaW4gc2l0ZS5weSBjYW4gYmUgaGFuZGxlZCcKKworICAgICAgICBpZiBzeXMuZmxhZ3Mubm9fc2l0ZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5lZWQgc2l0ZSBtb2R1bGUsIGJ1dCAtUyBvcHRpb24gd2FzIHVzZWQiKQorCiAgICAgICAgICMgKHRoaXMgd2FzIHRoZSBpc3N1ZSBjYXVzaW5nIHRyYWNlYmFja3MgaW4KICAgICAgICAgIyAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTgwMzIjbXNnMTAwNTM3ICkKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaWQoX19idWlsdGluc19fLmhlbHApJywgaW1wb3J0X3NpdGU9VHJ1ZSkKQEAgLTUzNiw3ICs1NTIsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9hdHRyID0gZm9vCiBpZChmb28pJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTQ5LDcgKzU2NSw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NjMsNyArNTc5LDcgQEAKIGEuYW5fYXR0ciA9IGIKIGIuYW5fYXR0ciA9IGEKIGlkKGEpJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU5OCw3ICs2MTQsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9tZXRob2Qoc2VsZik6CiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2ltcG9ydCBzeXM7IGlkKHN5cy5zdGRvdXQucmVhZGxpbmVzKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC02MTMsNyArNjI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J2J1aWx0aW5faWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHJpbnQgKFB5RnJhbWVPYmplY3QqKSgoKFB5Q29kZU9iamVjdCopdiktPmNvX3pvbWJpZWZyYW1lKSddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnLipccytcJDEgPVxzK0ZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIDxzdHJpbmc+LCBsaW5lIDMsIGluIGZvbyBcKFwpXHMrLionLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIChnZGJfb3V0cHV0LCBnZGJfb3V0cHV0KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3Jfc3RvcC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9yX3N0b3AucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQppbmRleCAzZjgyNDYyLi5mNGIzM2FmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CkBAIC0yNDUsMTEgKzI0NSwxMSBAQAogICAgICAgICAgICAgeWllbGQKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pLCBcCi0gICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKIAogICAgICAgICAgICAgbmV4dChnZW4oKSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgLiogcmFpc2VkIFN0b3BJdGVyYXRpb24iKSwgXAogICAgICAgICAgICAgIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAKQEAgLTI2OCw3ICsyNjgsNyBAQAogICAgICAgICBnID0gZigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgMSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgogICAgICAgICAgICAgICAgIG5leHQoZykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKaW5kZXggYjc3ZDFkNy4uYWU1ZGQ2YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CkBAIC0xMCwxMSArMTAsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAotZGVmIHNhZmVfcm1kaXIoZGlybmFtZSk6Ci0gICAgdHJ5OgotICAgICAgICBvcy5ybWRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBwYXNzCitkZWYgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGRhdGE9Yidmb28nKToKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd4YicsIDApIGFzIGZwOgorICAgICAgICBmcC53cml0ZShkYXRhKQogCiAKIGNsYXNzIEdlbmVyaWNUZXN0OgpAQCAtOTcsNTIgKzk1LDQ3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoczFbbjpuKzFdLCBzMltuOm4rMV0pCiAKICAgICBkZWYgdGVzdF9nZXRzaXplKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoc3VwcG9ydC5URVNURk4pLCAzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2VkOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKIAotICAgIGRlZiB0ZXN0X3RpbWUoc2VsZik6Ci0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJhYiIpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBiJ0hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShmaWxlbmFtZSksIDUpCisgICAgICAgIG9zLnJlbW92ZShmaWxlbmFtZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidIZWxsbyBXb3JsZCEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKGZpbGVuYW1lKSwgMTIpCisKKyAgICBkZWYgdGVzdF9maWxldGltZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBiJ2ZvbycpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAiYWIiLCAwKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiImJhciIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAicmIiKQotICAgICAgICAgICAgZCA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgYiJmb29iYXIiKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCgKLSAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0Y3RpbWUoc3VwcG9ydC5URVNURk4pLAotICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRtdGltZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgICkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlZDoKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGY6CisgICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiImZvb2JhciIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoCisgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0Y3RpbWUoZmlsZW5hbWUpLAorICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldG10aW1lKGZpbGVuYW1lKQorICAgICAgICApCiAKICAgICBkZWYgdGVzdF9leGlzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAieGIiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5wYXRobW9kdWxlID09IGdlbmVyaWNwYXRoOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmxleGlzdHMoc3VwcG9ydC5URVNURk4pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgICAgIGlmIG5vdCBzZWxmLnBhdGhtb2R1bGUgPT0gZ2VuZXJpY3BhdGg6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5sZXhpc3RzKGZpbGVuYW1lKSwgVHJ1ZSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwaXBlIiksICJyZXF1aXJlcyBvcy5waXBlKCkiKQogICAgIGRlZiB0ZXN0X2V4aXN0c19mZChzZWxmKToKQEAgLTE1NCw1MyArMTQ3LDY2IEBACiAgICAgICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCiAKLSAgICBkZWYgdGVzdF9pc2RpcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNhZmVfcm1kaXIoc3VwcG9ydC5URVNURk4pCisgICAgZGVmIHRlc3RfaXNkaXJfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQogCi0gICAgZGVmIHRlc3RfaXNmaWxlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgb3MucmVtb3ZlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2FmZV9ybWRpcihzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9jcmVhdGVfZmlsZShmaWxlbmFtZSk6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYidmb28nKQorICAgIGRlZiB0ZXN0X2lzZGlyX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgb3MubWtkaXIoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2lzZmlsZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgZGVmIHRlc3RfaXNmaWxlX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybWRpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIG9zLm1rZGlyKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKIAogICAgIGRlZiB0ZXN0X3NhbWVmaWxlKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4sIHRlc3RfZm4pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbikKKyAgICAgICAgZmlsZTEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBmaWxlMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZTIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUxKSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUoZmlsZTEsIGZpbGUyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSkKKworICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6CisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCisgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9zYW1lZmlsZV9vbl9zeW1saW5rKHNlbGYpOgpAQCAtMjA5LDMxICsyMTUsMzcgQEAKICAgICBkZWYgdGVzdF9zYW1lZmlsZV9vbl9saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhvcy5saW5rKQogCi0gICAgZGVmIF90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjEpCi0KLSAgICAgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjEpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KICAgICBkZWYgdGVzdF9zYW1lc3RhdChzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbiA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuKQotICAgICAgICAgICAgdGVzdF9mbnMgPSBbdGVzdF9mbl0qMgotICAgICAgICAgICAgc3RhdHMgPSBtYXAob3Muc3RhdCwgdGVzdF9mbnMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbikKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisgICAgICAgIHN0YXQxID0gb3Muc3RhdCh0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChzdGF0MSwgb3Muc3RhdCh0ZXN0X2ZuMSkpKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzdGF0MiA9IG9zLnN0YXQodGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KHN0YXQxLCBzdGF0MikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQpCisKKyAgICBkZWYgX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgorICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCisgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKKyAgICAgICAgZnVuYyh0ZXN0X2ZuMSwgdGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQob3Muc3RhdCh0ZXN0X2ZuMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCh0ZXN0X2ZuMikpKQorICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KG9zLnN0YXQodGVzdF9mbjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KHRlc3RfZm4yKSkpCiAKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfc2FtZXN0YXRfb25fc3ltbGluayhzZWxmKToKQEAgLTI0MiwzMSArMjU0LDE3IEBACiAgICAgZGVmIHRlc3Rfc2FtZXN0YXRfb25fbGluayhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMob3MubGluaykKIAotICAgIGRlZiBfdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQotICAgICAgICAgICAgdGVzdF9mbnMgPSAodGVzdF9mbjEsIHRlc3RfZm4yKQotICAgICAgICAgICAgZnVuYygqdGVzdF9mbnMpCi0gICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4xKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCiAgICAgZGVmIHRlc3Rfc2FtZW9wZW5maWxlKHNlbGYpOgotICAgICAgICBmbmFtZSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgIHdpdGggb3BlbihmbmFtZSwgIndiIikgYXMgYSwgb3BlbihmbmFtZSwgIndiIikgYXMgYjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZW9wZW5maWxlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLmZpbGVubygpLCBiLmZpbGVubygpKSkKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGZwMToKKyAgICAgICAgICAgIGZkMSA9IGZwMS5maWxlbm8oKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmcDI6CisgICAgICAgICAgICAgICAgZmQyID0gZnAyLmZpbGVubygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lb3BlbmZpbGUoZmQxLCBmZDIpKQorCiAKIGNsYXNzIFRlc3RHZW5lcmljVGVzdChHZW5lcmljVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgSXNzdWUgMTY4NTI6IEdlbmVyaWNUZXN0IGNhbid0IGluaGVyaXQgZnJvbSB1bml0dGVzdC5UZXN0Q2FzZQpAQCAtMzkwLDEwICszODgsMTMgQEAKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiImZvbyIsIHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKGIiZm9vIikpCiAKKyAgICAgICAgIyBhdm9pZCBVbmljb2RlRGVjb2RlRXJyb3Igb24gV2luZG93cworICAgICAgICB1bmRlY29kYWJsZV9wYXRoID0gYicnIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIGVsc2UgYidmXHhmMlx4ZjInCisKICAgICAgICAgIyBBYnNwYXRoIHJldHVybnMgYnl0ZXMgd2hlbiB0aGUgYXJnIGlzIGJ5dGVzCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gKGInJywgYidmb28nLCBiJ2ZceGYyXHhmMicsIGInL2ZvbycsIGInQzpcXCcpOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gKGInJywgYidmb28nLCB1bmRlY29kYWJsZV9wYXRoLCBiJy9mb28nLCBiJ0M6XFwnKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5wYXRobW9kdWxlLmFic3BhdGgocGF0aCksIGJ5dGVzKQogCiAgICAgZGVmIHRlc3RfcmVhbHBhdGgoc2VsZik6CkBAIC00NTIsMTYgKzQ1MywxNSBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgYidieXRlcycpCiAgICAgICAgICAgICAjIHJlZ3Jlc3Npb24sIHNlZSAjMTUzNzcKLSAgICAgICAgICAgIGVycm1zZyA9IHInam9pblwoXCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbig0MiwgJ3N0cicpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oJ3N0cicsIDQyKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2xpc3QnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdsaXN0Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oW10pCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnYnl0ZWFycmF5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnYnl0ZWFycmF5Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oYnl0ZWFycmF5KGInZm9vJyksIGJ5dGVhcnJheShiJ2JhcicpKQogCiAgICAgZGVmIHRlc3RfcmVscGF0aF9lcnJvcnMoc2VsZik6CkBAIC00NzMsMTQgKzQ3Myw1OSBAQAogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKGInYnl0ZXMnLCAnc3RyJykKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoJ3N0cicsIGInYnl0ZXMnKQotICAgICAgICAgICAgZXJybXNnID0gcidyZWxwYXRoXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKDQyLCAnc3RyJykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnYnl0ZWFycmF5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnYnl0ZWFycmF5Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYnl0ZWFycmF5KGInZm9vJyksIGJ5dGVhcnJheShiJ2JhcicpKQogCiAKK2NsYXNzIFBhdGhMaWtlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScnKToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX25hbWUgPSBzdXBwb3J0LlRFU1RGTi5sb3dlcigpCisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gc2VsZi5QYXRoTGlrZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoc2VsZi5maWxlX25hbWUsIGIidGVzdF9nZW5lcmljcGF0aC5QYXRoTGlrZVRlc3RzIikKKworICAgIGRlZiBhc3NlcnRQYXRoRXF1YWwoc2VsZiwgZnVuYyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyhzZWxmLmZpbGVfcGF0aCksIGZ1bmMoc2VsZi5maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfcGF0aF9leGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2ZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguaXNmaWxlKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2RpcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5pc2RpcikKKworICAgIGRlZiB0ZXN0X3BhdGhfY29tbW9ucHJlZml4KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguY29tbW9ucHJlZml4KFtzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWVdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZ2V0c2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRzaXplKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRtdGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRhdGltZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZ2V0Y3RpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZ2V0Y3RpbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NhbWVmaWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWUpKQorCisKIGlmIF9fbmFtZV9fPT0iX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKaW5kZXggOTg0YWFjNy4uOGExOTRhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CkBAIC01LDEwICs1LDYgQEAKICMgU2tpcCB0aGlzIHRlc3QgaWYgdGhlIF90ZXN0Y2FwaSBtb2R1bGUgaXNuJ3QgYXZhaWxhYmxlLgogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQogZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMsIGdldGFyZ3Nfa2V5d29yZF9vbmx5Ci10cnk6Ci0gICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfTCwgZ2V0YXJnc19LCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZ2V0YXJnc19MID0gTm9uZSAjIFBZX0xPTkdfTE9ORyBub3QgYXZhaWxhYmxlCiAKICMgPiBIb3cgYWJvdXQgdGhlIGZvbGxvd2luZyBjb3VudGVycHJvcG9zYWwuIFRoaXMgYWxzbyBjaGFuZ2VzIHNvbWUgb2YKICMgPiB0aGUgb3RoZXIgZm9ybWF0IGNvZGVzIHRvIGJlIGEgbGl0dGxlIG1vcmUgcmVndWxhci4KQEAgLTMwOSw3ICszMDUsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhcmdzX24sIFZFUllfTEFSR0UpCiAKIAotQHVuaXR0ZXN0LnNraXBJZihnZXRhcmdzX0wgaXMgTm9uZSwgJ1BZX0xPTkdfTE9ORyBpcyBub3QgYXZhaWxhYmxlJykKIGNsYXNzIExvbmdMb25nX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9MKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19MCkBAIC0zNjUsNyArMzYwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoRmxvYXRTdWJjbGFzcyg3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihGbG9hdFN1YmNsYXNzMig3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZiwgQmFkRmxvYXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQyKCkpLCA0LjI1KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEJhZEZsb2F0MigpKSwgNC4yNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQzKDcuNSkpLCA3LjUpCiAKICAgICAgICAgZm9yIHggaW4gKEZMVF9NSU4sIC1GTFRfTUlOLCBGTFRfTUFYLCAtRkxUX01BWCwgSU5GLCAtSU5GKToKQEAgLTM5MCw3ICszODYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChGbG9hdFN1YmNsYXNzKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEZsb2F0U3ViY2xhc3MyKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19kLCBCYWRGbG9hdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDIoKSksIDQuMjUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoQmFkRmxvYXQyKCkpLCA0LjI1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDMoNy41KSksIDcuNSkKIAogICAgICAgICBmb3IgeCBpbiAoREJMX01JTiwgLURCTF9NSU4sIERCTF9NQVgsIC1EQkxfTUFYLCBJTkYsIC1JTkYpOgpAQCAtNDc0LDcgKzQ3MSw3IEBACiAKICAgICAgICAgcmV0ID0gZ2V0X2FyZ3MoKlR1cGxlU3ViY2xhc3MoWzEsIDJdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsICgxLCAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldCwgdHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZXQpLCB0dXBsZSkKIAogICAgICAgICByZXQgPSBnZXRfYXJncygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmV0LCAoKCksIE5vbmUpKQpAQCAtNTEyLDcgKzUwOSw3IEBACiAKICAgICAgICAgcmV0ID0gZ2V0X2t3YXJncygqKkRpY3RTdWJjbGFzcyh7J2EnOiAxLCAnYic6IDJ9KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIHsnYSc6IDEsICdiJzogMn0pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXQsIGRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZXQpLCBkaWN0KQogCiAgICAgICAgIHJldCA9IGdldF9rd2FyZ3MoKQogICAgICAgICBzZWxmLmFzc2VydEluKHJldCwgKHt9LCBOb25lKSkKQEAgLTYyOCwyMCArNjI1LDIwIEBACiAgICAgICAgICAgICApCiAgICAgICAgICMgcmVxdWlyZWQgYXJnIG1pc3NpbmcKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIHIiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShvcHRpb25hbD0yKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICByIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoa2V5d29yZF9vbmx5PTMpCiAKICAgICBkZWYgdGVzdF90b29fbWFueV9hcmdzKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgzIGdpdmVuXCkiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJmdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDMgYXJndW1lbnRzIFwoNCBnaXZlblwpIik6CisgICAgICAgICAgICByImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMsIGtleXdvcmRfb25seT01KQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9rZXl3b3JkKHNlbGYpOgpAQCAtNjU2LDYgKzY1MywzOSBAQAogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgKip7J1x1REM4MCc6IDEwfSkKIAogCitjbGFzcyBQb3NpdGlvbmFsT25seUFuZEtleXdvcmRzX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzIGFzIGdldGFyZ3MKKworICAgIGRlZiB0ZXN0X3Bvc2l0aW9uYWxfYXJncyhzZWxmKToKKyAgICAgICAgIyB1c2luZyBhbGwgcG9zc2libGUgcG9zaXRpb25hbCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIsIDMpLCAoMSwgMiwgMykpCisKKyAgICBkZWYgdGVzdF9taXhlZF9hcmdzKHNlbGYpOgorICAgICAgICAjIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCAyLCBrZXl3b3JkPTMpLCAoMSwgMiwgMykpCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIG1pc3Npbmcgb3B0aW9uYWwgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCAyKSwgKDEsIDIsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwga2V5d29yZD0zKSwgKDEsIC0xLCAzKSkKKworICAgIGRlZiB0ZXN0X3JlcXVpcmVkX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEpLCAoMSwgLTEsIC0xKSkKKyAgICAgICAgIyByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZyBtaXNzaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCkiKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKGtleXdvcmQ9MykKKworICAgIGRlZiB0ZXN0X2VtcHR5X2tleXdvcmQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAiJycgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3MoMSwgMiwgKip7Jyc6IDY2Nn0pCisKKwogY2xhc3MgQnl0ZXNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Moc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2MKQEAgLTgyMiwxMCArODUyLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19lc19oYXNoKCdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZiksIGInYWJjXHhlOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYidhYmNceGU5XHgwMCcpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoYid4Jyo0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ3gnKjQpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKIAogICAgIGRlZiB0ZXN0X2V0X2hhc2goc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2V0X2hhc2gKQEAgLTg0OCwxMCArODc4LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19ldF9oYXNoKCdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZiksIGInYWJjXHhlOScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYidhYmNceGU5XHgwMCcpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoYid4Jyo0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ3gnKjQpKQogICAgICAgICBidWYgPSBieXRlYXJyYXkoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKIAogICAgIGRlZiB0ZXN0X3Uoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weSBiL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQppbmRleCBkZTYxMGM3Li5kMzQ1YmFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IG9zCiBpbXBvcnQgYmFzZTY0Ci1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2V0dGV4dAogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTQ0MCw2ICs0MzksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Ll9fY2xhc3NfXywgRHVtbXlHTlVUcmFuc2xhdGlvbnMpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnYzJweScsICdFTk9FTlQnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBnZXR0ZXh0LCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5IGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CmluZGV4IDE1NGUzYjYuLjAzZjJjODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKQEAgLTgsNiArOCw5NSBAQAogIyB0ZXN0aW5nIGltcG9ydCAqCiBmcm9tIHN5cyBpbXBvcnQgKgogCisjIGRpZmZlcmVudCBpbXBvcnQgcGF0dGVybnMgdG8gY2hlY2sgdGhhdCBfX2Fubm90YXRpb25zX18gZG9lcyBub3QgaW50ZXJmZXJlCisjIHdpdGggaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IHRlc3QuYW5uX21vZHVsZSBhcyBhbm5fbW9kdWxlCitpbXBvcnQgdHlwaW5nCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAorZnJvbSB0ZXN0IGltcG9ydCBhbm5fbW9kdWxlMgoraW1wb3J0IHRlc3QKKworIyBUaGVzZSBhcmUgc2hhcmVkIHdpdGggdGVzdF90b2tlbml6ZSBhbmQgb3RoZXIgdGVzdCBtb2R1bGVzLgorIworIyBOb3RlOiBzaW5jZSBzZXZlcmFsIHRlc3QgY2FzZXMgZmlsdGVyIG91dCBmbG9hdHMgYnkgbG9va2luZyBmb3IgImUiIGFuZCAiLiIsCisjIGRvbid0IGFkZCBoZXhhZGVjaW1hbCBsaXRlcmFscyB0aGF0IGNvbnRhaW4gImUiIG9yICJFIi4KK1ZBTElEX1VOREVSU0NPUkVfTElURVJBTFMgPSBbCisgICAgJzBfMF8wJywKKyAgICAnNF8yJywKKyAgICAnMV8wMDAwXzAwMDAnLAorICAgICcwYjEwMDFfMDEwMCcsCisgICAgJzB4ZmZmZl9mZmZmJywKKyAgICAnMG81XzdfNycsCisgICAgJzFfMDBfMDAuNScsCisgICAgJzFfMDBfMDAuNWU1JywKKyAgICAnMV8wMF8wMGU1XzEnLAorICAgICcxZTFfMCcsCisgICAgJy4xXzQnLAorICAgICcuMV80ZTEnLAorICAgICcwYl8wJywKKyAgICAnMHhfZicsCisgICAgJzBvXzUnLAorICAgICcxXzAwXzAwaicsCisgICAgJzFfMDBfMDAuNWonLAorICAgICcxXzAwXzAwZTVfMWonLAorICAgICcuMV80aicsCisgICAgJygxXzIuNSszXzNqKScsCisgICAgJyguNV82aiknLAorXQorSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTID0gWworICAgICMgVHJhaWxpbmcgdW5kZXJzY29yZXM6CisgICAgJzBfJywKKyAgICAnNDJfJywKKyAgICAnMS40al8nLAorICAgICcweF8nLAorICAgICcwYjFfJywKKyAgICAnMHhmXycsCisgICAgJzBvNV8nLAorICAgICcwIGlmIDFfRWxzZSAxJywKKyAgICAjIFVuZGVyc2NvcmVzIGluIHRoZSBiYXNlIHNlbGVjdG9yOgorICAgICcwX2IwJywKKyAgICAnMF94ZicsCisgICAgJzBfbzUnLAorICAgICMgT2xkLXN0eWxlIG9jdGFsLCBzdGlsbCBkaXNhbGxvd2VkOgorICAgICcwXzcnLAorICAgICcwOV85OScsCisgICAgIyBNdWx0aXBsZSBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlczoKKyAgICAnNF9fX19fX18yJywKKyAgICAnMC4xX180JywKKyAgICAnMC4xX180aicsCisgICAgJzBiMTAwMV9fMDEwMCcsCisgICAgJzB4ZmZmZl9fZmZmZicsCisgICAgJzB4X19fJywKKyAgICAnMG81X183NycsCisgICAgJzFlMV9fMCcsCisgICAgJzFlMV9fMGonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgYSBkb3Q6CisgICAgJzFfLjQnLAorICAgICcxXy40aicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGFmdGVyIGEgZG90OgorICAgICcxLl80JywKKyAgICAnMS5fNGonLAorICAgICcuXzUnLAorICAgICcuXzVqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgYSBzaWduOgorICAgICcxLjBlK18xJywKKyAgICAnMS4wZStfMWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgajoKKyAgICAnMS40X2onLAorICAgICcxLjRlNV9qJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYmVmb3JlIGU6CisgICAgJzFfZTEnLAorICAgICcxLjRfZTEnLAorICAgICcxLjRfZTFqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgZToKKyAgICAnMWVfMScsCisgICAgJzEuNGVfMScsCisgICAgJzEuNGVfMWonLAorICAgICMgQ29tcGxleCBjYXNlcyB3aXRoIHBhcmVuczoKKyAgICAnKDErMS41X2pfKScsCisgICAgJygxKzEuNV9qKScsCitdCisKIAogY2xhc3MgVG9rZW5UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg3LDYgKzE3NiwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEgaWYgMGVsc2UgMCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIwIGlmIDFFbHNlIDAiKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZV9saXRlcmFscyhzZWxmKToKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGxpdCksIGV2YWwobGl0LnJlcGxhY2UoJ18nLCAnJykpKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCBsaXQpCisgICAgICAgICMgU2FuaXR5IGNoZWNrOiBubyBsaXRlcmFsIGJlZ2lucyB3aXRoIGFuIHVuZGVyc2NvcmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yLCBldmFsLCAiXzAiKQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICB4ID0gJyc7IHkgPSAiIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAwIGFuZCB4ID09IHkpCiAgICAgICAgIHggPSAnXCcnOyB5ID0gIiciOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDEgYW5kIHggPT0geSBhbmQgb3JkKHgpID09IDM5KQpAQCAtMTM5LDYgKzIzNiwxOSBAQAogICAgICAgICAgICAgICAgIGNvbXBpbGUocywgIjx0ZXN0PiIsICJleGVjIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVuZXhwZWN0ZWQgRU9GIiwgc3RyKGNtLmV4Y2VwdGlvbikpCiAKK3Zhcl9hbm5vdF9nbG9iYWw6IGludCAjIGEgZ2xvYmFsIGFubm90YXRlZCBpcyBuZWNlc3NhcnkgZm9yIHRlc3RfdmFyX2Fubm90CisKKyMgY3VzdG9tIG5hbWVzcGFjZSBmb3IgdGVzdGluZyBfX2Fubm90YXRpb25zX18KKworY2xhc3MgQ05TOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fZGN0ID0ge30KKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICBzZWxmLl9kY3RbaXRlbS5sb3dlcigpXSA9IHZhbHVlCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisKKwogY2xhc3MgR3JhbW1hclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgc2luZ2xlX2lucHV0OiBORVdMSU5FIHwgc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10IE5FV0xJTkUKQEAgLTE1NCw2ICsyNjQsMTYzIEBACiAgICAgICAgICMgdGVzdGxpc3QgRU5ETUFSS0VSCiAgICAgICAgIHggPSBldmFsKCcxLCAwIG9yIDEnKQogCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgIyBhbGwgdGhlc2Ugc2hvdWxkIGJlIGFsbG93ZWQKKyAgICAgICAgdmFyMTogaW50ID0gNQorICAgICAgICB2YXIyOiBbaW50LCBzdHJdCisgICAgICAgIG15X2xzdCA9IFs0Ml0KKyAgICAgICAgZGVmIG9uZSgpOgorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgaW50Lm5ld19hdHRyOiBpbnQKKyAgICAgICAgW2xpc3RdWzBdOiB0eXBlCisgICAgICAgIG15X2xzdFtvbmUoKS0xXTogaW50ID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X2xzdCwgWzVdKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3N5bnRheF9lcnJvcnMoc2VsZik6CisgICAgICAgICMgcGFyc2VyIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZjogaW50IikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4OiBpbnQ6IHN0ciIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgbm9ubG9jYWwgeDogaW50XG4iKQorICAgICAgICAjIEFTVCBwYXNzCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiW3gsIDBdOiBpbnRcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigpOiBpbnRcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiKHgsKTogaW50IikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAoeCwgeSk6IGludCA9ICgxLCAyKVxuIikKKyAgICAgICAgIyBzeW10YWJsZSBwYXNzCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsb2JhbCB4XG4iKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGdsb2JhbCB4XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIikKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9iYXNpY19zZW1hbnRpY3Moc2VsZik6CisgICAgICAgICMgZXhlY3V0aW9uIG9yZGVyCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgbm9fbmFtZVtkb2VzX25vdF9leGlzdF06IG5vX25hbWVfYWdhaW4gPSAxLzAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgbm9fbmFtZVtkb2VzX25vdF9leGlzdF06IDEvMCA9IDAKKyAgICAgICAgZ2xvYmFsIHZhcl9hbm5vdF9nbG9iYWwKKworICAgICAgICAjIGZ1bmN0aW9uIHNlbWFudGljcworICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgc3Q6IHN0ciA9ICJIZWxsbyIKKyAgICAgICAgICAgIGEuYjogaW50ID0gKDEsIDIpCisgICAgICAgICAgICByZXR1cm4gc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9fYW5ub3RhdGlvbnNfXywge30pCisgICAgICAgIGRlZiBmX09LKCk6CisgICAgICAgICAgICB4OiAxLzAKKyAgICAgICAgZl9PSygpCisgICAgICAgIGRlZiBmYmFkKCk6CisgICAgICAgICAgICB4OiBpbnQKKyAgICAgICAgICAgIHByaW50KHgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5ib3VuZExvY2FsRXJyb3IpOgorICAgICAgICAgICAgZmJhZCgpCisgICAgICAgIGRlZiBmMmJhZCgpOgorICAgICAgICAgICAgKG5vX3N1Y2hfZ2xvYmFsKTogaW50CisgICAgICAgICAgICBwcmludChub19zdWNoX2dsb2JhbCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZjJiYWQoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIE5hbWVFcnJvcikKKworICAgICAgICAjIGNsYXNzIHNlbWFudGljcworICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgX19mb286IGludAorICAgICAgICAgICAgczogc3RyID0gImF0dHIiCisgICAgICAgICAgICB6ID0gMgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHNlbGYueDogaW50ID0geAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19hbm5vdGF0aW9uc19fLCB7J19DX19mb28nOiBpbnQsICdzJzogc3RyfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQ0JhZDoKKyAgICAgICAgICAgICAgICBub19zdWNoX25hbWVfZGVmaW5lZC5hdHRyOiBpbnQgPSAwCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIENiYWQyKEMpOgorICAgICAgICAgICAgICAgIHg6IGludAorICAgICAgICAgICAgICAgIHgueTogbGlzdCA9IFtdCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfbWV0YWNsYXNzX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQ01ldGEodHlwZSk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKToKKyAgICAgICAgICAgICAgICByZXR1cm4geydfX2Fubm90YXRpb25zX18nOiBDTlMoKX0KKyAgICAgICAgY2xhc3MgQ0MobWV0YWNsYXNzPUNNZXRhKToKKyAgICAgICAgICAgIFhYOiAnQU5OT1QnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ0MuX19hbm5vdGF0aW9uc19fWyd4eCddLCAnQU5OT1QnKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X21vZHVsZV9zZW1hbnRpY3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcHJpbnQodGVzdC5fX2Fubm90YXRpb25zX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZS5fX2Fubm90YXRpb25zX18sCisgICAgICAgICAgICAgICAgICAgICB7MTogMiwgJ3gnOiBpbnQsICd5Jzogc3RyLCAnZic6IHR5cGluZy5UdXBsZVtpbnQsIGludF19KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUuTS5fX2Fubm90YXRpb25zX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7JzEyMyc6IDEyMywgJ28nOiB0eXBlfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlMi5fX2Fubm90YXRpb25zX18sIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGluZy5nZXRfdHlwZV9oaW50cyhhbm5fbW9kdWxlMi5DViwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5uX21vZHVsZTIuX19kaWN0X18pLAorICAgICAgICAgICAgICAgICAgICAgICAgIENoYWluTWFwKHsndmFyJzogdHlwaW5nLkNsYXNzVmFyW2Fubl9tb2R1bGUyLkNWXX0sIHt9KSkKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9pbl9tb2R1bGUoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBmdW5jdGlvbnMgZmFpbCB0aGUgc2FtZSB3YXkgd2hlbiBleGVjdXRlZAorICAgICAgICAjIG91dHNpZGUgb2YgbW9kdWxlIHdoZXJlIHRoZXkgd2VyZSBkZWZpbmVkCisgICAgICAgIGZyb20gdGVzdC5hbm5fbW9kdWxlMyBpbXBvcnQgZl9iYWRfYW5uLCBnX2JhZF9hbm4sIERfYmFkX2FubgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBmX2JhZF9hbm4oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBnX2JhZF9hbm4oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBEX2JhZF9hbm4oNSkKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9zaW1wbGVfZXhlYyhzZWxmKToKKyAgICAgICAgZ25zID0ge307IGxucz0ge30KKyAgICAgICAgZXhlYygiJ2RvY3N0cmluZydcbiIKKyAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fWzFdID0gMlxuIgorICAgICAgICAgICAgICJ4OiBpbnQgPSA1XG4iLCBnbnMsIGxucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsbnNbIl9fYW5ub3RhdGlvbnNfXyJdLCB7MTogMiwgJ3gnOiBpbnR9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGduc1snX19hbm5vdGF0aW9uc19fJ10KKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9jdXN0b21fbWFwcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0cyB3aXRoIGN1c3RvbSBsb2NhbHMoKSBhbmQgX19hbm5vdGF0aW9uc19fCisgICAgICAgIG5zID0geydfX2Fubm90YXRpb25zX18nOiBDTlMoKX0KKyAgICAgICAgZXhlYygnWDogaW50OyBaOiBzdHIgPSAiWiI7ICh3KTogY29tcGxleCA9IDFqJywgbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc1snX19hbm5vdGF0aW9uc19fJ11bJ3onXSwgc3RyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIG5zWydfX2Fubm90YXRpb25zX18nXVsndyddCisgICAgICAgIG5vbmxvY19ucyA9IHt9CisgICAgICAgIGNsYXNzIENOUzI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5fZGN0ID0ge30KKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbm9ubG9jX25zCisgICAgICAgICAgICAgICAgc2VsZi5fZGN0W2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBub25sb2NfbnNbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKyAgICAgICAgZXhlYygneDogaW50ID0gMScsIHt9LCBDTlMyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ubG9jX25zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBpbnQpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfcmVmbGVhayhzZWxmKToKKyAgICAgICAgIyBjb21wbGV4IGNhc2U6IGN1c3RvbSBsb2NhbHMgcGx1cyBjdXN0b20gX19hbm5vdGF0aW9uc19fCisgICAgICAgICMgdGhpcyB3YXMgY2F1c2luZyByZWZsZWFrCisgICAgICAgIGNucyA9IENOUygpCisgICAgICAgIG5vbmxvY19ucyA9IHsnX19hbm5vdGF0aW9uc19fJzogY25zfQorICAgICAgICBjbGFzcyBDTlMyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RjdCA9IHsnX19hbm5vdGF0aW9uc19fJzogY25zfQorICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGl0ZW0sIHZhbHVlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBub25sb2NfbnMKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3RbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIG5vbmxvY19uc1tpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RjdFtpdGVtXQorICAgICAgICBleGVjKCdYOiBzdHInLCB7fSwgQ05TMigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vbmxvY19uc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgc3RyKQorCiAgICAgZGVmIHRlc3RfZnVuY2RlZihzZWxmKToKICAgICAgICAgIyMjIFtkZWNvcmF0b3JzXSAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAgICAgICAgICMjIyBkZWNvcmF0b3I6ICdAJyBkb3R0ZWRfbmFtZSBbICcoJyBbYXJnbGlzdF0gJyknIF0gTkVXTElORQpAQCAtMjk1LDYgKzU2MiwxMCBAQAogICAgICAgICBwb3Mya2V5MmRpY3QoMSwyLGsyPTEwMCx0b2t3YXJnMT0xMDAsdG9rd2FyZzI9MjAwKQogICAgICAgICBwb3Mya2V5MmRpY3QoMSwyLHRva3dhcmcxPTEwMCx0b2t3YXJnMj0yMDAsIGsyPTEwMCkKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImRlZiBmKCopOiBwYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqLCk6IHBhc3MiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImRlZiBmKCosICoqa3dkcyk6IHBhc3MiKQorCiAgICAgICAgICMga2V5d29yZCBhcmd1bWVudHMgYWZ0ZXIgKmFyZ2xpc3QKICAgICAgICAgZGVmIGYoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKQEAgLTM0MSw3ICs2MTIsNyBAQAogICAgICAgICBkZWYgZih4KSAtPiBsaXN0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fX2Fubm90YXRpb25zX18sIHsncmV0dXJuJzogbGlzdH0pCiAKLSAgICAgICAgIyB0ZXN0IE1BS0VfQ0xPU1VSRSB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCisgICAgICAgICMgdGVzdCBjbG9zdXJlcyB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZ3MKICAgICAgICAgY2xvc3VyZSA9IDEKICAgICAgICAgZGVmIGYoKTogcmV0dXJuIGNsb3N1cmUKICAgICAgICAgZGVmIGYoeD0xKTogcmV0dXJuIGNsb3N1cmUKQEAgLTM1Miw2ICs2MjMsMjMgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCpnKDE9MikpIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCoqZygxPTIpKSIpCiAKKyAgICAgICAgIyBDaGVjayB0cmFpbGluZyBjb21tYXMgYXJlIHBlcm1pdHRlZCBpbiBmdW5jZGVmIGFyZ3VtZW50IGxpc3QKKyAgICAgICAgZGVmIGYoYSwpOiBwYXNzCisgICAgICAgIGRlZiBmKCphcmdzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKCosIGIsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsIGIsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKCphcmdzLCBiLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqLCBiLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqYXJncywgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiwgYiwgKiprd2RzLCk6IHBhc3MKKwogICAgIGRlZiB0ZXN0X2xhbWJkZWYoc2VsZik6CiAgICAgICAgICMjIyBsYW1iZGVmOiAnbGFtYmRhJyBbdmFyYXJnc2xpc3RdICc6JyB0ZXN0CiAgICAgICAgIGwxID0gbGFtYmRhIDogMApAQCAtMzcwLDYgKzY1OCwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGw2KDEsMiksIDErMisyMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsNigxLDIsaz0xMCksIDErMisxMCkKIAorICAgICAgICAjIGNoZWNrIHRoYXQgdHJhaWxpbmcgY29tbWFzIGFyZSBwZXJtaXR0ZWQKKyAgICAgICAgbDEwID0gbGFtYmRhIGEsOiAwCisgICAgICAgIGwxMSA9IGxhbWJkYSAqYXJncyw6IDAKKyAgICAgICAgbDEyID0gbGFtYmRhICoqa3dkcyw6IDAKKyAgICAgICAgbDEzID0gbGFtYmRhIGEsICphcmdzLDogMAorICAgICAgICBsMTQgPSBsYW1iZGEgYSwgKiprd2RzLDogMAorICAgICAgICBsMTUgPSBsYW1iZGEgKmFyZ3MsIGIsOiAwCisgICAgICAgIGwxNiA9IGxhbWJkYSAqLCBiLDogMAorICAgICAgICBsMTcgPSBsYW1iZGEgKmFyZ3MsICoqa3dkcyw6IDAKKyAgICAgICAgbDE4ID0gbGFtYmRhIGEsICphcmdzLCBiLDogMAorICAgICAgICBsMTkgPSBsYW1iZGEgYSwgKiwgYiw6IDAKKyAgICAgICAgbDIwID0gbGFtYmRhIGEsICphcmdzLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyMSA9IGxhbWJkYSAqYXJncywgYiwgKiprd2RzLDogMAorICAgICAgICBsMjIgPSBsYW1iZGEgKiwgYiwgKiprd2RzLDogMAorICAgICAgICBsMjMgPSBsYW1iZGEgYSwgKmFyZ3MsIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDI0ID0gbGFtYmRhIGEsICosIGIsICoqa3dkcyw6IDAKKwogCiAgICAgIyMjIHN0bXQ6IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CkBAIC0xMDQwLDE4ICsxMzQ1LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm90aGVyLCA0MikKIAogICAgIGRlZiB0ZXN0X2FzeW5jX2F3YWl0KHNlbGYpOgotICAgICAgICBhc3luYyA9IDEKLSAgICAgICAgYXdhaXQgPSAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmMsIDEpCi0KLSAgICAgICAgZGVmIGFzeW5jKCk6Ci0gICAgICAgICAgICBub25sb2NhbCBhd2FpdAotICAgICAgICAgICAgYXdhaXQgPSAxMAotICAgICAgICBhc3luYygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQsIDEwKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYm9vbChhc3luYy5fX2NvZGVfXy5jb19mbGFncyAmIGluc3BlY3QuQ09fQ09ST1VUSU5FKSkKLQogICAgICAgICBhc3luYyBkZWYgdGVzdCgpOgogICAgICAgICAgICAgZGVmIHN1bSgpOgogICAgICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5IGIvTGliL3Rlc3QvdGVzdF9ncnAucHkKaW5kZXggMjcyYjA4Ni4uNjkwOTVhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncnAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncnAucHkKQEAgLTkyLDUgKzkyLDE1IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGdycC5nZXRncmdpZCwgZmFrZWdpZCkKIAorICAgIGRlZiB0ZXN0X25vbmludGVnZXJfZ2lkKHNlbGYpOgorICAgICAgICBlbnRyaWVzID0gZ3JwLmdldGdyYWxsKCkKKyAgICAgICAgaWYgbm90IGVudHJpZXM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdubyBncm91cHMnKQorICAgICAgICAjIENob29zZSBhbiBleGlzdGVudCBnaWQuCisgICAgICAgIGdpZCA9IGVudHJpZXNbMF1bMl0KKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIGdycC5nZXRncmdpZCwgZmxvYXQoZ2lkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIGdycC5nZXRncmdpZCwgc3RyKGdpZCkpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCAzYzUxNjczLi5iNDU3YmQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgYmlnbWVtdGVzdCwgXzRHCiBpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgaW8KIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBhcnJheQpAQCAtNjcsNiArNjgsMTggQEAKICAgICAgICAgIyBUZXN0IG11bHRpcGxlIGNsb3NlKCkgY2FsbHMuCiAgICAgICAgIGYuY2xvc2UoKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfcmVhZF93aXRoX3BhdGhsaWtlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKHNlbGYuZmlsZW5hbWUpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSAqIDUwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZi5uYW1lLCBzdHIpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSwgJ2EnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKGZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgZCA9IGYucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZGF0YTEgKiA1MSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYubmFtZSwgc3RyKQorCiAgICAgIyBUaGUgZm9sbG93aW5nIHRlc3Rfd3JpdGVfeHkgbWV0aG9kcyB0ZXN0IHRoYXQgd3JpdGUgYWNjZXB0cwogICAgICMgdGhlIGNvcnJlc3BvbmRpbmcgYnl0ZXMtbGlrZSBvYmplY3QgdHlwZSBhcyBpbnB1dAogICAgICMgYW5kIHRoYXQgdGhlIGRhdGEgd3JpdHRlbiBlcXVhbHMgYnl0ZXMoeHkpIGluIGFsbCBjYXNlcy4KQEAgLTQzNCwxMiArNDQ3LDEyIEBACiAKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gZ3ppcC5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgYm9tYiA9IGd6aXAuY29tcHJlc3MoYidcMCcgKiBpbnQoMmU2KSwgY29tcHJlc3NsZXZlbD05KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBpby5ERUZBVUxUX0JVRkZFUl9TSVpFKQogCiAgICAgICAgIGJvbWIgPSBpby5CeXRlc0lPKGJvbWIpCiAgICAgICAgIGRlY29tcCA9IGd6aXAuR3ppcEZpbGUoZmlsZW9iaj1ib21iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvbXAucmVhZCgxKSwgYidcMCcpCiAgICAgICAgIG1heF9kZWNvbXAgPSAxICsgaW8uREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAogICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKQEAgLTUyMSw2ICs1MzQsMTUgQEAKICAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQpCiAKKyAgICBkZWYgdGVzdF9wYXRobGlrZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIGd6aXAub3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUsICJhYiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExKQorICAgICAgICB3aXRoIGd6aXAub3BlbihmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGRhdGExICogNTEpCisKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgogICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMSAqIDUwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKaW5kZXggYzliMTEzZS4uZjc0OGI0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQpAQCAtNyw2ICs3LDcgQEAKICMKIAogaW1wb3J0IGFycmF5Citmcm9tIGJpbmFzY2lpIGltcG9ydCB1bmhleGxpZnkKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgb3MKQEAgLTE5LDYgKzIwLDcgQEAKIGltcG9ydCB3YXJuaW5ncwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgXzRHLCBiaWdtZW10ZXN0LCBpbXBvcnRfZnJlc2hfbW9kdWxlCitmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCiAKICMgV2VyZSB3ZSBjb21waWxlZCAtLXdpdGgtcHlkZWJ1ZyBvciB3aXRoICNkZWZpbmUgUHlfREVCVUc/CiBDT01QSUxFRF9XSVRIX1BZREVCVUcgPSBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKQpAQCAtMjYsNiArMjgsMjEgQEAKIGNfaGFzaGxpYiA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2hhc2hsaWInLCBmcmVzaD1bJ19oYXNobGliJ10pCiBweV9oYXNobGliID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnaGFzaGxpYicsIGJsb2NrZWQ9WydfaGFzaGxpYiddKQogCit0cnk6CisgICAgaW1wb3J0IF9ibGFrZTIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfYmxha2UyID0gTm9uZQorCityZXF1aXJlc19ibGFrZTIgPSB1bml0dGVzdC5za2lwVW5sZXNzKF9ibGFrZTIsICdyZXF1aXJlcyBfYmxha2UyJykKKwordHJ5OgorICAgIGltcG9ydCBfc2hhMworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9zaGEzID0gTm9uZQorCityZXF1aXJlc19zaGEzID0gdW5pdHRlc3Quc2tpcFVubGVzcyhfc2hhMywgJ3JlcXVpcmVzIF9zaGEzJykKKworCiBkZWYgaGV4c3RyKHMpOgogICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIGJ5dGVzKSwgcmVwcihzKQogICAgIGggPSAiMDEyMzQ1Njc4OWFiY2RlZiIKQEAgLTM1LDEwICs1MiwzMyBAQAogICAgIHJldHVybiByCiAKIAorVVJMID0gImh0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvaGFzaGxpYi97fS50eHQiCisKK2RlZiByZWFkX3ZlY3RvcnMoaGFzaF9uYW1lKToKKyAgICB1cmwgPSBVUkwuZm9ybWF0KGhhc2hfbmFtZSkKKyAgICB0cnk6CisgICAgICAgIHRlc3RkYXRhID0gc3VwcG9ydC5vcGVuX3VybHJlc291cmNlKHVybCkKKyAgICBleGNlcHQgKE9TRXJyb3IsIEhUVFBFeGNlcHRpb24pOgorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiQ291bGQgbm90IHJldHJpZXZlIHt9Ii5mb3JtYXQodXJsKSkKKyAgICB3aXRoIHRlc3RkYXRhOgorICAgICAgICBmb3IgbGluZSBpbiB0ZXN0ZGF0YToKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpIG9yIG5vdCBsaW5lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBwYXJ0cyA9IGxpbmUuc3BsaXQoJywnKQorICAgICAgICAgICAgcGFydHNbMF0gPSBieXRlcy5mcm9taGV4KHBhcnRzWzBdKQorICAgICAgICAgICAgeWllbGQgcGFydHMKKworCiBjbGFzcyBIYXNoTGliVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHN1cHBvcnRlZF9oYXNoX25hbWVzID0gKCAnbWQ1JywgJ01ENScsICdzaGExJywgJ1NIQTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMjI0JywgJ1NIQTIyNCcsICdzaGEyNTYnLCAnU0hBMjU2JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTM4NCcsICdTSEEzODQnLCAnc2hhNTEyJywgJ1NIQTUxMicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmxha2UyYicsICdibGFrZTJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnKQorCisgICAgc2hha2VzID0geydzaGFrZV8xMjgnLCAnc2hha2VfMjU2J30KIAogICAgICMgSXNzdWUgIzE0NjkzOiBmYWxsYmFjayBtb2R1bGVzIGFyZSBhbHdheXMgY29tcGlsZWQgdW5kZXIgUE9TSVgKICAgICBfd2Fybl9vbl9leHRlbnNpb25faW1wb3J0ID0gb3MubmFtZSA9PSAncG9zaXgnIG9yIENPTVBJTEVEX1dJVEhfUFlERUJVRwpAQCAtNTYsNiArOTYsMTEgQEAKICAgICAgICAgYWxnb3JpdGhtcyA9IHNldCgpCiAgICAgICAgIGZvciBhbGdvcml0aG0gaW4gc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lczoKICAgICAgICAgICAgIGFsZ29yaXRobXMuYWRkKGFsZ29yaXRobS5sb3dlcigpKQorCisgICAgICAgIF9ibGFrZTIgPSBzZWxmLl9jb25kaXRpb25hbF9pbXBvcnRfbW9kdWxlKCdfYmxha2UyJykKKyAgICAgICAgaWYgX2JsYWtlMjoKKyAgICAgICAgICAgIGFsZ29yaXRobXMudXBkYXRlKHsnYmxha2UyYicsICdibGFrZTJzJ30pCisKICAgICAgICAgc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdCA9IHt9CiAgICAgICAgIGZvciBhbGdvcml0aG0gaW4gYWxnb3JpdGhtczoKICAgICAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbYWxnb3JpdGhtXSA9IHNldCgpCkBAIC02NCwxMCArMTA5LDEwIEBACiAgICAgICAgICMgb2YgaGFzaGxpYi5uZXcgZ2l2ZW4gdGhlIGFsZ29yaXRobSBuYW1lLgogICAgICAgICBmb3IgYWxnb3JpdGhtLCBjb25zdHJ1Y3RvcnMgaW4gc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdC5pdGVtcygpOgogICAgICAgICAgICAgY29uc3RydWN0b3JzLmFkZChnZXRhdHRyKGhhc2hsaWIsIGFsZ29yaXRobSkpCi0gICAgICAgICAgICBkZWYgX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldyhkYXRhPU5vbmUsIF9hbGc9YWxnb3JpdGhtKToKKyAgICAgICAgICAgIGRlZiBfdGVzdF9hbGdvcml0aG1fdmlhX2hhc2hsaWJfbmV3KGRhdGE9Tm9uZSwgX2FsZz1hbGdvcml0aG0sICoqa3dhcmdzKToKICAgICAgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnKQotICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCBkYXRhKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsIGRhdGEsICoqa3dhcmdzKQogICAgICAgICAgICAgY29uc3RydWN0b3JzLmFkZChfdGVzdF9hbGdvcml0aG1fdmlhX2hhc2hsaWJfbmV3KQogCiAgICAgICAgIF9oYXNobGliID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX2hhc2hsaWInKQpAQCAtOTksNiArMTQ0LDE4IEBACiAgICAgICAgIGlmIF9zaGE1MTI6CiAgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhMzg0JykKICAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGE1MTInKQorICAgICAgICBpZiBfYmxha2UyOgorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ2JsYWtlMnMnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ2JsYWtlMmInKQorCisgICAgICAgIF9zaGEzID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX3NoYTMnKQorICAgICAgICBpZiBfc2hhMzoKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzIyNCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18yNTYnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMzg0JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzUxMicpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hha2VfMTI4JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGFrZV8yNTYnKQogCiAgICAgICAgIHN1cGVyKEhhc2hMaWJUZXN0Q2FzZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogCkBAIC0xMTEsNyArMTY4LDEwIEBACiAgICAgICAgIGEgPSBhcnJheS5hcnJheSgiYiIsIHJhbmdlKDEwKSkKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGMgPSBjb25zKGEpCi0gICAgICAgICAgICBjLmhleGRpZ2VzdCgpCisgICAgICAgICAgICBpZiBjLm5hbWUgaW4gc2VsZi5zaGFrZXM6CisgICAgICAgICAgICAgICAgYy5oZXhkaWdlc3QoMTYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGMuaGV4ZGlnZXN0KCkKIAogICAgIGRlZiB0ZXN0X2FsZ29yaXRobXNfZ3VhcmFudGVlZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNobGliLmFsZ29yaXRobXNfZ3VhcmFudGVlZCwKQEAgLTE1NSwxNCArMjE1LDIxIEBACiAgICAgZGVmIHRlc3RfaGV4ZGlnZXN0KHNlbGYpOgogICAgICAgICBmb3IgY29ucyBpbiBzZWxmLmhhc2hfY29uc3RydWN0b3JzOgogICAgICAgICAgICAgaCA9IGNvbnMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KCksIGJ5dGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZXhzdHIoaC5kaWdlc3QoKSksIGguaGV4ZGlnZXN0KCkpCisgICAgICAgICAgICBpZiBoLm5hbWUgaW4gc2VsZi5zaGFrZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KDE2KSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZXhzdHIoaC5kaWdlc3QoMTYpKSwgaC5oZXhkaWdlc3QoMTYpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kaWdlc3QoKSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZXhzdHIoaC5kaWdlc3QoKSksIGguaGV4ZGlnZXN0KCkpCiAKICAgICBkZWYgdGVzdF9uYW1lX2F0dHJpYnV0ZShzZWxmKToKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGggPSBjb25zKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLm5hbWUsIHN0cikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQorICAgICAgICAgICAgaWYgaC5uYW1lIGluIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihoLm5hbWUsIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsIGhhc2hsaWIubmV3KGgubmFtZSkubmFtZSkKIAogICAgIGRlZiB0ZXN0X2xhcmdlX3VwZGF0ZShzZWxmKToKQEAgLTE3Nyw0MCArMjQ0LDQ2IEBACiAgICAgICAgICAgICBtMS51cGRhdGUoYmVlcykKICAgICAgICAgICAgIG0xLnVwZGF0ZShjZWVzKQogICAgICAgICAgICAgbTEudXBkYXRlKGRlZXMpCisgICAgICAgICAgICBpZiBtMS5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoMTYsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzID0gKCkKIAogICAgICAgICAgICAgbTIgPSBjb25zKCkKICAgICAgICAgICAgIG0yLnVwZGF0ZShhYXMgKyBiZWVzICsgY2VlcyArIGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtMi5kaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTIuZGlnZXN0KCphcmdzKSkKIAogICAgICAgICAgICAgbTMgPSBjb25zKGFhcyArIGJlZXMgKyBjZWVzICsgZGVlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCksIG0zLmRpZ2VzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKmFyZ3MpLCBtMy5kaWdlc3QoKmFyZ3MpKQogCiAgICAgICAgICAgICAjIHZlcmlmeSBjb3B5KCkgZG9lc24ndCB0b3VjaCBvcmlnaW5hbAogICAgICAgICAgICAgbTQgPSBjb25zKGFhcyArIGJlZXMgKyBjZWVzKQotICAgICAgICAgICAgbTRfZGlnZXN0ID0gbTQuZGlnZXN0KCkKKyAgICAgICAgICAgIG00X2RpZ2VzdCA9IG00LmRpZ2VzdCgqYXJncykKICAgICAgICAgICAgIG00X2NvcHkgPSBtNC5jb3B5KCkKICAgICAgICAgICAgIG00X2NvcHkudXBkYXRlKGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtNF9jb3B5LmRpZ2VzdCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtNC5kaWdlc3QoKSwgbTRfZGlnZXN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKmFyZ3MpLCBtNF9jb3B5LmRpZ2VzdCgqYXJncykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG00LmRpZ2VzdCgqYXJncyksIG00X2RpZ2VzdCkKIAotICAgIGRlZiBjaGVjayhzZWxmLCBuYW1lLCBkYXRhLCBoZXhkaWdlc3QpOgorICAgIGRlZiBjaGVjayhzZWxmLCBuYW1lLCBkYXRhLCBoZXhkaWdlc3QsIHNoYWtlPUZhbHNlLCAqKmt3YXJncyk6CisgICAgICAgIGxlbmd0aCA9IGxlbihoZXhkaWdlc3QpLy8yCiAgICAgICAgIGhleGRpZ2VzdCA9IGhleGRpZ2VzdC5sb3dlcigpCiAgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KICAgICAgICAgIyAyIGlzIGZvciBoYXNobGliLm5hbWUoLi4uKSBhbmQgaGFzaGxpYi5uZXcobmFtZSwgLi4uKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4oY29uc3RydWN0b3JzKSwgMikKICAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKLSAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcihkYXRhKQotICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmhleGRpZ2VzdCgpCisgICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoZGF0YSwgKiprd2FyZ3MpCisgICAgICAgICAgICBjb21wdXRlZCA9IG0uaGV4ZGlnZXN0KCkgaWYgbm90IHNoYWtlIGVsc2UgbS5oZXhkaWdlc3QobGVuZ3RoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQsIGhleGRpZ2VzdCwKICAgICAgICAgICAgICAgICAgICAgIkhhc2ggYWxnb3JpdGhtICVzIGNvbnN0cnVjdGVkIHVzaW5nICVzIHJldHVybmVkIGhleGRpZ2VzdCIKICAgICAgICAgICAgICAgICAgICAgIiAlciBmb3IgJWQgYnl0ZSBpbnB1dCBkYXRhIHRoYXQgc2hvdWxkIGhhdmUgaGFzaGVkIHRvICVyLiIKICAgICAgICAgICAgICAgICAgICAgJSAobmFtZSwgaGFzaF9vYmplY3RfY29uc3RydWN0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkLCBsZW4oZGF0YSksIGhleGRpZ2VzdCkpCi0gICAgICAgICAgICBjb21wdXRlZCA9IG0uZGlnZXN0KCkKKyAgICAgICAgICAgIGNvbXB1dGVkID0gbS5kaWdlc3QoKSBpZiBub3Qgc2hha2UgZWxzZSBtLmRpZ2VzdChsZW5ndGgpCiAgICAgICAgICAgICBkaWdlc3QgPSBieXRlcy5mcm9taGV4KGhleGRpZ2VzdCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHV0ZWQsIGRpZ2VzdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpZ2VzdCksIG0uZGlnZXN0X3NpemUpCisgICAgICAgICAgICBpZiBub3Qgc2hha2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlnZXN0KSwgbS5kaWdlc3Rfc2l6ZSkKIAogICAgIGRlZiBjaGVja19ub191bmljb2RlKHNlbGYsIGFsZ29yaXRobV9uYW1lKToKICAgICAgICAgIyBVbmljb2RlIG9iamVjdHMgYXJlIG5vdCBhbGxvd2VkIGFzIGlucHV0LgpAQCAtMjI2LDEzICsyOTksMzUgQEAKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzODQnKQogICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTUxMicpCiAKLSAgICBkZWYgY2hlY2tfYmxvY2tzaXplX25hbWUoc2VsZiwgbmFtZSwgYmxvY2tfc2l6ZT0wLCBkaWdlc3Rfc2l6ZT0wKToKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3Rfbm9fdW5pY29kZV9ibGFrZTIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnYmxha2UyYicpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnYmxha2UycycpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X25vX3VuaWNvZGVfc2hhMyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzIyNCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yNTYnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMzg0JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzUxMicpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hha2VfMTI4JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGFrZV8yNTYnKQorCisgICAgZGVmIGNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKHNlbGYsIG5hbWUsIGJsb2NrX3NpemU9MCwgZGlnZXN0X3NpemU9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0X2xlbmd0aD1Ob25lKToKICAgICAgICAgY29uc3RydWN0b3JzID0gc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFtuYW1lXQogICAgICAgICBmb3IgaGFzaF9vYmplY3RfY29uc3RydWN0b3IgaW4gY29uc3RydWN0b3JzOgogICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ibG9ja19zaXplLCBibG9ja19zaXplKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmRpZ2VzdF9zaXplLCBkaWdlc3Rfc2l6ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KCkpLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgICAgIGlmIGRpZ2VzdF9sZW5ndGg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5kaWdlc3QoZGlnZXN0X2xlbmd0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0X2xlbmd0aCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmhleGRpZ2VzdChkaWdlc3RfbGVuZ3RoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyKmRpZ2VzdF9sZW5ndGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KCkpLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmhleGRpZ2VzdCgpKSwgMipkaWdlc3Rfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5uYW1lLCBuYW1lKQogICAgICAgICAgICAgIyBzcGxpdCBmb3Igc2hhM181MTIgLyBfc2hhMy5zaGEzIG9iamVjdAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLnNwbGl0KCJfIilbMF0sIHJlcHIobSkpCkBAIC0yNDUsNiArMzQwLDM4IEBACiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTM4NCcsIDEyOCwgNDgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTUxMicsIDEyOCwgNjQpCiAKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Jsb2Nrc2l6ZV9uYW1lX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjI0JywgMTQ0LCAyOCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18yNTYnLCAxMzYsIDMyKQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzM4NCcsIDEwNCwgNDgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfNTEyJywgNzIsIDY0KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGFrZV8xMjgnLCAxNjgsIDAsIDMyKQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGFrZV8yNTYnLCAxMzYsIDAsIDY0KQorCisgICAgZGVmIGNoZWNrX3NoYTMoc2VsZiwgbmFtZSwgY2FwYWNpdHksIHJhdGUsIHN1ZmZpeCk6CisgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KKyAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKKyAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhcGFjaXR5ICsgcmF0ZSwgMTYwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fY2FwYWNpdHlfYml0cywgY2FwYWNpdHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX3JhdGVfYml0cywgcmF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fc3VmZml4LCBzdWZmaXgpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2V4dHJhX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM18yMjQnLCA0NDgsIDExNTIsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM18yNTYnLCA1MTIsIDEwODgsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM18zODQnLCA3NjgsIDgzMiwgYidceDA2JykKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGEzXzUxMicsIDEwMjQsIDU3NiwgYidceDA2JykKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGFrZV8xMjgnLCAyNTYsIDEzNDQsIGInXHgxZicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hha2VfMjU2JywgNTEyLCAxMDg4LCBiJ1x4MWYnKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Jsb2Nrc2l6ZV9uYW1lX2JsYWtlMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnYmxha2UyYicsIDEyOCwgNjQpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ2JsYWtlMnMnLCA2NCwgMzIpCisKICAgICBkZWYgdGVzdF9jYXNlX21kNV8wKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrKCdtZDUnLCBiJycsICdkNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZScpCiAKQEAgLTM3Myw2ICs1MDAsMjIxIEBACiAgICAgICAgICAgImU3MTg0ODNkMGNlNzY5NjQ0ZTJlNDJjN2JjMTViNDYzOGUxZjk4YjEzYjIwNDQyODU2MzJhODAzYWZhOTczZWIiKwogICAgICAgICAgICJkZTBmZjI0NDg3N2VhNjBhNGNiMDQzMmNlNTc3YzMxYmViMDA5YzVjMmM0OWFhMmU0ZWFkYjIxN2FkOGNjMDliIikKIAorICAgIGRlZiBjaGVja19ibGFrZTIoc2VsZiwgY29uc3RydWN0b3IsIHNhbHRfc2l6ZSwgcGVyc29uX3NpemUsIGtleV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgZGlnZXN0X3NpemUsIG1heF9vZmZzZXQpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnN0cnVjdG9yLlNBTFRfU0laRSwgc2FsdF9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShzYWx0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHNhbHQ9YidhJyAqIGkpCisgICAgICAgIHNhbHQgPSBiJ2EnICogKHNhbHRfc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBzYWx0PXNhbHQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5QRVJTT05fU0laRSwgcGVyc29uX3NpemUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKHBlcnNvbl9zaXplKzEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IocGVyc29uPWInYScgKiBpKQorICAgICAgICBwZXJzb24gPSBiJ2EnICogKHBlcnNvbl9zaXplICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIHBlcnNvbj1wZXJzb24pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5NQVhfRElHRVNUX1NJWkUsIGRpZ2VzdF9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCBkaWdlc3Rfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoZGlnZXN0X3NpemU9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGlnZXN0X3NpemU9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPWRpZ2VzdF9zaXplKzEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5NQVhfS0VZX1NJWkUsIGtleV9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShrZXlfc2l6ZSsxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGtleT1iJ2EnICogaSkKKyAgICAgICAga2V5ID0gYidhJyAqIChrZXlfc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBrZXk9a2V5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnN0cnVjdG9yKCkuaGV4ZGlnZXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3Ioa2V5PWInJykuaGV4ZGlnZXN0KCkpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGZhbm91dD1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZmFub3V0PS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZmFub3V0PTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAyNTYpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoZGVwdGg9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGVwdGg9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAyNTYpOgorICAgICAgICAgICAgY29uc3RydWN0b3Iobm9kZV9kZXB0aD1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9kZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfZGVwdGg9MjU2KQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGRpZ2VzdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcihpbm5lcl9zaXplPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBpbm5lcl9zaXplPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgaW5uZXJfc2l6ZT1kaWdlc3Rfc2l6ZSsxKQorCisgICAgICAgIGNvbnN0cnVjdG9yKGxlYWZfc2l6ZT0wKQorICAgICAgICBjb25zdHJ1Y3RvcihsZWFmX3NpemU9KDE8PDMyKS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3RvciwgbGVhZl9zaXplPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3RvciwgbGVhZl9zaXplPTE8PDMyKQorCisgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfb2Zmc2V0PTApCisgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfb2Zmc2V0PW1heF9vZmZzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX29mZnNldD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfb2Zmc2V0PW1heF9vZmZzZXQrMSkKKworICAgICAgICBjb25zdHJ1Y3RvcigKKyAgICAgICAgICAgIHN0cmluZz1iJycsCisgICAgICAgICAgICBrZXk9YicnLAorICAgICAgICAgICAgc2FsdD1iJycsCisgICAgICAgICAgICBwZXJzb249YicnLAorICAgICAgICAgICAgZGlnZXN0X3NpemU9MTcsCisgICAgICAgICAgICBmYW5vdXQ9MSwKKyAgICAgICAgICAgIGRlcHRoPTEsCisgICAgICAgICAgICBsZWFmX3NpemU9MjU2LAorICAgICAgICAgICAgbm9kZV9vZmZzZXQ9NTEyLAorICAgICAgICAgICAgbm9kZV9kZXB0aD0xLAorICAgICAgICAgICAgaW5uZXJfc2l6ZT03LAorICAgICAgICAgICAgbGFzdF9ub2RlPVRydWUKKyAgICAgICAgKQorCisgICAgZGVmIGJsYWtlMl9yZmM3NjkzKHNlbGYsIGNvbnN0cnVjdG9yLCBtZF9sZW4sIGluX2xlbik6CisgICAgICAgIGRlZiBzZWxmdGVzdF9zZXEobGVuZ3RoLCBzZWVkKToKKyAgICAgICAgICAgIG1hc2sgPSAoMTw8MzIpLTEKKyAgICAgICAgICAgIGEgPSAoMHhERUFENEJBRCAqIHNlZWQpICYgbWFzaworICAgICAgICAgICAgYiA9IDEKKyAgICAgICAgICAgIG91dCA9IGJ5dGVhcnJheShsZW5ndGgpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW5ndGgpOgorICAgICAgICAgICAgICAgIHQgPSAoYSArIGIpICYgbWFzaworICAgICAgICAgICAgICAgIGEsIGIgPSBiLCB0CisgICAgICAgICAgICAgICAgb3V0W2ldID0gKHQgPj4gMjQpICYgMHhGRgorICAgICAgICAgICAgcmV0dXJuIG91dAorICAgICAgICBvdXRlciA9IGNvbnN0cnVjdG9yKGRpZ2VzdF9zaXplPTMyKQorICAgICAgICBmb3Igb3V0bGVuIGluIG1kX2xlbjoKKyAgICAgICAgICAgIGZvciBpbmxlbiBpbiBpbl9sZW46CisgICAgICAgICAgICAgICAgaW5kYXRhID0gc2VsZnRlc3Rfc2VxKGlubGVuLCBpbmxlbikKKyAgICAgICAgICAgICAgICBrZXkgPSBzZWxmdGVzdF9zZXEob3V0bGVuLCBvdXRsZW4pCisgICAgICAgICAgICAgICAgdW5rZXllZCA9IGNvbnN0cnVjdG9yKGluZGF0YSwgZGlnZXN0X3NpemU9b3V0bGVuKQorICAgICAgICAgICAgICAgIG91dGVyLnVwZGF0ZSh1bmtleWVkLmRpZ2VzdCgpKQorICAgICAgICAgICAgICAgIGtleWVkID0gY29uc3RydWN0b3IoaW5kYXRhLCBrZXk9a2V5LCBkaWdlc3Rfc2l6ZT1vdXRsZW4pCisgICAgICAgICAgICAgICAgb3V0ZXIudXBkYXRlKGtleWVkLmRpZ2VzdCgpKQorICAgICAgICByZXR1cm4gb3V0ZXIuaGV4ZGlnZXN0KCkKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibGFrZTJiKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2JsYWtlMihoYXNobGliLmJsYWtlMmIsIDE2LCAxNiwgNjQsIDY0LCAoMTw8NjQpLTEpCisgICAgICAgIGIyYl9tZF9sZW4gPSBbMjAsIDMyLCA0OCwgNjRdCisgICAgICAgIGIyYl9pbl9sZW4gPSBbMCwgMywgMTI4LCAxMjksIDI1NSwgMTAyNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuYmxha2UyX3JmYzc2OTMoaGFzaGxpYi5ibGFrZTJiLCBiMmJfbWRfbGVuLCBiMmJfaW5fbGVuKSwKKyAgICAgICAgICAgICJjMjNhNzgwMGQ5ODEyM2JkMTBmNTA2YzYxZTI5ZGE1NjAzZDc2M2I4YmJhZDJlNzM3ZjVlNzY1YTdiY2NkNDc1IikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMmJfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIGIiIiwKKyAgICAgICAgICAiNzg2YTAyZjc0MjAxNTkwM2M2YzZmZDg1MjU1MmQyNzI5MTJmNDc0MGUxNTg0NzYxOGE4NmUyMTdmNzFmNTQxOSIrCisgICAgICAgICAgImQyNWUxMDMxYWZlZTU4NTMxMzg5NjQ0NDkzNGViMDRiOTAzYTY4NWIxNDQ4Yjc1NWQ1NmY3MDFhZmU5YmUyY2UiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Nhc2VfYmxha2UyYl8xKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJiJywgYiJhYmMiLAorICAgICAgICAgICJiYTgwYTUzZjk4MWM0ZDBkNmEyNzk3YjY5ZjEyZjZlOTRjMjEyZjE0Njg1YWM0Yjc0YjEyYmI2ZmRiZmZhMmQxIisKKyAgICAgICAgICAiN2Q4N2M1MzkyYWFiNzkyZGMyNTJkNWRlNDUzM2NjOTUxOGQzOGFhOGRiZjE5MjVhYjkyMzg2ZWRkNDAwOTkyMyIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UyYl92ZWN0b3JzKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBrZXksIG1kIGluIHJlYWRfdmVjdG9ycygnYmxha2UyYicpOgorICAgICAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleChrZXkpCisgICAgICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJiJywgbXNnLCBtZCwga2V5PWtleSkKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibGFrZTJzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2JsYWtlMihoYXNobGliLmJsYWtlMnMsIDgsIDgsIDMyLCAzMiwgKDE8PDQ4KS0xKQorICAgICAgICBiMnNfbWRfbGVuID0gWzE2LCAyMCwgMjgsIDMyXQorICAgICAgICBiMnNfaW5fbGVuID0gWzAsIDMsIDY0LCA2NSwgMjU1LCAxMDI0XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5ibGFrZTJfcmZjNzY5MyhoYXNobGliLmJsYWtlMnMsIGIyc19tZF9sZW4sIGIyc19pbl9sZW4pLAorICAgICAgICAgICAgIjZhNDExZjA4Y2UyNWFkY2RmYjAyYWJhNjQxNDUxY2VjNTNjNTk4YjI0ZjRmYzc4N2ZiZGM4ODc5N2Y0YzFkZmUiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Nhc2VfYmxha2Uyc18wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJzJywgYiIiLAorICAgICAgICAgICI2OTIxN2EzMDc5OTA4MDk0ZTExMTIxZDA0MjM1NGE3YzFmNTViNjQ4MmNhMWE1MWUxYjI1MGRmZDFlZDBlZWY5IikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMnNfMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIGIiYWJjIiwKKyAgICAgICAgICAiNTA4YzVlOGMzMjdjMTRlMmUxYTcyYmEzNGVlYjQ1MmYzNzQ1OGIyMDllZDYzYTI5NGQ5OTliNGM4NjY3NTk4MiIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2Uyc192ZWN0b3JzKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBrZXksIG1kIGluIHJlYWRfdmVjdG9ycygnYmxha2UycycpOgorICAgICAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleChrZXkpCisgICAgICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJzJywgbXNnLCBtZCwga2V5PWtleSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzIyNCcsIGIiIiwKKyAgICAgICAgICAiNmI0ZTAzNDIzNjY3ZGJiNzNiNmUxNTQ1NGYwZWIxYWJkNDU5N2Y5YTFiMDc4ZTNmNWI1YTZiYzciKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjI0X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGEzXzIyNCcpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yMjQnLCBtc2csIG1kKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjU2XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjU2JywgYiIiLAorICAgICAgICAgICJhN2ZmYzZmOGJmMWVkNzY2NTFjMTQ3NTZhMDYxZDY2MmY1ODBmZjRkZTQzYjQ5ZmE4MmQ4MGE0YjgwZjg0MzRhIikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18yNTYnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjU2JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzM4NF8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIGIiIiwKKyAgICAgICAgICAiMGM2M2E3NWI4NDVlNGY3ZDAxMTA3ZDg1MmU0YzI0ODVjNTFhNTBhYWFhOTRmYzYxOTk1ZTcxYmJlZTk4M2EyYSIrCisgICAgICAgICAgImMzNzEzODMxMjY0YWRiNDdmYjZiZDFlMDU4ZDVmMDA0IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzM4NF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18zODQnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMzg0JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzUxMicsIGIiIiwKKyAgICAgICAgICAiYTY5ZjczY2NhMjNhOWFjNWM4YjU2N2RjMTg1YTc1NmU5N2M5ODIxNjRmZTI1ODU5ZTBkMWRjYzE0NzVjODBhNiIrCisgICAgICAgICAgIjE1YjIxMjNhZjFmNWY5NGMxMWUzZTk0MDJjM2FjNTU4ZjUwMDE5OWQ5NWI2ZDNlMzAxNzU4NTg2MjgxZGNkMjYiKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfNTEyX3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGEzXzUxMicpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBtc2csIG1kKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlXzEyOF8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBiIiIsCisgICAgICAgICAgIjdmOWMyYmE0ZTg4ZjgyN2Q2MTYwNDU1MDc2MDU4NTNlZDczYjgwOTNmNmVmYmM4OGViMWE2ZWFjZmE2NmVmMjYiLAorICAgICAgICAgIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzEyOCcsIGIiIiwgIjdmOWMiLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlMTI4X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGFrZV8xMjgnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzEyOCcsIG1zZywgbWQsIFRydWUpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hha2VfMjU2XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIGIiIiwKKyAgICAgICAgICAiNDZiOWRkMmIwYmE4OGQxMzIzM2IzZmViNzQzZWViMjQzZmNkNTJlYTYyYjgxYjgyYjUwYzI3NjQ2ZWQ1NzYyZiIsCisgICAgICAgICAgVHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMjU2JywgYiIiLCAiNDZiOSIsIFRydWUpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hha2UyNTZfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYWtlXzI1NicpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMjU2JywgbXNnLCBtZCwgVHJ1ZSkKKwogICAgIGRlZiB0ZXN0X2dpbChzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGluZ3Mgd29yayBmaW5lIHdpdGggYW4gaW5wdXQgbGFyZ2VyIHRoYW4gdGhlIHNpemUgcmVxdWlyZWQKICAgICAgICAgIyBmb3IgbXVsdGl0aHJlYWRlZCBvcGVyYXRpb24gKHdoaWNoIGlzIGhhcmR3aXJlZCB0byAyMDQ4KS4KQEAgLTQ0Nyw2ICs3ODksMTIgQEAKICAgICAgICAgKGIncGFzc1wwd29yZCcsIGInc2FcMGx0JywgNDA5NiwgMTYpLAogICAgIF0KIAorICAgIHNjcnlwdF90ZXN0X3ZlY3RvcnMgPSBbCisgICAgICAgIChiJycsIGInJywgMTYsIDEsIDEsIHVuaGV4bGlmeSgnNzdkNjU3NjIzODY1N2IyMDNiMTljYTQyYzE4YTA0OTdmMTZiNDg0NGUzMDc0YWU4ZGZkZmZhM2ZlZGUyMTQ0MmZjZDAwNjlkZWQwOTQ4ZjgzMjZhNzUzYTBmYzgxZjE3ZThkM2UwZmIyZTBkMzYyOGNmMzVlMjBjMzhkMTg5MDYnKSksCisgICAgICAgIChiJ3Bhc3N3b3JkJywgYidOYUNsJywgMTAyNCwgOCwgMTYsIHVuaGV4bGlmeSgnZmRiYWJlMWM5ZDM0NzIwMDc4NTZlNzE5MGQwMWU5ZmU3YzZhZDdjYmM4MjM3ODMwZTc3Mzc2NjM0YjM3MzE2MjJlYWYzMGQ5MmUyMmEzODg2ZmYxMDkyNzlkOTgzMGRhYzcyN2FmYjk0YTgzZWU2ZDgzNjBjYmRmYTJjYzA2NDAnKSksCisgICAgICAgIChiJ3BsZWFzZWxldG1laW4nLCBiJ1NvZGl1bUNobG9yaWRlJywgMTYzODQsIDgsIDEsIHVuaGV4bGlmeSgnNzAyM2JkY2IzYWZkNzM0ODQ2MWMwNmNkODFmZDM4ZWJmZGE4ZmJiYTkwNGY4ZTNlYTliNTQzZjY1NDVkYTFmMmQ1NDMyOTU1NjEzZjBmY2Y2MmQ0OTcwNTI0MmE5YWY5ZTYxZTg1ZGMwZDY1MWU0MGRmY2YwMTdiNDU1NzU4ODcnKSksCisgICBdCisKICAgICBwYmtkZjJfcmVzdWx0cyA9IHsKICAgICAgICAgInNoYTEiOiBbCiAgICAgICAgICAgICAjIG9mZmljaWFsIHRlc3QgdmVjdG9ycyBmcm9tIFJGQyA2MDcwCkBAIC01MjYsNSArODc0LDQ1IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcGJrZGYyX2htYWMoY19oYXNobGliLnBia2RmMl9obWFjKQogCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGNfaGFzaGxpYiwgJ3NjcnlwdCcpLAorICAgICAgICAgICAgICAgICAgICAgJyAgIHRlc3QgcmVxdWlyZXMgT3BlblNTTCA+IDEuMScpCisgICAgZGVmIHRlc3Rfc2NyeXB0KHNlbGYpOgorICAgICAgICBmb3IgcGFzc3dvcmQsIHNhbHQsIG4sIHIsIHAsIGV4cGVjdGVkIGluIHNlbGYuc2NyeXB0X3Rlc3RfdmVjdG9yczoKKyAgICAgICAgICAgIHJlc3VsdCA9IGhhc2hsaWIuc2NyeXB0KHBhc3N3b3JkLCBzYWx0PXNhbHQsIG49biwgcj1yLCBwPXApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKKyAgICAgICAgIyB0aGlzIHZhbHVlcyBzaG91bGQgd29yaworICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICAjIHBhc3N3b3JkIGFuZCBzYWx0IG11c3QgYmUgYnl0ZXMtbGlrZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdCgncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PSdzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgIyByZXF1aXJlIGtleXdvcmQgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIGInc2FsdCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCAyLCA4LCAxLCBzYWx0PWInc2FsdCcpCisgICAgICAgIGZvciBuIGluIFstMSwgMCwgMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPW4sIHI9OCwgcD0xKQorICAgICAgICBmb3IgciBpbiBbLTEsIDAsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPXIsIHA9MSkKKyAgICAgICAgZm9yIHAgaW4gWy0xLCAwLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPXApCisgICAgICAgIGZvciBtYXhtZW0gaW4gWy0xLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4bWVtPW1heG1lbSkKKyAgICAgICAgZm9yIGRrbGVuIGluIFstMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRrbGVuPWRrbGVuKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5IGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQppbmRleCBiN2U4MjU5Li4yZjhjNjQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKQEAgLTEsNiArMSw1IEBACiAiIiJVbml0dGVzdHMgZm9yIGhlYXBxLiIiIgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5IGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CmluZGV4IDk4ODI2YjUuLjA2N2UxM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGRlZiBpZ25vcmVfd2FybmluZyhmdW5jKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQppbmRleCAxMTQyMGIyLi4zMjZlMzQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGh0bWwucGFyc2VyCiBpbXBvcnQgcHByaW50CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKIGNsYXNzIEV2ZW50Q29sbGVjdG9yKGh0bWwucGFyc2VyLkhUTUxQYXJzZXIpOgpAQCAtNzAyLDcgKzcwMSw3IEBACiAKICAgICBkZWYgdGVzdF9hdHRyX2Z1bmt5X25hbWVzMihzZWxmKToKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKAotICAgICAgICAgICAgIjxhICQ+PGIgJD0lPjxjIFw9Lz4iLAorICAgICAgICAgICAgciI8YSAkPjxiICQ9JT48YyBcPS8+IiwKICAgICAgICAgICAgIFsoInN0YXJ0dGFnIiwgImEiLCBbKCIkIiwgTm9uZSldKSwKICAgICAgICAgICAgICAoInN0YXJ0dGFnIiwgImIiLCBbKCIkIiwgIiUiKV0pLAogICAgICAgICAgICAgICgic3RhcnR0YWciLCAiYyIsIFsoIlxcIiwgIi8iKV0pXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CmluZGV4IDQ5YzAxYWUuLjZmZWU0ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQpAQCAtMTA1MSw3ICsxMDUxLDcgQEAKICAgICAgICAgdXJsID0gImh0dHA6Ly9mb28uYmFyLmNvbS8iCiAgICAgICAgIGludGVyYWN0XzI5NjUoYywgdXJsLCAic3BhbT1lZ2dzOyBWZXJzaW9uPTE7IFBvcnQiKQogICAgICAgICBoID0gaW50ZXJhY3RfMjk2NShjLCB1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoaCwgIlwkUG9ydChbXj1dfCQpIiwKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChoLCByIlwkUG9ydChbXj1dfCQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAicG9ydCB3aXRoIG5vIHZhbHVlIG5vdCByZXR1cm5lZCB3aXRoIG5vIHZhbHVlIikKIAogICAgICAgICBjID0gQ29va2llSmFyKHBvbCkKQEAgLTEzOTYsOSArMTM5Niw5IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInXlwkVmVyc2lvbj0iPzEiPzsnKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGNvb2tpZSwgcidQYXJ0X051bWJlcj0iP1JvY2tldF9MYXVuY2hlcl8wMDAxIj87JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdccypcJFBhdGg9IlwvYWNtZSInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidccypcJFBhdGg9IlwvYWNtZSInKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGNvb2tpZSwgcidDdXN0b21lcj0iP1dJTEVfRV9DT1lPVEUiPzsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xzKlwkUGF0aD0iXC9hY21lIicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1xzKlwkUGF0aD0iXC9hY21lIicpCiAKICAgICAgICAgIwogICAgICAgICAjICAgNy4gIFVzZXIgQWdlbnQgLT4gU2VydmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKaW5kZXggNjFlZDZiYi4uNjhmNjk0NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQpAQCAtMzQ0LDYgKzM0NCwxMzQgQEAKICAgICAgICAgICAgICAgICAgICAgY29ubi5wdXRoZWFkZXIobmFtZSwgdmFsdWUpCiAKIAorY2xhc3MgVHJhbnNmZXJFbmNvZGluZ1Rlc3QoVGVzdENhc2UpOgorICAgIGV4cGVjdGVkX2JvZHkgPSBiIkl0J3MganVzdCBhIGZsZXNoIHdvdW5kIgorCisgICAgZGVmIHRlc3RfZW5kaGVhZGVyc19jaHVua2VkKHNlbGYpOgorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnB1dHJlcXVlc3QoJ1BPU1QnLCAnLycpCisgICAgICAgIGNvbm4uZW5kaGVhZGVycyhzZWxmLl9tYWtlX2JvZHkoKSwgZW5jb2RlX2NodW5rZWQ9VHJ1ZSkKKworICAgICAgICBfLCBfLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgYm9keSA9IHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9oZWFkZXJzKHNlbGYpOgorICAgICAgICAjIGV4cGxpY2l0IGNodW5rZWQKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgIyB0aGlzIHNob3VsZG4ndCBhY3R1YWxseSBiZSBhdXRvbWF0aWNhbGx5IGNodW5rLWVuY29kZWQgYmVjYXVzZSB0aGUKKyAgICAgICAgIyBjYWxsaW5nIGNvZGUgaGFzIGV4cGxpY2l0bHkgc3RhdGVkIHRoYXQgaXQncyB0YWtpbmcgY2FyZSBvZiBpdAorICAgICAgICBjb25uLnJlcXVlc3QoCisgICAgICAgICAgICAnUE9TVCcsICcvJywgc2VsZi5fbWFrZV9ib2R5KCksIHsnVHJhbnNmZXItRW5jb2RpbmcnOiAnY2h1bmtlZCd9KQorCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycy5rZXlzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICAgICAgIyBleHBsaWNpdCBjaHVua2VkLCBzdHJpbmcgYm9keQorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoCisgICAgICAgICAgICAnUE9TVCcsICcvJywgc2VsZi5leHBlY3RlZF9ib2R5LmRlY29kZSgnbGF0aW4tMScpLAorICAgICAgICAgICAgeydUcmFuc2Zlci1FbmNvZGluZyc6ICdjaHVua2VkJ30pCisKKyAgICAgICAgXywgaGVhZGVycywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzLmtleXMoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgICAgICAjIFVzZXItc3BlY2lmaWVkIFRFLCBidXQgcmVxdWVzdCgpIGRvZXMgdGhlIGNodW5rIGVuY29kaW5nCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywKKyAgICAgICAgICAgIGhlYWRlcnM9eydUcmFuc2Zlci1FbmNvZGluZyc6ICdnemlwLCBjaHVua2VkJ30sCisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1UcnVlLAorICAgICAgICAgICAgYm9keT1zZWxmLl9tYWtlX2JvZHkoKSkKKyAgICAgICAgXywgaGVhZGVycywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnZ3ppcCwgY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fcGFyc2VfY2h1bmtlZChib2R5KSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgZGVmIHRlc3RfcmVxdWVzdChzZWxmKToKKyAgICAgICAgZm9yIGVtcHR5X2xpbmVzIGluIChGYWxzZSwgVHJ1ZSwpOgorICAgICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgICAgICBjb25uLnJlcXVlc3QoCisgICAgICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuX21ha2VfYm9keShlbXB0eV9saW5lcz1lbXB0eV9saW5lcykpCisKKyAgICAgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICAgICAgYm9keSA9IHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisKKyAgICAgICAgICAgICMgQ29udGVudC1MZW5ndGggYW5kIFRyYW5zZmVyLUVuY29kaW5nIFNIT1VMRCBub3QgYmUgc2VudCBpbiB0aGUKKyAgICAgICAgICAgICMgc2FtZSByZXF1ZXN0CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisKKyAgICBkZWYgdGVzdF9lbXB0eV9ib2R5KHNlbGYpOgorICAgICAgICAjIFplcm8tbGVuZ3RoIGl0ZXJhYmxlIHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgYW55IG90aGVyIGl0ZXJhYmxlCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgIGNvbm4ucmVxdWVzdCgnUE9TVCcsICcvJywgKCkpCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIGIiMFxyXG5cclxuIikKKworICAgIGRlZiBfbWFrZV9ib2R5KHNlbGYsIGVtcHR5X2xpbmVzPUZhbHNlKToKKyAgICAgICAgbGluZXMgPSBzZWxmLmV4cGVjdGVkX2JvZHkuc3BsaXQoYicgJykKKyAgICAgICAgZm9yIGlkeCwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICAgICAgIyBmb3IgdGVzdGluZyBoYW5kbGluZyBlbXB0eSBsaW5lcworICAgICAgICAgICAgaWYgZW1wdHlfbGluZXMgYW5kIGlkeCAlIDI6CisgICAgICAgICAgICAgICAgeWllbGQgYicnCisgICAgICAgICAgICBpZiBpZHggPCBsZW4obGluZXMpIC0gMToKKyAgICAgICAgICAgICAgICB5aWVsZCBsaW5lICsgYicgJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICBkZWYgX3BhcnNlX3JlcXVlc3Qoc2VsZiwgZGF0YSk6CisgICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdChiJ1xyXG4nKQorICAgICAgICByZXF1ZXN0ID0gbGluZXNbMF0KKyAgICAgICAgaGVhZGVycyA9IHt9CisgICAgICAgIG4gPSAxCisgICAgICAgIHdoaWxlIG4gPCBsZW4obGluZXMpIGFuZCBsZW4obGluZXNbbl0pID4gMDoKKyAgICAgICAgICAgIGtleSwgdmFsID0gbGluZXNbbl0uc3BsaXQoYic6JykKKyAgICAgICAgICAgIGtleSA9IGtleS5kZWNvZGUoJ2xhdGluLTEnKS5zdHJpcCgpCisgICAgICAgICAgICBoZWFkZXJzW2tleV0gPSB2YWwuZGVjb2RlKCdsYXRpbi0xJykuc3RyaXAoKQorICAgICAgICAgICAgbiArPSAxCisKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QsIGhlYWRlcnMsIGInXHJcbicuam9pbihsaW5lc1tuICsgMTpdKQorCisgICAgZGVmIF9wYXJzZV9jaHVua2VkKHNlbGYsIGRhdGEpOgorICAgICAgICBib2R5ID0gW10KKyAgICAgICAgdHJhaWxlcnMgPSB7fQorICAgICAgICBuID0gMAorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoYidcclxuJykKKyAgICAgICAgIyBwYXJzZSBib2R5CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBzaXplLCBjaHVuayA9IGxpbmVzW246bisyXQorICAgICAgICAgICAgc2l6ZSA9IGludChzaXplLCAxNikKKworICAgICAgICAgICAgaWYgc2l6ZSA9PSAwOgorICAgICAgICAgICAgICAgIG4gKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbGVuKGNodW5rKSkKKyAgICAgICAgICAgIGJvZHkuYXBwZW5kKGNodW5rKQorCisgICAgICAgICAgICBuICs9IDIKKyAgICAgICAgICAgICMgd2UgL3Nob3VsZC8gaGl0IHRoZSBlbmQgY2h1bmssIGJ1dCBjaGVjayBhZ2FpbnN0IHRoZSBzaXplIG9mCisgICAgICAgICAgICAjIGxpbmVzIHNvIHdlJ3JlIG5vdCBzdHVjayBpbiBhbiBpbmZpbml0ZSBsb29wIHNob3VsZCB3ZSBnZXQKKyAgICAgICAgICAgICMgbWFsZm9ybWVkIGRhdGEKKyAgICAgICAgICAgIGlmIG4gPiBsZW4obGluZXMpOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0dXJuIGInJy5qb2luKGJvZHkpCisKKwogY2xhc3MgQmFzaWNUZXN0KFRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zdGF0dXNfbGluZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBIVFRQIHN0YXR1cyBsaW5lcwpAQCAtNTY0LDcgKzY5Miw5IEBACiAKICAgICBkZWYgdGVzdF9zZW5kX2ZpbGUoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkID0gKGInR0VUIC9mb28gSFRUUC8xLjFcclxuSG9zdDogZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgICAgICAgICBiJ0FjY2VwdC1FbmNvZGluZzogaWRlbnRpdHlcclxuQ29udGVudC1MZW5ndGg6JykKKyAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbicKKyAgICAgICAgICAgICAgICAgICAgYidUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG4nCisgICAgICAgICAgICAgICAgICAgIGInXHJcbicpCiAKICAgICAgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAncmInKSBhcyBib2R5OgogICAgICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQpAQCAtNTk0LDExICs3MjQsMTEgQEAKICAgICAgICAgICAgIHlpZWxkIE5vbmUKICAgICAgICAgICAgIHlpZWxkICdkYXRhX3R3bycKIAotICAgICAgICBjbGFzcyBVcGRhdGluZ0ZpbGUoKToKKyAgICAgICAgY2xhc3MgVXBkYXRpbmdGaWxlKGlvLlRleHRJT0Jhc2UpOgogICAgICAgICAgICAgbW9kZSA9ICdyJwogICAgICAgICAgICAgZCA9IGRhdGEoKQogICAgICAgICAgICAgZGVmIHJlYWQoc2VsZiwgYmxvY2tzaXplPS0xKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kLl9fbmV4dF9fKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV4dChzZWxmLmQpCiAKICAgICAgICAgZXhwZWN0ZWQgPSBiJ2RhdGEnCiAKQEAgLTk3MCw2ICsxMTAwLDcgQEAKIAogICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW5fc2VydmVyKQogICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGhyZWFkLmpvaW4sIGZsb2F0KDEpKQogICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCpzZXJ2LmdldHNvY2tuYW1lKCkpCiAgICAgICAgIGNvbm4ucmVxdWVzdCgiQ09OTkVDVCIsICJkdW1teToxMjM0IikKICAgICAgICAgcmVzcG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKCkKQEAgLTk4Myw3ICsxMTE0LDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHJlc3BvbnNlLmNsb3NlKCkKICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQotICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQorICAgICAgICB0aHJlYWQuam9pbigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBiInByb3hpZWQgZGF0YVxuIikKIAogY2xhc3MgRXh0ZW5kZWRSZWFkVGVzdChUZXN0Q2FzZSk6CkBAIC0xNTExLDE0ICsxNjQyLDE2IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpOgogICAgICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgICMgU2FtZSB3aXRoIGV4cGxpY2l0IGNoZWNrX2hvc3RuYW1lPVRydWUKLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBjaGVja19ob3N0bmFtZT1UcnVlKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICAjIFdpdGggY2hlY2tfaG9zdG5hbWU9RmFsc2UsIHRoZSBtaXNtYXRjaGluZyBpcyBpZ25vcmVkCiAgICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBGYWxzZQotICAgICAgICBoID0gY2xpZW50LkhUVFBTQ29ubmVjdGlvbignbG9jYWxob3N0Jywgc2VydmVyLnBvcnQsIGNvbnRleHQ9Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWU9RmFsc2UpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBjaGVja19ob3N0bmFtZT1GYWxzZSkKICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnL25vbmV4aXN0ZW50JykKICAgICAgICAgcmVzcCA9IGguZ2V0cmVzcG9uc2UoKQogICAgICAgICByZXNwLmNsb3NlKCkKQEAgLTE1MzUsOCArMTY2OCw5IEBACiAgICAgICAgIGguY2xvc2UoKQogICAgICAgICAjIFBhc3NpbmcgY2hlY2tfaG9zdG5hbWUgdG8gSFRUUFNDb25uZWN0aW9uIHNob3VsZCBvdmVycmlkZSB0aGUKICAgICAgICAgIyBjb250ZXh0J3Mgc2V0dGluZy4KLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPVRydWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dD1jb250ZXh0LCBjaGVja19ob3N0bmFtZT1UcnVlKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogCkBAIC0xNTc1LDYgKzE3MDksMjYgQEAKICAgICAgICAgbWVzc2FnZSA9IGNsaWVudC5wYXJzZV9oZWFkZXJzKGYpCiAgICAgICAgIHJldHVybiBtZXNzYWdlLCBmCiAKKyAgICBkZWYgdGVzdF9saXN0X2JvZHkoc2VsZik6CisgICAgICAgICMgTm90ZSB0aGF0IG5vIGNvbnRlbnQtbGVuZ3RoIGlzIGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlZCBmb3IKKyAgICAgICAgIyBhbiBpdGVyYWJsZS4gIFRoZSByZXF1ZXN0IHdpbGwgZmFsbCBiYWNrIHRvIHNlbmQgY2h1bmtlZAorICAgICAgICAjIHRyYW5zZmVyIGVuY29kaW5nLgorICAgICAgICBjYXNlcyA9ICgKKyAgICAgICAgICAgIChbYidmb28nLCBiJ2JhciddLCBiJzNcclxuZm9vXHJcbjNcclxuYmFyXHJcbjBcclxuXHJcbicpLAorICAgICAgICAgICAgKChiJ2ZvbycsIGInYmFyJyksIGInM1xyXG5mb29cclxuM1xyXG5iYXJcclxuMFxyXG5cclxuJyksCisgICAgICAgICkKKyAgICAgICAgZm9yIGJvZHksIGV4cGVjdGVkIGluIGNhc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYm9keSk6CisgICAgICAgICAgICAgICAgc2VsZi5jb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLnNvY2sgPSBzZWxmLnNvY2sgPSBGYWtlU29ja2V0KCcnKQorCisgICAgICAgICAgICAgICAgc2VsZi5jb25uLnJlcXVlc3QoJ1BVVCcsICcvdXJsJywgYm9keSkKKyAgICAgICAgICAgICAgICBtc2csIGYgPSBzZWxmLmdldF9oZWFkZXJzX2FuZF9mcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQ29udGVudC1UeXBlJywgbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NvbnRlbnQtTGVuZ3RoJywgbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldCgnVHJhbnNmZXItRW5jb2RpbmcnKSwgJ2NodW5rZWQnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGYucmVhZCgpKQorCiAgICAgZGVmIHRlc3RfbWFudWFsX2NvbnRlbnRfbGVuZ3RoKHNlbGYpOgogICAgICAgICAjIFNldCBhbiBpbmNvcnJlY3QgY29udGVudC1sZW5ndGggc28gdGhhdCB3ZSBjYW4gdmVyaWZ5IHRoYXQKICAgICAgICAgIyBpdCB3aWxsIG5vdCBiZSBvdmVyLXJpZGRlbiBieSB0aGUgbGlicmFyeS4KQEAgLTE2MDgsNyArMTc2Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjUiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHlceGMxJywgZi5yZWFkKCkpCiAKLSAgICBkZWYgdGVzdF9maWxlX2JvZHkoc2VsZik6CisgICAgZGVmIHRlc3RfdGV4dF9maWxlX2JvZHkoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgiYm9keSIpCkBAIC0xNjE3LDggKzE3NzEsMTEgQEAKICAgICAgICAgICAgIG1lc3NhZ2UsIGYgPSBzZWxmLmdldF9oZWFkZXJzX2FuZF9mcCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXh0L3BsYWluIiwgbWVzc2FnZS5nZXRfY29udGVudF90eXBlKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtZXNzYWdlLmdldF9jaGFyc2V0KCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI0IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYm9keScsIGYucmVhZCgpKQorICAgICAgICAgICAgIyBObyBjb250ZW50LWxlbmd0aCB3aWxsIGJlIGRldGVybWluZWQgZm9yIGZpbGVzOyB0aGUgYm9keQorICAgICAgICAgICAgIyB3aWxsIGJlIHNlbnQgdXNpbmcgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBpbnN0ZWFkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJjaHVua2VkIiwgbWVzc2FnZS5nZXQoInRyYW5zZmVyLWVuY29kaW5nIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInNFxyXG5ib2R5XHJcbjBcclxuXHJcbicsIGYucmVhZCgpKQogCiAgICAgZGVmIHRlc3RfYmluYXJ5X2ZpbGVfYm9keShzZWxmKToKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKQEAgLTE2MjksOCArMTc4Niw5IEBACiAgICAgICAgICAgICBtZXNzYWdlLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dC9wbGFpbiIsIG1lc3NhZ2UuZ2V0X2NvbnRlbnRfdHlwZSgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXRfY2hhcnNldCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNSIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHlceGMxJywgZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJjaHVua2VkIiwgbWVzc2FnZS5nZXQoIlRyYW5zZmVyLUVuY29kaW5nIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJDb250ZW50LUxlbmd0aCIsIG1lc3NhZ2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInNVxyXG5ib2R5XHhjMVxyXG4wXHJcblxyXG4nLCBmLnJlYWQoKSkKIAogCiBjbGFzcyBIVFRQUmVzcG9uc2VUZXN0KFRlc3RDYXNlKToKQEAgLTE3NDEsMTMgKzE4OTksNSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdoZWFkZXI6IHt9Jy5mb3JtYXQoZXhwZWN0ZWRfaGVhZGVyKSwgbGluZXMpCiAKIAotQHN1cHBvcnQucmVhcF90aHJlYWRzCi1kZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoSGVhZGVyVGVzdHMsIE9mZmxpbmVUZXN0LCBCYXNpY1Rlc3QsIFRpbWVvdXRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIFBlcnNpc3RlbmNlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQU1Rlc3QsIFJlcXVlc3RCb2R5VGVzdCwgU291cmNlQWRkcmVzc1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFJlc3BvbnNlVGVzdCwgRXh0ZW5kZWRSZWFkVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlbmRlZFJlYWRUZXN0Q2h1bmtlZCwgVHVubmVsVGVzdHMpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKaW5kZXggNzJlNmUwOC4uNGU5MzE0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CkBAIC0xOCw2ICsxOCw3IEBACiBpbXBvcnQgaHRtbAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0aW1lCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKIGltcG9ydCB1bml0dGVzdApAQCAtMTg5LDcgKzE5MCw3IEBACiAgICAgICAgIHJlcyA9IHNlbGYuY29uLmdldHJlc3BvbnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCBIVFRQU3RhdHVzLk5PVF9JTVBMRU1FTlRFRCkKIAotICAgIGRlZiB0ZXN0X2hlYWRfa2VlcF9hbGl2ZShzZWxmKToKKyAgICBkZWYgdGVzdF9oZWFkZXJfa2VlcF9hbGl2ZShzZWxmKToKICAgICAgICAgc2VsZi5jb24uX2h0dHBfdnNuX3N0ciA9ICdIVFRQLzEuMScKICAgICAgICAgc2VsZi5jb24ucHV0cmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICBzZWxmLmNvbi5wdXRoZWFkZXIoJ0Nvbm5lY3Rpb24nLCAna2VlcC1hbGl2ZScpCkBAIC0zNjksNiArMzcwLDggQEAKICAgICAgICAgcmV0dXJuIGJvZHkKIAogICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDUpCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICd1bmRlY29kYWJsZSBuYW1lIGNhbm5vdCBiZSBkZWNvZGVkIG9uIHdpbjMyJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LlRFU1RGTl9VTkRFQ09EQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzdXBwb3J0LlRFU1RGTl9VTkRFQ09EQUJMRScpCiAgICAgZGVmIHRlc3RfdW5kZWNvZGFibGVfZmlsZW5hbWUoc2VsZik6CkBAIC0zODgsNyArMzkxLDcgQEAKICAgICAgICAgcXVvdGVkbmFtZSA9IHVybGxpYi5wYXJzZS5xdW90ZShmaWxlbmFtZSwgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJykKICAgICAgICAgc2VsZi5hc3NlcnRJbigoJ2hyZWY9IiVzIicgJSBxdW90ZWRuYW1lKQogICAgICAgICAgICAgICAgICAgICAgIC5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJyksIGJvZHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigoJz4lczwnICUgaHRtbC5lc2NhcGUoZmlsZW5hbWUsIHF1b3RlPUZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQogICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLmJhc2VfdXJsICsgJy8nICsgcXVvdGVkbmFtZSkKICAgICAgICAgc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSywKQEAgLTQ2Niw2ICs0NjksMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5nZXRoZWFkZXIoIkxvY2F0aW9uIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZW1wZGlyX25hbWUgKyAiLz9oaT0xIikKIAorICAgIGRlZiB0ZXN0X2h0bWxfZXNjYXBlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9ICc8dGVzdCY+LnR4dCcKKyAgICAgICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCBmaWxlbmFtZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcGVuKGZ1bGxwYXRoLCAndycpLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnQ2FuIG5vdCBjcmVhdGUgZmlsZSAlcyBvbiBjdXJyZW50IGZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbScgJSBmaWxlbmFtZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmVxdWVzdChzZWxmLmJhc2VfdXJsICsgJy8nKQorICAgICAgICAgICAgYm9keSA9IHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0spCisgICAgICAgICAgICBlbmMgPSByZXNwb25zZS5oZWFkZXJzLmdldF9jb250ZW50X2NoYXJzZXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MudW5saW5rKGZ1bGxwYXRoKSAgIyBhdm9pZCBhZmZlY3RpbmcgdGVzdF91bmRlY29kYWJsZV9maWxlbmFtZQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGVuYykKKyAgICAgICAgaHRtbF90ZXh0ID0gJz4lczwnICUgaHRtbC5lc2NhcGUoZmlsZW5hbWUsIHF1b3RlPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEluKGh0bWxfdGV4dC5lbmNvZGUoZW5jKSwgYm9keSkKKwogCiBjZ2lfZmlsZTEgPSAiIiJcCiAjISVzCkBAIC05MTYsNyArOTQwLDcgQEAKICAgICAgICAgIyBJc3N1ZSAjNjc5MTogc2FtZSBmb3IgaGVhZGVycwogICAgICAgICByZXN1bHQgPSBzZWxmLnNlbmRfdHlwaWNhbF9yZXF1ZXN0KAogICAgICAgICAgICAgYidHRVQgLyBIVFRQLzEuMVxyXG5YLUZvbzogYmFyJyArIGIncicgKiA2NTUzNyArIGInXHJcblxyXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgYidIVFRQLzEuMSA0MDAgTGluZSB0b28gbG9uZ1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgYidIVFRQLzEuMSA0MzEgTGluZSB0b28gbG9uZ1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaGFuZGxlci5nZXRfY2FsbGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5yZXF1ZXN0bGluZSwgJ0dFVCAvIEhUVFAvMS4xJykKIApAQCAtOTI3LDYgKzk1MSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaGFuZGxlci5nZXRfY2FsbGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5yZXF1ZXN0bGluZSwgJ0dFVCAvIEhUVFAvMS4xJykKIAorICAgIGRlZiB0ZXN0X2h0bWxfZXNjYXBlX29uX2Vycm9yKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBzZWxmLnNlbmRfdHlwaWNhbF9yZXF1ZXN0KAorICAgICAgICAgICAgYic8c2NyaXB0PmFsZXJ0KCJoZWxsbyIpPC9zY3JpcHQ+IC8gSFRUUC8xLjEnKQorICAgICAgICByZXN1bHQgPSBiJycuam9pbihyZXN1bHQpCisgICAgICAgIHRleHQgPSAnPHNjcmlwdD5hbGVydCgiaGVsbG8iKTwvc2NyaXB0PicKKyAgICAgICAgc2VsZi5hc3NlcnRJbihodG1sLmVzY2FwZSh0ZXh0LCBxdW90ZT1GYWxzZSkuZW5jb2RlKCdhc2NpaScpLCByZXN1bHQpCisKICAgICBkZWYgdGVzdF9jbG9zZV9jb25uZWN0aW9uKHNlbGYpOgogICAgICAgICAjIGhhbmRsZV9vbmVfcmVxdWVzdCgpIHNob3VsZCBiZSByZXBlYXRlZGx5IGNhbGxlZCB1bnRpbAogICAgICAgICAjIGl0IHNldHMgY2xvc2VfY29ubmVjdGlvbgpAQCAtOTQyLDYgKzk3MywxOSBAQAogICAgICAgICBzZWxmLmhhbmRsZXIuaGFuZGxlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgY2xvc2VfdmFsdWVzKQogCisgICAgZGVmIHRlc3RfZGF0ZV90aW1lX3N0cmluZyhzZWxmKToKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgIyB0aGlzIGlzIHRoZSBvbGQgY29kZSB0aGF0IGZvcm1hdHMgdGhlIHRpbWVzdGFtcAorICAgICAgICB5ZWFyLCBtb250aCwgZGF5LCBoaCwgbW0sIHNzLCB3ZCwgeSwgeiA9IHRpbWUuZ210aW1lKG5vdykKKyAgICAgICAgZXhwZWN0ZWQgPSAiJXMsICUwMmQgJTNzICU0ZCAlMDJkOiUwMmQ6JTAyZCBHTVQiICUgKAorICAgICAgICAgICAgc2VsZi5oYW5kbGVyLndlZWtkYXluYW1lW3dkXSwKKyAgICAgICAgICAgIGRheSwKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci5tb250aG5hbWVbbW9udGhdLAorICAgICAgICAgICAgeWVhciwgaGgsIG1tLCBzcworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oYW5kbGVyLmRhdGVfdGltZV9zdHJpbmcodGltZXN0YW1wPW5vdyksIGV4cGVjdGVkKQorCisKIGNsYXNzIFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiIgVGVzdCB1cmwgcGFyc2luZyAiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lkbGUucHkgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKaW5kZXggMTQxZTg5ZS4uZGEwNWRhNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQpAQCAtMSwxNiArMSwyMyBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfbW9kdWxlCiAKLSMgU2tpcCB0ZXN0IGlmIF90aHJlYWQgb3IgX3RraW50ZXIgd2Fzbid0IGJ1aWx0IG9yIGlkbGVsaWIgd2FzIGRlbGV0ZWQuCisjIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCwgaWYgaWRsZWxpYiBpcyBtaXNzaW5nLAorIyBvciBpZiB0Y2wvdGsgaXMgbm90IHRoZSA4LjUrIG5lZWRlZCBmb3IgdHRrIHdpZGdldHMuCiBpbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKSAgIyBpbXBvcnRlZCBieSBQeVNoZWxsLCBpbXBvcnRzIF90aHJlYWQKIHRrID0gaW1wb3J0X21vZHVsZSgndGtpbnRlcicpICAjIGltcG9ydHMgX3RraW50ZXIKLWlkbGV0ZXN0ID0gaW1wb3J0X21vZHVsZSgnaWRsZWxpYi5pZGxlX3Rlc3QnKQoraWYgdGsuVGtWZXJzaW9uIDwgOC41OgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJJRExFIHJlcXVpcmVzIHRrIDguNSBvciBsYXRlci4iKQoraWRsZWxpYiA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWInKQogCi0jIFdpdGhvdXQgdGVzdF9tYWluIHByZXNlbnQsIHJlZ3J0ZXN0LnJ1bnRlc3RfaW5uZXIgKGxpbmUxMjE5KSBjYWxscwotIyB1bml0dGVzdC5UZXN0TG9hZGVyKCkubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGlzX21vZHVsZSkgd2hpY2ggY2FsbHMKLSMgbG9hZF90ZXN0cygpIGlmIGl0IGZpbmRzIGl0LiAoVW5pdHRlc3QubWFpbiBkb2VzIHRoZSBzYW1lLikKLWxvYWRfdGVzdHMgPSBpZGxldGVzdC5sb2FkX3Rlc3RzCisjIEJlZm9yZSB0ZXN0IGltcG9ydHMsIHRlbGwgSURMRSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgZW52aXJvbm1lbnQuCitpZGxlbGliLnRlc3RpbmcgPSBUcnVlCisKKyMgdW5pdHRlc3QubWFpbiBhbmQgdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0LnJ1bnRlc3RfaW5uZXIKKyMgY2FsbCBsb2FkX3Rlc3RzLCB3aGVuIHByZXNlbnQsIHRvIGRpc2NvdmVyIHRlc3RzIHRvIHJ1bi4KK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QgaW1wb3J0IGxvYWRfdGVzdHMKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIHRrLk5vRGVmYXVsdFJvb3QoKQorICAgIHVuaXR0ZXN0Lm1haW4oZXhpdD1GYWxzZSkKKyAgICB0ay5fc3VwcG9ydF9kZWZhdWx0X3Jvb3QgPSAxCisgICAgdGsuX2RlZmF1bHRfcm9vdCA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQppbmRleCAwNzE1N2Y1Li42M2FjODEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CkBAIC03Nyw5ICs3Nyw5IEBACiAKICAgICAgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgogICAgICAgICAgICAgbmV3c29ja2V0LCBmcm9tYWRkciA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCi0gICAgICAgICAgICBjb25uc3RyZWFtID0gc3NsLndyYXBfc29ja2V0KG5ld3NvY2tldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBjb25uc3RyZWFtID0gY29udGV4dC53cmFwX3NvY2tldChuZXdzb2NrZXQsIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgICAgICByZXR1cm4gY29ubnN0cmVhbSwgZnJvbWFkZHIKIAogICAgIElNQVA0X1NTTCA9IGltYXBsaWIuSU1BUDRfU1NMCkBAIC0yNDMsNiArMjQzLDU1IEBACiAgICAgICAgICAgICBjbGllbnQuc2h1dGRvd24oKQogCiAgICAgQHJlYXBfdGhyZWFkcworICAgIGRlZiB0ZXN0X2JyYWNrZXRfZmxhZ3Moc2VsZik6CisKKyAgICAgICAgIyBUaGlzIHZpb2xhdGVzIFJGQyAzNTAxLCB3aGljaCBkaXNhbGxvd3MgJ10nIGNoYXJhY3RlcnMgaW4gdGFnIG5hbWVzLAorICAgICAgICAjIGJ1dCBpbWFwbGliIGhhcyBhbGxvd2VkIHByb2R1Y2luZyBzdWNoIHRhZ3MgZm9yZXZlciwgb3RoZXIgcHJvZ3JhbXMKKyAgICAgICAgIyBhbHNvIHByb2R1Y2UgdGhlbSAoZWc6IE90aGVySW5ib3gncyBPcmdhbml6ZXIgYXBwIGFzIG9mIDIwMTQwNzE2KSwKKyAgICAgICAgIyBhbmQgR21haWwsIGZvciBleGFtcGxlLCBhY2NlcHRzIHRoZW0gYW5kIHByb2R1Y2VzIHRoZW0uICBTbyB3ZQorICAgICAgICAjIHN1cHBvcnQgdGhlbS4gIFNlZSBpc3N1ZSAjMjE4MTUuCisKKyAgICAgICAgY2xhc3MgQnJhY2tldEZsYWdIYW5kbGVyKFNpbXBsZUlNQVBIYW5kbGVyKToKKworICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzID0gWydBbnN3ZXJlZCcsICdGbGFnZ2VkJywgJ0RlbGV0ZWQnLCAnU2VlbicsICdEcmFmdCddCisgICAgICAgICAgICAgICAgc3VwZXIoKS5oYW5kbGUoKQorCisgICAgICAgICAgICBkZWYgY21kX0FVVEhFTlRJQ0FURShzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGV4dGxpbmUoJysnKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlc3BvbnNlID0geWllbGQKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdGQUtFQVVUSCBzdWNjZXNzZnVsJykKKworICAgICAgICAgICAgZGVmIGNtZF9TRUxFQ1Qoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBmbGFnX21zZyA9ICcgXFwnLmpvaW4oc2VsZi5mbGFncykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUoKCcqIEZMQUdTICglcyknICUgZmxhZ19tc2cpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUoYicqIDIgRVhJU1RTJykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUoYicqIDAgUkVDRU5UJykKKyAgICAgICAgICAgICAgICBtc2cgPSAoJyogT0sgW1BFUk1BTkVOVEZMQUdTICVzIFxcKildIEZsYWdzIHBlcm1pdHRlZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAlIGZsYWdfbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShtc2cuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ1tSRUFELVdSSVRFXSBTRUxFQ1QgY29tcGxldGVkLicpCisKKyAgICAgICAgICAgIGRlZiBjbWRfU1RPUkUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBhcmdzWzJdLnN0cmlwKCcoJykuc3RyaXAoJyknKS5zcGxpdCgpCisgICAgICAgICAgICAgICAgc2VsZi5mbGFncy5leHRlbmQobmV3X2ZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdzX21zZyA9ICcoRkxBR1MgKCVzKSknICUgJyBcXCcuam9pbihzZWxmLmZsYWdzKQorICAgICAgICAgICAgICAgIG1zZyA9ICcqICVzIEZFVENIICVzJyAlIChhcmdzWzBdLCBmbGFnc19tc2cpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKG1zZy5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnU1RPUkUgY29tcGxldGVkLicpCisKKyAgICAgICAgd2l0aCBzZWxmLnJlYXBlZF9wYWlyKEJyYWNrZXRGbGFnSGFuZGxlcikgYXMgKHNlcnZlciwgY2xpZW50KToKKyAgICAgICAgICAgIGNvZGUsIGRhdGEgPSBjbGllbnQuYXV0aGVudGljYXRlKCdNWUFVVEgnLCBsYW1iZGEgeDogYidmYWtlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgJ09LJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnJlc3BvbnNlLCBiJ1ptRnJaUT09XHJcbicpCisgICAgICAgICAgICBjbGllbnQuc2VsZWN0KCd0ZXN0JykKKyAgICAgICAgICAgIHR5cCwgW2RhdGFdID0gY2xpZW50LnN0b3JlKGInMScsICIrRkxBR1MiLCAiW3Rlc3RdIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidbdGVzdF0nLCBkYXRhKQorICAgICAgICAgICAgY2xpZW50LnNlbGVjdCgndGVzdCcpCisgICAgICAgICAgICB0eXAsIFtkYXRhXSA9IGNsaWVudC5yZXNwb25zZSgnUEVSTUFORU5URkxBR1MnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1t0ZXN0XScsIGRhdGEpCisKKyAgICBAcmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RfaXNzdWU1OTQ5KHNlbGYpOgogCiAgICAgICAgIGNsYXNzIEVPRkhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKQEAgLTU4OSw4ICs2MzgsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9jZXJ0ZmlsZShzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKLSAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIGNlcnRmaWxlPUNFUlRGSUxFKQotICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQogCiAgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X3NzbF9jb250ZXh0KHNlbGYpOgogICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQppbmRleCBiNTRkYWY4Li40NzZiYTk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBpbWdoZHIKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgVEVTVEZOLCB1bmxpbmsKQEAgLTQ5LDYgKzUwLDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltZ2hkci53aGF0KE5vbmUsIGRhdGEpLCBleHBlY3RlZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1naGRyLndoYXQoTm9uZSwgYnl0ZWFycmF5KGRhdGEpKSwgZXhwZWN0ZWQpCiAKKyAgICBkZWYgdGVzdF9wYXRobGlrZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZm9yIGZpbGVuYW1lLCBleHBlY3RlZCBpbiBURVNUX0ZJTEVTOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZmlsZW5hbWU9ZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gZmluZGZpbGUoZmlsZW5hbWUsIHN1YmRpcj0naW1naGRyZGF0YScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWdoZHIud2hhdChwYXRobGliLlBhdGgoZmlsZW5hbWUpKSwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9yZWdpc3Rlcl90ZXN0KHNlbGYpOgogICAgICAgICBkZWYgdGVzdF9qdW1ibyhoLCBmaWxlKToKICAgICAgICAgICAgIGlmIGguc3RhcnRzd2l0aChiJ2VnZ3MnKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKaW5kZXggZWU5ZWUxYS4uNGVjZTM2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKQEAgLTYsMTMgKzYsMTIgQEAKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICBpbXBvcnQgaW1wCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQppbmRleCAxZTMzMjc0Li43NjA5MDhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weQpAQCAtNjksNiArNjksMTggQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCiAKKyAgICBkZWYgdGVzdF9pbXBvcnRfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgc29tZXRoaW5nX3RoYXRfc2hvdWxkX25vdF9leGlzdF9hbnl3aGVyZQorCisgICAgZGVmIHRlc3RfZnJvbV9pbXBvcnRfbWlzc2luZ19tb2R1bGVfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICBmcm9tIHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUgaW1wb3J0IGJsYWgKKworICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21pc3NpbmdfYXR0cl9yYWlzZXNfSW1wb3J0RXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUKKwogICAgIGRlZiB0ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkoc2VsZik6CiAgICAgICAgICMgQnJpZWYgZGlncmVzc2lvbiB0byB0ZXN0IHRoYXQgaW1wb3J0IGlzIGNhc2Utc2Vuc2l0aXZlOiAgaWYgd2UgZ290CiAgICAgICAgICMgdGhpcyBmYXIsIHdlIGtub3cgZm9yIHN1cmUgdGhhdCAicmFuZG9tIiBleGlzdHMuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCBjMTEyY2E3Li4wZGQ5Yzg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcF9leHRlcm5hbAotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtOSw4ICs4LDYgQEAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIAotIyBYWFggZmluZF9zcGVjIHRlc3RzCi0KIEB1bml0dGVzdC5za2lwSWYodXRpbC5FWFRFTlNJT05TLmZpbGVuYW1lIGlzIE5vbmUsICdfdGVzdGNhcGkgbm90IGF2YWlsYWJsZScpCiBAdXRpbC5jYXNlX2luc2Vuc2l0aXZlX3Rlc3RzCiBjbGFzcyBFeHRlbnNpb25Nb2R1bGVDYXNlU2Vuc2l0aXZpdHlUZXN0KHV0aWwuQ0FTRU9LVGVzdEJhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CmluZGV4IDcxYmY2N2YuLmM5YjRhMzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogCi0jIFhYWCBmaW5kX3NwZWMgdGVzdHMKIAogY2xhc3MgRmluZGVyVGVzdHMoYWJjLkZpbmRlclRlc3RzKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IDhmNGI4YmIuLmE0YjVhNjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTIsOCArMiw2IEBACiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKLWltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CmluZGV4IDYwM2M3ZDcuLjI5ZWNmZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKQEAgLTMsOCArMyw2IEBACiAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKLQotaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCBjN2QzYTJhLi43ZjY0NTQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CkBAIC01LDYgKzUsNyBAQAogCiAiIiIKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIC4uIGltcG9ydCB1dGlsCiAKIApAQCAtMzMsMzEgKzM0LDUwIEBACiAKICAgICAiIiIKIAotICAgIGRlZiB0ZXN0X3VzaW5nX19fcGFja2FnZV9fKHNlbGYpOgotICAgICAgICAjIFtfX3BhY2thZ2VfX10KKyAgICBkZWYgaW1wb3J0X21vZHVsZShzZWxmLCBnbG9iYWxzXyk6CiAgICAgICAgIHdpdGggc2VsZi5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuZmFrZScpIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6CiAgICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdwa2cuZmFrZScpCiAgICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fX2ltcG9ydF9fKCcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPXsnX19wYWNrYWdlX18nOiAncGtnLmZha2UnfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3Q9WydhdHRyJ10sIGxldmVsPTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFsc18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQorICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICBkZWYgdGVzdF91c2luZ19fX3BhY2thZ2VfXyhzZWxmKToKKyAgICAgICAgIyBbX19wYWNrYWdlX19dCisgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJ30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKIAotICAgIGRlZiB0ZXN0X3VzaW5nX19fbmFtZV9fKHNlbGYsIHBhY2thZ2VfYXNfTm9uZT1GYWxzZSk6CisgICAgZGVmIHRlc3RfdXNpbmdfX19uYW1lX18oc2VsZik6CiAgICAgICAgICMgW19fbmFtZV9fXQotICAgICAgICBnbG9iYWxzXyA9IHsnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXX0KLSAgICAgICAgaWYgcGFja2FnZV9hc19Ob25lOgotICAgICAgICAgICAgZ2xvYmFsc19bJ19fcGFja2FnZV9fJ10gPSBOb25lCi0gICAgICAgIHdpdGggc2VsZi5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cuZmFrZScpIGFzIGltcG9ydGVyOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdwa2cuZmFrZScpCi0gICAgICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5fX2ltcG9ydF9fKCcnLCBnbG9iYWxzPSBnbG9iYWxzXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX25hbWVfXyc6ICdwa2cuZmFrZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFtdfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfd2Fybl93aGVuX3VzaW5nX19fbmFtZV9fKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoSW1wb3J0V2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF9tb2R1bGUoeydfX25hbWVfXyc6ICdwa2cuZmFrZScsICdfX3BhdGhfXyc6IFtdfSkKIAogICAgIGRlZiB0ZXN0X05vbmVfYXNfX19wYWNrYWdlX18oc2VsZik6CiAgICAgICAgICMgW05vbmVdCi0gICAgICAgIHNlbGYudGVzdF91c2luZ19fX25hbWVfXyhwYWNrYWdlX2FzX05vbmU9VHJ1ZSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsKKyAgICAgICAgICAgICAgICAnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXSwgJ19fcGFja2FnZV9fJzogTm9uZSB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zcGVjX2ZhbGxiYWNrKHNlbGYpOgorICAgICAgICAjIElmIF9fcGFja2FnZV9fIGlzbid0IGRlZmluZWQsIGZhbGwgYmFjayBvbiBfX3NwZWNfXy5wYXJlbnQuCisgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7J19fc3BlY19fJzogRmFrZVNwZWMoJ3BrZy5mYWtlJyl9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisKKyAgICBkZWYgdGVzdF93YXJuX3doZW5fcGFja2FnZV9hbmRfc3BlY19kaXNhZ3JlZShzZWxmKToKKyAgICAgICAgIyBSYWlzZSBhbiBJbXBvcnRXYXJuaW5nIGlmIF9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudC4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEltcG9ydFdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19wYWNrYWdlX18nOiAncGtnLmZha2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19zcGVjX18nOiBGYWtlU3BlYygncGtnLmZha2VmYWtlJyl9KQogCiAgICAgZGVmIHRlc3RfYmFkX19wYWNrYWdlX18oc2VsZik6CiAgICAgICAgIGdsb2JhbHMgPSB7J19fcGFja2FnZV9fJzogJzxub3QgcmVhbD4nfQpAQCAtNzAsNiArOTAsMTEgQEAKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnJywgZ2xvYmFscywge30sIFsncmVsaW1wb3J0J10sIDEpCiAKIAorY2xhc3MgRmFrZVNwZWM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisKKwogY2xhc3MgVXNpbmdfX3BhY2thZ2VfX1BFUDMwMihVc2luZ19fcGFja2FnZV9fKToKICAgICBtb2NrX21vZHVsZXMgPSB1dGlsLm1vY2tfbW9kdWxlcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQppbmRleCA3MDY5ZDllLi5hN2JmMjc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKQEAgLTQzLDYgKzQzLDEwIEBACiAgICAgIiIiVGVzdCBBUEktc3BlY2lmaWMgZGV0YWlscyBmb3IgX19pbXBvcnRfXyAoZS5nLiByYWlzaW5nIHRoZSByaWdodAogICAgIGV4Y2VwdGlvbiB3aGVuIHBhc3NpbmcgaW4gYW4gaW50IGZvciB0aGUgbW9kdWxlIG5hbWUpLiIiIgogCisgICAgZGVmIHRlc3RfcmFpc2VzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ3NvbWUgbW9kdWxlIHRoYXQgZG9lcyBub3QgZXhpc3QnKQorCiAgICAgZGVmIHRlc3RfbmFtZV9yZXF1aXJlc19ycGFyaXRpb24oc2VsZik6CiAgICAgICAgICMgUmFpc2UgVHlwZUVycm9yIGlmIGEgbm9uLXN0cmluZyBpcyBwYXNzZWQgaW4gZm9yIHRoZSBtb2R1bGUgbmFtZS4KICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IDgwNDU0NjUuLjE0NjQwMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKQEAgLTczLDE2ICs3MywxNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ21vZHVsZScpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi0gICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fcGFja2FnZV90cmlnZ2Vyc19JbXBvcnRFcnJvcihzZWxmKToKLSAgICAgICAgIyBJZiBhIHN1Ym1vZHVsZSBjYXVzZXMgYW4gSW1wb3J0RXJyb3IgYmVjYXVzZSBpdCB0cmllcyB0byBpbXBvcnQKLSAgICAgICAgIyBhIG1vZHVsZSB3aGljaCBkb2Vzbid0IGV4aXN0LCB0aGF0IHNob3VsZCBsZXQgdGhlIEltcG9ydEVycm9yCi0gICAgICAgICMgcHJvcGFnYXRlLgorICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfTW9kdWxlTm90Rm91bmRFcnJvcihzZWxmKToKKyAgICAgICAgIyBJZiBhIHN1Ym1vZHVsZSBjYXVzZXMgYW4gTW9kdWxlTm90Rm91bmRFcnJvciBiZWNhdXNlIGl0IHRyaWVzCisgICAgICAgICMgdG8gaW1wb3J0IGEgbW9kdWxlIHdoaWNoIGRvZXNuJ3QgZXhpc3QsIHRoYXQgc2hvdWxkIGxldCB0aGUKKyAgICAgICAgIyBNb2R1bGVOb3RGb3VuZEVycm9yIHByb3BhZ2F0ZS4KICAgICAgICAgZGVmIG1vZHVsZV9jb2RlKCk6CiAgICAgICAgICAgICBpbXBvcnQgaV9kb19ub3RfZXhpc3QKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnLm1vZCc6IG1vZHVsZV9jb2RlfSkgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhNb2R1bGVOb3RGb3VuZEVycm9yKSBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnJywgZnJvbWxpc3Q9Wydtb2QnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdpX2RvX25vdF9leGlzdCcsIGV4Yy5leGNlcHRpb24ubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CmluZGV4IDM3NTViODQuLjI0Mzk2MDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTEsNyArMSw2IEBACiBmcm9tIC4uIGltcG9ydCB1dGlsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKaW5kZXggYjMyYTg3Ni4uN2FhMjZiMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKQEAgLTE2LDExICsxNiwxNCBAQAogCiAgICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCiAKKyAgICBmaW5kID0gTm9uZQorICAgIGNoZWNrX2ZvdW5kID0gTm9uZQorCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBUZXN0IE5vbmUgcmV0dXJuZWQgdXBvbiBub3QgZmluZGluZyBhIHN1aXRhYmxlIGxvYWRlci4KICAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZChtb2R1bGUpKQogCiAgICAgZGVmIHRlc3Rfc3lzX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoIGlzIHVzZWQgd2hlbiAncGF0aCcgaXMgTm9uZS4KQEAgLTMwLDggKzMzLDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3VuZChmb3VuZCwgaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCAncGF0aCcgaXMgdXNlZCB3aGVuIHNldC4KQEAgLTQwLDggKzQzLDggQEAKICAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9KToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfbGlzdChzZWxmKToKICAgICAgICAgIyBBbiBlbXB0eSBsaXN0IHNob3VsZCBub3QgY291bnQgYXMgYXNraW5nIGZvciBzeXMucGF0aC4KQEAgLTUwLDcgKzUzLDcgQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ21vZHVsZScsIFtdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZCgnbW9kdWxlJywgW10pKQogCiAgICAgZGVmIHRlc3RfcGF0aF9ob29rcyhzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGhfaG9va3MgaXMgdXNlZC4KQEAgLTYwLDggKzYzLDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaG9va3M9W2hvb2tdKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUsIFtwYXRoXSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXRoLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF0sIGltcG9ydGVyKQogCkBAIC03Myw3ICs3Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF9lbnRyeV0pOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnb3MnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQoJ29zJykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF9lbnRyeV0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQpAQCAtODUsOCArODgsOCBAQAogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKICAgICAgICAgaG9vayA9IHV0aWwubW9ja19wYXRoX2hvb2sob3MuZ2V0Y3dkKCksIGltcG9ydGVyPWltcG9ydGVyKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5nZXRjd2QoKSwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCiAKICAgICBkZWYgdGVzdF9Ob25lX29uX3N5c19wYXRoKHNlbGYpOgpAQCAtMTgyLDE1ICsxODUsNTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCd3aGF0ZXZlcicpKQogCiAKK2NsYXNzIEZpbmRNb2R1bGVUZXN0cyhGaW5kZXJUZXN0cyk6CisgICAgZGVmIGZpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBjaGVja19mb3VuZChzZWxmLCBmb3VuZCwgaW1wb3J0ZXIpOgorICAgICAgICBzZWxmLmFzc2VydElzKGZvdW5kLCBpbXBvcnRlcikKIAogCi0oRnJvemVuX0ZpbmRlclRlc3RzLAotIFNvdXJjZV9GaW5kZXJUZXN0cwotICkgPSB1dGlsLnRlc3RfYm90aChGaW5kZXJUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKyhGcm96ZW5fRmluZE1vZHVsZVRlc3RzLAorIFNvdXJjZV9GaW5kTW9kdWxlVGVzdHMKKykgPSB1dGlsLnRlc3RfYm90aChGaW5kTW9kdWxlVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisKKworY2xhc3MgRmluZFNwZWNUZXN0cyhGaW5kZXJUZXN0cyk6CisgICAgZGVmIGZpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgY2hlY2tfZm91bmQoc2VsZiwgZm91bmQsIGltcG9ydGVyKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZC5sb2FkZXIsIGltcG9ydGVyKQorCisKKyhGcm96ZW5fRmluZFNwZWNUZXN0cywKKyBTb3VyY2VfRmluZFNwZWNUZXN0cworICkgPSB1dGlsLnRlc3RfYm90aChGaW5kU3BlY1Rlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQogCiAKIGNsYXNzIFBhdGhFbnRyeUZpbmRlclRlc3RzOgogCisgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmFpbGluZ19maW5kX3NwZWMoc2VsZik6CisgICAgICAgICMgUGF0aEVudHJ5RmluZGVyIHdpdGggZmluZF9tb2R1bGUoKSBkZWZpbmVkIHNob3VsZCB3b3JrLgorICAgICAgICAjIElzc3VlICMyMDc2My4KKyAgICAgICAgY2xhc3MgRmluZGVyOgorICAgICAgICAgICAgcGF0aF9sb2NhdGlvbiA9ICd0ZXN0X2ZpbmRlcl93aXRoX2ZpbmRfbW9kdWxlJworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIGlmIHBhdGggIT0gc2VsZi5wYXRoX2xvY2F0aW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZmluZF9tb2R1bGUoZnVsbG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W0ZpbmRlci5wYXRoX2xvY2F0aW9uXStzeXMucGF0aFs6XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzPVtGaW5kZXJdKToKKyAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCdpbXBvcnRsaWInKQorCiAgICAgZGVmIHRlc3RfZmluZGVyX3dpdGhfZmFpbGluZ19maW5kX21vZHVsZShzZWxmKToKICAgICAgICAgIyBQYXRoRW50cnlGaW5kZXIgd2l0aCBmaW5kX21vZHVsZSgpIGRlZmluZWQgc2hvdWxkIHdvcmsuCiAgICAgICAgICMgSXNzdWUgIzIwNzYzLgpAQCAtMjA3LDcgKzI0NSw3IEBACiAKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtGaW5kZXIucGF0aF9sb2NhdGlvbl0rc3lzLnBhdGhbOl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1bRmluZGVyXSk6Ci0gICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnaW1wb3J0bGliJykKKyAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ2ltcG9ydGxpYicpCiAKIAogKEZyb3plbl9QRUZUZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggM2JiODE5Zi4uOGE5NWEzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKQEAgLTEsNyArMSw4IEBACiAiIiJUZXN0IHJlbGF0aXZlIGltcG9ydHMgKFBFUCAzMjgpLiIiIgogZnJvbSAuLiBpbXBvcnQgdXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKwogCiBjbGFzcyBSZWxhdGl2ZUltcG9ydHM6CiAKQEAgLTY1LDkgKzY2LDExIEBACiAgICAgICAgICAgICAgICAgdW5jYWNoZV9uYW1lcy5hcHBlbmQobmFtZVs6LWxlbignLl9faW5pdF9fJyldKQogICAgICAgICB3aXRoIHV0aWwubW9ja19zcGVjKCpjcmVhdGUpIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgZm9yIGdsb2JhbF8gaW4gZ2xvYmFsc186Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCp1bmNhY2hlX25hbWVzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGdsb2JhbF8pCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICAgICAgICAgIGZvciBnbG9iYWxfIGluIGdsb2JhbHNfOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoKnVuY2FjaGVfbmFtZXMpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGdsb2JhbF8pCiAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX21vZHVsZShzZWxmKToKQEAgLTIwNCwxMSArMjA3LDE4IEBACiAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fZ2xvYmFscyhzZWxmKToKICAgICAgICAgIyBObyBnbG9iYWxzIGZvciBhIHJlbGF0aXZlIGltcG9ydCBpcyBhbiBlcnJvci4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgbGV2ZWw9MSkKKworICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF9ub19wYWNrYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnYScsIHsnX19wYWNrYWdlX18nOiAnJywgJ19fc3BlY19fJzogTm9uZX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MSkKIAogICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF9ub19wYWNrYWdlX2V4aXN0c19hYnNvbHV0ZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCB7J19fcGFja2FnZV9fJzogJycsICdfX3NwZWNfXyc6IE5vbmV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTEpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1YmUxMWYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0iIiJSdW4gUHl0aG9uJ3Mgc3RhbmRhcmQgdGVzdCBzdWl0ZSB1c2luZyBpbXBvcnRsaWIuX19pbXBvcnRfXy4KLQotVGVzdHMga25vd24gdG8gZmFpbCBiZWNhdXNlIG9mIGFzc3VtcHRpb25zIHRoYXQgaW1wb3J0bGliIChwcm9wZXJseSkKLWludmFsaWRhdGVzIGFyZSBhdXRvbWF0aWNhbGx5IHNraXBwZWQgaWYgdGhlIGVudGlyZSB0ZXN0IHN1aXRlIGlzIHJ1bi4KLU90aGVyd2lzZSBhbGwgY29tbWFuZC1saW5lIG9wdGlvbnMgdmFsaWQgZm9yIHRlc3QucmVncnRlc3QgYXJlIGFsc28gdmFsaWQgZm9yCi10aGlzIHNjcmlwdC4KLQotIiIiCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKLQotICAgIHJlZ3J0ZXN0Lm1haW4ocXVpZXQ9VHJ1ZSwgdmVyYm9zZTI9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDM0Yjg2Y2QuLjEyY2UwY2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtNSw3ICs1LDYgQEAKIG1hY2hpbmVyeSA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLm1hY2hpbmVyeScpCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0IGFzIHRlc3Rfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKaW5kZXggNzNmNGM2Mi4uYTE1MTE0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTIxNyw3ICsyMTcsNyBAQAogICAgICAgICAgICAgIyBQRVAgMzAyCiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpICMgWFhYCisgICAgICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAjIFNhbml0eSBjaGVja3MuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX2NhY2hlZF9fLCBjb21waWxlZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLngsIDUpCkBAIC0yNDUsMTIgKzI0NSw3IEBACiBjbGFzcyBCYWRCeXRlY29kZVRlc3Q6CiAKICAgICBkZWYgaW1wb3J0XyhzZWxmLCBmaWxlLCBtb2R1bGVfbmFtZSk6Ci0gICAgICAgIGxvYWRlciA9IHNlbGYubG9hZGVyKG1vZHVsZV9uYW1lLCBmaWxlKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICMgWFhYIENoYW5nZSB0byB1c2UgZXhlY19tb2R1bGUoKS4KLSAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGVfbmFtZSwgc3lzLm1vZHVsZXMpCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBtYW5pcHVsYXRlX2J5dGVjb2RlKHNlbGYsIG5hbWUsIG1hcHBpbmcsIG1hbmlwdWxhdG9yLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9RmFsc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CmluZGV4IGU2YTI0MTUuLjc5NWQ0MzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKQEAgLTE2LDEwICsxNiwxOSBAQAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfc3BlYycpKQorCisgICAgZGVmIHRlc3Rfc3VjY2Vzc19sZWdhY3koc2VsZik6CisgICAgICAgIHdpdGggdXRpbC5jcmVhdGVfbW9kdWxlcygnZHVtbXknKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKShtYXBwaW5nWycucm9vdCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfc3BlYycpKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nX2xlZ2FjeShzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQppbmRleCAxZTA3NzFiLi45ODA4NTVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgcmUKLWltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwogIyBCZWNhdXNlIHN5cy5wYXRoIGdldHMgZXNzZW50aWFsbHkgYmxhbmtlZCwgbmVlZCB0byBoYXZlIHVuaWNvZGVkYXRhIGFscmVhZHkKICMgaW1wb3J0ZWQgZm9yIHRoZSBwYXJzZXIgdG8gdXNlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCBkNGJmOTE1Li5jODYyNDgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQpAQCAtMjA3LDYgKzIwNywxMCBAQAogCiAgICAgU1BMSVQgPSBtYWtlX2FiY19zdWJjbGFzc2VzKExvYWRlcikKIAorICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGUoc2VsZik6CisgICAgICAgIHNwZWMgPSAnYSBzcGVjJworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmlucy5jcmVhdGVfbW9kdWxlKHNwZWMpKQorCiAgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGUoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgc2VsZi5pbnMubG9hZF9tb2R1bGUoJ3NvbWV0aGluZycpCkBAIC01MTksNiArNTIzLDEyIEBACiAgICAgICAgIHN1cHBvcnQudW5sb2FkKHNlbGYubW9kdWxlX25hbWUpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubG9hZCwgc2VsZi5tb2R1bGVfbmFtZSkKIAorICAgIGRlZiBsb2FkKHNlbGYsIGxvYWRlcik6CisgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuc3BlY19mcm9tX2xvYWRlcihzZWxmLm1vZHVsZV9uYW1lLCBsb2FkZXIpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5pdC5fYm9vdHN0cmFwLl9sb2FkX3VubG9ja2VkKHNwZWMpCisKICAgICBkZWYgbW9ja19nZXRfY29kZShzZWxmKToKICAgICAgICAgcmV0dXJuIG1vY2sucGF0Y2gub2JqZWN0KHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzLCAnZ2V0X2NvZGUnKQogCkBAIC01MjgsOSArNTM4LDcgQEAKICAgICAgICAgICAgIG1vY2tlZF9nZXRfY29kZS5zaWRlX2VmZmVjdCA9IEltcG9ydEVycm9yCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcygpCi0gICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkKGxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlX05vbmUoc2VsZik6CiAgICAgICAgICMgSWYgZ2V0X2NvZGUoKSByZXR1cm5zIE5vbmUsIHJhaXNlIEltcG9ydEVycm9yLgpAQCAtNTM4LDcgKzU0Niw3IEBACiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUucmV0dXJuX3ZhbHVlID0gTm9uZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZChsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV0dXJuZWQoc2VsZik6CiAgICAgICAgICMgVGhlIGxvYWRlZCBtb2R1bGUgc2hvdWxkIGJlIHJldHVybmVkLgpAQCAtNTQ2LDE0ICs1NTQsMTYgQEAKICAgICAgICAgd2l0aCBzZWxmLm1vY2tfZ2V0X2NvZGUoKSBhcyBtb2NrZWRfZ2V0X2NvZGU6CiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUucmV0dXJuX3ZhbHVlID0gY29kZQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWQobG9hZGVyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUsIHN5cy5tb2R1bGVzW3NlbGYubW9kdWxlX25hbWVdKQogCiAKIChGcm96ZW5fSUxMb2FkTW9kdWxlVGVzdHMsCiAgU291cmNlX0lMTG9hZE1vZHVsZVRlc3RzCiAgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoSW5zcGVjdExvYWRlckxvYWRNb2R1bGVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwpCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMLAorICAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ9aW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsPXV0aWwpCiAKIAogIyMjIyMgRXhlY3V0aW9uTG9hZGVyIGNvbmNyZXRlIG1ldGhvZHMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKaW5kZXggNmJjM2M1Ni4uYjBhOTRhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTk5LDkgKzk5LDcgQEAKIAogY2xhc3MgRmluZExvYWRlclRlc3RzOgogCi0gICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6Ci0gICAgICAgIEBzdGF0aWNtZXRob2QKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKG5hbWUsIHBhdGg9Tm9uZSk6IHJldHVybiBuYW1lLCBwYXRoCisgICAgRmFrZU1ldGFGaW5kZXIgPSBOb25lCiAKICAgICBkZWYgdGVzdF9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgIyBJZiBhIG1vZHVsZSB3aXRoIF9fbG9hZGVyX18gaXMgaW4gc3lzLm1vZHVsZXMsIHRoZW4gcmV0dXJuIGl0LgpAQCAtMTcxLDkgKzE2OSwzMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbml0LmZpbmRfbG9hZGVyKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQogCiAKLShGcm96ZW5fRmluZExvYWRlclRlc3RzLAotIFNvdXJjZV9GaW5kTG9hZGVyVGVzdHMKLSApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyVGVzdHMsIGluaXQ9aW5pdCkKK2NsYXNzIEZpbmRMb2FkZXJQRVA0NTFUZXN0cyhGaW5kTG9hZGVyVGVzdHMpOgorCisgICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGZpbmRfc3BlYyhuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBtYWNoaW5lcnlbJ1NvdXJjZSddLk1vZHVsZVNwZWMobmFtZSwgKG5hbWUsIHBhdGgpKQorCisKKyhGcm96ZW5fRmluZExvYWRlclBFUDQ1MVRlc3RzLAorIFNvdXJjZV9GaW5kTG9hZGVyUEVQNDUxVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyUEVQNDUxVGVzdHMsIGluaXQ9aW5pdCkKKworCitjbGFzcyBGaW5kTG9hZGVyUEVQMzAyVGVzdHMoRmluZExvYWRlclRlc3RzKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUsIHBhdGgKKworCisoRnJvemVuX0ZpbmRMb2FkZXJQRVAzMDJUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclBFUDMwMlRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclBFUDMwMlRlc3RzLCBpbml0PWluaXQpCiAKIAogY2xhc3MgUmVsb2FkVGVzdHM6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKaW5kZXggY2MzODNjMi4uZmZkOGRjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQpAQCAtNjYsNiArNjYsOCBAQAogICAgICAgICBzcGVjID0gdXRpbC5zcGVjX2Zyb21fbG9hZGVyKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLkxhenlMb2FkZXIobG9hZGVyKSkKICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQorICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lKQogICAgICAgICBtb2R1bGUuX19zcGVjX18gPSBzcGVjCiAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc3BlYy5sb2FkZXIKICAgICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKaW5kZXggZGYwYWYxMi4uYjJhYWRmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CkBAIC0zLDcgKzMsNiBAQAogaW5pdCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWInKQogCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2Vha3JlZgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQppbmRleCA2NjM5NjEyLi5lMzdkOGExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKQEAgLTEsMTMgKzEsMTAgQEAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW1wb3J0bGliLmFiYwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKICMgbmVlZGVkIHRlc3RzOgogIwpAQCAtNzEsNiArNjgsNyBAQAogICAgICAgICAjIFRPRE86IHdpbGwgd2UgZXZlciB3YW50IHRvIHBhc3MgZXhjX2luZm8gdG8gX19leGl0X18/CiAgICAgICAgIHNlbGYuY3R4Ll9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKKwogY2xhc3MgU2luZ2xlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIApAQCAtODcsNyArODUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZm9vKSwgIjxtb2R1bGUgJ2ZvbycgKG5hbWVzcGFjZSk+IikKIAogCi1jbGFzcyBEeW5hbWljUGF0aGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKK2NsYXNzIER5bmFtaWNQYXRoTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CiAgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KIAogICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKQEAgLTI4OSw1ICsyODcsMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhX3Rlc3QuYXR0ciwgJ2luIG1vZHVsZScpCiAKIAorY2xhc3MgUmVsb2FkVGVzdHMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwb3J0aW9uMSddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgICAgICAjIE5vdyBtb2RpZnkgc3lzLnBhdGggYW5kIHJlbG9hZC4KKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLnJvb3QsICdwb3J0aW9uMicpKQorICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKworICAgICAgICAjIEFuZCBtYWtlIHN1cmUgZm9vLnR3byBpcyBub3cgaW1wb3J0YWJsZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKaW5kZXggOGIzMzNlOC4uNWExNmEwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQpAQCAtNSw2ICs1LDcgQEAKIHV0aWwgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBhdGhsaWIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBDbGVhbkltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCkBAIC02NTksNiArNjYwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5jYWNoZWQsIHNlbGYuY2FjaGVkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc3BlYy5oYXNfbG9jYXRpb24pCiAKKyAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobGliLlB1cmVQYXRoKHNlbGYucGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BlYy5vcmlnaW4sIHNlbGYucGF0aCkKKwogICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX2RlZmF1bHRfd2l0aG91dF9sb2NhdGlvbihzZWxmKToKICAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQppbmRleCA0MWNhMzMzLi5kNjE1Mzc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0bGliX3V0aWwgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00NiwxNCArNDcsOCBAQAogICAgICAgICAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzcGVjID0gc2VsZi5tYWNoaW5lcnkuTW9kdWxlU3BlYygndGVzdCcsIExvYWRlcigpKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdjcmVhdGVfbW9kdWxlJywgc3RyKHdbMF0ubWVzc2FnZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBzcGVjLm5hbWUpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlX3JldHVybnNfTm9uZShzZWxmKToKICAgICAgICAgY2xhc3MgTG9hZGVyKHNlbGYuYWJjLkxvYWRlcik6CkBAIC02NzcsNiArNjcyLDE1IEBACiAgICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgbm90IGJlIE5vbmUnKQorICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHBhdGggPSBwYXRobGliLlB1cmVQYXRoKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBvcHRpbWl6YXRpb249JycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCiAgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGUoc2VsZik6CkBAIC03MzgsNiArNzQyLDE1IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgdG8gbm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uZScpCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuc291cmNlX2Zyb21fY2FjaGUocGF0aCksIGV4cGVjdCkKKwogCiAoRnJvemVuX1BFUDMxNDdUZXN0cywKICBTb3VyY2VfUEVQMzE0N1Rlc3RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKaW5kZXggYzg5M2JjZi4uMDA1YjY4NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQpAQCAtNDAsNyArNDAsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJvb3QgPSBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyLlJFR0lTVFJZX0tFWQogICAgIGtleSA9IHJvb3QuZm9ybWF0KGZ1bGxuYW1lPW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICB0cnk6CiAgICAgICAgIHdpdGggdGVtcF9tb2R1bGUobmFtZSwgImEgPSAxIikgYXMgbG9jYXRpb246CiAgICAgICAgICAgICBzdWJrZXkgPSBDcmVhdGVLZXkoSEtFWV9DVVJSRU5UX1VTRVIsIGtleSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCA2NzFlMDVhLi45NzYzNGU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC0zMCw2ICszMCw3IEBACiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIgYXMgbW9kCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyMiBhcyBtb2QyCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0IGltcG9ydCBfcmVhZHlfdG9faW1wb3J0CiAKQEAgLTM4LDcgKzM5LDcgQEAKICMgaXNtb2R1bGUsIGlzY2xhc3MsIGlzbWV0aG9kLCBpc2Z1bmN0aW9uLCBpc3RyYWNlYmFjaywgaXNmcmFtZSwgaXNjb2RlLAogIyBpc2J1aWx0aW4sIGlzcm91dGluZSwgaXNnZW5lcmF0b3IsIGlzZ2VuZXJhdG9yZnVuY3Rpb24sIGdldG1lbWJlcnMsCiAjIGdldGRvYywgZ2V0ZmlsZSwgZ2V0bW9kdWxlLCBnZXRzb3VyY2VmaWxlLCBnZXRjb21tZW50cywgZ2V0c291cmNlLAotIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3NwZWMsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAorIyBnZXRjbGFzc3RyZWUsIGdldGFyZ3ZhbHVlcywgZm9ybWF0YXJnc3BlYywgZm9ybWF0YXJndmFsdWVzLAogIyBjdXJyZW50ZnJhbWUsIHN0YWNrLCB0cmFjZSwgaXNkYXRhZGVzY3JpcHRvcgogCiAjIE5PVEU6IFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdGVzdHMgcmVsYXRpbmcgdG8gaW50ZXJhY3Rpb24gd2l0aApAQCAtNjQsNyArNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNmcmFtZSwgaW5zcGVjdC5pc2Z1bmN0aW9uLCBpbnNwZWN0LmlzbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNtb2R1bGUsIGluc3BlY3QuaXN0cmFjZWJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2dlbmVyYXRvciwgaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmUsIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbl0pCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNhc3luY2dlbiwgaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb25dKQogCiAgICAgZGVmIGlzdGVzdChzZWxmLCBwcmVkaWNhdGUsIGV4cCk6CiAgICAgICAgIG9iaiA9IGV2YWwoZXhwKQpAQCAtNzIsNiArNzQsNyBAQAogCiAgICAgICAgIGZvciBvdGhlciBpbiBzZWxmLnByZWRpY2F0ZXMgLSBzZXQoW3ByZWRpY2F0ZV0pOgogICAgICAgICAgICAgaWYgKHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24gb3IgXAorICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uIG9yIFwKICAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24pIGFuZCBcCiAgICAgICAgICAgICAgICBvdGhlciA9PSBpbnNwZWN0LmlzZnVuY3Rpb246CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTgxLDYgKzg0LDEwIEBACiAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CiAgICAgICAgIHlpZWxkIGkKIAorYXN5bmMgZGVmIGFzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgorICAgIGFzeW5jIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICB5aWVsZCBpCisKIGFzeW5jIGRlZiBjb3JvdXRpbmVfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKICAgICByZXR1cm4gJ3NwYW0nCiAKQEAgLTEyMSw2ICsxMjgsMTAgQEAKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2RhdGFkZXNjcmlwdG9yLCAnY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QuZGVmYXVsdF9mYWN0b3J5JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvciwgJyh4IGZvciB4IGluIHJhbmdlKDIpKScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwgJ2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKKyAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2FzeW5jZ2VuLAorICAgICAgICAgICAgICAgICAgICAnYXN5bmNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUoMSknKQorICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgJ2FzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlJykKIAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCkBAIC00MDAsNyArNDExLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUobW9kLnNwYW0pKSwgbW9kZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoZ2l0LmFidXNlKSksIG1vZGZpbGUpCiAgICAgICAgIGZuID0gIl9ub25fZXhpc3RpbmdfZmlsZW5hbWVfdXNlZF9mb3Jfc291cmNlZmlsZV90ZXN0LnB5IgotICAgICAgICBjbyA9IGNvbXBpbGUoIk5vbmUiLCBmbiwgImV4ZWMiKQorICAgICAgICBjbyA9IGNvbXBpbGUoIng9MSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQogICAgICAgICB0cnk6CkBAIC0yOTAyLDYgKzI5MTMsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJyQnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQogCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLmEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCkBAIC0yOTg1LDYgKzMwMDAsMTcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ25hbWUgbXVzdCBiZSBhIHN0cicpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCiAKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbXBsaWNpdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wbGljaXQgYXJndW1lbnRzIG11c3QgYmUgcGFzc2VkIGluIGFzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignLjAnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKworICAgICAgICBwYXJhbSA9IGluc3BlY3QuUGFyYW1ldGVyKAorICAgICAgICAgICAgJy4wJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0ua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLm5hbWUsICdpbXBsaWNpdDAnKQorCiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3BhcmFtZXRlcl9pbW11dGFiaWxpdHkoc2VsZik6CiAgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignc3BhbScsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQogCkBAIC0zMjMzLDYgKzMyNTksMTcgQEAKICAgICAgICAgYmEgPSBzaWcuYmluZChhcmdzPTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJndW1lbnRzLCB7J2t3YXJncyc6IHsnYXJncyc6IDF9fSkKIAorICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9pbXBsaWNpdF9hcmcoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE5NjExOiBnZXRjYWxsYXJncyBzaG91bGQgd29yayB3aXRoIHNldCBjb21wcmVoZW5zaW9ucworICAgICAgICBkZWYgbWFrZV9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7eiAqIHogZm9yIHogaW4gcmFuZ2UoNSl9CisgICAgICAgIHNldGNvbXBfY29kZSA9IG1ha2Vfc2V0Ll9fY29kZV9fLmNvX2NvbnN0c1sxXQorICAgICAgICBzZXRjb21wX2Z1bmMgPSB0eXBlcy5GdW5jdGlvblR5cGUoc2V0Y29tcF9jb2RlLCB7fSkKKworICAgICAgICBpdGVyYXRvciA9IGl0ZXIocmFuZ2UoNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHNldGNvbXBfZnVuYywgaXRlcmF0b3IpLCB7MCwgMSwgNCwgOSwgMTZ9KQorCiAKIGNsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgpAQCAtMzU0MywxNCArMzU4MCwxNCBAQAogCiAgICAgZGVmIHRlc3RfZGV0YWlscyhzZWxmKToKICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ3VuaXR0ZXN0JykKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAnaW5zcGVjdCcsCisgICAgICAgIGFyZ3MgPSBzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soKmFyZ3MsICctbScsICdpbnNwZWN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5pdHRlc3QnLCAnLS1kZXRhaWxzJykKICAgICAgICAgb3V0cHV0ID0gb3V0LmRlY29kZSgpCiAgICAgICAgICMgSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayBvbiB0aGUgb3V0cHV0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fbmFtZV9fLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fZmlsZV9fLCBvdXRwdXQpCi0gICAgICAgIGlmIG5vdCBzeXMuZmxhZ3Mub3B0aW1pemU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2NhY2hlZF9fLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fY2FjaGVkX18sIG91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ludC5weSBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CmluZGV4IGI2NmM1ZDYuLjE0YmJkNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW50LnB5CkBAIC0yLDYgKzIsOCBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBMID0gWwogICAgICAgICAoJzAnLCAwKSwKQEAgLTIxMiw2ICsyMTQsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzJicjQ1cWMnLCAzNSksIDQyOTQ5NjcyOTcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcxejE0MXo1JywgMzYpLCA0Mjk0OTY3Mjk3KQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBldmFsKGxpdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChsaXQsIDApLCBpbnQobGl0LnJlcGxhY2UoJ18nLCAnJyksIDApKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGFueShjaCBpbiBsaXQgZm9yIGNoIGluICcuZUVqSicpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIGxpdCwgMCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgd2l0aCBiYXNlcyAhPSAwLCBvbmx5IGZvciB0aGUgY29uc3RydWN0b3I6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIxXzAwIiwgMyksIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCIwXzEwMCIpLCAxMDApICAjIG5vdCB2YWxpZCBhcyBhIGxpdGVyYWwhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGIiMV8wMCIpLCAxMDApICAjIGJ5dGUgdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICJfMTAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiK18xMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIxX18wMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIjEwMF8iKQorCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc21hbGxfaW50cyhzZWxmKToKICAgICAgICAgIyBCdWcgIzMyMzY6IFJldHVybiBzbWFsbCBsb25ncyBmcm9tIFB5TG9uZ19Gcm9tU3RyaW5nCkBAIC00MzAsMjEgKzQ1MSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBiYWRfaW50ID0gQmFkSW50MigpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgbiA9IGludChiYWRfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogCiAgICAgICAgIGJhZF9pbnQgPSBUcnVuY1JldHVybnNCYWRJbnQoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBnb29kX2ludCA9IFRydW5jUmV0dXJuc0ludFN1YmNsYXNzKCkKICAgICAgICAgbiA9IGludChnb29kX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogICAgICAgICBuID0gSW50U3ViY2xhc3MoZ29vZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBJbnRTdWJjbGFzcykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDUxMTE4ODIuLjhhMjExMWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtNDk2LDcgKzQ5NiwxMSBAQAogICAgIGRlZiB0ZXN0X29wZW5faGFuZGxlc19OVUxfY2hhcnMoc2VsZik6CiAgICAgICAgIGZuX3dpdGhfTlVMID0gJ2Zvb1wwYmFyJwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGZuX3dpdGhfTlVMLCAndycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpLCAndycpCisKKyAgICAgICAgYnl0ZXNfZm4gPSBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzX2ZuLCAndycpCiAKICAgICBkZWYgdGVzdF9yYXdfZmlsZV9pbyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIsIGJ1ZmZlcmluZz0wKSBhcyBmOgpAQCAtODU2LDYgKzg2MCwzMiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihzdHJlYW0sIG1ldGhvZCkoYnVmZmVyKSwgNSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJ1ZmZlciksIGIiMTIzNDUiKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3N1cHBvcnQoc2VsZik6CisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgICAgIGRlZiBjaGVja19wYXRoX3N1Y2NlZWRzKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoImVnZ1xuIikKKworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4ocGF0aCwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJlZ2dcbiIpCisKKyAgICAgICAgY2hlY2tfcGF0aF9zdWNjZWVkcyhQYXRoTGlrZShzdXBwb3J0LlRFU1RGTikpCisgICAgICAgIGNoZWNrX3BhdGhfc3VjY2VlZHMoUGF0aExpa2Uoc3VwcG9ydC5URVNURk4uZW5jb2RlKCd1dGYtOCcpKSkKKworICAgICAgICBiYWRfcGF0aCA9IFBhdGhMaWtlKFR5cGVFcnJvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5vcGVuKGJhZF9wYXRoLCAndycpCisKKyAgICAgICAgIyBlbnN1cmUgdGhhdCByZWZjb3VudGluZyBpcyBjb3JyZWN0IHdpdGggc29tZSBlcnJvciBjb25kaXRpb25zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAncmVhZC93cml0ZS9hcHBlbmQgbW9kZScpOgorICAgICAgICAgICAgc2VsZi5vcGVuKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKSwgJ3J3eGEnKQorCiAKIGNsYXNzIENJT1Rlc3QoSU9UZXN0KToKIApAQCAtMTc4Miw3ICsxODEyLDcgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG1ldGhvZCk6CiAgICAgICAgICAgICAgICAgcGFpciA9IHNlbGYudHAoc2VsZi5CeXRlc0lPKGIiYWJjZGVmIiksIHNlbGYuTW9ja1Jhd0lPKCkpCiAKLSAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXNsaWtlKDUpCisgICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzbGlrZShiJ1wwJyAqIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBhaXIsIG1ldGhvZCkoZGF0YSksIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhkYXRhKSwgYiJhYmNkZSIpCiAKQEAgLTMyNDYsOCArMzI3Niw3IEBACiAKIGNsYXNzIFB5VGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogICAgIGlvID0gcHlpbwotICAgICNzaHV0ZG93bl9lcnJvciA9ICJMb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGluZzogYXNjaWkiCi0gICAgc2h1dGRvd25fZXJyb3IgPSAiVHlwZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiCisgICAgc2h1dGRvd25fZXJyb3IgPSAiTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGFzY2lpIgogCiAKIGNsYXNzIEluY3JlbWVudGFsTmV3bGluZURlY29kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKaW5kZXggOTFhZThkOC4uMGUzOTUxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkKQEAgLTExOSw3ICsxMTksNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CiAgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKLSAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBhZGRyID0gYidcMCcgKiBsZW5ndGgKICAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKICAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKQEAgLTEzOSwxMSArMTM5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMzIzMjIzNTUyMSwgIjo6YzBhODoxIikKIAogICAgIGRlZiB0ZXN0X3BhY2tlZChzZWxmKToKLSAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKKyAgICAgICAgYWRkciA9IGInXDAnKjEyICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCi0gICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIGFkZHIgPSBiJ1wwJyoxMiArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjpjMGE4OjEiKQotICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGJ5dGVzKDEyKQorICAgICAgICBhZGRyID0gYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKSArIGInXDAnKjEyCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgImMwYTg6MTo6IikKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2ludHNfcmVqZWN0ZWQoc2VsZik6CkBAIC0xNTgsNyArMTU4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6Ci0gICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgYWRkciA9IGInXDAnICogbGVuZ3RoCiAgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQpAQCAtMTE3Niw2ICsxMTc2LDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29ya1s1XSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjo1JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuX19nZXRpdGVtX18sIDEgPDwgNjQpCiAKICAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CiAgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKaW5kZXggYTkxNjcwYi4uNTQyYjI4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQpAQCAtNTQsNiArNTQsMTQgQEAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CiAgICAgICAgIHJldHVybiBpCiAKK2NsYXNzIERlZmF1bHRJdGVyQ2xhc3M6CisgICAgcGFzcworCitjbGFzcyBOb0l0ZXJDbGFzczoKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6CisgICAgICAgIHJldHVybiBpCisgICAgX19pdGVyX18gPSBOb25lCisKICMgTWFpbiB0ZXN0IHN1aXRlCiAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTk5NSw2ICsxMDAzLDEwIEBACiAgICAgZGVmIHRlc3RfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZik6CiAgICAgICAgIGNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIFNlcXVlbmNlQ2xhc3MsICgwLCkpCiAKKyAgICBkZWYgdGVzdF9lcnJvcl9pdGVyKHNlbGYpOgorICAgICAgICBmb3IgdHlwIGluIChEZWZhdWx0SXRlckNsYXNzLCBOb0l0ZXJDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGl0ZXIsIHR5cCgpKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoVGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKaW5kZXggMTUyZjVmYy4uNDFjOTc1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQpAQCAtNDIsNyArNDIsNiBAQAogIiIiCiAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcmVwZWF0CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBvcGVyYXRvciBpbXBvcnQgbGVuZ3RoX2hpbnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggZTA1NDMwMy4uZWExZjU3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgd2Vha3JlZgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHJhbmRvbQogaW1wb3J0IGNvcHkKQEAgLTY0NCwyNCArNjQzLDU4IEBACiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHByb3RvLCBjeWNsZSgnYWJjJykpCiAKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAjIHRlc3Qgd2l0aCBwYXJ0aWFsIGNvbnN1bWVkIGlucHV0IGl0ZXJhYmxlCisgICAgICAgICAgICBpdCA9IGl0ZXIoJ2FiY2RlJykKKyAgICAgICAgICAgIGMgPSBjeWNsZShpdCkKKyAgICAgICAgICAgIF8gPSBbbmV4dChjKSBmb3IgaSBpbiByYW5nZSgyKV0gICAgICAjIGNvbnN1bWUgMiBvZiA1IGlucHV0cworICAgICAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhjLCBwcm90bykKKyAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocCkgICAgICAgICAgICAgICAgICAjIHJlYnVpbGQgdGhlIGN5Y2xlIG9iamVjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBkKSwgbGlzdCgnY2RlYWJjZGVhYmNkZWFiY2RlYWInKSkKKworICAgICAgICAgICAgIyB0ZXN0IHdpdGggY29tcGxldGVseSBjb25zdW1lZCBpbnB1dCBpdGVyYWJsZQorICAgICAgICAgICAgaXQgPSBpdGVyKCdhYmNkZScpCisgICAgICAgICAgICBjID0gY3ljbGUoaXQpCisgICAgICAgICAgICBfID0gW25leHQoYykgZm9yIGkgaW4gcmFuZ2UoNyldICAgICAgIyBjb25zdW1lIDcgb2YgNSBpbnB1dHMKKyAgICAgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoYywgcHJvdG8pCisgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHApICAgICAgICAgICAgICAgICAgIyByZWJ1aWxkIHRoZSBjeWNsZSBvYmplY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgZCksIGxpc3QoJ2NkZWFiY2RlYWJjZGVhYmNkZWFiJykpCisKICAgICBkZWYgdGVzdF9jeWNsZV9zZXRzdGF0ZShzZWxmKToKKyAgICAgICAgIyBWZXJpZnkgYm90aCBtb2RlcyBmb3IgcmVzdG9yaW5nIHN0YXRlCisKKyAgICAgICAgIyBNb2RlIDAgaXMgZWZmaWNpZW50LiAgSXQgdXNlcyBhbiBpbmNvbXBsZXRlbHkgY29uc3VtZWQgaW5wdXQKKyAgICAgICAgIyBpdGVyYXRvciB0byBidWlsZCBhIGN5Y2xlIG9iamVjdCBhbmQgdGhlbiBwYXNzZXMgaW4gc3RhdGUgd2l0aAorICAgICAgICAjIGEgbGlzdCBvZiBwcmV2aW91c2x5IGNvbnN1bWVkIHZhbHVlcy4gIFRoZXJlIGlzIG5vIGRhdGEKKyAgICAgICAgIyBvdmVybGFwIGJldHdlZW4gdGhlIHR3by4KKyAgICAgICAgYyA9IGN5Y2xlKCdkZWZnJykKKyAgICAgICAgYy5fX3NldHN0YXRlX18oKGxpc3QoJ2FiYycpLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBjKSwgbGlzdCgnZGVmZ2FiY2RlZmdhYmNkZWZnYWInKSkKKworICAgICAgICAjIE1vZGUgMSBpcyBpbmVmZmljaWVudC4gIEl0IHN0YXJ0cyB3aXRoIGEgY3ljbGUgb2JqZWN0IGJ1aWx0CisgICAgICAgICMgZnJvbSBhbiBpdGVyYXRvciBvdmVyIHRoZSByZW1haW5pbmcgZWxlbWVudHMgaW4gYSBwYXJ0aWFsCisgICAgICAgICMgY3ljbGUgYW5kIHRoZW4gcGFzc2VzIGluIHN0YXRlIHdpdGggYWxsIG9mIHRoZSBwcmV2aW91c2x5CisgICAgICAgICMgc2VlbiB2YWx1ZXMgKHRoaXMgb3ZlcmxhcHMgdmFsdWVzIGluY2x1ZGVkIGluIHRoZSBpdGVyYXRvcikuCisgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgIGMuX19zZXRzdGF0ZV9fKChsaXN0KCdhYmNkZWZnJyksIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGMpLCBsaXN0KCdkZWZnYWJjZGVmZ2FiY2RlZmdhYicpKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IHRvIHNldHN0YXRlIG5lZWRzIHRvIGJlIGEgdHVwbGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY3ljbGUoJ2RlZmcnKS5fX3NldHN0YXRlX18oW2xpc3QoJ2FiY2RlZmcnKSwgMF0pCisKKyAgICAgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgaW4gdGhlIHNldHN0YXRlIHR1cGxlIG11c3QgYmUgYSBsaXN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgICAgICBjLl9fc2V0c3RhdGVfXygodHVwbGUoJ2RlZmcnKSwgMCkpCisgICAgICAgIHRha2UoMjAsIGMpCisKKyAgICAgICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGFuIGludAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjeWNsZSgnZGVmZycpLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjZGVmZycpLCAneCcpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgW10pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoW10sKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoKCksIDApKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdhJywgJ2InLCAnYycsICdkZScsICdmZyddKQotICAgICAgICBpdCA9IGN5Y2xlKCdhYmMnKQotICAgICAgICBpdC5fX3NldHN0YXRlX18oKFsnZGUnLCAnZmcnXSwgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpc2xpY2UoaXQsIDE1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkZScsICdmZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkZScsICdmZycsICdkZScsICdmZycsICdkZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdmZycsICdkZScsICdmZycsICdkZScsICdmZyddKQogCiAgICAgZGVmIHRlc3RfZ3JvdXBieShzZWxmKToKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IGFjY2VwdHMgYXJndW1lbnRzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CmluZGV4IDA4MDdlNmYuLmJhYzM3MGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBqc29uCiBpbXBvcnQgZG9jdGVzdAogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKaW5kZXggZmRhZmViNi4uN2U1NjhiZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQpAQCAtNzIsMTAgKzcyLDggQEAKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfaW5wdXRfdHlwZShzZWxmKToKICAgICAgICAgbXNnID0gJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0cicKLSAgICAgICAgZm9yIHZhbHVlIGluIFsxLCAzLjE0LCBiJ2J5dGVzJywgYidceGZmXHgwMCcsIFtdLCB7fSwgTm9uZV06CisgICAgICAgIGZvciB2YWx1ZSBpbiBbMSwgMy4xNCwgW10sIHt9LCBOb25lXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2csIHNlbGYubG9hZHMsIHZhbHVlKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgotICAgICAgICAgICAgc2VsZi5qc29uLmxvYWQoQnl0ZXNJTyhiJ1sxLDIsM10nKSkKIAogICAgIGRlZiB0ZXN0X3N0cmluZ193aXRoX3V0ZjhfYm9tKHNlbGYpOgogICAgICAgICAjIHNlZSAjMTg5NTgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CmluZGV4IDk1ZmY1YjguLjc5MTA1MjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKLWltcG9ydCByZQogCiAjIDIwMDctMTAtMDUKIEpTT05ET0NTID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKaW5kZXggYzdjYzhhNy4uZWRhMTc3YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGNvZGVjcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdGVzdC50ZXN0X2pzb24gaW1wb3J0IFB5VGVzdCwgQ1Rlc3QKIApAQCAtNTIsOSArNTMsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmR1bXBzLCBbYiJoaSJdKQogCiAgICAgZGVmIHRlc3RfYnl0ZXNfZGVjb2RlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9hZHMsIGInImhpIicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2FkcywgYidbImhpIl0nKQotCisgICAgICAgIGZvciBlbmNvZGluZywgYm9tIGluIFsKKyAgICAgICAgICAgICAgICAoJ3V0Zi04JywgY29kZWNzLkJPTV9VVEY4KSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0xNmJlJywgY29kZWNzLkJPTV9VVEYxNl9CRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMTZsZScsIGNvZGVjcy5CT01fVVRGMTZfTEUpLAorICAgICAgICAgICAgICAgICgndXRmLTMyYmUnLCBjb2RlY3MuQk9NX1VURjMyX0JFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0zMmxlJywgY29kZWNzLkJPTV9VVEYzMl9MRSksCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgZGF0YSA9IFsiYVx4YjVcdTIwYWNcVTAwMDFkMTIwIl0KKyAgICAgICAgICAgIGVuY29kZWQgPSBzZWxmLmR1bXBzKGRhdGEpLmVuY29kZShlbmNvZGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2Fkcyhib20gKyBlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkcyhlbmNvZGVkKSwgZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBzZWxmLmxvYWRzLCBiJ1siXHg4MCJdJykKIAogICAgIGRlZiB0ZXN0X29iamVjdF9wYWlyc19ob29rX3dpdGhfdW5pY29kZShzZWxmKToKICAgICAgICAgcyA9ICd7InhrZCI6MSwgImtjdyI6MiwgImFydCI6MywgImh4bSI6NCwgInFydCI6NSwgInBhZCI6NiwgImhveSI6N30nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CmluZGV4IGY4MjIwMjQuLjlmNDk4ODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5IGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKaW5kZXggNDdlMmVkZC4uMzc1ZDljNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkKQEAgLTMsNiArMyw4IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0b2tlbml6ZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIApAQCAtMTAsOCArMTIsNiBAQAogTk9ORVhJU1RFTlRfRklMRU5BTUUgPSBGSUxFTkFNRSArICcubWlzc2luZycKIElOVkFMSURfTkFNRSA9ICchQCQpKCFAI18xJwogRU1QVFkgPSAnJwotVEVTVFMgPSAnaW5zcGVjdF9mb2RkZXIgaW5zcGVjdF9mb2RkZXIyIG1hcHBpbmdfdGVzdHMnCi1URVNUUyA9IFRFU1RTLnNwbGl0KCkKIFRFU1RfUEFUSCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKIE1PRFVMRVMgPSAibGluZWNhY2hlIGFiYyIuc3BsaXQoKQogTU9EVUxFX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoRklMRU5BTUUpCkBAIC0zNyw2ICszNyw2NSBAQAogICAgIHJldHVybiAzJycnICMgTm8gZW5kaW5nIG5ld2xpbmUKIAogCitjbGFzcyBUZW1wRmlsZToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZT1GYWxzZSkgYXMgZnA6CisgICAgICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IGZwLm5hbWUKKyAgICAgICAgICAgIGZwLndyaXRlKHNlbGYuZmlsZV9ieXRlX3N0cmluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKworCitjbGFzcyBHZXRMaW5lVGVzdHNHb29kRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2xpc3QgICA9IFsnbGlzdFxuJywgJ29mXG4nLCAnZ29vZFxuJywgJ3N0cmluZ3NcbiddCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9ieXRlX3N0cmluZyA9ICcnLmpvaW4oc2VsZi5maWxlX2xpc3QpLmVuY29kZSgndXRmLTgnKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CisgICAgICAgIHdpdGggdG9rZW5pemUub3BlbihzZWxmLmZpbGVfbmFtZSkgYXMgZnA6CisgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZwKToKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZS5lbmRzd2l0aCgnXG4nKToKKyAgICAgICAgICAgICAgICAgICAgbGluZSArPSAnXG4nCisKKyAgICAgICAgICAgICAgICBjYWNoZWRfbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKHNlbGYuZmlsZV9uYW1lLCBpbmRleCArIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBjYWNoZWRfbGluZSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcyhzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lcywgc2VsZi5maWxlX2xpc3QpCisKKworY2xhc3MgR2V0TGluZVRlc3RzQmFkRGF0YShUZW1wRmlsZSk6CisgICAgIyBmaWxlX2J5dGVfc3RyaW5nID0gYidCYWQgZGF0YSBnb2VzIGhlcmUnCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lLCBzZWxmLmZpbGVfbmFtZSwgMSkKKworICAgIGRlZiB0ZXN0X2dldGxpbmVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoU3ludGF4RXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcywgc2VsZi5maWxlX25hbWUpCisKKworY2xhc3MgRW1wdHlGaWxlKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gW10KKworCitjbGFzcyBTaW5nbGVFbXB0eUxpbmUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbJ1xuJ10KKworCitjbGFzcyBHb29kVW5pY29kZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFsnw6FcbicsICdiXG4nLCAnYWJjZGVmXG4nLCAnw6HDocOhw6HDoVxuJ10KKworCitjbGFzcyBCYWRVbmljb2RlKEdldExpbmVUZXN0c0JhZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2J5dGVfc3RyaW5nID0gYidceDgwYWJjJworCisKIGNsYXNzIExpbmVDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CkBAIC01MywxMyArMTEyLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRsaW5lKEVNUFRZLCAxKSwgRU1QVFkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0bGluZShJTlZBTElEX05BTUUsIDEpLCBFTVBUWSkKIAotICAgICAgICAjIENoZWNrIHdoZXRoZXIgbGluZXMgY29ycmVzcG9uZCB0byB0aG9zZSBmcm9tIGZpbGUgaXRlcmF0aW9uCi0gICAgICAgIGZvciBlbnRyeSBpbiBURVNUUzoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFU1RfUEFUSCwgZW50cnkpICsgJy5weScKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmUsIGdldGxpbmUoZmlsZW5hbWUsIGluZGV4ICsgMSkpCi0KICAgICAgICAgIyBDaGVjayBtb2R1bGUgbG9hZGluZwogICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKICAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwpAQCAtODAsMTIgKzEzMiwxMyBAQAogCiAgICAgZGVmIHRlc3RfY2xlYXJjYWNoZShzZWxmKToKICAgICAgICAgY2FjaGVkID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIFRFU1RTOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVTVF9QQVRILCBlbnRyeSkgKyAnLnB5JworICAgICAgICBmb3IgZW50cnkgaW4gTU9EVUxFUzoKKyAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKE1PRFVMRV9QQVRILCBlbnRyeSkgKyAnLnB5JwogICAgICAgICAgICAgY2FjaGVkLmFwcGVuZChmaWxlbmFtZSkKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCAxKQogCiAgICAgICAgICMgQXJlIGFsbCBmaWxlcyBjYWNoZWQ/CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2FjaGVkLCBbXSkKICAgICAgICAgY2FjaGVkX2VtcHR5ID0gW2ZuIGZvciBmbiBpbiBjYWNoZWQgaWYgZm4gbm90IGluIGxpbmVjYWNoZS5jYWNoZV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWNoZWRfZW1wdHksIFtdKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKaW5kZXggOGY4MmFiNS4uYWVlNjJkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBsaXN0X3Rlc3RzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CmluZGV4IDg1MzQ0ZGUuLjA3OGE4NmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBjb25maWdwYXJzZXIKIGltcG9ydCBkYXRldGltZQoraW1wb3J0IHBhdGhsaWIKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBpbwogaW1wb3J0IGdjCkBAIC0zMDgsNiArMzA5LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMZXZlbE5hbWUoJ0lORk8nKSwgbG9nZ2luZy5JTkZPKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKGxvZ2dpbmcuSU5GTyksICdJTkZPJykKIAorICAgIGRlZiB0ZXN0X2lzc3VlMjc5MzUoc2VsZik6CisgICAgICAgIGZhdGFsID0gbG9nZ2luZy5nZXRMZXZlbE5hbWUoJ0ZBVEFMJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYXRhbCwgbG9nZ2luZy5GQVRBTCkKKwogY2xhc3MgQmFzaWNGaWx0ZXJUZXN0KEJhc2VUZXN0KToKIAogICAgICIiIlRlc3QgdGhlIGJ1bmRsZWQgRmlsdGVyIGNsYXNzLiIiIgpAQCAtNTc1LDYgKzU4MCwyOSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGguc2hvdWxkRmx1c2gocikpCiAgICAgICAgIGguY2xvc2UoKQogCisgICAgZGVmIHRlc3RfcGF0aF9vYmplY3RzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IFBhdGggb2JqZWN0cyBhcmUgYWNjZXB0ZWQgYXMgZmlsZW5hbWUgYXJndW1lbnRzIHRvIGhhbmRsZXJzLgorCisgICAgICAgIFNlZSBJc3N1ZSAjMjc0OTMuCisgICAgICAgICIiIgorICAgICAgICBmZCwgZm4gPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgcGZuID0gcGF0aGxpYi5QYXRoKGZuKQorICAgICAgICBjYXNlcyA9ICgKKyAgICAgICAgICAgICAgICAgICAgKGxvZ2dpbmcuRmlsZUhhbmRsZXIsIChwZm4sICd3JykpLAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyLCAocGZuLCAnYScpKSwKKyAgICAgICAgICAgICAgICAgICAgKGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLCAocGZuLCAnaCcpKSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2xpbnV4JywgJ2RhcndpbicpOgorICAgICAgICAgICAgY2FzZXMgKz0gKChsb2dnaW5nLmhhbmRsZXJzLldhdGNoZWRGaWxlSGFuZGxlciwgKHBmbiwgJ3cnKSksKQorICAgICAgICBmb3IgY2xzLCBhcmdzIGluIGNhc2VzOgorICAgICAgICAgICAgaCA9IGNscygqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmbikpCisgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIG9zLnVubGluayhmbikKKwogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnV2F0Y2hlZEZpbGVIYW5kbGVyIG5vdCBhcHByb3ByaWF0ZSBmb3IgV2luZG93cy4nKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfcmFjZShzZWxmKToKQEAgLTk1OCw3ICs5ODYsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgQmFzZVRlc3Quc2V0VXAoc2VsZikKICAgICAgICAgc2VsZi5tZW1faGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuTWVtb3J5SGFuZGxlcigxMCwgbG9nZ2luZy5XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RfaGRscikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RfaGRscikKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ21lbScpCiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5wcm9wYWdhdGUgPSAwCiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYubWVtX2hkbHIpCkBAIC05OTUsNiArMTAyMywzNiBAQAogICAgICAgICBzZWxmLm1lbV9sb2dnZXIuZGVidWcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKQogCisgICAgZGVmIHRlc3RfZmx1c2hfb25fY2xvc2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGZsdXNoLW9uLWNsb3NlIGNvbmZpZ3VyYXRpb24gd29ya3MgYXMgZXhwZWN0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuZGVidWcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgICMgRGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gZmx1c2ggb24gY2xvc2UuIENoZWNrIHRoYXQgaXQgaGFwcGVucy4KKyAgICAgICAgc2VsZi5tZW1faGRsci5jbG9zZSgpCisgICAgICAgIGxpbmVzID0gWworICAgICAgICAgICAgKCdERUJVRycsICcxJyksCisgICAgICAgICAgICAoJ0lORk8nLCAnMicpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykKKyAgICAgICAgIyBOb3cgY29uZmlndXJlIGZvciBmbHVzaGluZyBub3QgdG8gYmUgZG9uZSBvbiBjbG9zZS4KKyAgICAgICAgc2VsZi5tZW1faGRsciA9IGxvZ2dpbmcuaGFuZGxlcnMuTWVtb3J5SGFuZGxlcigxMCwgbG9nZ2luZy5XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuZGVidWcoc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKSAgIyBubyBjaGFuZ2UKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmluZm8oc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKSAgIyBubyBjaGFuZ2UKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgc2VsZi5tZW1faGRsci5jbG9zZSgpCisgICAgICAgICMgYXNzZXJ0IHRoYXQgbm8gbmV3IGxpbmVzIGhhdmUgYmVlbiBhZGRlZAorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorCiAKIGNsYXNzIEV4Y2VwdGlvbkZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcik6CiAgICAgIiIiQSBzcGVjaWFsIGV4Y2VwdGlvbiBmb3JtYXR0ZXIuIiIiCkBAIC00MjM5LDYgKzQyOTcsMTcgQEAKICAgICAgICAgbXNnID0gJ1JlY29yZCBub3QgZm91bmQgaW4gZXZlbnQgbG9nLCB3ZW50IGJhY2sgJWQgcmVjb3JkcycgJSBHT19CQUNLCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgbXNnPW1zZykKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydsb2dUaHJlYWRzJywgJ2xvZ011bHRpcHJvY2Vzc2luZycsCisgICAgICAgICAgICAgICAgICAgICAnbG9nUHJvY2Vzc2VzJywgJ2N1cnJlbnRmcmFtZScsCisgICAgICAgICAgICAgICAgICAgICAnUGVyY2VudFN0eWxlJywgJ1N0ckZvcm1hdFN0eWxlJywgJ1N0cmluZ1RlbXBsYXRlU3R5bGUnLAorICAgICAgICAgICAgICAgICAgICAgJ0ZpbHRlcmVyJywgJ1BsYWNlSG9sZGVyJywgJ01hbmFnZXInLCAnUm9vdExvZ2dlcicsCisgICAgICAgICAgICAgICAgICAgICAncm9vdCcsICd0aHJlYWRpbmcnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBsb2dnaW5nLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKICMgU2V0IHRoZSBsb2NhbGUgdG8gdGhlIHBsYXRmb3JtLWRlcGVuZGVudCBkZWZhdWx0LiAgSSBoYXZlIG5vIGlkZWEKICMgd2h5IHRoZSB0ZXN0IGRvZXMgdGhpcywgYnV0IGluIGFueSBjYXNlIHdlIHNhdmUgdGhlIGN1cnJlbnQgbG9jYWxlCiAjIGZpcnN0IGFuZCByZXN0b3JlIGl0IGF0IHRoZSBlbmQuCkBAIC00MjU2LDYgKzQzMjUsNyBAQAogICAgICAgICBFeGNlcHRpb25UZXN0LCBTeXNMb2dIYW5kbGVyVGVzdCwgSFRUUEhhbmRsZXJUZXN0LAogICAgICAgICBOVEV2ZW50TG9nSGFuZGxlclRlc3QsIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsCiAgICAgICAgIFVuaXhTb2NrZXRIYW5kbGVyVGVzdCwgVW5peERhdGFncmFtSGFuZGxlclRlc3QsIFVuaXhTeXNMb2dIYW5kbGVyVGVzdCwKKyAgICAgICAgTWlzY1Rlc3RDYXNlCiAgICAgXQogICAgIGlmIGhhc2F0dHIobG9nZ2luZy5oYW5kbGVycywgJ1F1ZXVlTGlzdGVuZXInKToKICAgICAgICAgdGVzdHMuYXBwZW5kKFF1ZXVlTGlzdGVuZXJUZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb25nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CmluZGV4IDRiMmQ4MWMuLmZkMTVmMDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvbmcucHkKQEAgLTYyMSw2ICs2MjEsOCBAQAogICAgIGRlZiB0ZXN0X19mb3JtYXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnZCcpLCAnMTIzNDU2Nzg5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnZCcpLCAnMTIzNDU2Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnLCcpLCAnMTIzLDQ1Niw3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODksICdfJyksICcxMjNfNDU2Xzc4OScpCiAKICAgICAgICAgIyBzaWduIGFuZCBhbGlnbmluZyBhcmUgaW50ZXJkZXBlbmRlbnQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSwgIi0iKSwgJzEnKQpAQCAtNjQ5LDggKzY1MSwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChpbnQoJ2JlJywgMTYpLCAiWCIpLCAiQkUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtaW50KCdiZScsIDE2KSwgIngiKSwgIi1iZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC1pbnQoJ2JlJywgMTYpLCAiWCIpLCAiLUJFIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAxMjM0NTY3ODkwLCAnLHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODkwLCAnX3gnKSwgJzQ5OTZfMDJkMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OTAsICdfWCcpLCAnNDk5Nl8wMkQyJykKIAogICAgICAgICAjIG9jdGFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDMsICJvIiksICIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTMsICJvIiksICItMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICJvIiksICIyMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICJvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICItbyIpLCAiMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiLW8iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIiBvIiksICIgMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiIG8iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgIitvIiksICIrMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiK28iKSwgIi0yMzIyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAxMjM0NTY3ODkwLCAnLG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODkwLCAnX28nKSwgJzExMV80NTQwXzEzMjInKQorCisgICAgICAgICMgYmluYXJ5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDMsICJiIiksICIxMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0zLCAiYiIpLCAiLTExIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNCwgImIiKSwgIjEwMDExMDEwMDEwIikKQEAgLTY2MSwxMiArNjgwLDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiIGIiKSwgIi0xMDAxMTAxMDAxMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIrYiIpLCAiKzEwMDExMDEwMDEwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLTEyMzQsICIrYiIpLCAiLTEwMDExMDEwMDEwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAxMjM0NTY3ODkwLCAnLGInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NSwgJ19iJyksICcxMV8wMDAwXzAwMTFfMTAwMScpCiAKICAgICAgICAgIyBtYWtlIHN1cmUgdGhlc2UgYXJlIGVycm9ycwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICIxLjMiKSAgIyBwcmVjaXNpb24gZGlzYWxsb3dlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICJfYyIpICAgIyB1bmRlcnNjb3JlLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICIsYyIpICAgIyBjb21tYSwgYW5kCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMywgIitjIikgICAjIHNpZ24gbm90IGFsbG93ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCAnYycKIAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnXywnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnLF8nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdDYW5ub3Qgc3BlY2lmeSBib3RoJywgZm9ybWF0LCAzLCAnXyxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJyxfZCcpCisKICAgICAgICAgIyBlbnN1cmUgdGhhdCBvbmx5IGludCBhbmQgZmxvYXQgdHlwZSBzcGVjaWZpZXJzIHdvcmsKICAgICAgICAgZm9yIGZvcm1hdF9zcGVjIGluIChbY2hyKHgpIGZvciB4IGluIHJhbmdlKG9yZCgnYScpLCBvcmQoJ3onKSsxKV0gKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaHIoeCkgZm9yIHggaW4gcmFuZ2Uob3JkKCdBJyksIG9yZCgnWicpKzEpXSk6CkBAIC02ODksNiArNzE3LDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGludCwgZmxvYXQoJy1pbmYnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBmbG9hdCgnbmFuJykpCiAKKyAgICBkZWYgdGVzdF9tb2RfZGl2aXNpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgXyA9IDEgJSAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMyAlIDEwLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMyAlIDEwLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEzICUgLTEwLCAtNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTMgJSAtMTAsIC0zKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgJSA0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAlIDQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgJSAtNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgJSAtNCwgMCkKKwogICAgIGRlZiB0ZXN0X3RydWVfZGl2aXNpb24oc2VsZik6CiAgICAgICAgIGh1Z2UgPSAxIDw8IDQwMDAwCiAgICAgICAgIG1odWdlID0gLWh1Z2UKQEAgLTcyMyw2ICs3NjUsMjUgQEAKICAgICAgICAgZm9yIHplcm8gaW4gWyJodWdlIC8gMCIsICJtaHVnZSAvIDAiXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBldmFsLCB6ZXJvLCBuYW1lc3BhY2UpCiAKKyAgICBkZWYgdGVzdF9mbG9vcmRpdihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBfID0gMSAvLyAwCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyIC8vIDMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAvLyAtMywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTIgLy8gMywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTIgLy8gLTMsIDApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTEgLy8gLTMsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTExIC8vIDMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDExIC8vIC0zLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMSAvLyAzLCAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyIC8vIC0zLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAvLyAzLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMiAvLyAtMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgLy8gMywgNCkKKwogICAgIGRlZiBjaGVja190cnVlZGl2KHNlbGYsIGEsIGIsIHNraXBfc21hbGw9VHJ1ZSk6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSByZXN1bHQgb2YgYS9iIGlzIGNvcnJlY3RseSByb3VuZGVkLCBieQogICAgICAgICBjb21wYXJpbmcgaXQgd2l0aCBhIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGNvcnJlY3RseQpAQCAtODQ1LDYgKzkwNiwyMSBAQAogICAgICAgICAgICAgc2VsZi5jaGVja190cnVlZGl2KC14LCB5KQogICAgICAgICAgICAgc2VsZi5jaGVja190cnVlZGl2KC14LCAteSkKIAorICAgIGRlZiB0ZXN0X2xzaGlmdF9vZl96ZXJvKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAgPDwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwIDw8IDEwLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgMCA8PCAtMQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfaHVnZV9sc2hpZnRfb2ZfemVybyhzZWxmKToKKyAgICAgICAgIyBTaG91bGRuJ3QgdHJ5IHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgYSBodWdlIHNoaWZ0LiBTZWUgaXNzdWUgIzI3ODcwLgorICAgICAgICAjIE90aGVyIGltcGxlbWVudGF0aW9ucyBtYXkgaGF2ZSBhIGRpZmZlcmVudCBib3VuZGFyeSBmb3Igb3ZlcmZsb3csCisgICAgICAgICMgb3Igbm90IHJhaXNlIGF0IGFsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwIDw8IHN5cy5tYXhzaXplLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgMCA8PCAoc3lzLm1heHNpemUgKyAxKQorCiAgICAgZGVmIHRlc3Rfc21hbGxfaW50cyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDI1Nyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGksIGkgKyAwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sem1hLnB5IGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CmluZGV4IDE2ZTg5ZDUuLmZkYzhlMTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgX2NvbXByZXNzaW9uCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPLCBVbnN1cHBvcnRlZE9wZXJhdGlvbiwgREVGQVVMVF9CVUZGRVJfU0laRQogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0CkBAIC00ODgsNiArNDg5LDE2IEBACiAgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAiYSIpIGFzIGY6CiAgICAgICAgICAgICBwYXNzCiAKKyAgICBkZWYgdGVzdF9pbml0X3dpdGhfUGF0aExpa2VfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKFRFU1RGTikKKyAgICAgICAgd2l0aCBUZW1wRmlsZShmaWxlbmFtZSwgQ09NUFJFU1NFRF9YWik6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShmaWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogMikKKwogICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9maWxlbmFtZShzZWxmKToKICAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgogICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4pIGFzIGY6CkBAIC05MzUsMTEgKzk0NiwxMSBAQAogCiAgICAgZGVmIHRlc3RfZGVjb21wcmVzc19saW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGx6bWEuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBwcmVzZXQ9NikKKyAgICAgICAgYm9tYiA9IGx6bWEuY29tcHJlc3MoYidcMCcgKiBpbnQoMmU2KSwgcHJlc2V0PTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSkKIAogICAgICAgICBkZWNvbXAgPSBMWk1BRmlsZShCeXRlc0lPKGJvbWIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvbXAucmVhZCgxKSwgYidcMCcpCiAgICAgICAgIG1heF9kZWNvbXAgPSAxICsgREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAogICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKQEAgLTExODAsNiArMTE5MSwxNyBAQAogICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogMikKIAorICAgIGRlZiB0ZXN0X3dpdGhfcGF0aGxpa2VfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKFRFU1RGTikKKyAgICAgICAgd2l0aCBUZW1wRmlsZShmaWxlbmFtZSk6CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKwogICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKaW5kZXggODBiZWM3YS4uMDY5OGZmNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCBtYWNwYXRoCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKK2Zyb20gdGVzdCBpbXBvcnQgdGVzdF9nZW5lcmljcGF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CmluZGV4IDA5OTFmNzQuLmFlYWJkYmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKQEAgLTcsMTcgKzcsMTIgQEAKIGltcG9ydCBlbWFpbC5tZXNzYWdlCiBpbXBvcnQgcmUKIGltcG9ydCBpbwotaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgbWFpbGJveAogaW1wb3J0IGdsb2IKLXRyeToKLSAgICBpbXBvcnQgZmNudGwKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCiAKIAogY2xhc3MgVGVzdEJhc2U6CkBAIC0yMjczLDEyICsyMjY4LDE4IEBACiAiIiIpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsibGluZXNlcCIsICJmY250bCJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG1haWxib3gsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gKFRlc3RNYWlsYm94U3VwZXJjbGFzcywgVGVzdE1haWxkaXIsIFRlc3RNYm94LCBUZXN0TU1ERiwgVGVzdE1ILAogICAgICAgICAgICAgIFRlc3RCYWJ5bCwgVGVzdE1lc3NhZ2UsIFRlc3RNYWlsZGlyTWVzc2FnZSwgVGVzdE1ib3hNZXNzYWdlLAogICAgICAgICAgICAgIFRlc3RNSE1lc3NhZ2UsIFRlc3RCYWJ5bE1lc3NhZ2UsIFRlc3RNTURGTWVzc2FnZSwKICAgICAgICAgICAgICBUZXN0TWVzc2FnZUNvbnZlcnNpb24sIFRlc3RQcm94eUZpbGUsIFRlc3RQYXJ0aWFsRmlsZSwKLSAgICAgICAgICAgICBNYWlsZGlyVGVzdENhc2UsIFRlc3RGYWtlTWFpbEJveCkKKyAgICAgICAgICAgICBNYWlsZGlyVGVzdENhc2UsIFRlc3RGYWtlTWFpbEJveCwgTWlzY1Rlc3RDYXNlKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKaW5kZXggYTg1YzY5MS4uYzA4NDIzYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBtYWlsY2FwCiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBjb3B5CiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKQEAgLTEyMyw3ICsxMjIsNyBAQAogICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvbyIpLAogICAgICAgICAgICAgKFsiZWNobyAlcyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vLnR4dCIpLAogICAgICAgICAgICAgKFsiZWNobyAldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gYXVkaW8vKiIpLAotICAgICAgICAgICAgKFsiZWNobyBcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCisgICAgICAgICAgICAoWyJlY2hvIFxcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCiAgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIGZvbyIpLAogICAgICAgICAgICAgKFsiZWNobyAle3RvdGFsfSIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIDMiKQogICAgICAgICBdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKaW5kZXggYzdkZWY5YS4uYjM3OGZmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQpAQCAtMTM1LDYgKzEzNSwxMyBAQAogICAgICAgICBmb3IgY29uc3RydWN0b3IgaW4gKHNldCwgZnJvemVuc2V0KToKICAgICAgICAgICAgIHNlbGYuaGVscGVyKGNvbnN0cnVjdG9yKHNlbGYuZC5rZXlzKCkpKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZW1wdHlfZnJvemVuc2V0X3NpbmdsZXRvbihzZWxmKToKKyAgICAgICAgIyBtYXJzaGFsLmxvYWRzKCkgbXVzdCByZXVzZSB0aGUgZW1wdHkgZnJvemVuc2V0IHNpbmdsZXRvbgorICAgICAgICBvYmogPSBmcm96ZW5zZXQoKQorICAgICAgICBvYmoyID0gbWFyc2hhbC5sb2FkcyhtYXJzaGFsLmR1bXBzKG9iaikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqMiwgb2JqKQorCiAKIGNsYXNzIEJ1ZmZlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBIZWxwZXJNaXhpbik6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCBhMzc5YTZhLi5lYWE0MWJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC03LDE0ICs3LDE1IEBACiBpbXBvcnQgbWF0aAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KLWltcG9ydCBzeXMKIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIAogZXBzID0gMUUtMDUKIE5BTiA9IGZsb2F0KCduYW4nKQogSU5GID0gZmxvYXQoJ2luZicpCiBOSU5GID0gZmxvYXQoJy1pbmYnKQorRkxPQVRfTUFYID0gc3lzLmZsb2F0X2luZm8ubWF4CiAKICMgZGV0ZWN0IGV2aWRlbmNlIG9mIGRvdWJsZS1yb3VuZGluZzogZnN1bSBpcyBub3QgYWx3YXlzIGNvcnJlY3RseQogIyByb3VuZGVkIG9uIG1hY2hpbmVzIHRoYXQgc3VmZmVyIGZyb20gZG91YmxlIHJvdW5kaW5nLgpAQCAtMzAsNiArMzEsNyBAQAogbWF0aF90ZXN0Y2FzZXMgPSBvcy5wYXRoLmpvaW4odGVzdF9kaXIsICdtYXRoX3Rlc3RjYXNlcy50eHQnKQogdGVzdF9maWxlID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnY21hdGhfdGVzdGNhc2VzLnR4dCcpCiAKKwogZGVmIHRvX3VscHMoeCk6CiAgICAgIiIiQ29udmVydCBhIG5vbi1OYU4gZmxvYXQgeCB0byBhbiBpbnRlZ2VyLCBpbiBzdWNoIGEgd2F5IHRoYXQKICAgICBhZGphY2VudCBmbG9hdHMgYXJlIGNvbnZlcnRlZCB0byBhZGphY2VudCBpbnRlZ2Vycy4gIFRoZW4KQEAgLTM3LDI1ICszOSwzOSBAQAogICAgIGZsb2F0cy4KIAogICAgIFRoZSByZXN1bHRzIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgbWFrZSBzZW5zZSBvbiBwbGF0Zm9ybXMKLSAgICB3aGVyZSBDIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KKyAgICB3aGVyZSBuYXRpdmUgZG91YmxlcyBhcmUgcmVwcmVzZW50ZWQgaW4gSUVFRSA3NTQgYmluYXJ5NjQgZm9ybWF0LgogCisgICAgTm90ZTogMC4wIGFuZCAtMC4wIGFyZSBjb252ZXJ0ZWQgdG8gMCBhbmQgLTEsIHJlc3BlY3RpdmVseS4KICAgICAiIiIKICAgICBuID0gc3RydWN0LnVucGFjaygnPHEnLCBzdHJ1Y3QucGFjaygnPGQnLCB4KSlbMF0KICAgICBpZiBuIDwgMDoKICAgICAgICAgbiA9IH4obisyKio2MykKICAgICByZXR1cm4gbgogCi1kZWYgdWxwc19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBzPTIwKToKLSAgICAiIiJHaXZlbiBub24tTmFOIGZsb2F0cyBgZXhwZWN0ZWRgIGFuZCBgZ290YCwKLSAgICBjaGVjayB0aGF0IHRoZXkncmUgZXF1YWwgdG8gd2l0aGluIHRoZSBnaXZlbiBudW1iZXIgb2YgdWxwcy4KIAotICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuIiIiCitkZWYgdWxwKHgpOgorICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBhCisgICAgZmxvYXQgeCwgc3VjaCB0aGF0IHRoZSBmaXJzdCBmbG9hdCBiaWdnZXIgdGhhbiB4IGlzIHgrdWxwKHgpLgorICAgIFRoZW4sIGdpdmVuIGFuIGV4cGVjdGVkIHJlc3VsdCB4IGFuZCBhIHRvbGVyYW5jZSBvZiBuIHVscHMsCisgICAgdGhlIHJlc3VsdCB5IHNob3VsZCBiZSBzdWNoIHRoYXQgYWJzKHkteCkgPD0gbiAqIHVscCh4KS4KKyAgICBUaGUgcmVzdWx0cyBmcm9tIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zCisgICAgd2hlcmUgbmF0aXZlIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KKyAgICAiIiIKKyAgICB4ID0gYWJzKGZsb2F0KHgpKQorICAgIGlmIG1hdGguaXNuYW4oeCkgb3IgbWF0aC5pc2luZih4KToKKyAgICAgICAgcmV0dXJuIHgKIAotICAgIHVscHNfZXJyb3IgPSB0b191bHBzKGdvdCkgLSB0b191bHBzKGV4cGVjdGVkKQotICAgIGlmIGFicyh1bHBzX2Vycm9yKSA8PSB1bHBzOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiAiZXJyb3IgPSB7fSB1bHBzOyBwZXJtaXR0ZWQgZXJyb3IgPSB7fSB1bHBzIi5mb3JtYXQodWxwc19lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVscHMpCisgICAgIyBGaW5kIG5leHQgZmxvYXQgdXAgZnJvbSB4LgorICAgIG4gPSBzdHJ1Y3QudW5wYWNrKCc8cScsIHN0cnVjdC5wYWNrKCc8ZCcsIHgpKVswXQorICAgIHhfbmV4dCA9IHN0cnVjdC51bnBhY2soJzxkJywgc3RydWN0LnBhY2soJzxxJywgbiArIDEpKVswXQorICAgIGlmIG1hdGguaXNpbmYoeF9uZXh0KToKKyAgICAgICAgIyBDb3JuZXIgY2FzZTogeCB3YXMgdGhlIGxhcmdlc3QgZmluaXRlIGZsb2F0LiBUaGVuIGl0J3MKKyAgICAgICAgIyBub3QgYW4gZXhhY3QgcG93ZXIgb2YgdHdvLCBzbyB3ZSBjYW4gdGFrZSB0aGUgZGlmZmVyZW5jZQorICAgICAgICAjIGJldHdlZW4geCBhbmQgdGhlIHByZXZpb3VzIGZsb2F0LgorICAgICAgICB4X3ByZXYgPSBzdHJ1Y3QudW5wYWNrKCc8ZCcsIHN0cnVjdC5wYWNrKCc8cScsIG4gLSAxKSlbMF0KKyAgICAgICAgcmV0dXJuIHggLSB4X3ByZXYKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4geF9uZXh0IC0geAogCiAjIEhlcmUncyBhIHB1cmUgUHl0aG9uIHZlcnNpb24gb2YgdGhlIG1hdGguZmFjdG9yaWFsIGFsZ29yaXRobSwgZm9yCiAjIGRvY3VtZW50YXRpb24gYW5kIGNvbXBhcmlzb24gcHVycG9zZXMuCkBAIC0xMDcsMjQgKzEyMywyMyBAQAogICAgICAgICBvdXRlciAqPSBpbm5lcgogICAgIHJldHVybiBvdXRlciA8PCAobiAtIGNvdW50X3NldF9iaXRzKG4pKQogCi1kZWYgYWNjX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHJlbF9lcnI9MmUtMTUsIGFic19lcnIgPSA1ZS0zMjMpOgotICAgICIiIkRldGVybWluZSB3aGV0aGVyIG5vbi1OYU4gZmxvYXRzIGEgYW5kIGIgYXJlIGVxdWFsIHRvIHdpdGhpbiBhCi0gICAgKHNtYWxsKSByb3VuZGluZyBlcnJvci4gIFRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgcmVsX2VyciBhbmQKLSAgICBhYnNfZXJyIGFyZSBjaG9zZW4gdG8gYmUgc3VpdGFibGUgZm9yIHBsYXRmb3JtcyB3aGVyZSBhIGZsb2F0IGlzCi0gICAgcmVwcmVzZW50ZWQgYnkgYW4gSUVFRSA3NTQgZG91YmxlLiAgVGhleSBhbGxvdyBhbiBlcnJvciBvZiBiZXR3ZWVuCi0gICAgOSBhbmQgMTkgdWxwcy4iIiIKK2RlZiB1bHBfYWJzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpOgorICAgICIiIkdpdmVuIGZpbml0ZSBmbG9hdHMgYGV4cGVjdGVkYCBhbmQgYGdvdGAsIGNoZWNrIHRoYXQgdGhleSdyZQorICAgIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gd2l0aGluIHRoZSBnaXZlbiBudW1iZXIgb2YgdWxwcyBvciB0aGUKKyAgICBnaXZlbiBhYnNvbHV0ZSB0b2xlcmFuY2UsIHdoaWNoZXZlciBpcyBiaWdnZXIuCiAKLSAgICAjIG5lZWQgdG8gc3BlY2lhbCBjYXNlIGluZmluaXRpZXMsIHNpbmNlIGluZiAtIGluZiBnaXZlcyBuYW4KLSAgICBpZiBtYXRoLmlzaW5mKGV4cGVjdGVkKSBhbmQgZ290ID09IGV4cGVjdGVkOgorICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuCisgICAgIiIiCisgICAgdWxwX2Vycm9yID0gYWJzKHRvX3VscHMoZXhwZWN0ZWQpIC0gdG9fdWxwcyhnb3QpKQorICAgIGFic19lcnJvciA9IGFicyhleHBlY3RlZCAtIGdvdCkKKworICAgICMgU3VjY2VlZCBpZiBlaXRoZXIgYWJzX2Vycm9yIDw9IGFic190b2wgb3IgdWxwX2Vycm9yIDw9IHVscF90b2wuCisgICAgaWYgYWJzX2Vycm9yIDw9IGFic190b2wgb3IgdWxwX2Vycm9yIDw9IHVscF90b2w6CiAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBlcnJvciA9IGdvdCAtIGV4cGVjdGVkCi0KLSAgICBwZXJtaXR0ZWRfZXJyb3IgPSBtYXgoYWJzX2VyciwgcmVsX2VyciAqIGFicyhleHBlY3RlZCkpCi0gICAgaWYgYWJzKGVycm9yKSA8IHBlcm1pdHRlZF9lcnJvcjoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gImVycm9yID0ge307IHBlcm1pdHRlZCBlcnJvciA9IHt9Ii5mb3JtYXQoZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pdHRlZF9lcnJvcikKKyAgICBlbHNlOgorICAgICAgICBmbXQgPSAoImVycm9yID0gezouM2d9ICh7OmR9IHVscHMpOyAiCisgICAgICAgICAgICAgICAicGVybWl0dGVkIGVycm9yID0gezouM2d9IG9yIHs6ZH0gdWxwcyIpCisgICAgICAgIHJldHVybiBmbXQuZm9ybWF0KGFic19lcnJvciwgdWxwX2Vycm9yLCBhYnNfdG9sLCB1bHBfdG9sKQogCiBkZWYgcGFyc2VfbXRlc3RmaWxlKGZuYW1lKToKICAgICAiIiJQYXJzZSBhIGZpbGUgd2l0aCB0ZXN0IHZhbHVlcwpAQCAtMTUxLDYgKzE2Niw3IEBACiAKICAgICAgICAgICAgIHlpZWxkIChpZCwgZm4sIGZsb2F0KGFyZyksIGZsb2F0KGV4cCksIGZsYWdzKQogCisKIGRlZiBwYXJzZV90ZXN0ZmlsZShmbmFtZSk6CiAgICAgIiIiUGFyc2UgYSBmaWxlIHdpdGggdGVzdCB2YWx1ZXMKIApAQCAtMTcyLDggKzE4OCw1MyBAQAogICAgICAgICAgICAgeWllbGQgKGlkLCBmbiwKICAgICAgICAgICAgICAgICAgICBmbG9hdChhcmdfcmVhbCksIGZsb2F0KGFyZ19pbWFnKSwKICAgICAgICAgICAgICAgICAgICBmbG9hdChleHBfcmVhbCksIGZsb2F0KGV4cF9pbWFnKSwKLSAgICAgICAgICAgICAgICAgICBmbGFncwotICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgIGZsYWdzKQorCisKK2RlZiByZXN1bHRfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbD01LCBhYnNfdG9sPTAuMCk6CisgICAgIyBDb21tb24gbG9naWMgb2YgTWF0aFRlc3RzLihmdGVzdCwgdGVzdF90ZXN0Y2FzZXMsIHRlc3RfbXRlc3RjYXNlcykKKyAgICAiIiJDb21wYXJlIGFyZ3VtZW50cyBleHBlY3RlZCBhbmQgZ290LCBhcyBmbG9hdHMsIGlmIGVpdGhlcgorICAgIGlzIGEgZmxvYXQsIHVzaW5nIGEgdG9sZXJhbmNlIGV4cHJlc3NlZCBpbiBtdWx0aXBsZXMgb2YKKyAgICB1bHAoZXhwZWN0ZWQpIG9yIGFic29sdXRlbHkgKGlmIGdpdmVuIGFuZCBncmVhdGVyKS4KKworICAgIEFzIGEgY29udmVuaWVuY2UsIHdoZW4gbmVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0LCBhbmQgZm9yCisgICAgbm9uLWZpbml0ZSBmbG9hdHMsIGV4YWN0IGVxdWFsaXR5IGlzIGRlbWFuZGVkLiBBbHNvLCBuYW49PW5hbgorICAgIGFzIGZhciBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbmNlcm5lZC4KKworICAgIFJldHVybnMgTm9uZSBvbiBzdWNjZXNzIGFuZCBhbiBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUuCisgICAgIiIiCisKKyAgICAjIENoZWNrIGV4YWN0bHkgZXF1YWwgKGFwcGxpZXMgYWxzbyB0byBzdHJpbmdzIHJlcHJlc2VudGluZyBleGNlcHRpb25zKQorICAgIGlmIGdvdCA9PSBleHBlY3RlZDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGZhaWx1cmUgPSAibm90IGVxdWFsIgorCisgICAgIyBUdXJuIG1peGVkIGZsb2F0IGFuZCBpbnQgY29tcGFyaXNvbiAoZS5nLiBmbG9vcigpKSB0byBhbGwtZmxvYXQKKyAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZ290LCBpbnQpOgorICAgICAgICBnb3QgPSBmbG9hdChnb3QpCisgICAgZWxpZiBpc2luc3RhbmNlKGdvdCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVkLCBpbnQpOgorICAgICAgICBleHBlY3RlZCA9IGZsb2F0KGV4cGVjdGVkKQorCisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGdvdCwgZmxvYXQpOgorICAgICAgICBpZiBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbWF0aC5pc25hbihnb3QpOgorICAgICAgICAgICAgIyBQYXNzLCBzaW5jZSBib3RoIG5hbgorICAgICAgICAgICAgZmFpbHVyZSA9IE5vbmUKKyAgICAgICAgZWxpZiBtYXRoLmlzaW5mKGV4cGVjdGVkKSBvciBtYXRoLmlzaW5mKGdvdCk6CisgICAgICAgICAgICAjIFdlIGFscmVhZHkga25vdyB0aGV5J3JlIG5vdCBlcXVhbCwgZHJvcCB0aHJvdWdoIHRvIGZhaWx1cmUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQm90aCBhcmUgZmluaXRlIGZsb2F0cyAobm93KS4gQXJlIHRoZXkgY2xvc2UgZW5vdWdoPworICAgICAgICAgICAgZmFpbHVyZSA9IHVscF9hYnNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCkKKworICAgICMgYXJndW1lbnRzIGFyZSBub3QgZXF1YWwsIGFuZCBpZiBudW1lcmljLCBhcmUgdG9vIGZhciBhcGFydAorICAgIGlmIGZhaWx1cmUgaXMgbm90IE5vbmU6CisgICAgICAgIGZhaWxfZm10ID0gImV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgorICAgICAgICBmYWlsX21zZyA9IGZhaWxfZm10LmZvcm1hdChleHBlY3RlZCwgZ290KQorICAgICAgICBmYWlsX21zZyArPSAnICh7fSknLmZvcm1hdChmYWlsdXJlKQorICAgICAgICByZXR1cm4gZmFpbF9tc2cKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQogCiAjIENsYXNzIHByb3ZpZGluZyBhbiBfX2luZGV4X18gbWV0aG9kLgogY2xhc3MgTXlJbmRleGFibGUob2JqZWN0KToKQEAgLTE4NSwxOCArMjQ2LDI0IEBACiAKIGNsYXNzIE1hdGhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgZnRlc3Qoc2VsZiwgbmFtZSwgdmFsdWUsIGV4cGVjdGVkKToKLSAgICAgICAgaWYgYWJzKHZhbHVlLWV4cGVjdGVkKSA+IGVwczoKLSAgICAgICAgICAgICMgVXNlICVyIGluc3RlYWQgb2YgJWYgc28gdGhlIGVycm9yIG1lc3NhZ2UKLSAgICAgICAgICAgICMgZGlzcGxheXMgZnVsbCBwcmVjaXNpb24uIE90aGVyd2lzZSBkaXNjcmVwYW5jaWVzCi0gICAgICAgICAgICAjIGluIHRoZSBsYXN0IGZldyBiaXRzIHdpbGwgbGVhZCB0byB2ZXJ5IGNvbmZ1c2luZwotICAgICAgICAgICAgIyBlcnJvciBtZXNzYWdlcwotICAgICAgICAgICAgc2VsZi5mYWlsKCclcyByZXR1cm5lZCAlciwgZXhwZWN0ZWQgJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgdmFsdWUsIGV4cGVjdGVkKSkKKyAgICBkZWYgZnRlc3Qoc2VsZiwgbmFtZSwgZ290LCBleHBlY3RlZCwgdWxwX3RvbD01LCBhYnNfdG9sPTAuMCk6CisgICAgICAgICIiIkNvbXBhcmUgYXJndW1lbnRzIGV4cGVjdGVkIGFuZCBnb3QsIGFzIGZsb2F0cywgaWYgZWl0aGVyCisgICAgICAgIGlzIGEgZmxvYXQsIHVzaW5nIGEgdG9sZXJhbmNlIGV4cHJlc3NlZCBpbiBtdWx0aXBsZXMgb2YKKyAgICAgICAgdWxwKGV4cGVjdGVkKSBvciBhYnNvbHV0ZWx5LCB3aGljaGV2ZXIgaXMgZ3JlYXRlci4KKworICAgICAgICBBcyBhIGNvbnZlbmllbmNlLCB3aGVuIG5laXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdCwgYW5kIGZvcgorICAgICAgICBub24tZmluaXRlIGZsb2F0cywgZXhhY3QgZXF1YWxpdHkgaXMgZGVtYW5kZWQuIEFsc28sIG5hbj09bmFuCisgICAgICAgIGluIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICIiIgorICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisgICAgICAgIGlmIGZhaWx1cmUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmZhaWwoInt9OiB7fSIuZm9ybWF0KG5hbWUsIGZhaWx1cmUpKQogCiAgICAgZGVmIHRlc3RDb25zdGFudHMoc2VsZik6Ci0gICAgICAgIHNlbGYuZnRlc3QoJ3BpJywgbWF0aC5waSwgMy4xNDE1OTI2KQotICAgICAgICBzZWxmLmZ0ZXN0KCdlJywgbWF0aC5lLCAyLjcxODI4MTgpCisgICAgICAgICMgUmVmOiBBYnJhbW93aXR6ICYgU3RlZ3VuIChEb3ZlciwgMTk2NSkKKyAgICAgICAgc2VsZi5mdGVzdCgncGknLCBtYXRoLnBpLCAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MykKKyAgICAgICAgc2VsZi5mdGVzdCgnZScsIG1hdGguZSwgMi43MTgyODE4Mjg0NTkwNDUyMzUzNjAyODcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC50YXUsIDIqbWF0aC5waSkKIAogICAgIGRlZiB0ZXN0QWNvcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmFjb3MpCkBAIC0yMDUsNiArMjcyLDggQEAKICAgICAgICAgc2VsZi5mdGVzdCgnYWNvcygxKScsIG1hdGguYWNvcygxKSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCAxICsgZXBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIC0xIC0gZXBzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmFjb3MoTkFOKSkpCiAKICAgICBkZWYgdGVzdEFjb3NoKHNlbGYpOgpAQCAtMjI0LDYgKzI5Myw4IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2FzaW4oMSknLCBtYXRoLmFzaW4oMSksIG1hdGgucGkvMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgTklORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCAxICsgZXBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIC0xIC0gZXBzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmFzaW4oTkFOKSkpCiAKICAgICBkZWYgdGVzdEFzaW5oKHNlbGYpOgpAQCAtMzc4LDkgKzQ0OSw5IEBACiAKICAgICBkZWYgdGVzdENvcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmNvcykKLSAgICAgICAgc2VsZi5mdGVzdCgnY29zKC1waS8yKScsIG1hdGguY29zKC1tYXRoLnBpLzIpLCAwKQorICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MoLXBpLzIpJywgbWF0aC5jb3MoLW1hdGgucGkvMiksIDAsIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MoMCknLCBtYXRoLmNvcygwKSwgMSkKLSAgICAgICAgc2VsZi5mdGVzdCgnY29zKHBpLzIpJywgbWF0aC5jb3MobWF0aC5waS8yKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnY29zKHBpLzIpJywgbWF0aC5jb3MobWF0aC5waS8yKSwgMCwgYWJzX3RvbD11bHAoMSkpCiAgICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaSknLCBtYXRoLmNvcyhtYXRoLnBpKSwgLTEpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguY29zKElORikpKQpAQCAtNDAzLDYgKzQ3NCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMocGkpJywgbWF0aC5kZWdyZWVzKG1hdGgucGkpLCAxODAuMCkKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcyhwaS8yKScsIG1hdGguZGVncmVlcyhtYXRoLnBpLzIpLCA5MC4wKQogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKC1waS80KScsIG1hdGguZGVncmVlcygtbWF0aC5waS80KSwgLTQ1LjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMoMCknLCBtYXRoLmRlZ3JlZXMoMCksIDApCiAKICAgICBkZWYgdGVzdEV4cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmV4cCkKQEAgLTQxMiw2ICs0ODQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZXhwKElORiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmV4cChOSU5GKSwgMC4pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguZXhwKE5BTikpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmV4cCwgMTAwMDAwMCkKIAogICAgIGRlZiB0ZXN0RmFicyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmZhYnMpCkBAIC02NTQsNiArNzI3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KElORiwgTkFOKSwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaHlwb3QoTkFOLCBOSU5GKSwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguaHlwb3QoTklORiwgTkFOKSwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtYXRoLmh5cG90LCBGTE9BVF9NQVgsIEZMT0FUX01BWCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5oeXBvdCgxLjAsIE5BTikpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmh5cG90KE5BTiwgLTIuMCkpKQogCkBAIC03MDcsOCArNzgxLDEwIEBACiAKICAgICBkZWYgdGVzdExvZzFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1hdGgubG9nMXApCi0gICAgICAgIG49IDIqKjkwCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobWF0aC5sb2cxcChuKSwgbWF0aC5sb2cxcChmbG9hdChuKSkpCisgICAgICAgIGZvciBuIGluIFsyLCAyKio5MCwgMioqMzAwXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobWF0aC5sb2cxcChuKSwgbWF0aC5sb2cxcChmbG9hdChuKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGgubG9nMXAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMXAoSU5GKSwgSU5GKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RMb2cyKHNlbGYpOgpAQCAtOTIyLDYgKzk5OCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoMTgwKScsIG1hdGgucmFkaWFucygxODApLCBtYXRoLnBpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDkwKScsIG1hdGgucmFkaWFucyg5MCksIG1hdGgucGkvMikKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucygtNDUpJywgbWF0aC5yYWRpYW5zKC00NSksIC1tYXRoLnBpLzQpCisgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoMCknLCBtYXRoLnJhZGlhbnMoMCksIDApCiAKICAgICBkZWYgdGVzdFNpbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLnNpbikKQEAgLTk1MSw2ICsxMDI4LDcgQEAKICAgICAgICAgc2VsZi5mdGVzdCgnc3FydCgxKScsIG1hdGguc3FydCgxKSwgMSkKICAgICAgICAgc2VsZi5mdGVzdCgnc3FydCg0KScsIG1hdGguc3FydCg0KSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLnNxcnQoSU5GKSwgSU5GKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLnNxcnQsIC0xKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLnNxcnQsIE5JTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguc3FydChOQU4pKSkKIApAQCAtOTcwLDcgKzEwNDgsOCBAQAogICAgIGRlZiB0ZXN0VGFuaChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLnRhbmgpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMCknLCBtYXRoLnRhbmgoMCksIDApCi0gICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMSkrdGFuaCgtMSknLCBtYXRoLnRhbmgoMSkrbWF0aC50YW5oKC0xKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgxKSt0YW5oKC0xKScsIG1hdGgudGFuaCgxKSttYXRoLnRhbmgoLTEpLCAwLAorICAgICAgICAgICAgICAgICAgIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKGluZiknLCBtYXRoLnRhbmgoSU5GKSwgMSkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaCgtaW5mKScsIG1hdGgudGFuaChOSU5GKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGgudGFuaChOQU4pKSkKQEAgLTEwMjAsNyArMTA5OSw4IEBACiAKICAgICBkZWYgdGVzdElzbmFuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgibmFuIikpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiaW5mIikqIDAuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoIi1uYW4iKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCJpbmYiKSAqIDAuKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRoLmlzbmFuKGZsb2F0KCJpbmYiKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbigwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbigxLikpCkBAIC0xMDg0LDMwICsxMTY0LDY0IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF90ZXN0ZmlsZShzZWxmKToKKyAgICAgICAgIyBTb21lIHRlc3RzIG5lZWQgdG8gYmUgc2tpcHBlZCBvbiBhbmNpZW50IE9TIFggdmVyc2lvbnMuCisgICAgICAgICMgU2VlIGlzc3VlICMyNzk1My4KKyAgICAgICAgU0tJUF9PTl9USUdFUiA9IHsndGFuMDA2NCd9CisKKyAgICAgICAgb3N4X3ZlcnNpb24gPSBOb25lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHZlcnNpb25fdHh0ID0gcGxhdGZvcm0ubWFjX3ZlcigpWzBdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmYWlsX2ZtdCA9ICJ7fToge30oeyFyfSk6IHt9IgorCisgICAgICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgZm9yIGlkLCBmbiwgYXIsIGFpLCBlciwgZWksIGZsYWdzIGluIHBhcnNlX3Rlc3RmaWxlKHRlc3RfZmlsZSk6Ci0gICAgICAgICAgICAjIFNraXAgaWYgZWl0aGVyIHRoZSBpbnB1dCBvciByZXN1bHQgaXMgY29tcGxleCwgb3IgaWYKLSAgICAgICAgICAgICMgZmxhZ3MgaXMgbm9uZW1wdHkKLSAgICAgICAgICAgIGlmIGFpICE9IDAuIG9yIGVpICE9IDAuIG9yIGZsYWdzOgorICAgICAgICAgICAgIyBTa2lwIGlmIGVpdGhlciB0aGUgaW5wdXQgb3IgcmVzdWx0IGlzIGNvbXBsZXgKKyAgICAgICAgICAgIGlmIGFpICE9IDAuMCBvciBlaSAhPSAwLjA6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGZuIGluIFsncmVjdCcsICdwb2xhciddOgogICAgICAgICAgICAgICAgICMgbm8gcmVhbCB2ZXJzaW9ucyBvZiByZWN0LCBwb2xhcgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFNraXAgY2VydGFpbiB0ZXN0cyBvbiBPUyBYIDEwLjQuCisgICAgICAgICAgICBpZiBvc3hfdmVyc2lvbiBpcyBub3QgTm9uZSBhbmQgb3N4X3ZlcnNpb24gPCAoMTAsIDUpOgorICAgICAgICAgICAgICAgIGlmIGlkIGluIFNLSVBfT05fVElHRVI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgIGZ1bmMgPSBnZXRhdHRyKG1hdGgsIGZuKQorCisgICAgICAgICAgICBpZiAnaW52YWxpZCcgaW4gZmxhZ3Mgb3IgJ2RpdmlkZS1ieS16ZXJvJyBpbiBmbGFnczoKKyAgICAgICAgICAgICAgICBlciA9ICdWYWx1ZUVycm9yJworICAgICAgICAgICAgZWxpZiAnb3ZlcmZsb3cnIGluIGZsYWdzOgorICAgICAgICAgICAgICAgIGVyID0gJ092ZXJmbG93RXJyb3InCisKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmdW5jKGFyKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAoKCJVbmV4cGVjdGVkIFZhbHVlRXJyb3I6ICVzXG4gICAgICAgICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHRlc3QgJXM6JXMoJXIpXG4iKSAlIChleGMuYXJnc1swXSwgaWQsIGZuLCBhcikpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1lc3NhZ2UpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAnVmFsdWVFcnJvcicKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAoIlVuZXhwZWN0ZWQgT3ZlcmZsb3dFcnJvciBpbiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0ICVzOiVzKCVyKVxuIiAlIChpZCwgZm4sIGFyKSkKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwobWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuZnRlc3QoIiVzOiVzKCVyKSIgJSAoaWQsIGZuLCBhciksIHJlc3VsdCwgZXIpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ092ZXJmbG93RXJyb3InCisKKyAgICAgICAgICAgICMgRGVmYXVsdCB0b2xlcmFuY2VzCisgICAgICAgICAgICB1bHBfdG9sLCBhYnNfdG9sID0gNSwgMC4wCisKKyAgICAgICAgICAgIGZhaWx1cmUgPSByZXN1bHRfY2hlY2soZXIsIHJlc3VsdCwgdWxwX3RvbCwgYWJzX3RvbCkKKyAgICAgICAgICAgIGlmIGZhaWx1cmUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBtc2cgPSBmYWlsX2ZtdC5mb3JtYXQoaWQsIGZuLCBhciwgZmFpbHVyZSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChtc2cpCisKKyAgICAgICAgaWYgZmFpbHVyZXM6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0ZhaWx1cmVzIGluIHRlc3RfdGVzdGZpbGU6XG4gICcgKworICAgICAgICAgICAgICAgICAgICAgICdcbiAgJy5qb2luKGZhaWx1cmVzKSkKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X210ZXN0ZmlsZShzZWxmKToKLSAgICAgICAgZmFpbF9mbXQgPSAie306e30oeyFyfSk6IGV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgorICAgICAgICBmYWlsX2ZtdCA9ICJ7fToge30oeyFyfSk6IHt9IgogCiAgICAgICAgIGZhaWx1cmVzID0gW10KICAgICAgICAgZm9yIGlkLCBmbiwgYXJnLCBleHBlY3RlZCwgZmxhZ3MgaW4gcGFyc2VfbXRlc3RmaWxlKG1hdGhfdGVzdGNhc2VzKToKQEAgLTExMjUsNDEgKzEyMzksNDggQEAKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICAgICAgICAgIGdvdCA9ICdPdmVyZmxvd0Vycm9yJwogCi0gICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gTm9uZQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShnb3QsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpOgotICAgICAgICAgICAgICAgIGlmIG1hdGguaXNuYW4oZXhwZWN0ZWQpIGFuZCBtYXRoLmlzbmFuKGdvdCk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IG1hdGguaXNuYW4oZXhwZWN0ZWQpIGFuZCBub3QgbWF0aC5pc25hbihnb3QpOgotICAgICAgICAgICAgICAgICAgICBpZiBmbiA9PSAnbGdhbW1hJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgd2UgdXNlIGEgd2Vha2VyIGFjY3VyYWN5IHRlc3QgZm9yIGxnYW1tYTsKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbGdhbW1hIG9ubHkgYWNoaWV2ZXMgYW4gYWJzb2x1dGUgZXJyb3Igb2YKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBmZXcgbXVsdGlwbGVzIG9mIHRoZSBtYWNoaW5lIGFjY3VyYWN5LCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgIyBnZW5lcmFsLgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IGFjY19jaGVjayhleHBlY3RlZCwgZ290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxfZXJyID0gNWUtMTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19lcnIgPSA1ZS0xNSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBmbiA9PSAnZXJmYyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGVyZmMgaGFzIGxlc3MtdGhhbi1pZGVhbCBhY2N1cmFjeSBmb3IgbGFyZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYXJndW1lbnRzICh4IH4gMjUgb3Igc28pLCBtYWlubHkgZHVlIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIyBlcnJvciBpbnZvbHZlZCBpbiBjb21wdXRpbmcgZXhwKC14KngpLgotICAgICAgICAgICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICAgICAgICAgIyBYWFggV291bGQgYmUgYmV0dGVyIHRvIHdlYWtlbiB0aGlzIHRlc3Qgb25seQotICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgbGFyZ2UgeCwgaW5zdGVhZCBvZiBmb3IgYWxsIHguCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2N1cmFjeV9mYWlsdXJlID0gdWxwc19jaGVjayhleHBlY3RlZCwgZ290LCAyMDAwKQorICAgICAgICAgICAgIyBEZWZhdWx0IHRvbGVyYW5jZXMKKyAgICAgICAgICAgIHVscF90b2wsIGFic190b2wgPSA1LCAwLjAKIAotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgMjApCi0gICAgICAgICAgICAgICAgICAgIGlmIGFjY3VyYWN5X2ZhaWx1cmUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEV4Y2VwdGlvbnMgdG8gdGhlIGRlZmF1bHRzCisgICAgICAgICAgICBpZiBmbiA9PSAnZ2FtbWEnOgorICAgICAgICAgICAgICAgICMgRXhwZXJpbWVudGFsIHJlc3VsdHMgb24gb25lIHBsYXRmb3JtIGdhdmUKKyAgICAgICAgICAgICAgICAjIGFuIGFjY3VyYWN5IG9mIDw9IDEwIHVscHMgYWNyb3NzIHRoZSBlbnRpcmUgZmxvYXQKKyAgICAgICAgICAgICAgICAjIGRvbWFpbi4gV2Ugd2Vha2VuIHRoYXQgdG8gcmVxdWlyZSAyMCB1bHAgYWNjdXJhY3kuCisgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDIwCiAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ290LCBzdHIpIGFuZCBpc2luc3RhbmNlKGV4cGVjdGVkLCBzdHIpOgotICAgICAgICAgICAgICAgIGlmIGdvdCA9PSBleHBlY3RlZDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2xnYW1tYSc6CisgICAgICAgICAgICAgICAgIyB3ZSB1c2UgYSB3ZWFrZXIgYWNjdXJhY3kgdGVzdCBmb3IgbGdhbW1hOworICAgICAgICAgICAgICAgICMgbGdhbW1hIG9ubHkgYWNoaWV2ZXMgYW4gYWJzb2x1dGUgZXJyb3Igb2YKKyAgICAgICAgICAgICAgICAjIGEgZmV3IG11bHRpcGxlcyBvZiB0aGUgbWFjaGluZSBhY2N1cmFjeSwgaW4KKyAgICAgICAgICAgICAgICAjIGdlbmVyYWwuCisgICAgICAgICAgICAgICAgYWJzX3RvbCA9IDFlLTE1CiAKLSAgICAgICAgICAgIGZhaWxfbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXJnLCBleHBlY3RlZCwgZ290KQotICAgICAgICAgICAgaWYgYWNjdXJhY3lfZmFpbHVyZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBmYWlsX21zZyArPSAnICh7fSknLmZvcm1hdChhY2N1cmFjeV9mYWlsdXJlKQotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKGZhaWxfbXNnKQorICAgICAgICAgICAgZWxpZiBmbiA9PSAnZXJmYycgYW5kIGFyZyA+PSAwLjA6CisgICAgICAgICAgICAgICAgIyBlcmZjIGhhcyBsZXNzLXRoYW4taWRlYWwgYWNjdXJhY3kgZm9yIGxhcmdlCisgICAgICAgICAgICAgICAgIyBhcmd1bWVudHMgKHggfiAyNSBvciBzbyksIG1haW5seSBkdWUgdG8gdGhlCisgICAgICAgICAgICAgICAgIyBlcnJvciBpbnZvbHZlZCBpbiBjb21wdXRpbmcgZXhwKC14KngpLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIE9ic2VydmVkIGJldHdlZW4gQ1B5dGhvbiBhbmQgbXBtYXRoIGF0IDI1IGRwOgorICAgICAgICAgICAgICAgICMgICAgICAgeCA8ICAwIDogZXJyIDw9IDIgdWxwCisgICAgICAgICAgICAgICAgIyAgMCA8PSB4IDwgIDEgOiBlcnIgPD0gMTAgdWxwCisgICAgICAgICAgICAgICAgIyAgMSA8PSB4IDwgMTAgOiBlcnIgPD0gMTAwIHVscAorICAgICAgICAgICAgICAgICMgMTAgPD0geCA8IDIwIDogZXJyIDw9IDMwMCB1bHAKKyAgICAgICAgICAgICAgICAjIDIwIDw9IHggICAgICA6IDwgNjAwIHVscAorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICBpZiBhcmcgPCAxLjA6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMAorICAgICAgICAgICAgICAgIGVsaWYgYXJnIDwgMTAuMDoKKyAgICAgICAgICAgICAgICAgICAgdWxwX3RvbCA9IDEwMAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMDAwCisKKyAgICAgICAgICAgIGZhaWx1cmUgPSByZXN1bHRfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwX3RvbCwgYWJzX3RvbCkKKyAgICAgICAgICAgIGlmIGZhaWx1cmUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBtc2cgPSBmYWlsX2ZtdC5mb3JtYXQoaWQsIGZuLCBhcmcsIGZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQobXNnKQogCiAgICAgICAgIGlmIGZhaWx1cmVzOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdGYWlsdXJlcyBpbiB0ZXN0X210ZXN0ZmlsZTpcbiAgJyArCkBAIC0xMjcyLDcgKzEzOTMsOCBAQAogCiAgICAgICAgIGRlY2ltYWxfZXhhbXBsZXMgPSBbKERlY2ltYWwoJzEuMDAwMDAwMDEnKSwgRGVjaW1hbCgnMS4wJykpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0yMCcpLCBEZWNpbWFsKCcxLjBlLTIwJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlLTEwMCcpLCBEZWNpbWFsKCcxLjBlLTEwMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUyMCcpLCBEZWNpbWFsKCcxLjBlMjAnKSldCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZGVjaW1hbF9leGFtcGxlcywgcmVsX3RvbD0xZS04KQogICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOSkKIApAQCAtMTI4MCw4ICsxNDAyLDEwIEBACiAgICAgICAgICMgdGVzdCB3aXRoIEZyYWN0aW9uIHZhbHVlcwogICAgICAgICBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIAotICAgICAgICAjIGNvdWxkIHVzZSBzb21lIG1vcmUgZXhhbXBsZXMgaGVyZSEKLSAgICAgICAgZnJhY3Rpb25fZXhhbXBsZXMgPSBbKEZyYWN0aW9uKDEsIDEwMDAwMDAwMCkgKyAxLCBGcmFjdGlvbigxKSldCisgICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWworICAgICAgICAgICAgKEZyYWN0aW9uKDEsIDEwMDAwMDAwMCkgKyAxLCBGcmFjdGlvbigxKSksCisgICAgICAgICAgICAoRnJhY3Rpb24oMTAwMDAwMDAxKSwgRnJhY3Rpb24oMTAwMDAwMDAwKSksCisgICAgICAgICAgICAoRnJhY3Rpb24oMTAqKjggKyAxLCAxMCoqMjgpLCBGcmFjdGlvbigxLCAxMCoqMjApKV0KICAgICAgICAgc2VsZi5hc3NlcnRBbGxDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS04KQogICAgICAgICBzZWxmLmFzc2VydEFsbE5vdENsb3NlKGZyYWN0aW9uX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKaW5kZXggNjg1NjU5My4uNGUyYzkwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9taW1ldHlwZXMucHkKQEAgLTEwMSw1ICsxMDEsMTEgQEAKICAgICAgICAgZXEoc2VsZi5kYi5ndWVzc190eXBlKCJpbWFnZS5qcGciKSwgKCJpbWFnZS9qcGVnIiwgTm9uZSkpCiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UucG5nIiksICgiaW1hZ2UvcG5nIiwgTm9uZSkpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG1pbWV0eXBlcykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5IGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CmluZGV4IGYzZjcwY2MuLjU2ZDg1ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKQEAgLTcxMyw2ICs3MTMsMTMgQEAKICAgICAgICAgZ2NfY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3JldHVybmluZ190aGVfbnVtYmVyX29mX2J5dGVzX3dyaXR0ZW4oc2VsZik6CisgICAgICAgIG1tID0gbW1hcC5tbWFwKC0xLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiIiIpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIieCIpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1tLndyaXRlKGIieXoiKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiInB5dGhvbiIpLCA2KQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdjYW5ub3QgcmVzaXplIGFub255bW91cyBtbWFwcyBvbiBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9yZXNpemVfcGFzdF9wb3Moc2VsZik6CiAgICAgICAgIG0gPSBtbWFwLm1tYXAoLTEsIDgxOTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CmluZGV4IDhlZjMzNGYuLmY2NTZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXNpbGliLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiIFRlc3Qgc3VpdGUgZm9yIHRoZSBjb2RlIGluIG1zaWxpYiAiIiIKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogbXNpbGliID0gaW1wb3J0X21vZHVsZSgnbXNpbGliJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKaW5kZXggOGQ3YTIxMy4uMDFhMWNkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CkBAIC01LDcgKzUsNyBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KLWltcG9ydCB1bml0dGVzdCwgaW8sIGNvZGVjcywgc3lzLCBvcworaW1wb3J0IHVuaXR0ZXN0LCBpbywgY29kZWNzLCBzeXMKIGltcG9ydCBfbXVsdGlieXRlY29kZWMKIAogQUxMX0NKS0VOQ09ESU5HUyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CmluZGV4IDJiZjRlNzUuLjlmMjI1MDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQpAQCAtMSw2ICsxLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdmb3JrJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CmluZGV4IDE5M2EwNGEuLjQwN2JiM2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQpAQCAtMSw2ICsxLDExIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZwogCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworaWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnZm9ya3NlcnZlcicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQppbmRleCA1MjI3M2VhLi4zMjU5M2RhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKQEAgLTYsNyArNiw2IEBACiAKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5Ci1pbXBvcnQgemlwaW1wb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwpAQCAtMTUsNyArMTQsMTAgQEAKIAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsCi0gICAgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlLCBzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uKQorICAgIGFzc2VydF9weXRob25fb2spCisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQogCiAjIExvb2sgdXAgd2hpY2ggc3RhcnQgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIHRvIHRlc3QKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKaW5kZXggMzM0YWU5ZS4uNjU1ODk1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24ucHkKQEAgLTEsNiArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ3NwYXduJykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5IGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKaW5kZXggMzg3YTRlNy4uMjEwNzRjNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9uaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9uaXMucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogCiAjIFNraXAgdGVzdCBpZiBuaXMgbW9kdWxlIGRvZXMgbm90IGV4aXN0LgogbmlzID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCduaXMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CmluZGV4IDJlZjZkMDIuLmZlYWJhM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKQEAgLTE1NDIsOCArMTU0MiwxMCBAQAogICAgICAgICAgICAgICAgIGVsaWYgY21kID09IGInU1RBUlRUTFNcclxuJzoKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyLmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwoYiczODIgQmVnaW4gVExTIG5lZ290aWF0aW9uIG5vd1xyXG4nKQotICAgICAgICAgICAgICAgICAgICBjbGllbnQgPSBzc2wud3JhcF9zb2NrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPWNlcnRmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50ID0gY29udGV4dC53cmFwX3NvY2tldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudCkKICAgICAgICAgICAgICAgICAgICAgcmVhZGVyID0gY2xlYW51cC5lbnRlcl9jb250ZXh0KGNsaWVudC5tYWtlZmlsZSgncmInKSkKICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSBiJ1FVSVRcclxuJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQppbmRleCAzMGZhNjEyLi41YjU5MGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CkBAIC0zLDcgKzMsNiBAQAogCiBmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGZyb20gdW5pY29kZWRhdGEgaW1wb3J0IG5vcm1hbGl6ZSwgdW5pZGF0YV92ZXJzaW9uCiAKIFRFU1REQVRBRklMRSA9ICJOb3JtYWxpemF0aW9uVGVzdC50eHQiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IDU4MGYyMDMuLjkwZWRiNmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC00NTIsNSArNDUyLDg4IEBACiAgICAgYXR0cmlidXRlcyA9IFsncmVscGF0aCcsICdzcGxpdHVuYyddCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwYXRoID0gbnRwYXRoCisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICd4YicsIDApIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGIidGVzdF9udHBhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybWNhc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtY2FzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNhYnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2FicykKKworICAgIGRlZiB0ZXN0X3BhdGhfam9pbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGguam9pbignYScsIHNlbGYuUGF0aExpa2UoJ2InKSwgJ2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguam9pbignYScsICdiJywgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGV4dCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRkcml2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZHJpdmUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Jhc2VuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYmFzZW5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Rpcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5kaXJuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2xpbmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2xpbmspCisKKyAgICBkZWYgdGVzdF9wYXRoX2xleGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5sZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc21vdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNtb3VudCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHVzZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHZhcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR2YXJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1wYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9hYnNwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYWJzcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVhbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWFscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXRoID0gc2VsZi5wYXRoLmNvbW1vbnBhdGgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uX3BhdGgsIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2RpcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzZGlyKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKaW5kZXggNmVmOTNkOS4uNjgwNmM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQpAQCAtMSw2ICsxLDcgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgMiwgb3Bjb2RlcwogCiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgYW5uX21vZHVsZQogCiBjbGFzcyBPcGNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjAsNiArMjEsMzIgQEAKICAgICAgICAgaWYgbiAhPSA5MDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgndHJ5IGluc2lkZSBmb3InKQogCisgICAgZGVmIHRlc3Rfc2V0dXBfYW5ub3RhdGlvbnNfbGluZShzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IFNFVFVQX0FOTk9UQVRJT05TIGRvZXMgbm90IGNyZWF0ZSBzcHVyaW91cyBsaW5lIG51bWJlcnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKGFubl9tb2R1bGUuX19maWxlX18pIGFzIGY6CisgICAgICAgICAgICAgICAgdHh0ID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGNvID0gY29tcGlsZSh0eHQsIGFubl9tb2R1bGUuX19maWxlX18sICdleGVjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28uY29fZmlyc3RsaW5lbm8sIDYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfbm9fYW5ub3RhdGlvbnNfaWZfbm90X25lZWRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQzogcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIEMuX19hbm5vdGF0aW9uc19fCisKKyAgICBkZWYgdGVzdF91c2VfZXhpc3RpbmdfYW5ub3RhdGlvbnMoc2VsZik6CisgICAgICAgIG5zID0geydfX2Fubm90YXRpb25zX18nOiB7MTogMn19CisgICAgICAgIGV4ZWMoJ3g6IGludCcsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXSwgeyd4JzogaW50LCAxOiAyfSkKKworICAgIGRlZiB0ZXN0X2RvX25vdF9yZWNyZWF0ZV9hbm5vdGF0aW9ucyhzZWxmKToKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIGRlbCBfX2Fubm90YXRpb25zX18KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgICAgICB4OiBpbnQKKwogICAgIGRlZiB0ZXN0X3JhaXNlX2NsYXNzX2V4Y2VwdGlvbnMoc2VsZik6CiAKICAgICAgICAgY2xhc3MgQUNsYXNzKEV4Y2VwdGlvbik6IHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CmluZGV4IGI1YmE5NzYuLjYyNTQwOTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQpAQCAtMTIwLDYzICsxMjAsNjMgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFkZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hZGQoMywgNCkgPT0gNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hZGQoMywgNCksIDcpCiAKICAgICBkZWYgdGVzdF9iaXR3aXNlX2FuZChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFuZF8pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYW5kXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmFuZF8oMHhmLCAweGEpID09IDB4YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5hbmRfKDB4ZiwgMHhhKSwgMHhhKQogCiAgICAgZGVmIHRlc3RfY29uY2F0KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpID09ICdweXRob24nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFsxLCAyXSwgWzMsIDRdKSA9PSBbMSwgMiwgMywgNF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoU2VxMShbNSwgNl0pLCBTZXExKFs3XSkpID09IFs1LCA2LCA3XSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSkgPT0gWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdCgncHknLCAndGhvbicpLCAncHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoWzEsIDJdLCBbMywgNF0pLCBbMSwgMiwgMywgNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFNlcTEoWzUsIDZdKSwgU2VxMShbN10pKSwgWzUsIDYsIDddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChTZXEyKFs1LCA2XSksIFNlcTIoWzddKSksIFs1LCA2LCA3XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIDEzLCAyOSkKIAogICAgIGRlZiB0ZXN0X2NvdW50T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvdW50T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMykgPT0gMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCA1KSA9PSAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvdW50T2YoWzEsIDIsIDEsIDMsIDEsIDRdLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgNSksIDApCiAKICAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSBbNCwgMywgMiwgMV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmRlbGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5kZWxpdGVtKGEsIDEpIGlzIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhID09IFs0LCAyLCAxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3BlcmF0b3IuZGVsaXRlbShhLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBbNCwgMiwgMV0pCiAKICAgICBkZWYgdGVzdF9mbG9vcmRpdihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmZsb29yZGl2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZmxvb3JkaXYoNSwgMikgPT0gMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5mbG9vcmRpdig1LCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X3RydWVkaXYoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnRydWVkaXYsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci50cnVlZGl2KDUsIDIpID09IDIuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci50cnVlZGl2KDUsIDIpLCAyLjUpCiAKICAgICBkZWYgdGVzdF9nZXRpdGVtKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIGEgPSByYW5nZSgxMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmdldGl0ZW0sIGEsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5nZXRpdGVtKGEsIDIpID09IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuZ2V0aXRlbShhLCAyKSwgMikKIAogICAgIGRlZiB0ZXN0X2luZGV4T2Yoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMykgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5pbmRleE9mKFs0LCAzLCAyLCAxXSwgMyksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLmluZGV4T2YsIFs0LCAzLCAyLCAxXSwgMCkKIAogICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKQEAgLTE4OSwyMSArMTg5LDIxIEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5sc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSA9PSAxMCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmxzaGlmdCg1LCAwKSA9PSA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxzaGlmdCg1LCAxKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubHNoaWZ0KDUsIDApLCA1KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5sc2hpZnQsIDIsIC0xKQogCiAgICAgZGVmIHRlc3RfbW9kKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubW9kKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5tb2QoNSwgMikgPT0gMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5tb2QoNSwgMiksIDEpCiAKICAgICBkZWYgdGVzdF9tdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tdWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubXVsKDUsIDIpID09IDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm11bCg1LCAyKSwgMTApCiAKICAgICBkZWYgdGVzdF9tYXRtdWwoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTIyNyw3ICsyMjcsNyBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iub3JfKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXywgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm9yXygweGEsIDB4NSkgPT0gMHhmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm9yXygweGEsIDB4NSksIDB4ZikKIAogICAgIGRlZiB0ZXN0X3BvcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjUwLDggKzI1MCw4IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5yc2hpZnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCBOb25lLCA0MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnJzaGlmdCg1LCAxKSA9PSAyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IucnNoaWZ0KDUsIDApID09IDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IucnNoaWZ0KDUsIDEpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnJzaGlmdCg1LCAwKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IucnNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgpAQCAtMjY2LDE1ICsyNjYsMTUgQEAKICAgICAgICAgYSA9IGxpc3QocmFuZ2UoMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3Iuc2V0aXRlbShhLCAwLCAyKSBpcyBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA9PSBbMiwgMSwgMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9wZXJhdG9yLnNldGl0ZW0oYSwgMCwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzIsIDEsIDJdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBvcGVyYXRvci5zZXRpdGVtLCBhLCA0LCAyKQogCiAgICAgZGVmIHRlc3Rfc3ViKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc3ViKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnN1YiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnN1Yig1LCAyKSA9PSAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnN1Yig1LCAyKSwgMykKIAogICAgIGRlZiB0ZXN0X3RydXRoKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yOTIsNyArMjkyLDcgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnhvcikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci54b3IoMHhiLCAweGMpID09IDB4NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci54b3IoMHhiLCAweGMpLCAweDcpCiAKICAgICBkZWYgdGVzdF9pcyhzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKaW5kZXggNzYyMWMyNC4uOTFhMDMxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CkBAIC0xNiw2ICsxNiw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCitpbXBvcnQgb3B0cGFyc2UKIGZyb20gb3B0cGFyc2UgaW1wb3J0IG1ha2Vfb3B0aW9uLCBPcHRpb24sIFwKICAgICAgVGl0bGVkSGVscEZvcm1hdHRlciwgT3B0aW9uUGFyc2VyLCBPcHRpb25Hcm91cCwgXAogICAgICBTVVBQUkVTU19VU0FHRSwgT3B0aW9uRXJyb3IsIE9wdGlvbkNvbmZsaWN0RXJyb3IsIFwKQEAgLTE2NTAsNiArMTY1MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uIC1sOiBpbnZhbGlkIGludGVnZXIgdmFsdWU6ICcweDEyeCciKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2NoZWNrX2J1aWx0aW4nLCAnQW1iaWd1b3VzT3B0aW9uRXJyb3InLCAnTk9fREVGQVVMVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIG9wdHBhcnNlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQppbmRleCA5MDFkNGIyLi5hMzVlZDEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X29yZGVyZWRfZGljdC5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBidWlsdGlucwogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBjb3B5CiBpbXBvcnQgZ2MKQEAgLTk3LDYgKzk4LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QoKS51cGRhdGUsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBPcmRlcmVkRGljdC51cGRhdGUpCiAKKyAgICBkZWYgdGVzdF9pbml0X2NhbGxzKHNlbGYpOgorICAgICAgICBjYWxscyA9IFtdCisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoJ2tleXMnKQorICAgICAgICAgICAgICAgIHJldHVybiAoKQorICAgICAgICAgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICAgICAgICAgIGNhbGxzLmFwcGVuZCgnaXRlbXMnKQorICAgICAgICAgICAgICAgIHJldHVybiAoKQorCisgICAgICAgIHNlbGYuT3JkZXJlZERpY3QoU3BhbSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxzLCBbJ2tleXMnXSkKKwogICAgIGRlZiB0ZXN0X2Zyb21rZXlzKHNlbGYpOgogICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjJykKQEAgLTI5OCw5ICszMTIsMTEgQEAKICAgICAgICAgIyBkbyBub3Qgc2F2ZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGlmIG5vdCBuZWVkZWQKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgb2QgPSBPcmRlcmVkRGljdChwYWlycykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG9kLl9fZGljdF9fLCBkaWN0KQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCiAgICAgICAgIG9kLnggPSAxMAotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShvZC5fX3JlZHVjZV9fKClbMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuX19kaWN0X19bJ3gnXSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuX19yZWR1Y2VfXygpWzJdLCB7J3gnOiAxMH0pCiAKICAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgogICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKQEAgLTQwMyw2ICs0MTksMTQgQEAKICAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgqKmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKG9kKSwgc3lzLmdldHNpemVvZihkKSkKIAorICAgIGRlZiB0ZXN0X3ZpZXdzKHNlbGYpOgorICAgICAgICBPcmRlcmVkRGljdCA9IHNlbGYuT3JkZXJlZERpY3QKKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0Mjg2CisgICAgICAgIHMgPSAndGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciBhIGxhenkgZG9nIHllc3RlcmRheSBiZWZvcmUgZGF3bicuc3BsaXQoKQorICAgICAgICBvZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Qua2V5cygpLCBkaWN0KG9kKS5rZXlzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2QuaXRlbXMoKSwgZGljdChvZCkuaXRlbXMoKSkKKwogICAgIGRlZiB0ZXN0X292ZXJyaWRlX3VwZGF0ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdXBkYXRlKCkgd2l0aG91dCBicmVha2luZyBfX2luaXRfXygpCkBAIC02MTEsNiArNjM1LDI1IEBACiAgICAgT3JkZXJlZERpY3QgPSBweV9jb2xsLk9yZGVyZWREaWN0CiAKIAorY2xhc3MgQ1B5dGhvbkJ1aWx0aW5EaWN0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJ1aWx0aW4gZGljdCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLgorCisgICAgUmV1c2Ugc29tZSBvZiB0ZXN0cyBpbiBPcmRlcmVkRGljdCBzZWxlY3RpdmVseS4KKyAgICAiIiIKKworICAgIG1vZHVsZSA9IGJ1aWx0aW5zCisgICAgT3JkZXJlZERpY3QgPSBkaWN0CisKK2ZvciBtZXRob2QgaW4gKAorICAgICJ0ZXN0X2luaXQgdGVzdF91cGRhdGUgdGVzdF9hYmMgdGVzdF9jbGVhciB0ZXN0X2RlbGl0ZW0gIiArCisgICAgInRlc3Rfc2V0aXRlbSB0ZXN0X2RldGVjdF9kZWxldGlvbl9kdXJpbmdfaXRlcmF0aW9uICIgKworICAgICJ0ZXN0X3BvcGl0ZW0gdGVzdF9yZWluc2VydCB0ZXN0X292ZXJyaWRlX3VwZGF0ZSAiICsKKyAgICAidGVzdF9oaWdobHlfbmVzdGVkIHRlc3RfaGlnaGx5X25lc3RlZF9zdWJjbGFzcyAiICsKKyAgICAidGVzdF9kZWxpdGVtX2hhc2hfY29sbGlzaW9uICIpLnNwbGl0KCk6CisgICAgc2V0YXR0cihDUHl0aG9uQnVpbHRpbkRpY3RUZXN0cywgbWV0aG9kLCBnZXRhdHRyKE9yZGVyZWREaWN0VGVzdHMsIG1ldGhvZCkpCitkZWwgbWV0aG9kCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19jb2xsLCAncmVxdWlyZXMgdGhlIEMgdmVyc2lvbiBvZiB0aGUgY29sbGVjdGlvbnMgbW9kdWxlJykKIGNsYXNzIENQeXRob25PcmRlcmVkRGljdFRlc3RzKE9yZGVyZWREaWN0VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjI1LDE4ICs2NjgsMjAgQEAKICAgICAgICAgc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgogCi0gICAgICAgIGJhc2ljc2l6ZSA9IHNpemUoJ24yUCcgKyAnM1BuUG4yUCcpICsgY2FsY3NpemUoJzJuUG4nKQotICAgICAgICBlbnRyeXNpemUgPSBjYWxjc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnUCcpCisgICAgICAgIGJhc2ljc2l6ZSA9IHNpemUoJ25RMlAnICsgJzNQblBuMlAnKSArIGNhbGNzaXplKCcyblAybicpCisKKyAgICAgICAgZW50cnlzaXplID0gY2FsY3NpemUoJ24yUCcpCisgICAgICAgIHAgPSBjYWxjc2l6ZSgnUCcpCiAgICAgICAgIG5vZGVzaXplID0gY2FsY3NpemUoJ1BuMlAnKQogCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KnAgKyA4ICsgNSplbnRyeXNpemUpICAjIDhieXRlIGluZGljaWVzICsgOCoyLy8zICogZW50cnkgdGFibGUKICAgICAgICAgb2QueCA9IDEKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplKQogICAgICAgICBvZC51cGRhdGUoWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzKV0pCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSArIDMqbm9kZXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KnAgKyA4ICsgNSplbnRyeXNpemUgKyAzKm5vZGVzaXplKQogICAgICAgICBvZC51cGRhdGUoWyhpLCBpKSBmb3IgaSBpbiByYW5nZSgzLCAxMCldKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCisgICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyAxNipwICsgMTYgKyAxMCplbnRyeXNpemUgKyAxMCpub2Rlc2l6ZSkKIAogICAgICAgICBjaGVjayhvZC5rZXlzKCksIHNpemUoJ1AnKSkKICAgICAgICAgY2hlY2sob2QuaXRlbXMoKSwgc2l6ZSgnUCcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcy5weSBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKaW5kZXggOTcyMDIxMC4uMTc0NmNhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29zLnB5CkBAIC0xNSw3ICsxNSw2IEBACiBpbXBvcnQgbW1hcAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHNpZ25hbApAQCAtNjUsNiArNjQsOCBAQAogICAgIElOVF9NQVggPSBQWV9TU0laRV9UX01BWCA9IHN5cy5tYXhzaXplCiAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bml4X3NoZWxsCisKIAogcm9vdF9pbl9wb3NpeCA9IEZhbHNlCiBpZiBoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpOgpAQCAtODIsNiArODMsMzIgQEAKICMgSXNzdWUgIzE0MTEwOiBTb21lIHRlc3RzIGZhaWwgb24gRnJlZUJTRCBpZiB0aGUgdXNlciBpcyBpbiB0aGUgd2hlZWwgZ3JvdXAuCiBIQVZFX1dIRUVMX0dST1VQID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSBhbmQgb3MuZ2V0Z2lkKCkgPT0gMAogCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKG1zZ19yZWdleCwgcXVpZXQ9RmFsc2UpOgorICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygobXNnX3JlZ2V4LCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWlldD1xdWlldCk6CisgICAgICAgIHlpZWxkCisKKworZGVmIHJlcXVpcmVzX29zX2Z1bmMobmFtZSk6CisgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgbmFtZSksICdyZXF1aXJlcyBvcy4lcycgJSBuYW1lKQorCisKK2NsYXNzIF9QYXRoTGlrZShvcy5QYXRoTGlrZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0iIik6CisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYucGF0aCkKKworICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworCiBkZWYgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGNvbnRlbnQ9Yidjb250ZW50Jyk6CiAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAieGIiLCAwKSBhcyBmcDoKICAgICAgICAgZnAud3JpdGUoY29udGVudCkKQEAgLTE0NSw5ICsxNzIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkcyBJTlRfTUFYIDwgUFlfU1NJWkVfVF9NQVgiKQogICAgIEBzdXBwb3J0LmJpZ21lbXRlc3Qoc2l6ZT1JTlRfTUFYICsgMTAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2xhcmdlX3JlYWQoc2VsZiwgc2l6ZSk6Ci0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiJ3Rlc3QnKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgYid0ZXN0JykKIAogICAgICAgICAjIElzc3VlICMyMTkzMjogTWFrZSBzdXJlIHRoYXQgb3MucmVhZCgpIGRvZXMgbm90IHJhaXNlIGFuCiAgICAgICAgICMgT3ZlcmZsb3dFcnJvciBmb3Igc2l6ZSBsYXJnZXIgdGhhbiBJTlRfTUFYCkBAIC0yMDQsMTEgKzIzMCwxMiBAQAogCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIi4yIgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoIjEiKQotICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgiMiIpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIFRFU1RGTjIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgVEVTVEZOMikKKworICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgYiIxIikKKyAgICAgICAgY3JlYXRlX2ZpbGUoVEVTVEZOMiwgYiIyIikKKwogICAgICAgICBvcy5yZXBsYWNlKHN1cHBvcnQuVEVTVEZOLCBURVNURk4yKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgb3Muc3RhdCwgc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncicpIGFzIGY6CkBAIC0zMDksOSArMzM2LDcgQEAKICAgICAgICAgICAgIGZuYW1lID0gc2VsZi5mbmFtZS5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQogICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IGVuY29kZSAlYSBmb3IgdGhlIGZpbGVzeXN0ZW0iICUgc2VsZi5mbmFtZSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRfYXR0cmlidXRlcyhmbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCiAKICAgICBkZWYgdGVzdF9zdGF0X3Jlc3VsdF9waWNrbGUoc2VsZik6CiAgICAgICAgIHJlc3VsdCA9IG9zLnN0YXQoc2VsZi5mbmFtZSkKQEAgLTQ2MiwxOSArNDg3LDE0IEBACiAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLmRpcm5hbWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYuZGlybmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKHNlbGYuZm5hbWUsICd3YicpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoYiJBQkMiKQorICAgICAgICBjcmVhdGVfZmlsZShzZWxmLmZuYW1lKQogCiAgICAgICAgIGRlZiByZXN0b3JlX2Zsb2F0X3RpbWVzKHN0YXRlKToKLSAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLQorICAgICAgICAgICAgd2l0aCBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MoJ3N0YXRfZmxvYXRfdGltZXMnKToKICAgICAgICAgICAgICAgICBvcy5zdGF0X2Zsb2F0X3RpbWVzKHN0YXRlKQogCiAgICAgICAgICMgZW5zdXJlIHRoYXQgc3RfYXRpbWUgYW5kIHN0X210aW1lIGFyZSBmbG9hdAotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLQorICAgICAgICB3aXRoIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncygnc3RhdF9mbG9hdF90aW1lcycpOgogICAgICAgICAgICAgb2xkX2Zsb2F0X3RpbWVzID0gb3Muc3RhdF9mbG9hdF90aW1lcygtMSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZXN0b3JlX2Zsb2F0X3RpbWVzLCBvbGRfZmxvYXRfdGltZXMpCiAKQEAgLTU2Niw3ICs1ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJmZCBzdXBwb3J0IGZvciB1dGltZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCiAgICAgZGVmIHRlc3RfdXRpbWVfZmQoc2VsZik6CiAgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgbnMpOgotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJywgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgIyB1c2UgYSBmaWxlIGRlc2NyaXB0b3IgdG8gdGVzdCBmdXRpbWVucyh0aW1lc3BlYykKICAgICAgICAgICAgICAgICAjIG9yIGZ1dGltZXModGltZXZhbCkKICAgICAgICAgICAgICAgICBvcy51dGltZShmcC5maWxlbm8oKSwgbnM9bnMpCkBAIC02NzgsMTggKzY5OCwyMCBAQAogICAgICAgICByZXR1cm4gb3MuZW52aXJvbgogCiAgICAgIyBCdWcgMTExMDQ3OAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvYmluL3NoJyksICdyZXF1aXJlcyAvYmluL3NoJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh1bml4X3NoZWxsIGFuZCBvcy5wYXRoLmV4aXN0cyh1bml4X3NoZWxsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgYSBzaGVsbCcpCiAgICAgZGVmIHRlc3RfdXBkYXRlMihzZWxmKToKICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCiAgICAgICAgIG9zLmVudmlyb24udXBkYXRlKEhFTExPPSJXb3JsZCIpCi0gICAgICAgIHdpdGggb3MucG9wZW4oIi9iaW4vc2ggLWMgJ2VjaG8gJEhFTExPJyIpIGFzIHBvcGVuOgorICAgICAgICB3aXRoIG9zLnBvcGVuKCIlcyAtYyAnZWNobyAkSEVMTE8nIiAlIHVuaXhfc2hlbGwpIGFzIHBvcGVuOgogICAgICAgICAgICAgdmFsdWUgPSBwb3Blbi5yZWFkKCkuc3RyaXAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgIldvcmxkIikKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnBhdGguZXhpc3RzKCcvYmluL3NoJyksICdyZXF1aXJlcyAvYmluL3NoJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh1bml4X3NoZWxsIGFuZCBvcy5wYXRoLmV4aXN0cyh1bml4X3NoZWxsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgYSBzaGVsbCcpCiAgICAgZGVmIHRlc3Rfb3NfcG9wZW5faXRlcihzZWxmKToKLSAgICAgICAgd2l0aCBvcy5wb3BlbigKLSAgICAgICAgICAgICIvYmluL3NoIC1jICdlY2hvIFwibGluZTFcbmxpbmUyXG5saW5lM1wiJyIpIGFzIHBvcGVuOgorICAgICAgICB3aXRoIG9zLnBvcGVuKCIlcyAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciCisgICAgICAgICAgICAgICAgICAgICAgJSB1bml4X3NoZWxsKSBhcyBwb3BlbjoKICAgICAgICAgICAgIGl0ID0gaXRlcihwb3BlbikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMVxuIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMlxuIikKQEAgLTgyMCw2ICs4NDIsNyBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBqb2luID0gb3MucGF0aC5qb2luCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc3VwcG9ydC5URVNURk4pCiAKICAgICAgICAgIyBCdWlsZDoKICAgICAgICAgIyAgICAgVEVTVEZOLwpAQCAtODUyLDkgKzg3NSw4IEBACiAgICAgICAgIG9zLm1ha2VkaXJzKHQyX3BhdGgpCiAKICAgICAgICAgZm9yIHBhdGggaW4gdG1wMV9wYXRoLCB0bXAyX3BhdGgsIHRtcDNfcGF0aCwgdG1wNF9wYXRoOgotICAgICAgICAgICAgZiA9IG9wZW4ocGF0aCwgInciKQotICAgICAgICAgICAgZi53cml0ZSgiSSdtICIgKyBwYXRoICsgIiBhbmQgcHJvdWQgb2YgaXQuICBCbGFtZSB0ZXN0X29zLlxuIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ4IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJJJ20gIiArIHBhdGggKyAiIGFuZCBwcm91ZCBvZiBpdC4gIEJsYW1lIHRlc3Rfb3MuXG4iKQogCiAgICAgICAgIGlmIHN1cHBvcnQuY2FuX3N5bWxpbmsoKToKICAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5hYnNwYXRoKHQyX3BhdGgpLCBzZWxmLmxpbmtfcGF0aCkKQEAgLTg3OSwxMCArOTAxLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzIgKyBmbGlwcGVkXSwgKHNlbGYuc3ViMTFfcGF0aCwgW10sIFtdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMyAtIDIgKiBmbGlwcGVkXSwgc2VsZi5zdWIyX3RyZWUpCiAKLSAgICBkZWYgdGVzdF93YWxrX3BydW5lKHNlbGYpOgorICAgIGRlZiB0ZXN0X3dhbGtfcHJ1bmUoc2VsZiwgd2Fsa19wYXRoPU5vbmUpOgorICAgICAgICBpZiB3YWxrX3BhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHdhbGtfcGF0aCA9IHNlbGYud2Fsa19wYXRoCiAgICAgICAgICMgUHJ1bmUgdGhlIHNlYXJjaC4KICAgICAgICAgYWxsID0gW10KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIHNlbGYud2FsayhzZWxmLndhbGtfcGF0aCk6CisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBzZWxmLndhbGsod2Fsa19wYXRoKToKICAgICAgICAgICAgIGFsbC5hcHBlbmQoKHJvb3QsIGRpcnMsIGZpbGVzKSkKICAgICAgICAgICAgICMgRG9uJ3QgZGVzY2VuZCBpbnRvIFNVQjEuCiAgICAgICAgICAgICBpZiAnU1VCMScgaW4gZGlyczoKQEAgLTg5MSwxNiArOTE1LDE5IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYud2Fsa19wYXRoLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQorICAgICAgICAgICAgICAgICAgICAgICAgIChzdHIod2Fsa19wYXRoKSwgWyJTVUIyIl0sIFsidG1wMSJdKSkKIAogICAgICAgICBhbGxbMV1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxXSwgc2VsZi5zdWIyX3RyZWUpCiAKKyAgICBkZWYgdGVzdF9maWxlX2xpa2VfcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhbGtfcHJ1bmUoX1BhdGhMaWtlKHNlbGYud2Fsa19wYXRoKSkKKwogICAgIGRlZiB0ZXN0X3dhbGtfYm90dG9tX3VwKHNlbGYpOgogICAgICAgICAjIFdhbGsgYm90dG9tLXVwLgogICAgICAgICBhbGwgPSBsaXN0KHNlbGYud2FsayhzZWxmLndhbGtfcGF0aCwgdG9wZG93bj1GYWxzZSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCwgYWxsKQogICAgICAgICAjIFdlIGNhbid0IGtub3cgd2hpY2ggb3JkZXIgU1VCMSBhbmQgU1VCMiB3aWxsIGFwcGVhciBpbi4KICAgICAgICAgIyBOb3QgZmxpcHBlZDogIFNVQjExLCBTVUIxLCBTVUIyLCBURVNURk4KICAgICAgICAgIyAgICAgZmxpcHBlZDogIFNVQjIsIFNVQjExLCBTVUIxLCBURVNURk4KQEAgLTkzMCwyMiArOTU3LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRGlkbid0IGZvbGxvdyBzeW1saW5rIHdpdGggZm9sbG93bGlua3M9VHJ1ZSIpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICMgVGVhciBldmVyeXRoaW5nIGRvd24uICBUaGlzIGlzIGEgZGVjZW50IHVzZSBmb3IgYm90dG9tLXVwIG9uCi0gICAgICAgICMgV2luZG93cywgd2hpY2ggZG9lc24ndCBoYXZlIGEgcmVjdXJzaXZlIGRlbGV0ZSBjb21tYW5kLiAgVGhlCi0gICAgICAgICMgKG5vdCBzbykgc3VidGxldHkgaXMgdGhhdCBybWRpciB3aWxsIGZhaWwgdW5sZXNzIHRoZSBkaXIncwotICAgICAgICAjIGtpZHMgYXJlIHJlbW92ZWQgZmlyc3QsIHNvIGJvdHRvbSB1cCBpcyBlc3NlbnRpYWwuCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHN1cHBvcnQuVEVTVEZOLCB0b3Bkb3duPUZhbHNlKToKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgotICAgICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsoZGlybmFtZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcm5hbWUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGRpcm5hbWUpCi0gICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotCiAgICAgZGVmIHRlc3Rfd2Fsa19iYWRfZGlyKHNlbGYpOgogICAgICAgICAjIFdhbGsgdG9wLWRvd24uCiAgICAgICAgIGVycm9ycyA9IFtdCkBAIC0xMDI4LDI3ICsxMDM5LDExIEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgbmV3ZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZmQsIG1pbmZkKQogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAjIGNsZWFudXAKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgotICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpOgotICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLQogY2xhc3MgQnl0ZXNXYWxrVGVzdHMoV2Fsa1Rlc3RzKToKICAgICAiIiJUZXN0cyBmb3Igb3Mud2FsaygpIHdpdGggYnl0ZXMuIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcigpLnNldFVwKCkKICAgICAgICAgc2VsZi5zdGFjayA9IGNvbnRleHRsaWIuRXhpdFN0YWNrKCkKLSAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgotICAgICAgICAgICAgc2VsZi5zdGFjay5lbnRlcl9jb250ZXh0KHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCkpCi0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5zdGFjay5jbG9zZSgpCkBAIC0xMjI1LDggKzEyMjAsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSkKICAgICAgICAgb3MucmVtb3ZlZGlycyhkaXJiKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyYSkpCkBAIC0xMjM3LDggKzEyMzEsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKICAgICAgICAgICAgIG9zLnJlbW92ZWRpcnMoZGlyYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQpAQCAtMTI0OCw3ICsxMjQxLDcgQEAKIAogY2xhc3MgRGV2TnVsbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZXZudWxsKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3diJykgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3YicsIDApIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGInaGVsbG8nKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAncmInKSBhcyBmOgpAQCAtMTI2NSw2ICsxMjU4LDcgQEAKIAogICAgIGRlZiB0ZXN0X3VyYW5kb21fdmFsdWUoc2VsZik6CiAgICAgICAgIGRhdGExID0gb3MudXJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGExLCBieXRlcykKICAgICAgICAgZGF0YTIgPSBvcy51cmFuZG9tKDE2KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKIApAQCAtMTI4NSw2ICsxMjc5LDQ5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRyYW5kb20nKSwgJ25lZWQgb3MuZ2V0cmFuZG9tKCknKQorY2xhc3MgR2V0UmFuZG9tVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmdldHJhbmRvbSgxKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRU5PU1lTOgorICAgICAgICAgICAgICAgICMgUHl0aG9uIGNvbXBpbGVkIG9uIGEgbW9yZSByZWNlbnQgTGludXggdmVyc2lvbgorICAgICAgICAgICAgICAgICMgdGhhbiB0aGUgY3VycmVudCBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2V0cmFuZG9tKCkgc3lzY2FsbCBmYWlscyB3aXRoIEVOT1NZUyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fdHlwZShzZWxmKToKKyAgICAgICAgZGF0YSA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb20wKHNlbGYpOgorICAgICAgICBlbXB0eSA9IG9zLmdldHJhbmRvbSgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVtcHR5LCBiJycpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fcmFuZG9tKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvcywgJ0dSTkRfUkFORE9NJykpCisKKyAgICAgICAgIyBEb24ndCB0ZXN0IG9zLmdldHJhbmRvbSgxLCBvcy5HUk5EX1JBTkRPTSkgdG8gbm90IGNvbnN1bWUgdGhlIHJhcmUKKyAgICAgICAgIyByZXNvdXJjZSAvZGV2L3JhbmRvbQorCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX25vbmJsb2NrKHNlbGYpOgorICAgICAgICAjIFRoZSBjYWxsIG11c3Qgbm90IGZhaWwuIENoZWNrIGFsc28gdGhhdCB0aGUgZmxhZyBleGlzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfTk9OQkxPQ0spCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAjIFN5c3RlbSB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV92YWx1ZShzZWxmKToKKyAgICAgICAgZGF0YTEgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIGRhdGEyID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKKworCiAjIG9zLnVyYW5kb20oKSBkb2Vzbid0IHVzZSBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIGl0IGlzIGltcGxlbWVudGVkIHdpdGggdGhlCiAjIGdldGVudHJvcHkoKSBmdW5jdGlvbiwgdGhlIGdldHJhbmRvbSgpIGZ1bmN0aW9uIG9yIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsCiBPU19VUkFORE9NX0RPTlRfVVNFX0ZEID0gKApAQCAtMTMzNSw5ICsxMzcyLDkgQEAKICAgICBkZWYgdGVzdF91cmFuZG9tX2ZkX3Jlb3BlbmVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICMyMTIwNzogdXJhbmRvbSgpIHNob3VsZCBkZXRlY3QgaXRzIGZkIHRvIC9kZXYvdXJhbmRvbQogICAgICAgICAjIGNoYW5nZWQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCByZW9wZW4gaXQuCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYiJ4IiAqIDI1NikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiIngiICogMjU2KQorCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBpbXBvcnQgc3lzCkBAIC0xMzk5LDYgKzE0MzYsNyBAQAogICAgICAgICBvcy5leGVjdmUgPSBvcmlnX2V4ZWN2ZQogICAgICAgICBvcy5kZWZwYXRoID0gb3JpZ19kZWZwYXRoCiAKKwogY2xhc3MgRXhlY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcElmKFVTSU5HX0xJTlVYVEhSRUFEUywKICAgICAgICAgICAgICAgICAgICAgICJhdm9pZCB0cmlnZ2VyaW5nIGEgbGludXh0aHJlYWRzIGJ1Zzogc2VlIGlzc3VlICM0OTcwIikKQEAgLTE0NjYsNiArMTUwNCwxOCBAQAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKIGNsYXNzIFdpbjMyRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBleGlzdHMgPSBGYWxzZQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBleGlzdHMgPSBUcnVlCisgICAgICAgICAgICBzZWxmLmZhaWwoImZpbGUgJXMgbXVzdCBub3QgZXhpc3Q7IG9zLnN0YXQgZmFpbGVkIHdpdGggJXMiCisgICAgICAgICAgICAgICAgICAgICAgJSAoc3VwcG9ydC5URVNURk4sIGV4YykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImZpbGUgJXMgbXVzdCBub3QgZXhpc3QiICUgc3VwcG9ydC5URVNURk4pCisKICAgICBkZWYgdGVzdF9yZW5hbWUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnJlbmFtZSwgc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOKyIuYmFrIikKIApAQCAtMTQ3NiwxMiArMTUyNiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5jaGRpciwgc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9ta2RpcihzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikKLSAgICAgICAgdHJ5OgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIngiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWtkaXIsIHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBvcy51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF91dGltZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCBOb25lKQpAQCAtMTQ4OSw2ICsxNTM3LDcgQEAKICAgICBkZWYgdGVzdF9jaG1vZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MuY2htb2QsIHN1cHBvcnQuVEVTVEZOLCAwKQogCisKIGNsYXNzIFRlc3RJbnZhbGlkRkQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHNpbmdsZXMgPSBbImZjaGRpciIsICJkdXAiLCAiZmRvcGVuIiwgImZkYXRhc3luYyIsICJmc3RhdCIsCiAgICAgICAgICAgICAgICAiZnN0YXR2ZnMiLCAiZnN5bmMiLCAidGNnZXRwZ3JwIiwgInR0eW5hbWUiXQpAQCAtMTYwMCwxMiArMTY0OSw5IEBACiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCiAKICAgICBkZWYgX3Rlc3RfbGluayhzZWxmLCBmaWxlMSwgZmlsZTIpOgotICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJ3IikgYXMgZjE6Ci0gICAgICAgICAgICBmMS53cml0ZSgidGVzdCIpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUxKQogCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgb3MubGluayhmaWxlMSwgZmlsZTIpCisgICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQogICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJyIikgYXMgZjEsIG9wZW4oZmlsZTIsICJyIikgYXMgZjI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lb3BlbmZpbGUoZjEuZmlsZW5vKCksIGYyLmZpbGVubygpKSkKIApAQCAtMTg5Niw2ICsxOTQyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihzdXBwb3J0LlRFU1RGTikpLAogICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocykKKwogICAgICAgICAjIGJ5dGVzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSksCkBAIC0xOTA5LDYgKzE5NTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKHBhdGgpKSwKICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZWRfcGF0aHMpCisKICAgICAgICAgIyBieXRlcwogICAgICAgICBwYXRoID0gYidcXFxcP1xcJyArIG9zLmZzZW5jb2RlKG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0xOTg4LDUxICsyMDM2LDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQobGluayksIG9zLnN0YXQobGluaykpCiAKICAgICAgICAgYnl0ZXNfbGluayA9IG9zLmZzZW5jb2RlKGxpbmspCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KHRhcmdldCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKIAogICAgIGRlZiB0ZXN0XzEyMDg0KHNlbGYpOgogICAgICAgICBsZXZlbDEgPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIGxldmVsMiA9IG9zLnBhdGguam9pbihsZXZlbDEsICJsZXZlbDIiKQogICAgICAgICBsZXZlbDMgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGV2ZWwzIikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBsZXZlbDEpCisKKyAgICAgICAgb3MubWtkaXIobGV2ZWwxKQorICAgICAgICBvcy5ta2RpcihsZXZlbDIpCisgICAgICAgIG9zLm1rZGlyKGxldmVsMykKKworICAgICAgICBmaWxlMSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4obGV2ZWwxLCAiZmlsZTEiKSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCisKKyAgICAgICAgb3JpZ19kaXIgPSBvcy5nZXRjd2QoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5ta2RpcihsZXZlbDEpCi0gICAgICAgICAgICBvcy5ta2RpcihsZXZlbDIpCi0gICAgICAgICAgICBvcy5ta2RpcihsZXZlbDMpCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDIpCisgICAgICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxpbmsiKQorICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLnJlbHBhdGgoZmlsZTEpLCAibGluayIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJsaW5rIiwgb3MubGlzdGRpcihvcy5nZXRjd2QoKSkpCiAKLSAgICAgICAgICAgIGZpbGUxID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihsZXZlbDEsICJmaWxlMSIpKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gdGhlIHNhbWUgZGlyIGFzIHRoZSBsaW5rCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLCBvcy5zdGF0KCJsaW5rIikpCiAKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoImZpbGUxIikKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGJlbG93IHRoZSBsaW5rCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCiAKLSAgICAgICAgICAgIG9yaWdfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDIpCi0gICAgICAgICAgICAgICAgbGluayA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsaW5rIikKLSAgICAgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGgucmVscGF0aChmaWxlMSksICJsaW5rIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJsaW5rIiwgb3MubGlzdGRpcihvcy5nZXRjd2QoKSkpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSB0aGUgc2FtZSBkaXIgYXMgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLCBvcy5zdGF0KCJsaW5rIikpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBiZWxvdyB0aGUgbGluawotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQotCi0gICAgICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYWJvdmUgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDMpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgb3MuY2hkaXIob3JpZ19kaXIpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIHNlbGYuZmFpbChlcnIpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBhYm92ZSB0aGUgbGluaworICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGUxKQotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShsZXZlbDEpCisgICAgICAgICAgICBvcy5jaGRpcihvcmlnX2RpcikKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKQEAgLTIwNzAsNyArMjExMCw3IEBACiBjbGFzcyBOb25Mb2NhbFN5bWxpbmtUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICIiIgorICAgICAgICByIiIiCiAgICAgICAgIENyZWF0ZSB0aGlzIHN0cnVjdHVyZToKIAogICAgICAgICBiYXNlCkBAIC0yMTQxLDExICsyMTgxLDExMCBAQAogCiAgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgJ3Bhc3MnXQotICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgICMgQWRkIGFuIGltcGxpY2l0IHRlc3QgZm9yIFB5VW5pY29kZV9GU0NvbnZlcnRlcigpLgorICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIF9QYXRoTGlrZShhcmdzWzBdKSwgYXJncykKICAgICAgICAgc3RhdHVzID0gb3Mud2FpdHBpZChwaWQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAocGlkLCAwKSkKIAogCitjbGFzcyBTcGF3blRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgY3JlYXRlX2FyZ3Moc2VsZiwgKiwgd2l0aF9lbnY9RmFsc2UsIHVzZV9ieXRlcz1GYWxzZSk6CisgICAgICAgIHNlbGYuZXhpdGNvZGUgPSAxNworCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBpZiBub3Qgd2l0aF9lbnY6CisgICAgICAgICAgICBjb2RlID0gJ2ltcG9ydCBzeXM7IHN5cy5leGl0KCVzKScgJSBzZWxmLmV4aXRjb2RlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmVudiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgICAgICMgY3JlYXRlIGFuIHVuaXF1ZSBrZXkKKyAgICAgICAgICAgIHNlbGYua2V5ID0gc3RyKHV1aWQudXVpZDQoKSkKKyAgICAgICAgICAgIHNlbGYuZW52W3NlbGYua2V5XSA9IHNlbGYua2V5CisgICAgICAgICAgICAjIHJlYWQgdGhlIHZhcmlhYmxlIGZyb20gb3MuZW52aXJvbiB0byBjaGVjayB0aGF0IGl0IGV4aXN0cworICAgICAgICAgICAgY29kZSA9ICgnaW1wb3J0IHN5cywgb3M7IG1hZ2ljID0gb3MuZW52aXJvblslcl07IHN5cy5leGl0KCVzKScKKyAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5rZXksIHNlbGYuZXhpdGNvZGUpKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGNvZGUpCisKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgZmlsZW5hbWVdCisgICAgICAgIGlmIHVzZV9ieXRlczoKKyAgICAgICAgICAgIGFyZ3MgPSBbb3MuZnNlbmNvZGUoYSkgZm9yIGEgaW4gYXJnc10KKyAgICAgICAgICAgIHNlbGYuZW52ID0ge29zLmZzZW5jb2RlKGspOiBvcy5mc2VuY29kZSh2KQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5lbnYuaXRlbXMoKX0KKworICAgICAgICByZXR1cm4gYXJncworCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubCcpCisgICAgZGVmIHRlc3Rfc3Bhd25sKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25sKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sZScpCisgICAgZGVmIHRlc3Rfc3Bhd25sZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmxlKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubHAnKQorICAgIGRlZiB0ZXN0X3NwYXdubHAoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmxwKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25scGUnKQorICAgIGRlZiB0ZXN0X3NwYXdubHBlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubHBlKG9zLlBfV0FJVCwgYXJnc1swXSwgKmFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudicpCisgICAgZGVmIHRlc3Rfc3Bhd252KHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252KG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudmUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZwJykKKyAgICBkZWYgdGVzdF9zcGF3bnZwKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252cChvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252cGUnKQorICAgIGRlZiB0ZXN0X3NwYXdudnBlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudnBlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252JykKKyAgICBkZWYgdGVzdF9ub3dhaXQoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgcGlkID0gb3Muc3Bhd252KG9zLlBfTk9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICByZXN1bHQgPSBvcy53YWl0cGlkKHBpZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIHBpZCkKKyAgICAgICAgc3RhdHVzID0gcmVzdWx0WzFdCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdXSUZFWElURUQnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5XSUZFWElURUQoc3RhdHVzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuV0VYSVRTVEFUVVMoc3RhdHVzKSwgc2VsZi5leGl0Y29kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBzZWxmLmV4aXRjb2RlIDw8IDgpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252ZScpCisgICAgZGVmIHRlc3Rfc3Bhd252ZV9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGJ5dGVzIGhhbmRsaW5nIGluIHBhcnNlX2FyZ2xpc3QgYW5kIHBhcnNlX2Vudmxpc3QgKCMyODExNCkKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSwgdXNlX2J5dGVzPVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252ZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisKICMgVGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIFRlc3RDYXNlIGNhdXNlZCBhdCBsZWFzdCB0d28gZGlmZmVyZW50IGVycm9ycyBvbgogIyAqbml4IGJ1aWxkYm90cy4gVGVtcG9yYXJpbHkgc2tpcCB0aGlzIHRvIGxldCB0aGUgYnVpbGRib3RzIG1vdmUgYWxvbmcuCiBAdW5pdHRlc3Quc2tpcCgiU2tpcCBkdWUgdG8gcGxhdGZvcm0vZW52aXJvbm1lbnQgZGlmZmVyZW5jZXMgb24gKk5JWCBidWlsZGJvdHMiKQpAQCAtMjE2OCw4ICsyMzA3LDggQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbmV3X3ByaW8gPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQogICAgICAgICAgICAgaWYgYmFzZSA+PSAxOSBhbmQgbmV3X3ByaW8gPD0gMTk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCi0gICAgICAidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInVuYWJsZSB0byByZWxpYWJseSB0ZXN0IHNldHByaW9yaXR5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3ByaW8sIGJhc2UgKyAxKQogICAgICAgICBmaW5hbGx5OgpAQCAtMjI3OSw4ICsyNDE4LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMua2V5ID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGNscy5EQVRBKQorICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgY2xzLkRBVEEpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgpAQCAtMjQzMCwxMCArMjU2OCwxMSBAQAogICAgIGRlZiB0ZXN0X3RyYWlsZXJzKHNlbGYpOgogICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKICAgICAgICAgZmlsZV9kYXRhID0gYiJhYmNkZWYiCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShmaWxlX2RhdGEpCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncmInKWFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBURVNURk4yKQorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgVEVTVEZOMikKKyAgICAgICAgY3JlYXRlX2ZpbGUoVEVTVEZOMiwgZmlsZV9kYXRhKQorCisgICAgICAgIHdpdGggb3BlbihURVNURk4yLCAncmInKSBhcyBmOgogICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIGYuZmlsZW5vKCksIDAsIGxlbihmaWxlX2RhdGEpLAogICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxlcnM9W2IiMTIzNCJdKQogICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQpAQCAtMjQ1NiwzNSArMjU5NSwzNyBAQAogZGVmIHN1cHBvcnRzX2V4dGVuZGVkX2F0dHJpYnV0ZXMoKToKICAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CiAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgdHJ5OgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ4YiIsIDApIGFzIGZwOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCBiInVzZXIudGVzdCIsIGIiIikKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgIGZpbmFsbHk6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgotICAgIGtlcm5lbF92ZXJzaW9uID0gcGxhdGZvcm0ucmVsZWFzZSgpCi0gICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCi0gICAgcmV0dXJuIG0gaXMgTm9uZSBvciBpbnQobS5ncm91cCgxKSkgPj0gMzkKKworICAgIHJldHVybiBUcnVlCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiKQorIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCitAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDM5KQogY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotCiAgICAgZGVmIF9jaGVja194YXR0cnNfc3RyKHNlbGYsIHMsIGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0ciwgKiprd2FyZ3MpOgogICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCi0gICAgICAgIG9wZW4oZm4sICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmbikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZm4pCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorCiAgICAgICAgIGluaXRfeGF0dHIgPSBsaXN0eGF0dHIoZm4pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbml0X3hhdHRyLCBsaXN0KQorCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiIiLCAqKmt3YXJncykKICAgICAgICAgeGF0dHIgPSBzZXQoaW5pdF94YXR0cikKICAgICAgICAgeGF0dHIuYWRkKCJ1c2VyLnRlc3QiKQpAQCAtMjQ5MiwxOSArMjYzMywyNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiIiKQogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiaGVsbG8iLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiaGVsbG8iKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiYnllIiwgb3MuWEFUVFJfQ1JFQVRFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVFWElTVCkKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJieWUiLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJmb28iLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQogICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdDIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCiAgICAgICAgIHJlbW92ZXhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorCiAgICAgICAgIHhhdHRyLnJlbW92ZSgidXNlci50ZXN0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksICoqa3dhcmdzKSwgYiJmb28iKQpAQCAtMjUxNywxMSArMjY2MywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgc2V0KGluaXRfeGF0dHIpIHwgc2V0KG1hbnkpKQogCiAgICAgZGVmIF9jaGVja194YXR0cnMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgZGVmIG1ha2VfYnl0ZXMocyk6Ci0gICAgICAgICAgICByZXR1cm4gYnl0ZXMocywgImFzY2lpIikKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihzdHIsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIobWFrZV9ieXRlcywgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIob3MuZnNlbmNvZGUsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLApAQCAtMjUzNiwxMCArMjY4MiwxMCBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgICAgIHJldHVybiBvcy5nZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiBzZXR4YXR0cihwYXRoLCAqYXJncyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgcmVtb3ZleGF0dHIocGF0aCwgKmFyZ3MpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIsIDApIGFzIGZwOgogICAgICAgICAgICAgICAgIG9zLnJlbW92ZXhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIGxpc3R4YXR0cihwYXRoLCAqYXJncyk6CiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CkBAIC0yNTQ3LDQzICsyNjkzLDYgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0cikKIAogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKLWNsYXNzIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkKHNlbGYpOgotICAgICAgICBpbXBvcnQgbnQKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIGZvciBmdW5jLCAqYXJncyBpbiAoCi0gICAgICAgICAgICAgICAgKG50Ll9nZXRmdWxscGF0aG5hbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAobnQuX2lzZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmFjY2VzcywgZmlsZW5hbWUsIG9zLlJfT0spLAotICAgICAgICAgICAgICAgIChvcy5jaGRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5jaG1vZCwgZmlsZW5hbWUsIDBvNzc3KSwKLSAgICAgICAgICAgICAgICAob3MuZ2V0Y3dkYiwpLAotICAgICAgICAgICAgICAgIChvcy5saW5rLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5saXN0ZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmxzdGF0LCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLm1rZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLm9wZW4sIGZpbGVuYW1lLCBvcy5PX1JET05MWSksCi0gICAgICAgICAgICAgICAgKG9zLnJlbmFtZSwgZmlsZW5hbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Mucm1kaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Muc3RhcnRmaWxlLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnN0YXQsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MudW5saW5rLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnV0aW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywgZnVuYywgKmFyZ3MpCi0KLSAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCi0gICAgZGVmIHRlc3Rfc3ltbGluayhzZWxmKToKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSkKLQotCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X3Rlcm1pbmFsX3NpemUnKSwgInJlcXVpcmVzIG9zLmdldF90ZXJtaW5hbF9zaXplIikKIGNsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgpAQCAtMjY0Niw2ICsyNzU1LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVuY29kZWQgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGVuY29kZWQpCisgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChieXRlYXJyYXkoZW5jb2RlZCkpCiAgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChtZW1vcnl2aWV3KGVuY29kZWQpKQogCiAgICAgICAgIHNlbGYuZmlsZW5hbWVzID0gc2VsZi5ieXRlc19maWxlbmFtZXMgKyBzZWxmLnVuaWNvZGVfZmlsZW5hbWVzCkBAIC0yNjY2LDE2ICsyNzc2LDcgQEAKICAgICAgICAgICAgICAgICAoc2VsZi5ieXRlc19maWxlbmFtZXMsIG9zLnJlcGxhY2UsIGIiZHN0IiksCiAgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlbmFtZSwgImRzdCIpLAogICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5yZXBsYWNlLCAiZHN0IiksCi0gICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTY0MTQ6IERvbid0IHRlc3QgdW5kZWNvZGFibGUgbmFtZXMgd2l0aCBsaXN0ZGlyKCkKLSAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb2YgYSBXaW5kb3dzIGJ1Zy4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBXaXRoIHRoZSBBTlNJIGNvZGUgcGFnZSA5MzIsIG9zLmxpc3RkaXIoYidceGU3JykgcmV0dXJuIGFuCi0gICAgICAgICAgICAgICAgIyBlbXB0eSBsaXN0IChpbnN0ZWFkIG9mIGZhaWxpbmcpLCB3aGVyZWFzIG9zLmxpc3RkaXIoYidceGZmJykKLSAgICAgICAgICAgICAgICAjIHJhaXNlcyBhIEZpbGVOb3RGb3VuZEVycm9yLiBJdCBsb29rcyBsaWtlIGEgV2luZG93cyBidWc6Ci0gICAgICAgICAgICAgICAgIyBiJ1x4ZTcnIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCwgRmluZEZpcnN0RmlsZUEoYidceGU3JykKLSAgICAgICAgICAgICAgICAjIGZhaWxzIHdpdGggRVJST1JfRklMRV9OT1RfRk9VTkQgKDIpLCBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgIyBFUlJPUl9QQVRIX05PVF9GT1VORCAoMykuCi0gICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLmxpc3RkaXIsKSwKKyAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MubGlzdGRpciwgKSwKICAgICAgICAgICAgICkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmdW5jcy5leHRlbmQoKApAQCAtMjcxNiwxMiArMjgxNywyNCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmdW5jcy5hcHBlbmQoKHNlbGYuZmlsZW5hbWVzLCBvcy5yZWFkbGluaywpKQogCisKICAgICAgICAgZm9yIGZpbGVuYW1lcywgZnVuYywgKmZ1bmNfYXJncyBpbiBmdW5jczoKICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGZ1bmMobmFtZSwgKmZ1bmNfYXJncykKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAnc2hvdWxkIGJlJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlcnIuZmlsZW5hbWUsIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXJyLmZpbGVuYW1lLCBuYW1lLCBzdHIoZnVuYykpCisgICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICAgICAgICAgICAgICAjIGlzc3VlMjc3ODE6IHVuZGVjb2RhYmxlIGJ5dGVzIGN1cnJlbnRseSByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgICAgICAgICAgIyBieSAzLjYuMGI0IHRoaXMgd2lsbCBiZWNvbWUgVW5pY29kZURlY29kZUVycm9yIG9yIG5vdGhpbmcKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVyci5fX2NvbnRleHRfXywgVW5pY29kZURlY29kZUVycm9yKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIHRocm93biBieSB7fSIuZm9ybWF0KGZ1bmMpKQogCkBAIC0yODE5LDYgKzI5MzIsNjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRfaW5oZXJpdGFibGUoc2xhdmVfZmQpLCBGYWxzZSkKIAogCitjbGFzcyBQYXRoVENvbnZlcnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHR1cGxlcyBvZiAoZnVuY3Rpb24gbmFtZSwgYWxsb3dzIGZkIGFyZ3VtZW50cywgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8KKyAgICAjIGZ1bmN0aW9uLCBjbGVhbnVwIGZ1bmN0aW9uKQorICAgIGZ1bmN0aW9ucyA9IFsKKyAgICAgICAgKCdzdGF0JywgVHJ1ZSwgKCksIE5vbmUpLAorICAgICAgICAoJ2xzdGF0JywgRmFsc2UsICgpLCBOb25lKSwKKyAgICAgICAgKCdhY2Nlc3MnLCBGYWxzZSwgKG9zLkZfT0ssKSwgTm9uZSksCisgICAgICAgICgnY2hmbGFncycsIEZhbHNlLCAoMCwpLCBOb25lKSwKKyAgICAgICAgKCdsY2hmbGFncycsIEZhbHNlLCAoMCwpLCBOb25lKSwKKyAgICAgICAgKCdvcGVuJywgRmFsc2UsICgwLCksIGdldGF0dHIob3MsICdjbG9zZScsIE5vbmUpKSwKKyAgICBdCisKKyAgICBkZWYgdGVzdF9wYXRoX3RfY29udmVydGVyKHNlbGYpOgorICAgICAgICBzdHJfZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICBieXRlc19mc3BhdGggPSBieXRlc19maWxlbmFtZSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4uZW5jb2RlKCdhc2NpaScpCisgICAgICAgICAgICBieXRlc19mc3BhdGggPSBfUGF0aExpa2UoYnl0ZXNfZmlsZW5hbWUpCisgICAgICAgIGZkID0gb3Mub3BlbihfUGF0aExpa2Uoc3RyX2ZpbGVuYW1lKSwgb3MuT19XUk9OTFl8b3MuT19DUkVBVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKworICAgICAgICBpbnRfZnNwYXRoID0gX1BhdGhMaWtlKGZkKQorICAgICAgICBzdHJfZnNwYXRoID0gX1BhdGhMaWtlKHN0cl9maWxlbmFtZSkKKworICAgICAgICBmb3IgbmFtZSwgYWxsb3dfZmQsIGV4dHJhX2FyZ3MsIGNsZWFudXBfZm4gaW4gc2VsZi5mdW5jdGlvbnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lPW5hbWUpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZm4gPSBnZXRhdHRyKG9zLCBuYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIChzdHJfZmlsZW5hbWUsIGJ5dGVzX2ZpbGVuYW1lLCBzdHJfZnNwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc19mc3BhdGgpOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW1lPW5hbWUsIHBhdGg9cGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmbihwYXRoLCAqZXh0cmFfYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNsZWFudXBfZm4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9mbihyZXN1bHQpCisKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcycpOgorICAgICAgICAgICAgICAgICAgICBmbihpbnRfZnNwYXRoLCAqZXh0cmFfYXJncykKKworICAgICAgICAgICAgICAgIGlmIGFsbG93X2ZkOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBmbihmZCwgKmV4dHJhX2FyZ3MpICAjIHNob3VsZCBub3QgZmFpbAorICAgICAgICAgICAgICAgICAgICBpZiBjbGVhbnVwX2ZuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9mbihyZXN1bHQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3MuUGF0aExpa2UnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZuKGZkLCAqZXh0cmFfYXJncykKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X2Jsb2NraW5nJyksCiAgICAgICAgICAgICAgICAgICAgICAnbmVlZHMgb3MuZ2V0X2Jsb2NraW5nKCkgYW5kIG9zLnNldF9ibG9ja2luZygpJykKIGNsYXNzIEJsb2NraW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjg0MiwxNSArMzAxMiwxOCBAQAogCiAKIGNsYXNzIFRlc3RTY2FuZGlyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBjaGVja19ub19yZXNvdXJjZV93YXJuaW5nID0gc3VwcG9ydC5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYucGF0aCA9IG9zLnBhdGgucmVhbHBhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYnl0ZXNfcGF0aCA9IG9zLmZzZW5jb2RlKHNlbGYucGF0aCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLnBhdGgpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYucGF0aCkKIAogICAgIGRlZiBjcmVhdGVfZmlsZShzZWxmLCBuYW1lPSJmaWxlLnR4dCIpOgotICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsIG5hbWUpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgIndiIikgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiJ3B5dGhvbicpCisgICAgICAgIHBhdGggPSBzZWxmLmJ5dGVzX3BhdGggaWYgaXNpbnN0YW5jZShuYW1lLCBieXRlcykgZWxzZSBzZWxmLnBhdGgKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGIncHl0aG9uJykKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICBkZWYgZ2V0X2VudHJpZXMoc2VsZiwgbmFtZXMpOgpAQCAtMjg3Myw2ICszMDQ2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdDEsIHN0YXQyKQogCiAgICAgZGVmIGNoZWNrX2VudHJ5KHNlbGYsIGVudHJ5LCBuYW1lLCBpc19kaXIsIGlzX2ZpbGUsIGlzX3N5bWxpbmspOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZW50cnksIG9zLkRpckVudHJ5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIG5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkucGF0aCwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuaW5vZGUoKSwKQEAgLTI5MzgsMTUgKzMxMTIsMTYgQEAKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZW50cnkoZW50cnksICdzeW1saW5rX2ZpbGUudHh0JywgRmFsc2UsIFRydWUsIFRydWUpCiAKICAgICBkZWYgZ2V0X2VudHJ5KHNlbGYsIG5hbWUpOgotICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHNlbGYucGF0aCkpCisgICAgICAgIHBhdGggPSBzZWxmLmJ5dGVzX3BhdGggaWYgaXNpbnN0YW5jZShuYW1lLCBieXRlcykgZWxzZSBzZWxmLnBhdGgKKyAgICAgICAgZW50cmllcyA9IGxpc3Qob3Muc2NhbmRpcihwYXRoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZW50cmllcyksIDEpCiAKICAgICAgICAgZW50cnkgPSBlbnRyaWVzWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKICAgICAgICAgcmV0dXJuIGVudHJ5CiAKLSAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZik6Ci0gICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZSgpCisgICAgZGVmIGNyZWF0ZV9maWxlX2VudHJ5KHNlbGYsIG5hbWU9J2ZpbGUudHh0Jyk6CisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5jcmVhdGVfZmlsZShuYW1lPW5hbWUpCiAgICAgICAgIHJldHVybiBzZWxmLmdldF9lbnRyeShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSkKIAogICAgIGRlZiB0ZXN0X2N1cnJlbnRfZGlyZWN0b3J5KHNlbGYpOgpAQCAtMjk2Nyw2ICszMTQyLDE4IEBACiAgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihlbnRyeSksICI8RGlyRW50cnkgJ2ZpbGUudHh0Jz4iKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX3Byb3RvY29sKHNlbGYpOgorICAgICAgICBlbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmZzcGF0aChlbnRyeSksIG9zLnBhdGguam9pbihzZWxmLnBhdGgsICdmaWxlLnR4dCcpKQorCisgICAgZGVmIHRlc3RfZnNwYXRoX3Byb3RvY29sX2J5dGVzKHNlbGYpOgorICAgICAgICBieXRlc19maWxlbmFtZSA9IG9zLmZzZW5jb2RlKCdieXRlc2ZpbGUudHh0JykKKyAgICAgICAgYnl0ZXNfZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KG5hbWU9Ynl0ZXNfZmlsZW5hbWUpCisgICAgICAgIGZzcGF0aCA9IG9zLmZzcGF0aChieXRlc19lbnRyeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZzcGF0aCwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnNwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5mc2VuY29kZShzZWxmLnBhdGgpLGJ5dGVzX2ZpbGVuYW1lKSkKKwogICAgIGRlZiB0ZXN0X3JlbW92ZWRfZGlyKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2RpcicpCiAKQEAgLTMwMzAsMTEgKzMyMTcsNiBAQAogICAgICAgICBlbnRyeS5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzKHNlbGYpOgotICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6Ci0gICAgICAgICAgICAjIE9uIFdpbmRvd3MsIG9zLnNjYW5kaXIoYnl0ZXMpIG11c3QgcmFpc2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIGInLicpCi0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCiAKICAgICAgICAgcGF0aF9ieXRlcyA9IG9zLmZzZW5jb2RlKHNlbGYucGF0aCkKQEAgLTMwNjQsNiArMzI0NiwxMTIgQEAKICAgICAgICAgZm9yIG9iaiBpbiBbMTIzNCwgMS4yMzQsIHt9LCBbXV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnNjYW5kaXIsIG9iaikKIAorICAgIGRlZiB0ZXN0X2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIGl0ZXJhdG9yLmNsb3NlKCkKKyAgICAgICAgIyBtdWx0aXBsZSBjbG9zZXMKKyAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIHdpdGggb3Muc2NhbmRpcihzZWxmLnBhdGgpIGFzIGl0ZXJhdG9yOgorICAgICAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgICAgICAgICAgMS8wCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlX3dhcm5pbmcoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFJlc291cmNlV2FybmluZyk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKyAgICAgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgICMgZXhoYXVzdGVkIGl0ZXJhdG9yCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisgICAgICAgIGxpc3QoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworCitjbGFzcyBUZXN0UEVQNTE5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgQWJzdHJhY3RlZCBzbyBpdCBjYW4gYmUgb3ZlcnJpZGRlbiB0byB0ZXN0IHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uCisgICAgIyBpZiBhIEMgdmVyc2lvbiBpcyBwcm92aWRlZC4KKyAgICBmc3BhdGggPSBzdGF0aWNtZXRob2Qob3MuZnNwYXRoKQorCisgICAgZGVmIHRlc3RfcmV0dXJuX2J5dGVzKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiBiJ2hlbGxvJywgYidnb29kYnllJywgYidzb21lL3BhdGgvYW5kL2ZpbGUnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLmZzcGF0aChiKSkKKworICAgIGRlZiB0ZXN0X3JldHVybl9zdHJpbmcoc2VsZik6CisgICAgICAgIGZvciBzIGluICdoZWxsbycsICdnb29kYnllJywgJ3NvbWUvcGF0aC9hbmQvZmlsZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHNlbGYuZnNwYXRoKHMpKQorCisgICAgZGVmIHRlc3RfZnNlbmNvZGVfZnNkZWNvZGUoc2VsZik6CisgICAgICAgIGZvciBwIGluICJwYXRoL2xpa2Uvb2JqZWN0IiwgYiJwYXRoL2xpa2Uvb2JqZWN0IjoKKyAgICAgICAgICAgIHBhdGhsaWtlID0gX1BhdGhMaWtlKHApCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgc2VsZi5mc3BhdGgocGF0aGxpa2UpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiInBhdGgvbGlrZS9vYmplY3QiLCBvcy5mc2VuY29kZShwYXRobGlrZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwYXRoL2xpa2Uvb2JqZWN0Iiwgb3MuZnNkZWNvZGUocGF0aGxpa2UpKQorCisgICAgZGVmIHRlc3RfcGF0aGxpa2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyNmZWVsdGhlZ2lsJywgc2VsZi5mc3BhdGgoX1BhdGhMaWtlKCcjZmVlbHRoZWdpbCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoX1BhdGhMaWtlLCBvcy5QYXRoTGlrZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKF9QYXRoTGlrZSgpLCBvcy5QYXRoTGlrZSkpCisKKyAgICBkZWYgdGVzdF9nYXJiYWdlX2luX2V4Y2VwdGlvbl9vdXQoc2VsZik6CisgICAgICAgIHZhcG9yID0gdHlwZSgnYmxhaCcsICgpLCB7fSkKKyAgICAgICAgZm9yIG8gaW4gaW50LCB0eXBlLCBvcywgdmFwb3IoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIG8pCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudF9yZXF1aXJlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXRobGlrZShzZWxmKToKKyAgICAgICAgIyBfX2ZzcGF0aF9fIHJldHVybnMgYSB2YWx1ZSBvdGhlciB0aGFuIHN0ciBvciBieXRlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgX1BhdGhMaWtlKDQyKSkKKyAgICAgICAgIyBfX2ZzcGF0aF9fIGF0dHJpYnV0ZSB0aGF0IGlzIG5vdCBjYWxsYWJsZS4KKyAgICAgICAgYyA9IHR5cGUoJ2ZvbycsICgpLCB7fSkKKyAgICAgICAgYy5fX2ZzcGF0aF9fID0gMQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBjKCkpCisgICAgICAgICMgX19mc3BhdGhfXyByYWlzZXMgYW4gZXhjZXB0aW9uLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgc2VsZi5mc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9QYXRoTGlrZShaZXJvRGl2aXNpb25FcnJvcigpKSkKKworIyBPbmx5IHRlc3QgaWYgdGhlIEMgdmVyc2lvbiBpcyBwcm92aWRlZCwgb3RoZXJ3aXNlIFRlc3RQRVA1MTkgYWxyZWFkeSB0ZXN0ZWQKKyMgdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgoraWYgaGFzYXR0cihvcywgIl9mc3BhdGgiKToKKyAgICBjbGFzcyBUZXN0UEVQNTE5UHVyZVB5dGhvbihUZXN0UEVQNTE5KToKKworICAgICAgICAiIiJFeHBsaWNpdGx5IHRlc3QgdGhlIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIG9zLmZzcGF0aCgpLiIiIgorCisgICAgICAgIGZzcGF0aCA9IHN0YXRpY21ldGhvZChvcy5fZnNwYXRoKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IGFiNjU3N2YuLmQ2ZTZmNzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHBhcnNlcgogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtMTM5LDYgKzEzOCw0NSBAQAogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhID0gYiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgPSBiID0gYyA9IGQgPSBlIikKIAorICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieDogaW50ID0gNSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoInk6IExpc3RbVF0gPSBbXTsgejogW2xpc3RdID0gZnVuKCkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiB0dXBsZSA9ICgxLCAyKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRbZigpXTogaW50ID0gNDIiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJmKGRbeF0pOiBzdHIgPSAnYWJjJyIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIngueS56Lnc6IGNvbXBsZXggPSA0MmoiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiBpbnQiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogc3RyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB5OiBpbnQgPSA1XG4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogc3RyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB5OiBpbnQgPSA1XG4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICBzZWxmLng6IGludCA9IHhcbiIpCisgICAgICAgICMgZG91YmxlIGNoZWNrIGZvciBub25zZW5zZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIjIrMjogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIltdOiBpbnQgPSA1Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIngsICp5LCB6OiBpbnQgPSByYW5nZSg1KSIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ0OiB0dXBsZSA9IDEsIDIiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygidSA9IHY6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJGYWxzZTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInguRmFsc2U6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ4LnksOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiWzBdOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiZigpOiBpbnQiLCB7fSwge30pCisKICAgICBkZWYgdGVzdF9zaW1wbGVfYXVnbWVudGVkX2Fzc2lnbm1lbnRzKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhICs9IGIiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhIC09IGIiKQpAQCAtNjMzLDEyICs2NzEsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN5bnRheC10cmVlPicpCiAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnPHN5bnRheC10cmVlPicpCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiAoJ2ZpbGUucHknLCBiJ2ZpbGUucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKSk6CisgICAgICAgIGZvciBmaWxlbmFtZSBpbiAnZmlsZS5weScsIGInZmlsZS5weSc6CiAgICAgICAgICAgICBjb2RlID0gcGFyc2VyLmNvbXBpbGVzdChzdCwgZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjb2RlID0gcGFyc2VyLmNvbXBpbGVzdChzdCwgZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBzdC5jb21waWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGFyc2VyLmNvbXBpbGVzdCwgc3QsIGxpc3QoYidmaWxlLnB5JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3QuY29tcGlsZSwgbGlzdChiJ2ZpbGUucHknKSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CmluZGV4IGZhOTZkOWYuLjJmMmJhM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKQEAgLTE5MCwxMyArMTkwLDE4IEBACiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUCgnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwLCBQKQorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAiYS9iL2MiCiAgICAgICAgIFAoJ2EnLCAnYicsICdjJykKICAgICAgICAgUCgnL2EnLCAnYicsICdjJykKICAgICAgICAgUCgnYS9iL2MnKQogICAgICAgICBQKCcvYS9iL2MnKQorICAgICAgICBQKFBhdGhMaWtlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJykpLCBQKCdhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksICdiJyksIFAoJ2EvYicpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJykpLCBQKCdhL2InKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgUCgnYicpLCBQKCdjJykpLCBQKFBhdGhMaWtlKCkpKQogCiAgICAgZGVmIF9jaGVja19zdHJfc3ViY2xhc3Moc2VsZiwgKmFyZ3MpOgogICAgICAgICAjIElzc3VlICMyMTEyNzogaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNvbnN0cnVjdCBhIFB1cmVQYXRoIG9iamVjdApAQCAtMzg0LDYgKzM4OSwxMiBAQAogICAgICAgICBwYXJ0cyA9IHAucGFydHMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJ0cywgKHNlcCwgJ2EnLCAnYicpKQogCisgICAgZGVmIHRlc3RfZnNwYXRoX2NvbW1vbihzZWxmKToKKyAgICAgICAgUCA9IHNlbGYuY2xzCisgICAgICAgIHAgPSBQKCdhL2InKQorICAgICAgICBzZWxmLl9jaGVja19zdHIocC5fX2ZzcGF0aF9fKCksICgnYS9iJywpKQorICAgICAgICBzZWxmLl9jaGVja19zdHIob3MuZnNwYXRoKHApLCAoJ2EvYicsKSkKKwogICAgIGRlZiB0ZXN0X2VxdWl2YWxlbmNlcyhzZWxmKToKICAgICAgICAgZm9yIGssIHR1cGxlcyBpbiBzZWxmLmVxdWl2YWxlbmNlcy5pdGVtcygpOgogICAgICAgICAgICAgY2Fub24gPSBrLnJlcGxhY2UoJy8nLCBzZWxmLnNlcCkKQEAgLTE0NzQsMTMgKzE0ODUsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5nbG9iKCJkaXJBLy4uL2ZpbGUqIikpLCB7IFAoQkFTRSwgImRpckEvLi4vZmlsZUEiKSB9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoIi4uL3h5enp5IikpLCBzZXQoKSkKIAotICAgIGRlZiBfY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShzZWxmLCBwLCBleHBlY3RlZCk6CisKKyAgICBkZWYgX2NoZWNrX3Jlc29sdmUoc2VsZiwgcCwgZXhwZWN0ZWQpOgogICAgICAgICBxID0gcC5yZXNvbHZlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLCBleHBlY3RlZCkKIAotICAgIGRlZiBfY2hlY2tfcmVzb2x2ZV9hYnNvbHV0ZShzZWxmLCBwLCBleHBlY3RlZCk6Ci0gICAgICAgIHEgPSBwLnJlc29sdmUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIGV4cGVjdGVkKQorICAgICMgdGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayBib3RoIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSByZXNvbHV0aW9ucworICAgIF9jaGVja19yZXNvbHZlX3JlbGF0aXZlID0gX2NoZWNrX3Jlc29sdmVfYWJzb2x1dGUgPSBfY2hlY2tfcmVzb2x2ZQogCiAgICAgQHdpdGhfc3ltbGlua3MKICAgICBkZWYgdGVzdF9yZXNvbHZlX2NvbW1vbihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5IGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKaW5kZXggNjZhN2I1NS4uMGVhMmFmNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZGIucHkKQEAgLTEsNiArMSw3IEBACiAjIEEgdGVzdCBzdWl0ZSBmb3IgcGRiOyBub3QgdmVyeSBjb21wcmVoZW5zaXZlIGF0IHRoZSBtb21lbnQuCiAKIGltcG9ydCBkb2N0ZXN0CitpbXBvcnQgb3MKIGltcG9ydCBwZGIKIGltcG9ydCBzeXMKIGltcG9ydCB0eXBlcwpAQCAtMzQsNyArMzUsNyBAQAogICAgICIiIlRoaXMgdGVzdHMgdGhlIGN1c3RvbSBkaXNwbGF5aG9vayBmb3IgcGRiLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKGZvbywgYmFyKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcGFzcwogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTc0LDcgKzc1LDcgQEAKICAgICAuLi4gICAgIHJldHVybiBmb28udXBwZXIoKQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICAuLi4gICAgIHByaW50KHJldCkKIApAQCAtMTczLDcgKzE3NCw3IEBACiAgICAgIiIiVGVzdCBiYXNpYyBjb21tYW5kcyByZWxhdGVkIHRvIGJyZWFrcG9pbnRzLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHByaW50KDEpCiAgICAgLi4uICAgICBwcmludCgyKQogICAgIC4uLiAgICAgcHJpbnQoMykKQEAgLTMwNSw3ICszMDYsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIGZvbwogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbICAjIGRvY3Rlc3Q6ICtFTExJUFNJUywgK05PUk1BTElaRV9XSElURVNQQUNFCkBAIC0zMjgsNyArMzI5LDcgQEAKICAgICAtPiByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAgICAgKFBkYikgbGlzdAogICAgICAgMSAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAzICAtPiAgICAgICAgIHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICBbRU9GXQogICAgIChQZGIpIHN0ZXAKQEAgLTM5MSw3ICszOTIsNyBAQAogICAgIC4uLiAgICAgICAgIHByaW50KCdFeGNlcHRpb24hJykKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgcHJpbnQoJ05vdCByZWFjaGVkLicpCiAKQEAgLTQyNCw3ICs0MjUsNyBAQAogICAgIC0+IDEvMAogICAgIChQZGIpIGxpc3QKICAgICAgIDEgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgMyAgLT4gICAgICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgICAgNCAgICAgICAgICAgICBwcmludCgnTm90IHJlYWNoZWQuJykKICAgICBbRU9GXQpAQCAtNDQ4LDcgKzQ0OSw3IEBACiAKICAgICA+Pj4gZGVmIHNraXBfbW9kdWxlKCk6CiAgICAgLi4uICAgICBpbXBvcnQgc3RyaW5nCi0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydzdHJpKiddLCBub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnc3RyaSonXSwgbm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgc3RyaW5nLmNhcHdvcmRzKCdGT08nKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTQ3Nyw3ICs0NzgsNyBAQAogICAgID4+PiBkZWYgc2tpcF9tb2R1bGUoKToKICAgICAuLi4gICAgIGRlZiBjYWxsYmFjaygpOgogICAgIC4uLiAgICAgICAgIHJldHVybiBOb25lCi0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9Wydtb2R1bGVfdG9fc2tpcConXSwgbm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ21vZHVsZV90b19za2lwKiddLCBub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBtb2QuZm9vX3BvbnkoY2FsbGJhY2spCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNTE4LDcgKzUxOSw3IEBACiAgICAgIiIiVGVzdCB0aGF0ICJjb250aW51ZSIgYW5kICJuZXh0IiB3b3JrIHByb3Blcmx5IGluIGJvdHRvbSBmcmFtZSAoaXNzdWUgIzUyOTQpLgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiLCBzeXM7IGluc3QgPSBwZGIuUGRiKG5vc2lnaW50PVRydWUpCisgICAgLi4uICAgICBpbXBvcnQgcGRiLCBzeXM7IGluc3QgPSBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkKICAgICAuLi4gICAgIGluc3Quc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGluc3QuYm90ZnJhbWUgPSBzeXMuX2dldGZyYW1lKCkgICMgaGFja2VyeSB0byBnZXQgdGhlIHJpZ2h0IGJvdGZyYW1lCiAgICAgLi4uICAgICBwcmludCgxKQpAQCAtNTU4LDggKzU1OSw3IEBACiAKIGRlZiBwZGJfaW52b2tlKG1ldGhvZCwgYXJnKToKICAgICAiIiJSdW4gcGRiLm1ldGhvZChhcmcpLiIiIgotICAgIGltcG9ydCBwZGIKLSAgICBnZXRhdHRyKHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSksIG1ldGhvZCkoYXJnKQorICAgIGdldGF0dHIocGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLCBtZXRob2QpKGFyZykKIAogCiBkZWYgdGVzdF9wZGJfcnVuX3dpdGhfaW5jb3JyZWN0X2FyZ3VtZW50KCk6CkBAIC02MDgsNyArNjA4LDcgQEAKICAgICAuLi4gICAgIHggPSAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQpAQCAtNjc0LDcgKzY3NCw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaXQgPSB0ZXN0X2dlbigpCiAgICAgLi4uICAgICB0cnk6CiAgICAgLi4uICAgICAgICAgaWYgbmV4dChpdCkgIT0gMDoKQEAgLTczNCw3ICs3MzQsNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGl0ID0gdGVzdF9nZW4oKQogICAgIC4uLiAgICAgdHJ5OgogICAgIC4uLiAgICAgICAgIGlmIG5leHQoaXQpICE9IDA6CkBAIC03ODksNyArNzg5LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KGkpCiAgICAgLi4uICAgICBwcmludCgiZmluaXNoZWQiKQpAQCAtODMxLDcgKzgzMSw3IEBACiAgICAgLi4uICAgICByZXR1cm4gMQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoJ3ZhbHVlJywgaSkKICAgICAuLi4gICAgIHggPSAxMjMKQEAgLTg3Niw3ICs4NzYsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIHgKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KCd2YWx1ZScsIGkpCiAgICAgLi4uICAgICB4ID0gMTIzCkBAIC0xMDQ5LDcgKzEwNDksNyBAQAogICAgICAgICAgICAgICAgIGltcG9ydCBwZGIKIAogICAgICAgICAgICAgICAgIGRlZiBzdGFydF9wZGIoKToKLSAgICAgICAgICAgICAgICAgICAgcGRiLlBkYigpLnNldF90cmFjZSgpCisgICAgICAgICAgICAgICAgICAgIHBkYi5QZGIocmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgICAgICAgICAgICAgICB4ID0gMQogICAgICAgICAgICAgICAgICAgICB5ID0gMQogCkBAIC0xMDc4LDYgKzEwNzgsMzggQEAKICAgICAgICAgICAgIC5mb3JtYXQoZXhwZWN0ZWQsIHN0ZG91dCkpCiAKIAorICAgIGRlZiB0ZXN0X3JlYWRyY19rd2FyZyhzZWxmKToKKyAgICAgICAgc2NyaXB0ID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihyZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCisKKyAgICAgICAgICAgIHByaW50KCdoZWxsbycpCisgICAgICAgICIiIikKKworICAgICAgICBzYXZlX2hvbWUgPSBvcy5lbnZpcm9uLnBvcCgnSE9NRScsIE5vbmUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCgpOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbignLnBkYnJjJywgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJpbnZhbGlkXG4iKQorCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCdtYWluLnB5JywgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNjcmlwdCkKKworICAgICAgICAgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgJ21haW4ucHknXQorICAgICAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKAorICAgICAgICAgICAgICAgICAgICBjbWQsCisgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgd2l0aCBwcm9jOgorICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoYidxXG4nKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJOYW1lRXJyb3I6IG5hbWUgJ2ludmFsaWQnIGlzIG5vdCBkZWZpbmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQuZGVjb2RlKCkpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIHNhdmVfaG9tZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydIT01FJ10gPSBzYXZlX2hvbWUKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKaW5kZXggNDFlNTA5MS4uYjAzMzY0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkKQEAgLTEsOSArMSw4IEBACiBpbXBvcnQgZGlzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAotZnJvbSBtYXRoIGltcG9ydCBjb3B5c2lnbgogCiBmcm9tIHRlc3QuYnl0ZWNvZGVfaGVscGVyIGltcG9ydCBCeXRlY29kZVRlc3RDYXNlCiAKQEAgLTMwLDIyICsyOSwyNSBAQAogCiAgICAgZGVmIHRlc3RfZ2xvYmFsX2FzX2NvbnN0YW50KHNlbGYpOgogICAgICAgICAjIExPQURfR0xPQkFMIE5vbmUvVHJ1ZS9GYWxzZSAgLS0+ICBMT0FEX0NPTlNUIE5vbmUvVHJ1ZS9GYWxzZQotICAgICAgICBkZWYgZih4KToKLSAgICAgICAgICAgIE5vbmUKLSAgICAgICAgICAgIE5vbmUKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHggPSBOb25lCisgICAgICAgICAgICB4ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIHgKLSAgICAgICAgZGVmIGcoeCk6Ci0gICAgICAgICAgICBUcnVlCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB4ID0gVHJ1ZQogICAgICAgICAgICAgcmV0dXJuIHgKLSAgICAgICAgZGVmIGgoeCk6Ci0gICAgICAgICAgICBGYWxzZQorICAgICAgICBkZWYgaCgpOgorICAgICAgICAgICAgeCA9IEZhbHNlCiAgICAgICAgICAgICByZXR1cm4geAorCiAgICAgICAgIGZvciBmdW5jLCBlbGVtIGluICgoZiwgTm9uZSksIChnLCBUcnVlKSwgKGgsIEZhbHNlKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoZnVuYywgJ0xPQURfR0xPQkFMJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShmdW5jLCAnTE9BRF9DT05TVCcsIGVsZW0pCisKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgICdBZGRpbmcgYSBkb2NzdHJpbmcgbWFkZSB0aGlzIHRlc3QgZmFpbCBpbiBQeTIuNS4wJwogICAgICAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgICAgICBzZWxmLmFzc2VydE5vdEluQnl0ZWNvZGUoZiwgJ0xPQURfR0xPQkFMJykKICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGYsICdMT0FEX0NPTlNUJywgTm9uZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE3Y2VlZC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLSIiIgotVGVzdCBzdWl0ZSB0byBjaGVjayBjb21wbGlhbmNlIHdpdGggUEVQIDI0NywgdGhlIHN0YW5kYXJkIEFQSQotZm9yIGhhc2hpbmcgYWxnb3JpdGhtcwotIiIiCi0KLWltcG9ydCBobWFjCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaGFzaGxpYiBpbXBvcnQgbWQ1LCBzaGExLCBzaGEyMjQsIHNoYTI1Niwgc2hhMzg0LCBzaGE1MTIKLQotY2xhc3MgUGVwMjQ3VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgY2hlY2tfbW9kdWxlKHNlbGYsIG1vZHVsZSwga2V5PU5vbmUpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdkaWdlc3Rfc2l6ZScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlLmRpZ2VzdF9zaXplIGlzIE5vbmUgb3IgbW9kdWxlLmRpZ2VzdF9zaXplID4gMCkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3QobW9kdWxlLm5ldywgbW9kdWxlLmRpZ2VzdF9zaXplLCBrZXkpCi0KLSAgICBkZWYgY2hlY2tfb2JqZWN0KHNlbGYsIGNscywgZGlnZXN0X3NpemUsIGtleSwgZGlnZXN0bW9kPU5vbmUpOgotICAgICAgICBpZiBrZXkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBkaWdlc3Rtb2QgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBkaWdlc3Rtb2QgPSBtZDUKLSAgICAgICAgICAgIG9iajEgPSBjbHMoa2V5LCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgb2JqMiA9IGNscyhrZXksIGInc3RyaW5nJywgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIGgxID0gY2xzKGtleSwgYidzdHJpbmcnLCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKS5kaWdlc3QoKQotICAgICAgICAgICAgb2JqMyA9IGNscyhrZXksIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBvYmozLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgICAgICBoMiA9IG9iajMuZGlnZXN0KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9iajEgPSBjbHMoKQotICAgICAgICAgICAgb2JqMiA9IGNscyhiJ3N0cmluZycpCi0gICAgICAgICAgICBoMSA9IGNscyhiJ3N0cmluZycpLmRpZ2VzdCgpCi0gICAgICAgICAgICBvYmozID0gY2xzKCkKLSAgICAgICAgICAgIG9iajMudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgyID0gb2JqMy5kaWdlc3QoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIob2JqMSwgJ2RpZ2VzdF9zaXplJykpCi0KLSAgICAgICAgaWYgZGlnZXN0X3NpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0X3NpemUsIGRpZ2VzdF9zaXplKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5kaWdlc3Rfc2l6ZSwgbGVuKGgxKSkKLSAgICAgICAgb2JqMS51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICBvYmpfY29weSA9IG9iajEuY29weSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5kaWdlc3QoKSwgb2JqX2NvcHkuZGlnZXN0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5oZXhkaWdlc3QoKSwgb2JqX2NvcHkuaGV4ZGlnZXN0KCkpCi0KLSAgICAgICAgZGlnZXN0LCBoZXhkaWdlc3QgPSBvYmoxLmRpZ2VzdCgpLCBvYmoxLmhleGRpZ2VzdCgpCi0gICAgICAgIGhkMiA9ICIiCi0gICAgICAgIGZvciBieXRlIGluIGRpZ2VzdDoKLSAgICAgICAgICAgIGhkMiArPSAnJTAyeCcgJSBieXRlCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGQyLCBoZXhkaWdlc3QpCi0KLSAgICBkZWYgdGVzdF9tZDUoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KG1kNSwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiB0ZXN0X3NoYShzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMSwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMjI0LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEyNTYsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTM4NCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhNTEyLCBOb25lLCBOb25lKQotCi0gICAgZGVmIHRlc3RfaG1hYyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19tb2R1bGUoaG1hYywga2V5PWInYWJjJykKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKaW5kZXggZDQ2N2Q1Mi4uZTZjNWQwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkKQEAgLTM0LDggKzM0LDYgQEAKIAogICAgIHVucGlja2xlciA9IHBpY2tsZS5fVW5waWNrbGVyCiAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChJbmRleEVycm9yLCkKLSAgICBiYWRfbWFya19lcnJvcnMgPSAoSW5kZXhFcnJvciwgcGlja2xlLlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgRU9GRXJyb3IpCiAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmVycm9yLCBJbmRleEVycm9yLCBJbXBvcnRFcnJvcikKQEAgLTcwLDggKzY4LDYgQEAKICAgICBwaWNrbGVyID0gcGlja2xlLl9QaWNrbGVyCiAgICAgdW5waWNrbGVyID0gcGlja2xlLl9VbnBpY2tsZXIKICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEluZGV4RXJyb3IpCi0gICAgYmFkX21hcmtfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEluZGV4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEVPRkVycm9yKQogICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgRU9GRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5lcnJvciwgSW5kZXhFcnJvciwgSW1wb3J0RXJyb3IpCkBAIC0xNDMsOSArMTM5LDcgQEAKICAgICBjbGFzcyBDVW5waWNrbGVyVGVzdHMoUHlVbnBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHVucGlja2xlciA9IF9waWNrbGUuVW5waWNrbGVyCiAgICAgICAgIGJhZF9zdGFja19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwpCi0gICAgICAgIGJhZF9tYXJrX2Vycm9ycyA9IChFT0ZFcnJvciwpCi0gICAgICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgRU9GRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IpCisgICAgICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwpCiAKICAgICBjbGFzcyBDUGlja2xlclRlc3RzKFB5UGlja2xlclRlc3RzKToKICAgICAgICAgcGlja2xlciA9IF9waWNrbGUuUGlja2xlcgpAQCAtMzQxLDYgKzMzNSw5IEBACiAgICAgICAgICAgICAgICAgaWYgKG1vZHVsZTIsIG5hbWUyKSA9PSAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpOgogICAgICAgICAgICAgICAgICAgICBhdHRyID0gZ2V0YXR0cmlidXRlKG1vZHVsZTMsIG5hbWUzKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhhdHRyLCBPU0Vycm9yKSkKKyAgICAgICAgICAgICAgICBlbGlmIChtb2R1bGUyLCBuYW1lMikgPT0gKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJyk6CisgICAgICAgICAgICAgICAgICAgIGF0dHIgPSBnZXRhdHRyaWJ1dGUobW9kdWxlMywgbmFtZTMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGF0dHIsIEltcG9ydEVycm9yKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIG5hbWUgPSBtYXBwaW5nKG1vZHVsZTIsIG5hbWUyKQogICAgICAgICAgICAgICAgICAgICBpZiBtb2R1bGUzWzoxXSAhPSAnXyc6CkBAIC00MDcsNiArNDA0LDExIEBACiAgICAgICAgICAgICAgICAgaWYgZXhjIGlzIG5vdCBPU0Vycm9yIGFuZCBpc3N1YmNsYXNzKGV4YywgT1NFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJykpCisgICAgICAgICAgICAgICAgZWxpZiBleGMgaXMgbm90IEltcG9ydEVycm9yIGFuZCBpc3N1YmNsYXNzKGV4YywgSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXBwaW5nKCdleGNlcHRpb25zJywgbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgbmFtZSkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgbmFtZSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQppbmRleCBiYmU2ODc1Li44NmJlYmZhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKQEAgLTEsOSArMSw5IEBACi1pbXBvcnQgc3RydWN0CiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcGlja2xldG9vbHMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQWJzdHJhY3RQaWNrbGVUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQWJzdHJhY3RQaWNrbGVNb2R1bGVUZXN0cworaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIE9wdGltaXplZFBpY2tsZVRlc3RzKEFic3RyYWN0UGlja2xlVGVzdHMsIEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMpOgogCkBAIC01OSw4ICs1OSw0MCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKHBpY2tsZS5CSU5QVVQsIHBpY2tsZWQyKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2J5dGVzX3R5cGVzJywKKyAgICAgICAgICAgICAgICAgICAgICdVUF9UT19ORVdMSU5FJywgJ1RBS0VOX0ZST01fQVJHVU1FTlQxJywKKyAgICAgICAgICAgICAgICAgICAgICdUQUtFTl9GUk9NX0FSR1VNRU5UNCcsICdUQUtFTl9GUk9NX0FSR1VNRU5UNFUnLAorICAgICAgICAgICAgICAgICAgICAgJ1RBS0VOX0ZST01fQVJHVU1FTlQ4VScsICdBcmd1bWVudERlc2NyaXB0b3InLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdWludDEnLCAncmVhZF91aW50MicsICdyZWFkX2ludDQnLCAncmVhZF91aW50NCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91aW50OCcsICdyZWFkX3N0cmluZ25sJywgJ3JlYWRfc3RyaW5nbmxfbm9lc2NhcGUnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfc3RyaW5nbmxfbm9lc2NhcGVfcGFpcicsICdyZWFkX3N0cmluZzEnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfc3RyaW5nNCcsICdyZWFkX2J5dGVzMScsICdyZWFkX2J5dGVzNCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9ieXRlczgnLCAncmVhZF91bmljb2Rlc3RyaW5nbmwnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdW5pY29kZXN0cmluZzEnLCAncmVhZF91bmljb2Rlc3RyaW5nNCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91bmljb2Rlc3RyaW5nOCcsICdyZWFkX2RlY2ltYWxubF9zaG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9kZWNpbWFsbmxfbG9uZycsICdyZWFkX2Zsb2F0bmwnLCAncmVhZF9mbG9hdDgnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfbG9uZzEnLCAncmVhZF9sb25nNCcsCisgICAgICAgICAgICAgICAgICAgICAndWludDEnLCAndWludDInLCAnaW50NCcsICd1aW50NCcsICd1aW50OCcsICdzdHJpbmdubCcsCisgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nbmxfbm9lc2NhcGUnLCAnc3RyaW5nbmxfbm9lc2NhcGVfcGFpcicsICdzdHJpbmcxJywKKyAgICAgICAgICAgICAgICAgICAgICdzdHJpbmc0JywgJ2J5dGVzMScsICdieXRlczQnLCAnYnl0ZXM4JywKKyAgICAgICAgICAgICAgICAgICAgICd1bmljb2Rlc3RyaW5nbmwnLCAndW5pY29kZXN0cmluZzEnLCAndW5pY29kZXN0cmluZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVzdHJpbmc4JywgJ2RlY2ltYWxubF9zaG9ydCcsICdkZWNpbWFsbmxfbG9uZycsCisgICAgICAgICAgICAgICAgICAgICAnZmxvYXRubCcsICdmbG9hdDgnLCAnbG9uZzEnLCAnbG9uZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ1N0YWNrT2JqZWN0JywKKyAgICAgICAgICAgICAgICAgICAgICdweWludCcsICdweWxvbmcnLCAncHlpbnRlZ2VyX29yX2Jvb2wnLCAncHlib29sJywgJ3B5ZmxvYXQnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5Ynl0ZXNfb3Jfc3RyJywgJ3B5c3RyaW5nJywgJ3B5Ynl0ZXMnLCAncHl1bmljb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICdweW5vbmUnLCAncHl0dXBsZScsICdweWxpc3QnLCAncHlkaWN0JywgJ3B5c2V0JywKKyAgICAgICAgICAgICAgICAgICAgICdweWZyb3plbnNldCcsICdhbnlvYmplY3QnLCAnbWFya29iamVjdCcsICdzdGFja3NsaWNlJywKKyAgICAgICAgICAgICAgICAgICAgICdPcGNvZGVJbmZvJywgJ29wY29kZXMnLCAnY29kZTJvcCcsCisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHBpY2tsZXRvb2xzLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChPcHRpbWl6ZWRQaWNrbGVUZXN0cykKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNaXNjVGVzdENhc2UpCiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdChwaWNrbGV0b29scykKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQppbmRleCA2YTdiNDVmLi5hZDAxZDA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKQEAgLTIsNiArMiw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzdHJpbmcKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNodXRpbAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCB1bmxpbmssIHJlYXBfY2hpbGRyZW4KIAogaWYgb3MubmFtZSAhPSAncG9zaXgnOgpAQCAtMTgsNiArMTksOCBAQAogICAgICAgICAgICAgdW5saW5rKGYpCiAKICAgICBkZWYgdGVzdFNpbXBsZVBpcGUxKHNlbGYpOgorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3RyJykgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3RyIGlzIG5vdCBhdmFpbGFibGUnKQogICAgICAgICB0ID0gcGlwZXMuVGVtcGxhdGUoKQogICAgICAgICB0LmFwcGVuZChzX2NvbW1hbmQsIHBpcGVzLlNURElOX1NURE9VVCkKICAgICAgICAgZiA9IHQub3BlbihURVNURk4sICd3JykKQEAgLTI3LDYgKzMwLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICdIRUxMTyBXT1JMRCAjMScpCiAKICAgICBkZWYgdGVzdFNpbXBsZVBpcGUyKHNlbGYpOgorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3RyJykgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3RyIGlzIG5vdCBhdmFpbGFibGUnKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCdoZWxsbyB3b3JsZCAjMicpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCkBAIC0zNiw2ICs0MSw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAnSEVMTE8gV09STEQgIzInKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMyhzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgnaGVsbG8gd29ybGQgIzInKQogICAgICAgICB0ID0gcGlwZXMuVGVtcGxhdGUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CmluZGV4IGE4MjA1ODcuLmZjMDRkY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKQEAgLTgxLDggKzgxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMyLCBSRVNPVVJDRV9EQVRBKQogCiAgICAgICAgIG5hbWVzID0gW10KLSAgICAgICAgZm9yIGxvYWRlciwgbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW3ppcF9maWxlXSk6Ci0gICAgICAgICAgICBuYW1lcy5hcHBlbmQobmFtZSkKKyAgICAgICAgZm9yIG1vZHVsZWluZm8gaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW3ppcF9maWxlXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mbywgcGtndXRpbC5Nb2R1bGVJbmZvKQorICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lcywgWyd0ZXN0X2dldGRhdGFfemlwZmlsZSddKQogCiAgICAgICAgIGRlbCBzeXMucGF0aFswXQpAQCAtNDEzLDYgKzQxNCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShwa2d1dGlsLmdldF9sb2FkZXIoInRlc3Quc3VwcG9ydCIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKF9fbmFtZV9fID09ICdfX21haW5fXycsICdub3QgY29tcGF0aWJsZSB3aXRoIF9fbWFpbl9fJykKICAgICBkZWYgdGVzdF9nZXRfbG9hZGVyX2hhbmRsZXNfbWlzc2luZ19sb2FkZXJfYXR0cmlidXRlKHNlbGYpOgogICAgICAgICBnbG9iYWwgX19sb2FkZXJfXwogICAgICAgICB0aGlzX2xvYWRlciA9IF9fbG9hZGVyX18KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CmluZGV4IDE4ZGUxMTAuLjVmODc1ZWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQpAQCAtMzMsNiArMzMsNyBAQAogICAgICAgICAgICAgICAgICdpbXBvcnQgcGxhdGZvcm07IHByaW50KHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpKSddCiAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgICByZXR1cm4gcC5jb21tdW5pY2F0ZSgpCisKICAgICAgICAgcmVhbCA9IG9zLnBhdGgucmVhbHBhdGgoc3lzLmV4ZWN1dGFibGUpCiAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIG9zLnN5bWxpbmsocmVhbCwgbGluaykKQEAgLTI2Miw3ICsyNjMsNyBAQAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCkBAIC0zMzgsNyArMzM5LDcgQEAKICAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAogICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgICAgICAgICAgcidkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CmluZGV4IDY5MmNhYzQuLmM3N2E2YmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBiaW5hc2NpaQogaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIApAQCAtNTM0LDggKzUzMywxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1ciwgaW5fZGF0YSkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJQbGlzdEZvcm1hdCIsICJQTElTVEhFQURFUiJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHBsaXN0bGliLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0UGxpc3RsaWIsIFRlc3RQbGlzdGxpYkRlcHJlY2F0ZWQpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFBsaXN0bGliLCBUZXN0UGxpc3RsaWJEZXByZWNhdGVkLCBNaXNjVGVzdENhc2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKaW5kZXggYmNlZWI5My4uZTViMTZkYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkKQEAgLTgsNyArOCw2IEBACiBpbXBvcnQgYXN5bmNoYXQKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBvcwotaW1wb3J0IHRpbWUKIGltcG9ydCBlcnJubwogCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgc2tpcFVubGVzcwpAQCAtMTUzLDEwICsxNTIsMTIgQEAKICAgICAgICAgZGVmIGNtZF9zdGxzKHNlbGYsIGFyZyk6CiAgICAgICAgICAgICBpZiBzZWxmLnRsc19hY3RpdmUgaXMgRmFsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcrT0sgQmVnaW4gVExTIG5lZ290aWF0aW9uJykKLSAgICAgICAgICAgICAgICB0bHNfc29jayA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgY2VydGZpbGU9Q0VSVEZJTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgICAgIHRsc19zb2NrID0gY29udGV4dC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQogICAgICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldCh0bHNfc29jaykKICAgICAgICAgICAgICAgICBzZWxmLnRsc19hY3RpdmUgPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQppbmRleCAyYTU5YzM4Li42M2M3NGNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKQEAgLTExLDcgKzExLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcHdkCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RhdAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTM5OCw3ICszOTcsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoZnAuZmlsZW5vKCkpKQogCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgZmxvYXQoZnAuZmlsZW5vKCkpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZnAuY2xvc2UoKQpAQCAtNDA4LDE2ICs0MDcsMTggQEAKICAgICBkZWYgdGVzdF9zdGF0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGJ5dGVhcnJheShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSkKIAorICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBieXRlYXJyYXkob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ2NhblwndCBzcGVjaWZ5IE5vbmUgZm9yIHBhdGggYXJndW1lbnQnLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgbGlzdChzdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBsaXN0KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbWtmaWZvJyksICJkb24ndCBoYXZlIG1rZmlmbygpIikKQEAgLTc5OCw3ICs3OTksMTEgQEAKICAgICAgICAgICAgIGdyb3VwcyA9IGlkZy5yZWFkKCkuc3RyaXAoKQogICAgICAgICAgICAgcmV0ID0gaWRnLmNsb3NlKCkKIAotICAgICAgICBpZiByZXQgaXMgbm90IE5vbmUgb3Igbm90IGdyb3VwczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWRnX2dyb3VwcyA9IHNldChpbnQoZykgZm9yIGcgaW4gZ3JvdXBzLnNwbGl0KCkpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgaWRnX2dyb3VwcyA9IHNldCgpCisgICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgaWRnX2dyb3VwczoKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJuZWVkIHdvcmtpbmcgJ2lkIC1HJyIpCiAKICAgICAgICAgIyBJc3N1ZXMgMTY2OTg6IE9TIFggQUJJcyBwcmlvciB0byAxMC42IGhhdmUgbGltaXRzIG9uIGdldGdyb3VwcygpCkBAIC04MDksMTIgKzgxNCwxMSBAQAogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZXRncm91cHMoMikgaXMgYnJva2VuIHByaW9yIHRvIDEwLjYiKQogCiAgICAgICAgICMgJ2lkIC1HJyBhbmQgJ29zLmdldGdyb3VwcygpJyBzaG91bGQgcmV0dXJuIHRoZSBzYW1lCi0gICAgICAgICMgZ3JvdXBzLCBpZ25vcmluZyBvcmRlciBhbmQgZHVwbGljYXRlcy4KLSAgICAgICAgIyAjMTA4MjIgLSBpdCBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHdoZXRoZXIgcG9zaXguZ2V0Z3JvdXBzKCkKLSAgICAgICAgIyBpbmNsdWRlcyB0aGUgZWZmZWN0aXZlIGdpZCBzbyB3ZSBpbmNsdWRlIGl0IGFueXdheSwgc2luY2UgaWQgLUcgZG9lcwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHNldChbaW50KHgpIGZvciB4IGluIGdyb3Vwcy5zcGxpdCgpXSksCi0gICAgICAgICAgICAgICAgc2V0KHBvc2l4LmdldGdyb3VwcygpICsgW3Bvc2l4LmdldGVnaWQoKV0pKQorICAgICAgICAjIGdyb3VwcywgaWdub3Jpbmcgb3JkZXIsIGR1cGxpY2F0ZXMsIGFuZCB0aGUgZWZmZWN0aXZlIGdpZC4KKyAgICAgICAgIyAjMTA4MjIvIzI2OTQ0IC0gSXQgaXMgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB3aGV0aGVyCisgICAgICAgICMgcG9zaXguZ2V0Z3JvdXBzKCkgaW5jbHVkZXMgdGhlIGVmZmVjdGl2ZSBnaWQuCisgICAgICAgIHN5bWRpZmYgPSBpZGdfZ3JvdXBzLnN5bW1ldHJpY19kaWZmZXJlbmNlKHBvc2l4LmdldGdyb3VwcygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHN5bWRpZmYgb3Igc3ltZGlmZiA9PSB7cG9zaXguZ2V0ZWdpZCgpfSkKIAogICAgICMgdGVzdHMgZm9yIHRoZSBwb3NpeCAqYXQgZnVuY3Rpb25zIGZvbGxvdwogCkBAIC04NjMsOSArODY3LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQogICAgICAgICAgICAgczIgPSBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD1wb3NpeC5nZXRjd2QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZmxvYXQoZikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPTEwKioyMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKaW5kZXggMDc4M2MzNi4uOGExZTMzYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKQEAgLTU5Niw1ICs1OTYsODUgQEAKICAgICBhdHRyaWJ1dGVzID0gWydyZWxwYXRoJywgJ3NhbWVmaWxlJywgJ3NhbWVvcGVuZmlsZScsICdzYW1lc3RhdCddCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwYXRoID0gcG9zaXhwYXRoCisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICd4YicsIDApIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGIidGVzdF9wb3NpeHBhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybWNhc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtY2FzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNhYnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2FicykKKworICAgIGRlZiB0ZXN0X3BhdGhfam9pbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGguam9pbignYScsIHNlbGYuUGF0aExpa2UoJ2InKSwgJ2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguam9pbignYScsICdiJywgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGV4dCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRkcml2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZHJpdmUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Jhc2VuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYmFzZW5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Rpcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5kaXJuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2xpbmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2xpbmspCisKKyAgICBkZWYgdGVzdF9wYXRoX2xleGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5sZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc21vdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNtb3VudCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHVzZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHZhcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR2YXJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1wYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9hYnNwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYWJzcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVhbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWFscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXRoID0gc2VsZi5wYXRoLmNvbW1vbnBhdGgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uX3BhdGgsIHNlbGYuZmlsZV9uYW1lKQorCisKIGlmIF9fbmFtZV9fPT0iX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3cucHkgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQppbmRleCA2ZmVhYzQwLi5jZTk5ZmU2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvdy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQpAQCAtMSw0ICsxLDQgQEAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgUG93VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKaW5kZXggZWY1ZTk5ZS4uMTVmODhlNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKQEAgLTI3Nyw3ICsyNzcsNiBAQAogICAgICAgICBzb2NrZXRwYWlyID0gc2VsZi5fc29ja2V0cGFpcigpCiAgICAgICAgIG1hc3RlcnMgPSBbcy5maWxlbm8oKSBmb3IgcyBpbiBzb2NrZXRwYWlyXQogCi0gICAgICAgIG9zLmNsb3NlKG1hc3RlcnNbMV0pCiAgICAgICAgIHNvY2tldHBhaXJbMV0uY2xvc2UoKQogICAgICAgICBvcy5jbG9zZSh3cml0ZV90b19zdGRpbl9mZCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CmluZGV4IDE5MzJjNmIuLjNkODllM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgaW8KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogaW1wb3J0IHhtbC5zYXgKIAogZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc0ltcGwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggNmZmYmJiZC4uMmNmZjFjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTE1Niw5ICsxNTYsOSBAQAogICAgICAgICAjIFRoZXNlIHdlcmUgb25jZSBhYm91dCB0aGUgMTAgbG9uZ2VzdCBtb2R1bGVzCiAgICAgICAgIGNtKCdyYW5kb20nLCBpZ25vcmU9KCdSYW5kb20nLCkpICAjIGZyb20gX3JhbmRvbSBpbXBvcnQgUmFuZG9tIGFzIENvcmVHZW5lcmF0b3IKICAgICAgICAgY20oJ2NnaScsIGlnbm9yZT0oJ2xvZycsKSkgICAgICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdwaWNrbGUnKQorICAgICAgICBjbSgncGlja2xlJywgaWdub3JlPSgncGFydGlhbCcsKSkKICAgICAgICAgY20oJ2FpZmMnLCBpZ25vcmU9KCdvcGVuZnAnLCAnX2FpZmNfcGFyYW1zJykpICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdzcmVfcGFyc2UnLCBpZ25vcmU9KCdkdW1wJywgJ2dyb3VwcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKKyAgICAgICAgY20oJ3NyZV9wYXJzZScsIGlnbm9yZT0oJ2R1bXAnLCAnZ3JvdXBzJywgJ3BvcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKICAgICAgICAgY20oJ3BkYicpCiAgICAgICAgIGNtKCdweWRvYycpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IDFmN2FiN2YuLmVkNDM4ZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtODQsNiArODQsOCBAQAogICAgICB8ICBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZToKICAgICAgfFx4MjBceDIwCiAgICAgIHwgIE5PX01FQU5JTkcgPSAnZWdncycKKyAgICAgfFx4MjBceDIwCisgICAgIHwgIF9fYW5ub3RhdGlvbnNfXyA9IHsnTk9fTUVBTklORyc6IDxjbGFzcyAnc3RyJz59CiBceDIwXHgyMFx4MjBceDIwCiAgICAgY2xhc3MgQyhidWlsdGlucy5vYmplY3QpCiAgICAgIHwgIE1ldGhvZHMgZGVmaW5lZCBoZXJlOgpAQCAtMTk2LDYgKzE5OCw4IEBACiBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZTo8YnI+CiA8ZGw+PGR0PjxzdHJvbmc+Tk9fTUVBTklORzwvc3Ryb25nPiA9ICdlZ2dzJzwvZGw+CiAKKzxkbD48ZHQ+PHN0cm9uZz5fX2Fubm90YXRpb25zX188L3N0cm9uZz4gPSB7J05PX01FQU5JTkcnOiAmbHQ7Y2xhc3MgJ3N0cicmZ3Q7fTwvZGw+CisKIDwvdGQ+PC90cj48L3RhYmxlPiA8cD4KIDx0YWJsZSB3aWR0aD0iMTAwJSUiIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MiBib3JkZXI9MCBzdW1tYXJ5PSJzZWN0aW9uIj4KIDx0ciBiZ2NvbG9yPSIjZmZjOGQ4Ij4KQEAgLTI2NCw3ICsyNjgsNyBAQAogVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJy5yZXBsYWNlKCdcbicsIG9zLmxpbmVzZXApCiAKICMgb3V0cHV0IHBhdHRlcm4gZm9yIG1vZHVsZSB3aXRoIGJhZCBpbXBvcnRzCi1iYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKK2JhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBNb2R1bGVOb3RGb3VuZEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXIiCiAKIGV4cGVjdGVkX2R5bmFtaWNhdHRyaWJ1dGVfcGF0dGVybiA9ICIiIgogSGVscCBvbiBjbGFzcyBEQSBpbiBtb2R1bGUgJXM6CkBAIC02MzksOCArNjQzLDkgQEAKICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2RvY19fJ10KICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2NsYXNzX18nXQogICAgICAgICAjIGluc3BlY3QgcmVzb2x2ZXMgZGVzY3JpcHRvcnMgb24gdHlwZSBpbnRvIG1ldGhvZHMsIGJ1dCB2YXJzIGRvZXNuJ3QsCi0gICAgICAgICMgc28gd2UgbmVlZCB0byB1cGRhdGUgX19zdWJjbGFzc2hvb2tfXy4KKyAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBfX3N1YmNsYXNzaG9va19fIGFuZCBfX2luaXRfc3ViY2xhc3NfXy4KICAgICAgICAgZXhwZWN0ZWRbJ19fc3ViY2xhc3Nob29rX18nXSA9IFRlc3RDbGFzcy5fX3N1YmNsYXNzaG9va19fCisgICAgICAgIGV4cGVjdGVkWydfX2luaXRfc3ViY2xhc3NfXyddID0gVGVzdENsYXNzLl9faW5pdF9zdWJjbGFzc19fCiAKICAgICAgICAgbWV0aG9kcyA9IHB5ZG9jLmFsbG1ldGhvZHMoVGVzdENsYXNzKQogICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChtZXRob2RzLCBleHBlY3RlZCkKQEAgLTg2OCw2ICs4NzMsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfc3VtbWFyeV9saW5lKHQud3JhcCksCiAgICAgICAgICAgICAid3JhcCh0ZXh0KSBtZXRob2Qgb2YgdGV4dHdyYXAuVGV4dFdyYXBwZXIgaW5zdGFuY2UiKQogCisgICAgZGVmIHRlc3RfZmllbGRfb3JkZXJfZm9yX25hbWVkX3R1cGxlcyhzZWxmKToKKyAgICAgICAgUGVyc29uID0gbmFtZWR0dXBsZSgnUGVyc29uJywgWyduaWNrbmFtZScsICdmaXJzdG5hbWUnLCAnYWdlZ3JvdXAnXSkKKyAgICAgICAgcyA9IHB5ZG9jLnJlbmRlcl9kb2MoUGVyc29uKQorICAgICAgICBzZWxmLmFzc2VydExlc3Mocy5pbmRleCgnbmlja25hbWUnKSwgcy5pbmRleCgnZmlyc3RuYW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzLmluZGV4KCdmaXJzdG5hbWUnKSwgcy5pbmRleCgnYWdlZ3JvdXAnKSkKKworICAgICAgICBjbGFzcyBOb25JdGVyYWJsZUZpZWxkczoKKyAgICAgICAgICAgIF9maWVsZHMgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTm9uSGFzaGFibGVGaWVsZHM6CisgICAgICAgICAgICBfZmllbGRzID0gW1tdXQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoZXNlIGRvZXNuJ3QgZmFpbAorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkl0ZXJhYmxlRmllbGRzKQorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkhhc2hhYmxlRmllbGRzKQorCiAgICAgQHJlcXVpcmVzX2RvY3N0cmluZ3MKICAgICBkZWYgdGVzdF9ib3VuZF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgcyA9IFN0cmluZ0lPKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5IGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKaW5kZXggN2NhYzAxMy4uNzE1NTQ0YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IHN5cywgb3MsIGlvLCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzLCBpbywgc3VicHJvY2VzcwogaW1wb3J0IHF1b3ByaQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKaW5kZXggZTgwZWQxNy4uNGQ1YTg3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogZnJvbSBtYXRoIGltcG9ydCBsb2csIGV4cCwgcGksIGZzdW0sIHNpbgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIAogY2xhc3MgVGVzdEJhc2ljT3BzOgogICAgICMgU3VwZXJjbGFzcyB3aXRoIHRlc3RzIGNvbW1vbiB0byBhbGwgZ2VuZXJhdG9ycy4KQEAgLTE0MSw2ICsxNDIsODMgQEAKICAgICBkZWYgdGVzdF9zYW1wbGVfb25fZGljdHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5nZW4uc2FtcGxlLCBkaWN0LmZyb21rZXlzKCdhYmNkZWYnKSwgMikKIAorICAgIGRlZiB0ZXN0X2Nob2ljZXMoc2VsZik6CisgICAgICAgIGNob2ljZXMgPSBzZWxmLmdlbi5jaG9pY2VzCisgICAgICAgIGRhdGEgPSBbJ3JlZCcsICdncmVlbicsICdibHVlJywgJ3llbGxvdyddCisgICAgICAgIHN0cl9kYXRhID0gJ2FiY2QnCisgICAgICAgIHJhbmdlX2RhdGEgPSByYW5nZSg0KQorICAgICAgICBzZXRfZGF0YSA9IHNldChyYW5nZSg0KSkKKworICAgICAgICAjIGJhc2ljIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgZm9yIHNhbXBsZSBpbiBbCisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGs9NSksCisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIHJhbmdlKDQpLCBrPTUpLAorICAgICAgICAgICAgY2hvaWNlcyhrPTUsIHBvcHVsYXRpb249ZGF0YSwgd2VpZ2h0cz1yYW5nZSg0KSksCisgICAgICAgICAgICBjaG9pY2VzKGs9NSwgcG9wdWxhdGlvbj1kYXRhLCBjdW1fd2VpZ2h0cz1yYW5nZSg0KSksCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzYW1wbGUpLCA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNhbXBsZSksIGxpc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KHNhbXBsZSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgICMgdGVzdCBhcmd1bWVudCBoYW5kbGluZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWlzc2luZyBhcmd1bWVudHMKKyAgICAgICAgICAgIGNob2ljZXMoMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoZGF0YSwgaz0wKSwgW10pICAgICAgICAgICAgICAgICAgICAgICAgICMgayA9PSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcyhkYXRhLCBrPS0xKSwgW10pICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWdhdGl2ZSBrIGJlaGF2ZXMgbGlrZSBgYFswXSAqIC0xYGAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBrPTIuNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgayBpcyBhIGZsb2F0CisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKHN0cl9kYXRhLCBrPTUpKSA8PSBzZXQoc3RyX2RhdGEpKSAgICAjIHBvcHVsYXRpb24gaXMgYSBzdHJpbmcgc2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKHJhbmdlX2RhdGEsIGs9NSkpIDw9IHNldChyYW5nZV9kYXRhKSkgICMgcG9wdWxhdGlvbiBpcyBhIHJhbmdlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoc2V0X2RhdGEsIGs9MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBvcHVsYXRpb24gaXMgbm90IGEgc2VxdWVuY2UKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgTm9uZSwgaz01KSkgPD0gc2V0KGRhdGEpKSAgICAgICMgd2VpZ2h0cyBpcyBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCB3ZWlnaHRzPU5vbmUsIGs9NSkpIDw9IHNldChkYXRhKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgWzEsMl0sIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxlbih3ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCAxMCwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm9uLWl0ZXJhYmxlIHdlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBbTm9uZV0qNCwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm9uLW51bWVyaWMgd2VpZ2h0cworICAgICAgICBmb3Igd2VpZ2h0cyBpbiBbCisgICAgICAgICAgICAgICAgWzE1LCAxMCwgMjUsIDMwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnRlZ2VyIHdlaWdodHMKKyAgICAgICAgICAgICAgICBbMTUuMSwgMTAuMiwgMjUuMiwgMzAuM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsb2F0IHdlaWdodHMKKyAgICAgICAgICAgICAgICBbRnJhY3Rpb24oMSwgMyksIEZyYWN0aW9uKDIsIDYpLCBGcmFjdGlvbigzLCA2KSwgRnJhY3Rpb24oNCwgNildLCAjIGZyYWN0aW9uYWwgd2VpZ2h0cworICAgICAgICAgICAgICAgIFtUcnVlLCBGYWxzZSwgVHJ1ZSwgRmFsc2VdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYm9vbGVhbnMgKGluY2x1ZGUgLyBleGNsdWRlKQorICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIHdlaWdodHMsIGs9NSkpIDw9IHNldChkYXRhKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBjdW1fd2VpZ2h0cz1bMSwyXSwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICMgbGVuKHdlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPTEwLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24taXRlcmFibGUgY3VtX3dlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBjdW1fd2VpZ2h0cz1bTm9uZV0qNCwgaz01KSAgICAgICAgICAgICAgICAgICAgICMgbm9uLW51bWVyaWMgY3VtX3dlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCByYW5nZSg0KSwgY3VtX3dlaWdodHM9cmFuZ2UoNCksIGs9NSkgICAgICAgICAgICMgYm90aCB3ZWlnaHRzIGFuZCBjdW1fd2VpZ2h0cworICAgICAgICBmb3Igd2VpZ2h0cyBpbiBbCisgICAgICAgICAgICAgICAgWzE1LCAxMCwgMjUsIDMwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnRlZ2VyIGN1bV93ZWlnaHRzCisgICAgICAgICAgICAgICAgWzE1LjEsIDEwLjIsIDI1LjIsIDMwLjNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbG9hdCBjdW1fd2VpZ2h0cworICAgICAgICAgICAgICAgIFtGcmFjdGlvbigxLCAzKSwgRnJhY3Rpb24oMiwgNiksIEZyYWN0aW9uKDMsIDYpLCBGcmFjdGlvbig0LCA2KV0sICMgZnJhY3Rpb25hbCBjdW1fd2VpZ2h0cworICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPXdlaWdodHMsIGs9NSkpIDw9IHNldChkYXRhKSkKKworICAgICAgICAjIFRlc3Qgd2VpZ2h0IGZvY3VzZWQgb24gYSBzaW5nbGUgZWxlbWVudCBvZiB0aGUgcG9wdWxhdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMSwgMCwgMCwgMF0pLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKCdhYmNkJywgWzAsIDEsIDAsIDBdKSwgWydiJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFswLCAwLCAxLCAwXSksIFsnYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMCwgMCwgMCwgMV0pLCBbJ2QnXSkKKworICAgICAgICAjIFRlc3QgY29uc2lzdGVuY3kgd2l0aCByYW5kb20uY2hvaWNlKCkgZm9yIGVtcHR5IHBvcHVsYXRpb24KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoW10sIGs9MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoW10sIHdlaWdodHM9W10sIGs9MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoW10sIGN1bV93ZWlnaHRzPVtdLCBrPTUpCisKICAgICBkZWYgdGVzdF9nYXVzcyhzZWxmKToKICAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgc2VlZCgpIG1ldGhvZCBpbml0aWFsaXplcyBhbGwgdGhlIGhpZGRlbiBzdGF0ZS4gIEluCiAgICAgICAgICMgcGFydGljdWxhciwgdGhyb3VnaCAyLjIuMSBpdCBmYWlsZWQgdG8gcmVzZXQgYSBwaWVjZSBvZiBzdGF0ZSB1c2VkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQppbmRleCBjMDIyZjA3Li45ZTExZTUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKQEAgLTEsOSArMSwxMCBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gYnVpbHQtaW4gZnVuY3Rpb25zCiAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKIAogIyBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgKDMgYXJncyBvbmx5KSwgZm9yIGNvbXBhcmlzb24KIGRlZiBweXJhbmdlKHN0YXJ0LCBzdG9wLCBzdGVwKToKQEAgLTQ5OCwyOSArNDk5LDMyIEBACiAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgcmFuZ2VpdGVyX3R5cGUgPSB0eXBlKGl0ZXIocmFuZ2UoMCkpKQogCi0gICAgICAgICMgcmFuZ2VpdGVyX25ldyBkb2Vzbid0IHRha2Uga2V5d29yZCBhcmd1bWVudHMKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoYT0xKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmFuZ2VpdGVyX3R5cGUsIDEsIDMsIDEpCiAKLSAgICAgICAgIyByYW5nZWl0ZXJfbmV3IHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMSwgMSkKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgcmFuZ2VpdGVyX25ldyBkb2Vzbid0IHRha2Uga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShhPTEpCiAKLSAgICAgICAgIyBzdGFydCwgc3RvcCBhbmQgc3RvcCBtdXN0IGZpdCBpbiBDIGxvbmcKLSAgICAgICAgZm9yIGdvb2RfdmFsIGluIFtfdGVzdGNhcGkuTE9OR19NQVgsIF90ZXN0Y2FwaS5MT05HX01JTl06Ci0gICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShnb29kX3ZhbCwgZ29vZF92YWwsIGdvb2RfdmFsKQotICAgICAgICBmb3IgYmFkX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYICsgMSwgX3Rlc3RjYXBpLkxPTkdfTUlOIC0gMV06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIGJhZF92YWwsIDEsIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIGJhZF92YWwsIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIGJhZF92YWwpCisgICAgICAgICAgICAjIHJhbmdlaXRlcl9uZXcgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMSwgMSkKIAotICAgICAgICAjIHN0ZXAgbXVzdG4ndCBiZSB6ZXJvCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAwKQorICAgICAgICAgICAgIyBzdGFydCwgc3RvcCBhbmQgc3RvcCBtdXN0IGZpdCBpbiBDIGxvbmcKKyAgICAgICAgICAgIGZvciBnb29kX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYLCBfdGVzdGNhcGkuTE9OR19NSU5dOgorICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlKGdvb2RfdmFsLCBnb29kX3ZhbCwgZ29vZF92YWwpCisgICAgICAgICAgICBmb3IgYmFkX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYICsgMSwgX3Rlc3RjYXBpLkxPTkdfTUlOIC0gMV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgYmFkX3ZhbCwgMSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCBiYWRfdmFsLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIGJhZF92YWwpCisKKyAgICAgICAgICAgICMgc3RlcCBtdXN0bid0IGJlIHplcm8KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAwKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CiAgICAgICAgIGRlZiBjaGVjayhzdGFydCwgc3RvcCwgc3RlcD1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDA4MzRmZTAuLjNiZDZkN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCByZQogZnJvbSByZSBpbXBvcnQgU2Nhbm5lcgogaW1wb3J0IHNyZV9jb21waWxlCi1pbXBvcnQgc3JlX2NvbnN0YW50cwogaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZwogaW1wb3J0IHRyYWNlYmFjawpAQCAtMTE1LDEwICsxMTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIHJlLmVzY2FwZShzKSwgJ3gnKSwgcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIGxhbWJkYSBtOiBzLCAneCcpLCBzKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsICdcZzxhPlxnPGE+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8YT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8dW5rPlxnPHVuaz4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCByJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQpAQCAtMTI2LDE0ICsxMjUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpK2Nocig4KSkpCiAgICAgICAgIGZvciBjIGluICdjZGVoaWprbG1vcHFzdXd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXFwnICsgYywgJ2EnKSwgJ1xcJyArIGMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ15ccyonLCAnWCcsICd0ZXN0JyksICdYdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKIAogICAgIGRlZiB0ZXN0X2J1Z180NDk5NjQoc2VsZik6CiAgICAgICAgICMgZmFpbHMgZm9yIGdyb3VwIGZvbGxvd2VkIGJ5IG90aGVyIGVzY2FwZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPlxcYicsICd4eCcpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCByJ1xnPDE+XGc8MT5cYicsICd4eCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4eFxieHhcYicpCiAKICAgICBkZWYgdGVzdF9idWdfNDQ5MDAwKHNlbGYpOgpAQCAtMTg2LDE4ICsxODUsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDc3NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKIAotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDkwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDk5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1wxMScgKyAnOCcKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDE4JyArICcxJwotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgwMCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1w4MCcgKyAnMCcKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDgnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA5JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDExJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDE4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDkwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOTAnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDk5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOTknLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDExJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMTgnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgwMCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDgwJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4JywgJycsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA4JywgMSkKIAogICAgICAgICAjIGluIHB5dGhvbjIuMyAoZXRjKSwgdGhlc2UgbG9vcCBlbmRsZXNzbHkgaW4gc3JlX3BhcnNlci5weQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKCgoKCgoKCgoKCh4KSkpKSkpKSkpKSknLCByJ1wxMScsICd4JyksICd4JykKQEAgLTIyMSwyNiArMjIxLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4KycsICctJywgJ2FieGQnKSwgJ2FiLWQnKQogCiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfZ3JvdXBzKHNlbGYpOgotICAgICAgICByZS5jb21waWxlKCcoP1A8YT54KSg/UD1hKSg/KGEpeSknKQotICAgICAgICByZS5jb21waWxlKCcoP1A8YTE+eCkoP1A9YTEpKD8oYTEpeSknKQotICAgICAgICByZS5jb21waWxlKCcoP1A8YTE+eClcMSg/KDEpeSknKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPGE+KScsCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YT54KSg/UD1hKSg/KGEpeSknKQorICAgICAgICByZS5jb21waWxlKHInKD9QPGExPngpKD9QPWExKSg/KGExKXkpJykKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhMT54KVwxKD8oMSl5KScpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD9QPGE+KScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZGVmaW5pdGlvbiBvZiBncm91cCBuYW1lICdhJyBhcyBncm91cCAyOyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAxIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KD9QPWEpKScsCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4oP1A9YSkpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHJlZmVyIHRvIGFuIG9wZW4gZ3JvdXAiLCAxMCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QeHkpJywgJ3Vua25vd24gZXh0ZW5zaW9uID9QeCcpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPikoP1A9YScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBuYW1lJywgMTEpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0nLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPSknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPTEpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hMSknLCAidW5rbm93biBncm91cCBuYW1lICdhMSciKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YS4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCknLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDw+KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QeHkpJywgJ3Vua25vd24gZXh0ZW5zaW9uID9QeCcpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD9QPWEnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgbmFtZScsIDExKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPSknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0xKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD1hKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2EnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD1hMSknLCAidW5rbm93biBncm91cCBuYW1lICdhMSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWEuKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8KScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPD4pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8MT4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGEuPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCkBAIC0yNTksMzUgKzI1OSwzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHBhdCwgJ3hjOHl6Jykuc3BhbigpLCAoMCwgNSkpCiAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19yZWZzKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8YScsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8YScsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPCcsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZycsICd4eCcsICdtaXNzaW5nIDwnLCAyKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8YSBhPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGcnLCAneHgnLCAnbWlzc2luZyA8JywgMikKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzxhIGE+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYSBhJyIsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzw+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzw+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwxYTE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwxYTE+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMWExJyIsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8Mj4nLCAneHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMicsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXDInLCAneHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMicsIDEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAidW5rbm93biBncm91cCBuYW1lICdhYiciKToKLSAgICAgICAgICAgIHJlLnN1YignKD9QPGE+eCknLCAnXGc8YWI+JywgJ3h4JykKKyAgICAgICAgICAgIHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGFiPicsICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXGc8Yj4nLCAneHgnKSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXDInLCAneHgnKSwgJycpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwtMT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPC0xPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJy0xJyIsIDMpCiAgICAgICAgICMgTmV3IHZhbGlkL2ludmFsaWQgaWRlbnRpZmllcnMgaW4gUHl0aG9uIDMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDzCtT54KScsIHInXGc8wrU+JywgJ3h4JyksICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj54KScsIHInXGc88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj4nLCAneHgnKSwgJ3h4JykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPMKpPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8wqk+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnwqknIiwgMykKICAgICAgICAgIyBTdXBwb3J0ID4gMTAwIGdyb3Vwcy4KICAgICAgICAgcGF0ID0gJ3wnLmpvaW4oJ3goP1A8YSVkPiV4KXknICUgKGksIGkpIGZvciBpIGluIHJhbmdlKDEsIDIwMCArIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihwYXQsICdcZzwyMDA+JywgJ3hjOHl6eGM4eScpLCAnYzh6YzgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihwYXQsIHInXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKIAogICAgIGRlZiB0ZXN0X3JlX3N1Ym4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiKD9pKWIrIiwgIngiLCAiYmJiYiBCQkJCIiksICgneCB4JywgMikpCkBAIC00MTksMTkgKzQxOSw3NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYmMnKS5ncm91cHMoKSwgKCdiJywgTm9uZSwgJ2InLCAnYycpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYmMnKS5ncm91cHMoIiIpLCAoJ2InLCAiIiwgJ2InLCAnYycpKQogCi0gICAgICAgICMgQSBzaW5nbGUgZ3JvdXAKLSAgICAgICAgbSA9IHJlLm1hdGNoKCcoYSknLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgwKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDEpLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxLCAxKSwgKCdhJywgJ2EnKSkKLQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoPzooP1A8YTE+YSl8KD9QPGIyPmIpKSg/UDxjMz5jKT8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYScpLmdyb3VwKDEsIDIsIDMpLCAoJ2EnLCBOb25lLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2InKS5ncm91cCgnYTEnLCAnYjInLCAnYzMnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2InLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2FjJykuZ3JvdXAoMSwgJ2IyJywgMyksICgnYScsIE5vbmUsICdjJykpCiAKKyAgICBkZWYgdGVzdF9ncm91cChzZWxmKToKKyAgICAgICAgY2xhc3MgSW5kZXg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9faW5kZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorICAgICAgICAjIEEgc2luZ2xlIGdyb3VwCisgICAgICAgIG0gPSByZS5tYXRjaCgnKGEpKGIpJywgJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKCksICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgwKSwgJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDEpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cChJbmRleCgxKSksICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIDE8PDEwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIEluZGV4KDE8PDEwMDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAneCcpCisgICAgICAgICMgTXVsdGlwbGUgZ3JvdXBzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgyLCAxKSwgKCdiJywgJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKEluZGV4KDIpLCBJbmRleCgxKSksICgnYicsICdhJykpCisKKyAgICBkZWYgdGVzdF9tYXRjaF9nZXRpdGVtKHNlbGYpOgorICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoPzooP1A8YTE+YSl8KD9QPGIyPmIpKSg/UDxjMz5jKT8nKQorCisgICAgICAgIG0gPSBwYXQubWF0Y2goJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2ExJ10sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydiMiddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2MzJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ExPXthMX0gYjI9e2IyfSBjMz17YzN9Jy5mb3JtYXRfbWFwKG0pLCAnYTE9YSBiMj1Ob25lIGMzPU5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzNdLCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bJ1gnXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bLTFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVs0XQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bMCwgMV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWygwLCldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsoMCwgMSldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChLZXlFcnJvciwgJ2EyJyk6CisgICAgICAgICAgICAnYTE9e2EyfScuZm9ybWF0X21hcChtKQorCisgICAgICAgIG0gPSBwYXQubWF0Y2goJ2FjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydhMSddLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYjInXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydjMyddLCAnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ExPXthMX0gYjI9e2IyfSBjMz17YzN9Jy5mb3JtYXRfbWFwKG0pLCAnYTE9YSBiMj1Ob25lIGMzPWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sICdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVszXSwgJ2MnKQorCisgICAgICAgICMgQ2Fubm90IGFzc2lnbi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbVswXSA9IDEKKworICAgICAgICAjIE5vIGxlbigpLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxlbiwgbSkKKwogICAgIGRlZiB0ZXN0X3JlX2Z1bGxtYXRjaChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxNjIwMzogUHJvcG9zYWw6IGFkZCByZS5mdWxsbWF0Y2goKSBtZXRob2QuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKHIiYSIsICJhIikuc3BhbigpLCAoMCwgMSkpCkBAIC00NjMsMTkgKzUyMSwxOSBAQAogICAgICAgICAgICAgcmUuY29tcGlsZShyIi4qPyIpLmZ1bGxtYXRjaCgiYWJjZCIsIHBvcz0xLCBlbmRwb3M9Mykuc3BhbigpLCAoMSwgMykpCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZl9leGlzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhKScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEpJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCcoJywgJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnYScpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYSknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYSknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocideKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpYnxkKSkkJywgJ2FiJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgJ2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnYScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2EnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAnJykpCiAKICAgICAgICAgIyBUZXN0cyBmb3IgYnVnICMxMTc3ODMxOiBleGVyY2lzZSBncm91cHMgb3RoZXIgdGhhbiB0aGUgZmlyc3QgZ3JvdXAKQEAgLTUwMCwxMCArNTU4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R3byBicmFuY2hlcycsIDEwKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWZfb3ZlcmZsb3coc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoKScsICdcZzwlcz4nICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsICd4eCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD8oJWQpKScgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAxMCkKKyAgICAgICAgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCBNQVhHUk9VUFMKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgcidcZzwlcz4nICUgTUFYR1JPVVBTLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQnICUgTUFYR1JPVVBTLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/KCVkKSknICUgTUFYR1JPVVBTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCcgJSBNQVhHUk9VUFMsIDEwKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWYoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKFx8KT8oW14oKV0rKVwxJCcsICd8YXwnKS5ncm91cHMoKSwKQEAgLTUzNSwzNyArNTk0LDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiKQogCiAgICAgZGVmIHRlc3RfcmVwZWF0X21pbm1heChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9PyQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezEsMn0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxfSQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MX0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9PyQiLCAiYWJjIikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7M30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsNH0kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDR9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxLDJ9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezEsMn0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MX0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9PyQiLCAieHh4IikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MywzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsNH0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSwzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsM30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDR9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDN9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHt9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHt9JCIsICJ4e30iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHt9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7fSQiLCAieHt9IikpCiAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ3h7MiwxfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQnLCAyKQpAQCAtNjM4LDE0ICs2OTcsMTAgQEAKICAgICAgICAgcmUucHVyZ2UoKSAgIyBmb3Igd2FybmluZ3MKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6Q0VGR0hJSktMTU5PUFFSVFZYWSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1xcJWMnICUgYywgYykuZ3JvdXAoKSwgYykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1xcJWMnICUgYywgJ2EnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ1xcJWMnICUgYykKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6QUJDRUZHSElKS0xNTk9QUVJUVlhZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1tcXCVjXScgJSBjLCBjKS5ncm91cCgpLCBjKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnW1xcJWNdJyAlIGMsICdhJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICdbXFwlY10nICUgYykKIAogICAgIGRlZiB0ZXN0X3N0cmluZ19ib3VuZGFyaWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA3MTMKQEAgLTY5MiwxMCArNzQ3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImFcblxuYiIpCiAKICAgICBkZWYgdGVzdF9sb29rYWhlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbXmFdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKikpIiwgImEgYmMiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbYWJjXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW2FiY10qKSkiLCAiYSBiYyIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1cc1wxKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHNcMSopIiwgImEgYWEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHMoYWJjfGEpKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQpAQCAtODQzLDEyICs4OTgsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChiImFiYyIsIGIiQUJDIiwgcmUuSXxyZS5MKS5ncm91cCgwKSwgYiJBQkMiKQogCiAgICAgZGVmIHRlc3Rfbm90X2xpdGVyYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKikiLCAiIGJiIikuZ3JvdXAoMSksICJiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKFteYV0qKSIsICIgYmIiKS5ncm91cCgxKSwgImJiIikKIAogICAgIGRlZiB0ZXN0X3NlYXJjaF9jb3ZlcmFnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goImFccyIsICJhICIpLmdyb3VwKDApLCAiYSAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJhXHMiLCAiYSAiKS5ncm91cCgwKSwgImEgIikKIAogICAgIGRlZiBhc3NlcnRNYXRjaChzZWxmLCBwYXR0ZXJuLCB0ZXh0LCBtYXRjaD1Ob25lLCBzcGFuPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXI9cmUubWF0Y2gpOgpAQCAtOTUzLDcgKzEwMDgsNyBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDU2NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDkxJywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MXoiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcdTEyMyIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHUxMjMnLCAwKQpAQCAtOTk4LDEwICsxMDUzLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXHUxMjM0IiwgYid1MTIzNCcpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcVTAwMDEyMzQ1IiwgYidVMDAwMTIzNDUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIlx1MTIzNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJcVTAwMDEyMzQ1IikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwIiwgYiJcMDAwIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDgiLCBiIlwwMDA4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDEiLCBiIlwwMDEiKSkKQEAgLTEwMDksNyArMTA2Miw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXDU2NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOTEnLCAxKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlx4MSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJceDF6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQogCkBAIC0xMDIzLDEwICsxMDc2LDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeDBdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4el0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXHUxMjM0XSIsIGIndScpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXFUwMDAxMjM0NV0iLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIltcdTEyMzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIltcVTAwMDEyMzQ1XSIpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiW1w1NjddIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDEpCkBAIC0xMDU0LDggKzExMDUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKT9hJywnYScpLmxhc3RpbmRleCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyhhKShiKT9iJywnYWInKS5sYXN0aW5kZXgsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoP1A8YT5hKSg/UDxiPmIpP2InLCdhYicpLmxhc3Rncm91cCwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoP1A8YT5hKGIpKSIsICJhYiIpLmxhc3Rncm91cCwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoKGEpKSIsICJhIikubGFzdGluZGV4LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKD9QPGE+YShiKSkiLCAiYWIiKS5sYXN0Z3JvdXAsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIigoYSkpIiwgImEiKS5sYXN0aW5kZXgsIDEpCiAKICAgICBkZWYgdGVzdF9idWdfNDE4NjI2KHNlbGYpOgogICAgICAgICAjIGJ1Z3MgNDE4NjI2IGF0IGFsLiAtLSBUZXN0aW5nIEdyZWcgQ2hhcG1hbidzIGFkZGl0aW9uIG9mIG9wIGNvZGUKQEAgLTEyMjcsNyArMTI3OCw3IEBACiAgICAgICAgICAgICAnXHVmZjEwJywgIyAnXE57RlVMTFdJRFRIIERJR0lUIFpFUk99JywgY2F0ZWdvcnkgJ05kJwogICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBkZWNpbWFsX2RpZ2l0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ15cZCQnLCB4KS5ncm91cCgwKSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideXGQkJywgeCkuZ3JvdXAoMCksIHgpCiAKICAgICAgICAgbm90X2RlY2ltYWxfZGlnaXRzID0gWwogICAgICAgICAgICAgJ1x1MjE2NScsICMgJ1xOe1JPTUFOIE5VTUVSQUwgU0lYfScsIGNhdGVnb3J5ICdObCcKQEAgLTEyMzYsNyArMTI4Nyw3IEBACiAgICAgICAgICAgICAnXHUzMmI0JywgIyAnXE57Q0lSQ0xFRCBOVU1CRVIgVEhJUlRZIE5JTkV9JywgY2F0ZWdvcnkgJ05vJwogICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub3RfZGVjaW1hbF9kaWdpdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXlxkJCcsIHgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocideXGQkJywgeCkpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9hcnJheShzZWxmKToKICAgICAgICAgIyBTRiBidWYgMTY0NzU0MQpAQCAtMTI3OCw2ICsxMzI5LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnKD9peHUpICcgKyB1cHBlcl9jaGFyLCBsb3dlcl9jaGFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcoP2l4dSkgJyArIGxvd2VyX2NoYXIsIHVwcGVyX2NoYXIpKQogCisgICAgICAgIHAgPSB1cHBlcl9jaGFyICsgJyg/aSknCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIHdhcm5zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHAsIGxvd2VyX2NoYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKHdhcm5zLndhcm5pbmdzWzBdLm1lc3NhZ2UpLAorICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMnICUgcAorICAgICAgICApCisKKyAgICAgICAgcCA9IHVwcGVyX2NoYXIgKyAnKD9pKSVzJyAlICgnLj8nICogMTAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyB3YXJuczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChwLCBsb3dlcl9jaGFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cih3YXJucy53YXJuaW5nc1swXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzICh0cnVuY2F0ZWQpJyAlIHBbOjIwXQorICAgICAgICApCisKICAgICBkZWYgdGVzdF9kb2xsYXJfbWF0Y2hlc190d2ljZShzZWxmKToKICAgICAgICAgIiQgbWF0Y2hlcyB0aGUgZW5kIG9mIHN0cmluZywgYW5kIGp1c3QgYmVmb3JlIHRoZSB0ZXJtaW5hdGluZyBcbiIKICAgICAgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoJyQnKQpAQCAtMTMwOCwyOSArMTM3NSwyOSBAQAogICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIHJlLlVOSUNPREUpOgogICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHhjMCcsIGZsYWdzIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goJ1x4ZTAnKSkKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x3JywgZmxhZ3MpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKHInXHcnLCBmbGFncykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHhjMCcsIHJlLkFTQ0lJIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyg/YSlceGMwJywgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x3JywgcmUuQVNDSUkpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidcdycsIHJlLkFTQ0lJKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD9hKVx3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJyg/YSlcdycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICAjIEJ5dGVzIHBhdHRlcm5zCiAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgcmUuQVNDSUkpOgogICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x4YzAnLCBmbGFncyB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYidceGUwJykpCi0gICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnLCBmbGFncykKKyAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnLCBmbGFncykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChiJ1x4ZTAnKSkKICAgICAgICAgIyBJbmNvbXBhdGliaWxpdGllcwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJ1x3JywgcmUuVU5JQ09ERSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP3UpXHcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnXHcnLCByZS5VTklDT0RFIHwgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP3UpXHcnLCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YSlcdycsIHJlLlVOSUNPREUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP2F1KVx3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYnInXHcnLCByZS5VTklDT0RFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBicicoP3UpXHcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJ1x3JywgcmUuVU5JQ09ERSB8IHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJyg/dSlcdycsIHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJyg/YSlcdycsIHJlLlVOSUNPREUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD9hdSlcdycpCiAKICAgICBkZWYgdGVzdF9sb2NhbGVfZmxhZyhzZWxmKToKICAgICAgICAgaW1wb3J0IGxvY2FsZQpAQCAtMTM2MSwyNyArMTQyOCw1OSBAQAogICAgICAgICBwYXQgPSByZS5jb21waWxlKGJwYXQsIHJlLklHTk9SRUNBU0UpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycsIHJlLkxPQ0FMRSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycsIHJlLkxPQ0FMRSkKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYicoP0wpXHcnKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJyg/TClcdycpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JykKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKICAgICAgICAgIyBJbmNvbXBhdGliaWxpdGllcwotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJycsIHJlLkxPQ0FMRSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcoP0wpJykKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInJywgcmUuTE9DQUxFIHwgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/TCknLCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hKScsIHJlLkxPQ0FMRSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hTCknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnJywgcmUuTE9DQUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9MKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInJywgcmUuTE9DQUxFIHwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD9MKScsIHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/YSknLCByZS5MT0NBTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD9hTCknKQorCisgICAgZGVmIHRlc3Rfc2NvcGVkX2ZsYWdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP2k6YSliJywgJ0FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD9pOmEpYicsICdhQicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/LWk6YSliJywgJ0FiJywgcmUuSUdOT1JFQ0FTRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/LWk6YSliJywgJ2FCJywgcmUuSUdOT1JFQ0FTRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD9pOig/LWk6YSliKScsICdBYicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP2k6KD8taTphKWIpJywgJ2FCJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD94OiBhKSBiJywgJ2EgYicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/eDogYSkgYicsICcgYSBiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/LXg6IGEpIGInLCAnIGFiJywgcmUuVkVSQk9TRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD8teDogYSkgYicsICdhYicsIHJlLlZFUkJPU0UpKQorCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2E6XHcpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb24gZ2xvYmFsIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9hKSg/LWE6XHcpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb2ZmIGdsb2JhbCBmbGFnJywgOCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aS1pOmEpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFkIGlubGluZSBmbGFnczogZmxhZyB0dXJuZWQgb24gYW5kIG9mZicsIDUpCisKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LScsICdtaXNzaW5nIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8tKycsICdtaXNzaW5nIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8teicsICd1bmtub3duIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taScsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taSknLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWkrJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1peicsICd1bmtub3duIGZsYWcnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pOicsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nIC0sIDogb3IgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2krJywgJ21pc3NpbmcgLSwgOiBvciApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aXonLCAndW5rbm93biBmbGFnJywgMykKIAogICAgIGRlZiB0ZXN0X2J1Z182NTA5KHNlbGYpOgogICAgICAgICAjIFJlcGxhY2VtZW50IHN0cmluZ3Mgb2YgYm90aCB0eXBlcyBtdXN0IHBhcnNlIHByb3Blcmx5LgogICAgICAgICAjIGFsbCBzdHJpbmdzCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ2EoXHcpJykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ2EoXHcpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKCdiXFwxJywgJ2FjJyksICdiYycpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ2EoLiknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoJ2JcXDEnLCAnYVx1MTIzNCcpLCAnYlx1MTIzNCcpCkBAIC0xMzg5LDcgKzE0ODgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIobGFtYmRhIG06ICdzdHInLCAnYTUnKSwgJ3N0cicpCiAKICAgICAgICAgIyBhbGwgYnl0ZXMKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ2EoXHcpJykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidhKFx3KScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YihiJ2JcXDEnLCBiJ2FjJyksIGInYmMnKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKGInYSguKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YihiJ2JcXDEnLCBiJ2FceENEJyksIGInYlx4Q0QnKQpAQCAtMTQyNywxMyArMTUyNiw2IEBACiAgICAgICAgICMgVGVzdCBiZWhhdmlvdXIgd2hlbiBub3QgZ2l2ZW4gYSBzdHJpbmcgb3IgcGF0dGVybiBhcyBwYXJhbWV0ZXIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZS5jb21waWxlLCAwKQogCi0gICAgZGVmIHRlc3RfYnVnXzEzODk5KHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMzg5OTogcmUgcGF0dGVybiByIltcQV0iIHNob3VsZCB3b3JrIGxpa2UgIkEiIGJ1dCBtYXRjaGVzCi0gICAgICAgICMgbm90aGluZy4gRGl0dG8gQiBhbmQgWi4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwocidbXEFcQlxiXENcWl0nLCAnQUJcYkNaJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQScsICdCJywgJ1xiJywgJ0MnLCAnWiddKQotCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0xKQogICAgIGRlZiB0ZXN0X2xhcmdlX3NlYXJjaChzZWxmLCBzaXplKToKICAgICAgICAgIyBJc3N1ZSAjMTAxODI6IGluZGljZXMgd2VyZSAzMi1iaXQtdHJ1bmNhdGVkLgpAQCAtMTUxOCw3ICsxNjEwLDcgQEAKICAgICAgICAgZm9yIHN0cmluZyBpbiAoYidbYWJyYWNhZGFicmFdJywgQihiJ1thYnJhY2FkYWJyYV0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInW2FicmFjYWRhYnJhXScpLAogICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KGInW2FicmFjYWRhYnJhXScpKToKLSAgICAgICAgICAgIG0gPSByZS5zZWFyY2gocmInKC4rKSguKj8pXDEnLCBzdHJpbmcpCisgICAgICAgICAgICBtID0gcmUuc2VhcmNoKGJyJyguKykoLio/KVwxJywgc3RyaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPCVzLiVzIG9iamVjdDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Bhbj0oMSwgMTIpLCBtYXRjaD1iJ2FicmFjYWRhYnJhJz4iICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUobSkuX19tb2R1bGVfXywgdHlwZShtKS5fX3F1YWxuYW1lX18pKQpAQCAtMTU0Nyw5ICsxNjM5LDkgQEAKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXQ6CiAgICAgICAgICAgICByZS5jb21waWxlKHBhdCwgcmUuREVCVUcpCiAgICAgICAgIGR1bXAgPSAnJydcCi1TVUJQQVRURVJOIDEKK1NVQlBBVFRFUk4gMSAwIDAKICAgTElURVJBTCA0NgotU1VCUEFUVEVSTiBOb25lCitTVUJQQVRURVJOIE5vbmUgMCAwCiAgIEJSQU5DSAogICAgIElOCiAgICAgICBMSVRFUkFMIDk5CkBAIC0xNTU3LDcgKzE2NDksNyBAQAogICBPUgogICAgIExJVEVSQUwgMTEyCiAgICAgTElURVJBTCAxMjEKLVNVQlBBVFRFUk4gTm9uZQorU1VCUEFUVEVSTiBOb25lIDAgMAogICBHUk9VUFJFRl9FWElTVFMgMQogICAgIEFUIEFUX0VORAogICBFTFNFCkBAIC0xNjczLDcgKzE3NjUsNyBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QJywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD96KScsICd1bmtub3duIGV4dGVuc2lvbiA/eicsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6KScsICd1bmtub3duIGZsYWcnLCAzKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8jYWJjJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88PiknLCAndW5rbm93biBleHRlbnNpb24gPzw+JywgMSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CmluZGV4IDJjNzNkZjIuLjA2YTkxNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQpAQCAtMTIxLDYgKzEyMSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFUk09J3h0ZXJtLTI1NmNvbG9yJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGInJykKIAorICAgIGF1dG9faGlzdG9yeV9zY3JpcHQgPSAiIiJcCitpbXBvcnQgcmVhZGxpbmUKK3JlYWRsaW5lLnNldF9hdXRvX2hpc3Rvcnkoe30pCitpbnB1dCgpCitwcmludCgiSGlzdG9yeSBsZW5ndGg6IiwgcmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSkKKyIiIgorCisgICAgZGVmIHRlc3RfYXV0b19oaXN0b3J5X2VuYWJsZWQoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHJ1bl9wdHkoc2VsZi5hdXRvX2hpc3Rvcnlfc2NyaXB0LmZvcm1hdChUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiIkhpc3RvcnkgbGVuZ3RoOiAxXHJcbiIsIG91dHB1dCkKKworICAgIGRlZiB0ZXN0X2F1dG9faGlzdG9yeV9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gcnVuX3B0eShzZWxmLmF1dG9faGlzdG9yeV9zY3JpcHQuZm9ybWF0KEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiIkhpc3RvcnkgbGVuZ3RoOiAwXHJcbiIsIG91dHB1dCkKKwogICAgIGRlZiB0ZXN0X25vbmFzY2lpKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWFkbGluZS5hZGRfaGlzdG9yeSgiXHhFQlx4RUYiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKaW5kZXggYWUxODMyNy4uNTI5MDlkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CkBAIC0xLDIxICsxLDQ4IEBACiAiIiIKIFRlc3RzIG9mIHJlZ3J0ZXN0LnB5LgorCitOb3RlOiB0ZXN0X3JlZ3J0ZXN0IGNhbm5vdCBiZSBydW4gdHdpY2UgaW4gcGFyYWxsZWwuCiAiIiIKIAotaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGZhdWx0aGFuZGxlcgotaW1wb3J0IGdldG9wdAoraW1wb3J0IGlvCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0LCBzdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IGxpYnJlZ3J0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitQeV9ERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0b2JqZWN0cycpCitST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKQorUk9PVF9ESVIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChST09UX0RJUikpCisKK1RFU1RfSU5URVJSVVBURUQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgZnJvbSBzaWduYWwgaW1wb3J0IFNJR0lOVAorICAgIHRyeToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHJhaXNlX3NpZ25hbAorICAgICAgICByYWlzZV9zaWduYWwoU0lHSU5UKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgaW1wb3J0IG9zCisgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIFNJR0lOVCkKKyAgICAiIiIpCisKIAogY2xhc3MgUGFyc2VBcmdzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCByZWdydGVzdCdzIGFyZ3VtZW50IHBhcnNpbmcuIiIiCisgICAgIiIiCisgICAgVGVzdCByZWdydGVzdCdzIGFyZ3VtZW50IHBhcnNpbmcsIGZ1bmN0aW9uIF9wYXJzZV9hcmdzKCkuCisgICAgIiIiCiAKICAgICBkZWYgY2hlY2tFcnJvcihzZWxmLCBhcmdzLCBtc2cpOgogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyLCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgIHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgICAgICBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKG1zZywgZXJyLmdldHZhbHVlKCkpCiAKICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgpAQCAtMjMsODIgKzUwLDgyIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKICAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0LCBcCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgICAgICAgICAgcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgICAgIGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1J1biBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4nLCBvdXQuZ2V0dmFsdWUoKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgcmVxdWlyZWQiKQogICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRpbWVvdXQnLCAnNC4yJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRpbWVvdXQnLCAnNC4yJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGltZW91dCwgNC4yKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXRpbWVvdXQnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGltZW91dCcsICdmb28nXSwgJ2ludmFsaWQgZmxvYXQgdmFsdWUnKQogCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0td2FpdCddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS13YWl0J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy53YWl0KQogCiAgICAgZGVmIHRlc3Rfc2xhdmVhcmdzKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zbGF2ZWFyZ3MnLCAnW1tdLCB7fV0nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc2xhdmVhcmdzJywgJ1tbXSwge31dJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuc2xhdmVhcmdzLCAnW1tdLCB7fV0nKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXNsYXZlYXJncyddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3N0YXJ0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctUycsICctLXN0YXJ0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuc3RhcnQsICdmb28nKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF92ZXJib3NlKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXYnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy12J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMSkKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy12dnYnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy12dnYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAzKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10gKiAzKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10gKiAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDMpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2UyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdycsICctLXZlcmJvc2UyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudmVyYm9zZTIpCiAKICAgICBkZWYgdGVzdF92ZXJib3NlMyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVcnLCAnLS12ZXJib3NlMyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnZlcmJvc2UzKQogCiAgICAgZGVmIHRlc3RfcXVpZXQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1xJywgJy0tcXVpZXQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF9zbG93KHNlbGYpOgotICAgICAgICBmb3Igb3B0IGluICctbycsICctLXNsb3cnOgorICAgICAgICBmb3Igb3B0IGluICctbycsICctLXNsb3dlc3QnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5wcmludF9zbG93KQogCiAgICAgZGVmIHRlc3RfaGVhZGVyKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1oZWFkZXInXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0taGVhZGVyJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5oZWFkZXIpCiAKICAgICBkZWYgdGVzdF9yYW5kb21pemUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1yJywgJy0tcmFuZG9taXplJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucmFuZG9taXplKQogCiAgICAgZGVmIHRlc3RfcmFuZHNlZWQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXJhbmRzZWVkJywgJzEyMzQ1J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXJhbmRzZWVkJywgJzEyMzQ1J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMucmFuZG9tX3NlZWQsIDEyMzQ1KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucmFuZG9taXplKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXJhbmRzZWVkJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQpAQCAtMTA3LDcgKzEzNCw3IEBACiAgICAgZGVmIHRlc3RfZnJvbWZpbGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1mJywgJy0tZnJvbWZpbGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5mcm9tZmlsZSwgJ2ZvbycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbycsICctcyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQpAQCAtMTE1LDQyICsxNDIsNDIgQEAKICAgICBkZWYgdGVzdF9leGNsdWRlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICcteCcsICctLWV4Y2x1ZGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5leGNsdWRlKQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctcycsICctLXNpbmdsZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnNpbmdsZSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJy1mJywgJ2ZvbyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogCiAgICAgZGVmIHRlc3RfbWF0Y2goc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1tJywgJy0tbWF0Y2gnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAncGF0dGVybiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ3BhdHRlcm4nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLm1hdGNoX3Rlc3RzLCAncGF0dGVybicpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X2ZhaWxmYXN0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRycsICctLWZhaWxmYXN0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy12J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLXYnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZmFpbGZhc3QpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLVcnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctVyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mYWlsZmFzdCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICctRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVycpCiAKICAgICBkZWYgdGVzdF91c2Uoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy11JywgJy0tdXNlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxuZXR3b3JrJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5ldHdvcmsnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9yZXNvdXJjZXMsIFsnZ3VpJywgJ25ldHdvcmsnXSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbm9uZSxuZXR3b3JrJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5vbmUsbmV0d29yayddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgWyduZXR3b3JrJ10pCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBsaXN0KHJlZ3J0ZXN0LlJFU09VUkNFX05BTUVTKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbGlzdChsaWJyZWdydGVzdC5SRVNPVVJDRV9OQU1FUykKICAgICAgICAgICAgICAgICBleHBlY3RlZC5yZW1vdmUoJ2d1aScpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnYWxsLC1ndWknXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdhbGwsLWd1aSddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgZXhwZWN0ZWQpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbyddLCAnaW52YWxpZCByZXNvdXJjZScpCkBAIC0xNTgsMzEgKzE4NSwzMSBAQAogICAgIGRlZiB0ZXN0X21lbWxpbWl0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTScsICctLW1lbWxpbWl0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzRHJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNEcnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLm1lbWxpbWl0LCAnNEcnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF90ZXN0ZGlyKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10ZXN0ZGlyJywgJ2ZvbyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10ZXN0ZGlyJywgJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRlc3RkaXIsIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCAnZm9vJykpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGVzdGRpciddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3J1bmxlYWtzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTCcsICctLXJ1bmxlYWtzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucnVubGVha3MpCiAKICAgICBkZWYgdGVzdF9odW50cmxlYWtzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctUicsICctLWh1bnRybGVha3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzonXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg1LCA0LCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjonXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg2LCA0LCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzozJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOjMnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg1LCAzLCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6MzpsZWFrcy5sb2cnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OjM6bGVha3MubG9nJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNiwgMywgJ2xlYWtzLmxvZycpKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICc2J10sCkBAIC0xOTMsMjQgKzIyMCwyMyBAQAogICAgIGRlZiB0ZXN0X211bHRpcHJvY2VzcyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLWonLCAnLS1tdWx0aXByb2Nlc3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzInXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9tcCwgMikKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIGludCB2YWx1ZScpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1UJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1sJ10sICJkb24ndCBnbyB0b2dldGhlciIpCi0gICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1NJywgJzRHJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAKICAgICBkZWYgdGVzdF9jb3ZlcmFnZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVQnLCAnLS1jb3ZlcmFnZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnRyYWNlKQogCiAgICAgZGVmIHRlc3RfY292ZXJkaXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1EJywgJy0tY292ZXJkaXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5jb3ZlcmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCAnZm9vJykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKQEAgLTIxOCwxMyArMjQ0LDEzIEBACiAgICAgZGVmIHRlc3Rfbm9jb3ZlcmRpcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLU4nLCAnLS1ub2NvdmVyZGlyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShucy5jb3ZlcmRpcikKIAogICAgIGRlZiB0ZXN0X3RocmVzaG9sZChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXQnLCAnLS10aHJlc2hvbGQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMTAwMCddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzEwMDAnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRocmVzaG9sZCwgMTAwMCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIGludCB2YWx1ZScpCkBAIC0yMzIsMTMgKzI1OCwxNiBAQAogICAgIGRlZiB0ZXN0X25vd2luZG93cyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLW4nLCAnLS1ub3dpbmRvd3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyKGlvLlN0cmluZ0lPKCkpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMubm93aW5kb3dzKQorICAgICAgICAgICAgICAgIGVyciA9IHN0ZGVyci5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndGhlIC0tbm93aW5kb3dzICgtbikgb3B0aW9uIGlzIGRlcHJlY2F0ZWQnLCBlcnIpCiAKICAgICBkZWYgdGVzdF9mb3JldmVyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRicsICctLWZvcmV2ZXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mb3JldmVyKQogCiAKQEAgLTI0NiwzMiArMjc1LDMyIEBACiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0teHh4J10sICd1c2FnZTonKQogCiAgICAgZGVmIHRlc3RfbG9uZ19vcHRpb25fX3BhcnRpYWwoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWknXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF90d29fb3B0aW9ucyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnLS1leGNsdWRlJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJy0tZXhjbHVkZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmV4Y2x1ZGUpCiAKICAgICBkZWYgdGVzdF9vcHRpb25fd2l0aF9lbXB0eV9zdHJpbmdfdmFsdWUoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXN0YXJ0JywgJyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zdGFydCcsICcnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zdGFydCwgJycpCiAKICAgICBkZWYgdGVzdF9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWydmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsnZm9vJ10pCiAKICAgICBkZWYgdGVzdF9vcHRpb25fYW5kX2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5hcmdzLCBbJ2ZvbyddKQogCiAgICAgZGVmIHRlc3RfYXJnX29wdGlvbl9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyd0ZXN0X3VuYXJ5b3AnLCAnLXYnLCAndGVzdF9iaW5vcCddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsndGVzdF91bmFyeW9wJywgJy12JywgJ3Rlc3RfYmlub3AnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsndGVzdF91bmFyeW9wJywgJ3Rlc3RfYmlub3AnXSkKIApAQCAtMjgwLDYgKzMwOSw0OTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICd1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAtLXVua25vd24tb3B0aW9uJykKIAogCitjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIFRFU1RfVU5JUVVFX0lEID0gMQorICAgIFRFU1ROQU1FX1BSRUZJWCA9ICd0ZXN0X3JlZ3J0ZXN0XycKKyAgICBURVNUTkFNRV9SRUdFWCA9IHIndGVzdF9bYS16QS1aMC05X10rJworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3RkaXIgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisKKyAgICAgICAgc2VsZi50bXB0ZXN0ZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi50bXB0ZXN0ZGlyKQorCisgICAgZGVmIGNyZWF0ZV90ZXN0KHNlbGYsIG5hbWU9Tm9uZSwgY29kZT0nJyk6CisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgbmFtZSA9ICdub29wJXMnICUgQmFzZVRlc3RDYXNlLlRFU1RfVU5JUVVFX0lECisgICAgICAgICAgICBCYXNlVGVzdENhc2UuVEVTVF9VTklRVUVfSUQgKz0gMQorCisgICAgICAgICMgdGVzdF9yZWdydGVzdCBjYW5ub3QgYmUgcnVuIHR3aWNlIGluIHBhcmFsbGVsIGJlY2F1c2UKKyAgICAgICAgIyBvZiBzZXRVcCgpIGFuZCBjcmVhdGVfdGVzdCgpCisgICAgICAgIG5hbWUgPSBzZWxmLlRFU1ROQU1FX1BSRUZJWCArIG5hbWUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRtcHRlc3RkaXIsIG5hbWUgKyAnLnB5JykKKworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisgICAgICAgICMgVXNlICd4JyBtb2RlIHRvIGVuc3VyZSB0aGF0IHdlIGRvIG5vdCBvdmVycmlkZSBleGlzdGluZyB0ZXN0cworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3gnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBmcC53cml0ZShjb2RlKQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIG5vdCBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHdyaXRlICVzOiAlcyIgJSAocGF0aCwgZXhjKSkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBkZWYgcmVnZXhfc2VhcmNoKHNlbGYsIHJlZ2V4LCBvdXRwdXQpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChyZWdleCwgb3V0cHV0LCByZS5NVUxUSUxJTkUpCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiJXIgbm90IGZvdW5kIGluICVyIiAlIChyZWdleCwgb3V0cHV0KSkKKyAgICAgICAgcmV0dXJuIG1hdGNoCisKKyAgICBkZWYgY2hlY2tfbGluZShzZWxmLCBvdXRwdXQsIHJlZ2V4KToKKyAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHInXicgKyByZWdleCwgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgcGFyc2VfZXhlY3V0ZWRfdGVzdHMoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgcmVnZXggPSAocideWzAtOV0rOlswLTldKzpbMC05XSsgXFsgKlswLTldKyg/Oi8gKlswLTldKyk/XF0gKCVzKScKKyAgICAgICAgICAgICAgICAgJSBzZWxmLlRFU1ROQU1FX1JFR0VYKQorICAgICAgICBwYXJzZXIgPSByZS5maW5kaXRlcihyZWdleCwgb3V0cHV0LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHJldHVybiBsaXN0KG1hdGNoLmdyb3VwKDEpIGZvciBtYXRjaCBpbiBwYXJzZXIpCisKKyAgICBkZWYgY2hlY2tfZXhlY3V0ZWRfdGVzdHMoc2VsZiwgb3V0cHV0LCB0ZXN0cywgc2tpcHBlZD0oKSwgZmFpbGVkPSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWl0dGVkPSgpLCByYW5kb21pemU9RmFsc2UsIGludGVycnVwdGVkPUZhbHNlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXN0cywgc3RyKToKKyAgICAgICAgICAgIHRlc3RzID0gW3Rlc3RzXQorICAgICAgICBpZiBpc2luc3RhbmNlKHNraXBwZWQsIHN0cik6CisgICAgICAgICAgICBza2lwcGVkID0gW3NraXBwZWRdCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmFpbGVkLCBzdHIpOgorICAgICAgICAgICAgZmFpbGVkID0gW2ZhaWxlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShvbWl0dGVkLCBzdHIpOgorICAgICAgICAgICAgb21pdHRlZCA9IFtvbWl0dGVkXQorICAgICAgICBudGVzdCA9IGxlbih0ZXN0cykKKyAgICAgICAgbnNraXBwZWQgPSBsZW4oc2tpcHBlZCkKKyAgICAgICAgbmZhaWxlZCA9IGxlbihmYWlsZWQpCisgICAgICAgIG5vbWl0dGVkID0gbGVuKG9taXR0ZWQpCisKKyAgICAgICAgZXhlY3V0ZWQgPSBzZWxmLnBhcnNlX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCkKKyAgICAgICAgaWYgcmFuZG9taXplOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZXhlY3V0ZWQpLCBzZXQodGVzdHMpLCBvdXRwdXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4ZWN1dGVkLCB0ZXN0cywgb3V0cHV0KQorCisgICAgICAgIGRlZiBwbHVyYWwoY291bnQpOgorICAgICAgICAgICAgcmV0dXJuICdzJyBpZiBjb3VudCAhPSAxIGVsc2UgJycKKworICAgICAgICBkZWYgbGlzdF9yZWdleChsaW5lX2Zvcm1hdCwgdGVzdHMpOgorICAgICAgICAgICAgY291bnQgPSBsZW4odGVzdHMpCisgICAgICAgICAgICBuYW1lcyA9ICcgJy5qb2luKHNvcnRlZCh0ZXN0cykpCisgICAgICAgICAgICByZWdleCA9IGxpbmVfZm9ybWF0ICUgKGNvdW50LCBwbHVyYWwoY291bnQpKQorICAgICAgICAgICAgcmVnZXggPSByJyVzOlxuICAgICVzJCcgJSAocmVnZXgsIG5hbWVzKQorICAgICAgICAgICAgcmV0dXJuIHJlZ2V4CisKKyAgICAgICAgaWYgc2tpcHBlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIHNraXBwZWQnLCBza2lwcGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgZmFpbGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgZmFpbGVkJywgZmFpbGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgb21pdHRlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIG9taXR0ZWQnLCBvbWl0dGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgZ29vZCA9IG50ZXN0IC0gbnNraXBwZWQgLSBuZmFpbGVkIC0gbm9taXR0ZWQKKyAgICAgICAgaWYgZ29vZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gciclcyB0ZXN0JXMgT0tcLiQnICUgKGdvb2QsIHBsdXJhbChnb29kKSkKKyAgICAgICAgICAgIGlmIG5vdCBza2lwcGVkIGFuZCBub3QgZmFpbGVkIGFuZCBnb29kID4gMToKKyAgICAgICAgICAgICAgICByZWdleCA9ICdBbGwgJXMnICUgcmVnZXgKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1Rlc3Qgc3VpdGUgaW50ZXJydXB0ZWQgYnkgc2lnbmFsIFNJR0lOVC4nKQorCisgICAgICAgIGlmIG5mYWlsZWQ6CisgICAgICAgICAgICByZXN1bHQgPSAnRkFJTFVSRScKKyAgICAgICAgZWxpZiBpbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICdJTlRFUlJVUFRFRCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9ICdTVUNDRVNTJworICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnVGVzdHMgcmVzdWx0OiAlcycgJSByZXN1bHQpCisKKyAgICBkZWYgcGFyc2VfcmFuZG9tX3NlZWQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1VzaW5nIHJhbmRvbSBzZWVkIChbMC05XSspJywgb3V0cHV0KQorICAgICAgICByYW5kc2VlZCA9IGludChtYXRjaC5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gcmFuZHNlZWQgPD0gMTAwMDAwMDAsIHJhbmRzZWVkKQorICAgICAgICByZXR1cm4gcmFuZHNlZWQKKworICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdzLCBpbnB1dD1Ob25lLCBleGl0Y29kZT0wLCAqKmt3KToKKyAgICAgICAgaWYgbm90IGlucHV0OgorICAgICAgICAgICAgaW5wdXQgPSAnJworICAgICAgICBpZiAnc3RkZXJyJyBub3QgaW4ga3c6CisgICAgICAgICAgICBrd1snc3RkZXJyJ10gPSBzdWJwcm9jZXNzLlBJUEUKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MucnVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0PWlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3cpCisgICAgICAgIGlmIHByb2MucmV0dXJuY29kZSAhPSBleGl0Y29kZToKKyAgICAgICAgICAgIG1zZyA9ICgiQ29tbWFuZCAlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXNcbiIKKyAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgInN0ZG91dDpcbiIKKyAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgIiVzXG4iCisgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICUgKHN0cihhcmdzKSwgcHJvYy5yZXR1cm5jb2RlLCBwcm9jLnN0ZG91dCkpCisgICAgICAgICAgICBpZiBwcm9jLnN0ZGVycjoKKyAgICAgICAgICAgICAgICBtc2cgKz0gKCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdGRlcnI6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAlIHByb2Muc3RkZXJyKQorICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKKyAgICAgICAgcmV0dXJuIHByb2MKKworCisgICAgZGVmIHJ1bl9weXRob24oc2VsZiwgYXJncywgKiprdyk6CisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctWCcsICdmYXVsdGhhbmRsZXInLCAnLUknLCAqYXJnc10KKyAgICAgICAgcHJvYyA9IHNlbGYucnVuX2NvbW1hbmQoYXJncywgKiprdykKKyAgICAgICAgcmV0dXJuIHByb2Muc3Rkb3V0CisKKworY2xhc3MgUHJvZ3JhbXNUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdmFyaW91cyB3YXlzIHRvIHJ1biB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuIFVzZSBvcHRpb25zIGNsb3NlCisgICAgdG8gb3B0aW9ucyB1c2VkIG9uIHRoZSBidWlsZGJvdC4KKyAgICAiIiIKKworICAgIE5URVNUID0gNAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgICAgICAjIENyZWF0ZSBOVEVTVCB0ZXN0cyBkb2luZyBub3RoaW5nCisgICAgICAgIHNlbGYudGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZShzZWxmLk5URVNUKV0KKworICAgICAgICBzZWxmLnB5dGhvbl9hcmdzID0gWyctV2QnLCAnLUUnLCAnLWJiJ10KKyAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzID0gWyctdWFsbCcsICctcndXJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXRlc3RkaXI9JXMnICUgc2VsZi50bXB0ZXN0ZGlyXQorICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MuZXh0ZW5kKCgnLS10aW1lb3V0JywgJzM2MDAnLCAnLWo0JykpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzLmFwcGVuZCgnLW4nKQorCisgICAgZGVmIGNoZWNrX291dHB1dChzZWxmLCBvdXRwdXQpOgorICAgICAgICBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHNlbGYudGVzdHMsIHJhbmRvbWl6ZT1UcnVlKQorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBhcmdzKToKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fcHl0aG9uKGFyZ3MpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KG91dHB1dCkKKworICAgIGRlZiB0ZXN0X3NjcmlwdF9yZWdydGVzdChzZWxmKToKKyAgICAgICAgIyBMaWIvdGVzdC9yZWdydGVzdC5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAncmVncnRlc3QucHknKQorCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsIHNjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfdGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZWdydGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0LnJlZ3J0ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0LnJlZ3J0ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0LmF1dG90ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0LmF1dG90ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3Rlc3RfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgZnJvbSB0ZXN0IGltcG9ydCBhdXRvdGVzdAorICAgICAgICBjb2RlID0gJ2Zyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QnCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctYycsIGNvZGUsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9zY3JpcHRfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgTGliL3Rlc3QvYXV0b3Rlc3QucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ2F1dG90ZXN0LnB5JykKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncnVuX3Rlc3RzLnB5IHNjcmlwdCBpcyBub3QgaW5zdGFsbGVkJykKKyAgICBkZWYgdGVzdF90b29sc19zY3JpcHRfcnVuX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIFRvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgJ1Rvb2xzJywgJ3NjcmlwdHMnLCAncnVuX3Rlc3RzLnB5JykKKyAgICAgICAgYXJncyA9IFtzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHJ1bl9iYXRjaChzZWxmLCAqYXJncyk6CisgICAgICAgIHByb2MgPSBzZWxmLnJ1bl9jb21tYW5kKGFyZ3MpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHByb2Muc3Rkb3V0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LmJhdCBzY3JpcHQgaXMgbm90IGluc3RhbGxlZCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzIG9ubHknKQorICAgIGRlZiB0ZXN0X3Rvb2xzX2J1aWxkYm90X3Rlc3Qoc2VsZik6CisgICAgICAgICMgVG9vbHNcYnVpbGRib3RcdGVzdC5iYXQKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCAnVG9vbHMnLCAnYnVpbGRib3QnLCAndGVzdC5iYXQnKQorICAgICAgICB0ZXN0X2FyZ3MgPSBbJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXJdCisgICAgICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdID09ICc2NGJpdCc6CisgICAgICAgICAgICB0ZXN0X2FyZ3MuYXBwZW5kKCcteDY0JykgICAjIDY0LWJpdCBidWlsZAorICAgICAgICBpZiBub3QgUHlfREVCVUc6CisgICAgICAgICAgICB0ZXN0X2FyZ3MuYXBwZW5kKCcrZCcpICAgICAjIFJlbGVhc2UgYnVpbGQsIHVzZSBweXRob24uZXhlCisgICAgICAgIHNlbGYucnVuX2JhdGNoKHNjcmlwdCwgKnRlc3RfYXJncywgKnNlbGYudGVzdHMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgJ1dpbmRvd3Mgb25seScpCisgICAgZGVmIHRlc3RfcGNidWlsZF9ydChzZWxmKToKKyAgICAgICAgIyBQQ2J1aWxkXHJ0LmJhdAorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsIHInUENidWlsZFxydC5iYXQnKQorICAgICAgICBydF9hcmdzID0gWyItcSJdICAgICAgICAgICAgICMgUXVpY2ssIGRvbid0IHJ1biB0ZXN0cyB0d2ljZQorICAgICAgICBpZiBwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKVswXSA9PSAnNjRiaXQnOgorICAgICAgICAgICAgcnRfYXJncy5hcHBlbmQoJy14NjQnKSAgICMgNjQtYml0IGJ1aWxkCisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgcnRfYXJncy5hcHBlbmQoJy1kJykgICAgICMgRGVidWcgYnVpbGQsIHVzZSBweXRob25fZC5leGUKKyAgICAgICAgc2VsZi5ydW5fYmF0Y2goc2NyaXB0LCAqcnRfYXJncywgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHMpCisKKworY2xhc3MgQXJnc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBhcmd1bWVudHMgb2YgdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLgorICAgICIiIgorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCAqdGVzdGFyZ3MsICoqa3cpOgorICAgICAgICBjbWRhcmdzID0gWyctbScsICd0ZXN0JywgJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXIsICp0ZXN0YXJnc10KKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX3B5dGhvbihjbWRhcmdzLCAqKmt3KQorCisgICAgZGVmIHRlc3RfZmFpbGluZ190ZXN0KHNlbGYpOgorICAgICAgICAjIHRlc3QgYSBmYWlsaW5nIHRlc3QKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICBjbGFzcyBGYWlsaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfZmFpbGluZyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJidWciKQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3Rfb2sgPSBzZWxmLmNyZWF0ZV90ZXN0KCdvaycpCisgICAgICAgIHRlc3RfZmFpbGluZyA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZhaWxpbmcnLCBjb2RlPWNvZGUpCisgICAgICAgIHRlc3RzID0gW3Rlc3Rfb2ssIHRlc3RfZmFpbGluZ10KKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygqdGVzdHMsIGV4aXRjb2RlPTEpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cywgZmFpbGVkPXRlc3RfZmFpbGluZykKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC11IGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICAgICAgdGVzdHMgPSB7fQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gKCdhdWRpbycsICduZXR3b3JrJyk6CisgICAgICAgICAgICBjb2RlID0gJ2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydFxuc3VwcG9ydC5yZXF1aXJlcyglciknICUgcmVzb3VyY2UKKyAgICAgICAgICAgIHRlc3RzW3Jlc291cmNlXSA9IHNlbGYuY3JlYXRlX3Rlc3QocmVzb3VyY2UsIGNvZGUpCisgICAgICAgIHRlc3RfbmFtZXMgPSBzb3J0ZWQodGVzdHMudmFsdWVzKCkpCisKKyAgICAgICAgIyAtdSBhbGw6IDIgcmVzb3VyY2VzIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11JywgJ2FsbCcsICp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcykKKworICAgICAgICAjIC11IGF1ZGlvOiAxIHJlc291cmNlIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11YXVkaW8nLCAqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZD10ZXN0c1snbmV0d29yayddKQorCisgICAgICAgICMgbm8gb3B0aW9uOiAwIHJlc291cmNlcyBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkPXRlc3RfbmFtZXMpCisKKyAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CisgICAgICAgICMgdGVzdCAtciBhbmQgLS1yYW5kc2VlZCBjb21tYW5kIGxpbmUgb3B0aW9uCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgcmFuZG9tCisgICAgICAgICAgICBwcmludCgiVEVTVFJBTkRPTTogJXMiICUgcmFuZG9tLnJhbmRpbnQoMSwgMTAwMCkpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3JhbmRvbScsIGNvZGUpCisKKyAgICAgICAgIyBmaXJzdCBydW4gdG8gZ2V0IHRoZSBvdXRwdXQgd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgdGVzdCkKKyAgICAgICAgcmFuZHNlZWQgPSBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbSA9IGludChtYXRjaC5ncm91cCgxKSkKKworICAgICAgICAjIHRyeSB0byByZXByb2R1Y2Ugd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgJy0tcmFuZHNlZWQ9JXMnICUgcmFuZHNlZWQsIHRlc3QpCisgICAgICAgIHJhbmRzZWVkMiA9IHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmRzZWVkMiwgcmFuZHNlZWQpCisKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbTIgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9yYW5kb20yLCB0ZXN0X3JhbmRvbSkKKworICAgIGRlZiB0ZXN0X2Zyb21maWxlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1mcm9tZmlsZQorICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKDUpXQorCisgICAgICAgICMgV3JpdGUgdGhlIGxpc3Qgb2YgZmlsZXMgdXNpbmcgYSBmb3JtYXQgc2ltaWxhciB0byByZWdydGVzdCBvdXRwdXQ6CisgICAgICAgICMgWzEvMl0gdGVzdF8xCisgICAgICAgICMgWzIvMl0gdGVzdF8yCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICcwOjAwOjAwIFsyLzddIHRlc3Rfb3Bjb2RlcyAtLSB0ZXN0X2dyYW1tYXIgdG9vayAwIHNlYycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKKyAgICAgICAgICAgICAgICBsaW5lID0gKCIwMDowMDolMDJpIFslcy8lc10gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAlIChpbmRleCwgaW5kZXgsIGxlbih0ZXN0cyksIG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzOgorICAgICAgICAgICAgICAgICAgICBsaW5lICs9ICIgLS0gJXMgdG9vayAwIHNlYyIgJSBwcmV2aW91cworICAgICAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZnApCisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBuYW1lCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJ1syLzddIHRlc3Rfb3Bjb2RlcycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZSh0ZXN0cywgMSk6CisgICAgICAgICAgICAgICAgcHJpbnQoIlslcy8lc10gJXMiICUgKGluZGV4LCBsZW4odGVzdHMpLCBuYW1lKSwgZmlsZT1mcCkKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAndGVzdF9vcGNvZGVzJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICBwcmludChuYW1lLCBmaWxlPWZwKQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgIGRlZiB0ZXN0X2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICBjb2RlID0gVEVTVF9JTlRFUlJVUFRFRAorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnc2lnaW50JywgY29kZT1jb2RlKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cyh0ZXN0LCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwgb21pdHRlZD10ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zbG93ZXN0KHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1zbG93ZXN0CisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2UoMyldCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCItLXNsb3dlc3QiLCAqdGVzdHMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKyAgICAgICAgcmVnZXggPSAoJzEwIHNsb3dlc3QgdGVzdHM6XG4nCisgICAgICAgICAgICAgICAgICcoPzotICVzOiAuKlxuKXslc30nCisgICAgICAgICAgICAgICAgICUgKHNlbGYuVEVTVE5BTUVfUkVHRVgsIGxlbih0ZXN0cykpKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X3Nsb3dfaW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1MzczOiB0ZXN0IC0tc2xvd2VzdCB3aXRoIGFuIGludGVycnVwdGVkIHRlc3QKKyAgICAgICAgY29kZSA9IFRFU1RfSU5URVJSVVBURUQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoInNpZ2ludCIsIGNvZGU9Y29kZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICB0ZXN0cyA9IChGYWxzZSwgVHJ1ZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgdGVzdHMgPSAoRmFsc2UsKQorICAgICAgICBmb3IgbXVsdGlwcm9jZXNzaW5nIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoIi0tc2xvd2VzdCIsICItajIiLCB0ZXN0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCB0ZXN0KQorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKmFyZ3MsIGV4aXRjb2RlPTEpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZD10ZXN0LCBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1jb3ZlcmFnZQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnY292ZXJhZ2UnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1jb3ZlcmFnZSIsIHRlc3QpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0pCisgICAgICAgIHJlZ2V4ID0gKHInbGluZXMgK2NvdiUgK21vZHVsZSArXChwYXRoXClcbicKKyAgICAgICAgICAgICAgICAgcicoPzogKlswLTldKyAqWzAtOV17MSwyfSUgKlteIF0rICtcKFteKV0rXCkrKSsnKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CisgICAgICAgICMgdGVzdCAtLXdhaXQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3dhaXQnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS13YWl0IiwgdGVzdCwgaW5wdXQ9J2tleScpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlJykKKworICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZvcmV2ZXIKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIEZvcmV2ZXJUZXN0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgIyBTdG9yZSB0aGUgc3RhdGUgaW4gdGhlIGJ1aWx0aW5zIG1vZHVsZSwgYmVjYXVzZSB0aGUgdGVzdAorICAgICAgICAgICAgICAgICAgICAjIG1vZHVsZSBpcyByZWxvYWQgYXQgZWFjaCBydW4KKyAgICAgICAgICAgICAgICAgICAgaWYgJ1JVTicgaW4gYnVpbHRpbnMuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddID49IDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJmYWlsIGF0IHRoZSAzcmQgcnVucyIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gPSAxCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZvcmV2ZXInLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZvcmV2ZXInLCB0ZXN0LCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKjMsIGZhaWxlZD10ZXN0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoUHlfREVCVUcsICduZWVkIGEgZGVidWcgYnVpbGQnKQorICAgIGRlZiB0ZXN0X2h1bnRybGVha3NfZmRfbGVhayhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0taHVudHJsZWFrcyBmb3IgZmlsZSBkZXNjcmlwdG9yIGxlYWsKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgICMgSXNzdWUgIzI1MzA2OiBEaXNhYmxlIHBvcHVwcyBhbmQgbG9ncyB0byBzdGRlcnIgb24gYXNzZXJ0aW9uCisgICAgICAgICAgICAjIGZhaWx1cmVzIGluIE1TQ1JUCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgIyBubyBXaW5kb3dzLCBvIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgMCkKKworICAgICAgICAgICAgY2xhc3MgRkRMZWFrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbGVhayhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgICAgICAgICAgIyBidWc6IG5ldmVyIGNsb2VzIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnaHVudHJsZWFrcycsIGNvZGU9Y29kZSkKKworICAgICAgICBmaWxlbmFtZSA9ICdyZWZsb2cudHh0JworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1odW50cmxlYWtzJywgJzM6MzonLCB0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0Y29kZT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0sIGZhaWxlZD10ZXN0KQorCisgICAgICAgIGxpbmUgPSAnYmVnaW5uaW5nIDYgcmVwZXRpdGlvbnNcbjEyMzQ1NlxuLi4uLi4uXG4nCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlLmVzY2FwZShsaW5lKSkKKworICAgICAgICBsaW5lMiA9ICclcyBsZWFrZWQgWzEsIDEsIDFdIGZpbGUgZGVzY3JpcHRvcnMsIHN1bT0zXG4nICUgdGVzdAorICAgICAgICBzZWxmLmFzc2VydEluKGxpbmUyLCBvdXRwdXQpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJlZmxvZyA9IGZwLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihsaW5lMiwgcmVmbG9nKQorCisgICAgZGVmIHRlc3RfbGlzdF90ZXN0cyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tbGlzdC10ZXN0cworICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGkgaW4gcmFuZ2UoNSldCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWxpc3QtdGVzdHMnLCAqdGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IDE1ODJjYWEuLjU4NzI5YTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTI1Myw2ICsyNTMsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgIT0gYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPCBiKQogCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IE5vbmUsIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiBOb25lIDwgNDIsIHIiJzwnIC4qIG9mICdOb25lVHlwZScgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA+IE5vbmUsIHIiJz4nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiAiZm9vIiA8IE5vbmUsIHIiJzwnIC4qIG9mICdzdHInIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiAiZm9vIiA+PSA2NjYsIHIiJz49JyAuKiBvZiAnc3RyJyBhbmQgJ2ludCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDw9IE5vbmUsIHIiJzw9JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPj0gTm9uZSwgciInPj0nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IFtdLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ2xpc3QnIiksCisgICAgICAgICAgICAobGFtYmRhOiAoKSA+IFtdLCByIic+JyAuKiBvZiAndHVwbGUnIGFuZCAnbGlzdCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IE5vbmUgPj0gTm9uZSwgciInPj0nIC4qIG9mICdOb25lVHlwZScgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IFNwYW0oKSA8IDQyLCByIic8JyAuKiBvZiAnU3BhbScgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IFNwYW0oKSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdTcGFtJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogU3BhbSgpIDw9IFNwYW0oKSwgciInPD0nIC4qIG9mICdTcGFtJyBhbmQgJ1NwYW0nIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGksIHRlc3QgaW4gZW51bWVyYXRlKHRlc3RzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHRlc3Q9aSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgdGVzdFsxXSk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RbMF0oKQorCisKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2RpY3RzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weSBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKaW5kZXggODUzZTc3My4uMGRjMTA4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CkBAIC0xLDExICsxLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB1bml0dGVzdC5tb2NrCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBybGNvbXBsZXRlcgogCiBjbGFzcyBDb21wbGV0ZU1lOgogICAgICIiIiBUcml2aWFsIGNsYXNzIHVzZWQgaW4gdGVzdGluZyBybGNvbXBsZXRlci5Db21wbGV0ZXIuICIiIgogICAgIHNwYW0gPSAxCisgICAgX2hhbSA9IDIKIAogCiBjbGFzcyBUZXN0Umxjb21wbGV0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTIsMTggKzUzLDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgWydzdHIue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygndHVwbGUuZm9vc3BhbWVnZycpLCBbXSkKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQoeydOb25lLiVzJXMnICUgKHgsICcoJyBpZiB4ICE9ICdfX2RvY19fJyBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZGlyKE5vbmUpfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuJyksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS5fJyksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS5fXycpLCBleHBlY3RlZCkKIAogICAgICAgICAjIHRlc3Qgd2l0aCBhIGN1c3RvbWl6ZWQgbmFtZXNwYWNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLnNwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLnNwYW0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlbWUuZWdnJyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubXJvKCcsICdDb21wbGV0ZU1lLnNwYW0nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuXycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5faGFtJ10pCisgICAgICAgIG1hdGNoZXMgPSBzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuX18nKQorICAgICAgICBmb3IgeCBpbiBtYXRjaGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguc3RhcnRzd2l0aCgnQ29tcGxldGVNZS5fXycpLCB4KQorICAgICAgICBzZWxmLmFzc2VydEluKCdDb21wbGV0ZU1lLl9fbmFtZV9fJywgbWF0Y2hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQ29tcGxldGVNZS5fX25ld19fKCcsIG1hdGNoZXMpCiAKLSAgICAgICAgQ29tcGxldGVNZS5tZSA9IENvbXBsZXRlTWUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUubWUubWUuc3AnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubWUubWUuc3BhbSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnZWdnLnMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2VnZy57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCisgICAgICAgIHdpdGggcGF0Y2gub2JqZWN0KENvbXBsZXRlTWUsICJtZSIsIENvbXBsZXRlTWUsIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLm1lLm1lLnNwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5tZS5tZS5zcGFtJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnZWdnLnMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydlZ2cue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKIAogICAgIGRlZiB0ZXN0X2V4Y2Vzc2l2ZV9nZXRhdHRyKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSBnZXRhdHRyKCkgaXMgaW52b2tlZCBubyBtb3JlIHRoYW4gb25jZSBwZXIgYXR0cmlidXRlCkBAIC03OCwxNCArOTMsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2YuYicsIDApLCAnZi5iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuY2FsbHMsIDEpCiAKKyAgICBkZWYgdGVzdF91bmNyZWF0ZWRfYXR0cihzZWxmKToKKyAgICAgICAgIyBBdHRyaWJ1dGVzIGxpa2UgcHJvcGVydGllcyBhbmQgc2xvdHMgc2hvdWxkIGJlIGNvbXBsZXRlZCBldmVuIHdoZW4KKyAgICAgICAgIyB0aGV5IGhhdmVuJ3QgYmVlbiBjcmVhdGVkIG9uIGFuIGluc3RhbmNlCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgiYmFyIiwpCisgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcihkaWN0KGY9Rm9vKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZi4nLCAwKSwgJ2YuYmFyJykKKwogICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdybGNvbXBsZXRlci5fcmVhZGxpbmVfYXZhaWxhYmxlJywgRmFsc2UpCiAgICAgZGVmIHRlc3RfY29tcGxldGUoc2VsZik6CiAgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCcnLCAwKSwgJ1x0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAwKSwgJ2FuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMSksICdhcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhcycsIDIpLCAnYXNzZXJ0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FuJywgMCksICdhbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDApLCAnYW5kICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMSksICdhcyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXMnLCAyKSwgJ2Fzc2VydCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYW4nLCAwKSwgJ2FuZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgncGEnLCAwKSwgJ3Bhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnRmEnLCAwKSwgJ0ZhbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2VsJywgMCksICdlbGlmICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdlbCcsIDEpLCAnZWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCd0cicsIDApLCAndHJ5OicpCiAKICAgICBkZWYgdGVzdF9kdXBsaWNhdGVfZ2xvYmFscyhzZWxmKToKICAgICAgICAgbmFtZXNwYWNlID0gewpAQCAtOTgsOSArMTI2LDEwIEBACiAgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcihuYW1lc3BhY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdGYWxzZScsIDApLCAnRmFsc2UnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ0ZhbHNlJywgMSkpICAjIE5vIGR1cGxpY2F0ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDApLCAnYXNzZXJ0JykKKyAgICAgICAgIyBTcGFjZSBvciBjb2xvbiBhZGRlZCBkdWUgdG8gYmVpbmcgYSByZXNlcnZlZCBrZXl3b3JkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAwKSwgJ2Fzc2VydCAnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMCksICd0cnknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMCksICd0cnk6JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCd0cnknLCAxKSkKICAgICAgICAgIyBObyBvcGVuaW5nIGJyYWNrZXQgIigiIGJlY2F1c2Ugd2Ugb3ZlcnJvZGUgdGhlIGJ1aWx0LWluIGNsYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdtZW1vcnl2aWV3JywgMCksICdtZW1vcnl2aWV3JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CmluZGV4IGQwMTI2NmYuLjBmNjRiYTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1cmxsaWIucm9ib3RwYXJzZXIKLWZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvciwgSFRUUEVycm9yCi1mcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIEhUVFBTZXJ2ZXIKIHRyeToKQEAgLTExLDI0NiArMTEsMjM5IEBACiAgICAgdGhyZWFkaW5nID0gTm9uZQogCiAKLWNsYXNzIFJvYm90VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleD1Ob25lLCBwYXJzZXI9Tm9uZSwgdXJsPU5vbmUsIGdvb2Q9Tm9uZSwgYWdlbnQ9Tm9uZSk6Ci0gICAgICAgICMgd29ya2Fyb3VuZCB0byBtYWtlIHVuaXR0ZXN0IGRpc2NvdmVyeSB3b3JrIChzZWUgIzE3MDY2KQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpbmRleCwgaW50KToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmKQotICAgICAgICBpZiBnb29kOgotICAgICAgICAgICAgc2VsZi5zdHIgPSAiUm9ib3RUZXN0KCVkLCBnb29kLCAlcykiICUgKGluZGV4LCB1cmwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnN0ciA9ICJSb2JvdFRlc3QoJWQsIGJhZCwgJXMpIiAlIChpbmRleCwgdXJsKQotICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcgotICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICBzZWxmLmdvb2QgPSBnb29kCi0gICAgICAgIHNlbGYuYWdlbnQgPSBhZ2VudAorY2xhc3MgQmFzZVJvYm90VGVzdDoKKyAgICByb2JvdHNfdHh0ID0gJycKKyAgICBhZ2VudCA9ICd0ZXN0X3JvYm90cGFyc2VyJworICAgIGdvb2QgPSBbXQorICAgIGJhZCA9IFtdCiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnVybCwgdHVwbGUpOgotICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYudXJsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1cmwgPSBzZWxmLnVybAotICAgICAgICAgICAgYWdlbnQgPSBzZWxmLmFnZW50Ci0gICAgICAgIGlmIHNlbGYuZ29vZDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGxpbmVzID0gaW8uU3RyaW5nSU8oc2VsZi5yb2JvdHNfdHh0KS5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLnBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoKQorICAgICAgICBzZWxmLnBhcnNlci5wYXJzZShsaW5lcykKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zdHIKKyAgICBkZWYgZ2V0X2FnZW50X2FuZF91cmwoc2VsZiwgdXJsKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh1cmwsIHR1cGxlKToKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSB1cmwKKyAgICAgICAgICAgIHJldHVybiBhZ2VudCwgdXJsCisgICAgICAgIHJldHVybiBzZWxmLmFnZW50LCB1cmwKIAotdGVzdHMgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGRlZiB0ZXN0X2dvb2RfdXJscyhzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2Q6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKIAotZGVmIFJvYm90VGVzdChpbmRleCwgcm9ib3RzX3R4dCwgZ29vZF91cmxzLCBiYWRfdXJscywKLSAgICAgICAgICAgICAgYWdlbnQ9InRlc3Rfcm9ib3RwYXJzZXIiKToKKyAgICBkZWYgdGVzdF9iYWRfdXJscyhzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmJhZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKIAotICAgIGxpbmVzID0gaW8uU3RyaW5nSU8ocm9ib3RzX3R4dCkucmVhZGxpbmVzKCkKLSAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKLSAgICBwYXJzZXIucGFyc2UobGluZXMpCi0gICAgZm9yIHVybCBpbiBnb29kX3VybHM6Ci0gICAgICAgIHRlc3RzLmFkZFRlc3QoUm9ib3RUZXN0Q2FzZShpbmRleCwgcGFyc2VyLCB1cmwsIDEsIGFnZW50KSkKLSAgICBmb3IgdXJsIGluIGJhZF91cmxzOgotICAgICAgICB0ZXN0cy5hZGRUZXN0KFJvYm90VGVzdENhc2UoaW5kZXgsIHBhcnNlciwgdXJsLCAwLCBhZ2VudCkpCiAKLSMgRXhhbXBsZXMgZnJvbSBodHRwOi8vd3d3LnJvYm90c3R4dC5vcmcvd2Mvbm9yb2JvdHMuaHRtbCAoZmV0Y2hlZCAyMDAyKQotCi0jIDEuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudFdpbGRjYXJkVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvY3liZXJ3b3JsZC9tYXAvICMgVGhpcyBpcyBhbiBpbmZpbml0ZSB2aXJ0dWFsIFVSTCBzcGFjZQogRGlzYWxsb3c6IC90bXAvICMgdGhlc2Ugd2lsbCBzb29uIGRpc2FwcGVhcgogRGlzYWxsb3c6IC9mb28uaHRtbAotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJ10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywgJy90bXAveHh4JywgJy9mb28uaHRtbCddCiAKLWdvb2QgPSBbJy8nLCcvdGVzdC5odG1sJ10KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCcvdG1wL3h4eCcsJy9mb28uaHRtbCddCiAKLVJvYm90VGVzdCgxLCBkb2MsIGdvb2QsIGJhZCkKLQotIyAyLgotZG9jID0gIiIiCitjbGFzcyBDcmF3bERlbGF5QW5kQ3VzdG9tQWdlbnRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogIyByb2JvdHMudHh0IGZvciBodHRwOi8vd3d3LmV4YW1wbGUuY29tLwogCiBVc2VyLWFnZW50OiAqCitDcmF3bC1kZWxheTogMQorUmVxdWVzdC1yYXRlOiAzLzE1CiBEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKIAogIyBDeWJlcm1hcHBlciBrbm93cyB3aGVyZSB0byBnby4KIFVzZXItYWdlbnQ6IGN5YmVybWFwcGVyCiBEaXNhbGxvdzoKKyAgICAiIiIKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnLCAoJ2N5YmVybWFwcGVyJywgJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJyldCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCddCiAKLSIiIgogCi1nb29kID0gWycvJywnL3Rlc3QuaHRtbCcsKCdjeWJlcm1hcHBlcicsJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJyldCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KLQotUm9ib3RUZXN0KDIsIGRvYywgZ29vZCwgYmFkKQotCi0jIDMuCi1kb2MgPSAiIiIKK2NsYXNzIFJlamVjdEFsbFJvYm90c1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiAjIGdvIGF3YXkKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gW10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywgJy8nLCAnL3RtcC8nXQogCi1nb29kID0gW10KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCcvJywnL3RtcC8nXQogCi1Sb2JvdFRlc3QoMywgZG9jLCBnb29kLCBiYWQpCitjbGFzcyBCYXNlUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QpOgogCi0jIEV4YW1wbGVzIGZyb20gaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL3djL25vcm9ib3RzLXJmYy5odG1sIChmZXRjaGVkIDIwMDIpCisgICAgZGVmIHRlc3RfcmVxdWVzdF9yYXRlKHNlbGYpOgorICAgICAgICBmb3IgdXJsIGluIHNlbGYuZ29vZCArIHNlbGYuYmFkOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY3Jhd2xfZGVsYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5jcmF3bF9kZWxheShhZ2VudCksIHNlbGYuY3Jhd2xfZGVsYXkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIHNlbGYucmVxdWVzdF9yYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIucmVxdWVzdF9yYXRlKGFnZW50KS5yZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdF9yYXRlLnJlcXVlc3RzCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZShhZ2VudCkuc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdF9yYXRlLnNlY29uZHMKKyAgICAgICAgICAgICAgICAgICAgKQogCi0jIDQuCi1kb2MgPSAiIiIKKworY2xhc3MgQ3Jhd2xEZWxheUFuZFJlcXVlc3RSYXRlVGVzdChCYXNlUmVxdWVzdFJhdGVUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IGZpZ3RyZWUKK0NyYXdsLWRlbGF5OiAzCitSZXF1ZXN0LXJhdGU6IDkvMzAKIERpc2FsbG93OiAvdG1wCiBEaXNhbGxvdzogL2ElM2NkLmh0bWwKIERpc2FsbG93OiAvYSUyZmIuaHRtbAogRGlzYWxsb3c6IC8lN2Vqb2UvaW5kZXguaHRtbAotIiIiCisgICAgIiIiCisgICAgYWdlbnQgPSAnZmlndHJlZScKKyAgICByZXF1ZXN0X3JhdGUgPSBuYW1lZHR1cGxlKCdyZXFfcmF0ZScsICdyZXF1ZXN0cyBzZWNvbmRzJykoOSwgMzApCisgICAgY3Jhd2xfZGVsYXkgPSAzCisgICAgZ29vZCA9IFsoJ2ZpZ3RyZWUnLCAnL2Zvby5odG1sJyldCisgICAgYmFkID0gWycvdG1wJywgJy90bXAuaHRtbCcsICcvdG1wL2EuaHRtbCcsICcvYSUzY2QuaHRtbCcsICcvYSUzQ2QuaHRtbCcsCisgICAgICAgICAgICcvYSUyZmIuaHRtbCcsICcvfmpvZS9pbmRleC5odG1sJ10KIAotZ29vZCA9IFtdICMgWEZBSUwgJy9hL2IuaHRtbCcKLWJhZCA9IFsnL3RtcCcsJy90bXAuaHRtbCcsJy90bXAvYS5odG1sJywKLSAgICAgICAnL2ElM2NkLmh0bWwnLCcvYSUzQ2QuaHRtbCcsJy9hJTJmYi5odG1sJywKLSAgICAgICAnL35qb2UvaW5kZXguaHRtbCcKLSAgICAgICBdCiAKLVJvYm90VGVzdCg0LCBkb2MsIGdvb2QsIGJhZCwgJ2ZpZ3RyZWUnKQotUm9ib3RUZXN0KDUsIGRvYywgZ29vZCwgYmFkLCAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JykKK2NsYXNzIERpZmZlcmVudEFnZW50VGVzdChDcmF3bERlbGF5QW5kUmVxdWVzdFJhdGVUZXN0KToKKyAgICBhZ2VudCA9ICdGaWdUcmVlIFJvYm90IGxpYnd3dy1wZXJsLzUuMDQnCisgICAgIyB0aGVzZSBhcmUgbm90IGFjdHVhbGx5IHRlc3RlZCwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gcGFyc2UgaXQKKyAgICAjIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIHRoZSBpbnB1dCBwYXJhbWV0ZXJzCisgICAgcmVxdWVzdF9yYXRlID0gTm9uZQorICAgIGNyYXdsX2RlbGF5ID0gTm9uZQogCi0jIDYuCi1kb2MgPSAiIiIKKworY2xhc3MgSW52YWxpZFJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvdG1wLwogRGlzYWxsb3c6IC9hJTNDZC5odG1sCiBEaXNhbGxvdzogL2EvYi5odG1sCiBEaXNhbGxvdzogLyU3ZWpvZS9pbmRleC5odG1sCi0iIiIKK0NyYXdsLWRlbGF5OiAzCitSZXF1ZXN0LXJhdGU6IDkvYmFuYW5hCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3RtcCddCisgICAgYmFkID0gWycvdG1wLycsICcvdG1wL2EuaHRtbCcsICcvYSUzY2QuaHRtbCcsICcvYSUzQ2QuaHRtbCcsICcvYS9iLmh0bWwnLAorICAgICAgICAgICAnLyU3RWpvZS9pbmRleC5odG1sJ10KKyAgICBjcmF3bF9kZWxheSA9IDMKIAotZ29vZCA9IFsnL3RtcCcsXSAjIFhGQUlMOiAnL2ElMmZiLmh0bWwnCi1iYWQgPSBbJy90bXAvJywnL3RtcC9hLmh0bWwnLAotICAgICAgICcvYSUzY2QuaHRtbCcsJy9hJTNDZC5odG1sJywiL2EvYi5odG1sIiwKLSAgICAgICAnLyU3RWpvZS9pbmRleC5odG1sJ10KIAotUm9ib3RUZXN0KDYsIGRvYywgZ29vZCwgYmFkKQotCi0jIEZyb20gYnVnIHJlcG9ydCAjNTIzMDQxCi0KLSMgNy4KLWRvYyA9ICIiIgorY2xhc3MgSW52YWxpZENyYXdsRGVsYXlUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEZyb20gYnVnIHJlcG9ydCAjNTIzMDQxCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItQWdlbnQ6ICoKIERpc2FsbG93OiAvLgotIiIiCitDcmF3bC1kZWxheTogcGVhcnMKKyAgICAiIiIKKyAgICBnb29kID0gWycvZm9vLmh0bWwnXQorICAgICMgYnVnIHJlcG9ydCBzYXlzICIvIiBzaG91bGQgYmUgZGVuaWVkLCBidXQgdGhhdCBpcyBub3QgaW4gdGhlIFJGQworICAgIGJhZCA9IFtdCiAKLWdvb2QgPSBbJy9mb28uaHRtbCddCi1iYWQgPSBbXSAjIEJ1ZyByZXBvcnQgc2F5cyAiLyIgc2hvdWxkIGJlIGRlbmllZCwgYnV0IHRoYXQgaXMgbm90IGluIHRoZSBSRkMKIAotUm9ib3RUZXN0KDcsIGRvYywgZ29vZCwgYmFkKQotCi0jIEZyb20gR29vZ2xlOiBodHRwOi8vd3d3Lmdvb2dsZS5jb20vc3VwcG9ydC93ZWJtYXN0ZXJzL2Jpbi9hbnN3ZXIucHk/aGw9ZW4mYW5zd2VyPTQwMzY0Ci0KLSMgOC4KLWRvYyA9ICIiIgorY2xhc3MgQW5vdGhlckludmFsaWRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgYWxzbyB0ZXN0IHRoYXQgQWxsb3cgYW5kIERpYXNhbGxvdyB3b3JrcyB3ZWxsIHdpdGggZWFjaCBvdGhlcgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIEFsbG93OiAvZm9sZGVyMS9teWZpbGUuaHRtbAogRGlzYWxsb3c6IC9mb2xkZXIxLwotIiIiCitSZXF1ZXN0LXJhdGU6IHdoYWxlL2JhbmFuYQorICAgICIiIgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdCcKKyAgICBnb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCisgICAgYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAotZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQotYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAotUm9ib3RUZXN0KDgsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotIyA5LiAgVGhpcyBmaWxlIGlzIGluY29ycmVjdCBiZWNhdXNlICJHb29nbGVib3QiIGlzIGEgc3Vic3RyaW5nIG9mCi0jICAgICAiR29vZ2xlYm90LU1vYmlsZSIsIHNvIHRlc3QgMTAgd29ya3MganVzdCBsaWtlIHRlc3QgOS4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50T3JkZXJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRoZSBvcmRlciBvZiBVc2VyLWFnZW50IHNob3VsZCBiZSBjb3JyZWN0LiBub3RlCisgICAgIyB0aGF0IHRoaXMgZmlsZSBpcyBpbmNvcnJlY3QgYmVjYXVzZSAiR29vZ2xlYm90IiBpcyBhCisgICAgIyBzdWJzdHJpbmcgb2YgIkdvb2dsZWJvdC1Nb2JpbGUiCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogRGlzYWxsb3c6IC8KIAogVXNlci1hZ2VudDogR29vZ2xlYm90LU1vYmlsZQogQWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoOSwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTAsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90LU1vYmlsZSIpCi0KLSMgMTEuICBHZXQgdGhlIG9yZGVyIGNvcnJlY3QuCi1kb2MgPSAiIiIKLVVzZXItYWdlbnQ6IEdvb2dsZWJvdC1Nb2JpbGUKLUFsbG93OiAvCi0KLVVzZXItYWdlbnQ6IEdvb2dsZWJvdAotRGlzYWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTEsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotZ29vZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotYmFkID0gW10KLQotUm9ib3RUZXN0KDEyLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdC1Nb2JpbGUiKQorICAgICIiIgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdCcKKyAgICBiYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KIAogCi0jIDEzLiAgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZyBpbiAjOC4gIFlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlCi0jICAgICAgVVJMcyBmcm9tIG1vcmUgc3BlY2lmaWMgdG8gbW9yZSBnZW5lcmFsLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRHb29nbGVNb2JpbGVUZXN0KFVzZXJBZ2VudE9yZGVyaW5nVGVzdCk6CisgICAgYWdlbnQgPSAnR29vZ2xlYm90LU1vYmlsZScKKworCitjbGFzcyBHb29nbGVVUkxPcmRlcmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZy4gWW91IG5lZWQKKyAgICAjIHRvIHNwZWNpZnkgdGhlIFVSTHMgZnJvbSBtb3JlIHNwZWNpZmljIHRvIG1vcmUgZ2VuZXJhbAorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIEFsbG93OiAvZm9sZGVyMS9teWZpbGUuaHRtbAogRGlzYWxsb3c6IC9mb2xkZXIxLwotIiIiCi0KLWdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KLWJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCi0KLVJvYm90VGVzdCgxMywgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJnb29nbGVib3QiKQorICAgICIiIgorICAgIGFnZW50ID0gJ2dvb2dsZWJvdCcKKyAgICBnb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCisgICAgYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAogCi0jIDE0LiBGb3IgaXNzdWUgIzYzMjUgKHF1ZXJ5IHN0cmluZyBzdXBwb3J0KQotZG9jID0gIiIiCitjbGFzcyBEaXNhbGxvd1F1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBzZWUgaXNzdWUgIzYzMjUgZm9yIGRldGFpbHMKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9zb21lL3BhdGg/bmFtZT12YWx1ZQotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aCddCisgICAgYmFkID0gWycvc29tZS9wYXRoP25hbWU9dmFsdWUnXQogCi1nb29kID0gWycvc29tZS9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aD9uYW1lPXZhbHVlJ10KIAotUm9ib3RUZXN0KDE0LCBkb2MsIGdvb2QsIGJhZCkKLQotIyAxNS4gRm9yIGlzc3VlICM0MTA4IChvYmV5IGZpcnN0ICogZW50cnkpCi1kb2MgPSAiIiIKK2NsYXNzIFVzZUZpcnN0VXNlckFnZW50V2lsZGNhcmRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIG9iZXkgZmlyc3QgKiBlbnRyeSAoIzQxMDgpCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvc29tZS9wYXRoCiAKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvYW5vdGhlci9wYXRoCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvYW5vdGhlci9wYXRoJ10KKyAgICBiYWQgPSBbJy9zb21lL3BhdGgnXQogCi1nb29kID0gWycvYW5vdGhlci9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aCddCiAKLVJvYm90VGVzdCgxNSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMTYuIEVtcHR5IHF1ZXJ5IChpc3N1ZSAjMTc0MDMpLiBOb3JtYWxpemluZyB0aGUgdXJsIGZpcnN0LgotZG9jID0gIiIiCitjbGFzcyBFbXB0eVF1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBub3JtYWxpemUgdGhlIFVSTCBmaXJzdCAoIzE3NDAzKQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBBbGxvdzogL3NvbWUvcGF0aD8KIERpc2FsbG93OiAvYW5vdGhlci9wYXRoPwotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQorICAgIGJhZCA9IFsnL2Fub3RoZXIvcGF0aD8nXQogCi1nb29kID0gWycvc29tZS9wYXRoPyddCi1iYWQgPSBbJy9hbm90aGVyL3BhdGg/J10KIAotUm9ib3RUZXN0KDE2LCBkb2MsIGdvb2QsIGJhZCkKK2NsYXNzIERlZmF1bHRFbnRyeVRlc3QoQmFzZVJlcXVlc3RSYXRlVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCitVc2VyLWFnZW50OiAqCitDcmF3bC1kZWxheTogMQorUmVxdWVzdC1yYXRlOiAzLzE1CitEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLworICAgICIiIgorICAgIHJlcXVlc3RfcmF0ZSA9IG5hbWVkdHVwbGUoJ3JlcV9yYXRlJywgJ3JlcXVlc3RzIHNlY29uZHMnKSgzLCAxNSkKKyAgICBjcmF3bF9kZWxheSA9IDEKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQogCiAKIGNsYXNzIFJvYm90SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTI4Myw5ICsyNzYsNyBAQAogICAgICAgICBzZWxmLnQuam9pbigpCiAgICAgICAgIHNlbGYuc2VydmVyLnNlcnZlcl9jbG9zZSgpCiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgc2VsZi50ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKCkKLQorICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKHNlbGYpOgogICAgICAgICBhZGRyID0gc2VsZi5zZXJ2ZXIuc2VydmVyX2FkZHJlc3MKICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgc3VwcG9ydC5IT1NUICsgJzonICsgc3RyKGFkZHJbMV0pCkBAIC0yOTUsMjYgKzI4Niw0NyBAQAogICAgICAgICBwYXJzZXIucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmNhbl9mZXRjaCgiKiIsIHJvYm90c191cmwpKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnJXMnICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KIAogY2xhc3MgTmV0d29ya1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIEB1bml0dGVzdC5za2lwKCdkb2VzIG5vdCBoYW5kbGUgdGhlIGd6aXAgZW5jb2RpbmcgZGVsaXZlcmVkIGJ5IHB5ZG90b3JnJykKLSAgICBkZWYgdGVzdFB5dGhvbk9yZyhzZWxmKToKLSAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoJ3d3dy5weXRob24ub3JnJyk6Ci0gICAgICAgICAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKAotICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpCi0gICAgICAgICAgICBwYXJzZXIucmVhZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoCi0gICAgICAgICAgICAgICAgcGFyc2VyLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpKQorICAgIGJhc2VfdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvJworICAgIHJvYm90c190eHQgPSAne31lbHNld2hlcmUvcm9ib3RzLnR4dCcuZm9ybWF0KGJhc2VfdXJsKQogCi1kZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHN1aXRlLCBwYXR0ZXJuKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShOZXR3b3JrVGVzdENhc2UpCi0gICAgc3VpdGUuYWRkVGVzdCh0ZXN0cykKLSAgICBzdWl0ZS5hZGRUZXN0KFBhc3N3b3JkUHJvdGVjdGVkU2l0ZVRlc3RDYXNlKCkpCi0gICAgcmV0dXJuIHN1aXRlCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoY2xzLmJhc2VfdXJsKToKKyAgICAgICAgICAgIGNscy5wYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKGNscy5yb2JvdHNfdHh0KQorICAgICAgICAgICAgY2xzLnBhcnNlci5yZWFkKCkKKworICAgIGRlZiB1cmwoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiAne317fXt9Jy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmJhc2VfdXJsLCBwYXRoLCAnLycgaWYgbm90IG9zLnBhdGguc3BsaXRleHQocGF0aClbMV0gZWxzZSAnJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2VsZi5wYXJzZXIubXRpbWUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jcmF3bF9kZWxheSgnKicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZSgnKicpKQorCisgICAgZGVmIHRlc3RfY2FuX2ZldGNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCcqJywgc2VsZi51cmwoJ2Vsc2V3aGVyZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi5iYXNlX3VybCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCdicmlhbicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi51cmwoJ3dlYnN0YXRzJykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYuYmFzZV91cmwpKQorCisgICAgZGVmIHRlc3RfcmVhZF80MDQoc2VsZik6CisgICAgICAgIHBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoc2VsZi51cmwoJ2ktcm9ib3QudHh0JykpCisgICAgICAgIHBhcnNlci5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhcnNlci5hbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmRpc2FsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIubXRpbWUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmNyYXdsX2RlbGF5KCcqJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5yZXF1ZXN0X3JhdGUoJyonKSkKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCBkYjU1ZGI3Li4wMmI0ZDYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTU3NywxMyArNTc3LDE0IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLl9kZWxfcGtnLCBwa2dfZGlyKQogICAgICAgICBmb3IgZGVwdGggaW4gcmFuZ2UoMiwgbWF4X2RlcHRoKzEpOgogICAgICAgICAgICAgc2VsZi5fYWRkX3JlbGF0aXZlX21vZHVsZXMocGtnX2RpciwgIiIsIGRlcHRoKQotICAgICAgICBmb3IgZmluZGVyLCBtb2RfbmFtZSwgaXNwa2cgaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZGVyLAorICAgICAgICBmb3IgbW9kdWxlaW5mbyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLCBwa2d1dGlsLk1vZHVsZUluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mby5tb2R1bGVfZmluZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcikKLSAgICAgICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgICAgIGlmIG1vZHVsZWluZm8uaXNwa2c6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kdWxlaW5mby5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9wYWNrYWdlcyksIDAsIGV4cGVjdGVkX3BhY2thZ2VzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9tb2R1bGVzKSwgMCwgZXhwZWN0ZWRfbW9kdWxlcykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKaW5kZXggZmU4ZTc4NS4uZjg2ZjU5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IHNjaGVkCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkgYi9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM2NWNmMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VjcmV0cy5weQpAQCAtMCwwICsxLDEyMyBAQAorIiIiVGVzdCB0aGUgc2VjcmV0cyBtb2R1bGUuCisKK0FzIG1vc3Qgb2YgdGhlIGZ1bmN0aW9ucyBpbiBzZWNyZXRzIGFyZSB0aGluIHdyYXBwZXJzIGFyb3VuZCBmdW5jdGlvbnMKK2RlZmluZWQgZWxzZXdoZXJlLCB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlbSBleGhhdXN0aXZlbHkuCisiIiIKKworCitpbXBvcnQgc2VjcmV0cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3RyaW5nCisKKworIyA9PT0gVW5pdCB0ZXN0cyA9PT0KKworY2xhc3MgQ29tcGFyZV9EaWdlc3RfVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3Qgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29tcGFyZV9kaWdlc3QgZnVuY3Rpb25hbGl0eSB3aXRoIGVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIGZvciBzIGluICgiYSIsICJiY2QiLCAieHl6MTIzIik6CisgICAgICAgICAgICBhID0gcyoxMDAKKyAgICAgICAgICAgIGIgPSBzKjEwMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChhLmVuY29kZSgndXRmLTgnKSwgYi5lbmNvZGUoJ3V0Zi04JykpKQorCisgICAgZGVmIHRlc3RfdW5lcXVhbChzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aCB1bmVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiY2QiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGIiYWJjIiwgYiJhYmNkIikpCisgICAgICAgIGZvciBzIGluICgieCIsICJtbiIsICJhMWIyYzMiKToKKyAgICAgICAgICAgIGEgPSBzKjEwMCArICJxIgorICAgICAgICAgICAgYiA9IHMqMTAwICsgImsiCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYS5lbmNvZGUoJ3V0Zi04JyksIGIuZW5jb2RlKCd1dGYtOCcpKSkKKworICAgIGRlZiB0ZXN0X2JhZF90eXBlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY29tcGFyZV9kaWdlc3QgcmFpc2VzIHdpdGggbWl4ZWQgdHlwZXMuCisgICAgICAgIGEgPSAnYWJjZGUnCisgICAgICAgIGIgPSBhLmVuY29kZSgndXRmLTgnKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGIsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlY3JldHMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCwgYiwgYSkKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvbXBhcmVfZGlnZXN0IHJldHVybnMgYSBib29sLgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiYyIpLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgInh5eiIpLCBib29sKQorCisKK2NsYXNzIFJhbmRvbV9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB3cmFwcGVycyBhcm91bmQgU3lzdGVtUmFuZG9tIG1ldGhvZHMuIiIiCisKKyAgICBkZWYgdGVzdF9yYW5kYml0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiaXRzLgorICAgICAgICBlcnJtc2cgPSAicmFuZGJpdHMoJWQpIHJldHVybmVkICVkIgorICAgICAgICBmb3IgbnVtYml0cyBpbiAoMywgMTIsIDMwKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDYpOgorICAgICAgICAgICAgICAgIG4gPSBzZWNyZXRzLnJhbmRiaXRzKG51bWJpdHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gbiA8IDIqKm51bWJpdHMsIGVycm1zZyAlIChudW1iaXRzLCBuKSkKKworICAgIGRlZiB0ZXN0X2Nob2ljZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGNob2ljZS4KKyAgICAgICAgaXRlbXMgPSBbMSwgMiwgNCwgOCwgMTYsIDMyLCA2NF0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY2hvaWNlKGl0ZW1zKSBpbiBpdGVtcykKKworICAgIGRlZiB0ZXN0X3JhbmRiZWxvdyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiZWxvdy4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMiwgMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWNyZXRzLnJhbmRiZWxvdyhpKSwgcmFuZ2UoaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlY3JldHMucmFuZGJlbG93LCAwKQorCisKK2NsYXNzIFRva2VuX1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRva2VuIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiB0ZXN0X3Rva2VuX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0b2tlbl8qIGZ1bmN0aW9ucyBoYW5kbGUgZGVmYXVsdCBzaXplIGNvcnJlY3RseS4KKyAgICAgICAgZm9yIGZ1bmMgaW4gKHNlY3JldHMudG9rZW5fYnl0ZXMsIHNlY3JldHMudG9rZW5faGV4LAorICAgICAgICAgICAgICAgICAgICAgc2VjcmV0cy50b2tlbl91cmxzYWZlKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYyk6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50IiAlIG5hbWUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKE5vbmUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggTm9uZSIgJSBuYW1lKQorICAgICAgICBzaXplID0gc2VjcmV0cy5ERUZBVUxUX0VOVFJPUFkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhOb25lKSksIHNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5faGV4KE5vbmUpKSwgMipzaXplKQorCisgICAgZGVmIHRlc3RfdG9rZW5fYnl0ZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9ieXRlcy4KKyAgICAgICAgZm9yIG4gaW4gKDEsIDgsIDE3LCAxMDApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy50b2tlbl9ieXRlcyhuKSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhuKSksIG4pCisKKyAgICBkZWYgdGVzdF90b2tlbl9oZXgoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9oZXguCisgICAgICAgIGZvciBuIGluICgxLCAxMiwgMjUsIDkwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgcyA9IHNlY3JldHMudG9rZW5faGV4KG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHMsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMipuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBzdHJpbmcuaGV4ZGlnaXRzIGZvciBjIGluIHMpKQorCisgICAgZGVmIHRlc3RfdG9rZW5fdXJsc2FmZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRva2VuX3VybHNhZmUuCisgICAgICAgIGxlZ2FsID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJy1fJworICAgICAgICBmb3IgbiBpbiAoMSwgMTEsIDI4LCA3Nik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHMgPSBzZWNyZXRzLnRva2VuX3VybHNhZmUobikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uocywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBsZWdhbCBmb3IgYyBpbiBzKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NldC5weQppbmRleCA3NTk0MzAzLi5hZmE2ZTdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NldC5weQpAQCAtNiwxMCArNiwxMSBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgc3RyaW5nCiAKIGNsYXNzIFBhc3NUaHJ1KEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNzI5LDYgKzczMCwyOCBAQAogICAgICAgICAgICAgYWRkaGFzaHZhbHVlKGhhc2goZnJvemVuc2V0KFtlIGZvciBlLCBtIGluIGVsZW1tYXNrcyBpZiBtJmldKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhhc2h2YWx1ZXMpLCAyKipuKQogCisgICAgICAgIGRlZiBsZXR0ZXJfcmFuZ2Uobik6CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLmFzY2lpX2xldHRlcnNbOm5dCisKKyAgICAgICAgZGVmIHpmX3JhbmdlKG4pOgorICAgICAgICAgICAgIyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXQtdGhlb3JldGljX2RlZmluaXRpb25fb2ZfbmF0dXJhbF9udW1iZXJzCisgICAgICAgICAgICBudW1zID0gW2Zyb3plbnNldCgpXQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobi0xKToKKyAgICAgICAgICAgICAgICBudW0gPSBmcm96ZW5zZXQobnVtcykKKyAgICAgICAgICAgICAgICBudW1zLmFwcGVuZChudW0pCisgICAgICAgICAgICByZXR1cm4gbnVtc1s6bl0KKworICAgICAgICBkZWYgcG93ZXJzZXQocyk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocykrMSk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBtYXAoZnJvemVuc2V0LCBpdGVydG9vbHMuY29tYmluYXRpb25zKHMsIGkpKQorCisgICAgICAgIGZvciBuIGluIHJhbmdlKDE4KToKKyAgICAgICAgICAgIHQgPSAyICoqIG4KKyAgICAgICAgICAgIG1hc2sgPSB0IC0gMQorICAgICAgICAgICAgZm9yIG51bXMgaW4gKHJhbmdlLCBsZXR0ZXJfcmFuZ2UsIHpmX3JhbmdlKToKKyAgICAgICAgICAgICAgICB1ID0gbGVuKHtoICYgbWFzayBmb3IgaCBpbiBtYXAoaGFzaCwgcG93ZXJzZXQobnVtcyhuKSkpfSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoNCp1LCB0KQorCiBjbGFzcyBGcm96ZW5TZXRTdWJjbGFzcyhmcm96ZW5zZXQpOgogICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKaW5kZXggNTViNTMzZC4uMzkzNmM5NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0xNzMsMTYgKzE3MywxMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiAlcyAhPSAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kYXRhW2ldWzBdLCBsLCBzZWxmLmRhdGFbaV1bMTpdKSkKIAorICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRBbXBlcnNhbmRBbmRQaXBlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgJiwgfCIiIgorICAgICAgICAjIENvdWxkIHRha2UgdGhlc2UgZm9ybXM6ICYmLCAmLCB8JiwgOyYsIDs7JgorICAgICAgICAjIG9mIGNvdXJzZSwgdGhlIHNhbWUgYXBwbGllcyB0byB8IGFuZCB8fAorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCcmJicsICcmJywgJ3wmJywgJzsmJywgJzs7JicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd8fCcsICd8JywgJyZ8JywgJzt8JywgJzs7fCcpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzZWNobyBieWUnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnZWNobycsICdieWUnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRTZW1pY29sb24oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiA7IiIiCisgICAgICAgICMgQ291bGQgdGFrZSB0aGVzZSBmb3JtczogOywgOzssIDsmLCA7OyYKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnOycsICc7OycsICc7JicsICc7OyYnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc2VjaG8gYnllJyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ2VjaG8nLCAnYnllJ10KKyAgICAgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0UmVkaXJlY3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiA+IiIiCisgICAgICAgICMgb2YgY291cnNlLCB0aGUgc2FtZSBhcHBsaWVzIHRvIDwsIHwKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnPCcsICd8Jyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgb3V0JyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzIG91dCcgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc291dCcgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdvdXQnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRQYXJlbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mICgpIiIiCisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgc3JjID0gWycoIGVjaG8gaGkgKScsCisgICAgICAgICAgICAgICAnKGVjaG8gaGkpJ10KKyAgICAgICAgcmVmID0gWycoJywgJ2VjaG8nLCAnaGknLCAnKSddCisgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0Q3VzdG9tKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgd2l0aCBjdXN0b20gY2hhcnMiIiIKKyAgICAgICAgcmVmID0gWyd+L2EnLCAnJicsICcmJywgJ2ItYycsICctLWNvbG9yPWF1dG8nLCAnfHwnLCAnZCcsICcqLnB5PyddCisgICAgICAgIHNzID0gIn4vYSAmJiBiLWMgLS1jb2xvcj1hdXRvIHx8IGQgKi5weT8iCisgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9InwiKQorICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0VG9rZW5UeXBlcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHRva2VucyBhcmUgc3BsaXQgd2l0aCB0eXBlcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgZm9yIHNvdXJjZSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EgJiYgYiB8fCBjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLCAnYScpLCAoJyYmJywgJ2MnKSwgKCdiJywgJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3x8JywgJ2MnKSwgKCdjJywgJ2EnKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzb3VyY2UsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICBvYnNlcnZlZCA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHQgPSBzLmdldF90b2tlbigpCisgICAgICAgICAgICAgICAgaWYgdCA9PSBzLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiB0WzBdIGluIHMucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHR0ID0gJ2MnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHQgPSAnYScKKyAgICAgICAgICAgICAgICBvYnNlcnZlZC5hcHBlbmQoKHQsIHR0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzZXJ2ZWQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RQdW5jdHVhdGlvbkluV29yZENoYXJzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYW55IHB1bmN0dWF0aW9uIGNoYXJzIGFyZSByZW1vdmVkIGZyb20gd29yZGNoYXJzIiIiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYV9iX19jJywgcHVuY3R1YXRpb25fY2hhcnM9J18nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdfJywgcy53b3JkY2hhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJ18nLCAnYicsICdfXycsICdjJ10pCisKKyAgICBkZWYgdGVzdFB1bmN0dWF0aW9uV2l0aFdoaXRlc3BhY2VTcGxpdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHdpdGggd2hpdGVzcGFjZV9zcGxpdCwgYmVoYXZpb3VyIGlzIGFzIGV4cGVjdGVkIiIiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYSAgJiYgYiAgfHwgIGMnLCBwdW5jdHVhdGlvbl9jaGFycz0nJicpCisgICAgICAgICMgd2hpdGVzcGFjZV9zcGxpdCBpcyBGYWxzZSwgc28gc3BsaXR0aW5nIHdpbGwgYmUgYmFzZWQgb24KKyAgICAgICAgIyBwdW5jdHVhdGlvbl9jaGFycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICcmJicsICdiJywgJ3wnLCAnfCcsICdjJ10pCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYSAgJiYgYiAgfHwgIGMnLCBwdW5jdHVhdGlvbl9jaGFycz0nJicpCisgICAgICAgIHMud2hpdGVzcGFjZV9zcGxpdCA9IFRydWUKKyAgICAgICAgIyB3aGl0ZXNwYWNlX3NwbGl0IGlzIFRydWUsIHNvIHNwbGl0dGluZyB3aWxsIGJlIGJhc2VkIG9uCisgICAgICAgICMgd2hpdGUgc3BhY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnJiYnLCAnYicsICd8fCcsICdjJ10pCisKICAgICBkZWYgdGVzdEVtcHR5U3RyaW5nSGFuZGxpbmcoc2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhhdCBwYXJzaW5nIG9mIGVtcHR5IHN0cmluZ3MgaXMgY29ycmVjdGx5IGhhbmRsZWQuIiIiCiAgICAgICAgICMgc2VlIElzc3VlICMyMTk5OQogICAgICAgICBleHBlY3RlZCA9IFsnJywgJyknLCAnYWJjJ10KLQotICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHBvc2l4PVRydWUpCi0gICAgICAgIHNsaXN0ID0gbGlzdChzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaXN0LCBleHBlY3RlZCkKKyAgICAgICAgZm9yIHB1bmN0IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHBvc2l4PVRydWUsIHB1bmN0dWF0aW9uX2NoYXJzPXB1bmN0KQorICAgICAgICAgICAgc2xpc3QgPSBsaXN0KHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaXN0LCBleHBlY3RlZCkKICAgICAgICAgZXhwZWN0ZWQgPSBbIicnIiwgJyknLCAnYWJjJ10KLSAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiKQorICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdFF1b3RlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCAxZTY1YTJhLi5kOTNlZmI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtMTMyLDkgKzEzMiw3IEBACiAgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHZpY3RpbSwgJ3NvbWVmaWxlJyksICdmb28nKQogICAgICAgICB2aWN0aW0gPSBvcy5mc2VuY29kZSh2aWN0aW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2aWN0aW0sIGJ5dGVzKQotICAgICAgICB3aW4gPSAob3MubmFtZSA9PSAnbnQnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBpZiB3aW4gZWxzZSBFeGl0U3RhY2soKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodmljdGltKQorICAgICAgICBzaHV0aWwucm10cmVlKHZpY3RpbSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9ybXRyZWVfZmFpbHNfb25fc3ltbGluayhzZWxmKToKQEAgLTEzMTksMTAgKzEzMTcsMTAgQEAKICAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKLSAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlcj0nbm9uLWV4aXNpbmcgdXNlcm5hbWUnKQorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc3RpbmcgdXNlcm5hbWUnKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD0nbm9uLWV4aXNpbmcgZ3JvdXBuYW1lJykKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzdGluZyBncm91cG5hbWUnKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgYidzcGFtJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKaW5kZXggMWI4MGZmMC4uYWI0MmVkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKQEAgLTIyLDI5ICsyMiw2IEBACiAgICAgX3Rlc3RjYXBpID0gTm9uZQogCiAKLWNsYXNzIEhhbmRsZXJCQ2FsbGVkKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWRlZiBleGl0X3N1YnByb2Nlc3MoKToKLSAgICAiIiJVc2Ugb3MuX2V4aXQoMCkgdG8gZXhpdCB0aGUgY3VycmVudCBzdWJwcm9jZXNzLgotCi0gICAgT3RoZXJ3aXNlLCB0aGUgdGVzdCBjYXRjaGVzIHRoZSBTeXN0ZW1FeGl0IGFuZCBjb250aW51ZXMgZXhlY3V0aW5nCi0gICAgaW4gcGFyYWxsZWwgd2l0aCB0aGUgb3JpZ2luYWwgdGVzdCwgc28geW91IHdpbmQgdXAgd2l0aCBhbgotICAgIGV4cG9uZW50aWFsIG51bWJlciBvZiB0ZXN0cyBydW5uaW5nIGNvbmN1cnJlbnRseS4KLSAgICAiIiIKLSAgICBvcy5fZXhpdCgwKQotCi0KLWRlZiBpZ25vcmluZ19laW50cihfX2Z1bmMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gX19mdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCiBjbGFzcyBHZW5lcmljVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRlc3QgbmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCkBAIC02MywxNDUgKzQwLDYgQEAKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQotY2xhc3MgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIE1BWF9EVVJBVElPTiA9IDIwICAgIyBFbnRpcmUgdGVzdCBzaG91bGQgbGFzdCBhdCBtb3N0IDIwIHNlYy4KLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi51c2luZ19nYyA9IGdjLmlzZW5hYmxlZCgpCi0gICAgICAgIGdjLmRpc2FibGUoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnVzaW5nX2djOgotICAgICAgICAgICAgZ2MuZW5hYmxlKCkKLQotICAgIGRlZiBmb3JtYXRfZnJhbWUoc2VsZiwgZnJhbWUsIGxpbWl0PU5vbmUpOgotICAgICAgICByZXR1cm4gJycuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKGZyYW1lLCBsaW1pdD1saW1pdCkpCi0KLSAgICBkZWYgaGFuZGxlckEoc2VsZiwgc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuYV9jYWxsZWQgPSBUcnVlCi0KLSAgICBkZWYgaGFuZGxlckIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBUcnVlCi0gICAgICAgIHJhaXNlIEhhbmRsZXJCQ2FsbGVkKHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUpKQotCi0gICAgZGVmIHdhaXQoc2VsZiwgY2hpbGQpOgotICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCB0byBmaW5pc2gsIGlnbm9yaW5nIEVJTlRSLiIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNoaWxkLndhaXQoKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHJ1bl90ZXN0KHNlbGYpOgotICAgICAgICAjIEluc3RhbGwgaGFuZGxlcnMuIFRoaXMgZnVuY3Rpb24gcnVucyBpbiBhIHN1Yi1wcm9jZXNzLCBzbyB3ZQotICAgICAgICAjIGRvbid0IHdvcnJ5IGFib3V0IHJlLXNldHRpbmcgdGhlIGRlZmF1bHQgaGFuZGxlcnMuCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2VsZi5oYW5kbGVyQSkKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgc2VsZi5oYW5kbGVyQikKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMiwgc2lnbmFsLlNJR19JR04pCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNpZ25hbC5kZWZhdWx0X2ludF9oYW5kbGVyKQotCi0gICAgICAgICMgVmFyaWFibGVzIHRoZSBzaWduYWxzIHdpbGwgbW9kaWZ5OgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5iX2NhbGxlZCA9IEZhbHNlCi0KLSAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgotICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQotCi0gICAgICAgIGNoaWxkID0gaWdub3JpbmdfZWludHIoc3VicHJvY2Vzcy5Qb3BlbiwgWydraWxsJywgJy1IVVAnLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuYV9jYWxsZWQ6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmFfY2FsbGVkKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgIHNlbGYuYV9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTWFrZSBzdXJlIHRoZSBzaWduYWwgaXNuJ3QgZGVsaXZlcmVkIHdoaWxlIHRoZSBwcmV2aW91cwotICAgICAgICAjIFBvcGVuIG9iamVjdCBpcyBiZWluZyBkZXN0cm95ZWQsIGJlY2F1c2UgX19kZWxfXyBzd2FsbG93cwotICAgICAgICAjIGV4Y2VwdGlvbnMuCi0gICAgICAgIGRlbCBjaGlsZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGlsZCA9IHN1YnByb2Nlc3MuUG9wZW4oWydraWxsJywgJy1VU1IxJywgc3RyKHBpZCldKQotICAgICAgICAgICAgIyBUaGlzIHdhaXQgc2hvdWxkIGJlIGludGVycnVwdGVkIGJ5IHRoZSBzaWduYWwncyBleGNlcHRpb24uCi0gICAgICAgICAgICBzZWxmLndhaXQoY2hpbGQpCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpICAjIEdpdmUgdGhlIHNpZ25hbCB0aW1lIHRvIGJlIGRlbGl2ZXJlZC4KLSAgICAgICAgICAgIHNlbGYuZmFpbCgnSGFuZGxlckJDYWxsZWQgZXhjZXB0aW9uIG5vdCByYWlzZWQnKQotICAgICAgICBleGNlcHQgSGFuZGxlckJDYWxsZWQ6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iX2NhbGxlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hX2NhbGxlZCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctVVNSMicsIHN0cihwaWQpXSkKLSAgICAgICAgaWYgY2hpbGQ6Ci0gICAgICAgICAgICBzZWxmLndhaXQoY2hpbGQpICAjIE5vdGhpbmcgc2hvdWxkIGhhcHBlbi4KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICMgVGhlIHJhY2UgY29uZGl0aW9uIGluIHBhdXNlIGRvZXNuJ3QgbWF0dGVyIGluIHRoaXMgY2FzZSwKLSAgICAgICAgICAgICMgc2luY2UgYWxhcm0gaXMgZ29pbmcgdG8gcmFpc2UgYSBLZXlib2FyZEV4Y2VwdGlvbiwgd2hpY2gKLSAgICAgICAgICAgICMgd2lsbCBza2lwIHRoZSBjYWxsLgotICAgICAgICAgICAgc2lnbmFsLnBhdXNlKCkKLSAgICAgICAgICAgICMgQnV0IGlmIGFub3RoZXIgc2lnbmFsIGFycml2ZXMgYmVmb3JlIHRoZSBhbGFybSwgcGF1c2UKLSAgICAgICAgICAgICMgbWF5IHJldHVybiBlYXJseS4KLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlNvbWUgb3RoZXIgZXhjZXB0aW9uIHdva2UgdXMgZnJvbSBwYXVzZTogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJwYXVzZSByZXR1cm5lZCBvZiBpdHMgb3duIGFjY29yZCwgYW5kIHRoZSBzaWduYWwiCi0gICAgICAgICAgICAgICAgICAgICAgIiBkaWRuJ3QgYXJyaXZlIGFmdGVyIGFub3RoZXIgc2Vjb25kLiIpCi0KLSAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCi0gICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKLSAgICAgICAgJ29uIGZyZWVic2Q2JykKLSAgICBkZWYgdGVzdF9tYWluKHNlbGYpOgotICAgICAgICAjIFRoaXMgZnVuY3Rpb24gc3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB0byBpbnN1bGF0ZSB0aGUgbWFpbgotICAgICAgICAjIHRlc3QtcnVubmluZyBwcm9jZXNzIGZyb20gYWxsIHRoZSBzaWduYWxzLiBJdCB0aGVuCi0gICAgICAgICMgY29tbXVuaWNhdGVzIHdpdGggdGhhdCBjaGlsZCBwcm9jZXNzIG92ZXIgYSBwaXBlIGFuZAotICAgICAgICAjIHJlLXJhaXNlcyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgZXhjZXB0aW9ucyB0aGUgY2hpbGQKLSAgICAgICAgIyByYWlzZXMuIFRoZSByZWFsIHdvcmsgaGFwcGVucyBpbiBzZWxmLnJ1bl90ZXN0KCkuCi0gICAgICAgIG9zX2RvbmVfciwgb3NfZG9uZV93ID0gb3MucGlwZSgpCi0gICAgICAgIHdpdGggY2xvc2luZyhvcy5mZG9wZW4ob3NfZG9uZV9yLCAncmInKSkgYXMgZG9uZV9yLCBcCi0gICAgICAgICAgICAgY2xvc2luZyhvcy5mZG9wZW4ob3NfZG9uZV93LCAnd2InKSkgYXMgZG9uZV93OgotICAgICAgICAgICAgY2hpbGQgPSBvcy5mb3JrKCkKLSAgICAgICAgICAgIGlmIGNoaWxkID09IDA6Ci0gICAgICAgICAgICAgICAgIyBJbiB0aGUgY2hpbGQgcHJvY2VzczsgcnVuIHRoZSB0ZXN0IGFuZCByZXBvcnQgcmVzdWx0cwotICAgICAgICAgICAgICAgICMgdGhyb3VnaCB0aGUgcGlwZS4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRvbmVfci5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICMgSGF2ZSB0byBjbG9zZSBkb25lX3cgYWdhaW4gaGVyZSBiZWNhdXNlCi0gICAgICAgICAgICAgICAgICAgICMgZXhpdF9zdWJwcm9jZXNzKCkgd2lsbCBza2lwIHRoZSBlbmNsb3Npbmcgd2l0aCBibG9jay4KLSAgICAgICAgICAgICAgICAgICAgd2l0aCBjbG9zaW5nKGRvbmVfdyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5fdGVzdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAodHJhY2ViYWNrLmZvcm1hdF9leGMoKSwgZG9uZV93KQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcChOb25lLCBkb25lX3cpCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBwcmludCgnVWggb2gsIHJhaXNlZCBmcm9tIHBpY2tsZS4nKQotICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBleGl0X3N1YnByb2Nlc3MoKQotCi0gICAgICAgICAgICBkb25lX3cuY2xvc2UoKQotICAgICAgICAgICAgIyBCbG9jayBmb3IgdXAgdG8gTUFYX0RVUkFUSU9OIHNlY29uZHMgZm9yIHRoZSB0ZXN0IHRvIGZpbmlzaC4KLSAgICAgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtkb25lX3JdLCBbXSwgW10sIHNlbGYuTUFYX0RVUkFUSU9OKQotICAgICAgICAgICAgaWYgZG9uZV9yIGluIHI6Ci0gICAgICAgICAgICAgICAgdGIgPSBwaWNrbGUubG9hZChkb25lX3IpCi0gICAgICAgICAgICAgICAgaWYgdGI6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCh0YikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3Mua2lsbChjaGlsZCwgc2lnbmFsLlNJR0tJTEwpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdUZXN0IGRlYWRsb2NrZWQgYWZ0ZXIgJWQgc2Vjb25kcy4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5NQVhfRFVSQVRJT04pCi0KLQotQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFBvc2l4VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0cml2aWFsX3NpZ25hbF9oYW5kbGVyKHNlbGYsICphcmdzKToKICAgICAgICAgcGFzcwpAQCAtMjI0LDYgKzYyLDE1IEBACiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgaHVwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0hVUCksIGh1cCkKIAorICAgICMgSXNzdWUgMzg2NCwgdW5rbm93biBpZiB0aGlzIGFmZmVjdHMgZWFybGllciB2ZXJzaW9ucyBvZiBmcmVlYnNkIGFsc28KKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybT09J2ZyZWVic2Q2JywKKyAgICAgICAgJ2ludGVyIHByb2Nlc3Mgc2lnbmFscyBub3QgcmVsaWFibGUgKGRvIG5vdCBtaXggd2VsbCB3aXRoIHRocmVhZGluZykgJworICAgICAgICAnb24gZnJlZWJzZDYnKQorICAgIGRlZiB0ZXN0X2ludGVycHJvY2Vzc19zaWduYWwoc2VsZik6CisgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5JykKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vayhzY3JpcHQpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIHNwZWNpZmljIikKIGNsYXNzIFdpbmRvd3NTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKaW5kZXggZGEyMGEzZC4uZDJmYmI3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQpAQCAtNzUsNyArNzUsNyBAQAogICAgIGRlZiB0ZXN0X2luaXRfcGF0aGluZm8oc2VsZik6CiAgICAgICAgIGRpcl9zZXQgPSBzaXRlLl9pbml0X3BhdGhpbmZvKCkKICAgICAgICAgZm9yIGVudHJ5IGluIFtzaXRlLm1ha2VwYXRoKHBhdGgpWzFdIGZvciBwYXRoIGluIHN5cy5wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggYW5kIG9zLnBhdGguZXhpc3RzKHBhdGgpXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZW50cnksIGRpcl9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmcm9tIHN5cy5wYXRoIG5vdCBmb3VuZCBpbiBzZXQgcmV0dXJuZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgX2luaXRfcGF0aGluZm8oKTogJXMiICUgKGVudHJ5LCBkaXJfc2V0KSkKQEAgLTEzOCwxMCArMTM4LDggQEAKICAgICAgICAgICAgIHJlLmVzY2FwZShvcy5wYXRoLmpvaW4ocHRoX2RpciwgcHRoX2ZuKSkpCiAgICAgICAgICMgWFhYOiBkaXR0byBwcmV2aW91cyBYWFggY29tbWVudC4KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdUcmFjZWJhY2snKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ0ltcG9ydEVycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdNb2R1bGVOb3RGb3VuZEVycm9yJykKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIGRvZXMgbm90IHJhaXNlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgZm9yIGZpbGUgcGF0aHMgY29udGFpbmluZyBudWxsIGNoYXJhY3RlcnMiKQogICAgIGRlZiB0ZXN0X2FkZHBhY2thZ2VfaW1wb3J0X2JhZF9wdGhfZmlsZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSA1MjU4CiAgICAgICAgIHB0aF9kaXIsIHB0aF9mbiA9IHNlbGYubWFrZV9wdGgoImFiY1x4MDBkZWZcbiIpCkBAIC0yNDMsMTMgKzI0MSwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJy9MaWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCiAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICMgT1MgWCBub24tZnJhbXdld29yayBidWlsZHMsIExpbnV4LCBGcmVlQlNELCBldGMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQogICAgICAgICBlbHNlOgpAQCAtNDQ2LDEwICs0NDUsOSBAQAogICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLXYnLCAnLWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBwcmludChzZXQoc3lzLm1vZHVsZXMpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHN0ZG91dCA9IHN0ZG91dC5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RkZXJyID0gc3RkZXJyLmRlY29kZSgndXRmLTgnKQogICAgICAgICBtb2R1bGVzID0gZXZhbChzdGRvdXQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRJbignc2l0ZScsIG1vZHVsZXMpCkBAIC00NjksNyArNDY3LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVhcHEnLCAnaXRlcnRvb2xzJywgJ2tleXdvcmQnLCAnb3BlcmF0b3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcHJsaWInLCAndHlwZXMnLCAnd2Vha3JlZicKICAgICAgICAgICAgICAgICAgICAgICAgICAgfS5kaWZmZXJlbmNlKHN5cy5idWlsdGluX21vZHVsZV9uYW1lcykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGVzLmludGVyc2VjdGlvbihjb2xsZWN0aW9uX21vZHMpLCBzdGRlcnIpCisgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI4MDk1CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorCisgICAgZGVmIHRlc3Rfc3RhcnR1cF9pbnRlcmFjdGl2ZWhvb2soc2VsZik6CisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBzaXRlIikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rX2lzb2xhdGVkKHNlbGYpOgorICAgICAgICAjIGlzc3VlMjgxOTIgcmVhZGxpbmUgaXMgbm90IGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpbiBpc29sYXRlZCBtb2RlCisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBhZGRlZCBpbiBpc29sYXRlZCBtb2RlIikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rX2lzb2xhdGVkX2V4cGxpY2l0KHNlbGYpOgorICAgICAgICAjIGlzc3VlMjgxOTIgcmVhZGxpbmUgY2FuIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiBpc29sYXRlZCBtb2RlCisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc2l0ZSwgc3lzOyBzaXRlLmVuYWJsZXJsY29tcGxldGVyKCk7IHN5cy5leGl0KGhhc2F0dHIoc3lzLCAiX19pbnRlcmFjdGl2ZWhvb2tfXyIpKSddKS53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgbm90IGFkZGVkIGJ5IGVuYWJsZXJsY29tcGxldGVyKCkiKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA4OGRiZmRmLi4zZWViZTk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTUzLDEwICs1Myw2IEBACiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgd3JpdGVfbGluZSwgYidzcGFtXHJcbi5cclxuJykKIAotICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCi0KICAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9hbmRfZW5hYmxlX1NNVFBVVEY4X3JhaXNlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBWYWx1ZUVycm9yLApAQCAtMTA4LDEwICsxMDQsOSBAQAogICAgICAgICAgICAgICIiIikpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKICAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nKQogICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKQEAgLTE3NSwxMyArMTcwLDExIEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjYoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUNikKIAogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUKQogCiAKQEAgLTIwNCwxOCArMTk3LDE4IEBACiAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCiAgICAgZGVmIHRlc3RfcGFyYW1zX3JlamVjdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+IGZvbz1iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCiAKICAgICBkZWYgdGVzdF9ub3RoaW5nX2FjY2VwdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+JykKQEAgLTI1Nyw5ICsyNTAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICBkZWYgdGVzdF93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIGZvciBsaW5lIGluIFsKICAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4JywKQEAgLTc2NSwxMyArNzU4LDYgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKLSAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQotICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCiBjbGFzcyBTTVRQRENoYW5uZWxJUHY2VGVzdChTTVRQRENoYW5uZWxUZXN0KToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC04NDUsMTIgKzgzMSw5IEBACiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQotICAgICAgICAjIFNldCBkZWNvZGVfZGF0YSB0byBGYWxzZQotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKLSAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC0xMDE1LDUgKzk5OCwxNiBAQAogICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndGVzdFxyXG4uJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geworICAgICAgICAgICAgInByb2dyYW0iLCAiRGV2bnVsbCIsICJERUJVR1NUUkVBTSIsICJORVdMSU5FIiwgIkNPTU1BU1BBQ0UiLAorICAgICAgICAgICAgIkRBVEFfU0laRV9ERUZBVUxUIiwgInVzYWdlIiwgIk9wdGlvbnMiLCAicGFyc2VhcmdzIiwKKworICAgICAgICB9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHNtdHBkLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IGNjZTdkNTIuLmE1NmQ4YTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0xMyw3ICsxMyw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBhcnJheQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgY29udGV4dGxpYgogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogaW1wb3J0IHNpZ25hbApAQCAtNjYsMTAgKzY1LDIyIEBACiAgICAgICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBUcnVlCiAKK2RlZiBfaGF2ZV9zb2NrZXRfYWxnKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBBRl9BTEcgc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKwogSEFWRV9TT0NLRVRfQ0FOID0gX2hhdmVfc29ja2V0X2NhbigpCiAKIEhBVkVfU09DS0VUX1JEUyA9IF9oYXZlX3NvY2tldF9yZHMoKQogCitIQVZFX1NPQ0tFVF9BTEcgPSBfaGF2ZV9zb2NrZXRfYWxnKCkKKwogIyBTaXplIGluIGJ5dGVzIG9mIHRoZSBpbnQgdHlwZQogU0laRU9GX0lOVCA9IGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUKIApAQCAtMTE2MSw2ICsxMTcyLDE3IEBACiAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzb2NrLnNlbmQsIGIic3BhbSIpCiAKKyAgICBkZWYgdGVzdENsb3NlRXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNvY2tldC5zb2NrZXQoZmlsZW5vPXNvY2suZmlsZW5vKCkpLmNsb3NlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICMgV2luc29jayBhcHBhcmVudGx5IHJhaXNlcyBFTk9UU09DSworICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIuZXJybm8sIChlcnJuby5FQkFERiwgZXJybm8uRU5PVFNPQ0spKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJjbG9zZSgpIHNob3VsZCByYWlzZSBFQkFERi9FTk9UU09DSyIpCisKICAgICBkZWYgdGVzdE5ld0F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgICMgdGVzdGluZyAuZmFtaWx5LCAudHlwZSBhbmQgLnByb3RvY29sCiAKQEAgLTEyMDcsNiArMTIyOSwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLmlvY3RsLCAtMSwgTm9uZSkKICAgICAgICAgcy5pb2N0bChzb2NrZXQuU0lPX0tFRVBBTElWRV9WQUxTLCAoMSwgMTAwLCAxMDApKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cyBzcGVjaWZpYyIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0xvb3BiYWNrIGZhc3QgcGF0aCBzdXBwb3J0IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQorICAgIGRlZiB0ZXN0X3Npb19sb29wYmFja19mYXN0X3BhdGgoc2VsZik6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMuaW9jdGwoc29ja2V0LlNJT19MT09QQkFDS19GQVNUX1BBVEgsIFRydWUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIFdTQUVPUE5PVFNVUFAgPSAxMDA0NQorICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yID09IFdTQUVPUE5PVFNVUFA6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCBpcyBkZWZpbmVkIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lc24ndCBpbXBsZW1lbnRlZCBpbiB0aGlzIFdpbmRvd3MgdmVyc2lvbiIpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHMuaW9jdGwsIHNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRILCBOb25lKQorCiAgICAgZGVmIHRlc3RHZXRhZGRyaW5mbyhzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCdsb2NhbGhvc3QnLCA4MCkKQEAgLTI4NDIsNiArMjg4MCw3IEBACiAgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihtc2cpKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gImRhcndpbiIsICJzZWUgaXNzdWUgIzI0NzI1IikKICAgICBkZWYgdGVzdEZEUGFzc0VtcHR5KHNlbGYpOgogICAgICAgICAjIFRyeSB0byBwYXNzIGFuIGVtcHR5IEZEIGFycmF5LiAgQ2FuIHJlY2VpdmUgZWl0aGVyIG5vIGFycmF5CiAgICAgICAgICMgb3IgYW4gZW1wdHkgYXJyYXkuCkBAIC00NTEzLDYgKzQ1NTIsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc29ja2V0LmdhaWVycm9yLCBPU0Vycm9yKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc29ja2V0LnRpbWVvdXQsIE9TRXJyb3IpKQogCisgICAgZGVmIHRlc3Rfc2V0YmxvY2tpbmdfaW52YWxpZGZkKHNlbGYpOgorICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgIzI4NDcxCisKKyAgICAgICAgc29jazAgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0sIDApCisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KAorICAgICAgICAgICAgc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwgMCwgc29jazAuZmlsZW5vKCkpCisgICAgICAgIHNvY2swLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suZGV0YWNoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcik6CisgICAgICAgICAgICBzb2NrLnNldGJsb2NraW5nKEZhbHNlKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnbGludXgnLCAnTGludXggc3BlY2lmaWMgdGVzdCcpCiBjbGFzcyBUZXN0TGludXhBYnN0cmFjdE5hbWVzcGFjZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTUzMjAsNiArNTM3MiwxODMgQEAKICAgICAgICAgcmV0dXJuIGdldGF0dHIoc29jaywgIl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUiKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBVkVfU09DS0VUX0FMRywgJ0FGX0FMRyByZXF1aXJlZCcpCitjbGFzcyBMaW51eEtlcm5lbENyeXB0b0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0ZXN0cyBmb3IgQUZfQUxHCisgICAgZGVmIGNyZWF0ZV9hbGcoc2VsZiwgdHlwLCBuYW1lKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0FMRywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmJpbmQoKHR5cCwgbmFtZSkpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBlOgorICAgICAgICAgICAgIyB0eXBlIC8gYWxnb3JpdGhtIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKGUpLCB0eXAsIG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc29jaworCisgICAgZGVmIHRlc3Rfc2hhMjU2KHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IGJ5dGVzLmZyb21oZXgoImJhNzgxNmJmOGYwMWNmZWE0MTQxNDBkZTVkYWUyMjIzYjAwMzYxYTM5NiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNzdhOWNiNDEwZmY2MWYyMDAxNWFkIikKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2hhc2gnLCAnc2hhMjU2JykgYXMgYWxnbzoKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGIiYWJjIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YoNTEyKSwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInYScsIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInYicsIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInYycsIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YoNTEyKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9obWFjX3NoYTEoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnl0ZXMuZnJvbWhleCgiZWZmY2RmNmFlNWViMmZhMmQyNzQxNmQ1ZjE4NGRmOWMyNTlhN2M3OSIpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdoYXNoJywgJ2htYWMoc2hhMSknKSBhcyBhbGdvOgorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGIiSmVmZSIpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChiIndoYXQgZG8geWEgd2FudCBmb3Igbm90aGluZz8iKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgICMgQWx0aG91Z2ggaXQgc2hvdWxkIHdvcmsgd2l0aCAzLjE5IGFuZCBuZXdlciB0aGUgdGVzdCBibG9ja3Mgb24KKyAgICAjIFVidW50dSAxNS4xMCB3aXRoIEtlcm5lbCA0LjIuMC0xOS4KKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpCisgICAgZGVmIHRlc3RfYWVzX2NiYyhzZWxmKToKKyAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleCgnMDZhOTIxNDAzNmI4YTE1YjUxMmUwM2Q1MzQxMjAwMDYnKQorICAgICAgICBpdiA9IGJ5dGVzLmZyb21oZXgoJzNkYWZiYTQyOWQ5ZWI0MzBiNDIyZGE4MDJjOWZhYzQxJykKKyAgICAgICAgbXNnID0gYiJTaW5nbGUgYmxvY2sgbXNnIgorICAgICAgICBjaXBoZXJ0ZXh0ID0gYnl0ZXMuZnJvbWhleCgnZTM1Mzc3OWMxMDc5YWViODI3MDg5NDJkYmU3NzE4MWEnKQorICAgICAgICBtc2dsZW4gPSBsZW4obXNnKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnc2tjaXBoZXInLCAnY2JjKGFlcyknKSBhcyBhbGdvOgorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGtleSkKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgaXY9aXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1zb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KG1zZ2xlbiksIGNpcGhlcnRleHQpCisKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFtjaXBoZXJ0ZXh0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KG1zZ2xlbiksIG1zZykKKworICAgICAgICAgICAgIyBsb25nIG1lc3NhZ2UKKyAgICAgICAgICAgIG11bHRpcGxpZXIgPSAxMDI0CisgICAgICAgICAgICBsb25nbXNnID0gW21zZ10gKiBtdWx0aXBsaWVyCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhsb25nbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBlbmMgPSBvcC5yZWN2KG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbmMpLCBtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY1s6bXNnbGVuXSwgY2lwaGVydGV4dCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW2VuY10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIGRlYyA9IG9wLnJlY3YobXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRlYyksIG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlYywgbXNnICogbXVsdGlwbGllcikKKworICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykgICMgc2VlIHRlc3RfYWVzX2NiYworICAgIGRlZiB0ZXN0X2FlYWRfYWVzX2djbShzZWxmKToKKyAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleCgnYzkzOWNjMTMzOTdjMWQzN2RlNmFlMGUxY2I3YzQyM2MnKQorICAgICAgICBpdiA9IGJ5dGVzLmZyb21oZXgoJ2IzZDhjYzAxN2NiYjg5YjM5ZTBmNjdlMicpCisgICAgICAgIHBsYWluID0gYnl0ZXMuZnJvbWhleCgnYzNiM2M0MWYxMTNhMzFiNzNkOWE1Y2Q0MzIxMDMwNjknKQorICAgICAgICBhc3NvYyA9IGJ5dGVzLmZyb21oZXgoJzI0ODI1NjAyYmQxMmE5ODRlMDA5MmQzZTQ0OGVkYTVmJykKKyAgICAgICAgZXhwZWN0ZWRfY3QgPSBieXRlcy5mcm9taGV4KCc5M2ZlN2Q5ZTliZmQxMDM0OGE1NjA2ZTVjYWZhNzM1NCcpCisgICAgICAgIGV4cGVjdGVkX3RhZyA9IGJ5dGVzLmZyb21oZXgoJzAwMzJhMWRjODVmMWM5Nzg2OTI1YTJlNzFkODI3MmRkJykKKworICAgICAgICB0YWdsZW4gPSBsZW4oZXhwZWN0ZWRfdGFnKQorICAgICAgICBhc3NvY2xlbiA9IGxlbihhc3NvYykKKworICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnYWVhZCcsICdnY20oYWVzKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwga2V5KQorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9BRUFEX0FVVEhTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHRhZ2xlbikKKworICAgICAgICAgICAgIyBzZW5kIGFzc29jLCBwbGFpbiBhbmQgdGFnIGJ1ZmZlciBpbiBzZXBhcmF0ZSBzdGVwcworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jbGVuPWFzc29jbGVuLCBmbGFncz1zb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChhc3NvYywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwocGxhaW4sIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGInXHgwMCcgKiB0YWdsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihhc3NvY2xlbiArIGxlbihwbGFpbikgKyB0YWdsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIG5vdyB3aXRoIG1zZworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgcGxhaW4gKyBiJ1x4MDAnICogdGFnbGVuCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbbXNnXSwgb3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jbGVuPWFzc29jbGVuKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YoYXNzb2NsZW4gKyBsZW4ocGxhaW4pICsgdGFnbGVuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfY3QsIHJlc1thc3NvY2xlbjotdGFnbGVuXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RhZywgcmVzWy10YWdsZW46XSkKKworICAgICAgICAgICAgIyBjcmVhdGUgYW5jIGRhdGEgbWFudWFsbHkKKyAgICAgICAgICAgIHBhY2tfdWludDMyID0gc3RydWN0LlN0cnVjdCgnSScpLnBhY2sKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBtc2cgPSBhc3NvYyArIHBsYWluICsgYidceDAwJyAqIHRhZ2xlbgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2coCisgICAgICAgICAgICAgICAgICAgIFttc2ddLAorICAgICAgICAgICAgICAgICAgICAoW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9PUCwgcGFja191aW50MzIoc29ja2V0LkFMR19PUF9FTkNSWVBUKV0sCisgICAgICAgICAgICAgICAgICAgICBbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0lWLCBwYWNrX3VpbnQzMihsZW4oaXYpKSArIGl2XSwKKyAgICAgICAgICAgICAgICAgICAgIFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfQUVBRF9BU1NPQ0xFTiwgcGFja191aW50MzIoYXNzb2NsZW4pXSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGxlbihtc2cpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfY3QsIHJlc1thc3NvY2xlbjotdGFnbGVuXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RhZywgcmVzWy10YWdsZW46XSkKKworICAgICAgICAgICAgIyBkZWNyeXB0IGFuZCB2ZXJpZnkKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBtc2cgPSBhc3NvYyArIGV4cGVjdGVkX2N0ICsgZXhwZWN0ZWRfdGFnCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbbXNnXSwgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jbGVuPWFzc29jbGVuKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YobGVuKG1zZykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbiwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKSAgIyBzZWUgdGVzdF9hZXNfY2JjCisgICAgZGVmIHRlc3RfZHJiZ19wcl9zaGEyNTYoc2VsZik6CisgICAgICAgICMgZGV0ZXJtaW5pc3RpYyByYW5kb20gYml0IGdlbmVyYXRvciwgcHJlZGljdGlvbiByZXNpc3RhbmNlLCBzaGEyNTYKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ3JuZycsICdkcmJnX3ByX3NoYTI1NicpIGFzIGFsZ286CisgICAgICAgICAgICBleHRyYV9zZWVkID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBleHRyYV9zZWVkKQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIHJuID0gb3AucmVjdigzMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihybiksIDMyKQorCisgICAgZGVmIHRlc3Rfc2VuZG1zZ19hZmFsZ19hcmdzKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcoKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPU5vbmUpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcoMSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGFzc29jbGVuPU5vbmUpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBhc3NvY2xlbj0tMSkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbR2VuZXJhbE1vZHVsZVRlc3RzLCBCYXNpY1RDUFRlc3QsIFRDUENsb3NlclRlc3QsIFRDUFRpbWVvdXRUZXN0LAogICAgICAgICAgICAgIFRlc3RFeGNlcHRpb25zLCBCdWZmZXJJT1Rlc3QsIEJhc2ljVENQVGVzdDIsIEJhc2ljVURQVGVzdCwgVURQVGltZW91dFRlc3QgXQpAQCAtNTM0Niw2ICs1NTc1LDcgQEAKICAgICB0ZXN0cy5leHRlbmQoW1RJUENUZXN0LCBUSVBDVGhyZWFkYWJsZVRlc3RdKQogICAgIHRlc3RzLmV4dGVuZChbQmFzaWNDQU5UZXN0LCBDQU5UZXN0XSkKICAgICB0ZXN0cy5leHRlbmQoW0Jhc2ljUkRTVGVzdCwgUkRTVGVzdF0pCisgICAgdGVzdHMuYXBwZW5kKExpbnV4S2VybmVsQ3J5cHRvQVBJKQogICAgIHRlc3RzLmV4dGVuZChbCiAgICAgICAgIENtc2dNYWNyb1Rlc3RzLAogICAgICAgICBTZW5kbXNnVURQVGVzdCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggMGQwZjg2Zi4uMTQwYTZhYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKQEAgLTMsMTIgKzMsMTEgQEAKICIiIgogCiBpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzb2NrZXQKLWltcG9ydCBzZWxlY3QKLWltcG9ydCBlcnJubwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzb2NrZXRzZXJ2ZXIKQEAgLTQ2LDcgKzQ1LDcgQEAKICAgICBlbHNlOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRpbWVkIG91dCBvbiAlciIgJSAoc29jaywpKQogCi1pZiBIQVZFX1VOSVhfU09DS0VUUzoKK2lmIEhBVkVfVU5JWF9TT0NLRVRTIGFuZCBIQVZFX0ZPUktJTkc6CiAgICAgY2xhc3MgRm9ya2luZ1VuaXhTdHJlYW1TZXJ2ZXIoc29ja2V0c2VydmVyLkZvcmtpbmdNaXhJbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuVW5peFN0cmVhbVNlcnZlcik6CiAgICAgICAgIHBhc3MKQEAgLTU4LDYgKzU3LDcgQEAKIAogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiBzaW1wbGVfc3VicHJvY2Vzcyh0ZXN0Y2FzZSk6CisgICAgIiIiVGVzdHMgdGhhdCBhIGN1c3RvbSBjaGlsZCBwcm9jZXNzIGlzIG5vdCB3YWl0ZWQgb24gKElzc3VlIDE1NDAzODYpIiIiCiAgICAgcGlkID0gb3MuZm9yaygpCiAgICAgaWYgcGlkID09IDA6CiAgICAgICAgICMgRG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uOyBpdCB3b3VsZCBiZSBjYXVnaHQgYnkgdGhlIHRlc3QgaGFybmVzcy4KQEAgLTEwMyw3ICsxMDMsNiBAQAogICAgICAgICBjbGFzcyBNeVNlcnZlcihzdnJjbHMpOgogICAgICAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgY2xhc3MgTXlIYW5kbGVyKGhkbHJiYXNlKToKQEAgLTI3OSw2ICsyNzgsMTgyIEBACiAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgLTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKQogCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIHNlcnZlci5zb2NrZXQuZmlsZW5vKCkpCisKKworY2xhc3MgRXJyb3JIYW5kbGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBzZXJ2ZXJzIHBhc3Mgbm9ybWFsIGV4Y2VwdGlvbnMgZnJvbSB0aGUgaGFuZGxlciB0bworICAgIGhhbmRsZV9lcnJvcigpLCBhbmQgdGhhdCBleGl0aW5nIGV4Y2VwdGlvbnMgbGlrZSBTeXN0ZW1FeGl0IGFuZAorICAgIEtleWJvYXJkSW50ZXJydXB0IGFyZSBub3QgcGFzc2VkLiIiIgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKHRlc3Quc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgdGVzdF9zeW5jX2hhbmRsZWQoc2VsZik6CisgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIoVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1UcnVlKQorCisgICAgZGVmIHRlc3Rfc3luY19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKKyAgICAgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkaW5nX2hhbmRsZWQoc2VsZik6CisgICAgICAgIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3RocmVhZGluZ19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKFN5c3RlbUV4aXQpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9RmFsc2UpCisKKyAgICBAcmVxdWlyZXNfZm9ya2luZworICAgIGRlZiB0ZXN0X2ZvcmtpbmdfaGFuZGxlZChzZWxmKToKKyAgICAgICAgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBAcmVxdWlyZXNfZm9ya2luZworICAgIGRlZiB0ZXN0X2Zvcmtpbmdfbm90X2hhbmRsZWQoc2VsZik6CisgICAgICAgIEZvcmtpbmdFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIGRlZiBjaGVja19yZXN1bHQoc2VsZiwgaGFuZGxlZCk6CisgICAgICAgIHdpdGggb3Blbih0ZXN0LnN1cHBvcnQuVEVTVEZOKSBhcyBsb2c6CisgICAgICAgICAgICBleHBlY3RlZCA9ICdIYW5kbGVyIGNhbGxlZFxuJyArICdFcnJvciBoYW5kbGVkXG4nICogaGFuZGxlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cucmVhZCgpLCBleHBlY3RlZCkKKworCitjbGFzcyBCYXNlRXJyb3JUZXN0U2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNlcHRpb24pOgorICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IGV4Y2VwdGlvbgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKChIT1NULCAwKSwgQmFkSGFuZGxlcikKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oc2VsZi5zZXJ2ZXJfYWRkcmVzcyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBzZWxmLndhaXRfZG9uZSgpCisKKyAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4sICdhJykgYXMgbG9nOgorICAgICAgICAgICAgbG9nLndyaXRlKCdFcnJvciBoYW5kbGVkXG4nKQorCisgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEJhZEhhbmRsZXIoc29ja2V0c2VydmVyLkJhc2VSZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4sICdhJykgYXMgbG9nOgorICAgICAgICAgICAgbG9nLndyaXRlKCdIYW5kbGVyIGNhbGxlZFxuJykKKyAgICAgICAgcmFpc2Ugc2VsZi5zZXJ2ZXIuZXhjZXB0aW9uKCdUZXN0IGVycm9yJykKKworCitjbGFzcyBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLAorICAgICAgICBCYXNlRXJyb3JUZXN0U2VydmVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHNlbGYuZG9uZSA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKnBvcywgKiprdykKKworICAgIGRlZiBzaHV0ZG93bl9yZXF1ZXN0KHNlbGYsICpwb3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLnNodXRkb3duX3JlcXVlc3QoKnBvcywgKiprdykKKyAgICAgICAgc2VsZi5kb25lLnNldCgpCisKKyAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICBzZWxmLmRvbmUud2FpdCgpCisKKworaWYgSEFWRV9GT1JLSU5HOgorICAgIGNsYXNzIEZvcmtpbmdFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLkZvcmtpbmdNaXhJbiwgQmFzZUVycm9yVGVzdFNlcnZlcik6CisgICAgICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgICAgICBbY2hpbGRdID0gc2VsZi5hY3RpdmVfY2hpbGRyZW4KKyAgICAgICAgICAgIG9zLndhaXRwaWQoY2hpbGQsIDApCisgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCisKKworY2xhc3MgU29ja2V0V3JpdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBjbGFzcyBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLndmaWxlID0gc2VsZi53ZmlsZQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLndmaWxlX2ZpbGVubyA9IHNlbGYud2ZpbGUuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXF1ZXN0X2ZpbGVubyA9IHNlbGYucmVxdWVzdC5maWxlbm8oKQorCisgICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIDApLCBIYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLnNlcnZlcl9jbG9zZSkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoCisgICAgICAgICAgICBzZXJ2ZXIuYWRkcmVzc19mYW1pbHksIHNvY2tldC5TT0NLX1NUUkVBTSwgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICB3aXRoIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VydmVyLndmaWxlLCBpby5CdWZmZXJlZElPQmFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIud2ZpbGVfZmlsZW5vLCBzZXJ2ZXIucmVxdWVzdF9maWxlbm8pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZmlsZS53cml0ZSgpIHNlbmRzIGRhdGEgaW1tZWRpYXRlbHksIGFuZCB0aGF0IGl0IGRvZXMKKyAgICAgICAgIyBub3QgdHJ1bmNhdGUgc2VuZHMgd2hlbiBpbnRlcnJ1cHRlZCBieSBhIFVuaXggc2lnbmFsCisgICAgICAgIHB0aHJlYWRfa2lsbCA9IHRlc3Quc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNpZ25hbCwgJ3B0aHJlYWRfa2lsbCcpCisKKyAgICAgICAgY2xhc3MgSGFuZGxlcihzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZW50MSA9IHNlbGYud2ZpbGUud3JpdGUoYid3cml0ZSBkYXRhXG4nKQorICAgICAgICAgICAgICAgICMgU2hvdWxkIGJlIHNlbnQgaW1tZWRpYXRlbHksIHdpdGhvdXQgcmVxdWlyaW5nIGZsdXNoKCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZWNlaXZlZCA9IHNlbGYucmZpbGUucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGJpZ19jaHVuayA9IGInXDAnICogdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZW50MiA9IHNlbGYud2ZpbGUud3JpdGUoYmlnX2NodW5rKQorCisgICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIDApLCBIYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLnNlcnZlcl9jbG9zZSkKKyAgICAgICAgaW50ZXJydXB0ZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgICAgIGRlZiBzaWduYWxfaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIGludGVycnVwdGVkLnNldCgpCisKKyAgICAgICAgb3JpZ2luYWwgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBzaWduYWxfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdVU1IxLCBvcmlnaW5hbCkKKyAgICAgICAgcmVzcG9uc2UxID0gTm9uZQorICAgICAgICByZWNlaXZlZDIgPSBOb25lCisgICAgICAgIG1haW5fdGhyZWFkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisKKyAgICAgICAgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNlcnZlci5hZGRyZXNzX2ZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RPX1RDUCkKKyAgICAgICAgICAgIHdpdGggcywgcy5tYWtlZmlsZSgncmInKSBhcyByZWFkZXI6CisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlcnZlci5zZXJ2ZXJfYWRkcmVzcykKKyAgICAgICAgICAgICAgICBub25sb2NhbCByZXNwb25zZTEKKyAgICAgICAgICAgICAgICByZXNwb25zZTEgPSByZWFkZXIucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIHMuc2VuZGFsbChiJ2NsaWVudCByZXNwb25zZVxuJykKKworICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkKDEwMCkKKyAgICAgICAgICAgICAgICAjIFRoZSBtYWluIHRocmVhZCBzaG91bGQgbm93IGJlIGJsb2NraW5nIGluIGEgc2VuZCgpIHN5c2NhbGwuCisgICAgICAgICAgICAgICAgIyBCdXQgaW4gdGhlb3J5LCBpdCBjb3VsZCBnZXQgaW50ZXJydXB0ZWQgYnkgb3RoZXIgc2lnbmFscywKKyAgICAgICAgICAgICAgICAjIGFuZCB0aGVuIHJldHJpZWQuIFNvIGtlZXAgc2VuZGluZyB0aGUgc2lnbmFsIGluIGEgbG9vcCwgaW4KKyAgICAgICAgICAgICAgICAjIGNhc2UgYW4gZWFybGllciBzaWduYWwgaGFwcGVucyB0byBiZSBkZWxpdmVyZWQgYXQgYW4KKyAgICAgICAgICAgICAgICAjIGluY29udmVuaWVudCBtb21lbnQuCisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9raWxsKG1haW5fdGhyZWFkLCBzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW50ZXJydXB0ZWQud2FpdCh0aW1lb3V0PWZsb2F0KDEpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbm9ubG9jYWwgcmVjZWl2ZWQyCisgICAgICAgICAgICAgICAgcmVjZWl2ZWQyID0gbGVuKHJlYWRlci5yZWFkKCkpCisKKyAgICAgICAgYmFja2dyb3VuZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bl9jbGllbnQpCisgICAgICAgIGJhY2tncm91bmQuc3RhcnQoKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICBiYWNrZ3JvdW5kLmpvaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZW50MSwgbGVuKHJlc3BvbnNlMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UxLCBiJ3dyaXRlIGRhdGFcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnJlY2VpdmVkLCBiJ2NsaWVudCByZXNwb25zZVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc2VudDIsIHRlc3Quc3VwcG9ydC5TT0NLX01BWF9TSVpFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkMiwgdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUgLSAxMDApCisKIAogY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CmluZGV4IGE1ZDBlYmYuLjk4Y2NhYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCByYW5kb20KLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IGNtcF90b19rZXkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zcHdkLnB5IGIvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CmluZGV4IGJlYTdhYjEuLmU4OTNmM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKQEAgLTU2LDUgKzU2LDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNwd2QuZ2V0c3BuYW0sIGJ5dGVzX25hbWUpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGV1aWQnKSBhbmQgb3MuZ2V0ZXVpZCgpICE9IDAsCisgICAgICAgICAgICAgICAgICAgICAnbm9uLXJvb3QgdXNlciByZXF1aXJlZCcpCitjbGFzcyBUZXN0U3B3ZE5vblJvb3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZ2V0c3BuYW1fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2JpbicKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQZXJtaXNzaW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNwd2QuZ2V0c3BuYW0obmFtZSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInNwd2QgZW50cnkgJXIgZG9lc24ndCBleGlzdDogJXMiICUgKG5hbWUsIGV4YykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAnW0Vycm5vIDEzXSBQZXJtaXNzaW9uIGRlbmllZCcpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggNTUxNTU4My4uZDIwM2NkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKQEAgLTIxLDYgKzIxLDEzIEBACiAKIHNzbCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgic3NsIikKIAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfaGF2ZV90aHJlYWRzID0gRmFsc2UKK2Vsc2U6CisgICAgX2hhdmVfdGhyZWFkcyA9IFRydWUKKwogUFJPVE9DT0xTID0gc29ydGVkKHNzbC5fUFJPVE9DT0xfTkFNRVMpCiBIT1NUID0gc3VwcG9ydC5IT1NUCiBJU19MSUJSRVNTTCA9IHNzbC5PUEVOU1NMX1ZFUlNJT04uc3RhcnRzd2l0aCgnTGlicmVTU0wnKQpAQCAtNTYsMTIgKzYzLDEyIEBACiAjIFR3byBrZXlzIGFuZCBjZXJ0cyBzaWduZWQgYnkgdGhlIHNhbWUgQ0EgKGZvciBTTkkgdGVzdHMpCiBTSUdORURfQ0VSVEZJTEUgPSBkYXRhX2ZpbGUoImtleWNlcnQzLnBlbSIpCiBTSUdORURfQ0VSVEZJTEUyID0gZGF0YV9maWxlKCJrZXljZXJ0NC5wZW0iKQotU0lHTklOR19DQSA9IGRhdGFfZmlsZSgicHljYWNlcnQucGVtIikKKyMgU2FtZSBjZXJ0aWZpY2F0ZSBhcyBweWNhY2VydC5wZW0sIGJ1dCB3aXRob3V0IGV4dHJhIHRleHQgaW4gZmlsZQorU0lHTklOR19DQSA9IGRhdGFfZmlsZSgiY2FwYXRoIiwgImNlZmYxNzEwLjAiKQogIyBjZXJ0IHdpdGggYWxsIGtpbmRzIG9mIHN1YmplY3QgYWx0IG5hbWVzCiBBTExTQU5GSUxFID0gZGF0YV9maWxlKCJhbGxzYW5zLnBlbSIpCiAKIFJFTU9URV9IT1NUID0gInNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0IgotUkVNT1RFX1JPT1RfQ0VSVCA9IGRhdGFfZmlsZSgic2VsZnNpZ25lZF9weXRob250ZXN0ZG90bmV0LnBlbSIpCiAKIEVNUFRZQ0VSVCA9IGRhdGFfZmlsZSgibnVsbGNlcnQucGVtIikKIEJBRENFUlQgPSBkYXRhX2ZpbGUoImJhZGNlcnQucGVtIikKQEAgLTczLDYgKzgwLDEyIEBACiBESEZJTEUgPSBkYXRhX2ZpbGUoImRoMTAyNC5wZW0iKQogQllURVNfREhGSUxFID0gb3MuZnNlbmNvZGUoREhGSUxFKQogCisjIE5vdCBkZWZpbmVkIGluIGFsbCB2ZXJzaW9ucyBvZiBPcGVuU1NMCitPUF9OT19DT01QUkVTU0lPTiA9IGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQorT1BfU0lOR0xFX0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCitPUF9TSU5HTEVfRUNESF9VU0UgPSBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApCitPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgPSBnZXRhdHRyKHNzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCisKIAogZGVmIGhhbmRsZV9lcnJvcihwcmVmaXgpOgogICAgIGV4Y19mb3JtYXQgPSAnICcuam9pbih0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpKQpAQCAtMTMwLDYgKzE0MywyMSBAQAogbmVlZHNfc25pID0gdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX1NOSSwgIlNOSSBzdXBwb3J0IG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKIAogCitkZWYgdGVzdF93cmFwX3NvY2tldChzb2NrLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTLCAqLAorICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNhX2NlcnRzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGtleWZpbGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKKyAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsX3ZlcnNpb24pCisgICAgaWYgY2VydF9yZXFzIGlzIG5vdCBOb25lOgorICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCisgICAgaWYgY2FfY2VydHMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhX2NlcnRzKQorICAgIGlmIGNlcnRmaWxlIGlzIG5vdCBOb25lIG9yIGtleWZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlKQorICAgIGlmIGNpcGhlcnMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKKyAgICByZXR1cm4gY29udGV4dC53cmFwX3NvY2tldChzb2NrLCAqKmt3YXJncykKKwogY2xhc3MgQmFzaWNTb2NrZXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jb25zdGFudHMoc2VsZik6CkBAIC0zNTAsMTcgKzM3OCwxNyBAQAogICAgICAgICAjIElzc3VlICM3OTQzOiBhbiBTU0wgb2JqZWN0IGRvZXNuJ3QgY3JlYXRlIHJlZmVyZW5jZSBjeWNsZXMgd2l0aAogICAgICAgICAjIGl0c2VsZi4KICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHMpCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzKQogICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHNzKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBSZXNvdXJjZVdhcm5pbmcpKToKICAgICAgICAgICAgIGRlbCBzcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cigpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCiAKICAgICBkZWYgdGVzdF93cmFwcGVkX3VuY29ubmVjdGVkKHNlbGYpOgogICAgICAgICAjIE1ldGhvZHMgb24gYW4gdW5jb25uZWN0ZWQgU1NMU29ja2V0IHByb3BhZ2F0ZSB0aGUgb3JpZ2luYWwKICAgICAgICAgIyBPU0Vycm9yIHJhaXNlIGJ5IHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMpIGFzIHNzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdiwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNzLnJlY3ZfaW50bywgYnl0ZWFycmF5KGIneCcpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdmZyb20sIDEpCkBAIC0zNzQsMTAgKzQwMiwxMCBAQAogICAgICAgICBmb3IgdGltZW91dCBpbiAoTm9uZSwgMC4wLCA1LjApOgogICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgICAgICBzLnNldHRpbWVvdXQodGltZW91dCkKLSAgICAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMpIGFzIHNzOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZW91dCwgc3MuZ2V0dGltZW91dCgpKQogCi0gICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Vycm9yc19zc2x3cmFwKHNlbGYpOgogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCIsCkBAIC0zODcsMTAgKzQxNSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0LCBzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2VydGZpbGUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHNlcnZlci1zaWRlIG9wZXJhdGlvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0LCBzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT0iIikKKyAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQogICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChIT1NULCA4MDgwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChIT1NULCA4MDgwKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssIGNlcnRmaWxlPU5PTkVYSVNUSU5HQ0VSVCkKQEAgLTQxMyw3ICs0NDEsNyBAQAogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6Ci0gICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywKKyAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQoc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1jZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCiAKQEAgLTYwMCw3ICs2MjgsNyBAQAogICAgICAgICBzLmxpc3RlbigpCiAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQogICAgICAgICBjLmNvbm5lY3Qocy5nZXRzb2NrbmFtZSgpKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChjLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChjLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkgYXMgc3M6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInVua25vd24tdHlwZSIpCiAgICAgICAgIHMuY2xvc2UoKQpAQCAtNjEwLDE1ICs2MzgsMTUgQEAKICAgICBkZWYgdGVzdF90bHNfdW5pcXVlX2NoYW5uZWxfYmluZGluZyhzZWxmKToKICAgICAgICAgIyB1bmNvbm5lY3RlZCBzaG91bGQgcmV0dXJuIE5vbmUgZm9yIGtub3duIHR5cGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCiAgICAgICAgICMgdGhlIHNhbWUgZm9yIHNlcnZlci1zaWRlCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCiAKICAgICBkZWYgdGVzdF9kZWFsbG9jX3dhcm4oc2VsZik6Ci0gICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCiAgICAgICAgIHIgPSByZXByKHNzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUmVzb3VyY2VXYXJuaW5nKSBhcyBjbToKICAgICAgICAgICAgIHNzID0gTm9uZQpAQCAtNzM3LDcgKzc2NSw3IEBACiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcikgYXMgY3g6Ci0gICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQocywgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCisgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHMsIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjeC5leGNlcHRpb24pLCAib25seSBzdHJlYW0gc29ja2V0cyBhcmUgc3VwcG9ydGVkIikKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKSBhcyBjeDoKQEAgLTgwOSw2ICs4MzcsMjIgQEAKICAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkZlYiAgOSAwMDowMDowMCAyMDA3IEdNVCIsIDExNzA5NzkyMDAuMCkKICAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbChsb2NhbF9mZWJydWFyeV9uYW1lKCkgKyAiICA5IDAwOjAwOjAwIDIwMDcgR01UIikKIAorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXhfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuY2xvc2UpCisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZXJ2ZXIpICAjIFJlc2VydmUgcG9ydCBidXQgZG9uJ3QgbGlzdGVuCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChIT1NULCBwb3J0KSkKKyAgICAgICAgIyBJc3N1ZSAjMTk5MTk6IFdpbmRvd3MgbWFjaGluZXMgb3IgVk1zIGhvc3RlZCBvbiBXaW5kb3dzCisgICAgICAgICMgbWFjaGluZXMgc29tZXRpbWVzIHJldHVybiBFV09VTERCTE9DSy4KKyAgICAgICAgZXJyb3JzID0gKAorICAgICAgICAgICAgZXJybm8uRUNPTk5SRUZVU0VELCBlcnJuby5FSE9TVFVOUkVBQ0gsIGVycm5vLkVUSU1FRE9VVCwKKyAgICAgICAgICAgIGVycm5vLkVXT1VMREJMT0NLLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsIGVycm9ycykKKwogCiBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04MzQsMTMgKzg3OCwyMiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgogICAgICAgICAgICAgY3R4LnNldF9jaXBoZXJzKCJeJDosOz8qJ2Rvcm90aHl4IikKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPIDwgKDEsIDAsIDIsIDAsIDApLCAnT3BlblNTTCB0b28gb2xkJykKKyAgICBkZWYgdGVzdF9nZXRfY2lwaGVycyhzZWxmKToKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHguc2V0X2NpcGhlcnMoJ0FFU0dDTScpCisgICAgICAgIG5hbWVzID0gc2V0KGRbJ25hbWUnXSBmb3IgZCBpbiBjdHguZ2V0X2NpcGhlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQUVTMjU2LUdDTS1TSEEzODQnLCBuYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQUVTMTI4LUdDTS1TSEEyNTYnLCBuYW1lcykKKwogICAgIEBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsCiAgICAgZGVmIHRlc3Rfb3B0aW9ucyhzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICAjIE9QX0FMTCB8IE9QX05PX1NTTHYyIHwgT1BfTk9fU1NMdjMgaXMgdGhlIGRlZmF1bHQgdmFsdWUKICAgICAgICAgZGVmYXVsdCA9IChzc2wuT1BfQUxMIHwgc3NsLk9QX05PX1NTTHYyIHwgc3NsLk9QX05PX1NTTHYzKQotICAgICAgICBpZiBub3QgSVNfTElCUkVTU0wgYW5kIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMSwgMCk6Ci0gICAgICAgICAgICBkZWZhdWx0IHw9IHNzbC5PUF9OT19DT01QUkVTU0lPTgorICAgICAgICAjIFNTTENvbnRleHQgYWxzbyBlbmFibGVzIHRoZXNlIGJ5IGRlZmF1bHQKKyAgICAgICAgZGVmYXVsdCB8PSAoT1BfTk9fQ09NUFJFU1NJT04gfCBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgfAorICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFIHwgT1BfU0lOR0xFX0VDREhfVVNFKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQsIGN0eC5vcHRpb25zKQogICAgICAgICBjdHgub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0IHwgc3NsLk9QX05PX1RMU3YxLCBjdHgub3B0aW9ucykKQEAgLTEyMDUsMTYgKzEyNTgsMjkgQEAKICAgICAgICAgICAgIHN0YXRzWyJ4NTA5Il0gKz0gMQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHguY2VydF9zdG9yZV9zdGF0cygpLCBzdGF0cykKIAorICAgIGRlZiBfYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhzZWxmLCBjdHgpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIGlmIE9QX05PX0NPTVBSRVNTSU9OICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX05PX0NPTVBSRVNTSU9OKQorICAgICAgICBpZiBPUF9TSU5HTEVfREhfVVNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfU0lOR0xFX0RIX1VTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfU0lOR0xFX0RIX1VTRSkKKyAgICAgICAgaWYgT1BfU0lOR0xFX0VDREhfVVNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfU0lOR0xFX0VDREhfVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfRUNESF9VU0UpCisgICAgICAgIGlmIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSAhPSAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKQorCiAgICAgZGVmIHRlc3RfY3JlYXRlX2RlZmF1bHRfY29udGV4dChzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQorCiAKICAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CiAgICAgICAgICAgICBjYWRhdGEgPSBmLnJlYWQoKQpAQCAtMTIyMiw0MCArMTI4OCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dChzc2wuUHVycG9zZS5DTElFTlRfQVVUSCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgZGVmIHRlc3RfX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCkBAIC0xMjYzLDEyICsxMzEzLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChwdXJwb3NlPXNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICBkZWYgdGVzdF9jaGVja19ob3N0bmFtZShzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQpAQCAtMTI5Miw2ICsxMzQyLDE3IEBACiAgICAgICAgIGN0eC5jaGVja19ob3N0bmFtZSA9IEZhbHNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQogCisgICAgZGVmIHRlc3RfY29udGV4dF9jbGllbnRfc2VydmVyKHNlbGYpOgorICAgICAgICAjIFBST1RPQ09MX1RMU19DTElFTlQgaGFzIHNhbmUgZGVmYXVsdHMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdHguY2hlY2tfaG9zdG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKworICAgICAgICAjIFBST1RPQ09MX1RMU19TRVJWRVIgaGFzIGRpZmZlcmVudCBidXQgYWxzbyBzYW5lIGRlZmF1bHRzCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN0eC5jaGVja19ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCisKIAogY2xhc3MgU1NMRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTEzOTcsMTQwICsxNDU4LDEwNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpby53cml0ZSwgMSkKIAogCi1jbGFzcyBOZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitAdW5pdHRlc3Quc2tpcFVubGVzcyhfaGF2ZV90aHJlYWRzLCAiTmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCitjbGFzcyBTaW1wbGVCYWNrZ3JvdW5kVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgdGhhdCBjb25uZWN0IHRvIGEgc2ltcGxlIHNlcnZlciBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihTSUdORURfQ0VSVEZJTEUpCisgICAgICAgIHNlbGYuc2VydmVyX2FkZHIgPSAoSE9TVCwgc2VydmVyLnBvcnQpCisgICAgICAgIHNlcnZlci5fX2VudGVyX18oKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLl9fZXhpdF9fLCBOb25lLCBOb25lLCBOb25lKQogCiAgICAgZGVmIHRlc3RfY29ubmVjdChzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIHMuZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlcnZlcl9zaWRlKQogCi0gICAgICAgICAgICAjIHRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vIHZlcmlmaWNhdGlvbiBjZXJ0cwotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCAoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyB0aGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9U0lHTklOR19DQSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocy5zZXJ2ZXJfc2lkZSkKIAotICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICBkZWYgdGVzdF9jb25uZWN0X2ZhaWwoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzLiBDb25uZWN0aW9uCisgICAgICAgICMgZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgIyB0ZXN0IG1ldGhvZC4KKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTMyNjogY2hlY2sgY29ubmVjdF9leCgpIGltcGxlbWVudGF0aW9uCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQzKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzLmNvbm5lY3RfZXgoc2VsZi5zZXJ2ZXJfYWRkcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAKICAgICBkZWYgdGVzdF9ub25fYmxvY2tpbmdfY29ubmVjdF9leChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTEzMjY6IG5vbi1ibG9ja2luZyBjb25uZWN0X2V4KCkgc2hvdWxkIGFsbG93IGhhbmRzaGFrZQogICAgICAgICAjIHRvIHByb2NlZWQgYWZ0ZXIgdGhlIHNvY2tldCBnZXRzIHJlYWR5LgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgIyBFV09VTERCTE9DSyB1bmRlciBXaW5kb3dzLCBFSU5QUk9HUkVTUyBlbHNld2hlcmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKDAsIGVycm5vLkVJTlBST0dSRVNTLCBlcnJuby5FV09VTERCTE9DSykpCisgICAgICAgICMgV2FpdCBmb3IgY29ubmVjdCB0byBmaW5pc2gKKyAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQorICAgICAgICAjIE5vbi1ibG9ja2luZyBoYW5kc2hha2UKKyAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICAjIEVXT1VMREJMT0NLIHVuZGVyIFdpbmRvd3MsIEVJTlBST0dSRVNTIGVsc2V3aGVyZQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsICgwLCBlcnJuby5FSU5QUk9HUkVTUywgZXJybm8uRVdPVUxEQkxPQ0spKQotICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgY29ubmVjdCB0byBmaW5pc2gKKyAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAjIE5vbi1ibG9ja2luZyBoYW5kc2hha2UKLSAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X3RpbWVvdXRfY29ubmVjdF9leChzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTIwNjU6IG9uIGEgdGltZW91dCwgY29ubmVjdF9leCgpIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsCi0gICAgICAgICMgZXJybm8gKG1pbWlja2luZyB0aGUgYmVoYXZpb3VyIG9mIG5vbi1TU0wgc29ja2V0cykuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLnNldHRpbWVvdXQoMC4wMDAwMDAxKQotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBpZiByYyA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJSRU1PVEVfSE9TVCByZXNwb25kZWQgdG9vIHF1aWNrbHkiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsIChlcnJuby5FQUdBSU4sIGVycm5vLkVXT1VMREJMT0NLKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF9jb25uZWN0X2V4X2Vycm9yKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0NCkpCi0gICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTk5MTk6IFdpbmRvd3MgbWFjaGluZXMgb3IgVk1zIGhvc3RlZCBvbiBXaW5kb3dzCi0gICAgICAgICAgICAgICAgIyBtYWNoaW5lcyBzb21ldGltZXMgcmV0dXJuIEVXT1VMREJMT0NLLgotICAgICAgICAgICAgICAgIGVycm9ycyA9ICgKLSAgICAgICAgICAgICAgICAgICAgZXJybm8uRUNPTk5SRUZVU0VELCBlcnJuby5FSE9TVFVOUkVBQ0gsIGVycm5vLkVUSU1FRE9VVCwKLSAgICAgICAgICAgICAgICAgICAgZXJybm8uRVdPVUxEQkxPQ0ssCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsIGVycm9ycykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICMgU1NMIGVzdGFibGlzaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY29udGV4dChzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICAjIFNhbWUgYXMgdGVzdF9jb25uZWN0LCBidXQgd2l0aCBhIHNlcGFyYXRlbHkgY3JlYXRlZCBjb250ZXh0Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgU2FtZSB3aXRoIGEgc2VydmVyIGhvc3RuYW1lCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9UkVNT1RFX0hPU1QpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vIHZlcmlmaWNhdGlvbiBjZXJ0cwotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCAoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyBTYW1lIGFzIHRlc3RfY29ubmVjdCwgYnV0IHdpdGggYSBzZXBhcmF0ZWx5IGNyZWF0ZWQgY29udGV4dAorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQorICAgICAgICAjIFNhbWUgd2l0aCBhIHNlcnZlciBob3N0bmFtZQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9ImR1bW15IikgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAjIFRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY29udGV4dF9mYWlsKHNlbGYpOgorICAgICAgICAjIFRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vIHZlcmlmaWNhdGlvbiBjZXJ0cy4gQ29ubmVjdGlvbgorICAgICAgICAjIGZhaWx1cmUgY3Jhc2hlcyBUaHJlYWRlZEVjaG9TZXJ2ZXIsIHNvIHJ1biB0aGlzIGluIGFuIGluZGVwZW5kZW50CisgICAgICAgICMgdGVzdCBtZXRob2QuCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2NhcGF0aChzZWxmKToKICAgICAgICAgIyBWZXJpZnkgc2VydmVyIGNlcnRpZmljYXRlcyB1c2luZyB0aGUgYGNhcGF0aGAgYXJndW1lbnQKQEAgLTE1MzgsMTk4ICsxNTY0LDEzMCBAQAogICAgICAgICAjIE9wZW5TU0wgMC45LjhuIGFuZCAxLjAuMCwgYXMgYSByZXN1bHQgdGhlIGNhcGF0aCBkaXJlY3RvcnkgbXVzdAogICAgICAgICAjIGNvbnRhaW4gYm90aCB2ZXJzaW9ucyBvZiBlYWNoIGNlcnRpZmljYXRlIChzYW1lIGNvbnRlbnQsIGRpZmZlcmVudAogICAgICAgICAjIGZpbGVuYW1lKSBmb3IgdGhpcyB0ZXN0IHRvIGJlIHBvcnRhYmxlIGFjcm9zcyBPcGVuU1NMIHJlbGVhc2VzLgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9Q0FQQVRIKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgU2FtZSB3aXRoIGEgYnl0ZXMgYGNhcGF0aGAgYXJndW1lbnQKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9QllURVNfQ0FQQVRIKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9Q0FQQVRIKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgICMgU2FtZSB3aXRoIGEgYnl0ZXMgYGNhcGF0aGAgYXJndW1lbnQKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9QllURVNfQ0FQQVRIKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2NhZGF0YShzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKFJFTU9URV9ST09UX0NFUlQpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihTSUdOSU5HX0NBKSBhcyBmOgogICAgICAgICAgICAgcGVtID0gZi5yZWFkKCkKICAgICAgICAgZGVyID0gc3NsLlBFTV9jZXJ0X3RvX0RFUl9jZXJ0KHBlbSkKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPXBlbSkKLSAgICAgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1wZW0pCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAotICAgICAgICAgICAgIyBzYW1lIHdpdGggREVSCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPWRlcikKLSAgICAgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICAjIHNhbWUgd2l0aCBERVIKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9ZGVyKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gIm50IiwgIkNhbid0IHVzZSBhIHNvY2tldCBhcyBhIGZpbGUgdW5kZXIgV2luZG93cyIpCiAgICAgZGVmIHRlc3RfbWFrZWZpbGVfY2xvc2Uoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzUyMzg6IGNyZWF0aW5nIGEgZmlsZS1saWtlIG9iamVjdCB3aXRoIG1ha2VmaWxlKCkgc2hvdWxkbid0CiAgICAgICAgICMgZGVsYXkgY2xvc2luZyB0aGUgdW5kZXJseWluZyAicmVhbCBzb2NrZXQiIChoZXJlIHRlc3RlZCB3aXRoIGl0cwogICAgICAgICAjIGZpbGUgZGVzY3JpcHRvciwgaGVuY2Ugc2tpcHBpbmcgdGhlIHRlc3QgdW5kZXIgV2luZG93cykuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIGZkID0gc3MuZmlsZW5vKCkKLSAgICAgICAgICAgIGYgPSBzcy5tYWtlZmlsZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhlIGZkIGlzIHN0aWxsIG9wZW4KKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQorICAgICAgICBzcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGZkID0gc3MuZmlsZW5vKCkKKyAgICAgICAgZiA9IHNzLm1ha2VmaWxlKCkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICMgVGhlIGZkIGlzIHN0aWxsIG9wZW4KKyAgICAgICAgb3MucmVhZChmZCwgMCkKKyAgICAgICAgIyBDbG9zaW5nIHRoZSBTU0wgc29ja2V0IHNob3VsZCBjbG9zZSB0aGUgZmQgdG9vCisgICAgICAgIHNzLmNsb3NlKCkKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgZToKICAgICAgICAgICAgIG9zLnJlYWQoZmQsIDApCi0gICAgICAgICAgICAjIENsb3NpbmcgdGhlIFNTTCBzb2NrZXQgc2hvdWxkIGNsb3NlIHRoZSBmZCB0b28KLSAgICAgICAgICAgIHNzLmNsb3NlKCkKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIG9zLnJlYWQoZmQsIDApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCiAKICAgICBkZWYgdGVzdF9ub25fYmxvY2tpbmdfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIGNvdW50ID0gMAotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQotICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5OZWVkZWQgJWQgY2FsbHMgdG8gZG9faGFuZHNoYWtlKCkgdG8gZXN0YWJsaXNoIHNlc3Npb24uXG4iICUgY291bnQpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQorICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKIAogICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZik6Ci0gICAgICAgIGRlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6Ci0gICAgICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGhvc3QpOgotICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQorICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYsICpzZWxmLnNlcnZlcl9hZGRyLCBjZXJ0PVNJR05JTkdfQ0EpCiAKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgotICAgICAgICAgICAgICAgICAgICAjc2hvdWxkIGZhaWwKLSAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3IgJXM6JXMhIiAlIChwZW0sIGhvc3QsIHBvcnQpKQotCi0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPWNlcnQpCi0gICAgICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQotCi0gICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoUkVNT1RFX0hPU1QsIDQ0MywgUkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6Ci0gICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKCdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHNlbGYpOgorICAgICAgICAjIENvbm5lY3Rpb24gZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4KKyAgICAgICAgIyBpbmRlcGVuZGVudCB0ZXN0IG1ldGhvZAorICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZiwgKnNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9jaXBoZXJzKHNlbGYpOgotICAgICAgICByZW1vdGUgPSAoUkVNT1RFX0hPU1QsIDQ0MykKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChyZW1vdGVbMF0pOgotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iQUxMIikgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iREVGQVVMVCIpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLSAgICAgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQiKToKLSAgICAgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpIGFzIHNvY2s6Ci0gICAgICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iXiQ6LDs/Kidkb3JvdGh5eCIpCi0gICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0KLSAgICBkZWYgdGVzdF9hbGdvcml0aG1zKHNlbGYpOgotICAgICAgICAjIElzc3VlICM4NDg0OiBhbGwgYWxnb3JpdGhtcyBzaG91bGQgYmUgYXZhaWxhYmxlIHdoZW4gdmVyaWZ5aW5nIGEKLSAgICAgICAgIyBjZXJ0aWZpY2F0ZS4KLSAgICAgICAgIyBTSEEyNTYgd2FzIGFkZGVkIGluIE9wZW5TU0wgMC45LjgKLSAgICAgICAgaWYgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPIDwgKDAsIDksIDgsIDAsIDE1KToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNIQTI1NiBub3QgYXZhaWxhYmxlIG9uICVyIiAlIHNzbC5PUEVOU1NMX1ZFUlNJT04pCi0gICAgICAgICMgc2hhMjU2LnRicy1pbnRlcm5ldC5jb20gbmVlZHMgU05JIHRvIHVzZSB0aGUgY29ycmVjdCBjZXJ0aWZpY2F0ZQotICAgICAgICBpZiBub3Qgc3NsLkhBU19TTkk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTTkkgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQotICAgICAgICAjIGh0dHBzOi8vc2hhMi5oYm9lY2suZGUvIHdhcyB1c2VkIHVudGlsIDIwMTEtMDEtMDggKG5vIHJvdXRlIHRvIGhvc3QpCi0gICAgICAgIHJlbW90ZSA9ICgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iLCA0NDMpCi0gICAgICAgIHNoYTI1Nl9jZXJ0ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJzaGEyNTYucGVtIikKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKHNoYTI1Nl9jZXJ0KQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPSJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLSAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuQ2lwaGVyIHdpdGggJXIgaXMgJXJcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdGUsIHMuY2lwaGVyKCkpKQotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJDZXJ0aWZpY2F0ZSBpczpcbiVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcHJpbnQucGZvcm1hdChzLmdldHBlZXJjZXJ0KCkpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iQUxMIikgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAjIEVycm9yIGNoZWNraW5nIGNhbiBoYXBwZW4gYXQgaW5zdGFudGlhdGlvbiBvciB3aGVuIGNvbm5lY3RpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQiKToKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9Il4kOiw7PyonZG9yb3RoeXgiKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQogCiAgICAgZGVmIHRlc3RfZ2V0X2NhX2NlcnRzX2NhcGF0aChzZWxmKToKICAgICAgICAgIyBjYXBhdGggY2VydHMgYXJlIGxvYWRlZCBvbiByZXF1ZXN0Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5nZXRfY2FfY2VydHMoKSwgW10pCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY3R4LmdldF9jYV9jZXJ0cygpKSwgMSkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9Q0FQQVRIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5nZXRfY2FfY2VydHMoKSwgW10pCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY3R4LmdldF9jYV9jZXJ0cygpKSwgMSkKIAogICAgIEBuZWVkc19zbmkKICAgICBkZWYgdGVzdF9jb250ZXh0X3NldGdldChzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjb250ZXh0IG9mIGEgY29ubmVjdGVkIHNvY2tldCBjYW4gYmUgcmVwbGFjZWQuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4MSA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKLSAgICAgICAgICAgIGN0eDIgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICB3aXRoIGN0eDEud3JhcF9zb2NrZXQocykgYXMgc3M6Ci0gICAgICAgICAgICAgICAgc3MuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5jb250ZXh0LCBjdHgxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgxKQotICAgICAgICAgICAgICAgIHNzLmNvbnRleHQgPSBjdHgyCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5jb250ZXh0LCBjdHgyKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQotCi0KLWNsYXNzIE5ldHdvcmtlZEJJT1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgY3R4MSA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY3R4MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICB3aXRoIGN0eDEud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICBzcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MSkKKyAgICAgICAgICAgIHNzLmNvbnRleHQgPSBjdHgyCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MikKIAogICAgIGRlZiBzc2xfaW9fbG9vcChzZWxmLCBzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICMgQSBzaW1wbGUgSU8gbG9vcC4gQ2FsbCBmdW5jKCphcmdzKSBkZXBlbmRpbmcgb24gdGhlIGVycm9yIHdlIGdldApAQCAtMTc2NSw2NCArMTcyMywxMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY291bnQsIGZ1bmMuX19uYW1lX18pKQogICAgICAgICByZXR1cm4gcmV0CiAKLSAgICBkZWYgdGVzdF9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIGN0eC5jaGVja19ob3N0bmFtZSA9IFRydWUKLSAgICAgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCBSRU1PVEVfSE9TVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3Nsb2JqLl9zc2xvYmoub3duZXIsIHNzbG9iaikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5jaXBoZXIoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc3Nsb2JqLmdldHBlZXJjZXJ0KQotICAgICAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5jaXBoZXIoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCi0gICAgICAgICAgICBleGNlcHQgc3NsLlNTTFN5c2NhbGxFcnJvcjoKLSAgICAgICAgICAgICAgICAjIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0IHByb2JhYmx5IHNodXRzIGRvd24gdGhlIFRDUAotICAgICAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcgYSBzZWN1cmUgc2h1dGRvd24gbWVzc2FnZSwgYW5kCi0gICAgICAgICAgICAgICAgIyB0aGlzIGlzIHJlcG9ydGVkIGFzIFNTTF9FUlJPUl9TWVNDQUxMCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yLCBzc2xvYmoud3JpdGUsIGInZm9vJykKLSAgICAgICAgICAgIHNvY2suY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfcmVhZF93cml0ZV9kYXRhKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgc29jay5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX05PTkUKLSAgICAgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCi0gICAgICAgICAgICByZXEgPSBiJ0dFVCAvIEhUVFAvMS4wXHJcblxyXG4nCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLndyaXRlLCByZXEpCi0gICAgICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zls6NV0sIGInSFRUUC8nKQorICAgIGRlZiB0ZXN0X2Jpb19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5jbG9zZSkKKyAgICAgICAgc29jay5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQorICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSwgJ2xvY2FsaG9zdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3Nsb2JqLl9zc2xvYmoub3duZXIsIHNzbG9iaikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc3Nsb2JqLmdldHBlZXJjZXJ0KQorICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRwZWVyY2VydCgpKQorICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQorICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKLSAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICBleGNlcHQgc3NsLlNTTFN5c2NhbGxFcnJvcjoKKyAgICAgICAgICAgICMgSWYgdGhlIHNlcnZlciBzaHV0cyBkb3duIHRoZSBUQ1AgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcgYQorICAgICAgICAgICAgIyBzZWN1cmUgc2h1dGRvd24gbWVzc2FnZSwgdGhpcyBpcyByZXBvcnRlZCBhcyBTU0xfRVJST1JfU1lTQ0FMTAorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQorCisgICAgZGVmIHRlc3RfYmlvX3JlYWRfd3JpdGVfZGF0YShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQorICAgICAgICBzb2NrLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQorICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSkKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgIHJlcSA9IGInRk9PXG4nCisgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKKyAgICAgICAgYnVmID0gc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5yZWFkLCAxMDI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYidmb29cbicpCisgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQogCiAKLXRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgX2hhdmVfdGhyZWFkcyA9IEZhbHNlCi1lbHNlOgotICAgIF9oYXZlX3RocmVhZHMgPSBUcnVlCitjbGFzcyBOZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgdGVzdF90aW1lb3V0X2Nvbm5lY3RfZXgoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEyMDY1OiBvbiBhIHRpbWVvdXQsIGNvbm5lY3RfZXgoKSBzaG91bGQgcmV0dXJuIHRoZSBvcmlnaW5hbAorICAgICAgICAjIGVycm5vIChtaW1pY2tpbmcgdGhlIGJlaGF2aW91ciBvZiBub24tU1NMIHNvY2tldHMpLgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKKyAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgICAgICBzLnNldHRpbWVvdXQoMC4wMDAwMDAxKQorICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQorICAgICAgICAgICAgaWYgcmMgPT0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJSRU1PVEVfSE9TVCByZXNwb25kZWQgdG9vIHF1aWNrbHkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdOZWVkcyBJUHY2JykKKyAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2lwdjYoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoJ2lwdjYuZ29vZ2xlLmNvbScpOgorICAgICAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmLCAnaXB2Ni5nb29nbGUuY29tJywgNDQzKQorICAgICAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHNlbGYsICdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisKKyAgICBkZWYgdGVzdF9hbGdvcml0aG1zKHNlbGYpOgorICAgICAgICAjIElzc3VlICM4NDg0OiBhbGwgYWxnb3JpdGhtcyBzaG91bGQgYmUgYXZhaWxhYmxlIHdoZW4gdmVyaWZ5aW5nIGEKKyAgICAgICAgIyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgIyBTSEEyNTYgd2FzIGFkZGVkIGluIE9wZW5TU0wgMC45LjgKKyAgICAgICAgaWYgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPIDwgKDAsIDksIDgsIDAsIDE1KToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNIQTI1NiBub3QgYXZhaWxhYmxlIG9uICVyIiAlIHNzbC5PUEVOU1NMX1ZFUlNJT04pCisgICAgICAgICMgc2hhMjU2LnRicy1pbnRlcm5ldC5jb20gbmVlZHMgU05JIHRvIHVzZSB0aGUgY29ycmVjdCBjZXJ0aWZpY2F0ZQorICAgICAgICBpZiBub3Qgc3NsLkhBU19TTkk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTTkkgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICAjIGh0dHBzOi8vc2hhMi5oYm9lY2suZGUvIHdhcyB1c2VkIHVudGlsIDIwMTEtMDEtMDggKG5vIHJvdXRlIHRvIGhvc3QpCisgICAgICAgIHJlbW90ZSA9ICgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iLCA0NDMpCisgICAgICAgIHNoYTI1Nl9jZXJ0ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJzaGEyNTYucGVtIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iKToKKyAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKHNoYTI1Nl9jZXJ0KQorICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPSJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKKyAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuQ2lwaGVyIHdpdGggJXIgaXMgJXJcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdGUsIHMuY2lwaGVyKCkpKQorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJDZXJ0aWZpY2F0ZSBpczpcbiVzXG4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcHJpbnQucGZvcm1hdChzLmdldHBlZXJjZXJ0KCkpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKworCitkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSh0ZXN0LCBob3N0LCBwb3J0LCBjZXJ0PU5vbmUpOgorICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSkKKyAgICBpZiBub3QgcGVtOgorICAgICAgICB0ZXN0LmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQorCisgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1jZXJ0KQorICAgIGlmIG5vdCBwZW06CisgICAgICAgIHRlc3QuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblZlcmlmaWVkIGNlcnRpZmljYXRlIGZvciAlczolcyBpc1xuJXNcbiIgJSAoaG9zdCwgcG9ydCAscGVtKSkKKworZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbCh0ZXN0LCBob3N0LCBwb3J0KToKKyAgICB0cnk6CisgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Q0VSVEZJTEUpCisgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgorICAgICAgICAjc2hvdWxkIGZhaWwKKyAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQorICAgIGVsc2U6CisgICAgICAgIHRlc3QuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3IgJXM6JXMhIiAlIChwZW0sIGhvc3QsIHBvcnQpKQorCisKK2lmIF9oYXZlX3RocmVhZHM6CiAgICAgZnJvbSB0ZXN0LnNzbF9zZXJ2ZXJzIGltcG9ydCBtYWtlX2h0dHBzX3NlcnZlcgogCiAgICAgY2xhc3MgVGhyZWFkZWRFY2hvU2VydmVyKHRocmVhZGluZy5UaHJlYWQpOgpAQCAtMTkxMCw2ICsxOTMyLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyaXBwZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlb2YsIHNvIHF1aXQgdGhpcyBoYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuc3NsY29ubi51bndyYXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1hbnkgdGVzdHMgc2h1dCB0aGUgVENQIGNvbm5lY3Rpb24gZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhvdXQgYW4gU1NMIHNodXRkb3duLiBUaGlzIGNhdXNlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVud3JhcCgpIHRvIHJhaXNlIE9TRXJyb3Igd2l0aCBlcnJubz0wIQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBzdHJpcHBlZCA9PSBiJ292ZXInOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eToKQEAgLTIwMzcsNyArMjA2OCw3IEBACiAgICAgICAgICAgICBjbGFzcyBDb25uZWN0aW9uSGFuZGxlciAoYXN5bmNvcmUuZGlzcGF0Y2hlcl93aXRoX3NlbmQpOgogCiAgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4sIGNlcnRmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQoY29ubiwgc2VydmVyX3NpZGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSB0ZXN0X3dyYXBfc29ja2V0KGNvbm4sIHNlcnZlcl9zaWRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKICAgICAgICAgICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlcl93aXRoX3NlbmQuX19pbml0X18oc2VsZiwgc2VsZi5zb2NrZXQpCkBAIC0yMTQ1LDcgKzIxNzYsOCBAQAogICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQogCiAgICAgZGVmIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsIGluZGF0YT1iIkZPT1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzbmlfbmFtZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzbmlfbmFtZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIExhdW5jaCBhIHNlcnZlciwgY29ubmVjdCBhIGNsaWVudCB0byBpdCBhbmQgdHJ5IHZhcmlvdXMgcmVhZHMKICAgICAgICAgYW5kIHdyaXRlcy4KQEAgLTIxNTYsNyArMjE4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICB3aXRoIHNlcnZlcjoKICAgICAgICAgICAgIHdpdGggY2xpZW50X2NvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c25pX25hbWUpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zbmlfbmFtZSwgc2Vzc2lvbj1zZXNzaW9uKSBhcyBzOgogICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gW2luZGF0YSwgYnl0ZWFycmF5KGluZGF0YSksIG1lbW9yeXZpZXcoaW5kYXRhKV06CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25jaGF0dHk6CkBAIC0yMTg0LDYgKzIyMTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAnY2xpZW50X2FscG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSwKICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ucG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpLAogICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6IHMudmVyc2lvbigpLAorICAgICAgICAgICAgICAgICAgICAnc2Vzc2lvbl9yZXVzZWQnOiBzLnNlc3Npb25fcmV1c2VkLAorICAgICAgICAgICAgICAgICAgICAnc2Vzc2lvbic6IHMuc2Vzc2lvbiwKICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9hbHBuX3Byb3RvY29scyddID0gc2VydmVyLnNlbGVjdGVkX2FscG5fcHJvdG9jb2xzCkBAIC0yMjU5LDEyICsyMjkzLDUzIEBACiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQogICAgICAgICAgICAgZm9yIHByb3RvY29sIGluIFBST1RPQ09MUzoKKyAgICAgICAgICAgICAgICBpZiBwcm90b2NvbCBpbiB7c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSfToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90b2NvbD1zc2wuX1BST1RPQ09MX05BTUVTW3Byb3RvY29sXSk6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChwcm90b2NvbCkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCiAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKIAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX1NFUlZFUikKKyAgICAgICAgICAgICMgc2VydmVyX2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oU0lHTkVEX0NFUlRGSUxFMikKKworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xpZW50PXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5ULCBzZXJ2ZXI9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIpOgorICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1jbGllbnRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9c2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaV9uYW1lPSdmYWtlaG9zdG5hbWUnKQorCisgICAgICAgICAgICBjbGllbnRfY29udGV4dC5jaGVja19ob3N0bmFtZSA9IEZhbHNlCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaV9uYW1lPSdmYWtlaG9zdG5hbWUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xpZW50PXNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSLCBzZXJ2ZXI9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQ9c2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKwogICAgICAgICBkZWYgdGVzdF9nZXRwZWVyY2VydChzZWxmKToKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCkBAIC0yMzk4LDcgKzI0NzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICAgICB3aXRoIHNlcnZlciwgXAogICAgICAgICAgICAgICAgICAgICBzb2NrZXQuc29ja2V0KCkgYXMgc29jaywgXAotICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywKKyAgICAgICAgICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkgYXMgczoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yNDQ1LDcgKzI1MjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjLmNvbm5lY3QoKEhPU1QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcl9nb25lLndhaXQoKQogICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzc2xfc29jayA9IHNzbC53cmFwX3NvY2tldChjKQorICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3NvY2sgPSB0ZXN0X3dyYXBfc29ja2V0KGMpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMjYzNSw3ICsyNzEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGNsaWVudDogIHJlYWQgJXIgZnJvbSBzZXJ2ZXIsIHN0YXJ0aW5nIFRMUy4uLlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG1zZykKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4gPSBzc2wud3JhcF9zb2NrZXQocywgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgICAgICAgICAgY29ubiA9IHRlc3Rfd3JhcF9zb2NrZXQocywgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgZWxpZiBpbmRhdGEgPT0gYiJFTkRUTFMiIGFuZCBtc2cuc3RhcnRzd2l0aChiIm9rIik6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIEVORFRMUyBvaywgc3dpdGNoIGJhY2sgdG8gY2xlYXIgdGV4dApAQCAtMjY5NCw3ICsyNzY5LDcgQEAKICAgICAgICAgICAgIGluZGF0YSA9IGIiRk9PXG4iCiAgICAgICAgICAgICBzZXJ2ZXIgPSBBc3luY29yZUVjaG9TZXJ2ZXIoQ0VSVEZJTEUpCiAgICAgICAgICAgICB3aXRoIHNlcnZlcjoKLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpCiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KCgnMTI3LjAuMC4xJywgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgKQEAgLTI3MjcsNyArMjgwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTI3NDUsMTIgKzI4MjAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgY291bnQsIGFkZHIgPSBzLnJlY3Zmcm9tX2ludG8oYikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJbOmNvdW50XQogCi0gICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCB3aGV0aGVyIHRvIGV4cGVjdCBzdWNjZXNzLCAqYXJncykKKyAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIGV4cGVjdCBzdWNjZXNzPywgKmFyZ3MsIHJldHVybiB2YWx1ZSBmdW5jKQogICAgICAgICAgICAgICAgIHNlbmRfbWV0aG9kcyA9IFsKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kJywgcy5zZW5kLCBUcnVlLCBbXSksCi0gICAgICAgICAgICAgICAgICAgICgnc2VuZHRvJywgcy5zZW5kdG8sIEZhbHNlLCBbInNvbWUuYWRkcmVzcyJdKSwKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kYWxsJywgcy5zZW5kYWxsLCBUcnVlLCBbXSksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZCcsIHMuc2VuZCwgVHJ1ZSwgW10sIGxlbiksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZHRvJywgcy5zZW5kdG8sIEZhbHNlLCBbInNvbWUuYWRkcmVzcyJdLCBsZW4pLAorICAgICAgICAgICAgICAgICAgICAoJ3NlbmRhbGwnLCBzLnNlbmRhbGwsIFRydWUsIFtdLCBsYW1iZGEgeDogTm9uZSksCiAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgd2hldGhlciB0byBleHBlY3Qgc3VjY2VzcywgKmFyZ3MpCiAgICAgICAgICAgICAgICAgcmVjdl9tZXRob2RzID0gWwogICAgICAgICAgICAgICAgICAgICAoJ3JlY3YnLCBzLnJlY3YsIFRydWUsIFtdKSwKICAgICAgICAgICAgICAgICAgICAgKCdyZWN2ZnJvbScsIHMucmVjdmZyb20sIEZhbHNlLCBbInNvbWUuYWRkcmVzcyJdKSwKQEAgLTI3NTksMTAgKzI4MzUsMTMgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgZGF0YV9wcmVmaXggPSAiUFJFRklYXyIKIAotICAgICAgICAgICAgICAgIGZvciBtZXRoX25hbWUsIHNlbmRfbWV0aCwgZXhwZWN0X3N1Y2Nlc3MsIGFyZ3MgaW4gc2VuZF9tZXRob2RzOgorICAgICAgICAgICAgICAgIGZvciAobWV0aF9uYW1lLCBzZW5kX21ldGgsIGV4cGVjdF9zdWNjZXNzLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0X3ZhbF9tZXRoKSBpbiBzZW5kX21ldGhvZHM6CiAgICAgICAgICAgICAgICAgICAgIGluZGF0YSA9IChkYXRhX3ByZWZpeCArIG1ldGhfbmFtZSkuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfbWV0aChpbmRhdGEsICphcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc2VuZF9tZXRoKGluZGF0YSwgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAic2VuZGluZyB3aXRoIHt9Ii5mb3JtYXQobWV0aF9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIHJldF92YWxfbWV0aChpbmRhdGEpLCBtc2c9bXNnKQogICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZGF0YSA9IHMucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvdXRkYXRhICE9IGluZGF0YS5sb3dlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgKQEAgLTI4NDcsNyArMjkyNiw3IEBACiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLl9fZXhpdF9fLCBOb25lLCBOb25lKQogICAgICAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHMsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQorICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQocywgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKIAogICAgICAgICAgICAgIyByZWN2L3JlYWQoMCkgc2hvdWxkIHJldHVybiBubyBkYXRhCkBAIC0yODY5LDcgKzI5NDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICAgICB3aXRoIHNlcnZlcjoKLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCkBAIC0yOTIzLDEyICszMDAyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgICMgV2lsbCBhdHRlbXB0IGhhbmRzaGFrZSBhbmQgdGltZSBvdXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQudGltZW91dCwgInRpbWVkIG91dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0LCBjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQsIGMpCiAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgYy5jbG9zZSgpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBjID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgICAgICAgICAgYyA9IHNzbC53cmFwX3NvY2tldChjKQorICAgICAgICAgICAgICAgICAgICBjID0gdGVzdF93cmFwX3NvY2tldChjKQogICAgICAgICAgICAgICAgICAgICBjLnNldHRpbWVvdXQoMC4yKQogICAgICAgICAgICAgICAgICAgICAjIFdpbGwgYXR0ZW1wdCBoYW5kc2hha2UgYW5kIHRpbWUgb3V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc29ja2V0LnRpbWVvdXQsICJ0aW1lZCBvdXQiLApAQCAtMjk1MSw2ICszMDMwLDcgQEAKICAgICAgICAgICAgIGhvc3QgPSAiMTI3LjAuMC4xIgogICAgICAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlcnZlcikKICAgICAgICAgICAgIHNlcnZlciA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VydmVyLCBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5zZXJ2ZXJfc2lkZSkKIAogICAgICAgICAgICAgZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgICAgIHJlbW90ZSA9IE5vbmUKQEAgLTMwNTMsNyArMzEzMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMwNzgsNyArMzE1OCw3IEBACiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKICAgICAgICAgICAgICAgICAjIG5vdywgYWdhaW4KLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCkBAIC0zMzg4LDYgKzM0NjgsMTExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzLnNlbmRmaWxlKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMucmVjdigxMDI0KSwgVEVTVF9EQVRBKQogCisgICAgICAgIGRlZiB0ZXN0X3Nlc3Npb24oc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorCisgICAgICAgICAgICAjIGZpcnN0IGNvbm5lY3Rpb24gd2l0aG91dCBzZXNzaW9uCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICBzZXNzaW9uID0gc3RhdHNbJ3Nlc3Npb24nXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlc3Npb24udGltZW91dCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXNzaW9uLmhhc190aWNrZXQpCisgICAgICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPiAoMSwgMCwgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlc3Npb24udGlja2V0X2xpZmV0aW1lX2hpbnQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAwKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjIgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc2Vzc2lvbjIsIHNlc3Npb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uMi50aW1lLCBzZXNzaW9uLnRpbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uMi50aW1lb3V0LCBzZXNzaW9uLnRpbWVvdXQpCisKKyAgICAgICAgICAgICMgYW5vdGhlciBvbmUgd2l0aG91dCBzZXNzaW9uCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjMgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZXNzaW9uMywgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMSkKKworICAgICAgICAgICAgIyByZXVzZSBzZXNzaW9uIGFnYWluCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsIHNlc3Npb249c2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0c1snc2Vzc2lvbl9yZXVzZWQnXSkKKyAgICAgICAgICAgIHNlc3Npb240ID0gc3RhdHNbJ3Nlc3Npb24nXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNC5pZCwgc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjQsIHNlc3Npb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uNC50aW1lLCBzZXNzaW9uLnRpbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uNC50aW1lb3V0LCBzZXNzaW9uLnRpbWVvdXQpCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDIpCisKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbl9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorCisgICAgICAgICAgICBjb250ZXh0MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0Mi52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjb250ZXh0Mi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0Mi5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PWNvbnRleHQsIGNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgc2Vzc2lvbiBpcyBOb25lIGJlZm9yZSBoYW5kc2hha2UKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb24sIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uX3JldXNlZCwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24gPSBzLnNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwgJ1ZhbHVlIGlzIG5vdCBhIFNTTFNlc3Npb24uJykKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UuJykKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2FuIHNldCBzZXNzaW9uIGJlZm9yZSBoYW5kc2hha2UgYW5kIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdhcyBlc3RhYmxpc2hlZAorICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbi5pZCwgc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb24sIHNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uX3JldXNlZCwgVHJ1ZSkKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dDIud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCByZS11c2Ugc2Vzc2lvbiB3aXRoIGEgZGlmZmVyZW50IFNTTENvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2Vzc2lvbiByZWZlcnMgdG8gYSBkaWZmZXJlbnQgU1NMQ29udGV4dC4nKQorCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMzQwMCw3ICszNTg1LDcgQEAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpAQCAtMzQyMiwxOCArMzYwNywyMCBAQAogICAgICAgICAgICAgcGFzcwogCiAgICAgZm9yIGZpbGVuYW1lIGluIFsKLSAgICAgICAgQ0VSVEZJTEUsIFJFTU9URV9ST09UX0NFUlQsIEJZVEVTX0NFUlRGSUxFLAorICAgICAgICBDRVJURklMRSwgQllURVNfQ0VSVEZJTEUsCiAgICAgICAgIE9OTFlDRVJULCBPTkxZS0VZLCBCWVRFU19PTkxZQ0VSVCwgQllURVNfT05MWUtFWSwKICAgICAgICAgU0lHTkVEX0NFUlRGSUxFLCBTSUdORURfQ0VSVEZJTEUyLCBTSUdOSU5HX0NBLAogICAgICAgICBCQURDRVJULCBCQURLRVksIEVNUFRZQ0VSVF06CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgY2VydGlmaWNhdGUgZmlsZSAlciIgJSBmaWxlbmFtZSkKIAotICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0cywgTWVtb3J5QklPVGVzdHNdCisgICAgdGVzdHMgPSBbCisgICAgICAgIENvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0cywgTWVtb3J5QklPVGVzdHMsCisgICAgICAgIFNpbXBsZUJhY2tncm91bmRUZXN0cywKKyAgICBdCiAKICAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKICAgICAgICAgdGVzdHMuYXBwZW5kKE5ldHdvcmtlZFRlc3RzKQotICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkQklPVGVzdHMpCiAKICAgICBpZiBfaGF2ZV90aHJlYWRzOgogICAgICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQppbmRleCAwMDg5YWU4Li40YjNmZDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CkBAIC0yMSw2ICsyMSwxMCBAQAogCiAjID09PSBIZWxwZXIgZnVuY3Rpb25zIGFuZCBjbGFzcyA9PT0KIAorZGVmIHNpZ24oeCk6CisgICAgIiIiUmV0dXJuIC0xLjAgZm9yIG5lZ2F0aXZlcywgaW5jbHVkaW5nIC0wLjAsIG90aGVyd2lzZSArMS4wLiIiIgorICAgIHJldHVybiBtYXRoLmNvcHlzaWduKDEsIHgpCisKIGRlZiBfbmFuX2VxdWFsKGEsIGIpOgogICAgICIiIlJldHVybiBUcnVlIGlmIGEgYW5kIGIgYXJlIGJvdGggdGhlIHNhbWUga2luZCBvZiBOQU4uCiAKQEAgLTI2NCw2ICsyNjgsMTMgQEAKICMgPT09IFRlc3QgdGhlIGhlbHBlcnMgPT09CiAjID09PT09PT09PT09PT09PT09PT09PT09PQogCitjbGFzcyBUZXN0U2lnbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBoZWxwZXIgZnVuY3Rpb24gc2lnbigpIHdvcmtzIGNvcnJlY3RseS4iIiIKKyAgICBkZWYgdGVzdFplcm9lcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc2lnbmVkIHplcm9lcyByZXBvcnQgdGhlaXIgc2lnbiBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbigwLjApLCArMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKC0wLjApLCAtMSkKKwogCiAjIC0tLSBUZXN0cyBmb3IgYXBwcm94X2VxdWFsIC0tLQogCkBAIC02NTksNyArNjcwLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtT08gYW5kIGFib3ZlIikKICAgICBkZWYgdGVzdF9kb2NfdGVzdHMoc2VsZik6Ci0gICAgICAgIGZhaWxlZCwgdHJpZWQgPSBkb2N0ZXN0LnRlc3Rtb2Qoc3RhdGlzdGljcykKKyAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzLCBvcHRpb25mbGFncz1kb2N0ZXN0LkVMTElQU0lTKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodHJpZWQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFpbGVkLCAwKQogCkBAIC03MDIsOSArNzEzLDkgQEAKICAgICBkZWYgdGVzdF9kZWNpbWFsKHNlbGYpOgogICAgICAgICBEID0gRGVjaW1hbAogICAgICAgICBfZXhhY3RfcmF0aW8gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEyNSwgMTAwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDEyMzQ1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiLTEuOTgiKSksICgtMTk4LCAxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEsIDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIxMi4zNDUiKSksICgyNDY5LCAyMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC05OSwgNTApKQogCiAgICAgZGVmIHRlc3RfaW5mKHNlbGYpOgogICAgICAgICBJTkYgPSBmbG9hdCgiSU5GIikKQEAgLTc0MywxOCArNzU0LDE4IEBACiAKIAogY2xhc3MgRGVjaW1hbFRvUmF0aW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRlc3QgX2RlY2ltYWxfdG9fcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KKyAgICAjIFRlc3QgX2V4YWN0X3JhdGlvIHByaXZhdGUgZnVuY3Rpb24uCiAKICAgICBkZWYgdGVzdF9pbmZpbml0eShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSU5GcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGluZiA9IERlY2ltYWwoJ0lORicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1pbmYpLCAoLWluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oaW5mKSwgKGluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X25hbihzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgTkFOcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGZvciBuYW4gaW4gKERlY2ltYWwoJ05BTicpLCBEZWNpbWFsKCdzTkFOJykpOgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKG5hbikKKyAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8obmFuKQogICAgICAgICAgICAgIyBCZWNhdXNlIE5BTnMgYWx3YXlzIGNvbXBhcmUgbm9uLWVxdWFsLCB3ZSBjYW5ub3QgdXNlIGFzc2VydEVxdWFsLgogICAgICAgICAgICAgIyBOb3IgY2FuIHdlIHVzZSBhbiBpZGVudGl0eSB0ZXN0LCBhcyB3ZSBkb24ndCBndWFyYW50ZWUgYW55dGhpbmcKICAgICAgICAgICAgICMgYWJvdXQgdGhlIG9iamVjdCBpZGVudGl0eS4KQEAgLTc2NywzMCArNzc4LDMwIEBACiAgICAgICAgIGZvciBkIGluIG51bWJlcnM6CiAgICAgICAgICAgICAjIEZpcnN0IHRlc3QgcG9zaXRpdmUgZGVjaW1hbHMuCiAgICAgICAgICAgICBhc3NlcnQgZCA+IDAKLSAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhkKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKICAgICAgICAgICAgICMgVGhlbiB0ZXN0IG5lZ2F0aXZlIGRlY2ltYWxzLgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1kKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG51bSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZW4sIDApCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdCB3aGVuIHRoZSBleHBvbmVudCBpcyBuZWdhdGl2ZS4KLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQsIDEwMDAwKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjAuMTIzNCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsICg2MTcsIDUwMDApKQogCiAgICAgZGVmIHRlc3RfcG9zaXRpdmVfZXhwb25lbnQoc2VsZik6CiAgICAgICAgICMgVGVzdCByZXN1bHRzIHdoZW4gdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQwMDAwLCAxKSkKIAogICAgIGRlZiB0ZXN0X3JlZ3Jlc3Npb25fMjA1MzYoc2VsZik6CiAgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAyMDUzNi4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTM2Ci0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjFlMiIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMWUyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEwMCwgMSkpCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuNDdlNSIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDE0NzAwMCwgMSkpCiAKIApAQCAtOTcxLDYgKzk4MiwzNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9uYW5fZXF1YWwoeCwgbmFuKSkKIAogCitjbGFzcyBGYWlsTmVnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCBfZmFpbF9uZWcgcHJpdmF0ZSBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X3Bhc3NfdGhyb3VnaChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuCisgICAgICAgIHZhbHVlcyA9IFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXQorICAgICAgICBuZXcgPSBsaXN0KHN0YXRpc3RpY3MuX2ZhaWxfbmVnKHZhbHVlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzLCBuZXcpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZXNfcmFpc2Uoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG5lZ2F0aXZlcyByYWlzZSBhbiBleGNlcHRpb24uCisgICAgICAgIGZvciB4IGluIFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXToKKyAgICAgICAgICAgIHNlcSA9IFsteF0KKyAgICAgICAgICAgIGl0ID0gc3RhdGlzdGljcy5fZmFpbF9uZWcoc2VxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IsIG5leHQsIGl0KQorCisgICAgZGVmIHRlc3RfZXJyb3JfbXNnKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIGdpdmVuIGVycm9yIG1lc3NhZ2UgaXMgdXNlZC4KKyAgICAgICAgbXNnID0gImJhZG5lc3MgIyVkIiAlIHJhbmRvbS5yYW5kaW50KDEwMDAwLCA5OTk5OSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChzdGF0aXN0aWNzLl9mYWlsX25lZyhbLTFdLCBtc2cpKQorICAgICAgICBleGNlcHQgc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGVycm1zZyA9IGUuYXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24sIGJ1dCBpdCBkaWRuJ3QgaGFwcGVuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJtc2csIG1zZykKKworCiAjID09PSBUZXN0cyBmb3IgcHVibGljIGZ1bmN0aW9ucyA9PT0KIAogY2xhc3MgVW5pdmFyaWF0ZUNvbW1vbk1peGluOgpAQCAtMTA4MiwxMyArMTEyMSwxMyBAQAogICAgIE5vdCBhbGwgdGVzdHMgdG8gZG8gd2l0aCB0eXBlcyBuZWVkIGdvIGluIHRoaXMgY2xhc3MuIE9ubHkgdGhvc2UgdGhhdAogICAgIHJlbHkgb24gdGhlIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgc2FtZSB0eXBlIGFzIGl0cyBpbnB1dCBkYXRhLgogICAgICIiIgotICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCi0gICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgotICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KKyAgICBkZWYgcHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgdHlwZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGJlIGNvbnNlcnZlZC4iIiIKICAgICAgICAgY2xhc3MgTXlGbG9hdChmbG9hdCk6CiAgICAgICAgICAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX190cnVlZGl2X18ob3RoZXIpKQorICAgICAgICAgICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3J0cnVlZGl2X18ob3RoZXIpKQogICAgICAgICAgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX19zdWJfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIpOgpAQCAtMTA5OCw5ICsxMTM3LDE0IEBACiAgICAgICAgICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX2FkZF9fKG90aGVyKSkKICAgICAgICAgICAgIF9fcmFkZF9fID0gX19hZGRfXworICAgICAgICByZXR1cm4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCkKIAorICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCisgICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgorICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KICAgICAgICAgZGF0YSA9IHNlbGYucHJlcGFyZV9kYXRhKCkKLSAgICAgICAgZm9yIGtpbmQgaW4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCk6CisgICAgICAgIGZvciBraW5kIGluIHNlbGYucHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3QoKToKICAgICAgICAgICAgIGQgPSBba2luZCh4KSBmb3IgeCBpbiBkYXRhXQogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5mdW5jKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmVzdWx0KSwga2luZCkKQEAgLTEyNzUsMTIgKzEzMTksMTYgQEAKICAgICAgICAgZm9yIHggaW4gKDIzLCA0Mi41LCAxLjNlMTUsIEZyYWN0aW9uKDE1LCAxOSksIERlY2ltYWwoJzAuMjgnKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbeF0pLCB4KQogCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKQorCiAgICAgZGVmIHRlc3RfcmVwZWF0ZWRfc2luZ2xlX3ZhbHVlKHNlbGYpOgogICAgICAgICAjIFRoZSBhdmVyYWdlIG9mIGEgc2luZ2xlIHJlcGVhdGVkIHZhbHVlIGlzIHRoZSB2YWx1ZSBpdHNlbGYuCi0gICAgICAgIGZvciB4IGluICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKToKKyAgICAgICAgZm9yIHggaW4gc2VsZi5wcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3QoKToKICAgICAgICAgICAgIGZvciBjb3VudCBpbiAoMiwgNSwgMTAsIDIwKToKLSAgICAgICAgICAgICAgICBkYXRhID0gW3hdKmNvdW50Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14LCBjb3VudD1jb3VudCk6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCiAKIAogY2xhc3MgVGVzdE1lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgpAQCAtMTMwNCw3ICsxMzUyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDIyLjAxNTYyNSkKIAogICAgIGRlZiB0ZXN0X2RlY2ltYWxzKHNlbGYpOgotICAgICAgICAjIFRlc3QgbWVhbiB3aXRoIGludHMuCisgICAgICAgICMgVGVzdCBtZWFuIHdpdGggRGVjaW1hbHMuCiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIGRhdGEgPSBbRCgiMS42MzQiKSwgRCgiMi41MTciKSwgRCgiMy45MTIiKSwgRCgiNC4wNzIiKSwgRCgiNS44MTMiKV0KICAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKQEAgLTEzNzksNiArMTQyNyw5NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLm1lYW4oW3RpbnldKm4pLCB0aW55KQogCiAKK2NsYXNzIFRlc3RIYXJtb25pY01lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mdW5jID0gc3RhdGlzdGljcy5oYXJtb25pY19tZWFuCisKKyAgICBkZWYgcHJlcGFyZV9kYXRhKHNlbGYpOgorICAgICAgICAjIE92ZXJyaWRlIG1peGluIG1ldGhvZC4KKyAgICAgICAgdmFsdWVzID0gc3VwZXIoKS5wcmVwYXJlX2RhdGEoKQorICAgICAgICB2YWx1ZXMucmVtb3ZlKDApCisgICAgICAgIHJldHVybiB2YWx1ZXMKKworICAgIGRlZiBwcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC4xMjUnKSkKKworICAgIGRlZiB0ZXN0X3plcm8oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4gcmV0dXJucyB6ZXJvIHdoZW4gZ2l2ZW4gemVyby4KKyAgICAgICAgdmFsdWVzID0gWzEsIDAsIDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDApCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByYWlzZXMgd2hlbiBnaXZlbiBhIG5lZ2F0aXZlIHZhbHVlLgorICAgICAgICBleGMgPSBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvcgorICAgICAgICBmb3IgdmFsdWVzIGluIChbLTFdLCBbMSwgLTIsIDNdKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZhbHVlcz12YWx1ZXMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2VsZi5mdW5jLCB2YWx1ZXMpCisKKyAgICBkZWYgdGVzdF9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIGludHMuCisgICAgICAgIGRhdGEgPSBbMiwgNCwgNCwgOCwgMTYsIDE2XQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgNio0LzUpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfZXhhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggc29tZSBjYXJlZnVsbHkgY2hvc2VuIGZsb2F0cy4KKyAgICAgICAgZGF0YSA9IFsxLzgsIDEvNCwgMS80LCAxLzIsIDEvMl0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDEvNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoWzAuMjUsIDAuNSwgMS4wLCAxLjBdKSwgMC41KQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9uX2xpc3RzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuKFt4XSkgcmV0dXJucyAoYXBwcm94aW1hdGVseSkgeC4KKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMSwgMTAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsc19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gRGVjaW1hbHMuCisgICAgICAgIEQgPSBEZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFtEKDE1KSwgRCgzMCksIEQoNjApLCBEKDYwKV0pLCBEKDMwKSkKKyAgICAgICAgZGF0YSA9IFtEKCIwLjA1IiksIEQoIjAuMTAiKSwgRCgiMC4yMCIpLCBEKCIwLjIwIildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKCIwLjEwIikpCisgICAgICAgIGRhdGEgPSBbRCgiMS42OCIpLCBEKCIwLjMyIiksIEQoIjUuOTQiKSwgRCgiMi43NSIpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRCg2NjUyOCkvNzA3MjMpCisKKyAgICBkZWYgdGVzdF9mcmFjdGlvbnMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggRnJhY3Rpb25zLgorICAgICAgICBGID0gRnJhY3Rpb24KKyAgICAgICAgZGF0YSA9IFtGKDEsIDIpLCBGKDIsIDMpLCBGKDMsIDQpLCBGKDQsIDUpLCBGKDUsIDYpLCBGKDYsIDcpLCBGKDcsIDgpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRig3KjQyMCwgNDAyOSkpCisKKyAgICBkZWYgdGVzdF9pbmYoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW5maW5pdHkuCisgICAgICAgIHZhbHVlcyA9IFsyLjAsIGZsb2F0KCdpbmYnKSwgMS4wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyh2YWx1ZXMpLCAyLjApCisKKyAgICBkZWYgdGVzdF9uYW4oc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggTkFOcy4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ25hbicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHNlbGYuZnVuYyh2YWx1ZXMpKSkKKworICAgIGRlZiB0ZXN0X211bHRpcGx5X2RhdGFfcG9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgbXVsdGlwbHlpbmcgZXZlcnkgZGF0YSBwb2ludCBieSBhIGNvbnN0YW50LgorICAgICAgICBjID0gMTExCisgICAgICAgIGRhdGEgPSBbMy40LCA0LjUsIDQuOSwgNi43LCA2LjgsIDcuMiwgOC4wLCA4LjEsIDkuNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkqYworICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoW3gqYyBmb3IgeCBpbiBkYXRhXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZG91YmxlZF9kYXRhKHNlbGYpOgorICAgICAgICAjIEhhcm1vbmljIG1lYW4gb2YgW2EsYi4uLnpdIHNob3VsZCBiZSBzYW1lIGFzIGZvciBbYSxhLGIsYi4uLnosel0uCisgICAgICAgIGRhdGEgPSBbcmFuZG9tLnVuaWZvcm0oMSwgNSkgZm9yIF8gaW4gcmFuZ2UoMTAwMCldCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5mdW5jKGRhdGEpCisgICAgICAgIGFjdHVhbCA9IHNlbGYuZnVuYyhkYXRhKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0QXBwcm94RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0TWVkaWFuKE51bWVyaWNUZXN0Q2FzZSwgQXZlcmFnZU1peGluKToKICAgICAjIENvbW1vbiB0ZXN0cyBmb3IgbWVkaWFuIGFuZCBhbGwgbWVkaWFuLiogZnVuY3Rpb25zLgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2MDAsNiArMTczNiwyMiBAQAogICAgICAgICBkYXRhID0gWzIyMCwgMjIwLCAyNDAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjgwLCAyODAsIDMwMCwgMzIwLCAzNDBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEsIDIwKSwgMjY1LjApCiAKKyAgICBkZWYgdGVzdF9kYXRhX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCBtZWRpYW5fZ3JvdXBlZCB3aXRoIHN0ciwgYnl0ZXMgZGF0YSB0eXBlcyBmb3IgZGF0YSBhbmQgaW50ZXJ2YWwKKyAgICAgICAgZGF0YSA9IFsiIiwgIiIsICIiXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gW2IiIiwgYiIiLCBiIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbMSwgMiwgM10KKyAgICAgICAgaW50ZXJ2YWwgPSAiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9IGIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisKIAogY2xhc3MgVGVzdE1vZGUoTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgogICAgICMgVGVzdCBjYXNlcyBmb3IgdGhlIGRpc2NyZXRlIHZlcnNpb24gb2YgbW9kZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CmluZGV4IDc3MmNkMDYuLjcyYjE5MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQpAQCAtMjMsOSArMjMsOSBAQAogICAgICIiIgogICAgIG5ld190ZXh0ID0gcmUuZXNjYXBlKHRleHQpCiAgICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKHJlLmVzY2FwZShhbXBtKSwgYW1wbSkKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1wlJywgJyUnKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXDonLCAnOicpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcPycsICc/JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcJScsICclJykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcOicsICc6JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcPycsICc/JykKICAgICByZXR1cm4gbmV3X3RleHQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQppbmRleCA4N2NmZmU4Li4zN2FjZTIzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQpAQCAtMTIxLDkgKzEyMSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYidceDAxJyAiIiIpLCBieXRlKDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1x4ODEnICIiIiksIGJ5dGUoMHg4MSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYidceDgxJyAiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXHUxODgxJyAiIiIpLCBiJ1xcJyArIGIndTE4ODEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidcdTE4ODEnICIiIiksIGInXFwnICsgYid1MTg4MScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYidcdTE4ODEnICIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidcVTAwMDFkMTIwJyAiIiIpLCBiJ1xcJyArIGInVTAwMDFkMTIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXFUwMDAxZDEyMCcgIiIiKSwgYidcXCcgKyBiJ1UwMDAxZDEyMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYidcVTAwMDFkMTIwJyAiIiIpCiAKICAgICBkZWYgdGVzdF9ldmFsX2J5dGVzX2luY29tcGxldGUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQppbmRleCA4NTEyNmU2Li4yMmVhYzMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgcmUKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlIGFzIGRhdGV0aW1lX2RhdGUKIApAQCAtMTMwLDcgKzEyOSw3IEBACiAgICAgZGVmIHRlc3RfcGF0dGVybl9lc2NhcGluZyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYW55IGNoYXJhY3RlcnMgaW4gdGhlIGZvcm1hdCBzdHJpbmcgdGhhdCBtaWdodCBiZSB0YWtlbiBhcwogICAgICAgICAjIHJlZ2V4IHN5bnRheCBpcyBlc2NhcGVkLgotICAgICAgICBwYXR0ZXJuX3N0cmluZyA9IHNlbGYudGltZV9yZS5wYXR0ZXJuKCJcZCsiKQorICAgICAgICBwYXR0ZXJuX3N0cmluZyA9IHNlbGYudGltZV9yZS5wYXR0ZXJuKHIiXGQrIikKICAgICAgICAgc2VsZi5hc3NlcnRJbihyIlxcZFwrIiwgcGF0dGVybl9zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIiVzIGRvZXMgbm90IGhhdmUgcmUgY2hhcmFjdGVycyBlc2NhcGVkIHByb3Blcmx5IiAlCiAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybl9zdHJpbmcpCkBAIC0xNTMsOCArMTUyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyB1c2luZyAnJXMnOyBncm91cCAnYScgPSAnJXMnLCBncm91cCAnYicgPSAlcyciICUKICAgICAgICAgICAgICAgICAgICAgICAgICAoZm91bmQuc3RyaW5nLCBmb3VuZC5yZS5wYXR0ZXJuLCBmb3VuZC5ncm91cCgnYScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZC5ncm91cCgnYicpKSkKLSAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ2EnLCdBJywnYicsJ0InLCdjJywnZCcsJ0gnLCdJJywnaicsJ20nLCdNJywncCcsJ1MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnVScsJ3cnLCdXJywneCcsJ1gnLCd5JywnWScsJ1onLCclJyk6CisgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdhJywnQScsJ2InLCdCJywnYycsJ2QnLCdHJywnSCcsJ0knLCdqJywnbScsJ00nLCdwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1MnLCd1JywnVScsJ1YnLCd3JywnVycsJ3gnLCdYJywneScsJ1knLCdaJywnJScpOgogICAgICAgICAgICAgY29tcGlsZWQgPSBzZWxmLnRpbWVfcmUuY29tcGlsZSgiJSIgKyBkaXJlY3RpdmUpCiAgICAgICAgICAgICBmb3VuZCA9IGNvbXBpbGVkLm1hdGNoKHRpbWUuc3RyZnRpbWUoIiUiICsgZGlyZWN0aXZlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgIk1hdGNoaW5nIGZhaWxlZCBvbiAnJXMnIHVzaW5nICclcycgcmVnZXgiICUKQEAgLTE3MSw5ICsxNzAsOSBAQAogCiAgICAgZGVmIHRlc3RfbWF0Y2hpbmdfd2l0aF9lc2NhcGVzKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBhIGZvcm1hdCB0aGF0IHJlcXVpcmVzIGVzY2FwaW5nIG9mIGNoYXJhY3RlcnMgd29ya3MKLSAgICAgICAgY29tcGlsZWRfcmUgPSBzZWxmLnRpbWVfcmUuY29tcGlsZSgiXHcrICVtIikKLSAgICAgICAgZm91bmQgPSBjb21waWxlZF9yZS5tYXRjaCgiXHcrIDEwIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiRXNjYXBpbmcgZmFpbGVkIG9mIGZvcm1hdCAnXHcrIDEwJyIpCisgICAgICAgIGNvbXBpbGVkX3JlID0gc2VsZi50aW1lX3JlLmNvbXBpbGUociJcdysgJW0iKQorICAgICAgICBmb3VuZCA9IGNvbXBpbGVkX3JlLm1hdGNoKHIiXHcrIDEwIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCByIkVzY2FwaW5nIGZhaWxlZCBvZiBmb3JtYXQgJ1x3KyAxMCciKQogCiAgICAgZGVmIHRlc3RfbG9jYWxlX2RhdGFfd19yZWdleF9tZXRhY2hhcmFjdGVycyhzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IGlmIGxvY2FsZSBkYXRhIGNvbnRhaW5zIHJlZ2V4IG1ldGFjaGFyYWN0ZXJzIHRoZXkgYXJlCkBAIC0yMTksNiArMjE4LDI2IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJyVzJyBkaWQgbm90IHJhaXNlIFZhbHVlRXJyb3IiICUgYmFkX2Zvcm1hdCkKIAorICAgICAgICAjIEFtYmlndW91cyBvciBpbmNvbXBsZXRlIGNhc2VzIHVzaW5nIElTTyB5ZWFyL3dlZWsvd2Vla2RheSBkaXJlY3RpdmVzCisgICAgICAgICMgMS4gSVNPIHdlZWsgKCVWKSBpcyBzcGVjaWZpZWQsIGJ1dCB0aGUgeWVhciBpcyBzcGVjaWZpZWQgd2l0aCAlWQorICAgICAgICAjIGluc3RlYWQgb2YgJUcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTAiLCAiJVkgJVYiKQorICAgICAgICAjIDIuIElTTyB5ZWFyICglRykgYW5kIElTTyB3ZWVrICglVikgYXJlIHNwZWNpZmllZCwgYnV0IHdlZWtkYXkgaXMgbm90CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUxIiwgIiVHICVWIikKKyAgICAgICAgIyAzLiBJU08geWVhciAoJUcpIGFuZCB3ZWVrZGF5IGFyZSBzcGVjaWZpZWQsIGJ1dCBJU08gd2VlayAoJVYpIGlzIG5vdAorICAgICAgICBmb3IgdyBpbiAoJ0EnLCAnYScsICd3JywgJ3UnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MSIsIiVHICV7fSIuZm9ybWF0KHcpKQorICAgICAgICAjIDQuIElTTyB5ZWFyIGlzIHNwZWNpZmllZCBhbG9uZSAoZS5nLiB0aW1lLnN0cnB0aW1lKCcyMDE1JywgJyVHJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIyMDE1IiwgIiVHIikKKyAgICAgICAgIyA1LiBKdWxpYW4vb3JkaW5hbCBkYXkgKCVqKSBpcyBzcGVjaWZpZWQgd2l0aCAlRywgYnV0IG5vdCAlWQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSAyNTYiLCAiJUcgJWoiKQorCisKICAgICBkZWYgdGVzdF9zdHJwdGltZV9leGNlcHRpb25fY29udGV4dChzZWxmKToKICAgICAgICAgIyBjaGVjayB0aGF0IHRoaXMgZG9lc24ndCBjaGFpbiBleGNlcHRpb25zIG5lZWRsZXNzbHkgKHNlZSAjMTc1NzIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgZToKQEAgLTI5MCw3ICszMDksNyBAQAogCiAgICAgZGVmIHRlc3Rfd2Vla2RheShzZWxmKToKICAgICAgICAgIyBUZXN0IHdlZWtkYXkgZGlyZWN0aXZlcwotICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnQScsICdhJywgJ3cnKToKKyAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ0EnLCAnYScsICd3JywgJ3UnKToKICAgICAgICAgICAgIHNlbGYuaGVscGVyKGRpcmVjdGl2ZSw2KQogCiAgICAgZGVmIHRlc3RfanVsaWFuKHNlbGYpOgpAQCAtMzg0LDcgKzQwMyw3IEBACiAgICAgICAgICMgdW5iYWxhbmNlZCBwYXJlbnRoZXNlcyB3aGVuIHRoZSByZWdleCBpcyBjb21waWxlZCBpZiB0aGV5IGFyZSBub3QKICAgICAgICAgIyBlc2NhcGVkLgogICAgICAgICAjIFRlc3QgaW5zdGlnYXRlZCBieSBidWcgIzc5NjE0OSAuCi0gICAgICAgIG5lZWRfZXNjYXBpbmcgPSAiLl4kKis/e31cW118KSgiCisgICAgICAgIG5lZWRfZXNjYXBpbmcgPSByIi5eJCorP3t9XFtdfCkoIgogICAgICAgICBzZWxmLmFzc2VydFRydWUoX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKG5lZWRfZXNjYXBpbmcsIG5lZWRfZXNjYXBpbmcpKQogCiAgICAgZGVmIHRlc3RfZmViMjlfb25fbGVhcF95ZWFyX3dpdGhvdXRfeWVhcihzZWxmKToKQEAgLTQ1NywxNiArNDc2LDIwIEBACiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gaW5mZXIgZGF0ZSBpZiBnaXZlbiB5ZWFyLCB3ZWVrIG9mIHllYXIgKCVVIG9yICVXKQogICAgICAgICAjIGFuZCBkYXkgb2YgdGhlIHdlZWsKICAgICAgICAgZGVmIHRlc3RfaGVscGVyKHltZF90dXBsZSwgdGVzdF9yZWFzb24pOgotICAgICAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ1cnLCAnVScpOgotICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSAiJSVZICUlJXMgJSV3IiAlIGRpcmVjdGl2ZQotICAgICAgICAgICAgICAgIGR0X2RhdGUgPSBkYXRldGltZV9kYXRlKCp5bWRfdHVwbGUpCi0gICAgICAgICAgICAgICAgc3RycF9pbnB1dCA9IGR0X2RhdGUuc3RyZnRpbWUoZm9ybWF0X3N0cmluZykKLSAgICAgICAgICAgICAgICBzdHJwX291dHB1dCA9IF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShzdHJwX2lucHV0LCBmb3JtYXRfc3RyaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJwX291dHB1dFs6M10gPT0geW1kX3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVzKCVzKSB0ZXN0IGZhaWxlZCB3LyAnJXMnOiAlcyAhPSAlcyAoJXMgIT0gJXMpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRlc3RfcmVhc29uLCBkaXJlY3RpdmUsIHN0cnBfaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0WzozXSwgeW1kX3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs3XSwgZHRfZGF0ZS50aW1ldHVwbGUoKVs3XSkpCisgICAgICAgICAgICBmb3IgeWVhcl93ZWVrX2Zvcm1hdCBpbiAoJyVZICVXJywgJyVZICVVJywgJyVHICVWJyk6CisgICAgICAgICAgICAgICAgZm9yIHdlZWtkYXlfZm9ybWF0IGluICgnJXcnLCAnJXUnLCAnJWEnLCAnJUEnKToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IHllYXJfd2Vla19mb3JtYXQgKyAnICcgKyB3ZWVrZGF5X2Zvcm1hdAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0X3JlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT15bWRfdHVwbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mb3JtYXRfc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUgPSBkYXRldGltZV9kYXRlKCp5bWRfdHVwbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiJXI6ICVzICE9ICVzIiAlIChzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwgbXNnKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgMyksICJ3ZWVrIDAiKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgOCksICJjb21tb24gY2FzZSIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAxMyksICJkYXkgb24gU3VuZGF5IikKQEAgLTQ5OCwzMyArNTIxLDQ4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZSh2YWx1ZSwgZm9ybWF0KVs6LTFdLCBleHBlY3RlZCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVVICV3JywgMjAxNCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMCcsICclWSAlVyAldycsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMScsICclRyAlViAldScsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKICAgICAgICAgY2hlY2soJzIwMTUgMCAxJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMicsICclRyAlViAldScsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAyJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMycsICclRyAlViAldScsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMTUgMCAzJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNCcsICclRyAlViAldScsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVSAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVyAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNScsICclRyAlViAldScsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVSAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVyAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNicsICclRyAlViAldScsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVSAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVyAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNycsICclRyAlViAldScsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCiAKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVVICV3JywgMjAwOCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMCcsICclWSAlVyAldycsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMScsICclRyAlViAldScsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMDkgMCAxJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMicsICclRyAlViAldScsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMDkgMCAyJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMycsICclRyAlViAldScsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKICAgICAgICAgY2hlY2soJzIwMDkgMCAzJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNCcsICclRyAlViAldScsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVSAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVyAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNScsICclRyAlViAldScsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVSAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVyAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNicsICclRyAlViAldScsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVSAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVyAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNycsICclRyAlViAldScsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisKIAogY2xhc3MgQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IGNhY2hpbmcgd29ya3MgcHJvcGVybHkuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGVmYmRiZmMuLjRkOWQ2MDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgYWJjCiBpbXBvcnQgYXJyYXkKK2ltcG9ydCBtYXRoCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN0cnVjdApAQCAtMTUsMjIgKzE2LDEwIEBACiBkZWYgaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoYnl0ZW9yZGVycz1ieXRlb3JkZXJzKToKICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgogICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgbm90IGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ24nLCAnTicpKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgeWllbGQgY29kZSwgYnl0ZW9yZGVyCiAKLSMgTmF0aXZlICdxJyBwYWNraW5nIGlzbid0IGF2YWlsYWJsZSBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgQwotIyBsb25nIGxvbmcgdHlwZS4KLXRyeToKLSAgICBzdHJ1Y3QucGFjaygncScsIDUpCi1leGNlcHQgc3RydWN0LmVycm9yOgotICAgIEhBVkVfTE9OR19MT05HID0gRmFsc2UKLWVsc2U6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBUcnVlCi0KIGRlZiBzdHJpbmdfcmV2ZXJzZShzKToKICAgICByZXR1cm4gc1s6Oi0xXQogCkBAIC0xNTgsOSArMTQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcsICduTicKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBuYXRpdmVfcGFpcnMgKz0gJ3FRJywKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJywgJ3FRJwogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgogICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnJywgJ0AnOgogICAgICAgICAgICAgICAgIHNpZ25lZF9zaXplID0gc3RydWN0LmNhbGNzaXplKGJ5dGVvcmRlciArIGZvcm1hdF9wYWlyWzBdKQpAQCAtMTczLDkgKzE2MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDQsIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2gnKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaScpLCBzdHJ1Y3QuY2FsY3NpemUoJ2wnKSkKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnaScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdQJykpCiAKQEAgLTM2Niw4ICszNTIsNiBAQAogICAgICAgICAjIFNGIGJ1ZyA3MDU4MzYuICAiPGYiIGFuZCAiPmYiIGhhZCBhIHNldmVyZSByb3VuZGluZyBidWcsIHdoZXJlIGEgY2FycnkKICAgICAgICAgIyBmcm9tIHRoZSBsb3ctb3JkZXIgZGlzY2FyZGVkIGJpdHMgY291bGQgcHJvcGFnYXRlIGludG8gdGhlIGV4cG9uZW50CiAgICAgICAgICMgZmllbGQsIGNhdXNpbmcgdGhlIHJlc3VsdCB0byBiZSB3cm9uZyBieSBhIGZhY3RvciBvZiAyLgotICAgICAgICBpbXBvcnQgbWF0aAotCiAgICAgICAgIGZvciBiYXNlIGluIHJhbmdlKDEsIDMzKToKICAgICAgICAgICAgICMgc21hbGxlciA8LSBsYXJnZXN0IHJlcHJlc2VudGFibGUgZmxvYXQgbGVzcyB0aGFuIGJhc2UuCiAgICAgICAgICAgICBkZWx0YSA9IDAuNQpAQCAtNjU5LDYgKzY0MywxMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCisgICAgZGVmIHRlc3RfaGFsZl9mbG9hdChzZWxmKToKKyAgICAgICAgIyBMaXR0bGUtZW5kaWFuIGV4YW1wbGVzIGZyb206CisgICAgICAgICMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxmX3ByZWNpc2lvbl9mbG9hdGluZy1wb2ludF9mb3JtYXQKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3QgPSBbCisgICAgICAgICAgICAoYidceDAwXHgzYycsIDEuMCksCisgICAgICAgICAgICAoYidceDAwXHhjMCcsIC0yLjApLAorICAgICAgICAgICAgKGInXHhmZlx4N2InLCA2NTUwNC4wKSwgIyAgKG1heCBoYWxmIHByZWNpc2lvbikKKyAgICAgICAgICAgIChiJ1x4MDBceDA0JywgMioqLTE0KSwgIyB+PSA2LjEwMzUyICogMTAqKi01IChtaW4gcG9zIG5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDFceDAwJywgMioqLTI0KSwgIyB+PSA1Ljk2MDQ2ICogMTAqKi04IChtaW4gcG9zIHN1Ym5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDBceDAwJywgMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDgwJywgLTAuMCksCisgICAgICAgICAgICAoYidceDAwXHg3YycsIGZsb2F0KCcraW5mJykpLAorICAgICAgICAgICAgKGInXHgwMFx4ZmMnLCBmbG9hdCgnLWluZicpKSwKKyAgICAgICAgICAgIChiJ1x4NTVceDM1JywgMC4zMzMyNTE5NTMxMjUpLCAjIH49IDEvMworICAgICAgICBdCisKKyAgICAgICAgZm9yIGxlX2JpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3Q6CisgICAgICAgICAgICBiZV9iaXRzID0gbGVfYml0c1s6Oi0xXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc8ZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnPGUnLCBmKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnPmUnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmVfYml0cywgc3RydWN0LnBhY2soJz5lJywgZikpCisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVfYml0cywgc3RydWN0LnBhY2soJ2UnLCBmKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgYmVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorCisgICAgICAgICMgQ2hlY2sgZm9yIE5hTiBoYW5kbGluZzoKKyAgICAgICAgZm9ybWF0X2JpdHNfX25hbl9saXN0ID0gWworICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4ZmMnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceGZlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHhmZicpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4N2MnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceDdlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHg3ZicpLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMgaW4gZm9ybWF0X2JpdHNfX25hbl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc3RydWN0LnVucGFjaygnPGUnLCBiaXRzKVswXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc+ZScsIGJpdHNbOjotMV0pWzBdKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgcGFja2luZyBwcm9kdWNlcyBhIGJpdCBwYXR0ZXJuIHJlcHJlc2VudGluZyBhIHF1aWV0IE5hTjoKKyAgICAgICAgIyBhbGwgZXhwb25lbnQgYml0cyBhbmQgdGhlIG1zYiBvZiB0aGUgZnJhY3Rpb24gc2hvdWxkIGFsbCBiZSAxLgorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCBtYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCAtbWF0aC5uYW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2VkWzFdICYgMHg3ZSwgMHg3ZSkKKworICAgICAgICAjIENoZWNrcyBmb3Igcm91bmQtdG8tZXZlbiBiZWhhdmlvcgorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fcm91bmRpbmdfbGlzdCA9IFsKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAxJywgMi4wKiotMjUgKyAyLjAqKi0zNSksICMgUm91bmRzIHRvIG1pbmltdW0gc3Vibm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDAnLCAyLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjQpLCAjIExhcmdlc3Qgc3Vibm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgwM1x4ZmYnLCAyLjAqKi0xNCAtIDIuMCoqLTI1IC0gMi4wKiotNjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCAtIDIuMCoqLTI1KSwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDRceDAwJywgMi4wKiotMTQpLCAjIFNtYWxsZXN0IG5vcm1hbC4KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAxJywgMS4wKzIuMCoqLTExICsgMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTEyKSwgIyByb3VuZHMgdG8gMS4wCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTA0KSwgIyBsYXJnZXN0IG5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg3Ylx4ZmYnLCA2NTUxOSksICMgcm91bmRzIHRvIDY1NTA0CisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMScsIC0yLjAqKi0yNSAtIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAwJywgLTIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjYpLCAjIFVuZGVyZmxvd3MgdG8gemVybworICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDEnLCAtMS4wLTIuMCoqLTExIC0gMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMSksICMgcm91bmRzIHRvIDEuMCAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMCcsIC0xLjAtMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ZmJceGZmJywgLTY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKworICAgICAgICAjIFRoaXMgb3ZlcmZsb3dzLCBhbmQgc28gcmFpc2VzIGFuIGVycm9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAjIFZhbHVlcyB0aGF0IHJvdW5kIHRvIGluZmluaXR5LgorICAgICAgICAgICAgKCc+ZScsIDY1NTIwLjApLAorICAgICAgICAgICAgKCc+ZScsIDY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIDFlMzAwKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgLTY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIC0xZTMwMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgMWUzMDApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgLTFlMzAwKSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0Y29kZSwgZikKKworICAgICAgICAjIERvdWJsZSByb3VuZGluZworICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHg2N1x4ZmYnLCAweDFmZmRmZmZmZmYgKiAyKiotMjYpLCAjIHNob3VsZCBiZSAyMDQ3LCBpZiBkb3VibGUtcm91bmRlZCA2ND4zMj4xNiwgYmVjb21lcyAyMDQ4CisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTEyZmIxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkKQEAgLTAsMCArMSwyNjggQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGluaXRpYWxpemVkID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShBLmluaXRpYWxpemVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoQi5pbml0aWFsaXplZCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZGljdChzZWxmKToKKyAgICAgICAgY2xhc3MgQShkaWN0KToKKyAgICAgICAgICAgIGluaXRpYWxpemVkID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShBLmluaXRpYWxpemVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoQi5pbml0aWFsaXplZCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfa3dhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGNscy5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBjbGFzcyBCKEEsIHg9Myk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLmt3YXJncywgZGljdCh4PTMpKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19lcnJvcihzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc193cm9uZyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIHdoYXRldmVyKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX3NraXBwZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2VXaXRoSW5pdDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5pbml0aWFsaXplZCA9IGNscworCisgICAgICAgIGNsYXNzIEJhc2VXaXRob3V0SW5pdChCYXNlV2l0aEluaXQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEEoQmFzZVdpdGhvdXRJbml0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydElzKEEuaW5pdGlhbGl6ZWQsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQmFzZVdpdGhvdXRJbml0LmluaXRpYWxpemVkLCBCYXNlV2l0aG91dEluaXQpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2RpYW1vbmQoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2U6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgPSBbXQorCisgICAgICAgIGNsYXNzIExlZnQoQmFzZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTWlkZGxlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgbWlkZGxlLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgKz0gW21pZGRsZV0KKworICAgICAgICBjbGFzcyBSaWdodChCYXNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIHJpZ2h0PSJyaWdodCIsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyArPSBbcmlnaHRdCisKKyAgICAgICAgY2xhc3MgQShMZWZ0LCBNaWRkbGUsIFJpZ2h0LCBtaWRkbGU9Im1pZGRsZSIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQS5jYWxscywgWyJyaWdodCIsICJtaWRkbGUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMZWZ0LmNhbGxzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChSaWdodC5jYWxscywgW10pCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZShzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQS5kLm5hbWUsICJkIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBLmQub3duZXIsIEEpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9tZXRhY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgcmV0ID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LmQubmFtZSwgImQiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0LmQub3duZXIsIHJldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gb3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQSwgMCkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xhc3MgTm90R29pbmdUb1dvcms6CisgICAgICAgICAgICAgICAgYXR0ciA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiTm90R29pbmdUb1dvcmtcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJhdHRyXGInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiRGVzY3JpcHRvclxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NhdXNlX18sIFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfd3Jvbmcoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGFzcyBOb3RHb2luZ1RvV29yazoKKyAgICAgICAgICAgICAgICBhdHRyID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJOb3RHb2luZ1RvV29ya1xiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYmF0dHJcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJEZXNjcmlwdG9yXGInKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY2F1c2VfXywgVHlwZUVycm9yKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfbG9va3VwKHNlbGYpOgorICAgICAgICByZXNvbHZlZCA9IFtdCisgICAgICAgIGNsYXNzIE5vbkRlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgcmVzb2x2ZWQuYXBwZW5kKG5hbWUpCisKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGQgPSBOb25EZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdfX3NldF9uYW1lX18nLCByZXNvbHZlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnX19zZXRfbmFtZV9fIGlzIGxvb2tlZCB1cCBpbiBpbnN0YW5jZSBkaWN0JykKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX2luaXRfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gb3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgICAgIHNlbGYubWV0YV9vd25lciA9IHNlbGYub3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm1ldGFfbmFtZSA9IHNlbGYubmFtZQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIGNscy5vd25lciA9IGNscy5kLm93bmVyCisgICAgICAgICAgICAgICAgY2xzLm5hbWUgPSBjbHMuZC5uYW1lCisKKyAgICAgICAgY2xhc3MgQihBLCBtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLm93bmVyLCBCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIubmFtZSwgJ2QnKQorICAgICAgICBzZWxmLmFzc2VydElzKEIubWV0YV9vd25lciwgQikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLm5hbWUsICdkJykKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGVzLm5ld19jbGFzcygiTXlDbGFzcyIsIChvYmplY3QsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpKQorICAgICAgICB0eXBlcy5wcmVwYXJlX2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYub3RoZXJhcmcgPSBvdGhlcmFyZworCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfZXJyb3JzX2NoYW5nZWRfcGVwNDg3KHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIGZhaWxlZCBiZWZvcmUgUHl0aG9uIDMuNiwgUEVQIDQ4NworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lPW5hbWUsIGJhc2VzPWJhc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdD1uYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlDbGFzcy5vdGhlcmFyZywgMSkKKworICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIHQgPSB0eXBlKCdOZXdDbGFzcycsIChvYmplY3QsKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0LCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19uYW1lX18sICdOZXdDbGFzcycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZShuYW1lPSdOZXdDbGFzcycsIGJhc2VzPShvYmplY3QsKSwgZGljdD17fSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CmluZGV4IDc1OGUwOTQuLjJkOTIzOWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKQEAgLTEsMjAgKzEsMTYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCBzaWduYWwKIGltcG9ydCBpbwotaW1wb3J0IGxvY2FsZQogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKLWltcG9ydCByZQogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2MKQEAgLTI1LDYgKzIxLDkgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiBtc3dpbmRvd3MgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCiAKICMKQEAgLTQ0OCw4ICs0NDcsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKCJvcmFuZ2UiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZG91dCBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTQ3OSw4ICs0NzgsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3RkZXJyLndyaXRlKCJzdHJhd2JlcnJ5IiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3RkZXJyLnJlYWQoKSwgYiJzdHJhd2JlcnJ5IikKIAogICAgIGRlZiB0ZXN0X3N0ZGVycl9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZGVyciBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTUzNSw4ICs1MzQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZW9yYW5nZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9zdGRlcnJfZmlsZShzZWxmKToKICAgICAgICAgIyBjYXB0dXJlIHN0ZG91dCBhbmQgc3RkZXJyIHRvIHRoZSBzYW1lIG9wZW4gZmlsZQpAQCAtNzk0LDE4ICs3OTMsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTFcbiIpCi0gICAgICAgIHAuc3RkaW4uZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTNcbiIpCi0gICAgICAgIHAuc3RkaW4uY2xvc2UoKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTNcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLCAibGluZTFcbiIpCisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKKyAgICAgICAgICAgIHAuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTRcbmxpbmU1XG5saW5lNlxubGluZTdcbmxpbmU4IikKIAogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZShzZWxmKToKICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpCkBAIC04OTQsMzEgKzg5NCw0MiBAQAogICAgICAgICAjCiAgICAgICAgICMgVVRGLTE2IGFuZCBVVEYtMzItQkUgYXJlIHN1ZmZpY2llbnQgdG8gY2hlY2sgYm90aCB3aXRoIEJPTSBhbmQKICAgICAgICAgIyB3aXRob3V0LCBhbmQgVVRGLTE2IGFuZCBVVEYtMzIuCi0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gWyd1dGYtMTYnLCAndXRmLTMyLWJlJ106Ci0gICAgICAgICAgICBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgIyBJbmRpcmVjdGx5IHZpYSBpby5UZXh0SU9XcmFwcGVyLCBQb3BlbigpIGRlZmF1bHRzIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgYW5kIGVhcmxpZXIgaW4gUHl0aG9uIDMuMiB0bwotICAgICAgICAgICAgIyBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKS4KLSAgICAgICAgICAgIGRlZiBnZXRwcmVmZXJyZWRlbmNvZGluZyhkb19zZXRsb2NhbGU9VHJ1ZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5nCiAgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCiAgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoJzFcclxuMlxyM1xuNCcuZW5jb2RlKCclcycpKSIgJQogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZykKICAgICAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctYycsIGNvZGVdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBnZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKLSAgICAgICAgICAgICAgICAjIGEgZGlmZmVyZW50IGNvZGUgcGF0aCBpcyB1c2VkIHdoZW4gdGhlIG51bWJlciBvZiBwaXBlcyBpcwotICAgICAgICAgICAgICAgICMgemVybyBvciBvbmUuCi0gICAgICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICcxXG4yXG4zXG40JykKIAorICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZm9yIGVycm9ycywgZXhwZWN0ZWQgaW4gWworICAgICAgICAgICAgKCdpZ25vcmUnLCAnJyksCisgICAgICAgICAgICAoJ3JlcGxhY2UnLCAnXHVmZmZkXHVmZmZkJyksCisgICAgICAgICAgICAoJ3N1cnJvZ2F0ZWVzY2FwZScsICdcdWRjODBcdWRjODAnKSwKKyAgICAgICAgICAgICgnYmFja3NsYXNocmVwbGFjZScsICdcXHg4MFxceDgwJyksCisgICAgICAgIF06CisgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCisgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYidbXHg4MFx4ODBdJykiKQorICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9ZXJyb3JzKQorICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAnW3t9XScuZm9ybWF0KGV4cGVjdGVkKSkKKwogICAgIGRlZiB0ZXN0X25vX2xlYWtpbmcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGxlYWsgbm8gcmVzb3VyY2VzCiAgICAgICAgIGlmIG5vdCBtc3dpbmRvd3M6CkBAIC0xNDMxLDYgKzE0NDIsMjcgQEAKICAgICAgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLXAucmV0dXJuY29kZSwgc2lnbmFsLlNJR0FCUlQpCiAKKyAgICBkZWYgdGVzdF9DYWxsZWRQcm9jZXNzRXJyb3Jfc3RyX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLWludChzaWduYWwuU0lHQUJSVCksICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgICMgV2UncmUgcmVseWluZyBvbiB0aGUgcmVwcigpIG9mIHRoZSBzaWduYWwuU2lnbmFscyBpbnRlbnVtIHRvIHByb3ZpZGUKKyAgICAgICAgIyB0aGUgd29yZCBzaWduYWwsIHRoZSBzaWduYWwgbmFtZSBhbmQgdGhlIG51bWVyaWMgdmFsdWUuCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNpZ25hbCIsIGVycm9yX3N0cmluZy5sb3dlcigpKQorICAgICAgICAjIFdlJ3JlIG5vdCBiZWluZyBzcGVjaWZpYyBhYm91dCB0aGUgc2lnbmFsIG5hbWUgYXMgc29tZSBzaWduYWxzIGhhdmUKKyAgICAgICAgIyBtdWx0aXBsZSBuYW1lcyBhbmQgd2hpY2ggbmFtZSBpcyByZXZlYWxlZCBjYW4gdmFyeS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigiU0lHIiwgZXJyb3Jfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEluKHN0cihzaWduYWwuU0lHQUJSVCksIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfdW5rbm93bl9zaWduYWwoc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKC05ODc2NTQzLCAiZmFrZSBjbWQiKQorICAgICAgICBlcnJvcl9zdHJpbmcgPSBzdHIoZXJyKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ1bmtub3duIHNpZ25hbCA5ODc2NTQzLiIsIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfbm9uX3plcm8oc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDIsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vbi16ZXJvIGV4aXQgc3RhdHVzIDIuIiwgZXJyb3Jfc3RyaW5nKQorCiAgICAgZGVmIHRlc3RfcHJlZXhlYyhzZWxmKToKICAgICAgICAgIyBESVNDTEFJTUVSOiBTZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBpcyAqbm90KiBhIGdvb2QgdXNlCiAgICAgICAgICMgb2YgYSBwcmVleGVjX2ZuLiAgVGhpcyBpcyBtZXJlbHkgYSB0ZXN0LgpAQCAtMTQzOSw4ICsxNDcxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKG9zLmdldGVudigiRlJVSVQiKSknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1sYW1iZGE6IG9zLnB1dGVudigiRlJVSVQiLCAiYXBwbGUiKSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3ByZWV4ZWNfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBkZWYgcmFpc2VfaXQoKToKQEAgLTE1NjEsNyArMTU5Myw3IEBACiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTU4OCw4ICsxNjIwLDggQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJlY2hvICRGUlVJVCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQpAQCAtMTU5OCwxNSArMTYzMCwxNSBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigiZWNobyAkRlJVSVQiLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X2NhbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCBvbiBVTklYCiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTYzMSw4ICsxNjYzLDggQEAKICAgICAgICAgZm9yIHNoIGluIHNoZWxsczoKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICQwIiwgZXhlY3V0YWJsZT1zaCwgc2hlbGw9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCisgICAgICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoKSwgYnl0ZXMoc2gsICdhc2NpaScpKQogCiAgICAgZGVmIF9raWxsX3Byb2Nlc3Moc2VsZiwgbWV0aG9kLCAqYXJncyk6CiAgICAgICAgICMgRG8gbm90IGluaGVyaXQgZmlsZSBoYW5kbGVzIGZyb20gdGhlIHBhcmVudC4KQEAgLTIyOTAsNyArMjMyMiw5IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKICAgICAgICAgaWRlbnQgPSBpZChwKQogICAgICAgICBwaWQgPSBwLnBpZAotICAgICAgICBkZWwgcAorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBSZXNvdXJjZVdhcm5pbmcpKToKKyAgICAgICAgICAgIHAgPSBOb25lCisKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKIApAQCAtMjMwOSw3ICsyMzQzLDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiAgICAgICAgICMgY2hlY2sgdGhhdCBwIGlzIGluIHRoZSBhY3RpdmUgcHJvY2Vzc2VzIGxpc3QKICAgICAgICAgc2VsZi5hc3NlcnRJbihpZGVudCwgW2lkKG8pIGZvciBvIGluIHN1YnByb2Nlc3MuX2FjdGl2ZV0pCkBAIC0yNTAxLDggKzI1MzcsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbInNldCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0yNTExLDggKzI1NDcsMjAgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisKKyAgICBkZWYgdGVzdF9zaGVsbF9lbmNvZGluZ3Moc2VsZik6CisgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKKyAgICAgICAgZm9yIGVuYyBpbiBbJ2Fuc2knLCAnb2VtJ106CisgICAgICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAgICAgbmV3ZW52WyJGUlVJVCJdID0gInBoeXNhbGlzIgorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuYykKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSwgZW5jKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFdpbmRvd3MKQEAgLTI1MzEsMTYgKzI1NzksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKLSAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCi0gICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCisgICAgICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCisgICAgICAgICAgICByZXR1cm5jb2RlID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXR1cm5jb2RlLCAwKQogCiAgICAgZGVmIF9raWxsX2RlYWRfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKQEAgLTI1NTMsMTkgKzI1OTksMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmMgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICAjIFRoZSBwcm9jZXNzIHNob3VsZCBlbmQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJjID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgNDIpCiAKICAgICBkZWYgdGVzdF9zZW5kX3NpZ25hbChzZWxmKToKQEAgLTI2MDgsOCArMjY1Miw3IEBACiAKICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CiAgICAgICAgICIiIkVuc3VyZSB0aGF0IF9fYWxsX18gaXMgcG9wdWxhdGVkIHByb3Blcmx5LiIiIgotICAgICAgICAjIFNUQVJUVVBJTkZPIGFkZGVkIHRvIF9fYWxsX18gaW4gMy42Ci0gICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJTVEFSVFVQSU5GTyIsICJIYW5kbGUifQorICAgICAgICBpbnRlbnRpb25hbGx5X2V4Y2x1ZGVkID0geyJsaXN0MmNtZGxpbmUiLCAiSGFuZGxlIn0KICAgICAgICAgZXhwb3J0ZWQgPSBzZXQoc3VicHJvY2Vzcy5fX2FsbF9fKQogICAgICAgICBwb3NzaWJsZV9leHBvcnRzID0gc2V0KCkKICAgICAgICAgaW1wb3J0IHR5cGVzCkBAIC0yNjU0LDExICsyNjk3LDExIEBACiAgICAgZGVmIHdpdGhfc3BhY2VzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGt3YXJnc1snc3Rkb3V0J10gPSBzdWJwcm9jZXNzLlBJUEUKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgcC5zdGRvdXQucmVhZCAoKS5kZWNvZGUoIm1iY3MiKSwKLSAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKLSAgICAgICAgKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAorICAgICAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKKyAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZ193aXRoX3NwYWNlcyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgd2l0aCBzcGFjZXMgb24gV2luZG93cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdW5hdS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKaW5kZXggMGY0MTM0ZS4uYmMxZjQ2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CmluZGV4IGI4NDg2M2YuLmE3Y2VkZWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQpAQCAtMTQzLDYgKzE0Myw4NyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KICAgICAgICAgc2VsZi5hc3NlcnRJcyhYLmYoKSwgWCkKIAorICAgIGRlZiB0ZXN0X19fY2xhc3NfX19uZXcoc2VsZik6CisgICAgICAgIHRlc3RfY2xhc3MgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgdGVzdF9jbGFzcworICAgICAgICAgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHRlc3RfY2xhc3MgPSBzZWxmLmYoKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKworICAgICAgICBzZWxmLmFzc2VydElzKHRlc3RfY2xhc3MsIEEpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fZGVsYXllZChzZWxmKToKKyAgICAgICAgdGVzdF9uYW1lc3BhY2UgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgdGVzdF9uYW1lc3BhY2UKKyAgICAgICAgICAgICAgICB0ZXN0X25hbWVzcGFjZSA9IG5hbWVzcGFjZQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKworICAgICAgICBzZWxmLmFzc2VydElzKEEsIE5vbmUpCisKKyAgICAgICAgQiA9IHR5cGUoIkIiLCAoKSwgdGVzdF9uYW1lc3BhY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQi5mKCksIEIpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fbXJvKHNlbGYpOgorICAgICAgICB0ZXN0X2NsYXNzID0gTm9uZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgbXJvKHNlbGYpOgorICAgICAgICAgICAgICAgICMgc2VsZi5mKCkgZG9lc24ndCB3b3JrIHlldC4uLgorICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X19bImYiXSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkubXJvKCkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgdGVzdF9jbGFzcworICAgICAgICAgICAgICAgIHRlc3RfY2xhc3MgPSBfX2NsYXNzX18KKworICAgICAgICBzZWxmLmFzc2VydElzKHRlc3RfY2xhc3MsIEEpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX2RlbGV0ZWQoc2VsZik6CisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIGRlbCBuYW1lc3BhY2VbJ19fY2xhc3NjZWxsX18nXQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBfX2NsYXNzX18KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBBLmYoKQorCisgICAgZGVmIHRlc3RfX19jbGFzc2NlbGxfX19yZXNldChzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgbmFtZXNwYWNlWydfX2NsYXNzY2VsbF9fJ10gPSAwCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIF9fY2xhc3NfXworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIEEuZigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQS5fX2NsYXNzY2VsbF9fLCAwKQorCiAgICAgZGVmIHRlc3Rfb2JzY3VyZV9zdXBlcl9lcnJvcnMoc2VsZik6CiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBzdXBlcigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKaW5kZXggMmMwMDQxNy4uMjY5ZDliZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQpAQCAtOSwxMyArOSwxMSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIFRFU1RGTiA9IHN1cHBvcnQuVEVTVEZOCi1URVNURElSTiA9IG9zLnBhdGguYmFzZW5hbWUodGVtcGZpbGUubWtkdGVtcChkaXI9Jy4nKSkKIAogCiBjbGFzcyBUZXN0U3VwcG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubGluayhURVNURk4pCi0gICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQogICAgIHRlYXJEb3duID0gc2V0VXAKIAogICAgIGRlZiB0ZXN0X2ltcG9ydF9tb2R1bGUoc2VsZik6CkBAIC00OCw2ICs0NiwxMCBAQAogICAgICAgICBzdXBwb3J0LnVubGluayhURVNURk4pCiAKICAgICBkZWYgdGVzdF9ybXRyZWUoc2VsZik6CisgICAgICAgIFRFU1RESVJOID0gb3MucGF0aC5iYXNlbmFtZSh0ZW1wZmlsZS5ta2R0ZW1wKGRpcj0nLicpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIFRFU1RESVJOKQorICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKKwogICAgICAgICBvcy5ta2RpcihURVNURElSTikKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKFRFU1RESVJOLCBURVNURElSTikpCiAgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQpAQCAtMjI4LDcgKzIzMCw4IEBACiAKICAgICBkZWYgdGVzdF9jaGVja19zeW50YXhfZXJyb3Ioc2VsZik6CiAgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgY2xhc3MiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3IsIHNlbGYsICIxIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieD0xIikKIAogICAgIGRlZiB0ZXN0X0NsZWFuSW1wb3J0KHNlbGYpOgogICAgICAgICBpbXBvcnQgaW1wb3J0bGliCkBAIC0zMTIsNiArMzE1LDI4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5PdGhlckNsYXNzLCBzZWxmLlJlZkNsYXNzLCBpZ25vcmU9aWdub3JlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCgpLCBtaXNzaW5nX2l0ZW1zKQogCisgICAgZGVmIHRlc3RfY2hlY2tfX2FsbF9fKHNlbGYpOgorICAgICAgICBleHRyYSA9IHsndGVtcGRpcid9CisgICAgICAgIGJsYWNrbGlzdCA9IHsndGVtcGxhdGUnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgICAgICAgZXh0cmEgPSB7J1RleHRUZXN0UmVzdWx0JywgJ2luc3RhbGxIYW5kbGVyJ30KKyAgICAgICAgYmxhY2tsaXN0ID0geydsb2FkX3Rlc3RzJywgIlRlc3RQcm9ncmFtIiwgIkJhc2VUZXN0U3VpdGUifQorCisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInVuaXR0ZXN0LnJlc3VsdCIsICJ1bml0dGVzdC5jYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bml0dGVzdC5zdWl0ZSIsICJ1bml0dGVzdC5sb2FkZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0Lm1haW4iLCAidW5pdHRlc3QucnVubmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bml0dGVzdC5zaWduYWxzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX19hbGxfXywgc2VsZiwgdW5pdHRlc3QpCisKICAgICAjIFhYWCAtZm9sbG93cyBhIGxpc3Qgb2YgdW50ZXN0ZWQgQVBJCiAgICAgIyBtYWtlX2xlZ2FjeV9weWMKICAgICAjIGlzX3Jlc291cmNlX2VuYWJsZWQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ltYm9sLnB5IGIvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzEzMDZmNQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ltYm9sLnB5CkBAIC0wLDAgKzEsNTQgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBzdWJwcm9jZXNzCisKKworU1lNQk9MX0ZJTEUgICAgICAgICAgICAgID0gc3VwcG9ydC5maW5kZmlsZSgnc3ltYm9sLnB5JykKK0dSQU1NQVJfRklMRSAgICAgICAgICAgICA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuLicsICcuLicsICdJbmNsdWRlJywgJ2dyYW1pbml0LmgnKQorVEVTVF9QWV9GSUxFICAgICAgICAgICAgID0gJ3N5bWJvbF90ZXN0LnB5JworCisKK2NsYXNzIFRlc3RTeW1ib2xHZW5lcmF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBfY29weV9maWxlX3dpdGhvdXRfZ2VuZXJhdGVkX3N5bWJvbHMoc2VsZiwgc291cmNlX2ZpbGUsIGRlc3RfZmlsZSk6CisgICAgICAgIHdpdGggb3Blbihzb3VyY2VfZmlsZSkgYXMgZnA6CisgICAgICAgICAgICBsaW5lcyA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihkZXN0X2ZpbGUsICd3JykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZWxpbmVzKGxpbmVzWzpsaW5lcy5pbmRleCgiIy0tc3RhcnQgY29uc3RhbnRzLS1cbiIpICsgMV0pCisgICAgICAgICAgICBmcC53cml0ZWxpbmVzKGxpbmVzW2xpbmVzLmluZGV4KCIjLS1lbmQgY29uc3RhbnRzLS1cbiIpOl0pCisKKyAgICBkZWYgX2dlbmVyYXRlX3N5bWJvbHMoc2VsZiwgZ3JhbW1hcl9maWxlLCB0YXJnZXRfc3ltYm9sX3B5X2ZpbGUpOgorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTWU1CT0xfRklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXJfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9zeW1ib2xfcHlfZmlsZV0sIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoKVsxXQorICAgICAgICByZXR1cm4gcHJvYy5yZXR1cm5jb2RlLCBzdGRlcnIKKworICAgIGRlZiBjb21wYXJlX2ZpbGVzKHNlbGYsIGZpbGUxLCBmaWxlMik6CisgICAgICAgIHdpdGggb3BlbihmaWxlMSkgYXMgZnA6CisgICAgICAgICAgICBsaW5lczEgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIG9wZW4oZmlsZTIpIGFzIGZwOgorICAgICAgICAgICAgbGluZXMyID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lczEsIGxpbmVzMikKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IG9zLnBhdGguZXhpc3RzKEdSQU1NQVJfRklMRSksCisgICAgICAgICAgICAgICAgICAgICAndGVzdCBvbmx5IHdvcmtzIGZyb20gc291cmNlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgZGVmIHRlc3RfcmVhbF9ncmFtbWFyX2FuZF9zeW1ib2xfZmlsZShzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBvdXRwdXQpCisKKyAgICAgICAgc2VsZi5fY29weV9maWxlX3dpdGhvdXRfZ2VuZXJhdGVkX3N5bWJvbHMoU1lNQk9MX0ZJTEUsIG91dHB1dCkKKworICAgICAgICBleGl0Y29kZSwgc3RkZXJyID0gc2VsZi5fZ2VuZXJhdGVfc3ltYm9scyhHUkFNTUFSX0ZJTEUsIG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIHN0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBleGl0Y29kZSkKKworICAgICAgICBzZWxmLmNvbXBhcmVfZmlsZXMoU1lNQk9MX0ZJTEUsIG91dHB1dCkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKaW5kZXggYzVkN2ZhYy4uMzA0NzE2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CkBAIC0xMzMsNiArMTMzLDE3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLk1pbmUubG9va3VwKCJhX21ldGhvZCIpLmlzX2Fzc2lnbmVkKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pbnRlcm5hbC5sb29rdXAoIngiKS5pc19hc3NpZ25lZCgpKQogCisgICAgZGVmIHRlc3RfYW5ub3RhdGVkKHNlbGYpOgorICAgICAgICBzdDEgPSBzeW10YWJsZS5zeW10YWJsZSgnZGVmIGYoKTpcbiAgICB4OiBpbnRcbicsICd0ZXN0JywgJ2V4ZWMnKQorICAgICAgICBzdDIgPSBzdDEuZ2V0X2NoaWxkcmVuKClbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0Mi5sb29rdXAoJ3gnKS5pc19sb2NhbCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3QyLmxvb2t1cCgneCcpLmlzX2Fubm90YXRlZCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0Mi5sb29rdXAoJ3gnKS5pc19nbG9iYWwoKSkKKyAgICAgICAgc3QzID0gc3ltdGFibGUuc3ltdGFibGUoJ2RlZiBmKCk6XG4gICAgeCA9IDFcbicsICd0ZXN0JywgJ2V4ZWMnKQorICAgICAgICBzdDQgPSBzdDMuZ2V0X2NoaWxkcmVuKClbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0NC5sb29rdXAoJ3gnKS5pc19sb2NhbCgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0NC5sb29rdXAoJ3gnKS5pc19hbm5vdGF0ZWQoKSkKKwogICAgIGRlZiB0ZXN0X2ltcG9ydGVkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50b3AubG9va3VwKCJzeXMiKS5pc19pbXBvcnRlZCgpKQogCkBAIC0xNTgsOSArMTY5LDExIEBACiAgICAgICAgIGNoZWNrZmlsZW5hbWUoImRlZiBmKHgpOiBmb28pKCIpICAjIHBhcnNlLXRpbWUKICAgICAgICAgY2hlY2tmaWxlbmFtZSgiZGVmIGYoeCk6IGdsb2JhbCB4IikgICMgc3ltdGFibGUtYnVpbGQtdGltZQogICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGIic3BhbSIsICJleGVjIikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSwgXAorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGJ5dGVhcnJheShiInNwYW0iKSwgImV4ZWMiKQotICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIG1lbW9yeXZpZXcoYiJzcGFtIiksICJleGVjIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIG1lbW9yeXZpZXcoYiJzcGFtIiksICJleGVjIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc3ltdGFibGUuc3ltdGFibGUoInBhc3MiLCBsaXN0KGIic3BhbSIpLCAiZXhlYyIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5IGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKaW5kZXggODNmNDlmNi4uODBlMzZmZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKQEAgLTM1LDE0ICszNSw2IEBACiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGtleXdvcmQKIAotSXQncyBhIHN5bnRheCBlcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IHR1cGxlLiAgV2h5IGlzbid0IGl0IGFuCi1lcnJvciB0byBhc3NpZ24gdG8gdGhlIGVtcHR5IGxpc3Q/ICBJdCB3aWxsIGFsd2F5cyByYWlzZSBzb21lIGVycm9yIGF0Ci1ydW50aW1lLgotCi0+Pj4gKCkgPSAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvICgpCi0KID4+PiBmKCkgPSAxCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGZ1bmN0aW9uIGNhbGwKQEAgLTM3NCw3ICszNjYsMjMgQEAKICAgICAgLi4uCiAgICBTeW50YXhFcnJvcjogdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzCiAKLU1pc3VzZSBvZiB0aGUgbm9ubG9jYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorTWlzdXNlIG9mIHRoZSBub25sb2NhbCBhbmQgZ2xvYmFsIHN0YXRlbWVudCBjYW4gbGVhZCB0byBhIGZldyB1bmlxdWUgc3ludGF4IGVycm9ycy4KKworICAgPj4+IGRlZiBmKCk6CisgICAuLi4gICAgIHggPSAxCisgICAuLi4gICAgIGdsb2JhbCB4CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgU3ludGF4RXJyb3I6IG5hbWUgJ3gnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBnbG9iYWwgZGVjbGFyYXRpb24KKworICAgPj4+IGRlZiBmKCk6CisgICAuLi4gICAgIHggPSAxCisgICAuLi4gICAgIGRlZiBnKCk6CisgICAuLi4gICAgICAgICBwcmludCh4KQorICAgLi4uICAgICAgICAgbm9ubG9jYWwgeAorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFN5bnRheEVycm9yOiBuYW1lICd4JyBpcyB1c2VkIHByaW9yIHRvIG5vbmxvY2FsIGRlY2xhcmF0aW9uCiAKICAgID4+PiBkZWYgZih4KToKICAgIC4uLiAgICAgbm9ubG9jYWwgeApAQCAtNDkzLDEwICs1MDEsNiBAQAogICAgLi4uCiBTeW50YXhFcnJvcjoga2V5d29yZCBhcmd1bWVudCByZXBlYXRlZAogCi0+Pj4gZGVsICgpCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci1TeW50YXhFcnJvcjogY2FuJ3QgZGVsZXRlICgpCi0KID4+PiB7MSwgMiwgM30gPSA0MgogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogU3ludGF4RXJyb3I6IGNhbid0IGFzc2lnbiB0byBsaXRlcmFsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5cy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CmluZGV4IDQ0MzVkNjkuLmRmOWViZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CkBAIC0xMCw2ICsxMCw3IEBACiBpbXBvcnQgZ2MKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IGxvY2FsZQogCiAjIGNvdW50IHRoZSBudW1iZXIgb2YgdGVzdCBydW5zLCB1c2VkIHRvIGNyZWF0ZSB1bmlxdWUKICMgc3RyaW5ncyB0byBpbnRlcm4gaW4gdGVzdF9pbnRlcm4oKQpAQCAtNjI3LDYgKzYyOCw4IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0ZXN0LnN1cHBvcnQuRlNfTk9OQVNDSUksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIE9TIHN1cHBvcnQgb2Ygbm9uLUFTQ0lJIGVuY29kaW5ncycpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpID09IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIEZTIGVuY29kaW5nIHRvIG1hdGNoIGxvY2FsZScpCiAgICAgZGVmIHRlc3RfaW9lbmNvZGluZ19ub25hc2NpaShzZWxmKToKICAgICAgICAgZW52ID0gZGljdChvcy5lbnZpcm9uKQogCkBAIC02NjksOCArNjcyLDYgQEAKICAgICAgICAgZnNfZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgZXhwZWN0ZWQgPSAndXRmLTgnCi0gICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICAgICBleHBlY3RlZCA9ICdtYmNzJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhwZWN0ZWQgPSBOb25lCiAgICAgICAgIHNlbGYuY2hlY2tfZnNlbmNvZGluZyhmc19lbmNvZGluZywgZXhwZWN0ZWQpCkBAIC05MTIsMTMgKzkxMywxMyBAQAogICAgICAgICAgICAgcmV0dXJuIGlubmVyCiAgICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jbG9zdXJlX19bMF0sIHNpemUoJ1AnKSkKICAgICAgICAgIyBjb2RlCi0gICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSkKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSkKKyAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSkKKyAgICAgICAgY2hlY2soZ2V0X2NlbGwuX19jb2RlX18sIHNpemUoJzZpMTNQJykpCiAgICAgICAgIGRlZiBnZXRfY2VsbDIoeCk6CiAgICAgICAgICAgICBkZWYgaW5uZXIoKToKICAgICAgICAgICAgICAgICByZXR1cm4geAogICAgICAgICAgICAgcmV0dXJuIGlubmVyCi0gICAgICAgIGNoZWNrKGdldF9jZWxsMi5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpICsgMSkKKyAgICAgICAgY2hlY2soZ2V0X2NlbGwyLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpICsgMSkKICAgICAgICAgIyBjb21wbGV4CiAgICAgICAgIGNoZWNrKGNvbXBsZXgoMCwxKSwgc2l6ZSgnMmQnKSkKICAgICAgICAgIyBtZXRob2RfZGVzY3JpcHRvciAoZGVzY3JpcHRvciBvYmplY3QpCkBAIC05MzYsOSArOTM3LDkgQEAKICAgICAgICAgIyBtZXRob2Qtd3JhcHBlciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgIGNoZWNrKHt9Ll9faXRlcl9fLCBzaXplKCcyUCcpKQogICAgICAgICAjIGRpY3QKLSAgICAgICAgY2hlY2soe30sIHNpemUoJ24yUCcpICsgY2FsY3NpemUoJzJuUG4nKSArIDgqY2FsY3NpemUoJ24yUCcpKQorICAgICAgICBjaGVjayh7fSwgc2l6ZSgnblEyUCcpICsgY2FsY3NpemUoJzJuUDJuJykgKyA4ICsgKDgqMi8vMykqY2FsY3NpemUoJ24yUCcpKQogICAgICAgICBsb25nZGljdCA9IHsxOjEsIDI6MiwgMzozLCA0OjQsIDU6NSwgNjo2LCA3OjcsIDg6OH0KLSAgICAgICAgY2hlY2sobG9uZ2RpY3QsIHNpemUoJ24yUCcpICsgY2FsY3NpemUoJzJuUG4nKSArIDE2KmNhbGNzaXplKCduMlAnKSkKKyAgICAgICAgY2hlY2sobG9uZ2RpY3QsIHNpemUoJ25RMlAnKSArIGNhbGNzaXplKCcyblAybicpICsgMTYgKyAoMTYqMi8vMykqY2FsY3NpemUoJ24yUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnkta2V5dmlldwogICAgICAgICBjaGVjayh7fS5rZXlzKCksIHNpemUoJ1AnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LXZhbHVldmlldwpAQCAtMTA5NiwxMyArMTA5NywxMyBAQAogICAgICAgICAgICAgICAgICAgJzEwUCcgICAgICAgICAgICAgICAgICMgUHlTZXF1ZW5jZU1ldGhvZHMKICAgICAgICAgICAgICAgICAgICcyUCcgICAgICAgICAgICAgICAgICAjIFB5QnVmZmVyUHJvY3MKICAgICAgICAgICAgICAgICAgICc0UCcpCi0gICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA0IGVudHJpZXMKLSAgICAgICAgcyArPSBjYWxjc2l6ZSgiMm5QbiIpICsgNCpjYWxjc2l6ZSgibjJQIikKKyAgICAgICAgIyBTZXBhcmF0ZSBibG9jayBmb3IgUHlEaWN0S2V5c09iamVjdCB3aXRoIDgga2V5cyBhbmQgNSBlbnRyaWVzCisgICAgICAgIHMgKz0gY2FsY3NpemUoIjJuUDJuIikgKyA4ICsgNSpjYWxjc2l6ZSgibjJQIikKICAgICAgICAgIyBjbGFzcwogICAgICAgICBjbGFzcyBuZXdzdHlsZWNsYXNzKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcywgcykKICAgICAgICAgIyBkaWN0IHdpdGggc2hhcmVkIGtleXMKLSAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcygpLl9fZGljdF9fLCBzaXplKCduMlAnICsgJzJuUG4nKSkKKyAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcygpLl9fZGljdF9fLCBzaXplKCduUTJQJyArICcyblAybicpKQogICAgICAgICAjIHVuaWNvZGUKICAgICAgICAgIyBlYWNoIHR1cGxlIGNvbnRhaW5zIGEgc3RyaW5nIGFuZCBpdHMgZXhwZWN0ZWQgY2hhcmFjdGVyIHNpemUKICAgICAgICAgIyBkb24ndCBwdXQgYW55IHN0YXRpYyBzdHJpbmdzIGhlcmUsIGFzIHRoZXkgbWF5IGNvbnRhaW4KQEAgLTExOTEsNiArMTE5MiwzMiBAQAogICAgICAgICAjIHN5cy5mbGFncwogICAgICAgICBjaGVjayhzeXMuZmxhZ3MsIHZzaXplKCcnKSArIHNlbGYuUCAqIGxlbihzeXMuZmxhZ3MpKQogCisgICAgZGVmIHRlc3RfYXN5bmNnZW5faG9va3Moc2VsZik6CisgICAgICAgIG9sZCA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvbGQuZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvbGQuZmluYWxpemVyKQorCisgICAgICAgIGZpcnN0aXRlciA9IGxhbWJkYSAqYTogTm9uZQorICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKGZpcnN0aXRlcj1maXJzdGl0ZXIpCisgICAgICAgIGhvb2tzID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmlyc3RpdGVyLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMF0sIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maW5hbGl6ZXIsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMV0sIE5vbmUpCisKKyAgICAgICAgZmluYWxpemVyID0gbGFtYmRhICphOiBOb25lCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoZmluYWxpemVyPWZpbmFsaXplcikKKyAgICAgICAgaG9va3MgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maXJzdGl0ZXIsIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1swXSwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpbmFsaXplciwgZmluYWxpemVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzFdLCBmaW5hbGl6ZXIpCisKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcygqb2xkKQorICAgICAgICBjdXIgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY3VyLmZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY3VyLmZpbmFsaXplcikKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChTeXNNb2R1bGVUZXN0LCBTaXplb2ZUZXN0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQppbmRleCA1MDliYzNlLi4yNWM1ODM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQpAQCAtMzM4LDggKzMzOCw4IEBACiAKICAgICBkZWYgdGVzdF8xNF9vbmxpbmVyX2lmKHNlbGYpOgogICAgICAgICBkZWYgb25saW5lcnMoKToKLSAgICAgICAgICAgIGlmIFRydWU6IEZhbHNlCi0gICAgICAgICAgICBlbHNlOiBUcnVlCisgICAgICAgICAgICBpZiBUcnVlOiB4PUZhbHNlCisgICAgICAgICAgICBlbHNlOiB4PVRydWUKICAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgIHNlbGYucnVuX2FuZF9jb21wYXJlKAogICAgICAgICAgICAgb25saW5lcnMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CmluZGV4IGEyM2JmMDZhLi4wOTFlOTA1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQpAQCAtMzk0LDggKzM5NCw5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2xpbnV4JyBpbiBzdWZmaXgsIHN1ZmZpeCkKICAgICAgICAgaWYgcmUubWF0Y2goJyhpWzMtNl04Nnx4ODZfNjQpJCcsIG1hY2hpbmUpOgogICAgICAgICAgICAgaWYgY3R5cGVzLnNpemVvZihjdHlwZXMuY19jaGFyX3AoKSkgPT0gNDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Igc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251eDMyLnNvJyksCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1ZmZpeC5lbmRzd2l0aCgnaTM4Ni1saW51eC1nbnUuc28nKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXguZW5kc3dpdGgoJ2k2ODYtbGludXgtYW5kcm9pZC5zbycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudXgzMi5zbycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXgpCiAgICAgICAgICAgICBlbHNlOiAjIDggYnl0ZSBwb2ludGVyIHNpemUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251LnNvJyksIHN1ZmZpeCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQppbmRleCBhYmZiMzRkLi5kNzc4NWNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CkBAIC0yMDc0LDYgKzIwNzQsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHRhcmZpbGUuaXRuKDB4MTAwMDAwMDAwMDAsIDYsIHRhcmZpbGUuR05VX0ZPUk1BVCkKIAorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyd2ZXJzaW9uJywgJ2dycCcsICdwd2QnLCAnc3ltbGlua19leGNlcHRpb24nLAorICAgICAgICAgICAgICAgICAgICAgJ05VTCcsICdCTE9DS1NJWkUnLCAnUkVDT1JEU0laRScsICdHTlVfTUFHSUMnLAorICAgICAgICAgICAgICAgICAgICAgJ1BPU0lYX01BR0lDJywgJ0xFTkdUSF9OQU1FJywgJ0xFTkdUSF9MSU5LJywKKyAgICAgICAgICAgICAgICAgICAgICdMRU5HVEhfUFJFRklYJywgJ1JFR1RZUEUnLCAnQVJFR1RZUEUnLCAnTE5LVFlQRScsCisgICAgICAgICAgICAgICAgICAgICAnU1lNVFlQRScsICdDSFJUWVBFJywgJ0JMS1RZUEUnLCAnRElSVFlQRScsICdGSUZPVFlQRScsCisgICAgICAgICAgICAgICAgICAgICAnQ09OVFRZUEUnLCAnR05VVFlQRV9MT05HTkFNRScsICdHTlVUWVBFX0xPTkdMSU5LJywKKyAgICAgICAgICAgICAgICAgICAgICdHTlVUWVBFX1NQQVJTRScsICdYSERUWVBFJywgJ1hHTFRZUEUnLCAnU09MQVJJU19YSERUWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdTVVBQT1JURURfVFlQRVMnLCAnUkVHVUxBUl9UWVBFUycsICdHTlVfVFlQRVMnLAorICAgICAgICAgICAgICAgICAgICAgJ1BBWF9GSUVMRFMnLCAnUEFYX05BTUVfRklFTERTJywgJ1BBWF9OVU1CRVJfRklFTERTJywKKyAgICAgICAgICAgICAgICAgICAgICdzdG4nLCAnbnRzJywgJ250aScsICdpdG4nLCAnY2FsY19jaGtzdW1zJywgJ2NvcHlmaWxlb2JqJywKKyAgICAgICAgICAgICAgICAgICAgICdmaWxlbW9kZScsCisgICAgICAgICAgICAgICAgICAgICAnRW1wdHlIZWFkZXJFcnJvcicsICdUcnVuY2F0ZWRIZWFkZXJFcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAnRU9GSGVhZGVyRXJyb3InLCAnSW52YWxpZEhlYWRlckVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICdTdWJzZXF1ZW50SGVhZGVyRXJyb3InLCAnRXhGaWxlT2JqZWN0JywKKyAgICAgICAgICAgICAgICAgICAgICdtYWluJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgdGFyZmlsZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogCiBjbGFzcyBDb21tYW5kTGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CmluZGV4IDhlMjE5ZjQuLjUxZDgyZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IHRlbG5ldGxpYgotaW1wb3J0IHRpbWUKIGltcG9ydCBjb250ZXh0bGliCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNDIsNiArNDEsMTEgQEAKICAgICAgICAgdGVsbmV0ID0gdGVsbmV0bGliLlRlbG5ldChIT1NULCBzZWxmLnBvcnQpCiAgICAgICAgIHRlbG5ldC5zb2NrLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0Q29udGV4dE1hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggdGVsbmV0bGliLlRlbG5ldChIT1NULCBzZWxmLnBvcnQpIGFzIHRuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUodG4uZ2V0X3NvY2tldCgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0bi5nZXRfc29ja2V0KCkpCisKICAgICBkZWYgdGVzdFRpbWVvdXREZWZhdWx0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkgaXMgTm9uZSkKICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KDMwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQppbmRleCBiNjMwNTA5Li44NDVlN2Q0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weQpAQCAtOCw3ICs4LDYgQEAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCiBpbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKIGltcG9ydCBzeXMKIF90aHJlYWQgPSBpbXBvcnRfbW9kdWxlKCdfdGhyZWFkJykKIHRocmVhZGluZyA9IGltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpCkBAIC0xOSw2ICsxOCw3IEBACiBpbXBvcnQgc3VicHJvY2VzcwogCiBmcm9tIHRlc3QgaW1wb3J0IGxvY2tfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKICMgQmV0d2VlbiBmb3JrKCkgYW5kIGV4ZWMoKSwgb25seSBhc3luYy1zYWZlIGZ1bmN0aW9ucyBhcmUgYWxsb3dlZCAoaXNzdWVzCkBAIC0xMTE3LDUgKzExMTcsMTIgQEAKIGNsYXNzIEJhcnJpZXJUZXN0cyhsb2NrX3Rlc3RzLkJhcnJpZXJUZXN0cyk6CiAgICAgYmFycmllcnR5cGUgPSBzdGF0aWNtZXRob2QodGhyZWFkaW5nLkJhcnJpZXIpCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBleHRyYSA9IHsiVGhyZWFkRXJyb3IifQorICAgICAgICBibGFja2xpc3QgPSB7J2N1cnJlbnRUaHJlYWQnLCAnYWN0aXZlQ291bnQnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCB0aHJlYWRpbmcsICgndGhyZWFkaW5nJywgJ190aHJlYWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKaW5kZXggNzZiODk0ZS4uZjIyNDIxMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQpAQCAtMSw2ICsxLDggQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IGRlY2ltYWwKIGltcG9ydCBlbnVtCiBpbXBvcnQgbG9jYWxlCitpbXBvcnQgbWF0aAogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCkBAIC0yMSwxNyArMjMsMjcgQEAKIFRJTUVfTUFYWUVBUiA9ICgxIDw8IDggKiBTSVpFT0ZfSU5UIC0gMSkgLSAxCiBUSU1FX01JTllFQVIgPSAtVElNRV9NQVhZRUFSIC0gMQogCitTRUNfVE9fVVMgPSAxMCAqKiA2CiBVU19UT19OUyA9IDEwICoqIDMKIE1TX1RPX05TID0gMTAgKiogNgogU0VDX1RPX05TID0gMTAgKiogOQorTlNfVE9fU0VDID0gMTAgKiogOQogCiBjbGFzcyBfUHlUaW1lKGVudW0uSW50RW51bSk6CiAgICAgIyBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKQogICAgIFJPVU5EX0ZMT09SID0gMAogICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKICAgICBST1VORF9DRUlMSU5HID0gMQorICAgICMgUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG8gbmVhcmVzdCBldmVuIGludGVnZXIKKyAgICBST1VORF9IQUxGX0VWRU4gPSAyCiAKLUFMTF9ST1VORElOR19NRVRIT0RTID0gKF9QeVRpbWUuUk9VTkRfRkxPT1IsIF9QeVRpbWUuUk9VTkRfQ0VJTElORykKKyMgUm91bmRpbmcgbW9kZXMgc3VwcG9ydGVkIGJ5IFB5VGltZQorUk9VTkRJTkdfTU9ERVMgPSAoCisgICAgIyAoUHlUaW1lIHJvdW5kaW5nIG1ldGhvZCwgZGVjaW1hbCByb3VuZGluZyBtZXRob2QpCisgICAgKF9QeVRpbWUuUk9VTkRfRkxPT1IsIGRlY2ltYWwuUk9VTkRfRkxPT1IpLAorICAgIChfUHlUaW1lLlJPVU5EX0NFSUxJTkcsIGRlY2ltYWwuUk9VTkRfQ0VJTElORyksCisgICAgKF9QeVRpbWUuUk9VTkRfSEFMRl9FVkVOLCBkZWNpbWFsLlJPVU5EX0hBTEZfRVZFTiksCispCiAKIAogY2xhc3MgVGltZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTYwNyw3OSArNjE5LDYgQEAKIAogCiBjbGFzcyBUZXN0UHl0aW1lKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuaW52YWxpZF92YWx1ZXMgPSAoCi0gICAgICAgICAgICAtKDIgKiogMTAwKSwgMiAqKiAxMDAsCi0gICAgICAgICAgICAtKDIuMCAqKiAxMDAuMCksIDIuMCAqKiAxMDAuMCwKLSAgICAgICAgKQotCi0gICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5Ci0gICAgZGVmIHRlc3RfdGltZV90KHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lX3QKLSAgICAgICAgZm9yIG9iaiwgdGltZV90LCBybmQgaW4gKAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKQotICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMCwgLTEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjksIC0yLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuOSwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMCwgLTEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuOSwgLTEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS4wLCAxLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuOSwgMiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lX3Qob2JqLCBybmQpLCB0aW1lX3QpCi0KLSAgICAgICAgcm5kID0gX1B5VGltZS5ST1VORF9GTE9PUgotICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGltZV9vYmplY3RfdG9fdGltZV90LCBpbnZhbGlkLCBybmQpCi0KLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMKLSAgICAgICAgZm9yIG9iaiwgdGltZXNwZWMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCi0gICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMSwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMWUtOSwgKDAsIDEpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMWUtMTAsICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDAwMDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgwLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3ODkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTksICgxLCAxMjM0NTY3ODkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjEwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpCi0gICAgICAgICAgICAoMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMWUtOSwgKDAsIDEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtMTAsICgwLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMC45OTk5OTk5OTk5LCAoMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS4xMjM0NTY3ODkwLCAoMSwgMTIzNDU2NzkwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTksICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkxLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzcGVjPXRpbWVzcGVjKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMob2JqLCBybmQpLCB0aW1lc3BlYykKLQotICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgaW52YWxpZCwgcm5kKQotCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGltZS5fU1RSVUNUX1RNX0lURU1TID09IDExLCAibmVlZHMgdG1fem9uZSBzdXBwb3J0IikKICAgICBkZWYgdGVzdF9sb2NhbHRpbWVfdGltZXpvbmUoc2VsZik6CiAKQEAgLTczNCwyNjYgKzY3MywyOTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV96b25lLCBOb25lKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKF90ZXN0Y2FwaSBpcyBub3QgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKLWNsYXNzIFRlc3RQeVRpbWVfdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCB0aGUgX3Rlc3RjYXBpIG1vZHVsZScpCitjbGFzcyBDUHlUaW1lVGVzdENhc2U6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyB0byB0ZXN0IHRoZSBDIF9QeVRpbWVfdCBBUEkuCisgICAgIiIiCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IE5vbmUKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFNJWkVPRl9USU1FX1QKKyAgICAgICAgYml0cyA9IFNJWkVPRl9USU1FX1QgKiA4IC0gMQorICAgICAgICBzZWxmLnRpbWVfdF9taW4gPSAtMiAqKiBiaXRzCisgICAgICAgIHNlbGYudGltZV90X21heCA9IDIgKiogYml0cyAtIDEKKworICAgIGRlZiB0aW1lX3RfZmlsdGVyKHNlbGYsIHNlY29uZHMpOgorICAgICAgICByZXR1cm4gKHNlbGYudGltZV90X21pbiA8PSBzZWNvbmRzIDw9IHNlbGYudGltZV90X21heCkKKworICAgIGRlZiBfcm91bmRpbmdfdmFsdWVzKHNlbGYsIHVzZV9mbG9hdCk6CisgICAgICAgICJCdWlsZCB0aW1lc3RhbXBzIHVzZWQgdG8gdGVzdCByb3VuZGluZy4iCisKKyAgICAgICAgdW5pdHMgPSBbMSwgVVNfVE9fTlMsIE1TX1RPX05TLCBTRUNfVE9fTlNdCisgICAgICAgIGlmIHVzZV9mbG9hdDoKKyAgICAgICAgICAgICMgcGljb3NlY29uZHMgYXJlIG9ubHkgdGVzdGVkIHRvIHB5dGltZV9jb252ZXJ0ZXIgYWNjZXB0aW5nIGZsb2F0cworICAgICAgICAgICAgdW5pdHMuYXBwZW5kKDFlLTMpCisKKyAgICAgICAgdmFsdWVzID0gKAorICAgICAgICAgICAgIyBzbWFsbCB2YWx1ZXMKKyAgICAgICAgICAgIDEsIDIsIDUsIDcsIDEyMywgNDU2LCAxMjM0LAorICAgICAgICAgICAgIyAxMF5rIC0gMQorICAgICAgICAgICAgOSwKKyAgICAgICAgICAgIDk5LAorICAgICAgICAgICAgOTk5LAorICAgICAgICAgICAgOTk5OSwKKyAgICAgICAgICAgIDk5OTk5LAorICAgICAgICAgICAgOTk5OTk5LAorICAgICAgICAgICAgIyB0ZXN0IGhhbGYgZXZlbiByb3VuZGluZyBuZWFyIDAuNSwgMS41LCAyLjUsIDMuNSwgNC41CisgICAgICAgICAgICA0OTksIDUwMCwgNTAxLAorICAgICAgICAgICAgMTQ5OSwgMTUwMCwgMTUwMSwKKyAgICAgICAgICAgIDI1MDAsCisgICAgICAgICAgICAzNTAwLAorICAgICAgICAgICAgNDUwMCwKKyAgICAgICAgKQorCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSBbMF0KKyAgICAgICAgZm9yIHVuaXQgaW4gdW5pdHM6CisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIG5zID0gdmFsdWUgKiB1bml0CisgICAgICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5leHRlbmQoKC1ucywgbnMpKQorICAgICAgICBmb3IgcG93MiBpbiAoMCwgNSwgMTAsIDE1LCAyMiwgMjMsIDI0LCAzMCwgMzMpOgorICAgICAgICAgICAgbnMgPSAoMiAqKiBwb3cyKSAqIFNFQ19UT19OUworICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5leHRlbmQoKAorICAgICAgICAgICAgICAgIC1ucy0xLCAtbnMsIC1ucysxLAorICAgICAgICAgICAgICAgIG5zLTEsIG5zLCBucysxCisgICAgICAgICAgICApKQorICAgICAgICBmb3Igc2Vjb25kcyBpbiAoX3Rlc3RjYXBpLklOVF9NSU4sIF90ZXN0Y2FwaS5JTlRfTUFYKToKKyAgICAgICAgICAgIG5zX3RpbWVzdGFtcHMuYXBwZW5kKHNlY29uZHMgKiBTRUNfVE9fTlMpCisgICAgICAgIGlmIHVzZV9mbG9hdDoKKyAgICAgICAgICAgICMgbnVtYmVycyB3aXRoIGFuIGV4YWN0IHJlcHJlc2VudGF0aW9uIGluIElFRUUgNzU0IChiYXNlIDIpCisgICAgICAgICAgICBmb3IgcG93MiBpbiAoMywgNywgMTAsIDE1KToKKyAgICAgICAgICAgICAgICBucyA9IDIuMCAqKiAoLXBvdzIpCisgICAgICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5leHRlbmQoKC1ucywgbnMpKQorCisgICAgICAgICMgc2Vjb25kcyBjbG9zZSB0byBfUHlUaW1lX3QgdHlwZSBsaW1pdAorICAgICAgICBucyA9ICgyICoqIDYzIC8vIFNFQ19UT19OUykgKiBTRUNfVE9fTlMKKyAgICAgICAgbnNfdGltZXN0YW1wcy5leHRlbmQoKC1ucywgbnMpKQorCisgICAgICAgIHJldHVybiBuc190aW1lc3RhbXBzCisKKyAgICBkZWYgX2NoZWNrX3JvdW5kaW5nKHNlbGYsIHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2VfZmxvYXQsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisKKyAgICAgICAgZGVmIGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpOgorICAgICAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgICAgIHVuaXRfdG9fbnMgPSBTRUNfVE9fTlMgLyBmbG9hdCh1bml0X3RvX3NlYykKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbbnMgLyB1bml0X3RvX25zIGZvciBucyBpbiBuc190aW1lc3RhbXBzXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB1bml0X3RvX25zID0gU0VDX1RPX05TIC8vIHVuaXRfdG9fc2VjCisgICAgICAgICAgICAgICAgdmFsdWVzID0gW25zIC8vIHVuaXRfdG9fbnMgZm9yIG5zIGluIG5zX3RpbWVzdGFtcHNdCisKKyAgICAgICAgICAgIGlmIHZhbHVlX2ZpbHRlcjoKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBmaWx0ZXIodmFsdWVfZmlsdGVyLCB2YWx1ZXMpCisKKyAgICAgICAgICAgICMgcmVtb3ZlIGR1cGxpY2F0ZXMgYW5kIHNvcnQKKyAgICAgICAgICAgIHJldHVybiBzb3J0ZWQoc2V0KHZhbHVlcykpCisKKyAgICAgICAgIyB0ZXN0IHJvdW5kaW5nCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSBzZWxmLl9yb3VuZGluZ192YWx1ZXModXNlX2Zsb2F0KQorICAgICAgICB2YWxpZF92YWx1ZXMgPSBjb252ZXJ0X3ZhbHVlcyhuc190aW1lc3RhbXBzKQorICAgICAgICBmb3IgdGltZV9ybmQsIGRlY2ltYWxfcm5kIGluIFJPVU5ESU5HX01PREVTIDoKKyAgICAgICAgICAgIGNvbnRleHQgPSBkZWNpbWFsLmdldGNvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IGRlY2ltYWxfcm5kCisKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWxpZF92YWx1ZXM6CisgICAgICAgICAgICAgICAgZGVidWdfaW5mbyA9IHsndmFsdWUnOiB2YWx1ZSwgJ3JvdW5kaW5nJzogZGVjaW1hbF9ybmR9CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBweXRpbWVfY29udmVydGVyKHZhbHVlLCB0aW1lX3JuZCkKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZF9mdW5jKHZhbHVlKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkVycm9yIG9uIHRpbWVzdGFtcCBjb252ZXJzaW9uOiAlcyIgJSBkZWJ1Z19pbmZvKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvKQorCisgICAgICAgICMgdGVzdCBvdmVyZmxvdworICAgICAgICBucyA9IHNlbGYuT1ZFUkZMT1dfU0VDT05EUyAqIFNFQ19UT19OUworICAgICAgICBuc190aW1lc3RhbXBzID0gKC1ucywgbnMpCisgICAgICAgIG92ZXJmbG93X3ZhbHVlcyA9IGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpCisgICAgICAgIGZvciB0aW1lX3JuZCwgXyBpbiBST1VORElOR19NT0RFUyA6CisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gb3ZlcmZsb3dfdmFsdWVzOgorICAgICAgICAgICAgICAgIGRlYnVnX2luZm8gPSB7J3ZhbHVlJzogdmFsdWUsICdyb3VuZGluZyc6IHRpbWVfcm5kfQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbXNnPWRlYnVnX2luZm8pOgorICAgICAgICAgICAgICAgICAgICBweXRpbWVfY29udmVydGVyKHZhbHVlLCB0aW1lX3JuZCkKKworICAgIGRlZiBjaGVja19pbnRfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdG9fc2VjPTEsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcm91bmRpbmcocHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXIpCisKKyAgICBkZWYgY2hlY2tfZmxvYXRfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90b19zZWM9MSwgdmFsdWVfZmlsdGVyPU5vbmUpOgorICAgICAgICBzZWxmLl9jaGVja19yb3VuZGluZyhweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCB1bml0X3RvX3NlYywgdmFsdWVfZmlsdGVyKQorCisgICAgZGVmIGRlY2ltYWxfcm91bmQoc2VsZiwgeCk6CisgICAgICAgIGQgPSBkZWNpbWFsLkRlY2ltYWwoeCkKKyAgICAgICAgZCA9IGQucXVhbnRpemUoMSkKKyAgICAgICAgcmV0dXJuIGludChkKQorCisKK2NsYXNzIFRlc3RDUHlUaW1lKENQeVRpbWVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdGhlIEMgX1B5VGltZV90IEFQSS4KKyAgICAiIiIKKyAgICAjIF9QeVRpbWVfdCBpcyBhIDY0LWJpdCBzaWduZWQgaW50ZWdlcgorICAgIE9WRVJGTE9XX1NFQ09ORFMgPSBtYXRoLmNlaWwoKDIqKjYzICsgMSkgLyBTRUNfVE9fTlMpCisKICAgICBkZWYgdGVzdF9Gcm9tU2Vjb25kcyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Gcm9tU2Vjb25kcwotICAgICAgICBmb3Igc2Vjb25kcyBpbiAoMCwgMywgLTQ1NiwgX3Rlc3RjYXBpLklOVF9NQVgsIF90ZXN0Y2FwaS5JTlRfTUlOKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHMoc2Vjb25kcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzICogU0VDX1RPX05TKQorCisgICAgICAgICMgUHlUaW1lX0Zyb21TZWNvbmRzKCkgZXhwZWN0cyBhIEMgaW50LCByZWplY3QgdmFsdWVzIG91dCBvZiByYW5nZQorICAgICAgICBkZWYgY19pbnRfZmlsdGVyKHNlY3MpOgorICAgICAgICAgICAgcmV0dXJuIChfdGVzdGNhcGkuSU5UX01JTiA8PSBzZWNzIDw9IF90ZXN0Y2FwaS5JTlRfTUFYKQorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBzZWNzLCBybmQ6IFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IHNlY3MgKiBTRUNfVE9fTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1jX2ludF9maWx0ZXIpCiAKICAgICBkZWYgdGVzdF9Gcm9tU2Vjb25kc09iamVjdChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdAogCi0gICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgdGhlIHNhbWUgcmVzdWx0IGZvciBhbGwgcm91bmRpbmcgbWV0aG9kcwotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG9iaiwgdHMgaW4gKAotICAgICAgICAgICAgICAgICMgaW50ZWdlcnMKLSAgICAgICAgICAgICAgICAoMCwgMCksCi0gICAgICAgICAgICAgICAgKDEsIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC0zLCAtMyAqIFNFQ19UT19OUyksCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKAorICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0LAorICAgICAgICAgICAgbGFtYmRhIHNlY3M6IHNlY3MgKiBTRUNfVE9fTlMpCiAKLSAgICAgICAgICAgICAgICAjIGZsb2F0OiBzdWJzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDAuMCwgMCksCi0gICAgICAgICAgICAgICAgKDFlLTksIDEpLAotICAgICAgICAgICAgICAgICgxZS02LCAxMCAqKiAzKSwKLSAgICAgICAgICAgICAgICAoMWUtMywgMTAgKiogNiksCi0KLSAgICAgICAgICAgICAgICAjIGZsb2F0OiBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIuMCwgMiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKDEyMy4wLCAxMjMgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtNy4wLCAtNyAqIFNFQ19UT19OUyksCi0KLSAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmQgYXJlIGtlcHQgZm9yIHZhbHVlIDw9IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyMiAtIDFlLTksICA0MTk0MzAzOTk5OTk5OTk5KSwKLSAgICAgICAgICAgICAgICAoMioqMjIsICAgICAgICAgNDE5NDMwNDAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjIyICsgMWUtOSwgIDQxOTQzMDQwMDAwMDAwMDEpLAotICAgICAgICAgICAgICAgICgyKioyMyAtIDFlLTksICA4Mzg4NjA3OTk5OTk5OTk5KSwKLSAgICAgICAgICAgICAgICAoMioqMjMsICAgICAgICAgODM4ODYwODAwMDAwMDAwMCksCi0KLSAgICAgICAgICAgICAgICAjIHN0YXJ0IGxvc2luZyBwcmVjaXNpb24gZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjIzICsgMWUtOSwgIDgzODg2MDgwMDAwMDAwMDIpLAotCi0gICAgICAgICAgICAgICAgIyBuYW5vc2Vjb25kcyBhcmUgbG9zdCBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjQgLSAxZS05LCAxNjc3NzIxNTk5OTk5OTk5OCksCi0gICAgICAgICAgICAgICAgKDIqKjI0LCAgICAgICAgMTY3NzcyMTYwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNCArIDFlLTksIDE2Nzc3MjE2MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgLSAxZS05LCAzMzU1NDQzMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1ICAgICAgICwgMzM1NTQ0MzIwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSArIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKLQotICAgICAgICAgICAgICAgICMgY2xvc2UgdG8gMl42MyBuYW5vc2Vjb25kcyAoX1B5VGltZV90IGxpbWl0KQotICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LCA5MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoOTIyMzM3MjAzNi4wLCA5MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTkyMjMzNzIwMzYsIC05MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTkyMjMzNzIwMzYuMCwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KG9iaiwgcm5kKSwgdHMpCi0KLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KDkyMjMzNzIwMzcsIHJuZCkKLSAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KDkyMjMzNzIwMzcuMCwgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcsIHJuZCkKLSAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KC05MjIzMzcyMDM3LjAsIHJuZCkKLQotICAgICAgICAjIENvbnZlcnNpb24gZ2l2aW5nIGRpZmZlcmVudCByZXN1bHRzIGRlcGVuZGluZyBvbiB0aGUgcm91bmRpbmcgbWV0aG9kCi0gICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgotICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCi0gICAgICAgIGZvciBvYmosIHRzLCBybmQgaW4gKAotICAgICAgICAgICAgIyBjbG9zZSB0byB6ZXJvCi0gICAgICAgICAgICAoIDFlLTEwLCAgMCwgRkxPT1IpLAotICAgICAgICAgICAgKCAxZS0xMCwgIDEsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS0xMCwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMWUtMTAsICAwLCBDRUlMSU5HKSwKLQotICAgICAgICAgICAgIyB0ZXN0IHJvdW5kaW5nIG9mIHRoZSBsYXN0IG5hbm9zZWNvbmQKLSAgICAgICAgICAgICggMS4xMjM0NTY3ODk5LCAgMTEyMzQ1Njc4OSwgRkxPT1IpLAotICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2NzkwLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODk5LCAtMTEyMzQ1Njc5MCwgRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2Nzg5LCBDRUlMSU5HKSwKLQotICAgICAgICAgICAgIyBjbG9zZSB0byAxIHNlY29uZAotICAgICAgICAgICAgKCAwLjk5OTk5OTk5OTksICAgOTk5OTk5OTk5LCBGTE9PUiksCi0gICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgIDEwMDAwMDAwMDAsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0wLjk5OTk5OTk5OTksIC0xMDAwMDAwMDAwLCBGTE9PUiksCi0gICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgIC05OTk5OTk5OTksIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob2JqPW9iaiwgcm91bmQ9cm5kLCB0aW1lc3RhbXA9dHMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KG9iaiwgcm5kKSwgdHMpCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcoCisgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QsCisgICAgICAgICAgICBsYW1iZGEgbnM6IHNlbGYuZGVjaW1hbF9yb3VuZChucyAqIFNFQ19UT19OUykpCiAKICAgICBkZWYgdGVzdF9Bc1NlY29uZHNEb3VibGUoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNTZWNvbmRzRG91YmxlCiAKLSAgICAgICAgZm9yIG5hbm9zZWNvbmRzLCBzZWNvbmRzIGluICgKLSAgICAgICAgICAgICMgbmVhciAxIG5hbm9zZWNvbmQKLSAgICAgICAgICAgICggMCwgIDAuMCksCi0gICAgICAgICAgICAoIDEsICAxZS05KSwKLSAgICAgICAgICAgICgtMSwgLTFlLTkpLAorICAgICAgICBkZWYgZmxvYXRfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIGlmIGFicyhucykgJSBTRUNfVE9fTlMgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQobnMgLy8gU0VDX1RPX05TKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQobnMpIC8gU0VDX1RPX05TCiAKLSAgICAgICAgICAgICMgbmVhciAxIHNlY29uZAotICAgICAgICAgICAgKFNFQ19UT19OUyArIDEsIDEuMCArIDFlLTkpLAotICAgICAgICAgICAgKFNFQ19UT19OUywgICAgIDEuMCksCi0gICAgICAgICAgICAoU0VDX1RPX05TIC0gMSwgMS4wIC0gMWUtOSksCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBucywgcm5kOiBQeVRpbWVfQXNTZWNvbmRzRG91YmxlKG5zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRfY29udmVydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgICAgICMgYSBmZXcgc2Vjb25kcwotICAgICAgICAgICAgKDEyMyAqIFNFQ19UT19OUywgMTIzLjApLAotICAgICAgICAgICAgKC01NjcgKiBTRUNfVE9fTlMsIC01NjcuMCksCisgICAgZGVmIGNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihzZWxmLCBkZW5vbWluYXRvcik6CisgICAgICAgIGRlbm9tID0gZGVjaW1hbC5EZWNpbWFsKGRlbm9taW5hdG9yKQogCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmQgYXJlIGtlcHQgZm9yIHZhbHVlIDw9IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgKDQxOTQzMDM5OTk5OTk5OTksIDIqKjIyIC0gMWUtOSksCi0gICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMCwgMioqMjIpLAotICAgICAgICAgICAgKDQxOTQzMDQwMDAwMDAwMDEsIDIqKjIyICsgMWUtOSksCisgICAgICAgIGRlZiBjb252ZXJ0ZXIodmFsdWUpOgorICAgICAgICAgICAgZCA9IGRlY2ltYWwuRGVjaW1hbCh2YWx1ZSkgLyBkZW5vbQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjaW1hbF9yb3VuZChkKQogCi0gICAgICAgICAgICAjIHN0YXJ0IGxvc2luZyBwcmVjaXNpb24gZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoODM4ODYwODAwMDAwMDAwMiwgMioqMjMgKyAxZS05KSwKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRlcgogCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgKDE2Nzc3MjE1OTk5OTk5OTk4LCAyKioyNCAtIDFlLTkpLAotICAgICAgICAgICAgKDE2Nzc3MjE1OTk5OTk5OTk5LCAyKioyNCAtIDFlLTkpLAotICAgICAgICAgICAgKDE2Nzc3MjE2MDAwMDAwMDAwLCAyKioyNCAgICAgICApLAotICAgICAgICAgICAgKDE2Nzc3MjE2MDAwMDAwMDAxLCAyKioyNCAgICAgICApLAotICAgICAgICAgICAgKDE2Nzc3MjE2MDAwMDAwMDAyLCAyKioyNCArIDJlLTkpLAotCi0gICAgICAgICAgICAoMzM1NTQ0MzIwMDAwMDAwMDAsIDIqKjI1ICAgICAgICksCi0gICAgICAgICAgICAoMzM1NTQ0MzIwMDAwMDAwMDIsIDIqKjI1ICAgICAgICksCi0gICAgICAgICAgICAoMzM1NTQ0MzIwMDAwMDAwMDQsIDIqKjI1ICsgNGUtOSksCi0KLSAgICAgICAgICAgICMgY2xvc2UgdG8gMl42MyBuYW5vc2Vjb25kcyAoX1B5VGltZV90IGxpbWl0KQotICAgICAgICAgICAgKDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMsIDkyMjMzNzIwMzYuMCksCi0gICAgICAgICAgICAoLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMsIC05MjIzMzcyMDM2LjApLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bmFub3NlY29uZHMsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNTZWNvbmRzRG91YmxlKG5hbm9zZWNvbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMpCi0KLSAgICBkZWYgdGVzdF90aW1ldmFsKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzVGltZXZhbChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1RpbWV2YWwKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCi0gICAgICAgICAgICAgICAgKDAsICgwLCAwKSksCi0gICAgICAgICAgICAgICAgKDEwMDAsICgwLCAxKSksCi0gICAgICAgICAgICAgICAgKC0xMDAwLCAoLTEsIDk5OTk5OSkpLAogCi0gICAgICAgICAgICAgICAgIyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsICgyLCAwKSksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisgICAgICAgIHVzX2NvbnZlcnRlciA9IHNlbGYuY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKFVTX1RPX05TKQogCi0gICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgotICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCi0gICAgICAgIGZvciBucywgdHYsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMSwgKDAsIDApLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgKDAsIDEpLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgKC0xLCA5OTk5OTkpLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsICgwLCAwKSwgQ0VJTElORyksCisgICAgICAgIGRlZiB0aW1ldmFsX2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICB1cyA9IHVzX2NvbnZlcnRlcihucykKKyAgICAgICAgICAgIHJldHVybiBkaXZtb2QodXMsIFNFQ19UT19VUykKIAotICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxMjM0NTY3MDAxLCAoMSwgMjM0NTY3KSwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjgpLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzIpLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEyMzQ1NjcwMDEsICgtMiwgNzY1NDMzKSwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWV2YWwobnMsIHJuZCksIHR2KQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBMT05HX01JTiwgTE9OR19NQVgKKworICAgICAgICAgICAgIyBPbiBXaW5kb3dzLCB0aW1ldmFsLnR2X3NlYyB0eXBlIGlzIGEgQyBsb25nCisgICAgICAgICAgICBkZWYgc2Vjb25kc19maWx0ZXIoc2Vjcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIExPTkdfTUlOIDw9IHNlY3MgPD0gTE9OR19NQVgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlY29uZHNfZmlsdGVyID0gc2VsZi50aW1lX3RfZmlsdGVyCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzVGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXZhbF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlY29uZHNfZmlsdGVyKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihfdGVzdGNhcGksICdQeVRpbWVfQXNUaW1lc3BlYycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIF90ZXN0Y2FwaS5QeVRpbWVfQXNUaW1lc3BlYycpCi0gICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNUaW1lc3BlYyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1RpbWVzcGVjCi0gICAgICAgIGZvciBucywgdHMgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDAsICgwLCAwKSksCi0gICAgICAgICAgICAoMSwgKDAsIDEpKSwKLSAgICAgICAgICAgICgtMSwgKC0xLCA5OTk5OTk5OTkpKSwKIAotICAgICAgICAgICAgIyBzZWNvbmRzCi0gICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgKDIsIDApKSwKLSAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgKC0zLCAwKSksCisgICAgICAgIGRlZiB0aW1lc3BlY19jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgcmV0dXJuIGRpdm1vZChucywgU0VDX1RPX05TKQogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQ1Njc4OTAsICgxLCAyMzQ1Njc4OTApKSwKLSAgICAgICAgICAgICgtMTIzNDU2Nzg5MCwgKC0yLCA3NjU0MzIxMTApKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1lc3BlYz10cyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1lc3BlYyhucyksIHRzKQorICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhsYW1iZGEgbnMsIHJuZDogUHlUaW1lX0FzVGltZXNwZWMobnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3BlY19jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKIAotICAgIGRlZiB0ZXN0X21pbGxpc2Vjb25kcyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc01pbGxpc2Vjb25kcyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc01pbGxpc2Vjb25kcwotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWxsaXNlY29uZHMKLSAgICAgICAgICAgICAgICAoMSAqIE1TX1RPX05TLCAxKSwKLSAgICAgICAgICAgICAgICAoLTIgKiBNU19UT19OUywgLTIpLAogCi0gICAgICAgICAgICAgICAgIyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsIDIwMDApLAotICAgICAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgLTMwMDApLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWxsaXNlY29uZHMobnMsIHJuZCksIHR2KQorICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNNaWxsaXNlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKE1TX1RPX05TKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDKQogCi0gICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgotICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCi0gICAgICAgIGZvciBucywgbXMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMSwgMCwgRkxPT1IpLAotICAgICAgICAgICAgKDEsIDEsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAwLCBDRUlMSU5HKSwKLQotICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM0LCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNCAqIE1TX1RPX05TICsgMSwgMTIzNSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEyMzQgKiBNU19UT19OUyAtIDEsIC0xMjM1LCBGTE9PUiksCi0gICAgICAgICAgICAoLTEyMzQgKiBNU19UT19OUyAtIDEsIC0xMjM0LCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCBtaWxsaXNlY29uZHM9bXMsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWxsaXNlY29uZHMobnMsIHJuZCksIG1zKQotCi0gICAgZGVmIHRlc3RfbWljcm9zZWNvbmRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzTWljcm9zZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWljcm9zZWNvbmRzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pY3Jvc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogVVNfVE9fTlMsIDEpLAotICAgICAgICAgICAgICAgICgtMiAqIFVTX1RPX05TLCAtMiksCiAKLSAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEwMDApLAotICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMjAwMCksCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc01pY3Jvc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoVVNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMDAwMCksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMDAwMCksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pY3Jvc2Vjb25kcyhucywgcm5kKSwgdHYpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAorY2xhc3MgVGVzdE9sZFB5VGltZShDUHlUaW1lVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHRoZSBvbGQgQyBfUHlUaW1lX3QgQVBJOiBfUHlUaW1lX09iamVjdFRvWFhYKCkgZnVuY3Rpb25zLgorICAgICIiIgogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0ICogVVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNCAqIFVTX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNCAqIFVTX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pY3Jvc2Vjb25kcyhucywgcm5kKSwgbXMpCisgICAgIyB0aW1lX3QgaXMgYSAzMi1iaXQgb3IgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IDIgKiogNjQKKworICAgIGRlZiB0ZXN0X29iamVjdF90b190aW1lX3Qoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVjaW1hbF9yb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgZGVmIGNyZWF0ZV9jb252ZXJ0ZXIoc2VsZiwgc2VjX3RvX3VuaXQpOgorICAgICAgICBkZWYgY29udmVydGVyKHNlY3MpOgorICAgICAgICAgICAgZmxvYXRwYXJ0LCBpbnRwYXJ0ID0gbWF0aC5tb2RmKHNlY3MpCisgICAgICAgICAgICBpbnRwYXJ0ID0gaW50KGludHBhcnQpCisgICAgICAgICAgICBmbG9hdHBhcnQgKj0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgIGZsb2F0cGFydCA9IHNlbGYuZGVjaW1hbF9yb3VuZChmbG9hdHBhcnQpCisgICAgICAgICAgICBpZiBmbG9hdHBhcnQgPCAwOgorICAgICAgICAgICAgICAgIGZsb2F0cGFydCArPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgICAgIGludHBhcnQgLT0gMQorICAgICAgICAgICAgZWxpZiBmbG9hdHBhcnQgPj0gc2VjX3RvX3VuaXQ6CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0IC09IHNlY190b191bml0CisgICAgICAgICAgICAgICAgaW50cGFydCArPSAxCisgICAgICAgICAgICByZXR1cm4gKGludHBhcnQsIGZsb2F0cGFydCkKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRlcgorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWV2YWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiAoc2VjcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfY29udmVydGVyKFNFQ19UT19VUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgIGRlZiB0ZXN0X29iamVjdF90b190aW1lc3BlYyhzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2VjczogKHNlY3MsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb252ZXJ0ZXIoU0VDX1RPX05TKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5CmluZGV4IDJkYjNjMWIuLjFhOTVlMjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5CkBAIC0zNTQsNiArMzU0LDI4IEBACiAgICAgICAgICAgICBzID0gc2VsZi5ydW5fbWFpbihzd2l0Y2hlcz1bJy1uMScsICcxLzAnXSkKICAgICAgICAgc2VsZi5hc3NlcnRfZXhjX3N0cmluZyhlcnJvcl9zdHJpbmdpby5nZXR2YWx1ZSgpLCAnWmVyb0RpdmlzaW9uRXJyb3InKQogCisgICAgZGVmIGF1dG9yYW5nZShzZWxmLCBjYWxsYmFjaz1Ob25lKToKKyAgICAgICAgdGltZXIgPSBGYWtlVGltZXIoc2Vjb25kc19wZXJfaW5jcmVtZW50PTAuMDAxKQorICAgICAgICB0ID0gdGltZWl0LlRpbWVyKHN0bXQ9c2VsZi5mYWtlX3N0bXQsIHNldHVwPXNlbGYuZmFrZV9zZXR1cCwgdGltZXI9dGltZXIpCisgICAgICAgIHJldHVybiB0LmF1dG9yYW5nZShjYWxsYmFjaykKKworICAgIGRlZiB0ZXN0X2F1dG9yYW5nZShzZWxmKToKKyAgICAgICAgbnVtX2xvb3BzLCB0aW1lX3Rha2VuID0gc2VsZi5hdXRvcmFuZ2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bV9sb29wcywgMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lX3Rha2VuLCAxLjApCisKKyAgICBkZWYgdGVzdF9hdXRvcmFuZ2Vfd2l0aF9jYWxsYmFjayhzZWxmKToKKyAgICAgICAgZGVmIGNhbGxiYWNrKGEsIGIpOgorICAgICAgICAgICAgcHJpbnQoInt9IHs6LjNmfSIuZm9ybWF0KGEsIGIpKQorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBudW1fbG9vcHMsIHRpbWVfdGFrZW4gPSBzZWxmLmF1dG9yYW5nZShjYWxsYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW1fbG9vcHMsIDEwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZV90YWtlbiwgMS4wKQorICAgICAgICBleHBlY3RlZCA9ICgnMTAgMC4wMTBcbicKKyAgICAgICAgICAgICAgICAgICAgJzEwMCAwLjEwMFxuJworICAgICAgICAgICAgICAgICAgICAnMTAwMCAxLjAwMFxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGV4cGVjdGVkKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5IGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQppbmRleCAzYjE3Y2E2Li41YTgxYTVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKQEAgLTQsNiArNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICBvcGVuIGFzIHRva2VuaXplX29wZW4sIFVudG9rZW5pemVyKQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIG1vY2sKK2Zyb20gdGVzdC50ZXN0X2dyYW1tYXIgaW1wb3J0IChWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUykKIGltcG9ydCBvcwogaW1wb3J0IHRva2VuCiAKQEAgLTI0LDggKzI2LDcgQEAKICAgICAgICAgICAgIGlmIHR5cGUgPT0gRU5ETUFSS0VSOgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICB0eXBlID0gdG9rX25hbWVbdHlwZV0KLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgICAlKHR5cGUpLTEwLjEwcyAlKHRva2VuKS0xMy4xM3IgJShzdGFydClzICUoZW5kKXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzKCkpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYiICAgIHt0eXBlOjEwfSB7dG9rZW4hcjoxM30ge3N0YXJ0fSB7ZW5kfSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgIFsiICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApIl0gKwogICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLnJzdHJpcCgpLnNwbGl0bGluZXMoKSkKQEAgLTEzMiwxOCArMTMzLDE4IEBACiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoInggPSAweGZmZmZmZmZmZmZmIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKLSAgICBOVU1CRVIgICAgICcweGZmZmZmZmZmZmYgKDEsIDQpICgxLCAxNykKKyAgICBOVU1CRVIgICAgICcweGZmZmZmZmZmZmZmJyAoMSwgNCkgKDEsIDE3KQogICAgICIiIikKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDEyMzE0MTI0MjE1MTI1MTYxNjExMCIsICIiIlwKICAgICBOQU1FICAgICAgICd4JyAgICAgICAgICAgKDEsIDApICgxLCAxKQogICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgMikgKDEsIDMpCi0gICAgTlVNQkVSICAgICAnMTIzMTQxMjQyMTUxICgxLCA0KSAoMSwgMjUpCisgICAgTlVNQkVSICAgICAnMTIzMTQxMjQyMTUxMjUxNjE2MTEwJyAoMSwgNCkgKDEsIDI1KQogICAgICIiIikKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IC0xNTkyMTU5MDIxNTAxMjU5MSIsICIiIlwKICAgICBOQU1FICAgICAgICd4JyAgICAgICAgICAgKDEsIDApICgxLCAxKQogICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgMikgKDEsIDMpCiAgICAgT1AgICAgICAgICAnLScgICAgICAgICAgICgxLCA0KSAoMSwgNSkKLSAgICBOVU1CRVIgICAgICcxNTkyMTU5MDIxNTAgKDEsIDUpICgxLCAyMikKKyAgICBOVU1CRVIgICAgICcxNTkyMTU5MDIxNTAxMjU5MScgKDEsIDUpICgxLCAyMikKICAgICAiIiIpCiAKICAgICBkZWYgdGVzdF9mbG9hdChzZWxmKToKQEAgLTE4Niw2ICsxODcsMjEgQEAKICAgICBOVU1CRVIgICAgICczLjE0ZTE1OScgICAgKDEsIDQpICgxLCAxMikKICAgICAiIiIpCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBkZWYgbnVtYmVyX3Rva2VuKHMpOgorICAgICAgICAgICAgZiA9IEJ5dGVzSU8ocy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICBmb3IgdG9rdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUgaW4gdG9rZW5pemUoZi5yZWFkbGluZSk6CisgICAgICAgICAgICAgICAgaWYgdG9rdHlwZSA9PSBOVU1CRVI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbgorICAgICAgICAgICAgcmV0dXJuICdpbnZhbGlkIHRva2VuJworICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiAnKCcgaW4gbGl0OgorICAgICAgICAgICAgICAgICMgdGhpcyB3b24ndCB3b3JrIHdpdGggY29tcG91bmQgY29tcGxleCBpbnB1dHMKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW1iZXJfdG9rZW4obGl0KSwgbGl0KQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobnVtYmVyX3Rva2VuKGxpdCksIGxpdCkKKwogICAgIGRlZiB0ZXN0X3N0cmluZyhzZWxmKToKICAgICAgICAgIyBTdHJpbmcgbGl0ZXJhbHMKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9ICcnOyB5ID0gXCJcIiIsICIiIlwKQEAgLTMwNyw2ICszMjMsNTAgQEAKICAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCiAgICAgU1RSSU5HICAgICAnUkIiYWJjIicgICAgICgxLCAzMCkgKDEsIDM3KQogICAgICIiIikKKyAgICAgICAgIyBDaGVjayAwLCAxLCBhbmQgMiBjaGFyYWN0ZXIgc3RyaW5nIHByZWZpeGVzLgorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInImFcCitkZVwKK2ZnIicsICIiIlwKKyAgICBTVFJJTkcgICAgICciYVxcXFxcXG5kZVxcXFxcXG5mZyJcJyAoMSwgMCkgKDMsIDMpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIndSJhXAorZGUiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3UiYVxcXFxcXG5kZSJcJyAgKDEsIDApICgyLCAzKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ3JiImFcCitkIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdyYiJhXFxcXFxcbmQiXCcgICgxLCAwKSAoMiwgMikKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUociciIiJhXAorYiIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdcIlwiImFcXFxcXFxuYlwiXCIiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIndSIiImFcCitiIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3VcIlwiImFcXFxcXFxuYlwiXCIiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIncmIiIiJhXAorYlwKK2MiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAncmIiXCIiYVxcXFxcXG5iXFxcXFxcbmMiXCIiJyAoMSwgMCkgKDMsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmImFiYyInLCAiIiJcCisgICAgU1RSSU5HICAgICAnZiJhYmMiJyAgICAgICgxLCAwKSAoMSwgNikKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2ZSImF7Yn1jIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmUiJhe2J9YyInICAgKDEsIDApICgxLCA5KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZiIiImFiYyIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmXCJcIlwiYWJjXCJcIlwiJyAgKDEsIDApICgxLCAxMCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidmImFiY1wKK2RlZiInLCAiIiJcCisgICAgU1RSSU5HICAgICAnZiJhYmNcXFxcXFxuZGVmIicgKDEsIDApICgyLCA0KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ1JmImFiY1wKK2RlZiInLCAiIiJcCisgICAgU1RSSU5HICAgICAnUmYiYWJjXFxcXFxcbmRlZiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCiAKICAgICBkZWYgdGVzdF9mdW5jdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgiZGVmIGQyMihhLCBiLCBjPTIsIGQ9MiwgKmspOiBwYXNzIiwgIiIiXApAQCAtNTA1LDcgKzU2NSw3IEBACiAgICAgICAgICMgTWV0aG9kcwogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJAc3RhdGljbWV0aG9kXG5kZWYgZm9vKHgseSk6IHBhc3MiLCAiIiJcCiAgICAgT1AgICAgICAgICAnQCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKLSAgICBOQU1FICAgICAgICdzdGF0aWNtZXRob2QgKDEsIDEpICgxLCAxMykKKyAgICBOQU1FICAgICAgICdzdGF0aWNtZXRob2QnICgxLCAxKSAoMSwgMTMpCiAgICAgTkVXTElORSAgICAnXFxuJyAgICAgICAgICAoMSwgMTMpICgxLCAxNCkKICAgICBOQU1FICAgICAgICdkZWYnICAgICAgICAgKDIsIDApICgyLCAzKQogICAgIE5BTUUgICAgICAgJ2ZvbycgICAgICAgICAoMiwgNCkgKDIsIDcpCkBAIC0xNDg4LDEwICsxNTQ4LDEwIEBACiAKICAgICAgICAgIyBUb2tlbml6ZSBpcyBicm9rZW4gb24gdGVzdF9wZXAzMTMxLnB5IGJlY2F1c2UgcmVndWxhciBleHByZXNzaW9ucyBhcmUKICAgICAgICAgIyBicm9rZW4gb24gdGhlIG9ic2N1cmUgdW5pY29kZSBpZGVudGlmaWVycyBpbiBpdC4gKnNpZ2gqCi0gICAgICAgICMgV2l0aCByb3VuZHRyaXAgZXh0ZW5kZWQgdG8gdGVzdCB0aGUgNS10dXBsZSBtb2RlIG9mICB1bnRva2VuaXplLAorICAgICAgICAjIFdpdGggcm91bmR0cmlwIGV4dGVuZGVkIHRvIHRlc3QgdGhlIDUtdHVwbGUgbW9kZSBvZiB1bnRva2VuaXplLAogICAgICAgICAjIDcgbW9yZSB0ZXN0ZmlsZXMgZmFpbC4gIFJlbW92ZSB0aGVtIGFsc28gdW50aWwgdGhlIGZhaWx1cmUgaXMgZGlhZ25vc2VkLgogCi0gICAgICAgIHRlc3RmaWxlcy5yZW1vdmUob3MucGF0aC5qb2luKHRlbXBkaXIsICJ0ZXN0X3BlcDMxMzEucHkiKSkKKyAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfdW5pY29kZV9pZGVudGlmaWVycy5weSIpKQogICAgICAgICBmb3IgZiBpbiAoJ2J1ZmZlcicsICdidWlsdGluJywgJ2ZpbGVpbycsICdpbnNwZWN0JywgJ29zJywgJ3BsYXRmb3JtJywgJ3N5cycpOgogICAgICAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfJXMucHkiKSAlIGYpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CmluZGV4IDA0Yzg3MjYuLjRkMGZjYTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKIAogYmFzZXBhdGggPSBvcy5wYXRoLmRpcm5hbWUoICAgICAgICAgICAgICAgICAjIDxzcmMvaW5zdGFsbCBkaXI+CiAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKCAgICAgICAgICAgICAgICAjIExpYgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X2dwcm9mMmh0bWwucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weQppbmRleCAwYzI5NGVjLi45NDg5ZWQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weQpAQCAtMiwxMiArMiwxMSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogaW1wb3J0IHRlbXBmaWxlCiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQppbmRleCAxMzA1Mjk1Li5mYjU2NWI3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKQEAgLTEsMTIgKzEsMTEgQEAKICIiIlRlc3RzIGZvciB0aGUgbWQ1c3VtIHNjcmlwdCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIGltcG9ydF90b29sLCBza2lwX2lmX21pc3NpbmcKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcKIAogc2tpcF9pZl9taXNzaW5nKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CmluZGV4IDA5MWZhNmEuLjI3Y2JmZTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKQEAgLTEsMTIgKzEsMTAgQEAKICIiIlRlc3RzIGZvciB0aGUgcGRlcHMgc2NyaXB0IGluIHRoZSBUb29scyBkaXJlY3RvcnkuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVtcGZpbGUKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2Rpciwgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAorZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKIAogc2tpcF9pZl9taXNzaW5nKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3VucGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weQppbmRleCA3MzRiYmMyLi42NWRlZTFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weQpAQCAtMTM0LDYgKzEzNCwxMSBAQAogY2xhc3MgVW5wYXJzZVRlc3RDYXNlKEFTVFRlc3RDYXNlKToKICAgICAjIFRlc3RzIGZvciBzcGVjaWZpYyBidWdzIGZvdW5kIGluIGVhcmxpZXIgdmVyc2lvbnMgb2YgdW5wYXJzZQogCisgICAgZGVmIHRlc3RfZnN0cmluZ3Moc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlIDI1MTgwCisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHIiIiJmJ3tmInswfSIqM30nIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChyIiIiZid7ZiJ7eX0iKjN9JyIiIikKKwogICAgIGRlZiB0ZXN0X2RlbF9zdGF0ZW1lbnQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJkZWwgeCwgeSwgeiIpCiAKQEAgLTI3OSw4ICsyODQsMTggQEAKICAgICAgICAgZm9yIGZpbGVuYW1lIGluIG5hbWVzOgogICAgICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoJ1Rlc3RpbmcgJXMnICUgZmlsZW5hbWUpCi0gICAgICAgICAgICBzb3VyY2UgPSByZWFkX3B5ZmlsZShmaWxlbmFtZSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHNvdXJjZSkKKworICAgICAgICAgICAgIyBTb21lIGYtc3RyaW5ncyBhcmUgbm90IGNvcnJlY3RseSByb3VuZC10cmlwcGVkIGJ5CisgICAgICAgICAgICAjICBUb29scy9wYXJzZXIvdW5wYXJzZS5weS4gIFNlZSBpc3N1ZSAyODAwMiBmb3IgZGV0YWlscy4KKyAgICAgICAgICAgICMgIFdlIG5lZWQgdG8gc2tpcCBmaWxlcyB0aGF0IGNvbnRhaW4gc3VjaCBmLXN0cmluZ3MuCisgICAgICAgICAgICBpZiBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSBpbiAoJ3Rlc3RfZnN0cmluZy5weScsICk6CisgICAgICAgICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KGYnU2tpcHBpbmcge2ZpbGVuYW1lfTogc2VlIGlzc3VlIDI4MDAyJykKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmaWxlbmFtZT1maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgc291cmNlID0gcmVhZF9weWZpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoc291cmNlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCAwM2RmZjg0Li4xZDg5NGFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTEsMTEgKzEsMTEgQEAKIGltcG9ydCBvcwotaW1wb3J0IGlvCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBybXRyZWUsIHVubGluaywgY2FwdHVyZWRfc3Rkb3V0Citmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgdHJhY2UKLWZyb20gdHJhY2UgaW1wb3J0IENvdmVyYWdlUmVzdWx0cywgVHJhY2UKK2Zyb20gdHJhY2UgaW1wb3J0IFRyYWNlCiAKIGZyb20gdGVzdC50cmFjZWRtb2R1bGVzIGltcG9ydCB0ZXN0bW9kCiAKQEAgLTM2NSw1MSArMzY1LDI3IEBACiAgICAgICAgICMgTWF0Y2hlZCBiZWZvcmUuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpZ25vcmUubmFtZXMoam4oJ2JhcicsICdiYXoucHknKSwgJ2JheicpKQogCitjbGFzcyBUZXN0Q29tbWFuZExpbmUodW5pdHRlc3QuVGVzdENhc2UpOgogCi1jbGFzcyBUZXN0RGVwcmVjYXRlZE1ldGhvZHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZhaWx1cmVzKHNlbGYpOgorICAgICAgICBfZXJyb3JzID0gKAorICAgICAgICAgICAgKGInZmlsZW5hbWUgaXMgbWlzc2luZzogcmVxdWlyZWQgd2l0aCB0aGUgbWFpbiBvcHRpb25zJywgJy1sJywgJy1UJyksCisgICAgICAgICAgICAoYidjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KScsICctbGMnKSwKKyAgICAgICAgICAgIChiJ2FyZ3VtZW50IC1SLy0tbm8tcmVwb3J0OiBub3QgYWxsb3dlZCB3aXRoIGFyZ3VtZW50IC1yLy0tcmVwb3J0JywgJy1yUicpLAorICAgICAgICAgICAgKGInbXVzdCBzcGVjaWZ5IG9uZSBvZiAtLXRyYWNlLCAtLWNvdW50LCAtLXJlcG9ydCwgLS1saXN0ZnVuY3MsIG9yIC0tdHJhY2tjYWxscycsICctZycpLAorICAgICAgICAgICAgKGInLXIvLS1yZXBvcnQgcmVxdWlyZXMgLWYvLS1maWxlJywgJy1yJyksCisgICAgICAgICAgICAoYictLXN1bW1hcnkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQnLCAnLXNUJyksCisgICAgICAgICAgICAoYid1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAteScsICcteScpKQorICAgICAgICBmb3IgbWVzc2FnZSwgKmFyZ3MgaW4gX2Vycm9yczoKKyAgICAgICAgICAgICpfLCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1tJywgJ3RyYWNlJywgKmFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1lc3NhZ2UsIHN0ZGVycikKIAotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfdXNhZ2Uoc2VsZik6Ci0gICAgICAgIHNpbyA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS51c2FnZShzaW8pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1VzYWdlOicsIHNpby5nZXR2YWx1ZSgpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9JZ25vcmUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuSWdub3JlKCkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfbW9kbmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJzcGFtIiwgdHJhY2UubW9kbmFtZSgic3BhbSIpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9mdWxsbW9kbmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJzcGFtIiwgdHJhY2UuZnVsbG1vZG5hbWUoInNwYW0iKSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lc19mcm9tX2NvZGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgZGVmIGZvbygpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHRyYWNlLmZpbmRfbGluZXNfZnJvbV9jb2RlKGZvby5fX2NvZGVfXywgWyJlZ2dzIl0pCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2ZpbmRfbGluZXMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgZGVmIGZvbygpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHRyYWNlLmZpbmRfbGluZXMoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9zdHJpbmdzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xpc3RmdW5jc19mbGFnX3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6CiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuZmluZF9zdHJpbmdzKGZkLm5hbWUpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2ZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGZkOgotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgVEVTVEZOKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLmZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZkLm5hbWUpCi0KKyAgICAgICAgICAgIGZkLndyaXRlKCJhID0gMVxuIikKKyAgICAgICAgICAgIHN0YXR1cywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICd0cmFjZScsICctbCcsIFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidmdW5jdGlvbnMgY2FsbGVkOicsIHN0ZG91dCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKaW5kZXggNDljZWRkYS4uNzI3NmJjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKQEAgLTEyNSwxMiArMTI1LDEyIEBACiAgICAgICAgIGRlZiBkb190ZXN0KGZpcnN0bGluZXMsIG1lc3NhZ2UsIGNoYXJzZXQsIGxpbmVubyk6CiAgICAgICAgICAgICAjIFJhaXNlIHRoZSBtZXNzYWdlIGluIGEgc3VicHJvY2VzcywgYW5kIGNhdGNoIHRoZSBvdXRwdXQKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBvcGVuKFRFU1RGTiwgInciLCBlbmNvZGluZz1jaGFyc2V0KQotICAgICAgICAgICAgICAgIG91dHB1dC53cml0ZSgiIiJ7MH1pZiAxOgotICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrOwotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3sxfScpCi0gICAgICAgICAgICAgICAgICAgICIiIi5mb3JtYXQoZmlyc3RsaW5lcywgbWVzc2FnZSkpCi0gICAgICAgICAgICAgICAgb3V0cHV0LmNsb3NlKCkKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAidyIsIGVuY29kaW5nPWNoYXJzZXQpIGFzIG91dHB1dDoKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCIiInswfWlmIDE6CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrOworICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCd7MX0nKQorICAgICAgICAgICAgICAgICAgICAgICAgIiIiLmZvcm1hdChmaXJzdGxpbmVzLCBtZXNzYWdlKSkKKwogICAgICAgICAgICAgICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgVEVTVEZOXSwKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCkBAIC0xNzEsOCArMTcxLDggQEAKICAgICAgICAgICAgICAgICAgICAgdGV4dCwgY2hhcnNldCwgNSkKICAgICAgICAgICAgIGRvX3Rlc3QoIiBcdFxmXG4jIGNvZGluZzogezB9XG4iLmZvcm1hdChjaGFyc2V0KSwKICAgICAgICAgICAgICAgICAgICAgdGV4dCwgY2hhcnNldCwgNSkKLSAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXMgbm8gZWZmZWN0Ci0gICAgICAgIGRvX3Rlc3QoIjBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCisgICAgICAgICMgSXNzdWUgIzE4OTYwOiBjb2Rpbmcgc3BlYyBzaG91bGQgaGF2ZSBubyBlZmZlY3QKKyAgICAgICAgZG9fdGVzdCgieD0wXG4jIGNvZGluZzogR0JLXG4iLCAiaFx4ZTkgaG8iLCAndXRmLTgnLCA1KQogCiAgICAgQHN1cHBvcnQucmVxdWlyZXNfdHlwZV9jb2xsZWN0aW5nCiAgICAgZGVmIHRlc3RfcHJpbnRfdHJhY2ViYWNrX2F0X2V4aXQoc2VsZik6CkBAIC0yOTksNiArMjk5LDEzNyBAQAogICAgICAgICAgICAgJyAgICB0cmFjZWJhY2sucHJpbnRfc3RhY2soKScsCiAgICAgICAgIF0pCiAKKyAgICAjIGlzc3VlIDI2ODIzIC0gU2hyaW5rIHJlY3Vyc2l2ZSB0cmFjZWJhY2tzCisgICAgZGVmIF9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkoc2VsZiwgcmVuZGVyX2V4Yyk6CisgICAgICAgICMgQWx3YXlzIHNob3cgZnVsbCBkaWZmcyB3aGVuIHRoaXMgdGVzdCBmYWlscworICAgICAgICAjIE5vdGUgdGhhdCByZWFycmFuZ2luZyB0aGluZ3MgbWF5IHJlcXVpcmUgYWRqdXN0aW5nCisgICAgICAgICMgdGhlIHJlbGF0aXZlIGxpbmUgbnVtYmVycyBpbiB0aGUgZXhwZWN0ZWQgdHJhY2ViYWNrcworICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisKKyAgICAgICAgIyBDaGVjayBoaXR0aW5nIHRoZSByZWN1cnNpb24gbGltaXQKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIGYoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfZjoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmKCkKKyAgICAgICAgICAgIGV4Y2VwdCBSZWN1cnNpb25FcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgcmVuZGVyX2V4YygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgibm8gcmVjdXJzaW9uIG9jY3VycmVkIikKKworICAgICAgICBsaW5lbm9fZiA9IGYuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2YgPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZis1fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgICMgWFhYOiBUaGUgZm9sbG93aW5nIGxpbmUgY2hhbmdlcyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgdGVzdHMKKyAgICAgICAgICAgICMgYXJlIHJ1biB0aHJvdWdoIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBvciB3aXRoIC1tCisgICAgICAgICAgICAjIEl0IGFsc28gdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0gKHN0YWNrIHNpemUpCisgICAgICAgICAgICAjIEZvcnR1bmF0ZWx5LCB3ZSBkb24ndCBjYXJlIGFib3V0IGV4YWN0bmVzcyBoZXJlLCBzbyB3ZSB1c2UgcmVnZXgKKyAgICAgICAgICAgIHInICBcW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgKFxkKykgbW9yZSB0aW1lc1xdJyAnXG4nCisgICAgICAgICAgICAnUmVjdXJzaW9uRXJyb3I6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkXG4nCisgICAgICAgICkKKworICAgICAgICBleHBlY3RlZCA9IHJlc3VsdF9mLnNwbGl0bGluZXMoKQorICAgICAgICBhY3R1YWwgPSBzdGRlcnJfZi5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorCisgICAgICAgICMgQ2hlY2sgdGhlIG91dHB1dCB0ZXh0IG1hdGNoZXMgZXhwZWN0YXRpb25zCisgICAgICAgICMgMm5kIGxhc3QgbGluZSBjb250YWlucyB0aGUgcmVwZXRpdGlvbiBjb3VudAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFs6LTJdLCBleHBlY3RlZFs6LTJdKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGFjdHVhbFstMl0sIGV4cGVjdGVkWy0yXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxbLTFdLCBleHBlY3RlZFstMV0pCisKKyAgICAgICAgIyBDaGVjayB0aGUgcmVjdXJzaW9uIGNvdW50IGlzIHJvdWdobHkgYXMgZXhwZWN0ZWQKKyAgICAgICAgcmVjX2xpbWl0ID0gc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihpbnQocmUuc2VhcmNoKHIiXGQrIiwgYWN0dWFsWy0yXSkuZ3JvdXAoKSksIHJhbmdlKHJlY19saW1pdC02MCwgcmVjX2xpbWl0KSkKKworICAgICAgICAjIENoZWNrIGEga25vd24gKGxpbWl0ZWQpIG51bWJlciBvZiByZWN1cnNpdmUgaW52b2NhdGlvbnMKKyAgICAgICAgZGVmIGcoY291bnQ9MTApOgorICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGcoY291bnQtMSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKworICAgICAgICB3aXRoIGNhcHR1cmVkX291dHB1dCgic3RkZXJyIikgYXMgc3RkZXJyX2c6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZygpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgcmVuZGVyX2V4YygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgibm8gdmFsdWUgZXJyb3Igd2FzIHJhaXNlZCIpCisKKyAgICAgICAgbGluZW5vX2cgPSBnLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vCisgICAgICAgIHJlc3VsdF9nID0gKAorICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZysyfSwgaW4gZ1xuJworICAgICAgICAgICAgJyAgICByZXR1cm4gZyhjb3VudC0xKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZysyfSwgaW4gZ1xuJworICAgICAgICAgICAgJyAgICByZXR1cm4gZyhjb3VudC0xKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZysyfSwgaW4gZ1xuJworICAgICAgICAgICAgJyAgICByZXR1cm4gZyhjb3VudC0xKVxuJworICAgICAgICAgICAgJyAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgNiBtb3JlIHRpbWVzXVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZyszfSwgaW4gZ1xuJworICAgICAgICAgICAgJyAgICByYWlzZSBWYWx1ZUVycm9yXG4nCisgICAgICAgICAgICAnVmFsdWVFcnJvclxuJworICAgICAgICApCisgICAgICAgIHRiX2xpbmUgPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZys3fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBnKClcbicKKyAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9ICh0Yl9saW5lICsgcmVzdWx0X2cpLnNwbGl0bGluZXMoKQorICAgICAgICBhY3R1YWwgPSBzdGRlcnJfZy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKKyAgICAgICAgIyBDaGVjayAyIGRpZmZlcmVudCByZXBldGl0aXZlIHNlY3Rpb25zCisgICAgICAgIGRlZiBoKGNvdW50PTEwKToKKyAgICAgICAgICAgIGlmIGNvdW50OgorICAgICAgICAgICAgICAgIHJldHVybiBoKGNvdW50LTEpCisgICAgICAgICAgICBnKCkKKworICAgICAgICB3aXRoIGNhcHR1cmVkX291dHB1dCgic3RkZXJyIikgYXMgc3RkZXJyX2g6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaCgpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgcmVuZGVyX2V4YygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgibm8gdmFsdWUgZXJyb3Igd2FzIHJhaXNlZCIpCisKKyAgICAgICAgbGluZW5vX2ggPSBoLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vCisgICAgICAgIHJlc3VsdF9oID0gKAorICAgICAgICAgICAgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grN30sIGluIF9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXlcbicKKyAgICAgICAgICAgICcgICAgaCgpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19oKzJ9LCBpbiBoXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBoKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19oKzJ9LCBpbiBoXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBoKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19oKzJ9LCBpbiBoXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBoKGNvdW50LTEpXG4nCisgICAgICAgICAgICAnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA2IG1vcmUgdGltZXNdXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19oKzN9LCBpbiBoXG4nCisgICAgICAgICAgICAnICAgIGcoKVxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gKHJlc3VsdF9oICsgcmVzdWx0X2cpLnNwbGl0bGluZXMoKQorICAgICAgICBhY3R1YWwgPSBzdGRlcnJfaC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfdHJhY2ViYWNrX3B5dGhvbihzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5KHRyYWNlYmFjay5wcmludF9leGMpCisKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3RyYWNlYmFja19jcHl0aG9uX2ludGVybmFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZXhjZXB0aW9uX3ByaW50CisgICAgICAgIGRlZiByZW5kZXJfZXhjKCk6CisgICAgICAgICAgICBleGNfdHlwZSwgZXhjX3ZhbHVlLCBleGNfdGIgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICAgICAgZXhjZXB0aW9uX3ByaW50KGV4Y192YWx1ZSkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5KHJlbmRlcl9leGMpCisKICAgICBkZWYgdGVzdF9mb3JtYXRfc3RhY2soc2VsZik6CiAgICAgICAgIGRlZiBmbXQoKToKICAgICAgICAgICAgIHJldHVybiB0cmFjZWJhY2suZm9ybWF0X3N0YWNrKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CmluZGV4IGRhODlhOWEuLjc5MGFiN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQpAQCAtMTEsOSArMTEsMTUgQEAKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBfdGVzdGNhcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGVzdGNhcGkgPSBOb25lCisKIAogRU1QVFlfU1RSSU5HX1NJWkUgPSBzeXMuZ2V0c2l6ZW9mKGInJykKIAorCiBkZWYgZ2V0X2ZyYW1lcyhuZnJhbWUsIGxpbmVub19kZWx0YSk6CiAgICAgZnJhbWVzID0gW10KICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoMSkKQEAgLTM3LDI4ICs0MywzMSBAQAogZGVmIGNyZWF0ZV9zbmFwc2hvdHMoKToKICAgICB0cmFjZWJhY2tfbGltaXQgPSAyCiAKKyAgICAjIF90cmFjZW1hbGxvYy5fZ2V0X3RyYWNlcygpIHJldHVybnMgYSBsaXN0IG9mIChkb21haW4sIHNpemUsCisgICAgIyB0cmFjZWJhY2tfZnJhbWVzKSB0dXBsZXMuIHRyYWNlYmFja19mcmFtZXMgaXMgYSB0dXBsZSBvZiAoZmlsZW5hbWUsCisgICAgIyBsaW5lX251bWJlcikgdHVwbGVzLgogICAgIHJhd190cmFjZXMgPSBbCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCiAKLSAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoNjYsICgoJ2IucHknLCAxKSwpKSwKKyAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCiAKLSAgICAgICAgKDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCiAgICAgXQogICAgIHNuYXBzaG90ID0gdHJhY2VtYWxsb2MuU25hcHNob3QocmF3X3RyYWNlcywgdHJhY2ViYWNrX2xpbWl0KQogCiAgICAgcmF3X3RyYWNlczIgPSBbCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCiAKLSAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgKDUwMDAsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDIsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDIsIDUwMDAsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoNDAwLCAoKCdjLnB5JywgNTc4KSwpKSwKKyAgICAgICAgKDQsIDQwMCwgKCgnYy5weScsIDU3OCksKSksCiAgICAgXQogICAgIHNuYXBzaG90MiA9IHRyYWNlbWFsbG9jLlNuYXBzaG90KHJhd190cmFjZXMyLCB0cmFjZWJhY2tfbGltaXQpCiAKQEAgLTEyNiw3ICsxMzUsNyBAQAogCiAgICAgZGVmIGZpbmRfdHJhY2Uoc2VsZiwgdHJhY2VzLCB0cmFjZWJhY2spOgogICAgICAgICBmb3IgdHJhY2UgaW4gdHJhY2VzOgotICAgICAgICAgICAgaWYgdHJhY2VbMV0gPT0gdHJhY2ViYWNrLl9mcmFtZXM6CisgICAgICAgICAgICBpZiB0cmFjZVsyXSA9PSB0cmFjZWJhY2suX2ZyYW1lczoKICAgICAgICAgICAgICAgICByZXR1cm4gdHJhY2UKIAogICAgICAgICBzZWxmLmZhaWwoInRyYWNlIG5vdCBmb3VuZCIpCkBAIC0xNDAsNyArMTQ5LDcgQEAKICAgICAgICAgdHJhY2UgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmpfdHJhY2ViYWNrKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0cmFjZSwgdHVwbGUpCi0gICAgICAgIHNpemUsIHRyYWNlYmFjayA9IHRyYWNlCisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBvYmpfc2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZWJhY2ssIG9ial90cmFjZWJhY2suX2ZyYW1lcykKIApAQCAtMTY3LDkgKzE3Niw4IEBACiAKICAgICAgICAgdHJhY2UxID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqMV90cmFjZWJhY2spCiAgICAgICAgIHRyYWNlMiA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9iajJfdHJhY2ViYWNrKQotICAgICAgICBzaXplMSwgdHJhY2ViYWNrMSA9IHRyYWNlMQotICAgICAgICBzaXplMiwgdHJhY2ViYWNrMiA9IHRyYWNlMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlYmFjazIsIHRyYWNlYmFjazEpCisgICAgICAgIGRvbWFpbjEsIHNpemUxLCB0cmFjZWJhY2sxID0gdHJhY2UxCisgICAgICAgIGRvbWFpbjIsIHNpemUyLCB0cmFjZWJhY2syID0gdHJhY2UyCiAgICAgICAgIHNlbGYuYXNzZXJ0SXModHJhY2ViYWNrMiwgdHJhY2ViYWNrMSkKIAogICAgIGRlZiB0ZXN0X2dldF90cmFjZWRfbWVtb3J5KHNlbGYpOgpAQCAtMjkyLDcgKzMwMCw3IEBACiAgICAgbWF4RGlmZiA9IDQwMDAKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9zbmFwc2hvdChzZWxmKToKLSAgICAgICAgcmF3X3RyYWNlcyA9IFsoNSwgKCgnYS5weScsIDIpLCkpXQorICAgICAgICByYXdfdHJhY2VzID0gWygwLCA1LCAoKCdhLnB5JywgMiksKSldCiAKICAgICAgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgogICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChwYXRjaC5vYmplY3QodHJhY2VtYWxsb2MsICdpc190cmFjaW5nJywKQEAgLTMyMiwxMSArMzMwLDExIEBACiAgICAgICAgICMgZXhjbHVkZSBiLnB5CiAgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAogICAgICAgICBdKQogCiAgICAgICAgICMgZmlsdGVyX3RyYWNlcygpIG11c3Qgbm90IHRvdWNoIHRoZSBvcmlnaW5hbCBzbmFwc2hvdApAQCAtMzM1LDEwICszNDMsMTAgQEAKICAgICAgICAgIyBvbmx5IGluY2x1ZGUgdHdvIGxpbmVzIG9mIGEucHkKICAgICAgICAgc25hcHNob3Q0ID0gc25hcHNob3QzLmZpbHRlcl90cmFjZXMoKGZpbHRlcjIsIGZpbHRlcjMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90NC50cmFjZXMuX3RyYWNlcywgWwotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCiAgICAgICAgIF0pCiAKICAgICAgICAgIyBObyBmaWx0ZXI6IGp1c3QgZHVwbGljYXRlIHRoZSBzbmFwc2hvdApAQCAtMzQ5LDYgKzM1Nyw1NCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc25hcHNob3QuZmlsdGVyX3RyYWNlcywgZmlsdGVyMSkKIAorICAgIGRlZiB0ZXN0X2ZpbHRlcl90cmFjZXNfZG9tYWluKHNlbGYpOgorICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCisgICAgICAgIGZpbHRlcjEgPSB0cmFjZW1hbGxvYy5GaWx0ZXIoRmFsc2UsICJhLnB5IiwgZG9tYWluPTEpCisgICAgICAgIGZpbHRlcjIgPSB0cmFjZW1hbGxvYy5GaWx0ZXIoVHJ1ZSwgImEucHkiLCBkb21haW49MSkKKworICAgICAgICBvcmlnaW5hbF90cmFjZXMgPSBsaXN0KHNuYXBzaG90LnRyYWNlcy5fdHJhY2VzKQorCisgICAgICAgICMgZXhjbHVkZSBhLnB5IG9mIGRvbWFpbiAxCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCisgICAgICAgICMgaW5jbHVkZSBkb21haW4gMQorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2ZpbHRlcl90cmFjZXNfZG9tYWluX2ZpbHRlcihzZWxmKToKKyAgICAgICAgc25hcHNob3QsIHNuYXBzaG90MiA9IGNyZWF0ZV9zbmFwc2hvdHMoKQorICAgICAgICBmaWx0ZXIxID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKEZhbHNlLCBkb21haW49MykKKyAgICAgICAgZmlsdGVyMiA9IHRyYWNlbWFsbG9jLkRvbWFpbkZpbHRlcihUcnVlLCBkb21haW49MykKKworICAgICAgICAjIGV4Y2x1ZGUgZG9tYWluIDIKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICBdKQorCisgICAgICAgICMgaW5jbHVkZSBkb21haW4gMgorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIyLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKICAgICBkZWYgdGVzdF9zbmFwc2hvdF9ncm91cF9ieV9saW5lKHNlbGYpOgogICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCiAgICAgICAgIHRiXzAgPSB0cmFjZWJhY2tfbGluZW5vKCc8dW5rbm93bj4nLCAwKQpAQCAtODE2LDEyICs4NzIsMTIxIEBACiAgICAgICAgIGFzc2VydF9weXRob25fb2soJy1YJywgJ3RyYWNlbWFsbG9jJywgJy1jJywgY29kZSkKIAogCitAdW5pdHRlc3Quc2tpcElmKF90ZXN0Y2FwaSBpcyBOb25lLCAnbmVlZCBfdGVzdGNhcGknKQorY2xhc3MgVGVzdENBUEkodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1heERpZmYgPSA4MCAqIDIwCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHRyYWNlbWFsbG9jLmlzX3RyYWNpbmcoKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInRyYWNlbWFsbG9jIG11c3QgYmUgc3RvcHBlZCBiZWZvcmUgdGhlIHRlc3QiKQorCisgICAgICAgIHNlbGYuZG9tYWluID0gNQorICAgICAgICBzZWxmLnNpemUgPSAxMjMKKyAgICAgICAgc2VsZi5vYmogPSBhbGxvY2F0ZV9ieXRlcyhzZWxmLnNpemUpWzBdCisKKyAgICAgICAgIyBmb3IgdGhlIHR5cGUgIm9iamVjdCIsIGlkKG9iaikgaXMgdGhlIGFkZHJlc3Mgb2YgaXRzIG1lbW9yeSBibG9jay4KKyAgICAgICAgIyBUaGlzIHR5cGUgaXMgbm90IHRyYWNrZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yCisgICAgICAgIHNlbGYucHRyID0gaWQoc2VsZi5vYmopCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorCisgICAgZGVmIGdldF90cmFjZWJhY2soc2VsZik6CisgICAgICAgIGZyYW1lcyA9IF90ZXN0Y2FwaS50cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKHNlbGYuZG9tYWluLCBzZWxmLnB0cikKKyAgICAgICAgaWYgZnJhbWVzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHRyYWNrKHNlbGYsIHJlbGVhc2VfZ2lsPUZhbHNlLCBuZnJhbWU9MSk6CisgICAgICAgIGZyYW1lcyA9IGdldF9mcmFtZXMobmZyYW1lLCAyKQorICAgICAgICBfdGVzdGNhcGkudHJhY2VtYWxsb2NfdHJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyLCBzZWxmLnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlX2dpbCkKKyAgICAgICAgcmV0dXJuIGZyYW1lcworCisgICAgZGVmIHVudHJhY2soc2VsZik6CisgICAgICAgIF90ZXN0Y2FwaS50cmFjZW1hbGxvY191bnRyYWNrKHNlbGYuZG9tYWluLCBzZWxmLnB0cikKKworICAgIGRlZiBnZXRfdHJhY2VkX21lbW9yeShzZWxmKToKKyAgICAgICAgIyBHZXQgdGhlIHRyYWNlZCBzaXplIGluIHRoZSBkb21haW4KKyAgICAgICAgc25hcHNob3QgPSB0cmFjZW1hbGxvYy50YWtlX3NuYXBzaG90KCkKKyAgICAgICAgZG9tYWluX2ZpbHRlciA9IHRyYWNlbWFsbG9jLkRvbWFpbkZpbHRlcihUcnVlLCBzZWxmLmRvbWFpbikKKyAgICAgICAgc25hcHNob3QgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKFtkb21haW5fZmlsdGVyXSkKKyAgICAgICAgcmV0dXJuIHN1bSh0cmFjZS5zaXplIGZvciB0cmFjZSBpbiBzbmFwc2hvdC50cmFjZXMpCisKKyAgICBkZWYgY2hlY2tfdHJhY2soc2VsZiwgcmVsZWFzZV9naWwpOgorICAgICAgICBuZnJhbWUgPSA1CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KG5mcmFtZSkKKworICAgICAgICBzaXplID0gdHJhY2VtYWxsb2MuZ2V0X3RyYWNlZF9tZW1vcnkoKVswXQorCisgICAgICAgIGZyYW1lcyA9IHNlbGYudHJhY2socmVsZWFzZV9naWwsIG5mcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF90cmFjZWJhY2soKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZW1hbGxvYy5UcmFjZWJhY2soZnJhbWVzKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgc2VsZi5zaXplKQorCisgICAgZGVmIHRlc3RfdHJhY2soc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2soRmFsc2UpCisKKyAgICBkZWYgdGVzdF90cmFja193aXRob3V0X2dpbChzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IGNhbGxpbmcgX1B5VHJhY2VNYWxsb2NfVHJhY2soKSB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTAorICAgICAgICAjIHdvcmtzIHRvbworICAgICAgICBzZWxmLmNoZWNrX3RyYWNrKFRydWUpCisKKyAgICBkZWYgdGVzdF90cmFja19hbHJlYWR5X3RyYWNrZWQoc2VsZik6CisgICAgICAgIG5mcmFtZSA9IDUKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQobmZyYW1lKQorCisgICAgICAgICMgdHJhY2sgYSBmaXJzdCB0aW1lCisgICAgICAgIHNlbGYudHJhY2soKQorCisgICAgICAgICMgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19UcmFjaygpIG11c3QgcmVtb3ZlIHRoZSBvbGQgdHJhY2UgYW5kIGFkZAorICAgICAgICAjIGEgbmV3IHRyYWNlIHdpdGggdGhlIG5ldyB0cmFjZWJhY2sKKyAgICAgICAgZnJhbWVzID0gc2VsZi50cmFjayhuZnJhbWU9bmZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpKQorCisgICAgZGVmIHRlc3RfdW50cmFjayhzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQoKQorCisgICAgICAgIHNlbGYudHJhY2soKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzZWxmLmdldF90cmFjZWJhY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF90cmFjZWRfbWVtb3J5KCksIHNlbGYuc2l6ZSkKKworICAgICAgICAjIHVudHJhY2sgbXVzdCByZW1vdmUgdGhlIHRyYWNlCisgICAgICAgIHNlbGYudW50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgMCkKKworICAgICAgICAjIGNhbGxpbmcgX1B5VHJhY2VNYWxsb2NfVW50cmFjaygpIG11bHRpcGxlIHRpbWVzIG11c3Qgbm90IGNyYXNoCisgICAgICAgIHNlbGYudW50cmFjaygpCisgICAgICAgIHNlbGYudW50cmFjaygpCisKKyAgICBkZWYgdGVzdF9zdG9wX3RyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYudHJhY2soKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmdldF90cmFjZWJhY2soKSkKKworICAgIGRlZiB0ZXN0X3N0b3BfdW50cmFjayhzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQoKQorICAgICAgICBzZWxmLnRyYWNrKCkKKworICAgICAgICB0cmFjZW1hbGxvYy5zdG9wKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi51bnRyYWNrKCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIFRlc3RUcmFjZW1hbGxvY0VuYWJsZWQsCiAgICAgICAgIFRlc3RTbmFwc2hvdCwKICAgICAgICAgVGVzdEZpbHRlcnMsCiAgICAgICAgIFRlc3RDb21tYW5kTGluZSwKKyAgICAgICAgVGVzdENBUEksCiAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weSBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKaW5kZXggNDkwZTcyMy4uNDYyNjY1ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weSBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CmluZGV4IDU2NmZjOWQuLjc1NDBhNDMxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weQpAQCAtMSw0ICsxLDMgQEAKLWltcG9ydCBvcwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKICMgU2tpcCB0aGlzIHRlc3QgaWYgX3RraW50ZXIgZG9lcyBub3QgZXhpc3QuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5IGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQppbmRleCA1ZTc0MTE1Li4zODJjYTAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICBkZWYgdGVzdF9mbG9hdF9jb25zdHJ1Y3RvcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICcnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJzVcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnNV81XDAnKQogCiAgICAgZGVmIHRlc3RfemVyb19kaXZpc2lvbihzZWxmKToKICAgICAgICAgdHJ5OiA1LjAgLyAwLjAKQEAgLTEwMDAsNiArMTAwMSwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBYID0gdHlwZXMubmV3X2NsYXNzKCJYIiwgKGludCgpLCBDKSkKIAorICAgIGRlZiB0ZXN0X29uZV9hcmd1bWVudF90eXBlKHNlbGYpOgorICAgICAgICBleHBlY3RlZF9tZXNzYWdlID0gJ3R5cGUuX19uZXdfXygpIHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMgKDEgZ2l2ZW4pJworCisgICAgICAgICMgT25seSB0eXBlIGl0c2VsZiBjYW4gdXNlIHRoZSBvbmUtYXJndW1lbnQgZm9ybSAoIzI3MTU3KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoNSksIGludCkKKworICAgICAgICBjbGFzcyBNKHR5cGUpOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBNKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksIGV4cGVjdGVkX21lc3NhZ2UpCisKKyAgICAgICAgY2xhc3MgTih0eXBlLCBtZXRhY2xhc3M9TSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIE4oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKwogCiBjbGFzcyBTaW1wbGVOYW1lc3BhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQppbmRleCA4MWU0OWQ2Li5mZTZjZDI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CkBAIC0xMCw2ICsxMCw3IEBACiBpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCkBAIC05ODYsNiArOTg3LDE5IEBACiAgICAgICAgICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludC5fX2Zvcm1hdF9fKHNlbGYgKiAyLCBmb3JtYXRfc3BlYykKIAorICAgICAgICBjbGFzcyBNOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHNlbGYueCA9IHgKKyAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ00oJyArIHNlbGYueCArICcpJworICAgICAgICAgICAgX19zdHJfXyA9IE5vbmUKKworICAgICAgICBjbGFzcyBOOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHNlbGYueCA9IHgKKyAgICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ04oJyArIHNlbGYueCArICcpJworICAgICAgICAgICAgX19mb3JtYXRfXyA9IE5vbmUKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmZvcm1hdCgpLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJy5mb3JtYXQoKSwgJ2FiYycpCkBAIC0xMjAwLDYgKzEyMTQsMTYgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIweHs6MHs6ZH1YfSIuZm9ybWF0KDB4MCwxNiksICIweDAwMDAwMDAwMDAwMDAwMDAiKQogCisgICAgICAgICMgQmxvY2tpbmcgZmFsbGJhY2sKKyAgICAgICAgbSA9IE0oJ2RhdGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7IXJ9Ii5mb3JtYXQobSksICdNKGRhdGEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAieyFzfSIuZm9ybWF0LCBtKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7fSIuZm9ybWF0LCBtKQorICAgICAgICBuID0gTignZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshcn0iLmZvcm1hdChuKSwgJ04oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7IXN9Ii5mb3JtYXQobiksICdOKGRhdGEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAie30iLmZvcm1hdCwgbikKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0X21hcCh7fSksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhJy5mb3JtYXRfbWFwKHt9KSwgJ2EnKQpAQCAtMTU0MSw3ICsxNTY1LDcgQEAKICAgICAgICAgICAgICgnKycsIGInKy0nKSwKICAgICAgICAgICAgICgnKy0nLCBiJystLScpLAogICAgICAgICAgICAgKCcrPycsIGInKy0/JyksCi0gICAgICAgICAgICAoJ1w/JywgYicrQUZ3PycpLAorICAgICAgICAgICAgKHInXD8nLCBiJytBRnc/JyksCiAgICAgICAgICAgICAoJys/JywgYicrLT8nKSwKICAgICAgICAgICAgIChyJ1xcPycsIGInK0FGd0FYQT8nKSwKICAgICAgICAgICAgIChyJ1xcXD8nLCBiJytBRndBWEFCYz8nKSwKQEAgLTIzODksNiArMjQxMywxMyBAQAogICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIHN0cikKICAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCByZXZlcnNlZCwgc3RyKQogCisgICAgZGVmIHRlc3RfaW52YWxpZF9zZXF1ZW5jZXMoc2VsZik6CisgICAgICAgIGZvciBsZXR0ZXIgaW4gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyAiODkiOiAjIDAtNyBhcmUgb2N0YWwgZXNjYXBlcworICAgICAgICAgICAgaWYgbGV0dGVyIGluICJhYmZucnR1dnhOVSI6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGV2YWwociInXCVzJyIgJSBsZXR0ZXIpCisKIAogY2xhc3MgQ0FQSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yNDIwLDcgKzI0NTEsNyBAQAogICAgICAgICAjIG5vbi1hc2NpaSBmb3JtYXQsIGFzY2lpIGFyZ3VtZW50OiBlbnN1cmUgdGhhdCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKQogICAgICAgICAjIHJhaXNlcyBhbiBlcnJvcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAnXlB5VW5pY29kZV9Gcm9tRm9ybWF0VlwoXCkgZXhwZWN0cyBhbiBBU0NJSS1lbmNvZGVkIGZvcm1hdCAnCisgICAgICAgICAgICByJ15QeVVuaWNvZGVfRnJvbUZvcm1hdFZcKFwpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgJwogICAgICAgICAgICAgJ3N0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4ZTkkJywKICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tRm9ybWF0LCBiJ3VuaWNvZGVceGU5PSVzJywgJ2FzY2lpJykKIApAQCAtMjc5Miw3ICsyODIzLDYgQEAKICAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHNlY29uZCBjYWxsIHJldHVybnMgdGhlIHNhbWUgcmVzdWx0CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3NfaGFzaChzKSwgY2hyKGspLmVuY29kZSgpICogKGkgKyAxKSkKIAotCiBjbGFzcyBTdHJpbmdNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9mb3JtYXR0ZXJfcGFyc2VyKHNlbGYpOgogICAgICAgICBkZWYgcGFyc2UoZm9ybWF0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGVfZnVuY3Rpb25zLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGVfZnVuY3Rpb25zLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfaWRlbnRpZmllcnMucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQppbmRleCA2ZWNjOTEzLi40ZmMxMWVjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKQEAgLTIwLDcgKzIwLDcgQEAKIGNsYXNzIFVuaWNvZGVNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnNTk3MTc2MDg3MmIyZjk4YmI5YzcwMWU2YzBkYjMyNzNkNzU2YjNlYycKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2MxZmE5ODY3NGE2ODNhYThhOGQ4ZGVlMGM4NDQ5NGY4ZDM2MzQ2ZTYnCiAKICAgICBkZWYgdGVzdF9tZXRob2RfY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtODAsNyArODAsNyBAQAogCiAgICAgIyBVcGRhdGUgdGhpcyBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcy4gTWFrZSBzdXJlIHRvIGRvIGEgZnVsbCByZWJ1aWxkCiAgICAgIyAoZS5nLiAnbWFrZSBkaXN0Y2xlYW4gJiYgbWFrZScpIHRvIGdldCB0aGUgY29ycmVjdCBjaGVja3N1bS4KLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzVlNzQ4MjdjZDA3ZjllNTQ2YTMwZjM0YjdiY2Y2Y2MyZWFjMzhjOGMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdmODkxYjFlNjQzMGM3MTI1MzFiOWJjOTM1YTM4ZTIyZDc4YmExYmYzJwogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBkYXRhID0gW10KICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC0yMjIsNiArMjIyLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWF3KCdcdTIwMTAnKSwgJ0EnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVhdygnXFUwMDAyMDAwMCcpLCAnVycpCiAKKyAgICBkZWYgdGVzdF9lYXN0X2FzaWFuX3dpZHRoXzlfMF9jaGFuZ2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIudWNkXzNfMl8wLmVhc3RfYXNpYW5fd2lkdGgoJ1x1MjMxYScpLCAnTicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5lYXN0X2FzaWFuX3dpZHRoKCdcdTIzMWEnKSwgJ1cnKQorCiBjbGFzcyBVbmljb2RlTWlzY1Rlc3QoVW5pY29kZURhdGFiYXNlVGVzdCk6CiAKICAgICBkZWYgdGVzdF9mYWlsZWRfaW1wb3J0X2R1cmluZ19jb21waWxpbmcoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CmluZGV4IGQxY2NiMzguLjNmY2IxOGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CkBAIC0xMTcsNiArMTE3LDI3IEBACiAgICAgICAuLi4KICAgICB0ZXN0LnRlc3RfdW5wYWNrLkJvem9FcnJvcgogCitBbGxvdyB1bnBhY2tpbmcgZW1wdHkgaXRlcmFibGVzCisKKyAgICA+Pj4gKCkgPSBbXQorICAgID4+PiBbXSA9ICgpCisgICAgPj4+IFtdID0gW10KKyAgICA+Pj4gKCkgPSAoKQorCitVbnBhY2tpbmcgbm9uLWl0ZXJhYmxlcyBzaG91bGQgcmFpc2UgVHlwZUVycm9yCisKKyAgICA+Pj4gKCkgPSA0MgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogJ2ludCcgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZQorCitVbnBhY2tpbmcgdG8gYW4gZW1wdHkgaXRlcmFibGUgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IKKworICAgID4+PiAoKSA9IFs0Ml0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBWYWx1ZUVycm9yOiB0b28gbWFueSB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAwKQorCiAiIiIKIAogX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQppbmRleCA3NDM0NmI0Li42YmU4ZjU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQpAQCAtMzU3LDcgKzM1Nyw2IEBACiBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6Ci0gICAgaW1wb3J0IHN5cwogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF91bnBhY2tfZXgKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfdW5wYWNrX2V4LCB2ZXJib3NlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQppbmRleCAyNDc1OThhLi40M2VhNmI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQpAQCAtNDY5LDEwICs0NjksMTEgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wsICJzc2wgbW9kdWxlIHJlcXVpcmVkIikKICAgICBkZWYgdGVzdF9jYWZpbGVfYW5kX2NvbnRleHQoc2VsZik6CiAgICAgICAgIGNvbnRleHQgPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAotICAgICAgICAgICAgICAgICJodHRwczovL2xvY2FsaG9zdCIsIGNhZmlsZT0iL25vbmV4aXN0ZW50L3BhdGgiLCBjb250ZXh0PWNvbnRleHQKLSAgICAgICAgICAgICkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oCisgICAgICAgICAgICAgICAgICAgICJodHRwczovL2xvY2FsaG9zdCIsIGNhZmlsZT0iL25vbmV4aXN0ZW50L3BhdGgiLCBjb250ZXh0PWNvbnRleHQKKyAgICAgICAgICAgICAgICApCiAKIGNsYXNzIHVybG9wZW5fRGF0YVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHVybG9wZW4oKSBvcGVuaW5nIGEgZGF0YSBVUkwuIiIiCkBAIC03MjksNyArNzMwLDcgQEAKIAogCiBjbGFzcyBRdW90aW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciB1cmxsaWIucXVvdGUoKSBhbmQgdXJsbGliLnF1b3RlX3BsdXMoKQorICAgIHIiIiJUZXN0cyBmb3IgdXJsbGliLnF1b3RlKCkgYW5kIHVybGxpYi5xdW90ZV9wbHVzKCkKIAogICAgIEFjY29yZGluZyB0byBSRkMgMjM5NiAoVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVycyksIHRvIGVzY2FwZSBhCiAgICAgY2hhcmFjdGVyIHlvdSB3cml0ZSBpdCBhcyAnJScgKyA8MiBjaGFyYWN0ZXIgVVMtQVNDSUkgaGV4IHZhbHVlPi4KQEAgLTgwNCw3ICs4MDUsNyBAQAogICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSBxdW90ZWQgYXJlIGJ5IGRlZmF1bHQgc2FucwogICAgICAgICAjIHNwYWNlIChzZXBhcmF0ZSB0ZXN0IGZvciB0aGF0KS4KICAgICAgICAgc2hvdWxkX3F1b3RlID0gW2NocihudW0pIGZvciBudW0gaW4gcmFuZ2UoMzIpXSAjIEZvciAweDAwIC0gMHgxRgotICAgICAgICBzaG91bGRfcXVvdGUuYXBwZW5kKCc8PiMlInt9fFxeW11gJykKKyAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZChyJzw+IyUie318XF5bXWAnKQogICAgICAgICBzaG91bGRfcXVvdGUuYXBwZW5kKGNocigxMjcpKSAjIEZvciAweDdGCiAgICAgICAgIHNob3VsZF9xdW90ZSA9ICcnLmpvaW4oc2hvdWxkX3F1b3RlKQogICAgICAgICBmb3IgY2hhciBpbiBzaG91bGRfcXVvdGU6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKaW5kZXggZWRhN2NjYy4uMzQzMjlmOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQpAQCAtNyw2ICs3LDggQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBhcnJheQogaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc3VicHJvY2VzcwogCiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKICMgVGhlIHByb3h5IGJ5cGFzcyBtZXRob2QgaW1wb3J0ZWQgYmVsb3cgaGFzIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSBPU1gKQEAgLTMzNSw3ICszMzcsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fdHVubmVsX2hlYWRlcnMuY2xlYXIoKQogCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz1Ob25lKToKKyAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPU5vbmUsICosCisgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAogICAgICAgICBzZWxmLnNlbGVjdG9yID0gdXJsCiAgICAgICAgIGlmIGhlYWRlcnMgaXMgbm90IE5vbmU6CkBAIC0zNDMsNiArMzQ2LDcgQEAKICAgICAgICAgc2VsZi5yZXFfaGVhZGVycy5zb3J0KCkKICAgICAgICAgaWYgYm9keToKICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGJvZHkKKyAgICAgICAgc2VsZi5lbmNvZGVfY2h1bmtlZCA9IGVuY29kZV9jaHVua2VkCiAgICAgICAgIGlmIHNlbGYucmFpc2Vfb25fZW5kaGVhZGVyczoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoKQogCkBAIC05MDgsNDEgKzkxMiwxMTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sICJiYXoiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEudW5yZWRpcmVjdGVkX2hkcnNbIlNwYW0iXSwgImZvbyIpCiAKLSAgICAgICAgIyBDaGVjayBpdGVyYWJsZSBib2R5IHN1cHBvcnQKLSAgICAgICAgZGVmIGl0ZXJhYmxlX2JvZHkoKToKLSAgICAgICAgICAgIHlpZWxkIGIib25lIgotICAgICAgICAgICAgeWllbGQgYiJ0d28iCi0gICAgICAgICAgICB5aWVsZCBiInRocmVlIgorICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9maWxlKHNlbGYpOgorICAgICAgICAjIEEgcmVndWxhciBmaWxlIC0gY2h1bmtlZCBlbmNvZGluZyBpcyB1c2VkIHVubGVzcyBDb250ZW50IExlbmd0aCBpcworICAgICAgICAjIGFscmVhZHkgc2V0LgogCi0gICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMTF9OgotICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGl0ZXJhYmxlX2JvZHkoKSwgaGVhZGVycykKLSAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgotICAgICAgICAgICAgICAgICMgSGF2aW5nIGFuIGl0ZXJhYmxlIGJvZHkgd2l0aG91dCBhIENvbnRlbnQtTGVuZ3RoIHNob3VsZAotICAgICAgICAgICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaC5kb19yZXF1ZXN0XywgcmVxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKIAotICAgICAgICAjIEEgZmlsZSBvYmplY3QuCi0gICAgICAgICMgVGVzdCBvbmx5IENvbnRlbnQtTGVuZ3RoIGF0dHJpYnV0ZSBvZiByZXF1ZXN0LgorICAgICAgICBmaWxlX29iaiA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBkZWxldGU9RmFsc2UpCisgICAgICAgIGZpbGVfcGF0aCA9IGZpbGVfb2JqLm5hbWUKKyAgICAgICAgZmlsZV9vYmouY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBmaWxlX3BhdGgpCiAKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmLCB7fSkKKyAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgdGUgPSBuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZSwgImNodW5rZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGYsIHsiQ29udGVudC1MZW5ndGgiOiAzMH0pCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCJUcmFuc2Zlci1lbmNvZGluZyIpKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2ZpbGVvYmooc2VsZik6CisgICAgICAgICMgQSBmaWxlIG9iamVjdCAtIGNodW5rZWQgZW5jb2RpbmcgaXMgdXNlZAorICAgICAgICAjIHVubGVzcyBDb250ZW50IExlbmd0aCBpcyBhbHJlYWR5IHNldC4KKyAgICAgICAgIyAoTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHN1YnRsZSBkaWZmZXJlbmNlcyB0byBhIHJlZ3VsYXIKKyAgICAgICAgIyBmaWxlLCB0aGF0IGlzIHdoeSB3ZSBhcmUgdGVzdGluZyBib3RoIGNhc2VzLikKKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQogICAgICAgICBmaWxlX29iaiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBmaWxlX29iai53cml0ZShiIlNvbWV0aGluZ1xuU29tZXRoaW5nXG5Tb21ldGhpbmdcbiIpCiAKLSAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAzMH06Ci0gICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmlsZV9vYmosIGhlYWRlcnMpCi0gICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKLSAgICAgICAgICAgICAgICAjIEhhdmluZyBhbiBpdGVyYWJsZSBib2R5IHdpdGhvdXQgYSBDb250ZW50LUxlbmd0aCBzaG91bGQKLSAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGguZG9fcmVxdWVzdF8sIHJlcSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCB7fSkKKyAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKSkKKworICAgICAgICBoZWFkZXJzID0geyJDb250ZW50LUxlbmd0aCI6IDMwfQorICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmlsZV9vYmosIGhlYWRlcnMpCisgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCJUcmFuc2Zlci1lbmNvZGluZyIpKQogCiAgICAgICAgIGZpbGVfb2JqLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9waXBlKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSByZWFkaW5nIGZyb20gYSBwaXBlLgorICAgICAgICAjIEEgcGlwZSBjYW5ub3QgYmUgc2VlaydlZC4gIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhlCisgICAgICAgICMgY29udGVudCBsZW5ndGggdXAgZnJvbnQuICBUaHVzLCBkb19yZXF1ZXN0XygpIHNob3VsZCBmYWxsCisgICAgICAgICMgYmFjayB0byBUcmFuc2Zlci1lbmNvZGluZyBjaHVua2VkLgorCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCisKKyAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCByInBhc3MiXQorICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDMwfToKKyAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpIGFzIHByb2M6CisgICAgICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIHByb2Muc3Rkb3V0LCBoZWFkZXJzKQorICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzApCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfaXRlcmFibGUoc2VsZik6CisgICAgICAgICMgR2VuZXJpYyBpdGVyYWJsZS4gIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhlIGNvbnRlbnQKKyAgICAgICAgIyBsZW5ndGggdXAgZnJvbnQuICBGYWxsIGJhY2sgdG8gVHJhbnNmZXItZW5jb2RpbmcgY2h1bmtlZC4KKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCisgICAgICAgIGRlZiBpdGVyYWJsZV9ib2R5KCk6CisgICAgICAgICAgICB5aWVsZCBiIm9uZSIKKworICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDExfToKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBpdGVyYWJsZV9ib2R5KCksIGhlYWRlcnMpCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJyksIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaHVua2VkJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAxMSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9lbXB0eV9zZXEoc2VsZik6CisgICAgICAgICMgWmVyby1sZW5ndGggaXRlcmFibGUgYm9keSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBpdGVyYWJsZQorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIGgucGFyZW50ID0gTW9ja09wZW5lcigpCisgICAgICAgIHJlcSA9IGguZG9fcmVxdWVzdF8oUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSwgImNodW5rZWQiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS5oYXNfaGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2FycmF5KHNlbGYpOgogICAgICAgICAjIGFycmF5LmFycmF5IEl0ZXJhYmxlIC0gQ29udGVudCBMZW5ndGggaXMgY2FsY3VsYXRlZAogCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCisKICAgICAgICAgaXRlcmFibGVfYXJyYXkgPSBhcnJheS5hcnJheSgiSSIsWzEsMiwzLDRdKQogCiAgICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMTZ9OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CmluZGV4IDY4YzUyM2EuLjcwYzRjMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKQEAgLTU1NywyNiArNTU3LDI4IEBACiAKICAgICBkZWYgdGVzdF9odHRwc193aXRoX2NhZmlsZShzZWxmKToKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICAjIEdvb2QgY2VydAotICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9sb2NhbGhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJ3ZSBjYXJlIGEgYml0IikKLSAgICAgICAgIyBCYWQgY2VydAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKLSAgICAgICAgIyBHb29kIGNlcnQsIGJ1dCBtaXNtYXRjaGluZyBob3N0bmFtZQotICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgIyBHb29kIGNlcnQKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9sb2NhbGhvc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCisgICAgICAgICAgICAjIEJhZCBjZXJ0CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICAgICAgIyBHb29kIGNlcnQsIGJ1dCBtaXNtYXRjaGluZyBob3N0bmFtZQorICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWRlZmF1bHQoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKICAgICAgICAgIyBTZWxmLXNpZ25lZCBjZXJ0IHNob3VsZCBmYWlsIHZlcmlmaWNhdGlvbiB3aXRoIHN5c3RlbSBjZXJ0aWZpY2F0ZSBzdG9yZQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGVmYXVsdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3NuaShzZWxmKToKICAgICAgICAgaWYgc3NsIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CmluZGV4IGI4MTE5MzAuLjk0OTcxNmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBzb2NrZXQKIGltcG9ydCB1cmxsaWIucmVxdWVzdAotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgZW1haWwubWVzc2FnZQogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CmluZGV4IDcxYWJjMTQuLjk5YzVjMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQpAQCAtNjA3LDI5ICs2MDcsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvcnQsIDgwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZ2V0dXJsKCksIHVybCkKIAotICAgICAgICAjIFZlcmlmeSBhbiBpbGxlZ2FsIHBvcnQgaXMgcmV0dXJuZWQgYXMgTm9uZQorICAgICAgICAjIFZlcmlmeSBhbiBpbGxlZ2FsIHBvcnQgcmFpc2VzIFZhbHVlRXJyb3IKICAgICAgICAgdXJsID0gYiJIVFRQOi8vV1dXLlBZVEhPTi5PUkc6NjU1MzYvZG9jLyNmcmFnIgogICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KHVybCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvcnQsIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAib3V0IG9mIHJhbmdlIik6CisgICAgICAgICAgICBwLnBvcnQKIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfYmFkX3BvcnQoc2VsZik6Ci0gICAgICAgICIiIkNoZWNrIGhhbmRsaW5nIG9mIG5vbi1pbnRlZ2VyIHBvcnRzLiIiIgotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KCJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsICJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCi0KLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZSgiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCAid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgICMgT25jZSBhZ2FpbiwgcmVwZWF0IG91cnNlbHZlcyB0byB0ZXN0IGJ5dGVzCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoYiJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsIGIid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UoYiJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsIGIid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQorICAgICAgICAiIiJDaGVjayBoYW5kbGluZyBvZiBpbnZhbGlkIHBvcnRzLiIiIgorICAgICAgICBmb3IgYnl0ZXMgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGZvciBwYXJzZSBpbiAodXJsbGliLnBhcnNlLnVybHNwbGl0LCB1cmxsaWIucGFyc2UudXJscGFyc2UpOgorICAgICAgICAgICAgICAgIGZvciBwb3J0IGluICgiZm9vIiwgIjEuNSIsICItMSIsICIweDEwIik6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ5dGVzPWJ5dGVzLCBwYXJzZT1wYXJzZSwgcG9ydD1wb3J0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldGxvYyA9ICJ3d3cuZXhhbXBsZS5uZXQ6IiArIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICJodHRwOi8vIiArIG5ldGxvYworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0bG9jID0gbmV0bG9jLmVuY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBwYXJzZSh1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBuZXRsb2MpCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAucG9ydAogCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlc193aXRob3V0X25ldGxvYyhzZWxmKToKICAgICAgICAgIyBUaGlzIGV4YW1wbGUgaXMgc3RyYWlnaHQgZnJvbSBSRkMgMzI2MS4gIEl0IGxvb2tzIGxpa2UgaXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CmluZGV4IDgzNTdmOGIuLjY2MmM3ZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQpAQCAtMSw2ICsxLDYgQEAKICMgQ2hlY2sgZXZlcnkgcGF0aCB0aHJvdWdoIGV2ZXJ5IG1ldGhvZCBvZiBVc2VyRGljdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1hcHBpbmdfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgbWFwcGluZ190ZXN0cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KG9uZT0xLCB0d289MiksIGQyKQogICAgICAgICAjIGl0ZW0gc2VxdWVuY2UgY29uc3RydWN0b3IKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChbKCdvbmUnLDEpLCAoJ3R3bycsMildKSwgZDIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KGRpY3Q9Wygnb25lJywxKSwgKCd0d28nLDIpXSksIGQyKQogICAgICAgICAjIGJvdGggdG9nZXRoZXIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChbKCdvbmUnLDEpLCAoJ3R3bycsMildLCB0d289MywgdGhyZWU9NSksIGQzKQpAQCAtMTQ5LDcgKzE0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZGljdCcsIDQyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsZWN0aW9ucy5Vc2VyRGljdCh7fSwgZGljdD1Ob25lKS5pdGVtcygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdkaWN0JywgTm9uZSldKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxlY3Rpb25zLlVzZXJEaWN0KGRpY3Q9eydhJzogNDJ9KS5pdGVtcygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYScsIDQyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29sbGVjdGlvbnMuVXNlckRpY3QsIDQyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKaW5kZXggZjkyZTRkMy4uOGRlNmMxNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CkBAIC0xLDcgKzEsNyBAQAogIyBDaGVjayBldmVyeSBwYXRoIHRocm91Z2ggZXZlcnkgbWV0aG9kIG9mIFVzZXJMaXN0CiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgbGlzdF90ZXN0cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIFVzZXJMaXN0VGVzdChsaXN0X3Rlc3RzLkNvbW1vblRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CmluZGV4IDliYzhlZGQuLjcxNTI4MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKQEAgLTEsOSArMSw4IEBACiAjIFVzZXJTdHJpbmcgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgbmF0aXZlIGJ1aWx0aW4gc3RyaW5nIHR5cGUuCiAjIFVzZXJTdHJpbmcgaW5zdGFuY2VzIHNob3VsZCBiZWhhdmUgc2ltaWxhciB0byBidWlsdGluIHN0cmluZyBvYmplY3RzLgogCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc3RyaW5nX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IHN0cmluZ190ZXN0cwogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyU3RyaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weSBiL0xpYi90ZXN0L3Rlc3RfdXRmOHNvdXJjZS5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3V0Zjhzb3VyY2UucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXUucHkgYi9MaWIvdGVzdC90ZXN0X3V1LnB5CmluZGV4IDI1ZmZmYmYuLmFkMmYyYzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91dS5weQpAQCAtOCw3ICs4LDYgQEAKIAogaW1wb3J0IHN5cywgb3MKIGltcG9ydCB1dQotZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IGlvCiAKIHBsYWludGV4dCA9IGIiVGhlIHNtb290aC1zY2FsZWQgcHl0aG9uIGNyZXB0IG92ZXIgdGhlIHNsZWVwaW5nIGRvZ1xuIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5IGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CmluZGV4IDM5OTlkMWYuLmY0YWQ3YzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKQEAgLTE1LDcgKzE1LDYgQEAKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChjYXB0dXJlZF9zdGRvdXQsIGNhcHR1cmVkX3N0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N5bWxpbmssIEVudmlyb25tZW50VmFyR3VhcmQsIHJtdHJlZSkKLWltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdmVudgogCkBAIC0zOSwxNSArMzgsOSBAQAogc2tpcEluVmVudiA9IHVuaXR0ZXN0LnNraXBJZihzeXMucHJlZml4ICE9IHN5cy5iYXNlX3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rlc3Qgbm90IGFwcHJvcHJpYXRlIGluIGEgdmVudicpCiAKLSMgb3MucGF0aC5leGlzdHMoJ251bCcpIGlzIEZhbHNlOiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1NDEKLWlmIG9zLmRldm51bGwubG93ZXIoKSA9PSAnbnVsJzoKLSAgICBmYWlsc09uV2luZG93cyA9IHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQotZWxzZToKLSAgICBkZWYgZmFpbHNPbldpbmRvd3MoZik6Ci0gICAgICAgIHJldHVybiBmCi0KIGNsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJCYXNlIGNsYXNzIGZvciB2ZW52IHRlc3RzLiIiIgorICAgIG1heERpZmYgPSA4MCAqIDUwCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZW52X2RpciA9IG9zLnBhdGgucmVhbHBhdGgodGVtcGZpbGUubWtkdGVtcCgpKQpAQCAtNTcsNyArNTAsNyBAQAogICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ0luY2x1ZGUnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmJpbmRpciA9ICdiaW4nCi0gICAgICAgICAgICBzZWxmLmxpYiA9ICgnbGliJywgJ3B5dGhvbiVzJyAlIHN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgIHNlbGYubGliID0gKCdsaWInLCAncHl0aG9uJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnaW5jbHVkZScKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KQEAgLTEyMSw2ICsxMTQsMTcgQEAKICAgICAgICAgICAgIHByaW50KCcgICAgJXInICUgb3MubGlzdGRpcihiZCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmbiksICdGaWxlICVyIHNob3VsZCBleGlzdC4nICUgZm4pCiAKKyAgICBkZWYgdGVzdF9wcm9tcHQoc2VsZik6CisgICAgICAgIGVudl9uYW1lID0gb3MucGF0aC5zcGxpdChzZWxmLmVudl9kaXIpWzFdCisKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcigpCisgICAgICAgIGNvbnRleHQgPSBidWlsZGVyLmVuc3VyZV9kaXJlY3RvcmllcyhzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5wcm9tcHQsICcoJXMpICcgJSBlbnZfbmFtZSkKKworICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKHByb21wdD0nTXkgcHJvbXB0JykKKyAgICAgICAgY29udGV4dCA9IGJ1aWxkZXIuZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LnByb21wdCwgJyhNeSBwcm9tcHQpICcpCisKICAgICBAc2tpcEluVmVudgogICAgIGRlZiB0ZXN0X3ByZWZpeGVzKHNlbGYpOgogICAgICAgICAiIiIKQEAgLTMxOCwxNiArMzIyLDIxIEBACiAgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZSh2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyLCB3aXRoX3BpcD1GYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRfcGlwX25vdF9pbnN0YWxsZWQoKQogCi0gICAgQGZhaWxzT25XaW5kb3dzCi0gICAgZGVmIHRlc3RfZGV2bnVsbF9leGlzdHNfYW5kX2lzX2VtcHR5KHNlbGYpOgorICAgIGRlZiB0ZXN0X2Rldm51bGwoc2VsZik6CiAgICAgICAgICMgRml4IGZvciBpc3N1ZSAjMjAwNTMgdXNlcyBvcy5kZXZudWxsIHRvIGZvcmNlIGEgY29uZmlnIGZpbGUgdG8KICAgICAgICAgIyBhcHBlYXIgZW1wdHkuIEhvd2V2ZXIgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTQxIG1lYW5zCiAgICAgICAgICMgdGhhdCBkb2Vzbid0IGN1cnJlbnRseSB3b3JrIHByb3Blcmx5IG9uIFdpbmRvd3MuIE9uY2UgdGhhdCBpcwogICAgICAgICAjIGZpeGVkLCB0aGUgIndpbl9sb2NhdGlvbiIgcGFydCBvZiB0ZXN0X3dpdGhfcGlwIHNob3VsZCBiZSByZXN0b3JlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MuZGV2bnVsbCkpCiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQogCisgICAgICAgICMgSXNzdWUgIzIwNTQxOiBvcy5wYXRoLmV4aXN0cygnbnVsJykgaXMgRmFsc2Ugb24gV2luZG93cworICAgICAgICBpZiBvcy5kZXZudWxsLmxvd2VyKCkgPT0gJ251bCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpKQorCisKICAgICAjIFJlcXVlc3RpbmcgcGlwIGZhaWxzIHdpdGhvdXQgU1NMIChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTk3NDQpCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzc2wgaXMgTm9uZSwgZW5zdXJlcGlwLl9NSVNTSU5HX1NTTF9NRVNTQUdFKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ3NvbWUgZGVwZW5kZW5jaWVzIG9mIHBpcCBpbXBvcnQgdGhyZWFkaW5nJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKaW5kZXggODRhNmZiNS4uYzExZWU0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CkBAIC0yLDcgKzIsOSBAQAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKQEAgLTcyMCw2ICs3MjIsMTcgQEAKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdHJlYW0uZ2V0dmFsdWUoKQogICAgICAgICBzZWxmLmFzc2VydEluKHRleHQsIHJlc3VsdCkKIAorICAgIGRlZiB0ZXN0X3Nob3d3YXJubXNnX21pc3Npbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IF9zaG93d2Fybm1zZygpIG1pc3NpbmcgaXMgb2theS4KKyAgICAgICAgdGV4dCA9ICdkZWwgX3Nob3d3YXJubXNnIHRlc3QnCisgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKKyAgICAgICAgICAgIGRlbCBzZWxmLm1vZHVsZS5fc2hvd3dhcm5tc2cKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9vdXRwdXQoJ3N0ZGVycicpIGFzIHN0cmVhbToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKHRleHQpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCByZXN1bHQpCisKICAgICBkZWYgdGVzdF9zaG93d2FybmluZ19ub3RfY2FsbGFibGUoc2VsZik6CiAgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKToKICAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKQEAgLTgyMSwxMiArODM0LDQ0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfb2JqZWN0LCBleHBlY3RlZF9maWxlX2xpbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBmaWxlX29iamVjdC5nZXR2YWx1ZSgpKQogCisKIGNsYXNzIENXYXJuaW5nc0Rpc3BsYXlUZXN0cyhXYXJuaW5nc0Rpc3BsYXlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfd2FybmluZ3MKIAogY2xhc3MgUHlXYXJuaW5nc0Rpc3BsYXlUZXN0cyhXYXJuaW5nc0Rpc3BsYXlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IHB5X3dhcm5pbmdzCiAKKyAgICBkZWYgdGVzdF90cmFjZW1hbGxvYyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZSh0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICAgICAgZiA9IG9wZW4oX19maWxlX18pCisgICAgICAgICAgICAgICAgICAgICMgRW1pdCBSZXNvdXJjZVdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgZiA9IE5vbmUKKworICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgIiIiKSkKKworICAgICAgICByZXMgPSBhc3NlcnRfcHl0aG9uX29rKCctV2QnLCAnLVgnLCAndHJhY2VtYWxsb2M9MicsIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHN0ZGVyciA9IHJlcy5lcnIuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKKyAgICAgICAgIyBub3JtYWxpemUgbmV3bGluZXMKKyAgICAgICAgc3RkZXJyID0gJ1xuJy5qb2luKHN0ZGVyci5zcGxpdGxpbmVzKCkpCisgICAgICAgIHN0ZGVyciA9IHJlLnN1YignPC4qPicsICc8Li4uPicsIHN0ZGVycikKKyAgICAgICAgZXhwZWN0ZWQgPSB0ZXh0d3JhcC5kZWRlbnQoJycnCisgICAgICAgICAgICB7Zm5hbWV9OjU6IFJlc291cmNlV2FybmluZzogdW5jbG9zZWQgZmlsZSA8Li4uPgorICAgICAgICAgICAgICBmID0gTm9uZQorICAgICAgICAgICAgT2JqZWN0IGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICAgICAgICAgIEZpbGUgIntmbmFtZX0iLCBsaW5lbm8gMworICAgICAgICAgICAgICAgIGYgPSBvcGVuKF9fZmlsZV9fKQorICAgICAgICAgICAgICBGaWxlICJ7Zm5hbWV9IiwgbGluZW5vIDcKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgJycnKQorICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLmZvcm1hdChmbmFtZT1zdXBwb3J0LlRFU1RGTikuc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyciwgZXhwZWN0ZWQpCisKIAogY2xhc3MgQ2F0Y2hXYXJuaW5nVGVzdHMoQmFzZVRlc3QpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhdmUucHkgYi9MaWIvdGVzdC90ZXN0X3dhdmUucHkKaW5kZXggM2VmZjc3My4uODY2NmY3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXZlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQpAQCAtMSw2ICsxLDYgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBhdWRpb3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKIGltcG9ydCBzeXMKIGltcG9ydCB3YXZlCkBAIC0xMDMsNSArMTAzLDExIEBACiAgICAgICAgIGZyYW1lcyA9IGJ5dGVzd2FwKGZyYW1lcywgNCkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydXQVZFX0ZPUk1BVF9QQ00nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCB3YXZlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKaW5kZXggNGNmYWE1NC4uYTQ3NGEwNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQpAQCAtOTE5LDcgKzkxOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihyLCAiX19kaWN0X18iKSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzX3JlZnNfd2l0aF9jeWNsZShzZWxmKToKLSAgICAgICAgIyBCdWcgIzMxMTAKKyAgICAgICAgIiIiQ29uZmlybSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMxMDAgaXMgZml4ZWQuIiIiCiAgICAgICAgICMgQW4gaW5zdGFuY2Ugb2YgYSB3ZWFrcmVmIHN1YmNsYXNzIGNhbiBoYXZlIGF0dHJpYnV0ZXMuCiAgICAgICAgICMgSWYgc3VjaCBhIHdlYWtyZWYgaG9sZHMgdGhlIG9ubHkgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0LAogICAgICAgICAjIGRlbGV0aW5nIHRoZSB3ZWFrcmVmIHdpbGwgZGVsZXRlIHRoZSBvYmplY3QuIEluIHRoaXMgY2FzZSwKQEAgLTEzMzMsMTMgKzEzMzMsMTYgQEAKICAgICAgICAgbyA9IE9iamVjdCgxMjM0NTYpCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIG4gPSBsZW4oZGljdCkKLSAgICAgICAgICAgIGRpY3QucG9waXRlbSgpCisgICAgICAgICAgICAjIFNpbmNlIHVuZGVybGF5aW5nIGRpY3QgaXMgb3JkZXJlZCwgZmlyc3QgaXRlbSBpcyBwb3BwZWQKKyAgICAgICAgICAgIGRpY3QucG9wKG5leHQoZGljdC5rZXlzKCkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAxKQogICAgICAgICAgICAgZGljdFtvXSA9IG8KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuKQorICAgICAgICAjIGxhc3QgaXRlbSBpbiBvYmplY3RzIGlzIHJlbW92ZWQgZnJvbSBkaWN0IGluIGNvbnRleHQgc2h1dGRvd24KICAgICAgICAgd2l0aCB0ZXN0Y29udGV4dCgpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAxKQotICAgICAgICAgICAgZGljdC5wb3AobmV4dChkaWN0LmtleXMoKSkpCisgICAgICAgICAgICAjIFRoZW4sIChvLCBvKSBpcyBwb3BwZWQKKyAgICAgICAgICAgIGRpY3QucG9waXRlbSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDIpCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQppbmRleCA5Y2U2NzJiLi42OTFiOTVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CkBAIC0xLDEzICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eSwgcmVmLCBXZWFrU2V0Ci1pbXBvcnQgb3BlcmF0b3IKLWltcG9ydCBjb3B5Citmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKIGltcG9ydCBzdHJpbmcKLWltcG9ydCBvcwotZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2h1ZmZsZQotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJTdHJpbmcgYXMgdXN0cgogaW1wb3J0IGdjCiBpbXBvcnQgY29udGV4dGxpYgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkgYi9MaWIvdGVzdC90ZXN0X3dpbmNvbnNvbGVpby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWEyZjdhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkKQEAgLTAsMCArMSwxNDcgQEAKKycnJ1Rlc3RzIGZvciBXaW5kb3dzQ29uc29sZUlPCisnJycKKworaW1wb3J0IGlvCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKworaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3Qgb25seSByZWxldmFudCBvbiB3aW4zMiIpCisKK2Zyb20gX3Rlc3Rjb25zb2xlIGltcG9ydCB3cml0ZV9pbnB1dAorCitDb25JTyA9IGlvLl9XaW5kb3dzQ29uc29sZUlPCisKK2NsYXNzIFdpbmRvd3NDb25zb2xlSU9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYWJjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDb25JTywgaW8uUmF3SU9CYXNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbklPLCBpby5CdWZmZXJlZElPQmFzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb25JTywgaW8uVGV4dElPQmFzZSkpCisKKyAgICBkZWYgdGVzdF9vcGVuX2ZkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpICAgIyBtdWx0aXBsZSBjbG9zZSBzaG91bGQgbm90IGNyYXNoCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMSwgJ3cnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBDb25JTygyLCAndycpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9vcGVuX25hbWUoc2VsZik6CisgICAgICAgIGYgPSBDb25JTygiQ09OIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKSAgICMgbXVsdGlwbGUgY2xvc2Ugc2hvdWxkIG5vdCBjcmFzaAorICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICBmID0gQ29uSU8oJ0NPTklOJCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgZiA9IENvbklPKCdDT05PVVQkJywgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIGFzc2VydFN0ZGluUm91bmRUcmlwKHNlbGYsIHRleHQpOgorICAgICAgICBzdGRpbiA9IG9wZW4oJ0NPTklOJCcsICdyJykKKyAgICAgICAgb2xkX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5zdGRpbiA9IHN0ZGluCisgICAgICAgICAgICB3cml0ZV9pbnB1dCgKKyAgICAgICAgICAgICAgICBzdGRpbi5idWZmZXIucmF3LAorICAgICAgICAgICAgICAgICh0ZXh0ICsgJ1xyXG4nKS5lbmNvZGUoJ3V0Zi0xNi1sZScsICdzdXJyb2dhdGVwYXNzJykKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFjdHVhbCA9IGlucHV0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRpbiA9IG9sZF9zdGRpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2lucHV0KHNlbGYpOgorICAgICAgICAjIEFTQ0lJCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ2FiYzEyMycpCisgICAgICAgICMgTm9uLUFTQ0lJCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ8+80Z7Qos670KTQmScpCisgICAgICAgICMgQ29tYmluaW5nIGNoYXJhY3RlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnQc2PQiDvrJbMs0FBzJ0nKQorICAgICAgICAjIE5vbi1CTVAKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnXFUwMDEwMDAwMFxVMDAxMGZmZmZcVTAwMTBmZmZkJykKKworICAgIGRlZiB0ZXN0X3BhcnRpYWxfcmVhZHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgbGVzcyB0aGFuIDEgZnVsbCBjaGFyYWN0ZXIgd29ya3Mgd2hlbiBzdGRpbgorICAgICAgICAjIGNvbnRhaW5zIG11bHRpYnl0ZSBVVEYtOCBzZXF1ZW5jZXMKKyAgICAgICAgc291cmNlID0gJ8+80Z7Qos670KTQmVxyXG4nLmVuY29kZSgndXRmLTE2LWxlJykKKyAgICAgICAgZXhwZWN0ZWQgPSAnz7zRntCizrvQpNCZXHJcbicuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGZvciByZWFkX2NvdW50IGluIHJhbmdlKDEsIDE2KToKKyAgICAgICAgICAgIHdpdGggb3BlbignQ09OSU4kJywgJ3JiJywgYnVmZmVyaW5nPTApIGFzIHN0ZGluOgorICAgICAgICAgICAgICAgIHdyaXRlX2lucHV0KHN0ZGluLCBzb3VyY2UpCisKKyAgICAgICAgICAgICAgICBhY3R1YWwgPSBiJycKKyAgICAgICAgICAgICAgICB3aGlsZSBub3QgYWN0dWFsLmVuZHN3aXRoKGInXG4nKToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHN0ZGluLnJlYWQocmVhZF9jb3VudCkKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsICs9IGIKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgJ3N0ZGluLnJlYWQoe30pJy5mb3JtYXQocmVhZF9jb3VudCkpCisKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3N1cnJvZ2F0ZV9yZWFkcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgcmVhZGluZyBsZXNzIHRoYW4gMSBmdWxsIGNoYXJhY3RlciB3b3JrcyB3aGVuIHN0ZGluCisgICAgICAgICMgY29udGFpbnMgc3Vycm9nYXRlIHBhaXJzIHRoYXQgY2Fubm90IGJlIGRlY29kZWQgdG8gVVRGLTggd2l0aG91dAorICAgICAgICAjIHJlYWRpbmcgYW4gZXh0cmEgY2hhcmFjdGVyLgorICAgICAgICBzb3VyY2UgPSAnXFUwMDEwMUZGRlxVMDAxMDEwMDFcclxuJy5lbmNvZGUoJ3V0Zi0xNi1sZScpCisgICAgICAgIGV4cGVjdGVkID0gJ1xVMDAxMDFGRkZcVTAwMTAxMDAxXHJcbicuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGZvciByZWFkX2NvdW50IGluIHJhbmdlKDEsIDE2KToKKyAgICAgICAgICAgIHdpdGggb3BlbignQ09OSU4kJywgJ3JiJywgYnVmZmVyaW5nPTApIGFzIHN0ZGluOgorICAgICAgICAgICAgICAgIHdyaXRlX2lucHV0KHN0ZGluLCBzb3VyY2UpCisKKyAgICAgICAgICAgICAgICBhY3R1YWwgPSBiJycKKyAgICAgICAgICAgICAgICB3aGlsZSBub3QgYWN0dWFsLmVuZHN3aXRoKGInXG4nKToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHN0ZGluLnJlYWQocmVhZF9jb3VudCkKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsICs9IGIKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgJ3N0ZGluLnJlYWQoe30pJy5mb3JtYXQocmVhZF9jb3VudCkpCisKKyAgICBkZWYgdGVzdF9jdHJsX3ooc2VsZik6CisgICAgICAgIHdpdGggb3BlbignQ09OSU4kJywgJ3JiJywgYnVmZmVyaW5nPTApIGFzIHN0ZGluOgorICAgICAgICAgICAgc291cmNlID0gJ1x4QzRceDFBXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnXHhDNCcuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorICAgICAgICAgICAgYSwgYiA9IHN0ZGluLnJlYWQoMSksIHN0ZGluLnJlYWRhbGwoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFswOjFdLCBhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFsxOl0sIGIpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CmluZGV4IDYwMjA3ZmIuLmQ2NDJiMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CkBAIC0zNyw2ICszNyw3IEBACiAKIHRlc3RfZGF0YSA9IFsKICAgICAoIkludCBWYWx1ZSIsICAgICA0NSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19EV09SRCksCisgICAgKCJRd29yZCBWYWx1ZSIsICAgMHgxMTIyMzM0NDU1NjY3Nzg4LCAgICAgICAgICAgICAgICAgICAgICBSRUdfUVdPUkQpLAogICAgICgiU3RyaW5nIFZhbCIsICAgICJBIHN0cmluZyB2YWx1ZSIsICAgICAgICAgICAgICAgICAgICAgICAgUkVHX1NaKSwKICAgICAoIlN0cmluZ0V4cGFuZCIsICAiVGhlIHBhdGggaXMgJXBhdGglIiwgICAgICAgICAgICAgICAgICAgIFJFR19FWFBBTkRfU1opLAogICAgICgiTXVsdGktc3RyaW5nIiwgIFsiTG90cyIsICJvZiIsICJzdHJpbmciLCAidmFsdWVzIl0sICAgICAgUkVHX01VTFRJX1NaKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CmluZGV4IDRhOGFiN2QuLjE3OWUwNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQpAQCAtNTEsNiArNTEsMTAgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwLCAyMDAwLCAxMDApOgogICAgICAgICAgICAgc2FmZV9CZWVwKGksIDc1KQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX0JlZXAoZHVyYXRpb249NzUsIGZyZXF1ZW5jeT0yMDAwKQorCisKIGNsYXNzIE1lc3NhZ2VCZWVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC03Niw2ICs4MCw5IEBACiAgICAgZGVmIHRlc3RfcXVlc3Rpb24oc2VsZik6CiAgICAgICAgIHNhZmVfTWVzc2FnZUJlZXAod2luc291bmQuTUJfSUNPTlFVRVNUSU9OKQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX01lc3NhZ2VCZWVwKHR5cGU9d2luc291bmQuTUJfT0spCisKIAogY2xhc3MgUGxheVNvdW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg3LDYgKzk0LDI1IEBACiAgICAgICAgICAgICB3aW5zb3VuZC5QbGF5U291bmQsCiAgICAgICAgICAgICAibm9uZSIsIHdpbnNvdW5kLlNORF9BU1lOQyB8IHdpbnNvdW5kLlNORF9NRU1PUlkKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgYiJiYWQiLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgImJhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbnNvdW5kLlNORF9NRU1PUlkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCAxLCAwKQorCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbGFncz13aW5zb3VuZC5TTkRfQUxJQVMsIHNvdW5kPSJTeXN0ZW1FeGl0IikKKworICAgIGRlZiB0ZXN0X3NuZF9tZW1vcnkoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LmZpbmRmaWxlKCdwbHVjay1wY204LndhdicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcj0nYXVkaW9kYXRhJyksICdyYicpIGFzIGY6CisgICAgICAgICAgICBhdWRpb19kYXRhID0gZi5yZWFkKCkKKyAgICAgICAgc2FmZV9QbGF5U291bmQoYXVkaW9fZGF0YSwgd2luc291bmQuU05EX01FTU9SWSkKKyAgICAgICAgYXVkaW9fZGF0YSA9IGJ5dGVhcnJheShhdWRpb19kYXRhKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChhdWRpb19kYXRhLCB3aW5zb3VuZC5TTkRfTUVNT1JZKQorCisgICAgZGVmIHRlc3Rfc25kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmbiA9IHN1cHBvcnQuZmluZGZpbGUoJ3BsdWNrLXBjbTgud2F2Jywgc3ViZGlyPSdhdWRpb2RhdGEnKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbiwgd2luc291bmQuU05EX0ZJTEVOQU1FIHwgd2luc291bmQuU05EX05PREVGQVVMVCkKIAogICAgIGRlZiB0ZXN0X2FsaWFzZXMoc2VsZik6CiAgICAgICAgIGFsaWFzZXMgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKaW5kZXggZThkNzg5Yi4uZTI0N2ZmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQpAQCAtMTQwLDExICsxNDAsNiBAQAogICAgICAgICAgICAgJ3dpdGggbW9jayBhcyAoTm9uZSk6XG4nCiAgICAgICAgICAgICAnICBwYXNzJykKIAotICAgIGRlZiB0ZXN0QXNzaWdubWVudFRvRW1wdHlUdXBsZUVycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1N5bnRheEVycm9yKAotICAgICAgICAgICAgJ3dpdGggbW9jayBhcyAoKTpcbicKLSAgICAgICAgICAgICcgIHBhc3MnKQotCiAgICAgZGVmIHRlc3RBc3NpZ25tZW50VG9UdXBsZU9ubHlDb250YWluaW5nTm9uZUVycm9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1N5bnRheEVycm9yKCd3aXRoIG1vY2sgYXMgTm9uZSw6XG4gIHBhc3MnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1N5bnRheEVycm9yKApAQCAtNDU0LDcgKzQ0OSw3IEBACiAgICAgICAgICAgICB3aXRoIGNtKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbigiZnJvbSB3aXRoIikKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKIAogICAgIGRlZiB0ZXN0UmFpc2VkU3RvcEl0ZXJhdGlvbjIoc2VsZik6CkBAIC00ODIsNyArNDc3LDcgQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBuZXh0KGl0ZXIoW10pKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRHZW5lcmF0b3JFeGl0MShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQppbmRleCA2MWE3NTBjLi43NzA4ZTIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CkBAIC0yNTgsNyArMjU4LDcgQEAKIAogICAgICAgICBkZWYgYXBwKGVudmlyb24sIHN0YXJ0X3Jlc3BvbnNlKToKICAgICAgICAgICAgIHN0YXJ0X3Jlc3BvbnNlKCIyMDAgT0siLCBbXSkKLSAgICAgICAgICAgIHJldHVybiBbYnl0ZXMoc3VwcG9ydC5TT0NLX01BWF9TSVpFKV0KKyAgICAgICAgICAgIHJldHVybiBbYidcMCcgKiBzdXBwb3J0LlNPQ0tfTUFYX1NJWkVdCiAKICAgICAgICAgY2xhc3MgV3NnaUhhbmRsZXIoTm9Mb2dSZXF1ZXN0SGFuZGxlciwgV1NHSVJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKaW5kZXggZmJmYzBiMC4uMDU0ZWM4ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKQEAgLTkxLDggKzkxLDYgQEAKIAogCiBjbGFzcyBNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB3ZSBnZXQgcmlkIG9mIHRoZSBnbG9iYWwgbW9kdWxlIHZhcnMKLQogICAgIGRlZiB0ZXN0X3Nhbml0eShzZWxmKToKICAgICAgICAgIyBJbXBvcnQgc2FuaXR5LgogCkBAIC0xMDAsNiArOTgsMTAgQEAKICAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCiAgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBuYW1lcyA9ICgieG1sLmV0cmVlLkVsZW1lbnRUcmVlIiwgIl9lbGVtZW50dHJlZSIpCisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIEVULCBuYW1lcywgYmxhY2tsaXN0PSgiSFRNTF9FTVBUWSIsKSkKKwogCiBkZWYgc2VyaWFsaXplKGVsZW0sIHRvX3N0cmluZz1UcnVlLCBlbmNvZGluZz0ndW5pY29kZScsICoqb3B0aW9ucyk6CiAgICAgaWYgZW5jb2RpbmcgIT0gJ3VuaWNvZGUnOgpAQCAtMTgyLDEwICsxODQsMTIgQEAKIAogICAgICAgICBkZWYgY2hlY2tfZWxlbWVudChlbGVtZW50KToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShFVC5pc2VsZW1lbnQoZWxlbWVudCksIG1zZz0ibm90IGFuIGVsZW1lbnQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgInRhZyIpLCBtc2c9Im5vIHRhZyBtZW1iZXIiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgImF0dHJpYiIpLCBtc2c9Im5vIGF0dHJpYiBtZW1iZXIiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgInRleHQiKSwgbXNnPSJubyB0ZXh0IG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFpbCIpLCBtc2c9Im5vIHRhaWwgbWVtYmVyIikKKyAgICAgICAgICAgIGRpcmVsZW0gPSBkaXIoZWxlbWVudCkKKyAgICAgICAgICAgIGZvciBhdHRyIGluICd0YWcnLCAnYXR0cmliJywgJ3RleHQnLCAndGFpbCc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J25vICVzIG1lbWJlcicgJSBhdHRyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZGlyZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nbm8gJXMgdmlzaWJsZSBieSBkaXInICUgYXR0cikKIAogICAgICAgICAgICAgY2hlY2tfc3RyaW5nKGVsZW1lbnQudGFnKQogICAgICAgICAgICAgY2hlY2tfbWFwcGluZyhlbGVtZW50LmF0dHJpYikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CmluZGV4IDk2YjQ0NmUuLjg3ZjNmMjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQpAQCAtMSw1ICsxLDUgQEAKICMgeG1sLmV0cmVlIHRlc3QgZm9yIGNFbGVtZW50VHJlZQotaW1wb3J0IHN5cywgc3RydWN0CitpbXBvcnQgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCiBpbXBvcnQgdHlwZXMKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuY2FsY3NpemUoJzhQJykpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlLCB0ZXN0X3htbF9ldHJlZV9jCisgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZQogCiAgICAgIyBSdW4gdGhlIHRlc3RzIHNwZWNpZmljIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CmluZGV4IDAyZDlmNWMuLmRmOWM3OWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtOSw3ICsxMCw2IEBACiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCBodHRwLCBodHRwLnNlcnZlcgogaW1wb3J0IHNvY2tldAotaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBpbwogaW1wb3J0IGNvbnRleHRsaWIKQEAgLTIzOCw2ICsyMzgsNTQgQEAKICAgICAgICAgICAgICAgICAnPC9zdHJ1Y3Q+PC92YWx1ZT48L3BhcmFtPjwvcGFyYW1zPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlc3BvbnNlRXJyb3IsIHhtbHJwY2xpYi5sb2FkcywgZGF0YSkKIAorICAgIGRlZiBjaGVja19sb2FkcyhzZWxmLCBzLCB2YWx1ZSwgKiprd2FyZ3MpOgorICAgICAgICBkdW1wID0gJzxwYXJhbXM+PHBhcmFtPjx2YWx1ZT4lczwvdmFsdWU+PC9wYXJhbT48L3BhcmFtcz4nICUgcworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMoZHVtcCwgKiprd2FyZ3MpCisgICAgICAgIChuZXd2YWx1ZSwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3dmFsdWUsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3dmFsdWUpLCB0eXBlKHZhbHVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgIGRlZiB0ZXN0X2xvYWRfc3RhbmRhcmRfdHlwZXMoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19sb2FkcworICAgICAgICBjaGVjaygnc3RyaW5nJywgJ3N0cmluZycpCisgICAgICAgIGNoZWNrKCc8c3RyaW5nPnN0cmluZzwvc3RyaW5nPicsICdzdHJpbmcnKQorICAgICAgICBjaGVjaygnPHN0cmluZz7wnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiIHN0cmluZzwvc3RyaW5nPicsICfwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiIHN0cmluZycpCisgICAgICAgIGNoZWNrKCc8aW50PjIwNTYxODM5NDc8L2ludD4nLCAyMDU2MTgzOTQ3KQorICAgICAgICBjaGVjaygnPGludD4tMjA1NjE4Mzk0NzwvaW50PicsIC0yMDU2MTgzOTQ3KQorICAgICAgICBjaGVjaygnPGk0PjIwNTYxODM5NDc8L2k0PicsIDIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8ZG91YmxlPjQ2MDkzLjc4MTI1PC9kb3VibGU+JywgNDYwOTMuNzgxMjUpCisgICAgICAgIGNoZWNrKCc8Ym9vbGVhbj4wPC9ib29sZWFuPicsIEZhbHNlKQorICAgICAgICBjaGVjaygnPGJhc2U2ND5BR0o1ZEdVZ2MzUnlhVzVuL3c9PTwvYmFzZTY0PicsCisgICAgICAgICAgICAgIHhtbHJwY2xpYi5CaW5hcnkoYidceDAwYnl0ZSBzdHJpbmdceGZmJykpCisgICAgICAgIGNoZWNrKCc8YmFzZTY0PkFHSjVkR1VnYzNSeWFXNW4vdz09PC9iYXNlNjQ+JywKKyAgICAgICAgICAgICAgYidceDAwYnl0ZSBzdHJpbmdceGZmJywgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgY2hlY2soJzxkYXRlVGltZS5pc284NjAxPjIwMDUwMjEwVDExOjQxOjIzPC9kYXRlVGltZS5pc284NjAxPicsCisgICAgICAgICAgICAgIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKKyAgICAgICAgY2hlY2soJzxkYXRlVGltZS5pc284NjAxPjIwMDUwMjEwVDExOjQxOjIzPC9kYXRlVGltZS5pc284NjAxPicsCisgICAgICAgICAgICAgIGRhdGV0aW1lLmRhdGV0aW1lKDIwMDUsIDIsIDEwLCAxMSwgNDEsIDIzKSwKKyAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgY2hlY2soJzxhcnJheT48ZGF0YT4nCisgICAgICAgICAgICAgICc8dmFsdWU+PGludD4xPC9pbnQ+PC92YWx1ZT48dmFsdWU+PGludD4yPC9pbnQ+PC92YWx1ZT4nCisgICAgICAgICAgICAgICc8L2RhdGE+PC9hcnJheT4nLCBbMSwgMl0pCisgICAgICAgIGNoZWNrKCc8c3RydWN0PicKKyAgICAgICAgICAgICAgJzxtZW1iZXI+PG5hbWU+YjwvbmFtZT48dmFsdWU+PGludD4yPC9pbnQ+PC92YWx1ZT48L21lbWJlcj4nCisgICAgICAgICAgICAgICc8bWVtYmVyPjxuYW1lPmE8L25hbWU+PHZhbHVlPjxpbnQ+MTwvaW50PjwvdmFsdWU+PC9tZW1iZXI+JworICAgICAgICAgICAgICAnPC9zdHJ1Y3Q+JywgeydhJzogMSwgJ2InOiAyfSkKKworICAgIGRlZiB0ZXN0X2xvYWRfZXh0ZW5zaW9uX3R5cGVzKHNlbGYpOgorICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfbG9hZHMKKyAgICAgICAgY2hlY2soJzxuaWwvPicsIE5vbmUpCisgICAgICAgIGNoZWNrKCc8ZXg6bmlsLz4nLCBOb25lKQorICAgICAgICBjaGVjaygnPGkxPjIwNTwvaTE+JywgMjA1KQorICAgICAgICBjaGVjaygnPGkyPjIwNTYxPC9pMj4nLCAyMDU2MSkKKyAgICAgICAgY2hlY2soJzxpOD45ODc2NTQzMjEwPC9pOD4nLCA5ODc2NTQzMjEwKQorICAgICAgICBjaGVjaygnPGJpZ2ludGVnZXI+OTg3NjU0MzIxMDAxMjM0NTY3ODk8L2JpZ2ludGVnZXI+JywKKyAgICAgICAgICAgICAgOTg3NjU0MzIxMDAxMjM0NTY3ODkpCisgICAgICAgIGNoZWNrKCc8ZmxvYXQ+OTMuNzgxMjU8L2Zsb2F0PicsIDkzLjc4MTI1KQorICAgICAgICBjaGVjaygnPGJpZ2RlY2ltYWw+OTg3NjU0MzIxMC4wMTIzNDU2Nzg5PC9iaWdkZWNpbWFsPicsCisgICAgICAgICAgICAgIGRlY2ltYWwuRGVjaW1hbCgnOTg3NjU0MzIxMC4wMTIzNDU2Nzg5JykpCisKICAgICBkZWYgdGVzdF9nZXRfaG9zdF9pbmZvKHNlbGYpOgogICAgICAgICAjIHNlZSBidWcgIzM2MTMsIHRoaXMgcmFpc2VkIGEgVHlwZUVycm9yCiAgICAgICAgIHRyYW5zcCA9IHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0KCkKQEAgLTExNDcsNyArMTE5NSw2IEBACiAgICAgIiIiQSB2YXJpYXRpb24gb24gc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSB3aGljaCBnaXZlcyBhIHRleHQgc3RyZWFtCiAgICAgaGF2aW5nIGEgYGJ1ZmZlcmAgYXR0cmlidXRlLgogICAgICIiIgotICAgIGltcG9ydCBpbwogICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgIHN5cy5zdGRvdXQgPSBpby5UZXh0SU9XcmFwcGVyKGlvLkJ5dGVzSU8oKSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgdHJ5OgpAQCAtMTIyMCw3ICsxMjY3LDcgQEAKICAgICAgICAgY29udGVudCA9IGhhbmRsZVtoYW5kbGUuZmluZCgiPD94bWwiKTpdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGludChyZS5zZWFyY2goJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScsIGhhbmRsZSkuZ3JvdXAoMSkpLAorICAgICAgICAgICAgaW50KHJlLnNlYXJjaChyJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScsIGhhbmRsZSkuZ3JvdXAoMSkpLAogICAgICAgICAgICAgbGVuKGNvbnRlbnQpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQppbmRleCBiNjBiODJmLi5hZTBhMjhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CkBAIC0xLDcgKzEsNCBAQAogaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwotaW1wb3J0IGVycm5vCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weSBiL0xpYi90ZXN0L3Rlc3RfeWllbGRfZnJvbS5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfeWllbGRfZnJvbS5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CmluZGV4IDBkZDRiY2EuLjBhNDNiMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKQEAgLTEsOCArMSw4IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGlvCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAoraW1wb3J0IHBvc2l4cGF0aAogaW1wb3J0IHRpbWUKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCB6aXBmaWxlCkBAIC0zOSwxMCArMzksNiBAQAogICAgICAgICB5aWVsZCBmCiAgICAgICAgIHRlc3QuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCiAKLWRlZiBvcGVuVSh6aXBmcCwgZm4pOgotICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgcmV0dXJuIHppcGZwLm9wZW4oZm4sICdyVScpCi0KIGNsYXNzIEFic3RyYWN0VGVzdHNXaXRoU291cmNlRmlsZToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgpAQCAtNjIsNiArNTgsOSBAQAogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCAiYW5vdGhlci5uYW1lIikKICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgVEVTVEZOKQogICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInN0cmZpbGUiLCBzZWxmLmRhdGEpCisgICAgICAgICAgICB3aXRoIHppcGZwLm9wZW4oJ3dyaXR0ZW4tb3Blbi13JywgbW9kZT0ndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5saW5lX2dlbjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShsaW5lKQogCiAgICAgZGVmIHppcF90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKQEAgLTc3LDcgKzc2LDcgQEAKICAgICAgICAgICAgIHppcGZwLnByaW50ZGlyKGZpbGU9ZnApCiAgICAgICAgICAgICBkaXJlY3RvcnkgPSBmcC5nZXR2YWx1ZSgpCiAgICAgICAgICAgICBsaW5lcyA9IGRpcmVjdG9yeS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNCkgIyBOdW1iZXIgb2YgZmlsZXMgKyBoZWFkZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNSkgIyBOdW1iZXIgb2YgZmlsZXMgKyBoZWFkZXIKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRmlsZSBOYW1lJywgbGluZXNbMF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdNb2RpZmllZCcsIGxpbmVzWzBdKQpAQCAtOTEsMjMgKzkwLDI1IEBACiAKICAgICAgICAgICAgICMgQ2hlY2sgdGhlIG5hbWVsaXN0CiAgICAgICAgICAgICBuYW1lcyA9IHppcGZwLm5hbWVsaXN0KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgNCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImFub3RoZXIubmFtZSIsIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic3RyZmlsZSIsIG5hbWVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigid3JpdHRlbi1vcGVuLXciLCBuYW1lcykKIAogICAgICAgICAgICAgIyBDaGVjayBpbmZvbGlzdAogICAgICAgICAgICAgaW5mb3MgPSB6aXBmcC5pbmZvbGlzdCgpCiAgICAgICAgICAgICBuYW1lcyA9IFtpLmZpbGVuYW1lIGZvciBpIGluIGluZm9zXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCA0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihURVNURk4sIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYW5vdGhlci5uYW1lIiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJmaWxlIiwgbmFtZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ3cml0dGVuLW9wZW4tdyIsIG5hbWVzKQogICAgICAgICAgICAgZm9yIGkgaW4gaW5mb3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLmZpbGVfc2l6ZSwgbGVuKHNlbGYuZGF0YSkpCiAKICAgICAgICAgICAgICMgY2hlY2sgZ2V0aW5mbwotICAgICAgICAgICAgZm9yIG5tIGluIChURVNURk4sICJhbm90aGVyLm5hbWUiLCAic3RyZmlsZSIpOgorICAgICAgICAgICAgZm9yIG5tIGluIChURVNURk4sICJhbm90aGVyLm5hbWUiLCAic3RyZmlsZSIsICJ3cml0dGVuLW9wZW4tdyIpOgogICAgICAgICAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKG5tKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5maWxlbmFtZSwgbm0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmZpbGVfc2l6ZSwgbGVuKHNlbGYuZGF0YSkpCkBAIC0zNzMsMTQgKzM3NCwxOCBAQAogICAgIHRlc3RfbG93X2NvbXByZXNzaW9uID0gTm9uZQogCiAgICAgZGVmIHppcF90ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3cml0ZXN0ciBjcmVhdGVzIGZpbGVzIHdpdGggbW9kZSAwNjAwLAotICAgICAgICAjIHdoZW4gaXQgaXMgcGFzc2VkIGEgbmFtZSByYXRoZXIgdGhhbiBhIFppcEluZm8gaW5zdGFuY2UuCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd3JpdGVzdHIgYW5kIG9wZW4oLi4uIG1vZGU9J3cnKSBjcmVhdGUgZmlsZXMgd2l0aAorICAgICAgICAjIG1vZGUgMDYwMCwgd2hlbiB0aGV5IGFyZSBwYXNzZWQgYSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbworICAgICAgICAjIGluc3RhbmNlLgogCiAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6CiAgICAgICAgICAgICB6aW5mbyA9IHppcGZwLmdldGluZm8oJ3N0cmZpbGUnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aW5mby5leHRlcm5hbF9hdHRyLCAwbzYwMCA8PCAxNikKIAorICAgICAgICAgICAgemluZm8yID0gemlwZnAuZ2V0aW5mbygnd3JpdHRlbi1vcGVuLXcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aW5mbzIuZXh0ZXJuYWxfYXR0ciwgMG82MDAgPDwgMTYpCisKICAgICBkZWYgdGVzdF93cml0ZXN0cl9wZXJtaXNzaW9ucyhzZWxmKToKICAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdF93cml0ZXN0cl9wZXJtaXNzaW9ucyhmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCkBAIC00ODgsMTIgKzQ5MywxNiBAQAogCiAgICAgZGVmIHRlc3Rfd3JpdGVfdG9fcmVhZG9ubHkoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgdHJ5aW5nIHRvIGNhbGwgd3JpdGUoKSBvbiBhIHJlYWRvbmx5IFppcEZpbGUgb2JqZWN0Ci0gICAgICAgIHJhaXNlcyBhIFJ1bnRpbWVFcnJvci4iIiIKKyAgICAgICAgcmFpc2VzIGEgVmFsdWVFcnJvci4iIiIKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0idyIpIGFzIHppcGZwOgogICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInNvbWVmaWxlLnR4dCIsICJib2d1cyIpCiAKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0iciIpIGFzIHppcGZwOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZnAud3JpdGUsIFRFU1RGTikKKworICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZnA6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIHppcGZwLm9wZW4oVEVTVEZOLCBtb2RlPSd3JykKIAogICAgIGRlZiB0ZXN0X2FkZF9maWxlX2JlZm9yZV8xOTgwKHNlbGYpOgogICAgICAgICAjIFNldCBhdGltZSBhbmQgbXRpbWUgdG8gMTk3MC0wMS0wMQpAQCAtMTA2NiwzMiArMTA3NSw2IEBACiAgICAgICAgICAgICAgICAgZGF0YSArPSB6aXBmcC5yZWFkKGluZm8pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGRhdGEsIHtiImZvb2JhciIsIGIiYmFyZm9vIn0pCiAKLSAgICBkZWYgdGVzdF91bml2ZXJzYWxfZGVwcmVjYXRpb24oc2VsZik6Ci0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInciKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCdzcGFtLnR4dCcsIGInYWJhYmFnYWxhbWFnYScpCi0KLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBtb2RlIGluICdVJywgJ3JVJzoKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgemlwb3BlbiA9IHppcGZwLm9wZW4oJ3NwYW0udHh0JywgbW9kZSkKLSAgICAgICAgICAgICAgICB6aXBvcGVuLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9yZWFkYWhlYWRzKHNlbGYpOgotICAgICAgICBmID0gaW8uQnl0ZXNJTygpCi0KLSAgICAgICAgZGF0YSA9IGInYVxyXG4nICogMTYgKiAxMDI0Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKFRFU1RGTiwgZGF0YSkKLQotICAgICAgICBkYXRhMiA9IGInJwotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAncicpIGFzIHppcGZwLCBcCi0gICAgICAgICAgICAgb3BlblUoemlwZnAsIFRFU1RGTikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHppcG9wZW46Ci0gICAgICAgICAgICAgICAgZGF0YTIgKz0gbGluZQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZGF0YTIucmVwbGFjZShiJ1xuJywgYidcclxuJykpCi0KICAgICBkZWYgdGVzdF93cml0ZXN0cl9leHRlbmRlZF9sb2NhbF9oZWFkZXJfaXNzdWUxMjAyKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycpIGFzIG9yaWdfemlwOgogICAgICAgICAgICAgZm9yIGRhdGEgaW4gJ2FiY2RlZmdoaWprbG1ub3AnOgpAQCAtMTI3MSwyNyArMTI1NCwyNyBAQAogICAgICAgICAgICAgZnAud3JpdGUoInNob3J0IGZpbGUiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh6aXBmaWxlLkJhZFppcEZpbGUsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOKQogCi0gICAgZGVmIHRlc3RfY2xvc2VkX3ppcF9yYWlzZXNfUnVudGltZUVycm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Nsb3NlZF96aXBfcmFpc2VzX1ZhbHVlRXJyb3Ioc2VsZik6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRlc3R6aXAoKSBkb2Vzbid0IHN3YWxsb3cgaW5hcHByb3ByaWF0ZSBleGNlcHRpb25zLiIiIgogICAgICAgICBkYXRhID0gaW8uQnl0ZXNJTygpCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGRhdGEsIG1vZGU9InciKSBhcyB6aXBmOgogICAgICAgICAgICAgemlwZi53cml0ZXN0cigiZm9vLnR4dCIsICJPLCBmb3IgYSBNdXNlIG9mIEZpcmUhIikKIAogICAgICAgICAjIFRoaXMgaXMgY29ycmVjdDsgY2FsbGluZyAucmVhZCBvbiBhIGNsb3NlZCBaaXBGaWxlIHNob3VsZCByYWlzZQotICAgICAgICAjIGEgUnVudGltZUVycm9yLCBhbmQgc28gc2hvdWxkIGNhbGxpbmcgLnRlc3R6aXAuICBBbiBlYXJsaWVyCisgICAgICAgICMgYSBWYWx1ZUVycm9yLCBhbmQgc28gc2hvdWxkIGNhbGxpbmcgLnRlc3R6aXAuICBBbiBlYXJsaWVyCiAgICAgICAgICMgdmVyc2lvbiBvZiAudGVzdHppcCB3b3VsZCBzd2FsbG93IHRoaXMgZXhjZXB0aW9uIChhbmQgYW55IG90aGVyKQogICAgICAgICAjIGFuZCByZXBvcnQgdGhhdCB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgYXJjaGl2ZSB3YXMgY29ycnVwdC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLnJlYWQsICJmb28udHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLnRlc3R6aXApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi53cml0ZXN0ciwgImJvZ3VzLnR4dCIsICJib2d1cyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYucmVhZCwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi50ZXN0emlwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLndyaXRlc3RyLCAiYm9ndXMudHh0IiwgImJvZ3VzIikKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgnemlwZmlsZSB0ZXN0IGRhdGEnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYud3JpdGUsIFRFU1RGTikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi53cml0ZSwgVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfYmFkX2NvbnN0cnVjdG9yX21vZGUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYmFkIG1vZGVzIHBhc3NlZCB0byBaaXBGaWxlIGNvbnN0cnVjdG9yIGFyZSBjYXVnaHQuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJxIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJxIikKIAogICAgIGRlZiB0ZXN0X2JhZF9vcGVuX21vZGUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYmFkIG1vZGVzIHBhc3NlZCB0byBaaXBGaWxlLm9wZW4gYXJlIGNhdWdodC4iIiIKQEAgLTEyOTksOSArMTI4MiwxMiBAQAogICAgICAgICAgICAgemlwZi53cml0ZXN0cigiZm9vLnR4dCIsICJPLCBmb3IgYSBNdXNlIG9mIEZpcmUhIikKIAogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4sIG1vZGU9InIiKSBhcyB6aXBmOgotICAgICAgICAjIHJlYWQgdGhlIGRhdGEgdG8gbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHRoZXJlCisgICAgICAgICAgICAjIHJlYWQgdGhlIGRhdGEgdG8gbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHRoZXJlCiAgICAgICAgICAgICB6aXBmLnJlYWQoImZvby50eHQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJxIikKKyAgICAgICAgICAgICMgdW5pdmVyc2FsIG5ld2xpbmVzIHN1cHBvcnQgaXMgcmVtb3ZlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJVIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAiclUiKQogCiAgICAgZGVmIHRlc3RfcmVhZDAoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgY2FsbGluZyByZWFkKDApIG9uIGEgWmlwRXh0RmlsZSBvYmplY3QgcmV0dXJucyBhbiBlbXB0eQpAQCAtMTMyNCw3ICsxMzEwLDcgQEAKICAgICBkZWYgdGVzdF9iYWRfY29tcHJlc3Npb25fbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgY29tcHJlc3Npb24gbWV0aG9kcyBwYXNzZWQgdG8gWmlwRmlsZS5vcGVuIGFyZQogICAgICAgICBjYXVnaHQuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJ3IiwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOLCAidyIsIC0xKQogCiAgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfY29tcHJlc3Npb24oc2VsZik6CiAgICAgICAgICMgZGF0YSBpcyBkZWNsYXJlZCBhcyBzaHJ1bmssIGJ1dCBhY3R1YWxseSBkZWZsYXRlZApAQCAtMTQ3Miw2ICsxNDU4LDM1IEBACiAgICAgICAgICAgICAjIHRlc3R6aXAgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgY29ycnVwdCBmaWxlLCBvciBOb25lCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh6aXBmLnRlc3R6aXAoKSkKIAorICAgIGRlZiB0ZXN0X29wZW5fY29uZmxpY3RpbmdfaGFuZGxlcyhzZWxmKToKKyAgICAgICAgIyBJdCdzIG9ubHkgcG9zc2libGUgdG8gb3BlbiBvbmUgd3JpdGFibGUgZmlsZSBoYW5kbGUgYXQgYSB0aW1lCisgICAgICAgIG1zZzEgPSBiIkl0J3MgZnVuIHRvIGNoYXJ0ZXIgYW4gYWNjb3VudGFudCEiCisgICAgICAgIG1zZzIgPSBiIkFuZCBzYWlsIHRoZSB3aWRlIGFjY291bnRhbnQgc2VhIgorICAgICAgICBtc2czID0gYiJUbyBmaW5kLCBleHBsb3JlIHRoZSBmdW5kcyBvZmZzaG9yZSIKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGY6CisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignZm9vJywgbW9kZT0ndycpIGFzIHcyOgorICAgICAgICAgICAgICAgIHcyLndyaXRlKG1zZzEpCisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignYmFyJywgbW9kZT0ndycpIGFzIHcxOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYub3BlbignaGFuZGxlJywgbW9kZT0ndycpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5vcGVuKCdmb28nLCBtb2RlPSdyJykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdzdHInLCAnYWJjZGUnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGUoX19maWxlX18sICdmaWxlJykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICB3MS53cml0ZShtc2cyKQorICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ2JheicsIG1vZGU9J3cnKSBhcyB3MjoKKyAgICAgICAgICAgICAgICB3Mi53cml0ZShtc2czKQorCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdyJykgYXMgemlwZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdmb28nKSwgbXNnMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdiYXInKSwgbXNnMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdiYXonKSwgbXNnMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5uYW1lbGlzdCgpLCBbJ2ZvbycsICdiYXInLCAnYmF6J10pCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4pCiAgICAgICAgIHVubGluayhURVNURk4yKQpAQCAtMTgwNSw2ICsxODIwLDIyIEBACiAgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW46CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicyMjInKQogCisgICAgZGVmIHRlc3Rfb3Blbl93cml0ZShzZWxmKToKKyAgICAgICAgZm9yIHdyYXBwZXIgaW4gKGxhbWJkYSBmOiBmKSwgVGVsbGFibGUsIFVuc2Vla2FibGU6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3cmFwcGVyPXdyYXBwZXIpOgorICAgICAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKGInYWJjJykKKyAgICAgICAgICAgICAgICBiZiA9IGlvLkJ1ZmZlcmVkV3JpdGVyKGYpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUod3JhcHBlcihiZiksICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycsICd3JykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICB6b3Blbi53cml0ZShiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJywgJ3cnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvcGVuLndyaXRlKGInMjIyJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0dmFsdWUoKVs6NV0sIGInYWJjUEsnKQorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdvbmVzJyksIGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ3R3b3MnKSwgYicyMjInKQorCiAKIEByZXF1aXJlc196bGliCiBjbGFzcyBUZXN0c1dpdGhNdWx0aXBsZU9wZW5zKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE5MTUsNiArMTk0NiwxOSBAQAogICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhmLmZpbGVubygpLCAxMDApCiAKKyAgICBkZWYgdGVzdF93cml0ZV93aGlsZV9yZWFkaW5nKHNlbGYpOgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgorICAgICAgICAgICAgemlwZi53cml0ZXN0cignb25lcycsIHNlbGYuZGF0YTEpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdhJywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycsICdyJykgYXMgcjE6CisgICAgICAgICAgICAgICAgZGF0YTEgPSByMS5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycsICd3JykgYXMgdzE6CisgICAgICAgICAgICAgICAgICAgIHcxLndyaXRlKHNlbGYuZGF0YTIpCisgICAgICAgICAgICAgICAgZGF0YTEgKz0gcjEucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIpIGFzIHppcGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgndHdvcycpLCBzZWxmLmRhdGEyKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxpbmsoVEVTVEZOMikKIApAQCAtMTk4NCwxMzcgKzIwMjgsMTkgQEAKICAgICAgICAgICAgIHVubGluayhURVNURk4pCiAKIAotY2xhc3MgQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHM6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmxpbmVfZ2VuID0gW2J5dGVzKCJUZXN0IG9mIHppcGZpbGUgbGluZSAlZC4iICUgaSwgImFzY2lpIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKEZJWEVEVEVTVF9TSVpFKV0KLSAgICAgICAgY2xzLnNlcHMgPSAoYidccicsIGInXHJcbicsIGInXG4nKQotICAgICAgICBjbHMuYXJjZGF0YSA9IHt9Ci0gICAgICAgIGZvciBuLCBzIGluIGVudW1lcmF0ZShjbHMuc2Vwcyk6Ci0gICAgICAgICAgICBjbHMuYXJjZGF0YVtzXSA9IHMuam9pbihjbHMubGluZV9nZW4pICsgcworY2xhc3MgWmlwSW5mb1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9mcm9tX2ZpbGUoc2VsZik6CisgICAgICAgIHppID0gemlwZmlsZS5aaXBJbmZvLmZyb21fZmlsZShfX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguYmFzZW5hbWUoemkuZmlsZW5hbWUpLCAndGVzdF96aXBmaWxlLnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh6aS5pc19kaXIoKSkKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5hcmNmaWxlcyA9IHt9Ci0gICAgICAgIGZvciBuLCBzIGluIGVudW1lcmF0ZShzZWxmLnNlcHMpOgotICAgICAgICAgICAgc2VsZi5hcmNmaWxlc1tzXSA9ICclcy0lZCcgJSAoVEVTVEZOLCBuKQotICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuYXJjZmlsZXNbc10sICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmFyY2RhdGFbc10pCi0KLSAgICBkZWYgbWFrZV90ZXN0X2FyY2hpdmUoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInciLCBjb21wcmVzc2lvbikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3IgZm4gaW4gc2VsZi5hcmNmaWxlcy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICB6aXBmcC53cml0ZShmbiwgZm4pCi0KLSAgICBkZWYgcmVhZF90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIGZwOgotICAgICAgICAgICAgICAgICAgICB6aXBkYXRhID0gZnAucmVhZCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmFyY2RhdGFbc2VwXSwgemlwZGF0YSkKLQotICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZF90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVfcmVhZF90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIHppcG9wZW46Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgPSB6aXBvcGVuLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZWFkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhICs9IHJlYWQKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCA9IHppcG9wZW4ucmVhZCg1KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gcmVhZAotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuYXJjZGF0YVtiJ1xuJ10pCi0KLSAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHJlYWRsaW5lX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5saW5lX2dlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVkYXRhID0gemlwb3Blbi5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVkYXRhLCBsaW5lICsgYidcbicpCi0KLSAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVzX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIHppcGxpbmVzID0gZnAucmVhZGxpbmVzKCkKLSAgICAgICAgICAgICAgICBmb3IgbGluZSwgemlwbGluZSBpbiB6aXAoc2VsZi5saW5lX2dlbiwgemlwbGluZXMpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGxpbmUsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIGl0ZXJsaW5lc190ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIGZwOgotICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSwgemlwbGluZSBpbiB6aXAoc2VsZi5saW5lX2dlbiwgZnApOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBsaW5lLCBsaW5lICsgYidcbicpCi0KLSAgICBkZWYgdGVzdF9pdGVybGluZXMoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgdW5saW5rKGZuKQotICAgICAgICB1bmxpbmsoVEVTVEZOKQotICAgICAgICB1bmxpbmsoVEVTVEZOMikKLQotCi1jbGFzcyBTdG9yZWRVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfU1RPUkVECi0KLUByZXF1aXJlc196bGliCi1jbGFzcyBEZWZsYXRlVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9ERUZMQVRFRAotCi1AcmVxdWlyZXNfYnoyCi1jbGFzcyBCemlwMlVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0JaSVAyCi0KLUByZXF1aXJlc19sem1hCi1jbGFzcyBMem1hVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9MWk1BCisgICAgZGVmIHRlc3RfZnJvbV9kaXIoc2VsZik6CisgICAgICAgIGRpcnBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKKyAgICAgICAgemkgPSB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKGRpcnBhdGgsICdzdGRsaWJfdGVzdHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmZpbGVuYW1lLCAnc3RkbGliX3Rlc3RzLycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh6aS5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9TVE9SRUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZmlsZV9zaXplLCAwKQogCiAKIGNsYXNzIENvbW1hbmRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMTc1LDcgKzIxMDEsNyBAQAogICAgICAgICAgICAgICAgIGZvciB6aSBpbiB6Zi5pbmZvbGlzdCgpOgogICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGV4dGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemkuZmlsZW5hbWUucmVwbGFjZSgnLycsIG9zLnNlcCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIHppLmZpbGVuYW1lLmVuZHN3aXRoKCcvJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIHppLmlzX2RpcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIocGF0aCkpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocGF0aCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGQ1YjNiMjIuLjdkZGJjNTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC0zOTgsNyArMzk4LDggQEAKICAgICAgICAgcGFja2RpcjIgPSBwYWNrZGlyICsgVEVTVFBBQ0syICsgb3Muc2VwCiAgICAgICAgIGZpbGVzID0ge3BhY2tkaXIgKyAiX19pbml0X18iICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAogICAgICAgICAgICAgICAgICBwYWNrZGlyMiArICJfX2luaXRfXyIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCi0gICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKX0KKyAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyBURVNUTU9EICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAorICAgICAgICAgICAgICAgICAic3BhbSIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5Yyl9CiAKICAgICAgICAgeiA9IFppcEZpbGUoVEVNUF9aSVAsICJ3IikKICAgICAgICAgdHJ5OgpAQCAtNDEyLDYgKzQxMywxNCBAQAogICAgICAgICAgICAgemkgPSB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoVEVNUF9aSVApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmFyY2hpdmUsIFRFTVBfWklQKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKFRFU1RQQUNLKSwgVHJ1ZSkKKworICAgICAgICAgICAgZmluZF9tb2QgPSB6aS5maW5kX21vZHVsZSgnc3BhbScpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kX21vZCwgemlwaW1wb3J0LnppcGltcG9ydGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaW5kX21vZC5pc19wYWNrYWdlKCdzcGFtJykpCisgICAgICAgICAgICBsb2FkX21vZCA9IGZpbmRfbW9kLmxvYWRfbW9kdWxlKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZF9tb2QuZ2V0X2ZpbGVuYW1lKCdzcGFtJyksIGxvYWRfbW9kLl9fZmlsZV9fKQorCiAgICAgICAgICAgICBtb2QgPSB6aS5sb2FkX21vZHVsZShURVNUUEFDSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZ2V0X2ZpbGVuYW1lKFRFU1RQQUNLKSwgbW9kLl9fZmlsZV9fKQogCkBAIC00NzEsNiArNDgwLDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHppLmlzX3BhY2thZ2UoVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRCksIEZhbHNlKQogCisgICAgICAgICAgICBwa2dfcGF0aCA9IFRFTVBfWklQICsgb3Muc2VwICsgcGFja2RpciArIFRFU1RQQUNLMgorICAgICAgICAgICAgemkyID0gemlwaW1wb3J0LnppcGltcG9ydGVyKHBrZ19wYXRoKQorICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkID0gemkyLmZpbmRfbW9kdWxlKFRFU1RNT0QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZF9kb3R0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZF9tb2RfZG90dGVkLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppMi5pc19wYWNrYWdlKFRFU1RNT0QpKQorICAgICAgICAgICAgbG9hZF9tb2QgPSBmaW5kX21vZF9kb3R0ZWQubG9hZF9tb2R1bGUoVEVTVE1PRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkLmdldF9maWxlbmFtZShURVNUTU9EKSwgbG9hZF9tb2QuX19maWxlX18pCisKICAgICAgICAgICAgIG1vZF9wYXRoID0gVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRAogICAgICAgICAgICAgbW9kX25hbWUgPSBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShtb2RfcGF0aCkKICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZF9uYW1lKQpAQCAtNjIzLDggKzY0MiwxMCBAQAogCiAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihmaWxlbmFtZSkKICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkKLSAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGJ5dGVhcnJheShvcy5mc2VuY29kZShmaWxlbmFtZSkpKQotICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihieXRlYXJyYXkob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQogCiAKIEBzdXBwb3J0LnJlcXVpcmVzX3psaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CmluZGV4IDU5MTM2MjIuLjg0ZDUyNmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgbGluZWNhY2hlCi1pbXBvcnQgcGRiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNmZlYTg5My4uMjAxNzRkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtMTY0LDYgKzE2NCwxNiBAQAogICAgICAgICB4ID0gemxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgpLCBIQU1MRVRfU0NFTkUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgeCA9IHpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4KSwgSEFNTEVUX1NDRU5FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB6bGliLmNvbXByZXNzKGRhdGE9SEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz16bGliLk1BWF9XQklUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZT16bGliLkRFRl9CVUZfU0laRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFNTEVUX1NDRU5FKQorCiAgICAgZGVmIHRlc3Rfc3BlZWNoMTI4KHNlbGYpOgogICAgICAgICAjIGNvbXByZXNzIG1vcmUgZGF0YQogICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTI4CkBAIC0yMzQsNiArMjQ0LDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVuY29uc3VtZWRfdGFpbCwgYnl0ZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVudXNlZF9kYXRhLCBieXRlcykKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRzKHNlbGYpOgorICAgICAgICBsZXZlbCA9IDIKKyAgICAgICAgbWV0aG9kID0gemxpYi5ERUZMQVRFRAorICAgICAgICB3Yml0cyA9IC0xMgorICAgICAgICBtZW1MZXZlbCA9IDkKKyAgICAgICAgc3RyYXRlZ3kgPSB6bGliLlpfRklMVEVSRUQKKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPW1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiaXRzPXdiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtTGV2ZWw9bWVtTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT1zdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpkaWN0PWIiIikKKyAgICAgICAgZG8gPSB6bGliLmRlY29tcHJlc3NvYmood2JpdHM9d2JpdHMsIHpkaWN0PWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY28uY29tcHJlc3MoZGF0YT1IQU1MRVRfU0NFTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRvLmRlY29tcHJlc3MoZGF0YT16bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkpCisgICAgICAgIHggPSBjby5jb21wcmVzcyhIQU1MRVRfU0NFTkUpICsgY28uZmx1c2goKQorICAgICAgICB5ID0gZG8uZGVjb21wcmVzcyh4LCBtYXhfbGVuZ3RoPWxlbihIQU1MRVRfU0NFTkUpKSArIGRvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIQU1MRVRfU0NFTkUsIHkpCisKICAgICBkZWYgdGVzdF9jb21wcmVzc29wdGlvbnMoc2VsZik6CiAgICAgICAgICMgc3BlY2lmeSBsb3RzIG9mIG9wdGlvbnMgdG8gY29tcHJlc3NvYmooKQogICAgICAgICBsZXZlbCA9IDIKQEAgLTI0OSwxMCArMjgwLDYgQEAKICAgICAgICAgeTIgPSBkY28uZmx1c2goKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhBTUxFVF9TQ0VORSwgeTEgKyB5MikKIAotICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIHNob3VsZCBhbHNvIGJlIHN1cHBvcnRlZAotICAgICAgICB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLCBtZXRob2Q9bWV0aG9kLCB3Yml0cz13Yml0cywKLSAgICAgICAgICAgIG1lbUxldmVsPW1lbUxldmVsLCBzdHJhdGVneT1zdHJhdGVneSwgemRpY3Q9YiIiKQotCiAgICAgZGVmIHRlc3RfY29tcHJlc3NpbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgIyBjb21wcmVzcyBvYmplY3QgaW4gc3RlcHMsIGRlY29tcHJlc3Mgb2JqZWN0IGFzIG9uZS1zaG90CiAgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMjgKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDA2YjdiOWIuLjQ4MjlmZjQgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMjIsOSArMjIsMTEgQEAKICMgd2l0aCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSwgd2hpY2ggZG9lc24ndCBwcm92aWRlIHRoZSBvbGQKICMgSmF2YSBpbnNwaXJlZCBuYW1lcy4KIAotX19hbGxfXyA9IFsnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsICdlbnVtZXJhdGUnLCAnRXZlbnQnLAotICAgICAgICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLCAnQmFycmllcicsCi0gICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQorX19hbGxfXyA9IFsnZ2V0X2lkZW50JywgJ2FjdGl2ZV9jb3VudCcsICdDb25kaXRpb24nLCAnY3VycmVudF90aHJlYWQnLAorICAgICAgICAgICAnZW51bWVyYXRlJywgJ21haW5fdGhyZWFkJywgJ1RJTUVPVVRfTUFYJywKKyAgICAgICAgICAgJ0V2ZW50JywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnVGhyZWFkJywKKyAgICAgICAgICAgJ0JhcnJpZXInLCAnQnJva2VuQmFycmllckVycm9yJywgJ1RpbWVyJywgJ1RocmVhZEVycm9yJywKKyAgICAgICAgICAgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCiAKICMgUmVuYW1lIHNvbWUgc3R1ZmYgc28gImZyb20gdGhyZWFkaW5nIGltcG9ydCAqIiBpcyBzYWZlCiBfc3RhcnRfbmV3X3RocmVhZCA9IF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZApkaWZmIC0tZ2l0IGEvTGliL3RpbWVpdC5weSBiL0xpYi90aW1laXQucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAyZGU4OGY3Li4yNzcwZWZhCi0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtMjA3LDYgKzIwNywyNiBAQAogICAgICAgICAgICAgci5hcHBlbmQodCkKICAgICAgICAgcmV0dXJuIHIKIAorICAgIGRlZiBhdXRvcmFuZ2Uoc2VsZiwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGxvb3BzIHNvIHRoYXQgdG90YWwgdGltZSA+PSAwLjIuCisKKyAgICAgICAgQ2FsbHMgdGhlIHRpbWVpdCBtZXRob2Qgd2l0aCAqbnVtYmVyKiBzZXQgdG8gc3VjY2Vzc2l2ZSBwb3dlcnMgb2YKKyAgICAgICAgdGVuICgxMCwgMTAwLCAxMDAwLCAuLi4pIHVwIHRvIGEgbWF4aW11bSBvZiBvbmUgYmlsbGlvbiwgdW50aWwKKyAgICAgICAgdGhlIHRpbWUgdGFrZW4gaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBgYChudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgSWYgKmNhbGxiYWNrKiBpcyBnaXZlbiBhbmQgaXMgbm90IE5vbmUsIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG51bWJlciA9IDEwKippCisgICAgICAgICAgICB0aW1lX3Rha2VuID0gc2VsZi50aW1laXQobnVtYmVyKQorICAgICAgICAgICAgaWYgY2FsbGJhY2s6CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKQorICAgICAgICAgICAgaWYgdGltZV90YWtlbiA+PSAwLjI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIChudW1iZXIsIHRpbWVfdGFrZW4pCisKIGRlZiB0aW1laXQoc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKICAgICAgICAgICAgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgdGltZWl0IG1ldGhvZC4iIiIKQEAgLTI5NSwxNyArMzE1LDE2IEBACiAgICAgdCA9IFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikKICAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICAgIyBkZXRlcm1pbmUgbnVtYmVyIHNvIHRoYXQgMC4yIDw9IHRvdGFsIHRpbWUgPCAyLjAKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB4ID0gdC50aW1laXQobnVtYmVyKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiJWQgbG9vcHMgLT4gJS4qZyBzZWNzIiAlIChudW1iZXIsIHByZWNpc2lvbiwgeCkpCi0gICAgICAgICAgICBpZiB4ID49IDAuMjoKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBjYWxsYmFjayA9IE5vbmUKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIGRlZiBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ7bnVtfSBsb29wcyAtPiB7c2Vjczoue3ByZWN9Z30gc2VjcyIKKyAgICAgICAgICAgICAgICBwcmludChtc2cuZm9ybWF0KG51bT1udW1iZXIsIHNlY3M9dGltZV90YWtlbiwgcHJlYz1wcmVjaXNpb24pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBudW1iZXIsIF8gPSB0LmF1dG9yYW5nZShjYWxsYmFjaykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdC5wcmludF9leGMoKQorICAgICAgICAgICAgcmV0dXJuIDEKICAgICB0cnk6CiAgICAgICAgIHIgPSB0LnJlcGVhdChyZXBlYXQsIG51bWJlcikKICAgICBleGNlcHQ6CkBAIC0zMTcsMjAgKzMzNiwyNiBAQAogICAgIHByaW50KCIlZCBsb29wcywiICUgbnVtYmVyLCBlbmQ9JyAnKQogICAgIHVzZWMgPSBiZXN0ICogMWU2IC8gbnVtYmVyCiAgICAgaWYgdGltZV91bml0IGlzIG5vdCBOb25lOgotICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyAlcyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3VuaXRzW3RpbWVfdW5pdF0sIHRpbWVfdW5pdCkpCisgICAgICAgIHNjYWxlID0gdW5pdHNbdGltZV91bml0XQogICAgIGVsc2U6Ci0gICAgICAgIGlmIHVzZWMgPCAxMDAwOgotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNlYyA9IHVzZWMgLyAxMDAwCi0gICAgICAgICAgICBpZiBtc2VjIDwgMTAwMDoKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBtc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBtc2VjKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VjID0gbXNlYyAvIDEwMDAKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgc2VjKSkKKyAgICAgICAgc2NhbGVzID0gWyhzY2FsZSwgdW5pdCkgZm9yIHVuaXQsIHNjYWxlIGluIHVuaXRzLml0ZW1zKCldCisgICAgICAgIHNjYWxlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgZm9yIHNjYWxlLCB0aW1lX3VuaXQgaW4gc2NhbGVzOgorICAgICAgICAgICAgaWYgdXNlYyA+PSBzY2FsZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy9zY2FsZSwgdGltZV91bml0KSkKKyAgICBiZXN0ID0gbWluKHIpCisgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKKyAgICB3b3JzdCA9IG1heChyKQorICAgIGlmIHdvcnN0ID49IGJlc3QgKiA0OgorICAgICAgICB1c2VjID0gd29yc3QgKiAxZTYgLyBudW1iZXIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICAiVGhlIHRlc3QgcmVzdWx0cyBhcmUgbGlrZWx5IHVucmVsaWFibGUuIFRoZSB3b3JzdFxuIgorICAgICAgICAgICAgInRpbWUgKCUuKmcgJXMpIHdhcyBtb3JlIHRoYW4gZm91ciB0aW1lcyBzbG93ZXIgdGhhbiB0aGUgYmVzdCB0aW1lLiIgJQorICAgICAgICAgICAgKHByZWNpc2lvbiwgdXNlYy9zY2FsZSwgdGltZV91bml0KSwKKyAgICAgICAgICAgICBVc2VyV2FybmluZywgJycsIDApCiAgICAgcmV0dXJuIE5vbmUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggNTViZmI3Zi4uMjVmZTY0NSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMwLDYgKzMwLDcgQEAKIHRrLm1haW5sb29wKCkKICIiIgogCitpbXBvcnQgZW51bQogaW1wb3J0IHN5cwogCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKQEAgLTEzMiw2ICsxMzMsNTAgQEAKICAgICAgICAgZGljdFtrZXldID0gdmFsdWUKICAgICByZXR1cm4gZGljdAogCisKK2NsYXNzIEV2ZW50VHlwZShzdHIsIGVudW0uRW51bSk6CisgICAgS2V5UHJlc3MgPSAnMicKKyAgICBLZXkgPSBLZXlQcmVzcywKKyAgICBLZXlSZWxlYXNlID0gJzMnCisgICAgQnV0dG9uUHJlc3MgPSAnNCcKKyAgICBCdXR0b24gPSBCdXR0b25QcmVzcywKKyAgICBCdXR0b25SZWxlYXNlID0gJzUnCisgICAgTW90aW9uID0gJzYnCisgICAgRW50ZXIgPSAnNycKKyAgICBMZWF2ZSA9ICc4JworICAgIEZvY3VzSW4gPSAnOScKKyAgICBGb2N1c091dCA9ICcxMCcKKyAgICBLZXltYXAgPSAnMTEnICAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIEV4cG9zZSA9ICcxMicKKyAgICBHcmFwaGljc0V4cG9zZSA9ICcxMycgICAjIHVuZG9jdW1lbnRlZAorICAgIE5vRXhwb3NlID0gJzE0JyAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgVmlzaWJpbGl0eSA9ICcxNScKKyAgICBDcmVhdGUgPSAnMTYnCisgICAgRGVzdHJveSA9ICcxNycKKyAgICBVbm1hcCA9ICcxOCcKKyAgICBNYXAgPSAnMTknCisgICAgTWFwUmVxdWVzdCA9ICcyMCcKKyAgICBSZXBhcmVudCA9ICcyMScKKyAgICBDb25maWd1cmUgPSAnMjInCisgICAgQ29uZmlndXJlUmVxdWVzdCA9ICcyMycKKyAgICBHcmF2aXR5ID0gJzI0JworICAgIFJlc2l6ZVJlcXVlc3QgPSAnMjUnCisgICAgQ2lyY3VsYXRlID0gJzI2JworICAgIENpcmN1bGF0ZVJlcXVlc3QgPSAnMjcnCisgICAgUHJvcGVydHkgPSAnMjgnCisgICAgU2VsZWN0aW9uQ2xlYXIgPSAnMjknICAgIyB1bmRvY3VtZW50ZWQKKyAgICBTZWxlY3Rpb25SZXF1ZXN0ID0gJzMwJyAjIHVuZG9jdW1lbnRlZAorICAgIFNlbGVjdGlvbiA9ICczMScgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgQ29sb3JtYXAgPSAnMzInCisgICAgQ2xpZW50TWVzc2FnZSA9ICczMycgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBNYXBwaW5nID0gJzM0JyAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIFZpcnR1YWxFdmVudCA9ICczNScsICAgICMgdW5kb2N1bWVudGVkCisgICAgQWN0aXZhdGUgPSAnMzYnLAorICAgIERlYWN0aXZhdGUgPSAnMzcnLAorICAgIE1vdXNlV2hlZWwgPSAnMzgnLAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisKIGNsYXNzIEV2ZW50OgogICAgICIiIkNvbnRhaW5lciBmb3IgdGhlIHByb3BlcnRpZXMgb2YgYW4gZXZlbnQuCiAKQEAgLTE3NCw3ICsyMTksNDMgQEAKICAgICB3aWRnZXQgLSB3aWRnZXQgaW4gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkCiAgICAgZGVsdGEgLSBkZWx0YSBvZiB3aGVlbCBtb3ZlbWVudCAoTW91c2VXaGVlbCkKICAgICAiIiIKLSAgICBwYXNzCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhdHRycyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBpZiB2ICE9ICc/Pyd9CisgICAgICAgIGlmIG5vdCBzZWxmLmNoYXI6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ2NoYXInXQorICAgICAgICBlbGlmIHNlbGYuY2hhciAhPSAnPz8nOgorICAgICAgICAgICAgYXR0cnNbJ2NoYXInXSA9IHJlcHIoc2VsZi5jaGFyKQorICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnc2VuZF9ldmVudCcsIFRydWUpOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzZW5kX2V2ZW50J10KKyAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSAwOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzdGF0ZSddCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLnN0YXRlLCBpbnQpOgorICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlCisgICAgICAgICAgICBtb2RzID0gKCdTaGlmdCcsICdMb2NrJywgJ0NvbnRyb2wnLAorICAgICAgICAgICAgICAgICAgICAnTW9kMScsICdNb2QyJywgJ01vZDMnLCAnTW9kNCcsICdNb2Q1JywKKyAgICAgICAgICAgICAgICAgICAgJ0J1dHRvbjEnLCAnQnV0dG9uMicsICdCdXR0b24zJywgJ0J1dHRvbjQnLCAnQnV0dG9uNScpCisgICAgICAgICAgICBzID0gW10KKyAgICAgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2RzKToKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSAmICgxIDw8IGkpOgorICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChuKQorICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZSAmIH4oKDE8PCBsZW4obW9kcykpIC0gMSkKKyAgICAgICAgICAgIGlmIHN0YXRlIG9yIG5vdCBzOgorICAgICAgICAgICAgICAgIHMuYXBwZW5kKGhleChzdGF0ZSkpCisgICAgICAgICAgICBhdHRyc1snc3RhdGUnXSA9ICd8Jy5qb2luKHMpCisgICAgICAgIGlmIHNlbGYuZGVsdGEgPT0gMDoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snZGVsdGEnXQorICAgICAgICAjIHdpZGdldCB1c3VhbGx5IGlzIGtub3duCisgICAgICAgICMgc2VyaWFsIGFuZCB0aW1lIGFyZSBub3QgdmVyeSBpbnRlcmVzdGluZworICAgICAgICAjIGtleXN5bV9udW0gZHVwbGljYXRlcyBrZXlzeW0KKyAgICAgICAgIyB4X3Jvb3QgYW5kIHlfcm9vdCBtb3N0bHkgZHVwbGljYXRlIHggYW5kIHkKKyAgICAgICAga2V5cyA9ICgnc2VuZF9ldmVudCcsCisgICAgICAgICAgICAgICAgJ3N0YXRlJywgJ2tleXN5bScsICdrZXljb2RlJywgJ2NoYXInLAorICAgICAgICAgICAgICAgICdudW0nLCAnZGVsdGEnLCAnZm9jdXMnLAorICAgICAgICAgICAgICAgICd4JywgJ3knLCAnd2lkdGgnLCAnaGVpZ2h0JykKKyAgICAgICAgcmV0dXJuICc8JXMgZXZlbnQlcz4nICUgKAorICAgICAgICAgICAgc2VsZi50eXBlLAorICAgICAgICAgICAgJycuam9pbignICVzPSVzJyAlIChrLCBhdHRyc1trXSkgZm9yIGsgaW4ga2V5cyBpZiBrIGluIGF0dHJzKQorICAgICAgICApCiAKIF9zdXBwb3J0X2RlZmF1bHRfcm9vdCA9IDEKIF9kZWZhdWx0X3Jvb3QgPSBOb25lCkBAIC0yNjIsMTUgKzM0Myw4IEBACiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHZhbHVlIG9mIHZhcmlhYmxlLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpCi0gICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKLSAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgotICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KLSAgICAgICAgIiIiCisgICAgZGVmIF9yZWdpc3RlcihzZWxmLCBjYWxsYmFjayk6CiAgICAgICAgIGYgPSBDYWxsV3JhcHBlcihjYWxsYmFjaywgTm9uZSwgc2VsZi5fcm9vdCkuX19jYWxsX18KICAgICAgICAgY2JuYW1lID0gcmVwcihpZChmKSkKICAgICAgICAgdHJ5OgpAQCAtMjg1LDE4ICszNTksMzMgQEAKICAgICAgICAgaWYgc2VsZi5fdGNsQ29tbWFuZHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzID0gW10KICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMuYXBwZW5kKGNibmFtZSkKLSAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmFyaWFibGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCiAgICAgICAgIHJldHVybiBjYm5hbWUKLSAgICB0cmFjZSA9IHRyYWNlX3ZhcmlhYmxlCi0gICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKworICAgIGRlZiB0cmFjZV9hZGQoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgorICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgorCisgICAgICAgIE1vZGUgaXMgb25lIG9mICJyZWFkIiwgIndyaXRlIiwgInVuc2V0Iiwgb3IgYSBsaXN0IG9yIHR1cGxlIG9mCisgICAgICAgIHN1Y2ggc3RyaW5ncy4KKyAgICAgICAgQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSB2YXJpYWJsZSBpcworICAgICAgICByZWFkLCB3cml0dGVuIG9yIHVuc2V0LgorCisgICAgICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2suCisgICAgICAgICIiIgorICAgICAgICBjYm5hbWUgPSBzZWxmLl9yZWdpc3RlcihjYWxsYmFjaykKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAnYWRkJywgJ3ZhcmlhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lLCBtb2RlLCAoY2JuYW1lLCkpCisgICAgICAgIHJldHVybiBjYm5hbWUKKworICAgIGRlZiB0cmFjZV9yZW1vdmUoc2VsZiwgbW9kZSwgY2JuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKyAgICAgICAgTW9kZSBpcyBvbmUgb2YgInJlYWQiLCAid3JpdGUiLCAidW5zZXQiIG9yIGEgbGlzdCBvciB0dXBsZSBvZgorICAgICAgICBzdWNoIHN0cmluZ3MuICBNdXN0IGJlIHNhbWUgYXMgd2VyZSBzcGVjaWZpZWQgaW4gdHJhY2VfYWRkKCkuCisgICAgICAgIGNibmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV9hZGQoKS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCi0gICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCi0gICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX3ZpbmZvKCk6CisgICAgICAgIHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ3JlbW92ZScsICd2YXJpYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICBmb3IgbSwgY2EgaW4gc2VsZi50cmFjZV9pbmZvKCk6CiAgICAgICAgICAgICBpZiBzZWxmLl90ay5zcGxpdGxpc3QoY2EpWzBdID09IGNibmFtZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgpAQCAtMzA1LDEwICszOTQsNjQgQEAKICAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgIGRlZiB0cmFjZV92aW5mbyhzZWxmKToKKworICAgIGRlZiB0cmFjZV9pbmZvKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLiIiIgorICAgICAgICBzcGxpdGxpc3QgPSBzZWxmLl90ay5zcGxpdGxpc3QKKyAgICAgICAgcmV0dXJuIFsoc3BsaXRsaXN0KGspLCB2KSBmb3IgaywgdiBpbiBtYXAoc3BsaXRsaXN0LAorICAgICAgICAgICAgc3BsaXRsaXN0KHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ2luZm8nLCAndmFyaWFibGUnLCBzZWxmLl9uYW1lKSkpXQorCisgICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKKyAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgorICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCisKKyAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX2FkZCgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3JlZ2lzdGVyKGNhbGxiYWNrKQorICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2YXJpYWJsZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgcmV0dXJuIGNibmFtZQorCisgICAgdHJhY2UgPSB0cmFjZV92YXJpYWJsZQorCisgICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKyAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX3JlbW92ZSgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCisgICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX2luZm8oKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3RrLnNwbGl0bGlzdChjYSlbMF0gPT0gY2JuYW1lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90ay5kZWxldGVjb21tYW5kKGNibmFtZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRyYWNlX3ZpbmZvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfaW5mbygpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCiAgICAgICAgIHJldHVybiBbc2VsZi5fdGsuc3BsaXRsaXN0KHgpIGZvciB4IGluIHNlbGYuX3RrLnNwbGl0bGlzdCgKICAgICAgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZpbmZvIiwgc2VsZi5fbmFtZSkpXQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIkNvbXBhcmlzb24gZm9yIGVxdWFsaXR5ICg9PSkuCiAKQEAgLTQyNiw2ICs1NjksOSBAQAogCiAgICAgQmFzZSBjbGFzcyB3aGljaCBkZWZpbmVzIG1ldGhvZHMgY29tbW9uIGZvciBpbnRlcmlvciB3aWRnZXRzLiIiIgogCisgICAgIyB1c2VkIGZvciBnZW5lcmF0aW5nIGNoaWxkIHdpZGdldCBuYW1lcworICAgIF9sYXN0X2NoaWxkX2lkcyA9IE5vbmUKKwogICAgICMgWFhYIGZvbnQgY29tbWFuZD8KICAgICBfdGNsQ29tbWFuZHMgPSBOb25lCiAgICAgZGVmIGRlc3Ryb3koc2VsZik6CkBAIC00NzMsMTIgKzYxOSw2IEBACiAgICAgICAgIGRpc2FibGVkRm9yZWdyb3VuZCwgaW5zZXJ0QmFja2dyb3VuZCwgdHJvdWdoQ29sb3IuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgoJ3RrX3NldFBhbGV0dGUnLCkKICAgICAgICAgICAgICAgKyBfZmxhdHRlbihhcmdzKSArIF9mbGF0dGVuKGxpc3Qoa3cuaXRlbXMoKSkpKQotICAgIGRlZiB0a19tZW51QmFyKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiRG8gbm90IHVzZS4gTmVlZGVkIGluIFRrIDMuNiBhbmQgZWFybGllci4iIiIKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX21lbnVCYXIoKSBkb2VzIG5vdGhpbmcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGRlZiB3YWl0X3ZhcmlhYmxlKHNlbGYsIG5hbWU9J1BZX1ZBUicpOgogICAgICAgICAiIiJXYWl0IHVudGlsIHRoZSB2YXJpYWJsZSBpcyBtb2RpZmllZC4KIApAQCAtODUwLDggKzk5MCw3IEBACiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2hlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19pZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgSUQgZm9yIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdykpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi50ay5jYWxsKCd3aW5mbycsICdpZCcsIHNlbGYuX3cpLCAwKQogICAgIGRlZiB3aW5mb19pbnRlcnBzKHNlbGYsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIGFsbCBUY2wgaW50ZXJwcmV0ZXJzIGZvciB0aGlzIGRpc3BsYXkuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2ludGVycHMnKSArIHNlbGYuX2Rpc3BsYXlvZihkaXNwbGF5b2YpCkBAIC05NzEsMTggKzExMTAsMTYgQEAKICAgICBkZWYgd2luZm9fdmlzdWFsaWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgWCBpZGVudGlmaWVyIGZvciB0aGUgdmlzdWFsIGZvciB0aGlzIHdpZGdldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsaWQnLCBzZWxmLl93KQotICAgIGRlZiB3aW5mb192aXN1YWxzYXZhaWxhYmxlKHNlbGYsIGluY2x1ZGVpZHM9MCk6CisgICAgZGVmIHdpbmZvX3Zpc3VhbHNhdmFpbGFibGUoc2VsZiwgaW5jbHVkZWlkcz1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHZpc3VhbHMgYXZhaWxhYmxlIGZvciB0aGUgc2NyZWVuCiAgICAgICAgIG9mIHRoaXMgd2lkZ2V0LgogCiAgICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCBjb25zaXN0cyBvZiBhIHZpc3VhbCBuYW1lIChzZWUgd2luZm9fdmlzdWFsKSwgYQotICAgICAgICBkZXB0aCBhbmQgaWYgSU5DTFVERUlEUz0xIGlzIGdpdmVuIGFsc28gdGhlIFggaWRlbnRpZmllci4iIiIKLSAgICAgICAgZGF0YSA9IHNlbGYudGsuc3BsaXQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWlkcyBhbmQgJ2luY2x1ZGVpZHMnIG9yIE5vbmUpKQotICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICBkYXRhID0gW3NlbGYudGsuc3BsaXQoZGF0YSldCi0gICAgICAgIHJldHVybiBbc2VsZi5fX3dpbmZvX3BhcnNlaXRlbSh4KSBmb3IgeCBpbiAgZGF0YV0KKyAgICAgICAgZGVwdGggYW5kIGlmIGluY2x1ZGVpZHMgaXMgdHJ1ZSBpcyBnaXZlbiBhbHNvIHRoZSBYIGlkZW50aWZpZXIuIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlaWRzJyBpZiBpbmNsdWRlaWRzIGVsc2UgTm9uZSkKKyAgICAgICAgZGF0YSA9IFtzZWxmLnRrLnNwbGl0bGlzdCh4KSBmb3IgeCBpbiBzZWxmLnRrLnNwbGl0bGlzdChkYXRhKV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9fd2luZm9fcGFyc2VpdGVtKHgpIGZvciB4IGluIGRhdGFdCiAgICAgZGVmIF9fd2luZm9fcGFyc2VpdGVtKHNlbGYsIHQpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgcmV0dXJuIHRbOjFdICsgdHVwbGUobWFwKHNlbGYuX193aW5mb19nZXRpbnQsIHRbMTpdKSkKQEAgLTEyODMsNyArMTQyMCwxMCBAQAogICAgICAgICBleGNlcHQgVGNsRXJyb3I6IHBhc3MKICAgICAgICAgZS5rZXlzeW0gPSBLCiAgICAgICAgIGUua2V5c3ltX251bSA9IGdldGludF9ldmVudChOKQotICAgICAgICBlLnR5cGUgPSBUCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGUudHlwZSA9IEV2ZW50VHlwZShUKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGUudHlwZSA9IFQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZS53aWRnZXQgPSBzZWxmLl9uYW1ldG93aWRnZXQoVykKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtMTg5Myw5ICsyMDMzLDYgQEAKICAgICAgICAgaWYgdGNsX3ZlcnNpb24gIT0gX3RraW50ZXIuVENMX1ZFUlNJT046CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRjbC5oIHZlcnNpb24gKCVzKSBkb2Vzbid0IG1hdGNoIGxpYnRjbC5hIHZlcnNpb24gKCVzKSIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKF90a2ludGVyLlRDTF9WRVJTSU9OLCB0Y2xfdmVyc2lvbikpCi0gICAgICAgIGlmIFRrVmVyc2lvbiA8IDQuMDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGsgNC4wIG9yIGhpZ2hlciBpcyByZXF1aXJlZDsgZm91bmQgVGsgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzdHIoVGtWZXJzaW9uKSkKICAgICAgICAgIyBDcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSB0a2Vycm9yIGFuZCBleGl0IGNvbW1hbmRzCiAgICAgICAgICMgV2UgbmVlZCB0byBpbmxpbmUgcGFydHMgb2YgX3JlZ2lzdGVyIGhlcmUsIF8gcmVnaXN0ZXIKICAgICAgICAgIyB3b3VsZCByZWdpc3RlciBkaWZmZXJlbnRseS1uYW1lZCBjb21tYW5kcy4KQEAgLTIxMTgsNyArMjI1NSwxNSBAQAogICAgICAgICAgICAgbmFtZSA9IGNuZlsnbmFtZSddCiAgICAgICAgICAgICBkZWwgY25mWyduYW1lJ10KICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gcmVwcihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXy5sb3dlcigpCisgICAgICAgICAgICBpZiBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkcyA9IHt9CisgICAgICAgICAgICBjb3VudCA9IG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMuZ2V0KG5hbWUsIDApICsgMQorICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkc1tuYW1lXSA9IGNvdW50CisgICAgICAgICAgICBpZiBjb3VudCA9PSAxOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnISVzJyAlIChuYW1lLCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9ICchJXMlZCcgJSAobmFtZSwgY291bnQpCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIGlmIG1hc3Rlci5fdz09Jy4nOgogICAgICAgICAgICAgc2VsZi5fdyA9ICcuJyArIG5hbWUKQEAgLTI3MTQsMTIgKzI4NTksNiBAQAogICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6CiAgICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKLSAgICBkZWYgdGtfYmluZEZvclRyYXZlcnNhbChzZWxmKToKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX2JpbmRGb3JUcmF2ZXJzYWwoKSBkb2VzIG5vdGhpbmcgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiQWN0aXZhdGUgZW50cnkgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkKQEAgLTMzNDIsOSArMzQ4MSw2IEBACiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgSW1hZ2UuX2xhc3RfaWQgKz0gMQogICAgICAgICAgICAgbmFtZSA9ICJweWltYWdlJXIiICUgKEltYWdlLl9sYXN0X2lkLCkgIyB0ayBpdHNlbGYgd291bGQgdXNlIGltYWdlPHg+Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIGZvciBzeXN0ZW1zIHdoZXJlIGlkKHgpCi0gICAgICAgICAgICAjIGNhbiByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIsIHN1Y2ggYXMgTGludXgvbTY4azoKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gPT0gJy0nOiBuYW1lID0gJ18nICsgbmFtZVsxOl0KICAgICAgICAgaWYga3cgYW5kIGNuZjogY25mID0gX2NuZm1lcmdlKChjbmYsIGt3KSkKICAgICAgICAgZWxpZiBrdzogY25mID0ga3cKICAgICAgICAgb3B0aW9ucyA9ICgpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKaW5kZXggZDI2ODhkYi4uMWU3NWNhZSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQpAQCAtMTUsMTEgKzE1LDYgQEAKICAgICBjb21tYW5kICA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKipvcHRpb25zKToKLQotICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBwbGFjZWQgb24gdGhlIG1vZHVsZSBsZXZlbCBpbnN0ZWFkPwotICAgICAgICBpZiBUa1ZlcnNpb24gPCA0LjI6Ci0gICAgICAgICAgICByYWlzZSBUY2xFcnJvcigidGhpcyBtb2R1bGUgcmVxdWlyZXMgVGsgNC4yIG9yIG5ld2VyIikKLQogICAgICAgICBzZWxmLm1hc3RlciAgPSBtYXN0ZXIKICAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBub3QgbWFzdGVyIGFuZCBvcHRpb25zLmdldCgncGFyZW50Jyk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9kaWFsb2cucHkKaW5kZXggYmUwODVhYi4uZjYxYzVmNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2RpYWxvZy5weQpAQCAtMywxMCArMyw3IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLWlmIFRrVmVyc2lvbiA8PSAzLjY6Ci0gICAgRElBTE9HX0lDT04gPSAnd2FybmluZycKLWVsc2U6Ci0gICAgRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJworRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJwogCiAKIGNsYXNzIERpYWxvZyhXaWRnZXQpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5IGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CmluZGV4IGRiZTVlODguLjMzZGM1NGEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKQEAgLTcsOCArNyw2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CmluZGV4IDg1ZWUyYzcuLjlkYzFlMzcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKQEAgLTEyLDYgKzEyLDE0IEBACiAgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQsIG5hbWU9J2NoaWxkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnPHRraW50ZXIuRnJhbWUgb2JqZWN0IC50b3AuY2hpbGQ+JykKIAorICAgIGRlZiB0ZXN0X2dlbmVyYXRlZF9uYW1lcyhzZWxmKToKKyAgICAgICAgdCA9IHRraW50ZXIuVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBmID0gdGtpbnRlci5GcmFtZSh0KQorICAgICAgICBmMiA9IHRraW50ZXIuRnJhbWUodCkKKyAgICAgICAgYiA9IHRraW50ZXIuQnV0dG9uKGYyKQorICAgICAgICBmb3IgbmFtZSBpbiBzdHIoYikuc3BsaXQoJy4nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmFtZS5pc2lkZW50aWZpZXIoKSwgbXNnPXJlcHIobmFtZSkpCisKICAgICBkZWYgdGVzdF90a19zZXRQYWxldHRlKHNlbGYpOgogICAgICAgICByb290ID0gc2VsZi5yb290CiAgICAgICAgIHJvb3QudGtfc2V0UGFsZXR0ZSgnYmxhY2snKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQppbmRleCAxZjc0NDUzLi40NDg1ODE3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpAQCAtODcsNyArODcsOCBAQAogICAgICAgICB2LnNldCgidmFsdWUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodi5zaWRlX2VmZmVjdCkKIAotICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3RyYWNlX29sZChzZWxmKToKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCiAgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCiAgICAgICAgIHZuYW1lID0gc3RyKHYpCiAgICAgICAgIHRyYWNlID0gW10KQEAgLTEzNiw2ICsxMzcsNTUgQEAKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAndScpXSkKIAorICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQorICAgICAgICB2bmFtZSA9IHN0cih2KQorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiByZWFkX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCdyZWFkJywpICsgYXJncykKKyAgICAgICAgZGVmIHdyaXRlX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCd3cml0ZScsKSArIGFyZ3MpCisgICAgICAgIHRyMSA9IHYudHJhY2VfYWRkKCdyZWFkJywgcmVhZF90cmFjZXIpCisgICAgICAgIHRyMiA9IHYudHJhY2VfYWRkKFsnd3JpdGUnLCAndW5zZXQnXSwgd3JpdGVfdHJhY2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh2LnRyYWNlX2luZm8oKSksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCdyZWFkJywpLCB0cjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ3dyaXRlJywgJ3Vuc2V0JyksIHRyMildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbXSkKKworICAgICAgICB2LnNldCgnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3JlYWQnLCB2bmFtZSwgJycsICdyZWFkJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgaW5mbyA9IHNvcnRlZCh2LnRyYWNlX2luZm8oKSkKKyAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3dyaXRlJywgdHIxKSAgIyBXcm9uZyBtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvcik6CisgICAgICAgICAgICB2LnRyYWNlX3JlbW92ZSgncmVhZCcsICdzcGFtJykgICMgV3JvbmcgY29tbWFuZCBuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCdyZWFkJywgdm5hbWUsICcnLCAncmVhZCcpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIHYudHJhY2VfcmVtb3ZlKCdyZWFkJywgdHIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudHJhY2VfaW5mbygpLCBbKCgnd3JpdGUnLCAndW5zZXQnKSwgdHIyKV0pCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgW10pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgd3JpdGVfdHJhY2VyCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICB2LnNldCgnZWdncycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgdgorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd1bnNldCcpXSkKKwogCiBjbGFzcyBUZXN0U3RyaW5nVmFyKFRlc3RCYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CmluZGV4IGM5MjRkNTUuLjgxYjUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTkxLDkgKzkxLDEwIEBACiAgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXRbJ3VzZSddLCAnJykKICAgICAgICAgcGFyZW50ID0gc2VsZi5jcmVhdGUoY29udGFpbmVyPVRydWUpCi0gICAgICAgIHdpZCA9IHBhcmVudC53aW5mb19pZCgpCi0gICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh3aWRnZXQyWyd1c2UnXSksIHdpZCkKKyAgICAgICAgd2lkID0gaGV4KHBhcmVudC53aW5mb19pZCgpKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3aWQ9d2lkKToKKyAgICAgICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXQyWyd1c2UnXSwgd2lkKQogCiAKIEBhZGRfc3RhbmRhcmRfb3B0aW9ucyhTdGFuZGFyZE9wdGlvbnNUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CmluZGV4IGM2OGE2NTAuLmExYjdjZGYgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQpAQCAtMSw2ICsxLDUgQEAKICMgLSotIGVuY29kaW5nOiB1dGYtOCAtKi0KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgdHRrCiAKIGNsYXNzIE1vY2tUa0FwcDoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKaW5kZXggOGJkMjJkMC4uMjY3NjZhOCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKQEAgLTE0ODcsNiArMTQ4Nyw3IEBACiAKIAogICAgIGRlZiB0ZXN0X3NlbGVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbiwgJ3NwYW0nKQogICAgICAgICAjIGl0ZW0gJ25vbmUnIGRvZXNuJ3QgZXhpc3QKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5zZWxlY3Rpb25fc2V0LCAnbm9uZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uX2FkZCwgJ25vbmUnKQpAQCAtMTUwMCwyNSArMTUwMSwzMSBAQAogICAgICAgICBjMyA9IHNlbGYudHYuaW5zZXJ0KGl0ZW0xLCAnZW5kJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzIsKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBjMiwgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoaXRlbTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgYzIsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBjMiwgaXRlbTIpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZSgoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKGl0ZW0xLCBjMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGMyLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZShjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShjMSwgYzMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKIAogICAgICAgICBzZWxmLnR2Lmluc2VydCgnJywgJ2VuZCcsIGlkPSd3aXRoIHNwYWNlcycpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgnd2l0aCBzcGFjZXMnKQpAQCAtMTUzNiw2ICsxNTQzLDQwIEBACiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChiJ2J5dGVzXHhlMlx4ODJceGFjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoJ2J5dGVzXHhlMlx4ODJceGFjJywpKQogCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCkpCisKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCisKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNyk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgJ0RlcHJlY2F0ZWQgQVBJIG9mIFRyZWV2aWV3LnNlbGVjdGlvbigpIHNob3VsZCBiZSByZW1vdmVkJykKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbignc2V0JywgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ2FkZCcsIChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbigncmVtb3ZlJywgKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ3RvZ2dsZScsIChjMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGYudHYuc2VsZWN0aW9uKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZWN0aW9uLCAoYzMsIGl0ZW0yKSkKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKICAgICAgICAgc2VsZi50dlsnY29sdW1ucyddID0gWydBJywgJ0InXQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGl4LnB5IGIvTGliL3RraW50ZXIvdGl4LnB5CmluZGV4IDJlZDZhNzcuLmU3Y2IxMGEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3RpeC5weQorKysgYi9MaWIvdGtpbnRlci90aXgucHkKQEAgLTMxLDEwICszMSw2IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLSMgV0FSTklORyAtIFRrVmVyc2lvbiBpcyBhIGxpbWl0ZWQgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcgotaWYgVGtWZXJzaW9uIDwgMy45OTk6Ci0gICAgcmFpc2UgSW1wb3J0RXJyb3IoIlRoaXMgdmVyc2lvbiBvZiBUaXgucHkgcmVxdWlyZXMgVGsgNC4wIG9yIGhpZ2hlciIpCi0KIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogCiAjIFNvbWUgbW9yZSBjb25zdGFudHMgKGZvciBjb25zaXN0ZW5jeSB3aXRoIFRraW50ZXIpCkBAIC00NzYsMTYgKzQ3MiwxNyBAQAogICAgICIiIkRpc3BsYXlTdHlsZSAtIGhhbmRsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hhcmVkIGJ5CiAgICAgKG11bHRpcGxlKSBEaXNwbGF5IEl0ZW1zIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbXR5cGUsIGNuZj17fSwgKiprdyk6Ci0gICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgotICAgICAgICAgICAgbWFzdGVyID0ga3dbJ3JlZndpbmRvdyddCi0gICAgICAgIGVsaWYgJ3JlZndpbmRvdycgaW4gY25mOgotICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWFzdGVyID0gdGtpbnRlci5fZGVmYXVsdF9yb290Ci0gICAgICAgICAgICBpZiBub3QgbWFzdGVyOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVG9vIGVhcmx5IHRvIGNyZWF0ZSBkaXNwbGF5IHN0eWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyByb290IHdpbmRvdyIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW10eXBlLCBjbmY9e30sICosIG1hc3Rlcj1Ob25lLCAqKmt3KToKKyAgICAgICAgaWYgbm90IG1hc3RlcjoKKyAgICAgICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgorICAgICAgICAgICAgICAgIG1hc3RlciA9IGt3WydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxpZiAncmVmd2luZG93JyBpbiBjbmY6CisgICAgICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYXN0ZXIgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKKyAgICAgICAgICAgICAgICBpZiBub3QgbWFzdGVyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRvbyBlYXJseSB0byBjcmVhdGUgZGlzcGxheSBzdHlsZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHJvb3Qgd2luZG93IikKICAgICAgICAgc2VsZi50ayA9IG1hc3Rlci50awogICAgICAgICBzZWxmLnN0eWxlbmFtZSA9IHNlbGYudGsuY2FsbCgndGl4RGlzcGxheVN0eWxlJywgaXRlbXR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoY25mLGt3KSApCkBAIC0xMTIwLDcgKzExMTcsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xMTY2LDcgKzExNjMsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xNTg5LDggKzE1ODYsNyBAQAogICAgICAgICAnJydSZXR1cm5zIGEgbGlzdCBvZiBpdGVtcyB3aG9zZSBzdGF0dXMgbWF0Y2hlcyBzdGF0dXMuIElmIHN0YXR1cyBpcwogICAgICBub3Qgc3BlY2lmaWVkLCB0aGUgbGlzdCBvZiBpdGVtcyBpbiB0aGUgIm9uIiBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZC4KICAgICAgTW9kZSBjYW4gYmUgb24sIG9mZiwgZGVmYXVsdCcnJwotICAgICAgICBjID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldHNlbGVjdGlvbicsIG1vZGUpKQotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3QoYykKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0c2VsZWN0aW9uJywgbW9kZSkpCiAKICAgICBkZWYgZ2V0c3RhdHVzKHNlbGYsIGVudHJ5cGF0aCk6CiAgICAgICAgICcnJ1JldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVudHJ5UGF0aC4nJycKQEAgLTE5MTEsNyArMTkwNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLl9vcHRpb25zKHt9LCBrdykpKQogCiAgICAgZGVmIHNpemVfcm93KHNlbGYsIGluZGV4LCAqKmt3KToKQEAgLTE5MzYsNyArMTkzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSByb3cgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgICAgICAgICBzZWxmLCAnc2l6ZScsICdyb3cnLCBpbmRleCwgKnNlbGYuX29wdGlvbnMoe30sIGt3KSkpCiAKICAgICBkZWYgdW5zZXQoc2VsZiwgeCwgeSk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90dGsucHkgYi9MaWIvdGtpbnRlci90dGsucHkKaW5kZXggZjRhNmQ4Yy4uYzQ3NGU2MCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdHRrLnB5CisrKyBiL0xpYi90a2ludGVyL3R0ay5weQpAQCAtMjgsNiArMjgsOCBAQAogaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZsYXR0ZW4sIF9qb2luLCBfc3RyaW5naWZ5LCBfc3BsaXRkaWN0CiAKK19zZW50aW5lbCA9IG9iamVjdCgpCisKICMgVmVyaWZ5IGlmIFRrIGlzIG5ldyBlbm91Z2ggdG8gbm90IG5lZWQgdGhlIFRpbGUgcGFja2FnZQogX1JFUVVJUkVfVElMRSA9IFRydWUgaWYgdGtpbnRlci5Ua1ZlcnNpb24gPCA4LjUgZWxzZSBGYWxzZQogCkBAIC0zODEsNyArMzgzLDkgQEAKICAgICAgICAgYSBzZXF1ZW5jZSBpZGVudGlmeWluZyB0aGUgdmFsdWUgZm9yIHRoYXQgb3B0aW9uLiIiIgogICAgICAgICBpZiBxdWVyeV9vcHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd1txdWVyeV9vcHRdID0gTm9uZQotICAgICAgICByZXR1cm4gX3ZhbF9vcl9kaWN0KHNlbGYudGssIGt3LCBzZWxmLl9uYW1lLCAiY29uZmlndXJlIiwgc3R5bGUpCisgICAgICAgIHJlc3VsdCA9IF92YWxfb3JfZGljdChzZWxmLnRrLCBrdywgc2VsZi5fbmFtZSwgImNvbmZpZ3VyZSIsIHN0eWxlKQorICAgICAgICBpZiByZXN1bHQgb3IgcXVlcnlfb3B0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKICAgICBkZWYgbWFwKHNlbGYsIHN0eWxlLCBxdWVyeV9vcHQ9Tm9uZSwgKiprdyk6CkBAIC00NjYsMTIgKzQ3MCwxNCBAQAogCiAgICAgZGVmIGVsZW1lbnRfbmFtZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCB0aGVtZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKQorICAgICAgICByZXR1cm4gdHVwbGUobi5sc3RyaXAoJy0nKSBmb3IgbiBpbiBzZWxmLnRrLnNwbGl0bGlzdCgKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKSkKIAogCiAgICAgZGVmIGVsZW1lbnRfb3B0aW9ucyhzZWxmLCBlbGVtZW50bmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBlbGVtZW50bmFtZSdzIG9wdGlvbnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkKKyAgICAgICAgcmV0dXJuIHR1cGxlKG8ubHN0cmlwKCctJykgZm9yIG8gaW4gc2VsZi50ay5zcGxpdGxpc3QoCisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkpCiAKIAogICAgIGRlZiB0aGVtZV9jcmVhdGUoc2VsZiwgdGhlbWVuYW1lLCBwYXJlbnQ9Tm9uZSwgc2V0dGluZ3M9Tm9uZSk6CkBAIC0xMzkwLDMxICsxMzk2LDUzIEBACiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VlIiwgaXRlbSkKIAogCi0gICAgZGVmIHNlbGVjdGlvbihzZWxmLCBzZWxvcD1Ob25lLCBpdGVtcz1Ob25lKToKLSAgICAgICAgIiIiSWYgc2Vsb3AgaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBzZWxlY3RlZCBpdGVtcy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtcywgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgIGl0ZW1zID0gKGl0ZW1zLCkKKyAgICBkZWYgc2VsZWN0aW9uKHNlbGYsIHNlbG9wPV9zZW50aW5lbCwgaXRlbXM9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHR1cGxlIG9mIHNlbGVjdGVkIGl0ZW1zLiIiIgorICAgICAgICBpZiBzZWxvcCBpcyBfc2VudGluZWw6CisgICAgICAgICAgICBzZWxvcCA9IE5vbmUKKyAgICAgICAgZWxpZiBzZWxvcCBpcyBOb25lOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJUaGUgc2Vsb3A9Tm9uZSBhcmd1bWVudCBvZiBzZWxlY3Rpb24oKSBpcyBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43IiwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgIGVsaWYgc2Vsb3AgaW4gKCdzZXQnLCAnYWRkJywgJ3JlbW92ZScsICd0b2dnbGUnKToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAiVGhlIHNlbG9wIGFyZ3VtZW50IG9mIHNlbGVjdGlvbigpIGlzIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcsICIKKyAgICAgICAgICAgICAgICAidXNlIHNlbGVjdGlvbl8lcygpIGluc3RlYWQiICUgKHNlbG9wLCksCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWxlY3Rpb24iLCBzZWxvcCwgaXRlbXMpKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3NldChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIml0ZW1zIGJlY29tZXMgdGhlIG5ldyBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJzZXQiLCBpdGVtcykKKyAgICBkZWYgX3NlbGVjdGlvbihzZWxmLCBzZWxvcCwgaXRlbXMpOgorICAgICAgICBpZiBsZW4oaXRlbXMpID09IDEgYW5kIGlzaW5zdGFuY2UoaXRlbXNbMF0sICh0dXBsZSwgbGlzdCkpOgorICAgICAgICAgICAgaXRlbXMgPSBpdGVtc1swXQorCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VsZWN0aW9uIiwgc2Vsb3AsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIkFkZCBpdGVtcyB0byB0aGUgc2VsZWN0aW9uLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigiYWRkIiwgaXRlbXMpCisgICAgZGVmIHNlbGVjdGlvbl9zZXQoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiVGhlIHNwZWNpZmllZCBpdGVtcyBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInNldCIsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIlJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJyZW1vdmUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJBZGQgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgdG8gdGhlIHNlbGVjdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJhZGQiLCBpdGVtcykKIAogCi0gICAgZGVmIHNlbGVjdGlvbl90b2dnbGUoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIGl0ZW0gaW4gaXRlbXMuIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJ0b2dnbGUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJSZW1vdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgZnJvbSB0aGUgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInJlbW92ZSIsIGl0ZW1zKQorCisKKyAgICBkZWYgc2VsZWN0aW9uX3RvZ2dsZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIHNwZWNpZmllZCBpdGVtLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInRvZ2dsZSIsIGl0ZW1zKQogCiAKICAgICBkZWYgc2V0KHNlbGYsIGl0ZW0sIGNvbHVtbj1Ob25lLCB2YWx1ZT1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCBiMWQwYzgzLi44MjVhYTkwIDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gaW8gaW1wb3J0IFRleHRJT1dyYXBwZXIKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGZyb20gdG9rZW4gaW1wb3J0ICoKQEAgLTExOSwxOSArMTIwLDQxIEBACiBJZ25vcmUgPSBXaGl0ZXNwYWNlICsgYW55KHInXFxccj9cbicgKyBXaGl0ZXNwYWNlKSArIG1heWJlKENvbW1lbnQpCiBOYW1lID0gcidcdysnCiAKLUhleG51bWJlciA9IHInMFt4WF1bMC05YS1mQS1GXSsnCi1CaW5udW1iZXIgPSByJzBbYkJdWzAxXSsnCi1PY3RudW1iZXIgPSByJzBbb09dWzAtN10rJwotRGVjbnVtYmVyID0gcicoPzowK3xbMS05XVswLTldKiknCitIZXhudW1iZXIgPSByJzBbeFhdKD86Xz9bMC05YS1mQS1GXSkrJworQmlubnVtYmVyID0gcicwW2JCXSg/Ol8/WzAxXSkrJworT2N0bnVtYmVyID0gcicwW29PXSg/Ol8/WzAtN10pKycKK0RlY251bWJlciA9IHInKD86MCg/Ol8/MCkqfFsxLTldKD86Xz9bMC05XSkqKScKIEludG51bWJlciA9IGdyb3VwKEhleG51bWJlciwgQmlubnVtYmVyLCBPY3RudW1iZXIsIERlY251bWJlcikKLUV4cG9uZW50ID0gcidbZUVdWy0rXT9bMC05XSsnCi1Qb2ludGZsb2F0ID0gZ3JvdXAocidbMC05XStcLlswLTldKicsIHInXC5bMC05XSsnKSArIG1heWJlKEV4cG9uZW50KQotRXhwZmxvYXQgPSByJ1swLTldKycgKyBFeHBvbmVudAorRXhwb25lbnQgPSByJ1tlRV1bLStdP1swLTldKD86Xz9bMC05XSkqJworUG9pbnRmbG9hdCA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpcLig/OlswLTldKD86Xz9bMC05XSkqKT8nLAorICAgICAgICAgICAgICAgICAgIHInXC5bMC05XSg/Ol8/WzAtOV0pKicpICsgbWF5YmUoRXhwb25lbnQpCitFeHBmbG9hdCA9IHInWzAtOV0oPzpfP1swLTldKSonICsgRXhwb25lbnQKIEZsb2F0bnVtYmVyID0gZ3JvdXAoUG9pbnRmbG9hdCwgRXhwZmxvYXQpCi1JbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XStbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQorSW1hZ251bWJlciA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQogTnVtYmVyID0gZ3JvdXAoSW1hZ251bWJlciwgRmxvYXRudW1iZXIsIEludG51bWJlcikKIAotU3RyaW5nUHJlZml4ID0gcicoPzpbYkJdW3JSXT98W3JSXVtiQl0/fFt1VV0pPycKKyMgUmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcsIHBsdXMgYWxsIG9mIHRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuCitkZWYgX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICAjIFRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuIE9ubHkgY29udGFpbiB0aGUgbG93ZXIgY2FzZSB2ZXJzaW9ucywKKyAgICAjICBhbmQgZG9uJ3QgY29udGFpbiBhbnkgcGVybXVhdGlvbnMgKGluY2x1ZGUgJ2ZyJywgYnV0IG5vdAorICAgICMgICdyZicpLiBUaGUgdmFyaW91cyBwZXJtdXRhdGlvbnMgd2lsbCBiZSBnZW5lcmF0ZWQuCisgICAgX3ZhbGlkX3N0cmluZ19wcmVmaXhlcyA9IFsnYicsICdyJywgJ3UnLCAnZicsICdicicsICdmciddCisgICAgIyBpZiB3ZSBhZGQgYmluYXJ5IGYtc3RyaW5ncywgYWRkOiBbJ2ZiJywgJ2ZiciddCisgICAgcmVzdWx0ID0gc2V0KFsnJ10pCisgICAgZm9yIHByZWZpeCBpbiBfdmFsaWRfc3RyaW5nX3ByZWZpeGVzOgorICAgICAgICBmb3IgdCBpbiBfaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhwcmVmaXgpOgorICAgICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHdpdGggdXBwZXIgYW5kIGxvd2VyIHZlcnNpb25zIG9mIGVhY2gKKyAgICAgICAgICAgICMgIGNoYXJhY3RlcgorICAgICAgICAgICAgZm9yIHUgaW4gX2l0ZXJ0b29scy5wcm9kdWN0KCpbKGMsIGMudXBwZXIoKSkgZm9yIGMgaW4gdF0pOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoJycuam9pbih1KSkKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBfY29tcGlsZShleHByKToKKyAgICByZXR1cm4gcmUuY29tcGlsZShleHByLCByZS5VTklDT0RFKQorCisjIE5vdGUgdGhhdCBzaW5jZSBfYWxsX3N0cmluZ19wcmVmaXhlcyBpbmNsdWRlcyB0aGUgZW1wdHkgc3RyaW5nLAorIyAgU3RyaW5nUHJlZml4IGNhbiBiZSB0aGUgZW1wdHkgc3RyaW5nIChtYWtpbmcgaXQgb3B0aW9uYWwpLgorU3RyaW5nUHJlZml4ID0gZ3JvdXAoKl9hbGxfc3RyaW5nX3ByZWZpeGVzKCkpCiAKICMgVGFpbCBlbmQgb2YgJyBzdHJpbmcuCiBTaW5nbGUgPSByIlteJ1xcXSooPzpcXC5bXidcXF0qKSonIgpAQCAtMTY5LDUwICsxOTIsMjUgQEAKIFBzZXVkb0V4dHJhcyA9IGdyb3VwKHInXFxccj9cbnxcWicsIENvbW1lbnQsIFRyaXBsZSkKIFBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKIAotZGVmIF9jb21waWxlKGV4cHIpOgotICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCisjIEZvciBhIGdpdmVuIHN0cmluZyBwcmVmaXggcGx1cyBxdW90ZXMsIGVuZHBhdHMgbWFwcyBpdCB0byBhIHJlZ2V4CisjICB0byBtYXRjaCB0aGUgcmVtYWluZGVyIG9mIHRoYXQgc3RyaW5nLiBfcHJlZml4IGNhbiBiZSBlbXB0eSwgZm9yCisjICBhIG5vcm1hbCBzaW5nbGUgb3IgdHJpcGxlIHF1b3RlZCBzdHJpbmcgKHdpdGggbm8gcHJlZml4KS4KK2VuZHBhdHMgPSB7fQorZm9yIF9wcmVmaXggaW4gX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICBlbmRwYXRzW19wcmVmaXggKyAiJyJdID0gU2luZ2xlCisgICAgZW5kcGF0c1tfcHJlZml4ICsgJyInXSA9IERvdWJsZQorICAgIGVuZHBhdHNbX3ByZWZpeCArICInJyciXSA9IFNpbmdsZTMKKyAgICBlbmRwYXRzW19wcmVmaXggKyAnIiIiJ10gPSBEb3VibGUzCiAKLWVuZHBhdHMgPSB7IiciOiBTaW5nbGUsICciJzogRG91YmxlLAotICAgICAgICAgICAiJycnIjogU2luZ2xlMywgJyIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyJycnIjogU2luZ2xlMywgJ3IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYicnJyI6IFNpbmdsZTMsICdiIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCJycnIjogU2luZ2xlMywgJ0IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYnInJyciOiBTaW5nbGUzLCAnYnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYlInJyciOiBTaW5nbGUzLCAnYlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQnInJyciOiBTaW5nbGUzLCAnQnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQlInJyciOiBTaW5nbGUzLCAnQlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAicmInJyciOiBTaW5nbGUzLCAncmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUmInJyciOiBTaW5nbGUzLCAnUmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAickInJyciOiBTaW5nbGUzLCAnckIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUkInJyciOiBTaW5nbGUzLCAnUkIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAidScnJyI6IFNpbmdsZTMsICd1IiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlUnJyciOiBTaW5nbGUzLCAnVSIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZSwKLSAgICAgICAgICAgJ3UnOiBOb25lLCAnVSc6IE5vbmV9Ci0KLXRyaXBsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInJyciLCAnIiIiJywKLSAgICAgICAgICAicicnJyIsICdyIiIiJywgIlInJyciLCAnUiIiIicsCi0gICAgICAgICAgImInJyciLCAnYiIiIicsICJCJycnIiwgJ0IiIiInLAotICAgICAgICAgICJicicnJyIsICdiciIiIicsICJCcicnJyIsICdCciIiIicsCi0gICAgICAgICAgImJSJycnIiwgJ2JSIiIiJywgIkJSJycnIiwgJ0JSIiIiJywKLSAgICAgICAgICAicmInJyciLCAncmIiIiInLCAickInJyciLCAnckIiIiInLAotICAgICAgICAgICJSYicnJyIsICdSYiIiIicsICJSQicnJyIsICdSQiIiIicsCi0gICAgICAgICAgInUnJyciLCAndSIiIicsICJVJycnIiwgJ1UiIiInLAotICAgICAgICAgICk6Ci0gICAgdHJpcGxlX3F1b3RlZFt0XSA9IHQKLXNpbmdsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInIiwgJyInLAotICAgICAgICAgICJyJyIsICdyIicsICJSJyIsICdSIicsCi0gICAgICAgICAgImInIiwgJ2IiJywgIkInIiwgJ0IiJywKLSAgICAgICAgICAiYnInIiwgJ2JyIicsICJCciciLCAnQnIiJywKLSAgICAgICAgICAiYlInIiwgJ2JSIicsICJCUiciLCAnQlIiJyAsCi0gICAgICAgICAgInJiJyIsICdyYiInLCAickInIiwgJ3JCIicsCi0gICAgICAgICAgIlJiJyIsICdSYiInLCAiUkInIiwgJ1JCIicgLAotICAgICAgICAgICJ1JyIsICd1IicsICJVJyIsICdVIicsCi0gICAgICAgICAgKToKLSAgICBzaW5nbGVfcXVvdGVkW3RdID0gdAorIyBBIHNldCBvZiBhbGwgb2YgdGhlIHNpbmdsZSBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmcgcHJlZml4ZXMsCisjICBpbmNsdWRpbmcgdGhlIG9wZW5pbmcgcXVvdGVzLgorc2luZ2xlX3F1b3RlZCA9IHNldCgpCit0cmlwbGVfcXVvdGVkID0gc2V0KCkKK2ZvciB0IGluIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CisgICAgZm9yIHUgaW4gKHQgKyAnIicsIHQgKyAiJyIpOgorICAgICAgICBzaW5nbGVfcXVvdGVkLmFkZCh1KQorICAgIGZvciB1IGluICh0ICsgJyIiIicsIHQgKyAiJycnIik6CisgICAgICAgIHRyaXBsZV9xdW90ZWQuYWRkKHUpCiAKIHRhYnNpemUgPSA4CiAKQEAgLTYyNiw2ICs2MjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKENPTU1FTlQsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCiAgICAgICAgICAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lLCBwb3MpCkBAIC02MzgsMTkgKzYzNywzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciA9IGxpbmVbc3RhcnQ6XQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiBzaW5nbGVfcXVvdGVkIG9yIFwKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjJdIGluIHNpbmdsZV9xdW90ZWQgb3IgXAotICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZDoKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdXAgdG8gdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlIHRva2VuIHRvIHNlZSBpZgorICAgICAgICAgICAgICAgICMgIHRoZXkncmUgaW4gdGhlIHNpbmdsZV9xdW90ZWQgc2V0LiBJZiBzbywgdGhleSBzdGFydAorICAgICAgICAgICAgICAgICMgIGEgc3RyaW5nLgorICAgICAgICAgICAgICAgICMgV2UncmUgdXNpbmcgdGhlIGZpcnN0IDMsIGJlY2F1c2Ugd2UncmUgbG9va2luZyBmb3IKKyAgICAgICAgICAgICAgICAjICAicmInIiAoZm9yIGV4YW1wbGUpIGF0IHRoZSBzdGFydCBvZiB0aGUgdG9rZW4uIElmCisgICAgICAgICAgICAgICAgIyAgd2Ugc3dpdGNoIHRvIGxvbmdlciBwcmVmaXhlcywgdGhpcyBuZWVkcyB0byBiZQorICAgICAgICAgICAgICAgICMgIGFkanVzdGVkLgorICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IGluaXRpYWwgPT0gdG9rZW5bOjFdLgorICAgICAgICAgICAgICAgICMgQWxzbyBub3RlIHRoYXQgc2luZ2xlIHF1b3RlIGNoZWNraW5nIG11c3QgY29tZSBhZnRlcgorICAgICAgICAgICAgICAgICMgIHRyaXBsZSBxdW90ZSBjaGVja2luZyAoYWJvdmUpLgorICAgICAgICAgICAgICAgIGVsaWYgKGluaXRpYWwgaW4gc2luZ2xlX3F1b3RlZCBvcgorICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzoyXSBpbiBzaW5nbGVfcXVvdGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQpOgogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlblstMV0gPT0gJ1xuJzogICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ID0gKGxudW0sIHN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbaW5pdGlhbF0gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzFdXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMl1dKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBBZ2FpbiwgdXNpbmcgdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjICB0b2tlbi4gVGhpcyBpcyBsb29raW5nIGZvciB0aGUgbWF0Y2hpbmcgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjICByZWdleCBmb3IgdGhlIGNvcnJlY3QgdHlwZSBvZiBxdW90ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgY2hhcmFjdGVyLiBTbyBpdCdzIHJlYWxseSBsb29raW5nIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgIyAgZW5kcGF0c1siJyJdIG9yIGVuZHBhdHNbJyInXSwgYnkgdHJ5aW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAjICBza2lwIHN0cmluZyBwcmVmaXggY2hhcmFjdGVycywgaWYgYW55LgorICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHMuZ2V0KGluaXRpYWwpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMV0pIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciwgbmVlZGNvbnQgPSBsaW5lW3N0YXJ0Ol0sIDEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsLmlzaWRlbnRpZmllcigpOiAgICAgICAgICAgICAgICMgb3JkaW5hcnkgbmFtZQogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ2FzeW5jJywgJ2F3YWl0Jyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhc3luY19kZWY6CmRpZmYgLS1naXQgYS9MaWIvdHJhY2UucHkgYi9MaWIvdHJhY2UucHkKaW5kZXggZjEwODI2Ni4uYWUxNTQ2MSAxMDA3NTUKLS0tIGEvTGliL3RyYWNlLnB5CisrKyBiL0xpYi90cmFjZS5weQpAQCAtNDgsNiArNDgsNyBAQAogICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIGNvdmVyZGlyPSIvdG1wIikKICIiIgogX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KK2ltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTU4LDcgKzU5LDYgQEAKIGltcG9ydCBnYwogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgogZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIAogdHJ5OgpAQCAtNzcsNTEgKzc3LDYgQEAKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgIHRocmVhZGluZy5zZXR0cmFjZShOb25lKQogCi1kZWYgX3VzYWdlKG91dGZpbGUpOgotICAgIG91dGZpbGUud3JpdGUoIiIiVXNhZ2U6ICVzIFtPUFRJT05TXSA8ZmlsZT4gW0FSR1NdCi0KLU1ldGEtb3B0aW9uczoKLS0taGVscCAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCB0aGVuIGV4aXQuCi0tLXZlcnNpb24gICAgICAgICAgICAgT3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24gdGhlbiBleGl0LgotCi1PdGhlcndpc2UsIGV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgb3B0aW9ucyBtdXN0IGJlIGdpdmVuOgotLXQsIC0tdHJhY2UgICAgICAgICAgIFByaW50IGVhY2ggbGluZSB0byBzeXMuc3Rkb3V0IGJlZm9yZSBpdCBpcyBleGVjdXRlZC4KLS1jLCAtLWNvdW50ICAgICAgICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZAotICAgICAgICAgICAgICAgICAgICAgIGFuZCB3cml0ZSB0aGUgY291bnRzIHRvIDxtb2R1bGU+LmNvdmVyIGZvciBlYWNoCi0gICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIGV4ZWN1dGVkLCBpbiB0aGUgbW9kdWxlJ3MgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgIFNlZSBhbHNvIGAtLWNvdmVyZGlyJywgYC0tZmlsZScsIGAtLW5vLXJlcG9ydCcgYmVsb3cuCi0tbCwgLS1saXN0ZnVuY3MgICAgICAgS2VlcCB0cmFjayBvZiB3aGljaCBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkIGF0IGxlYXN0Ci0gICAgICAgICAgICAgICAgICAgICAgb25jZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgdG8gc3lzLnN0ZG91dCBhZnRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGV4aXRzLgotLVQsIC0tdHJhY2tjYWxscyAgICAgIEtlZXAgdHJhY2sgb2YgY2FsbGVyL2NhbGxlZCBwYWlycyBhbmQgd3JpdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLgotLXIsIC0tcmVwb3J0ICAgICAgICAgIEdlbmVyYXRlIGEgcmVwb3J0IGZyb20gYSBjb3VudHMgZmlsZTsgZG8gbm90IGV4ZWN1dGUKLSAgICAgICAgICAgICAgICAgICAgICBhbnkgY29kZS4gIGAtLWZpbGUnIG11c3Qgc3BlY2lmeSB0aGUgcmVzdWx0cyBmaWxlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgcmVhZCwgd2hpY2ggbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1bgotICAgICAgICAgICAgICAgICAgICAgIHdpdGggYC0tY291bnQgLS1maWxlPUZJTEUnLgotCi1Nb2RpZmllcnM6Ci0tZiwgLS1maWxlPTxmaWxlPiAgICAgRmlsZSB0byBhY2N1bXVsYXRlIGNvdW50cyBvdmVyIHNldmVyYWwgcnVucy4KLS1SLCAtLW5vLXJlcG9ydCAgICAgICBEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICBVc2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjdW11bGF0ZSBvdmVyIHNldmVyYWwgcnVucy4KLS1DLCAtLWNvdmVyZGlyPTxkaXI+ICBEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlcG9ydCBmaWxlcy4gIFRoZSBjb3ZlcmFnZQotICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydCBmb3IgPHBhY2thZ2U+Ljxtb2R1bGU+IGlzIHdyaXR0ZW4gdG8gZmlsZQotICAgICAgICAgICAgICAgICAgICAgIDxkaXI+LzxwYWNrYWdlPi88bW9kdWxlPi5jb3Zlci4KLS1tLCAtLW1pc3NpbmcgICAgICAgICBBbm5vdGF0ZSBleGVjdXRhYmxlIGxpbmVzIHRoYXQgd2VyZSBub3QgZXhlY3V0ZWQKLSAgICAgICAgICAgICAgICAgICAgICB3aXRoICc+Pj4+Pj4gJy4KLS1zLCAtLXN1bW1hcnkgICAgICAgICBXcml0ZSBhIGJyaWVmIHN1bW1hcnkgb24gc3Rkb3V0IGZvciBlYWNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgKENhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0LikKLS1nLCAtLXRpbWluZyAgICAgICAgICBQcmVmaXggZWFjaCBsaW5lIHdpdGggdGhlIHRpbWUgc2luY2UgdGhlIHByb2dyYW0gc3RhcnRlZC4KLSAgICAgICAgICAgICAgICAgICAgICBPbmx5IHVzZWQgd2hpbGUgdHJhY2luZy4KLQotRmlsdGVycywgbWF5IGJlIHJlcGVhdGVkIG11bHRpcGxlIHRpbWVzOgotLS1pZ25vcmUtbW9kdWxlPTxtb2Q+IElnbm9yZSB0aGUgZ2l2ZW4gbW9kdWxlKHMpIGFuZCBpdHMgc3VibW9kdWxlcwotICAgICAgICAgICAgICAgICAgICAgIChpZiBpdCBpcyBhIHBhY2thZ2UpLiAgQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBsaXN0IG9mIG1vZHVsZSBuYW1lcwotLS1pZ25vcmUtZGlyPTxkaXI+ICAgIElnbm9yZSBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IChtdWx0aXBsZQotICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGNhbiBiZSBqb2luZWQgYnkgb3MucGF0aHNlcCkuCi0iIiIgJSBzeXMuYXJndlswXSkKLQogUFJBR01BX05PQ09WRVIgPSAiI3ByYWdtYSBOTyBDT1ZFUiIKIAogIyBTaW1wbGUgcnggdG8gZmluZCBsaW5lcyB3aXRoIG5vIGNvZGUuCkBAIC0yNjUsNyArMjIwLDEzIEBACiAKICAgICBkZWYgd3JpdGVfcmVzdWx0cyhzZWxmLCBzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1GYWxzZSwgY292ZXJkaXI9Tm9uZSk6CiAgICAgICAgICIiIgotICAgICAgICBAcGFyYW0gY292ZXJkaXIKKyAgICAgICAgV3JpdGUgdGhlIGNvdmVyYWdlIHJlc3VsdHMuCisKKyAgICAgICAgOnBhcmFtIHNob3dfbWlzc2luZzogU2hvdyBsaW5lcyB0aGF0IGhhZCBubyBoaXRzLgorICAgICAgICA6cGFyYW0gc3VtbWFyeTogSW5jbHVkZSBjb3ZlcmFnZSBzdW1tYXJ5IHBlciBtb2R1bGUuCisgICAgICAgIDpwYXJhbSBjb3ZlcmRpcjogSWYgTm9uZSwgdGhlIHJlc3VsdHMgb2YgZWFjaCBtb2R1bGUgYXJlIHBsYWNlZCBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIG90aGVyd2lzZSBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5jYWxsZWRmdW5jczoKICAgICAgICAgICAgIHByaW50KCkKQEAgLTY0NywyMTAgKzYwOCwxMzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWRmdW5jcz1zZWxmLl9jYWxsZWRmdW5jcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJzPXNlbGYuX2NhbGxlcnMpCiAKLWRlZiBfZXJyX2V4aXQobXNnKToKLSAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoc3lzLmFyZ3ZbMF0sIG1zZykpCi0gICAgc3lzLmV4aXQoMSkKK2RlZiBtYWluKCk6CiAKLWRlZiBtYWluKGFyZ3Y9Tm9uZSk6Ci0gICAgaW1wb3J0IGdldG9wdAorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSd0cmFjZSAyLjAnKQogCi0gICAgaWYgYXJndiBpcyBOb25lOgotICAgICAgICBhcmd2ID0gc3lzLmFyZ3YKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNYWluIG9wdGlvbnMnLAorICAgICAgICAgICAgJ09uZSBvZiB0aGVzZSAob3IgLS1yZXBvcnQpIG11c3QgYmUgZ2l2ZW4nKQorCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb3VudCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZCBhbmQgd3JpdGUgJworICAgICAgICAgICAgICAgICAndGhlIGNvdW50cyB0byA8bW9kdWxlPi5jb3ZlciBmb3IgZWFjaCBtb2R1bGUgZXhlY3V0ZWQsIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtb2R1bGVcJ3MgZGlyZWN0b3J5LiBTZWUgYWxzbyAtLWNvdmVyZGlyLCAtLWZpbGUsICcKKyAgICAgICAgICAgICAgICAgJy0tbm8tcmVwb3J0IGJlbG93LicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10cmFjZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdQcmludCBlYWNoIGxpbmUgdG8gc3lzLnN0ZG91dCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGlzdGZ1bmNzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0tlZXAgdHJhY2sgb2Ygd2hpY2ggZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBhdCBsZWFzdCBvbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLiAnCisgICAgICAgICAgICAgICAgICdDYW5ub3QgYmUgc3BlY2lmaWVkIGFsb25nc2lkZSAtLXRyYWNlIG9yIC0tY291bnQuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctVCcsICctLXRyYWNrY2FsbHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nS2VlcCB0cmFjayBvZiBjYWxsZXIvY2FsbGVkIHBhaXJzIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byAnCisgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLicpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNb2RpZmllcnMnKQorCisgICAgX2dycCA9IGdycC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBfZ3JwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZXBvcnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nR2VuZXJhdGUgYSByZXBvcnQgZnJvbSBhIGNvdW50cyBmaWxlOyBkb2VzIG5vdCBleGVjdXRlIGFueSAnCisgICAgICAgICAgICAgICAgICdjb2RlLiAtLWZpbGUgbXVzdCBzcGVjaWZ5IHRoZSByZXN1bHRzIGZpbGUgdG8gcmVhZCwgd2hpY2ggJworICAgICAgICAgICAgICAgICAnbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1biB3aXRoIC0tY291bnQgJworICAgICAgICAgICAgICAgICAnLS1maWxlPUZJTEUnKQorICAgIF9ncnAuYWRkX2FyZ3VtZW50KCctUicsICctLW5vLXJlcG9ydCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4gJworICAgICAgICAgICAgICAgICAnVXNlZnVsIGlmIHlvdSB3YW50IHRvIGFjY3VtdWxhdGUgb3ZlciBzZXZlcmFsIHJ1bnMuJykKKworICAgIGdycC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZScsCisgICAgICAgICAgICBoZWxwPSdGaWxlIHRvIGFjY3VtdWxhdGUgY291bnRzIG92ZXIgc2V2ZXJhbCBydW5zJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctQycsICctLWNvdmVyZGlyJywKKyAgICAgICAgICAgIGhlbHA9J0RpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3J0IGZpbGVzIGdvLiBUaGUgY292ZXJhZ2UgcmVwb3J0ICcKKyAgICAgICAgICAgICAgICAgJ2ZvciA8cGFja2FnZT4uPG1vZHVsZT4gd2lsbCBiZSB3cml0dGVuIHRvIGZpbGUgJworICAgICAgICAgICAgICAgICAnPGRpcj4vPHBhY2thZ2U+Lzxtb2R1bGU+LmNvdmVyJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctbScsICctLW1pc3NpbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nQW5ub3RhdGUgZXhlY3V0YWJsZSBsaW5lcyB0aGF0IHdlcmUgbm90IGV4ZWN1dGVkIHdpdGggJworICAgICAgICAgICAgICAgICAnIj4+Pj4+PiAiJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctcycsICctLXN1bW1hcnknLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nV3JpdGUgYSBicmllZiBzdW1tYXJ5IGZvciBlYWNoIGZpbGUgdG8gc3lzLnN0ZG91dC4gJworICAgICAgICAgICAgICAgICAnQ2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1nJywgJy0tdGltaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J1ByZWZpeCBlYWNoIGxpbmUgd2l0aCB0aGUgdGltZSBzaW5jZSB0aGUgcHJvZ3JhbSBzdGFydGVkLiAnCisgICAgICAgICAgICAgICAgICdPbmx5IHVzZWQgd2hpbGUgdHJhY2luZycpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdGaWx0ZXJzJywKKyAgICAgICAgICAgICdDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1tb2R1bGUnLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgdGhlIGdpdmVuIG1vZHVsZShzKSBhbmQgaXRzIHN1Ym1vZHVsZXMnCisgICAgICAgICAgICAgICAgICcoaWYgaXQgaXMgYSBwYWNrYWdlKS4gQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgbmFtZXMuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1kaXInLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSAnCisgICAgICAgICAgICAgICAgICcobXVsdGlwbGUgZGlyZWN0b3JpZXMgY2FuIGJlIGpvaW5lZCBieSBvcy5wYXRoc2VwKS4nKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZmlsZW5hbWUnLCBuYXJncz0nPycsCisgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHJ1biBhcyBtYWluIHByb2dyYW0nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2FyZ3VtZW50cycsIG5hcmdzPWFyZ3BhcnNlLlJFTUFJTkRFUiwKKyAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyB0byB0aGUgcHJvZ3JhbScpCisKKyAgICBvcHRzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgb3B0cy5pZ25vcmVfZGlyOgorICAgICAgICByZWxfcGF0aCA9ICdsaWInLCAncHl0aG9uezAubWFqb3J9LnswLm1pbm9yfScuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pCisgICAgICAgIF9wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAqcmVsX3BhdGgpCisgICAgICAgIF9leGVjX3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgKnJlbF9wYXRoKQorCisgICAgZGVmIHBhcnNlX2lnbm9yZV9kaXIocyk6CisgICAgICAgIHMgPSBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5leHBhbmR2YXJzKHMpKQorICAgICAgICBzID0gcy5yZXBsYWNlKCckcHJlZml4JywgX3ByZWZpeCkucmVwbGFjZSgnJGV4ZWNfcHJlZml4JywgX2V4ZWNfcHJlZml4KQorICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChzKQorCisgICAgb3B0cy5pZ25vcmVfbW9kdWxlID0gW21vZC5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG9wdHMuaWdub3JlX21vZHVsZSBmb3IgbW9kIGluIGkuc3BsaXQoJywnKV0KKyAgICBvcHRzLmlnbm9yZV9kaXIgPSBbcGFyc2VfaWdub3JlX2RpcihzKQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvcHRzLmlnbm9yZV9kaXIgZm9yIHMgaW4gaS5zcGxpdChvcy5wYXRoc2VwKV0KKworICAgIGlmIG9wdHMucmVwb3J0OgorICAgICAgICBpZiBub3Qgb3B0cy5maWxlOgorICAgICAgICAgICAgcGFyc2VyLmVycm9yKCctci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnKQorICAgICAgICByZXN1bHRzID0gQ292ZXJhZ2VSZXN1bHRzKGluZmlsZT1vcHRzLmZpbGUsIG91dGZpbGU9b3B0cy5maWxlKQorICAgICAgICByZXR1cm4gcmVzdWx0cy53cml0ZV9yZXN1bHRzKG9wdHMubWlzc2luZywgb3B0cy5zdW1tYXJ5LCBvcHRzLmNvdmVyZGlyKQorCisgICAgaWYgbm90IGFueShbb3B0cy50cmFjZSwgb3B0cy5jb3VudCwgb3B0cy5saXN0ZnVuY3MsIG9wdHMudHJhY2tjYWxsc10pOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ211c3Qgc3BlY2lmeSBvbmUgb2YgLS10cmFjZSwgLS1jb3VudCwgLS1yZXBvcnQsICcKKyAgICAgICAgICAgICAgICAgICAgICctLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJykKKworICAgIGlmIG9wdHMubGlzdGZ1bmNzIGFuZCAob3B0cy5jb3VudCBvciBvcHRzLnRyYWNlKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KScpCisKKyAgICBpZiBvcHRzLnN1bW1hcnkgYW5kIG5vdCBvcHRzLmNvdW50OgorICAgICAgICBwYXJzZXIuZXJyb3IoJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcpCisKKyAgICBpZiBvcHRzLmZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgIHBhcnNlci5lcnJvcignZmlsZW5hbWUgaXMgbWlzc2luZzogcmVxdWlyZWQgd2l0aCB0aGUgbWFpbiBvcHRpb25zJykKKworICAgIHN5cy5hcmd2ID0gb3B0cy5maWxlbmFtZSwgKm9wdHMuYXJndW1lbnRzCisgICAgc3lzLnBhdGhbMF0gPSBvcy5wYXRoLmRpcm5hbWUob3B0cy5maWxlbmFtZSkKKworICAgIHQgPSBUcmFjZShvcHRzLmNvdW50LCBvcHRzLnRyYWNlLCBjb3VudGZ1bmNzPW9wdHMubGlzdGZ1bmNzLAorICAgICAgICAgICAgICBjb3VudGNhbGxlcnM9b3B0cy50cmFja2NhbGxzLCBpZ25vcmVtb2RzPW9wdHMuaWdub3JlX21vZHVsZSwKKyAgICAgICAgICAgICAgaWdub3JlZGlycz1vcHRzLmlnbm9yZV9kaXIsIGluZmlsZT1vcHRzLmZpbGUsCisgICAgICAgICAgICAgIG91dGZpbGU9b3B0cy5maWxlLCB0aW1pbmc9b3B0cy50aW1pbmcpCiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBwcm9nX2FyZ3YgPSBnZXRvcHQuZ2V0b3B0KGFyZ3ZbMTpdLCAidGNyUmY6ZDptc0M6bFRnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImhlbHAiLCAidmVyc2lvbiIsICJ0cmFjZSIsICJjb3VudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBvcnQiLCAibm8tcmVwb3J0IiwgInN1bW1hcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0iLCAibWlzc2luZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZ25vcmUtbW9kdWxlPSIsICJpZ25vcmUtZGlyPSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3ZlcmRpcj0iLCAibGlzdGZ1bmNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNrY2FsbHMiLCAidGltaW5nIl0pCisgICAgICAgIHdpdGggb3BlbihvcHRzLmZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgb3B0cy5maWxlbmFtZSwgJ2V4ZWMnKQorICAgICAgICAjIHRyeSB0byBlbXVsYXRlIF9fbWFpbl9fIG5hbWVzcGFjZSBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGdsb2JzID0geworICAgICAgICAgICAgJ19fZmlsZV9fJzogb3B0cy5maWxlbmFtZSwKKyAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCisgICAgICAgICAgICAnX19wYWNrYWdlX18nOiBOb25lLAorICAgICAgICAgICAgJ19fY2FjaGVkX18nOiBOb25lLAorICAgICAgICB9CisgICAgICAgIHQucnVuY3R4KGNvZGUsIGdsb2JzLCBnbG9icykKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIHN5cy5leGl0KCJDYW5ub3QgcnVuIGZpbGUgJXIgYmVjYXVzZTogJXMiICUgKHN5cy5hcmd2WzBdLCBlcnIpKQorICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgorICAgICAgICBwYXNzCiAKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKHN5cy5hcmd2WzBdLCBtc2cpKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIHN5cy5hcmd2WzBdKQotICAgICAgICBzeXMuZXhpdCgxKQorICAgIHJlc3VsdHMgPSB0LnJlc3VsdHMoKQogCi0gICAgdHJhY2UgPSAwCi0gICAgY291bnQgPSAwCi0gICAgcmVwb3J0ID0gMAotICAgIG5vX3JlcG9ydCA9IDAKLSAgICBjb3VudHNfZmlsZSA9IE5vbmUKLSAgICBtaXNzaW5nID0gMAotICAgIGlnbm9yZV9tb2R1bGVzID0gW10KLSAgICBpZ25vcmVfZGlycyA9IFtdCi0gICAgY292ZXJkaXIgPSBOb25lCi0gICAgc3VtbWFyeSA9IDAKLSAgICBsaXN0ZnVuY3MgPSBGYWxzZQotICAgIGNvdW50Y2FsbGVycyA9IEZhbHNlCi0gICAgdGltaW5nID0gRmFsc2UKLQotICAgIGZvciBvcHQsIHZhbCBpbiBvcHRzOgotICAgICAgICBpZiBvcHQgPT0gIi0taGVscCI6Ci0gICAgICAgICAgICBfdXNhZ2Uoc3lzLnN0ZG91dCkKLSAgICAgICAgICAgIHN5cy5leGl0KDApCi0KLSAgICAgICAgaWYgb3B0ID09ICItLXZlcnNpb24iOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgidHJhY2UgMi4wXG4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgICAgICBpZiBvcHQgPT0gIi1UIiBvciBvcHQgPT0gIi0tdHJhY2tjYWxscyI6Ci0gICAgICAgICAgICBjb3VudGNhbGxlcnMgPSBUcnVlCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWwiIG9yIG9wdCA9PSAiLS1saXN0ZnVuY3MiOgotICAgICAgICAgICAgbGlzdGZ1bmNzID0gVHJ1ZQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1nIiBvciBvcHQgPT0gIi0tdGltaW5nIjoKLSAgICAgICAgICAgIHRpbWluZyA9IFRydWUKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItdCIgb3Igb3B0ID09ICItLXRyYWNlIjoKLSAgICAgICAgICAgIHRyYWNlID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1jIiBvciBvcHQgPT0gIi0tY291bnQiOgotICAgICAgICAgICAgY291bnQgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXIiIG9yIG9wdCA9PSAiLS1yZXBvcnQiOgotICAgICAgICAgICAgcmVwb3J0ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1SIiBvciBvcHQgPT0gIi0tbm8tcmVwb3J0IjoKLSAgICAgICAgICAgIG5vX3JlcG9ydCA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItZiIgb3Igb3B0ID09ICItLWZpbGUiOgotICAgICAgICAgICAgY291bnRzX2ZpbGUgPSB2YWwKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItbSIgb3Igb3B0ID09ICItLW1pc3NpbmciOgotICAgICAgICAgICAgbWlzc2luZyA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItQyIgb3Igb3B0ID09ICItLWNvdmVyZGlyIjoKLSAgICAgICAgICAgIGNvdmVyZGlyID0gdmFsCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXMiIG9yIG9wdCA9PSAiLS1zdW1tYXJ5IjoKLSAgICAgICAgICAgIHN1bW1hcnkgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLS1pZ25vcmUtbW9kdWxlIjoKLSAgICAgICAgICAgIGZvciBtb2QgaW4gdmFsLnNwbGl0KCIsIik6Ci0gICAgICAgICAgICAgICAgaWdub3JlX21vZHVsZXMuYXBwZW5kKG1vZC5zdHJpcCgpKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi0taWdub3JlLWRpciI6Ci0gICAgICAgICAgICBmb3IgcyBpbiB2YWwuc3BsaXQob3MucGF0aHNlcCk6Ci0gICAgICAgICAgICAgICAgcyA9IG9zLnBhdGguZXhwYW5kdmFycyhzKQotICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKLQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRleGVjX3ByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQotICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBhc3NlcnQgMCwgIlNob3VsZCBuZXZlciBnZXQgaGVyZSIKLQotICAgIGlmIGxpc3RmdW5jcyBhbmQgKGNvdW50IG9yIHRyYWNlKToKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KSIpCi0KLSAgICBpZiBub3QgKGNvdW50IG9yIHRyYWNlIG9yIHJlcG9ydCBvciBsaXN0ZnVuY3Mgb3IgY291bnRjYWxsZXJzKToKLSAgICAgICAgX2Vycl9leGl0KCJtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAiCi0gICAgICAgICAgICAgICAgICAiLS1saXN0ZnVuY3MsIG9yIC0tdHJhY2tjYWxscyIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vX3JlcG9ydDoKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tcmVwb3J0IGFuZCAtLW5vLXJlcG9ydCIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vdCBjb3VudHNfZmlsZToKLSAgICAgICAgX2Vycl9leGl0KCItLXJlcG9ydCByZXF1aXJlcyBhIC0tZmlsZSIpCi0KLSAgICBpZiBub19yZXBvcnQgYW5kIGxlbihwcm9nX2FyZ3YpID09IDA6Ci0gICAgICAgIF9lcnJfZXhpdCgibWlzc2luZyBuYW1lIG9mIGZpbGUgdG8gcnVuIikKLQotICAgICMgZXZlcnl0aGluZyBpcyByZWFkeQotICAgIGlmIHJlcG9ydDoKLSAgICAgICAgcmVzdWx0cyA9IENvdmVyYWdlUmVzdWx0cyhpbmZpbGU9Y291bnRzX2ZpbGUsIG91dGZpbGU9Y291bnRzX2ZpbGUpCi0gICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotICAgIGVsc2U6Ci0gICAgICAgIHN5cy5hcmd2ID0gcHJvZ19hcmd2Ci0gICAgICAgIHByb2duYW1lID0gcHJvZ19hcmd2WzBdCi0gICAgICAgIHN5cy5wYXRoWzBdID0gb3MucGF0aC5zcGxpdChwcm9nbmFtZSlbMF0KLQotICAgICAgICB0ID0gVHJhY2UoY291bnQsIHRyYWNlLCBjb3VudGZ1bmNzPWxpc3RmdW5jcywKLSAgICAgICAgICAgICAgICAgIGNvdW50Y2FsbGVycz1jb3VudGNhbGxlcnMsIGlnbm9yZW1vZHM9aWdub3JlX21vZHVsZXMsCi0gICAgICAgICAgICAgICAgICBpZ25vcmVkaXJzPWlnbm9yZV9kaXJzLCBpbmZpbGU9Y291bnRzX2ZpbGUsCi0gICAgICAgICAgICAgICAgICBvdXRmaWxlPWNvdW50c19maWxlLCB0aW1pbmc9dGltaW5nKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocHJvZ25hbWUpIGFzIGZwOgotICAgICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgcHJvZ25hbWUsICdleGVjJykKLSAgICAgICAgICAgICMgdHJ5IHRvIGVtdWxhdGUgX19tYWluX18gbmFtZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUKLSAgICAgICAgICAgIGdsb2JzID0gewotICAgICAgICAgICAgICAgICdfX2ZpbGVfXyc6IHByb2duYW1lLAotICAgICAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCi0gICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogTm9uZSwKLSAgICAgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0LnJ1bmN0eChjb2RlLCBnbG9icywgZ2xvYnMpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIF9lcnJfZXhpdCgiQ2Fubm90IHJ1biBmaWxlICVyIGJlY2F1c2U6ICVzIiAlIChzeXMuYXJndlswXSwgZXJyKSkKLSAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmVzdWx0cyA9IHQucmVzdWx0cygpCi0KLSAgICAgICAgaWYgbm90IG5vX3JlcG9ydDoKLSAgICAgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotCi0jICBEZXByZWNhdGVkIEFQSQotZGVmIHVzYWdlKG91dGZpbGUpOgotICAgIF93YXJuKCJUaGUgdHJhY2UudXNhZ2UoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICBfdXNhZ2Uob3V0ZmlsZSkKLQotY2xhc3MgSWdub3JlKF9JZ25vcmUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGVzPU5vbmUsIGRpcnM9Tm9uZSk6Ci0gICAgICAgIF93YXJuKCJUaGUgY2xhc3MgdHJhY2UuSWdub3JlIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgX0lnbm9yZS5fX2luaXRfXyhzZWxmLCBtb2R1bGVzLCBkaXJzKQotCi1kZWYgbW9kbmFtZShwYXRoKToKLSAgICBfd2FybigiVGhlIHRyYWNlLm1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX21vZG5hbWUocGF0aCkKLQotZGVmIGZ1bGxtb2RuYW1lKHBhdGgpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZnVsbG1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2Z1bGxtb2RuYW1lKHBhdGgpCi0KLWRlZiBmaW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXNfZnJvbV9jb2RlKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKQotCi1kZWYgZmluZF9saW5lcyhjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfbGluZXMoY29kZSwgc3RycykKLQotZGVmIGZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5maW5kX3N0cmluZ3MoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSkKLQotZGVmIGZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZpbGVuYW1lKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmaWxlbmFtZSkKKyAgICBpZiBub3Qgb3B0cy5ub19yZXBvcnQ6CisgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhvcHRzLm1pc3NpbmcsIG9wdHMuc3VtbWFyeSwgb3B0cy5jb3ZlcmRpcikKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2ViYWNrLnB5IGIvTGliL3RyYWNlYmFjay5weQppbmRleCBjNWZkNjE3Li4wOWJkYTcxIDEwMDY0NAotLS0gYS9MaWIvdHJhY2ViYWNrLnB5CisrKyBiL0xpYi90cmFjZWJhY2sucHkKQEAgLTM4NSw5ICszODUsMzAgQEAKICAgICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCiAgICAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAogICAgICAgICBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMgd2l0aCBzb3VyY2UgdGV4dCBsaW5lcy4KKworICAgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgICAgcmVwZXRpdGlvbnMgYXJlIHNob3duLCBmb2xsb3dlZCBieSBhIHN1bW1hcnkgbGluZSBzdGF0aW5nIHRoZSBleGFjdAorICAgICAgICBudW1iZXIgb2YgZnVydGhlciByZXBldGl0aW9ucy4KICAgICAgICAgIiIiCiAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGxhc3RfZmlsZSA9IE5vbmUKKyAgICAgICAgbGFzdF9saW5lID0gTm9uZQorICAgICAgICBsYXN0X25hbWUgPSBOb25lCisgICAgICAgIGNvdW50ID0gMAogICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIChsYXN0X2ZpbGUgaXMgbm90IE5vbmUgYW5kIGxhc3RfZmlsZSA9PSBmcmFtZS5maWxlbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBsYXN0X2xpbmUgaXMgbm90IE5vbmUgYW5kIGxhc3RfbGluZSA9PSBmcmFtZS5saW5lbm8gYW5kCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lIGlzIG5vdCBOb25lIGFuZCBsYXN0X25hbWUgPT0gZnJhbWUubmFtZSk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZicgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudC0zfSBtb3JlIHRpbWVzXVxuJykKKyAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSBmcmFtZS5maWxlbmFtZQorICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IGZyYW1lLmxpbmVubworICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IGZyYW1lLm5hbWUKKyAgICAgICAgICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgICAgIGlmIGNvdW50ID49IDM6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHJvdyA9IFtdCiAgICAgICAgICAgICByb3cuYXBwZW5kKCcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KAogICAgICAgICAgICAgICAgIGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8sIGZyYW1lLm5hbWUpKQpAQCAtMzk3LDYgKzQxOCw4IEBACiAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChmcmFtZS5sb2NhbHMuaXRlbXMoKSk6CiAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7bmFtZX0gPSB7dmFsdWV9XG4nLmZvcm1hdChuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJycuam9pbihyb3cpKQorICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnQtM30gbW9yZSB0aW1lc11cbicpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogCkBAIC00ODcsMTAgKzUxMCw5IEBACiAgICAgICAgICAgICBzZWxmLl9sb2FkX2xpbmVzKCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2V4Y2VwdGlvbihzZWxmLCBleGMsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGZyb21fZXhjZXB0aW9uKGNscywgZXhjLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJDcmVhdGUgYSBUcmFjZWJhY2tFeGNlcHRpb24gZnJvbSBhbiBleGNlcHRpb24uIiIiCi0gICAgICAgIHJldHVybiBUcmFjZWJhY2tFeGNlcHRpb24oCi0gICAgICAgICAgICB0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNscyh0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBfbG9hZF9saW5lcyhzZWxmKToKICAgICAgICAgIiIiUHJpdmF0ZSBBUEkuIGZvcmNlIGFsbCBsaW5lcyBpbiB0aGUgc3RhY2sgdG8gYmUgbG9hZGVkLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlbWFsbG9jLnB5IGIvTGliL3RyYWNlbWFsbG9jLnB5CmluZGV4IDYyODhkYTguLjc1YjM5MTggMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdHJhY2VtYWxsb2MucHkKQEAgLTI0NCwxNyArMjQ0LDIxIEBACiAgICAgX19zbG90c19fID0gKCJfdHJhY2UiLCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFjZSk6Ci0gICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKHNpemUsIHRyYWNlYmFjayksIHNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IKLSAgICAgICAgIyBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgdHJhY2ViYWNrIHR1cGxlCisgICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKGRvbWFpbjogaW50LCBzaXplOiBpbnQsIHRyYWNlYmFjazogdHVwbGUpLgorICAgICAgICAjIFNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIHRyYWNlYmFjayB0dXBsZS4KICAgICAgICAgc2VsZi5fdHJhY2UgPSB0cmFjZQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHNpemUoc2VsZik6CisgICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzBdCiAKICAgICBAcHJvcGVydHkKKyAgICBkZWYgc2l6ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzFdCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgdHJhY2ViYWNrKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzFdKQorICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzJdKQogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiAoc2VsZi5fdHJhY2UgPT0gb3RoZXIuX3RyYWNlKQpAQCAtMjY2LDggKzI3MCw4IEBACiAgICAgICAgIHJldHVybiAiJXM6ICVzIiAlIChzZWxmLnRyYWNlYmFjaywgX2Zvcm1hdF9zaXplKHNlbGYuc2l6ZSwgRmFsc2UpKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKCI8VHJhY2Ugc2l6ZT0lcywgdHJhY2ViYWNrPSVyPiIKLSAgICAgICAgICAgICAgICAlIChfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKKyAgICAgICAgcmV0dXJuICgiPFRyYWNlIGRvbWFpbj0lcyBzaXplPSVzLCB0cmFjZWJhY2s9JXI+IgorICAgICAgICAgICAgICAgICUgKHNlbGYuZG9tYWluLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKIAogCiBjbGFzcyBfVHJhY2VzKFNlcXVlbmNlKToKQEAgLTMwMiwxOSArMzA2LDI5IEBACiAgICAgcmV0dXJuIGZpbGVuYW1lCiAKIAotY2xhc3MgRmlsdGVyOgorY2xhc3MgQmFzZUZpbHRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlKToKKyAgICAgICAgc2VsZi5pbmNsdXNpdmUgPSBpbmNsdXNpdmUKKworICAgIGRlZiBfbWF0Y2goc2VsZiwgdHJhY2UpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKworY2xhc3MgRmlsdGVyKEJhc2VGaWx0ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUsIGZpbGVuYW1lX3BhdHRlcm4sCi0gICAgICAgICAgICAgICAgIGxpbmVubz1Ob25lLCBhbGxfZnJhbWVzPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgbGluZW5vPU5vbmUsIGFsbF9mcmFtZXM9RmFsc2UsIGRvbWFpbj1Ob25lKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCiAgICAgICAgIHNlbGYuaW5jbHVzaXZlID0gaW5jbHVzaXZlCiAgICAgICAgIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4gPSBfbm9ybWFsaXplX2ZpbGVuYW1lKGZpbGVuYW1lX3BhdHRlcm4pCiAgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgIHNlbGYuYWxsX2ZyYW1lcyA9IGFsbF9mcmFtZXMKKyAgICAgICAgc2VsZi5kb21haW4gPSBkb21haW4KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBmaWxlbmFtZV9wYXR0ZXJuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZW5hbWVfcGF0dGVybgogCi0gICAgZGVmIF9fbWF0Y2hfZnJhbWUoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CisgICAgZGVmIF9tYXRjaF9mcmFtZV9pbXBsKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgICBmaWxlbmFtZSA9IF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgIGlmIG5vdCBmbm1hdGNoLmZubWF0Y2goZmlsZW5hbWUsIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4pOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0zMjQsMTEgKzMzOCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIChsaW5lbm8gPT0gc2VsZi5saW5lbm8pCiAKICAgICBkZWYgX21hdGNoX2ZyYW1lKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgotICAgICAgICByZXR1cm4gc2VsZi5fX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykgXiAobm90IHNlbGYuaW5jbHVzaXZlKQogCiAgICAgZGVmIF9tYXRjaF90cmFjZWJhY2soc2VsZiwgdHJhY2ViYWNrKToKICAgICAgICAgaWYgc2VsZi5hbGxfZnJhbWVzOgotICAgICAgICAgICAgaWYgYW55KHNlbGYuX19tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQorICAgICAgICAgICAgaWYgYW55KHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykKICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUsIGxpbmVubyBpbiB0cmFjZWJhY2spOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmluY2x1c2l2ZQogICAgICAgICAgICAgZWxzZToKQEAgLTMzNyw2ICszNTEsMzAgQEAKICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8gPSB0cmFjZWJhY2tbMF0KICAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQogCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmVzID0gc2VsZi5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgaWYgc2VsZi5kb21haW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLmluY2x1c2l2ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIGFuZCAoZG9tYWluID09IHNlbGYuZG9tYWluKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIG9yIChkb21haW4gIT0gc2VsZi5kb21haW4pCisgICAgICAgIHJldHVybiByZXMKKworCitjbGFzcyBEb21haW5GaWx0ZXIoQmFzZUZpbHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluY2x1c2l2ZSwgZG9tYWluKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCisgICAgICAgIHNlbGYuX2RvbWFpbiA9IGRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbWFpbgorCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmV0dXJuIChkb21haW4gPT0gc2VsZi5kb21haW4pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKwogCiBjbGFzcyBTbmFwc2hvdDoKICAgICAiIiIKQEAgLTM2NSwxMyArNDAzLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gcGlja2xlLmxvYWQoZnApCiAKICAgICBkZWYgX2ZpbHRlcl90cmFjZShzZWxmLCBpbmNsdWRlX2ZpbHRlcnMsIGV4Y2x1ZGVfZmlsdGVycywgdHJhY2UpOgotICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZVsxXQogICAgICAgICBpZiBpbmNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBub3QgYW55KHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIG5vdCBhbnkodHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRyYWNlX2ZpbHRlciBpbiBpbmNsdWRlX2ZpbHRlcnMpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBleGNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBhbnkobm90IHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIGFueShub3QgdHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICBmb3IgdHJhY2VfZmlsdGVyIGluIGV4Y2x1ZGVfZmlsdGVycyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zNzksOCArNDE2LDggQEAKICAgICBkZWYgZmlsdGVyX3RyYWNlcyhzZWxmLCBmaWx0ZXJzKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgZmlsdGVyZWQgdHJhY2VzIHNlcXVlbmNlLCBmaWx0ZXJzCi0gICAgICAgIGlzIGEgbGlzdCBvZiBGaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYQotICAgICAgICBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KKyAgICAgICAgaXMgYSBsaXN0IG9mIEZpbHRlciBvciBEb21haW5GaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eQorICAgICAgICBsaXN0LCByZXR1cm4gYSBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbHRlcnMsIEl0ZXJhYmxlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsdGVycyBtdXN0IGJlIGEgbGlzdCBvZiBmaWx0ZXJzLCBub3QgJXMiCkBAIC00MTIsNyArNDQ5LDcgQEAKICAgICAgICAgdHJhY2ViYWNrcyA9IHt9CiAgICAgICAgIGlmIG5vdCBjdW11bGF0aXZlOgogICAgICAgICAgICAgZm9yIHRyYWNlIGluIHNlbGYudHJhY2VzLl90cmFjZXM6Ci0gICAgICAgICAgICAgICAgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW3RyYWNlX3RyYWNlYmFja10KICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC00MzMsNyArNDcwLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzCiAgICAgICAgICAgICBmb3IgdHJhY2UgaW4gc2VsZi50cmFjZXMuX3RyYWNlczoKLSAgICAgICAgICAgICAgICBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKICAgICAgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdHJhY2VfdHJhY2ViYWNrOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW2ZyYW1lXQpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQppbmRleCA3MTFkMGFiLi4wYTU4MzMyIDEwMDY0NAotLS0gYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQorKysgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQpAQCAtODksMTMgKzg5LDEyIEBACiBpbXBvcnQgb3MKIAogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKLWZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi1mcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfdGV4dAorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZworZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKK2Zyb20gaWRsZWxpYi50ZXh0dmlldyBpbXBvcnQgdmlld190ZXh0CiBmcm9tIHR1cnRsZWRlbW8gaW1wb3J0IF9fZG9jX18gYXMgYWJvdXRfdHVydGxlZGVtbwogCiBpbXBvcnQgdHVydGxlCi1pbXBvcnQgdGltZQogCiBkZW1vX2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQogZGFyd2luID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5IGIvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weQppbmRleCA2NGIxZDdkLi5iM2IwOTViIDEwMDc1NQotLS0gYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkKQEAgLTIyLDcgKzIyLDYgQEAKIG1vZGUgYXMgZmFzdCBhcyBwb3NzaWJsZS4KICIiIgogCi1pbXBvcnQgbWF0aAogZnJvbSB0dXJ0bGUgaW1wb3J0IFR1cnRsZSwgbWFpbmxvb3AKIGZyb20gdGltZSBpbXBvcnQgY2xvY2sKIApkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5IGIvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5CmluZGV4IDI2YWJmZGIuLjAyMWZmOTkgMTAwNzU1Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weQorKysgYi9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkKQEAgLTE4LDcgKzE4LDYgQEAKIAogIiIiCiBmcm9tIHR1cnRsZSBpbXBvcnQgU2hhcGUsIFR1cnRsZSwgbWFpbmxvb3AsIFZlYzJEIGFzIFZlYwotZnJvbSB0aW1lIGltcG9ydCBzbGVlcAogCiBHID0gOAogCmRpZmYgLS1naXQgYS9MaWIvdHlwZXMucHkgYi9MaWIvdHlwZXMucHkKaW5kZXggNDg4OTFjZC4uZDhkODQ3MCAxMDA2NDQKLS0tIGEvTGliL3R5cGVzLnB5CisrKyBiL0xpYi90eXBlcy5weQpAQCAtMjQsNiArMjQsMTEgQEAKIENvcm91dGluZVR5cGUgPSB0eXBlKF9jKQogX2MuY2xvc2UoKSAgIyBQcmV2ZW50IFJlc291cmNlV2FybmluZwogCithc3luYyBkZWYgX2FnKCk6CisgICAgeWllbGQKK19hZyA9IF9hZygpCitBc3luY0dlbmVyYXRvclR5cGUgPSB0eXBlKF9hZykKKwogY2xhc3MgX0M6CiAgICAgZGVmIF9tKHNlbGYpOiBwYXNzCiBNZXRob2RUeXBlID0gdHlwZShfQygpLl9tKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21vY2sucHkgYi9MaWIvdW5pdHRlc3QvbW9jay5weQppbmRleCA2Njk4OTBhLi5mMTM0OTE5IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtNjAsMTggKzYwLDYgQEAKICAgICApCiAKIAotY2xhc3MgX3Nsb3R0ZWQob2JqZWN0KToKLSAgICBfX3Nsb3RzX18gPSBbJ2EnXQotCi0KLSMgRG8gbm90IHVzZSB0aGlzIHR1cGxlLiAgSXQgd2FzIG5ldmVyIGRvY3VtZW50ZWQgYXMgYSBwdWJsaWMgQVBJLgotIyBJdCB3aWxsIGJlIHJlbW92ZWQuICBJdCBoYXMgbm8gb2J2aW91cyBzaWducyBvZiB1c2VycyBvbiBnaXRodWIuCi1EZXNjcmlwdG9yVHlwZXMgPSAoCi0gICAgdHlwZShfc2xvdHRlZC5hKSwKLSAgICBwcm9wZXJ0eSwKLSkKLQotCiBkZWYgX2dldF9zaWduYXR1cmVfb2JqZWN0KGZ1bmMsIGFzX2luc3RhbmNlLCBlYXRfc2VsZik6CiAgICAgIiIiCiAgICAgR2l2ZW4gYW4gYXJiaXRyYXJ5LCBwb3NzaWJseSBjYWxsYWJsZSBvYmplY3QsIHRyeSB0byBjcmVhdGUgYSBzdWl0YWJsZQpAQCAtMjA1LDYgKzE5MywxMiBAQAogCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZSgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKmFyZ3MsICoqa3dhcmdzKQogICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpCiAgICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoKmFyZ3MsICoqa3dhcmdzKToKQEAgLTIzNSw2ICsyMjksOSBAQAogICAgIGZ1bmNvcHkuYXNzZXJ0X2hhc19jYWxscyA9IGFzc2VydF9oYXNfY2FsbHMKICAgICBmdW5jb3B5LmFzc2VydF9hbnlfY2FsbCA9IGFzc2VydF9hbnlfY2FsbAogICAgIGZ1bmNvcHkucmVzZXRfbW9jayA9IHJlc2V0X21vY2sKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWQgPSBhc3NlcnRfY2FsbGVkCisgICAgZnVuY29weS5hc3NlcnRfbm90X2NhbGxlZCA9IGFzc2VydF9ub3RfY2FsbGVkCisgICAgZnVuY29weS5hc3NlcnRfY2FsbGVkX29uY2UgPSBhc3NlcnRfY2FsbGVkX29uY2UKIAogICAgIG1vY2suX21vY2tfZGVsZWdhdGUgPSBmdW5jb3B5CiAKQEAgLTUyNSw3ICs1MjIsNyBAQAogICAgIHNpZGVfZWZmZWN0ID0gcHJvcGVydHkoX19nZXRfc2lkZV9lZmZlY3QsIF9fc2V0X3NpZGVfZWZmZWN0KQogCiAKLSAgICBkZWYgcmVzZXRfbW9jayhzZWxmLCB2aXNpdGVkPU5vbmUpOgorICAgIGRlZiByZXNldF9tb2NrKHNlbGYsICB2aXNpdGVkPU5vbmUsKiwgcmV0dXJuX3ZhbHVlPUZhbHNlLCBzaWRlX2VmZmVjdD1GYWxzZSk6CiAgICAgICAgICJSZXN0b3JlIHRoZSBtb2NrIG9iamVjdCB0byBpdHMgaW5pdGlhbCBzdGF0ZS4iCiAgICAgICAgIGlmIHZpc2l0ZWQgaXMgTm9uZToKICAgICAgICAgICAgIHZpc2l0ZWQgPSBbXQpAQCAtNTQwLDYgKzUzNywxMSBAQAogICAgICAgICBzZWxmLmNhbGxfYXJnc19saXN0ID0gX0NhbGxMaXN0KCkKICAgICAgICAgc2VsZi5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQogCisgICAgICAgIGlmIHJldHVybl92YWx1ZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlID0gREVGQVVMVAorICAgICAgICBpZiBzaWRlX2VmZmVjdDoKKyAgICAgICAgICAgIHNlbGYuX21vY2tfc2lkZV9lZmZlY3QgPSBOb25lCisKICAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYuX21vY2tfY2hpbGRyZW4udmFsdWVzKCk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBfU3BlY1N0YXRlKToKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtNzc0LDYgKzc3NiwyNCBAQAogICAgICAgICAgICAgICAgICAgIChzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snLCBzZWxmLmNhbGxfY291bnQpKQogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQogCisgICAgZGVmIGFzc2VydF9jYWxsZWQoX21vY2tfc2VsZik6CisgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgYXQgbGVhc3Qgb25jZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgc2VsZi5jYWxsX2NvdW50ID09IDA6CisgICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gaGF2ZSBiZWVuIGNhbGxlZC4iICUKKyAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQorCisgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZShfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBvbmx5IG9uY2UuCisgICAgICAgICIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBub3Qgc2VsZi5jYWxsX2NvdW50ID09IDE6CisgICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLiBDYWxsZWQgJXMgdGltZXMuIiAlCisgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKICAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KIApAQCAtODIyLDcgKzg0Miw3IEBACiAgICAgICAgICAgICBpZiBleHBlY3RlZCBub3QgaW4gYWxsX2NhbGxzOgogICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICAnQ2FsbHMgbm90IGZvdW5kLlxuRXhwZWN0ZWQ6ICVyXG4nCi0gICAgICAgICAgICAgICAgICAgICdBY3R1YWw6ICVyJyAlIChjYWxscywgc2VsZi5tb2NrX2NhbGxzKQorICAgICAgICAgICAgICAgICAgICAnQWN0dWFsOiAlcicgJSAoX0NhbGxMaXN0KGNhbGxzKSwgc2VsZi5tb2NrX2NhbGxzKQogICAgICAgICAgICAgICAgICkgZnJvbSBjYXVzZQogICAgICAgICAgICAgcmV0dXJuCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkgYi9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CmluZGV4IDIxMTIyNjIuLjJjNWVhNGEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQpAQCAtMTY3LDcgKzE2Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi53YXJuaW5ncyBpbiBbJ2RlZmF1bHQnLCAnYWx3YXlzJ106CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdtb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQbGVhc2UgdXNlIGFzc2VydFx3KyBpbnN0ZWFkLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1yJ1BsZWFzZSB1c2UgYXNzZXJ0XHcrIGluc3RlYWQuJykKICAgICAgICAgICAgIHN0YXJ0VGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgICAgICBzdGFydFRlc3RSdW4gPSBnZXRhdHRyKHJlc3VsdCwgJ3N0YXJ0VGVzdFJ1bicsIE5vbmUpCiAgICAgICAgICAgICBpZiBzdGFydFRlc3RSdW4gaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKaW5kZXggZTZlMmJjMi4uMWIwZTgzMyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgICAgICMgRXJyb3IgbWVzc2FnZXMgYXJlIG11bHRpbGluZSBzbyBub3QgdGVzdGluZyBvbiBmdWxsIG1lc3NhZ2UKICAgICAgICAgIyBhc3NlcnRUdXBsZUVxdWFsIGFuZCBhc3NlcnRMaXN0RXF1YWwgZGVsZWdhdGUgdG8gdGhpcyBtZXRob2QKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0U2VxdWVuY2VFcXVhbCcsIChbXSwgW05vbmVdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlwrIFxbTm9uZVxdJCIsICJeb29wcyQiLCByIlwrIFxbTm9uZVxdJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiXCsgXFtOb25lXF0kIiwgIl5vb3BzJCIsIHIiXCsgXFtOb25lXF0kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBcW05vbmVcXSA6IG9vcHMkIl0pCiAKICAgICBkZWYgdGVzdEFzc2VydFNldEVxdWFsKHNlbGYpOgpAQCAtMjUwLDIxICsyNTAsMjEgQEAKIAogICAgIGRlZiB0ZXN0QXNzZXJ0SW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydEluJywgKE5vbmUsIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsICJeb29wcyQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdIDogb29wcyQnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcideTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLCAiXm9vcHMkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdIDogb29wcyQnXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0Tm90SW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydE5vdEluJywgKE5vbmUsIFtOb25lXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywgIl5vb3BzJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSA6IG9vcHMkJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3InXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSA6IG9vcHMkJ10pCiAKICAgICBkZWYgdGVzdEFzc2VydERpY3RFcXVhbChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0RGljdEVxdWFsJywgKHt9LCB7J2tleSc6ICd2YWx1ZSd9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJcKyBceydrZXknOiAndmFsdWUnXH0kIiwgIl5vb3BzJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcKyBceydrZXknOiAndmFsdWUnXH0kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSA6IG9vcHMkIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9IDogb29wcyQiXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0KHNlbGYpOgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CmluZGV4IDRiOTc4ODIuLmIyZjljODggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CkBAIC0zOTAsNyArMzkwLDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ2FiYyAoKSAvLycpCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQogICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCkBAIC01MDIsNyArNTAyLDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ2FiYyAoKSAvLycsIHVuaXR0ZXN0KQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKICAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjICgpIC8vJyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpAQCAtODA5LDcgKzgwOSw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddKQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKICAgICAgICAgZXhwZWN0ZWQgPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjICgpIC8vIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsICBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKQEAgLTkyOCw3ICs5MjgsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydhYmMgKCkgLy8nXSwgdW5pdHRlc3QpCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQogICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgKCkgLy8nIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQppbmRleCBmNDczODc5Li4yMDU0MzFhIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKQEAgLTEsNSArMSwzIEBACi1pbXBvcnQgc3lzCi0KIGRlZiBpc19pbnN0YW5jZShvYmosIGtsYXNzKToKICAgICAiIiJWZXJzaW9uIG9mIGlzX2luc3RhbmNlIHRoYXQgZG9lc24ndCBhY2Nlc3MgX19jbGFzc19fIiIiCiAgICAgcmV0dXJuIGlzc3ViY2xhc3ModHlwZShvYmopLCBrbGFzcykKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CmluZGV4IGJiOWI5NTYuLjI0NTY5YjUgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGluc3BlY3QKIGltcG9ydCBzeXMKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgTWFnaWNNb2NrLCBfbWFnaWNzCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKaW5kZXggNWY4MmI4Mi4uYjA3YTdjYyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKQEAgLTEyMzksNiArMTIzOSwyNyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKICAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X25vdF9jYWxsZWQoKQogCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZChzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWQoKQorCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWQoKQorCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorICAgICAgICBtLmhlbGxvKCkKKyAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKwogICAgICNJc3N1ZTIxMjU2IHByaW50b3V0IG9mIGtleXdvcmQgYXJncyBzaG91bGQgYmUgaW4gZGV0ZXJtaW5pc3RpYyBvcmRlcgogICAgIGRlZiB0ZXN0X3NvcnRlZF9jYWxsX3NpZ25hdHVyZShzZWxmKToKICAgICAgICAgbSA9IE1vY2soKQpAQCAtMTI1Niw2ICsxMjc3LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMF0sIGMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMV0sIGkpCiAKKyAgICBkZWYgdGVzdF9yZXNldF9yZXR1cm5fc2lkZWVmZmVjdChzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHJldHVybl92YWx1ZT1UcnVlLCBzaWRlX2VmZmVjdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobS5yZXR1cm5fdmFsdWUsIE1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zaWRlX2VmZmVjdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0X3JldHVybihzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHJldHVybl92YWx1ZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobS5yZXR1cm5fdmFsdWUsIE1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobS5zaWRlX2VmZmVjdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0X3NpZGVlZmZlY3Qoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKHJldHVybl92YWx1ZT0xMCwgc2lkZV9lZmZlY3Q9WzIsM10pCisgICAgICAgIG0ucmVzZXRfbW9jayhzaWRlX2VmZmVjdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmV0dXJuX3ZhbHVlLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCiAgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlYyhzZWxmKToKICAgICAgICAgY2xhc3MgX09uZShvYmplY3QpOgogICAgICAgICAgICAgb25lID0gMQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CmluZGV4IGRmY2UzNjkuLmZlNGVjZWYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTEwLDkgKzEwLDkgQEAKIGZyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBTb21lQ2xhc3MsIGlzX2luc3RhbmNlCiAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAotICAgIE5vbkNhbGxhYmxlTW9jaywgQ2FsbGFibGVNaXhpbiwgcGF0Y2gsIHNlbnRpbmVsLAorICAgIE5vbkNhbGxhYmxlTW9jaywgQ2FsbGFibGVNaXhpbiwgc2VudGluZWwsCiAgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgcGF0Y2gsIF9wYXRjaCwKLSAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldCwgX3BhdGNoCisgICAgREVGQVVMVCwgY2FsbCwgX2dldF90YXJnZXQKICkKIAogCkBAIC05NjksOCArOTY5LDE0IEBACiAgICAgZGVmIHRlc3RfYXV0b3NwZWNfZnVuY3Rpb24oc2VsZik6CiAgICAgICAgIEBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIGF1dG9zcGVjPVRydWUpCiAgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X25vdF9jYWxsZWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF9vbmNlKQogICAgICAgICAgICAgZnVuY3Rpb24oMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBmdW5jdGlvbi5hc3NlcnRfbm90X2NhbGxlZCkKICAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZCgpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX29uY2UoKQogICAgICAgICAgICAgZnVuY3Rpb24oMiwgMykKICAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgyLCAzKQogCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3BhcnNlLnB5IGIvTGliL3VybGxpYi9wYXJzZS5weQppbmRleCA1NjZmYmY3Li45NTg3NjdhIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3BhcnNlLnB5CisrKyBiL0xpYi91cmxsaWIvcGFyc2UucHkKQEAgLTE1Nyw5ICsxNTcsOCBAQAogICAgICAgICBwb3J0ID0gc2VsZi5faG9zdGluZm9bMV0KICAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHBvcnQgPSBpbnQocG9ydCwgMTApCi0gICAgICAgICAgICAjIFJldHVybiBOb25lIG9uIGFuIGlsbGVnYWwgcG9ydAogICAgICAgICAgICAgaWYgbm90ICggMCA8PSBwb3J0IDw9IDY1NTM1KToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvcnQgb3V0IG9mIHJhbmdlIDAtNjU1MzUiKQogICAgICAgICByZXR1cm4gcG9ydAogCiAKQEAgLTIyNiw4ICsyMjUsNzEgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIAogX0RlZnJhZ1Jlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdEZWZyYWdSZXN1bHQnLCAndXJsIGZyYWdtZW50JykKLV9TcGxpdFJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdTcGxpdFJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcXVlcnkgZnJhZ21lbnQnKQotX1BhcnNlUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ1BhcnNlUmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBwYXJhbXMgcXVlcnkgZnJhZ21lbnQnKQorX1NwbGl0UmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoCisgICAgJ1NwbGl0UmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBxdWVyeSBmcmFnbWVudCcpCitfUGFyc2VSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgKKyAgICAnUGFyc2VSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHBhcmFtcyBxdWVyeSBmcmFnbWVudCcpCisKK19EZWZyYWdSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK0RlZnJhZ1Jlc3VsdCh1cmwsIGZyYWdtZW50KQorCitBIDItdHVwbGUgdGhhdCBjb250YWlucyB0aGUgdXJsIHdpdGhvdXQgZnJhZ21lbnQgaWRlbnRpZmllciBhbmQgdGhlIGZyYWdtZW50CitpZGVudGlmaWVyIGFzIGEgc2VwYXJhdGUgYXJndW1lbnQuCisiIiIKKworX0RlZnJhZ1Jlc3VsdEJhc2UudXJsLl9fZG9jX18gPSAiIiJUaGUgVVJMIHdpdGggbm8gZnJhZ21lbnQgaWRlbnRpZmllci4iIiIKKworX0RlZnJhZ1Jlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9ICIiIgorRnJhZ21lbnQgaWRlbnRpZmllciBzZXBhcmF0ZWQgZnJvbSBVUkwsIHRoYXQgYWxsb3dzIGluZGlyZWN0IGlkZW50aWZpY2F0aW9uIG9mIGEKK3NlY29uZGFyeSByZXNvdXJjZSBieSByZWZlcmVuY2UgdG8gYSBwcmltYXJ5IHJlc291cmNlIGFuZCBhZGRpdGlvbmFsIGlkZW50aWZ5aW5nCitpbmZvcm1hdGlvbi4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK1NwbGl0UmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBxdWVyeSwgZnJhZ21lbnQpCisKK0EgNS10dXBsZSB0aGF0IGNvbnRhaW5zIHRoZSBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiBhIFVSTC4gU2ltaWxhciB0bworUGFyc2VSZXN1bHQsIGJ1dCBkb2VzIG5vdCBzcGxpdCBwYXJhbXMuCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXyA9ICIiIlNwZWNpZmllcyBVUkwgc2NoZW1lIGZvciB0aGUgcmVxdWVzdC4iIiIKKworX1NwbGl0UmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXyA9ICIiIgorTmV0d29yayBsb2NhdGlvbiB3aGVyZSB0aGUgcmVxdWVzdCBpcyBtYWRlIHRvLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gIiIiCitUaGUgaGllcmFyY2hpY2FsIHBhdGgsIHN1Y2ggYXMgdGhlIHBhdGggdG8gYSBmaWxlIHRvIGRvd25sb2FkLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UucXVlcnkuX19kb2NfXyA9ICIiIgorVGhlIHF1ZXJ5IGNvbXBvbmVudCwgdGhhdCBjb250YWlucyBub24taGllcmFyY2hpY2FsIGRhdGEsIHRoYXQgYWxvbmcgd2l0aCBkYXRhCitpbiBwYXRoIGNvbXBvbmVudCwgaWRlbnRpZmllcyBhIHJlc291cmNlIGluIHRoZSBzY29wZSBvZiBVUkkncyBzY2hlbWUgYW5kCituZXR3b3JrIGxvY2F0aW9uLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9ICIiIgorRnJhZ21lbnQgaWRlbnRpZmllciwgdGhhdCBhbGxvd3MgaW5kaXJlY3QgaWRlbnRpZmljYXRpb24gb2YgYSBzZWNvbmRhcnkgcmVzb3VyY2UKK2J5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uCisiIiIKKworX1BhcnNlUmVzdWx0QmFzZS5fX2RvY19fID0gIiIiCitQYXJzZVJlc3VsdChzY2hlbWUsIG5ldGxvYywgcGF0aCwgcGFyYW1zLCAgcXVlcnksIGZyYWdtZW50KQorCitBIDYtdHVwbGUgdGhhdCBjb250YWlucyBjb21wb25lbnRzIG9mIGEgcGFyc2VkIFVSTC4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UubmV0bG9jLl9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5wYXRoLl9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UucGFyYW1zLl9fZG9jX18gPSAiIiIKK1BhcmFtZXRlcnMgZm9yIGxhc3QgcGF0aCBlbGVtZW50IHVzZWQgdG8gZGVyZWZlcmVuY2UgdGhlIFVSSSBpbiBvcmRlciB0byBwcm92aWRlCithY2Nlc3MgdG8gcGVyZm9ybSBzb21lIG9wZXJhdGlvbiBvbiB0aGUgcmVzb3VyY2UuCisiIiIKKworX1BhcnNlUmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18KKwogCiAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYWxpYXMgX05ldGxvY1Jlc3VsdE1peGluU3RyCiAjIFJlc3VsdEJhc2UgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRvY3VtZW50ZWQgQVBJLCBidXQgaXQgaXMKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQppbmRleCBhNGJmOTdkLi41ZjE1Yjc0IDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CkBAIC0xMzQsMTMgKzEzNCw3MyBAQAogXQogCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAotX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KK19fdmVyc2lvbl9fID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKIF9vcGVuZXIgPSBOb25lCiBkZWYgdXJsb3Blbih1cmwsIGRhdGE9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1GYWxzZSwgY29udGV4dD1Ob25lKToKKyAgICAnJydPcGVuIHRoZSBVUkwgdXJsLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgUmVxdWVzdCBvYmplY3QuCisKKyAgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gYmUgc2VudCB0bworICAgIHRoZSBzZXJ2ZXIsIG9yIE5vbmUgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIFNlZSBSZXF1ZXN0IGZvcgorICAgIGRldGFpbHMuCisKKyAgICB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcyBIVFRQLzEuMSBhbmQgaW5jbHVkZXMgYSAiQ29ubmVjdGlvbjpjbG9zZSIKKyAgICBoZWFkZXIgaW4gaXRzIEhUVFAgcmVxdWVzdHMuCisKKyAgICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yCisgICAgYmxvY2tpbmcgb3BlcmF0aW9ucyBsaWtlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZQorICAgIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZyB3aWxsIGJlIHVzZWQpLiBUaGlzIG9ubHkgd29ya3MgZm9yIEhUVFAsCisgICAgSFRUUFMgYW5kIEZUUCBjb25uZWN0aW9ucy4KKworICAgIElmICpjb250ZXh0KiBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSBzc2wuU1NMQ29udGV4dCBpbnN0YW5jZSBkZXNjcmliaW5nCisgICAgdGhlIHZhcmlvdXMgU1NMIG9wdGlvbnMuIFNlZSBIVFRQU0Nvbm5lY3Rpb24gZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFRoZSBvcHRpb25hbCAqY2FmaWxlKiBhbmQgKmNhcGF0aCogcGFyYW1ldGVycyBzcGVjaWZ5IGEgc2V0IG9mIHRydXN0ZWQgQ0EKKyAgICBjZXJ0aWZpY2F0ZXMgZm9yIEhUVFBTIHJlcXVlc3RzLiBjYWZpbGUgc2hvdWxkIHBvaW50IHRvIGEgc2luZ2xlIGZpbGUKKyAgICBjb250YWluaW5nIGEgYnVuZGxlIG9mIENBIGNlcnRpZmljYXRlcywgd2hlcmVhcyBjYXBhdGggc2hvdWxkIHBvaW50IHRvIGEKKyAgICBkaXJlY3Rvcnkgb2YgaGFzaGVkIGNlcnRpZmljYXRlIGZpbGVzLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbgorICAgIHNzbC5TU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucygpLgorCisgICAgVGhlICpjYWRlZmF1bHQqIHBhcmFtZXRlciBpcyBpZ25vcmVkLgorCisgICAgVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBhbiBvYmplY3Qgd2hpY2ggY2FuIHdvcmsgYXMgYSBjb250ZXh0CisgICAgbWFuYWdlciBhbmQgaGFzIG1ldGhvZHMgc3VjaCBhcworCisgICAgKiBnZXR1cmwoKSAtIHJldHVybiB0aGUgVVJMIG9mIHRoZSByZXNvdXJjZSByZXRyaWV2ZWQsIGNvbW1vbmx5IHVzZWQgdG8KKyAgICAgIGRldGVybWluZSBpZiBhIHJlZGlyZWN0IHdhcyBmb2xsb3dlZAorCisgICAgKiBpbmZvKCkgLSByZXR1cm4gdGhlIG1ldGEtaW5mb3JtYXRpb24gb2YgdGhlIHBhZ2UsIHN1Y2ggYXMgaGVhZGVycywgaW4gdGhlCisgICAgICBmb3JtIG9mIGFuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoKSBpbnN0YW5jZSAoc2VlIFF1aWNrIFJlZmVyZW5jZSB0bworICAgICAgSFRUUCBIZWFkZXJzKQorCisgICAgKiBnZXRjb2RlKCkgLSByZXR1cm4gdGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlLiAgUmFpc2VzIFVSTEVycm9yCisgICAgICBvbiBlcnJvcnMuCisKKyAgICBGb3IgSFRUUCBhbmQgSFRUUFMgVVJMcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlCisgICAgb2JqZWN0IHNsaWdodGx5IG1vZGlmaWVkLiBJbiBhZGRpdGlvbiB0byB0aGUgdGhyZWUgbmV3IG1ldGhvZHMgYWJvdmUsIHRoZQorICAgIG1zZyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlIHJlYXNvbiBhdHRyaWJ1dGUgLS0tCisgICAgdGhlIHJlYXNvbiBwaHJhc2UgcmV0dXJuZWQgYnkgdGhlIHNlcnZlciAtLS0gaW5zdGVhZCBvZiB0aGUgcmVzcG9uc2UKKyAgICBoZWFkZXJzIGFzIGl0IGlzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgSFRUUFJlc3BvbnNlLgorCisgICAgRm9yIEZUUCwgZmlsZSwgYW5kIGRhdGEgVVJMcyBhbmQgcmVxdWVzdHMgZXhwbGljaXRseSBoYW5kbGVkIGJ5IGxlZ2FjeQorICAgIFVSTG9wZW5lciBhbmQgRmFuY3lVUkxvcGVuZXIgY2xhc3NlcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEKKyAgICB1cmxsaWIucmVzcG9uc2UuYWRkaW5mb3VybCBvYmplY3QuCisKKyAgICBOb3RlIHRoYXQgTm9uZSBtYXkgYmUgcmV0dXJuZWQgaWYgbm8gaGFuZGxlciBoYW5kbGVzIHRoZSByZXF1ZXN0ICh0aG91Z2gKKyAgICB0aGUgZGVmYXVsdCBpbnN0YWxsZWQgZ2xvYmFsIE9wZW5lckRpcmVjdG9yIHVzZXMgVW5rbm93bkhhbmRsZXIgdG8gZW5zdXJlCisgICAgdGhpcyBuZXZlciBoYXBwZW5zKS4KKworICAgIEluIGFkZGl0aW9uLCBpZiBwcm94eSBzZXR0aW5ncyBhcmUgZGV0ZWN0ZWQgKGZvciBleGFtcGxlLCB3aGVuIGEgKl9wcm94eQorICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGxpa2UgaHR0cF9wcm94eSBpcyBzZXQpLCBQcm94eUhhbmRsZXIgaXMgZGVmYXVsdAorICAgIGluc3RhbGxlZCBhbmQgbWFrZXMgc3VyZSB0aGUgcmVxdWVzdHMgYXJlIGhhbmRsZWQgdGhyb3VnaCB0aGUgcHJveHkuCisKKyAgICAnJycKICAgICBnbG9iYWwgX29wZW5lcgogICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3Mud2FybigiY2FmaWxlLCBjcGF0aCBhbmQgY2FkZWZhdWx0IGFyZSBkZXByZWNhdGVkLCB1c2UgYSAiCisgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQuIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiWW91IGNhbid0IHBhc3MgYm90aCBjb250ZXh0IGFuZCBhbnkgb2YgY2FmaWxlLCBjYXBhdGgsIGFuZCAiCkBAIC0xMTcwLDYgKzEyMzAsMTEgQEAKICAgICBkZWYgc2V0X2h0dHBfZGVidWdsZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgIHNlbGYuX2RlYnVnbGV2ZWwgPSBsZXZlbAogCisgICAgZGVmIF9nZXRfY29udGVudF9sZW5ndGgoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHJldHVybiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLAorICAgICAgICAgICAgcmVxdWVzdC5nZXRfbWV0aG9kKCkpCisKICAgICBkZWYgZG9fcmVxdWVzdF8oc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGhvc3QgPSByZXF1ZXN0Lmhvc3QKICAgICAgICAgaWYgbm90IGhvc3Q6CkBAIC0xMTc4LDI0ICsxMjQzLDIyIEBACiAgICAgICAgIGlmIHJlcXVlc3QuZGF0YSBpcyBub3QgTm9uZTogICMgUE9TVAogICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3QuZGF0YQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgotICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzIG9yIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLiAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAiSXQgY2Fubm90IGJlIG9mIHR5cGUgc3RyLiIKKyAgICAgICAgICAgICAgICBtc2cgPSAiUE9TVCBkYXRhIHNob3VsZCBiZSBieXRlcywgYW4gaXRlcmFibGUgb2YgYnl0ZXMsICIgXAorICAgICAgICAgICAgICAgICAgICAgICJvciBhIGZpbGUgb2JqZWN0LiBJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LXR5cGUnKToKICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAogICAgICAgICAgICAgICAgICAgICAnQ29udGVudC10eXBlJywKICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpCi0gICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGRhdGEpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBjb2xsZWN0aW9ucy5JdGVyYWJsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb250ZW50LUxlbmd0aCBzaG91bGQgYmUgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciBpdGVyYWJsZSBkYXRhIG9mIHR5cGUgJXIgJXIiICUgKHR5cGUoZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpKQorICAgICAgICAgICAgaWYgKG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykKKyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykpOgorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gc2VsZi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKHJlcXVlc3QpCisgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJywgc3RyKGNvbnRlbnRfbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LWxlbmd0aCcsICclZCcgJSAobGVuKG12KSAqIG12Lml0ZW1zaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVHJhbnNmZXItZW5jb2RpbmcnLCAnY2h1bmtlZCcpCiAKICAgICAgICAgc2VsX2hvc3QgPSBob3N0CiAgICAgICAgIGlmIHJlcXVlc3QuaGFzX3Byb3h5KCk6CkBAIC0xMjUxLDcgKzEzMTQsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBoLnJlcXVlc3QocmVxLmdldF9tZXRob2QoKSwgcmVxLnNlbGVjdG9yLCByZXEuZGF0YSwgaGVhZGVycykKKyAgICAgICAgICAgICAgICBoLnJlcXVlc3QocmVxLmdldF9tZXRob2QoKSwgcmVxLnNlbGVjdG9yLCByZXEuZGF0YSwgaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9cmVxLmhhc19oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6ICMgdGltZW91dCBlcnJvcgogICAgICAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKGVycikKICAgICAgICAgICAgIHIgPSBoLmdldHJlc3BvbnNlKCkKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CmluZGV4IDhiNjlmZDkuLjlkYWI0YzEgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQpAQCAtMTAsNyArMTAsOSBAQAogICAgIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy9ub3JvYm90cy1yZmMudHh0CiAiIiIKIAotaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHVybGxpYi5wYXJzZQoraW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAKIF9fYWxsX18gPSBbIlJvYm90RmlsZVBhcnNlciJdCiAKQEAgLTEyMCwxMCArMTIyLDI5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5ydWxlbGluZXMuYXBwZW5kKFJ1bGVMaW5lKGxpbmVbMV0sIFRydWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICJjcmF3bC1kZWxheSI6CisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJlZm9yZSB0cnlpbmcgdG8gY29udmVydCB0byBpbnQgd2UgbmVlZCB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAjIHN1cmUgdGhhdCByb2JvdHMudHh0IGhhcyB2YWxpZCBzeW50YXggb3RoZXJ3aXNlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpbGwgY3Jhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVbMV0uc3RyaXAoKS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVsYXkgPSBpbnQobGluZVsxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMgorICAgICAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAicmVxdWVzdC1yYXRlIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcnMgPSBsaW5lWzFdLnNwbGl0KCcvJykKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYWxsIHZhbHVlcyBhcmUgc2FuZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihudW1iZXJzKSA9PSAyIGFuZCBudW1iZXJzWzBdLnN0cmlwKCkuaXNkaWdpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG51bWJlcnNbMV0uc3RyaXAoKS5pc2RpZ2l0KCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9yYXRlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgncmVxX3JhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdHMgc2Vjb25kcycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUgPSByZXFfcmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJlcV9yYXRlLnJlcXVlc3RzID0gaW50KG51bWJlcnNbMF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUuc2Vjb25kcyA9IGludChudW1iZXJzWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCiAgICAgICAgIGlmIHN0YXRlID09IDI6CiAgICAgICAgICAgICBzZWxmLl9hZGRfZW50cnkoZW50cnkpCiAKLQogICAgIGRlZiBjYW5fZmV0Y2goc2VsZiwgdXNlcmFnZW50LCB1cmwpOgogICAgICAgICAiIiJ1c2luZyB0aGUgcGFyc2VkIHJvYm90cy50eHQgZGVjaWRlIGlmIHVzZXJhZ2VudCBjYW4gZmV0Y2ggdXJsIiIiCiAgICAgICAgIGlmIHNlbGYuZGlzYWxsb3dfYWxsOgpAQCAtMTUzLDYgKzE3NCwyMiBAQAogICAgICAgICAjIGFnZW50IG5vdCBmb3VuZCA9PT4gYWNjZXNzIGdyYW50ZWQKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBjcmF3bF9kZWxheShzZWxmLCB1c2VyYWdlbnQpOgorICAgICAgICBpZiBub3Qgc2VsZi5tdGltZSgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllczoKKyAgICAgICAgICAgIGlmIGVudHJ5LmFwcGxpZXNfdG8odXNlcmFnZW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuZGVsYXkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5kZWxheQorCisgICAgZGVmIHJlcXVlc3RfcmF0ZShzZWxmLCB1c2VyYWdlbnQpOgorICAgICAgICBpZiBub3Qgc2VsZi5tdGltZSgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllczoKKyAgICAgICAgICAgIGlmIGVudHJ5LmFwcGxpZXNfdG8odXNlcmFnZW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkucmVxX3JhdGUKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5yZXFfcmF0ZQorCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnJy5qb2luKFtzdHIoZW50cnkpICsgIlxuIiBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzXSkKIApAQCAtMTgwLDYgKzIxNyw4IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLnVzZXJhZ2VudHMgPSBbXQogICAgICAgICBzZWxmLnJ1bGVsaW5lcyA9IFtdCisgICAgICAgIHNlbGYuZGVsYXkgPSBOb25lCisgICAgICAgIHNlbGYucmVxX3JhdGUgPSBOb25lCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0ID0gW10KZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggZTk2ZTdlMC4uMjAwYzgwMCAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTQ4Nyw3ICs0ODcsNiBAQAogICAgICMgQXNzdW1lIHRoYXQgdGhlIHV1aWRfZ2VuZXJhdGUgZnVuY3Rpb25zIGFyZSBicm9rZW4gZnJvbSAxMC41IG9ud2FyZCwKICAgICAjIHRoZSB0ZXN0IGNhbiBiZSBhZGp1c3RlZCB3aGVuIGEgbGF0ZXIgdmVyc2lvbiBpcyBmaXhlZC4KICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgIGltcG9ydCBvcwogICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pID49IDk6CiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV90aW1lID0gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvdmVudi9fX2luaXRfXy5weSBiL0xpYi92ZW52L19faW5pdF9fLnB5CmluZGV4IDc0MjQ1YWIuLjBhMDk0ZTMgMTAwNjQ0Ci0tLSBhL0xpYi92ZW52L19faW5pdF9fLnB5CisrKyBiL0xpYi92ZW52L19faW5pdF9fLnB5CkBAIC0zLDI4ICszLDYgQEAKIAogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgVmluYXkgU2FqaXAuCiBMaWNlbnNlZCB0byB0aGUgUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgotCi11c2FnZTogcHl0aG9uIC1tIHZlbnYgWy1oXSBbLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc10gWy0tc3ltbGlua3NdIFstLWNsZWFyXQotICAgICAgICAgICAgWy0tdXBncmFkZV0KLSAgICAgICAgICAgIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQotCi1DcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCi0KLXBvc2l0aW9uYWwgYXJndW1lbnRzOgotICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KLQotb3B0aW9uYWwgYXJndW1lbnRzOgotICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KLSAgLS1zeW1saW5rcyAgICAgICAgICAgIEF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5LgotICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgotICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgotICAtLXdpdGhvdXQtcGlwICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQogIiIiCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCkBAIC01OCwxNSArMzYsMTcgQEAKICAgICA6cGFyYW0gdXBncmFkZTogSWYgVHJ1ZSwgdXBncmFkZSBhbiBleGlzdGluZyB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgIDpwYXJhbSB3aXRoX3BpcDogSWYgVHJ1ZSwgZW5zdXJlIHBpcCBpcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50CisgICAgOnBhcmFtIHByb21wdDogQWx0ZXJuYXRpdmUgdGVybWluYWwgcHJlZml4IGZvciB0aGUgZW52aXJvbm1lbnQuCiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAotICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UpOgorICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIHByb21wdD1Ob25lKToKICAgICAgICAgc2VsZi5zeXN0ZW1fc2l0ZV9wYWNrYWdlcyA9IHN5c3RlbV9zaXRlX3BhY2thZ2VzCiAgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgogICAgICAgICBzZWxmLnN5bWxpbmtzID0gc3ltbGlua3MKICAgICAgICAgc2VsZi51cGdyYWRlID0gdXBncmFkZQogICAgICAgICBzZWxmLndpdGhfcGlwID0gd2l0aF9waXAKKyAgICAgICAgc2VsZi5wcm9tcHQgPSBwcm9tcHQKIAogICAgIGRlZiBjcmVhdGUoc2VsZiwgZW52X2Rpcik6CiAgICAgICAgICIiIgpAQCAtMTEyLDcgKzkyLDggQEAKICAgICAgICAgY29udGV4dCA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCiAgICAgICAgIGNvbnRleHQuZW52X2RpciA9IGVudl9kaXIKICAgICAgICAgY29udGV4dC5lbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoZW52X2RpcilbMV0KLSAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBwcm9tcHQgPSBzZWxmLnByb21wdCBpZiBzZWxmLnByb21wdCBpcyBub3QgTm9uZSBlbHNlIGNvbnRleHQuZW52X25hbWUKKyAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgcHJvbXB0CiAgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQoZW52X2RpcikKICAgICAgICAgZW52ID0gb3MuZW52aXJvbgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CkBAIC0zNDgsMjYgKzMyOSwxMSBAQAogCiAKIGRlZiBjcmVhdGUoZW52X2Rpciwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgd2l0aF9waXA9RmFsc2UpOgotICAgICIiIgotICAgIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuCi0KLSAgICBCeSBkZWZhdWx0LCBtYWtlcyB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMgZGlyICp1biphdmFpbGFibGUgdG8KLSAgICB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudCwgYW5kIHVzZXMgY29weWluZyByYXRoZXIgdGhhbiBzeW1saW5raW5nIGZvciBmaWxlcwotICAgIG9idGFpbmVkIGZyb20gdGhlIHNvdXJjZSBQeXRob24gaW5zdGFsbGF0aW9uLgotCi0gICAgOnBhcmFtIGVudl9kaXI6IFRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KLSAgICA6cGFyYW0gc3lzdGVtX3NpdGVfcGFja2FnZXM6IElmIFRydWUsIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyIGlzIGF2YWlsYWJsZSB0byB0aGUgZW52aXJvbm1lbnQuCi0gICAgOnBhcmFtIGNsZWFyOiBJZiBUcnVlLCBkZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYKLSAgICAgICAgICAgICAgICAgIGl0IGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gICAgOnBhcmFtIHN5bWxpbmtzOiBJZiBUcnVlLCBhdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weSBmaWxlcyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgotICAgIDpwYXJhbSB3aXRoX3BpcDogSWYgVHJ1ZSwgZW5zdXJlIHBpcCBpcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50Ci0gICAgIiIiCisgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgcHJvbXB0PU5vbmUpOgorICAgICIiIkNyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuIiIiCiAgICAgYnVpbGRlciA9IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9c3lzdGVtX3NpdGVfcGFja2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9Y2xlYXIsIHN5bWxpbmtzPXN5bWxpbmtzLCB3aXRoX3BpcD13aXRoX3BpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MsIHdpdGhfcGlwPXdpdGhfcGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdD1wcm9tcHQpCiAgICAgYnVpbGRlci5jcmVhdGUoZW52X2RpcikKIAogZGVmIG1haW4oYXJncz1Ob25lKToKQEAgLTQyNyw2ICszOTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J5IGRlZmF1bHQpJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wcm9tcHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHByb21wdCBwcmVmaXggZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGVudmlyb25tZW50LicpCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQogICAgICAgICBpZiBvcHRpb25zLnVwZ3JhZGUgYW5kIG9wdGlvbnMuY2xlYXI6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5b3UgY2Fubm90IHN1cHBseSAtLXVwZ3JhZGUgYW5kIC0tY2xlYXIgdG9nZXRoZXIuJykKQEAgLTQzNCw3ICs0MDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1vcHRpb25zLmNsZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1vcHRpb25zLnN5bWxpbmtzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlPW9wdGlvbnMudXBncmFkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9waXA9b3B0aW9ucy53aXRoX3BpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9waXA9b3B0aW9ucy53aXRoX3BpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PW9wdGlvbnMucHJvbXB0KQogICAgICAgICBmb3IgZCBpbiBvcHRpb25zLmRpcnM6CiAgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShkKQogCmRpZmYgLS1naXQgYS9MaWIvd2FybmluZ3MucHkgYi9MaWIvd2FybmluZ3MucHkKaW5kZXggYzY2MzFmYy4uMmI0MDdmZiAxMDA2NDQKLS0tIGEvTGliL3dhcm5pbmdzLnB5CisrKyBiL0xpYi93YXJuaW5ncy5weQpAQCAtMiwzOSArMiwxMTIgQEAKIAogaW1wb3J0IHN5cwogCisKIF9fYWxsX18gPSBbIndhcm4iLCAid2Fybl9leHBsaWNpdCIsICJzaG93d2FybmluZyIsCiAgICAgICAgICAgICJmb3JtYXR3YXJuaW5nIiwgImZpbHRlcndhcm5pbmdzIiwgInNpbXBsZWZpbHRlciIsCiAgICAgICAgICAgICJyZXNldHdhcm5pbmdzIiwgImNhdGNoX3dhcm5pbmdzIl0KIAotCiBkZWYgc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKICAgICAiIiJIb29rIHRvIHdyaXRlIGEgd2FybmluZyB0byBhIGZpbGU7IHJlcGxhY2UgaWYgeW91IGxpa2UuIiIiCi0gICAgaWYgZmlsZSBpcyBOb25lOgotICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgotICAgICAgICBpZiBmaWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIHN5cy5zdGRlcnIgaXMgTm9uZSB3aGVuIHJ1biB3aXRoIHB5dGhvbncuZXhlIC0gd2FybmluZ3MgZ2V0IGxvc3QKLSAgICAgICAgICAgIHJldHVybgotICAgIHRyeToKLSAgICAgICAgZmlsZS53cml0ZShmb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcyAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgorICAgIG1zZyA9IFdhcm5pbmdNZXNzYWdlKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlLCBsaW5lKQorICAgIF9zaG93d2Fybm1zZ19pbXBsKG1zZykKIAogZGVmIGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6CiAgICAgIiIiRnVuY3Rpb24gdG8gZm9ybWF0IGEgd2FybmluZyB0aGUgc3RhbmRhcmQgd2F5LiIiIgotICAgIHMgPSAgIiVzOiVzOiAlczogJXNcbiIgJSAoZmlsZW5hbWUsIGxpbmVubywgY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCi0gICAgaWYgbGluZSBpcyBOb25lOgorICAgIG1zZyA9IFdhcm5pbmdNZXNzYWdlKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBOb25lLCBsaW5lKQorICAgIHJldHVybiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZykKKworZGVmIF9zaG93d2Fybm1zZ19pbXBsKG1zZyk6CisgICAgZmlsZSA9IG1zZy5maWxlCisgICAgaWYgZmlsZSBpcyBOb25lOgorICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgorICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgICAgICAjIHN5cy5zdGRlcnIgaXMgTm9uZSB3aGVuIHJ1biB3aXRoIHB5dGhvbncuZXhlOgorICAgICAgICAgICAgIyB3YXJuaW5ncyBnZXQgbG9zdAorICAgICAgICAgICAgcmV0dXJuCisgICAgdGV4dCA9IF9mb3JtYXR3YXJubXNnKG1zZykKKyAgICB0cnk6CisgICAgICAgIGZpbGUud3JpdGUodGV4dCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIyB0aGUgZmlsZSAocHJvYmFibHkgc3RkZXJyKSBpcyBpbnZhbGlkIC0gdGhpcyB3YXJuaW5nIGdldHMgbG9zdC4KKyAgICAgICAgcGFzcworCitkZWYgX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpOgorICAgIHMgPSAgKCIlczolczogJXM6ICVzXG4iCisgICAgICAgICAgJSAobXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLCBtc2cuY2F0ZWdvcnkuX19uYW1lX18sCisgICAgICAgICAgICAgbXNnLm1lc3NhZ2UpKQorCisgICAgaWYgbXNnLmxpbmUgaXMgTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IGxpbmVjYWNoZQotICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUobXNnLmZpbGVuYW1lLCBtc2cubGluZW5vKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBXaGVuIGEgd2FybmluZyBpcyBsb2dnZWQgZHVyaW5nIFB5dGhvbiBzaHV0ZG93biwgbGluZWNhY2hlCiAgICAgICAgICAgICAjIGFuZCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkb24ndCB3b3JrIGFueW1vcmUKICAgICAgICAgICAgIGxpbmUgPSBOb25lCisgICAgICAgICAgICBsaW5lY2FjaGUgPSBOb25lCisgICAgZWxzZToKKyAgICAgICAgbGluZSA9IG1zZy5saW5lCiAgICAgaWYgbGluZToKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogICAgICAgICBzICs9ICIgICVzXG4iICUgbGluZQorCisgICAgaWYgbXNnLnNvdXJjZSBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRyYWNlbWFsbG9jCisgICAgICAgICAgICB0YiA9IHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrKG1zZy5zb3VyY2UpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAjIFdoZW4gYSB3YXJuaW5nIGlzIGxvZ2dlZCBkdXJpbmcgUHl0aG9uIHNodXRkb3duLCB0cmFjZW1hbGxvYworICAgICAgICAgICAgIyBhbmQgdGhlIGltcG9ydCBtYWNoaW5lcnkgZG9uJ3Qgd29yayBhbnltb3JlCisgICAgICAgICAgICB0YiA9IE5vbmUKKworICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHMgKz0gJ09iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuJworICAgICAgICAgICAgZm9yIGZyYW1lIGluIHRiOgorICAgICAgICAgICAgICAgIHMgKz0gKCcgIEZpbGUgIiVzIiwgbGluZW5vICVzXG4nCisgICAgICAgICAgICAgICAgICAgICAgJSAoZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubykpCisKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVjYWNoZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgcyArPSAnICAgICVzXG4nICUgbGluZQogICAgIHJldHVybiBzCiAKKyMgS2VlcCBhIHJlZmVyZW5jZSB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gd2FzIHJlcGxhY2VkCitfc2hvd3dhcm5pbmcgPSBzaG93d2FybmluZworCitkZWYgX3Nob3d3YXJubXNnKG1zZyk6CisgICAgIiIiSG9vayB0byB3cml0ZSBhIHdhcm5pbmcgdG8gYSBmaWxlOyByZXBsYWNlIGlmIHlvdSBsaWtlLiIiIgorICAgIHNob3d3YXJuaW5nID0gZ2xvYmFscygpLmdldCgnc2hvd3dhcm5pbmcnLCBfc2hvd3dhcm5pbmcpCisgICAgaWYgc2hvd3dhcm5pbmcgaXMgbm90IF9zaG93d2FybmluZzoKKyAgICAgICAgIyB3YXJuaW5ncy5zaG93d2FybmluZygpIHdhcyByZXBsYWNlZAorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2hvd3dhcm5pbmcpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBvciBtZXRob2QiKQorCisgICAgICAgIHNob3d3YXJuaW5nKG1zZy5tZXNzYWdlLCBtc2cuY2F0ZWdvcnksIG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgbXNnLmZpbGUsIG1zZy5saW5lKQorICAgICAgICByZXR1cm4KKyAgICBfc2hvd3dhcm5tc2dfaW1wbChtc2cpCisKKyMgS2VlcCBhIHJlZmVyZW5jZSB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gd2FzIHJlcGxhY2VkCitfZm9ybWF0d2FybmluZyA9IGZvcm1hdHdhcm5pbmcKKworZGVmIF9mb3JtYXR3YXJubXNnKG1zZyk6CisgICAgIiIiRnVuY3Rpb24gdG8gZm9ybWF0IGEgd2FybmluZyB0aGUgc3RhbmRhcmQgd2F5LiIiIgorICAgIGZvcm1hdHdhcm5pbmcgPSBnbG9iYWxzKCkuZ2V0KCdmb3JtYXR3YXJuaW5nJywgX2Zvcm1hdHdhcm5pbmcpCisgICAgaWYgZm9ybWF0d2FybmluZyBpcyBub3QgX2Zvcm1hdHdhcm5pbmc6CisgICAgICAgICMgd2FybmluZ3MuZm9ybWF0d2FybmluZygpIHdhcyByZXBsYWNlZAorICAgICAgICByZXR1cm4gZm9ybWF0d2FybmluZyhtc2cubWVzc2FnZSwgbXNnLmNhdGVnb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sIGxpbmU9bXNnLmxpbmUpCisgICAgcmV0dXJuIF9mb3JtYXR3YXJubXNnX2ltcGwobXNnKQorCiBkZWYgZmlsdGVyd2FybmluZ3MoYWN0aW9uLCBtZXNzYWdlPSIiLCBjYXRlZ29yeT1XYXJuaW5nLCBtb2R1bGU9IiIsIGxpbmVubz0wLAogICAgICAgICAgICAgICAgICAgIGFwcGVuZD1GYWxzZSk6CiAgICAgIiIiSW5zZXJ0IGFuIGVudHJ5IGludG8gdGhlIGxpc3Qgb2Ygd2FybmluZ3MgZmlsdGVycyAoYXQgdGhlIGZyb250KS4KQEAgLTE4NSw3ICsyNTgsNyBAQAogCiAKICMgQ29kZSB0eXBpY2FsbHkgcmVwbGFjZWQgYnkgX3dhcm5pbmdzCi1kZWYgd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpOgorZGVmIHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSk6CiAgICAgIiIiSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiIiIgogICAgICMgQ2hlY2sgaWYgbWVzc2FnZSBpcyBhbHJlYWR5IGEgV2FybmluZyBvYmplY3QKICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIFdhcm5pbmcpOgpAQCAtMjM1LDEwICszMDgsMTEgQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gbW9kdWxlCiAgICAgcmVnaXN0cnkgPSBnbG9iYWxzLnNldGRlZmF1bHQoIl9fd2FybmluZ3JlZ2lzdHJ5X18iLCB7fSkKICAgICB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsIHJlZ2lzdHJ5LAotICAgICAgICAgICAgICAgICAgZ2xvYmFscykKKyAgICAgICAgICAgICAgICAgIGdsb2JhbHMsIHNvdXJjZSkKIAogZGVmIHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSk6CisgICAgICAgICAgICAgICAgICBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZT1Ob25lKToKICAgICBsaW5lbm8gPSBpbnQobGluZW5vKQogICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICBtb2R1bGUgPSBmaWxlbmFtZSBvciAiPHVua25vd24+IgpAQCAtMzAzLDIyICszNzcsMTggQEAKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGFjdGlvbiAoJXIpIGluIHdhcm5pbmdzLmZpbHRlcnM6XG4gJXMiICUKICAgICAgICAgICAgICAgKGFjdGlvbiwgaXRlbSkpCi0gICAgaWYgbm90IGNhbGxhYmxlKHNob3d3YXJuaW5nKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG9yIG1ldGhvZCIpCiAgICAgIyBQcmludCBtZXNzYWdlIGFuZCBjb250ZXh0Ci0gICAgc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8pCisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIHNvdXJjZSkKKyAgICBfc2hvd3dhcm5tc2cobXNnKQogCiAKIGNsYXNzIFdhcm5pbmdNZXNzYWdlKG9iamVjdCk6CiAKLSAgICAiIiJIb2xkcyB0aGUgcmVzdWx0IG9mIGEgc2luZ2xlIHNob3d3YXJuaW5nKCkgY2FsbC4iIiIKLQogICAgIF9XQVJOSU5HX0RFVEFJTFMgPSAoIm1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAiZmlsZW5hbWUiLCAibGluZW5vIiwgImZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiKQorICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiLCAic291cmNlIikKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICBsaW5lPU5vbmUpOgorICAgICAgICAgICAgICAgICBsaW5lPU5vbmUsIHNvdXJjZT1Ob25lKToKICAgICAgICAgbG9jYWxfdmFsdWVzID0gbG9jYWxzKCkKICAgICAgICAgZm9yIGF0dHIgaW4gc2VsZi5fV0FSTklOR19ERVRBSUxTOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCBsb2NhbF92YWx1ZXNbYXR0cl0pCkBAIC0zNzYsMTEgKzQ0NiwxMiBAQAogICAgICAgICBzZWxmLl9tb2R1bGUuZmlsdGVycyA9IHNlbGYuX2ZpbHRlcnNbOl0KICAgICAgICAgc2VsZi5fbW9kdWxlLl9maWx0ZXJzX211dGF0ZWQoKQogICAgICAgICBzZWxmLl9zaG93d2FybmluZyA9IHNlbGYuX21vZHVsZS5zaG93d2FybmluZworICAgICAgICBzZWxmLl9zaG93d2Fybm1zZyA9IHNlbGYuX21vZHVsZS5fc2hvd3dhcm5tc2cKICAgICAgICAgaWYgc2VsZi5fcmVjb3JkOgogICAgICAgICAgICAgbG9nID0gW10KLSAgICAgICAgICAgIGRlZiBzaG93d2FybmluZygqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQoV2FybmluZ01lc3NhZ2UoKmFyZ3MsICoqa3dhcmdzKSkKLSAgICAgICAgICAgIHNlbGYuX21vZHVsZS5zaG93d2FybmluZyA9IHNob3d3YXJuaW5nCisgICAgICAgICAgICBkZWYgc2hvd2Fybm1zZyhtc2cpOgorICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQobXNnKQorICAgICAgICAgICAgc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZyA9IHNob3dhcm5tc2cKICAgICAgICAgICAgIHJldHVybiBsb2cKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCkBAIC0zOTEsNiArNDYyLDcgQEAKICAgICAgICAgc2VsZi5fbW9kdWxlLmZpbHRlcnMgPSBzZWxmLl9maWx0ZXJzCiAgICAgICAgIHNlbGYuX21vZHVsZS5fZmlsdGVyc19tdXRhdGVkKCkKICAgICAgICAgc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nID0gc2VsZi5fc2hvd3dhcm5pbmcKKyAgICAgICAgc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZyA9IHNlbGYuX3Nob3d3YXJubXNnCiAKIAogIyBmaWx0ZXJzIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgZmlsdGVyIDUtdHVwbGVzCmRpZmYgLS1naXQgYS9MaWIvd2F2ZS5weSBiL0xpYi93YXZlLnB5CmluZGV4IDhhMTAxZTMuLmY3MWY3ZTUgMTAwNjQ0Ci0tLSBhL0xpYi93YXZlLnB5CisrKyBiL0xpYi93YXZlLnB5CkBAIC03Myw3ICs3Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogCi1fX2FsbF9fID0gWyJvcGVuIiwgIm9wZW5mcCIsICJFcnJvciJdCitfX2FsbF9fID0gWyJvcGVuIiwgIm9wZW5mcCIsICJFcnJvciIsICJXYXZlX3JlYWQiLCAiV2F2ZV93cml0ZSJdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CiAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weSBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKaW5kZXggN2ZkZGJlOC4uZjcxNTYzYSAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQorKysgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CkBAIC0xMSw3ICsxMSw2IEBACiAiIiIKIAogZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgSFRUUFNlcnZlcgotZnJvbSBpbyBpbXBvcnQgQnVmZmVyZWRXcml0ZXIKIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20gd3NnaXJlZi5oYW5kbGVycyBpbXBvcnQgU2ltcGxlSGFuZGxlcgpAQCAtMTI3LDE3ICsxMjYsMTEgQEAKICAgICAgICAgaWYgbm90IHNlbGYucGFyc2VfcmVxdWVzdCgpOiAjIEFuIGVycm9yIGNvZGUgaGFzIGJlZW4gc2VudCwganVzdCBleGl0CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIEF2b2lkIHBhc3NpbmcgdGhlIHJhdyBmaWxlIG9iamVjdCB3ZmlsZSwgd2hpY2ggY2FuIGRvIHBhcnRpYWwKLSAgICAgICAgIyB3cml0ZXMgKElzc3VlIDI0MjkxKQotICAgICAgICBzdGRvdXQgPSBCdWZmZXJlZFdyaXRlcihzZWxmLndmaWxlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gU2VydmVySGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxmLnJmaWxlLCBzdGRvdXQsIHNlbGYuZ2V0X3N0ZGVycigpLCBzZWxmLmdldF9lbnZpcm9uKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGhhbmRsZXIucmVxdWVzdF9oYW5kbGVyID0gc2VsZiAgICAgICMgYmFja3BvaW50ZXIgZm9yIGxvZ2dpbmcKLSAgICAgICAgICAgIGhhbmRsZXIucnVuKHNlbGYuc2VydmVyLmdldF9hcHAoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN0ZG91dC5kZXRhY2goKQorICAgICAgICBoYW5kbGVyID0gU2VydmVySGFuZGxlcigKKyAgICAgICAgICAgIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUsIHNlbGYuZ2V0X3N0ZGVycigpLCBzZWxmLmdldF9lbnZpcm9uKCkKKyAgICAgICAgKQorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfaGFuZGxlciA9IHNlbGYgICAgICAjIGJhY2twb2ludGVyIGZvciBsb2dnaW5nCisgICAgICAgIGhhbmRsZXIucnVuKHNlbGYuc2VydmVyLmdldF9hcHAoKSkKIAogCiAKQEAgLTE2MywxMCArMTU2LDkgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKQotICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKLSAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQotICAgIGltcG9ydCB3ZWJicm93c2VyCi0gICAgd2ViYnJvd3Nlci5vcGVuKCdodHRwOi8vbG9jYWxob3N0OjgwMDAveHl6P2FiYycpCi0gICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKSAgIyBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0Ci0gICAgaHR0cGQuc2VydmVyX2Nsb3NlKCkKKyAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKKyAgICAgICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiIsIHNhWzBdLCAicG9ydCIsIHNhWzFdLCAiLi4uIikKKyAgICAgICAgaW1wb3J0IHdlYmJyb3dzZXIKKyAgICAgICAgd2ViYnJvd3Nlci5vcGVuKCdodHRwOi8vbG9jYWxob3N0OjgwMDAveHl6P2FiYycpCisgICAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkgICMgc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdApkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weSBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKaW5kZXggNDQ0ZjBiMi4uZTlhMTUzNiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CkBAIC0zNTMsMTQgKzM1MywxNCBAQAogY2xhc3MgRG9jdW1lbnRMUzoKICAgICAiIiJNaXhpbiB0byBjcmVhdGUgZG9jdW1lbnRzIHRoYXQgY29uZm9ybSB0byB0aGUgbG9hZC9zYXZlIHNwZWMuIiIiCiAKLSAgICBhc3luYyA9IF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eSgpCiAgICAgYXN5bmNfID0gRmFsc2UKKyAgICBsb2NhbHMoKVsnYXN5bmMnXSA9IF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eSgpICAjIEF2b2lkIERlcHJlY2F0aW9uV2FybmluZwogCiAgICAgZGVmIF9nZXRfYXN5bmMoc2VsZik6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIF9zZXRfYXN5bmMoc2VsZiwgYXN5bmMpOgotICAgICAgICBpZiBhc3luYzoKKyAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBmbGFnKToKKyAgICAgICAgaWYgZmxhZzoKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90U3VwcG9ydGVkRXJyKAogICAgICAgICAgICAgICAgICJhc3luY2hyb25vdXMgZG9jdW1lbnQgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIikKIApkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKaW5kZXggNWRlNDIzMi4uYWI2Yjc5YSAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CkBAIC01OSwxNSArNTksMTUgQEAKIGltcG9ydCByZQogCiB4cGF0aF90b2tlbml6ZXJfcmUgPSByZS5jb21waWxlKAotICAgICIoIgotICAgICInW14nXSonfFwiW15cIl0qXCJ8IgotICAgICI6OnwiCi0gICAgIi8vP3wiCi0gICAgIlwuXC58IgotICAgICJcKFwpfCIKLSAgICAiWy8uKjpcW1xdXChcKUA9XSl8IgotICAgICIoKD86XHtbXn1dK1x9KT9bXi9cW1xdXChcKUA9XHNdKyl8IgotICAgICJccysiCisgICAgciIoIgorICAgIHIiJ1teJ10qJ3xcIlteXCJdKlwifCIKKyAgICByIjo6fCIKKyAgICByIi8vP3wiCisgICAgciJcLlwufCIKKyAgICByIlwoXCl8IgorICAgIHIiWy8uKjpcW1xdXChcKUA9XSl8IgorICAgIHIiKCg/Olx7W159XStcfSk/W14vXFtcXVwoXClAPVxzXSspfCIKKyAgICByIlxzKyIKICAgICApCiAKIGRlZiB4cGF0aF90b2tlbml6ZXIocGF0dGVybiwgbmFtZXNwYWNlcz1Ob25lKToKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICAgICAgICAgIGlmIGVsZW0uZ2V0KGtleSkgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLSIgYW5kIG5vdCByZS5tYXRjaCgiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CisgICAgaWYgc2lnbmF0dXJlID09ICItIiBhbmQgbm90IHJlLm1hdGNoKHIiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CiAgICAgICAgICMgW3RhZ10KICAgICAgICAgdGFnID0gcHJlZGljYXRlWzBdCiAgICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKQEAgLTE4OCw3ICsxODgsNyBAQAogICAgICAgICAgICAgICAgIGlmIGVsZW0uZmluZCh0YWcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCiAgICAgICAgIHJldHVybiBzZWxlY3QKLSAgICBpZiBzaWduYXR1cmUgPT0gIi09JyIgYW5kIG5vdCByZS5tYXRjaCgiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CisgICAgaWYgc2lnbmF0dXJlID09ICItPSciIGFuZCBub3QgcmUubWF0Y2gociJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKICAgICAgICAgIyBbdGFnPSd2YWx1ZSddCiAgICAgICAgIHRhZyA9IHByZWRpY2F0ZVswXQogICAgICAgICB2YWx1ZSA9IHByZWRpY2F0ZVstMV0KZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CmluZGV4IDkyODIxYzUuLjczNTQwNTYgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQpAQCAtODUsNyArODUsNyBAQAogICAgICJUcmVlQnVpbGRlciIsCiAgICAgIlZFUlNJT04iLAogICAgICJYTUwiLCAiWE1MSUQiLAotICAgICJYTUxQYXJzZXIiLAorICAgICJYTUxQYXJzZXIiLCAiWE1MUHVsbFBhcnNlciIsCiAgICAgInJlZ2lzdGVyX25hbWVzcGFjZSIsCiAgICAgXQogCkBAIC05NSw2ICs5NSw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGlvCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb250ZXh0bGliCiAKIGZyb20gLiBpbXBvcnQgRWxlbWVudFBhdGgKQEAgLTEwMjksNyArMTAzMCw3IEBACiAgICAgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgcHJlZml4IGlzIHJlc2VydmVkIG9yIGlzIGludmFsaWQuCiAKICAgICAiIiIKLSAgICBpZiByZS5tYXRjaCgibnNcZCskIiwgcHJlZml4KToKKyAgICBpZiByZS5tYXRjaChyIm5zXGQrJCIsIHByZWZpeCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlByZWZpeCBmb3JtYXQgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZSIpCiAgICAgZm9yIGssIHYgaW4gbGlzdChfbmFtZXNwYWNlX21hcC5pdGVtcygpKToKICAgICAgICAgaWYgayA9PSB1cmkgb3IgdiA9PSBwcmVmaXg6CkBAIC0xMDg0LDcgKzEwODUsNyBAQAogICAgICAgICBpZiAiXCIiIGluIHRleHQ6CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCJcIiIsICImcXVvdDsiKQogICAgICAgICAjIFRoZSBmb2xsb3dpbmcgYnVzaW5lc3Mgd2l0aCBjYXJyaWFnZSByZXR1cm5zIGlzIHRvIHNhdGlzZnkKLSAgICAgICAgIyBTZWN0aW9uIDIuMTEgb2YgdGhlIFhNTCBzcGVjaWZpY2F0aW9uLCBzdGF0aW5nIHRoYXQgCisgICAgICAgICMgU2VjdGlvbiAyLjExIG9mIHRoZSBYTUwgc3BlY2lmaWNhdGlvbiwgc3RhdGluZyB0aGF0CiAgICAgICAgICMgQ1Igb3IgQ1IgTE4gc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgganVzdCBMTgogICAgICAgICAjIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI3NlYy1saW5lLWVuZHMKICAgICAgICAgaWYgIlxyXG4iIGluIHRleHQ6CkBAIC0xMjExLDE2ICsxMjEyLDM3IEBACiAgICAgUmV0dXJucyBhbiBpdGVyYXRvciBwcm92aWRpbmcgKGV2ZW50LCBlbGVtKSBwYWlycy4KIAogICAgICIiIgorICAgICMgVXNlIHRoZSBpbnRlcm5hbCwgdW5kb2N1bWVudGVkIF9wYXJzZXIgYXJndW1lbnQgZm9yIG5vdzsgV2hlbiB0aGUKKyAgICAjIHBhcnNlciBhcmd1bWVudCBvZiBpdGVycGFyc2UgaXMgcmVtb3ZlZCwgdGhpcyBjYW4gYmUga2lsbGVkLgorICAgIHB1bGxwYXJzZXIgPSBYTUxQdWxsUGFyc2VyKGV2ZW50cz1ldmVudHMsIF9wYXJzZXI9cGFyc2VyKQorICAgIGRlZiBpdGVyYXRvcigpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcHVsbHBhcnNlci5yZWFkX2V2ZW50cygpCisgICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCgxNiAqIDEwMjQpCisgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcHVsbHBhcnNlci5mZWVkKGRhdGEpCisgICAgICAgICAgICByb290ID0gcHVsbHBhcnNlci5fY2xvc2VfYW5kX3JldHVybl9yb290KCkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcHVsbHBhcnNlci5yZWFkX2V2ZW50cygpCisgICAgICAgICAgICBpdC5yb290ID0gcm9vdAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgY2xvc2Vfc291cmNlOgorICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKyAgICBjbGFzcyBJdGVyUGFyc2VJdGVyYXRvcihjb2xsZWN0aW9ucy5JdGVyYXRvcik6CisgICAgICAgIF9fbmV4dF9fID0gaXRlcmF0b3IoKS5fX25leHRfXworICAgIGl0ID0gSXRlclBhcnNlSXRlcmF0b3IoKQorICAgIGl0LnJvb3QgPSBOb25lCisgICAgZGVsIGl0ZXJhdG9yLCBJdGVyUGFyc2VJdGVyYXRvcgorCiAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKICAgICBpZiBub3QgaGFzYXR0cihzb3VyY2UsICJyZWFkIik6CiAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAicmIiKQogICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gX0l0ZXJQYXJzZUl0ZXJhdG9yKHNvdXJjZSwgZXZlbnRzLCBwYXJzZXIsIGNsb3NlX3NvdXJjZSkKLSAgICBleGNlcHQ6Ci0gICAgICAgIGlmIGNsb3NlX3NvdXJjZToKLSAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCi0gICAgICAgIHJhaXNlCisKKyAgICByZXR1cm4gaXQKIAogCiBjbGFzcyBYTUxQdWxsUGFyc2VyOgpAQCAtMTIzMCw5ICsxMjUyLDcgQEAKICAgICAgICAgIyB1cG9uIGluIHVzZXIgY29kZS4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzc0MSBmb3IgbW9yZSBkZXRhaWxzLgogCi0gICAgICAgICMgX2VsZW1lbnR0cmVlLmMgZXhwZWN0cyBhIGxpc3QsIG5vdCBhIGRlcXVlCi0gICAgICAgIHNlbGYuX2V2ZW50c19xdWV1ZSA9IFtdCi0gICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICBzZWxmLl9ldmVudHNfcXVldWUgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCiAgICAgICAgIHNlbGYuX3BhcnNlciA9IF9wYXJzZXIgb3IgWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQogICAgICAgICAjIHdpcmUgdXAgdGhlIHBhcnNlciBmb3IgZXZlbnQgcmVwb3J0aW5nCiAgICAgICAgIGlmIGV2ZW50cyBpcyBOb25lOgpAQCAtMTI3MCw2NCArMTI5MCwxNCBAQAogICAgICAgICByZXRyaWV2ZWQgZnJvbSB0aGUgaXRlcmF0b3IuCiAgICAgICAgICIiIgogICAgICAgICBldmVudHMgPSBzZWxmLl9ldmVudHNfcXVldWUKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGluZGV4ID0gc2VsZi5faW5kZXgKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBldmVudCA9IGV2ZW50c1tzZWxmLl9pbmRleF0KLSAgICAgICAgICAgICAgICAjIEF2b2lkIHJldGFpbmluZyByZWZlcmVuY2VzIHRvIHBhc3QgZXZlbnRzCi0gICAgICAgICAgICAgICAgZXZlbnRzW3NlbGYuX2luZGV4XSA9IE5vbmUKLSAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpbmRleCArPSAxCi0gICAgICAgICAgICAjIENvbXBhY3QgdGhlIGxpc3QgaW4gYSBPKDEpIGFtb3J0aXplZCBmYXNoaW9uCi0gICAgICAgICAgICAjIEFzIG5vdGVkIGFib3ZlLCBfZWxlbWVudHJlZS5jIG5lZWRzIGEgbGlzdCwgbm90IGEgZGVxdWUKLSAgICAgICAgICAgIGlmIGluZGV4ICogMiA+PSBsZW4oZXZlbnRzKToKLSAgICAgICAgICAgICAgICBldmVudHNbOmluZGV4XSA9IFtdCi0gICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gaW5kZXgKKyAgICAgICAgd2hpbGUgZXZlbnRzOgorICAgICAgICAgICAgZXZlbnQgPSBldmVudHMucG9wbGVmdCgpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgIHJhaXNlIGV2ZW50CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIGV2ZW50CiAKIAotY2xhc3MgX0l0ZXJQYXJzZUl0ZXJhdG9yOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZSwgZXZlbnRzLCBwYXJzZXIsIGNsb3NlX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgICMgVXNlIHRoZSBpbnRlcm5hbCwgdW5kb2N1bWVudGVkIF9wYXJzZXIgYXJndW1lbnQgZm9yIG5vdzsgV2hlbiB0aGUKLSAgICAgICAgIyBwYXJzZXIgYXJndW1lbnQgb2YgaXRlcnBhcnNlIGlzIHJlbW92ZWQsIHRoaXMgY2FuIGJlIGtpbGxlZC4KLSAgICAgICAgc2VsZi5fcGFyc2VyID0gWE1MUHVsbFBhcnNlcihldmVudHM9ZXZlbnRzLCBfcGFyc2VyPXBhcnNlcikKLSAgICAgICAgc2VsZi5fZmlsZSA9IHNvdXJjZQotICAgICAgICBzZWxmLl9jbG9zZV9maWxlID0gY2xvc2Vfc291cmNlCi0gICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QgPSBOb25lCi0KLSAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgZm9yIGV2ZW50IGluIHNlbGYuX3BhcnNlci5yZWFkX2V2ZW50cygpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9wYXJzZXIuX3BhcnNlciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKDE2ICogMTAyNCkKLSAgICAgICAgICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBzZWxmLl9wYXJzZXIuX2Nsb3NlX2FuZF9yZXR1cm5fcm9vdCgpCi0gICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290Ci0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICByYWlzZQotICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOgotICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotCiBkZWYgWE1MKHRleHQsIHBhcnNlcj1Ob25lKToKICAgICAiIiJQYXJzZSBYTUwgZG9jdW1lbnQgZnJvbSBzdHJpbmcgY29uc3RhbnQuCiAKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggYmJmOWVlNi4uYmQzMjc4ZSAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTEzMiw2ICsxMzIsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKQEAgLTE1MSw3ICsxNTIsNyBAQAogICAgIHJldHVybiBzLnJlcGxhY2UoIj4iLCAiJmd0OyIsKQogCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAotX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KK19fdmVyc2lvbl9fID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKICMgeG1scnBjIGludGVnZXIgbGltaXRzCiBNQVhJTlQgPSAgMioqMzEtMQpAQCAtNjY3LDYgKzY2OCw4IEBACiAKICAgICBkZWYgc3RhcnQoc2VsZiwgdGFnLCBhdHRycyk6CiAgICAgICAgICMgcHJlcGFyZSB0byBoYW5kbGUgdGhpcyBlbGVtZW50CisgICAgICAgIGlmICc6JyBpbiB0YWc6CisgICAgICAgICAgICB0YWcgPSB0YWcuc3BsaXQoJzonKVstMV0KICAgICAgICAgaWYgdGFnID09ICJhcnJheSIgb3IgdGFnID09ICJzdHJ1Y3QiOgogICAgICAgICAgICAgc2VsZi5fbWFya3MuYXBwZW5kKGxlbihzZWxmLl9zdGFjaykpCiAgICAgICAgIHNlbGYuX2RhdGEgPSBbXQpAQCAtNjgyLDkgKzY4NSwxMyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWddCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MgIyB1bmtub3duIHRhZyA/Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZihzZWxmLCAiIi5qb2luKHNlbGYuX2RhdGEpKQorICAgICAgICAgICAgaWYgJzonIG5vdCBpbiB0YWc6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZy5zcGxpdCgnOicpWy0xXV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgIHJldHVybiBmKHNlbGYsICIiLmpvaW4oc2VsZi5fZGF0YSkpCiAKICAgICAjCiAgICAgIyBhY2NlbGVyYXRvciBzdXBwb3J0CkBAIC02OTQsOSArNzAxLDEzIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcyAjIHVua25vd24gdGFnID8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmKHNlbGYsIGRhdGEpCisgICAgICAgICAgICBpZiAnOicgbm90IGluIHRhZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnLnNwbGl0KCc6JylbLTFdXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgcmV0dXJuIGYoc2VsZiwgZGF0YSkKIAogICAgICMKICAgICAjIGVsZW1lbnQgZGVjb2RlcnMKQEAgLTcyMSwxNCArNzMyLDIzIEBACiAgICAgZGVmIGVuZF9pbnQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYXBwZW5kKGludChkYXRhKSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCisgICAgZGlzcGF0Y2hbImkxIl0gPSBlbmRfaW50CisgICAgZGlzcGF0Y2hbImkyIl0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImk0Il0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImk4Il0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImludCJdID0gZW5kX2ludAorICAgIGRpc3BhdGNoWyJiaWdpbnRlZ2VyIl0gPSBlbmRfaW50CiAKICAgICBkZWYgZW5kX2RvdWJsZShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5hcHBlbmQoZmxvYXQoZGF0YSkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gMAogICAgIGRpc3BhdGNoWyJkb3VibGUiXSA9IGVuZF9kb3VibGUKKyAgICBkaXNwYXRjaFsiZmxvYXQiXSA9IGVuZF9kb3VibGUKKworICAgIGRlZiBlbmRfYmlnZGVjaW1hbChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5hcHBlbmQoRGVjaW1hbChkYXRhKSkKKyAgICAgICAgc2VsZi5fdmFsdWUgPSAwCisgICAgZGlzcGF0Y2hbImJpZ2RlY2ltYWwiXSA9IGVuZF9iaWdkZWNpbWFsCiAKICAgICBkZWYgZW5kX3N0cmluZyhzZWxmLCBkYXRhKToKICAgICAgICAgaWYgc2VsZi5fZW5jb2Rpbmc6CmRpZmYgLS1naXQgYS9MaWIveG1scnBjL3NlcnZlci5weSBiL0xpYi94bWxycGMvc2VydmVyLnB5CmluZGV4IDc4MTc2OTMuLjg0OWJmZGQgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvc2VydmVyLnB5CisrKyBiL0xpYi94bWxycGMvc2VydmVyLnB5CkBAIC05NzEsMTYgKzk3MSwxNSBAQAogICAgICAgICAgICAgZGVmIGdldEN1cnJlbnRUaW1lKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCiAKLSAgICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQotICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCi0gICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKLSAgICBwcmludCgnSXQgaXMgYWR2aXNhYmxlIHRvIHJ1biB0aGlzIGV4YW1wbGUgc2VydmVyIHdpdGhpbiBhIHNlY3VyZSwgY2xvc2VkIG5ldHdvcmsuJykKLSAgICB0cnk6Ci0gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQotICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc3lzLmV4aXQoMCkKKyAgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKSBhcyBzZXJ2ZXI6CisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKKyAgICAgICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKKyAgICAgICAgcHJpbnQoJ0l0IGlzIGFkdmlzYWJsZSB0byBydW4gdGhpcyBleGFtcGxlIHNlcnZlciB3aXRoaW4gYSBzZWN1cmUsIGNsb3NlZCBuZXR3b3JrLicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQpkaWZmIC0tZ2l0IGEvTGliL3ppcGZpbGUucHkgYi9MaWIvemlwZmlsZS5weQppbmRleCAyNDc2NzE3Li5lMmFlMDQyIDEwMDY0NAotLS0gYS9MaWIvemlwZmlsZS5weQorKysgYi9MaWIvemlwZmlsZS5weQpAQCAtMzcxLDcgKzM3MSw3IEBACiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZW1vZGU9JXInICUgc3RhdC5maWxlbW9kZShoaSkpCiAgICAgICAgIGlmIGxvOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGV4dGVybmFsX2F0dHI9JSN4JyAlIGxvKQotICAgICAgICBpc2RpciA9IHNlbGYuZmlsZW5hbWVbLTE6XSA9PSAnLycKKyAgICAgICAgaXNkaXIgPSBzZWxmLmlzX2RpcigpCiAgICAgICAgIGlmIG5vdCBpc2RpciBvciBzZWxmLmZpbGVfc2l6ZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlX3NpemU9JXInICUgc2VsZi5maWxlX3NpemUpCiAgICAgICAgIGlmICgobm90IGlzZGlyIG9yIHNlbGYuY29tcHJlc3Nfc2l6ZSkgYW5kCkBAIC00NDksNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICBlbGlmIGxuID09IDA6CiAgICAgICAgICAgICAgICAgICAgIGNvdW50cyA9ICgpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3JydXB0IGV4dHJhIGZpZWxkICVzIiUobG4sKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQ29ycnVwdCBleHRyYSBmaWVsZCAlMDR4IChzaXplPSVkKSIgJSAodHAsIGxuKSkKIAogICAgICAgICAgICAgICAgIGlkeCA9IDAKIApAQCAtNDY5LDYgKzQ2OSw0MiBAQAogCiAgICAgICAgICAgICBleHRyYSA9IGV4dHJhW2xuKzQ6XQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZmlsZShjbHMsIGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gYXBwcm9wcmlhdGUgWmlwSW5mbyBmb3IgYSBmaWxlIG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICAgICAgIGZpbGVuYW1lIHNob3VsZCBiZSB0aGUgcGF0aCB0byBhIGZpbGUgb3IgZGlyZWN0b3J5IG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICAgICAgIGFyY25hbWUgaXMgdGhlIG5hbWUgd2hpY2ggaXQgd2lsbCBoYXZlIHdpdGhpbiB0aGUgYXJjaGl2ZSAoYnkgZGVmYXVsdCwKKyAgICAgICAgdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzIGZpbGVuYW1lLCBidXQgd2l0aG91dCBhIGRyaXZlIGxldHRlciBhbmQgd2l0aAorICAgICAgICBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgaXNkaXIgPSBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSkKKyAgICAgICAgbXRpbWUgPSB0aW1lLmxvY2FsdGltZShzdC5zdF9tdGltZSkKKyAgICAgICAgZGF0ZV90aW1lID0gbXRpbWVbMDo2XQorICAgICAgICAjIENyZWF0ZSBaaXBJbmZvIGluc3RhbmNlIHRvIHN0b3JlIGZpbGUgaW5mb3JtYXRpb24KKyAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVuYW1lCisgICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguc3BsaXRkcml2ZShhcmNuYW1lKVsxXSkKKyAgICAgICAgd2hpbGUgYXJjbmFtZVswXSBpbiAob3Muc2VwLCBvcy5hbHRzZXApOgorICAgICAgICAgICAgYXJjbmFtZSA9IGFyY25hbWVbMTpdCisgICAgICAgIGlmIGlzZGlyOgorICAgICAgICAgICAgYXJjbmFtZSArPSAnLycKKyAgICAgICAgemluZm8gPSBjbHMoYXJjbmFtZSwgZGF0ZV90aW1lKQorICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gKHN0LnN0X21vZGUgJiAweEZGRkYpIDw8IDE2ICAjIFVuaXggYXR0cmlidXRlcworICAgICAgICBpZiBpc2RpcjoKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKKyAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKKworICAgICAgICByZXR1cm4gemluZm8KKworICAgIGRlZiBpc19kaXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoaXMgYXJjaGl2ZSBtZW1iZXIgaXMgYSBkaXJlY3RvcnkuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmZpbGVuYW1lWy0xXSA9PSAnLycKKwogCiBjbGFzcyBfWmlwRGVjcnlwdGVyOgogICAgICIiIkNsYXNzIHRvIGhhbmRsZSBkZWNyeXB0aW9uIG9mIGZpbGVzIHN0b3JlZCB3aXRoaW4gYSBaSVAgYXJjaGl2ZS4KQEAgLTYxOCw3ICs2NTQsNyBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIGx6bWEgbW9kdWxlIikKICAgICBlbHNlOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKIAogCiBkZWYgX2dldF9jb21wcmVzc29yKGNvbXByZXNzX3R5cGUpOgpAQCAtNjUxLDE0ICs2ODcsMTkgQEAKIAogCiBjbGFzcyBfU2hhcmVkRmlsZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jayk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIHBvcywgY2xvc2UsIGxvY2ssIHdyaXRpbmcpOgogICAgICAgICBzZWxmLl9maWxlID0gZmlsZQogICAgICAgICBzZWxmLl9wb3MgPSBwb3MKICAgICAgICAgc2VsZi5fY2xvc2UgPSBjbG9zZQogICAgICAgICBzZWxmLl9sb2NrID0gbG9jaworICAgICAgICBzZWxmLl93cml0aW5nID0gd3JpdGluZwogCiAgICAgZGVmIHJlYWQoc2VsZiwgbj0tMSk6CiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX3dyaXRpbmcoKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZWFkIGZyb20gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpcyBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZC4iKQogICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX3BvcykKICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQobikKICAgICAgICAgICAgIHNlbGYuX3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCkBAIC03MDIsOSArNzQzLDYgQEAKICAgICAjIFJlYWQgZnJvbSBjb21wcmVzc2VkIGZpbGVzIGluIDRrIGJsb2Nrcy4KICAgICBNSU5fUkVBRF9TSVpFID0gNDA5NgogCi0gICAgIyBTZWFyY2ggZm9yIHVuaXZlcnNhbCBuZXdsaW5lcyBvciBsaW5lIGNodW5rcy4KLSAgICBQQVRURVJOID0gcmUuY29tcGlsZShicideKD9QPGNodW5rPlteXHJcbl0rKXwoP1A8bmV3bGluZT5cbnxcclxuPyknKQotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVvYmosIG1vZGUsIHppcGluZm8sIGRlY3J5cHRlcj1Ob25lLAogICAgICAgICAgICAgICAgICBjbG9zZV9maWxlb2JqPUZhbHNlKToKICAgICAgICAgc2VsZi5fZmlsZW9iaiA9IGZpbGVvYmoKQEAgLTcyMSw3ICs3NTksNiBAQAogICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCiAgICAgICAgIHNlbGYuX29mZnNldCA9IDAKIAotICAgICAgICBzZWxmLl91bml2ZXJzYWwgPSAnVScgaW4gbW9kZQogICAgICAgICBzZWxmLm5ld2xpbmVzID0gTm9uZQogCiAgICAgICAgICMgQWRqdXN0IHJlYWQgc2l6ZSBmb3IgZW5jcnlwdGVkIGZpbGVzIHNpbmNlIHRoZSBmaXJzdCAxMiBieXRlcwpAQCAtNzU4LDcgKzc5NSw3IEBACiAgICAgICAgIElmIGxpbWl0IGlzIHNwZWNpZmllZCwgYXQgbW9zdCBsaW1pdCBieXRlcyB3aWxsIGJlIHJlYWQuCiAgICAgICAgICIiIgogCi0gICAgICAgIGlmIG5vdCBzZWxmLl91bml2ZXJzYWwgYW5kIGxpbWl0IDwgMDoKKyAgICAgICAgaWYgbGltaXQgPCAwOgogICAgICAgICAgICAgIyBTaG9ydGN1dCBjb21tb24gY2FzZSAtIG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyLgogICAgICAgICAgICAgaSA9IHNlbGYuX3JlYWRidWZmZXIuZmluZChiJ1xuJywgc2VsZi5fb2Zmc2V0KSArIDEKICAgICAgICAgICAgIGlmIGkgPiAwOgpAQCAtNzY2LDQxICs4MDMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IGkKICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQogCi0gICAgICAgIGlmIG5vdCBzZWxmLl91bml2ZXJzYWw6Ci0gICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgbGltaXQpCi0KLSAgICAgICAgbGluZSA9IGInJwotICAgICAgICB3aGlsZSBsaW1pdCA8IDAgb3IgbGVuKGxpbmUpIDwgbGltaXQ6Ci0gICAgICAgICAgICByZWFkYWhlYWQgPSBzZWxmLnBlZWsoMikKLSAgICAgICAgICAgIGlmIHJlYWRhaGVhZCA9PSBiJyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBTZWFyY2ggZm9yIHVuaXZlcnNhbCBuZXdsaW5lcyBvciBsaW5lIGNodW5rcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVGhlIHBhdHRlcm4gcmV0dXJucyBlaXRoZXIgYSBsaW5lIGNodW5rIG9yIGEgbmV3bGluZSwgYnV0IG5vdAotICAgICAgICAgICAgIyBib3RoLiBDb21iaW5lZCB3aXRoIHBlZWsoMiksIHdlIGFyZSBhc3N1cmVkIHRoYXQgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAjICdcclxuJyBpcyBhbHdheXMgcmV0cmlldmVkIGNvbXBsZXRlbHkgYW5kIG5ldmVyIHNwbGl0IGludG8KLSAgICAgICAgICAgICMgc2VwYXJhdGUgbmV3bGluZXMgLSAnXHInLCAnXG4nIGR1ZSB0byBjb2luY2lkZW50YWwgcmVhZGFoZWFkcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIG1hdGNoID0gc2VsZi5QQVRURVJOLnNlYXJjaChyZWFkYWhlYWQpCi0gICAgICAgICAgICBuZXdsaW5lID0gbWF0Y2guZ3JvdXAoJ25ld2xpbmUnKQotICAgICAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLm5ld2xpbmVzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZXMgPSBbXQotICAgICAgICAgICAgICAgIGlmIG5ld2xpbmUgbm90IGluIHNlbGYubmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZXMuYXBwZW5kKG5ld2xpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihuZXdsaW5lKQotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lICsgYidcbicKLQotICAgICAgICAgICAgY2h1bmsgPSBtYXRjaC5ncm91cCgnY2h1bmsnKQotICAgICAgICAgICAgaWYgbGltaXQgPj0gMDoKLSAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rWzogbGltaXQgLSBsZW4obGluZSldCi0KLSAgICAgICAgICAgIHNlbGYuX29mZnNldCArPSBsZW4oY2h1bmspCi0gICAgICAgICAgICBsaW5lICs9IGNodW5rCi0KLSAgICAgICAgcmV0dXJuIGxpbmUKKyAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIGxpbWl0KQogCiAgICAgZGVmIHBlZWsoc2VsZiwgbj0xKToKICAgICAgICAgIiIiUmV0dXJucyBidWZmZXJlZCBieXRlcyB3aXRob3V0IGFkdmFuY2luZyB0aGUgcG9zaXRpb24uIiIiCkBAIC05NTgsNiArOTYxLDc2IEBACiAgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKIAogCitjbGFzcyBfWmlwV3JpdGVGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgemYsIHppbmZvLCB6aXA2NCk6CisgICAgICAgIHNlbGYuX3ppbmZvID0gemluZm8KKyAgICAgICAgc2VsZi5femlwNjQgPSB6aXA2NAorICAgICAgICBzZWxmLl96aXBmaWxlID0gemYKKyAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICBzZWxmLl9maWxlX3NpemUgPSAwCisgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgPSAwCisgICAgICAgIHNlbGYuX2NyYyA9IDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfZmlsZW9iaihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ppcGZpbGUuZnAKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgbmJ5dGVzID0gbGVuKGRhdGEpCisgICAgICAgIHNlbGYuX2ZpbGVfc2l6ZSArPSBuYnl0ZXMKKyAgICAgICAgc2VsZi5fY3JjID0gY3JjMzIoZGF0YSwgc2VsZi5fY3JjKQorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc29yOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgKz0gbGVuKGRhdGEpCisgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoZGF0YSkKKyAgICAgICAgcmV0dXJuIG5ieXRlcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNsb3NlKCkKKyAgICAgICAgIyBGbHVzaCBhbnkgZGF0YSBmcm9tIHRoZSBjb21wcmVzc29yLCBhbmQgdXBkYXRlIGhlYWRlciBpbmZvCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzb3I6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgKz0gbGVuKGJ1ZikKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoYnVmKQorICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSA9IHNlbGYuX2NvbXByZXNzX3NpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUgPSBzZWxmLl9maWxlX3NpemUKKyAgICAgICAgc2VsZi5femluZm8uQ1JDID0gc2VsZi5fY3JjCisgICAgICAgIHNlbGYuX3ppbmZvLmZpbGVfc2l6ZSA9IHNlbGYuX2ZpbGVfc2l6ZQorCisgICAgICAgICMgV3JpdGUgdXBkYXRlZCBoZWFkZXIgaW5mbworICAgICAgICBpZiBzZWxmLl96aW5mby5mbGFnX2JpdHMgJiAweDA4OgorICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQorICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHNlbGYuX3ppcDY0IGVsc2UgJzxMTEwnCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgc2VsZi5femluZm8uQ1JDLAorICAgICAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUsIHNlbGYuX3ppbmZvLmZpbGVfc2l6ZSkpCisgICAgICAgICAgICBzZWxmLl96aXBmaWxlLnN0YXJ0X2RpciA9IHNlbGYuX2ZpbGVvYmoudGVsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5femlwNjQ6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsZV9zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIHVuZXhwZWN0ZWRseSBleGNlZWRlZCBaSVA2NCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGltaXQnKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgdW5leHBlY3RlZGx5IGV4Y2VlZGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdaSVA2NCBsaW1pdCcpCisgICAgICAgICAgICAjIFNlZWsgYmFja3dhcmRzIGFuZCB3cml0ZSBmaWxlIGhlYWRlciAod2hpY2ggd2lsbCBub3cgaW5jbHVkZQorICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKKworICAgICAgICAgICAgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKKyAgICAgICAgICAgIHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyID0gc2VsZi5fZmlsZW9iai50ZWxsKCkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmouc2VlayhzZWxmLl96aW5mby5oZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShzZWxmLl96aW5mby5GaWxlSGVhZGVyKHNlbGYuX3ppcDY0KSkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmouc2VlayhzZWxmLl96aXBmaWxlLnN0YXJ0X2RpcikKKworICAgICAgICBzZWxmLl96aXBmaWxlLl93cml0aW5nID0gRmFsc2UKKworICAgICAgICAjIFN1Y2Nlc3NmdWxseSB3cml0dGVuOiBBZGQgZmlsZSB0byBvdXIgY2FjaGVzCisgICAgICAgIHNlbGYuX3ppcGZpbGUuZmlsZWxpc3QuYXBwZW5kKHNlbGYuX3ppbmZvKQorICAgICAgICBzZWxmLl96aXBmaWxlLk5hbWVUb0luZm9bc2VsZi5femluZm8uZmlsZW5hbWVdID0gc2VsZi5femluZm8KKwogY2xhc3MgWmlwRmlsZToKICAgICAiIiIgQ2xhc3Mgd2l0aCBtZXRob2RzIHRvIG9wZW4sIHJlYWQsIHdyaXRlLCBjbG9zZSwgbGlzdCB6aXAgZmlsZXMuCiAKQEAgLTk4Miw3ICsxMDU1LDcgQEAKICAgICAgICAgIiIiT3BlbiB0aGUgWklQIGZpbGUgd2l0aCBtb2RlIHJlYWQgJ3InLCB3cml0ZSAndycsIGV4Y2x1c2l2ZSBjcmVhdGUgJ3gnLAogICAgICAgICBvciBhcHBlbmQgJ2EnLiIiIgogICAgICAgICBpZiBtb2RlIG5vdCBpbiAoJ3InLCAndycsICd4JywgJ2EnKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiWmlwRmlsZSByZXF1aXJlcyBtb2RlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKIAogICAgICAgICBfY2hlY2tfY29tcHJlc3Npb24oY29tcHJlc3Npb24pCiAKQEAgLTEwMjAsNiArMTA5Myw3IEBACiAgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgPSAxCiAgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQogICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IFRydWUKKyAgICAgICAgc2VsZi5fd3JpdGluZyA9IEZhbHNlCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgbW9kZSA9PSAncic6CkBAIC0xMDU1LDcgKzExMjksNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5fc3RhcnRfZGlzayA9IHNlbGYuZnAudGVsbCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGZwID0gc2VsZi5mcAogICAgICAgICAgICAgc2VsZi5mcCA9IE5vbmUKQEAgLTEyMDQsNyArMTI3OCw3IEBACiAgICAgZGVmIHNldHBhc3N3b3JkKHNlbGYsIHB3ZCk6CiAgICAgICAgICIiIlNldCBkZWZhdWx0IHBhc3N3b3JkIGZvciBlbmNyeXB0ZWQgZmlsZXMuIiIiCiAgICAgICAgIGlmIHB3ZCBhbmQgbm90IGlzaW5zdGFuY2UocHdkLCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkuX19uYW1lX18pCiAgICAgICAgIGlmIHB3ZDoKICAgICAgICAgICAgIHNlbGYucHdkID0gcHdkCiAgICAgICAgIGVsc2U6CkBAIC0xMjE4LDcgKzEyOTIsNyBAQAogICAgIEBjb21tZW50LnNldHRlcgogICAgIGRlZiBjb21tZW50KHNlbGYsIGNvbW1lbnQpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21tZW50LCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbW1lbnQ6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShjb21tZW50KSkKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY29tbWVudDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKGNvbW1lbnQpLl9fbmFtZV9fKQogICAgICAgICAjIGNoZWNrIGZvciB2YWxpZCBjb21tZW50IGxlbmd0aAogICAgICAgICBpZiBsZW4oY29tbWVudCkgPiBaSVBfTUFYX0NPTU1FTlQ6CiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKQEAgLTEyMzMsMzAgKzEzMDcsNTUgQEAKICAgICAgICAgd2l0aCBzZWxmLm9wZW4obmFtZSwgInIiLCBwd2QpIGFzIGZwOgogICAgICAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQogCi0gICAgZGVmIG9wZW4oc2VsZiwgbmFtZSwgbW9kZT0iciIsIHB3ZD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIGZpbGUtbGlrZSBvYmplY3QgZm9yICduYW1lJy4iIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgIlUiLCAiclUiKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignb3BlbigpIHJlcXVpcmVzIG1vZGUgInIiLCAiVSIsIG9yICJyVSInKQotICAgICAgICBpZiAnVScgaW4gbW9kZToKLSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBkZWYgb3BlbihzZWxmLCBuYW1lLCBtb2RlPSJyIiwgcHdkPU5vbmUsICosIGZvcmNlX3ppcDY0PUZhbHNlKToKKyAgICAgICAgIiIiUmV0dXJuIGZpbGUtbGlrZSBvYmplY3QgZm9yICduYW1lJy4KKworICAgICAgICBuYW1lIGlzIGEgc3RyaW5nIGZvciB0aGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgWklQIGZpbGUsIG9yIGEgWmlwSW5mbworICAgICAgICBvYmplY3QuCisKKyAgICAgICAgbW9kZSBzaG91bGQgYmUgJ3InIHRvIHJlYWQgYSBmaWxlIGFscmVhZHkgaW4gdGhlIFpJUCBmaWxlLCBvciAndycgdG8KKyAgICAgICAgd3JpdGUgdG8gYSBmaWxlIG5ld2x5IGFkZGVkIHRvIHRoZSBhcmNoaXZlLgorCisgICAgICAgIHB3ZCBpcyB0aGUgcGFzc3dvcmQgdG8gZGVjcnlwdCBmaWxlcyAob25seSB1c2VkIGZvciByZWFkaW5nKS4KKworICAgICAgICBXaGVuIHdyaXRpbmcsIGlmIHRoZSBmaWxlIHNpemUgaXMgbm90IGtub3duIGluIGFkdmFuY2UgYnV0IG1heSBleGNlZWQKKyAgICAgICAgMiBHaUIsIHBhc3MgZm9yY2VfemlwNjQgdG8gdXNlIHRoZSBaSVA2NCBmb3JtYXQsIHdoaWNoIGNhbiBoYW5kbGUgbGFyZ2UKKyAgICAgICAgZmlsZXMuICBJZiB0aGUgc2l6ZSBpcyBrbm93biBpbiBhZHZhbmNlLCBpdCBpcyBiZXN0IHRvIHBhc3MgYSBaaXBJbmZvCisgICAgICAgIGluc3RhbmNlIGZvciBuYW1lLCB3aXRoIHppbmZvLmZpbGVfc2l6ZSBzZXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBtb2RlIG5vdCBpbiB7InIiLCAidyJ9OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignb3BlbigpIHJlcXVpcmVzIG1vZGUgInIiIG9yICJ3IicpCiAgICAgICAgIGlmIHB3ZCBhbmQgbm90IGlzaW5zdGFuY2UocHdkLCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkuX19uYW1lX18pCisgICAgICAgIGlmIHB3ZCBhbmQgKG1vZGUgPT0gInciKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInB3ZCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgcmVhZGluZyBmaWxlcyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHJlYWQgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB1c2UgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQogCiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5mbyBvYmplY3QKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCBaaXBJbmZvKToKICAgICAgICAgICAgICMgJ25hbWUnIGlzIGFscmVhZHkgYW4gaW5mbyBvYmplY3QKICAgICAgICAgICAgIHppbmZvID0gbmFtZQorICAgICAgICBlbGlmIG1vZGUgPT0gJ3cnOgorICAgICAgICAgICAgemluZm8gPSBaaXBJbmZvKG5hbWUpCisgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBHZXQgaW5mbyBvYmplY3QgZm9yIG5hbWUKICAgICAgICAgICAgIHppbmZvID0gc2VsZi5nZXRpbmZvKG5hbWUpCiAKKyAgICAgICAgaWYgbW9kZSA9PSAndyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb3Blbl90b193cml0ZSh6aW5mbywgZm9yY2VfemlwNjQ9Zm9yY2VfemlwNjQpCisKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlYWQgZnJvbSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgIgorICAgICAgICAgICAgICAgICAgICAiaXMgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZC4iKQorCisgICAgICAgICMgT3BlbiBmb3IgcmVhZGluZzoKICAgICAgICAgc2VsZi5fZmlsZVJlZkNudCArPSAxCi0gICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwgc2VsZi5fZnBjbG9zZSwgc2VsZi5fbG9jaykKKyAgICAgICAgemVmX2ZpbGUgPSBfU2hhcmVkRmlsZShzZWxmLmZwLCB6aW5mby5oZWFkZXJfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2ssIGxhbWJkYTogc2VsZi5fd3JpdGluZykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBTa2lwIHRoZSBmaWxlIGhlYWRlcjoKICAgICAgICAgICAgIGZoZWFkZXIgPSB6ZWZfZmlsZS5yZWFkKHNpemVGaWxlSGVhZGVyKQpAQCAtMTI5Niw3ICsxMzk1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBub3QgcHdkOgogICAgICAgICAgICAgICAgICAgICBwd2QgPSBzZWxmLnB3ZAogICAgICAgICAgICAgICAgIGlmIG5vdCBwd2Q6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRmlsZSAlcyBpcyBlbmNyeXB0ZWQsIHBhc3N3b3JkICIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGaWxlICVyIGlzIGVuY3J5cHRlZCwgcGFzc3dvcmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIGZvciBleHRyYWN0aW9uIiAlIG5hbWUpCiAKICAgICAgICAgICAgICAgICB6ZCA9IF9aaXBEZWNyeXB0ZXIocHdkKQpAQCAtMTMxNCwxMyArMTQxMyw1NiBAQAogICAgICAgICAgICAgICAgICAgICAjIGNvbXBhcmUgYWdhaW5zdCB0aGUgQ1JDIG90aGVyd2lzZQogICAgICAgICAgICAgICAgICAgICBjaGVja19ieXRlID0gKHppbmZvLkNSQyA+PiAyNCkgJiAweGZmCiAgICAgICAgICAgICAgICAgaWYgaFsxMV0gIT0gY2hlY2tfYnl0ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJCYWQgcGFzc3dvcmQgZm9yIGZpbGUiLCBuYW1lKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkJhZCBwYXNzd29yZCBmb3IgZmlsZSAlciIgJSBuYW1lKQogCiAgICAgICAgICAgICByZXR1cm4gWmlwRXh0RmlsZSh6ZWZfZmlsZSwgbW9kZSwgemluZm8sIHpkLCBUcnVlKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICB6ZWZfZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICByYWlzZQogCisgICAgZGVmIF9vcGVuX3RvX3dyaXRlKHNlbGYsIHppbmZvLCBmb3JjZV96aXA2ND1GYWxzZSk6CisgICAgICAgIGlmIGZvcmNlX3ppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImZvcmNlX3ppcDY0IGlzIFRydWUsIGJ1dCBhbGxvd1ppcDY0IHdhcyBGYWxzZSB3aGVuIG9wZW5pbmcgIgorICAgICAgICAgICAgICAgICJ0aGUgWklQIGZpbGUuIgorICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3Qgd3JpdGUgdG8gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFub3RoZXIgd3JpdGUgaGFuZGxlIG9wZW4gb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSBmaXJzdCBoYW5kbGUgYmVmb3JlIG9wZW5pbmcgYW5vdGhlci4iKQorCisgICAgICAgICMgU2l6ZXMgYW5kIENSQyBhcmUgb3ZlcndyaXR0ZW4gd2l0aCBjb3JyZWN0IGRhdGEgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgZmlsZQorICAgICAgICBpZiBub3QgaGFzYXR0cih6aW5mbywgJ2ZpbGVfc2l6ZScpOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAorICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAorICAgICAgICB6aW5mby5DUkMgPSAwCisKKyAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAorICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgIGlmIG5vdCBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDA4CisKKyAgICAgICAgaWYgbm90IHppbmZvLmV4dGVybmFsX2F0dHI6CisgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gMG82MDAgPDwgMTYgICMgcGVybWlzc2lvbnM6ID9ydy0tLS0tLS0KKworICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKKyAgICAgICAgemlwNjQgPSBzZWxmLl9hbGxvd1ppcDY0IGFuZCBcCisgICAgICAgICAgICAgICAgKGZvcmNlX3ppcDY0IG9yIHppbmZvLmZpbGVfc2l6ZSAqIDEuMDUgPiBaSVA2NF9MSU1JVCkKKworICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpCisKKyAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorCisgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCisKKyAgICAgICAgc2VsZi5fd3JpdGluZyA9IFRydWUKKyAgICAgICAgcmV0dXJuIF9aaXBXcml0ZUZpbGUoc2VsZiwgemluZm8sIHppcDY0KQorCiAgICAgZGVmIGV4dHJhY3Qoc2VsZiwgbWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAogICAgICAgICAgICB1c2luZyBpdHMgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseQpAQCAtMTM5MCw3ICsxNTMyLDcgQEAKICAgICAgICAgaWYgdXBwZXJkaXJzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModXBwZXJkaXJzKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHVwcGVyZGlycykKIAotICAgICAgICBpZiBtZW1iZXIuZmlsZW5hbWVbLTFdID09ICcvJzoKKyAgICAgICAgaWYgbWVtYmVyLmlzX2RpcigpOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIodGFyZ2V0cGF0aCk6CiAgICAgICAgICAgICAgICAgb3MubWtkaXIodGFyZ2V0cGF0aCkKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwYXRoCkBAIC0xNDA3LDkgKzE1NDksOSBAQAogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdEdXBsaWNhdGUgbmFtZTogJXInICUgemluZm8uZmlsZW5hbWUsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgaWYgc2VsZi5tb2RlIG5vdCBpbiAoJ3cnLCAneCcsICdhJyk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKICAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgpAQCAtMTQyOCwxMDUgKzE1NzAsNDMgQEAKICAgICAgICAgIiIiUHV0IHRoZSBieXRlcyBmcm9tIGZpbGVuYW1lIGludG8gdGhlIGFyY2hpdmUgdW5kZXIgdGhlIG5hbWUKICAgICAgICAgYXJjbmFtZS4iIiIKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbid0IHdyaXRlIHRvIFpJUCBhcmNoaXZlIHdoaWxlIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgZXhpc3RzIgorICAgICAgICAgICAgKQogCi0gICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKLSAgICAgICAgaXNkaXIgPSBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSkKLSAgICAgICAgbXRpbWUgPSB0aW1lLmxvY2FsdGltZShzdC5zdF9tdGltZSkKLSAgICAgICAgZGF0ZV90aW1lID0gbXRpbWVbMDo2XQotICAgICAgICAjIENyZWF0ZSBaaXBJbmZvIGluc3RhbmNlIHRvIHN0b3JlIGZpbGUgaW5mb3JtYXRpb24KLSAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguc3BsaXRkcml2ZShhcmNuYW1lKVsxXSkKLSAgICAgICAgd2hpbGUgYXJjbmFtZVswXSBpbiAob3Muc2VwLCBvcy5hbHRzZXApOgotICAgICAgICAgICAgYXJjbmFtZSA9IGFyY25hbWVbMTpdCi0gICAgICAgIGlmIGlzZGlyOgotICAgICAgICAgICAgYXJjbmFtZSArPSAnLycKLSAgICAgICAgemluZm8gPSBaaXBJbmZvKGFyY25hbWUsIGRhdGVfdGltZSkKLSAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IChzdFswXSAmIDB4RkZGRikgPDwgMTYgICAgICAjIFVuaXggYXR0cmlidXRlcwotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBaSVBfU1RPUkVECi0gICAgICAgIGVsaWYgY29tcHJlc3NfdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KKyAgICAgICAgemluZm8gPSBaaXBJbmZvLmZyb21fZmlsZShmaWxlbmFtZSwgYXJjbmFtZSkKKworICAgICAgICBpZiB6aW5mby5pc19kaXIoKToKKyAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCisgICAgICAgICAgICB6aW5mby5DUkMgPSAwCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgogCi0gICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKLSAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAotICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKLSAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgIGlmIHppbmZvLmlzX2RpcigpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CiAgICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCi0gICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQogCi0gICAgICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5DUkMgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZwogICAgICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQogICAgICAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwogICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcihGYWxzZSkpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDgKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCi0gICAgICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAotICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAotICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKDEwMjQgKiA4KQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gZmlsZV9zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgQ1JDID0gY3JjMzIoYnVmLCBDUkMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNtcHI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBjbXByLmNvbXByZXNzKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuZmx1c2goKQotICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gZmlsZV9zaXplCi0gICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMKLSAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKLSAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCi0gICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCi0gICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBub3QgemlwNjQgYW5kIHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgaGFzIGluY3JlYXNlZCBkdXJpbmcgY29tcHJlc3NpbmcnKQotICAgICAgICAgICAgICAgICAgICBpZiBjb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZScpCi0gICAgICAgICAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKLSAgICAgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQotICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoemluZm8uaGVhZGVyX29mZnNldCkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKLSAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIHNyYywgc2VsZi5vcGVuKHppbmZvLCAndycpIGFzIGRlc3Q6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZGVzdCwgMTAyNCo4KQogCiAgICAgZGVmIHdyaXRlc3RyKHNlbGYsIHppbmZvX29yX2FyY25hbWUsIGRhdGEsIGNvbXByZXNzX3R5cGU9Tm9uZSk6CiAgICAgICAgICIiIldyaXRlIGEgZmlsZSBpbnRvIHRoZSBhcmNoaXZlLiAgVGhlIGNvbnRlbnRzIGlzICdkYXRhJywgd2hpY2gKQEAgLTE1NDksNDcgKzE2MjksMjAgQEAKICAgICAgICAgICAgIHppbmZvID0gemluZm9fb3JfYXJjbmFtZQogCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSB0byBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW4ndCB3cml0ZSB0byBaSVAgYXJjaGl2ZSB3aGlsZSBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIGV4aXN0cy4iCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCiAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gbGVuKGRhdGEpICAgICAgICAgICAgIyBVbmNvbXByZXNzZWQgc2l6ZQogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQotICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKLSAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6Ci0gICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgotCi0gICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgICAgICAgIyBDUkMtMzIgY2hlY2tzdW0KLSAgICAgICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgICAgICBpZiBjbzoKLSAgICAgICAgICAgICAgICBkYXRhID0gY28uY29tcHJlc3MoZGF0YSkgKyBjby5mbHVzaCgpCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gemluZm8uZmlsZV9zaXplCi0gICAgICAgICAgICB6aXA2NCA9IHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIFwKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQKLSAgICAgICAgICAgIGlmIHppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUoIkZpbGVzaXplIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZShkYXRhKQotICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKLSAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCi0gICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCi0gICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgICAgICB3aXRoIHNlbGYub3Blbih6aW5mbywgbW9kZT0ndycpIGFzIGRlc3Q6CisgICAgICAgICAgICAgICAgZGVzdC53cml0ZShkYXRhKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIkNhbGwgdGhlICJjbG9zZSgpIiBtZXRob2QgaW4gY2FzZSB0aGUgdXNlciBmb3Jnb3QuIiIiCkBAIC0xNjAxLDYgKzE2NTQsMTEgQEAKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IGNsb3NlIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIGNsb3NpbmcgdGhlIHppcC4iKQorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoJ3cnLCAneCcsICdhJykgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcwogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKQEAgLTE3NDUsNyArMTgwMyw3IEBACiAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGhuYW1lKToKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgICAgICAgbGFiZWwgPSAncGF0aCcgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSkgZWxzZSAnZmlsZScKLSAgICAgICAgICAgICAgICBwcmludCgnJXMgIiVzIiBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgKGxhYmVsLCBwYXRobmFtZSkpCisgICAgICAgICAgICAgICAgcHJpbnQoJyVzICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSAobGFiZWwsIHBhdGhuYW1lKSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXIsIG5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGhuYW1lKToKQEAgLTE3NzYsNyArMTgzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXh0ID09ICIucHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsdGVyZnVuYyBhbmQgbm90IGZpbHRlcmZ1bmMocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgIiVzIiBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgJXIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLCBhcmNuYW1lID0gc2VsZi5fZ2V0X2NvZGVuYW1lKHBhdGhbMDotM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSkKQEAgLTE3OTMsNyArMTg1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGV4dCA9PSAiLnB5IjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRoWzA6LTNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUpCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCBkMDlkYTJmLi5lOTgzZjU0IDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTEwMSw2ICsxMDEsNyBAQAogCiBGV19QUkVGSVggPSBbIkxpYnJhcnkiLCAiRnJhbWV3b3JrcyIsICJQeXRob24uZnJhbWV3b3JrIl0KIEZXX1ZFUlNJT05fUFJFRklYID0gIi0tdW5kZWZpbmVkLS0iICMgaW5pdGlhbGl6ZWQgaW4gcGFyc2VPcHRpb25zCitGV19TU0xfRElSRUNUT1JZID0gIi0tdW5kZWZpbmVkLS0iICMgaW5pdGlhbGl6ZWQgaW4gcGFyc2VPcHRpb25zCiAKICMgVGhlIGRpcmVjdG9yeSB3ZSdsbCB1c2UgdG8gY3JlYXRlIHRoZSBidWlsZCAod2lsbCBiZSBlcmFzZWQgYW5kIHJlY3JlYXRlZCkKIFdPUktESVIgPSAiL3RtcC9fcHkiCkBAIC0yMDYsNDEgKzIwNywxMSBAQAogCiAgICAgTFRfMTBfNSA9IGJvb2woZ2V0RGVwdGFyZ2V0VHVwbGUoKSA8ICgxMCwgNSkpCiAKLSAgICBpZiBub3QgKDEwLCA1KSA8IGdldERlcHRhcmdldFR1cGxlKCkgPCAoMTAsIDEwKToKLSAgICAgICAgIyBUaGUgT3BlblNTTCBsaWJzIHNoaXBwZWQgd2l0aCBPUyBYIDEwLjUgYW5kIGVhcmxpZXIgYXJlCi0gICAgICAgICMgaG9wZWxlc3NseSBvdXQtb2YtZGF0ZSBhbmQgZG8gbm90IGluY2x1ZGUgQXBwbGUncyB0aWUtaW4gdG8KLSAgICAgICAgIyB0aGUgcm9vdCBjZXJ0aWZpY2F0ZXMgaW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgdmlhIFRFQQotICAgICAgICAjIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gT1MgWCAxMC42LiAgTm90ZSB0aGF0IHRoaXMgYXBwbGllcyB0bwotICAgICAgICAjIHByb2dyYW1zIGJ1aWx0IGFuZCBsaW5rZWQgd2l0aCBhIDEwLjUgU0RLIGV2ZW4gd2hlbiBydW4gb24KLSAgICAgICAgIyBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLgotICAgICAgICAjCi0gICAgICAgICMgRGVhbGluZyB3aXRoIENBcyBpcyBtZXNzeS4gIEZvciBub3csIGp1c3Qgc3VwcGx5IGEKLSAgICAgICAgIyBsb2NhbCBsaWJzc2wgYW5kIGxpYmNyeXB0byBmb3IgdGhlIG9sZGVyIGluc3RhbGxlciB2YXJpYW50cwotICAgICAgICAjIChlLmcuIHRoZSBweXRob24ub3JnIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlcikgdGhhdCB1c2UgdGhlCi0gICAgICAgICMgc2FtZSBkZWZhdWx0IHNzbCBjZXJ0ZmlsZSBsb2NhdGlvbiBhcyB0aGUgc3lzdGVtIGxpYnMgZG86Ci0gICAgICAgICMgICAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTC9jZXJ0LnBlbQotICAgICAgICAjIFRoZW4gYXQgbGVhc3QgVExTIGNvbm5lY3Rpb25zIGNhbiBiZSBuZWdvdGlhdGVkIHdpdGggc2l0ZXMgdGhhdAotICAgICAgICAjIHVzZSBzaGEtMjU2IGNlcnRzIGxpa2UgcHl0aG9uLm9yZywgYXNzdW1pbmcgdGhlIHByb3BlciBDQSBjZXJ0cwotICAgICAgICAjIGhhdmUgYmVlbiBzdXBwbGllZC4gIFRoZSBkZWZhdWx0IENBIGNlcnQgbWFuYWdlbWVudCBpc3N1ZXMgZm9yCi0gICAgICAgICMgMTAuNSBhbmQgZWFybGllciBidWlsZHMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZSwgb3RoZXIgdGhhbiBpdCBpcwotICAgICAgICAjIG5vdyBtb3JlIG9idmlvdXMgd2l0aCBjZXJ0IGNoZWNraW5nIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUKLSAgICAgICAgIyBzdGFuZGFyZCBsaWJyYXJ5LgotICAgICAgICAjCi0gICAgICAgICMgRm9yIGJ1aWxkcyB3aXRoIDEwLjYgdGhyb3VnaCAxMC45IFNES3MsCi0gICAgICAgICMgY29udGludWUgdG8gdXNlIHRoZSBkZXByZWNhdGVkIGJ1dAotICAgICAgICAjIGxlc3Mgb3V0LW9mLWRhdGUgQXBwbGUgMC45LjggbGlicyBmb3Igbm93LiAgV2hpbGUgdGhleSBhcmUgbGVzcwotICAgICAgICAjIHNlY3VyZSB0aGFuIHVzaW5nIGFuIHVwLXRvLWRhdGUgMS4wLjEgdmVyc2lvbiwgZG9pbmcgc28KLSAgICAgICAgIyBhdm9pZHMgdGhlIGJpZyBwcm9ibGVtcyBvZiBmb3JjaW5nIHVzZXJzIHRvIGhhdmUgdG8gbWFuYWdlCi0gICAgICAgICMgZGVmYXVsdCBDQXMgdGhlbXNlbHZlcywgdGhhbmtzIHRvIHRoZSBBcHBsZSBsaWJzIHVzaW5nIHByaXZhdGUgVEVBCi0gICAgICAgICMgQVBJcyBmb3IgY2VydCB2YWxpZGF0aW9uIGZyb20ga2V5Y2hhaW5zIGlmIHZhbGlkYXRpb24gdXNpbmcgdGhlCi0gICAgICAgICMgc3RhbmRhcmQgT3BlblNTTCBsb2NhdGlvbnMgKC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMLCBub3JtYWxseSBlbXB0eSkKLSAgICAgICAgIyBmYWlscy4KLSAgICAgICAgIwotICAgICAgICAjIFNpbmNlIEFwcGxlIHJlbW92ZWQgdGhlIGhlYWRlciBmaWxlcyBmb3IgdGhlIGRlcHJlY2F0ZWQgc3lzdGVtCi0gICAgICAgICMgT3BlblNTTCBhcyBvZiB0aGUgWGNvZGUgNyByZWxlYXNlIChmb3IgT1MgWCAxMC4xMCspLCB3ZSBkbyBub3QKLSAgICAgICAgIyBoYXZlIG11Y2ggY2hvaWNlIGJ1dCB0byBidWlsZCBvdXIgb3duIGNvcHkgaGVyZSwgdG9vLgorICAgICMgU2luY2UgQXBwbGUgcmVtb3ZlZCB0aGUgaGVhZGVyIGZpbGVzIGZvciB0aGUgZGVwcmVjYXRlZCBzeXN0ZW0KKyAgICAjIE9wZW5TU0wgYXMgb2YgdGhlIFhjb2RlIDcgcmVsZWFzZSAoZm9yIE9TIFggMTAuMTArKSwgd2UgZG8gbm90CisgICAgIyBoYXZlIG11Y2ggY2hvaWNlIGJ1dCB0byBidWlsZCBvdXIgb3duIGNvcHkgaGVyZSwgdG9vLgogCi0gICAgICAgIHJlc3VsdC5leHRlbmQoWworICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCiAgICAgICAgICAgICAgIG5hbWU9Ik9wZW5TU0wgMS4wLjJoIiwKICAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0xLjAuMmgudGFyLmd6IiwKQEAgLTI1Miw3ICsyMjMsNyBAQAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKICAgICAgICAgICAgICAgaW5zdGFsbD1Ob25lLAogICAgICAgICAgICksCi0gICAgICAgIF0pCisgICAgXSkKIAogIyAgIERpc2FibGUgZm9yIG5vdwogICAgIGlmIEZhbHNlOiAgICMgaWYgZ2V0RGVwdGFyZ2V0VHVwbGUoKSA+ICgxMCwgNSk6CkBAIC0yOTksOSArMjcwLDkgQEAKICAgICBpZiBQWVRIT05fMzoKICAgICAgICAgcmVzdWx0LmV4dGVuZChbCiAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iWFogNS4wLjUiLAotICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjAuNS50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nMTlkOTI0ZTA2NmI2ZmZmMGJjOWQxOTgxYjRlNTMxOTYnLAorICAgICAgICAgICAgICBuYW1lPSJYWiA1LjIuMiIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LTUuMi4yLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc3Y2Y2YTg1NDRhN2RhZThlODEwNmZkZjdhZGRmYTI4YycsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwogICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcnLAogICAgICAgICAgICAgICBdCkBAIC0zNDQsMTAgKzMxNSwxMSBAQAogICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICApLAogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlNRTGl0ZSAzLjguMTEiLAotICAgICAgICAgICAgICB1cmw9Imh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvMjAxNS9zcWxpdGUtYXV0b2NvbmYtMzA4MTEwMC50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nNzdiNDUxOTI1MTIxMDI4YmVmYmRkYmY0NWVhMmJjNDknLAorICAgICAgICAgICAgICBuYW1lPSJTUUxpdGUgMy4xNC4xIiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5zcWxpdGUub3JnLzIwMTYvc3FsaXRlLWF1dG9jb25mLTMxNDAxMDAudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09JzM2MzRhOTBhM2Y0OTU0MTQ2MmJjYWVkMzQ3NGIyNjg0JywKICAgICAgICAgICAgICAgZXh0cmFfY2ZsYWdzPSgnLU9zICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTNCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFMzX1BBUkVOVEhFU0lTICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX1JUUkVFICcKQEAgLTY3NSw2ICs2NDcsNyBAQAogICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCiAgICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MsIENYWAogICAgIGdsb2JhbCBGV19WRVJTSU9OX1BSRUZJWAorICAgIGdsb2JhbCBGV19TU0xfRElSRUNUT1JZCiAKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KQEAgLTczNSw2ICs3MDgsNyBAQAogICAgIENDLCBDWFggPSBnZXRUYXJnZXRDb21waWxlcnMoKQogCiAgICAgRldfVkVSU0lPTl9QUkVGSVggPSBGV19QUkVGSVhbOl0gKyBbIlZlcnNpb25zIiwgZ2V0VmVyc2lvbigpXQorICAgIEZXX1NTTF9ESVJFQ1RPUlkgPSBGV19WRVJTSU9OX1BSRUZJWFs6XSArIFsiZXRjIiwgIm9wZW5zc2wiXQogCiAgICAgcHJpbnQoIi0tIFNldHRpbmdzOiIpCiAgICAgcHJpbnQoIiAgICogU291cmNlIGRpcmVjdG9yeTogICAgJXMiICUgU1JDRElSKQpAQCAtODc2LDcgKzg1MCw3IEBACiAgICAgICAgICAgICAic2hhcmVkIiwKICAgICAgICAgICAgICItLWluc3RhbGxfcHJlZml4PSVzIiVzaGVsbFF1b3RlKGFyY2hiYXNlKSwKICAgICAgICAgICAgICItLXByZWZpeD0lcyIlb3MucGF0aC5qb2luKCIvIiwgKkZXX1ZFUlNJT05fUFJFRklYKSwKLSAgICAgICAgICAgICItLW9wZW5zc2xkaXI9L1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wiLAorICAgICAgICAgICAgIi0tb3BlbnNzbGRpcj0lcyIlb3MucGF0aC5qb2luKCIvIiwgKkZXX1NTTF9ESVJFQ1RPUlkpLAogICAgICAgICBdCiAgICAgICAgIGlmIG5vX2FzbToKICAgICAgICAgICAgIGNvbmZpZ3VyZV9vcHRzLmFwcGVuZCgibm8tYXNtIikKQEAgLTExOTQsMTIgKzExNjgsMTQgQEAKICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsIGdldFZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAnbGliJykpKSkKIAotICAgIHBhdGhfdG9fbGliID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCisgICAgZnJtRGlyVmVyc2lvbmVkID0gb3MucGF0aC5qb2luKGZybURpciwgJ1ZlcnNpb25zJywgdmVyc2lvbikKKyAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgIyBjcmVhdGUgZGlyZWN0b3J5IGZvciBPcGVuU1NMIGNlcnRpZmljYXRlcworICAgIHNzbERpciA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdldGMnLCAnb3BlbnNzbCcpCisgICAgb3MubWFrZWRpcnMoc3NsRGlyKQogCiAgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKLSAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKICAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKQEAgLTEyNDksNiArMTIyNSw4IEBACiAgICAgICAgIExEVkVSU0lPTiA9IExEVkVSU0lPTi5yZXBsYWNlKCckKFZFUlNJT04pJywgVkVSU0lPTikKICAgICAgICAgTERWRVJTSU9OID0gTERWRVJTSU9OLnJlcGxhY2UoJyQoQUJJRkxBR1MpJywgQUJJRkxBR1MpCiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnLScgKyBMRFZFUlNJT04KKyAgICAgICAgaWYgZ2V0VmVyc2lvbk1ham9yTWlub3IoKSA+PSAoMywgNik6CisgICAgICAgICAgICBjb25maWdfc3VmZml4ID0gY29uZmlnX3N1ZmZpeCArICctZGFyd2luJwogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnJyAgICAgICMgUHl0aG9uIDIueAogCkBAIC0xMjc0LDcgKzEyNTIsNyBAQAogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQogCi0gICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEgaWYgaXQgZXhpc3RzCisgICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEKICAgICAjCiAgICAgIyBUT0RPOiBtYWtlIHRoaXMgbW9yZSByb2J1c3QhICB0ZXN0X3N5c2NvbmZpZ19tb2R1bGUgb2YKICAgICAjIGRpc3R1dGlscy50ZXN0cy50ZXN0X3N5c2NvbmZpZy5TeXNjb25maWdUZXN0Q2FzZSB0ZXN0cyB0aGF0CkBAIC0xMjg4LDI4ICsxMjY2LDMxIEBACiAgICAgIyBfc3lzY29uZmlnZGF0YS5weSkuCiAKICAgICBpbXBvcnQgcHByaW50Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKLSAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQotICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0Ci0gICAgICAgIGV4ZWMoZGF0YSkKLSAgICAgICAgdmFycyA9IHt9Ci0gICAgICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgotICAgICAgICAgICAgaWYgdHlwZSh2KSA9PSB0eXBlKCcnKToKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCi0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UocCArICcgJywgJycpCi0gICAgICAgICAgICB2YXJzW2tdID0gdgorICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAjIFhYWCB0aGlzIGlzIGV4dHJhLWZyYWdpbGUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhX21fZGFyd2luX2Rhcndpbi5weScpCisgICAgZWxzZToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKKyAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQorICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICBmcC5jbG9zZSgpCisgICAgIyBjcmVhdGUgYnVpbGRfdGltZV92YXJzIGRpY3QKKyAgICBleGVjKGRhdGEpCisgICAgdmFycyA9IHt9CisgICAgZm9yIGssIHYgaW4gYnVpbGRfdGltZV92YXJzLml0ZW1zKCk6CisgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6CisgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6CisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgnICcgKyBwLCAnJykKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQorICAgICAgICB2YXJzW2tdID0gdgogCi0gICAgICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgICAgICMgZHVwbGljYXRlZCBmcm9tIHN5c2NvbmZpZy5fZ2VuZXJhdGVfcG9zaXhfdmFycygpCi0gICAgICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKLSAgICAgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKLSAgICAgICAgZnAud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCi0gICAgICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQotICAgICAgICBmcC5jbG9zZSgpCisgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKKyAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQorICAgIGZwLmNsb3NlKCkKIAogICAgICMgQWRkIHN5bWxpbmtzIGluIC91c3IvbG9jYWwvYmluLCB1c2luZyByZWxhdGl2ZSBsaW5rcwogICAgIHVzcl9sb2NhbF9iaW4gPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ3VzcicsICdsb2NhbCcsICdiaW4nKQpAQCAtMTYzNiw2ICsxNjE3LDggQEAKICAgICBwYXRjaEZpbGUoInJlc291cmNlcy9SZWFkTWUucnRmIiwgIGZuKQogICAgIGZuID0gb3MucGF0aC5qb2luKGZvbGRlciwgIlVwZGF0ZSBTaGVsbCBQcm9maWxlLmNvbW1hbmQiKQogICAgIHBhdGNoU2NyaXB0KCJzY3JpcHRzL3Bvc3RmbGlnaHQucGF0Y2gtcHJvZmlsZSIsICBmbikKKyAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJJbnN0YWxsIENlcnRpZmljYXRlcy5jb21tYW5kIikKKyAgICBwYXRjaFNjcmlwdCgicmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQiLCAgZm4pCiAgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCmluZGV4IDY1ZTNmMTQuLjUyM2ZhYmIgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKQEAgLTEsMTA2ICsxLDc2IEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDhcY29jb2FzdWJydGYxNzAKK3tccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTUwNFxjb2NvYXN1YnJ0ZjM5MAoge1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO1xmMVxmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyTmV3UFNNVDt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9Cit7XCpcZXhwYW5kZWRjb2xvcnRibDtcY3NncmF5XGMxMDAwMDA7fQogXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMzM4MFx2aWV3aDE0NjAwXHZpZXdraW5kMAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIFB5dGhvbiAkRlVMTF9WRVJTSU9OIGZvciBNYWMgT1MgWCAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGZvciB0aGUgZm9sbG93aW5nIGFyY2hpdGVjdHVyZShzKTogJEFSQ0hJVEVDVFVSRVMuXAogXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGIgXGNmMCBcdWwgXHVsYzAgV2hpY2ggaW5zdGFsbGVyIHZhcmlhbnQgc2hvdWxkIEkgdXNlPwogXGIwIFx1bG5vbmUgXAogXAotUHl0aG9uLm9yZyBwcm92aWRlcyB0d28gaW5zdGFsbGVyIHZhcmlhbnRzIGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgRm9yIFB5dGhvbiAzLjYsIHRoZSBweXRob24ub3JnIHdlYnNpdGUgbm93IHByb3ZpZGVzIG9ubHkgb25lIGluc3RhbGxlciB2YXJpYW50IGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKIFxpIDY0LWJpdC8zMi1iaXQgSW50ZWwKIFxpMCAgUHl0aG9uIGNhcGFibGUgb2YgcnVubmluZyBvbiAKIFxpIE1hYyBPUyBYIDEwLjYgKFNub3cgTGVvcGFyZCkKLVxpMCAgb3IgbGF0ZXI7IGFuZCBvbmUgdGhhdCBpbnN0YWxscyBhIAotXGkgMzItYml0LW9ubHkgKEludGVsIGFuZCBQUEMpCi1caTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCi1caSBNYWMgT1MgWCAxMC41IChMZW9wYXJkKQogXGkwICBvciBsYXRlci4gIFRoaXMgUmVhZE1lIHdhcyBpbnN0YWxsZWQgd2l0aCB0aGUgCiBcaSAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi1caTAgIHZhcmlhbnQuICBVbmxlc3MgeW91IGFyZSBpbnN0YWxsaW5nIHRvIGFuIDEwLjUgc3lzdGVtIG9yIHlvdSBuZWVkIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiBydW4gb24gMTAuNSBzeXN0ZW1zLCB1c2UgdGhlIDEwLjYgdmFyaWFudCBpZiBwb3NzaWJsZS4gIFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgb3BlcmF0aW5nIHN5c3RlbSBmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggMTAuNiBhbmQgeW91IG1heSBzZWUgYmV0dGVyIHBlcmZvcm1hbmNlIHVzaW5nIDY0LWJpdCBtb2RlLiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBBbHNvIHNlZSAKLVxpIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTAotXGkwICBiZWxvdy4gIFRoZSBQeXRob25zIGluc3RhbGxlZCBieSB0aGVzZSBpbnN0YWxsZXJzIGFyZSBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgdmFyaWVzIGJ5IGluc3RhbGxlciB2YXJpYW50IGFuZCBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoZSBMaWNlbnNlLnJ0ZiBmaWxlLgorXGkwICB2YXJpYW50LiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBUaGUgUHl0aG9uIGluc3RhbGxlZCBieSB0aGlzIGluc3RhbGxlciBpcyBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KIFxiIFx1bCBcCiBcCi1VcGRhdGUgeW91ciB2ZXJzaW9uIG9mIFRjbC9UayB0byB1c2UgSURMRSBvciBvdGhlciBUayBhcHBsaWNhdGlvbnMKK0NlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYjAgXGNmMCBcdWxub25lIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgVGhpcyB2YXJpYW50IG9mIFB5dGhvbiAzLjYgbm93IGluY2x1ZGVzIGl0cyBvd24gcHJpdmF0ZSBjb3B5IG9mIE9wZW5TU0wgMS4wLjIuICBVbmxpa2UgcHJldmlvdXMgcmVsZWFzZXMsIHRoZSBkZXByZWNhdGVkIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIGFyZSBubyBsb25nZXIgdXNlZC4gIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKK1xpIEtleWNoYWluIEFjY2VzcyAKK1xpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAorXGkgc2VjdXJpdHkKK1xpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYXJlIG5vIGxvbmdlciB1c2VkIGFzIGRlZmF1bHRzIGJ5IHRoZSBQeXRob24gCitcZjEgc3NsCitcZjAgIG1vZHVsZS4gIEZvciAzLjYuMGIxLCBhIHNhbXBsZSBjb21tYW5kIHNjcmlwdCBpcyBpbmNsdWRlZCBpbiAKK1xmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAzLjYKK1xmMCAgdG8gaW5zdGFsbCBhIGN1cmF0ZWQgYnVuZGxlIG9mIGRlZmF1bHQgcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgCitcZjEgY2VydGlmaQorXGYwICBwYWNrYWdlICh7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NlcnRpZmkifX17XGZsZHJzbHQgaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpfX0pLiAgSWYgeW91IGNob29zZSB0byB1c2UgCitcZjEgY2VydGlmaQorXGYwICwgeW91IHNob3VsZCBjb25zaWRlciBzdWJzY3JpYmluZyB0byB0aGV7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL2NlcnRpZmkuaW8vZW4vbGF0ZXN0LyJ9fXtcZmxkcnNsdCAgcHJvamVjdCdzIGVtYWlsIHVwZGF0ZSBzZXJ2aWNlfX0gdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY2VydGlmaWNhdGUgYnVuZGxlIGlzIHVwZGF0ZWQuICBNb3JlIG9wdGlvbnMgd2lsbCBiZSBwcm92aWRlZCBwcmlvciB0byB0aGUgZmluYWwgcmVsZWFzZSBvZiAzLjYuMC5cCitcCitUaGUgYnVuZGxlZCAKK1xmMSBwaXAKK1xmMCAgaW5jbHVkZWQgd2l0aCB0aGUgUHl0aG9uIDMuNiBpbnN0YWxsZXIgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKK1wKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwIFx1bCBVcGRhdGUgeW91ciB2ZXJzaW9uIG9mIFRjbC9UayB0byB1c2UgSURMRSBvciBvdGhlciBUayBhcHBsaWNhdGlvbnMKIFxiMCBcdWxub25lIFwKIFwKIFRvIHVzZSBJRExFIG9yIG90aGVyIHByb2dyYW1zIHRoYXQgdXNlIHRoZSBUa2ludGVyIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSB0b29sa2l0LCB5b3UgbmVlZCB0byBpbnN0YWxsIGEgbmV3ZXIgdGhpcmQtcGFydHkgdmVyc2lvbiBvZiB0aGUgCiBcaSBUY2wvVGsKIFxpMCAgZnJhbWV3b3Jrcy4gIFZpc2l0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy90Y2x0ay99fSBmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mIAogXGkgVGNsL1RrCi1caTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC5cCitcaTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC4gIEZvciB0aGUgaW5pdGlhbCBwcmV2aWV3IHJlbGVhc2VzIG9mIFB5dGhvbiAzLjYsIHRoZSBpbnN0YWxsZXIgaXMgc3RpbGwgbGlua2VkIHdpdGggVGNsL1RrIDguNTsgdGhpcyB3aWxsIGxpa2VseSBjaGFuZ2UgcHJpb3IgdG8gdGhlIGZpbmFsIHJlbGVhc2Ugb2YgMy42LjAuXAogCiBcYiBcdWwgXAotQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAorT3RoZXIgY2hhbmdlc1wKIAogXGIwIFx1bG5vbmUgXAotUHl0aG9uIDMuNSBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IHdlcmUgcmVsZWFzZWQgaW4gUHl0aG9uIDMuNC4zIGFuZCBQeXRob24gMi43LjEwLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCi1caSBodHRwbGliCi1caTAgLCAKLVxpIHVybGxpYgotXGkwICwgYW5kIAotXGkgeG1scnBjbGliCi1caTAgLCB0byBieSBkZWZhdWx0IHZlcmlmeSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHNlcnZlcnMgb3ZlciBzZWN1cmUgKFRMUykgY29ubmVjdGlvbnMuICBUaGUgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCBieSB0aGUgT3BlblNTTCBsaWJyYXJpZXMgdGhhdCBQeXRob24gaXMgbGlua2VkIHRvLiAgUHJpb3IgdG8gMy40LjMsIGJvdGggcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKLVxpIEtleWNoYWluIEFjY2VzcyAKLVxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAotXGkgc2VjdXJpdHkKLVxpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkuXAotXAotRm9yIE9TIFggMTAuNSwgQXBwbGUgcHJvdmlkZXMgCi1caSBPcGVuU1NMIDAuOS43Ci1caTAgIGxpYnJhcmllcy4gIFRoaXMgdmVyc2lvbiBvZiBBcHBsZSdzIE9wZW5TU0wgCi1cYiBkb2VzIG5vdAotXGIwICB1c2UgdGhlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrLCBldmVuIHdoZW4gdXNlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLiAgSW5zdGVhZCBpdCBjb25zdWx0cyBhIHRyYWRpdGlvbmFsIE9wZW5TU0wgY29uY2F0ZW5hdGVkIGNlcnRpZmljYXRlIGZpbGUgKAotXGkgY2FmaWxlCi1caTAgKSBvciBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnkgKAotXGkgY2FwYXRoCi1caTAgKSwgbG9jYXRlZCBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKLVxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHRoZSAKLVxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wLjIKLVxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKLVxmMSBweTJhcHB9fSwgeW91IG1heSBub3cgbmVlZCB0byBidW5kbGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZW0gb3Igb3RoZXJ3aXNlIHN1cHBseSBub24tZGVmYXVsdCBTU0wgY29udGV4dHMuXAotXAotRm9yIE9TIFggMTAuNissIEFwcGxlIGFsc28gcHJvdmlkZXMgCi1caSBPcGVuU1NMCi1caTAgIAotXGkgMC45LjggbGlicmFyaWVzCi1caTAgLiAgQXBwbGUncyAwLjkuOCB2ZXJzaW9uIGluY2x1ZGVzIGFuIGltcG9ydGFudCBhZGRpdGlvbmFsIGZlYXR1cmU6IGlmIGEgY2VydGlmaWNhdGUgY2Fubm90IGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBtYW51YWxseSBhZG1pbmlzdGVyZWQgY2VydGlmaWNhdGVzIGluIAotXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCi1caSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKLVxpIFB5UEkKLVxpMCAuXAotXAotVGhlIGJ1bmRsZWQgCi1cZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAotXAotCi1cYiBcdWwgT3RoZXIgY2hhbmdlc1wKLQotXGIwIFx1bG5vbmUgXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIEZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKK0ZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKIFxpIFdoYXQncyBuZXcKIFxpMCAgc2VjdGlvbiBpbiB0aGUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb2MvIn19e1xmbGRyc2x0IERvY3VtZW50YXRpb24gU2V0fX0gZm9yIHRoaXMgcmVsZWFzZSBhbmQgaXRzIAogXGkgUmVsZWFzZSBOb3RlcwogXGkwICBsaW5rIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKIAotXGIgXGNmMCBcdWwgXAorXGIgXHVsIFwKIFB5dGhvbiAzIGFuZCBQeXRob24gMiBDby1leGlzdGVuY2VcCiAKIFxiMCBcdWxub25lIFwKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGRmYjc1ZDguLjNhOWFiMDQgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSw4ICsxLDkgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0M1xjb2NvYXN1YnJ0ZjE2MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTA0CiBcY29jb2FzY3JlZW5mb250czF7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTE2LDggKzE3LDE0IEBACiBcYiBJRExFCiBcYjAgLlwKIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAotXGIgSU1QT1JUQU5UOgorXGIgXGNmMCBORVc6CitcYjAgICBUaGVyZSBhcmUgaW1wb3J0YW50IGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlIHJlZ2FyZGluZyBuZXR3b3JrIHNlY3VyaXR5IGFuZCB0cnVzdCBjZXJ0aWZpY2F0ZXMuICBQbGVhc2Ugc2VlIHRoZSBSZWFkTWUgZm9yIG1vcmUgZGV0YWlscy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKIFxiMCAgYW5kIG90aGVyIHByb2dyYW1zIHVzaW5nIHRoZSAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZCBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDJlMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorCisvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQFBZVkVSQC9iaW4vcHl0aG9uQFBZVkVSQCA8PCAiRU9GIgorCisjIGluc3RhbGxfY2VydGlmaS5weQorIworIyBzYW1wbGUgc2NyaXB0IHRvIGluc3RhbGwgb3IgdXBkYXRlIGEgc2V0IG9mIGRlZmF1bHQgUm9vdCBDZXJ0aWZpY2F0ZXMKKyMgZm9yIHRoZSBzc2wgbW9kdWxlLiAgVXNlcyB0aGUgY2VydGlmaWNhdGVzIHByb3ZpZGVkIGJ5IHRoZSBjZXJ0aWZpIHBhY2thZ2U6CisjICAgICAgIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaQorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3NsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworU1RBVF8wbzc3NSA9ICggc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSIHwgc3RhdC5TX0lYVVNSCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVdHUlAgfCBzdGF0LlNfSVhHUlAKKyAgICAgICAgICAgICB8IHN0YXQuU19JUk9USCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWE9USCApCisKK2RlZiBtYWluKCk6CisgICAgb3BlbnNzbF9kaXIsIG9wZW5zc2xfY2FmaWxlID0gb3MucGF0aC5zcGxpdCgKKyAgICAgICAgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpLm9wZW5zc2xfY2FmaWxlKQorCisgICAgcHJpbnQoIiAtLSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgY2VydGlmaSIpCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgIi1FIiwgIi1zIiwgIi1tIiwgInBpcCIsICJpbnN0YWxsIiwgIi0tdXBncmFkZSIsICJjZXJ0aWZpIl0pCisKKyAgICBpbXBvcnQgY2VydGlmaQorCisgICAgIyBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRlZmF1bHQgU1NMIGRpcmVjdG9yeQorICAgIG9zLmNoZGlyKG9wZW5zc2xfZGlyKQorICAgIHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUgPSBvcy5wYXRoLnJlbHBhdGgoY2VydGlmaS53aGVyZSgpKQorICAgIHByaW50KCIgLS0gcmVtb3ZpbmcgYW55IGV4aXN0aW5nIGZpbGUgb3IgbGluayIpCisgICAgdHJ5OgorICAgICAgICBvcy5yZW1vdmUob3BlbnNzbF9jYWZpbGUpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgcHJpbnQoIiAtLSBjcmVhdGluZyBzeW1saW5rIHRvIGNlcnRpZmkgY2VydGlmaWNhdGUgYnVuZGxlIikKKyAgICBvcy5zeW1saW5rKHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUsIG9wZW5zc2xfY2FmaWxlKQorICAgIHByaW50KCIgLS0gc2V0dGluZyBwZXJtaXNzaW9ucyIpCisgICAgb3MuY2htb2Qob3BlbnNzbF9jYWZpbGUsIFNUQVRfMG83NzUpCisgICAgcHJpbnQoIiAtLSB1cGRhdGUgY29tcGxldGUiKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorRU9GCmRpZmYgLS1naXQgYS9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKaW5kZXggOTg2NzYwZC4uNTk5NGMxOCAxMDA2NDQKLS0tIGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CisrKyBiL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQpAQCAtNjgsNiArNjgsNiBAQAogICAgICAgICBicmVhawogCiAjIE5vdyBpdCBpcyBzYWZlIHRvIGltcG9ydCBpZGxlbGliLgotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IGIzNzljZTkuLjhlOTc5NDggMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQ4LDYgKzQ4LDEwIEBACiBMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAogTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAogTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKK0RUUkFDRT0gICAgICAgICBARFRSQUNFQAorREZMQUdTPSAgICAgICAgIEBERkxBR1NACitEVFJBQ0VfSEVBREVSUz0gQERUUkFDRV9IRUFERVJTQAorRFRSQUNFX09CSlM9ICAgIEBEVFJBQ0VfT0JKU0AKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTEwOSw2ICsxMTMsNyBAQAogCiAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKK01VTFRJQVJDSF9DUFBGTEFHUyA9IEBNVUxUSUFSQ0hfQ1BQRkxBR1NACiAKICMgSW5zdGFsbCBwcmVmaXggZm9yIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcwogcHJlZml4PQkJQHByZWZpeEAKQEAgLTIzNCw3ICsyMzksNyBAQAogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudGVkIHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldC4KICMgV2UgZXhjbHVkZSB1bml0dGVzdHMgd2l0aCAteCB0aGF0IHRha2UgYSByZWRpY3VsaW91cyBhbW91bnQgb2YgdGltZSB0bwogIyBydW4gaW4gdGhlIGluc3RydW1lbnRlZCB0cmFpbmluZyBidWlsZCBvciBkbyBub3QgcHJvdmlkZSBtdWNoIHZhbHVlLgotUFJPRklMRV9UQVNLPS1tIHRlc3QucmVncnRlc3QgLS1wZ28gLXggdGVzdF9hc3luY29yZSB0ZXN0X2dkYiB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrIHRlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZyB0ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3biB0ZXN0X3N1YnByb2Nlc3MKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvCiAKICMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKIENPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCkBAIC0yNTMsOSArMjU4LDYgQEAKIAkJTW9kdWxlcy9tYWluLm8gXAogCQlNb2R1bGVzL2djbW9kdWxlLm8KIAotIyBVc2VkIG9mIHNpZ25hbG1vZHVsZS5vIGlzIG5vdCBhdmFpbGFibGUKLVNJR05BTF9PQkpTPQlAU0lHTkFMX09CSlNACi0KIElPX0g9CQlNb2R1bGVzL19pby9faW9tb2R1bGUuaAogCiBJT19PQkpTPQlcCkBAIC0yODAsMTggKzI4Miw2IEBACiAjIFBhcnNlcgogUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCiAKLVBTUkNTPQkJXAotCQlQYXJzZXIvYWNjZWxlci5jIFwKLQkJUGFyc2VyL2dyYW1tYXIxLmMgXAotCQlQYXJzZXIvbGlzdG5vZGUuYyBcCi0JCVBhcnNlci9ub2RlLmMgXAotCQlQYXJzZXIvcGFyc2VyLmMgXAotCQlQYXJzZXIvYml0c2V0LmMgXAotCQlQYXJzZXIvbWV0YWdyYW1tYXIuYyBcCi0JCVBhcnNlci9maXJzdHNldHMuYyBcCi0JCVBhcnNlci9ncmFtbWFyLmMgXAotCQlQYXJzZXIvcGdlbi5jCi0KIFBPQkpTPQkJXAogCQlQYXJzZXIvYWNjZWxlci5vIFwKIAkJUGFyc2VyL2dyYW1tYXIxLm8gXApAQCAtMzA2LDE2ICsyOTYsNiBAQAogCiBQQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvcGFyc2V0b2subyBQYXJzZXIvdG9rZW5pemVyLm8KIAotUEdTUkNTPQkJXAotCQlPYmplY3RzL29ibWFsbG9jLmMgXAotCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5jIFwKLQkJUHl0aG9uL215c25wcmludGYuYyBcCi0JCVB5dGhvbi9weWN0eXBlLmMgXAotCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4uYyBcCi0JCVBhcnNlci9wcmludGdyYW1tYXIuYyBcCi0JCVBhcnNlci9wYXJzZXRva19wZ2VuLmMgXAotCQlQYXJzZXIvcGdlbm1haW4uYwotCiBQR09CSlM9CQlcCiAJCU9iamVjdHMvb2JtYWxsb2MubyBcCiAJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLm8gXApAQCAtMzMxLDcgKzMxMSw2IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAogCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM0MCw3ICszMTksNyBAQAogT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQogT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAogT1BDT0RFX0hfR0VOPQkkKFBZVEhPTl9GT1JfR0VOKSAkKE9QQ09ERV9IX1NDUklQVCkgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSCkKLSMKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKQEAgLTQxNiw3ICszOTUsOCBAQAogCQlQeXRob24vJChEWU5MT0FERklMRSkgXAogCQkkKExJQk9CSlMpIFwKIAkJJChNQUNIREVQX09CSlMpIFwKLQkJJChUSFJFQURPQkopCisJCSQoVEhSRUFET0JKKSBcCisJCSQoRFRSQUNFX09CSlMpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTQ3MCwxMyArNDUwLDIxIEBACiAJCSQoT0JKRUNUX09CSlMpIFwKIAkJJChQWVRIT05fT0JKUykgXAogCQkkKE1PRFVMRV9PQkpTKSBcCi0JCSQoU0lHTkFMX09CSlMpIFwKIAkJJChNT0RPQkpTKQogCiBMSUJSQVJZX09CSlM9CVwKIAkJJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pIFwKIAkJUHl0aG9uL2Zyb3plbi5vCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERUcmFjZQorCisjIE9uIHNvbWUgc3lzdGVtcywgb2JqZWN0IGZpbGVzIHRoYXQgcmVmZXJlbmNlIERUcmFjZSBwcm9iZXMgbmVlZCB0byBiZSBtb2RpZmllZAorIyBpbi1wbGFjZSBieSBkdHJhY2UoMSkuCitEVFJBQ0VfREVQUyA9IFwKKwlQeXRob24vY2V2YWwubworIyBYWFg6IHNob3VsZCBnY21vZHVsZSwgZXRjLiBiZSBoZXJlLCB0b28/CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUnVsZXMKIApAQCAtNTMyLDE1ICs1MjAsMjMgQEAKIAkgICAgLS1iYXNlLWRpcmVjdG9yeSAkKHJlYWxwYXRoICQoYWJzX2J1aWxkZGlyKSkgXAogCSAgICAtLXBhdGggJChyZWFscGF0aCAkKGFic19zcmNkaXIpKSBcCiAJICAgIC0tb3V0cHV0LWZpbGUgJChDT1ZFUkFHRV9JTkZPKQotCTogIyByZW1vdmUgM3JkIHBhcnR5IG1vZHVsZXMgYW5kIHN5c3RlbSBoZWFkZXJzCisJOiAjIHJlbW92ZSAzcmQgcGFydHkgbW9kdWxlcywgc3lzdGVtIGhlYWRlcnMgYW5kIGludGVybmFsIGZpbGVzIHdpdGgKKwk6ICMgZGVidWcsIHRlc3Qgb3IgZHVtbXkgZnVuY3Rpb25zLgogCUBsY292IC0tcmVtb3ZlICQoQ09WRVJBR0VfSU5GTykgXAorCSAgICAnKi9Nb2R1bGVzL19ibGFrZTIvaW1wbC8qJyBcCiAJICAgICcqL01vZHVsZXMvX2N0eXBlcy9saWJmZmkqLyonIFwKIAkgICAgJyovTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy8qJyBcCisJICAgICcqL01vZHVsZXMvX3NoYTMva2NwLyonIFwKIAkgICAgJyovTW9kdWxlcy9leHBhdC8qJyBcCiAJICAgICcqL01vZHVsZXMvemxpYi8qJyBcCiAJICAgICcqL0luY2x1ZGUvKicgXAorCSAgICAnKi9Nb2R1bGVzL3h4Ki5jJyBcCisJICAgICcqL1BhcnNlci9saXN0bm9kZS5jJyBcCisJICAgICcqL1B5dGhvbi9weWZwZS5jJyBcCisJICAgICcqL1B5dGhvbi9weXN0cmNtcC5jJyBcCiAJICAgICcvdXNyL2luY2x1ZGUvKicgXAogCSAgICAnL3Vzci9sb2NhbC9pbmNsdWRlLyonIFwKKwkgICAgJy91c3IvbGliL2djYy8qJyBcCiAJICAgIC0tb3V0cHV0LWZpbGUgJChDT1ZFUkFHRV9JTkZPKQogCUBnZW5odG1sICQoQ09WRVJBR0VfSU5GTykgLS1vdXRwdXQtZGlyZWN0b3J5ICQoQ09WRVJBR0VfUkVQT1JUKSBcCiAJICAgICQoQ09WRVJBR0VfUkVQT1JUX09QVElPTlMpCkBAIC01NjMsNyArNTU5LDcgQEAKICMgUnVuICJBcmd1bWVudCBDbGluaWMiIG92ZXIgYWxsIHNvdXJjZSBmaWxlcwogIyAoZGVwZW5kcyBvbiBweXRob24gaGF2aW5nIGFscmVhZHkgYmVlbiBidWlsdCkKIC5QSE9OWT1jbGluaWMKLWNsaW5pYzogJChCVUlMRFBZVEhPTikKK2NsaW5pYzogJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwogCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC4vVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtLW1ha2UKIAogIyBCdWlsZCB0aGUgaW50ZXJwcmV0ZXIKQEAgLTU3MSw3ICs1NjcsNyBAQAogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgUHJvZ3JhbXMvcHl0aG9uLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0Ci0JJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludCgiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pKScgPnBsYXRmb3JtCiAKICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCiAjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCkBAIC01OTMsNiArNTg5LDExIEBACiBNb2R1bGVzL19tYXRoLm86IE1vZHVsZXMvX21hdGguYyBNb2R1bGVzL19tYXRoLmgKIAkkKENDKSAtYyAkKENDU0hBUkVEKSAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkPAogCisjIGJsYWtlMnMgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBibGFrZTJiCiskKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jOiAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2RpcikvVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtZiAkQAorCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBVbmRlciBHTlUgbWFrZSwgTUFLRUZMQUdTIGFyZSBzb3J0ZWQgYW5kIG5vcm1hbGl6ZWQ7IHRoZSAncycgZm9yCiAjIC1zLCAtLXNpbGVudCBvciAtLXF1aWV0IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hhci4KQEAgLTYwNiw2ICs2MDcsNyBAQAogCQlfVENMVEtfSU5DTFVERVM9JyQoVENMVEtfSU5DTFVERVMpJyBfVENMVEtfTElCUz0nJChUQ0xUS19MSUJTKScgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCiAKKwogIyBCdWlsZCBzdGF0aWMgbGlicmFyeQogIyBhdm9pZCBsb25nIGNvbW1hbmQgbGluZXMsIHNhbWUgYXMgTElCUkFSWV9PQkpTCiAkKExJQlJBUlkpOiAkKExJQlJBUllfT0JKUykKQEAgLTYxNCw3ICs2MTYsNyBAQAogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQQVJTRVJfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNUX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKSBQeXRob24vZnJvemVuLm8KLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpICQoU0lHTkFMX09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RPQkpTKQogCSQoUkFOTElCKSAkQAogCkBAIC03MTgsMTEgKzcyMCwxMSBAQAogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKLVB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCiAKQEAgLTczNCw3ICs3MzYsNiBAQAogCQkkKE9CSkVDVF9PQkpTKSBcCiAJCSQoUFlUSE9OX09CSlMpIFwKIAkJJChNT0RVTEVfT0JKUykgXAotCQkkKFNJR05BTF9PQkpTKSBcCiAJCSQoTU9ET0JKUykgXAogCQkkKHNyY2RpcikvTW9kdWxlcy9nZXRidWlsZGluZm8uYwogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKQEAgLTc4MCw2ICs3ODEsNyBAQAogUHl0aG9uL3N5c21vZHVsZS5vOiAkKHNyY2RpcikvUHl0aG9uL3N5c21vZHVsZS5jIE1ha2VmaWxlCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAogCQktREFCSUZMQUdTPSciJChBQklGTEFHUykiJyBcCisJCSQoTVVMVElBUkNIX0NQUEZMQUdTKSBcCiAJCS1vICRAICQoc3JjZGlyKS9QeXRob24vc3lzbW9kdWxlLmMKIAogJChJT19PQkpTKTogJChJT19IKQpAQCAtODYxLDcgKzg2Myw4IEBACiAKIE9iamVjdHMvdW5pY29kZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgJChVTklDT0RFX0RFUFMpCiAKLU9iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAorT2JqZWN0cy9vZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCitPYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmggJChzcmNkaXIpL09iamVjdHMvZGljdC1jb21tb24uaAogT2JqZWN0cy9zZXRvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKIAogJChPUENPREVUQVJHRVRTX0gpOiAkKE9QQ09ERVRBUkdFVEdFTl9GSUxFUykKQEAgLTg3MSw2ICs4NzQsMTggQEAKIAogUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmggUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKKyMgR2VuZXJhdGUgRFRyYWNlIHByb2JlIG1hY3JvcywgdGhlbiByZW5hbWUgdGhlbSAoUFlUSE9OXyAtPiBQeURUcmFjZV8pIHRvCisjIGZvbGxvdyBvdXIgbmFtaW5nIGNvbnZlbnRpb25zLiBkdHJhY2UoMSkgdXNlcyB0aGUgb3V0cHV0IGZpbGVuYW1lIHRvIGdlbmVyYXRlCisjIGFuIGluY2x1ZGUgZ3VhcmQsIHNvIHdlIGNhbid0IHVzZSBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBpdHMgb3V0cHV0LgorSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaDogJChzcmNkaXIpL0luY2x1ZGUvcHlkdHJhY2UuZAorCSQoRFRSQUNFKSAkKERGTEFHUykgLW8gJEAgLWggLXMgJDwKKwk6IHNlZCBpbi1wbGFjZSBlZGl0IHdpdGggUE9TSVgtb25seSB0b29scworCXNlZCAncy9QWVRIT05fL1B5RFRyYWNlXy8nICRAID4gJEAudG1wCisJbXYgJEAudG1wICRACisKK1B5dGhvbi9weWR0cmFjZS5vOiAkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5kICQoRFRSQUNFX0RFUFMpCisJJChEVFJBQ0UpICQoREZMQUdTKSAtbyAkQCAtRyAtcyAkPCAkKERUUkFDRV9ERVBTKQorCiBPYmplY3RzL3R5cGVvYmplY3QubzogT2JqZWN0cy90eXBlc2xvdHMuaW5jCiBPYmplY3RzL3R5cGVzbG90cy5pbmM6ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weQogCSQoUFlUSE9OX0ZPUl9HRU4pICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weSA8ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oIE9iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtOTI4LDYgKzk0Myw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCiAJCSQoT1BDT0RFX0gpIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vc21vZHVsZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbi5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbmhlYWRlcnMuaCBcCkBAIC05MzYsNiArOTUyLDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHljYXBzdWxlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWN0eXBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWRlYnVnLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWhhc2guaCBcCkBAIC05NjcsNyArOTg0LDggQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKIAkJcHljb25maWcuaCBcCiAJCSQoUEFSU0VSX0hFQURFUlMpIFwKLQkJJChBU1RfSCkKKwkJJChBU1RfSCkgXAorCQkkKERUUkFDRV9IRUFERVJTKQogCiAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKIApAQCAtOTc3LDcgKzk5NSw3IEBACiBURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQogVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5Ci1URVNUVElNRU9VVD0JMzYwMAorVEVTVFRJTUVPVVQ9CTEyMDAKIAogIyBSdW4gYSBiYXNpYyBzZXQgb2YgcmVncmVzc2lvbiB0ZXN0cy4KICMgVGhpcyBleGNsdWRlcyBzb21lIHRlc3RzIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZXNvdXJjZS1pbnRlbnNpdmUuCkBAIC0xMDE1LDcgKzEwMzMsNyBAQAogCQktQGlmIHdoaWNoIHB5YnVpbGRib3QuaWRlbnRpZnkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKIAkJCXB5YnVpbGRib3QuaWRlbnRpZnkgIkNDPSckKENDKSciICJDWFg9JyQoQ1hYKSciOyBcCiAJCWZpCi0JCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS1zbG93ZXN0IC0tdGltZW91dD0kKFRFU1RUSU1FT1VUKSAkKFRFU1RPUFRTKQogCiBRVUlDS1RFU1RPUFRTPQkkKFRFU1RPUFRTKSAteCB0ZXN0X3N1YnByb2Nlc3MgdGVzdF9pbyB0ZXN0X2xpYjJ0bzMgXAogCQl0ZXN0X211bHRpYnl0ZWNvZGVjIHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0X2l0ZXJ0b29scyBcCkBAIC0xMTY4LDE2ICsxMTg2LDE2IEBACiAJKGNkICQoREVTVERJUikkKE1BTkRJUikvbWFuMTsgJChMTikgLXMgcHl0aG9uJChWRVJTSU9OKS4xIHB5dGhvbjMuMSkKIAogIyBJbnN0YWxsIHRoZSBsaWJyYXJ5Ci1QTEFURElSPQlAUExBVERJUkAKLU1BQ0hERVBTPQkkKFBMQVRESVIpCiBYTUxMSUJTVUJESVJTPSAgeG1sIHhtbC9kb20geG1sL2V0cmVlIHhtbC9wYXJzZXJzIHhtbC9zYXgKIExJQlNVQkRJUlM9CXRraW50ZXIgdGtpbnRlci90ZXN0IHRraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIgXAogCQl0a2ludGVyL3Rlc3QvdGVzdF90dGsgc2l0ZS1wYWNrYWdlcyB0ZXN0IFwKIAkJdGVzdC9hdWRpb2RhdGEgXAogCQl0ZXN0L2NhcGF0aCB0ZXN0L2RhdGEgXAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKKwkJdGVzdC9kdHJhY2VkYXRhIFwKIAkJdGVzdC9laW50cmRhdGEgXAogCQl0ZXN0L2ltZ2hkcmRhdGEgXAorCQl0ZXN0L2xpYnJlZ3J0ZXN0IFwKIAkJdGVzdC9zdWJwcm9jZXNzZGF0YSB0ZXN0L3NuZGhkcmRhdGEgdGVzdC9zdXBwb3J0IFwKIAkJdGVzdC90cmFjZWRtb2R1bGVzIHRlc3QvZW5jb2RlZF9tb2R1bGVzIFwKIAkJdGVzdC90ZXN0X2ltcG9ydCBcCkBAIC0xMjI2LDggKzEyNDQsOCBAQAogCQltdWx0aXByb2Nlc3NpbmcgbXVsdGlwcm9jZXNzaW5nL2R1bW15IFwKIAkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCB1bml0dGVzdC90ZXN0L3Rlc3Rtb2NrIFwKIAkJdmVudiB2ZW52L3NjcmlwdHMgdmVudi9zY3JpcHRzL3Bvc2l4IFwKLQkJY3Vyc2VzIHB5ZG9jX2RhdGEgJChNQUNIREVQUykKLWxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUExBVERJUikgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYworCQljdXJzZXMgcHlkb2NfZGF0YQorbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKIAlAZm9yIGkgaW4gJChTQ1JJUFRESVIpICQoTElCREVTVCk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgISAtZCAkKERFU1RESVIpJCRpOyB0aGVuIFwKQEAgLTEyNDcsNyArMTI2NSw3IEBACiAJCWVsc2UJdHJ1ZTsgXAogCQlmaTsgXAogCWRvbmUKLQlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5IGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhLnB5OyBcCisJQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weTsgXAogCWRvIFwKIAkJaWYgdGVzdCAteCAkJGk7IHRoZW4gXAogCQkJJChJTlNUQUxMX1NDUklQVCkgJCRpICQoREVTVERJUikkKExJQkRFU1QpOyBcCkBAIC0xMjgyLDYgKzEzMDAsMTAgQEAKIAkJCWVzYWM7IFwKIAkJZG9uZTsgXAogCWRvbmUKKwkkKElOU1RBTExfREFUQSkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkucHkgXAorCQkkKERFU1RESVIpJChMSUJERVNUKTsgXAorCWVjaG8gJChJTlNUQUxMX0RBVEEpIGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpLnB5IFwKKwkJJChMSUJERVNUKQogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvTElDRU5TRSAkKERFU1RESVIpJChMSUJERVNUKS9MSUNFTlNFLnR4dAogCWlmIHRlc3QgLWQgJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzOyB0aGVuIFwKIAkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMgXApAQCAtMTMxOSwyMyArMTM0MSw2IEBACiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAogCi0jIENyZWF0ZSB0aGUgUExBVERJUiBzb3VyY2UgZGlyZWN0b3J5LCBpZiBvbmUgd2Fzbid0IGRpc3RyaWJ1dGVkLi4KLSQoc3JjZGlyKS9MaWIvJChQTEFURElSKToKLQlta2RpciAkKHNyY2RpcikvTGliLyQoUExBVERJUikKLQljcCAkKHNyY2RpcikvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbiAkKHNyY2RpcikvTGliLyQoUExBVERJUikvcmVnZW4KLQlleHBvcnQgUEFUSDsgUEFUSD0iYHB3ZGA6JCRQQVRIIjsgXAotCWV4cG9ydCBQWVRIT05QQVRIOyBQWVRIT05QQVRIPSJgcHdkYC9MaWIiOyBcCi0JZXhwb3J0IERZTERfRlJBTUVXT1JLX1BBVEg7IERZTERfRlJBTUVXT1JLX1BBVEg9ImBwd2RgIjsgXAotCWV4cG9ydCBFWEU7IEVYRT0iJChCVUlMREVYRSkiOyBcCi0JaWYgWyAtbiAiJChNVUxUSUFSQ0gpIiBdOyB0aGVuIGV4cG9ydCBNVUxUSUFSQ0g7IE1VTFRJQVJDSD0kKE1VTFRJQVJDSCk7IGZpOyBcCi0JZXhwb3J0IFBZVEhPTl9GT1JfQlVJTEQ7IFwKLQlpZiBbICIkKEJVSUxEX0dOVV9UWVBFKSIgPSAiJChIT1NUX0dOVV9UWVBFKSIgXTsgdGhlbiBcCi0JICBQWVRIT05fRk9SX0JVSUxEPSIkKEJVSUxEUFlUSE9OKSI7IFwKLQllbHNlIFwKLQkgIFBZVEhPTl9GT1JfQlVJTEQ9IiQoUFlUSE9OX0ZPUl9CVUlMRCkiOyBcCi0JZmk7IFwKLQljZCAkKHNyY2RpcikvTGliLyQoUExBVERJUik7ICQoUlVOU0hBUkVEKSAuL3JlZ2VuCi0KIHB5dGhvbi1jb25maWc6ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gTWlzYy9weXRob24tY29uZmlnLnNoCiAJIyBTdWJzdGl0dXRpb24gaGFwcGVucyBoZXJlLCBhcyB0aGUgY29tcGxldGVseS1leHBhbmRlZCBCSU5ESVIKIAkjIGlzIG5vdCBhdmFpbGFibGUgaW4gY29uZmlndXJlCkBAIC0xNDMyLDcgKzE0MzcsNyBAQAogCQktLWluc3RhbGwtc2NyaXB0cz0kKEJJTkRJUikgXAogCQktLWluc3RhbGwtcGxhdGxpYj0kKERFU1RTSEFSRUQpIFwKIAkJLS1yb290PSQoREVTVERJUikvCi0JLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhLnB5CisJLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpLnB5CiAJLXJtIC1yICQoREVTVERJUikkKERFU1RTSEFSRUQpL19fcHljYWNoZV9fCiAKICMgSGVyZSBhcmUgYSBjb3VwbGUgb2YgdGFyZ2V0cyBmb3IgTWFjT1NYIGFnYWluLCB0byBpbnN0YWxsIGEgZnVsbApAQCAtMTQ3OCwxMCArMTQ4MywxMCBAQAogIyBJbnN0YWxsIGEgbnVtYmVyIG9mIHN5bWxpbmtzIHRvIGtlZXAgc29mdHdhcmUgdGhhdCBleHBlY3RzIGEgbm9ybWFsIHVuaXgKICMgaW5zdGFsbCAod2hpY2ggaW5jbHVkZXMgcHl0aG9uLWNvbmZpZykgaGFwcHkuCiBmcmFtZXdvcmtpbnN0YWxsbWFjbGliOgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5hIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKFZFUlNJT04pLmEiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKExEVkVSU0lPTikuYSIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKExEVkVSU0lPTikuZHlsaWIiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChWRVJTSU9OKS5hIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCiAJJChMTikgLWZzICIuLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9saWJweXRob24kKExEVkVSU0lPTikuZHlsaWIiCiAJJChMTikgLWZzICIuLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgogCkBAIC0xNTk2LDYgKzE2MDEsNyBAQAogCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCiAJLXJtIC1mIFByb2dyYW1zL190ZXN0ZW1iZWQgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKIAktZmluZCBidWlsZCAtdHlwZSBmIC1hICEgLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCisJLXJtIC1mIEluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgKIAogcHJvZmlsZS1yZW1vdmFsOgogCWZpbmQgLiAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKQEAgLTE2NjAsNyArMTY2Niw2IEBACiAJCS1vIC1uYW1lICcqLnRtU25pcHBldCcgXAogCQktbyAtbmFtZSAnU2V0dXAnIFwKIAkJLW8gLW5hbWUgJ1NldHVwLionIFwKLQkJLW8gLW5hbWUgcmVnZW4gXAogCQktbyAtbmFtZSBSRUFETUUgXAogCQktbyAtbmFtZSBORVdTIFwKIAkJLW8gLW5hbWUgSElTVE9SWSBcCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggOGM1YzBjMi4uZjA4NzE5YSAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtMTIwLDYgKzEyMCw3IEBACiBUaG9tYXMgQmVsbG1hbgogQWxleGFuZGVyIOKAnNCh0LDRiNCw4oCdIEJlbG9wb2xza3kKIEVsaSBCZW5kZXJza3kKK05pa2hpbCBCZW5lc2NoCiBEYXZpZCBCZW5qYW1pbgogT3NjYXIgQmVuamFtaW4KIEFuZHJldyBCZW5uZXR0cwpAQCAtMTU1LDYgKzE1Niw3IEBACiBQYXVsIEJvZGRpZQogTWF0dGhldyBCb2VkaWNrZXIKIFJvYmluIEJvZXJkaWprCitOaWtvbGF5IEJvZ295Y2hldgogRGF2aWQgQm9sZW4KIFdvdXRlciBCb2xzdGVybGVlCiBHYXdhaW4gQm9sdG9uCkBAIC0yNDEsNiArMjQzLDcgQEAKIE1pY2hhZWwgQ2V0cnVsbwogRGF2ZSBDaGFtYmVycwogUGFzY2FsIENoYW1ib24KK05pY2hvbGFzIENoYW1tYXMKIEpvaG4gQ2hhbmRsZXIKIEh5ZS1TaGlrIENoYW5nCiBKZWZmcmV5IENoYW5nCkBAIC0zMDUsMTUgKzMwOCwxOCBAQAogRGF2aWQgQ291cm5hcGVhdQogSnVsaWVuIENvdXJ0ZWF1CiBTdGV2ZSBDb3VzaW5zCitGcmFuY2lzY28gQ291em8KIEFsZXggQ292ZW50cnkKIE1hdHRoZXcgRGl4b24gQ293bGVzCiBSeWFuIENveW5lcgogQ2hyaXN0b3BoZXIgQS4gQ3JhaWcKIEplcmVteSBDcmF2ZW4KIExhdXJhIENyZWlnaHRvbgorVHlsZXIgQ3JvbXB0b24KIFNpbW9uIENyb3NzCiBGZWxpcGUgQ3J1egogRHJldyBDc2lsbGFnCitBbGVzc2FuZHJvIEN1Y2NpCiBKb2FxdWluIEN1ZW5jYSBBYmVsYQogSm9obiBDdWdpbmkKIFRvbSBDdWxsaXRvbgpAQCAtMzU3LDYgKzM2Myw3IEBACiBZdmVzIERpb25uZQogRGFuaWVsIERpdHRtYXIKIEpvc2lwIERqb2xvbmdhCitXYWx0ZXIgRMO2cndhbGQKIEphcm9taXIgRG9sZWNlawogSXNtYWlsIERvbm1legogUm9iZXJ0IERvbm9odWUKQEAgLTM4NCw3ICszOTEsNiBAQAogS2FybWVuIER5a3N0cmEKIEpvc2lwIER6b2xvbmdhCiBNYXhpbSBEenVtYW5lbmtvCi1XYWx0ZXIgRMO2cndhbGQKIEhhbnMgRWNrYXJkdAogUm9kb2xwaG8gRWNraGFyZHQKIFVscmljaCBFY2toYXJkdApAQCAtNTQyLDggKzU0OCwxMCBAQAogTGFycyBHdXN0w6RiZWwKIFRob21hcyBHw7x0dGxlcgogSm9uYXMgSC4KK0pvc2VwaCBIYWNrbWFuCiBCYXJyeSBIYWRkb3cKIFBoaWxpcHAgSGFnZW1laXN0ZXIKK0pvaG4gSGFnZW4KIFBhdWwgdGVuIEhhZ2VuCiBSYXNtdXMgSGFobgogUGV0ZXIgSGFpZ2h0CkBAIC03ODAsNiArNzg4LDcgQEAKIE1hcmtvIEtvaHRhbGEKIFZhanJhc2t5IEtvawogR3VpZG8gS29sbGVyaWUKK0phY2VrIEtvxYJvZHppZWoKIEphY2VrIEtvbmllY3pueQogQXJrYWR5IEtvcGx5YXJvdgogUGV0ZXIgQS4gS29yZW4KQEAgLTc5MSw2ICs4MDAsNyBAQAogSmVyenkgS296ZXJhCiBNYWtzaW0gS296eWFyY2h1awogU3RlZmFuIEtyYWgKK1JvbGYgS3JhaGwKIEJvYiBLcmFzCiBTZWJhc3RpYW4gS3JlZnQKIEhvbGdlciBLcmVrZWwKQEAgLTgyMyw2ICs4MzMsNyBAQAogVGlubyBMYW5nZQogR2xlbm4gTGFuZ2ZvcmQKIEFuZHJldyBMYW5nbWVhZAorV29sZmdhbmcgTGFuZ25lcgogRGV0bGVmIExhbm5lcnQKIFNvcmVuIExhcnNlbgogQW1vcyBMYXR0ZWllcgpAQCAtODg1LDI0ICs4OTYsMjcgQEAKIEdyZWdvciBMaW5nbAogRXZlcmV0dCBMaXBtYW4KIE1pcmtvIExpc3MKK0FsZXhhbmRlciBMaXUKIE5pY2sgTG9ja3dvb2QKIFN0ZXBoYW5pZSBMb2Nrd29vZAorTWFydGluIHZvbiBMw7Z3aXMKIEh1Z28gTG9wZXMgVGF2YXJlcwogR3VpbGxlcm1vIEzDs3Blei1BbmdsYWRhCiBBbm5lIExvcmQKK0FsZXggTG9yZFRob3JzZW4KIFRvbSBMb3JlZG8KIEp1c3RpbiBMb3ZlCiBOZWQgSmFja3NvbiBMb3ZlbHkKIFBldGVyIExvdmV0dAogQ2hhbG1lciBMb3dlCiBKYXNvbiBMb3dlCi1NYXJ0aW4gdm9uIEzDtndpcwogVG9ueSBMb3duZHMKIFJheSBMb3l6YWdhCiBLYW5nLUhhbyAoS2VubnkpIEx1CiBMdWthcyBMdWVnCiBMb3JlbiBMdWtlCiBGcmVkcmlrIEx1bmRoCitNaWtlIEx1bmR5CiBaaG9uZ3l1ZSBMdW8KIE1hcmsgTHV0egogVGFyYXMgTHlhcHVuCkBAIC0xMTQzLDkgKzExNTcsMTEgQEAKIEdlb2ZmIFBoaWxicmljawogR2F2cmllIFBoaWxpcHNvbgogQWRyaWFuIFBoaWxsaXBzCitEdXN0eSBQaGlsbGlwcwogQ2hyaXN0b3BoZXIgSi4gUGhvZW5peAogSmFtZXMgUGlja2VyaW5nCiBOZWFsZSBQaWNrZXR0CitTdGV2ZSBQaWVyY3kKIEppbSBTdC4gUGllcnJlCiBEYW4gUGllcnNvbgogTWFydGlqbiBQaWV0ZXJzCkBAIC0xMTk3LDYgKzEyMTMsNyBAQAogQmF5YXJkIFJhbmRlbAogVmFycHUgUmFudGFsYQogQnJvZGllIFJhbworUsOpbWkgUmFtcGluCiBTZW5rbyBSYXNpYwogQW50dGkgUmFzaW5lbgogTmlrb2xhdXMgUmF0aApAQCAtMTI0Nyw2ICsxMjY0LDcgQEAKIEtldmluIFJvZGdlcnMKIFNlYW4gUm9kbWFuCiBHaWFtcGFvbG8gUm9kb2xhCitNYXVybyBTLiBNLiBSb2RyaWd1ZXMKIEVsc29uIFJvZHJpZ3VlegogQWRpIFJvaWJhbgogTHVpcyBSb2phcwpAQCAtMTI4OSw2ICsxMzA3LDcgQEAKIENvbnN0YW50aW5hIFMuCiBQYXRyaWNrIFNhYmluCiBTw6liYXN0aWVuIFNhYmzDqQorQW1pdCBTYWhhCiBTdW1hbiBTYWhhCiBIYWppbWUgU2FpdG91CiBHZW9yZ2UgU2Fra2lzCkBAIC0xMzIyLDYgKzEzNDEsNyBAQAogUGV0ZXIgU2NobmVpZGVyLUthbXAKIEFydmluIFNjaG5lbGwKIE5vZmFyIFNjaG5pZGVyCitFZCBTY2hvdXRlbgogU2NvdHQgU2NocmFtCiBSb2JpbiBTY2hyZWliZXIKIENoYWQgSi4gU2Nocm9lZGVyCkBAIC0xMzk2LDYgKzE0MTYsNyBAQAogUm95IFNtaXRoCiBSeWFuIFNtaXRoLVJvYmVydHMKIFJhZmFsIFNtb3RyenlrCitKb3NoIFNuaWRlcgogRXJpYyBTbm93CiBEaXJrIFNvZWRlCiBOaXIgU29mZmVyCkBAIC0xNDIzLDExICsxNDQ0LDEzIEBACiBNYXJlayBTdGVwbmlvd3NraQogQmFydWNoIFN0ZXJpbgogQ2hyaXMgU3Rlcm4KK0VsaSBTdGV2ZW5zCiBBbGV4IFN0ZXdhcnQKIFZpY3RvciBTdGlubmVyCiBSaWNoYXJkIFN0b2FrbGV5CiBQZXRlciBTdG9laHIKIENhc3BlciBTdG9lbAorRGFuaWVsIFN0b2tlcwogTWljaGFlbCBTdG9uZQogU2VyaGl5IFN0b3JjaGFrYQogS2VuIFN0b3gKQEAgLTE0NTMsNiArMTQ3Niw3IEBACiBQaW90ciBTemN6ZXBhbmlhawogQW1pciBTemVrZWx5CiBNYWNpZWogU3p1bGlrCitKb2VsIFRhZGRlaQogQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMKIEhpZGVha2kgVGFrYWhhc2hpCiBUYWthc2UgQXJpaGlybwpAQCAtMTQ2NCw4ICsxNDg4LDEwIEBACiBDaHJpc3RpYW4gVGFuemVyCiBTdGV2ZW4gVGFzY2h1awogQW15IFRheWxvcgorSnVsaWFuIFRheWxvcgogTW9udHkgVGF5bG9yCiBBbmF0b2x5IFRlY2h0b25paworTWFydGluIFRlaWNobWFubgogR3VzdGF2byBUZW1wbGUKIE1pa2hhaWwgVGVyZWtob3YKIFZpY3RvciBUZXJyw7NuCkBAIC0xNjQ3LDYgKzE2NzMsNyBAQAogQWxha3NoZW5kcmEgWWFkYXYKIEhpcm9rYXp1IFlhbWFtb3RvCiBLYS1QaW5nIFllZQorQ2hpIEhzdWFuIFllbgogSmFzb24gWWVvCiBFdW5nSnVuIFlpCiBCb2IgWW9kbG93c2tpCkBAIC0xNjc1LDQgKzE3MDIsMyBAQAogRG91ZyBab25na2VyCiBQZXRlciDDhXN0cmFuZAogZXZpbHplcm8KLUNoaSBIc3VhbiBZZW4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwppbmRleCBmZjYwMjVjLi41NjNmMGMwIDEwMDY0NAotLS0gYS9NaXNjL05FV1MKKysrIGIvTWlzYy9ORVdTCkBAIC0yLDEwICsyLDEwIEBACiBQeXRob24gTmV3cwogKysrKysrKysrKysKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjMgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IFRCQQorKlJlbGVhc2UgZGF0ZTogWFhYWC1YWC1YWCoKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMywxNSArMTMsOTkgQEAKIC0gSXNzdWUgIzI4NDI2OiBGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggaW4gUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgpIGluIGRlYnVnCiAgIGJ1aWxkLgogCistIElzc3VlICMyODUxNzogRml4ZWQgb2YtYnktb25lIGVycm9yIGluIHRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgdGhhdCBjYXVzZWQKKyAga2VlcGluZyB1bnJlYWNoYWJsZSBjb2RlLgorCistIElzc3VlICMyODIxNDogSW1wcm92ZWQgZXhjZXB0aW9uIHJlcG9ydGluZyBmb3IgcHJvYmxlbWF0aWMgX19zZXRfbmFtZV9fCisgIGF0dHJpYnV0ZXMuCisKIC0gSXNzdWUgIzIzNzgyOiBGaXhlZCBwb3NzaWJsZSBtZW1vcnkgbGVhayBpbiBfUHlUcmFjZWJhY2tfQWRkKCkgYW5kIGV4Y2VwdGlvbgogICBsb3NzIGluIFB5VHJhY2VCYWNrX0hlcmUoKS4KIAorLSBJc3N1ZSAjMjg0NzE6IEZpeCAiUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMIgorICBjcmFzaCBpbiBzb2NrZXQuc2V0YmxvY2tpbmcuCisKKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNzAyNTogR2VuZXJhdGVkIG5hbWVzIGZvciBUa2ludGVyIHdpZGdldHMgbm93IHN0YXJ0IGJ5IHRoZSAiISIgcHJlZml4CisgIGZvciByZWFkYWJpbGl0eSAod2FzICJgIikuCisKKy0gSXNzdWUgIzI1NDY0OiBGaXhlZCBITGlzdC5oZWFkZXJfZXhpc3RzKCkgaW4gdGtpbnRlci50aXggbW9kdWxlIGJ5IGFkZGluCisgIGEgd29ya2Fyb3VuZCB0byBUaXggbGlicmFyeSBidWcuCisKKy0gSXNzdWUgIzI4NDg4OiBzaHV0aWwubWFrZV9hcmNoaXZlKCkgbm8gbG9uZ2VyIGFkZHMgZW50cnkgIi4vIiB0byBaSVAgYXJjaGl2ZS4KKworLSBJc3N1ZSAjMjU5NTM6IHJlLnN1YigpIG5vdyByYWlzZXMgYW4gZXJyb3IgZm9yIGludmFsaWQgbnVtZXJpY2FsIGdyb3VwCisgIHJlZmVyZW5jZSBpbiByZXBsYWNlbWVudCB0ZW1wbGF0ZSBldmVuIGlmIHRoZSBwYXR0ZXJuIGlzIG5vdCBmb3VuZCBpbgorICB0aGUgc3RyaW5nLiAgRXJyb3IgbWVzc2FnZSBmb3IgaW52YWxpZCBncm91cCByZWZlcmVuY2Ugbm93IGluY2x1ZGVzIHRoZQorICBncm91cCBpbmRleCBhbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSByZWZlcmVuY2UuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IFNpbGVudEdob3N0LgorCistIElzc3VlICMxODIxOTogT3B0aW1pemUgY3N2LkRpY3RXcml0ZXIgZm9yIGxhcmdlIG51bWJlciBvZiBjb2x1bW5zLgorICBQYXRjaCBieSBNYXJpYXR0YSBXaWpheWEuCisKKy0gSXNzdWUgIzI4NDQ4OiBGaXggQyBpbXBsZW1lbnRlZCBhc3luY2lvLkZ1dHVyZSBkaWRuJ3Qgd29yayBvbiBXaW5kb3dzLgorCistIElzc3VlICMyODQ4MDogRml4IGVycm9yIGJ1aWxkaW5nIHNvY2tldCBtb2R1bGUgd2hlbiBtdWx0aXRocmVhZGluZyBpcworICBkaXNhYmxlZC4KKworLSBJc3N1ZSAjMjQ0NTI6IE1ha2Ugd2ViYnJvd3NlciBzdXBwb3J0IENocm9tZSBvbiBNYWMgT1MgWC4KKworLSBJc3N1ZSAjMjA3NjY6IEZpeCByZWZlcmVuY2VzIGxlYWtlZCBieSBwZGIgaW4gdGhlIGhhbmRsaW5nIG9mIFNJR0lOVAorICBoYW5kbGVycy4KKworLSBJc3N1ZSAjMjg0OTI6IEZpeCBob3cgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24gaXMgcmFpc2VkIGluIF9hc3luY2lvLkZ1dHVyZS4KKworLSBJc3N1ZSAjMjg1MDA6IEZpeCBhc3luY2lvIHRvIGhhbmRsZSBhc3luYyBnZW5zIEdDIGZyb20gYW5vdGhlciB0aHJlYWQuCisKKy0gSXNzdWUgIzI2OTIzOiBGaXggYXN5bmNpby5HYXRoZXIgdG8gcmVmdXNlIGJlaW5nIGNhbmNlbGxlZCBvbmNlIGFsbAorICBjaGlsZHJlbiBhcmUgZG9uZS4KKyAgUGF0Y2ggYnkgSm9oYW5uZXMgRWJrZS4KKworLSBJc3N1ZSAjMjY3OTY6IERvbid0IGNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgZm9yIGRlZmF1bHQKKyAgdGhyZWFkcG9vbCBleGVjdXRvci4KKyAgSW5pdGlhbCBwYXRjaCBieSBIYW5zIExhd3JlbnouCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyODIwODogVXBkYXRlIFdpbmRvd3MgYnVpbGQgdG8gdXNlIFNRTGl0ZSAzLjE0LjIuMC4KKworLSBJc3N1ZSAjMjgyNDg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkIHRvIHVzZSBPcGVuU1NMIDEuMC4yai4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI2OTQ0OiBGaXggdGVzdF9wb3NpeCBmb3IgQW5kcm9pZCB3aGVyZSAnaWQgLUcnIGlzIGVudGlyZWx5IHdyb25nIG9yCisgIG1pc3NpbmcgdGhlIGVmZmVjdGl2ZSBnaWQuCisKKy0gSXNzdWUgIzI4NDA5OiByZWdydGVzdDogZml4IHRoZSBwYXJzZXIgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTEwLTEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjgxODM6IE9wdGltaXplIGFuZCBjbGVhbnVwIGRpY3QgaXRlcmF0aW9uLgorCistIElzc3VlICMyNjA4MTogQWRkZWQgQyBpbXBsZW1lbnRhdGlvbiBvZiBhc3luY2lvLkZ1dHVyZS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKIC0gSXNzdWUgIzI4Mzc5OiBBZGRlZCBzYW5pdHkgY2hlY2tzIGFuZCB0ZXN0cyBmb3IgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCkuCiAgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCiAtIElzc3VlICMyODM3NjogVGhlIHR5cGUgb2YgbG9uZyByYW5nZSBpdGVyYXRvciBpcyBub3cgcmVnaXN0ZXJlZCBhcyBJdGVyYXRvci4KICAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCiAKKy0gSXNzdWUgIzI4Mzc2OiBDcmVhdGluZyBpbnN0YW5jZXMgb2YgcmFuZ2VfaXRlcmF0b3IgYnkgY2FsbGluZyByYW5nZV9pdGVyYXRvcgorICB0eXBlIG5vdyBpcyBkZXByZWNhdGVkLiAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKIC0gSXNzdWUgIzI4Mzc2OiBUaGUgY29uc3RydWN0b3Igb2YgcmFuZ2VfaXRlcmF0b3Igbm93IGNoZWNrcyB0aGF0IHN0ZXAgaXMgbm90IDAuCiAgIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgogCkBAIC0zNCw2ICsxMTgsOSBAQAogLSBJc3N1ZSAjMjQwOTg6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIHdoZW4gQVNUIGlzIGNoYW5nZWQgaW4gcHJvY2VzcyBvZgogICBjb21waWxpbmcgaXQuCiAKKy0gSXNzdWUgIzI4MjAxOiBEaWN0IHJlZHVjZXMgcG9zc2liaWxpdHkgb2YgMm5kIGNvbmZsaWN0IGluIGhhc2ggdGFibGUgd2hlbgorICBoYXNoZXMgaGF2ZSBzYW1lIGxvd2VyIGJpdHMuCisKIC0gSXNzdWUgIzI4MzUwOiBTdHJpbmcgY29uc3RhbnRzIHdpdGggbnVsbCBjaGFyYWN0ZXIgbm8gbG9uZ2VyIGludGVybmVkLgogCiAtIElzc3VlICMyNjYxNzogRml4IGNyYXNoIHdoZW4gR0MgcnVucyBkdXJpbmcgd2Vha3JlZiBjYWxsYmFja3MuCkBAIC00MywxMDAgKzEzMCw4MSBAQAogLSBJc3N1ZSAjMjE1Nzg6IEZpeGVkIG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIEltcG9ydEVycm9yIGNhbGxlZCB3aXRoCiAgIGludmFsaWQga2V5d29yZCBhcmdzLgogCi0tIElzc3VlICMyODIwMzogRml4IGluY29ycmVjdCB0eXBlIGluIGVycm9yIG1lc3NhZ2UgZnJvbQotICBgYGNvbXBsZXgoMS4wLCB7MjozfSlgYC4gUGF0Y2ggYnkgU291bXlhIFNoYXJtYS4KKy0gSXNzdWUgIzI4MjAzOiBGaXggaW5jb3JyZWN0IHR5cGUgaW4gY29tcGxleCgxLjAsIHsyOjN9KSBlcnJvciBtZXNzYWdlLgorICBQYXRjaCBieSBTb3VteWEgU2hhcm1hLgorCistIElzc3VlICMyODA4NjogU2luZ2xlIHZhci1wb3NpdGlvbmFsIGFyZ3VtZW50IG9mIHR1cGxlIHN1YnR5cGUgd2FzIHBhc3NlZAorICB1bnNjYXRoZWQgdG8gdGhlIEMtZGVmaW5lZCBmdW5jdGlvbi4gIE5vdyBpdCBpcyBjb252ZXJ0ZWQgdG8gZXhhY3QgdHVwbGUuCisKKy0gSXNzdWUgIzI4MjE0OiBOb3cgX19zZXRfbmFtZV9fIGlzIGxvb2tlZCB1cCBvbiB0aGUgY2xhc3MgaW5zdGVhZCBvZiB0aGUKKyAgaW5zdGFuY2UuCiAKIC0gSXNzdWUgIzI3OTU1OiBGYWxsYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSBkZXZpY2Ugd2hlbiB0aGUgZ2V0cmFuZG9tKCkKICAgc3lzY2FsbCBmYWlscyB3aXRoIEVQRVJNLCBmb3IgZXhhbXBsZSB3aGVuIGJsb2NrZWQgYnkgU0VDQ09NUC4KIAorLSBJc3N1ZSAjMjgxOTI6IERvbid0IGltcG9ydCByZWFkbGluZSBpbiBpc29sYXRlZCBtb2RlLgorCistIFVwZ3JhZGUgaW50ZXJuYWwgdW5pY29kZSBkYXRhYmFzZXMgdG8gVW5pY29kZSB2ZXJzaW9uIDkuMC4wLgorCiAtIElzc3VlICMyODEzMTogRml4IGEgcmVncmVzc2lvbiBpbiB6aXBpbXBvcnQncyBjb21waWxlX3NvdXJjZSgpLiAgemlwaW1wb3J0CiAgIHNob3VsZCB1c2UgdGhlIHNhbWUgb3B0aW1pemF0aW9uIGxldmVsIGFzIHRoZSBpbnRlcnByZXRlci4KIAotLSBJc3N1ZSAjMjUyMjE6IEZpeCBjb3JydXB0ZWQgcmVzdWx0IGZyb20gUHlMb25nX0Zyb21Mb25nKDApIHdoZW4KLSAgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggTlNNQUxMUE9TSU5UUyA9IDAuCistIElzc3VlICMyODEyNjogUmVwbGFjZSBQeV9NRU1DUFkgd2l0aCBtZW1jcHkoKS4gVmlzdWFsIFN0dWRpbyBjYW4gcHJvcGVybHkKKyAgb3B0aW1pemUgbWVtY3B5KCkuCiAKLS0gSXNzdWUgIzI1NzU4OiBQcmV2ZW50cyB6aXBpbXBvcnQgZnJvbSB1bm5lY2Vzc2FyaWx5IGVuY29kaW5nIGEgZmlsZW5hbWUKLSAgKHBhdGNoIGJ5IEVyeWsgU3VuKQorLSBJc3N1ZSAjMjgxMjA6IEZpeCBkaWN0LnBvcCgpIGZvciBzcGxpdHRlZCBkaWN0aW9uYXJ5IHdoZW4gdHJ5aW5nIHRvIHJlbW92ZSBhCisgICJwZW5kaW5nIGtleSIgKE5vdCB5ZXQgaW5zZXJ0ZWQgaW4gc3BsaXQtdGFibGUpLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAotLSBJc3N1ZSAjMjgxODk6IGRpY3RpdGVtc19jb250YWlucyBubyBsb25nZXIgc3dhbGxvd3MgY29tcGFyZSBlcnJvcnMuCi0gIChQYXRjaCBieSBYaWFuZyBaaGFuZykKLQotLSBJc3N1ZSAjMjc4MTI6IFByb3Blcmx5IGNsZWFyIG91dCBhIGdlbmVyYXRvcidzIGZyYW1lJ3MgYmFja3JlZmVyZW5jZSB0byB0aGUKLSAgZ2VuZXJhdG9yIHRvIHByZXZlbnQgY3Jhc2hlcyBpbiBmcmFtZS5jbGVhcigpLgotCi0tIElzc3VlICMyNzgxMTogRml4IGEgY3Jhc2ggd2hlbiBhIGNvcm91dGluZSB0aGF0IGhhcyBub3QgYmVlbiBhd2FpdGVkIGlzCi0gIGZpbmFsaXplZCB3aXRoIHdhcm5pbmdzLWFzLWVycm9ycyBlbmFibGVkLgotCi0tIElzc3VlICMyNzU4NzogRml4IGFub3RoZXIgaXNzdWUgZm91bmQgYnkgUFZTLVN0dWRpbzogTnVsbCBwb2ludGVyIGNoZWNrCi0gIGFmdGVyIHVzZSBvZiAnZGVmJyBpbiBfUHlTdGF0ZV9BZGRNb2R1bGUoKS4KLSAgSW5pdGlhbCBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgotCi0tIElzc3VlICMyNjAyMDogc2V0IGxpdGVyYWwgZXZhbHVhdGlvbiBvcmRlciBkaWQgbm90IG1hdGNoIGRvY3VtZW50ZWQgYmVoYXZpb3VyLgotCi0tIElzc3VlICMyNzc4MjogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbXBvcnQgbm93IGNvcnJlY3RseSBhbGxvd3MgdGhlCi0gIGBgbV9tZXRob2RzYGAgZmllbGQgdG8gYmUgdXNlZCB0byBhZGQgbW9kdWxlIGxldmVsIGZ1bmN0aW9ucyB0byBpbnN0YW5jZXMKLSAgb2Ygbm9uLW1vZHVsZSB0eXBlcyByZXR1cm5lZCBmcm9tIGBgUHlfY3JlYXRlX21vZGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc5MzY6IFRoZSByb3VuZCgpIGZ1bmN0aW9uIGFjY2VwdGVkIGEgc2Vjb25kIE5vbmUgYXJndW1lbnQKLSAgZm9yIHNvbWUgdHlwZXMgYnV0IG5vdCBmb3Igb3RoZXJzLiAgRml4ZWQgdGhlIGluY29uc2lzdGVuY3kgYnkKLSAgYWNjZXB0aW5nIE5vbmUgZm9yIGFsbCBudW1lcmljIHR5cGVzLgotCi0tIElzc3VlICMyNzQ4NzogV2FybiBpZiBhIHN1Ym1vZHVsZSBhcmd1bWVudCB0byAicHl0aG9uIC1tIiBvcgotICBydW5weS5ydW5fbW9kdWxlKCkgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMgYWZ0ZXIgcGFyZW50IHBhY2thZ2VzIGFyZQotICBpbXBvcnRlZCwgYnV0IGJlZm9yZSB0aGUgc3VibW9kdWxlIGlzIGV4ZWN1dGVkLgotCi0tIElzc3VlICMyNzU1ODogRml4IGEgU3lzdGVtRXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mICJyYWlzZSIgc3RhdGVtZW50LgotICBJbiBhIGJyYW5kIG5ldyB0aHJlYWQsIHJhaXNlIGEgUnVudGltZUVycm9yIHNpbmNlIHRoZXJlIGlzIG5vIGFjdGl2ZQotICBleGNlcHRpb24gdG8gcmVyYWlzZS4gUGF0Y2ggd3JpdHRlbiBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscwotICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGhhbmRsaW5nIGFuCi0gIGVycm9yIG9mIG5vbi1zdHJpbmcgcGFja2FnZSBuYW1lLgotCi0tIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgotICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgotCi0tIElzc3VlICMyNzQ3MzogRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBieXRlcyBhbmQgYnl0ZWFycmF5Ci0gIGNvbmNhdGVuYXRpb25zLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQotICBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCi0gIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzQ0MzogX19sZW5ndGhfaGludF9fKCkgb2YgYnl0ZWFycmF5IGl0ZXJhdG9ycyBubyBsb25nZXIgcmV0dXJuIGEKLSAgbmVnYXRpdmUgaW50ZWdlciBmb3IgYSByZXNpemVkIGJ5dGVhcnJheS4KKy0gSXNzdWUgIzI2MTgyOiBSYWlzZSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhc3luYyBhbmQgYXdhaXQga2V5d29yZHMgYXJlCisgIHVzZWQgYXMgdmFyaWFibGUvYXR0cmlidXRlL2NsYXNzL2Z1bmN0aW9uIG5hbWUuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMjU0NjQ6IEZpeGVkIEhMaXN0LmhlYWRlcl9leGlzdHMoKSBpbiB0a2ludGVyLnRpeCBtb2R1bGUgYnkgYWRkaW4KLSAgYSB3b3JrYXJvdW5kIHRvIFRpeCBsaWJyYXJ5IGJ1Zy4KKy0gSXNzdWUgIzI3OTk4OiBGaXhlZCBieXRlcyBwYXRoIHN1cHBvcnQgaW4gb3Muc2NhbmRpcigpIG9uIFdpbmRvd3MuCisgIFBhdGNoIGJ5IEVyeWsgU3VuLgogCi0tIElzc3VlICMyODQ4ODogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIG5vIGxvbmdlciBhZGQgZW50cnkgIi4vIiB0byBaSVAgYXJjaGl2ZS4KLQotLSBJc3N1ZSAjMjQ0NTI6IE1ha2Ugd2ViYnJvd3NlciBzdXBwb3J0IENocm9tZSBvbiBNYWMgT1MgWC4KLQotLSBJc3N1ZSAjMjA3NjY6IEZpeCByZWZlcmVuY2VzIGxlYWtlZCBieSBwZGIgaW4gdGhlIGhhbmRsaW5nIG9mIFNJR0lOVAotICBoYW5kbGVycy4KKy0gSXNzdWUgIzI4MzE3OiBUaGUgZGlzYXNzZW1ibGVyIG5vdyBkZWNvZGVzIEZPUk1BVF9WQUxVRSBhcmd1bWVudC4KIAogLSBJc3N1ZSAjMjYyOTM6IEZpeGVkIHdyaXRpbmcgWklQIGZpbGVzIHRoYXQgc3RhcnRzIG5vdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUKICAgZmlsZS4gIE9mZnNldHMgaW4gWklQIGZpbGUgbm93IGFyZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUgaW4KICAgY29uZm9ybWluZyB0byB0aGUgc3BlY2lmaWNhdGlvbi4KIAorLSBJc3N1ZSAjMjgzODA6IHVuaXR0ZXN0Lm1vY2sgTW9jayBhdXRvc3BlYyBmdW5jdGlvbnMgbm93IHByb3Blcmx5IHN1cHBvcnQKKyAgYXNzZXJ0X2NhbGxlZCwgYXNzZXJ0X25vdF9jYWxsZWQsIGFuZCBhc3NlcnRfY2FsbGVkX29uY2UuCisKKy0gSXNzdWUgIzI3MTgxIHJlbW92ZSBzdGF0aXN0aWNzLmdlb21ldHJpY19tZWFuIGFuZCBkZWZlciB1bnRpbCAzLjcuCisKKy0gSXNzdWUgIzI4MjI5OiBsem1hIG1vZHVsZSBub3cgc3VwcG9ydHMgcGF0aGxpYi4KKwogLSBJc3N1ZSAjMjgzMjE6IEZpeGVkIHdyaXRpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzIHdpdGggYmluYXJ5IGZvcm1hdCBpbiBwbGlzdGxpYi4KIAorLSBJc3N1ZSAjMjgyMjU6IGJ6MiBtb2R1bGUgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBJbml0aWFsIHBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KKworLSBJc3N1ZSAjMjgyMjc6IGd6aXAgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBQYXRjaCBieSBFdGhhbiBGdXJtYW4uCisKKy0gSXNzdWUgIzI3MzU4OiBPcHRpbWl6ZWQgbWVyZ2luZyB2YXIta2V5d29yZCBhcmd1bWVudHMgYW5kIGltcHJvdmVkIGVycm9yCisgIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLW1hcHBpbmcgYXMgYSB2YXIta2V5d29yZCBhcmd1bWVudC4KKworLSBJc3N1ZSAjMjgyNTc6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLWl0ZXJhYmxlIGFzCisgIGEgdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQuICBBZGRlZCBvcGNvZGUgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTC4KKwogLSBJc3N1ZSAjMjgzMjI6IEZpeGVkIHBvc3NpYmxlIGNyYXNoZXMgd2hlbiB1bnBpY2tsZSBpdGVydG9vbHMgb2JqZWN0cyBmcm9tCiAgIGluY29ycmVjdCBwaWNrbGUgZGF0YS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvaG4gTGVpdGNoLgogCi0tIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCi0gIHVzYWdlIHBhdHRlcm5zLgorLSBJc3N1ZSAjMjgyMjg6IGltZ2hkciBub3cgc3VwcG9ydHMgcGF0aGxpYi4KIAotLSBJc3N1ZSAjMTcwMzE3ODogRml4IHRoZSBhYmlsaXR5IHRvIHBhc3MgdGhlIC0tbGluay1vYmplY3RzIG9wdGlvbiB0byB0aGUKLSAgZGlzdHV0aWxzIGJ1aWxkX2V4dCBjb21tYW5kLgorLSBJc3N1ZSAjMjgyMjY6IGNvbXBpbGVhbGwgbm93IHN1cHBvcnRzIHBhdGhsaWIuCisKKy0gSXNzdWUgIzI4MzE0OiBGaXggZnVuY3Rpb24gZGVjbGFyYXRpb24gKEMgZmxhZ3MpIGZvciB0aGUgZ2V0aXRlcmF0b3IoKSBtZXRob2QKKyAgb2YgeG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnQuCisKKy0gSXNzdWUgIzI4MTQ4OiBTdG9wIHVzaW5nIGxvY2FsdGltZSgpIGFuZCBnbXRpbWUoKSBpbiB0aGUgdGltZQorICBtb2R1bGUuCisKKyAgSW50cm9kdWNlZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBfUHlUaW1lX2xvY2FsdGltZSBBUEkgdGhhdCBpcworICBzaW1pbGFyIHRvIFBPU0lYIGxvY2FsdGltZV9yLCBidXQgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBQYXRjaAorICBieSBFZCBTY2hvdXRlbi4KIAogLSBJc3N1ZSAjMjgyNTM6IEZpeGVkIGNhbGVuZGFyIGZ1bmN0aW9ucyBmb3IgZXh0cmVtZSBtb250aHM6IDAwMDEtMDEKICAgYW5kIDk5OTktMTIuCkBAIC0xNTIsMTAgKzIyMCwxNSBAQAogLSBJc3N1ZSAjMjc4OTc6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkKICAgaWYgcGFzcyBpbnZhbGlkIHN0cmluZy1saWtlIG9iamVjdCBhcyBhIG5hbWUuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAorLSBJc3N1ZSAjMTg4NDQ6IHJhbmRvbS5jaG9pY2VzKCkgbm93IGhhcyBrIGFzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIGNvbW1vbiBjYXNlcyBhbmQgdGhlIGNvbWUgaW50byBsaW5lCisgIHdpdGggdGhlIHNpZ25hdHVyZSB1c2VkIGluIG90aGVyIGxhbmd1YWdlcy4KKwogLSBJc3N1ZSAjMTg4OTM6IEZpeCBpbnZhbGlkIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBMaWIvY3R5cGVzL21hY2hvbGliL2R5bGQucHkuCiAgIFBhdGNoIGJ5IE1hZGlzb24gTWF5LgogCiAtIElzc3VlICMyNzYxMTogRml4ZWQgc3VwcG9ydCBvZiBkZWZhdWx0IHJvb3Qgd2luZG93IGluIHRoZSB0a2ludGVyLnRpeCBtb2R1bGUuCisgIEFkZGVkIHRoZSBtYXN0ZXIgcGFyYW1ldGVyIGluIHRoZSBEaXNwbGF5U3R5bGUgY29uc3RydWN0b3IuCiAKIC0gSXNzdWUgIzI3MzQ4OiBJbiB0aGUgdHJhY2ViYWNrIG1vZHVsZSwgcmVzdG9yZSB0aGUgZm9ybWF0dGluZyBvZiBleGNlcHRpb24KICAgbWVzc2FnZXMgbGlrZSAiRXhjZXB0aW9uOiBOb25lIi4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4KQEAgLTE2Myw2ICsyMzYsMTUgQEAKIAogLSBJc3N1ZSAjMjU2NTE6IEFsbG93IGZhbHN5IHZhbHVlcyB0byBiZSB1c2VkIGZvciBtc2cgcGFyYW1ldGVyIG9mIHN1YlRlc3QoKS4KIAorLSBJc3N1ZSAjMjc3Nzg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIG9zLmdldHJhbmRvbSgpIHdoZW4gdGhlIGdldHJhbmRvbSgpIGlzCisgIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCBhIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhIFB5dGhvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI4MjAwOiBGaXggbWVtb3J5IGxlYWsgb24gV2luZG93cyBpbiB0aGUgb3MgbW9kdWxlIChmaXgKKyAgcGF0aF9jb252ZXJ0ZXIoKSBmdW5jdGlvbikuCisKKy0gSXNzdWUgIzI1NDAwOiBSb2JvdEZpbGVQYXJzZXIgbm93IGNvcnJlY3RseSByZXR1cm5zIGRlZmF1bHQgdmFsdWVzIGZvcgorICBjcmF3bF9kZWxheSBhbmQgcmVxdWVzdF9yYXRlLiAgSW5pdGlhbCBwYXRjaCBieSBQZXRlciBXaXJ0ei4KKwogLSBJc3N1ZSAjMjc5MzI6IFByZXZlbnQgbWVtb3J5IGxlYWsgaW4gd2luMzJfdmVyKCkuCiAKIC0gRml4IFVuYm91bmRMb2NhbEVycm9yIGluIHNvY2tldC5fc2VuZGZpbGVfdXNlX3NlbmRmaWxlLgpAQCAtMTcwLDYgKzI1MiwxMCBAQAogLSBJc3N1ZSAjMjgwNzU6IENoZWNrIGZvciBFUlJPUl9BQ0NFU1NfREVOSUVEIGluIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YKICAgb3Muc3RhdCgpLiAgUGF0Y2ggYnkgRXJ5ayBTdW4uCiAKKy0gSXNzdWUgIzIyNDkzOiBXYXJuaW5nIG1lc3NhZ2UgZW1pdHRlZCBieSB1c2luZyBpbmxpbmUgZmxhZ3MgaW4gdGhlIG1pZGRsZSBvZgorICByZWd1bGFyIGV4cHJlc3Npb24gbm93IGNvbnRhaW5zIGEgKHRydW5jYXRlZCkgcmVnZXggcGF0dGVybi4KKyAgUGF0Y2ggYnkgVGltIEdyYWhhbS4KKwogLSBJc3N1ZSAjMjUyNzA6IFByZXZlbnQgY29kZWNzLmVzY2FwZV9lbmNvZGUoKSBmcm9tIHJhaXNpbmcgU3lzdGVtRXJyb3Igd2hlbgogICBhbiBlbXB0eSBieXRlc3RyaW5nIGlzIHBhc3NlZC4KIApAQCAtMTc4LDIwICsyNjQsMzA0IEBACiAtIElzc3VlICMyNTg5NTogRW5hYmxlIFdlYlNvY2tldCBVUkwgc2NoZW1lcyBpbiB1cmxsaWIucGFyc2UudXJsam9pbi4KICAgUGF0Y2ggYnkgR2VyZ2VseSBJbXJlaCBhbmQgTWFya3VzIEhvbHRlcm1hbm4uCiAKKy0gSXNzdWUgIzI4MTE0OiBGaXggYSBjcmFzaCBpbiBwYXJzZV9lbnZsaXN0KCkgd2hlbiBlbnYgY29udGFpbnMgYnl0ZSBzdHJpbmdzLgorICBQYXRjaCBieSBFcnlrIFN1bi4KKwogLSBJc3N1ZSAjMjc1OTk6IEZpeGVkIGJ1ZmZlciBvdmVycnVuIGluIGJpbmFzY2lpLmIyYV9xcCgpIGFuZCBiaW5hc2NpaS5hMmJfcXAoKS4KIAotLSBJc3N1ZSAjMTkwMDM6bSBlbWFpbC5nZW5lcmF0b3Igbm93IHJlcGxhY2VzIG9ubHkgXHIgYW5kL29yIFxuIGxpbmUKLSAgZW5kaW5ncywgcGVyIHRoZSBSRkMsIGluc3RlYWQgb2YgYWxsIHVuaWNvZGUgbGluZSBlbmRpbmdzLgorLSBJc3N1ZSAjMjc5MDY6IEZpeCBzb2NrZXQgYWNjZXB0IGV4aGF1c3Rpb24gZHVyaW5nIGhpZ2ggVENQIHRyYWZmaWMuCisgIFBhdGNoIGJ5IEtldmluIENvbndheS4KKworLSBJc3N1ZSAjMjgxNzQ6IEhhbmRsZSB3aGVuIFNPX1JFVVNFUE9SVCBpc24ndCBwcm9wZXJseSBzdXBwb3J0ZWQuCisgIFBhdGNoIGJ5IFNldGggTWljaGFlbCBMYXJzb24uCisKKy0gSXNzdWUgIzI2NjU0OiBJbnNwZWN0IGZ1bmN0b29scy5wYXJ0aWFsIGluIGFzeW5jaW8uSGFuZGxlLl9fcmVwcl9fLgorICBQYXRjaCBieSBpY2Vib3kuCisKKy0gSXNzdWUgIzI2OTA5OiBGaXggc2xvdyBwaXBlcyBJTyBpbiBhc3luY2lvLgorICBQYXRjaCBieSBJTkFEQSBOYW9raS4KKworLSBJc3N1ZSAjMjgxNzY6IEZpeCBjYWxsYmFja3MgcmFjZSBpbiBhc3luY2lvLlNlbGVjdG9yTG9vcC5zb2NrX2Nvbm5lY3QuCisKKy0gSXNzdWUgIzI3NzU5OiBGaXggc2VsZWN0b3JzIGluY29ycmVjdGx5IHJldGFpbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCisgIFBhdGNoIGJ5IE1hcmsgV2lsbGlhbXMuCisKKy0gSXNzdWUgIzI4MzY4OiBSZWZ1c2UgbW9uaXRvcmluZyBwcm9jZXNzZXMgaWYgdGhlIGNoaWxkIHdhdGNoZXIgaGFzIG5vCisgIGxvb3AgYXR0YWNoZWQuCisgIFBhdGNoIGJ5IFZpbmNlbnQgTWljaGVsLgorCistIElzc3VlICMyODM2OTogUmFpc2UgUnVudGltZUVycm9yIHdoZW4gdHJhbnNwb3J0J3MgRkQgaXMgdXNlZCB3aXRoCisgIGFkZF9yZWFkZXIsIGFkZF93cml0ZXIsIGV0Yy4KKworLSBJc3N1ZSAjMjgzNzA6IFNwZWVkdXAgYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkuCisgIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KKworLSBJc3N1ZSAjMjgzNzE6IERlcHJlY2F0ZSBwYXNzaW5nIGFzeW5jaW8uSGFuZGxlcyB0byBydW5faW5fZXhlY3V0b3IuCisKKy0gSXNzdWUgIzI4MzcyOiBGaXggYXN5bmNpbyB0byBzdXBwb3J0IGZvcm1hdHRpbmcgb2Ygbm9uLXB5dGhvbiBjb3JvdXRpbmVzLgorCistIElzc3VlICMyODM5OTogUmVtb3ZlIFVOSVggc29ja2V0IGZyb20gRlMgYmVmb3JlIGJpbmRpbmcuCisgIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KKworLSBJc3N1ZSAjMjc5NzI6IFByb2hpYml0IFRhc2tzIHRvIGF3YWl0IG9uIHRoZW1zZWx2ZXMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjg0MDI6IEFkZHMgc2lnbmVkIGNhdGFsb2cgZmlsZXMgZm9yIHN0ZGxpYiBvbiBXaW5kb3dzLgorCistIElzc3VlICMyODMzMzogRW5hYmxlcyBVbmljb2RlIGZvciBwczEvcHMyIGFuZCBpbnB1dCgpIHByb21wdHMuIChQYXRjaCBieQorICBFcnlrIFN1bikKKworLSBJc3N1ZSAjMjgyNTE6IEltcHJvdmVtZW50cyB0byBoZWxwIG1hbnVhbHMgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjgxMTA6IGxhdW5jaGVyLm1zaSBoYXMgZGlmZmVyZW50IHByb2R1Y3QgY29kZXMgYmV0d2VlbiAzMi1iaXQgYW5kCisgIDY0LWJpdAorCistIElzc3VlICMyODE2MTogT3BlbmluZyBDT04gZm9yIHdyaXRlIGFjY2VzcyBmYWlscworCistIElzc3VlICMyODE2MjogV2luZG93c0NvbnNvbGVJTyByZWFkYWxsKCkgZmFpbHMgaWYgZmlyc3QgbGluZSBzdGFydHMgd2l0aAorICBDdHJsK1oKKworLSBJc3N1ZSAjMjgxNjM6IFdpbmRvd3NDb25zb2xlSU8gZmlsZW5vKCkgcGFzc2VzIHdyb25nIGZsYWdzIHRvCisgIF9vcGVuX29zZmhhbmRsZQorCistIElzc3VlICMyODE2NDogX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZSBmYWlscyBmb3IgdmFyaW91cyBwYXRocworCistIElzc3VlICMyODEzNzogUmVuYW1lcyBXaW5kb3dzIHBhdGggZmlsZSB0byAuX3B0aAorCistIElzc3VlICMyODEzODogV2luZG93cyAuX3B0aCBmaWxlIHNob3VsZCBhbGxvdyBpbXBvcnQgc2l0ZQorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjgyNTg6IEZpeGVkIGJ1aWxkIHdpdGggRXN0b25pYW4gbG9jYWxlIChweXRob24tY29uZmlnIGFuZCBkaXN0Y2xlYW4KKyAgdGFyZ2V0cyBpbiBNYWtlZmlsZSkuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KKworLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KKworLSBJc3N1ZSAjMTU4MTk6IFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBzZWFyY2ggZGlyZWN0b3J5IG9wdGlvbiBmb3IgYnVpbGRpbmcKKyAgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyODIxNzogQWRkcyBfdGVzdGNvbnNvbGUgbW9kdWxlIHRvIHRlc3QgY29uc29sZSBpbnB1dC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDEKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA5LTEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjM3MjI6IFRoZSBfX2NsYXNzX18gY2VsbCB1c2VkIGJ5IHplcm8tYXJndW1lbnQgc3VwZXIoKSBpcyBub3cKKyAgaW5pdGlhbGl6ZWQgZnJvbSB0eXBlLl9fbmV3X18gcmF0aGVyIHRoYW4gX19idWlsZF9jbGFzc19fLCBzbyBjbGFzcyBtZXRob2RzCisgIHJlbHlpbmcgb24gdGhhdCB3aWxsIG5vdyB3b3JrIGNvcnJlY3RseSB3aGVuIGNhbGxlZCBmcm9tIG1ldGFjbGFzcyBtZXRob2RzCisgIGR1cmluZyBjbGFzcyBjcmVhdGlvbi4gUGF0Y2ggYnkgTWFydGluIFRlaWNobWFubi4KKworLSBJc3N1ZSAjMjUyMjE6IEZpeCBjb3JydXB0ZWQgcmVzdWx0IGZyb20gUHlMb25nX0Zyb21Mb25nKDApIHdoZW4gUHl0aG9uCisgIGlzIGNvbXBpbGVkIHdpdGggTlNNQUxMUE9TSU5UUyA9IDAuCisKKy0gSXNzdWUgIzI3MDgwOiBJbXBsZW1lbnQgZm9ybWF0dGluZyBzdXBwb3J0IGZvciBQRVAgNTE1LiAgSW5pdGlhbCBwYXRjaAorICBieSBDaHJpcyBBbmdlbGljby4KKworLSBJc3N1ZSAjMjcxOTk6IEluIHRhcmZpbGUsIGV4cG9zZSBjb3B5ZmlsZW9iaiBidWZzaXplIHRvIGltcHJvdmUgdGhyb3VnaHB1dC4KKyAgUGF0Y2ggYnkgSmFzb24gRnJpZWQuCisKKy0gSXNzdWUgIzI3OTQ4OiBJbiBmLXN0cmluZ3MsIG9ubHkgYWxsb3cgYmFja3NsYXNoZXMgaW5zaWRlIHRoZSBicmFjZXMKKyAgKHdoZXJlIHRoZSBleHByZXNzaW9ucyBhcmUpLiAgVGhpcyBpcyBhIGJyZWFraW5nIGNoYW5nZSBmcm9tIHRoZSAzLjYKKyAgYWxwaGEgcmVsZWFzZXMsIHdoZXJlIGJhY2tzbGFzaGVzIGFyZSBhbGxvd2VkIGFueXdoZXJlIGluIGFuCisgIGYtc3RyaW5nLiAgQWxzbywgcmVxdWlyZSB0aGF0IGV4cHJlc3Npb25zIGluc2lkZSBmLXN0cmluZ3MgYmUKKyAgZW5jbG9zZWQgd2l0aGluIGxpdGVyYWwgYnJhY2VzLCBhbmQgbm90IGVzY2FwZXMgbGlrZQorICBmJ1x4N2IiaGkiXHg3ZCcuCisKKy0gSXNzdWUgIzI4MDQ2OiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMgZnJvbSBzeXMucGF0aC4KKworLSBJc3N1ZSAjMjgwNzE6IEFkZCBlYXJseS1vdXQgZm9yIGRpZmZlcmVuY2luZyBmcm9tIGFuIGVtcHR5IHNldC4KKworLSBJc3N1ZSAjMjU3NTg6IFByZXZlbnRzIHppcGltcG9ydCBmcm9tIHVubmVjZXNzYXJpbHkgZW5jb2RpbmcgYSBmaWxlbmFtZQorICAocGF0Y2ggYnkgRXJ5ayBTdW4pCisKKy0gSXNzdWUgIzI1ODU2OiBUaGUgX19tb2R1bGVfXyBhdHRyaWJ1dGUgb2YgZXh0ZW5zaW9uIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucworICBub3cgaXMgaW50ZXJuZWQuIFRoaXMgbGVhZHMgdG8gbW9yZSBjb21wYWN0IHBpY2tsZSBkYXRhIHdpdGggcHJvdG9jb2wgNC4KKworLSBJc3N1ZSAjMjcyMTM6IFJld29yayBDQUxMX0ZVTkNUSU9OKiBvcGNvZGVzIHRvIHByb2R1Y2Ugc2hvcnRlciBhbmQgbW9yZQorICBlZmZpY2llbnQgYnl0ZWNvZGUuIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLCBkZXNpZ24gYnkgU2VyaGl5IFN0b3JjaGFrYSwKKyAgcmV2aWV3ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBhbmQgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzI2MzMxOiBJbXBsZW1lbnQgdG9rZW5pemluZyBzdXBwb3J0IGZvciBQRVAgNTE1LiBQYXRjaCBieSBHZW9yZyBCcmFuZGwuCisKKy0gSXNzdWUgIzI3OTk5OiBNYWtlICJnbG9iYWwgYWZ0ZXIgdXNlIiBhIFN5bnRheEVycm9yLCBhbmQgZGl0dG8gZm9yIG5vbmxvY2FsLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWkuCisKKy0gSXNzdWUgIzI4MDAzOiBJbXBsZW1lbnQgUEVQIDUyNSAtLSBBc3luY2hyb25vdXMgR2VuZXJhdG9ycy4KKworLSBJc3N1ZSAjMjc5ODU6IEltcGxlbWVudCBQRVAgNTI2IC0tIFN5bnRheCBmb3IgVmFyaWFibGUgQW5ub3RhdGlvbnMuCisgIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMjYwNTg6IEFkZCBhIG5ldyBwcml2YXRlIHZlcnNpb24gdG8gdGhlIGJ1aWx0aW4gZGljdCB0eXBlLCBpbmNyZW1lbnRlZAorICBhdCBlYWNoIGRpY3Rpb25hcnkgY3JlYXRpb24gYW5kIGF0IGVhY2ggZGljdGlvbmFyeSBjaGFuZ2UuIEltcGxlbWVudGF0aW9uIG9mCisgIHRoZSBQRVAgNTA5LgorCistIElzc3VlICMyNzM2NDogQSBiYWNrc2xhc2gtY2hhcmFjdGVyIHBhaXIgdGhhdCBpcyBub3QgYSB2YWxpZCBlc2NhcGUgc2VxdWVuY2UKKyAgbm93IGdlbmVyYXRlcyBhIERlcHJlY2F0aW9uV2FybmluZy4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI3MzUwOiBgZGljdGAgaW1wbGVtZW50YXRpb24gaXMgY2hhbmdlZCBsaWtlIFB5UHkuIEl0IGlzIG1vcmUgY29tcGFjdAorICBhbmQgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlci4KKyAgKENvbmNlcHQgZGV2ZWxvcGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGFuZCBwYXRjaCBieSBJbmFkYSBOYW9raS4pCisKKy0gSXNzdWUgIzI3OTExOiBSZW1vdmUgdW5uZWNlc3NhcnkgZXJyb3IgY2hlY2tzIGluCisgIGBgZXhlY19idWlsdGluX29yX2R5bmFtaWMoKWBgLgorCistIElzc3VlICMyNzA3ODogQWRkZWQgQlVJTERfU1RSSU5HIG9wY29kZS4gIE9wdGltaXplZCBmLXN0cmluZ3MgZXZhbHVhdGlvbi4KKworLSBJc3N1ZSAjMTc4ODQ6IFB5dGhvbiBub3cgcmVxdWlyZXMgc3lzdGVtcyB3aXRoIGludHR5cGVzLmggYW5kIHN0ZGludC5oCisKKy0gSXNzdWUgIzI3OTYxOiBSZXF1aXJlIHBsYXRmb3JtcyB0byBzdXBwb3J0IGBgbG9uZyBsb25nYGAuIFB5dGhvbiBoYXNuJ3QKKyAgY29tcGlsZWQgd2l0aG91dCBgYGxvbmcgbG9uZ2BgIGZvciB5ZWFycywgc28gdGhpcyBpcyBiYXNpY2FsbHkgYSBmb3JtYWxpdHkuCisKKy0gSXNzdWUgIzI3MzU1OiBSZW1vdmVkIHN1cHBvcnQgZm9yIFdpbmRvd3MgQ0UuICBJdCB3YXMgbmV2ZXIgZmluaXNoZWQsCisgIGFuZCBXaW5kb3dzIENFIGlzIG5vIGxvbmdlciBhIHJlbGV2YW50IHBsYXRmb3JtIGZvciBQeXRob24uCisKKy0gSW1wbGVtZW50IFBFUCA1MjMuCisKKy0gSXNzdWUgIzI3ODcwOiBBIGxlZnQgc2hpZnQgb2YgemVybyBieSBhIGxhcmdlIGludGVnZXIgbm8gbG9uZ2VyIGF0dGVtcHRzCisgIHRvIGFsbG9jYXRlIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5LgorCistIElzc3VlICMyNTQwMjogSW4gaW50LXRvLWRlY2ltYWwtc3RyaW5nIGNvbnZlcnNpb24sIGltcHJvdmUgdGhlIGVzdGltYXRlCisgIG9mIHRoZSBpbnRlcm1lZGlhdGUgbWVtb3J5IHJlcXVpcmVkLCBhbmQgcmVtb3ZlIGFuIHVubmVjZXNzYXJpbHkgc3RyaWN0CisgIG92ZXJmbG93IGNoZWNrLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNzIxNDogSW4gbG9uZ19pbnZlcnQsIGJlIG1vcmUgY2FyZWZ1bCBhYm91dCBtb2RpZnlpbmcgb2JqZWN0CisgIHJldHVybmVkIGJ5IGxvbmdfYWRkLCBhbmQgcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGNoZWNrIGZvciBzbWFsbCBsb25ncy4KKyAgVGhhbmtzIE9yZW4gTWlsbWFuIGZvciBhbmFseXNpcyBhbmQgcGF0Y2guCisKKy0gSXNzdWUgIzI3NTA2OiBTdXBwb3J0IHBhc3NpbmcgdGhlIGJ5dGVzL2J5dGVhcnJheS50cmFuc2xhdGUoKSAiZGVsZXRlIgorICBhcmd1bWVudCBieSBrZXl3b3JkLgorCistIElzc3VlICMyNzgxMjogUHJvcGVybHkgY2xlYXIgb3V0IGEgZ2VuZXJhdG9yJ3MgZnJhbWUncyBiYWNrcmVmZXJlbmNlIHRvIHRoZQorICBnZW5lcmF0b3IgdG8gcHJldmVudCBjcmFzaGVzIGluIGZyYW1lLmNsZWFyKCkuCisKKy0gSXNzdWUgIzI3ODExOiBGaXggYSBjcmFzaCB3aGVuIGEgY29yb3V0aW5lIHRoYXQgaGFzIG5vdCBiZWVuIGF3YWl0ZWQgaXMKKyAgZmluYWxpemVkIHdpdGggd2FybmluZ3MtYXMtZXJyb3JzIGVuYWJsZWQuCisKKy0gSXNzdWUgIzI3NTg3OiBGaXggYW5vdGhlciBpc3N1ZSBmb3VuZCBieSBQVlMtU3R1ZGlvOiBOdWxsIHBvaW50ZXIgY2hlY2sKKyAgYWZ0ZXIgdXNlIG9mICdkZWYnIGluIF9QeVN0YXRlX0FkZE1vZHVsZSgpLgorICBJbml0aWFsIHBhdGNoIGJ5IENocmlzdGlhbiBIZWltZXMuCisKKy0gSXNzdWUgIzI3NzkyOiBUaGUgbW9kdWxvIG9wZXJhdGlvbiBhcHBsaWVkIHRvIGBgYm9vbGBgIGFuZCBvdGhlcgorICBgYGludGBgIHN1YmNsYXNzZXMgbm93IGFsd2F5cyByZXR1cm5zIGFuIGBgaW50YGAuIFByZXZpb3VzbHkKKyAgdGhlIHJldHVybiB0eXBlIGRlcGVuZGVkIG9uIHRoZSBpbnB1dCB2YWx1ZXMuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNjk4NDogaW50KCkgbm93IGFsd2F5cyByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGV4YWN0IGludC4KKworLSBJc3N1ZSAjMjU2MDQ6IEZpeCBhIG1pbm9yIGJ1ZyBpbiBpbnRlZ2VyIHRydWUgZGl2aXNpb247IHRoaXMgYnVnIGNvdWxkCisgIHBvdGVudGlhbGx5IGhhdmUgY2F1c2VkIG9mZi1ieS1vbmUtdWxwIHJlc3VsdHMgb24gcGxhdGZvcm1zIHdpdGgKKyAgdW5yZWxpYWJsZSBsZGV4cCBpbXBsZW1lbnRhdGlvbnMuCisKKy0gSXNzdWUgIzI0MjU0OiBNYWtlIGNsYXNzIGRlZmluaXRpb24gbmFtZXNwYWNlIG9yZGVyZWQgYnkgZGVmYXVsdC4KKworLSBJc3N1ZSAjMjc2NjI6IEZpeCBhbiBvdmVyZmxvdyBjaGVjayBpbiBgYExpc3RfTmV3YGA6IHRoZSBvcmlnaW5hbCBjb2RlIHdhcworICBjaGVja2luZyBhZ2FpbnN0IGBgUHlfU0laRV9NQVhgYCBpbnN0ZWFkIG9mIHRoZSBjb3JyZWN0IHVwcGVyIGJvdW5kIG9mCisgIGBgUHlfU1NJWkVfVF9NQVhgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3NzgyOiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGltcG9ydCBub3cgY29ycmVjdGx5IGFsbG93cyB0aGUKKyAgYGBtX21ldGhvZHNgYCBmaWVsZCB0byBiZSB1c2VkIHRvIGFkZCBtb2R1bGUgbGV2ZWwgZnVuY3Rpb25zIHRvIGluc3RhbmNlcworICBvZiBub24tbW9kdWxlIHR5cGVzIHJldHVybmVkIGZyb20gYGBQeV9jcmVhdGVfbW9kYGAuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzkzNjogVGhlIHJvdW5kKCkgZnVuY3Rpb24gYWNjZXB0ZWQgYSBzZWNvbmQgTm9uZSBhcmd1bWVudAorICBmb3Igc29tZSB0eXBlcyBidXQgbm90IGZvciBvdGhlcnMuICBGaXhlZCB0aGUgaW5jb25zaXN0ZW5jeSBieQorICBhY2NlcHRpbmcgTm9uZSBmb3IgYWxsIG51bWVyaWMgdHlwZXMuCisKKy0gSXNzdWUgIzI3NDg3OiBXYXJuIGlmIGEgc3VibW9kdWxlIGFyZ3VtZW50IHRvICJweXRob24gLW0iIG9yCisgIHJ1bnB5LnJ1bl9tb2R1bGUoKSBpcyBmb3VuZCBpbiBzeXMubW9kdWxlcyBhZnRlciBwYXJlbnQgcGFja2FnZXMgYXJlCisgIGltcG9ydGVkLCBidXQgYmVmb3JlIHRoZSBzdWJtb2R1bGUgaXMgZXhlY3V0ZWQuCisKKy0gSXNzdWUgIzI3MTU3OiBNYWtlIG9ubHkgdHlwZSgpIGl0c2VsZiBhY2NlcHQgdGhlIG9uZS1hcmd1bWVudCBmb3JtLgorICBQYXRjaCBieSBFcnlrIFN1biBhbmQgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc1NTg6IEZpeCBhIFN5c3RlbUVycm9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAicmFpc2UiIHN0YXRlbWVudC4KKyAgSW4gYSBicmFuZCBuZXcgdGhyZWFkLCByYWlzZSBhIFJ1bnRpbWVFcnJvciBzaW5jZSB0aGVyZSBpcyBubyBhY3RpdmUKKyAgZXhjZXB0aW9uIHRvIHJlcmFpc2UuIFBhdGNoIHdyaXR0ZW4gYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI4MDA4OiBJbXBsZW1lbnQgUEVQIDUzMCAtLSBhc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbnMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjgwMzc6IFVzZSBzcWxpdGUzX2dldF9hdXRvY29tbWl0KCkgaW5zdGVhZCBvZiBzZXR0aW5nCisgIENvbm5lY3Rpb24tPmluVHJhbnNhY3Rpb24gbWFudWFsbHkuCisKKy0gSXNzdWUgIzI1MjgzOiBBdHRyaWJ1dGVzIHRtX2dtdG9mZiBhbmQgdG1fem9uZSBhcmUgbm93IGF2YWlsYWJsZSBvbgorICBhbGwgcGxhdGZvcm1zIGluIHRoZSByZXR1cm4gdmFsdWVzIG9mIHRpbWUubG9jYWx0aW1lKCkgYW5kCisgIHRpbWUuZ210aW1lKCkuCisKKy0gSXNzdWUgIzI0NDU0OiBSZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2ggb2JqZWN0IGdyb3VwcyBhcmUgbm93CisgIGFjY2Vzc2libGUgdXNpbmcgX19nZXRpdGVtX18uICAibW9beF0iIGlzIGVxdWl2YWxlbnQgdG8KKyAgIm1vLmdyb3VwKHgpIi4KKworLSBJc3N1ZSAjMTA3NDA6IHNxbGl0ZTMgbm8gbG9uZ2VyIGltcGxpY2l0bHkgY29tbWl0IGFuIG9wZW4gdHJhbnNhY3Rpb24KKyAgYmVmb3JlIERETCBzdGF0ZW1lbnRzLgorCistIElzc3VlICMxNzk0MTogQWRkIGEgKm1vZHVsZSogcGFyYW1ldGVyIHRvIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKS4KKworLSBJc3N1ZSAjMjI0OTM6IElubGluZSBmbGFncyBub3cgc2hvdWxkIGJlIHVzZWQgb25seSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIERlcHJlY2F0aW9uIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiB1c2VzIHRoZW0gaW4gdGhlCisgIG1pZGRsZSBvZiB0aGUgcmVndWxhciBleHByZXNzaW9uLgorCistIElzc3VlICMyNjg4NTogeG1scnBjIG5vdyBzdXBwb3J0cyB1bm1hcnNoYWxsaW5nIGFkZGl0aW9uYWwgZGF0YSB0eXBlcyB1c2VkCisgIGJ5IEFwYWNoZSBYTUwtUlBDIGltcGxlbWVudGF0aW9uIGZvciBudW1lcmljcyBhbmQgTm9uZS4KKworLSBJc3N1ZSAjMjgwNzA6IEZpeGVkIHBhcnNpbmcgaW5saW5lIHZlcmJvc2UgZmxhZyBpbiByZWd1bGFyIGV4cHJlc3Npb25zLgorCistIElzc3VlICMxOTUwMDogQWRkIGNsaWVudC1zaWRlIFNTTCBzZXNzaW9uIHJlc3VtcHRpb24gdG8gdGhlIHNzbCBtb2R1bGUuCisKKy0gSXNzdWUgIzI4MDIyOiBEZXByZWNhdGUgc3NsLXJlbGF0ZWQgYXJndW1lbnRzIGluIGZhdm9yIG9mIFNTTENvbnRleHQuIFRoZQorICBkZXByZWNhdGlvbiBpbmNsdWRlIG1hbnVhbCBjcmVhdGlvbiBvZiBTU0xTb2NrZXQgYW5kIGNlcnRmaWxlL2tleWZpbGUKKyAgKG9yIHNpbWlsYXIpIGluIGZ0cGxpYiwgaHR0cGxpYiwgaW1hcGxpYiwgc210cGxpYiwgcG9wbGliIGFuZCB1cmxsaWIuCisKKy0gSXNzdWUgIzI4MDQzOiBTU0xDb250ZXh0IGhhcyBpbXByb3ZlZCBkZWZhdWx0IHNldHRpbmdzOiBPUF9OT19TU0x2MiwKKyAgT1BfTk9fU1NMdjMsIE9QX05PX0NPTVBSRVNTSU9OLCBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsCisgIE9QX1NJTkdMRV9ESF9VU0UsIE9QX1NJTkdMRV9FQ0RIX1VTRSBhbmQgSElHSCBjaXBoZXJzIHdpdGhvdXQgTUQ1LgorCistIElzc3VlICMyNDY5MzogQ2hhbmdlZCBzb21lIFJ1bnRpbWVFcnJvcidzIGluIHRoZSB6aXBmaWxlIG1vZHVsZSB0byBtb3JlCisgIGFwcHJvcHJpYXRlIHR5cGVzLiBJbXByb3ZlZCBzb21lIGVycm9yIG1lc3NhZ2VzIGFuZCBkZWJ1Z2dpbmcgb3V0cHV0LgorCistIElzc3VlICMxNzkwOTogYGBqc29uLmxvYWRgYCBhbmQgYGBqc29uLmxvYWRzYGAgbm93IHN1cHBvcnQgYmluYXJ5IGlucHV0CisgIGVuY29kZWQgYXMgVVRGLTgsIFVURi0xNiBvciBVVEYtMzIuIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI3MTM3OiB0aGUgcHVyZSBQeXRob24gZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYGBmdW5jdG9vbHMucGFydGlhbGBgCisgIG5vdyBtYXRjaGVzIHRoZSBiZWhhdmlvdXIgb2YgaXRzIGFjY2VsZXJhdGVkIEMgY291bnRlcnBhcnQgZm9yIHN1YmNsYXNzaW5nLAorICBwaWNrbGluZyBhbmQgdGV4dCByZXByZXNlbnRhdGlvbiBwdXJwb3Nlcy4gUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeSBhbmQKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvd3MgYW5kIGNyYXNoZXMgaW4gdGhlIG1tYXAgbW9kdWxlIHdpdGggdW51c3VhbAorICB1c2FnZSBwYXR0ZXJucy4KKworLSBJc3N1ZSAjMTcwMzE3ODogRml4IHRoZSBhYmlsaXR5IHRvIHBhc3MgdGhlIC0tbGluay1vYmplY3RzIG9wdGlvbiB0byB0aGUKKyAgZGlzdHV0aWxzIGJ1aWxkX2V4dCBjb21tYW5kLgogCiAtIElzc3VlICMyODAxOTogaXRlcnRvb2xzLmNvdW50KCkgbm8gbG9uZ2VyIHJvdW5kcyBub24taW50ZWdlciBzdGVwIGluIHJhbmdlCiAgIGJldHdlZW4gMS4wIGFuZCAyLjAgdG8gMS4KIAorLSBJc3N1ZSAjMTg0MDE6IFBkYiBub3cgc3VwcG9ydHMgdGhlICdyZWFkcmMnIGtleXdvcmQgYXJndW1lbnQgdG8gY29udHJvbAorICB3aGV0aGVyIC5wZGJyYyBmaWxlcyBzaG91bGQgYmUgcmVhZC4gIFBhdGNoIGJ5IE1hcnRpbiBNYXR1c2lhayBhbmQKKyAgU2FtIEtpbWJyZWwuCisKIC0gSXNzdWUgIzI1OTY5OiBVcGRhdGUgdGhlIGxpYjJ0bzMgZ3JhbW1hciB0byBoYW5kbGUgdGhlIHVucGFja2luZwogICBnZW5lcmFsaXphdGlvbnMgYWRkZWQgaW4gMy41LgogCiAtIElzc3VlICMxNDk3NzogbWFpbGNhcCBub3cgcmVzcGVjdHMgdGhlIG9yZGVyIG9mIHRoZSBsaW5lcyBpbiB0aGUgbWFpbGNhcAogICBmaWxlcyAoImZpcnN0IG1hdGNoIiksIGFzIHJlcXVpcmVkIGJ5IFJGQyAxNTQyLiAgUGF0Y2ggYnkgTWljaGFlbCBMYXphci4KIAorLSBJc3N1ZSAjMjgwMjU6IENvbnZlcnQgYWxsIHNzbCBtb2R1bGUgY29uc3RhbnRzIHRvIEludEVudW0gYW5kIEludEZsYWdzLgorICBTU0xDb250ZXh0IHByb3BlcnRpZXMgbm93IHJldHVybiBmbGFncyBhbmQgZW51bXMuCisKKy0gSXNzdWUgIzQzMzAyODogQWRkZWQgc3VwcG9ydCBvZiBtb2RpZmllciBzcGFucyBpbiByZWd1bGFyIGV4cHJlc3Npb25zLgorCiAtIElzc3VlICMyNDU5NDogVmFsaWRhdGVzIHBlcnNpc3QgcGFyYW1ldGVyIHdoZW4gb3BlbmluZyBNU0kgZGF0YWJhc2UKIAogLSBJc3N1ZSAjMTc1ODI6IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBub3dzIHByZXNlcnZlcyB3aGl0ZXNwYWNlcyBpbiBhdHRyaWJ1dGVzCkBAIC0yMDAsOSArNTcwLDE5IEBACiAtIElzc3VlICMyODA0NzogRml4ZWQgY2FsY3VsYXRpb24gb2YgbGluZSBsZW5ndGggdXNlZCBmb3IgdGhlIGJhc2U2NCBDVEUKICAgaW4gdGhlIG5ldyBlbWFpbCBwb2xpY2llcy4KIAorLSBJc3N1ZSAjMjc1NzY6IEZpeCBjYWxsIG9yZGVyIGluIE9yZGVyZWREaWN0Ll9faW5pdF9fKCkuCisKKy0gZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3Igbm93IHN1cHBvcnRzIHRoZSBwb2xpY3kga2V5d29yZC4KKworLSBJc3N1ZSAjMjgwMjc6IFJlbW92ZSB1bmRvY3VtZW50ZWQgbW9kdWxlcyBmcm9tIGBgTGliL3BsYXQtKmBgOiBJTiwgQ0RST00sCisgIERMRkNOLCBUWVBFUywgQ0RJTywgYW5kIFNUUk9QVFMuCisKIC0gSXNzdWUgIzI3NDQ1OiBEb24ndCBwYXNzIHN0cihfY2hhcnNldCkgdG8gTUlNRVRleHQuc2V0X3BheWxvYWQoKS4KICAgUGF0Y2ggYnkgQ2xhdWRlIFBhcm96LgogCistIElzc3VlICMyNDI3NzogVGhlIG5ldyBlbWFpbCBBUEkgaXMgbm8gbG9uZ2VyIHByb3Zpc2lvbmFsLCBhbmQgdGhlIGRvY3MKKyAgaGF2ZSBiZWVuIHJlb3JnYW5pemVkIGFuZCByZXdyaXR0ZW4gdG8gZW1waGFzaXplIHRoZSBuZXcgQVBJLgorCiAtIElzc3VlICMyMjQ1MDogdXJsbGliIG5vdyBpbmNsdWRlcyBhbiAiQWNjZXB0OiAqLyoiIGhlYWRlciBhbW9uZyB0aGUKICAgZGVmYXVsdCBoZWFkZXJzLiAgVGhpcyBtYWtlcyB0aGUgcmVzdWx0cyBvZiBSRVNUIEFQSSByZXF1ZXN0cyBtb3JlCiAgIGNvbnNpc3RlbnQgYW5kIHByZWRpY3RhYmxlIGVzcGVjaWFsbHkgd2hlbiBwcm94eSBzZXJ2ZXJzIGFyZSBpbnZvbHZlZC4KQEAgLTIxMSw2ICs1OTEsMTAgQEAKICAgYmV0d2VlbiBydW5zIGdpdmVuIHRoZSBzYW1lIEdyYW1tYXIudHh0IGlucHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGhhc2gKICAgcmFuZG9taXphdGlvbiBzZXR0aW5nLgogCistIElzc3VlICMyODAwNTogQWxsb3cgSW1wb3J0RXJyb3JzIGluIGVuY29kaW5nIGltcGxlbWVudGF0aW9uIHRvIHByb3BhZ2F0ZS4KKworLSBJc3N1ZSAjMjY2Njc6IFN1cHBvcnQgcGF0aC1saWtlIG9iamVjdHMgaW4gaW1wb3J0bGliLnV0aWwuCisKIC0gSXNzdWUgIzI3NTcwOiBBdm9pZCB6ZXJvLWxlbmd0aCBtZW1jcHkoKSBldGMgY2FsbHMgd2l0aCBudWxsIHNvdXJjZQogICBwb2ludGVycyBpbiB0aGUgImN0eXBlcyIgYW5kICJhcnJheSIgbW9kdWxlcy4KIApAQCAtMjE4LDE5ICs2MDIsNzIgQEAKICAgY2hhcmFjdGVycywgbm90IG9uIGFyYml0cmFyeSB1bmljb2RlIGxpbmUgYnJlYWtzLiAgVGhpcyBhbHNvIGZpeGVzIGEgYnVnIGluCiAgIEhUVFAgaGVhZGVyIHBhcnNpbmcuCiAKKy0gSXNzdWUgMjczMzE6IFRoZSBlbWFpbC5taW1lIGNsYXNzZXMgbm93IGFsbCBhY2NlcHQgYW4gb3B0aW9uYWwgcG9saWN5IGtleXdvcmQuCisKIC0gSXNzdWUgMjc5ODg6IEZpeCBlbWFpbCBpdGVyX2F0dGFjaG1lbnRzIGluY29ycmVjdCBtdXRhdGlvbiBvZiBwYXlsb2FkIGxpc3QuCiAKKy0gSXNzdWUgIzE2MTEzOiBBZGQgU0hBLTMgYW5kIFNIQUtFIHN1cHBvcnQgdG8gaGFzaGxpYiBtb2R1bGUuCisKKy0gRWxpbWluYXRlIGEgdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZSB3YXJuaW5nIGluIF9zY3Byb3h5LmMuCisKKy0gSXNzdWUgIzI3Nzc2OiBUaGUgOmZ1bmM6YG9zLnVyYW5kb21gIGZ1bmN0aW9uIGRvZXMgbm93IGJsb2NrIG9uIExpbnV4IDMuMTcKKyAgYW5kIG5ld2VyIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UKKyAgdGhlIHNlY3VyaXR5LiBUaGlzIGNoYW5nZSBpcyBwYXJ0IG9mIHRoZSA6cGVwOmA1MjRgLgorCistIElzc3VlICMyNzc3ODogRXhwb3NlIHRoZSBMaW51eCBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBhcyBhIG5ldworICA6ZnVuYzpgb3MuZ2V0cmFuZG9tYCBmdW5jdGlvbi4gVGhpcyBjaGFuZ2UgaXMgcGFydCBvZiB0aGUgOnBlcDpgNTI0YC4KKwogLSBJc3N1ZSAjMjc2OTE6IEZpeCBzc2wgbW9kdWxlJ3MgcGFyc2luZyBvZiBHRU5fUklEIHN1YmplY3QgYWx0ZXJuYXRpdmUgbmFtZQogICBmaWVsZHMgaW4gWC41MDkgY2VydHMuCiAKKy0gSXNzdWUgIzE4ODQ0OiBBZGQgcmFuZG9tLmNob2ljZXMoKS4KKworLSBJc3N1ZSAjMjU3NjE6IEltcHJvdmVkIGVycm9yIHJlcG9ydGluZyBhYm91dCB0cnVuY2F0ZWQgcGlja2xlIGRhdGEgaW4KKyAgQyBpbXBsZW1lbnRhdGlvbiBvZiB1bnBpY2tsZXIuICBVbnBpY2tsaW5nRXJyb3IgaXMgbm93IHJhaXNlZCBpbnN0ZWFkIG9mCisgIEF0dHJpYnV0ZUVycm9yIGFuZCBWYWx1ZUVycm9yIGluIHNvbWUgY2FzZXMuCisKKy0gSXNzdWUgIzI2Nzk4OiBBZGQgQkxBS0UyIChibGFrZTJiIGFuZCBibGFrZTJzKSB0byBoYXNobGliLgorCistIElzc3VlICMyNjAzMjogT3B0aW1pemVkIGdsb2JiaW5nIGluIHBhdGhsaWIgYnkgdXNpbmcgb3Muc2NhbmRpcigpOyBpdCBpcyBub3cKKyAgYWJvdXQgMS41LS00IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjU1OTY6IE9wdGltaXplZCBnbG9iKCkgYW5kIGlnbG9iKCkgZnVuY3Rpb25zIGluIHRoZQorICBnbG9iIG1vZHVsZTsgdGhleSBhcmUgbm93IGFib3V0IDMtLTYgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNzkyODogQWRkIHNjcnlwdCAocGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24pIHRvCisgIGhhc2hsaWIgbW9kdWxlIChyZXF1aXJlcyBPcGVuU1NMIDEuMS4wKS4KKwogLSBJc3N1ZSAjMjc4NTA6IFJlbW92ZSAzREVTIGZyb20gc3NsIG1vZHVsZSdzIGRlZmF1bHQgY2lwaGVyIGxpc3QgdG8gY291bnRlcgogICBtZWFzdXJlIHN3ZWV0MzIgYXR0YWNrIChDVkUtMjAxNi0yMTgzKS4KIAogLSBJc3N1ZSAjMjc3NjY6IEFkZCBDaGFDaGEyMCBQb2x5MTMwNSB0byBzc2wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBlciBsaXN0LgogICAoUmVxdWlyZWQgT3BlblNTTCAxLjEuMCBvciBMaWJyZVNTTCkuCiAKKy0gSXNzdWUgIzI1Mzg3OiBDaGVjayByZXR1cm4gdmFsdWUgb2Ygd2luc291bmQuTWVzc2FnZUJlZXAuCisKKy0gSXNzdWUgIzI3ODY2OiBBZGQgU1NMQ29udGV4dC5nZXRfY2lwaGVycygpIG1ldGhvZCB0byBnZXQgYSBsaXN0IG9mIGFsbAorICBlbmFibGVkIGNpcGhlcnMuCisKKy0gSXNzdWUgIzI3NzQ0OiBBZGQgQUZfQUxHIChMaW51eCBLZXJuZWwgY3J5cHRvKSB0byBzb2NrZXQgbW9kdWxlLgorCiAtIElzc3VlICMyNjQ3MDogUG9ydCBzc2wgYW5kIGhhc2hsaWIgbW9kdWxlIHRvIE9wZW5TU0wgMS4xLjAuCiAKKy0gSXNzdWUgIzExNjIwOiBGaXggc3VwcG9ydCBmb3IgU05EX01FTU9SWSBpbiB3aW5zb3VuZC5QbGF5U291bmQuICBCYXNlZCBvbiBhCisgIHBhdGNoIGJ5IFRpbSBMZXNoZXIuCisKKy0gSXNzdWUgIzExNzM0OiBBZGQgc3VwcG9ydCBmb3IgSUVFRSA3NTQgaGFsZi1wcmVjaXNpb24gZmxvYXRzIHRvIHRoZQorICBzdHJ1Y3QgbW9kdWxlLiBCYXNlZCBvbiBhIHBhdGNoIGJ5IEVsaSBTdGV2ZW5zLgorCistIElzc3VlICMyNzkxOTogRGVwcmVjYXRlZCBgYGV4dHJhX3BhdGhgYCBkaXN0cmlidXRpb24gb3B0aW9uIGluIGRpc3R1dGlscworICBwYWNrYWdpbmcuCisKKy0gSXNzdWUgIzIzMjI5OiBBZGQgbmV3IGBgY21hdGhgYCBjb25zdGFudHM6IGBgY21hdGguaW5mYGAgYW5kIGBgY21hdGgubmFuYGAgdG8KKyAgbWF0Y2ggYGBtYXRoLmluZmBgIGFuZCBgYG1hdGgubmFuYGAsIGFuZCBhbHNvIGBgY21hdGguaW5mamBgIGFuZAorICBgYGNtYXRoLm5hbmpgYCB0byBtYXRjaCB0aGUgZm9ybWF0IHVzZWQgYnkgY29tcGxleCByZXByLgorCistIElzc3VlICMyNzg0MjogVGhlIGNzdi5EaWN0UmVhZGVyIG5vdyByZXR1cm5zIHJvd3Mgb2YgdHlwZSBPcmRlcmVkRGljdC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIEhvbGRlbi4pCisKIC0gUmVtb3ZlIHN1cHBvcnQgZm9yIHBhc3NpbmcgYSBmaWxlIGRlc2NyaXB0b3IgdG8gb3MuYWNjZXNzLiBJdCBuZXZlciB3b3JrZWQgYnV0CiAgIHByZXZpb3VzbHkgZGlkbid0IHJhaXNlLgogCkBAIC0yNTIsMjUgKzY4OSwyNzYgQEAKIC0gSXNzdWUgIzEwNTEzOiBGaXggYSByZWdyZXNzaW9uIGluIENvbm5lY3Rpb24uY29tbWl0KCkuICBTdGF0ZW1lbnRzIHNob3VsZAogICBub3QgYmUgcmVzZXQgYWZ0ZXIgYSBjb21taXQuCiAKKy0gSXNzdWUgIzEyMzE5OiBDaHVua2VkIHRyYW5zZmVyIGVuY29kaW5nIHN1cHBvcnQgYWRkZWQgdG8KKyAgaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24gcmVxdWVzdHMuICBUaGUKKyAgdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlciBjbGFzcyBkb2VzIG5vdCBlbmZvcmNlIGEgQ29udGVudC1MZW5ndGgKKyAgaGVhZGVyIGFueSBtb3JlLiAgSWYgYSBIVFRQIHJlcXVlc3QgaGFzIGEgZmlsZSBvciBpdGVyYWJsZSBib2R5LCBidXQgbm8KKyAgQ29udGVudC1MZW5ndGggaGVhZGVyLCB0aGUgbGlicmFyeSBub3cgZmFsbHMgYmFjayB0byB1c2UgY2h1bmtlZCB0cmFuc2Zlci0KKyAgZW5jb2RpbmcuCisKIC0gQSBuZXcgdmVyc2lvbiBvZiB0eXBpbmcucHkgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGluZzoKICAgLSBDb2xsZWN0aW9uIChvbmx5IGZvciAzLjYpIChJc3N1ZSAjMjc1OTgpCiAgIC0gQWRkIEZyb3plblNldCB0byBfX2FsbF9fICh1cHN0cmVhbSAjMjYxKQogICAtIGZpeCBjcmFzaCBpbiBfZ2V0X3R5cGVfdmFycygpICh1cHN0cmVhbSAjMjU5KQogICAtIFJlbW92ZSB0aGUgZGljdCBjb25zdHJhaW50IGluIEZvcndhcmRSZWYuX2V2YWxfdHlwZSAodXBzdHJlYW0gIzI1MikKIAorLSBJc3N1ZSAjMjc4MzI6IE1ha2UgYGBfbm9ybWFsaXplYGAgcGFyYW1ldGVyIHRvIGBgRnJhY3Rpb25gYCBjb25zdHVjdG9yCisgIGtleXdvcmQtb25seSwgc28gdGhhdCBgYEZyYWN0aW9uKDIsIDMsIDQpYGAgbm93IHJhaXNlcyBgYFR5cGVFcnJvcmBgLgorCiAtIElzc3VlICMyNzUzOTogRml4IHVubm9ybWFsaXNlZCBgYEZyYWN0aW9uLl9fcG93X19gYCByZXN1bHQgaW4gdGhlIGNhc2UKICAgb2YgbmVnYXRpdmUgZXhwb25lbnQgYW5kIG5lZ2F0aXZlIGJhc2UuCiAKIC0gSXNzdWUgIzIxNzE4OiBjdXJzb3IuZGVzY3JpcHRpb24gaXMgbm93IGF2YWlsYWJsZSBmb3IgcXVlcmllcyB1c2luZyBDVEVzLgogCistIElzc3VlICMyNzgxOTogSW4gZGlzdHV0aWxzIHNkaXN0cywgc2ltcGx5IHByb2R1Y2UgdGhlICJnenRhciIgKGd6aXBwZWQgdGFyCisgIGZvcm1hdCkgZGlzdHJpYnV0aW9ucyBvbiBhbGwgcGxhdGZvcm1zIHVubGVzcyAiZm9ybWF0cyIgaXMgc3VwcGxpZWQuCisKIC0gSXNzdWUgIzI0NjY6IHBvc2l4cGF0aC5pc21vdW50IG5vdyBjb3JyZWN0bHkgcmVjb2duaXplcyBtb3VudCBwb2ludHMgd2hpY2gKICAgdGhlIHVzZXIgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2Vzcy4KIAorLSBJc3N1ZSAjOTk5ODogT24gTGludXgsIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBub3cgbG9va3MgaW4gTERfTElCUkFSWV9QQVRICisgIGZvciBzaGFyZWQgbGlicmFyaWVzLgorCistIElzc3VlICMyNzU3MzogZXhpdCBtZXNzYWdlIGZvciBjb2RlLmludGVyYWN0IGlzIG5vdyBjb25maWd1cmFibGUuCisKKy0gSXNzdWUgIzI3OTMwOiBJbXByb3ZlZCBiZWhhdmlvdXIgb2YgbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyLgorICBUaGFua3MgdG8gUGF1bG8gQW5kcmFkZSBhbmQgUGV0ciBWaWt0b3JpbiBmb3IgdGhlIGFuYWx5c2lzIGFuZCBwYXRjaC4KKworLSBJc3N1ZSAjNjc2NjogRGlzdHJpYnV0ZWQgcmVmZXJlbmNlIGNvdW50aW5nIGFkZGVkIHRvIG11bHRpcHJvY2Vzc2luZworICB0byBzdXBwb3J0IG5lc3Rpbmcgb2Ygc2hhcmVkIHZhbHVlcyAvIHByb3h5IG9iamVjdHMuCisKKy0gSXNzdWUgIzIxMjAxOiBJbXByb3ZlcyByZWFkYWJpbGl0eSBvZiBtdWx0aXByb2Nlc3NpbmcgZXJyb3IgbWVzc2FnZS4gIFRoYW5rcworICB0byBXb2pjaWVjaCBXYWxjemFrIGZvciBwYXRjaC4KKworLSBhc3luY2lvOiBBZGQgc2V0X3Byb3RvY29sIC8gZ2V0X3Byb3RvY29sIHRvIFRyYW5zcG9ydHMuCisKKy0gSXNzdWUgIzI3NDU2OiBhc3luY2lvOiBTZXQgVENQX05PREVMQVkgYnkgZGVmYXVsdC4KKworSURMRQorLS0tLQorCistIElzc3VlICMxNTMwODogQWRkICdpbnRlcnJ1cHQgZXhlY3V0aW9uJyAoXkMpIHRvIFNoZWxsIG1lbnUuCisgIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LCB1cGRhdGVkIGJ5IEJheWFyZCBSYW5kZWwuCisKKy0gSXNzdWUgIzI3OTIyOiBTdG9wIElETEUgdGVzdHMgZnJvbSAnZmxhc2hpbmcnIGd1aSB3aWRnZXRzIG9uIHRoZSBzY3JlZW4uCisKKy0gSXNzdWUgIzI3ODkxOiBDb25zaXN0ZW50bHkgZ3JvdXAgYW5kIHNvcnQgaW1wb3J0cyB3aXRoaW4gaWRsZWxpYiBtb2R1bGVzLgorCistIElzc3VlICMxNzY0MjogYWRkIGxhcmdlciBmb250IHNpemVzIGZvciBjbGFzc3Jvb20gcHJvamVjdGlvbi4KKworLSBBZGQgdmVyc2lvbiB0byB0aXRsZSBvZiBJRExFIGhlbHAgd2luZG93LgorCistIElzc3VlICMyNTU2NDogSW4gc2VjdGlvbiBvbiBJRExFIC0tIGNvbnNvbGUgZGlmZmVyZW5jZXMsIG1lbnRpb24gdGhhdAorICB1c2luZyBleGVjIG1lYW5zIHRoYXQgX19idWlsdGluc19fIGlzIGRlZmluZWQgZm9yIGVhY2ggc3RhdGVtZW50LgorCistIElzc3VlICMyNzgyMTogRml4IDMuNi4wYTMgcmVncmVzc2lvbiB0aGF0IHByZXZlbnRlZCBjdXN0b20ga2V5IHNldHMKKyAgZnJvbSBiZWluZyBzZWxlY3RlZCB3aGVuIG5vIGN1c3RvbSB0aGVtZSB3YXMgZGVmaW5lZC4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI2OTAwOiBFeGNsdWRlZCB1bmRlcnNjb3JlZCBuYW1lcyBhbmQgb3RoZXIgcHJpdmF0ZSBBUEkgZnJvbSBsaW1pdGVkIEFQSS4KKworLSBJc3N1ZSAjMjYwMjc6IEFkZCBzdXBwb3J0IGZvciBwYXRoLWxpa2Ugb2JqZWN0cyBpbiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoKSAmCisgIFB5VW5pY29kZV9GU0RlY29kZXIoKS4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI3NDI3OiBBZGRpdGlvbmFsIHRlc3RzIGZvciB0aGUgbWF0aCBtb2R1bGUuIFBhdGNoIGJ5IEZyYW5jaXNjbyBDb3V6by4KKworLSBJc3N1ZSAjMjc5NTM6IFNraXAgbWF0aCBhbmQgY21hdGggdGVzdHMgdGhhdCBmYWlsIG9uIE9TIFggMTAuNCBkdWUgdG8gYQorICBwb29yIGxpYm0gaW1wbGVtZW50YXRpb24gb2YgdGFuLgorCistIElzc3VlICMyNjA0MDogSW1wcm92ZSB0ZXN0X21hdGggYW5kIHRlc3RfY21hdGggY292ZXJhZ2UgYW5kIHJpZ291ci4gUGF0Y2ggYnkKKyAgSmVmZiBBbGxlbi4KKworLSBJc3N1ZSAjMjc3ODc6IENhbGwgZ2MuY29sbGVjdCgpIGJlZm9yZSBjaGVja2luZyBlYWNoIHRlc3QgZm9yICJkYW5nbGluZworICB0aHJlYWRzIiwgc2luY2UgdGhlIGRhbmdsaW5nIHRocmVhZHMgYXJlIHdlYWsgcmVmZXJlbmNlcy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI3NTY2OiBGaXggY2xlYW4gdGFyZ2V0IGluIGZyZWV6ZSBtYWtlZmlsZSAocGF0Y2ggYnkgTGlzYSBSb2FjaCkKKworLSBJc3N1ZSAjMjc3MDU6IFVwZGF0ZSBtZXNzYWdlIGluIHZhbGlkYXRlX3VjcnRiYXNlLnB5CisKKy0gSXNzdWUgIzI3OTc2OiBEZXByZWNhdGUgYnVpbGRpbmcgX2N0eXBlcyB3aXRoIHRoZSBidW5kbGVkIGNvcHkgb2YgbGliZmZpIG9uCisgIG5vbi1PU1ggVU5JWCBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzI3OTgzOiBDYXVzZSBsYWNrIG9mIGxsdm0tcHJvZmRhdGEgdG9vbCB3aGVuIHVzaW5nIGNsYW5nIGFzCisgIHJlcXVpcmVkIGZvciBQR08gbGlua2luZyB0byBiZSBhIGNvbmZpZ3VyZSB0aW1lIGVycm9yIHJhdGhlciB0aGFuCisgIG1ha2UgdGltZSB3aGVuIC0td2l0aC1vcHRpbWl6YXRpb25zIGlzIGVuYWJsZWQuICBBbHNvIGltcHJvdmUgb3VyCisgIGFiaWxpdHkgdG8gZmluZCB0aGUgbGx2bS1wcm9mZGF0YSB0b29sIG9uIE1hY09TIGFuZCBzb21lIExpbnV4ZXMuCisKKy0gSXNzdWUgIzIxNTkwOiBTdXBwb3J0IGZvciBEVHJhY2UgYW5kIFN5c3RlbVRhcCBwcm9iZXMuCisKKy0gSXNzdWUgIzI2MzA3OiBUaGUgcHJvZmlsZS1vcHQgYnVpbGQgbm93IGFwcGxpZXMgUEdPIHRvIHRoZSBidWlsdC1pbiBtb2R1bGVzLgorCistIElzc3VlICMyNjUzOTogQWRkIHRoZSAtLXdpdGgtb3B0aW1pemF0aW9ucyBmbGFnIHRvIHR1cm4gb24gTFRPIGFuZCBQR08gYnVpbGQKKyAgc3VwcG9ydCB3aGVuIGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMjc5MTc6IFNldCBwbGF0Zm9ybSB0cmlwbGV0cyBmb3IgQW5kcm9pZCBidWlsZHMuCisKKy0gSXNzdWUgIzI1ODI1OiBVcGRhdGUgcmVmZXJlbmNlcyB0byB0aGUgJChMSUJQTCkgaW5zdGFsbGF0aW9uIHBhdGggb24gQUlYLgorICBUaGlzIHBhdGggd2FzIGNoYW5nZWQgaW4gMy4yYTQuCisKKy0gVXBkYXRlIE9TIFggaW5zdGFsbGVyIHRvIHVzZSBTUUxpdGUgMy4xNC4xIGFuZCBYWiA1LjIuMi4KKworLSBJc3N1ZSAjMjExMjI6IEZpeCBMVE8gYnVpbGRzIG9uIE9TIFguCisKKy0gSXNzdWUgIzE3MTI4OiBCdWlsZCBPUyBYIGluc3RhbGxlciB3aXRoIGEgcHJpdmF0ZSBjb3B5IG9mIE9wZW5TU0wuCisgIEFsc28gcHJvdmlkZSBhIHNhbXBsZSBJbnN0YWxsIENlcnRpZmljYXRlcyBjb21tYW5kIHNjcmlwdCB0byBpbnN0YWxsIGEKKyAgc2V0IG9mIHJvb3QgY2VydGlmaWNhdGVzIGZyb20gdGhlIHRoaXJkLXBhcnR5IGNlcnRpZmkgbW9kdWxlLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjc5NTI6IEdldCBUb29scy9zY3JpcHRzL2ZpeGNpZC5weSB3b3JraW5nIHdpdGggUHl0aG9uIDMgYW5kIHRoZQorICBjdXJyZW50ICJyZSIgbW9kdWxlLCBhdm9pZCBpbnZhbGlkIFB5dGhvbiBiYWNrc2xhc2ggZXNjYXBlcywgYW5kIGZpeCBhIGJ1ZworICBwYXJzaW5nIGVzY2FwZWQgQyBxdW90ZSBzaWducy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyODA2NTogVXBkYXRlIHh6IGRlcGVuZGVuY3kgdG8gNS4yLjIgYW5kIGJ1aWxkIGl0IGZyb20gc291cmNlLgorCistIElzc3VlICMyNTE0NDogRW5zdXJlcyBUYXJnZXREaXIgaXMgc2V0IGJlZm9yZSBjb250aW51aW5nIHdpdGggY3VzdG9tCisgIGluc3RhbGwuCisKKy0gSXNzdWUgIzE2MDI6IFdpbmRvd3MgY29uc29sZSBkb2Vzbid0IGlucHV0IG9yIHByaW50IFVuaWNvZGUgKFBFUCA1MjgpCisKKy0gSXNzdWUgIzI3NzgxOiBDaGFuZ2UgZmlsZSBzeXN0ZW0gZW5jb2Rpbmcgb24gV2luZG93cyB0byBVVEYtOCAoUEVQIDUyOSkKKworLSBJc3N1ZSAjMjc3MzE6IE9wdC1vdXQgb2YgTUFYX1BBVEggb24gV2luZG93cyAxMAorCistIElzc3VlICM2MTM1OiBBZGRzIGVuY29kaW5nIGFuZCBlcnJvcnMgcGFyYW1ldGVycyB0byBzdWJwcm9jZXNzLgorCistIElzc3VlICMyNzk1OTogQWRkcyBvZW0gZW5jb2RpbmcsIGFsaWFzIGFuc2kgdG8gbWJjcywgbW92ZSBhbGlhc21iY3MgdG8KKyAgY29kZWMgbG9va3VwLgorCistIElzc3VlICMyNzk4MjogVGhlIGZ1bmN0aW9ucyBvZiB0aGUgd2luc291bmQgbW9kdWxlIG5vdyBhY2NlcHQga2V5d29yZAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzIwMzY2OiBCdWlsZCBmdWxsIHRleHQgc2VhcmNoIHN1cHBvcnQgaW50byBTUUxpdGUgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjc3NTY6IEFkZHMgbmV3IGljb25zIGZvciBQeXRob24gZmlsZXMgYW5kIHByb2Nlc3NlcyBvbiBXaW5kb3dzLgorICBEZXNpZ25zIGJ5IENoZXJyeSBXYW5nLgorCistIElzc3VlICMyNzg4MzogVXBkYXRlIHNxbGl0ZSB0byAzLjE0LjEuMCBvbiBXaW5kb3dzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0wOC0xNSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3NzA0OiBPcHRpbWl6ZWQgY3JlYXRpbmcgYnl0ZXMgYW5kIGJ5dGVhcnJheSBmcm9tIGJ5dGUtbGlrZSBvYmplY3RzCisgIGFuZCBpdGVyYWJsZXMuICBTcGVlZCB1cCB0byAzIHRpbWVzIGZvciBzaG9ydCBvYmplY3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgTmFva2kgSW5hZGEuCisKKy0gSXNzdWUgIzI2ODIzOiBMYXJnZSBzZWN0aW9ucyBvZiByZXBlYXRlZCBsaW5lcyBpbiB0cmFjZWJhY2tzIGFyZSBub3cKKyAgYWJicmV2aWF0ZWQgYXMgIltQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudH0gbW9yZSB0aW1lc10iIGJ5IHRoZSBidWlsdGluCisgIHRyYWNlYmFjayByZW5kZXJpbmcuIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI3NTc0OiBEZWNyZWFzZWQgYW4gb3ZlcmhlYWQgb2YgcGFyc2luZyBrZXl3b3JkIGFyZ3VtZW50cyBpbiBmdW5jdGlvbnMKKyAgaW1wbGVtZW50ZWQgd2l0aCB1c2luZyBBcmd1bWVudCBDbGluaWMuCisKKy0gSXNzdWUgIzIyNTU3OiBOb3cgaW1wb3J0aW5nIGFscmVhZHkgaW1wb3J0ZWQgbW9kdWxlcyBpcyB1cCB0byAyLjUgdGltZXMKKyAgZmFzdGVyLgorCistIElzc3VlICMxNzU5NjogSW5jbHVkZSA8d2luY3J5cHQuaD4gdG8gaGVscCB3aXRoIE1pbiBHVyBidWlsZGluZy4KKworLSBJc3N1ZSAjMTc1OTk6IE9uIFdpbmRvd3MsIHJlbmFtZSB0aGUgcHJpdmF0ZWx5IGRlZmluZWQgUkVQQVJTRV9EQVRBX0JVRkZFUgorICBzdHJ1Y3R1cmUgdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCB0aGUgZGVmaW5pdGlvbiBmcm9tIE1pbiBHVy4KKworLSBJc3N1ZSAjMjc1MDc6IEFkZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoIGJ5CisgIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzU4MTogRG9uJ3QgcmVseSBvbiB3cmFwcGluZyBmb3Igb3ZlcmZsb3cgY2hlY2sgaW4KKyAgUHlTZXF1ZW5jZV9UdXBsZSgpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzE2MjE6IEF2b2lkIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93IGluIGxpc3QgYW5kIHR1cGxlIG9wZXJhdGlvbnMuCisgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzQxOTogU3RhbmRhcmQgX19pbXBvcnRfXygpIG5vIGxvbmdlciBsb29rIHVwICJfX2ltcG9ydF9fIiBpbiBnbG9iYWxzCisgIG9yIGJ1aWx0aW5zIGZvciBpbXBvcnRpbmcgc3VibW9kdWxlcyBvciAiZnJvbSBpbXBvcnQiLiAgRml4ZWQgYSBjcmFzaCBpZgorICByYWlzZSBhIHdhcm5pbmcgYWJvdXQgdW5hYmxpbmcgdG8gcmVzb2x2ZSBwYWNrYWdlIGZyb20gX19zcGVjX18gb3IKKyAgX19wYWNrYWdlX18uCisKKy0gSXNzdWUgIzI3MDgzOiBSZXNwZWN0IHRoZSBQWVRIT05DQVNFT0sgZW52aXJvbm1lbnQgdmFyaWFibGUgdW5kZXIgV2luZG93cy4KKworLSBJc3N1ZSAjMjc1MTQ6IE1ha2UgaGF2aW5nIHRvbyBtYW55IHN0YXRpY2FsbHkgbmVzdGVkIGJsb2NrcyBhIFN5bnRheEVycm9yCisgIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IuCisKKy0gSXNzdWUgIzI3MzY2OiBJbXBsZW1lbnRlZCBQRVAgNDg3IChTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24pLgorICBVcG9uIHN1YmNsYXNzaW5nLCB0aGUgX19pbml0X3N1YmNsYXNzX18gY2xhc3NtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSBiYXNlCisgIGNsYXNzLiBEZXNjcmlwdG9ycyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCBfX3NldF9uYW1lX18gYWZ0ZXIgY2xhc3MgY3JlYXRpb24uCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjYwMjcsICMyNzUyNDogQWRkIFBFUCA1MTkvX19mc3BhdGhfXygpIHN1cHBvcnQgdG8gdGhlIG9zIGFuZCBvcy5wYXRoCisgIG1vZHVsZXMuIEluY2x1ZGVzIGNvZGUgZnJvbSBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjc1OTg6IEFkZCBDb2xsZWN0aW9ucyB0byBjb2xsZWN0aW9ucy5hYmMuCisgIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aSwgZG9jcyBieSBOZWlsIEdpcmRoYXIuCisKKy0gSXNzdWUgIzI1OTU4OiBTdXBwb3J0ICJhbnRpLXJlZ2lzdHJhdGlvbiIgb2Ygc3BlY2lhbCBtZXRob2RzIGZyb20KKyAgdmFyaW91cyBBQkNzLCBsaWtlIF9faGFzaF9fLCBfX2l0ZXJfXyBvciBfX2xlbl9fLiAgQWxsIHRoZXNlIChhbmQKKyAgc2V2ZXJhbCBtb3JlKSBjYW4gYmUgc2V0IHRvIE5vbmUgaW4gYW4gaW1wbGVtZW50YXRpb24gY2xhc3MgYW5kIHRoZQorICBiZWhhdmlvciB3aWxsIGJlIGFzIGlmIHRoZSBtZXRob2QgaXMgbm90IGRlZmluZWQgYXQgYWxsLgorICAoUHJldmlvdXNseSwgdGhpcyBtZWNoYW5pc20gZXhpc3RlZCBvbmx5IGZvciBfX2hhc2hfXywgdG8gbWFrZQorICBtdXRhYmxlIGNsYXNzZXMgdW5oYXNoYWJsZS4pICBDb2RlIGNvbnRyaWJ1dGVkIGJ5IEFuZHJldyBCYXJuZXJ0IGFuZAorICBJdmFuIExldmtpdnNreWkuCisKKy0gSXNzdWUgIzE2NzY0OiBTdXBwb3J0IGtleXdvcmQgYXJndW1lbnRzIHRvIHpsaWIuZGVjb21wcmVzcygpLiAgUGF0Y2ggYnkKKyAgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3NzM2OiBQcmV2ZW50IHNlZ2ZhdWx0IGFmdGVyIGludGVycHJldGVyIHJlLWluaXRpYWxpemF0aW9uIGR1ZQorICB0byByZWYgY291bnQgcHJvYmxlbSBpbnRyb2R1Y2VkIGluIGNvZGUgZm9yIElzc3VlICMyNzAzOCBpbiAzLjYuMGEzLgorICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjU2Mjg6ICBUaGUgKnZlcmJvc2UqIGFuZCAqcmVuYW1lKiBwYXJhbWV0ZXJzIGZvcgorICBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlIGFyZSBub3cga2V5d29yZC1vbmx5LgorCistIElzc3VlICMxMjM0NTogQWRkIG1hdGhlbWF0aWNhbCBjb25zdGFudCB0YXUgdG8gbWF0aCBhbmQgY21hdGguIFNlZSBhbHNvCisgIFBFUCA2MjguCisKKy0gSXNzdWUgIzI2ODIzOiB0cmFjZWJhY2suU3RhY2tTdW1tYXJ5LmZvcm1hdCBub3cgYWJicmV2aWF0ZXMgbGFyZ2Ugc2VjdGlvbnMgb2YKKyAgcmVwZWF0ZWQgbGluZXMgYXMgIltQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudH0gbW9yZSB0aW1lc10iICh0aGlzIGNoYW5nZQorICB0aGVuIGZ1cnRoZXIgYWZmZWN0cyBvdGhlciB0cmFjZWJhY2sgZGlzcGxheSBvcGVyYXRpb25zIGluIHRoZSBtb2R1bGUpLiBQYXRjaAorICBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzY2NDogQWRkIHRvIGNvbmN1cnJlbnQuZnV0dXJlcy50aHJlYWQuVGhyZWFkUG9vbEV4ZWN1dG9yKCkKKyAgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhIHRocmVhZCBuYW1lIHByZWZpeC4KKworLSBJc3N1ZSAjMjcxODE6IEFkZCBnZW9tZXRyaWNfbWVhbiBhbmQgaGFybW9uaWNfbWVhbiB0byBzdGF0aXN0aWNzIG1vZHVsZS4KKworLSBJc3N1ZSAjMjc1NzM6IGNvZGUuaW50ZXJhY3Qgbm93IHByaW50cyBhbiBtZXNzYWdlIHdoZW4gZXhpdGluZy4KKworLSBJc3N1ZSAjNjQyMjogQWRkIGF1dG9yYW5nZSBtZXRob2QgdG8gdGltZWl0LlRpbWVyIG9iamVjdHMuCisKIC0gSXNzdWUgIzI3NzczOiBDb3JyZWN0IHNvbWUgbWVtb3J5IG1hbmFnZW1lbnQgZXJyb3JzIHNlcnZlcl9ob3N0bmFtZSBpbgogICBfc3NsLndyYXBfc29ja2V0KCkuCiAKIC0gSXNzdWUgIzI2NzUwOiB1bml0dGVzdC5tb2NrLmNyZWF0ZV9hdXRvc3BlYygpIG5vdyB3b3JrcyBwcm9wZXJseSBmb3IKLSAgc3ViY2xhc3NlcyBvZiBwcm9wZXJ0eSgpIGFuZCBvdGhlciBkYXRhIGRlc2NyaXB0b3JzLgorICBzdWJjbGFzc2VzIG9mIHByb3BlcnR5KCkgYW5kIG90aGVyIGRhdGEgZGVzY3JpcHRvcnMuICBSZW1vdmVzIHRoZSBuZXZlcgorICBwdWJsaWNseSB1c2VkLCBuZXZlciBkb2N1bWVudGVkIHVuaXR0ZXN0Lm1vY2suRGVzY3JpcHRvclR5cGVzIHR1cGxlLgorCistIElzc3VlICMyNjc1NDogVW5kb2N1bWVudGVkIHN1cHBvcnQgb2YgZ2VuZXJhbCBieXRlcy1saWtlIG9iamVjdHMKKyAgYXMgcGF0aCBpbiBjb21waWxlKCkgYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGlzIG5vdyBkZXByZWNhdGVkLgorCistIElzc3VlICMyNjgwMDogVW5kb2N1bWVudGVkIHN1cHBvcnQgb2YgZ2VuZXJhbCBieXRlcy1saWtlIG9iamVjdHMKKyAgYXMgcGF0aHMgaW4gb3MgZnVuY3Rpb25zIGlzIG5vdyBkZXByZWNhdGVkLgorCistIElzc3VlICMyNjk4MTogQWRkIF9vcmRlcl8gY29tcGF0aWJpbGl0eSBzaGltIHRvIGVudW0uRW51bSBmb3IKKyAgUHl0aG9uIDIvMyBjb2RlIGJhc2VzLgorCistIElzc3VlICMyNzY2MTogQWRkZWQgdHppbmZvIGtleXdvcmQgYXJndW1lbnQgdG8gZGF0ZXRpbWUuY29tYmluZS4KIAogLSBJbiB0aGUgY3Vyc2VzIG1vZHVsZSwgcmFpc2UgYW4gZXJyb3IgaWYgd2luZG93LmdldHN0cigpIG9yIHdpbmRvdy5pbnN0cigpIGlzCiAgIHBhc3NlZCBhIG5lZ2F0aXZlIHZhbHVlLgpAQCAtMjg5LDYgKzk3Nyw5IEBACiAgIEhUVFBfUFJPWFkgdmFyaWFibGUgd2hlbiBSRVFVRVNUX01FVEhPRCBlbnZpcm9ubWVudCBpcyBzZXQsIHdoaWNoIGluZGljYXRlcwogICB0aGF0IHRoZSBzY3JpcHQgaXMgaW4gQ0dJIG1vZGUuCiAKKy0gSXNzdWUgIzcwNjM6IFJlbW92ZSBkZWFkIGNvZGUgZnJvbSB0aGUgImFycmF5IiBtb2R1bGUncyBzbGljZSBoYW5kbGluZy4KKyAgUGF0Y2ggYnkgQ2h1Y2suCisKIC0gSXNzdWUgIzI3NjU2OiBEbyBub3QgYXNzdW1lIHNjaGVkLmggZGVmaW5lcyBhbnkgU0NIRURfKiBjb25zdGFudHMuCiAKIC0gSXNzdWUgIzI3MTMwOiBJbiB0aGUgInpsaWIiIG1vZHVsZSwgZml4IGhhbmRsaW5nIG9mIGxhcmdlIGJ1ZmZlcnMKQEAgLTI5Niw2ICs5ODcsMTUgQEAKICAgd2VyZSBsaW1pdGVkIHRvIDQgR2lCLCBhbmQgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gb3BlcmF0aW9ucyBkaWQgbm90CiAgIHByb3Blcmx5IGhhbmRsZSByZXN1bHRzIG9mIDQgR2lCLgogCistIElzc3VlICMyNDc3MzogSW1wbGVtZW50ZWQgUEVQIDQ5NSAoTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbikuCisKKy0gRXhwb3NlIHRoZSBFUE9MTEVYQ0xVU0lWRSBjb25zdGFudCAod2hlbiBpdCBpcyBkZWZpbmVkKSBpbiB0aGUgc2VsZWN0IG1vZHVsZS4KKworLSBJc3N1ZSAjMjc1Njc6IEV4cG9zZSB0aGUgRVBPTExSREhVUCBhbmQgUE9MTFJESFVQIGNvbnN0YW50cyBpbiB0aGUgc2VsZWN0CisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMTYyMTogQXZvaWQgc2lnbmVkIGludCBuZWdhdGlvbiBvdmVyZmxvdyBpbiB0aGUgImF1ZGlvb3AiIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjc1MzM6IFJlbGVhc2UgR0lMIGluIG50Ll9pc2RpcgogCiAtIElzc3VlICMxNzcxMTogRml4ZWQgdW5waWNrbGluZyBieSB0aGUgcGVyc2lzdGVudCBJRCB3aXRoIHByb3RvY29sIDAuCkBAIC0zMDMsNiArMTAwMywxMTMgQEAKIAogLSBJc3N1ZSAjMjc1MjI6IEF2b2lkIGFuIHVuaW50ZW50aW9uYWwgcmVmZXJlbmNlIGN5Y2xlIGluIGVtYWlsLmZlZWRwYXJzZXIuCiAKKy0gSXNzdWUgIzI3NTEyOiBGaXggYSBzZWdmYXVsdCB3aGVuIG9zLmZzcGF0aCgpIGNhbGxlZCBhbiBfX2ZzcGF0aF9fKCkgbWV0aG9kCisgIHRoYXQgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCisgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQorICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KKworLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKKy0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgorICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTgwNTogU2tpcCBhIHRlc3QgaW4gdGVzdF9wa2d1dGlsIGFzIG5lZWRlZCB0aGF0IGRvZXNuJ3Qgd29yayB3aGVuCisgIGBgX19uYW1lX18gPT0gX19tYWluX19gYC4gUGF0Y2ggYnkgU2lsZW50R2hvc3QuCisKKy0gSXNzdWUgIzI3NDcyOiBBZGQgdGVzdC5zdXBwb3J0LnVuaXhfc2hlbGwgYXMgdGhlIHBhdGggdG8gdGhlIGRlZmF1bHQgc2hlbGwuCisKKy0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAorICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorCistIElzc3VlICMyNzU5NDogUHJldmVudCBhc3NlcnRpb24gZXJyb3Igd2hlbiBydW5uaW5nIHRlc3RfYXN0IHdpdGggY292ZXJhZ2UKKyAgZW5hYmxlZDogZW5zdXJlIGNvZGUgb2JqZWN0IGhhcyBhIHZhbGlkIGZpcnN0IGxpbmUgbnVtYmVyLgorICBQYXRjaCBzdWdnZXN0ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3NjQ3OiBVcGRhdGUgYnVuZGxlZCBUY2wvVGsgdG8gOC42LjYuCisKKy0gSXNzdWUgIzI3NjEwOiBBZGRzIFBFUCA1MTQgbWV0YWRhdGEgdG8gV2luZG93cyBpbnN0YWxsZXIKKworLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAorICB3b3JrcyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzI3MzA5OiBFbmFibGVzIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKKyAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKKworLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwLCB3aGljaCBpcworICByZXF1aXJlZCBvbiBBSVguICBUaGUgcmVmZXJlbmNlcyB3ZXJlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGluIDMuNS4wYTEuCisKKy0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5CisgIENoaSBIc3VhbiBZZW4uCisKKy0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQorICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQorICBjb21waWxlZC4KKworLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCisgIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgorCistIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgorICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA3LTExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjc0NzM6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gYnl0ZXMgYW5kIGJ5dGVhcnJheQorICBjb25jYXRlbmF0aW9ucy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyMzAzNDogVGhlIG91dHB1dCBvZiBhIHNwZWNpYWwgUHl0aG9uIGJ1aWxkIHdpdGggZGVmaW5lZCBDT1VOVF9BTExPQ1MsCisgIFNIT1dfQUxMT0NfQ09VTlQgb3IgU0hPV19UUkFDS19DT1VOVCBtYWNyb3MgaXMgbm93IG9mZiBieSAgZGVmYXVsdC4gIEl0IGNhbgorICBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSAiLVggc2hvd2FsbG9jY291bnQiIG9wdGlvbi4gIEl0IG5vdyBvdXRwdXRzIHRvIHN0ZGVycgorICBpbnN0ZWFkIG9mIHN0ZG91dC4KKworLSBJc3N1ZSAjMjc0NDM6IF9fbGVuZ3RoX2hpbnRfXygpIG9mIGJ5dGVhcnJheSBpdGVyYXRvcnMgbm8gbG9uZ2VyIHJldHVybiBhCisgIG5lZ2F0aXZlIGludGVnZXIgZm9yIGEgcmVzaXplZCBieXRlYXJyYXkuCisKKy0gSXNzdWUgIzI3MDA3OiBUaGUgZnJvbWhleCgpIGNsYXNzIG1ldGhvZHMgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBzdWJjbGFzc2VzCisgIG5vdyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgY29ycmVzcG9uZGluZyBzdWJjbGFzcy4KKworTGlicmFyeQorLS0tLS0tLQorCiAtIElzc3VlICMyNjg0NDogRml4IGVycm9yIG1lc3NhZ2UgZm9yIGltcC5maW5kX21vZHVsZSgpIHRvIHJlZmVyIHRvICdwYXRoJwogICBpbnN0ZWFkIG9mICduYW1lJy4gUGF0Y2ggYnkgTGV2IE1heGltb3YuCiAKQEAgLTMxMywyMiArMTEyMCw1NCBAQAogICBjb25maXJtaW5nIHRoZSBuZXRzY2FwZSBjb29raWUgZm9ybWF0IGFuZCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoCiAgIGRvY3VtZW50YXRpb24uCiAKLS0gSXNzdWUgIzI2NjY0OiBGaXggYWN0aXZhdGUuZmlzaCBieSByZW1vdmluZyBtaXMtdXNlIG9mIGBgJGBgLgorLSBJc3N1ZSAjMjE3MDg6IERlcHJlY2F0ZWQgZGJtLmR1bWIgYmVoYXZpb3IgdGhhdCBkaWZmZXJzIGZyb20gY29tbW9uIGRibQorICBiZWhhdmlvcjogY3JlYXRpbmcgYSBkYXRhYmFzZSBpbiAncicgYW5kICd3JyBtb2RlcyBhbmQgbW9kaWZ5aW5nIGEgZGF0YWJhc2UKKyAgaW4gJ3InIG1vZGUuCiAKLS0gSXNzdWUgIzIyMTE1OiBGaXhlZCB0cmFjaW5nIFRraW50ZXIgdmFyaWFibGVzOiB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZwotICBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdyBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YKLSAgcGFpcnMgb2Ygc3RyaW5ncywgdHJhY2luZyBpbiB0aGUgInUiIG1vZGUgbm93IHdvcmtzLgorLSBJc3N1ZSAjMjY3MjE6IENoYW5nZSB0aGUgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLndmaWxlIGF0dHJpYnV0ZQorICB0byBpbXBsZW1lbnQgQnVmZmVyZWRJT0Jhc2UuIEluIHBhcnRpY3VsYXIsIHRoZSB3cml0ZSgpIG1ldGhvZCBubyBsb25nZXIKKyAgZG9lcyBwYXJ0aWFsIHdyaXRlcy4KIAotLSBGaXggYSBzY29waW5nIGlzc3VlIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIgd2hpY2ggdHJpZ2dlcmVkIGFuCi0gIFVuYm91bmRMb2NhbEVycm9yIHdoZW4gbGF6eS1sb2FkaW5nIGEgbW9kdWxlIHRoYXQgd2FzIGFscmVhZHkgcHV0IGludG8KLSAgc3lzLm1vZHVsZXMuCistIElzc3VlICMyMjExNTogQWRkZWQgbWV0aG9kcyB0cmFjZV9hZGQsIHRyYWNlX3JlbW92ZSBhbmQgdHJhY2VfaW5mbyBpbiB0aGUKKyAgdGtpbnRlci5WYXJpYWJsZSBjbGFzcy4gIFRoZXkgcmVwbGFjZSBvbGQgbWV0aG9kcyB0cmFjZV92YXJpYWJsZSwgdHJhY2UsCisgIHRyYWNlX3ZkZWxldGUgYW5kIHRyYWNlX3ZpbmZvIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKKyAgbm90IHdvcmsgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFRjbC4gIEZpeGVkIG9sZCB0cmFjaW5nIG1ldGhvZHM6CisgIHRyYWNlX3ZkZWxldGUoKSB3aXRoIHdyb25nIG1vZGUgbm8gbG9uZ2VyIGJyZWFrIHRyYWNpbmcsIHRyYWNlX3ZpbmZvKCkgbm93CisgIGFsd2F5cyByZXR1cm5zIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzLCB0cmFjaW5nIGluIHRoZSAidSIgbW9kZSBub3cgd29ya3MuCisKKy0gSXNzdWUgIzI2MjQzOiBPbmx5IHRoZSBsZXZlbCBhcmd1bWVudCB0byB6bGliLmNvbXByZXNzKCkgaXMga2V5d29yZCBhcmd1bWVudAorICBub3cuICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgcG9zaXRpb25hbC1vbmx5LgorCistIElzc3VlICMyNzAzODogRXhwb3NlIHRoZSBEaXJFbnRyeSB0eXBlIGFzIG9zLkRpckVudHJ5LiBDb2RlIHBhdGNoIGJ5CisgIEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNzE4NjogVXBkYXRlIG9zLmZzcGF0aCgpL1B5T1NfRlNQYXRoKCkgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZgorICBfX2ZzcGF0aF9fKCkgdG8gYmUgZWl0aGVyIHN0ciBvciBieXRlcy4KKworLSBJc3N1ZSAjMTg3MjY6IEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIG9mIHRoZSBkdW1wKCksIGR1bXBzKCksCisgIGxvYWQoKSBhbmQgbG9hZHMoKSBmdW5jdGlvbnMgYW5kIEpTT05FbmNvZGVyIGFuZCBKU09ORGVjb2RlciBjbGFzcworICBjb25zdHJ1Y3RvcnMgaW4gdGhlIGpzb24gbW9kdWxlIGFyZSBub3cga2V5d29yZC1vbmx5LgorCistIElzc3VlICMyNzMxOTogTWV0aG9kcyBzZWxlY3Rpb25fc2V0KCksIHNlbGVjdGlvbl9hZGQoKSwgc2VsZWN0aW9uX3JlbW92ZSgpCisgIGFuZCBzZWxlY3Rpb25fdG9nZ2xlKCkgb2YgdHRrLlRyZWVWaWV3IG5vdyBhbGxvdyBwYXNzaW5nIG11bHRpcGxlIGl0ZW1zIGFzCisgIG11bHRpcGxlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlbSBhcyBhIHR1cGxlLiAgRGVwcmVjYXRlZAorICB1bmRvY3VtZW50ZWQgYWJpbGl0eSBvZiBjYWxsaW5nIHRoZSBzZWxlY3Rpb24oKSBtZXRob2Qgd2l0aCBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzI3MDc5OiBGaXhlZCBjdXJzZXMuYXNjaWkgZnVuY3Rpb25zIGlzYmxhbmsoKSwgaXNjbnRybCgpIGFuZCBpc3B1bmN0KCkuCiAKKy0gSXNzdWUgIzI3Mjk0OiBOdW1lcmljYWwgc3RhdGUgaW4gdGhlIHJlcHIgZm9yIFRraW50ZXIgZXZlbnQgb2JqZWN0cyBpcyBub3cKKyAgcmVwcmVzZW50ZWQgYXMgYSBjb21iaW5hdGlvbiBvZiBrbm93biBmbGFncy4KKworLSBJc3N1ZSAjMjcxNzc6IE1hdGNoIG9iamVjdHMgaW4gdGhlIHJlIG1vZHVsZSBub3cgc3VwcG9ydCBpbmRleC1saWtlIG9iamVjdHMKKyAgYXMgZ3JvdXAgaW5kaWNlcy4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgSmVyb2VuIERlbWV5ZXIgYW5kIFhpYW5nIFpoYW5nLgorCiAtIElzc3VlICMyNjc1NDogU29tZSBmdW5jdGlvbnMgKGNvbXBpbGUoKSBldGMpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQKICAgZW5jb2RlZCBhcyBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZS1saWtlIG9iamVjdHMKICAgYXJlIGFjY2VwdGVkLgogCistIElzc3VlICMyNjUzNjogc29ja2V0LmlvY3RsIG5vdyBzdXBwb3J0cyBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRILiBQYXRjaCBieQorICBEYW5pZWwgU3Rva2VzLgorCiAtIElzc3VlICMyNzA0ODogUHJldmVudHMgZGlzdHV0aWxzIGZhaWxpbmcgb24gV2luZG93cyB3aGVuIGVudmlyb25tZW50CiAgIHZhcmlhYmxlcyBjb250YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzCiAKQEAgLTM0Nyw5ICsxMTg2LDE1IEBACiAgIExpbnV4LiAgVHJ1bmNhdGUgc2l6ZSB0byBJTlRfTUFYIGFuZCBsb29wIHVudGlsIHdlIGNvbGxlY3RlZCBlbm91Z2ggcmFuZG9tCiAgIGJ5dGVzLCBpbnN0ZWFkIG9mIGNhc3RpbmcgYSBkaXJlY3RseSBQeV9zc2l6ZV90IHRvIGludC4KIAorLSBJc3N1ZSAjMTY4NjQ6IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCBub3cgc3VwcG9ydHMgUkVQTEFDRSBzdGF0ZW1lbnQuCisgIEluaXRpYWwgcGF0Y2ggYnkgQWxleCBMb3JkVGhvcnNlbi4KKwogLSBJc3N1ZSAjMjYzODY6IEZpeGVkIHR0ay5UcmVlVmlldyBzZWxlY3Rpb24gb3BlcmF0aW9ucyB3aXRoIGl0ZW0gaWQncwogICBjb250YWluaW5nIHNwYWNlcy4KIAorLSBJc3N1ZSAjODYzNzogSG9ub3IgYSBwYWdlciBzZXQgYnkgdGhlIGVudiB2YXIgTUFOUEFHRVIgKGluIHByZWZlcmVuY2UgdG8KKyAgb25lIHNldCBieSB0aGUgZW52IHZhciBQQUdFUikuCisKIC0gW1NlY3VyaXR5XSBJc3N1ZSAjMjI2MzY6IEF2b2lkIHNoZWxsIGluamVjdGlvbiBwcm9ibGVtcyB3aXRoCiAgIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpLgogCkBAIC0zNTcsMjE5ICsxMjAyLDQwMyBAQAogICBsb2NhbGUgZW5jb2RpbmcsIGFuZCBmaXggZ2V0X2JlZ2lkeCgpIGFuZCBnZXRfZW5kaWR4KCkgdG8gcmV0dXJuIGNvZGUgcG9pbnQKICAgaW5kZXhlcy4KIAotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCi0KIC0gSXNzdWUgIzI3MzkyOiBBZGQgbG9vcC5jb25uZWN0X2FjY2VwdGVkX3NvY2tldCgpLgogICBQYXRjaCBieSBKaW0gRnVsdG9uLgogCi0tIElzc3VlICMyNzkzMDogSW1wcm92ZWQgYmVoYXZpb3VyIG9mIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lci4KLSAgVGhhbmtzIHRvIFBhdWxvIEFuZHJhZGUgYW5kIFBldHIgVmlrdG9yaW4gZm9yIHRoZSBhbmFseXNpcyBhbmQgcGF0Y2guCi0KLS0gSXNzdWUgIzIxMjAxOiBJbXByb3ZlcyByZWFkYWJpbGl0eSBvZiBtdWx0aXByb2Nlc3NpbmcgZXJyb3IgbWVzc2FnZS4gIFRoYW5rcwotICB0byBXb2pjaWVjaCBXYWxjemFrIGZvciBwYXRjaC4KLQotLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgotCi0tIElzc3VlICMyNzkwNjogRml4IHNvY2tldCBhY2NlcHQgZXhoYXVzdGlvbiBkdXJpbmcgaGlnaCBUQ1AgdHJhZmZpYy4KLSAgUGF0Y2ggYnkgS2V2aW4gQ29ud2F5LgotCi0tIElzc3VlICMyODE3NDogSGFuZGxlIHdoZW4gU09fUkVVU0VQT1JUIGlzbid0IHByb3Blcmx5IHN1cHBvcnRlZC4KLSAgUGF0Y2ggYnkgU2V0aCBNaWNoYWVsIExhcnNvbi4KLQotLSBJc3N1ZSAjMjY2NTQ6IEluc3BlY3QgZnVuY3Rvb2xzLnBhcnRpYWwgaW4gYXN5bmNpby5IYW5kbGUuX19yZXByX18uCi0gIFBhdGNoIGJ5IGljZWJveS4KLQotLSBJc3N1ZSAjMjY5MDk6IEZpeCBzbG93IHBpcGVzIElPIGluIGFzeW5jaW8uCi0gIFBhdGNoIGJ5IElOQURBIE5hb2tpLgotCi0tIElzc3VlICMyODE3NjogRml4IGNhbGxiYWNrcyByYWNlIGluIGFzeW5jaW8uU2VsZWN0b3JMb29wLnNvY2tfY29ubmVjdC4KLQotLSBJc3N1ZSAjMjc3NTk6IEZpeCBzZWxlY3RvcnMgaW5jb3JyZWN0bHkgcmV0YWluIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KLSAgUGF0Y2ggYnkgTWFyayBXaWxsaWFtcy4KLQotLSBJc3N1ZSAjMjgzNjg6IFJlZnVzZSBtb25pdG9yaW5nIHByb2Nlc3NlcyBpZiB0aGUgY2hpbGQgd2F0Y2hlciBoYXMKLSAgbm8gbG9vcCBhdHRhY2hlZC4KLSAgUGF0Y2ggYnkgVmluY2VudCBNaWNoZWwuCi0KLS0gSXNzdWUgIzI4MzY5OiBSYWlzZSBSdW50aW1lRXJyb3Igd2hlbiB0cmFuc3BvcnQncyBGRCBpcyB1c2VkIHdpdGgKLSAgYWRkX3JlYWRlciwgYWRkX3dyaXRlciwgZXRjLgotCi0tIElzc3VlICMyODM3MDogU3BlZWR1cCBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseS4KLSAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgotCi0tIElzc3VlICMyODM3MTogRGVwcmVjYXRlIHBhc3NpbmcgYXN5bmNpby5IYW5kbGVzIHRvIHJ1bl9pbl9leGVjdXRvci4KLQotLSBJc3N1ZSAjMjgzNzI6IEZpeCBhc3luY2lvIHRvIHN1cHBvcnQgZm9ybWF0dGluZyBvZiBub24tcHl0aG9uIGNvcm91dGluZXMuCi0KLS0gSXNzdWUgIzI4Mzk5OiBSZW1vdmUgVU5JWCBzb2NrZXQgZnJvbSBGUyBiZWZvcmUgYmluZGluZy4KLSAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgotCi0tIElzc3VlICMyNzk3MjogUHJvaGliaXQgVGFza3MgdG8gYXdhaXQgb24gdGhlbXNlbHZlcy4KLQotLSBJc3N1ZSAjMjY5MjM6IEZpeCBhc3luY2lvLkdhdGhlciB0byByZWZ1c2UgYmVpbmcgY2FuY2VsbGVkIG9uY2UgYWxsIAotICBjaGlsZHJlbiBhcmUgZG9uZS4KLSAgUGF0Y2ggYnkgSm9oYW5uZXMgRWJrZS4KLQotLSBJc3N1ZSAjMjY3OTY6IERvbid0IGNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgZm9yIGRlZmF1bHQgCi0gIHRocmVhZHBvb2wgZXhlY3V0b3IuCi0gIEluaXRpYWwgcGF0Y2ggYnkgSGFucyBMYXdyZW56LgotCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KLSAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KKy0gSXNzdWUgIzI3NDc3OiBJRExFIHNlYXJjaCBkaWFsb2dzIG5vdyB1c2UgdHRrIHdpZGdldHMuCiAKLS0gSXNzdWUgIzI3OTIyOiBTdG9wIElETEUgdGVzdHMgZnJvbSAnZmxhc2hpbmcnIGd1aSB3aWRnZXRzIG9uIHRoZSBzY3JlZW4uCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgogCi0tIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCi0KLS0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0Ci0gIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCi0KLS0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgotICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKLSAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCi0KLS0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgotICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorLSBJc3N1ZSAjMjc0NTI6IG1ha2UgY29tbWFuZCBsaW5lICJpZGxlLXRlc3Q+IHB5dGhvbiB0ZXN0X2hlbHAucHkiIHdvcmsuCisgIF9fZmlsZV9fIGlzIHJlbGF0aXZlIHdoZW4gcHl0aG9uIGlzIHN0YXJ0ZWQgaW4gdGhlIGZpbGUncyBkaXJlY3RvcnkuCiAKIC0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KIAorLSBJc3N1ZSAjMjczODA6IElETEU6IGFkZCBxdWVyeS5weSB3aXRoIGJhc2UgUXVlcnkgZGlhbG9nIGFuZCB0dGsgd2lkZ2V0cy4KKyAgTW9kdWxlIGhhZCBzdWJjbGFzc2VzIFNlY3Rpb25OYW1lLCBNb2R1bGVOYW1lLCBhbmQgSGVscFNvdXJjZSwgd2hpY2ggYXJlCisgIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGZyb20gdXNlcnMgYnkgY29uZmlnZGlhbG9nIGFuZCBmaWxlID0+TG9hZCBNb2R1bGUuCisgIEVhY2ggc3ViY2xhc3MgaGFzIGl0dyBvd24gdmFsaWRpdHkgY2hlY2tzLiAgVXNpbmcgTW9kdWxlTmFtZSBhbGxvd3MgdXNlcnMKKyAgdG8gZWRpdCBiYWQgbW9kdWxlIG5hbWVzIGluc3RlYWQgb2Ygc3RhcnRpbmcgb3Zlci4KKyAgQWRkIHRlc3RzIGFuZCBkZWxldGUgdGhlIHR3byBmaWxlcyBjb21iaW5lZCBpbnRvIHRoZSBuZXcgb25lLgorCistIElzc3VlICMyNzM3MjogVGVzdF9pZGxlIG5vIGxvbmdlciBjaGFuZ2VzIHRoZSBsb2NhbGUuCisKIC0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgY2hhcnMgaW4gSURMRSBORVdTLnR4dCwgZm9yIGNvbnRyaWJ1dG9yIG5hbWVzLgogCiAtIElzc3VlICMyNzI0NTogSURMRTogQ2xlYW5seSBkZWxldGUgY3VzdG9tIHRoZW1lcyBhbmQga2V5IGJpbmRpbmdzLgogICBQcmV2aW91c2x5LCB3aGVuIElETEUgd2FzIHN0YXJ0ZWQgZnJvbSBhIGNvbnNvbGUgb3IgYnkgaW1wb3J0LCBhIGNhc2NhZGUKICAgb2Ygd2FybmluZ3Mgd2FzIGVtaXR0ZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMyNDEzNzogUnVuIElETEUsIHRlc3RfaWRsZSwgYW5kIGh0ZXN0IHdpdGggdGtpbnRlciBkZWZhdWx0IHJvb3QKKyAgZGlzYWJsZWQuICBGaXggY29kZSBhbmQgdGVzdHMgdGhhdCBmYWlsIHdpdGggdGhpcyByZXN0cmljdGlvbi4gIEZpeCBodGVzdHMgdG8KKyAgbm90IGNyZWF0ZSBhIHNlY29uZCBhbmQgcmVkdW5kYW50IHJvb3QgYW5kIG1haW5sb29wLgorCistIElzc3VlICMyNzMxMDogRml4IElETEUuYXBwIGZhaWx1cmUgdG8gbGF1bmNoIG9uIE9TIFggZHVlIHRvIHZlc3RpZ2lhbCBpbXBvcnQuCisKIEMgQVBJCiAtLS0tLQogCiAtIElzc3VlICMyNjc1NDogUHlVbmljb2RlX0ZTRGVjb2RlcigpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQgZW5jb2RlZCBhcwotICBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZXMtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KKyAgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGUtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KIAotVGVzdHMKK0J1aWxkCiAtLS0tLQogCi0tIElzc3VlICMyODQwOTogcmVncnRlc3Q6IGZpeCB0aGUgcGFyc2VyIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCistIElzc3VlICMyODA2NjogRml4IHRoZSBsb2dpYyB0aGF0IHNlYXJjaGVzIGJ1aWxkIGRpcmVjdG9yaWVzIGZvciBnZW5lcmF0ZWQKKyAgaW5jbHVkZSBmaWxlcyB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgogCi0tIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCi0gIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorLSBJc3N1ZSAjMjc0NDI6IEV4cG9zZSB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwgdGhhdCBweXRob24gd2FzIGJ1aWx0IGFnYWluc3QsIGluCisgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSBhcyAnQU5EUk9JRF9BUElfTEVWRUwnLgogCi0tIElzc3VlICMyNzM2OTogSW4gdGVzdF9weWV4cGF0LCBhdm9pZCB0ZXN0aW5nIGFuIGVycm9yIG1lc3NhZ2UgZGV0YWlsIHRoYXQKLSAgY2hhbmdlZCBpbiBFeHBhdCAyLjIuMC4KKy0gSXNzdWUgIzI3NDM0OiBUaGUgaW50ZXJwcmV0ZXIgdGhhdCBydW5zIHRoZSBjcm9zcy1idWlsZCwgZm91bmQgaW4gUEFUSCwgbXVzdAorICBub3cgYmUgb2YgdGhlIHNhbWUgZmVhdHVyZSB2ZXJzaW9uIChlLmcuIDMuNikgYXMgdGhlIHNvdXJjZSBiZWluZyBidWlsdC4KKworLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCisKKy0gSXNzdWUgIzIzOTY4OiBSZW5hbWUgdGhlIHBsYXRmb3JtIGRpcmVjdG9yeSBmcm9tIHBsYXQtJChNQUNIREVQKSB0bworICBwbGF0LSQoUExBVEZPUk1fVFJJUExFVCkuCisgIFJlbmFtZSB0aGUgY29uZmlnIGRpcmVjdG9yeSAoTElCUEwpIGZyb20gY29uZmlnLSQoTERWRVJTSU9OKSB0bworICBjb25maWctJChMRFZFUlNJT04pLSQoUExBVEZPUk1fVFJJUExFVCkuCisgIEluc3RhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIGludG8gdGhlIHBsYXRmb3JtCisgIGRpcmVjdG9yeSBhbmQgcmVuYW1lIGl0IHRvIGluY2x1ZGUgdGhlIEFCSUZMQUdTLgorCistIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQuCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCi0tIElzc3VlICMyNzk1MjogR2V0IFRvb2xzL3NjcmlwdHMvZml4Y2lkLnB5IHdvcmtpbmcgd2l0aCBQeXRob24gMyBhbmQgdGhlCi0gIGN1cnJlbnQgInJlIiBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnCi0gIHBhcnNpbmcgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgotCiAtIElzc3VlICMyNzMzMjogRml4ZWQgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMKICAgZ2VuZXJhdGVkIGJ5IEFyZ3VtZW50IENsaW5pYy4gIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCiAKIC0gSXNzdWUgIzI3NDE4OiBGaXhlZCBUb29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weS4KIAotV2luZG93cwotLS0tLS0tLQorRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyODI1MTogSW1wcm92ZW1lbnRzIHRvIGhlbHAgbWFudWFscyBvbiBXaW5kb3dzLgorLSBJc3N1ZSAjMTk0ODk6IE1vdmVkIHRoZSBzZWFyY2ggYm94IGZyb20gdGhlIHNpZGViYXIgdG8gdGhlIGhlYWRlciBhbmQgZm9vdGVyCisgIG9mIGVhY2ggcGFnZS4gIFBhdGNoIGJ5IEFtbWFyIEFza2FyLgogCi0tIElzc3VlICMyODExMDogbGF1bmNoZXIubXNpIGhhcyBkaWZmZXJlbnQgcHJvZHVjdCBjb2RlcyBiZXR3ZWVuIDMyLWJpdCBhbmQKLSAgNjQtYml0Ci0KLS0gSXNzdWUgIzI1MTQ0OiBFbnN1cmVzIFRhcmdldERpciBpcyBzZXQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCBjdXN0b20KLSAgaW5zdGFsbC4KLQotLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAotICB3b3JrcyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzI3MzA5OiBFbmFibGVkIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMjgyNDg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkIHRvIHVzZSBPcGVuU1NMIDEuMC4yai4KLQotLSBJc3N1ZSAjMjgyNTg6IEZpeGVkIGJ1aWxkIHdpdGggRXN0b25pYW4gbG9jYWxlIChweXRob24tY29uZmlnIGFuZCBkaXN0Y2xlYW4KLSAgdGFyZ2V0cyBpbiBNYWtlZmlsZSkuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KLQotLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KLQotLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCi0gIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMTU4MTk6IFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBzZWFyY2ggZGlyZWN0b3J5IG9wdGlvbiBmb3IgYnVpbGRpbmcKLSAgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzI3NTY2OiBGaXggY2xlYW4gdGFyZ2V0IGluIGZyZWV6ZSBtYWtlZmlsZSAocGF0Y2ggYnkgTGlzYSBSb2FjaCkKLQotLSBJc3N1ZSAjMjc3MDU6IFVwZGF0ZSBtZXNzYWdlIGluIHZhbGlkYXRlX3VjcnRiYXNlLnB5Ci0KLS0gSXNzdWUgIzI3OTgzOiBDYXVzZSBsYWNrIG9mIGxsdm0tcHJvZmRhdGEgdG9vbCB3aGVuIHVzaW5nIGNsYW5nIGFzCi0gIHJlcXVpcmVkIGZvciBQR08gbGlua2luZyB0byBiZSBhIGNvbmZpZ3VyZSB0aW1lIGVycm9yIHJhdGhlciB0aGFuCi0gIG1ha2UgdGltZSB3aGVuIC0td2l0aC1vcHRpbWl6YXRpb25zIGlzIGVuYWJsZWQuICBBbHNvIGltcHJvdmUgb3VyCi0gIGFiaWxpdHkgdG8gZmluZCB0aGUgbGx2bS1wcm9mZGF0YSB0b29sIG9uIE1hY09TIGFuZCBzb21lIExpbnV4ZXMuCi0KLS0gSXNzdWUgIzI2MzA3OiBUaGUgcHJvZmlsZS1vcHQgYnVpbGQgbm93IGFwcGxpZXMgUEdPIHRvIHRoZSBidWlsdC1pbiBtb2R1bGVzLgotCi0tIElzc3VlICMyNjM1OTogQWRkIHRoZSAtLXdpdGgtb3B0aW1pemF0aW9ucyBjb25maWd1cmUgZmxhZy4KLQotLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKLSAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKLQotLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwIGFuZCBsZF9zb19haXgsCi0gIHdoaWNoIGFyZSByZXF1aXJlZCBvbiBBSVguICBUaGlzIHVwZGF0ZXMgcmVmZXJlbmNlcyB0byBhbiBpbnN0YWxsYXRpb24gcGF0aAotICB0aGF0IHdhcyBjaGFuZ2VkIGluIDMuMmE0LCBhbmQgdW5kb2VzIGNoYW5nZWQgcmVmZXJlbmNlcyB0byB0aGUgYnVpbGQgdHJlZQotICB0aGF0IHdlcmUgbWFkZSBpbiAzLjUuMGExLgotCi0tIElzc3VlICMyNzQ1MzogQ1BQIGludm9jYXRpb24gaW4gY29uZmlndXJlIG11c3QgdXNlIENQUEZMQUdTLiBQYXRjaCBieQotICBDaGkgSHN1YW4gWWVuLgotCi0tIElzc3VlICMyNzY0MTogVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGluc2VydHMgY29tbWVudHMgaW50byB0aGUgbWFrZWZpbGUKLSAgdG8gcHJldmVudCB0aGUgcGdlbiBhbmQgX2ZyZWV6ZV9pbXBvcnRsaWIgZXhlY3V0YWJsZXMgZnJvbSBiZWluZyBjcm9zcy0KLSAgY29tcGlsZWQuCi0KLS0gSXNzdWUgIzI2NjYyOiBTZXQgUFlUSE9OX0ZPUl9HRU4gaW4gY29uZmlndXJlIGFzIHRoZSBQeXRob24gcHJvZ3JhbSB0byBiZQotICB1c2VkIGZvciBmaWxlIGdlbmVyYXRpb24gZHVyaW5nIHRoZSBidWlsZC4KLQotLSBJc3N1ZSAjMTA5MTA6IEF2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4KLSAgQWxzbyB1cGRhdGUgRnJlZWRCU0QgdmVyc2lvbiBjaGVja3MgZm9yIHRoZSBvcmlnaW5hbCBjdHlwZSBVVEYtOCB3b3JrYXJvdW5kLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNi0wNi0yNgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCistIElzc3VlICMyNzI4NTogVXBkYXRlIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCB0aGUgZGVwcmVjYXRpb24gb2YgYGBweXZlbnZgYAorICBhbmQgbm9ybWFsaXplIG9uIHRoZSB0ZXJtICJ2aXJ0dWFsIGVudmlyb25tZW50Ii4gUGF0Y2ggYnkgU3RldmUgUGllcmN5LgogCiBUZXN0cwogLS0tLS0KIAotLSBJc3N1ZSAjMjY4Njc6IFVidW50dSdzIG9wZW5zc2wgT1BfTk9fU1NMdjMgaXMgZm9yY2VkIG9uIGJ5IGRlZmF1bHQ7IGZpeCB0ZXN0LgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgaW4gaWRsZWxpYi9ORVdTLnR4dCAtIG1pbmltYWwgcGFydCBmb3IgMy41LjIuCistIElzc3VlICMyNzAyNzogQWRkZWQgdGVzdC5zdXBwb3J0LmlzX2FuZHJvaWQgdGhhdCBpcyBUcnVlIHdoZW4gdGhpcyBpcyBhbgorICBBbmRyb2lkIGJ1aWxkLgogCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4yIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTIKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTMqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyNzA5NTogU2ltcGxpZmllZCBNQUtFX0ZVTkNUSU9OIGFuZCByZW1vdmVkIE1BS0VfQ0xPU1VSRSBvcGNvZGVzLgorICBQYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjcxOTA6IFJhaXNlIE5vdFN1cHBvcnRlZEVycm9yIGlmIHNxbGl0ZTMgaXMgb2xkZXIgdGhhbiAzLjMuMS4KKyAgUGF0Y2ggYnkgRGF2ZSBTYXd5ZXIuCisKKy0gSXNzdWUgIzI3Mjg2OiBGaXhlZCBjb21waWxpbmcgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlLiAgQ2FsbGluZworICBmdW5jdGlvbiB3aXRoIGdlbmVyYWxpemVkIHVucGFja2luZyAoUEVQIDQ0OCkgYW5kIGNvbmZsaWN0aW5nIGtleXdvcmQgbmFtZXMKKyAgY291bGQgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLgorCistIElzc3VlICMyNzE0MDogQWRkZWQgQlVJTERfQ09OU1RfS0VZX01BUCBvcGNvZGUuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcGVuKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKIC0gSXNzdWUgIzI3MDY2OiBGaXhlZCBTeXN0ZW1FcnJvciBpZiBhIGN1c3RvbSBvcGVuZXIgKGZvciBvcGVuKCkpIHJldHVybnMgYQogICBuZWdhdGl2ZSBudW1iZXIgd2l0aG91dCBzZXR0aW5nIGFuIGV4Y2VwdGlvbi4KIAorLSBJc3N1ZSAjMjY5ODM6IGZsb2F0KCkgbm93IGFsd2F5cyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgZXhhY3QgZmxvYXQuCisgIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgX19mbG9hdF9fIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YKKyAgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQuICBJbiBhIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24gdGhpcyBjYW4KKyAgYmUgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzI3MDk3OiBQeXRob24gaW50ZXJwcmV0ZXIgaXMgbm93IGFib3V0IDclIGZhc3RlciBkdWUgdG8gb3B0aW1pemVkCisgIGluc3RydWN0aW9uIGRlY29kaW5nLiAgQmFzZWQgb24gcGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzI2NjQ3OiBQeXRob24gaW50ZXJwcmV0ZXIgbm93IHVzZXMgMTYtYml0IHdvcmRjb2RlIGluc3RlYWQgb2YgYnl0ZWNvZGUuCisgIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyMzI3NTogQWxsb3cgYXNzaWduaW5nIHRvIGFuIGVtcHR5IHRhcmdldCBsaXN0IGluIHJvdW5kIGJyYWNrZXRzOgorICAoKSA9IGl0ZXJhYmxlLgorCistIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCisgIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cworICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCisgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisKKworTGlicmFyeQorLS0tLS0tLQorCistIENvbW1lbnQgb3V0IHNvY2tldCAoU09fUkVVU0VQT1JUKSBhbmQgcG9zaXggKE9fU0hMT0NLLCBPX0VYTE9DSykgY29uc3RhbnRzCisgIGV4cG9zZWQgb24gdGhlIEFQSSB3aGljaCBhcmUgbm90IGltcGxlbWVudGVkIG9uIEdOVS9IdXJkLiBUaGV5IHdvdWxkIG5vdAorICB3b3JrIGF0IHJ1bnRpbWUgYW55d2F5LgorCistIElzc3VlICMyNzAyNTogR2VuZXJhdGVkIG5hbWVzIGZvciBUa2ludGVyIHdpZGdldHMgYXJlIG5vdyBtb3JlIG1lYW5mdWwKKyAgYW5kIHJlY29nbml6aXJhYmxlLgorCistIElzc3VlICMyNTQ1NTogRml4ZWQgY3Jhc2hlcyBpbiByZXByIG9mIHJlY3Vyc2l2ZSBFbGVtZW50VHJlZS5FbGVtZW50IGFuZAorICBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzLgorCistIElzc3VlICMyNzI5NDogSW1wcm92ZWQgcmVwciBmb3IgVGtpbnRlciBldmVudCBvYmplY3RzLgorCistIElzc3VlICMyMDUwODogSW1wcm92ZSBleGNlcHRpb24gbWVzc2FnZSBvZiBJUHZ7NCw2fU5ldHdvcmsuX19nZXRpdGVtX18uCisgIFBhdGNoIGJ5IEdhcmV0aCBSZWVzLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCisKKy0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCisgIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20uCisKKy0gSXNzdWUgIzIxMzg2OiBJbXBsZW1lbnQgbWlzc2luZyBJUHY0QWRkcmVzcy5pc19nbG9iYWwgcHJvcGVydHkuICBJdCB3YXMKKyAgZG9jdW1lbnRlZCBzaW5jZSAwN2E1NjEwYmFlOWQuICBJbml0aWFsIHBhdGNoIGJ5IFJvZ2VyIEx1ZXRoaS4KKworLSBJc3N1ZSAjMjcwMjk6IFJlbW92ZWQgZGVwcmVjYXRlZCBzdXBwb3J0IG9mIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGZyb20KKyAgWmlwRmlsZS5vcGVuKCkuCisKKy0gSXNzdWUgIzI3MDMwOiBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgaW4KKyAgcmVndWxhciBleHByZXNzaW9ucyBub3cgYXJlIGVycm9ycy4gIFRoZSByZS5MT0NBTEUgZmxhZyBub3cgY2FuIGJlIHVzZWQKKyAgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorCistIElzc3VlICMyNzE4NjogQWRkIG9zLlBhdGhMaWtlIHN1cHBvcnQgdG8gRGlyRW50cnkgKHBhcnQgb2YgUEVQIDUxOSkuCisgIEluaXRpYWwgcGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzIwOTAwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgY29tbWFuZCBub3cgZGVjb2RlcyBIVFRQIHJlc3BvbnNlcworICBjb3JyZWN0bHkuICBJbml0aWFsIHBhdGNoIGJ5IGluZ3JpZC4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBvcy5QYXRoTGlrZSBzdXBwb3J0IHRvIHBhdGhsaWIsIHJlbW92aW5nIGl0cyBwcm92aXNpb25hbAorICBzdGF0dXMgKHBhcnQgb2YgUEVQIDUxOSkuIEluaXRpYWwgcGF0Y2ggYnkgRHVzdHkgUGhpbGxpcHMuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcy5mc2VuY29kZSgpIGFuZAorICBvcy5mc2RlY29kZSgpIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNzE4NjogSW50cm9kdWNlIG9zLlBhdGhMaWtlIGFuZCBvcy5mc3BhdGgoKSAocGFydCBvZiBQRVAgNTE5KS4KKworLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBwcm92aWRlcyBzZXZlcmFsIG5ldyBjbGFzc2VzIGFuZAorICBmZWF0dXJlczogQG92ZXJsb2FkIG91dHNpZGUgc3R1YnMsIFJldmVyc2libGUsIERlZmF1bHREaWN0LCBUZXh0LAorICBDb250ZXh0TWFuYWdlciwgVHlwZVtdLCBOZXdUeXBlKCksIFRZUEVfQ0hFQ0tJTkcsIGFuZCBudW1lcm91cyBidWcKKyAgZml4ZXMgKG5vdGUgdGhhdCBzb21lIG9mIHRoZSBuZXcgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4KKyAgbXlweSBvciBvdGhlciBzdGF0aWMgYW5hbHl6ZXJzKS4gIEFsc28gY2xhc3NlcyBmb3IgUEVQIDQ5MgorICAoQXdhaXRhYmxlLCBBc3luY0l0ZXJhYmxlLCBBc3luY0l0ZXJhdG9yKSBoYXZlIGJlZW4gYWRkZWQgKGluIGZhY3QKKyAgdGhleSBtYWRlIGl0IGludG8gMy41LjEgYnV0IHdlcmUgbmV2ZXIgbWVudGlvbmVkKS4KKworLSBJc3N1ZSAjMjU3Mzg6IFN0b3AgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5zZW5kX2Vycm9yKCkgZnJvbQorICBzZW5kaW5nIGEgbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgQ29udGVudAorICBoZWFkZXIgZmllbGRzIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgUGF0Y2ggYnkgU3VzdW11CisgIEtvc2hpYmEuCisKKy0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KKyAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2ODM5OiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBjYWxscworICBgYGdldHJhbmRvbSgpYGAgd2l0aCBgYEdSTkRfTk9OQkxPQ0tgYCB0byBmYWxsIGJhY2sgb24gcmVhZGluZworICBgYC9kZXYvdXJhbmRvbWBgIGlmIHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBQYXRjaAorICB3cml0dGVuIGJ5IENvbG0gQnVja2xleS4KKworLSBJc3N1ZSAjMjM4ODM6IEFkZGVkIG1pc3NpbmcgQVBJcyB0byBfX2FsbF9fIHRvIG1hdGNoIHRoZSBkb2N1bWVudGVkIEFQSXMKKyAgZm9yIHRoZSBmb2xsb3dpbmcgbW9kdWxlczogY2dpLCBtYWlsYm94LCBtaW1ldHlwZXMsIHBsaXN0bGliIGFuZCBzbXRwZC4KKyAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLgorCistIElzc3VlICMyNzE2NDogSW4gdGhlIHpsaWIgbW9kdWxlLCBhbGxvdyBkZWNvbXByZXNzaW5nIHJhdyBEZWZsYXRlIHN0cmVhbXMKKyAgd2l0aCBhIHByZWRlZmluZWQgemRpY3QuICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjQyOTE6IEZpeCB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIuV1NHSVJlcXVlc3RIYW5kbGVyIHRvIGNvbXBsZXRlbHkKKyAgd3JpdGUgZGF0YSB0byB0aGUgY2xpZW50LiAgUHJldmlvdXNseSBpdCBjb3VsZCBkbyBwYXJ0aWFsIHdyaXRlcyBhbmQKKyAgdHJ1bmNhdGUgZGF0YS4gIEFsc28sIHdzZ2lyZWYuaGFuZGxlci5TZXJ2ZXJIYW5kbGVyIGNhbiBub3cgaGFuZGxlIHN0ZG91dAorICBkb2luZyBwYXJ0aWFsIHdyaXRlcywgYnV0IHRoaXMgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjEyNzI6IFVzZSBfc3lzY29uZmlnZGF0YS5weSB0byBpbml0aWFsaXplIGRpc3R1dGlscy5zeXNjb25maWcuCisKKy0gSXNzdWUgIzE5NjExOiA6bW9kOmBpbnNwZWN0YCBub3cgcmVwb3J0cyB0aGUgaW1wbGljaXQgYGAuMGBgIHBhcmFtZXRlcnMKKyAgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IgY29tcHJlaGVuc2lvbiBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb24gc2NvcGVzCisgIGFzIGlmIHRoZXkgd2VyZSBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBjYWxsZWQgYGBpbXBsaWNpdDBgYC4KKyAgUGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI2ODA5OiBBZGQgYGBfX2FsbF9fYGAgdG8gOm1vZDpgc3RyaW5nYC4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI2MzczOiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlIG5vdyBjb3JyZWN0bHkgaWdub3JlcworICBCcm9rZW5QaXBlRXJyb3Igd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVzIGJlZm9yZSAuY29tbXVuaWNhdGUoKQorICBpcyBjYWxsZWQgaW4gbW9yZS9hbGwgY2lyY3Vtc3RhbmNlcy4KKworLSBzaWduYWwsIHNvY2tldCwgYW5kIHNzbCBtb2R1bGUgSW50RW51bSBjb25zdGFudCBuYW1lIGxvb2t1cHMgbm93IHJldHVybiBhCisgIGNvbnNpc3RlbnQgbmFtZSBmb3IgdmFsdWVzIGhhdmluZyBtdWx0aXBsZSBuYW1lcy4gIEV4OiBzaWduYWwuU2lnbmFscyg2KQorICBub3cgcmVmZXJzIHRvIGl0c2VsZiBhcyBzaWduYWwuU0lHQUxSTSByYXRoZXIgdGhhbiBmbGlwcGluZyBiZXR3ZWVuIHRoYXQKKyAgYW5kIHNpZ25hbC5TSUdJT1QgYmFzZWQgb24gdGhlIGludGVycHJldGVyJ3MgaGFzaCByYW5kb21pemF0aW9uIHNlZWQuCisKKy0gSXNzdWUgIzI3MTY3OiBDbGFyaWZ5IHRoZSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBlcnJvciBtZXNzYWdlIHRleHQKKyAgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVkIGR1ZSB0byBhIHNpZ25hbC4KKworLSBJc3N1ZSAjMjU5MzE6IERvbid0IGRlZmluZSBzb2NrZXRzZXJ2ZXIuRm9ya2luZyogbmFtZXMgb24gcGxhdGZvcm1zIHN1Y2gKKyAgYXMgV2luZG93cyB0aGF0IGRvIG5vdCBzdXBwb3J0IG9zLmZvcmsoKS4KKworLSBJc3N1ZSAjMjE3NzY6IGRpc3R1dGlscy51cGxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIEhUVFBFcnJvci4KKyAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzI2NTI2OiBSZXBsYWNlIGN1c3RvbSBwYXJzZSB0cmVlIHZhbGlkYXRpb24gaW4gdGhlIHBhcnNlcgorICBtb2R1bGUgd2l0aCBhIHNpbXBsZSBERkEgdmFsaWRhdG9yLgorCistIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCisgIFBlcm1pc3Npb25FcnJvcgorCistIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncworICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KKworLSBJc3N1ZSAjMjMwMjY6IHdpbnJlZy5RdWVyeVZhbHVlRXgoKSBub3cgcmV0dXJuIGFuIGludGVnZXIgZm9yIFJFR19RV09SRCB0eXBlLgorCistIElzc3VlICMyNjc0MTogc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIFJlc291cmNlV2FybmluZyB3YXJuaW5nCisgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKKy0gSXNzdWUgIzI3MDU2OiBPcHRpbWl6ZSBwaWNrbGUubG9hZCgpIGFuZCBwaWNrbGUubG9hZHMoKSwgdXAgdG8gMTAlIGZhc3RlcgorICB0byBkZXNlcmlhbGl6ZSBhIGxvdCBvZiBzbWFsbCBvYmplY3RzLgorCistIElzc3VlICMyMTI3MTogTmV3IGtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGluIHJlc2V0X21vY2sgY2FsbC4KKworSURMRQorLS0tLQorCistIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgorICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKKyAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ3NTA6IFN3aXRjaCBhbGwgc2Nyb2xsYmFycyBpbiBJRExFIHRvIHR0ayB2ZXJzaW9ucy4KKyAgV2hlcmUgbmVlZGVkLCBtaW5pbWFsIHRlc3RzIGFyZSBhZGRlZCB0byBjb3ZlciBjaGFuZ2VzLgorCistIElzc3VlICMyNDc1OTogSURMRSByZXF1aXJlcyB0ayA4LjUgYW5kIGF2YWlsYWJpbGl0eSB0dGsgd2lkZ2V0cy4KKyAgRGVsZXRlIG5vdyB1bm5lZWRlZCB0ayB2ZXJzaW9uIHRlc3RzIGFuZCBjb2RlIGZvciBvbGRlciB2ZXJzaW9ucy4KKyAgQWRkIHRlc3QgZm9yIElETEUgc3ludGF4IGNvbG9yaXpvZXIuCisKKy0gSXNzdWUgIzI3MjM5OiBpZGxlbGliLm1hY29zeC5pc1h5elRrIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFzIG5lZWRlZC4KKworLSBJc3N1ZSAjMjcyNjI6IG1vdmUgQXF1YSB1bmJpbmRpbmcgY29kZSwgd2hpY2ggZW5hYmxlIGNvbnRleHQgbWVudXMsIHRvIG1heG9zeC4KKworLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5CisgIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgorICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KKyAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgorICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dAorCistIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCisgIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCisKKy0gSXNzdWUgIzI0MjI1OiBVcGRhdGUgaWRsZWxpYi9SRUFETUUudHh0IHdpdGggbmV3IGZpbGUgbmFtZXMKKyAgYW5kIGV2ZW50IGhhbmRsZXJzLgorCistIElzc3VlICMyNzE1NjogUmVtb3ZlIG9ic29sZXRlIGNvZGUgbm90IHVzZWQgYnkgSURMRS4gIFJlcGxhY2VtZW50czoKKyAgMS4gaGVscC50eHQsIHJlcGxhY2VkIGJ5IGhlbHAuaHRtbCwgaXMgb3V0LW9mLWRhdGUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KKyAgSXRzIGRlZGljYXRlZCB2aWV3ZXIgaGFzIGJlIHJlcGxhY2VkIGJ5IHRoZSBodG1sIHZpZXdlciBpbiBoZWxwLnB5LgorICAyLiBgYGltcG9ydCBpZGxldmVyOyBJID0gaWRsZXZlci5JRExFX1ZFUlNJT05gYCBpcyB0aGUgc2FtZSBhcworICBgYGltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldYGAKKyAgMy4gQWZ0ZXIgYGBvYiA9IHN0YWNrdmlld2VyLlZhcmlhYmxlc1RyZWVJdGVtKCphcmdzKWBgLAorICBgYG9iLmtleXMoKSA9PSBsaXN0KG9iLm9iamVjdC5rZXlzKWBgLgorICA0LiBJbiBtYWNvc2MsIHJ1bm5pbmdBc09TWEFQUCA9PSBpc0FxdWFUazsgaWRDYXJib25BcXVhVGsgPT0gaXNDYXJib25UaworCistIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgorICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjQyMjU6IFJlbmFtZSBtYW55IGBpZGxlbGliLyoucHlgIGFuZCBgaWRsZV90ZXN0L3Rlc3RfKi5weWAgZmlsZXMuCisgIEVkaXQgZmlsZXMgdG8gcmVwbGFjZSBvbGQgbmFtZXMgd2l0aCBuZXcgbmFtZXMgd2hlbiB0aGUgb2xkIG5hbWUKKyAgcmVmZXJyZWQgdG8gdGhlIG1vZHVsZSByYXRoZXIgdGhhbiB0aGUgY2xhc3MgaXQgY29udGFpbmVkLgorICBTZWUgdGhlIGlzc3VlIGFuZCBJRExFIHNlY3Rpb24gaW4gV2hhdCdzIE5ldyBpbiAzLjYgZm9yIG1vcmUuCisKKy0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgorICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgorCistIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgorCistIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLiAgUGF0Y2ggbW9zdGx5IGJ5CisgIFNhaW1hZGhhdiBIZWJsaWthciAuCisKKy0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgorCistIElzc3VlICMyMzk3NzogQWRkIG1vcmUgYXNzZXJ0cyB0byB0ZXN0X2RlbGVnYXRvci4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjQ4NDogQ2hhbmdlIHRoZSBkZWZhdWx0IFBZVEhPTkRPQ1MgVVJMIHRvICJodHRwczoiLCBhbmQgZml4IHRoZQorICByZXN1bHRpbmcgbGlua3MgdG8gdXNlIGxvd2VyY2FzZS4gIFBhdGNoIGJ5IFNlYW4gUm9kbWFuLCB0ZXN0IGJ5IEthdXNoaWsKKyAgTmFkaWt1ZGl0aS4KKworLSBJc3N1ZSAjMjQxMzY6IERvY3VtZW50IHRoZSBuZXcgUEVQIDQ0OCB1bnBhY2tpbmcgc3ludGF4IG9mIDMuNS4KKworLSBJc3N1ZSAjMjI1NTg6IEFkZCByZW1haW5pbmcgZG9jIGxpbmtzIHRvIHNvdXJjZSBjb2RlIGZvciBQeXRob24tY29kZWQgbW9kdWxlcy4KKyAgUGF0Y2ggYnkgWW9uaSBMYXZpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjUyODU6IHJlZ3J0ZXN0IG5vdyB1c2VzIHN1YnByb2Nlc3NlcyB3aGVuIHRoZSAtajEgY29tbWFuZCBsaW5lIG9wdGlvbgorICBpcyB1c2VkOiBlYWNoIHRlc3QgZmlsZSBydW5zIGluIGEgZnJlc2ggY2hpbGQgcHJvY2Vzcy4gQmVmb3JlLCB0aGUgLWoxIG9wdGlvbgorICB3YXMgaWdub3JlZC4KKworLSBJc3N1ZSAjMjUyODU6IFRvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IHNjcmlwdCBub3cgdXNlcyAtajEgYnkgZGVmYXVsdCB0byBydW4KKyAgZWFjaCB0ZXN0IGZpbGUgaW4gZnJlc2ggY2hpbGQgcHJvY2Vzcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNzA2NDogVGhlIHB5LmV4ZSBsYXVuY2hlciBub3cgZGVmYXVsdHMgdG8gUHl0aG9uIDMuCisgIFRoZSBXaW5kb3dzIGxhdW5jaGVyIGBgcHkuZXhlYGAgbm8gbG9uZ2VyIHByZWZlcnMgYW4gaW5zdGFsbGVkCisgIFB5dGhvbiAyIHZlcnNpb24gb3ZlciBQeXRob24gMyBieSBkZWZhdWx0IHdoZW4gdXNlZCBpbnRlcmFjdGl2ZWx5LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjcyMjk6IEZpeCB0aGUgY3Jvc3MtY29tcGlsaW5nIHBnZW4gcnVsZSBmb3IgaW4tdHJlZSBidWlsZHMuICBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAorICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJoLgorCitNaXNjCistLS0tCisKKy0gSXNzdWUgIzE3NTAwLCBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9weXRob25kb3RvcmcvaXNzdWVzLzk0NTogUmVtb3ZlCisgIHVudXNlZCBhbmQgb3V0ZGF0ZWQgaWNvbnMuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNzE4NjogQWRkIHRoZSBQeU9TX0ZTUGF0aCgpIGZ1bmN0aW9uIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNjI4MjogUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkgbm93IHN1cHBvcnRzIHBvc2l0aW9uYWwtb25seQorICBwYXJhbWV0ZXJzLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjYyODI6IEFyZ3VtZW50IENsaW5pYyBub3cgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IGFuZCBrZXl3b3JkCisgIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNi0wNS0xNgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKwogLSBJc3N1ZSAjMjAwNDE6IEZpeGVkIFR5cGVFcnJvciB3aGVuIGZyYW1lLmZfdHJhY2UgaXMgc2V0IHRvIE5vbmUuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCkBAIC01NzgsMTEgKzE2MDcsMTcgQEAKIAogLSBJc3N1ZSAjMjY5OTE6IEZpeCBwb3NzaWJsZSByZWZsZWFrIHdoZW4gY3JlYXRpbmcgYSBmdW5jdGlvbiB3aXRoIGFubm90YXRpb25zLgogCi0tIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIFBhdGNoIGJ5Ci0gIEpvZSBKZXZuaWsuCistIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIEJhc2VkIG9uCisgIHBhdGNoIGJ5IEpvZSBKZXZuaWsuCiAKIC0gSXNzdWUgIzIzNjQwOiBpbnQuZnJvbV9ieXRlcygpIG5vIGxvbmdlciBieXBhc3NlcyBjb25zdHJ1Y3RvcnMgZm9yIHN1YmNsYXNzZXMuCiAKKy0gSXNzdWUgIzI3MDA1OiBPcHRpbWl6ZWQgdGhlIGZsb2F0LmZyb21oZXgoKSBjbGFzcyBtZXRob2QgZm9yIGV4YWN0IGZsb2F0LgorICBJdCBpcyBub3cgMiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzE4NTMxOiBTaW5nbGUgdmFyLWtleXdvcmQgYXJndW1lbnQgb2YgZGljdCBzdWJ0eXBlIHdhcyBwYXNzZWQKKyAgdW5zY2F0aGVkIHRvIHRoZSBDLWRlZmluZWQgZnVuY3Rpb24uICBOb3cgaXQgaXMgY29udmVydGVkIHRvIGV4YWN0IGRpY3QuCisKIC0gSXNzdWUgIzI2ODExOiBnYy5nZXRfb2JqZWN0cygpIG5vIGxvbmdlciBjb250YWlucyBhIGJyb2tlbiB0dXBsZSB3aXRoIE5VTEwKICAgcG9pbnRlci4KIApAQCAtNTkyLDExICsxNjI3LDI2IEBACiAgIGludGVycG9sYXRpb24gaW4gLnB5cGlyYyBmaWxlcywgbWF0Y2hpbmcgYmVoYXZpb3IgaW4gUHl0aG9uCiAgIDIuNyBhbmQgU2V0dXB0b29scyAxOS4wLgogCistIElzc3VlICMyNjI0OTogTWVtb3J5IGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBkb21haW4KKyAgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gKSBub3cgdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBhbGxvY2F0b3IgPHB5bWFsbG9jPmAKKyAgcmF0aGVyIHRoYW4gc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuIEFwcGxpY2F0aW9ucyBjYWxsaW5nCisgIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2Agd2l0aG91dCBob2xkaW5nIHRoZSBHSUwgY2FuIG5vdyBjcmFzaDogdXNlCisgIGBgUFlUSE9OTUFMTE9DPWRlYnVnYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdmFsaWRhdGUgdGhlIHVzYWdlIG9mIG1lbW9yeQorICBhbGxvY2F0b3JzIGluIHlvdXIgYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzI2ODAyOiBPcHRpbWl6ZSBmdW5jdGlvbiBjYWxscyBvbmx5IHVzaW5nIHVucGFja2luZyBsaWtlCisgIGBgZnVuYygqdHVwbGUpYGAgKG5vIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnQsIG5vIGtleXdvcmQpOiBhdm9pZCBjb3B5aW5nCisgIHRoZSB0dXBsZS4gUGF0Y2ggd3JpdHRlbiBieSBKb2UgSmV2bmlrLgorCiAtIElzc3VlICMyNjY1OTogTWFrZSB0aGUgYnVpbHRpbiBzbGljZSB0eXBlIHN1cHBvcnQgY3ljbGUgY29sbGVjdGlvbi4KIAogLSBJc3N1ZSAjMjY3MTg6IHN1cGVyLl9faW5pdF9fIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgaWYgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogICBOT1RFOiBBIGRpcmVjdCBjYWxsIG9mIHN1cGVyLl9faW5pdF9fIGlzIG5vdCBlbmRvcnNlZCEKIAorLSBJc3N1ZSAjMjcxMzg6IEZpeCB0aGUgZG9jIGNvbW1lbnQgZm9yIEZpbGVGaW5kZXIuZmluZF9zcGVjKCkuCisKKy0gSXNzdWUgIzI3MTQ3OiBNZW50aW9uIFBFUCA0MjAgaW4gdGhlIGltcG9ydGxpYiBkb2NzLgorCiAtIElzc3VlICMyNTMzOTogUFlUSE9OSU9FTkNPRElORyBub3cgaGFzIHByaW9yaXR5IG92ZXIgbG9jYWxlIGluIHNldHRpbmcgdGhlCiAgIGVycm9yIGhhbmRsZXIgZm9yIHN0ZGluIGFuZCBzdGRvdXQuCiAKQEAgLTYwNSw5ICsxNjU1LDQxIEBACiAgIGJ5dGVhcnJheSwgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBPcmRlcmVkRGljdCwgY29ycmVzcG9uZGluZwogICB2aWV3cyBhbmQgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgogCistIElzc3VlICMyNjU3NDogT3B0aW1pemUgYGBieXRlcy5yZXBsYWNlKGInJywgYicuJylgYCBhbmQKKyAgYGBieXRlYXJyYXkucmVwbGFjZShiJycsIGInLicpYGAuIFBhdGNoIHdyaXR0ZW4gYnkgSm9zaCBTbmlkZXIuCisKIC0gSXNzdWUgIzI2NTgxOiBJZiBjb2RpbmcgY29va2llIGlzIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcyBvbiBhIGxpbmUgaW4KICAgUHl0aG9uIHNvdXJjZSBjb2RlIGZpbGUsIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyB0YWtlbiB0byBhY2NvdW50LgogCistIElzc3VlICMxOTcxMTogQWRkIHRlc3RzIGZvciByZWxvYWRpbmcgbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIElzc3VlICMyMTA5OTogU3dpdGNoIGFwcGxpY2FibGUgaW1wb3J0bGliIHRlc3RzIHRvIHVzZSBQRVAgNDUxIEFQSS4KKworLSBJc3N1ZSAjMjY1NjM6IERlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgcmFpc2UgYSBmYXRhbAorICBlcnJvciBpZiBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZmFtaWx5IGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTY0OiBPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgdXNlCisgIHRoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcworICBhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzI2NTU4OiBUaGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IKKyAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCBub3cgZGV0ZWN0IHdoZW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTE2OiBBZGQgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlCisgIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworLSBJc3N1ZSAjMjY1MTY6IFRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGNhbiBub3cgYWxzbyBiZQorICB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisKKy0gSXNzdWUgIzI2NTE2OiBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBub3cKKyAgYWxzbyBiZSB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuIEl0IG5vdyBoYXMgbm8gZWZmZWN0IGlmCisgIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuCisKKy0gSXNzdWUgIzI2NTE2OiBJbiBkZWJ1ZyBtb2RlLCBkZWJ1ZyBob29rcyBhcmUgbm93IGFsc28gaW5zdGFsbGVkIG9uIFB5dGhvbgorICBtZW1vcnkgYWxsb2NhdG9ycyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgcHltYWxsb2MuCisKIC0gSXNzdWUgIzI2NDY0OiBGaXggc3RyLnRyYW5zbGF0ZSgpIHdoZW4gc3RyaW5nIGlzIEFTQ0lJIGFuZCBmaXJzdCByZXBsYWNlbWVudHMKICAgcmVtb3ZlcyBjaGFyYWN0ZXIsIGJ1dCBuZXh0IHJlcGxhY2VtZW50IHVzZXMgYSBub24tQVNDSUkgY2hhcmFjdGVyIG9yIGEKICAgc3RyaW5nIGxvbmdlciB0aGFuIDEgY2hhcmFjdGVyLiBSZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNS4wLgpAQCAtNjIwLDExICsxNzAyLDM3IEBACiAtIElzc3VlICMyNjMwMjogQ29ycmVjdCBiZWhhdmlvciB0byByZWplY3QgY29tbWEgYXMgYSBsZWdhbCBjaGFyYWN0ZXIgZm9yCiAgIGNvb2tpZSBuYW1lcy4KIAorLSBJc3N1ZSAjMjYxMzY6IFVwZ3JhZGUgdGhlIHdhcm5pbmcgd2hlbiBhIGdlbmVyYXRvciByYWlzZXMgU3RvcEl0ZXJhdGlvbgorICBmcm9tIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgQW5pc2gKKyAgU2hhaC4KKworLSBJc3N1ZSAjMjYyMDQ6IFRoZSBjb21waWxlciBub3cgaWdub3JlcyBhbGwgY29uc3RhbnQgc3RhdGVtZW50czogYnl0ZXMsIHN0ciwKKyAgaW50LCBmbG9hdCwgY29tcGxleCwgbmFtZSBjb25zdGFudHMgKE5vbmUsIEZhbHNlLCBUcnVlKSwgRWxsaXBzaXMKKyAgYW5kIGFzdC5Db25zdGFudDsgbm90IG9ubHkgc3RyIGFuZCBpbnQuIEZvciBleGFtcGxlLCBgYDEuMGBgIGlzIG5vdyBpZ25vcmVkCisgIGluIGBgZGVmIGYoKTogMS4wYGAuCisKIC0gSXNzdWUgIzQ4MDY6IEF2b2lkIG1hc2tpbmcgdGhlIG9yaWdpbmFsIFR5cGVFcnJvciBleGNlcHRpb24gd2hlbiB1c2luZyBzdGFyCiAgICgqKSB1bnBhY2tpbmcgaW4gZnVuY3Rpb24gY2FsbHMuICBCYXNlZCBvbiBwYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1IGFuZAogICBEYW5pZWwgVXJiYW4uCiAKLS0gSXNzdWUgIzI3MTM4OiBGaXggdGhlIGRvYyBjb21tZW50IGZvciBGaWxlRmluZGVyLmZpbmRfc3BlYygpLgorLSBJc3N1ZSAjMjYxNDY6IEFkZCBhIG5ldyBraW5kIG9mIEFTVCBub2RlOiBgYGFzdC5Db25zdGFudGBgLiBJdCBjYW4gYmUgdXNlZAorICBieSBleHRlcm5hbCBBU1Qgb3B0aW1pemVycywgYnV0IHRoZSBjb21waWxlciBkb2VzIG5vdCBlbWl0IGRpcmVjdGx5IHN1Y2gKKyAgbm9kZS4KKworLSBJc3N1ZSAjMjM2MDE6ICBTcGVkLXVwIGFsbG9jYXRpb24gb2YgZGljdCBrZXkgb2JqZWN0cyBieSB1c2luZyBQeXRob24ncworICBzbWFsbCBvYmplY3QgYWxsb2NhdG9yLiAgKENvbnRyaWJ1dGVkIGJ5IEp1bGlhbiBUYXlsb3IuKQorCistIElzc3VlICMxODAxODogSW1wb3J0IHJhaXNlcyBJbXBvcnRFcnJvciBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yIGlmIGEgcmVsYXRpdmUKKyAgaW1wb3J0IGlzIGF0dGVtcHRlZCB3aXRob3V0IGEga25vd24gcGFyZW50IHBhY2thZ2UuCisKKy0gSXNzdWUgIzI1ODQzOiBXaGVuIGNvbXBpbGluZyBjb2RlLCBkb24ndCBtZXJnZSBjb25zdGFudHMgaWYgdGhleSBhcmUgZXF1YWwKKyAgYnV0IGhhdmUgYSBkaWZmZXJlbnQgdHlwZXMuIEZvciBleGFtcGxlLCBgYGYxLCBmMiA9IGxhbWJkYTogMSwgbGFtYmRhOiAxLjBgYAorICBpcyBub3cgY29ycmVjdGx5IGNvbXBpbGVkIHRvIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25zOiBgYGYxKClgYCByZXR1cm5zIGBgMWBgCisgIChgYGludGBgKSBhbmQgYGBmMigpYGAgcmV0dXJucyBgYDEuMGBgIChgYGZsb2F0YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCisgIGFyZSBlcXVhbC4KKworLSBJc3N1ZSAjMjYxMDc6IFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cworICBjaGFuZ2VzIHRvIHN1cHBvcnQgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuCiAKIC0gSXNzdWUgIzI2MTU0OiBBZGQgYSBuZXcgcHJpdmF0ZSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKSBmdW5jdGlvbiB0byBnZXQKICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSwgYnV0IGRvbid0IGlzc3VlIGEgZmF0YWwgZXJyb3IgaWYgaXQgaXMgTlVMTC4KQEAgLTYzMywxNSArMTc0MSw4IEBACiAgIFB5dGhvbiAzLjUuMSB0byBoaWRlIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBvZiBhdG9taWMgQyB0eXBlcywgdG8gYXZvaWQKICAgY29tcGlsZXIgaXNzdWVzLgogCi0tIElzc3VlICMyNjE5NDogIERlcXVlLmluc2VydCgpIGdhdmUgb2RkIHJlc3VsdHMgZm9yIGJvdW5kZWQgZGVxdWVzIHRoYXQgaGFkCi0gIHJlYWNoZWQgdGhlaXIgbWF4aW11bSBzaXplLiAgTm93IGFuIEluZGV4RXJyb3Igd2lsbCBiZSByYWlzZWQgd2hlbiBhdHRlbXB0aW5nCi0gIHRvIGluc2VydCBpbnRvIGEgZnVsbCBkZXF1ZS4KLQotLSBJc3N1ZSAjMjU4NDM6IFdoZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbAotICBidXQgaGF2ZSBhIGRpZmZlcmVudCB0eXBlcy4gRm9yIGV4YW1wbGUsIGBgZjEsIGYyID0gbGFtYmRhOiAxLCBsYW1iZGE6IDEuMGBgCi0gIGlzIG5vdyBjb3JyZWN0bHkgY29tcGlsZWQgdG8gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnM6IGBgZjEoKWBgIHJldHVybnMgYGAxYGAKLSAgKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgaW50YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCi0gIGFyZSBlcXVhbC4KKy0gSXNzdWUgIzI1NzkxOiBJZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQgb3IgaWYgbmVpdGhlciBfX3BhY2thZ2VfXyBvcgorICBfX3NwZWNfXyBhcmUgZGVmaW5lZCB0aGVuIEltcG9ydFdhcm5pbmcgaXMgcmFpc2VkLgogCiAtIElzc3VlICMyMjk5NTogW1VQREFURV0gQ29tbWVudCBvdXQgdGhlIG9uZSBvZiB0aGUgcGlja2xlYWJpbGl0eSB0ZXN0cyBpbgogICBfUHlPYmplY3RfR2V0U3RhdGUoKSBkdWUgdG8gcmVncmVzc2lvbnMgb2JzZXJ2ZWQgaW4gQ3l0aG9uLWJhc2VkIHByb2plY3RzLgpAQCAtNjY4LDcgKzE3NjksMTAgQEAKIC0gSXNzdWUgIzI1NzA5OiBGaXhlZCBwcm9ibGVtIHdpdGggaW4tcGxhY2Ugc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kIHV0Zi04CiAgIGNhY2hlLgogCi0tIElzc3VlICMyNzE0NzogTWVudGlvbiBQRVAgNDIwIGluIHRoZSBpbXBvcnRsaWIgZG9jcy4KKy0gSXNzdWUgIzUzMTk6IE5ldyBQeV9GaW5hbGl6ZUV4KCkgQVBJIGFsbG93aW5nIFB5dGhvbiB0byBzZXQgYW4gZXhpdCBzdGF0dXMKKyAgb2YgMTIwIG9uIGZhaWx1cmUgdG8gZmx1c2ggYnVmZmVyZWQgc3RyZWFtcy4KKworLSBJc3N1ZSAjMjU0ODU6IHRlbG5ldGxpYi5UZWxuZXQgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyLgogCiAtIElzc3VlICMyNDA5NzogRml4ZWQgY3Jhc2ggaW4gb2JqZWN0Ll9fcmVkdWNlX18oKSBpZiBzbG90IG5hbWUgaXMgZnJlZWQgaW5zaWRlCiAgIF9fZ2V0YXR0cl9fLgpAQCAtNjc3LDYgKzE3ODEsODggQEAKICAgX19ieXRlc19fLCBfX3RydW5jX18sIGFuZCBfX2Zsb2F0X18gcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBzdWJjbGFzc2VzIG9mCiAgIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCB0byBzdWJjbGFzc2VzIG9mIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCBjb3JyZXNwb25kaW5nbHkuCiAKKy0gSXNzdWUgIzI1NjMwOiBGaXggYSBwb3NzaWJsZSBzZWdmYXVsdCBkdXJpbmcgYXJndW1lbnQgcGFyc2luZyBpbiBmdW5jdGlvbnMKKyAgdGhhdCBhY2NlcHQgZmlsZXN5c3RlbSBwYXRocy4KKworLSBJc3N1ZSAjMjM1NjQ6IEZpeGVkIGEgcGFydGlhbGx5IGJyb2tlbiBzYW5pdHkgY2hlY2sgaW4gdGhlIF9wb3NpeHN1YnByb2Nlc3MKKyAgaW50ZXJuYWxzIHJlZ2FyZGluZyBob3cgZmRzX3RvX3Bhc3Mgd2VyZSBwYXNzZWQgdG8gdGhlIGNoaWxkLiAgVGhlIGJ1ZyBoYWQKKyAgbm8gYWN0dWFsIGltcGFjdCBhcyBzdWJwcm9jZXNzLnB5IGFscmVhZHkgYXZvaWRlZCBpdC4KKworLSBJc3N1ZSAjMjUzODg6IEZpeGVkIHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUKKyAgd2l0aCBhIG51bGwgYnl0ZS4KKworLSBJc3N1ZSAjMjU0NjI6IFRoZSBoYXNoIG9mIHRoZSBrZXkgbm93IGlzIGNhbGN1bGF0ZWQgb25seSBvbmNlIGluIG1vc3QKKyAgb3BlcmF0aW9ucyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyMjk5NTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBfX3JlZHVjZV9fIGFuZCBfX3JlZHVjZV9leF9fIG5vdworICByZWplY3RzIGJ1aWx0aW4gdHlwZXMgd2l0aCBub3QgZGVmaW5lZCBfX25ld19fLgorCistIElzc3VlICMyNDgwMjogQXZvaWQgYnVmZmVyIG92ZXJyZWFkcyB3aGVuIGludCgpLCBmbG9hdCgpLCBjb21waWxlKCksIGV4ZWMoKQorICBhbmQgZXZhbCgpIGFyZSBwYXNzZWQgYnl0ZXMtbGlrZSBvYmplY3RzLiAgVGhlc2Ugb2JqZWN0cyBhcmUgbm90CisgIG5lY2Vzc2FyaWx5IHRlcm1pbmF0ZWQgYnkgYSBudWxsIGJ5dGUsIGJ1dCB0aGUgZnVuY3Rpb25zIGFzc3VtZWQgdGhleSB3ZXJlLgorCistIElzc3VlICMyNTU1NTogRml4IHBhcnNlciBhbmQgQVNUOiBmaWxsIGxpbmVubyBhbmQgY29sX29mZnNldCBvZiAiYXJnIiBub2RlCisgIHdoZW4gY29tcGlsaW5nIEFTVCBmcm9tIFB5dGhvbiBvYmplY3RzLgorCistIElzc3VlICMyNDcyNjogRml4ZWQgYSBjcmFzaCBhbmQgbGVha2luZyBOVUxMIGluIHJlcHIoKSBvZiBPcmRlcmVkRGljdCB0aGF0CisgIHdhcyBtdXRhdGVkIGJ5IGRpcmVjdCBjYWxscyBvZiBkaWN0IG1ldGhvZHMuCisKKy0gSXNzdWUgIzI1NDQ5OiBJdGVyYXRpbmcgT3JkZXJlZERpY3Qgd2l0aCBrZXlzIHdpdGggdW5zdGFibGUgaGFzaCBub3cgcmFpc2VzCisgIEtleUVycm9yIGluIEMgaW1wbGVtZW50YXRpb25zIGFzIHdlbGwgYXMgaW4gUHl0aG9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMyNTM5NTogRml4ZWQgY3Jhc2ggd2hlbiBoaWdobHkgbmVzdGVkIE9yZGVyZWREaWN0IHN0cnVjdHVyZXMgd2VyZQorICBnYXJiYWdlIGNvbGxlY3RlZC4KKworLSBJc3N1ZSAjMjU0MDE6IE9wdGltaXplIGJ5dGVzLmZyb21oZXgoKSBhbmQgYnl0ZWFycmF5LmZyb21oZXgoKTogdGhleSBhcmUgbm93CisgIGJldHdlZW4gMnggYW5kIDMuNXggZmFzdGVyLgorCistIElzc3VlICMyNTM5OTogT3B0aW1pemUgYnl0ZWFycmF5ICUgYXJncyB1c2luZyB0aGUgbmV3IHByaXZhdGUgX1B5Qnl0ZXNXcml0ZXIKKyAgQVBJLiBGb3JtYXR0aW5nIGlzIG5vdyBiZXR3ZWVuIDIuNSBhbmQgNSB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1Mjc0OiBzeXMuc2V0cmVjdXJzaW9ubGltaXQoKSBub3cgcmFpc2VzIGEgUmVjdXJzaW9uRXJyb3IgaWYgdGhlIG5ldworICByZWN1cnNpb24gbGltaXQgaXMgdG9vIGxvdyBkZXBlbmRpbmcgYXQgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLiBNb2RpZnkKKyAgYWxzbyB0aGUgImxvd2VyLXdhdGVyIG1hcmsiIGZvcm11bGEgdG8gbWFrZSBpdCBtb25vdG9uaWMuIFRoaXMgbWFyayBpcyB1c2VkCisgIHRvIGRlY2lkZSB3aGVuIHRoZSBvdmVyZmxvd2VkIGZsYWcgb2YgdGhlIHRocmVhZCBzdGF0ZSBpcyByZXNldC4KKworLSBJc3N1ZSAjMjQ0MDI6IEZpeCBpbnB1dCgpIHRvIHByb21wdCB0byB0aGUgcmVkaXJlY3RlZCBzdGRvdXQgd2hlbgorICBzeXMuc3Rkb3V0LmZpbGVubygpIGZhaWxzLgorCistIElzc3VlICMyNTM0OTogT3B0aW1pemUgYnl0ZXMgJSBhcmdzIHVzaW5nIHRoZSBuZXcgcHJpdmF0ZSBfUHlCeXRlc1dyaXRlciBBUEkuCisgIEZvcm1hdHRpbmcgaXMgbm93IHVwIHRvIDIgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNDgwNjogUHJldmVudCBidWlsdGluIHR5cGVzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHN1YmNsYXNzZWQgZnJvbQorICBiZWluZyBzdWJjbGFzc2VkIHRocm91Z2ggbXVsdGlwbGUgaW5oZXJpdGFuY2UuCisKKy0gSXNzdWUgIzI1MzAxOiBUaGUgVVRGLTggZGVjb2RlciBpcyBub3cgdXAgdG8gMTUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IKKyAgaGFuZGxlcnM6IGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgIGFuZCBgYHN1cnJvZ2F0ZWVzY2FwZWBgLgorCistIElzc3VlICMyNDg0ODogRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBVVEYtNyBkZWNvZGluZyBvZiBtaXNmb3JtZWQgZGF0YS4KKworLSBJc3N1ZSAjMjUyNjc6IFRoZSBVVEYtOCBlbmNvZGVyIGlzIG5vdyB1cCB0byA3NSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvcgorICBoYW5kbGVyczogYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAsIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgc3Vycm9nYXRlcGFzc2BgLgorICBQYXRjaCBjby13cml0dGVuIHdpdGggU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjUyODA6IEltcG9ydCB0cmFjZSBtZXNzYWdlcyBlbWl0dGVkIGluIHZlcmJvc2UgKC12KSBtb2RlIGFyZSBubworICBsb25nZXIgZm9ybWF0dGVkIHR3aWNlLgorCistIElzc3VlICMyNTIyNzogT3B0aW1pemUgQVNDSUkgYW5kIGxhdGluMSBlbmNvZGVycyB3aXRoIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgCisgIGVycm9yIGhhbmRsZXI6IHRoZSBlbmNvZGVycyBhcmUgbm93IHVwIHRvIDMgdGltZXMgYXMgZmFzdC4gSW5pdGlhbCBwYXRjaAorICB3cml0dGVuIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI1MDAzOiBPbiBTb2xhcmlzIDExLjMgb3IgbmV3ZXIsIG9zLnVyYW5kb20oKSBub3cgdXNlcyB0aGUKKyAgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uLiBUaGUgZ2V0ZW50cm9weSgpCisgIGZ1bmN0aW9uIGlzIGJsb2NraW5nIHRvIGdlbmVyYXRlIHZlcnkgZ29vZCBxdWFsaXR5IGVudHJvcHksIG9zLnVyYW5kb20oKQorICBkb2Vzbid0IG5lZWQgc3VjaCBoaWdoLXF1YWxpdHkgZW50cm9weS4KKworLSBJc3N1ZSAjOTIzMjogTW9kaWZ5IFB5dGhvbidzIGdyYW1tYXIgdG8gYWxsb3cgdHJhaWxpbmcgY29tbWFzIGluIHRoZQorICBhcmd1bWVudCBsaXN0IG9mIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uICBGb3IgZXhhbXBsZSwgImRlZiBmKFwqLCBhID0KKyAgMywpOiBwYXNzIiBpcyBub3cgbGVnYWwuIFBhdGNoIGZyb20gTWFyayBEaWNraW5zb24uCisKKy0gSXNzdWUgIzI0OTY1OiBJbXBsZW1lbnQgUEVQIDQ5OCAiTGl0ZXJhbCBTdHJpbmcgSW50ZXJwb2xhdGlvbiIuIFRoaXMKKyAgYWxsb3dzIHlvdSB0byBlbWJlZCBleHByZXNzaW9ucyBpbnNpZGUgZi1zdHJpbmdzLCB3aGljaCBhcmUKKyAgY29udmVydGVkIHRvIG5vcm1hbCBzdHJpbmdzIGF0IHJ1biB0aW1lLiBHaXZlbiB4PTMsIHRoZW4KKyAgZid2YWx1ZT17eH0nID09ICd2YWx1ZT0zJy4gUGF0Y2ggYnkgRXJpYyBWLiBTbWl0aC4KKwogLSBJc3N1ZSAjMjY0Nzg6IEZpeCBzZW1hbnRpYyBidWdzIHdoZW4gdXNpbmcgYmluYXJ5IG9wZXJhdG9ycyB3aXRoIGRpY3Rpb25hcnkKICAgdmlld3MgYW5kIHR1cGxlcy4KIApAQCAtNjg1LDc5ICsxODcxLDI3IEBACiAKIC0gSXNzdWUgIzI1NjYwOiBGaXggVEFCIGtleSBiZWhhdmlvdXIgaW4gUkVQTCB3aXRoIHJlYWRsaW5lLgogCistIElzc3VlICMyNjI4ODogT3B0aW1pemUgUHlMb25nX0FzRG91YmxlLgorCistIElzc3VlcyAjMjYyODkgYW5kICMyNjMxNTogT3B0aW1pemUgZmxvb3IgYW5kIG1vZHVsbyBkaXZpc2lvbiBmb3IKKyAgc2luZ2xlLWRpZ2l0IGxvbmdzLiAgTWljcm9iZW5jaG1hcmtzIHNob3cgMi0yLjV4IGltcHJvdmVtZW50LiAgQnVpbHQtaW4KKyAgJ2Rpdm1vZCcgZnVuY3Rpb24gaXMgbm93IGFsc28gfjEwJSBmYXN0ZXIuCisKIC0gSXNzdWUgIzI1ODg3OiBSYWlzZSBhIFJ1bnRpbWVFcnJvciB3aGVuIGEgY29yb3V0aW5lIG9iamVjdCBpcyBhd2FpdGVkCiAgIG1vcmUgdGhhbiBvbmNlLgogCi0tIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCi0gIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cwotICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCi0gIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCi0KLQogTGlicmFyeQogLS0tLS0tLQogCi0tIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCi0KLS0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCi0gIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20KLQotLSBJc3N1ZSAjMjEzODY6IEltcGxlbWVudCBtaXNzaW5nIElQdjRBZGRyZXNzLmlzX2dsb2JhbCBwcm9wZXJ0eS4gIEl0IHdhcwotICBkb2N1bWVudGVkIHNpbmNlIDA3YTU2MTBiYWU5ZC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9nZXIgTHVldGhpLgotCi0tIElzc3VlICMyMDkwMDogZGlzdHV0aWxzIHJlZ2lzdGVyIGNvbW1hbmQgbm93IGRlY29kZXMgSFRUUCByZXNwb25zZXMKLSAgY29ycmVjdGx5LiAgSW5pdGlhbCBwYXRjaCBieSBpbmdyaWQuCi0KLS0gQSBuZXcgdmVyc2lvbiBvZiB0eXBpbmcucHkgcHJvdmlkZXMgc2V2ZXJhbCBuZXcgY2xhc3NlcyBhbmQKLSAgZmVhdHVyZXM6IEBvdmVybG9hZCBvdXRzaWRlIHN0dWJzLCBSZXZlcnNpYmxlLCBEZWZhdWx0RGljdCwgVGV4dCwKLSAgQ29udGV4dE1hbmFnZXIsIFR5cGVbXSwgTmV3VHlwZSgpLCBUWVBFX0NIRUNLSU5HLCBhbmQgbnVtZXJvdXMgYnVnCi0gIGZpeGVzIChub3RlIHRoYXQgc29tZSBvZiB0aGUgbmV3IGZlYXR1cmVzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkIGluCi0gIG15cHkgb3Igb3RoZXIgc3RhdGljIGFuYWx5emVycykuICBBbHNvIGNsYXNzZXMgZm9yIFBFUCA0OTIKLSAgKEF3YWl0YWJsZSwgQXN5bmNJdGVyYWJsZSwgQXN5bmNJdGVyYXRvcikgaGF2ZSBiZWVuIGFkZGVkIChpbiBmYWN0Ci0gIHRoZXkgbWFkZSBpdCBpbnRvIDMuNS4xIGJ1dCB3ZXJlIG5ldmVyIG1lbnRpb25lZCkuCi0KLS0gSXNzdWUgIzI1NzM4OiBTdG9wIGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuc2VuZF9lcnJvcigpIGZyb20KLSAgc2VuZGluZyBhIG1lc3NhZ2UgYm9keSBmb3IgMjA1IFJlc2V0IENvbnRlbnQuICBBbHNvLCBkb24ndCBzZW5kIENvbnRlbnQKLSAgaGVhZGVyIGZpZWxkcyBpbiByZXNwb25zZXMgdGhhdCBkb24ndCBoYXZlIGEgYm9keS4gIFBhdGNoIGJ5IFN1c3VtdQotICBLb3NoaWJhLgotCi0tIElzc3VlICMyMTMxMzogRml4IHRoZSAicGxhdGZvcm0iIG1vZHVsZSB0byB0b2xlcmF0ZSB3aGVuIHN5cy52ZXJzaW9uCi0gIGNvbnRhaW5zIHRydW5jYXRlZCBidWlsZCBpbmZvcm1hdGlvbi4KLQotLSBbU2VjdXJpdHldIElzc3VlICMyNjgzOTogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgY2FsbHMKLSAgYGBnZXRyYW5kb20oKWBgIHdpdGggYGBHUk5EX05PTkJMT0NLYGAgdG8gZmFsbCBiYWNrIG9uIHJlYWRpbmcKLSAgYGAvZGV2L3VyYW5kb21gYCBpZiB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90IGluaXRpYWxpemVkIHlldC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDb2xtIEJ1Y2tsZXkuCi0KLS0gSXNzdWUgIzI3MTY0OiBJbiB0aGUgemxpYiBtb2R1bGUsIGFsbG93IGRlY29tcHJlc3NpbmcgcmF3IERlZmxhdGUgc3RyZWFtcwotICB3aXRoIGEgcHJlZGVmaW5lZCB6ZGljdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNDI5MTogRml4IHdzZ2lyZWYuc2ltcGxlX3NlcnZlci5XU0dJUmVxdWVzdEhhbmRsZXIgdG8gY29tcGxldGVseQotICB3cml0ZSBkYXRhIHRvIHRoZSBjbGllbnQuICBQcmV2aW91c2x5IGl0IGNvdWxkIGRvIHBhcnRpYWwgd3JpdGVzIGFuZAotICB0cnVuY2F0ZSBkYXRhLiAgQWxzbywgd3NnaXJlZi5oYW5kbGVyLlNlcnZlckhhbmRsZXIgY2FuIG5vdyBoYW5kbGUgc3Rkb3V0Ci0gIGRvaW5nIHBhcnRpYWwgd3JpdGVzLCBidXQgdGhpcyBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMyNjgwOTogQWRkIGBgX19hbGxfX2BgIHRvIDptb2Q6YHN0cmluZ2AuICBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgotCi0tIElzc3VlICMyNjM3Mzogc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZSBub3cgY29ycmVjdGx5IGlnbm9yZXMKLSAgQnJva2VuUGlwZUVycm9yIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZGllcyBiZWZvcmUgLmNvbW11bmljYXRlKCkKLSAgaXMgY2FsbGVkIGluIG1vcmUvYWxsIGNpcmN1bXN0YW5jZXMuCi0KLS0gSXNzdWUgIzIxNzc2OiBkaXN0dXRpbHMudXBsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBIVFRQRXJyb3IuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCi0gIFBlcm1pc3Npb25FcnJvcgotCi0tIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncwotICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KLQogLSBJc3N1ZSAjMjcwNTc6IEZpeCBvcy5zZXRfaW5oZXJpdGFibGUoKSBvbiBBbmRyb2lkLCBpb2N0bCgpIGlzIGJsb2NrZWQgYnkKICAgU0VMaW51eCBhbmQgZmFpbHMgd2l0aCBFQUNDRVNTLiBUaGUgZnVuY3Rpb24gbm93IGZhbGxzIGJhY2sgdG8gZmNudGwoKS4KICAgUGF0Y2ggd3JpdHRlbiBieSBNaWNoYcWCIEJlZG5hcnNraS4KIAogLSBJc3N1ZSAjMjcwMTQ6IEZpeCBpbmZpbml0ZSByZWN1cnNpb24gdXNpbmcgdHlwaW5nLnB5LiAgVGhhbmtzIHRvIEthbGxlIFR1dXJlIQogCistIElzc3VlICMyNzAzMTogUmVtb3ZlZCBkdW1teSBtZXRob2RzIGluIFRraW50ZXIgd2lkZ2V0IGNsYXNzZXM6IHRrX21lbnVCYXIoKQorICBhbmQgdGtfYmluZEZvclRyYXZlcnNhbCgpLgorCiAtIElzc3VlICMxNDEzMjogRml4IHVybGxpYi5yZXF1ZXN0IHJlZGlyZWN0IGhhbmRsaW5nIHdoZW4gdGhlIHRhcmdldCBvbmx5IGhhcwogICBhIHF1ZXJ5IHN0cmluZy4gIE9yaWdpbmFsIGZpeCBieSBKw6FuIEphbmVjaC4KIApAQCAtNzY3LDYgKzE5MDEsMTggQEAKICAgdG8gYmUgQVNDSUktZW5jb2RhYmxlLCBvdGhlcndpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IgaXMgcmFpc2VkLiAgQmFzZWQgb24KICAgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KIAorLSBJc3N1ZSAjMjcwMzM6IFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBkZWNvZGVfZGF0YSBwYXJhbWV0ZXIgZm9yCisgIHNtdHBkLlNNVFBDaGFubmVsIGFuZCBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9ycyBpcyBjaGFuZ2VkIHRvIEZhbHNlLgorCistIElzc3VlICMyNzAzNDogUmVtb3ZlZCBkZXByZWNhdGVkIGNsYXNzIGFzeW5jaGF0LmZpZm8uCisKKy0gSXNzdWUgIzI2ODcwOiBBZGRlZCByZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5KCksIHdoaWNoIGNhbiBzdG9wIGVudHJpZXMKKyAgYmVpbmcgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgVHlsZXIKKyAgQ3JvbXB0b24uCisKKy0gSXNzdWUgIzI2MDM5OiB6aXBmaWxlLlppcEZpbGUub3BlbigpIGNhbiBub3cgYmUgdXNlZCB0byB3cml0ZSBkYXRhIGludG8gYSBaSVAKKyAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLiAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzI2ODkyOiBIb25vciBkZWJ1Z2xldmVsIGZsYWcgaW4gdXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIuIFBhdGNoCiAgIGNvbnRyaWJ1dGVkIGJ5IENoaSBIc3VhbiBZZW4uCiAKQEAgLTc4MSw2ICsxOTI3LDE0IEBACiAtIElzc3VlICMyNjk3NzogUmVtb3ZlZCB1bm5lY2Vzc2FyeSwgYW5kIGlnbm9yZWQsIGNhbGwgdG8gc3VtIG9mIHNxdWFyZXMgaGVscGVyCiAgIGluIHN0YXRpc3RpY3MucHZhcmlhbmNlLgogCistIElzc3VlICMyNjAwMjogVXNlIGJpc2VjdCBpbiBzdGF0aXN0aWNzLm1lZGlhbiBpbnN0ZWFkIG9mIGEgbGluZWFyIHNlYXJjaC4KKyAgUGF0Y2ggYnkgVXBlbmRyYSBLdW1hLgorCistIElzc3VlICMyNTk3NDogTWFrZSB1c2Ugb2YgbmV3IERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIG1ldGhvZCBpbiBzdGF0aXN0aWNzCisgIG1vZHVsZS4gUGF0Y2ggYnkgU3RlZmFuIEtyYWguCisKKy0gSXNzdWUgIzI2OTk2OiBBZGQgc2VjcmV0cyBtb2R1bGUgYXMgZGVzY3JpYmVkIGluIFBFUCA1MDYuCisKIC0gSXNzdWUgIzI2ODgxOiBUaGUgbW9kdWxlZmluZGVyIG1vZHVsZSBub3cgc3VwcG9ydHMgZXh0ZW5kZWQgb3Bjb2RlIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMjM4MTU6IEZpeGVkIGNyYXNoZXMgcmVsYXRlZCB0byBkaXJlY3RseSBjcmVhdGVkIGluc3RhbmNlcyBvZiB0eXBlcyBpbgpAQCAtNzkyLDYgKzE5NDYsMTEgQEAKIC0gSXNzdWUgIzI2ODczOiB4bWxycGMgbm93IHJhaXNlcyBSZXNwb25zZUVycm9yIG9uIHVuc3VwcG9ydGVkIHR5cGUgdGFncwogICBpbnN0ZWFkIG9mIHNpbGVudGx5IHJldHVybiBpbmNvcnJlY3QgcmVzdWx0LgogCistIElzc3VlICMyNjkxNTogIFRoZSBfX2NvbnRhaW5zX18gbWV0aG9kcyBpbiB0aGUgY29sbGVjdGlvbnMgQUJDcyBub3cgY2hlY2sKKyAgZm9yIGlkZW50aXR5IGJlZm9yZSBjaGVja2luZyBlcXVhbGl0eS4gIFRoaXMgYmV0dGVyIG1hdGNoZXMgdGhlIGJlaGF2aW9yCisgIG9mIHRoZSBjb25jcmV0ZSBjbGFzc2VzLCBhbGxvd3Mgc2Vuc2libGUgaGFuZGxpbmcgb2YgTmFOcywgYW5kIG1ha2VzIGl0CisgIGVhc2llciB0byByZWFzb24gYWJvdXQgY29udGFpbmVyIGludmFyaWFudHMuCisKIC0gSXNzdWUgIzI2NzExOiBGaXhlZCB0aGUgY29tcGFyaXNvbiBvZiBwbGlzdGxpYi5EYXRhIHdpdGggb3RoZXIgdHlwZXMuCiAKIC0gSXNzdWUgIzI0MTE0OiBGaXggYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiBgY3R5cGVzLnV0aWxgLgpAQCAtODA1LDYgKzE5NjQsMTIgQEAKICAgbmFtZXMgdGhhdCBoYXBwZW4gdG8gaGF2ZSBhIGJ5cGFzc2VkIGhvc3RuYW1lIGFzIGEgc3VmZml4LiAgUGF0Y2ggYnkgWGlhbmcKICAgWmhhbmcuCiAKKy0gSXNzdWUgIzI0OTAyOiBQcmludCBzZXJ2ZXIgVVJMIG9uIGh0dHAuc2VydmVyIHN0YXJ0dXAuICBJbml0aWFsIHBhdGNoIGJ5CisgIEZlbGl4IEthaXNlci4KKworLSBJc3N1ZSAjMjU3ODg6IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSBub3cgc3VwcG9ydHMgYW4gImVycm9ycyIgYXJndW1lbnQKKyAgZm9yIHBhc3NpbmcgdG8gb3Blbi4gIE9yaWdpbmFsIHBhdGNoIGJ5IEpvc2VwaCBIYWNrbWFuLgorCiAtIElzc3VlICMyNjYzNDogcmVjdXJzaXZlX3JlcHIoKSBub3cgc2V0cyBfX3F1YWxuYW1lX18gb2Ygd3JhcHBlci4gIFBhdGNoIGJ5CiAgIFhpYW5nIFpoYW5nLgogCkBAIC04NDAsMjYgKzIwMDUsNTQgQEAKIC0gSXNzdWUgIzI2NzE3OiBTdG9wIGVuY29kaW5nIExhdGluLTEtaXplZCBXU0dJIHBhdGhzIHdpdGggVVRGLTguICBQYXRjaCBieQogICBBbnRob255IFNvdHRpbGUuCiAKKy0gSXNzdWUgIzI2NzgyOiBBZGQgU1RBUlRVUElORk8gdG8gc3VicHJvY2Vzcy5fX2FsbF9fIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI2NDA0OiBBZGQgY29udGV4dCBtYW5hZ2VyIHRvIHNvY2tldHNlcnZlci4gIFBhdGNoIGJ5IEF2aXYgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2NzM1OiBGaXggOmZ1bmM6YG9zLnVyYW5kb21gIG9uIFNvbGFyaXMgMTEuMyBhbmQgbmV3ZXIgd2hlbiByZWFkaW5nCiAgIG1vcmUgdGhhbiAxLDAyNCBieXRlczogY2FsbCBgYGdldHJhbmRvbSgpYGAgbXVsdGlwbGUgdGltZXMgd2l0aCBhIGxpbWl0IG9mCiAgIDEwMjQgYnl0ZXMgcGVyIGNhbGwuCiAKKy0gSXNzdWUgIzI2NTg1OiBFbGltaW5hdGUgaHR0cC5zZXJ2ZXIuX3F1b3RlX2h0bWwoKSBhbmQgdXNlCisgIGh0bWwuZXNjYXBlKHF1b3RlPUZhbHNlKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNjY4NTogUmFpc2UgT1NFcnJvciBpZiBjbG9zaW5nIGEgc29ja2V0IGZhaWxzLgorCiAtIElzc3VlICMxNjMyOTogQWRkIC53ZWJtIHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KIAogLSBJc3N1ZSAjMTM5NTI6IEFkZCAuY3N2IHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHZW9mZiBXaWxzb24uCiAKKy0gSXNzdWUgIzI2NTg3OiB0aGUgc2l0ZSBtb2R1bGUgbm93IGFsbG93cyAucHRoIGZpbGVzIHRvIHNwZWNpZnkgZmlsZXMgdG8gYmUKKyAgYWRkZWQgdG8gc3lzLnBhdGggKGUuZy4gemlwIGZpbGVzKS4KKworLSBJc3N1ZSAjMjU2MDk6IEludHJvZHVjZSBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXIgYW5kCisgIHR5cGluZy5Db250ZXh0TWFuYWdlci4KKwogLSBJc3N1ZSAjMjY3MDk6IEZpeGVkIFkyMDM4IHByb2JsZW0gaW4gbG9hZGluZyBiaW5hcnkgUExpc3RzLgogCiAtIElzc3VlICMyMzczNTogSGFuZGxlIHRlcm1pbmFsIHJlc2l6aW5nIHdpdGggUmVhZGxpbmUgNi4zKyBieSBpbnN0YWxsaW5nIG91cgogICBvd24gU0lHV0lOQ0ggaGFuZGxlci4gIFBhdGNoIGJ5IEVyaWMgUHJpY2UuCiAKKy0gSXNzdWUgIzI1OTUxOiBDaGFuZ2UgU1NMU29ja2V0LnNlbmRhbGwoKSB0byByZXR1cm4gTm9uZSwgYXMgZXhwbGljaXRseQorICBkb2N1bWVudGVkIGZvciBwbGFpbiBzb2NrZXQgb2JqZWN0cy4gIFBhdGNoIGJ5IEF2aXYgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2NTg2OiBJbiBodHRwLnNlcnZlciwgcmVzcG9uZCB3aXRoICI0MTMgUmVxdWVzdCBoZWFkZXIgZmllbGRzIHRvbwogICBsYXJnZSIgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGhlYWRlciBmaWVsZHMgdG8gcGFyc2UsIHJhdGhlciB0aGFuIGtpbGxpbmcKICAgdGhlIGNvbm5lY3Rpb24gYW5kIHJhaXNpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCistIElzc3VlICMyNjY3NjogQWRkZWQgbWlzc2luZyBYTUxQdWxsUGFyc2VyIHRvIEVsZW1lbnRUcmVlLl9fYWxsX18uCisKIC0gSXNzdWUgIzIyODU0OiBDaGFuZ2UgQnVmZmVyZWRSZWFkZXIud3JpdGFibGUoKSBhbmQKICAgQnVmZmVyZWRXcml0ZXIucmVhZGFibGUoKSB0byBhbHdheXMgcmV0dXJuIEZhbHNlLgogCistIElzc3VlICMyNjQ5MjogRXhoYXVzdGVkIGl0ZXJhdG9yIG9mIGFycmF5LmFycmF5IG5vdyBjb25mb3JtcyB3aXRoIHRoZSBiZWhhdmlvcgorICBvZiBpdGVyYXRvcnMgb2Ygb3RoZXIgbXV0YWJsZSBzZXF1ZW5jZXM6IGl0IGxlZnRzIGV4aGF1c3RlZCBldmVuIGlmIGl0ZXJhdGVkCisgIGFycmF5IGlzIGV4dGVuZGVkLgorCistIElzc3VlICMyNjY0MTogZG9jdGVzdC5Eb2NGaWxlVGVzdCBhbmQgZG9jdGVzdC50ZXN0ZmlsZSgpIG5vdyBzdXBwb3J0CisgIHBhY2thZ2VzIChtb2R1bGUgc3BsaXR0ZWQgaW50byBtdWx0aXBsZSBkaXJlY3RvcmllcykgZm9yIHRoZSBwYWNrYWdlCisgIHBhcmFtZXRlci4KKwogLSBJc3N1ZSAjMjUxOTU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gbW9jay5NYWdpY01vY2suIF9DYWxsIGlzIGEgc3ViY2xhc3Mgb2YKICAgdHVwbGUgKGNoYW5nZXNldCAzNjAzYmFlNjNjMTMgb25seSB3b3JrcyBmb3IgY2xhc3Nlcykgc28gd2UgbmVlZCB0bwogICBpbXBsZW1lbnQgX19uZV9fIG91cnNlbHZlcy4gIFBhdGNoIGJ5IEFuZHJldyBQbHVtbWVyLgpAQCAtODcyLDE2ICsyMDY1LDQ1IEBACiAKIC0gSXNzdWUgIzI2NjE2OiBGaXhlZCBhIGJ1ZyBpbiBkYXRldGltZS5hc3RpbWV6b25lKCkgbWV0aG9kLgogCi0tIElzc3VlICMyMTkyNTogOmZ1bmM6YHdhcm5pbmdzLmZvcm1hdHdhcm5pbmdgIG5vdyBjYXRjaGVzIGV4Y2VwdGlvbnMgb24KLSAgYGBsaW5lY2FjaGUuZ2V0bGluZSguLi4pYGAgdG8gYmUgYWJsZSB0byBsb2cgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBlbWl0dGVkCi0gIGxhdGUgZHVyaW5nIHRoZSBQeXRob24gc2h1dGRvd24gcHJvY2Vzcy4KKy0gSXNzdWUgIzI2NjM3OiBUaGUgOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUgbm93IGVtaXRzIGFuIDpleGM6YEltcG9ydEVycm9yYAorICByYXRoZXIgdGhhbiBhIDpleGM6YFR5cGVFcnJvcmAgaWYgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHRyaWVkIGR1cmluZyB0aGUKKyAgUHl0aG9uIHNodXRkb3duIHByb2Nlc3MgYnV0IDpkYXRhOmBzeXMucGF0aGAgaXMgYWxyZWFkeSBjbGVhcmVkIChzZXQgdG8KKyAgYGBOb25lYGApLgorCistIElzc3VlICMyMTkyNTogOmZ1bmM6YHdhcm5pbmdzLmZvcm1hdHdhcm5pbmdgIG5vdyBjYXRjaGVzIGV4Y2VwdGlvbnMgd2hlbgorICBjYWxsaW5nIDpmdW5jOmBsaW5lY2FjaGUuZ2V0bGluZWAgYW5kCisgIDpmdW5jOmB0cmFjZW1hbGxvYy5nZXRfb2JqZWN0X3RyYWNlYmFja2AgdG8gYmUgYWJsZSB0byBsb2cKKyAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBlbWl0dGVkIGxhdGUgZHVyaW5nIHRoZSBQeXRob24gc2h1dGRvd24gcHJvY2Vzcy4KKworLSBJc3N1ZSAjMjM4NDg6IE9uIFdpbmRvd3MsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBub3cgYWxzbyBpbnN0YWxscyBhbgorICBleGNlcHRpb24gaGFuZGxlciB0byBkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIFB5dGhvbiB0aHJlYWRzIG9uIGFueSBXaW5kb3dzCisgIGV4Y2VwdGlvbiwgbm90IG9ubHkgb24gVU5JWCBzaWduYWxzIChTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQpLgorCistIElzc3VlICMyNjUzMDogQWRkIEMgZnVuY3Rpb25zIDpjOmZ1bmM6YF9QeVRyYWNlTWFsbG9jX1RyYWNrYCBhbmQKKyAgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfVW50cmFja2AgdG8gdHJhY2sgbWVtb3J5IGJsb2NrcyB1c2luZyB0aGUKKyAgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZS4gQWRkIDpjOmZ1bmM6YF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFja2AgdG8gZ2V0CisgIHRoZSB0cmFjZWJhY2sgb2YgYW4gb2JqZWN0LgorCistIElzc3VlICMyNjU4ODogVGhlIF90cmFjZW1hbGxvYyBub3cgc3VwcG9ydHMgdHJhY2luZyBtZW1vcnkgYWxsb2NhdGlvbnMgb2YKKyAgbXVsdGlwbGUgYWRkcmVzcyBzcGFjZXMgKGRvbWFpbnMpLgogCiAtIElzc3VlICMyNDI2NjogQ3RybCtDIGR1cmluZyBSZWFkbGluZSBoaXN0b3J5IHNlYXJjaCBub3cgY2FuY2VscyB0aGUgc2VhcmNoCiAgIG1vZGUgd2hlbiBjb21waWxlZCB3aXRoIFJlYWRsaW5lIDcuCiAKKy0gSXNzdWUgIzI2NTkwOiBJbXBsZW1lbnQgYSBzYWZlIGZpbmFsaXplciBmb3IgdGhlIF9zb2NrZXQuc29ja2V0IHR5cGUuIEl0IG5vdworICByZWxlYXNlcyB0aGUgR0lMIHRvIGNsb3NlIHRoZSBzb2NrZXQuCisKKy0gSXNzdWUgIzE4Nzg3OiBzcHdkLmdldHNwbmFtKCkgbm93IHJhaXNlcyBhIFBlcm1pc3Npb25FcnJvciBpZiB0aGUgdXNlcgorICBkb2Vzbid0IGhhdmUgcHJpdmlsZWdlcy4KKwogLSBJc3N1ZSAjMjY1NjA6IEF2b2lkIHBvdGVudGlhbCBWYWx1ZUVycm9yIGluIEJhc2VIYW5kbGVyLnN0YXJ0X3Jlc3BvbnNlLgogICBJbml0aWFsIHBhdGNoIGJ5IFBldGVyIEluZ2xlc2J5LgogCistIElzc3VlICMyNjU2NzogQWRkIGEgbmV3IGZ1bmN0aW9uIDpjOmZ1bmM6YFB5RXJyX1Jlc291cmNlV2FybmluZ2AgZnVuY3Rpb24gdG8KKyAgcGFzcyB0aGUgZGVzdHJveWVkIG9iamVjdC4gQWRkIGEgKnNvdXJjZSogYXR0cmlidXRlIHRvCisgIDpjbGFzczpgd2FybmluZ3MuV2FybmluZ01lc3NhZ2VgLiBBZGQgd2FybmluZ3MuX3Nob3d3YXJubXNnKCkgd2hpY2ggdXNlcworICB0cmFjZW1hbGxvYyB0byBnZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBzb3VyY2Ugb2JqZWN0IHdhcyBhbGxvY2F0ZWQuCisKIC0gW1NlY3VyaXR5XSBJc3N1ZSAjMjYzMTM6IHNzbC5weSBfbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIGlmIHdpbmRvd3MKICAgY2VydCBzdG9yZSBpcyBlbXB0eS4gUGF0Y2ggYnkgQmFqaS4KIApAQCAtOTAzLDI0ICsyMTI1LDM5IEBACiAtIElzc3VlICMyMzcxODogRml4ZWQgcGFyc2luZyB0aW1lIGluIHdlZWsgMCBiZWZvcmUgSmFuIDEuICBPcmlnaW5hbCBwYXRjaCBieQogICBUYW3DoXMgQmVuY2UgR2VkYWkuCiAKKy0gSXNzdWUgIzI2MzIzOiBBZGQgTW9jay5hc3NlcnRfY2FsbGVkKCkgYW5kIE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgbWV0aG9kcyB0byB1bml0dGVzdC5tb2NrLiBQYXRjaCB3cml0dGVuIGJ5IEFtaXQgU2FoYS4KKwogLSBJc3N1ZSAjMjA1ODk6IEludm9raW5nIFBhdGgub3duZXIoKSBhbmQgUGF0aC5ncm91cCgpIG9uIFdpbmRvd3Mgbm93IHJhaXNlCiAgIE5vdEltcGxlbWVudGVkRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvci4KIAogLSBJc3N1ZSAjMjYxNzc6IEZpeGVkIHRoZSBrZXlzKCkgbWV0aG9kIGZvciBDYW52YXMgYW5kIFNjcm9sbGJhciB3aWRnZXRzLgogCi0tIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIHRoZSBmaWxlaW5wdXQgbW9kdWxlLgotICBUaGUgYnVmc2l6ZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCistIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIGZpbGVpbnB1dC4KKyAgVGhlIGJ1ZnNpemUgcGFyYW1ldGVyIGlzIG5vdyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkLgorCistIElzc3VlICMxOTQ3NTogQWRkZWQgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgdG8gdGhlIGRhdGV0aW1lCisgIGlzb2Zvcm1hdCgpIG1ldGhvZCB0byBjaG9vc2UgdGhlIHByZWNpc2lvbiBvZiB0aGUgdGltZSBjb21wb25lbnQuCiAKIC0gSXNzdWUgIzIyMDI6IEZpeCBVbmJvdW5kTG9jYWxFcnJvciBpbgogICBBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyLmdldF9hbGdvcml0aG1faW1wbHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdGhpZXUKICAgRHVwdXkuCiAKKy0gSXNzdWUgIzI2MTY3OiBNaW5pbWl6ZWQgb3ZlcmhlYWQgaW4gY29weS5jb3B5KCkgYW5kIGNvcHkuZGVlcGNvcHkoKS4KKyAgT3B0aW1pemVkIGNvcHlpbmcgYW5kIGRlZXBjb3B5aW5nIGJ5dGVhcnJheXMsIE5vdEltcGxlbWVudGVkLCBzbGljZXMsCisgIHNob3J0IGxpc3RzLCB0dXBsZXMsIGRpY3RzLCBzZXRzLgorCiAtIElzc3VlICMyNTcxODogRml4ZWQgcGlja2xpbmcgYW5kIGNvcHlpbmcgdGhlIGFjY3VtdWxhdGUoKSBpdGVyYXRvciB3aXRoCiAgIHRvdGFsIGlzIE5vbmUuCiAKIC0gSXNzdWUgIzI2NDc1OiBGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IGZvciByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdGhlICg/eCkKICAgZmxhZy4KIAorLSBJc3N1ZSAjMjY0ODI6IEFsbG93ZWQgcGlja2xpbmcgcmVjdXJzaXZlIGRlcXVldWVzLgorCistIElzc3VlICMyNjMzNTogTWFrZSBtbWFwLndyaXRlKCkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBsaWtlCisgIG90aGVyIHdyaXRlIG1ldGhvZHMuICBQYXRjaCBieSBKYWt1YiBTdGFzaWFrLgorCiAtIElzc3VlICMyNjQ1NzogRml4ZWQgdGhlIHN1Ym5ldHMoKSBtZXRob2RzIGluIElQIG5ldHdvcmsgY2xhc3NlcyBmb3IgdGhlIGNhc2UKICAgd2hlbiByZXN1bHRpbmcgcHJlZml4IGxlbmd0aCBpcyBlcXVhbCB0byBtYXhpbWFsIHByZWZpeCBsZW5ndGguCiAgIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgpAQCAtOTM3LDcgKzIxNzQsNyBAQAogCiAtIElzc3VlICMyNjE4NjogUmVtb3ZlIGFuIGludmFsaWQgdHlwZSBjaGVjayBpbiBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLgogCi0tIElzc3VlICMyNjM2NzogaW1wb3J0bGliLl9faW1wb3J0X18oKSByYWlzZXMgU3lzdGVtRXJyb3IgbGlrZQorLSBJc3N1ZSAjMjYzNjc6IGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgcmFpc2VzIEltcG9ydEVycm9yIGxpa2UKICAgYnVpbHRpbnMuX19pbXBvcnRfXygpIHdoZW4gYGBsZXZlbGBgIGlzIHNwZWNpZmllZCBidXQgd2l0aG91dCBhbiBhY2NvbXBhbnlpbmcKICAgcGFja2FnZSBzcGVjaWZpZWQuCiAKQEAgLTk0NSwxOSArMjE4MiwzOSBAQAogICB0aGUgY29ubmVjdGVkIHNvY2tldCkgd2hlbiB2ZXJpZnlfcmVxdWVzdCgpIHJldHVybnMgZmFsc2UuICBQYXRjaCBieSBBdml2CiAgIFBhbGl2b2RhLgogCistIElzc3VlICMyMzQzMDogQ2hhbmdlIHRoZSBzb2NrZXRzZXJ2ZXIgbW9kdWxlIHRvIG9ubHkgY2F0Y2ggZXhjZXB0aW9ucworICByYWlzZWQgZnJvbSBhIHJlcXVlc3QgaGFuZGxlciB0aGF0IGFyZSBkZXJpdmVkIGZyb20gRXhjZXB0aW9uIChpbnN0ZWFkIG9mCisgIEJhc2VFeGNlcHRpb24pLiAgVGhlcmVmb3JlIFN5c3RlbUV4aXQgYW5kIEtleWJvYXJkSW50ZXJydXB0IG5vIGxvbmdlcgorICB0cmlnZ2VyIHRoZSBoYW5kbGVfZXJyb3IoKSBtZXRob2QsIGFuZCB3aWxsIG5vdyB0byBzdG9wIGEgc2luZ2xlLXRocmVhZGVkCisgIHNlcnZlci4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNTkzOTogT24gV2luZG93cyBvcGVuIHRoZSBjZXJ0IHN0b3JlIHJlYWRvbmx5IGluCiAgIHNzbC5lbnVtX2NlcnRpZmljYXRlcy4KIAogLSBJc3N1ZSAjMjU5OTU6IG9zLndhbGsoKSBubyBsb25nZXIgdXNlcyBGRHMgcHJvcG9ydGlvbmFsIHRvIHRoZSB0cmVlIGRlcHRoLgogCistIElzc3VlICMyNTk5NDogQWRkZWQgdGhlIGNsb3NlKCkgbWV0aG9kIGFuZCB0aGUgc3VwcG9ydCBvZiB0aGUgY29udGV4dCBtYW5hZ2VyCisgIHByb3RvY29sIGZvciB0aGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgorCistIElzc3VlICMyMzk5MjogbXVsdGlwcm9jZXNzaW5nOiBtYWtlIE1hcFJlc3VsdCBub3QgZmFpbC1mYXN0IHVwb24gZXhjZXB0aW9uLgorCistIElzc3VlICMyNjI0MzogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmNvbXByZXNzKCkuICBQYXRjaCBieSBBdml2CisgIFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjExNzogVGhlIG9zLnNjYW5kaXIoKSBpdGVyYXRvciBub3cgY2xvc2VzIGZpbGUgZGVzY3JpcHRvciBub3Qgb25seQogICB3aGVuIHRoZSBpdGVyYXRpb24gaXMgZmluaXNoZWQsIGJ1dCB3aGVuIGl0IHdhcyBmYWlsZWQgd2l0aCBlcnJvci4KIAorLSBJc3N1ZSAjMjU5NDk6IF9fZGljdF9fIGZvciBhbiBPcmRlcmVkRGljdCBpbnN0YW5jZSBpcyBub3cgY3JlYXRlZCBvbmx5IHdoZW4KKyAgbmVlZGVkLgorCiAtIElzc3VlICMyNTkxMTogUmVzdG9yZWQgc3VwcG9ydCBvZiBieXRlcyBwYXRocyBpbiBvcy53YWxrKCkgb24gV2luZG93cy4KIAogLSBJc3N1ZSAjMjYwNDU6IEFkZCBVVEYtOCBzdWdnZXN0aW9uIHRvIGVycm9yIG1lc3NhZ2Ugd2hlbiBwb3N0aW5nIGEKICAgbm9uLUxhdGluLTEgc3RyaW5nIHdpdGggaHR0cC5jbGllbnQuCiAKKy0gSXNzdWUgIzI2MDM5OiBBZGRlZCB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKCkgYW5kIHppcGluZm8uWmlwSW5mby5pc19kaXIoKS4KKyAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzEyOTIzOiBSZXNldCBGYW5jeVVSTG9wZW5lcidzIHJlZGlyZWN0IGNvdW50ZXIgZXZlbiBpZiB0aGVyZSBpcyBhbgogICBleGNlcHRpb24uICBCYXNlZCBvbiBwYXRjaGVzIGJ5IEJyaWFuIEJyYXppbCBhbmQgRGFuaWVsIFJvY2NvLgogCkBAIC05NzgsNiArMjIzNSwxMCBAQAogICBnZXRob3N0YnluYW1lX2V4KCkgZnVuY3Rpb25zIG9mIHRoZSBzb2NrZXQgbW9kdWxlIG5vdyBkZWNvZGUgdGhlIGhvc3RuYW1lCiAgIGZyb20gdGhlIEFOU0kgY29kZSBwYWdlIHJhdGhlciB0aGFuIFVURi04LgogCistIElzc3VlICMyNjA5OTogVGhlIHNpdGUgbW9kdWxlIG5vdyB3cml0ZXMgYW4gZXJyb3IgaW50byBzdGRlcnIgaWYKKyAgc2l0ZWN1c3RvbWl6ZSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIGJ1dCBleGVjdXRpbmcgdGhlIG1vZHVsZSByYWlzZSBhbgorICBJbXBvcnRFcnJvci4gU2FtZSBjaGFuZ2UgZm9yIHVzZXJjdXN0b21pemUuCisKIC0gSXNzdWUgIzI2MTQ3OiB4bWxycGMgbm93IHdvcmtzIHdpdGggc3RyaW5ncyBub3QgZW5jb2RhYmxlIHdpdGggdXNlZAogICBub24tVVRGLTggZW5jb2RpbmcuCiAKQEAgLTk4OCwxMyArMjI0OSwyMSBAQAogLSBJc3N1ZSAjMjYwMTM6IEFkZGVkIGNvbXBhdGliaWxpdHkgd2l0aCBicm9rZW4gcHJvdG9jb2wgMiBwaWNrbGVzIGNyZWF0ZWQKICAgaW4gb2xkIFB5dGhvbiAzIHZlcnNpb25zICgzLjQuMyBhbmQgbG93ZXIpLgogCistIElzc3VlICMyNjEyOTogRGVwcmVjYXRlZCBhY2NlcHRpbmcgbm9uLWludGVnZXJzIGluIGdycC5nZXRncmdpZCgpLgorCiAtIElzc3VlICMyNTg1MDogVXNlIGNyb3NzLWNvbXBpbGF0aW9uIGJ5IGRlZmF1bHQgZm9yIDY0LWJpdCBXaW5kb3dzLgogCi0tIElzc3VlICMxNzYzMzogSW1wcm92ZSB6aXBpbXBvcnQncyBzdXBwb3J0IGZvciBuYW1lc3BhY2UgcGFja2FnZXMuCistIElzc3VlICMyNTgyMjogQWRkIGRvY3N0cmluZ3MgdG8gdGhlIGZpZWxkcyBvZiB1cmxsaWIucGFyc2UgcmVzdWx0cy4KKyAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgU3dhdGkgSmFpc3dhbC4KKworLSBJc3N1ZSAjMjI2NDI6IENvbnZlcnQgdHJhY2UgbW9kdWxlIG9wdGlvbiBwYXJzaW5nIG1lY2hhbmlzbSB0byBhcmdwYXJzZS4KKyAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgU2lsZW50R2hvc3QuCiAKIC0gSXNzdWUgIzI0NzA1OiBGaXggc3lzY29uZmlnLl9wYXJzZV9tYWtlZmlsZSBub3QgZXhwYW5kaW5nICR7fSB2YXJzCiAgIGFwcGVhcmluZyBiZWZvcmUgJCgpIHZhcnMuCiAKKy0gSXNzdWUgIzI2MDY5OiBSZW1vdmUgdGhlIGRlcHJlY2F0ZWQgYXBpcyBpbiB0aGUgdHJhY2UgbW9kdWxlLgorCiAtIElzc3VlICMyMjEzODogRml4IG1vY2sucGF0Y2ggYmVoYXZpb3Igd2hlbiBwYXRjaGluZyBkZXNjcmlwdG9ycy4gUmVzdG9yZQogICBvcmlnaW5hbCB2YWx1ZXMgYWZ0ZXIgcGF0Y2hpbmcuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFNlYW4gTWNDdWxseS4KIApAQCAtMTAwNywxMyArMjI3NiwyOCBAQAogLSBJc3N1ZSAjMjQxMjA6IElnbm9yZSBQZXJtaXNzaW9uRXJyb3Igd2hlbiB0cmF2ZXJzaW5nIGEgdHJlZSB3aXRoCiAgIHBhdGhsaWIuUGF0aC5bcl1nbG9iKCkuICBQYXRjaCBieSBVbHJpY2ggUGV0cmkuCiAKKy0gSXNzdWUgIzIxODE1OiBBY2NlcHQgXSBjaGFyYWN0ZXJzIGluIHRoZSBkYXRhIHBvcnRpb24gb2YgaW1hcCByZXNwb25zZXMsCisgIGluIG9yZGVyIHRvIGhhbmRsZSB0aGUgZmxhZ3Mgd2l0aCBzcXVhcmUgYnJhY2tldHMgYWNjZXB0ZWQgYW5kIHByb2R1Y2VkCisgIGJ5IHNlcnZlcnMgc3VjaCBhcyBnbWFpbC4KKwogLSBJc3N1ZSAjMjU0NDc6IGZpbGVpbnB1dCBub3cgdXNlcyBzeXMuc3RkaW4gYXMtaXMgaWYgaXQgZG9lcyBub3QgaGF2ZSBhCiAgIGJ1ZmZlciBhdHRyaWJ1dGUgKHJlc3RvcmVzIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpLgogCistIElzc3VlICMyNTk3MTogT3B0aW1pemVkIGNyZWF0aW5nIEZyYWN0aW9ucyBmcm9tIGZsb2F0cyBieSAyIHRpbWVzIGFuZCBmcm9tCisgIERlY2ltYWxzIGJ5IDMgdGltZXMuCisKKy0gSXNzdWUgIzI1ODAyOiBEb2N1bWVudCBhcyBkZXByZWNhdGVkIHRoZSByZW1haW5pbmcgaW1wbGVtZW50YXRpb25zIG9mCisgIGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlKCkuCisKKy0gSXNzdWUgIzI1OTI4OiBBZGQgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvKCkuCisKIC0gSXNzdWUgIzI1NDQ3OiBDb3B5aW5nIHRoZSBscnVfY2FjaGUoKSB3cmFwcGVyIG9iamVjdCBub3cgYWx3YXlzIHdvcmtzLAotICBpbmRlcGVuZGVkbHkgZnJvbSB0aGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwKKyAgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSB0eXBlIG9mIHRoZSB3cmFwcGVkIG9iamVjdCAoYnkgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbAogICBvYmplY3QgdW5jaGFuZ2VkKS4KIAorLSBJc3N1ZSAjMjU3Njg6IEhhdmUgdGhlIGZ1bmN0aW9ucyBpbiBjb21waWxlYWxsIHJldHVybiBib29sZWFucyBpbnN0ZWFkIG9mCisgIGludHMgYW5kIGFkZCBwcm9wZXIgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdHMgZm9yIHRoZSByZXR1cm4gdmFsdWVzLgorCiAtIElzc3VlICMyNDEwMzogRml4ZWQgcG9zc2libGUgdXNlIGFmdGVyIGZyZWUgaW4gRWxlbWVudFRyZWUuWE1MUHVsbFBhcnNlci4KIAogLSBJc3N1ZSAjMjU4NjA6IG9zLmZ3YWxrKCkgbm8gbG9uZ2VyIHNraXBzIHJlbWFpbmluZyBkaXJlY3RvcmllcyB3aGVuIGVycm9yCkBAIC0xMDIxLDggKzIzMDUsMjIgQEAKIAogLSBJc3N1ZSAjMjU5MTQ6IEZpeGVkIGFuZCBzaW1wbGlmaWVkIE9yZGVyZWREaWN0Ll9fc2l6ZW9mX18uCiAKKy0gSXNzdWUgIzI1ODY5OiBPcHRpbWl6ZWQgZGVlcGNvcHlpbmcgRWxlbWVudFRyZWU7IGl0IGlzIG5vdyAyMCB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1ODczOiBPcHRpbWl6ZWQgaXRlcmF0aW5nIEVsZW1lbnRUcmVlLiAgSXRlcmF0aW5nIGVsZW1lbnRzCisgIEVsZW1lbnQuaXRlcigpIGlzIG5vdyA0MCUgZmFzdGVyLCBpdGVyYXRpbmcgdGV4dCBFbGVtZW50Lml0ZXJ0ZXh0KCkKKyAgaXMgbm93IHVwIHRvIDIuNSB0aW1lcyBmYXN0ZXIuCisKIC0gSXNzdWUgIzI1OTAyOiBGaXhlZCB2YXJpb3VzIHJlZmNvdW50IGlzc3VlcyBpbiBFbGVtZW50VHJlZSBpdGVyYXRpb24uCiAKKy0gSXNzdWUgIzIyMjI3OiBUaGUgVGFyRmlsZSBpdGVyYXRvciBpcyByZWltcGxlbWVudGVkIHVzaW5nIGdlbmVyYXRvci4KKyAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBzaW1wbGVyIHRoYXQgdXNpbmcgY2xhc3MuCisKKy0gSXNzdWUgIzI1NjM4OiBPcHRpbWl6ZWQgRWxlbWVudFRyZWUuaXRlcnBhcnNlKCk7IGl0IGlzIG5vdyAyeCBmYXN0ZXIuCisgIE9wdGltaXplZCBFbGVtZW50VHJlZSBwYXJzaW5nOyBpdCBpcyBub3cgMTAlIGZhc3Rlci4KKworLSBJc3N1ZSAjMjU3NjE6IEltcHJvdmVkIGRldGVjdGluZyBlcnJvcnMgaW4gYnJva2VuIHBpY2tsZSBkYXRhLgorCiAtIElzc3VlICMyNTcxNzogUmVzdG9yZSB0aGUgcHJldmlvdXMgYmVoYXZpb3VyIG9mIHRvbGVyYXRpbmcgbW9zdCBmc3RhdCgpCiAgIGVycm9ycyB3aGVuIG9wZW5pbmcgZmlsZXMuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gaW4gMy41YTEsIGFuZCBzdG9wcGVkCiAgIGFub255bW91cyB0ZW1wb3JhcnkgZmlsZXMgZnJvbSB3b3JraW5nIGluIHNwZWNpYWwgY2FzZXMuCkBAIC0xMDM0LDYgKzIzMzIsOSBAQAogLSBJc3N1ZSAjMjU3NjQ6IEluIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSwgcHJlc2VydmUgYW55IGV4Y2VwdGlvbiBjYXVzZWQgYnkKICAgZm9yaygpIGZhaWx1cmUgd2hlbiBwcmVleGVjX2ZuIGlzIHVzZWQuCiAKKy0gSXNzdWUgIzI1NzcxOiBUd2VhayB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UgZm9yIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpCisgIHdoZW4gJ3BhY2thZ2UnIGlzbid0IHNwZWNpZmllZCBidXQgbmVjZXNzYXJ5LgorCiAtIElzc3VlICM2NDc4OiBfc3RycHRpbWUncyByZWdleHAgY2FjaGUgbm93IGlzIHJlc2V0IGFmdGVyIGNoYW5naW5nIHRpbWV6b25lCiAgIHdpdGggdGltZS50enNldCgpLgogCkBAIC0xMDU1LDYgKzIzNTYsOSBAQAogLSBJc3N1ZSAjMTAxMzE6IEZpeGVkIGRlZXAgY29weWluZyBvZiBtaW5pZG9tIGRvY3VtZW50cy4gIEJhc2VkIG9uIHBhdGNoCiAgIGJ5IE1hcmlhbiBHYW5pc2luLgogCistIElzc3VlICM3OTkwOiBkaXIoKSBvbiBFbGVtZW50VHJlZS5FbGVtZW50IG5vdyBsaXN0cyBwcm9wZXJ0aWVzOiAidGFnIiwKKyAgInRleHQiLCAidGFpbCIgYW5kICJhdHRyaWIiLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCisKIC0gSXNzdWUgIzI1NzI1OiBGaXhlZCBhIHJlZmVyZW5jZSBsZWFrIGluIHBpY2tsZS5sb2FkcygpIHdoZW4gdW5waWNrbGluZwogICBpbnZhbGlkIGRhdGEgaW5jbHVkaW5nIHR1cGxlIGluc3RydWN0aW9ucy4KIApAQCAtMTA3MCw2ICsyMzc0LDIwMyBAQAogLSBJc3N1ZSAjMjU2MjQ6IFppcEZpbGUgbm93IGFsd2F5cyB3cml0ZXMgYSBaSVBfU1RPUkVEIGhlYWRlciBmb3IgZGlyZWN0b3J5CiAgIGVudHJpZXMuICBQYXRjaCBieSBEaW5neXVhbiBXYW5nLgogCistIElzc3VlICMyNTYyNjogQ2hhbmdlIHRocmVlIHpsaWIgZnVuY3Rpb25zIHRvIGFjY2VwdCBzaXplcyB0aGF0IGZpdCBpbgorICBQeV9zc2l6ZV90LCBidXQgaW50ZXJuYWxseSBjYXAgdGhvc2Ugc2l6ZXMgdG8gVUlOVF9NQVguICBUaGlzIHJlc29sdmVzIGEKKyAgcmVncmVzc2lvbiBpbiAzLjUgd2hlcmUgR3ppcEZpbGUucmVhZCgpIGZhaWxlZCB0byByZWFkIGNodW5rcyBsYXJnZXIgdGhhbiAyCisgIG9yIDQgR2lCLiAgVGhlIGNoYW5nZSBhZmZlY3RzIHRoZSB6bGliLkRlY29tcHJlc3MuZGVjb21wcmVzcygpIG1heF9sZW5ndGgKKyAgcGFyYW1ldGVyLCB0aGUgemxpYi5kZWNvbXByZXNzKCkgYnVmc2l6ZSBwYXJhbWV0ZXIsIGFuZCB0aGUKKyAgemxpYi5EZWNvbXByZXNzLmZsdXNoKCkgbGVuZ3RoIHBhcmFtZXRlci4KKworLSBJc3N1ZSAjMjU1ODM6IEF2b2lkIGluY29ycmVjdCBlcnJvcnMgcmFpc2VkIGJ5IG9zLm1ha2VkaXJzKGV4aXN0X29rPVRydWUpCisgIHdoZW4gdGhlIE9TIGdpdmVzIHByaW9yaXR5IHRvIGVycm9ycyBzdWNoIGFzIEVBQ0NFUyBvdmVyIEVFWElTVC4KKworLSBJc3N1ZSAjMjU1OTM6IENoYW5nZSBzZW1hbnRpY3Mgb2YgRXZlbnRMb29wLnN0b3AoKSBpbiBhc3luY2lvLgorCistIElzc3VlICM2OTczOiBXaGVuIHdlIGtub3cgYSBzdWJwcm9jZXNzLlBvcGVuIHByb2Nlc3MgaGFzIGRpZWQsIGRvCisgIG5vdCBhbGxvdyB0aGUgc2VuZF9zaWduYWwoKSwgdGVybWluYXRlKCksIG9yIGtpbGwoKSBtZXRob2RzIHRvIGRvCisgIGFueXRoaW5nIGFzIHRoZXkgY291bGQgcG90ZW50aWFsbHkgc2lnbmFsIGEgZGlmZmVyZW50IHByb2Nlc3MuCisKKy0gSXNzdWUgIzIzODgzOiBBZGRlZCBtaXNzaW5nIEFQSXMgdG8gX19hbGxfXyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzCisgIGZvciB0aGUgZm9sbG93aW5nIG1vZHVsZXM6IGNhbGVuZGFyLCBjc3YsIGVudW0sIGZpbGVpbnB1dCwgZnRwbGliLCBsb2dnaW5nLAorICBvcHRwYXJzZSwgdGFyZmlsZSwgdGhyZWFkaW5nIGFuZCB3YXZlLiAgQWxzbyBhZGRlZCBhCisgIHRlc3Quc3VwcG9ydC5jaGVja19fYWxsX18oKSBoZWxwZXIuICBQYXRjaGVzIGJ5IEphY2VrIEtvxYJvZHppZWosIE1hdXJvCisgIFMuIE0uIFJvZHJpZ3VlcyBhbmQgSm9lbCBUYWRkZWkuCisKKy0gSXNzdWUgIzI1NTkwOiBJbiB0aGUgUmVhZGxpbmUgY29tcGxldGVyLCBvbmx5IGNhbGwgZ2V0YXR0cigpIG9uY2UgcGVyCisgIGF0dHJpYnV0ZS4gIEFsc28gY29tcGxldGUgbmFtZXMgb2YgYXR0cmlidXRlcyBzdWNoIGFzIHByb3BlcnRpZXMgYW5kIHNsb3RzCisgIHdoaWNoIGFyZSBsaXN0ZWQgYnkgZGlyKCkgYnV0IG5vdCB5ZXQgY3JlYXRlZCBvbiBhbiBpbnN0YW5jZS4KKworLSBJc3N1ZSAjMjU0OTg6IEZpeCBhIGNyYXNoIHdoZW4gZ2FyYmFnZS1jb2xsZWN0aW5nIGN0eXBlcyBvYmplY3RzIGNyZWF0ZWQKKyAgYnkgd3JhcHBpbmcgYSBtZW1vcnl2aWV3LiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIG1hZGUgaW4gMy41YTEuICBCYXNlZAorICBvbiBwYXRjaCBieSBFcnlrc3VuLgorCistIElzc3VlICMyNTU4NDogQWRkZWQgImVzY2FwZSIgdG8gdGhlIF9fYWxsX18gbGlzdCBpbiB0aGUgZ2xvYiBtb2R1bGUuCisKKy0gSXNzdWUgIzI1NTg0OiBGaXhlZCByZWN1cnNpdmUgZ2xvYigpIHdpdGggcGF0dGVybnMgc3RhcnRpbmcgd2l0aCAnXCpcKicuCisKKy0gSXNzdWUgIzI1NDQ2OiBGaXggcmVncmVzc2lvbiBpbiBzbXRwbGliJ3MgQVVUSCBMT0dJTiBzdXBwb3J0LgorCistIElzc3VlICMxODAxMDogRml4IHRoZSBweWRvYyB3ZWIgc2VydmVyJ3MgbW9kdWxlIHNlYXJjaCBmdW5jdGlvbiB0byBoYW5kbGUKKyAgZXhjZXB0aW9ucyBmcm9tIGltcG9ydGluZyBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMjU1NTQ6IEdvdCByaWQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2luZy4KKworLSBJc3N1ZSAjMTg5NzM6IENvbW1hbmQtbGluZSBpbnRlcmZhY2Ugb2YgdGhlIGNhbGVuZGFyIG1vZHVsZSBub3cgdXNlcyBhcmdwYXJzZQorICBpbnN0ZWFkIG9mIG9wdHBhcnNlLgorCistIElzc3VlICMyNTUxMDogZmlsZWlucHV0LkZpbGVJbnB1dC5yZWFkbGluZSgpIG5vdyByZXR1cm5zIGInJyBpbnN0ZWFkIG9mICcnCisgIGF0IHRoZSBlbmQgaWYgdGhlIEZpbGVJbnB1dCB3YXMgb3BlbmVkIHdpdGggYmluYXJ5IG1vZGUuCisgIFBhdGNoIGJ5IFJ5b3N1a2UgSXRvLgorCistIElzc3VlICMyNTUwMzogRml4ZWQgaW5zcGVjdC5nZXRkb2MoKSBmb3IgaW5oZXJpdGVkIGRvY3N0cmluZ3Mgb2YgcHJvcGVydGllcy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgSm9obiBNYXJrIFZhbmRlbmJlcmcuCisKKy0gSXNzdWUgIzI1NTE1OiBBbHdheXMgdXNlIG9zLnVyYW5kb20gYXMgYSBzb3VyY2Ugb2YgcmFuZG9tbmVzcyBpbiB1dWlkLnV1aWQ0LgorCistIElzc3VlICMyMTgyNzogRml4ZWQgdGV4dHdyYXAuZGVkZW50KCkgZm9yIHRoZSBjYXNlIHdoZW4gbGFyZ2VzdCBjb21tb24KKyAgd2hpdGVzcGFjZSBpcyBhIHN1YnN0cmluZyBvZiBzbWFsbGVzdCBsZWFkaW5nIHdoaXRlc3BhY2UuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IFJvYmVydCBMaS4KKworLSBJc3N1ZSAjMjU0NDc6IFRoZSBscnVfY2FjaGUoKSB3cmFwcGVyIG9iamVjdHMgbm93IGNhbiBiZSBjb3BpZWQgYW5kIHBpY2tsZWQKKyAgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwgb2JqZWN0IHVuY2hhbmdlZCkuCisKKy0gSXNzdWUgIzI1MzkwOiB0eXBpbmc6IERvbid0IGNyYXNoIG9uIFVuaW9uW3N0ciwgUGF0dGVybl0uCisKKy0gSXNzdWUgIzI1NDQxOiBhc3luY2lvOiBSYWlzZSBlcnJvciBmcm9tIGRyYWluKCkgd2hlbiBzb2NrZXQgaXMgY2xvc2VkLgorCistIElzc3VlICMyNTQxMDogQ2xlYW5lZCB1cCBhbmQgZml4ZWQgbWlub3IgYnVncyBpbiBDIGltcGxlbWVudGF0aW9uIG9mCisgIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyNTQxMTogSW1wcm92ZWQgVW5pY29kZSBzdXBwb3J0IGluIFNNVFBIYW5kbGVyIHRocm91Z2ggYmV0dGVyIHVzZSBvZgorICB0aGUgZW1haWwgcGFja2FnZS4gVGhhbmtzIHRvIHVzZXIgc2ltb24wNCBmb3IgdGhlIHBhdGNoLgorCistIE1vdmUgdGhlIGltcCBtb2R1bGUgZnJvbSBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gRGVwcmVjYXRpb25XYXJuaW5nLgorCistIElzc3VlICMyNTQwNzogUmVtb3ZlIG1lbnRpb25zIG9mIHRoZSBmb3JtYXR0ZXIgbW9kdWxlIGJlaW5nIHJlbW92ZWQgaW4KKyAgUHl0aG9uIDMuNi4KKworLSBJc3N1ZSAjMjU0MDY6IEZpeGVkIGEgYnVnIGluIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QubW92ZV90b19lbmQoKQorICB0aGF0IGNhdXNlZCBzZWdtZW50YXRpb24gZmF1bHQgb3IgaGFuZyBpbiBpdGVyYXRpbmcgYWZ0ZXIgbW92aW5nIHNldmVyYWwKKyAgaXRlbXMgdG8gdGhlIHN0YXJ0IG9mIG9yZGVyZWQgZGljdC4KKworLSBJc3N1ZSAjMjUzODI6IHBpY2tsZXRvb2xzLmRpcygpIG5vdyBvdXRwdXRzIGltcGxpY2l0IG1lbW8gaW5kZXggZm9yIHRoZQorICBNRU1PSVpFIG9wY29kZS4KKworLSBJc3N1ZSAjMjUzNTc6IEFkZCBhbiBvcHRpb25hbCBuZXdsaW5lIHBhcmFtZXIgdG8gYmluYXNjaWkuYjJhX2Jhc2U2NCgpLgorICBiYXNlNjQuYjY0ZW5jb2RlKCkgdXNlcyBpdCB0byBhdm9pZCBhIG1lbW9yeSBjb3B5LgorCistIElzc3VlICMyNDE2NDogT2JqZWN0cyB0aGF0IG5lZWQgY2FsbGluZyBgYF9fbmV3X19gYCB3aXRoIGtleXdvcmQgYXJndW1lbnRzLAorICBjYW4gbm93IGJlIHBpY2tsZWQgdXNpbmcgcGlja2xlIHByb3RvY29scyBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KKworLSBJc3N1ZSAjMjUzNjQ6IHppcGZpbGUgbm93IHdvcmtzIGluIHRocmVhZHMgZGlzYWJsZWQgYnVpbGRzLgorCistIElzc3VlICMyNTMyODogc210cGQncyBTTVRQQ2hhbm5lbCBub3cgY29ycmVjdGx5IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgYm90aAorICBkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGFyZSBzZXQgdG8gdHJ1ZS4KKworLSBJc3N1ZSAjMTYwOTk6IFJvYm90RmlsZVBhcnNlciBub3cgc3VwcG9ydHMgQ3Jhd2wtZGVsYXkgYW5kIFJlcXVlc3QtcmF0ZQorICBleHRlbnNpb25zLiAgUGF0Y2ggYnkgTmlrb2xheSBCb2dveWNoZXYuCisKKy0gSXNzdWUgIzI1MzE2OiBkaXN0dXRpbHMgcmFpc2VzIE9TRXJyb3IgaW5zdGVhZCBvZiBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCisgIHdoZW4gTVNWQyBpcyBub3QgaW5zdGFsbGVkLgorCistIElzc3VlICMyNTM4MDogRml4ZWQgcHJvdG9jb2wgZm9yIHRoZSBTVEFDS19HTE9CQUwgb3Bjb2RlIGluCisgIHBpY2tsZXRvb2xzLm9wY29kZXMuCisKKy0gSXNzdWUgIzIzOTcyOiBVcGRhdGVzIGFzeW5jaW8gZGF0YWdyYW0gY3JlYXRlIG1ldGhvZCBhbGxvd2luZyByZXVzZXBvcnQKKyAgYW5kIHJldXNlYWRkciBzb2NrZXQgb3B0aW9ucyB0byBiZSBzZXQgcHJpb3IgdG8gYmluZGluZyB0aGUgc29ja2V0LgorICBNaXJyb3JpbmcgdGhlIGV4aXN0aW5nIGFzeW5jaW8gY3JlYXRlX3NlcnZlciBtZXRob2QgdGhlIHJldXNlYWRkciBvcHRpb24KKyAgZm9yIGRhdGFncmFtIHNvY2tldHMgZGVmYXVsdHMgdG8gVHJ1ZSBpZiB0aGUgTy9TIGlzICdwb3NpeCcgKGV4Y2VwdCBpZiB0aGUKKyAgcGxhdGZvcm0gaXMgQ3lnd2luKS4gUGF0Y2ggYnkgQ2hyaXMgTGF3cy4KKworLSBJc3N1ZSAjMjUzMDQ6IEFkZCBhc3luY2lvLnJ1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZSgpLiAgVGhpcyBsZXRzIHlvdQorICBzdWJtaXQgYSBjb3JvdXRpbmUgdG8gYSBsb29wIGZyb20gYW5vdGhlciB0aHJlYWQsIHJldHVybmluZyBhCisgIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuICBCeSBWaW5jZW50IE1pY2hlbC4KKworLSBJc3N1ZSAjMjUyMzI6IEZpeCBDR0lSZXF1ZXN0SGFuZGxlciB0byBzcGxpdCB0aGUgcXVlcnkgZnJvbSB0aGUgVVJMIGF0IHRoZQorICBmaXJzdCBxdWVzdGlvbiBtYXJrICg/KSByYXRoZXIgdGhhbiB0aGUgbGFzdC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjQ2NTc6IFByZXZlbnQgQ0dJUmVxdWVzdEhhbmRsZXIgZnJvbSBjb2xsYXBzaW5nIHNsYXNoZXMgaW4gdGhlCisgIHF1ZXJ5IHBhcnQgb2YgdGhlIFVSTCBhcyBpZiBpdCB3ZXJlIGEgcGF0aC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjUyODc6IERvbid0IGFkZCBjcnlwdC5NRVRIT0RfQ1JZUFQgdG8gY3J5cHQubWV0aG9kcyBpZiBpdCdzIG5vdAorICBzdXBwb3J0ZWQuIENoZWNrIGlmIGl0IGlzIHN1cHBvcnRlZCwgaXQgbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24gT3BlbkJTRCBmb3IKKyAgZXhhbXBsZS4KKworLSBJc3N1ZSAjMjM2MDA6IERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgdHppbmZvLmZyb211dGMoKSB3YXMgcmV0dXJuaW5nCisgIHdyb25nIHJlc3VsdHMgaW4gc29tZSBjYXNlcy4KKworLSBJc3N1ZSAjMjUyMDM6IEZhaWxlZCByZWFkbGluZS5zZXRfY29tcGxldGVyX2RlbGltcygpIG5vIGxvbmdlciBsZWZ0IHRoZQorICBtb2R1bGUgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgorCistIElzc3VlICMyNTAxMTogcmxjb21wbGV0ZXIgbm93IG9taXRzIHByaXZhdGUgYW5kIHNwZWNpYWwgYXR0cmlidXRlIG5hbWVzIHVubGVzcworICB0aGUgcHJlZml4IHN0YXJ0cyB3aXRoIHVuZGVyc2NvcmVzLgorCistIElzc3VlICMyNTIwOTogcmxjb21wbGV0ZXIgbm93IGNhbiBhZGQgYSBzcGFjZSBvciBhIGNvbG9uIGFmdGVyIGNvbXBsZXRlZAorICBrZXl3b3JkLgorCistIElzc3VlICMyMjI0MTogdGltZXpvbmUudXRjIG5hbWUgaXMgbm93IHBsYWluICdVVEMnLCBub3QgJ1VUQy0wMDowMCcuCisKKy0gSXNzdWUgIzIzNTE3OiBmcm9tdGltZXN0YW1wKCkgYW5kIHV0Y2Zyb210aW1lc3RhbXAoKSBtZXRob2RzIG9mCisgIGRhdGV0aW1lLmRhdGV0aW1lIG5vdyByb3VuZCBtaWNyb3NlY29uZHMgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG8KKyAgbmVhcmVzdCBldmVuIGludGVnZXIgKFJPVU5EX0hBTEZfRVZFTiksIGFzIHJvdW5kKGZsb2F0KSwgaW5zdGVhZCBvZiByb3VuZGluZworICB0b3dhcmRzIC1JbmZpbml0eSAoUk9VTkRfRkxPT1IpLgorCistIElzc3VlICMyMzU1MjogVGltZWl0IG5vdyB3YXJucyB3aGVuIHRoZXJlIGlzIHN1YnN0YW50aWFsICg0eCkgdmFyaWFuY2UKKyAgYmV0d2VlbiBiZXN0IGFuZCB3b3JzdCB0aW1lcy4gUGF0Y2ggZnJvbSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNDYzMzogc2l0ZS1wYWNrYWdlcy9SRUFETUUgLT4gUkVBRE1FLnR4dC4KKworLSBJc3N1ZSAjMjQ4Nzk6IGhlbHAoKSBhbmQgcHlkb2MgY2FuIG5vdyBsaXN0IG5hbWVkIHR1cGxlIGZpZWxkcyBpbiB0aGUKKyAgb3JkZXIgdGhleSB3ZXJlIGRlZmluZWQgcmF0aGVyIHRoYW4gYWxwaGFiZXRpY2FsbHkuICBUaGUgb3JkZXJpbmcgaXMKKyAgZGV0ZXJtaW5lZCBieSB0aGUgX2ZpZWxkcyBhdHRyaWJ1dGUgaWYgcHJlc2VudC4KKworLSBJc3N1ZSAjMjQ4NzQ6IEltcHJvdmUgc3BlZWQgb2YgaXRlcnRvb2xzLmN5Y2xlKCkgYW5kIG1ha2UgaXRzCisgIHBpY2tsZSBtb3JlIGNvbXBhY3QuCisKKy0gRml4IGNyYXNoIGluIGl0ZXJ0b29scy5jeWNsZS5fX3NldHN0YXRlX18oKSB3aGVuIHRoZSBmaXJzdCBhcmd1bWVudCB3YXNuJ3QKKyAgYSBsaXN0LgorCistIElzc3VlICMyMDA1OTogdXJsbGliLnBhcnNlIHJhaXNlcyBWYWx1ZUVycm9yIG9uIGFsbCBpbnZhbGlkIHBvcnRzLgorICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgorCistIElzc3VlICMyNDM2MDogSW1wcm92ZSBfX3JlcHJfXyBvZiBhcmdwYXJzZS5OYW1lc3BhY2UoKSBmb3IgaW52YWxpZAorICBpZGVudGlmaWVycy4gIFBhdGNoIGJ5IE1hdHRoaWFzIEJ1c3Nvbm5pZXIuCisKKy0gSXNzdWUgIzIzNDI2OiBydW5fc2V0dXAgd2FzIGJyb2tlbiBpbiBkaXN0dXRpbHMuCisgIFBhdGNoIGZyb20gQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWUgIzEzOTM4OiAydG8zIGNvbnZlcnRzIFN0cmluZ1R5cGVzIHRvIGEgdHVwbGUuIFBhdGNoIGZyb20gTWFyayBIYW1tb25kLgorCistIElzc3VlICMyMDkxOiBvcGVuKCkgYWNjZXB0ZWQgYSAnVScgbW9kZSBzdHJpbmcgY29udGFpbmluZyAnKycsIGJ1dCAnVScgY2FuCisgIG9ubHkgYmUgdXNlZCB3aXRoICdyJy4gUGF0Y2ggZnJvbSBKZWZmIEJhbG9naCBhbmQgSm9obiBPJ0Nvbm5vci4KKworLSBJc3N1ZSAjODU4NTogaW1wcm92ZWQgdGVzdHMgZm9yIHppcGltcG9ydGVyMi4gUGF0Y2ggZnJvbSBNYXJrIExhd3JlbmNlLgorCistIElzc3VlICMxODYyMjogdW5pdHRlc3QubW9jay5tb2NrX29wZW4oKS5yZXNldF9tb2NrIHdvdWxkIHJlY3Vyc2UgaW5maW5pdGVseS4KKyAgUGF0Y2ggZnJvbSBOaWNvbGEgUGFsdW1ibyBhbmQgTGF1cmVudCBEZSBCdXlzdC4KKworLSBJc3N1ZSAjMjQ0MjY6IEZhc3Qgc2VhcmNoaW5nIG9wdGltaXphdGlvbiBpbiByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyB3b3JrcworICBmb3IgcGF0dGVybnMgdGhhdCBzdGFydHMgd2l0aCBjYXB0dXJpbmcgZ3JvdXBzLiAgRmFzdCBzZWFyY2hpbmcgb3B0aW1pemF0aW9uCisgIG5vdyBjYW4ndCBiZSBkaXNhYmxlZCBhdCBjb21waWxlIHRpbWUuCisKKy0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKKyAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKKworLSBJc3N1ZSAjMTMyNDg6IFJlbW92ZSBkZXByZWNhdGVkIGluc3BlY3QuZ2V0bW9kdWxlaW5mbyBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjU1Nzg6IEZpeCAoYW5vdGhlcikgbWVtb3J5IGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXIoKS4KKworLSBJc3N1ZSAjMjU1MzA6IERpc2FibGUgdGhlIHZ1bG5lcmFibGUgU1NMdjMgcHJvdG9jb2wgYnkgZGVmYXVsdCB3aGVuIGNyZWF0aW5nCisgIHNzbC5TU0xDb250ZXh0LgorCistIElzc3VlICMyNTU2OTogRml4IG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgorCistIElzc3VlICMyNTQ3MTogU29ja2V0cyByZXR1cm5lZCBmcm9tIGFjY2VwdCgpIHNob3VsZG4ndCBhcHBlYXIgdG8gYmUKKyAgbm9uYmxvY2tpbmcuCisKKy0gSXNzdWUgIzI1MzE5OiBXaGVuIHRocmVhZGluZy5FdmVudCBpcyByZWluaXRpYWxpemVkLCB0aGUgdW5kZXJseWluZyBjb25kaXRpb24KKyAgc2hvdWxkIHVzZSBhIHJlZ3VsYXIgbG9jayByYXRoZXIgdGhhbiBhIHJlY3Vyc2l2ZSBsb2NrLgorCiAtIFNraXAgZ2V0YWRkcmluZm8gaWYgaG9zdCBpcyBhbHJlYWR5IHJlc29sdmVkLgogICBQYXRjaCBieSBBLiBKZXNzZSBKaXJ5dSBEYXZpcy4KIApAQCAtMTA4OSw1MyArMjU5MCw5IEBACiAKIC0gSXNzdWUgIzI3MDQxOiBhc3luY2lvOiBBZGQgbG9vcC5jcmVhdGVfZnV0dXJlIG1ldGhvZAogCi0tIElzc3VlICMyNzIyMzogYXN5bmNpbzogRml4IF9yZWFkX3JlYWR5IGFuZCBfd3JpdGVfcmVhZHkgdG8gcmVzcGVjdAotICBfY29ubl9sb3N0LgotICBQYXRjaCBieSDFgXVrYXN6IExhbmdhLgotCi0tIElzc3VlICMyMjk3MDogYXN5bmNpbzogRml4IGluY29uc2lzdGVuY3kgY2FuY2VsbGluZyBDb25kaXRpb24ud2FpdC4KLSAgUGF0Y2ggYnkgRGF2aWQgQ29sZXMuCi0KIElETEUKIC0tLS0KIAotLSBJc3N1ZSAjNTEyNDogUGFzdGUgd2l0aCB0ZXh0IHNlbGVjdGVkIG5vdyByZXBsYWNlcyB0aGUgc2VsZWN0aW9uIG9uIFgxMS4KLSAgVGhpcyBtYXRjaGVzIGhvdyBwYXN0ZSB3b3JrcyBvbiBXaW5kb3dzLCBNYWMsIG1vc3QgbW9kZXJuIExpbnV4IGFwcHMsCi0gIGFuZCB0dGsgd2lkZ2V0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzI0NzU5OiBNYWtlIGNsZWFyIGluIGlkbGVsaWIuaWRsZV90ZXN0Ll9faW5pdF9fIHRoYXQgdGhlIGRpcmVjdG9yeQotICBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUgYW5kIHRvb2wgZm9yIG1haW50YWluZXJzLgotCi0tIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VkJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KLSAgVGhlc2UgcGVyc2lzdGVkIGFmdGVyIG90aGVyIHdhcm5pbmdzIHdlcmUgc3VwcHJlc3NlZCBpbiAjMjA1NjcuCi0gIEFwcGx5IFNlcmhpeSBTdG9yY2hha2EncyB1cGRhdGVfaWRsZXRhc2tzIHNvbHV0aW9uIHRvIGZvdXIgdGVzdCBmaWxlcy4KLSAgUmVjb3JkIHRoaXMgYWRkaXRpb25hbCBhZHZpY2UgaW4gaWRsZV90ZXN0L1JFQURNRS50eHQKLQotLSBJc3N1ZSAjMjA1Njc6IFJldmlzZSBpZGxlX3Rlc3QvUkVBRE1FLnR4dCB3aXRoIGFkdmljZSBhYm91dCBhdm9pZGluZwotICB0ayB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGVzdHMuICBBcHBseSBhZHZpY2UgdG8gc2V2ZXJhbCBJRExFIHRlc3RzLgotCi0tIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgotICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMjY2NzM6IFdoZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuCi0gIFN1Y2ggZm9udHMgb24gTGludXggcHJldmVudGVkIHRoZSBjb25maWd1cmF0aW9uIGRpYWxvZyBmcm9tIG9wZW5pbmcuCi0KLS0gSXNzdWUgIzIxOTM5OiBBZGQgdGVzdCBmb3IgSURMRSdzIHBlcmNvbGF0b3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMjE2NzY6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcmVwbGFjZSBkaWFsb2cuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCi0KLS0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgSURMRSdzIHVuZG8gZGVsZWdhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIgLgotCi0tIElzc3VlICMyNzA0NDogQWRkIENvbmZpZ0RpYWxvZy5yZW1vdmVfdmFyX2NhbGxiYWNrcyB0byBzdG9wIG1lbW9yeSBsZWFrcy4KLQotLSBJc3N1ZSAjMjM5Nzc6IEFkZCBtb3JlIGFzc2VydHMgdG8gdGVzdF9kZWxlZ2F0b3IuCi0KIC0gSXNzdWUgIzIwNjQwOiBBZGQgdGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQuCiAgIFBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KIApAQCAtMTE0OSwxNCArMjYwNiwxMDMgQEAKICAgTUFSSyBpbiBSRUFETUUudHh0IGFuZCBvcGVuIHRoaXMgYW5kIE5FV1MudHh0IHdpdGggJ2FzY2lpJy4KICAgUmUtZW5jb2RlIENSRURJVFMudHh0IHRvIHV0Zi04IGFuZCBvcGVuIGl0IHdpdGggJ3V0Zi04Jy4KIAorLSBJc3N1ZSAjMTUzNDg6IFN0b3AgdGhlIGRlYnVnZ2VyIGVuZ2luZSAobm9ybWFsbHkgaW4gYSB1c2VyIHByb2Nlc3MpCisgIGJlZm9yZSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aW5kb3cgKHJ1bm5pbmcgaW4gdGhlIElETEUgcHJvY2VzcykuCisgIFRoaXMgcHJldmVudHMgdGhlIFJ1bnRpbWVFcnJvcnMgdGhhdCB3ZXJlIGJlaW5nIGNhdWdodCBhbmQgaWdub3JlZC4KKworLSBJc3N1ZSAjMjQ0NTU6IFByZXZlbnQgSURMRSBmcm9tIGhhbmdpbmcgd2hlbiBhKSBjbG9zaW5nIHRoZSBzaGVsbCB3aGlsZSB0aGUKKyAgZGVidWdnZXIgaXMgYWN0aXZlICgxNTM0Nyk7IGIpIGNsb3NpbmcgdGhlIGRlYnVnZ2VyIHdpdGggdGhlIFtYXSBidXR0b24KKyAgKDE1MzQ4KTsgYW5kIGMpIGFjdGl2YXRpbmcgdGhlIGRlYnVnZ2VyIHdoZW4gYWxyZWFkeSBhY3RpdmUgKDI0NDU1KS4KKyAgVGhlIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbiBkb2VzIHRoaXMgYnkgbWFraW5nIHR3byBjaGFuZ2VzLgorICAxLiBTdXNwZW5kIGFuZCByZXN1bWUgdGhlIGd1aS5pbnRlcmFjdGlvbiBtZXRob2Qgd2l0aCB0aGUgdGNsIHZ3YWl0CisgIG1lY2hhbmlzbSBpbnRlbmRlZCBmb3IgdGhpcyBwdXJwb3NlIChpbnN0ZWFkIG9mIHJvb3QubWFpbmxvb3AgJiAucXVpdCkuCisgIDIuIEluIGd1aS5ydW4sIGFsbG93IGFueSBleGlzdGluZyBpbnRlcmFjdGlvbiB0byB0ZXJtaW5hdGUgZmlyc3QuCisKKy0gQ2hhbmdlICdUaGUgcHJvZ3JhbScgdG8gJ1lvdXIgcHJvZ3JhbScgaW4gYW4gSURMRSAna2lsbCBwcm9ncmFtPycgbWVzc2FnZQorICB0byBtYWtlIGl0IGNsZWFyZXIgdGhhdCB0aGUgcHJvZ3JhbSByZWZlcnJlZCB0byBpcyB0aGUgY3VycmVudGx5IHJ1bm5pbmcKKyAgdXNlciBwcm9ncmFtLCBub3QgSURMRSBpdHNlbGYuCisKKy0gSXNzdWUgIzI0NzUwOiBJbXByb3ZlIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBJRExFIGVkaXRvciB3aW5kb3cgc3RhdHVzIGJhci4KKyAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNTMxMzogQ2hhbmdlIHRoZSBoYW5kbGluZyBvZiBuZXcgYnVpbHQtaW4gdGV4dCBjb2xvciB0aGVtZXMgdG8gYmV0dGVyCisgIGFkZHJlc3MgdGhlIGNvbXBhdGliaWxpdHkgcHJvYmxlbSBpbnRyb2R1Y2VkIGJ5IHRoZSBhZGRpdGlvbiBvZiBJRExFIERhcmsuCisgIENvbnNpc3RlbnRseSB1c2UgdGhlIHJldmlzZWQgaWRsZUNvbmYuQ3VycmVudFRoZW1lIGV2ZXJ5d2hlcmUgaW4gaWRsZWxpYi4KKworLSBJc3N1ZSAjMjQ3ODI6IEV4dGVuc2lvbiBjb25maWd1cmF0aW9uIGlzIG5vdyBhIHRhYiBpbiB0aGUgSURMRSBQcmVmZXJlbmNlcworICBkaWFsb2cgcmF0aGVyIHRoYW4gYSBzZXBhcmF0ZSBkaWFsb2cuICBUaGUgZm9ybWVyIHRhYnMgYXJlIG5vdyBhIHNvcnRlZAorICBsaXN0LiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyMjcyNjogUmUtYWN0aXZhdGUgdGhlIGNvbmZpZyBkaWFsb2cgaGVscCBidXR0b24gd2l0aCBzb21lIGNvbnRlbnQKKyAgYWJvdXQgdGhlIG90aGVyIGJ1dHRvbnMgYW5kIHRoZSBuZXcgSURMRSBEYXJrIHRoZW1lLgorCistIElzc3VlICMyNDgyMDogSURMRSBub3cgaGFzIGFuICdJRExFIERhcmsnIGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWUuCisgIEl0IGlzIG1vcmUgb3IgbGVzcyBJRExFIENsYXNzaWMgaW52ZXJ0ZWQsIHdpdGggYSBjb2JhbHQgYmx1ZSBiYWNrZ3JvdW5kLgorICBTdHJpbmdzLCBjb21tZW50cywga2V5d29yZHMsIC4uLiBhcmUgc3RpbGwgZ3JlZW4sIHJlZCwgb3JhbmdlLCAuLi4gLgorICBUbyB1c2UgaXQgd2l0aCBJRExFcyByZWxlYXNlZCBiZWZvcmUgTm92ZW1iZXIgMjAxNSwgaGl0IHRoZQorICAnU2F2ZSBhcyBOZXcgQ3VzdG9tIFRoZW1lJyBidXR0b24gYW5kIGVudGVyIGEgbmV3IG5hbWUsCisgIHN1Y2ggYXMgJ0N1c3RvbSBEYXJrJy4gIFRoZSBjdXN0b20gdGhlbWUgd2lsbCB3b3JrIHdpdGggYW55IElETEUKKyAgcmVsZWFzZSwgYW5kIGNhbiBiZSBtb2RpZmllZC4KKworLSBJc3N1ZSAjMjUyMjQ6IFJFQURNRS50eHQgaXMgbm93IGFuIGlkbGVsaWIgaW5kZXggZm9yIElETEUgZGV2ZWxvcGVycyBhbmQKKyAgY3VyaW91cyB1c2Vycy4gIFRoZSBwcmV2aW91cyB1c2VyIGNvbnRlbnQgaXMgbm93IGluIHRoZSBJRExFIGRvYyBjaGFwdGVyLgorICAnSURMRScgbm93IG1lYW5zICdJbnRlZ3JhdGVkIERldmVsb3BtZW50IGFuZCBMZWFybmluZyBFbnZpcm9ubWVudCcuCisKKy0gSXNzdWUgIzI0ODIwOiBVc2VycyBjYW4gbm93IHNldCBicmVha3BvaW50IGNvbG9ycyBpbgorICBTZXR0aW5ncyAtPiBDdXN0b20gSGlnaGxpZ2h0aW5nLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDk3MjogSW5hY3RpdmUgc2VsZWN0aW9uIGJhY2tncm91bmQgbm93IG1hdGNoZXMgYWN0aXZlIHNlbGVjdGlvbgorICBiYWNrZ3JvdW5kLCBhcyBjb25maWd1cmVkIGJ5IHVzZXJzLCBvbiBhbGwgc3lzdGVtcy4gIEZvdW5kIGl0ZW1zIGFyZSBub3cKKyAgYWx3YXlzIGhpZ2hsaWdodGVkIG9uIFdpbmRvd3MuICBJbml0aWFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ1NzA6IElkbGU6IG1ha2UgY2FsbHRpcCBhbmQgY29tcGxldGlvbiBib3hlcyBhcHBlYXIgb24gTWFjcworICBhZmZlY3RlZCBieSBhIHRrIHJlZ3Jlc3Npb24uICBJbml0aWFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ5ODg6IElkbGUgU2Nyb2xsZWRMaXN0IGNvbnRleHQgbWVudXMgKHVzZWQgaW4gZGVidWdnZXIpCisgIG5vdyB3b3JrIG9uIE1hYyBBcXVhLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDgwMTogTWFrZSByaWdodC1jbGljayBmb3IgY29udGV4dCBtZW51IHdvcmsgb24gTWFjIEFxdWEuCisgIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUxNzM6IEFzc29jaWF0ZSB0a2ludGVyIG1lc3NhZ2Vib3hlcyB3aXRoIGEgc3BlY2lmaWMgd2lkZ2V0LgorICBGb3IgTWFjIE9TWCwgbWFrZSB0aGVtIGEgJ3NoZWV0Jy4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUxOTg6IEVuaGFuY2UgdGhlIGluaXRpYWwgaHRtbCB2aWV3ZXIgbm93IHVzZWQgZm9yIElkbGUgSGVscC4KKyAgKiBQcm9wZXJseSBpbmRlbnQgZml4ZWQtcGl0Y2ggdGV4dCAocGF0Y2ggYnkgTWFyayBSb3NlbWFuKS4KKyAgKiBHaXZlIGNvZGUgc25pcHBldCBhIHZlcnkgU3BoaW54LWxpa2UgbGlnaHQgYmx1ZWlzaC1ncmF5IGJhY2tncm91bmQuCisgICogUmUtdXNlIGluaXRpYWwgd2lkdGggYW5kIGhlaWdodCBzZXQgYnkgdXNlcnMgZm9yIHNoZWxsIGFuZCBlZGl0b3IuCisgICogV2hlbiB0aGUgVGFibGUgb2YgQ29udGVudHMgKFRPQykgbWVudSBpcyB1c2VkLCBwdXQgdGhlIHNlY3Rpb24gaGVhZGVyCisgIGF0IHRoZSB0b3Agb2YgdGhlIHNjcmVlbi4KKworLSBJc3N1ZSAjMjUyMjU6IENvbmRlbnNlIGFuZCByZXdyaXRlIElkbGUgZG9jIHNlY3Rpb24gb24gdGV4dCBjb2xvcnMuCisKKy0gSXNzdWUgIzIxOTk1OiBFeHBsYWluIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiBJRExFIGFuZCBjb25zb2xlIFB5dGhvbi4KKworLSBJc3N1ZSAjMjI4MjA6IEV4cGxhaW4gbmVlZCBmb3IgKnByaW50KiB3aGVuIHJ1bm5pbmcgZmlsZSBmcm9tIElkbGUgZWRpdG9yLgorCistIElzc3VlICMyNTIyNDogRG9jOiBhdWdtZW50IElkbGUgZmVhdHVyZSBsaXN0IGFuZCBuby1zdWJwcm9jZXNzIHNlY3Rpb24uCisKKy0gSXNzdWUgIzI1MjE5OiBVcGRhdGUgZG9jIGZvciBJZGxlIGNvbW1hbmQgbGluZSBvcHRpb25zLgorICBTb21lIHdlcmUgbWlzc2luZyBhbmQgbm90ZXMgd2VyZSBub3QgY29ycmVjdC4KKworLSBJc3N1ZSAjMjQ4NjE6IE1vc3Qgb2YgaWRsZWxpYiBpcyBwcml2YXRlIGFuZCBzdWJqZWN0IHRvIGNoYW5nZS4KKyAgVXNlIGlkbGVpYi5pZGxlLiogdG8gc3RhcnQgSWRsZS4gU2VlIGlkbGVsaWIuX19pbml0X18uX19kb2NfXy4KKworLSBJc3N1ZSAjMjUxOTk6IElkbGU6IGFkZCBzeW5jaHJvbml6YXRpb24gY29tbWVudHMgZm9yIGZ1dHVyZSBtYWludGFpbmVycy4KKworLSBJc3N1ZSAjMTY4OTM6IFJlcGxhY2UgaGVscC50eHQgd2l0aCBoZWxwLmh0bWwgZm9yIElkbGUgZG9jIGRpc3BsYXkuCisgIFRoZSBuZXcgaWRsZWxpYi9oZWxwLmh0bWwgaXMgcnN0cmlwcGVkIERvYy9idWlsZC9odG1sL2xpYnJhcnkvaWRsZS5odG1sLgorICBJdCBsb29rcyBiZXR0ZXIgdGhhbiBoZWxwLnR4dCBhbmQgd2lsbCBiZXR0ZXIgZG9jdW1lbnQgSWRsZSBhcyByZWxlYXNlZC4KKyAgVGhlIHRraW50ZXIgaHRtbCB2aWV3ZXIgdGhhdCB3b3JrcyBmb3IgdGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IFJvc2UgUm9zZW1hbi4KKyAgVGhlIG5vdyB1bnVzZWQgRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgY2xhc3MgYW5kIGhlbHQudHh0IGZpbGUgYXJlIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzI0MTk5OiBEZXByZWNhdGUgdW51c2VkIGlkbGVsaWIuaWRsZXZlciB3aXRoIHBvc3NpYmxlIHJlbW92YWwgaW4gMy42LgorCistIElzc3VlICMyNDc5MDogUmVtb3ZlIGV4dHJhbmVvdXMgY29kZSAod2hpY2ggYWxzbyBjcmVhdGUgMiAmIDMgY29uZmxpY3RzKS4KKwogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxOTQ4OTogTW92ZWQgdGhlIHNlYXJjaCBib3ggZnJvbSB0aGUgc2lkZWJhciB0byB0aGUgaGVhZGVyIGFuZCBmb290ZXIKLSAgb2YgZWFjaCBwYWdlLiAgUGF0Y2ggYnkgQW1tYXIgQXNrYXIuCi0KLS0gSXNzdWUgIzI0MTM2OiBEb2N1bWVudCB0aGUgbmV3IFBFUCA0NDggdW5wYWNraW5nIHN5bnRheCBvZiAzLjUuCi0KIC0gSXNzdWUgIzI2NzM2OiBVc2VkIEhUVFBTIGZvciBleHRlcm5hbCBsaW5rcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBpZiBwb3NzaWJsZS4KIAogLSBJc3N1ZSAjNjk1MzogUmV3b3JrIHRoZSBSZWFkbGluZSBtb2R1bGUgZG9jdW1lbnRhdGlvbiB0byBncm91cCByZWxhdGVkCkBAIC0xMTY1LDggKzI3MTEsOCBAQAogCiAtIElzc3VlICMyMzYwNjogQWRkcyBub3RlIHRvIGN0eXBlcyBkb2N1bWVudGF0aW9uIHJlZ2FyZGluZyBjZGxsLm1zdmNydC4KIAotLSBJc3N1ZSAjMjU1MDA6IEZpeCBkb2N1bWVudGF0aW9uIHRvIG5vdCBjbGFpbSB0aGF0IF9faW1wb3J0X18gaXMgc2VhcmNoZWQgZm9yCi0gIGluIHRoZSBnbG9iYWwgc2NvcGUuCistIElzc3VlICMyNDk1MjogQ2xhcmlmeSB0aGUgZGVmYXVsdCBzaXplIGFyZ3VtZW50IG9mIHN0YWNrX3NpemUoKSBpbgorICB0aGUgInRocmVhZGluZyIgYW5kICJfdGhyZWFkIiBtb2R1bGVzLiBQYXRjaCBmcm9tIE1hdHRpcC4KIAogLSBJc3N1ZSAjMjYwMTQ6IFVwZGF0ZSAzLnggcGFja2FnaW5nIGRvY3VtZW50YXRpb246CiAgICogIlNlZSBhbHNvIiBsaW5rcyB0byB0aGUgbmV3IGRvY3MgYXJlIG5vdyBwcm92aWRlZCBpbiB0aGUgbGVnYWN5IHBhZ2VzCkBAIC0xMTc4LDYgKzI3MjQsOSBAQAogLSBJc3N1ZSAjMjE5MTY6IEFkZGVkIHRlc3RzIGZvciB0aGUgdHVydGxlIG1vZHVsZS4gIFBhdGNoIGJ5IGluZ3JpZCwKICAgR3JlZ29yeSBMb3lzZSBhbmQgSmVsbGUgWmlqbHN0cmEuCiAKKy0gSXNzdWUgIzI2Mjk1OiBXaGVuIHVzaW5nICJweXRob24zIC1tIHRlc3QgLS10ZXN0ZGlyPVRFU1RESVIiLCByZWdydGVzdAorICBkb2Vzbid0IGFkZCAidGVzdC4iIHByZWZpeCB0byB0ZXN0IG1vZHVsZSBuYW1lcy4KKwogLSBJc3N1ZSAjMjY1MjM6IFRoZSBtdWx0aXByb2Nlc3NpbmcgdGhyZWFkIHBvb2wgKG11bHRpcHJvY2Vzc2luZy5kdW1teS5Qb29sKQogICB3YXMgdW50ZXN0ZWQuCiAKQEAgLTExODYsMzEgKzI3MzUsNTAgQEAKIC0gSXNzdWUgIzI2MzI1OiBBZGRlZCB0ZXN0LnN1cHBvcnQuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpIHRvIGNoZWNrIHRoYXQKICAgbm8gUmVzb3VyY2VXYXJuaW5nIGlzIGVtaXR0ZWQuCiAKLS0gSXNzdWUgIzI1OTQwOiBDaGFuZ2VkIHRlc3Rfc3NsIHRvIHVzZSBzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldC4gIFRoaXMKKy0gSXNzdWUgIzI1OTQwOiBDaGFuZ2VkIHRlc3Rfc3NsIHRvIHVzZSBpdHMgaW50ZXJuYWwgbG9jYWwgc2VydmVyIG1vcmUuICBUaGlzCiAgIGF2b2lkcyByZWx5aW5nIG9uIHN2bi5weXRob24ub3JnLCB3aGljaCByZWNlbnRseSBjaGFuZ2VkIHJvb3QgY2VydGlmaWNhdGUuCiAKIC0gSXNzdWUgIzI1NjE2OiBUZXN0cyBmb3IgT3JkZXJlZERpY3QgYXJlIGV4dHJhY3RlZCBmcm9tIHRlc3RfY29sbGVjdGlvbnMKICAgaW50byBzZXBhcmF0ZSBmaWxlIHRlc3Rfb3JkZXJlZF9kaWN0LgogCistIElzc3VlICMyNTQ0OTogQWRkZWQgdGVzdHMgZm9yIE9yZGVyZWREaWN0IHN1YmNsYXNzZXMuCisKKy0gSXNzdWUgIzI1MTg4OiBBZGQgLVAvLS1wZ28gdG8gdGVzdC5yZWdydGVzdCB0byBzdXBwcmVzcyBlcnJvciBvdXRwdXQgd2hlbgorICBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIGZvciB0aGUgcHVycG9zZXMgb2YgYSBQR08gYnVpbGQuIEluaXRpYWwgcGF0Y2ggYnkKKyAgQWxlY3NhbmRydSBQYXRyYXNjdS4KKworLSBJc3N1ZSAjMjI4MDY6IEFkZCBgYHB5dGhvbiAtbSB0ZXN0IC0tbGlzdC10ZXN0c2BgIGNvbW1hbmQgdG8gbGlzdCB0ZXN0cy4KKworLSBJc3N1ZSAjMTgxNzQ6IGBgcHl0aG9uIC1tIHRlc3QgLS1odW50cmxlYWtzIC4uLmBgIG5vdyBhbHNvIGNoZWNrcyBmb3IgbGVhayBvZgorICBmaWxlIGRlc2NyaXB0b3JzLiBQYXRjaCB3cml0dGVuIGJ5IFJpY2hhcmQgT3Vka2Vyay4KKworLSBJc3N1ZSAjMjUyNjA6IEZpeCBgYHB5dGhvbiAtbSB0ZXN0IC0tY292ZXJhZ2VgYCBvbiBXaW5kb3dzLiBSZW1vdmUgdGhlCisgIGxpc3Qgb2YgaWdub3JlZCBkaXJlY3Rvcmllcy4KKworLSBgYFBDYnVpbGRccnQuYmF0YGAgbm93IGFjY2VwdHMgYW4gdW5saW1pdGVkIG51bWJlciBvZiBhcmd1bWVudHMgdG8gcGFzcyBhbG9uZworICB0byByZWdydGVzdC5weS4gIFByZXZpb3VzbHkgdGhlcmUgd2FzIGEgbGltaXQgb2YgOS4KKwogLSBJc3N1ZSAjMjY1ODM6IFNraXAgdGVzdF90aW1lc3RhbXBfb3ZlcmZsb3cgaW4gdGVzdF9pbXBvcnQgaWYgYnl0ZWNvZGUKICAgZmlsZXMgY2Fubm90IGJlIHdyaXR0ZW4uCiAKIEJ1aWxkCiAtLS0tLQogCistIElzc3VlICMyMTI3NzogRG9uJ3QgdHJ5IHRvIGxpbmsgX2N0eXBlcyB3aXRoIGEgZmZpX2NvbnZlbmllbmNlIGxpYnJhcnkuCisKIC0gSXNzdWUgIzI2ODg0OiBGaXggbGlua2luZyBleHRlbnNpb24gbW9kdWxlcyBmb3IgY3Jvc3MgYnVpbGRzLgogICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KIAorLSBJc3N1ZSAjMjY5MzI6IEZpeGVkIHN1cHBvcnQgb2YgUlRMRF8qIGNvbnN0YW50cyBkZWZpbmVkIGFzIGVudW0gdmFsdWVzLAorICBub3QgdmlhIG1hY3JvcyAoaW4gcGFydGljdWxhciBvbiBBbmRyb2lkKS4gIFBhdGNoIGJ5IENoaSBIc3VhbiBZZW4uCisKIC0gSXNzdWUgIzIyMzU5OiBEaXNhYmxlIHRoZSBydWxlcyBmb3IgcnVubmluZyBfZnJlZXplX2ltcG9ydGxpYiBhbmQgcGdlbiB3aGVuCiAgIGNyb3NzLWNvbXBpbGluZy4gIFRoZSBvdXRwdXQgb2YgdGhlc2UgcHJvZ3JhbXMgaXMgbm9ybWFsbHkgc2F2ZWQgd2l0aCB0aGUKICAgc291cmNlIGNvZGUgYW55d2F5LCBhbmQgaXMgc3RpbGwgcmVnZW5lcmF0ZWQgd2hlbiBkb2luZyBhIG5hdGl2ZSBidWlsZC4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKLS0gSXNzdWUgIzI3MjI5OiBGaXggdGhlIGNyb3NzLWNvbXBpbGluZyBwZ2VuIHJ1bGUgZm9yIGluLXRyZWUgYnVpbGRzLiAgUGF0Y2gKLSAgYnkgWGF2aWVyIGRlIEdheWUuCi0KIC0gSXNzdWUgIzIxNjY4OiBMaW5rIGF1ZGlvb3AsIF9kYXRldGltZSwgX2N0eXBlc190ZXN0IG1vZHVsZXMgdG8gbGlibSwKLSAgZXhjZXB0IG9uIE1hYyBPUyBYLiBQYXRjaCB3cml0dGVuIGJ5IFhhdmllciBkZSBHYXllLgorICBleGNlcHQgb24gTWFjIE9TIFguIFBhdGNoIHdyaXR0ZW4gYnkgQ2hpIEhzdWFuIFllbi4KIAogLSBJc3N1ZSAjMjU3MDI6IEEgLS13aXRoLWx0byBjb25maWd1cmUgb3B0aW9uIGhhcyBiZWVuIGFkZGVkIHRoYXQgd2lsbAogICBlbmFibGUgbGluayB0aW1lIG9wdGltaXphdGlvbnMgYXQgYnVpbGQgdGltZSBkdXJpbmcgYSBtYWtlIHByb2ZpbGUtb3B0LgpAQCAtMTIyOSwyMiArMjc5NywyNCBAQAogCiAtIElzc3VlICMyNjQ2NTogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yZy4KIAotLSBJc3N1ZSAjMjQ0MjE6IENvbXBpbGUgTW9kdWxlcy9fbWF0aC5jIG9uY2UsIGJlZm9yZSBidWlsZGluZyBleHRlbnNpb25zLgotICBQcmV2aW91c2x5IGl0IGNvdWxkIGZhaWwgdG8gY29tcGlsZSBwcm9wZXJseSBpZiB0aGUgbWF0aCBhbmQgY21hdGggYnVpbGRzCi0gIHdlcmUgY29uY3VycmVudC4KLQogLSBJc3N1ZSAjMjUzNDg6IEFkZGVkIGBgLS1wZ29gYCBhbmQgYGAtLXBnby1qb2JgYCBhcmd1bWVudHMgdG8KICAgYGBQQ2J1aWxkXGJ1aWxkLmJhdGBgIGZvciBidWlsZGluZyB3aXRoIFByb2ZpbGUtR3VpZGVkIE9wdGltaXphdGlvbi4gIFRoZQotICBvbGQgYGBQQ2J1aWxkXGJ1aWxkX3Bnby5iYXRgYCBzY3JpcHQgaXMgbm93IGRlcHJlY2F0ZWQsIGFuZCBzaW1wbHkgY2FsbHMKLSAgYGBQQ2J1aWxkXGJ1aWxkLmJhdCAtLXBnbyAlKmBgLgorICBvbGQgYGBQQ2J1aWxkXGJ1aWxkX3Bnby5iYXRgYCBzY3JpcHQgaXMgcmVtb3ZlZC4KIAogLSBJc3N1ZSAjMjU4Mjc6IEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIElDQyB0byBgYGNvbmZpZ3VyZWBgLCBpbmNsdWRpbmcKICAgYSBuZXcgYGAtLXdpdGgtaWNjYGAgZmxhZy4KIAogLSBJc3N1ZSAjMjU2OTY6IEZpeCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uIG9uIFVOSVggd2l0aCBtYWtlIC1qOS4KIAotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAotICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJoLgorLSBJc3N1ZSAjMjQ5ODY6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBidWlsZCBQeXRob24gb24gV2luZG93cyB3aXRob3V0IGVycm9ycworICB3aGVuIGV4dGVybmFsIGxpYnJhcmllcyBhcmUgbm90IGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMjQ0MjE6IENvbXBpbGUgTW9kdWxlcy9fbWF0aC5jIG9uY2UsIGJlZm9yZSBidWlsZGluZyBleHRlbnNpb25zLgorICBQcmV2aW91c2x5IGl0IGNvdWxkIGZhaWwgdG8gY29tcGlsZSBwcm9wZXJseSBpZiB0aGUgbWF0aCBhbmQgY21hdGggYnVpbGRzCisgIHdlcmUgY29uY3VycmVudC4KKworLSBJc3N1ZSAjMjY0NjU6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAorICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJnLgogCiAtIElzc3VlICMyNjI2ODogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yZi4KIApAQCAtMTI3MSw2ICsyODQxLDggQEAKIC0gSXNzdWUgIzI2MDY1OiBFeGNsdWRlcyB2ZW52IGZyb20gbGlicmFyeSB3aGVuIGdlbmVyYXRpbmcgZW1iZWRkYWJsZQogICBkaXN0cm8uCiAKKy0gSXNzdWUgIzI1MDIyOiBSZW1vdmVkIHZlcnkgb3V0ZGF0ZWQgUEMvZXhhbXBsZV9udC8gZGlyZWN0b3J5LgorCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIApAQCAtMTI4NywxMSArMjg1OSwyMSBAQAogCiAtIElzc3VlICMyNjMxNjogRml4IHZhcmlhYmxlIG5hbWUgdHlwbyBpbiBBcmd1bWVudCBDbGluaWMuCiAKLU1pc2MKLS0tLS0KKy0gSXNzdWUgIzI1NDQwOiBGaXggb3V0cHV0IG9mIHB5dGhvbi1jb25maWcgLS1leHRlbnNpb24tc3VmZml4LgogCi0tIElzc3VlICMxNzUwMCwgYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vcHl0aG9uZG90b3JnL2lzc3Vlcy85NDU6IFJlbW92ZQotICB1bnVzZWQgYW5kIG91dGRhdGVkIGljb25zLgorLSBJc3N1ZSAjMjUxNTQ6IFRoZSBweXZlbnYgc2NyaXB0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mCisgIGBweXRob24zIC1tIHZlbnZgLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjYzMTI6IFN5c3RlbUVycm9yIGlzIG5vdyByYWlzZWQgaW4gYWxsIHByb2dyYW1taW5nIGJ1Z3Mgd2l0aCB1c2luZworICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKS4gIFJ1bnRpbWVFcnJvciBkaWQgcmFpc2VkIGJlZm9yZSBpbiBzb21lCisgIHByb2dyYW1taW5nIGJ1Z3MuCisKKy0gSXNzdWUgIzI2MTk4OiBWYWx1ZUVycm9yIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZiBUeXBlRXJyb3Igb24gYnVmZmVyCisgIG92ZXJmbG93IGluIHBhcnNpbmcgImVzIyIgYW5kICJldCMiIGZvcm1hdCB1bml0cy4gIFN5c3RlbUVycm9yIGlzIG5vdyByYWlzZWQKKyAgaW5zdGVhZCBvZiBUeXBlRXJyb3Igb24gcHJvZ3JhbW1pY2FsIGVycm9yIGluIHBhcnNpbmcgZm9ybWF0IHN0cmluZy4KIAogCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMSBmaW5hbD8KQEAgLTE2MDMsNyArMzE4NSw3IEBACiAtIElzc3VlICMyNDc3NDogRml4IGRvY3N0cmluZyBpbiBodHRwLnNlcnZlci50ZXN0LiBQYXRjaCBmcm9tIENoaXUtSHNpYW5nIEhzdS4KIAogLSBJc3N1ZSAjMjExNTk6IEltcHJvdmUgbWVzc2FnZSBpbiBjb25maWdwYXJzZXIuSW50ZXJwb2xhdGlvbk1pc3NpbmdPcHRpb25FcnJvci4KLSAgUGF0Y2ggZnJvbSDFgXVrYXN6IExhbmdhLgorICBQYXRjaCBmcm9tIO+/vT91a2FzeiBMYW5nYS4KIAogLSBJc3N1ZSAjMjAzNjI6IEhvbm91ciBUZXN0Q2FzZS5sb25nTWVzc2FnZSBjb3JyZWN0bHkgaW4gYXNzZXJ0UmVnZXguCiAgIFBhdGNoIGZyb20gSWxpYSBLdXJlbmtvdi4KQEAgLTE3MTMsOSArMzI5NSw2IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzIyNTU4OiBBZGQgcmVtYWluaW5nIGRvYyBsaW5rcyB0byBzb3VyY2UgY29kZSBmb3IgUHl0aG9uLWNvZGVkIG1vZHVsZXMuCi0gIFBhdGNoIGJ5IFlvbmkgTGF2aS4KLQogLSBJc3N1ZSAjMTIwNjc6IFJld3JpdGUgQ29tcGFyaXNvbnMgc2VjdGlvbiBpbiB0aGUgRXhwcmVzc2lvbnMgY2hhcHRlciBvZiB0aGUKICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLiBTb21lIG9mIHRoZSBkZXRhaWxzIG9mIGNvbXBhcmluZyBtaXhlZCB0eXBlcyB3ZXJlCiAgIGluY29ycmVjdCBvciBhbWJpZ3VvdXMuIE5vdEltcGxlbWVudGVkIGlzIG9ubHkgcmVsZXZhbnQgYXQgYSBsb3dlciBsZXZlbApAQCAtMjA0NSwxMiArMzYyNCw2IEBACiAKIC0gSXNzdWUgIzI0NjMxOiBGaXhlZCByZWdyZXNzaW9uIGluIHRoZSB0aW1laXQgbW9kdWxlIHdpdGggbXVsdGlsaW5lIHNldHVwLgogCi0tIElzc3VlICMxODYyMjogdW5pdHRlc3QubW9jay5tb2NrX29wZW4oKS5yZXNldF9tb2NrIHdvdWxkIHJlY3Vyc2UgaW5maW5pdGVseS4KLSAgUGF0Y2ggZnJvbSBOaWNvbGEgUGFsdW1ibyBhbmQgTGF1cmVudCBEZSBCdXlzdC4KLQotLSBJc3N1ZSAjMjM2NjE6IHVuaXR0ZXN0Lm1vY2sgc2lkZV9lZmZlY3RzIGNhbiBub3cgYmUgZXhjZXB0aW9ucyBhZ2Fpbi4gVGhpcwotICB3YXMgYSByZWdyZXNzaW9uIHZzIFB5dGhvbiAzLjQuIFBhdGNoIGZyb20gSWduYWNpbyBSb3NzaQotCiAtIElzc3VlICMyNDYwODogY2h1bmsuQ2h1bmsucmVhZCgpIG5vdyBhbHdheXMgcmV0dXJucyBieXRlcywgbm90IHN0ci4KIAogLSBJc3N1ZSAjMTg2ODQ6IEZpeGVkIHJlYWRpbmcgb3V0IG9mIHRoZSBidWZmZXIgaW4gdGhlIHJlIG1vZHVsZS4KQEAgLTIwNjEsNiArMzYzNCw5IEBACiAtIElzc3VlICMxNTAxNDogU01UUC5hdXRoKCkgYW5kIFNNVFAubG9naW4oKSBub3cgc3VwcG9ydCBSRkMgNDk1NCdzIG9wdGlvbmFsCiAgIGluaXRpYWwtcmVzcG9uc2UgYXJndW1lbnQgdG8gdGhlIFNNVFAgQVVUSCBjb21tYW5kLgogCistIElzc3VlICM2NTQ5OiBSZW1vdmUgaHlwaGVuIGZyb20gdHRrLlN0eWxlKCkuZWxlbWVudCBvcHRpb25zLiAgT25seSByZXR1cm4gcmVzdWx0CisgIGZyb20gdHRrLlN0eWxlKCkuY29uZmlndXJlIGlmIGEgcmVzdWx0IHdhcyBnZW5lcmF0ZWQgb3IgYSBxdWVyeSBzdWJtaXR0ZWQuCisKIC0gSXNzdWUgIzI0NjY5OiBGaXggaW5zcGVjdC5nZXRzb3VyY2UoKSBmb3IgJ2FzeW5jIGRlZicgZnVuY3Rpb25zLgogICBQYXRjaCBieSBLYWkgR3JvbmVyLgogCkBAIC0yMDcyLDcgKzM2NDgsNiBAQAogLSBJc3N1ZSAjMjQ2MDM6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyBhbmQgT1MgWCAxMC41IGluc3RhbGxlciB0byB1c2UgT3BlblNTTAogICAxLjAuMmQuCiAKLQogV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjAgYmV0YSAzPwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC0yMjMzLDYgKzM4MDgsOSBAQAogLSBJc3N1ZSAjMjQyNjg6IFBFUCA0ODk6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCiAgIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCiAKKy0gSXNzdWUgIzIzMzU5OiBPcHRpbWl6ZSBzZXQgb2JqZWN0IGludGVybmFscyBieSBzcGVjaWFsaXppbmcgdGhlCisgIGhhc2ggdGFibGUgc2VhcmNoIGludG8gYSBsb29rdXAgZnVuY3Rpb24gYW5kIGFuIGluc2VydCBmdW5jdGlvbi4KKwogLSBJc3N1ZSAjMjM5NTU6IEFkZCBweXZlbnYuY2ZnIG9wdGlvbiB0byBzdXBwcmVzcyByZWdpc3RyeS9lbnZpcm9ubWVudAogICBsb29rdXAgZm9yIGdlbmVyYXRpbmcgc3lzLnBhdGggb24gV2luZG93cy4KIApAQCAtMjM1Myw4ICszOTMxLDggQEAKIC0gSXNzdWUgIzEzMjI6IHBsYXRmb3JtLmRpc3QoKSBhbmQgcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkgZnVuY3Rpb25zIGFyZQogICBub3cgZGVwcmVjYXRlZC4gIEluaXRpYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgogCi0tIElzc3VlICMyMjQ4NjogQWRkZWQgdGhlIG1hdGguZ2NkKCkgZnVuY3Rpb24uICBUaGUgZnJhY3Rpb25zLmdjZCgpIGZ1bmN0aW9uCi0gIG5vdyBpcyBkZXByZWNhdGVkLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBEaWNraW5zb24uCistIElzc3VlICMyMjQ4NjogQWRkZWQgdGhlIG1hdGguZ2NkKCkgZnVuY3Rpb24uICBUaGUgZnJhY3Rpb25zLmdjZCgpIGZ1bmN0aW9uIG5vdyBpcworICBkZXByZWNhdGVkLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBEaWNraW5zb24uCiAKIC0gSXNzdWUgIzI0MDY0OiBQcm9wZXJ0eSgpIGRvY3N0cmluZ3MgYXJlIG5vdyB3cml0ZWFibGUuCiAgIChQYXRjaCBieSBCZXJrZXIgUGVrc2FnLikKQEAgLTI3NzUsOCArNDM1Myw4IEBACiAgIHdyaXRlciBmYWlsZWQgaW4gQnVmZmVyZWRSV1BhaXIuY2xvc2UoKS4KIAogLSBJc3N1ZSAjMjM2MjI6IFVua25vd24gZXNjYXBlcyBpbiByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgY29uc2lzdCBvZiBgYCdcJ2BgCi0gIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4KLSAgUHl0aG9uIDMuNi4KKyAgYW5kIGFuIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbgorICBpbiBQeXRob24gMy42LgogCiAtIElzc3VlICMyMzY3MTogc3RyaW5nLlRlbXBsYXRlIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgInNlbGYiIHBhcmFtZXRlciBhcwogICBhIGtleXdvcmQgYXJndW1lbnQuICBzdHJpbmcuRm9ybWF0dGVyIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgInNlbGYiIGFuZApAQCAtMzUzNSw3ICs1MTEzLDcgQEAKICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFydGluIFBhbnRlci4KIAogLSBJc3N1ZSAjMTcyOTM6IHV1aWQuZ2V0bm9kZSgpIG5vdyBkZXRlcm1pbmVzIE1BQyBhZGRyZXNzIG9uIEFJWCB1c2luZyBuZXRzdGF0LgotICBCYXNlZCBvbiBwYXRjaCBieSBBaXZhcnMgS2FsdsSBbnMuCisgIEJhc2VkIG9uIHBhdGNoIGJ5IEFpdmFycyBLYWx277+9P25zLgogCiAtIElzc3VlICMyMjc2OTogRml4ZWQgdHRrLlRyZWV2aWV3LnRhZ19oYXMoKSB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KIApAQCAtNTk0MSw2ICs3NTE5LDkgQEAKIAogLSBJc3N1ZSAjMTkzNjk6IE9wdGltaXplZCB0aGUgdXNhZ2Ugb2YgX19sZW5ndGhfaGludF9fKCkuCiAKKy0gSXNzdWUgIzI4MDI2OiBSYWlzZSBJbXBvcnRFcnJvciB3aGVuIGV4ZWNfbW9kdWxlKCkgZXhpc3RzIGJ1dAorICBjcmVhdGVfbW9kdWxlKCkgaXMgbWlzc2luZy4KKwogLSBJc3N1ZSAjMTg2MDM6IEVuc3VyZSB0aGF0IFB5T1NfbXlzdHJpY21wIGFuZCBQeU9TX215c3RybmljbXAgYXJlIGluIHRoZQogICBQeXRob24gZXhlY3V0YWJsZSBhbmQgbm90IHJlbW92ZWQgYnkgdGhlIGxpbmtlcidzIG9wdGltaXplci4KIApAQCAtNjgyOCw2ICs4NDA5LDkgQEAKIC0gSXNzdWUgIzE2ODA5OiBUa2ludGVyJ3Mgc3BsaXRsaXN0KCkgYW5kIHNwbGl0KCkgbWV0aG9kcyBub3cgYWNjZXB0IFRjbF9PYmoKICAgYXJndW1lbnQuCiAKKy0gSXNzdWUgIzE3MjExOiBZaWVsZCBhIG5hbWVkdHVwbGUgaW4gcGtndXRpbC4KKyAgUGF0Y2ggYnkgUmFtY2hhbmRyYSBBcHRlLgorCiAtIElzc3VlICMxODMyNDogc2V0X3BheWxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIGJpbmFyeSBpbnB1dC4gIFRoaXMgYWxzbwogICBzdXBlcnNlZGVzIHRoZSBwcmV2aW91cyBmaXhlcyBmb3IgIzE0MzYwLCAjMTcxNywgYW5kICMxNjU2NC4KIApAQCAtNjgzNyw2ICs4NDIxLDggQEAKIC0gSXNzdWUgIzE3MTE5OiBGaXhlZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIHByb2Nlc3NpbmcgbGFyZ2Ugc3RyaW5ncyBhbmQgdHVwbGVzCiAgIGluIHRoZSB0a2ludGVyIG1vZHVsZS4KIAorLSBJc3N1ZSAjMTUzNTI6IFJlYnVpbGQgZnJvemVuIG1vZHVsZXMgd2hlbiBtYXJzaGFsLmMgaXMgY2hhbmdlZC4KKwogLSBJc3N1ZSAjMTg3NDc6IFJlLXNlZWQgT3BlblNTTCdzIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBhZnRlciBmb3JrLgogICBBIHB0aHJlYWRfYXRmb3JrKCkgcGFyZW50IGhhbmRsZXIgaXMgdXNlZCB0byBzZWVkIHRoZSBQUk5HIHdpdGggcGlkLCB0aW1lCiAgIGFuZCBzb21lIHN0YWNrIGRhdGEuCkBAIC03MDQ0LDYgKzg2MzAsOSBAQAogLSBJc3N1ZSAjMTgxMzc6IERldGVjdCBpbnRlZ2VyIG92ZXJmbG93IG9uIHByZWNpc2lvbiBpbiBmbG9hdC5fX2Zvcm1hdF9fKCkKICAgYW5kIGNvbXBsZXguX19mb3JtYXRfXygpLgogCistIElzc3VlICMxNTc2NzogSW50cm9kdWNlIE1vZHVsZU5vdEZvdW5kRXJyb3Igd2hpY2ggaXMgcmFpc2VkIHdoZW4gYSBtb2R1bGUKKyAgY291bGQgbm90IGJlIGZvdW5kLgorCiAtIElzc3VlICMxODE4MzogRml4IHZhcmlvdXMgdW5pY29kZSBvcGVyYXRpb25zIG9uIHN0cmluZ3Mgd2l0aCBsYXJnZSB1bmljb2RlCiAgIGNvZGVwb2ludHMuCiAKQEAgLTg5NjQsNiArMTA1NTMsMTAgQEAKICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgKGFuZCB0aHVzIGJ5IGV4dGVuc2lvbgogICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZSgpIGFuZCBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4KCkpLgogCistIElzc3VlICMxNTc2NzogQWRkZWQgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcygpLgorCistIFB5RXJyX1NldEltcG9ydEVycm9yKCkgbm93IHNldHMgVHlwZUVycm9yIHdoZW4gaXRzIG1zZyBhcmd1bWVudCBpcyBzZXQuCisKIC0gSXNzdWUgIzkzNjk6IFRoZSB0eXBlcyBvZiBgY2hhcipgIGFyZ3VtZW50cyBvZiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKSBhbmQKICAgUHlPYmplY3RfQ2FsbE1ldGhvZCgpIG5vdyBjaGFuZ2VkIHRvIGBjb25zdCBjaGFyKmAuICBCYXNlZCBvbiBwYXRjaGVzIGJ5CiAgIErDtnJnIE3DvGxsZXIgYW5kIExhcnMgQnVpdGluY2suCmRpZmYgLS1naXQgYS9NaXNjL1JFQURNRS52YWxncmluZCBiL01pc2MvUkVBRE1FLnZhbGdyaW5kCmluZGV4IGI1YTlhMzIuLjkwOGYxMzcgMTAwNjQ0Ci0tLSBhL01pc2MvUkVBRE1FLnZhbGdyaW5kCisrKyBiL01pc2MvUkVBRE1FLnZhbGdyaW5kCkBAIC0yLDYgKzIsOSBAQAogUHl0aG9uLiAgVmFsZ3JpbmQgaXMgdXNlZCBwZXJpb2RpY2FsbHkgYnkgUHl0aG9uIGRldmVsb3BlcnMgdG8gdHJ5CiB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1lbW9yeSBsZWFrcyBvciBpbnZhbGlkIG1lbW9yeSByZWFkcy93cml0ZXMuCiAKK1VQREFURTogUHl0aG9uIDMuNiBub3cgc3VwcG9ydHMgUFlUSE9OTUFMTE9DPW1hbGxvYyBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGljaAorY2FuIGJlIHVzZWQgdG8gZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSBtYWxsb2MoKSBhbGxvY2F0b3Igb2YgdGhlIEMgbGlicmFyeS4KKwogSWYgeW91IGRvbid0IHdhbnQgdG8gcmVhZCBhYm91dCB0aGUgZGV0YWlscyBvZiB1c2luZyBWYWxncmluZCwgdGhlcmUKIGFyZSBzdGlsbCB0d28gdGhpbmdzIHlvdSBtdXN0IGRvIHRvIHN1cHByZXNzIHRoZSB3YXJuaW5ncy4gIEZpcnN0LAogeW91IG11c3QgdXNlIGEgc3VwcHJlc3Npb25zIGZpbGUuICBPbmUgaXMgc3VwcGxpZWQgaW4KZGlmZiAtLWdpdCBhL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQgYi9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CmluZGV4IDMwMDQxNzQuLjgyZmEyM2UgMTAwNjQ0Ci0tLSBhL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKKysrIGIvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dApAQCAtNjUsOSArNjUsOSBAQAogICAgIHNpbXBseSBieSB2aXJ0dWUgb2YgYmVpbmcgaW4gdGhlIGxpc3QuCiAKIGVudnZhciBQWVRIT05EVU1QUkVGUwotICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgUHlfRmluYWxpemUoKSBhcnJhbmdlcyB0byBwcmludCBhIGxpc3Qgb2YgYWxsCisgICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBQeV9GaW5hbGl6ZUV4KCkgYXJyYW5nZXMgdG8gcHJpbnQgYSBsaXN0IG9mIGFsbAogICAgIHN0aWxsLWxpdmUgaGVhcCBvYmplY3RzLiAgVGhpcyBpcyBwcmludGVkIHR3aWNlLCBpbiBkaWZmZXJlbnQgZm9ybWF0cywKLSAgICBiZWZvcmUgYW5kIGFmdGVyIFB5X0ZpbmFsaXplIGhhcyBjbGVhbmVkIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuIGNsZWFuIHVwLiAgVGhlCisgICAgYmVmb3JlIGFuZCBhZnRlciBQeV9GaW5hbGl6ZUV4IGhhcyBjbGVhbmVkIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuIGNsZWFuIHVwLiAgVGhlCiAgICAgZmlyc3Qgb3V0cHV0IGJsb2NrIHByb2R1Y2VzIHRoZSByZXByKCkgb2YgZWFjaCBvYmplY3Qgc28gaXMgbW9yZQogICAgIGluZm9ybWF0aXZlOyBob3dldmVyLCBhIGxvdCBvZiBzdHVmZiBkZXN0aW5lZCB0byBkaWUgaXMgc3RpbGwgYWxpdmUgdGhlbi4KICAgICBUaGUgc2Vjb25kIG91dHB1dCBibG9jayBpcyBtdWNoIGhhcmRlciB0byB3b3JrIHdpdGggKHJlcHIoKSBjYW4ndCBiZSBpbnZva2VkCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAogZW52dmFyIFBZVEhPTk1BTExPQ1NUQVRTCiAgICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBhIHJlcG9ydCBvZiBweW1hbGxvYyBzdW1tYXJ5IHN0YXRpc3RpY3MgaXMgcHJpbnRlZCB0bwotICAgIHN0ZGVyciB3aGVuZXZlciBhIG5ldyBhcmVuYSBpcyBhbGxvY2F0ZWQsIGFuZCBhbHNvIGJ5IFB5X0ZpbmFsaXplKCkuCisgICAgc3RkZXJyIHdoZW5ldmVyIGEgbmV3IGFyZW5hIGlzIGFsbG9jYXRlZCwgYW5kIGFsc28gYnkgUHlfRmluYWxpemVFeCgpLgogCiBDaGFuZ2VkIGluIDIuNTogIFRoZSBudW1iZXIgb2YgZXh0cmEgYnl0ZXMgYWxsb2NhdGVkIGlzIDQqc2l6ZW9mKHNpemVfdCkuCiBCZWZvcmUgaXQgd2FzIDE2IG9uIGFsbCBib3hlcywgcmVmbGVjdGluZyB0aGF0IFB5dGhvbiBjb3VsZG4ndCBtYWtlIHVzZSBvZgpAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICovCiAgICAgaW50IHRwX21heGFsbG9jOwogCi1BbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBrZWVwcyB0aGVzZSBjb3VudHMgdXAgdG8gZGF0ZS4gIFB5X0ZpbmFsaXplKCkKK0FsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIGtlZXBzIHRoZXNlIGNvdW50cyB1cCB0byBkYXRlLiAgUHlfRmluYWxpemVFeCgpCiBkaXNwbGF5cyBhIHN1bW1hcnkgb2YgdGhlIGluZm8gcmV0dXJuZWQgYnkgc3lzLmdldGNvdW50cygpIChzZWUgYmVsb3cpLCBhbG9uZwogd2l0aCBhc3NvcnRlZCBvdGhlciBzcGVjaWFsIGFsbG9jYXRpb24gY291bnRzIChsaWtlIHRoZSBudW1iZXIgb2YgdHVwbGUKIGFsbG9jYXRpb25zIHNhdGlzZmllZCBieSBhIHR1cGxlIGZyZWUtbGlzdCwgdGhlIG51bWJlciBvZiAxLWNoYXJhY3RlciBzdHJpbmdzCkBAIC0yMzQsMjkgKzIzNCwzIEBACiBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgbWFkZS4gIEl0IGtlZXBzIGRldGFpbGVkIHN0YXRpc3RpY3MgYWJvdXQgd2hhdCBraW5kIG9mCiBvYmplY3Qgd2FzIGNhbGxlZCBhbmQgd2hldGhlciB0aGUgY2FsbCBoaXQgYW55IG9mIHRoZSBzcGVjaWFsIGZhc3QgcGF0aHMgaW4gdGhlCiBjb2RlLgotCi0KLVdJVEhfVFNDCi0tLS0tLS0tLQotCi1TdXBlci1sb3dsZXZlbCBwcm9maWxpbmcgb2YgdGhlIGludGVycHJldGVyLiAgV2hlbiBlbmFibGVkLCB0aGUgc3lzIG1vZHVsZSBncm93cwotYSBuZXcgZnVuY3Rpb246Ci0KLXNldHRzY2R1bXAoYm9vbCkKLSAgICBJZiB0cnVlLCB0ZWxsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgdG8gZHVtcCBWTSBtZWFzdXJlbWVudHMgdG8gc3RkZXJyLiAgSWYKLSAgICBmYWxzZSwgdHVybiBvZmYgZHVtcC4gIFRoZSBtZWFzdXJlbWVudHMgYXJlIGJhc2VkIG9uIHRoZSBwcm9jZXNzb3IncwotICAgIHRpbWUtc3RhbXAgY291bnRlci4KLQotVGhpcyBidWlsZCBvcHRpb24gcmVxdWlyZXMgYSBzbWFsbCBhbW91bnQgb2YgcGxhdGZvcm0gc3BlY2lmaWMgY29kZS4gIEN1cnJlbnRseQotdGhpcyBjb2RlIGlzIHByZXNlbnQgZm9yIGxpbnV4L3g4NiBhbmQgYW55IFBvd2VyUEMgcGxhdGZvcm0gdGhhdCB1c2VzIEdDQwotKGkuZS4gT1MgWCBhbmQgbGludXgvcHBjKS4KLQotT24gdGhlIFBvd2VyUEMgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIHRpbWUgYmFzZSByZWdpc3RlciBpcyBpbmNyZW1lbnRlZCBpcyBub3QKLWRlZmluZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpY2F0aW9uLCBzbyB5b3UnbGwgbmVlZCB0byBmaW5kIHRoZSBtYW51YWwgZm9yCi15b3VyIHNwZWNpZmljIHByb2Nlc3Nvci4gIEZvciB0aGUgNzUwQ1gsIDc1MENYZSBhbmQgNzUwRlggKGFsbCBzb2xkIGFzIHRoZSBHMykKLXdlIGZpbmQ6Ci0KLSAgICBUaGUgdGltZSBiYXNlIGNvdW50ZXIgaXMgY2xvY2tlZCBhdCBhIGZyZXF1ZW5jeSB0aGF0IGlzIG9uZS1mb3VydGggdGhhdCBvZgotICAgIHRoZSBidXMgY2xvY2suCi0KLVRoaXMgYnVpbGQgaXMgZW5hYmxlZCBieSB0aGUgLS13aXRoLXRzYyBmbGFnIHRvIGNvbmZpZ3VyZS4KZGlmZiAtLWdpdCBhL01pc2MvY292ZXJpdHlfbW9kZWwuYyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwppbmRleCA3NDlmMmYwLi4xYWU2MTc5IDEwMDY0NAotLS0gYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMKKysrIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCkBAIC0yMiw3ICsyMiw2IEBACiAjZGVmaW5lIGFzc2VydChvcCkgLyogZW1wdHkgKi8KIHR5cGVkZWYgaW50IHNkaWdpdDsKIHR5cGVkZWYgbG9uZyBQeV9zc2l6ZV90OwotdHlwZWRlZiBsb25nIGxvbmcgUFlfTE9OR19MT05HOwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB3Y2hhcl90OwogdHlwZWRlZiBzdHJ1Y3Qge30gUHlPYmplY3Q7CiB0eXBlZGVmIHN0cnVjdCB7fSBncmFtbWFyOwpAQCAtNjMsNyArNjIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HIGl2YWwpCitQeU9iamVjdCAqUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgaXZhbCkKIHsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWl2YWwpOwogfQpAQCAtOTQsNyArOTMsNyBAQAogfQogCiAvKiBQYXJzZXIvcGdlbm1haW4uYyAqLwotZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSkKK2dyYW1tYXIgKmdldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAgICAgZ3JhbW1hciAqZzsKICAgICBfX2NvdmVyaXR5X3RhaW50ZWRfZGF0YV9zaW5rX18oZmlsZW5hbWUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4gYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgppbmRleCBhZGFjMDMwLi42NDUwNTI4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgorKysgYi9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbgpAQCAtNiw4ICs2LDUgQEAKICMgVGhyZWFkaW5nCiBAVVNFX1RIUkVBRF9NT0RVTEVAX3RocmVhZCBfdGhyZWFkbW9kdWxlLmMKIAotIyBUaGUgc2lnbmFsIG1vZHVsZQotQFVTRV9TSUdOQUxfTU9EVUxFQF9zaWduYWwgc2lnbmFsbW9kdWxlLmMKLQogIyBUaGUgcmVzdCBvZiB0aGUgbW9kdWxlcyBwcmV2aW91c2x5IGxpc3RlZCBpbiB0aGlzIGZpbGUgYXJlIGJ1aWx0CiAjIGJ5IHRoZSBzZXR1cC5weSBzY3JpcHQgaW4gUHl0aG9uIDIuMSBhbmQgbGF0ZXIuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmRpc3QgYi9Nb2R1bGVzL1NldHVwLmRpc3QKaW5kZXggMDZiYTZhZC4uOGI4N2ZjOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5kaXN0CisrKyBiL01vZHVsZXMvU2V0dXAuZGlzdApAQCAtMTE3LDYgKzExNyw3IEBACiBfY29sbGVjdGlvbnMgX2NvbGxlY3Rpb25zbW9kdWxlLmMgIyBDb250YWluZXIgdHlwZXMKIGl0ZXJ0b29scyBpdGVydG9vbHNtb2R1bGUuYyAgICAjIEZ1bmN0aW9ucyBjcmVhdGluZyBpdGVyYXRvcnMgZm9yIGVmZmljaWVudCBsb29waW5nCiBhdGV4aXQgYXRleGl0bW9kdWxlLmMgICAgICAjIFJlZ2lzdGVyIGZ1bmN0aW9ucyB0byBiZSBydW4gYXQgaW50ZXJwcmV0ZXItc2h1dGRvd24KK19zaWduYWwgc2lnbmFsbW9kdWxlLmMKIF9zdGF0IF9zdGF0LmMJCQkjIHN0YXQuaCBpbnRlcmZhY2UKIHRpbWUgdGltZW1vZHVsZS5jCSMgLWxtICMgdGltZSBvcGVyYXRpb25zIGFuZCB2YXJpYWJsZXMKIApAQCAtMTgwLDYgKzE4MSw3IEBACiAjX2RhdGV0aW1lIF9kYXRldGltZW1vZHVsZS5jCSMgZGF0ZXRpbWUgYWNjZWxlcmF0b3IKICNfYmlzZWN0IF9iaXNlY3Rtb2R1bGUuYwkjIEJpc2VjdGlvbiBhbGdvcml0aG1zCiAjX2hlYXBxIF9oZWFwcW1vZHVsZS5jCSMgSGVhcCBxdWV1ZSBhbGdvcml0aG0KKyNfYXN5bmNpbyBfYXN5bmNpb21vZHVsZS5jICAjIEZhc3QgYXN5bmNpbyBGdXR1cmUKIAogI3VuaWNvZGVkYXRhIHVuaWNvZGVkYXRhLmMgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKIApAQCAtMjQ5LDYgKzI1MSw4IEBACiAjX3NoYTI1NiBzaGEyNTZtb2R1bGUuYwogI19zaGE1MTIgc2hhNTEybW9kdWxlLmMKIAorIyBfYmxha2UgbW9kdWxlCisjX2JsYWtlMiBfYmxha2UyL2JsYWtlMm1vZHVsZS5jIF9ibGFrZTIvYmxha2UyYl9pbXBsLmMgX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwogCiAjIFRoZSBfdGtpbnRlciBtb2R1bGUuCiAjCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19hc3luY2lvbW9kdWxlLmMgYi9Nb2R1bGVzL19hc3luY2lvbW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcyOThjYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2FzeW5jaW9tb2R1bGUuYwpAQCAtMCwwICsxLDEwNDAgQEAKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKworCisvKiBpZGVudGlmaWVycyB1c2VkIGZyb20gc29tZSBmdW5jdGlvbnMgKi8KK19QeV9JREVOVElGSUVSKGNhbGxfc29vbik7CisKKworLyogU3RhdGUgb2YgdGhlIF9hc3luY2lvIG1vZHVsZSAqLworc3RhdGljIFB5T2JqZWN0ICp0cmFjZWJhY2tfZXh0cmFjdF9zdGFjazsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19nZXRfZXZlbnRfbG9vcDsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19yZXByX2luZm9fZnVuYzsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvcjsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb19DYW5jZWxsZWRFcnJvcjsKKworCisvKiBHZXQgRnV0dXJlSXRlciBmcm9tIEZ1dHVyZSAqLworc3RhdGljIFB5T2JqZWN0KiBuZXdfZnV0dXJlX2l0ZXIoUHlPYmplY3QgKmZ1dCk7CisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTVEFURV9QRU5ESU5HLAorICAgIFNUQVRFX0NBTkNFTExFRCwKKyAgICBTVEFURV9GSU5JU0hFRAorfSBmdXRfc3RhdGU7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqZnV0X2xvb3A7CisgICAgUHlPYmplY3QgKmZ1dF9jYWxsYmFja3M7CisgICAgUHlPYmplY3QgKmZ1dF9leGNlcHRpb247CisgICAgUHlPYmplY3QgKmZ1dF9yZXN1bHQ7CisgICAgUHlPYmplY3QgKmZ1dF9zb3VyY2VfdGI7CisgICAgZnV0X3N0YXRlIGZ1dF9zdGF0ZTsKKyAgICBpbnQgZnV0X2xvZ190YjsKKyAgICBpbnQgZnV0X2Jsb2NraW5nOworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIFB5T2JqZWN0ICpmdXRfd2Vha3JlZmxpc3Q7Cit9IEZ1dHVyZU9iajsKKworCitzdGF0aWMgaW50Citfc2NoZWR1bGVfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0KiBpdGVyczsKKyAgICBpbnQgaTsKKworICAgIGlmIChmdXQtPmZ1dF9jYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiTlVMTCBjYWxsYmFja3MiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpdGVycyA9IFB5TGlzdF9HZXRTbGljZShmdXQtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbik7CisgICAgaWYgKGl0ZXJzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGZ1dC0+ZnV0X2NhbGxiYWNrcywgMCwgbGVuLCBOVUxMKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZXJzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaGFuZGxlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmNiID0gUHlMaXN0X0dFVF9JVEVNKGl0ZXJzLCBpKTsKKworICAgICAgICBoYW5kbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZnV0LT5mdXRfbG9vcCwgJlB5SWRfY2FsbF9zb29uLCAiT08iLCBjYiwgZnV0LCBOVUxMKTsKKworICAgICAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZU9ial9pbml0KEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJsb29wIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmxvb3AgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGdldF9kZWJ1Zyk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifCRPIiwga3dsaXN0LCAmbG9vcCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobG9vcCA9PSBOVUxMIHx8IGxvb3AgPT0gUHlfTm9uZSkgeworICAgICAgICBsb29wID0gUHlPYmplY3RfQ2FsbE9iamVjdChhc3luY2lvX2dldF9ldmVudF9sb29wLCBOVUxMKTsKKyAgICAgICAgaWYgKGxvb3AgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYobG9vcCk7CisgICAgfQorICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2xvb3ApOworICAgIGZ1dC0+ZnV0X2xvb3AgPSBsb29wOworCisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmdXQtPmZ1dF9sb29wLCAmUHlJZF9nZXRfZGVidWcsICIoKSIsIE5VTEwpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9Jc1RydWUocmVzKSkgeworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgICAgICBmdXQtPmZ1dF9zb3VyY2VfdGIgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHRyYWNlYmFja19leHRyYWN0X3N0YWNrLCBOVUxMKTsKKyAgICAgICAgaWYgKGZ1dC0+ZnV0X3NvdXJjZV90YiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgfQorCisgICAgZnV0LT5mdXRfY2FsbGJhY2tzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoZnV0LT5mdXRfY2FsbGJhY2tzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorRnV0dXJlT2JqX2NsZWFyKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2xvb3ApOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9leGNlcHRpb24pOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X3NvdXJjZV90Yik7CisgICAgUHlfQ0xFQVIoZnV0LT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorRnV0dXJlT2JqX3RyYXZlcnNlKEZ1dHVyZU9iaiAqZnV0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9sb29wKTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X3Jlc3VsdCk7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9zb3VyY2VfdGIpOworICAgIFB5X1ZJU0lUKGZ1dC0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihweWRvY19yZXN1bHQsCisgICAgIlJldHVybiB0aGUgcmVzdWx0IHRoaXMgZnV0dXJlIHJlcHJlc2VudHMuXG4iCisgICAgIlxuIgorICAgICJJZiB0aGUgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmFpc2VzIENhbmNlbGxlZEVycm9yLiAgSWYgdGhlXG4iCisgICAgImZ1dHVyZSdzIHJlc3VsdCBpc24ndCB5ZXQgYXZhaWxhYmxlLCByYWlzZXMgSW52YWxpZFN0YXRlRXJyb3IuICBJZlxuIgorICAgICJ0aGUgZnV0dXJlIGlzIGRvbmUgYW5kIGhhcyBhbiBleGNlcHRpb24gc2V0LCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9yZXN1bHQoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19DYW5jZWxsZWRFcnJvciwgIiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfRklOSVNIRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsICJSZXN1bHQgaXMgbm90IHJlYWR5LiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9sb2dfdGIgPSAwOworICAgIGlmIChmdXQtPmZ1dF9leGNlcHRpb24gIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqdHlwZSA9IE5VTEw7CisgICAgICAgIHR5cGUgPSBQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgICAgIFB5RXJyX1NldE9iamVjdCh0eXBlLCBmdXQtPmZ1dF9leGNlcHRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICByZXR1cm4gZnV0LT5mdXRfcmVzdWx0OworfQorCitQeURvY19TVFJWQVIocHlkb2NfZXhjZXB0aW9uLAorICAgICJSZXR1cm4gdGhlIGV4Y2VwdGlvbiB0aGF0IHdhcyBzZXQgb24gdGhpcyBmdXR1cmUuXG4iCisgICAgIlxuIgorICAgICJUaGUgZXhjZXB0aW9uIChvciBOb25lIGlmIG5vIGV4Y2VwdGlvbiB3YXMgc2V0KSBpcyByZXR1cm5lZCBvbmx5IGlmXG4iCisgICAgInRoZSBmdXR1cmUgaXMgZG9uZS4gIElmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXNcbiIKKyAgICAiQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGUgZnV0dXJlIGlzbid0IGRvbmUgeWV0LCByYWlzZXNcbiIKKyAgICAiSW52YWxpZFN0YXRlRXJyb3IuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9leGNlcHRpb24oRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19DYW5jZWxsZWRFcnJvciwgIiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfRklOSVNIRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsICJSZXN1bHQgaXMgbm90IHJlYWR5LiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfZXhjZXB0aW9uICE9IE5VTEwpIHsKKyAgICAgICAgZnV0LT5mdXRfbG9nX3RiID0gMDsKKyAgICAgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBmdXQtPmZ1dF9leGNlcHRpb247CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihweWRvY19zZXRfcmVzdWx0LAorICAgICJNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGl0cyByZXN1bHQuXG4iCisgICAgIlxuIgorICAgICJJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzXG4iCisgICAgIkludmFsaWRTdGF0ZUVycm9yLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfc2V0X3Jlc3VsdChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKnJlcykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgImludmFsaWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgZnV0LT5mdXRfcmVzdWx0ID0gcmVzOworICAgIGZ1dC0+ZnV0X3N0YXRlID0gU1RBVEVfRklOSVNIRUQ7CisKKyAgICBpZiAoX3NjaGVkdWxlX2NhbGxiYWNrcyhmdXQpID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZG9jX3NldF9leGNlcHRpb24sCisgICAgIk1hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgYW4gZXhjZXB0aW9uLlxuIgorICAgICJcbiIKKyAgICAiSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHJhaXNlc1xuIgorICAgICJJbnZhbGlkU3RhdGVFcnJvci4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX3NldF9leGNlcHRpb24oRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICpleGMpCit7CisgICAgUHlPYmplY3QgKmV4Y192YWwgPSBOVUxMOworCisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsICJpbnZhbGlkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeUV4Y2VwdGlvbkNsYXNzX0NoZWNrKGV4YykpIHsKKyAgICAgICAgZXhjX3ZhbCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZXhjLCBOVUxMKTsKKyAgICAgICAgaWYgKGV4Y192YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGV4Y192YWwgPSBleGM7CisgICAgICAgIFB5X0lOQ1JFRihleGNfdmFsKTsKKyAgICB9CisgICAgaWYgKCFQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKGV4Y192YWwpKSB7CisgICAgICAgIFB5X0RFQ1JFRihleGNfdmFsKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgZXhjZXB0aW9uIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKChQeU9iamVjdCopUHlfVFlQRShleGNfdmFsKSA9PSBQeUV4Y19TdG9wSXRlcmF0aW9uKSB7CisgICAgICAgIFB5X0RFQ1JFRihleGNfdmFsKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uIGludGVyYWN0cyBiYWRseSB3aXRoIGdlbmVyYXRvcnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBjYW5ub3QgYmUgcmFpc2VkIGludG8gYSBGdXR1cmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZnV0LT5mdXRfZXhjZXB0aW9uID0gZXhjX3ZhbDsKKyAgICBmdXQtPmZ1dF9zdGF0ZSA9IFNUQVRFX0ZJTklTSEVEOworCisgICAgaWYgKF9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9sb2dfdGIgPSAxOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIocHlkb2NfYWRkX2RvbmVfY2FsbGJhY2ssCisgICAgIkFkZCBhIGNhbGxiYWNrIHRvIGJlIHJ1biB3aGVuIHRoZSBmdXR1cmUgYmVjb21lcyBkb25lLlxuIgorICAgICJcbiIKKyAgICAiVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IC0gdGhlIGZ1dHVyZSBvYmplY3QuIElmXG4iCisgICAgInRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBpcyBjYWxsZWQsIHRoZSBjYWxsYmFjayBpc1xuIgorICAgICJzY2hlZHVsZWQgd2l0aCBjYWxsX3Nvb24uIjsKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfYWRkX2RvbmVfY2FsbGJhY2soRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlPYmplY3QgKmhhbmRsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBmdXQtPmZ1dF9sb29wLCAmUHlJZF9jYWxsX3Nvb24sICJPTyIsIGFyZywgZnV0LCBOVUxMKTsKKworICAgICAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKGhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCBlcnIgPSBQeUxpc3RfQXBwZW5kKGZ1dC0+ZnV0X2NhbGxiYWNrcywgYXJnKTsKKyAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZG9jX3JlbW92ZV9kb25lX2NhbGxiYWNrLAorICAgICJSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhIGNhbGxiYWNrIGZyb20gdGhlIFwiY2FsbCB3aGVuIGRvbmVcIiBsaXN0LlxuIgorICAgICJcbiIKKyAgICAiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNhbGxiYWNrcyByZW1vdmVkLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfcmVtb3ZlX2RvbmVfY2FsbGJhY2soRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKm5ld2xpc3Q7CisgICAgUHlfc3NpemVfdCBsZW4sIGksIGo9MDsKKworICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KDApOworICAgIH0KKworICAgIG5ld2xpc3QgPSBQeUxpc3RfTmV3KGxlbik7CisgICAgaWYgKG5ld2xpc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaW50IHJldDsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeUxpc3RfR0VUX0lURU0oZnV0LT5mdXRfY2FsbGJhY2tzLCBpKTsKKworICAgICAgICBpZiAoKHJldCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChhcmcsIGl0ZW0sIFB5X0VRKSkgPCAwKSB7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldCA9PSAwKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obmV3bGlzdCwgaiwgaXRlbSk7CisgICAgICAgICAgICBqKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKG5ld2xpc3QsIGosIGxlbiwgTlVMTCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgaWYgKFB5TGlzdF9TZXRTbGljZShmdXQtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbiwgbmV3bGlzdCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgUHlfREVDUkVGKG5ld2xpc3QpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuIC0gaik7CisKK2ZhaWw6CisgICAgUHlfREVDUkVGKG5ld2xpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIocHlkb2NfY2FuY2VsLAorICAgICJDYW5jZWwgdGhlIGZ1dHVyZSBhbmQgc2NoZWR1bGUgY2FsbGJhY2tzLlxuIgorICAgICJcbiIKKyAgICAiSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgb3IgY2FuY2VsbGVkLCByZXR1cm4gRmFsc2UuICBPdGhlcndpc2UsXG4iCisgICAgImNoYW5nZSB0aGUgZnV0dXJlJ3Mgc3RhdGUgdG8gY2FuY2VsbGVkLCBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZFxuIgorICAgICJyZXR1cm4gVHJ1ZS4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2NhbmNlbChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorICAgIGZ1dC0+ZnV0X3N0YXRlID0gU1RBVEVfQ0FOQ0VMTEVEOworCisgICAgaWYgKF9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fVFJVRTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZG9jX2NhbmNlbGxlZCwgIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgd2FzIGNhbmNlbGxlZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9jYW5jZWxsZWQoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihweWRvY19kb25lLAorICAgICJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIGlzIGRvbmUuXG4iCisgICAgIlxuIgorICAgICJEb25lIG1lYW5zIGVpdGhlciB0aGF0IGEgcmVzdWx0IC8gZXhjZXB0aW9uIGFyZSBhdmFpbGFibGUsIG9yIHRoYXQgdGhlXG4iCisgICAgImZ1dHVyZSB3YXMgY2FuY2VsbGVkLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZG9uZShGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgPT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2Jsb2NraW5nKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9ibG9ja2luZykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZU9ial9zZXRfYmxvY2tpbmcoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICp2YWwpCit7CisgICAgaW50IGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUodmFsKTsKKyAgICBpZiAoaXNfdHJ1ZSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBmdXQtPmZ1dF9ibG9ja2luZyA9IGlzX3RydWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2xvZ190cmFjZWJhY2soRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2xvZ190YikgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2xvb3AoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2xvb3AgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2xvb3ApOworICAgIHJldHVybiBmdXQtPmZ1dF9sb29wOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9jYWxsYmFja3MoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2NhbGxiYWNrcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfY2FsbGJhY2tzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9yZXN1bHQoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3Jlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICByZXR1cm4gZnV0LT5mdXRfcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9leGNlcHRpb24oRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2V4Y2VwdGlvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfZXhjZXB0aW9uOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9zb3VyY2VfdHJhY2ViYWNrKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9zb3VyY2VfdGIgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X3NvdXJjZV90Yik7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X3NvdXJjZV90YjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfc3RhdGUoRnV0dXJlT2JqICpmdXQpCit7CisgICAgX1B5X0lERU5USUZJRVIoUEVORElORyk7CisgICAgX1B5X0lERU5USUZJRVIoQ0FOQ0VMTEVEKTsKKyAgICBfUHlfSURFTlRJRklFUihGSU5JU0hFRCk7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKGZ1dC0+ZnV0X3N0YXRlKSB7CisgICAgY2FzZSBTVEFURV9QRU5ESU5HOgorICAgICAgICByZXQgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9QRU5ESU5HKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVEFURV9DQU5DRUxMRUQ6CisgICAgICAgIHJldCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX0NBTkNFTExFRCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVEVfRklOSVNIRUQ6CisgICAgICAgIHJldCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX0ZJTklTSEVEKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0ICgwKTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHJldCk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIFB5T2JqZWN0KgorRnV0dXJlT2JqX19yZXByX2luZm8oRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGFzeW5jaW9fcmVwcl9pbmZvX2Z1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlMaXN0X05ldygwKTsKKyAgICB9CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYXN5bmNpb19yZXByX2luZm9fZnVuYywgZnV0LCBOVUxMKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9yZXByKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIF9QeV9JREVOVElGSUVSKF9yZXByX2luZm8pOworCisgICAgUHlPYmplY3QgKl9yZXByX2luZm8gPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fcmVwcl9pbmZvKTsgIC8vIGJvcnJvd2VkCisgICAgaWYgKF9yZXByX2luZm8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqcmluZm8gPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncygoUHlPYmplY3QqKWZ1dCwgX3JlcHJfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAocmluZm8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqc3AgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiICIpOworICAgIGlmIChzcCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihyaW5mbyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpyaW5mb19zID0gUHlVbmljb2RlX0pvaW4oc3AsIHJpbmZvKTsKKyAgICBQeV9ERUNSRUYoc3ApOworICAgIFB5X0RFQ1JFRihyaW5mbyk7CisgICAgaWYgKHJpbmZvX3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqcnN0ciA9IE5VTEw7CisgICAgUHlPYmplY3QgKnR5cGVfbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKGZ1dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIik7CisgICAgaWYgKHR5cGVfbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIHJzdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVTICVTPiIsIHR5cGVfbmFtZSwgcmluZm9fcyk7CisgICAgICAgIFB5X0RFQ1JFRih0eXBlX25hbWUpOworICAgIH0KKyAgICBQeV9ERUNSRUYocmluZm9fcyk7CisgICAgcmV0dXJuIHJzdHI7Cit9CisKK3N0YXRpYyB2b2lkCitGdXR1cmVPYmpfZmluYWxpemUoRnV0dXJlT2JqICpmdXQpCit7CisgICAgX1B5X0lERU5USUZJRVIoY2FsbF9leGNlcHRpb25faGFuZGxlcik7CisgICAgX1B5X0lERU5USUZJRVIobWVzc2FnZSk7CisgICAgX1B5X0lERU5USUZJRVIoZXhjZXB0aW9uKTsKKyAgICBfUHlfSURFTlRJRklFUihmdXR1cmUpOworICAgIF9QeV9JREVOVElGSUVSKHNvdXJjZV90cmFjZWJhY2spOworCisgICAgaWYgKCFmdXQtPmZ1dF9sb2dfdGIpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZnV0LT5mdXRfZXhjZXB0aW9uICE9IE5VTEwpOworICAgIGZ1dC0+ZnV0X2xvZ190YiA9IDA7OworCisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0eXBlX25hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICptZXNzYWdlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisKKyAgICBjb250ZXh0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIHR5cGVfbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKGZ1dCksICJfX25hbWVfXyIpOworICAgIGlmICh0eXBlX25hbWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiJVMgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWQiLCB0eXBlX25hbWUpOworICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9tZXNzYWdlLCBtZXNzYWdlKSA8IDAgfHwKKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfZXhjZXB0aW9uLCBmdXQtPmZ1dF9leGNlcHRpb24pIDwgMCB8fAorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9mdXR1cmUsIChQeU9iamVjdCopZnV0KSA8IDApIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBpZiAoZnV0LT5mdXRfc291cmNlX3RiICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX3NvdXJjZV90cmFjZWJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXQtPmZ1dF9zb3VyY2VfdGIpIDwgMCkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnV0LT5mdXRfbG9vcCwgJlB5SWRfY2FsbF9leGNlcHRpb25faGFuZGxlcik7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgY29udGV4dCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZ1bmMpOworICAgICAgICB9CisgICAgfQorCitmaW5hbGx5OgorICAgIFB5X0NMRUFSKGNvbnRleHQpOworICAgIFB5X0NMRUFSKHR5cGVfbmFtZSk7CisgICAgUHlfQ0xFQVIobWVzc2FnZSk7CisgICAgUHlfQ0xFQVIoZnVuYyk7CisgICAgUHlfQ0xFQVIocmVzKTsKKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBGdXR1cmVUeXBlX2FzX2FzeW5jID0geworICAgICh1bmFyeWZ1bmMpbmV3X2Z1dHVyZV9pdGVyLCAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIEZ1dHVyZVR5cGVfbWV0aG9kc1tdID0geworICAgIHsiX3JlcHJfaW5mbyIsIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfX3JlcHJfaW5mbywgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHsiYWRkX2RvbmVfY2FsbGJhY2siLAorICAgICAgICAoUHlDRnVuY3Rpb24pRnV0dXJlT2JqX2FkZF9kb25lX2NhbGxiYWNrLAorICAgICAgICBNRVRIX08sIHB5ZG9jX2FkZF9kb25lX2NhbGxiYWNrfSwKKyAgICB7InJlbW92ZV9kb25lX2NhbGxiYWNrIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9yZW1vdmVfZG9uZV9jYWxsYmFjaywKKyAgICAgICAgTUVUSF9PLCBweWRvY19yZW1vdmVfZG9uZV9jYWxsYmFja30sCisgICAgeyJzZXRfcmVzdWx0IiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9zZXRfcmVzdWx0LCBNRVRIX08sIHB5ZG9jX3NldF9yZXN1bHR9LAorICAgIHsic2V0X2V4Y2VwdGlvbiIsCisgICAgICAgIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfc2V0X2V4Y2VwdGlvbiwgTUVUSF9PLCBweWRvY19zZXRfZXhjZXB0aW9ufSwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfY2FuY2VsLCBNRVRIX05PQVJHUywgcHlkb2NfY2FuY2VsfSwKKyAgICB7ImNhbmNlbGxlZCIsCisgICAgICAgIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfY2FuY2VsbGVkLCBNRVRIX05PQVJHUywgcHlkb2NfY2FuY2VsbGVkfSwKKyAgICB7ImRvbmUiLCAoUHlDRnVuY3Rpb24pRnV0dXJlT2JqX2RvbmUsIE1FVEhfTk9BUkdTLCBweWRvY19kb25lfSwKKyAgICB7InJlc3VsdCIsIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfcmVzdWx0LCBNRVRIX05PQVJHUywgcHlkb2NfcmVzdWx0fSwKKyAgICB7ImV4Y2VwdGlvbiIsCisgICAgICAgIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfZXhjZXB0aW9uLCBNRVRIX05PQVJHUywgcHlkb2NfZXhjZXB0aW9ufSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlHZXRTZXREZWYgRnV0dXJlVHlwZV9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJfc3RhdGUiLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfc3RhdGUsIE5VTEwsIE5VTEx9LAorICAgIHsiX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2Jsb2NraW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRlcilGdXR1cmVPYmpfc2V0X2Jsb2NraW5nLCBOVUxMfSwKKyAgICB7Il9sb29wIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2xvb3AsIE5VTEwsIE5VTEx9LAorICAgIHsiX2NhbGxiYWNrcyIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9jYWxsYmFja3MsIE5VTEwsIE5VTEx9LAorICAgIHsiX3Jlc3VsdCIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9yZXN1bHQsIE5VTEwsIE5VTEx9LAorICAgIHsiX2V4Y2VwdGlvbiIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9leGNlcHRpb24sIE5VTEwsIE5VTEx9LAorICAgIHsiX2xvZ190cmFjZWJhY2siLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfbG9nX3RyYWNlYmFjaywgTlVMTCwgTlVMTH0sCisgICAgeyJfc291cmNlX3RyYWNlYmFjayIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9zb3VyY2VfdHJhY2ViYWNrLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyB2b2lkIEZ1dHVyZU9ial9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBGdXR1cmVUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKQorICAgICJfYXN5bmNpby5GdXR1cmUiLAorICAgIHNpemVvZihGdXR1cmVPYmopLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgLnRwX2RlYWxsb2MgPSBGdXR1cmVPYmpfZGVhbGxvYywKKyAgICAudHBfYXNfYXN5bmMgPSAmRnV0dXJlVHlwZV9hc19hc3luYywKKyAgICAudHBfcmVwciA9IChyZXByZnVuYylGdXR1cmVPYmpfcmVwciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLAorICAgIC50cF9kb2MgPSAiRmFzdCBhc3luY2lvLkZ1dHVyZSBpbXBsZW1lbnRhdGlvbi4iLAorICAgIC50cF90cmF2ZXJzZSA9ICh0cmF2ZXJzZXByb2MpRnV0dXJlT2JqX3RyYXZlcnNlLAorICAgIC50cF9jbGVhciA9IChpbnF1aXJ5KUZ1dHVyZU9ial9jbGVhciwKKyAgICAudHBfd2Vha2xpc3RvZmZzZXQgPSBvZmZzZXRvZihGdXR1cmVPYmosIGZ1dF93ZWFrcmVmbGlzdCksCisgICAgLnRwX2l0ZXIgPSAoZ2V0aXRlcmZ1bmMpbmV3X2Z1dHVyZV9pdGVyLAorICAgIC50cF9tZXRob2RzID0gRnV0dXJlVHlwZV9tZXRob2RzLAorICAgIC50cF9nZXRzZXQgPSBGdXR1cmVUeXBlX2dldHNldGxpc3QsCisgICAgLnRwX2RpY3RvZmZzZXQgPSBvZmZzZXRvZihGdXR1cmVPYmosIGRpY3QpLAorICAgIC50cF9pbml0ID0gKGluaXRwcm9jKUZ1dHVyZU9ial9pbml0LAorICAgIC50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldywKKyAgICAudHBfZmluYWxpemUgPSAoZGVzdHJ1Y3RvcilGdXR1cmVPYmpfZmluYWxpemUsCit9OworCitzdGF0aWMgdm9pZAorRnV0dXJlT2JqX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCit7CisgICAgRnV0dXJlT2JqICpmdXQgPSAoRnV0dXJlT2JqICopc2VsZjsKKworICAgIGlmIChQeV9UWVBFKGZ1dCkgPT0gJkZ1dHVyZVR5cGUpIHsKKyAgICAgICAgLyogV2hlbiBmdXQgaXMgc3ViY2xhc3Mgb2YgRnV0dXJlLCBmaW5hbGl6ZXIgaXMgY2FsbGVkIGZyb20KKyAgICAgICAgICogc3VidHlwZV9kZWFsbG9jLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhzZWxmKSA8IDApIHsKKyAgICAgICAgICAgIC8vIHJlc3VycmVjdGVkLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZ1dC0+ZnV0X3dlYWtyZWZsaXN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcyhzZWxmKTsKKyAgICB9CisKKyAgICBGdXR1cmVPYmpfY2xlYXIoZnV0KTsKKyAgICBQeV9UWVBFKGZ1dCktPnRwX2ZyZWUoZnV0KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKiogRnV0dXJlIEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEZ1dHVyZU9iaiAqZnV0dXJlOworfSBmdXR1cmVpdGVyb2JqZWN0OworCitzdGF0aWMgdm9pZAorRnV0dXJlSXRlcl9kZWFsbG9jKGZ1dHVyZWl0ZXJvYmplY3QgKml0KQoreworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGl0KTsKKyAgICBQeV9YREVDUkVGKGl0LT5mdXR1cmUpOworICAgIFB5T2JqZWN0X0dDX0RlbChpdCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX2l0ZXJuZXh0KGZ1dHVyZWl0ZXJvYmplY3QgKml0KQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgRnV0dXJlT2JqICpmdXQgPSBpdC0+ZnV0dXJlOworCisgICAgaWYgKGZ1dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSA9PSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIGlmICghZnV0LT5mdXRfYmxvY2tpbmcpIHsKKyAgICAgICAgICAgIGZ1dC0+ZnV0X2Jsb2NraW5nID0gMTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihmdXQpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWZ1dDsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAieWllbGQgZnJvbSB3YXNuJ3QgdXNlZCB3aXRoIGZ1dHVyZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSBGdXR1cmVPYmpfcmVzdWx0KGZ1dCwgTlVMTCk7CisgICAgaWYgKHJlcyAhPSBOVUxMKSB7CisgICAgICAgIC8qIFRoZSByZXN1bHQgb2YgdGhlIEZ1dHVyZSBpcyBub3QgYW4gZXhjZXB0aW9uLgorCisgICAgICAgICAgIFdlIGNvbnN0cnVjdCBhbiBleGNlcHRpb24gaW5zdGFuY2UgbWFudWFsbHkgd2l0aAorICAgICAgICAgICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzIGFuZCBwYXNzIGl0IHRvIFB5RXJyX1NldE9iamVjdAorICAgICAgICAgICAoc2ltaWxhcmx5IHRvIHdoYXQgZ2Vub2JqZWN0LmMgZG9lcykuCisKKyAgICAgICAgICAgV2UgZG8gdGhpcyB0byBoYW5kbGUgYSBzaXR1YXRpb24gd2hlbiAicmVzIiBpcyBhIHR1cGxlLCBpbiB3aGljaAorICAgICAgICAgICBjYXNlIFB5RXJyX1NldE9iamVjdCB3b3VsZCBzZXQgdGhlIHZhbHVlIG9mIFN0b3BJdGVyYXRpb24gdG8KKyAgICAgICAgICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlLgorCisgICAgICAgICAgIChTZWUgUHlFcnJfU2V0T2JqZWN0L19QeUVycl9DcmVhdGVFeGNlcHRpb24gY29kZSBmb3IgZGV0YWlscy4pCisgICAgICAgICovCisgICAgICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgICAgIFB5RXhjX1N0b3BJdGVyYXRpb24sIHJlcywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CisgICAgICAgIFB5X0RFQ1JFRihlKTsKKyAgICB9CisKKyAgICBpdC0+ZnV0dXJlID0gTlVMTDsKKyAgICBQeV9ERUNSRUYoZnV0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfc2VuZChmdXR1cmVpdGVyb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChhcmcgIT0gUHlfTm9uZSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSBGdXR1cmVJdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gRnV0dXJlSXRlcl9pdGVybmV4dChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfdGhyb3coZnV0dXJlaXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnR5cGU9TlVMTCwgKnZhbD1OVUxMLCAqdGI9TlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T08iLCAmdHlwZSwgJnZhbCwgJnRiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmFsID09IFB5X05vbmUpIHsKKyAgICAgICAgdmFsID0gTlVMTDsKKyAgICB9CisgICAgaWYgKHRiID09IFB5X05vbmUpIHsKKyAgICAgICAgdGIgPSBOVUxMOworICAgIH0KKworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisKKyAgICBpZiAodGIgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9SZXN0b3JlKHR5cGUsIHZhbCwgdGIpOworICAgIH0KKyAgICBlbHNlIGlmICh2YWwgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRPYmplY3QodHlwZSwgdmFsKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeUV4Y2VwdGlvbkNsYXNzX0NoZWNrKHR5cGUpKSB7CisgICAgICAgICAgICB2YWwgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHR5cGUsIE5VTEwpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFsID0gdHlwZTsKKyAgICAgICAgICAgIGFzc2VydCAoUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWwpKTsKKyAgICAgICAgICAgIHR5cGUgPSAoUHlPYmplY3QqKVB5X1RZUEUodmFsKTsKKyAgICAgICAgICAgIGFzc2VydCAoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSk7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIHZhbCk7CisgICAgfQorICAgIHJldHVybiBGdXR1cmVJdGVyX2l0ZXJuZXh0KHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlSXRlcl9jbG9zZShmdXR1cmVpdGVyb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZUl0ZXJfdHJhdmVyc2UoZnV0dXJlaXRlcm9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGl0LT5mdXR1cmUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgRnV0dXJlSXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3NlbmQsIE1FVEhfTywgTlVMTH0sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3Rocm93LCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pRnV0dXJlSXRlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRnV0dXJlSXRlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApCisgICAgIl9hc3luY2lvLkZ1dHVyZUl0ZXIiLAorICAgIHNpemVvZihmdXR1cmVpdGVyb2JqZWN0KSwgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKUZ1dHVyZUl0ZXJfZGVhbGxvYywgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylGdXR1cmVJdGVyX3RyYXZlcnNlLCAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpRnV0dXJlSXRlcl9pdGVybmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBGdXR1cmVJdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCituZXdfZnV0dXJlX2l0ZXIoUHlPYmplY3QgKmZ1dCkKK3sKKyAgICBmdXR1cmVpdGVyb2JqZWN0ICppdDsKKworICAgIGlmICghUHlPYmplY3RfVHlwZUNoZWNrKGZ1dCwgJkZ1dHVyZVR5cGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaXQgPSBQeU9iamVjdF9HQ19OZXcoZnV0dXJlaXRlcm9iamVjdCwgJkZ1dHVyZUl0ZXJUeXBlKTsKKyAgICBpZiAoaXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dCk7CisgICAgaXQtPmZ1dHVyZSA9IChGdXR1cmVPYmoqKWZ1dDsKKyAgICBQeU9iamVjdF9HQ19UcmFjayhpdCk7CisgICAgcmV0dXJuIChQeU9iamVjdCopaXQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKiBNb2R1bGUgKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQKK2luaXRfbW9kdWxlKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7CisKKyAgICBtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInRyYWNlYmFjayIpOworICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIC8vIG5ldyByZWZlcmVuY2UKKyAgICB0cmFjZWJhY2tfZXh0cmFjdF9zdGFjayA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCAiZXh0cmFjdF9zdGFjayIpOworICAgIGlmICh0cmFjZWJhY2tfZXh0cmFjdF9zdGFjayA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgUHlfREVDUkVGKG1vZHVsZSk7CisKKyAgICBtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImFzeW5jaW8uZXZlbnRzIik7CisgICAgaWYgKG1vZHVsZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgYXN5bmNpb19nZXRfZXZlbnRfbG9vcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCAiZ2V0X2V2ZW50X2xvb3AiKTsKKyAgICBpZiAoYXN5bmNpb19nZXRfZXZlbnRfbG9vcCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgUHlfREVDUkVGKG1vZHVsZSk7CisKKyAgICBtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImFzeW5jaW8uZnV0dXJlcyIpOworICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGFzeW5jaW9fcmVwcl9pbmZvX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX2Z1dHVyZV9yZXByX2luZm8iKTsKKyAgICBpZiAoYXN5bmNpb19yZXByX2luZm9fZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWRTdGF0ZUVycm9yIik7CisgICAgaWYgKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgYXN5bmNpb19DYW5jZWxsZWRFcnJvciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCAiQ2FuY2VsbGVkRXJyb3IiKTsKKyAgICBpZiAoYXN5bmNpb19DYW5jZWxsZWRFcnJvciA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYobW9kdWxlKTsKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBQeV9DTEVBUih0cmFjZWJhY2tfZXh0cmFjdF9zdGFjayk7CisgICAgUHlfQ0xFQVIoYXN5bmNpb19nZXRfZXZlbnRfbG9vcCk7CisgICAgUHlfQ0xFQVIoYXN5bmNpb19yZXByX2luZm9fZnVuYyk7CisgICAgUHlfQ0xFQVIoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvcik7CisgICAgUHlfQ0xFQVIoYXN5bmNpb19DYW5jZWxsZWRFcnJvcik7CisgICAgUHlfQ0xFQVIobW9kdWxlKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKworUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsICJBY2NlbGVyYXRvciBtb2R1bGUgZm9yIGFzeW5jaW8iKTsKKworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfYXN5bmNpb21vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgLyogbV9iYXNlICovCisgICAgIl9hc3luY2lvIiwgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIG1vZHVsZV9kb2MsICAgICAgICAgICAgICAgICAvKiBtX2RvYyAqLworICAgIC0xLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19hc3luY2lvKHZvaWQpCit7CisgICAgaWYgKGluaXRfbW9kdWxlKCkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZGdXR1cmVUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVR5cGVfUmVhZHkoJkZ1dHVyZUl0ZXJUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKm0gPSBQeU1vZHVsZV9DcmVhdGUoJl9hc3luY2lvbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRigmRnV0dXJlVHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRnV0dXJlIiwgKFB5T2JqZWN0ICopJkZ1dHVyZVR5cGUpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoJkZ1dHVyZVR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKaW5kZXggMDJiNTVkMS4uMjJkZGJmMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKQEAgLTEyLDcgKzEyLDggQEAKIGludGVybmFsX2Jpc2VjdF9yaWdodChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpAQCAtMTE1LDcgKzExNiw4IEBACiBpbnRlcm5hbF9iaXNlY3RfbGVmdChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weSBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDFjZjI2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKQEAgLTAsMCArMSw0OSBAQAorIyEvdXNyL2Jpbi9weXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0JMQUtFMiA9IG9zLnBhdGguam9pbihIRVJFLCAnaW1wbCcpCisKK1BVQkxJQ19TRUFSQ0ggPSByZS5jb21waWxlKHInXCBpbnQgKGJsYWtlMltic11wP1thLXpfXSopXCgnKQorCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoQkxBS0UyKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihCTEFLRTIsIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCisKK2RlZiBmaW5kX3B1YmxpYygpOgorICAgIHB1YmxpY19mdW5jcyA9IHNldCgpCisgICAgZm9yIG5hbWUgaW4gZ2V0ZmlsZXMoKToKKyAgICAgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgICMgZmluZCBwdWJsaWMgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgbW8gPSBQVUJMSUNfU0VBUkNILnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG1vOgorICAgICAgICAgICAgICAgICAgICBwdWJsaWNfZnVuY3MuYWRkKG1vLmdyb3VwKDEpKQorCisgICAgZm9yIGYgaW4gc29ydGVkKHB1YmxpY19mdW5jcyk6CisgICAgICAgIHByaW50KCcjZGVmaW5lIHswOjwxOH0gUHlCbGFrZTJfezB9Jy5mb3JtYXQoZikpCisKKyAgICByZXR1cm4gcHVibGljX2Z1bmNzCisKKworZGVmIG1haW4oKToKKyAgICBsaW5lcyA9IFtdCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihIRVJFLCAnYmxha2UyYl9pbXBsLmMnKSkgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ2JsYWtlMmInLCAnYmxha2UycycpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdCTEFLRTJiJywgJ0JMQUtFMnMnKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnQkxBS0UyQicsICdCTEFLRTJTJykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oSEVSRSwgJ2JsYWtlMnNfaW1wbC5jJyksICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAjIGZpbmRfcHVibGljKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YjUwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMKQEAgLTAsMCArMSw0NjAgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+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/IE5VTEwgOiAmY29uc3VtZWQpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY29kZV9wYWdlX2RlY29kZQogICAgIGNvZGVwYWdlOiBpbnQKICAgICBkYXRhOiBQeV9idWZmZXIKQEAgLTY1MSw3ICs2NjYsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC03MTgsNyArNzMzLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfN19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTcyNiwyNCArNzQxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1mZDkxYTc4ZjEwM2IwNDIxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1kMWE0NzU3OWU3OWNiZTE1XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGNyhzdHIsIDAsIDAsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfOF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTc1MSwxOSArNzU3LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD0yYzIyZDQwNTMyZjA3MWYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD00MmUzYmE3M2M0MzkyZWVmXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc3RyLCAidXRmLTgiLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLyogVGhpcyB2ZXJzaW9uIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYnl0ZW9yZGVyIHBhcmFtZXRlciBvZiB0aGUKQEAgLTc3NSw3ICs3NzIsNyBAQAogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIGJ5dGVvcmRlcjogaW50ID0gMAogICAgIC8KQEAgLTc4NCwyNCArNzgxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PTM5MzVhNDg5YjJkNTM4NWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PWZmNDY0MTZiMDRlZGI5NDRdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9sZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTgwOSwyNCArNzk3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWJjMjdkZjA1ZDFkMjBkZmVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWNiMzg1NDU1ZWE4ZjJmZTBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfYmVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04MzQsMTkgKzgxMywxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD01YTY5ZDQxMTI3NjM0NjJiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD05MTE5OTk3MDY2YmRhZWZkXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qIFRoaXMgdmVyc2lvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJ5dGVvcmRlciBwYXJhbWV0ZXIgb2YgdGhlCkBAIC04NTgsNyArODI4LDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBieXRlb3JkZXI6IGludCA9IDAKICAgICAvCkBAIC04NjcsMjQgKzgzNywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD00MzRhMWVmYTQ5MmI4ZDU4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD1jNWU3N2RhODJmYmU1YzJhXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfbGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04OTIsMjQgKzg1MywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD1kZmEyZDdkYzc4Yjk5NDIyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD05OTkzYjI1ZmUwODc3ODQ4XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2JlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTE3LDI0ICs4NjksMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9NDU5NTYxN2IxODE2OTAwMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9ZDNlMGNjYWEwMjkyMDQzMV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnVuaWNvZGVfZXNjYXBlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTQyLDI0ICs4ODUsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTgyNzM1MDZmMTQwNzY5MTJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTY1ZDllZWZjYTY1YjQ1NWFdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05NjcsMjQgKzkwMSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD0xODE3NTVkNWRmYWNlZjNjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD01YWEzM2U0YTEzMzM5MWFiXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubGF0aW5fMV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTk5MiwyNCArOTE3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9ZjAzZjZkY2YxZDg0YmVlNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9MzBiMTFjOWU0OWE2NTE1MF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5hc2NpaV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTEwMTcsMjQgKzkzMywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ZDg3ZTI1YTEwYTU5M2ZlZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ODQzYTFkMjY4ZTZkZmE4ZV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoc3RyLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY2hhcm1hcF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIG1hcHBpbmc6IG9iamVjdCA9IE5VTEwKICAgICAvCkBAIC0xMDQzLDIyICs5NTAsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICptYXBwaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9ODVmNDE3MjY2MWU4ZGFkOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9MDc1MmNkZTA3YTZkNmQwMF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCiAgICAgaWYgKG1hcHBpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMTA3NCwzNiArOTcyLDQyIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKG1hcCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubWJjc19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD02NWMwOWVlMWU0MjAzMjYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD1kZTQ3MWUwODE1OTQ3NTUzXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Cit9CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm9lbV9lbmNvZGUKKyAgICBzdHI6IHVuaWNvZGUKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjVkNTk4MmM3MzdkZTY0OSBpbnB1dD0zZmM1ZjAwMjhhYWQzY2RhXSovCit7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9PRU1DUCwgc3RyLCBlcnJvcnMpLAorICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlCiAgICAgY29kZV9wYWdlOiBpbnQKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTExMTEsMjQgKzEwMTUsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Yzg1NjJlYzQ2MGMyZTMwOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Nzg2NDIxYWU2MTdkNjgwYl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMjE2LDYgKzExMDksOCBAQAogICAgIF9DT0RFQ1NfUkVBREJVRkZFUl9FTkNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX1JFR0lTVEVSX0VSUk9SX01FVEhPRERFRgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggMTBmYmNmZS4uOWVkNmYxNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC04MSw3ICs4MSw3IEBACiAgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7ICAgICAgIC8qIDAgPD0gbGVmdGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXg7ICAgICAgLyogMCA8PSByaWdodGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBzaXplX3Qgc3RhdGU7ICAgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGluZGljZXMgbW92ZSAqLwotICAgIFB5X3NzaXplX3QgbWF4bGVuOworICAgIFB5X3NzaXplX3QgbWF4bGVuOyAgICAgICAgICAvKiBtYXhsZW4gaXMgLTEgZm9yIHVuYm91bmRlZCBkZXF1ZXMgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IGRlcXVlb2JqZWN0OwogCkBAIC0xMDgsMjkgKzEwOCwxOCBAQAogI2RlZmluZSBDSEVDS19OT1RfRU5EKGxpbmspCiAjZW5kaWYKIAotLyogVG8gcHJldmVudCBsZW4gZnJvbSBvdmVyZmxvd2luZyBQWV9TU0laRV9UX01BWCwgd2UgcmVmdXNlIHRvCi0gICBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LgotKi8KLQotI2RlZmluZSBNQVhfREVRVUVfTEVOIChQWV9TU0laRV9UX01BWCAtIDMqQkxPQ0tMRU4pCi0KIC8qIEEgc2ltcGxlIGZyZWVsaXN0aW5nIHNjaGVtZSBpcyB1c2VkIHRvIG1pbmltaXplIGNhbGxzIHRvIHRoZSBtZW1vcnkKICAgIGFsbG9jYXRvci4gIEl0IGFjY29tbW9kYXRlcyBjb21tb24gdXNlIGNhc2VzIHdoZXJlIG5ldyBibG9ja3MgYXJlIGJlaW5nCiAgICBhZGRlZCBhdCBhYm91dCB0aGUgc2FtZSByYXRlIGFzIG9sZCBibG9ja3MgYXJlIGJlaW5nIGZyZWVkLgogICovCiAKLSNkZWZpbmUgTUFYRlJFRUJMT0NLUyAxMAorI2RlZmluZSBNQVhGUkVFQkxPQ0tTIDE2CiBzdGF0aWMgUHlfc3NpemVfdCBudW1mcmVlYmxvY2tzID0gMDsKIHN0YXRpYyBibG9jayAqZnJlZWJsb2Nrc1tNQVhGUkVFQkxPQ0tTXTsKIAogc3RhdGljIGJsb2NrICoKLW5ld2Jsb2NrKFB5X3NzaXplX3QgbGVuKSB7CituZXdibG9jayh2b2lkKSB7CiAgICAgYmxvY2sgKmI7Ci0gICAgaWYgKGxlbiA+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+ZGVmYXVsdF9mYWN0b3J5KTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCAiKCkiKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjIzNSwxMyArMjMwMCwxMyBAQAogCiAgICAgICAgICAgICBvbGR2YWwgPSBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgaGFzaCk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBuZXd2YWwgPSBQeU51bWJlcl9BZGQob2xkdmFsLCBvbmUpOwogICAgICAgICAgICAgICAgIGlmIChuZXd2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG5ld3ZhbCwgaGFzaCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICAgICAgUHlfQ0xFQVIobmV3dmFsKTsKICAgICAgICAgICAgIH0KQEAgLTIyNjcsNyArMjMzMiw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYob2xkdmFsKTsKICAgICAgICAgICAgIGlmIChuZXd2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgbmV3dmFsKSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgbmV3dmFsKSA8IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBQeV9DTEVBUihuZXd2YWwpOwogICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jc3YuYyBiL01vZHVsZXMvX2Nzdi5jCmluZGV4IGI0MjgyNzkuLjdhNzg1NDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Nzdi5jCisrKyBiL01vZHVsZXMvX2Nzdi5jCkBAIC02MCwxMCArNjAsMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFF1b3RlU3R5bGUgc3R5bGU7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogfSBTdHlsZURlc2M7CiAKLXN0YXRpYyBTdHlsZURlc2MgcXVvdGVfc3R5bGVzW10gPSB7CitzdGF0aWMgY29uc3QgU3R5bGVEZXNjIHF1b3RlX3N0eWxlc1tdID0gewogICAgIHsgUVVPVEVfTUlOSU1BTCwgICAgIlFVT1RFX01JTklNQUwiIH0sCiAgICAgeyBRVU9URV9BTEwsICAgICAgICAiUVVPVEVfQUxMIiB9LAogICAgIHsgUVVPVEVfTk9OTlVNRVJJQywgIlFVT1RFX05PTk5VTUVSSUMiIH0sCkBAIC0yODYsNyArMjg2LDcgQEAKIHN0YXRpYyBpbnQKIGRpYWxlY3RfY2hlY2tfcXVvdGluZyhpbnQgcXVvdGluZykKIHsKLSAgICBTdHlsZURlc2MgKnFzOworICAgIGNvbnN0IFN0eWxlRGVzYyAqcXM7CiAKICAgICBmb3IgKHFzID0gcXVvdGVfc3R5bGVzOyBxcy0+bmFtZTsgcXMrKykgewogICAgICAgICBpZiAoKGludClxcy0+c3R5bGUgPT0gcXVvdGluZykKQEAgLTUxOCwxNSArNTE4LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NhbGxfZGlhbGVjdChQeU9iamVjdCAqZGlhbGVjdF9pbnN0LCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpjdG9yX2FyZ3M7Ci0gICAgUHlPYmplY3QgKmRpYWxlY3Q7Ci0KLSAgICBjdG9yX2FyZ3MgPSBQeV9CdWlsZFZhbHVlKGRpYWxlY3RfaW5zdCA/ICIoTykiIDogIigpIiwgZGlhbGVjdF9pbnN0KTsKLSAgICBpZiAoY3Rvcl9hcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGRpYWxlY3QgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKSZEaWFsZWN0X1R5cGUsIGN0b3JfYXJncywga3dhcmdzKTsKLSAgICBQeV9ERUNSRUYoY3Rvcl9hcmdzKTsKLSAgICByZXR1cm4gZGlhbGVjdDsKKyAgICBQeU9iamVjdCAqdHlwZSA9IChQeU9iamVjdCAqKSZEaWFsZWN0X1R5cGU7CisgICAgaWYgKGRpYWxlY3RfaW5zdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCh0eXBlLCAmZGlhbGVjdF9pbnN0LCAxLCBrd2FyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QodHlwZSwgTlVMTCwgMCwga3dhcmdzKTsKKyAgICB9CiB9CiAKIC8qCkBAIC0xNjQ4LDcgKzE2NDYsNyBAQAogUHlJbml0X19jc3Yodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlOwotICAgIFN0eWxlRGVzYyAqc3R5bGU7CisgICAgY29uc3QgU3R5bGVEZXNjICpzdHlsZTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkRpYWxlY3RfVHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IDI5MzUyOTIuLmIzYTk1ODEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMTExLDEyICsxMTEsNiBAQAogI2lmbmRlZiBJU19JTlRSRVNPVVJDRQogI2RlZmluZSBJU19JTlRSRVNPVVJDRSh4KSAoKChzaXplX3QpKHgpID4+IDE2KSA9PSAwKQogI2VuZGlmCi0jIGlmZGVmIF9XSU4zMl9XQ0UKLS8qIFVubGlrZSBkZXNrdG9wIFdpbmRvd3MsIFdpbkNFIGhhcyBib3RoIFcgYW5kIEEgdmFyaWFudHMgb2YKLSAgIEdldFByb2NBZGRyZXNzLCBidXQgdGhlIGRlZmF1bHQgVyB2ZXJzaW9uIGlzIG5vdCB3aGF0IHdlIHdhbnQgKi8KLSMgIHVuZGVmIEdldFByb2NBZGRyZXNzCi0jICBkZWZpbmUgR2V0UHJvY0FkZHJlc3MgR2V0UHJvY0FkZHJlc3NBCi0jIGVuZGlmCiAjZWxzZQogI2luY2x1ZGUgImN0eXBlc19kbGZjbi5oIgogI2VuZGlmCkBAIC00MzUsNyArNDI5LDcgQEAKICAgICByZXR1cm4gU3RydWN0VW5pb25UeXBlX25ldyh0eXBlLCBhcmdzLCBrd2RzLCAwKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9hZGRyZXNzX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYWRkcmVzc19kb2NbXSA9CiAiQy5mcm9tX2FkZHJlc3MoaW50ZWdlcikgLT4gQyBpbnN0YW5jZVxuYWNjZXNzIGEgQyBpbnN0YW5jZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDUzLDcgKzQ0Nyw3IEBACiAgICAgcmV0dXJuIFB5Q0RhdGFfQXRBZGRyZXNzKHR5cGUsIGJ1Zik7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fYnVmZmVyX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYnVmZmVyX2RvY1tdID0KICJDLmZyb21fYnVmZmVyKG9iamVjdCwgb2Zmc2V0PTApIC0+IEMgaW5zdGFuY2VcbmNyZWF0ZSBhIEMgaW5zdGFuY2UgZnJvbSBhIHdyaXRlYWJsZSBidWZmZXIiOwogCiBzdGF0aWMgaW50CkBAIC01MjQsNyArNTE4LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBmcm9tX2J1ZmZlcl9jb3B5X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYnVmZmVyX2NvcHlfZG9jW10gPQogIkMuZnJvbV9idWZmZXJfY29weShvYmplY3QsIG9mZnNldD0wKSAtPiBDIGluc3RhbmNlXG5jcmVhdGUgYSBDIGluc3RhbmNlIGZyb20gYSByZWFkYWJsZSBidWZmZXIiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTY2LDcgKzU2MCw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIgaW5fZGxsX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGluX2RsbF9kb2NbXSA9CiAiQy5pbl9kbGwoZGxsLCBuYW1lKSAtPiBDIGluc3RhbmNlXG5hY2Nlc3MgYSBDIGluc3RhbmNlIGluIGEgZGxsIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYyMyw3ICs2MTcsNyBAQAogICAgIHJldHVybiBQeUNEYXRhX0F0QWRkcmVzcyh0eXBlLCBhZGRyZXNzKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9wYXJhbV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcm9tX3BhcmFtX2RvY1tdID0KICJDb252ZXJ0IGEgUHl0aG9uIG9iamVjdCBpbnRvIGEgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIuIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0ODksNyArMTQ4Myw3IEBACiAKICovCiAKLXN0YXRpYyBjaGFyICpTSU1QTEVfVFlQRV9DSEFSUyA9ICJjYkJoSGlJbExkZnV6WnFRUFhPdj9nIjsKK3N0YXRpYyBjb25zdCBjaGFyIFNJTVBMRV9UWVBFX0NIQVJTW10gPSAiY2JCaEhpSWxMZGZ1elpxUVBYT3Y/ZyI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjX3djaGFyX3BfZnJvbV9wYXJhbShQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlKQpAQCAtMjQxNCw3ICsyNDA4LDcgQEAKICAgICBjaGFyICpjcCA9IHN0cmluZzsKICAgICBzaXplX3QgYnl0ZXNfbGVmdDsKIAotICAgIGFzc2VydChzaXplb2Yoc3RyaW5nKSAtIDEgPiBzaXplb2YoUHlfc3NpemVfdCkgKiAyKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHN0cmluZykgLSAxID4gc2l6ZW9mKFB5X3NzaXplX3QpICogMik7CiAgICAgY3AgKz0gc3ByaW50ZihjcCwgIiV4IiwgUHlfU0FGRV9ET1dOQ0FTVChpbmRleCwgUHlfc3NpemVfdCwgaW50KSk7CiAgICAgd2hpbGUgKHRhcmdldC0+Yl9iYXNlKSB7CiAgICAgICAgIGJ5dGVzX2xlZnQgPSBzaXplb2Yoc3RyaW5nKSAtIChjcCAtIHN0cmluZykgLSAxOwpAQCAtMzA3NSw3ICszMDY5LDcgQEAKIH07CiAKICNpZmRlZiBNU19XSU4zMgotc3RhdGljIFBQUk9DIEZpbmRBZGRyZXNzKHZvaWQgKmhhbmRsZSwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR5cGUpCitzdGF0aWMgUFBST0MgRmluZEFkZHJlc3Modm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHlwZSkKIHsKICNpZmRlZiBNU19XSU42NAogICAgIC8qIHdpbjY0IGhhcyBubyBzdGRjYWxsIGNhbGxpbmcgY29udiwgc28gaXQgc2hvdWxkCkBAIC0zMjA5LDcgKzMyMDMsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1fZ2V0X25hbWUoUHlPYmplY3QgKm9iaiwgY2hhciAqKnBuYW1lKQorX2dldF9uYW1lKFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKipwbmFtZSkKIHsKICNpZmRlZiBNU19XSU4zMgogICAgIGlmIChQeUxvbmdfQ2hlY2sob2JqKSkgewpAQCAtMzIzNyw3ICszMjMxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUNGdW5jUHRyX0Zyb21EbGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIGludCAoKiBhZGRyZXNzKSh2b2lkKTsKICAgICBQeU9iamVjdCAqZnR1cGxlOwogICAgIFB5T2JqZWN0ICpkbGw7CkBAIC01MTI3LDEzICs1MTIxLDEyIEBACiAKICNpZmRlZiBNU19XSU4zMgogCi1zdGF0aWMgY2hhciBjb21lcnJvcl9kb2NbXSA9ICJSYWlzZWQgd2hlbiBhIENPTSBtZXRob2QgY2FsbCBmYWlsZWQuIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNvbWVycm9yX2RvY1tdID0gIlJhaXNlZCB3aGVuIGEgQ09NIG1ldGhvZCBjYWxsIGZhaWxlZC4iOwogCiBpbnQKIGNvbWVycm9yX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqaHJlc3VsdCwgKnRleHQsICpkZXRhaWxzOwotICAgIFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqYnNlbGY7CiAgICAgUHlPYmplY3QgKmE7CiAgICAgaW50IHN0YXR1czsKIApAQCAtNTE2MCw5ICs1MTUzLDggQEAKICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiZGV0YWlscyIsIGRldGFpbHMpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgYnNlbGYgPSAoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZjsKICAgICBQeV9JTkNSRUYoYXJncyk7Ci0gICAgUHlfU0VUUkVGKGJzZWxmLT5hcmdzLCBhcmdzKTsKKyAgICBQeV9TRVRSRUYoKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+YXJncywgYXJncyk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTU0OTIsMTQgKzU0ODQsMTQgQEAKICNlbmRpZgogCiAvKiBJZiBSVExEX0xPQ0FMIGlzIG5vdCBkZWZpbmVkIChXaW5kb3dzISksIHNldCBpdCB0byB6ZXJvLiAqLwotI2lmbmRlZiBSVExEX0xPQ0FMCisjaWYgIUhBVkVfREVDTF9SVExEX0xPQ0FMCiAjZGVmaW5lIFJUTERfTE9DQUwgMAogI2VuZGlmCiAKIC8qIElmIFJUTERfR0xPQkFMIGlzIG5vdCBkZWZpbmVkIChjeWd3aW4pLCBzZXQgaXQgdG8gdGhlIHNhbWUgdmFsdWUgYXMKICAgIFJUTERfTE9DQUwuCiAqLwotI2lmbmRlZiBSVExEX0dMT0JBTAorI2lmICFIQVZFX0RFQ0xfUlRMRF9HTE9CQUwKICNkZWZpbmUgUlRMRF9HTE9CQUwgUlRMRF9MT0NBTAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYwppbmRleCAzYzdmODkyLi42MjlkZGY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCkBAIC0yMzMsMTYgKzIzMywxNSBAQAogICAgIHJldHVybiAoKmZ1bmMpKHRhYmxlKTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1FWFBPUlQoUFlfTE9OR19MT05HKSBfdGVzdGZ1bmNfcV9iaGlsZmRxKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGQsIFBZX0xPTkdfTE9ORyBxKQorRVhQT1JUKGxvbmcgbG9uZykgX3Rlc3RmdW5jX3FfYmhpbGZkcShzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZCwgbG9uZyBsb25nIHEpCiB7Ci0gICAgcmV0dXJuIChQWV9MT05HX0xPTkcpKGIgKyBoICsgaSArIGwgKyBmICsgZCArIHEpOworICAgIHJldHVybiAobG9uZyBsb25nKShiICsgaCArIGkgKyBsICsgZiArIGQgKyBxKTsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgX3Rlc3RmdW5jX3FfYmhpbGZkKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsIGRvdWJsZSBkKQorRVhQT1JUKGxvbmcgbG9uZykgX3Rlc3RmdW5jX3FfYmhpbGZkKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsIGRvdWJsZSBkKQogewotICAgIHJldHVybiAoUFlfTE9OR19MT05HKShiICsgaCArIGkgKyBsICsgZiArIGQpOworICAgIHJldHVybiAobG9uZyBsb25nKShiICsgaCArIGkgKyBsICsgZiArIGQpOwogfQogCiBFWFBPUlQoaW50KSBfdGVzdGZ1bmNfY2FsbGJhY2tfaV9pZihpbnQgdmFsdWUsIGludCAoKmZ1bmMpKGludCkpCkBAIC0yNTUsMTAgKzI1NCwxMCBAQAogICAgIHJldHVybiBzdW07CiB9CiAKLUVYUE9SVChQWV9MT05HX0xPTkcpIF90ZXN0ZnVuY19jYWxsYmFja19xX3FmKFBZX0xPTkdfTE9ORyB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xPTkdfTE9ORyAoKmZ1bmMpKFBZX0xPTkdfTE9ORykpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfY2FsbGJhY2tfcV9xZihsb25nIGxvbmcgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgKCpmdW5jKShsb25nIGxvbmcpKQogewotICAgIFBZX0xPTkdfTE9ORyBzdW0gPSAwOworICAgIGxvbmcgbG9uZyBzdW0gPSAwOwogCiAgICAgd2hpbGUgKHZhbHVlICE9IDApIHsKICAgICAgICAgc3VtICs9IGZ1bmModmFsdWUpOwpAQCAtMjY3LDggKzI2Niw2IEBACiAgICAgcmV0dXJuIHN1bTsKIH0KIAotI2VuZGlmCi0KIHR5cGVkZWYgc3RydWN0IHsKICAgICBjaGFyICpuYW1lOwogICAgIGNoYXIgKnZhbHVlOwpAQCAtMzg0LDggKzM4MSw4IEBACiB7CiB9CiAKLUVYUE9SVChQWV9MT05HX0xPTkcpIGxhc3RfdGZfYXJnX3M7Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSBsYXN0X3RmX2FyZ191OworRVhQT1JUKGxvbmcgbG9uZykgbGFzdF90Zl9hcmdfczsKK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIGxhc3RfdGZfYXJnX3U7CiAKIHN0cnVjdCBCSVRTIHsKICAgICBpbnQgQTogMSwgQjoyLCBDOjMsIEQ6NCwgRTogNSwgRjogNiwgRzogNywgSDogOCwgSTogOTsKQEAgLTQ0OCw4ICs0NDUsOCBAQAogICAgIHsgTlVMTCwgTlVMTCwgMCwgTlVMTH0sCiB9OwogCi0jZGVmaW5lIFMgbGFzdF90Zl9hcmdfcyA9IChQWV9MT05HX0xPTkcpYwotI2RlZmluZSBVIGxhc3RfdGZfYXJnX3UgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKWMKKyNkZWZpbmUgUyBsYXN0X3RmX2FyZ19zID0gKGxvbmcgbG9uZyljCisjZGVmaW5lIFUgbGFzdF90Zl9hcmdfdSA9ICh1bnNpZ25lZCBsb25nIGxvbmcpYwogCiBFWFBPUlQoc2lnbmVkIGNoYXIpIHRmX2Ioc2lnbmVkIGNoYXIgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgY2hhcikgdGZfQih1bnNpZ25lZCBjaGFyIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQpAQCAtNDU5LDggKzQ1Niw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSB0Zl9JKHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSB0Zl9sKGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgdGZfTCh1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgdGZfcShQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSB0Zl9RKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIHRmX3EobG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgdGZfUSh1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIHRmX2YoZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSB0Zl9kKGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgdGZfRChsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KQEAgLTQ3NCw4ICs0NzEsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgX19zdGRjYWxsIHNfdGZfSSh1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgX19zdGRjYWxsIHNfdGZfbChsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIF9fc3RkY2FsbCBzX3RmX0wodW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX3EoUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfUSh1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9xKGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX1EodW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSBfX3N0ZGNhbGwgc190Zl9mKGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfZChkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIF9fc3RkY2FsbCBzX3RmX0QobG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CkBAIC00OTAsOCArNDg3LDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIHRmX2JJKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSB0Zl9ibChzaWduZWQgY2hhciB4LCBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIHRmX2JMKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSB0Zl9icShzaWduZWQgY2hhciB4LCBQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSB0Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSB0Zl9icShzaWduZWQgY2hhciB4LCBsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSB0Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIHRmX2JmKHNpZ25lZCBjaGFyIHgsIGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgdGZfYmQoc2lnbmVkIGNoYXIgeCwgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSB0Zl9iRChzaWduZWQgY2hhciB4LCBsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KQEAgLTUwNiw4ICs1MDMsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgX19zdGRjYWxsIHNfdGZfYkkoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JsKHNpZ25lZCBjaGFyIHgsIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgX19zdGRjYWxsIHNfdGZfYkwoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX2JxKHNpZ25lZCBjaGFyIHgsIFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JxKHNpZ25lZCBjaGFyIHgsIGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgX19zdGRjYWxsIHNfdGZfYmYoc2lnbmVkIGNoYXIgeCwgZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9iZChzaWduZWQgY2hhciB4LCBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIF9fc3RkY2FsbCBzX3RmX2JEKHNpZ25lZCBjaGFyIHgsIGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCmluZGV4IDkxNDEzZDcuLmI5NThmMzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKQEAgLTc3LDcgKzc3LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIHZvaWQKLVByaW50RXJyb3IoY2hhciAqbXNnLCAuLi4pCitQcmludEVycm9yKGNvbnN0IGNoYXIgKm1zZywgLi4uKQogewogICAgIGNoYXIgYnVmWzUxMl07CiAgICAgUHlPYmplY3QgKmYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGVyciIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwppbmRleCAzMGUzYTk2Li5kMzA0NGYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwpAQCAtMzgyLDcgKzM4Miw3IEBACiAgICAgICAgICAgIHdob3NlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudAogICAgICAgICAgICBtYWNoaW5lIG1vZGUuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogcHJpdmlsZWRnZWQgaW5zdHJ1Y3Rpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IHByaXZpbGVnZWQgaW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT046CkBAIC00NzQsNyArNDc0LDYgQEAKICAgICAgICAgICAgIHNlbGYtPnRhZywgc2VsZi0+dmFsdWUubCk7CiAgICAgICAgIGJyZWFrOwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzoKICAgICBjYXNlICdRJzoKICAgICAgICAgc3ByaW50ZihidWZmZXIsCkBAIC00ODUsNyArNDg0LDYgQEAKICNlbmRpZgogICAgICAgICAgICAgc2VsZi0+dGFnLCBzZWxmLT52YWx1ZS5xKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlICdkJzoKICAgICAgICAgc3ByaW50ZihidWZmZXIsICI8Y3BhcmFtICclYycgKCVmKT4iLAogICAgICAgICAgICAgc2VsZi0+dGFnLCBzZWxmLT52YWx1ZS5kKTsKQEAgLTU5Myw5ICs1OTEsNyBAQAogICAgIHNob3J0IGg7CiAgICAgaW50IGk7CiAgICAgbG9uZyBsOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHE7Ci0jZW5kaWYKKyAgICBsb25nIGxvbmcgcTsKICAgICBsb25nIGRvdWJsZSBEOwogICAgIGRvdWJsZSBkOwogICAgIGZsb2F0IGY7CkBAIC05MzAsNyArOTI2LDcgQEAKICAqIFJhaXNlIGEgbmV3IGV4Y2VwdGlvbiAnZXhjX2NsYXNzJywgYWRkaW5nIGFkZGl0aW9uYWwgdGV4dCB0byB0aGUgb3JpZ2luYWwKICAqIGV4Y2VwdGlvbiBzdHJpbmcuCiAgKi8KLXZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY2hhciAqZm10LCAuLi4pCit2b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmFyZ3M7CiAgICAgUHlPYmplY3QgKnRwLCAqdiwgKnRiLCAqcywgKmNsc19zdHIsICptc2dfc3RyOwpAQCAtMTIwMyw3ICsxMTk5LDcgQEAKIAogI2lmZGVmIE1TX1dJTjMyCiAKLXN0YXRpYyBjaGFyIGZvcm1hdF9lcnJvcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmb3JtYXRfZXJyb3JfZG9jW10gPQogIkZvcm1hdEVycm9yKFtpbnRlZ2VyXSkgLT4gc3RyaW5nXG5cCiBcblwKIENvbnZlcnQgYSB3aW4zMiBlcnJvciBjb2RlIGludG8gYSBzdHJpbmcuIElmIHRoZSBlcnJvciBjb2RlIGlzIG5vdFxuXApAQCAtMTIyNyw3ICsxMjIzLDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBsb2FkX2xpYnJhcnlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgbG9hZF9saWJyYXJ5X2RvY1tdID0KICJMb2FkTGlicmFyeShuYW1lKSAtPiBoYW5kbGVcblwKIFxuXAogTG9hZCBhbiBleGVjdXRhYmxlICh1c3VhbGx5IGEgRExMKSwgYW5kIHJldHVybiBhIGhhbmRsZSB0byBpdC5cblwKQEAgLTEyNTYsNyArMTI1Miw3IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIGNoYXIgZnJlZV9saWJyYXJ5X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyZWVfbGlicmFyeV9kb2NbXSA9CiAiRnJlZUxpYnJhcnkoaGFuZGxlKSAtPiB2b2lkXG5cCiBcblwKIEZyZWUgdGhlIGhhbmRsZSBvZiBhbiBleGVjdXRhYmxlIHByZXZpb3VzbHkgbG9hZGVkIGJ5IExvYWRMaWJyYXJ5LlxuIjsKQEAgLTEyNzEsNyArMTI2Nyw3IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLXN0YXRpYyBjaGFyIGNvcHlfY29tX3BvaW50ZXJfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgY29weV9jb21fcG9pbnRlcl9kb2NbXSA9CiAiQ29weUNvbVBvaW50ZXIoc3JjLCBkc3QpIC0+IEhSRVNVTFQgdmFsdWVcbiI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzA5LDcgKzEzMDUsNyBAQAogICAgIFB5T2JqZWN0ICpuYW1lLCAqbmFtZTI7CiAgICAgY2hhciAqbmFtZV9zdHI7CiAgICAgdm9pZCAqIGhhbmRsZTsKLSNpZmRlZiBSVExEX0xPQ0FMCisjaWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKICAgICBpbnQgbW9kZSA9IFJUTERfTk9XIHwgUlRMRF9MT0NBTDsKICNlbHNlCiAgICAgLyogY3lnd2luIGRvZXNuJ3QgZGVmaW5lIFJUTERfTE9DQUwgKi8KQEAgLTE0NDEsNyArMTQzNyw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIGZ1bmN0aW9ucwogICovCi1zdGF0aWMgY2hhciBzaXplb2ZfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgc2l6ZW9mX2RvY1tdID0KICJzaXplb2YoQyB0eXBlKSAtPiBpbnRlZ2VyXG4iCiAic2l6ZW9mKEMgaW5zdGFuY2UpIC0+IGludGVnZXJcbiIKICJSZXR1cm4gdGhlIHNpemUgaW4gYnl0ZXMgb2YgYSBDIGluc3RhbmNlIjsKQEAgLTE0NjIsNyArMTQ1OCw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyIGFsaWdubWVudF9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhbGlnbm1lbnRfZG9jW10gPQogImFsaWdubWVudChDIHR5cGUpIC0+IGludGVnZXJcbiIKICJhbGlnbm1lbnQoQyBpbnN0YW5jZSkgLT4gaW50ZWdlclxuIgogIlJldHVybiB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBvZiBhIEMgaW5zdGFuY2UiOwpAQCAtMTQ4NSw3ICsxNDgxLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGNoYXIgYnlyZWZfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYnlyZWZfZG9jW10gPQogImJ5cmVmKEMgaW5zdGFuY2VbLCBvZmZzZXQ9MF0pIC0+IGJ5cmVmLW9iamVjdFxuIgogIlJldHVybiBhIHBvaW50ZXIgbG9va2FsaWtlIHRvIGEgQyBpbnN0YW5jZSwgb25seSB1c2FibGVcbiIKICJhcyBmdW5jdGlvbiBhcmd1bWVudCI7CkBAIC0xNTI5LDcgKzE1MjUsNyBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilwYXJnOwogfQogCi1zdGF0aWMgY2hhciBhZGRyZXNzb2ZfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYWRkcmVzc29mX2RvY1tdID0KICJhZGRyZXNzb2YoQyBpbnN0YW5jZSkgLT4gaW50ZWdlclxuIgogIlJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgQyBpbnN0YW5jZSBpbnRlcm5hbCBidWZmZXIiOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKaW5kZXggZDY2NmJlNS4uYTQzNTg1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwpAQCAtMzc5LDE0ICszNzksMTIgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIFBZX0xPTkdfTE9ORyAqcCkKK2dldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgbG9uZyBsb25nICpwKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGV4cGVjdGVkIGluc3RlYWQgb2YgZmxvYXQiKTsKQEAgLTQwMiwyMyArNDAwLDIxIEBACiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIHVuc2lnbmVkIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgUFlfTE9OR19MT05HICpwKQorZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgbG9uZyBsb25nICpwKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGV4cGVjdGVkIGluc3RlYWQgb2YgZmxvYXQiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICB4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodik7Ci0gICAgaWYgKHggPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgICpwID0geDsKICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogSW50ZWdlciBmaWVsZHMsIHdpdGggYml0ZmllbGQgc3VwcG9ydAogICovCkBAIC03MTUsMTQgKzcxMSw2IEBACiB9CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfQzk5X0JPT0wKLSNkZWZpbmUgQk9PTF9UWVBFIF9Cb29sCi0jZWxzZQotI2RlZmluZSBCT09MX1RZUEUgY2hhcgotI3VuZGVmIFNJWkVPRl9fQk9PTAotI2RlZmluZSBTSVpFT0ZfX0JPT0wgMQotI2VuZGlmCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBib29sX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewpAQCAtNzMwLDEwICs3MTgsMTAgQEAKICAgICBjYXNlIC0xOgogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjYXNlIDA6Ci0gICAgICAgICooQk9PTF9UWVBFICopcHRyID0gMDsKKyAgICAgICAgKihfQm9vbCAqKXB0ciA9IDA7CiAgICAgICAgIF9SRVQodmFsdWUpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgICooQk9PTF9UWVBFICopcHRyID0gMTsKKyAgICAgICAgKihfQm9vbCAqKXB0ciA9IDE7CiAgICAgICAgIF9SRVQodmFsdWUpOwogICAgIH0KIH0KQEAgLTc0MSw3ICs3MjksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJvb2xfZ2V0KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKihCT09MX1RZUEUgKilwdHIpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKihfQm9vbCAqKXB0cik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04ODgsMTYgKzg3NiwxNSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyh2YWwpOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKIHN0YXRpYyBQeU9iamVjdCAqCiBxX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHZhbDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X2xvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmeCwgcHRyLCBzaXplb2YoeCkpOwotICAgIHggPSBTRVQoUFlfTE9OR19MT05HLCB4LCB2YWwsIHNpemUpOworICAgIHggPSBTRVQobG9uZyBsb25nLCB4LCB2YWwsIHNpemUpOwogICAgIG1lbWNweShwdHIsICZ4LCBzaXplb2YoeCkpOwogICAgIF9SRVQodmFsdWUpOwogfQpAQCAtOTA1LDEzICs4OTIsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX3NldF9zdyh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgUFlfTE9OR19MT05HIGZpZWxkOworICAgIGxvbmcgbG9uZyB2YWw7CisgICAgbG9uZyBsb25nIGZpZWxkOwogICAgIGlmIChnZXRfbG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZmaWVsZCwgcHRyLCBzaXplb2YoZmllbGQpKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7Ci0gICAgZmllbGQgPSBTRVQoUFlfTE9OR19MT05HLCBmaWVsZCwgdmFsLCBzaXplKTsKKyAgICBmaWVsZCA9IFNFVChsb25nIGxvbmcsIGZpZWxkLCB2YWwsIHNpemUpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKICAgICBtZW1jcHkocHRyLCAmZmllbGQsIHNpemVvZihmaWVsZCkpOwogICAgIF9SRVQodmFsdWUpOwpAQCAtOTIwLDcgKzkwNyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcV9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWwpOwpAQCAtOTI5LDcgKzkxNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcV9nZXRfc3codm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICB2YWwgPSBTV0FQXzgodmFsKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKQEAgLTkzOSwxMiArOTI2LDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF91bG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZ4LCBwdHIsIHNpemVvZih4KSk7Ci0gICAgeCA9IFNFVChQWV9MT05HX0xPTkcsIHgsIHZhbCwgc2l6ZSk7CisgICAgeCA9IFNFVChsb25nIGxvbmcsIHgsIHZhbCwgc2l6ZSk7CiAgICAgbWVtY3B5KHB0ciwgJngsIHNpemVvZih4KSk7CiAgICAgX1JFVCh2YWx1ZSk7CiB9CkBAIC05NTIsMTMgKzkzOSwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfc2V0X3N3KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmllbGQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmllbGQ7CiAgICAgaWYgKGdldF91bG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZmaWVsZCwgcHRyLCBzaXplb2YoZmllbGQpKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7Ci0gICAgZmllbGQgPSBTRVQodW5zaWduZWQgUFlfTE9OR19MT05HLCBmaWVsZCwgdmFsLCBzaXplKTsKKyAgICBmaWVsZCA9IFNFVCh1bnNpZ25lZCBsb25nIGxvbmcsIGZpZWxkLCB2YWwsIHNpemUpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKICAgICBtZW1jcHkocHRyLCAmZmllbGQsIHNpemVvZihmaWVsZCkpOwogICAgIF9SRVQodmFsdWUpOwpAQCAtOTY3LDcgKzk1NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbCk7CkBAIC05NzYsMTMgKzk2MywxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfZ2V0X3N3KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgdmFsID0gU1dBUF84KHZhbCk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWwpOwogfQotI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogbm9uLWludGVnZXIgYWNjZXNzb3IgbWV0aG9kcywgbm90IHN1cHBvcnRpbmcgYml0IGZpZWxkcwpAQCAtMTQ5MCwxMCArMTQ3Niw4IEBACiAjaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwogICAgIHYgPSAodm9pZCAqKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sodmFsdWUpOwogI2Vsc2UKLSNpZm5kZWYgSEFWRV9MT05HX0xPTkcKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKHZvaWQqKSA+IHNpemVvZihsb25nKSwgYnV0IG5vIGxvbmcgbG9uZyIKLSNlbGlmIFNJWkVPRl9MT05HX0xPTkcgPCBTSVpFT0ZfVk9JRF9QCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihQWV9MT05HX0xPTkcpIDwgc2l6ZW9mKHZvaWQqKSIKKyNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAorIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKICAgICB2ID0gKHZvaWQgKilQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh2YWx1ZSk7CiAjZW5kaWYKQEAgLTE1MzgsMTQgKzE1MjIsMTIgQEAKICNlbHNlCiAjIGVycm9yCiAjZW5kaWYKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogI2lmIFNJWkVPRl9MT05HX0xPTkcgPT0gOAogICAgIHsgJ3EnLCBxX3NldCwgcV9nZXQsICZmZmlfdHlwZV9zaW50NjQsIHFfc2V0X3N3LCBxX2dldF9zd30sCiAgICAgeyAnUScsIFFfc2V0LCBRX2dldCwgJmZmaV90eXBlX3VpbnQ2NCwgUV9zZXRfc3csIFFfZ2V0X3N3fSwKICNlbHNlCiAjIGVycm9yCiAjZW5kaWYKLSNlbmRpZgogICAgIHsgJ1AnLCBQX3NldCwgUF9nZXQsICZmZmlfdHlwZV9wb2ludGVyfSwKICAgICB7ICd6Jywgel9zZXQsIHpfZ2V0LCAmZmZpX3R5cGVfcG9pbnRlcn0sCiAjaWZkZWYgQ1RZUEVTX1VOSUNPREUKQEAgLTE2MzUsMTAgKzE2MTcsOCBAQAogI2VuZGlmCiAqLwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBQWV9MT05HX0xPTkcgeDsgfSBzX2xvbmdfbG9uZzsKLSNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZW5kaWYKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBsb25nIGxvbmcgeDsgfSBzX2xvbmdfbG9uZzsKKyNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKGxvbmcgbG9uZykpCiAKIC8qIGZyb20gZmZpLmg6CiB0eXBlZGVmIHN0cnVjdCBfZmZpX3R5cGUKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaCBiL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaAppbmRleCBmMmRmNWMwLi41ZDNiOTY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCkBAIC0zMSw5ICszMSw3IEBACiAgICAgICAgICAgICAgICAgbG9uZyBsOwogICAgICAgICAgICAgICAgIGZsb2F0IGY7CiAgICAgICAgICAgICAgICAgZG91YmxlIGQ7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBQWV9MT05HX0xPTkcgbGw7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGw7CiAgICAgICAgICAgICAgICAgbG9uZyBkb3VibGUgRDsKIH07CiAKQEAgLTMwMyw5ICszMDEsNyBAQAogICAgICAgICBzaG9ydCBoOwogICAgICAgICBpbnQgaTsKICAgICAgICAgbG9uZyBsOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIFBZX0xPTkdfTE9ORyBxOwotI2VuZGlmCisgICAgICAgIGxvbmcgbG9uZyBxOwogICAgICAgICBsb25nIGRvdWJsZSBEOwogICAgICAgICBkb3VibGUgZDsKICAgICAgICAgZmxvYXQgZjsKQEAgLTMyNyw3ICszMjMsNyBAQAogUHlDRGF0YV9zZXQoUHlPYmplY3QgKmRzdCwgUHlPYmplY3QgKnR5cGUsIFNFVEZVTkMgc2V0ZnVuYywgUHlPYmplY3QgKnZhbHVlLAogICAgICAgICAgIFB5X3NzaXplX3QgaW5kZXgsIFB5X3NzaXplX3Qgc2l6ZSwgY2hhciAqcHRyKTsKIAotZXh0ZXJuIHZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY2hhciAqZm10LCAuLi4pOworZXh0ZXJuIHZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY29uc3QgY2hhciAqZm10LCAuLi4pOwogCiBzdHJ1Y3QgYmFzZXNwZWMgewogICAgIENEYXRhT2JqZWN0ICpiYXNlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKaW5kZXggNmU0NzRiNy4uNTVjMmQ3NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCkBAIC01MjUsNyArNTI1LDcgQEAKICNkZWZpbmUgTU1BUF9DTEVBUlMgMQogI2VuZGlmICAvKiBNTUFQX0NMRUFSUyAqLwogI2lmbmRlZiBIQVZFX01SRU1BUAotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAjZGVmaW5lIEhBVkVfTVJFTUFQIDEKICNlbHNlICAgLyogbGludXggKi8KICNkZWZpbmUgSEFWRV9NUkVNQVAgMApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZGVidWcuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2RlYnVnLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZjFmOWYuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZGVidWcuYworKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBkZWJ1Zy5jIC0gQ29weXJpZ2h0IChjKSAxOTk2IFJlZCBIYXQsIEluYy4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaS5oPgotI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0vKiBHZW5lcmFsIGRlYnVnZ2luZyByb3V0aW5lcyAqLwotCi12b2lkIGZmaV9zdG9wX2hlcmUodm9pZCkKLXsKLSAgLyogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgotICAgICBQbGFjZSBhIGJyZWFrcG9pbnQgb24gZmZpX3N0b3BfaGVyZSB0byBiZSBub3RpZmllZCBvZiAKLSAgICAgc2lnbmlmaWNhbnQgZXZlbnRzLiAqLwotfQotCi0vKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIEZGSV9BU1NFUlQoKSBtYWNybyAqLwotCi12b2lkIGZmaV9hc3NlcnQoY2hhciAqZXhwciwgY2hhciAqZmlsZSwgaW50IGxpbmUpCi17Ci0gIGZwcmludGYoc3RkZXJyLCAiQVNTRVJUSU9OIEZBSUxVUkU6ICVzIGF0ICVzOiVkXG4iLCBleHByLCBmaWxlLCBsaW5lKTsKLSAgZmZpX3N0b3BfaGVyZSgpOwotICBhYm9ydCgpOwotfQotCi0vKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIGFuIGZmaV90eXBlIHN0cnVjdHVyZSAqLwotCi12b2lkIGZmaV90eXBlX3Rlc3QoZmZpX3R5cGUgKmEsIGNoYXIgKmZpbGUsIGludCBsaW5lKQotewotICBGRklfQVNTRVJUX0FUKGEgIT0gTlVMTCwgZmlsZSwgbGluZSk7Ci0KLSAgLypALXVzZWRlZkAqLwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgPD0gRkZJX1RZUEVfTEFTVCwgZmlsZSwgbGluZSk7Ci0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSA9PSBGRklfVFlQRV9WT0lEIHx8IGEtPnNpemUgPiAwLCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlID09IEZGSV9UWVBFX1ZPSUQgfHwgYS0+YWxpZ25tZW50ID4gMCwgZmlsZSwgbGluZSk7Ci0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSAhPSBGRklfVFlQRV9TVFJVQ1QgfHwgYS0+ZWxlbWVudHMgIT0gTlVMTCwgZmlsZSwgbGluZSk7Ci0gIC8qQD11c2VkZWZAKi8KLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExOTNhYWEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMTAgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4ICBSZWQgSGF0LCBJbmMuCi0gICAKLSAgIEFSTSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaS5oPgotI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0jaWZkZWYgX1dJTjMyX1dDRQotI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDE0MikgICAgLyogYmVuaWduIHJlZGVmaW5pdGlvbiBvZiB0eXBlICovCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmCi0KLS8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKLSAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzICovCi0KLS8qQC1leHBvcnRoZWFkZXJAKi8KLXZvaWQgZmZpX3ByZXBfYXJncyhjaGFyICpzdGFjaywgZXh0ZW5kZWRfY2lmICplY2lmKQotLypAPWV4cG9ydGhlYWRlckAqLwotewotICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsKLSAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKLSAgcmVnaXN0ZXIgY2hhciAqYXJncDsKLSAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKLQotICBhcmdwID0gc3RhY2s7Ci0KLSAgaWYgKCBlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCApIHsKLSAgICAqKHZvaWQgKiopIGFyZ3AgPSBlY2lmLT5ydmFsdWU7Ci0gICAgYXJncCArPSA0OwotICB9Ci0KLSAgcF9hcmd2ID0gZWNpZi0+YXZhbHVlOwotCi0gIGZvciAoaSA9IGVjaWYtPmNpZi0+bmFyZ3MsIHBfYXJnID0gZWNpZi0+Y2lmLT5hcmdfdHlwZXM7Ci0gICAgICAgKGkgIT0gMCk7Ci0gICAgICAgaS0tLCBwX2FyZysrKQotICAgIHsKLSAgICAgIHNpemVfdCB6OwotICAgICAgc2l6ZV90IGFyZ2FsaWduID0gKCpwX2FyZyktPmFsaWdubWVudDsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgICAgIGlmIChhcmdhbGlnbiA+IDQpCi0gICAgICAgIGFyZ2FsaWduID0gNDsKLSNlbmRpZgotICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCi0gICAgICBpZiAoKGFyZ2FsaWduIC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKLQlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgYXJnYWxpZ24pOwotICAgICAgfQotCi0JICB6ID0gKCpwX2FyZyktPnNpemU7Ci0JICBpZiAoeiA8IHNpemVvZihpbnQpKQotCSAgICB7Ci0JICAgICAgeiA9IHNpemVvZihpbnQpOwotCSAgICAgIHN3aXRjaCAoKCpwX2FyZyktPnR5cGUpCi0JCXsKLQkJY2FzZSBGRklfVFlQRV9TSU5UODoKLQkJICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDggKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1VJTlQ4OgotCQkgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDggKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1NJTlQxNjoKLQkJICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDE2ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9VSU5UMTY6Ci0JCSAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMTYgKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSAgICAgICAgICAgICAgICAgIC8qICpwX2FyZ3YgbWF5IG5vdCBiZSBhbGlnbmVkIGZvciBhIFVJTlQzMiAqLwotICAgICAgICAgICAgICAgICAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsIHopOwotCQkgIGJyZWFrOwotCi0JCWRlZmF1bHQ6Ci0JCSAgRkZJX0FTU0VSVCgwKTsKLQkJfQotCSAgICB9Ci0JICBlbHNlIGlmICh6ID09IHNpemVvZihpbnQpKQotCSAgICB7Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMzIgKikoKiBwX2FyZ3YpOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7Ci0JICAgIH0KLQkgIHBfYXJndisrOwotCSAgYXJncCArPSB6OwotICAgIH0KLSAgCi0gIHJldHVybjsKLX0KLQotLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpCi17Ci0gIC8qIFNldCB0aGUgcmV0dXJuIHR5cGUgZmxhZyAqLwotICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCi0gICAgewotICAgIGNhc2UgRkZJX1RZUEVfVk9JRDoKLSAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSAgICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgotICAgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgotICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgotICAgICAgY2lmLT5mbGFncyA9ICh1bnNpZ25lZCkgY2lmLT5ydHlwZS0+dHlwZTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6Ci0gICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfU0lOVDY0OwotICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX0lOVDsKLSAgICAgIGJyZWFrOwotICAgIH0KLQotICByZXR1cm4gRkZJX09LOwotfQotCi0vKkAtZGVjbHVuZGVmQCovCi0vKkAtZXhwb3J0aGVhZGVyQCovCi1leHRlcm4gdm9pZCBmZmlfY2FsbF9TWVNWKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCAKLQkJCSAgLypAb3V0QCovIGV4dGVuZGVkX2NpZiAqLCAKLQkJCSAgdW5zaWduZWQsIHVuc2lnbmVkLCAKLQkJCSAgLypAb3V0QCovIHVuc2lnbmVkICosIAotCQkJICB2b2lkICgqZm4pKCkpOwotLypAPWRlY2x1bmRlZkAqLwotLypAPWV4cG9ydGhlYWRlckAqLwotCi0vKiBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gdm9pZCBmb3IgY3R5cGVzICovCi1pbnQgZmZpX2NhbGwoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JICAgICAgdm9pZCAoKmZuKSgpLCAKLQkgICAgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkgICAgICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqKmF2YWx1ZSkKLXsKLSAgZXh0ZW5kZWRfY2lmIGVjaWY7Ci0KLSAgZWNpZi5jaWYgPSBjaWY7Ci0gIGVjaWYuYXZhbHVlID0gYXZhbHVlOwotICAKLSAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHJldHVybgkqLwotICAvKiB2YWx1ZSBhZGRyZXNzIHRoZW4gd2UgbmVlZCB0byBtYWtlIG9uZQkJICAgICAgICAqLwotCi0gIGlmICgocnZhbHVlID09IE5VTEwpICYmIAotICAgICAgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSkKLSAgICB7Ci0gICAgICAvKkAtc3lzdW5yZWNvZ0AqLwotICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7Ci0gICAgICAvKkA9c3lzdW5yZWNvZ0AqLwotICAgIH0KLSAgZWxzZQotICAgIGVjaWYucnZhbHVlID0gcnZhbHVlOwotICAgIAotICAKLSAgc3dpdGNoIChjaWYtPmFiaSkgCi0gICAgewotICAgIGNhc2UgRkZJX1NZU1Y6Ci0gICAgICAvKkAtdXNlZGVmQCovCi0gICAgICBmZmlfY2FsbF9TWVNWKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLCAKLQkJICAgIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7Ci0gICAgICAvKkA9dXNlZGVmQCovCi0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgRkZJX0FTU0VSVCgwKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgLyogSSB0aGluayBjYWxjdWxhdGluZyB0aGUgcmVhbCBzdGFjayBwb2ludGVyIGRlbHRhIGlzIG5vdCB1c2VmdWwKLSAgICAgYmVjYXVzZSBzdGRjYWxsIGlzIG5vdCBzdXBwb3J0ZWQgKi8KLSAgcmV0dXJuIDA7Ci19Ci0KLS8qKiBwcml2YXRlIG1lbWJlcnMgKiovCi0KLXN0YXRpYyB2b2lkIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTViAoY2hhciAqc3RhY2ssIHZvaWQgKipyZXQsCi0JCQkJCSB2b2lkKiogYXJncywgZmZpX2NpZiogY2lmKTsKLQotLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZmZpX2Nsb3N1cmVfU1lTViBpbiBzeXN2LmFzbSAqLwotCi11bnNpZ25lZCBpbnQKLWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGZmaV9jbG9zdXJlICpjbG9zdXJlLCBjaGFyICppbl9hcmdzLCB2b2lkICpydmFsdWUpCi17Ci0gIGZmaV9jaWYgKmNpZiA9IGNsb3N1cmUtPmNpZjsKLSAgdm9pZCAqKm91dF9hcmdzOwotCi0gIG91dF9hcmdzID0gKHZvaWQgKiopIGFsbG9jYShjaWYtPm5hcmdzICogc2l6ZW9mICh2b2lkICopKTsgIAotCi0gIC8qIHRoaXMgY2FsbCB3aWxsIGluaXRpYWxpemUgb3V0X2FyZ3MsIHN1Y2ggdGhhdCBlYWNoCi0gICAqIGVsZW1lbnQgaW4gdGhhdCBhcnJheSBwb2ludHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgCi0gICAqIHZhbHVlIG9uIHRoZSBzdGFjazsgYW5kIGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zCi0gICAqIGEgc3RydWN0dXJlLCBpdCB3aWxsIHJlLXNldCBydmFsdWUgdG8gcG9pbnQgdG8gdGhlCi0gICAqIHN0cnVjdHVyZSByZXR1cm4gYWRkcmVzcy4gICovCi0KLSAgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGluX2FyZ3MsICZydmFsdWUsIG91dF9hcmdzLCBjaWYpOwotICAKLSAgKGNsb3N1cmUtPmZ1bikoY2lmLCBydmFsdWUsIG91dF9hcmdzLCBjbG9zdXJlLT51c2VyX2RhdGEpOwotCi0gIC8qIFRlbGwgZmZpX2Nsb3N1cmVfU1lTViB3aGF0IHRoZSByZXR1cm50eXBlIGlzICovCi0gIHJldHVybiBjaWYtPmZsYWdzOwotfQotCi0vKkAtZXhwb3J0aGVhZGVyQCovCi1zdGF0aWMgdm9pZCAKLWZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihjaGFyICpzdGFjaywgdm9pZCAqKnJ2YWx1ZSwKLQkJCSAgICB2b2lkICoqYXZhbHVlLCBmZmlfY2lmICpjaWYpCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi17Ci0gIHVuc2lnbmVkIGludCBpOwotICB2b2lkICoqcF9hcmd2OwotICBjaGFyICphcmdwOwotICBmZmlfdHlwZSAqKnBfYXJnOwotCi0gIGFyZ3AgPSBzdGFjazsKLQotICBpZiAoIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICkgewotICAgICpydmFsdWUgPSAqKHZvaWQgKiopIGFyZ3A7Ci0gICAgYXJncCArPSA0OwotICB9Ci0KLSAgcF9hcmd2ID0gYXZhbHVlOwotCi0gIGZvciAoaSA9IGNpZi0+bmFyZ3MsIHBfYXJnID0gY2lmLT5hcmdfdHlwZXM7IChpICE9IDApOyBpLS0sIHBfYXJnKyspCi0gICAgewotICAgICAgc2l6ZV90IHo7Ci0gICAgICBzaXplX3QgYXJnYWxpZ24gPSAoKnBfYXJnKS0+YWxpZ25tZW50OwotCi0jaWZkZWYgX1dJTjMyX1dDRQotICAgICAgaWYgKGFyZ2FsaWduID4gNCkKLSAgICAgICAgYXJnYWxpZ24gPSA0OwotI2VuZGlmCi0gICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8KLSAgICAgIGlmICgoYXJnYWxpZ24gLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhcmdhbGlnbik7Ci0gICAgICB9Ci0KLSAgICAgIHogPSAoKnBfYXJnKS0+c2l6ZTsKLSAgICAgIGlmICh6IDwgc2l6ZW9mKGludCkpCi0gICAgICAgIHogPSBzaXplb2YoaW50KTsKLQotICAgICAgKnBfYXJndiA9ICh2b2lkKikgYXJncDsKLQotICAgICAgcF9hcmd2Kys7Ci0gICAgICBhcmdwICs9IHo7Ci0gICAgfQotfQotCi0vKgotICAgIGFkZCAgIGlwLCBwYywgIy04ICAgICA7IGlwID0gYWRkcmVzcyBvZiB0aGlzIHRyYW1wb2xpbmUgPT0gYWRkcmVzcyBvZiBmZmlfY2xvc3VyZQotICAgIGxkciAgIHBjLCBbcGMsICMtNF0gICA7IGp1bXAgdG8gX19mdW4KLSAgICBEQ0QgX19mdW4KLSovCi0jZGVmaW5lIEZGSV9JTklUX1RSQU1QT0xJTkUoVFJBTVAsRlVOKSBcCi17IFwKLSAgICB1bnNpZ25lZCBpbnQgKl9fdHJhbXAgPSAodW5zaWduZWQgaW50ICopKFRSQU1QKTsgXAotICAgIF9fdHJhbXBbMF0gPSAweGUyNGZjMDA4OyAgICAgICAgICAgIC8qIGFkZCAgIGlwLCBwYywgIy04ICAgICovIFwKLSAgICBfX3RyYW1wWzFdID0gMHhlNTFmZjAwNDsgICAgICAgICAgICAvKiBsZHIgICBwYywgW3BjLCAjLTRdICAqLyBcCi0gICAgX190cmFtcFsyXSA9ICh1bnNpZ25lZCBpbnQpKEZVTik7IFwKLSAgfQotCi0vKiB0aGUgY2lmIG11c3QgYWxyZWFkeSBiZSBwcmVwJ2VkICovCi0KLS8qIGRlZmluZWQgaW4gc3lzdi5hc20gKi8KLXZvaWQgZmZpX2Nsb3N1cmVfU1lTVih2b2lkKTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfY2xvc3VyZSAoZmZpX2Nsb3N1cmUqIGNsb3N1cmUsCi0JCSAgZmZpX2NpZiogY2lmLAotCQkgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKiksCi0JCSAgdm9pZCAqdXNlcl9kYXRhKQotewotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfU1lTVik7Ci0gIAotICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sICZmZmlfY2xvc3VyZV9TWVNWKTsKLQotICBjbG9zdXJlLT5jaWYgID0gY2lmOwotICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7Ci0gIGNsb3N1cmUtPmZ1biAgPSBmdW47Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0gIC8qIFRoaXMgaXMgaW1wb3J0YW50IHRvIGFsbG93IGNhbGxpbmcgdGhlIHRyYW1wb2xpbmUgc2FmZWx5ICovCi0gIEZsdXNoSW5zdHJ1Y3Rpb25DYWNoZShHZXRDdXJyZW50UHJvY2VzcygpLCAwLCAwKTsKLSNlbmRpZgotCi0gIHJldHVybiBGRklfT0s7Ci19Ci0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OTc1YjYuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMTcgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGxpYmZmaSAyLjAwLWJldGEtd2luY2UgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIFRoZSBiYXNpYyBBUEkgaXMgZGVzY3JpYmVkIGluIHRoZSBSRUFETUUgZmlsZS4KLQotICAgVGhlIHJhdyBBUEkgaXMgZGVzaWduZWQgdG8gYnlwYXNzIHNvbWUgb2YgdGhlIGFyZ3VtZW50IHBhY2tpbmcKLSAgIGFuZCB1bnBhY2tpbmcgb24gYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggaXQgY2FuIGJlIGF2b2lkZWQuCi0KLSAgIFRoZSBjbG9zdXJlIEFQSSBhbGxvd3MgaW50ZXJwcmV0ZWQgZnVuY3Rpb25zIHRvIGJlIHBhY2thZ2VkIHVwCi0gICBpbnNpZGUgYSBDIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIHRoYXQgdGhleSBjYW4gYmUgY2FsbGVkIGFzIEMgZnVuY3Rpb25zLAotICAgd2l0aCBubyB1bmRlcnN0YW5kaW5nIG9uIHRoZSBjbGllbnQgc2lkZSB0aGF0IHRoZXkgYXJlIGludGVycHJldGVkLgotICAgSXQgY2FuIGFsc28gYmUgdXNlZCBpbiBvdGhlciBjYXNlcyBpbiB3aGljaCBpdCBpcyBuZWNlc3NhcnkgdG8gcGFja2FnZQotICAgdXAgYSB1c2VyIHNwZWNpZmllZCBwYXJhbWV0ZXIgYW5kIGEgZnVuY3Rpb24gcG9pbnRlciBhcyBhIHNpbmdsZQotICAgZnVuY3Rpb24gcG9pbnRlci4KLQotICAgVGhlIGNsb3N1cmUgQVBJIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gb3JkZXIgdG8gZ2V0IGl0cyBmdW5jdGlvbmFsaXR5LAotICAgZS5nLiBmb3IgdXNlIGJ5IGdpai4gIFJvdXRpbmVzIGFyZSBwcm92aWRlZCB0byBlbXVsYXRlIHRoZSByYXcgQVBJCi0gICBpZiB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSBkb2Vzbid0IGFsbG93IGZhc3RlciBpbXBsZW1lbnRhdGlvbi4KLQotICAgTW9yZSBkZXRhaWxzIG9uIHRoZSByYXcgYW5kIGNsb3VyZSBBUEkgY2FuIGJlIGZvdW5kIGluOgotCi0gICBodHRwOi8vZ2NjLmdudS5vcmcvbWwvamF2YS8xOTk5LXEzL21zZzAwMTM4Lmh0bWwKLQotICAgYW5kCi0KLSAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9qYXZhLzE5OTktcTMvbXNnMDAxNzQuaHRtbAotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBMSUJGRklfSAotI2RlZmluZSBMSUJGRklfSAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qIFNwZWNpZnkgd2hpY2ggYXJjaGl0ZWN0dXJlIGxpYmZmaSBpcyBjb25maWd1cmVkIGZvci4gKi8KLS8qI2RlZmluZSBAVEFSR0VUQCovCi0KLS8qIC0tLS0gU3lzdGVtIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZml0YXJnZXQuaD4KLQotI2lmbmRlZiBMSUJGRklfQVNNCi0KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQotLyogTE9OR19MT05HX01BWCBpcyBub3QgYWx3YXlzIGRlZmluZWQgKG5vdCBpZiBTVFJJQ1RfQU5TSSwgZm9yIGV4YW1wbGUpLgotICAgQnV0IHdlIGNhbiBmaW5kIGl0IGVpdGhlciB1bmRlciB0aGUgY29ycmVjdCBBTlNJIG5hbWUsIG9yIHVuZGVyIEdOVQotICAgQydzIGludGVybmFsIG5hbWUuICAqLwotI2lmZGVmIExPTkdfTE9OR19NQVgKLSMgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExPTkdfTE9OR19NQVgKLSNlbHNlCi0jIGlmZGVmIExMT05HX01BWAotIyAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExMT05HX01BWAotIyBlbHNlCi0jICBpZmRlZiBfX0dOVUNfXwotIyAgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBfX0xPTkdfTE9OR19NQVhfXwotIyAgZW5kaWYKLSMgIGlmZGVmIF9NU0NfVkVSCi0jICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIF9JNjRfTUFYCi0jICBlbmRpZgotIyBlbmRpZgotI2VuZGlmCi0KLSNpZiBTQ0hBUl9NQVggPT0gMTI3Ci0jIGRlZmluZSBmZmlfdHlwZV91Y2hhciAgICAgICAgICAgICAgICBmZmlfdHlwZV91aW50OAotIyBkZWZpbmUgZmZpX3R5cGVfc2NoYXIgICAgICAgICAgICAgICAgZmZpX3R5cGVfc2ludDgKLSNlbHNlCi0gI2Vycm9yICJjaGFyIHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0jaWYgU0hSVF9NQVggPT0gMzI3NjcKLSMgZGVmaW5lIGZmaV90eXBlX3VzaG9ydCAgICAgICBmZmlfdHlwZV91aW50MTYKLSMgZGVmaW5lIGZmaV90eXBlX3NzaG9ydCAgICAgICBmZmlfdHlwZV9zaW50MTYKLSNlbGlmIFNIUlRfTUFYID09IDIxNDc0ODM2NDcKLSMgZGVmaW5lIGZmaV90eXBlX3VzaG9ydCAgICAgICBmZmlfdHlwZV91aW50MzIKLSMgZGVmaW5lIGZmaV90eXBlX3NzaG9ydCAgICAgICBmZmlfdHlwZV9zaW50MzIKLSNlbHNlCi0gI2Vycm9yICJzaG9ydCBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotI2lmIElOVF9NQVggPT0gMzI3NjcKLSMgZGVmaW5lIGZmaV90eXBlX3VpbnQgICAgICAgICBmZmlfdHlwZV91aW50MTYKLSMgZGVmaW5lIGZmaV90eXBlX3NpbnQgICAgICAgICBmZmlfdHlwZV9zaW50MTYKLSNlbGlmIElOVF9NQVggPT0gMjE0NzQ4MzY0NwotIyBkZWZpbmUgZmZpX3R5cGVfdWludCAgICAgICAgIGZmaV90eXBlX3VpbnQzMgotIyBkZWZpbmUgZmZpX3R5cGVfc2ludCAgICAgICAgIGZmaV90eXBlX3NpbnQzMgotI2VsaWYgSU5UX01BWCA9PSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0jIGRlZmluZSBmZmlfdHlwZV91aW50ICAgICAgICAgZmZpX3R5cGVfdWludDY0Ci0jIGRlZmluZSBmZmlfdHlwZV9zaW50ICAgICAgICAgZmZpX3R5cGVfc2ludDY0Ci0jZWxzZQotICNlcnJvciAiaW50IHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0jZGVmaW5lIGZmaV90eXBlX3Vsb25nICAgICAgICAgZmZpX3R5cGVfdWludDY0Ci0jZGVmaW5lIGZmaV90eXBlX3Nsb25nICAgICAgICAgZmZpX3R5cGVfc2ludDY0Ci0jaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwotIyBpZiBGRklfTE9OR19MT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0gICNlcnJvciAibm8gNjQtYml0IGRhdGEgdHlwZSBzdXBwb3J0ZWQiCi0jIGVuZGlmCi0jZWxpZiBMT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0gI2Vycm9yICJsb25nIHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0vKiBUaGUgY2xvc3VyZSBjb2RlIGFzc3VtZXMgdGhhdCB0aGlzIHdvcmtzIG9uIHBvaW50ZXJzLCBpLmUuIGEgc2l6ZV90CSovCi0vKiBjYW4gaG9sZCBhIHBvaW50ZXIuCQkJCQkJCSovCi0KLXR5cGVkZWYgc3RydWN0IF9mZmlfdHlwZQotewotICBzaXplX3Qgc2l6ZTsKLSAgdW5zaWduZWQgc2hvcnQgYWxpZ25tZW50OwotICB1bnNpZ25lZCBzaG9ydCB0eXBlOwotICAvKkBudWxsQCovIHN0cnVjdCBfZmZpX3R5cGUgKiplbGVtZW50czsKLX0gZmZpX3R5cGU7Ci0KLS8qIFRoZXNlIGFyZSBkZWZpbmVkIGluIHR5cGVzLmMgKi8KLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV92b2lkOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ4OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ4OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MTY7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQzMjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDY0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2Zsb2F0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2RvdWJsZTsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9sb25nZG91YmxlOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3BvaW50ZXI7Ci0KLQotdHlwZWRlZiBlbnVtIHsKLSAgRkZJX09LID0gMCwKLSAgRkZJX0JBRF9UWVBFREVGLAotICBGRklfQkFEX0FCSSAKLX0gZmZpX3N0YXR1czsKLQotdHlwZWRlZiB1bnNpZ25lZCBGRklfVFlQRTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBmZmlfYWJpIGFiaTsKLSAgdW5zaWduZWQgbmFyZ3M7Ci0gIC8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqKmFyZ190eXBlczsKLSAgLypAZGVwZW5kZW50QCovIGZmaV90eXBlICpydHlwZTsKLSAgdW5zaWduZWQgYnl0ZXM7Ci0gIHVuc2lnbmVkIGZsYWdzOwotI2lmZGVmIEZGSV9FWFRSQV9DSUZfRklFTERTCi0gIEZGSV9FWFRSQV9DSUZfRklFTERTOwotI2VuZGlmCi19IGZmaV9jaWY7Ci0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIHRoZSByYXcgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgRkZJX1NJWkVPRl9BUkcKLSMgaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwotIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA0Ci0jIGVsaWYgTE9OR19NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA4Ci0jIGVuZGlmCi0jZW5kaWYKLQotdHlwZWRlZiB1bmlvbiB7Ci0gIGZmaV9zYXJnICBzaW50OwotICBmZmlfYXJnICAgdWludDsKLSAgZmxvYXQJICAgIGZsdDsKLSAgY2hhciAgICAgIGRhdGFbRkZJX1NJWkVPRl9BUkddOwotICB2b2lkKiAgICAgcHRyOwotfSBmZmlfcmF3OwotCi12b2lkIGZmaV9yYXdfY2FsbCAoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JCSAgIHZvaWQgKCpmbikoKSwgCi0JCSAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCQkgICAvKkBkZXBlbmRlbnRAKi8gZmZpX3JhdyAqYXZhbHVlKTsKLQotdm9pZCBmZmlfcHRyYXJyYXlfdG9fcmF3IChmZmlfY2lmICpjaWYsIHZvaWQgKiphcmdzLCBmZmlfcmF3ICpyYXcpOwotdm9pZCBmZmlfcmF3X3RvX3B0cmFycmF5IChmZmlfY2lmICpjaWYsIGZmaV9yYXcgKnJhdywgdm9pZCAqKmFyZ3MpOwotc2l6ZV90IGZmaV9yYXdfc2l6ZSAoZmZpX2NpZiAqY2lmKTsKLQotLyogVGhpcyBpcyBhbmFsb2dvdXMgdG8gdGhlIHJhdyBBUEksIGV4Y2VwdCBpdCB1c2VzIEphdmEgcGFyYW1ldGVyCSovCi0vKiBwYWNraW5nLCBldmVuIG9uIDY0LWJpdCBtYWNoaW5lcy4gIEkuZS4gb24gNjQtYml0IG1hY2hpbmVzCQkqLwotLyogbG9uZ3MgYW5kIGRvdWJsZXMgYXJlIGZvbGxvd2VkIGJ5IGFuIGVtcHR5IDY0LWJpdCB3b3JkLgkJKi8KLQotdm9pZCBmZmlfamF2YV9yYXdfY2FsbCAoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JCSAgICAgICAgdm9pZCAoKmZuKSgpLCAKLQkJICAgICAgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkJICAgICAgICAvKkBkZXBlbmRlbnRAKi8gZmZpX3JhdyAqYXZhbHVlKTsKLQotdm9pZCBmZmlfamF2YV9wdHJhcnJheV90b19yYXcgKGZmaV9jaWYgKmNpZiwgdm9pZCAqKmFyZ3MsIGZmaV9yYXcgKnJhdyk7Ci12b2lkIGZmaV9qYXZhX3Jhd190b19wdHJhcnJheSAoZmZpX2NpZiAqY2lmLCBmZmlfcmF3ICpyYXcsIHZvaWQgKiphcmdzKTsKLXNpemVfdCBmZmlfamF2YV9yYXdfc2l6ZSAoZmZpX2NpZiAqY2lmKTsKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmIEZGSV9DTE9TVVJFUwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07Ci0gIGZmaV9jaWYgICAqY2lmOwotICB2b2lkICAgICAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKTsKLSAgdm9pZCAgICAgICp1c2VyX2RhdGE7Ci19IGZmaV9jbG9zdXJlOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9jbG9zdXJlIChmZmlfY2xvc3VyZSosCi0JCSAgZmZpX2NpZiAqLAotCQkgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKiksCi0JCSAgdm9pZCAqdXNlcl9kYXRhKTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOwotCi0gIGZmaV9jaWYgICAqY2lmOwotCi0jaWYgIUZGSV9OQVRJVkVfUkFXX0FQSQotCi0gIC8qIGlmIHRoaXMgaXMgZW5hYmxlZCwgdGhlbiBhIHJhdyBjbG9zdXJlIGhhcyB0aGUgc2FtZSBsYXlvdXQgCi0gICAgIGFzIGEgcmVndWxhciBjbG9zdXJlLiAgV2UgdXNlIHRoaXMgdG8gaW5zdGFsbCBhbiBpbnRlcm1lZGlhdGUgCi0gICAgIGhhbmRsZXIgdG8gZG8gdGhlIHRyYW5zYWx0aW9uLCB2b2lkKiogLT4gZmZpX3JhdyouICovCi0KLSAgdm9pZCAgICAgKCp0cmFuc2xhdGVfYXJncykoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKTsKLSAgdm9pZCAgICAgICp0aGlzX2Nsb3N1cmU7Ci0KLSNlbmRpZgotCi0gIHZvaWQgICAgICgqZnVuKShmZmlfY2lmKix2b2lkKixmZmlfcmF3Kix2b2lkKik7Ci0gIHZvaWQgICAgICAqdXNlcl9kYXRhOwotCi19IGZmaV9yYXdfY2xvc3VyZTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfcmF3X2Nsb3N1cmUgKGZmaV9yYXdfY2xvc3VyZSosCi0JCSAgICAgIGZmaV9jaWYgKmNpZiwKLQkJICAgICAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosZmZpX3Jhdyosdm9pZCopLAotCQkgICAgICB2b2lkICp1c2VyX2RhdGEpOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9qYXZhX3Jhd19jbG9zdXJlIChmZmlfcmF3X2Nsb3N1cmUqLAotCQkgICAgICAgICAgIGZmaV9jaWYgKmNpZiwKLQkJICAgICAgICAgICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKixmZmlfcmF3Kix2b2lkKiksCi0JCSAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKTsKLQotI2VuZGlmIC8qIEZGSV9DTE9TVVJFUyAqLwotCi0vKiAtLS0tIFB1YmxpYyBpbnRlcmZhY2UgZGVmaW5pdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZigvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfY2lmICpjaWYsIAotCQkJZmZpX2FiaSBhYmksCi0JCQl1bnNpZ25lZCBpbnQgbmFyZ3MsIAotCQkJLypAZGVwZW5kZW50QCovIC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV90eXBlICpydHlwZSwgCi0JCQkvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKiphdHlwZXMpOwotCi0vKiBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gdm9pZCBmb3IgY3R5cGVzICovCi1pbnQgZmZpX2NhbGwoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JICAgICAgdm9pZCAoKmZuKSgpLCAKLQkgICAgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkgICAgICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqKmF2YWx1ZSk7Ci0KLS8qIFVzZWZ1bCBmb3IgZWxpbWluYXRpbmcgY29tcGlsZXIgd2FybmluZ3MgKi8KLSNkZWZpbmUgRkZJX0ZOKGYpICgodm9pZCAoKikoKSlmKQotCi0vKiAtLS0tIERlZmluaXRpb25zIHNoYXJlZCB3aXRoIGFzc2VtYmx5IGNvZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jZW5kaWYKLQotLyogSWYgdGhlc2UgY2hhbmdlLCB1cGRhdGUgc3JjL21pcHMvZmZpdGFyZ2V0LmguICovCi0jZGVmaW5lIEZGSV9UWVBFX1ZPSUQgICAgICAgMCAgICAKLSNkZWZpbmUgRkZJX1RZUEVfSU5UICAgICAgICAxCi0jZGVmaW5lIEZGSV9UWVBFX0ZMT0FUICAgICAgMiAgICAKLSNkZWZpbmUgRkZJX1RZUEVfRE9VQkxFICAgICAzCi0jaWYgMCAvKkBIQVZFX0xPTkdfRE9VQkxFQCovCi0jZGVmaW5lIEZGSV9UWVBFX0xPTkdET1VCTEUgNAotI2Vsc2UKLSNkZWZpbmUgRkZJX1RZUEVfTE9OR0RPVUJMRSBGRklfVFlQRV9ET1VCTEUKLSNlbmRpZgotI2RlZmluZSBGRklfVFlQRV9VSU5UOCAgICAgIDUgICAKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDggICAgICA2Ci0jZGVmaW5lIEZGSV9UWVBFX1VJTlQxNiAgICAgNyAKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDE2ICAgICA4Ci0jZGVmaW5lIEZGSV9UWVBFX1VJTlQzMiAgICAgOQotI2RlZmluZSBGRklfVFlQRV9TSU5UMzIgICAgIDEwCi0jZGVmaW5lIEZGSV9UWVBFX1VJTlQ2NCAgICAgMTEKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDY0ICAgICAxMgotI2RlZmluZSBGRklfVFlQRV9TVFJVQ1QgICAgIDEzCi0jZGVmaW5lIEZGSV9UWVBFX1BPSU5URVIgICAgMTQKLQotLyogVGhpcyBzaG91bGQgYWx3YXlzIHJlZmVyIHRvIHRoZSBsYXN0IHR5cGUgY29kZSAoZm9yIHNhbml0eSBjaGVja3MpICovCi0jZGVmaW5lIEZGSV9UWVBFX0xBU1QgICAgICAgRkZJX1RZUEVfUE9JTlRFUgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpX2NvbW1vbi5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpX2NvbW1vbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjg3OWQxLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaV9jb21tb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpX2NvbW1vbi5oIC0gQ29weXJpZ2h0IChjKSAxOTk2ICBSZWQgSGF0LCBJbmMuCi0KLSAgIENvbW1vbiBpbnRlcm5hbCBkZWZpbml0aW9ucyBhbmQgbWFjcm9zLiBPbmx5IG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcKLSAgIGxpYmZmaS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgRkZJX0NPTU1PTl9ICi0jZGVmaW5lIEZGSV9DT01NT05fSAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpbmNsdWRlIDxmZmljb25maWcuaD4KLQotLyogRG8gbm90IG1vdmUgdGhpcy4gU29tZSB2ZXJzaW9ucyBvZiBBSVggYXJlIHZlcnkgcGlja3kgYWJvdXQgd2hlcmUKLSAgIHRoaXMgaXMgcG9zaXRpb25lZC4gKi8KLSNpZmRlZiBfX0dOVUNfXwotIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSNlbHNlCi0jIGlmIEhBVkVfQUxMT0NBX0gKLSMgIGluY2x1ZGUgPGFsbG9jYS5oPgotIyBlbHNlCi0jICBpZmRlZiBfQUlYCi0gI3ByYWdtYSBhbGxvY2EKLSMgIGVsc2UKLSMgICBpZm5kZWYgYWxsb2NhIC8qIHByZWRlZmluZWQgYnkgSFAgY2MgK09saWJjYWxscyAqLwotY2hhciAqYWxsb2NhICgpOwotIyAgIGVuZGlmCi0jICBlbmRpZgotIyBlbmRpZgotI2VuZGlmCi0KLS8qIENoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIG1lbWNweS4gKi8KLSNpZiBTVERDX0hFQURFUlMKLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotIyBpZm5kZWYgSEFWRV9NRU1DUFkKLSMgIGRlZmluZSBtZW1jcHkoZCwgcywgbikgYmNvcHkgKChzKSwgKGQpLCAobikpCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoRkZJX0RFQlVHKSAKLSNpbmNsdWRlIDxzdGRpby5oPgotI2VuZGlmCi0KLSNpZmRlZiBGRklfREVCVUcKLS8qQGV4aXRzQCovIHZvaWQgZmZpX2Fzc2VydCgvKkB0ZW1wQCovIGNoYXIgKmV4cHIsIC8qQHRlbXBAKi8gY2hhciAqZmlsZSwgaW50IGxpbmUpOwotdm9pZCBmZmlfc3RvcF9oZXJlKHZvaWQpOwotdm9pZCBmZmlfdHlwZV90ZXN0KC8qQHRlbXBAKi8gLypAb3V0QCovIGZmaV90eXBlICphLCAvKkB0ZW1wQCovIGNoYXIgKmZpbGUsIGludCBsaW5lKTsKLQotI2RlZmluZSBGRklfQVNTRVJUKHgpICgoeCkgPyAodm9pZCkwIDogZmZpX2Fzc2VydCgjeCwgX19GSUxFX18sX19MSU5FX18pKQotI2RlZmluZSBGRklfQVNTRVJUX0FUKHgsIGYsIGwpICgoeCkgPyAwIDogZmZpX2Fzc2VydCgjeCwgKGYpLCAobCkpKQotI2RlZmluZSBGRklfQVNTRVJUX1ZBTElEX1RZUEUoeCkgZmZpX3R5cGVfdGVzdCAoeCwgX19GSUxFX18sIF9fTElORV9fKQotI2Vsc2UKLSNkZWZpbmUgRkZJX0FTU0VSVCh4KSAKLSNkZWZpbmUgRkZJX0FTU0VSVF9BVCh4LCBmLCBsKQotI2RlZmluZSBGRklfQVNTRVJUX1ZBTElEX1RZUEUoeCkKLSNlbmRpZgotCi0jZGVmaW5lIEFMSUdOKHYsIGEpICAoKCgoKHNpemVfdCkgKHYpKS0xKSB8ICgoYSktMSkpKzEpCi0KLS8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKTsKLQotLyogRXh0ZW5kZWQgY2lmLCB1c2VkIGluIGNhbGxiYWNrIGZyb20gYXNzZW1ibHkgcm91dGluZSAqLwotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZjsKLSAgLypAZGVwZW5kZW50QCovIHZvaWQgKnJ2YWx1ZTsKLSAgLypAZGVwZW5kZW50QCovIHZvaWQgKiphdmFsdWU7Ci19IGV4dGVuZGVkX2NpZjsKLQotLyogVGVyc2Ugc2l6ZWQgdHlwZSBkZWZpbml0aW9ucy4gICovCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDggIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fUUlfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQ4ICBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1FJX18pKSk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMTYgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ISV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDE2IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fSElfXykpKTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQzMiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UMzIgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19TSV9fKSkpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDY0IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQ2NCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSk7Ci0KLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0KLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ4ICBVSU5UODsKLXR5cGVkZWYgc2lnbmVkIF9faW50OCAgICBTSU5UODsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQxNiBVSU5UMTY7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDE2ICAgU0lOVDE2OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIFVJTlQzMjsKLXR5cGVkZWYgc2lnbmVkIF9faW50MzIgICBTSU5UMzI7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgVUlOVDY0OwotdHlwZWRlZiBzaWduZWQgX19pbnQ2NCAgIFNJTlQ2NDsKLQotI2Vsc2UKLSNlcnJvciAiTmVlZCB0eXBlZGVmcyBoZXJlIgotI2VuZGlmCi0KLXR5cGVkZWYgZmxvYXQgRkxPQVQzMjsKLQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmljb25maWcuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaWNvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzc5NjRjLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaWNvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qIGZmaWNvbmZpZy5oIGNyZWF0ZWQgbWFudWFsbHkgZm9yIFdpbmRvd3MgQ0Ugb24gQVJNICovCi0vKiBmZmljb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KLQotLyogMTIzNCA9IExJTF9FTkRJQU4sIDQzMjEgPSBCSUdFTkRJQU4gKi8KLSNkZWZpbmUgQllURU9SREVSIDEyMzQKLQotLyogRGVmaW5lIHRvIG9uZSBvZiBgX2dldGI2NycsIGBHRVRCNjcnLCBgZ2V0YjY3JyBmb3IgQ3JheS0yIGFuZCBDcmF5LVlNUAotICAgc3lzdGVtcy4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYGFsbG9jYS5jJyBzdXBwb3J0IG9uIHRob3NlIHN5c3RlbXMuCi0gICAqLwotLyogI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5EICovCi0KLS8qIERlZmluZSB0byAxIGlmIHVzaW5nIGBhbGxvY2EuYycuICovCi0vKiAjdW5kZWYgQ19BTExPQ0EgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLiAqLwotLyogI3VuZGVmIEVIX0ZSQU1FX0ZMQUdTICovCi0KLS8qIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IGV4dHJhIGRlYnVnZ2luZy4gKi8KLSNpZmRlZiBERUJVRyAgLyogRGVmaW5lZCBieSB0aGUgcHJvamVjdCBzZXR0aW5ncyBmb3IgRGVidWcgYnVpbGRzICovCi0jZGVmaW5lIEZGSV9ERUJVRwotI2Vsc2UKLSN1bmRlZiBGRklfREVCVUcKLSNlbmRpZgotCi0vKiBEZWZpbmUgdGhpcyBpcyB5b3UgZG8gbm90IHdhbnQgc3VwcG9ydCBmb3IgdGhlIHJhdyBBUEkuICovCi0vKiAjdW5kZWYgRkZJX05PX1JBV19BUEkgKi8KLQotLyogRGVmaW5lIHRoaXMgaXMgeW91IGRvIG5vdCB3YW50IHN1cHBvcnQgZm9yIGFnZ3JlZ2F0ZSB0eXBlcy4gKi8KLS8qICN1bmRlZiBGRklfTk9fU1RSVUNUUyAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBgYWxsb2NhJywgYXMgYSBmdW5jdGlvbiBvciBtYWNyby4gKi8KLSNkZWZpbmUgSEFWRV9BTExPQ0EgMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8YWxsb2NhLmg+IGFuZCBpdCBzaG91bGQgYmUgdXNlZCAobm90IG9uIFVsdHJpeCkuCi0gICAqLwotLyogI3VuZGVmIEhBVkVfQUxMT0NBX0ggKi8KLQotLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5yZWdpc3Rlci4gKi8KLS8qICN1bmRlZiBIQVZFX0FTX1JFR0lTVEVSX1BTRVVET19PUCAqLwotCi0vKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBQQyByZWxhdGl2ZSByZWxvY3MuCi0gICAqLwotLyogI3VuZGVmIEhBVkVfQVNfU1BBUkNfVUFfUENSRUwgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX0lOVFRZUEVTX0ggKi8KLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsb25nIGRvdWJsZSB0eXBlIGFuZCBpdCBpcyBiaWdnZXIgdGhhbiBhIGRvdWJsZSAqLwotLyogVGhpcyBkaWZmZXJzIGZyb20gdGhlIE1TVkMgYnVpbGQsIGJ1dCBldmVuIHRoZXJlIGl0IHNob3VsZCBub3QgYmUgZGVmaW5lZCAqLwotLyogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1jcHknIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX01FTUNQWSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogV2luQ0UgaGFzIHRoaXMgYnV0IEkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0byB1c2UgaXQgKi8KLS8qICN1bmRlZiBIQVZFX01FTU9SWV9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcgZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQICovCi0KLS8qIERlZmluZSBpZiBtbWFwIHdpdGggTUFQX0FOT04oWU1PVVMpIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9BTk9OICovCi0KLS8qIERlZmluZSBpZiBtbWFwIG9mIC9kZXYvemVybyB3b3Jrcy4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVBfREVWX1pFUk8gKi8KLQotLyogRGVmaW5lIGlmIHJlYWQtb25seSBtbWFwIG9mIGEgcGxhaW4gZmlsZSB3b3Jrcy4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVBfRklMRSAqLwotCi0vKiBEZWZpbmUgaWYgLmVoX2ZyYW1lIHNlY3Rpb25zIHNob3VsZCBiZSByZWFkLW9ubHkuICovCi0vKiAjdW5kZWYgSEFWRV9ST19FSF9GUkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NURElOVF9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NURExJQl9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1RSSU5HU19IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NUUklOR19IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbW1hbi5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NZU19NTUFOX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NZU19TVEFUX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1VOSVNURF9IICovCi0KLS8qIERlZmluZSBpZiB0aGUgaG9zdCBtYWNoaW5lIHN0b3JlcyB3b3JkcyBvZiBtdWx0aS13b3JkIGludGVnZXJzIGluCi0gICBiaWctZW5kaWFuIG9yZGVyLiAqLwotLyogI3VuZGVmIEhPU1RfV09SRFNfQklHX0VORElBTiAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3VyIEMgY29tcGlsZXIgZG9lc24ndCBhY2NlcHQgLWMgYW5kIC1vIHRvZ2V0aGVyLiAqLwotLyogI3VuZGVmIE5PX01JTlVTX0NfTUlOVVNfTyAqLwotCi0vKiBOYW1lIG9mIHBhY2thZ2UgKi8KLS8qICN1bmRlZiBQQUNLQUdFICovCi0KLS8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUICovCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX05BTUUgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfU1RSSU5HICovCi0KLS8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUgKi8KLQotLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04gKi8KLQotLyogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0eXBlIGRvdWJsZSAqLwotI2RlZmluZSBTSVpFT0ZfRE9VQkxFIDgKLQotLyogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0eXBlIGxvbmcgZG91YmxlICovCi0jZGVmaW5lIFNJWkVPRl9MT05HX0RPVUJMRSA4Ci0KLS8qIElmIHVzaW5nIHRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGFsbG9jYSwgZGVmaW5lIGlmIHlvdSBrbm93IHRoZQotICAgZGlyZWN0aW9uIG9mIHN0YWNrIGdyb3d0aCBmb3IgeW91ciBzeXN0ZW07IG90aGVyd2lzZSBpdCB3aWxsIGJlCi0gICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVuLXRpbWUuCi0JU1RBQ0tfRElSRUNUSU9OID4gMCA9PiBncm93cyB0b3dhcmQgaGlnaGVyIGFkZHJlc3NlcwotCVNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJlc3NlcwotCVNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duICovCi0vKiAjdW5kZWYgU1RBQ0tfRElSRUNUSU9OICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwotI2RlZmluZSBTVERDX0hFQURFUlMgMQotCi0vKiBEZWZpbmUgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIFB1cmlmeSBhbmQgd2FudCB0byBzdXBwcmVzcyBzcHVyaW91cyBtZXNzYWdlcy4KLSAgICovCi0vKiAjdW5kZWYgVVNJTkdfUFVSSUZZICovCi0KLS8qIFZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2UgKi8KLS8qICN1bmRlZiBWRVJTSU9OICovCi0KLS8qIHdoZXRoZXIgYnl0ZW9yZGVyIGlzIGJpZ2VuZGlhbiAqLwotLyogI3VuZGVmIFdPUkRTX0JJR0VORElBTiAqLwotCi0jZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0KLSNkZWZpbmUgYWJvcnQoKSBleGl0KDk5OSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpdGFyZ2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MjdiMjUuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpdGFyZ2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgotICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBBUk0uCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLQotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKLSNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICi0KLSNpZm5kZWYgTElCRkZJX0FTTQotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7Ci10eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7Ci0KLXR5cGVkZWYgZW51bSBmZmlfYWJpIHsKLSAgRkZJX0ZJUlNUX0FCSSA9IDAsCi0gIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQotfSBmZmlfYWJpOwotI2VuZGlmCi0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIGNsb3N1cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNkZWZpbmUgRkZJX0NMT1NVUkVTIDEKLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAxMgotCi0jZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9wcmVwX2NpZi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvcHJlcF9jaWYuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVkY2UyZi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9wcmVwX2NpZi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcmVwX2NpZi5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4ICBSZWQgSGF0LCBJbmMuCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZmkuaD4KLSNpbmNsdWRlIDxmZmlfY29tbW9uLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLQotLyogUm91bmQgdXAgdG8gRkZJX1NJWkVPRl9BUkcuICovCi0KLSNkZWZpbmUgU1RBQ0tfQVJHX1NJWkUoeCkgQUxJR04oeCwgRkZJX1NJWkVPRl9BUkcpCi0KLS8qIFBlcmZvcm0gbWFjaGluZSBpbmRlcGVuZGVudCBpbml0aWFsaXphdGlvbiBvZiBhZ2dyZWdhdGUgdHlwZQotICAgc3BlY2lmaWNhdGlvbnMuICovCi0KLXN0YXRpYyBmZmlfc3RhdHVzIGluaXRpYWxpemVfYWdncmVnYXRlKC8qQG91dEAqLyBmZmlfdHlwZSAqYXJnKQotewotICBmZmlfdHlwZSAqKnB0cjsgCi0KLSAgRkZJX0FTU0VSVChhcmcgIT0gTlVMTCk7Ci0KLSAgLypALXVzZWRlZkAqLwotCi0gIEZGSV9BU1NFUlQoYXJnLT5lbGVtZW50cyAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVChhcmctPnNpemUgPT0gMCk7Ci0gIEZGSV9BU1NFUlQoYXJnLT5hbGlnbm1lbnQgPT0gMCk7Ci0KLSAgcHRyID0gJihhcmctPmVsZW1lbnRzWzBdKTsKLQotICB3aGlsZSAoKCpwdHIpICE9IE5VTEwpCi0gICAgewotICAgICAgaWYgKCgoKnB0ciktPnNpemUgPT0gMCkgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKCgqcHRyKSkgIT0gRkZJX09LKSkKLQlyZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotICAgICAgCi0gICAgICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBhcmd1bWVudCB0eXBlICovCi0gICAgICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoKnB0cik7Ci0KLSAgICAgIGFyZy0+c2l6ZSA9IEFMSUdOKGFyZy0+c2l6ZSwgKCpwdHIpLT5hbGlnbm1lbnQpOwotICAgICAgYXJnLT5zaXplICs9ICgqcHRyKS0+c2l6ZTsKLQotICAgICAgYXJnLT5hbGlnbm1lbnQgPSAoYXJnLT5hbGlnbm1lbnQgPiAoKnB0ciktPmFsaWdubWVudCkgPyAKLQlhcmctPmFsaWdubWVudCA6ICgqcHRyKS0+YWxpZ25tZW50OwotCi0gICAgICBwdHIrKzsKLSAgICB9Ci0KLSAgLyogU3RydWN0dXJlIHNpemUgaW5jbHVkZXMgdGFpbCBwYWRkaW5nLiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yCi0gICAgIHN0cnVjdHVyZXMgdGhhdCBmaXQgaW4gb25lIHJlZ2lzdGVyIG9uIEFCSXMgbGlrZSB0aGUgUG93ZXJQQzY0Ci0gICAgIExpbnV4IEFCSSB0aGF0IHJpZ2h0IGp1c3RpZnkgc21hbGwgc3RydWN0cyBpbiBhIHJlZ2lzdGVyLgotICAgICBJdCdzIGFsc28gbmVlZGVkIGZvciBuZXN0ZWQgc3RydWN0dXJlIGxheW91dCwgZm9yIGV4YW1wbGUKLSAgICAgc3RydWN0IEEgeyBsb25nIGE7IGNoYXIgYjsgfTsgc3RydWN0IEIgeyBzdHJ1Y3QgQSB4OyBjaGFyIHk7IH07Ci0gICAgIHNob3VsZCBmaW5kIHkgYXQgYW4gb2Zmc2V0IG9mIDIqc2l6ZW9mKGxvbmcpIGFuZCByZXN1bHQgaW4gYQotICAgICB0b3RhbCBzaXplIG9mIDMqc2l6ZW9mKGxvbmcpLiAgKi8KLSAgYXJnLT5zaXplID0gQUxJR04gKGFyZy0+c2l6ZSwgYXJnLT5hbGlnbm1lbnQpOwotCi0gIGlmIChhcmctPnNpemUgPT0gMCkKLSAgICByZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotICBlbHNlCi0gICAgcmV0dXJuIEZGSV9PSzsKLQotICAvKkA9dXNlZGVmQCovCi19Ci0KLS8qIFBlcmZvcm0gbWFjaGluZSBpbmRlcGVuZGVudCBmZmlfY2lmIHByZXBhcmF0aW9uLCB0aGVuIGNhbGwKLSAgIG1hY2hpbmUgZGVwZW5kZW50IHJvdXRpbmUuICovCi0KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmKC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV9jaWYgKmNpZiwgCi0JCQlmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLCAKLQkJCS8qQGRlcGVuZGVudEAqLyAvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfdHlwZSAqcnR5cGUsIAotCQkJLypAZGVwZW5kZW50QCovIGZmaV90eXBlICoqYXR5cGVzKQotewotICB1bnNpZ25lZCBieXRlcyA9IDA7Ci0gIHVuc2lnbmVkIGludCBpOwotICBmZmlfdHlwZSAqKnB0cjsKLQotICBGRklfQVNTRVJUKGNpZiAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVCgoYWJpID4gRkZJX0ZJUlNUX0FCSSkgJiYgKGFiaSA8PSBGRklfREVGQVVMVF9BQkkpKTsKLQotICBjaWYtPmFiaSA9IGFiaTsKLSAgY2lmLT5hcmdfdHlwZXMgPSBhdHlwZXM7Ci0gIGNpZi0+bmFyZ3MgPSBuYXJnczsKLSAgY2lmLT5ydHlwZSA9IHJ0eXBlOwotCi0gIGNpZi0+ZmxhZ3MgPSAwOwotCi0gIC8qIEluaXRpYWxpemUgdGhlIHJldHVybiB0eXBlIGlmIG5lY2Vzc2FyeSAqLwotICAvKkAtdXNlZGVmQCovCi0gIGlmICgoY2lmLT5ydHlwZS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoY2lmLT5ydHlwZSkgIT0gRkZJX09LKSkKLSAgICByZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotICAvKkA9dXNlZGVmQCovCi0KLSAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgcmV0dXJuIHR5cGUgKi8KLSAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKGNpZi0+cnR5cGUpOwotCi0gIC8qIHg4Ni02NCBhbmQgczM5MCBzdGFjayBzcGFjZSBhbGxvY2F0aW9uIGlzIGhhbmRsZWQgaW4gcHJlcF9tYWNoZGVwLiAgKi8KLSNpZiAhZGVmaW5lZCBNNjhLICYmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MAotICAvKiBNYWtlIHNwYWNlIGZvciB0aGUgcmV0dXJuIHN0cnVjdHVyZSBwb2ludGVyICovCi0gIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgLyogTVNWQyByZXR1cm5zIHNtYWxsIHN0cnVjdHVyZXMgaW4gcmVnaXN0ZXJzLiAgQnV0IHdlIGhhdmUgYSBkaWZmZXJlbnQKLSAgICAgIHdvcmthcm91bmQ6IHByZXRlbmQgaW50MzIgb3IgaW50NjQgcmV0dXJuIHR5cGUsIGFuZCBjb252ZXJ0aW5nIHRvCi0gICAgICBzdHJ1Y3R1cmUgYWZ0ZXJ3YXJkcy4gKi8KLSNpZmRlZiBTUEFSQwotICAgICAgJiYgKGNpZi0+YWJpICE9IEZGSV9WOSB8fCBjaWYtPnJ0eXBlLT5zaXplID4gMzIpCi0jZW5kaWYKLSAgICAgICkKLSAgICBieXRlcyA9IFNUQUNLX0FSR19TSVpFKHNpemVvZih2b2lkKikpOwotI2VuZGlmCi0KLSAgZm9yIChwdHIgPSBjaWYtPmFyZ190eXBlcywgaSA9IGNpZi0+bmFyZ3M7IGkgPiAwOyBpLS0sIHB0cisrKQotICAgIHsKLQotICAgICAgLyogSW5pdGlhbGl6ZSBhbnkgdW5pbml0aWFsaXplZCBhZ2dyZWdhdGUgdHlwZSBkZWZpbml0aW9ucyAqLwotICAgICAgaWYgKCgoKnB0ciktPnNpemUgPT0gMCkgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKCgqcHRyKSkgIT0gRkZJX09LKSkKLQlyZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotCi0gICAgICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBhcmd1bWVudCB0eXBlLCBkbyB0aGlzIAotCSBjaGVjayBhZnRlciB0aGUgaW5pdGlhbGl6YXRpb24uICAqLwotICAgICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKCpwdHIpOwotCi0jaWYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwCi0jaWZkZWYgU1BBUkMKLSAgICAgIGlmICgoKCpwdHIpLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotCSAgICYmICgoKnB0ciktPnNpemUgPiAxNiB8fCBjaWYtPmFiaSAhPSBGRklfVjkpKQotCSAgfHwgKCgqcHRyKS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFCi0JICAgICAgJiYgY2lmLT5hYmkgIT0gRkZJX1Y5KSkKLQlieXRlcyArPSBzaXplb2Yodm9pZCopOwotICAgICAgZWxzZQotI2VuZGlmCi0JewotI2lmbmRlZiBfTVNDX1ZFUgotCQkvKiBEb24ndCBrbm93IGlmIHRoaXMgaXMgYSBsaWJmZmkgYnVnIG9yIG5vdC4gIEF0IGxlYXN0IG9uCi0JCSAgIFdpbmRvd3Mgd2l0aCBNU1ZDLCBmdW5jdGlvbiBjYWxsIHBhcmFtZXRlcnMgYXJlICpub3QqCi0JCSAgIGFsaWduZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHN0cnVjdHVyZSBmaWVsZHMgYXJlLCB0aGV5IGFyZQotCQkgICBvbmx5IGFsaWduZWQgaW4gaW50ZWdlciBib3VuZGFyaWVzLgotCi0JCSAgIFRoaXMgZG9lc24ndCBkbyBhbnkgaGFybSBmb3IgY2RlY2wgZnVuY3Rpb25zIGFuZCBjbG9zdXJlcywKLQkJICAgc2luY2UgdGhlIGNhbGxlciBjbGVhbnMgdXAgdGhlIHN0YWNrLCBidXQgaXQgaXMgd3JvbmcgZm9yCi0JCSAgIHN0ZGNhbGwgZnVuY3Rpb25zIHdoZXJlIHRoZSBjYWxsZWUgY2xlYW5zLgotCQkqLwotCi0JICAvKiBBZGQgYW55IHBhZGRpbmcgaWYgbmVjZXNzYXJ5ICovCi0JICBpZiAoKCgqcHRyKS0+YWxpZ25tZW50IC0gMSkgJiBieXRlcykKLQkgICAgYnl0ZXMgPSBBTElHTihieXRlcywgKCpwdHIpLT5hbGlnbm1lbnQpOwotCSAgCi0jZW5kaWYKLQkgIGJ5dGVzICs9IFNUQUNLX0FSR19TSVpFKCgqcHRyKS0+c2l6ZSk7Ci0JfQotI2VuZGlmCi0gICAgfQotCi0gIGNpZi0+Ynl0ZXMgPSBieXRlczsKLQotICAvKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCi0gIHJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcChjaWYpOwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2Uvc3lzdi5hc20gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9zeXN2LmFzbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3OGI5MC4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9zeXN2LmFzbQorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi07IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi07ICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTggUmVkIEhhdCwgSW5jLgotOyAgCi07ICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCi07Ci07ICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLTsgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotOyAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi07ICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi07ICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLTsgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotOyAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotOwotOyAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLTsgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotOwotOyAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotOyAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotOyAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotOyAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotOyAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi07ICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLTsgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLTsgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLTsjZGVmaW5lIExJQkZGSV9BU00gICAgIAotOyNpbmNsdWRlIDxmZmljb25maWcuaD4KLTsjaW5jbHVkZSA8ZmZpLmg+Ci07I2lmZGVmIEhBVkVfTUFDSElORV9BU01fSAotOyNpbmNsdWRlIDxtYWNoaW5lL2FzbS5oPgotOyNlbHNlCi07I2lmZGVmIF9fVVNFUl9MQUJFTF9QUkVGSVhfXwotOyNkZWZpbmUgQ09OQ0FUMShhLCBiKSBDT05DQVQyKGEsIGIpCi07I2RlZmluZSBDT05DQVQyKGEsIGIpIGEgIyMgYgotCi07LyogVXNlIHRoZSByaWdodCBwcmVmaXggZm9yIGdsb2JhbCBsYWJlbHMuICAqLwotOyNkZWZpbmUgQ05BTUUoeCkgQ09OQ0FUMSAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCB4KQotOyNlbHNlCi07I2RlZmluZSBDTkFNRSh4KSB4Ci07I2VuZGlmCi07I2RlZmluZSBFTlRSWSh4KSAuZ2xvYmwgQ05BTUUoeCk7IC50eXBlIENOQU1FKHgpLCVmdW5jdGlvbjsgQ05BTUUoeCk6Ci07I2VuZGlmCi0KLQotRkZJX1RZUEVfVk9JRCAgICAgICBFUVUgMAotRkZJX1RZUEVfSU5UICAgICAgICBFUVUgMQotRkZJX1RZUEVfRkxPQVQgICAgICBFUVUgMgotRkZJX1RZUEVfRE9VQkxFICAgICBFUVUgMwotO0ZGSV9UWVBFX0xPTkdET1VCTEUgRVFVIDQKLUZGSV9UWVBFX1VJTlQ4ICAgICAgRVFVIDUKLUZGSV9UWVBFX1NJTlQ4ICAgICAgRVFVIDYKLUZGSV9UWVBFX1VJTlQxNiAgICAgRVFVIDcKLUZGSV9UWVBFX1NJTlQxNiAgICAgRVFVIDgKLUZGSV9UWVBFX1VJTlQzMiAgICAgRVFVIDkKLUZGSV9UWVBFX1NJTlQzMiAgICAgRVFVIDEwCi1GRklfVFlQRV9VSU5UNjQgICAgIEVRVSAxMQotRkZJX1RZUEVfU0lOVDY0ICAgICBFUVUgMTIKLUZGSV9UWVBFX1NUUlVDVCAgICAgRVFVIDEzCi1GRklfVFlQRV9QT0lOVEVSICAgIEVRVSAxNAotCi07IFdpbkNFIGFsd2F5cyB1c2VzIHNvZnR3YXJlIGZsb2F0aW5nIHBvaW50IChJIHRoaW5rKQotX19TT0ZURlBfXyBFUVUge1RSVUV9Ci0KLQotICAgIEFSRUEgfC50ZXh0fCwgQ09ERSwgQVJNICAgICA7IC50ZXh0Ci0KLQotICAgIDsgYTE6ICAgZmZpX3ByZXBfYXJncwotICAgIDsgYTI6ICAgJmVjaWYKLSAgICA7IGEzOiAgIGNpZi0+Ynl0ZXMKLSAgICA7IGE0OiAgIGZpZy0+ZmxhZ3MKLSAgICA7IHNwKzA6IGVjaWYucnZhbHVlCi0gICAgOyBzcCs0OiBmbgotCi0gICAgOyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KLTtFTlRSWShmZmlfY2FsbF9TWVNWKQotCi0gICAgRVhQT1JUIHxmZmlfY2FsbF9TWVNWfAotCi18ZmZpX2NhbGxfU1lTVnwgUFJPQwotCi0gICAgOyBTYXZlIHJlZ2lzdGVycwotICAgIHN0bWZkIHNwISwge2ExLWE0LCBmcCwgbHJ9Ci0gICAgbW92ICAgZnAsIHNwCi0KLSAgICA7IE1ha2Ugcm9vbSBmb3IgYWxsIG9mIHRoZSBuZXcgYXJncy4KLSAgICBzdWIgICBzcCwgZnAsIGEzCi0KLSAgICA7IFBsYWNlIGFsbCBvZiB0aGUgZmZpX3ByZXBfYXJncyBpbiBwb3NpdGlvbgotICAgIG1vdiAgIGlwLCBhMQotICAgIG1vdiAgIGExLCBzcAotICAgIDsgICAgIGEyIGFscmVhZHkgc2V0Ci0KLSAgICA7IEFuZCBjYWxsCi0gICAgbW92ICAgbHIsIHBjCi0gICAgbW92ICAgcGMsIGlwCi0KLSAgICA7IG1vdmUgZmlyc3QgNCBwYXJhbWV0ZXJzIGluIHJlZ2lzdGVycwotICAgIGxkciAgIGExLCBbc3AsICMwXQotICAgIGxkciAgIGEyLCBbc3AsICM0XQotICAgIGxkciAgIGEzLCBbc3AsICM4XQotICAgIGxkciAgIGE0LCBbc3AsICMxMl0KLQotICAgIDsgYW5kIGFkanVzdCBzdGFjawotICAgIGxkciAgIGlwLCBbZnAsICM4XQotICAgIGNtcCAgIGlwLCAjMTYKLSAgICBtb3ZnZSBpcCwgIzE2Ci0gICAgYWRkICAgc3AsIHNwLCBpcAotCi0gICAgOyBjYWxsIGZ1bmN0aW9uCi0gICAgbW92ICAgbHIsIHBjCi0gICAgbGRyICAgcGMsIFtmcCwgIzI4XQotCi0gICAgOyBSZW1vdmUgdGhlIHNwYWNlIHdlIHB1c2hlZCBmb3IgdGhlIGFyZ3MKLSAgICBtb3YgICBzcCwgZnAKLQotICAgIDsgTG9hZCBhMyB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICBsZHIgICBhMywgW3NwLCAjMjRdCi0KLSAgICA7IExvYWQgYTQgd2l0aCB0aGUgcmV0dXJuIHR5cGUgY29kZSAKLSAgICBsZHIgICBhNCwgW3NwLCAjMTJdCi0KLSAgICA7IElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBOVUxMLCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLgotICAgIGNtcCAgIGEzLCAjMAotICAgIGJlcSAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gSU5UCi0gICAgY21wICAgYTQsICNGRklfVFlQRV9JTlQKLSAgICBzdHJlcSBhMSwgW2EzXQotICAgIGJlcSAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gRkxPQVQKLSAgICBjbXAgICAgIGE0LCAjRkZJX1RZUEVfRkxPQVQKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgc3RyZXEgICBhMSwgW2EzXQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcXMgIGYwLCBbYTNdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gRE9VQkxFIG9yIExPTkdET1VCTEUKLSAgICBjbXAgICAgIGE0LCAjRkZJX1RZUEVfRE9VQkxFCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIHN0bWVxaWEgYTMsIHthMSwgYTJ9Ci0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxZCAgZjAsIFthM10KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBTSU5UNjQgb3IgVUlOVDY0Ci0gICAgY21wICAgICBhNCwgI0ZGSV9UWVBFX1NJTlQ2NAotICAgIHN0bWVxaWEgYTMsIHthMSwgYTJ9Ci0KLWNhbGxfZXBpbG9ndWUKLSAgICBsZG1mZCAgIHNwISwge2ExLWE0LCBmcCwgcGN9Ci0KLTsuZmZpX2NhbGxfU1lTVl9lbmQ6Ci0gICAgOy5zaXplICAgIENOQU1FKGZmaV9jYWxsX1NZU1YpLC5mZmlfY2FsbF9TWVNWX2VuZC1DTkFNRShmZmlfY2FsbF9TWVNWKQotICAgIEVORFAKLQotCi1SRVNFUlZFX1JFVFVSTiBFUVUgMTYKLQotICAgIDsgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRyYW1wb2xpbmUKLSAgICA7IEl0IGlzIE5PVCBjYWxsYWJsZSBmcm9tIEMKLSAgICA7IGlwID0gcG9pbnRlciB0byBzdHJ1Y3QgZmZpX2Nsb3N1cmUKLQotICAgIElNUE9SVCB8ZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcnwKLQotICAgIEVYUE9SVCB8ZmZpX2Nsb3N1cmVfU1lTVnwKLXxmZmlfY2xvc3VyZV9TWVNWfCBQUk9DCi0KLSAgICA7IFN0b3JlIHRoZSBhcmd1bWVudCByZWdpc3RlcnMgb24gdGhlIHN0YWNrCi0gICAgc3RtZmQgICBzcCEsIHthMS1hNH0KLSAgICA7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrCi0gICAgc3RtZmQgICBzcCEsIHtscn0KLQotICAgIG1vdiAgICAgYTEsIGlwICAgICAgICAgICAgOyBmaXJzdCBhcmcgPSBhZGRyZXNzIG9mIGZmaV9jbG9zdXJlCi0gICAgYWRkICAgICBhMiwgc3AsICM0ICAgICAgICA7IHNlY29uZCBhcmcgPSBzcCs0IChwb2ludHMgdG8gc2F2ZWQgYTEpCi0KLSAgICA7IEFsbG9jYXRlIHNwYWNlIGZvciBhIG5vbi1zdHJ1Y3QgcmV0dXJuIHZhbHVlCi0gICAgc3ViICAgICBzcCwgc3AsICNSRVNFUlZFX1JFVFVSTgotICAgIG1vdiAgICAgYTMsIHNwICAgICAgICAgICAgOyB0aGlyZCBhcmcgPSByZXR1cm4gdmFsdWUgYWRkcmVzcwotCi0gICAgOyBzdGF0aWMgdW5zaWduZWQgaW50Ci0gICAgOyBmZmlfY2xvc3VyZV9TWVNWX2lubmVyIChmZmlfY2xvc3VyZSAqY2xvc3VyZSwgY2hhciAqaW5fYXJncywgdm9pZCAqcnZhbHVlKQotICAgIGJsICAgICAgZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcgotICAgIDsgYTEgbm93IGNvbnRhaW5zIHRoZSByZXR1cm4gdHlwZSBjb2RlIAotCi0gICAgOyBBdCB0aGlzIHBvaW50IHRoZSByZXR1cm4gdmFsdWUgaXMgb24gdGhlIHN0YWNrCi0gICAgOyBUcmFuc2ZlciBpdCB0byB0aGUgY29ycmVjdCByZWdpc3RlcnMgaWYgbmVjZXNzYXJ5Ci0KLTsgcmV0dXJuIElOVAotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9JTlQKLSAgICBsZHJlcSAgIGExLCBbc3BdCi0gICAgYmVxICAgICBjbG9zdXJlX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIEZMT0FUCi0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX0ZMT0FUCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIGxkcmVxICAgYTEsIFtzcF0KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFzICBmMCwgW3NwXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjbG9zdXJlX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIERPVUJMRSBvciBMT05HRE9VQkxFCi0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX0RPVUJMRQotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBsZG1lcWlhIHNwLCB7YTEsIGEyfQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcWQgIGYwLCBbc3BdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gU0lOVDY0IG9yIFVJTlQ2NAotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9TSU5UNjQKLSAgICBsZG1lcWlhIHNwLCB7YTEsIGEyfQotCi1jbG9zdXJlX2VwaWxvZ3VlCi0gICAgYWRkICAgICBzcCwgc3AsICNSRVNFUlZFX1JFVFVSTiAgIDsgcmVtb3ZlIHJldHVybiB2YWx1ZSBidWZmZXIKLSAgICBsZG1mZCAgIHNwISwge2lwfSAgICAgICAgIDsgaXAgPSBwb3AgcmV0dXJuIGFkZHJlc3MKLSAgICBhZGQgICAgIHNwLCBzcCwgIzE2ICAgICAgIDsgcmVtb3ZlIHNhdmVkIGFyZ3VtZW50IHJlZ2lzdGVycyB7YTEtYTR9IGZyb20gdGhlIHN0YWNrCi0gICAgbW92ICAgICBwYywgaXAgICAgICAgICAgICA7IHJldHVybgotCi0gICAgRU5EUCAgICA7IGZmaV9jbG9zdXJlX1NZU1YKLQotICAgIEVORApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwppbmRleCAyMjhmNDk3Li4xOGVmMzM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYworKysgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwpAQCAtNiw3ICs2LDcgQEAKIAogLyogUmVsZWFzZSBOdW1iZXIgKi8KIAotc3RhdGljIGNoYXIgKlB5Q3Vyc2VzVmVyc2lvbiA9ICIyLjEiOworc3RhdGljIGNvbnN0IGNoYXIgUHlDdXJzZXNWZXJzaW9uW10gPSAiMi4xIjsKIAogLyogSW5jbHVkZXMgKi8KIApAQCAtNTYsNyArNTYsNyBAQAogICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjaGFyICpmbmFtZSkKK1B5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZuYW1lKQogewogICAgIGlmIChjb2RlICE9IEVSUikgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDk2MDc1MmMuLmE0ODczNWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0yMzA2LDcgKzIzMDYsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgIiIpOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgTlVMTCk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCmluZGV4IGY0MTljYjIuLjVkZGY2NTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwpAQCAtNTYsNiArNTYsNyBAQAogI2RlZmluZSBEQVRFX0dFVF9NSU5VVEUgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX01JTlVURQogI2RlZmluZSBEQVRFX0dFVF9TRUNPTkQgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX1NFQ09ORAogI2RlZmluZSBEQVRFX0dFVF9NSUNST1NFQ09ORCAgICBQeURhdGVUaW1lX0RBVEVfR0VUX01JQ1JPU0VDT05ECisjZGVmaW5lIERBVEVfR0VUX0ZPTEQgICAgICAgICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRAogCiAvKiBEYXRlIGFjY2Vzc29ycyBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUuICovCiAjZGVmaW5lIFNFVF9ZRUFSKG8sIHYpICAgICAgICAgICgoKG8pLT5kYXRhWzBdID0gKCh2KSAmIDB4ZmYwMCkgPj4gOCksIFwKQEAgLTcxLDEyICs3MiwxNCBAQAogICAgICgoKG8pLT5kYXRhWzddID0gKCh2KSAmIDB4ZmYwMDAwKSA+PiAxNiksIFwKICAgICAgKChvKS0+ZGF0YVs4XSA9ICgodikgJiAweDAwZmYwMCkgPj4gOCksIFwKICAgICAgKChvKS0+ZGF0YVs5XSA9ICgodikgJiAweDAwMDBmZikpKQorI2RlZmluZSBEQVRFX1NFVF9GT0xEKG8sIHYpICAgKFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRChvKSA9ICh2KSkKIAogLyogVGltZSBhY2Nlc3NvcnMgZm9yIHRpbWUuICovCiAjZGVmaW5lIFRJTUVfR0VUX0hPVVIgICAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfSE9VUgogI2RlZmluZSBUSU1FX0dFVF9NSU5VVEUgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX01JTlVURQogI2RlZmluZSBUSU1FX0dFVF9TRUNPTkQgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX1NFQ09ORAogI2RlZmluZSBUSU1FX0dFVF9NSUNST1NFQ09ORCAgICBQeURhdGVUaW1lX1RJTUVfR0VUX01JQ1JPU0VDT05ECisjZGVmaW5lIFRJTUVfR0VUX0ZPTEQgICAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfRk9MRAogI2RlZmluZSBUSU1FX1NFVF9IT1VSKG8sIHYpICAgICAoUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSKG8pID0gKHYpKQogI2RlZmluZSBUSU1FX1NFVF9NSU5VVEUobywgdikgICAoUHlEYXRlVGltZV9USU1FX0dFVF9NSU5VVEUobykgPSAodikpCiAjZGVmaW5lIFRJTUVfU0VUX1NFQ09ORChvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX1NFQ09ORChvKSA9ICh2KSkKQEAgLTg0LDYgKzg3LDcgQEAKICAgICAoKChvKS0+ZGF0YVszXSA9ICgodikgJiAweGZmMDAwMCkgPj4gMTYpLCBcCiAgICAgICgobyktPmRhdGFbNF0gPSAoKHYpICYgMHgwMGZmMDApID4+IDgpLCBcCiAgICAgICgobyktPmRhdGFbNV0gPSAoKHYpICYgMHgwMDAwZmYpKSkKKyNkZWZpbmUgVElNRV9TRVRfRk9MRChvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQobykgPSAodikpCiAKIC8qIERlbHRhIGFjY2Vzc29ycyBmb3IgdGltZWRlbHRhLiAqLwogI2RlZmluZSBHRVRfVERfREFZUyhvKSAgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhICopKG8pKS0+ZGF5cykKQEAgLTE4NCwxMiArMTg4LDEyIEBACiAgKiBhbmQgdGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGF0IG1vbnRoIGluIHRoZSBzYW1lIHllYXIuICBUaGVzZQogICogYXJlIGNvcnJlY3QgZm9yIG5vbi1sZWFwIHllYXJzIG9ubHkuCiAgKi8KLXN0YXRpYyBpbnQgX2RheXNfaW5fbW9udGhbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgX2RheXNfaW5fbW9udGhbXSA9IHsKICAgICAwLCAvKiB1bnVzZWQ7IHRoaXMgdmVjdG9yIHVzZXMgMS1iYXNlZCBpbmRleGluZyAqLwogICAgIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzEKIH07CiAKLXN0YXRpYyBpbnQgX2RheXNfYmVmb3JlX21vbnRoW10gPSB7CitzdGF0aWMgY29uc3QgaW50IF9kYXlzX2JlZm9yZV9tb250aFtdID0gewogICAgIDAsIC8qIHVudXNlZDsgdGhpcyB2ZWN0b3IgdXNlcyAxLWJhc2VkIGluZGV4aW5nICovCiAgICAgMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzQKIH07CkBAIC00MTcsNyArNDIxLDcgQEAKICAqIGFyZW4ndCwgcmFpc2UgVmFsdWVFcnJvciBhbmQgcmV0dXJuIC0xLgogICovCiBzdGF0aWMgaW50Ci1jaGVja190aW1lX2FyZ3MoaW50IGgsIGludCBtLCBpbnQgcywgaW50IHVzKQorY2hlY2tfdGltZV9hcmdzKGludCBoLCBpbnQgbSwgaW50IHMsIGludCB1cywgaW50IGZvbGQpCiB7CiAgICAgaWYgKGggPCAwIHx8IGggPiAyMykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTQzOSw2ICs0NDMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb3NlY29uZCBtdXN0IGJlIGluIDAuLjk5OTk5OSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChmb2xkICE9IDAgJiYgZm9sZCAhPSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY3NCw4ICs2ODMsOCBAQAogCiAvKiBDcmVhdGUgYSBkYXRldGltZSBpbnN0YW5jZSB3aXRoIG5vIHJhbmdlIGNoZWNraW5nLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW5ld19kYXRldGltZV9leChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKLSAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQorbmV3X2RhdGV0aW1lX2V4MihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKKyAgICAgICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsIFB5T2JqZWN0ICp0emluZm8sIGludCBmb2xkLCBQeVR5cGVPYmplY3QgKnR5cGUpCiB7CiAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZjsKICAgICBjaGFyIGF3YXJlID0gdHppbmZvICE9IFB5X05vbmU7CkBAIC02OTIsMTggKzcwMSwyNyBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICBzZWxmLT50emluZm8gPSB0emluZm87CiAgICAgICAgIH0KKyAgICAgICAgREFURV9TRVRfRk9MRChzZWxmLCBmb2xkKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKLSNkZWZpbmUgbmV3X2RhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pICAgICAgICAgICBcCi0gICAgbmV3X2RhdGV0aW1lX2V4KHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sICAgICAgICAgICAgXAorc3RhdGljIFB5T2JqZWN0ICoKK25ld19kYXRldGltZV9leChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKKyAgICAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgMCwgdHlwZSk7Cit9CisKKyNkZWZpbmUgbmV3X2RhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQpIFwKKyAgICBuZXdfZGF0ZXRpbWVfZXgyKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQsIFwKICAgICAgICAgICAgICAgICAgICAgJlB5RGF0ZVRpbWVfRGF0ZVRpbWVUeXBlKQogCiAvKiBDcmVhdGUgYSB0aW1lIGluc3RhbmNlIHdpdGggbm8gcmFuZ2UgY2hlY2tpbmcuICovCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3X3RpbWVfZXgoaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCB1c2Vjb25kLAotICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQorbmV3X3RpbWVfZXgyKGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKKyAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvLCBpbnQgZm9sZCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewogICAgIFB5RGF0ZVRpbWVfVGltZSAqc2VsZjsKICAgICBjaGFyIGF3YXJlID0gdHppbmZvICE9IFB5X05vbmU7CkBAIC03MjAsMTIgKzczOCwyMCBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICBzZWxmLT50emluZm8gPSB0emluZm87CiAgICAgICAgIH0KKyAgICAgICAgVElNRV9TRVRfRk9MRChzZWxmLCBmb2xkKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKLSNkZWZpbmUgbmV3X3RpbWUoaGgsIG1tLCBzcywgdXMsIHR6aW5mbykgICAgICAgICAgICAgICAgXAotICAgIG5ld190aW1lX2V4KGhoLCBtbSwgc3MsIHVzLCB0emluZm8sICZQeURhdGVUaW1lX1RpbWVUeXBlKQorc3RhdGljIFB5T2JqZWN0ICoKK25ld190aW1lX2V4KGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3X3RpbWVfZXgyKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sIDAsIHR5cGUpOworfQorCisjZGVmaW5lIG5ld190aW1lKGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbmV3X3RpbWVfZXgyKGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQsICZQeURhdGVUaW1lX1RpbWVUeXBlKQogCiAvKiBDcmVhdGUgYSB0aW1lZGVsdGEgaW5zdGFuY2UuICBOb3JtYWxpemUgdGhlIG1lbWJlcnMgaWZmIG5vcm1hbGl6ZSBpcwogICogdHJ1ZS4gIFBhc3NpbmcgZmFsc2UgaXMgYSBzcGVlZCBvcHRpbWl6YXRpb24sIGlmIHlvdSBrbm93IGZvciBzdXJlCkBAIC04NzMsNyArODk5LDcgQEAKICAqIHRoaXMgcmV0dXJucyBOVUxMLiAgRWxzZSByZXN1bHQgaXMgcmV0dXJuZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX3R6aW5mb19tZXRob2QoUHlPYmplY3QgKnR6aW5mbywgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR6aW5mb2FyZykKK2NhbGxfdHppbmZvX21ldGhvZChQeU9iamVjdCAqdHppbmZvLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHppbmZvYXJnKQogewogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAKQEAgLTg4NywxMCArOTEzLDEwIEBACiAgICAgaWYgKG9mZnNldCA9PSBQeV9Ob25lIHx8IG9mZnNldCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIGlmIChQeURlbHRhX0NoZWNrKG9mZnNldCkpIHsKLSAgICAgICAgaWYgKEdFVF9URF9NSUNST1NFQ09ORFMob2Zmc2V0KSAhPSAwIHx8IEdFVF9URF9TRUNPTkRTKG9mZnNldCkgJSA2MCAhPSAwKSB7CisgICAgICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBzZWNvbmRzIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoKEdFVF9URF9EQVlTKG9mZnNldCkgPT0gLTEgJiYgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSA9PSAwKSB8fApAQCAtMTAwMiw2ICsxMDI4LDMwIEBACiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKKy8qIHJlcHIgaXMgbGlrZSAic29tZWNsYXNzKGFyZzEsIGFyZzIpIi4gIElmIGZvbGQgaXNuJ3QgMCwKKyAqIHN0dWZmCisgKiAgICAgIiwgZm9sZD0iICsgcmVwcih0emluZm8pCisgKiBiZWZvcmUgdGhlIGNsb3NpbmcgIikiLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorYXBwZW5kX2tleXdvcmRfZm9sZChQeU9iamVjdCAqcmVwciwgaW50IGZvbGQpCit7CisgICAgUHlPYmplY3QgKnRlbXA7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHJlcHIpKTsKKyAgICBpZiAoZm9sZCA9PSAwKQorICAgICAgICByZXR1cm4gcmVwcjsKKyAgICAvKiBHZXQgcmlkIG9mIHRoZSB0cmFpbGluZyAnKScuICovCisgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEX0NIQVIocmVwciwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwciktMSkgPT0gJyknKTsKKyAgICB0ZW1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhyZXByLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKSAtIDEpOworICAgIFB5X0RFQ1JFRihyZXByKTsKKyAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLCBmb2xkPSVkKSIsIHRlbXAsIGZvbGQpOworICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTdHJpbmcgZm9ybWF0IGhlbHBlcnMuCiAgKi8KQEAgLTEwMDksMTAgKzEwNTksMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmb3JtYXRfY3RpbWUoUHlEYXRlVGltZV9EYXRlICpkYXRlLCBpbnQgaG91cnMsIGludCBtaW51dGVzLCBpbnQgc2Vjb25kcykKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqRGF5TmFtZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IERheU5hbWVzW10gPSB7CiAgICAgICAgICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iCiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqTW9udGhOYW1lc1tdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgTW9udGhOYW1lc1tdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKQEAgLTEwNTcsMTAgKzExMDcsOCBAQAogICAgIH0KICAgICAvKiBPZmZzZXQgaXMgbm9ybWFsaXplZCwgc28gaXQgaXMgbmVnYXRpdmUgaWYgZGF5cyA8IDAgKi8KICAgICBpZiAoR0VUX1REX0RBWVMob2Zmc2V0KSA8IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBvZmZzZXQ7CiAgICAgICAgIHNpZ24gPSAnLSc7Ci0gICAgICAgIG9mZnNldCA9IGRlbHRhX25lZ2F0aXZlKChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0KTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBQeV9TRVRSRUYob2Zmc2V0LCBkZWx0YV9uZWdhdGl2ZSgoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCkpOwogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMTA3MiwxMCArMTEyMCwxMSBAQAogICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgIG1pbnV0ZXMgPSBkaXZtb2Qoc2Vjb25kcywgNjAsICZzZWNvbmRzKTsKICAgICBob3VycyA9IGRpdm1vZChtaW51dGVzLCA2MCwgJm1pbnV0ZXMpOwotICAgIGFzc2VydChzZWNvbmRzID09IDApOwotICAgIC8qIFhYWCBpZ25vcmUgc3ViLW1pbnV0ZSBkYXRhLCBjdXJyZW50bHkgbm90IGFsbG93ZWQuICovCi0gICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLCBzZXAsIG1pbnV0ZXMpOwotCisgICAgaWYgKHNlY29uZHMgPT0gMCkKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLCBzZXAsIG1pbnV0ZXMpOworICAgIGVsc2UKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLAorICAgICAgICAgICAgICAgICAgICAgIHNlcCwgbWludXRlcywgc2VwLCBzZWNvbmRzKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTMyMyw3ICsxMzcyLDcgQEAKICAgICBpZiAodGltZSAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKHRpbWUpOwogCi0gICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgIigpIik7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzMDcsNyArMjM1Niw3IEBACiAgICAge05VTEwsICAgICAgTlVMTH0sCiB9OwogCi1zdGF0aWMgY2hhciBkZWx0YV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkZWx0YV9kb2NbXSA9CiBQeURvY19TVFIoIkRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXRpbWUgdmFsdWVzLiIpOwogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGRlbHRhX2FzX251bWJlciA9IHsKQEAgLTI0NjIsMjcgKzI1MTEsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgc3RydWN0IHRtICp0bTsKKyAgICBzdHJ1Y3QgdG0gdG07CiAgICAgdGltZV90IHQ7CiAKICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0LCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bSA9IGxvY2FsdGltZSgmdCk7Ci0gICAgaWYgKHRtID09IE5VTEwpIHsKLSAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCi0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0LCAmdG0pICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1fbWRheSk7CiB9CiAKIC8qIFJldHVybiBuZXcgZGF0ZSBmcm9tIGN1cnJlbnQgdGltZS4KQEAgLTI2NDgsNyArMjY4OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9zdHIoUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCBOVUxMKTsKIH0KIAogCkBAIC0yNjc0LDcgKzI3MTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCAiKCkiKTsKKyAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCBOVUxMKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzdWx0ID0gd3JhcF9zdHJmdGltZSgoUHlPYmplY3QgKilzZWxmLCBmb3JtYXQsIHR1cGxlLApAQCAtMjc4Niw5ICsyODI3LDEwIEBACiBzdGF0aWMgUHlfaGFzaF90CiBkYXRlX2hhc2goUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkKKyAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKICAgICAgICAgc2VsZi0+aGFzaGNvZGUgPSBnZW5lcmljX2hhc2goCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKXNlbGYtPmRhdGEsIF9QeURhdGVUaW1lX0RBVEVfREFUQVNJWkUpOworICAgIH0KIAogICAgIHJldHVybiBzZWxmLT5oYXNoY29kZTsKIH0KQEAgLTI4ODYsNyArMjkyOCw3IEBACiAgICAge05VTEwsICAgICAgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIGRhdGVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGF0ZV9kb2NbXSA9CiBQeURvY19TVFIoImRhdGUoeWVhciwgbW9udGgsIGRheSkgLS0+IGRhdGUgb2JqZWN0Iik7CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgZGF0ZV9hc19udW1iZXIgPSB7CkBAIC0zMDQ3LDEwICszMDg5LDggQEAKICAgICBpZiAoZHN0ID09IFB5X05vbmUpCiAgICAgICAgIGdvdG8gSW5jb25zaXN0ZW50OwogICAgIGlmIChkZWx0YV9ib29sKChQeURhdGVUaW1lX0RlbHRhICopZHN0KSAhPSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopZHN0LCAxKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopZHN0LCAxKSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRmFpbDsKICAgICB9CkBAIC0zMDgwLDM3ICszMTIwLDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHppbmZvX3JlZHVjZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnN0YXRlLCAqdG1wOworICAgIFB5T2JqZWN0ICphcmdzLCAqc3RhdGU7CiAgICAgUHlPYmplY3QgKmdldGluaXRhcmdzLCAqZ2V0c3RhdGU7CiAgICAgX1B5X0lERU5USUZJRVIoX19nZXRpbml0YXJnc19fKTsKICAgICBfUHlfSURFTlRJRklFUihfX2dldHN0YXRlX18pOwogCi0gICAgdG1wID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGdldGluaXRhcmdzID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldGluaXRhcmdzX18pOwogICAgIGlmIChnZXRpbml0YXJncyAhPSBOVUxMKSB7Ci0gICAgICAgIGFyZ3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldGluaXRhcmdzLCB0bXApOworICAgICAgICBhcmdzID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhnZXRpbml0YXJncyk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRpbml0YXJncyk7CiAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGFyZ3MgPSB0bXA7Ci0gICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKKworICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogCiAgICAgZ2V0c3RhdGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZ2V0c3RhdGVfXyk7CiAgICAgaWYgKGdldHN0YXRlICE9IE5VTEwpIHsKLSAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldHN0YXRlLCB0bXApOworICAgICAgICBzdGF0ZSA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZ2V0c3RhdGUpOwogICAgICAgICBQeV9ERUNSRUYoZ2V0c3RhdGUpOwogICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTMxMTksMTMgKzMxNTYsMTIgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgc3RhdGUgPSBQeV9Ob25lOwogICAgICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIoc2VsZik7Ci0gICAgICAgIGlmIChkaWN0cHRyICYmICpkaWN0cHRyICYmIFB5RGljdF9TaXplKCpkaWN0cHRyKSkKKyAgICAgICAgaWYgKGRpY3RwdHIgJiYgKmRpY3RwdHIgJiYgUHlEaWN0X1NpemUoKmRpY3RwdHIpKSB7CiAgICAgICAgICAgICBzdGF0ZSA9ICpkaWN0cHRyOworICAgICAgICB9CiAgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHRtcCk7Ci0KICAgICBpZiAoc3RhdGUgPT0gUHlfTm9uZSkgewogICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGFyZ3MpOwpAQCAtMzE1NSw3ICszMTkxLDcgQEAKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHR6aW5mb19kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0emluZm9fZG9jW10gPQogUHlEb2NfU1RSKCJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aW1lIHpvbmUgaW5mbyBvYmplY3RzLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVFpJbmZvVHlwZSA9IHsKQEAgLTMyODcsNiArMzMyMywxMSBAQAogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+bmFtZSk7CiAgICAgICAgIHJldHVybiBzZWxmLT5uYW1lOwogICAgIH0KKyAgICBpZiAoKFB5T2JqZWN0ICopc2VsZiA9PSBQeURhdGVUaW1lX1RpbWVab25lX1VUQyB8fAorICAgICAgICAgICAoR0VUX1REX0RBWVMoc2VsZi0+b2Zmc2V0KSA9PSAwICYmCisgICAgICAgICAgICBHRVRfVERfU0VDT05EUyhzZWxmLT5vZmZzZXQpID09IDAgJiYKKyAgICAgICAgICAgIEdFVF9URF9NSUNST1NFQ09ORFMoc2VsZi0+b2Zmc2V0KSA9PSAwKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJVVEMiKTsKICAgICAvKiBPZmZzZXQgaXMgbm9ybWFsaXplZCwgc28gaXQgaXMgbmVnYXRpdmUgaWYgZGF5cyA8IDAgKi8KICAgICBpZiAoR0VUX1REX0RBWVMoc2VsZi0+b2Zmc2V0KSA8IDApIHsKICAgICAgICAgc2lnbiA9ICctJzsKQEAgLTMzODIsNyArMzQyMyw3IEBACiAgICAge05VTEwsIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciB0aW1lem9uZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0aW1lem9uZV9kb2NbXSA9CiBQeURvY19TVFIoIkZpeGVkIG9mZnNldCBmcm9tIFVUQyBpbXBsZW1lbnRhdGlvbiBvZiB0emluZm8uIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9UaW1lWm9uZVR5cGUgPSB7CkBAIC0zNDY2LDEyICszNTA3LDE5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfZm9sZChQeURhdGVUaW1lX1RpbWUgKnNlbGYsIHZvaWQgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFRJTUVfR0VUX0ZPTEQoc2VsZikpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgdGltZV9nZXRzZXRbXSA9IHsKICAgICB7ImhvdXIiLCAgICAgICAgKGdldHRlcil0aW1lX2hvdXJ9LAogICAgIHsibWludXRlIiwgICAgICAoZ2V0dGVyKXRpbWVfbWludXRlfSwKICAgICB7InNlY29uZCIsICAgICAgKGdldHRlcilweV90aW1lX3NlY29uZH0sCiAgICAgeyJtaWNyb3NlY29uZCIsIChnZXR0ZXIpdGltZV9taWNyb3NlY29uZH0sCi0gICAgeyJ0emluZm8iLCAgICAgICAgICAoZ2V0dGVyKXRpbWVfdHppbmZvfSwKKyAgICB7InR6aW5mbyIsICAgICAgKGdldHRlcil0aW1lX3R6aW5mb30sCisgICAgeyJmb2xkIiwgICAgICAgIChnZXR0ZXIpdGltZV9mb2xkfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTM0ODAsNyArMzUyOCw3IEBACiAgKi8KIAogc3RhdGljIGNoYXIgKnRpbWVfa3dzW10gPSB7ImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWNyb3NlY29uZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAidHppbmZvIiwgTlVMTH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAidHppbmZvIiwgImZvbGQiLCBOVUxMfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKQEAgLTM0OTIsMTMgKzM1NDAsMTQgQEAKICAgICBpbnQgc2Vjb25kID0gMDsKICAgICBpbnQgdXNlY29uZCA9IDA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSAwOwogCiAgICAgLyogQ2hlY2sgZm9yIGludm9jYXRpb24gZnJvbSBwaWNrbGUgd2l0aCBfX2dldHN0YXRlX18gc3RhdGUgKi8KICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA+PSAxICYmCiAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPD0gMiAmJgogICAgICAgICBQeUJ5dGVzX0NoZWNrKHN0YXRlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSkgJiYKICAgICAgICAgUHlCeXRlc19HRVRfU0laRShzdGF0ZSkgPT0gX1B5RGF0ZVRpbWVfVElNRV9EQVRBU0laRSAmJgotICAgICAgICAoKHVuc2lnbmVkIGNoYXIpIChQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMF0pKSA8IDI0KQorICAgICAgICAoMHg3RiAmICgodW5zaWduZWQgY2hhcikgKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVswXSkpKSA8IDI0KQogICAgIHsKICAgICAgICAgUHlEYXRlVGltZV9UaW1lICptZTsKICAgICAgICAgY2hhciBhd2FyZTsKQEAgLTM1MjMsMTkgKzM1NzIsMjYgQEAKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgICAgICBtZS0+dHppbmZvID0gdHppbmZvOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBkYXRhWzBdICYgKDEgPDwgNykpIHsKKyAgICAgICAgICAgICAgICBtZS0+ZGF0YVswXSAtPSAxMjg7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAwOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiltZTsKICAgICB9CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPIiwgdGltZV9rd3MsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyRpIiwgdGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaG91ciwgJm1pbnV0ZSwgJnNlY29uZCwgJnVzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvKSkgewotICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvLCAmZm9sZCkpIHsKKyAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgZm9sZCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZiA9IG5ld190aW1lX2V4KGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKKyAgICAgICAgc2VsZiA9IG5ld190aW1lX2V4Mihob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgdHppbmZvLCBmb2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTM1ODUsNiArMzY0MSw3IEBACiAgICAgaW50IG0gPSBUSU1FX0dFVF9NSU5VVEUoc2VsZik7CiAgICAgaW50IHMgPSBUSU1FX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CisgICAgaW50IGZvbGQgPSBUSU1FX0dFVF9GT0xEKHNlbGYpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCiAgICAgaWYgKHVzKQpAQCAtMzU5NywzMyArMzY1NCw2OCBAQAogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJWQsICVkKSIsIHR5cGVfbmFtZSwgaCwgbSk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIEhBU1RaSU5GTyhzZWxmKSkKICAgICAgICAgcmVzdWx0ID0gYXBwZW5kX2tleXdvcmRfdHppbmZvKHJlc3VsdCwgc2VsZi0+dHppbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgZm9sZCkKKyAgICAgICAgcmVzdWx0ID0gYXBwZW5kX2tleXdvcmRfZm9sZChyZXN1bHQsIGZvbGQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3N0cihQeURhdGVUaW1lX1RpbWUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQordGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIGNoYXIgYnVmWzEwMF07CisgICAgY2hhciAqdGltZXNwZWMgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0aW1lc3BlYyIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CisgICAgc3RhdGljIGNoYXIgKnNwZWNzW11bMl0gPSB7CisgICAgICAgIHsiaG91cnMiLCAiJTAyZCJ9LAorICAgICAgICB7Im1pbnV0ZXMiLCAiJTAyZDolMDJkIn0sCisgICAgICAgIHsic2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZCJ9LAorICAgICAgICB7Im1pbGxpc2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZC4lMDNkIn0sCisgICAgICAgIHsibWljcm9zZWNvbmRzIiwgIiUwMmQ6JTAyZDolMDJkLiUwNmQifSwKKyAgICB9OworICAgIHNpemVfdCBnaXZlbl9zcGVjOwogCi0gICAgaWYgKHVzKQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTAyZDolMDJkOiUwMmQuJTA2ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORChzZWxmKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8czppc29mb3JtYXQiLCBrZXl3b3JkcywgJnRpbWVzcGVjKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodGltZXNwZWMgPT0gTlVMTCB8fCBzdHJjbXAodGltZXNwZWMsICJhdXRvIikgPT0gMCkgeworICAgICAgICBpZiAodXMgPT0gMCkgeworICAgICAgICAgICAgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGdpdmVuX3NwZWMgPSAwOyBnaXZlbl9zcGVjIDwgUHlfQVJSQVlfTEVOR1RIKHNwZWNzKTsgZ2l2ZW5fc3BlYysrKSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKHRpbWVzcGVjLCBzcGVjc1tnaXZlbl9zcGVjXVswXSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnaXZlbl9zcGVjID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogbWlsbGlzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgIHVzID0gdXMgLyAxMDAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChnaXZlbl9zcGVjID09IFB5X0FSUkFZX0xFTkdUSChzcGVjcykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJVbmtub3duIHRpbWVzcGVjIHZhbHVlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoc3BlY3NbZ2l2ZW5fc3BlY11bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksIFRJTUVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpLCB1cyk7CisgICAgfQogCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8ICFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNzUwLDkgKzM4NDIsMjMgQEAKIHRpbWVfaGFzaChQeURhdGVUaW1lX1RpbWUgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPmhhc2hjb2RlID09IC0xKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvZmZzZXQ7Ci0KLSAgICAgICAgb2Zmc2V0ID0gdGltZV91dGNvZmZzZXQoKFB5T2JqZWN0ICopc2VsZiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpvZmZzZXQsICpzZWxmMDsKKyAgICAgICAgaWYgKERBVEVfR0VUX0ZPTEQoc2VsZikpIHsKKyAgICAgICAgICAgIHNlbGYwID0gbmV3X3RpbWVfZXgyKERBVEVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeV9UWVBFKHNlbGYpKTsKKyAgICAgICAgICAgIGlmIChzZWxmMCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYwID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmMCk7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID0gdGltZV91dGNvZmZzZXQoc2VsZjAsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VsZjApOwogCiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTM3OTgsMTUgKzM5MDQsMjQgQEAKICAgICBpbnQgc3MgPSBUSU1FX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSBUSU1FX0dFVF9GT0xEKHNlbGYpOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPOnJlcGxhY2UiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyRpOnJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX2t3cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhoLCAmbW0sICZzcywgJnVzLCAmdHppbmZvKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhoLCAmbW0sICZzcywgJnVzLCAmdHppbmZvLCAmZm9sZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlpaU8iLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2xvbmUgPSB0aW1lX25ldyhQeV9UWVBFKHNlbGYpLCB0dXBsZSwgTlVMTCk7CisgICAgaWYgKGNsb25lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgVElNRV9TRVRfRk9MRChjbG9uZSwgZm9sZCk7CisgICAgfQogICAgIFB5X0RFQ1JFRih0dXBsZSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQpAQCAtMzgxOSw3ICszOTM0LDcgQEAKICAqIF9fZ2V0c3RhdGVfXyBpc24ndCBleHBvc2VkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX1RpbWUgKnNlbGYpCit0aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICpiYXNlc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CkBAIC0zODI3LDYgKzM5NDIsOSBAQAogICAgIGJhc2VzdGF0ZSA9ICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopc2VsZi0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RGF0ZVRpbWVfVElNRV9EQVRBU0laRSk7CiAgICAgaWYgKGJhc2VzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwcm90byA+IDMgJiYgVElNRV9HRVRfRk9MRChzZWxmKSkKKyAgICAgICAgICAgIC8qIFNldCB0aGUgZmlyc3QgYml0IG9mIHRoZSBmaXJzdCBieXRlICovCisgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhiYXNlc3RhdGUpWzBdIHw9ICgxIDw8IDcpOwogICAgICAgICBpZiAoISBIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMSwgYmFzZXN0YXRlKTsKICAgICAgICAgZWxzZQpAQCAtMzgzNywxNiArMzk1NSwyMSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9yZWR1Y2UoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJnKQordGltZV9yZWR1Y2UoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIHRpbWVfZ2V0c3RhdGUoc2VsZikpOworICAgIGludCBwcm90byA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIHRpbWVfZ2V0c3RhdGUoc2VsZiwgcHJvdG8pKTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIHRpbWVfbWV0aG9kc1tdID0gewogCi0gICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbil0aW1lX2lzb2Zvcm1hdCwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIlJldHVybiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCBISDpNTTpTU1subW1tbW1tXSIKLSAgICAgICAgICAgICAgICJbK0hIOk1NXS4iKX0sCisgICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbil0aW1lX2lzb2Zvcm1hdCwgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigiUmV0dXJuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQsIFtISFs6TU1bOlNTWy5tbW1bdXV1XV1dXV0iCisgICAgICAgICAgICAgICAiWytISDpNTV0uXG5cbiIKKyAgICAgICAgICAgICAgICJ0aW1lc3BlYyBzcGVjaWZpZXMgd2hhdCBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUuXG4iKX0sCiAKICAgICB7InN0cmZ0aW1lIiwgICAgICAgIChQeUNGdW5jdGlvbil0aW1lX3N0cmZ0aW1lLCAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJmb3JtYXQgLT4gc3RyZnRpbWUoKSBzdHlsZSBzdHJpbmcuIil9LApAQCAtMzg2NiwxMyArMzk4OSwxMyBAQAogICAgIHsicmVwbGFjZSIsICAgICAoUHlDRnVuY3Rpb24pdGltZV9yZXBsYWNlLCAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoIlJldHVybiB0aW1lIHdpdGggbmV3IHNwZWNpZmllZCBmaWVsZHMuIil9LAogCi0gICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXRpbWVfcmVkdWNlLCAgICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfXygpIC0+IChjbHMsIHN0YXRlKSIpfSwKKyAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pdGltZV9yZWR1Y2UsICAgICAgICBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfZXhfXyhwcm90bykgLT4gKGNscywgc3RhdGUpIil9LAogCiAgICAge05VTEwsICAgICAgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHRpbWVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgdGltZV9kb2NbXSA9CiBQeURvY19TVFIoInRpbWUoW2hvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dKSAtLT4gYSB0aW1lIG9iamVjdFxuXAogXG5cCiBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbiBpbnN0YW5jZSBvZlxuXApAQCAtMzk2MCwxMiArNDA4MywxOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9mb2xkKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIHZvaWQgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKERBVEVfR0VUX0ZPTEQoc2VsZikpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgZGF0ZXRpbWVfZ2V0c2V0W10gPSB7CiAgICAgeyJob3VyIiwgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfaG91cn0sCiAgICAgeyJtaW51dGUiLCAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfbWludXRlfSwKICAgICB7InNlY29uZCIsICAgICAgKGdldHRlcilkYXRldGltZV9zZWNvbmR9LAogICAgIHsibWljcm9zZWNvbmQiLCAoZ2V0dGVyKWRhdGV0aW1lX21pY3Jvc2Vjb25kfSwKLSAgICB7InR6aW5mbyIsICAgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfdHppbmZvfSwKKyAgICB7InR6aW5mbyIsICAgICAgKGdldHRlcilkYXRldGltZV90emluZm99LAorICAgIHsiZm9sZCIsICAgICAgICAoZ2V0dGVyKWRhdGV0aW1lX2ZvbGR9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzk3NSw3ICs0MTA1LDcgQEAKIAogc3RhdGljIGNoYXIgKmRhdGV0aW1lX2t3c1tdID0gewogICAgICJ5ZWFyIiwgIm1vbnRoIiwgImRheSIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLAotICAgICJtaWNyb3NlY29uZCIsICJ0emluZm8iLCBOVUxMCisgICAgIm1pY3Jvc2Vjb25kIiwgInR6aW5mbyIsICJmb2xkIiwgTlVMTAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM5OTAsNiArNDEyMCw3IEBACiAgICAgaW50IG1pbnV0ZSA9IDA7CiAgICAgaW50IHNlY29uZCA9IDA7CiAgICAgaW50IHVzZWNvbmQgPSAwOworICAgIGludCBmb2xkID0gMDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKIAogICAgIC8qIENoZWNrIGZvciBpbnZvY2F0aW9uIGZyb20gcGlja2xlIHdpdGggX19nZXRzdGF0ZV9fIHN0YXRlICovCkBAIC0zOTk3LDcgKzQxMjgsNyBAQAogICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDw9IDIgJiYKICAgICAgICAgUHlCeXRlc19DaGVjayhzdGF0ZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpICYmCiAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc3RhdGUpID09IF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFICYmCi0gICAgICAgIE1PTlRIX0lTX1NBTkUoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzJdKSkKKyAgICAgICAgTU9OVEhfSVNfU0FORShQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMl0gJiAweDdGKSkKICAgICB7CiAgICAgICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKm1lOwogICAgICAgICBjaGFyIGF3YXJlOwpAQCAtNDAyMiwyOCArNDE1Myw3MyBAQAogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgICAgIG1lLT50emluZm8gPSB0emluZm87CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGRhdGFbMl0gJiAoMSA8PCA3KSkgeworICAgICAgICAgICAgICAgIG1lLT5kYXRhWzJdIC09IDEyODsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1lOwogICAgIH0KIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJpaWl8aWlpaU8iLCBkYXRldGltZV9rd3MsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImlpaXxpaWlpTyRpIiwgZGF0ZXRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnllYXIsICZtb250aCwgJmRheSwgJmhvdXIsICZtaW51dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vjb25kLCAmdXNlY29uZCwgJnR6aW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWNvbmQsICZ1c2Vjb25kLCAmdHppbmZvLCAmZm9sZCkpIHsKICAgICAgICAgaWYgKGNoZWNrX2RhdGVfYXJncyh5ZWFyLCBtb250aCwgZGF5KSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCkgPCAwKQorICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzZWxmID0gbmV3X2RhdGV0aW1lX2V4KHllYXIsIG1vbnRoLCBkYXksCisgICAgICAgIHNlbGYgPSBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIGZvbGQsIHR5cGUpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLyogVE1fRlVOQyBpcyB0aGUgc2hhcmVkIHR5cGUgb2YgbG9jYWx0aW1lKCkgYW5kIGdtdGltZSgpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgdG0gKigqVE1fRlVOQykoY29uc3QgdGltZV90ICp0aW1lcik7CisvKiBUTV9GVU5DIGlzIHRoZSBzaGFyZWQgdHlwZSBvZiBfUHlUaW1lX2xvY2FsdGltZSgpIGFuZAorICogX1B5VGltZV9nbXRpbWUoKS4gKi8KK3R5cGVkZWYgaW50ICgqVE1fRlVOQykodGltZV90IHRpbWVyLCBzdHJ1Y3QgdG0qKTsKKworLyogQXMgb2YgdmVyc2lvbiAyMDE1ZiBtYXggZm9sZCBpbiBJQU5BIGRhdGFiYXNlIGlzCisgKiAyMyBob3VycyBhdCAxOTY5LTA5LTMwIDEzOjAwOjAwIGluIEt3YWphbGVpbi4gKi8KK3N0YXRpYyBsb25nIGxvbmcgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMDsKKy8qIE5COiBkYXRlKDE5NzAsMSwxKS50b29yZGluYWwoKSA9PSA3MTkxNjMgKi8KK3N0YXRpYyBsb25nIGxvbmcgZXBvY2ggPSA3MTkxNjNMTCAqIDI0ICogNjAgKiA2MDsKKworc3RhdGljIGxvbmcgbG9uZwordXRjX3RvX3NlY29uZHMoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kKQoreworICAgIGxvbmcgbG9uZyBvcmRpbmFsID0geW1kX3RvX29yZCh5ZWFyLCBtb250aCwgZGF5KTsKKyAgICByZXR1cm4gKChvcmRpbmFsICogMjQgKyBob3VyKSAqIDYwICsgbWludXRlKSAqIDYwICsgc2Vjb25kOworfQorCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbChsb25nIGxvbmcgdSkKK3sKKyAgICBzdHJ1Y3QgdG0gbG9jYWxfdGltZTsKKyAgICB0aW1lX3QgdDsKKyAgICB1IC09IGVwb2NoOworICAgIHQgPSB1OworICAgIGlmICh0ICE9IHUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBYWFg6IGFkZCBib3VuZHMgY2hlY2tpbmcgKi8KKyAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodCwgJmxvY2FsX3RpbWUpICE9IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gdXRjX3RvX3NlY29uZHMobG9jYWxfdGltZS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fc2VjKTsKK30KIAogLyogSW50ZXJuYWwgaGVscGVyLgogICogQnVpbGQgZGF0ZXRpbWUgZnJvbSBhIHRpbWVfdCBhbmQgYSBkaXN0aW5jdCBjb3VudCBvZiBtaWNyb3NlY29uZHMuCkBAIC00MDUzLDcyICs0MjI5LDQ2IEBACiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIHRpbWVfdCB0aW1ldCwgaW50IHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKLSAgICBzdHJ1Y3QgdG0gKnRtOworICAgIHN0cnVjdCB0bSB0bTsKKyAgICBpbnQgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZvbGQgPSAwOwogCi0gICAgdG0gPSBmKCZ0aW1ldCk7Ci0gICAgaWYgKHRtID09IE5VTEwpIHsKLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgIH0KKyAgICBpZiAoZih0aW1ldCwgJnRtKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIHllYXIgPSB0bS50bV95ZWFyICsgMTkwMDsKKyAgICBtb250aCA9IHRtLnRtX21vbiArIDE7CisgICAgZGF5ID0gdG0udG1fbWRheTsKKyAgICBob3VyID0gdG0udG1faG91cjsKKyAgICBtaW51dGUgPSB0bS50bV9taW47CiAgICAgLyogVGhlIHBsYXRmb3JtIGxvY2FsdGltZS9nbXRpbWUgbWF5IGluc2VydCBsZWFwIHNlY29uZHMsCi0gICAgICogaW5kaWNhdGVkIGJ5IHRtLT50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKKyAgICAgKiBpbmRpY2F0ZWQgYnkgdG0udG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCiAgICAgICogZXhjZXB0IHRvIHRoZSBleHRlbnQgdGhhdCBwYXNzaW5nIHRoZW0gb24gdG8gdGhlIGRhdGV0aW1lCiAgICAgICogY29uc3RydWN0b3Igd291bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgYSByZWFzb24gdGhhdAogICAgICAqIG1hZGUgbm8gc2Vuc2UgdG8gdGhlIHVzZXIuCiAgICAgICovCi0gICAgaWYgKHRtLT50bV9zZWMgPiA1OSkKLSAgICAgICAgdG0tPnRtX3NlYyA9IDU5OwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7Ci19CisgICAgc2Vjb25kID0gUHlfTUlOKDU5LCB0bS50bV9zZWMpOwogCi1zdGF0aWMgdGltZV90Ci1fUHlUaW1lX0RvdWJsZVRvVGltZXQoZG91YmxlIHgpCi17Ci0gICAgdGltZV90IHJlc3VsdDsKLSAgICBkb3VibGUgZGlmZjsKKyAgICBpZiAodHppbmZvID09IFB5X05vbmUgJiYgZiA9PSBfUHlUaW1lX2xvY2FsdGltZSkgeworICAgICAgICBsb25nIGxvbmcgcHJvYmVfc2Vjb25kcywgcmVzdWx0X3NlY29uZHMsIHRyYW5zaXRpb247CiAKLSAgICByZXN1bHQgPSAodGltZV90KXg7Ci0gICAgLyogSG93IG11Y2ggaW5mbyBkaWQgd2UgbG9zZT8gIHRpbWVfdCBtYXkgYmUgYW4gaW50ZWdyYWwgb3IKLSAgICAgKiBmbG9hdGluZyB0eXBlLCBhbmQgd2UgZG9uJ3Qga25vdyB3aGljaC4gIElmIGl0J3MgaW50ZWdyYWwsCi0gICAgICogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIEMgdHJ1bmNhdGVzLCByb3VuZHMsIHJldHVybnMgdGhlIGZsb29yLAotICAgICAqIGV0Yy4gIElmIHdlIGxvc3QgYSBzZWNvbmQgb3IgbW9yZSwgdGhlIEMgcm91bmRpbmcgaXMKLSAgICAgKiB1bnJlYXNvbmFibGUsIG9yIHRoZSBpbnB1dCBqdXN0IGRvZXNuJ3QgZml0IGluIGEgdGltZV90OwotICAgICAqIGNhbGwgaXQgYW4gZXJyb3IgcmVnYXJkbGVzcy4gIE5vdGUgdGhhdCB0aGUgb3JpZ2luYWwgY2FzdCB0bwotICAgICAqIHRpbWVfdCBjYW4gY2F1c2UgYSBDIGVycm9yIHRvbywgYnV0IG5vdGhpbmcgd2UgY2FuIGRvIHRvCi0gICAgICogd29ybSBhcm91bmQgdGhhdC4KLSAgICAgKi8KLSAgICBkaWZmID0geCAtIChkb3VibGUpcmVzdWx0OwotICAgIGlmIChkaWZmIDw9IC0xLjAgfHwgZGlmZiA+PSAxLjApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Ci0gICAgICAgIHJlc3VsdCA9ICh0aW1lX3QpLTE7CisgICAgICAgIHJlc3VsdF9zZWNvbmRzID0gdXRjX3RvX3NlY29uZHMoeWVhciwgbW9udGgsIGRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgICAgIC8qIFByb2JlIG1heF9mb2xkX3NlY29uZHMgdG8gZGV0ZWN0IGEgZm9sZC4gKi8KKyAgICAgICAgcHJvYmVfc2Vjb25kcyA9IGxvY2FsKGVwb2NoICsgdGltZXQgLSBtYXhfZm9sZF9zZWNvbmRzKTsKKyAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgdHJhbnNpdGlvbiA9IHJlc3VsdF9zZWNvbmRzIC0gcHJvYmVfc2Vjb25kcyAtIG1heF9mb2xkX3NlY29uZHM7CisgICAgICAgIGlmICh0cmFuc2l0aW9uIDwgMCkgeworICAgICAgICAgICAgcHJvYmVfc2Vjb25kcyA9IGxvY2FsKGVwb2NoICsgdGltZXQgKyB0cmFuc2l0aW9uKTsKKyAgICAgICAgICAgIGlmIChwcm9iZV9zZWNvbmRzID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gcmVzdWx0X3NlY29uZHMpCisgICAgICAgICAgICAgICAgZm9sZCA9IDE7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUm91bmQgYSBkb3VibGUgdG8gdGhlIG5lYXJlc3QgbG9uZy4gIHx4fCBtdXN0IGJlIHNtYWxsIGVub3VnaCB0byBmaXQKLSAqIGluIGEgQyBsb25nOyB0aGlzIGlzIG5vdCBjaGVja2VkLgotICovCi1zdGF0aWMgZG91YmxlCi1fUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZG91YmxlIHgpCi17Ci0gICAgZG91YmxlIHJvdW5kZWQgPSByb3VuZCh4KTsKLSAgICBpZiAoZmFicyh4LXJvdW5kZWQpID09IDAuNSkKLSAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCi0gICAgICAgIHJvdW5kZWQgPSAyLjAqcm91bmQoeC8yLjApOwotICAgIHJldHVybiByb3VuZGVkOworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlLCBzZWNvbmQsIHVzLCB0emluZm8sIGZvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKWNscyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQxMjksMzIgKzQyNzksMTcgQEAKICAqIHRvIGdldCB0aGF0IG11Y2ggcHJlY2lzaW9uIChlLmcuLCBDIHRpbWUoKSBpc24ndCBnb29kIGVub3VnaCkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIGRvdWJsZSB0aW1lc3RhbXAsCitkYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIFB5T2JqZWN0ICp0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewogICAgIHRpbWVfdCB0aW1ldDsKLSAgICBkb3VibGUgZnJhY3Rpb247Ci0gICAgaW50IHVzOworICAgIGxvbmcgdXM7CiAKLSAgICB0aW1ldCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh0aW1lc3RhbXApOwotICAgIGlmICh0aW1ldCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWV0LCAmdXMsIF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnJhY3Rpb24gPSB0aW1lc3RhbXAgLSAoZG91YmxlKXRpbWV0OwotICAgIHVzID0gKGludClfUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZnJhY3Rpb24gKiAxZTYpOwotICAgIGlmICh1cyA8IDApIHsKLSAgICAgICAgLyogVHJ1bmNhdGlvbiB0b3dhcmRzIHplcm8gaXMgbm90IHdoYXQgd2Ugd2FudGVkCi0gICAgICAgICAgIGZvciBuZWdhdGl2ZSBudW1iZXJzIChQeXRob24ncyBtb2Qgc2VtYW50aWNzKSAqLwotICAgICAgICB0aW1ldCAtPSAxOwotICAgICAgICB1cyArPSAxMDAwMDAwOwotICAgIH0KLSAgICAvKiBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQotICAgICAqIGZ1bGwgc2Vjb25kLCByb3VuZCB1cC4gT3RoZXJ3aXNlLCBWYWx1ZUVycm9ycyBhcmUgcmFpc2VkCi0gICAgICogZm9yIHNvbWUgZmxvYXRzLiAqLwotICAgIGlmICh1cyA9PSAxMDAwMDAwKSB7Ci0gICAgICAgIHRpbWV0ICs9IDE7Ci0gICAgICAgIHVzID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIHVzLCB0emluZm8pOworCisgICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIChpbnQpdXMsIHR6aW5mbyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQyMDEsMTQgKzQzMzYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzZWxmID0gZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZSgoUHlPYmplY3QgKil0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6ID09IFB5X05vbmUgPyBsb2NhbHRpbWUgOiBnbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHogPT0gUHlfTm9uZSA/IF9QeVRpbWVfbG9jYWx0aW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX2dtdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eik7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCAmJiB0eiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLQotICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eiwgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eiwgJlB5SWRfZnJvbXV0YywgIk4iLCBzZWxmKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC00MjE5LDcgKzQzNTIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y25vdyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqZHVtbXkpCiB7Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoY2xzLCBnbXRpbWUsIFB5X05vbmUpOworICAgIHJldHVybiBkYXRldGltZV9iZXN0X3Bvc3NpYmxlKGNscywgX1B5VGltZV9nbXRpbWUsIFB5X05vbmUpOwogfQogCiAvKiBSZXR1cm4gbmV3IGxvY2FsIGRhdGV0aW1lIGZyb20gdGltZXN0YW1wIChQeXRob24gdGltZXN0YW1wIC0tIGEgZG91YmxlKS4gKi8KQEAgLTQyMjcsMjYgKzQzNjAsMjQgQEAKIGRhdGV0aW1lX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeU9iamVjdCAqc2VsZjsKLSAgICBkb3VibGUgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICp0aW1lc3RhbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InRpbWVzdGFtcCIsICJ0eiIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiZHxPOmZyb210aW1lc3RhbXAiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98Tzpmcm9tdGltZXN0YW1wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsICZ0aW1lc3RhbXAsICZ0emluZm8pKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNlbGYgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyA9PSBQeV9Ob25lID8gbG9jYWx0aW1lIDogZ210aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8gPT0gUHlfTm9uZSA/IF9QeVRpbWVfbG9jYWx0aW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9nbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6aW5mbyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLQotICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgc2VsZik7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgc2VsZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTiIsIHNlbGYpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTQyNTUsMTEgKzQzODYsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV91dGNmcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKLSAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBnbXRpbWUsIHRpbWVzdGFtcCwKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1dGNmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgICAgIHJlc3VsdCA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywgX1B5VGltZV9nbXRpbWUsIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQyODgsMjcgKzQ0MTksMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9jb21iaW5lKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImRhdGUiLCAidGltZSIsIE5VTEx9OworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJkYXRlIiwgInRpbWUiLCAidHppbmZvIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKmRhdGU7CiAgICAgUHlPYmplY3QgKnRpbWU7CisgICAgUHlPYmplY3QgKnR6aW5mbyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyFPITpjb21iaW5lIiwga2V5d29yZHMsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hTyF8Tzpjb21iaW5lIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9EYXRlVHlwZSwgJmRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UaW1lVHlwZSwgJnRpbWUpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwotCi0gICAgICAgIGlmIChIQVNUWklORk8odGltZSkpCi0gICAgICAgICAgICB0emluZm8gPSAoKFB5RGF0ZVRpbWVfVGltZSAqKXRpbWUpLT50emluZm87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UaW1lVHlwZSwgJnRpbWUsICZ0emluZm8pKSB7CisgICAgICAgIGlmICh0emluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKEhBU1RaSU5GTyh0aW1lKSkKKyAgICAgICAgICAgICAgICB0emluZm8gPSAoKFB5RGF0ZVRpbWVfVGltZSAqKXRpbWUpLT50emluZm87CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdHppbmZvID0gUHlfTm9uZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9ZRUFSKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkYXRlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIodGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORCh0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSUNST1NFQ09ORCh0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGRhdGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUih0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURSh0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORCh0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIERBVEVfU0VUX0ZPTEQocmVzdWx0LCBUSU1FX0dFVF9GT0xEKHRpbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzNzYsNyArNDUxMiw3IEBACiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbmV3X2RhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhkYXRlKSA/IGRhdGUtPnR6aW5mbyA6IFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhkYXRlKSA/IGRhdGUtPnR6aW5mbyA6IFB5X05vbmUsIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDQ2OSw5ICs0NjA1LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICAgICAgaWYgKG9mZmRpZmYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlbHRhX3N1YnRyYWN0KHJlc3VsdCwgb2ZmZGlmZik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIGRlbHRhX3N1YnRyYWN0KHJlc3VsdCwgb2ZmZGlmZikpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvZmZkaWZmKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDUyMSw2ICs0NjU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLCBHRVRfREFZKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSk7CiAgICAgfQorICAgIGlmIChiYXNlcmVwciAhPSBOVUxMICYmIERBVEVfR0VUX0ZPTEQoc2VsZikgIT0gMCkKKyAgICAgICAgYmFzZXJlcHIgPSBhcHBlbmRfa2V5d29yZF9mb2xkKGJhc2VyZXByLCBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKICAgICBpZiAoYmFzZXJlcHIgPT0gTlVMTCB8fCAhIEhBU1RaSU5GTyhzZWxmKSkKICAgICAgICAgcmV0dXJuIGJhc2VyZXByOwogICAgIHJldHVybiBhcHBlbmRfa2V5d29yZF90emluZm8oYmFzZXJlcHIsIHNlbGYtPnR6aW5mbyk7CkBAIC00NTM2LDI1ICs0NjcyLDU1IEBACiBkYXRldGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBpbnQgc2VwID0gJ1QnOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzZXAiLCBOVUxMfTsKKyAgICBjaGFyICp0aW1lc3BlYyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNlcCIsICJ0aW1lc3BlYyIsIE5VTEx9OwogICAgIGNoYXIgYnVmZmVyWzEwMF07Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgdXMgPSBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKKyAgICBzdGF0aWMgY2hhciAqc3BlY3NbXVsyXSA9IHsKKyAgICAgICAgeyJob3VycyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZCJ9LAorICAgICAgICB7Im1pbnV0ZXMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZCJ9LAorICAgICAgICB7InNlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkIn0sCisgICAgICAgIHsibWlsbGlzZWNvbmRzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDNkIn0sCisgICAgICAgIHsibWljcm9zZWNvbmRzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDZkIn0sCisgICAgfTsKKyAgICBzaXplX3QgZ2l2ZW5fc3BlYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifEM6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZzZXApKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifENzOmlzb2Zvcm1hdCIsIGtleXdvcmRzLCAmc2VwLCAmdGltZXNwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAodXMpCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQuJTA2ZCIsCisKKyAgICBpZiAodGltZXNwZWMgPT0gTlVMTCB8fCBzdHJjbXAodGltZXNwZWMsICJhdXRvIikgPT0gMCkgeworICAgICAgICBpZiAodXMgPT0gMCkgeworICAgICAgICAgICAgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGdpdmVuX3NwZWMgPSAwOyBnaXZlbl9zcGVjIDwgUHlfQVJSQVlfTEVOR1RIKHNwZWNzKTsgZ2l2ZW5fc3BlYysrKSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKHRpbWVzcGVjLCBzcGVjc1tnaXZlbl9zcGVjXVswXSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnaXZlbl9zcGVjID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgdXMgPSB1cyAvIDEwMDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdpdmVuX3NwZWMgPT0gUHlfQVJSQVlfTEVOR1RIKHNwZWNzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIlVua25vd24gdGltZXNwZWMgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChzcGVjc1tnaXZlbl9zcGVjXVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoc2VsZiksIEdFVF9NT05USChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwgKGludClzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLCB1cyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoc2VsZiksIEdFVF9NT05USChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwgKGludClzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpKTsKKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCAhSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDU4MSw2ICs0NzQ3LDcwIEBACiAvKiBNaXNjZWxsYW5lb3VzIG1ldGhvZHMuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCitmbGlwX2ZvbGQoUHlPYmplY3QgKmR0KQoreworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGR0KSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKWR0KS0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhREFURV9HRVRfRk9MRChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShkdCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2ZsaXBfZm9sZF9vZmZzZXQoUHlPYmplY3QgKmR0KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICpmbGlwX2R0OworCisgICAgZmxpcF9kdCA9IGZsaXBfZm9sZChkdCk7CisgICAgaWYgKGZsaXBfZHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KGZsaXBfZHQsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmbGlwX2R0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBQRVAgNDk1IGV4Y2VwdGlvbjogV2hlbmV2ZXIgb25lIG9yIGJvdGggb2YgdGhlIG9wZXJhbmRzIGluCisgKiBpbnRlci16b25lIGNvbXBhcmlzb24gaXMgc3VjaCB0aGF0IGl0cyB1dGNvZmZzZXQoKSBkZXBlbmRzCisgKiBvbiB0aGUgdmFsdWUgb2YgaXRzIGZvbGQgZm9sZCBhdHRyaWJ1dGUsIHRoZSByZXN1bHQgaXMgRmFsc2UuCisgKgorICogUmV0dXJuIDEgaWYgZXhjZXB0aW9uIGFwcGxpZXMsIDAgaWYgbm90LCAgYW5kIC0xIG9uIGVycm9yLgorICovCitzdGF0aWMgaW50CitwZXA0OTVfZXFfZXhjZXB0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvZmZzZXRfc2VsZiwgUHlPYmplY3QgKm9mZnNldF9vdGhlcikKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBQeU9iamVjdCAqZmxpcF9vZmZzZXQ7CisKKyAgICBmbGlwX29mZnNldCA9IGdldF9mbGlwX2ZvbGRfb2Zmc2V0KHNlbGYpOworICAgIGlmIChmbGlwX29mZnNldCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGZsaXBfb2Zmc2V0ICE9IG9mZnNldF9zZWxmICYmCisgICAgICAgIGRlbHRhX2NtcChmbGlwX29mZnNldCwgb2Zmc2V0X3NlbGYpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKyAgICBQeV9ERUNSRUYoZmxpcF9vZmZzZXQpOworCisgICAgZmxpcF9vZmZzZXQgPSBnZXRfZmxpcF9mb2xkX29mZnNldChvdGhlcik7CisgICAgaWYgKGZsaXBfb2Zmc2V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgIT0gb2Zmc2V0X290aGVyICYmCisgICAgICAgIGRlbHRhX2NtcChmbGlwX29mZnNldCwgb2Zmc2V0X290aGVyKSkKKyAgICAgICAgcmVzdWx0ID0gMTsKKyBkb25lOgorICAgIFB5X0RFQ1JFRihmbGlwX29mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKQEAgLTQ2MjcsNiArNDg1NywxMyBAQAogICAgICAgICBkaWZmID0gbWVtY21wKCgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXNlbGYpLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKW90aGVyKS0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFVElNRV9EQVRBU0laRSk7CisgICAgICAgIGlmICgob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpICYmIGRpZmYgPT0gMCkgeworICAgICAgICAgICAgaW50IGV4ID0gcGVwNDk1X2VxX2V4Y2VwdGlvbihzZWxmLCBvdGhlciwgb2Zmc2V0MSwgb2Zmc2V0Mik7CisgICAgICAgICAgICBpZiAoZXggPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgaWYgKGV4KQorICAgICAgICAgICAgICAgIGRpZmYgPSAxOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG9mZnNldDEgIT0gUHlfTm9uZSAmJiBvZmZzZXQyICE9IFB5X05vbmUpIHsKQEAgLTQ2NDIsNiArNDg3OSwxMyBAQAogICAgICAgICAgICAgZGlmZiA9IEdFVF9URF9TRUNPTkRTKGRlbHRhKSB8CiAgICAgICAgICAgICAgICAgICAgR0VUX1REX01JQ1JPU0VDT05EUyhkZWx0YSk7CiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgICAgIGlmICgob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpICYmIGRpZmYgPT0gMCkgeworICAgICAgICAgICAgaW50IGV4ID0gcGVwNDk1X2VxX2V4Y2VwdGlvbihzZWxmLCBvdGhlciwgb2Zmc2V0MSwgb2Zmc2V0Mik7CisgICAgICAgICAgICBpZiAoZXggPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgaWYgKGV4KQorICAgICAgICAgICAgICAgIGRpZmYgPSAxOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG9wID09IFB5X0VRKSB7CkBAIC00NjY3LDkgKzQ5MTEsMjYgQEAKIGRhdGV0aW1lX2hhc2goUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKLSAgICAgICAgUHlPYmplY3QgKm9mZnNldDsKLQotICAgICAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoKFB5T2JqZWN0ICopc2VsZiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpvZmZzZXQsICpzZWxmMDsKKyAgICAgICAgaWYgKERBVEVfR0VUX0ZPTEQoc2VsZikpIHsKKyAgICAgICAgICAgIHNlbGYwID0gbmV3X2RhdGV0aW1lX2V4MihHRVRfWUVBUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKHNlbGYpID8gc2VsZi0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeV9UWVBFKHNlbGYpKTsKKyAgICAgICAgICAgIGlmIChzZWxmMCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYwID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmMCk7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KHNlbGYwLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYwKTsKIAogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00NzIzLDc2ICs0OTg0LDgwIEBACiAgICAgaW50IHNzID0gREFURV9HRVRfU0VDT05EKHNlbGYpOwogICAgIGludCB1cyA9IERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lOworICAgIGludCBmb2xkID0gREFURV9HRVRfRk9MRChzZWxmKTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpaWlpTzpyZXBsYWNlIiwKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaWlpaU8kaTpyZXBsYWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJm0sICZkLCAmaGgsICZtbSwgJnNzLCAmdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvLCAmZm9sZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlpaWlpaU8iLCB5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2xvbmUgPSBkYXRldGltZV9uZXcoUHlfVFlQRShzZWxmKSwgdHVwbGUsIE5VTEwpOworCisgICAgaWYgKGNsb25lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgREFURV9TRVRfRk9MRChjbG9uZSwgZm9sZCk7CisgICAgfQogICAgIFB5X0RFQ1JFRih0dXBsZSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCitsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lX3QgdGltZXN0YW1wKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIHN0cnVjdCB0bSAqdGltZXA7Ci0gICAgdGltZV90IHRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqZGVsdGE7Ci0gICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7Ci0gICAgUHlPYmplY3QgKnNlY29uZHM7CisgICAgc3RydWN0IHRtIGxvY2FsX3RpbWVfdG07CiAgICAgUHlPYmplY3QgKm5hbWVvID0gTlVMTDsKICAgICBjb25zdCBjaGFyICp6b25lID0gTlVMTDsKIAotICAgIGRlbHRhID0gbmV3X2RlbHRhKHltZF90b19vcmQoR0VUX1lFQVIodXRjX3RpbWUpLCBHRVRfTU9OVEgodXRjX3RpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWSh1dGNfdGltZSkpIC0gNzE5MTYzLAotICAgICAgICAgICAgICAgICAgICAgIDYwICogKDYwICogREFURV9HRVRfSE9VUih1dGNfdGltZSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURSh1dGNfdGltZSkpICsKLSAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQodXRjX3RpbWUpLAotICAgICAgICAgICAgICAgICAgICAgIDAsIDApOwotICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0aW1lc3RhbXAsICZsb2NhbF90aW1lX3RtKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOwotICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgc2Vjb25kcyA9IGRpdmlkZV90aW1lZGVsdGFfdGltZWRlbHRhKChQeURhdGVUaW1lX0RlbHRhICopZGVsdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb25lX3NlY29uZCk7Ci0gICAgUHlfREVDUkVGKG9uZV9zZWNvbmQpOwotICAgIGlmIChzZWNvbmRzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfREVDUkVGKGRlbHRhKTsKLSAgICB0aW1lc3RhbXAgPSBQeUxvbmdfQXNMb25nKHNlY29uZHMpOwotICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKLSAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHRpbWVwID0gbG9jYWx0aW1lKCZ0aW1lc3RhbXApOwogI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKLSAgICB6b25lID0gdGltZXAtPnRtX3pvbmU7Ci0gICAgZGVsdGEgPSBuZXdfZGVsdGEoMCwgdGltZXAtPnRtX2dtdG9mZiwgMCwgMSk7CisgICAgem9uZSA9IGxvY2FsX3RpbWVfdG0udG1fem9uZTsKKyAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCBsb2NhbF90aW1lX3RtLnRtX2dtdG9mZiwgMCwgMSk7CiAjZWxzZSAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZTsKLSAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZSh0aW1lcC0+dG1feWVhciArIDE5MDAsIHRpbWVwLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9tZGF5LCB0aW1lcC0+dG1faG91ciwgdGltZXAtPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fc2VjLCBEQVRFX0dFVF9NSUNST1NFQ09ORCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWUtPnR6aW5mbyk7Ci0gICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIChQeU9iamVjdCopdXRjX3RpbWUpOwotICAgICAgICAvKiBYWFg6IGJlZm9yZSByZWx5aW5nIG9uIHR6bmFtZSwgd2Ugc2hvdWxkIGNvbXBhcmUgZGVsdGEKLSAgICAgICAgICAgdG8gdGhlIG9mZnNldCBpbXBsaWVkIGJ5IHRpbWV6b25lL2FsdHpvbmUgKi8KLSAgICAgICAgaWYgKGRheWxpZ2h0ICYmIHRpbWVwLT50bV9pc2RzdCA+PSAwKQotICAgICAgICAgICAgem9uZSA9IHR6bmFtZVt0aW1lcC0+dG1faXNkc3QgJSAyXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgem9uZSA9IHR6bmFtZVswXTsKKyAgICAgICAgUHlPYmplY3QgKmxvY2FsX3RpbWUsICp1dGNfdGltZTsKKyAgICAgICAgc3RydWN0IHRtIHV0Y190aW1lX3RtOworICAgICAgICBjaGFyIGJ1ZlsxMDBdOworICAgICAgICBzdHJmdGltZShidWYsIHNpemVvZihidWYpLCAiJVoiLCAmbG9jYWxfdGltZV90bSk7CisgICAgICAgIHpvbmUgPSBidWY7CisgICAgICAgIGxvY2FsX3RpbWUgPSBuZXdfZGF0ZXRpbWUobG9jYWxfdGltZV90bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX3NlYywgMCwgUHlfTm9uZSwgMCk7CisgICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlUaW1lX2dtdGltZSh0aW1lc3RhbXAsICZ1dGNfdGltZV90bSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB1dGNfdGltZSA9IG5ld19kYXRldGltZSh1dGNfdGltZV90bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9zZWMsIDAsIFB5X05vbmUsIDApOworICAgICAgICBpZiAodXRjX3RpbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdChsb2NhbF90aW1lLCB1dGNfdGltZSk7CiAgICAgICAgIFB5X0RFQ1JFRihsb2NhbF90aW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHV0Y190aW1lKTsKICAgICB9CiAjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLworICAgIGlmIChkZWx0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHpvbmUgIT0gTlVMTCkgewogICAgICAgICBuYW1lbyA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgICAgICBpZiAobmFtZW8gPT0gTlVMTCkKQEAgLTQ4MDUsMTIgKzUwNzAsNjUgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCit7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqZGVsdGE7CisgICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7CisgICAgUHlPYmplY3QgKnNlY29uZHM7CisKKyAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KChQeU9iamVjdCAqKXV0Y190aW1lLCBQeURhdGVUaW1lX0Vwb2NoKTsKKyAgICBpZiAoZGVsdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgb25lX3NlY29uZCA9IG5ld19kZWx0YSgwLCAxLCAwLCAwKTsKKyAgICBpZiAob25lX3NlY29uZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7CisgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0aW1lc3RhbXAgPSBfUHlMb25nX0FzVGltZV90KHNlY29uZHMpOworICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKKyAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lc3RhbXApOworfQorCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbF90b19zZWNvbmRzKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgZm9sZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZV9mcm9tX2xvY2FsKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKmxvY2FsX2R0KQoreworICAgIGxvbmcgbG9uZyBzZWNvbmRzOworICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgc2Vjb25kcyA9IGxvY2FsX3RvX3NlY29uZHMoR0VUX1lFQVIobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQobG9jYWxfZHQpKTsKKyAgICBpZiAoc2Vjb25kcyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogWFhYOiBhZGQgYm91bmRzIGNoZWNrICovCisgICAgdGltZXN0YW1wID0gc2Vjb25kcyAtIGVwb2NoOworICAgIHJldHVybiBsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lc3RhbXApOworfQorCiBzdGF0aWMgUHlEYXRlVGltZV9EYXRlVGltZSAqCiBkYXRldGltZV9hc3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgUHlPYmplY3QgKnRlbXA7CisgICAgUHlPYmplY3QgKnNlbGZfdHppbmZvOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OwogCkBAIC00ODIxLDI3ICs1MTM5LDI3IEBACiAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQotICAgICAgICBnb3RvIE5lZWRBd2FyZTsKKyAgICBpZiAoIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkgeworICAgICAgICBzZWxmX3R6aW5mbyA9IGxvY2FsX3RpbWV6b25lX2Zyb21fbG9jYWwoc2VsZik7CisgICAgICAgIGlmIChzZWxmX3R6aW5mbyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZl90emluZm8gPSBzZWxmLT50emluZm87CisgICAgICAgIFB5X0lOQ1JFRihzZWxmX3R6aW5mbyk7CisgICAgfQogCiAgICAgLyogQ29udmVyc2lvbiB0byBzZWxmJ3Mgb3duIHRpbWUgem9uZSBpcyBhIE5PUC4gKi8KLSAgICBpZiAoc2VsZi0+dHppbmZvID09IHR6aW5mbykgeworICAgIGlmIChzZWxmX3R6aW5mbyA9PSB0emluZm8pIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGZfdHppbmZvKTsKICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gc2VsZjsKICAgICB9CiAKICAgICAvKiBDb252ZXJ0IHNlbGYgdG8gVVRDLiAqLwotICAgIG9mZnNldCA9IGRhdGV0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICBvZmZzZXQgPSBjYWxsX3V0Y29mZnNldChzZWxmX3R6aW5mbywgKFB5T2JqZWN0ICopc2VsZik7CisgICAgUHlfREVDUkVGKHNlbGZfdHppbmZvKTsKICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvZmZzZXQgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKLSAgICAgIE5lZWRBd2FyZToKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJhc3RpbWV6b25lKCkgY2Fubm90IGJlIGFwcGxpZWQgdG8gIgotICAgICAgICAgICAgICAgICAgICAgICAgImEgbmFpdmUgZGF0ZXRpbWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgLyogcmVzdWx0ID0gc2VsZiAtIG9mZnNldCAqLwogICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopYWRkX2RhdGV0aW1lX3RpbWVkZWx0YShzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQsIC0xKTsKQEAgLTQ4NDksNiArNTE2NywzMiBAQAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICAvKiBNYWtlIHN1cmUgcmVzdWx0IGlzIGF3YXJlIGFuZCBVVEMuICovCisgICAgaWYgKCFIQVNUWklORk8ocmVzdWx0KSkgeworICAgICAgICB0ZW1wID0gKFB5T2JqZWN0ICopcmVzdWx0OworICAgICAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKQorICAgICAgICAgICAgICAgICAgIG5ld19kYXRldGltZV9leDIoR0VUX1lFQVIocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzdWx0KSk7CisgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZXN1bHQgaXMgYWxyZWFkeSBhd2FyZSAtIGp1c3QgcmVwbGFjZSB0emluZm8uICovCisgICAgICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKKyAgICAgICAgcmVzdWx0LT50emluZm8gPSBQeURhdGVUaW1lX1RpbWVab25lX1VUQzsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdC0+dHppbmZvKTsKKyAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgIH0KKwogICAgIC8qIEF0dGFjaCBuZXcgdHppbmZvIGFuZCBsZXQgZnJvbXV0YygpIGRvIHRoZSByZXN0LiAqLwogICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpIHsKQEAgLTQ4OTYsNiArNTI0MCw1NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RmbGFnKTsKIH0KIAorc3RhdGljIGxvbmcgbG9uZworbG9jYWxfdG9fc2Vjb25kcyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgICBpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IGZvbGQpCit7CisgICAgbG9uZyBsb25nIHQsIGEsIGIsIHUxLCB1MiwgdDEsIHQyLCBsdDsKKyAgICB0ID0gdXRjX3RvX3NlY29uZHMoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpOworICAgIC8qIE91ciBnb2FsIGlzIHRvIHNvbHZlIHQgPSBsb2NhbCh1KSBmb3IgdS4gKi8KKyAgICBsdCA9IGxvY2FsKHQpOworICAgIGlmIChsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGEgPSBsdCAtIHQ7CisgICAgdTEgPSB0IC0gYTsKKyAgICB0MSA9IGxvY2FsKHUxKTsKKyAgICBpZiAodDEgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEgPT0gdCkgeworICAgICAgICAvKiBXZSBmb3VuZCBvbmUgc29sdXRpb24sIGJ1dCBpdCBtYXkgbm90IGJlIHRoZSBvbmUgd2UgbmVlZC4KKyAgICAgICAgICogTG9vayBmb3IgYW4gZWFybGllciBzb2x1dGlvbiAoaWYgYGZvbGRgIGlzIDApLCBvciBhCisgICAgICAgICAqIGxhdGVyIG9uZSAoaWYgYGZvbGRgIGlzIDEpLiAqLworICAgICAgICBpZiAoZm9sZCkKKyAgICAgICAgICAgIHUyID0gdTEgKyBtYXhfZm9sZF9zZWNvbmRzOworICAgICAgICBlbHNlCisgICAgICAgICAgICB1MiA9IHUxIC0gbWF4X2ZvbGRfc2Vjb25kczsKKyAgICAgICAgbHQgPSBsb2NhbCh1Mik7CisgICAgICAgIGlmIChsdCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgYiA9IGx0IC0gdTI7CisgICAgICAgIGlmIChhID09IGIpCisgICAgICAgICAgICByZXR1cm4gdTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBiID0gdDEgLSB1MTsKKyAgICAgICAgYXNzZXJ0KGEgIT0gYik7CisgICAgfQorICAgIHUyID0gdCAtIGI7CisgICAgdDIgPSBsb2NhbCh1Mik7CisgICAgaWYgKHQyID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQyID09IHQpCisgICAgICAgIHJldHVybiB1MjsKKyAgICBpZiAodDEgPT0gdCkKKyAgICAgICAgcmV0dXJuIHUxOworICAgIC8qIFdlIGhhdmUgZm91bmQgYm90aCBvZmZzZXRzIGEgYW5kIGIsIGJ1dCBuZWl0aGVyIHQgLSBhIG5vciB0IC0gYiBpcworICAgICAqIGEgc29sdXRpb24uICBUaGlzIG1lYW5zIHQgaXMgaW4gdGhlIGdhcC4gKi8KKyAgICByZXR1cm4gZm9sZD9QeV9NSU4odTEsIHUyKTpQeV9NQVgodTEsIHUyKTsKK30KKworLyogZGF0ZSgxOTcwLDEsMSkudG9vcmRpbmFsKCkgPT0gNzE5MTYzICovCisjZGVmaW5lIEVQT0NIX1NFQ09ORFMgKDcxOTE2M0xMICogMjQgKiA2MCAqIDYwKQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdGltZXN0YW1wKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCiB7CkBAIC00OTEwLDMzICs1MzA0LDE4IEBACiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBzdHJ1Y3QgdG0gdGltZTsKLSAgICAgICAgdGltZV90IHRpbWVzdGFtcDsKLSAgICAgICAgbWVtc2V0KCh2b2lkICopICZ0aW1lLCAnXDAnLCBzaXplb2Yoc3RydWN0IHRtKSk7Ci0gICAgICAgIHRpbWUudG1feWVhciA9IEdFVF9ZRUFSKHNlbGYpIC0gMTkwMDsKLSAgICAgICAgdGltZS50bV9tb24gPSBHRVRfTU9OVEgoc2VsZikgLSAxOwotICAgICAgICB0aW1lLnRtX21kYXkgPSBHRVRfREFZKHNlbGYpOwotICAgICAgICB0aW1lLnRtX2hvdXIgPSBEQVRFX0dFVF9IT1VSKHNlbGYpOwotICAgICAgICB0aW1lLnRtX21pbiA9IERBVEVfR0VUX01JTlVURShzZWxmKTsKLSAgICAgICAgdGltZS50bV9zZWMgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7Ci0gICAgICAgIHRpbWUudG1fd2RheSA9IC0xOwotICAgICAgICB0aW1lLnRtX2lzZHN0ID0gLTE7Ci0gICAgICAgIHRpbWVzdGFtcCA9IG1rdGltZSgmdGltZSk7Ci0gICAgICAgIGlmICh0aW1lc3RhbXAgPT0gKHRpbWVfdCkoLTEpCi0jaWZuZGVmIF9BSVgKLSAgICAgICAgICAgIC8qIFJldHVybiB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLAotICAgICAgICAgICAgICogYnV0IHRtX3dkYXkgY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KLSAgICAgICAgICAgICYmIHRpbWUudG1fd2RheSA9PSAtMQotI2Vsc2UKLSAgICAgICAgICAgIC8qIG9uIEFJWCwgdG1fd2RheSBpcyBhbHdheXMgc2V0cywgZXZlbiBvbiBlcnJvciAqLwotI2VuZGlmCi0gICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSIpOworICAgICAgICBsb25nIGxvbmcgc2Vjb25kczsKKyAgICAgICAgc2Vjb25kcyA9IGxvY2FsX3RvX3NlY29uZHMoR0VUX1lFQVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOworICAgICAgICBpZiAoc2Vjb25kcyA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZSh0aW1lc3RhbXAgKyBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CisgICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWNvbmRzIC0gRVBPQ0hfU0VDT05EUyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00OTU2LDcgKzUzMzUsOCBAQAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgIFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ5NjYsNyArNTM0Niw4IEBACiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgR0VUX0RUX1RaSU5GTyhzZWxmKSk7CisgICAgICAgICAgICAgICAgICAgIEdFVF9EVF9UWklORk8oc2VsZiksCisgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTAxOCw3ICs1Mzk5LDcgQEAKICAqIF9fZ2V0c3RhdGVfXyBpc24ndCBleHBvc2VkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKK2RhdGV0aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIGludCBwcm90bykKIHsKICAgICBQeU9iamVjdCAqYmFzZXN0YXRlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtNTAyNiw2ICs1NDA3LDkgQEAKICAgICBiYXNlc3RhdGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopc2VsZi0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFVElNRV9EQVRBU0laRSk7CiAgICAgaWYgKGJhc2VzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwcm90byA+IDMgJiYgREFURV9HRVRfRk9MRChzZWxmKSkKKyAgICAgICAgICAgIC8qIFNldCB0aGUgZmlyc3QgYml0IG9mIHRoZSB0aGlyZCBieXRlICovCisgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhiYXNlc3RhdGUpWzJdIHw9ICgxIDw8IDcpOwogICAgICAgICBpZiAoISBIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMSwgYmFzZXN0YXRlKTsKICAgICAgICAgZWxzZQpAQCAtNTAzNiw5ICs1NDIwLDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9yZWR1Y2UoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZykKK2RhdGV0aW1lX3JlZHVjZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGRhdGV0aW1lX2dldHN0YXRlKHNlbGYpKTsKKyAgICBpbnQgcHJvdG8gPSAwOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsICZwcm90bykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCBkYXRldGltZV9nZXRzdGF0ZShzZWxmLCBwcm90bykpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZGF0ZXRpbWVfbWV0aG9kc1tdID0gewpAQCAtNTA5Myw5ICs1NDgxLDEyIEBACiAKICAgICB7Imlzb2Zvcm1hdCIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2lzb2Zvcm1hdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJbc2VwXSAtPiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCAiCi0gICAgICAgICAgICAgICAiWVlZWS1NTS1ERFRISDpNTTpTU1subW1tbW1tXVsrSEg6TU1dLlxuXG4iCisgICAgICAgICAgICAgICAiWVlZWS1NTS1ERFRbSEhbOk1NWzpTU1subW1tW3V1dV1dXV1dWytISDpNTV0uXG4iCiAgICAgICAgICAgICAgICAic2VwIGlzIHVzZWQgdG8gc2VwYXJhdGUgdGhlIHllYXIgZnJvbSB0aGUgdGltZSwgYW5kICIKLSAgICAgICAgICAgICAgICJkZWZhdWx0cyB0byAnVCcuIil9LAorICAgICAgICAgICAgICAgImRlZmF1bHRzIHRvICdUJy5cbiIKKyAgICAgICAgICAgICAgICJ0aW1lc3BlYyBzcGVjaWZpZXMgd2hhdCBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUiCisgICAgICAgICAgICAgICAiIChhbGxvd2VkIHZhbHVlcyBhcmUgJ2F1dG8nLCAnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywiCisgICAgICAgICAgICAgICAiICdtaWxsaXNlY29uZHMnLCBhbmQgJ21pY3Jvc2Vjb25kcycpLlxuIil9LAogCiAgICAgeyJ1dGNvZmZzZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdXRjb2Zmc2V0LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gc2VsZi50emluZm8udXRjb2Zmc2V0KHNlbGYpLiIpfSwKQEAgLTUxMTIsMTMgKzU1MDMsMTMgQEAKICAgICB7ImFzdGltZXpvbmUiLCAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2FzdGltZXpvbmUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigidHogLT4gY29udmVydCB0byBsb2NhbCB0aW1lIGluIG5ldyB0aW1lem9uZSB0elxuIil9LAogCi0gICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3JlZHVjZSwgICAgIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIl9fcmVkdWNlX18oKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3JlZHVjZSwgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9leF9fKHByb3RvKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCiAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgZGF0ZXRpbWVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGF0ZXRpbWVfZG9jW10gPQogUHlEb2NfU1RSKCJkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5WywgaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWyx0emluZm9dXV1dXSlcblwKIFxuXAogVGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJndW1lbnRzIGFyZSByZXF1aXJlZC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhblxuXApAQCAtNTIwMSw3ICs1NTkyLDkgQEAKICAgICBuZXdfdGltZV9leCwKICAgICBuZXdfZGVsdGFfZXgsCiAgICAgZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcCwKLSAgICBkYXRlX2Zyb210aW1lc3RhbXAKKyAgICBkYXRlX2Zyb210aW1lc3RhbXAsCisgICAgbmV3X2RhdGV0aW1lX2V4MiwKKyAgICBuZXdfdGltZV9leDIKIH07CiAKIApAQCAtNTI4MiwxMiArNTY3NSwxMiBAQAogICAgIC8qIHRpbWUgdmFsdWVzICovCiAgICAgZCA9IFB5RGF0ZVRpbWVfVGltZVR5cGUudHBfZGljdDsKIAotICAgIHggPSBuZXdfdGltZSgwLCAwLCAwLCAwLCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X3RpbWUoMCwgMCwgMCwgMCwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWluIiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CiAKLSAgICB4ID0gbmV3X3RpbWUoMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X3RpbWUoMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtYXgiLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKQEAgLTUzMDAsMTIgKzU2OTMsMTIgQEAKICAgICAvKiBkYXRldGltZSB2YWx1ZXMgKi8KICAgICBkID0gUHlEYXRlVGltZV9EYXRlVGltZVR5cGUudHBfZGljdDsKIAotICAgIHggPSBuZXdfZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgMCwgMCwgUHlfTm9uZSk7CisgICAgeCA9IG5ld19kYXRldGltZSgxLCAxLCAxLCAwLCAwLCAwLCAwLCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtaW4iLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAotICAgIHggPSBuZXdfZGF0ZXRpbWUoTUFYWUVBUiwgMTIsIDMxLCAyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUpOworICAgIHggPSBuZXdfZGF0ZXRpbWUoTUFYWUVBUiwgMTIsIDMxLCAyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1heCIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwpAQCAtNTM0Nyw3ICs1NzQwLDcgQEAKIAogICAgIC8qIEVwb2NoICovCiAgICAgUHlEYXRlVGltZV9FcG9jaCA9IG5ld19kYXRldGltZSgxOTcwLCAxLCAxLCAwLCAwLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMsIDApOwogICAgIGlmIChQeURhdGVUaW1lX0Vwb2NoID09IE5VTEwpCiAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNTM4MiwxOSArNTc3NSwxOSBAQAogICAgIC8qIEEgNC15ZWFyIGN5Y2xlIGhhcyBhbiBleHRyYSBsZWFwIGRheSBvdmVyIHdoYXQgd2UnZCBnZXQgZnJvbQogICAgICAqIHBhc3RpbmcgdG9nZXRoZXIgNCBzaW5nbGUgeWVhcnMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJNFkgPT0gNCAqIDM2NSArIDEpOworICAgIFB5X0JVSUxEX0FTU0VSVChESTRZID09IDQgKiAzNjUgKyAxKTsKICAgICBhc3NlcnQoREk0WSA9PSBkYXlzX2JlZm9yZV95ZWFyKDQrMSkpOwogCiAgICAgLyogU2ltaWxhcmx5LCBhIDQwMC15ZWFyIGN5Y2xlIGhhcyBhbiBleHRyYSBsZWFwIGRheSBvdmVyIHdoYXQgd2UnZAogICAgICAqIGdldCBmcm9tIHBhc3RpbmcgdG9nZXRoZXIgNCAxMDAteWVhciBjeWNsZXMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJNDAwWSA9PSA0ICogREkxMDBZICsgMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJNDAwWSA9PSA0ICogREkxMDBZICsgMSk7CiAgICAgYXNzZXJ0KERJNDAwWSA9PSBkYXlzX2JlZm9yZV95ZWFyKDQwMCsxKSk7CiAKICAgICAvKiBPVE9ILCBhIDEwMC15ZWFyIGN5Y2xlIGhhcyBvbmUgZmV3ZXIgbGVhcCBkYXkgdGhhbiB3ZSdkIGdldCBmcm9tCiAgICAgICogcGFzdGluZyB0b2dldGhlciAyNSA0LXllYXIgY3ljbGVzLgogICAgICAqLwotICAgIGFzc2VydChESTEwMFkgPT0gMjUgKiBESTRZIC0gMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJMTAwWSA9PSAyNSAqIERJNFkgLSAxKTsKICAgICBhc3NlcnQoREkxMDBZID09IGRheXNfYmVmb3JlX3llYXIoMTAwKzEpKTsKIAogICAgIG9uZSA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKaW5kZXggZWE4NzkwYi4uODA0OTc4YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKQEAgLTE0LDE2ICsxNCwxNiBAQAogICovCiAjaWYgZGVmaW5lZChIQVZFX05EQk1fSCkKICNpbmNsdWRlIDxuZGJtLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsgIC8qIEVNWCBwb3J0IG9mIEdEQk0gKi8KK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkdOVSBnZGJtIjsgIC8qIEVNWCBwb3J0IG9mIEdEQk0gKi8KICNlbGlmIGRlZmluZWQoSEFWRV9HREJNX05EQk1fSCkKICNpbmNsdWRlIDxnZGJtL25kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOwogI2VsaWYgZGVmaW5lZChIQVZFX0dEQk1fREFTSF9OREJNX0gpCiAjaW5jbHVkZSA8Z2RibS1uZGJtLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsKK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkdOVSBnZGJtIjsKICNlbGlmIGRlZmluZWQoSEFWRV9CRVJLREJfSCkKICNpbmNsdWRlIDxkYi5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJCZXJrZWxleSBEQiI7CitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJCZXJrZWxleSBEQiI7CiAjZWxzZQogI2Vycm9yICJObyBuZGJtLmggYXZhaWxhYmxlISIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCmluZGV4IGUxNTk0MWEuLmZjYzFmMTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogI2luY2x1ZGUgImRvY3N0cmluZ3MuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKIAogCiAjaWYgIWRlZmluZWQoTVBEX1ZFUlNJT05fSEVYKSB8fCBNUERfVkVSU0lPTl9IRVggPCAweDAyMDQwMTAwCkBAIC0xODkwLDEyICsxODg5LDEzIEBACiAvKiBSZXR1cm4gdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtZXJpYyBVbmljb2RlIHN0cmluZy4gVGhlIG51bWVyaWMKICAgIHN0cmluZyBtYXkgY29udGFpbiBhc2NpaSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbMSwgMTI3XSwgYW55IFVuaWNvZGUKICAgIHNwYWNlIGFuZCBhbnkgdW5pY29kZSBkaWdpdC4gSWYgc3RyaXBfd3MgaXMgdHJ1ZSwgbGVhZGluZyBhbmQgdHJhaWxpbmcKLSAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuCisgICB3aGl0ZXNwYWNlIGlzIHN0cmlwcGVkLiBJZiBpZ25vcmVfdW5kZXJzY29yZXMgaXMgdHJ1ZSwgdW5kZXJzY29yZXMgYXJlCisgICBpZ25vcmVkLgogCiAgICBSZXR1cm4gTlVMTCBpZiBtYWxsb2MgZmFpbHMgYW5kIGFuIGVtcHR5IHN0cmluZyBpZiBpbnZhbGlkIGNoYXJhY3RlcnMKICAgIGFyZSBmb3VuZC4gKi8KIHN0YXRpYyBjaGFyICoKLW51bWVyaWNfYXNfYXNjaWkoY29uc3QgUHlPYmplY3QgKnUsIGludCBzdHJpcF93cykKK251bWVyaWNfYXNfYXNjaWkoY29uc3QgUHlPYmplY3QgKnUsIGludCBzdHJpcF93cywgaW50IGlnbm9yZV91bmRlcnNjb3JlcykKIHsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTE5MzAsNiArMTkzMCw5IEBACiAKICAgICBmb3IgKDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmIChpZ25vcmVfdW5kZXJzY29yZXMgJiYgY2ggPT0gJ18nKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoMCA8IGNoICYmIGNoIDw9IDEyNykgewogICAgICAgICAgICAgKmNwKysgPSBjaDsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjAxMiw3ICsyMDE1LDcgQEAKICAgICBQeU9iamVjdCAqZGVjOwogICAgIGNoYXIgKnM7CiAKLSAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAwKTsKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAwLCAwKTsKICAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIwMzIsNyArMjAzNSw3IEBACiAgICAgUHlPYmplY3QgKmRlYzsKICAgICBjaGFyICpzOwogCi0gICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSk7CisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSwgMSk7CiAgICAgaWYgKHMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zMzk0LDYgKzMzOTcsMTA1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBweWxvbmc7CiB9CiAKKy8qIENvbnZlcnQgYSBEZWNpbWFsIHRvIGl0cyBleGFjdCBpbnRlZ2VyIHJhdGlvIHJlcHJlc2VudGF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19hc19pbnRlZ2VyX3JhdGlvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKm51bWVyYXRvciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRlbm9taW5hdG9yID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhwb25lbnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgbXBkX3NzaXplX3QgZXhwOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQoc2VsZikpKSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oTVBEKHNlbGYpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKworICAgIHRtcCA9IGRlY19hbGxvYygpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xY29weShNUEQodG1wKSwgTVBEKHNlbGYpLCAmc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZXhwID0gbXBkX2lzemVybyhNUEQodG1wKSkgPyAwIDogTVBEKHRtcCktPmV4cDsKKyAgICBNUEQodG1wKS0+ZXhwID0gMDsKKworICAgIC8qIGNvbnRleHQgYW5kIHJvdW5kaW5nIGFyZSB1bnVzZWQgaGVyZTogdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QgKi8KKyAgICBudW1lcmF0b3IgPSBkZWNfYXNfbG9uZyh0bXAsIGNvbnRleHQsIE1QRF9ST1VORF9GTE9PUik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZXhwb25lbnQgPSBQeUxvbmdfRnJvbVNzaXplX3QoZXhwIDwgMCA/IC1leHAgOiBleHApOworICAgIGlmIChleHBvbmVudCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgdG1wID0gUHlMb25nX0Zyb21Mb25nKDEwKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBQeV9TRVRSRUYoZXhwb25lbnQsIF9weV9sb25nX3Bvd2VyKHRtcCwgZXhwb25lbnQsIFB5X05vbmUpKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAoZXhwb25lbnQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChleHAgPj0gMCkgeworICAgICAgICBQeV9TRVRSRUYobnVtZXJhdG9yLCBfcHlfbG9uZ19tdWx0aXBseShudW1lcmF0b3IsIGV4cG9uZW50KSk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICAgICAgaWYgKGRlbm9taW5hdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRlbm9taW5hdG9yID0gZXhwb25lbnQ7CisgICAgICAgIGV4cG9uZW50ID0gTlVMTDsKKyAgICAgICAgdG1wID0gX1B5TG9uZ19HQ0QobnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9TRVRSRUYobnVtZXJhdG9yLCBfcHlfbG9uZ19mbG9vcl9kaXZpZGUobnVtZXJhdG9yLCB0bXApKTsKKyAgICAgICAgUHlfU0VUUkVGKGRlbm9taW5hdG9yLCBfcHlfbG9uZ19mbG9vcl9kaXZpZGUoZGVub21pbmF0b3IsIHRtcCkpOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMIHx8IGRlbm9taW5hdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMiwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CisKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihleHBvbmVudCk7CisgICAgUHlfWERFQ1JFRihkZW5vbWluYXRvcik7CisgICAgUHlfWERFQ1JFRihudW1lcmF0b3IpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeURlY19Ub0ludGVncmFsVmFsdWUoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtNDcwMiw2ICs0ODA0LDcgQEAKICAgLyogTWlzY2VsbGFuZW91cyAqLwogICB7ICJmcm9tX2Zsb2F0IiwgZGVjX2Zyb21fZmxvYXQsIE1FVEhfT3xNRVRIX0NMQVNTLCBkb2NfZnJvbV9mbG9hdCB9LAogICB7ICJhc190dXBsZSIsIFB5RGVjX0FzVHVwbGUsIE1FVEhfTk9BUkdTLCBkb2NfYXNfdHVwbGUgfSwKKyAgeyAiYXNfaW50ZWdlcl9yYXRpbyIsIGRlY19hc19pbnRlZ2VyX3JhdGlvLCBNRVRIX05PQVJHUywgZG9jX2FzX2ludGVnZXJfcmF0aW8gfSwKIAogICAvKiBTcGVjaWFsIG1ldGhvZHMgKi8KICAgeyAiX19jb3B5X18iLCBkZWNfY29weSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKaW5kZXggNzEwMjlhOS4uZjdmZDZlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKQEAgLTcwLDYgKzcwLDE1IEBACiBSZXR1cm4gYSB0dXBsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyLlxuXAogXG4iKTsKIAorUHlEb2NfU1RSVkFSKGRvY19hc19pbnRlZ2VyX3JhdGlvLAorImFzX2ludGVnZXJfcmF0aW8oJHNlbGYsIC8pXG4tLVxuXG5cCitEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8oKSAtPiAoaW50LCBpbnQpXG5cCitcblwKK1JldHVybiBhIHBhaXIgb2YgaW50ZWdlcnMsIHdob3NlIHJhdGlvIGlzIGV4YWN0bHkgZXF1YWwgdG8gdGhlIG9yaWdpbmFsXG5cCitEZWNpbWFsIGFuZCB3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3IuIFRoZSByYXRpbyBpcyBpbiBsb3dlc3QgdGVybXMuXG5cCitSYWlzZSBPdmVyZmxvd0Vycm9yIG9uIGluZmluaXRpZXMgYW5kIGEgVmFsdWVFcnJvciBvbiBOYU5zLlxuXAorXG4iKTsKKwogUHlEb2NfU1RSVkFSKGRvY19jYW5vbmljYWwsCiAiY2Fub25pY2FsKCRzZWxmLCAvKVxuLS1cblxuXAogUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiAgQ3VycmVudGx5LCB0aGUgZW5jb2RpbmdcblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCmluZGV4IDM1ZGU2YjguLmRmZTE1MjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYwpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgImNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgImJhc2Vhcml0aC5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKaW5kZXggYTQ1YTQyOS4uM2FhZGZiMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgImJpdHMuaCIKICNpbmNsdWRlICJjb25zdGFudHMuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKICNpbmNsdWRlICJpby5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwppbmRleCAwZjQxZmU1Li5hODU0ZTA5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKQEAgLTMwLDcgKzMwLDEyIEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJtcGFsbG9jLmgiCisKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDIzMikKKyNlbmRpZgogCiAKIC8qIEd1YXJhbnRlZWQgbWluaW11bSBhbGxvY2F0aW9uIGZvciBhIGNvZWZmaWNpZW50LiBNYXkgYmUgY2hhbmdlZCBvbmNlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaApyZW5hbWUgdG8gTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgKaW5kZXggOWM5OGQxYS4uZWZkNzExOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaApAQCAtMjYsOCArMjYsOCBAQAogICovCiAKIAotI2lmbmRlZiBNRU1PUllfSAotI2RlZmluZSBNRU1PUllfSAorI2lmbmRlZiBNUEFMTE9DX0gKKyNkZWZpbmUgTVBBTExPQ19ICiAKIAogI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKaW5kZXggNTkzZjlmNS4uMzI4YWI5MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiYml0cy5oIgogI2luY2x1ZGUgImNvbnZvbHV0ZS5oIgogI2luY2x1ZGUgImNydC5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgIm1wYWxsb2MuaCIKICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKICNpbmNsdWRlICJ1bW9kYXJpdGguaCIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKaW5kZXggNWNhNzQxMy4uZGFmMmI5ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KIAogI2lmZGVmIF9NU0NfVkVSCiAgICNpbmNsdWRlICJ2Y2NvbXBhdC5oIgpAQCAtNTksMTIgKzYxLDYgQEAKICAgI2RlZmluZSBNUERfSElERV9TWU1CT0xTX0VORAogICAjZGVmaW5lIEVYVElOTElORSBleHRlcm4gaW5saW5lCiAjZWxzZQotICAjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAgI2VuZGlmCi0gICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKLSAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgI2VuZGlmCiAgICNpZm5kZWYgX19HTlVDX1NURENfSU5MSU5FX18KICAgICAjZGVmaW5lIF9fR05VQ19TVERDX0lOTElORV9fIDEKICAgI2VuZGlmCkBAIC0xMDgsOSArMTA0LDkgQEAKIAogI2RlZmluZSBNUERfTUFKT1JfVkVSU0lPTiAyCiAjZGVmaW5lIE1QRF9NSU5PUl9WRVJTSU9OIDQKLSNkZWZpbmUgTVBEX01JQ1JPX1ZFUlNJT04gMQorI2RlZmluZSBNUERfTUlDUk9fVkVSU0lPTiAyCiAKLSNkZWZpbmUgTVBEX1ZFUlNJT04gIjIuNC4xIgorI2RlZmluZSBNUERfVkVSU0lPTiAiMi40LjIiCiAKICNkZWZpbmUgTVBEX1ZFUlNJT05fSEVYICgoTVBEX01BSk9SX1ZFUlNJT04gPDwgMjQpIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIChNUERfTUlOT1JfVkVSU0lPTiA8PCAxNikgfCBcCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKaW5kZXggZjU4ZTAyMy4uZGQxMzFkOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaApAQCAtMzIsNyArMzIsNiBAQAogCiAvKiBWaXN1YWwgQyBmaXhlczogbm8gc3RkaW50LmgsIG5vIHNucHJpbnRmIC4uLiAqLwogI2lmZGVmIF9NU0NfVkVSCi0gICNpbmNsdWRlICJ2Y3N0ZGludC5oIgogICAjdW5kZWYgaW5saW5lCiAgICNkZWZpbmUgaW5saW5lIF9faW5saW5lCiAgICN1bmRlZiByYW5kb20KQEAgLTQ5LDEwICs0OCw2IEBACiAgICN1bmRlZiBzdHJ0b2xsCiAgICNkZWZpbmUgc3RydG9sbCBfc3RydG9pNjQKICAgI2RlZmluZSBzdHJkdXAgX3N0cmR1cAotICAjZGVmaW5lIFBSSWk2NCAiSTY0aSIKLSAgI2RlZmluZSBQUkl1NjQgIkk2NHUiCi0gICNkZWZpbmUgUFJJaTMyICJJMzJpIgotICAjZGVmaW5lIFBSSXUzMiAiSTMydSIKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CmluZGV4IGFiN2Q1YmQuLmY5MDc1MzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpAQCAtNTAsOCArNTAsOCBAQAogICAgICAgICAnX19hYnNfXycsICdfX2Jvb2xfXycsICdfX2NlaWxfXycsICdfX2NvbXBsZXhfXycsICdfX2NvcHlfXycsCiAgICAgICAgICdfX2Zsb29yX18nLCAnX19mbG9hdF9fJywgJ19faGFzaF9fJywgJ19faW50X18nLCAnX19uZWdfXycsCiAgICAgICAgICdfX3Bvc19fJywgJ19fcmVkdWNlX18nLCAnX19yZXByX18nLCAnX19zdHJfXycsICdfX3RydW5jX18nLAotICAgICAgICAnYWRqdXN0ZWQnLCAnYXNfdHVwbGUnLCAnY2Fub25pY2FsJywgJ2Nvbmp1Z2F0ZScsICdjb3B5X2FicycsCi0gICAgICAgICdjb3B5X25lZ2F0ZScsICdpc19jYW5vbmljYWwnLCAnaXNfZmluaXRlJywgJ2lzX2luZmluaXRlJywKKyAgICAgICAgJ2FkanVzdGVkJywgJ2FzX2ludGVnZXJfcmF0aW8nLCAnYXNfdHVwbGUnLCAnY2Fub25pY2FsJywgJ2Nvbmp1Z2F0ZScsCisgICAgICAgICdjb3B5X2FicycsICdjb3B5X25lZ2F0ZScsICdpc19jYW5vbmljYWwnLCAnaXNfZmluaXRlJywgJ2lzX2luZmluaXRlJywKICAgICAgICAgJ2lzX25hbicsICdpc19xbmFuJywgJ2lzX3NpZ25lZCcsICdpc19zbmFuJywgJ2lzX3plcm8nLCAncmFkaXgnCiAgICAgKSwKICAgICAjIFVuYXJ5IHdpdGggb3B0aW9uYWwgY29udGV4dDoKQEAgLTEyOCw3ICsxMjgsNyBAQAogIyBGdW5jdGlvbnMgdGhhdCByZXF1aXJlIGEgcmVzdHJpY3RlZCBleHBvbmVudCByYW5nZSBmb3IgcmVhc29uYWJsZSBydW50aW1lcy4KIFVuYXJ5UmVzdHJpY3RlZCA9IFsKICAgJ19fY2VpbF9fJywgJ19fZmxvb3JfXycsICdfX2ludF9fJywgJ19fdHJ1bmNfXycsCi0gICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKKyAgJ2FzX2ludGVnZXJfcmF0aW8nLCAndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfdmFsdWUnCiBdCiAKIEJpbmFyeVJlc3RyaWN0ZWQgPSBbJ19fcm91bmRfXyddCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwppbmRleCA4NWZmY2EyLi4zMzYyMTk1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCisrKyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKQEAgLTU3LDkgKzU3LDkgQEAKICAgIHRoYXQgYWxsIHVzZSBvZiB0ZXh0IGFuZCB0YWlsIGFzIG9iamVjdCBwb2ludGVycyBtdXN0IGJlIHdyYXBwZWQgaW4KICAgIEpPSU5fT0JKLiAgc2VlIGNvbW1lbnRzIGluIHRoZSBFbGVtZW50T2JqZWN0IGRlZmluaXRpb24gZm9yIG1vcmUKICAgIGluZm8uICovCi0jZGVmaW5lIEpPSU5fR0VUKHApICgoUHlfdWludHB0cl90KSAocCkgJiAxKQotI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKFB5X3VpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCi0jZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgfihQeV91aW50cHRyX3QpMSkpCisjZGVmaW5lIEpPSU5fR0VUKHApICgodWludHB0cl90KSAocCkgJiAxKQorI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKHVpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCisjZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKHVpbnRwdHJfdCkgKHApICYgfih1aW50cHRyX3QpMSkpCiAKIC8qIFB5X0NMRUFSIGZvciBhIFB5T2JqZWN0KiB0aGF0IHVzZXMgYSBqb2luIGZsYWcuIFBhc3MgdGhlIHBvaW50ZXIgYnkKICAqIHJlZmVyZW5jZSBzaW5jZSB0aGlzIGZ1bmN0aW9uIHNldHMgaXQgdG8gTlVMTC4KQEAgLTEyOSwzMCArMTI5LDYgQEAKIC8qIGhlbHBlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQotZGVlcGNvcHkoUHlPYmplY3QqIG9iamVjdCwgUHlPYmplY3QqIG1lbW8pCi17Ci0gICAgLyogZG8gYSBkZWVwIGNvcHkgb2YgdGhlIGdpdmVuIG9iamVjdCAqLwotICAgIFB5T2JqZWN0KiBhcmdzOwotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7Ci0KLSAgICBpZiAoIXN0LT5kZWVwY29weV9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgImRlZXBjb3B5IGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG9iamVjdCwgbWVtbyk7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHN0LT5kZWVwY29weV9vYmosIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1MT0NBTChQeU9iamVjdCopCiBsaXN0X2pvaW4oUHlPYmplY3QqIGxpc3QpCiB7CiAgICAgLyogam9pbiBsaXN0IGVsZW1lbnRzIChkZXN0cm95aW5nIHRoZSBsaXN0IGluIHRoZSBwcm9jZXNzKSAqLwpAQCAtNDIwLDEwICszOTYsOCBAQAogICAgIFB5X1hERUNSRUYoYXR0cmliKTsKIAogICAgIC8qIFJlcGxhY2UgdGhlIG9iamVjdHMgYWxyZWFkeSBwb2ludGVkIHRvIGJ5IHRhZywgdGV4dCBhbmQgdGFpbC4gKi8KLSAgICB0bXAgPSBzZWxmX2VsZW0tPnRhZzsKICAgICBQeV9JTkNSRUYodGFnKTsKLSAgICBzZWxmX2VsZW0tPnRhZyA9IHRhZzsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKHNlbGZfZWxlbS0+dGFnLCB0YWcpOwogCiAgICAgdG1wID0gc2VsZl9lbGVtLT50ZXh0OwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTc0OCw2ICs3MjIsOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKSBlbGVtZW50OwogfQogCisvKiBIZWxwZXIgZm9yIGEgZGVlcCBjb3B5LiAqLworTE9DQUwoUHlPYmplY3QgKikgZGVlcGNvcHkoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKIC8qW2NsaW5pYyBpbnB1dF0KIF9lbGVtZW50dHJlZS5FbGVtZW50Ll9fZGVlcGNvcHlfXwogCkBAIC04MjAsNyArNzk3LDcgQEAKICAgICB9CiAKICAgICAvKiBhZGQgb2JqZWN0IHRvIG1lbW8gZGljdGlvbmFyeSAoc28gZGVlcGNvcHkgd29uJ3QgdmlzaXQgaXQgYWdhaW4pICovCi0gICAgaWQgPSBQeUxvbmdfRnJvbVNzaXplX3QoKFB5X3VpbnRwdHJfdCkgc2VsZik7CisgICAgaWQgPSBQeUxvbmdfRnJvbVNzaXplX3QoKHVpbnRwdHJfdCkgc2VsZik7CiAgICAgaWYgKCFpZCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtODM4LDYgKzgxNSw1MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitMT0NBTChQeU9iamVjdCAqKQorZGVlcGNvcHkoUHlPYmplY3QgKm9iamVjdCwgUHlPYmplY3QgKm1lbW8pCit7CisgICAgLyogZG8gYSBkZWVwIGNvcHkgb2YgdGhlIGdpdmVuIG9iamVjdCAqLworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0OworICAgIFB5T2JqZWN0ICpzdGFja1syXTsKKworICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICBpZiAob2JqZWN0ID09IFB5X05vbmUgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICBQeV9JTkNSRUYob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBpZiAoUHlfUkVGQ05UKG9iamVjdCkgPT0gMSkgeworICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgaW50IHNpbXBsZSA9IDE7CisgICAgICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQob2JqZWN0LCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8ICFQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2ltcGxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNpbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlEaWN0X0NvcHkob2JqZWN0KTsKKyAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCB0byBnZW5lcmFsIGNhc2UgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChFbGVtZW50X0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfXygoRWxlbWVudE9iamVjdCAqKW9iamVjdCwgbWVtbyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBHZW5lcmFsIGNhc2UgKi8KKyAgICBzdCA9IEVUX1NUQVRFX0dMT0JBTDsKKyAgICBpZiAoIXN0LT5kZWVwY29weV9vYmopIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZWVwY29weSBoZWxwZXIgbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0YWNrWzBdID0gb2JqZWN0OworICAgIHN0YWNrWzFdID0gbWVtbzsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsKHN0LT5kZWVwY29weV9vYmosIHN0YWNrLCAyKTsKK30KKworCiAvKltjbGluaWMgaW5wdXRdCiBfZWxlbWVudHRyZWUuRWxlbWVudC5fX3NpemVvZl9fIC0+IFB5X3NzaXplX3QKIApAQCAtMTc2Myw3ICsxNzg3LDcgQEAKICAgICAgICAgICAgICAgICBzdGVwID0gLXN0ZXA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuIDw9IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuIDw9IFNJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKTsKIAogICAgICAgICAgICAgLyogcmVjeWNsZSBpcyBhIGxpc3QgdGhhdCB3aWxsIGNvbnRhaW4gYWxsIHRoZSBjaGlsZHJlbgogICAgICAgICAgICAgICogc2NoZWR1bGVkIGZvciByZW1vdmFsLgpAQCAtMTg5Miw5MiArMTkxNiw5MCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqKQorZWxlbWVudF90YWdfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgUHlPYmplY3QqIHJlczsKLSAgICBjaGFyICpuYW1lID0gIiI7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLQotICAgIGlmIChuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogaGFuZGxlIGNvbW1vbiBhdHRyaWJ1dGVzIGZpcnN0ICovCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewotICAgICAgICByZXMgPSBzZWxmLT50YWc7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewotICAgICAgICByZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOwotICAgICAgICBQeV9YSU5DUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgLyogbWV0aG9kcyAqLwotICAgIHJlcyA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCopIHNlbGYsIG5hbWVvYmopOwotICAgIGlmIChyZXMpCi0gICAgICAgIHJldHVybiByZXM7Ci0KLSAgICAvKiBsZXNzIGNvbW1vbiBhdHRyaWJ1dGVzICovCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFpbCIpID09IDApIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfdGFpbChzZWxmKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7Ci0gICAgICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXMgPSBlbGVtZW50X2dldF9hdHRyaWIoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgUHlPYmplY3QgKnJlcyA9IHNlbGYtPnRhZzsKICAgICBQeV9JTkNSRUYocmVzKTsKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgaW50Ci1lbGVtZW50X3NldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqLCBQeU9iamVjdCogdmFsdWUpCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3RleHRfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgY2hhciAqbmFtZSA9ICIiOworICAgIFB5T2JqZWN0ICpyZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQogCi0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBhdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuIC0xOworc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF90YWlsX2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBlbGVtZW50X2dldF90YWlsKHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X2F0dHJpYl9nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKKyAgICBQeV9YSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KIAotICAgIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKLSAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfU0VUUkVGKHNlbGYtPnRhZywgdmFsdWUpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOwotICAgICAgICBzZWxmLT50ZXh0ID0gdmFsdWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT50ZXh0KTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidGFpbCIpID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKLSAgICAgICAgc2VsZi0+dGFpbCA9IHZhbHVlOwotICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGFpbCk7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKLSAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkgewotICAgICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgIFB5X1NFVFJFRihzZWxmLT5leHRyYS0+YXR0cmliLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgIkNhbid0IHNldCBhcmJpdHJhcnkgYXR0cmlidXRlcyBvbiBFbGVtZW50Iik7Ci0gICAgICAgIHJldHVybiAtMTsKKy8qIG1hY3JvIGZvciBzZXR0ZXIgdmFsaWRhdGlvbiAqLworI2RlZmluZSBfVkFMSURBVEVfQVRUUl9WQUxVRShWKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKFYpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgUHlFeGNfQXR0cmlidXRlRXJyb3IsICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJjYW4ndCBkZWxldGUgZWxlbWVudCBhdHRyaWJ1dGUiKTsgICAgICBcCisgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAorc3RhdGljIGludAorZWxlbWVudF90YWdfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+dGFnLCB2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfdGV4dF9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7CisgICAgc2VsZi0+dGV4dCA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X3RhaWxfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworICAgIHNlbGYtPnRhaWwgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF9hdHRyaWJfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYiwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xOTk3LDIyICsyMDE5LDIyIEBACiAgKiBwcmUtb3JkZXIgdHJhdmVyc2FsLiBUbyBrZWVwIHRyYWNrIG9mIHdoaWNoIHN1Yi1lbGVtZW50IHNob3VsZCBiZSByZXR1cm5lZAogICogbmV4dCwgYSBzdGFjayBvZiBwYXJlbnRzIGlzIG1haW50YWluZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBzdGFjay1iYXNlZAogICogaXRlcmF0aXZlIHByZS1vcmRlciB0cmF2ZXJzYWwgb2YgYSB0cmVlLgotICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBzaW5nbGUtbGlua2VkIGxpc3Qgc3RhcnRpbmcgYXQgcGFyZW50X3N0YWNrLgotICogRWFjaCBzdGFjayBub2RlIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgorICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBjb250aW51b3VzIGFycmF5LgorICogRWFjaCBzdGFjayBpdGVtIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgogICogdGhlIGN1cnJlbnQgb25lIGlzIGV4aGF1c3RlZCwgYW5kIHRoZSBuZXh0IGNoaWxkIHRvIGV4YW1pbmUgaW4gdGhhdCBwYXJlbnQuCiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcmVudExvY2F0b3JfdCB7CiAgICAgRWxlbWVudE9iamVjdCAqcGFyZW50OwogICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7Ci0gICAgc3RydWN0IFBhcmVudExvY2F0b3JfdCAqbmV4dDsKIH0gUGFyZW50TG9jYXRvcjsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQYXJlbnRMb2NhdG9yICpwYXJlbnRfc3RhY2s7CisgICAgUHlfc3NpemVfdCBwYXJlbnRfc3RhY2tfdXNlZDsKKyAgICBQeV9zc2l6ZV90IHBhcmVudF9zdGFja19zaXplOwogICAgIEVsZW1lbnRPYmplY3QgKnJvb3RfZWxlbWVudDsKICAgICBQeU9iamVjdCAqc291Z2h0X3RhZzsKLSAgICBpbnQgcm9vdF9kb25lOwogICAgIGludCBnZXR0ZXh0OwogfSBFbGVtZW50SXRlck9iamVjdDsKIApAQCAtMjAyMCwxMyArMjA0MiwxMSBAQAogc3RhdGljIHZvaWQKIGVsZW1lbnRpdGVyX2RlYWxsb2MoRWxlbWVudEl0ZXJPYmplY3QgKml0KQogewotICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOwotICAgIHdoaWxlIChwKSB7Ci0gICAgICAgIFBhcmVudExvY2F0b3IgKnRlbXAgPSBwOwotICAgICAgICBQeV9YREVDUkVGKHAtPnBhcmVudCk7Ci0gICAgICAgIHAgPSBwLT5uZXh0OwotICAgICAgICBQeU9iamVjdF9GcmVlKHRlbXApOwotICAgIH0KKyAgICBQeV9zc2l6ZV90IGkgPSBpdC0+cGFyZW50X3N0YWNrX3VzZWQ7CisgICAgaXQtPnBhcmVudF9zdGFja191c2VkID0gMDsKKyAgICB3aGlsZSAoaS0tKQorICAgICAgICBQeV9YREVDUkVGKGl0LT5wYXJlbnRfc3RhY2tbaV0ucGFyZW50KTsKKyAgICBQeU1lbV9GcmVlKGl0LT5wYXJlbnRfc3RhY2spOwogCiAgICAgUHlfWERFQ1JFRihpdC0+c291Z2h0X3RhZyk7CiAgICAgUHlfWERFQ1JFRihpdC0+cm9vdF9lbGVtZW50KTsKQEAgLTIwMzgsMTEgKzIwNTgsOSBAQAogc3RhdGljIGludAogZWxlbWVudGl0ZXJfdHJhdmVyc2UoRWxlbWVudEl0ZXJPYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKLSAgICB3aGlsZSAocCkgewotICAgICAgICBQeV9WSVNJVChwLT5wYXJlbnQpOwotICAgICAgICBwID0gcC0+bmV4dDsKLSAgICB9CisgICAgUHlfc3NpemVfdCBpID0gaXQtPnBhcmVudF9zdGFja191c2VkOworICAgIHdoaWxlIChpLS0pCisgICAgICAgIFB5X1ZJU0lUKGl0LT5wYXJlbnRfc3RhY2tbaV0ucGFyZW50KTsKIAogICAgIFB5X1ZJU0lUKGl0LT5yb290X2VsZW1lbnQpOwogICAgIFB5X1ZJU0lUKGl0LT5zb3VnaHRfdGFnKTsKQEAgLTIwNTEsMTcgKzIwNjksMjUgQEAKIAogLyogSGVscGVyIGZ1bmN0aW9uIGZvciBlbGVtZW50aXRlcl9uZXh0LiBBZGQgYSBuZXcgcGFyZW50IHRvIHRoZSBwYXJlbnQgc3RhY2suCiAgKi8KLXN0YXRpYyBQYXJlbnRMb2NhdG9yICoKLXBhcmVudF9zdGFja19wdXNoX25ldyhQYXJlbnRMb2NhdG9yICpzdGFjaywgRWxlbWVudE9iamVjdCAqcGFyZW50KQorc3RhdGljIGludAorcGFyZW50X3N0YWNrX3B1c2hfbmV3KEVsZW1lbnRJdGVyT2JqZWN0ICppdCwgRWxlbWVudE9iamVjdCAqcGFyZW50KQogewotICAgIFBhcmVudExvY2F0b3IgKm5ld19ub2RlID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSk7Ci0gICAgaWYgKG5ld19ub2RlKSB7Ci0gICAgICAgIG5ld19ub2RlLT5wYXJlbnQgPSBwYXJlbnQ7Ci0gICAgICAgIFB5X0lOQ1JFRihwYXJlbnQpOwotICAgICAgICBuZXdfbm9kZS0+Y2hpbGRfaW5kZXggPSAwOwotICAgICAgICBuZXdfbm9kZS0+bmV4dCA9IHN0YWNrOworICAgIFBhcmVudExvY2F0b3IgKml0ZW07CisKKyAgICBpZiAoaXQtPnBhcmVudF9zdGFja191c2VkID49IGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSkgeworICAgICAgICBQeV9zc2l6ZV90IG5ld19zaXplID0gaXQtPnBhcmVudF9zdGFja19zaXplICogMjsgIC8qIG5ldmVyIG92ZXJmbG93ICovCisgICAgICAgIFBhcmVudExvY2F0b3IgKnBhcmVudF9zdGFjayA9IGl0LT5wYXJlbnRfc3RhY2s7CisgICAgICAgIFB5TWVtX1Jlc2l6ZShwYXJlbnRfc3RhY2ssIFBhcmVudExvY2F0b3IsIG5ld19zaXplKTsKKyAgICAgICAgaWYgKHBhcmVudF9zdGFjayA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrOworICAgICAgICBpdC0+cGFyZW50X3N0YWNrX3NpemUgPSBuZXdfc2l6ZTsKICAgICB9Ci0gICAgcmV0dXJuIG5ld19ub2RlOworICAgIGl0ZW0gPSBpdC0+cGFyZW50X3N0YWNrICsgaXQtPnBhcmVudF9zdGFja191c2VkKys7CisgICAgUHlfSU5DUkVGKHBhcmVudCk7CisgICAgaXRlbS0+cGFyZW50ID0gcGFyZW50OworICAgIGl0ZW0tPmNoaWxkX2luZGV4ID0gMDsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwNzgsMTUxICsyMTA0LDkxIEBACiAgICAgICogICAtIGl0ZXJ0ZXh0KCkgYWxzbyBoYXMgdG8gaGFuZGxlIHRhaWwsIGFmdGVyIGZpbmlzaGluZyB3aXRoIGFsbCB0aGUKICAgICAgKiAgICAgY2hpbGRyZW4gb2YgYSBub2RlLgogICAgICAqLwotICAgIEVsZW1lbnRPYmplY3QgKmN1cl9wYXJlbnQ7Ci0gICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKICAgICBpbnQgcmM7CiAgICAgRWxlbWVudE9iamVjdCAqZWxlbTsKKyAgICBQeU9iamVjdCAqdGV4dDsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSByZWFjaGVkIGluIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVyYXRpb24sIHdoZXJlCi0gICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIFRoZSByb290X2RvbmUgZmxhZyBnaXZlcyB1cyBpbmRpY2F0aW9uCi0gICAgICAgICAqIHdoZXRoZXIgd2UndmUganVzdCBzdGFydGVkIGl0ZXJhdGluZyAoc28gcm9vdF9kb25lIGlzIDApLCBpbiB3aGljaAotICAgICAgICAgKiBjYXNlIHRoZSByb290IGlzIHJldHVybmVkLiBJZiByb290X2RvbmUgaXMgMSBhbmQgd2UncmUgaGVyZSwgdGhlCisgICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIElmIHJvb3RfZWxlbWVudCBpcyBOVUxMIGFuZCB3ZSdyZSBoZXJlLCB0aGUKICAgICAgICAgICogaXRlcmF0b3IgaXMgZXhoYXVzdGVkLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+cm9vdF9kb25lKSB7CisgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFja191c2VkKSB7CisgICAgICAgICAgICBpZiAoIWl0LT5yb290X2VsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVtID0gaXQtPnJvb3RfZWxlbWVudDsKLSAgICAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIGl0LT5yb290X2RvbmUgPSAxOwotICAgICAgICAgICAgICAgIHJjID0gKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgotICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KLSAgICAgICAgICovCi0gICAgICAgIGN1cl9wYXJlbnQgPSBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQ7Ci0gICAgICAgIGNoaWxkX2luZGV4ID0gaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXg7Ci0gICAgICAgIGlmIChjdXJfcGFyZW50LT5leHRyYSAmJiBjaGlsZF9pbmRleCA8IGN1cl9wYXJlbnQtPmV4dHJhLT5sZW5ndGgpIHsKLSAgICAgICAgICAgIGVsZW0gPSAoRWxlbWVudE9iamVjdCAqKWN1cl9wYXJlbnQtPmV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCsrOwotICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKLSAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgewotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJjID0gKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsZW0gPSBpdC0+cm9vdF9lbGVtZW50OyAgLyogc3RlYWxzIGEgcmVmZXJlbmNlICovCisgICAgICAgICAgICBpdC0+cm9vdF9lbGVtZW50ID0gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0YWlsOwotICAgICAgICAgICAgUGFyZW50TG9jYXRvciAqbmV4dDsKLSAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihjdXJfcGFyZW50KTsKLSAgICAgICAgICAgICAgICB0YWlsID0gZWxlbWVudF9nZXRfdGFpbChjdXJfcGFyZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoIXRhaWwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdXJfcGFyZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRhaWwgPSBQeV9Ob25lOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5leHQgPSBpdC0+cGFyZW50X3N0YWNrLT5uZXh0OwotICAgICAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKLSAgICAgICAgICAgIFB5T2JqZWN0X0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gbmV4dDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoY3VyX3BhcmVudCk7Ci0KLSAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50IGhlcmU7Ci0gICAgICAgICAgICAgKiB0aGlzIGlzIGJlY2F1c2UgaXRlcnRleHQoKSBpcyBzdXBwb3NlZCB0byBvbmx5IHJldHVybiAqaW5uZXIqCi0gICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgorICAgICAgICAgICAgICogeWVzLCB2aXNpdCB0aGUgbmV4dCBjaGlsZC4gSWYgbm90LCBwb3AgdGhlIHN0YWNrIGFuZCB0cnkgYWdhaW4uCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKLSAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0YWlsKTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFpbDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQYXJlbnRMb2NhdG9yICppdGVtID0gJml0LT5wYXJlbnRfc3RhY2tbaXQtPnBhcmVudF9zdGFja191c2VkIC0gMV07CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4ID0gaXRlbS0+Y2hpbGRfaW5kZXg7CisgICAgICAgICAgICBFbGVtZW50T2JqZWN0RXh0cmEgKmV4dHJhOworICAgICAgICAgICAgZWxlbSA9IGl0ZW0tPnBhcmVudDsKKyAgICAgICAgICAgIGV4dHJhID0gZWxlbS0+ZXh0cmE7CisgICAgICAgICAgICBpZiAoIWV4dHJhIHx8IGNoaWxkX2luZGV4ID49IGV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQtLTsKKyAgICAgICAgICAgICAgICAvKiBOb3RlIHRoYXQgZXh0cmEgY29uZGl0aW9uIG9uIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCBoZXJlOworICAgICAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKKyAgICAgICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0ICYmIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCkgeworICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF9nZXRfdGFpbChlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBnZXR0ZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVsZW0gPSAoRWxlbWVudE9iamVjdCAqKWV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07CisgICAgICAgICAgICBpdGVtLT5jaGlsZF9pbmRleCsrOworICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhcmVudF9zdGFja19wdXNoX25ldyhpdCwgZWxlbSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKKyAgICAgICAgICAgIGdvdG8gZ2V0dGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lKQorICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07CisKKyAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLCBpdC0+c291Z2h0X3RhZywgUHlfRVEpOworICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07CisKKyAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICBpZiAocmMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNvbnRpbnVlOworCitnZXR0ZXh0OgorICAgICAgICBpZiAoIXRleHQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICh0ZXh0ID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOworICAgICAgICAgICAgaWYgKHJjID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNzQsNiArMjI0MCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKKyNkZWZpbmUgSU5JVF9QQVJFTlRfU1RBQ0tfU0laRSA4CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjcmVhdGVfZWxlbWVudGl0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywgaW50IGdldHRleHQpCkBAIC0yMjg2LDIyICsyMjUzLDIwIEBACiAKICAgICBQeV9JTkNSRUYodGFnKTsKICAgICBpdC0+c291Z2h0X3RhZyA9IHRhZzsKLSAgICBpdC0+cm9vdF9kb25lID0gMDsKICAgICBpdC0+Z2V0dGV4dCA9IGdldHRleHQ7CiAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgIGl0LT5yb290X2VsZW1lbnQgPSBzZWxmOwogCiAgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOwogCi0gICAgaXQtPnBhcmVudF9zdGFjayA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOworICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBQeU1lbV9OZXcoUGFyZW50TG9jYXRvciwgSU5JVF9QQVJFTlRfU1RBQ0tfU0laRSk7CiAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ID0gTlVMTDsKLSAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCA9IDA7Ci0gICAgaXQtPnBhcmVudF9zdGFjay0+bmV4dCA9IE5VTEw7CisgICAgaXQtPnBhcmVudF9zdGFja191c2VkID0gMDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3NpemUgPSBJTklUX1BBUkVOVF9TVEFDS19TSVpFOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQpAQCAtMjMyNiw3ICsyMjkxLDcgQEAKICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5OwogCiAgICAgLyogZWxlbWVudCB0cmFjaW5nICovCi0gICAgUHlPYmplY3QgKmV2ZW50czsgLyogbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgaWYgbm90IGNvbGxlY3RpbmcgKi8KKyAgICBQeU9iamVjdCAqZXZlbnRzX2FwcGVuZDsgLyogdGhlIGFwcGVuZCBtZXRob2Qgb2YgdGhlIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMICovCiAgICAgUHlPYmplY3QgKnN0YXJ0X2V2ZW50X29iajsgLyogZXZlbnQgb2JqZWN0cyAoTlVMTCB0byBpZ25vcmUpICovCiAgICAgUHlPYmplY3QgKmVuZF9ldmVudF9vYmo7CiAgICAgUHlPYmplY3QgKnN0YXJ0X25zX2V2ZW50X29iajsKQEAgLTIzNjEsNyArMjMyNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+aW5kZXggPSAwOwogCi0gICAgICAgIHQtPmV2ZW50cyA9IE5VTEw7CisgICAgICAgIHQtPmV2ZW50c19hcHBlbmQgPSBOVUxMOwogICAgICAgICB0LT5zdGFydF9ldmVudF9vYmogPSB0LT5lbmRfZXZlbnRfb2JqID0gTlVMTDsKICAgICAgICAgdC0+c3RhcnRfbnNfZXZlbnRfb2JqID0gdC0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7CiAgICAgfQpAQCAtMjM4MCwxMyArMjM0NSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxY2ZhNzU1ODk3MGVlOTYgaW5wdXQ9MWI0MjRlZWVmYzM1MjQ5Y10qLwogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAoZWxlbWVudF9mYWN0b3J5KSB7CiAgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50X2ZhY3RvcnkpOwotICAgICAgICB0bXAgPSBzZWxmLT5lbGVtZW50X2ZhY3Rvcnk7Ci0gICAgICAgIHNlbGYtPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgZWxlbWVudF9mYWN0b3J5KTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTI0MTEsNyArMjM3Miw3IEBACiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqKTsKICAgICBQeV9DTEVBUihzZWxmLT5lbmRfZXZlbnRfb2JqKTsKICAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9ldmVudF9vYmopOwotICAgIFB5X0NMRUFSKHNlbGYtPmV2ZW50cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzX2FwcGVuZCk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhY2spOwogICAgIFB5X0NMRUFSKHNlbGYtPmRhdGEpOwogICAgIFB5X0NMRUFSKHNlbGYtPmxhc3QpOwpAQCAtMjQ5MiwxMyArMjQ1MywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpub2RlKQogewogICAgIGlmIChhY3Rpb24gIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIFB5T2JqZWN0ICpldmVudCA9IFB5VHVwbGVfUGFjaygyLCBhY3Rpb24sIG5vZGUpOworICAgICAgICBpZiAoZXZlbnQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZWxmLT5ldmVudHNfYXBwZW5kLCBldmVudCwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihldmVudCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VsZi0+ZXZlbnRzLCByZXMpIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMjUyNywxMCArMjQ4OSwxNyBAQAogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+ZWxlbWVudF9mYWN0b3J5ICYmIHNlbGYtPmVsZW1lbnRfZmFjdG9yeSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoIXNlbGYtPmVsZW1lbnRfZmFjdG9yeSB8fCBzZWxmLT5lbGVtZW50X2ZhY3RvcnkgPT0gUHlfTm9uZSkgewogICAgICAgICBub2RlID0gY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJpYiA9PSBQeV9Ob25lKSB7CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKKyAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOwogICAgIH0KICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yOTg5LDEyICsyOTU4LDggQEAKICAgICAgICAgICAgIGF0dHJpYl9pbiArPSAyOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogUGFzcyBhbiBlbXB0eSBkaWN0aW9uYXJ5IG9uICovCi0gICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKCFhdHRyaWIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKICAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CkBAIC0zMDAzLDYgKzI5NjgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZywgYXR0cmliKTsKICAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX3N0YXJ0KSB7CisgICAgICAgIGlmIChhdHRyaWIgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAoIWF0dHJpYikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX3N0YXJ0LCAiT08iLCB0YWcsIGF0dHJpYik7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlcyA9IE5VTEw7CkBAIC0zMDc2LDcgKzMwNDksNyBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldC0+ZXZlbnRzIHx8ICF0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaikKKyAgICBpZiAoIXRhcmdldC0+ZXZlbnRzX2FwcGVuZCB8fCAhdGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmopCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghdXJpKQpAQCAtMzA5OSw3ICszMDcyLDcgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0YXJnZXQtPmV2ZW50cykKKyAgICBpZiAoIXRhcmdldC0+ZXZlbnRzX2FwcGVuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHJlZWJ1aWxkZXJfYXBwZW5kX2V2ZW50KHRhcmdldCwgdGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqLCBQeV9Ob25lKTsKQEAgLTM0MjYsNyArMzM5OSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKHNlbGYtPmhhbmRsZV9jbG9zZSkgewogICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfY2xvc2UsICIiKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9Bcmcoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiByZXM7CkBAIC0zNTg4LDcgKzM1NjEsNyBAQAogLypbY2xpbmljIGlucHV0XQogX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5fc2V0ZXZlbnRzCiAKLSAgICBldmVudHNfcXVldWU6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TGlzdF9UeXBlJykKKyAgICBldmVudHNfcXVldWU6IG9iamVjdAogICAgIGV2ZW50c190b19yZXBvcnQ6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTM1OTgsMTIgKzM1NzEsMTIgQEAKIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDQwMDkyOTIyYjEzZWQxIGlucHV0PTU5ZGI5NzQyOTEwYzYxNzRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDQwMDkyOTIyYjEzZWQxIGlucHV0PWFiZjkwODMwYTFjM2IwZmNdKi8KIHsKICAgICAvKiBhY3RpdmF0ZSBlbGVtZW50IGV2ZW50IHJlcG9ydGluZyAqLwogICAgIFB5X3NzaXplX3QgaTsKICAgICBUcmVlQnVpbGRlck9iamVjdCAqdGFyZ2V0OwotICAgIFB5T2JqZWN0ICpldmVudHNfc2VxOworICAgIFB5T2JqZWN0ICpldmVudHNfYXBwZW5kLCAqZXZlbnRzX3NlcTsKIAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTM2MTYsOCArMzU4OSwxMCBAQAogCiAgICAgdGFyZ2V0ID0gKFRyZWVCdWlsZGVyT2JqZWN0Kikgc2VsZi0+dGFyZ2V0OwogCi0gICAgUHlfSU5DUkVGKGV2ZW50c19xdWV1ZSk7Ci0gICAgUHlfWFNFVFJFRih0YXJnZXQtPmV2ZW50cywgZXZlbnRzX3F1ZXVlKTsKKyAgICBldmVudHNfYXBwZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhldmVudHNfcXVldWUsICJhcHBlbmQiKTsKKyAgICBpZiAoZXZlbnRzX2FwcGVuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9YU0VUUkVGKHRhcmdldC0+ZXZlbnRzX2FwcGVuZCwgZXZlbnRzX2FwcGVuZCk7CiAKICAgICAvKiBjbGVhciBvdXQgZXhpc3RpbmcgZXZlbnRzICovCiAgICAgUHlfQ0xFQVIodGFyZ2V0LT5zdGFydF9ldmVudF9vYmopOwpAQCAtMzcyNyw3ICszNzAyLDcgQEAKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSVEVYVF9NRVRIT0RERUYKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSRklORF9NRVRIT0RERUYKIAotICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKKyAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRDSElMRFJFTl9NRVRIT0RERUYKIAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURU1TX01FVEhPRERFRgpAQCAtMzc1MCw2ICszNzI1LDI2IEBACiAgICAgKG9iam9iamFyZ3Byb2MpIGVsZW1lbnRfYXNzX3N1YnNjciwKIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBlbGVtZW50X2dldHNldGxpc3RbXSA9IHsKKyAgICB7InRhZyIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF90YWdfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfdGFnX3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoYXQga2luZCBvZiBkYXRhIHRoaXMgZWxlbWVudCByZXByZXNlbnRzIn0sCisgICAgeyJ0ZXh0IiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X3RleHRfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfdGV4dF9zZXR0ZXIsCisgICAgICAgICJBIHN0cmluZyBvZiB0ZXh0IGRpcmVjdGx5IGFmdGVyIHRoZSBzdGFydCB0YWcsIG9yIE5vbmUifSwKKyAgICB7InRhaWwiLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfdGFpbF9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90YWlsX3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIG9mIHRleHQgZGlyZWN0bHkgYWZ0ZXIgdGhlIGVuZCB0YWcsIG9yIE5vbmUifSwKKyAgICB7ImF0dHJpYiIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF9hdHRyaWJfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfYXR0cmliX3NldHRlciwKKyAgICAgICAgIkEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcyJ9LAorICAgIHtOVUxMfSwKK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKQEAgLTM3NjYsOCArMzc2MSw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIChzZXRhdHRyb2Z1bmMpZWxlbWVudF9zZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KQEAgLTM3ODAsNyArMzc3NSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBlbGVtZW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGVsZW1lbnRfZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCmluZGV4IGQ3ODVjNDkuLmZhNWZhZDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCkBAIC0xMjgsNDQgKzEyOCw2MCBAQAogewogICAgIFB5T2JqZWN0ICpyZXQ7CiAgICAgUHlPYmplY3QgKmFyZ2FwcGwsICprd2FwcGw7CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOwogCiAgICAgYXNzZXJ0IChQeUNhbGxhYmxlX0NoZWNrKHB0by0+Zm4pKTsKICAgICBhc3NlcnQgKFB5VHVwbGVfQ2hlY2socHRvLT5hcmdzKSk7CiAgICAgYXNzZXJ0IChQeURpY3RfQ2hlY2socHRvLT5rdykpOwogCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUocHRvLT5hcmdzKSA9PSAwKSB7Ci0gICAgICAgIGFyZ2FwcGwgPSBhcmdzOwotICAgICAgICBQeV9JTkNSRUYoYXJncyk7Ci0gICAgfSBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKLSAgICAgICAgYXJnYXBwbCA9IHB0by0+YXJnczsKLSAgICAgICAgUHlfSU5DUkVGKHB0by0+YXJncyk7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICBhcmdhcHBsID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKSB7CisgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0ocHRvLT5hcmdzLCAwKTsKKyAgICAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKHB0by0+YXJncyk7CisgICAgICAgIGFyZ2FwcGwgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBOVUxMOwogICAgICAgICBhcmdhcHBsID0gUHlTZXF1ZW5jZV9Db25jYXQocHRvLT5hcmdzLCBhcmdzKTsKLSAgICAgICAgaWYgKGFyZ2FwcGwgPT0gTlVMTCkKKyAgICAgICAgaWYgKGFyZ2FwcGwgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKwogICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdhcHBsKSk7CiAgICAgfQogCiAgICAgaWYgKFB5RGljdF9TaXplKHB0by0+a3cpID09IDApIHsKICAgICAgICAga3dhcHBsID0ga3c7CiAgICAgICAgIFB5X1hJTkNSRUYoa3dhcHBsKTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAga3dhcHBsID0gUHlEaWN0X0NvcHkocHRvLT5rdyk7CiAgICAgICAgIGlmIChrd2FwcGwgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdhcHBsKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisKICAgICAgICAgaWYgKGt3ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeURpY3RfTWVyZ2Uoa3dhcHBsLCBrdywgMSkgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ2FwcGwpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FwcGwpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0ID0gUHlPYmplY3RfQ2FsbChwdG8tPmZuLCBhcmdhcHBsLCBrd2FwcGwpOwotICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICBpZiAoc3RhY2spIHsKKyAgICAgICAgcmV0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwdG8tPmZuLCBzdGFjaywgbmFyZ3MsIGt3YXBwbCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsKHB0by0+Zm4sIGFyZ2FwcGwsIGt3YXBwbCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICB9CiAgICAgUHlfWERFQ1JFRihrd2FwcGwpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC0yMTMsNyArMjI5LDcgQEAKICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgaWYgKHN0YXR1cyA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShwdG8pLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIuLi4iKTsKICAgICB9CiAKICAgICBhcmdsaXN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwpAQCAtNDYxLDEyICs0NzcsMTIgQEAKIGtleW9iamVjdF9yaWNoY29tcGFyZShQeU9iamVjdCAqa28sIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgUHlPYmplY3QgKng7CiAgICAgUHlPYmplY3QgKnk7CiAgICAgUHlPYmplY3QgKmNvbXBhcmU7CiAgICAgUHlPYmplY3QgKmFuc3dlcjsKICAgICBzdGF0aWMgUHlPYmplY3QgKnplcm87CisgICAgUHlPYmplY3QqIHN0YWNrWzJdOwogCiAgICAgaWYgKHplcm8gPT0gTlVMTCkgewogICAgICAgICB6ZXJvID0gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtNDkwLDE3ICs1MDYsMTMgQEAKICAgICAvKiBDYWxsIHRoZSB1c2VyJ3MgY29tcGFyaXNvbiBmdW5jdGlvbiBhbmQgdHJhbnNsYXRlIHRoZSAzLXdheQogICAgICAqIHJlc3VsdCBpbnRvIHRydWUgb3IgZmFsc2UgKG9yIGVycm9yKS4KICAgICAgKi8KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBzdGFja1swXSA9IHg7CisgICAgc3RhY2tbMV0gPSB5OworICAgIHJlcyA9IF9QeU9iamVjdF9GYXN0Q2FsbChjb21wYXJlLCBzdGFjaywgMik7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih4KTsKLSAgICBQeV9JTkNSRUYoeSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCB4KTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHkpOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoY29tcGFyZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgYW5zd2VyID0gUHlPYmplY3RfUmljaENvbXBhcmUocmVzLCB6ZXJvLCBvcCk7CiAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIGFuc3dlcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYyBiL01vZHVsZXMvX2dkYm1tb2R1bGUuYwppbmRleCBiODQwYmY1Li5kYWFlNzFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCkBAIC02MTQsNyArNjE0LDcgQEAKICAgICByZXR1cm4gbmV3ZGJtb2JqZWN0KG5hbWUsIGlmbGFncywgbW9kZSk7CiB9CiAKLXN0YXRpYyBjaGFyIGRibW1vZHVsZV9vcGVuX2ZsYWdzW10gPSAicndjbiIKK3N0YXRpYyBjb25zdCBjaGFyIGRibW1vZHVsZV9vcGVuX2ZsYWdzW10gPSAicndjbiIKICNpZmRlZiBHREJNX0ZBU1QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZiIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggZmY1NzYxNC4uZGFhNGYzZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC0yNSw2ICsyNSwxMiBAQAogI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgogI2luY2x1ZGUgIm9wZW5zc2wvZXJyLmgiCiAKKyNpbmNsdWRlICJjbGluaWMvX2hhc2hvcGVuc3NsLmMuaCIKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaGFzaGxpYgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YzJiNGZmMDgxYmFjNGJlMV0qLworCiAjZGVmaW5lIE1VTkNIX1NJWkUgSU5UX01BWAogCiAjaWZuZGVmIEhBU0hfT0JKX0NPTlNUUlVDVE9SCkBAIC03MTMsNiArNzE5LDEyOCBAQAogCiAjZW5kaWYKIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPiAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NDUllQVCkgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisjZGVmaW5lIFBZX1NDUllQVCAxCisKKy8qW2NsaW5pYyBpbnB1dF0KK19oYXNobGliLnNjcnlwdAorCisgICAgcGFzc3dvcmQ6IFB5X2J1ZmZlcgorICAgICoKKyAgICBzYWx0OiBQeV9idWZmZXIgPSBOb25lCisgICAgbiBhcyBuX29iajogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMb25nX1R5cGUnKSA9IE5vbmUKKyAgICByIGFzIHJfb2JqOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxvbmdfVHlwZScpID0gTm9uZQorICAgIHAgYXMgcF9vYmo6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TG9uZ19UeXBlJykgPSBOb25lCisgICAgbWF4bWVtOiBsb25nID0gMAorICAgIGRrbGVuOiBsb25nID0gNjQKKworCitzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaGFzaGxpYl9zY3J5cHRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKnBhc3N3b3JkLCBQeV9idWZmZXIgKnNhbHQsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbl9vYmosIFB5T2JqZWN0ICpyX29iaiwgUHlPYmplY3QgKnBfb2JqLAorICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhtZW0sIGxvbmcgZGtsZW4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQ4NDllMmFhMmI3YjQ2YyBpbnB1dD00OGE3ZDYzYmYzZjc1YzQyXSovCit7CisgICAgUHlPYmplY3QgKmtleV9vYmogPSBOVUxMOworICAgIGNoYXIgKmtleTsKKyAgICBpbnQgcmV0dmFsOworICAgIHVuc2lnbmVkIGxvbmcgbiwgciwgcDsKKworICAgIGlmIChwYXNzd29yZC0+bGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBpcyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNhbHQtPmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2FsdCBpcyByZXF1aXJlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNhbHQtPmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2FsdCBpcyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbiA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhuX29iaik7CisgICAgaWYgKG4gPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJuIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG4gPCAyIHx8IG4gJiAobiAtIDEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm4gbXVzdCBiZSBhIHBvd2VyIG9mIDIuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHIgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcocl9vYmopOworICAgIGlmIChyID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHAgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcocF9vYmopOworICAgIGlmIChwID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInAgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChtYXhtZW0gPCAwIHx8IG1heG1lbSA+IElOVF9NQVgpIHsKKyAgICAgICAgLyogT3BlblNTTCAxLjEuMCByZXN0cmljdHMgbWF4bWVtIHRvIDMyTUIuIEl0IG1heSBjaGFuZ2UgaW4gdGhlCisgICAgICAgICAgIGZ1dHVyZS4gVGhlIG1heG1lbSBjb25zdGFudCBpcyBwcml2YXRlIHRvIE9wZW5TU0wuICovCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm1heG1lbSBtdXN0IGJlIHBvc2l0aXZlIGFuZCBzbWFsbGVyIHRoYW4gJWQiLAorICAgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGtsZW4gPCAxIHx8IGRrbGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgImRrbGVuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIHNtYWxsZXIgdGhhbiAlZCIsCisgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBsZXQgT3BlblNTTCB2YWxpZGF0ZSB0aGUgcmVzdCAqLworICAgIHJldHZhbCA9IEVWUF9QQkVfc2NyeXB0KE5VTEwsIDAsIE5VTEwsIDAsIG4sIHIsIHAsIG1heG1lbSwgTlVMTCwgMCk7CisgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgLyogc29ycnksIGNhbid0IGRvIG11Y2ggYmV0dGVyICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcGFyYW1lbXRlciBjb21iaW5hdGlvbiBmb3IgbiwgciwgcCwgbWF4bWVtLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgIH0KKworICAgIGtleV9vYmogPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGRrbGVuKTsKKyAgICBpZiAoa2V5X29iaiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrZXkgPSBQeUJ5dGVzX0FTX1NUUklORyhrZXlfb2JqKTsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXR2YWwgPSBFVlBfUEJFX3NjcnlwdCgKKyAgICAgICAgKGNvbnN0IGNoYXIqKXBhc3N3b3JkLT5idWYsIChzaXplX3QpcGFzc3dvcmQtPmxlbiwKKyAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzYWx0LT5idWYsIChzaXplX3Qpc2FsdC0+bGVuLAorICAgICAgICBuLCByLCBwLCBtYXhtZW0sCisgICAgICAgICh1bnNpZ25lZCBjaGFyICopa2V5LCAoc2l6ZV90KWRrbGVuCisgICAgKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgUHlfQ0xFQVIoa2V5X29iaik7CisgICAgICAgIF9zZXRFeGNlcHRpb24oUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4ga2V5X29iajsKK30KKyNlbmRpZgorCiAvKiBTdGF0ZSBmb3Igb3VyIGNhbGxiYWNrIGZ1bmN0aW9uIHNvIHRoYXQgaXQgY2FuIGFjY3VtdWxhdGUgYSByZXN1bHQuICovCiB0eXBlZGVmIHN0cnVjdCBfaW50ZXJuYWxfbmFtZV9tYXBwZXJfc3RhdGUgewogICAgIFB5T2JqZWN0ICpzZXQ7CkBAIC04MzYsNiArOTY0LDcgQEAKICAgICB7InBia2RmMl9obWFjIiwgKFB5Q0Z1bmN0aW9uKXBia2RmMl9obWFjLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgcGJrZGYyX2htYWNfX2RvY19ffSwKICNlbmRpZgorICAgIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihtZDUpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTEpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTIyNCksCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwppbmRleCAxMzZhYmY1Li5iNDk5ZTFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKQEAgLTY2LDcgKzY2LDcgQEAKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwotICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCisgICAgbGltaXQgPSBlbmRwb3MgPj4gMTsgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwpAQCAtNzgsNiArNzgsNyBAQAogICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgY2hpbGRwb3MgKz0gKCh1bnNpZ25lZCljbXAgXiAxKTsgICAvKiBpbmNyZW1lbnQgd2hlbiBjbXA9PTAgKi8KKyAgICAgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7ICAgICAgICAgLyogYXJyIG1heSBoYXZlIGNoYW5nZWQgKi8KICAgICAgICAgICAgIGlmIChlbmRwb3MgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKQEAgLTg1LDcgKzg2LDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLiAqLwotICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwogICAgICAgICB0bXAxID0gYXJyW2NoaWxkcG9zXTsKICAgICAgICAgdG1wMiA9IGFycltwb3NdOwogICAgICAgICBhcnJbY2hpbGRwb3NdID0gdG1wMjsKQEAgLTM0Nyw3ICszNDcsNyBAQAogICAgICAgIG4gaXMgb2RkID0gMipqKzEsIHRoaXMgaXMgKDIqaisxLTEpLzIgPSBqIHNvIGotMSBpcyB0aGUgbGFyZ2VzdCwKICAgICAgICBhbmQgdGhhdCdzIGFnYWluIG4vLzItMS4KICAgICAqLwotICAgIGZvciAoaSA9IG4vMiAtIDEgOyBpID49IDAgOyBpLS0pCisgICAgZm9yIChpID0gKG4gPj4gMSkgLSAxIDsgaSA+PSAwIDsgaS0tKQogICAgICAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC00MjAsNyArNDIwLDcgQEAKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwotICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCisgICAgbGltaXQgPSBlbmRwb3MgPj4gMTsgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwpAQCAtNDMyLDYgKzQzMiw3IEBACiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBjaGlsZHBvcyArPSAoKHVuc2lnbmVkKWNtcCBeIDEpOyAgIC8qIGluY3JlbWVudCB3aGVuIGNtcD09MCAqLworICAgICAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsgICAgICAgICAvKiBhcnIgbWF5IGhhdmUgY2hhbmdlZCAqLwogICAgICAgICAgICAgaWYgKGVuZHBvcyAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwpAQCAtNDM5LDcgKzQ0MCw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKICAgICAgICAgdG1wMSA9IGFycltjaGlsZHBvc107CiAgICAgICAgIHRtcDIgPSBhcnJbcG9zXTsKICAgICAgICAgYXJyW2NoaWxkcG9zXSA9IHRtcDI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IDY1Yzk1NWEuLjYwZjhiNTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC0yMCw2ICsyMCw5IEBACiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAvKiBIQVZFX1NZU19TVEFUX0ggKi8KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDxjb25zb2xlYXBpLmg+CisjZW5kaWYKIAogLyogVmFyaW91cyBpbnRlcm5lZCBzdHJpbmdzICovCiAKQEAgLTUyLDcgKzU1LDYgQEAKIFB5T2JqZWN0ICpfUHlJT19lbXB0eV9ieXRlczsKIFB5T2JqZWN0ICpfUHlJT196ZXJvOwogCi0MCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGUgaW8gbW9kdWxlIHByb3ZpZGVzIHRoZSBQeXRob24gaW50ZXJmYWNlcyB0byBzdHJlYW0gaGFuZGxpbmcuIFRoZVxuIgogImJ1aWx0aW4gb3BlbiBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLlxuIgpAQCAtMjM4LDIwICsyNDAsMzMgQEAKICAgICBpbnQgdGV4dCA9IDAsIGJpbmFyeSA9IDAsIHVuaXZlcnNhbCA9IDA7CiAKICAgICBjaGFyIHJhd21vZGVbNl0sICptOwotICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNhdHR5OworICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNfbnVtYmVyOworICAgIGxvbmcgaXNhdHR5OwogCi0gICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyLCAqd3JhcHBlciwgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyLCAqd3JhcHBlciwgKnJlc3VsdCA9IE5VTEwsICpwYXRoX29yX2ZkID0gTlVMTDsKIAogICAgIF9QeV9JREVOVElGSUVSKF9ibGtzaXplKTsKICAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOwogICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOwogICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIAotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZpbGUpICYmCi0JIVB5Qnl0ZXNfQ2hlY2soZmlsZSkgJiYKLQkhUHlOdW1iZXJfQ2hlY2soZmlsZSkpIHsKKyAgICBpc19udW1iZXIgPSBQeU51bWJlcl9DaGVjayhmaWxlKTsKKworICAgIGlmIChpc19udW1iZXIpIHsKKyAgICAgICAgcGF0aF9vcl9mZCA9IGZpbGU7CisgICAgICAgIFB5X0lOQ1JFRihwYXRoX29yX2ZkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXRoX29yX2ZkID0gUHlPU19GU1BhdGgoZmlsZSk7CisgICAgICAgIGlmIChwYXRoX29yX2ZkID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFpc19udW1iZXIgJiYKKyAgICAgICAgIVB5VW5pY29kZV9DaGVjayhwYXRoX29yX2ZkKSAmJgorICAgICAgICAhUHlCeXRlc19DaGVjayhwYXRoX29yX2ZkKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBmaWxlOiAlUiIsIGZpbGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICAvKiBEZWNvZGUgbW9kZSAqLwpAQCAtMjkyLDcgKzMwNyw3IEBACiAgICAgICAgIGlmIChzdHJjaHIobW9kZStpKzEsIGMpKSB7CiAgICAgICAgICAgaW52YWxpZF9tb2RlOgogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIG1vZGU6ICclcyciLCBtb2RlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCiAgICAgfQpAQCAtMzA3LDU0ICszMjIsNjcgQEAKIAogICAgIC8qIFBhcmFtZXRlcnMgdmFsaWRhdGlvbiAqLwogICAgIGlmICh1bml2ZXJzYWwpIHsKLSAgICAgICAgaWYgKHdyaXRpbmcgfHwgYXBwZW5kaW5nKSB7CisgICAgICAgIGlmIChjcmVhdGluZyB8fCB3cml0aW5nIHx8IGFwcGVuZGluZyB8fCB1cGRhdGluZykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGUgVSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB4JywgJ3cnLCAnYScsIG9yICcrJyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgcmVhZGluZyA9IDE7CiAgICAgfQogCiAgICAgaWYgKHRleHQgJiYgYmluYXJ5KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGhhdmUgdGV4dCBhbmQgYmluYXJ5IG1vZGUgYXQgb25jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCBtb2RlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgZW5jb2RpbmcgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZW5jb2RpbmcgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGJpbmFyeSAmJiBlcnJvcnMgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZXJyb3JzIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgbmV3bGluZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhIG5ld2xpbmUgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgLyogQ3JlYXRlIHRoZSBSYXcgZmlsZSBzdHJlYW0gKi8KLSAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc2lPIiwgZmlsZSwgcmF3bW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICpSYXdJT19jbGFzcyA9IChQeU9iamVjdCAqKSZQeUZpbGVJT19UeXBlOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKCFQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnICYmIF9QeUlPX2dldF9jb25zb2xlX3R5cGUocGF0aF9vcl9mZCkgIT0gJ1wwJykgeworICAgICAgICAgICAgUmF3SU9fY2xhc3MgPSAoUHlPYmplY3QgKikmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUmF3SU9fY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIHBhdGhfb3JfZmQsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisgICAgfQorCiAgICAgaWYgKHJhdyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICByZXN1bHQgPSByYXc7CiAKKyAgICBQeV9ERUNSRUYocGF0aF9vcl9mZCk7CisgICAgcGF0aF9vcl9mZCA9IE5VTEw7CisKICAgICBtb2Rlb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kZSk7CiAgICAgaWYgKG1vZGVvYmogPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQzNywxMCArNDY1LDEwIEBACiAKICAgICAvKiB3cmFwcyBpbnRvIGEgVGV4dElPV3JhcHBlciAqLwogICAgIHdyYXBwZXIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5VGV4dElPV3JhcHBlcl9UeXBlLAotCQkJCSAgICAiT3Nzc2kiLAotCQkJCSAgICBidWZmZXIsCi0JCQkJICAgIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCi0JCQkJICAgIGxpbmVfYnVmZmVyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc3NzaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmcpOwogICAgIGlmICh3cmFwcGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcmVzdWx0ID0gd3JhcHBlcjsKQEAgLTQ2MCw2ICs0ODgsNyBAQAogICAgICAgICBQeV9YREVDUkVGKGNsb3NlX3Jlc3VsdCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIH0KKyAgICBQeV9YREVDUkVGKHBhdGhfb3JfZmQpOwogICAgIFB5X1hERUNSRUYobW9kZW9iaik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02OTEsNiArNzIwLDEyIEBACiAgICAgUHlTdHJpbmdJT19UeXBlLnRwX2Jhc2UgPSAmUHlUZXh0SU9CYXNlX1R5cGU7CiAgICAgQUREX1RZUEUoJlB5U3RyaW5nSU9fVHlwZSwgIlN0cmluZ0lPIik7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogV2luZG93c0NvbnNvbGVJTyAqLworICAgIFB5V2luZG93c0NvbnNvbGVJT19UeXBlLnRwX2Jhc2UgPSAmUHlSYXdJT0Jhc2VfVHlwZTsKKyAgICBBRERfVFlQRSgmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUsICJfV2luZG93c0NvbnNvbGVJTyIpOworI2VuZGlmCisKICAgICAvKiBCdWZmZXJlZFJlYWRlciAqLwogICAgIFB5QnVmZmVyZWRSZWFkZXJfVHlwZS50cF9iYXNlID0gJlB5QnVmZmVyZWRJT0Jhc2VfVHlwZTsKICAgICBBRERfVFlQRSgmUHlCdWZmZXJlZFJlYWRlcl9UeXBlLCAiQnVmZmVyZWRSZWFkZXIiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKaW5kZXggMGM2ZWFlMi4uZGFhZWJkMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKQEAgLTE5LDYgKzE5LDEzIEBACiBleHRlcm4gUHlUeXBlT2JqZWN0IFB5VGV4dElPV3JhcHBlcl9UeXBlOwogZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyNkZWZpbmUgUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKG9wKSAoUHlPYmplY3RfVHlwZUNoZWNrKChvcCksIChQeVR5cGVPYmplY3QqKV9QeVdpbmRvd3NDb25zb2xlSU9fVHlwZSkpCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIGV4dGVybiBpbnQgX1B5SU9fQ29udmVydFNzaXplX3QoUHlPYmplY3QgKiwgdm9pZCAqKTsKIApAQCAtNjAsNyArNjcsNyBAQAogICAgKiBPdGhlcndpc2UsIHRoZSBsaW5lIGVuZGluZyBpcyBzcGVjaWZpZWQgYnkgcmVhZG5sLCBhIHN0ciBvYmplY3QgKi8KIGV4dGVybiBQeV9zc2l6ZV90IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgaW50IGtpbmQsIGNoYXIgKnN0YXJ0LCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKTsKKyAgICBpbnQga2luZCwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOwogCiAvKiBSZXR1cm4gMSBpZiBhbiBFbnZpcm9ubWVudEVycm9yIHdpdGggZXJybm8gPT0gRUlOVFIgaXMgc2V0IChhbmQgdGhlbgogICAgY2xlYXJzIHRoZSBlcnJvciBpbmRpY2F0b3IpLCAwIG90aGVyd2lzZS4KQEAgLTg1LDEyICs5MiwxMiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogLyogV2luZG93cyB1c2VzIGxvbmcgbG9uZyBmb3Igb2Zmc2V0cyAqLwotdHlwZWRlZiBQWV9MT05HX0xPTkcgUHlfb2ZmX3Q7Cit0eXBlZGVmIGxvbmcgbG9uZyBQeV9vZmZfdDsKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nTG9uZwogIyBkZWZpbmUgUHlMb25nX0Zyb21PZmZfdCAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBQWV9MTE9OR19NQVgKLSMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBQWV9MTE9OR19NSU4KLSMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQWV9MT05HX0xPTkcgLyogdHlwZSBjb21wYXRpYmxlIHdpdGggb2ZmX3QgKi8KKyMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBMTE9OR19NQVgKKyMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBMTE9OR19NSU4KKyMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBsb25nIGxvbmcgICAgLyogdHlwZSBjb21wYXRpYmxlIHdpdGggb2ZmX3QgKi8KICMgZGVmaW5lIFBZX1BSSWRPRkYgICAgICAgICAibGxkIiAgICAgICAgLyogZm9ybWF0IHRvIHVzZSBmb3IgdGhhdCB0eXBlICovCiAKICNlbHNlCkBAIC0xMDQsMTIgKzExMSwxMiBAQAogIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX1NTSVpFX1RfTUlOCiAjIGRlZmluZSBQWV9PRkZfVF9DT01QQVQgICAgUHlfc3NpemVfdAogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJ6ZCIKLSNlbGlmIChIQVZFX0xPTkdfTE9ORyAmJiBTSVpFT0ZfT0ZGX1QgPT0gU0laRU9GX0xPTkdfTE9ORykKKyNlbGlmIChTSVpFT0ZfT0ZGX1QgPT0gU0laRU9GX0xPTkdfTE9ORykKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nTG9uZwogIyBkZWZpbmUgUHlMb25nX0Zyb21PZmZfdCAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBQWV9MTE9OR19NQVgKLSMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBQWV9MTE9OR19NSU4KLSMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQWV9MT05HX0xPTkcKKyMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBMTE9OR19NQVgKKyMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBMTE9OR19NSU4KKyMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBsb25nIGxvbmcKICMgZGVmaW5lIFBZX1BSSWRPRkYgICAgICAgICAibGxkIgogI2VsaWYgKFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9ORykKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nCkBAIC0xNDUsNiArMTUyLDEwIEBACiBleHRlcm4gX1B5SU9fU3RhdGUgKl9QeUlPX2dldF9tb2R1bGVfc3RhdGUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX2dldF9sb2NhbGVfbW9kdWxlKF9QeUlPX1N0YXRlICopOwogCisjaWZkZWYgTVNfV0lORE9XUworZXh0ZXJuIGNoYXIgX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShQeU9iamVjdCAqKTsKKyNlbmRpZgorCiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9jbG9zZTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2Nsb3NlZDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2RlY29kZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCA2ZDY3NzUxLi5jYmU3NDI1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC02NTksNyArNjU5LDcgQEAKIAogLyogU2V0cyB0aGUgY3VycmVudCBlcnJvciB0byBCbG9ja2luZ0lPRXJyb3IgKi8KIHN0YXRpYyB2b2lkCi1fc2V0X0Jsb2NraW5nSU9FcnJvcihjaGFyICptc2csIFB5X3NzaXplX3Qgd3JpdHRlbikKK19zZXRfQmxvY2tpbmdJT0Vycm9yKGNvbnN0IGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQogewogICAgIFB5T2JqZWN0ICplcnI7CiAgICAgUHlFcnJfQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwppbmRleCA5ZTVkNzhiLi5hMWJhMTIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMKKysrIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCkBAIC04Nyw3ICs4Nyw3IEBACiBzdGF0aWMgaW50CiB1bnNoYXJlX2J1ZmZlcihieXRlc2lvICpzZWxmLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqbmV3X2J1ZiwgKm9sZF9idWY7CisgICAgUHlPYmplY3QgKm5ld19idWY7CiAgICAgYXNzZXJ0KFNIQVJFRF9CVUYoc2VsZikpOwogICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOwogICAgIGFzc2VydChzaXplID49IChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUpOwpAQCAtOTYsOSArOTYsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19idWYpLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpLAogICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSk7Ci0gICAgb2xkX2J1ZiA9IHNlbGYtPmJ1ZjsKLSAgICBzZWxmLT5idWYgPSBuZXdfYnVmOwotICAgIFB5X0RFQ1JFRihvbGRfYnVmKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+YnVmLCBuZXdfYnVmKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAppbmRleCA2Yzg4ZTMyLi5mMmU5MWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaApAQCAtMTI3LDcgKzEyNyw3IEBACiAib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuIik7CiAKICNkZWZpbmUgX0lPX09QRU5fTUVUSE9EREVGICAgIFwKLSAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilfaW9fb3BlbiwgTUVUSF9GQVNUQ0FMTCwgX2lvX29wZW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9pb19vcGVuX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGNvbnN0IGNoYXIgKm1vZGUsCkBAIC0xMzUsMTAgKzEzNSwxMSBAQAogICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdsaW5lLCBpbnQgY2xvc2VmZCwgUHlPYmplY3QgKm9wZW5lcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1faW9fb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19pb19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2l6enppTzpvcGVuIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBjb25zdCBjaGFyICptb2RlID0gInIiOwogICAgIGludCBidWZmZXJpbmcgPSAtMTsKQEAgLTE0OCwxMiArMTQ5LDEzIEBACiAgICAgaW50IGNsb3NlZmQgPSAxOwogICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19vcGVuX2ltcGwobW9kdWxlLCBmaWxlLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzJjMDAzY2I3ZGFlYWZlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNWI4ZmM4YjgzMTAyYmJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaAppbmRleCA0MzdlMjc1Li41ODE0NGE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCkBAIC0xOSwxNCArMTksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ4LDE0ICs1MCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtOTksOCArMTAzLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwZWVrIiwKLSAgICAgICAgJnNpemUpKQorICAgICAgICAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTEyNSw4ICsxMzAsOSBAQAogICAgIFB5X3NzaXplX3QgbiA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTE1MCw4ICsxNTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjpyZWFkMSIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWQxX2ltcGwoc2VsZiwgbik7CiAKIGV4aXQ6CkBAIC0xNzUsMTQgKzE4MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjA0LDE0ICsyMTMsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIzNCw4ICsyNDUsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjYxLDggKzI3Myw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpCisgICAgICAgICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9zZWVrX2ltcGwoc2VsZiwgdGFyZ2V0b2JqLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjg4LDggKzMwMSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3MpKQorICAgICAgICAmcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtMzEwLDEzICszMjQsMTUgQEAKIF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzQxLDEzICszNTcsMTUgQEAKIF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzcxLDE0ICszODksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDEwLDExICs0MzAsMTMgQEAKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmUHlCdWZmZXJlZFJXUGFpcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJ1ZmZlcmVkUldQYWlyIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLAotICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKQorICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX2ltcGwoKHJ3cGFpciAqKXNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC00MzksMTYgKzQ2MSwxOCBAQAogX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYmJiNWUyMzliNGZmZTZmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOTU2ZjM5NGVjZGU0Y2Y5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaAppbmRleCA1ZjJhYmIwLi5jNjRjZTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCkBAIC0xNzEsOCArMTcxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTIxNSw4ICsyMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNDcsOCArMjQ5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNzYsMTQgKzI3OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMxMSw4ICszMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0zNDUsOCArMzUxLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAotICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgJnBvcywgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtNDA4LDE1ICs0MTUsMTcgQEAKIF9pb19CeXRlc0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOkJ5dGVzSU8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmluaXR2YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmaW5pdHZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX19faW5pdF9fX2ltcGwoKGJ5dGVzaW8gKilzZWxmLCBpbml0dmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjBjZTJjNjI3MjcxODQzMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM4MmU4ZWI1NzhlZWE2NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCmluZGV4IDEwNDIwMDguLjkwOGZlMGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCkBAIC00OSwxNSArNDksMTcgQEAKIF9pb19GaWxlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2lPOkZpbGVJTyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm5hbWVvYmo7CiAgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgY2xvc2VmZCA9IDE7CiAgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX19faW5pdF9fX2ltcGwoKGZpbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CkBAIC0xNTQsMTQgKzE1NiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjEwLDggKzIxNCw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjQwLDE0ICsyNDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYiAqLwotICAgIGlmIChiLm9iaikKKyAgICBpZiAoYi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgwLDggKzI4Nyw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgICZwb3MsICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMzMzLDggKzM0MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3NvYmopKQorICAgICAgICAmcG9zb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3NvYmopOwogCiBleGl0OgpAQCAtMzY0LDQgKzM3Myw0IEBACiAjaWZuZGVmIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRjYmMzOWI0NjY1OTg0OTIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxOTI0YmMwZWUxMWQ1OGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAppbmRleCA5NzYyZjExLi5lZGJmNzNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaApAQCAtMTg2LDggKzE4Niw5IEBACiAgICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZsaW1pdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKHNlbGYsIGxpbWl0KTsKIAogZXhpdDoKQEAgLTIxNyw4ICsyMTgsOSBAQAogICAgIFB5X3NzaXplX3QgaGludCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmVzIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKHNlbGYsIGhpbnQpOwogCiBleGl0OgpAQCAtMjUxLDggKzI1Myw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLAotICAgICAgICAmbikpCisgICAgICAgICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fUmF3SU9CYXNlX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI3Niw0ICsyNzksNCBAQAogewogICAgIHJldHVybiBfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg3NDk1MmY1Y2MyNDhhNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY1M2ZlZDkyOGQ4ZTAyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaAppbmRleCBhOGUzMmEzLi5kMmMwNWQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmgKQEAgLTYxLDggKzYxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fcmVhZF9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC05MSw4ICs5Miw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0xMjMsOCArMTI1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTE1Nyw4ICsxNjAsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsCi0gICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICAmcG9zLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjE3LDEzICsyMjEsMTUgQEAKIF9pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T086U3RyaW5nSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19fX2luaXRfX19pbXBsKChzdHJpbmdpbyAqKXNlbGYsIHZhbHVlLCBuZXdsaW5lX29iaik7CiAKIGV4aXQ6CkBAIC0yODMsNCArMjg5LDQgQEAKIHsKICAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjA2MWNmM2EyMGNkMTRlZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRkNWMyYTIxM2U3NTQwNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCmluZGV4IGRjN2U4YzcuLmYzOWMzNTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCkBAIC0yNCwxNCArMjQsMTYgQEAKIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIGludCB0cmFuc2xhdGU7CiAgICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX2ltcGwoKG5sZGVjb2Rlcl9vYmplY3QgKilzZWxmLCBkZWNvZGVyLCB0cmFuc2xhdGUsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00NCwyMyArNDYsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LCBpbnQgZmluYWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xpOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CkBAIC0xNTMsNyArMTU3LDggQEAKIF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJidWZmZXIiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAibGluZV9idWZmZXJpbmciLCAid3JpdGVfdGhyb3VnaCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImJ1ZmZlciIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwpAQCAtMTYxLDkgKzE2NiwxMCBAQAogICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDA7CiAgICAgaW50IHdyaXRlX3Rocm91Z2ggPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCgodGV4dGlvICopc2VsZiwgYnVmZmVyLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZywgd3JpdGVfdGhyb3VnaCk7CiAKIGV4aXQ6CkBAIC0yMDQsOCArMjEwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGV4dDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6d3JpdGUiLCAmdGV4dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9pbXBsKHNlbGYsIHRleHQpOwogCiBleGl0OgpAQCAtMjMwLDggKzIzNyw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI1Niw4ICsyNjQsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkbGluZSIsCi0gICAgICAgICZzaXplKSkKKyAgICAgICAgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTI4Myw4ICsyOTIsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCi0gICAgICAgICZjb29raWVPYmosICZ3aGVuY2UpKQorICAgICAgICAmY29va2llT2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbChzZWxmLCBjb29raWVPYmosIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0zMjcsOCArMzM3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvcykpCisgICAgICAgICZwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtNDUzLDQgKzQ2NCw0IEBACiB7CiAgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkwNjA4Zjg1YWFiOGJhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzhhZDE0ZWJhMTY2NzI1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NGZjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaApAQCAtMCwwICsxLDMzMSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgaGFuZGxlLlxuIgorIlxuIgorIkEgY2xvc2VkIGhhbmRsZSBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gIGNsb3NlKCkgbWF5IGJlXG4iCisiY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2Uod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19fZG9jX18sCisiX1dpbmRvd3NDb25zb2xlSU8oZmlsZSwgbW9kZT1cJ3JcJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBjb25zb2xlIGJ1ZmZlciBieSBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiVGhlIG1vZGUgY2FuIGJlIFwncmJcJyAoZGVmYXVsdCksIG9yIFwnd2JcJyBmb3IgcmVhZGluZyBvciB3cml0aW5nIGJ5dGVzLiBBbGxcbiIKKyJvdGhlciBtb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBpZ25vcmVkLiBNb2RlIFwnYlwnIHdpbGwgYmUgYXNzdW1lZCBpZiBpdCBpc1xuIgorIm9taXR0ZWQuIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgaXMgYWx3YXlzIGlnbm9yZWQuIik7CisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlLCBpbnQgY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvcGVuZXIpOworCitzdGF0aWMgaW50CitfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNpTzpfV2luZG93c0NvbnNvbGVJTyIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgY2xvc2VmZCA9IDE7CisgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwoKHdpbmNvbnNvbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLlxuIgorIlxuIgorImZpbGVubyBpcyBvbmx5IHNldCB3aGVuIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gb3BlblxuIgorIm9uZSBvZiB0aGUgc3RhbmRhcmQgc3RyZWFtcy4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubyh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGNvbnNvbGUgaXMgYW4gaW5wdXQgYnVmZmVyLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIG91dHB1dCBidWZmZXIuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG8sIE1FVEhfTywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50byh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19fLAorInJlYWRhbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGNvbnNvbGUsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsIHdoZW4gc2l6ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsXG4iCisic28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC5cbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLlxuIgorIlRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSwgTUVUSF9PLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWx3YXlzIFRydWUuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHksIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHkod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWViYTkxNmY4NTM3ZmZmNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDkxOWNmNTAuLjU0Y2ZiN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC05Miw4ICs5Miw3IEBACiAgICAgaWYgKHNlbGYtPmZkID49IDAgJiYgc2VsZi0+Y2xvc2VmZCkgewogICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1Jlc291cmNlV2FybmluZywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIGZpbGUgJVIiLCBzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoc291cmNlLCAxLCAidW5jbG9zZWQgZmlsZSAlUiIsIHNvdXJjZSkpIHsKICAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHNlbGYpOwpAQCAtMTE4LDE4ICsxMTcsMTMgQEAKICAgICAgICAgaW50IGZkID0gc2VsZi0+ZmQ7CiAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgICAgIC8qIGZkIGlzIGFjY2Vzc2libGUgYW5kIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBjbG9zZWQgaXQgKi8KLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgICAgIGVyciA9IGNsb3NlKGZkKTsKLSAgICAgICAgICAgIGlmIChlcnIgPCAwKQotICAgICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICB9IGVsc2UgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgZXJyID0gY2xvc2UoZmQpOworICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogICAgIGlmIChlcnIgPCAwKSB7CiAgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTU0Niw3ICs1NDAsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZXJyX21vZGUoY2hhciAqYWN0aW9uKQorZXJyX21vZGUoY29uc3QgY2hhciAqYWN0aW9uKQogewogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX1NUQVRFKCk7CiAgICAgaWYgKHN0YXRlICE9IE5VTEwpCkBAIC03MDEsOCArNjk1LDYgQEAKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTkxNSwxOCArOTA3LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CisgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CiAjZWxzZQotICAgICAgICByZXMgPSBsc2VlayhmZCwgcG9zLCB3aGVuY2UpOworICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CiAjZW5kaWYKLSAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzID0gLTE7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCkBAIC0xMDQ5LDcgKzEwMzgsNyBAQAogfQogI2VuZGlmIC8qIEhBVkVfRlRSVU5DQVRFICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgewpAQCAtMTExNywxMCArMTEwNiw3IEBACiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKLSAgICAgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IDA7CisgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCA1NzU0MWE4Li40NzJlZjNiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtODI4LDcgKzgyOCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLwotICAgIChkZXN0cnVjdG9yKWlvYmFzZV9maW5hbGl6ZSwgLyogdHBfZmluYWxpemUgKi8KKyAgICBpb2Jhc2VfZmluYWxpemUsICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggMDZiNDE0NC4uZWNmNmRjMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC00MzgsNyArNDM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfcmVhZGxpbmUsIE5VTEwpOwogICAgICAgICBpZiAobGluZSAmJiAhUHlVbmljb2RlX0NoZWNrKGxpbmUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBzdHIgb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBzdHIgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIFB5X1RZUEUobGluZSktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDA2M2NhYTYuLjUwOGU0NmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC01MzEsNyArNTMxLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMGQyYzljMTM2ZjRlMGQwIGlucHV0PWY4ZmYxMDE4MjVlMzJlN2ZdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmbGFnOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgIT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLApAQCAtNTY3LDcgKzU2Nyw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzEwYzYyMjUwOGI1NzZjYiBpbnB1dD1jNTNmYjUwNWE3NmRiYmUyXSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmxhZzsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmxhZzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9LIiwgJmJ1ZmZlciwgJmZsYWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Miw3ICs3NzIsNyBAQAogICAgIGVuY29kZWZ1bmNfdCBlbmNvZGVmdW5jOwogfSBlbmNvZGVmdW5jZW50cnk7CiAKLXN0YXRpYyBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKK3N0YXRpYyBjb25zdCBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKICAgICB7ImFzY2lpIiwgICAgICAgKGVuY29kZWZ1bmNfdCkgYXNjaWlfZW5jb2RlfSwKICAgICB7Imlzbzg4NTktMSIsICAgKGVuY29kZWZ1bmNfdCkgbGF0aW4xX2VuY29kZX0sCiAgICAgeyJ1dGYtOCIsICAgICAgIChlbmNvZGVmdW5jX3QpIHV0ZjhfZW5jb2RlfSwKQEAgLTEwMjEsNyArMTAyMSw3IEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socmVzKSkgewotICAgICAgICAgICAgZW5jb2RlZnVuY2VudHJ5ICplID0gZW5jb2RlZnVuY3M7CisgICAgICAgICAgICBjb25zdCBlbmNvZGVmdW5jZW50cnkgKmUgPSBlbmNvZGVmdW5jczsKICAgICAgICAgICAgIHdoaWxlIChlLT5uYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHJlcywgZS0+bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZW5jb2RlZnVuYyA9IGUtPmVuY29kZWZ1bmM7CkBAIC0xNjQ0LDggKzE2NDQsOCBAQAogLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VDUzQgc3RvcmFnZSwKICAgIHRoYXQgaXMgdG8gdGhlIE5VTCBjaGFyYWN0ZXIuIE90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCBwcm9kdWNlCiAgICBpbmNvcnJlY3QgcmVzdWx0cy4gKi8KLXN0YXRpYyBjaGFyICoKLWZpbmRfY29udHJvbF9jaGFyKGludCBraW5kLCBjaGFyICpzLCBjaGFyICplbmQsIFB5X1VDUzQgY2gpCitzdGF0aWMgY29uc3QgY2hhciAqCitmaW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQogewogICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIGFzc2VydChjaCA8IDI1Nik7CkBAIC0xNjY1LDEzICsxNjY1LDEzIEBACiBQeV9zc2l6ZV90CiBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKyAgICBpbnQga2luZCwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAoKGNoYXIqKWVuZCAtIChjaGFyKilzdGFydCkva2luZDsKIAogICAgIGlmICh0cmFuc2xhdGVkKSB7CiAgICAgICAgIC8qIE5ld2xpbmVzIGFyZSBhbHJlYWR5IHRyYW5zbGF0ZWQsIG9ubHkgc2VhcmNoIGZvciBcbiAqLwotICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCAnXG4nKTsKKyAgICAgICAgY29uc3QgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgJ1xuJyk7CiAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICBlbHNlIHsKQEAgLTE2ODMsNyArMTY4Myw3IEBACiAgICAgICAgIC8qIFVuaXZlcnNhbCBuZXdsaW5lIHNlYXJjaC4gRmluZCBhbnkgb2YgXHIsIFxyXG4sIFxuCiAgICAgICAgICAqIFRoZSBkZWNvZGVyIGVuc3VyZXMgdGhhdCBcclxuIGFyZSBub3Qgc3BsaXQgaW4gdHdvIHBpZWNlcwogICAgICAgICAgKi8KLSAgICAgICAgY2hhciAqcyA9IHN0YXJ0OworICAgICAgICBjb25zdCBjaGFyICpzID0gc3RhcnQ7CiAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIG5vbi1jb250cm9sIGNoYXJzLiBUaGUgbG9vcCBhbHdheXMgZW5kcwpAQCAtMTcxMywyMSArMTcxMywyMSBAQAogICAgICAgICAvKiBBc3N1bWUgdGhhdCByZWFkbmwgaXMgYW4gQVNDSUkgY2hhcmFjdGVyLiAqLwogICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVhZG5sKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiAgICAgICAgIGlmIChyZWFkbmxfbGVuID09IDEpIHsKLSAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgMTsKICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIgKnMgPSBzdGFydDsKLSAgICAgICAgICAgIGNoYXIgKmUgPSBlbmQgLSAocmVhZG5sX2xlbiAtIDEpKmtpbmQ7Ci0gICAgICAgICAgICBjaGFyICpwb3M7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgICAgICBjb25zdCBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOworICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zOwogICAgICAgICAgICAgaWYgKGUgPCBzKQogICAgICAgICAgICAgICAgIGUgPSBzOwogICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gTlVMTCB8fCBwb3MgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IHJlYWRubF9sZW47IGkrKykgewpAQCAtMjY4OSw3ICsyNjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfcmVhZGxpbmUsIE5VTEwpOwogICAgICAgICBpZiAobGluZSAmJiAhUHlVbmljb2RlX0NoZWNrKGxpbmUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBzdHIgb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBzdHIgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIFB5X1RZUEUobGluZSktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYyBiL01vZHVsZXMvX2lvL3dpbmNvbnNvbGVpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NjZhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYwpAQCAtMCwwICsxLDExNTQgQEAKKy8qCisgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgV2luZG93cyBjb25zb2xlIEkvTworCisgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IF9XaW5kb3dzQ29uc29sZUlPCisKKyAgICBXcml0dGVuIGJ5IFN0ZXZlIERvd2VyCisqLworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyNpbmNsdWRlICJQeXRob24uaCIKKworI2lmZGVmIE1TX1dJTkRPV1MKKworI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRkZWYuaD4gLyogRm9yIG9mZnNldG9mICovCisKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCisKKy8qIEJVRlNJWiBkZXRlcm1pbmVzIGhvdyBtYW55IGNoYXJhY3RlcnMgY2FuIGJlIHR5cGVkIGF0IHRoZSBjb25zb2xlCisgICBiZWZvcmUgaXQgc3RhcnRzIGJsb2NraW5nLiAqLworI2lmIEJVRlNJWiA8ICgxNioxMDI0KQorI2RlZmluZSBTTUFMTENIVU5LICgyKjEwMjQpCisjZWxpZiAoQlVGU0laID49ICgyIDw8IDI1KSkKKyNlcnJvciAidW5yZWFzb25hYmxlIEJVRlNJWiA+IDY0TUIgZGVmaW5lZCIKKyNlbHNlCisjZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZW5kaWYKKworLyogQlVGTUFYIGRldGVybWluZXMgaG93IG1hbnkgYnl0ZXMgY2FuIGJlIHJlYWQgaW4gb25lIGdvLiAqLworI2RlZmluZSBCVUZNQVggKDMyKjEwMjQqMTAyNCkKKworLyogU01BTExCVUYgZGV0ZXJtaW5lcyBob3cgbWFueSB1dGYtOCBjaGFyYWN0ZXJzIHdpbGwgYmUKKyAgIGJ1ZmZlcmVkIHdpdGhpbiB0aGUgc3RyZWFtLCBpbiBvcmRlciB0byBzdXBwb3J0IHJlYWRzCisgICBvZiBsZXNzIHRoYW4gb25lIGNoYXJhY3RlciAqLworI2RlZmluZSBTTUFMTEJVRiA0CisKK2NoYXIgX2dldF9jb25zb2xlX3R5cGUoSEFORExFIGhhbmRsZSkgeworICAgIERXT1JEIG1vZGUsIHBlZWtfY291bnQ7CisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gJ1wwJzsKKworICAgIGlmICghR2V0Q29uc29sZU1vZGUoaGFuZGxlLCAmbW9kZSkpCisgICAgICAgIHJldHVybiAnXDAnOworCisgICAgLyogUGVlayBhdCB0aGUgaGFuZGxlIHRvIHNlZSB3aGV0aGVyIGl0IGlzIGFuIGlucHV0IG9yIG91dHB1dCBoYW5kbGUgKi8KKyAgICBpZiAoR2V0TnVtYmVyT2ZDb25zb2xlSW5wdXRFdmVudHMoaGFuZGxlLCAmcGVla19jb3VudCkpCisgICAgICAgIHJldHVybiAncic7CisgICAgcmV0dXJuICd3JzsKK30KKworY2hhciBfUHlJT19nZXRfY29uc29sZV90eXBlKFB5T2JqZWN0ICpwYXRoX29yX2ZkKSB7CisgICAgaW50IGZkOworCisgICAgZmQgPSBQeUxvbmdfQXNMb25nKHBhdGhfb3JfZmQpOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKGZkID49IDApIHsKKyAgICAgICAgSEFORExFIGhhbmRsZTsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKCFoYW5kbGUpCisgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICAgICAgcmV0dXJuIF9nZXRfY29uc29sZV90eXBlKGhhbmRsZSk7CisgICAgfQorCisgICAgUHlPYmplY3QgKmRlY29kZWQsICpkZWNvZGVkX3VwcGVyOworCisgICAgaW50IGQgPSBQeVVuaWNvZGVfRlNEZWNvZGVyKHBhdGhfb3JfZmQsICZkZWNvZGVkKTsKKyAgICBpZiAoIWQpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuICdcMCc7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGRlY29kZWQpKSB7CisgICAgICAgIFB5X0NMRUFSKGRlY29kZWQpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisgICAgZGVjb2RlZF91cHBlciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZGVjb2RlZCwgInVwcGVyIiwgIiIpOworICAgIFB5X0NMRUFSKGRlY29kZWQpOworICAgIGlmICghZGVjb2RlZF91cHBlcikgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisKKyAgICBjaGFyIG0gPSAnXDAnOworICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OSU4kIikgPT0gMCkgeworICAgICAgICBtID0gJ3InOworICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoZGVjb2RlZF91cHBlciwgIkNPTk9VVCQiKSA9PSAwKSB7CisgICAgICAgIG0gPSAndyc7CisgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OIikgPT0gMCkgeworICAgICAgICBtID0gJ3gnOworICAgIH0KKworICAgIFB5X0NMRUFSKGRlY29kZWRfdXBwZXIpOworICAgIHJldHVybiBtOworfQorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uX1dpbmRvd3NDb25zb2xlSU8gIndpbmNvbnNvbGVpbyAqIiAiJlB5V2luZG93c0NvbnNvbGVJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZTg5N2ZkYzFmYmE0ZTEzMV0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IGZkOworICAgIHVuc2lnbmVkIGludCBjcmVhdGVkIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgcmVhZGFibGUgOiAxOworICAgIHVuc2lnbmVkIGludCB3cml0YWJsZSA6IDE7CisgICAgdW5zaWduZWQgaW50IGNsb3NlaGFuZGxlIDogMTsKKyAgICBjaGFyIGZpbmFsaXppbmc7CisgICAgdW5zaWduZWQgaW50IGJsa3NpemU7CisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIGNoYXIgYnVmW1NNQUxMQlVGXTsKKyAgICB3Y2hhcl90IHdidWY7Cit9IHdpbmNvbnNvbGVpbzsKKworUHlUeXBlT2JqZWN0IFB5V2luZG93c0NvbnNvbGVJT19UeXBlOworCitfUHlfSURFTlRJRklFUihuYW1lKTsKKworaW50CitfUHlXaW5kb3dzQ29uc29sZUlPX2Nsb3NlZChQeU9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gKCh3aW5jb25zb2xlaW8gKilzZWxmKS0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCisKKy8qIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSB3aXRoIGV4Y2VwdGlvbiBzZXQgb24gZmFpbHVyZS4gKi8KK3N0YXRpYyBpbnQKK2ludGVybmFsX2Nsb3NlKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIGlmIChzZWxmLT5jbG9zZWhhbmRsZSkgeworICAgICAgICAgICAgaWYgKHNlbGYtPmZkID49IDApIHsKKyAgICAgICAgICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgICAgICAgICAgY2xvc2Uoc2VsZi0+ZmQpOworICAgICAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgICAgICB9CisgICAgICAgICAgICBDbG9zZUhhbmRsZShzZWxmLT5oYW5kbGUpOworICAgICAgICB9CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmNsb3NlCisKK0Nsb3NlIHRoZSBoYW5kbGUuCisKK0EgY2xvc2VkIGhhbmRsZSBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gIGNsb3NlKCkgbWF5IGJlCitjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yN2VmOTViNjZjMjkwNTdiIGlucHV0PTE4NTYxN2UzNDlhZTRjN2JdKi8KK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICBpbnQgcmM7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KikmUHlSYXdJT0Jhc2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Nsb3NlLCAiTyIsIHNlbGYpOworICAgIGlmICghc2VsZi0+Y2xvc2VoYW5kbGUpIHsKKyAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICByYyA9IGludGVybmFsX2Nsb3NlKHNlbGYpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworICAgIGlmIChyYyA8IDApCisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmNvbnNvbGVpb19uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgd2luY29uc29sZWlvICpzZWxmOworCisgICAgYXNzZXJ0KHR5cGUgIT0gTlVMTCAmJiB0eXBlLT50cF9hbGxvYyAhPSBOVUxMKTsKKworICAgIHNlbGYgPSAod2luY29uc29sZWlvICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgICAgIHNlbGYtPmZkID0gLTE7CisgICAgICAgIHNlbGYtPmNyZWF0ZWQgPSAwOworICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDA7CisgICAgICAgIHNlbGYtPndyaXRhYmxlID0gMDsKKyAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPSAwOworICAgICAgICBzZWxmLT5ibGtzaXplID0gMDsKKyAgICAgICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLl9faW5pdF9fCisgICAgZmlsZSBhcyBuYW1lb2JqOiBvYmplY3QKKyAgICBtb2RlOiBzdHIgPSAiciIKKyAgICBjbG9zZWZkOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCisgICAgb3BlbmVyOiBvYmplY3QgPSBOb25lCisKK09wZW4gYSBjb25zb2xlIGJ1ZmZlciBieSBmaWxlIGRlc2NyaXB0b3IuCisKK1RoZSBtb2RlIGNhbiBiZSAncmInIChkZWZhdWx0KSwgb3IgJ3diJyBmb3IgcmVhZGluZyBvciB3cml0aW5nIGJ5dGVzLiBBbGwKK290aGVyIG1vZGUgY2hhcmFjdGVycyB3aWxsIGJlIGlnbm9yZWQuIE1vZGUgJ2InIHdpbGwgYmUgYXNzdW1lZCBpZiBpdCBpcworb21pdHRlZC4gVGhlICpvcGVuZXIqIHBhcmFtZXRlciBpcyBhbHdheXMgaWdub3JlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqbmFtZW9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1vZGUsIGludCBjbG9zZWZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9wZW5lcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZmQ5Y2JjZGQ4ZDk1NDI5IGlucHV0PTYxYmUzOTYzM2E4NmY1ZDddKi8KK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIHdjaGFyX3QgKm5hbWUgPSBOVUxMOworICAgIGNoYXIgY29uc29sZV90eXBlID0gJ1wwJzsKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgcndhID0gMDsKKyAgICBpbnQgZmQgPSAtMTsKKyAgICBpbnQgZmRfaXNfb3duID0gMDsKKworICAgIGFzc2VydChQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2soc2VsZikpOworICAgIGlmIChzZWxmLT5oYW5kbGUgPj0gMCkgeworICAgICAgICBpZiAoc2VsZi0+Y2xvc2VoYW5kbGUpIHsKKyAgICAgICAgICAgIC8qIEhhdmUgdG8gY2xvc2UgdGhlIGV4aXN0aW5nIGZpbGUgZmlyc3QuICovCisgICAgICAgICAgICBpZiAoaW50ZXJuYWxfY2xvc2Uoc2VsZikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICB9CisKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhuYW1lb2JqKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQsIGdvdCBmbG9hdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZmQgPSBfUHlMb25nX0FzSW50KG5hbWVvYmopOworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgZmlsZSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgc2VsZi0+ZmQgPSBmZDsKKworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgUHlPYmplY3QgKmRlY29kZWRuYW1lID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKGRlY29kZWRuYW1lKTsKKworICAgICAgICBpbnQgZCA9IFB5VW5pY29kZV9GU0RlY29kZXIobmFtZW9iaiwgKHZvaWQqKSZkZWNvZGVkbmFtZSk7CisgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgbmFtZSA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKGRlY29kZWRuYW1lLCAmbGVuZ3RoKTsKKyAgICAgICAgY29uc29sZV90eXBlID0gX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShkZWNvZGVkbmFtZSk7CisgICAgICAgIFB5X0NMRUFSKGRlY29kZWRuYW1lKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBpZiAod2NzbGVuKG5hbWUpICE9IGxlbmd0aCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHMgPSBtb2RlOworICAgIHdoaWxlICgqcykgeworICAgICAgICBzd2l0Y2ggKCpzKyspIHsKKyAgICAgICAgY2FzZSAnKyc6CisgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncic6CisgICAgICAgICAgICBpZiAocndhKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX21vZGU7CisgICAgICAgICAgICByd2EgPSAxOworICAgICAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAxOworICAgICAgICAgICAgaWYgKGNvbnNvbGVfdHlwZSA9PSAneCcpCisgICAgICAgICAgICAgICAgY29uc29sZV90eXBlID0gJ3InOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3cnOgorICAgICAgICAgICAgaWYgKHJ3YSkKKyAgICAgICAgICAgICAgICBnb3RvIGJhZF9tb2RlOworICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPndyaXRhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjb25zb2xlX3R5cGUgPT0gJ3gnKQorICAgICAgICAgICAgICAgIGNvbnNvbGVfdHlwZSA9ICd3JzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbW9kZTogJS4yMDBzIiwgbW9kZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFyd2EpCisgICAgICAgIGdvdG8gYmFkX21vZGU7CisKKyAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIHNlbGYtPmhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRFdPUkQgYWNjZXNzID0gR0VORVJJQ19SRUFEOworCisgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID0gMTsKKyAgICAgICAgaWYgKCFjbG9zZWZkKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSBjbG9zZWZkPUZhbHNlIHdpdGggZmlsZSBuYW1lIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQorICAgICAgICAgICAgYWNjZXNzID0gR0VORVJJQ19XUklURTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIC8qIEF0dGVtcHQgdG8gb3BlbiBmb3IgcmVhZC93cml0ZSBpbml0aWFsbHksIHRoZW4gZmFsbCBiYWNrCisgICAgICAgICAgIG9uIHRoZSBzcGVjaWZpYyBhY2Nlc3MuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIG1vZGVybiBuYW1lcworICAgICAgICAgICBDT05JTiQgYW5kIENPTk9VVCQsIHdoaWNoIGFsbG93IHJlYWRpbmcvd3JpdGluZyBzdGF0ZSBhcworICAgICAgICAgICB3ZWxsIGFzIHJlYWRpbmcvd3JpdGluZyBjb250ZW50LiAqLworICAgICAgICBzZWxmLT5oYW5kbGUgPSBDcmVhdGVGaWxlVyhuYW1lLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLAorICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFEIHwgRklMRV9TSEFSRV9XUklURSwgTlVMTCwgT1BFTl9FWElTVElORywgMCwgTlVMTCk7CisgICAgICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBDcmVhdGVGaWxlVyhuYW1lLCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFEIHwgRklMRV9TSEFSRV9XUklURSwgTlVMTCwgT1BFTl9FWElTVElORywgMCwgTlVMTCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgR2V0TGFzdEVycm9yKCksIG5hbWVvYmopOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb25zb2xlX3R5cGUgPT0gJ1wwJykKKyAgICAgICAgY29uc29sZV90eXBlID0gX2dldF9jb25zb2xlX3R5cGUoc2VsZi0+aGFuZGxlKTsKKworICAgIGlmIChzZWxmLT53cml0YWJsZSAmJiBjb25zb2xlX3R5cGUgIT0gJ3cnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIkNhbm5vdCBvcGVuIGNvbnNvbGUgaW5wdXQgYnVmZmVyIGZvciB3cml0aW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChzZWxmLT5yZWFkYWJsZSAmJiBjb25zb2xlX3R5cGUgIT0gJ3InKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIkNhbm5vdCBvcGVuIGNvbnNvbGUgb3V0cHV0IGJ1ZmZlciBmb3IgcmVhZGluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHNlbGYtPmJsa3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOworICAgIG1lbXNldChzZWxmLT5idWYsIDAsIDQpOworCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfbmFtZSwgbmFtZW9iaikgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZ290byBkb25lOworCitiYWRfbW9kZToKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIk11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkIG9yIHdyaXRlIG1vZGUiKTsKK2Vycm9yOgorICAgIHJldCA9IC0xOworICAgIGludGVybmFsX2Nsb3NlKHNlbGYpOworCitkb25lOgorICAgIGlmIChuYW1lKQorICAgICAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK3dpbmNvbnNvbGVpb190cmF2ZXJzZSh3aW5jb25zb2xlaW8gKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit3aW5jb25zb2xlaW9fY2xlYXIod2luY29uc29sZWlvICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAord2luY29uc29sZWlvX2RlYWxsb2Mod2luY29uc29sZWlvICpzZWxmKQoreworICAgIHNlbGYtPmZpbmFsaXppbmcgPSAxOworICAgIGlmIChfUHlJT0Jhc2VfZmluYWxpemUoKFB5T2JqZWN0ICopIHNlbGYpIDwgMCkKKyAgICAgICAgcmV0dXJuOworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQorICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZXJyX2Nsb3NlZCh2b2lkKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZXJyX21vZGUoY29uc3QgY2hhciAqYWN0aW9uKQoreworICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX1NUQVRFKCk7CisgICAgaWYgKHN0YXRlICE9IE5VTEwpCisgICAgICAgIFB5RXJyX0Zvcm1hdChzdGF0ZS0+dW5zdXBwb3J0ZWRfb3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIkNvbnNvbGUgYnVmZmVyIGRvZXMgbm90IHN1cHBvcnQgJXMiLCBhY3Rpb24pOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uZmlsZW5vCisKK1JldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLgorCitmaWxlbm8gaXMgb25seSBzZXQgd2hlbiBhIGZpbGUgZGVzY3JpcHRvciBpcyB1c2VkIHRvIG9wZW4KK29uZSBvZiB0aGUgc3RhbmRhcmQgc3RyZWFtcy4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMDZmYTc0Y2UzYjVjZmJmIGlucHV0PTA3OWFkYzMzMGRkYWFiZTZdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZmQgPCAwICYmIHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgICAgIHNlbGYtPmZkID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClzZWxmLT5oYW5kbGUsIF9PX1dST05MWSB8IF9PX0JJTkFSWSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYtPmZkID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClzZWxmLT5oYW5kbGUsIF9PX1JET05MWSB8IF9PX0JJTkFSWSk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgfQorICAgIGlmIChzZWxmLT5mZCA8IDApCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgiZmlsZW5vIik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkYWJsZQorCitUcnVlIGlmIGNvbnNvbGUgaXMgYW4gaW5wdXQgYnVmZmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZjljZWYyNzQzYmVjZjAgaW5wdXQ9NmJlOWRlZmI1MzAyZGFhZV0qLworeworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgc2VsZi0+cmVhZGFibGUpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ud3JpdGFibGUKKworVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIG91dHB1dCBidWZmZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBhMmFkN2VhZTVhYmY2NyBpbnB1dD1jZWZiZDhhYmMyNGRmNmEwXSovCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSBzZWxmLT53cml0YWJsZSk7Cit9CisKK3N0YXRpYyBEV09SRAorX2J1Zmxlbih3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IFNNQUxMQlVGOyArK2kpIHsKKyAgICAgICAgaWYgKCFzZWxmLT5idWZbaV0pCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIFNNQUxMQlVGOworfQorCitzdGF0aWMgRFdPUkQKK19jb3B5ZnJvbWJ1Zih3aW5jb25zb2xlaW8gKnNlbGYsIGNoYXIgKmJ1ZiwgRFdPUkQgbGVuKQoreworICAgIERXT1JEIG4gPSAwOworCisgICAgd2hpbGUgKHNlbGYtPmJ1ZlswXSAmJiBsZW4tLSkgeworICAgICAgICBidWZbbisrXSA9IHNlbGYtPmJ1ZlswXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBTTUFMTEJVRjsgKytpKQorICAgICAgICAgICAgc2VsZi0+YnVmW2kgLSAxXSA9IHNlbGYtPmJ1ZltpXTsKKyAgICAgICAgc2VsZi0+YnVmW1NNQUxMQlVGIC0gMV0gPSAwOworICAgIH0KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgd2NoYXJfdCAqCityZWFkX2NvbnNvbGVfdyhIQU5ETEUgaGFuZGxlLCBEV09SRCBtYXhsZW4sIERXT1JEICpyZWFkbGVuKSB7CisgICAgaW50IGVyciA9IDAsIHNpZyA9IDA7CisKKyAgICB3Y2hhcl90ICpidWYgPSAod2NoYXJfdCopUHlNZW1fTWFsbG9jKG1heGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKCFidWYpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAqcmVhZGxlbiA9IDA7CisKKyAgICAvL0RlYnVnQnJlYWsoKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgRFdPUkQgb2ZmID0gMDsKKyAgICB3aGlsZSAob2ZmIDwgbWF4bGVuKSB7CisgICAgICAgIERXT1JEIG4sIGxlbiA9IG1pbihtYXhsZW4gLSBvZmYsIEJVRlNJWik7CisgICAgICAgIFNldExhc3RFcnJvcigwKTsKKyAgICAgICAgQk9PTCByZXMgPSBSZWFkQ29uc29sZVcoaGFuZGxlLCAmYnVmW29mZl0sIGxlbiwgJm4sIE5VTEwpOworCisgICAgICAgIGlmICghcmVzKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVyciA9IDA7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCAxMDAsIEZBTFNFKQorICAgICAgICAgICAgICAgICAgICA9PSBXQUlUX09CSkVDVF8wKSB7CisgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgICAgICBzaWcgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKKyAgICAgICAgICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgICAgICBpZiAoc2lnIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKnJlYWRsZW4gKz0gbjsKKworICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgcmVhZCBhIGZ1bGwgYnVmZmVyIHRoYXQgdGltZSwgZG9uJ3QgdHJ5CisgICAgICAgICAgIGFnYWluIG9yIHdlIHdpbGwgYmxvY2sgYSBzZWNvbmQgdGltZS4gKi8KKyAgICAgICAgaWYgKG4gPCBsZW4pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogSWYgdGhlIGJ1ZmZlciBlbmRlZCB3aXRoIGEgbmV3bGluZSwgYnJlYWsgb3V0ICovCisgICAgICAgIGlmIChidWZbKnJlYWRsZW4gLSAxXSA9PSAnXG4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIElmIHRoZSBidWZmZXIgZW5kcyB3aXRoIGEgaGlnaCBzdXJyb2dhdGUsIGV4cGFuZCB0aGUKKyAgICAgICAgICAgYnVmZmVyIGFuZCByZWFkIGFuIGV4dHJhIGNoYXJhY3Rlci4gKi8KKyAgICAgICAgV09SRCBjaGFyX3R5cGU7CisgICAgICAgIGlmIChvZmYgKyBCVUZTSVogPj0gbWF4bGVuICYmCisgICAgICAgICAgICBHZXRTdHJpbmdUeXBlVyhDVF9DVFlQRTMsICZidWZbKnJlYWRsZW4gLSAxXSwgMSwgJmNoYXJfdHlwZSkgJiYKKyAgICAgICAgICAgIGNoYXJfdHlwZSA9PSBDM19ISUdIU1VSUk9HQVRFKSB7CisgICAgICAgICAgICB3Y2hhcl90ICpuZXdidWY7CisgICAgICAgICAgICBtYXhsZW4gKz0gMTsKKyAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgIG5ld2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9SZWFsbG9jKGJ1ZiwgbWF4bGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgaWYgKCFuZXdidWYpIHsKKyAgICAgICAgICAgICAgICBzaWcgPSAtMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZiA9IG5ld2J1ZjsKKyAgICAgICAgICAgIC8qIE9ubHkgYWR2YW5jZSBieSBuIGFuZCBub3QgQlVGU0laIGluIHRoaXMgY2FzZSAqLworICAgICAgICAgICAgb2ZmICs9IG47CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9mZiArPSBCVUZTSVo7CisgICAgfQorCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChzaWcpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKGVycikgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqcmVhZGxlbiA+IDAgJiYgYnVmWzBdID09IEwnXHgxYScpIHsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBidWYgPSAod2NoYXJfdCAqKVB5TWVtX01hbGxvYyhzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBpZiAoIWJ1ZikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGJ1ZlswXSA9IEwnXDAnOworICAgICAgICAqcmVhZGxlbiA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKKworZXJyb3I6CisgICAgaWYgKGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeV9zc2l6ZV90CityZWFkaW50byh3aW5jb25zb2xlaW8gKnNlbGYsIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBlcnJfY2xvc2VkKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFzZWxmLT5yZWFkYWJsZSkgeworICAgICAgICBlcnJfbW9kZSgicmVhZGluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxlbiA+IEJVRk1BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5vdCByZWFkIG1vcmUgdGhhbiAlZCBieXRlcyIsIEJVRk1BWCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBFYWNoIGNoYXJhY3RlciBtYXkgdGFrZSB1cCB0byA0IGJ5dGVzIGluIHRoZSBmaW5hbCBidWZmZXIuCisgICAgICAgVGhpcyBpcyBoaWdobHkgY29uc2VydmF0aXZlLCBidXQgbmVjZXNzYXJ5IHRvIGF2b2lkCisgICAgICAgZmFpbHVyZSBmb3IgYW55IGdpdmVuIFVuaWNvZGUgaW5wdXQgKGUuZy4gXFUwMDEwZmZmZikuCisgICAgICAgSWYgdGhlIGNhbGxlciByZXF1ZXN0cyBmZXdlciB0aGFuIDQgYnl0ZXMsIHdlIGJ1ZmZlciBvbmUKKyAgICAgICBjaGFyYWN0ZXIuCisgICAgKi8KKyAgICBEV09SRCB3bGVuID0gKERXT1JEKShsZW4gLyA0KTsKKyAgICBpZiAod2xlbiA9PSAwKSB7CisgICAgICAgIHdsZW4gPSAxOworICAgIH0KKworICAgIERXT1JEIHJlYWRfbGVuID0gX2NvcHlmcm9tYnVmKHNlbGYsIGJ1ZiwgKERXT1JEKWxlbik7CisgICAgaWYgKHJlYWRfbGVuKSB7CisgICAgICAgIGJ1ZiA9ICZidWZbcmVhZF9sZW5dOworICAgICAgICBsZW4gLT0gcmVhZF9sZW47CisgICAgICAgIHdsZW4gLT0gMTsKKyAgICB9CisgICAgaWYgKGxlbiA9PSByZWFkX2xlbiB8fCB3bGVuID09IDApCisgICAgICAgIHJldHVybiByZWFkX2xlbjsKKworICAgIERXT1JEIG47CisgICAgd2NoYXJfdCAqd2J1ZiA9IHJlYWRfY29uc29sZV93KHNlbGYtPmhhbmRsZSwgd2xlbiwgJm4pOworICAgIGlmICh3YnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobiA9PSAwKSB7CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgICAgIHJldHVybiByZWFkX2xlbjsKKyAgICB9CisKKyAgICBpbnQgZXJyID0gMDsKKyAgICBEV09SRCB1OG4gPSAwOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChsZW4gPCA0KSB7CisgICAgICAgIGlmIChXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICAgICAgc2VsZi0+YnVmLCBzaXplb2Yoc2VsZi0+YnVmKSAvIHNpemVvZihzZWxmLT5idWZbMF0pLAorICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpKQorICAgICAgICAgICAgdThuID0gX2NvcHlmcm9tYnVmKHNlbGYsIGJ1ZiwgKERXT1JEKWxlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdThuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgYnVmLCAoRFdPUkQpbGVuLCBOVUxMLCBOVUxMKTsKKyAgICB9CisKKyAgICBpZiAodThuKSB7CisgICAgICAgIHJlYWRfbGVuICs9IHU4bjsKKyAgICAgICAgdThuID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKSB7CisgICAgICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIG5lZWRlZCBidWZmZXIgZm9yIGEgbW9yZSB1c2VmdWwgZXJyb3IsIGFzIHRoaXMKKyAgICAgICAgICAgICAgICBtZWFucyBvdXIgIi8gNCIgbG9naWMgYWJvdmUgaXMgaW5zdWZmaWNpZW50IGZvciBzb21lIGlucHV0LgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHU4biA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fRnJlZSh3YnVmKTsKKworICAgIGlmICh1OG4pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIkJ1ZmZlciBoYWQgcm9vbSBmb3IgJWQgYnl0ZXMgYnV0ICVkIGJ5dGVzIHJlcXVpcmVkIiwKKyAgICAgICAgICAgIGxlbiwgdThuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZXJyKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVhZF9sZW47Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KKworU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjZkMWJkZmEzZjIwYWYzOSBpbnB1dD00ZWQ2OGRhNDhhNmJhZmZlXSovCit7CisgICAgUHlfc3NpemVfdCBsZW4gPSByZWFkaW50byhzZWxmLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgIGlmIChsZW4gPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KKworc3RhdGljIERXT1JECituZXdfYnVmZmVyc2l6ZSh3aW5jb25zb2xlaW8gKnNlbGYsIERXT1JEIGN1cnJlbnRzaXplKQoreworICAgIERXT1JEIGFkZGVuZDsKKworICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKKyAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiAgRm9yIGJpZ2dlciBzaXplcywgdXNlIGEKKyAgICAgICBsZXNzLXRoYW4tZG91YmxlIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCisgICAgaWYgKGN1cnJlbnRzaXplID4gNjU1MzYpCisgICAgICAgIGFkZGVuZCA9IGN1cnJlbnRzaXplID4+IDM7CisgICAgZWxzZQorICAgICAgICBhZGRlbmQgPSAyNTYgKyBjdXJyZW50c2l6ZTsKKyAgICBpZiAoYWRkZW5kIDwgU01BTExDSFVOSykKKyAgICAgICAgLyogQXZvaWQgdGlueSByZWFkKCkgY2FsbHMuICovCisgICAgICAgIGFkZGVuZCA9IFNNQUxMQ0hVTks7CisgICAgcmV0dXJuIGFkZGVuZCArIGN1cnJlbnRzaXplOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGFsbAorCitSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGNvbnNvbGUsIHJldHVybmVkIGFzIGJ5dGVzLgorCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU2ZDMxMmM2ODRmNmUyM2IgaW5wdXQ9NDAyNGQ2NDlhMTAwNmU2OV0qLworeworICAgIHdjaGFyX3QgKmJ1ZjsKKyAgICBEV09SRCBidWZzaXplLCBuLCBsZW4gPSAwOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBEV09SRCBieXRlc19zaXplLCBybjsKKworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisKKyAgICBidWZzaXplID0gQlVGU0laOworCisgICAgYnVmID0gKHdjaGFyX3QqKVB5TWVtX01hbGxvYygoYnVmc2l6ZSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgd2NoYXJfdCAqc3ViYnVmOworCisgICAgICAgIGlmIChsZW4gPj0gKFB5X3NzaXplX3QpYnVmc2l6ZSkgeworICAgICAgICAgICAgRFdPUkQgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIGxlbik7CisgICAgICAgICAgICBpZiAobmV3c2l6ZSA+IEJVRk1BWCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChuZXdzaXplIDwgYnVmc2l6ZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5ib3VuZGVkIHJlYWQgcmV0dXJuZWQgbW9yZSBieXRlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGFuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBjYW4gaG9sZCIpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZnNpemUgPSBuZXdzaXplOworCisgICAgICAgICAgICBidWYgPSBQeU1lbV9SZWFsbG9jKGJ1ZiwgKGJ1ZnNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAoIWJ1ZikgeworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN1YmJ1ZiA9IHJlYWRfY29uc29sZV93KHNlbGYtPmhhbmRsZSwgYnVmc2l6ZSAtIGxlbiwgJm4pOworCisgICAgICAgIGlmIChzdWJidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobiA+IDApCisgICAgICAgICAgICB3Y3NuY3B5X3MoJmJ1ZltsZW5dLCBidWZzaXplIC0gbGVuICsgMSwgc3ViYnVmLCBuKTsKKworICAgICAgICBQeU1lbV9GcmVlKHN1YmJ1Zik7CisKKyAgICAgICAgLyogd2hlbiB0aGUgcmVhZCBpcyBlbXB0eSB3ZSBicmVhayAqLworICAgICAgICBpZiAobiA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVuICs9IG47CisgICAgfQorCisgICAgaWYgKGxlbiA9PSAwICYmIF9idWZsZW4oc2VsZikgPT0gMCkgeworICAgICAgICAvKiB3aGVuIHRoZSByZXN1bHQgc3RhcnRzIHdpdGggXlogd2UgcmV0dXJuIGFuIGVtcHR5IGJ1ZmZlciAqLworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KKworICAgIGlmIChsZW4pIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBieXRlc19zaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBidWYsIGxlbiwKKyAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmICghYnl0ZXNfc2l6ZSkgeworICAgICAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGJ5dGVzX3NpemUgPSAwOworICAgIH0KKworICAgIGJ5dGVzX3NpemUgKz0gX2J1ZmxlbihzZWxmKTsKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNfc2l6ZSk7CisgICAgcm4gPSBfY29weWZyb21idWYoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBieXRlc19zaXplKTsKKworICAgIGlmIChsZW4pIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBieXRlc19zaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBidWYsIGxlbiwKKyAgICAgICAgICAgICZQeUJ5dGVzX0FTX1NUUklORyhieXRlcylbcm5dLCBieXRlc19zaXplIC0gcm4sIE5VTEwsIE5VTEwpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmICghYnl0ZXNfc2l6ZSkgeworICAgICAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGFkZCBiYWNrIHRoZSBudW1iZXIgb2YgcHJlc2VydmVkIGJ5dGVzICovCisgICAgICAgIGJ5dGVzX3NpemUgKz0gcm47CisgICAgfQorCisgICAgUHlNZW1fRnJlZShidWYpOworICAgIGlmIChieXRlc19zaXplIDwgKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSkgeworICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgbiAqIHNpemVvZih3Y2hhcl90KSkgPCAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkCisgICAgc2l6ZTogaW9fc3NpemVfdCA9IC0xCisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuCisKK09ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsIHdoZW4gc2l6ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsCitzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU3ZGY2OGFmOWY0YjIyZDAgaW5wdXQ9NmM1NmZjZWVjNDYwZjFkZF0qLworeworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBQeV9zc2l6ZV90IGJ5dGVzX3NpemU7CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIGlmICghc2VsZi0+cmVhZGFibGUpCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgicmVhZGluZyIpOworCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbChzZWxmKTsKKyAgICBpZiAoc2l6ZSA+IEJVRk1BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5vdCByZWFkIG1vcmUgdGhhbiAlZCBieXRlcyIsIEJVRk1BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBieXRlc19zaXplID0gcmVhZGludG8oc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CisgICAgaWYgKGJ5dGVzX3NpemUgPCAwKSB7CisgICAgICAgIFB5X0NMRUFSKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGJ5dGVzX3NpemUgPCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSkgeworICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgYnl0ZXNfc2l6ZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBieXRlczsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLndyaXRlCisgICAgYjogUHlfYnVmZmVyCisgICAgLworCitXcml0ZSBidWZmZXIgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisKK09ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLgorVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9idWZmZXIgKmIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzc1YmRiMTZmYmY5MTM3YiBpbnB1dD1iZTM1ZmI2MjRmOTdjOTQxXSovCit7CisgICAgQk9PTCByZXMgPSBUUlVFOworICAgIHdjaGFyX3QgKndidWY7CisgICAgRFdPUkQgbGVuLCB3bGVuLCBuID0gMDsKKworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgaWYgKCFzZWxmLT53cml0YWJsZSkKKyAgICAgICAgcmV0dXJuIGVycl9tb2RlKCJ3cml0aW5nIik7CisKKyAgICBpZiAoYi0+bGVuID4gQlVGTUFYKQorICAgICAgICBsZW4gPSBCVUZNQVg7CisgICAgZWxzZQorICAgICAgICBsZW4gPSAoRFdPUkQpYi0+bGVuOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCBOVUxMLCAwKTsKKworICAgIC8qIGlzc3VlMTEzOTUgdGhlcmUgaXMgYW4gdW5zcGVjaWZpZWQgdXBwZXIgYm91bmQgb24gaG93IG1hbnkgYnl0ZXMKKyAgICAgICBjYW4gYmUgd3JpdHRlbiBhdCBvbmNlLiBXZSBjYXAgYXQgMzJrIC0gdGhlIGNhbGxlciB3aWxsIGhhdmUgdG8KKyAgICAgICBoYW5kbGUgcGFydGlhbCB3cml0ZXMuCisgICAgICAgU2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueSBpbnB1dCBieXRlcyBhcmUgYmVpbmcgaWdub3JlZCwgd2UKKyAgICAgICBoYXZlIHRvIHJlZHVjZSBhbmQgcmVjYWxjdWxhdGUuICovCisgICAgd2hpbGUgKHdsZW4gPiAzMjc2NiAvIHNpemVvZih3Y2hhcl90KSkgeworICAgICAgICBsZW4gLz0gMjsKKyAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sIE5VTEwsIDApOworICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCF3bGVuKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICB3YnVmID0gKHdjaGFyX3QqKVB5TWVtX01hbGxvYyh3bGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwgd2J1Ziwgd2xlbik7CisgICAgaWYgKHdsZW4pIHsKKyAgICAgICAgcmVzID0gV3JpdGVDb25zb2xlVyhzZWxmLT5oYW5kbGUsIHdidWYsIHdsZW4sICZuLCBOVUxMKTsKKyAgICAgICAgaWYgKG4gPCB3bGVuKSB7CisgICAgICAgICAgICAvKiBXcm90ZSBmZXdlciBjaGFyYWN0ZXJzIHRoYW4gZXhwZWN0ZWQsIHdoaWNoIG1lYW5zIG91cgorICAgICAgICAgICAgICogbGVuIHZhbHVlIG1heSBiZSB3cm9uZy4gU28gcmVjYWxjdWxhdGUgaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAqIGNoYXJhY3RlcnMgdGhhdCB3ZXJlIHdyaXR0ZW4uIEFzIHRoaXMgY291bGQgcG90ZW50aWFsbHkKKyAgICAgICAgICAgICAqIHJlc3VsdCBpbiBhIGRpZmZlcmVudCB2YWx1ZSwgd2UgYWxzbyB2YWxpZGF0ZSB0aGF0IHZhbHVlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sCisgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGFzc2VydCh3bGVuID09IGxlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgcmVzID0gMDsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX3JlcHIod2luY29uc29sZWlvICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBbY2xvc2VkXT4iKTsKKworICAgIGlmIChzZWxmLT5yZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLl9XaW5kb3dzQ29uc29sZUlPIG1vZGU9J3JiJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA/ICJUcnVlIiA6ICJGYWxzZSIpOworICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLl9XaW5kb3dzQ29uc29sZUlPIG1vZGU9J3diJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA/ICJUcnVlIiA6ICJGYWxzZSIpOworCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiX1dpbmRvd3NDb25zb2xlSU8gaGFzIGludmFsaWQgbW9kZSIpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uaXNhdHR5CisKK0Fsd2F5cyBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZWFjMDlkMjg3YzExYmQ3IGlucHV0PTliOTE1OTFkYmUzNTZmODZdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworCisgICAgUHlfUkVUVVJOX1RSVUU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5jb25zb2xlaW9fZ2V0c3RhdGUod2luY29uc29sZWlvICpzZWxmKQoreworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplICclcycgb2JqZWN0IiwgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNpbmNsdWRlICJjbGluaWMvd2luY29uc29sZWlvLmMuaCIKKworc3RhdGljIFB5TWV0aG9kRGVmIHdpbmNvbnNvbGVpb19tZXRob2RzW10gPSB7CisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGCisgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pd2luY29uc29sZWlvX2dldHN0YXRlLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworLyogJ2Nsb3NlZCcgYW5kICdtb2RlJyBhcmUgYXR0cmlidXRlcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEZpbGVJTy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbG9zZWQod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2Nsb3NlZmQod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmNsb3NlaGFuZGxlKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfbW9kZSh3aW5jb25zb2xlaW8gKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNlbGYtPnJlYWRhYmxlID8gInJiIiA6ICJ3YiIpOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgd2luY29uc29sZWlvX2dldHNldGxpc3RbXSA9IHsKKyAgICB7ImNsb3NlZCIsIChnZXR0ZXIpZ2V0X2Nsb3NlZCwgTlVMTCwgIlRydWUgaWYgdGhlIGZpbGUgaXMgY2xvc2VkIn0sCisgICAgeyJjbG9zZWZkIiwgKGdldHRlcilnZXRfY2xvc2VmZCwgTlVMTCwKKyAgICAgICAgIlRydWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGNsb3NlZCBieSBjbG9zZSgpLiJ9LAorICAgIHsibW9kZSIsIChnZXR0ZXIpZ2V0X21vZGUsIE5VTEwsICJTdHJpbmcgZ2l2aW5nIHRoZSBmaWxlIG1vZGUifSwKKyAgICB7TlVMTH0sCit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgd2luY29uc29sZWlvX21lbWJlcnNbXSA9IHsKKyAgICB7Il9ibGtzaXplIiwgVF9VSU5ULCBvZmZzZXRvZih3aW5jb25zb2xlaW8sIGJsa3NpemUpLCAwfSwKKyAgICB7Il9maW5hbGl6aW5nIiwgVF9CT09MLCBvZmZzZXRvZih3aW5jb25zb2xlaW8sIGZpbmFsaXppbmcpLCAwfSwKKyAgICB7TlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2lvLl9XaW5kb3dzQ29uc29sZUlPIiwKKyAgICBzaXplb2Yod2luY29uc29sZWlvKSwKKyAgICAwLAorICAgIChkZXN0cnVjdG9yKXdpbmNvbnNvbGVpb19kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKXdpbmNvbnNvbGVpb19yZXByLCAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19fX2RvY19fLCAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2Mpd2luY29uc29sZWlvX3RyYXZlcnNlLCAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl3aW5jb25zb2xlaW9fY2xlYXIsICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgd2Vha3JlZmxpc3QpLCAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgd2luY29uc29sZWlvX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgd2luY29uc29sZWlvX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgd2luY29uc29sZWlvX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBkaWN0KSwgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fLCAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHdpbmNvbnNvbGVpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUgPSAoUHlPYmplY3QqKSZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2pzb24uYyBiL01vZHVsZXMvX2pzb24uYwppbmRleCBmODJhZjM0Li5kM2RiZjk4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19qc29uLmMKKysrIGIvTW9kdWxlcy9fanNvbi5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZW5jb2RlZF9jb25zdChQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkCi1yYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpOworcmFpc2VfZXJybXNnKGNvbnN0IGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBlbmNvZGVyX2VuY29kZV9zdHJpbmcoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMjEsNyArMzIxLDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLXJhaXNlX2Vycm1zZyhjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCkKK3JhaXNlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCkKIHsKICAgICAvKiBVc2UgSlNPTkRlY29kZUVycm9yIGV4Y2VwdGlvbiB0byByYWlzZSBhIG5pY2UgbG9va2luZyBWYWx1ZUVycm9yIHN1YmNsYXNzICovCiAgICAgc3RhdGljIFB5T2JqZWN0ICpKU09ORGVjb2RlRXJyb3IgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwppbmRleCBiMTMwN2VmLi5mZWIzODAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwpAQCAtNDksNyArNDksNyBAQAogCiAvKiB0aGUgZ3JvdXBpbmcgaXMgdGVybWluYXRlZCBieSBlaXRoZXIgMCBvciBDSEFSX01BWCAqLwogc3RhdGljIFB5T2JqZWN0KgotY29weV9ncm91cGluZyhjaGFyKiBzKQorY29weV9ncm91cGluZyhjb25zdCBjaGFyKiBzKQogewogICAgIGludCBpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQsICp2YWwgPSBOVUxMOwpAQCAtNjIyLDUzICs2MjIsMzQgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2xvY2FsZSh2b2lkKQogewotICAgIFB5T2JqZWN0ICptLCAqZCwgKng7CisgICAgUHlPYmplY3QgKm07CiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICiAgICAgaW50IGk7CiAjZW5kaWYKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9sb2NhbGVtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCi0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX0NUWVBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQ1RZUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19USU1FKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfVElNRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX0NPTExBVEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19DT0xMQVRFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTU9ORVRBUlkpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19NT05FVEFSWSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfQ1RZUEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX1RJTUUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX0NPTExBVEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX01PTkVUQVJZKTsKIAogI2lmZGVmIExDX01FU1NBR0VTCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19NRVNTQUdFUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX01FU1NBR0VTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19NRVNTQUdFUyk7CiAjZW5kaWYgLyogTENfTUVTU0FHRVMgKi8KIAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTlVNRVJJQyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX05VTUVSSUMiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19BTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19BTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhDSEFSX01BWCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNIQVJfTUFYIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19OVU1FUklDKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19BTEwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENIQVJfTUFYKTsKIAogICAgIEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJsb2NhbGUuRXJyb3IiLCBOVUxMLCBOVUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRXJyb3IiLCBFcnJvcik7CisgICAgaWYgKEVycm9yID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFcnJvciIsIEVycm9yKTsKIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAogICAgIGZvciAoaSA9IDA7IGxhbmdpbmZvX2NvbnN0YW50c1tpXS5uYW1lOyBpKyspIHsKQEAgLTY3Niw2ICs2NTcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ2luZm9fY29uc3RhbnRzW2ldLnZhbHVlKTsKICAgICB9CiAjZW5kaWYKKworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiBtOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IDY2ZTUzNGYuLmRjM2Y4YWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0yLDE3ICsyLDEzIEBACiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJyb3RhdGluZ3RyZWUuaCIKIAotI2lmICFkZWZpbmVkKEhBVkVfTE9OR19MT05HKQotI2Vycm9yICJUaGlzIG1vZHVsZSByZXF1aXJlcyBsb25nIGxvbmdzISIKLSNlbmRpZgotCiAvKioqIFNlbGVjdGlvbiBvZiBhIGhpZ2gtcHJlY2lzaW9uIHRpbWVyICoqKi8KIAogI2lmZGVmIE1TX1dJTkRPV1MKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAotc3RhdGljIFBZX0xPTkdfTE9ORworc3RhdGljIGxvbmcgbG9uZwogaHBUaW1lcih2b2lkKQogewogICAgIExBUkdFX0lOVEVHRVIgbGk7CkBAIC0zOSwxMSArMzUsMTEgQEAKICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KICNpbmNsdWRlIDxzeXMvdGltZXMuaD4KIAotc3RhdGljIFBZX0xPTkdfTE9ORworc3RhdGljIGxvbmcgbG9uZwogaHBUaW1lcih2b2lkKQogewogICAgIHN0cnVjdCB0aW1ldmFsIHR2OwotICAgIFBZX0xPTkdfTE9ORyByZXQ7CisgICAgbG9uZyBsb25nIHJldDsKICNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKICAgICBnZXR0aW1lb2ZkYXkoJnR2KTsKICNlbHNlCkBAIC03MCw4ICs2Niw4IEBACiAvKiByZXByZXNlbnRzIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gYW5vdGhlciBmdW5jdGlvbiAqLwogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyU3ViRW50cnkgewogICAgIHJvdGF0aW5nX25vZGVfdCBoZWFkZXI7Ci0gICAgUFlfTE9OR19MT05HIHR0OwotICAgIFBZX0xPTkdfTE9ORyBpdDsKKyAgICBsb25nIGxvbmcgdHQ7CisgICAgbG9uZyBsb25nIGl0OwogICAgIGxvbmcgY2FsbGNvdW50OwogICAgIGxvbmcgcmVjdXJzaXZlY2FsbGNvdW50OwogICAgIGxvbmcgcmVjdXJzaW9uTGV2ZWw7CkBAIC04MSw4ICs3Nyw4IEBACiB0eXBlZGVmIHN0cnVjdCBfUHJvZmlsZXJFbnRyeSB7CiAgICAgcm90YXRpbmdfbm9kZV90IGhlYWRlcjsKICAgICBQeU9iamVjdCAqdXNlck9iajsgLyogUHlDb2RlT2JqZWN0LCBvciBhIGRlc2NyaXB0aXZlIHN0ciBmb3IgYnVpbHRpbnMgKi8KLSAgICBQWV9MT05HX0xPTkcgdHQ7IC8qIHRvdGFsIHRpbWUgaW4gdGhpcyBlbnRyeSAqLwotICAgIFBZX0xPTkdfTE9ORyBpdDsgLyogaW5saW5lIHRpbWUgaW4gdGhpcyBlbnRyeSAobm90IGluIHN1YmNhbGxzKSAqLworICAgIGxvbmcgbG9uZyB0dDsgLyogdG90YWwgdGltZSBpbiB0aGlzIGVudHJ5ICovCisgICAgbG9uZyBsb25nIGl0OyAvKiBpbmxpbmUgdGltZSBpbiB0aGlzIGVudHJ5IChub3QgaW4gc3ViY2FsbHMpICovCiAgICAgbG9uZyBjYWxsY291bnQ7IC8qIGhvdyBtYW55IHRpbWVzIHRoaXMgd2FzIGNhbGxlZCAqLwogICAgIGxvbmcgcmVjdXJzaXZlY2FsbGNvdW50OyAvKiBob3cgbWFueSB0aW1lcyBjYWxsZWQgcmVjdXJzaXZlbHkgKi8KICAgICBsb25nIHJlY3Vyc2lvbkxldmVsOwpAQCAtOTAsOCArODYsOCBAQAogfSBQcm9maWxlckVudHJ5OwogCiB0eXBlZGVmIHN0cnVjdCBfUHJvZmlsZXJDb250ZXh0IHsKLSAgICBQWV9MT05HX0xPTkcgdDA7Ci0gICAgUFlfTE9OR19MT05HIHN1YnQ7CisgICAgbG9uZyBsb25nIHQwOworICAgIGxvbmcgbG9uZyBzdWJ0OwogICAgIHN0cnVjdCBfUHJvZmlsZXJDb250ZXh0ICpwcmV2aW91czsKICAgICBQcm9maWxlckVudHJ5ICpjdHhFbnRyeTsKIH0gUHJvZmlsZXJDb250ZXh0OwpAQCAtMTIxLDkgKzExNyw5IEBACiAjZGVmaW5lIERPVUJMRV9USU1FUl9QUkVDSVNJT04gICA0Mjk0OTY3Mjk2LjAKIHN0YXRpYyBQeU9iamVjdCAqZW1wdHlfdHVwbGU7CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcgQ2FsbEV4dGVybmFsVGltZXIoUHJvZmlsZXJPYmplY3QgKnBPYmopCitzdGF0aWMgbG9uZyBsb25nIENhbGxFeHRlcm5hbFRpbWVyKFByb2ZpbGVyT2JqZWN0ICpwT2JqKQogewotICAgIFBZX0xPTkdfTE9ORyByZXN1bHQ7CisgICAgbG9uZyBsb25nIHJlc3VsdDsKICAgICBQeU9iamVjdCAqbyA9IFB5T2JqZWN0X0NhbGwocE9iai0+ZXh0ZXJuYWxUaW1lciwgZW1wdHlfdHVwbGUsIE5VTEwpOwogICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHBPYmotPmV4dGVybmFsVGltZXIpOwpAQCAtMTM2LDExICsxMzIsMTEgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGludGVycHJldCB0aGUgcmVzdWx0IGFzIGEgZG91YmxlIG1lYXN1cmVkIGluIHNlY29uZHMuCi0gICAgICAgICAgIEFzIHRoZSBwcm9maWxlciB3b3JrcyB3aXRoIFBZX0xPTkdfTE9ORyBpbnRlcm5hbGx5CisgICAgICAgICAgIEFzIHRoZSBwcm9maWxlciB3b3JrcyB3aXRoIGxvbmcgbG9uZyBpbnRlcm5hbGx5CiAgICAgICAgICAgIHdlIGNvbnZlcnQgaXQgdG8gYSBsYXJnZSBpbnRlZ2VyICovCiAgICAgICAgIGRvdWJsZSB2YWwgPSBQeUZsb2F0X0FzRG91YmxlKG8pOwogICAgICAgICAvKiBlcnJvciBoYW5kbGluZyBkZWxheWVkIHRvIHRoZSBjb2RlIGJlbG93ICovCi0gICAgICAgIHJlc3VsdCA9IChQWV9MT05HX0xPTkcpICh2YWwgKiBET1VCTEVfVElNRVJfUFJFQ0lTSU9OKTsKKyAgICAgICAgcmVzdWx0ID0gKGxvbmcgbG9uZykgKHZhbCAqIERPVUJMRV9USU1FUl9QUkVDSVNJT04pOwogICAgIH0KICAgICBQeV9ERUNSRUYobyk7CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTM0Miw4ICszMzgsOCBAQAogc3RhdGljIHZvaWQKIFN0b3AoUHJvZmlsZXJPYmplY3QgKnBPYmosIFByb2ZpbGVyQ29udGV4dCAqc2VsZiwgUHJvZmlsZXJFbnRyeSAqZW50cnkpCiB7Ci0gICAgUFlfTE9OR19MT05HIHR0ID0gQ0FMTF9USU1FUihwT2JqKSAtIHNlbGYtPnQwOwotICAgIFBZX0xPTkdfTE9ORyBpdCA9IHR0IC0gc2VsZi0+c3VidDsKKyAgICBsb25nIGxvbmcgdHQgPSBDQUxMX1RJTUVSKHBPYmopIC0gc2VsZi0+dDA7CisgICAgbG9uZyBsb25nIGl0ID0gdHQgLSBzZWxmLT5zdWJ0OwogICAgIGlmIChzZWxmLT5wcmV2aW91cykKICAgICAgICAgc2VsZi0+cHJldmlvdXMtPnN1YnQgKz0gdHQ7CiAgICAgcE9iai0+Y3VycmVudFByb2ZpbGVyQ29udGV4dCA9IHNlbGYtPnByZXZpb3VzOwpAQCAtNzYyLDcgKzc1OCw2IEBACiBzdGF0aWMgaW50CiBwcm9maWxlcl9pbml0KFByb2ZpbGVyT2JqZWN0ICpwT2JqLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewotICAgIFB5T2JqZWN0ICpvOwogICAgIFB5T2JqZWN0ICp0aW1lciA9IE5VTEw7CiAgICAgZG91YmxlIHRpbWV1bml0ID0gMC4wOwogICAgIGludCBzdWJjYWxscyA9IDE7CkBAIC03NzcsMTEgKzc3Miw5IEBACiAKICAgICBpZiAoc2V0U3ViY2FsbHMocE9iaiwgc3ViY2FsbHMpIDwgMCB8fCBzZXRCdWlsdGlucyhwT2JqLCBidWlsdGlucykgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgbyA9IHBPYmotPmV4dGVybmFsVGltZXI7Ci0gICAgcE9iai0+ZXh0ZXJuYWxUaW1lciA9IHRpbWVyOwotICAgIFB5X1hJTkNSRUYodGltZXIpOwotICAgIFB5X1hERUNSRUYobyk7CiAgICAgcE9iai0+ZXh0ZXJuYWxUaW1lclVuaXQgPSB0aW1ldW5pdDsKKyAgICBQeV9YSU5DUkVGKHRpbWVyKTsKKyAgICBQeV9YU0VUUkVGKHBPYmotPmV4dGVybmFsVGltZXIsIHRpbWVyKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHptYW1vZHVsZS5jIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCmluZGV4IDc0YzMwMWQuLmY1ZGNlYTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYworKysgYi9Nb2R1bGVzL19sem1hbW9kdWxlLmMKQEAgLTE4LDEyICsxOCw2IEBACiAKICNpbmNsdWRlIDxsem1hLmg+CiAKLQotI2lmbmRlZiBQWV9MT05HX0xPTkcKLSNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgUFlfTE9OR19MT05HIHRvIGJlIGRlZmluZWQiCi0jZW5kaWYKLQotCiAjaWZkZWYgV0lUSF9USFJFQUQKICNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCiAgICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDApKSB7IFwKQEAgLTE2Myw3ICsxNTcsNyBAQAogICAgICAgdWludDMyX3QgLSB0aGUgIkkiICh1bnNpZ25lZCBpbnQpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQgc2l6ZSwgYnV0CiAgICAgICBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgogCi0gICAgICBsem1hX3ZsaSAtIHRoZSAiSyIgKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgc3BlY2lmaWVyIGlzIHRoZSByaWdodAorICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBsb25nIGxvbmcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKICAgICAgIHNpemUsIGJ1dCBsaWtlICJJIiBpdCBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgogCiAgICAgICBsem1hX21vZGUgYW5kIGx6bWFfbWF0Y2hfZmluZGVyIC0gdGhlc2UgYXJlIGVudW1lcmF0aW9uIHR5cGVzLCBhbmQKQEAgLTE3NiwxMiArMTcwLDEyIEBACiAgICAgc3RhdGljIGludCBcCiAgICAgRlVOQ05BTUUoUHlPYmplY3QgKm9iaiwgdm9pZCAqcHRyKSBcCiAgICAgeyBcCi0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7IFwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsgXAogICAgICAgICBcCiAgICAgICAgIHZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcob2JqKTsgXAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgXAogICAgICAgICAgICAgcmV0dXJuIDA7IFwKLSAgICAgICAgaWYgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKFRZUEUpdmFsICE9IHZhbCkgeyBcCisgICAgICAgIGlmICgodW5zaWduZWQgbG9uZyBsb25nKShUWVBFKXZhbCAhPSB2YWwpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgdG9vIGxhcmdlIGZvciAiICNUWVBFICIgdHlwZSIpOyBcCiAgICAgICAgICAgICByZXR1cm4gMDsgXApAQCAtMzk4LDcgKzM5Miw3IEBACiAgICBQeXRob24tbGV2ZWwgZmlsdGVyIHNwZWNpZmllcnMgKHJlcHJlc2VudGVkIGFzIGRpY3RzKS4gKi8KIAogc3RhdGljIGludAotc3BlY19hZGRfZmllbGQoUHlPYmplY3QgKnNwZWMsIF9QeV9JZGVudGlmaWVyICprZXksIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZSkKK3NwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCiB7CiAgICAgaW50IHN0YXR1czsKICAgICBQeU9iamVjdCAqdmFsdWVfb2JqZWN0OwpAQCAtNTUzLDcgKzU0Nyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BQ29tcHJlc3Nvci5jb21wcmVzcwogCi0gICAgc2VsZjogc2VsZih0eXBlPSJDb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtNTY3LDcgKzU2MCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzc19pbXBsKENvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMWY2MTUxMzY5NjNlMDBmIGlucHV0PThiNjBjYjEzZTBjZTY0MjBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMWY2MTUxMzY5NjNlMDBmIGlucHV0PTY0MDE5ZWFjN2YyY2M4ZDBdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNTgzLDggKzU3Niw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BQ29tcHJlc3Nvci5mbHVzaAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJDb21wcmVzc29yICoiKQotCiBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuCiAKIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0IGluIGludGVybmFsIGJ1ZmZlcnMuCkBAIC01OTQsNyArNTg1LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFDb21wcmVzc29yX2ZsdXNoX2ltcGwoQ29tcHJlc3NvciAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWMyMWYzZTIyNTA0ZjUwIGlucHV0PTMwNjBmYjI2ZjliNDA0MmNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWMyMWYzZTIyNTA0ZjUwIGlucHV0PTZiMzY5MzAzZjY3YWQwYThdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNjk4LDcgKzY4OSw2IEBACiAvKlstY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuX19pbml0X18KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKICAgICBmb3JtYXQ6IGludChjX2RlZmF1bHQ9IkZPUk1BVF9YWiIpID0gRk9STUFUX1haCiAgICAgICAgIFRoZSBjb250YWluZXIgZm9ybWF0IHRvIHVzZSBmb3IgdGhlIG91dHB1dC4gIFRoaXMgY2FuCiAgICAgICAgIGJlIEZPUk1BVF9YWiAoZGVmYXVsdCksIEZPUk1BVF9BTE9ORSwgb3IgRk9STUFUX1JBVy4KQEAgLTEwNjUsNyArMTA1NSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BRGVjb21wcmVzc29yLmRlY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iRGVjb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIApAQCAtMTA4OCw3ICsxMDc3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZjRlMjBlYzcxMjIyNDFkIGlucHV0PWYyYmI5MDJjYzFjYWYyMDNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZjRlMjBlYzcxMjIyNDFkIGlucHV0PTYwYzFmMTM1ODIwZTMwOWRdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtMTEyOCw3ICsxMTE3LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFEZWNvbXByZXNzb3IuX19pbml0X18KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iRGVjb21wcmVzc29yICoiKQogICAgIGZvcm1hdDogaW50KGNfZGVmYXVsdD0iRk9STUFUX0FVVE8iKSA9IEZPUk1BVF9BVVRPCiAgICAgICAgIFNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCBvZiB0aGUgaW5wdXQgc3RyZWFtLiAgSWYgdGhpcyBpcwogICAgICAgICBGT1JNQVRfQVVUTyAodGhlIGRlZmF1bHQpLCB0aGUgZGVjb21wcmVzc29yIHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3QKQEAgLTExNTQsNyArMTE0Miw3IEBACiBzdGF0aWMgaW50CiBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBpbnQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZW1saW1pdCwgUHlPYmplY3QgKmZpbHRlcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2UxODIxZjhhYTM2NTY0YyBpbnB1dD00NThjYTYxMzJlZjI5ODAxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2UxODIxZjhhYTM2NTY0YyBpbnB1dD04MWZlNjg0YTZjMmY4YTI3XSovCiB7CiAgICAgY29uc3QgdWludDMyX3QgZGVjb2Rlcl9mbGFncyA9IExaTUFfVEVMTF9BTllfQ0hFQ0sgfCBMWk1BX1RFTExfTk9fQ0hFQ0s7CiAgICAgdWludDY0X3QgbWVtbGltaXRfID0gVUlOVDY0X01BWDsKQEAgLTE0NDksNyArMTQzNyw3IEBACiAvKiBTb21lIG9mIG91ciBjb25zdGFudHMgYXJlIG1vcmUgdGhhbiAzMiBiaXRzIHdpZGUsIHNvIFB5TW9kdWxlX0FkZEludENvbnN0YW50CiAgICB3b3VsZCBub3Qgd29yayBjb3JyZWN0bHkgb24gcGxhdGZvcm1zIHdpdGggMzItYml0IGxvbmdzLiAqLwogc3RhdGljIGludAotbW9kdWxlX2FkZF9pbnRfY29uc3RhbnQoUHlPYmplY3QgKm0sIGNvbnN0IGNoYXIgKm5hbWUsIFBZX0xPTkdfTE9ORyB2YWx1ZSkKK21vZHVsZV9hZGRfaW50X2NvbnN0YW50KFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpuYW1lLCBsb25nIGxvbmcgdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKm8gPSBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbHVlKTsKICAgICBpZiAobyA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCmluZGV4IDRhZTYzOGUuLmQ5MmE4YmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYworKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIHsicmVjdiIsIG11bHRpcHJvY2Vzc2luZ19yZWN2LCBNRVRIX1ZBUkFSR1MsICIifSwKICAgICB7InNlbmQiLCBtdWx0aXByb2Nlc3Npbmdfc2VuZCwgTUVUSF9WQVJBUkdTLCAiIn0sCiAjZW5kaWYKLSNpZm5kZWYgUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRAorI2lmICFkZWZpbmVkKFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIHsic2VtX3VubGluayIsIF9QeU1wX3NlbV91bmxpbmssIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCiAgICAge05VTEx9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmggYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKaW5kZXggOWFlZWE4ZC4uNTEyYmMxNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaApAQCAtNjAsNyArNjAsNyBAQAogI2lmIFNJWkVPRl9WT0lEX1AgPT0gU0laRU9GX0xPTkcKICMgIGRlZmluZSBGX1BPSU5URVIgImsiCiAjICBkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkcKLSNlbGlmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIChTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HX0xPTkcpCisjZWxpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HX0xPTkcKICMgIGRlZmluZSBGX1BPSU5URVIgIksiCiAjICBkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkdMT05HCiAjZWxzZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fb3BlcmF0b3IuYyBiL01vZHVsZXMvX29wZXJhdG9yLmMKaW5kZXggZGZmZjFkMi4uZmI4ZWFmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fb3BlcmF0b3IuYworKysgYi9Nb2R1bGVzL19vcGVyYXRvci5jCkBAIC0xMTExLDYgKzExMTEsOCBAQAogICAgICAgICBQeU9iamVjdCAqZnVuY3Rvb2xzOwogICAgICAgICBQeU9iamVjdCAqcGFydGlhbDsKICAgICAgICAgUHlPYmplY3QgKmNvbnN0cnVjdG9yOworICAgICAgICBQeU9iamVjdCAqbmV3YXJnc1syXTsKKwogICAgICAgICBfUHlfSURFTlRJRklFUihwYXJ0aWFsKTsKICAgICAgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKICAgICAgICAgaWYgKCFmdW5jdG9vbHMpCkBAIC0xMTE5LDE3ICsxMTIxLDExIEBACiAgICAgICAgIFB5X0RFQ1JFRihmdW5jdG9vbHMpOwogICAgICAgICBpZiAoIXBhcnRpYWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KDIpOwotICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYoUHlfVFlQRShtYykpOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKVB5X1RZUEUobWMpKTsKLSAgICAgICAgUHlfSU5DUkVGKG1jLT5uYW1lKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAxLCBtYy0+bmFtZSk7Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gUHlPYmplY3RfQ2FsbChwYXJ0aWFsLCBuZXdhcmdzLCBtYy0+a3dkcyk7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKworICAgICAgICBuZXdhcmdzWzBdID0gKFB5T2JqZWN0ICopUHlfVFlQRShtYyk7CisgICAgICAgIG5ld2FyZ3NbMV0gPSBtYy0+bmFtZTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHBhcnRpYWwsIG5ld2FyZ3MsIDIsIG1jLT5rd2RzKTsKKwogICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTyIsIGNvbnN0cnVjdG9yLCBtYy0+YXJncyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcGlja2xlLmMgYi9Nb2R1bGVzL19waWNrbGUuYwppbmRleCAzYzIxYjZhLi5mYzE2YzYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19waWNrbGUuYworKysgYi9Nb2R1bGVzL19waWNrbGUuYwpAQCAtMTUzLDYgKzE1Myw5IEBACiAgICAgUHlPYmplY3QgKmNvZGVjc19lbmNvZGU7CiAgICAgLyogYnVpbHRpbnMuZ2V0YXR0ciwgdXNlZCBmb3Igc2F2aW5nIG5lc3RlZCBuYW1lcyB3aXRoIHByb3RvY29sIDwgNCAqLwogICAgIFB5T2JqZWN0ICpnZXRhdHRyOworICAgIC8qIGZ1bmN0b29scy5wYXJ0aWFsLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgX19uZXdvYmpfZXhfXyB3aXRoIHByb3RvY29scworICAgICAgIDIgYW5kIDMgKi8KKyAgICBQeU9iamVjdCAqcGFydGlhbDsKIH0gUGlja2xlU3RhdGU7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIF9waWNrbGUgbW9kdWxlIGRlZmluaXRpb24uICovCkBAIC0xOTAsNiArMTkzLDcgQEAKICAgICBQeV9DTEVBUihzdC0+aW1wb3J0X21hcHBpbmdfM3RvMik7CiAgICAgUHlfQ0xFQVIoc3QtPmNvZGVjc19lbmNvZGUpOwogICAgIFB5X0NMRUFSKHN0LT5nZXRhdHRyKTsKKyAgICBQeV9DTEVBUihzdC0+cGFydGlhbCk7CiB9CiAKIC8qIEluaXRpYWxpemUgdGhlIGdpdmVuIHBpY2tsZSBtb2R1bGUgc3RhdGUuICovCkBAIC0yMDAsNiArMjA0LDcgQEAKICAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvbXBhdF9waWNrbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb2RlY3MgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jdG9vbHMgPSBOVUxMOwogCiAgICAgYnVpbHRpbnMgPSBQeUV2YWxfR2V0QnVpbHRpbnMoKTsKICAgICBpZiAoYnVpbHRpbnMgPT0gTlVMTCkKQEAgLTMxNCwxMiArMzE5LDIxIEBACiAgICAgfQogICAgIFB5X0NMRUFSKGNvZGVjcyk7CiAKKyAgICBmdW5jdG9vbHMgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImZ1bmN0b29scyIpOworICAgIGlmICghZnVuY3Rvb2xzKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHN0LT5wYXJ0aWFsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmdW5jdG9vbHMsICJwYXJ0aWFsIik7CisgICAgaWYgKCFzdC0+cGFydGlhbCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihmdW5jdG9vbHMpOworCiAgICAgcmV0dXJuIDA7CiAKICAgZXJyb3I6CiAgICAgUHlfQ0xFQVIoY29weXJlZyk7CiAgICAgUHlfQ0xFQVIoY29tcGF0X3BpY2tsZSk7CiAgICAgUHlfQ0xFQVIoY29kZWNzKTsKKyAgICBQeV9DTEVBUihmdW5jdG9vbHMpOwogICAgIF9QaWNrbGVfQ2xlYXJTdGF0ZShzdCk7CiAgICAgcmV0dXJuIC0xOwogfQpAQCAtMzMxLDQzICszNDUsMjAgQEAKIF9QaWNrbGVfRmFzdENhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeU9iamVjdCAqYXJnX3R1cGxlID0gUHlUdXBsZV9OZXcoMSk7CiAKLSAgICAvKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmV1c2UgdGhlIGFyZ3VtZW50IHR1cGxlLiBUaGlzIHVzZWQgdG8gZ2l2ZQotICAgICAgIGEgc2xpZ2h0IHBlcmZvcm1hbmNlIGJvb3N0IHdpdGggb2xkZXIgcGlja2xlIGltcGxlbWVudGF0aW9ucyB3aGVyZSBtYW55Ci0gICAgICAgdW5idWZmZXJlZCByZWFkcyBvY2N1cnJlZCAodGh1cyBuZWVkaW5nIG1hbnkgZnVuY3Rpb24gY2FsbHMpLgotCi0gICAgICAgSG93ZXZlciwgdGhpcyBvcHRpbWl6YXRpb24gd2FzIHJlbW92ZWQgYmVjYXVzZSBpdCB3YXMgdG9vIGNvbXBsaWNhdGVkCi0gICAgICAgdG8gZ2V0IHJpZ2h0LiBJdCBhYnVzZWQgdGhlIEMgQVBJIGZvciB0dXBsZXMgdG8gbXV0YXRlIHRoZW0gd2hpY2ggbGVkCi0gICAgICAgdG8gc3VidGxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgY29uY3VycmVuY3kgYnVncy4gRnVydGhlcm1vcmUsIHRoZQotICAgICAgIGludHJvZHVjdGlvbiBvZiBwcm90b2NvbCA0IGFuZCB0aGUgcHJlZmV0Y2hpbmcgb3B0aW1pemF0aW9uIHZpYSBwZWVrKCkKLSAgICAgICBzaWduaWZpY2FudGx5IHJlZHVjZWQgdGhlIG51bWJlciBvZiBmdW5jdGlvbiBjYWxscyB3ZSBkby4gVGh1cywgdGhlCi0gICAgICAgYmVuZWZpdHMgYmVjYW1lIG1hcmdpbmFsIGF0IGJlc3QuICovCi0KLSAgICBpZiAoYXJnX3R1cGxlID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ190dXBsZSwgMCwgb2JqKTsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ190dXBsZSwgTlVMTCk7Ci0gICAgUHlfQ0xFQVIoYXJnX3R1cGxlKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgb2JqKTsKKyAgICBQeV9ERUNSRUYob2JqKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIGludAotc3RhY2tfdW5kZXJmbG93KHZvaWQpCi17Ci0gICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAidW5waWNrbGluZyBzdGFjayB1bmRlcmZsb3ciKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qIEludGVybmFsIGRhdGEgdHlwZSB1c2VkIGFzIHRoZSB1bnBpY2tsaW5nIHN0YWNrLiAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X1ZBUl9IRUFECiAgICAgUHlPYmplY3QgKipkYXRhOworICAgIGludCBtYXJrX3NldDsgICAgICAgICAgLyogaXMgTUFSSyBzZXQ/ICovCisgICAgUHlfc3NpemVfdCBmZW5jZTsgICAgICAvKiBwb3NpdGlvbiBvZiB0b3AgTUFSSyBvciAwICovCiAgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7ICAvKiBudW1iZXIgb2Ygc2xvdHMgaW4gZGF0YSBhbGxvY2F0ZWQgKi8KIH0gUGRhdGE7CiAKQEAgLTM5OCw2ICszODksOCBAQAogICAgIGlmICghKHNlbGYgPSBQeU9iamVjdF9OZXcoUGRhdGEsICZQZGF0YV9UeXBlKSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1NJWkUoc2VsZikgPSAwOworICAgIHNlbGYtPm1hcmtfc2V0ID0gMDsKKyAgICBzZWxmLT5mZW5jZSA9IDA7CiAgICAgc2VsZi0+YWxsb2NhdGVkID0gODsKICAgICBzZWxmLT5kYXRhID0gUHlNZW1fTUFMTE9DKHNlbGYtPmFsbG9jYXRlZCAqIHNpemVvZihQeU9iamVjdCAqKSk7CiAgICAgaWYgKHNlbGYtPmRhdGEpCkBAIC00MTUsOCArNDA4LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IGkgPSBQeV9TSVpFKHNlbGYpOwogCi0gICAgaWYgKGNsZWFydG8gPCAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgYXNzZXJ0KGNsZWFydG8gPj0gc2VsZi0+ZmVuY2UpOwogICAgIGlmIChjbGVhcnRvID49IGkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC00NTIsNiArNDQ0LDE3IEBACiAgICAgcmV0dXJuIC0xOwogfQogCitzdGF0aWMgaW50CitQZGF0YV9zdGFja191bmRlcmZsb3coUGRhdGEgKnNlbGYpCit7CisgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5tYXJrX3NldCA/CisgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE1BUksgZm91bmQiIDoKKyAgICAgICAgICAgICAgICAgICAgInVucGlja2xpbmcgc3RhY2sgdW5kZXJmbG93Iik7CisgICAgcmV0dXJuIC0xOworfQorCiAvKiBEIGlzIGEgUGRhdGEqLiAgUG9wIHRoZSB0b3Btb3N0IGVsZW1lbnQgYW5kIHN0b3JlIGl0IGludG8gViwgd2hpY2gKICAqIG11c3QgYmUgYW4gbHZhbHVlIGhvbGRpbmcgUHlPYmplY3QqLiAgT24gc3RhY2sgdW5kZXJmbG93LCBVbnBpY2tsaW5nRXJyb3IKICAqIGlzIHJhaXNlZCBhbmQgViBpcyBzZXQgdG8gTlVMTC4KQEAgLTQ1OSw5ICs0NjIsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFBkYXRhX3BvcChQZGF0YSAqc2VsZikKIHsKLSAgICBpZiAoUHlfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJiYWQgcGlja2xlIGRhdGEiKTsKKyAgICBpZiAoUHlfU0laRShzZWxmKSA8PSBzZWxmLT5mZW5jZSkgeworICAgICAgICBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gc2VsZi0+ZGF0YVstLVB5X1NJWkUoc2VsZildOwpAQCAtNDkzLDYgKzQ5NSwxMCBAQAogICAgIFB5T2JqZWN0ICp0dXBsZTsKICAgICBQeV9zc2l6ZV90IGxlbiwgaSwgajsKIAorICAgIGlmIChzdGFydCA8IHNlbGYtPmZlbmNlKSB7CisgICAgICAgIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGxlbiA9IFB5X1NJWkUoc2VsZikgLSBzdGFydDsKICAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC04NjAsNyArODY2LDcgQEAKIHsKICAgICBzaXplX3QgaTsKIAotICAgIGFzc2VydChzaXplb2Yoc2l6ZV90KSA8PSA4KTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHNpemVfdCk7IGkrKykgewogICAgICAgICBvdXRbaV0gPSAodW5zaWduZWQgY2hhcikoKHZhbHVlID4+ICg4ICogaSkpICYgMHhmZik7CkBAIC0xMDg2LDYgKzEwOTIsMTQgQEAKIH0KIAogc3RhdGljIGludAorYmFkX3JlYWRsaW5lKHZvaWQpCit7CisgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAicGlja2xlIGRhdGEgd2FzIHRydW5jYXRlZCIpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludAogX1VucGlja2xlcl9Ta2lwQ29uc3VtZWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CkBAIC0xMTM0LDkgKzExNDgsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAobiA9PSBSRUFEX1dIT0xFX0xJTkUpIHsKLSAgICAgICAgUHlPYmplY3QgKmVtcHR5X3R1cGxlID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGRhdGEgPSBQeU9iamVjdF9DYWxsKHNlbGYtPnJlYWRsaW5lLCBlbXB0eV90dXBsZSwgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihlbXB0eV90dXBsZSk7CisgICAgICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKHNlbGYtPnJlYWRsaW5lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICpsZW47CkBAIC0xMTc0LDYgKzExODYsMzYgQEAKICAgICByZXR1cm4gcmVhZF9zaXplOwogfQogCisvKiBEb24ndCBjYWxsIGl0IGRpcmVjdGx5OiB1c2UgX1VucGlja2xlcl9SZWFkKCkgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitfVW5waWNrbGVyX1JlYWRJbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqKnMsIFB5X3NzaXplX3QgbikKK3sKKyAgICBQeV9zc2l6ZV90IG51bV9yZWFkOworCisgICAgKnMgPSBOVUxMOworICAgIGlmIChzZWxmLT5uZXh0X3JlYWRfaWR4ID4gUFlfU1NJWkVfVF9NQVggLSBuKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVhZCB3b3VsZCBvdmVyZmxvdyAoaW52YWxpZCBieXRlY29kZSkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIFRoaXMgY2FzZSBpcyBoYW5kbGVkIGJ5IHRoZSBfVW5waWNrbGVyX1JlYWQoKSBtYWNybyBmb3IgZWZmaWNpZW5jeSAqLworICAgIGFzc2VydChzZWxmLT5uZXh0X3JlYWRfaWR4ICsgbiA+IHNlbGYtPmlucHV0X2xlbik7CisKKyAgICBpZiAoIXNlbGYtPnJlYWQpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKKworICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgbik7CisgICAgaWYgKG51bV9yZWFkIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChudW1fcmVhZCA8IG4pCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKKyAgICAqcyA9IHNlbGYtPmlucHV0X2J1ZmZlcjsKKyAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbjsKKyAgICByZXR1cm4gbjsKK30KKwogLyogUmVhZCBgbmAgYnl0ZXMgZnJvbSB0aGUgdW5waWNrbGVyJ3MgZGF0YSBzb3VyY2UsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiBgKnNgLgogCiAgICBUaGlzIHNob3VsZCBiZSB1c2VkIGZvciBhbGwgZGF0YSByZWFkcywgcmF0aGVyIHRoYW4gYWNjZXNzaW5nIHRoZSB1bnBpY2tsZXIncwpAQCAtMTE4NywzOCArMTIyOSwxMiBAQAogCiAgICBSZXR1cm5zIC0xICh3aXRoIGFuIGV4Y2VwdGlvbiBzZXQpIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUKICAgIG51bWJlciBvZiBjaGFycyByZWFkLiAqLwotc3RhdGljIFB5X3NzaXplX3QKLV9VbnBpY2tsZXJfUmVhZChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKipzLCBQeV9zc2l6ZV90IG4pCi17Ci0gICAgUHlfc3NpemVfdCBudW1fcmVhZDsKLQotICAgICpzID0gTlVMTDsKLSAgICBpZiAoc2VsZi0+bmV4dF9yZWFkX2lkeCA+IFBZX1NTSVpFX1RfTUFYIC0gbikgewotICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQgd291bGQgb3ZlcmZsb3cgKGludmFsaWQgYnl0ZWNvZGUpIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHNlbGYtPm5leHRfcmVhZF9pZHggKyBuIDw9IHNlbGYtPmlucHV0X2xlbikgewotICAgICAgICAqcyA9IHNlbGYtPmlucHV0X2J1ZmZlciArIHNlbGYtPm5leHRfcmVhZF9pZHg7Ci0gICAgICAgIHNlbGYtPm5leHRfcmVhZF9pZHggKz0gbjsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotICAgIGlmICghc2VsZi0+cmVhZCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfRU9GRXJyb3IsICJSYW4gb3V0IG9mIGlucHV0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBuKTsKLSAgICBpZiAobnVtX3JlYWQgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKG51bV9yZWFkIDwgbikgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfRU9GRXJyb3IsICJSYW4gb3V0IG9mIGlucHV0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXI7Ci0gICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG47Ci0gICAgcmV0dXJuIG47Ci19CisjZGVmaW5lIF9VbnBpY2tsZXJfUmVhZChzZWxmLCBzLCBuKSBcCisgICAgKCgobikgPD0gKHNlbGYpLT5pbnB1dF9sZW4gLSAoc2VsZiktPm5leHRfcmVhZF9pZHgpICAgICAgXAorICAgICA/ICgqKHMpID0gKHNlbGYpLT5pbnB1dF9idWZmZXIgKyAoc2VsZiktPm5leHRfcmVhZF9pZHgsIFwKKyAgICAgICAgKHNlbGYpLT5uZXh0X3JlYWRfaWR4ICs9IChuKSwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChuKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA6IF9VbnBpY2tsZXJfUmVhZEltcGwoc2VsZiwgKHMpLCAobikpKQogCiBzdGF0aWMgUHlfc3NpemVfdAogX1VucGlja2xlcl9Db3B5TGluZShVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKmxpbmUsIFB5X3NzaXplX3QgbGVuLApAQCAtMTIzOCw3ICsxMjU0LDcgQEAKIH0KIAogLyogUmVhZCBhIGxpbmUgZnJvbSB0aGUgaW5wdXQgc3RyZWFtL2J1ZmZlci4gSWYgd2UgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dAotICAgYmVmb3JlIGhpdHRpbmcgXG4sIHJldHVybiB0aGUgZGF0YSB3ZSBmb3VuZC4KKyAgIGJlZm9yZSBoaXR0aW5nIFxuLCByYWlzZSBhbiBlcnJvci4KIAogICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJzIHJlYWQsIG9yIC0xIG9uIGZhaWx1cmUuICovCiBzdGF0aWMgUHlfc3NpemVfdApAQCAtMTI1NCwyMCArMTI3MCwxNiBAQAogICAgICAgICAgICAgcmV0dXJuIF9VbnBpY2tsZXJfQ29weUxpbmUoc2VsZiwgbGluZV9zdGFydCwgbnVtX3JlYWQsIHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHNlbGYtPnJlYWQpIHsKLSAgICAgICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBSRUFEX1dIT0xFX0xJTkUpOwotICAgICAgICBpZiAobnVtX3JlYWQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbnVtX3JlYWQ7Ci0gICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7Ci0gICAgfQorICAgIGlmICghc2VsZi0+cmVhZCkKKyAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOwogCi0gICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlJ3ZlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyaW5nLiBSZXR1cm4gdGhlCi0gICAgICAgcmVtYWluaW5nIHN0cmluZyBhbmQgbGV0IHRoZSBjYWxsZXIgZmlndXJlIGl0IG91dC4gKi8KLSAgICAqcmVzdWx0ID0gc2VsZi0+aW5wdXRfYnVmZmVyICsgc2VsZi0+bmV4dF9yZWFkX2lkeDsKLSAgICBudW1fcmVhZCA9IGkgLSBzZWxmLT5uZXh0X3JlYWRfaWR4OwotICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBpOwotICAgIHJldHVybiBudW1fcmVhZDsKKyAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIFJFQURfV0hPTEVfTElORSk7CisgICAgaWYgKG51bV9yZWFkIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChudW1fcmVhZCA9PSAwIHx8IHNlbGYtPmlucHV0X2J1ZmZlcltudW1fcmVhZCAtIDFdICE9ICdcbicpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKKyAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbnVtX3JlYWQ7CisgICAgcmV0dXJuIF9VbnBpY2tsZXJfQ29weUxpbmUoc2VsZiwgc2VsZi0+aW5wdXRfYnVmZmVyLCBudW1fcmVhZCwgcmVzdWx0KTsKIH0KIAogLyogUmV0dXJucyAtMSAod2l0aCBhbiBleGNlcHRpb24gc2V0KSBvbiBmYWlsdXJlLCAwIG9uIHN1Y2Nlc3MuIFRoZSBtZW1vIGFycmF5CkBAIC0yMDk2LDM4ICsyMTA4LDM1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmF3X3VuaWNvZGVfZXNjYXBlKFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0gICAgc2l6ZV90IGV4cGFuZHNpemU7CiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvYmopOwogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvYmopOwotICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQotICAgICAgICBleHBhbmRzaXplID0gMTA7Ci0gICAgZWxzZQotICAgICAgICBleHBhbmRzaXplID0gNjsKIAotICAgIGlmICgoc2l6ZV90KXNpemUgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOwotICAgIGlmIChyZXByID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiByZXByOwotICAgIGFzc2VydChQeV9SRUZDTlQocmVwcikgPT0gMSk7CisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKLSAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICAvKiAtMTogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcCwgMTAtMSk7CisgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CkBAIC0yMTM5LDggKzIxNDgsMTMgQEAKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCisgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycywgJ1xcJyBhbmQgJ1xuJyB0byAnXHV4eHh4JyAqLwogICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CisgICAgICAgICAgICAvKiAtMTogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcCwgNi0xKTsKKyAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKQEAgLTIxNTIsMTQgKzIxNjYsMTYgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiByZXByOworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKKworZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGludAotd3JpdGVfdXRmOChQaWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICpkYXRhLCBQeV9zc2l6ZV90IHNpemUpCit3cml0ZV91dGY4KFBpY2tsZXJPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmRhdGEsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBjaGFyIGhlYWRlcls5XTsKICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTI4NTgsNyArMjg3NCw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CiAKLSAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCAiKCkiKTsKKyAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihpdGVtcyk7CkBAIC0zNTM1LDExICszNTUxLDkgQEAKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewotICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwotICAgICAgICAgICAgICAgIHVzZV9uZXdvYmpfZXggPSBQeVVuaWNvZGVfQ29tcGFyZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CisgICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOwogICAgICAgICAgICAgaWYgKCF1c2VfbmV3b2JqX2V4KSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAgICAgICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9Db21wYXJlKApAQCAtMzU4MywxMSArMzU5Nyw1OCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNhdmUoc2VsZiwgY2xzLCAwKSA8IDAgfHwKLSAgICAgICAgICAgIHNhdmUoc2VsZiwgYXJncywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBzYXZlKHNlbGYsIGt3YXJncywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBfUGlja2xlcl9Xcml0ZShzZWxmLCAmbmV3b2JqX2V4X29wLCAxKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKKyAgICAgICAgICAgIGlmIChzYXZlKHNlbGYsIGNscywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgc2F2ZShzZWxmLCBhcmdzLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBzYXZlKHNlbGYsIGt3YXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm5ld29ial9leF9vcCwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3M7CisgICAgICAgICAgICBQeU9iamVjdCAqY2xzX25ldzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworCisgICAgICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoUHlfU0laRShhcmdzKSArIDIpOworICAgICAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgIGNsc19uZXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uZXdfXyk7CisgICAgICAgICAgICBpZiAoY2xzX25ldyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgY2xzX25ldyk7CisgICAgICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMSwgY2xzKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKGFyZ3MpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSArIDIsIGl0ZW0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0NhbGwoc3QtPnBhcnRpYWwsIG5ld2FyZ3MsIGt3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgICAgICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNhdmUoc2VsZiwgY2FsbGFibGUsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIHNhdmUoc2VsZiwgbmV3YXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJnJlZHVjZV9vcCwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmICh1c2VfbmV3b2JqKSB7CkBAIC0zODc3LDEwICszOTM4LDcgQEAKICAgICAgICAgICAgIC8qIENoZWNrIGZvciBhIF9fcmVkdWNlX18gbWV0aG9kLiAqLwogICAgICAgICAgICAgcmVkdWNlX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19yZWR1Y2VfXyk7CiAgICAgICAgICAgICBpZiAocmVkdWNlX2Z1bmMgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgICAgIHJlZHVjZV92YWx1ZSA9IFB5T2JqZWN0X0NhbGwocmVkdWNlX2Z1bmMsIGVtcHR5X3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVtcHR5X3R1cGxlKTsKKyAgICAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKHJlZHVjZV9mdW5jKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+UGlja2xpbmdFcnJvciwKQEAgLTQzOTcsNyArNDQ1NSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIidtZW1vJyBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBQaWNrbGVyTWVtb1Byb3h5IG9iamVjdCIKKyAgICAgICAgICAgICAgICAgICAgICInbWVtbycgYXR0cmlidXRlIG11c3QgYmUgYSBQaWNrbGVyTWVtb1Byb3h5IG9iamVjdCIKICAgICAgICAgICAgICAgICAgICAgICJvciBkaWN0LCBub3QgJS4yMDBzIiwgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTQ0MjYsOCArNDQ4NCw2IEBACiBzdGF0aWMgaW50CiBQaWNrbGVyX3NldF9wZXJzaWQoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBkZWxldGlvbiBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC00NDM5LDEwICs0NDk1LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHRtcCA9IHNlbGYtPnBlcnNfZnVuYzsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNlbGYtPnBlcnNfZnVuYyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsgICAgICAvKiBzZWxmLT5wZXJzX2Z1bmMgY2FuIGJlIE5VTEwsIHNvIGJlIGNhcmVmdWwuICovCisgICAgUHlfWFNFVFJFRihzZWxmLT5wZXJzX2Z1bmMsIHZhbHVlKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDUyNCwxMyArNDU3OCwxOSBAQAogc3RhdGljIFB5X3NzaXplX3QKIG1hcmtlcihVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgIFB5X3NzaXplX3QgbWFyazsKKwogICAgIGlmIChzZWxmLT5udW1fbWFya3MgPCAxKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJjb3VsZCBub3QgZmluZCBNQVJLIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXR1cm4gc2VsZi0+bWFya3NbLS1zZWxmLT5udW1fbWFya3NdOworICAgIG1hcmsgPSBzZWxmLT5tYXJrc1stLXNlbGYtPm51bV9tYXJrc107CisgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gc2VsZi0+bnVtX21hcmtzICE9IDA7CisgICAgc2VsZi0+c3RhY2stPmZlbmNlID0gc2VsZi0+bnVtX21hcmtzID8KKyAgICAgICAgICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdIDogMDsKKyAgICByZXR1cm4gbWFyazsKIH0KIAogc3RhdGljIGludApAQCAtNDU0MSwxNCArNDYwMSw2IEBACiB9CiAKIHN0YXRpYyBpbnQKLWJhZF9yZWFkbGluZSh2b2lkKQotewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInBpY2tsZSBkYXRhIHdhcyB0cnVuY2F0ZWQiKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBpbnQKIGxvYWRfaW50KFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdmFsdWU7CkBAIC00OTkxLDcgKzUwNDMsNyBAQAogICAgIFB5T2JqZWN0ICp0dXBsZTsKIAogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8IGxlbikKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKIAogICAgIHR1cGxlID0gUGRhdGFfcG9wdHVwbGUoc2VsZi0+c3RhY2ssIFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gbGVuKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTUwNzMsNiArNTEyNSwxMyBAQAogICAgIGlmICgoZGljdCA9IFB5RGljdF9OZXcoKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCisgICAgaWYgKChqIC0gaSkgJSAyICE9IDApIHsKKyAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgIm9kZCBudW1iZXIgb2YgaXRlbXMgZm9yIERJQ1QiKTsKKyAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgZm9yIChrID0gaSArIDE7IGsgPCBqOyBrICs9IDIpIHsKICAgICAgICAga2V5ID0gc2VsZi0+c3RhY2stPmRhdGFbayAtIDFdOwogICAgICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW2tdOwpAQCAtNTE0MCw3ICs1MTk5LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gaSA8IDEpCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICBhcmdzID0gUGRhdGFfcG9wdHVwbGUoc2VsZi0+c3RhY2ssIGkgKyAxKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQpAQCAtNTQ2MywxMiArNTUyMiwxNSBAQAogICAgICAqLwogICAgIGlmIChzZWxmLT5udW1fbWFya3MgPiAwICYmIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdID09IGxlbikgewogICAgICAgICBzZWxmLT5udW1fbWFya3MtLTsKLSAgICB9IGVsc2UgaWYgKGxlbiA+IDApIHsKKyAgICAgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gc2VsZi0+bnVtX21hcmtzICE9IDA7CisgICAgICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IHNlbGYtPm51bV9tYXJrcyA/CisgICAgICAgICAgICAgICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzIC0gMV0gOiAwOworICAgIH0gZWxzZSBpZiAobGVuIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CisgICAgZWxzZSB7CiAgICAgICAgIGxlbi0tOwogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+c3RhY2stPmRhdGFbbGVuXSk7CiAgICAgICAgIFB5X1NJWkUoc2VsZi0+c3RhY2spID0gbGVuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC01NDkwLDEwICs1NTUyLDEwIEBACiBsb2FkX2R1cChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmxhc3Q7Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKIAotICAgIGlmICgobGVuID0gUHlfU0laRShzZWxmLT5zdGFjaykpIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAobGVuIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgbGFzdCA9IHNlbGYtPnN0YWNrLT5kYXRhW2xlbiAtIDFdOwogICAgIFBEQVRBX0FQUEVORChzZWxmLT5zdGFjaywgbGFzdCwgLTEpOwogICAgIHJldHVybiAwOwpAQCAtNTY3Niw4ICs1NzM4LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChsZW4gPCAyKQogICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBrZXkgPSBQeUxvbmdfRnJvbVN0cmluZyhzLCBOVUxMLCAxMCk7CkBAIC01NzA1LDggKzU3NjcsOCBAQAogICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBpZHggPSBQeV9DSEFSTUFTSyhzWzBdKTsKQEAgLTU3MjQsOCArNTc4Niw4IEBACiAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgNCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHZhbHVlID0gc2VsZi0+c3RhY2stPmRhdGFbUHlfU0laRShzZWxmLT5zdGFjaykgLSAxXTsKIAogICAgIGlkeCA9IGNhbGNfYmluc2l6ZShzLCA0KTsKQEAgLTU3NDMsOCArNTgwNSw4IEBACiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICByZXR1cm4gX1VucGlja2xlcl9NZW1vUHV0KHNlbGYsIHNlbGYtPm1lbW9fbGVuLCB2YWx1ZSk7CkBAIC01NzU4LDggKzU4MjAsOCBAQAogICAgIFB5X3NzaXplX3QgbGVuLCBpOwogCiAgICAgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7Ci0gICAgaWYgKHggPiBsZW4gfHwgeCA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKHggPiBsZW4gfHwgeCA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGlmIChsZW4gPT0geCkgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4MDgsOCArNTg3MCw4IEBACiBzdGF0aWMgaW50CiBsb2FkX2FwcGVuZChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHJldHVybiBkb19hcHBlbmQoc2VsZiwgUHlfU0laRShzZWxmLT5zdGFjaykgLSAxKTsKIH0KIApAQCAtNTgzMSw4ICs1ODkzLDggQEAKICAgICBpbnQgc3RhdHVzID0gMDsKIAogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmICh4ID4gbGVuIHx8IHggPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmICh4ID4gbGVuIHx8IHggPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsKQEAgLTU4ODUsOCArNTk0Nyw4IEBACiAgICAgaWYgKG1hcmsgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7Ci0gICAgaWYgKG1hcmsgPiBsZW4gfHwgbWFyayA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKG1hcmsgPiBsZW4gfHwgbWFyayA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGlmIChsZW4gPT0gbWFyaykgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU5NDEsOCArNjAwMyw4IEBACiAgICAgLyogU3RhY2sgaXMgLi4uIGluc3RhbmNlLCBzdGF0ZS4gIFdlIHdhbnQgdG8gbGVhdmUgaW5zdGFuY2UgYXQKICAgICAgKiB0aGUgc3RhY2sgdG9wLCBwb3NzaWJseSBtdXRhdGVkIHZpYSBpbnN0YW5jZS5fX3NldHN0YXRlX18oc3RhdGUpLgogICAgICAqLwotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8IDIpCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgLSAyIDwgc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKIAogICAgIFBEQVRBX1BPUChzZWxmLT5zdGFjaywgc3RhdGUpOwogICAgIGlmIChzdGF0ZSA9PSBOVUxMKQpAQCAtNjA3OCw3ICs2MTQwLDggQEAKICAgICAgICAgc2VsZi0+bWFya3Nfc2l6ZSA9IChQeV9zc2l6ZV90KWFsbG9jOwogICAgIH0KIAotICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcysrXSA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IDE7CisgICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzKytdID0gc2VsZi0+c3RhY2stPmZlbmNlID0gUHlfU0laRShzZWxmLT5zdGFjayk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTYxNjEsNiArNjIyNCw4IEBACiAgICAgY2hhciAqcyA9IE5VTEw7CiAKICAgICBzZWxmLT5udW1fbWFya3MgPSAwOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IDA7CisgICAgc2VsZi0+c3RhY2stPmZlbmNlID0gMDsKICAgICBzZWxmLT5wcm90byA9IDA7CiAgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spKQogICAgICAgICBQZGF0YV9jbGVhcihzZWxmLT5zdGFjaywgMCk7CkBAIC02MTczLDggKzYyMzgsMTMgQEAKICAgICBjYXNlIG9wY29kZTogaWYgKGxvYWRfZnVuYyhzZWxmLCAoYXJnKSkgPCAwKSBicmVhazsgY29udGludWU7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCAxKSA8IDApCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgMSkgPCAwKSB7CisgICAgICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhzdC0+VW5waWNrbGluZ0Vycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19FT0ZFcnJvciwgIlJhbiBvdXQgb2YgaW5wdXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICgoZW51bSBvcGNvZGUpc1swXSkgewogICAgICAgICBPUChOT05FLCBsb2FkX25vbmUpCkBAIC02MjQ2LDE1ICs2MzE2LDE5IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKHNbMF0gPT0gJ1wwJykgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfRU9GRXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+VW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJyVjJy4iLCBzWzBdKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnM7CisgICAgICAgICAgICAgICAgaWYgKDB4MjAgPD0gYyAmJiBjIDw9IDB4N2UgJiYgYyAhPSAnXCcnICYmIGMgIT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxvYWQga2V5LCAnJWMnLiIsIGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJ1xceCUwMngnLiIsIGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgLyogYW5kIHdlIGFyZSBkb25lISAqLwpAQCAtNjg2NSw4ICs2OTM5LDYgQEAKIHN0YXRpYyBpbnQKIFVucGlja2xlcl9zZXRfcGVyc2xvYWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIGRlbGV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTY4NzksMTAgKzY5NTEsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgdG1wID0gc2VsZi0+cGVyc19mdW5jOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgc2VsZi0+cGVyc19mdW5jID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOyAgICAgIC8qIHNlbGYtPnBlcnNfZnVuYyBjYW4gYmUgTlVMTCwgc28gYmUgY2FyZWZ1bC4gKi8KKyAgICBQeV9YU0VUUkVGKHNlbGYtPnBlcnNfZnVuYywgdmFsdWUpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYyBiL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCmluZGV4IGMwMjQwZTIuLjUwMDdhMzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCisrKyBiL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCkBAIC0yMSw4ICsyMSw3IEBACiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKFNZU19nZXRkZW50czY0KQotLyogQW5kcm9pZCBkb2Vzbid0IGV4cG9zZSBzeXNjYWxscywgYWRkIHRoZSBkZWZpbml0aW9uIG1hbnVhbGx5LiAqLworI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmIF9fQU5EUk9JRF9BUElfXyA8IDIxICYmICFkZWZpbmVkKFNZU19nZXRkZW50czY0KQogIyBpbmNsdWRlIDxzeXMvbGludXgtc3lzY2FsbHMuaD4KICMgZGVmaW5lIFNZU19nZXRkZW50czY0ICBfX05SX2dldGRlbnRzNjQKICNlbmRpZgpAQCAtNzIsNyArNzEsNyBAQAogCiAvKiBDb252ZXJ0IEFTQ0lJIHRvIGEgcG9zaXRpdmUgaW50LCBubyBsaWJjIGNhbGwuIG5vIG92ZXJmbG93LiAtMSBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLV9wb3NfaW50X2Zyb21fYXNjaWkoY2hhciAqbmFtZSkKK19wb3NfaW50X2Zyb21fYXNjaWkoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBpbnQgbnVtID0gMDsKICAgICB3aGlsZSAoKm5hbWUgPj0gJzAnICYmICpuYW1lIDw9ICc5JykgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCA5NWFkNGE0Li42Mzc1OWQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtNjgsOSArNjgsOCBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgIC8qIGZvciBzZWVkaW5nIHRvIGN1cnJlbnQgdGltZSAqLwotCi0jaWZuZGVmIFBZX1VJTlQzMl9UCi0jICBlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKKyNpZmRlZiBIQVZFX1BST0NFU1NfSAorIyAgaW5jbHVkZSA8cHJvY2Vzcy5oPiAgICAgICAgICAvKiBuZWVkZWQgZm9yIGdldHBpZCgpICovCiAjZW5kaWYKIAogLyogUGVyaW9kIHBhcmFtZXRlcnMgLS0gVGhlc2UgYXJlIGFsbCBtYWdpYy4gIERvbid0IGNoYW5nZS4gKi8KQEAgLTgzLDcgKzgyLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgaW50IGluZGV4OwotICAgIFBZX1VJTlQzMl9UIHN0YXRlW05dOworICAgIHVpbnQzMl90IHN0YXRlW05dOwogfSBSYW5kb21PYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUmFuZG9tX1R5cGU7CkBAIC05NSwxMyArOTQsMTMgQEAKIAogCiAvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi1zdGF0aWMgUFlfVUlOVDMyX1QKK3N0YXRpYyB1aW50MzJfdAogZ2VucmFuZF9pbnQzMihSYW5kb21PYmplY3QgKnNlbGYpCiB7Ci0gICAgUFlfVUlOVDMyX1QgeTsKLSAgICBzdGF0aWMgUFlfVUlOVDMyX1QgbWFnMDFbMl09ezB4MFUsIE1BVFJJWF9BfTsKKyAgICB1aW50MzJfdCB5OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYWcwMVsyXSA9IHsweDBVLCBNQVRSSVhfQX07CiAgICAgLyogbWFnMDFbeF0gPSB4ICogTUFUUklYX0EgIGZvciB4PTAsMSAqLwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIGlmIChzZWxmLT5pbmRleCA+PSBOKSB7IC8qIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi8KQEAgLTEzNiwyMSArMTM1LDIxIEBACiAgKiBvcHRpbWl6ZSB0aGUgZGl2aXNpb24gYXdheSBhdCBjb21waWxlLXRpbWUuICA2NzEwODg2NCBpcyAyKioyNi4gIEluCiAgKiBlZmZlY3QsIGEgY29udGFpbnMgMjcgcmFuZG9tIGJpdHMgc2hpZnRlZCBsZWZ0IDI2LCBhbmQgYiBmaWxscyBpbiB0aGUKICAqIGxvd2VyIDI2IGJpdHMgb2YgdGhlIDUzLWJpdCBudW1lcmF0b3IuCi0gKiBUaGUgb3JnaW5hbCBjb2RlIGNyZWRpdGVkIElzYWt1IFdhZGEgZm9yIHRoaXMgYWxnb3JpdGhtLCAyMDAyLzAxLzA5LgorICogVGhlIG9yaWdpbmFsIGNvZGUgY3JlZGl0ZWQgSXNha3UgV2FkYSBmb3IgdGhpcyBhbGdvcml0aG0sIDIwMDIvMDEvMDkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiByYW5kb21fcmFuZG9tKFJhbmRvbU9iamVjdCAqc2VsZikKIHsKLSAgICBQWV9VSU5UMzJfVCBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKKyAgICB1aW50MzJfdCBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5MjU0NzQwOTkyLjApKTsKIH0KIAogLyogaW5pdGlhbGl6ZXMgbXRbTl0gd2l0aCBhIHNlZWQgKi8KIHN0YXRpYyB2b2lkCi1pbml0X2dlbnJhbmQoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBzKQoraW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgdWludDMyX3QgcykKIHsKICAgICBpbnQgbXRpOwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIG10WzBdPSBzOwpAQCAtMTY5LDExICsxNjgsMTEgQEAKIC8qIGluaXRpYWxpemUgYnkgYW4gYXJyYXkgd2l0aCBhcnJheS1sZW5ndGggKi8KIC8qIGluaXRfa2V5IGlzIHRoZSBhcnJheSBmb3IgaW5pdGlhbGl6aW5nIGtleXMgKi8KIC8qIGtleV9sZW5ndGggaXMgaXRzIGxlbmd0aCAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWluaXRfYnlfYXJyYXkoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBpbml0X2tleVtdLCBzaXplX3Qga2V5X2xlbmd0aCkKK3N0YXRpYyB2b2lkCitpbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgdWludDMyX3QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCiB7CiAgICAgc2l6ZV90IGksIGosIGs7ICAgICAgIC8qIHdhcyBzaWduZWQgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIFJESCAxMi8xNi8yMDAyICovCi0gICAgUFlfVUlOVDMyX1QgKm10OworICAgIHVpbnQzMl90ICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7CiAgICAgaW5pdF9nZW5yYW5kKHNlbGYsIDE5NjUwMjE4VSk7CkBAIC0xODEsMjEgKzE4MCwxOSBAQAogICAgIGsgPSAoTj5rZXlfbGVuZ3RoID8gTiA6IGtleV9sZW5ndGgpOwogICAgIGZvciAoOyBrOyBrLS0pIHsKICAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTY2NDUyNVUpKQotICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKFBZX1VJTlQzMl9UKWo7IC8qIG5vbiBsaW5lYXIgKi8KKyAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArICh1aW50MzJfdClqOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsgaisrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgICAgICBpZiAoaj49a2V5X2xlbmd0aCkgaj0wOwogICAgIH0KICAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKICAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVUpKQotICAgICAgICAgICAgICAgICAtIChQWV9VSU5UMzJfVClpOyAvKiBub24gbGluZWFyICovCisgICAgICAgICAgICAgICAgIC0gKHVpbnQzMl90KWk7IC8qIG5vbiBsaW5lYXIgKi8KICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgIH0KIAogICAgIG10WzBdID0gMHg4MDAwMDAwMFU7IC8qIE1TQiBpcyAxOyBhc3N1cmluZyBub24temVybyBpbml0aWFsIGFycmF5ICovCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwogfQogCiAvKgpAQCAtMjAzLDEyICsyMDAsNDMgQEAKICAqIFR3aXN0ZXIgZG93bmxvYWQuCiAgKi8KIAorc3RhdGljIGludAorcmFuZG9tX3NlZWRfdXJhbmRvbShSYW5kb21PYmplY3QgKnNlbGYpCit7CisgICAgUFlfVUlOVDMyX1Qga2V5W05dOworCisgICAgaWYgKF9QeU9TX1VSYW5kb21Ob25ibG9jayhrZXksIHNpemVvZihrZXkpKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwgUHlfQVJSQVlfTEVOR1RIKGtleSkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorcmFuZG9tX3NlZWRfdGltZV9waWQoUmFuZG9tT2JqZWN0ICpzZWxmKQoreworICAgIF9QeVRpbWVfdCBub3c7CisgICAgdWludDMyX3Qga2V5WzVdOworCisgICAgbm93ID0gX1B5VGltZV9HZXRTeXN0ZW1DbG9jaygpOworICAgIGtleVswXSA9IChQWV9VSU5UMzJfVCkobm93ICYgMHhmZmZmZmZmZlUpOworICAgIGtleVsxXSA9IChQWV9VSU5UMzJfVCkobm93ID4+IDMyKTsKKworICAgIGtleVsyXSA9IChQWV9VSU5UMzJfVClnZXRwaWQoKTsKKworICAgIG5vdyA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICBrZXlbM10gPSAoUFlfVUlOVDMyX1QpKG5vdyAmIDB4ZmZmZmZmZmZVKTsKKyAgICBrZXlbNF0gPSAoUFlfVUlOVDMyX1QpKG5vdyA+PiAzMik7CisKKyAgICBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwgUHlfQVJSQVlfTEVOR1RIKGtleSkpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX3NlZWQoUmFuZG9tT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsgICAgICAgICAgICAvKiBndWlsdHkgdW50aWwgcHJvdmVkIGlubm9jZW50ICovCiAgICAgUHlPYmplY3QgKm4gPSBOVUxMOwotICAgIFBZX1VJTlQzMl9UICprZXkgPSBOVUxMOworICAgIHVpbnQzMl90ICprZXkgPSBOVUxMOwogICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkOwogICAgIGludCByZXM7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CkBAIC0yMTYsMTQgKzI0NCwxNyBAQAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNlZWQiLCAwLCAxLCAmYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoYXJnID09IE5VTEwgfHwgYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgdGltZV90IG5vdzsKKyAgICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChyYW5kb21fc2VlZF91cmFuZG9tKHNlbGYpID49IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgdGltZSgmbm93KTsKLSAgICAgICAgaW5pdF9nZW5yYW5kKHNlbGYsIChQWV9VSU5UMzJfVClub3cpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICAgICAgLyogUmVhZGluZyBzeXN0ZW0gZW50cm9weSBmYWlsZWQsIGZhbGwgYmFjayBvbiB0aGUgd29yc3QgZW50cm9weToKKyAgICAgICAgICAgICAgIHVzZSB0aGUgY3VycmVudCB0aW1lIGFuZCBwcm9jZXNzIGlkZW50aWZpZXIuICovCisgICAgICAgICAgICByYW5kb21fc2VlZF90aW1lX3BpZChzZWxmKTsKKyAgICAgICAgfQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CisKICAgICAvKiBUaGlzIGFsZ29yaXRobSByZWxpZXMgb24gdGhlIG51bWJlciBiZWluZyB1bnNpZ25lZC4KICAgICAgKiBTbzogaWYgdGhlIGFyZyBpcyBhIFB5TG9uZywgdXNlIGl0cyBhYnNvbHV0ZSB2YWx1ZS4KICAgICAgKiBPdGhlcndpc2UgdXNlIGl0cyBoYXNoIHZhbHVlLCBjYXN0IHRvIHVuc2lnbmVkLgpAQCAtMjQ4LDcgKzI3OSw3IEBACiAgICAga2V5dXNlZCA9IGJpdHMgPT0gMCA/IDEgOiAoYml0cyAtIDEpIC8gMzIgKyAxOwogCiAgICAgLyogQ29udmVydCBzZWVkIHRvIGJ5dGUgc2VxdWVuY2UuICovCi0gICAga2V5ID0gKFBZX1VJTlQzMl9UICopUHlNZW1fTWFsbG9jKChzaXplX3QpNCAqIGtleXVzZWQpOworICAgIGtleSA9ICh1aW50MzJfdCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKICAgICBpZiAoa2V5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBEb25lOwpAQCAtMjY3LDEzICsyOTgsMTcgQEAKICAgICAgICAgc2l6ZV90IGksIGo7CiAgICAgICAgIC8qIFJldmVyc2UgYW4gYXJyYXkuICovCiAgICAgICAgIGZvciAoaSA9IDAsIGogPSBrZXl1c2VkIC0gMTsgaSA8IGo7IGkrKywgai0tKSB7Ci0gICAgICAgICAgICBQWV9VSU5UMzJfVCB0bXAgPSBrZXlbaV07CisgICAgICAgICAgICB1aW50MzJfdCB0bXAgPSBrZXlbaV07CiAgICAgICAgICAgICBrZXlbaV0gPSBrZXlbal07CiAgICAgICAgICAgICBrZXlbal0gPSB0bXA7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICByZXN1bHQgPSBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwga2V5dXNlZCk7CisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIGtleXVzZWQpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJlc3VsdCA9IFB5X05vbmU7CisKIERvbmU6CiAgICAgUHlfWERFQ1JFRihuKTsKICAgICBQeU1lbV9GcmVlKGtleSk7CkBAIC0zMjksNyArMzY0LDcgQEAKICAgICAgICAgZWxlbWVudCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CiAgICAgICAgIGlmIChlbGVtZW50ID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAoUFlfVUlOVDMyX1QpZWxlbWVudDsKKyAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAodWludDMyX3QpZWxlbWVudDsKICAgICB9CiAKICAgICBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwpAQCAtMzQ5LDggKzM4NCw4IEBACiByYW5kb21fZ2V0cmFuZGJpdHMoUmFuZG9tT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgaywgaSwgd29yZHM7Ci0gICAgUFlfVUlOVDMyX1QgcjsKLSAgICBQWV9VSU5UMzJfVCAqd29yZGFycmF5OworICAgIHVpbnQzMl90IHI7CisgICAgdWludDMyX3QgKndvcmRhcnJheTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldHJhbmRiaXRzIiwgJmspKQpAQCAtMzY2LDcgKzQwMSw3IEBACiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhnZW5yYW5kX2ludDMyKHNlbGYpID4+ICgzMiAtIGspKTsKIAogICAgIHdvcmRzID0gKGsgLSAxKSAvIDMyICsgMTsKLSAgICB3b3JkYXJyYXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKKyAgICB3b3JkYXJyYXkgPSAodWludDMyX3QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKICAgICBpZiAod29yZGFycmF5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zY3Byb3h5LmMgYi9Nb2R1bGVzL19zY3Byb3h5LmMKaW5kZXggNjZiNmUzNC4uMWNlNGI3NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc2Nwcm94eS5jCisrKyBiL01vZHVsZXMvX3NjcHJveHkuYwpAQCAtNzEsMTYgKzcxLDEyIEBACiAgICAgcmVzdWx0ID0gUHlEaWN0X05ldygpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgZ290byBlcnJvcjsKIAotICAgIGlmICgma1NDUHJvcE5ldFByb3hpZXNFeGNsdWRlU2ltcGxlSG9zdG5hbWVzICE9IE5VTEwpIHsKLSAgICAgICAgYU51bSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5RGljdCwKLSAgICAgICAgICAgIGtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyk7Ci0gICAgICAgIGlmIChhTnVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIHYgPSBQeUJvb2xfRnJvbUxvbmcoMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKGNmbnVtX3RvX2ludDMyKGFOdW0pKTsKLSAgICAgICAgfQotICAgIH0gIGVsc2UgeworICAgIGFOdW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3QsCisgICAgICAgIGtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyk7CisgICAgaWYgKGFOdW0gPT0gTlVMTCkgewogICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIHYgPSBQeUJvb2xfRnJvbUxvbmcoY2ZudW1fdG9faW50MzIoYU51bSkpOwogICAgIH0KIAogICAgIGlmICh2ID09IE5VTEwpIGdvdG8gZXJyb3I7CkBAIC0xMzAsNyArMTI2LDcgQEAKIH0KIAogc3RhdGljIGludAotc2V0X3Byb3h5KFB5T2JqZWN0KiBwcm94aWVzLCBjaGFyKiBwcm90bywgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5RGljdCwKK3NldF9wcm94eShQeU9iamVjdCogcHJveGllcywgY29uc3QgY2hhciogcHJvdG8sIENGRGljdGlvbmFyeVJlZiBwcm94eURpY3QsCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW5hYmxlZEtleSwKICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBob3N0S2V5LCBDRlN0cmluZ1JlZiBwb3J0S2V5KQogewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0IGIvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNGIxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL1JFQURNRS50eHQKQEAgLTAsMCArMSwxMSBAQAorS2VjY2FrIENvZGUgUGFja2FnZQorPT09PT09PT09PT09PT09PT09PQorCitUaGUgZmlsZXMgaW4ga2NwIGFyZSB0YWtlbiBmcm9tIHRoZSBLZWNjYWsgQ29kZSBQYWNrYWdlLiBUaGV5IGhhdmUgYmVlbgorc2xpZ2h0bHkgdG8gYmUgQzg5IGNvbXBhdGlibGUuIFRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaGVhZGVyIGZpbGUKK0tlY2Nha1AtMTYwMC1TblAuaCBoYSBiZWVuIHJlbmFtZWQgdG8gS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIG9yCitLZWNjYWtQLTE2MDAtU25QLW9wdDY0LmguCisKK1RoZSA2NGJpdCBmaWxlcyB3ZXJlIGdlbmVyYXRlZCB3aXRoIGdlbmVyaWM2NGxjL2xpYmtlY2Nhay5hLnBhY2sgdGFyZ2V0LCB0aGUKKzMyYml0IGZpbGVzIHdpdGggZ2VuZXJpYzMybGMvbGlia2VjY2FrLmEucGFjay4KKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5IGIvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE3YzU2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2NsZWFudXAucHkKQEAgLTAsMCArMSw1MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMiAgIENocmlzdGlhbiBIZWltZXMgKGNocmlzdGlhbkBweXRob24ub3JnKQorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisjCisjIGNsZWFudXAgS2VjY2FrIHNvdXJjZXMKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKKworQ1BQMSA9IHJlLmNvbXBpbGUoIl4vLyguKikiKQorQ1BQMiA9IHJlLmNvbXBpbGUoIlwgLy8oLiopIikKKworU1RBVElDUyA9ICgidm9pZCAiLCAiaW50ICIsICJIYXNoUmV0dXJuICIsCisgICAgICAgICAgICJjb25zdCBVSU5UNjQgIiwgIlVJTlQxNiAiLCAiICAgIGludCBwcmVmaXgjIyIpCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0tFQ0NBSyA9IG9zLnBhdGguam9pbihIRVJFLCAia2NwIikKKworZGVmIGdldGZpbGVzKCk6CisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihLRUNDQUspOgorICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKEtFQ0NBSywgbmFtZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6CisgICAgICAgICAgICB5aWVsZCBuYW1lCisKK2RlZiBjbGVhbnVwKGYpOgorICAgIGJ1ZiA9IFtdCisgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgIyBtYXJrIGFsbCBmdW5jdGlvbnMgYW5kIGdsb2JhbCBkYXRhIGFzIHN0YXRpYworICAgICAgICAjaWYgbGluZS5zdGFydHN3aXRoKFNUQVRJQ1MpOgorICAgICAgICAjICAgIGJ1Zi5hcHBlbmQoInN0YXRpYyAiICsgbGluZSkKKyAgICAgICAgIyAgICBjb250aW51ZQorICAgICAgICAjIHJlbW92ZSBVSU5UNjQgdHlwZWRlZiwgd2UgaGF2ZSBvdXIgb3duCisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgidHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50Iik6CisgICAgICAgICAgICBidWYuYXBwZW5kKCIvKiAlcyAqL1xuIiAlIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMjIHJlbW92ZSAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIgorICAgICAgICBpZiAiYnJnX2VuZGlhbi5oIiBpbiBsaW5lOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLyogJXMgKi9cbiIgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIHRyYW5zZm9ybSBDKysgY29tbWVudHMgaW50byBBTlNJIEMgY29tbWVudHMKKyAgICAgICAgbGluZSA9IENQUDEuc3ViKHIiLypcMSAqL1xuIiwgbGluZSkKKyAgICAgICAgbGluZSA9IENQUDIuc3ViKHIiIC8qXDEgKi9cbiIsIGxpbmUpCisgICAgICAgIGJ1Zi5hcHBlbmQobGluZSkKKyAgICByZXR1cm4gIiIuam9pbihidWYpCisKK2ZvciBuYW1lIGluIGdldGZpbGVzKCk6CisgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgIHJlcyA9IGNsZWFudXAoZikKKyAgICB3aXRoIG9wZW4obmFtZSwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKHJlcykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oIGIvTW9kdWxlcy9fc2hhMy9jbGluaWMvc2hhM21vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4OGU3ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oCkBAIC0wLDAgKzEsMTU0IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIocHlfc2hhM19uZXdfX2RvY19fLAorInNoYTNfMjI0KHN0cmluZz1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfc2hhM19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhM18yMjQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpkYXRhID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gcHlfc2hhM19uZXdfaW1wbCh0eXBlLCBkYXRhKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfY29weSwgTUVUSF9OT0FSR1MsIF9zaGEzX3NoYTNfMjI0X2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHkoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NoYTNfc2hhM18yMjRfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfU0hBM19TSEEzXzIyNF9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilfc2hhM19zaGEzXzIyNF9kaWdlc3QsIE1FVEhfTk9BUkdTLCBfc2hhM19zaGEzXzIyNF9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zaGEzX3NoYTNfMjI0X2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfdXBkYXRlLCBNRVRIX08sIF9zaGEzX3NoYTNfMjI0X3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfU0hBM19TSEFLRV8xMjhfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hha2VfMTI4X2RpZ2VzdCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJrOmRpZ2VzdCIsIF9rZXl3b3JkcywgMH07CisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxlbmd0aCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhM19zaGFrZV8xMjhfZGlnZXN0X2ltcGwoc2VsZiwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBS0VfMTI4X0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3QsIE1FVEhfRkFTVENBTEwsIF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiazpoZXhkaWdlc3QiLCBfa2V5d29yZHMsIDB9OworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZW5ndGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdF9pbXBsKHNlbGYsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODg4YmVhYjQ1MTM2YTU2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDlmYjQzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrSGFzaC5jCkBAIC0wLDAgKzEsODIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJLZWNjYWtIYXNoLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworSGFzaFJldHVybiBLZWNjYWtfSGFzaEluaXRpYWxpemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIHVuc2lnbmVkIGludCBoYXNoYml0bGVuLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZFN1ZmZpeCkKK3sKKyAgICBIYXNoUmV0dXJuIHJlc3VsdDsKKworICAgIGlmIChkZWxpbWl0ZWRTdWZmaXggPT0gMCkKKyAgICAgICAgcmV0dXJuIEZBSUw7CisgICAgcmVzdWx0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUoJmluc3RhbmNlLT5zcG9uZ2UsIHJhdGUsIGNhcGFjaXR5KTsKKyAgICBpZiAocmVzdWx0ICE9IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgaW5zdGFuY2UtPmZpeGVkT3V0cHV0TGVuZ3RoID0gaGFzaGJpdGxlbjsKKyAgICBpbnN0YW5jZS0+ZGVsaW1pdGVkU3VmZml4ID0gZGVsaW1pdGVkU3VmZml4OworICAgIHJldHVybiBTVUNDRVNTOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hVcGRhdGUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pCit7CisgICAgaWYgKChkYXRhYml0bGVuICUgOCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7CisgICAgZWxzZSB7CisgICAgICAgIEhhc2hSZXR1cm4gcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigmaW5zdGFuY2UtPnNwb25nZSwgZGF0YSwgZGF0YWJpdGxlbi84KTsKKyAgICAgICAgaWYgKHJldCA9PSBTVUNDRVNTKSB7CisgICAgICAgICAgICAvKiBUaGUgbGFzdCBwYXJ0aWFsIGJ5dGUgaXMgYXNzdW1lZCB0byBiZSBhbGlnbmVkIG9uIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzICovCisKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbGFzdEJ5dGUgPSBkYXRhW2RhdGFiaXRsZW4vOF07CisgICAgICAgICAgICAvKiBDb25jYXRlbmF0ZSB0aGUgbGFzdCBmZXcgYml0cyBwcm92aWRlZCBoZXJlIHdpdGggdGhvc2Ugb2YgdGhlIHN1ZmZpeCAqLworCisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZWxpbWl0ZWRMYXN0Qnl0ZXMgPSAodW5zaWduZWQgc2hvcnQpKCh1bnNpZ25lZCBzaG9ydClsYXN0Qnl0ZSB8ICgodW5zaWduZWQgc2hvcnQpaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA8PCAoZGF0YWJpdGxlbiAlIDgpKSk7CisgICAgICAgICAgICBpZiAoKGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkYwMCkgPT0gMHgwMDAwKSB7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG9uZUJ5dGVbMV07CisgICAgICAgICAgICAgICAgb25lQnl0ZVswXSA9IGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkY7CisgICAgICAgICAgICAgICAgcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigmaW5zdGFuY2UtPnNwb25nZSwgb25lQnl0ZSwgMSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IChkZWxpbWl0ZWRMYXN0Qnl0ZXMgPj4gOCkgJiAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hGaW5hbChLZWNjYWtfSGFzaEluc3RhbmNlICppbnN0YW5jZSwgQml0U2VxdWVuY2UgKmhhc2h2YWwpCit7CisgICAgSGFzaFJldHVybiByZXQgPSAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoJmluc3RhbmNlLT5zcG9uZ2UsIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXgpOworICAgIGlmIChyZXQgPT0gU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplKCZpbnN0YW5jZS0+c3BvbmdlLCBoYXNodmFsLCBpbnN0YW5jZS0+Zml4ZWRPdXRwdXRMZW5ndGgvOCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmV0OworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hTcXVlZXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKQoreworICAgIGlmICgoZGF0YWJpdGxlbiAlIDgpICE9IDApCisgICAgICAgIHJldHVybiBGQUlMOworICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgmaW5zdGFuY2UtPnNwb25nZSwgZGF0YSwgZGF0YWJpdGxlbi84KTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmQzZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrSGFzaC5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtIYXNoSW50ZXJmYWNlX2hfCisjZGVmaW5lIF9LZWNjYWtIYXNoSW50ZXJmYWNlX2hfCisKKyNpZm5kZWYgS2VjY2FrUDE2MDBfZXhjbHVkZWQKKworI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQml0U2VxdWVuY2U7Cit0eXBlZGVmIHNpemVfdCBEYXRhTGVuZ3RoOwordHlwZWRlZiBlbnVtIHsgU1VDQ0VTUyA9IDAsIEZBSUwgPSAxLCBCQURfSEFTSExFTiA9IDIgfSBIYXNoUmV0dXJuOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluc3RhbmNlIHNwb25nZTsKKyAgICB1bnNpZ25lZCBpbnQgZml4ZWRPdXRwdXRMZW5ndGg7CisgICAgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXg7Cit9IEtlY2Nha19IYXNoSW5zdGFuY2U7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIEtlY2Nha1tyLCBjXSBzcG9uZ2UgZnVuY3Rpb24gaW5zdGFuY2UgdXNlZCBpbiBzZXF1ZW50aWFsIGhhc2hpbmcgbW9kZS4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHBhcmFtICBoYXNoYml0bGVuICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJpdHMsCisgICogICAgICAgICAgICAgICAgICAgICBvciAwIGZvciBhbiBhcmJpdHJhcmlseS1sb25nIG91dHB1dC4KKyAgKiBAcGFyYW0gIGRlbGltaXRlZFN1ZmZpeCBCaXRzIHRoYXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFwcGVuZGVkIHRvIHRoZSBlbmQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgaW5wdXQgbWVzc2FnZSwgYXMgaW4gZG9tYWluIHNlcGFyYXRpb24uCisgICogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIGJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIGxpa2UgdGhlIEBhIGRlbGltaXRlZERhdGEgcGFyYW1ldGVyIG9mCisgICogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEtlY2Nha19TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpIGZ1bmN0aW9uLgorICAqIEBwcmUgICAgT25lIG11c3QgaGF2ZSByK2M9MTYwMCBhbmQgdGhlIHJhdGUgYSBtdWx0aXBsZSBvZiA4IGJpdHMgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgRkFJTCBvdGhlcndpc2UuCisgICovCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIHVuc2lnbmVkIGludCBoYXNoYml0bGVuLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZFN1ZmZpeCk7CisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBS0UxMjggaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMTI4KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEzNDQsICAyNTYsICAgMCwgMHgxRikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEFLRTI1NiBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBS0UyNTYoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgMTA4OCwgIDUxMiwgICAwLCAweDFGKQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtMjI0IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzIyNChoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMTUyLCAgNDQ4LCAyMjQsIDB4MDYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBMy0yNTYgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMjU2KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEwODgsICA1MTIsIDI1NiwgMHgwNikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTM4NCBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18zODQoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgIDgzMiwgIDc2OCwgMzg0LCAweDA2KQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtNTEyIGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzUxMihoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAgNTc2LCAxMDI0LCA1MTIsIDB4MDYpCisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSB0byBiZSBhYnNvcmJlZC4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgZGF0YS4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFdoZW4gQGEgZGF0YWJpdExlbiBpcyBub3QgYSBtdWx0aXBsZSBvZiA4LCB0aGUgbGFzdCBiaXRzIG9mIGRhdGEgbXVzdCBiZQorICAqICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIGxhc3QgYnl0ZSAobGl0dGxlLWVuZGlhbiBjb252ZW50aW9uKS4KKyAgKiBAcGFyYW0gIGRhdGFiaXRMZW4gIFRoZSBudW1iZXIgb2YgaW5wdXQgYml0cyBwcm92aWRlZCBpbiB0aGUgaW5wdXQgZGF0YS4KKyAgKiBAcHJlICAgIEluIHRoZSBwcmV2aW91cyBjYWxsIHRvIEtlY2Nha19IYXNoVXBkYXRlKCksIGRhdGFiaXRsZW4gd2FzIGEgbXVsdGlwbGUgb2YgOC4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgRkFJTCBvdGhlcndpc2UuCisgICovCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoVXBkYXRlKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgY29uc3QgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgYWxsIGlucHV0IGJsb2NrcyBoYXZlIGJlZW4gaW5wdXQgYW5kIHRvIGdldAorICAqIG91dHB1dCBiaXRzIGlmIHRoZSBsZW5ndGggd2FzIHNwZWNpZmllZCB3aGVuIGNhbGxpbmcgS2VjY2FrX0hhc2hJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBJZiBAYSBoYXNoYml0bGVuIHdhcyBub3QgMCBpbiB0aGUgY2FsbCB0byBLZWNjYWtfSGFzaEluaXRpYWxpemUoKSwgdGhlIG51bWJlciBvZgorICAqICAgICBvdXRwdXQgYml0cyBpcyBlcXVhbCB0byBAYSBoYXNoYml0bGVuLgorICAqIElmIEBhIGhhc2hiaXRsZW4gd2FzIDAgaW4gdGhlIGNhbGwgdG8gS2VjY2FrX0hhc2hJbml0aWFsaXplKCksIHRoZSBvdXRwdXQgYml0cworICAqICAgICBtdXN0IGJlIGV4dHJhY3RlZCB1c2luZyB0aGUgS2VjY2FrX0hhc2hTcXVlZXplKCkgZnVuY3Rpb24uCisgICogQHBhcmFtICBzdGF0ZSAgICAgICBQb2ludGVyIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGluaXRpYWxpemVkIGJ5IEluaXQoKS4KKyAgKiBAcGFyYW0gIGhhc2h2YWwgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaEZpbmFsKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgQml0U2VxdWVuY2UgKmhhc2h2YWwpOworCisgLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGRhdGFiaXRsZW4gIFRoZSBudW1iZXIgb2Ygb3V0cHV0IGJpdHMgZGVzaXJlZCAobXVzdCBiZSBhIG11bHRpcGxlIG9mIDgpLgorICAqIEBwcmUgICAgS2VjY2FrX0hhc2hGaW5hbCgpIG11c3QgaGF2ZSBiZWVuIGFscmVhZHkgY2FsbGVkLgorICAqIEBwcmUgICAgQGEgZGF0YWJpdGxlbiBpcyBhIG11bHRpcGxlIG9mIDguCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaFNxdWVlemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaGFzaEluc3RhbmNlLCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKTsKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLTY0Lm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYxMWZlMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MKQEAgLTAsMCArMSwyMjA4IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjZGVmaW5lIGRlY2xhcmVBQkNERSBcCisgICAgVUlOVDY0IEFiYSwgQWJlLCBBYmksIEFibywgQWJ1OyBcCisgICAgVUlOVDY0IEFnYSwgQWdlLCBBZ2ksIEFnbywgQWd1OyBcCisgICAgVUlOVDY0IEFrYSwgQWtlLCBBa2ksIEFrbywgQWt1OyBcCisgICAgVUlOVDY0IEFtYSwgQW1lLCBBbWksIEFtbywgQW11OyBcCisgICAgVUlOVDY0IEFzYSwgQXNlLCBBc2ksIEFzbywgQXN1OyBcCisgICAgVUlOVDY0IEJiYSwgQmJlLCBCYmksIEJibywgQmJ1OyBcCisgICAgVUlOVDY0IEJnYSwgQmdlLCBCZ2ksIEJnbywgQmd1OyBcCisgICAgVUlOVDY0IEJrYSwgQmtlLCBCa2ksIEJrbywgQmt1OyBcCisgICAgVUlOVDY0IEJtYSwgQm1lLCBCbWksIEJtbywgQm11OyBcCisgICAgVUlOVDY0IEJzYSwgQnNlLCBCc2ksIEJzbywgQnN1OyBcCisgICAgVUlOVDY0IENhLCBDZSwgQ2ksIENvLCBDdTsgXAorICAgIFVJTlQ2NCBEYSwgRGUsIERpLCBEbywgRHU7IFwKKyAgICBVSU5UNjQgRWJhLCBFYmUsIEViaSwgRWJvLCBFYnU7IFwKKyAgICBVSU5UNjQgRWdhLCBFZ2UsIEVnaSwgRWdvLCBFZ3U7IFwKKyAgICBVSU5UNjQgRWthLCBFa2UsIEVraSwgRWtvLCBFa3U7IFwKKyAgICBVSU5UNjQgRW1hLCBFbWUsIEVtaSwgRW1vLCBFbXU7IFwKKyAgICBVSU5UNjQgRXNhLCBFc2UsIEVzaSwgRXNvLCBFc3U7IFwKKworI2RlZmluZSBwcmVwYXJlVGhldGEgXAorICAgIENhID0gQWJhXkFnYV5Ba2FeQW1hXkFzYTsgXAorICAgIENlID0gQWJlXkFnZV5Ba2VeQW1lXkFzZTsgXAorICAgIENpID0gQWJpXkFnaV5Ba2leQW1pXkFzaTsgXAorICAgIENvID0gQWJvXkFnb15Ba29eQW1vXkFzbzsgXAorICAgIEN1ID0gQWJ1XkFndV5Ba3VeQW11XkFzdTsgXAorCisjaWZkZWYgVXNlQmViaWdva2ltaXNhCisvKiAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXiggIEJiZSB8ICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBDYSA9IEUjI2JhOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKXwgIEJibyApOyBcCisgICAgQ2UgPSBFIyNiZTsgXAorICAgIEUjI2JpID0gICBCYmkgXiggIEJibyAmICBCYnUgKTsgXAorICAgIENpID0gRSMjYmk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oICBCYnUgfCAgQmJhICk7IFwKKyAgICBDbyA9IEUjI2JvOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCAgQmJhICYgIEJiZSApOyBcCisgICAgQ3UgPSBFIyNidTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCAgQmdlIHwgIEJnaSApOyBcCisgICAgQ2EgXj0gRSMjZ2E7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oICBCZ2kgJiAgQmdvICk7IFwKKyAgICBDZSBePSBFIyNnZTsgXAorICAgIEUjI2dpID0gICBCZ2kgXiggIEJnbyB8KH5CZ3UpKTsgXAorICAgIENpIF49IEUjI2dpOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCAgQmd1IHwgIEJnYSApOyBcCisgICAgQ28gXj0gRSMjZ287IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oICBCZ2EgJiAgQmdlICk7IFwKKyAgICBDdSBePSBFIyNndTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXiggIEJrZSB8ICBCa2kgKTsgXAorICAgIENhIF49IEUjI2thOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCAgQmtpICYgIEJrbyApOyBcCisgICAgQ2UgXj0gRSMja2U7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBDaSBePSBFIyNraTsgXAorICAgIEUjI2tvID0gKH5Ca28pXiggIEJrdSB8ICBCa2EgKTsgXAorICAgIENvIF49IEUjI2tvOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCAgQmthICYgIEJrZSApOyBcCisgICAgQ3UgXj0gRSMja3U7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oICBCbWUgJiAgQm1pICk7IFwKKyAgICBDYSBePSBFIyNtYTsgXAorICAgIEUjI21lID0gICBCbWUgXiggIEJtaSB8ICBCbW8gKTsgXAorICAgIENlIF49IEUjI21lOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKXwgIEJtdSApOyBcCisgICAgQ2kgXj0gRSMjbWk7IFwKKyAgICBFIyNtbyA9ICh+Qm1vKV4oICBCbXUgJiAgQm1hICk7IFwKKyAgICBDbyBePSBFIyNtbzsgXAorICAgIEUjI211ID0gICBCbXUgXiggIEJtYSB8ICBCbWUgKTsgXAorICAgIEN1IF49IEUjI211OyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBDYSBePSBFIyNzYTsgXAorICAgIEUjI3NlID0gKH5Cc2UpXiggIEJzaSB8ICBCc28gKTsgXAorICAgIENlIF49IEUjI3NlOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCAgQnNvICYgIEJzdSApOyBcCisgICAgQ2kgXj0gRSMjc2k7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oICBCc3UgfCAgQnNhICk7IFwKKyAgICBDbyBePSBFIyNzbzsgXAorICAgIEUjI3N1ID0gICBCc3UgXiggIEJzYSAmICBCc2UgKTsgXAorICAgIEN1IF49IEUjI3N1OyBcCitcCisKKy8qIC0tLSBDb2RlIGZvciByb3VuZCAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXiggIEJiZSB8ICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpfCAgQmJvICk7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oICBCYnUgfCAgQmJhICk7IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oICBCYmEgJiAgQmJlICk7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIEUjI2dlID0gICBCZ2UgXiggIEJnaSAmICBCZ28gKTsgXAorICAgIEUjI2dpID0gICBCZ2kgXiggIEJnbyB8KH5CZ3UpKTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIEUjI2d1ID0gICBCZ3UgXiggIEJnYSAmICBCZ2UgKTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXiggIEJrZSB8ICBCa2kgKTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIEUjI2tvID0gKH5Ca28pXiggIEJrdSB8ICBCa2EgKTsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXiggIEJtZSAmICBCbWkgKTsgXAorICAgIEUjI21lID0gICBCbWUgXiggIEJtaSB8ICBCbW8gKTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIEUjI21vID0gKH5CbW8pXiggIEJtdSAmICBCbWEgKTsgXAorICAgIEUjI211ID0gICBCbXUgXiggIEJtYSB8ICBCbWUgKTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgRSMjc2UgPSAofkJzZSleKCAgQnNpIHwgIEJzbyApOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCAgQnNvICYgIEJzdSApOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCAgQnNhICYgIEJzZSApOyBcCitcCisKKyNlbHNlIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisvKiAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oKH5CYmUpJiAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSkmICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oKH5CYm8pJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCh+QmJ1KSYgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXigofkJiYSkmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXigofkJnZSkmICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCh+QmdpKSYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oKH5CZ28pJiAgQmd1ICk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXigofkJndSkmICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCh+QmdhKSYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oKH5Ca2UpJiAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXigofkJraSkmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICAgQmtvIF4oKH5Ca3UpJiAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXigofkJrYSkmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCh+Qm1lKSYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oKH5CbWkpJiAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbykmICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAgIEJtbyBeKCh+Qm11KSYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oKH5CbWEpJiAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICAgQnNlIF4oKH5Cc2kpJiAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXigofkJzbykmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCh+QnN1KSYgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oKH5Cc2EpJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAtLS0gQ29kZSBmb3Igcm91bmQgKi8KKworLyogLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisKKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSkmICBCYm8gKTsgXAorICAgIEUjI2JpID0gICBCYmkgXigofkJibykmICBCYnUgKTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIEUjI2J1ID0gICBCYnUgXigofkJiYSkmICBCYmUgKTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCh+QmdlKSYgIEJnaSApOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCh+QmdpKSYgIEJnbyApOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCh+Qmd1KSYgIEJnYSApOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCh+QmdhKSYgIEJnZSApOyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCh+QmtpKSYgIEJrbyApOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCh+QmthKSYgIEJrZSApOyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCh+Qm1lKSYgIEJtaSApOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKSYgIEJtdSApOyBcCisgICAgRSMjbW8gPSAgIEJtbyBeKCh+Qm11KSYgIEJtYSApOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBFIyNzZSA9ICAgQnNlIF4oKH5Cc2kpJiAgQnNvICk7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oKH5Cc3UpJiAgQnNhICk7IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oKH5Cc2EpJiAgQnNlICk7IFwKK1wKKworI2VuZGlmIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdOyBcCisgICAgWCMjYmUgPSBzdGF0ZVsgMV07IFwKKyAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdOyBcCisgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICBYIyNnYSA9IHN0YXRlWyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICBYIyNnbyA9IHN0YXRlWyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weVRvU3RhdGUoc3RhdGUsIFgpIFwKKyAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorCisjZGVmaW5lIGNvcHlTdGF0ZVZhcmlhYmxlcyhYLCBZKSBcCisgICAgWCMjYmEgPSBZIyNiYTsgXAorICAgIFgjI2JlID0gWSMjYmU7IFwKKyAgICBYIyNiaSA9IFkjI2JpOyBcCisgICAgWCMjYm8gPSBZIyNibzsgXAorICAgIFgjI2J1ID0gWSMjYnU7IFwKKyAgICBYIyNnYSA9IFkjI2dhOyBcCisgICAgWCMjZ2UgPSBZIyNnZTsgXAorICAgIFgjI2dpID0gWSMjZ2k7IFwKKyAgICBYIyNnbyA9IFkjI2dvOyBcCisgICAgWCMjZ3UgPSBZIyNndTsgXAorICAgIFgjI2thID0gWSMja2E7IFwKKyAgICBYIyNrZSA9IFkjI2tlOyBcCisgICAgWCMja2kgPSBZIyNraTsgXAorICAgIFgjI2tvID0gWSMja287IFwKKyAgICBYIyNrdSA9IFkjI2t1OyBcCisgICAgWCMjbWEgPSBZIyNtYTsgXAorICAgIFgjI21lID0gWSMjbWU7IFwKKyAgICBYIyNtaSA9IFkjI21pOyBcCisgICAgWCMjbW8gPSBZIyNtbzsgXAorICAgIFgjI211ID0gWSMjbXU7IFwKKyAgICBYIyNzYSA9IFkjI3NhOyBcCisgICAgWCMjc2UgPSBZIyNzZTsgXAorICAgIFgjI3NpID0gWSMjc2k7IFwKKyAgICBYIyNzbyA9IFkjI3NvOyBcCisgICAgWCMjc3UgPSBZIyNzdTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRBZGQoWCwgc3RhdGUsIGlucHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIFgjI2JvID0gc3RhdGVbIDNdOyBcCisgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICAgICAgICAgICAgICBYIyNnYSA9IHN0YXRlWyA1XTsgXAorICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV1eaW5wdXRbIDVdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBYIyNnaSA9IHN0YXRlWyA3XTsgXAorICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXTsgXAorICAgICAgICAgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgICAgICAgICBYIyNrbyA9IHN0YXRlWzEzXTsgXAorICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICBYIyNibyA9IHN0YXRlWyAzXV5pbnB1dFsgM107IFwKKyAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV1eaW5wdXRbIDVdOyBcCisgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XV5pbnB1dFsgNl07IFwKKyAgICAgICAgICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgICAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdXmlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM11eaW5wdXRbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgWCMjbWEgPSBzdGF0ZVsxNV07IFwKKyAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF07IFwKKyAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICAgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICBYIyNibyA9IHN0YXRlWyAzXV5pbnB1dFsgM107IFwKKyAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XV5pbnB1dFsgNl07IFwKKyAgICAgICAgWCMjZ2kgPSBzdGF0ZVsgN11eaW5wdXRbIDddOyBcCisgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF1eaW5wdXRbMTBdOyBcCisgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgWCMja28gPSBzdGF0ZVsxM11eaW5wdXRbMTNdOyBcCisgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgICAgICBYIyNtYSA9IHN0YXRlWzE1XV5pbnB1dFsxNV07IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgICAgICAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN11eaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV1eaW5wdXRbMTldOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF1eaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXV5pbnB1dFsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl1eaW5wdXRbMjJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgICAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICAgICAgICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICBYIyNtdSA9IHN0YXRlWzE5XV5pbnB1dFsxOV07IFwKKyAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXV5pbnB1dFsyMl07IFwKKyAgICAgICAgICAgIFgjI3NvID0gc3RhdGVbMjNdXmlucHV0WzIzXTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdXmlucHV0WzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBhZGRJbnB1dChYLCBpbnB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA9PSAyMSkgeyBcCisgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgWCMjZ2EgXj0gaW5wdXRbIDVdOyBcCisgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgWCMja2UgXj0gaW5wdXRbMTFdOyBcCisgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgIFgjI21hIF49IGlucHV0WzE1XTsgXAorICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgIFgjI21vIF49IGlucHV0WzE4XTsgXAorICAgICAgICBYIyNtdSBePSBpbnB1dFsxOV07IFwKKyAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgfSBcCisgICAgZWxzZSBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgICAgICBYIyNibyBePSBpbnB1dFsgM107IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gaW5wdXRbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgXj0gaW5wdXRbMTBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgIFgjI2tlIF49IGlucHV0WzExXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gaW5wdXRbMTJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSBpbnB1dFsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgIFgjI2JlIF49IGlucHV0WyAxXTsgXAorICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgIFgjI2J1IF49IGlucHV0WyA0XTsgXAorICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgIFgjI2dpIF49IGlucHV0WyA3XTsgXAorICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgWCMjZ3UgXj0gaW5wdXRbIDldOyBcCisgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICBYIyNrZSBePSBpbnB1dFsxMV07IFwKKyAgICAgICAgWCMja2kgXj0gaW5wdXRbMTJdOyBcCisgICAgICAgIFgjI2tvIF49IGlucHV0WzEzXTsgXAorICAgICAgICBYIyNrdSBePSBpbnB1dFsxNF07IFwKKyAgICAgICAgWCMjbWEgXj0gaW5wdXRbMTVdOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSBpbnB1dFsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgWCMjbXUgXj0gaW5wdXRbMTldOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSBePSBpbnB1dFsyMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NlIF49IGlucHV0WzIxXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpIF49IGlucHV0WzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgICAgIFgjI211IF49IGlucHV0WzE5XTsgXAorICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICBYIyNzZSBePSBpbnB1dFsyMV07IFwKKyAgICAgICAgICAgIFgjI3NpIF49IGlucHV0WzIyXTsgXAorICAgICAgICAgICAgWCMjc28gXj0gaW5wdXRbMjNdOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjUpIHsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1IF49IGlucHV0WzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorCisjZGVmaW5lIGNvcHlUb1N0YXRlQW5kT3V0cHV0KFgsIHN0YXRlLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBvdXRwdXQoWCwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IH5YIyNuYW1lOworCisjZGVmaW5lIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIG91dHB1dFtpbmRleF0gPSBpbnB1dFtpbmRleF0gXiBYIyNuYW1lOyBcCisgICAgWCMjbmFtZSBePSBvdXRwdXRbaW5kZXhdOworCisjZGVmaW5lIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIG91dHB1dFtpbmRleF0gPSB+KGlucHV0W2luZGV4XSBeIFgjI25hbWUpOyBcCisgICAgWCMjbmFtZSBePSBvdXRwdXRbaW5kZXhdOyBcCisKKyNlbHNlIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisKKyNkZWZpbmUgY29weVRvU3RhdGVBbmRPdXRwdXQoWCwgc3RhdGUsIG91dHB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl09IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl09IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgIHN0YXRlWzE1XSA9IFgjI21hOyBcCisgICAgICAgIG91dHB1dFsxNV0gPSBYIyNtYTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyNSkgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIG91dHB1dChYLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gWCMja2k7IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBvdXRwdXRbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgWCMjbmFtZSBePSBpbnB1dFtpbmRleF07IFwKKyAgICBvdXRwdXRbaW5kZXhdID0gWCMjbmFtZTsKKworI2RlZmluZSB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgWCMjbmFtZSBePSBpbnB1dFtpbmRleF07IFwKKyAgICBvdXRwdXRbaW5kZXhdID0gWCMjbmFtZTsKKworI2RlZmluZSB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2RlZmluZSB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2VuZGlmCisKKyNkZWZpbmUgd3JhcChYLCBpbnB1dCwgb3V0cHV0LCBsYW5lQ291bnQsIHRyYWlsaW5nQml0cykgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYm8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNndSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEwLCBrYSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMywga28pIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNSwgbWEpIFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOSwgbXUpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMiwgc2kpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOCwgbW8pIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMSwgc2UpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIzLCBzbykgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDI0LCBzdSkgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSB1bndyYXAoWCwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCB0cmFpbGluZ0JpdHMpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYm8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDcsIGdpKSBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTQsIGt1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMywga28pIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTUsIG1hKSBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjMsIHNvKSBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjUpIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyNCwgc3UpIFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNmNzY1ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAtb3B0MzIuaApAQCAtMCwwICsxLDM3IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtQXzE2MDBfU25QX2hfCisjZGVmaW5lIF9LZWNjYWtQXzE2MDBfU25QX2hfCisKKy8qKiBGb3IgdGhlIGRvY3VtZW50YXRpb24sIHNlZSBTblAtZG9jdW1lbnRhdGlvbi5oLgorICovCisKKyNkZWZpbmUgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb24gICAgICAiaW4tcGxhY2UgMzItYml0IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfc3RhdGVTaXplSW5CeXRlcyAgICAyMDAKKyNkZWZpbmUgS2VjY2FrUDE2MDBfc3RhdGVBbGlnbm1lbnQgICAgICA4CisKKyNkZWZpbmUgS2VjY2FrUDE2MDBfU3RhdGljSW5pdGlhbGl6ZSgpCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQpOwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCk7Cit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHModm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg5YTMxYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAtb3B0NjQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtQXzE2MDBfU25QX2hfCisjZGVmaW5lIF9LZWNjYWtQXzE2MDBfU25QX2hfCisKKy8qKiBGb3IgdGhlIGRvY3VtZW50YXRpb24sIHNlZSBTblAtZG9jdW1lbnRhdGlvbi5oLgorICovCisKKy8qICNpbmNsdWRlICJicmdfZW5kaWFuLmgiICovCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIgorCisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uICAgICAgImdlbmVyaWMgNjQtYml0IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiAoIiBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbl9jb25maWcgIikiCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlU2l6ZUluQnl0ZXMgICAgMjAwCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlQWxpZ25tZW50ICAgICAgOAorI2RlZmluZSBLZWNjYWtGMTYwMF9GYXN0TG9vcF9zdXBwb3J0ZWQKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjZGVmaW5lIEtlY2Nha1AxNjAwX1N0YXRpY0luaXRpYWxpemUoKQordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRCeXRlKHN0YXRlLCBieXRlLCBvZmZzZXQpIFwKKyAgICAoKHVuc2lnbmVkIGNoYXIqKShzdGF0ZSkpWyhvZmZzZXQpXSBePSAoYnl0ZSkKKyNlbHNlCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisjZW5kaWYKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7CitzaXplX3QgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjIzZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC5oCkBAIC0wLDAgKzEsNyBAQAorI2lmIEtlY2Nha09wdCA9PSA2NAorICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oIgorI2VsaWYgS2VjY2FrT3B0ID09IDMyCisgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgiCisjZWxzZQorICAjZXJyb3IgIk5vIEtlY2Nha09wdCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtaW5wbGFjZTMyQkkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmY5ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMKQEAgLTAsMCArMSwxMTYyIEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSAgICA8c3RyaW5nLmg+CisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAuaCIKKyNpbmNsdWRlICJTblAtUmVsYW5lZC5oIgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMzI7CisvKiBXQVJOSU5HOiBvbiA4LWJpdCBhbmQgMTYtYml0IHBsYXRmb3JtcywgdGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgYnk6ICovCisKKy8qdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgIFVJTlQzMjsgKi8KKworCisjZGVmaW5lIFJPTDMyKGEsIG9mZnNldCkgKCgoKFVJTlQzMilhKSA8PCAob2Zmc2V0KSkgXiAoKChVSU5UMzIpYSkgPj4gKDMyLShvZmZzZXQpKSkpCisKKy8qIENyZWRpdCB0byBIZW5yeSBTLiBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIEFkZGlzb24tV2VzbGV5LCAyMDAyICovCisKKyNkZWZpbmUgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHRlbXAwID0gKGxvdyk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcDEgPSAoaGlnaCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgOCk7CisKKyNkZWZpbmUgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlVG9CaXRJbnRlcmxlYXZpbmcobG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgZXZlbiBePSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkIF49ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworI2RlZmluZSB0b0JpdEludGVybGVhdmluZ0FuZEFORChsb3csIGhpZ2gsIGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBldmVuICY9ICh0ZW1wMCAmIDB4MDAwMEZGRkYpIHwgKHRlbXAxIDw8IDE2KTsgXAorICAgICAgICBvZGQgJj0gKHRlbXAwID4+IDE2KSB8ICh0ZW1wMSAmIDB4RkZGRjAwMDApOworCisjZGVmaW5lIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KGxvdywgaGlnaCwgZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGV2ZW4gPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkID0gKHRlbXAwID4+IDE2KSB8ICh0ZW1wMSAmIDB4RkZGRjAwMDApOworCisvKiBDcmVkaXQgdG8gSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworCisjZGVmaW5lIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHRlbXAwID0gKGV2ZW4pOyBcCisgICAgICAgIHRlbXAxID0gKG9kZCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCAmIDB4MDAwMEZGRkYpIHwgKHRlbXAxIDw8IDE2KTsgXAorICAgICAgICB0ZW1wMSA9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsgXAorICAgICAgICB0ZW1wMCA9IHRlbXA7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMSk7CisKKyNkZWZpbmUgZnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGxvdyA9IHRlbXAwOyBcCisgICAgICAgIGhpZ2ggPSB0ZW1wMTsKKworI2RlZmluZSBmcm9tQml0SW50ZXJsZWF2aW5nQW5kWE9SKGV2ZW4sIG9kZCwgbG93SW4sIGhpZ2hJbiwgbG93T3V0LCBoaWdoT3V0LCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZUZyb21CaXRJbnRlcmxlYXZpbmcoZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgbG93T3V0ID0gbG93SW4gXiB0ZW1wMDsgXAorICAgICAgICBoaWdoT3V0ID0gaGlnaEluIF4gdGVtcDE7CisKK3ZvaWQgS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8odm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgbWVtc2V0KGxhbmVBc0J5dGVzLCAweEZGLCBvZmZzZXQpOworICAgIG1lbXNldChsYW5lQXNCeXRlcytvZmZzZXQsIDB4MDAsIGxlbmd0aCk7CisgICAgbWVtc2V0KGxhbmVBc0J5dGVzK29mZnNldCtsZW5ndGgsIDB4RkYsIDgtb2Zmc2V0LWxlbmd0aCk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBsb3cgPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcyswKSk7CisgICAgaGlnaCA9ICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzQpKTsKKyNlbHNlCisgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzJdKSA8PCAxNikKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNV0pIDw8IDgpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyNlbmRpZgorICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kQU5EKGxvdywgaGlnaCwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMiswXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpCit7CisgICAgbWVtc2V0KHN0YXRlLCAwLCAyMDApOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24gPSBvZmZzZXQvODsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0SW5MYW5lID0gb2Zmc2V0JTg7CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgaWYgKG9mZnNldEluTGFuZSA8IDQpIHsKKyAgICAgICAgbG93ID0gKFVJTlQzMilieXRlIDw8IChvZmZzZXRJbkxhbmUqOCk7CisgICAgICAgIGhpZ2ggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbG93ID0gMDsKKyAgICAgICAgaGlnaCA9IChVSU5UMzIpYnl0ZSA8PCAoKG9mZnNldEluTGFuZS00KSo4KTsKKyAgICB9CisgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgbWVtc2V0KGxhbmVBc0J5dGVzLCAwLCA4KTsKKyAgICBtZW1jcHkobGFuZUFzQnl0ZXMrb2Zmc2V0LCBkYXRhLCBsZW5ndGgpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgbG93ID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgIGhpZ2ggPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisjZWxzZQorICAgIGxvdyA9IGxhbmVBc0J5dGVzWzBdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzNdKSA8PCAyNCk7CisgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s2XSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisjZW5kaWYKKyAgICB0b0JpdEludGVybGVhdmluZ0FuZFhPUihsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWRhdGE7CisgICAgVUlOVDMyICogcFMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIG1lbWNweSgmbG93LCBwSSsrLCA0KTsKKyAgICAgICAgbWVtY3B5KCZoaWdoLCBwSSsrLCA0KTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCAqKHBTKyspLCAqKHBTKyspLCB0LCB4MCwgeDEpOworI2Vsc2UKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IoKihwSSsrKSwgKihwSSsrKSwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzOworICAgICAgICBtZW1jcHkobGFuZUFzQnl0ZXMsIGRhdGErbGFuZVBvc2l0aW9uKjgsIDgpOworICAgICAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgICAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICB0b0JpdEludGVybGVhdmluZ0FuZFhPUihsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9BZGRMYW5lcywgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8oc3RhdGUsIGxhbmVQb3NpdGlvbiwgb2Zmc2V0LCBsZW5ndGgpOworICAgIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBsYW5lUG9zaXRpb24sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUxhbmVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgY29uc3QgVUlOVDMyICogcEkgPSAoY29uc3QgVUlOVDMyICopZGF0YTsKKyAgICBVSU5UMzIgKiBwUyA9IChVSU5UMzIgKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIG1lbWNweSgmbG93LCBwSSsrLCA0KTsKKyAgICAgICAgbWVtY3B5KCZoaWdoLCBwSSsrLCA0KTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQobG93LCBoaWdoLCAqKHBTKyspLCAqKHBTKyspLCB0LCB4MCwgeDEpOworI2Vsc2UKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQoKihwSSsrKSwgKihwSSsrKSwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzOworICAgICAgICBtZW1jcHkobGFuZUFzQnl0ZXMsIGRhdGErbGFuZVBvc2l0aW9uKjgsIDgpOworICAgICAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgICAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICB0b0JpdEludGVybGVhdmluZ0FuZFNldChsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcywgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCkKK3sKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8Ynl0ZUNvdW50Lzg7IGkrKykgeworICAgICAgICBzdGF0ZUFzSGFsZkxhbmVzW2kqMiswXSA9IDA7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXNbaSoyKzFdID0gMDsKKyAgICB9CisgICAgaWYgKGJ5dGVDb3VudCU4ICE9IDApCisgICAgICAgIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHN0YXRlLCBieXRlQ291bnQvOCwgMCwgYnl0ZUNvdW50JTgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKworICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKSA9IGxvdzsKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSkgPSBoaWdoOworI2Vsc2UKKyAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisjZW5kaWYKKyAgICBtZW1jcHkoZGF0YSwgbGFuZUFzQnl0ZXMrb2Zmc2V0LCBsZW5ndGgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgVUlOVDMyICogcEkgPSAoVUlOVDMyICopZGF0YTsKKyAgICBjb25zdCBVSU5UMzIgKiBwUyA9ICggY29uc3QgVUlOVDMyICopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nKCoocFMrKyksICoocFMrKyksIGxvdywgaGlnaCwgdCwgeDAsIHgxKTsKKyAgICAgICAgbWVtY3B5KHBJKyssICZsb3csIDQpOworICAgICAgICBtZW1jcHkocEkrKywgJmhpZ2gsIDQpOworI2Vsc2UKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCAqKHBJKyspLCAqKHBJKyspLCB0LCB4MCwgeDEpCisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisgICAgZm9yKGxhbmVQb3NpdGlvbj0wOyBsYW5lUG9zaXRpb248bGFuZUNvdW50OyBsYW5lUG9zaXRpb24rKykgeworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgICAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgICAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworICAgICAgICBtZW1jcHkoZGF0YStsYW5lUG9zaXRpb24qOCwgbGFuZUFzQnl0ZXMsIDgpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9FeHRyYWN0TGFuZXMsIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpID0gbG93OworICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzQpKSA9IGhpZ2g7CisjZWxzZQorICAgIGxhbmVBc0J5dGVzWzBdID0gbG93ICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1sxXSA9IChsb3cgPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzNdID0gKGxvdyA+PiAyNCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzRdID0gaGlnaCAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNl0gPSAoaGlnaCA+PiAxNikgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzddID0gKGhpZ2ggPj4gMjQpICYgMHhGRjsKKyNlbmRpZgorICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgIG91dHB1dFtpXSA9IGlucHV0W2ldIF4gbGFuZUFzQnl0ZXNbb2Zmc2V0K2ldOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgY29uc3QgVUlOVDMyICogcEkgPSAoY29uc3QgVUlOVDMyICopaW5wdXQ7CisgICAgVUlOVDMyICogcE8gPSAoVUlOVDMyICopb3V0cHV0OworICAgIGNvbnN0IFVJTlQzMiAqIHBTID0gKGNvbnN0IFVJTlQzMiAqKXN0YXRlOworICAgIFVJTlQzMiB0LCB4MCwgeDE7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gbGFuZUNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisjaWZkZWYgTk9fTUlTQUxJR05FRF9BQ0NFU1NFUworICAgICAgICBVSU5UMzIgbG93OworICAgICAgICBVSU5UMzIgaGlnaDsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCBsb3csIGhpZ2gsIHQsIHgwLCB4MSk7CisgICAgICAgICoocE8rKykgPSAqKHBJKyspIF4gbG93OworICAgICAgICAqKHBPKyspID0gKihwSSsrKSBeIGhpZ2g7CisjZWxzZQorICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nQW5kWE9SKCoocFMrKyksICoocFMrKyksICoocEkrKyksICoocEkrKyksICoocE8rKyksICoocE8rKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nKHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjJdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgICAgIGxhbmVBc0J5dGVzWzBdID0gbG93ICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMl0gPSAobG93ID4+IDE2KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzNdID0gKGxvdyA+PiAyNCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s1XSA9IChoaWdoID4+IDgpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNl0gPSAoaGlnaCA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisgICAgICAgICgoVUlOVDMyKikob3V0cHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gPSAoKFVJTlQzMiopKGlucHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gXiAoKihjb25zdCBVSU5UMzIqKShsYW5lQXNCeXRlcyswKSk7CisgICAgICAgICgoVUlOVDMyKikob3V0cHV0K2xhbmVQb3NpdGlvbio4KSlbMV0gPSAoKFVJTlQzMiopKGlucHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gXiAoKihjb25zdCBVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisgICAgfQorI2VuZGlmCit9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGUsIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIGNvbnN0IFVJTlQzMiBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJbMioyNCsxXSA9Cit7CisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDg5VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDhiVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDgwVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDAwMDhiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDAwVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDA4MDg4VUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDgyVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDBiVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDBhVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDgyVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDA4MDAzVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDhiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDBiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDhhVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDgxVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDgxVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDA4VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDgzVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDAzVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDA4MDg4VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDg4VUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDgyVUwsCisgICAgMHgwMDAwMDBGRlVMCit9OworCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQwKCkgXAorICAgICAgICBDeCA9IEFidTBeQWd1MF5Ba3UwXkFtdTBeQXN1MDsgXAorICAgICAgICBEdTEgPSBBYmUxXkFnZTFeQWtlMV5BbWUxXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFidTFeQWd1MV5Ba3UxXkFtdTFeQXN1MTsgXAorICAgICAgICBEdTAgPSBBYmUwXkFnZTBeQWtlMF5BbWUwXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQWJpMF5BZ2kwXkFraTBeQW1pMF5Bc2kwOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFiaTFeQWdpMV5Ba2kxXkFtaTFeQXNpMTsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQWdhMF5Ba2EwXkFtYTBeQXNhMDsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFnYTFeQWthMV5BbWExXkFzYTE7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBYm8xXkFnbzFeQWtvMV5BbW8xXkFzbzE7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFibzBeQWdvMF5Ba28wXkFtbzBeQXNvMDsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKKyNkZWZpbmUgS2VjY2FrQXRvRF9yb3VuZDEoKSBcCisgICAgICAgIEN4ID0gQXN1MF5BZ3UwXkFtdTBeQWJ1MV5Ba3UxOyBcCisgICAgICAgIER1MSA9IEFnZTFeQW1lMF5BYmUwXkFrZTFeQXNlMTsgXAorICAgICAgICBEYTAgPSBDeF5ST0wzMihEdTEsIDEpOyBcCisgICAgICAgIEN6ID0gQXN1MV5BZ3UxXkFtdTFeQWJ1MF5Ba3UwOyBcCisgICAgICAgIER1MCA9IEFnZTBeQW1lMV5BYmUxXkFrZTBeQXNlMDsgXAorICAgICAgICBEYTEgPSBDel5EdTA7IFwKK1wKKyAgICAgICAgQ3cgPSBBa2kxXkFzaTFeQWdpMF5BbWkxXkFiaTA7IFwKKyAgICAgICAgRG8wID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIEN5ID0gQWtpMF5Bc2kwXkFnaTFeQW1pMF5BYmkxOyBcCisgICAgICAgIERvMSA9IEN5XkN4OyBcCitcCisgICAgICAgIEN4ID0gQWJhMF5Ba2ExXkFzYTBeQWdhMF5BbWExOyBcCisgICAgICAgIERlMCA9IEN4XlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDeiA9IEFiYTFeQWthMF5Bc2ExXkFnYTFeQW1hMDsgXAorICAgICAgICBEZTEgPSBDel5DdzsgXAorXAorICAgICAgICBDeSA9IEFtbzBeQWJvMV5Ba28wXkFzbzFeQWdvMDsgXAorICAgICAgICBEaTAgPSBEdTBeUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN3ID0gQW1vMV5BYm8wXkFrbzFeQXNvMF5BZ28xOyBcCisgICAgICAgIERpMSA9IER1MV5DdzsgXAorXAorICAgICAgICBEdTAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgRHUxID0gQ3leQ3g7IFwKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMigpIFwKKyAgICAgICAgQ3ggPSBBa3UxXkFndTBeQWJ1MV5Bc3UxXkFtdTE7IFwKKyAgICAgICAgRHUxID0gQW1lMF5Ba2UwXkFnZTBeQWJlMF5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBa3UwXkFndTFeQWJ1MF5Bc3UwXkFtdTA7IFwKKyAgICAgICAgRHUwID0gQW1lMV5Ba2UxXkFnZTFeQWJlMV5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFnaTFeQWJpMV5Bc2kxXkFtaTBeQWtpMTsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBZ2kwXkFiaTBeQXNpMF5BbWkxXkFraTA7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFzYTFeQW1hMV5Ba2ExXkFnYTE7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5Bc2EwXkFtYTBeQWthMF5BZ2EwOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQXNvMF5BbW8wXkFrbzFeQWdvMF5BYm8wOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBc28xXkFtbzFeQWtvMF5BZ28xXkFibzE7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQzKCkgXAorICAgICAgICBDeCA9IEFtdTFeQWd1MF5Bc3UxXkFrdTBeQWJ1MDsgXAorICAgICAgICBEdTEgPSBBa2UwXkFiZTFeQW1lMV5BZ2UwXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFtdTBeQWd1MV5Bc3UwXkFrdTFeQWJ1MTsgXAorICAgICAgICBEdTAgPSBBa2UxXkFiZTBeQW1lMF5BZ2UxXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQXNpMF5Ba2kwXkFiaTFeQW1pMV5BZ2kxOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFzaTFeQWtpMV5BYmkwXkFtaTBeQWdpMDsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQW1hMF5BZ2ExXkFzYTFeQWthMDsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFtYTFeQWdhMF5Bc2EwXkFrYTE7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBZ28xXkFzbzBeQWtvMF5BYm8wXkFtbzE7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFnbzBeQXNvMV5Ba28xXkFibzFeQW1vMDsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgblJvdW5kcykKK3sKKyAgICB7CisgICAgICAgIFVJTlQzMiBEYTAsIERlMCwgRGkwLCBEbzAsIER1MDsKKyAgICAgICAgVUlOVDMyIERhMSwgRGUxLCBEaTEsIERvMSwgRHUxOworICAgICAgICBVSU5UMzIgQ2EwLCBDZTAsIENpMCwgQ28wLCBDdTA7CisgICAgICAgIFVJTlQzMiBDeCwgQ3ksIEN6LCBDdzsKKyAgICAgICAgI2RlZmluZSBCYSBDYTAKKyAgICAgICAgI2RlZmluZSBCZSBDZTAKKyAgICAgICAgI2RlZmluZSBCaSBDaTAKKyAgICAgICAgI2RlZmluZSBCbyBDbzAKKyAgICAgICAgI2RlZmluZSBCdSBDdTAKKyAgICAgICAgY29uc3QgVUlOVDMyICpwUm91bmRDb25zdGFudHMgPSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDIrKDI0LW5Sb3VuZHMpKjI7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICAjZGVmaW5lIEFiYTAgc3RhdGVBc0hhbGZMYW5lc1sgMF0KKyAgICAgICAgI2RlZmluZSBBYmExIHN0YXRlQXNIYWxmTGFuZXNbIDFdCisgICAgICAgICNkZWZpbmUgQWJlMCBzdGF0ZUFzSGFsZkxhbmVzWyAyXQorICAgICAgICAjZGVmaW5lIEFiZTEgc3RhdGVBc0hhbGZMYW5lc1sgM10KKyAgICAgICAgI2RlZmluZSBBYmkwIHN0YXRlQXNIYWxmTGFuZXNbIDRdCisgICAgICAgICNkZWZpbmUgQWJpMSBzdGF0ZUFzSGFsZkxhbmVzWyA1XQorICAgICAgICAjZGVmaW5lIEFibzAgc3RhdGVBc0hhbGZMYW5lc1sgNl0KKyAgICAgICAgI2RlZmluZSBBYm8xIHN0YXRlQXNIYWxmTGFuZXNbIDddCisgICAgICAgICNkZWZpbmUgQWJ1MCBzdGF0ZUFzSGFsZkxhbmVzWyA4XQorICAgICAgICAjZGVmaW5lIEFidTEgc3RhdGVBc0hhbGZMYW5lc1sgOV0KKyAgICAgICAgI2RlZmluZSBBZ2EwIHN0YXRlQXNIYWxmTGFuZXNbMTBdCisgICAgICAgICNkZWZpbmUgQWdhMSBzdGF0ZUFzSGFsZkxhbmVzWzExXQorICAgICAgICAjZGVmaW5lIEFnZTAgc3RhdGVBc0hhbGZMYW5lc1sxMl0KKyAgICAgICAgI2RlZmluZSBBZ2UxIHN0YXRlQXNIYWxmTGFuZXNbMTNdCisgICAgICAgICNkZWZpbmUgQWdpMCBzdGF0ZUFzSGFsZkxhbmVzWzE0XQorICAgICAgICAjZGVmaW5lIEFnaTEgc3RhdGVBc0hhbGZMYW5lc1sxNV0KKyAgICAgICAgI2RlZmluZSBBZ28wIHN0YXRlQXNIYWxmTGFuZXNbMTZdCisgICAgICAgICNkZWZpbmUgQWdvMSBzdGF0ZUFzSGFsZkxhbmVzWzE3XQorICAgICAgICAjZGVmaW5lIEFndTAgc3RhdGVBc0hhbGZMYW5lc1sxOF0KKyAgICAgICAgI2RlZmluZSBBZ3UxIHN0YXRlQXNIYWxmTGFuZXNbMTldCisgICAgICAgICNkZWZpbmUgQWthMCBzdGF0ZUFzSGFsZkxhbmVzWzIwXQorICAgICAgICAjZGVmaW5lIEFrYTEgc3RhdGVBc0hhbGZMYW5lc1syMV0KKyAgICAgICAgI2RlZmluZSBBa2UwIHN0YXRlQXNIYWxmTGFuZXNbMjJdCisgICAgICAgICNkZWZpbmUgQWtlMSBzdGF0ZUFzSGFsZkxhbmVzWzIzXQorICAgICAgICAjZGVmaW5lIEFraTAgc3RhdGVBc0hhbGZMYW5lc1syNF0KKyAgICAgICAgI2RlZmluZSBBa2kxIHN0YXRlQXNIYWxmTGFuZXNbMjVdCisgICAgICAgICNkZWZpbmUgQWtvMCBzdGF0ZUFzSGFsZkxhbmVzWzI2XQorICAgICAgICAjZGVmaW5lIEFrbzEgc3RhdGVBc0hhbGZMYW5lc1syN10KKyAgICAgICAgI2RlZmluZSBBa3UwIHN0YXRlQXNIYWxmTGFuZXNbMjhdCisgICAgICAgICNkZWZpbmUgQWt1MSBzdGF0ZUFzSGFsZkxhbmVzWzI5XQorICAgICAgICAjZGVmaW5lIEFtYTAgc3RhdGVBc0hhbGZMYW5lc1szMF0KKyAgICAgICAgI2RlZmluZSBBbWExIHN0YXRlQXNIYWxmTGFuZXNbMzFdCisgICAgICAgICNkZWZpbmUgQW1lMCBzdGF0ZUFzSGFsZkxhbmVzWzMyXQorICAgICAgICAjZGVmaW5lIEFtZTEgc3RhdGVBc0hhbGZMYW5lc1szM10KKyAgICAgICAgI2RlZmluZSBBbWkwIHN0YXRlQXNIYWxmTGFuZXNbMzRdCisgICAgICAgICNkZWZpbmUgQW1pMSBzdGF0ZUFzSGFsZkxhbmVzWzM1XQorICAgICAgICAjZGVmaW5lIEFtbzAgc3RhdGVBc0hhbGZMYW5lc1szNl0KKyAgICAgICAgI2RlZmluZSBBbW8xIHN0YXRlQXNIYWxmTGFuZXNbMzddCisgICAgICAgICNkZWZpbmUgQW11MCBzdGF0ZUFzSGFsZkxhbmVzWzM4XQorICAgICAgICAjZGVmaW5lIEFtdTEgc3RhdGVBc0hhbGZMYW5lc1szOV0KKyAgICAgICAgI2RlZmluZSBBc2EwIHN0YXRlQXNIYWxmTGFuZXNbNDBdCisgICAgICAgICNkZWZpbmUgQXNhMSBzdGF0ZUFzSGFsZkxhbmVzWzQxXQorICAgICAgICAjZGVmaW5lIEFzZTAgc3RhdGVBc0hhbGZMYW5lc1s0Ml0KKyAgICAgICAgI2RlZmluZSBBc2UxIHN0YXRlQXNIYWxmTGFuZXNbNDNdCisgICAgICAgICNkZWZpbmUgQXNpMCBzdGF0ZUFzSGFsZkxhbmVzWzQ0XQorICAgICAgICAjZGVmaW5lIEFzaTEgc3RhdGVBc0hhbGZMYW5lc1s0NV0KKyAgICAgICAgI2RlZmluZSBBc28wIHN0YXRlQXNIYWxmTGFuZXNbNDZdCisgICAgICAgICNkZWZpbmUgQXNvMSBzdGF0ZUFzSGFsZkxhbmVzWzQ3XQorICAgICAgICAjZGVmaW5lIEFzdTAgc3RhdGVBc0hhbGZMYW5lc1s0OF0KKyAgICAgICAgI2RlZmluZSBBc3UxIHN0YXRlQXNIYWxmTGFuZXNbNDldCisKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgLyogLS0tIENvZGUgZm9yIDQgcm91bmRzICovCisKKyAgICAgICAgICAgIC8qIC0tLSB1c2luZyBmYWN0b3IgMiBpbnRlcmxlYXZpbmcsIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gMzItYml0IHdvcmRzICovCisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQwKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtpMV5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbW8xXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzdTBeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdlMV5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2kwXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtbzBeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXN1MV5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2ExXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1lMV5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2kxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFibzBeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2EwXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1lMF5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2kwXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFibzFeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2EwXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnaTBeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtdTBeRHUwKSwgNCk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2ExXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQWJlMF5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdpMV5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW11MV5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnYTBeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtlMF5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc28wXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFidTFeRHUxKSwgMTQpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdhMV5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2UxXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJ1MF5EdTApLCAxMyk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWExXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYmkwXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWt1MV5EdTEpLCAyMCk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWEwXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYmkxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnbzBeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWt1MF5EdTApLCAxOSk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMSgpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWUxXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnaTFeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNvMV5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa3UxXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQW1lMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtZTBeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdpMF5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc28wXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFrdTBeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNhMV5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrZTFeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbW8xXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNhMF5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJpMF5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbW8wXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1hMV5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2kxXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYnUxXkR1MCksIDQpOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1hMF5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFnZTBeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzaTBeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFidTBeRHUxKSwgNCk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2ExXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiZTFeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdvMV5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc3UxXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFrYTBeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJlMF5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ28wXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzdTBeRHUwKSwgMTMpOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdhMV5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtpMV5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYm8xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtdTFeRHUxKSwgMjApOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdhMF5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtpMF5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYm8wXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtdTBeRHUwKSwgMTkpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgS2VjY2FrQXRvRF9yb3VuZDIoKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMF5EYTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBc2kwXkRpMSksIDIyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnbzBeRG8xKSwgMTEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW11MV5EdTApLCA3KTsKKyAgICAgICAgICAgIEFiYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMCBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCYSA9IChBYmExXkRhMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2UwXkRlMSksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzaTFeRGkwKSwgMjEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdvMV5EbzApLCAxMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbXUwXkR1MSksIDcpOworICAgICAgICAgICAgQWJhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBc2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtYTBeRGExKSwgMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYmUwXkRlMSksIDIzKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFraTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNvMV5EbzApLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UwXkR1MCksIDEwKTsKKyAgICAgICAgICAgIEFtYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtYTFeRGEwKSwgMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYmUxXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFraTFeRGkwKSwgMzApOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNvMF5EbzEpLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UxXkR1MSksIDEwKTsKKyAgICAgICAgICAgIEFtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnYTFeRGEwKSwgOSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbWUwXkRlMSksIDEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJpMV5EaTApLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzFeRG8xKSwgMTMpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXN1MV5EdTApLCA0KTsKKyAgICAgICAgICAgIEFnYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnYTBeRGExKSwgOSk7CisgICAgICAgICAgICBCYSA9IChBbWUxXkRlMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYmkwXkRpMSksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzApLCAxMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc3UwXkR1MSksIDQpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNhMV5EYTApLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2UxXkRlMCksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMV5EaTEpLCA4KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFibzFeRG8wKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWt1MF5EdTEpLCAxNCk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2EwXkRhMSksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnZTBeRGUxKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMCksIDcpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJvMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBa3UxXkR1MCksIDEzKTsKKyAgICAgICAgICAgIEFzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrYTBeRGExKSwgMjEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMF5EZTApLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnaTFeRGkwKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1vMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYnUwXkR1MSksIDIwKTsKKyAgICAgICAgICAgIEFrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrYTFeRGEwKSwgMjApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnaTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1vMV5EbzApLCAyNyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYnUxXkR1MCksIDE5KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQzKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJpMF5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYm8wXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFidTBeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBYmUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJlMV5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYmkxXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFibzFeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJ1MV5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2EwXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdlMF5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnbzBeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBZ2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2ExXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2kxXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnbzFeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2EwXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtlMF5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFraTBeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28wXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrdTBeRHUwKSwgNCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2ExXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQWtlMV5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtpMV5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzFeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWt1MV5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtYTBeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQW1lMF5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTBeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbW8wXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFtdTBeRHUxKSwgMTQpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1hMV5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWUxXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMV5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW11MV5EdTApLCAxMyk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc2EwXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc2kwXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzbzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXN1MF5EdTEpLCAyMCk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc2ExXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc2kxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzbzFeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXN1MV5EdTApLCAxOSk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworICAgICAgICB9CisgICAgICAgIHdoaWxlICggKnBSb3VuZENvbnN0YW50cyAhPSAweEZGICk7CisKKyAgICAgICAgI3VuZGVmIEFiYTAKKyAgICAgICAgI3VuZGVmIEFiYTEKKyAgICAgICAgI3VuZGVmIEFiZTAKKyAgICAgICAgI3VuZGVmIEFiZTEKKyAgICAgICAgI3VuZGVmIEFiaTAKKyAgICAgICAgI3VuZGVmIEFiaTEKKyAgICAgICAgI3VuZGVmIEFibzAKKyAgICAgICAgI3VuZGVmIEFibzEKKyAgICAgICAgI3VuZGVmIEFidTAKKyAgICAgICAgI3VuZGVmIEFidTEKKyAgICAgICAgI3VuZGVmIEFnYTAKKyAgICAgICAgI3VuZGVmIEFnYTEKKyAgICAgICAgI3VuZGVmIEFnZTAKKyAgICAgICAgI3VuZGVmIEFnZTEKKyAgICAgICAgI3VuZGVmIEFnaTAKKyAgICAgICAgI3VuZGVmIEFnaTEKKyAgICAgICAgI3VuZGVmIEFnbzAKKyAgICAgICAgI3VuZGVmIEFnbzEKKyAgICAgICAgI3VuZGVmIEFndTAKKyAgICAgICAgI3VuZGVmIEFndTEKKyAgICAgICAgI3VuZGVmIEFrYTAKKyAgICAgICAgI3VuZGVmIEFrYTEKKyAgICAgICAgI3VuZGVmIEFrZTAKKyAgICAgICAgI3VuZGVmIEFrZTEKKyAgICAgICAgI3VuZGVmIEFraTAKKyAgICAgICAgI3VuZGVmIEFraTEKKyAgICAgICAgI3VuZGVmIEFrbzAKKyAgICAgICAgI3VuZGVmIEFrbzEKKyAgICAgICAgI3VuZGVmIEFrdTAKKyAgICAgICAgI3VuZGVmIEFrdTEKKyAgICAgICAgI3VuZGVmIEFtYTAKKyAgICAgICAgI3VuZGVmIEFtYTEKKyAgICAgICAgI3VuZGVmIEFtZTAKKyAgICAgICAgI3VuZGVmIEFtZTEKKyAgICAgICAgI3VuZGVmIEFtaTAKKyAgICAgICAgI3VuZGVmIEFtaTEKKyAgICAgICAgI3VuZGVmIEFtbzAKKyAgICAgICAgI3VuZGVmIEFtbzEKKyAgICAgICAgI3VuZGVmIEFtdTAKKyAgICAgICAgI3VuZGVmIEFtdTEKKyAgICAgICAgI3VuZGVmIEFzYTAKKyAgICAgICAgI3VuZGVmIEFzYTEKKyAgICAgICAgI3VuZGVmIEFzZTAKKyAgICAgICAgI3VuZGVmIEFzZTEKKyAgICAgICAgI3VuZGVmIEFzaTAKKyAgICAgICAgI3VuZGVmIEFzaTEKKyAgICAgICAgI3VuZGVmIEFzbzAKKyAgICAgICAgI3VuZGVmIEFzbzEKKyAgICAgICAgI3VuZGVmIEFzdTAKKyAgICAgICAgI3VuZGVmIEFzdTEKKyAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgICBLZWNjYWtQMTYwMF9QZXJtdXRlX05yb3VuZHMoc3RhdGUsIDEyKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHModm9pZCAqc3RhdGUpCit7CisgICAgIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyhzdGF0ZSwgMjQpOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MDFjNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQtY29uZmlnLmgKQEAgLTAsMCArMSwzIEBACisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uX2NvbmZpZyAibGFuZSBjb21wbGVtZW50aW5nLCBhbGwgcm91bmRzIHVucm9sbGVkIgorI2RlZmluZSBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisjZGVmaW5lIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MDAxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYwpAQCAtMCwwICsxLDQ3NCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorLyogI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIgKi8KKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtb3B0NjQtY29uZmlnLmgiCisKKyNpZiBOT1RfUFlUSE9OCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7CisvKiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgVUlOVDY0OyAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nKQorI2RlZmluZSBVc2VCZWJpZ29raW1pc2EKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgUk9MNjQoYSwgb2Zmc2V0KSBfcm90bDY0KGEsIG9mZnNldCkKKyNlbGlmIGRlZmluZWQoS2VjY2FrUDE2MDBfdXNlU0hMRCkKKyAgICAjZGVmaW5lIFJPTDY0KHgsTikgKHsgXAorICAgIHJlZ2lzdGVyIFVJTlQ2NCBfX291dDsgXAorICAgIHJlZ2lzdGVyIFVJTlQ2NCBfX2luID0geDsgXAorICAgIF9fYXNtX18gKCJzaGxkICUyLCUwLCUwIiA6ICI9ciIoX19vdXQpIDogIjAiKF9faW4pLCAiaSIoTikpOyBcCisgICAgX19vdXQ7IFwKKyAgICB9KQorI2Vsc2UKKyNkZWZpbmUgUk9MNjQoYSwgb2Zmc2V0KSAoKCgoVUlOVDY0KWEpIDw8IG9mZnNldCkgXiAoKChVSU5UNjQpYSkgPj4gKDY0LW9mZnNldCkpKQorI2VuZGlmCisKKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtNjQubWFjcm9zIgorI2lmZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyNkZWZpbmUgRnVsbFVucm9sbGluZworI2Vsc2UKKyNkZWZpbmUgVW5yb2xsaW5nIEtlY2Nha1AxNjAwX3Vucm9sbGluZworI2VuZGlmCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLXVucm9sbGluZy5tYWNyb3MiCisjaW5jbHVkZSAiU25QLVJlbGFuZWQuaCIKKworc3RhdGljIGNvbnN0IFVJTlQ2NCBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzWzI0XSA9IHsKKyAgICAweDAwMDAwMDAwMDAwMDAwMDFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDgyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4YVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDhiVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDAwMDAwMDA4YVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwODhVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDgwOGJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDAwMDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4OVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDNVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4MFVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwMGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDAwMDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODA4MVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODBVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDAxVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODAwOFVMTCB9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZSh2b2lkICpzdGF0ZSkKK3sKKyAgICBtZW1zZXQoc3RhdGUsIDAsIDIwMCk7CisjaWZkZWYgS2VjY2FrUDE2MDBfdXNlTGFuZUNvbXBsZW1lbnRpbmcKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyAxXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsgMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDhdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzEyXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxN10gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMjBdID0gfihVSU5UNjQpMDsKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBVSU5UNjQgbGFuZTsKKyAgICBpZiAobGVuZ3RoID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhbmUgPSBkYXRhWzBdOworICAgIGVsc2UgeworICAgICAgICBsYW5lID0gMDsKKyAgICAgICAgbWVtY3B5KCZsYW5lLCBkYXRhLCBsZW5ndGgpOworICAgIH0KKyAgICBsYW5lIDw8PSBvZmZzZXQqODsKKyNlbHNlCisgICAgVUlOVDY0IGxhbmUgPSAwOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgIGxhbmUgfD0gKChVSU5UNjQpZGF0YVtpXSkgPDwgKChpK29mZnNldCkqOCk7CisjZW5kaWYKKyAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gXj0gbGFuZTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZExhbmVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgdW5zaWduZWQgaW50IGkgPSAwOworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAvKiBJZiBlaXRoZXIgcG9pbnRlciBpcyBtaXNhbGlnbmVkLCBmYWxsIGJhY2sgdG8gYnl0ZS13aXNlIHhvci4gKi8KKworICAgIGlmICgoKCgodWludHB0cl90KXN0YXRlKSAmIDcpICE9IDApIHx8ICgoKCh1aW50cHRyX3QpZGF0YSkgJiA3KSAhPSAwKSkgeworICAgICAgZm9yIChpID0gMDsgaSA8IGxhbmVDb3VudCAqIDg7IGkrKykgeworICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXN0YXRlKVtpXSBePSBkYXRhW2ldOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAvKiBPdGhlcndpc2UuLi4gKi8KKworICAgICAgZm9yKCA7IChpKzgpPD1sYW5lQ291bnQ7IGkrPTgpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsyXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsyXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krM10gXj0gKChVSU5UNjQqKWRhdGEpW2krM107CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzRdIF49ICgoVUlOVDY0KilkYXRhKVtpKzRdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs1XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs1XTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krNl0gXj0gKChVSU5UNjQqKWRhdGEpW2krNl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzddIF49ICgoVUlOVDY0KilkYXRhKVtpKzddOworICAgICAgfQorICAgICAgZm9yKCA7IChpKzQpPD1sYW5lQ291bnQ7IGkrPTQpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsyXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsyXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krM10gXj0gKChVSU5UNjQqKWRhdGEpW2krM107CisgICAgICB9CisgICAgICBmb3IoIDsgKGkrMik8PWxhbmVDb3VudDsgaSs9MikgeworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSswXSBePSAoKFVJTlQ2NCopZGF0YSlbaSswXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMV0gXj0gKChVSU5UNjQqKWRhdGEpW2krMV07CisgICAgICB9CisgICAgICBpZiAoaTxsYW5lQ291bnQpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBVSU5UOCAqY3VyRGF0YSA9IGRhdGE7CisgICAgZm9yKGk9MDsgaTxsYW5lQ291bnQ7IGkrKywgY3VyRGF0YSs9OCkgeworICAgICAgICBVSU5UNjQgbGFuZSA9IChVSU5UNjQpY3VyRGF0YVswXQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzFdIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbMl0gPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbM10gPDwgMjQpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNF0gPDwzMikKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs1XSA8PCA0MCkKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs2XSA8PCA0OCkKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs3XSA8PCA1Nik7CisgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaV0gXj0gbGFuZTsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIFVJTlQ2NCBsYW5lID0gYnl0ZTsKKyAgICBsYW5lIDw8PSAob2Zmc2V0JTgpKjg7CisgICAgKChVSU5UNjQqKXN0YXRlKVtvZmZzZXQvOF0gXj0gbGFuZTsKK30KKyNlbmRpZgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisjaWZkZWYgS2VjY2FrUDE2MDBfdXNlTGFuZUNvbXBsZW1lbnRpbmcKKyAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXN0YXRlKVtsYW5lUG9zaXRpb24qOCtvZmZzZXQraV0gPSB+ZGF0YVtpXTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBtZW1jcHkoKHVuc2lnbmVkIGNoYXIqKXN0YXRlK2xhbmVQb3NpdGlvbio4K29mZnNldCwgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspCisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IH4oKGNvbnN0IFVJTlQ2NCopZGF0YSlbbGFuZVBvc2l0aW9uXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dID0gKChjb25zdCBVSU5UNjQqKWRhdGEpW2xhbmVQb3NpdGlvbl07CisjZWxzZQorICAgIG1lbWNweShzdGF0ZSwgZGF0YSwgbGFuZUNvdW50KjgpOworI2VuZGlmCisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcywgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGJ5dGVDb3VudC84OyBsYW5lUG9zaXRpb24rKykKKyAgICAgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dID0gfjA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IDA7CisgICAgaWYgKGJ5dGVDb3VudCU4ICE9IDApIHsKKyAgICAgICAgbGFuZVBvc2l0aW9uID0gYnl0ZUNvdW50Lzg7CisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgIG1lbXNldCgodW5zaWduZWQgY2hhciopc3RhdGUrbGFuZVBvc2l0aW9uKjgsIDB4RkYsIGJ5dGVDb3VudCU4KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVtc2V0KCh1bnNpZ25lZCBjaGFyKilzdGF0ZStsYW5lUG9zaXRpb24qOCwgMCwgYnl0ZUNvdW50JTgpOworICAgIH0KKyNlbHNlCisgICAgbWVtc2V0KHN0YXRlLCAwLCBieXRlQ291bnQpOworI2VuZGlmCisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICByb3VuZHMyNAorICAgIGNvcHlUb1N0YXRlKHN0YXRlQXNMYW5lcywgQSkKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHModm9pZCAqc3RhdGUpCit7CisgICAgZGVjbGFyZUFCQ0RFCisgICAgI2lmbmRlZiBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgI2VuZGlmCisgICAgVUlOVDY0ICpzdGF0ZUFzTGFuZXMgPSAoVUlOVDY0KilzdGF0ZTsKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGVBc0xhbmVzKQorICAgIHJvdW5kczEyCisgICAgY29weVRvU3RhdGUoc3RhdGVBc0xhbmVzLCBBKQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ2NCBsYW5lID0gKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICBsYW5lID0gfmxhbmU7CisjZW5kaWYKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHsKKyAgICAgICAgVUlOVDY0IGxhbmUxWzFdOworICAgICAgICBsYW5lMVswXSA9IGxhbmU7CisgICAgICAgIG1lbWNweShkYXRhLCAoVUlOVDgqKWxhbmUxK29mZnNldCwgbGVuZ3RoKTsKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBpOworICAgIGxhbmUgPj49IG9mZnNldCo4OworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgZGF0YVtpXSA9IGxhbmUgJiAweEZGOworICAgICAgICBsYW5lID4+PSA4OworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiAhPSBJU19MSVRUTEVfRU5ESUFOKQordm9pZCBmcm9tV29yZFRvQnl0ZXMoVUlOVDggKmJ5dGVzLCBjb25zdCBVSU5UNjQgd29yZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8KDY0LzgpOyBpKyspCisgICAgICAgIGJ5dGVzW2ldID0gKHdvcmQgPj4gKDgqaSkpICYgMHhGRjsKK30KKyNlbmRpZgorCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIG1lbWNweShkYXRhLCBzdGF0ZSwgbGFuZUNvdW50KjgpOworI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyspCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyhkYXRhKyhpKjgpLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyNlbmRpZgorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKGxhbmVDb3VudCA+IDEpIHsKKyAgICAgICAgKChVSU5UNjQqKWRhdGEpWyAxXSA9IH4oKFVJTlQ2NCopZGF0YSlbIDFdOworICAgICAgICBpZiAobGFuZUNvdW50ID4gMikgeworICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWyAyXSA9IH4oKFVJTlQ2NCopZGF0YSlbIDJdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbIDhdID0gfigoVUlOVDY0KilkYXRhKVsgOF07CisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDEyKSB7CisgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsxMl0gPSB+KChVSU5UNjQqKWRhdGEpWzEyXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMTddID0gfigoVUlOVDY0KilkYXRhKVsxN107CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMjBdID0gfigoVUlOVDY0KilkYXRhKVsyMF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ2NCBsYW5lID0gKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICBsYW5lID0gfmxhbmU7CisjZW5kaWYKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgIFVJTlQ2NCBsYW5lMVsxXTsKKyAgICAgICAgbGFuZTFbMF0gPSBsYW5lOworICAgICAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0cHV0W2ldID0gaW5wdXRbaV0gXiAoKFVJTlQ4KilsYW5lMSlbb2Zmc2V0K2ldOworICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgbGFuZSA+Pj0gb2Zmc2V0Kjg7CisgICAgZm9yKGk9MDsgaTxsZW5ndGg7IGkrKykgeworICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIChsYW5lICYgMHhGRik7CisgICAgICAgIGxhbmUgPj49IDg7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkTGFuZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKKyAgICB1bnNpZ25lZCBjaGFyIHRlbXBbOF07CisgICAgdW5zaWduZWQgaW50IGo7CisjZW5kaWYKKworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyspIHsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVtpXSA9ICgoVUlOVDY0KilpbnB1dClbaV0gXiAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldOworI2Vsc2UKKyAgICAgICAgZnJvbVdvcmRUb0J5dGVzKHRlbXAsICgoY29uc3QgVUlOVDY0KilzdGF0ZSlbaV0pOworICAgICAgICBmb3Ioaj0wOyBqPDg7IGorKykKKyAgICAgICAgICAgIG91dHB1dFtpKjgral0gPSBpbnB1dFtpKjgral0gXiB0ZW1wW2pdOworI2VuZGlmCisgICAgfQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKGxhbmVDb3VudCA+IDEpIHsKKyAgICAgICAgKChVSU5UNjQqKW91dHB1dClbIDFdID0gfigoVUlOVDY0KilvdXRwdXQpWyAxXTsKKyAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyAyXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgMl07CisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gOCkgeworICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyA4XSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgOF07CisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDEyKSB7CisgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzEyXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsxMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKW91dHB1dClbMTddID0gfigoVUlOVDY0KilvdXRwdXQpWzE3XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAyMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzIwXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsyMF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3NpemVfdCBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbikKK3sKKyAgICBzaXplX3Qgb3JpZ2luYWxEYXRhQnl0ZUxlbiA9IGRhdGFCeXRlTGVuOworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisgICAgVUlOVDY0ICppbkRhdGFBc0xhbmVzID0gKFVJTlQ2NCopZGF0YTsKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGVBc0xhbmVzKQorICAgIHdoaWxlKGRhdGFCeXRlTGVuID49IGxhbmVDb3VudCo4KSB7CisgICAgICAgIGFkZElucHV0KEEsIGluRGF0YUFzTGFuZXMsIGxhbmVDb3VudCkKKyAgICAgICAgcm91bmRzMjQKKyAgICAgICAgaW5EYXRhQXNMYW5lcyArPSBsYW5lQ291bnQ7CisgICAgICAgIGRhdGFCeXRlTGVuIC09IGxhbmVDb3VudCo4OworICAgIH0KKyAgICBjb3B5VG9TdGF0ZShzdGF0ZUFzTGFuZXMsIEEpCisgICAgcmV0dXJuIG9yaWdpbmFsRGF0YUJ5dGVMZW4gLSBkYXRhQnl0ZUxlbjsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLXVucm9sbGluZy5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA1Y2UyOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zCkBAIC0wLDAgKzEsMTg1IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWYgKGRlZmluZWQoRnVsbFVucm9sbGluZykpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDEyKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0xMikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA1LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDYsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNywgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA4LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDksIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxMCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzExLCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE0LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTUsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE3LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTgsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhKDIzLCBFLCBBKSBcCisKKyNlbGlmIChVbnJvbGxpbmcgPT0gNikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9NikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMywgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzQsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs1LCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MTI7IGk8MjQ7IGkrPTYpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDQpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9NCkgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMywgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDMpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTMpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz0zKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAyKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0yKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz0yKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDEpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrKykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKyspIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2Vsc2UKKyNlcnJvciAiVW5yb2xsaW5nIGlzIG5vdCBjb3JyZWN0bHkgc3BlY2lmaWVkISIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmRiNzMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMKQEAgLTAsMCArMSw5MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5oIgorCisjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgI2luY2x1ZGUgImRpc3BsYXlJbnRlcm1lZGlhdGVWYWx1ZXMuaCIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1AyMDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC0yMDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDIwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1AyMDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCAyMDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1AyMDBfUGVybXV0ZV8xOHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0YyMDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjIwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1A0MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC00MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDQwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1A0MDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCA0MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1A0MDBfUGVybXV0ZV8yMHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0Y0MDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjQwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1A4MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC04MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDgwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1A4MDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCA4MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1A4MDBfUGVybXV0ZV8yMnJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0Y4MDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjgwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1AxNjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAuaCIKKworICAgICNkZWZpbmUgcHJlZml4IEtlY2Nha1dpZHRoMTYwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1AxNjAwCisgICAgI2RlZmluZSBTblBfd2lkdGggMTYwMAorICAgICNkZWZpbmUgU25QX1Blcm11dGUgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0YxNjAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0YxNjAwX0Zhc3RMb29wX0Fic29yYgorICAgICNlbmRpZgorICAgICAgICAjaW5jbHVkZSAiS2VjY2FrU3BvbmdlLmluYyIKKyAgICAjdW5kZWYgcHJlZml4CisgICAgI3VuZGVmIFNuUAorICAgICN1bmRlZiBTblBfd2lkdGgKKyAgICAjdW5kZWYgU25QX1Blcm11dGUKKyAgICAjdW5kZWYgU25QX0Zhc3RMb29wX0Fic29yYgorI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNGJhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaApAQCAtMCwwICsxLDE3MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrU3BvbmdlX2hfCisjZGVmaW5lIF9LZWNjYWtTcG9uZ2VfaF8KKworLyoqIEdlbmVyYWwgaW5mb3JtYXRpb24KKyAgKgorICAqIFRoZSBmb2xsb3dpbmcgdHlwZSBhbmQgZnVuY3Rpb25zIGFyZSBub3QgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIFRoZWlyCisgICogZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmljLCB3aXRoIHRoZSBwcmVmaXggUHJlZml4IHJlcGxhY2VkIGJ5CisgICogLSBLZWNjYWtXaWR0aDIwMCBmb3IgYSBzcG9uZ2UgZnVuY3Rpb24gYmFzZWQgb24gS2VjY2FrLWZbMjAwXQorICAqIC0gS2VjY2FrV2lkdGg0MDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzQwMF0KKyAgKiAtIEtlY2Nha1dpZHRoODAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZls4MDBdCisgICogLSBLZWNjYWtXaWR0aDE2MDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzE2MDBdCisgICoKKyAgKiBJbiBhbGwgdGhlc2UgZnVuY3Rpb25zLCB0aGUgcmF0ZSBhbmQgY2FwYWNpdHkgbXVzdCBzdW0gdG8gdGhlIHdpZHRoIG9mIHRoZQorICAqIGNob3NlbiBwZXJtdXRhdGlvbi4gRm9yIGluc3RhbmNlLCB0byB1c2UgdGhlIHNwb25nZSBmdW5jdGlvbgorICAqIEtlY2Nha1tyPTEzNDQsIGM9MjU2XSwgb25lIG11c3QgdXNlIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2UoKSBvciBhIGNvbWJpbmF0aW9uCisgICogb2YgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUoKSwgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigpLAorICAqIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpIGFuZAorICAqIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplKCkuCisgICoKKyAgKiBUaGUgUHJlZml4X1Nwb25nZUluc3RhbmNlIGNvbnRhaW5zIHRoZSBzcG9uZ2UgaW5zdGFuY2UgYXR0cmlidXRlcyBmb3IgdXNlCisgICogd2l0aCB0aGUgUHJlZml4X1Nwb25nZSogZnVuY3Rpb25zLgorICAqIEl0IGdhdGhlcnMgdGhlIHN0YXRlIHByb2Nlc3NlZCBieSB0aGUgcGVybXV0YXRpb24gYXMgd2VsbCBhcyB0aGUgcmF0ZSwKKyAgKiB0aGUgcG9zaXRpb24gb2YgaW5wdXQvb3V0cHV0IGJ5dGVzIGluIHRoZSBzdGF0ZSBhbmQgdGhlIHBoYXNlCisgICogKGFic29yYmluZyBvciBzcXVlZXppbmcpLgorICAqLworCisjaWZkZWYgRG9udFJlYWxseUluY2x1ZGVfRG9jdW1lbnRhdGlvbk9ubHkKKy8qKiBGdW5jdGlvbiB0byBldmFsdWF0ZSB0aGUgc3BvbmdlIGZ1bmN0aW9uIEtlY2Nha1tyLCBjXSBpbiBhIHNpbmdsZSBjYWxsLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHBhcmFtICBpbnB1dCAgICAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgbWVzc2FnZSAoYmVmb3JlIHRoZSBzdWZmaXgpLgorICAqIEBwYXJhbSAgaW5wdXRCeXRlTGVuICAgIFRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1lc3NhZ2UgaW4gYnl0ZXMuCisgICogQHBhcmFtICBzdWZmaXggICAgICAgICAgQnl0ZSBjb250YWluaW5nIGZyb20gMCB0byA3IHN1ZmZpeCBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGFic29yYmVkIGFmdGVyIEBhIGlucHV0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIDxpPm48L2k+IGJpdHMgbXVzdCBiZSBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9ucy4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIG11c3QgYmUgZGVsaW1pdGVkIHdpdGggYSBiaXQgMSBhdCBwb3NpdGlvbiA8aT5uPC9pPgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudGluZyBmcm9tIDA9TFNCIHRvIDc9TVNCKSBhbmQgZm9sbG93ZWQgYnkgYml0cyAwCisgICogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBwb3NpdGlvbiA8aT5uPC9pPisxIHRvIHBvc2l0aW9uIDcuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlczoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBubyBiaXRzIGFyZSB0byBiZSBhYnNvcmJlZCwgdGhlbiBAYSBzdWZmaXggbXVzdCBiZSAweDAxLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSAyLWJpdCBzZXF1ZW5jZSAwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4MDQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDUtYml0IHNlcXVlbmNlIDAsMSwwLDAsMSBpcyB0byBiZSBhYnNvcmJlZCwgQGEgc3VmZml4IG11c3QgYmUgMHgzMi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNy1iaXQgc2VxdWVuY2UgMSwxLDAsMSwwLDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgc3VmZml4IG11c3QgYmUgMHg4Qi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAuCisgICogQHBhcmFtICBvdXRwdXQgICAgICAgICAgUG9pbnRlciB0byB0aGUgb3V0cHV0IGJ1ZmZlci4KKyAgKiBAcGFyYW0gIG91dHB1dEJ5dGVMZW4gICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJ5dGVzLgorICAqIEBwcmUgICAgT25lIG11c3QgaGF2ZSByK2MgZXF1YWwgdG8gdGhlIHN1cHBvcnRlZCB3aWR0aCBvZiB0aGlzIGltcGxlbWVudGF0aW9uCisgICogICAgICAgICBhbmQgdGhlIHJhdGUgYSBtdWx0aXBsZSBvZiA4IGJpdHMgKG9uZSBieXRlKSBpbiB0aGlzIGltcGxlbWVudGF0aW9uLgorICAqIEBwcmUgICAgQGEgc3VmZml4IOKJoCAweDAwCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIEtlY2Nha1tyLCBjXSBzcG9uZ2UgZnVuY3Rpb24uCisgICogVGhlIHBoYXNlIG9mIHRoZSBzcG9uZ2UgZnVuY3Rpb24gaXMgc2V0IHRvIGFic29yYmluZy4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgdG8gYmUgaW5pdGlhbGl6ZWQuCisgICogQHBhcmFtICByYXRlICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIHJhdGUgci4KKyAgKiBAcGFyYW0gIGNhcGFjaXR5ICAgIFRoZSB2YWx1ZSBvZiB0aGUgY2FwYWNpdHkgYy4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjIGVxdWFsIHRvIHRoZSBzdXBwb3J0ZWQgd2lkdGggb2YgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAqICAgICAgICAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIChvbmUgYnl0ZSkgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSk7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBieXRlcyBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwYXJhbSAgZGF0YUJ5dGVMZW4gIFRoZSBudW1iZXIgb2YgaW5wdXQgYnl0ZXMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBUaGUgc3BvbmdlIGZ1bmN0aW9uIG11c3QgYmUgaW4gdGhlIGFic29yYmluZyBwaGFzZSwKKyAgKiAgICAgICAgIGkuZS4sIFByZWZpeF9TcG9uZ2VTcXVlZXplKCkgb3IgUHJlZml4X1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCkKKyAgKiAgICAgICAgIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlQWJzb3JiKFByZWZpeF9TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBiaXRzIGZvciB0aGUgc3BvbmdlIGZ1bmN0aW9uIHRvIGFic29yYgorICAqIGFuZCB0aGVuIHRvIHN3aXRjaCB0byB0aGUgc3F1ZWV6aW5nIHBoYXNlLgorICAqIEBwYXJhbSAgc3BvbmdlSW5zdGFuY2UgIFBvaW50ZXIgdG8gdGhlIHNwb25nZSBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBQcmVmaXhfU3BvbmdlSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGVsaW1pdGVkRGF0YSAgIEJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyB0cmFpbGluZyBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICB0aGF0IG11c3QgYmUgYWJzb3JiZWQuCisgICogICAgICAgICAgICAgICAgICAgICBUaGVzZSA8aT5uPC9pPiBiaXRzIG11c3QgYmUgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbnMuCisgICogICAgICAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIG11c3QgYmUgZGVsaW1pdGVkIHdpdGggYSBiaXQgMSBhdCBwb3NpdGlvbiA8aT5uPC9pPgorICAqICAgICAgICAgICAgICAgICAgICAgKGNvdW50aW5nIGZyb20gMD1MU0IgdG8gNz1NU0IpIGFuZCBmb2xsb3dlZCBieSBiaXRzIDAKKyAgKiAgICAgICAgICAgICAgICAgICAgIGZyb20gcG9zaXRpb24gPGk+bjwvaT4rMSB0byBwb3NpdGlvbiA3LgorICAqICAgICAgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlczoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIG5vIGJpdHMgYXJlIHRvIGJlIGFic29yYmVkLCB0aGVuIEBhIGRlbGltaXRlZERhdGEgbXVzdCBiZSAweDAxLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDItYml0IHNlcXVlbmNlIDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4MDQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNS1iaXQgc2VxdWVuY2UgMCwxLDAsMCwxIGlzIHRvIGJlIGFic29yYmVkLCBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHgzMi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSA3LWJpdCBzZXF1ZW5jZSAxLDEsMCwxLDAsMCwwIGlzIHRvIGJlIGFic29yYmVkLCBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHg4Qi4KKyAgKiAgICAgICAgICAgICAgICAgICAgIC4KKyAgKiBAcHJlICAgIFRoZSBzcG9uZ2UgZnVuY3Rpb24gbXVzdCBiZSBpbiB0aGUgYWJzb3JiaW5nIHBoYXNlLAorICAqICAgICAgICAgaS5lLiwgUHJlZml4X1Nwb25nZVNxdWVlemUoKSBvciBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKQorICAqICAgICAgICAgbXVzdCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUuCisgICogQHByZSAgICBAYSBkZWxpbWl0ZWREYXRhIOKJoCAweDAwCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZERhdGEpOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBzcXVlZXplIG91dHB1dCBkYXRhIGZyb20gdGhlIHNwb25nZSBmdW5jdGlvbi4KKyAgKiBJZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIHdhcyBpbiB0aGUgYWJzb3JiaW5nIHBoYXNlLCB0aGlzIGZ1bmN0aW9uCisgICogc3dpdGNoZXMgaXQgdG8gdGhlIHNxdWVlemluZyBwaGFzZQorICAqIGFzIGlmIFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhzcG9uZ2VJbnN0YW5jZSwgMHgwMSkgd2FzIGNhbGxlZC4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBkYXRhQnl0ZUxlbiBUaGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBkZXNpcmVkLgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlU3F1ZWV6ZShQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJhbGlnbi5oIgorCisjZGVmaW5lIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKHByZWZpeCwgc2l6ZSwgYWxpZ25tZW50KSBcCisgICAgQUxJR04oYWxpZ25tZW50KSB0eXBlZGVmIHN0cnVjdCBwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZVN0cnVjdCB7IFwKKyAgICAgICAgdW5zaWduZWQgY2hhciBzdGF0ZVtzaXplXTsgXAorICAgICAgICB1bnNpZ25lZCBpbnQgcmF0ZTsgXAorICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZUlPSW5kZXg7IFwKKyAgICAgICAgaW50IHNxdWVlemluZzsgXAorICAgIH0gcHJlZml4IyNfU3BvbmdlSW5zdGFuY2U7CisKKyNkZWZpbmUgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMocHJlZml4KSBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZSh1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgc2l6ZV90IGlucHV0Qnl0ZUxlbiwgdW5zaWduZWQgY2hhciBzdWZmaXgsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgc2l6ZV90IG91dHB1dEJ5dGVMZW4pOyBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZUluaXRpYWxpemUocHJlZml4IyNfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5KTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VBYnNvcmIocHJlZml4IyNfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOyBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VTcXVlZXplKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKworI2lmbmRlZiBLZWNjYWtQMjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMjAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoMjAwLCBLZWNjYWtQMjAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1AyMDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGgyMDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQNDAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtNDAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoNDAwLCBLZWNjYWtQNDAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1A0MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGg0MDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQODAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtODAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoODAwLCBLZWNjYWtQODAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1A4MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGg4MDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMTYwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VTdHJ1Y3R1cmUoS2VjY2FrV2lkdGgxNjAwLCBLZWNjYWtQMTYwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQMTYwMF9zdGF0ZUFsaWdubWVudCkKKyAgICBLQ1BfRGVjbGFyZVNwb25nZUZ1bmN0aW9ucyhLZWNjYWtXaWR0aDE2MDApCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaW5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTA3MzlkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYwpAQCAtMCwwICsxLDMzMiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBKT0lOMChhLCBiKSAgICAgICAgICAgICAgICAgICAgIGEgIyMgYgorI2RlZmluZSBKT0lOKGEsIGIpICAgICAgICAgICAgICAgICAgICAgIEpPSU4wKGEsIGIpCisKKyNkZWZpbmUgU3BvbmdlICAgICAgICAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZSkKKyNkZWZpbmUgU3BvbmdlSW5zdGFuY2UgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUluc3RhbmNlKQorI2RlZmluZSBTcG9uZ2VJbml0aWFsaXplICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3BvbmdlSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU3BvbmdlQWJzb3JiICAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUFic29yYikKKyNkZWZpbmUgU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKQorI2RlZmluZSBTcG9uZ2VTcXVlZXplICAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3BvbmdlU3F1ZWV6ZSkKKworI2RlZmluZSBTblBfc3RhdGVTaXplSW5CeXRlcyAgICAgICAgICAgIEpPSU4oU25QLCBfc3RhdGVTaXplSW5CeXRlcykKKyNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlQWxpZ25tZW50KQorI2RlZmluZSBTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICAgIEpPSU4oU25QLCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU25QX0luaXRpYWxpemUgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9BZGRCeXRlICAgICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9BZGRCeXRlKQorI2RlZmluZSBTblBfQWRkQnl0ZXMgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0Qnl0ZXMpCisKK2ludCBTcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKQoreworICAgIEFMSUdOKFNuUF9zdGF0ZUFsaWdubWVudCkgdW5zaWduZWQgY2hhciBzdGF0ZVtTblBfc3RhdGVTaXplSW5CeXRlc107CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjdXJJbnB1dCA9IGlucHV0OworICAgIHVuc2lnbmVkIGNoYXIgKmN1ck91dHB1dCA9IG91dHB1dDsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSByYXRlLzg7CisKKyAgICBpZiAocmF0ZStjYXBhY2l0eSAhPSBTblBfd2lkdGgpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICgocmF0ZSA8PSAwKSB8fCAocmF0ZSA+IFNuUF93aWR0aCkgfHwgKChyYXRlICUgOCkgIT0gMCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChzdWZmaXggPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBzdGF0ZSAqLworCisgICAgU25QX1N0YXRpY0luaXRpYWxpemUoKTsKKyAgICBTblBfSW5pdGlhbGl6ZShzdGF0ZSk7CisKKyAgICAvKiBGaXJzdCwgYWJzb3JiIHdob2xlIGJsb2NrcyAqLworCisjaWZkZWYgU25QX0Zhc3RMb29wX0Fic29yYgorICAgIGlmICgoKHJhdGVJbkJ5dGVzICUgKFNuUF93aWR0aC8yMDApKSA9PSAwKSAmJiAoaW5wdXRCeXRlTGVuID49IHJhdGVJbkJ5dGVzKSkgeworICAgICAgICAvKiBmYXN0IGxhbmU6IHdob2xlIGxhbmUgcmF0ZSAqLworCisgICAgICAgIHNpemVfdCBqOworICAgICAgICBqID0gU25QX0Zhc3RMb29wX0Fic29yYihzdGF0ZSwgcmF0ZUluQnl0ZXMvKFNuUF93aWR0aC8yMDApLCBjdXJJbnB1dCwgaW5wdXRCeXRlTGVuKTsKKyAgICAgICAgY3VySW5wdXQgKz0gajsKKyAgICAgICAgaW5wdXRCeXRlTGVuIC09IGo7CisgICAgfQorI2VuZGlmCisgICAgd2hpbGUoaW5wdXRCeXRlTGVuID49IChzaXplX3QpcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VySW5wdXQsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgY3VySW5wdXQsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICAgICBjdXJJbnB1dCArPSByYXRlSW5CeXRlczsKKyAgICAgICAgaW5wdXRCeXRlTGVuIC09IHJhdGVJbkJ5dGVzOworICAgIH0KKworICAgIC8qIFRoZW4sIGFic29yYiB3aGF0IHJlbWFpbnMgKi8KKworICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpaW5wdXRCeXRlTGVuOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChwYXJ0KSIsIGN1cklucHV0LCBwYXJ0aWFsQmxvY2spOworICAgICNlbmRpZgorICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgY3VySW5wdXQsIDAsIHBhcnRpYWxCbG9jayk7CisKKyAgICAvKiBGaW5hbGx5LCBhYnNvcmIgdGhlIHN1ZmZpeCAqLworCisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhMVsxXTsKKyAgICAgICAgZGVsaW1pdGVkRGF0YTFbMF0gPSBzdWZmaXg7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKGxhc3QgZmV3IGJpdHMgKyBmaXJzdCBiaXQgb2YgcGFkZGluZykiLCBkZWxpbWl0ZWREYXRhMSwgMSk7CisgICAgfQorICAgICNlbmRpZgorICAgIC8qIExhc3QgZmV3IGJpdHMsIHdob3NlIGRlbGltaXRlciBjb2luY2lkZXMgd2l0aCBmaXJzdCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgU25QX0FkZEJ5dGUoc3RhdGUsIHN1ZmZpeCwgcGFydGlhbEJsb2NrKTsKKyAgICAvKiBJZiB0aGUgZmlyc3QgYml0IG9mIHBhZGRpbmcgaXMgYXQgcG9zaXRpb24gcmF0ZS0xLCB3ZSBuZWVkIGEgd2hvbGUgbmV3IGJsb2NrIGZvciB0aGUgc2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBpZiAoKHN1ZmZpeCA+PSAweDgwKSAmJiAocGFydGlhbEJsb2NrID09IChyYXRlSW5CeXRlcy0xKSkpCisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAvKiBTZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKHN0YXRlLCAweDgwLCByYXRlSW5CeXRlcy0xKTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGJsb2NrW1NuUF93aWR0aC84XTsKKyAgICAgICAgbWVtc2V0KGJsb2NrLCAwLCBTblBfd2lkdGgvOCk7CisgICAgICAgIGJsb2NrW3JhdGVJbkJ5dGVzLTFdID0gMHg4MDsKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTZWNvbmQgYml0IG9mIHBhZGRpbmciLCBibG9jaywgcmF0ZUluQnl0ZXMpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICBTblBfUGVybXV0ZShzdGF0ZSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIGRpc3BsYXlUZXh0KDEsICItLS0gU3dpdGNoaW5nIHRvIHNxdWVlemluZyBwaGFzZSAtLS0iKTsKKyAgICAjZW5kaWYKKworICAgIC8qIEZpcnN0LCBvdXRwdXQgd2hvbGUgYmxvY2tzICovCisKKyAgICB3aGlsZShvdXRwdXRCeXRlTGVuID4gKHNpemVfdClyYXRlSW5CeXRlcykgeworICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBjdXJPdXRwdXQsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU3F1ZWV6ZWQgYmxvY2siLCBjdXJPdXRwdXQsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGN1ck91dHB1dCArPSByYXRlSW5CeXRlczsKKyAgICAgICAgb3V0cHV0Qnl0ZUxlbiAtPSByYXRlSW5CeXRlczsKKyAgICB9CisKKyAgICAvKiBGaW5hbGx5LCBvdXRwdXQgd2hhdCByZW1haW5zICovCisKKyAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KW91dHB1dEJ5dGVMZW47CisgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgY3VyT3V0cHV0LCAwLCBwYXJ0aWFsQmxvY2spOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIChwYXJ0KSIsIGN1ck91dHB1dCwgcGFydGlhbEJsb2NrKTsKKyAgICAjZW5kaWYKKworICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VJbml0aWFsaXplKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSkKK3sKKyAgICBpZiAocmF0ZStjYXBhY2l0eSAhPSBTblBfd2lkdGgpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICgocmF0ZSA8PSAwKSB8fCAocmF0ZSA+IFNuUF93aWR0aCkgfHwgKChyYXRlICUgOCkgIT0gMCkpCisgICAgICAgIHJldHVybiAxOworICAgIFNuUF9TdGF0aWNJbml0aWFsaXplKCk7CisgICAgU25QX0luaXRpYWxpemUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICBpbnN0YW5jZS0+cmF0ZSA9IHJhdGU7CisgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICBpbnN0YW5jZS0+c3F1ZWV6aW5nID0gMDsKKworICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VBYnNvcmIoU3BvbmdlSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IGksIGo7CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjdXJEYXRhOworICAgIHVuc2lnbmVkIGludCByYXRlSW5CeXRlcyA9IGluc3RhbmNlLT5yYXRlLzg7CisKKyAgICBpZiAoaW5zdGFuY2UtPnNxdWVlemluZykKKyAgICAgICAgcmV0dXJuIDE7IC8qIFRvbyBsYXRlIGZvciBhZGRpdGlvbmFsIGlucHV0ICovCisKKworICAgIGkgPSAwOworICAgIGN1ckRhdGEgPSBkYXRhOworICAgIHdoaWxlKGkgPCBkYXRhQnl0ZUxlbikgeworICAgICAgICBpZiAoKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSAwKSAmJiAoZGF0YUJ5dGVMZW4gPj0gKGkgKyByYXRlSW5CeXRlcykpKSB7CisjaWZkZWYgU25QX0Zhc3RMb29wX0Fic29yYgorICAgICAgICAgICAgLyogcHJvY2Vzc2luZyBmdWxsIGJsb2NrcyBmaXJzdCAqLworCisgICAgICAgICAgICBpZiAoKHJhdGVJbkJ5dGVzICUgKFNuUF93aWR0aC8yMDApKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZmFzdCBsYW5lOiB3aG9sZSBsYW5lIHJhdGUgKi8KKworICAgICAgICAgICAgICAgIGogPSBTblBfRmFzdExvb3BfQWJzb3JiKGluc3RhbmNlLT5zdGF0ZSwgcmF0ZUluQnl0ZXMvKFNuUF93aWR0aC8yMDApLCBjdXJEYXRhLCBkYXRhQnl0ZUxlbiAtIGkpOworICAgICAgICAgICAgICAgIGkgKz0gajsKKyAgICAgICAgICAgICAgICBjdXJEYXRhICs9IGo7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGZvcihqPWRhdGFCeXRlTGVuLWk7IGo+PXJhdGVJbkJ5dGVzOyBqLT1yYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQiLCBjdXJEYXRhLCByYXRlSW5CeXRlcyk7CisgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgICBTblBfQWRkQnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ckRhdGErPXJhdGVJbkJ5dGVzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpID0gZGF0YUJ5dGVMZW4gLSBqOworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogbm9ybWFsIGxhbmU6IHVzaW5nIHRoZSBtZXNzYWdlIHF1ZXVlICovCisKKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKGRhdGFCeXRlTGVuIC0gaSk7CisgICAgICAgICAgICBpZiAocGFydGlhbEJsb2NrK2luc3RhbmNlLT5ieXRlSU9JbmRleCA+IHJhdGVJbkJ5dGVzKQorICAgICAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9IHJhdGVJbkJ5dGVzLWluc3RhbmNlLT5ieXRlSU9JbmRleDsKKyAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKHBhcnQpIiwgY3VyRGF0YSwgcGFydGlhbEJsb2NrKTsKKyAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgaSArPSBwYXJ0aWFsQmxvY2s7CisKKyAgICAgICAgICAgIFNuUF9BZGRCeXRlcyhpbnN0YW5jZS0+c3RhdGUsIGN1ckRhdGEsIGluc3RhbmNlLT5ieXRlSU9JbmRleCwgcGFydGlhbEJsb2NrKTsKKyAgICAgICAgICAgIGN1ckRhdGEgKz0gcGFydGlhbEJsb2NrOworICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgICAgICAgICBTblBfUGVybXV0ZShpbnN0YW5jZS0+c3RhdGUpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IFNwb25nZUFic29yYkxhc3RGZXdCaXRzKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKQoreworICAgIHVuc2lnbmVkIGludCByYXRlSW5CeXRlcyA9IGluc3RhbmNlLT5yYXRlLzg7CisKKyAgICBpZiAoZGVsaW1pdGVkRGF0YSA9PSAwKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoaW5zdGFuY2UtPnNxdWVlemluZykKKyAgICAgICAgcmV0dXJuIDE7IC8qIFRvbyBsYXRlIGZvciBhZGRpdGlvbmFsIGlucHV0ICovCisKKworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YTFbMV07CisgICAgICAgIGRlbGltaXRlZERhdGExWzBdID0gZGVsaW1pdGVkRGF0YTsKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCAobGFzdCBmZXcgYml0cyArIGZpcnN0IGJpdCBvZiBwYWRkaW5nKSIsIGRlbGltaXRlZERhdGExLCAxKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgLyogTGFzdCBmZXcgYml0cywgd2hvc2UgZGVsaW1pdGVyIGNvaW5jaWRlcyB3aXRoIGZpcnN0IGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShpbnN0YW5jZS0+c3RhdGUsIGRlbGltaXRlZERhdGEsIGluc3RhbmNlLT5ieXRlSU9JbmRleCk7CisgICAgLyogSWYgdGhlIGZpcnN0IGJpdCBvZiBwYWRkaW5nIGlzIGF0IHBvc2l0aW9uIHJhdGUtMSwgd2UgbmVlZCBhIHdob2xlIG5ldyBibG9jayBmb3IgdGhlIHNlY29uZCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgaWYgKChkZWxpbWl0ZWREYXRhID49IDB4ODApICYmIChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gKHJhdGVJbkJ5dGVzLTEpKSkKKyAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAvKiBTZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKGluc3RhbmNlLT5zdGF0ZSwgMHg4MCwgcmF0ZUluQnl0ZXMtMSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBibG9ja1tTblBfd2lkdGgvOF07CisgICAgICAgIG1lbXNldChibG9jaywgMCwgU25QX3dpZHRoLzgpOworICAgICAgICBibG9ja1tyYXRlSW5CeXRlcy0xXSA9IDB4ODA7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU2Vjb25kIGJpdCBvZiBwYWRkaW5nIiwgYmxvY2ssIHJhdGVJbkJ5dGVzKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgIGluc3RhbmNlLT5zcXVlZXppbmcgPSAxOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5VGV4dCgxLCAiLS0tIFN3aXRjaGluZyB0byBzcXVlZXppbmcgcGhhc2UgLS0tIik7CisgICAgI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IFNwb25nZVNxdWVlemUoU3BvbmdlSW5zdGFuY2UgKmluc3RhbmNlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IGksIGo7CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworICAgIHVuc2lnbmVkIGNoYXIgKmN1ckRhdGE7CisKKyAgICBpZiAoIWluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIFNwb25nZUFic29yYkxhc3RGZXdCaXRzKGluc3RhbmNlLCAweDAxKTsKKworICAgIGkgPSAwOworICAgIGN1ckRhdGEgPSBkYXRhOworICAgIHdoaWxlKGkgPCBkYXRhQnl0ZUxlbikgeworICAgICAgICBpZiAoKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSByYXRlSW5CeXRlcykgJiYgKGRhdGFCeXRlTGVuID49IChpICsgcmF0ZUluQnl0ZXMpKSkgeworICAgICAgICAgICAgZm9yKGo9ZGF0YUJ5dGVMZW4taTsgaj49cmF0ZUluQnl0ZXM7IGotPXJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgMCwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIiwgY3VyRGF0YSwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIGN1ckRhdGErPXJhdGVJbkJ5dGVzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IGRhdGFCeXRlTGVuIC0gajsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBsYW5lOiB1c2luZyB0aGUgbWVzc2FnZSBxdWV1ZSAqLworCisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IHJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludCkoZGF0YUJ5dGVMZW4gLSBpKTsKKyAgICAgICAgICAgIGlmIChwYXJ0aWFsQmxvY2sraW5zdGFuY2UtPmJ5dGVJT0luZGV4ID4gcmF0ZUluQnl0ZXMpCisgICAgICAgICAgICAgICAgcGFydGlhbEJsb2NrID0gcmF0ZUluQnl0ZXMtaW5zdGFuY2UtPmJ5dGVJT0luZGV4OworICAgICAgICAgICAgaSArPSBwYXJ0aWFsQmxvY2s7CisKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIChwYXJ0KSIsIGN1ckRhdGEsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIGN1ckRhdGEgKz0gcGFydGlhbEJsb2NrOworICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjdW5kZWYgU3BvbmdlCisjdW5kZWYgU3BvbmdlSW5zdGFuY2UKKyN1bmRlZiBTcG9uZ2VJbml0aWFsaXplCisjdW5kZWYgU3BvbmdlQWJzb3JiCisjdW5kZWYgU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMKKyN1bmRlZiBTcG9uZ2VTcXVlZXplCisjdW5kZWYgU25QX3N0YXRlU2l6ZUluQnl0ZXMKKyN1bmRlZiBTblBfc3RhdGVBbGlnbm1lbnQKKyN1bmRlZiBTblBfU3RhdGljSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9Jbml0aWFsaXplCisjdW5kZWYgU25QX0FkZEJ5dGUKKyN1bmRlZiBTblBfQWRkQnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdEJ5dGVzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5MTE5YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL1BsU25QLUZhbGxiYWNrLmluYwpAQCAtMCwwICsxLDI1NyBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworLyogZXhwZWN0IFBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgUGxTblBfdGFyZ2V0UGFyYWxsZWxpc20gKi8KKworLyogZXhwZWN0IFNuUF9zdGF0ZVNpemVJbkJ5dGVzLCBTblBfc3RhdGVBbGlnbm1lbnQgKi8KKworLyogZXhwZWN0IHByZWZpeCAqLworCisvKiBleHBlY3QgU25QXyogKi8KKworCisjZGVmaW5lIEpPSU4wKGEsIGIpICAgICAgICAgICAgICAgICAgICAgYSAjIyBiCisjZGVmaW5lIEpPSU4oYSwgYikgICAgICAgICAgICAgICAgICAgICAgSk9JTjAoYSwgYikKKworI2RlZmluZSBQbFNuUF9TdGF0aWNJbml0aWFsaXplICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgUGxTblBfSW5pdGlhbGl6ZUFsbCAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0luaXRpYWxpemVBbGwpCisjZGVmaW5lIFBsU25QX0FkZEJ5dGUgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9BZGRCeXRlKQorI2RlZmluZSBQbFNuUF9BZGRCeXRlcyAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkQnl0ZXMpCisjZGVmaW5lIFBsU25QX0FkZExhbmVzQWxsICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9BZGRMYW5lc0FsbCkKKyNkZWZpbmUgUGxTblBfT3ZlcndyaXRlQnl0ZXMgICAgICAgICAgICBKT0lOKHByZWZpeCwgX092ZXJ3cml0ZUJ5dGVzKQorI2RlZmluZSBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbCAgICAgICAgIEpPSU4ocHJlZml4LCBfT3ZlcndyaXRlTGFuZXNBbGwpCisjZGVmaW5lIFBsU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMgICAgICAgSk9JTihwcmVmaXgsIF9PdmVyd3JpdGVXaXRoWmVyb2VzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEJ5dGVzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0TGFuZXNBbGwgICAgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdExhbmVzQWxsKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEFuZEFkZEJ5dGVzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEFuZEFkZExhbmVzQWxsKQorCisjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlU2l6ZUluQnl0ZXMpCisgICAgI2RlZmluZSBTblBfc3RhdGVBbGlnbm1lbnQgICAgICAgICAgICAgIEpPSU4oU25QLCBfc3RhdGVBbGlnbm1lbnQpCisjZWxzZQorICAgICNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlc1NpemVJbkJ5dGVzKQorICAgICNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlc0FsaWdubWVudCkKKyNlbmRpZgorI2RlZmluZSBQbFNuUF9mYWN0b3IgKChQbFNuUF90YXJnZXRQYXJhbGxlbGlzbSkvKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSkpCisjZGVmaW5lIFNuUF9zdGF0ZU9mZnNldCAoKChTblBfc3RhdGVTaXplSW5CeXRlcysoU25QX3N0YXRlQWxpZ25tZW50LTEpKS9TblBfc3RhdGVBbGlnbm1lbnQpKlNuUF9zdGF0ZUFsaWdubWVudCkKKyNkZWZpbmUgc3RhdGVXaXRoSW5kZXgoaSkgKCh1bnNpZ25lZCBjaGFyICopc3RhdGVzKygoaSkqU25QX3N0YXRlT2Zmc2V0KSkKKworI2RlZmluZSBTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICAgIEpPSU4oU25QLCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU25QX0luaXRpYWxpemUgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplQWxsICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplQWxsKQorI2RlZmluZSBTblBfQWRkQnl0ZSAgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZSkKKyNkZWZpbmUgU25QX0FkZEJ5dGVzICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGVzKQorI2RlZmluZSBTblBfQWRkTGFuZXNBbGwgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkTGFuZXNBbGwpCisjZGVmaW5lIFNuUF9PdmVyd3JpdGVCeXRlcyAgICAgICAgICAgICAgSk9JTihTblAsIF9PdmVyd3JpdGVCeXRlcykKKyNkZWZpbmUgU25QX092ZXJ3cml0ZUxhbmVzQWxsICAgICAgICAgICBKT0lOKFNuUCwgX092ZXJ3cml0ZUxhbmVzQWxsKQorI2RlZmluZSBTblBfT3ZlcndyaXRlV2l0aFplcm9lcyAgICAgICAgIEpPSU4oU25QLCBfT3ZlcndyaXRlV2l0aFplcm9lcykKKyNkZWZpbmUgU25QX0V4dHJhY3RCeXRlcyAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RCeXRlcykKKyNkZWZpbmUgU25QX0V4dHJhY3RMYW5lc0FsbCAgICAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RMYW5lc0FsbCkKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RBbmRBZGRCeXRlcykKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCkKKwordm9pZCBQbFNuUF9TdGF0aWNJbml0aWFsaXplKCB2b2lkICkKK3sKKyAgICBTblBfU3RhdGljSW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFBsU25QX0luaXRpYWxpemVBbGwodm9pZCAqc3RhdGVzKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfSW5pdGlhbGl6ZShzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0luaXRpYWxpemVBbGwoc3RhdGVXaXRoSW5kZXgoaSkpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZEJ5dGUodm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9BZGRCeXRlKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBieXRlLCBvZmZzZXQpOworICAgICNlbHNlCisgICAgICAgIFNuUF9BZGRCeXRlKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGJ5dGUsIG9mZnNldCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfQWRkQnl0ZXModm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZExhbmVzQWxsKHZvaWQgKnN0YXRlcywgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgdW5zaWduZWQgaW50IGxhbmVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0FkZExhbmVzQWxsKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCBsYW5lQ291bnQsIGxhbmVPZmZzZXQpOworICAgICAgICAjZW5kaWYKKyAgICAgICAgZGF0YSArPSBQbFNuUF9iYXNlUGFyYWxsZWxpc20qbGFuZU9mZnNldCpTblBfbGFuZUxlbmd0aEluQnl0ZXM7CisgICAgfQorfQorCit2b2lkIFBsU25QX092ZXJ3cml0ZUJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbCh2b2lkICpzdGF0ZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gUGxTblBfYmFzZVBhcmFsbGVsaXNtKmxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzOworICAgIH0KK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGJ5dGVDb3VudCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgYnl0ZUNvdW50KTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9QZXJtdXRlQWxsKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlQWxsKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2VuZGlmCisgICAgfQorfQorCisjaWYgKGRlZmluZWQoU25QX1Blcm11dGVfMTJyb3VuZHMpIHx8IGRlZmluZWQoU25QX1Blcm11dGVBbGxfMTJyb3VuZHMpKQordm9pZCBQbFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlXzEycm91bmRzKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2VuZGlmCisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgUGxTblBfRXh0cmFjdEJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbHNlCisgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0V4dHJhY3RMYW5lc0FsbChjb25zdCB2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgMCwgbGFuZUNvdW50KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfRXh0cmFjdExhbmVzQWxsKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCBsYW5lQ291bnQsIGxhbmVPZmZzZXQpOworICAgICAgICAjZW5kaWYKKyAgICAgICAgZGF0YSArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgfQorfQorCit2b2lkIFBsU25QX0V4dHJhY3RBbmRBZGRCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwoY29uc3Qgdm9pZCAqc3RhdGVzLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGlucHV0LCBvdXRwdXQsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0V4dHJhY3RBbmRBZGRMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGlucHV0ICs9IGxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKlBsU25QX2Jhc2VQYXJhbGxlbGlzbTsKKyAgICAgICAgb3V0cHV0ICs9IGxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKlBsU25QX2Jhc2VQYXJhbGxlbGlzbTsKKyAgICB9Cit9CisKKyN1bmRlZiBQbFNuUF9mYWN0b3IKKyN1bmRlZiBTblBfc3RhdGVPZmZzZXQKKyN1bmRlZiBzdGF0ZVdpdGhJbmRleAorI3VuZGVmIEpPSU4wCisjdW5kZWYgSk9JTgorI3VuZGVmIFBsU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBQbFNuUF9Jbml0aWFsaXplQWxsCisjdW5kZWYgUGxTblBfQWRkQnl0ZQorI3VuZGVmIFBsU25QX0FkZEJ5dGVzCisjdW5kZWYgUGxTblBfQWRkTGFuZXNBbGwKKyN1bmRlZiBQbFNuUF9PdmVyd3JpdGVCeXRlcworI3VuZGVmIFBsU25QX092ZXJ3cml0ZUxhbmVzQWxsCisjdW5kZWYgUGxTblBfT3ZlcndyaXRlV2l0aFplcm9lcworI3VuZGVmIFBsU25QX1Blcm11dGVBbGwKKyN1bmRlZiBQbFNuUF9FeHRyYWN0Qnl0ZXMKKyN1bmRlZiBQbFNuUF9FeHRyYWN0TGFuZXNBbGwKKyN1bmRlZiBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyN1bmRlZiBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwKKyN1bmRlZiBTblBfc3RhdGVBbGlnbm1lbnQKKyN1bmRlZiBTblBfc3RhdGVTaXplSW5CeXRlcworI3VuZGVmIFBsU25QX2ZhY3RvcgorI3VuZGVmIFNuUF9zdGF0ZU9mZnNldAorI3VuZGVmIHN0YXRlV2l0aEluZGV4CisjdW5kZWYgU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9Jbml0aWFsaXplQWxsCisjdW5kZWYgU25QX0FkZEJ5dGUKKyN1bmRlZiBTblBfQWRkQnl0ZXMKKyN1bmRlZiBTblBfQWRkTGFuZXNBbGwKKyN1bmRlZiBTblBfT3ZlcndyaXRlQnl0ZXMKKyN1bmRlZiBTblBfT3ZlcndyaXRlV2l0aFplcm9lcworI3VuZGVmIFNuUF9PdmVyd3JpdGVMYW5lc0FsbAorI3VuZGVmIFNuUF9FeHRyYWN0Qnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdExhbmVzQWxsCisjdW5kZWYgU25QX0V4dHJhY3RBbmRBZGRCeXRlcworI3VuZGVmIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL1NuUC1SZWxhbmVkLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NmU2MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9TblBfUmVsYW5lZF9oXworI2RlZmluZSBfU25QX1JlbGFuZWRfaF8KKworI2RlZmluZSBTblBfQWRkQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBTblBfQWRkTGFuZXMsIFNuUF9BZGRCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9BZGRMYW5lcyhzdGF0ZSwgZGF0YSwgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICAgICAgU25QX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBTblBfT3ZlcndyaXRlTGFuZXMsIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVMYW5lcyhzdGF0ZSwgZGF0YSwgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX0V4dHJhY3RMYW5lcywgU25QX0V4dHJhY3RCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0TGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXNJbkxhbmUoc3RhdGUsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAoZGF0YSkrKChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcykqU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgMCwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpJVNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3NpemVMZWZ0ID0gKGxlbmd0aCk7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfbGFuZVBvc2l0aW9uID0gKG9mZnNldCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX29mZnNldEluTGFuZSA9IChvZmZzZXQpJVNuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX2N1ckRhdGEgPSAoZGF0YSk7IFwKKyAgICAgICAgICAgIHdoaWxlKF9zaXplTGVmdCA+IDApIHsgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfYnl0ZXNJbkxhbmUgPSBTblBfbGFuZUxlbmd0aEluQnl0ZXMgLSBfb2Zmc2V0SW5MYW5lOyBcCisgICAgICAgICAgICAgICAgaWYgKF9ieXRlc0luTGFuZSA+IF9zaXplTGVmdCkgXAorICAgICAgICAgICAgICAgICAgICBfYnl0ZXNJbkxhbmUgPSBfc2l6ZUxlZnQ7IFwKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgU25QX0V4dHJhY3RBbmRBZGRMYW5lcywgU25QX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXMoc3RhdGUsIGlucHV0LCBvdXRwdXQsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoc3RhdGUsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAoaW5wdXQpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChvdXRwdXQpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJJbnB1dCA9IChpbnB1dCk7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9jdXJPdXRwdXQgPSAob3V0cHV0KTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoc3RhdGUsIF9sYW5lUG9zaXRpb24sIF9jdXJJbnB1dCwgX2N1ck91dHB1dCwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJJbnB1dCArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfY3VyT3V0cHV0ICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9hbGlnbi5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjUwZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaApAQCAtMCwwICsxLDM1IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9hbGlnbl9oXworI2RlZmluZSBfYWxpZ25faF8KKworLyogb24gTWFjIE9TLVggYW5kIHBvc3NpYmx5IG90aGVycywgQUxJR04oeCkgaXMgZGVmaW5lZCBpbiBwYXJhbS5oLCBhbmQgLVdlcnJvciBjaG9rZXMgb24gdGhlIHJlZGVmLiAqLworCisjaWZkZWYgQUxJR04KKyN1bmRlZiBBTElHTgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBBTElHTih4KSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCh4KSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmluZSBBTElHTih4KSBfX2RlY2xzcGVjKGFsaWduKHgpKQorI2VsaWYgZGVmaW5lZChfX0FSTUNDX1ZFUlNJT04pCisjZGVmaW5lIEFMSUdOKHgpIF9fYWxpZ24oeCkKKyNlbHNlCisjZGVmaW5lIEFMSUdOKHgpCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYyBiL01vZHVsZXMvX3NoYTMvc2hhM21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYWFhMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwpAQCAtMCwwICsxLDc1NyBAQAorLyogU0hBMyBtb2R1bGUKKyAqCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gdGhlIFNIQTMgYWxnb3JpdGhtCisgKgorICogU2VlIGJlbG93IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgY29kZSB0aGlzIG1vZHVsZSB3YXMKKyAqIGJhc2VkIHVwb24uIEFkZGl0aW9uYWwgd29yayBwZXJmb3JtZWQgYnk6CisgKgorICogIEFuZHJldyBLdWNobGluZyAoYW1rQGFtay5jYSkKKyAqICBHcmVnIFN0ZWluIChnc3RlaW5AbHlyYS5vcmcpCisgKiAgVHJldm9yIFBlcnJpbiAodHJldnBAdHJldnAubmV0KQorICogIEdyZWdvcnkgUC4gU21pdGggKGdyZWdAa3J5cHRvLm9yZykKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiAgQ2hyaXN0aWFuIEhlaW1lcyAoY2hyaXN0aWFuQHB5dGhvbi5vcmcpCisgKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisgKgorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorI2luY2x1ZGUgIi4uL2hhc2hsaWIuaCIKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBTSEEtMyAoS2VjY2FrKSBhbmQgU0hBS0UKKyAqCisgKiBUaGUgY29kZSBpcyBiYXNlZCBvbiBLZWNjYWtDb2RlUGFja2FnZSBmcm9tIDIwMTYtMDQtMjMKKyAqIGNvbW1pdCA2NDdmOTMwNzlhZmM0YWRhM2QyMzczNzQ3N2E2ZTUyNTExY2E0MWZkCisgKgorICogVGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBhbHRlcmVkIGluIHRoaXMgcG9pbnRzOgorICogIC0gQysrIGNvbW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gQU5TSSBDIGNvbW1lbnRzLgorICogIC0gYWxsIGZ1bmN0aW9uIG5hbWVzIGFyZSBtYW5nbGVkCisgKiAgLSB0eXBlZGVmIGZvciBVSU5UNjQgaXMgY29tbWVudGVkIG91dC4KKyAqICAtIGJyZ19lbmRpYW4uaCBpcyByZW1vdmVkCisgKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIF9fc3BhcmMKKyAgLyogb3B0NjQgdXNlcyB1bi1hbGlnbmVkIG1lbW9yeSBhY2Nlc3MgdGhhdCBjYXVzZXMgYSBCVVMgZXJyb3Igd2l0aCBtc2cKKyAgICogJ2ludmFsaWQgYWRkcmVzcyBhbGlnbm1lbnQnIG9uIFNQQVJDLiAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VsaWYgUFlfQklHX0VORElBTgorICAvKiBvcHQ2NCBpcyBub3QgeWV0IHN1cHBvcnRlZCBvbiBiaWcgZW5kaWFuIHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSA4ICYmIGRlZmluZWQoUFlfVUlOVDY0X1QpCisgIC8qIG9wdDY0IHdvcmtzIG9ubHkgb24gbGl0dGxlLWVuZGlhbiA2NGJpdCBwbGF0Zm9ybXMgd2l0aCB1bnNpZ25lZCBpbnQ2NCAqLworICAjZGVmaW5lIEtlY2Nha09wdCA2NAorI2Vsc2UKKyAgLyogb3B0MzIgaXMgdXNlZCBmb3IgdGhlIHJlbWFpbmluZyAzMiBhbmQgNjRiaXQgcGxhdGZvcm1zICovCisgICNkZWZpbmUgS2VjY2FrT3B0IDMyCisjZW5kaWYKKworI2lmIEtlY2Nha09wdCA9PSA2NCAmJiBkZWZpbmVkKFBZX1VJTlQ2NF9UKQorICAvKiA2NGJpdCBwbGF0Zm9ybXMgd2l0aCB1bnNpZ25lZCBpbnQ2NCAqLworICB0eXBlZGVmIFBZX1VJTlQ2NF9UIFVJTlQ2NDsKKyAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworI2VuZGlmCisKKy8qIHJlcGxhY2VtZW50IGZvciBicmdfZW5kaWFuLmggKi8KKyNkZWZpbmUgSVNfTElUVExFX0VORElBTiAxMjM0CisjZGVmaW5lIElTX0JJR19FTkRJQU4gNDMyMQorI2lmIFBZX0xJVFRMRV9FTkRJQU4KKyNkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19MSVRUTEVfRU5ESUFOCisjZW5kaWYKKyNpZiBQWV9CSUdfRU5ESUFOCisjZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfQklHX0VORElBTgorI2VuZGlmCisKKy8qIG1hbmdsZSBuYW1lcyAqLworI2RlZmluZSBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIgX1B5U0hBM19LZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIKKyNkZWZpbmUgS2VjY2FrX0hhc2hGaW5hbCBfUHlTSEEzX0tlY2Nha19IYXNoRmluYWwKKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplIF9QeVNIQTNfS2VjY2FrX0hhc2hJbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha19IYXNoU3F1ZWV6ZSBfUHlTSEEzX0tlY2Nha19IYXNoU3F1ZWV6ZQorI2RlZmluZSBLZWNjYWtfSGFzaFVwZGF0ZSBfUHlTSEEzX0tlY2Nha19IYXNoVXBkYXRlCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfQWRkQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0luaXRpYWxpemUgX1B5U0hBM19LZWNjYWtQMTYwMF9Jbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlc0luTGFuZQorI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX092ZXJ3cml0ZUxhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHMgX1B5U0hBM19LZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHMgX1B5U0hBM19LZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2UgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cworI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlSW5pdGlhbGl6ZSBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZVNxdWVlemUKKyNpZiBLZWNjYWtPcHQgPT0gMzIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZSBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZEJ5dGUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvIF9QeVNIQTNfS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8KKyNlbmRpZgorCisvKiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIEtlY2Nha1AxNjAwICovCisjZGVmaW5lIEtlY2Nha1AyMDBfZXhjbHVkZWQgMQorI2RlZmluZSBLZWNjYWtQNDAwX2V4Y2x1ZGVkIDEKKyNkZWZpbmUgS2VjY2FrUDgwMF9leGNsdWRlZCAxCisKKy8qIGlubGluZSBhbGwgS2VjY2FrIGRlcGVuZGVuY2llcyAqLworI2luY2x1ZGUgImtjcC9LZWNjYWtIYXNoLmgiCisjaW5jbHVkZSAia2NwL0tlY2Nha1Nwb25nZS5oIgorI2luY2x1ZGUgImtjcC9LZWNjYWtIYXNoLmMiCisjaW5jbHVkZSAia2NwL0tlY2Nha1Nwb25nZS5jIgorI2lmIEtlY2Nha09wdCA9PSA2NAorICAjaW5jbHVkZSAia2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC5jIgorI2VsaWYgS2VjY2FrT3B0ID09IDMyCisgICNpbmNsdWRlICJrY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMiCisjZW5kaWYKKworI2RlZmluZSBTSEEzX01BWF9ESUdFU1RTSVpFIDY0IC8qIDY0IEJ5dGVzICg1MTIgQml0cykgZm9yIDIyNCB0byA1MTIgKi8KKyNkZWZpbmUgU0hBM19MQU5FU0laRSAoMjAgKiA4KSAvKiBFeHRyYWN0TGFuZSBuZWVkcyBtYXggdWludDY0X3RbMjBdIGV4dHJhLiAqLworI2RlZmluZSBTSEEzX3N0YXRlIEtlY2Nha19IYXNoSW5zdGFuY2UKKyNkZWZpbmUgU0hBM19pbml0IEtlY2Nha19IYXNoSW5pdGlhbGl6ZQorI2RlZmluZSBTSEEzX3Byb2Nlc3MgS2VjY2FrX0hhc2hVcGRhdGUKKyNkZWZpbmUgU0hBM19kb25lIEtlY2Nha19IYXNoRmluYWwKKyNkZWZpbmUgU0hBM19zcXVlZXplIEtlY2Nha19IYXNoU3F1ZWV6ZQorI2RlZmluZSBTSEEzX2NvcHlzdGF0ZShkZXN0LCBzcmMpIG1lbWNweSgmKGRlc3QpLCAmKHNyYyksIHNpemVvZihTSEEzX3N0YXRlKSkKKworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTMKK2NsYXNzIF9zaGEzLnNoYTNfMjI0ICJTSEEzb2JqZWN0ICoiICImU0hBM18yMjR0eXAiCitjbGFzcyBfc2hhMy5zaGEzXzI1NiAiU0hBM29iamVjdCAqIiAiJlNIQTNfMjU2dHlwIgorY2xhc3MgX3NoYTMuc2hhM18zODQgIlNIQTNvYmplY3QgKiIgIiZTSEEzXzM4NHR5cCIKK2NsYXNzIF9zaGEzLnNoYTNfNTEyICJTSEEzb2JqZWN0ICoiICImU0hBM181MTJ0eXAiCitjbGFzcyBfc2hhMy5zaGFrZV8xMjggIlNIQTNvYmplY3QgKiIgIiZTSEFLRTEyOHR5cGUiCitjbGFzcyBfc2hhMy5zaGFrZV8yNTYgIlNIQTNvYmplY3QgKiIgIiZTSEFLRTI1NnR5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iOGE1MzY4MGYzNzAyODVhXSovCisKKy8qIFRoZSBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgU0hBMyBpbmZvICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgU0hBM19zdGF0ZSBoYXNoX3N0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gU0hBM29iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzIyNHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfMjU2dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM18zODR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzUxMnR5cGU7CisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzIyNHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha18yNTZ0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfMzg0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzUxMnR5cGU7CisjZW5kaWYKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBS0UxMjh0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEFLRTI1NnR5cGU7CisKKyNpbmNsdWRlICJjbGluaWMvc2hhM21vZHVsZS5jLmgiCisKK3N0YXRpYyBTSEEzb2JqZWN0ICoKK25ld1NIQTNvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIFNIQTNvYmplY3QgKm5ld29iajsKKyAgICBuZXdvYmogPSAoU0hBM29iamVjdCAqKVB5T2JqZWN0X05ldyhTSEEzb2JqZWN0LCB0eXBlKTsKKyAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgbmV3b2JqLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiBuZXdvYmo7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfc2hhMy5zaGEzXzIyNC5fX25ld19fIGFzIHB5X3NoYTNfbmV3CisgICAgc3RyaW5nIGFzIGRhdGE6IG9iamVjdCA9IE5VTEwKKworUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfc2hhM19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThkNWMzNDI3OWU2OWJmMDkgaW5wdXQ9ZDdjNTgyYjk1MGE4NThiNl0qLworeworICAgIFNIQTNvYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWYgPSB7TlVMTCwgTlVMTH07CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICBzZWxmID0gbmV3U0hBM29iamVjdCh0eXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJlNIQTNfMjI0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yMjQoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18yNTZ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzI1Nigmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzM4NHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMzg0KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfNTEydHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM181MTIoJnNlbGYtPmhhc2hfc3RhdGUpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjI0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDExNTIsIDQ0OCwgMjI0LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yNTZ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgMTA4OCwgNTEyLCAyNTYsIDB4MDEpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzM4NHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCA4MzIsIDc2OCwgMzg0LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha181MTJ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgNTc2LCAxMDI0LCA1MTIsIDB4MDEpOworI2VuZGlmCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTEyOHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMTI4KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBS0UyNTYoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChkYXRhKSB7CisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihkYXRhLCAmYnVmLCBnb3RvIGVycm9yKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBpZiAoYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgICAgICAvKiBpbnZhcmlhbnQ6IE5ldyBvYmplY3RzIGNhbid0IGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGNvZGUgeWV0LAorICAgICAgICAgICAgICogdGh1cyBpdCdzIHNhZmUgdG8gcmVsZWFzZSB0aGUgR0lMIHdpdGhvdXQgbG9ja2luZyB0aGUgb2JqZWN0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisjZW5kaWYKKyAgICAgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIFVwZGF0ZSgpIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisKKyAgZXJyb3I6CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgIH0KKyAgICBpZiAoZGF0YSAmJiBidWYub2JqKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisKKy8qIEludGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KKworc3RhdGljIHZvaWQKK1NIQTNfZGVhbGxvYyhTSEEzb2JqZWN0ICpzZWxmKQoreworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2spIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIH0KKyNlbmRpZgorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworCisvKiBFeHRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjNTM3NDExZWNkY2RhNGMgaW5wdXQ9OTNhNDRhYWViZWE1MWJhOF0qLworeworICAgIFNIQTNvYmplY3QgKm5ld29iajsKKworICAgIGlmICgobmV3b2JqID0gbmV3U0hBM29iamVjdChQeV9UWVBFKHNlbGYpKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZShuZXdvYmotPmhhc2hfc3RhdGUsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZkNTMxODQyZTIwYjJkNWIgaW5wdXQ9YTU4MDc5MTdkMjE5YjMwZV0qLworeworICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFXTsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBkaWdlc3QpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBGaW5hbCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1YWQwMzI1NzkwNjkxOGQgaW5wdXQ9MmQ5MWJiNmUwZDExNGVlM10qLworeworICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFXTsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBkaWdlc3QpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBGaW5hbCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5oYXNoX3N0YXRlLmZpeGVkT3V0cHV0TGVuZ3RoIC8gOCk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF91cGRhdGUoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNjcyMWQ1NWI0ODNlMGFmIGlucHV0PWJlNDRiZjBkMWMyNzk3OTFdKi8KK3sKKyAgICBQeV9idWZmZXIgYnVmOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOworCisgICAgLyogYWRkIG5ldyBkYXRhLCB0aGUgZnVuY3Rpb24gdGFrZXMgdGhlIGxlbmd0aCBpbiBiaXRzIG5vdCBieXRlcyAqLworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCAmJiBidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICB9CisgICAgLyogT25jZSBhIGxvY2sgZXhpc3RzIGFsbCBjb2RlIHBhdGhzIG11c3QgYmUgc3luY2hyb25pemVkLiBXZSBoYXZlIHRvCisgICAgICogcmVsZWFzZSB0aGUgR0lMIGV2ZW4gZm9yIHNtYWxsIGJ1ZmZlcnMgYXMgYWNxdWlyaW5nIHRoZSBsb2NrIG1heSB0YWtlCisgICAgICogYW4gdW5saW1pdGVkIGFtb3VudCBvZiB0aW1lIHdoZW4gYW5vdGhlciB0aHJlYWQgdXBkYXRlcyB0aGlzIG9iamVjdAorICAgICAqIHdpdGggbG90cyBvZiBkYXRhLiAqLworICAgIGlmIChzZWxmLT5sb2NrKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2ssIDEpOworICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2spOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgfQorI2Vsc2UKKyAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyNlbmRpZgorCisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgU0hBM19tZXRob2RzW10gPSB7CisgICAgX1NIQTNfU0hBM18yMjRfQ09QWV9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9ESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X2Jsb2NrX3NpemUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmF0ZSA9IHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYXRlIC8gOCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X25hbWUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKHNlbGYpOworICAgIGlmICh0eXBlID09ICZTSEEzXzIyNHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzIyNCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18yNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM18yNTYiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMzg0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfMzg0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzUxMnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzUxMiIpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjI0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha18yMjQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzI1NiIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzM4NHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfMzg0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfNTEydHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha181MTIiKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UxMjh0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hha2VfMTI4Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTI1NnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGFrZV8yNTYiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9kaWdlc3Rfc2l6ZShTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9jYXBhY2l0eV9iaXRzKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IGNhcGFjaXR5ID0gMTYwMCAtIHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhjYXBhY2l0eSk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X3JhdGVfYml0cyhTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHVuc2lnbmVkIGludCByYXRlID0gc2VsZi0+aGFzaF9zdGF0ZS5zcG9uZ2UucmF0ZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJhdGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfc3VmZml4KFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgdW5zaWduZWQgY2hhciBzdWZmaXhbMl07CisgICAgc3VmZml4WzBdID0gc2VsZi0+aGFzaF9zdGF0ZS5kZWxpbWl0ZWRTdWZmaXg7CisgICAgc3VmZml4WzFdID0gMDsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKXN1ZmZpeCwgMSk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIFNIQTNfZ2V0c2V0ZXJzW10gPSB7CisgICAgeyJibG9ja19zaXplIiwgKGdldHRlcilTSEEzX2dldF9ibG9ja19zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKVNIQTNfZ2V0X25hbWUsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKVNIQTNfZ2V0X2RpZ2VzdF9zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9jYXBhY2l0eV9iaXRzIiwgKGdldHRlcilTSEEzX2dldF9jYXBhY2l0eV9iaXRzLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9yYXRlX2JpdHMiLCAoZ2V0dGVyKVNIQTNfZ2V0X3JhdGVfYml0cywgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfc3VmZml4IiwgKGdldHRlcilTSEEzX2dldF9zdWZmaXgsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKKworI2RlZmluZSBTSEEzX1RZUEUodHlwZV9vYmosIHR5cGVfbmFtZSwgdHlwZV9kb2MsIHR5cGVfbWV0aG9kcykgXAorICAgIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9vYmogPSB7IFwKKyAgICAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApIFwKKyAgICAgICAgdHlwZV9uYW1lLCAgICAgICAgICAvKiB0cF9uYW1lICovIFwKKyAgICAgICAgc2l6ZW9mKFNIQTNvYmplY3QpLCAvKiB0cF9zaXplICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLyBcCisgICAgICAgIC8qICBtZXRob2RzICAqLyBcCisgICAgICAgIChkZXN0cnVjdG9yKVNIQTNfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovIFwKKyAgICAgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLyBcCisgICAgICAgIHR5cGVfZG9jLCAgICAgICAgICAgLyogdHBfZG9jICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8gXAorICAgICAgICB0eXBlX21ldGhvZHMsICAgICAgIC8qIHRwX21ldGhvZHMgKi8gXAorICAgICAgICBOVUxMLCAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8gXAorICAgICAgICBTSEEzX2dldHNldGVycywgICAgIC8qIHRwX2dldHNldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovIFwKKyAgICAgICAgcHlfc2hhM19uZXcsICAgICAgICAvKiB0cF9uZXcgKi8gXAorICAgIH0KKworUHlEb2NfU1RSVkFSKHNoYTNfMjU2X19kb2NfXywKKyJzaGEzXzI1Nihbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDMyIGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoc2hhM18zODRfX2RvY19fLAorInNoYTNfMzg0KFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNDggYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihzaGEzXzUxMl9fZG9jX18sCisic2hhM181MTIoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA2NCBieXRlcy4iKTsKKworU0hBM19UWVBFKFNIQTNfMjI0dHlwZSwgIl9zaGEzLnNoYTNfMjI0IiwgcHlfc2hhM19uZXdfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfMjU2dHlwZSwgIl9zaGEzLnNoYTNfMjU2Iiwgc2hhM18yNTZfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfMzg0dHlwZSwgIl9zaGEzLnNoYTNfMzg0Iiwgc2hhM18zODRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfNTEydHlwZSwgIl9zaGEzLnNoYTNfNTEyIiwgc2hhM181MTJfX2RvY19fLCBTSEEzX21ldGhvZHMpOworCisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKK1B5RG9jX1NUUlZBUihrZWNjYWtfMjI0X19kb2NfXywKKyJrZWNjYWtfMjI0KFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoa2VjY2FrXzI1Nl9fZG9jX18sCisia2VjY2FrXzI1Nihbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAzMiBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKGtlY2Nha18zODRfX2RvY19fLAorImtlY2Nha18zODQoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNDggYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihrZWNjYWtfNTEyX19kb2NfXywKKyJrZWNjYWtfNTEyKFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDY0IGJ5dGVzLiIpOworCitTSEEzX1RZUEUoS2VjY2FrXzIyNHR5cGUsICJfc2hhMy5rZWNjYWtfMjI0Iiwga2VjY2FrXzIyNF9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzI1NnR5cGUsICJfc2hhMy5rZWNjYWtfMjU2Iiwga2VjY2FrXzI1Nl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzM4NHR5cGUsICJfc2hhMy5rZWNjYWtfMzg0Iiwga2VjY2FrXzM4NF9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzUxMnR5cGUsICJfc2hhMy5rZWNjYWtfNTEyIiwga2VjY2FrXzUxMl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CisjZW5kaWYKKworCitzdGF0aWMgUHlPYmplY3QgKgorX1NIQUtFX2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGRpZ2VzdGxlbiwgaW50IGhleCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyICpkaWdlc3QgPSBOVUxMOworICAgIFNIQTNfc3RhdGUgdGVtcDsKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgLyogRXh0cmFjdExhbmUgbmVlZHMgYXQgbGVhc3QgU0hBM19NQVhfRElHRVNUU0laRSArIFNIQTNfTEFORVNJWkUgYW5kCisgICAgICogU0hBM19MQU5FU0laRSBleHRyYSBzcGFjZS4KKyAgICAgKi8KKyAgICBkaWdlc3QgPSAodW5zaWduZWQgY2hhciopUHlNZW1fTWFsbG9jKGRpZ2VzdGxlbiArIFNIQTNfTEFORVNJWkUpOworICAgIGlmIChkaWdlc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisKKyAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBOVUxMKTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgZG9uZSgpIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJlcyA9IFNIQTNfc3F1ZWV6ZSgmdGVtcCwgZGlnZXN0LCBkaWdlc3RsZW4gKiA4KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgU3F1ZWV6ZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoaGV4KSB7CisgICAgICAgICByZXN1bHQgPSBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LCBkaWdlc3RsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0bGVuKTsKKyAgICB9CisgIGVycm9yOgorICAgIGlmIChkaWdlc3QgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKGRpZ2VzdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hha2VfMTI4LmRpZ2VzdAorCisgICAgbGVuZ3RoOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKyAgICBcCisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzMTM2MDVlMmY4N2JiOGYgaW5wdXQ9NjA4YzhjYTgwYWU5ZDExNV0qLworeworICAgIHJldHVybiBfU0hBS0VfZGlnZXN0KHNlbGYsIGxlbmd0aCwgMCk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hha2VfMTI4LmhleGRpZ2VzdAorCisgICAgbGVuZ3RoOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKyAgICBcCisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjhlMmYxZTQ5MDk0NGE4IGlucHV0PTY0ZTU2YjQ3NjBkYjQ1NzNdKi8KK3sKKyAgICByZXR1cm4gX1NIQUtFX2RpZ2VzdChzZWxmLCBsZW5ndGgsIDEpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBTSEFLRV9tZXRob2RzW10gPSB7CisgICAgX1NIQTNfU0hBM18yMjRfQ09QWV9NRVRIT0RERUYKKyAgICBfU0hBM19TSEFLRV8xMjhfRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQUtFXzEyOF9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfVVBEQVRFX01FVEhPRERFRgorICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworUHlEb2NfU1RSVkFSKHNoYWtlXzEyOF9fZG9jX18sCisic2hha2VfMTI4KFtzdHJpbmddKSAtPiBTSEFLRSBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQUtFIGhhc2ggb2JqZWN0LiIpOworCitQeURvY19TVFJWQVIoc2hha2VfMjU2X19kb2NfXywKKyJzaGFrZV8yNTYoW3N0cmluZ10pIC0+IFNIQUtFIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBS0UgaGFzaCBvYmplY3QuIik7CisKK1NIQTNfVFlQRShTSEFLRTEyOHR5cGUsICJfc2hhMy5zaGFrZV8xMjgiLCBzaGFrZV8xMjhfX2RvY19fLCBTSEFLRV9tZXRob2RzKTsKK1NIQTNfVFlQRShTSEFLRTI1NnR5cGUsICJfc2hhMy5zaGFrZV8yNTYiLCBzaGFrZV8yNTZfX2RvY19fLCBTSEFLRV9tZXRob2RzKTsKKworCisvKiBJbml0aWFsaXplIHRoaXMgbW9kdWxlLiAqLworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfU0hBM21vZHVsZSA9IHsKKyAgICAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICAgICAiX3NoYTMiLAorICAgICAgICBOVUxMLAorICAgICAgICAtMSwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTAorfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19zaGEzKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworCisgICAgaWYgKChtID0gUHlNb2R1bGVfQ3JlYXRlKCZfU0hBM21vZHVsZSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisjZGVmaW5lIGluaXRfc2hhM3R5cGUobmFtZSwgdHlwZSkgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9UWVBFKHR5cGUpID0gJlB5VHlwZV9UeXBlOyBcCisgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKSB7IFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKil0eXBlKTsgIFwKKyAgICAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCBuYW1lLCAoUHlPYmplY3QgKil0eXBlKSA8IDApIHsgXAorICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlKDApCisKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzIyNCIsICZTSEEzXzIyNHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfMjU2IiwgJlNIQTNfMjU2dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hhM18zODQiLCAmU0hBM18zODR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzUxMiIsICZTSEEzXzUxMnR5cGUpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzIyNCIsICZLZWNjYWtfMjI0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzI1NiIsICZLZWNjYWtfMjU2dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzM4NCIsICZLZWNjYWtfMzg0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzUxMiIsICZLZWNjYWtfNTEydHlwZSk7CisjZW5kaWYKKyAgICBpbml0X3NoYTN0eXBlKCJzaGFrZV8xMjgiLCAmU0hBS0UxMjh0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGFrZV8yNTYiLCAmU0hBS0UyNTZ0eXBlKTsKKworI3VuZGVmIGluaXRfc2hhM3R5cGUKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAia2VjY2Frb3B0IiwgS2VjY2FrT3B0KSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJpbXBsZW1lbnRhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICByZXR1cm4gbTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwppbmRleCAzNjg5YTRlLi42MmM1ODkzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwpAQCAtMjQ0LDggKzI0NCw3IEBACiAgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjYWNoZV9tZXRob2RzW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwppbmRleCBkYjk3OWY1Li42MjEwMjI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKQEAgLTE2NSw3ICsxNjUsNiBAQAogICAgIHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+ZGVjcmVmX2ZhY3RvcnkgPSAwOwogICAgIFB5X0RFQ1JFRihzZWxmKTsKIAotICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwogICAgIHNlbGYtPmRldGVjdF90eXBlcyA9IGRldGVjdF90eXBlczsKICAgICBzZWxmLT50aW1lb3V0ID0gdGltZW91dDsKICAgICAodm9pZClzcWxpdGUzX2J1c3lfdGltZW91dChzZWxmLT5kYiwgKGludCkodGltZW91dCoxMDAwKSk7CkBAIC0yMDIsMjYgKzIwMSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEVtcHR5IHRoZSBlbnRpcmUgc3RhdGVtZW50IGNhY2hlIG9mIHRoaXMgY29ubmVjdGlvbiAqLwotdm9pZCBweXNxbGl0ZV9mbHVzaF9zdGF0ZW1lbnRfY2FjaGUocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZikKLXsKLSAgICBweXNxbGl0ZV9Ob2RlKiBub2RlOwotICAgIHB5c3FsaXRlX1N0YXRlbWVudCogc3RhdGVtZW50OwotCi0gICAgbm9kZSA9IHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+Zmlyc3Q7Ci0KLSAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBzdGF0ZW1lbnQgPSAocHlzcWxpdGVfU3RhdGVtZW50Kikobm9kZS0+ZGF0YSk7Ci0gICAgICAgICh2b2lkKXB5c3FsaXRlX3N0YXRlbWVudF9maW5hbGl6ZShzdGF0ZW1lbnQpOwotICAgICAgICBub2RlID0gbm9kZS0+bmV4dDsKLSAgICB9Ci0KLSAgICBQeV9TRVRSRUYoc2VsZi0+c3RhdGVtZW50X2NhY2hlLAotICAgICAgICAgICAgICAocHlzcWxpdGVfQ2FjaGUgKilQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJnB5c3FsaXRlX0NhY2hlVHlwZSwgIk8iLCBzZWxmKSk7Ci0gICAgUHlfREVDUkVGKHNlbGYpOwotICAgIHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+ZGVjcmVmX2ZhY3RvcnkgPSAwOwotfQotCiAvKiBhY3Rpb24gaW4gKEFDVElPTl9SRVNFVCwgQUNUSU9OX0ZJTkFMSVpFKSAqLwogdm9pZCBweXNxbGl0ZV9kb19hbGxfc3RhdGVtZW50cyhweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBpbnQgYWN0aW9uLCBpbnQgcmVzZXRfY3Vyc29ycykKIHsKQEAgLTM2Niw4ICszNDUsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAvKgpAQCAtNDA2LDkgKzM4NCw3IEBACiAgICAgfQogCiAgICAgcmMgPSBweXNxbGl0ZV9zdGVwKHN0YXRlbWVudCwgc2VsZik7Ci0gICAgaWYgKHJjID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAxOwotICAgIH0gZWxzZSB7CisgICAgaWYgKHJjICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICB9CiAKQEAgLTQzOSw3ICs0MTUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+aW5UcmFuc2FjdGlvbikgeworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5kYikpIHsKIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIHJjID0gc3FsaXRlM19wcmVwYXJlKHNlbGYtPmRiLCAiQ09NTUlUIiwgLTEsICZzdGF0ZW1lbnQsICZ0YWlsKTsKQEAgLTQ1MCw5ICs0MjYsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGVwKHN0YXRlbWVudCwgc2VsZik7Ci0gICAgICAgIGlmIChyYyA9PSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgX3B5c3FsaXRlX3NldGVycm9yKHNlbGYtPmRiLCBzdGF0ZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTQ4NCw3ICs0NTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+aW5UcmFuc2FjdGlvbikgeworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5kYikpIHsKICAgICAgICAgcHlzcWxpdGVfZG9fYWxsX3N0YXRlbWVudHMoc2VsZiwgQUNUSU9OX1JFU0VULCAxKTsKIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC00OTYsOSArNDcwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgICAgICBpZiAocmMgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAocmMgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICAgICAgfQogCkBAIC02NzMsNyArNjQ1LDcgQEAKICAgICBhZ2dyZWdhdGVfaW5zdGFuY2UgPSAoUHlPYmplY3QqKilzcWxpdGUzX2FnZ3JlZ2F0ZV9jb250ZXh0KGNvbnRleHQsIHNpemVvZihQeU9iamVjdCopKTsKIAogICAgIGlmICgqYWdncmVnYXRlX2luc3RhbmNlID09IDApIHsKLSAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihhZ2dyZWdhdGVfY2xhc3MsICIiKTsKKyAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihhZ2dyZWdhdGVfY2xhc3MsIE5VTEwpOwogCiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICAqYWdncmVnYXRlX2luc3RhbmNlID0gMDsKQEAgLTc0NSw3ICs3MTcsNyBAQAogICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJnRiKTsKICAgICByZXN0b3JlID0gMTsKIAotICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgJlB5SWRfZmluYWxpemUsICIiKTsKKyAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCBOVUxMKTsKIAogICAgIFB5X0RFQ1JFRigqYWdncmVnYXRlX2luc3RhbmNlKTsKIApAQCAtODc0LDggKzg0Niw3IEBACiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgZnVuYywgUHlfTm9uZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTkwNiw4ICs4NzcsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGFnZ3JlZ2F0ZV9jbGFzcywgUHlfTm9uZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTk2Myw3ICs5MzMsNyBAQAogCiAgICAgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogI2VuZGlmCi0gICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopdXNlcl9hcmcsICIiKTsKKyAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0Kil1c2VyX2FyZywgTlVMTCk7CiAKICAgICBpZiAoIXJldCkgewogICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CkBAIC0xMDQyLDggKzEwMTIsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGF1dGhvcml6ZXJfY2IsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xMDcyLDggKzEwNDEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3RyYWNlX2NhbGxiYWNrKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQpAQCAtMTEwMCw4ICsxMDY4LDcgQEAKICAgICAgICAgc3FsaXRlM190cmFjZShzZWxmLT5kYiwgX3RyYWNlX2NhbGxiYWNrLCB0cmFjZV9jYWxsYmFjayk7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAjaWZkZWYgSEFWRV9MT0FEX0VYVEVOU0lPTgpAQCAtMTEyNCw4ICsxMDkxLDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX09wZXJhdGlvbmFsRXJyb3IsICJFcnJvciBlbmFibGluZyBsb2FkIGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTExNDgsOCArMTExNCw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCBlcnJtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTExODYsNiArMTE1MSwxNyBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX2dldF9pbl90cmFuc2FjdGlvbihweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCB2b2lkKiB1bnVzZWQpCit7CisgICAgaWYgKCFweXNxbGl0ZV9jaGVja19jb25uZWN0aW9uKHNlbGYpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBQeV9SRVRVUk5fRkFMU0U7Cit9CisKIHN0YXRpYyBpbnQgcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfaXNvbGF0aW9uX2xldmVsKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBpc29sYXRpb25fbGV2ZWwpCiB7CiAgICAgaWYgKGlzb2xhdGlvbl9sZXZlbCA9PSBQeV9Ob25lKSB7CkBAIC0xMTk2LDcgKzExNzIsNiBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKIAogICAgICAgICBzZWxmLT5iZWdpbl9zdGF0ZW1lbnQgPSBOVUxMOwotICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKICAgICB9IGVsc2UgewogICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKmNhbmRpZGF0ZTsKICAgICAgICAgUHlPYmplY3QgKnVwcGVyY2FzZV9sZXZlbDsKQEAgLTEyOTksNyArMTI3NCw3IEBACiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CiAKLSAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgTlVMTCk7CiAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0xMzI4LDcgKzEzMDMsNyBAQAogICAgIFB5T2JqZWN0KiByZXN1bHQgPSAwOwogICAgIFB5T2JqZWN0KiBtZXRob2QgPSAwOwogCi0gICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsIE5VTEwpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTM1Nyw3ICsxMzMyLDcgQEAKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKIAotICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKKyAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCBOVUxMKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTE2MjEsNyArMTU5Niw3IEBACiAgICAgICAgIG1ldGhvZF9uYW1lID0gInJvbGxiYWNrIjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCopc2VsZiwgbWV0aG9kX25hbWUsICIiKTsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCopc2VsZiwgbWV0aG9kX25hbWUsIE5VTEwpOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE2MzAsMTIgKzE2MDUsMTMgQEAKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLXN0YXRpYyBjaGFyIGNvbm5lY3Rpb25fZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgY29ubmVjdGlvbl9kb2NbXSA9CiBQeURvY19TVFIoIlNRTGl0ZSBkYXRhYmFzZSBjb25uZWN0aW9uIG9iamVjdC4iKTsKIAogc3RhdGljIFB5R2V0U2V0RGVmIGNvbm5lY3Rpb25fZ2V0c2V0W10gPSB7CiAgICAgeyJpc29sYXRpb25fbGV2ZWwiLCAgKGdldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX2dldF9pc29sYXRpb25fbGV2ZWwsIChzZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfaXNvbGF0aW9uX2xldmVsfSwKICAgICB7InRvdGFsX2NoYW5nZXMiLCAgKGdldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX2dldF90b3RhbF9jaGFuZ2VzLCAoc2V0dGVyKTB9LAorICAgIHsiaW5fdHJhbnNhY3Rpb24iLCAgKGdldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX2dldF9pbl90cmFuc2FjdGlvbiwgKHNldHRlcikwfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTE2OTcsNyArMTY3Myw2IEBACiAgICAgeyJOb3RTdXBwb3J0ZWRFcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCBOb3RTdXBwb3J0ZWRFcnJvciksIFJFQURPTkxZfSwKICAgICB7InJvd19mYWN0b3J5IiwgVF9PQkpFQ1QsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIHJvd19mYWN0b3J5KX0sCiAgICAgeyJ0ZXh0X2ZhY3RvcnkiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgdGV4dF9mYWN0b3J5KX0sCi0gICAgeyJpbl90cmFuc2FjdGlvbiIsIFRfQk9PTCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgaW5UcmFuc2FjdGlvbiksIFJFQURPTkxZfSwKICAgICB7TlVMTH0KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmggYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCmluZGV4IGFkYmZiNTQuLjI4NjBhMGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaApAQCAtMzcsMTAgKzM3LDYgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgc3FsaXRlMyogZGI7CiAKLSAgICAvKiAxIGlmIHdlIGFyZSBjdXJyZW50bHkgd2l0aGluIGEgdHJhbnNhY3Rpb24sIGkuIGUuIGlmIGEgQkVHSU4gaGFzIGJlZW4KLSAgICAgKiBpc3N1ZWQgKi8KLSAgICBjaGFyIGluVHJhbnNhY3Rpb247Ci0KICAgICAvKiB0aGUgdHlwZSBkZXRlY3Rpb24gbW9kZS4gT25seSAwLCBQQVJTRV9ERUNMVFlQRVMsIFBBUlNFX0NPTE5BTUVTIG9yIGEKICAgICAgKiBiaXR3aXNlIGNvbWJpbmF0aW9uIHRoZXJlb2YgbWFrZXMgc2Vuc2UgKi8KICAgICBpbnQgZGV0ZWN0X3R5cGVzOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCmluZGV4IGUxNjc2ZGUuLmM3MTY5ZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKQEAgLTI3LDQ1ICsyNyw3IEBACiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jdXJzb3JfaXRlcm5leHQocHlzcWxpdGVfQ3Vyc29yKiBzZWxmKTsKIAotc3RhdGljIGNoYXIqIGVycm1zZ19mZXRjaF9hY3Jvc3Nfcm9sbGJhY2sgPSAiQ3Vyc29yIG5lZWRlZCB0byBiZSByZXNldCBiZWNhdXNlIG9mIGNvbW1pdC9yb2xsYmFjayBhbmQgY2FuIG5vIGxvbmdlciBiZSBmZXRjaGVkIGZyb20uIjsKLQotc3RhdGljIHB5c3FsaXRlX1N0YXRlbWVudEtpbmQgZGV0ZWN0X3N0YXRlbWVudF90eXBlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCkKLXsKLSAgICBjaGFyIGJ1ZlsyMF07Ci0gICAgY29uc3QgY2hhciogc3JjOwotICAgIGNoYXIqIGRzdDsKLQotICAgIHNyYyA9IHN0YXRlbWVudDsKLSAgICAvKiBza2lwIG92ZXIgd2hpdGVwYWNlICovCi0gICAgd2hpbGUgKCpzcmMgPT0gJ1xyJyB8fCAqc3JjID09ICdcbicgfHwgKnNyYyA9PSAnICcgfHwgKnNyYyA9PSAnXHQnKSB7Ci0gICAgICAgIHNyYysrOwotICAgIH0KLQotICAgIGlmICgqc3JjID09IDApCi0gICAgICAgIHJldHVybiBTVEFURU1FTlRfSU5WQUxJRDsKLQotICAgIGRzdCA9IGJ1ZjsKLSAgICAqZHN0ID0gMDsKLSAgICB3aGlsZSAoUHlfSVNBTFBIQSgqc3JjKSAmJiAoZHN0IC0gYnVmKSA8ICgoUHlfc3NpemVfdClzaXplb2YoYnVmKSAtIDIpKSB7Ci0gICAgICAgICpkc3QrKyA9IFB5X1RPTE9XRVIoKnNyYysrKTsKLSAgICB9Ci0KLSAgICAqZHN0ID0gMDsKLQotICAgIGlmICghc3RyY21wKGJ1ZiwgInNlbGVjdCIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfU0VMRUNUOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJpbnNlcnQiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0lOU0VSVDsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAidXBkYXRlIikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9VUERBVEU7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgImRlbGV0ZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfREVMRVRFOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJyZXBsYWNlIikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9SRVBMQUNFOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfT1RIRVI7Ci0gICAgfQotfQorc3RhdGljIGNvbnN0IGNoYXIgZXJybXNnX2ZldGNoX2Fjcm9zc19yb2xsYmFja1tdID0gIkN1cnNvciBuZWVkZWQgdG8gYmUgcmVzZXQgYmVjYXVzZSBvZiBjb21taXQvcm9sbGJhY2sgYW5kIGNhbiBubyBsb25nZXIgYmUgZmV0Y2hlZCBmcm9tLiI7CiAKIHN0YXRpYyBpbnQgcHlzcWxpdGVfY3Vyc29yX2luaXQocHlzcWxpdGVfQ3Vyc29yKiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3YXJncykKIHsKQEAgLTE0Myw3ICsxMDUsNyBAQAogICAgIFB5T2JqZWN0KiByZXR2YWw7CiAgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogCi0gICAgdXBjYXNlX2tleSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoa2V5LCAmUHlJZF91cHBlciwgIiIpOworICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsIE5VTEwpOwogICAgIGlmICghdXBjYXNlX2tleSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNDIsOCArMjA0LDcgQEAKICAgICBjb25zdCBjaGFyKiBwb3M7CiAKICAgICBpZiAoIWNvbG5hbWUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCiAgICAgZm9yIChwb3MgPSBjb2xuYW1lOzsgcG9zKyspIHsKQEAgLTQyOCw5ICszODksOSBAQAogICAgIFB5T2JqZWN0KiBmdW5jX2FyZ3M7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKICAgICBpbnQgbnVtY29sczsKLSAgICBpbnQgc3RhdGVtZW50X3R5cGU7CiAgICAgUHlPYmplY3QqIGRlc2NyaXB0b3I7CiAgICAgUHlPYmplY3QqIHNlY29uZF9hcmd1bWVudCA9IE5VTEw7CisgICAgc3FsaXRlX2ludDY0IGxhc3Ryb3dpZDsKIAogICAgIGlmICghY2hlY2tfY3Vyc29yKHNlbGYpKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC01MTEsNyArNDcyLDcgQEAKICAgICAvKiByZXNldCBkZXNjcmlwdGlvbiBhbmQgcm93Y291bnQgKi8KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgUHlfU0VUUkVGKHNlbGYtPmRlc2NyaXB0aW9uLCBQeV9Ob25lKTsKLSAgICBzZWxmLT5yb3djb3VudCA9IC0xTDsKKyAgICBzZWxmLT5yb3djb3VudCA9IDBMOwogCiAgICAgZnVuY19hcmdzID0gUHlUdXBsZV9OZXcoMSk7CiAgICAgaWYgKCFmdW5jX2FyZ3MpIHsKQEAgLTU1MCw0MyArNTExLDE5IEBACiAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgcHlzcWxpdGVfc3RhdGVtZW50X21hcmtfZGlydHkoc2VsZi0+c3RhdGVtZW50KTsKIAotICAgIHN0YXRlbWVudF90eXBlID0gZGV0ZWN0X3N0YXRlbWVudF90eXBlKG9wZXJhdGlvbl9jc3RyKTsKLSAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbi0+YmVnaW5fc3RhdGVtZW50KSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGVtZW50X3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1VQREFURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0RFTEVURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0lOU0VSVDoKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1JFUExBQ0U6Ci0gICAgICAgICAgICAgICAgaWYgKCFzZWxmLT5jb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9weXNxbGl0ZV9jb25uZWN0aW9uX2JlZ2luKHNlbGYtPmNvbm5lY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9PVEhFUjoKLSAgICAgICAgICAgICAgICAvKiBpdCdzIGEgRERMIHN0YXRlbWVudCBvciBzb21ldGhpbmcgc2ltaWxhcgotICAgICAgICAgICAgICAgICAgIC0gd2UgYmV0dGVyIENPTU1JVCBmaXJzdCBzbyBpdCB3b3JrcyBmb3IgYWxsIGNhc2VzICovCi0gICAgICAgICAgICAgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmluVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHlzcWxpdGVfY29ubmVjdGlvbl9jb21taXQoc2VsZi0+Y29ubmVjdGlvbiwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1NFTEVDVDoKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2Fubm90IGV4ZWN1dGUgU0VMRUNUIHN0YXRlbWVudHMgaW4gZXhlY3V0ZW1hbnkoKS4iKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgLyogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGRvIG5vdCBzdGFydCBhIHRyYW5zYWN0aW9uIGlmIGEKKyAgICAgICBEREwgc3RhdGVtZW50IGlzIGVuY291bnRlcmVkLiAgSWYgYW55Ym9keSB3YW50cyB0cmFuc2FjdGlvbmFsIERETCwKKyAgICAgICB0aGV5IGNhbiBpc3N1ZSBhIEJFR0lOIHN0YXRlbWVudCBtYW51YWxseS4gKi8KKyAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbi0+YmVnaW5fc3RhdGVtZW50ICYmICFzcWxpdGUzX3N0bXRfcmVhZG9ubHkoc2VsZi0+c3RhdGVtZW50LT5zdCkgJiYgIXNlbGYtPnN0YXRlbWVudC0+aXNfZGRsKSB7CisgICAgICAgIGlmIChzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24tPmRiKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gX3B5c3FsaXRlX2Nvbm5lY3Rpb25fYmVnaW4oc2VsZi0+Y29ubmVjdGlvbik7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KIAotCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgcGFyYW1ldGVycyA9IFB5SXRlcl9OZXh0KHBhcmFtZXRlcnNfaXRlcik7CiAgICAgICAgIGlmICghcGFyYW1ldGVycykgewpAQCAtNjcyLDYgKzYwOSwyMCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgaWYgKCFzcWxpdGUzX3N0bXRfcmVhZG9ubHkoc2VsZi0+c3RhdGVtZW50LT5zdCkpIHsKKyAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50ICs9IChsb25nKXNxbGl0ZTNfY2hhbmdlcyhzZWxmLT5jb25uZWN0aW9uLT5kYik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZWxmLT5yb3djb3VudD0gLTFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtdWx0aXBsZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3Ryb3dpZCk7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBsYXN0cm93aWQgPSBzcWxpdGUzX2xhc3RfaW5zZXJ0X3Jvd2lkKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBzZWxmLT5sYXN0cm93aWQgPSBfcHlzcWxpdGVfbG9uZ19mcm9tX2ludDY0KGxhc3Ryb3dpZCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAocmMgPT0gU1FMSVRFX1JPVykgewogICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsICJleGVjdXRlbWFueSgpIGNhbiBvbmx5IGV4ZWN1dGUgRE1MIHN0YXRlbWVudHMuIik7CkBAIC02ODYsMjkgKzYzNyw2IEBACiAgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoIChzdGF0ZW1lbnRfdHlwZSkgewotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfVVBEQVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfREVMRVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfSU5TRVJUOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfUkVQTEFDRToKLSAgICAgICAgICAgICAgICBpZiAoc2VsZi0+cm93Y291bnQgPT0gLTFMKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50ID0gMEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50ICs9IChsb25nKXNxbGl0ZTNfY2hhbmdlcyhzZWxmLT5jb25uZWN0aW9uLT5kYik7Ci0gICAgICAgIH0KLQotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdHJvd2lkKTsKLSAgICAgICAgaWYgKCFtdWx0aXBsZSAmJiBzdGF0ZW1lbnRfdHlwZSA9PSBTVEFURU1FTlRfSU5TRVJUKSB7Ci0gICAgICAgICAgICBzcWxpdGVfaW50NjQgbGFzdHJvd2lkOwotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgbGFzdHJvd2lkID0gc3FsaXRlM19sYXN0X2luc2VydF9yb3dpZChzZWxmLT5jb25uZWN0aW9uLT5kYik7Ci0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgc2VsZi0+bGFzdHJvd2lkID0gX3B5c3FsaXRlX2xvbmdfZnJvbV9pbnQ2NChsYXN0cm93aWQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICAgICAgc2VsZi0+bGFzdHJvd2lkID0gUHlfTm9uZTsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChtdWx0aXBsZSkgewogICAgICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgIH0KQEAgLTcxNiwxNSArNjQ0LDYgQEAKICAgICB9CiAKIGVycm9yOgotICAgIC8qIGp1c3QgdG8gYmUgc3VyZSAoaW1wbGljaXQgUk9MTEJBQ0tzIHdpdGggT04gQ09ORkxJQ1QgUk9MTEJBQ0svT1IKLSAgICAgKiBST0xMQkFDSyBjb3VsZCBoYXZlIGhhcHBlbmVkICovCi0gICAgI2lmZGVmIFNRTElURV9WRVJTSU9OX05VTUJFUgotICAgICNpZiBTUUxJVEVfVkVSU0lPTl9OVU1CRVIgPj0gMzAwMjAwMgotICAgIGlmIChzZWxmLT5jb25uZWN0aW9uICYmIHNlbGYtPmNvbm5lY3Rpb24tPmRiKQotICAgICAgICBzZWxmLT5jb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uID0gIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICNlbmRpZgotICAgICNlbmRpZgotCiAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzKTsKICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnNfaXRlcik7CiAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzX2xpc3QpOwpAQCAtOTEzLDggKzgzMiw3IEBACiAKICAgICByb3cgPSBweXNxbGl0ZV9jdXJzb3JfaXRlcm5leHQoc2VsZik7CiAgICAgaWYgKCFyb3cgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCiAgICAgcmV0dXJuIHJvdzsKQEAgLTk5NSw4ICs5MTMsNyBAQAogUHlPYmplY3QqIHB5c3FsaXRlX25vb3AocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgLyogZG9uJ3QgY2FyZSwgcmV0dXJuIE5vbmUgKi8KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jdXJzb3JfY2xvc2UocHlzcWxpdGVfQ3Vyc29yKiBzZWxmLCBQeU9iamVjdCogYXJncykKQEAgLTEwMTIsOCArOTI5LDcgQEAKIAogICAgIHNlbGYtPmNsb3NlZCA9IDE7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjdXJzb3JfbWV0aG9kc1tdID0gewpAQCAtMTA0OSw3ICs5NjUsNyBAQAogICAgIHtOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgY3Vyc29yX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGN1cnNvcl9kb2NbXSA9CiBQeURvY19TVFIoIlNRTGl0ZSBkYXRhYmFzZSBjdXJzb3IgY2xhc3MuIik7CiAKIFB5VHlwZU9iamVjdCBweXNxbGl0ZV9DdXJzb3JUeXBlID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oCmluZGV4IDExOGJhMzguLjI4YmJkNWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmgKQEAgLTUxLDEyICs1MSw2IEBACiAgICAgUHlPYmplY3QqIGluX3dlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogfSBweXNxbGl0ZV9DdXJzb3I7CiAKLXR5cGVkZWYgZW51bSB7Ci0gICAgU1RBVEVNRU5UX0lOVkFMSUQsIFNUQVRFTUVOVF9JTlNFUlQsIFNUQVRFTUVOVF9ERUxFVEUsCi0gICAgU1RBVEVNRU5UX1VQREFURSwgU1RBVEVNRU5UX1JFUExBQ0UsIFNUQVRFTUVOVF9TRUxFQ1QsCi0gICAgU1RBVEVNRU5UX09USEVSCi19IHB5c3FsaXRlX1N0YXRlbWVudEtpbmQ7Ci0KIGV4dGVybiBQeVR5cGVPYmplY3QgcHlzcWxpdGVfQ3Vyc29yVHlwZTsKIAogUHlPYmplY3QqIHB5c3FsaXRlX2N1cnNvcl9leGVjdXRlKHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCmluZGV4IDdhN2U4NjAuLmNjNDUzMzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKQEAgLTEzOSw4ICsxMzksNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgIkNoYW5naW5nIHRoZSBzaGFyZWRfY2FjaGUgZmxhZyBmYWlsZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xNzIsOCArMTcxLDcgQEAKICAgICBpZiAocmMgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIobW9kdWxlX3JlZ2lzdGVyX2FkYXB0ZXJfZG9jLApAQCAtMTk0LDcgKzE5Miw3IEBACiAgICAgfQogCiAgICAgLyogY29udmVydCB0aGUgbmFtZSB0byB1cHBlciBjYXNlICovCi0gICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgIiIpOworICAgIG5hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9yaWdfbmFtZSwgJlB5SWRfdXBwZXIsIE5VTEwpOwogICAgIGlmICghbmFtZSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTIyMSw4ICsyMTksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihlbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrc19kb2MsCkBAIC0yNjEsMTMgKzI1OCwxMyBAQAogfTsKIAogc3RydWN0IF9JbnRDb25zdGFudFBhaXIgewotICAgIGNoYXIqIGNvbnN0YW50X25hbWU7CisgICAgY29uc3QgY2hhciAqY29uc3RhbnRfbmFtZTsKICAgICBpbnQgY29uc3RhbnRfdmFsdWU7CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBfSW50Q29uc3RhbnRQYWlyIEludENvbnN0YW50UGFpcjsKIAotc3RhdGljIEludENvbnN0YW50UGFpciBfaW50X2NvbnN0YW50c1tdID0geworc3RhdGljIGNvbnN0IEludENvbnN0YW50UGFpciBfaW50X2NvbnN0YW50c1tdID0gewogICAgIHsiUEFSU0VfREVDTFRZUEVTIiwgUEFSU0VfREVDTFRZUEVTfSwKICAgICB7IlBBUlNFX0NPTE5BTUVTIiwgUEFSU0VfQ09MTkFNRVN9LAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKaW5kZXggZTg3MDYzMy4uN2I5ODAxMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwpAQCAtNTQsNiArNTQsNyBAQAogICAgIGludCByYzsKICAgICBjb25zdCBjaGFyKiBzcWxfY3N0cjsKICAgICBQeV9zc2l6ZV90IHNxbF9jc3RyX2xlbjsKKyAgICBjb25zdCBjaGFyKiBwOwogCiAgICAgc2VsZi0+c3QgPSBOVUxMOwogICAgIHNlbGYtPmluX3VzZSA9IDA7CkBAIC03Miw2ICs3MywyMyBAQAogICAgIFB5X0lOQ1JFRihzcWwpOwogICAgIHNlbGYtPnNxbCA9IHNxbDsKIAorICAgIC8qIGRldGVybWluZSBpZiB0aGUgc3RhdGVtZW50IGlzIGEgRERMIHN0YXRlbWVudCAqLworICAgIHNlbGYtPmlzX2RkbCA9IDA7CisgICAgZm9yIChwID0gc3FsX2NzdHI7ICpwICE9IDA7IHArKykgeworICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICcgJzoKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYtPmlzX2RkbCA9IChQeU9TX3N0cm5pY21wKHAsICJjcmVhdGUgIiwgNykgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgfHwgKFB5T1Nfc3RybmljbXAocCwgImRyb3AgIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgfHwgKFB5T1Nfc3RybmljbXAocCwgInJlaW5kZXggIiwgOCkgPT0gMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IHNxbGl0ZTNfcHJlcGFyZShjb25uZWN0aW9uLT5kYiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxfY3N0ciwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaCBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaAppbmRleCA0NjgxNDQzLi42ZWVmMTY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCkBAIC0zOCw2ICszOCw3IEBACiAgICAgc3FsaXRlM19zdG10KiBzdDsKICAgICBQeU9iamVjdCogc3FsOwogICAgIGludCBpbl91c2U7CisgICAgaW50IGlzX2RkbDsKICAgICBQeU9iamVjdCogaW5fd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiB9IHB5c3FsaXRlX1N0YXRlbWVudDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYyBiL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKaW5kZXggMzEyZmUzYi4uMzUxYjFiNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCkBAIC0xMTMsNyArMTEzLDYgQEAKIFB5T2JqZWN0ICoKIF9weXNxbGl0ZV9sb25nX2Zyb21faW50NjQoc3FsaXRlX2ludDY0IHZhbHVlKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjIGlmIFNJWkVPRl9MT05HX0xPTkcgPCA4CiAgICAgaWYgKHZhbHVlID4gUFlfTExPTkdfTUFYIHx8IHZhbHVlIDwgUFlfTExPTkdfTUlOKSB7CiAgICAgICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoJnZhbHVlLCBzaXplb2YodmFsdWUpLApAQCAtMTI0LDE0ICsxMjMsNiBAQAogICAgIGlmICh2YWx1ZSA+IExPTkdfTUFYIHx8IHZhbHVlIDwgTE9OR19NSU4pCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbHVlKTsKICMgZW5kaWYKLSNlbHNlCi0jIGlmIFNJWkVPRl9MT05HIDwgOAotICAgIGlmICh2YWx1ZSA+IExPTkdfTUFYIHx8IHZhbHVlIDwgTE9OR19NSU4pIHsKLSAgICAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgmdmFsdWUsIHNpemVvZih2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNfTElUVExFX0VORElBTiwgMSAvKiBzaWduZWQgKi8pOwotICAgIH0KLSMgZW5kaWYKLSNlbmRpZgogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh2YWx1ZSwgc3FsaXRlX2ludDY0LCBsb25nKSk7CiB9CiAKQEAgLTEzOSwyMyArMTMwLDEzIEBACiBfcHlzcWxpdGVfbG9uZ19hc19pbnQ2NChQeU9iamVjdCAqIHB5X3ZhbCkKIHsKICAgICBpbnQgb3ZlcmZsb3c7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KHB5X3ZhbCwgJm92ZXJmbG93KTsKLSNlbHNlCi0gICAgbG9uZyB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7Ci0jZW5kaWYKKyAgICBsb25nIGxvbmcgdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KHB5X3ZhbCwgJm92ZXJmbG93KTsKICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghb3ZlcmZsb3cpIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogIyBpZiBTSVpFT0ZfTE9OR19MT05HID4gOAogICAgICAgICBpZiAoLTB4ODAwMDAwMDAwMDAwMDAwMExMIDw9IHZhbHVlICYmIHZhbHVlIDw9IDB4N0ZGRkZGRkZGRkZGRkZGRkxMKQogIyBlbmRpZgotI2Vsc2UKLSMgaWYgU0laRU9GX0xPTkcgPiA4Ci0gICAgICAgIGlmICgtMHg4MDAwMDAwMDAwMDAwMDAwTCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweDdGRkZGRkZGRkZGRkZGRkZMKQotIyBlbmRpZgotI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogICAgIGVsc2UgaWYgKHNpemVvZih2YWx1ZSkgPCBzaXplb2Yoc3FsaXRlX2ludDY0KSkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCAwOWI1ODM1Li42OWM3YmMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtMzUsNyArMzUsNyBAQAogICogb3RoZXIgY29tcGF0aWJpbGl0eSB3b3JrLgogICovCiAKLXN0YXRpYyBjaGFyIGNvcHlyaWdodFtdID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvcHlyaWdodFtdID0KICAgICAiIFNSRSAyLjIuMiBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMiBieSBTZWNyZXQgTGFicyBBQiAiOwogCiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KQEAgLTYyLDkgKzYyLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBvcHRpb25hbCBmZWF0dXJlcyAqLwogCi0vKiBlbmFibGVzIGZhc3Qgc2VhcmNoaW5nICovCi0jZGVmaW5lIFVTRV9GQVNUX1NFQVJDSAotCiAvKiBlbmFibGVzIGNvcHkvZGVlcGNvcHkgaGFuZGxpbmcgKHdvcmsgaW4gcHJvZ3Jlc3MpICovCiAjdW5kZWYgVVNFX0JVSUxUSU5fQ09QWQogCkBAIC03MTcsNyArNzE0LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotY2FsbChjaGFyKiBtb2R1bGUsIGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogYXJncykKK2NhbGwoY29uc3QgY2hhciogbW9kdWxlLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgUHlPYmplY3QqIG5hbWU7CiAgICAgUHlPYmplY3QqIG1vZDsKQEAgLTEwNTksNyArMTA1Niw2IEBACiAgICAgUHlPYmplY3QqIGpvaW5lcjsKICAgICBQeU9iamVjdCogaXRlbTsKICAgICBQeU9iamVjdCogZmlsdGVyOwotICAgIFB5T2JqZWN0KiBhcmdzOwogICAgIFB5T2JqZWN0KiBtYXRjaDsKICAgICB2b2lkKiBwdHI7CiAgICAgUHlfc3NpemVfdCBzdGF0dXM7CkBAIC0xMTYxLDEzICsxMTU3LDcgQEAKICAgICAgICAgICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCAxKTsKICAgICAgICAgICAgIGlmICghbWF0Y2gpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgbWF0Y2gpOwotICAgICAgICAgICAgaWYgKCFhcmdzKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG1hdGNoKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaXRlbSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZmlsdGVyLCBhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGl0ZW0gPSBfUHlPYmplY3RfQ2FsbEFyZzEoZmlsdGVyLCBtYXRjaCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobWF0Y2gpOwogICAgICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xNTkyLDcgKzE1ODIsNyBAQAogICAgICAgICBza2lwID0gKmNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFZUUkFDRSgoIiVsdSAoc2tpcCB0byAlcClcbiIsICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNraXAsIGNvZGUrc2tpcCkpOyAgICAgICAgXAotICAgICAgICBpZiAoc2tpcC1hZGogPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkgICAgICBcCisgICAgICAgIGlmIChza2lwLWFkaiA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKSAgICAgIFwKICAgICAgICAgICAgIEZBSUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBjb2RlKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKQEAgLTE2MjYsNyArMTYxNiw3IEBACiAKICAgICAgICAgY2FzZSBTUkVfT1BfQ0hBUlNFVDoKICAgICAgICAgICAgIG9mZnNldCA9IDI1Ni9TUkVfQ09ERV9CSVRTOyAvKiAyNTYtYml0IGJpdG1hcCAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYzNCw3ICsxNjI0LDcgQEAKICAgICAgICAgY2FzZSBTUkVfT1BfQklHQ0hBUlNFVDoKICAgICAgICAgICAgIEdFVF9BUkc7IC8qIE51bWJlciBvZiBibG9ja3MgKi8KICAgICAgICAgICAgIG9mZnNldCA9IDI1Ni9zaXplb2YoU1JFX0NPREUpOyAvKiAyNTYtYnl0ZSB0YWJsZSAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCBlYWNoIGJ5dGUgcG9pbnRzIHRvIGEgdmFsaWQgYmxvY2sgKi8KICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewpAQCAtMTY0Myw3ICsxNjMzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgb2Zmc2V0ID0gYXJnICogKDI1Ni9TUkVfQ09ERV9CSVRTKTsgLyogMjU2LWJpdCBiaXRtYXAgdGltZXMgYXJnICovCi0gICAgICAgICAgICBpZiAob2Zmc2V0ID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpCisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzk0LDExICsxNzg0LDExIEBACiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9sZW4gPSBhcmc7CiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICAgICAgICAgIC8qIEhlcmUgY29tZXMgdGhlIHByZWZpeCBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAoUHlfdWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKHVpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAgICAgY29kZSArPSBwcmVmaXhfbGVuOwogICAgICAgICAgICAgICAgICAgICAvKiBBbmQgaGVyZSBjb21lcyB0aGUgb3ZlcmxhcCB0YWJsZSAqLwotICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+IChQeV91aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAodWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgICAgICAvKiBFYWNoIG92ZXJsYXAgdmFsdWUgc2hvdWxkIGJlIDwgcHJlZml4X2xlbiAqLwogICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlZml4X2xlbjsgaSsrKSB7CkBAIC0xOTI3LDcgKzE5MTcsNyBAQAogICAgICAgICAgICAgICAgdG8gYWxsb3cgYXJiaXRyYXJ5IGp1bXBzIGFueXdoZXJlIGluIHRoZSBjb2RlOyBzbyB3ZSBqdXN0IGxvb2sKICAgICAgICAgICAgICAgIGZvciBhIEpVTVAgb3Bjb2RlIHByZWNlZGluZyBvdXIgc2tpcCB0YXJnZXQuCiAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSAmJgorICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCAodWludHB0cl90KShlbmQgLSBjb2RlKSAmJgogICAgICAgICAgICAgICAgIGNvZGVbc2tpcC0zXSA9PSBTUkVfT1BfSlVNUCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBWVFJBQ0UoKCJib3RoIHRoZW4gYW5kIGVsc2UgcGFydHMgcHJlc2VudFxuIikpOwpAQCAtMjA1Miw4ICsyMDQyLDkgQEAKICAgICAgICAgLyogRGVmYXVsdCB2YWx1ZSAqLwogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChQeUxvbmdfQ2hlY2soaW5kZXgpKQotICAgICAgICByZXR1cm4gUHlMb25nX0FzU3NpemVfdChpbmRleCk7CisgICAgaWYgKFB5SW5kZXhfQ2hlY2soaW5kZXgpKSB7CisgICAgICAgIHJldHVybiBQeU51bWJlcl9Bc1NzaXplX3QoaW5kZXgsIE5VTEwpOworICAgIH0KIAogICAgIGkgPSAtMTsKIApAQCAtMjEzMCw2ICsyMTIxLDEyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorbWF0Y2hfZ2V0aXRlbShNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWUpCit7CisgICAgcmV0dXJuIG1hdGNoX2dldHNsaWNlKHNlbGYsIG5hbWUsIFB5X05vbmUpOworfQorCiAvKltjbGluaWMgaW5wdXRdCiBfc3JlLlNSRV9NYXRjaC5ncm91cHMKIApAQCAtMjcxNSw2ICsyNzEyLDEzIEBACiAgICAgcGF0dGVybl9nZXRzZXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCisvKiBNYXRjaCBvYmplY3RzIGRvIG5vdCBzdXBwb3J0IGxlbmd0aCBvciBhc3NpZ25tZW50LCBidXQgZG8gc3VwcG9ydAorICAgX19nZXRpdGVtX18uICovCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtYXRjaF9hc19tYXBwaW5nID0geworICAgIE5VTEwsCisgICAgKGJpbmFyeWZ1bmMpbWF0Y2hfZ2V0aXRlbSwKKyAgICBOVUxMCit9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgbWF0Y2hfbWV0aG9kc1tdID0gewogICAgIHsiZ3JvdXAiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX2dyb3VwX2RvY30sCkBAIC0yNzYwLDcgKzI3NjQsNyBAQAogICAgIChyZXByZnVuYyltYXRjaF9yZXByLCAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgJm1hdGNoX2FzX21hcHBpbmcsICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCBhNzljM2E4Li5iMTk4ODU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtMTQwLDYgKzE0MCw4IEBACiAjZW5kaWYKIAogI2RlZmluZSBUTFNfbWV0aG9kIFNTTHYyM19tZXRob2QKKyNkZWZpbmUgVExTX2NsaWVudF9tZXRob2QgU1NMdjIzX2NsaWVudF9tZXRob2QKKyNkZWZpbmUgVExTX3NlcnZlcl9tZXRob2QgU1NMdjIzX3NlcnZlcl9tZXRob2QKIAogc3RhdGljIGludCBYNTA5X05BTUVfRU5UUllfc2V0KGNvbnN0IFg1MDlfTkFNRV9FTlRSWSAqbmUpCiB7CkBAIC0xNDcsMTAgKzE0OSwxMiBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAorLyogTENPVl9FWENMX1NUQVJUICovCiBzdGF0aWMgaW50IENPTVBfZ2V0X3R5cGUoY29uc3QgQ09NUF9NRVRIT0QgKm1ldGgpCiB7CiAgICAgcmV0dXJuIG1ldGgtPnR5cGU7CiB9CisvKiBMQ09WX0VYQ0xfU1RPUCAqLwogI2VuZGlmCiAKIHN0YXRpYyBwZW1fcGFzc3dvcmRfY2IgKlNTTF9DVFhfZ2V0X2RlZmF1bHRfcGFzc3dkX2NiKFNTTF9DVFggKmN0eCkKQEAgLTE4Nyw2ICsxOTEsMTkgQEAKIHsKICAgICByZXR1cm4gc3RvcmUtPnBhcmFtOwogfQorCitzdGF0aWMgaW50CitTU0xfU0VTU0lPTl9oYXNfdGlja2V0KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiAocy0+dGxzZXh0X3RpY2tsZW4gPiAwKSA/IDEgOiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworU1NMX1NFU1NJT05fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiBzLT50bHNleHRfdGlja19saWZldGltZV9oaW50OworfQorCiAjZW5kaWYgLyogT3BlblNTTCA8IDEuMS4wIG9yIExpYnJlU1NMICovCiAKIApAQCAtMjIwLDE0ICsyMzcsMTYgQEAKIGVudW0gcHlfc3NsX3ZlcnNpb24gewogICAgIFBZX1NTTF9WRVJTSU9OX1NTTDIsCiAgICAgUFlfU1NMX1ZFUlNJT05fU1NMMz0xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUywKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMsIC8qIFNTTHYyMyAqLwogI2lmIEhBVkVfVExTdjFfMgogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAgICAgUFlfU1NMX1ZFUlNJT05fVExTMV8xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMgorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMiwKICNlbHNlCi0gICAgUFlfU1NMX1ZFUlNJT05fVExTMQorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAjZW5kaWYKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UPTB4MTAsCisgICAgUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUiwKIH07CiAKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtMjkzLDI1ICszMTIsMzUgQEAKICAgICBpbnQgZW9mX3dyaXR0ZW47CiB9IFB5U1NMTWVtb3J5QklPOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworICAgIFB5U1NMQ29udGV4dCAqY3R4OworfSBQeVNTTFNlc3Npb247CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU29ja2V0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMTWVtb3J5QklPX1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU2Vzc2lvbl9UeXBlOwogCiAvKltjbGluaWMgaW5wdXRdCiBtb2R1bGUgX3NzbAogY2xhc3MgX3NzbC5fU1NMQ29udGV4dCAiUHlTU0xDb250ZXh0ICoiICImUHlTU0xDb250ZXh0X1R5cGUiCiBjbGFzcyBfc3NsLl9TU0xTb2NrZXQgIlB5U1NMU29ja2V0ICoiICImUHlTU0xTb2NrZXRfVHlwZSIKIGNsYXNzIF9zc2wuTWVtb3J5QklPICJQeVNTTE1lbW9yeUJJTyAqIiAiJlB5U1NMTWVtb3J5QklPX1R5cGUiCitjbGFzcyBfc3NsLlNTTFNlc3Npb24gIlB5U1NMU2Vzc2lvbiAqIiAiJlB5U1NMU2Vzc2lvbl9UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2JmN2NiODMyNjM4ZTJlMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YmRjNjdmYWZlZWFhODEwOV0qLwogCiAjaW5jbHVkZSAiY2xpbmljL19zc2wuYy5oIgogCiBzdGF0aWMgaW50IFB5U1NMX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgdGltZW91dCk7CiAKKwogI2RlZmluZSBQeVNTTENvbnRleHRfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpCiAjZGVmaW5lIFB5U1NMU29ja2V0X0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNvY2tldF9UeXBlKQogI2RlZmluZSBQeVNTTE1lbW9yeUJJT19DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkKKyNkZWZpbmUgUHlTU0xTZXNzaW9uX0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5U1NMU2Vzc2lvbl9UeXBlKQogCiB0eXBlZGVmIGVudW0gewogICAgIFNPQ0tFVF9JU19OT05CTE9DS0lORywKQEAgLTQ1NSw3ICs0ODQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfU2V0RXJyb3IoUHlTU0xTb2NrZXQgKm9iaiwgaW50IHJldCwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCitQeVNTTF9TZXRFcnJvcihQeVNTTFNvY2tldCAqb2JqLCBpbnQgcmV0LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKICAgICBQeU9iamVjdCAqdHlwZSA9IFB5U1NMRXJyb3JPYmplY3Q7CiAgICAgY2hhciAqZXJyc3RyID0gTlVMTDsKQEAgLTUzNyw3ICs1NjYsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NldFNTTEVycm9yIChjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgeworX3NldFNTTEVycm9yIChjb25zdCBjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgewogCiAgICAgaWYgKGVycnN0ciA9PSBOVUxMKQogICAgICAgICBlcnJjb2RlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwpAQCAtMTU0Nyw2ICsxNTc2LDY1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTAorc3RhdGljIFB5T2JqZWN0ICoKK2NpcGhlcl90b19kaWN0KGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcikKK3sKKyAgICBjb25zdCBjaGFyICpjaXBoZXJfbmFtZSwgKmNpcGhlcl9wcm90b2NvbDsKKworICAgIHVuc2lnbmVkIGxvbmcgY2lwaGVyX2lkOworICAgIGludCBhbGdfYml0cywgc3RyZW5ndGhfYml0cywgbGVuOworICAgIGNoYXIgYnVmWzUxMl0gPSB7MH07CisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIGludCBhZWFkLCBuaWQ7CisgICAgY29uc3QgY2hhciAqc2tjaXBoZXIgPSBOVUxMLCAqZGlnZXN0ID0gTlVMTCwgKmt4ID0gTlVMTCwgKmF1dGggPSBOVUxMOworI2VuZGlmCisKKyAgICAvKiBjYW4gYmUgTlVMTCAqLworICAgIGNpcGhlcl9uYW1lID0gU1NMX0NJUEhFUl9nZXRfbmFtZShjaXBoZXIpOworICAgIGNpcGhlcl9wcm90b2NvbCA9IFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY2lwaGVyKTsKKyAgICBjaXBoZXJfaWQgPSBTU0xfQ0lQSEVSX2dldF9pZChjaXBoZXIpOworICAgIFNTTF9DSVBIRVJfZGVzY3JpcHRpb24oY2lwaGVyLCBidWYsIHNpemVvZihidWYpIC0gMSk7CisgICAgbGVuID0gc3RybGVuKGJ1Zik7CisgICAgaWYgKGxlbiA+IDEgJiYgYnVmW2xlbi0xXSA9PSAnXG4nKQorICAgICAgICBidWZbbGVuLTFdID0gJ1wwJzsKKyAgICBzdHJlbmd0aF9iaXRzID0gU1NMX0NJUEhFUl9nZXRfYml0cyhjaXBoZXIsICZhbGdfYml0cyk7CisKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgYWVhZCA9IFNTTF9DSVBIRVJfaXNfYWVhZChjaXBoZXIpOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2NpcGhlcl9uaWQoY2lwaGVyKTsKKyAgICBza2NpcGhlciA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2RpZ2VzdF9uaWQoY2lwaGVyKTsKKyAgICBkaWdlc3QgPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9reF9uaWQoY2lwaGVyKTsKKyAgICBreCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2F1dGhfbmlkKGNpcGhlcik7CisgICAgYXV0aCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgIntza3Nzc3Nzc3Npc2kiCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgICAgICAic09zc3Nzc3NzcyIKKyNlbmRpZgorICAgICAgICAifSIsCisgICAgICAgICJpZCIsIGNpcGhlcl9pZCwKKyAgICAgICAgIm5hbWUiLCBjaXBoZXJfbmFtZSwKKyAgICAgICAgInByb3RvY29sIiwgY2lwaGVyX3Byb3RvY29sLAorICAgICAgICAiZGVzY3JpcHRpb24iLCBidWYsCisgICAgICAgICJzdHJlbmd0aF9iaXRzIiwgc3RyZW5ndGhfYml0cywKKyAgICAgICAgImFsZ19iaXRzIiwgYWxnX2JpdHMKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgICAgICwiYWVhZCIsIGFlYWQgPyBQeV9UcnVlIDogUHlfRmFsc2UsCisgICAgICAgICJzeW1tZXRyaWMiLCBza2NpcGhlciwKKyAgICAgICAgImRpZ2VzdCIsIGRpZ2VzdCwKKyAgICAgICAgImtlYSIsIGt4LAorICAgICAgICAiYXV0aCIsIGF1dGgKKyNlbmRpZgorICAgICAgICk7Cit9CisjZW5kaWYKKwogLypbY2xpbmljIGlucHV0XQogX3NzbC5fU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0yMjU1LDYgKzIzNDMsMTUyIEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKworc3RhdGljIFNTTF9TRVNTSU9OKgorX3NzbF9zZXNzaW9uX2R1cChTU0xfU0VTU0lPTiAqc2Vzc2lvbikgeworICAgIFNTTF9TRVNTSU9OICpuZXdzZXNzaW9uID0gTlVMTDsKKyAgICBpbnQgc2xlbjsKKyAgICB1bnNpZ25lZCBjaGFyICpzZW5jID0gTlVMTCwgKnA7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3RfcDsKKworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIHNlc3Npb24iKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBnZXQgbGVuZ3RoICovCisgICAgc2xlbiA9IGkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCBOVUxMKTsKKyAgICBpZiAoc2xlbiA9PSAwIHx8IHNsZW4gPiAweEZGMDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmICgoc2VuYyA9IFB5TWVtX01hbGxvYyhzbGVuKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBwID0gc2VuYzsKKyAgICBpZiAoIWkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCAmcCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGNvbnN0X3AgPSBzZW5jOworICAgIG5ld3Nlc3Npb24gPSBkMmlfU1NMX1NFU1NJT04oTlVMTCwgJmNvbnN0X3AsIHNsZW4pOworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlNZW1fRnJlZShzZW5jKTsKKyAgICByZXR1cm4gbmV3c2Vzc2lvbjsKKyAgZXJyb3I6CisgICAgaWYgKHNlbmMgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHNlbmMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICAvKiBnZXRfc2Vzc2lvbiBjYW4gcmV0dXJuIHNlc3Npb25zIGZyb20gYSBzZXJ2ZXItc2lkZSBjb25uZWN0aW9uLAorICAgICAqIGl0IGRvZXMgbm90IGNoZWNrIGZvciBoYW5kc2hha2UgZG9uZSBvciBjbGllbnQgc29ja2V0LiAqLworICAgIFB5U1NMU2Vzc2lvbiAqcHlzZXNzOworICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworCisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uIGFzIHdvcmthcm91bmQgZm9yIHNlc3Npb24gYnVnIGluIE9wZW5TU0wgMS4xLjAsCisgICAgICogaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9pc3N1ZXMvMTU1MCAqLworICAgIHNlc3Npb24gPSBTU0xfZ2V0MF9zZXNzaW9uKHNlbGYtPnNzbCk7ICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBpZiAoKHNlc3Npb24gPSBfc3NsX3Nlc3Npb25fZHVwKHNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgc2Vzc2lvbiA9IFNTTF9nZXQxX3Nlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyNlbmRpZgorICAgIHB5c2VzcyA9IFB5T2JqZWN0X0dDX05ldyhQeVNTTFNlc3Npb24sICZQeVNTTFNlc3Npb25fVHlwZSk7CisgICAgaWYgKHB5c2VzcyA9PSBOVUxMKSB7CisgICAgICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2Vzc2lvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFzc2VydChzZWxmLT5jdHgpOworICAgIHB5c2Vzcy0+Y3R4ID0gc2VsZi0+Y3R4OworICAgIFB5X0lOQ1JFRihweXNlc3MtPmN0eCk7CisgICAgcHlzZXNzLT5zZXNzaW9uID0gc2Vzc2lvbjsKKyAgICBQeU9iamVjdF9HQ19UcmFjayhweXNlc3MpOworICAgIHJldHVybiAoUHlPYmplY3QgKilweXNlc3M7Cit9CisKK3N0YXRpYyBpbnQgUHlTU0xfc2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICBQeVNTTFNlc3Npb24gKnB5c2VzczsKKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgU1NMX1NFU1NJT04gKnNlc3Npb247CisjZW5kaWYKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFQeVNTTFNlc3Npb25fQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJWYWx1ZSBpcyBub3QgYSBTU0xTZXNzaW9uLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHB5c2VzcyA9IChQeVNTTFNlc3Npb24gKil2YWx1ZTsKKworICAgIGlmIChzZWxmLT5jdHgtPmN0eCAhPSBweXNlc3MtPmN0eC0+Y3R4KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNlc3Npb24gcmVmZXJzIHRvIGEgZGlmZmVyZW50IFNTTENvbnRleHQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPnNvY2tldF90eXBlICE9IFBZX1NTTF9DTElFTlQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNldCBzZXNzaW9uIGZvciBzZXJ2ZXItc2lkZSBTU0xTb2NrZXQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPmhhbmRzaGFrZV9kb25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uICovCisgICAgaWYgKChzZXNzaW9uID0gX3NzbF9zZXNzaW9uX2R1cChweXNlc3MtPnNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzdWx0ID0gU1NMX3NldF9zZXNzaW9uKHNlbGYtPnNzbCwgc2Vzc2lvbik7CisgICAgLyogZnJlZSBkdXBsaWNhdGUsIFNTTF9zZXRfc2Vzc2lvbigpIGJ1bXBzIHJlZiBjb3VudCAqLworICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2Vzc2lvbik7CisjZWxzZQorICAgIHJlc3VsdCA9IFNTTF9zZXRfc2Vzc2lvbihzZWxmLT5zc2wsIHB5c2Vzcy0+c2Vzc2lvbik7CisjZW5kaWYKKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9zZXRfc2Vzc2lvbl9kb2MsCisiX3NldHRlcl9zZXNzaW9uKHNlc3Npb24pXG5cCitcCitHZXQgLyBzZXQgU1NMU2Vzc2lvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXNzaW9uX3JldXNlZChQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGlmIChTU0xfc2Vzc2lvbl9yZXVzZWQoc2VsZi0+c3NsKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvYywKKyJXYXMgdGhlIGNsaWVudCBzZXNzaW9uIHJldXNlZCBkdXJpbmcgaGFuZHNoYWtlPyIpOworCiBzdGF0aWMgUHlHZXRTZXREZWYgc3NsX2dldHNldGxpc3RbXSA9IHsKICAgICB7ImNvbnRleHQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfY29udGV4dCwKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBQeVNTTF9zZXRfY29udGV4dCwgUHlTU0xfc2V0X2NvbnRleHRfZG9jfSwKQEAgLTIyNjQsNiArMjQ5OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZV9kb2N9LAogICAgIHsib3duZXIiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfb3duZXIsIChzZXR0ZXIpIFB5U1NMX3NldF9vd25lciwKICAgICAgICAgICAgICAgUHlTU0xfZ2V0X293bmVyX2RvY30sCisgICAgeyJzZXNzaW9uIiwgKGdldHRlcikgUHlTU0xfZ2V0X3Nlc3Npb24sCisgICAgICAgICAgICAgICAgKHNldHRlcikgUHlTU0xfc2V0X3Nlc3Npb24sIFB5U1NMX3NldF9zZXNzaW9uX2RvY30sCisgICAgeyJzZXNzaW9uX3JldXNlZCIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvY30sCiAgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yMzIzLDYgKzI1NjEsMzMgQEAKICAqIF9TU0xDb250ZXh0IG9iamVjdHMKICAqLwogCitzdGF0aWMgaW50Citfc2V0X3ZlcmlmeV9tb2RlKFNTTF9DVFggKmN0eCwgZW51bSBweV9zc2xfY2VydF9yZXF1aXJlbWVudHMgbikKK3sKKyAgICBpbnQgbW9kZTsKKyAgICBpbnQgKCp2ZXJpZnlfY2IpKGludCwgWDUwOV9TVE9SRV9DVFggKikgPSBOVUxMOworCisgICAgc3dpdGNoKG4pIHsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX05PTkU6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX05PTkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfT1BUSU9OQUw6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfUkVRVUlSRUQ6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB2YWx1ZSBmb3IgdmVyaWZ5X21vZGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBrZWVwIGN1cnJlbnQgdmVyaWZ5IGNiICovCisgICAgdmVyaWZ5X2NiID0gU1NMX0NUWF9nZXRfdmVyaWZ5X2NhbGxiYWNrKGN0eCk7CisgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgbW9kZSwgdmVyaWZ5X2NiKTsKKyAgICByZXR1cm4gMDsKK30KKwogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBfc3NsLl9TU0xDb250ZXh0Ll9fbmV3X18KQEAgLTIzMzcsNiArMjYwMiw3IEBACiAgICAgUHlTU0xDb250ZXh0ICpzZWxmOwogICAgIGxvbmcgb3B0aW9uczsKICAgICBTU0xfQ1RYICpjdHggPSBOVUxMOworICAgIGludCByZXN1bHQ7CiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgdW5zaWduZWQgbG9uZyBsaWJ2ZXI7CiAjZW5kaWYKQEAgLTIzNTgsOCArMjYyNCwxMiBAQAogICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fU1NMMikKICAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoU1NMdjJfbWV0aG9kKCkpOwogI2VuZGlmCi0gICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpCisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpIC8qIFNTTHYyMyAqLwogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfbWV0aG9kKCkpOworICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVCkKKyAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX2NsaWVudF9tZXRob2QoKSk7CisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKQorICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfc2VydmVyX21ldGhvZCgpKTsKICAgICBlbHNlCiAgICAgICAgIHByb3RvX3ZlcnNpb24gPSAtMTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMjM5MiwxNiArMjY2Miw1NyBAQAogICAgIHNlbGYtPnNldF9ob3N0bmFtZSA9IE5VTEw7CiAjZW5kaWYKICAgICAvKiBEb24ndCBjaGVjayBob3N0IG5hbWUgYnkgZGVmYXVsdCAqLwotICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMDsKKyAgICBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UKSB7CisgICAgICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMTsKKyAgICAgICAgaWYgKF9zZXRfdmVyaWZ5X21vZGUoc2VsZi0+Y3R4LCBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+Y2hlY2tfaG9zdG5hbWUgPSAwOworICAgICAgICBpZiAoX3NldF92ZXJpZnlfbW9kZShzZWxmLT5jdHgsIFBZX1NTTF9DRVJUX05PTkUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KICAgICAvKiBEZWZhdWx0cyAqLwotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIFNTTF9WRVJJRllfTk9ORSwgTlVMTCk7CiAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEwgJiB+U1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UUzsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MjsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wzKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKKyAgICAvKiBNaW5pbWFsIHNlY3VyaXR5IGZsYWdzIGZvciBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlIGNvbnRleHQuCisgICAgICogQ2xpZW50IHNvY2tldHMgaWdub3JlIHNlcnZlci1zaWRlIHBhcmFtZXRlcnMuICovCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fQ09NUFJFU1NJT047CisjZW5kaWYKKyNpZmRlZiBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9ESF9VU0UKKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfREhfVVNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQorICAgIG9wdGlvbnMgfD0gU1NMX09QX1NJTkdMRV9FQ0RIX1VTRTsKKyNlbmRpZgogICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LCBvcHRpb25zKTsKIAorICAgIC8qIEEgYmFyZSBtaW5pbXVtIGNpcGhlciBsaXN0IHdpdGhvdXQgY29tcGxldGx5IGJyb2tlbiBjaXBoZXIgc3VpdGVzLgorICAgICAqIEl0J3MgZmFyIGZyb20gcGVyZmVjdCBidXQgZ2l2ZXMgdXNlcnMgYSBiZXR0ZXIgaGVhZCBzdGFydC4gKi8KKyAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKSB7CisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTDohTUQ1Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogU1NMdjIgbmVlZHMgTUQ1ICovCisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTCIpOworICAgIH0KKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgLyogU2V0IFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUy4gVGhpcyBwb3RlbnRpYWxseSBncmVhdGx5IHJlZHVjZXMgbWVtb3J5CiAgICAgICAgdXNhZ2UgZm9yIG5vIGNvc3QgYXQgYWxsLiBIb3dldmVyLCBkb24ndCBkbyB0aGlzIGZvciBPcGVuU1NMIHZlcnNpb25zCkBAIC0yNTA2LDYgKzI4MTcsNTIgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmdldF9jaXBoZXJzCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE1NmU0ZDY4YTQwNmRmYzQgaW5wdXQ9YTJhYWRjOWFmODliNzljNV0qLworeworICAgIFNTTCAqc3NsID0gTlVMTDsKKyAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc2sgPSBOVUxMOworICAgIGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcjsKKyAgICBpbnQgaT0wOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqZGN0OworCisgICAgc3NsID0gU1NMX25ldyhzZWxmLT5jdHgpOworICAgIGlmIChzc2wgPT0gTlVMTCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBzayA9IFNTTF9nZXRfY2lwaGVycyhzc2wpOworCisgICAgcmVzdWx0ID0gUHlMaXN0X05ldyhza19TU0xfQ0lQSEVSX251bShzaykpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNrX1NTTF9DSVBIRVJfbnVtKHNrKTsgaSsrKSB7CisgICAgICAgIGNpcGhlciA9IHNrX1NTTF9DSVBIRVJfdmFsdWUoc2ssIGkpOworICAgICAgICBkY3QgPSBjaXBoZXJfdG9fZGljdChjaXBoZXIpOworICAgICAgICBpZiAoZGN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlc3VsdCwgaSwgZGN0KTsKKyAgICB9CisKKyAgZXhpdDoKKyAgICBpZiAoc3NsICE9IE5VTEwpCisgICAgICAgIFNTTF9mcmVlKHNzbCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworfQorI2VuZGlmCisKKwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKIHN0YXRpYyBpbnQKIGRvX3Byb3RvY29sX3NlbGVjdGlvbihpbnQgYWxwbiwgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLApAQCAtMjY2MiwyOCArMzAxOSwxNiBAQAogc3RhdGljIGludAogc2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZywgdm9pZCAqYykKIHsKLSAgICBpbnQgbiwgbW9kZTsKKyAgICBpbnQgbjsKICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImkiLCAmbikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAobiA9PSBQWV9TU0xfQ0VSVF9OT05FKQotICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9OT05FOwotICAgIGVsc2UgaWYgKG4gPT0gUFlfU1NMX0NFUlRfT1BUSU9OQUwpCi0gICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7Ci0gICAgZWxzZSBpZiAobiA9PSBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkKLSAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUgZm9yIHZlcmlmeV9tb2RlIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKG1vZGUgPT0gU1NMX1ZFUklGWV9OT05FICYmIHNlbGYtPmNoZWNrX2hvc3RuYW1lKSB7CisgICAgaWYgKG4gPT0gUFlfU1NMX0NFUlRfTk9ORSAmJiBzZWxmLT5jaGVja19ob3N0bmFtZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2V0IHZlcmlmeV9tb2RlIHRvIENFUlRfTk9ORSB3aGVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVja19ob3N0bmFtZSBpcyBlbmFibGVkLiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIG1vZGUsIE5VTEwpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBfc2V0X3ZlcmlmeV9tb2RlKHNlbGYtPmN0eCwgbik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNjczLDYgKzQwMTgsNyBAQAogICAgIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGCiAgICAgX1NTTF9fU1NMQ09OVEVYVF9DRVJUX1NUT1JFX1NUQVRTX01FVEhPRERFRgogICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzkzOCw2ICs0Mjg0LDE5NCBAQAogfTsKIAogCisvKgorICogU1NMIFNlc3Npb24gb2JqZWN0CisgKi8KKworc3RhdGljIHZvaWQKK1B5U1NMU2Vzc2lvbl9kZWFsbG9jKFB5U1NMU2Vzc2lvbiAqc2VsZikKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIFB5X1hERUNSRUYoc2VsZi0+Y3R4KTsKKyAgICBpZiAoc2VsZi0+c2Vzc2lvbiAhPSBOVUxMKSB7CisgICAgICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2VsZi0+c2Vzc2lvbik7CisgICAgfQorICAgIFB5T2JqZWN0X0dDX0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9yaWNoY29tcGFyZShQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBpbnQgb3ApCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmIChsZWZ0ID09IE5VTEwgfHwgcmlnaHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeVNTTFNlc3Npb25fQ2hlY2sobGVmdCkgfHwgIVB5U1NMU2Vzc2lvbl9DaGVjayhyaWdodCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KKworICAgIGlmIChsZWZ0ID09IHJpZ2h0KSB7CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbGVmdF9pZCwgKnJpZ2h0X2lkOworICAgICAgICB1bnNpZ25lZCBpbnQgbGVmdF9sZW4sIHJpZ2h0X2xlbjsKKyAgICAgICAgbGVmdF9pZCA9IFNTTF9TRVNTSU9OX2dldF9pZCgoKFB5U1NMU2Vzc2lvbiAqKWxlZnQpLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZWZ0X2xlbik7CisgICAgICAgIHJpZ2h0X2lkID0gU1NMX1NFU1NJT05fZ2V0X2lkKCgoUHlTU0xTZXNzaW9uICopcmlnaHQpLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmlnaHRfbGVuKTsKKyAgICAgICAgaWYgKGxlZnRfbGVuID09IHJpZ2h0X2xlbikgeworICAgICAgICAgICAgcmVzdWx0ID0gbWVtY21wKGxlZnRfaWQsIHJpZ2h0X2lkLCBsZWZ0X2xlbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoIChvcCkgeworICAgICAgY2FzZSBQeV9FUToKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgUHlfTkU6CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFB5X0xUOgorICAgICAgY2FzZSBQeV9MRToKKyAgICAgIGNhc2UgUHlfR1Q6CisgICAgICBjYXNlIFB5X0dFOgorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgaW50CitQeVNTTFNlc3Npb25fdHJhdmVyc2UoUHlTU0xTZXNzaW9uICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5jdHgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitQeVNTTFNlc3Npb25fY2xlYXIoUHlTU0xTZXNzaW9uICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmN0eCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfdGltZShQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFNTTF9TRVNTSU9OX2dldF90aW1lKHNlbGYtPnNlc3Npb24pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfdGltZV9kb2MsCisiU2Vzc2lvbiBjcmVhdGlvbiB0aW1lIChzZWNvbmRzIHNpbmNlIGVwb2NoKS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoU1NMX1NFU1NJT05fZ2V0X3RpbWVvdXQoc2VsZi0+c2Vzc2lvbikpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0X2RvYywKKyJTZXNzaW9uIHRpbWVvdXQgKGRlbHRhIGluIHNlY29uZHMpLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHVuc2lnbmVkIGxvbmcgaGludCA9IFNTTF9TRVNTSU9OX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChzZWxmLT5zZXNzaW9uKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoaGludCk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50X2RvYywKKyJUaWNrZXQgbGlmZSB0aW1lIGhpbnQuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppZDsKKyAgICB1bnNpZ25lZCBpbnQgbGVuOworICAgIGlkID0gU1NMX1NFU1NJT05fZ2V0X2lkKHNlbGYtPnNlc3Npb24sICZsZW4pOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopaWQsIGxlbik7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWRfZG9jLAorIlNlc3Npb24gaWQiKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGlmIChTU0xfU0VTU0lPTl9oYXNfdGlja2V0KHNlbGYtPnNlc3Npb24pKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXRfZG9jLAorIkRvZXMgdGhlIHNlc3Npb24gY29udGFpbiBhIHRpY2tldD8iKTsKKworCitzdGF0aWMgUHlHZXRTZXREZWYgUHlTU0xTZXNzaW9uX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Imhhc190aWNrZXQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldF9kb2N9LAorICAgIHsiaWQiLCAgIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkX2RvY30sCisgICAgeyJ0aWNrZXRfbGlmZXRpbWVfaGludCIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQsCisgICAgICAgICAgICAgIE5VTEwsIFB5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnRfZG9jfSwKKyAgICB7InRpbWUiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpbWUsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfdGltZV9kb2N9LAorICAgIHsidGltZW91dCIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0X2RvY30sCisgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU2Vzc2lvbl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfc3NsLlNlc3Npb24iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25hbWUqLworICAgIHNpemVvZihQeVNTTFNlc3Npb24pLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIChkZXN0cnVjdG9yKVB5U1NMU2Vzc2lvbl9kZWFsbG9jLCAgICAgICAgICAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgKHRyYXZlcnNlcHJvYylQeVNTTFNlc3Npb25fdHJhdmVyc2UsICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIChpbnF1aXJ5KVB5U1NMU2Vzc2lvbl9jbGVhciwgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICBQeVNTTFNlc3Npb25fcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KKyAgICBQeVNTTFNlc3Npb25fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLworfTsKKworCiAvKiBoZWxwZXIgcm91dGluZXMgZm9yIHNlZWRpbmcgdGhlIFNTTCBQUk5HICovCiAvKltjbGluaWMgaW5wdXRdCiBfc3NsLlJBTkRfYWRkCkBAIC00MDU5LDYgKzQ1OTMsNyBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUdECisvKiBMQ09WX0VYQ0xfU1RBUlQgKi8KIC8qW2NsaW5pYyBpbnB1dF0KIF9zc2wuUkFORF9lZ2QKICAgICBwYXRoOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNDb252ZXJ0ZXIiKQpAQCAtNDA4NCw2ICs0NjE5LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhieXRlcyk7CiB9CisvKiBMQ09WX0VYQ0xfU1RPUCAqLwogI2VuZGlmIC8qIE9QRU5TU0xfTk9fRUdEICovCiAKIApAQCAtNDU0MiwxMyArNTA3OCwxMiBAQAogCiAgICAgaWYgKF9zc2xfbG9ja3MgPT0gTlVMTCkgewogICAgICAgICBfc3NsX2xvY2tzX2NvdW50ID0gQ1JZUFRPX251bV9sb2NrcygpOwotICAgICAgICBfc3NsX2xvY2tzID0gUHlNZW1fTmV3KFB5VGhyZWFkX3R5cGVfbG9jaywgX3NzbF9sb2Nrc19jb3VudCk7CisgICAgICAgIF9zc2xfbG9ja3MgPSBQeU1lbV9DYWxsb2MoX3NzbF9sb2Nrc19jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlUaHJlYWRfdHlwZV9sb2NrKSk7CiAgICAgICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBtZW1zZXQoX3NzbF9sb2NrcywgMCwKLSAgICAgICAgICAgICAgIHNpemVvZihQeVRocmVhZF90eXBlX2xvY2spICogX3NzbF9sb2Nrc19jb3VudCk7CiAgICAgICAgIGZvciAoaSA9IDA7ICBpIDwgX3NzbF9sb2Nrc19jb3VudDsgIGkrKykgewogICAgICAgICAgICAgX3NzbF9sb2Nrc1tpXSA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKICAgICAgICAgICAgIGlmIChfc3NsX2xvY2tzW2ldID09IE5VTEwpIHsKQEAgLTQ2MjMsNiArNTE1OCw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMTWVtb3J5QklPX1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xTZXNzaW9uX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zc2xtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCkBAIC00Njk0LDYgKzUyMzIsMTAgQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1lbW9yeUJJTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTE1lbW9yeUJJT19UeXBlKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFNlc3Npb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xTZXNzaW9uX1R5cGUpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9aRVJPX1JFVFVSTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX1pFUk9fUkVUVVJOKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1NMX0VSUk9SX1dBTlRfUkVBRCIsCkBAIC00Nzk4LDYgKzUzNDAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMU19DTElFTlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFNfU0VSVkVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTdjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEpOwogI2lmIEhBVkVfVExTdjFfMgpAQCAtNDgyMCw2ICs1MzY2LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVElDS0VUIiwgU1NMX09QX05PX1RJQ0tFVCk7CiAjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfRUNESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0VDREhfVVNFKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RydWN0LmMgYi9Nb2R1bGVzL19zdHJ1Y3QuYwppbmRleCBmOTY1NTQxLi43OTZkMTY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19zdHJ1Y3QuYwpAQCAtNjAsNiArNjAsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7Cit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzdF9ib29sOwogCiAjZGVmaW5lIFNIT1JUX0FMSUdOIChzaXplb2Yoc3Rfc2hvcnQpIC0gc2l6ZW9mKHNob3J0KSkKICNkZWZpbmUgSU5UX0FMSUdOIChzaXplb2Yoc3RfaW50KSAtIHNpemVvZihpbnQpKQpAQCAtNjgsMjIgKzY5LDEyIEBACiAjZGVmaW5lIERPVUJMRV9BTElHTiAoc2l6ZW9mKHN0X2RvdWJsZSkgLSBzaXplb2YoZG91YmxlKSkKICNkZWZpbmUgVk9JRF9QX0FMSUdOIChzaXplb2Yoc3Rfdm9pZF9wKSAtIHNpemVvZih2b2lkICopKQogI2RlZmluZSBTSVpFX1RfQUxJR04gKHNpemVvZihzdF9zaXplX3QpIC0gc2l6ZW9mKHNpemVfdCkpCisjZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzdF9ib29sKSAtIHNpemVvZihfQm9vbCkpCiAKIC8qIFdlIGNhbid0IHN1cHBvcnQgcSBhbmQgUSBpbiBuYXRpdmUgbW9kZSB1bmxlc3MgdGhlIGNvbXBpbGVyIGRvZXM7CiAgICBpbiBzdGQgbW9kZSwgdGhleSdyZSA4IGJ5dGVzIG9uIGFsbCBwbGF0Zm9ybXMuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBQWV9MT05HX0xPTkcgeDsgfSBzX2xvbmdfbG9uZzsKLSNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfQzk5X0JPT0wKLSNkZWZpbmUgQk9PTF9UWVBFIF9Cb29sCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzX2Jvb2w7Ci0jZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzX2Jvb2wpIC0gc2l6ZW9mKEJPT0xfVFlQRSkpCi0jZWxzZQotI2RlZmluZSBCT09MX1RZUEUgY2hhcgotI2RlZmluZSBCT09MX0FMSUdOIDAKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGxvbmcgbG9uZyB4OyB9IHNfbG9uZ19sb25nOworI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YobG9uZyBsb25nKSkKIAogI2lmZGVmIF9fcG93ZXJjCiAjcHJhZ21hIG9wdGlvbnMgYWxpZ249cmVzZXQKQEAgLTE2NCwxNCArMTU1LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBQWV9MT05HX0xPTkcgKnApCitnZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIGxvbmcgbG9uZyAqcCkKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKIAogICAgIHYgPSBnZXRfcHlsb25nKHYpOwogICAgIGlmICh2ID09IE5VTEwpCkBAIC0xNzksNyArMTY4LDcgQEAKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09IChQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09IChsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0xOTIsOSArMTgxLDkgQEAKIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgdW5zaWduZWQgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnApCitnZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAKICAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjAyLDcgKzE5MSw3IEBACiAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CiAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0yMTIsOCArMjAxLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmCi0KIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCiAKIHN0YXRpYyBpbnQKQEAgLTI2Nyw2ICsyNTQsMzMgQEAKIC8qIEZsb2F0aW5nIHBvaW50IGhlbHBlcnMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDItYnl0ZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICAgaW50IGxlKSAgICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHg7CisKKyAgICB4ID0gX1B5RmxvYXRfVW5wYWNrMigodW5zaWduZWQgY2hhciAqKXAsIGxlKTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7Cit9CisKK3N0YXRpYyBpbnQKK3BhY2tfaGFsZmZsb2F0KGNoYXIgKnAsICAgICAgLyogc3RhcnQgb2YgMi1ieXRlIHN0cmluZyAqLworICAgICAgICAgICAgICAgUHlPYmplY3QgKnYsICAvKiB2YWx1ZSB0byBwYWNrICovCisgICAgICAgICAgICAgICBpbnQgbGUpICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQgYXJndW1lbnQgaXMgbm90IGEgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gX1B5RmxvYXRfUGFjazIoeCwgKHVuc2lnbmVkIGNoYXIgKilwLCBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiB1bnBhY2tfZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDQtYnl0ZSBzdHJpbmcgKi8KICAgICAgICAgIGludCBsZSkgICAgICAgICAgICAgLyogdHJ1ZSBmb3IgbGl0dGxlLWVuZGlhbiwgZmFsc2UgZm9yIGJpZy1lbmRpYW4gKi8KIHsKQEAgLTQzNiw0MCArNDUwLDQ2IEBACiAvKiBOYXRpdmUgbW9kZSBkb2Vzbid0IHN1cHBvcnQgcSBvciBRIHVubGVzcyB0aGUgcGxhdGZvcm0gQyBzdXBwb3J0cwogICAgbG9uZyBsb25nIChvciwgb24gV2luZG93cywgX19pbnQ2NCkuICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBudV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7CiB9CiAKLSNlbmRpZgotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfYm9vbChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgQk9PTF9UWVBFIHg7CisgICAgX0Jvb2wgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoeCAhPSAwKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QgKgorbnVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMSk7CisjZWxzZQorICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDApOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBudV9mbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZmxvYXQgeDsKQEAgLTY0MywxMiArNjYzLDEwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgaW50CiBucF9sb25nbG9uZyhjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfbG9uZ2xvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CkBAIC02NTgsMjAgKzY3NiwxOSBAQAogc3RhdGljIGludAogbnBfdWxvbmdsb25nKGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF91bG9uZ2xvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogCiBzdGF0aWMgaW50CiBucF9ib29sKGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgaW50IHk7Ci0gICAgQk9PTF9UWVBFIHg7CisgICAgX0Jvb2wgeDsKICAgICB5ID0gUHlPYmplY3RfSXNUcnVlKHYpOwogICAgIGlmICh5IDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjgxLDYgKzY5OCwxNiBAQAogfQogCiBzdGF0aWMgaW50CitucF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDEpOworI2Vsc2UKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMCk7CisjZW5kaWYKK30KKworc3RhdGljIGludAogbnBfZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBmbG9hdCB4ID0gKGZsb2F0KVB5RmxvYXRfQXNEb3VibGUodik7CkBAIC03MjMsNyArNzUwLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGZvcm1hdGRlZiBuYXRpdmVfdGFibGVbXSA9IHsKK3N0YXRpYyBjb25zdCBmb3JtYXRkZWYgbmF0aXZlX3RhYmxlW10gPSB7CiAgICAgeyd4JywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBOVUxMfSwKICAgICB7J2InLCAgICAgICBzaXplb2YoY2hhciksICAgMCwgICAgICAgICAgICAgIG51X2J5dGUsICAgICAgICBucF9ieXRlfSwKICAgICB7J0InLCAgICAgICBzaXplb2YoY2hhciksICAgMCwgICAgICAgICAgICAgIG51X3VieXRlLCAgICAgICBucF91Ynl0ZX0sCkBAIC03MzgsMTEgKzc2NSwxMCBAQAogICAgIHsnTCcsICAgICAgIHNpemVvZihsb25nKSwgICBMT05HX0FMSUdOLCAgICAgbnVfdWxvbmcsICAgICAgIG5wX3Vsb25nfSwKICAgICB7J24nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NzaXplX3QsICAgICBucF9zc2l6ZV90fSwKICAgICB7J04nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NpemVfdCwgICAgICBucF9zaXplX3R9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgeydxJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfbG9uZ2xvbmcsIG5wX2xvbmdsb25nfSwKLSAgICB7J1EnLCAgICAgICBzaXplb2YoUFlfTE9OR19MT05HKSwgTE9OR19MT05HX0FMSUdOLCBudV91bG9uZ2xvbmcsbnBfdWxvbmdsb25nfSwKLSNlbmRpZgotICAgIHsnPycsICAgICAgIHNpemVvZihCT09MX1RZUEUpLCAgICAgIEJPT0xfQUxJR04sICAgICBudV9ib29sLCAgICAgICAgbnBfYm9vbH0sCisgICAgeydxJywgICAgICAgc2l6ZW9mKGxvbmcgbG9uZyksIExPTkdfTE9OR19BTElHTiwgbnVfbG9uZ2xvbmcsIG5wX2xvbmdsb25nfSwKKyAgICB7J1EnLCAgICAgICBzaXplb2YobG9uZyBsb25nKSwgTE9OR19MT05HX0FMSUdOLCBudV91bG9uZ2xvbmcsbnBfdWxvbmdsb25nfSwKKyAgICB7Jz8nLCAgICAgICBzaXplb2YoX0Jvb2wpLCAgICAgIEJPT0xfQUxJR04sICAgICBudV9ib29sLCAgICAgICAgbnBfYm9vbH0sCisgICAgeydlJywgICAgICAgc2l6ZW9mKHNob3J0KSwgIFNIT1JUX0FMSUdOLCAgICBudV9oYWxmZmxvYXQsICAgbnBfaGFsZmZsb2F0fSwKICAgICB7J2YnLCAgICAgICBzaXplb2YoZmxvYXQpLCAgRkxPQVRfQUxJR04sICAgIG51X2Zsb2F0LCAgICAgICBucF9mbG9hdH0sCiAgICAgeydkJywgICAgICAgc2l6ZW9mKGRvdWJsZSksIERPVUJMRV9BTElHTiwgICBudV9kb3VibGUsICAgICAgbnBfZG91YmxlfSwKICAgICB7J1AnLCAgICAgICBzaXplb2Yodm9pZCAqKSwgVk9JRF9QX0FMSUdOLCAgIG51X3ZvaWRfcCwgICAgICBucF92b2lkX3B9LApAQCAtNzgzLDggKzgwOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHggPSAwOworICAgIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKQEAgLTc5MiwzNyArODE3LDMwIEBACiAgICAgfSB3aGlsZSAoLS1pID4gMCk7CiAgICAgLyogRXh0ZW5kIHRoZSBzaWduIGJpdC4gKi8KICAgICBpZiAoU0laRU9GX0xPTkdfTE9ORyA+IGYtPnNpemUpCi0gICAgICAgIHggfD0gLSh4ICYgKChQWV9MT05HX0xPTkcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CisgICAgICAgIHggfD0gLSh4ICYgKChsb25nIGxvbmcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDEgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1X3Vsb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewogICAgICAgICB4ID0gKHg8PDgpIHwgKmJ5dGVzKys7CiAgICAgfSB3aGlsZSAoLS1pID4gMCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDAgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC05MjIsNiArOTQwLDEyIEBACiB9CiAKIHN0YXRpYyBpbnQKK2JwX2hhbGZmbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAwKTsKK30KKworc3RhdGljIGludAogYnBfZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBkb3VibGUgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CkBAIC05NzIsNiArOTk2LDcgQEAKICAgICB7J3EnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2xvbmdsb25nLCAgICBicF9sb25nbG9uZ30sCiAgICAgeydRJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV91bG9uZ2xvbmcsICAgYnBfdWxvbmdsb25nfSwKICAgICB7Jz8nLCAgICAgICAxLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Jvb2wsICAgICAgICBicF9ib29sfSwKKyAgICB7J2UnLCAgICAgICAyLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2hhbGZmbG9hdCwgICBicF9oYWxmZmxvYXR9LAogICAgIHsnZicsICAgICAgIDQsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfZmxvYXQsICAgICAgIGJwX2Zsb2F0fSwKICAgICB7J2QnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2RvdWJsZSwgICAgICBicF9kb3VibGV9LAogICAgIHswfQpAQCAtMTAxMSw4ICsxMDM2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBsdV9sb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewpAQCAtMTAyMCwzNyArMTA0NCwzMCBAQAogICAgIH0gd2hpbGUgKGkgPiAwKTsKICAgICAvKiBFeHRlbmQgdGhlIHNpZ24gYml0LiAqLwogICAgIGlmIChTSVpFT0ZfTE9OR19MT05HID4gZi0+c2l6ZSkKLSAgICAgICAgeCB8PSAtKHggJiAoKFBZX0xPTkdfTE9ORykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKKyAgICAgICAgeCB8PSAtKHggJiAoKGxvbmcgbG9uZykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKICAgICBpZiAoeCA+PSBMT05HX01JTiAmJiB4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMSAgLyogc2lnbmVkICovKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbHVfdWxvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CiAgICAgICAgIHggPSAoeDw8OCkgfCBieXRlc1stLWldOwogICAgIH0gd2hpbGUgKGkgPiAwKTsKICAgICBpZiAoeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMCAgLyogc2lnbmVkICovKTsKLSNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gdW5wYWNrX2hhbGZmbG9hdChwLCAxKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExNDIsNiArMTE1OSwxMiBAQAogfQogCiBzdGF0aWMgaW50CitscF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMSk7Cit9CisKK3N0YXRpYyBpbnQKIGxwX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtMTE4Miw2ICsxMjA1LDcgQEAKICAgICB7J1EnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X3Vsb25nbG9uZywgICBscF91bG9uZ2xvbmd9LAogICAgIHsnPycsICAgICAgIDEsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfYm9vbCwgICAgICAgIGJwX2Jvb2x9LCAvKiBTdGQgcmVwIG5vdCBlbmRpYW4gZGVwLAogICAgICAgICBidXQgcG90ZW50aWFsbHkgZGlmZmVyZW50IGZyb20gbmF0aXZlIHJlcCAtLSByZXVzZSBieF9ib29sIGZ1bmNzLiAqLworICAgIHsnZScsICAgICAgIDIsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfaGFsZmZsb2F0LCAgIGxwX2hhbGZmbG9hdH0sCiAgICAgeydmJywgICAgICAgNCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV9mbG9hdCwgICAgICAgbHBfZmxvYXR9LAogICAgIHsnZCcsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfZG91YmxlLCAgICAgIGxwX2RvdWJsZX0sCiAgICAgezB9CkBAIC0xMTg5LDcgKzEyMTMsNyBAQAogCiAKIHN0YXRpYyBjb25zdCBmb3JtYXRkZWYgKgotd2hpY2h0YWJsZShjaGFyICoqcGZtdCkKK3doaWNodGFibGUoY29uc3QgY2hhciAqKnBmbXQpCiB7CiAgICAgY29uc3QgY2hhciAqZm10ID0gKCpwZm10KSsrOyAvKiBNYXkgYmUgYmFja2VkIG91dCBvZiBsYXRlciAqLwogICAgIHN3aXRjaCAoKmZtdCkgewpAQCAtMTI2OCw3ICsxMjkyLDcgQEAKIAogICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPnNfZm9ybWF0KTsKIAotICAgIGYgPSB3aGljaHRhYmxlKChjaGFyICoqKSZmbXQpOworICAgIGYgPSB3aGljaHRhYmxlKCZmbXQpOwogCiAgICAgcyA9IGZtdDsKICAgICBzaXplID0gMDsKQEAgLTE0NTYsNyArMTQ4MCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zX3VucGFja19pbnRlcm5hbChQeVN0cnVjdE9iamVjdCAqc29zZWxmLCBjaGFyICpzdGFydGZyb20pIHsKK3NfdW5wYWNrX2ludGVybmFsKFB5U3RydWN0T2JqZWN0ICpzb3NlbGYsIGNvbnN0IGNoYXIgKnN0YXJ0ZnJvbSkgewogICAgIGZvcm1hdGNvZGUgKmNvZGU7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlUdXBsZV9OZXcoc29zZWxmLT5zX2xlbik7CkBAIC0yMjM5LDcgKzIyNjMsNyBAQAogICB4OiBwYWQgYnl0ZSAobm8gZGF0YSk7IGM6Y2hhcjsgYjpzaWduZWQgYnl0ZTsgQjp1bnNpZ25lZCBieXRlO1xuXAogICA/OiBfQm9vbCAocmVxdWlyZXMgQzk5OyBpZiBub3QgYXZhaWxhYmxlLCBjaGFyIGlzIHVzZWQgaW5zdGVhZClcblwKICAgaDpzaG9ydDsgSDp1bnNpZ25lZCBzaG9ydDsgaTppbnQ7IEk6dW5zaWduZWQgaW50O1xuXAotICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGUuXG5cCisgIGw6bG9uZzsgTDp1bnNpZ25lZCBsb25nOyBmOmZsb2F0OyBkOmRvdWJsZTsgZTpoYWxmLWZsb2F0LlxuXAogU3BlY2lhbCBjYXNlcyAocHJlY2VkaW5nIGRlY2ltYWwgY291bnQgaW5kaWNhdGVzIGxlbmd0aCk6XG5cCiAgIHM6c3RyaW5nIChhcnJheSBvZiBjaGFyKTsgcDogcGFzY2FsIHN0cmluZyAod2l0aCBjb3VudCBieXRlKS5cblwKIFNwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXApAQCAtMjI3OSw3ICsyMzAzLDcgQEAKIAogICAgIC8qIENoZWNrIGVuZGlhbiBhbmQgc3dhcCBpbiBmYXN0ZXIgZnVuY3Rpb25zICovCiAgICAgewotICAgICAgICBmb3JtYXRkZWYgKm5hdGl2ZSA9IG5hdGl2ZV90YWJsZTsKKyAgICAgICAgY29uc3QgZm9ybWF0ZGVmICpuYXRpdmUgPSBuYXRpdmVfdGFibGU7CiAgICAgICAgIGZvcm1hdGRlZiAqb3RoZXIsICpwdHI7CiAjaWYgUFlfTElUVExFX0VORElBTgogICAgICAgICBvdGhlciA9IGxpbGVuZGlhbl90YWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwppbmRleCA0M2RiOGE4Li4xM2QzY2NjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC0xMyw3ICsxMyw3IEBACiBQeU9iamVjdCAqY2FsY3NpemUgPSBOVUxMOwogCiAvKiBjYWNoZSBzaW1wbGUgZm9ybWF0IHN0cmluZyAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnNpbXBsZV9mbXQgPSAiQiI7CitzdGF0aWMgY29uc3QgY2hhciBzaW1wbGVfZm10W10gPSAiQiI7CiBQeU9iamVjdCAqc2ltcGxlX2Zvcm1hdCA9IE5VTEw7CiAjZGVmaW5lIFNJTVBMRV9GT1JNQVQoZm10KSAoZm10ID09IE5VTEwgfHwgc3RyY21wKGZtdCwgIkIiKSA9PSAwKQogI2RlZmluZSBGSVhfRk9STUFUKGZtdCkgKGZtdCA9PSBOVUxMID8gIkIiIDogZm10KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggNGVjZDQ4YS4uNzQ0MjJhMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC02MCw5ICs2MCw3IEBACiAgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HLCBsb25nKTsKICAgICBDSEVDS19TSVpFT0YoU0laRU9GX1ZPSURfUCwgdm9pZCopOwogICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfVElNRV9ULCB0aW1lX3QpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HX0xPTkcsIFBZX0xPTkdfTE9ORyk7Ci0jZW5kaWYKKyAgICBDSEVDS19TSVpFT0YoU0laRU9GX0xPTkdfTE9ORywgbG9uZyBsb25nKTsKIAogI3VuZGVmIENIRUNLX1NJWkVPRgogCkBAIC0xMDAsMjIgKzk4LDE0IEBACiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfVUNTMSwgMCk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfVUNTMiwgMCk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfVUNTNCwgMCk7Ci0jaWZkZWYgSEFWRV9JTlQzMl9UCi0gICAgQ0hFQ0tfU0laRU9GKFBZX0lOVDMyX1QsIDQpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX0lOVDMyX1QsIDEpOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9VSU5UMzJfVAotICAgIENIRUNLX1NJWkVPRihQWV9VSU5UMzJfVCwgNCk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUFlfVUlOVDMyX1QsIDApOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9JTlQ2NF9UCi0gICAgQ0hFQ0tfU0laRU9GKFBZX0lOVDY0X1QsIDgpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX0lOVDY0X1QsIDEpOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9VSU5UNjRfVAotICAgIENIRUNLX1NJWkVPRihQWV9VSU5UNjRfVCwgOCk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUFlfVUlOVDY0X1QsIDApOwotI2VuZGlmCisgICAgQ0hFQ0tfU0laRU9GKGludDMyX3QsIDQpOworICAgIENIRUNLX1NJR05ORVNTKGludDMyX3QsIDEpOworICAgIENIRUNLX1NJWkVPRih1aW50MzJfdCwgNCk7CisgICAgQ0hFQ0tfU0lHTk5FU1ModWludDMyX3QsIDApOworICAgIENIRUNLX1NJWkVPRihpbnQ2NF90LCA4KTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnQ2NF90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludDY0X3QsIDgpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnQ2NF90LCAwKTsKIAogICAgIC8qIHBvaW50ZXIvc2l6ZSB0eXBlcyAqLwogICAgIENIRUNLX1NJWkVPRihzaXplX3QsIHNpemVvZih2b2lkICopKTsKQEAgLTEyMywxMCArMTEzLDEwIEBACiAgICAgQ0hFQ0tfU0laRU9GKFB5X3NzaXplX3QsIHNpemVvZih2b2lkICopKTsKICAgICBDSEVDS19TSUdOTkVTUyhQeV9zc2l6ZV90LCAxKTsKIAotICAgIENIRUNLX1NJWkVPRihQeV91aW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKLSAgICBDSEVDS19TSUdOTkVTUyhQeV91aW50cHRyX3QsIDApOwotICAgIENIRUNLX1NJWkVPRihQeV9pbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOwotICAgIENIRUNLX1NJR05ORVNTKFB5X2ludHB0cl90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7CisgICAgQ0hFQ0tfU0lHTk5FU1ModWludHB0cl90LCAwKTsKKyAgICBDSEVDS19TSVpFT0YoaW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnRwdHJfdCwgMSk7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0zNTcsMTIgKzM0NywxMiBAQAogfQogCiAKLS8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZCAoI2lmZGVmIEhBVkVfTE9OR19MT05HKQorLyogVGVzdHMgb2YgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmcoKSwgYW5kCiAgICBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZ0xvbmcoKS4KIAogICAgTm90ZSB0aGF0IHRoZSBtZWF0IG9mIHRoZSB0ZXN0IGlzIGNvbnRhaW5lZCBpbiB0ZXN0Y2FwaV9sb25nLmguCiAgICBUaGlzIGlzIHJldm9sdGluZywgYnV0IGRlbGljYXRlIGNvZGUgZHVwbGljYXRpb24gaXMgd29yc2U6ICAiYWxtb3N0Ci0gICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IFBZX0xPTkdfTE9ORywgYnV0IHRoZSB1YmlxdWl0b3VzCisgICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IGxvbmcgbG9uZywgYnV0IHRoZSB1YmlxdWl0b3VzCiAgICBkZXBlbmRlbmNlIG9uIHR5cGUgbmFtZXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB1c2UgYSBwYXJhbWV0ZXJpemVkCiAgICBmdW5jdGlvbi4gIEEgZ2lhbnQgbWFjcm8gd291bGQgYmUgZXZlbiB3b3JzZSB0aGFuIHRoaXMuICBBIEMrKyB0ZW1wbGF0ZQogICAgd291bGQgYmUgcGVyZmVjdC4KQEAgLTQwMiw4ICszOTIsNiBAQAogI3VuZGVmIEZfVV9UT19QWQogI3VuZGVmIEZfUFlfVE9fVQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIHJhaXNlX3Rlc3RfbG9uZ2xvbmdfZXJyb3IoY29uc3QgY2hhciogbXNnKQogewpAQCAtNDExLDcgKzM5OSw3IEBACiB9CiAKICNkZWZpbmUgVEVTVE5BTUUgICAgICAgIHRlc3RfbG9uZ2xvbmdfYXBpX2lubmVyCi0jZGVmaW5lIFRZUEVOQU1FICAgICAgICBQWV9MT05HX0xPTkcKKyNkZWZpbmUgVFlQRU5BTUUgICAgICAgIGxvbmcgbG9uZwogI2RlZmluZSBGX1NfVE9fUFkgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZwogI2RlZmluZSBGX1BZX1RPX1MgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcKICNkZWZpbmUgRl9VX1RPX1BZICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwpAQCAtNTk4LDcgKzU4Niw3IEBACiB9CiAKIC8qIFRlc3QgdGhlIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cgQVBJLiBHZW5lcmFsIGNvbnZlcnNpb24gdG8KLSAgIFBZX0xPTkdfTE9ORyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKKyAgIGxvbmcgbG9uZyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKICAgIGNvbmNlbnRyYXRlIG9uIHByb3BlciBoYW5kbGluZyBvZiBvdmVyZmxvdy4KICovCiAKQEAgLTYwNiw3ICs1OTQsNyBAQAogdGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpudW0sICpvbmUsICp0ZW1wOwotICAgIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICBsb25nIGxvbmcgdmFsdWU7CiAgICAgaW50IG92ZXJmbG93OwogCiAgICAgLyogVGVzdCB0aGF0IG92ZXJmbG93IGlzIHNldCBwcm9wZXJseSBmb3IgYSBsYXJnZSB2YWx1ZS4gKi8KQEAgLTgyNCw3ICs4MTIsNyBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0vKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgUFlfTE9OR19MT05HCisvKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgbG9uZyBsb25nCiAgICBmb3IgYm90aCBsb25nIGFuZCBpbnQgYXJndW1lbnRzLiAgVGhlIHRlc3QgbWF5IGxlYWsgYSBsaXR0bGUgbWVtb3J5IGlmCiAgICBpdCBmYWlscy4KICovCkBAIC04MzIsNyArODIwLDcgQEAKIHRlc3RfTF9jb2RlKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0dXBsZSwgKm51bTsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogCiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldygxKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTg3MCw4ICs4NTgsNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0jZW5kaWYgIC8qIGlmZGVmIEhBVkVfTE9OR19MT05HICovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiByZXR1cm5fbm9uZSh2b2lkICp1bnVzZWQpCiB7CkBAIC0xMDAxLDcgKzk4Nyw3IEBACiBnZXRhcmdzX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10PSIoaWkpaXwoaShpaSkpKGlpaSlpIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmbXRbXSA9ICIoaWkpaXwoaShpaSkpKGlpaSlpIjsKICAgICBpbnQgaW50X2FyZ3NbMTBdPXstMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMX07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsIGZtdCwga2V5d29yZHMsCkBAIC0xMDI4LDYgKzEwMTQsMjEgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWlpIiwgcmVxdWlyZWQsIG9wdGlvbmFsLCBrZXl3b3JkX29ubHkpOwogfQogCisvKiB0ZXN0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBwb3NpdGlvbmFsLW9ubHkgYXJndW1lbnRzICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiIiwgIiIsICJrZXl3b3JkIiwgTlVMTH07CisgICAgaW50IHJlcXVpcmVkID0gLTE7CisgICAgaW50IG9wdGlvbmFsID0gLTE7CisgICAgaW50IGtleXdvcmQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIml8aWkiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVxdWlyZWQsICZvcHRpb25hbCwgJmtleXdvcmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWlpIiwgcmVxdWlyZWQsIG9wdGlvbmFsLCBrZXl3b3JkKTsKK30KKwogLyogRnVuY3Rpb25zIHRvIGNhbGwgUHlBcmdfUGFyc2VUdXBsZSB3aXRoIGludGVnZXIgZm9ybWF0IGNvZGVzLAogICAgYW5kIHJldHVybiB0aGUgcmVzdWx0LgogKi8KQEAgLTExMjEsMTEgKzExMjIsMTAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19MKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTCIsICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbHVlKTsKQEAgLTExMzQsMTIgKzExMzQsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX0soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWU7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJLIiwgJnZhbHVlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CiB9Ci0jZW5kaWYKIAogLyogVGhpcyBmdW5jdGlvbiBub3Qgb25seSB0ZXN0cyB0aGUgJ2snIGdldGFyZ3MgY29kZSwgYnV0IGFsc28gdGhlCiAgICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgYW5kIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSBmdW5jdGlvbnMuICovCkBAIC0xMTYxLDcgKzExNjAsNyBAQAogICAgIHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhudW0pOwogICAgIGlmICh2YWx1ZSAhPSBVTE9OR19NQVgpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAotICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CisgICAgICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CiAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCkBAIC0xMTgwLDcgKzExNzksNyBAQAogICAgIHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhudW0pOwogICAgIGlmICh2YWx1ZSAhPSAodW5zaWduZWQgbG9uZyktMHg0MikKICAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2tfY29kZSIsCi0gICAgICAgICJQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgcmV0dXJuZWQgd3JvbmcgdmFsdWUgZm9yIGxvbmcgMHhGRkYuLi5GRkYiKTsKKyAgICAgICAgICAgICJQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgcmV0dXJuZWQgd3JvbmcgdmFsdWUgZm9yIGxvbmcgMHhGRkYuLi5GRkYiKTsKIAogICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIDAsIG51bSk7CiAKQEAgLTIxOTMsNyArMjE5Miw3IEBACiAgICAgUHlPYmplY3QgKnJjOwogICAgIGludCBzdWNjZXNzOwogICAgIFB5R0lMU3RhdGVfU1RBVEUgcyA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7Ci0gICAgcmMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopY2FsbGFibGUsICIiKTsKKyAgICByYyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoKFB5T2JqZWN0ICopY2FsbGFibGUpOwogICAgIHN1Y2Nlc3MgPSAocmMgIT0gTlVMTCk7CiAgICAgUHlfWERFQ1JFRihyYyk7CiAgICAgUHlHSUxTdGF0ZV9SZWxlYXNlKHMpOwpAQCAtMjMyNywxMCArMjMyNiw4IEBACiAgICAgQ0hFQ0tfMV9GT1JNQVQoIiV6dSIsIHNpemVfdCk7CiAKICAgICAvKiAiJWxsZCIgYW5kICIlbGx1IiBzdXBwb3J0IGFkZGVkIGluIFB5dGhvbiAyLjcuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBDSEVDS18xX0ZPUk1BVCgiJWxsdSIsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7Ci0gICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbGQiLCBQWV9MT05HX0xPTkcpOwotI2VuZGlmCisgICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbHUiLCB1bnNpZ25lZCBsb25nIGxvbmcpOworICAgIENIRUNLXzFfRk9STUFUKCIlbGxkIiwgbG9uZyBsb25nKTsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogCkBAIC0yMzc1LDcgKzIzNzIsNyBAQAogICAgIHJlc3VsdCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShTVFIsIE5VTEwsIE5VTEwpOyAgICAgICAgICAgIFwKICAgICBpZiAocmVzdWx0ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAocmVzdWx0ICE9IChkb3VibGUpZXhwZWN0ZWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1zZyA9ICJjb252ZXJzaW9uIG9mICIgU1RSICIgdG8gZmxvYXQgZmFpbGVkIjsgICAgICAgICAgXAogICAgICAgICBnb3RvIGZhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CkBAIC0yOTY3LDcgKzI5NjQsOSBAQAogc3RhdGljIGludAogY2hlY2tfdGltZV9yb3VuZGluZyhpbnQgcm91bmQpCiB7Ci0gICAgaWYgKHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfRkxPT1IgJiYgcm91bmQgIT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgaWYgKHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfRkxPT1IKKyAgICAgICAgJiYgcm91bmQgIT0gX1B5VGltZV9ST1VORF9DRUlMSU5HCisgICAgICAgICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCByb3VuZGluZyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzQ2Miw3ICszNDYxLDcgQEAKICAgICAvKiBBbGxvY2F0ZSBhIFB5dGhvbiB0aHJlYWQgc3RhdGUgZm9yIHRoaXMgdGhyZWFkICovCiAgICAgc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogCi0gICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHRlc3RfY190aHJlYWQtPmNhbGxiYWNrLCAiIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxOb0FyZyh0ZXN0X2NfdGhyZWFkLT5jYWxsYmFjayk7CiAgICAgUHlfQ0xFQVIodGVzdF9jX3RocmVhZC0+Y2FsbGJhY2spOwogCiAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CkBAIC0zNzUyLDcgKzM3NTEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfcHl0aW1lX2Fzc2Vjb25kc2RvdWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBfUHlUaW1lX3QgdHM7CiAgICAgZG91YmxlIGQ7CiAKQEAgLTM3NjYsNyArMzc2NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNUaW1ldmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIGludCByb3VuZDsKICAgICBfUHlUaW1lX3QgdDsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKQEAgLTM3ODAsNyArMzc3OSw3IEBACiAgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHQsICZ0diwgcm91bmQpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzZWNvbmRzID0gUHlMb25nX0Zyb21Mb25nKChQWV9MT05HX0xPTkcpdHYudHZfc2VjKTsKKyAgICBzZWNvbmRzID0gUHlMb25nX0Zyb21Mb25nKChsb25nIGxvbmcpdHYudHZfc2VjKTsKICAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBzZWNvbmRzLCB0di50dl91c2VjKTsKQEAgLTM3OTAsNyArMzc4OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNUaW1lc3BlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBfUHlUaW1lX3QgdDsKICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CiAKQEAgLTM4MDYsNyArMzgwNSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgaW50IHJvdW5kOwogICAgIF9QeVRpbWVfdCB0LCBtczsKIApAQCAtMzgyNCw3ICszODIzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBpbnQgcm91bmQ7CiAgICAgX1B5VGltZV90IHQsIG1zOwogCkBAIC0zODQ4LDYgKzM4NDcsMTUyIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aCAtIDEpOwogfQogCitzdGF0aWMgUHlPYmplY3QqCitweW1lbV9idWZmZXJfb3ZlcmZsb3coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgYnVmZmVyIG92ZXJmbG93IHRvIGNoZWNrIHRoYXQgUHlNZW1fRnJlZSgpIGRldGVjdHMKKyAgICAgICB0aGUgb3ZlcmZsb3cgd2hlbiBkZWJ1ZyBob29rcyBhcmUgaW5zdGFsbGVkLiAqLworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxNik7CisgICAgYnVmZmVyWzE2XSA9ICd4JzsKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHltZW1fYXBpX21pc3VzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBtaXN1c2FnZSBvZiBQeXRob24gYWxsb2NhdG9yczoKKyAgICAgICBhbGxvY29jYXRlIHdpdGggUHlNZW0gYnV0IHJlbGVhc2Ugd2l0aCBQeU1lbV9SYXcuICovCisgICAgYnVmZmVyID0gUHlNZW1fTWFsbG9jKDE2KTsKKyAgICBQeU1lbV9SYXdGcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZyB0byB0ZXN0IGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yczoKKyAgICAgICBjYWxsIFB5TWVtX01hbGxvYygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCitweW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgYnVnIHRvIHRlc3QgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzOgorICAgICAgIGNhbGwgUHlPYmplY3RfTWFsbG9jKCkgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgYnVmZmVyID0gUHlPYmplY3RfTWFsbG9jKDEwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlPYmplY3RfRnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY190cmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGRvbWFpbjsKKyAgICBQeU9iamVjdCAqcHRyX29iajsKKyAgICB2b2lkICpwdHI7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCByZWxlYXNlX2dpbCA9IDA7CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU9ufGkiLCAmZG9tYWluLCAmcHRyX29iaiwgJnNpemUsICZyZWxlYXNlX2dpbCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHJlbGVhc2VfZ2lsKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVHJhY2soZG9tYWluLCAodWludHB0cl90KXB0ciwgc2l6ZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXMgPSBfUHlUcmFjZU1hbGxvY19UcmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyLCBzaXplKTsKKyAgICB9CisKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiX1B5VHJhY2VNYWxsb2NfVHJhY2sgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY191bnRyYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgZG9tYWluOworICAgIFB5T2JqZWN0ICpwdHJfb2JqOworICAgIHZvaWQgKnB0cjsKKyAgICBpbnQgcmVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJTyIsICZkb21haW4sICZwdHJfb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcHRyID0gUHlMb25nX0FzVm9pZFB0cihwdHJfb2JqKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXMgPSBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIpOworICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJfUHlUcmFjZU1hbGxvY19UcmFjayBlcnJvciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBkb21haW47CisgICAgUHlPYmplY3QgKnB0cl9vYmo7CisgICAgdm9pZCAqcHRyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJTyIsICZkb21haW4sICZwdHJfb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcHRyID0gUHlMb25nX0FzVm9pZFB0cihwdHJfb2JqKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGljdF9nZXRfdmVyc2lvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlEaWN0T2JqZWN0ICpkaWN0OworICAgIHVpbnQ2NF90IHZlcnNpb247CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RGljdF9UeXBlLCAmZGljdCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmVyc2lvbiA9IGRpY3QtPm1hX3ZlcnNpb25fdGFnOworCisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih1bnNpZ25lZCBQWV9MT05HX0xPTkcpID49IHNpemVvZih2ZXJzaW9uKSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgUFlfTE9OR19MT05HKXZlcnNpb24pOworfQorCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUZXN0TWV0aG9kc1tdID0gewogICAgIHsicmFpc2VfZXhjZXB0aW9uIiwgICAgICAgICByYWlzZV9leGNlcHRpb24sICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMzg5Myw2ICs0MDM4LDkgQEAKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3Nfa2V5d29yZF9vbmx5IiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZF9vbmx5LAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAorICAgIHsiZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzIiwKKyAgICAgIChQeUNGdW5jdGlvbilnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMsCisgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRhcmdzX2IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfQiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2giLCAgICAgICAgICAgICAgIGdldGFyZ3NfaCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0zOTAzLDE0ICs0MDUxLDEyIEBACiAgICAgeyJnZXRhcmdzX2wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfbCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX24iLCAgICAgICAgICAgICAgIGdldGFyZ3NfbiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3AiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7ImdldGFyZ3NfTCIsICAgICAgICAgICAgICAgZ2V0YXJnc19MLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfSyIsICAgICAgICAgICAgICAgZ2V0YXJnc19LLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlc3RfbG9uZ2xvbmdfYXBpIiwgICAgICAgdGVzdF9sb25nbG9uZ19hcGksICAgICAgICAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93IiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdywgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9MX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9MX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCi0jZW5kaWYKICAgICB7ImdldGFyZ3NfZiIsICAgICAgICAgICAgICAgZ2V0YXJnc19mLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfZCIsICAgICAgICAgICAgICAgZ2V0YXJnc19kLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfRCIsICAgICAgICAgICAgICAgZ2V0YXJnc19ELCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTQwNDEsNiArNDE4NywxNCBAQAogICAgIHsiUHlUaW1lX0FzTWlsbGlzZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJQeVRpbWVfQXNNaWNyb3NlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldF9yZWN1cnNpb25fZGVwdGgiLCBnZXRfcmVjdXJzaW9uX2RlcHRoLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9idWZmZXJfb3ZlcmZsb3ciLCBweW1lbV9idWZmZXJfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5bWVtX2FwaV9taXN1c2UiLCBweW1lbV9hcGlfbWlzdXNlLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwiLCBweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwsIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCIsIHB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCwgTUVUSF9OT0FSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfdHJhY2siLCB0cmFjZW1hbGxvY190cmFjaywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX3VudHJhY2siLCB0cmFjZW1hbGxvY191bnRyYWNrLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayIsIHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2ssIE1FVEhfVkFSQVJHU30sCisgICAgeyJkaWN0X2dldF92ZXJzaW9uIiwgZGljdF9nZXRfdmVyc2lvbiwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQwNjAsMTAgKzQyMTQsOCBAQAogICAgIGZsb2F0IGZsb2F0X21lbWJlcjsKICAgICBkb3VibGUgZG91YmxlX21lbWJlcjsKICAgICBjaGFyIGlucGxhY2VfbWVtYmVyWzZdOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIGxvbmdsb25nX21lbWJlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdWxvbmdsb25nX21lbWJlcjsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyBsb25nbG9uZ19tZW1iZXI7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHVsb25nbG9uZ19tZW1iZXI7CiB9IGFsbF9zdHJ1Y3RtZW1iZXJzOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC00MDg1LDEwICs0MjM3LDggQEAKICAgICB7IlRfRkxPQVQiLCBUX0ZMT0FULCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyKSwgMCwgTlVMTH0sCiAgICAgeyJUX0RPVUJMRSIsIFRfRE9VQkxFLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZG91YmxlX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9TVFJJTkdfSU5QTEFDRSIsIFRfU1RSSU5HX0lOUExBQ0UsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5pbnBsYWNlX21lbWJlciksIDAsIE5VTEx9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeyJUX0xPTkdMT05HIiwgVF9MT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmxvbmdsb25nX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9VTE9OR0xPTkciLCBUX1VMT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLnVsb25nbG9uZ19tZW1iZXIpLCAwLCBOVUxMfSwKLSNlbmRpZgogICAgIHtOVUxMfQogfTsKIApAQCAtNDEwMCwxNSArNDI1MCw5IEBACiAgICAgICAgICJUX0JPT0wiLCAiVF9CWVRFIiwgIlRfVUJZVEUiLCAiVF9TSE9SVCIsICJUX1VTSE9SVCIsCiAgICAgICAgICJUX0lOVCIsICJUX1VJTlQiLCAiVF9MT05HIiwgIlRfVUxPTkciLCAiVF9QWVNTSVpFVCIsCiAgICAgICAgICJUX0ZMT0FUIiwgIlRfRE9VQkxFIiwgIlRfU1RSSU5HX0lOUExBQ0UiLAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICJUX0xPTkdMT05HIiwgIlRfVUxPTkdMT05HIiwKLSNlbmRpZgogICAgICAgICBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10ID0gInxiYkJoSGlJbGtuZmRzIyIKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAiTEsiCi0jZW5kaWYKLSAgICAgICAgOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gInxiYkJoSGlJbGtuZmRzI0xLIjsKICAgICB0ZXN0X3N0cnVjdG1lbWJlcnMgKm9iOwogICAgIGNvbnN0IGNoYXIgKnMgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RyaW5nX2xlbiA9IDA7CkBAIC00MTMwLDEwICs0Mjc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy5kb3VibGVfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzLCAmc3RyaW5nX2xlbgotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmb2ItPnN0cnVjdG1lbWJlcnMubG9uZ2xvbmdfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy51bG9uZ2xvbmdfbWVtYmVyCi0jZW5kaWYKICAgICAgICAgKSkgewogICAgICAgICBQeV9ERUNSRUYob2IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ0NTksNiArNDYwMSw3IEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJQWV9TU0laRV9UX01BWCIsIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01BWCkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUFlfU1NJWkVfVF9NSU4iLCBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NSU4pKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9QWUdDX0hFQUQiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKFB5R0NfSGVhZCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9USU1FX1QiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKHRpbWVfdCkpKTsKICAgICBQeV9JTkNSRUYoJlB5SW5zdGFuY2VNZXRob2RfVHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbnN0YW5jZW1ldGhvZCIsIChQeU9iamVjdCAqKSZQeUluc3RhbmNlTWV0aG9kX1R5cGUpOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwppbmRleCA0MWRhOTk3Li40ZGFhMzRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKQEAgLTYxLDcgKzYxLDcgQEAKIH0KIAogc3RhdGljIGludAotRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggMzE2ZjkzMi4uMjFmMDYzZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtNDYyLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0odiwgaSwgdyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHcpOwogICAgICAgICB9CiAgICAgfQogICAgIFRjbF9GcmVlKEZSRUVDQVNUIGFyZ3YpOwpAQCAtNDgwLDEzICs0ODAsMTMgQEAKICAgICAgICAgUHlfc3NpemVfdCBpLCBzaXplOwogICAgICAgICBQeU9iamVjdCAqZWxlbSwgKm5ld2VsZW0sICpyZXN1bHQ7CiAKLSAgICAgICAgc2l6ZSA9IFB5VHVwbGVfU2l6ZShhcmcpOworICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmcpOwogICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgICAgICAvKiBSZWN1cnNpdmVseSBpbnZva2UgU3BsaXRPYmogZm9yIGFsbCB0dXBsZSBpdGVtcy4KICAgICAgICAgICAgSWYgdGhpcyBkb2VzIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0LCBubyBhY3Rpb24gaXMKICAgICAgICAgICAgbmVlZGVkLiAqLwogICAgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dldEl0ZW0oYXJnLCBpKTsKKyAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7CiAgICAgICAgICAgICBuZXdlbGVtID0gU3BsaXRPYmooZWxlbSk7CiAgICAgICAgICAgICBpZiAoIW5ld2VsZW0pIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CkBAIC01MDIsMTIgKzUwMiwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBpOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR2V0SXRlbShhcmcsIGspOworICAgICAgICAgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmcsIGspOwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGssIGVsZW0pOworICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaywgZWxlbSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01MjksNyArNTI5LDcgQEAKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKICAgICAgICAgY29uc3QgY2hhciAqKmFyZ3Y7Ci0gICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FzU3RyaW5nKGFyZyk7CisgICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOwogCiAgICAgICAgIGlmIChUY2xfU3BsaXRMaXN0KChUY2xfSW50ZXJwICopTlVMTCwgbGlzdCwgJmFyZ2MsICZhcmd2KSAhPSBUQ0xfT0spIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNTU5LDcgKzU1OSw3IEBACiAgICAgICAgIH0KICAgICAgICAgVGNsX0ZyZWUoRlJFRUNBU1QgYXJndik7CiAgICAgICAgIGlmIChhcmdjID4gMSkKLSAgICAgICAgICAgIHJldHVybiBTcGxpdChQeUJ5dGVzX0FzU3RyaW5nKGFyZykpOworICAgICAgICAgICAgcmV0dXJuIFNwbGl0KFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZykpOwogICAgICAgICAvKiBGYWxsIHRocm91Z2gsIHJldHVybmluZyBhcmcuICovCiAgICAgfQogICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNzU4LDcgKzc1OCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRjbF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcodXRmOF9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHV0ZjhfcGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0xfR0xPQkFMX09OTFkpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1dGY4X3BhdGgpOwogICAgICAgICAgICAgfQpAQCAtODQxLDcgKzg0MSw3IEBACiAgICAgUHlfREVDUkVGKHRwKTsKIH0KIAotc3RhdGljIGNoYXIqCitzdGF0aWMgY29uc3QgY2hhciAqCiBQeVRjbE9iamVjdF9UY2xTdHJpbmcoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgcmV0dXJuIFRjbF9HZXRTdHJpbmcoKChQeVRjbE9iamVjdCopc2VsZiktPnZhbHVlKTsKQEAgLTk3Niw3ICs5NzYsNyBAQAogfTsKIAogCi0jaWYgUFlfU0laRV9NQVggPiBJTlRfTUFYCisjaWYgU0laRV9NQVggPiBJTlRfTUFYCiAjZGVmaW5lIENIRUNLX1NUUklOR19MRU5HVEgocykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzICE9IE5VTEwgJiYgc3RybGVuKHMpID49IElOVF9NQVgpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyIpOyBcCkBAIC0xMTgyLDEwICsxMTgyLDggQEAKIHsKICAgICAgICAgVGNsX1dpZGVJbnQgd2lkZVZhbHVlOwogICAgICAgICBpZiAoVGNsX0dldFdpZGVJbnRGcm9tT2JqKFRrYXBwX0ludGVycCh0a2FwcCksIHZhbHVlLCAmd2lkZVZhbHVlKSA9PSBUQ0xfT0spIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgaWYgKHNpemVvZih3aWRlVmFsdWUpIDw9IFNJWkVPRl9MT05HX0xPTkcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcod2lkZVZhbHVlKTsKLSNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgodW5zaWduZWQgY2hhciAqKSh2b2lkICopJndpZGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdpZGVWYWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xJVFRMRV9FTkRJQU4sCkBAIC0xMzA2LDcgKzEzMDQsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNTE3LDggKzE1MTUsOCBAQAogICAgIGludCBmbGFncyA9IFRDTF9FVkFMX0RJUkVDVCB8IFRDTF9FVkFMX0dMT0JBTDsKIAogICAgIC8qIElmIGFyZ3MgaXMgYSBzaW5nbGUgdHVwbGUsIHJlcGxhY2Ugd2l0aCBjb250ZW50cyBvZiB0dXBsZSAqLwotICAgIGlmICgxID09IFB5VHVwbGVfU2l6ZShhcmdzKSl7Ci0gICAgICAgIFB5T2JqZWN0KiBpdGVtID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApOworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwogICAgICAgICBpZiAoUHlUdXBsZV9DaGVjayhpdGVtKSkKICAgICAgICAgICAgIGFyZ3MgPSBpdGVtOwogICAgIH0KQEAgLTE3MjYsMTQgKzE3MjQsMTQgQEAKIHZhcm5hbWVfY29udmVydGVyKFB5T2JqZWN0ICppbiwgdm9pZCAqX291dCkKIHsKICAgICBjaGFyICpzOwotICAgIGNoYXIgKipvdXQgPSAoY2hhcioqKV9vdXQ7CisgICAgY29uc3QgY2hhciAqKm91dCA9IChjb25zdCBjaGFyKiopX291dDsKICAgICBpZiAoUHlCeXRlc19DaGVjayhpbikpIHsKLSAgICAgICAgaWYgKFB5Qnl0ZXNfU2l6ZShpbikgPiBJTlRfTUFYKSB7CisgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGluKSA+IElOVF9NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiYnl0ZXMgb2JqZWN0IGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBzID0gUHlCeXRlc19Bc1N0cmluZyhpbik7Ci0gICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClQeUJ5dGVzX1NpemUoaW4pKSB7CisgICAgICAgIHMgPSBQeUJ5dGVzX0FTX1NUUklORyhpbik7CisgICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKGluKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xODQ2LDcgKzE4NDQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFNldFZhcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBmbGFncykKIHsKLSAgICBjaGFyICpuYW1lMSwgKm5hbWUyOworICAgIGNvbnN0IGNoYXIgKm5hbWUxLCAqbmFtZTI7CiAgICAgUHlPYmplY3QgKm5ld1ZhbHVlOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIFRjbF9PYmogKm5ld3ZhbCwgKm9rOwpAQCAtMTkxNSw3ICsxOTEzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBHZXRWYXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZmxhZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTEsICpuYW1lMj1OVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWUxLCAqbmFtZTI9TlVMTDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBUY2xfT2JqICp0cmVzOwogCkBAIC0yMjc0LDEwICsyMjcyLDExIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7Ci0gICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CisgICAgICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTIzMDQsMTEgKzIzMDMsMTIgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhhcmd2W2ldKTsKLSAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbSh2LCBpLCBzKSkgeworICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIHYgPSBOVUxMOwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odiwgaSwgcyk7CiAgICAgfQogCiAgIGZpbmFsbHk6CkBAIC0yMzQ5LDEwICsyMzQ5LDExIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7Ci0gICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CisgICAgICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTI0MTAsMTAgKzI0MTEsMTEgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCAoYXJnYyAtIDEpOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhhcmd2W2kgKyAxXSk7Ci0gICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0oYXJnLCBpLCBzKSkgeworICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOwogICAgICAgICAgICAgcmV0dXJuIFB5dGhvbkNtZF9FcnJvcihpbnRlcnApOwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnLCBpLCBzKTsKICAgICB9CiAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgYXJnKTsKICAgICBQeV9ERUNSRUYoYXJnKTsKQEAgLTI0ODUsNyArMjQ4Nyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC5jcmVhdGVjb21tYW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQogICAgIG5hbWU6IHN0cgogICAgIGZ1bmM6IG9iamVjdAogICAgIC8KQEAgLTI0OTUsNyArMjQ5Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhMWM3OWE0ZWUyYWY0MTAgaW5wdXQ9MmJjMmMwNDZhMDkxNDIzNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhMWM3OWE0ZWUyYWY0MTAgaW5wdXQ9MjU1Nzg1Y2I3MGVkYzZhMF0qLwogewogICAgIFB5dGhvbkNtZF9DbGllbnREYXRhICpkYXRhOwogICAgIGludCBlcnI7CkBAIC0yNTYxLDcgKzI1NjIsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAuZGVsZXRlY29tbWFuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKICAgICBuYW1lOiBzdHIKICAgICAvCiAKQEAgLTI1NjksNyArMjU2OSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD1iNjMwNjQ2OGYxMGIyMTljXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD01M2U5OTUyZWFlMWY4NWY1XSovCiB7CiAgICAgaW50IGVycjsKIApAQCAtMjc2MiwxMyArMjc2MiwxMSBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGt0aW1lcnRva2VuLmRlbGV0ZXRpbWVyaGFuZGxlcgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa3R0T2JqZWN0ICoiKQotCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTI1YmE1ZGQ1OTRlNTIwODRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTQwYmQwNzBmZjg1ZjVjZjNdKi8KIHsKICAgICBUa3R0T2JqZWN0ICp2ID0gc2VsZjsKICAgICBQeU9iamVjdCAqZnVuYyA9IHYtPmZ1bmM7CkBAIC0yODk0LDcgKzI4OTIsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAubWFpbmxvb3AKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCiAgICAgdGhyZXNob2xkOiBpbnQgPSAwCiAgICAgLwogCkBAIC0yOTAyLDcgKzI4OTksNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgaW50IHRocmVzaG9sZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmE4ZWFiYmU1Nzg0MWIwIGlucHV0PWFkNTdjOWMxZGQyYjk0NzBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmE4ZWFiYmU1Nzg0MWIwIGlucHV0PTAzNmJjZGNmMDNkNWVjYTBdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CkBAIC0zMDcyLDEzICszMDY5LDExIEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC53aWxsZGlzcGF0Y2gKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCi0KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlM2Y0NmQyNDQ2NDIxNTUgaW5wdXQ9MjYzMDY5OTc2NzgwODk3MF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlM2Y0NmQyNDQ2NDIxNTUgaW5wdXQ9ZDg4ZjU5NzA4NDNkNmRhYl0qLwogewogICAgIHNlbGYtPmRpc3BhdGNoaW5nID0gMTsKIApAQCAtMzYyOSwxNCArMzYyNCwxNCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQVNfU1RSSU5HKGNleGUpKTsKIAogICAgICAgICAgICAgaWYgKHNldF92YXIpIHsKICAgICAgICAgICAgICAgICBTZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhMIlRDTF9MSUJSQVJZIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh3Y3NfcGF0aCk7CiAgICAgICAgICAgICB9CiAjZWxzZQotICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQVNfU1RSSU5HKGNleGUpKTsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihjZXhlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMgYi9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCmluZGV4IDY1YmY3YTMuLmVjOGJkOTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwpAQCAtMzksNyArMzksMTEgQEAKICAgICAvKiBsaW1pdCBvZiB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiBhIHRyYWNlYmFjaywgMSBieSBkZWZhdWx0LgogICAgICAgIFZhcmlhYmxlIHByb3RlY3RlZCBieSB0aGUgR0lMLiAqLwogICAgIGludCBtYXhfbmZyYW1lOwotfSB0cmFjZW1hbGxvY19jb25maWcgPSB7VFJBQ0VNQUxMT0NfTk9UX0lOSVRJQUxJWkVELCAwLCAxfTsKKworICAgIC8qIHVzZSBkb21haW4gaW4gdHJhY2Uga2V5PworICAgICAgIFZhcmlhYmxlIHByb3RlY3RlZCBieSB0aGUgR0lMLiAqLworICAgIGludCB1c2VfZG9tYWluOworfSB0cmFjZW1hbGxvY19jb25maWcgPSB7VFJBQ0VNQUxMT0NfTk9UX0lOSVRJQUxJWkVELCAwLCAxLCAwfTsKIAogI2lmIGRlZmluZWQoVFJBQ0VfUkFXX01BTExPQykgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKIC8qIFRoaXMgbG9jayBpcyBuZWVkZWQgYmVjYXVzZSB0cmFjZW1hbGxvY19mcmVlKCkgaXMgY2FsbGVkIHdpdGhvdXQKQEAgLTU0LDEwICs1OCwyMSBAQAogIyAgZGVmaW5lIFRBQkxFU19VTkxPQ0soKQogI2VuZGlmCiAKKworI2RlZmluZSBERUZBVUxUX0RPTUFJTiAwCisKKy8qIFBhY2sgdGhlIGZyYW1lX3Qgc3RydWN0dXJlIHRvIHJlZHVjZSB0aGUgbWVtb3J5IGZvb3RwcmludC4gKi8KK3R5cGVkZWYgc3RydWN0CisjaWZkZWYgX19HTlVDX18KK19fYXR0cmlidXRlX18oKHBhY2tlZCkpCisjZW5kaWYKK3sKKyAgICB1aW50cHRyX3QgcHRyOworICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbjsKK30gcG9pbnRlcl90OworCiAvKiBQYWNrIHRoZSBmcmFtZV90IHN0cnVjdHVyZSB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQgb24gNjQtYml0Ci0gICBhcmNoaXRlY3R1cmVzOiAxMiBieXRlcyBpbnN0ZWFkIG9mIDE2LiBUaGlzIG9wdGltaXphdGlvbiBtaWdodCBwcm9kdWNlCi0gICBTSUdCVVMgb24gYXJjaGl0ZWN0dXJlcyBub3Qgc3VwcG9ydGluZyB1bmFsaWduZWQgbWVtb3J5IGFjY2Vzc2VzICg2NC1iaXQKLSAgIE1JUFMgQ1BVPyk6IG9uIHN1Y2ggYXJjaGl0ZWN0dXJlLCB0aGUgc3RydWN0dXJlIG11c3Qgbm90IGJlIHBhY2tlZC4gKi8KKyAgIGFyY2hpdGVjdHVyZXM6IDEyIGJ5dGVzIGluc3RlYWQgb2YgMTYuICovCiB0eXBlZGVmIHN0cnVjdAogI2lmZGVmIF9fR05VQ19fCiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQpAQCAtNjUsMTAgKzgwLDEzIEBACiBfZGVjbHNwZWMoYWxpZ24oNCkpCiAjZW5kaWYKIHsKKyAgICAvKiBmaWxlbmFtZSBjYW5ub3QgYmUgTlVMTDogIjx1bmtub3duPiIgaXMgdXNlZCBpZiB0aGUgUHl0aG9uIGZyYW1lCisgICAgICAgZmlsZW5hbWUgaXMgTlVMTCAqLwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICB1bnNpZ25lZCBpbnQgbGluZW5vOwogfSBmcmFtZV90OwogCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV91aGFzaF90IGhhc2g7CiAgICAgaW50IG5mcmFtZTsKQEAgLTgxLDYgKzk5LDcgQEAKICNkZWZpbmUgTUFYX05GUkFNRSBcCiAgICAgICAgICgoSU5UX01BWCAtIChpbnQpc2l6ZW9mKHRyYWNlYmFja190KSkgLyAoaW50KXNpemVvZihmcmFtZV90KSArIDEpCiAKKwogc3RhdGljIFB5T2JqZWN0ICp1bmtub3duX2ZpbGVuYW1lID0gTlVMTDsKIHN0YXRpYyB0cmFjZWJhY2tfdCB0cmFjZW1hbGxvY19lbXB0eV90cmFjZWJhY2s7CiAKQEAgLTkzLDYgKzExMiw3IEBACiAgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKIH0gdHJhY2VfdDsKIAorCiAvKiBTaXplIGluIGJ5dGVzIG9mIGN1cnJlbnRseSB0cmFjZWQgbWVtb3J5LgogICAgUHJvdGVjdGVkIGJ5IFRBQkxFU19MT0NLKCkuICovCiBzdGF0aWMgc2l6ZV90IHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPSAwOwpAQCAtMTE5LDYgKzEzOSw3IEBACiAgICBQcm90ZWN0ZWQgYnkgVEFCTEVTX0xPQ0soKS4gKi8KIHN0YXRpYyBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlbWFsbG9jX3RyYWNlcyA9IE5VTEw7CiAKKwogI2lmZGVmIFRSQUNFX0RFQlVHCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCkBAIC0xMzMsNiArMTU0LDcgQEAKIH0KICNlbmRpZgogCisKICNpZiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAmJiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpCiAjZGVmaW5lIFJFRU5UUkFOVF9USFJFQURMT0NBTAogCkBAIC0xNDMsNyArMTY1LDcgQEAKICMgIGVycm9yICJuZWVkIG5hdGl2ZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSIKICNlbmRpZgogCi1zdGF0aWMgaW50IHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXk7CitzdGF0aWMgaW50IHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkgPSAtMTsKIAogLyogQW55IG5vbi1OVUxMIHBvaW50ZXIgY2FuIGJlIHVzZWQgKi8KICNkZWZpbmUgUkVFTlRSQU5UIFB5X1RydWUKQEAgLTE1MSw3ICsxNzMsMTAgQEAKIHN0YXRpYyBpbnQKIGdldF9yZWVudHJhbnQodm9pZCkKIHsKLSAgICB2b2lkICpwdHIgPSBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpOworICAgIHZvaWQgKnB0cjsKKworICAgIGFzc2VydCh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ICE9IC0xKTsKKyAgICBwdHIgPSBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpOwogICAgIGlmIChwdHIgIT0gTlVMTCkgewogICAgICAgICBhc3NlcnQocHRyID09IFJFRU5UUkFOVCk7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMTY0LDEyICsxODksMTQgQEAKIHNldF9yZWVudHJhbnQoaW50IHJlZW50cmFudCkKIHsKICAgICBhc3NlcnQocmVlbnRyYW50ID09IDAgfHwgcmVlbnRyYW50ID09IDEpOworICAgIGFzc2VydCh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ICE9IC0xKTsKKwogICAgIGlmIChyZWVudHJhbnQpIHsKLSAgICAgICAgYXNzZXJ0KFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSkgPT0gTlVMTCk7CisgICAgICAgIGFzc2VydCghZ2V0X3JlZW50cmFudCgpKTsKICAgICAgICAgUHlUaHJlYWRfc2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5LCBSRUVOVFJBTlQpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSkgPT0gUkVFTlRSQU5UKTsKKyAgICAgICAgYXNzZXJ0KGdldF9yZWVudHJhbnQoKSk7CiAgICAgICAgIFB5VGhyZWFkX3NldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSwgTlVMTCk7CiAgICAgfQogfQpAQCAtMTk0LDI3ICsyMjEsNzUgQEAKIH0KICNlbmRpZgogCi1zdGF0aWMgaW50Ci1oYXNodGFibGVfY29tcGFyZV91bmljb2RlKGNvbnN0IHZvaWQgKmtleSwgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKKworc3RhdGljIFB5X3VoYXNoX3QKK2hhc2h0YWJsZV9oYXNoX3B5b2JqZWN0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXkpCiB7Ci0gICAgaWYgKGtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVfQ29tcGFyZSgoUHlPYmplY3QgKilrZXksIChQeU9iamVjdCAqKWVudHJ5LT5rZXkpID09IDApOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGtleSA9PSBlbnRyeS0+a2V5OworICAgIFB5T2JqZWN0ICpvYmo7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBvYmopOworICAgIHJldHVybiBQeU9iamVjdF9IYXNoKG9iaik7CiB9CiAKLXN0YXRpYyBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGhhc2h0YWJsZV9hbGxvYyA9IHttYWxsb2MsIGZyZWV9OworCitzdGF0aWMgaW50CitoYXNodGFibGVfY29tcGFyZV91bmljb2RlKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCit7CisgICAgUHlPYmplY3QgKmtleTEsICprZXkyOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwga2V5MSk7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIGtleTIpOworCisgICAgaWYgKGtleTEgIT0gTlVMTCAmJiBrZXkyICE9IE5VTEwpCisgICAgICAgIHJldHVybiAoUHlVbmljb2RlX0NvbXBhcmUoa2V5MSwga2V5MikgPT0gMCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4ga2V5MSA9PSBrZXkyOworfQorCisKK3N0YXRpYyBQeV91aGFzaF90CitoYXNodGFibGVfaGFzaF9wb2ludGVyX3QoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKK3sKKyAgICBwb2ludGVyX3QgcHRyOworICAgIFB5X3VoYXNoX3QgaGFzaDsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHB0cik7CisKKyAgICBoYXNoID0gKFB5X3VoYXNoX3QpX1B5X0hhc2hQb2ludGVyKCh2b2lkKilwdHIucHRyKTsKKyAgICBoYXNoIF49IHB0ci5kb21haW47CisgICAgcmV0dXJuIGhhc2g7Cit9CisKKworc3RhdGljIGludAoraGFzaHRhYmxlX2NvbXBhcmVfcG9pbnRlcl90KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKK3sKKyAgICBwb2ludGVyX3QgcHRyMSwgcHRyMjsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHB0cjEpOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBwdHIyKTsKKworICAgIC8qIGNvbXBhcmUgcG9pbnRlciBiZWZvcmUgZG9tYWluLCBiZWNhdXNlIHBvaW50ZXIgaXMgbW9yZSBsaWtlbHkgdG8gYmUKKyAgICAgICBkaWZmZXJlbnQgKi8KKyAgICByZXR1cm4gKHB0cjEucHRyID09IHB0cjIucHRyICYmIHB0cjEuZG9tYWluID09IHB0cjIuZG9tYWluKTsKKworfQorCiAKIHN0YXRpYyBfUHlfaGFzaHRhYmxlX3QgKgotaGFzaHRhYmxlX25ldyhzaXplX3QgZGF0YV9zaXplLAoraGFzaHRhYmxlX25ldyhzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jKQogewotICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGRhdGFfc2l6ZSwgMCwKKyAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGhhc2h0YWJsZV9hbGxvYyA9IHttYWxsb2MsIGZyZWV9OworICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGtleV9zaXplLCBkYXRhX3NpemUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9mdW5jLCBjb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgJmhhc2h0YWJsZV9hbGxvYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhc2h0YWJsZV9hbGxvYyk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiByYXdfbWFsbG9jKHNpemVfdCBzaXplKQogewpAQCAtMjI3LDIxICszMDIsMjggQEAKICAgICBhbGxvY2F0b3JzLnJhdy5mcmVlKGFsbG9jYXRvcnMucmF3LmN0eCwgcHRyKTsKIH0KIAorCiBzdGF0aWMgUHlfdWhhc2hfdAotaGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrKGNvbnN0IHZvaWQgKmtleSkKK2hhc2h0YWJsZV9oYXNoX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQogewotICAgIGNvbnN0IHRyYWNlYmFja190ICp0cmFjZWJhY2sgPSBrZXk7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHRyYWNlYmFjayk7CiAgICAgcmV0dXJuIHRyYWNlYmFjay0+aGFzaDsKIH0KIAorCiBzdGF0aWMgaW50Ci1oYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2soY29uc3QgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICpoZSkKK2hhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCiB7Ci0gICAgY29uc3QgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazIgPSBoZS0+a2V5OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2sxLCAqdHJhY2ViYWNrMjsKICAgICBjb25zdCBmcmFtZV90ICpmcmFtZTEsICpmcmFtZTI7CiAgICAgaW50IGk7CiAKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCB0cmFjZWJhY2sxKTsKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgdHJhY2ViYWNrMik7CisKICAgICBpZiAodHJhY2ViYWNrMS0+bmZyYW1lICE9IHRyYWNlYmFjazItPm5mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTI2MCw2ICszNDIsNyBAQAogICAgIHJldHVybiAxOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19nZXRfZnJhbWUoUHlGcmFtZU9iamVjdCAqcHlmcmFtZSwgZnJhbWVfdCAqZnJhbWUpCiB7CkBAIC0zMTAsMTUgKzM5MywxNSBAQAogICAgIH0KIAogICAgIC8qIGludGVybiB0aGUgZmlsZW5hbWUgKi8KLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUpOworICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSk7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKLSAgICAgICAgZmlsZW5hbWUgPSAoUHlPYmplY3QgKillbnRyeS0+a2V5OworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZW50cnksIGZpbGVuYW1lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyBpcyByZXNwb25zaWJsZSB0byBrZWVwIGEgcmVmZXJlbmNlCiAgICAgICAgICAgIHRvIHRoZSBmaWxlbmFtZSAqLwogICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOwotICAgICAgICBpZiAoX1B5X2hhc2h0YWJsZV9zZXQodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogI2lmZGVmIFRSQUNFX0RFQlVHCiAgICAgICAgICAgICB0cmFjZW1hbGxvY19lcnJvcigiZmFpbGVkIHRvIGludGVybiB0aGUgZmlsZW5hbWUiKTsKQEAgLTMzMSw2ICs0MTQsNyBAQAogICAgIGZyYW1lLT5maWxlbmFtZSA9IGZpbGVuYW1lOwogfQogCisKIHN0YXRpYyBQeV91aGFzaF90CiB0cmFjZWJhY2tfaGFzaCh0cmFjZWJhY2tfdCAqdHJhY2ViYWNrKQogewpAQCAtMzU1LDYgKzQzOSw3IEBACiAgICAgcmV0dXJuIHg7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlYmFja19nZXRfZnJhbWVzKHRyYWNlYmFja190ICp0cmFjZWJhY2spCiB7CkBAIC0zODIsNiArNDY3LDcgQEAKICAgICB9CiB9CiAKKwogc3RhdGljIHRyYWNlYmFja190ICoKIHRyYWNlYmFja19uZXcodm9pZCkKIHsKQEAgLTQwMSw5ICs0ODcsOSBAQAogICAgIHRyYWNlYmFjay0+aGFzaCA9IHRyYWNlYmFja19oYXNoKHRyYWNlYmFjayk7CiAKICAgICAvKiBpbnRlcm4gdGhlIHRyYWNlYmFjayAqLwotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgdHJhY2ViYWNrKTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIHRyYWNlYmFjayk7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKLSAgICAgICAgdHJhY2ViYWNrID0gKHRyYWNlYmFja190ICopZW50cnktPmtleTsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBlbnRyeSwgdHJhY2ViYWNrKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHRyYWNlYmFja190ICpjb3B5OwpAQCAtNDIwLDcgKzUwNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KGNvcHksIHRyYWNlYmFjaywgdHJhY2ViYWNrX3NpemUpOwogCi0gICAgICAgIGlmIChfUHlfaGFzaHRhYmxlX3NldCh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBjb3B5LCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBjb3B5KSA8IDApIHsKICAgICAgICAgICAgIHJhd19mcmVlKGNvcHkpOwogI2lmZGVmIFRSQUNFX0RFQlVHCiAgICAgICAgICAgICB0cmFjZW1hbGxvY19lcnJvcigiZmFpbGVkIHRvIGludGVybiB0aGUgdHJhY2ViYWNrOiBwdXRkYXRhIGZhaWxlZCIpOwpAQCAtNDMyLDUzICs1MTgsMTYxIEBACiAgICAgcmV0dXJuIHRyYWNlYmFjazsKIH0KIAorCiBzdGF0aWMgaW50Ci10cmFjZW1hbGxvY19hZGRfdHJhY2Uodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKK3RyYWNlbWFsbG9jX3VzZV9kb21haW5fY2IoX1B5X2hhc2h0YWJsZV90ICpvbGRfdHJhY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7Ci0gICAgdHJhY2VfdCB0cmFjZTsKLSAgICBpbnQgcmVzOworICAgIHVpbnRwdHJfdCBwdHI7CisgICAgcG9pbnRlcl90IGtleTsKKyAgICBfUHlfaGFzaHRhYmxlX3QgKm5ld190cmFjZXMgPSAoX1B5X2hhc2h0YWJsZV90ICopdXNlcl9kYXRhOworICAgIGNvbnN0IHZvaWQgKnBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShvbGRfdHJhY2VzLCBlbnRyeSk7CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOwotI2VuZGlmCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShvbGRfdHJhY2VzLCBlbnRyeSwgcHRyKTsKKyAgICBrZXkucHRyID0gcHRyOworICAgIGtleS5kb21haW4gPSBERUZBVUxUX0RPTUFJTjsKIAotICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja19uZXcoKTsKLSAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfc2V0KG5ld190cmFjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXkpLCAma2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfdHJhY2VzLT5kYXRhX3NpemUsIHBkYXRhKTsKK30KKworCisvKiBDb252ZXJ0IHRyYWNlbWFsbG9jX3RyYWNlcyBmcm9tIGNvbXBhY3Qga2V5ICh1aW50cHRyX3QpIHRvIHBvaW50ZXJfdCBrZXkuCisgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK3RyYWNlbWFsbG9jX3VzZV9kb21haW4odm9pZCkKK3sKKyAgICBfUHlfaGFzaHRhYmxlX3QgKm5ld190cmFjZXMgPSBOVUxMOworCisgICAgYXNzZXJ0KCF0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbik7CisKKyAgICBuZXdfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YocG9pbnRlcl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdCk7CisgICAgaWYgKG5ld190cmFjZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICB0cmFjZS5zaXplID0gc2l6ZTsKLSAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7Ci0KLSAgICByZXMgPSBfUHlfSEFTSFRBQkxFX1NFVCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOwotICAgIGlmIChyZXMgPT0gMCkgewotICAgICAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA8PSBQWV9TSVpFX01BWCAtIHNpemUpOwotICAgICAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ICs9IHNpemU7Ci0gICAgICAgIGlmICh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID4gdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5KQotICAgICAgICAgICAgdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5ID0gdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzOworICAgIGlmIChfUHlfaGFzaHRhYmxlX2ZvcmVhY2godHJhY2VtYWxsb2NfdHJhY2VzLCB0cmFjZW1hbGxvY191c2VfZG9tYWluX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3RyYWNlcykgPCAwKQorICAgIHsKKyAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KG5ld190cmFjZXMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gbmV3X3RyYWNlczsKKworICAgIHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluID0gMTsKKworICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCi10cmFjZW1hbGxvY19yZW1vdmVfdHJhY2Uodm9pZCAqcHRyKQordHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0cikKIHsKICAgICB0cmFjZV90IHRyYWNlOworICAgIGludCByZW1vdmVkOwogCi0gICAgaWYgKF9QeV9oYXNodGFibGVfcG9wKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCAmdHJhY2UsIHNpemVvZih0cmFjZSkpKSB7CisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKTsKKworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5ID0ge3B0ciwgZG9tYWlufTsKKyAgICAgICAgcmVtb3ZlZCA9IF9QeV9IQVNIVEFCTEVfUE9QKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5LCB0cmFjZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZW1vdmVkID0gX1B5X0hBU0hUQUJMRV9QT1AodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKKyAgICB9CisgICAgaWYgKCFyZW1vdmVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+PSB0cmFjZS5zaXplKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IC09IHRyYWNlLnNpemU7Cit9CisKKyNkZWZpbmUgUkVNT1ZFX1RSQUNFKHB0cikgXAorICAgICAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KShwdHIpKQorCisKK3N0YXRpYyBpbnQKK3RyYWNlbWFsbG9jX2FkZF90cmFjZShfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCit7CisgICAgcG9pbnRlcl90IGtleSA9IHtwdHIsIGRvbWFpbn07CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKyAgICB0cmFjZV90IHRyYWNlOworICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCogZW50cnk7CisgICAgaW50IHJlczsKKworICAgIGFzc2VydCh0cmFjZW1hbGxvY19jb25maWcudHJhY2luZyk7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfbmV3KCk7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluICYmIGRvbWFpbiAhPSBERUZBVUxUX0RPTUFJTikgeworICAgICAgICAvKiBmaXJzdCB0cmFjZSB1c2luZyBhIG5vbi16ZXJvIGRvbWFpbiB3aGVyZWFzIHRyYWNlcyB1c2UgY29tcGFjdAorICAgICAgICAgICAodWludHB0cl90KSBrZXlzOiBzd2l0Y2ggdG8gcG9pbnRlcl90IGtleXMuICovCisgICAgICAgIGlmICh0cmFjZW1hbGxvY191c2VfZG9tYWluKCkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY190cmFjZXMsIGtleSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyKTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkgIT0gTlVMTCkgeworICAgICAgICAvKiB0aGUgbWVtb3J5IGJsb2NrIGlzIGFscmVhZHkgdHJhY2tlZCAqLworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQSh0cmFjZW1hbGxvY190cmFjZXMsIGVudHJ5LCB0cmFjZSk7CiAgICAgICAgIGFzc2VydCh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID49IHRyYWNlLnNpemUpOwogICAgICAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IC09IHRyYWNlLnNpemU7CisKKyAgICAgICAgdHJhY2Uuc2l6ZSA9IHNpemU7CisgICAgICAgIHRyYWNlLnRyYWNlYmFjayA9IHRyYWNlYmFjazsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9XUklURV9EQVRBKHRyYWNlbWFsbG9jX3RyYWNlcywgZW50cnksIHRyYWNlKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRyYWNlLnNpemUgPSBzaXplOworICAgICAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7CisKKyAgICAgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgICAgICByZXMgPSBfUHlfSEFTSFRBQkxFX1NFVCh0cmFjZW1hbGxvY190cmFjZXMsIGtleSwgdHJhY2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gX1B5X0hBU0hUQUJMRV9TRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA8PSBTSVpFX01BWCAtIHNpemUpOworICAgIHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgKz0gc2l6ZTsKKyAgICBpZiAodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+IHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSkKKyAgICAgICAgdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5ID0gdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeTsKKyAgICByZXR1cm4gMDsKIH0KIAorI2RlZmluZSBBRERfVFJBQ0UocHRyLCBzaXplKSBcCisgICAgICAgICAgICB0cmFjZW1hbGxvY19hZGRfdHJhY2UoREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpKHB0ciksIHNpemUpCisKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3JFeCAqKWN0eDsKICAgICB2b2lkICpwdHI7CiAKLSAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU0laRV9NQVggLyBlbHNpemUpOworICAgIGFzc2VydChlbHNpemUgPT0gMCB8fCBuZWxlbSA8PSBTSVpFX01BWCAvIGVsc2l6ZSk7CiAKICAgICBpZiAodXNlX2NhbGxvYykKICAgICAgICAgcHRyID0gYWxsb2MtPmNhbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSwgZWxzaXplKTsKQEAgLTQ4OCw3ICs2ODIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIsIG5lbGVtICogZWxzaXplKSA8IDApIHsKKyAgICBpZiAoQUREX1RSQUNFKHB0ciwgbmVsZW0gKiBlbHNpemUpIDwgMCkgewogICAgICAgICAvKiBGYWlsZWQgdG8gYWxsb2NhdGUgYSB0cmFjZSBmb3IgdGhlIG5ldyBtZW1vcnkgYmxvY2sgKi8KICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICBhbGxvYy0+ZnJlZShhbGxvYy0+Y3R4LCBwdHIpOwpAQCAtNDk4LDYgKzY5Miw3IEBACiAgICAgcmV0dXJuIHB0cjsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKQEAgLTUxMiw5ICs3MDcsMTQgQEAKICAgICAgICAgLyogYW4gZXhpc3RpbmcgbWVtb3J5IGJsb2NrIGhhcyBiZWVuIHJlc2l6ZWQgKi8KIAogICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UocHRyKTsKIAotICAgICAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0cjIsIG5ld19zaXplKSA8IDApIHsKKyAgICAgICAgLyogdHJhY2VtYWxsb2NfYWRkX3RyYWNlKCkgdXBkYXRlcyB0aGUgdHJhY2UgaWYgdGhlcmUgaXMgYWxyZWFkeQorICAgICAgICAgICBhIHRyYWNlIGF0IGFkZHJlc3MgKGRvbWFpbiwgcHRyMikgKi8KKyAgICAgICAgaWYgKHB0cjIgIT0gcHRyKSB7CisgICAgICAgICAgICBSRU1PVkVfVFJBQ0UocHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChBRERfVFJBQ0UocHRyMiwgbmV3X3NpemUpIDwgMCkgewogICAgICAgICAgICAgLyogTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLiBUaGUgZXJyb3IgY2Fubm90IGJlIHJlcG9ydGVkIHRvCiAgICAgICAgICAgICAgICB0aGUgY2FsbGVyLCBiZWNhdXNlIHJlYWxsb2MoKSBtYXkgYWxyZWFkeSBoYXZlIHNocnVuayB0aGUKICAgICAgICAgICAgICAgIG1lbW9yeSBibG9jayBhbmQgc28gcmVtb3ZlZCBieXRlcy4KQEAgLTUzMiw3ICs3MzIsNyBAQAogICAgICAgICAvKiBuZXcgYWxsb2NhdGlvbiAqLwogCiAgICAgICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyMiwgbmV3X3NpemUpIDwgMCkgeworICAgICAgICBpZiAoQUREX1RSQUNFKHB0cjIsIG5ld19zaXplKSA8IDApIHsKICAgICAgICAgICAgIC8qIEZhaWxlZCB0byBhbGxvY2F0ZSBhIHRyYWNlIGZvciB0aGUgbmV3IG1lbW9yeSBibG9jayAqLwogICAgICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyMik7CkBAIC01NDMsNiArNzQzLDcgQEAKICAgICByZXR1cm4gcHRyMjsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZnJlZSh2b2lkICpjdHgsIHZvaWQgKnB0cikKIHsKQEAgLTU1NywxMCArNzU4LDExIEBACiAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyKTsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CisgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgVEFCTEVTX1VOTE9DSygpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKQEAgLTU4NSwxOCArNzg3LDIxIEBACiAgICAgcmV0dXJuIHB0cjsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX21hbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDAsIGN0eCwgMSwgc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19jYWxsb2NfZ2lsKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMSwgY3R4LCBuZWxlbSwgZWxzaXplKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3JlYWxsb2NfZ2lsKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC02MTIsNyArODE3LDcgQEAKICAgICAgICAgcHRyMiA9IGFsbG9jLT5yZWFsbG9jKGFsbG9jLT5jdHgsIHB0ciwgbmV3X3NpemUpOwogICAgICAgICBpZiAocHRyMiAhPSBOVUxMICYmIHB0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CisgICAgICAgICAgICBSRU1PVkVfVFJBQ0UocHRyKTsKICAgICAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcHRyMjsKQEAgLTYyOSw2ICs4MzQsNyBAQAogICAgIHJldHVybiBwdHIyOwogfQogCisKICNpZmRlZiBUUkFDRV9SQVdfTUFMTE9DCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCkBAIC02NjMsMTggKzg2OSwyMSBAQAogICAgIHJldHVybiBwdHI7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygwLCBjdHgsIDEsIHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X2NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfcmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewpAQCAtNjkxLDcgKzkwMCw3IEBACiAKICAgICAgICAgaWYgKHB0cjIgIT0gTlVMTCAmJiBwdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOworICAgICAgICAgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHB0cjI7CkBAIC03MTUsMjIgKzkyNCwzMSBAQAogfQogI2VuZGlmICAgLyogVFJBQ0VfUkFXX01BTExPQyAqLwogCisKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX2NsZWFyX2ZpbGVuYW1lKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX2NsZWFyX2ZpbGVuYW1lKF9QeV9oYXNodGFibGVfdCAqaHQsIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lID0gKFB5T2JqZWN0ICopZW50cnktPmtleTsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgZmlsZW5hbWUpOwogICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2ViYWNrX2ZyZWVfdHJhY2ViYWNrKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlYmFja19mcmVlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrID0gKHRyYWNlYmFja190ICopZW50cnktPmtleTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIHRyYWNlYmFjayk7CiAgICAgcmF3X2ZyZWUodHJhY2ViYWNrKTsKICAgICByZXR1cm4gMDsKIH0KIAorCiAvKiByZWVudHJhbnQgZmxhZyBtdXN0IGJlIHNldCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kIEdJTCBtdXN0IGJlIGhlbGQgKi8KIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19jbGVhcl90cmFjZXModm9pZCkKQEAgLTc1Myw2ICs5NzEsNyBAQAogICAgIF9QeV9oYXNodGFibGVfY2xlYXIodHJhY2VtYWxsb2NfZmlsZW5hbWVzKTsKIH0KIAorCiBzdGF0aWMgaW50CiB0cmFjZW1hbGxvY19pbml0KHZvaWQpCiB7CkBAIC03ODksMjEgKzEwMDgsMjkgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyA9IGhhc2h0YWJsZV9uZXcoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYylQeU9iamVjdF9IYXNoLAorICAgIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcHlvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV91bmljb2RlKTsKIAotICAgIHRyYWNlbWFsbG9jX3RyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9oYXNodGFibGVfaGFzaF9mdW5jKWhhc2h0YWJsZV9oYXNoX3RyYWNlYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpaGFzaHRhYmxlX2NvbXBhcmVfdHJhY2ViYWNrKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodHJhY2ViYWNrX3QgKiksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayk7CiAKLSAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZih0cmFjZV90KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YocG9pbnRlcl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZih1aW50cHRyX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFjZV90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOworICAgIH0KIAogICAgIGlmICh0cmFjZW1hbGxvY19maWxlbmFtZXMgPT0gTlVMTCB8fCB0cmFjZW1hbGxvY190cmFjZWJhY2tzID09IE5VTEwKLSAgICAgICAgfHwgdHJhY2VtYWxsb2NfdHJhY2VzID09IE5VTEwpCi0gICAgeworICAgICAgIHx8IHRyYWNlbWFsbG9jX3RyYWNlcyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC04MjMsNiArMTA1MCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2RlaW5pdCh2b2lkKQogewpAQCAtODMzLDkgKzEwNjEsOSBAQAogICAgIHRyYWNlbWFsbG9jX3N0b3AoKTsKIAogICAgIC8qIGRlc3Ryb3kgaGFzaCB0YWJsZXMgKi8KLSAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2VzKTsKICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2ViYWNrcyk7CiAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyk7CisgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CiAKICNpZiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAmJiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpCiAgICAgaWYgKHRhYmxlc19sb2NrICE9IE5VTEwpIHsKQEAgLTg0NiwxMSArMTA3NCwxMyBAQAogCiAjaWZkZWYgUkVFTlRSQU5UX1RIUkVBRExPQ0FMCiAgICAgUHlUaHJlYWRfZGVsZXRlX2tleSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KTsKKyAgICB0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ID0gLTE7CiAjZW5kaWYKIAogICAgIFB5X1hERUNSRUYodW5rbm93bl9maWxlbmFtZSk7CiB9CiAKKwogc3RhdGljIGludAogdHJhY2VtYWxsb2Nfc3RhcnQoaW50IG1heF9uZnJhbWUpCiB7CkBAIC05MDcsNiArMTEzNyw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX3N0b3Aodm9pZCkKIHsKQEAgLTkyMyw4ICsxMTU0LDkgQEAKICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJmFsbG9jYXRvcnMubWVtKTsKICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jYXRvcnMub2JqKTsKIAotICAgIC8qIHJlbGVhc2UgbWVtb3J5ICovCiAgICAgdHJhY2VtYWxsb2NfY2xlYXJfdHJhY2VzKCk7CisKKyAgICAvKiByZWxlYXNlIG1lbW9yeSAqLwogICAgIHJhd19mcmVlKHRyYWNlbWFsbG9jX3RyYWNlYmFjayk7CiAgICAgdHJhY2VtYWxsb2NfdHJhY2ViYWNrID0gTlVMTDsKIH0KQEAgLTkzNSw2ICsxMTY3LDcgQEAKICAgICAiVHJ1ZSBpZiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyxcbiIKICAgICAiRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCisKIHN0YXRpYyBQeU9iamVjdCoKIHB5X3RyYWNlbWFsbG9jX2lzX3RyYWNpbmcoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC05NDYsNiArMTE3OSw3IEBACiAgICAgIlxuIgogICAgICJDbGVhciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLiIpOwogCisKIHN0YXRpYyBQeU9iamVjdCoKIHB5X3RyYWNlbWFsbG9jX2NsZWFyX3RyYWNlcyhQeU9iamVjdCAqc2VsZikKIHsKQEAgLTk1OSw2ICsxMTkzLDcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiBmcmFtZV90b19weW9iamVjdChmcmFtZV90ICpmcmFtZSkKIHsKQEAgLTk2OCw4ICsxMjAzLDYgQEAKICAgICBpZiAoZnJhbWVfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZyYW1lLT5maWxlbmFtZSA9PSBOVUxMKQotICAgICAgICBmcmFtZS0+ZmlsZW5hbWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihmcmFtZS0+ZmlsZW5hbWUpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oZnJhbWVfb2JqLCAwLCBmcmFtZS0+ZmlsZW5hbWUpOwogCkBAIC05ODMsNiArMTIxNiw3IEBACiAgICAgcmV0dXJuIGZyYW1lX29iajsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2ViYWNrX3QgKnRyYWNlYmFjaywgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdGFibGUpCiB7CkBAIC0xMDIxLDMzICsxMjU1LDQzIEBACiAgICAgcmV0dXJuIGZyYW1lczsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCi10cmFjZV90b19weW9iamVjdCh0cmFjZV90ICp0cmFjZSwgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdHJhY2ViYWNrcykKK3RyYWNlX3RvX3B5b2JqZWN0KF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdHJhY2VfdCAqdHJhY2UsCisgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX3QgKmludGVybl90cmFjZWJhY2tzKQogewogICAgIFB5T2JqZWN0ICp0cmFjZV9vYmogPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzaXplLCAqdHJhY2ViYWNrOworICAgIFB5T2JqZWN0ICpvYmo7CiAKLSAgICB0cmFjZV9vYmogPSBQeVR1cGxlX05ldygyKTsKKyAgICB0cmFjZV9vYmogPSBQeVR1cGxlX05ldygzKTsKICAgICBpZiAodHJhY2Vfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2l6ZSA9IFB5TG9uZ19Gcm9tU2l6ZV90KHRyYWNlLT5zaXplKTsKLSAgICBpZiAoc2l6ZSA9PSBOVUxMKSB7CisgICAgb2JqID0gUHlMb25nX0Zyb21TaXplX3QoZG9tYWluKTsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHRyYWNlX29iaik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMCwgc2l6ZSk7CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDAsIG9iaik7CiAKLSAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2UtPnRyYWNlYmFjaywgaW50ZXJuX3RyYWNlYmFja3MpOwotICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkgeworICAgIG9iaiA9IFB5TG9uZ19Gcm9tU2l6ZV90KHRyYWNlLT5zaXplKTsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHRyYWNlX29iaik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMSwgdHJhY2ViYWNrKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMSwgb2JqKTsKKworICAgIG9iaiA9IHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZS0+dHJhY2ViYWNrLCBpbnRlcm5fdHJhY2ViYWNrcyk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih0cmFjZV9vYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDIsIG9iaik7CiAKICAgICByZXR1cm4gdHJhY2Vfb2JqOwogfQogCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlczsKICAgICBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlYmFja3M7CkBAIC0xMDU1LDE2ICsxMjk5LDI2IEBACiB9IGdldF90cmFjZXNfdDsKIAogc3RhdGljIGludAotdHJhY2VtYWxsb2NfZ2V0X3RyYWNlc19maWxsKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX2dldF90cmFjZXNfZmlsbChfUHlfaGFzaHRhYmxlX3QgKnRyYWNlcywgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7CiAgICAgZ2V0X3RyYWNlc190ICpnZXRfdHJhY2VzID0gdXNlcl9kYXRhOwotICAgIHRyYWNlX3QgKnRyYWNlOworICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbjsKKyAgICB0cmFjZV90IHRyYWNlOwogICAgIFB5T2JqZWN0ICp0cmFjZW1hbGxvY19vYmo7CiAgICAgaW50IHJlczsKIAotICAgIHRyYWNlID0gKHRyYWNlX3QgKilfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpOworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5OworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKHRyYWNlcywgZW50cnksIGtleSk7CisgICAgICAgIGRvbWFpbiA9IGtleS5kb21haW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkb21haW4gPSBERUZBVUxUX0RPTUFJTjsKKyAgICB9CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2VzLCBlbnRyeSwgdHJhY2UpOwogCi0gICAgdHJhY2VtYWxsb2Nfb2JqID0gdHJhY2VfdG9fcHlvYmplY3QodHJhY2UsIGdldF90cmFjZXMtPnRyYWNlYmFja3MpOworICAgIHRyYWNlbWFsbG9jX29iaiA9IHRyYWNlX3RvX3B5b2JqZWN0KGRvbWFpbiwgJnRyYWNlLCBnZXRfdHJhY2VzLT50cmFjZWJhY2tzKTsKICAgICBpZiAodHJhY2VtYWxsb2Nfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiAxOwogCkBAIC0xMDc2LDE0ICsxMzMwLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYihfUHlfaGFzaHRhYmxlX3QgKnRyYWNlYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgUHlPYmplY3QgKm9iaiA9IChQeU9iamVjdCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2ViYWNrcywgZW50cnksIG9iaik7CiAgICAgUHlfREVDUkVGKG9iaik7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZXNfZG9jLAogICAgICJfZ2V0X3RyYWNlcygpIC0+IGxpc3RcbiIKICAgICAiXG4iCkBAIC0xMTEwLDcgKzEzNjksOCBAQAogCiAgICAgLyogdGhlIHRyYWNlYmFjayBoYXNoIHRhYmxlIGlzIHVzZWQgdGVtcG9yYXJpbHkgdG8gaW50ZXJuIHRyYWNlYmFjayB0dXBsZQogICAgICAgIG9mIChmaWxlbmFtZSwgbGluZW5vKSB0dXBsZXMgKi8KLSAgICBnZXRfdHJhY2VzLnRyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KHNpemVvZihQeU9iamVjdCAqKSwKKyAgICBnZXRfdHJhY2VzLnRyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KHNpemVvZih0cmFjZWJhY2tfdCAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeU9iamVjdCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKICAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZWJhY2tzID09IE5VTEwpIHsKQEAgLTExNDIsMTUgKzE0MDIsNDMgQEAKIGZpbmFsbHk6CiAgICAgaWYgKGdldF90cmFjZXMudHJhY2ViYWNrcyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaChnZXRfdHJhY2VzLnRyYWNlYmFja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYiwgTlVMTCk7CiAgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShnZXRfdHJhY2VzLnRyYWNlYmFja3MpOwogICAgIH0KLSAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZXMgIT0gTlVMTCkKKyAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZXMgIT0gTlVMTCkgewogICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZ2V0X3RyYWNlcy50cmFjZXMpOworICAgIH0KIAogICAgIHJldHVybiBnZXRfdHJhY2VzLmxpc3Q7CiB9CiAKKworc3RhdGljIHRyYWNlYmFja190KgordHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCit7CisgICAgdHJhY2VfdCB0cmFjZTsKKyAgICBpbnQgZm91bmQ7CisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIHBvaW50ZXJfdCBrZXkgPSB7cHRyLCBkb21haW59OworICAgICAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5LCB0cmFjZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7CisgICAgfQorICAgIFRBQkxFU19VTkxPQ0soKTsKKworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIHRyYWNlLnRyYWNlYmFjazsKK30KKworCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X29iamVjdF90cmFjZWJhY2tfZG9jLAogICAgICJfZ2V0X29iamVjdF90cmFjZWJhY2sob2JqKVxuIgogICAgICJcbiIKQEAgLTExNjUsMTEgKzE0NTMsNyBAQAogewogICAgIFB5VHlwZU9iamVjdCAqdHlwZTsKICAgICB2b2lkICpwdHI7Ci0gICAgdHJhY2VfdCB0cmFjZTsKLSAgICBpbnQgZm91bmQ7Ci0KLSAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOwogCiAgICAgdHlwZSA9IFB5X1RZUEUob2JqKTsKICAgICBpZiAoUHlUeXBlX0lTX0dDKHR5cGUpKQpAQCAtMTE3NywxNiArMTQ2MSw0OCBAQAogICAgIGVsc2UKICAgICAgICAgcHRyID0gKHZvaWQgKilvYmo7CiAKLSAgICBUQUJMRVNfTE9DSygpOwotICAgIGZvdW5kID0gX1B5X0hBU0hUQUJMRV9HRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKLSAgICBUQUJMRVNfVU5MT0NLKCk7Ci0KLSAgICBpZiAoIWZvdW5kKQorICAgIHRyYWNlYmFjayA9IHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCi0gICAgcmV0dXJuIHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZS50cmFjZWJhY2ssIE5VTEwpOworICAgIHJldHVybiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2ViYWNrLCBOVUxMKTsKIH0KIAorCisjZGVmaW5lIFBVVFMoZmQsIHN0cikgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKKworc3RhdGljIHZvaWQKK19QeU1lbV9EdW1wRnJhbWUoaW50IGZkLCBmcmFtZV90ICogZnJhbWUpCit7CisgICAgUFVUUyhmZCwgIiAgRmlsZSBcIiIpOworICAgIF9QeV9EdW1wQVNDSUkoZmQsIGZyYW1lLT5maWxlbmFtZSk7CisgICAgUFVUUyhmZCwgIlwiLCBsaW5lICIpOworICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgZnJhbWUtPmxpbmVubyk7CisgICAgUFVUUyhmZCwgIlxuIik7Cit9CisKKy8qIER1bXAgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkIGludG8gZmlsZSBkZXNjcmlwdG9yCisgICBmZC4gVGhlIGZ1bmN0aW9uIG1heSBibG9jayBvbiBUQUJMRVNfTE9DSygpIGJ1dCBpdCBpcyB1bmxpa2VseS4gKi8KK3ZvaWQKK19QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKQoreworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisgICAgaW50IGk7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KXB0cik7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICBQVVRTKGZkLCAiTWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKKyAgICBmb3IgKGk9MDsgaSA8IHRyYWNlYmFjay0+bmZyYW1lOyBpKyspIHsKKyAgICAgICAgX1B5TWVtX0R1bXBGcmFtZShmZCwgJnRyYWNlYmFjay0+ZnJhbWVzW2ldKTsKKyAgICB9CisgICAgUFVUUyhmZCwgIlxuIik7Cit9CisKKyN1bmRlZiBQVVRTCisKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX3N0YXJ0X2RvYywKICAgICAic3RhcnQobmZyYW1lOiBpbnQ9MSlcbiIKICAgICAiXG4iCkBAIC0xMjIyLDYgKzE1MzgsNyBAQAogICAgICJTdG9wIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY2xlYXIgdHJhY2VzXG4iCiAgICAgIm9mIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkIGJ5IFB5dGhvbi4iKTsKIAorCiBzdGF0aWMgUHlPYmplY3QqCiBweV90cmFjZW1hbGxvY19zdG9wKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtMTIyOSw2ICsxNTQ2LDcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFja19saW1pdF9kb2MsCiAgICAgImdldF90cmFjZWJhY2tfbGltaXQoKSAtPiBpbnRcbiIKICAgICAiXG4iCkBAIC0xMjQ0LDYgKzE1NjIsNyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodHJhY2VtYWxsb2NfY29uZmlnLm1heF9uZnJhbWUpOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2VtYWxsb2NfbWVtb3J5X2RvYywKICAgICAiZ2V0X3RyYWNlbWFsbG9jX21lbW9yeSgpIC0+IGludFxuIgogICAgICJcbiIKQEAgLTEyNjcsNiArMTU4Niw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4iLCBzaXplX29iaik7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZWRfbWVtb3J5X2RvYywKICAgICAiZ2V0X3RyYWNlZF9tZW1vcnkoKSAtPiAoaW50LCBpbnQpXG4iCiAgICAgIlxuIgpAQCAtMTI5Miw2ICsxNjEyLDcgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk4iLCBzaXplX29iaiwgcGVha19zaXplX29iaik7CiB9CiAKKwogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CiAgICAgeyJpc190cmFjaW5nIiwgKFB5Q0Z1bmN0aW9uKXB5X3RyYWNlbWFsbG9jX2lzX3RyYWNpbmcsCiAgICAgIE1FVEhfTk9BUkdTLCB0cmFjZW1hbGxvY19pc190cmFjaW5nX2RvY30sCkBAIC0xMzQyLDYgKzE2NjMsNyBAQAogICAgIHJldHVybiBtOwogfQogCisKIHN0YXRpYyBpbnQKIHBhcnNlX3N5c194b3B0aW9ucyhQeU9iamVjdCAqdmFsdWUpCiB7CkBAIC0xMzcwLDYgKzE2OTIsNyBAQAogICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKG5mcmFtZSwgbG9uZywgaW50KTsKIH0KIAorCiBpbnQKIF9QeVRyYWNlTWFsbG9jX0luaXQodm9pZCkKIHsKQEAgLTE0MjgsNiArMTc1MSw3IEBACiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3N0YXJ0KG5mcmFtZSk7CiB9CiAKKwogdm9pZAogX1B5VHJhY2VNYWxsb2NfRmluaSh2b2lkKQogewpAQCAtMTQzNywzICsxNzYxLDU5IEBACiAgICAgdHJhY2VtYWxsb2NfZGVpbml0KCk7CiB9CiAKK2ludAorX1B5VHJhY2VNYWxsb2NfVHJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCit7CisgICAgaW50IHJlczsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfU1RBVEUgZ2lsX3N0YXRlOworI2VuZGlmCisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKSB7CisgICAgICAgIC8qIHRyYWNlbWFsbG9jIGlzIG5vdCB0cmFjaW5nOiBkbyBub3RoaW5nICovCisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGdpbF9zdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CisjZW5kaWYKKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgcmVzID0gdHJhY2VtYWxsb2NfYWRkX3RyYWNlKGRvbWFpbiwgcHRyLCBzaXplKTsKKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxfc3RhdGUpOworI2VuZGlmCisgICAgcmV0dXJuIHJlczsKK30KKworCitpbnQKK19QeVRyYWNlTWFsbG9jX1VudHJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQoreworICAgIGlmICghdHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpIHsKKyAgICAgICAgLyogdHJhY2VtYWxsb2MgaXMgbm90IHRyYWNpbmc6IGRvIG5vdGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKGRvbWFpbiwgcHRyKTsKKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyAgICByZXR1cm4gMDsKK30KKworCitQeU9iamVjdCoKK19QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCit7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIHRyYWNlYmFjayA9IHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soZG9tYWluLCBwdHIpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXR1cm4gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlYmFjaywgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL193aW5hcGkuYyBiL01vZHVsZXMvX3dpbmFwaS5jCmluZGV4IGVkYzZjZjQuLjkxZDRmMDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3dpbmFwaS5jCisrKyBiL01vZHVsZXMvX3dpbmFwaS5jCkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCiAgICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmKCJfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFIiwgZGF0YSkKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCi0gICAgICAgICAgICAnaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTClcbiAgICBQeV9SRVRVUk5fTk9ORTtcbicpCisgICAgICAgICAgICAnaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkge1xuICAgIFB5X1JFVFVSTl9OT05FO1xufVxuJykKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpO1xuJykKIApAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAogICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTtcbicpCiBbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zNzQwNzY5Nzk1OTZlYmJhXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05NDgxOWU3MmQyYzZkNTU4XSovCiAKICNpbmNsdWRlICJjbGluaWMvX3dpbmFwaS5jLmgiCiAKQEAgLTQ4Niw3ICs0ODYsNyBAQAogICAgIGNvbnN0IFVTSE9SVCBwcmVmaXhfbGVuID0gNDsKICAgICBVU0hPUlQgcHJpbnRfbGVuID0gMDsKICAgICBVU0hPUlQgcmRiX3NpemUgPSAwOwotICAgIFBSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CisgICAgX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CiAKICAgICAvKiBKdW5jdGlvbiBwb2ludCBjcmVhdGlvbiAqLwogICAgIEhBTkRMRSBqdW5jdGlvbiA9IE5VTEw7CkBAIC01NDIsMTggKzU0MiwxOCBAQAogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgcHJpbnQgbmFtZSBpbiBieXRlcwogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgc3Vic3RpdHV0ZSBuYW1lIGluIGJ5dGVzCiAgICAgICAgICAtIHRoZSBzaXplIG9mIHR3byBOVUwgdGVybWluYXRvcnMgaW4gYnl0ZXMgKi8KLSAgICByZGJfc2l6ZSA9IFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKworICAgIHJkYl9zaXplID0gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKwogICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlcikgLQogICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyKSArCiAgICAgICAgIC8qIFR3byArMSdzIGZvciBOVUwgdGVybWluYXRvcnMuICovCiAgICAgICAgIChwcmVmaXhfbGVuICsgcHJpbnRfbGVuICsgMSArIHByaW50X2xlbiArIDEpICogc2l6ZW9mKFdDSEFSKTsKLSAgICByZGIgPSAoUFJFUEFSU0VfREFUQV9CVUZGRVIpUHlNZW1fUmF3TWFsbG9jKHJkYl9zaXplKTsKKyAgICByZGIgPSAoX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSKVB5TWVtX1Jhd01hbGxvYyhyZGJfc2l6ZSk7CiAgICAgaWYgKHJkYiA9PSBOVUxMKQogICAgICAgICBnb3RvIGNsZWFudXA7CiAKICAgICBtZW1zZXQocmRiLCAwLCByZGJfc2l6ZSk7CiAgICAgcmRiLT5SZXBhcnNlVGFnID0gSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQ7Ci0gICAgcmRiLT5SZXBhcnNlRGF0YUxlbmd0aCA9IHJkYl9zaXplIC0gUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKKyAgICByZGItPlJlcGFyc2VEYXRhTGVuZ3RoID0gcmRiX3NpemUgLSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lT2Zmc2V0ID0gMDsKICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lTGVuZ3RoID0KICAgICAgICAgKHByZWZpeF9sZW4gKyBwcmludF9sZW4pICogc2l6ZW9mKFdDSEFSKTsKQEAgLTY3NCw3ICs2NzQsNyBAQAogLyogaGVscGVycyBmb3IgY3JlYXRlcHJvY2VzcyAqLwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZwotZ2V0dWxvbmcoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK2dldHVsb25nKFB5T2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogICAgIHVuc2lnbmVkIGxvbmcgcmV0OwpAQCAtNjkwLDcgKzY5MCw3IEBACiB9CiAKIHN0YXRpYyBIQU5ETEUKLWdldGhhbmRsZShQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQorZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogICAgIEhBTkRMRSByZXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FkZHJpbmZvLmggYi9Nb2R1bGVzL2FkZHJpbmZvLmgKaW5kZXggMWNiNmYwZS4uYzNjODYyNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hZGRyaW5mby5oCisrKyBiL01vZHVsZXMvYWRkcmluZm8uaApAQCAtMTQxLDExICsxNDEsNyBAQAogICogUkZDIDI1NTM6IHByb3RvY29sLWluZGVwZW5kZW50IHBsYWNlaG9sZGVyIGZvciBzb2NrZXQgYWRkcmVzc2VzCiAgKi8KICNkZWZpbmUgX1NTX01BWFNJWkUgICAgIDEyOAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jZGVmaW5lIF9TU19BTElHTlNJWkUgICAoc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZWxzZQotI2RlZmluZSBfU1NfQUxJR05TSVpFICAgKHNpemVvZihkb3VibGUpKQotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCisjZGVmaW5lIF9TU19BTElHTlNJWkUgICAoc2l6ZW9mKGxvbmcgbG9uZykpCiAjZGVmaW5lIF9TU19QQUQxU0laRSAgICAoX1NTX0FMSUdOU0laRSAtIHNpemVvZih1X2NoYXIpICogMikKICNkZWZpbmUgX1NTX1BBRDJTSVpFICAgIChfU1NfTUFYU0laRSAtIHNpemVvZih1X2NoYXIpICogMiAtIFwKICAgICAgICAgICAgICAgICBfU1NfUEFEMVNJWkUgLSBfU1NfQUxJR05TSVpFKQpAQCAtMTU4LDExICsxNTQsNyBAQAogICAgIHVuc2lnbmVkIHNob3J0IHNzX2ZhbWlseTsgICAgICAgICAgIC8qIGFkZHJlc3MgZmFtaWx5ICovCiAjZW5kaWYgLyogSEFWRV9TT0NLQUREUl9TQV9MRU4gKi8KICAgICBjaGFyICAgICAgICBfX3NzX3BhZDFbX1NTX1BBRDFTSVpFXTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyBfX3NzX2FsaWduOyAgICAgICAgICAgIC8qIGZvcmNlIGRlc2lyZWQgc3RydWN0dXJlIHN0b3JhZ2UgYWxpZ25tZW50ICovCi0jZWxzZQotICAgIGRvdWJsZSBfX3NzX2FsaWduOyAgICAgICAgICAvKiBmb3JjZSBkZXNpcmVkIHN0cnVjdHVyZSBzdG9yYWdlIGFsaWdubWVudCAqLwotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCisgICAgbG9uZyBsb25nIF9fc3NfYWxpZ247ICAgICAgICAgICAgLyogZm9yY2UgZGVzaXJlZCBzdHJ1Y3R1cmUgc3RvcmFnZSBhbGlnbm1lbnQgKi8KICAgICBjaGFyICAgICAgICBfX3NzX3BhZDJbX1NTX1BBRDJTSVpFXTsKIH07CiAjZW5kaWYgLyogIUhBVkVfU09DS0FERFJfU1RPUkFHRSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IGE0OTY2YjQuLjJjYWE4ZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBpbnQgaXRlbXNpemU7CiAgICAgUHlPYmplY3QgKiAoKmdldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90KTsKICAgICBpbnQgKCpzZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7Ci0gICAgY2hhciAqZm9ybWF0czsKKyAgICBjb25zdCBjaGFyICpmb3JtYXRzOwogICAgIGludCBpc19pbnRlZ2VyX3R5cGU7CiAgICAgaW50IGlzX3NpZ25lZDsKIH07CkBAIC00MCw3ICs0MCw3IEBACiAgICAgUHlPYmplY3RfVkFSX0hFQUQKICAgICBjaGFyICpvYl9pdGVtOwogICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpvYl9kZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqb2JfZGVzY3I7CiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogICAgIGludCBvYl9leHBvcnRzOyAgLyogTnVtYmVyIG9mIGV4cG9ydGVkIGJ1ZmZlcnMgKi8KIH0gYXJyYXlvYmplY3Q7CkBAIC00MTgsMjIgKzQxOCwyMCBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIHFfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKChsb25nIGxvbmcgKilhcC0+b2JfaXRlbSlbaV0pOwogfQogCiBzdGF0aWMgaW50CiBxX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoaSA+PSAwKQotICAgICAgICAoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgICAgICgobG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldID0geDsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDQxLDIwICs0MzksMjAgQEAKIFFRX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygKLSAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSk7CiB9CiAKIHN0YXRpYyBpbnQKIFFRX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKICAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7Ci0gICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQWV9MT05HX0xPTkcgeTsKKyAgICAgICAgbG9uZyBsb25nIHk7CiAgICAgICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeSkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmICh5IDwgMCkgewpAQCAtNDYyLDE0ICs0NjAsMTMgQEAKICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgeCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpeTsKKyAgICAgICAgeCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpeTsKICAgICB9CiAKICAgICBpZiAoaSA+PSAwKQotICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgICAgICgodW5zaWduZWQgbG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldID0geDsKICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogZl9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQpAQCAtNTExLDcgKzUwOCw3IEBACiAgKiBEb24ndCBmb3JnZXQgdG8gdXBkYXRlIHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSgpIGlmIHlvdSBhZGQgYSBuZXcKICAqIHR5cGVjb2RlLgogICovCi1zdGF0aWMgc3RydWN0IGFycmF5ZGVzY3IgZGVzY3JpcHRvcnNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciBkZXNjcmlwdG9yc1tdID0gewogICAgIHsnYicsIDEsIGJfZ2V0aXRlbSwgYl9zZXRpdGVtLCAiYiIsIDEsIDF9LAogICAgIHsnQicsIDEsIEJCX2dldGl0ZW0sIEJCX3NldGl0ZW0sICJCIiwgMSwgMH0sCiAgICAgeyd1Jywgc2l6ZW9mKFB5X1VOSUNPREUpLCB1X2dldGl0ZW0sIHVfc2V0aXRlbSwgInUiLCAwLCAwfSwKQEAgLTUyMSwxMCArNTE4LDggQEAKICAgICB7J0knLCBzaXplb2YoaW50KSwgSUlfZ2V0aXRlbSwgSUlfc2V0aXRlbSwgIkkiLCAxLCAwfSwKICAgICB7J2wnLCBzaXplb2YobG9uZyksIGxfZ2V0aXRlbSwgbF9zZXRpdGVtLCAibCIsIDEsIDF9LAogICAgIHsnTCcsIHNpemVvZihsb25nKSwgTExfZ2V0aXRlbSwgTExfc2V0aXRlbSwgIkwiLCAxLCAwfSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHsncScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKLSAgICB7J1EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKLSNlbmRpZgorICAgIHsncScsIHNpemVvZihsb25nIGxvbmcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKKyAgICB7J1EnLCBzaXplb2YobG9uZyBsb25nKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKICAgICB7J2YnLCBzaXplb2YoZmxvYXQpLCBmX2dldGl0ZW0sIGZfc2V0aXRlbSwgImYiLCAwLCAwfSwKICAgICB7J2QnLCBzaXplb2YoZG91YmxlKSwgZF9nZXRpdGVtLCBkX3NldGl0ZW0sICJkIiwgMCwgMH0sCiAgICAgeydcMCcsIDAsIDAsIDAsIDAsIDAsIDB9IC8qIFNlbnRpbmVsICovCkBAIC01MzksNyArNTM0LDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFkNDNkMzdlOTQyYTg4NTRdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW5ld2FycmF5b2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBzaXplLCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3IpCituZXdhcnJheW9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyKQogewogICAgIGFycmF5b2JqZWN0ICpvcDsKICAgICBzaXplX3QgbmJ5dGVzOwpAQCAtODQxLDEwICs4MzYsMTAgQEAKICAgICAgICAgbWVtc2V0KG5wLT5vYl9pdGVtLCBhLT5vYl9pdGVtWzBdLCBuZXdieXRlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlfc3NpemVfdCBkb25lID0gb2xkYnl0ZXM7Ci0gICAgICAgIFB5X01FTUNQWShucC0+b2JfaXRlbSwgYS0+b2JfaXRlbSwgb2xkYnl0ZXMpOworICAgICAgICBtZW1jcHkobnAtPm9iX2l0ZW0sIGEtPm9iX2l0ZW0sIG9sZGJ5dGVzKTsKICAgICAgICAgd2hpbGUgKGRvbmUgPCBuZXdieXRlcykgewogICAgICAgICAgICAgUHlfc3NpemVfdCBuY29weSA9IChkb25lIDw9IG5ld2J5dGVzLWRvbmUpID8gZG9uZSA6IG5ld2J5dGVzLWRvbmU7Ci0gICAgICAgICAgICBQeV9NRU1DUFkobnAtPm9iX2l0ZW0rZG9uZSwgbnAtPm9iX2l0ZW0sIG5jb3B5KTsKKyAgICAgICAgICAgIG1lbWNweShucC0+b2JfaXRlbStkb25lLCBucC0+b2JfaXRlbSwgbmNvcHkpOwogICAgICAgICAgICAgZG9uZSArPSBuY29weTsKICAgICAgICAgfQogICAgIH0KQEAgLTg1MiwzNyArODQ3LDEwIEBACiB9CiAKIHN0YXRpYyBpbnQKLWFycmF5X2Fzc19zbGljZShhcnJheW9iamVjdCAqYSwgUHlfc3NpemVfdCBpbG93LCBQeV9zc2l6ZV90IGloaWdoLCBQeU9iamVjdCAqdikKK2FycmF5X2RlbF9zbGljZShhcnJheW9iamVjdCAqYSwgUHlfc3NpemVfdCBpbG93LCBQeV9zc2l6ZV90IGloaWdoKQogewogICAgIGNoYXIgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBuOyAvKiBTaXplIG9mIHJlcGxhY2VtZW50IGFycmF5ICovCiAgICAgUHlfc3NpemVfdCBkOyAvKiBDaGFuZ2UgaW4gc2l6ZSAqLwotI2RlZmluZSBiICgoYXJyYXlvYmplY3QgKil2KQotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIG4gPSAwOwotICAgIGVsc2UgaWYgKGFycmF5X0NoZWNrKHYpKSB7Ci0gICAgICAgIG4gPSBQeV9TSVpFKGIpOwotICAgICAgICBpZiAoYSA9PSBiKSB7Ci0gICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgImFbaTpqXSA9IGEiIC0tIGNvcHkgYiBmaXJzdCAqLwotICAgICAgICAgICAgaW50IHJldDsKLSAgICAgICAgICAgIHYgPSBhcnJheV9zbGljZShiLCAwLCBuKTsKLSAgICAgICAgICAgIGlmICghdikKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICByZXQgPSBhcnJheV9hc3Nfc2xpY2UoYSwgaWxvdywgaWhpZ2gsIHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYi0+b2JfZGVzY3IgIT0gYS0+b2JfZGVzY3IpIHsKLSAgICAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAiY2FuIG9ubHkgYXNzaWduIGFycmF5IChub3QgXCIlLjIwMHNcIikgdG8gYXJyYXkgc2xpY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmIChpbG93IDwgMCkKICAgICAgICAgaWxvdyA9IDA7CiAgICAgZWxzZSBpZiAoaWxvdyA+IFB5X1NJWkUoYSkpCkBAIC04OTQsNyArODYyLDcgQEAKICAgICBlbHNlIGlmIChpaGlnaCA+IFB5X1NJWkUoYSkpCiAgICAgICAgIGloaWdoID0gUHlfU0laRShhKTsKICAgICBpdGVtID0gYS0+b2JfaXRlbTsKLSAgICBkID0gbiAtIChpaGlnaC1pbG93KTsKKyAgICBkID0gaWhpZ2gtaWxvdzsKICAgICAvKiBJc3N1ZSAjNDUwOTogSWYgdGhlIGFycmF5IGhhcyBleHBvcnRlZCBidWZmZXJzIGFuZCB0aGUgc2xpY2UKICAgICAgICBhc3NpZ25tZW50IHdvdWxkIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgYXJyYXksIGZhaWwgZWFybHkgdG8gbWFrZQogICAgICAgIHN1cmUgd2UgZG9uJ3QgbW9kaWZ5IGl0LiAqLwpAQCAtOTAzLDI1ICs4NzEsMTQgQEAKICAgICAgICAgICAgICJjYW5ub3QgcmVzaXplIGFuIGFycmF5IHRoYXQgaXMgZXhwb3J0aW5nIGJ1ZmZlcnMiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAoZCA8IDApIHsgLyogRGVsZXRlIC1kIGl0ZW1zICovCi0gICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaCtkKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCisgICAgaWYgKGQgPiAwKSB7IC8qIERlbGV0ZSBkIGl0ZW1zICovCisgICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaC1kKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCiAgICAgICAgICAgICBpdGVtICsgaWhpZ2gqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAogICAgICAgICAgICAgKFB5X1NJWkUoYSktaWhpZ2gpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7Ci0gICAgICAgIGlmIChhcnJheV9yZXNpemUoYSwgUHlfU0laRShhKSArIGQpID09IC0xKQorICAgICAgICBpZiAoYXJyYXlfcmVzaXplKGEsIFB5X1NJWkUoYSkgLSBkKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoZCA+IDApIHsgLyogSW5zZXJ0IGQgaXRlbXMgKi8KLSAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShhLCBQeV9TSVpFKGEpICsgZCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaCtkKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCi0gICAgICAgICAgICBpdGVtICsgaWhpZ2gqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAotICAgICAgICAgICAgKFB5X1NJWkUoYSktaWhpZ2gpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7Ci0gICAgfQotICAgIGlmIChuID4gMCkKLSAgICAgICAgbWVtY3B5KGl0ZW0gKyBpbG93KmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwgYi0+b2JfaXRlbSwKLSAgICAgICAgICAgICAgIG4qYi0+b2JfZGVzY3ItPml0ZW1zaXplKTsKICAgICByZXR1cm4gMDsKLSN1bmRlZiBiCiB9CiAKIHN0YXRpYyBpbnQKQEAgLTkzMyw3ICs4OTAsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBhcnJheV9hc3Nfc2xpY2UoYSwgaSwgaSsxLCB2KTsKKyAgICAgICAgcmV0dXJuIGFycmF5X2RlbF9zbGljZShhLCBpLCBpKzEpOwogICAgIHJldHVybiAoKmEtPm9iX2Rlc2NyLT5zZXRpdGVtKShhLCBpLCB2KTsKIH0KIApAQCAtMTE2Myw4ICsxMTIwLDcgQEAKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHNlbGZpLCB2LCBQeV9FUSk7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmaSk7CiAgICAgICAgIGlmIChjbXAgPiAwKSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlfYXNzX3NsaWNlKHNlbGYsIGksIGkrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMKSAhPSAwKQorICAgICAgICAgICAgaWYgKGFycmF5X2RlbF9zbGljZShzZWxmLCBpLCBpKzEpICE9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTEyMDcsNyArMTE2Myw3IEBACiAgICAgdiA9IGdldGFycmF5aXRlbSgoUHlPYmplY3QgKilzZWxmLCBpKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYXJyYXlfYXNzX3NsaWNlKHNlbGYsIGksIGkrMSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkgeworICAgIGlmIChhcnJheV9kZWxfc2xpY2Uoc2VsZiwgaSwgaSsxKSAhPSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTg2MSwxNiArMTgxNywxNCBAQAogICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKLSNpZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOgotICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGludHNpemUgPSBzaXplb2YobG9uZyBsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnUSc6Ci0gICAgICAgIGludHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nIGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBVTktOT1dOX0ZPUk1BVDsKICAgICB9CkBAIC0xOTU0LDcgKzE5MDgsNyBAQAogewogICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRfaXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CisgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYXJyYXl0eXBlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMjA5Miw3ICsyMDQ2LDcgQEAKICAgICAgICAgUHlfc3NpemVfdCBpdGVtY291bnQgPSBQeV9TSVpFKGl0ZW1zKSAvIG1mX2Rlc2NyLnNpemU7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1lbXN0ciA9CiAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGl0ZW1zKTsKLSAgICAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgICAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICAgICAgLyogSWYgcG9zc2libGUsIHRyeSB0byBwYWNrIGFycmF5J3MgaXRlbXMgdXNpbmcgYSBkYXRhIHR5cGUKICAgICAgICAgICogdGhhdCBmaXRzIGJldHRlci4gVGhpcyBtYXkgcmVzdWx0IGluIGFuIGFycmF5IHdpdGggbmFycm93ZXIKQEAgLTI1NjIsNyArMjUxNiw3IEBACiAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKICAgICB2aWV3LT5pbnRlcm5hbCA9IE5VTEw7CiAgICAgaWYgKChmbGFncyAmIFB5QlVGX0ZPUk1BVCkgPT0gUHlCVUZfRk9STUFUKSB7Ci0gICAgICAgIHZpZXctPmZvcm1hdCA9IHNlbGYtPm9iX2Rlc2NyLT5mb3JtYXRzOworICAgICAgICB2aWV3LT5mb3JtYXQgPSAoY2hhciAqKXNlbGYtPm9iX2Rlc2NyLT5mb3JtYXRzOwogI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICBpZiAoc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlID09ICd1JykgewogICAgICAgICAgICAgdmlldy0+Zm9ybWF0ID0gInciOwpAQCAtMjYwMyw3ICsyNTU3LDcgQEAKIHsKICAgICBpbnQgYzsKICAgICBQeU9iamVjdCAqaW5pdGlhbCA9IE5VTEwsICppdCA9IE5VTEw7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmICh0eXBlID09ICZBcnJheXR5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJhcnJheS5hcnJheSgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjczMiwxMSArMjY4Niw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBxLCBRLCBmIG9yIGQpIik7Ci0jZWxzZQotICAgICAgICAiYmFkIHR5cGVjb2RlIChtdXN0IGJlIGIsIEIsIHUsIGgsIEgsIGksIEksIGwsIEwsIGYgb3IgZCkiKTsKLSNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yODgzLDkgKzI4MzMsMjAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheWl0ZXJfbmV4dChhcnJheWl0ZXJvYmplY3QgKml0KQogeworICAgIGFycmF5b2JqZWN0ICphbzsKKworICAgIGFzc2VydChpdCAhPSBOVUxMKTsKICAgICBhc3NlcnQoUHlBcnJheUl0ZXJfQ2hlY2soaXQpKTsKLSAgICBpZiAoaXQtPmluZGV4IDwgUHlfU0laRShpdC0+YW8pKQotICAgICAgICByZXR1cm4gKCppdC0+Z2V0aXRlbSkoaXQtPmFvLCBpdC0+aW5kZXgrKyk7CisgICAgYW8gPSBpdC0+YW87CisgICAgaWYgKGFvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFzc2VydChhcnJheV9DaGVjayhhbykpOworICAgIGlmIChpdC0+aW5kZXggPCBQeV9TSVpFKGFvKSkgeworICAgICAgICByZXR1cm4gKCppdC0+Z2V0aXRlbSkoYW8sIGl0LT5pbmRleCsrKTsKKyAgICB9CisgICAgaXQtPmFvID0gTlVMTDsKKyAgICBQeV9ERUNSRUYoYW8pOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yOTE0LDggKzI4NzUsMTEgQEAKIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKGFycmF5aXRlcm9iamVjdCAqc2VsZikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ODk4YTUyZThlNjZlMDE2IGlucHV0PWEwNjJlYTFlOTk1MTQxN2FdKi8KIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFvLCBzZWxmLT5pbmRleCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpOworICAgIGlmIChzZWxmLT5hbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKCgpKSIsIGZ1bmMpOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBmdW5jLCBzZWxmLT5hbywgc2VsZi0+aW5kZXgpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0yOTk1LDcgKzI5NTksNyBAQAogICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkFycmF5dHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F1ZGlvb3AuYyBiL01vZHVsZXMvYXVkaW9vcC5jCmluZGV4IDFlMTMxZDIuLmRjZDc3ODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXVkaW9vcC5jCisrKyBiL01vZHVsZXMvYXVkaW9vcC5jCkBAIC01LDggKzUsNiBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKLXR5cGVkZWYgc2hvcnQgUHlJbnQxNjsKLQogI2lmIGRlZmluZWQoX19DSEFSX1VOU0lHTkVEX18pCiAjaWYgZGVmaW5lZChzaWduZWQpCiAvKiBUaGlzIG1vZHVsZSBjdXJyZW50bHkgZG9lcyBub3Qgd29yayBvbiBzeXN0ZW1zIHdoZXJlIG9ubHkgdW5zaWduZWQKQEAgLTUxLDEzICs0OSwxNSBAQAogI2RlZmluZSBTRUdfU0hJRlQgICAgICAgKDQpICAgICAgICAgICAgIC8qIExlZnQgc2hpZnQgZm9yIHNlZ21lbnQgbnVtYmVyLiAqLwogI2RlZmluZSBTRUdfTUFTSyAgICAgICAgKDB4NzApICAgICAgICAgIC8qIFNlZ21lbnQgZmllbGQgbWFzay4gKi8KIAotc3RhdGljIFB5SW50MTYgc2VnX2FlbmRbOF0gPSB7MHgxRiwgMHgzRiwgMHg3RiwgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGfTsKLXN0YXRpYyBQeUludDE2IHNlZ191ZW5kWzhdID0gezB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzRkYsIDB4N0ZGLCAweEZGRiwgMHgxRkZGfTsKK3N0YXRpYyBjb25zdCBpbnQxNl90IHNlZ19hZW5kWzhdID0geworICAgIDB4MUYsIDB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGCit9Oworc3RhdGljIGNvbnN0IGludDE2X3Qgc2VnX3VlbmRbOF0gPSB7CisgICAgMHgzRiwgMHg3RiwgMHhGRiwgMHgxRkYsIDB4M0ZGLCAweDdGRiwgMHhGRkYsIDB4MUZGRgorfTsKIAotc3RhdGljIFB5SW50MTYKLXNlYXJjaChQeUludDE2IHZhbCwgUHlJbnQxNiAqdGFibGUsIGludCBzaXplKQorc3RhdGljIGludDE2X3QKK3NlYXJjaChpbnQxNl90IHZhbCwgY29uc3QgaW50MTZfdCAqdGFibGUsIGludCBzaXplKQogewogICAgIGludCBpOwogCkBAIC03MCw3ICs3MCw3IEBACiAjZGVmaW5lIHN0X3VsYXcybGluZWFyMTYodWMpIChfc3RfdWxhdzJsaW5lYXIxNlt1Y10pCiAjZGVmaW5lIHN0X2FsYXcybGluZWFyMTYodWMpIChfc3RfYWxhdzJsaW5lYXIxNlt1Y10pCiAKLXN0YXRpYyBQeUludDE2IF9zdF91bGF3MmxpbmVhcjE2WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgaW50MTZfdCBfc3RfdWxhdzJsaW5lYXIxNlsyNTZdID0gewogICAgIC0zMjEyNCwgIC0zMTEwMCwgIC0zMDA3NiwgIC0yOTA1MiwgIC0yODAyOCwgIC0yNzAwNCwgIC0yNTk4MCwKICAgICAtMjQ5NTYsICAtMjM5MzIsICAtMjI5MDgsICAtMjE4ODQsICAtMjA4NjAsICAtMTk4MzYsICAtMTg4MTIsCiAgICAgLTE3Nzg4LCAgLTE2NzY0LCAgLTE1OTk2LCAgLTE1NDg0LCAgLTE0OTcyLCAgLTE0NDYwLCAgLTEzOTQ4LApAQCAtMTQzLDEwICsxNDMsMTAgQEAKICAqIEpvaG4gV2lsZXkgJiBTb25zLCBwcHMgOTgtMTExIGFuZCA0NzItNDc2LgogICovCiBzdGF0aWMgdW5zaWduZWQgY2hhcgotc3RfMTRsaW5lYXIydWxhdyhQeUludDE2IHBjbV92YWwpICAgICAgIC8qIDIncyBjb21wbGVtZW50ICgxNC1iaXQgcmFuZ2UpICovCitzdF8xNGxpbmVhcjJ1bGF3KGludDE2X3QgcGNtX3ZhbCkgICAgICAgLyogMidzIGNvbXBsZW1lbnQgKDE0LWJpdCByYW5nZSkgKi8KIHsKLSAgICBQeUludDE2ICAgICAgICAgbWFzazsKLSAgICBQeUludDE2ICAgICAgICAgc2VnOworICAgIGludDE2X3QgICAgICAgICBtYXNrOworICAgIGludDE2X3QgICAgICAgICBzZWc7CiAgICAgdW5zaWduZWQgY2hhciAgIHV2YWw7CiAKICAgICAvKiB1LWxhdyBpbnZlcnRzIGFsbCBiaXRzICovCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogfQogCi1zdGF0aWMgUHlJbnQxNiBfc3RfYWxhdzJsaW5lYXIxNlsyNTZdID0geworc3RhdGljIGNvbnN0IGludDE2X3QgX3N0X2FsYXcybGluZWFyMTZbMjU2XSA9IHsKICAgICAgLTU1MDQsICAgLTUyNDgsICAgLTYwMTYsICAgLTU3NjAsICAgLTQ0ODAsICAgLTQyMjQsICAgLTQ5OTIsCiAgICAgIC00NzM2LCAgIC03NTUyLCAgIC03Mjk2LCAgIC04MDY0LCAgIC03ODA4LCAgIC02NTI4LCAgIC02MjcyLAogICAgICAtNzA0MCwgICAtNjc4NCwgICAtMjc1MiwgICAtMjYyNCwgICAtMzAwOCwgICAtMjg4MCwgICAtMjI0MCwKQEAgLTIzNywxMCArMjM3LDEwIEBACiAgKiBKb2huIFdpbGV5ICYgU29ucywgcHBzIDk4LTExMSBhbmQgNDcyLTQ3Ni4KICAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIKLXN0X2xpbmVhcjJhbGF3KFB5SW50MTYgcGNtX3ZhbCkgLyogMidzIGNvbXBsZW1lbnQgKDEzLWJpdCByYW5nZSkgKi8KK3N0X2xpbmVhcjJhbGF3KGludDE2X3QgcGNtX3ZhbCkgLyogMidzIGNvbXBsZW1lbnQgKDEzLWJpdCByYW5nZSkgKi8KIHsKLSAgICBQeUludDE2ICAgICAgICAgbWFzazsKLSAgICBzaG9ydCAgICAgICAgICAgc2VnOworICAgIGludDE2X3QgICAgICAgICBtYXNrOworICAgIGludDE2X3QgICAgICAgICBzZWc7CiAgICAgdW5zaWduZWQgY2hhciAgIGF2YWw7CiAKICAgICAvKiBBLWxhdyB1c2luZyBldmVuIGJpdCBpbnZlcnNpb24gKi8KQEAgLTI3MCwxMiArMjcwLDEyIEBACiAvKiBFbmQgb2YgY29kZSB0YWtlbiBmcm9tIHNveCAqLwogCiAvKiBJbnRlbCBBRFBDTSBzdGVwIHZhcmlhdGlvbiB0YWJsZSAqLwotc3RhdGljIGludCBpbmRleFRhYmxlWzE2XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgaW5kZXhUYWJsZVsxNl0gPSB7CiAgICAgLTEsIC0xLCAtMSwgLTEsIDIsIDQsIDYsIDgsCiAgICAgLTEsIC0xLCAtMSwgLTEsIDIsIDQsIDYsIDgsCiB9OwogCi1zdGF0aWMgaW50IHN0ZXBzaXplVGFibGVbODldID0geworc3RhdGljIGNvbnN0IGludCBzdGVwc2l6ZVRhYmxlWzg5XSA9IHsKICAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE2LCAxNywKICAgICAxOSwgMjEsIDIzLCAyNSwgMjgsIDMxLCAzNCwgMzcsIDQxLCA0NSwKICAgICA1MCwgNTUsIDYwLCA2NiwgNzMsIDgwLCA4OCwgOTcsIDEwNywgMTE4LApAQCAtMjk0LDggKzI5NCw4IEBACiAKIAogI2RlZmluZSBHRVRJTlQ4KGNwLCBpKSAgICAgICAgICBHRVRJTlRYKHNpZ25lZCBjaGFyLCAoY3ApLCAoaSkpCi0jZGVmaW5lIEdFVElOVDE2KGNwLCBpKSAgICAgICAgIEdFVElOVFgoc2hvcnQsIChjcCksIChpKSkKLSNkZWZpbmUgR0VUSU5UMzIoY3AsIGkpICAgICAgICAgR0VUSU5UWChQWV9JTlQzMl9ULCAoY3ApLCAoaSkpCisjZGVmaW5lIEdFVElOVDE2KGNwLCBpKSAgICAgICAgIEdFVElOVFgoaW50MTZfdCwgKGNwKSwgKGkpKQorI2RlZmluZSBHRVRJTlQzMihjcCwgaSkgICAgICAgICBHRVRJTlRYKGludDMyX3QsIChjcCksIChpKSkKIAogI2lmIFdPUkRTX0JJR0VORElBTgogI2RlZmluZSBHRVRJTlQyNChjcCwgaSkgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zMTEsOCArMzExLDggQEAKIAogCiAjZGVmaW5lIFNFVElOVDgoY3AsIGksIHZhbCkgICAgIFNFVElOVFgoc2lnbmVkIGNoYXIsIChjcCksIChpKSwgKHZhbCkpCi0jZGVmaW5lIFNFVElOVDE2KGNwLCBpLCB2YWwpICAgIFNFVElOVFgoc2hvcnQsIChjcCksIChpKSwgKHZhbCkpCi0jZGVmaW5lIFNFVElOVDMyKGNwLCBpLCB2YWwpICAgIFNFVElOVFgoUFlfSU5UMzJfVCwgKGNwKSwgKGkpLCAodmFsKSkKKyNkZWZpbmUgU0VUSU5UMTYoY3AsIGksIHZhbCkgICAgU0VUSU5UWChpbnQxNl90LCAoY3ApLCAoaSksICh2YWwpKQorI2RlZmluZSBTRVRJTlQzMihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKGludDMyX3QsIChjcCksIChpKSwgKHZhbCkpCiAKICNpZiBXT1JEU19CSUdFTkRJQU4KICNkZWZpbmUgU0VUSU5UMjQoY3AsIGksIHZhbCkgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00NDQsNyArNDQ0LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpID0gMDsgaSA8IGZyYWdtZW50LT5sZW47IGkgKz0gd2lkdGgpIHsKICAgICAgICAgaW50IHZhbCA9IEdFVFJBV1NBTVBMRSh3aWR0aCwgZnJhZ21lbnQtPmJ1ZiwgaSk7Ci0gICAgICAgIGlmICh2YWwgPCAwKSBhYnN2YWwgPSAoLXZhbCk7CisgICAgICAgIC8qIENhc3QgdG8gdW5zaWduZWQgYmVmb3JlIG5lZ2F0aW5nLiBVbnNpZ25lZCBvdmVyZmxvdyBpcyB3ZWxsLQorICAgICAgICBkZWZpbmVkLCBidXQgc2lnbmVkIG92ZXJmbG93IGlzIG5vdC4gKi8KKyAgICAgICAgaWYgKHZhbCA8IDApIGFic3ZhbCA9ICh1bnNpZ25lZCBpbnQpLShpbnQ2NF90KXZhbDsKICAgICAgICAgZWxzZSBhYnN2YWwgPSB2YWw7CiAgICAgICAgIGlmIChhYnN2YWwgPiBtYXgpIG1heCA9IGFic3ZhbDsKICAgICB9CkBAIC01NDAsNyArNTQyLDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVzKTsKIH0KIAotc3RhdGljIGRvdWJsZSBfc3VtMihjb25zdCBzaG9ydCAqYSwgY29uc3Qgc2hvcnQgKmIsIFB5X3NzaXplX3QgbGVuKQorc3RhdGljIGRvdWJsZSBfc3VtMihjb25zdCBpbnQxNl90ICphLCBjb25zdCBpbnQxNl90ICpiLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZG91YmxlIHN1bSA9IDAuMDsKQEAgLTU5OCw3ICs2MDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTc1MjMwNmQ4M2NiYmFkYSBpbnB1dD02MmMzMDU2MDVlMTgzYzlhXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKKyAgICBjb25zdCBpbnQxNl90ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIFB5X3NzaXplX3QgaiwgYmVzdF9qOwogICAgIGRvdWJsZSBhal9tMSwgYWpfbG0xOwpAQCAtNjA4LDkgKzYxMCw5IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICJTdHJpbmdzIHNob3VsZCBiZSBldmVuLXNpemVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKICAgICBsZW4xID0gZnJhZ21lbnQtPmxlbiA+PiAxOwotICAgIGNwMiA9IChjb25zdCBzaG9ydCAqKXJlZmVyZW5jZS0+YnVmOworICAgIGNwMiA9IChjb25zdCBpbnQxNl90ICopcmVmZXJlbmNlLT5idWY7CiAgICAgbGVuMiA9IHJlZmVyZW5jZS0+bGVuID4+IDE7CiAKICAgICBpZiAobGVuMSA8IGxlbjIpIHsKQEAgLTY2Nyw3ICs2NjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTRlYTk1NjUyYzFhZmNmOCBpbnB1dD04MTY2ODAzMDFkMDEyYjIxXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKKyAgICBjb25zdCBpbnQxNl90ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgZG91YmxlIHN1bV9yaV8yLCBzdW1fYWlqX3JpLCByZXN1bHQ7CiAKQEAgLTY3OSw4ICs2ODEsOCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiU2FtcGxlcyBzaG91bGQgYmUgc2FtZSBzaXplIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOwotICAgIGNwMiA9IChjb25zdCBzaG9ydCAqKXJlZmVyZW5jZS0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKKyAgICBjcDIgPSAoY29uc3QgaW50MTZfdCAqKXJlZmVyZW5jZS0+YnVmOwogICAgIGxlbiA9IGZyYWdtZW50LT5sZW4gPj4gMTsKICAgICBzdW1fcmlfMiA9IF9zdW0yKGNwMiwgY3AyLCBsZW4pOwogICAgIHN1bV9haWpfcmkgPSBfc3VtMihjcDEsIGNwMiwgbGVuKTsKQEAgLTcwOSw3ICs3MTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjAwODEyODIzMzUyMzA0MCBpbnB1dD0yZjMwNDgwMWVkNDIzODNjXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMTsKKyAgICBjb25zdCBpbnQxNl90ICpjcDE7CiAgICAgUHlfc3NpemVfdCBsZW4xOwogICAgIFB5X3NzaXplX3QgaiwgYmVzdF9qOwogICAgIGRvdWJsZSBhal9tMSwgYWpfbG0xOwpAQCAtNzE5LDcgKzcyMSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICJTdHJpbmdzIHNob3VsZCBiZSBldmVuLXNpemVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKICAgICBsZW4xID0gZnJhZ21lbnQtPmxlbiA+PiAxOwogCiAgICAgaWYgKGxlbmd0aCA8IDAgfHwgbGVuMSA8IGxlbmd0aCkgewpAQCAtMTEyMCwxMiArMTEyMiwxMiBAQAogICAgICAgICBpZiAod2lkdGggPT0gMSkKICAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodW5zaWduZWQgY2hhciwgZnJhZ21lbnQtPmJ1ZiwgaSk7CiAgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDIpCi0gICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVuc2lnbmVkIHNob3J0LCBmcmFnbWVudC0+YnVmLCBpKTsKKyAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodWludDE2X3QsIGZyYWdtZW50LT5idWYsIGkpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAzKQogICAgICAgICAgICAgdmFsID0gKCh1bnNpZ25lZCBpbnQpR0VUSU5UMjQoZnJhZ21lbnQtPmJ1ZiwgaSkpICYgMHhmZmZmZmZ1OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFzc2VydCh3aWR0aCA9PSA0KTsKLSAgICAgICAgICAgIHZhbCA9IEdFVElOVFgoUFlfVUlOVDMyX1QsIGZyYWdtZW50LT5idWYsIGkpOworICAgICAgICAgICAgdmFsID0gR0VUSU5UWCh1aW50MzJfdCwgZnJhZ21lbnQtPmJ1ZiwgaSk7CiAgICAgICAgIH0KIAogICAgICAgICB2YWwgKz0gKHVuc2lnbmVkIGludCliaWFzOwpAQCAtMTEzNSwxMiArMTEzNywxMiBAQAogICAgICAgICBpZiAod2lkdGggPT0gMSkKICAgICAgICAgICAgIFNFVElOVFgodW5zaWduZWQgY2hhciwgbmNwLCBpLCB2YWwpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAyKQotICAgICAgICAgICAgU0VUSU5UWCh1bnNpZ25lZCBzaG9ydCwgbmNwLCBpLCB2YWwpOworICAgICAgICAgICAgU0VUSU5UWCh1aW50MTZfdCwgbmNwLCBpLCB2YWwpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAzKQogICAgICAgICAgICAgU0VUSU5UMjQobmNwLCBpLCAoaW50KXZhbCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXNzZXJ0KHdpZHRoID09IDQpOwotICAgICAgICAgICAgU0VUSU5UWChQWV9VSU5UMzJfVCwgbmNwLCBpLCB2YWwpOworICAgICAgICAgICAgU0VUSU5UWCh1aW50MzJfdCwgbmNwLCBpLCB2YWwpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBydjsKQEAgLTEzMzIsNyArMTMzNCw3IEBACiAgICAgd2VpZ2h0QSAvPSBkOwogICAgIHdlaWdodEIgLz0gZDsKIAotICAgIGlmICgoc2l6ZV90KW5jaGFubmVscyA+IFBZX1NJWkVfTUFYL3NpemVvZihpbnQpKSB7CisgICAgaWYgKChzaXplX3QpbmNoYW5uZWxzID4gU0laRV9NQVgvc2l6ZW9mKGludCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IGZvciBvdXRwdXQgYnVmZmVyIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IDFhNDBiNDEuLjliOWNkN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTc0LDcgKzc0LDcgQEAKICNkZWZpbmUgU0tJUCAweDdFCiAjZGVmaW5lIEZBSUwgMHg3RAogCi1zdGF0aWMgdW5zaWduZWQgY2hhciB0YWJsZV9hMmJfaHF4WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0YWJsZV9hMmJfaHF4WzI1Nl0gPSB7CiAvKiAgICAgICBeQCAgICBeQSAgICBeQiAgICBeQyAgICBeRCAgICBeRSAgICBeRiAgICBeRyAgICovCiAvKiAwKi8gIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsCiAvKiAgICAgICBcYiAgICBcdCAgICBcbiAgICBeSyAgICBeTCAgICBcciAgICBeTiAgICBeTyAgICovCkBAIC0xMjUsMTAgKzEyNSwxMCBAQAogICAgIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsCiB9OwogCi1zdGF0aWMgdW5zaWduZWQgY2hhciB0YWJsZV9iMmFfaHF4W10gPQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2hxeFtdID0KICIhXCIjJCUmJygpKissLTAxMjM0NTY4OUBBQkNERUZHSElKS0xNTlBRUlNUVVZYWVpbYGFiY2RlZmhpamtsbXBxciI7CiAKLXN0YXRpYyBjaGFyIHRhYmxlX2EyYl9iYXNlNjRbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyIHRhYmxlX2EyYl9iYXNlNjRbXSA9IHsKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLDYyLCAtMSwtMSwtMSw2MywKQEAgLTE0NCwxMiArMTQ0LDEyIEBACiAvKiBNYXggYmluYXJ5IGNodW5rIHNpemU7IGxpbWl0ZWQgb25seSBieSBhdmFpbGFibGUgbWVtb3J5ICovCiAjZGVmaW5lIEJBU0U2NF9NQVhCSU4gKChQWV9TU0laRV9UX01BWCAtIDMpIC8gMikKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2Jhc2U2NFtdID0KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9iYXNlNjRbXSA9CiAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAKIAogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgY3JjdGFiX2hxeFsyNTZdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNyY3RhYl9ocXhbMjU2XSA9IHsKICAgICAweDAwMDAsIDB4MTAyMSwgMHgyMDQyLCAweDMwNjMsIDB4NDA4NCwgMHg1MGE1LCAweDYwYzYsIDB4NzBlNywKICAgICAweDgxMDgsIDB4OTEyOSwgMHhhMTRhLCAweGIxNmIsIDB4YzE4YywgMHhkMWFkLCAweGUxY2UsIDB4ZjFlZiwKICAgICAweDEyMzEsIDB4MDIxMCwgMHgzMjczLCAweDIyNTIsIDB4NTJiNSwgMHg0Mjk0LCAweDcyZjcsIDB4NjJkNiwKQEAgLTI1Niw3ICsyNTYsOCBAQAogYmluYXNjaWlfYTJiX3V1X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwMjdmOGUwYjA1OTg3NDIgaW5wdXQ9N2NhZmVhZjczZGY2M2QxY10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7CkBAIC0zNDIsMTMgKzM0MywxNSBAQAogYmluYXNjaWlfYjJhX3V1X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwNzA2NzBlNTJlNGFhNmIgaW5wdXQ9MDBmZGY0NThjZThiNDY1Yl0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwotICAgIFB5X3NzaXplX3QgYmluX2xlbjsKKyAgICBQeV9zc2l6ZV90IGJpbl9sZW4sIG91dF9sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKICAgICBiaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBiaW5fbGVuID0gZGF0YS0+bGVuOwogICAgIGlmICggYmluX2xlbiA+IDQ1ICkgewpAQCAtMzU4LDkgKzM2MSwxMCBAQAogICAgIH0KIAogICAgIC8qIFdlJ3JlIGxhenkgYW5kIGFsbG9jYXRlIHRvIG11Y2ggKGZpeGVkIHVwIGxhdGVyKSAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMiArIChiaW5fbGVuKzIpLzMqNCkpID09IE5VTEwgKQorICAgIG91dF9sZW4gPSAyICsgKGJpbl9sZW4gKyAyKSAvIDMgKiA0OworICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBvdXRfbGVuKTsKKyAgICBpZiAoYXNjaWlfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc2NpaV9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICAvKiBTdG9yZSB0aGUgbGVuZ3RoICovCiAgICAgKmFzY2lpX2RhdGErKyA9ICcgJyArIChiaW5fbGVuICYgMDc3KTsKQEAgLTM4MiwxNyArMzg2LDEyIEBACiAgICAgfQogICAgICphc2NpaV9kYXRhKysgPSAnXG4nOyAgICAgICAvKiBBcHBlbmQgYSBjb3VydGVzeSBuZXdsaW5lICovCiAKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGFzY2lpX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBhc2NpaV9kYXRhKTsKIH0KIAogCiBzdGF0aWMgaW50Ci1iaW5hc2NpaV9maW5kX3ZhbGlkKHVuc2lnbmVkIGNoYXIgKnMsIFB5X3NzaXplX3Qgc2xlbiwgaW50IG51bSkKK2JpbmFzY2lpX2ZpbmRfdmFsaWQoY29uc3QgdW5zaWduZWQgY2hhciAqcywgUHlfc3NpemVfdCBzbGVuLCBpbnQgbnVtKQogewogICAgIC8qIEZpbmRzICYgcmV0dXJucyB0aGUgKG51bSsxKXRoCiAgICAgKiogdmFsaWQgY2hhcmFjdGVyIGZvciBiYXNlNjQsIG9yIC0xIGlmIG5vbmUuCkBAIC00MjksMTMgKzQyOCwxNCBAQAogYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNjI4MjIzZjE5ZmQzZjliIGlucHV0PTU4NzJhY2Y2ZTFjYWMyNDNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKICAgICBQeV9zc2l6ZV90IGFzY2lpX2xlbiwgYmluX2xlbjsKICAgICBpbnQgcXVhZF9wb3MgPSAwOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzY2lpX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYXNjaWlfbGVuID0gZGF0YS0+bGVuOwpAQCAtNDQ3LDExICs0NDcsMTIgQEAKIAogICAgIGJpbl9sZW4gPSAoKGFzY2lpX2xlbiszKS80KSozOyAvKiBVcHBlciBib3VuZCwgY29ycmVjdGVkIGxhdGVyICovCiAKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCiAgICAgLyogQWxsb2NhdGUgdGhlIGJ1ZmZlciAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYmluX2xlbikpID09IE5VTEwgKQorICAgIGJpbl9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgYmluX2xlbik7CisgICAgaWYgKGJpbl9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJpbl9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7Ci0gICAgYmluX2xlbiA9IDA7CiAKICAgICBmb3IoIDsgYXNjaWlfbGVuID4gMDsgYXNjaWlfbGVuLS0sIGFzY2lpX2RhdGErKykgewogICAgICAgICB0aGlzX2NoID0gKmFzY2lpX2RhdGE7CkBAIC00OTYsMzEgKzQ5NywxNyBAQAogICAgICAgICBpZiAoIGxlZnRiaXRzID49IDggKSB7CiAgICAgICAgICAgICBsZWZ0Yml0cyAtPSA4OwogICAgICAgICAgICAgKmJpbl9kYXRhKysgPSAobGVmdGNoYXIgPj4gbGVmdGJpdHMpICYgMHhmZjsKLSAgICAgICAgICAgIGJpbl9sZW4rKzsKICAgICAgICAgICAgIGxlZnRjaGFyICY9ICgoMSA8PCBsZWZ0Yml0cykgLSAxKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChsZWZ0Yml0cyAhPSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkluY29ycmVjdCBwYWRkaW5nIik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIEFuZCBzZXQgc3RyaW5nIHNpemUgY29ycmVjdGx5LiBJZiB0aGUgcmVzdWx0IHN0cmluZyBpcyBlbXB0eQotICAgICoqIChiZWNhdXNlIHRoZSBpbnB1dCB3YXMgYWxsIGludmFsaWQpIHJldHVybiB0aGUgc2hhcmVkIGVtcHR5Ci0gICAgKiogc3RyaW5nIGluc3RlYWQ7IF9QeUJ5dGVzX1Jlc2l6ZSgpIHdvbid0IGRvIHRoaXMgZm9yIHVzLgotICAgICovCi0gICAgaWYgKGJpbl9sZW4gPiAwKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LCBiaW5fbGVuKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgcnYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYmluX2RhdGEpOwogfQogCiAKQEAgLTUyOCwyNCArNTE1LDI3IEBACiBiaW5hc2NpaS5iMmFfYmFzZTY0CiAKICAgICBkYXRhOiBQeV9idWZmZXIKLSAgICAvCisgICAgKgorICAgIG5ld2xpbmU6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKIAogQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDk2NjYzMTcwNzc4ZGMzIGlucHV0PTE0ZWM0ZTQ3MzcxMTc0YTldKi8KK2JpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBuZXdsaW5lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRhZDYyYzhlODQ4NWQzYjMgaW5wdXQ9N2IyZWE2ZmEzOGQ4OTI0Y10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwotICAgIFB5X3NzaXplX3QgYmluX2xlbjsKKyAgICBQeV9zc2l6ZV90IGJpbl9sZW4sIG91dF9sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYmluX2xlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGJpbl9sZW4gPj0gMCk7CiAKQEAgLTU1NSwxMSArNTQ1LDE0IEBACiAgICAgfQogCiAgICAgLyogV2UncmUgbGF6eSBhbmQgYWxsb2NhdGUgdG9vIG11Y2ggKGZpeGVkIHVwIGxhdGVyKS4KLSAgICAgICAiKzMiIGxlYXZlcyByb29tIGZvciB1cCB0byB0d28gcGFkIGNoYXJhY3RlcnMgYW5kIGEgdHJhaWxpbmcKLSAgICAgICBuZXdsaW5lLiAgTm90ZSB0aGF0ICdiJyBnZXRzIGVuY29kZWQgYXMgJ1lnPT1cbicgKDEgaW4sIDUgb3V0KS4gKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJpbl9sZW4qMiArIDMpKSA9PSBOVUxMICkKKyAgICAgICAiKzIiIGxlYXZlcyByb29tIGZvciB1cCB0byB0d28gcGFkIGNoYXJhY3RlcnMuCisgICAgICAgTm90ZSB0aGF0ICdiJyBnZXRzIGVuY29kZWQgYXMgJ1lnPT1cbicgKDEgaW4sIDUgb3V0KS4gKi8KKyAgICBvdXRfbGVuID0gYmluX2xlbioyICsgMjsKKyAgICBpZiAobmV3bGluZSkKKyAgICAgICAgb3V0X2xlbisrOworICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBvdXRfbGVuKTsKKyAgICBpZiAoYXNjaWlfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc2NpaV9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIDsgYmluX2xlbiA+IDAgOyBiaW5fbGVuLS0sIGJpbl9kYXRhKysgKSB7CiAgICAgICAgIC8qIFNoaWZ0IHRoZSBkYXRhIGludG8gb3VyIGJ1ZmZlciAqLwpAQCAtNTgxLDE0ICs1NzQsMTAgQEAKICAgICAgICAgKmFzY2lpX2RhdGErKyA9IHRhYmxlX2IyYV9iYXNlNjRbKGxlZnRjaGFyJjB4ZikgPDwgMl07CiAgICAgICAgICphc2NpaV9kYXRhKysgPSBCQVNFNjRfUEFEOwogICAgIH0KLSAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLworICAgIGlmIChuZXdsaW5lKQorICAgICAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLwogCi0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChhc2NpaV9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYXNjaWlfZGF0YSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTYwNCwxNiArNTkzLDE5IEBACiBiaW5hc2NpaV9hMmJfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRkNmQ4YzU0ZDU0ZWExYzEgaW5wdXQ9MGQ5MTRjNjgwZTBlZWQ1NV0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgaW50IGRvbmUgPSAwOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzY2lpX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQobGVuID49IDApOwogCkBAIC02MjMsOSArNjE1LDkgQEAKICAgICAvKiBBbGxvY2F0ZSBhIHN0cmluZyB0aGF0IGlzIHRvbyBiaWcgKGZpeGVkIGxhdGVyKQogICAgICAgIEFkZCB0d28gdG8gdGhlIGluaXRpYWwgbGVuZ3RoIHRvIHByZXZlbnQgaW50ZXJuaW5nIHdoaWNoCiAgICAgICAgd291bGQgcHJlY2x1ZGUgc3Vic2VxdWVudCByZXNpemluZy4gICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4rMikpID09IE5VTEwgKQorICAgIGJpbl9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICsgMik7CisgICAgaWYgKGJpbl9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJpbl9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIDsgbGVuID4gMCA7IGxlbi0tLCBhc2NpaV9kYXRhKysgKSB7CiAgICAgICAgIC8qIEdldCB0aGUgYnl0ZSBhbmQgbG9vayBpdCB1cCAqLwpAQCAtNjM0LDcgKzYyNiw3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCB0aGlzX2NoID09IEZBSUwgKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbGxlZ2FsIGNoYXIiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCB0aGlzX2NoID09IERPTkUgKSB7CkBAIC02NTYsMjEgKzY0OCwxNCBAQAogICAgIGlmICggbGVmdGJpdHMgJiYgIWRvbmUgKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhJbmNvbXBsZXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIlN0cmluZyBoYXMgaW5jb21wbGV0ZSBudW1iZXIgb2YgYnl0ZXMiKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAoYmluX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICBpZiAocnYpIHsKLSAgICAgICAgUHlPYmplY3QgKnJydiA9IFB5X0J1aWxkVmFsdWUoIk9pIiwgcnYsIGRvbmUpOwotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICByZXR1cm4gcnJ2OwotICAgIH0KIAotICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBiaW5fZGF0YSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCByZXMsIGRvbmUpOwogfQogCiAKQEAgLTY4NywxMSArNjcyLDEzIEBACiBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zOTNkNzkzMzhmNWY1NjI5IGlucHV0PWUxZjE3MTI0NDdhODJiMDldKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICppbl9kYXRhLCAqb3V0X2RhdGE7Ci0gICAgUHlPYmplY3QgKnJ2OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqb3V0X2RhdGE7CiAgICAgdW5zaWduZWQgY2hhciBjaDsKICAgICBQeV9zc2l6ZV90IGluLCBpbmVuZCwgbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBsZW4gPSBkYXRhLT5sZW47CiAKQEAgLTcwMSw5ICs2ODgsOSBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIC8qIFdvcnN0IGNhc2U6IG91dHB1dCBpcyB0d2ljZSBhcyBiaWcgYXMgaW5wdXQgKGZpeGVkIGxhdGVyKSAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKjIrMikpID09IE5VTEwgKQorICAgIG91dF9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICogMiArIDIpOworICAgIGlmIChvdXRfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCBpbj0wOyBpbjxsZW47IGluKyspIHsKICAgICAgICAgY2ggPSBpbl9kYXRhW2luXTsKQEAgLTcyOSwxMiArNzE2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKG91dF9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBvdXRfZGF0YSk7CiB9CiAKIApAQCAtNzUxLDE1ICs3MzQsMTcgQEAKIGJpbmFzY2lpX2IyYV9ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBhYTVhNzA0YmM5ZjdkZSBpbnB1dD05NTk2ZWJlMDE5ZmUxMmJhXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7CiAgICAgUHlfc3NpemVfdCBsZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQobGVuID49IDApOwogCkBAIC03NjcsOSArNzUyLDkgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICAvKiBBbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGlzIGF0IGxlYXN0IGxhcmdlIGVub3VnaCAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKjIrMikpID09IE5VTEwgKQorICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBsZW4gKiAyICsgMik7CisgICAgaWYgKGFzY2lpX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNjaWlfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCA7IGxlbiA+IDAgOyBsZW4tLSwgYmluX2RhdGErKyApIHsKICAgICAgICAgLyogU2hpZnQgaW50byBvdXIgYnVmZmVyLCBhbmQgb3V0cHV0IGFueSA2Yml0cyByZWFkeSAqLwpAQCAtNzg2LDEyICs3NzEsOCBAQAogICAgICAgICBsZWZ0Y2hhciA8PD0gKDYtbGVmdGJpdHMpOwogICAgICAgICAqYXNjaWlfZGF0YSsrID0gdGFibGVfYjJhX2hxeFtsZWZ0Y2hhciAmIDB4M2ZdOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGFzY2lpX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGFzY2lpX2RhdGEpOwogfQogCiAKQEAgLTgwOCwxMyArNzg5LDE1IEBACiBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MjY2MTk1NjVkZTFjNmMgaW5wdXQ9NTRjZGQ0OWZjMDE0NDAyY10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmluX2RhdGEsICpvdXRfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKm91dF9kYXRhOwogICAgIHVuc2lnbmVkIGNoYXIgaW5fYnl0ZSwgaW5fcmVwZWF0OwotICAgIFB5T2JqZWN0ICpydjsKLSAgICBQeV9zc2l6ZV90IGluX2xlbiwgb3V0X2xlbiwgb3V0X2xlbl9sZWZ0OworICAgIFB5X3NzaXplX3QgaW5fbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgaW5fbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQoaW5fbGVuID49IDApOwogCkBAIC04MjUsNTkgKzgwOCw0OCBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIC8qIEFsbG9jYXRlIGEgYnVmZmVyIG9mIHJlYXNvbmFibGUgc2l6ZS4gUmVzaXplZCB3aGVuIG5lZWRlZCAqLwotICAgIG91dF9sZW4gPSBpbl9sZW4qMjsKLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dF9sZW4pKSA9PSBOVUxMICkKKyAgICBvdXRfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGluX2xlbik7CisgICAgaWYgKG91dF9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG91dF9sZW5fbGVmdCA9IG91dF9sZW47Ci0gICAgb3V0X2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKKworICAgIC8qIFVzZSBvdmVyYWxsb2NhdGlvbiAqLworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCiAgICAgLyoKICAgICAqKiBXZSBuZWVkIHR3byBtYWNyb3MgaGVyZSB0byBnZXQvcHV0IGJ5dGVzIGFuZCBoYW5kbGUKICAgICAqKiBlbmQtb2YtYnVmZmVyIGZvciBpbnB1dCBhbmQgb3V0cHV0IHN0cmluZ3MuCiAgICAgKi8KLSNkZWZpbmUgSU5CWVRFKGIpIFwKLSAgICBkbyB7IFwKLSAgICAgICAgICAgICBpZiAoIC0taW5fbGVuIDwgMCApIHsgXAotICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwgIiIpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihydik7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKLSAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICBiID0gKmluX2RhdGErKzsgXAorI2RlZmluZSBJTkJZVEUoYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgaWYgKCAtLWluX2xlbiA8IDAgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwgIiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgYiA9ICppbl9kYXRhKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBPVVRCWVRFKGIpIFwKLSAgICBkbyB7IFwKLSAgICAgICAgICAgICBpZiAoIC0tb3V0X2xlbl9sZWZ0IDwgMCApIHsgXAotICAgICAgICAgICAgICAgICAgICAgIGlmICggb3V0X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMikgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7IFwKLSAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwgMipvdXRfbGVuKSA8IDApIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgUHlfWERFQ1JFRihydik7IHJldHVybiBOVUxMOyB9IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG91dF9sZW47IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfbGVuX2xlZnQgPSBvdXRfbGVuLTE7IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfbGVuID0gb3V0X2xlbiAqIDI7IFwKLSAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGI7IFwKLSAgICB9IHdoaWxlKDApCi0KLSAgICAgICAgLyoKLSAgICAgICAgKiogSGFuZGxlIGZpcnN0IGJ5dGUgc2VwYXJhdGVseSAoc2luY2Ugd2UgaGF2ZSB0byBnZXQgYW5ncnkKLSAgICAgICAgKiogaW4gY2FzZSBvZiBhbiBvcnBoYW5lZCBSTEUgY29kZSkuCi0gICAgICAgICovCi0gICAgICAgIElOQllURShpbl9ieXRlKTsKKyAgICAvKgorICAgICoqIEhhbmRsZSBmaXJzdCBieXRlIHNlcGFyYXRlbHkgKHNpbmNlIHdlIGhhdmUgdG8gZ2V0IGFuZ3J5CisgICAgKiogaW4gY2FzZSBvZiBhbiBvcnBoYW5lZCBSTEUgY29kZSkuCisgICAgKi8KKyAgICBJTkJZVEUoaW5fYnl0ZSk7CiAKICAgICBpZiAoaW5fYnl0ZSA9PSBSVU5DSEFSKSB7CiAgICAgICAgIElOQllURShpbl9yZXBlYXQpOworICAgICAgICAvKiBvbmx5IDEgYnl0ZSB3aWxsIGJlIHdyaXR0ZW4sIGJ1dCAyIGJ5dGVzIHdlcmUgcHJlYWxsb2NhdGVkOgorICAgICAgICAgICBzdWJ0cmFjdCAxIGJ5dGUgdG8gcHJldmVudCBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICB3cml0ZXIubWluX3NpemUtLTsKKwogICAgICAgICBpZiAoaW5fcmVwZWF0ICE9IDApIHsKICAgICAgICAgICAgIC8qIE5vdGUgRXJyb3IsIG5vdCBJbmNvbXBsZXRlICh3aGljaCBpcyBhdCB0aGUgZW5kCiAgICAgICAgICAgICAqKiBvZiB0aGUgc3RyaW5nIG9ubHkpLiBUaGlzIGlzIGEgcHJvZ3JhbW1lciBlcnJvci4KICAgICAgICAgICAgICovCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJPcnBoYW5lZCBSTEUgY29kZSBhdCBzdGFydCIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBPVVRCWVRFKFJVTkNIQVIpOworICAgICAgICAqb3V0X2RhdGErKyA9IFJVTkNIQVI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgKm91dF9kYXRhKysgPSBpbl9ieXRlOwogICAgIH0KIAogICAgIHdoaWxlKCBpbl9sZW4gPiAwICkgewpAQCAtODg1LDI2ICs4NTcsMzkgQEAKIAogICAgICAgICBpZiAoaW5fYnl0ZSA9PSBSVU5DSEFSKSB7CiAgICAgICAgICAgICBJTkJZVEUoaW5fcmVwZWF0KTsKKyAgICAgICAgICAgIC8qIG9ubHkgMSBieXRlIHdpbGwgYmUgd3JpdHRlbiwgYnV0IDIgYnl0ZXMgd2VyZSBwcmVhbGxvY2F0ZWQ6CisgICAgICAgICAgICAgICBzdWJ0cmFjdCAxIGJ5dGUgdG8gcHJldmVudCBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplLS07CisKICAgICAgICAgICAgIGlmICggaW5fcmVwZWF0ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgLyogSnVzdCBhbiBlc2NhcGVkIFJVTkNIQVIgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICBPVVRCWVRFKFJVTkNIQVIpOworICAgICAgICAgICAgICAgICpvdXRfZGF0YSsrID0gUlVOQ0hBUjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogUGljayB1cCB2YWx1ZSBhbmQgb3V0cHV0IGEgc2VxdWVuY2Ugb2YgaXQgKi8KICAgICAgICAgICAgICAgICBpbl9ieXRlID0gb3V0X2RhdGFbLTFdOworCisgICAgICAgICAgICAgICAgLyogZW5sYXJnZSB0aGUgYnVmZmVyIGlmIG5lZWRlZCAqLworICAgICAgICAgICAgICAgIGlmIChpbl9yZXBlYXQgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIC0xIGJlY2F1c2Ugd2UgYWxyZWFkeSBwcmVhbGxvY2F0ZWQgMSBieXRlICovCisgICAgICAgICAgICAgICAgICAgIG91dF9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBvdXRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3JlcGVhdCAtIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAob3V0X2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgd2hpbGUgKCAtLWluX3JlcGVhdCA+IDAgKQotICAgICAgICAgICAgICAgICAgICBPVVRCWVRFKGluX2J5dGUpOworICAgICAgICAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGluX2J5dGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBOb3JtYWwgYnl0ZSAqLwotICAgICAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgICAgICpvdXRfZGF0YSsrID0gaW5fYnl0ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKG91dF9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgb3V0X2RhdGEpOworCitlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOwogfQogCiAKQEAgLTkyMiw3ICs5MDcsNyBAQAogYmluYXNjaWlfY3JjX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgdW5zaWduZWQgaW50IGNyYykKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZWMyYTc4NTkwZDE5MTcwIGlucHV0PWFkZDhjNTM3MTJjY2NlZGFdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGNyYyAmPSAweGZmZmY7CkBAIC0xMDAwLDcgKzk4NSw3IEBACiAgICAgIHVzaW5nIGJ5dGUtc3dhcCBpbnN0cnVjdGlvbnMuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIHVuc2lnbmVkIGludCBjcmNfMzJfdGFiWzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGNyY18zMl90YWJbMjU2XSA9IHsKIDB4MDAwMDAwMDBVLCAweDc3MDczMDk2VSwgMHhlZTBlNjEyY1UsIDB4OTkwOTUxYmFVLCAweDA3NmRjNDE5VSwKIDB4NzA2YWY0OGZVLCAweGU5NjNhNTM1VSwgMHg5ZTY0OTVhM1UsIDB4MGVkYjg4MzJVLCAweDc5ZGNiOGE0VSwKIDB4ZTBkNWU5MWVVLCAweDk3ZDJkOTg4VSwgMHgwOWI2NGMyYlUsIDB4N2ViMTdjYmRVLCAweGU3YjgyZDA3VSwKQEAgLTEwNzMsNyArMTA1OCw3IEBACiAjaWZkZWYgVVNFX1pMSUJfQ1JDMzIKIC8qIFRoaXMgd2FzIHRha2VuIGZyb20gemxpYm1vZHVsZS5jIFB5WmxpYl9jcmMzMiAoYnV0IGlzIFBZX1NTSVpFX1RfQ0xFQU4pICovCiB7Ci0gICAgQnl0ZSAqYnVmOworICAgIGNvbnN0IEJ5dGUgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgc2lnbmVkX3ZhbDsKIApAQCAtMTA4NCw3ICsxMDY5LDcgQEAKIH0KICNlbHNlICAvKiBVU0VfWkxJQl9DUkMzMiAqLwogeyAvKiBCeSBKaW0gQWhsc3Ryb207IEFsbCByaWdodHMgdHJhbnNmZXJyZWQgdG8gQ05SSSAqLwotICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIHVuc2lnbmVkIGludCByZXN1bHQ7CiAKQEAgLTExNjcsNyArMTE1Miw3IEBACiBiaW5hc2NpaV9hMmJfaGV4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpoZXhzdHIpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGNjMWExMzlhZjBlZWVjYiBpbnB1dD05ZTFlN2YyZjk0ZGIyNGZkXSovCiB7Ci0gICAgY2hhciogYXJnYnVmOworICAgIGNvbnN0IGNoYXIqIGFyZ2J1ZjsKICAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogICAgIGNoYXIqIHJldGJ1ZjsKQEAgLTEyMjQsNyArMTIwOSw3IEBACiAgICAgcmV0dXJuIGJpbmFzY2lpX2EyYl9oZXhfaW1wbChtb2R1bGUsIGhleHN0cik7CiB9CiAKLXN0YXRpYyBpbnQgdGFibGVfaGV4WzEyOF0gPSB7CitzdGF0aWMgY29uc3QgaW50IHRhYmxlX2hleFsxMjhdID0gewogICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLApAQCAtMTI1NSw3ICsxMjQwLDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGluLCBvdXQ7CiAgICAgY2hhciBjaDsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqb2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpvZGF0YTsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4gPSAwOwogICAgIFB5T2JqZWN0ICpydjsKIApAQCAtMTM2MiwxMyArMTM0OCwxNCBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU5ODg0NDcyZWJiMWE5NGMgaW5wdXQ9N2YyYTlhYWEwMDhlOTJiMl0qLwogewogICAgIFB5X3NzaXplX3QgaW4sIG91dDsKLSAgICB1bnNpZ25lZCBjaGFyICpkYXRhYnVmLCAqb2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YWJ1ZjsKKyAgICB1bnNpZ25lZCBjaGFyICpvZGF0YTsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4gPSAwLCBvZGF0YWxlbiA9IDA7CiAgICAgUHlPYmplY3QgKnJ2OwogICAgIHVuc2lnbmVkIGludCBsaW5lbGVuID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIGNoOwogICAgIGludCBjcmxmID0gMDsKLSAgICB1bnNpZ25lZCBjaGFyICpwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CiAKICAgICBkYXRhYnVmID0gZGF0YS0+YnVmOwogICAgIGRhdGFsZW4gPSBkYXRhLT5sZW47CkBAIC0xMzc3LDcgKzEzNjQsNyBAQAogICAgIC8qIFhYWDogdGhpcyBmdW5jdGlvbiBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIGNvbnZlcnRpbmcgYWxsIG9mCiAgICAgICogdGhlIGVuZCBvZiBsaW5lcyB0byBiZSB0aGUgc2FtZSBkZXBlbmRpbmcgb24gdGhpcyBkZXRlY3Rpb24KICAgICAgKiBoZXJlICovCi0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopIG1lbWNocihkYXRhYnVmLCAnXG4nLCBkYXRhbGVuKTsKKyAgICBwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbWVtY2hyKGRhdGFidWYsICdcbicsIGRhdGFsZW4pOwogICAgIGlmICgocCAhPSBOVUxMKSAmJiAocCA+IGRhdGFidWYpICYmICgqKHAtMSkgPT0gJ1xyJykpCiAgICAgICAgIGNybGYgPSAxOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaAppbmRleCA4YTQ3ZmY4Li44NGZmZDEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKQEAgLTE0LDcgKzE0LDcgQEAKICJyZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19FTkNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKQEAgLTIyLDE2ICsyMiwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHo6ZW5jb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98ejplbmNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01MCw3ICs1Miw3IEBACiAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXMgYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy5cIiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKQEAgLTU4LDIyICs2MCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KLSAgICBpZiAoaW5wdXQub2JqKQorICAgIGlmIChpbnB1dC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg0LDcgKzg5LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTEVOQ09ERVJfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCkBAIC05MiwxNiArOTcsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xpOmVuY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZW5jb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGZpbmFsKTsKIAogZXhpdDoKQEAgLTEzMSw3ICsxMzgsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKQEAgLTEzOSwyMiArMTQ2LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGk6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgaW5wdXQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGZpbmFsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgJmlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KLSAgICBpZiAoaW5wdXQub2JqKQorICAgIGlmIChpbnB1dC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE5Niw4ICsyMDYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplb2JqKSkKKyAgICAgICAgJnNpemVvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoc2VsZiwgc2l6ZW9iaik7CiAKIGV4aXQ6CkBAIC0yMjQsOCArMjM1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnNpemVvYmopKQorICAgICAgICAmc2l6ZW9iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZW9iaik7CiAKIGV4aXQ6CkBAIC0yNTIsOCArMjY0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplaGludG9iaikpCisgICAgICAgICZzaXplaGludG9iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKHNlbGYsIHNpemVoaW50b2JqKTsKIAogZXhpdDoKQEAgLTMxNyw0ICszMzAsNCBAQAogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19fX0NSRUFURV9DT0RFQ19NRVRIT0RERUYgICAgXAogICAgIHsiX19jcmVhdGVfY29kZWMiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjLCBNRVRIX08sIF9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlY19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVlYmIyMWUxOGMzMDQzZDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzNGI5ZTM2Y2I5ODU5MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAppbmRleCAzZWQ4MzAzLi4xY2E4MTBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaApAQCAtMjUsMTQgKzI1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODAsMTEgKzgyLDEzIEBACiAgICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OwogCiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJDb21wcmVzc29yX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyQ29tcHJlc3NvciIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyQ29tcHJlc3NvciIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOkJaMkNvbXByZXNzb3IiLAotICAgICAgICAmY29tcHJlc3NsZXZlbCkpCisgICAgICAgICZjb21wcmVzc2xldmVsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyQ29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChCWjJDb21wcmVzc29yICopc2VsZiwgY29tcHJlc3NsZXZlbCk7CiAKIGV4aXQ6CkBAIC0xMTEsMjkgKzExNSwzMiBAQAogInRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CiAKICNkZWZpbmUgX0JaMl9CWjJERUNPTVBSRVNTT1JfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGggPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTU1LDE0ICsxNjIsMTYgQEAKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CiAKICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJkJaMkRlY29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiQloyRGVjb21wcmVzc29yIiwgYXJncykpCisgICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJCWjJEZWNvbXByZXNzb3IiLCBhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmQloyRGVjb21wcmVzc29yX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyRGVjb21wcmVzc29yIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCWjJEZWNvbXByZXNzb3IiLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJEZWNvbXByZXNzb3JfX19pbml0X19faW1wbCgoQloyRGVjb21wcmVzc29yICopc2VsZik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWYyOWI3NmIzMzE0ZmM3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZTU3YWYwYjM2OGQzZTU1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKaW5kZXggYWYwNmM2ZC4uMDU2Mjg3ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplbmNvZGluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXAiLCAmZW5jb2RpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXAiLCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sb29rdXBfaW1wbChtb2R1bGUsIGVuY29kaW5nKTsKIAogZXhpdDoKQEAgLTU0LDI0ICs1NSwyNiBAQAogImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CiAKICNkZWZpbmUgX0NPREVDU19FTkNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2VuY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9jb2RlY3NfZW5jb2RlX19kb2NfX30sCisgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lbmNvZGUsIE1FVEhfRkFTVENBTEwsIF9jb2RlY3NfZW5jb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2NvZGVjc19lbmNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfY29kZWNzX2VuY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNzOmVuY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm9iajsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c3M6ZW5jb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19lbmNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC05MSwyNCArOTQsMjYgQEAKICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9DT0RFQ1NfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfY29kZWNzX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfY29kZWNzX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19kZWNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2NvZGVjc19kZWNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzczpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNzOmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZGVjb2RlX2ltcGwobW9kdWxlLCBvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTMzLDggKzEzOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6X2ZvcmdldF9jb2RlYyIsICZlbmNvZGluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOl9mb3JnZXRfY29kZWMiLCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC0xNjEsMTQgKzE2NywxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6ZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xOTMsOCArMjAxLDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXx6OmVzY2FwZV9lbmNvZGUiLAotICAgICAgICAmUHlCeXRlc19UeXBlLCAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZQeUJ5dGVzX1R5cGUsICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTIyMSw4ICsyMzAsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2RlY29kZSIsCi0gICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICAmb2JqLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9kZWNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTI1MCwxNCArMjYwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzdfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfN19kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODMsMTQgKzI5NSwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl84X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzhfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzE2LDE0ICszMzAsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzQ5LDE0ICszNjUsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfbGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfbGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzgyLDE0ICs0MDAsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfYmVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfYmVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDE3LDE0ICs0MzcsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aWk6dXRmXzE2X2V4X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDUwLDE0ICs0NzIsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMzJfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDgzLDE0ICs1MDcsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMzJfbGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTE2LDE0ICs1NDIsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMzJfYmVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTUxLDE0ICs1NzksMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aWk6dXRmXzMyX2V4X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTgzLDE0ICs2MTMsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnVuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTYxNSwxNCArNjQ3LDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejpyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY0NywxNCArNjgxLDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejpsYXRpbl8xX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjc5LDE0ICs3MTUsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmFzY2lpX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19hc2NpaV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTcxMiwxOSArNzUwLDIxIEBACiAgICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6TzpjaGFybWFwX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmbWFwcGluZykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmbWFwcGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBtYXBwaW5nKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX21iY3NfZGVjb2RlX19kb2NfXywKICJtYmNzX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCkBAIC03NDcsMjEgKzc4Nyw2MiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOm1iY3NfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19tYmNzX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3Nfb2VtX2RlY29kZV9fZG9jX18sCisib2VtX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsib2VtX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX29lbV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19vZW1fZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9kZWNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9kZWNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTpvZW1fZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX29lbV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX18sCiAiY29kZV9wYWdlX2RlY29kZSgkbW9kdWxlLCBjb2RlcGFnZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgpAQCAtNzg1LDE5ICs4NjYsMjEgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSp8emk6Y29kZV9wYWdlX2RlY29kZSIsCi0gICAgICAgICZjb2RlcGFnZSwgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZjb2RlcGFnZSwgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfaW1wbChtb2R1bGUsIGNvZGVwYWdlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCiBQeURvY19TVFJWQVIoX2NvZGVjc19yZWFkYnVmZmVyX2VuY29kZV9fZG9jX18sCiAicmVhZGJ1ZmZlcl9lbmNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCkBAIC04MTksMTQgKzkwMiwxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmVhZGJ1ZmZlcl9lbmNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg1MSw4ICs5MzYsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2VuY29kZSIsCi0gICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICAmb2JqLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTg3OCw5ICs5NjQsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfN19lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfN19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC05MDYsOSArOTkzLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzhfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzhfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTM1LDkgKzEwMjMsMTAgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8xNl9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8emk6dXRmXzE2X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKIAogZXhpdDoKQEAgLTk2Myw5ICsxMDUyLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2xlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl8xNl9sZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2xlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTkxLDkgKzEwODEsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfYmVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzE2X2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMDIwLDkgKzExMTEsMTAgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8zMl9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8emk6dXRmXzMyX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKIAogZXhpdDoKQEAgLTEwNDgsOSArMTE0MCwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8zMl9sZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMzJfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEwNzYsOSArMTE2OSwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8zMl9iZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMzJfYmVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExMDQsOSArMTE5OCwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnVuaWNvZGVfZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExMzIsOSArMTIyNywxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejpyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExNjAsOSArMTI1NiwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmxhdGluXzFfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6bGF0aW5fMV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExODgsOSArMTI4NSwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmFzY2lpX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OmFzY2lpX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEyMTcsOSArMTMxNSwxMCBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHpPOmNoYXJtYXBfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6TzpjaGFybWFwX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY2hhcm1hcF9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzLCBtYXBwaW5nKTsKIAogZXhpdDoKQEAgLTEyNDMsMTUgKzEzNDIsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbWFwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmNoYXJtYXBfYnVpbGQiLCAmbWFwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Y2hhcm1hcF9idWlsZCIsICZtYXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2J1aWxkX2ltcGwobW9kdWxlLCBtYXApOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX21iY3NfZW5jb2RlX19kb2NfXywKICJtYmNzX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgpAQCAtMTI3MSwxOCArMTM3MSw1MSBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6Om1iY3NfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6bWJjc19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2NvZGVjc19vZW1fZW5jb2RlX19kb2NfXywKKyJvZW1fZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsib2VtX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX29lbV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19vZW1fZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZW5jb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6Om9lbV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3Nfb2VtX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfX2RvY19fLAogImNvZGVfcGFnZV9lbmNvZGUoJG1vZHVsZSwgY29kZV9wYWdlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgpAQCAtMTMwNCwxNiArMTQzNywxNyBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKLSAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpVXx6OmNvZGVfcGFnZV9lbmNvZGUiLAorICAgICAgICAmY29kZV9wYWdlLCAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9pbXBsKG1vZHVsZSwgY29kZV9wYWdlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfX2RvY19fLAogInJlZ2lzdGVyX2Vycm9yKCRtb2R1bGUsIGVycm9ycywgaGFuZGxlciwgLylcbiIKQEAgLTEzNDAsOCArMTQ3NCw5IEBACiAgICAgUHlPYmplY3QgKmhhbmRsZXI7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOnJlZ2lzdGVyX2Vycm9yIiwKLSAgICAgICAgJmVycm9ycywgJmhhbmRsZXIpKQorICAgICAgICAmZXJyb3JzLCAmaGFuZGxlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwobW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIpOwogCiBleGl0OgpAQCAtMTM2OSw4ICsxNTA0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cF9lcnJvciIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwX2Vycm9yIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sb29rdXBfZXJyb3JfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTM4MSw2ICsxNTE3LDEwIEBACiAgICAgI2RlZmluZSBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfTUJDU19ERUNPREVfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGKSAqLwpAQCAtMTM4OSw3ICsxNTI5LDExIEBACiAgICAgI2RlZmluZSBfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQyZmVkOTRlMmFiNzY1YmEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZkNmFmY2FiZGUxMGVkNzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKaW5kZXggYTNjMzcxYy4uNDEyYzZmZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCkBAIC0yNywxMSArMjcsMTIgQEAKICAgICBjb25zdCBjaGFyICpzYWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzczpjcnlwdCIsCi0gICAgICAgICZ3b3JkLCAmc2FsdCkpCisgICAgICAgICZ3b3JkLCAmc2FsdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjcnlwdF9jcnlwdF9pbXBsKG1vZHVsZSwgd29yZCwgc2FsdCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDQ5M2E5NjkxNTM3NjkwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZGZjODgyNjRlNjYyZGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKaW5kZXggNWUxMTc0Mi4uNjJmZjFjOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKQEAgLTQwLDIyICs0MCwyNiBAQAogCiAgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzphZGRjaCIsICZjaCkpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86YWRkY2giLCAmY2gpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w6YWRkY2giLCAmY2gsICZhdHRyKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w6YWRkY2giLCAmY2gsICZhdHRyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU86YWRkY2giLCAmeSwgJngsICZjaCkpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPbDphZGRjaCIsICZ5LCAmeCwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpT2w6YWRkY2giLCAmeSwgJngsICZjaCwgJmF0dHIpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CiAgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02OCw0ICs3Miw0IEBACiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgyYjFlNzA5NTc3ZjNlYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTNmZmM1ZjhkNzljYmZiZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaAppbmRleCA2ODhjOTAzLi5kY2I5OTJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKQEAgLTE0LDI0ICsxNCwyNiBAQAogIklmIG5vIHR6IGlzIHNwZWNpZmllZCwgdXNlcyBsb2NhbCB0aW1lem9uZS4iKTsKIAogI2RlZmluZSBEQVRFVElNRV9EQVRFVElNRV9OT1dfTUVUSE9EREVGICAgIFwKLSAgICB7Im5vdyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9kYXRldGltZV9ub3csIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfE1FVEhfQ0xBU1MsIGRhdGV0aW1lX2RhdGV0aW1lX25vd19fZG9jX199LAorICAgIHsibm93IiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2RhdGV0aW1lX25vdywgTUVUSF9GQVNUQ0FMTHxNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnR6KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZGF0ZXRpbWVfZGF0ZXRpbWVfbm93KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpub3ciLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0eiA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpub3ciLCBfa2V5d29yZHMsCi0gICAgICAgICZ0eikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0eikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbCh0eXBlLCB0eik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjQ1YzY3MGQ2ZTQ5NTNhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YWFhYzA3MDVhZGQ2MWNhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKaW5kZXggNDljYmNlYi4uMDZjZjdlNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKQEAgLTYwLDggKzYwLDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfE86Z2V0IiwKLSAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX2dldF9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC05Myw4ICs5NCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3xPOnNldGRlZmF1bHQiLAotICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2RibV9kYm1fc2V0ZGVmYXVsdF9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzEsMTEgKzEzMywxMiBAQAogICAgIGludCBtb2RlID0gNDM4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzfHNpOm9wZW4iLAotICAgICAgICAmZmlsZW5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICAmZmlsZW5hbWUsICZmbGFncywgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZGJtb3Blbl9pbXBsKG1vZHVsZSwgZmlsZW5hbWUsIGZsYWdzLCBtb2RlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmZjEyZjE2OGNkZjhiNDMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5YWRmOTY2ZWYwNDc1ZmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaCBiL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKaW5kZXggODZiNGM0Yy4uMWIzMDljZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOmFwcGVuZCIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOmFwcGVuZCIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOwogCiBleGl0OgpAQCAtODcsOCArODgsOSBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX2ltcGwoc2VsZik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTEzNCwyMyArMTM2LDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX19kb2NfX30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOmZpbmQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMTYzLDcgKzE2Nyw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EVEVYVF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9fZG9jX199LAorICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLApAQCAtMTcxLDE3ICsxNzUsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRlZmF1bHQiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98T086ZmluZHRleHQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9POmZpbmR0ZXh0IiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJmRlZmF1bHRfdmFsdWUsICZuYW1lc3BhY2VzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9pbXBsKHNlbGYsIHBhdGgsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMTk0LDIzICsyMDAsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRBTExfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfX2RvY19ffSwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86ZmluZGFsbCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmZpbmRhbGwiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcyk7CiAKIGV4aXQ6CkBAIC0yMjMsMjMgKzIzMSwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUkZJTkRfTUVUSE9EREVGICAgIFwKLSAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKKyAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86aXRlcmZpbmQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMjUyLDIzICsyNjIsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2dldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9fZG9jX199LAorICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2dldCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOmdldCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmtleTsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86Z2V0IiwgX2tleXdvcmRzLAotICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yOTgsMjEgKzMxMCwyMyBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUl9NRVRIT0RERUYgICAgXAotICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidGFnIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidGFnIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86aXRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhZyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzppdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmdGFnKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnRhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoc2VsZiwgdGFnKTsKIAogZXhpdDoKQEAgLTM1Niw4ICszNzAsOSBAQAogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTyE6aW5zZXJ0IiwKLSAgICAgICAgJmluZGV4LCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQpOwogCiBleGl0OgpAQCAtNDE5LDggKzQzNCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJtYWtlZWxlbWVudCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZ0YWcsICZhdHRyaWIpKQorICAgICAgICAmdGFnLCAmYXR0cmliKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoc2VsZiwgdGFnLCBhdHRyaWIpOwogCiBleGl0OgpAQCAtNDQ0LDggKzQ2MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOwogCiBleGl0OgpAQCAtNDczLDggKzQ5MCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXQiLAogICAgICAgICAyLCAyLAotICAgICAgICAma2V5LCAmdmFsdWUpKQorICAgICAgICAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoc2VsZiwga2V5LCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00ODksMTIgKzUwNywxNCBAQAogX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbGVtZW50X2ZhY3RvcnkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbGVtZW50X2ZhY3RvcnkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpUcmVlQnVpbGRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpUcmVlQnVpbGRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfX19pbXBsKChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGYsIGVsZW1lbnRfZmFjdG9yeSk7CiAKIGV4aXQ6CkBAIC01NTUsOCArNTc1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0YXJ0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJnRhZywgJmF0dHJzKSkKKyAgICAgICAgJnRhZywgJmF0dHJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydF9pbXBsKHNlbGYsIHRhZywgYXR0cnMpOwogCiBleGl0OgpAQCAtNTcxLDE0ICs1OTIsMTYgQEAKIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaHRtbCIsICJ0YXJnZXQiLCAiZW5jb2RpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmh0bWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp0YXJnZXQgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT3o6WE1MUGFyc2VyIiwgX2tleXdvcmRzLAotICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfX19pbXBsKChYTUxQYXJzZXJPYmplY3QgKilzZWxmLCBodG1sLCB0YXJnZXQsIGVuY29kaW5nKTsKIAogZXhpdDoKQEAgLTY0MCw4ICs2NjMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZG9jdHlwZSIsCiAgICAgICAgIDMsIDMsCi0gICAgICAgICZuYW1lLCAmcHViaWQsICZzeXN0ZW0pKQorICAgICAgICAmbmFtZSwgJnB1YmlkLCAmc3lzdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOwogCiBleGl0OgpAQCAtNjY4LDEyICs2OTIsMTQgQEAKICAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOwogICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8Tzpfc2V0ZXZlbnRzIiwKLSAgICAgICAgJlB5TGlzdF9UeXBlLCAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiX3NldGV2ZW50cyIsCisgICAgICAgIDEsIDIsCisgICAgICAgICZldmVudHNfcXVldWUsICZldmVudHNfdG9fcmVwb3J0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKHNlbGYsIGV2ZW50c19xdWV1ZSwgZXZlbnRzX3RvX3JlcG9ydCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNWI4YmY3ZTdmMjE1MWNhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNGE1NzFhOThjZWQzMTYzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaAppbmRleCAyZDg3Y2ZjLi5mZGQ1ODljIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oCkBAIC0yMyw4ICsyMyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLAogICAgICAgICAxLCAyLAotICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9nZGJtX2dkYm1fZ2V0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUzLDggKzU0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGRlZmF1bHQiLAogICAgICAgICAxLCAyLAotICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9nZGJtX2dkYm1fc2V0ZGVmYXVsdF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNDcsOCArMTQ5LDkgQEAKICAgICBjb25zdCBjaGFyICprZXk7CiAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzIzpuZXh0a2V5IiwgJmtleSwgJmtleV9sZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bmV4dGtleSIsICZrZXksICZrZXlfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9nZGJtX2dkYm1fbmV4dGtleV9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC0yNDIsMTEgKzI0NSwxMiBAQAogICAgIGludCBtb2RlID0gNDM4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzfHNpOm9wZW4iLAotICAgICAgICAmbmFtZSwgJmZsYWdzLCAmbW9kZSkpCisgICAgICAgICZuYW1lLCAmZmxhZ3MsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIG5hbWUsIGZsYWdzLCBtb2RlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhYzdhODk4NThhOTc2NWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVkMGY1ZDRlM2Q3OWI4MGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2hhc2hvcGVuc3NsLmMuaCBiL01vZHVsZXMvY2xpbmljL19oYXNob3BlbnNzbC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0NTM1MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19oYXNob3BlbnNzbC5jLmgKQEAgLTAsMCArMSw2MCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID4gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TQ1JZUFQpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSkKKworUHlEb2NfU1RSVkFSKF9oYXNobGliX3NjcnlwdF9fZG9jX18sCisic2NyeXB0KCRtb2R1bGUsIC8sIHBhc3N3b3JkLCAqLCBzYWx0PU5vbmUsIG49Tm9uZSwgcj1Ob25lLCBwPU5vbmUsXG4iCisiICAgICAgIG1heG1lbT0wLCBka2xlbj02NClcbiIKKyItLVxuIgorIlxuIgorInNjcnlwdCBwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4iKTsKKworI2RlZmluZSBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNjcnlwdCIsIChQeUNGdW5jdGlvbilfaGFzaGxpYl9zY3J5cHQsIE1FVEhfRkFTVENBTEwsIF9oYXNobGliX3NjcnlwdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2hhc2hsaWJfc2NyeXB0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpwYXNzd29yZCwgUHlfYnVmZmVyICpzYWx0LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5fb2JqLCBQeU9iamVjdCAqcl9vYmosIFB5T2JqZWN0ICpwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWF4bWVtLCBsb25nIGRrbGVuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19oYXNobGliX3NjcnlwdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhc3N3b3JkIiwgInNhbHQiLCAibiIsICJyIiwgInAiLCAibWF4bWVtIiwgImRrbGVuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8JHkqTyFPIU8hbGw6c2NyeXB0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9idWZmZXIgcGFzc3dvcmQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHNhbHQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlPYmplY3QgKm5fb2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcl9vYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpwX29iaiA9IFB5X05vbmU7CisgICAgbG9uZyBtYXhtZW0gPSAwOworICAgIGxvbmcgZGtsZW4gPSA2NDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGFzc3dvcmQsICZzYWx0LCAmUHlMb25nX1R5cGUsICZuX29iaiwgJlB5TG9uZ19UeXBlLCAmcl9vYmosICZQeUxvbmdfVHlwZSwgJnBfb2JqLCAmbWF4bWVtLCAmZGtsZW4pKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2hhc2hsaWJfc2NyeXB0X2ltcGwobW9kdWxlLCAmcGFzc3dvcmQsICZzYWx0LCBuX29iaiwgcl9vYmosIHBfb2JqLCBtYXhtZW0sIGRrbGVuKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXNzd29yZCAqLworICAgIGlmIChwYXNzd29yZC5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYXNzd29yZCk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHNhbHQgKi8KKyAgICBpZiAoc2FsdC5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzYWx0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPiAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NDUllQVCkgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpKSAqLworCisjaWZuZGVmIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTExOGNkNzAzNmZhMGZiNTIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCmluZGV4IGY4ZDM4ZWEuLjllNjA3NTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKQEAgLTI1LDE0ICsyNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzksMjkgKzgxLDMyIEBACiAidGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4iKTsKIAogI2RlZmluZSBfTFpNQV9MWk1BREVDT01QUkVTU09SX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLAotICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEzNywxNCArMTQyLDE2IEBACiBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmb3JtYXQiLCAibWVtbGltaXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZvcm1hdCIsICJtZW1saW1pdCIsICJmaWx0ZXJzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZm9ybWF0ID0gRk9STUFUX0FVVE87CiAgICAgUHlPYmplY3QgKm1lbWxpbWl0ID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqZmlsdGVycyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU9POkxaTUFEZWNvbXByZXNzb3IiLCBfa2V5d29yZHMsCi0gICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmZvcm1hdCwgJm1lbWxpbWl0LCAmZmlsdGVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoKERlY29tcHJlc3NvciAqKXNlbGYsIGZvcm1hdCwgbWVtbGltaXQsIGZpbHRlcnMpOwogCiBleGl0OgpAQCAtMTcxLDggKzE3OCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNoZWNrX2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzX2NoZWNrX3N1cHBvcnRlZCIsICZjaGVja19pZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzX2NoZWNrX3N1cHBvcnRlZCIsICZjaGVja19pZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9pc19jaGVja19zdXBwb3J0ZWRfaW1wbChtb2R1bGUsIGNoZWNrX2lkKTsKIAogZXhpdDoKQEAgLTE5OSw4ICsyMDcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGx6bWFfZmlsdGVyIGZpbHRlciA9IHtMWk1BX1ZMSV9VTktOT1dOLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgbHptYV9maWx0ZXJfY29udmVydGVyLCAmZmlsdGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChtb2R1bGUsIGZpbHRlcik7CiAKIGV4aXQ6CkBAIC0yMzQsMTUgKzI0MywxNyBAQAogICAgIFB5X2J1ZmZlciBlbmNvZGVkX3Byb3BzID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnkqOl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAotICAgICAgICBsem1hX3ZsaV9jb252ZXJ0ZXIsICZmaWx0ZXJfaWQsICZlbmNvZGVkX3Byb3BzKSkKKyAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXJfaWQsICZlbmNvZGVkX3Byb3BzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBlbmNvZGVkX3Byb3BzICovCi0gICAgaWYgKGVuY29kZWRfcHJvcHMub2JqKQorICAgIGlmIChlbmNvZGVkX3Byb3BzLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmVuY29kZWRfcHJvcHMpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmFkYTA2MDIwZmQzMThjYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjI3YWJhZTQ2MDEyMjcwNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaCBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCmluZGV4IGE1ZjY0NDIuLjUxM2NiZmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCkBAIC0yMywxNCArMjMsMTYgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxPOnN0YWNrX2VmZmVjdCIsCi0gICAgICAgICZvcGNvZGUsICZvcGFyZykpCisgICAgICAgICZvcGNvZGUsICZvcGFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODRkNmRlMTQwMzAzZDEwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDkxYzZhNzY1MDk3ODUzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmgKaW5kZXggYmQxMmQyYS4uOWFkNGMzNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmgKQEAgLTUzLDggKzUzLDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9QaWNrbGVyX19fc2l6ZW9mX19faW1wbChzZWxmKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtOTIsMTQgKzkzLDE2IEBACiBfcGlja2xlX1BpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBQeU9iamVjdCAqcHJvdG9jb2wgPSBOVUxMOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9wOlBpY2tsZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fX2ltcGwoKFBpY2tsZXJPYmplY3QgKilzZWxmLCBmaWxlLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwogCiBleGl0OgpAQCAtMjEyLDggKzIxNSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJmaW5kX2NsYXNzIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm1vZHVsZV9uYW1lLCAmZ2xvYmFsX25hbWUpKQorICAgICAgICAmbW9kdWxlX25hbWUsICZnbG9iYWxfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzX2ltcGwoc2VsZiwgbW9kdWxlX25hbWUsIGdsb2JhbF9uYW1lKTsKIAogZXhpdDoKQEAgLTIzOSw4ICsyNDMsOSBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfcGlja2xlX1VucGlja2xlcl9fX3NpemVvZl9fX2ltcGwoc2VsZik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI4MSwxNSArMjg2LDE3IEBACiBfcGlja2xlX1VucGlja2xlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpVbnBpY2tsZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOlVucGlja2xlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZpbGUsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX1VucGlja2xlcl9fX2luaXRfX19pbXBsKChVbnBpY2tsZXJPYmplY3QgKilzZWxmLCBmaWxlLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0zNzcsMjUgKzM4NCwyNyBAQAogIjIsIHNvIHRoYXQgdGhlIHBpY2tsZSBkYXRhIHN0cmVhbSBpcyByZWFkYWJsZSB3aXRoIFB5dGhvbiAyLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfRFVNUF9NRVRIT0RERUYgICAgXAotICAgIHsiZHVtcCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2R1bXBfX2RvY19ffSwKKyAgICB7ImR1bXAiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2R1bXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfZHVtcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmaWxlLAogICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9kdW1wKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2R1bXBfaW1wbChtb2R1bGUsIG9iaiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTQyMSwyNCArNDMwLDI2IEBACiAiUHl0aG9uIDIsIHNvIHRoYXQgdGhlIHBpY2tsZSBkYXRhIHN0cmVhbSBpcyByZWFkYWJsZSB3aXRoIFB5dGhvbiAyLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfRFVNUFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1bXBzIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2R1bXBzX19kb2NfX30sCisgICAgeyJkdW1wcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXBzLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2R1bXBzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2R1bXBzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9kdW1wcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib2JqIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9kdW1wc19pbXBsKG1vZHVsZSwgb2JqLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwogCiBleGl0OgpAQCAtNDc1LDI1ICs0ODYsMjcgQEAKICJzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuIik7CiAKICNkZWZpbmUgX1BJQ0tMRV9MT0FEX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfbG9hZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfbG9hZF9fZG9jX199LAorICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfRkFTVENBTEwsIF9waWNrbGVfbG9hZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9sb2FkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9sb2FkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRfaW1wbChtb2R1bGUsIGZpbGUsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTUyMSwyOCArNTM0LDMwIEBACiAic3RyaW5nIGluc3RhbmNlcyBhcyBieXRlcyBvYmplY3RzLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfTE9BRFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImxvYWRzIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfbG9hZHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRzX19kb2NfX30sCisgICAgeyJsb2FkcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWRzLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2xvYWRzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2xvYWRzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsIGludCBmaXhfaW1wb3J0cywKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfcGlja2xlX2xvYWRzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3wkcHNzOmxvYWRzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZGF0YTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfbG9hZHNfaW1wbChtb2R1bGUsIGRhdGEsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzNjU3ZTU1ZDZhNzQ4YWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgyYmUxMzdiM2MwOWNiOWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaAppbmRleCAzMjgxNzE3Li4wNjEyMDA1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaApAQCAtMjAsOCArMjAsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0Y29kZXNpemVfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00OCwxMSArNDksMTMgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Z2V0bG93ZXIiLAotICAgICAgICAmY2hhcmFjdGVyLCAmZmxhZ3MpKQorICAgICAgICAmY2hhcmFjdGVyLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0bG93ZXJfaW1wbChtb2R1bGUsIGNoYXJhY3RlciwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02Niw3ICs2OSw3IEBACiAiTWF0Y2hlcyB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9NQVRDSF9NRVRIT0RERUYgICAgXAotICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9tYXRjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfX2RvY19ffSwKKyAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2gsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLApAQCAtNzQsMTggKzc3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9tYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86bWF0Y2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOwogCiBleGl0OgpAQCAtMTAwLDcgKzEwNSw3IEBACiAiTWF0Y2hlcyBhZ2FpbnN0IGFsbCBvZiB0aGUgc3RyaW5nIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GVUxMTUFUQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7ImZ1bGxtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX19kb2NfX30sCisgICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2gsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xMDgsMTggKzExMywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpmdWxsbWF0Y2giLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpmdWxsbWF0Y2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTEzNiw3ICsxNDMsNyBAQAogIlJldHVybiBOb25lIGlmIG5vIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcgbWF0Y2hlcy4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NFQVJDSF9NRVRIT0RERUYgICAgXAotICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfX2RvY19ffSwKKyAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTE0NCwxOCArMTUxLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9ubiRPOnNlYXJjaCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOnNlYXJjaCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOwogCiBleGl0OgpAQCAtMTcwLDcgKzE3OSw3IEBACiAiUmV0dXJuIGEgbGlzdCBvZiBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GSU5EQUxMX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX199LAorICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTE3OCwxOCArMTg3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9ubiRPOmZpbmRhbGwiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOmZpbmRhbGwiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZzb3VyY2UpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmc291cmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHNvdXJjZSk7CiAKIGV4aXQ6CkBAIC0yMDUsMjQgKzIxNiwyNiBAQAogIkZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZJTkRJVEVSX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX199LAorICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlciwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xubjpmaW5kaXRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bm46ZmluZGl0ZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKIAogZXhpdDoKQEAgLTIzNSwyNCArMjQ4LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NDQU5ORVJfTUVUSE9EREVGICAgIFwKLSAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX19kb2NfX30sCisgICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lciwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bm46c2Nhbm5lciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bm46c2Nhbm5lciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7CiAKIGV4aXQ6CkBAIC0yNjYsMjQgKzI4MSwyNiBAQAogIlNwbGl0IHN0cmluZyBieSB0aGUgb2NjdXJyZW5jZXMgb2YgcGF0dGVybi4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zcGxpdCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCwgUHlPYmplY3QgKnNvdXJjZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NwbGl0KFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zcGxpdChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgIm1heHNwbGl0IiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T24kTzpzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IDA7CiAgICAgUHlPYmplY3QgKnNvdXJjZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T24kTzpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc291cmNlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc291cmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChzZWxmLCBzdHJpbmcsIG1heHNwbGl0LCBzb3VyY2UpOwogCiBleGl0OgpAQCAtMjk3LDI0ICszMTQsMjYgQEAKICJSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQl9NRVRIT0RERUYgICAgXAotICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJfX2RvY19ffSwKKyAgICB7InN1YiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1YiwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zdWJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3N1YihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfG46c3ViIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmVwbDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098bjpzdWIiLCBfa2V5d29yZHMsCi0gICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCk7CiAKIGV4aXQ6CkBAIC0zMjgsMjQgKzM0NywyNiBAQAogIlJldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gd2l0aCB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQk5fTUVUSE9EREVGICAgIFwKLSAgICB7InN1Ym4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJuX19kb2NfX30sCisgICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3VibiwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zdWJuX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT098bjpzdWJuIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmVwbDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098bjpzdWJuIiwgX2tleXdvcmRzLAotICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChzZWxmLCByZXBsLCBzdHJpbmcsIGNvdW50KTsKIAogZXhpdDoKQEAgLTM3NSwyMSArMzk2LDIzIEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19ffSwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXyhQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm1lbW87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm1lbW8pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbWVtbykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKHNlbGYsIG1lbW8pOwogCiBleGl0OgpAQCAtNDAzLDcgKzQyNiw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1JFX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pX3NyZV9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9jb21waWxlX19kb2NfX30sCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9jb21waWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX2NvbXBpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcGF0dGVybiwgaW50IGZsYWdzLApAQCAtNDExLDEwICs0MzQsMTEgQEAKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbmRleGdyb3VwKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0dGVybiIsICJmbGFncyIsICJjb2RlIiwgImdyb3VwcyIsICJncm91cGluZGV4IiwgImluZGV4Z3JvdXAiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXR0ZXJuIiwgImZsYWdzIiwgImNvZGUiLCAiZ3JvdXBzIiwgImdyb3VwaW5kZXgiLCAiaW5kZXhncm91cCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdHRlcm47CiAgICAgaW50IGZsYWdzOwogICAgIFB5T2JqZWN0ICpjb2RlOwpAQCAtNDIyLDkgKzQ0NiwxMCBAQAogICAgIFB5T2JqZWN0ICpncm91cGluZGV4OwogICAgIFB5T2JqZWN0ICppbmRleGdyb3VwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT2lPIW5PTzpjb21waWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0dGVybiwgJmZsYWdzLCAmUHlMaXN0X1R5cGUsICZjb2RlLCAmZ3JvdXBzLCAmZ3JvdXBpbmRleCwgJmluZGV4Z3JvdXApKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0dGVybiwgJmZsYWdzLCAmUHlMaXN0X1R5cGUsICZjb2RlLCAmZ3JvdXBzLCAmZ3JvdXBpbmRleCwgJmluZGV4Z3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9jb21waWxlX2ltcGwobW9kdWxlLCBwYXR0ZXJuLCBmbGFncywgY29kZSwgZ3JvdXBzLCBncm91cGluZGV4LCBpbmRleGdyb3VwKTsKIAogZXhpdDoKQEAgLTQzOCwyMSArNDYzLDIzIEBACiAiUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgZG9pbmcgYmFja3NsYXNoIHN1YnN0aXR1dGlvbiBvbiB0aGUgc3RyaW5nIHRlbXBsYXRlLCBhcyBkb25lIGJ5IHRoZSBzdWIoKSBtZXRob2QuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfRVhQQU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJleHBhbmQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZXhwYW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX19kb2NfX30sCisgICAgeyJleHBhbmQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZXhwYW5kLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9leHBhbmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGVtcGxhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfZXhwYW5kKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX2V4cGFuZChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRlbXBsYXRlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidGVtcGxhdGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOmV4cGFuZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRlbXBsYXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpleHBhbmQiLCBfa2V5d29yZHMsCi0gICAgICAgICZ0ZW1wbGF0ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0ZW1wbGF0ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChzZWxmLCB0ZW1wbGF0ZSk7CiAKIGV4aXQ6CkBAIC00NjksMjEgKzQ5NiwyMyBAQAogIiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9HUk9VUFNfTUVUSE9EREVGICAgIFwKLSAgICB7Imdyb3VwcyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9ncm91cHNfX2RvY19ffSwKKyAgICB7Imdyb3VwcyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cHMsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX01hdGNoX2dyb3VwcyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9NYXRjaF9ncm91cHMoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOmdyb3VwcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Z3JvdXBzIiwgX2tleXdvcmRzLAotICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2dyb3Vwc19pbXBsKHNlbGYsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtNTAwLDIxICs1MjksMjMgQEAKICIgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfR1JPVVBESUNUX01FVEhPRERFRiAgICBcCi0gICAgeyJncm91cGRpY3QiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfX30sCisgICAgeyJncm91cGRpY3QiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0LCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpncm91cGRpY3QiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwZGljdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU0MiwxMSArNTczLDEzIEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZncm91cCkpCisgICAgICAgICZncm91cCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfc3RhcnRfaW1wbChzZWxmLCBncm91cCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU3NCwxMSArNjA3LDEzIEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJlbmQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmZ3JvdXApKQorICAgICAgICAmZ3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2VuZF9pbXBsKHNlbGYsIGdyb3VwKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjA1LDggKzY0MCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzcGFuIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgJmdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX3NwYW5faW1wbChzZWxmLCBncm91cCk7CiAKIGV4aXQ6CkBAIC02MzYsMjEgKzY3MiwyMyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfX19ERUVQQ09QWV9fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfX30sCisgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbWVtbyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X18oTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm1lbW87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm1lbW8pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbWVtbykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChzZWxmLCBtZW1vKTsKIAogZXhpdDoKQEAgLTY5MCw0ICs3MjgsNCBAQAogewogICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9pbXBsKHNlbGYpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE0Y2U5ZTViNzQ4Y2U1MzIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE0YTI0NmJjYTE5NjNiYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaAppbmRleCA4NTJlMzY1Li4yOWY1ODM4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaApAQCAtMzYsOCArMzYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfdGVzdF9kZWNvZGVfY2VydCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X3Rlc3RfZGVjb2RlX2NlcnQiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtNzEsOCArNzIsOSBAQAogICAgIGludCBiaW5hcnlfbW9kZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOnBlZXJfY2VydGlmaWNhdGUiLAotICAgICAgICAmYmluYXJ5X21vZGUpKQorICAgICAgICAmYmluYXJ5X21vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChzZWxmLCBiaW5hcnlfbW9kZSk7CiAKIGV4aXQ6CkBAIC0yMDksMTQgKzIxMSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoc2VsZiwgJmIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGIgKi8KLSAgICBpZiAoYi5vYmopCisgICAgaWYgKGIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI2MCwxMiArMjY0LDE0IEBACiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmbGVuKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdyo6cmVhZCIsICZsZW4sICZidWZmZXIpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdyo6cmVhZCIsICZsZW4sICZidWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI3Niw4ICsyODIsOSBAQAogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzMyLDExICszMzksMTMgQEAKICAgICBpbnQgcHJvdG9fdmVyc2lvbjsKIAogICAgIGlmICgodHlwZSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiX1NTTENvbnRleHQiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIl9TU0xDb250ZXh0Iiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpfU1NMQ29udGV4dCIsCi0gICAgICAgICZwcm90b192ZXJzaW9uKSkKKyAgICAgICAgJnByb3RvX3ZlcnNpb24pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9pbXBsKHR5cGUsIHByb3RvX3ZlcnNpb24pOwogCiBleGl0OgpAQCAtMzYwLDE0ICszNjksMzYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpjaXBoZXJsaXN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnNldF9jaXBoZXJzIiwgJmNpcGhlcmxpc3QpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpzZXRfY2lwaGVycyIsICZjaXBoZXJsaXN0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnNfaW1wbChzZWxmLCBjaXBoZXJsaXN0KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMKQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19fZG9jX18sCisiZ2V0X2NpcGhlcnMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnMsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAwVUwpICovCisKIFB5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19fZG9jX18sCiAiX3NldF9ucG5fcHJvdG9jb2xzKCRzZWxmLCBwcm90b3MsIC8pXG4iCiAiLS1cbiIKQEAgLTM4NiwxNCArNDE3LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHByb3RvcyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCi0gICAgaWYgKHByb3Rvcy5vYmopCisgICAgaWYgKHByb3Rvcy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MTYsMTQgKzQ0OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBwcm90b3MgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfYWxwbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfYWxwbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKHNlbGYsICZwcm90b3MpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHByb3RvcyAqLwotICAgIGlmIChwcm90b3Mub2JqKQorICAgIGlmIChwcm90b3Mub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDM0LDI0ICs0NjksMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9DRVJUX0NIQUlOX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX199LAorICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpjZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleWZpbGUsIFB5T2JqZWN0ICpwYXNzd29yZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE9POmxvYWRfY2VydF9jaGFpbiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmNlcnRmaWxlOwogICAgIFB5T2JqZWN0ICprZXlmaWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGFzc3dvcmQgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9pbXBsKHNlbGYsIGNlcnRmaWxlLCBrZXlmaWxlLCBwYXNzd29yZCk7CiAKIGV4aXQ6CkBAIC00NjQsNyArNTAxLDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9WRVJJRllfTE9DQVRJT05TX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19fZG9jX199LAorICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCkBAIC00NzMsMTcgKzUxMCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNhZmlsZSIsICJjYXBhdGgiLCAiY2FkYXRhIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9PTzpsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpjYWZpbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjYXBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjYWRhdGEgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9PTzpsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCBfa2V5d29yZHMsCi0gICAgICAgICZjYWZpbGUsICZjYXBhdGgsICZjYWRhdGEpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoc2VsZiwgY2FmaWxlLCBjYXBhdGgsIGNhZGF0YSk7CiAKIGV4aXQ6CkBAIC01MDQsMjQgKzU0MywyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGICAgIFwKLSAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCisgICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQsIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzb2NrIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8haXxPOl93cmFwX3NvY2tldCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNvY2s7CiAgICAgaW50IHNlcnZlcl9zaWRlOwogICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyFpfE86X3dyYXBfc29ja2V0IiwgX2tleXdvcmRzLAotICAgICAgICBQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUsICZzb2NrLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUsICZzb2NrLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfaW1wbChzZWxmLCBzb2NrLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWVfb2JqKTsKIAogZXhpdDoKQEAgLTUzNSw3ICs1NzYsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGICAgIFwKLSAgICB7Il93cmFwX2JpbyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCisgICAgeyJfd3JhcF9iaW8iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8sIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nLApAQCAtNTQzLDE4ICs1ODQsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X193cmFwX2JpbyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyFPIWl8Tzpfd3JhcF9iaW8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5U1NMTWVtb3J5QklPICppbmNvbWluZzsKICAgICBQeVNTTE1lbW9yeUJJTyAqb3V0Z29pbmc7CiAgICAgaW50IHNlcnZlcl9zaWRlOwogICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyFPIWl8Tzpfd3JhcF9iaW8iLCBfa2V5d29yZHMsCi0gICAgICAgICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmaW5jb21pbmcsICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmb3V0Z29pbmcsICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmaW5jb21pbmcsICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmb3V0Z29pbmcsICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGUsIGhvc3RuYW1lX29iaik7CiAKIGV4aXQ6CkBAIC02NTcsMjEgKzcwMCwyMyBAQAogImJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRfY2FfY2VydHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX199LAorICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGludCBiaW5hcnlfZm9ybSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJiaW5hcnlfZm9ybSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGJpbmFyeV9mb3JtID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmJpbmFyeV9mb3JtKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmJpbmFyeV9mb3JtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoc2VsZiwgYmluYXJ5X2Zvcm0pOwogCiBleGl0OgpAQCAtNjg3LDExICs3MzIsMTMgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICgodHlwZSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIk1lbW9yeUJJTyIsIGFyZ3MpKQorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiTWVtb3J5QklPIiwgYXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJNZW1vcnlCSU8iLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9faW1wbCh0eXBlKTsKIAogZXhpdDoKQEAgLTcyMiw4ICs3NjksOSBAQAogICAgIGludCBsZW4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6cmVhZCIsCi0gICAgICAgICZsZW4pKQorICAgICAgICAmbGVuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX3JlYWRfaW1wbChzZWxmLCBsZW4pOwogCiBleGl0OgpAQCAtNzUwLDE0ICs3OTgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGIgKi8KLSAgICBpZiAoYi5vYmopCisgICAgaWYgKGIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwNSwxNCArODU1LDE2IEBACiAgICAgZG91YmxlIGVudHJvcHk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqZDpSQU5EX2FkZCIsCi0gICAgICAgICZ2aWV3LCAmZW50cm9weSkpCisgICAgICAgICZ2aWV3LCAmZW50cm9weSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYWRkX2ltcGwobW9kdWxlLCAmdmlldywgZW50cm9weSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgdmlldyAqLwotICAgIGlmICh2aWV3Lm9iaikKKyAgICBpZiAodmlldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODM1LDggKzg4Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9ieXRlcyIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9ieXRlcyIsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9ieXRlc19pbXBsKG1vZHVsZSwgbik7CiAKIGV4aXQ6CkBAIC04NjQsOCArOTE3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKIAogZXhpdDoKQEAgLTkxNiw4ICs5NzAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpSQU5EX2VnZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UkFORF9lZ2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9lZ2RfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtOTU2LDIyICsxMDExLDI0IEBACiAibG9uZyBuYW1lIGFyZSBhbHNvIG1hdGNoZWQuIik7CiAKICNkZWZpbmUgX1NTTF9UWFQyT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJ0eHQyb2JqIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfdHh0Mm9iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfdHh0Mm9ial9fZG9jX199LAorICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilfc3NsX3R4dDJvYmosIE1FVEhfRkFTVENBTEwsIF9zc2xfdHh0Mm9ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF90eHQyb2JqX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqdHh0LCBpbnQgbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX3R4dDJvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX3R4dDJvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHh0IiwgIm5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJzfHA6dHh0Mm9iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqdHh0OwogICAgIGludCBuYW1lID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInN8cDp0eHQyb2JqIiwgX2tleXdvcmRzLAotICAgICAgICAmdHh0LCAmbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0eHQsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfdHh0Mm9ial9pbXBsKG1vZHVsZSwgdHh0LCBuYW1lKTsKIAogZXhpdDoKQEAgLTk5Niw4ICsxMDUzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pZDJvYmoiLCAmbmlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmlkMm9iaiIsICZuaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9uaWQyb2JqX2ltcGwobW9kdWxlLCBuaWQpOwogCiBleGl0OgpAQCAtMTAxOSwyMSArMTA3NywyMyBAQAogImEgc2V0IG9mIE9JRHMgb3IgdGhlIGJvb2xlYW4gVHJ1ZS4iKTsKIAogI2RlZmluZSBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRiAgICBcCi0gICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY2VydGlmaWNhdGVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAorICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NlcnRpZmljYXRlcywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9lbnVtX2NlcnRpZmljYXRlcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiczplbnVtX2NlcnRpZmljYXRlcyIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jZXJ0aWZpY2F0ZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdG9yZV9uYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0b3JlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CiAKIGV4aXQ6CkBAIC0xMDU2LDIxICsxMTE2LDIzIEBACiAiWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4iKTsKIAogI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYgICAgXAotICAgIHsiZW51bV9jcmxzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jcmxzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NybHNfX2RvY19ffSwKKyAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9lbnVtX2NybHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfZW51bV9jcmxzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX2VudW1fY3JscyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfZW51bV9jcmxzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NybHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdG9yZV9uYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0b3JlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NybHNfaW1wbChtb2R1bGUsIHN0b3JlX25hbWUpOwogCiBleGl0OgpAQCAtMTA4Nyw2ICsxMTQ5LDEwIEBACiAgICAgI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYpICovCisKICNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYpICovCkBAIC0xMTAyLDQgKzExNjgsNCBAQAogI2lmbmRlZiBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKICAgICAjZGVmaW5lIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZmIxMDU5NGQ4MzUxZGM1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODU5YjIxZmU2OGE2MTE1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaCBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaAppbmRleCA3N2FmMDgzLi5lZGQ1MzgwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqc2NyaXB0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbCIsICZzY3JpcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbF9pbXBsKHNlbGYsIHNjcmlwdCk7CiAKIGV4aXQ6CkBAIC00NCw4ICs0NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZmlsZU5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbGZpbGUiLCAmZmlsZU5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsZmlsZSIsICZmaWxlTmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9pbXBsKHNlbGYsIGZpbGVOYW1lKTsKIAogZXhpdDoKQEAgLTY5LDggKzcxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzY3JpcHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnJlY29yZCIsICZzY3JpcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfcmVjb3JkX2ltcGwoc2VsZiwgc2NyaXB0KTsKIAogZXhpdDoKQEAgLTk0LDggKzk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICptc2c7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6YWRkZXJyaW5mbyIsICZtc2cpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczphZGRlcnJpbmZvIiwgJm1zZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoc2VsZiwgbXNnKTsKIAogZXhpdDoKQEAgLTE0Myw4ICsxNDcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTE2OCw4ICsxNzMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmxvbmciLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJsb25nIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTE5Myw4ICsxOTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmRvdWJsZSIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmRvdWJsZSIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTIxOCw4ICsyMjUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmJvb2xlYW4iLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJib29sZWFuIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmJvb2xlYW5faW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTI2Miw4ICsyNzAsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpjcmVhdGVjb21tYW5kIiwKLSAgICAgICAgJm5hbWUsICZmdW5jKSkKKyAgICAgICAgJm5hbWUsICZmdW5jKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfaW1wbChzZWxmLCBuYW1lLCBmdW5jKTsKIAogZXhpdDoKQEAgLTI4Nyw4ICsyOTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZGVsZXRlY29tbWFuZCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZGVsZXRlY29tbWFuZCIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmRfaW1wbChzZWxmLCBuYW1lKTsKIAogZXhpdDoKQEAgLTMxOCw4ICszMjgsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaU86Y3JlYXRlZmlsZWhhbmRsZXIiLAotICAgICAgICAmZmlsZSwgJm1hc2ssICZmdW5jKSkKKyAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9pbXBsKHNlbGYsIGZpbGUsIG1hc2ssIGZ1bmMpOwogCiBleGl0OgpAQCAtMzc3LDggKzM4OCw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmNyZWF0ZXRpbWVyaGFuZGxlciIsCi0gICAgICAgICZtaWxsaXNlY29uZHMsICZmdW5jKSkKKyAgICAgICAgJm1pbGxpc2Vjb25kcywgJmZ1bmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyX2ltcGwoc2VsZiwgbWlsbGlzZWNvbmRzLCBmdW5jKTsKIAogZXhpdDoKQEAgLTQwMyw4ICs0MTUsOSBAQAogICAgIGludCB0aHJlc2hvbGQgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsCi0gICAgICAgICZ0aHJlc2hvbGQpKQorICAgICAgICAmdGhyZXNob2xkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoc2VsZiwgdGhyZXNob2xkKTsKIAogZXhpdDoKQEAgLTQyOSw4ICs0NDIsOSBAQAogICAgIGludCBmbGFncyA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmRvb25lZXZlbnQiLAotICAgICAgICAmZmxhZ3MpKQorICAgICAgICAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKHNlbGYsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTU1MSw4ICs1NjUsOSBAQAogICAgIGNvbnN0IGNoYXIgKnVzZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInx6c3NpaWlpejpjcmVhdGUiLAotICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLCAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywgJnN5bmMsICZ1c2UpKQorICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLCAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywgJnN5bmMsICZ1c2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfY3JlYXRlX2ltcGwobW9kdWxlLCBzY3JlZW5OYW1lLCBiYXNlTmFtZSwgY2xhc3NOYW1lLCBpbnRlcmFjdGl2ZSwgd2FudG9iamVjdHMsIHdhbnRUaywgc3luYywgdXNlKTsKIAogZXhpdDoKQEAgLTU3OSw4ICs1OTQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuZXdfdmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlLCBuZXdfdmFsKTsKIAogZXhpdDoKQEAgLTYwNiw4ICs2MjIsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02MjEsNCArNjM4LDQgQEAKICNpZm5kZWYgX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjkwNTdjOGJmMjg4NjMzZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODM2YzU3OGI3MWQ2OTA5NyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKaW5kZXggYjgzYjMzZS4uYzE5MmU3MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaApAQCAtMjEsMTEgKzIxLDEyIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9pbXBsKG1vZHVsZSwgb2JqZWN0KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDkwODZjODU3NmQ0NjkzMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTFhZDU4NzE0NzMyM2UxOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaCBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCmluZGV4IGFjMzhkMzcuLjViZmJhZjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHdhaXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInA6R2V0T3ZlcmxhcHBlZFJlc3VsdCIsICZ3YWl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInA6R2V0T3ZlcmxhcHBlZFJlc3VsdCIsICZ3YWl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X2ltcGwoc2VsZiwgd2FpdCk7CiAKIGV4aXQ6CkBAIC03OSw4ICs4MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEFORExFIGhhbmRsZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ2xvc2VIYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSk7CiAKIGV4aXQ6CkBAIC05MywyMyArOTUsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfQ09OTkVDVE5BTUVEUElQRV9NRVRIT0RERUYgICAgXAotICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19ffSwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CkBAIC0xNDcsMTMgKzE1MSwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJza2siIEZfUE9JTlRFUiAia2siIEZfSEFORExFICI6Q3JlYXRlRmlsZSIsCi0gICAgICAgICZmaWxlX25hbWUsICZkZXNpcmVkX2FjY2VzcywgJnNoYXJlX21vZGUsICZzZWN1cml0eV9hdHRyaWJ1dGVzLCAmY3JlYXRpb25fZGlzcG9zaXRpb24sICZmbGFnc19hbmRfYXR0cmlidXRlcywgJnRlbXBsYXRlX2ZpbGUpKQorICAgICAgICAmZmlsZV9uYW1lLCAmZGVzaXJlZF9hY2Nlc3MsICZzaGFyZV9tb2RlLCAmc2VjdXJpdHlfYXR0cmlidXRlcywgJmNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCAmZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsICZ0ZW1wbGF0ZV9maWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUZpbGVfaW1wbChtb2R1bGUsIGZpbGVfbmFtZSwgZGVzaXJlZF9hY2Nlc3MsIHNoYXJlX21vZGUsIHNlY3VyaXR5X2F0dHJpYnV0ZXMsIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTgwLDggKzE4Nyw5IEBACiAgICAgTFBXU1RSIGRzdF9wYXRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1dTpDcmVhdGVKdW5jdGlvbiIsCi0gICAgICAgICZzcmNfcGF0aCwgJmRzdF9wYXRoKSkKKyAgICAgICAgJnNyY19wYXRoLCAmZHN0X3BhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9pbXBsKG1vZHVsZSwgc3JjX3BhdGgsIGRzdF9wYXRoKTsKIAogZXhpdDoKQEAgLTIyMCwxMyArMjI4LDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNra2tra2siIEZfUE9JTlRFUiAiOkNyZWF0ZU5hbWVkUGlwZSIsCi0gICAgICAgICZuYW1lLCAmb3Blbl9tb2RlLCAmcGlwZV9tb2RlLCAmbWF4X2luc3RhbmNlcywgJm91dF9idWZmZXJfc2l6ZSwgJmluX2J1ZmZlcl9zaXplLCAmZGVmYXVsdF90aW1lb3V0LCAmc2VjdXJpdHlfYXR0cmlidXRlcykpCisgICAgICAgICZuYW1lLCAmb3Blbl9tb2RlLCAmcGlwZV9tb2RlLCAmbWF4X2luc3RhbmNlcywgJm91dF9idWZmZXJfc2l6ZSwgJmluX2J1ZmZlcl9zaXplLCAmZGVmYXVsdF90aW1lb3V0LCAmc2VjdXJpdHlfYXR0cmlidXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChtb2R1bGUsIG5hbWUsIG9wZW5fbW9kZSwgcGlwZV9tb2RlLCBtYXhfaW5zdGFuY2VzLCBvdXRfYnVmZmVyX3NpemUsIGluX2J1ZmZlcl9zaXplLCBkZWZhdWx0X3RpbWVvdXQsIHNlY3VyaXR5X2F0dHJpYnV0ZXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI1OCw4ICsyNjksOSBAQAogICAgIERXT1JEIHNpemU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9rOkNyZWF0ZVBpcGUiLAotICAgICAgICAmcGlwZV9hdHRycywgJnNpemUpKQorICAgICAgICAmcGlwZV9hdHRycywgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwobW9kdWxlLCBwaXBlX2F0dHJzLCBzaXplKTsKIAogZXhpdDoKQEAgLTMwOCw4ICszMjAsOSBAQAogICAgIFB5T2JqZWN0ICpzdGFydHVwX2luZm87CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpaT09pa09aTzpDcmVhdGVQcm9jZXNzIiwKLSAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsICZjb21tYW5kX2xpbmUsICZwcm9jX2F0dHJzLCAmdGhyZWFkX2F0dHJzLCAmaW5oZXJpdF9oYW5kbGVzLCAmY3JlYXRpb25fZmxhZ3MsICZlbnZfbWFwcGluZywgJmN1cnJlbnRfZGlyZWN0b3J5LCAmc3RhcnR1cF9pbmZvKSkKKyAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsICZjb21tYW5kX2xpbmUsICZwcm9jX2F0dHJzLCAmdGhyZWFkX2F0dHJzLCAmaW5oZXJpdF9oYW5kbGVzLCAmY3JlYXRpb25fZmxhZ3MsICZlbnZfbWFwcGluZywgJmN1cnJlbnRfZGlyZWN0b3J5LCAmc3RhcnR1cF9pbmZvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19pbXBsKG1vZHVsZSwgYXBwbGljYXRpb25fbmFtZSwgY29tbWFuZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsIGluaGVyaXRfaGFuZGxlcywgY3JlYXRpb25fZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJyZW50X2RpcmVjdG9yeSwgc3RhcnR1cF9pbmZvKTsKIAogZXhpdDoKQEAgLTM1MSwxMyArMzY0LDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIiIgRl9IQU5ETEUgIiIgRl9IQU5ETEUgImtpfGs6RHVwbGljYXRlSGFuZGxlIiwKLSAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwgJnNvdXJjZV9oYW5kbGUsICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmb3B0aW9ucykpCisgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsICZzb3VyY2VfaGFuZGxlLCAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX2ltcGwobW9kdWxlLCBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBvcHRpb25zKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zODEsOCArMzk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBVSU5UIEV4aXRDb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOkV4aXRQcm9jZXNzIiwgJkV4aXRDb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6RXhpdFByb2Nlc3MiLCAmRXhpdENvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9FeGl0UHJvY2Vzc19pbXBsKG1vZHVsZSwgRXhpdENvZGUpOwogCiBleGl0OgpAQCAtNDA4LDEwICs0MjUsMTIgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzcsMTEgKzQ1NiwxMyBAQAogICAgIEhBTkRMRSBwcm9jZXNzOwogICAgIERXT1JEIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX2ltcGwobW9kdWxlLCBwcm9jZXNzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NjYsOCArNDg3LDkgQEAKICAgICBEV09SRCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TGFzdEVycm9yX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00OTksOCArNTIxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBITU9EVUxFIG1vZHVsZV9oYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsICZtb2R1bGVfaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsICZtb2R1bGVfaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWVfaW1wbChtb2R1bGUsIG1vZHVsZV9oYW5kbGUpOwogCiBleGl0OgpAQCAtNTMxLDEzICs1NTQsMTYgQEAKICAgICBEV09SRCBzdGRfaGFuZGxlOwogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJrOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIms6R2V0U3RkSGFuZGxlIiwgJnN0ZF9oYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0U3RkSGFuZGxlX2ltcGwobW9kdWxlLCBzdGRfaGFuZGxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NjMsOCArNTg5LDkgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTkzLDEzICs2MjAsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAia2lrOk9wZW5Qcm9jZXNzIiwKLSAgICAgICAgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZwcm9jZXNzX2lkKSkKKyAgICAgICAgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZwcm9jZXNzX2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX09wZW5Qcm9jZXNzX2ltcGwobW9kdWxlLCBkZXNpcmVkX2FjY2VzcywgaW5oZXJpdF9oYW5kbGUsIHByb2Nlc3NfaWQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTYyNSw4ICs2NTUsOSBAQAogICAgIGludCBzaXplID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIsCi0gICAgICAgICZoYW5kbGUsICZzaXplKSkKKyAgICAgICAgJmhhbmRsZSwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9QZWVrTmFtZWRQaXBlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHNpemUpOwogCiBleGl0OgpAQCAtNjM5LDI0ICs2NzAsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfUkVBREZJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7IlJlYWRGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfUmVhZEZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1JlYWRGaWxlX19kb2NfX30sCisgICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1JlYWRGaWxlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX1JlYWRGaWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfd2luYXBpX1JlYWRGaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfUmVhZEZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBpbnQgc2l6ZTsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAiaXxpOlJlYWRGaWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1JlYWRGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHNpemUsIHVzZV9vdmVybGFwcGVkKTsKIAogZXhpdDoKQEAgLTY4OCw4ICs3MjEsOSBAQAogICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiT09POlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwKLSAgICAgICAgJm5hbWVkX3BpcGUsICZtb2RlLCAmbWF4X2NvbGxlY3Rpb25fY291bnQsICZjb2xsZWN0X2RhdGFfdGltZW91dCkpCisgICAgICAgICZuYW1lZF9waXBlLCAmbW9kZSwgJm1heF9jb2xsZWN0aW9uX2NvdW50LCAmY29sbGVjdF9kYXRhX3RpbWVvdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9pbXBsKG1vZHVsZSwgbmFtZWRfcGlwZSwgbW9kZSwgbWF4X2NvbGxlY3Rpb25fY291bnQsIGNvbGxlY3RfZGF0YV90aW1lb3V0KTsKIAogZXhpdDoKQEAgLTcxNyw4ICs3NTEsOSBAQAogICAgIFVJTlQgZXhpdF9jb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJJOlRlcm1pbmF0ZVByb2Nlc3MiLAotICAgICAgICAmaGFuZGxlLCAmZXhpdF9jb2RlKSkKKyAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGhhbmRsZSwgZXhpdF9jb2RlKTsKIAogZXhpdDoKQEAgLTc0NCw4ICs3NzksOSBAQAogICAgIERXT1JEIHRpbWVvdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrOldhaXROYW1lZFBpcGUiLAotICAgICAgICAmbmFtZSwgJnRpbWVvdXQpKQorICAgICAgICAmbmFtZSwgJnRpbWVvdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0TmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCB0aW1lb3V0KTsKIAogZXhpdDoKQEAgLTc3NCw4ICs4MTAsOSBAQAogICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaXxrOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAotICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgICZoYW5kbGVfc2VxLCAmd2FpdF9mbGFnLCAmbWlsbGlzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKG1vZHVsZSwgaGFuZGxlX3NlcSwgd2FpdF9mbGFnLCBtaWxsaXNlY29uZHMpOwogCiBleGl0OgpAQCAtODA4LDExICs4NDUsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIms6V2FpdEZvclNpbmdsZU9iamVjdCIsCi0gICAgICAgICZoYW5kbGUsICZtaWxsaXNlY29uZHMpKQorICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtODI1LDI3ICs4NjQsMjkgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAorICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV3JpdGVGaWxlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfd2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJPfGk6V3JpdGVGaWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmaGFuZGxlLCAmYnVmZmVyLCAmdXNlX292ZXJsYXBwZWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaGFuZGxlLCAmYnVmZmVyLCAmdXNlX292ZXJsYXBwZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgYnVmZmVyLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGM0YjJhOWZjYjBiZWExIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NmQ2MzgyYTY2NjJjNGE5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaAppbmRleCAwYzcwNjFhLi4zYjlmY2RhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCkBAIC03Nyw4ICs3Nyw5IEBACiAgICAgUHlfc3NpemVfdCBpID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCi0gICAgICAgICZpKSkKKyAgICAgICAgJmkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfcG9wX2ltcGwoc2VsZiwgaSk7CiAKIGV4aXQ6CkBAIC0xMTQsOCArMTE1LDkgQEAKICAgICBQeU9iamVjdCAqdjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwKLSAgICAgICAgJmksICZ2KSkKKyAgICAgICAgJmksICZ2KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X2luc2VydF9pbXBsKHNlbGYsIGksIHYpOwogCiBleGl0OgpAQCAtMjExLDggKzIxMyw5IEBACiAgICAgUHlfc3NpemVfdCBuOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbjpmcm9tZmlsZSIsCi0gICAgICAgICZmLCAmbikpCisgICAgICAgICZmLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tZmlsZV9pbXBsKHNlbGYsIGYsIG4pOwogCiBleGl0OgpAQCAtMjc1LDE0ICsyNzgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzKjpmcm9tc3RyaW5nIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzKjpmcm9tc3RyaW5nIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMDUsMTQgKzMxMCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6ZnJvbWJ5dGVzIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM3OSw4ICszODYsOSBAQAogICAgIFB5X1VOSUNPREUgKnVzdHI7CiAgICAgUHlfc3NpemVfY2xlYW5fdCB1c3RyX2xlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidSM6ZnJvbXVuaWNvZGUiLCAmdXN0ciwgJnVzdHJfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZ1c3RyX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tdW5pY29kZV9pbXBsKHNlbGYsIHVzdHIsIHVzdHJfbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjEsOSBAQAogICAgIFB5T2JqZWN0ICppdGVtczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT0NpTzpfYXJyYXlfcmVjb25zdHJ1Y3RvciIsCi0gICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZSwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkKKyAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMpOwogCiBleGl0OgpAQCAtNDk2LDQgKzUwNSw0IEBACiAKICNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKICAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXywgTUVUSF9PLCBhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMwNWRmM2Y1Nzk2MDM5ZTQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMDU0ZmI3NjRjOGNjNjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAppbmRleCA2MmUzMTNiNS4uYmU0YjcxOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKQEAgLTI0LDE0ICsyNCwxNiBAQAogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaW46Z2V0c2FtcGxlIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZpbmRleCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9nZXRzYW1wbGVfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGluZGV4KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTYsMTQgKzU4LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX21heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg4LDE0ICs5MiwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1pbm1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9taW5tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMjAsMTQgKzEyNiwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2ZyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTIsMTQgKzE2MCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJtcyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ybXNfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xODUsMTcgKzE5NSwyMCBAQAogICAgIFB5X2J1ZmZlciByZWZlcmVuY2UgPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZpdCIsCi0gICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCisgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmaXRfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIHJlZmVyZW5jZSAqLwotICAgIGlmIChyZWZlcmVuY2Uub2JqKQorICAgIGlmIChyZWZlcmVuY2Uub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcmVmZXJlbmNlKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjIxLDE3ICsyMzQsMjAgQEAKICAgICBQeV9idWZmZXIgcmVmZXJlbmNlID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmYWN0b3IiLAotICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQorICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciByZWZlcmVuY2UgKi8KLSAgICBpZiAocmVmZXJlbmNlLm9iaikKKyAgICBpZiAocmVmZXJlbmNlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnJlZmVyZW5jZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI1NywxNCArMjczLDE2IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqbjpmaW5kbWF4IiwKLSAgICAgICAgJmZyYWdtZW50LCAmbGVuZ3RoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZG1heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCBsZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODksMTQgKzMwNywxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2Z3BwIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2F2Z3BwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzIxLDE0ICszNDEsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptYXhwcCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1MywxNCArMzc1LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Y3Jvc3MiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfY3Jvc3NfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zODcsMTQgKzQxMSwxNiBAQAogICAgIGRvdWJsZSBmYWN0b3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWQ6bXVsIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmZhY3RvcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX211bF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDIyLDE0ICs0NDgsMTYgQEAKICAgICBkb3VibGUgcmZhY3RvcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9tb25vIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF90b21vbm9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00NTcsMTQgKzQ4NSwxNiBAQAogICAgIGRvdWJsZSByZmFjdG9yOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkZDp0b3N0ZXJlbyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdG9zdGVyZW9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00OTEsMTcgKzUyMSwyMCBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5Kmk6YWRkIiwKLSAgICAgICAgJmZyYWdtZW50MSwgJmZyYWdtZW50MiwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50MSwgJmZyYWdtZW50MiwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWRkX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQxLCAmZnJhZ21lbnQyLCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQxICovCi0gICAgaWYgKGZyYWdtZW50MS5vYmopCisgICAgaWYgKGZyYWdtZW50MS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudDEpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudDIgKi8KLSAgICBpZiAoZnJhZ21lbnQyLm9iaikKKyAgICBpZiAoZnJhZ21lbnQyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50Mik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUyNywxNCArNTYwLDE2IEBACiAgICAgaW50IGJpYXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWk6YmlhcyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmYmlhcykpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmYmlhcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2JpYXNfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGJpYXMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01NTksMTQgKzU5NCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJldmVyc2UiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmV2ZXJzZV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU5MSwxNCArNjI4LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Ynl0ZXN3YXAiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYnl0ZXN3YXBfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02MjUsMTQgKzY2NCwxNiBAQAogICAgIGludCBuZXd3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaTpsaW4ybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuZXd3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmV3d2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4ybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuZXd3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY2NiwxNCArNzA3LDE2IEBACiAgICAgaW50IHdlaWdodEIgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpaWlPfGlpOnJhdGVjdiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmNoYW5uZWxzLCAmaW5yYXRlLCAmb3V0cmF0ZSwgJnN0YXRlLCAmd2VpZ2h0QSwgJndlaWdodEIpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5jaGFubmVscywgJmlucmF0ZSwgJm91dHJhdGUsICZzdGF0ZSwgJndlaWdodEEsICZ3ZWlnaHRCKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmF0ZWN2X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuY2hhbm5lbHMsIGlucmF0ZSwgb3V0cmF0ZSwgc3RhdGUsIHdlaWdodEEsIHdlaWdodEIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02OTgsMTQgKzc0MSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmxpbjJ1bGF3IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJ1bGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzMwLDE0ICs3NzUsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTp1bGF3MmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF91bGF3Mmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTc2MiwxNCArODA5LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMmFsYXciLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmFsYXdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03OTQsMTQgKzg0MywxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmFsYXcybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODI4LDE0ICs4NzksMTYgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86bGluMmFkcGNtIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4yYWRwY21faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODYyLDE1ICs5MTUsMTcgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86YWRwY20ybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hZHBjbTJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4NWZiMDlmYTIxYTYyYzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwYWI3NGMzZmE1N2MzOWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCmluZGV4IGUyMGNhYzIuLmFjYWZjYmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKQEAgLTIwLDggKzIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX3V1X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CkBAIC01MCwxNCArNTEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX3V1IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX3V1IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3V1X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODAsOCArODMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfYmFzZTY0IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKQEAgLTkzLDMxICs5NywzNyBAQAogfQogCiBQeURvY19TVFJWQVIoYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX18sCi0iYjJhX2Jhc2U2NCgkbW9kdWxlLCBkYXRhLCAvKVxuIgorImIyYV9iYXNlNjQoJG1vZHVsZSwgLywgZGF0YSwgKiwgbmV3bGluZT1UcnVlKVxuIgogIi0tXG4iCiAiXG4iCiAiQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9CQVNFNjRfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2Jhc2U2NCwgTUVUSF9PLCBiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfX30sCisgICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfRkFTVENBTEwsIGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOworYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IG5ld2xpbmUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQorYmluYXNjaWlfYjJhX2Jhc2U2NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibmV3bGluZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfCRpOmIyYV9iYXNlNjQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGludCBuZXdsaW5lID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2Jhc2U2NCIsICZkYXRhKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZuZXdsaW5lKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSwgbmV3bGluZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTQwLDggKzE1MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9ocXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgpAQCAtMTcwLDE0ICsxODEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlY29kZV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVjb2RlX2hxeCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX3JsZWNvZGVfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjAwLDE0ICsyMTMsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hxeCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjMwLDE0ICsyNDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlZGVjb2RlX2hxeCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWRlY29kZV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjYzLDE3ICsyODAsMjAgQEAKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpJOmNyY19ocXgiLAotICAgICAgICAmZGF0YSwgJmNyYykpCisgICAgICAgICZkYXRhLCAmY3JjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9jcmNfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSwgY3JjKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI5OSwxNyArMzE5LDIwIEBACiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAotICAgICAgICAmZGF0YSwgJmNyYykpCisgICAgICAgICZkYXRhLCAmY3JjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMzUsMTQgKzM1OCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaGV4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9oZXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNjcsMTQgKzM5MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpoZXhsaWZ5IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2hleGxpZnlfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDAsOCArNDI3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgaGV4c3RyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfaGV4X2ltcGwobW9kdWxlLCAmaGV4c3RyKTsKIAogZXhpdDoKQEAgLTQzMiw4ICs0NjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuaGV4bGlmeSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5oZXhsaWZ5IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV91bmhleGxpZnlfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCiBleGl0OgpAQCAtNDUxLDIyICs0ODAsMjQgQEAKICJEZWNvZGUgYSBzdHJpbmcgb2YgcXAtZW5jb2RlZCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9RUF9NRVRIT0RERUYgICAgXAotICAgIHsiYTJiX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9xcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJpbmFzY2lpX2EyYl9xcF9fZG9jX199LAorICAgIHsiYTJiX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9xcCwgTUVUSF9GQVNUQ0FMTCwgYmluYXNjaWlfYTJiX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9hMmJfcXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBoZWFkZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYTJiX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYmluYXNjaWlfYTJiX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhLCAmaGVhZGVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEsICZoZWFkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgaGVhZGVyKTsKIAogZXhpdDoKQEAgLTQ4OCwzMiArNTE5LDM1IEBACiAiYXJlIGJvdGggZW5jb2RlZC4gIFdoZW4gcXVvdGV0YWJzIGlzIHNldCwgc3BhY2UgYW5kIHRhYnMgYXJlIGVuY29kZWQuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQjJBX1FQX01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCisgICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX0ZBU1RDQUxMLCBiaW5hc2NpaV9iMmFfcXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV9xcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywKICAgICAgICAgICAgICAgICAgICAgIGludCBpc3RleHQsIGludCBoZWFkZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYmluYXNjaWlfYjJhX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgInF1b3RldGFicyIsICJpc3RleHQiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJxdW90ZXRhYnMiLCAiaXN0ZXh0IiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBxdW90ZXRhYnMgPSAwOwogICAgIGludCBpc3RleHQgPSAxOwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJnF1b3RldGFicywgJmlzdGV4dCwgJmhlYWRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBxdW90ZXRhYnMsIGlzdGV4dCwgaGVhZGVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTExNzNmYzk3MThhNWVkYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWY4ZDZlNDhmNzVmNmQxZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKaW5kZXggYTI1NTM1My4uMDU0MzFmYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaApAQCAtMjEsOCArMjEsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvcyIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvcyIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zX2ltcGwobW9kdWxlLCB6KTsKQEAgLTYyLDggKzYzLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3NoIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0xMDMsOCArMTA1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbl9pbXBsKG1vZHVsZSwgeik7CkBAIC0xNDQsOCArMTQ3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0xODUsOCArMTg5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbl9pbXBsKG1vZHVsZSwgeik7CkBAIC0yMjYsOCArMjMxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0yNjcsOCArMjczLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvcyIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6Y29zIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Nvc19pbXBsKG1vZHVsZSwgeik7CkBAIC0zMDgsOCArMzE1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0zNDksOCArMzU3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmV4cCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6ZXhwIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2V4cF9pbXBsKG1vZHVsZSwgeik7CkBAIC0zOTAsOCArMzk5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmxvZzEwIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpsb2cxMCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9sb2cxMF9pbXBsKG1vZHVsZSwgeik7CkBAIC00MzEsOCArNDQxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Npbl9pbXBsKG1vZHVsZSwgeik7CkBAIC00NzIsOCArNDgzLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgeik7CkBAIC01MTMsOCArNTI1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNxcnQiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNxcnQiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgeik7CkBAIC01NTQsOCArNTY3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Rhbl9pbXBsKG1vZHVsZSwgeik7CkBAIC01OTUsOCArNjA5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfdGFuaF9pbXBsKG1vZHVsZSwgeik7CkBAIC02MzksOCArNjU0LDkgQEAKICAgICBQeU9iamVjdCAqeV9vYmogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEfE86bG9nIiwKLSAgICAgICAgJngsICZ5X29iaikpCisgICAgICAgICZ4LCAmeV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nX2ltcGwobW9kdWxlLCB4LCB5X29iaik7CiAKIGV4aXQ6CkBAIC02NjUsOCArNjgxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cGhhc2UiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBoYXNlIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfcGhhc2VfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNjkzLDggKzcxMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBvbGFyIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BvbGFyX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTcyMSw4ICs3MzksOSBAQAogICAgIGRvdWJsZSBwaGk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLAotICAgICAgICAmciwgJnBoaSkpCisgICAgICAgICZyLCAmcGhpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3JlY3RfaW1wbChtb2R1bGUsIHIsIHBoaSk7CiAKIGV4aXQ6CkBAIC03NDcsOCArNzY2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNmaW5pdGUiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzZmluaXRlIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNmaW5pdGVfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNzczLDggKzc5Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzbmFuIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzbmFuX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTc5OSw4ICs4MjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2luZiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNpbmYiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc2luZl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC04MjksMzIgKzg1MSwzNSBAQAogIm5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOwogCiAjZGVmaW5lIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGICAgIFwKLSAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9GQVNUQ0FMTCwgY21hdGhfaXNjbG9zZV9fZG9jX199LAogCiBzdGF0aWMgaW50CiBjbWF0aF9pc2Nsb3NlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIsCiAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlbF90b2wsIGRvdWJsZSBhYnNfdG9sKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitjbWF0aF9pc2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJhIiwgImIiLCAicmVsX3RvbCIsICJhYnNfdG9sIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IkREfCRkZDppc2Nsb3NlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9jb21wbGV4IGE7CiAgICAgUHlfY29tcGxleCBiOwogICAgIGRvdWJsZSByZWxfdG9sID0gMWUtMDk7CiAgICAgZG91YmxlIGFic190b2wgPSAwLjA7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJERHwkZGQ6aXNjbG9zZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNjbG9zZV9pbXBsKG1vZHVsZSwgYSwgYiwgcmVsX3RvbCwgYWJzX3RvbCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczMjE5NDAyOWI3ZmIxZTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3OGY1OTcwMmI0MTY1NWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCmluZGV4IDY3NjYwZWIuLjg0YTAwNGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfE86ZmNudGwiLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmNudGxfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBhcmcpOwogCiBleGl0OgpAQCAtOTEsOCArOTIsOSBAQAogICAgIGludCBtdXRhdGVfYXJnID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJfE9wOmlvY3RsIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmb2JfYXJnLCAmbXV0YXRlX2FyZykpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJm9iX2FyZywgJm11dGF0ZV9hcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfaW9jdGxfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBvYl9hcmcsIG11dGF0ZV9hcmcpOwogCiBleGl0OgpAQCAtMTIyLDggKzEyNCw5IEBACiAgICAgaW50IGNvZGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpmbG9jayIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBmY250bF9mbG9ja19pbXBsKG1vZHVsZSwgZmQsIGNvZGUpOwogCiBleGl0OgpAQCAtMTc1LDExICsxNzgsMTIgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfE9PaTpsb2NrZiIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmxlbm9iaiwgJnN0YXJ0b2JqLCAmd2hlbmNlKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBsZW5vYmosIHN0YXJ0b2JqLCB3aGVuY2UpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTdiMTMwNmI4NjRjMDFjOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZjZmY3NmE4ZmIyYzlhNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaAppbmRleCAyYzQ3YTQyLi4wMjgyYjRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmgKQEAgLTExLDIxICsxMSwyMyBAQAogIklmIGlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CiAKICNkZWZpbmUgR1JQX0dFVEdSR0lEX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JnaWRfX2RvY19ffSwKKyAgICB7ImdldGdyZ2lkIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncmdpZCwgTUVUSF9GQVNUQ0FMTCwgZ3JwX2dldGdyZ2lkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBncnBfZ2V0Z3JnaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpnZXRncmdpZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpnZXRncmdpZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGdycF9nZXRncmdpZF9pbXBsKG1vZHVsZSwgaWQpOwogCiBleGl0OgpAQCAtNDEsMjEgKzQzLDIzIEBACiAiSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOwogCiAjZGVmaW5lIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdybmFtX19kb2NfX30sCisgICAgeyJnZXRncm5hbSIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JuYW0sIE1FVEhfRkFTVENBTEwsIGdycF9nZXRncm5hbV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogZ3JwX2dldGdybmFtX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdybmFtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZ3JwX2dldGdybmFtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IlU6Z2V0Z3JuYW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVTpnZXRncm5hbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JuYW1faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtODIsNCArODYsNCBAQAogewogICAgIHJldHVybiBncnBfZ2V0Z3JhbGxfaW1wbChtb2R1bGUpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZTA5ZmVlZmM1NGEyY2IgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NDE3YWUwYTcyOThlMGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmgKaW5kZXggMGJkOTU4YS4uYTg0MWZlNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCkBAIC03MiwyNCArNzIsMjYgQEAKICJSZXR1cm4gYSBuZXcgTUQ1IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX01ENV9NRDVfTUVUSE9EREVGICAgIFwKLSAgICB7Im1kNSIsIChQeUNGdW5jdGlvbilfbWQ1X21kNSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tZDVfbWQ1X19kb2NfX30sCisgICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pX21kNV9tZDUsIE1FVEhfRkFTVENBTEwsIF9tZDVfbWQ1X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbWQ1X21kNV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX21kNV9tZDUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbWQ1X21kNShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86bWQ1IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOm1kNSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX21kNV9tZDVfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00Y2QzY2M5NmUzNTU2M2QyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NGNkNTBkYjA1MGYyNTg5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaAppbmRleCAxYmJmYzA2Li43MmQ3ODM0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCkBAIC0yNywyMyArMjcsMjUgQEAKICIgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX1NUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXRfX2RvY19ffSwKKyAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3RhdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mcDpzdGF0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0IiwgInBhdGgiLCAwLCAxKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdF9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTYzLDIyICs2NSwyNCBAQAogIkVxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xTVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJsc3RhdCIsIChQeUNGdW5jdGlvbilvc19sc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xzdGF0X19kb2NfX30sCisgICAgeyJsc3RhdCIsIChQeUNGdW5jdGlvbilvc19sc3RhdCwgTUVUSF9GQVNUQ0FMTCwgb3NfbHN0YXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xzdGF0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbHN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxzdGF0IiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbHN0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTIxLDE3ICsxMjUsMTggQEAKICIgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC4iKTsKIAogI2RlZmluZSBPU19BQ0NFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImFjY2VzcyIsIChQeUNGdW5jdGlvbilvc19hY2Nlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19hY2Nlc3NfX2RvY19ffSwKKyAgICB7ImFjY2VzcyIsIChQeUNGdW5jdGlvbilvc19hY2Nlc3MsIE1FVEhfRkFTVENBTEwsIG9zX2FjY2Vzc19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19hY2Nlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAogICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfYWNjZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImVmZmVjdGl2ZV9pZHMiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGU7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwpAQCAtMTM5LDEyICsxNDQsMTQgQEAKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfYWNjZXNzX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBmb2xsb3dfc3ltbGlua3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNzgsMTEgKzE4NSwxMyBAQAogICAgIGludCBmZDsKICAgICBjaGFyICpfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnR0eW5hbWUiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0dHluYW1lIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc190dHluYW1lX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIyNCwyMSArMjMzLDIzIEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfQ0hESVJfTUVUSE9EREVGICAgIFwKLSAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hkaXJfX2RvY19ffSwKKyAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19jaGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpjaGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hkaXIiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hESVIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtMjYwLDIxICsyNzEsMjMgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKIAogI2RlZmluZSBPU19GQ0hESVJfTUVUSE9EREVGICAgIFwKLSAgICB7ImZjaGRpciIsIChQeUNGdW5jdGlvbilvc19mY2hkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2hkaXJfX2RvY19ffSwKKyAgICB7ImZjaGRpciIsIChQeUNGdW5jdGlvbilvc19mY2hkaXIsIE1FVEhfRkFTVENBTEwsIG9zX2ZjaGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmNoZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZjaGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmNoZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNoZGlyX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMTAsMjUgKzMyMywyNyBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hNT0RfTUVUSE9EREVGICAgIFwKLSAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2htb2RfX2RvY19ffSwKKyAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19jaG1vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAogICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2NobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8JE8mcDpjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2htb2QiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hNT0QpOwogICAgIGludCBtb2RlOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaG1vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTM0OSwyMiArMzY0LDI0IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CiAKICNkZWZpbmUgT1NfRkNITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfZmNobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNobW9kX19kb2NfX30sCisgICAgeyJmY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfZmNobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaG1vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOmZjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogICAgIGludCBtb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWk6ZmNobW9kIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsICZtb2RlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mY2htb2RfaW1wbChtb2R1bGUsIGZkLCBtb2RlKTsKIAogZXhpdDoKQEAgLTM4NSwyMiArNDAyLDI0IEBACiAiRXF1aXZhbGVudCB0byBjaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLlwiIik7CiAKICNkZWZpbmUgT1NfTENITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJsY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfbGNobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGNobW9kX19kb2NfX30sCisgICAgeyJsY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfbGNobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19sY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xjaG1vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJmk6bGNobW9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2htb2QiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNobW9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSk7CiAKIGV4aXQ6CkBAIC00MjcsMjQgKzQ0NiwyNiBAQAogInVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRiAgICBcCi0gICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGZsYWdzX19kb2NfX30sCisgICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfRkFTVENBTEwsIG9zX2NoZmxhZ3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NoZmxhZ3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8ma3xwOmNoZmxhZ3MiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8cDpjaGZsYWdzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTQ2OCwyMiArNDg5LDI0IEBACiAiRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xDSEZMQUdTX01FVEhPRERFRiAgICBcCi0gICAgeyJsY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19sY2hmbGFncywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaGZsYWdzX19kb2NfX30sCisgICAgeyJsY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19sY2hmbGFncywgTUVUSF9GQVNUQ0FMTCwgb3NfbGNoZmxhZ3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xjaGZsYWdzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGNoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZrOmxjaGZsYWdzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mazpsY2hmbGFncyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hmbGFnc19pbXBsKG1vZHVsZSwgJnBhdGgsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTUwNCwyMSArNTI3LDIzIEBACiAiQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CiAKICNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRiAgICBcCi0gICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hyb290X19kb2NfX30sCisgICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX0ZBU1RDQUxMLCBvc19jaHJvb3RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nocm9vdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaHJvb3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaHJvb3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6Y2hyb290IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaHJvb3QiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hyb290IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hyb290X2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC01MzksMjEgKzU2NCwyMyBAQAogIkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2suIik7CiAKICNkZWZpbmUgT1NfRlNZTkNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzeW5jLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZnN5bmNfX2RvY19ffSwKKyAgICB7ImZzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzeW5jLCBNRVRIX0ZBU1RDQUxMLCBvc19mc3luY19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZnN5bmNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZnN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZzeW5jIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpmc3luYyIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzeW5jX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC01OTMsMjEgKzYyMCwyMyBAQAogIkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2sgd2l0aG91dCBmb3JjaW5nIHVwZGF0ZSBvZiBtZXRhZGF0YS4iKTsKIAogI2RlZmluZSBPU19GREFUQVNZTkNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZkYXRhc3luYyIsIChQeUNGdW5jdGlvbilvc19mZGF0YXN5bmMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mZGF0YXN5bmNfX2RvY19ffSwKKyAgICB7ImZkYXRhc3luYyIsIChQeUNGdW5jdGlvbilvc19mZGF0YXN5bmMsIE1FVEhfRkFTVENBTEwsIG9zX2ZkYXRhc3luY19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmRhdGFzeW5jX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZkYXRhc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZkYXRhc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZkYXRhc3luYyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmRhdGFzeW5jIiwgX2tleXdvcmRzLAotICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmRhdGFzeW5jX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC02NDksMjYgKzY3OCwyOCBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGICAgIFwKLSAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hvd25fX2RvY19ffSwKKyAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX0ZBU1RDQUxMLCBvc19jaG93bl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2Nob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mTyZ8JE8mcDpjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hvd24iLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hPV04pOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQsIEZDSE9XTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNjkxLDIzICs3MjIsMjUgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CiAKICNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNob3duX19kb2NfX30sCisgICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2hvd25fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaG93bl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlPJk8mOmZjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpTyZPJjpmY2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNob3duX2ltcGwobW9kdWxlLCBmZCwgdWlkLCBnaWQpOwogCiBleGl0OgpAQCAtNzI4LDIzICs3NjEsMjUgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYgICAgXAotICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG93bl9fZG9jX199LAorICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfbGNob3duX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJk8mOmxjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNob3duIiwgInBhdGgiLCAwLCAwKTsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mOmxjaG93biIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCk7CiAKIGV4aXQ6CkBAIC04MTIsMjYgKzg0NywyOCBAQAogIiAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJsaW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saW5rX19kb2NfX30sCisgICAgeyJsaW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpbmssIE1FVEhfRkFTVENBTEwsIG9zX2xpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAogICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mcDpsaW5rIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgImRzdCIsIDAsIDApOwogICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyZwOmxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlua19pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTg2MywyMSArOTAwLDIzIEBACiAiZW50cmllcyBcJy5cJyBhbmQgXCcuLlwnIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOwogCiAjZGVmaW5lIE9TX0xJU1RESVJfTUVUSE9EREVGICAgIFwKLSAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3RkaXJfX2RvY19ffSwKKyAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9GQVNUQ0FMTCwgb3NfbGlzdGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGlzdGRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saXN0ZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlzdGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyY6bGlzdGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdGRpciIsICJwYXRoIiwgMSwgUEFUSF9IQVZFX0ZET1BFTkRJUik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6bGlzdGRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3RkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTkwNiw4ICs5NDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9nZXRmdWxscGF0aG5hbWUiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9nZXRmdWxscGF0aG5hbWUiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZ1bGxwYXRobmFtZV9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtOTM5LDggKzk3OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtOTY4LDggKzEwMDksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9pc2RpciIsICJwYXRoIiwgMCwgMCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9pc2RpciIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfaXNkaXIiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2lzZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC05OTAsMjEgKzEwMzIsMjMgQEAKICJBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4iKTsKIAogI2RlZmluZSBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGICAgIFwKLSAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKKyAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfRkFTVENBTEwsIG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2dldHZvbHVtZXBhdGhuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2dldHZvbHVtZXBhdGhuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfX2dldHZvbHVtZXBhdGhuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKG1vZHVsZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC0xMDI3LDIzICsxMDcxLDI1IEBACiAiVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOwogCiAjZGVmaW5lIE9TX01LRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZGlyX19kb2NfX30sCisgICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9GQVNUQ0FMTCwgb3NfbWtkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX21rZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta2RpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGkkTyY6bWtkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZGlyIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZSA9IDUxMTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtkaXJfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTA3Myw4ICsxMTE5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaW5jcmVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmljZSIsICZpbmNyZW1lbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbmljZV9pbXBsKG1vZHVsZSwgaW5jcmVtZW50KTsKIAogZXhpdDoKQEAgLTEwOTIsMjIgKzExMzksMjQgQEAKICJSZXR1cm4gcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOwogCiAjZGVmaW5lIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19nZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHByaW9yaXR5X19kb2NfX30sCisgICAgeyJnZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19nZXRwcmlvcml0eSwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0cHJpb3JpdHlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldHByaW9yaXR5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgd2hpY2g7CiAgICAgaW50IHdobzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLAotICAgICAgICAmd2hpY2gsICZ3aG8pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2hpY2gsICZ3aG8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8pOwogCiBleGl0OgpAQCAtMTEyNSwyMyArMTE3NCwyNSBAQAogIlNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CiAKICNkZWZpbmUgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGICAgIFwKLSAgICB7InNldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2V0cHJpb3JpdHlfX2RvY19ffSwKKyAgICB7InNldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHByaW9yaXR5LCBNRVRIX0ZBU1RDQUxMLCBvc19zZXRwcmlvcml0eV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2V0cHJpb3JpdHlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8sIGludCBwcmlvcml0eSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCAicHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCAicHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaWk6c2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCB3aGljaDsKICAgICBpbnQgd2hvOwogICAgIGludCBwcmlvcml0eTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpaTpzZXRwcmlvcml0eSIsIF9rZXl3b3JkcywKLSAgICAgICAgJndoaWNoLCAmd2hvLCAmcHJpb3JpdHkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2hpY2gsICZ3aG8sICZwcmlvcml0eSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobywgcHJpb3JpdHkpOwogCiBleGl0OgpAQCAtMTE2MywyNSArMTIxNCwyNyBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfUkVOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJyZW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfcmVuYW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVuYW1lX19kb2NfX30sCisgICAgeyJyZW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfcmVuYW1lLCBNRVRIX0ZBU1RDQUxMLCBvc19yZW5hbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlbmFtZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCiAgICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZW5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mOnJlbmFtZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVuYW1lX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyMDYsMjUgKzEyNTksMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlwiIik7CiAKICNkZWZpbmUgT1NfUkVQTEFDRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilvc19yZXBsYWNlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVwbGFjZV9fZG9jX199LAorICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilvc19yZXBsYWNlLCBNRVRIX0ZBU1RDQUxMLCBvc19yZXBsYWNlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZXBsYWNlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKICAgICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZXBsYWNlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVwbGFjZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JE8mTyY6cmVwbGFjZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZXBsYWNlIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mOnJlcGxhY2UiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVwbGFjZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjQ4LDIyICsxMzAzLDI0IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfUk1ESVJfTUVUSE9EREVGICAgIFwKLSAgICB7InJtZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JtZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfcm1kaXJfX2RvY19ffSwKKyAgICB7InJtZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JtZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19ybWRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfcm1kaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfcm1kaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ybWRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicm1kaXIiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JtZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyODIsMjUgKzEzMzksMjggQEAKICJFeGVjdXRlIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwuIik7CiAKICNkZWZpbmUgT1NfU1lTVEVNX01FVEhPRERFRiAgICBcCi0gICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3lzdGVtX19kb2NfX30sCisgICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX0ZBU1RDQUxMLCBvc19zeXN0ZW1fX2RvY19ffSwKIAogc3RhdGljIGxvbmcKIG9zX3N5c3RlbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKmNvbW1hbmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InU6c3lzdGVtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9VTklDT0RFICpjb21tYW5kOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInU6c3lzdGVtIiwgX2tleXdvcmRzLAotICAgICAgICAmY29tbWFuZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZjb21tYW5kKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXN0ZW1faW1wbChtb2R1bGUsIGNvbW1hbmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzE4LDI1ICsxMzc4LDI4IEBACiAiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOwogCiAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAotICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3lzdGVtX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19zeXN0ZW1faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqY29tbWFuZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6c3lzdGVtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqY29tbWFuZCA9IE5VTEw7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3lzdGVtIiwgX2tleXdvcmRzLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY29tbWFuZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzdGVtX2ltcGwobW9kdWxlLCBjb21tYW5kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTM2Niw4ICsxNDI5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbWFzazsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp1bWFzayIsICZtYXNrKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dW1hc2siLCAmbWFzaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bWFza19pbXBsKG1vZHVsZSwgbWFzayk7CiAKIGV4aXQ6CkBAIC0xMzg2LDIyICsxNDUwLDI0IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfVU5MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJ1bmxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfdW5saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdW5saW5rX19kb2NfX30sCisgICAgeyJ1bmxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfdW5saW5rLCBNRVRIX0ZBU1RDQUxMLCBvc191bmxpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3VubGlua19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc191bmxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191bmxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1bmxpbmsiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bmxpbmtfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTQyMywyMiArMTQ4OSwyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JFTU9WRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZV9fZG9jX199LAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVtb3ZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW1vdmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVtb3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVtb3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOnJlbW92ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZlIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cmVtb3ZlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVtb3ZlX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTE1MDMsMjYgKzE1NzEsMjggQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1VUSU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3V0aW1lX19kb2NfX30sCisgICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9GQVNUQ0FMTCwgb3NfdXRpbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3V0aW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqdGltZXMsIFB5T2JqZWN0ICpucywKICAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc191dGltZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3V0aW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInV0aW1lIiwgInBhdGgiLCAwLCBQQVRIX1VUSU1FX0hBVkVfRkQpOwogICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191dGltZV9pbXBsKG1vZHVsZSwgJnBhdGgsIHRpbWVzLCBucywgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtMTUzOSwyMSArMTYwOSwyMyBAQAogIkV4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4iKTsKIAogI2RlZmluZSBPU19fRVhJVF9NRVRIT0RERUYgICAgXAotICAgIHsiX2V4aXQiLCAoUHlDRnVuY3Rpb24pb3NfX2V4aXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZXhpdF9fZG9jX199LAorICAgIHsiX2V4aXQiLCAoUHlDRnVuY3Rpb24pb3NfX2V4aXQsIE1FVEhfRkFTVENBTEwsIG9zX19leGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19fZXhpdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2V4aXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19fZXhpdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpfZXhpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6X2V4aXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19leGl0X2ltcGwobW9kdWxlLCBzdGF0dXMpOwogCiBleGl0OgpAQCAtMTU3NywyMyArMTY0OSwyNCBAQAogICAgIHsiZXhlY3YiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3YsIE1FVEhfVkFSQVJHUywgb3NfZXhlY3ZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKK29zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19leGVjdihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3YiLCAicGF0aCIsIDAsIDApOwogICAgIFB5T2JqZWN0ICphcmd2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgcGF0aCwgYXJndik7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2X2ltcGwobW9kdWxlLCAmcGF0aCwgYXJndik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNjE2LDIzICsxNjg5LDI1IEBACiAiICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuIik7CiAKICNkZWZpbmUgT1NfRVhFQ1ZFX01FVEhPRERFRiAgICBcCi0gICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZXhlY3ZlX19kb2NfX30sCisgICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX0ZBU1RDQUxMLCBvc19leGVjdmVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2V4ZWN2ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZXhlY3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZXhlY3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhcmd2IiwgImVudiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJleGVjdmUiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GRVhFQ1ZFKTsKICAgICBQeU9iamVjdCAqYXJndjsKICAgICBQeU9iamVjdCAqZW52OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YsIGVudik7CiAKIGV4aXQ6CkBAIC0xNjQ0LDcgKzE3MTksNyBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0VYRUNWKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKyNpZiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKQogCiBQeURvY19TVFJWQVIob3Nfc3Bhd252X19kb2NfXywKICJzcGF3bnYoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgLylcbiIKQEAgLTE2NjMsMzEgKzE3MzgsMzIgQEAKICAgICB7InNwYXdudiIsIChQeUNGdW5jdGlvbilvc19zcGF3bnYsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKK29zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NwYXdudihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZTsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3Bhd252IiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTzpzcGF3bnYiLAotICAgICAgICAmbW9kZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICAmbW9kZSwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndik7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgJnBhdGgsIGFyZ3YpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBQeV9YREVDUkVGKHBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKyNpZiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKQogCiBQeURvY19TVFJWQVIob3Nfc3Bhd252ZV9fZG9jX18sCiAic3Bhd252ZSgkbW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYsIC8pXG4iCkBAIC0xNzA4LDcgKzE3ODQsNyBAQAogICAgIHsic3Bhd252ZSIsIChQeUNGdW5jdGlvbilvc19zcGF3bnZlLCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudmVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAorb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbnYpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTcxNiwyMyArMTc5MiwyNCBAQAogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBtb2RlOwotICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzcGF3bnZlIiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKICAgICBQeU9iamVjdCAqZW52OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPTzpzcGF3bnZlIiwKLSAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICAgICAgJm1vZGUsIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCAmcGF0aCwgYXJndiwgZW52KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkgKi8KIAogI2lmIGRlZmluZWQoSEFWRV9GT1JLMSkKIApAQCAtMTc5MSwyMSArMTg2OCwyMyBAQAogIkdldCB0aGUgbWF4aW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CiAKICNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYgICAgXAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX0ZBU1RDQUxMLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHBvbGljeSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgcG9saWN5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLAotICAgICAgICAmcG9saWN5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBvbGljeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwobW9kdWxlLCBwb2xpY3kpOwogCiBleGl0OgpAQCAtMTgyMywyMSArMTkwMiwyMyBAQAogIkdldCB0aGUgbWluaW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CiAKICNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYgICAgXAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX0ZBU1RDQUxMLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHBvbGljeSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgcG9saWN5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgX2tleXdvcmRzLAotICAgICAgICAmcG9saWN5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBvbGljeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwobW9kdWxlLCBwb2xpY3kpOwogCiBleGl0OgpAQCAtMTg2OCw4ICsxOTQ5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0xODk2LDEyICsxOTc4LDE0IEBACiBvc19zY2hlZF9wYXJhbShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86c2NoZWRfcGFyYW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzY2hlZF9wcmlvcml0eTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86c2NoZWRfcGFyYW0iLCBfa2V5d29yZHMsCi0gICAgICAgICZzY2hlZF9wcmlvcml0eSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcGFyYW1faW1wbCh0eXBlLCBzY2hlZF9wcmlvcml0eSk7CiAKIGV4aXQ6CkBAIC0xOTM3LDggKzIwMjEsOSBAQAogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpTyY6c2NoZWRfc2V0c2NoZWR1bGVyIiwKLSAgICAgICAgJnBpZCwgJnBvbGljeSwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgJnBpZCwgJnBvbGljeSwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldHNjaGVkdWxlcl9pbXBsKG1vZHVsZSwgcGlkLCBwb2xpY3ksICZwYXJhbSk7CiAKIGV4aXQ6CkBAIC0xOTcwLDggKzIwNTUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0cGFyYW0iLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTIwMDYsOCArMjA5Miw5IEBACiAgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKLSAgICAgICAgJnBpZCwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgJnBpZCwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldHBhcmFtX2ltcGwobW9kdWxlLCBwaWQsICZwYXJhbSk7CiAKIGV4aXQ6CkBAIC0yMDM5LDExICsyMTI2LDEzIEBACiAgICAgcGlkX3QgcGlkOwogICAgIGRvdWJsZSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX3JyX2dldF9pbnRlcnZhbCIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3NjaGVkX3JyX2dldF9pbnRlcnZhbF9pbXBsKG1vZHVsZSwgcGlkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEuMCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEuMCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5RmxvYXRfRnJvbURvdWJsZShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIwOTgsOCArMjE4Nyw5IEBACiAgICAgUHlPYmplY3QgKm1hc2s7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCi0gICAgICAgICZwaWQsICZtYXNrKSkKKyAgICAgICAgJnBpZCwgJm1hc2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCwgbWFzayk7CiAKIGV4aXQ6CkBAIC0yMTE0LDcgKzIyMDQsNyBAQAogInNjaGVkX2dldGFmZmluaXR5KCRtb2R1bGUsIHBpZCwgLylcbiIKICItLVxuIgogIlxuIgotIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuXG4iCisiUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpZiB6ZXJvKS5cbiIKICJcbiIKICJUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLiIpOwogCkBAIC0yMTMwLDggKzIyMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTIyNTgsNiArMjM0OSw4IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUR0lEKSAqLwogCisjaWYgZGVmaW5lZChIQVZFX0dFVFBJRCkKKwogUHlEb2NfU1RSVkFSKG9zX2dldHBpZF9fZG9jX18sCiAiZ2V0cGlkKCRtb2R1bGUsIC8pXG4iCiAiLS1cbiIKQEAgLTIyNzYsNiArMjM2OSw4IEBACiAgICAgcmV0dXJuIG9zX2dldHBpZF9pbXBsKG1vZHVsZSk7CiB9CiAKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUElEKSAqLworCiAjaWYgZGVmaW5lZChIQVZFX0dFVEdST1VQUykKIAogUHlEb2NfU1RSVkFSKG9zX2dldGdyb3Vwc19fZG9jX18sCkBAIC0yMzA3LDIxICsyNDAyLDIzIEBACiAiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuIik7CiAKICNkZWZpbmUgT1NfR0VUUEdJRF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0cGdpZF9fZG9jX199LAorICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXRwZ2lkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRwZ2lkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGlkX3QgcGlkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHBnaWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19nZXRwZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIF9QeV9QQVJTRV9QSUQgIjpnZXRwZ2lkIiwgX2tleXdvcmRzLCAwfTsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRwZ2lkIiwgX2tleXdvcmRzLAotICAgICAgICAmcGlkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMjQ2NSw4ICsyNTYyLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpZ25hbDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJuOmtpbGwiLAotICAgICAgICAmcGlkLCAmc2lnbmFsKSkKKyAgICAgICAgJnBpZCwgJnNpZ25hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19raWxsX2ltcGwobW9kdWxlLCBwaWQsIHNpZ25hbCk7CiAKIGV4aXQ6CkBAIC0yNDk3LDggKzI1OTUsOSBAQAogICAgIGludCBzaWduYWw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTpraWxscGciLAotICAgICAgICAmcGdpZCwgJnNpZ25hbCkpCisgICAgICAgICZwZ2lkLCAmc2lnbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxwZ19pbXBsKG1vZHVsZSwgcGdpZCwgc2lnbmFsKTsKIAogZXhpdDoKQEAgLTI1MjcsOCArMjYyNiw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG9wOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBsb2NrIiwgJm9wKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGxvY2siLCAmb3ApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGxvY2tfaW1wbChtb2R1bGUsIG9wKTsKIAogZXhpdDoKQEAgLTI1NTcsOCArMjY1Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdWlkX3QgdWlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR1aWRfaW1wbChtb2R1bGUsIHVpZCk7CiAKIGV4aXQ6CkBAIC0yNTg3LDggKzI2ODgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHVpZF90IGV1aWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRldWlkX2ltcGwobW9kdWxlLCBldWlkKTsKIAogZXhpdDoKQEAgLTI2MTcsOCArMjcxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgZ2lkX3QgZWdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZWdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGVnaWRfaW1wbChtb2R1bGUsIGVnaWQpOwogCiBleGl0OgpAQCAtMjY0OSw4ICsyNzUyLDkgQEAKICAgICB1aWRfdCBldWlkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJldWlkIiwKLSAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXVpZF9pbXBsKG1vZHVsZSwgcnVpZCwgZXVpZCk7CiAKIGV4aXQ6CkBAIC0yNjgxLDggKzI3ODUsOSBAQAogICAgIGdpZF90IGVnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmVnaWQiLAotICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCisgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlZ2lkX2ltcGwobW9kdWxlLCByZ2lkLCBlZ2lkKTsKIAogZXhpdDoKQEAgLTI3MTEsOCArMjgxNiw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRnaWRfaW1wbChtb2R1bGUsIGdpZCk7CiAKIGV4aXQ6CkBAIC0yNzQ2LDIxICsyODUyLDIzIEBACiAiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKIAogI2RlZmluZSBPU19XQUlUM19NRVRIT0RERUYgICAgXAotICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0M19fZG9jX199LAorICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfRkFTVENBTEwsIG9zX3dhaXQzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0M19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBvcHRpb25zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3dhaXQzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfd2FpdDMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTp3YWl0MyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IG9wdGlvbnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOndhaXQzIiwgX2tleXdvcmRzLAotICAgICAgICAmb3B0aW9ucykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQzX2ltcGwobW9kdWxlLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI3ODEsMjIgKzI4ODksMjQgQEAKICIgIChwaWQsIHN0YXR1cywgcnVzYWdlKSIpOwogCiAjZGVmaW5lIE9TX1dBSVQ0X01FVEhPRERFRiAgICBcCi0gICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3dhaXQ0X19kb2NfX30sCisgICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9GQVNUQ0FMTCwgb3Nfd2FpdDRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3dhaXQ0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3dhaXQ0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBpZCIsICJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBfUHlfUEFSU0VfUElEICJpOndhaXQ0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50IG9wdGlvbnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdDRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yODM5LDggKzI5NDksOSBAQAogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICJpOndhaXRpZCIsCi0gICAgICAgICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKQorICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRpZF9pbXBsKG1vZHVsZSwgaWR0eXBlLCBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yODc2LDggKzI5ODcsOSBAQAogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdHBpZCIsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdHBpZF9pbXBsKG1vZHVsZSwgcGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI5MDMsMTggKzMwMTUsMTkgQEAKICAgICB7IndhaXRwaWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBvc193YWl0cGlkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7Citvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0cGlkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IHBpZDsKKyAgICBpbnRwdHJfdCBwaWQ7CiAgICAgaW50IG9wdGlvbnM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX0lOVFBUUiAiaTp3YWl0cGlkIiwKLSAgICAgICAgJnBpZCwgJm9wdGlvbnMpKQorICAgICAgICAmcGlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjk2NywyNSArMzA4MCwyNyBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1NZTUxJTktfTUVUSE9EREVGICAgIFwKLSAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pb3Nfc3ltbGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5bWxpbmtfX2RvY19ffSwKKyAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pb3Nfc3ltbGluaywgTUVUSF9GQVNUQ0FMTCwgb3Nfc3ltbGlua19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3ltbGlua19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zeW1saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3ltbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfHAkTyY6c3ltbGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJzeW1saW5rIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCAmdGFyZ2V0X2lzX2RpcmVjdG9yeSwgU1lNTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3ltbGlua19pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTMwNDUsOCArMzE2MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0c2lkX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMzA5OSw4ICszMjE1LDkgQEAKICAgICBwaWRfdCBwZ3JwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIiIgX1B5X1BBUlNFX1BJRCAiOnNldHBnaWQiLAotICAgICAgICAmcGlkLCAmcGdycCkpCisgICAgICAgICZwaWQsICZwZ3JwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHBnaWRfaW1wbChtb2R1bGUsIHBpZCwgcGdycCk7CiAKIGV4aXQ6CkBAIC0zMTI5LDggKzMyNDYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNnZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMTYxLDggKzMyNzksOSBAQAogICAgIHBpZF90IHBnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgIjp0Y3NldHBncnAiLAotICAgICAgICAmZmQsICZwZ2lkKSkKKyAgICAgICAgJmZkLCAmcGdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc190Y3NldHBncnBfaW1wbChtb2R1bGUsIGZkLCBwZ2lkKTsKIAogZXhpdDoKQEAgLTMxODMsMjggKzMzMDIsMzEgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19PUEVOX01FVEhPRERFRiAgICBcCi0gICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19vcGVuX19kb2NfX30sCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfRkFTVENBTEwsIG9zX29wZW5fX2RvY19ffSwKIAogc3RhdGljIGludAogb3Nfb3Blbl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8aSRPJjpvcGVuIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJvcGVuIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG1vZGUgPSA1MTE7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfGkkTyY6b3BlbiIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZtb2RlLCBPUEVOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX29wZW5faW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgbW9kZSwgZGlyX2ZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzIyMSwyMSArMzM0MywyMyBAQAogIkNsb3NlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX0NMT1NFX01FVEhPRERFRiAgICBcCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nsb3NlX19kb2NfX30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9GQVNUQ0FMTCwgb3NfY2xvc2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nsb3NlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOmNsb3NlIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmNsb3NlIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2xvc2VfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTMyNjIsOCArMzM4Niw5IEBACiAgICAgaW50IGZkX2hpZ2g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmNsb3NlcmFuZ2UiLAotICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpCisgICAgICAgICZmZF9sb3csICZmZF9oaWdoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlcmFuZ2VfaW1wbChtb2R1bGUsIGZkX2xvdywgZmRfaGlnaCk7CiAKIGV4aXQ6CkBAIC0zMjg5LDExICszNDE0LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmR1cCIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmR1cCIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZHVwX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMzMDcsMjMgKzM0MzQsMjUgQEAKICJEdXBsaWNhdGUgZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX0RVUDJfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1cDIiLCAoUHlDRnVuY3Rpb24pb3NfZHVwMiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2R1cDJfX2RvY19ffSwKKyAgICB7ImR1cDIiLCAoUHlDRnVuY3Rpb24pb3NfZHVwMiwgTUVUSF9GQVNUQ0FMTCwgb3NfZHVwMl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZHVwMl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgaW50IGZkMiwgaW50IGluaGVyaXRhYmxlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2R1cDIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19kdXAyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaXxwOmR1cDIiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICBpbnQgZmQyOwogICAgIGludCBpbmhlcml0YWJsZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaXxwOmR1cDIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCAmZmQyLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZHVwMl9pbXBsKG1vZHVsZSwgZmQsIGZkMiwgaW5oZXJpdGFibGUpOwogCiBleGl0OgpAQCAtMzM2MCw4ICszNDg5LDkgQEAKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6bG9ja2YiLAotICAgICAgICAmZmQsICZjb21tYW5kLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICAmZmQsICZjb21tYW5kLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb21tYW5kLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzM5NSwxMSArMzUyNSwxMyBAQAogICAgIFB5X29mZl90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJmk6bHNlZWsiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJnBvc2l0aW9uLCAmaG93KSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbHNlZWtfaW1wbChtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21QeV9vZmZfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM0MjYsOCArMzU1OCw5IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImluOnJlYWQiLAotICAgICAgICAmZmQsICZsZW5ndGgpKQorICAgICAgICAmZmQsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC0zNDY1LDExICszNTk4LDEzIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpyZWFkdiIsCi0gICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICAmZmQsICZidWZmZXJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19yZWFkdl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNTA0LDggKzM2MzksOSBAQAogICAgIFB5X29mZl90IG9mZnNldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsCi0gICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgJmZkLCAmbGVuZ3RoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHJlYWRfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgsIG9mZnNldCk7CiAKIGV4aXQ6CkBAIC0zNTM1LDE3ICszNjcxLDIwIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6d3JpdGUiLAotICAgICAgICAmZmQsICZkYXRhKSkKKyAgICAgICAgJmZkLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmZGF0YSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNTYwLDIxICszNjk5LDIzIEBACiAiRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4iKTsKIAogI2RlZmluZSBPU19GU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3RhdF9fZG9jX199LAorICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfRkFTVENBTEwsIG9zX2ZzdGF0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpmc3RhdCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpmc3RhdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0X2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zNjAzLDExICszNzQ0LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzYXR0eSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzYXR0eSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfaXNhdHR5X2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM2NjUsOCArMzgwOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGlwZTIiLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGlwZTJfaW1wbChtb2R1bGUsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTM3MDEsMTEgKzM4NDUsMTMgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOndyaXRldiIsCi0gICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICAmZmQsICZidWZmZXJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc193cml0ZXZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzc0MiwxNyArMzg4OCwyMCBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwKLSAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKQorICAgICAgICAmZmQsICZidWZmZXIsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcHdyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmJ1ZmZlciwgb2Zmc2V0KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzc3MywyMyArMzkyMiwyNSBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX01LRklGT19NRVRIT0RERUYgICAgXAotICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZmlmb19fZG9jX199LAorICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9GQVNUQ0FMTCwgb3NfbWtmaWZvX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta2ZpZm9faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX21rZmlmbyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rZmlmbyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtmaWZvIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZSA9IDQzODsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtmaWZvX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTM4MjIsMjUgKzM5NzMsMjcgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19NS05PRF9NRVRIT0RERUYgICAgXAotICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta25vZF9fZG9jX199LAorICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfRkFTVENBTEwsIG9zX21rbm9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta25vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGRldl90IGRldmljZSwKICAgICAgICAgICAgICAgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta25vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rbm9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta25vZCIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSAzODQ7CiAgICAgZGV2X3QgZGV2aWNlID0gMDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpTyYkTyY6bWtub2QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlLCBNS05PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rbm9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGV2aWNlLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMzg3MywxMSArNDAyNiwxMyBAQAogICAgIGRldl90IGRldmljZTsKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWpvcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzkwNywxMSArNDA2MiwxMyBAQAogICAgIGRldl90IGRldmljZTsKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19taW5vcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzk0MywxMSArNDEwMCwxMyBAQAogICAgIGRldl90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOm1ha2VkZXYiLAotICAgICAgICAmbWFqb3IsICZtaW5vcikpCisgICAgICAgICZtYWpvciwgJm1pbm9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWtlZGV2X2ltcGwobW9kdWxlLCBtYWpvciwgbWlub3IpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IChkZXZfdCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9QeUxvbmdfRnJvbURldihfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5NzgsOCArNDEzNyw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnRydW5jYXRlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mdHJ1bmNhdGVfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtNDAwMCwyMiArNDE2MCwyNCBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3RydW5jYXRlX19kb2NfX30sCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfdHJ1bmNhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3RydW5jYXRlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeV9vZmZfdCBsZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdHJ1bmNhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc190cnVuY2F0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyY6dHJ1bmNhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInRydW5jYXRlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlRSVU5DQVRFKTsKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3RydW5jYXRlX2ltcGwobW9kdWxlLCAmcGF0aCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQwNTQsOCArNDIxNiw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWxsb2NhdGVfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC00MDk3LDggKzQyNjAsOSBAQAogICAgIGludCBhZHZpY2U7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8maTpwb3NpeF9mYWR2aXNlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCwgJmFkdmljZSkpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFkdmlzZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UpOwogCiBleGl0OgpAQCAtNDEyOSw4ICs0MjkzLDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOnB1dGVudiIsCi0gICAgICAgICZuYW1lLCAmdmFsdWUpKQorICAgICAgICAmbmFtZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDE2MSw4ICs0MzI2LDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnB1dGVudiIsCi0gICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MTk2LDggKzQzNjIsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5zZXRlbnYiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuc2V0ZW52IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bnNldGVudl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC00MjI3LDggKzQzOTQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnN0cmVycm9yIiwgJmNvZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0cmVycm9yX2ltcGwobW9kdWxlLCBjb2RlKTsKIAogZXhpdDoKQEAgLTQyNTYsMTEgKzQ0MjQsMTMgQEAKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOldDT1JFRFVNUCIsICZzdGF0dXMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XQ09SRURVTVBfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQyODEsMjUgKzQ0NTEsMjggQEAKICJqb2IgY29udHJvbCBzdG9wLiIpOwogCiAjZGVmaW5lIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAorICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGQ09OVElOVUVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRkNPTlRJTlVFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGQ09OVElOVUVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGQ09OVElOVUVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGQ09OVElOVUVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGQ09OVElOVUVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzE3LDI1ICs0NDkwLDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgc3RvcHBlZC4iKTsKIAogI2RlZmluZSBPU19XSUZTVE9QUEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCisgICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRlNUT1BQRURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGU1RPUFBFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGU1RPUFBFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRlNUT1BQRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGU1RPUFBFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGU1RPUFBFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNUT1BQRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzNTMsMjUgKzQ1MjksMjggQEAKICJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsLiIpOwogCiAjZGVmaW5lIE9TX1dJRlNJR05BTEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZTSUdOQUxFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTSUdOQUxFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRlNJR05BTEVEX19kb2NfX30sCisgICAgeyJXSUZTSUdOQUxFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTSUdOQUxFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGU0lHTkFMRURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGU0lHTkFMRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRlNJR05BTEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGU0lHTkFMRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGU0lHTkFMRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNJR05BTEVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGU0lHTkFMRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzODksMjUgKzQ1NjgsMjggQEAKICJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4iKTsKIAogI2RlZmluZSBPU19XSUZFWElURURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZFWElURURfX2RvY19ffSwKKyAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRkVYSVRFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZFWElURURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRkVYSVRFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRkVYSVRFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkVYSVRFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkVYSVRFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQyNSwyNSArNDYwNywyOCBAQAogIlJldHVybiB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBmcm9tIHN0YXR1cy4iKTsKIAogI2RlZmluZSBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYgICAgXAotICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAorICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfRkFTVENBTEwsIG9zX1dFWElUU1RBVFVTX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dFWElUU1RBVFVTX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XRVhJVFNUQVRVUyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dFWElUU1RBVFVTKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldFWElUU1RBVFVTIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dFWElUU1RBVFVTX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NDYxLDI1ICs0NjQ2LDI4IEBACiAiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKIAogI2RlZmluZSBPU19XVEVSTVNJR19NRVRIT0RERUYgICAgXAotICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XVEVSTVNJR19fZG9jX199LAorICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfRkFTVENBTEwsIG9zX1dURVJNU0lHX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dURVJNU0lHX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XVEVSTVNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dURVJNU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldURVJNU0lHIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dURVJNU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NDk3LDI1ICs0Njg1LDI4IEBACiAiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCBzdG9wcGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKIAogI2RlZmluZSBPU19XU1RPUFNJR19NRVRIT0RERUYgICAgXAotICAgIHsiV1NUT1BTSUciLCAoUHlDRnVuY3Rpb24pb3NfV1NUT1BTSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XU1RPUFNJR19fZG9jX199LAorICAgIHsiV1NUT1BTSUciLCAoUHlDRnVuY3Rpb24pb3NfV1NUT1BTSUcsIE1FVEhfRkFTVENBTEwsIG9zX1dTVE9QU0lHX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dTVE9QU0lHX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XU1RPUFNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dTVE9QU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldTVE9QU0lHIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXU1RPUFNJRyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dTVE9QU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NTQ2LDggKzQ3MzcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpmc3RhdHZmcyIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmZzdGF0dmZzIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0dmZzX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC00NTY5LDIxICs0NzYxLDIzIEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfU1RBVFZGU19NRVRIT0RERUYgICAgXAotICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdHZmc19fZG9jX199LAorICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX0ZBU1RDQUxMLCBvc19zdGF0dmZzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zdGF0dmZzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXR2ZnMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zdGF0dmZzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOnN0YXR2ZnMiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXR2ZnMiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GU1RBVFZGUyk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdHZmc19pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtNDYwNCwyMSArNDc5OCwyMyBAQAogIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSAodG90YWwsIGZyZWUpIHR1cGxlLiIpOwogCiAjZGVmaW5lIE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGICAgIFwKLSAgICB7Il9nZXRkaXNrdXNhZ2UiLCAoUHlDRnVuY3Rpb24pb3NfX2dldGRpc2t1c2FnZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKKyAgICB7Il9nZXRkaXNrdXNhZ2UiLCAoUHlDRnVuY3Rpb24pb3NfX2dldGRpc2t1c2FnZSwgTUVUSF9GQVNUQ0FMTCwgb3NfX2dldGRpc2t1c2FnZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2dldGRpc2t1c2FnZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9VTklDT0RFICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRkaXNrdXNhZ2VfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtNDY1MiwxMSArNDg0OCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZwYXRoY29uZiIsCi0gICAgICAgICZmZCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgICAgICZmZCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZnBhdGhjb25mX2ltcGwobW9kdWxlLCBmZCwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ2NzgsMjYgKzQ4NzYsMjkgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19QQVRIQ09ORl9NRVRIT0RERUYgICAgXAotICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19wYXRoY29uZl9fZG9jX199LAorICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfRkFTVENBTEwsIG9zX3BhdGhjb25mX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19wYXRoY29uZl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcGF0aGNvbmYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19wYXRoY29uZihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJjpwYXRoY29uZiIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicGF0aGNvbmYiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GUEFUSENPTkYpOwogICAgIGludCBuYW1lOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcGF0aGNvbmZfaW1wbChtb2R1bGUsICZwYXRoLCBuYW1lKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDcyOSw4ICs0OTMwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Y29uZnN0ciIsIGNvbnZfY29uZnN0cl9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Y29uZnN0ciIsIGNvbnZfY29uZnN0cl9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY29uZnN0cl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC00NzYwLDExICs0OTYyLDEzIEBACiAgICAgaW50IG5hbWU7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzY29uZl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ3OTQsNiArNDk5OCw2MSBAQAogICAgIHJldHVybiBvc19hYm9ydF9pbXBsKG1vZHVsZSk7CiB9CiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19zdGFydGZpbGVfX2RvY19fLAorInN0YXJ0ZmlsZSgkbW9kdWxlLCAvLCBmaWxlcGF0aCwgb3BlcmF0aW9uPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJzdGFydGZpbGUoZmlsZXBhdGggWywgb3BlcmF0aW9uXSlcbiIKKyJcbiIKKyJTdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cbiIKKyJcbiIKKyJXaGVuIFwib3BlcmF0aW9uXCIgaXMgbm90IHNwZWNpZmllZCBvciBcIm9wZW5cIiwgdGhpcyBhY3RzIGxpa2VcbiIKKyJkb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG4iCisiYXJndW1lbnQgdG8gdGhlIERPUyBcInN0YXJ0XCIgY29tbWFuZDogdGhlIGZpbGUgaXMgb3BlbmVkIHdpdGggd2hhdGV2ZXJcbiIKKyJhcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuXG4iCisiV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcbiIKKyJ0aGUgZmlsZS4gIEEgdHlwaWNhbCBvcGVyYXRpb24gaXMgXCJwcmludFwiLlxuIgorIlxuIgorInN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG4iCisiVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheVxuIgorInRvIHJldHJpZXZlIHRoZSBhcHBsaWNhdGlvblwncyBleGl0IHN0YXR1cy5cbiIKKyJcbiIKKyJUaGUgZmlsZXBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgSWYgeW91IHdhbnQgdG8gdXNlXG4iCisiYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcbiIKKyJ0aGUgdW5kZXJseWluZyBXaW4zMiBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24gZG9lc25cJ3Qgd29yayBpZiBpdCBpcy4iKTsKKworI2RlZmluZSBPU19TVEFSVEZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InN0YXJ0ZmlsZSIsIChQeUNGdW5jdGlvbilvc19zdGFydGZpbGUsIE1FVEhfRkFTVENBTEwsIG9zX3N0YXJ0ZmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhcnRmaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpmaWxlcGF0aCwgUHlfVU5JQ09ERSAqb3BlcmF0aW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGVwYXRoIiwgIm9wZXJhdGlvbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfHU6c3RhcnRmaWxlIiwgX2tleXdvcmRzLCAwfTsKKyAgICBwYXRoX3QgZmlsZXBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhcnRmaWxlIiwgImZpbGVwYXRoIiwgMCwgMCk7CisgICAgUHlfVU5JQ09ERSAqb3BlcmF0aW9uID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmZpbGVwYXRoLCAmb3BlcmF0aW9uKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXJ0ZmlsZV9pbXBsKG1vZHVsZSwgJmZpbGVwYXRoLCBvcGVyYXRpb24pOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGZpbGVwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZmaWxlcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCiAjaWYgZGVmaW5lZChIQVZFX0dFVExPQURBVkcpCiAKIFB5RG9jX1NUUlZBUihvc19nZXRsb2FkYXZnX19kb2NfXywKQEAgLTQ4MzAsMjEgKzUwODksMjMgQEAKICJJZiB0aGUgZGV2aWNlIGlzIG5vdCBhIHRlcm1pbmFsLCByZXR1cm4gTm9uZS4iKTsKIAogI2RlZmluZSBPU19ERVZJQ0VfRU5DT0RJTkdfTUVUSE9EREVGICAgIFwKLSAgICB7ImRldmljZV9lbmNvZGluZyIsIChQeUNGdW5jdGlvbilvc19kZXZpY2VfZW5jb2RpbmcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKKyAgICB7ImRldmljZV9lbmNvZGluZyIsIChQeUNGdW5jdGlvbilvc19kZXZpY2VfZW5jb2RpbmcsIE1FVEhfRkFTVENBTEwsIG9zX2RldmljZV9lbmNvZGluZ19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2RldmljZV9lbmNvZGluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2RldmljZV9lbmNvZGluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6ZGV2aWNlX2VuY29kaW5nIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2RldmljZV9lbmNvZGluZ19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNDg3NCw4ICs1MTM1LDkgQEAKICAgICB1aWRfdCBzdWlkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKLSAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVzdWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkLCBzdWlkKTsKIAogZXhpdDoKQEAgLTQ5MDcsOCArNTE2OSw5IEBACiAgICAgZ2lkX3Qgc2dpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc2dpZCIsCi0gICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJnNnaWQpKQorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc2dpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCwgc2dpZCk7CiAKIGV4aXQ6CkBAIC00OTc1LDI0ICs1MjM4LDI2IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfR0VUWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0eGF0dHJfX2RvY19ffSwKKyAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXR4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0eGF0dHJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAogICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKICAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTAyMSwyNiArNTI4NiwyOCBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX1NFVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHhhdHRyX19kb2NfX30sCisgICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2V0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NldHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICp2YWx1ZSwgaW50IGZsYWdzLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKICAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOwogICAgIFB5X2J1ZmZlciB2YWx1ZSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgZmxhZ3MgPSAwOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmdmFsdWUsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MDQ5LDggKzUzMTYsOSBAQAogICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLwogICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKICAgICAvKiBDbGVhbnVwIGZvciB2YWx1ZSAqLwotICAgIGlmICh2YWx1ZS5vYmopCisgICAgaWYgKHZhbHVlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTA3MSwyNCArNTMzOSwyNiBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX1JFTU9WRVhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCisgICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVtb3ZleGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlbW92ZXhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZW1vdmV4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZXhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZXhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUxMTcsMjIgKzUzODcsMjQgQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19MSVNUWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0eGF0dHJfX2RvY19ffSwKKyAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX2xpc3R4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGlzdHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xpc3R4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpc3R4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdHhhdHRyIiwgInBhdGgiLCAxLCAxKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3R4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MTYyLDggKzU0MzQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC01MTc0LDcgKzU0NDcsMTEgQEAKICJjcHVfY291bnQoJG1vZHVsZSwgLylcbiIKICItLVxuIgogIlxuIgotIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuIik7CisiUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtOyByZXR1cm4gTm9uZSBpZiBpbmRldGVybWluYWJsZS5cbiIKKyJcbiIKKyJUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW5cbiIKKyJ1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoXG4iCisiYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAiKTsKIAogI2RlZmluZSBPU19DUFVfQ09VTlRfTUVUSE9EREVGICAgIFwKICAgICB7ImNwdV9jb3VudCIsIChQeUNGdW5jdGlvbilvc19jcHVfY291bnQsIE1FVEhfTk9BUkdTLCBvc19jcHVfY291bnRfX2RvY19ffSwKQEAgLTUyMDcsMTEgKzU0ODQsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTIzOCw4ICs1NTE3LDkgQEAKICAgICBpbnQgaW5oZXJpdGFibGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9pbmhlcml0YWJsZSIsCi0gICAgICAgICZmZCwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgJmZkLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCwgaW5oZXJpdGFibGUpOwogCiBleGl0OgpAQCAtNTI1OCwyMCArNTUzOCwyMiBAQAogICAgIHsiZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX08sIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSk7Citvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50cHRyX3QgaGFuZGxlOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTI5MiwxOSArNTU3NCwyMCBAQAogICAgIHsic2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX1ZBUkFSR1MsIG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGluaGVyaXRhYmxlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgInA6c2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsCi0gICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpCisgICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTUzMTMsNiArNTU5Niw3NSBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCitQeURvY19TVFJWQVIob3NfZnNwYXRoX19kb2NfXywKKyJmc3BhdGgoJG1vZHVsZSwgLywgcGF0aClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LlxuIgorIlxuIgorIklmIHRoZSBvYmplY3QgaXMgc3RyIG9yIGJ5dGVzLCB0aGVuIGFsbG93IGl0IHRvIHBhc3MgdGhyb3VnaCBhcy1pcy4gSWYgdGhlXG4iCisib2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXJcbiIKKyJ0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4iKTsKKworI2RlZmluZSBPU19GU1BBVEhfTUVUSE9EREVGICAgIFwKKyAgICB7ImZzcGF0aCIsIChQeUNGdW5jdGlvbilvc19mc3BhdGgsIE1FVEhfRkFTVENBTEwsIG9zX2ZzcGF0aF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86ZnNwYXRoIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19mc3BhdGhfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NX1NZU0NBTEwpCisKK1B5RG9jX1NUUlZBUihvc19nZXRyYW5kb21fX2RvY19fLAorImdldHJhbmRvbSgkbW9kdWxlLCAvLCBzaXplLCBmbGFncz0wKVxuIgorIi0tXG4iCisiXG4iCisiT2J0YWluIGEgc2VyaWVzIG9mIHJhbmRvbSBieXRlcy4iKTsKKworI2RlZmluZSBPU19HRVRSQU5ET01fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHJhbmRvbSIsIChQeUNGdW5jdGlvbilvc19nZXRyYW5kb20sIE1FVEhfRkFTVENBTEwsIG9zX2dldHJhbmRvbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2l6ZSIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Im58aTpnZXRyYW5kb20iLCBfa2V5d29yZHMsIDB9OworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzaXplLCAmZmxhZ3MpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cmFuZG9tX2ltcGwobW9kdWxlLCBzaXplLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkgKi8KKwogI2lmbmRlZiBPU19UVFlOQU1FX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfVFRZTkFNRV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19UVFlOQU1FX01FVEhPRERFRikgKi8KQEAgLTU0OTMsNiArNTg0NSwxMCBAQAogICAgICNkZWZpbmUgT1NfR0VUR0lEX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdJRF9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgT1NfR0VUUElEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBJRF9NRVRIT0RERUYpICovCisKICNpZm5kZWYgT1NfR0VUR1JPVVBTX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfR0VUR1JPVVBTX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdST1VQU19NRVRIT0RERUYpICovCkBAIC01NzQxLDYgKzYwOTcsMTAgQEAKICAgICAjZGVmaW5lIE9TX1NZU0NPTkZfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lTQ09ORl9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgT1NfU1RBUlRGSUxFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU1RBUlRGSUxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NUQVJURklMRV9NRVRIT0RERUYpICovCisKICNpZm5kZWYgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUTE9BREFWR19NRVRIT0RERUYpICovCkBAIC01Nzg0LDQgKzYxNDQsOCBAQAogI2lmbmRlZiBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZDVmODMxYjIzMTQ1ZDFlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKworI2lmbmRlZiBPU19HRVRSQU5ET01fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRSQU5ET01fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUkFORE9NX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOWVkNTcwM2QyZmViMGQ5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oCmluZGV4IGNiMTkxYTAuLmY5ZTA2NDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaApAQCAtMzMsOCArMzMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICphcmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHB3bmFtIiwgJmFyZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRwd25hbSIsICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHdkX2dldHB3bmFtX2ltcGwobW9kdWxlLCBhcmcpOwogCiBleGl0OgpAQCAtNjgsNCArNjksNCBAQAogI2lmbmRlZiBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAgICAgI2RlZmluZSBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoUFdEX0dFVFBXQUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMGVhMWM1YzgzMmYwYzFhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYzQxZDhkODhlYzIwNmQ4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKaW5kZXggYzViNWM3MS4uNzVhMDk2YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKQEAgLTI1LDggKzI1LDkgQEAKICAgICBpbnQgaXNmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpQYXJzZSIsCi0gICAgICAgICZkYXRhLCAmaXNmaW5hbCkpCisgICAgICAgICZkYXRhLCAmaXNmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9pbXBsKHNlbGYsIGRhdGEsIGlzZmluYWwpOwogCiBleGl0OgpAQCAtNjAsOCArNjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmJhc2U7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbChzZWxmLCBiYXNlKTsKIAogZXhpdDoKQEAgLTEyOSw4ICsxMzEsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienxzOkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlIiwKLSAgICAgICAgJmNvbnRleHQsICZlbmNvZGluZykpCisgICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbChzZWxmLCBjb250ZXh0LCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC0xNjAsOCArMTYzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmxhZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlNldFBhcmFtRW50aXR5UGFyc2luZyIsICZmbGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19pbXBsKHNlbGYsIGZsYWcpOwogCiBleGl0OgpAQCAtMTkzLDggKzE5Nyw5IEBACiAgICAgaW50IGZsYWcgPSAxOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwKLSAgICAgICAgJmZsYWcpKQorICAgICAgICAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREX2ltcGwoc2VsZiwgZmxhZyk7CiAKIGV4aXQ6CkBAIC0yMjgsMjQgKzIzMywyNiBAQAogIlJldHVybiBhIG5ldyBYTUwgcGFyc2VyIG9iamVjdC4iKTsKIAogI2RlZmluZSBQWUVYUEFUX1BBUlNFUkNSRUFURV9NRVRIT0RERUYgICAgXAotICAgIHsiUGFyc2VyQ3JlYXRlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfUGFyc2VyQ3JlYXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgcHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19ffSwKKyAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9GQVNUQ0FMTCwgcHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IsIFB5T2JqZWN0ICppbnRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitweWV4cGF0X1BhcnNlckNyZWF0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJuYW1lc3BhY2Vfc2VwYXJhdG9yIiwgImludGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Inx6ek86UGFyc2VyQ3JlYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmludGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChtb2R1bGUsIGVuY29kaW5nLCBuYW1lc3BhY2Vfc2VwYXJhdG9yLCBpbnRlcm4pOwogCiBleGl0OgpAQCAtMjcwLDggKzI3Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgbG9uZyBjb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJsOkVycm9yU3RyaW5nIiwgJmNvZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChtb2R1bGUsIGNvZGUpOwogCiBleGl0OgpAQCAtMjgxLDQgKzI4OSw0IEBACiAjaWZuZGVmIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCiAgICAgI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0NzljZmFiNjA3ZTlkYzggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU4ODlmN2M2YWY2Y2M0MmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaAppbmRleCA1YjhkYjgwLi5iMDhlOTJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaApAQCAtNzIsMjQgKzcyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQTEgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMV9TSEExX01FVEhPRERFRiAgICBcCi0gICAgeyJzaGExIiwgKFB5Q0Z1bmN0aW9uKV9zaGExX3NoYTEsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhMV9zaGExX19kb2NfX30sCisgICAgeyJzaGExIiwgKFB5Q0Z1bmN0aW9uKV9zaGExX3NoYTEsIE1FVEhfRkFTVENBTEwsIF9zaGExX3NoYTFfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGExX3NoYTFfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGExX3NoYTEoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMV9zaGExKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGExIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTEiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGExX3NoYTFfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjZhMTk0ZmJiMGI5NGYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDMwNDUwZjNmODA2ODk1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oCmluZGV4IDY2MTU2OWMuLjExNWRiNTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaApAQCAtNzIsMjEgKzcyLDIzIEBACiAiUmV0dXJuIGEgbmV3IFNIQS0yNTYgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMjU2X1NIQTI1Nl9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjU2LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKKyAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTI1NiwgTUVUSF9GQVNUQ0FMTCwgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGEyNTZfc2hhMjU2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMjU2X3NoYTI1NihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGEyNTZfc2hhMjU2KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEyNTYiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjU2IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTI1Nl9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKQEAgLTEwMCwyNCArMTAyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQS0yMjQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMjU2X1NIQTIyNF9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjI0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKKyAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGEyNTZfc2hhMjI0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMjU2X3NoYTIyNChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGEyNTZfc2hhMjI0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEyMjQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjI0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTIyNF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhMWZjNTQ4MGUzOTlmOTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5NDM5ZDcwZGI3ZWFkNWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKaW5kZXggZDY0YzJhNC4uYTJiNTdmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oCkBAIC0yLDggKzIsNiBAQAogcHJlc2VydmUKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9jb3B5X19kb2NfXywKICJjb3B5KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC0yMiwxMCArMjAsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2NvcHlfaW1wbChzZWxmKTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2RpZ2VzdF9fZG9jX18sCiAiZGlnZXN0KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC00NCwxMCArMzgsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfaGV4ZGlnZXN0X19kb2NfXywKICJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCiAiLS1cbiIKQEAgLTY2LDEwICs1Niw2IEBACiAgICAgcmV0dXJuIFNIQTUxMlR5cGVfaGV4ZGlnZXN0X2ltcGwoc2VsZik7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV91cGRhdGVfX2RvY19fLAogInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgogIi0tXG4iCkBAIC03OSwxMCArNjUsNiBAQAogI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAogICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfdXBkYXRlLCBNRVRIX08sIFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfX30sCiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoX3NoYTUxMl9zaGE1MTJfX2RvY19fLAogInNoYTUxMigkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCiAiLS1cbiIKQEAgLTkwLDMxICs3MiwyOSBAQAogIlJldHVybiBhIG5ldyBTSEEtNTEyIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTUxMiIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTUxMiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGE1MTJfc2hhNTEyX19kb2NfX30sCisgICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfRkFTVENBTEwsIF9zaGE1MTJfc2hhNTEyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhNTEyX3NoYTUxMl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTUxMl9zaGE1MTIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhNTEyX3NoYTUxMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhNTEyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTUxMiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGE1MTJfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihfc2hhNTEyX3NoYTM4NF9fZG9jX18sCiAic2hhMzg0KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKICItLVxuIgpAQCAtMTIyLDUwICsxMDIsMjYgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRiAgICBcCi0gICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGEzODQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAorICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhMzg0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTUxMl9zaGEzODRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGE1MTJfc2hhMzg0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTUxMl9zaGEzODQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTM4NCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEzODQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhMzg0X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKLSAgICAjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYjg3ZjQ5NGRmNTBmZmMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOGYxNTU5OGMzNDg3MDQ1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oCmluZGV4IGM4ZjRjZDUuLmY4ZDViZDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaApAQCAtMjMsMTEgKzIzLDEzIEBACiAgICAgaW50IHNlY29uZHM7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmFsYXJtIiwgJnNlY29uZHMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBzaWduYWxfYWxhcm1faW1wbChtb2R1bGUsIHNlY29uZHMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC04NSw4ICs4Nyw5IEBACiAgICAgUHlPYmplY3QgKmhhbmRsZXI7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnNpZ25hbCIsCi0gICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkKKyAgICAgICAgJnNpZ25hbG51bSwgJmhhbmRsZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtLCBoYW5kbGVyKTsKIAogZXhpdDoKQEAgLTExNyw4ICsxMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBzaWduYWxudW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0c2lnbmFsIiwgJnNpZ25hbG51bSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldHNpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtKTsKIAogZXhpdDoKQEAgLTE1MCw4ICsxNTQsOSBAQAogICAgIGludCBmbGFnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzaWdpbnRlcnJ1cHQiLAotICAgICAgICAmc2lnbmFsbnVtLCAmZmxhZykpCisgICAgICAgICZzaWduYWxudW0sICZmbGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgZmxhZyk7CiAKIGV4aXQ6CkBAIC0xODksOCArMTk0LDkgQEAKICAgICBkb3VibGUgaW50ZXJ2YWwgPSAwLjA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlkfGQ6c2V0aXRpbWVyIiwKLSAgICAgICAgJndoaWNoLCAmc2Vjb25kcywgJmludGVydmFsKSkKKyAgICAgICAgJndoaWNoLCAmc2Vjb25kcywgJmludGVydmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zZXRpdGltZXJfaW1wbChtb2R1bGUsIHdoaWNoLCBzZWNvbmRzLCBpbnRlcnZhbCk7CiAKIGV4aXQ6CkBAIC0yMTksOCArMjI1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgd2hpY2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9nZXRpdGltZXJfaW1wbChtb2R1bGUsIHdoaWNoKTsKIAogZXhpdDoKQEAgLTI1MSw4ICsyNTgsOSBAQAogICAgIFB5T2JqZWN0ICptYXNrOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpwdGhyZWFkX3NpZ21hc2siLAotICAgICAgICAmaG93LCAmbWFzaykpCisgICAgICAgICZob3csICZtYXNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfaW1wbChtb2R1bGUsIGhvdywgbWFzayk7CiAKIGV4aXQ6CkBAIC0zNDQsOCArMzUyLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNpZ3RpbWVkd2FpdCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpCisgICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lndGltZWR3YWl0X2ltcGwobW9kdWxlLCBzaWdzZXQsIHRpbWVvdXRfb2JqKTsKIAogZXhpdDoKQEAgLTM3Niw4ICszODUsOSBAQAogICAgIGludCBzaWduYWxudW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxpOnB0aHJlYWRfa2lsbCIsCi0gICAgICAgICZ0aHJlYWRfaWQsICZzaWduYWxudW0pKQorICAgICAgICAmdGhyZWFkX2lkLCAmc2lnbmFsbnVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9wdGhyZWFkX2tpbGxfaW1wbChtb2R1bGUsIHRocmVhZF9pZCwgc2lnbmFsbnVtKTsKIAogZXhpdDoKQEAgLTQyOSw0ICs0MzksNCBAQAogI2lmbmRlZiBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWZhNTk4NDEyYmZiOGQyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjk5MGVmMGQwYmE3MmI2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKaW5kZXggZTI2YWNmMS4uYjI0NzlmZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKQEAgLTI0LDggKzI0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqYXJnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRzcG5hbSIsICZhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNwd2RfZ2V0c3BuYW1faW1wbChtb2R1bGUsIGFyZyk7CiAKIGV4aXQ6CkBAIC02NSw0ICs2Niw0IEBACiAjaWZuZGVmIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCiAgICAgI2RlZmluZSBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFNQV0RfR0VUU1BBTExfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxMGY2ODFiMzZmNTRjMzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA3Y2Q4YWYwYWZkNzdmZTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCmluZGV4IGQ1MjBjMWUuLmQ0ODFjY2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKQEAgLTI3LDggKzI3LDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkZWNpbWFsIiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01OSw4ICs2MCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGlnaXQiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC05Miw4ICs5NCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bnVtZXJpYyIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX251bWVyaWNfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTE4LDggKzEyMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTE0Niw4ICsxNTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpiaWRpcmVjdGlvbmFsIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0xNzUsMTEgKzE4MCwxMyBAQAogICAgIGludCBjaHI7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y29tYmluaW5nIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChzZWxmLCBjaHIpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMDgsMTEgKzIxNSwxMyBAQAogICAgIGludCBjaHI7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfaW1wbChzZWxmLCBjaHIpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMzcsOCArMjQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZWFzdF9hc2lhbl93aWR0aCIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMjY1LDggKzI3NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmRlY29tcG9zaXRpb24iLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uX2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTI5Niw4ICszMDcsOSBAQAogICAgIFB5T2JqZWN0ICppbnB1dDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08hOm5vcm1hbGl6ZSIsCi0gICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCisgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplX2ltcGwoc2VsZiwgZm9ybSwgaW5wdXQpOwogCiBleGl0OgpAQCAtMzI3LDggKzMzOSw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bmFtZSIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25hbWVfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMzU4LDExICszNzEsMTIgQEAKICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoc2VsZiwgbmFtZSwgbmFtZV9sZW5ndGgpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGY4ZGEzM2M2YmM2ZWZjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTMxM2NlMTI5ZGE4N2IyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCmluZGV4IGIxYWY3Y2UuLmZkYTM5MmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCkBAIC0zLDQ0ICszLDQ4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIFB5RG9jX1NUUlZBUih6bGliX2NvbXByZXNzX19kb2NfXywKLSJjb21wcmVzcygkbW9kdWxlLCBieXRlcywgbGV2ZWw9Wl9ERUZBVUxUX0NPTVBSRVNTSU9OLCAvKVxuIgorImNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIC8sIGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTilcbiIKICItLVxuIgogIlxuIgogIlJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuXG4iCiAiXG4iCi0iICBieXRlc1xuIgorIiAgZGF0YVxuIgogIiAgICBCaW5hcnkgZGF0YSB0byBiZSBjb21wcmVzc2VkLlxuIgogIiAgbGV2ZWxcbiIKLSIgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4iKTsKKyIgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOSBvciAtMS4iKTsKIAogI2RlZmluZSBaTElCX0NPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIHpsaWJfY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmJ5dGVzLCBpbnQgbGV2ZWwpOworemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGxldmVsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit6bGliX2NvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIGJ5dGVzID0ge05VTEwsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJsZXZlbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGk6Y29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aTpjb21wcmVzcyIsCi0gICAgICAgICZieXRlcywgJmxldmVsKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZsZXZlbCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NfaW1wbChtb2R1bGUsICZieXRlcywgbGV2ZWwpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzX2ltcGwobW9kdWxlLCAmZGF0YSwgbGV2ZWwpOwogCiBleGl0OgotICAgIC8qIENsZWFudXAgZm9yIGJ5dGVzICovCi0gICAgaWYgKGJ5dGVzLm9iaikKLSAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZieXRlcyk7CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIFB5RG9jX1NUUlZBUih6bGliX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJG1vZHVsZSwgZGF0YSwgd2JpdHM9TUFYX1dCSVRTLCBidWZzaXplPURFRl9CVUZfU0laRSwgLylcbiIKKyJkZWNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIC8sIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUpXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhLlxuIgpAQCAtNTMsMjkgKzU3LDMzIEBACiAiICAgIFRoZSBpbml0aWFsIG91dHB1dCBidWZmZXIgc2l6ZS4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIHpsaWJfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoremxpYl9kZWNvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgIndiaXRzIiwgImJ1ZnNpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpTyY6ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5X3NzaXplX3QgYnVmc2l6ZSA9IERFRl9CVUZfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aU8mOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSwgJndiaXRzLCBzc2l6ZV90X2NvbnZlcnRlciwgJmJ1ZnNpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJndiaXRzLCBzc2l6ZV90X2NvbnZlcnRlciwgJmJ1ZnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzX2ltcGwobW9kdWxlLCAmZGF0YSwgd2JpdHMsIGJ1ZnNpemUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTExMSwxNyArMTE5LDE4IEBACiAiICAgIGNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGxpa2VseSB0byBvY2N1ciBpbiB0aGUgaW5wdXQgZGF0YS4iKTsKIAogI2RlZmluZSBaTElCX0NPTVBSRVNTT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgemxpYl9jb21wcmVzc29ial9fZG9jX199LAorICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9GQVNUQ0FMTCwgemxpYl9jb21wcmVzc29ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9jb21wcmVzc29ial9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBsZXZlbCwgaW50IG1ldGhvZCwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgIGludCBtZW1MZXZlbCwgaW50IHN0cmF0ZWd5LCBQeV9idWZmZXIgKnpkaWN0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit6bGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLCAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLCAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aWlpaWl5Kjpjb21wcmVzc29iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGxldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwogICAgIGludCBtZXRob2QgPSBERUZMQVRFRDsKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CkBAIC0xMjksMTUgKzEzOCwxNyBAQAogICAgIGludCBzdHJhdGVneSA9IFpfREVGQVVMVF9TVFJBVEVHWTsKICAgICBQeV9idWZmZXIgemRpY3QgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aWlpaWl5Kjpjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsICZtZW1MZXZlbCwgJnN0cmF0ZWd5LCAmemRpY3QpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzb2JqX2ltcGwobW9kdWxlLCBsZXZlbCwgbWV0aG9kLCB3Yml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCAmemRpY3QpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHpkaWN0ICovCi0gICAgaWYgKHpkaWN0Lm9iaikKKyAgICBpZiAoemRpY3Qub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmemRpY3QpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTUsMjIgKzE2NiwyNCBAQAogIiAgICBkaWN0aW9uYXJ5IGFzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdCBwcm9kdWNlZCB0aGUgaW5wdXQgZGF0YS4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NPQkpfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgemxpYl9kZWNvbXByZXNzb2JqX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9GQVNUQ0FMTCwgemxpYl9kZWNvbXByZXNzb2JqX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgd2JpdHMsIFB5T2JqZWN0ICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit6bGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndiaXRzIiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsid2JpdHMiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5T2JqZWN0ICp6ZGljdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJndiaXRzLCAmemRpY3QpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2JpdHMsICZ6ZGljdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIHdiaXRzLCB6ZGljdCk7CiAKIGV4aXQ6CkBAIC0yMDIsMjAgKzIxNSwyMiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9Db21wcmVzc19jb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIFB5RG9jX1NUUlZBUih6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgbWF4X2xlbmd0aD0wLCAvKVxuIgorImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIC8sIG1heF9sZW5ndGg9MClcbiIKICItLVxuIgogIlxuIgogIlJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgZGF0YS5cbiIKQEAgLTIzMiwyOCArMjQ3LDMyIEBACiAiQ2FsbCB0aGUgZmx1c2goKSBtZXRob2QgdG8gY2xlYXIgdGhlc2UgYnVmZmVycy4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8TyY6ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8TyY6ZGVjb21wcmVzcyIsCi0gICAgICAgICZkYXRhLCBzc2l6ZV90X2NvbnZlcnRlciwgJm1heF9sZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgc3NpemVfdF9jb252ZXJ0ZXIsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI4Myw4ICszMDIsOSBAQAogICAgIGludCBtb2RlID0gWl9GSU5JU0g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmZsdXNoIiwKLSAgICAgICAgJm1vZGUpKQorICAgICAgICAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0NvbXByZXNzX2ZsdXNoX2ltcGwoc2VsZiwgbW9kZSk7CiAKIGV4aXQ6CkBAIC0zNTcsOCArMzc3LDkgQEAKICAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IERFRl9CVUZfU0laRTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmZsdXNoIiwKLSAgICAgICAgc3NpemVfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICBzc2l6ZV90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0RlY29tcHJlc3NfZmx1c2hfaW1wbChzZWxmLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzkwLDE0ICs0MTEsMTYgQEAKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAxOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmFkbGVyMzIiLAotICAgICAgICAmZGF0YSwgJnZhbHVlKSkKKyAgICAgICAgJmRhdGEsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2FkbGVyMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDI3LDE0ICs0NTAsMTYgQEAKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmNyYzMyIiwKLSAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCisgICAgICAgICZkYXRhLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00NDIsNCArNDY3LDQgQEAKICNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgogICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzcxMWVmMDJkMWQ1Nzc2YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2E0ZTJiZmU3NTA0MjNhMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKaW5kZXggY2JhNDJhNy4uODMxOTc2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwpAQCAtODEsNiArODEsNTQgQEAKICNlbmRpZgogI2RlZmluZSBDTV9TQ0FMRV9ET1dOICgtKENNX1NDQUxFX1VQKzEpLzIpCiAKKy8qIENvbnN0YW50cyBjbWF0aC5pbmYsIGNtYXRoLmluZmosIGNtYXRoLm5hbiwgY21hdGgubmFuai4KKyAgIGNtYXRoLm5hbiBhbmQgY21hdGgubmFuaiBhcmUgZGVmaW5lZCBvbmx5IHdoZW4gZWl0aGVyCisgICBQWV9OT19TSE9SVF9GTE9BVF9SRVBSIGlzICpub3QqIGRlZmluZWQgKHdoaWNoIHNob3VsZCBiZQorICAgdGhlIG1vc3QgY29tbW9uIHNpdHVhdGlvbiBvbiBtYWNoaW5lcyB1c2luZyBhbiBJRUVFIDc1NAorICAgcmVwcmVzZW50YXRpb24pLCBvciBQeV9OQU4gaXMgZGVmaW5lZC4gKi8KKworc3RhdGljIGRvdWJsZQorbV9pbmYodm9pZCkKK3sKKyNpZm5kZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgIHJldHVybiBfUHlfZGdfaW5maW5pdHkoMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9IVUdFX1ZBTDsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlfY29tcGxleAorY19pbmZqKHZvaWQpCit7CisgICAgUHlfY29tcGxleCByOworICAgIHIucmVhbCA9IDAuMDsKKyAgICByLmltYWcgPSBtX2luZigpOworICAgIHJldHVybiByOworfQorCisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisKK3N0YXRpYyBkb3VibGUKK21fbmFuKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX3N0ZG5hbigwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X05BTjsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlfY29tcGxleAorY19uYW5qKHZvaWQpCit7CisgICAgUHlfY29tcGxleCByOworICAgIHIucmVhbCA9IDAuMDsKKyAgICByLmltYWcgPSBtX25hbigpOworICAgIHJldHVybiByOworfQorCisjZW5kaWYKKwogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2FzaW5oX2ltcGwoUHlPYmplY3QgKiwgUHlfY29tcGxleCk7CiBzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hdGFuaF9pbXBsKFB5T2JqZWN0ICosIFB5X2NvbXBsZXgpOwpAQCAtMTIzOSw2ICsxMjg3LDEzIEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsCiAgICAgICAgICAgICAgICAgICAgICAgIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGF1IiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfVEFVKSk7IC8qIDJwaSAqLworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5mIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1faW5mKCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZmoiLCBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KGNfaW5maigpKSk7CisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuaiIsIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoY19uYW5qKCkpKTsKKyNlbmRpZgogCiAgICAgLyogaW5pdGlhbGl6ZSBzcGVjaWFsIHZhbHVlIHRhYmxlcyAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwppbmRleCBmMWZkYTQ4Li4xYzFlNGZiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCisrKyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKQEAgLTExOSw3ICsxMTksNyBAQAogICAgICAgIGhhbmRsZXIgZmFpbHMgaW4gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgKi8KICAgICB7U0lHU0VHViwgMCwgIlNlZ21lbnRhdGlvbiBmYXVsdCIsIH0KIH07Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmYXVsdGhhbmRsZXJfbnNpZ25hbHMgPSBcCitzdGF0aWMgY29uc3Qgc2l6ZV90IGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKICAgICBQeV9BUlJBWV9MRU5HVEgoZmF1bHRoYW5kbGVyX2hhbmRsZXJzKTsKIAogI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICBmZCA9IF9QeUxvbmdfQXNJbnQoZmlsZSk7CiAgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRlciIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgIHJldHVybiBmZDsKICAgICB9CiAKLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtMTg2LDcgKzE4Niw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICBlbHNlIHsKQEAgLTIwMiw4ICsyMDIsOSBAQAogc3RhdGljIFB5VGhyZWFkU3RhdGUqCiBnZXRfdGhyZWFkX3N0YXRlKHZvaWQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKICAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyoganVzdCBpbiBjYXNlIGJ1dCB2ZXJ5IHVubGlrZWx5Li4uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzQsMTEgKzIzNSwxMiBAQAogICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCiAgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKICNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICB0c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKICNlbmRpZgogCi0gICAgaWYgKGFsbF90aHJlYWRzKQotICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGludGVycCwgdHN0YXRlKTsKKyAgICBpZiAoYWxsX3RocmVhZHMpIHsKKyAgICAgICAgKHZvaWQpX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCB0c3RhdGUpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQogICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CkBAIC0yNzIsNyArMjc0LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoYWxsX3RocmVhZHMpIHsKLSAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCB0c3RhdGUpOwogICAgICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4OCw2ICsyOTAsMTkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyKQoreworICAgIGlmICghaGFuZGxlci0+ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgKHZvaWQpc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgKHZvaWQpc2lnbmFsKGhhbmRsZXItPnNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOworI2VuZGlmCit9CisKIAogLyogSGFuZGxlciBmb3IgU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBzaWduYWxzLgogCkBAIC0zMDYsNyArMzIxLDcgQEAKIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcihpbnQgc2lnbnVtKQogewogICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOwotICAgIHVuc2lnbmVkIGludCBpOworICAgIHNpemVfdCBpOwogICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKIApAQCAtMzI0LDEyICszMzksNyBAQAogICAgIH0KIAogICAgIC8qIHJlc3RvcmUgdGhlIHByZXZpb3VzIGhhbmRsZXIgKi8KLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7Ci0jZWxzZQotICAgICh2b2lkKXNpZ25hbChzaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKLSNlbmRpZgotICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoaGFuZGxlcik7CiAKICAgICBQVVRTKGZkLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKICAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKQEAgLTM1MSwyMCArMzYxLDExNyBAQAogICAgIHJhaXNlKHNpZ251bSk7CiB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgTE9ORyBXSU5BUEkKK2ZhdWx0aGFuZGxlcl9leGNfaGFuZGxlcihzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyAqZXhjX2luZm8pCit7CisgICAgY29uc3QgaW50IGZkID0gZmF0YWxfZXJyb3IuZmQ7CisgICAgRFdPUkQgY29kZSA9IGV4Y19pbmZvLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkNvZGU7CisgICAgRFdPUkQgZmxhZ3MgPSBleGNfaW5mby0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25GbGFnczsKKworICAgIC8qIG9ubHkgbG9nIGZhdGFsIGV4Y2VwdGlvbnMgKi8KKyAgICBpZiAoZmxhZ3MgJiBFWENFUFRJT05fTk9OQ09OVElOVUFCTEUpIHsKKyAgICAgICAgLyogY2FsbCB0aGUgbmV4dCBleGNlcHRpb24gaGFuZGxlciAqLworICAgICAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKKyAgICB9CisKKyAgICBQVVRTKGZkLCAiV2luZG93cyBmYXRhbCBleGNlcHRpb246ICIpOworICAgIHN3aXRjaCAoY29kZSkKKyAgICB7CisgICAgLyogb25seSBmb3JtYXQgbW9zdCBjb21tb24gZXJyb3JzICovCisgICAgY2FzZSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTjogUFVUUyhmZCwgImFjY2VzcyB2aW9sYXRpb24iKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fRkxUX0RJVklERV9CWV9aRVJPOiBQVVRTKGZkLCAiZmxvYXQgZGl2aWRlIGJ5IHplcm8iKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fRkxUX09WRVJGTE9XOiBQVVRTKGZkLCAiZmxvYXQgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPOiBQVVRTKGZkLCAiaW50IGRpdmlkZSBieSB6ZXJvIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9PVkVSRkxPVzogUFVUUyhmZCwgImludGVnZXIgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fSU5fUEFHRV9FUlJPUjogUFVUUyhmZCwgInBhZ2UgZXJyb3IiKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1c6IFBVVFMoZmQsICJzdGFjayBvdmVyZmxvdyIpOyBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQVVRTKGZkLCAiY29kZSAiKTsKKyAgICAgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCBjb2RlKTsKKyAgICB9CisgICAgUFVUUyhmZCwgIlxuXG4iKTsKKworICAgIGlmIChjb2RlID09IEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OKSB7CisgICAgICAgIC8qIGRpc2FibGUgc2lnbmFsIGhhbmRsZXIgZm9yIFNJR1NFR1YgKi8KKyAgICAgICAgc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgICAgICBpZiAoaGFuZGxlci0+c2lnbnVtID09IFNJR1NFR1YpIHsKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGhhbmRsZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrKGZkLCBmYXRhbF9lcnJvci5hbGxfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWxfZXJyb3IuaW50ZXJwKTsKKworICAgIC8qIGNhbGwgdGhlIG5leHQgZXhjZXB0aW9uIGhhbmRsZXIgKi8KKyAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKK30KKyNlbmRpZgorCiAvKiBJbnN0YWxsIHRoZSBoYW5kbGVyIGZvciBmYXRhbCBzaWduYWxzLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKS4gKi8KIAorc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2VuYWJsZSh2b2lkKQoreworICAgIHNpemVfdCBpOworCisgICAgaWYgKGZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAxOworCisgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXI7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisjZW5kaWYKKyAgICAgICAgaW50IGVycjsKKworICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyAgICAgICAgYXNzZXJ0KCFoYW5kbGVyLT5lbmFibGVkKTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICBhY3Rpb24uc2FfaGFuZGxlciA9IGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcjsKKyAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCisgICAgICAgICAgIGl0cyBvd24gc2lnbmFsIGhhbmRsZXIgKi8KKyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCisgICAgICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCisgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGVyciA9IHNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZhY3Rpb24sICZoYW5kbGVyLT5wcmV2aW91cyk7CisjZWxzZQorICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKTsKKyAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOworI2VuZGlmCisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDE7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIEFkZFZlY3RvcmVkRXhjZXB0aW9uSGFuZGxlcigxLCBmYXVsdGhhbmRsZXJfZXhjX2hhbmRsZXIpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKLWZhdWx0aGFuZGxlcl9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZmF1bHRoYW5kbGVyX3B5X2VuYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgImFsbF90aHJlYWRzIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOwogICAgIGludCBhbGxfdGhyZWFkcyA9IDE7Ci0gICAgdW5zaWduZWQgaW50IGk7Ci0gICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOwotI2lmZGVmIEhBVkVfU0lHQUNUSU9OCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0jZW5kaWYKLSAgICBpbnQgZXJyOwogICAgIGludCBmZDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAKQEAgLTM4NiwzNyArNDkzLDEwIEBACiAgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKICAgICBmYXRhbF9lcnJvci5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKIAotICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgewotICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKLQotICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7Ci0gICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7Ci0gICAgICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOwotICAgICAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCi0gICAgICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCi0gICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOwotI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKLSAgICAgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjawotICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KLSAgICAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKLSNlbHNlCi0gICAgICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOwotICAgICAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKLSAgICAgICAgfQorICAgIGlmIChmYXVsdGhhbmRsZXJfZW5hYmxlKCkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC00MzAsMTQgKzUxMCw3IEBACiAgICAgICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAwOwogICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CiAgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKLSAgICAgICAgICAgIGlmICghaGFuZGxlci0+ZW5hYmxlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICAgICAgICAgKHZvaWQpc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKLSNlbHNlCi0gICAgICAgICAgICAodm9pZClzaWduYWwoaGFuZGxlci0+c2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihoYW5kbGVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDY5LDcgKzU0Miw2IEBACiB7CiAgICAgUHlMb2NrU3RhdHVzIHN0OwogICAgIGNvbnN0IGNoYXIqIGVycm1zZzsKLSAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50OwogICAgIGludCBvazsKICNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCiAgICAgc2lnc2V0X3Qgc2V0OwpAQCAtNDg5LDEyICs1NjEsOSBAQAogICAgICAgICAvKiBUaW1lb3V0ID0+IGR1bXAgdHJhY2ViYWNrICovCiAgICAgICAgIGFzc2VydChzdCA9PSBQWV9MT0NLX0ZBSUxVUkUpOwogCi0gICAgICAgIC8qIGdldCB0aGUgdGhyZWFkIGhvbGRpbmcgdGhlIEdJTCwgTlVMTCBpZiBubyB0aHJlYWQgaG9sZCB0aGUgR0lMICovCi0gICAgICAgIGN1cnJlbnQgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKLQogICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIChpbnQpdGhyZWFkLmhlYWRlcl9sZW4pOwogCi0gICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh0aHJlYWQuZmQsIHRocmVhZC5pbnRlcnAsIGN1cnJlbnQpOworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBOVUxMKTsKICAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOwogCiAgICAgICAgIGlmICh0aHJlYWQuZXhpdCkKQEAgLTg5NCw3ICs5NjMsNyBAQAogZmF1bHRoYW5kbGVyX3NpZ3NlZ3YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCByZWxlYXNlX2dpbCA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfcmVhZF9udWxsIiwgJnJlbGVhc2VfZ2lsKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9zaWdzZWd2IiwgJnJlbGVhc2VfZ2lsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAocmVsZWFzZV9naWwpIHsKQEAgLTkwNyw2ICs5NzYsNDkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmZGVmIFdJVEhfVEhSRUFECitzdGF0aWMgdm9pZAorZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3RocmVhZCh2b2lkICpwbG9jaykKK3sKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgKmxvY2sgPSAoUHlUaHJlYWRfdHlwZV9sb2NrICopcGxvY2s7CisKKyAgICBQeV9GYXRhbEVycm9yKCJpbiBuZXcgdGhyZWFkIik7CisKKyAgICAvKiBub3RpZnkgdGhlIGNhbGxlciB0aGF0IHdlIGFyZSBkb25lICovCisgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKGxvY2spOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX2NfdGhyZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBsb25nIHRocmVhZDsKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKworICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKKworICAgIGxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKGxvY2sgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sobG9jaywgV0FJVF9MT0NLKTsKKworICAgIHRocmVhZCA9IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQoZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3RocmVhZCwgbG9jayk7CisgICAgaWYgKHRocmVhZCA9PSAtMSkgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sobG9jayk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gc3RhcnQgdGhlIHRocmVhZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiB3YWl0IHVudGlsIHRoZSB0aHJlYWQgY29tcGxldGVzOiBpdCB3aWxsIG5ldmVyIG9jY3VyLCBzaW5jZSBQeV9GYXRhbEVycm9yKCkKKyAgICAgICBleGl0cyB0aGUgcHJvY2VzcyBpbW1lZGlhbHR5LiAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2NrLCBXQUlUX0xPQ0spOworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2NrKTsKKyAgICBQeVRocmVhZF9mcmVlX2xvY2sobG9jayk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QgKgogZmF1bHRoYW5kbGVyX3NpZ2ZwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC05NTEsNiArMTA2Myw4IEBACiB9CiAKICNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisjZGVmaW5lIEZBVUxUSEFORExFUl9TVEFDS19PVkVSRkxPVworCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgogICAgLyogSXNzdWUgIzIzNjU0OiBUdXJuIG9mZiBJQ0MncyB0YWlsIGNhbGwgb3B0aW1pemF0aW9uIGZvciB0aGUKICAgICAqIHN0YWNrX292ZXJmbG93IGdlbmVyYXRvci4gSUNDIHR1cm5zIHRoZSByZWN1cnNpdmUgdGFpbCBjYWxsIGludG8KQEAgLTk1OCwxMiArMTA3MiwxMiBAQAogIyAgcHJhZ21hIGludGVsIG9wdGltaXphdGlvbl9sZXZlbCAwCiAjZW5kaWYKIHN0YXRpYwotUHlfdWludHB0cl90Ci1zdGFja19vdmVyZmxvdyhQeV91aW50cHRyX3QgbWluX3NwLCBQeV91aW50cHRyX3QgbWF4X3NwLCBzaXplX3QgKmRlcHRoKQordWludHB0cl90CitzdGFja19vdmVyZmxvdyh1aW50cHRyX3QgbWluX3NwLCB1aW50cHRyX3QgbWF4X3NwLCBzaXplX3QgKmRlcHRoKQogewogICAgIC8qIGFsbG9jYXRlIDQwOTYgYnl0ZXMgb24gdGhlIHN0YWNrIGF0IGVhY2ggY2FsbCAqLwogICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzQwOTZdOwotICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmJ1ZmZlcjsKKyAgICB1aW50cHRyX3Qgc3AgPSAodWludHB0cl90KSZidWZmZXI7CiAgICAgKmRlcHRoICs9IDE7CiAgICAgaWYgKHNwIDwgbWluX3NwIHx8IG1heF9zcCA8IHNwKQogICAgICAgICByZXR1cm4gc3A7CkBAIC05NzYsOCArMTA5MCw4IEBACiBmYXVsdGhhbmRsZXJfc3RhY2tfb3ZlcmZsb3coUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgc2l6ZV90IGRlcHRoLCBzaXplOwotICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmRlcHRoOwotICAgIFB5X3VpbnRwdHJfdCBzdG9wOworICAgIHVpbnRwdHJfdCBzcCA9ICh1aW50cHRyX3QpJmRlcHRoOworICAgIHVpbnRwdHJfdCBzdG9wOwogCiAgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGRlcHRoID0gMDsKQEAgLTk5NCw3ICsxMTA4LDcgQEAKICAgICAgICAgc2l6ZSwgZGVwdGgpOwogICAgIHJldHVybiBOVUxMOwogfQotI2VuZGlmCisjZW5kaWYgICAvKiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pICovCiAKIAogc3RhdGljIGludApAQCAtMTAxNywxMiArMTEzMSwyNSBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9yYWlzZV9leGNlcHRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBjb2RlLCBmbGFncyA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJfEk6X3JhaXNlX2V4Y2VwdGlvbiIsICZjb2RlLCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CisgICAgUmFpc2VFeGNlcHRpb24oY29kZSwgZmxhZ3MsIDAsIE5VTEwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogImZhdWx0aGFuZGxlciBtb2R1bGUuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewogICAgIHsiZW5hYmxlIiwKLSAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3B5X2VuYWJsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSk6ICIKICAgICAgICAgICAgICAgICJlbmFibGUgdGhlIGZhdWx0IGhhbmRsZXIiKX0sCiAgICAgeyJkaXNhYmxlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9kaXNhYmxlX3B5LCBNRVRIX05PQVJHUywKQEAgLTEwNjUsMTYgKzExOTIsMjUgQEAKICAgICAgICAgICAgICAgICJhIFNJR1NFR1Ygb3IgU0lHQlVTIHNpZ25hbCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIil9LAogICAgIHsiX3NpZ3NlZ3YiLCBmYXVsdGhhbmRsZXJfc2lnc2VndiwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdzZWd2KHJlbGVhc2VfZ2lsPUZhbHNlKTogcmFpc2UgYSBTSUdTRUdWIHNpZ25hbCIpfSwKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHsiX2ZhdGFsX2Vycm9yX2NfdGhyZWFkIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX2NfdGhyZWFkLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJmYXRhbF9lcnJvcl9jX3RocmVhZCgpOiAiCisgICAgICAgICAgICAgICAiY2FsbCBQeV9GYXRhbEVycm9yKCkgaW4gYSBuZXcgQyB0aHJlYWQuIil9LAorI2VuZGlmCiAgICAgeyJfc2lnYWJydCIsIGZhdWx0aGFuZGxlcl9zaWdhYnJ0LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnYWJydCgpOiByYWlzZSBhIFNJR0FCUlQgc2lnbmFsIil9LAogICAgIHsiX3NpZ2ZwZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnZnBlLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnZnBlKCk6IHJhaXNlIGEgU0lHRlBFIHNpZ25hbCIpfSwKICAgICB7Il9mYXRhbF9lcnJvciIsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9weSwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoIl9mYXRhbF9lcnJvcihtZXNzYWdlKTogY2FsbCBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpIil9LAotI2lmIGRlZmluZWQoSEFWRV9TSUdBTFRTVEFDSykgJiYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikKKyNpZmRlZiBGQVVMVEhBTkRMRVJfU1RBQ0tfT1ZFUkZMT1cKICAgICB7Il9zdGFja19vdmVyZmxvdyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc3RhY2tfb3ZlcmZsb3csIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zdGFja19vdmVyZmxvdygpOiByZWN1cnNpdmUgY2FsbCB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93Iil9LAogI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsiX3JhaXNlX2V4Y2VwdGlvbiIsIGZhdWx0aGFuZGxlcl9yYWlzZV9leGNlcHRpb24sIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJyYWlzZV9leGNlcHRpb24oY29kZSwgZmxhZ3M9MCk6IENhbGwgUmFpc2VFeGNlcHRpb24oY29kZSwgZmxhZ3MpLiIpfSwKKyNlbmRpZgogICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwOTMsNyArMTIyOSwzMyBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9mYXVsdGhhbmRsZXIodm9pZCkKIHsKLSAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVfZGVmKTsKKyAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmbW9kdWxlX2RlZik7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBBZGQgY29uc3RhbnRzIGZvciB1bml0IHRlc3RzICovCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIFJhaXNlRXhjZXB0aW9uKCkgY29kZXMgKHByZWZpeGVkIGJ5IGFuIHVuZGVyc2NvcmUpICovCisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBSYWlzZUV4Y2VwdGlvbigpIGZsYWdzIChwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlKSAqLworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9OT05DT05USU5VQUJMRSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKworICAgIHJldHVybiBtOwogfQogCiAvKiBDYWxsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBpZiB0aGUgUFlUSE9ORkFVTFRIQU5ETEVSIGVudmlyb25tZW50IHZhcmlhYmxlCkBAIC0xMTI4LDcgKzEyOTAsNyBAQAogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobW9kdWxlLCAmUHlJZF9lbmFibGUsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCBOVUxMKTsKICAgICBQeV9ERUNSRUYobW9kdWxlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCBjYjcyMjJkLi43NTQzNDhlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIiAgICAgICAgLyogZm9yIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCAqLworI2luY2x1ZGUgInB5ZHRyYWNlLmgiCiAjaW5jbHVkZSAicHl0aW1lLmgiICAgICAgICAgICAgIC8qIGZvciBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKi8KIAogLyogR2V0IGFuIG9iamVjdCdzIEdDIGhlYWQgKi8KQEAgLTczOCw3ICs3MzksNyBAQAogfQogCiBzdGF0aWMgdm9pZAotZGVidWdfY3ljbGUoY2hhciAqbXNnLCBQeU9iamVjdCAqb3ApCitkZWJ1Z19jeWNsZShjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImdjOiAlcyA8JXMgJXA+XG4iLAogICAgICAgICAgICAgICAgICAgICAgICBtc2csIFB5X1RZUEUob3ApLT50cF9uYW1lLCBvcCk7CkBAIC04OTIsNiArODkzLDcgQEAKICAgICAodm9pZClQeUxpc3RfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5RGljdF9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHMoKTsKIH0KIAogLyogVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbi4gIFJlYWQgdGhpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUKQEAgLTkyNCw2ICs5MjYsOSBAQAogICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiXG4iKTsKICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCgpKQorICAgICAgICBQeURUcmFjZV9HQ19TVEFSVChnZW5lcmF0aW9uKTsKKwogICAgIC8qIHVwZGF0ZSBjb2xsZWN0aW9uIGFuZCBhbGxvY2F0aW9uIGNvdW50ZXJzICovCiAgICAgaWYgKGdlbmVyYXRpb24rMSA8IE5VTV9HRU5FUkFUSU9OUykKICAgICAgICAgZ2VuZXJhdGlvbnNbZ2VuZXJhdGlvbisxXS5jb3VudCArPSAxOwpAQCAtMTA2OCw2ICsxMDczLDEwIEBACiAgICAgc3RhdHMtPmNvbGxlY3Rpb25zKys7CiAgICAgc3RhdHMtPmNvbGxlY3RlZCArPSBtOwogICAgIHN0YXRzLT51bmNvbGxlY3RhYmxlICs9IG47CisKKyAgICBpZiAoUHlEVHJhY2VfR0NfRE9ORV9FTkFCTEVEKCkpCisgICAgICAgIFB5RFRyYWNlX0dDX0RPTkUobittKTsKKwogICAgIHJldHVybiBuK207CiB9CiAKQEAgLTE1ODgsNiArMTU5NywxNSBAQAogfQogCiBQeV9zc2l6ZV90CitfUHlHQ19Db2xsZWN0SWZFbmFibGVkKHZvaWQpCit7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBQeUdDX0NvbGxlY3QoKTsKK30KKworUHlfc3NpemVfdAogX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKQogewogICAgIFB5X3NzaXplX3QgbjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0YWRkcmluZm8uYyBiL01vZHVsZXMvZ2V0YWRkcmluZm8uYwppbmRleCBkODE2N2VhLi5iNmZiNTNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldGFkZHJpbmZvLmMKKysrIGIvTW9kdWxlcy9nZXRhZGRyaW5mby5jCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqLCBpbnQpOwogc3RhdGljIGludCBzdHJfaXNudW1iZXIoY29uc3QgY2hhciAqKTsKIAotc3RhdGljIGNoYXIgKmFpX2Vycmxpc3RbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYWlfZXJybGlzdFtdID0gewogICAgICJzdWNjZXNzLiIsCiAgICAgImFkZHJlc3MgZmFtaWx5IGZvciBob3N0bmFtZSBub3Qgc3VwcG9ydGVkLiIsICAgICAgIC8qIEVBSV9BRERSRkFNSUxZICovCiAgICAgInRlbXBvcmFyeSBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4iLCAgICAgICAgICAgIC8qIEVBSV9BR0FJTiAgICAgICovCkBAIC0xOTgsNyArMTk4LDcgQEAKIAogI2RlZmluZSBFUlIoZXJyKSB7IGVycm9yID0gKGVycik7IGdvdG8gYmFkOyB9CiAKLWNoYXIgKgorY29uc3QgY2hhciAqCiBnYWlfc3RyZXJyb3IoaW50IGVjb2RlKQogewogICAgIGlmIChlY29kZSA8IDAgfHwgZWNvZGUgPiBFQUlfTUFYKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRwYXRoLmMgYi9Nb2R1bGVzL2dldHBhdGguYwppbmRleCAxOGRlYjYwLi42NWI0N2EzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldHBhdGguYworKysgYi9Nb2R1bGVzL2dldHBhdGguYwpAQCAtNDYwLDggKzQ2MCw4IEBACiB7CiAgICAgZXh0ZXJuIHdjaGFyX3QgKlB5X0dldFByb2dyYW1OYW1lKHZvaWQpOwogCi0gICAgc3RhdGljIHdjaGFyX3QgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKLSAgICBzdGF0aWMgd2NoYXJfdCBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKKyAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCBkZWxpbWl0ZXJbMl0gPSB7REVMSU0sICdcMCd9OworICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90IHNlcGFyYXRvclsyXSA9IHtTRVAsICdcMCd9OwogICAgIGNoYXIgKl9ydHB5cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOyAvKiBYWFggdXNlIHdpZGUgdmVyc2lvbiBvbiBXaW5kb3dzICovCiAgICAgd2NoYXJfdCAqcnRweXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dycG1vZHVsZS5jIGIvTW9kdWxlcy9ncnBtb2R1bGUuYwppbmRleCAzYTEzNGEwLi45NDM3YWU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dycG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKQEAgLTEwMCwxNCArMTAwLDI1IEBACiAgICAgZ2lkX3QgZ2lkOwogICAgIHN0cnVjdCBncm91cCAqcDsKIAotICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcoaWQpOwotICAgIGlmICghcHlfaW50X2lkKQorICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIoaWQsICZnaWQpKSB7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKHB5X2ludF9pZCwgJmdpZCkpIHsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncm91cCBpZCBtdXN0IGJlIGludCwgbm90ICUuMjAwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQtPm9iX3R5cGUtPnRwX25hbWUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcHlfaW50X2lkID0gUHlOdW1iZXJfTG9uZyhpZCk7CisgICAgICAgIGlmICghcHlfaW50X2lkKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIocHlfaW50X2lkLCAmZ2lkKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHB5X2ludF9pZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocHlfaW50X2lkKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihweV9pbnRfaWQpOwogCiAgICAgaWYgKChwID0gZ2V0Z3JnaWQoZ2lkKSkgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZ2lkX29iaiA9IF9QeUxvbmdfRnJvbUdpZChnaWQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9oYXNobGliLmggYi9Nb2R1bGVzL2hhc2hsaWIuaAppbmRleCAzNTgwNDUzLi41MzBiNmIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2hsaWIuaAorKysgYi9Nb2R1bGVzL2hhc2hsaWIuaApAQCAtMiwzMCArMiwzMyBAQAogCiAvKgogICogR2l2ZW4gYSBQeU9iamVjdCogb2JqLCBmaWxsIGluIHRoZSBQeV9idWZmZXIqIHZpZXdwIHdpdGggdGhlIHJlc3VsdAotICogb2YgUHlPYmplY3RfR2V0QnVmZmVyLiAgU2V0cyBhbiBleGNlcHRpb24gYW5kIGlzc3VlcyBhIHJldHVybiBOVUxMCi0gKiBvbiBhbnkgZXJyb3JzLgorICogb2YgUHlPYmplY3RfR2V0QnVmZmVyLiAgU2V0cyBhbiBleGNlcHRpb24gYW5kIGlzc3VlcyB0aGUgZXJyYWN0aW9uCisgKiBvbiBhbnkgZXJyb3JzLCBlLmcuICdyZXR1cm4gTlVMTCcgb3IgJ2dvdG8gZXJyb3InLgogICovCi0jZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCB2aWV3cCkgZG8geyBcCisjZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihvYmosIHZpZXdwLCBlcnJhY3Rpb24pIGRvIHsgXAogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKChvYmopKSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuaWNvZGUtb2JqZWN0cyBtdXN0IGJlIGVuY29kZWQgYmVmb3JlIGhhc2hpbmciKTtcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAogICAgICAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKChvYmopKSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgQVBJIHJlcXVpcmVkIik7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCiAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoKG9iaiksICh2aWV3cCksIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsgXAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKICAgICAgICAgaWYgKCh2aWV3cCktPm5kaW0gPiAxKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uIik7IFwKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKHZpZXdwKSk7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCi0gICAgfSB3aGlsZSgwKTsKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosIHZpZXdwKSBcCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKG9iaiwgdmlld3AsIHJldHVybiBOVUxMKQogCiAvKgogICogSGVscGVyIGNvZGUgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvIHRoZSBoYXNoIG9iamVjdCB3aGVuIHRoZSBHSUwgaXMKZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaHRhYmxlLmMgYi9Nb2R1bGVzL2hhc2h0YWJsZS5jCmluZGV4IGZkZGRjMTkuLjA1NDdhNmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaGFzaHRhYmxlLmMKKysrIGIvTW9kdWxlcy9oYXNodGFibGUuYwpAQCAtMSw1ICsxLDUgQEAKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFzaCB0YWJsZSAoX1B5X2hhc2h0YWJsZV90KSBpcyBiYXNlZCBvbiB0aGUgY2Z1aGFzaAotICAgcHJvamVjdDoKKy8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFzaCB0YWJsZSAoX1B5X2hhc2h0YWJsZV90KSBpcyBiYXNlZCBvbiB0aGUKKyAgIGNmdWhhc2ggcHJvamVjdDoKICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGliY2Z1LwogCiAgICBDb3B5cmlnaHQgb2YgY2Z1aGFzaDoKQEAgLTU5LDcgKzU5LDIxIEBACiAjZGVmaW5lIEVOVFJZX05FWFQoRU5UUlkpIFwKICAgICAgICAgKChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKilfUHlfU0xJU1RfSVRFTV9ORVhUKEVOVFJZKSkKICNkZWZpbmUgSEFTSFRBQkxFX0lURU1fU0laRShIVCkgXAotICAgICAgICAoc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkgKyAoSFQpLT5kYXRhX3NpemUpCisgICAgICAgIChzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSArIChIVCktPmtleV9zaXplICsgKEhUKS0+ZGF0YV9zaXplKQorCisjZGVmaW5lIEVOVFJZX1JFQURfUERBVEEoVEFCTEUsIEVOVFJZLCBEQVRBX1NJWkUsIFBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydCgoREFUQV9TSVpFKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgoUERBVEEpLCBfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKFRBQkxFLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgKERBVEFfU0laRSkpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFTlRSWV9XUklURV9QREFUQShUQUJMRSwgRU5UUlksIERBVEFfU0laRSwgUERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KChEQVRBX1NJWkUpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCh2b2lkICopX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQSgoVEFCTEUpLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgKFBEQVRBKSwgKERBVEFfU0laRSkpOyBcCisgICAgfSB3aGlsZSAoMCkKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwogc3RhdGljIHZvaWQgaGFzaHRhYmxlX3JlaGFzaChfUHlfaGFzaHRhYmxlX3QgKmh0KTsKQEAgLTcwLDYgKzg0LDcgQEAKICAgICBsaXN0LT5oZWFkID0gTlVMTDsKIH0KIAorCiBzdGF0aWMgdm9pZAogX1B5X3NsaXN0X3ByZXBlbmQoX1B5X3NsaXN0X3QgKmxpc3QsIF9QeV9zbGlzdF9pdGVtX3QgKml0ZW0pCiB7CkBAIC03Nyw2ICs5Miw3IEBACiAgICAgbGlzdC0+aGVhZCA9IGl0ZW07CiB9CiAKKwogc3RhdGljIHZvaWQKIF9QeV9zbGlzdF9yZW1vdmUoX1B5X3NsaXN0X3QgKmxpc3QsIF9QeV9zbGlzdF9pdGVtX3QgKnByZXZpb3VzLAogICAgICAgICAgICAgICAgICBfUHlfc2xpc3RfaXRlbV90ICppdGVtKQpAQCAtODcsMjQgKzEwMywyNiBAQAogICAgICAgICBsaXN0LT5oZWFkID0gaXRlbS0+bmV4dDsKIH0KIAotUHlfdWhhc2hfdAotX1B5X2hhc2h0YWJsZV9oYXNoX2ludChjb25zdCB2b2lkICprZXkpCi17Ci0gICAgcmV0dXJuIChQeV91aGFzaF90KWtleTsKLX0KIAogUHlfdWhhc2hfdAotX1B5X2hhc2h0YWJsZV9oYXNoX3B0cihjb25zdCB2b2lkICprZXkpCitfUHlfaGFzaHRhYmxlX2hhc2hfcHRyKHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQogewotICAgIHJldHVybiAoUHlfdWhhc2hfdClfUHlfSGFzaFBvaW50ZXIoKHZvaWQgKilrZXkpOworICAgIHZvaWQgKmtleTsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIGtleSk7CisgICAgcmV0dXJuIChQeV91aGFzaF90KV9QeV9IYXNoUG9pbnRlcihrZXkpOwogfQogCisKIGludAotX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdChjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCitfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCiB7Ci0gICAgcmV0dXJuIGVudHJ5LT5rZXkgPT0ga2V5OworICAgIGNvbnN0IHZvaWQgKnBrZXkyID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KTsKKyAgICByZXR1cm4gKG1lbWNtcChwa2V5LCBwa2V5MiwgaHQtPmtleV9zaXplKSA9PSAwKTsKIH0KIAorCiAvKiBtYWtlcyBzdXJlIHRoZSByZWFsIHNpemUgb2YgdGhlIGJ1Y2tldHMgYXJyYXkgaXMgYSBwb3dlciBvZiAyICovCiBzdGF0aWMgc2l6ZV90CiByb3VuZF9zaXplKHNpemVfdCBzKQpAQCAtMTE4LDEzICsxMzYsMTIgQEAKICAgICByZXR1cm4gaTsKIH0KIAorCiBfUHlfaGFzaHRhYmxlX3QgKgotX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChzaXplX3QgZGF0YV9zaXplLCBzaXplX3QgaW5pdF9zaXplLAorX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbml0X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvcHlfZGF0YV9mdW5jIGNvcHlfZGF0YV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jIGZyZWVfZGF0YV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2dldF9kYXRhX3NpemVfZnVuYyBnZXRfZGF0YV9zaXplX2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3QgKmFsbG9jYXRvcikKIHsKICAgICBfUHlfaGFzaHRhYmxlX3QgKmh0OwpAQCAtMTQ0LDYgKzE2MSw3IEBACiAKICAgICBodC0+bnVtX2J1Y2tldHMgPSByb3VuZF9zaXplKGluaXRfc2l6ZSk7CiAgICAgaHQtPmVudHJpZXMgPSAwOworICAgIGh0LT5rZXlfc2l6ZSA9IGtleV9zaXplOwogICAgIGh0LT5kYXRhX3NpemUgPSBkYXRhX3NpemU7CiAKICAgICBidWNrZXRzX3NpemUgPSBodC0+bnVtX2J1Y2tldHMgKiBzaXplb2YoaHQtPmJ1Y2tldHNbMF0pOwpAQCAtMTU2LDI4ICsxNzQsMjcgQEAKIAogICAgIGh0LT5oYXNoX2Z1bmMgPSBoYXNoX2Z1bmM7CiAgICAgaHQtPmNvbXBhcmVfZnVuYyA9IGNvbXBhcmVfZnVuYzsKLSAgICBodC0+Y29weV9kYXRhX2Z1bmMgPSBjb3B5X2RhdGFfZnVuYzsKLSAgICBodC0+ZnJlZV9kYXRhX2Z1bmMgPSBmcmVlX2RhdGFfZnVuYzsKLSAgICBodC0+Z2V0X2RhdGFfc2l6ZV9mdW5jID0gZ2V0X2RhdGFfc2l6ZV9mdW5jOwogICAgIGh0LT5hbGxvYyA9IGFsbG9jOwogICAgIHJldHVybiBodDsKIH0KIAorCiBfUHlfaGFzaHRhYmxlX3QgKgotX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZV90IGRhdGFfc2l6ZSwKK19QeV9oYXNodGFibGVfbmV3KHNpemVfdCBrZXlfc2l6ZSwgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYykKIHsKLSAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChkYXRhX3NpemUsIEhBU0hUQUJMRV9NSU5fU0laRSwKKyAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChrZXlfc2l6ZSwgZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU0hUQUJMRV9NSU5fU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2Z1bmMsIGNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKIH0KIAorCiBzaXplX3QKIF9QeV9oYXNodGFibGVfc2l6ZShfUHlfaGFzaHRhYmxlX3QgKmh0KQogewogICAgIHNpemVfdCBzaXplOwotICAgIHNpemVfdCBodjsKIAogICAgIHNpemUgPSBzaXplb2YoX1B5X2hhc2h0YWJsZV90KTsKIApAQCAtMTg3LDIyICsyMDQsMTAgQEAKICAgICAvKiBlbnRyaWVzICovCiAgICAgc2l6ZSArPSBodC0+ZW50cmllcyAqIEhBU0hUQUJMRV9JVEVNX1NJWkUoaHQpOwogCi0gICAgLyogZGF0YSBsaW5rZWQgZnJvbSBlbnRyaWVzICovCi0gICAgaWYgKGh0LT5nZXRfZGF0YV9zaXplX2Z1bmMpIHsKLSAgICAgICAgZm9yIChodiA9IDA7IGh2IDwgaHQtPm51bV9idWNrZXRzOyBodisrKSB7Ci0gICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwotCi0gICAgICAgICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaHYpOyBlbnRyeTsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICAgICAgICAgIHZvaWQgKmRhdGE7Ci0KLSAgICAgICAgICAgICAgICBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChlbnRyeSk7Ci0gICAgICAgICAgICAgICAgc2l6ZSArPSBodC0+Z2V0X2RhdGFfc2l6ZV9mdW5jKGRhdGEpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogICAgIHJldHVybiBzaXplOwogfQogCisKICNpZmRlZiBQeV9ERUJVRwogdm9pZAogX1B5X2hhc2h0YWJsZV9wcmludF9zdGF0cyhfUHlfaGFzaHRhYmxlX3QgKmh0KQpAQCAtMjQzLDM4ICsyNDgsNDUgQEAKIH0KICNlbmRpZgogCi0vKiBHZXQgYW4gZW50cnkuIFJldHVybiBOVUxMIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QuICovCisKIF9QeV9oYXNodGFibGVfZW50cnlfdCAqCi1fUHlfaGFzaHRhYmxlX2dldF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXkpCitfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5KQogewogICAgIFB5X3VoYXNoX3Qga2V5X2hhc2g7CiAgICAgc2l6ZV90IGluZGV4OwogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CiAKLSAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoa2V5KTsKKyAgICBhc3NlcnQoa2V5X3NpemUgPT0gaHQtPmtleV9zaXplKTsKKworICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhodCwgcGtleSk7CiAgICAgaW5kZXggPSBrZXlfaGFzaCAmIChodC0+bnVtX2J1Y2tldHMgLSAxKTsKIAogICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBpbmRleCk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGtleSwgZW50cnkpKQorICAgICAgICBpZiAoZW50cnktPmtleV9oYXNoID09IGtleV9oYXNoICYmIGh0LT5jb21wYXJlX2Z1bmMoaHQsIHBrZXksIGVudHJ5KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBlbnRyeTsKIH0KIAorCiBzdGF0aWMgaW50Ci1faGFzaHRhYmxlX3BvcF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCitfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQogewogICAgIFB5X3VoYXNoX3Qga2V5X2hhc2g7CiAgICAgc2l6ZV90IGluZGV4OwogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksICpwcmV2aW91czsKIAotICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhrZXkpOworICAgIGFzc2VydChrZXlfc2l6ZSA9PSBodC0+a2V5X3NpemUpOworCisgICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGh0LCBwa2V5KTsKICAgICBpbmRleCA9IGtleV9oYXNoICYgKGh0LT5udW1fYnVja2V0cyAtIDEpOwogCiAgICAgcHJldmlvdXMgPSBOVUxMOwogICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBpbmRleCk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGtleSwgZW50cnkpKQorICAgICAgICBpZiAoZW50cnktPmtleV9oYXNoID09IGtleV9oYXNoICYmIGh0LT5jb21wYXJlX2Z1bmMoaHQsIHBrZXksIGVudHJ5KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBwcmV2aW91cyA9IGVudHJ5OwogICAgIH0KQEAgLTI4Nyw3ICsyOTksNyBAQAogICAgIGh0LT5lbnRyaWVzLS07CiAKICAgICBpZiAoZGF0YSAhPSBOVUxMKQotICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShodCwgZGF0YSwgZGF0YV9zaXplLCBlbnRyeSk7CisgICAgICAgIEVOVFJZX1JFQURfUERBVEEoaHQsIGVudHJ5LCBkYXRhX3NpemUsIGRhdGEpOwogICAgIGh0LT5hbGxvYy5mcmVlKGVudHJ5KTsKIAogICAgIGlmICgoZmxvYXQpaHQtPmVudHJpZXMgLyAoZmxvYXQpaHQtPm51bV9idWNrZXRzIDwgSEFTSFRBQkxFX0xPVykKQEAgLTI5NSwyNiArMzA3LDI3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgaGFzaC4gVGhlIGtleSBtdXN0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBoYXNoIHRhYmxlLgotICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gbWVtb3J5IGVycm9yLiAqLworCiBpbnQKLV9QeV9oYXNodGFibGVfc2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSwKLSAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCitfUHlfaGFzaHRhYmxlX3NldChfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9zaXplLCBjb25zdCB2b2lkICpkYXRhKQogewogICAgIFB5X3VoYXNoX3Qga2V5X2hhc2g7CiAgICAgc2l6ZV90IGluZGV4OwogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CiAKKyAgICBhc3NlcnQoa2V5X3NpemUgPT0gaHQtPmtleV9zaXplKTsKKwogICAgIGFzc2VydChkYXRhICE9IE5VTEwgfHwgZGF0YV9zaXplID09IDApOwogI2lmbmRlZiBOREVCVUcKICAgICAvKiBEb24ndCB3cml0ZSB0aGUgYXNzZXJ0aW9uIG9uIGEgc2luZ2xlIGxpbmUgYmVjYXVzZSBpdCBpcyBpbnRlcmVzdGluZwogICAgICAgIHRvIGtub3cgdGhlIGR1cGxpY2F0ZWQgZW50cnkgaWYgdGhlIGFzc2VydGlvbiBmYWlsZWQuIFRoZSBlbnRyeSBjYW4KICAgICAgICBiZSByZWFkIHVzaW5nIGEgZGVidWdnZXIuICovCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5KTsKKyAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSk7CiAgICAgYXNzZXJ0KGVudHJ5ID09IE5VTEwpOwogI2VuZGlmCiAKLSAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoa2V5KTsKKyAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoaHQsIHBrZXkpOwogICAgIGluZGV4ID0ga2V5X2hhc2ggJiAoaHQtPm51bV9idWNrZXRzIC0gMSk7CiAKICAgICBlbnRyeSA9IGh0LT5hbGxvYy5tYWxsb2MoSEFTSFRBQkxFX0lURU1fU0laRShodCkpOwpAQCAtMzIzLDEyICszMzYsMTAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGVudHJ5LT5rZXkgPSAodm9pZCAqKWtleTsKICAgICBlbnRyeS0+a2V5X2hhc2ggPSBrZXlfaGFzaDsKLQotICAgIGFzc2VydChkYXRhX3NpemUgPT0gaHQtPmRhdGFfc2l6ZSk7CisgICAgbWVtY3B5KCh2b2lkICopX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KSwgcGtleSwgaHQtPmtleV9zaXplKTsKICAgICBpZiAoZGF0YSkKLSAgICAgICAgbWVtY3B5KF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShlbnRyeSksIGRhdGEsIGRhdGFfc2l6ZSk7CisgICAgICAgIEVOVFJZX1dSSVRFX1BEQVRBKGh0LCBlbnRyeSwgZGF0YV9zaXplLCBkYXRhKTsKIAogICAgIF9QeV9zbGlzdF9wcmVwZW5kKCZodC0+YnVja2V0c1tpbmRleF0sIChfUHlfc2xpc3RfaXRlbV90KillbnRyeSk7CiAgICAgaHQtPmVudHJpZXMrKzsKQEAgLTMzOCw0OCArMzQ5LDUwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEdldCBkYXRhIGZyb20gYW4gZW50cnkuIENvcHkgZW50cnkgZGF0YSBpbnRvIGRhdGEgYW5kIHJldHVybiAxIGlmIHRoZSBlbnRyeQotICAgZXhpc3RzLCByZXR1cm4gMCBpZiB0aGUgZW50cnkgZG9lcyBub3QgZXhpc3QuICovCisKIGludAotX1B5X2hhc2h0YWJsZV9nZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9nZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9zaXplLCB2b2lkICpkYXRhKQogewogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CiAKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMKTsKIAotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleSk7CisgICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5X3NpemUsIHBrZXkpOwogICAgIGlmIChlbnRyeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKLSAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShodCwgZGF0YSwgZGF0YV9zaXplLCBlbnRyeSk7CisgICAgRU5UUllfUkVBRF9QREFUQShodCwgZW50cnksIGRhdGFfc2l6ZSwgZGF0YSk7CiAgICAgcmV0dXJuIDE7CiB9CiAKKwogaW50Ci1fUHlfaGFzaHRhYmxlX3BvcChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCitfUHlfaGFzaHRhYmxlX3BvcChfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9zaXplLCB2b2lkICpkYXRhKQogewogICAgIGFzc2VydChkYXRhICE9IE5VTEwpOwotICAgIGFzc2VydChodC0+ZnJlZV9kYXRhX2Z1bmMgPT0gTlVMTCk7Ci0gICAgcmV0dXJuIF9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXksIGRhdGEsIGRhdGFfc2l6ZSk7CisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSwgZGF0YSwgZGF0YV9zaXplKTsKIH0KIAotLyogRGVsZXRlIGFuIGVudHJ5LiBUaGUgZW50cnkgbXVzdCBleGlzdC4gKi8KKworLyogQ29kZSBjb21tZW50ZWQgc2luY2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBuZWVkZWQgaW4gUHl0aG9uICovCisjaWYgMAogdm9pZAotX1B5X2hhc2h0YWJsZV9kZWxldGUoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9kZWxldGUoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5KQogewogI2lmbmRlZiBOREVCVUcKLSAgICBpbnQgZm91bmQgPSBfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBOVUxMLCAwKTsKKyAgICBpbnQgZm91bmQgPSBfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIE5VTEwsIDApOwogICAgIGFzc2VydChmb3VuZCk7CiAjZWxzZQotICAgICh2b2lkKV9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXksIE5VTEwsIDApOworICAgICh2b2lkKV9QeV9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSwgTlVMTCwgMCk7CiAjZW5kaWYKIH0KKyNlbmRpZgogCi0vKiBQcm90b3R5cGUgZm9yIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmb3JlYWNoCi0gICBrZXkvdmFsdWUgcGFpciBpbiB0aGUgaGFzaCBieSBoYXNodGFibGVfZm9yZWFjaCgpLiAgSXRlcmF0aW9uCi0gICBzdG9wcyBpZiBhIG5vbi16ZXJvIHZhbHVlIGlzIHJldHVybmVkLiAqLworCiBpbnQKIF9QeV9oYXNodGFibGVfZm9yZWFjaChfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgICAgICAgICAgICAgICAgICAgIGludCAoKmZ1bmMpIChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICphcmcpLAorICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKQogewogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CkBAIC0zODcsNyArNDAwLDcgQEAKIAogICAgIGZvciAoaHYgPSAwOyBodiA8IGh0LT5udW1fYnVja2V0czsgaHYrKykgewogICAgICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaHYpOyBlbnRyeTsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICAgICAgaW50IHJlcyA9IGZ1bmMoZW50cnksIGFyZyk7CisgICAgICAgICAgICBpbnQgcmVzID0gZnVuYyhodCwgZW50cnksIGFyZyk7CiAgICAgICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KQEAgLTM5NSw2ICs0MDgsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCiBoYXNodGFibGVfcmVoYXNoKF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CkBAIC00MjYsNyArNDQwLDggQEAKICAgICAgICAgZm9yIChlbnRyeSA9IEJVQ0tFVFNfSEVBRChvbGRfYnVja2V0c1tidWNrZXRdKTsgZW50cnkgIT0gTlVMTDsgZW50cnkgPSBuZXh0KSB7CiAgICAgICAgICAgICBzaXplX3QgZW50cnlfaW5kZXg7CiAKLSAgICAgICAgICAgIGFzc2VydChodC0+aGFzaF9mdW5jKGVudHJ5LT5rZXkpID09IGVudHJ5LT5rZXlfaGFzaCk7CisKKyAgICAgICAgICAgIGFzc2VydChodC0+aGFzaF9mdW5jKGh0LCBfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoZW50cnkpKSA9PSBlbnRyeS0+a2V5X2hhc2gpOwogICAgICAgICAgICAgbmV4dCA9IEVOVFJZX05FWFQoZW50cnkpOwogICAgICAgICAgICAgZW50cnlfaW5kZXggPSBlbnRyeS0+a2V5X2hhc2ggJiAobmV3X3NpemUgLSAxKTsKIApAQCAtNDM3LDYgKzQ1Miw3IEBACiAgICAgaHQtPmFsbG9jLmZyZWUob2xkX2J1Y2tldHMpOwogfQogCisKIHZvaWQKIF9QeV9oYXNodGFibGVfY2xlYXIoX1B5X2hhc2h0YWJsZV90ICpodCkKIHsKQEAgLTQ0Niw4ICs0NjIsNiBAQAogICAgIGZvciAoaT0wOyBpIDwgaHQtPm51bV9idWNrZXRzOyBpKyspIHsKICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGkpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IG5leHQpIHsKICAgICAgICAgICAgIG5leHQgPSBFTlRSWV9ORVhUKGVudHJ5KTsKLSAgICAgICAgICAgIGlmIChodC0+ZnJlZV9kYXRhX2Z1bmMpCi0gICAgICAgICAgICAgICAgaHQtPmZyZWVfZGF0YV9mdW5jKF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpKTsKICAgICAgICAgICAgIGh0LT5hbGxvYy5mcmVlKGVudHJ5KTsKICAgICAgICAgfQogICAgICAgICBfUHlfc2xpc3RfaW5pdCgmaHQtPmJ1Y2tldHNbaV0pOwpAQCAtNDU2LDYgKzQ3MCw3IEBACiAgICAgaGFzaHRhYmxlX3JlaGFzaChodCk7CiB9CiAKKwogdm9pZAogX1B5X2hhc2h0YWJsZV9kZXN0cm95KF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CkBAIC00NjUsOCArNDgwLDYgQEAKICAgICAgICAgX1B5X3NsaXN0X2l0ZW1fdCAqZW50cnkgPSBodC0+YnVja2V0c1tpXS5oZWFkOwogICAgICAgICB3aGlsZSAoZW50cnkpIHsKICAgICAgICAgICAgIF9QeV9zbGlzdF9pdGVtX3QgKmVudHJ5X25leHQgPSBlbnRyeS0+bmV4dDsKLSAgICAgICAgICAgIGlmIChodC0+ZnJlZV9kYXRhX2Z1bmMpCi0gICAgICAgICAgICAgICAgaHQtPmZyZWVfZGF0YV9mdW5jKF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpKTsKICAgICAgICAgICAgIGh0LT5hbGxvYy5mcmVlKGVudHJ5KTsKICAgICAgICAgICAgIGVudHJ5ID0gZW50cnlfbmV4dDsKICAgICAgICAgfQpAQCAtNDc2LDM5ICs0ODksMzEgQEAKICAgICBodC0+YWxsb2MuZnJlZShodCk7CiB9CiAKLS8qIFJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggdGFibGUgKi8KKwogX1B5X2hhc2h0YWJsZV90ICoKIF9QeV9oYXNodGFibGVfY29weShfUHlfaGFzaHRhYmxlX3QgKnNyYykKIHsKKyAgICBjb25zdCBzaXplX3Qga2V5X3NpemUgPSBzcmMtPmtleV9zaXplOworICAgIGNvbnN0IHNpemVfdCBkYXRhX3NpemUgPSBzcmMtPmRhdGFfc2l6ZTsKICAgICBfUHlfaGFzaHRhYmxlX3QgKmRzdDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogICAgIHNpemVfdCBidWNrZXQ7CiAgICAgaW50IGVycjsKLSAgICB2b2lkICpkYXRhLCAqbmV3X2RhdGE7CiAKLSAgICBkc3QgPSBfUHlfaGFzaHRhYmxlX25ld19mdWxsKHNyYy0+ZGF0YV9zaXplLCBzcmMtPm51bV9idWNrZXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+aGFzaF9mdW5jLCBzcmMtPmNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmNvcHlfZGF0YV9mdW5jLCBzcmMtPmZyZWVfZGF0YV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+Z2V0X2RhdGFfc2l6ZV9mdW5jLCAmc3JjLT5hbGxvYyk7CisgICAgZHN0ID0gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChrZXlfc2l6ZSwgZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5udW1fYnVja2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+aGFzaF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5jb21wYXJlX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3JjLT5hbGxvYyk7CiAgICAgaWYgKGRzdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoYnVja2V0PTA7IGJ1Y2tldCA8IHNyYy0+bnVtX2J1Y2tldHM7IGJ1Y2tldCsrKSB7CiAgICAgICAgIGVudHJ5ID0gVEFCTEVfSEVBRChzcmMsIGJ1Y2tldCk7CiAgICAgICAgIGZvciAoOyBlbnRyeTsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICAgICAgaWYgKHNyYy0+Y29weV9kYXRhX2Z1bmMpIHsKLSAgICAgICAgICAgICAgICBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChlbnRyeSk7Ci0gICAgICAgICAgICAgICAgbmV3X2RhdGEgPSBzcmMtPmNvcHlfZGF0YV9mdW5jKGRhdGEpOwotICAgICAgICAgICAgICAgIGlmIChuZXdfZGF0YSAhPSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBlcnIgPSBfUHlfaGFzaHRhYmxlX3NldChkc3QsIGVudHJ5LT5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19kYXRhLCBzcmMtPmRhdGFfc2l6ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBlcnIgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShlbnRyeSk7Ci0gICAgICAgICAgICAgICAgZXJyID0gX1B5X2hhc2h0YWJsZV9zZXQoZHN0LCBlbnRyeS0+a2V5LCBkYXRhLCBzcmMtPmRhdGFfc2l6ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCB2b2lkICpwa2V5ID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KTsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShzcmMsIGVudHJ5KTsKKyAgICAgICAgICAgIGVyciA9IF9QeV9oYXNodGFibGVfc2V0KGRzdCwga2V5X3NpemUsIHBrZXksIGRhdGFfc2l6ZSwgcGRhdGEpOwogICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShkc3QpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTE3LDQgKzUyMiwzIEBACiAgICAgfQogICAgIHJldHVybiBkc3Q7CiB9Ci0KZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaHRhYmxlLmggYi9Nb2R1bGVzL2hhc2h0YWJsZS5oCmluZGV4IGE5Zjk5OTMuLmRiZWMyM2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaGFzaHRhYmxlLmgKKysrIGIvTW9kdWxlcy9oYXNodGFibGUuaApAQCAtMSw5ICsxLDEwIEBACiAjaWZuZGVmIFB5X0hBU0hUQUJMRV9ICiAjZGVmaW5lIFB5X0hBU0hUQUJMRV9ICi0KIC8qIFRoZSB3aG9sZSBBUEkgaXMgcHJpdmF0ZSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogCisvKiBTaW5nbGUgbGlua2VkIGxpc3QgKi8KKwogdHlwZWRlZiBzdHJ1Y3QgX1B5X3NsaXN0X2l0ZW1fcyB7CiAgICAgc3RydWN0IF9QeV9zbGlzdF9pdGVtX3MgKm5leHQ7CiB9IF9QeV9zbGlzdF9pdGVtX3Q7CkBAIC0xNiwzMyArMTcsNjYgQEAKIAogI2RlZmluZSBfUHlfU0xJU1RfSEVBRChTTElTVCkgKCgoX1B5X3NsaXN0X3QgKilTTElTVCktPmhlYWQpCiAKKworLyogX1B5X2hhc2h0YWJsZTogdGFibGUgZW50cnkgKi8KKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIHVzZWQgYnkgX1B5X2hhc2h0YWJsZV90LmJ1Y2tldHMgdG8gbGluayBlbnRyaWVzICovCiAgICAgX1B5X3NsaXN0X2l0ZW1fdCBfUHlfc2xpc3RfaXRlbTsKIAotICAgIGNvbnN0IHZvaWQgKmtleTsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogCi0gICAgLyogZGF0YSBmb2xsb3dzICovCisgICAgLyoga2V5IChrZXlfc2l6ZSBieXRlcykgYW5kIHRoZW4gZGF0YSAoZGF0YV9zaXplIGJ5dGVzKSBmb2xsb3dzICovCiB9IF9QeV9oYXNodGFibGVfZW50cnlfdDsKIAotI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoRU5UUlkpIFwKLSAgICAgICAgKChjaGFyICopKEVOVFJZKSArIHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpKQorI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoRU5UUlkpIFwKKyAgICAgICAgKChjb25zdCB2b2lkICopKChjaGFyICopKEVOVFJZKSBcCisgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpKSkKIAotI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKEVOVFJZKSBcCi0gICAgICAgICgqKHZvaWQgKiopX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKEVOVFJZKSkKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgRU5UUlkpIFwKKyAgICAgICAgKChjb25zdCB2b2lkICopKChjaGFyICopKEVOVFJZKSBcCisgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICsgKFRBQkxFKS0+a2V5X3NpemUpKQogCi0jZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKFRBQkxFLCBEQVRBLCBEQVRBX1NJWkUsIEVOVFJZKSBcCisvKiBHZXQgYSBrZXkgdmFsdWUgZnJvbSBwa2V5OiB1c2UgbWVtY3B5KCkgcmF0aGVyIHRoYW4gYSBwb2ludGVyIGRlcmVmZXJlbmNlCisgICB0byBhdm9pZCBtZW1vcnkgYWxpZ25tZW50IGlzc3Vlcy4gKi8KKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShUQUJMRSwgUEtFWSwgRFNUX0tFWSkgXAogICAgIGRvIHsgXAotICAgICAgICBhc3NlcnQoKERBVEFfU0laRSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAotICAgICAgICBtZW1jcHkoREFUQSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKEVOVFJZKSwgREFUQV9TSVpFKTsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKERTVF9LRVkpID09IChUQUJMRSktPmtleV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoJihEU1RfS0VZKSwgKFBLRVkpLCBzaXplb2YoRFNUX0tFWSkpOyBcCiAgICAgfSB3aGlsZSAoMCkKIAotdHlwZWRlZiBQeV91aGFzaF90ICgqX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpIChjb25zdCB2b2lkICprZXkpOwotdHlwZWRlZiBpbnQgKCpfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYykgKGNvbnN0IHZvaWQgKmtleSwgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICpoZSk7Ci10eXBlZGVmIHZvaWQqICgqX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYykodm9pZCAqZGF0YSk7Ci10eXBlZGVmIHZvaWQgKCpfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jKSh2b2lkICpkYXRhKTsKLXR5cGVkZWYgc2l6ZV90ICgqX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMpKHZvaWQgKmRhdGEpOworI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKFRBQkxFLCBFTlRSWSwgS0VZKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydChzaXplb2YoS0VZKSA9PSAoVEFCTEUpLT5rZXlfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCYoS0VZKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKEVOVFJZKSwgc2l6ZW9mKEtFWSkpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShUQUJMRSwgRU5UUlksIERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEQVRBKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgmKERBVEEpLCBfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKFRBQkxFLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKERBVEEpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9XUklURV9EQVRBKFRBQkxFLCBFTlRSWSwgREFUQSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKERBVEEpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCh2b2lkICopX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQSgoVEFCTEUpLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgJihEQVRBKSwgc2l6ZW9mKERBVEEpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKworLyogX1B5X2hhc2h0YWJsZTogcHJvdG90eXBlcyAqLworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90OworCit0eXBlZGVmIFB5X3VoYXNoX3QgKCpfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYykgKHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwa2V5KTsKK3R5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpIChzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqaGUpOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLyogYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgKi8KQEAgLTUyLDc3ICs4NiwxMjYgQEAKICAgICB2b2lkICgqZnJlZSkgKHZvaWQgKnB0cik7CiB9IF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3Q7CiAKLXR5cGVkZWYgc3RydWN0IHsKKworLyogX1B5X2hhc2h0YWJsZTogdGFibGUgKi8KKwordHlwZWRlZiBzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90IHsKICAgICBzaXplX3QgbnVtX2J1Y2tldHM7CiAgICAgc2l6ZV90IGVudHJpZXM7IC8qIFRvdGFsIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSB0YWJsZS4gKi8KICAgICBfUHlfc2xpc3RfdCAqYnVja2V0czsKKyAgICBzaXplX3Qga2V5X3NpemU7CiAgICAgc2l6ZV90IGRhdGFfc2l6ZTsKIAogICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYzsKICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmM7Ci0gICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYzsKLSAgICBfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jIGZyZWVfZGF0YV9mdW5jOwotICAgIF9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jIGdldF9kYXRhX3NpemVfZnVuYzsKICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGFsbG9jOwogfSBfUHlfaGFzaHRhYmxlX3Q7CiAKLS8qIGhhc2ggYW5kIGNvbXBhcmUgZnVuY3Rpb25zIGZvciBpbnRlZ2VycyBhbmQgcG9pbnRlcnMgKi8KLVB5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX3B0cihjb25zdCB2b2lkICprZXkpOwotUHlBUElfRlVOQyhQeV91aGFzaF90KSBfUHlfaGFzaHRhYmxlX2hhc2hfaW50KGNvbnN0IHZvaWQgKmtleSk7Ci1QeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdChjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpOworLyogaGFzaCBhIHBvaW50ZXIgKHZvaWQqKSAqLworUHlBUElfRlVOQyhQeV91aGFzaF90KSBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyKAorICAgIHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIGNvbnN0IHZvaWQgKnBrZXkpOworCisvKiBjb21wYXJpc29uIHVzaW5nIG1lbWNtcCgpICovCitQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCgKKyAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSk7CiAKIFB5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV90ICopIF9QeV9oYXNodGFibGVfbmV3KAorICAgIHNpemVfdCBrZXlfc2l6ZSwKICAgICBzaXplX3QgZGF0YV9zaXplLAogICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMpOworCiBQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX25ld19mdWxsKAorICAgIHNpemVfdCBrZXlfc2l6ZSwKICAgICBzaXplX3QgZGF0YV9zaXplLAogICAgIHNpemVfdCBpbml0X3NpemUsCiAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMgaGFzaF9mdW5jLAogICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYywKLSAgICBfUHlfaGFzaHRhYmxlX2NvcHlfZGF0YV9mdW5jIGNvcHlfZGF0YV9mdW5jLAotICAgIF9QeV9oYXNodGFibGVfZnJlZV9kYXRhX2Z1bmMgZnJlZV9kYXRhX2Z1bmMsCi0gICAgX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMgZ2V0X2RhdGFfc2l6ZV9mdW5jLAogICAgIF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3QgKmFsbG9jYXRvcik7Ci1QeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX2NvcHkoX1B5X2hhc2h0YWJsZV90ICpzcmMpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpOworCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9oYXNodGFibGVfZGVzdHJveShfUHlfaGFzaHRhYmxlX3QgKmh0KTsKIAotdHlwZWRlZiBpbnQgKCpfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYykgKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKmFyZyk7CisvKiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIHRhYmxlICovCitQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX2NvcHkoX1B5X2hhc2h0YWJsZV90ICpzcmMpOwogCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9oYXNodGFibGVfY2xlYXIoX1B5X2hhc2h0YWJsZV90ICpodCk7CisKK3R5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMpIChfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKworLyogQ2FsbCBmdW5jKCkgb24gZWFjaCBlbnRyeSBvZiB0aGUgaGFzaHRhYmxlLgorICAgSXRlcmF0aW9uIHN0b3BzIGlmIGZ1bmMoKSByZXN1bHQgaXMgbm9uLXplcm8sIGluIHRoaXMgY2FzZSBpdCdzIHRoZSByZXN1bHQKKyAgIG9mIHRoZSBjYWxsLiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuICovCiBQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9mb3JlYWNoKAogICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMgZnVuYywgdm9pZCAqYXJnKTsKKyAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYyBmdW5jLAorICAgIHZvaWQgKmFyZyk7CisKIFB5QVBJX0ZVTkMoc2l6ZV90KSBfUHlfaGFzaHRhYmxlX3NpemUoX1B5X2hhc2h0YWJsZV90ICpodCk7CiAKLVB5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV9lbnRyeV90KikgX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoCi0gICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXkpOworLyogQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBoYXNoLiBUaGUga2V5IG11c3Qgbm90IGJlIHByZXNlbnQgaW4gdGhlIGhhc2ggdGFibGUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBtZW1vcnkgZXJyb3IuCisKKyAgIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwKKyAgIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9TRVQoKSBhbmQgX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKCkgbWFjcm9zICovCiBQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9zZXQoCiAgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXksCi0gICAgdm9pZCAqZGF0YSwKLSAgICBzaXplX3QgZGF0YV9zaXplKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX2dldCgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSwKLSAgICB2b2lkICpkYXRhLAotICAgIHNpemVfdCBkYXRhX3NpemUpOwotUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfcG9wKAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5LAotICAgIHZvaWQgKmRhdGEsCi0gICAgc2l6ZV90IGRhdGFfc2l6ZSk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeV9oYXNodGFibGVfZGVsZXRlKAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5KTsKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBzaXplX3QgZGF0YV9zaXplLAorICAgIGNvbnN0IHZvaWQgKmRhdGEpOwogCiAjZGVmaW5lIF9QeV9IQVNIVEFCTEVfU0VUKFRBQkxFLCBLRVksIERBVEEpIFwKLSAgICBfUHlfaGFzaHRhYmxlX3NldChUQUJMRSwgS0VZLCAmKERBVEEpLCBzaXplb2YoREFUQSkpCisgICAgX1B5X2hhc2h0YWJsZV9zZXQoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEoVEFCTEUsIEtFWSkgXAorICAgIF9QeV9oYXNodGFibGVfc2V0KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpLCAwLCBOVUxMKQorCisKKy8qIEdldCBhbiBlbnRyeS4KKyAgIFJldHVybiBOVUxMIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QuCisKKyAgIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSgpCisgICBtYWNybyAqLworUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX2VudHJ5X3QqKSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeSgKKyAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIHNpemVfdCBrZXlfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpwa2V5KTsKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWShUQUJMRSwgS0VZKSBcCisgICAgX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSkpCisKKworLyogR2V0IGRhdGEgZnJvbSBhbiBlbnRyeS4gQ29weSBlbnRyeSBkYXRhIGludG8gZGF0YSBhbmQgcmV0dXJuIDEgaWYgdGhlIGVudHJ5CisgICBleGlzdHMsIHJldHVybiAwIGlmIHRoZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KKworICAgRG9uJ3QgY2FsbCBkaXJlY3RseSB0aGlzIGZ1bmN0aW9uLCBidXQgdXNlIF9QeV9IQVNIVEFCTEVfR0VUKCkgbWFjcm8gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX2dldCgKKyAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIHNpemVfdCBrZXlfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpwa2V5LAorICAgIHNpemVfdCBkYXRhX3NpemUsCisgICAgdm9pZCAqZGF0YSk7CiAKICNkZWZpbmUgX1B5X0hBU0hUQUJMRV9HRVQoVEFCTEUsIEtFWSwgREFUQSkgXAotICAgIF9QeV9oYXNodGFibGVfZ2V0KFRBQkxFLCBLRVksICYoREFUQSksIHNpemVvZihEQVRBKSkKKyAgICBfUHlfaGFzaHRhYmxlX2dldChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgc2l6ZW9mKERBVEEpLCAmKERBVEEpKQorCisKKy8qIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX1BPUCgpIG1hY3JvICovCitQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9wb3AoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBzaXplX3QgZGF0YV9zaXplLAorICAgIHZvaWQgKmRhdGEpOworCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfUE9QKFRBQkxFLCBLRVksIERBVEEpIFwKKyAgICBfUHlfaGFzaHRhYmxlX3BvcChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgc2l6ZW9mKERBVEEpLCAmKERBVEEpKQorCiAKICNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCi0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKaW5kZXggYmUwZjQ5OC4uNmJmMDRjYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCkBAIC0xLDQgKzEsNSBAQAogCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIApAQCAtNyw3ICs4LDcgQEAKICovCiAKIAotLyogZ3JvdXBieSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBncm91cGJ5IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC03NCw3ICs3NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ3JvdXBieV9uZXh0KGdyb3VwYnlvYmplY3QgKmdibykKIHsKLSAgICBQeU9iamVjdCAqbmV3dmFsdWUsICpuZXdrZXksICpyLCAqZ3JvdXBlciwgKnRtcDsKKyAgICBQeU9iamVjdCAqbmV3dmFsdWUsICpuZXdrZXksICpyLCAqZ3JvdXBlcjsKIAogICAgIC8qIHNraXAgdG8gbmV4dCBpdGVyYXRpb24gZ3JvdXAgKi8KICAgICBmb3IgKDs7KSB7CkBAIC04NSw4ICs4Niw3IEBACiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHJjbXA7CiAKLSAgICAgICAgICAgIHJjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZ2JvLT50Z3RrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdiby0+Y3VycmtleSwgUHlfRVEpOworICAgICAgICAgICAgcmNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChnYm8tPnRndGtleSwgZ2JvLT5jdXJya2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBpZiAocmNtcCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGVsc2UgaWYgKHJjbXAgPT0gMCkKQEAgLTEwMSwyNyArMTAxLDE5IEBACiAgICAgICAgICAgICBuZXdrZXkgPSBuZXd2YWx1ZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsdWUsIE5VTEwpOworICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsIG5ld3ZhbHVlLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChuZXdrZXkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0bXAgPSBnYm8tPmN1cnJrZXk7Ci0gICAgICAgIGdiby0+Y3VycmtleSA9IG5ld2tleTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOwotCi0gICAgICAgIHRtcCA9IGdiby0+Y3VycnZhbHVlOwotICAgICAgICBnYm8tPmN1cnJ2YWx1ZSA9IG5ld3ZhbHVlOwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgIFB5X1hTRVRSRUYoZ2JvLT5jdXJya2V5LCBuZXdrZXkpOworICAgICAgICBQeV9YU0VUUkVGKGdiby0+Y3VycnZhbHVlLCBuZXd2YWx1ZSk7CiAgICAgfQogCiAgICAgUHlfSU5DUkVGKGdiby0+Y3VycmtleSk7Ci0gICAgdG1wID0gZ2JvLT50Z3RrZXk7Ci0gICAgZ2JvLT50Z3RrZXkgPSBnYm8tPmN1cnJrZXk7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYoZ2JvLT50Z3RrZXksIGdiby0+Y3VycmtleSk7CiAKICAgICBncm91cGVyID0gX2dyb3VwZXJfY3JlYXRlKGdibywgZ2JvLT50Z3RrZXkpOwogICAgIGlmIChncm91cGVyID09IE5VTEwpCkBAIC0xNzgsNyArMTcwLDcgQEAKICAgICAgcmVkdWNlX2RvY30sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pZ3JvdXBieV9zZXRzdGF0ZSwgICAgTUVUSF9PLAogICAgICBzZXRzdGF0ZV9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBQeURvY19TVFJWQVIoZ3JvdXBieV9kb2MsCkBAIC0zMDEsOCArMjkzLDcgQEAKICAgICAgICAgICAgIG5ld2tleSA9IG5ld3ZhbHVlOwogICAgICAgICAgICAgUHlfSU5DUkVGKG5ld3ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ld2tleSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ2JvLT5rZXlmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd2YWx1ZSwgTlVMTCk7CisgICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywgbmV3dmFsdWUsIE5VTEwpOwogICAgICAgICAgICAgaWYgKG5ld2tleSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3ZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMCw4ICszMjEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9ncm91cGVyX3JlZHVjZShfZ3JvdXBlcm9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCi0gICAgICAgICAgICBsei0+cGFyZW50LCBsei0+dGd0a2V5KTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwgbHotPnBhcmVudCwgbHotPnRndGtleSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBfZ3JvdXBlcl9tZXRob2RzW10gPSB7CkBAIC0zNjQsNyArMzU0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKV9ncm91cGVyX3RyYXZlcnNlLC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYylfZ3JvdXBlcl90cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTM4NSw4ICszNzUsNyBAQAogfTsKIAogCi0KLS8qIHRlZSBvYmplY3QgYW5kIHdpdGggc3VwcG9ydGluZyBmdW5jdGlvbiBhbmQgb2JqZWN0cyAqKioqKioqKioqKioqKiovCisvKiB0ZWUgb2JqZWN0IGFuZCB3aXRoIHN1cHBvcnRpbmcgZnVuY3Rpb24gYW5kIG9iamVjdHMgKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIFRoZSB0ZWVkYXRhb2JqZWN0IHByZS1hbGxvY2F0ZXMgc3BhY2UgZm9yIExJTktDRUxMUyBudW1iZXIgb2Ygb2JqZWN0cy4KICAgIFRvIGhlbHAgdGhlIG9iamVjdCBmaXQgbmVhdGx5IGluc2lkZSBjYWNoZSBsaW5lcyAoc3BhY2UgZm9yIDE2IHRvIDMyCkBAIC00MDEsNyArMzkwLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKml0OwotICAgIGludCBudW1yZWFkOyAgLyogMCA8PSBudW1yZWFkIDw9IExJTktDRUxMUyAqLworICAgIGludCBudW1yZWFkOyAgICAgICAgICAgICAgICAvKiAwIDw9IG51bXJlYWQgPD0gTElOS0NFTExTICovCiAgICAgUHlPYmplY3QgKm5leHRsaW5rOwogICAgIFB5T2JqZWN0ICoodmFsdWVzW0xJTktDRUxMU10pOwogfSB0ZWVkYXRhb2JqZWN0OwpAQCAtNDA5LDcgKzM5OCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIHRlZWRhdGFvYmplY3QgKmRhdGFvYmo7Ci0gICAgaW50IGluZGV4OyAgICAvKiAwIDw9IGluZGV4IDw9IExJTktDRUxMUyAqLworICAgIGludCBpbmRleDsgICAgICAgICAgICAgICAgICAvKiAwIDw9IGluZGV4IDw9IExJTktDRUxMUyAqLwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gdGVlb2JqZWN0OwogCkBAIC00NjYsNiArNDU1LDcgQEAKIHRlZWRhdGFvYmplY3RfdHJhdmVyc2UodGVlZGF0YW9iamVjdCAqdGRvLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKiBhcmcpCiB7CiAgICAgaW50IGk7CisKICAgICBQeV9WSVNJVCh0ZG8tPml0KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgdGRvLT5udW1yZWFkOyBpKyspCiAgICAgICAgIFB5X1ZJU0lUKHRkby0+dmFsdWVzW2ldKTsKQEAgLTUxNSw2ICs1MDUsNyBAQAogICAgIGludCBpOwogICAgIC8qIGNyZWF0ZSBhIHRlbXBvcmFyeSBsaXN0IG9mIGFscmVhZHkgaXRlcmF0ZWQgdmFsdWVzICovCiAgICAgUHlPYmplY3QgKnZhbHVlcyA9IFB5TGlzdF9OZXcodGRvLT5udW1yZWFkKTsKKwogICAgIGlmICghdmFsdWVzKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmb3IgKGk9MCA7IGk8dGRvLT5udW1yZWFkIDsgaSsrKSB7CkBAIC01ODIsNyArNTczLDcgQEAKIFB5RG9jX1NUUlZBUih0ZWVkYXRhb2JqZWN0X2RvYywgIkRhdGEgY29udGFpbmVyIGNvbW1vbiB0byBtdWx0aXBsZSB0ZWUgb2JqZWN0cy4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVkYXRhb2JqZWN0X3R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApICAgICAgICAgLyogTXVzdCBmaWxsIGluIHR5cGUgdmFsdWUgbGF0ZXIgKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoMCwgMCkgICAgICAgICAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCiAgICAgIml0ZXJ0b29scy5fdGVlX2RhdGFvYmplY3QiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHRlZWRhdGFvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCkBAIC02MDIsNyArNTkzLDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIHRlZWRhdGFvYmplY3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYyl0ZWVkYXRhb2JqZWN0X3RyYXZlcnNlLCAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXRlZWRhdGFvYmplY3RfY2xlYXIsICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTc2Miw5ICs3NTMsOSBAQAogIkl0ZXJhdG9yIHdyYXBwZWQgdG8gbWFrZSBpdCBjb3B5YWJsZSIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgdGVlX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbil0ZWVfY29weSwgIE1FVEhfTk9BUkdTLCB0ZWVjb3B5X2RvY30sCi0gICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGVlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCi0gICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGVlX3NldHN0YXRlLCAgICBNRVRIX08sIHNldHN0YXRlX2RvY30sCisgICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pdGVlX2NvcHksICAgICBNRVRIX05PQVJHUywgdGVlY29weV9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9yZWR1Y2UsICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXRlZV9zZXRzdGF0ZSwgTUVUSF9PLCAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTc5NCw3ICs3ODUsNyBAQAogICAgICh0cmF2ZXJzZXByb2MpdGVlX3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpdGVlX2NsZWFyLCAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIG9mZnNldG9mKHRlZW9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZih0ZWVvYmplY3QsIHdlYWtyZWZsaXN0KSwgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXRlZV9uZXh0LCAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIHRlZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KQEAgLTg2MCwxMiArODUxLDEzIEBACiAidGVlKGl0ZXJhYmxlLCBuPTIpIC0tPiB0dXBsZSBvZiBuIGluZGVwZW5kZW50IGl0ZXJhdG9ycy4iKTsKIAogCi0vKiBjeWNsZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGN5Y2xlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqaXQ7CiAgICAgUHlPYmplY3QgKnNhdmVkOworICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgaW50IGZpcnN0cGFzczsKIH0gY3ljbGVvYmplY3Q7CiAKQEAgLTkwNSw2ICs4OTcsNyBAQAogICAgIH0KICAgICBsei0+aXQgPSBpdDsKICAgICBsei0+c2F2ZWQgPSBzYXZlZDsKKyAgICBsei0+aW5kZXggPSAwOwogICAgIGx6LT5maXJzdHBhc3MgPSAwOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWx6OwpAQCAtOTE0LDE1ICs5MDcsMTYgQEAKIGN5Y2xlX2RlYWxsb2MoY3ljbGVvYmplY3QgKmx6KQogewogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobHopOwotICAgIFB5X1hERUNSRUYobHotPnNhdmVkKTsKICAgICBQeV9YREVDUkVGKGx6LT5pdCk7CisgICAgUHlfWERFQ1JFRihsei0+c2F2ZWQpOwogICAgIFB5X1RZUEUobHopLT50cF9mcmVlKGx6KTsKIH0KIAogc3RhdGljIGludAogY3ljbGVfdHJhdmVyc2UoY3ljbGVvYmplY3QgKmx6LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9WSVNJVChsei0+aXQpOworICAgIGlmIChsei0+aXQpCisgICAgICAgIFB5X1ZJU0lUKGx6LT5pdCk7CiAgICAgUHlfVklTSVQobHotPnNhdmVkKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTkzMSw0NSArOTI1LDU2IEBACiBjeWNsZV9uZXh0KGN5Y2xlb2JqZWN0ICpseikKIHsKICAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBQeU9iamVjdCAqaXQ7Ci0gICAgUHlPYmplY3QgKnRtcDsKIAotICAgIHdoaWxlICgxKSB7CisgICAgaWYgKGx6LT5pdCAhPSBOVUxMKSB7CiAgICAgICAgIGl0ZW0gPSBQeUl0ZXJfTmV4dChsei0+aXQpOwogICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoIWx6LT5maXJzdHBhc3MgJiYgUHlMaXN0X0FwcGVuZChsei0+c2F2ZWQsIGl0ZW0pKSB7CisgICAgICAgICAgICBpZiAobHotPmZpcnN0cGFzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGx6LT5zYXZlZCwgaXRlbSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X1NpemUobHotPnNhdmVkKSA9PSAwKQorICAgICAgICAvKiBOb3RlOiAgU3RvcEl0ZXJhdGlvbiBpcyBhbHJlYWR5IGNsZWFyZWQgYnkgUHlJdGVyX05leHQoKSAqLworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIobHotPnNhdmVkKTsKLSAgICAgICAgaWYgKGl0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdG1wID0gbHotPml0OwotICAgICAgICBsei0+aXQgPSBpdDsKLSAgICAgICAgbHotPmZpcnN0cGFzcyA9IDE7Ci0gICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBQeV9DTEVBUihsei0+aXQpOwogICAgIH0KKyAgICBpZiAoUHlfU0laRShsei0+c2F2ZWQpID09IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGl0ZW0gPSBQeUxpc3RfR0VUX0lURU0obHotPnNhdmVkLCBsei0+aW5kZXgpOworICAgIGx6LT5pbmRleCsrOworICAgIGlmIChsei0+aW5kZXggPj0gUHlfU0laRShsei0+c2F2ZWQpKQorICAgICAgICBsei0+aW5kZXggPSAwOworICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICByZXR1cm4gaXRlbTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGN5Y2xlX3JlZHVjZShjeWNsZW9iamVjdCAqbHopCiB7Ci0gICAgLyogQ3JlYXRlIGEgbmV3IGN5Y2xlIHdpdGggdGhlIGl0ZXJhdG9yIHR1cGxlLCB0aGVuIHNldAotICAgICAqIHRoZSBzYXZlZCBzdGF0ZSBvbiBpdC4KLSAgICAgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKShPaSkiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgbHotPml0LCBsei0+c2F2ZWQsIGx6LT5maXJzdHBhc3MpOworICAgIC8qIENyZWF0ZSBhIG5ldyBjeWNsZSB3aXRoIHRoZSBpdGVyYXRvciB0dXBsZSwgdGhlbiBzZXQgdGhlIHNhdmVkIHN0YXRlICovCisgICAgaWYgKGx6LT5pdCA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5T2JqZWN0X0dldEl0ZXIobHotPnNhdmVkKTsKKyAgICAgICAgaWYgKGl0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKGx6LT5pbmRleCAhPSAwKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX3NldHN0YXRlX18pOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaXQsICZQeUlkX19fc2V0c3RhdGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuIiwgbHotPmluZGV4KTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhOKShPaSkiLCBQeV9UWVBFKGx6KSwgaXQsIGx6LT5zYXZlZCwgMSk7CiAgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pKE9pKSIsIFB5X1RZUEUobHopLCBsei0+aXQsIGx6LT5zYXZlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsei0+Zmlyc3RwYXNzKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGN5Y2xlX3NldHN0YXRlKGN5Y2xlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQpAQCAtOTgzLDkgKzk4OCwxMCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk8haSIsICZQeUxpc3RfVHlwZSwgJnNhdmVkLCAmZmlyc3RwYXNzKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWElOQ1JFRihzYXZlZCk7CisgICAgUHlfSU5DUkVGKHNhdmVkKTsKICAgICBQeV9YU0VUUkVGKGx6LT5zYXZlZCwgc2F2ZWQpOwogICAgIGx6LT5maXJzdHBhc3MgPSBmaXJzdHBhc3MgIT0gMDsKKyAgICBsei0+aW5kZXggPSAwOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xMDU0LDcgKzEwNjAsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqZnVuYzsKICAgICBQeU9iamVjdCAqaXQ7Ci0gICAgbG9uZyAgICAgICAgIHN0YXJ0OworICAgIGxvbmcgc3RhcnQ7CiB9IGRyb3B3aGlsZW9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkcm9wd2hpbGVfdHlwZTsKQEAgLTExNDQsOCArMTE1MCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZHJvcHdoaWxlX3JlZHVjZShkcm9wd2hpbGVvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RhcnQpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0YXJ0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExOTYsMTMgKzEyMDEsMTMgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgZHJvcHdoaWxlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylkcm9wd2hpbGVfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYylkcm9wd2hpbGVfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkcm9wd2hpbGVfbmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBkcm9wd2hpbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGRyb3B3aGlsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTIyMyw3ICsxMjI4LDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgUHlPYmplY3QgKml0OwotICAgIGxvbmcgICAgICAgICBzdG9wOworICAgIGxvbmcgc3RvcDsKIH0gdGFrZXdoaWxlb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRha2V3aGlsZV90eXBlOwpAQCAtMTI5OCw3ICsxMzAzLDcgQEAKICAgICB9CiAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoZ29vZCk7CiAgICAgUHlfREVDUkVGKGdvb2QpOwotICAgIGlmIChvayA9PSAxKQorICAgIGlmIChvayA+IDApCiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICBpZiAob2sgPT0gMCkKQEAgLTEzMDksMTQgKzEzMTQsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0YWtld2hpbGVfcmVkdWNlKHRha2V3aGlsZW9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLAotICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdG9wKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdG9wKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRha2V3aGlsZV9yZWR1Y2Vfc2V0c3RhdGUodGFrZXdoaWxlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIGludCBzdG9wID0gUHlPYmplY3RfSXNUcnVlKHN0YXRlKTsKKwogICAgIGlmIChzdG9wIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbHotPnN0b3AgPSBzdG9wOwpAQCAtMTM2MCw3ICsxMzY1LDcgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgdGFrZXdoaWxlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyl0YWtld2hpbGVfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYyl0YWtld2hpbGVfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTEzODEsNyArMTM4Niw3IEBACiB9OwogCiAKLS8qIGlzbGljZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogaXNsaWNlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTQxNyw3ICsxNDIyLDggQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKKyAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yICIKKyAgICAgICAgICAgICAgICAgICAiYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDMyLDE0ICsxNDM4LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciBhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CisgICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICAgICAgICAgImFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBpZiAoc3RhcnQ8MCB8fCBzdG9wPC0xKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAiSW5kaWNlcyBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKKyAgICAgICAgICAgIkluZGljZXMgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICJhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTUzNiw2ICsxNTQ0LDcgQEAKICAgICAgKiB0aGVuICdzZXRzdGF0ZScgd2l0aCB0aGUgbmV4dCBhbmQgY291bnQKICAgICAgKi8KICAgICBQeU9iamVjdCAqc3RvcDsKKwogICAgIGlmIChsei0+aXQgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZW1wdHlfbGlzdDsKICAgICAgICAgUHlPYmplY3QgKmVtcHR5X2l0OwpAQCAtMTU2NSw2ICsxNTc0LDcgQEAKIGlzbGljZV9zZXRzdGF0ZShpc2xpY2VvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCiB7CiAgICAgUHlfc3NpemVfdCBjbnQgPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKwogICAgIGlmIChjbnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbHotPmNudCA9IGNudDsKQEAgLTE3NzksNyArMTc4OSw3IEBACiB9OwogCiAKLS8qIGNoYWluIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjaGFpbiBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0xODU1LDMyICsxODY1LDMyIEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAKICAgICBpZiAobHotPnNvdXJjZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHJlYWR5IHN0b3BwZWQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAvKiBhbHJlYWR5IHN0b3BwZWQgKi8KIAogICAgIGlmIChsei0+YWN0aXZlID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gUHlJdGVyX05leHQobHotPnNvdXJjZSk7CiAgICAgICAgIGlmIChpdGVyYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihsei0+c291cmNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gbW9yZSBpbnB1dCBzb3VyY2VzICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogbm8gbW9yZSBpbnB1dCBzb3VyY2VzICovCiAgICAgICAgIH0KICAgICAgICAgbHotPmFjdGl2ZSA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgICAgICBQeV9ERUNSRUYoaXRlcmFibGUpOwogICAgICAgICBpZiAobHotPmFjdGl2ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihsei0+c291cmNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgbm90IGl0ZXJhYmxlICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogaW5wdXQgbm90IGl0ZXJhYmxlICovCiAgICAgICAgIH0KICAgICB9Ci0gICAgaXRlbSA9IFB5SXRlcl9OZXh0KGx6LT5hY3RpdmUpOworICAgIGl0ZW0gPSAoKlB5X1RZUEUobHotPmFjdGl2ZSktPnRwX2l0ZXJuZXh0KShsei0+YWN0aXZlKTsKICAgICBpZiAoaXRlbSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gaXRlbTsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIGlucHV0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KICAgICB9CiAgICAgUHlfQ0xFQVIobHotPmFjdGl2ZSk7Ci0gICAgcmV0dXJuIGNoYWluX25leHQobHopOyAgICAgICAgICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KKyAgICByZXR1cm4gY2hhaW5fbmV4dChseik7ICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE5NDAsMTMgKzE5NTAsMTMgQEAKIHRoYXQgZXZhbHVhdGVzIGxhemlseS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGNoYWluX21ldGhvZHNbXSA9IHsKLSAgICB7ImZyb21faXRlcmFibGUiLCAoUHlDRnVuY3Rpb24pIGNoYWluX25ld19mcm9tX2l0ZXJhYmxlLCAgICAgICAgICAgIE1FVEhfTyB8IE1FVEhfQ0xBU1MsCi0gICAgICAgIGNoYWluX2Zyb21faXRlcmFibGVfZG9jfSwKKyAgICB7ImZyb21faXRlcmFibGUiLCAoUHlDRnVuY3Rpb24pIGNoYWluX25ld19mcm9tX2l0ZXJhYmxlLCBNRVRIX08gfCBNRVRIX0NMQVNTLAorICAgICBjaGFpbl9mcm9tX2l0ZXJhYmxlX2RvY30sCiAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY2hhaW5fcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAogICAgICByZWR1Y2VfZG9jfSwKICAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljaGFpbl9zZXRzdGF0ZSwgICAgTUVUSF9PLAogICAgICBzZXRzdGF0ZV9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGNoYWluX3R5cGUgPSB7CkBAIC0xOTk4LDEwICsyMDA4LDEwIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2xzOyAgICAgICAgICAgICAgICAgICAgLyogdHVwbGUgb2YgcG9vbCB0dXBsZXMgKi8KLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAgICAgICAgIC8qIG9uZSBpbmRleCBwZXIgcG9vbCAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIHByb2R1Y3QgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKnBvb2xzOyAgICAgICAgLyogdHVwbGUgb2YgcG9vbCB0dXBsZXMgKi8KKyAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAvKiBvbmUgaW5kZXggcGVyIHBvb2wgKi8KKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLworICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBwcm9kdWN0b2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHByb2R1Y3RfdHlwZTsKQEAgLTIwMjAsNyArMjAzMCw4IEBACiAgICAgICAgIFB5T2JqZWN0ICp0bXBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgICAgIGlmICh0bXBhcmdzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHModG1wYXJncywga3dkcywgInxuOnByb2R1Y3QiLCBrd2xpc3QsICZyZXBlYXQpKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHRtcGFyZ3MsIGt3ZHMsICJ8bjpwcm9kdWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmcmVwZWF0KSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHRtcGFyZ3MpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTIzMDksNyArMjMyMCw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IHByb2R1Y3RfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaXRlcnRvb2xzLnByb2R1Y3QiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCi0gICAgc2l6ZW9mKHByb2R1Y3RvYmplY3QpLCAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihwcm9kdWN0b2JqZWN0KSwgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKXByb2R1Y3RfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTIzNTEsMTUgKzIzNjIsMTUgQEAKIH07CiAKIAotLyogY29tYmluYXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjb21iaW5hdGlvbnMgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAgICAgICAgIC8qIG9uZSBpbmRleCBwZXIgcmVzdWx0IGVsZW1lbnQgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBjb21iaW5hdGlvbnMgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAvKiBvbmUgaW5kZXggcGVyIHJlc3VsdCBlbGVtZW50ICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLworICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBjb21iaW5hdGlvbnNvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY29tYmluYXRpb25zX3R5cGU7CkBAIC0yNTY5LDE3ICsyNTgwLDE2IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2wpOwogCi0gICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBsei0+cikKLSAgICB7CisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBsei0+cikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspIHsKICAgICAgICAgUHlfc3NpemVfdCBtYXg7CiAgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisKICAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KICAgICAgICAgbWF4ID0gaSArIG4gLSBsei0+cjsKQEAgLTI2NjUsNyArMjY3NSw3IEBACiB9OwogCiAKLS8qIGNvbWJpbmF0aW9ucyB3aXRoIHJlcGxhY2VtZW50IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY29tYmluYXRpb25zIHdpdGggcmVwbGFjZW1lbnQgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBFcXVpdmFsZW50IHRvOgogCkBAIC0yNjk1LDExICsyNzA1LDExIEBACiAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCiAgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciByZXN1bHQgZWxlbWVudCAqLwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBjd3IgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBjd3IgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCiB9IGN3cm9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjd3JfdHlwZTsKQEAgLTI3MTYsOCArMjcyNiw5IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsiaXRlcmFibGUiLCAiciIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9uOmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50Iiwga3dhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpdGVyYWJsZSwgJnIpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9uOmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsICZpdGVyYWJsZSwgJnIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHBvb2wgPSBQeVNlcXVlbmNlX1R1cGxlKGl0ZXJhYmxlKTsKQEAgLTI4ODIsOCArMjg5Myw3IEBACiAgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhsei0+cik7CiAgICAgICAgIGlmICghaW5kaWNlcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQotICAgICAgICB7CisgICAgICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOwpAQCAtMjkwOSwxMCArMjkxOSwxMCBAQAogICAgIH0KIAogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKLSAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisKICAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCiAgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAqLwpAQCAtMjk5Niw3ICszMDA2LDcgQEAKIH07CiAKIAotLyogcGVybXV0YXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8qIHBlcm11dGF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogZGVmIHBlcm11dGF0aW9ucyhpdGVyYWJsZSwgcj1Ob25lKToKICAgICAncGVybXV0YXRpb25zKHJhbmdlKDMpLCAyKSAtLT4gKDAsMSkgKDAsMikgKDEsMCkgKDEsMikgKDIsMCkgKDIsMSknCkBAIC0zMDIzLDEyICszMDMzLDEyIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAgICAgICAgIC8qIG9uZSBpbmRleCBwZXIgZWxlbWVudCBpbiB0aGUgcG9vbCAqLwotICAgIFB5X3NzaXplX3QgKmN5Y2xlczsgICAgICAgICAgICAgICAgIC8qIG9uZSByb2xsb3ZlciBjb3VudGVyIHBlciBlbGVtZW50IGluIHRoZSByZXN1bHQgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBwZXJtdXRhdGlvbnMgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAvKiBvbmUgaW5kZXggcGVyIGVsZW1lbnQgaW4gdGhlIHBvb2wgKi8KKyAgICBQeV9zc2l6ZV90ICpjeWNsZXM7ICAgICAvKiBvbmUgcm9sbG92ZXIgY291bnRlciBwZXIgZWxlbWVudCBpbiB0aGUgcmVzdWx0ICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLworICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBwZXJtdXRhdGlvbnNvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgcGVybXV0YXRpb25zX3R5cGU7CkBAIC0zMjQzLDcgKzMyNTMsNyBAQAogICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobik7CiAgICAgICAgIGlmIChpbmRpY2VzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QocG8tPmluZGljZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTMyNTMsOCArMzI2Myw3IEBACiAgICAgICAgIGN5Y2xlcyA9IFB5VHVwbGVfTmV3KHBvLT5yKTsKICAgICAgICAgaWYgKGN5Y2xlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCi0gICAgICAgIHsKKyAgICAgICAgZm9yIChpPTAgOyBpPHBvLT5yIDsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QocG8tPmN5Y2xlc1tpXSk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KQogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwpAQCAtMzI4NywxNSArMzI5NiwxMiBAQAogICAgIH0KIAogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKHBvLT5wb29sKTsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShpbmRpY2VzKSAhPSBuIHx8Ci0gICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoY3ljbGVzKSAhPSBwby0+cikKLSAgICB7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoaW5kaWNlcykgIT0gbiB8fCBQeVR1cGxlX0dFVF9TSVpFKGN5Y2xlcykgIT0gcG8tPnIpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmb3IgKGk9MDsgaTxuOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPG47IGkrKykgewogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGluZGljZXMsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTMzMDgsOCArMzMxNCw3IEBACiAgICAgICAgIHBvLT5pbmRpY2VzW2ldID0gaW5kZXg7CiAgICAgfQogCi0gICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykKLSAgICB7CisgICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGN5Y2xlcywgaSk7CiAgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKICAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMzM1MCwxMSArMzM1NSwxMSBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHBlcm11dGF0aW9uc190eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpdGVydG9vbHMucGVybXV0YXRpb25zIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMucGVybXV0YXRpb25zIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YocGVybXV0YXRpb25zb2JqZWN0KSwgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcilwZXJtdXRhdGlvbnNfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3RvcilwZXJtdXRhdGlvbnNfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMzM3MSwxMyArMzM3NiwxMyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBwZXJtdXRhdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpcGVybXV0YXRpb25zX3RyYXZlcnNlLCAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICBwZXJtdXRhdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXBlcm11dGF0aW9uc190cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKXBlcm11dGF0aW9uc19uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgKGl0ZXJuZXh0ZnVuYylwZXJtdXRhdGlvbnNfbmV4dCwgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBwZXJtdWF0aW9uc19tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMzM4OCwxMSArMzM5MywxMSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBwZXJtdXRhdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIHBlcm11dGF0aW9uc19uZXcsICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKLS8qIGFjY3VtdWxhdGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGFjY3VtdWxhdGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMzQ1OSw5ICszNDY0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhY2N1bXVsYXRlX25leHQoYWNjdW11bGF0ZW9iamVjdCAqbHopCiB7Ci0gICAgUHlPYmplY3QgKnZhbCwgKm9sZHRvdGFsLCAqbmV3dG90YWw7CisgICAgUHlPYmplY3QgKnZhbCwgKm5ld3RvdGFsOwogCi0gICAgdmFsID0gUHlJdGVyX05leHQobHotPml0KTsKKyAgICB2YWwgPSAoKlB5X1RZUEUobHotPml0KS0+dHBfaXRlcm5leHQpKGx6LT5pdCk7CiAgICAgaWYgKHZhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMzQ3OSwxMSArMzQ4NCw4IEBACiAgICAgaWYgKG5ld3RvdGFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgb2xkdG90YWwgPSBsei0+dG90YWw7Ci0gICAgbHotPnRvdGFsID0gbmV3dG90YWw7Ci0gICAgUHlfREVDUkVGKG9sZHRvdGFsKTsKLQogICAgIFB5X0lOQ1JFRihuZXd0b3RhbCk7CisgICAgUHlfU0VUUkVGKGx6LT50b3RhbCwgbmV3dG90YWwpOwogICAgIHJldHVybiBuZXd0b3RhbDsKIH0KIApAQCAtMzUxMCw3ICszNTEyLDcgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylPIiwgUHlfVFlQRShseiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPml0LCBsei0+Ymlub3A/bHotPmJpbm9wOlB5X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPnRvdGFsP2x6LT50b3RhbDpQeV9Ob25lKTsKLSB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhY2N1bXVsYXRlX3NldHN0YXRlKGFjY3VtdWxhdGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCkBAIC0zNjcyLDcgKzM2NzQsNyBAQAogCiAgICAgICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKHNlbGVjdG9yKTsKICAgICAgICAgUHlfREVDUkVGKHNlbGVjdG9yKTsKLSAgICAgICAgaWYgKG9rID09IDEpCisgICAgICAgIGlmIChvayA+IDApCiAgICAgICAgICAgICByZXR1cm4gZGF0dW07CiAgICAgICAgIFB5X0RFQ1JFRihkYXR1bSk7CiAgICAgICAgIGlmIChvayA8IDApCkBAIC0zNjg1LDcgKzM2ODcsNyBAQAogewogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAogICAgICAgICBsei0+ZGF0YSwgbHotPnNlbGVjdG9ycyk7Ci0gICAgfQorfQogCiBzdGF0aWMgUHlNZXRob2REZWYgY29tcHJlc3NfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNvbXByZXNzX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKQEAgLTM3MDQsNDQgKzM3MDYsNDQgQEAKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaXRlcnRvb2xzLmNvbXByZXNzIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGNvbXByZXNzb2JqZWN0KSwgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3Rvciljb21wcmVzc19kZWFsbG9jLCAgICAgICAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKLSAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgY29tcHJlc3NfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpY29tcHJlc3NfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgY29tcHJlc3NfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyljb21wcmVzc190cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljb21wcmVzc19uZXh0LCAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBjb21wcmVzc19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgY29tcHJlc3NfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgY29tcHJlc3NfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBjb21wcmVzc19uZXcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTM4MjIsOCArMzgyNCw3IEBACiAgICAgICAgICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShpdGVtKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpnb29kOwotICAgICAgICAgICAgZ29vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLCBOVUxMKTsKKyAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLCBpdGVtLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChnb29kID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zODQyLDkgKzM4NDMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbHRlcmZhbHNlX3JlZHVjZShmaWx0ZXJmYWxzZW9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCi0gICAgICAgIGx6LT5mdW5jLCBsei0+aXQpOwotICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCk7Cit9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBmaWx0ZXJmYWxzZV9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZmlsdGVyZmFsc2VfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLApAQCAtMzg2NCw3ICszODY0LDcgQEAKICAgICBzaXplb2YoZmlsdGVyZmFsc2VvYmplY3QpLCAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcilmaWx0ZXJmYWxzZV9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3RvcilmaWx0ZXJmYWxzZV9kZWFsbG9jLCAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMzg4Miw3ICszODgyLDcgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgZmlsdGVyZmFsc2VfZG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylmaWx0ZXJmYWxzZV90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpZmlsdGVyZmFsc2VfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC00MTM0LDE1ICs0MTM0LDE1IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAotICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIGNvdW50X2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpY291bnRfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYyljb3VudF90cmF2ZXJzZSwgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljb3VudF9uZXh0LCAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBjb3VudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjb3VudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTQzMDgsOSArNDMwOCw3IEBACiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAotLyogemlwbG9uZ2VzdCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCisvKiB6aXBsb25nZXN0IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC00MzQ5LDcgKzQzNDcsNyBAQAogICAgIGl0dHVwbGUgPSBQeVR1cGxlX05ldyh0dXBsZXNpemUpOwogICAgIGlmIChpdHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoaT0wOyBpIDwgdHVwbGVzaXplOyArK2kpIHsKKyAgICBmb3IgKGk9MDsgaSA8IHR1cGxlc2l6ZTsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKICAgICAgICAgUHlPYmplY3QgKml0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVtKTsKICAgICAgICAgaWYgKGl0ID09IE5VTEwpIHsKQEAgLTQ0OTAsNiArNDQ4OCw3IEBACiAgICAgICovCiAgICAgaW50IGk7CiAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdHR1cGxlKSk7CisKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmb3IgKGk9MDsgaTxQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdHR1cGxlKTsgaSsrKSB7CkBAIC00NTQwLDcgKzQ1MzksNyBAQAogICAgIHNpemVvZih6aXBsb25nZXN0b2JqZWN0KSwgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXppcF9sb25nZXN0X2RlYWxsb2MsICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKXppcF9sb25nZXN0X2RlYWxsb2MsICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC00NTU3LDggKzQ1NTYsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICB6aXBfbG9uZ2VzdF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpemlwX2xvbmdlc3RfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgemlwX2xvbmdlc3RfZG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl6aXBfbG9uZ2VzdF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTQ1NzQsNyArNDU3Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIHppcF9sb25nZXN0X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgemlwX2xvbmdlc3RfbmV3LCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWluLmMgYi9Nb2R1bGVzL21haW4uYwppbmRleCBlNGM5NTVlLi42OTg2ZDk0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21haW4uYworKysgYi9Nb2R1bGVzL21haW4uYwpAQCAtNDIsMTEgKzQyLDExIEBACiAjZGVmaW5lIFBST0dSQU1fT1BUUyBCQVNFX09QVFMKIAogLyogU2hvcnQgdXNhZ2UgbWVzc2FnZSAod2l0aCAlcyBmb3IgYXJndjApICovCi1zdGF0aWMgY2hhciAqdXNhZ2VfbGluZSA9CitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV9saW5lW10gPQogInVzYWdlOiAlbHMgW29wdGlvbl0gLi4uIFstYyBjbWQgfCAtbSBtb2QgfCBmaWxlIHwgLV0gW2FyZ10gLi4uXG4iOwogCiAvKiBMb25nIHVzYWdlIG1lc3NhZ2UsIHNwbGl0IGludG8gcGFydHMgPCA1MTIgYnl0ZXMgKi8KLXN0YXRpYyBjaGFyICp1c2FnZV8xID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzFbXSA9ICJcCiBPcHRpb25zIGFuZCBhcmd1bWVudHMgKGFuZCBjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyk6XG5cCiAtYiAgICAgOiBpc3N1ZSB3YXJuaW5ncyBhYm91dCBzdHIoYnl0ZXNfaW5zdGFuY2UpLCBzdHIoYnl0ZWFycmF5X2luc3RhbmNlKVxuXAogICAgICAgICAgYW5kIGNvbXBhcmluZyBieXRlcy9ieXRlYXJyYXkgd2l0aCBzdHIuICgtYmI6IGlzc3VlIGVycm9ycylcblwKQEAgLTU2LDcgKzU2LDcgQEAKIC1FICAgICA6IGlnbm9yZSBQWVRIT04qIGVudmlyb25tZW50IHZhcmlhYmxlcyAoc3VjaCBhcyBQWVRIT05QQVRIKVxuXAogLWggICAgIDogcHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQgKGFsc28gLS1oZWxwKVxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV8yID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzJbXSA9ICJcCiAtaSAgICAgOiBpbnNwZWN0IGludGVyYWN0aXZlbHkgYWZ0ZXIgcnVubmluZyBzY3JpcHQ7IGZvcmNlcyBhIHByb21wdCBldmVuXG5cCiAgICAgICAgICBpZiBzdGRpbiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB0ZXJtaW5hbDsgYWxzbyBQWVRIT05JTlNQRUNUPXhcblwKIC1JICAgICA6IGlzb2xhdGUgUHl0aG9uIGZyb20gdGhlIHVzZXIncyBlbnZpcm9ubWVudCAoaW1wbGllcyAtRSBhbmQgLXMpXG5cCkBAIC02Nyw3ICs2Nyw3IEBACiAtcyAgICAgOiBkb24ndCBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSB0byBzeXMucGF0aDsgYWxzbyBQWVRIT05OT1VTRVJTSVRFXG5cCiAtUyAgICAgOiBkb24ndCBpbXBseSAnaW1wb3J0IHNpdGUnIG9uIGluaXRpYWxpemF0aW9uXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzMgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfM1tdID0gIlwKIC11ICAgICA6IHVuYnVmZmVyZWQgYmluYXJ5IHN0ZG91dCBhbmQgc3RkZXJyLCBzdGRpbiBhbHdheXMgYnVmZmVyZWQ7XG5cCiAgICAgICAgICBhbHNvIFBZVEhPTlVOQlVGRkVSRUQ9eFxuXAogICAgICAgICAgc2VlIG1hbiBwYWdlIGZvciBkZXRhaWxzIG9uIGludGVybmFsIGJ1ZmZlcmluZyByZWxhdGluZyB0byAnLXUnXG5cCkBAIC03OSw3ICs3OSw3IEBACiAteCAgICAgOiBza2lwIGZpcnN0IGxpbmUgb2Ygc291cmNlLCBhbGxvd2luZyB1c2Ugb2Ygbm9uLVVuaXggZm9ybXMgb2YgIyFjbWRcblwKIC1YIG9wdCA6IHNldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBvcHRpb25cblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfNCA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV80W10gPSAiXAogZmlsZSAgIDogcHJvZ3JhbSByZWFkIGZyb20gc2NyaXB0IGZpbGVcblwKIC0gICAgICA6IHByb2dyYW0gcmVhZCBmcm9tIHN0ZGluIChkZWZhdWx0OyBpbnRlcmFjdGl2ZSBtb2RlIGlmIGEgdHR5KVxuXAogYXJnIC4uLjogYXJndW1lbnRzIHBhc3NlZCB0byBwcm9ncmFtIGluIHN5cy5hcmd2WzE6XVxuXG5cCkBAIC04OCwyMiArODgsMjMgQEAKIFBZVEhPTlBBVEggICA6ICclbGMnLXNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHByZWZpeGVkIHRvIHRoZVxuXAogICAgICAgICAgICAgICAgZGVmYXVsdCBtb2R1bGUgc2VhcmNoIHBhdGguICBUaGUgcmVzdWx0IGlzIHN5cy5wYXRoLlxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV81ID0KK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzVbXSA9CiAiUFlUSE9OSE9NRSAgIDogYWx0ZXJuYXRlIDxwcmVmaXg+IGRpcmVjdG9yeSAob3IgPHByZWZpeD4lbGM8ZXhlY19wcmVmaXg+KS5cbiIKICIgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBtb2R1bGUgc2VhcmNoIHBhdGggdXNlcyAlcy5cbiIKICJQWVRIT05DQVNFT0sgOiBpZ25vcmUgY2FzZSBpbiAnaW1wb3J0JyBzdGF0ZW1lbnRzIChXaW5kb3dzKS5cbiIKICJQWVRIT05JT0VOQ09ESU5HOiBFbmNvZGluZ1s6ZXJyb3JzXSB1c2VkIGZvciBzdGRpbi9zdGRvdXQvc3RkZXJyLlxuIgotIlBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuXG5cCi0iOwotc3RhdGljIGNoYXIgKnVzYWdlXzYgPSAiXAotUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkXG5cCi0gICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG5cCi0gICBzZXQgdG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYVxuXAotICAgcHJlZGljdGFibGUgc2VlZC5cblwKLSI7CisiUFlUSE9ORkFVTFRIQU5ETEVSOiBkdW1wIHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycy5cbiI7CitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV82W10gPQorIlBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgYSByYW5kb20gdmFsdWUgaXMgdXNlZFxuIgorIiAgIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmVcbiIKKyIgICBzZXQgdG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYVxuIgorIiAgIHByZWRpY3RhYmxlIHNlZWQuXG4iCisiUFlUSE9OTUFMTE9DOiBzZXQgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rc1xuIgorIiAgIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycy4gVXNlIFBZVEhPTk1BTExPQz1kZWJ1ZyB0byBpbnN0YWxsIGRlYnVnXG4iCisiICAgaG9va3MuXG4iOwogCiBzdGF0aWMgaW50Ci11c2FnZShpbnQgZXhpdGNvZGUsIHdjaGFyX3QqIHByb2dyYW0pCit1c2FnZShpbnQgZXhpdGNvZGUsIGNvbnN0IHdjaGFyX3QqIHByb2dyYW0pCiB7CiAgICAgRklMRSAqZiA9IGV4aXRjb2RlID8gc3RkZXJyIDogc3Rkb3V0OwogCkBAIC0zNDEsNiArMzQyLDcgQEAKICAgICBpbnQgaGVscCA9IDA7CiAgICAgaW50IHZlcnNpb24gPSAwOwogICAgIGludCBzYXdfdW5idWZmZXJlZF9mbGFnID0gMDsKKyAgICBjaGFyICpvcHQ7CiAgICAgUHlDb21waWxlckZsYWdzIGNmOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nX29wdGlvbiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKndhcm5pbmdfb3B0aW9ucyA9IE5VTEw7CkBAIC0zNjUsNiArMzY3LDEzIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQyIpOworICAgIGlmIChfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKG9wdCkgPCAwKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICJFcnJvciBpbiBQWVRIT05NQUxMT0M6IHVua25vd24gYWxsb2NhdG9yIFwiJXNcIiFcbiIsIG9wdCk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorCiAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMTsKICAgICBfUHlSYW5kb21fSW5pdCgpOwogCkBAIC00NzMsNyArNDgyLDggQEAKICAgICAgICAgICAgIHdhcm5pbmdfb3B0aW9uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihfUHlPU19vcHRhcmcsIC0xKTsKICAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWx1cmUgaW4gaGFuZGxpbmcgb2YgLVcgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQod2FybmluZ19vcHRpb25zLCB3YXJuaW5nX29wdGlvbik7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZCh3YXJuaW5nX29wdGlvbnMsIHdhcm5pbmdfb3B0aW9uKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7CiAgICAgICAgICAgICBQeV9ERUNSRUYod2FybmluZ19vcHRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTY1NCw3ICs2NjQsNyBAQAogICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUod2J1Zik7CiAKICAgICAgICAgICAgIC8qIERvbid0IGZyZWUgd2J1ZiwgdGhlIGFyZ3VtZW50IHRvIFB5X1NldFByb2dyYW1OYW1lCi0gICAgICAgICAgICAgKiBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgUHlfRmluYWxpemUgaXMgY2FsbGVkLgorICAgICAgICAgICAgICogbXVzdCByZW1haW4gdmFsaWQgdW50aWwgUHlfRmluYWxpemVFeCBpcyBjYWxsZWQuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwpAQCAtNjkzLDcgKzcwMyw4IEBACiAgICAgUHlTeXNfU2V0QXJndihhcmdjLV9QeU9TX29wdGluZCwgYXJnditfUHlPU19vcHRpbmQpOwogCiAgICAgaWYgKChQeV9JbnNwZWN0RmxhZyB8fCAoY29tbWFuZCA9PSBOVUxMICYmIGZpbGVuYW1lID09IE5VTEwgJiYgbW9kdWxlID09IE5VTEwpKSAmJgotICAgICAgICBpc2F0dHkoZmlsZW5vKHN0ZGluKSkpIHsKKyAgICAgICAgaXNhdHR5KGZpbGVubyhzdGRpbikpICYmCisgICAgICAgICFQeV9Jc29sYXRlZEZsYWcpIHsKICAgICAgICAgUHlPYmplY3QgKnY7CiAgICAgICAgIHYgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInJlYWRsaW5lIik7CiAgICAgICAgIGlmICh2ID09IE5VTEwpCkBAIC03ODUsNyArNzk2LDExIEBACiAgICAgICAgIHN0cyA9IFB5UnVuX0FueUZpbGVGbGFncyhzdGRpbiwgIjxzdGRpbj4iLCAmY2YpICE9IDA7CiAgICAgfQogCi0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICAvKiBWYWx1ZSB1bmxpa2VseSB0byBiZSBjb25mdXNlZCB3aXRoIGEgbm9uLWVycm9yIGV4aXQgc3RhdHVzIG9yCisgICAgICAgIG90aGVyIHNwZWNpYWwgbWVhbmluZyAqLworICAgICAgICBzdHMgPSAxMjA7CisgICAgfQogCiAjaWZkZWYgX19JTlNVUkVfXwogICAgIC8qIEluc3VyZSsrIGlzIGEgbWVtb3J5IGFuYWx5c2lzIHRvb2wgdGhhdCBhaWRzIGluIGRpc2NvdmVyaW5nCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IGI5NDViZDYuLjk1ZWE0ZjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC04NzUsNyArODc1LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1hdGhfMihQeU9iamVjdCAqYXJncywgZG91YmxlICgqZnVuYykgKGRvdWJsZSwgZG91YmxlKSwgY2hhciAqZnVuY25hbWUpCittYXRoXzIoUHlPYmplY3QgKmFyZ3MsIGRvdWJsZSAoKmZ1bmMpIChkb3VibGUsIGRvdWJsZSksIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQogewogICAgIFB5T2JqZWN0ICpveCwgKm95OwogICAgIGRvdWJsZSB4LCB5LCByOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAKICAgIGluIHRoYXQgaW50IGlzIGxhcmdlciB0aGFuIFBZX1NTSVpFX1RfTUFYLiAqLwogCiBzdGF0aWMgUHlPYmplY3QqCi1sb2doZWxwZXIoUHlPYmplY3QqIGFyZywgZG91YmxlICgqZnVuYykoZG91YmxlKSwgY2hhciAqZnVuY25hbWUpCitsb2doZWxwZXIoUHlPYmplY3QqIGFyZywgZG91YmxlICgqZnVuYykoZG91YmxlKSwgY29uc3QgY2hhciAqZnVuY25hbWUpCiB7CiAgICAgLyogSWYgaXQgaXMgaW50LCBkbyBpdCBvdXJzZWx2ZXMuICovCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CkBAIC0yMTQ0LDYgKzIxNDQsNyBAQAogCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGF1IiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfVEFVKSk7ICAvKiAycGkgKi8KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CiAjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tZDVtb2R1bGUuYyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKaW5kZXggZjk0YWNjNy4uMDRiYzA2ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tZDVtb2R1bGUuYworKysgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IE1ENV9JTlQzMjsgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgUFlfTE9OR19MT05HIE1ENV9JTlQ2NDsgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgbG9uZyBsb25nIE1ENV9JTlQ2NDsgLyogNjQtYml0IGludGVnZXIgKi8KICNlbHNlCiAvKiBub3QgZGVmaW5lZC4gY29tcGlsYXRpb24gd2lsbCBkaWUuICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvbW1hcG1vZHVsZS5jIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKaW5kZXggNGViOTI3NC4uNWYxNjE1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKQEAgLTkzLDcgKzkzLDcgQEAKICAgICBQeV9zc2l6ZV90ICBzaXplOwogICAgIFB5X3NzaXplX3QgIHBvczsgICAgLyogcmVsYXRpdmUgdG8gb2Zmc2V0ICovCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFBZX0xPTkdfTE9ORyBvZmZzZXQ7CisgICAgbG9uZyBsb25nIG9mZnNldDsKICNlbHNlCiAgICAgb2ZmX3QgICAgICAgb2Zmc2V0OwogI2VuZGlmCkBAIC0zOTcsOCArMzk3LDcgQEAKICAgICBtZW1jcHkoJnNlbGYtPmRhdGFbc2VsZi0+cG9zXSwgZGF0YS5idWYsIGRhdGEubGVuKTsKICAgICBzZWxmLT5wb3MgKz0gZGF0YS5sZW47CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoZGF0YS5sZW4pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDM0LDcgKzQzMyw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChzZWxmLT5maWxlX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBEV09SRCBsb3csaGlnaDsKLSAgICAgICAgUFlfTE9OR19MT05HIHNpemU7CisgICAgICAgIGxvbmcgbG9uZyBzaXplOwogICAgICAgICBsb3cgPSBHZXRGaWxlU2l6ZShzZWxmLT5maWxlX2hhbmRsZSwgJmhpZ2gpOwogICAgICAgICBpZiAobG93ID09IElOVkFMSURfRklMRV9TSVpFKSB7CiAgICAgICAgICAgICAvKiBJdCBtaWdodCBiZSB0aGF0IHRoZSBmdW5jdGlvbiBhcHBlYXJzIHRvIGhhdmUgZmFpbGVkLApAQCAtNDQ1LDcgKzQ0NCw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKCFoaWdoICYmIGxvdyA8IExPTkdfTUFYKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylsb3cpOwotICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKWhpZ2gpPDwzMikgKyBsb3c7CisgICAgICAgIHNpemUgPSAoKChsb25nIGxvbmcpaGlnaCk8PDMyKSArIGxvdzsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoc2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5zaXplKTsKQEAgLTEyMjcsNyArMTIyNiw3IEBACiAKIC8qIEEgbm90ZSBvbiBzaXplcyBhbmQgb2Zmc2V0czogd2hpbGUgdGhlIGFjdHVhbCBtYXAgc2l6ZSBtdXN0IGhvbGQgaW4gYQogICAgUHlfc3NpemVfdCwgYm90aCB0aGUgdG90YWwgZmlsZSBzaXplIGFuZCB0aGUgc3RhcnQgb2Zmc2V0IGNhbiBiZSBsb25nZXIKLSAgIHRoYW4gYSBQeV9zc2l6ZV90LCBzbyB3ZSB1c2UgUFlfTE9OR19MT05HIHdoaWNoIGlzIGFsd2F5cyA2NC1iaXQuCisgICB0aGFuIGEgUHlfc3NpemVfdCwgc28gd2UgdXNlIGxvbmcgbG9uZyB3aGljaCBpcyBhbHdheXMgNjQtYml0LgogKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyMzUsNyArMTIzNCw3IEBACiB7CiAgICAgbW1hcF9vYmplY3QgKm1fb2JqOwogICAgIFB5X3NzaXplX3QgbWFwX3NpemU7Ci0gICAgUFlfTE9OR19MT05HIG9mZnNldCA9IDAsIHNpemU7CisgICAgbG9uZyBsb25nIG9mZnNldCA9IDAsIHNpemU7CiAgICAgRFdPUkQgb2ZmX2hpOyAgICAgICAvKiB1cHBlciAzMiBiaXRzIG9mIG9mZnNldCAqLwogICAgIERXT1JEIG9mZl9sbzsgICAgICAgLyogbG93ZXIgMzIgYml0cyBvZiBvZmZzZXQgKi8KICAgICBEV09SRCBzaXplX2hpOyAgICAgIC8qIHVwcGVyIDMyIGJpdHMgb2Ygc2l6ZSAqLwpAQCAtMTI5NiwxMCArMTI5NSw2IEBACiAgICAgICovCiAgICAgaWYgKGZpbGVubyAhPSAtMSAmJiBmaWxlbm8gIT0gMCkgewogICAgICAgICAvKiBFbnN1cmUgdGhhdCBmaWxlbm8gaXMgd2l0aGluIHRoZSBDUlQncyB2YWxpZCByYW5nZSAqLwotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmaWxlbm8pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgICAgIGZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8pOwogICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTM0OSw3ICsxMzQ0LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZHdFcnIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKSBoaWdoKSA8PCAzMikgKyBsb3c7CisgICAgICAgICAgICBzaXplID0gKCgobG9uZyBsb25nKSBoaWdoKSA8PCAzMikgKyBsb3c7CiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgbW1hcCBhbiBlbXB0eSBmaWxlIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL25pc21vZHVsZS5jIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwppbmRleCA2NGViNWRiLi5iNmE4NTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL25pc21vZHVsZS5jCisrKyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKQEAgLTc2LDExICs3Niw3IEBACiAKICAgICAqcGZpeCA9IDA7CiAgICAgZm9yIChpPTA7IGFsaWFzZXNbaV0uYWxpYXMgIT0gMEw7IGkrKykgewotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5hbGlhcywgbWFwKSkgewotICAgICAgICAgICAgKnBmaXggPSBhbGlhc2VzW2ldLmZpeDsKLSAgICAgICAgICAgIHJldHVybiBhbGlhc2VzW2ldLm1hcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKKyAgICAgICAgaWYgKCFzdHJjbXAgKGFsaWFzZXNbaV0uYWxpYXMsIG1hcCkgfHwgIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKICAgICAgICAgICAgICpwZml4ID0gYWxpYXNlc1tpXS5maXg7CiAgICAgICAgICAgICByZXR1cm4gYWxpYXNlc1tpXS5tYXA7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwppbmRleCBkMmZkNWM4Li40Nzk2MjAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKKysrIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCkBAIC0zMSw5ICszMSwxMyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGxpbnV4L3NvdW5kY2FyZC5oPgorI2Vsc2UKICNpbmNsdWRlIDxzeXMvc291bmRjYXJkLmg+CisjZW5kaWYKIAotI2lmIGRlZmluZWQobGludXgpCisjaWZkZWYgX19saW51eF9fCiAKICNpZm5kZWYgSEFWRV9TVERJTlRfSAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnQzMl90OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vdmVybGFwcGVkLmMgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwppbmRleCBmODVlNWJjLi4wYWE4NjU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL292ZXJsYXBwZWQuYworKysgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwpAQCAtOTczLDI4ICs5NzMsMjggQEAKIHN0YXRpYyBpbnQKIHBhcnNlX2FkZHJlc3MoUHlPYmplY3QgKm9iaiwgU09DS0FERFIgKkFkZHJlc3MsIGludCBMZW5ndGgpCiB7Ci0gICAgY2hhciAqSG9zdDsKKyAgICBQeV9VTklDT0RFICpIb3N0OwogICAgIHVuc2lnbmVkIHNob3J0IFBvcnQ7CiAgICAgdW5zaWduZWQgbG9uZyBGbG93SW5mbzsKICAgICB1bnNpZ25lZCBsb25nIFNjb3BlSWQ7CiAKICAgICBtZW1zZXQoQWRkcmVzcywgMCwgTGVuZ3RoKTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKG9iaiwgInNIIiwgJkhvc3QsICZQb3J0KSkKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SCIsICZIb3N0LCAmUG9ydCkpCiAgICAgewogICAgICAgICBBZGRyZXNzLT5zYV9mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVULCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKFdTQVN0cmluZ1RvQWRkcmVzc1coSG9zdCwgQUZfSU5FVCwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBTZXRGcm9tV2luZG93c0VycihXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgKChTT0NLQUREUl9JTiopQWRkcmVzcyktPnNpbl9wb3J0ID0gaHRvbnMoUG9ydCk7CiAgICAgICAgIHJldHVybiBMZW5ndGg7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5QXJnX1BhcnNlVHVwbGUob2JqLCAic0hrayIsICZIb3N0LCAmUG9ydCwgJkZsb3dJbmZvLCAmU2NvcGVJZCkpCisgICAgZWxzZSBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SGtrIiwgJkhvc3QsICZQb3J0LCAmRmxvd0luZm8sICZTY29wZUlkKSkKICAgICB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIEFkZHJlc3MtPnNhX2ZhbWlseSA9IEFGX0lORVQ2OwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVUNiwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChXU0FTdHJpbmdUb0FkZHJlc3NXKEhvc3QsIEFGX0lORVQ2LCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIFNldEZyb21XaW5kb3dzRXJyKFdTQUdldExhc3RFcnJvcigpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggNjQ3MWI4ZS4uODI3NzBhNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC01Myw3ICs1Myw3IEBACiAvKiAgU3RyaW5nIGNvbnN0YW50cyB1c2VkIHRvIGluaXRpYWxpemUgbW9kdWxlIGF0dHJpYnV0ZXMuCiAgKgogICovCi1zdGF0aWMgY2hhciBwYXJzZXJfY29weXJpZ2h0X3N0cmluZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHBhcnNlcl9jb3B5cmlnaHRfc3RyaW5nW10gPQogIkNvcHlyaWdodCAxOTk1LTE5OTYgYnkgVmlyZ2luaWEgUG9seXRlY2huaWMgSW5zdGl0dXRlICYgU3RhdGVcblwKIFVuaXZlcnNpdHksIEJsYWNrc2J1cmcsIFZpcmdpbmlhLCBVU0EsIGFuZCBGcmVkIEwuIERyYWtlLCBKci4sIFJlc3RvbixcblwKIFZpcmdpbmlhLCBVU0EuICBQb3J0aW9ucyBjb3B5cmlnaHQgMTk5MS0xOTk1IGJ5IFN0aWNodGluZyBNYXRoZW1hdGlzY2hcblwKQEAgLTYzLDcgKzYzLDcgQEAKIFB5RG9jX1NUUlZBUihwYXJzZXJfZG9jX3N0cmluZywKICJUaGlzIGlzIGFuIGludGVyZmFjZSB0byBQeXRob24ncyBpbnRlcm5hbCBwYXJzZXIuIik7CiAKLXN0YXRpYyBjaGFyIHBhcnNlcl92ZXJzaW9uX3N0cmluZ1tdID0gIjAuNSI7CitzdGF0aWMgY29uc3QgY2hhciBwYXJzZXJfdmVyc2lvbl9zdHJpbmdbXSA9ICIwLjUiOwogCiAKIHR5cGVkZWYgUHlPYmplY3QqICgqU2VxTWFrZXIpIChQeV9zc2l6ZV90IGxlbmd0aCk7CkBAIC01NzgsMTMgKzU3OCwxMyBAQAogfQogCiAKLS8qICBlcnJfc3RyaW5nKGNoYXIqIG1lc3NhZ2UpCisvKiAgZXJyX3N0cmluZyhjb25zdCBjaGFyKiBtZXNzYWdlKQogICoKICAqICBTZXRzIHRoZSBlcnJvciBzdHJpbmcgZm9yIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIFBhcnNlckVycm9yLgogICoKICAqLwogc3RhdGljIHZvaWQKLWVycl9zdHJpbmcoY2hhciAqbWVzc2FnZSkKK2Vycl9zdHJpbmcoY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKICAgICBQeUVycl9TZXRTdHJpbmcocGFyc2VyX2Vycm9yLCBtZXNzYWdlKTsKIH0KQEAgLTU5Nyw3ICs1OTcsNyBAQAogICoKICAqLwogc3RhdGljIFB5T2JqZWN0KgotcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQorcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNvbnN0IGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQogewogICAgIGNoYXIqICAgICBzdHJpbmcgPSAwOwogICAgIFB5T2JqZWN0KiByZXMgICAgPSAwOwpAQCAtNjcwLDkgKzY3MCw3NSBAQAogCiAKIHN0YXRpYyBub2RlKiBidWlsZF9ub2RlX3RyZWUoUHlPYmplY3QgKnR1cGxlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9leHByX3RyZWUobm9kZSAqdHJlZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZmlsZV9pbnB1dChub2RlICp0cmVlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9lbmNvZGluZ19kZWNsKG5vZGUgKnRyZWUpOworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9ub2RlKG5vZGUgKnRyZWUpCit7CisgICAgaW50IHR5cGUgPSBUWVBFKHRyZWUpOworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgZGZhICpudF9kZmE7CisgICAgc3RhdGUgKmRmYV9zdGF0ZTsKKyAgICBpbnQgcG9zLCBhcmM7CisKKyAgICBhc3NlcnQoSVNOT05URVJNSU5BTCh0eXBlKSk7CisgICAgdHlwZSAtPSBOVF9PRkZTRVQ7CisgICAgaWYgKHR5cGUgPj0gX1B5UGFyc2VyX0dyYW1tYXIuZ19uZGZhcykgeworICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiVW5yZWNvZ25pemVkIG5vZGUgdHlwZSAlZC4iLCBUWVBFKHRyZWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG50X2RmYSA9ICZfUHlQYXJzZXJfR3JhbW1hci5nX2RmYVt0eXBlXTsKKyAgICBSRVEodHJlZSwgbnRfZGZhLT5kX3R5cGUpOworCisgICAgLyogUnVuIHRoZSBERkEgZm9yIHRoaXMgbm9udGVybWluYWwuICovCisgICAgZGZhX3N0YXRlID0gJm50X2RmYS0+ZF9zdGF0ZVtudF9kZmEtPmRfaW5pdGlhbF07CisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBuY2g7ICsrcG9zKSB7CisgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQodHJlZSwgcG9zKTsKKyAgICAgICAgaW50IGNoX3R5cGUgPSBUWVBFKGNoKTsKKyAgICAgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgICAgICBzaG9ydCBhX2xhYmVsID0gZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsOworICAgICAgICAgICAgYXNzZXJ0KGFfbGFiZWwgPCBfUHlQYXJzZXJfR3JhbW1hci5nX2xsLmxsX25sYWJlbHMpOworICAgICAgICAgICAgaWYgKF9QeVBhcnNlcl9HcmFtbWFyLmdfbGwubGxfbGFiZWxbYV9sYWJlbF0ubGJfdHlwZSA9PSBjaF90eXBlKSB7CisgICAgIAkgICAgICAgIC8qIFRoZSBjaGlsZCBpcyBhY2NlcHRhYmxlOyBpZiBub24tdGVybWluYWwsIHZhbGlkYXRlIGl0IHJlY3Vyc2l2ZWx5LiAqLworICAgICAgICAgICAgICAgIGlmIChJU05PTlRFUk1JTkFMKGNoX3R5cGUpICYmICF2YWxpZGF0ZV9ub2RlKGNoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIHN0YXRlLCBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBjaGlsZC4gKi8KKyAgICAgICAgICAgICAgICBkZmFfc3RhdGUgPSAmbnRfZGZhLT5kX3N0YXRlW2RmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2Fycm93XTsKKyAgICAgICAgICAgICAgICBnb3RvIGFyY19mb3VuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBXaGF0IHdvdWxkIHRoaXMgc3RhdGUgaGF2ZSBhY2NlcHRlZD8gKi8KKyAgICAgICAgeworICAgICAgICAgICAgc2hvcnQgYV9sYWJlbCA9IGRmYV9zdGF0ZS0+c19hcmMtPmFfbGJsOworICAgICAgICAgICAgaW50IG5leHRfdHlwZTsKKyAgICAgICAgICAgIGlmICghYV9sYWJlbCkgLyogV291bGRuJ3QgYWNjZXB0IGFueSBtb3JlIGNoaWxkcmVuICovCisgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX251bV9jaGlsZHJlbjsKKworICAgICAgICAgICAgbmV4dF90eXBlID0gX1B5UGFyc2VyX0dyYW1tYXIuZ19sbC5sbF9sYWJlbFthX2xhYmVsXS5sYl90eXBlOworICAgICAgICAgICAgaWYgKElTTk9OVEVSTUlOQUwobmV4dF90eXBlKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiRXhwZWN0ZWQgbm9kZSB0eXBlICVkLCBnb3QgJWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90eXBlLCBjaF90eXBlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiSWxsZWdhbCB0ZXJtaW5hbDogZXhwZWN0ZWQgJXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5UGFyc2VyX1Rva2VuTmFtZXNbbmV4dF90eXBlXSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCithcmNfZm91bmQ6CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAvKiBBcmUgd2UgaW4gYSBmaW5hbCBzdGF0ZT8gSWYgc28sIHJldHVybiAxIGZvciBzdWNjZXNzZnVsIHZhbGlkYXRpb24uICovCisgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgIGlmICghZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworaWxsZWdhbF9udW1fY2hpbGRyZW46CisgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKKyAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciAlcyBub2RlLiIsIG50X2RmYS0+ZF9uYW1lKTsKKyAgICByZXR1cm4gMDsKK30KIAogLyogIFB5T2JqZWN0KiBwYXJzZXJfdHVwbGUyc3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogICoKQEAgLTY4MSw3ICs3NDcsNyBAQAogICogIHR1cGxlIGNhbiBiZSB2YWxpZGF0ZWQuICBJdCBkb2VzIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGZpcnN0IGNvZGUgb2YgdGhlCiAgKiAgdHVwbGUsIGFuZCwgaWYgYWNjZXB0YWJsZSwgYnVpbGRzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gIElmIHRoaXMKICAqICBzdGVwIHN1Y2NlZWRzLCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gaXMgdmFsaWRhdGVkIGFzIGZ1bGx5IGFzCi0gKiAgcG9zc2libGUgd2l0aCB0aGUgdmFyaW91cyB2YWxpZGF0ZV8qKCkgcm91dGluZXMgZGVmaW5lZCBiZWxvdy4KKyAqICBwb3NzaWJsZSB3aXRoIHRoZSByZWN1cnNpdmUgdmFsaWRhdGVfbm9kZSgpIHJvdXRpbmUgZGVmaW5lZCBhYm92ZS4KICAqCiAgKiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNoYW5nZWQgaWYgc3VwcG9ydCBpcyB0byBiZSBhZGRlZCBmb3IgUHlTVF9GUkFHTUVOVAogICogIFNUIG9iamVjdHMuCkBAIC03MTAsMzMgKzc3NiwzNSBAQAogICAgICAqLwogICAgIHRyZWUgPSBidWlsZF9ub2RlX3RyZWUodHVwbGUpOwogICAgIGlmICh0cmVlICE9IDApIHsKLSAgICAgICAgaW50IHN0YXJ0X3N5bSA9IFRZUEUodHJlZSk7Ci0gICAgICAgIGlmIChzdGFydF9zeW0gPT0gZXZhbF9pbnB1dCkgeworICAgICAgICBub2RlICp2YWxpZGF0aW9uX3Jvb3QgPSB0cmVlOworICAgICAgICBpbnQgdHJlZV90eXBlID0gMDsKKyAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7CisgICAgICAgIGNhc2UgZXZhbF9pbnB1dDoKICAgICAgICAgICAgIC8qICBNaWdodCBiZSBhbiBldmFsIGZvcm0uICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2V4cHJfdHJlZSh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX0VYUFIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0X3N5bSA9PSBmaWxlX2lucHV0KSB7Ci0gICAgICAgICAgICAvKiAgVGhpcyBsb29rcyBsaWtlIGFuIGV4ZWMgZm9ybSBzbyBmYXIuICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2ZpbGVfaW5wdXQodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9TVUlURSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3RhcnRfc3ltID09IGVuY29kaW5nX2RlY2wpIHsKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfRVhQUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGVuY29kaW5nX2RlY2w6CiAgICAgICAgICAgICAvKiBUaGlzIGxvb2tzIGxpa2UgYW4gZW5jb2RpbmdfZGVjbCBzbyBmYXIuICovCi0gICAgICAgICAgICBpZiAodmFsaWRhdGVfZW5jb2RpbmdfZGVjbCh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX1NVSVRFKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChOQ0godHJlZSkgIT0gMSkKKyAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcm9vdCA9IENISUxEKHRyZWUsIDApOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovCisgICAgICAgIGNhc2UgZmlsZV9pbnB1dDoKKyAgICAgICAgICAgIC8qICBUaGlzIGxvb2tzIGxpa2UgYW4gZXhlYyBmb3JtIHNvIGZhci4gICovCisKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfU1VJVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8qICBUaGlzIGlzIGEgZnJhZ21lbnQsIGF0IGJlc3QuICovCiAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKICAgICAgICAgICAgIGVycl9zdHJpbmcoInBhcnNlIHRyZWUgZG9lcyBub3QgdXNlIGEgdmFsaWQgc3RhcnQgc3ltYm9sIik7CisgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKHZhbGlkYXRlX25vZGUodmFsaWRhdGlvbl9yb290KSkKKyAgICAgICAgICAgIHN0ID0gcGFyc2VyX25ld3N0b2JqZWN0KHRyZWUsIHRyZWVfdHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwogICAgIH0KICAgICAvKiAgTWFrZSBzdXJlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBhbGwgZXJyb3JzLiAgV2Ugc2hvdWxkIG5ldmVyCiAgICAgICogIGdldCB0aGlzLCBidXQgd2UnZCBkbyB3ZWxsIHRvIGJlIHN1cmUgc29tZXRoaW5nIGlzIGRvbmUuCkBAIC05ODEsMjQzMyArMTA0OSw2IEBACiB9CiAKIAotLyoKLSAqICBWYWxpZGF0aW9uIHJvdXRpbmVzIHVzZWQgd2l0aGluIHRoZSB2YWxpZGF0aW9uIHNlY3Rpb246Ci0gKi8KLXN0YXRpYyBpbnQgdmFsaWRhdGVfdGVybWluYWwobm9kZSAqdGVybWluYWwsIGludCB0eXBlLCBjaGFyICpzdHJpbmcpOwotCi0jZGVmaW5lIHZhbGlkYXRlX2FtcGVyc2FuZChjaCkgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIEFNUEVSLCAiJiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NpcmN1bWZsZXgoY2gpIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCBDSVJDVU1GTEVYLCAiXiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NvbG9uKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIENPTE9OLCAiOiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NvbW1hKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIENPTU1BLCAiLCIpCi0jZGVmaW5lIHZhbGlkYXRlX2RlZGVudChjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgREVERU5ULCAiIikKLSNkZWZpbmUgdmFsaWRhdGVfZXF1YWwoY2gpICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgRVFVQUwsICI9IikKLSNkZWZpbmUgdmFsaWRhdGVfaW5kZW50KGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICBJTkRFTlQsIChjaGFyKilOVUxMKQotI2RlZmluZSB2YWxpZGF0ZV9scGFyZW4oY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgTFBBUiwgIigiKQotI2RlZmluZSB2YWxpZGF0ZV9uZXdsaW5lKGNoKSAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgTkVXTElORSwgKGNoYXIqKU5VTEwpCi0jZGVmaW5lIHZhbGlkYXRlX3JwYXJlbihjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBSUEFSLCAiKSIpCi0jZGVmaW5lIHZhbGlkYXRlX3NlbWkoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBTRU1JLCAiOyIpCi0jZGVmaW5lIHZhbGlkYXRlX3N0YXIoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBTVEFSLCAiKiIpCi0jZGVmaW5lIHZhbGlkYXRlX3ZiYXIoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBWQkFSLCAifCIpCi0jZGVmaW5lIHZhbGlkYXRlX2RvdWJsZXN0YXIoY2gpIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCBET1VCTEVTVEFSLCAiKioiKQotI2RlZmluZSB2YWxpZGF0ZV9kb3QoY2gpICAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgIERPVCwgIi4iKQotI2RlZmluZSB2YWxpZGF0ZV9hdChjaCkgICAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgICBBVCwgIkAiKQotI2RlZmluZSB2YWxpZGF0ZV9yYXJyb3coY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgIFJBUlJPVywgIi0+IikKLSNkZWZpbmUgdmFsaWRhdGVfbmFtZShjaCwgc3RyKSAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIE5BTUUsIHN0cikKLQotI2RlZmluZSBWQUxJREFURVIobikgICAgc3RhdGljIGludCB2YWxpZGF0ZV8jI24obm9kZSAqdHJlZSkKLQotVkFMSURBVEVSKG5vZGUpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoc21hbGxfc3RtdCk7Ci1WQUxJREFURVIoY2xhc3MpOyAgICAgICAgICAgICAgIFZBTElEQVRFUihub2RlKTsKLVZBTElEQVRFUihwYXJhbWV0ZXJzKTsgICAgICAgICAgVkFMSURBVEVSKHN1aXRlKTsKLVZBTElEQVRFUih0ZXN0bGlzdCk7ICAgICAgICAgICAgVkFMSURBVEVSKHZhcmFyZ3NsaXN0KTsKLVZBTElEQVRFUih2ZnBkZWYpOwotVkFMSURBVEVSKHN0bXQpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoc2ltcGxlX3N0bXQpOwotVkFMSURBVEVSKGV4cHJfc3RtdCk7ICAgICAgICAgICBWQUxJREFURVIocG93ZXIpOwotVkFMSURBVEVSKGRlbF9zdG10KTsKLVZBTElEQVRFUihyZXR1cm5fc3RtdCk7ICAgICAgICAgVkFMSURBVEVSKHJhaXNlX3N0bXQpOwotVkFMSURBVEVSKGltcG9ydF9zdG10KTsgICAgICAgICBWQUxJREFURVIoaW1wb3J0X3N0bXQpOwotVkFMSURBVEVSKGltcG9ydF9uYW1lKTsgICAgICAgICBWQUxJREFURVIoeWllbGRfc3RtdCk7Ci1WQUxJREFURVIoZ2xvYmFsX3N0bXQpOyAgICAgICAgIFZBTElEQVRFUihub25sb2NhbF9zdG10KTsKLVZBTElEQVRFUihhc3NlcnRfc3RtdCk7Ci1WQUxJREFURVIoY29tcG91bmRfc3RtdCk7ICAgICAgIFZBTElEQVRFUih0ZXN0X29yX3N0YXJfZXhwcik7Ci1WQUxJREFURVIod2hpbGUpOyAgICAgICAgICAgICAgIFZBTElEQVRFUihmb3IpOwotVkFMSURBVEVSKHRyeSk7ICAgICAgICAgICAgICAgICBWQUxJREFURVIoZXhjZXB0X2NsYXVzZSk7Ci1WQUxJREFURVIodGVzdCk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihhbmRfdGVzdCk7Ci1WQUxJREFURVIobm90X3Rlc3QpOyAgICAgICAgICAgIFZBTElEQVRFUihjb21wYXJpc29uKTsKLVZBTElEQVRFUihjb21wX29wKTsKLVZBTElEQVRFUihzdGFyX2V4cHIpOyAgICAgICAgICAgVkFMSURBVEVSKGV4cHIpOwotVkFMSURBVEVSKHhvcl9leHByKTsgICAgICAgICAgICBWQUxJREFURVIoYW5kX2V4cHIpOwotVkFMSURBVEVSKHNoaWZ0X2V4cHIpOyAgICAgICAgICBWQUxJREFURVIoYXJpdGhfZXhwcik7Ci1WQUxJREFURVIodGVybSk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihmYWN0b3IpOwotVkFMSURBVEVSKGF0b20pOyAgICAgICAgICAgICAgICBWQUxJREFURVIobGFtYmRlZik7Ci1WQUxJREFURVIodHJhaWxlcik7ICAgICAgICAgICAgIFZBTElEQVRFUihzdWJzY3JpcHQpOwotVkFMSURBVEVSKHN1YnNjcmlwdGxpc3QpOyAgICAgICBWQUxJREFURVIoc2xpY2VvcCk7Ci1WQUxJREFURVIoZXhwcmxpc3QpOyAgICAgICAgICAgIFZBTElEQVRFUihkaWN0b3JzZXRtYWtlcik7Ci1WQUxJREFURVIoYXJnbGlzdCk7ICAgICAgICAgICAgIFZBTElEQVRFUihhcmd1bWVudCk7Ci1WQUxJREFURVIoY29tcF9mb3IpOwotVkFMSURBVEVSKGNvbXBfaXRlcik7ICAgICAgICAgICBWQUxJREFURVIoY29tcF9pZik7Ci1WQUxJREFURVIodGVzdGxpc3RfY29tcCk7ICAgICAgIFZBTElEQVRFUih5aWVsZF9leHByKTsKLVZBTElEQVRFUihvcl90ZXN0KTsKLVZBTElEQVRFUih0ZXN0X25vY29uZCk7ICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWZfbm9jb25kKTsKLVZBTElEQVRFUih5aWVsZF9hcmcpOwotVkFMSURBVEVSKGFzeW5jX2Z1bmNkZWYpOyAgICAgICBWQUxJREFURVIoYXN5bmNfc3RtdCk7Ci1WQUxJREFURVIoYXRvbV9leHByKTsKLQotI3VuZGVmIFZBTElEQVRFUgotCi0jZGVmaW5lIGlzX2V2ZW4obikgICAgICAoKChuKSAmIDEpID09IDApCi0jZGVmaW5lIGlzX29kZChuKSAgICAgICAoKChuKSAmIDEpID09IDEpCi0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbnR5cGUobm9kZSAqbiwgaW50IHQpCi17Ci0gICAgaWYgKFRZUEUobikgIT0gdCkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiRXhwZWN0ZWQgbm9kZSB0eXBlICVkLCBnb3QgJWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIHQsIFRZUEUobikpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLQotLyogIFZlcmlmaWVzIHRoYXQgdGhlIG51bWJlciBvZiBjaGlsZCBub2RlcyBpcyBleGFjdGx5ICdudW0nLCByYWlzaW5nCi0gKiAgYW4gZXhjZXB0aW9uIGlmIGl0IGlzbid0LiAgVGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGRvZXMgbm90IGluZGljYXRlCi0gKiAgdGhlIGV4YWN0IG51bWJlciBvZiBub2RlcywgYWxsb3dpbmcgdGhpcyB0byBiZSB1c2VkIHRvIHJhaXNlIHRoZQotICogICJyaWdodCIgZXhjZXB0aW9uIHdoZW4gdGhlIHdyb25nIG51bWJlciBvZiBub2RlcyBpcyBwcmVzZW50IGluIGEKLSAqICBzcGVjaWZpYyB2YXJpYW50IG9mIGEgc3RhdGVtZW50J3Mgc3ludGF4LiAgVGhpcyBpcyBjb21tb25seSB1c2VkCi0gKiAgaW4gdGhhdCBmYXNoaW9uLgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9udW1ub2Rlcyhub2RlICpuLCBpbnQgbnVtLCBjb25zdCBjaGFyICpjb25zdCBuYW1lKQotewotICAgIGlmIChOQ0gobikgIT0gbnVtKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yICVzIG5vZGUuIiwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXJtaW5hbChub2RlICp0ZXJtaW5hbCwgaW50IHR5cGUsIGNoYXIgKnN0cmluZykKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRlcm1pbmFsLCB0eXBlKQotICAgICAgICAgICAgICAgJiYgKChzdHJpbmcgPT0gMCkgfHwgKHN0cmNtcChzdHJpbmcsIFNUUih0ZXJtaW5hbCkpID09IDApKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgdGVybWluYWw6IGV4cGVjdGVkIFwiJXNcIiIsIHN0cmluZyk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotLyogIFggKCcsJyBYKSBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUobm9kZSAqdHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0X25vZGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKShub2RlICosIGludCAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoIDsgcmVzICYmICpwb3MgPCBuY2g7ICkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuY19pbmModHJlZSwgcG9zKTsKLSAgICAgICAgICAgIGlmICghcmVzIHx8ICpwb3MgPj0gbmNoKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgKCpwb3MpKyspKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgWCAoJywnIFgpIFsnLCddICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdChub2RlICp0cmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuYykobm9kZSAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3Rfbm9kZV90eXBlX25hbWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOwotICAgIGludCBwb3MgPSAwOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgbGlzdF9ub2RlX3R5cGVfbmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb3IgKCA7IHJlcyAmJiBwb3MgPCBuY2g7ICkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuYyhDSElMRCh0cmVlLCBwb3MrKykpOwotICAgICAgICAgICAgaWYgKCFyZXMgfHwgcG9zID49IG5jaCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIHBvcysrKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiAgdmFsaWRhdGVfY2xhc3MoKQotICoKLSAqICBjbGFzc2RlZjoKLSAqICAgICAgJ2NsYXNzJyBOQU1FIFsnKCcgdGVzdGxpc3QgJyknXSAnOicgc3VpdGUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY2xhc3Mobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgY2xhc3NkZWYpICYmCi0gICAgICAgICAgICAgICAgKChuY2ggPT0gNCkgfHwgKG5jaCA9PSA2KSB8fCAobmNoID09IDcpKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiY2xhc3MiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImNsYXNzIik7Ci0gICAgfQotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDcpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAoKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCAyKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2FyZ2xpc3QoQ0hJTEQodHJlZSwgMykpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgNCkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDYpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsMikpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwzKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgaWZfc3RtdDoKLSAqICAgICAgJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2lmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGlmX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaWYiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIGlmIChyZXMgJiYgKChuY2ggJSA0KSA9PSAzKSkgewotICAgICAgICAvKiAgLi4uICdlbHNlJyAnOicgc3VpdGUgICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIG5jaCAtIDMpLCAiZWxzZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgICAgIG5jaCAtPSAzOwotICAgIH0KLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImlmIik7Ci0gICAgaWYgKChuY2ggJSA0KSAhPSAwKQotICAgICAgICAvKiBXaWxsIGNhdGNoIHRoZSBjYXNlIGZvciBuY2ggPCA0ICovCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDAsICJpZiIpOwotICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID4gNCkpIHsKLSAgICAgICAgLyogIC4uLiAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSsgLi4uICAqLwotICAgICAgICBpbnQgaiA9IDQ7Ci0gICAgICAgIHdoaWxlICgoaiA8IG5jaCkgJiYgcmVzKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBqKSwgImVsaWYiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIGogKyAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGogKyAxKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBqICsgMykpKTsKLSAgICAgICAgICAgIGogKz0gNDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHBhcmFtZXRlcnM6Ci0gKiAgICAgICcoJyBbdmFyYXJnc2xpc3RdICcpJwotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcGFyYW1ldGVycyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHBhcmFtZXRlcnMpICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gMykpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAicGFyYW1ldGVycyIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHZhbGlkYXRlX3N1aXRlKCkKLSAqCi0gKiAgc3VpdGU6Ci0gKiAgICAgIHNpbXBsZV9zdG10Ci0gKiAgICB8IE5FV0xJTkUgSU5ERU5UIHN0bXQrIERFREVOVAotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdWl0ZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzdWl0ZSkgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA+PSA0KSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDEpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIC8qICBORVdMSU5FIElOREVOVCBzdG10KyBERURFTlQgICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfaW5kZW50KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3RtdChDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RlZGVudChDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotCi0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA+IDQpKSB7Ci0gICAgICAgICAgICBpbnQgaSA9IDM7Ci0gICAgICAgICAgICAtLW5jaDsgICAgICAgICAgICAgICAgICAgICAgLyogZm9yZ2V0IHRoZSBERURFTlQgICAgICovCi0gICAgICAgICAgICBmb3IgKCA7IHJlcyAmJiAoaSA8IG5jaCk7ICsraSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10KENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPCA0KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgInN1aXRlIik7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0bGlzdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwgdGVzdGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0LCAidGVzdGxpc3QiKSk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3RsaXN0X3N0YXJfZXhwcihub2RlICp0bCkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRsLCB0ZXN0bGlzdF9zdGFyX2V4cHIsIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RsaXN0IikpOwotfQotCi0KLS8qIHZhbGlkYXRlIGVpdGhlciB2ZnBkZWYgb3IgdGZwZGVmLgotICogdmZwZGVmOiBOQU1FCi0gKiB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV92ZnBkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGlmIChUWVBFKHRyZWUpID09IHZmcGRlZikgewotICAgICAgICByZXR1cm4gbmNoID09IDEgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKFRZUEUodHJlZSkgPT0gdGZwZGVmKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKSB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkgJiYKLSAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAxKSkgJiYKLSAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDIpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotLyogJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmCi0gKiAuLm9yIHRmcGRlZiBpbiBwbGFjZSBvZiB2ZnBkZWYuIHZmcGRlZjogTkFNRTsgdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdmFyYXJnc2xpc3RfdHJhaWxlcihub2RlICp0cmVlLCBpbnQgc3RhcnQpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gMDsKLQotICAgIGlmIChuY2ggPD0gc3RhcnQpIHsKLSAgICAgICAgZXJyX3N0cmluZygiZXhwZWN0ZWQgdmFyaWFibGUgYXJndW1lbnQgdHJhaWxlciBmb3IgdmFyYXJnc2xpc3QiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gU1RBUikgewotICAgICAgICAvKgotICAgICAgICAgKiAnKicgW3ZmcGRlZl0KLSAgICAgICAgICovCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0YXIoQ0hJTEQodHJlZSwgc3RhcnQrKykpOwotICAgICAgICBpZiAocmVzICYmIHN0YXJ0IDwgbmNoICYmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gdmZwZGVmIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSB0ZnBkZWYpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmZwZGVmKENISUxEKHRyZWUsIHN0YXJ0KyspKTsKLSAgICAgICAgLyoKLSAgICAgICAgICogKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqCi0gICAgICAgICAqLwotICAgICAgICB3aGlsZSAocmVzICYmIHN0YXJ0ICsgMSA8IG5jaCAmJiAoCi0gICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCBzdGFydCArIDEpKSA9PSB2ZnBkZWYgfHwKLSAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIHN0YXJ0ICsgMSkpID09IHRmcGRlZikpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgc3RhcnQgKyAxIDwgbmNoICYmIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSBFUVVBTCkKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgfQotICAgICAgICAvKgotICAgICAgICAgKiBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHJlcyAmJiBzdGFydCArIDIgPCBuY2ggJiYgVFlQRShDSElMRCh0cmVlLCBzdGFydCsxKSkgPT0gRE9VQkxFU1RBUikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgIH0KLSAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAvKgotICAgICAgICAgKiAnKionIHZmcGRlZgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHN0YXJ0ICsgMSA8IG5jaCkKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJleHBlY3RlZCB2ZnBkZWYgYWZ0ZXIgKiogaW4gdmFyYXJnc2xpc3QgdHJhaWxlciIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJleHBlY3RlZCAqIG9yICoqIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICB9Ci0KLSAgICBpZiAocmVzICYmIHN0YXJ0ICE9IG5jaCkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJ1bmV4cGVjdGVkIGV4dHJhIGNoaWxkcmVuIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiB2YWxpZGF0ZV92YXJhcmdzbGlzdCgpCi0gKgotICogVmFsaWRhdGUgdHlwZWRhcmdzbGlzdCBvciB2YXJhcmdzbGlzdC4KLSAqCi0gKiB0eXBlZGFyZ3NsaXN0OiAoKHRmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gKiAgICAgICAgICAgICAgICAgKCcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHRmcGRlZl0gfAotICogICAgICAgICAgICAgICAgICAnKionIHRmcGRlZikKLSAqICAgICAgICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKLSAqIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi0gKiB2YXJhcmdzbGlzdDogKCh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICogICAgICAgICAgICAgICAoJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiAgWycsJyAnKionIHZmcGRlZl0gfAotICogICAgICAgICAgICAgICAgJyoqJyB2ZnBkZWYpCi0gKiAgICAgICAgICAgICAgIHwgdmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCddKQotICogdmZwZGVmOiBOQU1FCi0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV92YXJhcmdzbGlzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChUWVBFKHRyZWUpID09IHZhcmFyZ3NsaXN0IHx8Ci0gICAgICAgICAgICAgICBUWVBFKHRyZWUpID09IHR5cGVkYXJnc2xpc3QpICYmCi0gICAgICAgICAgICAgIChuY2ggIT0gMCk7Ci0gICAgaW50IHN5bTsKLSAgICBub2RlICpjaDsKLSAgICBpbnQgaSA9IDA7Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5jaCA8IDEpIHsKLSAgICAgICAgZXJyX3N0cmluZygidmFyYXJnc2xpc3QgbWlzc2luZyBjaGlsZCBub2RlcyIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgd2hpbGUgKGkgPCBuY2gpIHsKLSAgICAgICAgY2ggPSBDSElMRCh0cmVlLCBpKTsKLSAgICAgICAgc3ltID0gVFlQRShjaCk7Ci0gICAgICAgIGlmIChzeW0gPT0gdmZwZGVmIHx8IHN5bSA9PSB0ZnBkZWYpIHsKLSAgICAgICAgICAgIC8qIHZhbGlkYXRlICh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKyAqLwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmZwZGVmKGNoKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgKGkrMiA8PSBuY2gpICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IEVRVUFMKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrMSkpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJlcyAmJiBpIDwgbmNoKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChzeW0gPT0gRE9VQkxFU1RBUiB8fCBzeW0gPT0gU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3RfdHJhaWxlcih0cmVlLCBpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZm9ybWF0aW9uIGZvciB2YXJhcmdzbGlzdCIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIGNvbXBfaXRlcjogIGNvbXBfZm9yIHwgY29tcF9pZgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX2l0ZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBfaXRlcikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJjb21wX2l0ZXIiKSk7Ci0gICAgaWYgKHJlcyAmJiBUWVBFKENISUxEKHRyZWUsIDApKSA9PSBjb21wX2ZvcikKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9pZihDSElMRCh0cmVlLCAwKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgY29tcF9mb3I6ICAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3QgW2NvbXBfaXRlcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9mb3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAobmNoID09IDUpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfaXRlcihDSElMRCh0cmVlLCA0KSk7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCA0LCAiY29tcF9mb3IiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZm9yIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHJsaXN0KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImluIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qICBjb21wX2lmOiAgJ2lmJyB0ZXN0X25vY29uZCBbY29tcF9pdGVyXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX2lmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzOwotCi0gICAgaWYgKG5jaCA9PSAzKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2l0ZXIoQ0hJTEQodHJlZSwgMikpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImNvbXBfaWYiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaWYiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdF9ub2NvbmQoQ0hJTEQodHJlZSwgMSkpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdAotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgc3RtdCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJzdG10IikpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7Ci0KLSAgICAgICAgaWYgKFRZUEUodHJlZSkgPT0gc2ltcGxlX3N0bXQpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdCh0cmVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcG91bmRfc3RtdCh0cmVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NpbXBsZV9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHNpbXBsZV9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSAyKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc21hbGxfc3RtdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25ld2xpbmUoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgIGlmIChuY2ggPCAyKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAic2ltcGxlX3N0bXQiKTsKLSAgICAtLW5jaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3JnZXQgdGhlIE5FV0xJTkUgICAgKi8KLSAgICBpZiAocmVzICYmIGlzX2V2ZW4obmNoKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfc2VtaShDSElMRCh0cmVlLCAtLW5jaCkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA+IDIpKSB7Ci0gICAgICAgIGludCBpOwotCi0gICAgICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9zZW1pKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NtYWxsX3N0bXQoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zbWFsbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInNtYWxsX3N0bXQiKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaW50IG50eXBlID0gVFlQRShDSElMRCh0cmVlLCAwKSk7Ci0KLSAgICAgICAgaWYgKCAgKG50eXBlID09IGV4cHJfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGRlbF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gcGFzc19zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gZmxvd19zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gaW1wb3J0X3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBnbG9iYWxfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IG5vbmxvY2FsX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBhc3NlcnRfc3RtdCkpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBzbWFsbF9zdG10IGNoaWxkIHR5cGUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChuY2ggPT0gMSkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjaGlsZCBub2RlIG9mIHNtYWxsX3N0bXQ6ICVkLiIsCi0gICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIDApKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgY29tcG91bmRfc3RtdDoKLSAqICAgICAgaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBvdW5kX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBvdW5kX3N0bXQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiY29tcG91bmRfc3RtdCIpKTsKLSAgICBpbnQgbnR5cGU7Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuICgwKTsKLQotICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKLSAgICBudHlwZSA9IFRZUEUodHJlZSk7Ci0gICAgaWYgKCAgKG50eXBlID09IGlmX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IHdoaWxlX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IGZvcl9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSB0cnlfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gd2l0aF9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBmdW5jZGVmKQotICAgICAgICAgIHx8IChudHlwZSA9PSBhc3luY19zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBjbGFzc2RlZikKLSAgICAgICAgICB8fCAobnR5cGUgPT0gZGVjb3JhdGVkKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZSh0cmVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIGNvbXBvdW5kIHN0YXRlbWVudCB0eXBlOiAlZC4iLCBUWVBFKHRyZWUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV95aWVsZF9vcl90ZXN0bGlzdChub2RlICp0cmVlLCBpbnQgdHNlKQotewotICAgIGlmIChUWVBFKHRyZWUpID09IHlpZWxkX2V4cHIpIHsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3lpZWxkX2V4cHIodHJlZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAodHNlKQotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3RsaXN0X3N0YXJfZXhwcih0cmVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3RsaXN0KHRyZWUpOwotICAgIH0KLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcl9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV4cHJfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdF9zdGFyX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmIChyZXMgJiYgbmNoID09IDMKLSAgICAgICAgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gYXVnYXNzaWduKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKENISUxEKHRyZWUsIDEpLCAxLCAiYXVnYXNzaWduIikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX29yX3Rlc3RsaXN0KENISUxEKHRyZWUsIDIpLCAwKTsKLQotICAgICAgICBpZiAocmVzKSB7Ci0gICAgICAgICAgICBjaGFyICpzID0gU1RSKENISUxEKENISUxEKHRyZWUsIDEpLCAwKSk7Ci0KLSAgICAgICAgICAgIHJlcyA9IChzdHJjbXAocywgIis9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiLT0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIqPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIi89IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiLy89IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiJT0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICImPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgInw9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiXj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICI8PD0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICI+Pj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIqKj0iKSA9PSAwKTsKLSAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXVnbWVudGVkIGFzc2lnbm1lbnQgb3BlcmF0b3IiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChqID0gMTsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfeWllbGRfb3JfdGVzdGxpc3QoQ0hJTEQodHJlZSwgaiArIDEpLCAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiZGVsX3N0bXQiKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImRlbCIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JldHVybl9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHJldHVybl9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJyZXR1cm4iKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIDEpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKgotICogIHJhaXNlX3N0bXQ6Ci0gKgotICogICdyYWlzZScgW3Rlc3QgWydmcm9tJyB0ZXN0XV0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmFpc2Vfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCByYWlzZV9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDQpKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJyYWlzZSIpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAicmFpc2UiKTsKLSAgICAgICAgaWYgKHJlcyAmJiAobmNoID49IDIpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJmcm9tIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaWYgKG5jaCA8IDEgfHwgbmNoID4gMikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9leHByKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAieWllbGQiKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5jaCA9PSAyKSB7Ci0gICAgICAgIGlmICghdmFsaWRhdGVfeWllbGRfYXJnKENISUxEKHRyZWUsIDEpKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotLyogeWllbGRfYXJnOiAnZnJvbScgdGVzdCB8IHRlc3RsaXN0Ci0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX2FyZyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9hcmcpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBzd2l0Y2ggKG5jaCkgewotICAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZnJvbSIpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIHlpZWxkX3N0bXQ6IHlpZWxkX2V4cHIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfc3RtdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfc3RtdCkKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJ5aWVsZF9zdG10IikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgaW1wb3J0X2FzX25hbWUpOwotCi0gICAgaWYgKG9rKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMSkKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKQotICAgICAgICAgICAgb2sgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkKLSAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCBOVUxMKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImltcG9ydF9hc19uYW1lIik7Ci0gICAgfQotICAgIHJldHVybiBvazsKLX0KLQotCi0vKiBkb3R0ZWRfbmFtZTogIE5BTUUgKCIuIiBOQU1FKSoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZG90dGVkX25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZG90dGVkX25hbWUpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkpOwotICAgIGludCBpOwotCi0gICAgZm9yIChpID0gMTsgcmVzICYmIChpIDwgbmNoKTsgaSArPSAyKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIGkrMSksIE5VTEwpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiBkb3R0ZWRfYXNfbmFtZTogIGRvdHRlZF9uYW1lIFtOQU1FIE5BTUVdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RvdHRlZF9hc19uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZG90dGVkX2FzX25hbWUpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9kb3R0ZWRfbmFtZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgTlVMTCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgZG90dGVkX2FzX25hbWUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIGRvdHRlZF9hc19uYW1lICgnLCcgZG90dGVkX2FzX25hbWUpKiAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZG90dGVkX2FzX25hbWVzKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgICAgIGludCByZXMgPSBpc19vZGQobmNoKSAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGludCBpOwotCi0gICAgICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShDSElMRCh0cmVlLCBpICsgMSkpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIGltcG9ydF9hc19uYW1lICgnLCcgaW1wb3J0X2FzX25hbWUpKiBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X2FzX25hbWVzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUoQ0hJTEQodHJlZSwgMCkpOwotICAgIGludCBpOwotCi0gICAgZm9yIChpID0gMTsgcmVzICYmIChpICsgMSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICdpbXBvcnQnIGRvdHRlZF9hc19uYW1lcyAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICAgICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBpbXBvcnRfbmFtZSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiaW1wb3J0X25hbWUiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJpbXBvcnQiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdHRlZF9hc19uYW1lcyhDSElMRCh0cmVlLCAxKSkpOwotfQotCi0vKiBIZWxwZXIgZnVuY3Rpb24gdG8gY291bnQgdGhlIG51bWJlciBvZiBsZWFkaW5nIGRvdHMgKG9yIGVsbGlwc2lzIHRva2VucykgaW4KLSAqICdmcm9tIC4uLm1vZHVsZSBpbXBvcnQgbmFtZScKLSAqLwotc3RhdGljIGludAotY291bnRfZnJvbV9kb3RzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMTsgaSA8IE5DSCh0cmVlKTsgaSsrKQotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBpKSkgIT0gRE9UICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpICE9IEVMTElQU0lTKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgcmV0dXJuIGkgLSAxOwotfQotCi0vKiBpbXBvcnRfZnJvbTogKCdmcm9tJyAoJy4nKiBkb3R0ZWRfbmFtZSB8ICcuJyspCi0gKiAgICAgICAgICAgICAgICdpbXBvcnQnICgnKicgfCAnKCcgaW1wb3J0X2FzX25hbWVzICcpJyB8IGltcG9ydF9hc19uYW1lcykpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9mcm9tKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgICAgIGludCBuZG90cyA9IGNvdW50X2Zyb21fZG90cyh0cmVlKTsKLSAgICAgICAgaW50IGhhdmVuYW1lID0gKFRZUEUoQ0hJTEQodHJlZSwgbmRvdHMgKyAxKSkgPT0gZG90dGVkX25hbWUpOwotICAgICAgICBpbnQgb2Zmc2V0ID0gbmRvdHMgKyBoYXZlbmFtZTsKLSAgICAgICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGltcG9ydF9mcm9tKQotICAgICAgICAgICAgICAgICYmIChvZmZzZXQgPj0gMSkKLSAgICAgICAgICAgICAgICAmJiAobmNoID49IDMgKyBvZmZzZXQpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKQotICAgICAgICAgICAgICAgICYmICghaGF2ZW5hbWUgfHwgdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgbmRvdHMgKyAxKSkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBvZmZzZXQgKyAxKSwgImltcG9ydCIpOwotCi0gICAgICAgIGlmIChyZXMgJiYgVFlQRShDSElMRCh0cmVlLCBvZmZzZXQgKyAyKSkgPT0gTFBBUikKLSAgICAgICAgICAgIHJlcyA9ICgobmNoID09IG9mZnNldCArIDUpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIG9mZnNldCArIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lcyhDSElMRCh0cmVlLCBvZmZzZXQgKyAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgb2Zmc2V0ICsgNCkpKTsKLSAgICAgICAgZWxzZSBpZiAocmVzICYmIFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpICE9IFNUQVIpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZXMoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogaW1wb3J0X3N0bXQ6IGltcG9ydF9uYW1lIHwgaW1wb3J0X2Zyb20gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImltcG9ydF9zdG10Iik7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCBudHlwZSA9IFRZUEUoQ0hJTEQodHJlZSwgMCkpOwotCi0gICAgICAgIGlmIChudHlwZSA9PSBpbXBvcnRfbmFtZSB8fCBudHlwZSA9PSBpbXBvcnRfZnJvbSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vZGUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGltcG9ydF9zdG10IGNoaWxkIHR5cGUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChuY2ggPT0gMSkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjaGlsZCBub2RlIG9mIGltcG9ydF9zdG10OiAlZC4iLAotICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCAwKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGdsb2JhbF9zdG10OgotICoKLSAqICAnZ2xvYmFsJyBOQU1FICgnLCcgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2dsb2JhbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGdsb2JhbF9zdG10KQotICAgICAgICAgICAgICAgJiYgaXNfZXZlbihuY2gpICYmIChuY2ggPj0gMikpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZ2xvYmFsIHN0YXRlbWVudCIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJnbG9iYWwiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpKTsKLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBqKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIGogKyAxKSwgTkFNRSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0vKiAgbm9ubG9jYWxfc3RtdDoKLSAqCi0gKiAgJ25vbmxvY2FsJyBOQU1FICgnLCcgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vbmxvY2FsX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgbm9ubG9jYWxfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX2V2ZW4obmNoKSAmJiAobmNoID49IDIpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG5vbmxvY2FsIHN0YXRlbWVudCIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJub25sb2NhbCIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkpOwotICAgIGZvciAoaiA9IDI7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgaiArIDEpLCBOQU1FKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgYXNzZXJ0X3N0bXQ6Ci0gKgotICogICdhc3NlcnQnIHRlc3QgWycsJyB0ZXN0XQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hc3NlcnRfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3NlcnRfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImFzc2VydCIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXNzZXJ0IHN0YXRlbWVudCIpOwotICAgIGlmIChyZXMgJiYgKG5jaCA+IDIpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfd2hpbGUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgd2hpbGVfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDQpIHx8IChuY2ggPT0gNykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAid2hpbGUiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA3KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgNCksICJlbHNlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDUpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNikpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9mb3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZm9yX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSA2KSB8fCAobmNoID09IDkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZvciIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJpbiIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNSkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA5KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgNiksICJlbHNlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDcpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgOCkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgdHJ5X3N0bXQ6Ci0gKiAgICAgICd0cnknICc6JyBzdWl0ZSAoZXhjZXB0X2NsYXVzZSAnOicgc3VpdGUpKyBbJ2Vsc2UnICc6JyBzdWl0ZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZmluYWxseScgJzonIHN1aXRlXQotICogICAgfCAndHJ5JyAnOicgc3VpdGUgJ2ZpbmFsbHknICc6JyBzdWl0ZQotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdHJ5KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcG9zID0gMzsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHRyeV9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSA2KSAmJiAoKG5jaCAlIDMpID09IDApKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAidHJ5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgZWxzZSBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgY29uc3QgY2hhciogbmFtZSA9ICJleGNlcHQiOwotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBuY2ggLSAzKSkgIT0gZXhjZXB0X2NsYXVzZSkKLSAgICAgICAgICAgIG5hbWUgPSBTVFIoQ0hJTEQodHJlZSwgbmNoIC0gMykpOwotCi0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIHRyeS8lcyBub2RlLiIsIG5hbWUpOwotICAgIH0KLSAgICAvKiBIYW5kbGUgdHJ5L2ZpbmFsbHkgc3RhdGVtZW50ICovCi0gICAgaWYgKHJlcyAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBOQU1FKSAmJgotICAgICAgICAoc3RyY21wKFNUUihDSElMRCh0cmVlLCBwb3MpKSwgImZpbmFsbHkiKSA9PSAwKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNiwgInRyeS9maW5hbGx5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNSkpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotICAgIH0KLSAgICAvKiB0cnkvZXhjZXB0IHN0YXRlbWVudDogc2tpcCBwYXN0IGV4Y2VwdF9jbGF1c2Ugc2VjdGlvbnMgKi8KLSAgICB3aGlsZSAocmVzICYmIHBvcyA8IG5jaCAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBleGNlcHRfY2xhdXNlKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfZXhjZXB0X2NsYXVzZShDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgcG9zICsgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBwb3MgKyAyKSkpOwotICAgICAgICBwb3MgKz0gMzsKLSAgICB9Ci0gICAgLyogc2tpcCBlbHNlIGNsYXVzZSAqLwotICAgIGlmIChyZXMgJiYgcG9zIDwgbmNoICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IE5BTUUpICYmCi0gICAgICAgIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIHBvcykpLCAiZWxzZSIpID09IDApKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBwb3MgKyAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIHBvcyArIDIpKSk7Ci0gICAgICAgIHBvcyArPSAzOwotICAgIH0KLSAgICBpZiAocmVzICYmIHBvcyA8IG5jaCkgewotICAgICAgICAvKiBsYXN0IGNsYXVzZSBtdXN0IGJlIGEgZmluYWxseSAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBwb3MpLCAiZmluYWxseSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCBwb3MgKyAzLCAidHJ5L2V4Y2VwdC9maW5hbGx5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIHBvcyArIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgcG9zICsgMikpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4Y2VwdF9jbGF1c2Uobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXhjZXB0X2NsYXVzZSkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJleGNlcHQiKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPiAxKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID09IDQpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImFzIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDMpLCBOQU1FKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHRlc3QpICYmIGlzX29kZChuY2gpOwotCi0gICAgaWYgKHJlcyAmJiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gbGFtYmRlZikpCi0gICAgICAgIHJlcyA9ICgobmNoID09IDEpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9sYW1iZGVmKENISUxEKHRyZWUsIDApKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICByZXMgPSAocmVzICYmIChuY2ggPT0gMSB8fCAobmNoID09IDUgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJpZiIpICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDIpKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAzKSwgImVsc2UiKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCA0KSkpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9ub2NvbmQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXN0X25vY29uZCkgJiYgKG5jaCA9PSAxKTsKLQotICAgIGlmIChyZXMgJiYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGxhbWJkZWZfbm9jb25kKSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2xhbWJkZWZfbm9jb25kKENISUxEKHRyZWUsIDApKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfb3JfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIG9yX3Rlc3QpICYmIGlzX29kZChuY2gpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgcG9zOwotICAgICAgICByZXMgPSB2YWxpZGF0ZV9hbmRfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIHBvcyksICJvciIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYW5kX3Rlc3QoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FuZF90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYW5kX3Rlc3QpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgcG9zKSwgImFuZCIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ub3RfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vdF90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgbm90X3Rlc3QpICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIm5vdCIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICAgICAgZWxzZSBpZiAobmNoID09IDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wYXJpc29uKENISUxEKHRyZWUsIDApKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBhcmlzb24obm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wYXJpc29uKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbXBfb3AoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX29wKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLQotICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgY29tcF9vcCkpCi0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqICBPbmx5IGNoaWxkIHdpbGwgYmUgYSB0ZXJtaW5hbCB3aXRoIGEgd2VsbC1kZWZpbmVkIHN5bWJvbGljIG5hbWUKLSAgICAgICAgICogIG9yIGEgTkFNRSB3aXRoIGEgc3RyaW5nIG9mIGVpdGhlciAnaXMnIG9yICdpbicKLSAgICAgICAgICovCi0gICAgICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKLSAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgY2FzZSBMRVNTOgotICAgICAgICAgIGNhc2UgR1JFQVRFUjoKLSAgICAgICAgICBjYXNlIEVRRVFVQUw6Ci0gICAgICAgICAgY2FzZSBFUVVBTDoKLSAgICAgICAgICBjYXNlIExFU1NFUVVBTDoKLSAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKLSAgICAgICAgICBjYXNlIE5PVEVRVUFMOgotICAgICAgICAgICAgICByZXMgPSAxOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIE5BTUU6Ci0gICAgICAgICAgICAgIHJlcyA9ICgoc3RyY21wKFNUUih0cmVlKSwgImluIikgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgIHx8IChzdHJjbXAoU1RSKHRyZWUpLCAiaXMiKSA9PSAwKSk7Ci0gICAgICAgICAgICAgIGlmICghcmVzKSB7Ci0gICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIG9wZXJhdG9yICclcyciLCBTVFIodHJlZSkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgY29tcGFyaXNvbiBvcGVyYXRvciB0eXBlIik7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKChyZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiY29tcF9vcCIpKSAhPSAwKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgTkFNRSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKQotICAgICAgICAgICAgICAgJiYgKCgoc3RyY21wKFNUUihDSElMRCh0cmVlLCAwKSksICJpcyIpID09IDApCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIDEpKSwgIm5vdCIpID09IDApKQotICAgICAgICAgICAgICAgICAgIHx8ICgoc3RyY21wKFNUUihDSElMRCh0cmVlLCAwKSksICJub3QiKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3RyY21wKFNUUihDSElMRCh0cmVlLCAxKSksICJpbiIpID09IDApKSkpOwotICAgICAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGVycl9zdHJpbmcoInVua25vd24gY29tcGFyaXNvbiBvcGVyYXRvciIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc3Rhcl9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHN0YXJfZXhwcik7Ci0gICAgaWYgKCFyZXMpIHJldHVybiByZXM7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAic3Rhcl9leHByIikpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgU1RBUikgJiYgICAgICBcCi0gICAgICAgIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMSkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV94b3JfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfeG9yX2V4cHIoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92YmFyKENISUxEKHRyZWUsIGogLSAxKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3hvcl9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHhvcl9leHByKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jaXJjdW1mbGV4KENISUxEKHRyZWUsIGogLSAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF9leHByKENISUxEKHRyZWUsIGopKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfYW5kX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhbmRfZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zaGlmdF9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9hbXBlcnNhbmQoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NoaWZ0X2V4cHIoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jaGFpbl90d29fb3BzKG5vZGUgKnRyZWUsIGludCAoKnRlcm12YWxpZCkobm9kZSAqKSwgaW50IG9wMSwgaW50IG9wMikKLSB7Ci0gICAgaW50IHBvcyA9IDE7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiAoKnRlcm12YWxpZCkoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoIDsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSAhPSBvcDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBwb3MpLCBvcDIpOwotICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgcmVzID0gKCp0ZXJtdmFsaWQpKENISUxEKHRyZWUsIHBvcyArIDEpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NoaWZ0X2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIHNoaWZ0X2V4cHIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jaGFpbl90d29fb3BzKHRyZWUsIHZhbGlkYXRlX2FyaXRoX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFRlRTSElGVCwgUklHSFRTSElGVCkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FyaXRoX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFyaXRoX2V4cHIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jaGFpbl90d29fb3BzKHRyZWUsIHZhbGlkYXRlX3Rlcm0sIFBMVVMsIE1JTlVTKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVybShub2RlICp0cmVlKQotewotICAgIGludCBwb3MgPSAxOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXJtKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yICggOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICByZXMgPSAoKChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IFNUQVIpCi0gICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBTTEFTSCkKLSAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IERPVUJMRVNMQVNIKQotICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gUEVSQ0VOVCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgZmFjdG9yOgotICoKLSAqICBmYWN0b3I6ICgnKyd8Jy0nfCd+JykgZmFjdG9yIHwgcG93ZXIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZmFjdG9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGZhY3RvcikKLSAgICAgICAgICAgICAgICYmICgoKG5jaCA9PSAyKQotICAgICAgICAgICAgICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFBMVVMpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gTUlOVVMpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gVElMREUpKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMSkpKQotICAgICAgICAgICAgICAgICAgIHx8ICgobmNoID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Bvd2VyKENISUxEKHRyZWUsIDApKSkpKTsKLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHBvd2VyOgotICoKLSAqICBwb3dlcjogYXRvbV9leHByIHRyYWlsZXIqIFsnKionIGZhY3Rvcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcG93ZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgcG93ZXIpICYmIChuY2ggPj0gMSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2F0b21fZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgaWYgKG5jaCA+IDEpIHsKLSAgICAgICAgaWYgKG5jaCAhPSAzKSB7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBub2RlcyBmb3IgJ3Bvd2VyJyIpOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgfQotICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAyKSkpOwotICAgIH0KLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgYXRvbV9leHByOgotICoKLSAqICBhdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hdG9tX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgc3RhcnQgPSAwOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLSAgICBpbnQgcG9zOwotCi0gICAgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXRvbV9leHByKSAmJiAobmNoID49IDEpOwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLSAgICB9Ci0KLSAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gQVdBSVQpIHsKLSAgICAgICAgc3RhcnQgPSAxOwotICAgICAgICBpZiAobmNoIDwgMikgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdhdG9tX2V4cHInIik7Ci0gICAgICAgICAgICByZXR1cm4gKDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVzID0gdmFsaWRhdGVfYXRvbShDSElMRCh0cmVlLCBzdGFydCkpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcG9zID0gc3RhcnQgKyAxOwotICAgICAgICB3aGlsZSAocmVzICYmIChwb3MgPCBuY2gpICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IHRyYWlsZXIpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdHJhaWxlcihDSElMRCh0cmVlLCBwb3MrKykpOwotICAgIH0KLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hdG9tKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhdG9tKTsKLQotICAgIGlmIChyZXMgJiYgbmNoIDwgMSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgbmNoKzEsICJhdG9tIik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBzd2l0Y2ggKFRZUEUoQ0hJTEQodHJlZSwgMCkpKSB7Ci0gICAgICAgICAgY2FzZSBMUEFSOgotICAgICAgICAgICAgcmVzID0gKChuY2ggPD0gMykKLSAgICAgICAgICAgICAgICAgICAmJiAodmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKSkpOwotCi0gICAgICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSk9PXlpZWxkX2V4cHIpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV95aWVsZF9leHByKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdF9jb21wKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTFNRQjoKLSAgICAgICAgICAgIGlmIChuY2ggPT0gMikKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgUlNRQik7Ci0gICAgICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdGxpc3RfY29tcChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMiksIFJTUUIpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBsaXN0IGRpc3BsYXkgYXRvbSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBMQlJBQ0U6Ci0gICAgICAgICAgICByZXMgPSAoKG5jaCA8PSAzKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCAtIDEpLCBSQlJBQ0UpKTsKLQotICAgICAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDMpKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RpY3RvcnNldG1ha2VyKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTkFNRToKLSAgICAgICAgICBjYXNlIE5VTUJFUjoKLSAgICAgICAgICBjYXNlIEVMTElQU0lTOgotICAgICAgICAgICAgcmVzID0gKG5jaCA9PSAxKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgU1RSSU5HOgotICAgICAgICAgICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7ICsrcG9zKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIHBvcyksIFNUUklORyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgdGVzdGxpc3RfY29tcDoKLSAqICAgICh0ZXN0fHN0YXJfZXhwcikgKCBjb21wX2ZvciB8ICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddICkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdGxpc3RfY29tcChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rOwotCi0gICAgaWYgKG5jaCA9PSAwKSB7Ci0gICAgICAgIGVycl9zdHJpbmcoIm1pc3NpbmcgY2hpbGQgbm9kZXMgb2YgdGVzdGxpc3RfY29tcCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAobmNoID09IDIgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgb2sgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLAotICAgICAgICAgICAgICAgIHRlc3RsaXN0X2NvbXAsCi0gICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgInRlc3RsaXN0X2NvbXAiKTsKLSAgICB9Ci0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgZGVjb3JhdG9yOgotICogICAgJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlY29yYXRvcihub2RlICp0cmVlKQotewotICAgIGludCBvazsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRvcikgJiYKLSAgICAgICAgICAobmNoID09IDMgfHwgbmNoID09IDUgfHwgbmNoID09IDYpICYmCi0gICAgICAgICAgdmFsaWRhdGVfYXQoQ0hJTEQodHJlZSwgMCkpICYmCi0gICAgICAgICAgdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgMSkpICYmCi0gICAgICAgICAgdmFsaWRhdGVfbmV3bGluZShSQ0hJTEQodHJlZSwgLTEpKSk7Ci0KLSAgICBpZiAob2sgJiYgbmNoICE9IDMpIHsKLSAgICAgICAgb2sgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIDIpKSAmJgotICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oUkNISUxEKHRyZWUsIC0yKSkpOwotCi0gICAgICAgIGlmIChvayAmJiBuY2ggPT0gNikKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfYXJnbGlzdChDSElMRCh0cmVlLCAzKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgZGVjb3JhdG9yczoKLSAqICAgIGRlY29yYXRvcisKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGVjb3JhdG9ycyhub2RlICp0cmVlKQotewotICAgIGludCBpLCBuY2gsIG9rOwotICAgIG5jaCA9IE5DSCh0cmVlKTsKLSAgICBvayA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRvcnMpICYmIG5jaCA+PSAxOwotCi0gICAgZm9yIChpID0gMDsgb2sgJiYgaSA8IG5jaDsgKytpKQotICAgICAgICBvayA9IHZhbGlkYXRlX2RlY29yYXRvcihDSElMRCh0cmVlLCBpKSk7Ci0KLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICB3aXRoX2l0ZW06Ci0gKiAgIHRlc3QgWydhcycgZXhwcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfd2l0aF9pdGVtKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgd2l0aF9pdGVtKQotICAgICAgICAgICAgICAmJiAobmNoID09IDEgfHwgbmNoID09IDMpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICBpZiAob2sgJiYgbmNoID09IDMpCi0gICAgICAgIG9rID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMikpKTsKLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICB3aXRoX3N0bXQ6Ci0gKiAgICAwICAgICAgMSAgICAgICAgICAuLi4gICAgICAgICAgICAgLTIgICAtMQotICogICAnd2l0aCcgd2l0aF9pdGVtICgnLCcgd2l0aF9pdGVtKSogJzonIHN1aXRlCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3dpdGhfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBpOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHdpdGhfc3RtdCkKLSAgICAgICAgJiYgKG5jaCAlIDIgPT0gMCkKLSAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIndpdGgiKQotICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihSQ0hJTEQodHJlZSwgLTIpKQotICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShSQ0hJTEQodHJlZSwgLTEpKSk7Ci0gICAgZm9yIChpID0gMTsgb2sgJiYgaSA8IG5jaCAtIDI7IGkgKz0gMikKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV93aXRoX2l0ZW0oQ0hJTEQodHJlZSwgaSkpOwotICAgIHJldHVybiBvazsKLX0KLQotLyogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZSAqLwotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9mdW5jZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZnVuY2RlZik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDUpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZGVmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wYXJhbWV0ZXJzKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDMpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDQpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDcpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZGVmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wYXJhbWV0ZXJzKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3JhcnJvdyhDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDUpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDYpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGZ1bmNkZWYiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiBhc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmICovCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FzeW5jX2Z1bmNkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3luY19mdW5jZGVmKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMikgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBBU1lOQykKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX2Z1bmNkZWYiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIGFzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpICovCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FzeW5jX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfc3RtdCkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpKTsKLQotICAgIGlmIChuY2ggIT0gMikgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgYXN5bmNfc3RtdCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBmdW5jZGVmKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSB3aXRoX3N0bXQpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZm9yX3N0bXQpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZvcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLQotLyogZGVjb3JhdGVkCi0gKiAgIGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGVjb3JhdGVkKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZGVjb3JhdGVkKQotICAgICAgICAgICAgICAmJiAobmNoID09IDIpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RlY29yYXRvcnMoUkNISUxEKHRyZWUsIC0yKSkpOwotICAgIGlmIChUWVBFKFJDSElMRCh0cmVlLCAtMSkpID09IGZ1bmNkZWYpCi0gICAgICAgIG9rID0gb2sgJiYgdmFsaWRhdGVfZnVuY2RlZihSQ0hJTEQodHJlZSwgLTEpKTsKLSAgICBlbHNlCi0gICAgICAgIG9rID0gb2sgJiYgdmFsaWRhdGVfY2xhc3MoUkNISUxEKHRyZWUsIC0xKSk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9sYW1iZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGxhbWJkZWYpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAzKSB8fCAobmNoID09IDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImxhbWJkYSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgIGVsc2UgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAibGFtYmRlZiIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2xhbWJkZWZfbm9jb25kKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGxhbWJkZWZfbm9jb25kKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMykgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJsYW1iZGEiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImxhbWJkZWZfbm9jb25kIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGFyZ2xpc3Q6Ci0gKgotICogIChhcmd1bWVudCAnLCcpKiAoYXJndW1lbnQgWycsJ10gfCAnKicgdGVzdCBbJywnICcqKicgdGVzdF0gfCAnKionIHRlc3QpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FyZ2xpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBpID0gMDsKLSAgICBpbnQgb2sgPSAxOwotCi0gICAgaWYgKG5jaCA8PSAwKQotICAgICAgICAvKiByYWlzZSB0aGUgcmlnaHQgZXJyb3IgZnJvbSBoYXZpbmcgYW4gaW52YWxpZCBudW1iZXIgb2YgY2hpbGRyZW4gKi8KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIG5jaCArIDEsICJhcmdsaXN0Iik7Ci0KLSAgICBpZiAobmNoID4gMSkgewotICAgICAgICBmb3IgKGk9MDsgaTxuY2g7IGkrKykgewotICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IGFyZ3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgbm9kZSAqY2ggPSBDSElMRCh0cmVlLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoTkNIKGNoKSA9PSAyICYmIFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJuZWVkICcoJywgJyknIGZvciBnZW5lcmF0b3IgZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3aGlsZSAob2sgJiYgbmNoLWkgPj0gMikgewotICAgICAgICAvKiBza2lwIGxlYWRpbmcgKGFyZ3VtZW50ICcsJykgKi8KLSAgICAgICAgb2sgPSAodmFsaWRhdGVfYXJndW1lbnQoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrMSkpKTsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBvayA9IDE7Ci0gICAgaWYgKG5jaC1pID4gMCkgewotICAgICAgICBpbnQgc3ltID0gVFlQRShDSElMRCh0cmVlLCBpKSk7Ci0KLSAgICAgICAgaWYgKHN5bSA9PSBhcmd1bWVudCkgewotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9hcmd1bWVudChDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgICAgICBpZiAob2sgJiYgaSsxICE9IG5jaCkgewotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXJnbGlzdCBzcGVjaWZpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoZXh0cmEgc3R1ZmYgb24gZW5kKSIpOwotICAgICAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhcmdsaXN0IHNwZWNpZmljYXRpb24iKTsKLSAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKG9rKTsKLX0KLQotCi0KLS8qICBhcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfAotICogICAgICAgICAgICAgIHRlc3QgJz0nIHRlc3QgfAotICogICAgICAgICAgICAgICcqKicgdGVzdCB8Ci0gKiAgICAgICAgICAgICAgJyonIHRlc3QgKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hcmd1bWVudChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcmd1bWVudCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDEpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAyKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDIpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLQotLyogIHRyYWlsZXI6Ci0gKgotICogICcoJyBbYXJnbGlzdF0gJyknIHwgJ1snIHN1YnNjcmlwdGxpc3QgJ10nIHwgJy4nIE5BTUUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdHJhaWxlcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHRyYWlsZXIpICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gMykpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBzd2l0Y2ggKFRZUEUoQ0hJTEQodHJlZSwgMCkpKSB7Ci0gICAgICAgICAgY2FzZSBMUEFSOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hcmdsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTFNRQjoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAidHJhaWxlciIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3Vic2NyaXB0bGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAyKSwgUlNRQikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBET1Q6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInRyYWlsZXIiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInRyYWlsZXIiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBzdWJzY3JpcHRsaXN0OgotICoKLSAqICBzdWJzY3JpcHQgKCcsJyBzdWJzY3JpcHQpKiBbJywnXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdWJzY3JpcHRsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLCBzdWJzY3JpcHRsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3Vic2NyaXB0LCAic3Vic2NyaXB0bGlzdCIpKTsKLX0KLQotCi0vKiAgc3Vic2NyaXB0OgotICoKLSAqICAnLicgJy4nICcuJyB8IHRlc3QgfCBbdGVzdF0gJzonIFt0ZXN0XSBbc2xpY2VvcF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3Vic2NyaXB0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG9mZnNldCA9IDA7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgc3Vic2NyaXB0KSAmJiAobmNoID49IDEpICYmIChuY2ggPD0gNCk7Ci0KLSAgICBpZiAoIXJlcykgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHN1YnNjcmlwdCBub2RlIik7Ci0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgfQotICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBET1QpCi0gICAgICAgIC8qIHRha2UgY2FyZSBvZiAoJy4nICcuJyAnLicpIHBvc3NpYmlsaXR5ICovCi0gICAgICAgIHJldHVybiAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgInN1YnNjcmlwdCIpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgMikpKTsKLSAgICBpZiAobmNoID09IDEpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHRlc3QpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci0gICAgfQotICAgIC8qICBNdXN0IGJlIFt0ZXN0XSAnOicgW3Rlc3RdIFtzbGljZW9wXSwKLSAgICAgKiAgYnV0IGF0IGxlYXN0IG9uZSBvZiB0aGUgb3B0aW9uYWwgY29tcG9uZW50cyB3aWxsCi0gICAgICogIGJlIHByZXNlbnQsIGJ1dCB3ZSBkb24ndCBrbm93IHdoaWNoIHlldC4KLSAgICAgKi8KLSAgICBpZiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpICE9IENPTE9OKSB8fCAobmNoID09IDQpKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBvZmZzZXQgPSAxOwotICAgIH0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBvZmZzZXQpKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCByZW0gPSBuY2ggLSArK29mZnNldDsKLSAgICAgICAgaWYgKHJlbSkgewotICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0KSkgPT0gdGVzdCkgewotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgKytvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgLS1yZW07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmVzICYmIHJlbSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zbGljZW9wKENISUxEKHRyZWUsIG9mZnNldCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zbGljZW9wKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKChuY2ggPT0gMSkgfHwgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInNsaWNlb3AiKSkKLSAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgc2xpY2VvcCk7Ci0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInNsaWNlb3AiKTsKLSAgICB9Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMCkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIobm9kZSAqbikKLXsKLSAgICBpZiAoVFlQRShuKSA9PSB0ZXN0KQotICAgICAgICByZXR1cm4gdmFsaWRhdGVfdGVzdChuKTsKLSAgICByZXR1cm4gdmFsaWRhdGVfc3Rhcl9leHByKG4pOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByX29yX3N0YXJfZXhwcihub2RlICpuKQotewotICAgIGlmIChUWVBFKG4pID09IGV4cHIpCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKG4pOwotICAgIHJldHVybiB2YWxpZGF0ZV9zdGFyX2V4cHIobik7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcmxpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsIGV4cHJsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcl9vcl9zdGFyX2V4cHIsICJleHBybGlzdCIpKTsKLX0KLQotLyogSW5jcmVtZW50aW5nIHZhbGlkYXRlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbnplcm8gaWZmIHN1Y2Nlc3MgKGxpa2Ugb3RoZXIKLSAqIHZhbGlkYXRlIGZ1bmN0aW9ucywgYW5kIGFkdmFuY2UgKmkgYnkgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2hlZCBwYXR0ZXJuLiAqLwotCi0vKiB0ZXN0ICc6JyB0ZXN0ICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKG5vZGUgKnRyZWUsIGludCAqaSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgKCppKSsrKSkKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpKTsKLX0KLQotLyogdGVzdCAnOicgdGVzdCB8ICcqKicgZXhwciAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGljdF9lbGVtZW50X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gMDsKLSAgICBpZiAobmNoIC0gKmkgPj0gMikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAqaSsxKSkgPT0gQ09MT04pIHsKLSAgICAgICAgICAgIC8qIHRlc3QgJzonIHRlc3QgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgaSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiAnKionIGV4cHIgKi8KLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgKCppKSsrKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiAgZGljdG9yc2V0bWFrZXI6Ci0gKgotICogICAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikKLSAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikpKiBbJywnXSkpIHwKLSAqICAgICAoKHRlc3QgfCAnKicgdGVzdCkKLSAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCB8ICcqJyB0ZXN0KSkqIFsnLCddKSkgKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kaWN0b3JzZXRtYWtlcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLSAgICBpbnQgaSA9IDA7Ci0KLSAgICByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBkaWN0b3JzZXRtYWtlcik7Ci0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG5jaCAtIGkgPCAxKSB7Ci0gICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJkaWN0b3JzZXRtYWtlciIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAobmNoIC0gaSA+PSAyCi0gICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCBpKzEpKSA9PSBDT0xPTikgfHwKLSAgICAgICAgICAgIChUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBET1VCTEVTVEFSKSkpIHsKLSAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5IG9yIGRpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gNCAmJiBUWVBFKENISUxEKHRyZWUsIGkrMykpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyh0cmVlLCAmaSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkuICovCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUoCi0gICAgICAgICAgICAgICAgICAgIHRyZWUsCi0gICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9kaWN0X2VsZW1lbnRfaW5jLAotICAgICAgICAgICAgICAgICAgICAmaSwKLSAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKiBTZXQgZGlzcGxheSBvciBzZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gMiAmJiBUWVBFKENISUxEKHRyZWUsIGkgKyAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIC8qIFNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIFNldCBkaXNwbGF5LiAqLwotICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChuY2ggLSBpID4gMCkgewotICAgICAgICBlcnJfc3RyaW5nKCJJbGxlZ2FsIHRyYWlsaW5nIG5vZGVzIGZvciBkaWN0b3JzZXRtYWtlci4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXZhbF9pbnB1dChub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV2YWxfaW5wdXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCAtIDEpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCAobmNoIC0gMSkpOyArK3BvcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgcG9zKSwgTkVXTElORSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbm9kZShub2RlICp0cmVlKQotewotICAgIGludCAgIG5jaCAgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG51bS4gY2hpbGRyZW4gb24gY3VycmVudCBub2RlICAqLwotICAgIGludCAgIHJlcyAgPSAxOyAgICAgICAgICAgICAgICAgICAgIC8qIHJlc3VsdCB2YWx1ZSAgICAgICAgICAgICAgICAgICAqLwotICAgIG5vZGUqIG5leHQgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gcHJvY2VzcyBhZnRlciB0aGlzIG9uZSAqLwotCi0gICAgd2hpbGUgKHJlcyAmJiAodHJlZSAhPSAwKSkgewotICAgICAgICBuY2ggID0gTkNIKHRyZWUpOwotICAgICAgICBuZXh0ID0gMDsKLSAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIERlZmluaXRpb24gbm9kZXMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIGFzeW5jX2Z1bmNkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19mdW5jZGVmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhc3luY19zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZnVuY2RlZjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Z1bmNkZWYodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHdpdGhfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY2xhc3NkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jbGFzcyh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZGVjb3JhdGVkOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVjb3JhdGVkKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogICJUcml2aWFsIiBwYXJzZSB0cmVlIG5vZGVzLgotICAgICAgICAgICAgICogIChXaHkgZGlkIEkgY2FsbCB0aGVzZSB0cml2aWFsPykKLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2Ugc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNtYWxsX3N0bXQ6Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIGV4cHJfc3RtdCB8IGRlbF9zdG10IHwgcGFzc19zdG10IHwgZmxvd19zdG10IHwKLSAgICAgICAgICAgICAqICBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgbm9ubG9jYWxfc3RtdCB8IGFzc2VydF9zdG10Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NtYWxsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZsb3dfc3RtdDoKLSAgICAgICAgICAgIHJlcyAgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImZsb3dfc3RtdCIpCi0gICAgICAgICAgICAgICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gYnJlYWtfc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBjb250aW51ZV9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHlpZWxkX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmV0dXJuX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmFpc2Vfc3RtdCkpKTsKLSAgICAgICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICAgICAgbmV4dCA9IENISUxEKHRyZWUsIDApOwotICAgICAgICAgICAgZWxzZSBpZiAobmNoID09IDEpCi0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBmbG93X3N0bXQgdHlwZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBDb21wb3VuZCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBzaW1wbGVfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NpbXBsZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wb3VuZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcG91bmRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBGdW5kYW1lbnRhbCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBleHByX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGRlbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHBhc3Nfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAicGFzcyIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInBhc3MiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGJyZWFrX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImJyZWFrIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiYnJlYWsiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbnRpbnVlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImNvbnRpbnVlIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiY29udGludWUiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJldHVybl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcmV0dXJuX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJhaXNlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9yYWlzZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfbmFtZToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9uYW1lKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfZnJvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9mcm9tKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBnbG9iYWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2dsb2JhbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBub25sb2NhbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9ubG9jYWxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXNzZXJ0X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3NlcnRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaWZfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2lmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB3aGlsZV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfd2hpbGUodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZvcl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZm9yKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB0cnlfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyeSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugc3VpdGU6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdWl0ZSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBFeHByZXNzaW9uIG5vZGVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSB0ZXN0bGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIG5vdF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm90X3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbXBhcmlzb246Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wYXJpc29uKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBleHBybGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHJsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wX29wOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9vcCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHhvcl9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeG9yX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNoaWZ0X2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaGlmdF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhcml0aF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXJpdGhfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVybToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlcm0odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZhY3RvcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZhY3Rvcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgcG93ZXI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9wb3dlcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXRvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2F0b20odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAvKiBIb3BlZnVsbHkgbmV2ZXIgcmVhY2hlZCEgKi8KLSAgICAgICAgICAgIGVycl9zdHJpbmcoInVucmVjb2duaXplZCBub2RlIHR5cGUiKTsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB0cmVlID0gbmV4dDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJfdHJlZShub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSB2YWxpZGF0ZV9ldmFsX2lucHV0KHRyZWUpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImNvdWxkIG5vdCB2YWxpZGF0ZSBleHByZXNzaW9uIHR1cGxlIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGZpbGVfaW5wdXQ6Ci0gKiAgICAgIChORVdMSU5FIHwgc3RtdCkqIEVORE1BUktFUgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9maWxlX2lucHV0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKSAtIDE7Ci0gICAgaW50IHJlcyA9ICgobmNoID49IDApCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2gpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAoaiA9IDA7IHJlcyAmJiAoaiA8IG5jaCk7ICsraikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBqKSkgPT0gc3RtdCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQoQ0hJTEQodHJlZSwgaikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIGopKTsKLSAgICB9Ci0gICAgLyogIFRoaXMgc3RheXMgaW4gdG8gcHJldmVudCBhbnkgaW50ZXJuYWwgZmFpbHVyZXMgZnJvbSBnZXR0aW5nIHRvIHRoZQotICAgICAqICB1c2VyLiAgSG9wZWZ1bGx5LCB0aGlzIHdvbid0IGJlIG5lZWRlZC4gIElmIGEgdXNlciByZXBvcnRzIGdldHRpbmcKLSAgICAgKiAgdGhpcywgd2UgaGF2ZSBzb21lIGRlYnVnZ2luZyB0byBkby4KLSAgICAgKi8KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiVkFMSURBVElPTiBGQUlMVVJFOiByZXBvcnQgdGhpcyB0byB0aGUgbWFpbnRhaW5lciEiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZW5jb2RpbmdfZGVjbChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICgobmNoID09IDEpCi0gICAgICAgICYmIHZhbGlkYXRlX2ZpbGVfaW5wdXQoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHBpY2tsZV9jb25zdHJ1Y3RvciA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCBkNzM3NjI0Li43YWFlNWM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC0zMiw2ICszMiwxMiBAQAogI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKICNlbmRpZgogCisvKiBPbiBhbmRyb2lkIEFQSSBsZXZlbCAyMSwgJ0FUX0VBQ0NFU1MnIGlzIG5vdCBkZWNsYXJlZCBhbHRob3VnaAorICogSEFWRV9GQUNDRVNTQVQgaXMgZGVmaW5lZC4gKi8KKyNpZmRlZiBfX0FORFJPSURfXworI3VuZGVmIEhBVkVfRkFDQ0VTU0FUCisjZW5kaWYKKwogI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBuZWVkZWQgZm9yIGN0ZXJtaWQoKSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTEyNyw2ICsxMzMsMTMgQEAKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTElOVVhfUkFORE9NX0gKKyMgIGluY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorIyAgaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogIyAgZGVmaW5lIFRFUk1TSVpFX1VTRV9DT05JTwogI2VsaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKQpAQCAtMTUxLDYgKzE2NCw4IEBACiAjZGVmaW5lIEhBVkVfR0VUTE9HSU4gICAxCiAjZGVmaW5lIEhBVkVfU1BBV05WICAgICAxCiAjZGVmaW5lIEhBVkVfRVhFQ1YgICAgICAxCisjZGVmaW5lIEhBVkVfV1NQQVdOViAgICAxCisjZGVmaW5lIEhBVkVfV0VYRUNWICAgICAxCiAjZGVmaW5lIEhBVkVfUElQRSAgICAgICAxCiAjZGVmaW5lIEhBVkVfU1lTVEVNICAgICAxCiAjZGVmaW5lIEhBVkVfQ1dBSVQgICAgICAxCkBAIC02MzQsMjIgKzY0OSwxNCBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSMgIGRlZmluZSBfUHlMb25nX0Zyb21EZXYgUHlMb25nX0Zyb21Mb25nTG9uZwotI2Vsc2UKLSMgIGRlZmluZSBfUHlMb25nX0Zyb21EZXYgUHlMb25nX0Zyb21Mb25nCi0jZW5kaWYKKyNkZWZpbmUgX1B5TG9uZ19Gcm9tRGV2IFB5TG9uZ19Gcm9tTG9uZ0xvbmcKIAogCiAjaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKIHN0YXRpYyBpbnQKIF9QeV9EZXZfQ29udmVydGVyKFB5T2JqZWN0ICpvYmosIHZvaWQgKnApCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAqKChkZXZfdCAqKXApID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopOwotI2Vsc2UKLSAgICAqKChkZXZfdCAqKXApID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG9iaik7Ci0jZW5kaWYKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIDE7CkBAIC02NzEsMjEgKzY3OCwyMCBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKLV9mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIGludCAqcCwgY29uc3QgY2hhciAqYWxsb3dlZCkKK19mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIGludCAqcCkKIHsKICAgICBpbnQgb3ZlcmZsb3c7CiAgICAgbG9uZyBsb25nX3ZhbHVlOwogCiAgICAgUHlPYmplY3QgKmluZGV4ID0gUHlOdW1iZXJfSW5kZXgobyk7CiAgICAgaWYgKGluZGV4ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgJXMsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZCwgUHlfVFlQRShvKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGFzc2VydChQeUxvbmdfQ2hlY2soaW5kZXgpKTsKICAgICBsb25nX3ZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KGluZGV4LCAmb3ZlcmZsb3cpOwogICAgIFB5X0RFQ1JFRihpbmRleCk7CisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKICAgICBpZiAob3ZlcmZsb3cgPiAwIHx8IGxvbmdfdmFsdWUgPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZkIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIik7CkBAIC03MDgsNyArNzE0LDE1IEBACiAgICAgICAgICooaW50ICopcCA9IERFRkFVTFRfRElSX0ZEOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgcmV0dXJuIF9mZF9jb252ZXJ0ZXIobywgKGludCAqKXAsICJpbnRlZ2VyIik7CisgICAgZWxzZSBpZiAoUHlJbmRleF9DaGVjayhvKSkgeworICAgICAgICByZXR1cm4gX2ZkX2NvbnZlcnRlcihvLCAoaW50ICopcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAogCkBAIC03MjMsNyArNzM3LDcgQEAKICAqCiAgKiAgICogT24gV2luZG93cywgaWYgd2UgZ2V0IGEgKFVuaWNvZGUpIHN0cmluZyB3ZQogICogICAgIGV4dHJhY3QgdGhlIHdjaGFyX3QgKiBhbmQgcmV0dXJuIGl0OyBpZiB3ZSBnZXQKLSAqICAgICBieXRlcyB3ZSBleHRyYWN0IHRoZSBjaGFyICogYW5kIHJldHVybiB0aGF0LgorICogICAgIGJ5dGVzIHdlIGRlY29kZSB0byB3Y2hhcl90ICogYW5kIHJldHVybiB0aGF0LgogICoKICAqICAgKiBPbiBhbGwgb3RoZXIgcGxhdGZvcm1zLCBzdHJpbmdzIGFyZSBlbmNvZGVkCiAgKiAgICAgdG8gYnl0ZXMgdXNpbmcgUHlVbmljb2RlX0ZTQ29udmVydGVyLCB0aGVuIHdlCkBAIC03NTUsNyArNzY5LDkgQEAKICAqICAgICBhbmQgd2FzIG5vdCBlbmNvZGVkLiAgKE9ubHkgdXNlZCBvbiBXaW5kb3dzLikKICAqICAgcGF0aC5uYXJyb3cKICAqICAgICBQb2ludHMgdG8gdGhlIHBhdGggaWYgaXQgd2FzIGV4cHJlc3NlZCBhcyBieXRlcywKLSAqICAgICBvciBpdCB3YXMgVW5pY29kZSBhbmQgd2FzIGVuY29kZWQgdG8gYnl0ZXMuCisgKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLiAoT24gV2luZG93cywKKyAqICAgICBpcyBhIG5vbi16ZXJvIGludGVnZXIgaWYgdGhlIHBhdGggd2FzIGV4cHJlc3NlZCBhcyBieXRlcy4KKyAqICAgICBUaGUgdHlwZSBpcyBkZWxpYmVyYXRlbHkgaW5jb21wYXRpYmxlIHRvIHByZXZlbnQgbWlzdXNlLikKICAqICAgcGF0aC5mZAogICogICAgIENvbnRhaW5zIGEgZmlsZSBkZXNjcmlwdG9yIGlmIHBhdGguYWNjZXB0X2ZkIHdhcyB0cnVlCiAgKiAgICAgYW5kIHRoZSBjYWxsZXIgcHJvdmlkZWQgYSBzaWduZWQgaW50ZWdlciBpbnN0ZWFkIG9mIGFueQpAQCAtNzk5LDE2ICs4MTUsMjUgQEAKICAgICBjb25zdCBjaGFyICphcmd1bWVudF9uYW1lOwogICAgIGludCBudWxsYWJsZTsKICAgICBpbnQgYWxsb3dfZmQ7Ci0gICAgd2NoYXJfdCAqd2lkZTsKLSAgICBjaGFyICpuYXJyb3c7CisgICAgY29uc3Qgd2NoYXJfdCAqd2lkZTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgQk9PTCBuYXJyb3c7CisjZWxzZQorICAgIGNvbnN0IGNoYXIgKm5hcnJvdzsKKyNlbmRpZgogICAgIGludCBmZDsKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKICAgICBQeU9iamVjdCAqb2JqZWN0OwogICAgIFB5T2JqZWN0ICpjbGVhbnVwOwogfSBwYXRoX3Q7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisjZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAorICAgIHtmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIEZBTFNFLCAtMSwgMCwgTlVMTCwgTlVMTH0KKyNlbHNlCiAjZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAogICAgIHtmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIE5VTEwsIC0xLCAwLCBOVUxMLCBOVUxMfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkCiBwYXRoX2NsZWFudXAocGF0aF90ICpwYXRoKSB7CkBAIC04MTgsMTEgKzg0MywxOSBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkgeworcGF0aF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApCit7CiAgICAgcGF0aF90ICpwYXRoID0gKHBhdGhfdCAqKXA7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGUsICpieXRlczsKKyAgICBQeU9iamVjdCAqYnl0ZXMsICp0b19jbGVhbnVwID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKLSAgICBjaGFyICpuYXJyb3c7CisgICAgaW50IGlzX2luZGV4LCBpc19idWZmZXIsIGlzX2J5dGVzLCBpc191bmljb2RlOworICAgIC8qIERlZmF1bHQgdG8gZmFpbHVyZSwgZm9yY2luZyBleHBsaWNpdCBzaWduYWxpbmcgb2Ygc3VjY2Nlc3MuICovCisgICAgaW50IHJldCA9IDA7CisgICAgY29uc3QgY2hhciAqbmFycm93OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqd287CisgICAgY29uc3Qgd2NoYXJfdCAqd2lkZTsKKyNlbmRpZgogCiAjZGVmaW5lIEZPUk1BVF9FWENFUFRJT04oZXhjLCBmbXQpIFwKICAgICBQeUVycl9Gb3JtYXQoZXhjLCAiJXMlcyIgZm10LCBcCkBAIC04MzYsMTIyICs4NjksMTkxIEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIC8qIGVuc3VyZSBpdCdzIGFsd2F5cyBzYWZlIHRvIGNhbGwgcGF0aF9jbGVhbnVwKCkgKi8KKyAgICAvKiBFbnN1cmUgaXQncyBhbHdheXMgc2FmZSB0byBjYWxsIHBhdGhfY2xlYW51cCgpLiAqLwogICAgIHBhdGgtPmNsZWFudXAgPSBOVUxMOwogCi0gICAgaWYgKG8gPT0gUHlfTm9uZSkgewotICAgICAgICBpZiAoIXBhdGgtPm51bGxhYmxlKSB7Ci0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNwZWNpZnkgTm9uZSBmb3IgJXMgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CisgICAgaWYgKChvID09IFB5X05vbmUpICYmIHBhdGgtPm51bGxhYmxlKSB7CiAgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgcGF0aC0+bmFycm93ID0gRkFMU0U7CisjZWxzZQogICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworI2VuZGlmCiAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CiAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CiAgICAgICAgIHBhdGgtPmZkID0gLTE7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvKTsKLSAgICBpZiAodW5pY29kZSkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgd2NoYXJfdCAqd2lkZTsKKyAgICAvKiBPbmx5IGNhbGwgdGhpcyBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QgdHJlYXQgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgIG9zLmZzcGF0aCgpIGFzIGFuIGZkIG9yIGJ1ZmZlci4gKi8KKyAgICBpc19pbmRleCA9IHBhdGgtPmFsbG93X2ZkICYmIFB5SW5kZXhfQ2hlY2sobyk7CisgICAgaXNfYnVmZmVyID0gUHlPYmplY3RfQ2hlY2tCdWZmZXIobyk7CisgICAgaXNfYnl0ZXMgPSBQeUJ5dGVzX0NoZWNrKG8pOworICAgIGlzX3VuaWNvZGUgPSBQeVVuaWNvZGVfQ2hlY2sobyk7CiAKLSAgICAgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaWNvZGUsICZsZW5ndGgpOworICAgIGlmICghaXNfaW5kZXggJiYgIWlzX2J1ZmZlciAmJiAhaXNfdW5pY29kZSAmJiAhaXNfYnl0ZXMpIHsKKyAgICAgICAgLyogSW5saW5lIFB5T1NfRlNQYXRoKCkgZm9yIGJldHRlciBlcnJvciBtZXNzYWdlcy4gKi8KKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19mc3BhdGhfXyk7CisgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKworICAgICAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19mc3BhdGhfXyk7CisgICAgICAgIGlmIChOVUxMID09IGZ1bmMpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIG8gPSB0b19jbGVhbnVwID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBpZiAoTlVMTCA9PSBvKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG8pKSB7CisgICAgICAgICAgICBpc191bmljb2RlID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKG8pKSB7CisgICAgICAgICAgICBpc19ieXRlcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXNfdW5pY29kZSkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKG8sICZsZW5ndGgpOwogICAgICAgICBpZiAoIXdpZGUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGlmIChsZW5ndGggPiAzMjc2NykgewogICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGlmICh3Y3NsZW4od2lkZSkgIT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAKICAgICAgICAgcGF0aC0+d2lkZSA9IHdpZGU7Ci0gICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CiAgICAgICAgIHBhdGgtPmxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKICAgICAgICAgcGF0aC0+ZmQgPSAtMTsKLSAgICAgICAgcGF0aC0+Y2xlYW51cCA9IHVuaWNvZGU7Ci0gICAgICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyAgICAgICAgcmV0ID0gMTsKKyAgICAgICAgZ290byBleGl0OwogI2Vsc2UKLSAgICAgICAgaW50IGNvbnZlcnRlZCA9IFB5VW5pY29kZV9GU0NvbnZlcnRlcih1bmljb2RlLCAmYnl0ZXMpOwotICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgICAgIGlmICghY29udmVydGVkKQotICAgICAgICAgICAgYnl0ZXMgPSBOVUxMOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmYnl0ZXMpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKG8pKQotICAgICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3Qobyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ5dGVzID0gTlVMTDsKKyAgICBlbHNlIGlmIChpc19ieXRlcykgeworICAgICAgICBieXRlcyA9IG87CisgICAgICAgIFB5X0lOQ1JFRihieXRlcyk7CisgICAgfQorICAgIGVsc2UgaWYgKGlzX2J1ZmZlcikgeworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAiJXMlcyVzIHNob3VsZCBiZSAlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gcGF0aC0+ZnVuY3Rpb25fbmFtZSA6ICIiLAorICAgICAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/ICI6ICIgICAgICAgICAgICAgICAgOiAiIiwKKyAgICAgICAgICAgIHBhdGgtPmFyZ3VtZW50X25hbWUgPyBwYXRoLT5hcmd1bWVudF9uYW1lIDogInBhdGgiLAorICAgICAgICAgICAgcGF0aC0+YWxsb3dfZmQgJiYgcGF0aC0+bnVsbGFibGUgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2UsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgb3IgTm9uZSIgOgorICAgICAgICAgICAgcGF0aC0+YWxsb3dfZmQgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciIgOgorICAgICAgICAgICAgcGF0aC0+bnVsbGFibGUgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgTm9uZSIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBvcy5QYXRoTGlrZSIsCisgICAgICAgICAgICBQeV9UWVBFKG8pLT50cF9uYW1lKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KG8pOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgaWYgKHBhdGgtPmFsbG93X2ZkKSB7Ci0gICAgICAgICAgICAgICAgaW50IGZkOwotICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBfZmRfY29udmVydGVyKG8sICZmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIiKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5sZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5vYmplY3QgPSBvOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5mZCA9IGZkOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgIH0KLQotICAgIGlmICghYnl0ZXMpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19UeXBlRXJyb3IsICJpbGxlZ2FsIHR5cGUgZm9yICVzIHBhcmFtZXRlciIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KKyAgICBlbHNlIGlmIChpc19pbmRleCkgeworICAgICAgICBpZiAoIV9mZF9jb252ZXJ0ZXIobywgJnBhdGgtPmZkKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgewotICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgICAgIHBhdGgtPm5hcnJvdyA9IEZBTFNFOworI2Vsc2UKKyAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKICNlbmRpZgorICAgICAgICBwYXRoLT5sZW5ndGggPSAwOworICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICByZXQgPSAxOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworIGVycm9yX2V4aXQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlcyVzJXMgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gIjogIiAgICAgICAgICAgICAgICA6ICIiLAorICAgICAgICAgICAgcGF0aC0+YXJndW1lbnRfbmFtZSA/IHBhdGgtPmFyZ3VtZW50X25hbWUgOiAicGF0aCIsCisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCAmJiBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBvciBOb25lIiA6CisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyIiA6CisgICAgICAgICAgICBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBOb25lIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIiwKKyAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogCiAgICAgbGVuZ3RoID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChsZW5ndGggPiBNQVhfUEFUSC0xKSB7Ci0gICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7Ci0gICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNlbmRpZgotCiAgICAgbmFycm93ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwogICAgIGlmICgoc2l6ZV90KWxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgewogICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3byA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKAorICAgICAgICBuYXJyb3csCisgICAgICAgIGxlbmd0aAorICAgICk7CisgICAgaWYgKCF3bykgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHdvLCAmbGVuZ3RoKTsKKyAgICBQeV9ERUNSRUYod28pOworCisgICAgaWYgKCF3aWRlKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CisgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKHdjc2xlbih3aWRlKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIgaW4gJXMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBwYXRoLT53aWRlID0gd2lkZTsKKyAgICBwYXRoLT5uYXJyb3cgPSBUUlVFOworI2Vsc2UKICAgICBwYXRoLT53aWRlID0gTlVMTDsKICAgICBwYXRoLT5uYXJyb3cgPSBuYXJyb3c7CisjZW5kaWYKICAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CiAgICAgcGF0aC0+b2JqZWN0ID0gbzsKICAgICBwYXRoLT5mZCA9IC0xOwotICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKLSAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisgICAgaWYgKGJ5dGVzID09IG8pIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0ID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKKyAgICAgICAgcmV0ID0gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisgICAgfQorIGV4aXQ6CisgICAgUHlfWERFQ1JFRih0b19jbGVhbnVwKTsKKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZAotYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgY2hhciAqYXJndW1lbnRfbmFtZSkgeworYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgY29uc3QgY2hhciAqYXJndW1lbnRfbmFtZSkKK3sKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgIiVzJXMlcyB1bmF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIiwKICAgICAgICAgKGZ1bmN0aW9uX25hbWUgIT0gTlVMTCkgPyBmdW5jdGlvbl9uYW1lIDogIiIsCkBAIC05NzQsNyArMTA3Niw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWZkX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQpIHsKK2ZkX3NwZWNpZmllZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQpCit7CiAgICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtOTgzLDcgKzEwODYsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1mb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmb2xsb3dfc3ltbGlua3MpIHsKK2ZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZvbGxvd19zeW1saW5rcykKK3sKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtOTkyLDggKzEwOTYsMTMgQEAKIH0KIAogc3RhdGljIGludAotcGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKSB7Ci0gICAgaWYgKCFwYXRoLT5uYXJyb3cgJiYgIXBhdGgtPndpZGUgJiYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkpIHsKK3BhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkKK3sKKyAgICBpZiAoIXBhdGgtPndpZGUgJiYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyNpZm5kZWYgTVNfV0lORE9XUworICAgICAgICAmJiAhcGF0aC0+bmFycm93CisjZW5kaWYKKyAgICApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbid0IHNwZWNpZnkgZGlyX2ZkIHdpdGhvdXQgbWF0Y2hpbmcgcGF0aCIsCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKQEAgLTEwMDMsNyArMTExMiw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpcl9mZF9hbmRfZmRfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLCBpbnQgZmQpIHsKK2Rpcl9mZF9hbmRfZmRfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLCBpbnQgZmQpCit7CiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmIChmZCAhPSAtMSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbid0IHNwZWNpZnkgYm90aCBkaXJfZmQgYW5kIGZkIiwKQEAgLTEwMTQsOCArMTEyNCw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykgeworZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorewogICAgIGlmICgoZmQgPiAwKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbm5vdCB1c2UgZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCkBAIC0xMDI2LDggKzExMzcsOSBAQAogfQogCiBzdGF0aWMgaW50Ci1kaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKK2Rpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKK3sKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyIiwKQEAgLTEwMzgsNyArMTE1MCw3IEBACiB9CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgdHlwZWRlZiBQWV9MT05HX0xPTkcgUHlfb2ZmX3Q7CisgICAgdHlwZWRlZiBsb25nIGxvbmcgUHlfb2ZmX3Q7CiAjZWxzZQogICAgIHR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7CiAjZW5kaWYKQEAgLTEwNjYsNDEgKzExNzgsMTMgQEAKICNlbmRpZgogfQogCi0KLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCi0vKiBMZWdhY3kgaW1wbGVtZW50YXRpb24gb2YgX1B5VmVyaWZ5X2ZkX2R1cDIgd2hpbGUgdHJhbnNpdGlvbmluZyB0bwotICogTVNWQyAxNC4wLiBUaGlzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQuIChpc3N1ZTIzNTI0KQotICovCi0jZGVmaW5lIElPSU5GT19MMkUgNQotI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0Ci0jZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKLSNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQotI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCi0KLS8qIHRoZSBzcGVjaWFsIGNhc2Ugb2YgY2hlY2tpbmcgZHVwMi4gIFRoZSB0YXJnZXQgZmQgbXVzdCBiZSBpbiBhIHNlbnNpYmxlIHJhbmdlICovCi1zdGF0aWMgaW50Ci1fUHlWZXJpZnlfZmRfZHVwMihpbnQgZmQxLCBpbnQgZmQyKQotewotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkMSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChmZDIgPT0gX05PX0NPTlNPTEVfRklMRU5PKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKHVuc2lnbmVkKWZkMiA8IF9OSEFORExFXykKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gMDsKLX0KLSNlbHNlCi0jZGVmaW5lIF9QeVZlcmlmeV9mZF9kdXAyKGZkMSwgZmQyKSAoX1B5VmVyaWZ5X2ZkKGZkMSkgJiYgKGZkMikgPj0gMCkKLSNlbmRpZgotCiAjaWZkZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgaW50CiB3aW4zMl9nZXRfcmVwYXJzZV90YWcoSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlLCBVTE9ORyAqcmVwYXJzZV90YWcpCiB7Ci0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CisgICAgY2hhciB0YXJnZXRfYnVmZmVyW19QeV9NQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07CisgICAgX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKIAogICAgIGlmICgwID09IERldmljZUlvQ29udHJvbCgKQEAgLTExNTksNyArMTI0Myw3IEBACiAgICAgZm9yIChlID0gX3dlbnZpcm9uOyAqZSAhPSBOVUxMOyBlKyspIHsKICAgICAgICAgUHlPYmplY3QgKms7CiAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICB3Y2hhcl90ICpwID0gd2NzY2hyKCplLCBMJz0nKTsKKyAgICAgICAgY29uc3Qgd2NoYXJfdCAqcCA9IHdjc2NocigqZSwgTCc9Jyk7CiAgICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgayA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoKmUsIChQeV9zc2l6ZV90KShwLSplKSk7CkBAIC0xMTg3LDcgKzEyNzEsNyBAQAogICAgIGZvciAoZSA9IGVudmlyb247ICplICE9IE5VTEw7IGUrKykgewogICAgICAgICBQeU9iamVjdCAqazsKICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgIGNoYXIgKnAgPSBzdHJjaHIoKmUsICc9Jyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBzdHJjaHIoKmUsICc9Jyk7CiAgICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgayA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKmUsIChpbnQpKHAtKmUpKTsKQEAgLTEyMjIsNyArMTMwNiw3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfZXJyb3IoY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZpbGVuYW1lKQord2luMzJfZXJyb3IoY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCBXZSBzaG91bGQgcGFzcyB0aGUgZnVuY3Rpb24gbmFtZSBhbG9uZyBpbiB0aGUgZnV0dXJlLgogICAgICAgICh3aW5yZWcuYyBhbHNvIHdhbnRzIHRvIHBhc3MgdGhlIGZ1bmN0aW9uIG5hbWUuKQpAQCAtMTIzNyw3ICsxMzIxLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX2Vycm9yX29iamVjdChjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGZpbGVuYW1lKQord2luMzJfZXJyb3Jfb2JqZWN0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCiB7CiAgICAgLyogWFhYIC0gc2VlIHdpbjMyX2Vycm9yIGZvciBjb21tZW50cyBvbiAnZnVuY3Rpb24nICovCiAgICAgZXJybm8gPSBHZXRMYXN0RXJyb3IoKTsKQEAgLTEyNTMsMjcgKzEzMzcsMzcgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wYXRoX2Vycm9yKHBhdGhfdCAqcGF0aCkKK3BhdGhfb2JqZWN0X2Vycm9yKFB5T2JqZWN0ICpwYXRoKQogewogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcGF0aC0+b2JqZWN0KTsKKyAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoCisgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgMCwgcGF0aCk7CiAjZWxzZQotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aC0+b2JqZWN0KTsKKyAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHBhdGgpOwogI2VuZGlmCiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX29iamVjdF9lcnJvcjIoUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICpwYXRoMikKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0cygKKyAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLCAwLCBwYXRoLCBwYXRoMik7CisjZWxzZQorICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3RzKFB5RXhjX09TRXJyb3IsIHBhdGgsIHBhdGgyKTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorcGF0aF9lcnJvcihwYXRoX3QgKnBhdGgpCit7CisgICAgcmV0dXJuIHBhdGhfb2JqZWN0X2Vycm9yKHBhdGgtPm9iamVjdCk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwYXRoX2Vycm9yMihwYXRoX3QgKnBhdGgsIHBhdGhfdCAqcGF0aDIpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdHMoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgIDAsIHBhdGgtPm9iamVjdCwgcGF0aDItPm9iamVjdCk7Ci0jZWxzZQotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3RzKFB5RXhjX09TRXJyb3IsCi0gICAgICAgIHBhdGgtPm9iamVjdCwgcGF0aDItPm9iamVjdCk7Ci0jZW5kaWYKKyAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3IyKHBhdGgtPm9iamVjdCwgcGF0aDItPm9iamVjdCk7CiB9CiAKIApAQCAtMTI5Nyw5ICsxMzkxLDYgQEAKICAgICBpbnQgcmVzOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC0xMzIwLDMxICsxNDExLDYgQEAKICAgIGl0IGFsc28gbmVlZHMgdG8gc2V0ICJtYWdpYyIgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluZGljYXRpbmcKICAgIHRoZSBwZXItZHJpdmUgY3VycmVudCBkaXJlY3RvcnksIHdoaWNoIGFyZSBvZiB0aGUgZm9ybSA9PGRyaXZlPjogKi8KIHN0YXRpYyBCT09MIF9fc3RkY2FsbAotd2luMzJfY2hkaXIoTFBDU1RSIHBhdGgpCi17Ci0gICAgY2hhciBuZXdfcGF0aFtNQVhfUEFUSF07Ci0gICAgaW50IHJlc3VsdDsKLSAgICBjaGFyIGVudls0XSA9ICI9eDoiOwotCi0gICAgaWYoIVNldEN1cnJlbnREaXJlY3RvcnlBKHBhdGgpKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgcmVzdWx0ID0gR2V0Q3VycmVudERpcmVjdG9yeUEoUHlfQVJSQVlfTEVOR1RIKG5ld19wYXRoKSwgbmV3X3BhdGgpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgLyogSW4gdGhlIEFOU0kgQVBJLCB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBwYXRocyBsb25nZXIKLSAgICAgICB0aGFuIE1BWF9QQVRILTEgKG5vdCBpbmNsdWRpbmcgdGhlIGZpbmFsIG51bGwgY2hhcmFjdGVyKS4gKi8KLSAgICBhc3NlcnQocmVzdWx0IDwgUHlfQVJSQVlfTEVOR1RIKG5ld19wYXRoKSk7Ci0gICAgaWYgKHN0cm5jbXAobmV3X3BhdGgsICJcXFxcIiwgMikgPT0gMCB8fAotICAgICAgICBzdHJuY21wKG5ld19wYXRoLCAiLy8iLCAyKSA9PSAwKQotICAgICAgICAvKiBVTkMgcGF0aCwgbm90aGluZyB0byBkby4gKi8KLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgZW52WzFdID0gbmV3X3BhdGhbMF07Ci0gICAgcmV0dXJuIFNldEVudmlyb25tZW50VmFyaWFibGVBKGVudiwgbmV3X3BhdGgpOwotfQotCi0vKiBUaGUgVW5pY29kZSB2ZXJzaW9uIGRpZmZlcnMgZnJvbSB0aGUgQU5TSSB2ZXJzaW9uCi0gICBzaW5jZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgbWlnaHQgZXhjZWVkIE1BWF9QQVRIIGNoYXJhY3RlcnMgKi8KLXN0YXRpYyBCT09MIF9fc3RkY2FsbAogd2luMzJfd2NoZGlyKExQQ1dTVFIgcGF0aCkKIHsKICAgICB3Y2hhcl90IHBhdGhfYnVmW01BWF9QQVRIXSwgKm5ld19wYXRoID0gcGF0aF9idWY7CkBAIC0xMzkwLDMzICsxNDU2LDEwIEBACiAjZGVmaW5lIEhBVkVfU1RBVF9OU0VDIDEKICNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMgMQogCi1zdGF0aWMgQk9PTAotYXR0cmlidXRlc19mcm9tX2RpcihMUENTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKLXsKLSAgICBIQU5ETEUgaEZpbmRGaWxlOwotICAgIFdJTjMyX0ZJTkRfREFUQUEgRmlsZURhdGE7Ci0gICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZUEocHN6RmlsZSwgJkZpbGVEYXRhKTsKLSAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOwotICAgICpyZXBhcnNlX3RhZyA9IDA7Ci0gICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXM7Ci0gICAgaW5mby0+ZnRDcmVhdGlvblRpbWUgICA9IEZpbGVEYXRhLmZ0Q3JlYXRpb25UaW1lOwotICAgIGluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUgPSBGaWxlRGF0YS5mdExhc3RBY2Nlc3NUaW1lOwotICAgIGluZm8tPmZ0TGFzdFdyaXRlVGltZSAgPSBGaWxlRGF0YS5mdExhc3RXcml0ZVRpbWU7Ci0gICAgaW5mby0+bkZpbGVTaXplSGlnaCAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgaW5mby0+bkZpbGVTaXplTG93ICAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUxvdzsKLS8qICBpbmZvLT5uTnVtYmVyT2ZMaW5rcyAgID0gMTsgKi8KLSAgICBpZiAoRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpCi0gICAgICAgICpyZXBhcnNlX3RhZyA9IEZpbGVEYXRhLmR3UmVzZXJ2ZWQwOwotICAgIHJldHVybiBUUlVFOwotfQotCiBzdGF0aWMgdm9pZAotZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyAqcmVwYXJzZV90YWcpCitmaW5kX2RhdGFfdG9fZmlsZV9pbmZvKFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgIFVMT05HICpyZXBhcnNlX3RhZykKIHsKICAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7CiAgICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IHBGaWxlRGF0YS0+ZHdGaWxlQXR0cmlidXRlczsKQEAgLTE0MzMsNyArMTQ3Niw3IEBACiB9CiAKIHN0YXRpYyBCT09MCi1hdHRyaWJ1dGVzX2Zyb21fZGlyX3coTFBDV1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQorYXR0cmlidXRlc19mcm9tX2RpcihMUENXU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCiB7CiAgICAgSEFORExFIGhGaW5kRmlsZTsKICAgICBXSU4zMl9GSU5EX0RBVEFXIEZpbGVEYXRhOwpAQCAtMTQ0MSw3ICsxNDg0LDcgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KCZGaWxlRGF0YSwgaW5mbywgcmVwYXJzZV90YWcpOworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm8oJkZpbGVEYXRhLCBpbmZvLCByZXBhcnNlX3RhZyk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTE0NTgsNyArMTUwMSw3IEBACiAgICAgaWYoIWJ1Zl9zaXplKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgYnVmX3NpemUrMSk7CisgICAgYnVmID0gKHdjaGFyX3QgKilQeU1lbV9SYXdNYWxsb2MoKGJ1Zl9zaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghYnVmKSB7CiAgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9PVVRPRk1FTU9SWSk7CiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTE0NjgsMTIgKzE1MTEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKIAogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCiAgICAgaWYoIUNsb3NlSGFuZGxlKGhkbCkpIHsKLSAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTE0ODQsMTAgKzE1MjcsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAotICAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpOwotc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCit3aW4zMl94c3RhdF9pbXBsKGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICBpbnQgY29kZTsKQEAgLTE0OTUsOSArMTUzNSw5IEBACiAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKICAgICBVTE9ORyByZXBhcnNlX3RhZyA9IDA7CiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7Ci0gICAgY29uc3QgY2hhciAqZG90OworICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKIAotICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEoCisgICAgaEZpbGUgPSBDcmVhdGVGaWxlVygKICAgICAgICAgcGF0aCwKICAgICAgICAgRklMRV9SRUFEX0FUVFJJQlVURVMsIC8qIGRlc2lyZWQgYWNjZXNzICovCiAgICAgICAgIDAsIC8qIHNoYXJlIG1vZGUgKi8KQEAgLTE1NDgsOTggKzE1ODgsNiBAQAogICAgICAgICAgICAgaWYgKHRyYXZlcnNlKSB7CiAgICAgICAgICAgICAgICAgLyogSW4gb3JkZXIgdG8gY2FsbCBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgd2UgbmVlZCB0byBvcGVuCiAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgd2l0aG91dCB0aGUgcmVwYXJzZSBoYW5kbGluZyBmbGFnIHNldC4gKi8KLSAgICAgICAgICAgICAgICBoRmlsZTIgPSBDcmVhdGVGaWxlQSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCBGSUxFX1NIQVJFX1JFQUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMfEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICAgICAgaWYgKGhGaWxlMiA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICAgICAgaWYgKCFnZXRfdGFyZ2V0X3BhdGgoaEZpbGUyLCAmdGFyZ2V0X3BhdGgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgICAgICBjb2RlID0gd2luMzJfeHN0YXRfaW1wbF93KHRhcmdldF9wYXRoLCByZXN1bHQsIEZBTFNFKTsKLSAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7Ci0gICAgfQotICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKLQotICAgIC8qIFNldCBTX0lFWEVDIGlmIGl0IGlzIGFuIC5leGUsIC5iYXQsIC4uLiAqLwotICAgIGRvdCA9IHN0cnJjaHIocGF0aCwgJy4nKTsKLSAgICBpZiAoZG90KSB7Ci0gICAgICAgIGlmIChzdHJpY21wKGRvdCwgIi5iYXQiKSA9PSAwIHx8IHN0cmljbXAoZG90LCAiLmNtZCIpID09IDAgfHwKLSAgICAgICAgICAgIHN0cmljbXAoZG90LCAiLmV4ZSIpID09IDAgfHwgc3RyaWNtcChkb3QsICIuY29tIikgPT0gMCkKLSAgICAgICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSAwMTExOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKQotewotICAgIGludCBjb2RlOwotICAgIEhBTkRMRSBoRmlsZSwgaEZpbGUyOwotICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87Ci0gICAgVUxPTkcgcmVwYXJzZV90YWcgPSAwOwotICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwotICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKLQotICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcoCi0gICAgICAgIHBhdGgsCi0gICAgICAgIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwotICAgICAgICAwLCAvKiBzaGFyZSBtb2RlICovCi0gICAgICAgIE5VTEwsIC8qIHNlY3VyaXR5IGF0dHJpYnV0ZXMgKi8KLSAgICAgICAgT1BFTl9FWElTVElORywKLSAgICAgICAgLyogRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MgaXMgcmVxdWlyZWQgdG8gb3BlbiBhIGRpcmVjdG9yeSAqLwotICAgICAgICAvKiBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5UIGRvZXMgbm90IGZvbGxvdyB0aGUgc3ltbGluay4KLSAgICAgICAgICAgQmVjYXVzZSBvZiB0aGlzLCBjYWxscyBsaWtlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3aWxsIHJldHVybgotICAgICAgICAgICB0aGUgc3ltbGluayBwYXRoIGFnYWluIGFuZCBub3QgdGhlIGFjdHVhbCBmaW5hbCBwYXRoLiAqLwotICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUx8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1N8Ci0gICAgICAgICAgICBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5ULAotICAgICAgICBOVUxMKTsKLQotICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAvKiBFaXRoZXIgdGhlIHRhcmdldCBkb2Vzbid0IGV4aXN0LCBvciB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0bwotICAgICAgICAgICBnZXQgYSBoYW5kbGUgdG8gaXQuIElmIHRoZSBmb3JtZXIsIHdlIG5lZWQgdG8gcmV0dXJuIGFuIGVycm9yLgotICAgICAgICAgICBJZiB0aGUgbGF0dGVyLCB3ZSBjYW4gdXNlIGF0dHJpYnV0ZXNfZnJvbV9kaXIuICovCi0gICAgICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBpZiAobGFzdEVycm9yICE9IEVSUk9SX0FDQ0VTU19ERU5JRUQgJiYKLSAgICAgICAgICAgIGxhc3RFcnJvciAhPSBFUlJPUl9TSEFSSU5HX1ZJT0xBVElPTikKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgLyogQ291bGQgbm90IGdldCBhdHRyaWJ1dGVzIG9uIG9wZW4gZmlsZS4gRmFsbCBiYWNrIHRvCi0gICAgICAgICAgIHJlYWRpbmcgdGhlIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVzX2Zyb21fZGlyX3cocGF0aCwgJmluZm8sICZyZXBhcnNlX3RhZykpCi0gICAgICAgICAgICAvKiBWZXJ5IHN0cmFuZ2UuIFRoaXMgc2hvdWxkIG5vdCBmYWlsIG5vdyAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkgewotICAgICAgICAgICAgaWYgKHRyYXZlcnNlKSB7Ci0gICAgICAgICAgICAgICAgLyogU2hvdWxkIHRyYXZlcnNlLCBidXQgY291bGQgbm90IG9wZW4gcmVwYXJzZSBwb2ludCBoYW5kbGUgKi8KLSAgICAgICAgICAgICAgICBTZXRMYXN0RXJyb3IobGFzdEVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhGaWxlLCAmaW5mbykpIHsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkgewotICAgICAgICAgICAgaWYgKCF3aW4zMl9nZXRfcmVwYXJzZV90YWcoaEZpbGUsICZyZXBhcnNlX3RhZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICAvKiBDbG9zZSB0aGUgb3V0ZXIgb3BlbiBmaWxlIGhhbmRsZSBub3cgdGhhdCB3ZSdyZSBhYm91dCB0bwotICAgICAgICAgICAgICAgcmVvcGVuIGl0IHdpdGggZGlmZmVyZW50IGZsYWdzLiAqLwotICAgICAgICAgICAgaWYgKCFDbG9zZUhhbmRsZShoRmlsZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICBpZiAodHJhdmVyc2UpIHsKLSAgICAgICAgICAgICAgICAvKiBJbiBvcmRlciB0byBjYWxsIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3ZSBuZWVkIHRvIG9wZW4KLSAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSB3aXRob3V0IHRoZSByZXBhcnNlIGhhbmRsaW5nIGZsYWcgc2V0LiAqLwogICAgICAgICAgICAgICAgIGhGaWxlMiA9IENyZWF0ZUZpbGVXKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgRklMRV9SRUFEX0FUVFJJQlVURVMsIEZJTEVfU0hBUkVfUkVBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCkBAIC0xNjUxLDggKzE1OTksOCBAQAogICAgICAgICAgICAgICAgIGlmICghZ2V0X3RhcmdldF9wYXRoKGhGaWxlMiwgJnRhcmdldF9wYXRoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgICAgICAgICAgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGxfdyh0YXJnZXRfcGF0aCwgcmVzdWx0LCBGQUxTRSk7Ci0gICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh0YXJnZXRfcGF0aCk7CisgICAgICAgICAgICAgICAgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGwodGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUodGFyZ2V0X3BhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAgLTE2NzEsNyArMTYxOSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKK3dpbjMyX3hzdGF0KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xNjc5LDE2ICsxNjI3LDYgQEAKICAgICBlcnJubyA9IDA7CiAgICAgcmV0dXJuIGNvZGU7CiB9Ci0KLXN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQotewotICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgotICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KLSAgICBpbnQgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGxfdyhwYXRoLCByZXN1bHQsIHRyYXZlcnNlKTsKLSAgICBlcnJubyA9IDA7Ci0gICAgcmV0dXJuIGNvZGU7Ci19CiAvKiBBYm91dCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogd2luMzJfbHN0YXRfdywgd2luMzJfc3RhdCwgd2luMzJfc3RhdF93CiAKICAgIEluIFBvc2l4LCBzdGF0IGF1dG9tYXRpY2FsbHkgdHJhdmVyc2VzIHN5bWxpbmtzIGFuZCByZXR1cm5zIHRoZSBzdGF0CkBAIC0xNjk4LDM0ICsxNjM2LDIwIEBACiAKICAgIFRoZXJlZm9yZSwgd2luMzJfbHN0YXQgd2lsbCBnZXQgdGhlIGF0dHJpYnV0ZXMgdHJhZGl0aW9uYWxseSwgYW5kCiAgICB3aW4zMl9zdGF0IHdpbGwgZmlyc3QgZXhwbGljaXRseSByZXNvbHZlIHRoZSBzeW1saW5rIHRhcmdldCBhbmQgdGhlbiB3aWxsCi0gICBjYWxsIHdpbjMyX2xzdGF0IG9uIHRoYXQgcmVzdWx0LgotCi0gICBUaGUgX3cgcmVwcmVzZW50IFVuaWNvZGUgZXF1aXZhbGVudHMgb2YgdGhlIGFmb3JlbWVudGlvbmVkIEFOU0kgZnVuY3Rpb25zLiAqLworICAgY2FsbCB3aW4zMl9sc3RhdCBvbiB0aGF0IHJlc3VsdC4gKi8KIAogc3RhdGljIGludAotd2luMzJfbHN0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQord2luMzJfbHN0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdChwYXRoLCByZXN1bHQsIEZBTFNFKTsKIH0KIAogc3RhdGljIGludAotd2luMzJfbHN0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCi17Ci0gICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBGQUxTRSk7Ci19Ci0KLXN0YXRpYyBpbnQKLXdpbjMyX3N0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQord2luMzJfc3RhdChjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgVFJVRSk7CiB9CiAKLXN0YXRpYyBpbnQKLXdpbjMyX3N0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCi17Ci0gICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBUUlVFKTsKLX0KLQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKQEAgLTIwMDcsNyArMTkzMSw3IEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAwLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3QtPnN0X21vZGUpKTsKICNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXN0LT5zdF9pbm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzdC0+c3RfaW5vKSk7CiAjZWxzZQogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMSwgUHlMb25nX0Zyb21Mb25nKChsb25nKXN0LT5zdF9pbm8pKTsKICNlbmRpZgpAQCAtMjAyNiw3ICsxOTUwLDcgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc3QtPnN0X3NpemUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzdC0+c3Rfc2l6ZSkpOwogI2Vsc2UKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsIFB5TG9uZ19Gcm9tTG9uZyhzdC0+c3Rfc2l6ZSkpOwogI2VuZGlmCkBAIC0yMTA2LDcgKzIwMzAsNyBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kb19zdGF0KGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwKK3Bvc2l4X2RvX3N0YXQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQogewogICAgIFNUUlVDVF9TVEFUIHN0OwpAQCAtMjEyNSwyOCArMjA0OSwyNiBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCiAgICAgICAgIHJlc3VsdCA9IEZTVEFUKHBhdGgtPmZkLCAmc3QpOwotICAgIGVsc2UKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpIHsKLSAgICAgICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXRfdyhwYXRoLT53aWRlLCAmc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgtPndpZGUsICZzdCk7Ci0gICAgfQorICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdChwYXRoLT53aWRlLCAmc3QpOwogICAgIGVsc2UKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9MU1RBVCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdChwYXRoLT53aWRlLCAmc3QpOworI2Vsc2UKKyAgICBlbHNlCisjaWYgZGVmaW5lZChIQVZFX0xTVEFUKQogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCiAgICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgtPm5hcnJvdywgJnN0KTsKICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0xTVEFUICovCiAjaWZkZWYgSEFWRV9GU1RBVEFUCiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgIHJlc3VsdCA9IGZzdGF0YXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csICZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GU1RBVEFUICovCiAgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CkBAIC0yNDI2LDggKzIzNDgsOCBAQAogICAgIHR5cGUgPSAnaWRfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9QSUQgIicKIAotY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCitjbGFzcyBpbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9JTlRQVFIgIicKIAogY2xhc3MgUHlfb2ZmX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgpAQCAtMjQ1NCw3ICsyMzc2LDcgQEAKICAgICBpbXBsX2J5X3JlZmVyZW5jZSA9IFRydWU7CiAKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFmZmU2ODMxNmYxNjA0MDFdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTQxOGZjZTBlMDExNDQ0NjFdKi8KIAogLypbY2xpbmljIGlucHV0XQogCkBAIC0yNTgyLDEwICsyNTA0LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUgIT0gTlVMTCkKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKKyAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICAvKgpAQCAtMjcwOSwxMSArMjYyOCw4IEBACiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICByZXN1bHQgPSB3aW4zMl93Y2hkaXIocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KKyAgICAvKiBvbiB1bml4LCBzdWNjZXNzID0gMCwgb24gd2luZG93cywgc3VjY2VzcyA9ICEwICovCisgICAgcmVzdWx0ID0gIXdpbjMyX3djaGRpcihwYXRoLT53aWRlKTsKICNlbHNlCiAjaWZkZWYgSEFWRV9GQ0hESVIKICAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCkBAIC0yODA4LDEwICsyNzI0LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CisgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKICAgICBpZiAoYXR0ciA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgcmVzdWx0ID0gMDsKICAgICBlbHNlIHsKQEAgLTI4MTksMTAgKzI3MzIsNyBAQAogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUsIGF0dHIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93LCBhdHRyKTsKKyAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUsIGF0dHIpOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC0zMzE4LDEyICszMjI4LDIyIEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRvIHsKICAgICAgICAgYnVmbGVuICs9IGNodW5rOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKGJ1ZmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIHRtcGJ1ZiA9IFB5TWVtX1Jhd1JlYWxsb2MoYnVmLCBidWZsZW4pOwogICAgICAgICBpZiAodG1wYnVmID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBidWYgPSB0bXBidWY7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBjd2QgPSBnZXRjd2QoYnVmLCAoaW50KWJ1Zmxlbik7CisjZWxzZQogICAgICAgICBjd2QgPSBnZXRjd2QoYnVmLCBidWZsZW4pOworI2VuZGlmCiAgICAgfSB3aGlsZSAoY3dkID09IE5VTEwgJiYgZXJybm8gPT0gRVJBTkdFKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC0zNDA1LDcgKzMzMjUsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmMDBmNjAwN2ZkNTI2OWEgaW5wdXQ9YjAwOTVlYmJjYmFhN2UwNF0qLwogewogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBCT09MIHJlc3VsdDsKKyAgICBCT09MIHJlc3VsdCA9IEZBTFNFOwogI2Vsc2UKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCkBAIC0zNDE3LDE4ICszMzM3LDE4IEBACiAgICAgfQogI2VuZGlmCiAKKyNpZm5kZWYgTVNfV0lORE9XUwogICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcmMtPndpZGUpCiAgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC0zNDQzLDEzICszMzYzLDEzIEBACiAgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QtPm5hcnJvdywKICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IEFUX1NZTUxJTktfRk9MTE9XIDogMCk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MSU5LQVQgKi8KICAgICAgICAgcmVzdWx0ID0gbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwotI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CkBAIC0zNDYzLDk5ICszMzgzLDM5IEBACiAgICAgUHlPYmplY3QgKnY7CiAgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogICAgIEJPT0wgcmVzdWx0OwotICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKLSAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCi0gICAgY2hhciAqYnVmcHRyID0gbmFtZWJ1ZjsKKyAgICB3Y2hhcl90IG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCiAgICAgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlfQVJSQVlfTEVOR1RIKG5hbWVidWYpLTQ7Ci0gICAgUHlPYmplY3QgKnBvID0gTlVMTDsKICAgICB3Y2hhcl90ICp3bmFtZWJ1ZiA9IE5VTEw7CiAKLSAgICBpZiAoIXBhdGgtPm5hcnJvdykgewotICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKLSAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOworICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOworICAgIGNvbnN0IHdjaGFyX3QgKnBvX3djaGFyczsKIAotICAgICAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLwotICAgICAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKLSAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb193Y2hhcnMgPSBwYXRoLT53aWRlOwotICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgtPndpZGUpOwotICAgICAgICB9Ci0gICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwotICAgICAgICB3bmFtZWJ1ZiA9IFB5TWVtX05ldyh3Y2hhcl90LCBsZW4gKyA1KTsKLSAgICAgICAgaWYgKCF3bmFtZWJ1ZikgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7Ci0gICAgICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKLSAgICAgICAgICAgIGlmICh3Y2ggIT0gU0VQICYmIHdjaCAhPSBBTFRTRVAgJiYgd2NoICE9IEwnOicpCi0gICAgICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gU0VQOwotICAgICAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgLyogU2tpcCBvdmVyIC4gYW5kIC4uICovCi0gICAgICAgICAgICBpZiAod2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLiIpICE9IDAgJiYKLSAgICAgICAgICAgICAgICB3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuLiIpICE9IDApIHsKLSAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICByZXN1bHQgPSBGaW5kTmV4dEZpbGVXKGhGaW5kRmlsZSwgJndGaWxlRGF0YSk7Ci0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgotICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgfQotICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7Ci0KKyAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwb193Y2hhcnMgPSBMIi4iOworICAgICAgICBsZW4gPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIHBvX3djaGFycyA9IHBhdGgtPndpZGU7CisgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLT53aWRlKTsKKyAgICB9CisgICAgLyogVGhlICs1IGlzIHNvIHdlIGNhbiBhcHBlbmQgIlxcKi4qXDAiICovCisgICAgd25hbWVidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgbGVuICsgNSk7CisgICAgaWYgKCF3bmFtZWJ1ZikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLT5uYXJyb3cpOwotICAgIGxlbiA9IHBhdGgtPmxlbmd0aDsKKyAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7CiAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgY2hhciBjaCA9IG5hbWVidWZbbGVuLTFdOwotICAgICAgICBpZiAoY2ggIT0gJ1xcJyAmJiBjaCAhPSAnLycgJiYgY2ggIT0gJzonKQotICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSAnXFwnOwotICAgICAgICBzdHJjcHkobmFtZWJ1ZiArIGxlbiwgIiouKiIpOworICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKKyAgICAgICAgaWYgKHdjaCAhPSBTRVAgJiYgd2NoICE9IEFMVFNFUCAmJiB3Y2ggIT0gTCc6JykKKyAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IFNFUDsKKyAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwogICAgIH0KLQotICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlKG5hbWVidWYsICZGaWxlRGF0YSk7CisgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKQEAgLTM1NjcsOSArMzQyNywxMyBAQAogICAgIH0KICAgICBkbyB7CiAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwotICAgICAgICBpZiAoc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4iKSAhPSAwICYmCi0gICAgICAgICAgICBzdHJjbXAoRmlsZURhdGEuY0ZpbGVOYW1lLCAiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nKEZpbGVEYXRhLmNGaWxlTmFtZSk7CisgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgorICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgIGlmIChwYXRoLT5uYXJyb3cgJiYgdikgeworICAgICAgICAgICAgICAgIFB5X1NFVFJFRih2LCBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHYpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CkBAIC0zNTg0LDcgKzM0NDgsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICB9CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlKGhGaW5kRmlsZSwgJkZpbGVEYXRhKTsKKyAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlVyhoRmluZEZpbGUsICZ3RmlsZURhdGEpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCkBAIC0zNjM5LDcgKzM1MDMsNyBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICAgaWYgKHBhdGgtPm5hcnJvdykgewogICAgICAgICAgICAgbmFtZSA9IHBhdGgtPm5hcnJvdzsKICAgICAgICAgICAgIC8qIG9ubHkgcmV0dXJuIGJ5dGVzIGlmIHRoZXkgc3BlY2lmaWVkIGEgYnl0ZXMgb2JqZWN0ICovCkBAIC0zNzY1LDQxICszNjI5LDI5IEBACiBvc19fZ2V0ZnVsbHBhdGhuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiODY3OWQ1Njg0NWJjOWIgaW5wdXQ9MzMyZWQ1MzdjMjlkMGEzZV0qLwogewotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgIHsKLSAgICAgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKLSAgICAgICAgd2NoYXJfdCAqd3RlbXA7Ci0gICAgICAgIERXT1JEIHJlc3VsdDsKLSAgICAgICAgUHlPYmplY3QgKnY7CisgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKKyAgICB3Y2hhcl90ICp3dGVtcDsKKyAgICBEV09SRCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnY7CiAKLSAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwotICAgICAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7Ci0gICAgICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX05ldyh3Y2hhcl90LCByZXN1bHQpOwotICAgICAgICAgICAgaWYgKCF3b3V0YnVmcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKLSAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCi0gICAgICAgICAgICBQeU1lbV9GcmVlKHdvdXRidWZwKTsKLSAgICAgICAgcmV0dXJuIHY7CisgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKKyAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7CisgICAgICAgIHdvdXRidWZwID0gUHlNZW1fTmV3KHdjaGFyX3QsIHJlc3VsdCk7CisgICAgICAgIGlmICghd291dGJ1ZnApCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBvdXRidWZbTUFYX1BBVEhdOwotICAgICAgICBjaGFyICp0ZW1wOwotCi0gICAgICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgtPm5hcnJvdywgUHlfQVJSQVlfTEVOR1RIKG91dGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZSIsIHBhdGgtPm9iamVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKG91dGJ1Zik7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOworICAgICAgICBpZiAocGF0aC0+bmFycm93KQorICAgICAgICAgICAgUHlfU0VUUkVGKHYsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodikpOworICAgIH0gZWxzZQorICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKKyAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7CisgICAgcmV0dXJuIHY7CiB9CiAKIApAQCAtMzgyMSw3ICszNjczLDcgQEAKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXI7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aF93Y2hhcjsKIAogICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOwogICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCkBAIC0zODgzLDEwICszNzM1LDcgQEAKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMzkxMiw3ICszNzYxLDggQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYmRjYmQxMDU5Y2VlZjRjIGlucHV0PTdlYWNhZGM0MGFjYmRhNmJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXIsICptb3VudHBhdGg9TlVMTDsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoX3djaGFyOworICAgIHdjaGFyX3QgKm1vdW50cGF0aD1OVUxMOwogICAgIHNpemVfdCBidWZsZW47CiAgICAgQk9PTCByZXQ7CiAKQEAgLTM5ODMsMTAgKzM4MzMsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLT53aWRlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeUEocGF0aC0+bmFycm93LCBOVUxMKTsKKyAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgtPndpZGUsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKQEAgLTQwMDYsNyArMzg1Myw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQxMTAsNyArMzk1Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW50ZXJuYWxfcmVuYW1lKHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkLCBpbnQgaXNfcmVwbGFjZSkKIHsKLSAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBpc19yZXBsYWNlID8gInJlcGxhY2UiIDogInJlbmFtZSI7CiAgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC00MTI5LDMxICszOTc2LDI4IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy0+d2lkZSwgZHN0LT53aWRlLCBmbGFncyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3csIGZsYWdzKTsKKyAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMtPndpZGUsIGRzdC0+d2lkZSwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKIAogI2Vsc2UKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9SRU5BTUVBVAogICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQogICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKKyAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkKQEAgLTQyMzQsMTEgKzQwNzgsOCBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeUEocGF0aC0+bmFycm93KTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgcmVzdWx0ID0gIVJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDI5MCw3ICs0MTMxLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTBmYzQzN2RkNGYzM2EwIGlucHV0PTg2YTU4NTU0YmE2MDk0YWZdKi8KIHsKICAgICBsb25nIHJlc3VsdDsKLSAgICBjaGFyICpieXRlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZCk7CisgICAgY29uc3QgY2hhciAqYnl0ZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmQpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBzeXN0ZW0oYnl0ZXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC00Mzg0LDExICs0MjI1LDggQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICByZXN1bHQgPSAhUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDU3MCw3ICs0NDA4LDcgQEAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQogCiBzdGF0aWMgaW50Ci11dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCit1dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAjaWZkZWYgSEFWRV9VVElNRU5TQVQKICAgICBpbnQgZmxhZ3MgPSBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVzsKQEAgLTQ2MTIsMTQgKzQ0NTAsMTQgQEAKICAgICAjZGVmaW5lIFBBVEhfVVRJTUVfSEFWRV9GRCAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKQorIyAgZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNlbmRpZgogCi0jZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAotICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQotCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKIAogc3RhdGljIGludAotdXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXQsIGNoYXIgKnBhdGgpCit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDYzNSw3ICs0NDczLDcgQEAKICNpZm5kZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgaW50Ci11dGltZV9kZWZhdWx0KHV0aW1lX3QgKnV0LCBjaGFyICpwYXRoKQordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDc3OCw3ICs0NjE2LDcgQEAKICAgICAgICAgdXRpbWUubm93ID0gMTsKICAgICB9CiAKLSNpZiAhVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmICFkZWZpbmVkKFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCkBAIC00Nzk5LDE0ICs0NjM3LDkgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLT5uYXJyb3csIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgtPndpZGUsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTQ4MzIsNyArNDY2NSw3IEBACiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQogICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgtPm5hcnJvdyk7CiAgICAgZWxzZQpAQCAtNDg5Miw5ICs0NzI1LDE1IEBACiAgICAgcmV0dXJuIE5VTEw7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKKyNpZiBkZWZpbmVkKEhBVkVfV0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKKyNkZWZpbmUgRVhFQ1ZfQ0hBUiB3Y2hhcl90CisjZWxzZQorI2RlZmluZSBFWEVDVl9DSEFSIGNoYXIKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfU1BBV05WKQogc3RhdGljIHZvaWQKLWZyZWVfc3RyaW5nX2FycmF5KGNoYXIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKK2ZyZWVfc3RyaW5nX2FycmF5KEVYRUNWX0NIQVIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCkBAIC00OTAyLDQwICs0NzQxLDQ3IEBACiAgICAgUHlNZW1fREVMKGFycmF5KTsKIH0KIAotc3RhdGljCi1pbnQgZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgY2hhcioqb3V0KQorc3RhdGljIGludAorZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgRVhFQ1ZfQ0hBUiAqKm91dCkKIHsKLSAgICBQeU9iamVjdCAqYnl0ZXM7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpCisgICAgUHlPYmplY3QgKnViOworICAgIGludCByZXN1bHQgPSAwOworI2lmIGRlZmluZWQoSEFWRV9XRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKQorICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihvLCAmdWIpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplKzEpOwotICAgIGlmICghKm91dCkgeworICAgICpvdXQgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh1YiwgJnNpemUpOworICAgIGlmICgqb3V0KQorICAgICAgICByZXN1bHQgPSAxOworI2Vsc2UKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmdWIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh1Yik7CisgICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplICsgMSk7CisgICAgaWYgKCpvdXQpIHsKKyAgICAgICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHViKSwgc2l6ZSArIDEpOworICAgICAgICByZXN1bHQgPSAxOworICAgIH0gZWxzZQogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQXNTdHJpbmcoYnl0ZXMpLCBzaXplKzEpOwotICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodWIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQotc3RhdGljIGNoYXIqKgorc3RhdGljIEVYRUNWX0NIQVIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKLSAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGksIHBvcywgZW52YzsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqdmFscz1OVUxMOwotICAgIFB5T2JqZWN0ICprZXksICp2YWwsICprZXkyLCAqdmFsMjsKLSAgICBjaGFyICpwLCAqaywgKnY7Ci0gICAgc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsLCAqa2V5MiwgKnZhbDIsICprZXl2YWw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAKICAgICBpID0gUHlNYXBwaW5nX1NpemUoZW52KTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGVudmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBpICsgMSk7CisgICAgZW52bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosIGkgKyAxKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDk1OSwyOCArNDgwNSwzNSBAQAogICAgICAgICBpZiAoIWtleSB8fCAhdmFsKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAotICAgICAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKGtleSwgJmtleTIpID09IDApCisjaWYgZGVmaW5lZChIQVZFX1dFWEVDVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihrZXksICZrZXkyKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodmFsLCAmdmFsMikgPT0gMCkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIodmFsLCAmdmFsMikpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkyKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLQotICAgICAgICBrID0gUHlCeXRlc19Bc1N0cmluZyhrZXkyKTsKLSAgICAgICAgdiA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsMik7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoa2V5MikgKyBQeUJ5dGVzX0dFVF9TSVpFKHZhbDIpICsgMjsKLQotICAgICAgICBwID0gUHlNZW1fTkVXKGNoYXIsIGxlbik7Ci0gICAgICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGtleXZhbCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIGtleTIsIHZhbDIpOworI2Vsc2UKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoa2V5LCAma2V5MikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcih2YWwsICZ2YWwyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleTIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbDIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBQeU9TX3NucHJpbnRmKHAsIGxlbiwgIiVzPSVzIiwgaywgdik7Ci0gICAgICAgIGVudmxpc3RbZW52YysrXSA9IHA7CisgICAgICAgIGtleXZhbCA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBQeUJ5dGVzX0FTX1NUUklORyhrZXkyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHZhbDIpKTsKKyNlbmRpZgogICAgICAgICBQeV9ERUNSRUYoa2V5Mik7CiAgICAgICAgIFB5X0RFQ1JFRih2YWwyKTsKKyAgICAgICAgaWYgKCFrZXl2YWwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChrZXl2YWwsICZlbnZsaXN0W2VudmMrK10pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKICAgICB9CiAgICAgUHlfREVDUkVGKHZhbHMpOwogICAgIFB5X0RFQ1JFRihrZXlzKTsKQEAgLTQ5OTIsMTcgKzQ4NDUsMTUgQEAKIGVycm9yOgogICAgIFB5X1hERUNSRUYoa2V5cyk7CiAgICAgUHlfWERFQ1JFRih2YWxzKTsKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyKioKK3N0YXRpYyBFWEVDVl9DSEFSKioKIHBhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCiB7CiAgICAgaW50IGk7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgKmFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDI0LDYgKzQ4NzUsNyBAQAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZgogCiAKQEAgLTUwMzEsNyArNDg4Myw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBvcy5leGVjdgogCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUwNDEsMTcgKzQ4OTMsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMWRjMzRkZWViNWIwMDQgaW5wdXQ9OTYwNDE1NTk5MjVlNTIyOV0qLworb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiNTJmZWMzNGNkMGRhZmQgaW5wdXQ9OWJhYzMxZWZhZTA3ZGFjN10qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYzsKIAogICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CkBAIC01MDY4LDcgKzQ5MTgsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZXhlY3YocGF0aF9jaGFyLCBhcmd2bGlzdCk7CisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICBfd2V4ZWN2KHBhdGgtPndpZGUsIGFyZ3ZsaXN0KTsKKyNlbHNlCisgICAgZXhlY3YocGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCkBAIC01MDk0LDggKzQ5NDgsOCBAQAogb3NfZXhlY3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjlmYThlNGRhOGJkZTU4IGlucHV0PTYyNjgwNGZhMDkyNjA2ZDldKi8KIHsKLSAgICBjaGFyICoqYXJndmxpc3QgPSBOVUxMOwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdCA9IE5VTEw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQpAQCAtNTEyOCwzMCArNDk4MiwzMyBAQAogICAgICAgICBmZXhlY3ZlKHBhdGgtPmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CiAgICAgZWxzZQogI2VuZGlmCisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICAgICAgX3dleGVjdmUocGF0aC0+d2lkZSwgYXJndmxpc3QsIGVudmxpc3QpOworI2Vsc2UKICAgICAgICAgZXhlY3ZlKHBhdGgtPm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworI2VuZGlmCiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAogICAgIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgIGZhaWw6CiAgICAgaWYgKGFyZ3ZsaXN0KQogICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCiAKIAotI2lmZGVmIEhBVkVfU1BBV05WCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCiAvKltjbGluaWMgaW5wdXRdCiBvcy5zcGF3bnYKIAogICAgIG1vZGU6IGludAogICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUxNjEsMjAgKzUwMTgsMTggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzQyN2MwY2U0MGYxMDYzOCBpbnB1dD0wNDJjOTFkZmMxZTZkZWJjXSovCitvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MWNkMDM3YTlkOTZiODE2IGlucHV0PTQzMjI0MjQyMzAzMjkxYmVdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAKICAgICAvKiBzcGF3bnYgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01MTg5LDcgKzUwNDQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KQEAgLTUyMDksNyArNTA2NCwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aF9jaGFyLCBhcmd2bGlzdCk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIEhBVkVfV1NQQVdOVgorICAgIHNwYXdudmFsID0gX3dzcGF3bnYobW9kZSwgcGF0aC0+d2lkZSwgYXJndmxpc3QpOworI2Vsc2UKKyAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CkBAIC01MjI2LDcgKzUwODcsNyBAQAogCiAgICAgbW9kZTogaW50CiAgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTIzOCwxNiArNTA5OSwxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCitvc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYmNmYTVmN2JhMmY0MjE5IGlucHV0PTAyMzYyZmQ5Mzc5NjNmOGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMGZlODViZTU2ZmUzN2FkIGlucHV0PTNlNDA4MDNlZTdjNGM1ODZdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqZW52bGlzdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGksIGVudmM7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKIApAQCAtNTI1NSw3ICs1MTE1LDYgQEAKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKICAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwpAQCAtNTI3NSw3ICs1MTM0LDcgQEAKICAgICAgICAgZ290byBmYWlsXzA7CiAgICAgfQogCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOworICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgYXJnYysxKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGZhaWxfMDsKQEAgLTUyOTksNyArNTE1OCwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBIQVZFX1dTUEFXTlYKKyAgICBzcGF3bnZhbCA9IF93c3Bhd252ZShtb2RlLCBwYXRoLT53aWRlLCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZWxzZQorICAgIHNwYXdudmFsID0gX3NwYXdudmUobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCkBAIC01NzYyLDE0ICs1NjI3LDE0IEBACiAgICAgcGlkOiBwaWRfdAogICAgIC8KIAotUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KK1JldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuCiAKIFRoZSBhZmZpbml0eSBpcyByZXR1cm5lZCBhcyBhIHNldCBvZiBDUFUgaWRlbnRpZmllcnMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PWVhZjE2MTkzNjg3NGI4YTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PTk4M2NlN2NiNGE1NjU5ODBdKi8KIHsKICAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CiAgICAgc2l6ZV90IHNldHNpemU7CkBAIC01OTMwLDcgKzU3OTUsNyBAQAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKG1hc3Rlcl9mZCwgMCwgTlVMTCkgPCAwKQogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwogCi0jaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRDKQorI2lmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVEMpCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgInB0ZW0iKTsgLyogcHVzaCBwdGVtICovCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgImxkdGVybSIpOyAvKiBwdXNoIGxkdGVybSAqLwogI2lmbmRlZiBfX2hwdXgKQEAgLTYwNDIsNiArNTkwNyw3IEBACiAjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KIAogCisjaWZkZWYgSEFWRV9HRVRQSUQKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLmdldHBpZAogCkBAIC02MDU0LDYgKzU5MjAsNyBAQAogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CisjZW5kaWYgLyogSEFWRV9HRVRQSUQgKi8KIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCiAKQEAgLTYyNTUsNyArNjEyMiw3IEBACiBwb3NpeF9pbml0Z3JvdXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqb25hbWU7Ci0gICAgY2hhciAqdXNlcm5hbWU7CisgICAgY29uc3QgY2hhciAqdXNlcm5hbWU7CiAgICAgaW50IHJlczsKICNpZmRlZiBfX0FQUExFX18KICAgICBpbnQgZ2lkOwpAQCAtNzAwMiw3ICs2ODY5LDcgQEAKIC8qIE1TIEMgaGFzIGEgdmFyaWFudCBvZiB3YWl0cGlkKCkgdGhhdCdzIHVzYWJsZSBmb3IgbW9zdCBwdXJwb3Nlcy4gKi8KIC8qW2NsaW5pYyBpbnB1dF0KIG9zLndhaXRwaWQKLSAgICBwaWQ6IFB5X2ludHB0cl90CisgICAgcGlkOiBpbnRwdHJfdAogICAgIG9wdGlvbnM6IGludAogICAgIC8KIApAQCAtNzAxNSwxMSArNjg4MiwxMSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTVmMWNlMDA1YTM0NmIwOSBpbnB1dD00NDRjOGY1MWNjYTViODYyXSovCitvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTgzNmIyMjEyNzFkNTM4IGlucHV0PTQwZjI0NDBjNTE1NDEwZjhdKi8KIHsKICAgICBpbnQgc3RhdHVzOwotICAgIFB5X2ludHB0cl90IHJlczsKKyAgICBpbnRwdHJfdCByZXM7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKICAgICBkbyB7CkBAIC03MTMwLDE2ICs2OTk3LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7CiAgICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOworICAgIGludCBkaXJfZmQ7CiAgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwogCi0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7Ci0gICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICBjb25zdCB3Y2hhcl90ICpwcmludF9uYW1lOwogCiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CiAKQEAgLTcyMDcsMjIgKzcwNzQsMTkgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIC8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpID0gTlVMTDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua0EpKExQU1RSLCBMUFNUUiwgRFdPUkQpID0gTlVMTDsKK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQQ1dTVFIsIExQQ1dTVFIsIERXT1JEKSA9IE5VTEw7CiAKIHN0YXRpYyBpbnQKIGNoZWNrX0NyZWF0ZVN5bWJvbGljTGluayh2b2lkKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CiAgICAgLyogb25seSByZWNoZWNrICovCi0gICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOwotICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKKyAgICByZXR1cm4gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAhPSBOVUxMOwogfQogCiAvKiBSZW1vdmUgdGhlIGxhc3QgcG9ydGlvbiBvZiB0aGUgcGF0aCAqLwpAQCAtNzIzOSwyMCArNzEwMyw2IEBACiAgICAgKnB0ciA9IDA7CiB9CiAKLS8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCi1zdGF0aWMgdm9pZAotX2Rpcm5hbWVBKGNoYXIgKnBhdGgpCi17Ci0gICAgY2hhciAqcHRyOwotCi0gICAgLyogd2FsayB0aGUgcGF0aCBmcm9tIHRoZSBlbmQgdW50aWwgYSBiYWNrc2xhc2ggaXMgZW5jb3VudGVyZWQgKi8KLSAgICBmb3IocHRyID0gcGF0aCArIHN0cmxlbihwYXRoKTsgcHRyICE9IHBhdGg7IHB0ci0tKSB7Ci0gICAgICAgIGlmICgqcHRyID09ICdcXCcgfHwgKnB0ciA9PSAnLycpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgKnB0ciA9IDA7Ci19Ci0KIC8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KIHN0YXRpYyBpbnQKIF9pc19hYnNXKGNvbnN0IFdDSEFSICpwYXRoKQpAQCAtNzI2MSwxNCArNzExMSw2IEBACiAKIH0KIAotLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLwotc3RhdGljIGludAotX2lzX2Fic0EoY29uc3QgY2hhciAqcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aFswXSA9PSAnXFwnIHx8IHBhdGhbMF0gPT0gJy8nIHx8IHBhdGhbMV0gPT0gJzonOwotCi19Ci0KIC8qIGpvaW4gcm9vdCBhbmQgcmVzdCB3aXRoIGEgYmFja3NsYXNoICovCiBzdGF0aWMgdm9pZAogX2pvaW5XKFdDSEFSICpkZXN0X3BhdGgsIGNvbnN0IFdDSEFSICpyb290LCBjb25zdCBXQ0hBUiAqcmVzdCkKQEAgLTcyOTAsMzAgKzcxMzIsOSBAQAogICAgIHdjc2NweShkZXN0X3BhdGgrcm9vdF9sZW4sIHJlc3QpOwogfQogCi0vKiBqb2luIHJvb3QgYW5kIHJlc3Qgd2l0aCBhIGJhY2tzbGFzaCAqLwotc3RhdGljIHZvaWQKLV9qb2luQShjaGFyICpkZXN0X3BhdGgsIGNvbnN0IGNoYXIgKnJvb3QsIGNvbnN0IGNoYXIgKnJlc3QpCi17Ci0gICAgc2l6ZV90IHJvb3RfbGVuOwotCi0gICAgaWYgKF9pc19hYnNBKHJlc3QpKSB7Ci0gICAgICAgIHN0cmNweShkZXN0X3BhdGgsIHJlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcm9vdF9sZW4gPSBzdHJsZW4ocm9vdCk7Ci0KLSAgICBzdHJjcHkoZGVzdF9wYXRoLCByb290KTsKLSAgICBpZihyb290X2xlbikgewotICAgICAgICBkZXN0X3BhdGhbcm9vdF9sZW5dID0gJ1xcJzsKLSAgICAgICAgcm9vdF9sZW4rKzsKLSAgICB9Ci0gICAgc3RyY3B5KGRlc3RfcGF0aCtyb290X2xlbiwgcmVzdCk7Ci19Ci0KIC8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50Ci1fY2hlY2tfZGlyVyhXQ0hBUiAqc3JjLCBXQ0hBUiAqZGVzdCkKK19jaGVja19kaXJXKExQQ1dTVFIgc3JjLCBMUENXU1RSIGRlc3QpCiB7CiAgICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKICAgICBXQ0hBUiBkZXN0X3BhcmVudFtNQVhfUEFUSF07CkBAIC03MzI5LDI1ICs3MTUwLDYgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KLS8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCi1zdGF0aWMgaW50Ci1fY2hlY2tfZGlyQShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCi17Ci0gICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKLSAgICBjaGFyIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKLSAgICBjaGFyIHNyY19yZXNvbHZlZFtNQVhfUEFUSF0gPSAiIjsKLQotICAgIC8qIGRlc3RfcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpICovCi0gICAgc3RyY3B5KGRlc3RfcGFyZW50LCBkZXN0KTsKLSAgICBfZGlybmFtZUEoZGVzdF9wYXJlbnQpOwotICAgIC8qIHNyY19yZXNvbHZlZCA9IG9zLnBhdGguam9pbihkZXN0X3BhcmVudCwgc3JjKSAqLwotICAgIF9qb2luQShzcmNfcmVzb2x2ZWQsIGRlc3RfcGFyZW50LCBzcmMpOwotICAgIHJldHVybiAoCi0gICAgICAgIEdldEZpbGVBdHRyaWJ1dGVzRXhBKHNyY19yZXNvbHZlZCwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmc3JjX2luZm8pCi0gICAgICAgICYmIHNyY19pbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICApOwotfQogI2VuZGlmCiAKIApAQCAtNzQwNywxOCArNzIwOSwxMCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZHN0LT53aWRlKSB7Ci0gICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyVyhzcmMtPndpZGUsIGRzdC0+d2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2RpckEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQorICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KKyAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQpAQCAtNzcyMywxNiArNzUxNywxNSBAQAogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgICAgIGVsc2UKLSNlbmRpZgorICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7CisjZWxzZQogI2lmZGVmIEhBVkVfT1BFTkFUCiAgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCiAgICAgICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOwogICAgICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX09QRU5BVCAqLwogICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOworI2VuZGlmIC8qICFNU19XSU5ET1dTICovCiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzc2Nyw4ICs3NTYwLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZmU0ZTkzNjAyODIyYzE0IGlucHV0PTJiYzQyNDUxY2E1YzMyMjNdKi8KIHsKICAgICBpbnQgcmVzOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KICAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKICAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgpAQCAtNzgwMSw5ICs3NTkyLDggQEAKICAgICBpbnQgaTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGZvciAoaSA9IGZkX2xvdzsgaSA8IGZkX2hpZ2g7IGkrKykKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChpKSkKLSAgICAgICAgICAgIGNsb3NlKGkpOworICAgIGZvciAoaSA9IFB5X01BWChmZF9sb3csIDApOyBpIDwgZmRfaGlnaDsgaSsrKQorICAgICAgICBjbG9zZShpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC03ODQ3LDcgKzc2MzcsNyBAQAogICAgIGludCBkdXAzX3dvcmtzID0gLTE7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkX2R1cDIoZmQsIGZkMikpCisgICAgaWYgKGZkIDwgMCB8fCBmZDIgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIC8qIGR1cDIoKSBjYW4gZmFpbCB3aXRoIEVJTlRSIGlmIHRoZSB0YXJnZXQgRkQgaXMgYWxyZWFkeSBvcGVuLCBiZWNhdXNlIGl0CkBAIC03OTcxLDEwICs3NzYxLDYgQEAKIHsKICAgICBQeV9vZmZfdCByZXN1bHQ7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICNpZmRlZiBTRUVLX1NFVAogICAgIC8qIFR1cm4gMCwgMSwgMiBpbnRvIFNFRUtfe1NFVCxDVVIsRU5EfSAqLwogICAgIHN3aXRjaCAoaG93KSB7CkBAIC03OTg3LDEwICs3NzczLDYgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04MTk4LDEwICs3OTgwLDYgQEAKICAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQogCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC04MzY0LDcgKzgxNDIsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpT246c2VuZGZpbGUiLAogICAgICAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgJm9mZm9iaiwgJmNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICBpZiAob2Zmb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtODQ0NCw4ICs4MjIyLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTQ4YzhiNGU2NDRjYTAwIGlucHV0PTA4Y2U5NGFhMWVhZjdiNWVdKi8KIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJldHVybl92YWx1ZSA9IGlzYXR0eShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg0ODQsOCArODI2MCw4IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIG9rID0gQ3JlYXRlUGlwZSgmcmVhZCwgJndyaXRlLCAmYXR0ciwgMCk7CiAgICAgaWYgKG9rKSB7Ci0gICAgICAgIGZkc1swXSA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgX09fUkRPTkxZKTsKLSAgICAgICAgZmRzWzFdID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdCl3cml0ZSwgX09fV1JPTkxZKTsKKyAgICAgICAgZmRzWzBdID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClyZWFkLCBfT19SRE9OTFkpOworICAgICAgICBmZHNbMV0gPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXdyaXRlLCBfT19XUk9OTFkpOwogICAgICAgICBpZiAoZmRzWzBdID09IC0xIHx8IGZkc1sxXSA9PSAtMSkgewogICAgICAgICAgICAgQ2xvc2VIYW5kbGUocmVhZCk7CiAgICAgICAgICAgICBDbG9zZUhhbmRsZSh3cml0ZSk7CkBAIC04NjM3LDExICs4NDEzLDYgQEAKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC04ODI0LDkgKzg1OTUsNiBAQAogICAgIGludCByZXN1bHQ7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTg4NzMsMTAgKzg2NDEsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOwotICAgIGVsc2UKLSAgICAgICAgZmQgPSBfb3BlbihwYXRoLT5uYXJyb3csIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7CisgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXN1bHQgPSAtMTsKICAgICBlbHNlIHsKQEAgLTkwMjAsNyArODc4NSw3IEBACiBvc19wdXRlbnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyOWE1NjdkNmIyMzI3ZDIgaW5wdXQ9YmE1ODY1ODFjMmU2MTA1Zl0qLwogewotICAgIHdjaGFyX3QgKmVudjsKKyAgICBjb25zdCB3Y2hhcl90ICplbnY7CiAKICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CkBAIC05MDY2LDggKzg4MzEsOCBAQAogewogICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CiAgICAgY2hhciAqZW52OwotICAgIGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKLSAgICBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBjaGFyICpuYW1lX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcobmFtZSk7CisgICAgY29uc3QgY2hhciAqdmFsdWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyh2YWx1ZSk7CiAKICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBuYW1lX3N0cmluZywgdmFsdWVfc3RyaW5nKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewpAQCAtOTM0NSwxNyArOTExMCwxNyBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX2JzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZnJzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2Jsb2NrcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2Jsb2NrcykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9iZnJlZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JmcmVlKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2JhdmFpbCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JhdmFpbCkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9maWxlcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2ZpbGVzKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2ZmcmVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmZyZWUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfZmF2YWlsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmF2YWlsKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA4LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZmxhZykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX25hbWVtYXgpKTsKICNlbmRpZgpAQCAtOTQ4Niw4ICs5MjUxLDggQEAKICAqIHN1ZmZpY2llbnRseSBwZXJ2YXNpdmUgdGhhdCBpdCdzIG5vdCB3b3J0aCB0aGUgbG9zcyBvZiByZWFkYWJpbGl0eS4KICAqLwogc3RydWN0IGNvbnN0ZGVmIHsKLSAgICBjaGFyICpuYW1lOwotICAgIGxvbmcgdmFsdWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBpbnQgdmFsdWU7CiB9OwogCiBzdGF0aWMgaW50CkBAIC05NDk1LDcgKzkyNjAsMTAgQEAKICAgICAgICAgICAgICAgc2l6ZV90IHRhYmxlc2l6ZSkKIHsKICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgKnZhbHVlcCA9IFB5TG9uZ19BU19MT05HKGFyZyk7CisgICAgICAgIGludCB2YWx1ZSA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKKyAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKnZhbHVlcCA9IHZhbHVlOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC0xMDQ1Niw3ICsxMDIyNCw3IEBACiAKIHN0YXRpYyBpbnQKIHNldHVwX2NvbmZuYW1lX3RhYmxlKHN0cnVjdCBjb25zdGRlZiAqdGFibGUsIHNpemVfdCB0YWJsZXNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCiB7CiAgICAgUHlPYmplY3QgKmQgPSBOVUxMOwogICAgIHNpemVfdCBpOwpAQCAtMTA1MjcsMzEgKzEwMjk1LDggQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLS8qIEFDIDMuNTogY2hhbmdlIHRvIHBhdGhfdD8gYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGV4Y2VwdGlvbnMgKi8KLVB5RG9jX1NUUlZBUih3aW4zMl9zdGFydGZpbGVfX2RvY19fLAotInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuXAotXG5cCi1TdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cblwKLVxuXAotV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG5cCi1kb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG5cCi1hcmd1bWVudCB0byB0aGUgRE9TIFwic3RhcnRcIiBjb21tYW5kOiB0aGUgZmlsZSBpcyBvcGVuZWQgd2l0aCB3aGF0ZXZlclxuXAotYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuXAotV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcblwKLXRoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyBcInByaW50XCIuXG5cCi1cblwKLXN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG5cCi1UaGVyZSBpcyBubyBvcHRpb24gdG8gd2FpdCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGNsb3NlLCBhbmQgbm8gd2F5XG5cCi10byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb24ncyBleGl0IHN0YXR1cy5cblwKLVxuXAotVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuXAotYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcblwKLXRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuIik7Ci0KIC8qIEdyYWIgU2hlbGxFeGVjdXRlIGR5bmFtaWNhbGx5IGZyb20gc2hlbGwzMiAqLwogc3RhdGljIGludCBoYXNfU2hlbGxFeGVjdXRlID0gLTE7Ci1zdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlQSkoSFdORCwgTFBDU1RSLCBMUENTVFIsIExQQ1NUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIsIElOVCk7CiBzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlVykoSFdORCwgTFBDV1NUUiwgTFBDV1NUUiwgTFBDV1NUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSLCBJTlQpOwogc3RhdGljIGludApAQCAtMTA1NjUsMTIgKzEwMzEwLDkgQEAKICAgICAgICAgaFNoZWxsMzIgPSBMb2FkTGlicmFyeVcoTCJTSEVMTDMyIik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChoU2hlbGwzMikgewotICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlQSA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlQSIpOwogICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlVyA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlVyIpOwotICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZUEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TaGVsbEV4ZWN1dGVXOworICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZVcgIT0gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSAwOwogICAgICAgICB9CkBAIC0xMDU3OSwxNiArMTAzMjEsMzYgQEAKIH0KIAogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfc3RhcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb2ZpbGVwYXRoOwotICAgIGNoYXIgKmZpbGVwYXRoOwotICAgIGNoYXIgKm9wZXJhdGlvbiA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqd3BhdGgsICp3b3BlcmF0aW9uOwotICAgIEhJTlNUQU5DRSByYzsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0YXJ0ZmlsZQorICAgIGZpbGVwYXRoOiBwYXRoX3QKKyAgICBvcGVyYXRpb246IFB5X1VOSUNPREUgPSBOVUxMCiAKLSAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOworc3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pCisKK1N0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLgorCitXaGVuICJvcGVyYXRpb24iIGlzIG5vdCBzcGVjaWZpZWQgb3IgIm9wZW4iLCB0aGlzIGFjdHMgbGlrZQorZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhbgorYXJndW1lbnQgdG8gdGhlIERPUyAic3RhcnQiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyCithcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuCitXaGVuIGFub3RoZXIgIm9wZXJhdGlvbiIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGgKK3RoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyAicHJpbnQiLgorCitzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLgorVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheQordG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uJ3MgZXhpdCBzdGF0dXMuCisKK1RoZSBmaWxlcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJZiB5b3Ugd2FudCB0byB1c2UKK2FuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoICgiLyIpOwordGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayBpZiBpdCBpcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MTJjZWJhNzlhY2ZhMWM5IGlucHV0PTYzOTUwYmYyOTg2MzgwZDBdKi8KK3sKKyAgICBISU5TVEFOQ0UgcmM7CiAKICAgICBpZighY2hlY2tfU2hlbGxFeGVjdXRlKCkpIHsKICAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBTaGVsbEV4ZWN1dGUsIHJldHVybiBhCkBAIC0xMDU5Nyw2OCArMTAzNTksMTYgQEAKICAgICAgICAgICAgICJzdGFydGZpbGUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIik7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHM6c3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXBhdGgsICZvcGVyYXRpb24pKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIH0KLQotICAgIGlmIChvcGVyYXRpb24pIHsKLSAgICAgICAgdW9wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG9wZXJhdGlvbiksIE5VTEwpOwotICAgICAgICBpZiAoIXVvcGVyYXRpb24pIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBvcGVyYXRpb24gPSBOVUxMOwotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pcGF0aCk7Ci0gICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIGlmICh1b3BlcmF0aW9uKSB7Ci0gICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVvcGVyYXRpb24pOwotICAgICAgICBpZiAod29wZXJhdGlvbiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBQeV9TaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAorICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfWERFQ1JFRih1b3BlcmF0aW9uKTsKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIHVuaXBhdGgpOworICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi1ub3JtYWw6Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxzOnN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZXJhdGlvbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZmlsZXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlQSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcigic3RhcnRmaWxlIiwgZmlsZXBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKLSAgICAgICAgcmV0dXJuIGVycnZhbDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9maWxlcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIApAQCAtMTA4MjYsNyArMTA1MzYsNyBAQAogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CiAgICAgICAgIHZvaWQgKnB0cjsKICAgICAgICAgc3NpemVfdCByZXN1bHQ7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OworICAgICAgICBzdGF0aWMgY29uc3QgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTEwOTkwLDkgKzEwNzAwLDkgQEAKICAgICBuYW1lID0gcGF0aC0+bmFycm93ID8gcGF0aC0+bmFycm93IDogIi4iOwogCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKLSAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKKyAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKICAgICAgICAgc3NpemVfdCBsZW5ndGg7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwpAQCAtMTEwODMsOCArMTA3OTMsNyBAQAogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkgewogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMjA0LDExICsxMDkxMywxNSBAQAogb3MuY3B1X2NvdW50CiAKIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCisKK1RoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgordXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NwdV9jb3VudF9pbXBsKFB5T2JqZWN0ICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1kNTVlMmY4ZjM4MjNhNjI4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1lN2M4ZjRiYTZkYmJhZGQzXSovCiB7CiAgICAgaW50IG5jcHUgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTExMjUyLDExICsxMDk2NSw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQ0NWUyMGUxNDlhYTViOCBpbnB1dD04OWFjMDA4ZGM5YWI2Yjk1XSovCiB7CiAgICAgaW50IHJldHVybl92YWx1ZTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXR1cm5fdmFsdWUgPSBfUHlfZ2V0X2luaGVyaXRhYmxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTEyNzgsOCArMTA5ODYsNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxYjE5MThhMmYzYzM4YzIgaW5wdXQ9OWNlYWVhZDg3YTFlMjQwMl0qLwogewogICAgIGludCByZXN1bHQ7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCBpbmhlcml0YWJsZSwgTlVMTCk7CkBAIC0xMTI5MywxNSArMTA5OTksMTUgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAvKltjbGluaWMgaW5wdXRdCiBvcy5nZXRfaGFuZGxlX2luaGVyaXRhYmxlIC0+IGJvb2wKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIC8KIAogR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTUzODliMGFhMDkxNmNlIGlucHV0PTVmNzc1OTQ0M2FhZTNkYzVdKi8KK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZiZTVhZmNhNmVhODRkOCBpbnB1dD1jZmU5OWY5YzA1YzcwYWQxXSovCiB7CiAgICAgRFdPUkQgZmxhZ3M7CiAKQEAgLTExMzE2LDcgKzExMDIyLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogb3Muc2V0X2hhbmRsZV9pbmhlcml0YWJsZQotICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBoYW5kbGU6IGludHB0cl90CiAgICAgaW5oZXJpdGFibGU6IGJvb2wKICAgICAvCiAKQEAgLTExMzI0LDkgKzExMDMwLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWU2N2JmYTMyMTNkNzQ1IGlucHV0PWU2NGIyYjI3MzA0NjlkZWZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMjFkNzRmZTZjOTZiYWEzIGlucHV0PTdhNzY0MTM5MGQ4MzY0ZmNdKi8KIHsKICAgICBEV09SRCBmbGFncyA9IGluaGVyaXRhYmxlID8gSEFORExFX0ZMQUdfSU5IRVJJVCA6IDA7CiAgICAgaWYgKCFTZXRIYW5kbGVJbmZvcm1hdGlvbigoSEFORExFKWhhbmRsZSwgSEFORExFX0ZMQUdfSU5IRVJJVCwgZmxhZ3MpKSB7CkBAIC0xMTM1Myw5ICsxMTA1OSw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9ibG9ja2luZyIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMTM3OSw5ICsxMTA4Miw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfYmxvY2tpbmciLCAmZmQsICZibG9ja2luZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZyk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTExNDYyLDQxICsxMTE2MiwyNiBAQAogRGlyRW50cnlfZmV0Y2hfc3RhdChEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcykKIHsKICAgICBpbnQgcmVzdWx0OwotICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgUHlPYmplY3QgKnViOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5wYXRoKTsKLSAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgsICZzdCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgsICZzdCk7Ci0KLSAgICBpZiAocmVzdWx0ICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9GU0RlY29kZXIoc2VsZi0+cGF0aCwgJnViKSkgeworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZSh1Yik7CiAjZWxzZSAvKiBQT1NJWCAqLwotICAgIFB5T2JqZWN0ICpieXRlczsKLSAgICBjaGFyICpwYXRoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoc2VsZi0+cGF0aCwgJmJ5dGVzKSkKKyAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKHNlbGYtPnBhdGgsICZ1YikpIHsKKyAgICAgICAgY29uc3QgY2hhciAqcGF0aCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHViKTsKKyNlbmRpZgorICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLCAmc3QpOworICAgICAgICBQeV9ERUNSRUYodWIpOworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aCwgJnN0KTsKLSAgICBQeV9ERUNSRUYoYnl0ZXMpOwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHNlbGYtPnBhdGgpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBwYXRoX29iamVjdF9lcnJvcihzZWxmLT5wYXRoKTsKIAogICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7CiB9CkBAIC0xMTY2NiwyNSArMTEzNTEsMjcgQEAKIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFzZWxmLT5nb3RfZmlsZV9pbmRleCkgewotICAgICAgICB3Y2hhcl90ICpwYXRoOwotICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXQ7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoOworICAgICAgICBTVFJVQ1RfU1RBVCBzdGF0OworICAgICAgICBpbnQgcmVzdWx0OwogCi0gICAgICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOwotICAgICAgICBpZiAoIXBhdGgpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihzZWxmLT5wYXRoLCAmdW5pY29kZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pY29kZSk7CisgICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgsICZzdGF0KTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogCi0gICAgICAgIGlmICh3aW4zMl9sc3RhdF93KHBhdGgsICZzdGF0KSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3Ioc2VsZi0+cGF0aCk7CiAKICAgICAgICAgc2VsZi0+d2luMzJfZmlsZV9pbmRleCA9IHN0YXQuc3RfaW5vOwogICAgICAgICBzZWxmLT5nb3RfZmlsZV9pbmRleCA9IDE7CiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+d2luMzJfZmlsZV9pbmRleCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzZWxmLT53aW4zMl9maWxlX2luZGV4KTsKICNlbHNlIC8qIFBPU0lYICovCiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+ZF9pbm8pOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc2VsZi0+ZF9pbm8pOwogI2Vsc2UKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXNlbGYtPmRfaW5vKTsKICNlbmRpZgpAQCAtMTE2OTcsNiArMTEzODQsMTMgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxEaXJFbnRyeSAlUj4iLCBzZWxmLT5uYW1lKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2ZzcGF0aChEaXJFbnRyeSAqc2VsZikKK3sKKyAgICBQeV9JTkNSRUYoc2VsZi0+cGF0aCk7CisgICAgcmV0dXJuIHNlbGYtPnBhdGg7Cit9CisKIHN0YXRpYyBQeU1lbWJlckRlZiBEaXJFbnRyeV9tZW1iZXJzW10gPSB7CiAgICAgeyJuYW1lIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBuYW1lKSwgUkVBRE9OTFksCiAgICAgICJ0aGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byBzY2FuZGlyKCkgXCJwYXRoXCIgYXJndW1lbnQifSwKQEAgLTExNzIxLDYgKzExNDE1LDkgQEAKICAgICB7Imlub2RlIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lub2RlLCBNRVRIX05PQVJHUywKICAgICAgInJldHVybiBpbm9kZSBvZiB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiLAogICAgIH0sCisgICAgeyJfX2ZzcGF0aF9fIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2ZzcGF0aCwgTUVUSF9OT0FSR1MsCisgICAgICJyZXR1cm5zIHRoZSBwYXRoIGZvciB0aGUgZW50cnkiLAorICAgIH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xMTc2MCw3ICsxMTQ1Nyw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgd2NoYXJfdCAqCi1qb2luX3BhdGhfZmlsZW5hbWVXKHdjaGFyX3QgKnBhdGhfd2lkZSwgd2NoYXJfdCogZmlsZW5hbWUpCitqb2luX3BhdGhfZmlsZW5hbWVXKGNvbnN0IHdjaGFyX3QgKnBhdGhfd2lkZSwgY29uc3Qgd2NoYXJfdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlfc3NpemVfdCBwYXRoX2xlbjsKICAgICBQeV9zc2l6ZV90IHNpemU7CkBAIC0xMTgxMiw2ICsxMTUwOSwxMSBAQAogICAgIGVudHJ5LT5uYW1lID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhVy0+Y0ZpbGVOYW1lLCAtMSk7CiAgICAgaWYgKCFlbnRyeS0+bmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+bmFtZSwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+bmFtZSkpOworICAgICAgICBpZiAoIWVudHJ5LT5uYW1lKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKICAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZVcocGF0aC0+d2lkZSwgZGF0YVctPmNGaWxlTmFtZSk7CiAgICAgaWYgKCFqb2luZWRfcGF0aCkKQEAgLTExODIxLDggKzExNTIzLDEzIEBACiAgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CiAgICAgaWYgKCFlbnRyeS0+cGF0aCkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+cGF0aCwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+cGF0aCkpOworICAgICAgICBpZiAoIWVudHJ5LT5wYXRoKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKLSAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CisgICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mbyhkYXRhVywgJmZpbGVfaW5mbywgJnJlcGFyc2VfdGFnKTsKICAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmZmlsZV9pbmZvLCByZXBhcnNlX3RhZywgJmVudHJ5LT53aW4zMl9sc3RhdCk7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CkBAIC0xMTgzNSw3ICsxMTU0Miw3IEBACiAjZWxzZSAvKiBQT1NJWCAqLwogCiBzdGF0aWMgY2hhciAqCi1qb2luX3BhdGhfZmlsZW5hbWUoY2hhciAqcGF0aF9uYXJyb3csIGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKK2pvaW5fcGF0aF9maWxlbmFtZShjb25zdCBjaGFyICpwYXRoX25hcnJvdywgY29uc3QgY2hhciogZmlsZW5hbWUsIFB5X3NzaXplX3QgZmlsZW5hbWVfbGVuKQogewogICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CiAgICAgUHlfc3NpemVfdCBzaXplOwpAQCAtMTE4NjcsNyArMTE1NzQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotRGlyRW50cnlfZnJvbV9wb3NpeF9pbmZvKHBhdGhfdCAqcGF0aCwgY2hhciAqbmFtZSwgUHlfc3NpemVfdCBuYW1lX2xlbiwKK0RpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNvbnN0IGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5vX3QgZF9pbm8KICNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKICAgICAgICAgICAgICAgICAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIgZF90eXBlCkBAIC0xMTkzMCw4ICsxMTYzNywxNCBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKIHN0YXRpYyB2b2lkCi1TY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQogewogICAgIEhBTkRMRSBoYW5kbGUgPSBpdGVyYXRvci0+aGFuZGxlOwogCkBAIC0xMTk1MSw3ICsxMTY2NCw3IEBACiAgICAgQk9PTCBzdWNjZXNzOwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMTk4MiwxNCArMTE2OTUsMjAgQEAKICAgICB9CiAKICAgICAvKiBFcnJvciBvciBubyBtb3JlIGZpbGVzICovCi0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOwogICAgIHJldHVybiBOVUxMOwogfQogCiAjZWxzZSAvKiBQT1NJWCAqLwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuICFpdGVyYXRvci0+ZGlycDsKK30KKwogc3RhdGljIHZvaWQKLVNjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCiB7CiAgICAgRElSICpkaXJwID0gaXRlcmF0b3ItPmRpcnA7CiAKQEAgLTEyMDExLDcgKzExNzMwLDcgQEAKICAgICBpbnQgaXNfZG90OwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKCFpdGVyYXRvci0+ZGlycCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyMDQ4LDIxICsxMTc2Nyw3NiBAQAogICAgIH0KIAogICAgIC8qIEVycm9yIG9yIG5vIG1vcmUgZmlsZXMgKi8KLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihpdGVyYXRvcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZgogCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKHNlbGYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfZXhpdChTY2FuZGlySXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9maW5hbGl6ZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgaWYgKCFTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKGl0ZXJhdG9yKSkgeworICAgICAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOworCisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoKFB5T2JqZWN0ICopaXRlcmF0b3IsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIHNjYW5kaXIgaXRlcmF0b3IgJVIiLCBpdGVyYXRvcikpIHsKKyAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgaXRlcmF0b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUHlfQ0xFQVIoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKKyAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCiBzdGF0aWMgdm9pZAogU2NhbmRpckl0ZXJhdG9yX2RlYWxsb2MoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKIHsKLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOwotICAgIFB5X1hERUNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKLSAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKChQeU9iamVjdCAqKWl0ZXJhdG9yKSA8IDApCisgICAgICAgIHJldHVybjsKKwogICAgIFB5X1RZUEUoaXRlcmF0b3IpLT50cF9mcmVlKChQeU9iamVjdCAqKWl0ZXJhdG9yKTsKIH0KIAorc3RhdGljIFB5TWV0aG9kRGVmIFNjYW5kaXJJdGVyYXRvcl9tZXRob2RzW10gPSB7CisgICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pU2NhbmRpckl0ZXJhdG9yX2VudGVyLCBNRVRIX05PQVJHU30sCisgICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbilTY2FuZGlySXRlcmF0b3JfZXhpdCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKVNjYW5kaXJJdGVyYXRvcl9jbG9zZSwgTUVUSF9OT0FSR1N9LAorICAgIHtOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBTY2FuZGlySXRlcmF0b3JUeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgIE1PRE5BTUUgIi5TY2FuZGlySXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0xMjA4NCw3ICsxMTg1OCw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVAorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTEyMDkyLDYgKzExODY3LDI3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKVNjYW5kaXJJdGVyYXRvcl9pdGVybmV4dCwgLyogdHBfaXRlcm5leHQgKi8KKyAgICBTY2FuZGlySXRlcmF0b3JfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3IpU2NhbmRpckl0ZXJhdG9yX2ZpbmFsaXplLCAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIxMDIsNyArMTE4OTgsNyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB3Y2hhcl90ICpwYXRoX3N0clc7CiAjZWxzZQotICAgIGNoYXIgKnBhdGg7CisgICAgY29uc3QgY2hhciAqcGF0aDsKICNlbmRpZgogCiAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9OZXcoU2NhbmRpckl0ZXJhdG9yLCAmU2NhbmRpckl0ZXJhdG9yVHlwZSk7CkBAIC0xMjEyOSwxMSArMTE5MjUsNiBAQAogICAgIFB5X1hJTkNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoaXRlcmF0b3ItPnBhdGgubmFycm93KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAib3Muc2NhbmRpcigpIGRvZXNuJ3Qgc3VwcG9ydCBieXRlcyBwYXRoIG9uIFdpbmRvd3MsIHVzZSBVbmljb2RlIGluc3RlYWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9CiAgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAxOwogCiAgICAgcGF0aF9zdHJXID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhpdGVyYXRvci0+cGF0aC53aWRlLCBMIiouKiIpOwpAQCAtMTIxNzQsNiArMTE5NjUsMTMyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKKyAgICBJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggd2l0aAorICAgIGFuIGluY3JlbWVudGVkIHJlZmNvdW50LiBJZiB0aGUgb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuCisgICAgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhhdCBtZXRob2QuIEFsbCBvdGhlciB0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4KKyovCitQeU9iamVjdCAqCitQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKK3sKKyAgICAvKiBGb3IgZXJyb3IgbWVzc2FnZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGlzIG1hbnVhbGx5IGlubGluZWQgaW4KKyAgICAgICBwYXRoX2NvbnZlcnRlcigpLiAqLworICAgIF9QeV9JREVOVElGSUVSKF9fZnNwYXRoX18pOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGF0aF9yZXByID0gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGF0aCkgfHwgUHlCeXRlc19DaGVjayhwYXRoKSkgeworICAgICAgICBQeV9JTkNSRUYocGF0aCk7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChwYXRoLCAmUHlJZF9fX2ZzcGF0aF9fKTsKKyAgICBpZiAoTlVMTCA9PSBmdW5jKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBzdHIsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGgpLT50cF9uYW1lKTsKKyAgICB9CisKKyAgICBwYXRoX3JlcHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAoTlVMTCA9PSBwYXRoX3JlcHIpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCEoUHlVbmljb2RlX0NoZWNrKHBhdGhfcmVwcikgfHwgUHlCeXRlc19DaGVjayhwYXRoX3JlcHIpKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICUuMjAwcy5fX2ZzcGF0aF9fKCkgdG8gcmV0dXJuIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLCBQeV9UWVBFKHBhdGgpLT50cF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShwYXRoX3JlcHIpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhfcmVwcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBwYXRoX3JlcHI7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZzcGF0aAorCisgICAgcGF0aDogb2JqZWN0CisKK1JldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCitJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggYXMtaXMuIElmIHRoZQorb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXIKK3R5cGVzIHJhaXNlIGEgVHlwZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzNjM2I3OGVjZmYyOTE0ZiBpbnB1dD1lMzU3MTY1ZjdiMjI0OTBmXSovCit7CisgICAgcmV0dXJuIFB5T1NfRlNQYXRoKHBhdGgpOworfQorCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmFuZG9tCisKKyAgICBzaXplOiBQeV9zc2l6ZV90CisgICAgZmxhZ3M6IGludD0wCisKK09idGFpbiBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyYW5kb21faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iM2E2MTgxOTZhNjE0MDljIGlucHV0PTU5YmFmYWMzOWM1OTQ5NDddKi8KK3sKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBuOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOworICAgICAgICBpZiAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBnZXRyYW5kb20oKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWw6IHJldHJ5ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChuICE9IHNpemUpIHsKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgbik7CisgICAgfQorCisgICAgcmV0dXJuIGJ5dGVzOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmICAgLyogSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCAqLwogCiAjaW5jbHVkZSAiY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCIKIApAQCAtMTIyNjUsNyArMTIxODIsNyBAQAogICAgIE9TX0tJTExQR19NRVRIT0RERUYKICAgICBPU19QTE9DS19NRVRIT0RERUYKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCisgICAgT1NfU1RBUlRGSUxFX01FVEhPRERFRgogI2VuZGlmCiAgICAgT1NfU0VUVUlEX01FVEhPRERFRgogICAgIE9TX1NFVEVVSURfTUVUSE9EREVGCkBAIC0xMjM3NCw2ICsxMjI5MSw4IEBACiAgICAgeyJzY2FuZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2NhbmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zY2FuZGlyX19kb2NfX30sCisgICAgT1NfRlNQQVRIX01FVEhPRERFRgorICAgIE9TX0dFVFJBTkRPTV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTEyMzg1LDcgKzEyMzA0LDYgQEAKICAgICBIQU5ETEUgdG9rOwogICAgIFRPS0VOX1BSSVZJTEVHRVMgdG9rX3ByaXY7CiAgICAgTFVJRCBsdWlkOwotICAgIGludCBtZXRoX2lkeCA9IDA7CiAKICAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwgVE9LRU5fQUxMX0FDQ0VTUywgJnRvaykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI0ODgsMTIgKzEyNDA2LDE0IEBACiAjaWZkZWYgT19MQVJHRUZJTEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19MQVJHRUZJTEUpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZm5kZWYgX19HTlVfXwogI2lmZGVmIE9fU0hMT0NLCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fU0hMT0NLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19FWExPQ0sKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19FWExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNlbmRpZgogI2lmZGVmIE9fRVhFQwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0VYRUMpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTEyNzk2LDI4ICsxMjcxNiwzMyBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKICNlbmRpZgogCi0jaWZkZWYgUlRMRF9MQVpZCisjaWYgSEFWRV9ERUNMX1JUTERfTEFaWQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0xBWlkpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PVworI2lmIEhBVkVfREVDTF9SVExEX05PVwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PVykpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfR0xPQkFMCisjaWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfR0xPQkFMKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9MT0NBTAorI2lmIEhBVkVfREVDTF9SVExEX0xPQ0FMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTE9DQUwpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PREVMRVRFCisjaWYgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9OT0RFTEVURSkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9MT0FECisjaWYgSEFWRV9ERUNMX1JUTERfTk9MT0FECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9MT0FEKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9ERUVQQklORAorI2lmIEhBVkVfREVDTF9SVExEX0RFRVBCSU5ECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfREVFUEJJTkQpKSByZXR1cm4gLTE7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR1JORF9SQU5ET00pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdSTkRfTk9OQkxPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMjgzNSw3ICsxMjc2MCw3IEBACiB9OwogCiAKLXN0YXRpYyBjaGFyICpoYXZlX2Z1bmN0aW9uc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoYXZlX2Z1bmN0aW9uc1tdID0gewogCiAjaWZkZWYgSEFWRV9GQUNDRVNTQVQKICAgICAiSEFWRV9GQUNDRVNTQVQiLApAQCAtMTI5NzAsNyArMTI4OTUsNyBAQAogewogICAgIFB5T2JqZWN0ICptLCAqdjsKICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBjaGFyICoqdHJhY2U7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICp0cmFjZTsKIAogI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2luMzJfY2FuX3N5bWxpbmsgPSBlbmFibGVfc3ltbGluaygpOwpAQCAtMTMxNDYsNiArMTMwNzEsOSBAQAogICAgIH0KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9oYXZlX2Z1bmN0aW9ucyIsIGxpc3QpOwogCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSAmRGlyRW50cnlUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRpckVudHJ5IiwgKFB5T2JqZWN0ICopJkRpckVudHJ5VHlwZSk7CisKICAgICBpbml0aWFsaXplZCA9IDE7CiAKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCmluZGV4IDc0MTZjZjcuLjc4NGU5ZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwpAQCAtNzUsMTAgKzc1LDE4IEBACiAjZGVmaW5lIFNFVFMoaSx2YWwpIHNldHModiwgaSwgdmFsKQogCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19uYW1lKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfcGFzc3dkKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbVVpZChwLT5wd191aWQpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbUdpZChwLT5wd19naWQpKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19HRUNPUykKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2dlY29zKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2Rpcik7CiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19zaGVsbCk7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggZWIzMjJjMi4uYjE5YjdiZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTkxLDcgKzkxLDcgQEAKICAqIGZhbHNlIG9uIGFuIGV4Y2VwdGlvbi4KICAqLwogc3RhdGljIGludAotc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQorc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsKIApAQCAtMjE4LDcgKzIxOCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWNhbGxfd2l0aF9mcmFtZShjaGFyICpmdW5jbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QqIGZ1bmMsIFB5T2JqZWN0KiBhcmdzLAorY2FsbF93aXRoX2ZyYW1lKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCogZnVuYywgUHlPYmplY3QqIGFyZ3MsCiAgICAgICAgICAgICAgICAgeG1scGFyc2VvYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKQEAgLTc0Nyw3ICs3NDcsOCBAQAogICAgICAgICBzICs9IE1BWF9DSFVOS19TSVpFOwogICAgICAgICBzbGVuIC09IE1BWF9DSFVOS19TSVpFOwogICAgIH0KLSAgICBhc3NlcnQoTUFYX0NIVU5LX1NJWkUgPCBJTlRfTUFYICYmIHNsZW4gPCBJTlRfTUFYKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoTUFYX0NIVU5LX1NJWkUgPD0gSU5UX01BWCk7CisgICAgYXNzZXJ0KHNsZW4gPD0gSU5UX01BWCk7CiAgICAgcmMgPSBYTUxfUGFyc2Uoc2VsZi0+aXRzZWxmLCBzLCAoaW50KXNsZW4sIGlzZmluYWwpOwogCiBkb25lOgpAQCAtNzY1LDcgKzc2Niw3IEBACiB7CiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBjaGFyICpwdHI7CisgICAgY29uc3QgY2hhciAqcHRyOwogCiAgICAgc3RyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKG1ldGgsICJuIiwgYnVmX3NpemUpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKQEAgLTEyMjUsMTIgKzEyMjYsOCBAQAogICAgIHNlbGYtPml0c2VsZiA9IE5VTEw7CiAKICAgICBpZiAoc2VsZi0+aGFuZGxlcnMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcDsKLSAgICAgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZXJzW2ldKTsKICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5oYW5kbGVycyk7CiAgICAgICAgIHNlbGYtPmhhbmRsZXJzID0gTlVMTDsKICAgICB9CkBAIC0xMzQ0LDcgKzEzNDEsNiBAQAogICAgIGludCBoYW5kbGVybnVtID0gaGFuZGxlcm5hbWUyaW50KG5hbWUpOwogICAgIGlmIChoYW5kbGVybnVtID49IDApIHsKICAgICAgICAgeG1saGFuZGxlciBjX2hhbmRsZXIgPSBOVUxMOwotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dOwogCiAgICAgICAgIGlmICh2ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgdGhlIGNoYXJhY3RlciBkYXRhIGhhbmRsZXIsIGFuZCBhIGNoYXJhY3RlcgpAQCAtMTM2Niw4ICsxMzYyLDcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgIGNfaGFuZGxlciA9IGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5oYW5kbGVyOwogICAgICAgICB9Ci0gICAgICAgIHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dID0gdjsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfWFNFVFJFRihzZWxmLT5oYW5kbGVyc1toYW5kbGVybnVtXSwgdik7CiAgICAgICAgIGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5zZXR0ZXIoc2VsZi0+aXRzZWxmLCBjX2hhbmRsZXIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xNzA2LDcgKzE3MDEsMTUgQEAKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAibmF0aXZlX2VuY29kaW5nIiwgIlVURi04Iik7CiAKICAgICBzeXNfbW9kdWxlcyA9IFB5U3lzX0dldE9iamVjdCgibW9kdWxlcyIpOworICAgIGlmIChzeXNfbW9kdWxlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGlmIChkID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZXJyb3JzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGQsIGVycm1vZF9uYW1lKTsKICAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMKSB7CiAgICAgICAgIGVycm9yc19tb2R1bGUgPSBQeU1vZHVsZV9OZXcoTU9EVUxFX05BTUUgIi5lcnJvcnMiKTsKQEAgLTE3MjcsOSArMTczMCwxMSBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5X0RFQ1JFRihtb2RlbG1vZF9uYW1lKTsKLSAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMIHx8IG1vZGVsX21vZHVsZSA9PSBOVUxMKQorICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwgfHwgbW9kZWxfbW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgLyogRG9uJ3QgY29yZSBkdW1wIGxhdGVyISAqLworICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID4gMTk1MDUKICAgICB7CkBAIC0xODk3LDE1ICsxOTAyLDEyIEBACiBjbGVhcl9oYW5kbGVycyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGluaXRpYWwpCiB7CiAgICAgaW50IGkgPSAwOwotICAgIFB5T2JqZWN0ICp0ZW1wOwogCiAgICAgZm9yICg7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewogICAgICAgICBpZiAoaW5pdGlhbCkKICAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlcnNbaV0pOwogICAgICAgICAgICAgaGFuZGxlcl9pbmZvW2ldLnNldHRlcihzZWxmLT5pdHNlbGYsIE5VTEwpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDU0ZjE1YmMuLjNiOTRkNGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTM0MywxMCArMzQzLDggQEAKICAgICAgICAgUHlfQ0xFQVIoKmhvb2tfdmFyKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlDYWxsYWJsZV9DaGVjayhmdW5jdGlvbikpIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpob29rX3ZhcjsKICAgICAgICAgUHlfSU5DUkVGKGZ1bmN0aW9uKTsKLSAgICAgICAgKmhvb2tfdmFyID0gZnVuY3Rpb247Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgUHlfWFNFVFJFRigqaG9va192YXIsIGZ1bmN0aW9uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC02MDQsNiArNjAyLDI0IEBACiAiYWRkX2hpc3Rvcnkoc3RyaW5nKSAtPiBOb25lXG5cCiBhZGQgYW4gaXRlbSB0byB0aGUgaGlzdG9yeSBidWZmZXIiKTsKIAorc3RhdGljIGludCBzaG91bGRfYXV0b19hZGRfaGlzdG9yeSA9IDE7CisKKy8qIEVuYWJsZSBvciBkaXNhYmxlIGF1dG9tYXRpYyBoaXN0b3J5ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zZXRfYXV0b19oaXN0b3J5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInA6c2V0X2F1dG9faGlzdG9yeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZzaG91bGRfYXV0b19hZGRfaGlzdG9yeSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZG9jX3NldF9hdXRvX2hpc3RvcnksCisic2V0X2F1dG9faGlzdG9yeShlbmFibGVkKSAtPiBOb25lXG5cCitFbmFibGVzIG9yIGRpc2FibGVzIGF1dG9tYXRpYyBoaXN0b3J5LiIpOworCiAKIC8qIEdldCB0aGUgdGFiLWNvbXBsZXRpb24gd29yZC1kZWxpbWl0ZXJzIHRoYXQgcmVhZGxpbmUgdXNlcyAqLwogCkBAIC04MjIsNiArODM4LDcgQEAKIAogICAgIHsic2V0X2NvbXBsZXRlcl9kZWxpbXMiLCBzZXRfY29tcGxldGVyX2RlbGltcywKICAgICAgTUVUSF9PLCBkb2Nfc2V0X2NvbXBsZXRlcl9kZWxpbXN9LAorICAgIHsic2V0X2F1dG9faGlzdG9yeSIsIHB5X3NldF9hdXRvX2hpc3RvcnksIE1FVEhfVkFSQVJHUywgZG9jX3NldF9hdXRvX2hpc3Rvcnl9LAogICAgIHsiYWRkX2hpc3RvcnkiLCBweV9hZGRfaGlzdG9yeSwgTUVUSF9PLCBkb2NfYWRkX2hpc3Rvcnl9LAogICAgIHsicmVtb3ZlX2hpc3RvcnlfaXRlbSIsIHB5X3JlbW92ZV9oaXN0b3J5LCBNRVRIX1ZBUkFSR1MsIGRvY19yZW1vdmVfaGlzdG9yeX0sCiAgICAgeyJyZXBsYWNlX2hpc3RvcnlfaXRlbSIsIHB5X3JlcGxhY2VfaGlzdG9yeSwgTUVUSF9WQVJBUkdTLCBkb2NfcmVwbGFjZV9oaXN0b3J5fSwKQEAgLTg1Nyw3ICs4NzQsNyBAQAogICAgICAgICBpZiAociA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUxvbmdfQXNMb25nKHIpOworICAgICAgICAgICAgcmVzdWx0ID0gX1B5TG9uZ19Bc0ludChyKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CkBAIC0xMzI3LDcgKzEzNDQsNyBAQAogCiAgICAgLyogd2UgaGF2ZSBhIHZhbGlkIGxpbmUgKi8KICAgICBuID0gc3RybGVuKHApOwotICAgIGlmIChuID4gMCkgeworICAgIGlmIChzaG91bGRfYXV0b19hZGRfaGlzdG9yeSAmJiBuID4gMCkgewogICAgICAgICBjb25zdCBjaGFyICpsaW5lOwogICAgICAgICBpbnQgbGVuZ3RoID0gX3B5X2dldF9oaXN0b3J5X2xlbmd0aCgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCAzYTFjZjA5Li42NzAyYjdhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0xMzUsMTMgKzEzNSwxMSBAQAogc3RhdGljIFB5T2JqZWN0KgogcmxpbWl0MnB5KHN0cnVjdCBybGltaXQgcmwpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKHJsLnJsaW1fY3VyKSA+IHNpemVvZihsb25nKSkgewogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTEwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfTE9OR19MT05HKSBybC5ybGltX2N1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX0xPTkdfTE9ORykgcmwucmxpbV9tYXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSBybC5ybGltX2N1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykgcmwucmxpbV9tYXgpOwogICAgIH0KLSNlbmRpZgogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJsbCIsIChsb25nKSBybC5ybGltX2N1ciwgKGxvbmcpIHJsLnJsaW1fbWF4KTsKIH0KIApAQCAtNDM4LDExICs0MzYsOSBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJMSU1JVF9OUFRTKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKFJMSU1fSU5GSU5JVFkpID4gc2l6ZW9mKGxvbmcpKSB7Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIFJMSU1fSU5GSU5JVFkpOworICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBSTElNX0lORklOSVRZKTsKICAgICB9IGVsc2UKLSNlbmRpZgogICAgIHsKICAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgUkxJTV9JTkZJTklUWSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggMDAzMjRhNS4uNDdkYTQ5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC00LDYgKzQsMTAgQEAKICAgIGhhdmUgYW55IHZhbHVlIGV4Y2VwdCBJTlZBTElEX1NPQ0tFVC4KICovCiAKKyNpZiBkZWZpbmVkKEhBVkVfUE9MTF9IKSAmJiAhZGVmaW5lZChfR05VX1NPVVJDRSkKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRpZgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8c3RydWN0bWVtYmVyLmg+CiAKQEAgLTE3OTMsNyArMTc5Nyw3IEBACiAgKi8KICNpZiAhZGVmaW5lZChfX09wZW5CU0RfXykKICMgICBkZWZpbmUgSURFTlRfVFlQRSAgVF9VSU5UUFRSVAotIyAgIGRlZmluZSBJREVOVF9DQVNUICBQeV9pbnRwdHJfdAorIyAgIGRlZmluZSBJREVOVF9DQVNUICBpbnRwdHJfdAogIyAgIGRlZmluZSBEQVRBX1RZUEUgICBUX0lOVFBUUlQKICMgICBkZWZpbmUgREFUQV9GTVRfVU5JVCBJTlRQVFJUX0ZNVF9VTklUCiAjICAgZGVmaW5lIElERU5UX0FzVHlwZSBQeUxvbmdfQXNVaW50cHRyX3QKQEAgLTE4NDIsNyArMTg0Niw3IEBACiAgICAgUHlPYmplY3QgKnBmZDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImlkZW50IiwgImZpbHRlciIsICJmbGFncyIsICJmZmxhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSIsICJ1ZGF0YSIsIE5VTEx9OwotICAgIHN0YXRpYyBjaGFyICpmbXQgPSAiT3xoSEkiIERBVEFfRk1UX1VOSVQgVUlOVFBUUlRfRk1UX1VOSVQgIjprZXZlbnQiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gIk98aEhJIiBEQVRBX0ZNVF9VTklUIFVJTlRQVFJUX0ZNVF9VTklUICI6a2V2ZW50IjsKIAogICAgIEVWX1NFVCgmKHNlbGYtPmUpLCAwLCBFVkZJTFRfUkVBRCwgRVZfQURELCAwLCAwLCAwKTsgLyogZGVmYXVsdHMgKi8KIApAQCAtMTg3Miw3ICsxODc2LDcgQEAKIGtxdWV1ZV9ldmVudF9yaWNoY29tcGFyZShrcXVldWVfZXZlbnRfT2JqZWN0ICpzLCBrcXVldWVfZXZlbnRfT2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQgPSAwOworICAgIGludHB0cl90IHJlc3VsdCA9IDA7CiAKICAgICBpZiAoIWtxdWV1ZV9ldmVudF9DaGVjayhvKSkgewogICAgICAgICBpZiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpIHsKQEAgLTIxMjcsNyArMjEzMSw3IEBACiAgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgorICAgICAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIgIgogICAgICAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICBQeV9UWVBFKG90aW1lb3V0KS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NTIsNiArMjQ1NiwxMCBAQAogI2lmZGVmIFBPTExNU0cKICAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTE1TRyk7CiAjZW5kaWYKKyNpZmRlZiBQT0xMUkRIVVAKKyAgICAgICAgLyogS2VybmVsIDIuNi4xNysgKi8KKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTFJESFVQKTsKKyNlbmRpZgogICAgIH0KICNlbmRpZiAvKiBIQVZFX1BPTEwgKi8KIApAQCAtMjQ3MywxMiArMjQ4MSwxOCBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUFJJKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVSUik7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExIVVApOworI2lmZGVmIEVQT0xMUkRIVVAKKyAgICAvKiBLZXJuZWwgMi42LjE3ICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExSREhVUCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVUKTsKICNpZmRlZiBFUE9MTE9ORVNIT1QKICAgICAvKiBLZXJuZWwgMi42LjIrICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExPTkVTSE9UKTsKICNlbmRpZgotICAgIC8qIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9SREhVUCIsIEVQT0xMUkRIVVApOyAqLworI2lmZGVmIEVQT0xMRVhDTFVTSVZFCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExFWENMVVNJVkUpOworI2VuZGlmCiAKICNpZmRlZiBFUE9MTFJETk9STQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUkROT1JNKTsKQEAgLTI1MTksMTMgKzI1MzMsMjEgQEAKICAgICAvKiBldmVudCBmaWx0ZXJzICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9SRUFEIiwgRVZGSUxUX1JFQUQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfV1JJVEUiLCBFVkZJTFRfV1JJVEUpOworI2lmZGVmIEVWRklMVF9BSU8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX0FJTyIsIEVWRklMVF9BSU8pOworI2VuZGlmCisjaWZkZWYgRVZGSUxUX1ZOT0RFCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9WTk9ERSIsIEVWRklMVF9WTk9ERSk7CisjZW5kaWYKKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfUFJPQyIsIEVWRklMVF9QUk9DKTsKKyNlbmRpZgogI2lmZGVmIEVWRklMVF9ORVRERVYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX05FVERFViIsIEVWRklMVF9ORVRERVYpOwogI2VuZGlmCisjaWZkZWYgRVZGSUxUX1NJR05BTAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfU0lHTkFMIiwgRVZGSUxUX1NJR05BTCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1RJTUVSIiwgRVZGSUxUX1RJTUVSKTsKIAogICAgIC8qIGV2ZW50IGZsYWdzICovCkBAIC0yNTM2LDE2ICsyNTU4LDIzIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX09ORVNIT1QiLCBFVl9PTkVTSE9UKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfQ0xFQVIiLCBFVl9DTEVBUik7CiAKKyNpZmRlZiBFVl9TWVNGTEFHUwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9TWVNGTEFHUyIsIEVWX1NZU0ZMQUdTKTsKKyNlbmRpZgorI2lmZGVmIEVWX0ZMQUcxCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX0ZMQUcxIiwgRVZfRkxBRzEpOworI2VuZGlmCiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRU9GIiwgRVZfRU9GKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRVJST1IiLCBFVl9FUlJPUik7CiAKICAgICAvKiBSRUFEIFdSSVRFIGZpbHRlciBmbGFnICovCisjaWZkZWYgTk9URV9MT1dBVAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0xPV0FUIiwgTk9URV9MT1dBVCk7CisjZW5kaWYKIAogICAgIC8qIFZOT0RFIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfVk5PREUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9ERUxFVEUiLCBOT1RFX0RFTEVURSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfV1JJVEUiLCBOT1RFX1dSSVRFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9FWFRFTkQiLCBOT1RFX0VYVEVORCk7CkBAIC0yNTUzLDggKzI1ODIsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9MSU5LIiwgTk9URV9MSU5LKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9SRU5BTUUiLCBOT1RFX1JFTkFNRSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfUkVWT0tFIiwgTk9URV9SRVZPS0UpOworI2VuZGlmCiAKICAgICAvKiBQUk9DIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYSVQiLCBOT1RFX0VYSVQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0ZPUksiLCBOT1RFX0ZPUkspOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYRUMiLCBOT1RFX0VYRUMpOwpAQCAtMjU2NCw2ICsyNTk1LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9UUkFDSyIsIE5PVEVfVFJBQ0spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0NISUxEIiwgTk9URV9DSElMRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfVFJBQ0tFUlIiLCBOT1RFX1RSQUNLRVJSKTsKKyNlbmRpZgogCiAgICAgLyogTkVUREVWIGZpbHRlciBmbGFncyAqLwogI2lmZGVmIEVWRklMVF9ORVRERVYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggNmNiMzJlZC4uZDUwNjVjZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgU0hBMV9JTlQzMjsgICAgICAgIC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBTSEExX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgbG9uZyBsb25nIFNIQTFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggZjlmZjBlYS4uMTc3NzVhZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtMjcsMTUgKzI3LDEzIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04MWEzY2NkZTkyYmNmZThkXSovCiAKLSNpZmRlZiBQWV9MT05HX0xPTkcgLyogSWYgbm8gUFlfTE9OR19MT05HLCBkb24ndCBjb21waWxlIGFueXRoaW5nISAqLwotCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU0hBX0JZVEU7CiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IFNIQV9JTlQzMjsgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgdW5zaWduZWQgUFlfTE9OR19MT05HIFNIQV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBTSEFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpAQCAtMTIxLDEyICsxMTksMTIgQEAKIAogLyogVmFyaW91cyBsb2dpY2FsIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBST1I2NCh4LCB5KSBcCi0gICAgKCAoKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSk+PigodW5zaWduZWQgUFlfTE9OR19MT05HKSh5KSAmIDYzKSkgfCBcCi0gICAgICAoKHgpPDwoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoNjQtKCh5KSAmIDYzKSkpKSkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkKKyAgICAoICgoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCk+PigodW5zaWduZWQgbG9uZyBsb25nKSh5KSAmIDYzKSkgfCBcCisgICAgICAoKHgpPDwoKHVuc2lnbmVkIGxvbmcgbG9uZykoNjQtKCh5KSAmIDYzKSkpKSkgJiAweEZGRkZGRkZGRkZGRkZGRkZVTEwpCiAjZGVmaW5lIENoKHgseSx6KSAgICAgICAoeiBeICh4ICYgKHkgXiB6KSkpCiAjZGVmaW5lIE1haih4LHkseikgICAgICAoKCh4IHwgeSkgJiB6KSB8ICh4ICYgeSkpCiAjZGVmaW5lIFMoeCwgbikgICAgICAgICBST1I2NCgoeCksKG4pKQotI2RlZmluZSBSKHgsIG4pICAgICAgICAgKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkgPj4gKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpbikpCisjZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCkgPj4gKCh1bnNpZ25lZCBsb25nIGxvbmcpbikpCiAjZGVmaW5lIFNpZ21hMCh4KSAgICAgICAoUyh4LCAyOCkgXiBTKHgsIDM0KSBeIFMoeCwgMzkpKQogI2RlZmluZSBTaWdtYTEoeCkgICAgICAgKFMoeCwgMTQpIF4gUyh4LCAxOCkgXiBTKHgsIDQxKSkKICNkZWZpbmUgR2FtbWEwKHgpICAgICAgIChTKHgsIDEpIF4gUyh4LCA4KSBeIFIoeCwgNykpCkBAIC0xNTgsODYgKzE1Niw4NiBAQAogICAgICBkICs9IHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGggID0gdDAgKyB0MTsKIAotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMCxQeV9VTEwoMHg0MjhhMmY5OGQ3MjhhZTIyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLFB5X1VMTCgweDcxMzc0NDkxMjNlZjY1Y2QpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDIsUHlfVUxMKDB4YjVjMGZiY2ZlYzRkM2IyZikpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMyxQeV9VTEwoMHhlOWI1ZGJhNTgxODlkYmJjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LFB5X1VMTCgweDM5NTZjMjViZjM0OGI1MzgpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUsUHlfVUxMKDB4NTlmMTExZjFiNjA1ZDAxOSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNixQeV9VTEwoMHg5MjNmODJhNGFmMTk0ZjliKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LFB5X1VMTCgweGFiMWM1ZWQ1ZGE2ZDgxMTgpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDgsUHlfVUxMKDB4ZDgwN2FhOThhMzAzMDI0MikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sOSxQeV9VTEwoMHgxMjgzNWIwMTQ1NzA2ZmJlKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCxQeV9VTEwoMHgyNDMxODViZTRlZTRiMjhjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxMSxQeV9VTEwoMHg1NTBjN2RjM2Q1ZmZiNGUyKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwxMixQeV9VTEwoMHg3MmJlNWQ3NGYyN2I4OTZmKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMyxQeV9VTEwoMHg4MGRlYjFmZTNiMTY5NmIxKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwxNCxQeV9VTEwoMHg5YmRjMDZhNzI1YzcxMjM1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwxNSxQeV9VTEwoMHhjMTliZjE3NGNmNjkyNjk0KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNixQeV9VTEwoMHhlNDliNjljMTllZjE0YWQyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxNyxQeV9VTEwoMHhlZmJlNDc4NjM4NGYyNWUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxOCxQeV9VTEwoMHgwZmMxOWRjNjhiOGNkNWI1KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSxQeV9VTEwoMHgyNDBjYTFjYzc3YWM5YzY1KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyMCxQeV9VTEwoMHgyZGU5MmM2ZjU5MmIwMjc1KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyMSxQeV9VTEwoMHg0YTc0ODRhYTZlYTZlNDgzKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMixQeV9VTEwoMHg1Y2IwYTlkY2JkNDFmYmQ0KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwyMyxQeV9VTEwoMHg3NmY5ODhkYTgzMTE1M2I1KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwyNCxQeV9VTEwoMHg5ODNlNTE1MmVlNjZkZmFiKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSxQeV9VTEwoMHhhODMxYzY2ZDJkYjQzMjEwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyNixQeV9VTEwoMHhiMDAzMjdjODk4ZmIyMTNmKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwyNyxQeV9VTEwoMHhiZjU5N2ZjN2JlZWYwZWU0KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCxQeV9VTEwoMHhjNmUwMGJmMzNkYTg4ZmMyKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyOSxQeV9VTEwoMHhkNWE3OTE0NzkzMGFhNzI1KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzMCxQeV9VTEwoMHgwNmNhNjM1MWUwMDM4MjZmKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSxQeV9VTEwoMHgxNDI5Mjk2NzBhMGU2ZTcwKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwzMixQeV9VTEwoMHgyN2I3MGE4NTQ2ZDIyZmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwzMyxQeV9VTEwoMHgyZTFiMjEzODVjMjZjOTI2KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCxQeV9VTEwoMHg0ZDJjNmRmYzVhYzQyYWVkKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzNSxQeV9VTEwoMHg1MzM4MGQxMzlkOTViM2RmKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwzNixQeV9VTEwoMHg2NTBhNzM1NDhiYWY2M2RlKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNyxQeV9VTEwoMHg3NjZhMGFiYjNjNzdiMmE4KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzOCxQeV9VTEwoMHg4MWMyYzkyZTQ3ZWRhZWU2KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzOSxQeV9VTEwoMHg5MjcyMmM4NTE0ODIzNTNiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCxQeV9VTEwoMHhhMmJmZThhMTRjZjEwMzY0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0MSxQeV9VTEwoMHhhODFhNjY0YmJjNDIzMDAxKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw0MixQeV9VTEwoMHhjMjRiOGI3MGQwZjg5NzkxKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MyxQeV9VTEwoMHhjNzZjNTFhMzA2NTRiZTMwKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0NCxQeV9VTEwoMHhkMTkyZTgxOWQ2ZWY1MjE4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw0NSxQeV9VTEwoMHhkNjk5MDYyNDU1NjVhOTEwKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NixQeV9VTEwoMHhmNDBlMzU4NTU3NzEyMDJhKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw0NyxQeV9VTEwoMHgxMDZhYTA3MDMyYmJkMWI4KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0OCxQeV9VTEwoMHgxOWE0YzExNmI4ZDJkMGM4KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSxQeV9VTEwoMHgxZTM3NmMwODUxNDFhYjUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1MCxQeV9VTEwoMHgyNzQ4Nzc0Y2RmOGVlYjk5KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1MSxQeV9VTEwoMHgzNGIwYmNiNWUxOWI0OGE4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MixQeV9VTEwoMHgzOTFjMGNiM2M1Yzk1YTYzKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1MyxQeV9VTEwoMHg0ZWQ4YWE0YWUzNDE4YWNiKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw1NCxQeV9VTEwoMHg1YjljY2E0Zjc3NjNlMzczKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSxQeV9VTEwoMHg2ODJlNmZmM2Q2YjJiOGEzKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw1NixQeV9VTEwoMHg3NDhmODJlZTVkZWZiMmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw1NyxQeV9VTEwoMHg3OGE1NjM2ZjQzMTcyZjYwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCxQeV9VTEwoMHg4NGM4NzgxNGExZjBhYjcyKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1OSxQeV9VTEwoMHg4Y2M3MDIwODFhNjQzOWVjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2MCxQeV9VTEwoMHg5MGJlZmZmYTIzNjMxZTI4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSxQeV9VTEwoMHhhNDUwNmNlYmRlODJiZGU5KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2MixQeV9VTEwoMHhiZWY5YTNmN2IyYzY3OTE1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw2MyxQeV9VTEwoMHhjNjcxNzhmMmUzNzI1MzJiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCxQeV9VTEwoMHhjYTI3M2VjZWVhMjY2MTljKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw2NSxQeV9VTEwoMHhkMTg2YjhjNzIxYzBjMjA3KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw2NixQeV9VTEwoMHhlYWRhN2RkNmNkZTBlYjFlKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NyxQeV9VTEwoMHhmNTdkNGY3ZmVlNmVkMTc4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2OCxQeV9VTEwoMHgwNmYwNjdhYTcyMTc2ZmJhKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2OSxQeV9VTEwoMHgwYTYzN2RjNWEyYzg5OGE2KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCxQeV9VTEwoMHgxMTNmOTgwNGJlZjkwZGFlKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3MSxQeV9VTEwoMHgxYjcxMGIzNTEzMWM0NzFiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw3MixQeV9VTEwoMHgyOGRiNzdmNTIzMDQ3ZDg0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MyxQeV9VTEwoMHgzMmNhYWI3YjQwYzcyNDkzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw3NCxQeV9VTEwoMHgzYzllYmUwYTE1YzliZWJjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw3NSxQeV9VTEwoMHg0MzFkNjdjNDljMTAwZDRjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NixQeV9VTEwoMHg0Y2M1ZDRiZWNiM2U0MmI2KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw3NyxQeV9VTEwoMHg1OTdmMjk5Y2ZjNjU3ZTJhKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3OCxQeV9VTEwoMHg1ZmNiNmZhYjNhZDZmYWVjKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSxQeV9VTEwoMHg2YzQ0MTk4YzRhNDc1ODE3KSk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwwLDB4NDI4YTJmOThkNzI4YWUyMlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLDB4NzEzNzQ0OTEyM2VmNjVjZFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyLDB4YjVjMGZiY2ZlYzRkM2IyZlVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzLDB4ZTliNWRiYTU4MTg5ZGJiY1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LDB4Mzk1NmMyNWJmMzQ4YjUzOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1LDB4NTlmMTExZjFiNjA1ZDAxOVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2LDB4OTIzZjgyYTRhZjE5NGY5YlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LDB4YWIxYzVlZDVkYTZkODExOFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw4LDB4ZDgwN2FhOThhMzAzMDI0MlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw5LDB4MTI4MzViMDE0NTcwNmZiZVVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCwweDI0MzE4NWJlNGVlNGIyOGNVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTEsMHg1NTBjN2RjM2Q1ZmZiNGUyVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDEyLDB4NzJiZTVkNzRmMjdiODk2ZlVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMywweDgwZGViMWZlM2IxNjk2YjFVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMTQsMHg5YmRjMDZhNzI1YzcxMjM1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDE1LDB4YzE5YmYxNzRjZjY5MjY5NFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNiwweGU0OWI2OWMxOWVmMTRhZDJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMTcsMHhlZmJlNDc4NjM4NGYyNWUzVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDE4LDB4MGZjMTlkYzY4YjhjZDViNVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSwweDI0MGNhMWNjNzdhYzljNjVVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjAsMHgyZGU5MmM2ZjU5MmIwMjc1VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDIxLDB4NGE3NDg0YWE2ZWE2ZTQ4M1VMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMiwweDVjYjBhOWRjYmQ0MWZiZDRVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMjMsMHg3NmY5ODhkYTgzMTE1M2I1VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDI0LDB4OTgzZTUxNTJlZTY2ZGZhYlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSwweGE4MzFjNjZkMmRiNDMyMTBVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMjYsMHhiMDAzMjdjODk4ZmIyMTNmVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDI3LDB4YmY1OTdmYzdiZWVmMGVlNFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCwweGM2ZTAwYmYzM2RhODhmYzJVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjksMHhkNWE3OTE0NzkzMGFhNzI1VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDMwLDB4MDZjYTYzNTFlMDAzODI2ZlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSwweDE0MjkyOTY3MGEwZTZlNzBVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMzIsMHgyN2I3MGE4NTQ2ZDIyZmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDMzLDB4MmUxYjIxMzg1YzI2YzkyNlVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCwweDRkMmM2ZGZjNWFjNDJhZWRVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMzUsMHg1MzM4MGQxMzlkOTViM2RmVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDM2LDB4NjUwYTczNTQ4YmFmNjNkZVVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNywweDc2NmEwYWJiM2M3N2IyYThVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzgsMHg4MWMyYzkyZTQ3ZWRhZWU2VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDM5LDB4OTI3MjJjODUxNDgyMzUzYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCwweGEyYmZlOGExNGNmMTAzNjRVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDEsMHhhODFhNjY0YmJjNDIzMDAxVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDQyLDB4YzI0YjhiNzBkMGY4OTc5MVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MywweGM3NmM1MWEzMDY1NGJlMzBVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNDQsMHhkMTkyZTgxOWQ2ZWY1MjE4VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDQ1LDB4ZDY5OTA2MjQ1NTY1YTkxMFVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NiwweGY0MGUzNTg1NTc3MTIwMmFVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNDcsMHgxMDZhYTA3MDMyYmJkMWI4VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQ4LDB4MTlhNGMxMTZiOGQyZDBjOFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSwweDFlMzc2YzA4NTE0MWFiNTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTAsMHgyNzQ4Nzc0Y2RmOGVlYjk5VUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDUxLDB4MzRiMGJjYjVlMTliNDhhOFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MiwweDM5MWMwY2IzYzVjOTVhNjNVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNTMsMHg0ZWQ4YWE0YWUzNDE4YWNiVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDU0LDB4NWI5Y2NhNGY3NzYzZTM3M1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSwweDY4MmU2ZmYzZDZiMmI4YTNVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNTYsMHg3NDhmODJlZTVkZWZiMmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDU3LDB4NzhhNTYzNmY0MzE3MmY2MFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCwweDg0Yzg3ODE0YTFmMGFiNzJVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTksMHg4Y2M3MDIwODFhNjQzOWVjVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDYwLDB4OTBiZWZmZmEyMzYzMWUyOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSwweGE0NTA2Y2ViZGU4MmJkZTlVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNjIsMHhiZWY5YTNmN2IyYzY3OTE1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDYzLDB4YzY3MTc4ZjJlMzcyNTMyYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCwweGNhMjczZWNlZWEyNjYxOWNVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNjUsMHhkMTg2YjhjNzIxYzBjMjA3VUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDY2LDB4ZWFkYTdkZDZjZGUwZWIxZVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NywweGY1N2Q0ZjdmZWU2ZWQxNzhVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjgsMHgwNmYwNjdhYTcyMTc2ZmJhVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDY5LDB4MGE2MzdkYzVhMmM4OThhNlVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCwweDExM2Y5ODA0YmVmOTBkYWVVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzEsMHgxYjcxMGIzNTEzMWM0NzFiVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDcyLDB4MjhkYjc3ZjUyMzA0N2Q4NFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MywweDMyY2FhYjdiNDBjNzI0OTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNzQsMHgzYzllYmUwYTE1YzliZWJjVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDc1LDB4NDMxZDY3YzQ5YzEwMGQ0Y1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NiwweDRjYzVkNGJlY2IzZTQyYjZVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNzcsMHg1OTdmMjk5Y2ZjNjU3ZTJhVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDc4LDB4NWZjYjZmYWIzYWQ2ZmFlY1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSwweDZjNDQxOThjNGE0NzU4MTdVTEwpOwogCiAjdW5kZWYgUk5ECiAKQEAgLTgwMyw1ICs4MDEsMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0hBNTEyVHlwZSIsIChQeU9iamVjdCAqKSZTSEE1MTJ0eXBlKTsKICAgICByZXR1cm4gbTsKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCA3NTNkOTg3Li5lMjcwNzViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTE5OCw3ICsxOTgsNyBAQAogcmVwb3J0X3dha2V1cF93cml0ZV9lcnJvcih2b2lkICpkYXRhKQogewogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87Ci0gICAgZXJybm8gPSAoaW50KSAoUHlfaW50cHRyX3QpIGRhdGE7CisgICAgZXJybm8gPSAoaW50KSAoaW50cHRyX3QpIGRhdGE7CiAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byB3cml0ZSB0byB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgd2FrZXVwIGZkOlxuIik7CkBAIC0yNzcsNyArMjc3LDcgQEAKIAogICAgICAgICAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoUHlfaW50cHRyX3QpZXJybm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGludHB0cl90KWVycm5vKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmZCA9IChpbnQpc29ja2ZkOwotICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC02MDksMTEgKzYwOSw2IEBACiAgICAgaWYgKGZkICE9IC0xKSB7CiAgICAgICAgIGludCBibG9ja2luZzsKIAotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3RhdHVzKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyNzEsMjEwICsxMjY2LDE2OSBAQAogICAgIH0KIAogI2lmZGVmIFNJR0hVUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSFVQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSFVQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSFVQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU5UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JSRUFLCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdCUkVBSyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0JSRUFLIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlJFQUspKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUVVJVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUVVJVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1FVSVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdRVUlUKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RSQVAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RSQVApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUUkFQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFJBUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJT1QKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lPVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lPVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdBQlJUCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdBQlJUKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQUJSVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0FCUlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRU1UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdFTVQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdFTVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdFTVQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRlBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdGUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdGUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdGUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHS0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHS0lMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0tJTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdLSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JVUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQlVTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQlVTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlVTKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NFR1YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NFR1YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTRUdWIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU0VHVikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdTWVMKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NZUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NZUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1NZUykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQSVBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQSVBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUElQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BJUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQUxSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQUxSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0FMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdBTFJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RFUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RFUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdURVJNIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVEVSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVU1IxCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVU1IxKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVNSMSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VTUjEpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVNSMgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVNSMik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1VTUjIiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVU1IyKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NMRAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ0xEKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ0xEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0xEKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NITEQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0NITEQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDSExEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0hMRCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQV1IKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BXUik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BXUiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BXUikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VSRwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVJHKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVJHIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVJHKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1dJTkNICi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdXSU5DSCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1dJTkNIIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHV0lOQ0gpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUE9MTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUE9MTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BPTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQT0xMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NUT1AKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NUT1ApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTVE9QIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU1RPUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUU1RQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUU1RQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFNUUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RTVFApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ09OVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ09OVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NPTlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDT05UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RUSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RUSU4pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUVElOIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFRJTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUVE9VCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUVE9VKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFRPVSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RUT1UpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVlRBTFJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdWVEFMUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdWVEFMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdWVEFMUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUFJPRgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUFJPRik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BST0YiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1hDUFUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1hDUFUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdYQ1BVIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHWENQVSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdYRlNaCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdYRlNaKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHWEZTWiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1hGU1opKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUlRNSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1JUTUlOKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUlRNSU4iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdSVE1JTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdSVE1BWAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUlRNQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdSVE1BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1JUTUFYKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lORk8KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lORk8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTkZPIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5GTykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIElUSU1FUl9SRUFMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfUkVBTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9SRUFMIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfUkVBTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBJVElNRVJfVklSVFVBTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1ZJUlRVQUwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfVklSVFVBTCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1ZJUlRVQUwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgSVRJTUVSX1BST0YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9QUk9GKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1BST0YiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9QUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZCAoSEFWRV9TRVRJVElNRVIpIHx8IGRlZmluZWQgKEhBVkVfR0VUSVRJTUVSKQpAQCAtMTQ4NSwxNSArMTQzOSwxMyBAQAogI2VuZGlmCiAKICNpZmRlZiBDVFJMX0NfRVZFTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKENUUkxfQ19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQ19FVkVOVCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ1RSTF9DX0VWRU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgQ1RSTF9CUkVBS19FVkVOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ1RSTF9CUkVBS19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQlJFQUtfRVZFTlQiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENUUkxfQlJFQUtfRVZFTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCAzZTFhNDYwLi4yNjIwZDU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogc2VuZChkYXRhWywgZmxhZ3NdKSAtLSBzZW5kIGRhdGEsIG1heSBub3Qgc2VuZCBhbGwgb2YgaXRcblwKIHNlbmR0byhkYXRhWywgZmxhZ3NdLCBhZGRyKSAtLSBzZW5kIGRhdGEgdG8gYSBnaXZlbiBhZGRyZXNzXG5cCiBzZXRibG9ja2luZygwIHwgMSkgLS0gc2V0IG9yIGNsZWFyIHRoZSBibG9ja2luZyBJL08gZmxhZ1xuXAotc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAorc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWVbLCBvcHRsZW5dKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKIHNldHRpbWVvdXQoTm9uZSB8IGZsb2F0KSAtLSBzZXQgb3IgY2xlYXIgdGhlIHRpbWVvdXRcblwKIHNodXRkb3duKGhvdykgLS0gc2h1dCBkb3duIHRyYWZmaWMgaW4gb25lIG9yIGJvdGggZGlyZWN0aW9uc1xuXAogaWZfbmFtZWluZGV4KCkgLS0gcmV0dXJuIGFsbCBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lc1xuXApAQCAtMTUzLDcgKzE1Myw3IEBACiAgICBPbiB0aGUgb3RoZXIgaGFuZCwgbm90IGFsbCBMaW51eCB2ZXJzaW9ucyBhZ3JlZSwgc28gdGhlcmUgdGhlIHNldHRpbmdzCiAgICBjb21wdXRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBhcmUgbmVlZGVkISAqLwogCi0jaWZuZGVmIGxpbnV4CisjaWZuZGVmIF9fbGludXhfXwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwpAQCAtMTYzLDcgKzE2MywxMSBAQAogIyBpbmNsdWRlIDxzeXMvdWlvLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBXSVRIX1RIUkVBRAorI2lmICFkZWZpbmVkKFdJVEhfVEhSRUFEKQorIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKQEAgLTE3Miw3ICsxNzYsNyBAQAogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwotIyBlbGlmIGRlZmluZWQobGludXgpCisjIGVsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAvKiBSZWx5IG9uIHRoZSBjb25maWd1cmUgc2NyaXB0ICovCiAjIGVsc2UKICMgIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCkBAIC0yODIsNiArMjg2LDM2IEBACiAjaW5jbHVkZSA8bmV0L2lmLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisjaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+CisjaWZuZGVmIEFGX0FMRworI2RlZmluZSBBRl9BTEcgMzgKKyNlbmRpZgorI2lmbmRlZiBTT0xfQUxHCisjZGVmaW5lIFNPTF9BTEcgMjc5CisjZW5kaWYKKworLyogTGludXggMy4xOSAqLworI2lmbmRlZiBBTEdfU0VUX0FFQURfQVNTT0NMRU4KKyNkZWZpbmUgQUxHX1NFVF9BRUFEX0FTU09DTEVOICAgICAgICAgICA0CisjZW5kaWYKKyNpZm5kZWYgQUxHX1NFVF9BRUFEX0FVVEhTSVpFCisjZGVmaW5lIEFMR19TRVRfQUVBRF9BVVRIU0laRSAgICAgICAgICAgNQorI2VuZGlmCisvKiBMaW51eCA0LjggKi8KKyNpZm5kZWYgQUxHX1NFVF9QVUJLRVkKKyNkZWZpbmUgQUxHX1NFVF9QVUJLRVkgICAgICAgICAgICAgICAgICA2CisjZW5kaWYKKworI2lmbmRlZiBBTEdfT1BfU0lHTgorI2RlZmluZSBBTEdfT1BfU0lHTiAgICAgICAgICAgICAgICAgICAgIDIKKyNlbmRpZgorI2lmbmRlZiBBTEdfT1BfVkVSSUZZCisjZGVmaW5lIEFMR19PUF9WRVJJRlkgICAgICAgICAgICAgICAgICAgMworI2VuZGlmCisKKyNlbmRpZiAvKiBIQVZFX1NPQ0tBRERSX0FMRyAqLworCiAvKiBHZW5lcmljIHNvY2tldCBvYmplY3QgZGVmaW5pdGlvbnMgYW5kIGluY2x1ZGVzICovCiAjZGVmaW5lIFB5U29ja2V0X0JVSUxESU5HX1NPQ0tFVAogI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIgpAQCAtNTg4LDYgKzYyMiw3IEBACiBzdGF0aWMgaW50CiBpbnRlcm5hbF9zZXRibG9ja2luZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCBibG9jaykKIHsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHVfbG9uZyBhcmc7CiAjZW5kaWYKQEAgLTYwNiwyNCArNjQxLDQxIEBACiAjaWZuZGVmIE1TX1dJTkRPV1MKICNpZiAoZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKSAmJiBkZWZpbmVkKEZJT05CSU8pKQogICAgIGJsb2NrID0gIWJsb2NrOwotICAgIGlvY3RsKHMtPnNvY2tfZmQsIEZJT05CSU8sICh1bnNpZ25lZCBpbnQgKikmYmxvY2spOworICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBGSU9OQklPLCAodW5zaWduZWQgaW50ICopJmJsb2NrKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOwogI2Vsc2UKICAgICBkZWxheV9mbGFnID0gZmNudGwocy0+c29ja19mZCwgRl9HRVRGTCwgMCk7CisgICAgaWYgKGRlbGF5X2ZsYWcgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKICAgICBpZiAoYmxvY2spCiAgICAgICAgIG5ld19kZWxheV9mbGFnID0gZGVsYXlfZmxhZyAmICh+T19OT05CTE9DSyk7CiAgICAgZWxzZQogICAgICAgICBuZXdfZGVsYXlfZmxhZyA9IGRlbGF5X2ZsYWcgfCBPX05PTkJMT0NLOwogICAgIGlmIChuZXdfZGVsYXlfZmxhZyAhPSBkZWxheV9mbGFnKQotICAgICAgICBmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZyk7CisgICAgICAgIGlmIChmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZykgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGRvbmU7CiAjZW5kaWYKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KICAgICBhcmcgPSAhYmxvY2s7Ci0gICAgaW9jdGxzb2NrZXQocy0+c29ja19mZCwgRklPTkJJTywgJmFyZyk7CisgICAgaWYgKGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpICE9IDApCisgICAgICAgIGdvdG8gZG9uZTsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCisKKyAgICByZXN1bHQgPSAwOworCisgIGRvbmU6CisgICAgOyAgLyogbmVjZXNzYXJ5IGZvciAtLXdpdGhvdXQtdGhyZWFkcyBmbGFnICovCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIC8qIFNpbmNlIHRoZXNlIGRvbid0IHJldHVybiBhbnl0aGluZyAqLwotICAgIHJldHVybiAxOworICAgIGlmIChyZXN1bHQpIHsKKyNpZm5kZWYgTVNfV0lORE9XUworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisjZWxzZQorICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW50CkBAIC04NzEsNyArOTIzLDcgQEAKIC8qIERlZmF1bHQgdGltZW91dCBmb3IgbmV3IHNvY2tldHMgKi8KIHN0YXRpYyBfUHlUaW1lX3QgZGVmYXVsdHRpbWVvdXQgPSBfUFlUSU1FX0ZST01TRUNPTkRTKC0xKTsKIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIGluaXRfc29ja29iamVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsCiAgICAgICAgICAgICAgICAgU09DS0VUX1QgZmQsIGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8pCiB7CkBAIC04ODgsMTAgKzk0MCwxMyBAQAogI2VuZGlmCiAgICAgewogICAgICAgICBzLT5zb2NrX3RpbWVvdXQgPSBkZWZhdWx0dGltZW91dDsKLSAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDApCi0gICAgICAgICAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCAwKTsKKyAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbF9zZXRibG9ja2luZyhzLCAwKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLQorICAgIHJldHVybiAwOwogfQogCiAKQEAgLTkwNiw4ICs5NjEsMTIgQEAKICAgICBQeVNvY2tldFNvY2tPYmplY3QgKnM7CiAgICAgcyA9IChQeVNvY2tldFNvY2tPYmplY3QgKikKICAgICAgICAgUHlUeXBlX0dlbmVyaWNOZXcoJnNvY2tfdHlwZSwgTlVMTCwgTlVMTCk7Ci0gICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKTsKKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYocyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gczsKIH0KIApAQCAtOTI2LDcgKzk4NSw3IEBACiAgICBhbiBlcnJvciBvY2N1cnJlZDsgdGhlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqLwogCiBzdGF0aWMgaW50Ci1zZXRpcGFkZHIoY2hhciAqbmFtZSwgc3RydWN0IHNvY2thZGRyICphZGRyX3JldCwgc2l6ZV90IGFkZHJfcmV0X3NpemUsIGludCBhZikKK3NldGlwYWRkcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJfcmV0LCBzaXplX3QgYWRkcl9yZXRfc2l6ZSwgaW50IGFmKQogewogICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKICAgICBpbnQgZXJyb3I7CkBAIC0xMTA3LDcgKzExNjYsNyBAQAogICAgYW4gZXJyb3Igb2NjdXJyZWQuICovCiAKIHN0YXRpYyBpbnQKLXNldGJkYWRkcihjaGFyICpuYW1lLCBiZGFkZHJfdCAqYmRhZGRyKQorc2V0YmRhZGRyKGNvbnN0IGNoYXIgKm5hbWUsIGJkYWRkcl90ICpiZGFkZHIpCiB7CiAgICAgdW5zaWduZWQgaW50IGIwLCBiMSwgYjIsIGIzLCBiNCwgYjU7CiAgICAgY2hhciBjaDsKQEAgLTExODAsNyArMTIzOSw3IEBACiAgICAgY2FzZSBBRl9VTklYOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX3VuICphID0gKHN0cnVjdCBzb2NrYWRkcl91biAqKSBhZGRyOwotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAgICAgICAgIGlmIChhLT5zdW5fcGF0aFswXSA9PSAwKSB7ICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgKi8KICAgICAgICAgICAgIGFkZHJsZW4gLT0gb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX3VuLCBzdW5fcGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShhLT5zdW5fcGF0aCwgYWRkcmxlbik7CkBAIC0xMzcxLDYgKzE0MzAsMjIgQEAKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2FsZyAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfYWxnICopYWRkcjsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInMjcyNISCIsCisgICAgICAgICAgICBhLT5zYWxnX3R5cGUsCisgICAgICAgICAgICBzdHJubGVuKChjb25zdCBjaGFyKilhLT5zYWxnX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZihhLT5zYWxnX3R5cGUpKSwKKyAgICAgICAgICAgIGEtPnNhbGdfbmFtZSwKKyAgICAgICAgICAgIHN0cm5sZW4oKGNvbnN0IGNoYXIqKWEtPnNhbGdfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGEtPnNhbGdfbmFtZSkpLAorICAgICAgICAgICAgYS0+c2FsZ19mZWF0LAorICAgICAgICAgICAgYS0+c2FsZ19tYXNrKTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKQEAgLTE0MDEsNyArMTQ3Niw3IEBACiBpZG5hX2NvbnZlcnRlcihQeU9iamVjdCAqb2JqLCBzdHJ1Y3QgbWF5YmVfaWRuYSAqZGF0YSkKIHsKICAgICBzaXplX3QgbGVuOwotICAgIFB5T2JqZWN0ICpvYmoyLCAqb2JqMzsKKyAgICBQeU9iamVjdCAqb2JqMjsKICAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgaWRuYV9jbGVhbnVwKGRhdGEpOwogICAgICAgICByZXR1cm4gMTsKQEAgLTE0MTYsMzEgKzE0OTEsMjcgQEAKICAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcob2JqKTsKICAgICAgICAgbGVuID0gUHlCeXRlQXJyYXlfU2l6ZShvYmopOwogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSAmJiBQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAwICYmIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9iaikpIHsKLSAgICAgICAgZGF0YS0+YnVmID0gUHlVbmljb2RlX0RBVEEob2JqKTsKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gMCAmJiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvYmopKSB7CisgICAgICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG9iajIgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iaiwgImlkbmEiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICghb2JqMikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG9iajIpKTsKKyAgICAgICAgICAgIGRhdGEtPm9iaiA9IG9iajI7CisgICAgICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmoyKTsKKyAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMik7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIG9iajIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgICAgICBpZiAoIW9iajIpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdHJpbmcgb3IgdW5pY29kZSB0ZXh0IGJ1ZmZlciBleHBlY3RlZCwgbm90ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgb2JqMyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqMiwgImlkbmEiLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKG9iajIpOwotICAgICAgICBpZiAoIW9iajMpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmICghUHlCeXRlc19DaGVjayhvYmozKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9iajMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGRhdGEtPm9iaiA9IG9iajM7Ci0gICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iajMpOwotICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9iajMpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RyLCBieXRlcyBvciBieXRlYXJyYXkgZXhwZWN0ZWQsIG5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKHN0cmxlbihkYXRhLT5idWYpICE9IGxlbikgewogICAgICAgICBQeV9DTEVBUihkYXRhLT5vYmopOwpAQCAtMTQ4Myw3ICsxNTU0LDcgQEAKICAgICAgICAgYXNzZXJ0KHBhdGgubGVuID49IDApOwogCiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3VuKilhZGRyX3JldDsKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogICAgICAgICBpZiAocGF0aC5sZW4gPiAwICYmICooY29uc3QgY2hhciAqKXBhdGguYnVmID09IDApIHsKICAgICAgICAgICAgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSBleHRlbnNpb24gKi8KICAgICAgICAgICAgIGlmICgoc2l6ZV90KXBhdGgubGVuID4gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CkBAIC0xOTQwLDYgKzIwMTEsMzYgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2FsZyAqc2E7CisgICAgICAgIGNoYXIgKnR5cGU7CisgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgIHNhID0gKHN0cnVjdCBzb2NrYWRkcl9hbGcgKilhZGRyX3JldDsKKworICAgICAgICBtZW1zZXQoc2EsIDAsIHNpemVvZigqc2EpKTsKKyAgICAgICAgc2EtPnNhbGdfZmFtaWx5ID0gQUZfQUxHOworCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3N8SEg6Z2V0c29ja2FkZHJhcmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZSwgJm5hbWUsICZzYS0+c2FsZ19mZWF0LCAmc2EtPnNhbGdfbWFzaykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgLyogc29ja2FkZHJfYWxnIGhhcyBmaXhlZC1zaXplZCBjaGFyIGFycmF5cyBmb3IgdHlwZSBhbmQgbmFtZSAqLworICAgICAgICBpZiAoc3RybGVuKHR5cGUpID4gc2l6ZW9mKHNhLT5zYWxnX3R5cGUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkFGX0FMRyB0eXBlIHRvbyBsb25nLiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3RybmNweSgoY2hhciAqKXNhLT5zYWxnX3R5cGUsIHR5cGUsIHNpemVvZihzYS0+c2FsZ190eXBlKSk7CisgICAgICAgIGlmIChzdHJsZW4obmFtZSkgPiBzaXplb2Yoc2EtPnNhbGdfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQUZfQUxHIG5hbWUgdG9vIGxvbmcuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzdHJuY3B5KChjaGFyICopc2EtPnNhbGdfbmFtZSwgbmFtZSwgc2l6ZW9mKHNhLT5zYWxnX25hbWUpKTsKKworICAgICAgICAqbGVuX3JldCA9IHNpemVvZigqc2EpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0yMDYyLDYgKzIxNjMsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9hbGcpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0yMjIxLDEwICsyMzI5LDIxIEBACiBzb2NrX2FjY2VwdF9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKIHsKICAgICBzdHJ1Y3Qgc29ja19hY2NlcHQgKmN0eCA9IGRhdGE7CisgICAgc3RydWN0IHNvY2thZGRyICphZGRyID0gU0FTMlNBKGN0eC0+YWRkcmJ1Zik7CisgICAgc29ja2xlbl90ICpwYWRkcmxlbiA9IGN0eC0+YWRkcmxlbjsKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIC8qIEFGX0FMRyBkb2VzIG5vdCBzdXBwb3J0IGFjY2VwdCgpIHdpdGggYWRkciBhbmQgcmFpc2VzCisgICAgICogRUNPTk5BQk9SVEVEIGluc3RlYWQuICovCisgICAgaWYgKHMtPnNvY2tfZmFtaWx5ID09IEFGX0FMRykgeworICAgICAgICBhZGRyID0gTlVMTDsKKyAgICAgICAgcGFkZHJsZW4gPSBOVUxMOworICAgICAgICAqY3R4LT5hZGRybGVuID0gMDsKKyAgICB9CisjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKICAgICBpZiAoYWNjZXB0NF93b3JrcyAhPSAwKSB7Ci0gICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuLAorICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdDQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT0NLX0NMT0VYRUMpOwogICAgICAgICBpZiAoY3R4LT5yZXN1bHQgPT0gSU5WQUxJRF9TT0NLRVQgJiYgYWNjZXB0NF93b3JrcyA9PSAtMSkgewogICAgICAgICAgICAgLyogT24gTGludXggb2xkZXIgdGhhbiAyLjYuMjgsIGFjY2VwdDQoKSBmYWlscyB3aXRoIEVOT1NZUyAqLwpAQCAtMjIzMiw5ICsyMzUxLDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoYWNjZXB0NF93b3JrcyA9PSAwKQotICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4pOwogI2Vsc2UKLSAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbik7CiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTIzMzAsMTAgKzI0NDksMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzLT5zb2NrX3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKGJsb2NrID8gLTEgOiAwKTsKLSAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCBibG9jayk7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIGJsb2NrKSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXRibG9ja2luZ19kb2MsCkBAIC0yMzk5LDEwICsyNTE4LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcy0+c29ja190aW1lb3V0ID0gdGltZW91dDsKLSAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCB0aW1lb3V0IDwgMCk7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwKSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXR0aW1lb3V0X2RvYywKQEAgLTI0MzYsOSArMjU1NSwxMiBAQAogb3BlcmF0aW9ucyBhcmUgZGlzYWJsZWQuIik7CiAKIC8qIHMuc2V0c29ja29wdCgpIG1ldGhvZC4KLSAgIFdpdGggYW4gaW50ZWdlciB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBpbnRlZ2VyIG9wdGlvbi4KKyAgIFdpdGggYW4gaW50ZWdlciB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBpbnRlZ2VyIG9wdHZhbCB3aXRoIG9wdGxlbj00LgorICAgV2l0aCBOb25lIGFzIHRoaXJkIGFyZ3VtZW50IGFuZCBhbiBpbnRlZ2VyIGZvdXJ0aCBhcmd1bWVudCwgc2V0CisgICBvcHR2YWw9TlVMTCB3aXRoIHVuc2lnbmVkIGludCBhcyBvcHRsZW4uCiAgICBXaXRoIGEgc3RyaW5nIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIG9wdGlvbiBmcm9tIGEgYnVmZmVyOwotICAgdXNlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSAnc3RydWN0JyB0byBlbmNvZGUgdGhlIHN0cmluZy4gKi8KKyAgIHVzZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgJ3N0cnVjdCcgdG8gZW5jb2RlIHRoZSBzdHJpbmcuCisqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZXRzb2Nrb3B0KFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNDQ4LDMxICsyNTcwLDY0IEBACiAgICAgaW50IHJlczsKICAgICBQeV9idWZmZXIgb3B0dmFsOwogICAgIGludCBmbGFnOworICAgIHVuc2lnbmVkIGludCBvcHRsZW47CisgICAgUHlPYmplY3QgKm5vbmU7CiAKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIGZsYWcpICovCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaTpzZXRzb2Nrb3B0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmZmxhZykpIHsKICAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopJmZsYWcsIHNpemVvZiBmbGFnKTsKKyAgICAgICAgZ290byBkb25lOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaXkqOnNldHNvY2tvcHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJm9wdHZhbCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLmJ1Ziwgb3B0dmFsLmxlbik7CisKKyAgICBQeUVycl9DbGVhcigpOworICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgTm9uZSwgZmxhZykgKi8KKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPIUk6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgUHlfVFlQRShQeV9Ob25lKSwgJm5vbmUsICZvcHRsZW4pKSB7CisgICAgICAgIGFzc2VydChzaXplb2Yoc29ja2xlbl90KSA+PSBzaXplb2YodW5zaWduZWQgaW50KSk7CisgICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgKHNvY2tsZW5fdClvcHRsZW4pOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIGJ1ZmZlcikgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJm9wdHZhbCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChvcHR2YWwubGVuID4gSU5UX01BWCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvcHR2YWwpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQgb3B0aW9uIGlzIGxhcmdlciB0aGFuICVpIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHJlcyA8IDApCisgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdHZhbC5idWYsIChpbnQpb3B0dmFsLmxlbik7CisjZWxzZQorICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbC5idWYsIG9wdHZhbC5sZW4pOworI2VuZGlmCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmb3B0dmFsKTsKKworZG9uZToKKyAgICBpZiAocmVzIDwgMCkgewogICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoc2V0c29ja29wdF9kb2MsCi0ic2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCB2YWx1ZSlcblwKKyJzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlOiBpbnQpXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlOiBidWZmZXIpXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIE5vbmUsIG9wdGxlbjogaW50KVxuXAogXG5cCiBTZXQgYSBzb2NrZXQgb3B0aW9uLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBmb3IgbGV2ZWwgYW5kIG9wdGlvbi5cblwKLVRoZSB2YWx1ZSBhcmd1bWVudCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3IgYSBzdHJpbmcuIik7CitUaGUgdmFsdWUgYXJndW1lbnQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyLCBhIHN0cmluZyBidWZmZXIsIG9yIFxuXAorTm9uZSwgb3B0bGVuLiIpOwogCiAKIC8qIHMuZ2V0c29ja29wdCgpIG1ldGhvZC4KQEAgLTI1NjQsMTcgKzI3MTksMjIgQEAKIHNvY2tfY2xvc2UoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewogICAgIFNPQ0tFVF9UIGZkOworICAgIGludCByZXM7CiAKLSAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LwotICAgICAqIGFuZCBodHRwOi8vbGludXguZGVya2VpbGVyLmNvbS9NYWlsaW5nLUxpc3RzL0tlcm5lbC8yMDA1LTA5LzMwMDAuaHRtbAotICAgICAqIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICovCiAgICAgZmQgPSBzLT5zb2NrX2ZkOwogICAgIGlmIChmZCAhPSBJTlZBTElEX1NPQ0tFVCkgewogICAgICAgICBzLT5zb2NrX2ZkID0gSU5WQUxJRF9TT0NLRVQ7CisKKyAgICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlCisgICAgICAgICAgIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8gYW5kCisgICAgICAgICAgIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCisgICAgICAgICAgIGZvciBtb3JlIGRldGFpbHMuICovCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgcmVzID0gU09DS0VUQ0xPU0UoZmQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICB9CiAgICAgfQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTM3NTcsNiArMzkxNyw2MyBAQAogfTsKIAogc3RhdGljIGludAorc29ja19zZW5kbXNnX2lvdmVjKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtc2doZHIgKm1zZywKKyAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKipkYXRhYnVmc291dCwgUHlfc3NpemVfdCAqbmRhdGFidWZzb3V0KSB7CisgICAgUHlfc3NpemVfdCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhX2Zhc3QgPSBOVUxMOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBkYXRhX2Zhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIik7CisgICAgaWYgKGRhdGFfZmFzdCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7CisgICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG1zZy0+bXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7CisgICAgaWYgKG5kYXRhcGFydHMgPiAwKSB7CisgICAgICAgIGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKTsKKyAgICAgICAgaWYgKGlvdnMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBtc2ctPm1zZ19pb3YgPSBpb3ZzOworCisgICAgICAgIGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cyk7CisgICAgICAgIGlmIChkYXRhYnVmcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcy1saWtlIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CisgICAgfQorICAgIHJlc3VsdCA9IDA7CisgIGZpbmFsbHk6CisgICAgKmRhdGFidWZzb3V0ID0gZGF0YWJ1ZnM7CisgICAgKm5kYXRhYnVmc291dCA9IG5kYXRhYnVmczsKKyAgICBQeV9YREVDUkVGKGRhdGFfZmFzdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAogc29ja19zZW5kbXNnX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQogewogICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgKmN0eCA9IGRhdGE7CkBAIC0zNzcwLDExICszOTg3LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZW5kbXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CiAgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7Ci0gICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwotICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIHN0cnVjdCBtc2doZHIgbXNnOwogICAgIHN0cnVjdCBjbXNnaW5mbyB7CiAgICAgICAgIGludCBsZXZlbDsKICAgICAgICAgaW50IHR5cGU7CkBAIC0zNzgzLDEzICszOTk5LDE2IEBACiAgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90IGNvbnRyb2xsZW4sIGNvbnRyb2xsZW5fbGFzdDsKICAgICBpbnQgYWRkcmxlbiwgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwgKmRhdGFfZmFzdCA9IE5VTEwsCisgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLAogICAgICAgICAqY21zZ19mYXN0ID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CiAgICAgc3RydWN0IHNvY2tfc2VuZG1zZyBjdHg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T2lPOnNlbmRtc2ciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CiAKICAgICAvKiBQYXJzZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiAqLwogICAgIGlmIChhZGRyX2FyZyAhPSBOVUxMICYmIGFkZHJfYXJnICE9IFB5X05vbmUpIHsKQEAgLTM4MDEsMzAgKzQwMjAsOCBAQAogCiAgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKICAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KLSAgICBpZiAoKGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgaWYgKHNvY2tfc2VuZG1zZ19pb3ZlYyhzLCBkYXRhX2FyZywgJm1zZywgJmRhdGFidWZzLCAmbmRhdGFidWZzKSA9PSAtMSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgbmRhdGFwYXJ0cyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShkYXRhX2Zhc3QpOwotICAgIGlmIChuZGF0YXBhcnRzID4gSU5UX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlbmRtc2coKSBhcmd1bWVudCAxIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgbXNnLm1zZ19pb3ZsZW4gPSBuZGF0YXBhcnRzOwotICAgIGlmIChuZGF0YXBhcnRzID4gMCAmJgotICAgICAgICAoKG1zZy5tc2dfaW92ID0gaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5kYXRhcGFydHMpKSA9PSBOVUxMIHx8Ci0gICAgICAgICAoZGF0YWJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCkpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBmb3IgKDsgbmRhdGFidWZzIDwgbmRhdGFwYXJ0czsgbmRhdGFidWZzKyspIHsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZGF0YV9mYXN0LCBuZGF0YWJ1ZnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJ5KjtzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMtbGlrZSBvYmplY3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJ1ZnNbbmRhdGFidWZzXSkpCi0gICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfYmFzZSA9IGRhdGFidWZzW25kYXRhYnVmc10uYnVmOwotICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2xlbiA9IGRhdGFidWZzW25kYXRhYnVmc10ubGVuOwogICAgIH0KIAogICAgIGlmIChjbXNnX2FyZyA9PSBOVUxMKQpAQCAtMzg4MywxMSArNDA4MCwxMyBAQAogICAgIGlmIChuY21zZ2J1ZnMgPiAwKSB7CiAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaCA9IE5VTEw7CiAKLSAgICAgICAgaWYgKChtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmID0KLSAgICAgICAgICAgICBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpIHsKKyAgICAgICAgY29udHJvbGJ1ZiA9IFB5TWVtX01hbGxvYyhjb250cm9sbGVuKTsKKyAgICAgICAgaWYgKGNvbnRyb2xidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgfQorICAgICAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworCiAgICAgICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CiAKICAgICAgICAgLyogTmVlZCB0byB6ZXJvIG91dCB0aGUgYnVmZmVyIGFzIGEgd29ya2Fyb3VuZCBmb3IgZ2xpYmMncwpAQCAtMzk1MiwxMSArNDE1MSwxMSBAQAogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZjbXNnc1tpXS5kYXRhKTsKICAgICBQeU1lbV9GcmVlKGNtc2dzKTsKICAgICBQeV9YREVDUkVGKGNtc2dfZmFzdCk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKQorICAgIFB5TWVtX0ZyZWUobXNnLm1zZ19pb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhYnVmc1tpXSk7CisgICAgfQogICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOwotICAgIFB5TWVtX0ZyZWUoaW92cyk7Ci0gICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTM5NzgsNiArNDE3NywxNzEgQEAKIGRhdGEgc2VudC4iKTsKICNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLwogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKK3N0YXRpYyBQeU9iamVjdCoKK3NvY2tfc2VuZG1zZ19hZmFsZyhQeVNvY2tldFNvY2tPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKworICAgIFB5X3NzaXplX3QgaSwgbmRhdGFidWZzID0gMDsKKyAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGF0YV9hcmcgPSBOVUxMOworCisgICAgUHlfYnVmZmVyIGl2ID0ge05VTEwsIE5VTEx9OworCisgICAgUHlPYmplY3QgKm9wb2JqID0gTlVMTDsKKyAgICBpbnQgb3AgPSAtMTsKKworICAgIFB5T2JqZWN0ICphc3NvY2xlbm9iaiA9IE5VTEw7CisgICAgaW50IGFzc29jbGVuID0gLTE7CisKKyAgICB1bnNpZ25lZCBpbnQgKnVpcHRyOworICAgIGludCBmbGFncyA9IDA7CisKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKKyAgICBzdHJ1Y3QgY21zZ2hkciAqaGVhZGVyID0gTlVMTDsKKyAgICBzdHJ1Y3QgYWZfYWxnX2l2ICphbGdfaXYgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgY3R4OworICAgIFB5X3NzaXplX3QgY29udHJvbGxlbjsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsibXNnIiwgIm9wIiwgIml2IiwgImFzc29jbGVuIiwgImZsYWdzIiwgMH07CisKKyAgICBpZiAoc2VsZi0+c29ja19mYW1pbHkgIT0gQUZfQUxHKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImFsZ3NldCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQUZfQUxHIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxPJE8heSpPIWk6c2VuZG1zZ19hZmFsZyIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlMb25nX1R5cGUsICZvcG9iaiwgJml2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxvbmdfVHlwZSwgJmFzc29jbGVub2JqLCAmZmxhZ3MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisKKyAgICAvKiBvcCBpcyBhIHJlcXVpcmVkLCBrZXl3b3JkLW9ubHkgYXJndW1lbnQgPj0gMCAqLworICAgIGlmIChvcG9iaiAhPSBOVUxMKSB7CisgICAgICAgIG9wID0gX1B5TG9uZ19Bc0ludChvcG9iaik7CisgICAgfQorICAgIGlmIChvcCA8IDApIHsKKyAgICAgICAgLyogb3ZlcnJpZGUgZXhjZXB0aW9uIGZyb20gX1B5TG9uZ19Bc0ludCgpICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBvciBtaXNzaW5nIGFyZ3VtZW50ICdvcCciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICAvKiBhc3NvY2xlbiBpcyBvcHRpb25hbCBidXQgbXVzdCBiZSA+PSAwICovCisgICAgaWYgKGFzc29jbGVub2JqICE9IE5VTEwpIHsKKyAgICAgICAgYXNzb2NsZW4gPSBfUHlMb25nX0FzSW50KGFzc29jbGVub2JqKTsKKyAgICAgICAgaWYgKGFzc29jbGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXNzb2NsZW4gPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NvY2xlbiBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb250cm9sbGVuID0gQ01TR19TUEFDRSg0KTsKKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgY29udHJvbGxlbiArPSBDTVNHX1NQQUNFKHNpemVvZigqYWxnX2l2KSArIGl2Lmxlbik7CisgICAgfQorICAgIGlmIChhc3NvY2xlbiA+PSAwKSB7CisgICAgICAgIGNvbnRyb2xsZW4gKz0gQ01TR19TUEFDRSg0KTsKKyAgICB9CisKKyAgICBjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pOworICAgIGlmIChjb250cm9sYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBtZW1zZXQoY29udHJvbGJ1ZiwgMCwgY29udHJvbGxlbik7CisKKyAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOworICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmIChkYXRhX2FyZyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzb2NrX3NlbmRtc2dfaW92ZWMoc2VsZiwgZGF0YV9hcmcsICZtc2csICZkYXRhYnVmcywgJm5kYXRhYnVmcykgPT0gLTEpIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHNldCBvcGVyYXRpb24gdG8gZW5jcnlwdCBvciBkZWNyeXB0ICovCisgICAgaGVhZGVyID0gQ01TR19GSVJTVEhEUigmbXNnKTsKKyAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19GSVJTVEhEUiIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX09QOworICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX0xFTig0KTsKKyAgICB1aXB0ciA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAqdWlwdHIgPSAodW5zaWduZWQgaW50KW9wOworCisgICAgLyogc2V0IGluaXRpYWxpemF0aW9uIHZlY3RvciAqLworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBoZWFkZXIgPSBDTVNHX05YVEhEUigmbXNnLCBoZWFkZXIpOworICAgICAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX05YVEhEUihpdikiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBoZWFkZXItPmNtc2dfbGV2ZWwgPSBTT0xfQUxHOworICAgICAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfSVY7CisgICAgICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX1NQQUNFKHNpemVvZigqYWxnX2l2KSArIGl2Lmxlbik7CisgICAgICAgIGFsZ19pdiA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAgICAgYWxnX2l2LT5pdmxlbiA9IGl2LmxlbjsKKyAgICAgICAgbWVtY3B5KGFsZ19pdi0+aXYsIGl2LmJ1ZiwgaXYubGVuKTsKKyAgICB9CisKKyAgICAvKiBzZXQgbGVuZ3RoIG9mIGFzc29jaWF0ZWQgZGF0YSBmb3IgQUVBRCAqLworICAgIGlmIChhc3NvY2xlbiA+PSAwKSB7CisgICAgICAgIGhlYWRlciA9IENNU0dfTlhUSERSKCZtc2csIGhlYWRlcik7CisgICAgICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfTlhUSERSKGFzc29jKSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9BRUFEX0FTU09DTEVOOworICAgICAgICBoZWFkZXItPmNtc2dfbGVuID0gQ01TR19MRU4oNCk7CisgICAgICAgIHVpcHRyID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICAgICAqdWlwdHIgPSAodW5zaWduZWQgaW50KWFzc29jbGVuOworICAgIH0KKworICAgIGN0eC5tc2cgPSAmbXNnOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwoc2VsZiwgMSwgc29ja19zZW5kbXNnX2ltcGwsICZjdHgpIDwgMCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgcmV0dmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOworCisgIGZpbmFsbHk6CisgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaXYpOworICAgIH0KKyAgICBQeU1lbV9GcmVlKG1zZy5tc2dfaW92KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIH0KKyAgICBQeU1lbV9GcmVlKGRhdGFidWZzKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoc2VuZG1zZ19hZmFsZ19kb2MsCisic2VuZG1zZ19hZmFsZyhbbXNnXSwgKiwgb3BbLCBpdlssIGFzc29jbGVuWywgZmxhZ3M9TVNHX01PUkVdXV0pXG5cCitcblwKK1NldCBvcGVyYXRpb24gbW9kZSwgSVYgYW5kIGxlbmd0aCBvZiBhc3NvY2lhdGVkIGRhdGEgZm9yIGFuIEFGX0FMR1xuXAorb3BlcmF0aW9uIHNvY2tldC4iKTsKKyNlbmRpZgogCiAvKiBzLnNodXRkb3duKGhvdykgbWV0aG9kICovCiAKQEAgLTQwMzYsNiArNDQwMCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZWN2KTsgfQorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICBjYXNlIFNJT19MT09QQkFDS19GQVNUX1BBVEg6IHsKKyAgICAgICAgdW5zaWduZWQgaW50IG9wdGlvbjsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZywgImtJOmlvY3RsIiwgJmNtZCwgJm9wdGlvbikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFdTQUlvY3RsKHMtPnNvY2tfZmQsIGNtZCwgJm9wdGlvbiwgc2l6ZW9mKG9wdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnJlY3YsIE5VTEwsIE5VTEwpID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZWN2KTsgfQorI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGlvY3RsIGNvbW1hbmQgJWQiLCBjbWQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQwNDYsNyArNDQyMSw4IEBACiBcblwKIENvbnRyb2wgdGhlIHNvY2tldCB3aXRoIFdTQUlvY3RsIHN5c2NhbGwuIEN1cnJlbnRseSBzdXBwb3J0ZWQgJ2NtZCcgdmFsdWVzIGFyZVxuXAogU0lPX1JDVkFMTDogICdvcHRpb24nIG11c3QgYmUgb25lIG9mIHRoZSBzb2NrZXQuUkNWQUxMXyogY29uc3RhbnRzLlxuXAotU0lPX0tFRVBBTElWRV9WQUxTOiAgJ29wdGlvbicgaXMgYSB0dXBsZSBvZiAob25vZmYsIHRpbWVvdXQsIGludGVydmFsKS4iKTsKK1NJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuXG5cCitTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIOiAnb3B0aW9uJyBpcyBhIGJvb2xlYW4gdmFsdWUsIGFuZCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Iik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKQEAgLTQxNDUsNiArNDUyMSwxMCBAQAogICAgIHsic2VuZG1zZyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19kb2N9LAogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICB7InNlbmRtc2dfYWZhbGciLCAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2VuZG1zZ19hZmFsZywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICBzZW5kbXNnX2FmYWxnX2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC00MTY1LDIyICs0NTQ1LDQ1IEBACiAgICBGaXJzdCBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdGlvbi4gKi8KIAogc3RhdGljIHZvaWQKK3NvY2tfZmluYWxpemUoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQoreworICAgIFNPQ0tFVF9UIGZkOworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgaWYgKHMtPnNvY2tfZmQgIT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgaWYgKFB5RXJyX1Jlc291cmNlV2FybmluZygoUHlPYmplY3QgKilzLCAxLCAidW5jbG9zZWQgJVIiLCBzKSkgeworICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKChQeU9iamVjdCAqKXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogT25seSBjbG9zZSB0aGUgc29ja2V0ICphZnRlciogbG9nZ2luZyB0aGUgUmVzb3VyY2VXYXJuaW5nIHdhcm5pbmcKKyAgICAgICAgICAgdG8gYWxsb3cgdGhlIGxvZ2dlciB0byBjYWxsIHNvY2tldCBtZXRob2RzIGxpa2UKKyAgICAgICAgICAgc29ja2V0LmdldHNvY2tuYW1lKCkuIElmIHRoZSBzb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSwgc29ja2V0CisgICAgICAgICAgIG1ldGhvZHMgZmFpbHMgd2l0aCB0aGUgRUJBREYgZXJyb3IuICovCisgICAgICAgIGZkID0gcy0+c29ja19mZDsKKyAgICAgICAgcy0+c29ja19mZCA9IElOVkFMSURfU09DS0VUOworCisgICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBzb2NrX2Nsb3NlKCkgKi8KKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCitzdGF0aWMgdm9pZAogc29ja19kZWFsbG9jKFB5U29ja2V0U29ja09iamVjdCAqcykKIHsKLSAgICBpZiAocy0+c29ja19mZCAhPSBJTlZBTElEX1NPQ0tFVCkgewotICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7Ci0gICAgICAgIFB5X3NzaXplX3Qgb2xkX3JlZmNvdW50ID0gUHlfUkVGQ05UKHMpOwotICAgICAgICArK1B5X1JFRkNOVChzKTsKLSAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUmVzb3VyY2VXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5jbG9zZWQgJVIiLCBzKSkKLSAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCi0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkKLSAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHMpOwotICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7Ci0gICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShzLT5zb2NrX2ZkKTsKLSAgICAgICAgUHlfUkVGQ05UKHMpID0gb2xkX3JlZmNvdW50OwotICAgIH0KKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKChQeU9iamVjdCAqKXMpIDwgMCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUHlfVFlQRShzKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzKTsKIH0KIApAQCAtNDM2OCw3ICs0NzcxLDEwIEBACiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pOworICAgIGlmIChpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pID09IC0xKSB7CisgICAgICAgIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIHJldHVybiAwOwogCkBAIC00Mzk3LDcgKzQ4MDMsOCBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgc29ja19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtNDQxNyw2ICs0ODI0LDE1IEBACiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIHNvY2tfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3Ipc29ja19maW5hbGl6ZSwgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCkBAIC01NDUyLDEwICs1ODY4LDYgQEAKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocmV0dmFsKTsKICAgICB9Ci0KLSAgICAvKiBOT1RSRUFDSEVEICovCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgaGFuZGxpbmcgb2YgaW5ldF9udG9wIik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKQEAgLTYxODksOSArNjYwMSw2IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfVU5TUEVDKTsKICNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lORVQpOwotI2lmZGVmIEFGX0lORVQ2Ci0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSU5FVDYpOwotI2VuZGlmIC8qIEFGX0lORVQ2ICovCiAjaWYgZGVmaW5lZChBRl9VTklYKQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1VOSVgpOwogI2VuZGlmIC8qIEFGX1VOSVggKi8KQEAgLTYyMjIsNiArNjYzMSw5IEBACiAgICAgLyogUmVzZXJ2ZWQgZm9yIFdlcm5lcidzIEFUTSAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0FBTDUpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BTEcpOyAvKiBMaW51eCBjcnlwdG8gKi8KKyNlbmRpZgogI2lmZGVmIEFGX1gyNQogICAgIC8qIFJlc2VydmVkIGZvciBYLjI1IHByb2plY3QgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9YMjUpOwpAQCAtNjI4Myw2ICs2Njk1LDkgQEAKICNpZmRlZiBORVRMSU5LX1RBUEJBU0UKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX1RBUEJBU0UpOwogI2VuZGlmCisjaWZkZWYgTkVUTElOS19DUllQVE8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX0NSWVBUTyk7CisjZW5kaWYKICNlbmRpZiAvKiBBRl9ORVRMSU5LICovCiAjaWZkZWYgQUZfUk9VVEUKICAgICAvKiBBbGlhcyB0byBlbXVsYXRlIDQuNEJTRCAqLwpAQCAtNjQzNiwxMSArNjg1MSwzMCBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfVE9QX1NSVik7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgLyogU29ja2V0IG9wdGlvbnMgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0tFWSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9JVik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9PUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9BRUFEX0FTU09DTEVOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0FFQURfQVVUSFNJWkUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfUFVCS0VZKTsKKworICAgIC8qIE9wZXJhdGlvbnMgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfREVDUllQVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX0VOQ1JZUFQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9TSUdOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfVkVSSUZZKTsKKyNlbmRpZgorCiAgICAgLyogU29ja2V0IHR5cGVzICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19TVFJFQU0pOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfREdSQU0pOwogLyogV2UgaGF2ZSBpbmNvbXBsZXRlIHNvY2tldCBzdXBwb3J0LiAqLworI2lmZGVmIFNPQ0tfUkFXCisgICAgLyogU09DS19SQVcgaXMgbWFya2VkIGFzIG9wdGlvbmFsIGluIHRoZSBQT1NJWCBzcGVjaWZpY2F0aW9uICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19SQVcpOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19TRVFQQUNLRVQpOwogI2lmIGRlZmluZWQoU09DS19SRE0pCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19SRE0pOwpAQCAtNjQ4Myw5ICs2OTE3LDExIEBACiAjaWZkZWYgIFNPX09PQklOTElORQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX09PQklOTElORSk7CiAjZW5kaWYKKyNpZm5kZWYgX19HTlVfXwogI2lmZGVmICBTT19SRVVTRVBPUlQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19SRVVTRVBPUlQpOwogI2VuZGlmCisjZW5kaWYKICNpZmRlZiAgU09fU05EQlVGCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fU05EQlVGKTsKICNlbmRpZgpAQCAtNjUyMiw2ICs2OTU4LDEyIEBACiAjaWZkZWYgIExPQ0FMX1BFRVJDUkVECiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9DQUxfUEVFUkNSRUQpOwogI2VuZGlmCisjaWZkZWYgIFNPX1BBU1NTRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QQVNTU0VDKTsKKyNlbmRpZgorI2lmZGVmICBTT19QRUVSU0VDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUEVFUlNFQyk7CisjZW5kaWYKICNpZmRlZiAgU09fQklORFRPREVWSUNFCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQklORFRPREVWSUNFKTsKICNlbmRpZgpAQCAtNjUzMSw2ICs2OTczLDEyIEBACiAjaWZkZWYgIFNPX01BUksKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19NQVJLKTsKICNlbmRpZgorI2lmZGVmIFNPX0RPTUFJTgorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0RPTUFJTik7CisjZW5kaWYKKyNpZmRlZiBTT19QUk9UT0NPTAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BST1RPQ09MKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNjY4OSw2ICs3MTM3LDkgQEAKICNpZmRlZiBTT0xfUkRTCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX1JEUyk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9BTEcpOworI2VuZGlmCiAjaWZkZWYgUkRTX0NBTkNFTF9TRU5UX1RPCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkRTX0NBTkNFTF9TRU5UX1RPKTsKICNlbmRpZgpAQCAtNzIyNiw4ICs3Njc3LDE2IEBACiAKICNpZmRlZiBTSU9fUkNWQUxMCiAgICAgewotICAgICAgICBEV09SRCBjb2Rlc1tdID0ge1NJT19SQ1ZBTEwsIFNJT19LRUVQQUxJVkVfVkFMU307Ci0gICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIn07CisgICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTLAorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICAgICAgICAgIFNJT19MT09QQkFDS19GQVNUX1BBVEgKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBjb25zdCBjaGFyICpuYW1lc1tdID0geyJTSU9fUkNWQUxMIiwgIlNJT19LRUVQQUxJVkVfVkFMUyIsCisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgICAgICAgICAgIlNJT19MT09QQkFDS19GQVNUX1BBVEgiCisjZW5kaWYKKyAgICAgICAgfTsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvcihpID0gMDsgaTxQeV9BUlJBWV9MRU5HVEgoY29kZXMpOyArK2kpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCmluZGV4IDRiOWYzY2QuLjU1NmE3MTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCkBAIC0xMzcsNyArMTM3LDEwIEBACiAgICAgaWYgKFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplKGJ5dGVzLCAmbmFtZSwgTlVMTCkgPT0gLTEpCiAgICAgICAgIGdvdG8gb3V0OwogICAgIGlmICgocCA9IGdldHNwbmFtKG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgImdldHNwbmFtKCk6IG5hbWUgbm90IGZvdW5kIik7CisgICAgICAgIGlmIChlcnJubyAhPSAwKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICJnZXRzcG5hbSgpOiBuYW1lIG5vdCBmb3VuZCIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAgICAgcmV0dmFsID0gbWtzcGVudChwKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlX2xpYi5oIGIvTW9kdWxlcy9zcmVfbGliLmgKaW5kZXggMTI4YzcxZS4uMDg2NWZjNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmVfbGliLmgKKysrIGIvTW9kdWxlcy9zcmVfbGliLmgKQEAgLTM2NywxNCArMzY3LDEyIEBACiAjZGVmaW5lIFJFVFVSTl9PTl9GQUlMVVJFKGkpIFwKICAgICBkbyB7IFJFVFVSTl9PTl9FUlJPUihpKTsgaWYgKGkgPT0gMCkgUkVUVVJOX0ZBSUxVUkU7IH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgU0ZZKHgpICN4Ci0KICNkZWZpbmUgREFUQV9TVEFDS19BTExPQyhzdGF0ZSwgdHlwZSwgcHRyKSBcCiBkbyB7IFwKICAgICBhbGxvY19wb3MgPSBzdGF0ZS0+ZGF0YV9zdGFja19iYXNlOyBcCiAgICAgVFJBQ0UoKCJhbGxvY2F0aW5nICVzIGluICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgIiBcCiAgICAgICAgICAgICIoJSIgUFlfRk9STUFUX1NJWkVfVCAiZClcbiIsIFwKLSAgICAgICAgICAgU0ZZKHR5cGUpLCBhbGxvY19wb3MsIHNpemVvZih0eXBlKSkpOyBcCisgICAgICAgICAgIFB5X1NUUklOR0lGWSh0eXBlKSwgYWxsb2NfcG9zLCBzaXplb2YodHlwZSkpKTsgXAogICAgIGlmIChzaXplb2YodHlwZSkgPiBzdGF0ZS0+ZGF0YV9zdGFja19zaXplIC0gYWxsb2NfcG9zKSB7IFwKICAgICAgICAgaW50IGogPSBkYXRhX3N0YWNrX2dyb3coc3RhdGUsIHNpemVvZih0eXBlKSk7IFwKICAgICAgICAgaWYgKGogPCAwKSByZXR1cm4gajsgXApAQCAtMzg3LDcgKzM4NSw3IEBACiAKICNkZWZpbmUgREFUQV9TVEFDS19MT09LVVBfQVQoc3RhdGUsIHR5cGUsIHB0ciwgcG9zKSBcCiBkbyB7IFwKLSAgICBUUkFDRSgoImxvb2tpbmcgdXAgJXMgYXQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwgU0ZZKHR5cGUpLCBwb3MpKTsgXAorICAgIFRSQUNFKCgibG9va2luZyB1cCAlcyBhdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLCBQeV9TVFJJTkdJRlkodHlwZSksIHBvcykpOyBcCiAgICAgcHRyID0gKHR5cGUqKShzdGF0ZS0+ZGF0YV9zdGFjaytwb3MpOyBcCiB9IHdoaWxlICgwKQogCkBAIC01MzEsNyArNTI5LDcgQEAKICAgICBpZiAoY3R4LT5wYXR0ZXJuWzBdID09IFNSRV9PUF9JTkZPKSB7CiAgICAgICAgIC8qIG9wdGltaXphdGlvbiBpbmZvIGJsb2NrICovCiAgICAgICAgIC8qIDxJTkZPPiA8MT1za2lwPiA8Mj1mbGFncz4gPDM9bWluPiAuLi4gKi8KLSAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAoUHlfdWludHB0cl90KShlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKKyAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAodWludHB0cl90KShlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKICAgICAgICAgICAgIFRSQUNFKCgicmVqZWN0IChnb3QgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBjaGFycywgIgogICAgICAgICAgICAgICAgICAgICJuZWVkICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQpXG4iLAogICAgICAgICAgICAgICAgICAgIGVuZCAtIGN0eC0+cHRyLCAoUHlfc3NpemVfdCkgY3R4LT5wYXR0ZXJuWzNdKSk7CkBAIC0xMjU2LDcgKzEyNTQsMzIgQEAKICAgICAgICAgICAgcHJlZml4LCBwcmVmaXhfbGVuLCBwcmVmaXhfc2tpcCkpOwogICAgIFRSQUNFKCgiY2hhcnNldCA9ICVwXG4iLCBjaGFyc2V0KSk7CiAKLSNpZiBkZWZpbmVkKFVTRV9GQVNUX1NFQVJDSCkKKyAgICBpZiAocHJlZml4X2xlbiA9PSAxKSB7CisgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBsaXRlcmFsIGNoYXJhY3RlciAqLworICAgICAgICBTUkVfQ0hBUiBjID0gKFNSRV9DSEFSKSBwcmVmaXhbMF07CisjaWYgU0laRU9GX1NSRV9DSEFSIDwgNAorICAgICAgICBpZiAoKFNSRV9DT0RFKSBjICE9IHByZWZpeFswXSkKKyAgICAgICAgICAgIHJldHVybiAwOyAvKiBsaXRlcmFsIGNhbid0IG1hdGNoOiBkb2Vzbid0IGZpdCBpbiBjaGFyIHdpZHRoICovCisjZW5kaWYKKyAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgeworICAgICAgICAgICAgd2hpbGUgKCpwdHIgIT0gYykgeworICAgICAgICAgICAgICAgIGlmICgrK3B0ciA+PSBlbmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOworICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0ciArIHByZWZpeF9za2lwOworICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLworICAgICAgICAgICAgc3RhdHVzID0gU1JFKG1hdGNoKShzdGF0ZSwgcGF0dGVybiArIDIqcHJlZml4X3NraXAsIDApOworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICAgICArK3B0cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAocHJlZml4X2xlbiA+IDEpIHsKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGtub3duIHByZWZpeC4gIHVzZSB0aGUgb3ZlcmxhcAogICAgICAgICAgICB0YWJsZSB0byBza2lwIGZvcndhcmQgYXMgZmFzdCBhcyB3ZSBwb3NzaWJseSBjYW4gKi8KQEAgLTEzMDUsMzIgKzEzMjgsOCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZgogCi0gICAgaWYgKHBhdHRlcm5bMF0gPT0gU1JFX09QX0xJVEVSQUwpIHsKLSAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyLiAgdGhpcyBpcyB1c2VkCi0gICAgICAgICAgIGZvciBzaG9ydCBwcmVmaXhlcywgYW5kIGlmIGZhc3Qgc2VhcmNoIGlzIGRpc2FibGVkICovCi0gICAgICAgIFNSRV9DSEFSIGMgPSAoU1JFX0NIQVIpIHBhdHRlcm5bMV07Ci0jaWYgU0laRU9GX1NSRV9DSEFSIDwgNAotICAgICAgICBpZiAoKFNSRV9DT0RFKSBjICE9IHBhdHRlcm5bMV0pCi0gICAgICAgICAgICByZXR1cm4gMDsgLyogbGl0ZXJhbCBjYW4ndCBtYXRjaDogZG9lc24ndCBmaXQgaW4gY2hhciB3aWR0aCAqLwotI2VuZGlmCi0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAgICAgICAgIHdoaWxlICgqcHRyICE9IGMpIHsKLSAgICAgICAgICAgICAgICBpZiAoKytwdHIgPj0gZW5kKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBMSVRFUkFMXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0cjsKLSAgICAgICAgICAgIHN0YXRlLT5wdHIgPSArK3B0cjsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KLSAgICAgICAgICAgIHN0YXR1cyA9IFNSRShtYXRjaCkoc3RhdGUsIHBhdHRlcm4gKyAyLCAwKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoY2hhcnNldCkgeworICAgIGlmIChjaGFyc2V0KSB7CiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBjaGFyYWN0ZXIgZnJvbSBhIGtub3duIHNldCAqLwogICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOwogICAgICAgICBmb3IgKDs7KSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKaW5kZXggZjg0Y2M3OC4uMzRhNmZjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwpAQCAtNzksNiArNzksNyBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9GUkVFX0NMQVNTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfSU1QT1JUKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfQk9VTkQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9BTk5PVCk7CiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9GVU5DVElPTiIsIEZ1bmN0aW9uQmxvY2spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0NMQVNTIiwgQ2xhc3NCbG9jayk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IGQyY2FhY2QuLmYwNzA4MzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0xNjAsNyArMTYwLDkgQEAKICJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogCisjaWZkZWYgSEFWRV9DTE9DS19TRVRUSU1FCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19zZXR0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MSw3ICsxOTMsOSBAQAogImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAogXG5cCiBTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX1NFVFRJTUUgKi8KIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19nZXRyZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjE1LDcgKzIxOSw3IEBACiAiY2xvY2tfZ2V0cmVzKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgcmVzb2x1dGlvbiAocHJlY2lzaW9uKSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKLSNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLworI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRSRVMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCkBAIC0yNTAsMTAgKzI1NCw4IEBACiAgICAgeyJ0bV93ZGF5IiwgImRheSBvZiB3ZWVrLCByYW5nZSBbMCwgNl0sIE1vbmRheSBpcyAwIn0sCiAgICAgeyJ0bV95ZGF5IiwgImRheSBvZiB5ZWFyLCByYW5nZSBbMSwgMzY2XSJ9LAogICAgIHsidG1faXNkc3QiLCAiMSBpZiBzdW1tZXIgdGltZSBpcyBpbiBlZmZlY3QsIDAgaWYgbm90LCBhbmQgLTEgaWYgdW5rbm93biJ9LAotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICB7InRtX3pvbmUiLCAiYWJicmV2aWF0aW9uIG9mIHRpbWV6b25lIG5hbWUifSwKICAgICB7InRtX2dtdG9mZiIsICJvZmZzZXQgZnJvbSBVVEMgaW4gc2Vjb25kcyJ9LAotI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7MH0KIH07CiAKQEAgLTI3NSw3ICsyNzcsMTEgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotdG10b3R1cGxlKHN0cnVjdCB0bSAqcCkKK3RtdG90dXBsZShzdHJ1Y3QgdG0gKnAKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgICAgICAsIGNvbnN0IGNoYXIgKnpvbmUsIGludCBnbXRvZmYKKyNlbmRpZgorKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlN0cnVjdFRpbWVUeXBlKTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjk2LDYgKzMwMiwxMCBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwKICAgICAgICAgUHlVbmljb2RlX0RlY29kZUxvY2FsZShwLT50bV96b25lLCAic3Vycm9nYXRlZXNjYXBlIikpOwogICAgIFNFVCgxMCwgcC0+dG1fZ210b2ZmKTsKKyNlbHNlCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LAorICAgICAgICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHpvbmUsICJzdXJyb2dhdGVlc2NhcGUiKSk7CisgICAgU0VUKDEwLCBnbXRvZmYpOwogI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICN1bmRlZiBTRVQKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMzExLDcgKzMyMSw3IEBACiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQorcGFyc2VfdGltZV90X2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdGltZV90ICpwd2hlbikKIHsKICAgICBQeU9iamVjdCAqb3QgPSBOVUxMOwogICAgIHRpbWVfdCB3aGVudDsKQEAgLTMzMywyNCArMzQzLDM0IEBACiB0aW1lX2dtdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgdGltZV90IHdoZW47Ci0gICAgc3RydWN0IHRtIGJ1ZiwgKmxvY2FsOworICAgIHN0cnVjdCB0bSBidWY7CiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZXJybm8gPSAwOwotICAgIGxvY2FsID0gZ210aW1lKCZ3aGVuKTsKLSAgICBpZiAobG9jYWwgPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgfQotICAgIGJ1ZiA9ICpsb2NhbDsKKyAgICBpZiAoX1B5VGltZV9nbXRpbWUod2hlbiwgJmJ1ZikgIT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CisjZWxzZQorICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1ZiwgIlVUQyIsIDApOworI2VuZGlmCiB9CiAKKyNpZm5kZWYgSEFWRV9USU1FR00KK3N0YXRpYyB0aW1lX3QKK3RpbWVnbShzdHJ1Y3QgdG0gKnApCit7CisgICAgLyogWFhYOiB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdpbGwgbm90IHdvcmsgZm9yIHRtX3llYXIgPCAxOTcwLgorICAgICAgIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIHRpbWVnbSBkbyBub3Qgc3VwcG9ydAorICAgICAgIG5lZ2F0aXZlIHRpbWVzdGFtcHMgYW55d2F5cy4gKi8KKyAgICByZXR1cm4gcC0+dG1fc2VjICsgcC0+dG1fbWluKjYwICsgcC0+dG1faG91ciozNjAwICsgcC0+dG1feWRheSo4NjQwMCArCisgICAgICAgIChwLT50bV95ZWFyLTcwKSozMTUzNjAwMCArICgocC0+dG1feWVhci02OSkvNCkqODY0MDAgLQorICAgICAgICAoKHAtPnRtX3llYXItMSkvMTAwKSo4NjQwMCArICgocC0+dG1feWVhcisyOTkpLzQwMCkqODY0MDA7Cit9CisjZW5kaWYKKwogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCiAiZ210aW1lKFtzZWNvbmRzXSkgLT4gKHRtX3llYXIsIHRtX21vbiwgdG1fbWRheSwgdG1faG91ciwgdG1fbWluLFxuXAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXApAQCAtMzYxLDI2ICszODEsNiBAQAogSWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHRoZSB0bV9nbXRvZmYgYW5kIHRtX3pvbmUsIHRoZXkgYXJlIGF2YWlsYWJsZSBhc1xuXAogYXR0cmlidXRlcyBvbmx5LiIpOwogCi1zdGF0aWMgaW50Ci1weWxvY2FsdGltZSh0aW1lX3QgKnRpbWVwLCBzdHJ1Y3QgdG0gKnJlc3VsdCkKLXsKLSAgICBzdHJ1Y3QgdG0gKmxvY2FsOwotCi0gICAgYXNzZXJ0ICh0aW1lcCAhPSBOVUxMKTsKLSAgICBsb2NhbCA9IGxvY2FsdGltZSh0aW1lcCk7Ci0gICAgaWYgKGxvY2FsID09IE5VTEwpIHsKLSAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCi0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpyZXN1bHQgPSAqbG9jYWw7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2xvY2FsdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0zODksOSArMzg5LDIwIEBACiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChweWxvY2FsdGltZSgmd2hlbiwgJmJ1ZikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHdoZW4sICZidWYpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOworI2Vsc2UKKyAgICB7CisgICAgICAgIHN0cnVjdCB0bSBsb2NhbCA9IGJ1ZjsKKyAgICAgICAgY2hhciB6b25lWzEwMF07CisgICAgICAgIGludCBnbXRvZmY7CisgICAgICAgIHN0cmZ0aW1lKHpvbmUsIHNpemVvZihidWYpLCAiJVoiLCAmYnVmKTsKKyAgICAgICAgZ210b2ZmID0gdGltZWdtKCZidWYpIC0gd2hlbjsKKyAgICAgICAgcmV0dXJuIHRtdG90dXBsZSgmbG9jYWwsIHpvbmUsIGdtdG9mZik7CisgICAgfQorI2VuZGlmCiB9CiAKIFB5RG9jX1NUUlZBUihsb2NhbHRpbWVfZG9jLApAQCAtNTczLDcgKzU4NCw3IEBACiAKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKLSAgICAgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKSB8fCAhY2hlY2t0bSgmYnVmKSkKQEAgLTczMiwxMCArNzQzLDEwIEBACiB7CiAgICAgLyogSW5zcGlyZWQgYnkgT3BlbiBHcm91cCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGF0CiAgICAgICogaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvYXNjdGltZS5odG1sICovCi0gICAgc3RhdGljIGNoYXIgd2RheV9uYW1lWzddWzRdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyIHdkYXlfbmFtZVs3XVs0XSA9IHsKICAgICAgICAgIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIKICAgICB9OwotICAgIHN0YXRpYyBjaGFyIG1vbl9uYW1lWzEyXVs0XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CiAgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKICAgICB9OwpAQCAtNzU4LDcgKzc2OSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHR0LCAmYnVmKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQpAQCAtNzgwLDcgKzc5MSw3IEBACiAgICAgc3RydWN0IHRtIGJ1ZjsKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpjdGltZSIsICZ0dCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwogfQpAQCAtMTAzNCw2ICsxMDQ1LDcgQEAKICAgICB9CiAjZW5kaWYKIAorICAgIC8qIEN1cnJlbnRseSwgUHl0aG9uIDMgcmVxdWlyZXMgY2xvY2soKSB0byBidWlsZDogc2VlIGlzc3VlICMyMjYyNCAqLwogICAgIHJldHVybiBmbG9hdGNsb2NrKGluZm8pOwogI2VuZGlmCiB9CkBAIC0xMTQ1LDYgKzExNTcsMjcgQEAKIEdldCBpbmZvcm1hdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrLiIpOwogCiBzdGF0aWMgdm9pZAorZ2V0X3pvbmUoY2hhciAqem9uZSwgaW50IG4sIHN0cnVjdCB0bSAqcCkKK3sKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgc3RybmNweSh6b25lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCBuKTsKKyNlbHNlCisgICAgdHpzZXQoKTsKKyAgICBzdHJmdGltZSh6b25lLCBuLCAiJVoiLCBwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitnZXRfZ210b2ZmKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnApCit7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHJldHVybiBwLT50bV9nbXRvZmY7CisjZWxzZQorICAgIHJldHVybiB0aW1lZ20ocCkgLSB0OworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCiBQeUluaXRfdGltZXpvbmUoUHlPYmplY3QgKm0pIHsKICAgICAvKiBUaGlzIGNvZGUgbW92ZWQgZnJvbSBQeUluaXRfdGltZSB3aG9sZXNhbGUgdG8gYWxsb3cgY2FsbGluZyBpdCBmcm9tCiAgICAgdGltZV90enNldC4gSW4gdGhlIGZ1dHVyZSwgc29tZSBwYXJ0cyBvZiBpdCBjYW4gYmUgbW92ZWQgYmFjawpAQCAtMTE3NiwyMiArMTIwOSwyMSBAQAogICAgIG90ejEgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHR6bmFtZVsxXSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidHpuYW1lIiwgUHlfQnVpbGRWYWx1ZSgiKE5OKSIsIG90ejAsIG90ejEpKTsKICNlbHNlIC8qICFIQVZFX1RaTkFNRSB8fCBfX0dMSUJDX18gfHwgX19DWUdXSU5fXyovCi0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHsKICNkZWZpbmUgWUVBUiAoKHRpbWVfdCkoKDM2NSAqIDI0ICsgNikgKiAzNjAwKSkKICAgICAgICAgdGltZV90IHQ7Ci0gICAgICAgIHN0cnVjdCB0bSAqcDsKKyAgICAgICAgc3RydWN0IHRtIHA7CiAgICAgICAgIGxvbmcgamFuem9uZSwganVseXpvbmU7CiAgICAgICAgIGNoYXIgamFubmFtZVsxMF0sIGp1bHluYW1lWzEwXTsKICAgICAgICAgdCA9ICh0aW1lKCh0aW1lX3QgKikwKSAvIFlFQVIpICogWUVBUjsKLSAgICAgICAgcCA9IGxvY2FsdGltZSgmdCk7Ci0gICAgICAgIGphbnpvbmUgPSAtcC0+dG1fZ210b2ZmOwotICAgICAgICBzdHJuY3B5KGphbm5hbWUsIHAtPnRtX3pvbmUgPyBwLT50bV96b25lIDogIiAgICIsIDkpOworICAgICAgICBfUHlUaW1lX2xvY2FsdGltZSh0LCAmcCk7CisgICAgICAgIGdldF96b25lKGphbm5hbWUsIDksICZwKTsKKyAgICAgICAgamFuem9uZSA9IC1nZXRfZ210b2ZmKHQsICZwKTsKICAgICAgICAgamFubmFtZVs5XSA9ICdcMCc7CiAgICAgICAgIHQgKz0gWUVBUi8yOwotICAgICAgICBwID0gbG9jYWx0aW1lKCZ0KTsKLSAgICAgICAganVseXpvbmUgPSAtcC0+dG1fZ210b2ZmOwotICAgICAgICBzdHJuY3B5KGp1bHluYW1lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCA5KTsKKyAgICAgICAgX1B5VGltZV9sb2NhbHRpbWUodCwgJnApOworICAgICAgICBnZXRfem9uZShqdWx5bmFtZSwgOSwgJnApOworICAgICAgICBqdWx5em9uZSA9IC1nZXRfZ210b2ZmKHQsICZwKTsKICAgICAgICAganVseW5hbWVbOV0gPSAnXDAnOwogCiAgICAgICAgIGlmKCBqYW56b25lIDwganVseXpvbmUgKSB7CkBAIC0xMjEzLDggKzEyNDUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFubmFtZSwganVseW5hbWUpKTsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0jZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI2lmZGVmIF9fQ1lHV0lOX18KICAgICB0enNldCgpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJ0aW1lem9uZSIsIF90aW1lem9uZSk7CkBAIC0xMjI0LDI1ICsxMjU0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHp6KSIsIF90em5hbWVbMF0sIF90em5hbWVbMV0pKTsKICNlbmRpZiAvKiBfX0NZR1dJTl9fICovCiAjZW5kaWYgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KLQotI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKQotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKLSNpZmRlZiBDTE9DS19NT05PVE9OSUMKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfSElHSFJFUwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOwotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiB9CiAKIApAQCAtMTI1Myw3ICsxMjY0LDExIEBACiAjZW5kaWYKICNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKICAgICB7ImNsb2NrX2dldHRpbWUiLCAgIHRpbWVfY2xvY2tfZ2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXR0aW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX0NMT0NLX1NFVFRJTUUKICAgICB7ImNsb2NrX3NldHRpbWUiLCAgIHRpbWVfY2xvY2tfc2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19zZXR0aW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFJFUwogICAgIHsiY2xvY2tfZ2V0cmVzIiwgICAgdGltZV9jbG9ja19nZXRyZXMsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0cmVzX2RvY30sCiAjZW5kaWYKICAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfTywgc2xlZXBfZG9jfSwKQEAgLTEzNDksMTcgKzEzNjQsMzIgQEAKICAgICAvKiBTZXQsIG9yIHJlc2V0LCBtb2R1bGUgdmFyaWFibGVzIGxpa2UgdGltZS50aW1lem9uZSAqLwogICAgIFB5SW5pdF90aW1lem9uZShtKTsKIAorI2lmZGVmIENMT0NLX1JFQUxUSU1FCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUkVBTFRJTUUpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX01PTk9UT05JQ19SQVcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUNfUkFXKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX0hJR0hSRVMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19ISUdIUkVTKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEKTsKKyNlbmRpZgorCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0cnVjdFRpbWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOwotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDExKTsKLSNlbHNlCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCA5KTsKLSNlbmRpZgogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3RpbWUiLCAoUHlPYmplY3QqKSAmU3RydWN0VGltZVR5cGUpOwogICAgIGluaXRpYWxpemVkID0gMTsKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGEuYyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwppbmRleCAxZjliYTc4Li45ZTcxZTAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCkBAIC00NSw2ICs0NSw3IEBACiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBjYXRlZ29yeV9jaGFuZ2VkOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVjaW1hbF9jaGFuZ2VkOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgbWlycm9yZWRfY2hhbmdlZDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZDsKICAgICBjb25zdCBkb3VibGUgbnVtZXJpY19jaGFuZ2VkOwogfSBjaGFuZ2VfcmVjb3JkOwogCkBAIC0zNzUsNiArMzc2LDggQEAKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CiAgICAgICAgIGlmIChvbGQtPmNhdGVnb3J5X2NoYW5nZWQgPT0gMCkKICAgICAgICAgICAgIGluZGV4ID0gMDsgLyogdW5hc3NpZ25lZCAqLworICAgICAgICBlbHNlIGlmIChvbGQtPmVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZCAhPSAweEZGKQorICAgICAgICAgICAgaW5kZXggPSBvbGQtPmVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZDsKICAgICB9CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVVuaWNvZGVfRWFzdEFzaWFuV2lkdGhOYW1lc1tpbmRleF0pOwogfQpAQCAtODg0LDcgKzg4Nyw3IEBACiAgICAgcmV0dXJuIGg7CiB9CiAKLXN0YXRpYyBjaGFyICpoYW5ndWxfc3lsbGFibGVzW11bM10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhhbmd1bF9zeWxsYWJsZXNbXVszXSA9IHsKICAgICB7ICJHIiwgICJBIiwgICAiIiAgIH0sCiAgICAgeyAiR0ciLCAiQUUiLCAgIkciICB9LAogICAgIHsgIk4iLCAgIllBIiwgICJHRyIgfSwKQEAgLTEwNTcsNyArMTA2MCw3IEBACiAgICAgaW50IGksIGxlbjE7CiAgICAgKmxlbiA9IC0xOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07CiAgICAgICAgIGxlbjEgPSBQeV9TQUZFX0RPV05DQVNUKHN0cmxlbihzKSwgc2l6ZV90LCBpbnQpOwogICAgICAgICBpZiAobGVuMSA8PSAqbGVuKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggODlkODc2OC4uZWE0MGMyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiOC4wLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiOS4wLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMjQyLDEyICsyNDIsMTMgQEAKICAgICB7MjcsIDAsIDExLCAwLCA1LCAwfSwKICAgICB7MjcsIDAsIDE5LCAxLCA0LCAxMzZ9LAogICAgIHsyNywgMCwgMTksIDEsIDQsIDEwfSwKKyAgICB7MzAsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MjIsIDAsIDE5LCAxLCAyLCAxNzB9LAogICAgIHsyMywgMCwgMTksIDEsIDIsIDE3MH0sCiAgICAgezMwLCAwLCAxLCAwLCA0LCAxMzZ9LAogICAgIHs5LCAwLCAxOSwgMCwgNCwgMH0sCisgICAgezI3LCAwLCAxOSwgMCwgMiwgMH0sCiAgICAgezI3LCAwLCAxOSwgMSwgNSwgMTcwfSwKLSAgICB7MzAsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MzAsIDAsIDE5LCAwLCAyLCAxMzZ9LAogICAgIHsxMCwgMCwgMTgsIDAsIDAsIDEzNn0sCiAgICAgezI2LCAwLCAxOSwgMCwgMiwgMH0sCkBAIC0zMjksNiArMzMwLDcgQEAKICAgICB7MSwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezIsIDAsIDQsIDAsIDUsIDB9LAogICAgIHs5LCAwLCAxMiwgMCwgNSwgMH0sCisgICAgezQsIDksIDEsIDAsIDUsIDB9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTcwfSwKICAgICB7NSwgMjE2LCAxLCAwLCA1LCAwfSwKICAgICB7NSwgMjI2LCAxLCAwLCA1LCAwfSwKQEAgLTMzNiw2ICszMzgsNyBAQAogICAgIHs3LCAwLCA5LCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDQsIDB9LAorICAgIHsyOSwgMCwgMTksIDAsIDIsIDB9LAogfTsKIAogLyogUmVpbmRleGluZyBvZiBORkMgZmlyc3QgY2hhcmFjdGVycy4gKi8KQEAgLTczMCwzOSArNzMzLDM5IEBACiAgICAgMTI1LCAxMjYsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIAogICAgIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTM4LCA0MSwgNDEsIDE0NSwgMTM4LCAxNDYsIDE0NywgMTQ4LCAKICAgICAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDEzOCwgMTM4LCAxNTYsIDEzOCwgMTM4LCAxMzgsIDE1NywgCi0gICAgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTM4LCAxMzgsIDE2NCwgMTM4LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAotICAgIDEzOCwgMTM4LCAxNjksIDEzOCwgMTM4LCAxMzgsIDE3MCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTcxLCAxNzIsIDQxLCAxNzMsIDEzOCwgMTM4LCAKKyAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDE2NCwgMTY1LCAxMzgsIDE2NiwgMTY3LCAxNjgsIDE2OSwgCisgICAgMTM4LCAxMzgsIDE3MCwgMTM4LCAxMzgsIDEzOCwgMTcxLCAxMzgsIDEzOCwgMTcyLCAxNzMsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDE3NSwgNDEsIDE3NiwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzcsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzYsIDE3NywgMTc4LCAxNzksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDE4MCwgMTgxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzksIDE4MCwgMTgxLCAxODIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4MywgMTg0LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTg1LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTg2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTg4LCAxODksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTgyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTgzLCAxODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTg1LCAKLSAgICAxODYsIDE4NywgMTg4LCAxMzgsIDE4OSwgMTM4LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgNzgsIAotICAgIDc4LCA3OCwgNzgsIDE5OCwgMTk5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMjAwLCAyMDEsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMjAyLCAyMDMsIDEzOCwgMTM4LCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMTM4LCAyMDksIDIxMCwgMjA5LCAyMDksIAotICAgIDIxMSwgMjEyLCAyMDksIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxOTAsIAorICAgIDE5MSwgMTkyLCAxOTMsIDEzOCwgMTk0LCAxMzgsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjAzLCAyMDQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjA1LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAyMDYsIDIwNywgMjA4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAyMDksIDIxMCwgMTM4LCAxMzgsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAxMzgsIDIxNiwgMjE3LCAyMTgsIDIxOSwgCisgICAgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIApAQCAtNzg3LDE5ICs3OTAsMTkgQEAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIzMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIyMSwgMTAxLCAyMjIsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMzEsIDEwMSwgMjMyLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMjIzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMDEsIDIzMywgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMjIsIDEyMiwgMTIyLCAxMjIsIDIyNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTIyLCAxMjIsIDEyMiwgMTIyLCAyMzQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIApAQCAtMTIwMiw3ICsxMjA1LDcgQEAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMjUsIDEzOCwgMjI2LCAyMjcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMjM1LCAxMzgsIDIzNiwgMjM3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIApAQCAtMTI3NSw3ICsxMjc4LDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIyOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAyMzgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIApAQCAtMTMxMiw3ICsxMzE1LDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDIyOCwgCisgICAgMTIxLCAyMzgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTQ0NCwxNzAgKzE0NDcsMTcxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCAKLSAgICA4MSwgODEsIDg2LCA4NiwgODYsIDEyMSwgMTIyLCAxMjMsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDEzOSwgCi0gICAgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIAotICAgIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgCi0gICAgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIAotICAgIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAKLSAgICAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAKLSAgICAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAKLSAgICAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgCi0gICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgCi0gICAgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIAotICAgIDE0NywgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIAotICAgIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMDgsIAorICAgIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCAxMjEsIDEyMiwgMTIzLCA4MSwgCisgICAgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIAotICAgIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgMCwgMTU1LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAKLSAgICAxNDcsIDEzOSwgMTQ3LCAxNDcsIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAKLSAgICAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgCi0gICAgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAKLSAgICAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIAotICAgIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIAotICAgIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIAotICAgIDE2NiwgMTY2LCAxMzUsIDEzOSwgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIAotICAgIDEzOSwgMTM1LCAxNDksIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAKLSAgICAxNDIsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTM5LCAxMzksIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzOSwgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIAorICAgIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgODAsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgCisgICAgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCA4MCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMTQ2LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxNTUsIDAsIDAsIDAsIAorICAgIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIDE0NywgMTM5LCAxNDcsIDE0NywgCisgICAgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgCisgICAgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTY1LCAKKyAgICAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxMzUsIDEzOSwgCisgICAgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxNDksIDEzNSwgCisgICAgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAxNDIsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKKyAgICA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDgxLCA4MSwgCisgICAgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCAwLCA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAorICAgIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMTYyNyw0NSArMTYzMSw0NSBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTQyLCAxMzUsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTc0LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAKKyAgICAxMzUsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTc0LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA4OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCiAgICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCiAgICAgMTM5LCAxMzksIDg3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTE3MTQsMjcgKzE3MTgsMjcgQEAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCAKLSAgICA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NiwgMTc2LCAKLSAgICAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAotICAgIDgxLCA0OCwgNDgsIDAsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgCisgICAgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzksIDEzOSwgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIAorICAgIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAogICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgMTc3LCAKLSAgICAxNzgsIDg2LCAxNzksIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIAorICAgIDgxLCA4MSwgMTc3LCAxNzgsIDg2LCAxNzksIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MCwgODYsIDgxLCA4NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDgxLCAxODAsIDg2LCA4MSwgODYsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKQEAgLTE3NDMsMzMyICsxNzQ3LDMzMyBAQAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAKLSAgICAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIAotICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAotICAgIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCA1OCwgNTgsIDc2LCA0MywgNDMsIAotICAgIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCAwLCAwLCAKLSAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCA0MywgNDMsIDQzLCA0MywgCi0gICAgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIAotICAgIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCi0gICAgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIAotICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIAotICAgIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIAotICAgIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIAotICAgIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgCi0gICAgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMjE0LCAKLSAgICA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMTQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAwLCAwLCA4NSwgODUsIDg1LCA4NSwgCi0gICAgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAKLSAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIDgxLCAxNzYsIDE3NiwgODYsIDg2LCAKLSAgICA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjIsIDIyMiwgNDksIAotICAgIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIAotICAgIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIDIyMywgMjIzLCAyNiwgNDksIAotICAgIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAKLSAgICAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAyMjcsIDIyNywgMjI3LCAKLSAgICAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIAotICAgIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyMzEsIDIzMCwgMjMwLCAyNiwgMjYsIDQwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgCi0gICAgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgMjMyLCAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAKLSAgICAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgCi0gICAgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgNDAsIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAKLSAgICAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCA3OCwgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgCi0gICAgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAKLSAgICAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKLSAgICAyNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAKKyAgICAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAKKyAgICAxODIsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDE4MywgNTgsIDE4MiwgCisgICAgNTgsIDU4LCA3NiwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDc2LCA3NiwgNzYsIDQzLCAKKyAgICA0MywgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDAsIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIAorICAgIDE4MiwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMzgsIDc2LCAxODUsIDE4NSwgMCwgMCwgNDMsIDQzLCA0MywgCisgICAgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDE4NSwgNTgsIDAsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxNzQsIDE3NCwgMTc0LCAxODgsIDE4OSwgMTkwLCAxOTEsIDg0LCAxOTAsIAorICAgIDE5MCwgMTkwLCAyMiwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIDE5NiwgMjIsIDIyLCAyMiwgCisgICAgMTM4LCAxOTcsIDE5NywgMTk3LCAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMSwgMjA1LCAxMTAsIAorICAgIDIwNSwgMjA2LCAyMDcsIDIyLCAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIDEzOCwgMTk3LCAyMDgsIDIwOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMjA5LCAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDIxNCwgNTEsIDAsIDAsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgCisgICAgMjE3LCAyMTgsIDIxOSwgMjE0LCAzNCwgMzQsIDM0LCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAKKyAgICAyMTYsIDIxNywgMjE4LCAwLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgMCwgCisgICAgMCwgMCwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAyMjAsIDIyMSwgODUsIDg1LCAyMywgODUsIDg1LCA4NSwgCisgICAgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgODEsIDgxLCA4MSwgODEsIAorICAgIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAxNzYsIDE3NiwgODEsIDg2LCAKKyAgICA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjIyLCAyMjIsIDQ5LCAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCA0OSwgNDksIDQ5LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ2LCAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgNDksIDI2LCAyNiwgMjIyLCAKKyAgICAyMjMsIDIyMywgMjYsIDQ5LCAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAyMjUsIDM1LCA0OSwgNDksIAorICAgIDQ0LCA0OSwgMzUsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIDQ5LCAyMjYsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgMjI3LCAyMjcsIDM3LCAKKyAgICAzNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAKKyAgICAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjMwLCAyMzAsIDI2LCAyNiwgMjYsIDI2LCA3OCwgMjYsIAorICAgIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMxLCAyMzAsIDIzMCwgMjYsIDI2LCA0MCwgMjYsIDQwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIDIzMiwgMjMzLCAyMzMsIDIzNCwgNzgsIDc4LCA0MCwgMjMzLCAyMzQsIDIzMiwgCisgICAgMjMzLCAyMzQsIDIzMiwgNzgsIDQwLCA3OCwgMjMzLCAyMzUsIDIzNiwgNzgsIDIzMywgMjMyLCA3OCwgNzgsIDc4LCAyMzMsIAorICAgIDIzMiwgMjMyLCAyMzMsIDQwLCAyMzMsIDIzMywgMjMyLCAyMzIsIDQwLCAyMzQsIDQwLCAyMzQsIDQwLCA0MCwgNDAsIDQwLCAKKyAgICAyMzMsIDIzNywgMjI2LCAyMzMsIDIyNiwgMjI2LCAyMzIsIDIzMiwgMjMyLCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIzMiwgNzgsIAorICAgIDIzMiwgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMzLCAKKyAgICAyMzQsIDIzMiwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzOCwgNDAsIDIzNCwgNzgsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMyLCAKKyAgICAyMzIsIDIzMywgMjMzLCA3OCwgMjMwLCAyMzgsIDIzOCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIAorICAgIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAKKyAgICAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDQwLCA3OCwgNzgsIDIzMiwgNDAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA0MCwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgCisgICAgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjQwLCAyNDEsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjYsIDc4LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKICAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKLSAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyMjcsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCi0gICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMwLCAKKyAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjI3LCAKKyAgICAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgCisgICAgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKLSAgICAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjQ0LCAyNDQsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgCisgICAgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjM5LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAyMzksIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAKKyAgICAzMCwgMjM5LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAotICAgIDE2MywgMTY0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDE1MywgMTUzLCAKKyAgICAxNjMsIDE2NCwgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAxNTMsIDE1MywgCiAgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjMyLCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAxNjMsIDE2NCwgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAxNjMsIAotICAgIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAotICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjI2LCAyMTYsIAotICAgIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAxNjMsIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgCisgICAgMjI2LCAyMTYsIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyNDMsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDI0NSwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA0NCwgNDQsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAKKyAgICAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIAotICAgIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKLSAgICAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMCwgMCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgODQsIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgCisgICAgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMTM4LCAKKyAgICAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAyNDYsIDI0NywgMjQ3LCAyNDcsIDI0NCwgMjQ4LCAxNzAsIDI0OSwgMjUwLCAyNTEsIAotICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNDQsIDI0NCwgMjUwLCAyNTEsIDI1MCwgMjUxLCAKLSAgICAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NCwgMjQ0LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgCi0gICAgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjU5LCAyNTIsIDI0OCwgMjQ4LCAyNDgsIAotICAgIDI0OCwgMjQ4LCAyNDUsIDI0NCwgMjYwLCAyNjAsIDI2MCwgMjQ4LCAxNzAsIDI0NywgMjQ0LCAyNiwgMCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDAsIAotICAgIDAsIDI2MiwgMjYyLCAyNjMsIDI2MywgMjQ4LCAyNjQsIDI2NSwgMjUyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAKLSAgICAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNDcsIDI0OCwgMjQ4LCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjQ2LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDI0NywgMjQ4LCAyNDgsIDI0OCwgMjM5LCAyNDksIDE3MCwgCisgICAgMjUwLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDIzOSwgMjM5LCAyNTEsIAorICAgIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NSwgMjU1LCAyMzksIDI1MCwgMjUwLCAKKyAgICAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjYwLCAyNjAsIDI1MywgCisgICAgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0NiwgMjM5LCAyNjEsIDI2MSwgMjYxLCAyNDksIDE3MCwgMjQ4LCAyMzksIDI2LCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgCisgICAgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIAorICAgIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgCisgICAgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMjYzLCAyNjMsIDI2NCwgMjY0LCAyNDksIDI2NSwgMjY2LCAyNTMsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgCisgICAgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI0OCwgMjQ5LCAyNDksIDI2NSwgMjY2LCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAwLCAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMCwgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMCwgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ1LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI2NiwgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNDUsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjQ2LCAyNDYsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI0NiwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjQ2LCAyNDYsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0yMDgxLDIwICsyMDg2LDIwIEBACiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OSwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0yMTAzLDEyNCArMjEwOCwxMTUgQEAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgCi0gICAgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNTMsIDEzOCwgMTM4LCAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCA4MSwgODEsIDQ4LCA0OCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCAKKyAgICA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MiwgMjcxLCAyNzEsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0OCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA1MiwgMjcyLCAyNzIsIDQ0LCA0NywgNDQsIDQ3LCA0OCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDE0MiwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAKKyAgICA0OCwgNDgsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgCisgICAgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDQ4LCAKKyAgICA4MywgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgODYsIDg2LCA4MywgCisgICAgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDUzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgCisgICAgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MiwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAogICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCA4NiwgODYsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAotICAgIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgCi0gICAgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgCi0gICAgNDgsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgODEsIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCAKLSAgICA4MSwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMjcxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAKLSAgICAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKQEAgLTIyMjksNyArMjIyNSw4IEBACiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjc0LCAyNzQsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCkBAIC0yMjM4LDM4ICsyMjM1LDQ3IEBACiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAxNzAsIDE3MCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAyNzQsIDE3MCwgMTcwLCAxNzAsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAwLCAwLCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMTcwLCAxNzAsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMTcwLCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDE3MCwgMjc1LCAxNzAsIDI3NSwgMTcwLCAxNzAsIAorICAgIDI3NSwgMjc1LCAxNzAsIDE3MCwgMTcwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzUsIDI3NiwgMjc1LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgCi0gICAgMjc3LCAyNzcsIDI3NywgMjc3LCAyMTUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAotICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDI3NSwgMCwgMjc1LCAyNzUsIDAsIAotICAgIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzcsIDEzMSwgMTMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzYsIDI3NywgMjc2LCAKKyAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyMTUsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDAsIDI3NiwgMCwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDI3NiwgMjc2LCAyNzgsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzgsIDI3OCwgCi0gICAgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgCisgICAgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKQEAgLTIyODUsMjcgKzIyOTEsMjcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjc5LCAxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjgwLCAxOTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAyODAsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODIsIDI4MywgMjgxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCAKLSAgICA4MSwgMjgxLCAyODQsIDI4NCwgMjg1LCAyODUsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIAotICAgIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjQ3LCAyNDcsIDI4MiwgMjgzLCAyODEsIDI4MSwgMjgxLCAKLSAgICAyODEsIDI4NSwgMjg1LCAyODUsIDI4NiwgMjgxLCAyODYsIDAsIDI4MSwgMjg2LCAyODEsIDI4MSwgMjg0LCAyODcsIDI4OCwgCi0gICAgMjg3LCAyODgsIDI4NywgMjg4LCAyODksIDI4MSwgMjgxLCAyOTAsIDI5MSwgMjkyLCAyOTIsIDI5MywgMCwgMjgxLCAyOTQsIAotICAgIDI4OSwgMjgxLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyODEsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMjgyLCAyODIsIDI4MiwgMjgyLCAyODIsIDI4MiwgCisgICAgMjgyLCAyODMsIDI4NCwgMjgyLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgMjgyLCAyODUsIDI4NSwgMjg2LCAyODYsIDI4MywgMjg0LCAyODMsIDI4NCwgCisgICAgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjQ4LCAyNDgsIAorICAgIDI4MywgMjg0LCAyODIsIDI4MiwgMjgyLCAyODIsIDI4NiwgMjg2LCAyODYsIDI4NywgMjgyLCAyODcsIDAsIDI4MiwgMjg3LCAKKyAgICAyODIsIDI4MiwgMjg1LCAyODgsIDI4OSwgMjg4LCAyODksIDI4OCwgMjg5LCAyOTAsIDI4MiwgMjgyLCAyOTEsIDI5MiwgCisgICAgMjkzLCAyOTMsIDI5NCwgMCwgMjgyLCAyOTUsIDI5MCwgMjgyLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIAorICAgIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKQEAgLTIzMTQsMTY1ICsyMzIwLDE2NSBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTc0LCAwLCAyOTUsIDI5NSwgMjk2LCAyOTcsIDI5NiwgMjk1LCAyOTUsIAotICAgIDI5OCwgMjk5LCAyOTUsIDMwMCwgMzAxLCAzMDIsIDMwMSwgMzAxLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMSwgMjk1LCAzMDQsIDMwNSwgMzA0LCAyOTUsIDI5NSwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIAotICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDI5OCwgMjk1LCAyOTksIDMwNywgMzA4LCAKLSAgICAzMDcsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCi0gICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAyOTgsIAotICAgIDMwNSwgMjk5LCAzMDUsIDI5OCwgMjk5LCAzMTAsIDMxMSwgMzEyLCAzMTAsIDMxMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzE0LCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDAsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIAotICAgIDAsIDI5NywgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgCi0gICAgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk2LCAyOTYsIAorICAgIDI5NywgMjk4LCAyOTcsIDI5NiwgMjk2LCAyOTksIDMwMCwgMjk2LCAzMDEsIDMwMiwgMzAzLCAzMDIsIDMwMiwgMzA0LCAKKyAgICAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDIsIDI5NiwgMzA1LCAzMDYsIDMwNSwgCisgICAgMjk2LCAyOTYsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAorICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKKyAgICAyOTksIDI5NiwgMzAwLCAzMDgsIDMwOSwgMzA4LCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgCisgICAgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIAorICAgIDMxMCwgMzEwLCAzMTAsIDMxMCwgMjk5LCAzMDYsIDMwMCwgMzA2LCAyOTksIDMwMCwgMzExLCAzMTIsIDMxMywgMzExLCAKKyAgICAzMTEsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE1LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTUsIDMxNSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAKKyAgICAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAKKyAgICAwLCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAyOTgsIDI5OCwgMzA2LCAzMDgsIDMxNiwgMjk4LCAyOTgsIDAsIDMxNywgCisgICAgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTcsIDMxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE5LCAzMTksIAorICAgIDMxOSwgMjYsIDMwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAKKyAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2LCAzMjAsIDMyMCwgMzIwLCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyMCwgCiAgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDE1MywgCisgICAgMjYsIDgwLCA4MCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA4NiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDE3MywgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIzLCAzMjMsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDEwNywgMTA3LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMTA3LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMTM1LCA4NiwgMTM1LCAKLSAgICA4MSwgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAKKyAgICAxMzUsIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgMCwgMCwgCi0gICAgMCwgMTQyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgCisgICAgMCwgMCwgMCwgMTQyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAzMjEsIDMyMSwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAzMjIsIDMyMiwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIApAQCAtMjQ4MywyMSArMjQ4OSwyMSBAQAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKICAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCiAgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAotICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCiAgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAotICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAwLCAxMzksIDEzNSwgMTM5LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKKyAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCisgICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDAsIDEzOSwgMTM1LCAxMzksIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKQEAgLTI1MzAsMTUgKzI1MzYsMTUgQEAKICAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5LCAxMzUsIDE3NSwgMTQ1LCAxMzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTI1NTAsNiArMjU1NiwxMyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCAxNDIsIDEzNSwgMTM1LCAxMzksIDE0NSwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCA4MywgMCwgODMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTQ5LCAxNDcsIDE0NywgMTQ2LCAKICAgICAxNDcsIDEzNSwgMTM1LCAxMzksIDE0MiwgMTQ1LCA0OCwgNDgsIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTI1NjYsMjMwICsyNTc5LDI2OCBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxNDIsIDEzNSwgODMsIDgzLCAKICAgICA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIAotICAgIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDgzLCAKLSAgICA4MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE3NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgODMsIDgzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIAotICAgIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMzI3LCA0OCwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgODAsIDEzNSwgMTc2LCA4MywgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCi0gICAgMzI3LCAzMjcsIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIDMyOCwgMzI3LCAzMjcsIDMyNywgMzI3LCAzMjcsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCAKLSAgICA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNzYsIDE3NiwgMTc2LCAKKyAgICAxNzYsIDE3NiwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA1MywgNTMsIDUzLCA1MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MCwgMTM1LCAxNzYsIDgzLCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI5LCAzMjksIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIAorICAgIDMzMCwgMzI5LCAzMjksIDMyOSwgMzI5LCAzMjksIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgCi0gICAgMCwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAKKyAgICAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCA4MCwgODAsIDgwLCA4MCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCAwLCA4MSwgODEsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCkBAIC0yODAzLDExICsyODU0LDE4IEBACiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAotICAgIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIAotICAgIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCA4NiwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIAogICAgIDEzMSwgMCwgMTMxLCAwLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKQEAgLTI4MjEsNyArMjg3OSw3IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIApAQCAtMjgzMiwxNzMgKzI4OTAsMjA4IEBACiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTUzLCAxNTMsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDMzMSwgMCwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDI0MSwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTUzLCAxNTMsIDAsIDAsIDAsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMzMywgMCwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMjY3LCAzMzQsIDI0MiwgMjY3LCAyNjcsIDI2NywgCisgICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAKLSAgICAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNTQsIDU0LCAKLSAgICA1NCwgNTQsIDU0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAKKyAgICAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAzMzUsIDMzNSwgMzM1LCAzMzUsIDMzNSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjYsIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDAsIDAsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDAsIDAsIAogfTsKIAogLyogZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC0zOTcwLDEwMiArNDA2MywxMDIgQEAKICAgICAyNjYsIDI4NDM2LCAyNjYsIDI1MjM3LCAyNjYsIDI1NDI5LCAyNjYsIDE5OTY4LCAyNjYsIDE5OTc3LCAyNjYsIDM2OTM4LCAKICAgICAyNjYsIDI0MDM4LCAyNjYsIDIwMDEzLCAyNjYsIDIxNDkxLCAyNjYsIDI1MzUxLCAyNjYsIDM2MjA4LCAyNjYsIDI1MTcxLCAKICAgICAyNjYsIDMxMTA1LCAyNjYsIDMxMzU0LCAyNjYsIDIxNTEyLCAyNjYsIDI4Mjg4LCAyNjYsIDI2Mzc3LCAyNjYsIDI2Mzc2LCAKLSAgICAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIDc3MCwgMTIzMDgsIAotICAgIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgMTIzMDksIDc3MCwgCi0gICAgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAzMDQyMywgMTIzMDksIAotICAgIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIDI0NDcxLCAyNjMsIAotICAgIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAyMDMyMCwgMjU2LCAKLSAgICAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAyMDcxMSwgMjU2LCAKLSAgICAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgMjA4MzYsIDI1NiwgCi0gICAgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIDEzMjQyNywgMjU2LCAKLSAgICAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAxNjg0MTUsIDI1NiwgCi0gICAgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgMjExMDYsIDI1NiwgCi0gICAgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEyNDIsIDI1NiwgCi0gICAgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgMjEzMzgsIDI1NiwgCi0gICAgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMTMzNjc2LCAyNTYsIAotICAgIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAyMTQ4OSwgMjU2LCAKLSAgICAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAyMTY2NiwgMjU2LCAKLSAgICAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAyMTg5MiwgMjU2LCAKLSAgICAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAyMjAyMiwgMjU2LCAKLSAgICAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAyMjQ3OCwgMjU2LCAKLSAgICAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAyMjcwMCwgMjU2LCAKLSAgICAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgMjI4MTgsIDI1NiwgCi0gICAgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAyMzA3OSwgMjU2LCAKLSAgICAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAyMzM1OCwgMjU2LCAKLSAgICAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgMjM1MzksIDI1NiwgCi0gICAgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIDE0MjA5LCAyNTYsIAotICAgIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAyMzg3NSwgMjU2LCAKLSAgICAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgMjQwMzQsIDI1NiwgCi0gICAgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgMTQ0MzQsIDI1NiwgCi0gICAgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIDI0MjY2LCAyNTYsIAotICAgIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAyNTYsIDI0MzU0LCAKLSAgICAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIDI1NiwgMjQ0MjcsIAotICAgIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIDI1NiwgMjQ3MDUsIAotICAgIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAyNTYsIDI0OTA0LCAKLSAgICAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAyNTYsIDI1MDEwLCAKLSAgICAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAyNTYsIDI1MTA0LCAKLSAgICAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAyNTYsIDE0MjA5MiwgCi0gICAgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgMjU2LCAxNDIzMjEsIAotICAgIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIDI1NiwgMjU3MjYsIAotICAgIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIDI1NiwgMTQzMzcwLCAKLSAgICAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAyNTYsIDE1MTEyLCAKLSAgICAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAyNTYsIDMyOTQxLCAKLSAgICAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAyNTYsIDI2NDUxLCAKLSAgICAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgMjU2LCAyNjc1NywgCi0gICAgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIDI1NiwgMjY5NDYsIAotICAgIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAyNTYsIDE1Mzg0LCAKLSAgICAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgMjU2LCAyNzU1MSwgCi0gICAgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIDE0NjE3MCwgMjU2LCAKLSAgICAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgMjc5MjYsIDI1NiwgCi0gICAgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgMjgwMzcsIDI1NiwgCi0gICAgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIDI4MzYzLCAyNTYsIAotICAgIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgMTQ3MzQyLCAKLSAgICAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIDI4NzQ2LCAKLSAgICAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAxNDgwNjcsIAotICAgIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIDE0OTAwMCwgCi0gICAgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAyNTYsIDI5NTc5LCAKLSAgICAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAyNTYsIDI5Nzg4LCAKLSAgICAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAyNTYsIDE1MDU4MiwgCi0gICAgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIDMwMjI0LCAyNTYsIAotICAgIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAyNTYsIDMwNDUyLCAKLSAgICAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAzMDQ5NCwgMjU2LCAKLSAgICAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAxNjQ1NCwgMjU2LCAKLSAgICAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgMTY2MTEsIDI1NiwgCi0gICAgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIDI1NiwgMzEyMTEsIAotICAgIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAyNTYsIDE1NDI3OSwgCi0gICAgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIDMxNjg2LCAyNTYsIDMxNjg5LCAKLSAgICAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAzMTk3NiwgMjU2LCAzMTk3MSwgCi0gICAgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgMzIxOTksIDI1NiwgMzIyNTgsIAotICAgIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAxNzI0MSwgMjU2LCAKLSAgICAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIDMyNzczLCAyNTYsIAotICAgIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAyNTYsIDE0NDIyMywgCi0gICAgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgMjU2LCAyMzIyMSwgCi0gICAgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgMzMyODEsIDI1NiwgCi0gICAgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgMzM0MzcsIDI1NiwgCi0gICAgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgMTU4NTI0LCAyNTYsIAotICAgIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIDMzNzI1LCAyNTYsIAotICAgIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIDMzNzU2LCAyNTYsIAotICAgIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAyNTYsIDM0MDM1LCAKLSAgICAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIDI1NiwgMTc3NjEsIAotICAgIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgMjU2LCAzNDQwNywgCi0gICAgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgMjU2LCAzNDY4MSwgCi0gICAgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgMjU2LCAzNDgxNywgCi0gICAgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIDI1NiwgMzUwMzgsIAotICAgIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgMjU2LCAxODExMCwgCi0gICAgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgMjU2LCAxNjI5ODQsIAotICAgIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAyNTYsIDEzMzEyNCwgCi0gICAgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIDI1NiwgMzY2NjQsIAotICAgIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgMjU2LCAKLSAgICAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIDI1NiwgCi0gICAgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAyNTYsIAotICAgIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIDI1NiwgCi0gICAgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgMjU2LCAKLSAgICAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAyNTYsIAotICAgIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAyNTYsIAotICAgIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgMjU2LCAKLSAgICA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAxNzI2ODksIAotICAgIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgNDA3MTksIAotICAgIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKKyAgICAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCAyNjYsIDM3MTk3LCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIAorICAgIDc3MCwgMTIzMDgsIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgCisgICAgMTIzMDksIDc3MCwgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAKKyAgICAzMDQyMywgMTIzMDksIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIAorICAgIDI0NDcxLCAyNjMsIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAKKyAgICAyMDMyMCwgMjU2LCAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAKKyAgICAyMDcxMSwgMjU2LCAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgCisgICAgMjA4MzYsIDI1NiwgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIAorICAgIDEzMjQyNywgMjU2LCAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAKKyAgICAxNjg0MTUsIDI1NiwgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgCisgICAgMjExMDYsIDI1NiwgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgCisgICAgMjEyNDIsIDI1NiwgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgCisgICAgMjEzMzgsIDI1NiwgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgCisgICAgMTMzNjc2LCAyNTYsIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAKKyAgICAyMTQ4OSwgMjU2LCAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAKKyAgICAyMTY2NiwgMjU2LCAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAKKyAgICAyMTg5MiwgMjU2LCAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAKKyAgICAyMjAyMiwgMjU2LCAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAKKyAgICAyMjQ3OCwgMjU2LCAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAKKyAgICAyMjcwMCwgMjU2LCAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgCisgICAgMjI4MTgsIDI1NiwgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAKKyAgICAyMzA3OSwgMjU2LCAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAKKyAgICAyMzM1OCwgMjU2LCAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgCisgICAgMjM1MzksIDI1NiwgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIAorICAgIDE0MjA5LCAyNTYsIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAKKyAgICAyMzg3NSwgMjU2LCAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgCisgICAgMjQwMzQsIDI1NiwgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgCisgICAgMTQ0MzQsIDI1NiwgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIAorICAgIDI0MjY2LCAyNTYsIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAKKyAgICAyNTYsIDI0MzU0LCAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIAorICAgIDI1NiwgMjQ0MjcsIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIAorICAgIDI1NiwgMjQ3MDUsIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAKKyAgICAyNTYsIDI0OTA0LCAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAKKyAgICAyNTYsIDI1MDEwLCAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAKKyAgICAyNTYsIDI1MTA0LCAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAKKyAgICAyNTYsIDE0MjA5MiwgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgCisgICAgMjU2LCAxNDIzMjEsIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIAorICAgIDI1NiwgMjU3MjYsIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIAorICAgIDI1NiwgMTQzMzcwLCAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAKKyAgICAyNTYsIDE1MTEyLCAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAKKyAgICAyNTYsIDMyOTQxLCAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAKKyAgICAyNTYsIDI2NDUxLCAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgCisgICAgMjU2LCAyNjc1NywgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIAorICAgIDI1NiwgMjY5NDYsIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAKKyAgICAyNTYsIDE1Mzg0LCAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgCisgICAgMjU2LCAyNzU1MSwgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIAorICAgIDE0NjE3MCwgMjU2LCAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgCisgICAgMjc5MjYsIDI1NiwgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgCisgICAgMjgwMzcsIDI1NiwgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIAorICAgIDI4MzYzLCAyNTYsIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgCisgICAgMTQ3MzQyLCAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIAorICAgIDI4NzQ2LCAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAKKyAgICAxNDgwNjcsIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIAorICAgIDE0OTAwMCwgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAKKyAgICAyNTYsIDI5NTc5LCAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAKKyAgICAyNTYsIDI5Nzg4LCAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAKKyAgICAyNTYsIDE1MDU4MiwgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIAorICAgIDMwMjI0LCAyNTYsIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAKKyAgICAyNTYsIDMwNDUyLCAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAKKyAgICAzMDQ5NCwgMjU2LCAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAKKyAgICAxNjQ1NCwgMjU2LCAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgCisgICAgMTY2MTEsIDI1NiwgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIAorICAgIDI1NiwgMzEyMTEsIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAKKyAgICAyNTYsIDE1NDI3OSwgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIAorICAgIDMxNjg2LCAyNTYsIDMxNjg5LCAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAKKyAgICAzMTk3NiwgMjU2LCAzMTk3MSwgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgCisgICAgMzIxOTksIDI1NiwgMzIyNTgsIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAKKyAgICAxNzI0MSwgMjU2LCAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIAorICAgIDMyNzczLCAyNTYsIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAKKyAgICAyNTYsIDE0NDIyMywgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgCisgICAgMjU2LCAyMzIyMSwgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgCisgICAgMzMyODEsIDI1NiwgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgCisgICAgMzM0MzcsIDI1NiwgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgCisgICAgMTU4NTI0LCAyNTYsIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIAorICAgIDMzNzI1LCAyNTYsIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIAorICAgIDMzNzU2LCAyNTYsIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAKKyAgICAyNTYsIDM0MDM1LCAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIAorICAgIDI1NiwgMTc3NjEsIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgCisgICAgMjU2LCAzNDQwNywgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgCisgICAgMjU2LCAzNDY4MSwgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgCisgICAgMjU2LCAzNDgxNywgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIAorICAgIDI1NiwgMzUwMzgsIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgCisgICAgMjU2LCAxODExMCwgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgCisgICAgMjU2LCAxNjI5ODQsIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAKKyAgICAyNTYsIDEzMzEyNCwgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIAorICAgIDI1NiwgMzY2NjQsIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgCisgICAgMjU2LCAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIAorICAgIDI1NiwgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAKKyAgICAyNTYsIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIAorICAgIDI1NiwgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgCisgICAgMjU2LCAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAKKyAgICAyNTYsIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAKKyAgICAyNTYsIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgCisgICAgMjU2LCA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAKKyAgICAxNzI2ODksIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgCisgICAgNDA3MTksIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKIH07CiAKIC8qIGluZGV4IHRhYmxlcyBmb3IgdGhlIGRlY29tcG9zaXRpb24gZGF0YSAqLwpAQCAtNTE4NywxMSArNTI4MCwxMSBAQAogICAgIDEzMDQ0LCAxMzA0NiwgMTMwNDgsIDEzMDUwLCAxMzA1MiwgMTMwNTQsIDEzMDU2LCAxMzA1OCwgMTMwNjAsIDEzMDYyLCAKICAgICAxMzA2NCwgMTMwNjYsIDEzMDY4LCAxMzA3MCwgMTMwNzIsIDEzMDc0LCAxMzA3NiwgMTMwNzgsIDEzMDgwLCAxMzA4MiwgCiAgICAgMTMwODQsIDEzMDg2LCAxMzA4OCwgMTMwOTAsIDEzMDkyLCAxMzA5NCwgMTMwOTYsIDEzMDk4LCAxMzEwMCwgMTMxMDIsIAotICAgIDEzMTA0LCAxMzEwNiwgMTMxMDgsIDEzMTEwLCAxMzExMiwgMTMxMTQsIDEzMTE2LCAxMzExOCwgMTMxMjAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzMTIyLCAxMzEyNiwgMTMxMzAsIDEzMTM0LCAxMzEzOCwgMTMxNDIsIDEzMTQ2LCAxMzE1MCwgMTMxNTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTU4LCAxMzE2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxMDQsIDEzMTA2LCAxMzEwOCwgMTMxMTAsIDEzMTEyLCAxMzExNCwgMTMxMTYsIDEzMTE4LCAxMzEyMCwgMTMxMjIsIDAsIAorICAgIDAsIDAsIDAsIDEzMTI0LCAxMzEyOCwgMTMxMzIsIDEzMTM2LCAxMzE0MCwgMTMxNDQsIDEzMTQ4LCAxMzE1MiwgMTMxNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTYwLCAxMzE2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjIsIDEzMTY0LCAxMzE2NiwgMTMxNjgsIDEzMTcwLCAxMzE3MiwgMTMxNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTY0LCAxMzE2NiwgMTMxNjgsIDEzMTcwLCAxMzE3MiwgMTMxNzQsIAogICAgIDEzMTc2LCAxMzE3OCwgMTMxODAsIDEzMTgyLCAxMzE4NCwgMTMxODYsIDEzMTg4LCAxMzE5MCwgMTMxOTIsIDEzMTk0LCAKICAgICAxMzE5NiwgMTMxOTgsIDEzMjAwLCAxMzIwMiwgMTMyMDQsIDEzMjA2LCAxMzIwOCwgMTMyMTAsIDEzMjEyLCAxMzIxNCwgCiAgICAgMTMyMTYsIDEzMjE4LCAxMzIyMCwgMTMyMjIsIDEzMjI0LCAxMzIyNiwgMTMyMjgsIDEzMjMwLCAxMzIzMiwgMTMyMzQsIApAQCAtNTI0NSwxMSArNTMzOCwxMSBAQAogICAgIDE0MTc2LCAxNDE3OCwgMTQxODAsIDE0MTgyLCAxNDE4NCwgMTQxODYsIDE0MTg4LCAxNDE5MCwgMTQxOTIsIDE0MTk0LCAKICAgICAxNDE5NiwgMTQxOTgsIDE0MjAwLCAxNDIwMiwgMTQyMDQsIDE0MjA2LCAxNDIwOCwgMTQyMTAsIDE0MjEyLCAxNDIxNCwgCiAgICAgMTQyMTYsIDE0MjE4LCAxNDIyMCwgMTQyMjIsIDE0MjI0LCAxNDIyNiwgMTQyMjgsIDE0MjMwLCAxNDIzMiwgMTQyMzQsIAotICAgIDE0MjM2LCAxNDIzOCwgMTQyNDAsIDE0MjQyLCAxNDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQyMzYsIDE0MjM4LCAxNDI0MCwgMTQyNDIsIDE0MjQ0LCAxNDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KQEAgLTU2NjUsMTMyICs1NzU4LDEzNSBAQAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQgY2hhbmdlX3JlY29yZHNfM18yXzBbXSA9IHsKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAotCXsgMTksIDIxLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDIsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDMsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDEsIDI1NSwgMCB9LAotCXsgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjYsIDI1NSwgMjU1LCAwIH0sCi0JeyA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNCwgNiwgMjU1LCAyNTUsIDAgfSwKLQl7IDE1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDEuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMy4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDQuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAotCXsgMTQsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDAsIDAgfSwKLQl7IDI1NSwgNywgMSwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDIsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCAzLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNCwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDUsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA2LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNywgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDgsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA5LCAyNTUsIDAgfSwKLQl7IDI1NSwgMTksIDI1NSwgMjU1LCAwIH0sCi0JeyAxLCA1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDE4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDQsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDYsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDcsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDgsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDksIDI1NSwgMCB9LAotCXsgMTksIDMwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNywgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjIsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIzLCAyNTUsIDI1NSwgMCB9LAotCXsgOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTQsIDQsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIC0xIH0sCi0JeyAxLCAyNTUsIDI1NSwgMCwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDExLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMzAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDIxLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAzLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDEsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjYsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDYsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAzLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCA0LjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAorCXsgMTQsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDEsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDIsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDMsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDQsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDYsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDcsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDgsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDksIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDYsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDksIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMzAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgOCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNywgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCA1LCAwIH0sCisJeyAyNTUsIDIyLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIzLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyA5LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE0LCA0LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMTYgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAorCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDI1NSwgLTEgfSwKKwl7IDEsIDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7CiAgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCiAgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDIsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKICAgICAzNiwgMzcsIDIsIDIsIDIsIDM4LCAzOSwgMiwgNDAsIDIsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAotICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDIsIDYyLCA2MywgCi0gICAgNjQsIDY1LCA2NiwgNjYsIDIsIDIsIDIsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCAyLCAyLCAyLCA3NCwgNzUsIAotICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDIsIDIsIDIsIDIsIDg1LCAKKyAgICA1MCwgNTEsIDIsIDUyLCAyLCAyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDIsIDU4LCA1OSwgNjAsIDYxLCAyLCA2MiwgNjMsIAorICAgIDY0LCA2NSwgNjYsIDY3LCA2NywgMiwgMiwgMiwgMiwgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDIsIDIsIDIsIDc1LCAKKyAgICA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCAyLCAyLCAyLCAyLCAyLCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgCisgICAgODYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg3LCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgODksIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTIsIAorICAgIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIDIsIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICA4OCwgODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgCi0gICAgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTgsIDUwLCA1MCwgCi0gICAgOTksIDEwMCwgNTAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTcsIDk4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5OSwgNTAsIDUwLCAKKyAgICAxMDAsIDEwMSwgNTAsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDExMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTExLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAyLCAyLCAxMTcsIDExOCwgMTE5LCAyLCAxMjAsIAotICAgIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAyLCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAyLCA1MCwgNTAsIDEzMiwgCi0gICAgMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAyLCAyLCAxNDMsIDIsIDIsIDIsIAotICAgIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMiwgMiwgMTUxLCAyLCAxNTIsIDE1MywgMTU0LCAxNTUsIDIsIAotICAgIDIsIDE1NiwgMiwgMiwgMiwgMTU3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTU4LCAxNTksIDUwLCAxNjAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTYxLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAyLCAyLCAxMTgsIDExOSwgMTIwLCAyLCAxMjEsIAorICAgIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAyLCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAyLCA1MCwgNTAsIDEzMywgCisgICAgMiwgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAyLCAyLCAxNDQsIDIsIDIsIDIsIAorICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMiwgMTUyLCAxNTMsIDIsIDE1NCwgMTU1LCAxNTYsIDE1NywgMiwgCisgICAgMiwgMTU4LCAyLCAyLCAyLCAxNTksIDIsIDIsIDE2MCwgMTYxLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgMTYyLCAxNjMsIDUwLCAxNjQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTY1LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCA1MCwgNTAsIDUwLCA1MCwgMTYyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAxNjcsIDE2OCwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE2NywgMTY4LCAxNjksIDE3MCwgMiwgMiwgMiwgMiwgMiwgMiwgMTcxLCAKKyAgICAxNzIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTczLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTc1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzYsIDE3NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc4LCAKKyAgICAxNzksIDE4MCwgMiwgMTgxLCAyLCAyLCAxODIsIDIsIDIsIDIsIDE4MywgMTg0LCAxODUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgMTg2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDUwLCAxODgsIDE4OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTkwLCAxOTEsIDIsIDIsIDE5MiwgCisgICAgMTkzLCAxOTQsIDE5NSwgMTk2LCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTk3LCAxOTgsIDE5OSwgMjAwLCAKKyAgICAyMDEsIDIwMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIwNSwgOTYsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyMDYsIDIsIDIwNywgMjA4LCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDksIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjExLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyMTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTcwLCAxNzEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDE3MiwgMTczLCAxNzQsIDIsIDE3NSwgMiwgMiwgMTc2LCAyLCAyLCAyLCAxNzcsIDE3OCwgMTc5LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDE4MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDE4MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTgyLCAKLSAgICAxODMsIDIsIDIsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAyLCA1MCwgNTAsIDUwLCA1MCwgMTg5LCAxOTAsIDUwLCAxOTEsIAotICAgIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE5OCwgCi0gICAgMTk5LCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIwMCwgMiwgMjAxLCAKLSAgICAyMDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIwMywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyMDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMDcsIDUwLCAyMDgsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjEzLCA1MCwgMjE0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKICAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKICAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgNTAsIDUwLCAyMTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwMywgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTYwMjYsOCArNjEyMiw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgNTAsIDIxNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC02MDkwLDcgKzYxODUsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9kYXRhW10gPSB7CkBAIC02MTc2LDkgKzYyNzEsOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIApAQCAtNjIxNiw3ICs2MzExLDcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjIyNSw5ICs2MzIwLDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTYzMTQsNyArNjQwOSw3IEBACiAgICAgMzIsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIApAQCAtNjM1Niw4ICs2NDUxLDggQEAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKQEAgLTYzNzIsMjkgKzY0NjcsMjkgQEAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDQsIDAsIDAsIAotICAgIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDQsIDM2LCA4LCA2LCA3LCAzNywgMzgsIDM5LCA0MCwgCi0gICAgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCA0LCAwLCAwLCAKKyAgICAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCAxLCAxLCAwLCAwLCAwLCA0LCAzNywgOCwgNiwgNywgMzgsIDM5LCA0MCwgNDEsIAorICAgIDQyLCA0MywgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjQwNSwxMzcgKzY1MDAsODIxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDQ1LCA0NSwgNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NiwgNDYsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OSwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIAorICAgIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTEsIDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NTQ3LDY4MyArNzMyNiwzMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIAotICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIAotICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgCi0gICAgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQqIGdldF9jaGFuZ2VfM18yXzAoUHlfVUNTNCBuKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCmluZGV4IGQwZjljYjQuLmE4MWQ4ZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKQEAgLTQsMjQ2ICs0LDI0NyBAQAogCiAvKiBsZXhpY29uICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBsZXhpY29uW10gPSB7Ci0gICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDgzLCA3MywgNzEsIDIwNiwgODcsIDczLCA4NCwgMjAwLCA4MywgODksIDc2LCAKLSAgICA3NiwgNjUsIDY2LCA3NiwgMTk3LCA4MywgNzcsIDY1LCA3NiwgMjA0LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAotICAgIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNzYsIDY1LCA4NCwgNzMsIDIwNiwgNjcsIDg1LCA3OCwgCi0gICAgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgCisgICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDgzLCA3MywgNzEsIDIwNiwgODcsIDczLCA4NCwgMjAwLCA4MywgNzcsIDY1LCAKKyAgICA3NiwgMjA0LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3NiwgMTk3LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAorICAgIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNzYsIDY1LCA4NCwgNzMsIDIwNiwgNjUsIDgyLCA2NSwgCisgICAgNjYsIDczLCAxOTUsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgCiAgICAgNzcsIDY1LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIAogICAgIDY1LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCAyMDQsIDY4LCA3MywgNzEsIDczLCAyMTIsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCAKLSAgICA2OCwgNzMsIDY1LCAyMDYsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA4MywgNzMsIDcxLCA3OCwgODcsIAotICAgIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4NCwgNzMsIDc3LCA2OSwgMjExLCA2NiwgCi0gICAgNjUsIDc3LCA4NSwgMjA1LCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCA2NSwgNzgsIDY1LCA4NCwgNzksIDc2LCAKLSAgICA3MywgNjUsIDIwNiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MSwgODIsIAotICAgIDY5LCA2OSwgMjAzLCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAKLSAgICAxOTcsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDE5MywgNzAsIDc5LCAyMTAsIDY3LCA4OSwgODIsIDczLCAKLSAgICA3NiwgNzYsIDczLCAxOTUsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY1LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNjUsIDc4LCA4MywgNDUsIDgzLCA2OSwgODIsIDczLCAKLSAgICAxOTgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDg0LCA2NSwgNzcsIAotICAgIDczLCAyMDQsIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgODYsIAotICAgIDY1LCAyMDEsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDIxMiwgODMsIDgxLCA4NSwgNjUsIDgyLCAxOTcsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NSwgCi0gICAgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDIwNiwgNjYsIAotICAgIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICAyMDMsIDY1LCAxMjgsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCAyMTAsIDE5NCwgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDE5MywgODUsIDEyOCwgNzcsIDg5LCA2NSwgNzgsIAotICAgIDc3LCA2NSwgMjEwLCA2OCwgNzksIDIxMiwgNzUsIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDc1LCA3MywgNzUsIDY1LCA3NSwgCi0gICAgODUsIDIwMSwgNzcsIDY5LCA3OCwgNjgsIDE5NywgNzMsIDEyOCwgNzksIDE5OCwgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgCi0gICAgMjA2LCA3OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgCi0gICAgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDc3LCA2OSwgNjksIDIwNSwgNjcsIDc5LCAKLSAgICA4MCwgODQsIDczLCAxOTUsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDIxMSwgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4OSwgNjksIDIwMCwgNjcsIAotICAgIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgODAsIDc2LCA4NSwgMjExLCA2OCwgNjksIDg2LCA2NSwgNzgsIDY1LCA3MSwgCi0gICAgNjUsIDgyLCAyMDEsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCA3NiwgNzMsIDY1LCAKLSAgICAyMDYsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDEyOCwgNjYsIDc5LCAyMTYsIDg0LCA3MywgNzYsIDE5NywgNjgsIDg1LCA4MCwgCi0gICAgNzYsIDc5LCA4OSwgNjUsIDIwNiwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA4NCwgNzIsIDY1LCAyMDUsIAotICAgIDc5LCA3OCwgNjksIDEyOCwgMjEzLCA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODQsIDg3LCA3OSwgCi0gICAgMTI4LCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDc3LCAKLSAgICA3MywgNjUsIDIwNywgODUsIDIwOCwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIAotICAgIDIwNiwgNzksIDg2LCA2OSwgMjEwLCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgMjExLCA3MiwgNzcsIDc5LCA3OCwgCi0gICAgMTk5LCA3OSwgNzgsIDE5NywgODAsIDY1LCA3MiwgNjUsIDg3LCAyMDAsIDg0LCA4NywgMjA3LCA2OCwgNzksIDg3LCAyMDYsIAotICAgIDczLCA3OCwgNjgsIDY5LCAyMTYsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDc2LCA3OSwgMjE1LCA4NiwgCi0gICAgNzksIDY3LCA2NSwgNzYsIDczLCAxOTUsIDg0LCA3MiwgODIsIDY5LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCAKLSAgICA4NCwgMjAwLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDIxMiwgNzcsIDY5LCA4MiwgNzksIDczLCA4NCwgNzMsIAotICAgIDE5NSwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzcsIDY1LCA4MiwgMjAzLCA4MywgNjcsIDgyLCA3MywgCi0gICAgODAsIDIxMiwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKLSAgICA4NCwgNzksIDEyOCwgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgNzYsIDY5LCAxOTgsIAotICAgIDcyLCA3MywgNzEsIDIwMCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgODMsIDczLCA3OCwgCi0gICAgNzIsIDY1LCA3NiwgMTkzLCA3OCwgODUsIDc3LCA2OSwgODIsIDczLCAxOTUsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCAKLSAgICA3OCwgMTk3LCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgNzIsIDg1LCA3OCwgNzEsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIAotICAgIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgNzIsIDg1LCA3NywgMTk0LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA2NiwgCi0gICAgNjUsIDgyLCAxOTQsIDcyLCA2NSwgMjAwLCA3MiwgNjUsIDEyOCwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzAsIDg1LCA3NiwgCi0gICAgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIDY1LCAKLSAgICAyMDQsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzIsIDY1LCAKLSAgICA3NiwgMTk4LCA3NiwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCA2NSwgNjcsIAotICAgIDg1LCA4NCwgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgCi0gICAgNjksIDIxMCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCAKLSAgICA4MiwgODUsIDY3LCAyMDMsIDcwLCA3MywgODYsIDY5LCAxMjgsIDc5LCA4MCwgNjksIDIwNiwgNzIsIDczLCA4MiwgNjUsIAotICAgIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgCisgICAgNjYsIDc5LCAyMDQsIDY4LCA3MywgNzEsIDczLCAyMTIsIDg0LCA2NSwgNzgsIDcxLCA4NSwgMjEyLCA3MCwgNzksIDgyLCAKKyAgICA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIAorICAgIDIxMSwgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDczLCA3MSwgNzgsIDg3LCA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgODQsIDczLCA3NywgNjksIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgCisgICAgNjUsIDc4LCA2NSwgODQsIDc5LCA3NiwgNzMsIDY1LCAyMDYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA3NiwgNzMsIDc4LCAKKyAgICA2OSwgNjUsIDIxMCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCA3NiwgNzMsIAorICAgIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCAxOTMsIDcwLCA3OSwgCisgICAgMjEwLCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgMTk1LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIAorICAgIDE5OSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA4MiwgNjUsIDY4LCA3MywgCisgICAgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIDE5OCwgNjcsIDczLCA4MiwgNjcsIDc2LCAKKyAgICA2OSwgMTk2LCA4NCwgNjUsIDc3LCA3MywgMjA0LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgNjUsIDgyLCAKKyAgICA4MiwgNzksIDg3LCAxMjgsIDc2LCA2OSwgNzAsIDIxMiwgODYsIDY1LCAyMDEsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgMTk3LCA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgODMsIDczLCA3MSwgNzgsIDEyOCwgNjUsIAorICAgIDgyLCA4MiwgNzksIDIxNSwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA4NiwgCisgICAgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCAKKyAgICA4NCwgNjksIDgyLCAyMDYsIDY2LCA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA2NSwgMTI4LCA2NiwgNzYsIAorICAgIDY1LCA2NywgMjAzLCA4NywgNzIsIDczLCA4NCwgMTk3LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA4NSwgCisgICAgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgMjEwLCAxOTQsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAKKyAgICAxOTMsIDczLCAxMjgsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgNjgsIDc5LCAyMTIsIDc5LCAxMjgsIDc1LCA2NSwgCisgICAgNzgsIDcxLCA4OCwgMjAxLCA3OSwgMTk4LCA3NSwgNzMsIDc1LCA2NSwgNzUsIDg1LCAyMDEsIDc3LCA2OSwgNzgsIDY4LCAKKyAgICAxOTcsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIDIwNiwgNzIsIDY5LCA2NSwgODYsIDIxNywgNzcsIDY1LCA4MiwgNzUsIAorICAgIDEyOCwgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgCisgICAgNjksIDY5LCAyMDUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4MiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIAorICAgIDIxMCwgODksIDY5LCAyMDAsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgCisgICAgNzYsIDczLCA2NSwgMjA2LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCA2NSwgODIsIAorICAgIDIwMSwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDgzLCA4NCwgCisgICAgODIsIDc5LCA3NSwgNjksIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDEyOCwgNjYsIDc5LCAyMTYsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKKyAgICA3MywgNzYsIDE5NywgNjgsIDg1LCA4MCwgNzYsIDc5LCA4OSwgNjUsIDIwNiwgODQsIDg3LCA3OSwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgMjEzLCA4NiwgCisgICAgNzksIDY3LCA2NSwgNzYsIDczLCAxOTUsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA2NywgNzksIDc4LCAKKyAgICA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA3NywgNzMsIAorICAgIDY1LCAyMDcsIDg1LCAyMDgsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3OSwgCisgICAgNzUsIDEyOCwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgNzksIDg2LCA2OSwgMjEwLCA4NCwgODcsIDIwNywgCisgICAgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIDIxMSwgNzIsIDczLCA3MSwgMjAwLCA3MiwgNzcsIDc5LCA3OCwgMTk5LCAKKyAgICA3MywgNzgsIDY4LCA2OSwgMjE2LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDcyLCA4MiwgNjksIDE5NywgNjgsIAorICAgIDc5LCA4NywgMjA2LCA3NiwgNzksIDIxNSwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzIsIDY1LCA3NiwgCisgICAgNzAsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCAKKyAgICA3OSwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIAorICAgIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgCisgICAgNjksIDQ1LCAxOTYsIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCAKKyAgICA3NiwgNjksIDE5OCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNzcsIDY1LCA3NiwgNjUsIAorICAgIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIDE5MywgNzIsIDY1LCAxMjgsIDc4LCA4NSwgCisgICAgNzcsIDY5LCA4MiwgNzMsIDE5NSwgODIsIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDEyOCwgCisgICAgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDc5LCA3OCwgMTk3LCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgNzIsIDg1LCAKKyAgICA3OCwgNzEsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDY2LCA2NSwgODIsIDE5NCwgNzIsIAorICAgIDY1LCAyMDAsIDc4LCA3OSwgODIsIDg0LCAyMDAsIDcwLCA4NSwgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgCisgICAgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCA2NSwgMjA0LCA3NSwgNjUsIDEyOCwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCAKKyAgICA3MiwgNjUsIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIAorICAgIDc1LCA4NCwgODUsIDIxMCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAyMTAsIDgwLCA2NSwgMTI4LCA4MCwgCisgICAgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY2LCA3MiwgNjUsIDczLCA3NSwgODMsIDg1LCA3NSwgMjAxLCA2OCwgNzksIDg1LCAKKyAgICA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCA4MiwgODUsIDY3LCAyMDMsIDc5LCA4MCwgNjksIDIwNiwgNzIsIDczLCA4MiwgNjUsIAorICAgIDcxLCA2NSwgNzgsIDE5MywgNzcsIDY1LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgCiAgICAgNzEsIDIxMywgNzQsIDg1LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDIxMSwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNjYsIDY5LCA3OCwgNzEsIDY1LCA3NiwgMjAxLCA3MSwgCi0gICAgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDc0LCA2OSwgNjksIAotICAgIDIwNSwgODAsIDY1LCAxMjgsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDIwNSwgNjgsIDc5LCA4NCwgMjExLCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzQsIDY1LCA4NiwgNjUsIDc4LCA2OSwgODMsIDE5NywgNjcsIDg1LCA4MiwgCi0gICAgODMsIDczLCA4NiwgMTk3LCA3NywgNjUsIDEyOCwgNzksIDgyLCA3MywgODksIDE5MywgODMsIDEyOCwgODMsIDczLCA4OCwgCi0gICAgMTI4LCA4NywgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgODIsIDg1LCA3OCwgNzMsIDE5NSwgODksIDY1LCAKLSAgICAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc4LCA2NSwgMTI4LCAKLSAgICA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgOTAsIAotICAgIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCA4OSwgCi0gICAgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDEyOCwgCi0gICAgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCAKLSAgICA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCA3OSwgMTI4LCAKLSAgICA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCA5MCwgOTAsIAotICAgIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA5MCwgCi0gICAgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgNjksIDgwLCAKLSAgICAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCA2NSwgMTI4LCAKLSAgICA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIDEyOCwgOTAsIAotICAgIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgMjAyLCA5MCwgODcsIDY1LCA4MiwgCi0gICAgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgODUsIDY2LCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDIxMywgOTAsIDgzLCA3MiwgNjUsIDEyOCwgCi0gICAgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAKLSAgICAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgCi0gICAgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCAKLSAgICA4MCwgODAsIDY5LCA4MiwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgNzMsIAotICAgIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCA2OCwgCi0gICAgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgODksIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgCi0gICAgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCA3MiwgCi0gICAgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgOTAsIAotICAgIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCA3OSwgCi0gICAgNzksIDEyOCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCAKLSAgICA2OSwgMTI4LCA5MCwgNzIsIDczLCA3NiwgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCAKLSAgICA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIAotICAgIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgODgsIDEyOCwgOTAsIAotICAgIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCA5MCwgCi0gICAgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgMTI4LCAKLSAgICA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIAotICAgIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCA2NSwgCi0gICAgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgyLCA3NiwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCAKLSAgICA4OCwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAKLSAgICAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgCi0gICAgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAotICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIAotICAgIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgCi0gICAgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgCi0gICAgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgCi0gICAgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgCi0gICAgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgCi0gICAgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgCi0gICAgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAKLSAgICAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgCi0gICAgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgCi0gICAgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAKLSAgICAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAKLSAgICAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCAKLSAgICA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIAotICAgIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgCi0gICAgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAKLSAgICA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgyLCA4OSwgMTI4LCA4OSwgCi0gICAgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKLSAgICA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgNzksIAotICAgIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCA4OCwgCi0gICAgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgODksIDc5LCA4MiwgNzMsIAotICAgIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgNzksIDc5LCAxMjgsIDg5LCAKLSAgICA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAotICAgIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgNzksIAotICAgIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgCi0gICAgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCAKLSAgICA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgODQsIDEyOCwgODksIDczLCAKLSAgICA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgODAsIDEyOCwgODksIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgODgsIDEyOCwgODksIDczLCAKLSAgICA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgODksIDczLCA2OSwgMTI4LCAKLSAgICA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCA3MywgMTI4LCA4OSwgNzAsIAotICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgCi0gICAgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAKLSAgICAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIAotICAgIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgCi0gICAgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCAKLSAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAotICAgIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCAKLSAgICA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCAKLSAgICA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIAotICAgIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgCi0gICAgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgCi0gICAgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgCi0gICAgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCAKLSAgICA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIAotICAgIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIAotICAgIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIAotICAgIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgCi0gICAgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgCi0gICAgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCAKLSAgICA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIAotICAgIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAKLSAgICAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAKLSAgICAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCAKLSAgICA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIAotICAgIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgCi0gICAgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCAKLSAgICA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIAotICAgIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCAKLSAgICA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCAKLSAgICA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIAotICAgIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIAotICAgIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIAotICAgIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCAKLSAgICA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCAKLSAgICA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIAotICAgIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIAotICAgIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIAotICAgIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIAotICAgIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIAotICAgIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIAotICAgIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIAotICAgIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAotICAgIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgCi0gICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAKLSAgICAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCAKLSAgICA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCAKLSAgICA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCAKLSAgICA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCAKLSAgICA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCAKLSAgICA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCAKLSAgICA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAotICAgIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgCi0gICAgMTI4LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIDY1LCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgMTI4LCAKLSAgICA4NywgNzksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCA3OSwgODIsIAotICAgIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgCi0gICAgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCAKLSAgICA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIAotICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIAotICAgIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgCi0gICAgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIAotICAgIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIAotICAgIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgMjA2LCA4NywgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDczLCA3OCwgNzUsIDEyOCwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgCi0gICAgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgCi0gICAgNzMsIDc4LCA2OCwgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCAKLSAgICA3OCwgMTI4LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIAotICAgIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgCi0gICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIAotICAgIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgCi0gICAgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIAotICAgIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgCi0gICAgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAKLSAgICAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCAKLSAgICA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIAotICAgIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIAotICAgIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIAotICAgIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCisgICAgMjExLCA4OSwgNjUsIDEyOCwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNjYsIDY5LCA3OCwgNzEsIDY1LCAKKyAgICA3NiwgMjAxLCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDgzLCA3MywgODgsIDEyOCwgNzgsIDY1LCAxMjgsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NCwgNjksIDY5LCAyMDUsIDc2LCA2NSwgMTI4LCA3OCwgNjksIAorICAgIDg3LCAxOTMsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICAyMDAsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAorICAgIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgCisgICAgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgCisgICAgOTAsIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAKKyAgICAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCAKKyAgICA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIAorICAgIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgCisgICAgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgCisgICAgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAKKyAgICAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCAKKyAgICA5MCwgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIAorICAgIDgyLCA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgCisgICAgNjYsIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgMjEzLCA5MCwgODMsIDcyLCA2NSwgCisgICAgMTI4LCA5MCwgODIsIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgCisgICAgNzksIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgCisgICAgMTkzLCA5MCwgNzQsIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgCisgICAgNzMsIDgwLCA4MCwgNjksIDgyLCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCAKKyAgICA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIAorICAgIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCAKKyAgICA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIAorICAgIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCAKKyAgICA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgCisgICAgODQsIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgCisgICAgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCAKKyAgICA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCAKKyAgICA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIAorICAgIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIAorICAgIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAKKyAgICAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCAKKyAgICA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIAorICAgIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgCisgICAgNzcsIDg4LCAxMjgsIDkwLCA2NSwgNzYsIDEyOCwgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgCisgICAgNzMsIDIwNiwgOTAsIDY1LCA3MywgMTI4LCA5MCwgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIAorICAgIDkwLCA2NSwgNjksIDcwLCAxMjgsIDkwLCA2NSwgNTUsIDEyOCwgOTAsIDE5MywgOTAsIDQ4LCA0OSwgNTQsIDcyLCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY5LCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAorICAgIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgCisgICAgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCA4OSwgODIsIAorICAgIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCA4OSwgNjUsIAorICAgIDY1LCAxMjgsIDg5LCA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIAorICAgIDEyOCwgODksIDg3LCA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDg5LCA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIAorICAgIDgxLCAxMjgsIDg5LCA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgCisgICAgODUsIDEyOCwgODksIDg1LCA4NCwgMTI4LCA4OSwgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCA4OSwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA4OSwgODUsIDgyLCAxMjgsIDg5LCA4NSwgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCA4NSwgODAsIDEyOCwgODksIAorICAgIDg1LCA3OSwgODgsIDEyOCwgODksIDg1LCA3OSwgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIDEyOCwgODksIDg1LCA3OSwgCisgICAgNzcsIDEyOCwgODksIDg1LCA3OSwgMTI4LCA4OSwgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIDEyOCwgODksIDg1LCA3NCwgCisgICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCisgICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCisgICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAorICAgIDg5LCA4MiwgODksIDEyOCwgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgCisgICAgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCAKKyAgICA3MywgMjExLCA4OSwgODAsIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIAorICAgIDg5LCAxMjgsIDg5LCA3OSwgODgsIDEyOCwgODksIDc5LCA4NywgNjgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgCisgICAgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAKKyAgICAxMjgsIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgCisgICAgODksIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCAKKyAgICA3MiwgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIAorICAgIDc5LCA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgCisgICAgNDUsIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgCisgICAgNjksIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgCisgICAgNzMsIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgCisgICAgNjksIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAKKyAgICAxMjgsIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCAKKyAgICA4OSwgNzMsIDEyOCwgODksIDcyLCA2OSwgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIAorICAgIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIAorICAgIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCAKKyAgICA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIAorICAgIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCAKKyAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKKyAgICA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgCisgICAgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgCisgICAgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCAKKyAgICA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgCisgICAgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgCisgICAgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCAKKyAgICA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCAKKyAgICA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCAKKyAgICA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIAorICAgIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIAorICAgIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgCisgICAgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgCisgICAgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgCisgICAgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAKKyAgICAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIAorICAgIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgCisgICAgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCAKKyAgICA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIAorICAgIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIAorICAgIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgCisgICAgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCAKKyAgICA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCAKKyAgICA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIAorICAgIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgCisgICAgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCAKKyAgICA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIAorICAgIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIAorICAgIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIAorICAgIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgCisgICAgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIAorICAgIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgCisgICAgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgCisgICAgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgCisgICAgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIAorICAgIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgCisgICAgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgCisgICAgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgCisgICAgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgCisgICAgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIAorICAgIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIAorICAgIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIAorICAgIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIAorICAgIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgCisgICAgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAKKyAgICAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgMTI4LCA4NywgODIsIDY5LCA4MywgODQsIDc2LCA2OSwgODIsIAorICAgIDgzLCAxMjgsIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCA4MiwgCisgICAgNjUsIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIDg3LCAKKyAgICAxMjgsIDg3LCA3OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIAorICAgIDc5LCA4MiwgNzYsIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgCisgICAgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCAKKyAgICA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIAorICAgIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgCisgICAgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCAKKyAgICA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIAorICAgIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIAorICAgIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA4NCwgNzIsIDczLCAKKyAgICAyMDYsIDg3LCA3MywgODIsIDY5LCAxOTYsIDg3LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgMTk5LCA4NywgNzMsIDc4LCA3NSwgMTI4LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIDczLCA3OCwgCisgICAgNzEsIDgzLCAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgNjgsIDg1LCAKKyAgICAxMjgsIDg3LCA3MywgNzgsIDY4LCA3OSwgODcsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCAKKyAgICA4NywgNzMsIDc4LCAxMjgsIDg3LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgCisgICAgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCAKKyAgICA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIAorICAgIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgCisgICAgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCAKKyAgICA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIAorICAgIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgCisgICAgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCAKKyAgICA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAKKyAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIAorICAgIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIAorICAgIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgCisgICAgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAyMTEsIDg3LCA2OSwgNzMsIDEyOCwgODcsIDY5LCA2OSwgNzgsIAogICAgIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDcxLCA2OSwgCiAgICAgMTI4LCA4NywgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjksIDY2LCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAKICAgICAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAKQEAgLTI1NywyNTEgKzI1OCwyNTMgQEAKICAgICAxMjgsIDg3LCA2NSwgODMsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNzYsIDY1LCAxMjgsIAogICAgIDg3LCA2NSwgODMsIDc2LCAxOTMsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA2NSwgCiAgICAgNzYsIDc2LCA2NSwgMjA1LCA4NywgNjUsIDgyLCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODIsIDY1LCA3OCwgMTk5LCAKLSAgICA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIAotICAgIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDIwNCwgODcsIDY1LCAKLSAgICA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIAotICAgIDczLCA4MywgODQsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIAotICAgIDg3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgCi0gICAgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIAotICAgIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIAotICAgIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDc0LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCAKLSAgICA4NiwgODUsIDg1LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCAKLSAgICA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIAotICAgIDgzLCAxMjgsIDg2LCA4NCwgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIAotICAgIDU3LCA1NSwgMTI4LCA4NiwgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDU3LCA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDU3LCA0OCwgMTI4LCA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAKLSAgICAxMjgsIDg2LCA4MywgNTYsIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNTYsIDUyLCAxMjgsIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIAotICAgIDgzLCA1NSwgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgCi0gICAgNTMsIDEyOCwgODYsIDgzLCA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgCi0gICAgODYsIDgzLCA1NSwgNDksIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCAKLSAgICA1NywgMTI4LCA4NiwgODMsIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDU0LCA1MywgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDU0LCA1MCwgMTI4LCA4NiwgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNTMsIDU3LCAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgCi0gICAgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCAKLSAgICA4MywgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIAotICAgIDEyOCwgODYsIDgzLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIAotICAgIDgzLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgCi0gICAgNDgsIDEyOCwgODYsIDgzLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgCi0gICAgODMsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCAKLSAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCAKLSAgICA4NiwgODMsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDU2LCAxMjgsIDg2LCA4MywgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKLSAgICA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNDgsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTcsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTcsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTcsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU2LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTUsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTUsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTUsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCAKLSAgICA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTMsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1MiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTEsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1MCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCAKLSAgICA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIAotICAgIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA0OCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA0OCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCAKLSAgICA4OCwgMTI4LCA4NiwgNzksIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIAotICAgIDEyOCwgODYsIDc5LCA4NSwgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgMjExLCA4NiwgNzksIDgwLCAxMjgsIDg2LCAKLSAgICA3OSwgNzksIDczLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCA4NiwgNzksIDc2LCA4NSwgNzcsIAotICAgIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgNjUsIDc2LCA3NiwgCi0gICAgMTI4LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCA3OSwgMTI4LCA4NiwgNzksIDc2LCA2NSwgODAsIDg1LCAyMDMsIDg2LCAKLSAgICA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCA3MywgNjcsIDY5LCA3NiwgNjksIAotICAgIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgODksIDc5LCAxMjgsIDg2LCA3MywgCi0gICAgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCAKLSAgICA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIAotICAgIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgCi0gICAgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCAKLSAgICA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIAotICAgIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgCi0gICAgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIAotICAgIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTk3LCA4NiwgNzMsIDc4LCAxMjgsIAotICAgIDg2LCA3MywgNzYsIDc2LCA2NSwgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgODYsIDczLCA2OSwgODcsIDczLCA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA4NiwgNzMsIDY5LCAyMTIsIDg2LCA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCAKLSAgICA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIAotICAgIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgCi0gICAgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzAsIDY1LCAKLSAgICAxMjgsIDg2LCA2OSwgODksIDkwLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCA4NywgMTI4LCA4NiwgNjksIDIxNSwgCi0gICAgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAKLSAgICAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIDEyOCwgODYsIDY5LCA4MywgODMsIAotICAgIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgODksIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKLSAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKLSAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKLSAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCAKLSAgICA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCAKLSAgICA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCAKLSAgICA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKLSAgICA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKLSAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4NiwgNjksIDgyLCA3MSwgNjksIAotICAgIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIDgyLCAxMjgsIDg2LCA2OSwgCi0gICAgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIDY5LCA3MiwgNzMsIDY3LCAKLSAgICA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgMTI4LCA4NiwgNjksIDE5NywgCi0gICAgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgODYsIDY1LCA4NSwgMTI4LCA4NiwgCi0gICAgNjUsIDg0LCA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCAKLSAgICA4NiwgNjUsIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCA4NCwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCAKLSAgICA2NSwgODIsIDczLCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIAotICAgIDg2LCA2NSwgODIsIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAKLSAgICAxMjgsIDg2LCA2NSwgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAKLSAgICAxMjgsIDg2LCA2NSwgNzQsIDEyOCwgODYsIDY1LCA3MywgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgMjAwLCA4NiwgCi0gICAgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIAotICAgIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgMTI4LCA4NiwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDEyOCwgODYsIDQ4LCAKLSAgICA1MSwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA4NiwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDEyOCwgODYsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgODYsIDQ4LCA1MCwgNTQsIDEyOCwgODYsIDQ4LCA1MCwgNTMsIDEyOCwgODYsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAxMjgsIDg2LCA0OCwgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA0OCwgNTAsIDQ5LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzUsIDEyOCwgODYsIAotICAgIDQ4LCA1MCwgNDgsIDc0LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzIsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNDgsIDcxLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjksIAotICAgIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY4LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgCi0gICAgNjYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAxMjgsIDg2LCA0OCwgNDksIDU3LCAKLSAgICAxMjgsIDg2LCA0OCwgNDksIDU2LCAxMjgsIDg2LCA0OCwgNDksIDU1LCAxMjgsIDg2LCA0OCwgNDksIDU0LCAxMjgsIDg2LCAKLSAgICA0OCwgNDksIDUzLCAxMjgsIDg2LCA0OCwgNDksIDUyLCAxMjgsIDg2LCA0OCwgNDksIDUxLCAxMjgsIDg2LCA0OCwgNDksIAotICAgIDUwLCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDEyOCwgODYsIDQ4LCA0OSwgCi0gICAgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODYsIDQ4LCA0OSwgNDgsIDEyOCwgODYsIDQ4LCA0OCwgNTcsIDEyOCwgODYsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA1NCwgMTI4LCA4NiwgNDgsIDQ4LCA1MywgMTI4LCA4NiwgNDgsIDQ4LCA1MiwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDEyOCwgODYsIDQ4LCAKLSAgICA0OCwgNDksIDczLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzEsIDEyOCwgODYsIAotICAgIDQ4LCA0OCwgNDksIDcwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjgsIDEyOCwgCi0gICAgODYsIDQ4LCA0OCwgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDkwLCA4NSwgMTI4LCA4NSwgOTAsIDUxLCAxMjgsIDg1LCA5MCwgMTc5LCAKLSAgICA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4OSwgMTI4LCA4NSwgODcsIDg1LCAxMjgsIDg1LCA4NSwgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIDUxLCAxMjgsIDg1LCA4NSwgCi0gICAgODUsIDUwLCAxMjgsIDg1LCA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgODMsIDg1LCAKLSAgICA1MSwgMTI4LCA4NSwgODMsIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCA4NSwgNzcsIAotICAgIDg4LCAxMjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIDg1LCA4MywgCi0gICAgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIDg1LCA4MywgCi0gICAgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIDg1LCA4MiwgCi0gICAgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgODIsIDg1LCAKLSAgICAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgODIsIDczLCAKLSAgICA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCA2NSwgMTI4LCAKLSAgICA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgCi0gICAgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCAKLSAgICA3OSwgMjA2LCA4NSwgODAsIDgzLCA3MywgNjgsIDY5LCA0NSwgNjgsIDc5LCA4NywgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIAotICAgIDcyLCAyMTIsIDg1LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgCi0gICAgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIAotICAgIDE5OSwgODUsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgCi0gICAgMTk2LCA4NSwgNzgsIDc1LCA3OCwgNzksIDg3LCA3OCwgMTI4LCA4NSwgNzgsIDc1LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgODUsIDc4LCA3MywgODQsIDEyOCwgODUsIAotICAgIDc4LCA3MywgMjEyLCA4NSwgNzgsIDczLCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3MywgNzksIDIwNiwgODUsIDc4LCA3MywgCi0gICAgNzAsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDczLCA2NywgNzksIDgyLCAyMDYsIDg1LCA3OCwgNjgsIDIwNywgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCA4NCwgNzMsIDY5LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNzYsIDczLCA3OCwgMTk3LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDY4LCA3OSwgODQsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4NSwgNzgsIDY3LCAKLSAgICA2OSwgODIsIDg0LCA2NSwgNzMsIDc4LCA4NCwgMjE3LCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgCi0gICAgNjgsIDEyOCwgODUsIDc4LCA2NSwgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIDE5NiwgODUsIDc4LCAKLSAgICA2NSwgMTI4LCA4NSwgMjA2LCA4NSwgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCA3NywgNjYsIDgyLCAKLSAgICA2OSwgNzYsIDc2LCA2NSwgMTI4LCA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIDY2LCA3MywgNzgsIAotICAgIDEyOCwgODUsIDc1LCA4NSwgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgCi0gICAgODIsIDY1LCAxMjgsIDg1LCA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCAKLSAgICA3OCwgNzgsIDEyOCwgODUsIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAorICAgIDg3LCA2NSwgODEsIDcwLCA2NSwgMTI4LCA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgCisgICAgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCAKKyAgICA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIAorICAgIDg3LCA2NSwgNzYsIDIwNCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDczLCA4MywgODQsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIAorICAgIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIAorICAgIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgCisgICAgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIAorICAgIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIAorICAgIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgCisgICAgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDc0LCAxMjgsIDg2LCA4NywgCisgICAgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgCisgICAgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCAKKyAgICA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIAorICAgIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIAorICAgIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCAKKyAgICA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgCisgICAgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIAorICAgIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgCisgICAgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgCisgICAgMjExLCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDczLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgCisgICAgMTI4LCA4NiwgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCAKKyAgICA3NiwgNjksIDg5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCA3OSwgMTI4LCA4NiwgNzksIAorICAgIDc2LCA2NSwgODAsIDg1LCAyMDMsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgODYsIDc5LCA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY4LCAKKyAgICAxMjgsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgCisgICAgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgCisgICAgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIAorICAgIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgCisgICAgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCAKKyAgICA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIAorICAgIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgCisgICAgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIAorICAgIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgMjEwLCA4NiwgCisgICAgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIDY1LCAKKyAgICA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgNzMsIAorICAgIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCA3MywgCisgICAgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgNDUsIDUwLCAKKyAgICAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIAorICAgIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCA3MywgNjcsIDg0LCA3OSwgCisgICAgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIDEyOCwgODYsIDY5LCAKKyAgICA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCA4NiwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIDEyOCwgODYsIAorICAgIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgNjksIDIwNCwgCisgICAgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCisgICAgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgCisgICAgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCisgICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCA4MiwgODMsIDczLCAKKyAgICA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgCisgICAgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIDc2LCA2OSwgMTI4LCAKKyAgICA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCA4NiwgNjksIDY4LCAKKyAgICA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODYsIAorICAgIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCA2NSwgODQsIAorICAgIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgCisgICAgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCAKKyAgICA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIAorICAgIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgCisgICAgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCAKKyAgICA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIAorICAgIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA3NCwgCisgICAgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCA2NSwgNjUsIDg2LCA4NSwgCisgICAgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgMTI4LCA4NiwgCisgICAgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgODYsIDQ4LCAKKyAgICA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgODYsIDQ4LCA1MSwgNTIsIAorICAgIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCA0OCwgNTEsIDUwLCAxMjgsIAorICAgIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCAxMjgsIDg2LCAKKyAgICA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCA1NSwgMTI4LCA4NiwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgCisgICAgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzQsIAorICAgIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgCisgICAgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgMTI4LCA4NiwgNDgsIDUwLCAKKyAgICA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NiwgMTI4LCA4NiwgNDgsIAorICAgIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIDEyOCwgODYsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY2LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjcsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzMsIDEyOCwgCisgICAgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzAsIAorICAgIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgCisgICAgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIDg1LCA4OSwgNjUsIDc4LCAKKyAgICA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCA4NSwgNTAsIDEyOCwgODUsIAorICAgIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIDUxLCAxMjgsIDg1LCA4MywgCisgICAgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgODgsIDEyOCwgODUsIDgzLCAKKyAgICA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIAorICAgIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCA2OSwgNDUsIDQ5LCAxMjgsIAorICAgIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIAorICAgIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIAorICAgIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgCisgICAgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgCisgICAgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCAKKyAgICA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCAKKyAgICA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIDIxMiwgODUsIAorICAgIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgCisgICAgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4NSwgNzksIDc4LCAKKyAgICAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzUsIAorICAgIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAKKyAgICAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgNzgsIDczLCAyMTIsIDg1LCAKKyAgICA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCA3MCwgNzksIDgyLCA3NywgCisgICAgMTI4LCA4NSwgNzgsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCAKKyAgICA2OCwgMjA3LCA4NSwgNzgsIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIAorICAgIDc4LCAxOTcsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgCisgICAgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAKKyAgICAxOTMsIDg1LCA3OCwgNjcsIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjYsIDc2LCA2OSwgNzgsIAorICAgIDY4LCA2OSwgMTk2LCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgNjgsIDEyOCwgODUsIDc4LCA2NSwgCisgICAgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIDE5NiwgODUsIDc4LCA2NSwgMTI4LCA4NSwgMjA2LCA4NSwgCisgICAgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIDY2LCA3MywgNzgsIDEyOCwgODUsIDc1LCA4NSwgCisgICAgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDg1LCAKKyAgICA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCA3OCwgNzgsIDEyOCwgODUsIAorICAgIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MiwgNjgsIDEyOCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCiAgICAgODUsIDY5LCA4OSwgMTI4LCA4NSwgNjksIDczLCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgCiAgICAgNjgsIDg1LCA3MSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCAKICAgICA4NSwgNjgsIDY1LCA2NSwgODQsIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCAKQEAgLTUzOCw2OCArNTQxLDcxIEBACiAgICAgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3OSwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4NCwgODcsIDczLCAKICAgICA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgCiAgICAgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCAKLSAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgCi0gICAgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCAKLSAgICA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCi0gICAgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCAKLSAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgCi0gICAgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCAKLSAgICA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIAotICAgIDc2LCA3MCwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgCi0gICAgMTI4LCA4NCwgODYsIDgyLCA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCAKLSAgICA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIAotICAgIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCAKLSAgICA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIAotICAgIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgODQsIDg1LCA4MiwgCi0gICAgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCA3OCwgMTI4LCAKLSAgICA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCA3OSwgODQsIAotICAgIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIDEyOCwgODQsIAotICAgIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgCi0gICAgODQsIDg1LCAyMDUsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAKLSAgICAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCAKLSAgICA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIAotICAgIDgwLCAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIAotICAgIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCAKLSAgICA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIAotICAgIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgCi0gICAgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCAKLSAgICA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIAotICAgIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgCi0gICAgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIAotICAgIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIAotICAgIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgCi0gICAgNjUsIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAKLSAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIAotICAgIDc5LCA3OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgCi0gICAgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCAKLSAgICA4MywgNzIsIDY1LCAxOTQsIDg0LCA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIAotICAgIDY5LCA2OSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgCi0gICAgNjUsIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCAKLSAgICA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgCi0gICAgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCAKLSAgICA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgCi0gICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCAKLSAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgCi0gICAgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCAKLSAgICA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgCi0gICAgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKLSAgICA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAKKyAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDIwNywgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgCisgICAgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgCisgICAgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgCisgICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCAKKyAgICA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIAorICAgIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCA3OCwgODQsIDczLCA2OSwgODQsIDcyLCA4MywgMTI4LCA4NCwgCisgICAgODcsIDY5LCA3OCwgODQsIDczLCA2OSwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDQ1LCA4NCwgNzIsIAorICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCAKKyAgICAxOTcsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCA4MywgMTI4LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgCisgICAgMTI4LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgCisgICAgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCA2OSwgNjgsIDc5LCAKKyAgICAxMjgsIDg0LCA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCAKKyAgICA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIAorICAgIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgCisgICAgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCAKKyAgICA3OCwgMTI4LCA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCAKKyAgICA3OSwgODQsIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIAorICAgIDEyOCwgODQsIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjYsIDc2LCA2OSwgMjEwLCA4NCwgCisgICAgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCA4NCwgODUsIDIwNSwgODQsIDg1LCA3NiwgNzMsIDgwLCAKKyAgICAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIAorICAgIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY2LCAxMjgsIAorICAgIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgCisgICAgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCAKKyAgICA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIAorICAgIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgCisgICAgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCAKKyAgICA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIAorICAgIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgCisgICAgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCAKKyAgICA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIAorICAgIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgCisgICAgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgCisgICAgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjYsIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCAKKyAgICA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIDc5LCAyMTQsIDg0LCAKKyAgICA4MywgNzMsIDg1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgCisgICAgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgNzksIDc5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCAKKyAgICA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIAorICAgIDY5LCA2OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDE5NCwgODQsIDgzLCA3MiwgCisgICAgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgNjksIDY5LCA2NiwgMTI4LCA4NCwgODMsIDY1LCAKKyAgICA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCA2NSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjUsIAorICAgIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgCisgICAgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIAorICAgIDc3LCA4MCwgNDUsIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgCisgICAgNDUsIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUzLCAKKyAgICAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUyLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUxLCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDgsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU3LCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTUsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MywgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTIsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDksIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCAKKyAgICA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgCisgICAgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIAorICAgIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIAorICAgIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIAogICAgIDEyOCwgODQsIDgyLCA3OSwgNzUsIDg1LCA4NCwgNjUsIDgzLCA4NCwgMjAxLCA4NCwgODIsIDc5LCA2OSwgOTAsIDY5LCA3OCwgCiAgICAgNzMsIDY1LCAyMDYsIDg0LCA4MiwgNzMsIDg1LCA3NywgODAsIDcyLCAxMjgsIDg0LCA4MiwgNzMsIDg0LCA3OSwgMjExLCAKICAgICA4NCwgODIsIDczLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgODMsIDczLCA3NywgCkBAIC02ODgsMjQ5ICs2OTQsMjUwIEBACiAgICAgMjAwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA3MiwgODIsIDY5LCAKICAgICA2OSwgNDUsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgCiAgICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAKLSAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIAotICAgIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgCi0gICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCAKLSAgICA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgCi0gICAgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgCi0gICAgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCAKLSAgICA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIAotICAgIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCAKLSAgICA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIAotICAgIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgCi0gICAgNzEsIDE5NywgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIAotICAgIDczLCA2OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgCi0gICAgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCAKLSAgICA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIAotICAgIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgCi0gICAgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgCi0gICAgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIAotICAgIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIAotICAgIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgCi0gICAgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIAotICAgIDY1LCA3NCwgMTI4LCA4NCwgNzIsIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgCi0gICAgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKLSAgICA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIAotICAgIDgyLCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgCi0gICAgNzgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MSwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIAotICAgIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgCi0gICAgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIAotICAgIDg0LCAyMDAsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgCi0gICAgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCAKLSAgICA2OSwgODIsIDY1LCAxMjgsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIAotICAgIDIwNiwgODQsIDY5LCA4MywgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgCi0gICAgNjksIDgwLCAxMjgsIDg0LCA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCAKLSAgICA3OCwgMjEzLCA4NCwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIAotICAgIDY5LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIAotICAgIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgCi0gICAgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCAKLSAgICA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIAotICAgIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIAotICAgIDg0LCA2OSwgNzYsIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgCi0gICAgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAKLSAgICAyMDAsIDg0LCA2OSwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCAKLSAgICA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIAotICAgIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgCi0gICAgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCAKLSAgICA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgCi0gICAgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKLSAgICA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAKLSAgICAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIAotICAgIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgCi0gICAgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAKLSAgICAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIAotICAgIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgCi0gICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKLSAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODIsIDcxLCA2OSwgODQsIDEyOCwgODQsIDY1LCA4MSwgCi0gICAgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgCi0gICAgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgMjEyLCA4NCwgCi0gICAgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCA2NiwgNjUsIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIAotICAgIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzUsIDgyLCAyMDEsIDg0LCAKLSAgICA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIDY1LCA3NSwgNTIsIAotICAgIDEyOCwgODQsIDY1LCA3NSwgMTgwLCA4NCwgNjUsIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIAotICAgIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgCi0gICAgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCAKLSAgICA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzksIAotICAgIDEyOCwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgNjYsIDgzLCAKLSAgICAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCAKLSAgICA2NSwgMTk0LCA4NCwgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIAotICAgIDY1LCA3NywgMTI4LCA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgCi0gICAgNjUsIDcwLCAxMjgsIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA4NCwgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA4NCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIAotICAgIDg0LCA0OCwgNTEsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAKLSAgICAxMjgsIDg0LCA0OCwgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDg0LCA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgCi0gICAgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgCi0gICAgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODQsIDQ4LCA0OCwgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIAotICAgIDgzLCA5MCwgOTAsIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgCi0gICAgMTI4LCA4MywgOTAsIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgCi0gICAgMTI4LCA4MywgOTAsIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIAotICAgIDgzLCA4OSwgODQsIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgCi0gICAgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCAKLSAgICA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIAotICAgIDEyOCwgODMsIDg5LCA3OSwgODUsIDg3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgCi0gICAgODksIDc4LCA2OCwgNjksIDgzLCA3NywgNzksIDIxMSwgODMsIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIAotICAgIDIxMSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3OSwgNzEsIDg1LCA2OSwgMTI4LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKLSAgICAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIAotICAgIDg0LCA4MiwgODksIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDgzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAotICAgIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUyLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKLSAgICA3OSwgNzYsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNTEsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgCi0gICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCi0gICAgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIAotICAgIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAKLSAgICAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCAKLSAgICA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIAotICAgIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIAotICAgIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgCi0gICAgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIAotICAgIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgCi0gICAgODQsIDgyLCAxOTMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCAKLSAgICA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgCi0gICAgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIAotICAgIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIAotICAgIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgCi0gICAgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCAKLSAgICA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIAotICAgIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCAKLSAgICA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCAKLSAgICA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIAotICAgIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgCi0gICAgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCAKLSAgICA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIAotICAgIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgCi0gICAgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCAKLSAgICA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgODMsIDg1LCA3MywgMjEyLCA4MywgODUsIAotICAgIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIAotICAgIDgzLCA4NSwgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg1LCA2NywgNzUsIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCAKLSAgICAyMDMsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgCi0gICAgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCAKLSAgICA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCAKLSAgICA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIAotICAgIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCAKLSAgICA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgCi0gICAgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgCi0gICAgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIAotICAgIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKLSAgICAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgNzcsIDEyOCwgODMsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDgzLCAKLSAgICA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCA2NiwgMTI4LCA4MywgODUsIAotICAgIDY1LCAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIAotICAgIDg5LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA3MywgMjA3LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgCi0gICAgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCi0gICAgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzMsIDc1LCA2OSwgODQsIAotICAgIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA2OCwgCi0gICAgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIAotICAgIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgCi0gICAgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgCi0gICAgODQsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgCi0gICAgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCAKLSAgICA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDc5LCA2NywgMjAzLCA4MywgODQsIDczLCA4MiwgODIsIDg1LCAyMDgsIDgzLCAKLSAgICA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIAotICAgIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODQsIDczLCA2NywgCi0gICAgMjAzLCA4MywgODQsIDY5LCA4MiwgNjksIDc5LCAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIDgzLCA4NCwgNjksIDc4LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIAotICAgIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgCi0gICAgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCAKLSAgICA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA4MiwgODIsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDY1LCAyMTAsIDgzLCA4NCwgNjUsIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgCi0gICAgNjUsIDgyLCAxOTYsIDgzLCA4NCwgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCAKLSAgICA3NywgODAsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3MCwgNzAsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNzAsIDE5OCwgODMsIDg0LCA2NSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIAotICAgIDc5LCAxMjgsIDgzLCA4NCwgNTAsIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIAotICAgIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgCi0gICAgODksIDEyOCwgODMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDgzLCA4NSwgODUsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgCi0gICAgODMsIDgzLCA4NSwgODAsIDEyOCwgODMsIDgzLCA3OSwgODgsIDEyOCwgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCAKLSAgICA3OSwgODAsIDEyOCwgODMsIDgzLCA3OSwgNzksIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCA4OCwgMTI4LCAKLSAgICA4MywgODMsIDczLCA4NCwgMTI4LCA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA3MywgMTI4LCA4MywgODMsIAotICAgIDczLCA2OSwgODgsIDEyOCwgODMsIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDEyOCwgODMsIDgzLCA3MiwgNzMsIDc4LCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAKLSAgICAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDg1LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCAKLSAgICA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIAotICAgIDEyOCwgODMsIDgzLCA2NSwgNzMsIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIAotICAgIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgCi0gICAgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgNjksIDY4LCAKKyAgICA0NSwgNzYsIDY5LCA3MSwgNzEsIDY5LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIAorICAgIDY5LCA2OSwgNDUsIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDg0LCA3MiwgCisgICAgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA4NCwgNzIsIDc5LCAKKyAgICA4NSwgODMsIDY1LCA3OCwgNjgsIDIxMSwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDg0LCA3MiwgNzksIAorICAgIDg1LCA4MywgNjUsIDc4LCAxOTYsIDg0LCA3MiwgNzksIDg1LCA3MSwgNzIsIDIxMiwgODQsIDcyLCA3OSwgODUsIDEyOCwgCisgICAgODQsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAyMDYsIDg0LCA3MiwgNzksIDc4LCA3MSwgMTI4LCAKKyAgICA4NCwgNzIsIDc5LCA3NywgMTI4LCA4NCwgNzIsIDc5LCA3NCwgMTI4LCA4NCwgNzIsIDc5LCA2NSwgMTI4LCA4NCwgNzIsIAorICAgIDIwNywgODQsIDcyLCA3MywgODUsIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDczLCA4NCwgNjUsIDEyOCwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgNDUsIDgzLCA2OSwgNjcsIDc5LCA3OCwgMTk2LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgNzksIAorICAgIDc4LCA2OSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDIxNywgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDg0LCA3MiwgNzMsIDgyLCA2OCwgODMsIDEyOCwgODQsIAorICAgIDcyLCA3MywgODIsIDY4LCAyMTEsIDg0LCA3MiwgNzMsIDgyLCA2OCwgNDUsIDgzLCA4NCwgNjUsIDcxLCAxOTcsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA2OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgMTk2LCA4NCwgNzIsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgCisgICAgMjAwLCA4NCwgNzIsIDczLCA2NywgMjAzLCA4NCwgNzIsIDczLCA2NSwgNjYsIDEyOCwgODQsIDcyLCA2OSwgODksIDEyOCwgCisgICAgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAKKyAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIAorICAgIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgCisgICAgNzIsIDY5LCA4MiwgNzcsIDc5LCA3NywgNjksIDg0LCA2OSwgODIsIDEyOCwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNjgsIAorICAgIDg5LCA3OCwgNjUsIDc3LCA3MywgNjcsIDEyOCwgODQsIDcyLCA2OSwgODIsIDY5LCA3MCwgNzksIDgyLCA2OSwgMTI4LCA4NCwgCisgICAgNzIsIDY5LCA4MiwgMTk3LCA4NCwgNzIsIDY5LCAyMDYsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA4MywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA3NywgMTkzLCA4NCwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCAyMDAsIDg0LCA3MiwgNjksIDY1LCAxMjgsIDg0LCA3MiwgMTk3LCA4NCwgNzIsIDY1LCA4NywgMTI4LCAKKyAgICA4NCwgNzIsIDY1LCA3OCwgODQsIDcyLCA2NSwgNzUsIDcyLCA2NSwgODQsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAyMDYsIDg0LCA3MiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNCwgODQsIDcyLCA2NSwgNzQsIDEyOCwgODQsIDcyLCAKKyAgICA2NSwgMjAxLCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIAorICAgIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgCisgICAgODQsIDY5LCA4OCwgMjEyLCA4NCwgNjksIDg4LCAxMjgsIDg0LCA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIAorICAgIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKKyAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCisgICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAorICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCisgICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKKyAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCA2OSwgMTI4LCA4NCwgNjksIAorICAgIDc4LCA4MywgMTk3LCA4NCwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDc4LCAyMTEsIDg0LCA2OSwgNzgsIDc4LCA3MywgCisgICAgMjExLCA4NCwgNjksIDc4LCA3MSwgMTk3LCA4NCwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCAKKyAgICA4NCwgNjksIDc4LCAxMjgsIDg0LCA2OSwgMjA2LCA4NCwgNjksIDc3LCA4MCwgODUsIDIxMSwgODQsIDY5LCA3NiwgODUsIAorICAgIDEyOCwgODQsIDY5LCA3NiwgNzksIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4NCwgNjksIDc2LCA3MywgCisgICAgODMsIDcyLCAxOTMsIDg0LCA2OSwgNzYsIDY5LCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKKyAgICA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNjksIAorICAgIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDE5NywgODQsIDY5LCA3NiwgNjksIDczLCA2NSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDIwMCwgODQsIDY5LCA3NSwgMTI4LCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCAKKyAgICA3MSwgNjksIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgMjAwLCA4NCwgNjksIAorICAgIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKKyAgICA4MCwgNzksIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgCisgICAgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIAorICAgIDEyOCwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgCisgICAgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAKKyAgICAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIAorICAgIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgCisgICAgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDg1LCA3NywgMTI4LCA4NCwgNjUsIDIxMywgCisgICAgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCAKKyAgICA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAxMjgsIDg0LCA2NSwgODMsIDEyOCwgODQsIDY1LCA4MiwgODUsIAorICAgIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgCisgICAgMTI4LCA4NCwgNjUsIDgyLCA3MSwgNjksIDg0LCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAKKyAgICAxMjgsIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCAKKyAgICA2OSwgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIAorICAgIDg0LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgCisgICAgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCAKKyAgICA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgCisgICAgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAKKyAgICAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDE4MCwgODQsIDY1LCAKKyAgICA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCA4NCwgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgCisgICAgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIDg0LCA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIAorICAgIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgNzEsIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgCisgICAgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc5LCAxMjgsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA2NSwgCisgICAgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgODUsIDc2LCAKKyAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA4NCwgNjUsIDY2LCA4MywgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIAorICAgIDY1LCA2NiwgNzYsIDE5NywgODQsIDY1LCA2NiwgMTI4LCA4NCwgNjUsIDE5NCwgODQsIDY1LCA2NSwgODMsIDcyLCA2NSwgCisgICAgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA2NSwgNzYsIDg1LCAKKyAgICA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIDY1LCA3MCwgMTI4LCA4NCwgNjUsIDUwLCAxMjgsIDg0LCAKKyAgICA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDY1LCA0NSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA4NCwgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIAorICAgIDUwLCA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgCisgICAgMTI4LCA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCAKKyAgICA0OSwgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIAorICAgIDg0LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgCisgICAgODQsIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCAKKyAgICA0OCwgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIAorICAgIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAKKyAgICAxMjgsIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAKKyAgICAxMjgsIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCAKKyAgICA2NSwgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODMsIDg0LCAKKyAgICA2OSwgMjA1LCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIAorICAgIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIDgyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCA3MywgCisgICAgNjUsIDE5NSwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgCisgICAgODMsIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCAKKyAgICA4OSwgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzksIDcxLCA4NSwgCisgICAgNjksIDEyOCwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDg5LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIAorICAgIDgyLCA3MywgMTk1LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA4MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDUzLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgMTI4LCA4MywgODksIAorICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTYsIDEyOCwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAorICAgIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUyLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDQ1LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTAsIAorICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTAsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUwLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MCwgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCisgICAgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA0OSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNDksIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgCisgICAgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgCisgICAgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAKKyAgICAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIAorICAgIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgCisgICAgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCAKKyAgICA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgCisgICAgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCAKKyAgICA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIDg0LCA4MiwgMTkzLCA4MywgODUsIDg0LCAxMjgsIDgzLCAKKyAgICA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIDgzLCA4NSwgODIsIAorICAgIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCA4MywgODUsIDgyLCAKKyAgICA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIDY1LCA3NiwgCisgICAgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDgwLCAKKyAgICA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCA4MCwgNjksIAorICAgIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgODMsIDY5LCAKKyAgICAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDIxMCwgODMsIAorICAgIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIDc5LCAxMjgsIAorICAgIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDc4LCA4MiwgCisgICAgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCA4NSwgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIAorICAgIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDEyOCwgODMsIDg1LCAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIAorICAgIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgODMsIDg1LCA3NywgNjUsIDgzLCA3MiwgMTI4LCA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIAorICAgIDEyOCwgODMsIDg1LCA3NSwgODUsIDc4LCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIAorICAgIDgzLCA4NSwgNzUsIDIxMywgODMsIDg1LCA3MywgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgNzMsIDIxMiwgODMsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCAKKyAgICA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCA4MywgODUsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NSwgNjcsIAorICAgIDc1LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgMjAzLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgCisgICAgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCAKKyAgICA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIAorICAgIDczLCA4NCwgODUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgCisgICAgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCAKKyAgICA4NSwgNjYsIDgzLCA2OSwgMjEyLCA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIAorICAgIDg1LCA3OCwgNjcsIDg0LCA3MywgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCAKKyAgICA4NSwgNjYsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3MywgODQsIDc5LCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgCisgICAgODIsIDc5LCA4NSwgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIDc3LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAKKyAgICA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgNjYsIAorICAgIDEyOCwgODMsIDg1LCA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCAKKyAgICA4NCwgODUsIDcwLCA3MCwgNjksIDE5NiwgODMsIDg0LCA4NSwgNjgsIDg5LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA3MywgCisgICAgMjA3LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCAKKyAgICA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAKKyAgICAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzMsIDc1LCA2OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzMsIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCAKKyAgICA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIAorICAgIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIAorICAgIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgCisgICAgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCAKKyAgICA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgCisgICAgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIAorICAgIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgCisgICAgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgCisgICAgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDc5LCAKKyAgICA2NywgMjAzLCA4MywgODQsIDczLCA4MiwgODIsIDg1LCAyMDgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIAorICAgIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgCisgICAgODQsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODQsIDczLCA2NywgMjAzLCA4MywgODQsIDY5LCA4MiwgNjksIDc5LCAKKyAgICAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIDgzLCA4NCwgNjksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgCisgICAgMTk1LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCAKKyAgICA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIAorICAgIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgCisgICAgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NCwgCisgICAgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIAorICAgIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgCisgICAgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3NywgODAsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3MCwgNzAsIDEyOCwgODMsIDg0LCA2NSwgNzAsIAorICAgIDE5OCwgODMsIDg0LCA2NSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIDc5LCAxMjgsIDgzLCA4NCwgNTAsIAorICAgIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgODksIDEyOCwgODMsIDgzLCA4NSwgCisgICAgODgsIDEyOCwgODMsIDgzLCA4NSwgODUsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDgzLCA4NSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA3OSwgODgsIDEyOCwgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCA3OSwgODAsIDEyOCwgODMsIDgzLCAKKyAgICA3OSwgNzksIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCA4OCwgMTI4LCA4MywgODMsIDczLCA4NCwgMTI4LCAKKyAgICA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA3MywgMTI4LCA4MywgODMsIDczLCA2OSwgODgsIDEyOCwgODMsIAorICAgIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgNzMsIDEyOCwgODMsIDgzLCA3MiwgCisgICAgNzMsIDc4LCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAKKyAgICAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIAorICAgIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgCisgICAgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCAKKyAgICA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgCisgICAgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgODMsIDgzLCA2NSwgNzMsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCAKKyAgICA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIAorICAgIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDY5LCA2OCwgCiAgICAgMTI4LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCAKICAgICA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIAogICAgIDEyOCwgODMsIDgwLCA4OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIApAQCAtOTY5LDc3ICs5NzYsNzkgQEAKICAgICA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIAogICAgIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgCiAgICAgMTI4LCA4MywgNzgsIDc5LCAyMTUsIDgzLCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MywgNzgsIDc5LCA4NSwgMjEyLCA4MywgCi0gICAgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDc3LCA3MywgNzYsIDE5NywgODMsIDc3LCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCAKLSAgICA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIAotICAgIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgODcsIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgCi0gICAgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDc5LCA2NSwgMjA2LCA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDc2LCA3MywgNzEsIDcyLCA4NCwgNzYsIDIxNywgODMsIDc2LCA3MywgNjgsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgCi0gICAgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzYsIDczLCA2NywgNjksIDEyOCwgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCAKLSAgICA2OSwgODUsIDg0LCAyMDAsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgNzYsIDY1LCA4NiwgNzksIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCAKLSAgICA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIAotICAgIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgCi0gICAgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCAKLSAgICA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIAotICAgIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgNjksIDEyOCwgODMsIDczLCA5MCwgMTk3LCA4MywgNzMsIDg4LCA4NCwgODksIAotICAgIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIAotICAgIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgCi0gICAgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIAotICAgIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgCi0gICAgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIAotICAgIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgCi0gICAgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIAotICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCAKLSAgICA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAyMTEsIDgzLCA3MywgNzgsIDg1LCA4MywgNzksIDczLCAxOTYsIAotICAgIDgzLCA3MywgNzgsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDgzLCA3MywgNzgsIDc1LCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgMTI4LCA4MywgNzMsIAotICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCAKLSAgICA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAotICAgIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA2OCwgCi0gICAgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgODMsIAotICAgIDEyOCwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCAyMTEsIDgzLCA3MywgNzcsIDgwLCA3NiwgCi0gICAgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCAKLSAgICA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIAotICAgIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgCi0gICAgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAKLSAgICA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgCi0gICAgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgCi0gICAgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIDE5MywgODMsIDczLCAKLSAgICA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIDcxLCAxMjgsIDgzLCAKLSAgICA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgNjgsIDY5LCAxMjgsIAotICAgIDgzLCA3MywgNjgsIDE5NywgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgNzcsIDEyOCwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgCi0gICAgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgNzMsIDY1LCAKLSAgICAxMjgsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIDgzLCA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCAKLSAgICA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIDEyOCwgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIDgzLCA3MiwgODcsIDE5NywgODMsIDcyLCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCAKLSAgICA3MiwgODUsIDg0LCA4NCwgNzYsIDY5LCA2NywgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA3NywgMTI4LCA4MywgNzIsIDg1LCA3NiwgMTI4LCA4MywgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIAotICAgIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgCi0gICAgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgCi0gICAgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCAKLSAgICA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAxMjgsIDgzLCA3MiwgODIsIDczLCA3MywgCi0gICAgMTI4LCA4MywgNzIsIDgyLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCA4MywgCi0gICAgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIDcyLCAKLSAgICA3OSwgODUsIDc2LCA2OCwgNjksIDIxMCwgODMsIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgCisgICAgNzgsIDY5LCA2OSwgOTAsIDczLCA3OCwgMTk5LCA4MywgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCAKKyAgICA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIAorICAgIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgCisgICAgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgODMsIDc3LCA3MywgNzYsIDE5NywgODMsIDc3LCA2OSwgNjUsIDgyLCAKKyAgICAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgCisgICAgODcsIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgCisgICAgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDc5LCA2NSwgMjA2LCAKKyAgICA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzYsIDIxNywgODMsIDc2LCA3MywgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzYsIDczLCA2NywgNjksIDEyOCwgCisgICAgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCA2OSwgODUsIDg0LCAyMDAsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCAKKyAgICA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDY5LCA2OSwgMjA4LCA4MywgNzYsIDY1LCA4NiwgNzksIAorICAgIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgCisgICAgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCAKKyAgICA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIAorICAgIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIAorICAgIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgCisgICAgNjksIDEyOCwgODMsIDczLCA5MCwgMTk3LCA4MywgNzMsIDg4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIAorICAgIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgCisgICAgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCAKKyAgICA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIAorICAgIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgCisgICAgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCAKKyAgICA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgCisgICAgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgCisgICAgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKKyAgICA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCAKKyAgICA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIAorICAgIDc5LCAyMTEsIDgzLCA3MywgNzgsIDg1LCA4MywgNzksIDczLCAxOTYsIDgzLCA3MywgNzgsIDc5LCA3NiwgNzksIDcxLCA3MywgCisgICAgNjcsIDY1LCAyMDQsIDgzLCA3MywgNzgsIDc4LCA4OSwgNzMsIDczLCA4OSwgNzIsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgCisgICAgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgCisgICAgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCAKKyAgICA4NSwgODMsIDEyOCwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCAyMTEsIDgzLCA3MywgNzcsIAorICAgIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgCisgICAgNzMsIDc2LCA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCAKKyAgICA3OCwgNzEsIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIAorICAgIDczLCA3NiwgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCAKKyAgICA1MSwgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCAKKyAgICA3MywgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIDE5MywgODMsIAorICAgIDczLCA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIDcxLCAxMjgsIAorICAgIDgzLCA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgNjgsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgNjgsIDE5NywgODMsIDczLCA2OCwgNjgsIDcyLCA3MywgMTI4LCA4MywgNzMsIDY4LCA2OCwgNzIsIAorICAgIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgCisgICAgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgCisgICAgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgCisgICAgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIAorICAgIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NiwgCisgICAgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgODQsIDc2LCAKKyAgICA2OSwgNjcsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCAKKyAgICA4NSwgNzYsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgCisgICAgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDg1LCA3MSwgMTI4LCAKKyAgICA4MywgNzIsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIAorICAgIDczLCAxMjgsIDgzLCA3MiwgODIsIDczLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgCisgICAgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgMjEwLCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAKICAgICAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODMsIAogICAgIDcyLCA3OSwgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIDY5LCAKICAgICAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgNzksIApAQCAtMTA3Nyw1NDMgKzEwODYsNTQ4IEBACiAgICAgMTI4LCA4MywgNzIsIDY1LCA4OCwgMTI4LCA4MywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgzLCAKICAgICA3MiwgNjUsIDg2LCA3MywgNjUsIDIwNiwgODMsIDcyLCA2NSwgODYsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDg1LCAxMjgsIAogICAgIDgzLCA3MiwgNjUsIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA4NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjEzLCA4MywgCi0gICAgNzIsIDY1LCA4MiwgODAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDgyLCA1MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAxOTcsIDgzLCA3MiwgNjUsIDgwLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA4MywgNzIsIDY1LCAyMDYsIDgzLCAKLSAgICA3MiwgNjUsIDc3LCA4MiwgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIDcyLCA2OSwgNzYsIDY5LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA3NSwgODQsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDc1LCA3MywgNzgsIDE5OSwgODMsIDcyLCA2NSwgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgNzAsIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDcwLCAyMTIsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAKLSAgICAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIAotICAgIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgCi0gICAgODMsIDcyLCA2NSwgMTgyLCA4MywgNzIsIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgCi0gICAgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIDY3LCAxMjgsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgCi0gICAgNzEsIDEyOCwgODMsIDY5LCA4OSwgNzUsIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCAKLSAgICA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIAotICAgIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgCi0gICAgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgCi0gICAgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCAKLSAgICA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIAotICAgIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgCi0gICAgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCAKLSAgICA4MywgNjksIDgyLCA3MywgNzAsIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgODMsIAotICAgIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDg1LCA4MCwgNzYsIDE5NywgODMsIDY5LCA4MCwgCi0gICAgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCAKLSAgICA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIAotICAgIDczLCAxMjgsIDgzLCA2OSwgNzcsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzcsIDc1LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIAotICAgIDc3LCA3MywgODMsIDc5LCA3MCwgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDc3LCA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIAotICAgIDY3LCAyMTIsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgCi0gICAgNzYsIDc5LCAyMDYsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCAKLSAgICA3MywgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIAotICAgIDY5LCA3NywgNzMsIDQ1LCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAotICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAotICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgCi0gICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCi0gICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAotICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCAKLSAgICA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIAotICAgIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgCi0gICAgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgCi0gICAgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgCi0gICAgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAKLSAgICAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIAotICAgIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIAotICAgIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgCi0gICAgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIAotICAgIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgCi0gICAgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAotICAgIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgCi0gICAgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCAKLSAgICA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIAotICAgIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCAKLSAgICA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIAotICAgIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgCi0gICAgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgCi0gICAgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCAKLSAgICA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIAotICAgIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIAotICAgIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIAotICAgIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgCi0gICAgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCAKLSAgICA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIAotICAgIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgCi0gICAgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIAotICAgIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgCi0gICAgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIAotICAgIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgCi0gICAgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCAKLSAgICA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIAotICAgIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgCi0gICAgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA3OSwgODQsIAotICAgIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCA3NSwgCi0gICAgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgMTI4LCAKLSAgICA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAxMjgsIAotICAgIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgMTI4LCA4MywgCi0gICAgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgNjksIDg0LCAKLSAgICAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCAKLSAgICA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgCi0gICAgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAKLSAgICAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCAKLSAgICA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIAotICAgIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIAotICAgIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgCi0gICAgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAKLSAgICAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAKLSAgICAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCAKLSAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCAKLSAgICA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCAKLSAgICA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCAKLSAgICA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIAotICAgIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIAotICAgIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgCi0gICAgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCAKLSAgICA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIAotICAgIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIAotICAgIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgCi0gICAgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCAKLSAgICA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIAotICAgIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgCi0gICAgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCAKLSAgICA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgCi0gICAgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIAotICAgIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgCi0gICAgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCAKLSAgICA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIAotICAgIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIAotICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCAKLSAgICA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIAotICAgIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgCi0gICAgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCAKLSAgICA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIAotICAgIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgCi0gICAgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgCi0gICAgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCAKLSAgICA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIAotICAgIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIAotICAgIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIAotICAgIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIAotICAgIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIAotICAgIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIDgyLCA3MywgODAsIDEyOCwgODIsIAotICAgIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgCi0gICAgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgNjUsIDEyOCwgODIsIDczLCAKLSAgICA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAotICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCAKLSAgICA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKLSAgICA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDc2LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIAotICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCAKLSAgICA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCAKLSAgICA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIAotICAgIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgCi0gICAgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCAKLSAgICA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCAKLSAgICA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKLSAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCA4MywgNjcsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgCi0gICAgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCAKLSAgICA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIAotICAgIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgCi0gICAgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCAKLSAgICA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIAotICAgIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgCi0gICAgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCAKLSAgICA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIAotICAgIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgCi0gICAgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCAKLSAgICA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgCi0gICAgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgCi0gICAgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgCi0gICAgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCAKLSAgICA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIAotICAgIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCAKLSAgICA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgCi0gICAgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAKLSAgICA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgCi0gICAgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIAotICAgIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgODIsIDY5LCA2OCwgCi0gICAgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNzMsIAotICAgIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzYsIDczLCA3OCwgCi0gICAgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDgyLCA2OSwgNjcsIAotICAgIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDEyOCwgODIsIDY5LCAKLSAgICA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIAotICAgIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA2OSwgCi0gICAgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNjUsIDc2LCAKLSAgICA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIDgyLCA2OSwgNjUsIDY3LCA3MiwgCi0gICAgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgMTkzLCA4MiwgNjUsIDg5LCA4MywgCi0gICAgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIDE5MywgODIsIDY1LCA4NCwgNjUsIAotICAgIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgCi0gICAgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCAKLSAgICA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgCi0gICAgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIAotICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgCi0gICAgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCAKLSAgICA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgCi0gICAgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCAKLSAgICA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIAotICAgIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgODIsIDY1LCAKLSAgICA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCAKLSAgICA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCA0OCwgNTAsIAotICAgIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIDgyLCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCA4MiwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgODIsIDQ4LCAKLSAgICA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCA4MiwgNDgsIAotICAgIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIDQ1LCA2NywgCi0gICAgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIDgxLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIDgxLCA4OSwgCi0gICAgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgMTI4LCA4MSwgCi0gICAgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIDgxLCA4NywgCi0gICAgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIDgxLCA4NSwgCi0gICAgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIDgxLCA4NSwgCi0gICAgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgMTI4LCAKLSAgICA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgNzksIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCA4MSwgCi0gICAgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIDY3LCAKLSAgICA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgNzgsIAotICAgIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCA3NiwgCi0gICAgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCi0gICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAotICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCAKLSAgICA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIAotICAgIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgCi0gICAgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIAotICAgIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgCi0gICAgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIAotICAgIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIAotICAgIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIAotICAgIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIAotICAgIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgCi0gICAgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgCi0gICAgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAKLSAgICAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCAKLSAgICA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIAotICAgIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIAotICAgIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgCi0gICAgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgCi0gICAgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIAotICAgIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgCi0gICAgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIAotICAgIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgCi0gICAgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIAotICAgIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCi0gICAgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCAKLSAgICA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCAKLSAgICA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAKLSAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCAKLSAgICA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIAotICAgIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIAotICAgIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIAotICAgIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgCi0gICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIAotICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgCi0gICAgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAotICAgIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCi0gICAgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCAKLSAgICA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgCi0gICAgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCA3MCwgNzksIDg1LCA3OCwgNjgsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgMjEyLCA4MCwgCi0gICAgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDgwLCA4MiwgNzMsIDg2LCAKLSAgICA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIDg0LCA4MiwgMTkzLCA4MCwgODIsIAotICAgIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCAKLSAgICA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIAotICAgIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA4MCwgODIsIDY5LCA4MywgCi0gICAgNjksIDg0LCAxMjgsIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCAKLSAgICA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgNjgsIDY5LCA4MiwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCA2OSwgNzAsIDY1LCAKLSAgICA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIAotICAgIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCA4MywgMTI4LCA4MCwgODIsIDY5LCA2NywgCi0gICAgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTk2LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAKLSAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCA4MiwgNjUsIDg5LCA2OSwgMjEwLCA4MCwgODIsIAotICAgIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgCi0gICAgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCAKLSAgICA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIAotICAgIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgCi0gICAgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgCi0gICAgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCAKLSAgICA3OSwgODcsIDY4LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgCi0gICAgMjE3LCA4MCwgNzksIDg1LCA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCAKLSAgICA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODAsIDc5LCA4MywgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgCi0gICAgODMsIDg0LCAxMjgsIDgwLCA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4NCwgNjUsIDY2LCA3NiwgCi0gICAgMTk3LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA4NSwgMjExLCA4MCwgNzksIDgwLCA4MCwgNzMsIDc4LCAxOTksIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIAotICAgIDc5LCA4MCwgNjcsIDc5LCA4MiwgNzgsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgCi0gICAgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgCi0gICAgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCAKKyAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNzUsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgCisgICAgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAKKyAgICAxOTcsIDgzLCA3MiwgNjUsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCAKKyAgICA4MywgNzIsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDc3LCA4MiwgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIAorICAgIDcyLCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA3NiwgNzYsIDc5LCAyMTUsIDgzLCA3MiwgNjUsIDc1LCA4NCwgCisgICAgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAKKyAgICAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAorICAgIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgCisgICAgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgCisgICAgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgCisgICAgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCAKKyAgICA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIAorICAgIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgCisgICAgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIAorICAgIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgCisgICAgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCAKKyAgICA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgCisgICAgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCAKKyAgICA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIDgzLCA2OSwgODIsIDczLCA3MCwgCisgICAgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCAKKyAgICA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgODUsIDgwLCA3NiwgMTk3LCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIAorICAgIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgCisgICAgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCAKKyAgICA3NywgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIAorICAgIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAKKyAgICAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIAorICAgIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgCisgICAgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCAKKyAgICA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgCisgICAgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCAKKyAgICA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgNzMsIDY5LCAxMjgsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAorICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKKyAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAorICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAKKyAgICAxOTMsIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCAKKyAgICA4MywgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA4NiwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIAorICAgIDEyOCwgODMsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY3LCA2NSwgCisgICAgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCA4MywgNjksIDY1LCA4NCwgMTI4LCAKKyAgICA4MywgNjksIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIDgzLCA2OCwgNzksIDc4LCAxOTksIAorICAgIDgzLCA2OCwgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgODAsIDc2LCA2OSwgMTI4LCA4MywgCisgICAgNjcsIDgyLCA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIAorICAgIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODMsIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzksIDc5LCA4NCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzMsIDgzLCAKKyAgICA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAxMjgsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIAorICAgIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIDY5LCA2OCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCisgICAgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAyMDQsIDgzLCA2NywgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCAKKyAgICA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIDY5LCA4MCwgODQsIDY5LCAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIAorICAgIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgCisgICAgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgNjYsIDg1LCAxOTQsIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCAKKyAgICA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MywgNjUsIDg5LCAxMjgsIAorICAgIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODMsIDY1LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg3LCAxMjgsIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAxOTMsIDgzLCA2NSwgODUsIDczLCA3NiwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgNjksIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDY1LCA3OCwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIAorICAgIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIAorICAgIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgCisgICAgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCAKKyAgICA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDcyLCAyMDEsIAorICAgIDgzLCA2NSwgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgCisgICAgODMsIDY1LCA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAKKyAgICAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIAorICAgIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgCisgICAgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIAorICAgIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgCisgICAgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCAKKyAgICA2NSwgNjgsIDEyOCwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIAorICAgIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDc1LCA3OSwgCisgICAgODQsIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCAKKyAgICA3NSwgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgCisgICAgMTI4LCA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAKKyAgICAxMjgsIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgCisgICAgNjksIDg0LCAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAKKyAgICAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIAorICAgIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgCisgICAgNDUsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCAKKyAgICA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIAorICAgIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgCisgICAgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgCisgICAgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAKKyAgICA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgCisgICAgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgCisgICAgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgCisgICAgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCAKKyAgICA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIAorICAgIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIAorICAgIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgCisgICAgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgCisgICAgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCAKKyAgICA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCAKKyAgICA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIAorICAgIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAKKyAgICAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIAorICAgIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIAorICAgIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgCisgICAgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCAKKyAgICA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgCisgICAgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgCisgICAgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAKKyAgICAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCAKKyAgICA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIAorICAgIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAKKyAgICAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIAorICAgIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgCisgICAgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCAKKyAgICA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIAorICAgIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgCisgICAgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCAKKyAgICA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIAorICAgIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIAorICAgIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgCisgICAgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCAKKyAgICA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAKKyAgICAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgCisgICAgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCAKKyAgICA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIAorICAgIDE5OSwgODIsIDczLCA4MywgNzIsIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIAorICAgIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgCisgICAgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCAKKyAgICA2NiwgNjUsIDEyOCwgODIsIDczLCA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIAorICAgIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIAorICAgIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgCisgICAgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIAorICAgIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIAorICAgIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgCisgICAgNzIsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDcwLCAKKyAgICA3NiwgNjksIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCisgICAgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgCisgICAgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgCisgICAgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY2LCA2NiwgNzksIDIwNiwgODIsIDczLCA2NSwgMjA0LCAKKyAgICA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCA3OSwgMTI4LCA4MiwgNzIsIDIwNywgODIsIDcyLCA3MywgNzgsIAorICAgIDc5LCA2NywgNjksIDgyLCA3OSwgODMsIDEyOCwgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzIsIDEyOCwgODIsIDcxLCA4OSwgCisgICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIDY5LCAKKyAgICA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgyLCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgCisgICAgNjksIDY4LCA0NSwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCAKKyAgICA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgCisgICAgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAKKyAgICAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgCisgICAgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIAorICAgIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIAorICAgIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgCisgICAgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIAorICAgIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgCisgICAgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgCisgICAgNzcsIDczLCA3OCwgNjgsIDY5LCAyMTAsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIAorICAgIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4OCwgNjksIDY4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCAKKyAgICA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDczLCAxMjgsIDgyLCA2OSwgNzEsIAorICAgIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCA4MiwgCisgICAgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDgyLCAKKyAgICA2OSwgNzEsIDg1LCA3NiwgODUsIDIxMSwgODIsIDY5LCA3MSwgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgNjksIAorICAgIDcxLCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDcxLCA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA3MywgCisgICAgNjUsIDEyOCwgODIsIDY5LCA3MCwgNzksIDgyLCA3NywgNjksIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAKKyAgICAxOTcsIDgyLCA2OSwgNjgsIDg1LCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNjcsIAorICAgIDg5LCA2NywgNzYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCA4NCwgCisgICAgNzMsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCAKKyAgICA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgCisgICAgMTk3LCA4MiwgNjksIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA2NywgNzksIDgyLCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIAorICAgIDY4LCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgMTk2LCA4MiwgNjksIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDg2LCAKKyAgICAxOTcsIDgyLCA2OSwgNjcsIDY5LCA4MCwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDIxMCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCA1MCwgCisgICAgMTI4LCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgMTI4LCAKKyAgICA4MiwgNjksIDY1LCA2NywgNzIsIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgODMsIAorICAgIDE5MywgODIsIDY1LCA4OSwgODMsIDEyOCwgODIsIDY1LCA4OSwgMjExLCA4MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4MiwgNjUsIDg0LCA3MywgNzksIDEyOCwgODIsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDcyLCAKKyAgICAxOTMsIDgyLCA2NSwgODQsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDEyOCwgODIsIDY1LCA4MywgODcsIDY1LCA2OCwgNzMsIAorICAgIDEyOCwgODIsIDY1LCA4MywgNzksIDg1LCAyMDQsIDgyLCA2NSwgODMsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDgxLCAxMjgsIAorICAgIDgyLCA2NSwgODAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDgyLCA2NSwgNzgsIDY1LCAKKyAgICAxMjgsIDgyLCA2NSwgNzgsIDEyOCwgODIsIDY1LCA3NywgMjExLCA4MiwgNjUsIDc3LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCAKKyAgICA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIDY1LCA2NSwgNzgsIDgzLCA2NSwgCisgICAgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgODMsIDY5LCAxOTYsIDgyLCAKKyAgICA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAxMjgsIDgyLCA2NSwgNzMsIAorICAgIDc2LCA4NywgNjUsIDIxNywgODIsIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIDIwNywgODIsIDY1LCA3MywgCisgICAgNjgsIDY1LCAxMjgsIDgyLCA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzIsIAorICAgIDEyOCwgODIsIDY1LCA3MCwgNjksIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCA2OCwgNzMsIDc5LCA2NSwgCisgICAgNjcsIDg0LCA3MywgODYsIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIDczLCAyMDcsIDgyLCAKKyAgICA2NSwgNjgsIDIwMSwgODIsIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIDg1LCA2OSwgMjEyLCAKKyAgICA4MiwgNjUsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDY2LCA2NiwgNzMsIAorICAgIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgCisgICAgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgCisgICAgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAKKyAgICAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCAKKyAgICA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCAKKyAgICA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCAKKyAgICA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCAKKyAgICA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCAKKyAgICA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgCisgICAgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAKKyAgICAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIAorICAgIDIxMSwgODEsIDg1LCA3MywgNzYsIDIxMiwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIAorICAgIDgxLCA4NSwgNzMsIDEyOCwgODEsIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAKKyAgICAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgCisgICAgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgCisgICAgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCAKKyAgICA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIAorICAgIDgyLCA4NCwgNjksIDgyLCAxMjgsIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgCisgICAgODUsIDgwLCA3NiwgMTk3LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDgyLCAKKyAgICA2NSwgNzgsIDIxMiwgODEsIDg1LCA2NSwgNjgsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgCisgICAgMTI4LCA4MSwgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIAorICAgIDEyOCwgODEsIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIAorICAgIDgwLCAxMjgsIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCAKKyAgICA3OSwgNjUsIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCAKKyAgICA2NSwgMTI4LCA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDcwLCAKKyAgICAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCAKKyAgICA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIAorICAgIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIAorICAgIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgCisgICAgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgCisgICAgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgCisgICAgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAKKyAgICAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIAorICAgIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgCisgICAgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIAorICAgIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIAorICAgIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIAorICAgIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCAKKyAgICA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIAorICAgIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgCisgICAgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCAKKyAgICA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIAorICAgIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgCisgICAgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgCisgICAgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAKKyAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIAorICAgIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIAorICAgIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIAorICAgIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIAorICAgIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIAorICAgIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKKyAgICA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCAKKyAgICA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIAorICAgIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgCisgICAgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCAKKyAgICA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIAorICAgIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIAorICAgIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgCisgICAgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIAorICAgIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgMTk2LCA4MCwgCisgICAgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIAorICAgIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAKKyAgICAxOTcsIDgwLCA4MiwgNzMsIDg2LCA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIAorICAgIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIAorICAgIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgODIsIDY5LCA4NiwgNzMsIAorICAgIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDgzLCA2OSwgODQsIDEyOCwgCisgICAgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgzLCA2NywgODIsIAorICAgIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MSwgNzgsIDY1LCA3OCwgCisgICAgMjEyLCA4MCwgODIsIDY5LCA3MCwgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCAKKyAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIAorICAgIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAKKyAgICAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIAorICAgIDgyLCA2NSwgODksIDY5LCAyMTAsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgCisgICAgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCAKKyAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIAorICAgIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgCisgICAgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgCisgICAgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAxMjgsIDgwLCA4MCwgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgCisgICAgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCA4MiwgMjExLCA4MCwgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCAKKyAgICA4NywgNjksIDIxMCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAyMTcsIDgwLCA3OSwgODUsIDY3LCAKKyAgICA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgODAsIAorICAgIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4MCwgNzksIDgzLCA4NCwgCisgICAgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCA4MywgODQsIDEyOCwgODAsIDc5LCAKKyAgICA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNzksIDgzLCA3MywgODQsIAorICAgIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgODIsIDgyLCA2OSwgCisgICAgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCAKKyAgICA3MywgNzgsIDE5OSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCA2NywgNzksIDgyLCA3OCwgCisgICAgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgCisgICAgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAKKyAgICAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3OSwgMTI4LCA4MCwgNzksIDc2LCA3MywgODMsIAogICAgIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIDY5LCAxMjgsIAogICAgIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgCiAgICAgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCAKQEAgLTE2OTEsNzYgKzE3MDUsNzggQEAKICAgICA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgNzMsIDg2LCA2OSwgCiAgICAgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDY5LCAKICAgICA4MCwgNjksIDg0LCAxMjgsIDgwLCA2OSwgODAsIDY5LCAyMTIsIDgwLCA2OSwgNzksIDgyLCA4NCwgMjAwLCA4MCwgNjksIAotICAgIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgCi0gICAgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCAKLSAgICA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIAotICAgIDY5LCA3OCwgNzgsIDY1LCA3OCwgODQsIDEyOCwgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgCi0gICAgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIAotICAgIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAKLSAgICAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCAKLSAgICA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIAotICAgIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIAotICAgIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIAotICAgIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgNjUsIDIwNCwgODAsIDY5LCA2NSwgNzUsIDIxMSwgODAsIDY5LCA2NSwgCi0gICAgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIDczLCAKLSAgICAxMjgsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIDEyOCwgCi0gICAgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODAsIDY1LCAKLSAgICA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgNjUsIDg2LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgCi0gICAgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgCi0gICAgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCAKLSAgICA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgCi0gICAgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgCi0gICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCA4MCwgNjUsIDgzLCAKLSAgICA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDc1LCAKLSAgICAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIAotICAgIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgCi0gICAgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCAKLSAgICA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIDcyLCA4MiwgCi0gICAgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCAKLSAgICA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgMjA0LCA4MCwgNjUsIAotICAgIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCAKLSAgICA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIDY1LCA4MiwgNjUsIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgODIsIAotICAgIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgCi0gICAgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCAKLSAgICA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgCi0gICAgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAotICAgIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIAotICAgIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDg0LCA3MiwgNzYsIDc5LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgCisgICAgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCAKKyAgICA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDc4LCA2NSwgNzgsIDg0LCAxMjgsIAorICAgIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIAorICAgIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgNzMsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIAorICAgIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDc4LCA4NSwgODQsIDgzLCAxMjgsIDgwLCA2OSwgNjUsIDc1LCAyMTEsIDgwLCA2OSwgCisgICAgNjUsIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCAKKyAgICA3MywgMTI4LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCAyMTMsIDgwLCA2NSwgCisgICAgODQsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCAKKyAgICA2NSwgODQsIDIwMCwgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIAorICAgIDg0LCAxMjgsIDgwLCA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgCisgICAgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgCisgICAgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIAorICAgIDg3LCA3OCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNjksIDc4LCA3MSwgNjksIDIxMCwgCisgICAgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCAKKyAgICA4MSwgMTI4LCA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIAorICAgIDY1LCA4MiwgODQsIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgCisgICAgODQsIDczLCA2NSwgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIAorICAgIDg0LCA3MywgNjUsIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgCisgICAgNjUsIDgyLCA3NSwgMTI4LCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgNzMsIDcxLCA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNjksIDIxMSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDgwLCA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCAKKyAgICA3NywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIAorICAgIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgCisgICAgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCAKKyAgICA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIAorICAgIDc2LCA3MywgODAsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgCisgICAgNjksIDIxMCwgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgCisgICAgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCAKKyAgICA3NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIAorICAgIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIAorICAgIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCAKKyAgICA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIAorICAgIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCiAgICAgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCAKLSAgICA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIAotICAgIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgCi0gICAgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NywgODksIDgyLCA2OSwgNzgsIDE5NywgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIAotICAgIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgCi0gICAgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCAKLSAgICA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCAKLSAgICA2OSwgMTk2LCA4MCwgNjUsIDczLCA3OCwgODQsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA4MCwgNjUsIDczLCAxMjgsIAotICAgIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODMsIDEyOCwgCi0gICAgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIDY1LCAKLSAgICA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgNjUsIAotICAgIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICA4MCwgNjUsIDc4LCA2NywgNjUsIDc1LCA2OSwgODMsIDEyOCwgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgCisgICAgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDIwNiwgODAsIDY1LCA3NywgODUsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCA3NywgODMsIDcyLCA2NSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA3MywgNzgsIDcxLCA3NSwgCisgICAgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA3OCwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2NSwgNjksIDcyLCAxMjgsIAorICAgIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIDY1LCAxMjgsIDgwLCA2NSwgCisgICAgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCA3NywgMTI4LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCAKKyAgICA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgCisgICAgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgCisgICAgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCAKKyAgICA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIAorICAgIDEyOCwgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgCisgICAgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgCisgICAgNjUsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAogICAgIDEyOCwgODAsIDY1LCA2NSwgODQsIDg1LCAxMjgsIDgwLCA2NSwgNjUsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MCwgCiAgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgNjUsIDczLCAxMjgsIDgwLCAKICAgICA2NSwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgODAsIDY1LCA2NSwgMTI4LCA4MCwgNTAsIDEyOCwgODAsIApAQCAtMTc3MCw0NjQgKzE3ODYsNDcxIEBACiAgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKICAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAogICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAotICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCi0gICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKLSAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgMTI4LCA3OSwgODYsIAotICAgIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgCi0gICAgNzYsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIAotICAgIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgCi0gICAgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgMjExLCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIAotICAgIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgCi0gICAgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCAKLSAgICA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAKLSAgICAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIAotICAgIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgNjksIDIxMCwgCi0gICAgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgCi0gICAgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgODUsIDgzLCAKLSAgICAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgCi0gICAgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIDgwLCAKLSAgICA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgCi0gICAgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCA3OCwgMTI4LCA3OSwgNzksIDkwLCAKLSAgICA2OSwgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIAotICAgIDg1LCAxMjgsIDc5LCA3OSwgNzIsIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgCi0gICAgNzYsIDczLCAxMjgsIDc5LCA3OCwgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgCi0gICAgNzgsIDc1LCA2NSwgODIsIDEyOCwgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCAKLSAgICA2NSwgMjE3LCA3OSwgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIAotICAgIDczLCA3OCwgMTk3LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgCi0gICAgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCAKLSAgICA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIAotICAgIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgCi0gICAgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCAKLSAgICA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIAotICAgIDc2LCAxMjgsIDc5LCA3MywgMjA0LCA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCAKLSAgICA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgCi0gICAgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCAKLSAgICA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCAKLSAgICA3OSwgNjksIDY5LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCAKLSAgICA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIAotICAgIDY5LCAyMTIsIDc5LCA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgCi0gICAgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCAKLSAgICA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIAotICAgIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgCi0gICAgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCAKLSAgICA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIAotICAgIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIAotICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgCi0gICAgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAKLSAgICAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgCi0gICAgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCAKLSAgICA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgCi0gICAgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCAKLSAgICA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIAotICAgIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIAotICAgIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgCi0gICAgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCAKLSAgICA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgCi0gICAgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgCi0gICAgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCAKLSAgICA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIAotICAgIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgCi0gICAgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIAotICAgIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgCi0gICAgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgCi0gICAgODUsIDEyOCwgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCAKLSAgICA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIAotICAgIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIAotICAgIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgCi0gICAgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCAKLSAgICA3MywgNzgsIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgCi0gICAgMjEyLCA3OCwgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgCi0gICAgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCAKLSAgICA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIAotICAgIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCAKLSAgICA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIAotICAgIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIAotICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIAotICAgIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgCi0gICAgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCAKLSAgICA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIAotICAgIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgCi0gICAgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgCi0gICAgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCAKLSAgICA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIAotICAgIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCi0gICAgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAKLSAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIAotICAgIDg2LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIAotICAgIDc4LCA4NCwgMjEzLCA3OCwgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgCi0gICAgNzgsIDg0LCA3OSwgNzEsIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCAKLSAgICA2NSwgODUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAKLSAgICAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIAotICAgIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgCi0gICAgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDgzLCAKLSAgICA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgCi0gICAgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCAKLSAgICA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCAKLSAgICA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIAotICAgIDg1LCA2NSwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIAotICAgIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgCi0gICAgMjExLCA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgCi0gICAgNjUsIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgCi0gICAgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCAKLSAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIAotICAgIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgCi0gICAgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCAKLSAgICA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIAotICAgIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgCi0gICAgMjEyLCA3OCwgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgzLCAxOTcsIDc4LCA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCAKLSAgICA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA2NSwgODMsIAotICAgIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgCi0gICAgODIsIDY4LCA3MywgMTk1LCA3OCwgNzksIDIxMCwgNzgsIDc5LCA4MCwgMTI4LCA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgCi0gICAgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCA3MCwgNzksIDgyLCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCAKLSAgICA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgCi0gICAgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIAotICAgIDEyOCwgNzgsIDc5LCA2NSwgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgCi0gICAgMTI4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgODUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIAotICAgIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgCi0gICAgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgCi0gICAgNzgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDczLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIAotICAgIDc4LCA3MSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIAotICAgIDc4LCA3NiwgNjUsIDg1LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNzgsIDc2LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAotICAgIDUyLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIAotICAgIDc2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc4LCA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIAotICAgIDY4LCA3MywgMTI4LCA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgCi0gICAgNzQsIDg5LCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCAKLSAgICA4OSwgODIsIDEyOCwgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIAotICAgIDc4LCA3NCwgODUsIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgCi0gICAgNzQsIDg1LCA2OSwgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCAKLSAgICA3OSwgODgsIDEyOCwgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIAotICAgIDEyOCwgNzgsIDc0LCA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIAotICAgIDczLCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgMTI4LCA3OCwgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIAotICAgIDc0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAKLSAgICA3NiwgNzMsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIAotICAgIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgCi0gICAgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCAKLSAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIAotICAgIDczLCAyMDUsIDc4LCA3MywgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgCi0gICAgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCAKLSAgICA3MywgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgCi0gICAgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKLSAgICA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg4LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgCi0gICAgODUsIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIAotICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCAKLSAgICA2NywgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCAKLSAgICA3OCwgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCAKLSAgICA3OCwgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgCi0gICAgMTI4LCA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgCi0gICAgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKLSAgICA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKLSAgICA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIAotICAgIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCAKLSAgICA3MSwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA2NSwgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIAotICAgIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgCi0gICAgNjUsIDczLCAxMjgsIDc4LCA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgCi0gICAgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIAotICAgIDE5NywgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDIxNSwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgNzYsIDEyOCwgNzgsIAotICAgIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDg3LCA3OSwgCi0gICAgODIsIDc1LCA2OSwgMTk2LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgCi0gICAgNzgsIDY5LCA4MiwgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCAKLSAgICA2OSwgMTI4LCA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCAKLSAgICA2OSwgMTI4LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCAKLSAgICA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDEyOCwgCi0gICAgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCAKLSAgICA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIAotICAgIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgCi0gICAgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCAKLSAgICA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCAKLSAgICA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIAotICAgIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgCi0gICAgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCAKLSAgICA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCAKLSAgICA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAKLSAgICAxMjgsIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCAKLSAgICA3OCwgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIAotICAgIDc4LCA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgCi0gICAgNzksIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgCi0gICAgNzgsIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCAKLSAgICA3OCwgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIAotICAgIDEyOCwgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgCi0gICAgODUsIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIAotICAgIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgCi0gICAgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MywgNjUsIDIwNCwgNzgsIAotICAgIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIAotICAgIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCAKLSAgICA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCAKLSAgICA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCAKLSAgICA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIAotICAgIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIAotICAgIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgNjYsIDY1LCA4NCwgCi0gICAgNjUsIDY5LCA2NSwgMjA2LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCAKLSAgICA3NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIAotICAgIDc4LCA2NSwgNTIsIDEyOCwgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIAotICAgIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgCi0gICAgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgCi0gICAgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIAotICAgIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCAKLSAgICA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIAotICAgIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCAKLSAgICA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCAKLSAgICA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAKLSAgICAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIAotICAgIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgCi0gICAgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgODUsIDg1LCAxMjgsIDc3LCAKLSAgICA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIAotICAgIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgCi0gICAgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgzLCAxMjgsIDc3LCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIAotICAgIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgCi0gICAgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgCi0gICAgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCAKLSAgICA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc4LCAxMjgsIDc3LCA4NSwgNzYsIAotICAgIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgCi0gICAgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIAotICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDY5LCAxMjgsIDc3LCA4NSwgCi0gICAgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCAKLSAgICA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc2LCA4NCwgNjUsIAotICAgIDc4LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgCi0gICAgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCAKLSAgICA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgODMsIDEyOCwgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIAotICAgIDgyLCAyMDcsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIAotICAgIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDIxMSwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgCi0gICAgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAotICAgIDcyLCA3MywgNzgsIDcxLCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDcwLCA3NiwgNzksIDc5LCAKLSAgICA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNjgsIDczLCA2NSwgCi0gICAgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc3LCA3OSwgODYsIDY5LCAKLSAgICA3NywgNjksIDc4LCAyMTIsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCA3OSwgODYsIDY5LCAxMjgsIDc3LCA3OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgCi0gICAgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCAKLSAgICA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIAotICAgIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDc5LCA4MiwgODcsIDY1LCA4OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgCi0gICAgODIsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgMjEwLCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAKLSAgICAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MywgODEsIDg1LCA2OSwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIAotICAgIDg1LCA3NywgMTI4LCA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgCi0gICAgNzEsIDczLCA2NywgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIAotICAgIDIwNiwgNzcsIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgNjgsIDEyOCwgNzcsIDc5LCA3OSwgMTk2LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAKLSAgICA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIAotICAgIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgCi0gICAgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCi0gICAgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCAKLSAgICA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgCi0gICAgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCAKLSAgICA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDg5LCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIAotICAgIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIAotICAgIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDgyLCA0NSwgNTcsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTYsIDEyOCwgNzcsIDc5LCAKLSAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTUsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgCi0gICAgNTQsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCAKLSAgICA3MywgNjksIDgyLCA0NSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTEsIDEyOCwgNzcsIAotICAgIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDUxLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCAxMjgsIDc3LCA3OSwgNjgsIDIwMSwgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIAotICAgIDc5LCA2OCwgNjksIDc3LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAKLSAgICAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAKLSAgICAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCAKLSAgICA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAKLSAgICAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCAKLSAgICA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIAotICAgIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgCi0gICAgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIAotICAgIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAKLSAgICAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIAotICAgIDgzLCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgCi0gICAgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAKLSAgICA3MywgODQsIDY1LCA4MiwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIAotICAgIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgCi0gICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIAotICAgIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCAKLSAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgCi0gICAgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzcsIDczLCA2OCwgNDUsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCA4MiwgCi0gICAgNzksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCAKLSAgICA3NywgNzMsIDY3LCA4MiwgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgMTI4LCAKLSAgICA3NywgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgCi0gICAgNzEsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCAKLSAgICA2OSwgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCAKLSAgICA3NywgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgCi0gICAgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCAKLSAgICA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIAotICAgIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIAotICAgIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCAKLSAgICA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIAotICAgIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIAotICAgIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCAKLSAgICA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIAotICAgIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgCi0gICAgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCAKLSAgICA3NywgNjksIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAxOTcsIDc3LCA2OSwgODMsIAotICAgIDc5LCAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgCi0gICAgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgODIsIDczLCA2OCwgNzMsIDY1LCA3OCwgODMsIAotICAgIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgCi0gICAgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIDY5LCA3OCwgNzksIDgyLCA2NSwgMjAwLCAKLSAgICA3NywgNjksIDc4LCA3OSwgNjksIDEyOCwgNzcsIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc3LCA2OSwgCi0gICAgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIDQ1LCA4MSwgNzksIDgwLCAKLSAgICA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgNjgsIDczLCAxOTUsIDc3LCAKLSAgICA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDg0LCA3OSwgNzgsIAotICAgIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIDcxLCA2NSwgNzYsIDczLCAKLSAgICAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCA2OSwgMjAxLCA3NywgNjksIAotICAgIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgCi0gICAgMjAyLCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCAKLSAgICA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzcsIDY5LCA2OCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgNzcsIAotICAgIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCA2NSwgCi0gICAgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgCi0gICAgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgODUsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgCi0gICAgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCAKLSAgICA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIAotICAgIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgCi0gICAgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCAKLSAgICA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIAotICAgIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgCi0gICAgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIAotICAgIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCAKLSAgICA2NSwgODksIDY5LCAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIAotICAgIDY1LCA4OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgCi0gICAgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCAKLSAgICA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIAotICAgIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCAKLSAgICA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIAotICAgIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg3LCA2NSwgODIsIDIwMSwgNzcsIDY1LCA4MiwgCi0gICAgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCAKLSAgICA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIAotICAgIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIAotICAgIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIAotICAgIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCA4MywgCi0gICAgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAorICAgIDg3LCA3NiwgMTI4LCA3OSwgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgCisgICAgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAKKyAgICAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIAorICAgIDgwLCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgCisgICAgMTI4LCA3OSwgODYsIDY1LCA3NiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAKKyAgICAxOTYsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIAorICAgIDY2LCA3OSwgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgCisgICAgNzgsIDY3LCAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgCisgICAgNzksIDg0LCA3MiwgNjksIDgyLCAyMTEsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIAorICAgIDIwNiwgNzksIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgCisgICAgMTI4LCA3OSwgODMsIDY1LCA3MSwgMTk3LCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCAKKyAgICA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDgzLCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgCisgICAgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgNzksIDgyLCA3MywgODksIDE5MywgNzksIDgyLCAKKyAgICA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCA3OSwgODIsIDY3LCA3MiwgCisgICAgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIDIwNiwgNzksIDgwLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIAorICAgIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA3OCwgMTk5LCA3OSwgCisgICAgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIDEyOCwgNzksIDgwLCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc5LCA4MCwgNjksIAorICAgIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA0NSwgCisgICAgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCAKKyAgICA3OCwgNDUsIDc5LCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgMjA3LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIAorICAgIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCAKKyAgICA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDc4LCAxMjgsIDc5LCA3OSwgOTAsIDY5LCAxMjgsIDc5LCA3OSwgODksIAorICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgODUsIDEyOCwgNzksIDc5LCA3MiwgCisgICAgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDc4LCAKKyAgICA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCA4MiwgMTI4LCAKKyAgICA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIDc5LCA3OCwgNjksIAorICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDc5LCA3OCwgCisgICAgNjksIDQ1LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgNDUsIDY1LCA3OCwgNjgsIDQ1LCA4MywgNzMsIDg4LCA4NCwgCisgICAgNzMsIDY5LCA4NCwgNzIsIDEyOCwgNzksIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIAorICAgIDEyOCwgNzksIDc4LCA0NSwgNzksIDcwLCAxOTgsIDc5LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgCisgICAgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAKKyAgICAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIAorICAgIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIAorICAgIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgCisgICAgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCA3OSwgNzMsIDIwNCwgCisgICAgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAKKyAgICA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgCisgICAgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgNzksIDY5LCA2OSwgMTI4LCA3OSwgCisgICAgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDY4LCAxMjgsIDc5LCA2OCwgMTk2LCA3OSwgNjcsIDg0LCA3OSwgODAsIDg1LCAKKyAgICA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIDg0LCA2OSwgMjEyLCA3OSwgNjcsIAorICAgIDg0LCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDY3LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzksIDY3LCAKKyAgICAyMTAsIDc5LCA2NywgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIAorICAgIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgCisgICAgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCAKKyAgICA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCAKKyAgICA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIAorICAgIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgCisgICAgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIAorICAgIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCAKKyAgICA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgCisgICAgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgCisgICAgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAKKyAgICAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIAorICAgIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgCisgICAgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAKKyAgICAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAKKyAgICAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIAorICAgIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgCisgICAgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgCisgICAgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCAKKyAgICA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIAorICAgIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgCisgICAgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgCisgICAgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgCisgICAgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCAKKyAgICA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIAorICAgIDc5LCAxMjgsIDc4LCA4OSwgODUsIDc4LCAxMjgsIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIAorICAgIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgCisgICAgNzksIDEyOCwgNzgsIDg5LCA3OSwgNzgsIDEyOCwgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgCisgICAgODksIDc0LCA2NSwgMTI4LCA3OCwgODksIDczLCA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAKKyAgICAyMTIsIDc4LCA4OSwgNzMsIDIxMSwgNzgsIDg5LCA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCAKKyAgICA3OCwgNDUsIDY4LCA3OSwgMTI4LCA3OCwgODksIDczLCA3OCwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgCisgICAgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgCisgICAgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIDc4LCA4OSwgNjksIDc4LCAxMjgsIDc4LCA4OSwgNjksIDcyLCAKKyAgICAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgCisgICAgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCAKKyAgICA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIAorICAgIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIAorICAgIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIAorICAgIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgCisgICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgCisgICAgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAKKyAgICAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIAorICAgIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgCisgICAgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgCisgICAgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIAorICAgIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgCisgICAgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA3OCwgODQsIDg4LCA3MywgODYsIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIAorICAgIDEyOCwgNzgsIDg0LCA4NSwgNzQsIDEyOCwgNzgsIDg0LCAyMTMsIDc4LCA4NCwgODMsIDY1LCA4NSwgMTI4LCA3OCwgODQsIAorICAgIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDc5LCA3MSwgMTI4LCA3OCwgODQsIDc5LCAxOTksIDc4LCA4NCwgCisgICAgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNzIsIDY1LCA4NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgNjUsIAorICAgIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCA4NSwgCisgICAgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIDEyOCwgCisgICAgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgNzMsIDY5LCAKKyAgICA2OSwgMTI4LCA3OCwgODMsIDcyLCA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCA3MiwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgODMsIDcyLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAxMjgsIDc4LCAKKyAgICA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIDEyOCwgNzgsIAorICAgIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAxMjgsIDc4LCAKKyAgICA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgODUsIDY1LCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDgyLCA3OSwgODAsIDEyOCwgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgODIsIDY5LCAyMTEsIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIAorICAgIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCA2NSwgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgCisgICAgMTI4LCA3OCwgODEsIDczLCA3MSwgMTI4LCA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgODgsIDEyOCwgNzgsIDc5LCA4NywgCisgICAgNjcsIDEyOCwgNzgsIDc5LCA4NiwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCAKKyAgICA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIAorICAgIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgCisgICAgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCAKKyAgICA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAyMTIsIDc4LCA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODMsIDE5NywgNzgsIAorICAgIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDc4LCA3OSwgCisgICAgODIsIDg0LCA3MiwgNjksIDY1LCA4MywgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3OCwgNzksIAorICAgIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCA4MiwgNjgsIDczLCAxOTUsIDc4LCA3OSwgMjEwLCA3OCwgNzksIDgwLCAxMjgsIAorICAgIDc4LCA3OSwgNzksIDc4LCA4NSwgMTI4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OSwgNzgsIDcwLCA3OSwgODIsIDc1LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCAKKyAgICA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgCisgICAgMTk5LCA3OCwgNzksIDc4LCAxMjgsIDc4LCA3OSwgNzcsIDczLCA4MywgNzcsIDE5MywgNzgsIDc5LCA3NywgNzMsIDc4LCAKKyAgICA2NSwgMjA0LCA3OCwgNzksIDc1LCA3MiwgODUsIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAxMjgsIDc4LCA3OSwgNjUsIAorICAgIDEyOCwgNzgsIDc5LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA4NSwgCisgICAgMTI4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgCisgICAgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDczLCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIDc4LCA3OCwgNzIsIDY1LCAKKyAgICAxMjgsIDc4LCA3OCwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3MywgNzMsIAorICAgIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDY1LCAxMjgsIAorICAgIDc4LCA3OCwgNzEsIDEyOCwgNzgsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCA3OCwgNzYsIDY1LCA4NSwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgCisgICAgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCAKKyAgICA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgCisgICAgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgCisgICAgNzgsIDc1LCA2NSwgODUsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4OSwgODgsIAorICAgIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODksIDgyLCAxMjgsIAorICAgIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCA3OCwgNzQsIDg1LCAKKyAgICA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIDc0LCA4NSwgNjksIAorICAgIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgNzksIDg4LCAxMjgsIAorICAgIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAxMjgsIDc4LCA3NCwgCisgICAgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCA3MywgODAsIDEyOCwgCisgICAgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDEyOCwgNzgsIAorICAgIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDc0LCA2OSwgCisgICAgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAKKyAgICA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIDY5LCAxMjgsIDc4LCAKKyAgICA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgNzYsIDczLCAxMjgsIAorICAgIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAxMjgsIDc4LCA3MywgCisgICAgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIDcxLCA4NSwgMTI4LCAKKyAgICA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDg5LCAxMjgsIAorICAgIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzgsIDczLCA3OCwgCisgICAgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc4LCAKKyAgICA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDE3OCwgNzgsIAorICAgIDczLCA3OCwgNTcsIDEyOCwgNzgsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDc3LCAxMjgsIDc4LCA3MywgMjA1LCA3OCwgNzMsIAorICAgIDc1LCA3OSwgNzYsIDgzLCA2NiwgODUsIDgyLCAxOTksIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgCisgICAgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDcyLCA4MywgNzIsIDg2LCAKKyAgICA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3MSwgNzMsIAorICAgIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDIxMiwgCisgICAgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIAorICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgCisgICAgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCA2OSwgODUsIAorICAgIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc4LCA3MywgCisgICAgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgMTI4LCA3OCwgCisgICAgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgNjUsIDEyOCwgCisgICAgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIDc4LCA3MSwgODUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNzksIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAxMjgsIDc4LCA3MSwgNzksIDIxMywgCisgICAgNzgsIDcxLCA3OSwgODQsIDEyOCwgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3OSwgODAsIDEyOCwgNzgsIDcxLCAKKyAgICA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDcyLCAxMjgsIDc4LCA3MSwgNzksIAorICAgIDY5LCAyMDAsIDc4LCA3MSwgMjA3LCA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDg3LCA2NSwgCisgICAgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzgsIDEyOCwgNzgsIDcxLCAKKyAgICA3NSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIAorICAgIDg1LCAxOTcsIDc4LCA3MSwgNzUsIDczLCA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgNzEsIDc1LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgNjUsIDc3LCA3MywgMTI4LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA3MywgNjksIDgwLCAxMjgsIDc4LCAKKyAgICA3MSwgNzMsIDY5LCAxMjgsIDc4LCA3MSwgNzIsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg3LCA2NSwgNjksIDc4LCAxMjgsIAorICAgIDc4LCA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCisgICAgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc4LCAxMjgsIDc4LCAKKyAgICA3MSwgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIDE5NywgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgCisgICAgMjA2LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIDc5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIAorICAgIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MSwgCisgICAgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNjksIDY1LCAKKyAgICA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCA2NSwgODAsIDEyOCwgNzgsIAorICAgIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDY1LCA3MywgMTI4LCA3OCwgCisgICAgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIDc4LCA3MCwgMTI4LCA3OCwgCisgICAgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgODAsIDY5LCA4MiwgMTI4LCAKKyAgICA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAxOTcsIDc4LCA2OSwgODcsIAorICAgIDEyOCwgNzgsIDY5LCAyMTUsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDc2LCAxMjgsIDc4LCA2OSwgODUsIDg0LCA4MiwgCisgICAgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCA4NywgNzksIDgyLCA3NSwgNjksIAorICAgIDE5NiwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIDc4LCA2OSwgODIsIAorICAgIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIDEyOCwgCisgICAgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA3OSwgNjksIDEyOCwgCisgICAgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgNzgsIDY5LCAKKyAgICA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCAxMjgsIDc4LCA2OSwgCisgICAgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDg1LCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCA4NSwgODAsIAorICAgIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCA2OCwgNzksIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIDc4LCAxMjgsIAorICAgIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgODgsIDEyOCwgCisgICAgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgNzgsIDY4LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCA3OCwgNjgsIAorICAgIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA2OCwgCisgICAgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgNzgsIDY4LCAKKyAgICA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIAorICAgIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIDY1LCAKKyAgICAxOTMsIDc4LCA2NywgNzIsIDY1LCA4NSwgMTI4LCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCAKKyAgICA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIAorICAgIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgCisgICAgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAKKyAgICAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCAKKyAgICA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIAorICAgIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAxMjgsIAorICAgIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIDg1LCAKKyAgICA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDgzLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjUsIDg1LCA2OCwgNzMsIAorICAgIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgCisgICAgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCAKKyAgICA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA3OCwgNjUsIDgzLCA2NSwgMjA0LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgCisgICAgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIAorICAgIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIAorICAgIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIAorICAgIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgCisgICAgNjUsIDEyOCwgNzgsIDY1LCA2NiwgNjUsIDg0LCA2NSwgNjksIDY1LCAyMDYsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCAKKyAgICA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNjUsIDE5MywgNzgsIDY1LCA1MiwgMTI4LCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgNDUsIAorICAgIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3OCwgCisgICAgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCA0OSwgCisgICAgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgNTAsIAorICAgIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIAorICAgIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIDQ5LCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNDgsIAorICAgIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgCisgICAgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIDg0LCAKKyAgICAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgMTI4LCAKKyAgICA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIDEyOCwgCisgICAgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIDY5LCAKKyAgICAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCA4NiwgCisgICAgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCAKKyAgICA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIAorICAgIDc3LCA4NSwgODUsIDEyOCwgNzcsIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgCisgICAgNzMsIDE5NSwgNzcsIDg1LCA4MywgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCAKKyAgICA3NywgODUsIDgzLCA3MiwgMTc5LCA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODMsIAorICAgIDEyOCwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NywgODUsIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgCisgICAgODUsIDgxLCA2OCwgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCAKKyAgICA3OSwgODQsIDEyOCwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIAorICAgIDc5LCAxMjgsIDc3LCA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAKKyAgICAyMTIsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIAorICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCAKKyAgICA3NiwgNjksIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIAorICAgIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAKKyAgICAyMDEsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgCisgICAgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgCisgICAgMTk5LCA3NywgODUsIDY5LCA3OCwgMTI4LCA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgCisgICAgNjcsIDIwMCwgNzcsIDg1LCA2NywgNjUsIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA4MywgMTI4LCA3NywgODUsIDY1LCAKKyAgICA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIAorICAgIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgODIsIDIwNywgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIAorICAgIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMjExLCA3NywgNzksIAorICAgIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCAKKyAgICA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgCisgICAgNzgsIDg0LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDEyOCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIAorICAgIDc5LCA4NiwgNjksIDEyOCwgNzcsIDc5LCA4NSwgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgCisgICAgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCAKKyAgICA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgCisgICAgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzksIDgyLCAKKyAgICA4NywgNjUsIDg5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCA4MiwgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDc3LCA3OSwgODQsIAorICAgIDc5LCAyMTAsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc3LCA3OSwgCisgICAgODQsIDEyOCwgNzcsIDc5LCA4MywgODEsIDg1LCA2OSwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIDg1LCA3NywgMTI4LCAKKyAgICA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCisgICAgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIDIwNiwgNzcsIAorICAgIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDc5LCA3OSwgCisgICAgNjgsIDEyOCwgNzcsIDc5LCA3OSwgMTk2LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgODMsIAorICAgIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCA3OSwgCisgICAgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgNzksIAorICAgIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA3NywgCisgICAgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIDc4LCAKKyAgICA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIAorICAgIDEyOCwgNzcsIDc5LCA3OCwgNjksIDg5LCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIDc5LCA3OCwgNjksIDIxNywgCisgICAgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIDc3LCAKKyAgICA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTcsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTYsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNTUsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTQsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgCisgICAgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTEsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCAKKyAgICA3MywgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDU0LCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUxLCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgMTI4LCA3NywgNzksIDY4LCAyMDEsIDc3LCA3OSwgNjgsIDY5LCA4MywgCisgICAgODQsIDg5LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA4MiwgMjA2LCA3NywgNzksIDY4LCA2OSwgNzcsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIAorICAgIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIAorICAgIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIAorICAgIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIAorICAgIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAKKyAgICAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCAKKyAgICA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIAorICAgIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgCisgICAgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCAKKyAgICA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIAorICAgIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgCisgICAgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAKKyAgICAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIDc1LCAxMjgsIDc3LCA3MywgNzYsIDczLCA4NCwgNjUsIAorICAgIDgyLCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDczLCA3NSwgCisgICAgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCA3NywgNzMsIDczLCAKKyAgICA3NywgMTI4LCA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCAKKyAgICA3NywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIAorICAgIDgwLCAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgCisgICAgMTk3LCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCAKKyAgICA2OSwgMTI4LCA3NywgNzMsIDY4LCA0NSwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIAorICAgIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKKyAgICAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgMTI4LCA3NywgNzIsIDY1LCAKKyAgICAxMjgsIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIAorICAgIDc3LCA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgCisgICAgNzksIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgCisgICAgNzEsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAKKyAgICAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIAorICAgIDY2LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDY5LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNjUsIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgCisgICAgMTI4LCA3NywgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgCisgICAgMTI4LCA3NywgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgCisgICAgODksIDY1LCA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCAKKyAgICA3MCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIAorICAgIDc3LCA2OSwgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgCisgICAgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIAorICAgIDY5LCA4NCwgODIsIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgCisgICAgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgCisgICAgNzMsIDY1LCAyMDYsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIAorICAgIDE5NywgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIAorICAgIDY5LCA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgCisgICAgNjUsIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCAKKyAgICA4MiwgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA3OSwgODIsIAorICAgIDY1LCAyMDAsIDc3LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIAorICAgIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgCisgICAgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCAKKyAgICA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIAorICAgIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA2OSwgCisgICAgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDY5LCAKKyAgICAyMDEsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDY5LCAyMDIsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgNjgsIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY4LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCAKKyAgICA2NSwgMjEyLCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgCisgICAgMjEzLCA3NywgNjcsIDcyLCA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA4NSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgCisgICAgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAKKyAgICA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCAKKyAgICA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCA4NSwgODIsIDczLCAKKyAgICAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgMTI4LCA3NywgCisgICAgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY2LCAKKyAgICA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIAorICAgIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAxMjgsIDc3LCAKKyAgICA2NiwgNTAsIDEyOCwgNzcsIDY1LCA4OSwgNjksIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIAorICAgIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDg4LCAxMjgsIDc3LCA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgCisgICAgNzcsIDY1LCA4NCwgODIsIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCAKKyAgICA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIAorICAgIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgCisgICAgNzcsIDY1LCA4MywgNzIsIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCAKKyAgICA2NywgODUsIDc2LCA3MywgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODcsIDY1LCA4MiwgCisgICAgMjAxLCA3NywgNjUsIDgyLCA4NSwgNzUsIDg1LCAxMjgsIDc3LCA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCAKKyAgICA2NSwgODIsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIAorICAgIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDIxMSwgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCAKKyAgICA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIAorICAgIDY3LCA3MiwgNjksIDIwNiwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgCisgICAgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgCisgICAgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgCisgICAgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCAKKyAgICA4MywgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAogICAgIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDczLCA2NywgNzIsIDY1LCA2OSwgNjUsIDIwNiwgCiAgICAgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDc2LCA3MywgNzgsIAogICAgIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIDIxMywgNzcsIDY1LCA3OCwgCkBAIC0yMzIyLDE0MjAgKzIzNDUsMTQyNiBAQAogICAgIDQ4LCA0OCwgMTc4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc3LCA0OCwgCiAgICAgNDgsIDQ5LCAxMjgsIDc3LCA0OCwgNDgsIDE3NywgNzYsIDIxOCwgNzYsIDg5LCA4OSwgMTI4LCA3NiwgODksIDg4LCAxMjgsIAogICAgIDc2LCA4OSwgODQsIDEyOCwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzYsIDg5LCA4MiwgMTI4LCA3NiwgODksIDgwLCAxMjgsIAotICAgIDc2LCA4OSwgNzMsIDg0LCAxMjgsIDc2LCA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgODksIDY3LCA3MywgNjUsIDIwNiwgCi0gICAgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgNzYsIDg3LCA3MywgNzMsIDEyOCwgCi0gICAgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAxMjgsIDc2LCA4NywgNjUsIDEyOCwgCi0gICAgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIAotICAgIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIAotICAgIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCA4NSwgMjAwLCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgCi0gICAgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgCi0gICAgODUsIDE5NywgNzYsIDg1LCA2NiwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDg1LCA1MSwgMTI4LCA3NiwgCi0gICAgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgNzcsIDEyOCwgNzYsIDgyLCA3MywgCi0gICAgMTI4LCA3NiwgODIsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCAKLSAgICA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIAotICAgIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDc2LCA3OSwgCi0gICAgODcsIDQ1LCA3NywgNzMsIDE5NiwgNzYsIDc5LCA4NywgNDUsIDcwLCA2NSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgNzYsIDc5LCAKLSAgICA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA4NSwgNjgsIAotICAgIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgMjE3LCA3NiwgNzksIDg0LCA4NSwgCi0gICAgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIDc5LCA4MiwgODIsIDY1LCAKLSAgICA3MywgNzgsIDY5LCAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA4NCwgMTI4LCAKLSAgICA3NiwgNzksIDc5LCA4MCwgNjksIDE5NiwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgMjA4LCA3NiwgNzksIAotICAgIDc5LCA3OCwgMTI4LCA3NiwgNzksIDc5LCAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgCi0gICAgMTI4LCA3NiwgNzksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODksIDgyLCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgCi0gICAgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIAotICAgIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCAKLSAgICA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgCi0gICAgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCAKLSAgICA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIDc3LCAxMjgsIDc2LCA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIAotICAgIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgNzYsIDEyOCwgNzYsIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgCi0gICAgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCAKLSAgICA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgNzYsIDc5LCA2NywgNzUsIDczLCA3OCwgNzEsIDQ1LCA4MywgNzIsIDczLCA3MCwgMjEyLCA3NiwgNzksIDY3LCAKLSAgICAyMDMsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3NiwgNzksIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NiwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNzksIDc5LCAKLSAgICAxMjgsIDc2LCA3NiwgNzYsIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDczLCA3MywgMTI4LCA3NiwgNzYsIDc2LCA3MywgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCA2OSwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDg1LCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDY1LCA3MywgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgNzMsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCAKLSAgICA3NCwgMTI4LCA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCAKLSAgICA3MywgODQsIDg0LCA3NiwgNjksIDEyOCwgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgCi0gICAgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAyMDAsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MywgCi0gICAgMTI4LCA3NiwgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgCi0gICAgODAsIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDgwLCAyMTEsIDc2LCA3MywgMjA4LCA3NiwgNzMsIDc4LCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzgsIDc1LCA2OSwgMTk2LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIAotICAgIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgCi0gICAgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAKLSAgICAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIAotICAgIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgCi0gICAgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCAKLSAgICA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIAotICAgIDc3LCA2NiwgMjExLCA3NiwgNzMsIDc3LCAxOTQsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgCi0gICAgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgCi0gICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDczLCAKLSAgICA3MCwgODQsIDY5LCA4MiwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3NiwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIDY5LCAxMjgsIAotICAgIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDY2LCA4MiwgNjUsIDEyOCwgCi0gICAgNzYsIDczLCA2NiwgNjksIDgyLCA4NCwgODksIDEyOCwgNzYsIDczLCA2NSwgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDc2LCAKLSAgICA3MiwgNzMsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzYsIDcyLCA2NSwgCi0gICAgMTk5LCA3NiwgNzIsIDY1LCA2NSwgMTI4LCA3NiwgNzIsIDEyOCwgNzYsIDY5LCA5MCwgNzIsIDEyOCwgNzYsIDY5LCA4OCwgCi0gICAgMTI4LCA3NiwgNjksIDg2LCA3MywgODQsIDY1LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjksIDg1LCA3NywgMTI4LCAKLSAgICA3NiwgNjksIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgCi0gICAgMTI4LCA3NiwgNjksIDIxMywgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCAKLSAgICA4MiwgMTI4LCA3NiwgNjksIDIxMiwgNzYsIDY5LCA4MywgODMsIDY5LCAyMTAsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIAotICAgIDcyLCA2NSwgNzgsIDEyOCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDc2LCA2OSwgODAsIDY3LCA3MiwgCi0gICAgMTkzLCA3NiwgNjksIDgwLCAxMjgsIDc2LCA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgCi0gICAgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCAKLSAgICA3OCwgNzMsIDIxMSwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDU1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTMsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1MSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTAsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDQ5LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgCi0gICAgNzYsIDY5LCA3OCwgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCAKLSAgICA3NiwgNjksIDc2LCA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIAotICAgIDc3LCA3NywgNjUsIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzMsIDEyOCwgNzYsIDY5LCA3MSwgCi0gICAgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCAKLSAgICA2OSwgNzEsIDEyOCwgNzYsIDY5LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIAotICAgIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCAKLSAgICA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAotICAgIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgCi0gICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIAotICAgIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA3NiwgNjksIDcwLCA4NCwgCi0gICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgMTI4LCA3NiwgNjksIDY5LCA4MiwgNjUsIDY5LCAKLSAgICA4NywgNjUsIDEyOCwgNzYsIDY5LCA2OSwgNzUsIDEyOCwgNzYsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc2LCA2OSwgNjgsIAotICAgIDcxLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgNzAsIDEyOCwgCi0gICAgNzYsIDY5LCA2NSwgMTk4LCA3NiwgNjksIDY1LCA2OCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNjUsIDY4LCA2OSwgODIsIAotICAgIDEyOCwgNzYsIDY5LCA2NSwgMTk2LCA3NiwgNjgsIDY1LCA3OCwgMTI4LCA3NiwgNjgsIDUwLCAxMjgsIDc2LCA2NywgMjAxLCAKLSAgICA3NiwgNjcsIDE5NywgNzYsIDY1LCA5MCwgMjE3LCA3NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDg4LCAxMjgsIDc2LCA2NSwgODcsIDEyOCwgNzYsIDY1LCAyMTUsIDc2LCA2NSwgODUsIDc2LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDg1LCA3NSwgNjUsIDIxOCwgNzYsIDY1LCA4NSwgNzQsIDEyOCwgNzYsIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNzYsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAyMDEsIAotICAgIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgCi0gICAgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgCi0gICAgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAKLSAgICAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIDgwLCAxMjgsIDc2LCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIAotICAgIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCAKLSAgICA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCA1MiwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgCi0gICAgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OCwgNTYsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTMsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAotICAgIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgCi0gICAgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgMTg1LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCAKLSAgICA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1MywgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU3LCAKLSAgICA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCAxNzcsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIDE4NSwgNzYsIDY1LCA3NSwgCi0gICAgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNTMsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIAotICAgIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIAotICAgIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIDcxLCA2NSwgCi0gICAgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAKLSAgICAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgNzYsIDY1LCA2NiwgNjUsIAotICAgIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgCi0gICAgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA1NCwgMTI4LCA3NiwgCi0gICAgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCA0OCwgCi0gICAgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCAKLSAgICA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgODksIAotICAgIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCA2NSwgCi0gICAgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIDc1LCA4OCwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgNzMsIAotICAgIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgODgsIAotICAgIDY1LCAxMjgsIDc1LCA4NywgODYsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCA3NSwgODcsIDc5LCA3OSwgCi0gICAgMTI4LCA3NSwgODcsIDc5LCAxMjgsIDc1LCA4NywgNzcsIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjYsIDEyOCwgNzUsIDg3LCA2NSwgCi0gICAgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgCi0gICAgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NiwgMTI4LCA3NSwgODUsIDg1LCA3MiwgMTI4LCA3NSwgCi0gICAgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDc1LCAKLSAgICA4NSwgODMsIDcyLCA4NSwgMTc4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIAotICAgIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIDc1LCA4NSwgCi0gICAgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIDc1LCA4NSwgCi0gICAgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgNzYsIAotICAgIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNzEsIDEyOCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgNzUsIDg1LCA2NiwgMTI4LCAKLSAgICA3NSwgODUsIDY1LCA4NiwgMTI4LCA3NSwgODUsIDY1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCAxMjgsIDc1LCA4NSwgNTUsIAotICAgIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAKLSAgICAxMjgsIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgNzksIAotICAgIDEyOCwgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCA4MywgODMsIDczLCAxMjgsIAotICAgIDc1LCA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgODUsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCAKLSAgICA3NSwgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIAotICAgIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgCi0gICAgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCAKLSAgICA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIAotICAgIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCA3MiwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCA3OSwgODYsIDEyOCwgCi0gICAgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIDgyLCA3OSwgNzgsIDczLCAKLSAgICA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgMTk1LCA3NSwgNzksIAotICAgIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4MCwgMTI4LCA3NSwgCi0gICAgNzksIDc5LCA4NiwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIDg1LCA4NSwgODQsIAotICAgIDEyOCwgNzUsIDc5LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgCi0gICAgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCA3NSwgNzksIDc3LCAKLSAgICA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIDY2LCAyMTMsIAotICAgIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDY5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIDc5LCAyMDMsIAotICAgIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgNzIsIDc5LCA3NywgCi0gICAgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgCi0gICAgNzksIDY1LCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCAKLSAgICA2OSwgMTI4LCA3NSwgNzgsIDc5LCA2NiwgODMsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIAotICAgIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgCi0gICAgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgCi0gICAgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgCi0gICAgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgCi0gICAgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIAotICAgIDczLCA4NywgMTI4LCA3NSwgNzMsIDg2LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgCi0gICAgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCAKLSAgICA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgCi0gICAgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCAKLSAgICA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCAKLSAgICA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIAotICAgIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzYsIDc2LCA2OSwgCi0gICAgODIsIDEyOCwgNzUsIDczLCA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgCi0gICAgNjksIDg2LCA2NSwgMjA2LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCAKLSAgICA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzMsIDY2LCAKLSAgICAxMjgsIDc1LCA3MywgNjUsIDg2LCAxMjgsIDc1LCA3MywgNjUsIDY2LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCAKLSAgICA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgCi0gICAgMjA2LCA3NSwgNzIsIDg1LCA2OCwgNjUsIDg3LCA2NSwgNjgsIDIwMSwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgMTI4LCAKLSAgICA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIAotICAgIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDc0LCA3NSwgMjAxLCA3NSwgCi0gICAgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIDc3LCAyMTMsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCA3MiwgCi0gICAgNzMsIDc4LCA4OSwgNjUsIDEyOCwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCAKLSAgICA3MiwgMjAxLCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIAotICAgIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCA2OSwgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCA4NiwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCA3MiwgNjUsIDgyLCAKLSAgICAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgNzIsIDY1LCA3OCwgNjgsIAotICAgIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCA3MiwgNjUsIDc1LCA2NSwgCi0gICAgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIDEyOCwgNzUsIDcyLCAKLSAgICA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCAKLSAgICA4OSwgNjcsIDY1LCA4MCwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIAotICAgIDY4LCAxMjgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAxOTYsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NiwgCi0gICAgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MCwgODUsIDgxLCAxMjgsIAotICAgIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2OSwgODUsIDg0LCA3OCwgCi0gICAgNjgsIDY1LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4NCwgNzcsIDY5LCAKLSAgICA4NSwgNzgsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNzMsIDEyOCwgNzUsIDY5LCA4NCwgODQsIDIwMSwgNzUsIAotICAgIDY5LCA4MywgNzIsIDUwLCAxMjgsIDc1LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA3NSwgNjksIDc5LCA4NywgMTI4LCA3NSwgCi0gICAgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgMTkzLCAKLSAgICA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA2OSwgNzgsIDY1LCA4NCwgMTI4LCA3NSwgNjksIDc4LCAxMjgsIAotICAgIDc1LCA2OSwgMjA2LCA3NSwgNjksIDc3LCA4MCwgODUsIDc2LCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA4NSwgMjA0LCA3NSwgCi0gICAgNjksIDc3LCA4MCwgNzYsIDczLCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA3NiwgMjAxLCA3NSwgNjksIDc3LCA4MCwgNzIsIDgyLCAKLSAgICA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzcsIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzYsIDg2LCA3MywgCi0gICAgMjA2LCA3NSwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MiwgNjksIDIwMCwgNzUsIDY5LCA3MiwgMTI4LCA3NSwgCi0gICAgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCAKLSAgICA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDY5LCA2NiwgCi0gICAgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgCi0gICAgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCAKLSAgICA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgNzUsIDY1LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg2LCAxMjgsIAotICAgIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgCi0gICAgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCAKLSAgICA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIAotICAgIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCAKLSAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIAotICAgIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgCi0gICAgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIAotICAgIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIAotICAgIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKLSAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIAotICAgIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgCi0gICAgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgMjA4LCA3NSwgCi0gICAgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCAKLSAgICA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIAotICAgIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgCi0gICAgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgCi0gICAgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgCi0gICAgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgCi0gICAgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAKLSAgICAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAKLSAgICAxMjgsIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIAotICAgIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIAotICAgIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgCi0gICAgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgCi0gICAgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIAotICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgCi0gICAgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCAKLSAgICA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIAotICAgIDg5LCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzQsIDc5LCA4OSwgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgCi0gICAgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgCi0gICAgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCAKLSAgICA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCAKLSAgICA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIAotICAgIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIAotICAgIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCAKLSAgICA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCAKLSAgICA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIAotICAgIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgCi0gICAgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIAotICAgIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCA4OCwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIAotICAgIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgCi0gICAgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgCi0gICAgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIAotICAgIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIAotICAgIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgCi0gICAgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCAKLSAgICA2NSwgODcsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIAotICAgIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgCi0gICAgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIAotICAgIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAyMDYsIDc0LCA2NSwgNzMsIDEyOCwgNzQsIDY1LCA3MiwgCi0gICAgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgODMsIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCAKLSAgICA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIAotICAgIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgCi0gICAgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCAKLSAgICA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIAotICAgIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCA2OSwgNzcsIDEyOCwgCi0gICAgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA4MywgNjcsIDY5LCA3NiwgNjksIDIxMSwgNzMsIDgzLCAKLSAgICA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgODMsIAotICAgIDc2LCA2NSwgNzgsIDY4LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgCi0gICAgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIAotICAgIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgODIsIDY2LCAxMjgsIDczLCA3OSwgCi0gICAgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIAotICAgIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIAotICAgIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgNjgsIDEyOCwgCi0gICAgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA3MywgNzgsIDg0LCAKLSAgICA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIAotICAgIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCAKLSAgICA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAotICAgIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3OSwgNjcsIDc1LCAKLSAgICA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCAKLSAgICAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCA4NSwgNzcsIDY5LCA3OCwgODQsIAotICAgIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNzMsIDY4LCAxOTcsIDczLCA3OCwgCi0gICAgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAxMjgsIDczLCA3OCwgODMsIDY3LCAKLSAgICA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIDIxMiwgNzMsIDc4LCA3OCwgNzksIAotICAgIDY3LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgCi0gICAgNzMsIDc4LCA3OCwgNjksIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDczLCAKLSAgICA3OCwgNzMsIDEyOCwgNzMsIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIDcyLCA2OSwgODIsIDY5LCA3OCwgCi0gICAgMjEyLCA3MywgNzgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDczLCA3OCwgNzEsIDg3LCA2NSwgOTAsIDEyOCwgNzMsIDc4LCAKLSAgICA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIDg1LCA2OSwgNzgsIDY3LCA2OSwgCi0gICAgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIAotICAgIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCA3MywgODIsIDY5LCA2NywgCi0gICAgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCAKLSAgICA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIAotICAgIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCAKLSAgICA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIAotICAgIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgCi0gICAgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCAKLSAgICA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgCi0gICAgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKLSAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIAotICAgIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgCi0gICAgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCAKLSAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgCi0gICAgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCAKLSAgICA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgCi0gICAgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCAKLSAgICA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIAotICAgIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgCi0gICAgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgCi0gICAgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIAotICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKLSAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgCi0gICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCAKLSAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCAKLSAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgCi0gICAgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgCi0gICAgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAKLSAgICAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgCi0gICAgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCAKLSAgICA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIAotICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCAKLSAgICA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIAotICAgIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAKLSAgICAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCAKLSAgICA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgCi0gICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgCi0gICAgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgCi0gICAgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIAotICAgIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgCi0gICAgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCAKLSAgICA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIAotICAgIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAKLSAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCAKLSAgICA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIAotICAgIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgCi0gICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgCi0gICAgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAKLSAgICAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCAKLSAgICA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgNzIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCAKLSAgICA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgMTI4LCA3MiwgODUsIAotICAgIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDgzLCAKLSAgICAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIAotICAgIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgCi0gICAgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCAKLSAgICA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCAKLSAgICA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIAotICAgIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgCi0gICAgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCAKLSAgICA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgCi0gICAgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgCi0gICAgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAKLSAgICAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKLSAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCi0gICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCAKLSAgICA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCAKLSAgICA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIAotICAgIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCAKLSAgICA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA3OSwgMTI4LCA3MiwgNzksIDc2LCA3NiwgNzksIDIxNSwgNzIsIAotICAgIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgCi0gICAgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgNzIsIDc5LCA2NywgNzUsIDY5LCAyMTcsIDcyLCAKLSAgICA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIAotICAgIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA4NSwgNjYsIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgCi0gICAgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIAotICAgIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIAotICAgIDcyLCA3OCwgNjUsIDg1LCAxMjgsIDcyLCA3OCwgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgCi0gICAgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAKLSAgICAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIDcyLCA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCAKLSAgICA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIAotICAgIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCA3MiwgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgCi0gICAgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDc5LCAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgNzIsIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIAotICAgIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAxMjgsIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIAotICAgIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgCi0gICAgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIDgwLCAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgCi0gICAgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCA4NSwgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCA3NiwgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgMTI4LCA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCAKLSAgICA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgNjUsIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg1LCAxMjgsIDcyLCA3NiwgNjUsIAotICAgIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIDEyOCwgNzIsIDc2LCAxMjgsIDcyLCA3NSwgMTI4LCAKLSAgICA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDg5LCA3OSwgMTI4LCA3MiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIAotICAgIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDY4LCAxMjgsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTk2LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDczLCAKLSAgICA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgCi0gICAgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3NiwgNzksIDIxNSwgNzIsIDczLCA3MSwgNzIsIDQ1LCAKLSAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAKLSAgICAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIAotICAgIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCA3MiwgCi0gICAgODUsIDEyOCwgNzIsIDcyLCA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCA3MiwgCi0gICAgNjUsIDY1LCAxMjgsIDcyLCA3MSwgMTI4LCA3MiwgNjksIDg5LCA4NCwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIDc5LCAKLSAgICA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgCisgICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCAKKyAgICA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCAKKyAgICA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCAKKyAgICA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIAorICAgIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgCisgICAgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgCisgICAgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgCisgICAgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCAKKyAgICA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCAKKyAgICA3NiwgODUsIDUxLCAxMjgsIDc2LCA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCAKKyAgICA3NywgMTI4LCA3NiwgODIsIDczLCAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgCisgICAgNjksIDE5NiwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAKKyAgICA2OCwgNDUsIDE4NSwgNzYsIDc5LCA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIAorICAgIDczLCA3OCwgMTk5LCA3NiwgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDg1LCA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAKKyAgICAyMTcsIDc2LCA3OSwgODQsIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODMsIDgzLCA3NiwgNjksIAorICAgIDgzLCA4MywgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIDc5LCA4MiwgODIsIDY1LCA3MywgNzgsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA4NCwgMTI4LCA3NiwgNzksIDc5LCAKKyAgICA4MCwgNjksIDE5NiwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgMjA4LCA3NiwgNzksIDc5LCA3OCwgMTI4LCAKKyAgICA3NiwgNzksIDc5LCAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3NiwgNzksIAorICAgIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCA3NiwgNjksIDcxLCA3MSwgCisgICAgNjksIDE5NiwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODksIDgyLCAxMjgsIDc2LCAKKyAgICA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCA3NiwgNzksIDc4LCA3MSwgCisgICAgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAorICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgCisgICAgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIDc3LCAxMjgsIDc2LCAKKyAgICA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgNzYsIDEyOCwgNzYsIAorICAgIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCA3OSwgNzEsIDgyLCA2NSwgCisgICAgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgNzYsIDc5LCAKKyAgICA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzUsIDczLCA3OCwgNzEsIDQ1LCA4MywgCisgICAgNzIsIDczLCA3MCwgMjEyLCA3NiwgNzksIDY3LCAyMDMsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCAKKyAgICA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgCisgICAgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgCisgICAgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNzksIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgCisgICAgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCAKKyAgICA3NiwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDczLCA3MywgMTI4LCA3NiwgNzYsIDc2LCA3MywgMTI4LCA3NiwgNzYsIDc2LCA2OSwgNjksIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA3MywgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA2NSwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgNzMsIAorICAgIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCA3NCwgMTI4LCA3NiwgNzMsIDkwLCA2NSwgODIsIDY4LCAxMjgsIAorICAgIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgCisgICAgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAyMTAsIDc2LCAKKyAgICA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAxMjgsIDc2LCAKKyAgICA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIAorICAgIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIDc1LCA3MywgCisgICAgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgNzEsIDgzLCAKKyAgICA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCA3OCwgNjksIAorICAgIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIDEyOCwgCisgICAgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgNzcsIDc3LCAKKyAgICA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCA3MywgNzcsIAorICAgIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDczLCA3NywgCisgICAgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgNzcsIDY2LCAKKyAgICAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCA3MiwgMTI4LCAKKyAgICA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDczLCA3MSwgNzIsIAorICAgIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc2LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcwLCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgNjksIDg0LCAxMjgsIDc2LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgNzYsIDczLCA2OCwgMTI4LCAKKyAgICA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgCisgICAgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAKKyAgICAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDczLCAKKyAgICA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIAorICAgIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgCisgICAgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCAKKyAgICA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIAorICAgIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgCisgICAgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCAKKyAgICA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgCisgICAgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIAorICAgIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgCisgICAgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgCisgICAgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIAorICAgIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgCisgICAgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCAKKyAgICA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgCisgICAgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCAKKyAgICA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIAorICAgIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgCisgICAgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAKKyAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgCisgICAgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIAorICAgIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgCisgICAgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCAKKyAgICA3NCwgMTI4LCA3NiwgNjUsIDg1LCA3MSwgNzIsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIAorICAgIDE5NywgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNzYsIDY1LCA4NCwgCisgICAgMTk3LCA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAKKyAgICAyMDEsIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIAorICAgIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgCisgICAgODEsIDEyOCwgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNjUsIDcxLCAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIAorICAgIDgwLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgCisgICAgNzcsIDY5LCAxOTYsIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAKKyAgICAxMjgsIDc2LCA2NSwgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIAorICAgIDcyLCAxMjgsIDc2LCA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgCisgICAgODksIDY1LCA3OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCAKKyAgICA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCAKKyAgICA2NSwgNzUsIDQ1LCA1NCwgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIAorICAgIDU0LCA0OCwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgCisgICAgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDUyLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDUyLCA1MiwgMTg1LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTEsIDUyLCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTAsIDU0LCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCAKKyAgICA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNDgsIDU3LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDgsIDU2LCAxNzcsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIAorICAgIDE4NSwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDQ4LCA1MCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDQ4LCA1MCwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgCisgICAgNjUsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCAKKyAgICA3MiwgODUsIDEyOCwgNzYsIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCAKKyAgICA3NiwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIAorICAgIDc2LCA2NSwgNzEsIDY1LCAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgCisgICAgMjE3LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIAorICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgCisgICAgNzYsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIAorICAgIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDc2LCA1NCwgMTI4LCA3NiwgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIAorICAgIDEyOCwgNzYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgCisgICAgNjUsIDgwLCA2OSwgMTk2LCA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCAKKyAgICA3OSwgMTI4LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIAorICAgIDEyOCwgNzUsIDg5LCA2NSwgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIAorICAgIDc1LCA4OCwgODcsIDczLCAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgCisgICAgODgsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAKKyAgICAxMjgsIDc1LCA4OCwgNzMsIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCAKKyAgICA2NSwgMTI4LCA3NSwgODgsIDY1LCAxMjgsIDc1LCA4NywgODYsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCAKKyAgICA3NSwgODcsIDc5LCA3OSwgMTI4LCA3NSwgODcsIDc5LCAxMjgsIDc1LCA4NywgNzcsIDEyOCwgNzUsIDg3LCA3MywgNzMsIAorICAgIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjYsIAorICAgIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NiwgMTI4LCA3NSwgODUsIAorICAgIDg1LCA3MiwgMTI4LCA3NSwgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgCisgICAgODUsIDUwLCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgMTc4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCAKKyAgICA4NSwgOTAsIDY5LCA3MywgODIsIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDc1LCA4NSwgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzUsIDg1LCA3OSwgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIAorICAgIDc5LCAxMjgsIDc1LCA4NSwgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAKKyAgICAxMjgsIDc1LCA4NSwgNzYsIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNzEsIDEyOCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgCisgICAgNzUsIDg1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCA4NiwgMTI4LCA3NSwgODUsIDY1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCAKKyAgICAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgCisgICAgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgCisgICAgODMsIDgzLCA3OSwgNzksIDEyOCwgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDczLCAxMjgsIDc1LCA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIAorICAgIDgzLCA2NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgCisgICAgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCAKKyAgICA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgCisgICAgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIAorICAgIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIAorICAgIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgCisgICAgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCAKKyAgICA3MiwgMTI4LCA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCAKKyAgICA3OSwgODYsIDEyOCwgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgCisgICAgMTk1LCA3NSwgNzksIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MCwgMTI4LCA3NSwgNzksIDc5LCA4NiwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIAorICAgIDg1LCA4NSwgODQsIDEyOCwgNzUsIDc5LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgCisgICAgNjksIDg2LCA3NywgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCAKKyAgICA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIAorICAgIDY2LCAyMTMsIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDY5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIAorICAgIDc5LCAyMDMsIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgNzIsIAorICAgIDc5LCA3NywgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgCisgICAgMTI4LCA3NSwgNzksIDY1LCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA3NSwgNzgsIDg1LCAKKyAgICA2NywgNzUsIDc2LCA2OSwgMTI4LCA3NSwgNzgsIDc5LCA2NiwgODMsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAKKyAgICAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCAKKyAgICA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCAKKyAgICA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCAKKyAgICA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIAorICAgIDEyOCwgNzUsIDczLCA4NywgNzMsIDcwLCA4MiwgODUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDg3LCAxMjgsIDc1LCA3MywgCisgICAgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAxOTksIDc1LCA3MywgODMsIDgzLCAKKyAgICAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCA3NSwgNzMsIDgzLCA3MywgNzcsIAorICAgIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIDc1LCA3MywgODIsIDc5LCA4NywgCisgICAgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc1LCAKKyAgICA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCAxMjgsIDc1LCA3MywgODIsIAorICAgIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIDc1LCA3MywgMjA4LCA3NSwgNzMsIAorICAgIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgNjUsIDgyLCA4NCwgNjksIDc4LCAKKyAgICAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3NSwgNzMsIAorICAgIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCA2OSwgODYsIDY1LCAyMDYsIAorICAgIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgCisgICAgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIDEyOCwgNzUsIDczLCA2NSwgCisgICAgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIDg3LCA2NSwgNzMsIDEyOCwgCisgICAgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAyMDYsIDc1LCA3MiwgODUsIDY4LCAKKyAgICA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIDc1LCA3MiwgODUsIDY1LCA4NCwgCisgICAgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgNzksIDc4LCAxMjgsIDc1LCA3MiwgCisgICAgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKKyAgICAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCAyMDEsIDc1LCA3MiwgNzIsIAorICAgIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA3NSwgNzIsIDY5LCA3MywgCisgICAgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgNjUsIDg2LCAxMjgsIDc1LCA3MiwgCisgICAgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAKKyAgICAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCAKKyAgICA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIAorICAgIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY2LCAxMjgsIAorICAgIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDgwLCAxMjgsIDc1LCA2OSwgCisgICAgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCAKKyAgICA2NSwgODIsIDE5NiwgNzUsIDY5LCA4OCwgMTI4LCA3NSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc1LCA2OSwgODUsIDgzLCA2OSwgCisgICAgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgwLCA4NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNzksIDIxMiwgNzUsIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY5LCA4NSwgODQsIDc4LCA2OCwgNjUsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIAorICAgIDY1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDg0LCA3NywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNjksIDg1LCA2NSwgCisgICAgNjksIDgyLCA3MywgMTI4LCA3NSwgNjksIDg0LCA4NCwgMjAxLCA3NSwgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzUsIDY5LCAKKyAgICA4MiwgNjksIDg0LCAxMjgsIDc1LCA2OSwgNzksIDg3LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCAxOTMsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDE5MywgCisgICAgNzUsIDY5LCA3OCwgNjUsIDg0LCAxMjgsIDc1LCA2OSwgNzgsIDEyOCwgNzUsIDY5LCAyMDYsIDc1LCA2OSwgNzcsIDgwLCAKKyAgICA4NSwgNzYsIDEyOCwgNzUsIDY5LCA3NywgODAsIDg1LCAyMDQsIDc1LCA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIAorICAgIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgCisgICAgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIAorICAgIDY5LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgCisgICAgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCAKKyAgICA2NSwgNjUsIDY5LCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIAorICAgIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgCisgICAgMTI4LCA3NSwgNjUsIDg3LCA4NiwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg3LCA2NiwgMTI4LCA3NSwgCisgICAgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA4NSwgODYsIDEyOCwgNzUsIDY1LCAKKyAgICA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NSwgNjYsIDEyOCwgNzUsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgCisgICAgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCAKKyAgICA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgCisgICAgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCAKKyAgICA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIAorICAgIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgCisgICAgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCAKKyAgICA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIAorICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCisgICAgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAorICAgIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgCisgICAgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgCisgICAgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAyMDgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCAKKyAgICA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIAorICAgIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgCisgICAgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAKKyAgICAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4NiwgMTI4LCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIDY1LCAKKyAgICA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDY2LCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCAKKyAgICA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCAKKyAgICA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCAKKyAgICA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCAKKyAgICA3NSwgNjUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIAorICAgIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDY1LCAxMjgsIDc1LCA2NSwgNjUsIDY2LCAxMjgsIDc1LCA2NSwgCisgICAgNTAsIDEyOCwgNzUsIDY1LCAxNzgsIDc1LCA0OCwgNDgsIDU2LCAxMjgsIDc1LCA0OCwgNDgsIDU1LCAxMjgsIDc1LCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDc1LCA0OCwgNDgsIDUzLCAxMjgsIDc1LCA0OCwgNDgsIDUyLCAxMjgsIDc1LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc1LCA0OCwgNDgsIDUwLCAxMjgsIDc1LCA0OCwgNDgsIDQ5LCAxMjgsIDc0LCA4NywgNjUsIDEyOCwgNzQsIDg1LCAKKyAgICA4NSwgMTI4LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA4NSwgODMsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAxMjgsIDc0LCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCA4NSwgNzYsIDg5LCAKKyAgICAxMjgsIDc0LCA4NSwgNzEsIDcxLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIAorICAgIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgCisgICAgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgODksIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NCwgNzksIDg5LCAKKyAgICA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCAKKyAgICA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIAorICAgIDg0LCA4MywgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgCisgICAgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgCisgICAgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIAorICAgIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgCisgICAgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgCisgICAgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIAorICAgIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCA3NiwgMTI4LCA3NCwgNzMsIDczLCA3NywgMTI4LCA3NCwgNzMsIAorICAgIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NCwgNzMsIDY1LCAKKyAgICAxMjgsIDc0LCA3MiwgNzksIDg4LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIDEyOCwgNzQsIDcyLCAKKyAgICA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3NywgMTI4LCA3NCwgNzIsIAorICAgIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgCisgICAgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAKKyAgICAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCAKKyAgICA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA3OCwgMTI4LCA3NCwgNjUsIAorICAgIDg5LCA3MywgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIDY1LCA4NywgMTI4LCA3NCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NiwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCAKKyAgICA4NSwgMTI4LCA3NCwgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIAorICAgIDY1LCA3OCwgMTI4LCA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgCisgICAgNzYsIDY1LCA3NiwgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDIwNiwgNzQsIDY1LCA3MywgMTI4LCAKKyAgICA3NCwgNjUsIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA4MywgMTI4LCA3NCwgNjUsIAorICAgIDY3LCA3NSwgNDUsIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgCisgICAgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIAorICAgIDEyOCwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgCisgICAgNjUsIDg5LCAxOTMsIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCAKKyAgICA3NCwgNjUsIDEyOCwgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIAorICAgIDY5LCA3NywgMTI4LCA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDgzLCA2NywgNjksIDc2LCA2OSwgCisgICAgMjExLCA3MywgODMsIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAKKyAgICAxMjgsIDczLCA4MywgNzYsIDY1LCA3OCwgNjgsIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgCisgICAgMTI4LCA3MywgODMsIDY1LCA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCAKKyAgICA4MiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDczLCA4MiwgNzksIDc4LCA0NSwgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA4MiwgCisgICAgNjYsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCAKKyAgICA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIAorICAgIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgCisgICAgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAKKyAgICAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCAKKyAgICA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgCisgICAgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MiwgNzYsIDc5LCA2NywgNzUsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCisgICAgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCAKKyAgICA4NCwgNjksIDcxLCA4MiwgNjUsIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIAorICAgIDg1LCA3NywgNjksIDc4LCA4NCwgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA3MywgCisgICAgNjgsIDE5NywgNzMsIDc4LCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIAorICAgIDEyOCwgNzMsIDc4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgCisgICAgMjEyLCA3MywgNzgsIDc4LCA3OSwgNjcsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCAKKyAgICA3OCwgNzgsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDc4LCA2OSwgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIAorICAgIDc4LCA3MSwgODUsIDEyOCwgNzMsIDc4LCA3MywgMTI4LCA3MywgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgCisgICAgNzIsIDY5LCA4MiwgNjksIDc4LCAyMTIsIDczLCA3OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNzMsIDc4LCA3MSwgODcsIDY1LCAKKyAgICA5MCwgMTI4LCA3MywgNzgsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgODUsIAorICAgIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgCisgICAgNzgsIDczLCA4NCwgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIDczLCAKKyAgICA4MiwgNjksIDY3LCAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDY4LCA3MywgNjcsIAorICAgIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgCisgICAgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCAKKyAgICA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIAorICAgIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgCisgICAgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCAKKyAgICA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIAorICAgIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgCisgICAgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIAorICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgCisgICAgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgCisgICAgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIAorICAgIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgCisgICAgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgCisgICAgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAKKyAgICA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIAorICAgIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIAorICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgCisgICAgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAorICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCAKKyAgICA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU3LCA0OSwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NywgNDgsIDUyLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY4LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTcsIDU2LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU0LCA2OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNzAsIDQ5LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDY5LCA1NiwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUzLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA3MCwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjgsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDUwLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTMsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDcwLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA2NywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNDksIDU2LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA2NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2NywgNzksIDc4LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4NSwgCisgICAgMTI4LCA3MywgNjcsIDcyLCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgMTI4LCAKKyAgICA3MywgNjcsIDcyLCA2NSwgNjgsIDczLCA3OCwgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCA0NSwgCisgICAgODksIDgyLCAxMjgsIDczLCA2NiwgNzMsIDcwLCA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKKyAgICA3MywgNDgsIDQ5LCA1MywgMTI4LCA3MywgNDgsIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgNDgsIAorICAgIDQ5LCA1MCwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCA0OSwgCisgICAgNDgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ4LCAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNDgsIDQ4LCA1NiwgMTI4LCA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MywgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgNzMsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzMsIDQ4LCA0OCwgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgODUsIDEyOCwgNzMsIDQ1LCA4OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCAKKyAgICAxMjgsIDczLCA0NSwgODksIDY1LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgODksIAorICAgIDY1LCAxMjgsIDczLCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAxMjgsIAorICAgIDczLCA0NSwgNjYsIDY5LCA2NSwgNzcsIDEyOCwgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIDQ1LCA2NSwgCisgICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgNzEsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgODAsIDEyOCwgCisgICAgNzIsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgODQsIDEyOCwgCisgICAgNzIsIDkwLCA3MSwgMTI4LCA3MiwgODksIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCA4OSwgODAsIDc5LCAKKyAgICA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3MiwgODksIDgwLCAKKyAgICA3MiwgNjksIDc4LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgMjA2LCA3MiwgODksIDcxLCA3MywgNjksIDczLCA2NSwgCisgICAgMTI4LCA3MiwgODgsIDg3LCA3MSwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAKKyAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCAKKyAgICA3MiwgODgsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIAorICAgIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDg4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgNzIsIDg4LCA2OSwgODgsIDEyOCwgNzIsIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCAKKyAgICA2OSwgMTI4LCA3MiwgODgsIDY1LCA4OCwgMTI4LCA3MiwgODgsIDY1LCA4NCwgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCAKKyAgICA3MiwgODgsIDY1LCAxMjgsIDcyLCA4NywgODUsIDEyOCwgNzIsIDg3LCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA4NywgNjUsIAorICAgIDcyLCAxMjgsIDcyLCA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgCisgICAgMTI4LCA3MiwgODUsIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCAKKyAgICA2OSwgNjgsIDgzLCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAyMTEsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIAorICAgIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIAorICAgIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgCisgICAgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIAorICAgIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgCisgICAgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgCisgICAgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgCisgICAgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCAKKyAgICA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIAorICAgIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKKyAgICA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCisgICAgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCAKKyAgICA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIAorICAgIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgCisgICAgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCAKKyAgICA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIAorICAgIDc2LCA3OSwgMTI4LCA3MiwgNzksIDc2LCA3NiwgNzksIDIxNSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCAKKyAgICA3NSwgNjUsIDEyOCwgNzIsIDc5LCA2NywgNzUsIDY5LCAyMTcsIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIAorICAgIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA4NSwgCisgICAgNjYsIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgCisgICAgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIAorICAgIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgCisgICAgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIDcyLCA3OCwgNjUsIDg1LCAxMjgsIDcyLCA3OCwgCisgICAgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIDEyOCwgCisgICAgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIDcyLCAKKyAgICA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCA3MiwgCisgICAgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDc5LCAKKyAgICAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIDcyLCAKKyAgICA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgNzIsIAorICAgIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAxMjgsIAorICAgIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCA4OSwgCisgICAgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIDgwLCAKKyAgICAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIDc2LCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCA4NSwgCisgICAgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCA3NiwgCisgICAgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgMTI4LCAKKyAgICA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgNjUsIAorICAgIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg1LCAxMjgsIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIAorICAgIDcyLCA3NiwgNjUsIDEyOCwgNzIsIDc2LCAxMjgsIDcyLCA3NSwgMTI4LCA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIAorICAgIDg5LCA3OSwgMTI4LCA3MiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAKKyAgICAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDcyLCA3MywgNzgsIAorICAgIDcxLCA2OSwgMTk2LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgCisgICAgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCAKKyAgICA3MSwgNzIsIDQ1LCA3NiwgNzksIDIxNSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgCisgICAgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIAorICAgIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgCisgICAgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDgyLCAKKyAgICA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgCisgICAgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCAKKyAgICA2NywgODUsIDgzLCAxMjgsIDcyLCA3MywgNDUsIDgyLCA2OSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIAorICAgIDcyLCA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIAorICAgIDcyLCA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgCisgICAgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKICAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAogICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCiAgICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2OSwgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCAKQEAgLTM3NTAsNDI5ICszNzc5LDQzOCBAQAogICAgIDQ1LCA2OSwgODYsIDczLCAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgCiAgICAgNjUsIDY4LCA4MywgODQsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCAKICAgICA2OSwgNjUsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA0NSwgNjYsIDY1LCA3OCwgNjgsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIDY2LCA2NSwgODMsIAotICAgIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NywgNzQsIDEyOCwgNzIsIDY1LCA4NiwgCi0gICAgNjksIDEyOCwgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgMjEzLCAKLSAgICA3MiwgNjUsIDg0LCA4MiwgNjUsIDIwNiwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCA2NSwgODQsIDY5LCAxMjgsIAotICAgIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIDcyLCA2NSwgODMsIDY5LCAKLSAgICAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDc4LCAxMjgsIAotICAgIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAxMjgsIDcyLCA2NSwgCi0gICAgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MiwgNjUsIDgyLCAKLSAgICAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgNzIsIDY1LCA3OCwgNzEsIAotICAgIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCAKLSAgICA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIAotICAgIDc5LCA4NiwgNjUsIDIwNCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgNDUsIDcyLCA3OSwgNzksIDIwMywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIAotICAgIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgMjEyLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDg0LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAotICAgIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgwLCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCAyMDgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgODcsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCAyMTUsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc4LCAKLSAgICA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIAotICAgIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgCi0gICAgNjUsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDE5MywgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKLSAgICA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCA3MSwgNjksIAotICAgIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgMTI4LCA3MiwgNjUsIDc2LCA3MCwgCi0gICAgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCAKLSAgICA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIAotICAgIDY1LCA3MywgMjExLCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgCi0gICAgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIAotICAgIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgCi0gICAgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIAotICAgIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIAotICAgIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgCi0gICAgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIAotICAgIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgCi0gICAgMTI4LCA3MSwgODYsIDY1LCA3OCwgNzEsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDcxLCA4NSwgODIsIDY1LCAKLSAgICA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIAotICAgIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgCi0gICAgMjAxLCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MywgMTI4LCA3MSwgCi0gICAgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIAotICAgIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgCi0gICAgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIAotICAgIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgCi0gICAgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNzEsIDgyLCAKLSAgICA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCi0gICAgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3MSwgODIsIDY5LCAKLSAgICA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIDg2LCA2OSwgODksIDY1LCA4MiwgCi0gICAgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAKLSAgICA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCi0gICAgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCA4MywgMTI4LCA3MSwgODIsIDY1LCAKLSAgICA4MywgMjExLCA3MSwgODIsIDY1LCA4MywgMjA4LCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgMTk3LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc4LCA4NCwgNzIsIDE5MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKLSAgICAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDc2LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA2NywgCi0gICAgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgNzEsIDc5LCAKLSAgICA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgCi0gICAgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAKLSAgICAxMjgsIDcxLCA3OSwgNzYsIDcwLCA2OSwgODIsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCAKLSAgICA3MSwgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIAotICAgIDcxLCA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgCi0gICAgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCAKLSAgICA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIAotICAgIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAKLSAgICAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIAotICAgIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAyMTEsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIDUxLCAxMjgsIAotICAgIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIDgwLCAxMjgsIAotICAgIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgNjksIDIwNCwgCi0gICAgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDcxLCAxMjgsIDcxLCA3MywgNjksIDg0LCAKLSAgICAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCA3MywgNjYsIAotICAgIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCA4NywgNjUsIAotICAgIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIDcyLCA4NSwgCi0gICAgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgMTI4LCA3MSwgCi0gICAgNzIsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2OSwgODksIDgzLCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzgsIDEyOCwgNzEsIAotICAgIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCAKLSAgICA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIAotICAgIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDgyLCAKLSAgICA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgCi0gICAgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCAKLSAgICA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIAotICAgIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIAotICAgIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgCi0gICAgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAKLSAgICAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIAotICAgIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDY5LCA4NCwgCi0gICAgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCAKLSAgICA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIAotICAgIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgCi0gICAgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCAKLSAgICA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIAotICAgIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgCi0gICAgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCAKLSAgICA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjksIDc3LCAxMjgsIAotICAgIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgCi0gICAgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgCi0gICAgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCAKLSAgICA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIAotICAgIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAKLSAgICAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIAotICAgIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgCi0gICAgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKLSAgICA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAotICAgIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgCi0gICAgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIAotICAgIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIAotICAgIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgCi0gICAgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCAKLSAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCAKLSAgICA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIAotICAgIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIAotICAgIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgCi0gICAgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAKLSAgICAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCAKLSAgICA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgCi0gICAgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAKLSAgICAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIAotICAgIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgCi0gICAgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAKLSAgICAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCAKLSAgICA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCAKLSAgICA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIAotICAgIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCAKLSAgICA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIAotICAgIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIAotICAgIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgCi0gICAgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCAKLSAgICA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIAotICAgIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIAotICAgIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgCi0gICAgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCAKLSAgICA4MiwgNjksIDc4LCA2NywgMjAwLCA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIAotICAgIDc4LCA3NSwgMjExLCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgCi0gICAgNjUsIDc3LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIAotICAgIDgyLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgCi0gICAgNzksIDg1LCA4MiwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIAotICAgIDQ1LCA2OSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgCi0gICAgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCAKLSAgICA4MywgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIAotICAgIDgyLCA4NywgNjUsIDgyLCAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgCi0gICAgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDY1LCAyMTIsIDcwLCA3OSwgODIsIDc1LCA2OSwgMTk2LCA3MCwgNzksIAotICAgIDgyLCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3MCwgNzksIDgyLCA2NywgNjksIDgzLCAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgCi0gICAgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MywgODQsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCAKLSAgICA3OSwgODQsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDc4LCA3OSwgODQsIDE5NywgNzAsIAotICAgIDc5LCA3OSwgODQsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCAxMjgsIDcwLCA3OSwgNzksIDc2LCAKLSAgICAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCA3OCwgMjEyLCA3MCwgNzksIDc4LCAKLSAgICA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgNzksIAotICAgIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCA3NiwgCi0gICAgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzksIDcxLCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgCi0gICAgMTI4LCA3MCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCAKLSAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIAotICAgIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIDg1LCAKLSAgICA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgODIsIAotICAgIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCA3OSwgCi0gICAgNzksIDIxMCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDczLCAKLSAgICA2NywgMjAzLCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIAotICAgIDY5LCA4OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgCi0gICAgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCAKLSAgICA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCAKLSAgICA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCAKLSAgICA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIAotICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgCi0gICAgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAKLSAgICAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIAotICAgIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKLSAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAotICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCi0gICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKLSAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAotICAgIDcxLCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCi0gICAgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgODIsIDQ1LCA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIAotICAgIDY5LCAyMTAsIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAKLSAgICAxMjgsIDcwLCA3MywgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIAotICAgIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIAotICAgIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgCi0gICAgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCAKLSAgICA2OSwgNzYsIDE5NiwgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCAKLSAgICA3MCwgNjksIDg1LCA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIAotICAgIDg0LCA3MywgODYsIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAKLSAgICAyMTEsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIAotICAgIDY5LCA3OSwgMjAwLCA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgCi0gICAgNzgsIDczLCA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCAKLSAgICA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIAotICAgIDIxMywgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIAotICAgIDc3LCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIAotICAgIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgCi0gICAgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCAKLSAgICA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIAotICAgIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgCi0gICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAKLSAgICA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIAotICAgIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgzLCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgCi0gICAgMjAxLCA3MCwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCAKLSAgICA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzcsIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzQsIAotICAgIDEyOCwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCA2NSwgCi0gICAgNzMsIDY2LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIAotICAgIDE5NywgNzAsIDY1LCA2NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1NCwgMTI4LCA3MCwgCi0gICAgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCAKLSAgICA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCAKLSAgICA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKLSAgICA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCAKLSAgICA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCAKLSAgICA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIAotICAgIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIAotICAgIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDEyOCwgNjksIDkwLCA4MywgCi0gICAgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIAotICAgIDg5LCA4OSwgODksIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgMjExLCA2OSwgODksIDY5LCA3NiwgCi0gICAgNjUsIDgzLCA3MiwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCAKLSAgICA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCi0gICAgNzEsIDY1LCA5MCwgNjksIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIAotICAgIDY2LCA4MiwgNzksIDg3LCAyMTEsIDY5LCA4OSwgMTk3LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY5LCA3NywgNjksIDc2LCAyMTcsIAotICAgIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCAKLSAgICA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIAotICAgIDg4LCA4NCwgODIsIDE5MywgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgCi0gICAgNzgsIDY4LCA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCAKLSAgICA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIAotICAgIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgCi0gICAgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDc2LCAKLSAgICA2OSwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIAotICAgIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzMsIDg0LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCi0gICAgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCAKLSAgICA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCAyMTcsIAotICAgIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgCi0gICAgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIAotICAgIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgCi0gICAgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgCi0gICAgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCAKLSAgICA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIAotICAgIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCi0gICAgODksIDEyOCwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDIxNywgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDkwLCAKLSAgICAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIAotICAgIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAKLSAgICAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgzLCAKLSAgICA0NSwgNTEsIDEyOCwgNjksIDgzLCA0NSwgNTAsIDEyOCwgNjksIDgzLCA0NSwgNDksIDEyOCwgNjksIDgyLCA4MiwgNzksIAotICAgIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAKLSAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCAxNzgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIDgxLCAKLSAgICA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgCi0gICAgMjA0LCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIAotICAgIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgCi0gICAgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIAotICAgIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgCi0gICAgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIAotICAgIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgODAsIDY1LCA2NywgMjEyLCA2OSwgCi0gICAgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgCi0gICAgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA0OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIAotICAgIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgCi0gICAgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCAKLSAgICA3OCwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIAotICAgIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDczLCAxMjgsIDY5LCA3OCwgNzgsIDEyOCwgNjksIAotICAgIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgCi0gICAgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCAKLSAgICA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIAotICAgIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgODMsIDEyOCwgCi0gICAgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgCi0gICAgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIAotICAgIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA3OSwgNzQsIDIwMSwgNjksIDc3LCA2NiwgCi0gICAgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCAKLSAgICA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODksIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDg0LCAKLSAgICA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIAotICAgIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAyMDYsIDY5LCAKLSAgICA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDE5NSwgNjksIDc2LCA2NiwgCi0gICAgNjUsIDgzLCA2NSwgMjA2LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCA2OSwgMTI4LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCAKLSAgICAxOTcsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIAotICAgIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAKLSAgICAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzUsIDY1LCA3NywgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCAKLSAgICA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgCi0gICAgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAotICAgIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNjksIDcxLCA4OSwgMTI4LCA2OSwgNzEsIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCAKLSAgICA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIAotICAgIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIDEyOCwgNjksIDY3LCA4MywgMTI4LCA2OSwgNjYsIDY5LCA3MCwgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIDY5LCA2NSwgODMsIDg0LCAxMjgsIDY5LCAKLSAgICA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIAotICAgIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgCi0gICAgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCAKLSAgICA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgCi0gICAgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgCi0gICAgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCAKLSAgICA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIAotICAgIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgCi0gICAgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCAKLSAgICA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIAotICAgIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIAotICAgIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgCi0gICAgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIAotICAgIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDg5LCA2NSwgODksIDEyOCwgNjgsIDkwLCAKLSAgICA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgNzMsIDg0LCA2NSwgMTI4LCA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA2OCwgOTAsIAotICAgIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgCi0gICAgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCA2OCwgCi0gICAgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgODksIAotICAgIDc4LCA2NSwgNzcsIDczLCAxOTUsIDY4LCA4OSwgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgODcsIDY5LCAxMjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgCi0gICAgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCA4NiwgNjgsIDEyOCwgNjgsIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCAKLSAgICA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIDEyOCwgNjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIAotICAgIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgODUsIDgyLCA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgCi0gICAgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCAKLSAgICA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCA2OCwgODUsIDc4LCAxNzksIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAKLSAgICAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgMTk5LCA2OCwgODUsIDY2LCAKLSAgICA1MCwgMTI4LCA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgCi0gICAgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCAKLSAgICA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIAotICAgIDY4LCA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgCi0gICAgODYsIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDY4LCA4MiwgNjksIDY1LCA3NywgMjE3LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIAotICAgIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgCi0gICAgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAKLSAgICA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIAotICAgIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCAKLSAgICA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIAotICAgIDg2LCAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKKyAgICA2OSwgMTI4LCA3MiwgNjgsIDgyLCAxMjgsIDcyLCA2NywgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIAorICAgIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgCisgICAgNjUsIDg3LCA3NCwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCAKKyAgICA3NywgNjksIDEyOCwgNzIsIDY1LCAyMTMsIDcyLCA2NSwgODQsIDgyLCA2NSwgMjA2LCA3MiwgNjUsIDg0LCA3MiwgNzMsIAorICAgIDEyOCwgNzIsIDY1LCA4NCwgNjksIDEyOCwgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgCisgICAgNjUsIDE5OCwgNzIsIDY1LCA4MywgNjksIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCAKKyAgICA4MiwgODAsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIAorICAgIDc4LCA3MywgNjcsIDEyOCwgNzIsIDY1LCA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgCisgICAgODMsIDgzLCAxMjgsIDcyLCA2NSwgODIsIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCAKKyAgICA3OSwgMjA3LCA3MiwgNjUsIDc4LCA3MSwgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDcyLCA2NSwgNzUsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCA3MiwgNjUsIDc4LCA2OCwgCisgICAgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIAorICAgIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgMjA0LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgCisgICAgNzksIDc1LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCA3OSwgMjAzLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCAKKyAgICA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA0NSwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCAyMTIsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgODQsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIAorICAgIDY3LCA4NSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgMTk3LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODAsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDIwOCwgNzIsIDY1LCAKKyAgICA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCA4NywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDIxNSwgNzIsIAorICAgIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgCisgICAgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgMTkzLCA3MiwgNjUsIDc3LCAKKyAgICA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIAorICAgIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgCisgICAgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAKKyAgICAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIAorICAgIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgNjUsIDczLCAyMTEsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAKKyAgICAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA2NSwgNzEsIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCAKKyAgICA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIAorICAgIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIAorICAgIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgCisgICAgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgMTI4LCA3MiwgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCAKKyAgICA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzEsIDg5LCA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIAorICAgIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgNzEsIDg5LCA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIAorICAgIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCA2NSwgMTI4LCA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIAorICAgIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIAorICAgIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAxMjgsIDcxLCA4NiwgNjUsIDc4LCA3MSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIAorICAgIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgCisgICAgNzIsIDIwMSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCAKKyAgICA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCAKKyAgICA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAyMDEsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIAorICAgIDcxLCA4NSwgNjksIDczLCAxMjgsIDcxLCA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgCisgICAgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCAKKyAgICA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIAorICAgIDY1LCA4MiwgNjgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIAorICAgIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIAorICAgIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCAKKyAgICA3MywgNzcsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIAorICAgIDY5LCA2OSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgCisgICAgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAorICAgIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgCisgICAgODYsIDY5LCA4OSwgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIAorICAgIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgzLCAyMDgsIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNjksIDc3LCAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzgsIDg0LCA3MiwgMTkzLCAKKyAgICA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgNzYsIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDY5LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIAorICAgIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgCisgICAgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIAorICAgIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIDczLCAKKyAgICAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIDc5LCAKKyAgICA3NiwgNzAsIDY5LCA4MiwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCA3OSwgNzMsIAorICAgIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIDc5LCA2NSwgCisgICAgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgNzMsIDg5LCAKKyAgICA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODYsIDY5LCAxMjgsIAorICAgIDcxLCA3NiwgNzksIDg0LCA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgCisgICAgNzgsIDY4LCAyMDcsIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCAKKyAgICA3MSwgNzYsIDY1LCAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCAKKyAgICA3MywgODMsIDcyLCAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIAorICAgIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAyMTEsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgCisgICAgODIsIDUxLCAxMjgsIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgCisgICAgNzMsIDgwLCAxMjgsIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCAKKyAgICA3NywgNjksIDIwNCwgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDcxLCAxMjgsIDcxLCAKKyAgICA3MywgNjksIDg0LCAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIAorICAgIDcxLCA3MywgNjYsIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgCisgICAgNzEsIDcyLCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCAKKyAgICA3OSwgMTI4LCA3MSwgNzIsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIAorICAgIDEyOCwgNzEsIDcyLCA2OSwgODksIDgzLCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCAKKyAgICA3MSwgNzIsIDY5LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIAorICAgIDg1LCA2NSwgNjksIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgCisgICAgNjksIDEyOCwgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgCisgICAgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCAKKyAgICA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIAorICAgIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAKKyAgICAxMjgsIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCAKKyAgICA3MSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIAorICAgIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgCisgICAgNzEsIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDY5LCAKKyAgICA4NCwgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIAorICAgIDY5LCA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgCisgICAgNTAsIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIAorICAgIDIwNiwgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgCisgICAgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIAorICAgIDE5NSwgNzEsIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgCisgICAgNjksIDc4LCA3MywgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAKKyAgICAxMjgsIDcxLCA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIAorICAgIDE5NywgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjksIDc3LCAxMjgsIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIAorICAgIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIAorICAgIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgCisgICAgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgCisgICAgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCAKKyAgICA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIAorICAgIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgCisgICAgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIAorICAgIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgCisgICAgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIAorICAgIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIAorICAgIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgCisgICAgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCAKKyAgICA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCAKKyAgICA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIAorICAgIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgCisgICAgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCAKKyAgICA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIAorICAgIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIAorICAgIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIAorICAgIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgCisgICAgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCAKKyAgICA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIAorICAgIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIAorICAgIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgCisgICAgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCAKKyAgICA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIAorICAgIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIAorICAgIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgCisgICAgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgCisgICAgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgCisgICAgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIAorICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgCisgICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCAKKyAgICA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCAKKyAgICA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIAorICAgIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAKKyAgICAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIAorICAgIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgCisgICAgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCAKKyAgICA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgCisgICAgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA4MiwgNjksIDc4LCA2NywgMjAwLCAKKyAgICA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIDc4LCA3NSwgMjExLCA3MCwgODIsIAorICAgIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNjUsIDc3LCA2OSwgMTI4LCA3MCwgCisgICAgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIAorICAgIDc5LCAyMTYsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgCisgICAgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCAKKyAgICA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIAorICAgIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgCisgICAgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgCisgICAgMTk2LCA3MCwgNzksIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4MiwgODQsIDIxNywgNzAsIDc5LCA4MiwgODQsIDczLCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDcwLCA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIAorICAgIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgCisgICAgNzUsIDY5LCAxOTYsIDcwLCA3OSwgODIsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIAorICAgIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgCisgICAgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCAKKyAgICA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIAorICAgIDEyOCwgNzAsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIAorICAgIDc4LCAyMTIsIDcwLCA3OSwgNzgsIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgCisgICAgNzYsIDg5LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCAKKyAgICA4MiwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIAorICAgIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAxMjgsIDcwLCA3NiwgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCAKKyAgICA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCAKKyAgICA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIAorICAgIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgCisgICAgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCAKKyAgICA4MiwgMTI4LCA3MCwgNzYsIDc5LCA3OSwgMjEwLCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIAorICAgIDg0LCAxMjgsIDcwLCA3NiwgNzMsIDY3LCAyMDMsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgCisgICAgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAxMjgsIDcwLCAKKyAgICA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgCisgICAgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgNjYsIDgyLCAKKyAgICA2OSwgNjUsIDY4LCAxMjgsIDcwLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgODMsIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCisgICAgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgNzAsIDczLCAKKyAgICA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgODQsIAorICAgIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDczLCA4NiwgCisgICAgMTk3LCA3MCwgNzMsIDg0LCA5MCwgODAsIDY1LCA4NCwgODIsIDczLCA2NywgMjAzLCA3MCwgNzMsIDg0LCA2NSwgMTI4LCAKKyAgICA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIAorICAgIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgCisgICAgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCAKKyAgICA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIAorICAgIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgCisgICAgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKKyAgICA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAyMTEsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDc4LCA2NSwgNzMsIAorICAgIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA0NSwgCisgICAgODAsIDc5LCA4MywgMjEyLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgMjEwLCAKKyAgICA3MCwgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzgsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIAorICAgIDc2LCAyMDUsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCA0NSwgCisgICAgNDksIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDE5NiwgNzAsIDczLCAKKyAgICA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIDEyOCwgNzAsIDczLCAKKyAgICA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIAorICAgIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIDczLCA3MCwgODQsIDcyLCAKKyAgICA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIAorICAgIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCA2OSwgNzYsIDE5NiwgCisgICAgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCA3MCwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIDg0LCA3MywgODYsIAorICAgIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAyMTEsIDcwLCA2OSwgCisgICAgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIDY5LCA3OSwgMjAwLCAKKyAgICA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIAorICAgIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgCisgICAgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIAorICAgIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIAorICAgIDEyOCwgNzAsIDY5LCA2OSwgNzcsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIAorICAgIDY5LCAxMjgsIDcwLCA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgCisgICAgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCAKKyAgICA4MiwgNzAsIDg1LCAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDcwLCA2NSwgODksIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgCisgICAgNjksIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIAorICAgIDcyLCA2NSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODMsIDg0LCAxMjgsIAorICAgIDcwLCA2NSwgODIsIDgzLCAyMDEsIDcwLCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIAorICAgIDcwLCA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAKKyAgICAxMjgsIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NywgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNjksIAorICAgIDIwNiwgNzAsIDY1LCA3NCwgMTI4LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgCisgICAgODUsIDEyOCwgNzAsIDY1LCA3MywgNjYsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgCisgICAgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCAKKyAgICA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCAKKyAgICA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAKKyAgICAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDgzLCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIAorICAgIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIAorICAgIDY5LCAyMTEsIDY5LCA4OSwgNjksIDc2LCA2NSwgODMsIDcyLCA2OSwgMjExLCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgCisgICAgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIAorICAgIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCAKKyAgICA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgNjYsIDgyLCA3OSwgODcsIDIxMSwgNjksIDg5LCAxOTcsIDY5LCA4OSwgNjYsIAorICAgIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgCisgICAgNjksIDc3LCA2OSwgNzYsIDIxNywgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgCisgICAgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA4MiwgMTkzLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCA2OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgMTk2LCA2OSwgODgsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIAorICAgIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MywgODQsIAorICAgIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgCisgICAgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIAorICAgIDEyOCwgNjksIDg2LCA2OSwgODIsIDIxNywgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgCisgICAgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCAKKyAgICA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgCisgICAgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCAKKyAgICA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIAorICAgIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIAorICAgIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAKKyAgICAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCisgICAgMjE3LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgOTAsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAKKyAgICAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgCisgICAgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAKKyAgICAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCAKKyAgICA2OSwgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIAorICAgIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIDgyLCA3MywgNzgsIDE3OCwgNjksIDgyLCA3MSwgCisgICAgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCAKKyAgICA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIAorICAgIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgCisgICAgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCAKKyAgICA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIAorICAgIDY5LCA4MCwgNjUsIDY3LCAyMTIsIDY5LCA3OSwgODQsIDEyOCwgNjksIDc5LCA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgCisgICAgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgCisgICAgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIAorICAgIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgCisgICAgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIAorICAgIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIDc4LCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA2OSwgNzgsIDgxLCAKKyAgICA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDgxLCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCA3OCwgNzMsIAorICAgIDEyOCwgNjksIDc4LCA3OCwgMTI4LCA2OSwgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCAKKyAgICA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIAorICAgIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgCisgICAgNzksIDgzLCA4NSwgODIsIDY5LCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCAKKyAgICA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIAorICAgIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgCisgICAgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDc5LCAKKyAgICA3NCwgMjAxLCA2OSwgNzcsIDY2LCA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIAorICAgIDc3LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgCisgICAgNjYsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDc2LCA4OSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIDY5LCAKKyAgICA3NiwgNzYsIDczLCA4MCwgODQsIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgNzYsIAorICAgIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgCisgICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCAKKyAgICA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIAorICAgIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgCisgICAgMTk1LCA2OSwgNzYsIDY2LCA2NSwgODMsIDY1LCAyMDYsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDY5LCAxMjgsIDY5LCAKKyAgICA3NiwgNjUsIDc3LCA3MywgODQsIDE5NywgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIAorICAgIDgyLCA2OSwgODAsIDg0LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgCisgICAgNzMsIDc1LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NSwgNjUsIDc3LCAxMjgsIDY5LCAKKyAgICA3NCwgNjksIDY3LCAyMTIsIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDIxNywgNjksIDczLCA3MSwgNzIsIDg0LCA3MywgNjksIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgCisgICAgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAKKyAgICAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgCisgICAgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNjksIAorICAgIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcyLCA4NCwgODMsIDY1LCAxMjgsIDY5LCA3MiwgODQsIDY1LCAxMjgsIAorICAgIDY5LCA3MiwgODAsIDY1LCAxMjgsIDY5LCA3MiwgNzUsIDY1LCAxMjgsIDY5LCA3MiwgNjcsIDcyLCA2NSwgMTI4LCA2OSwgCisgICAgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDEyOCwgNjksIDcxLCAKKyAgICA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIAorICAgIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAKKyAgICAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIAorICAgIDY4LCAxMjgsIDY5LCA2NywgODMsIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgCisgICAgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCAKKyAgICA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIAorICAgIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgCisgICAgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCAKKyAgICA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgCisgICAgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIAorICAgIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIAorICAgIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgCisgICAgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgCisgICAgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgOTAsIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCAKKyAgICA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA2NSwgODksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIAorICAgIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCA3OCwgNjUsIDc3LCA3MywgMTk1LCA2OCwgODksIAorICAgIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4OSwgNjUsIDc4LCAxMjgsIDY4LCA4NywgNzksIDEyOCwgNjgsIAorICAgIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgCisgICAgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAKKyAgICAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgCisgICAgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgCisgICAgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDE5OSwgNjgsIDg1LCA2NywgNzUsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgCisgICAgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgCisgICAgNzcsIDgzLCA4NCwgNzMsIDY3LCA3NSwgODMsIDEyOCwgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCAKKyAgICA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIAorICAgIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3OSwgNzYsIDczLCA3OCwgMTk5LCA2OCwgCisgICAgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAKKyAgICAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCAKKyAgICA2OCwgODIsIDY5LCA2NSwgNzcsIDIxNywgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCA2NSwgNzcsIAorICAgIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIDcxLCA3OSwgCisgICAgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgODMsIAorICAgIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCA2OCwgCisgICAgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgNzgsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCA4NiwgCisgICAgMTk3LCA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4NCwgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAKICAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIAogICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCkBAIC00Mjg2LDI2MyArNDMyNCw4NTQgQEAKICAgICA3MSwgMTI4LCA2OCwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc3LCA2NSwgNzMsIDIwNiwgNjgsIDc5LCA3NiwgODAsIAogICAgIDcyLCA3MywgNzgsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDgzLCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA2NSwgMjEwLCA2OCwgCiAgICAgNzksIDc2LCA3MywgODUsIDc3LCAxMjgsIDY4LCA3OSwgNzUsIDc3LCA2NSwgNzMsIDEyOCwgNjgsIDc5LCA3MywgODQsIAotICAgIDEyOCwgNjgsIDc5LCA3MywgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCAKLSAgICA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIAotICAgIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCi0gICAgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCAKLSAgICA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAKLSAgICAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgNjgsIDc2LCAKLSAgICA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgNjgsIDc1LCAKLSAgICA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCA3NCwgNjksIAotICAgIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIAotICAgIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgCi0gICAgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCAKLSAgICA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDgzLCAxMjgsIDY4LCA3MywgODYsIAotICAgIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIAotICAgIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIAotICAgIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgCi0gICAgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCAKLSAgICA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgCi0gICAgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCAKLSAgICA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIAotICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDgwLCA4NCwgCi0gICAgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCAKLSAgICA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgCi0gICAgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCAKLSAgICA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCAKLSAgICA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIAotICAgIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCAKLSAgICA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCAxNzgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAotICAgIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAKLSAgICAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgMjA2LCA2OCwgNzMsIDcxLCA3MywgODQsIDgzLCAxMjgsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCAKLSAgICA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIAotICAgIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgCi0gICAgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIAotICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCAKLSAgICA4MywgNjksIDIwNCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCAKLSAgICA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIAotICAgIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgCi0gICAgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAKLSAgICAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIAotICAgIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgCi0gICAgNzYsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCAKLSAgICA2OSwgODMsIDczLCA4MywgNDUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgCi0gICAgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCAKLSAgICA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgNzMsIDEyOCwgNjgsIDcyLCA3MywgMTI4LCAKLSAgICA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIAotICAgIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIAotICAgIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCAKLSAgICA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgCi0gICAgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCAKLSAgICA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIAotICAgIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgCi0gICAgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCAKLSAgICA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIAotICAgIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgCi0gICAgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCAKLSAgICA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIAotICAgIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgCi0gICAgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCAKLSAgICA3OCwgODQsIDY1LCAyMDQsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIAotICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDY4LCA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCAKLSAgICA3NiwgODQsIDY1LCAxMjgsIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIAotICAgIDgwLCA3MiwgNzMsIDE5NSwgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgCi0gICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCAKLSAgICA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIAotICAgIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIDc1LCA2NSwgMTI4LCA2OCwgCi0gICAgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAKLSAgICA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgNzMsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDIxMSwgNjgsIDY5LCA2OSwgCi0gICAgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgMTI4LCA2OCwgNjksIDY3LCAKLSAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIAotICAgIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgODYsIDE5NywgCi0gICAgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDgzLCA3MywgODYsIAotICAgIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCA2OSwgNjcsIDczLCA2OCwgCi0gICAgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2NywgNjUsIDg5LCAKLSAgICA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2OSwgNjUsIAotICAgIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDg0LCAxMjgsIAotICAgIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIDg1LCA4MCwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCAKLSAgICA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgNjgsIDY4LCA3OSwgODAsIAotICAgIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCA3MywgODQsIDEyOCwgNjgsIAotICAgIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgCi0gICAgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA2OCwgNzIsIDc5LCAKLSAgICAxMjgsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCAKLSAgICA2OCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIAotICAgIDY4LCA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgCi0gICAgNjUsIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCAKLSAgICA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIAotICAgIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgCi0gICAgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIAotICAgIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAKLSAgICAxMjgsIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIAotICAgIDY1LCA4NCwgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgCi0gICAgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCAKLSAgICA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgCi0gICAgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgCi0gICAgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCAKLSAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIAotICAgIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgCi0gICAgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCAKLSAgICA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgCi0gICAgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIAotICAgIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAKLSAgICAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCAKLSAgICA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgCi0gICAgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCAKLSAgICA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIAotICAgIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgCi0gICAgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCAKLSAgICA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIAotICAgIDQ4LCA1NCwgNTUsIDcxLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTUsIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIAotICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDUzLCAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgCi0gICAgNTQsIDUwLCAxMjgsIDY4LCA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAKLSAgICAxMjgsIDY4LCA0OCwgNTMsIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDUzLCAxMjgsIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA1MSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OCwgNzEsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA0OCwgNjgsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MiwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIAotICAgIDU0LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA2OCwgNDgsIDUyLCA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgCi0gICAgNDgsIDUyLCA0OCwgMTI4LCA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIAotICAgIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIAotICAgIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDY4LCA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA2OCwgNDgsIDUwLCA1MSwgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2OCwgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2OCwgNDgsIDQ5LCA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA2OCwgNDgsIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNjgsIDQ4LCA0OCwgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNjcsIDg5LCA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgCi0gICAgODIsIDY5LCA3OCwgNjUsIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCAKLSAgICA2NywgODksIDgwLCA2OSwgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIAotICAgIDgyLCA3MywgNjcsIDczLCA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgCi0gICAgODksIDEyOCwgNjcsIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgCi0gICAgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCAKLSAgICA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCAKLSAgICA4NSwgODUsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIAotICAgIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAKLSAgICAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIAotICAgIDY5LCA2OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgCi0gICAgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAxMjgsIDY3LCAKLSAgICA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIDEyOCwgNjcsIAotICAgIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgCi0gICAgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAKLSAgICAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCAKLSAgICA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgCi0gICAgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCAKLSAgICA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIAotICAgIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIAotICAgIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgCi0gICAgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIAotICAgIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAKLSAgICAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCi0gICAgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgCi0gICAgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgNjcsIDgyLCAKLSAgICA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCA4MiwgNjksIAotICAgIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIDY5LCA2OCwgCi0gICAgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAxMjgsIDY3LCAKLSAgICA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCA2NSwgNjYsIAotICAgIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCAKLSAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIAotICAgIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgCi0gICAgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCAKLSAgICA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIAotICAgIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgCi0gICAgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCAKLSAgICA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIAotICAgIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCi0gICAgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIAotICAgIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgCi0gICAgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCAKLSAgICA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCAKLSAgICA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIAotICAgIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCAKLSAgICA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAotICAgIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAKLSAgICAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAotICAgIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgCi0gICAgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCAKLSAgICA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgCi0gICAgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCAKLSAgICA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCAKLSAgICA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIAotICAgIDc5LCA3NywgODAsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIAotICAgIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgCi0gICAgNzksIDIwNiwgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCAKLSAgICA2OCwgMTI4LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIAotICAgIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgODUsIDc3LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzYsIAotICAgIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCA2NywgNzksIDY5LCA3OCwgCi0gICAgNzEsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCAKLSAgICA2NSwgNzMsIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzcsIAotICAgIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIAotICAgIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgCi0gICAgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCA2NywgNzYsIDc5LCAKLSAgICA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIDEyOCwgNjcsIAotICAgIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY3LCA3NiwgCi0gICAgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAKLSAgICAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgNjcsIDc2LCA3MywgODAsIAotICAgIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIDc2LCA3MywgNzAsIDcwLCAKLSAgICAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAxMjgsIDY3LCA3NiwgNjksIAotICAgIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCA2NywgNzYsIDY5LCA2NSwgCi0gICAgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4MywgODMsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgMjEwLCA2NywgCi0gICAgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCAyMDYsIDY3LCA3NiwgNjUsIDc3LCA4MywgNzIsIDY5LCA3NiwgMjA0LCAKLSAgICA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIAotICAgIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjcsIDczLCA4NCwgCi0gICAgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgODQsIDIwMSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgCi0gICAgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIDgyLCAKLSAgICA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIAotICAgIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDc2LCA2OSwgMjExLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA2OCwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCAKLSAgICA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgCisgICAgMTI4LCA2OCwgNzksIDczLCA3OCwgMTk5LCA2OCwgNzksIDczLCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIAorICAgIDY4LCA3OSwgNjksIDIxMSwgNjgsIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNzksIDY2LCA4MiwgNzksIAorICAgIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCisgICAgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAKKyAgICAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgCisgICAgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAKKyAgICAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCAKKyAgICA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCAKKyAgICA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKKyAgICA4MiwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCisgICAgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCAKKyAgICA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNzMsIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIAorICAgIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgCisgICAgNjgsIDczLCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgODMsIDgwLCA4NSwgODQsIDY5LCAKKyAgICAxOTYsIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDc1LCAxMjgsIAorICAgIDY4LCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCA2NSwgODAsIDgwLCAKKyAgICA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDczLCA4MiwgNzEsIAorICAgIDE5MywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA3MywgODAsIDg0LCA2OSwgMTI4LCAKKyAgICA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY4LCA3MywgODAsIAorICAgIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAyMTIsIDY4LCA3MywgCisgICAgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTAsIDEyOCwgNjgsIAorICAgIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDczLCAKKyAgICA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgNjgsIDczLCA3NywgNjksIAorICAgIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgCisgICAgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDE3OCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCisgICAgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIDczLCAKKyAgICA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDY4LCA3MywgNzEsIAorICAgIDczLCA4NCwgODMsIDEyOCwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgCisgICAgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCAKKyAgICA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgCisgICAgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCAKKyAgICA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIAorICAgIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgzLCA2OSwgMjA0LCA2OCwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCAKKyAgICA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIAorICAgIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCAKKyAgICAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIDIxMCwgNjgsIAorICAgIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDE5MywgCisgICAgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCA3NiwgMTI4LCAKKyAgICA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCisgICAgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgMTI4LCAKKyAgICA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCA3OSwgNzksIAorICAgIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIAorICAgIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAKKyAgICAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIAorICAgIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCAKKyAgICA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIAorICAgIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIAorICAgIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgCisgICAgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCAKKyAgICA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIAorICAgIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCAKKyAgICA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgCisgICAgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCAKKyAgICA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgCisgICAgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY4LCAKKyAgICA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgCisgICAgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCAKKyAgICA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCA3NiwgODQsIDY1LCAxMjgsIAorICAgIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIDgwLCA3MiwgNzMsIDE5NSwgCisgICAgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgCisgICAgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIDc2LCA2OSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2OCwgNjksIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIAorICAgIDc1LCA2NSwgMTI4LCA2OCwgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIAorICAgIDY5LCA3MSwgODIsIDY5LCA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgCisgICAgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIAorICAgIDIxMSwgNjgsIDY5LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgCisgICAgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCAKKyAgICA2NSwgODMsIDY5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIAorICAgIDg0LCA3MywgODYsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgCisgICAgNzMsIDgzLCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCAKKyAgICA2OSwgNjcsIDczLCA2OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIAorICAgIDY5LCA2NywgNjUsIDg5LCA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAKKyAgICAxMjgsIDY4LCA2OSwgNjUsIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCAKKyAgICA2OCwgODUsIDg0LCAxMjgsIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIAorICAgIDg1LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgCisgICAgODUsIDc5LCAxMjgsIDY4LCA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgCisgICAgNjgsIDY4LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCAKKyAgICA3MywgODQsIDEyOCwgNjgsIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIAorICAgIDY4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIDY4LCAKKyAgICA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2OCwgCisgICAgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIDc2LCAKKyAgICAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgNjUsIAorICAgIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgNjcsIAorICAgIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIDY4LCAKKyAgICA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAxMjgsIAorICAgIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgCisgICAgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIAorICAgIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCAKKyAgICA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIAorICAgIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAKKyAgICAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCAKKyAgICA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAorICAgIDc4LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAKKyAgICAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgCisgICAgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCAKKyAgICA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgCisgICAgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCAKKyAgICA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgCisgICAgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCAKKyAgICA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIAorICAgIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIAorICAgIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIAorICAgIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNzYsIDczLCAxMjgsIAorICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKKyAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAorICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKKyAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAorICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCisgICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCisgICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAorICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAorICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCisgICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKKyAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAorICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCisgICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDg5LCAxMjgsIDY3LCAKKyAgICA4OSwgNjUsIDg3LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCAKKyAgICA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIAorICAgIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIAorICAgIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgCisgICAgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgMTI4LCA2NywgODUsIDgzLCA4MCwgMTI4LCA2NywgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCA2OSwgNjgsIDEyOCwgNjcsIAorICAgIDg1LCA4MiwgODYsIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIDgyLCA4NiwgMTk3LCA2NywgCisgICAgODUsIDgyLCA4MywgNzMsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIAorICAgIDEyOCwgNjcsIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgCisgICAgMTk2LCA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgCisgICAgMjA1LCA2NywgODUsIDY3LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCAKKyAgICA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIAorICAgIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCA2NSwgMjA1LCA2NywgODUsIDEyOCwgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIAorICAgIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgCisgICAgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCAKKyAgICA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgMTI4LCA2NywgODIsIAorICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCAKKyAgICA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIAorICAgIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCA2NSwgODQsIDY3LCAKKyAgICAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIDgyLCA3OSwgODMsIAorICAgIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgCisgICAgNzgsIDY5LCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCAKKyAgICA3OSwgODAsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDczLCA4MywgODMsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgCisgICAgNjcsIDgyLCA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCAKKyAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIAorICAgIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAKKyAgICAxMjgsIDY3LCA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDgyLCA2NSwgNjYsIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgNjYsIDc5LCAyMTcsIAorICAgIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgCisgICAgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAKKyAgICA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIAorICAgIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODUsIDY3LCAyMDAsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgCisgICAgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIAorICAgIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgCisgICAgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MiwgNzUsIDEyOCwgNjcsIDc5LCAKKyAgICA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIAorICAgIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCisgICAgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCAKKyAgICA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIAorICAgIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgCisgICAgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCAKKyAgICA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIAorICAgIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCAKKyAgICA3OCwgODQsIDczLCA3OCwgODUsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCAKKyAgICA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCisgICAgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCAKKyAgICA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIAorICAgIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgCisgICAgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNjksIAorICAgIDY4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIAorICAgIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgCisgICAgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgCisgICAgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCAKKyAgICA3NywgODAsIDg1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCAKKyAgICA4MywgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIAorICAgIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNzMsIAorICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgNzcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIDc5LCAyMDYsIDY3LCA3OSwgCisgICAgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgNjgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA2NiwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIAorICAgIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgCisgICAgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCAKKyAgICA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAyMDQsIAorICAgIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc3LCAxMjgsIDY3LCAyMDUsIAorICAgIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCA3NiwgODUsIDY2LCA0NSwgCisgICAgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIDE5NCwgNjcsIDc2LCAKKyAgICA3OSwgODcsIDIwNiwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIAorICAgIDc2LCA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAKKyAgICAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgCisgICAgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAKKyAgICA3NSwgODcsIDczLCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIAorICAgIDY3LCA3NiwgNzMsIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDc2LCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCAKKyAgICA3NiwgNzMsIDcwLCA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgCisgICAgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgCisgICAgNjcsIDc2LCA2OSwgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODMsIDgzLCAKKyAgICA3MywgNjcsIDY1LCAyMDQsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIAorICAgIDIxMCwgNjcsIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgMjA2LCA2NywgNzYsIDY1LCA3NywgODMsIDcyLCA2OSwgCisgICAgNzYsIDIwNCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgCisgICAgODYsIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY3LCAKKyAgICA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAyMDEsIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgCisgICAgNzcsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCAxOTksIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgCisgICAgODIsIDY3LCA3NiwgNjksIDIxMSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgNjgsIDEyOCwgNjcsIDczLCA4MCwgMTI4LCAKKyAgICA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIAogICAgIDIwNiwgNjcsIDczLCAyMDUsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgNjcsIDczLCA2OSwgODUsIAogICAgIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCAKICAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgCkBAIC00NTc2LDMwMCArNTIwNSwzMDQgQEAKICAgICA4NiwgODIsIDc5LCAyMDYsIDY3LCA3MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgNzgsIDg1LCA4NCwgCiAgICAgMTI4LCA2NywgNzIsIDY5LCA4MywgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDIxMSwgNjcsIDcyLCA2OSwgODIsIDg5LCAKICAgICAxMjgsIDY3LCA3MiwgNjksIDgyLCA4MiwgMjE3LCA2NywgNzIsIDY5LCA4MiwgODIsIDczLCA2OSwgODMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgODEsIDg1LCA2OSwgODIsIDY5LCAxOTYsIDY3LCA3MiwgNjksIDgwLCAxMjgsIDY3LCA3MiwgNjksIDIwNiwgCi0gICAgNjcsIDcyLCA2OSwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCAKLSAgICA3MiwgNjksIDczLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY5LCA2OSwgODMsIDE5NywgNjcsIDcyLCA2OSwgNjksIAotICAgIDgyLCA3MywgNzgsIDE5OSwgNjcsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA3NSwgMjExLCA2NywgCi0gICAgNzIsIDY5LCA2OSwgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCA2OSwgMjEwLCAKLSAgICA2NywgNzIsIDY5LCA2NywgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIAotICAgIDg4LCAxMjgsIDY3LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgCi0gICAgODcsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4MiwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNjcsIAotICAgIDcyLCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgCi0gICAgNjUsIDc3LCA3NSwgNzksIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDIwNSwgNjcsIDcyLCA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIAotICAgIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgCi0gICAgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCAKLSAgICA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIAotICAgIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCAKLSAgICA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCAKLSAgICA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCAKLSAgICA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAKLSAgICAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIAotICAgIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDY4LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgCi0gICAgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCAKLSAgICA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIDc2LCA4NCwgNzMsIAotICAgIDE5NSwgNjcsIDY5LCA3NiwgODMsIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA2OSwgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2NywgNjksIDczLCA3NiwgNzMsIDc4LCAxOTksIDY3LCA2OSwgNjksIDg2LCAxMjgsIDY3LCA2OSwgNjksIDY2LCAxMjgsIAotICAgIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgCi0gICAgMTkzLCA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgCi0gICAgNjcsIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCAKLSAgICA3OSwgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCAKLSAgICA2NywgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIAotICAgIDY3LCA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAKLSAgICAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNjUsIDEyOCwgNjcsIDY3LCA3MiwgMTI4LCA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgCi0gICAgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgCi0gICAgNjcsIDY1LCA4NSwgNjcsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCAKLSAgICA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCAKLSAgICA2NSwgODMsIDc1LCA2OSwgMjEyLCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAotICAgIDgyLCA3MywgNjgsIDcxLCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4NCwgMTI4LCA2NywgNjUsIDgyLCAyMTEsIDY3LCA2NSwgCi0gICAgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAKLSAgICAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIAotICAgIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgCi0gICAgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAKLSAgICAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgCi0gICAgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCAKLSAgICA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIDgwLCA4MCwgNjksIDE5NiwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIAotICAgIDY1LCA4MCwgNzMsIDg0LCA4NSwgNzYsIDg1LCA3NywgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgCi0gICAgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgMTk5LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDgyLCAxOTMsIDY3LCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCAKLSAgICA2NywgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgCi0gICAgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIDc3LCA4MCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA2NywgNjUsIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIAotICAgIDc3LCA2OSwgODIsIDE5MywgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgCi0gICAgNjUsIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDIxMCwgNjcsIDY1LCA3NiwgNjcsIAotICAgIDg1LCA3NiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgODIsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIDcyLCAxMjgsIDY3LCA2NSwgNjksIDgzLCAKLSAgICA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAxOTMsIAotICAgIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgCi0gICAgNjYsIDczLCA3OCwgNjksIDg0LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCAKLSAgICA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIAotICAgIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgCi0gICAgMjAxLCA2NiwgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgNzgsIDQ1LCAKLSAgICA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAxMjgsIAotICAgIDY2LCA4NywgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCA3NywgCi0gICAgNzMsIDgzLCA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgMjA2LCAKLSAgICA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIAotICAgIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCA4MywgNzMsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgCi0gICAgODIsIDIxMywgNjYsIDg1LCA4MiwgODIsIDczLCA4NCwgNzksIDEyOCwgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAKLSAgICAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCAKLSAgICA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIAotICAgIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgCi0gICAgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAyMDYsIDY2LCAKLSAgICA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIAotICAgIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgCi0gICAgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDY2LCA4NSwgNzIsIDczLCAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY2LCA4NSwgNzEsIAotICAgIDEyOCwgNjYsIDg1LCA3MCwgNzAsIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2OCwgMTI4LCA2NiwgODUsIDY3LCA3NSwgCi0gICAgNzYsIDY5LCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIAotICAgIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIAotICAgIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgCi0gICAgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIDY2LCA4MiwgNzksIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAKLSAgICAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIAotICAgIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCA2OCwgNzEsIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgCi0gICAgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIDg2LCA3MywgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCAKLSAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgODIsIDY5LCA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIAotICAgIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgCi0gICAgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKLSAgICA3MiwgNjksIDgzLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAyMDAsIAotICAgIDY2LCA4MiwgNjUsIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCA2OSwgMTk2LCA2NiwgCi0gICAgODIsIDY1LCA2NywgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgODEsIDEyOCwgNjYsIDgwLCAKLSAgICA3MiwgMTI4LCA2NiwgNzksIDg5LCAyMTEsIDY2LCA3OSwgODksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCAKLSAgICA2NiwgNzksIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIAotICAgIDEyOCwgNjYsIDc5LCA4NywgMjA0LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIAotICAgIDgxLCA4NSwgNjksIDg0LCAxMjgsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDIxMiwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgCi0gICAgODIsIDIxNywgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA2NiwgNzksIDg0LCAKLSAgICA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgCi0gICAgMTk3LCA2NiwgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAKLSAgICA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDY2LCA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgCi0gICAgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCAKLSAgICA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIAotICAgIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgCi0gICAgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAKLSAgICAxMjgsIDY2LCA3OSwgNjgsIDIxNywgNjYsIDc5LCA2NSwgODIsIDEyOCwgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCAKLSAgICA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc2LCA3OSwgODcsIAotICAgIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDIxNSwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc2LCA3OSwgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCAKLSAgICA2NiwgNzYsIDczLCA3OCwgMjAzLCA2NiwgNzYsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgCi0gICAgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDc2LCAKLSAgICA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIAotICAgIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCAKLSAgICA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIAotICAgIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDg0LCAxOTcsIDY2LCA3MywgCi0gICAgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCAKLSAgICA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgCi0gICAgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCAKLSAgICA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIAotICAgIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgCi0gICAgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAKLSAgICAxMjgsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIAotICAgIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgCi0gICAgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAKLSAgICA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIAotICAgIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgCi0gICAgNzIsIDg1LCAxMjgsIDY2LCA3MiwgNzksIDc5LCAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgCi0gICAgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDcyLCA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCAKLSAgICA4NCwgODQsIDczLCA4MCwgODIsIDc5LCA3NiwgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCA2NSwgCi0gICAgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgODksIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgCi0gICAgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCAKLSAgICA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIAotICAgIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgCi0gICAgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgCi0gICAgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2NiwgNjksIDc4LCAyMTIsIDY2LCA2OSwgNzgsIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIAotICAgIDc4LCAxOTYsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIAotICAgIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCA3MiwgNzksIDIwOCwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgCi0gICAgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCAKLSAgICA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIAotICAgIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgCi0gICAgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAotICAgIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIAotICAgIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2OSwgNjUsIDY4LCA4MywgMTI4LCA2NiwgNjksIDY1LCAKLSAgICA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCAKLSAgICA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgCi0gICAgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgCi0gICAgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCAKLSAgICA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIAotICAgIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgCi0gICAgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCAKLSAgICA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgODMsIAotICAgIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKLSAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgODMsIAotICAgIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgCi0gICAgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAKLSAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgCi0gICAgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCAKLSAgICA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCAKLSAgICA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIDEyOCwgCi0gICAgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIAotICAgIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgCi0gICAgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCAKLSAgICA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIAotICAgIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDE3OCwgCi0gICAgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA4MywgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAxOTcsIDY2LCAKLSAgICA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCA3NywgNzMsIAotICAgIDc4LCA4NCwgNzksIDIwNiwgNjYsIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNjYsIDY1LCA2OCwgMTI4LCA2NiwgNjUsIDE5NiwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIAotICAgIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgCi0gICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDcyLCA2NSwgNzgsIAotICAgIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDEyOCwgCi0gICAgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgNjUsIDgyLCAKLSAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTAsIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgCi0gICAgNjYsIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCAKLSAgICA1MywgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAKLSAgICAxNzYsIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCAKLSAgICA1MSwgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCAKLSAgICA1MCwgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIAotICAgIDE4MSwgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIAotICAgIDQ5LCA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgCi0gICAgMTI4LCA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIAotICAgIDQ4LCA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIAotICAgIDY2LCA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgCi0gICAgNTYsIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAKLSAgICAxMjgsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCAKLSAgICA0OSwgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCAKLSAgICA2NiwgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIAotICAgIDU0LCA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgCi0gICAgMTI4LCA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgCi0gICAgNTQsIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgCi0gICAgNDksIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAKLSAgICAxMjgsIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCAKLSAgICA0OSwgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCAKLSAgICA2NiwgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCAKLSAgICA2NiwgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCAKLSAgICA2NiwgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCAKLSAgICA0OSwgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCAKLSAgICA0OSwgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIAotICAgIDU1LCAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIAotICAgIDY2LCA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgCi0gICAgMTgwLCA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIAotICAgIDY2LCA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgCi0gICAgMTgxLCA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgCi0gICAgNTYsIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgCi0gICAgNTUsIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgCi0gICAgMTc4LCA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIAotICAgIDY2LCA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIAotICAgIDY2LCA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIAotICAgIDY2LCA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIAotICAgIDY2LCA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIAotICAgIDQ4LCA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIAotICAgIDQ4LCA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIAotICAgIDUxLCAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIAotICAgIDUyLCAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIAotICAgIDE3NiwgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCAKLSAgICA2NiwgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA2NiwgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCAKLSAgICA2NiwgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCAKLSAgICA0OCwgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCAKLSAgICA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIAotICAgIDE4MiwgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIAotICAgIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgCi0gICAgMTc3LCA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCA2OSwgCi0gICAgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NywgNjUsIDIxNywgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgCi0gICAgODYsIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIAotICAgIDY1LCAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAotICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKLSAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgODQsIDY1LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCAKLSAgICA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIAotICAgIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgCi0gICAgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCAKLSAgICA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAotICAgIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCAKLSAgICA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIAotICAgIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIAotICAgIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgCi0gICAgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIAotICAgIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCisgICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc4LCAKKyAgICA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY5LCA2OSwgODMsIDE5NywgNjcsIDcyLCA2OSwgNjksIDgyLCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA3NSwgMjExLCA2NywgNzIsIDY5LCA2OSwgNzUsIAorICAgIDEyOCwgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCA2OSwgMjEwLCA2NywgNzIsIDY5LCA2NywgCisgICAgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIDg4LCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMjEyLCA2NywgNzIsIAorICAgIDY1LCA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA2NSwgCisgICAgNjcsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3NSwgNzksIDEyOCwgCisgICAgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDczLCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDIwNSwgNjcsIDcyLCA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3MywgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDY3LCA3MSwgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgCisgICAgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCAKKyAgICA0NSwgODcsIDY1LCAxMjgsIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAorICAgIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgCisgICAgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIAorICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgCisgICAgODIsIDczLCA2NSwgMjA0LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCAKKyAgICA4MiwgNjksIDY4LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgCisgICAgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIDc2LCA4NCwgNzMsIDE5NSwgNjcsIDY5LCA3NiwgODMsIAorICAgIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA2OSwgCisgICAgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA2OSwgNjksIDg2LCAxMjgsIDY3LCA2OSwgNjksIDY2LCAxMjgsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY5LCAKKyAgICA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCA2NywgNjksIDY4LCAyMDEsIAorICAgIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDIwMywgCisgICAgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgMTI4LCA2NywgNjcsIDczLCAKKyAgICAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIDczLCAxMjgsIDY3LCAKKyAgICA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDczLCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgCisgICAgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCAKKyAgICA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgMTI4LCAKKyAgICA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIAorICAgIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgCisgICAgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCAKKyAgICA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NSwgNjcsIDY1LCA4MywgNzMsIAorICAgIDY1LCAyMDYsIDY3LCA2NSwgODUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIAorICAgIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgODMsIDc1LCA2OSwgMjEyLCA2NywgCisgICAgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIDg3LCA3MiwgNjksIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDgyLCA4NCwgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIAorICAgIDIxMSwgNjcsIDY1LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgCisgICAgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCAKKyAgICA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIAorICAgIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgCisgICAgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgCisgICAgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgCisgICAgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCAKKyAgICA4MCwgODAsIDY5LCAxOTYsIDY3LCA2NSwgODAsIDc5LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgODUsIDc2LCA4NSwgNzcsIAorICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDc5LCA2OSwgMTI4LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIAorICAgIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCA2NSwgCisgICAgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDIwNCwgCisgICAgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCAyMTAsIDY3LCAKKyAgICA2NSwgNzYsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIAorICAgIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCA3MiwgMTI4LCA2NywgNjUsIAorICAgIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2OCwgCisgICAgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgODcsIDY1LCA4OSwgMTI4LCAKKyAgICA2NywgNjUsIDY2LCA3MywgNzgsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgCisgICAgNDgsIDUwLCA1MiwgMTI4LCA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCAKKyAgICA0OSwgMTI4LCA2NywgNDgsIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCAKKyAgICA2NywgNDgsIDQ5LCA1NSwgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIAorICAgIDQ5LCA1MiwgMTI4LCA2NywgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgCisgICAgMTI4LCA2NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgNjcsIDQ4LCA0OCwgNTYsIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgNjcsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIAorICAgIDY3LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjcsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAKKyAgICAxOTYsIDY3LCA0NSwgNTEsIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCAKKyAgICA5MCwgNzIsIDIwMSwgNjYsIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIAorICAgIDc4LCA0NSwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgCisgICAgMTI4LCA2NiwgODcsIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgCisgICAgNzcsIDczLCA4MywgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIAorICAgIDIwNiwgNjYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzAsIDc2LCA4OSwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgCisgICAgODQsIDIxMSwgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAKKyAgICA4MywgNzMsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgODIsIDIxMywgNjYsIDg1LCA4MiwgODIsIAorICAgIDczLCA4NCwgNzksIDEyOCwgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgCisgICAgNzcsIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCAKKyAgICA3NiwgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIAorICAgIDc4LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAyMDYsIDY2LCA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgCisgICAgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCAKKyAgICA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIAorICAgIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA4NSwgNzIsIDczLCAKKyAgICAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3MCwgNzAsIAorICAgIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2OCwgMTI4LCA2NiwgODUsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDY2LCA4NSwgCisgICAgNjYsIDY2LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAKKyAgICAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCAKKyAgICA4MiwgODUsIDgzLCAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIAorICAgIDY2LCA4MiwgNzksIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCAKKyAgICA2OCwgNzEsIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIAorICAgIDg2LCA3MywgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgCisgICAgODIsIDY5LCA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCAKKyAgICA3OSwgODUsIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgCisgICAgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCAKKyAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIAorICAgIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAKKyAgICAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgCisgICAgNzksIDg4LCA3MywgNzgsIDE5OSwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIAorICAgIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgNjYsIDc5LCA4NywgCisgICAgMjA0LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAKKyAgICAxMjgsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDIxMiwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgODIsIDIxNywgNjYsIAorICAgIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAKKyAgICA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIDY2LCA3OSwgODQsIAorICAgIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgMTk3LCA2NiwgCisgICAgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTEsIAorICAgIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIDY2LCA3OSwgCisgICAgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCAKKyAgICA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIAorICAgIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgCisgICAgNjksIDEyOCwgNjYsIDc5LCA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgCisgICAgNzksIDc2LCAyMTIsIDY2LCA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCAKKyAgICA3OSwgNjgsIDIxNywgNjYsIDc5LCA2NSwgODIsIDEyOCwgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCAKKyAgICA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc2LCA3OSwgODcsIDcwLCA3MywgODMsIAorICAgIDcyLCAxMjgsIDY2LCA3NiwgNzksIDIxNSwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIDc2LCA3OSwgCisgICAgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgNzYsIDczLCAKKyAgICA3OCwgMjAzLCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIAorICAgIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgCisgICAgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCAKKyAgICA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIAorICAgIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgNjYsIDczLCA4NCwgMTk3LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCAKKyAgICA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgCisgICAgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCAKKyAgICA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDcxLCAxOTMsIDY2LCA3MywgODIsIAorICAgIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgCisgICAgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCAKKyAgICA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA3NiwgNzMsIAorICAgIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgCisgICAgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgCisgICAgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCAKKyAgICA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDczLCA2NywgODksIAorICAgIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCA2NiwgNzMsIDY2LCA3NiwgNjksIDQ1LCA2NywgCisgICAgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIDcyLCA4NSwgMTI4LCA2NiwgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDY2LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgODQsIDg0LCA3MywgODAsIDgyLCA3OSwgNzYsIAorICAgIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgNjUsIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIAorICAgIDg5LCA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIAorICAgIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgCisgICAgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgCisgICAgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgODQsIDEyOCwgNjYsIDY5LCA3OCwgMjEyLCA2NiwgNjksIDc4LCAKKyAgICA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCA3OCwgMTk2LCA2NiwgNjksIDIwNiwgNjYsIDY5LCAKKyAgICA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIAorICAgIDc5LCAyMDgsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgCisgICAgNzksIDIxMCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCAKKyAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCAKKyAgICA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIAorICAgIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgCisgICAgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIAorICAgIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCAKKyAgICA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCAKKyAgICA2NiwgNjksIDY1LCA2OCwgODMsIDEyOCwgNjYsIDY5LCA2NSwgNjcsIDIwMCwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIAorICAgIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgCisgICAgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIAorICAgIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIAorICAgIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCAKKyAgICA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCAKKyAgICA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIAorICAgIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAKKyAgICAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIAorICAgIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIAorICAgIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDgzLCAxOTMsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgCisgICAgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCAKKyAgICA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NiwgNjUsIDgzLCA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIAorICAgIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgCisgICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCAKKyAgICA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIAorICAgIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgCisgICAgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgCisgICAgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCAKKyAgICA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIAorICAgIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgCisgICAgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAxMjgsIDY2LCA2NSwgNzYsIDc2LCA4MCwgNzksIDczLCA3OCwgMjEyLCAKKyAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDg0LCAxMjgsIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIAorICAgIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgCisgICAgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCAKKyAgICA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIAorICAgIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCA3MiwgNjUsIDgyLCAxNzgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgODUsIDY5LCA4NCwgODQsIAorICAgIDE5NywgNjYsIDY1LCA3MSwgODMsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgCisgICAgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgNzcsIDczLCA3OCwgODQsIDc5LCAKKyAgICAyMDYsIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIDY2LCA2NSwgNjgsIAorICAgIDEyOCwgNjYsIDY1LCAxOTYsIDY2LCA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc5LCA3OCwgCisgICAgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIAorICAgIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgCisgICAgNzIsIDY1LCA3OCwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCAKKyAgICA3NSwgMTI4LCA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCAKKyAgICA2NSwgODIsIDY5LCA4MiwgODUsIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTcsIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTQsIDEyOCwgNjYsIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1NywgMTI4LCA2NiwgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCAKKyAgICA1MCwgNTIsIDUzLCAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCAKKyAgICA1MCwgNTIsIDE3NiwgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCAKKyAgICA2NiwgNTAsIDUxLCA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIAorICAgIDEyOCwgNjYsIDUwLCA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIAorICAgIDUwLCA1MCwgMTgxLCA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIAorICAgIDY2LCA1MCwgNDksIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgCisgICAgNDksIDU0LCAxMjgsIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAKKyAgICAxMjgsIDY2LCA1MCwgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCAKKyAgICA1MCwgNDgsIDU3LCAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIAorICAgIDU0LCAxMjgsIDY2LCA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIAorICAgIDY2LCA1MCwgNDgsIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgCisgICAgNTcsIDE3NywgNjYsIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgCisgICAgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NiwgNDksIDEyOCwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIAorICAgIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIAorICAgIDU1LCAxNzksIDY2LCA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIAorICAgIDY2LCA0OSwgNTQsIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgCisgICAgNTQsIDU0LCAxMjgsIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgCisgICAgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAKKyAgICAxODUsIDY2LCA0OSwgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCAKKyAgICA1MywgNTMsIDEyOCwgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIAorICAgIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIAorICAgIDUyLCAxODEsIDY2LCA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIAorICAgIDUxLCAxODEsIDY2LCA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIAorICAgIDUxLCAxNzYsIDY2LCA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIAorICAgIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIAorICAgIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIAorICAgIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgCisgICAgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgCisgICAgNDksIDQ4LCAxODAsIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgCisgICAgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgCisgICAgNDgsIDU2LCAxODEsIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgCisgICAgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgCisgICAgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgCisgICAgNDgsIDU1LCAxNzgsIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgCisgICAgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgCisgICAgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgCisgICAgNTQsIDE3NiwgNjYsIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgCisgICAgNTQsIDEyOCwgNjYsIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgCisgICAgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgCisgICAgMTg0LCA2NiwgNDgsIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgCisgICAgMTgwLCA2NiwgNDgsIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIAorICAgIDY2LCA0OCwgNTEsIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIAorICAgIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIAorICAgIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIAorICAgIDUwLCAxODIsIDY2LCA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDY2LCA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIAorICAgIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIAorICAgIDQ5LCAxODAsIDY2LCA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIAorICAgIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIAorICAgIDQ4LCAxODQsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIAorICAgIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgCisgICAgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgCisgICAgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgCisgICAgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCA2NSwgCisgICAgODgsIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg3LCA2NSwgMjE3LCA2NSwgODYsIDc5LCA2NywgNjUsIDY4LCAKKyAgICA3OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIAorICAgIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCAKKyAgICA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIAorICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgCisgICAgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIAorICAgIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKKyAgICA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIAorICAgIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgCisgICAgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCAKKyAgICA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDIwMywgNjUsIDg0LCA4NCwgNjUsIDY3LCA3MiwgNjksIDE5NiwgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgCisgICAgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCAKKyAgICA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODQsIDcyLCA0NSwgODQsIDcyLCA2NSwgNzYsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCAxMjgsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgODksIAorICAgIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIDc5LCAKKyAgICA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjUsIAorICAgIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIDEyOCwgCisgICAgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMTI4LCAKKyAgICA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIAorICAgIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgCisgICAgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAKKyAgICAxMjgsIDY1LCA4MywgNzIsIDU3LCAxMjgsIDY1LCA4MywgNzIsIDUxLCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCAKKyAgICA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIAorICAgIDUwLCAxMjgsIDY1LCA4MywgNDUsIDgzLCA2NSwgNzQsIDY4LCA2NSwgMTI4LCA2NSwgODIsIDg1LCA3MiwgODUsIDY1LCAKKyAgICAxMjgsIDY1LCA4MiwgODQsIDIxMSwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAogICAgIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAKICAgICAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIAogICAgIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgCkBAIC00ODkyLDQyICs1NTI1LDQzIEBACiAgICAgNjUsIDQ1LCA4NSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA3MywgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCAKICAgICA2OSwgNzksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjUsIAogICAgIDEyOCwgNjUsIDgyLCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA2NSwgMTk2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY3LCA0NSwgCi0gICAgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCAKLSAgICA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIAotICAgIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgODIsIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgCi0gICAgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCA3NiwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAyMTEsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCAKLSAgICA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIAotICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgCi0gICAgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCAKLSAgICA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCi0gICAgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCAKLSAgICA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgCi0gICAgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgCi0gICAgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDY1LCA3OSwgODUsIDEyOCwgNjUsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIAotICAgIDg5LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgCi0gICAgODIsIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKLSAgICAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIAotICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAKLSAgICAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAotICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKLSAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCAKLSAgICA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIAotICAgIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgCi0gICAgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgCi0gICAgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCAKLSAgICA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIAotICAgIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA4MywgCi0gICAgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCA3NiwgNjksIDY4LCAxMjgsIDY1LCAKLSAgICA3OCwgNzEsIDc2LCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIAotICAgIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgCi0gICAgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIAotICAgIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgCisgICAgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgODUsIDY2LCAKKyAgICAxMjgsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIAorICAgIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgCisgICAgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAKKyAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIAorICAgIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgCisgICAgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgCisgICAgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIAorICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAKKyAgICAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgCisgICAgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgCisgICAgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCAKKyAgICA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCAKKyAgICA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIAorICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCAKKyAgICA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgCisgICAgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCAKKyAgICA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgCisgICAgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIAorICAgIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgCisgICAgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCAKKyAgICA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIAorICAgIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIAorICAgIDEyOCwgNjUsIDc4LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgCisgICAgODUsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAKKyAgICAyMTcsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCAKKyAgICA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIAorICAgIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNDUsIDc4LCA3MywgODMsIDcwLCAKICAgICAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgODAsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3NywgODAsIAogICAgIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIDc3LCA4MCwgNjksIDgyLCA4MywgNjUsIDc4LCAxOTYsIDY1LCA3NywgCiAgICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCAKQEAgLTQ5NDEsMTE1ODAgKzU1NzUsMTIwNjIgQEAKICAgICA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIAogICAgIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgCiAgICAgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCAKLSAgICA3NywgMTI4LCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIAotICAgIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgCi0gICAgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCAKLSAgICA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIAotICAgIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODIsIDg0LCAxMjgsIAotICAgIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgMTI4LCA2NSwgNzYsIDY5LCA3MCwgCi0gICAgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCAKLSAgICA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIAotICAgIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCAKLSAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIAotICAgIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAKLSAgICAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgCi0gICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIAotICAgIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCA2NSwgNzIsIAotICAgIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgCi0gICAgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCAKLSAgICA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDgzLCAyMTIsIDY1LCA3MSwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgCi0gICAgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIAotICAgIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCAKLSAgICA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgNjcsIAotICAgIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgNjksIAotICAgIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgCi0gICAgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIAotICAgIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDY1LCAKLSAgICA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIAotICAgIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgCi0gICAgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIAotICAgIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgCi0gICAgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCAKLSAgICA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgCi0gICAgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCAKLSAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCAKLSAgICA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgCi0gICAgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCAKLSAgICA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIAotICAgIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCAKLSAgICA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIAotICAgIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCAKLSAgICA0OSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1NSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCAKLSAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIAotICAgIDU0LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDUzLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIAotICAgIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTIsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTEsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgCi0gICAgNTEsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUwLCA1MCwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNjUsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCAKLSAgICA2NSwgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCAKLSAgICA2NiwgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAotICAgIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNTAsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNTAsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCAKLSAgICA1NCwgMTI4LCA2NSwgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCAKLSAgICA2NSwgNTYsIDQ4LCA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIAotICAgIDUxLCAxNzgsIDY1LCA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIAotICAgIDE4MCwgNjUsIDU1LCA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCAKLSAgICA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgCi0gICAgMTc5LCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgCi0gICAgNDgsIDE4MywgNjUsIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgCi0gICAgMTc5LCA2NSwgNTUsIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgCi0gICAgNTEsIDEyOCwgNjUsIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgCi0gICAgNjUsIDU0LCA1MywgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCAKLSAgICA1MywgNTQsIDEyOCwgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIAotICAgIDEyOCwgNjUsIDU0LCA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIAotICAgIDU0LCA1MiwgNTYsIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgCi0gICAgNTIsIDEyOCwgNjUsIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgCi0gICAgNjUsIDU0LCA1MSwgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCAKLSAgICA1MCwgNTcsIDEyOCwgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIAotICAgIDEyOCwgNjUsIDU0LCA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDU0LCA1MCwgNDksIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgCi0gICAgNTYsIDEyOCwgNjUsIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDU0LCA0OSwgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIAotICAgIDEyOCwgNjUsIDU0LCA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIAotICAgIDU0LCA0OCwgNTAsIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDUzLCA1NywgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCAKLSAgICA1NiwgNTYsIDEyOCwgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIAotICAgIDUzLCA1NiwgNDksIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgCi0gICAgNjUsIDUzLCA1NSwgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCAKLSAgICA1NSwgNDksIDEyOCwgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjUsIDUzLCA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIAotICAgIDUzLCA1NCwgNTEsIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgCi0gICAgNTQsIDEyOCwgNjUsIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgCi0gICAgNjUsIDUzLCA1MywgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCAKLSAgICA1MiwgNTcsIDEyOCwgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIAotICAgIDUzLCA1MSwgNTcsIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgCi0gICAgNTQsIDEyOCwgNjUsIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgCi0gICAgNjUsIDUzLCA1MSwgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCAKLSAgICA1MCwgNTYsIDEyOCwgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDUzLCA1MCwgNDksIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDUzLCA0OSwgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIAotICAgIDEyOCwgNjUsIDUzLCA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIAotICAgIDUzLCA0OCwgNTIsIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgCi0gICAgNDksIDEyOCwgNjUsIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgCi0gICAgNjUsIDUyLCA1NywgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCAKLSAgICA1NywgNDksIDEyOCwgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIAotICAgIDEyOCwgNjUsIDUyLCA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIAotICAgIDUyLCA1NiwgNTIsIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgCi0gICAgNDksIDEyOCwgNjUsIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDUyLCA1NSwgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCAKLSAgICA1NSwgNTIsIDEyOCwgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIAotICAgIDEyOCwgNjUsIDUyLCA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIAotICAgIDUyLCA1NCwgNTUsIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgCi0gICAgNTIsIDEyOCwgNjUsIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgCi0gICAgNjUsIDUyLCA1NCwgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCAKLSAgICA1MywgNTUsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIAotICAgIDUzLCAxMjgsIDY1LCA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIAotICAgIDY1LCA1MiwgNTMsIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgCi0gICAgNTIsIDUyLCA1NywgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCAKLSAgICA1NCwgMTI4LCA2NSwgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCAKLSAgICA2NSwgNTIsIDUyLCA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIAotICAgIDUxLCA1NywgMTI4LCA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgCi0gICAgMTI4LCA2NSwgNTIsIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgCi0gICAgNTIsIDUxLCA1MCwgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCAKLSAgICA1NywgMTI4LCA2NSwgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCAKLSAgICA2NSwgNTIsIDUwLCA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIAotICAgIDUwLCA1MCwgMTI4LCA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgCi0gICAgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCAKLSAgICA0OSwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIAotICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgCi0gICAgNjUsIDUyLCA0OSwgNTMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAKLSAgICAxMjgsIDY1LCA1MiwgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIAotICAgIDQ5LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgCi0gICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgCi0gICAgMTI4LCA2NSwgNTIsIDQ4LCA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKLSAgICA0OCwgNTYsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIAotICAgIDY1LCA1MiwgNDgsIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgCi0gICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAKLSAgICAxMjgsIDY1LCA1MiwgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAotICAgIDQ4LCA1MSwgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgCi0gICAgNjUsIDUyLCA0OCwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIAotICAgIDU3LCA1NiwgMTI4LCA2NSwgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgCi0gICAgMTI4LCA2NSwgNTEsIDU3LCA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgCi0gICAgNTcsIDQ5LCAxMjgsIDY1LCA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAKLSAgICAxMjgsIDY1LCA1MSwgNTYsIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCAKLSAgICA2NSwgNTEsIDU2LCA1MywgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIAotICAgIDUxLCA1NiwgMTc5LCA2NSwgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgCi0gICAgNDksIDEyOCwgNjUsIDUxLCA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDUxLCA1NSwgNTUsIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCAKLSAgICA1NSwgNTIsIDEyOCwgNjUsIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIAotICAgIDY1LCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIAotICAgIDY1LCA1MSwgNTQsIDU2LCA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgCi0gICAgNTEsIDU0LCA1NCwgMTI4LCA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCAKLSAgICA1NCwgNTIsIDEyOCwgNjUsIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIAotICAgIDEyOCwgNjUsIDUxLCA1NCwgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIAotICAgIDY1LCA1MSwgNTMsIDU2LCAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgCi0gICAgNTMsIDUzLCAxMjgsIDY1LCA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAKLSAgICAxMjgsIDY1LCA1MSwgNTMsIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIAotICAgIDUzLCAxMjgsIDY1LCA1MSwgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIAotICAgIDY1LCA1MSwgNTIsIDQ5LCAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgCi0gICAgNTEsIDU2LCAxMjgsIDY1LCA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKLSAgICA1NCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIAotICAgIDUzLCAxMjgsIDY1LCA1MSwgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgCi0gICAgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAKLSAgICAxMjgsIDY1LCA1MSwgNTEsIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCAKLSAgICA2NSwgNTEsIDUwLCA1NywgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIAotICAgIDUwLCA1NCwgMTI4LCA2NSwgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDUwLCA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgCi0gICAgNTEsIDQ5LCA1NywgMTI4LCA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCAKLSAgICA1NCwgMTI4LCA2NSwgNTEsIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIAotICAgIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDQ5LCA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgCi0gICAgNTEsIDQ4LCA1NywgNjcsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCAKLSAgICA2NSwgNTEsIDQ4LCA1NywgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIAotICAgIDQ4LCA1NCwgMTI4LCA2NSwgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDQ4LCA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgCi0gICAgNTAsIDU3LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCAKLSAgICA1NywgNTUsIDEyOCwgNjUsIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIAotICAgIDY1LCAxMjgsIDY1LCA1MCwgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIAotICAgIDY1LCA1MCwgNTcsIDQ5LCAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgCi0gICAgNTAsIDU2LCA1NywgMTI4LCA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCAKLSAgICA1NCwgMTI4LCA2NSwgNTAsIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCAKLSAgICA2NSwgNTAsIDU2LCA1MCwgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIAotICAgIDU1LCA1NywgMTI4LCA2NSwgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgCi0gICAgMTI4LCA2NSwgNTAsIDU1LCA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgCi0gICAgNTAsIDU1LCA1MCwgMTI4LCA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCAKLSAgICA1NywgMTI4LCA2NSwgNTAsIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIAotICAgIDEyOCwgNjUsIDUwLCA1NCwgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIAotICAgIDUwLCA1NCwgNTEsIDEyOCwgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgCi0gICAgNDgsIDEyOCwgNjUsIDUwLCA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgCi0gICAgNjUsIDUwLCA1MywgNTQsIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCAKLSAgICA1MywgNTEsIDEyOCwgNjUsIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIAotICAgIDEyOCwgNjUsIDUwLCA1MiwgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIAotICAgIDUwLCA1MiwgNTQsIDEyOCwgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgCi0gICAgNTEsIDEyOCwgNjUsIDUwLCA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgNjUsIDUwLCA1MSwgNTcsIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCAKLSAgICA1MSwgNTQsIDEyOCwgNjUsIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIAotICAgIDEyOCwgNjUsIDUwLCA1MSwgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIAotICAgIDUwLCA1MCwgNTcsIDEyOCwgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgCi0gICAgNTAsIDU1LCAxMjgsIDY1LCA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAKLSAgICAxMjgsIDY1LCA1MCwgNTAsIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCAKLSAgICA1MCwgNTAsIDQ4LCAxMjgsIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIAotICAgIDU1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgCi0gICAgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgCi0gICAgNjUsIDUwLCA0OSwgNTAsIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCAKLSAgICA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIAotICAgIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgCi0gICAgMTI4LCA2NSwgNTAsIDQ4LCA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgCi0gICAgNjUsIDUwLCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCAKLSAgICA1MCwgNDgsIDQ4LCAxMjgsIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIAotICAgIDU1LCAxMjgsIDY1LCA0OSwgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA0OSwgNTcsIDUxLCAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgCi0gICAgNTcsIDQ4LCAxMjgsIDY1LCA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAKLSAgICAxMjgsIDY1LCA0OSwgNTYsIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCAKLSAgICA0OSwgNTYsIDUxLCAxMjgsIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIAotICAgIDQ4LCAxMjgsIDY1LCA0OSwgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIAotICAgIDY1LCA0OSwgNTUsIDU0LCAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgCi0gICAgNTUsIDUxLCAxMjgsIDY1LCA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OSwgNTQsIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA0OSwgNTQsIDU0LCAxMjgsIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIAotICAgIDUxLCAxMjgsIDY1LCA0OSwgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIAotICAgIDY1LCA0OSwgNTMsIDU3LCAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgCi0gICAgNTMsIDU0LCAxMjgsIDY1LCA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAKLSAgICAxMjgsIDY1LCA0OSwgNTMsIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCAKLSAgICA0OSwgNTIsIDU3LCAxMjgsIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIAotICAgIDU0LCAxMjgsIDY1LCA0OSwgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIAotICAgIDY1LCA0OSwgNTIsIDUwLCAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgCi0gICAgNTEsIDU3LCAxMjgsIDY1LCA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAKLSAgICAxMjgsIDY1LCA0OSwgNTEsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCAKLSAgICA2NSwgNDksIDUxLCA1MSwgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIAotICAgIDQ5LCA1MSwgNDksIDEyOCwgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgCi0gICAgNTYsIDEyOCwgNjUsIDQ5LCA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDY1LCA0OSwgNTAsIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCAKLSAgICA0OSwgNTAsIDUwLCAxMjgsIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIAotICAgIDUwLCA0OCwgMTI4LCA2NSwgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgCi0gICAgMTI4LCA2NSwgNDksIDQ5LCA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDQ5LCA0OSwgNTIsIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIAotICAgIDQ5LCA0OCwgMTI4LCA2NSwgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgCi0gICAgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCAKLSAgICA1NSwgMTI4LCA2NSwgNDksIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIAotICAgIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgCi0gICAgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAKLSAgICAxMjgsIDY1LCA0OSwgNDgsIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgCi0gICAgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCAKLSAgICA1NiwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIAotICAgIDU1LCAxMjgsIDY1LCA0OCwgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA0OCwgNTcsIDUxLCAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgCi0gICAgNTcsIDQ4LCAxMjgsIDY1LCA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAKLSAgICAxMjgsIDY1LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCAKLSAgICA0OCwgNTYsIDUxLCAxMjgsIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIAotICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIAotICAgIDY1LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTUsIDUxLCAxMjgsIDY1LCA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA0OCwgNTQsIDU0LCA2NywgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIAotICAgIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKLSAgICA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIAotICAgIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIAotICAgIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAKLSAgICA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIAotICAgIDEyOCwgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIAotICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgCi0gICAgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIAotICAgIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgCi0gICAgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCAKLSAgICA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIAotICAgIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCisgICAgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCAKKyAgICA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIAorICAgIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgCisgICAgNzMsIDcwLCAxMjgsIDY1LCA3NiwgNzMsIDE5OCwgNjUsIDc2LCA3MywgNjksIDc4LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCAKKyAgICAyMDYsIDY1LCA3NiwgNzEsIDczLCAyMTgsIDY1LCA3NiwgNzAsIDY1LCAxMjgsIDY1LCA3NiwgNjksIDg1LCAyMTIsIDY1LCAKKyAgICA3NiwgNjksIDgyLCA4NCwgMTI4LCA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIDY2LCA3MywgNjcsIAorICAgIDEyOCwgNjUsIDc2LCA2OSwgNzAsIDEyOCwgNjUsIDc2LCA2NiwgNjUsIDc4LCA3MywgNjUsIDIwNiwgNjUsIDc2LCA2NSwgCisgICAgODksIDcyLCA2OSwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCAKKyAgICA2NSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIAorICAgIDY5LCA4MywgNjksIDc2LCA4MywgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgCisgICAgNzMsIDc3LCA3MywgMTk1LCA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCAKKyAgICA2NSwgODIsIDE5MywgNjUsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgCisgICAgMjAzLCA2NSwgNzMsIDg0LCA3OSwgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCAKKyAgICA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjUsIDczLCA3OCwgMjEzLCA2NSwgNzMsIDc4LCA3OCwgMTI4LCA2NSwgNzMsIAorICAgIDc2LCA3NywgMTI4LCA2NSwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgNzIsIDg2LCA4NSwgODMsIDEyOCwgCisgICAgNjUsIDcyLCA4MywgNjgsIDY1LCAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCA3MiwgNzksIDIwNSwgNjUsIDcyLCAKKyAgICA2NSwgNzgsIDE5OSwgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIAorICAgIDg1LCA3OCwgNzEsIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAKKyAgICA4MywgMjEyLCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIAorICAgIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgCisgICAgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCAKKyAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3MCwgNzAsIDczLCAyMTYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIAorICAgIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCAKKyAgICA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgCisgICAgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCAKKyAgICA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIAorICAgIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2OCwgNzcsIDczLCA4MywgCisgICAgODMsIDczLCA3OSwgMjA2LCA2NSwgNjgsIDc2LCA2NSwgMjA1LCA2NSwgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAKKyAgICAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIAorICAgIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgCisgICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIAorICAgIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAKKyAgICAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIAorICAgIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgCisgICAgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCAKKyAgICA3OSwgNzcsIDc3LCA3OSwgNjgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIAorICAgIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCAKKyAgICA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgCisgICAgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIAorICAgIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgCisgICAgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY2LCAKKyAgICA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjUsIAorICAgIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY2LCAKKyAgICAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjUsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDksIAorICAgIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ4LCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU1LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIAorICAgIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTQsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTEsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgCisgICAgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1MiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUxLCA3NywgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCA3NywgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDcwLCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDc3LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDUwLCA0OSwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA0OSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NywgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDQ4LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA2NSwgCisgICAgODksIDczLCA3OCwgMTI4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCAKKyAgICA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUyLCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MCwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNTUsIDEyOCwgNjUsIDU2LCA0OCwgNTQsIDEyOCwgNjUsIAorICAgIDU2LCA0OCwgNTMsIDEyOCwgNjUsIDU2LCA0OCwgNTIsIDEyOCwgNjUsIDU2LCA0OCwgNTEsIDEyOCwgNjUsIDU2LCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDU2LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNDgsIDEyOCwgNjUsIDU1LCA1MSwgMTc4LCA2NSwgCisgICAgNTUsIDUwLCAxODIsIDY1LCA1NSwgNDksIDE4MywgNjUsIDU1LCA0OSwgMTgxLCA2NSwgNTUsIDQ5LCAxODAsIDY1LCA1NSwgCisgICAgNDksIDE3OSwgNjUsIDU1LCA0OSwgMTc4LCA2NSwgNTUsIDQ5LCAxNzcsIDY1LCA1NSwgNDksIDE3NiwgNjUsIDU1LCA0OCwgCisgICAgNTcsIDQ1LCAxODIsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgwLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OSwgNjUsIDU1LCAKKyAgICA0OCwgNTcsIDQ1LCAxNzgsIDY1LCA1NSwgNDgsIDE4NSwgNjUsIDU1LCA0OCwgMTg0LCA2NSwgNTUsIDQ4LCAxODMsIDY1LCAKKyAgICA1NSwgNDgsIDE4MiwgNjUsIDU1LCA0OCwgMTgxLCA2NSwgNTUsIDQ4LCAxODAsIDY1LCA1NSwgNDgsIDE3OSwgNjUsIDU1LCAKKyAgICA0OCwgMTc4LCA2NSwgNTUsIDQ4LCAxNzcsIDY1LCA1NCwgNTQsIDUyLCAxMjgsIDY1LCA1NCwgNTQsIDUxLCAxMjgsIDY1LCAKKyAgICA1NCwgNTQsIDUwLCAxMjgsIDY1LCA1NCwgNTQsIDQ5LCAxMjgsIDY1LCA1NCwgNTQsIDQ4LCAxMjgsIDY1LCA1NCwgNTMsIAorICAgIDU3LCAxMjgsIDY1LCA1NCwgNTMsIDU2LCAxMjgsIDY1LCA1NCwgNTMsIDU1LCAxMjgsIDY1LCA1NCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA1NCwgNTMsIDUzLCAxMjgsIDY1LCA1NCwgNTMsIDUyLCAxMjgsIDY1LCA1NCwgNTMsIDUxLCAxMjgsIDY1LCA1NCwgCisgICAgNTMsIDUwLCAxMjgsIDY1LCA1NCwgNTMsIDQ5LCAxMjgsIDY1LCA1NCwgNTIsIDU3LCAxMjgsIDY1LCA1NCwgNTIsIDU2LCAKKyAgICAxMjgsIDY1LCA1NCwgNTIsIDU0LCAxMjgsIDY1LCA1NCwgNTIsIDUzLCAxMjgsIDY1LCA1NCwgNTIsIDUyLCAxMjgsIDY1LCAKKyAgICA1NCwgNTIsIDUxLCAxMjgsIDY1LCA1NCwgNTIsIDUwLCAxMjgsIDY1LCA1NCwgNTIsIDQ4LCAxMjgsIDY1LCA1NCwgNTEsIAorICAgIDU2LCAxMjgsIDY1LCA1NCwgNTEsIDU1LCAxMjgsIDY1LCA1NCwgNTEsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDU3LCAxMjgsIAorICAgIDY1LCA1NCwgNTAsIDU2LCAxMjgsIDY1LCA1NCwgNTAsIDU1LCAxMjgsIDY1LCA1NCwgNTAsIDU0LCAxMjgsIDY1LCA1NCwgCisgICAgNTAsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDUxLCAxMjgsIDY1LCA1NCwgNTAsIDUwLCAxMjgsIDY1LCA1NCwgNTAsIDQ5LCAKKyAgICAxMjgsIDY1LCA1NCwgNTAsIDQ4LCAxMjgsIDY1LCA1NCwgNDksIDU3LCAxMjgsIDY1LCA1NCwgNDksIDU2LCAxMjgsIDY1LCAKKyAgICA1NCwgNDksIDU1LCAxMjgsIDY1LCA1NCwgNDksIDU0LCAxMjgsIDY1LCA1NCwgNDksIDUzLCAxMjgsIDY1LCA1NCwgNDksIAorICAgIDUyLCAxMjgsIDY1LCA1NCwgNDksIDUxLCAxMjgsIDY1LCA1NCwgNDksIDUwLCAxMjgsIDY1LCA1NCwgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA1NCwgNDksIDQ4LCAxMjgsIDY1LCA1NCwgNDgsIDU3LCAxMjgsIDY1LCA1NCwgNDgsIDU2LCAxMjgsIDY1LCA1NCwgCisgICAgNDgsIDU0LCAxMjgsIDY1LCA1NCwgNDgsIDUyLCAxMjgsIDY1LCA1NCwgNDgsIDUxLCAxMjgsIDY1LCA1NCwgNDgsIDUwLCAKKyAgICAxMjgsIDY1LCA1NCwgNDgsIDQ5LCAxMjgsIDY1LCA1NCwgNDgsIDQ4LCAxMjgsIDY1LCA1MywgNTcsIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNTcsIDU0LCAxMjgsIDY1LCA1MywgNTcsIDUzLCAxMjgsIDY1LCA1MywgNTcsIDUyLCAxMjgsIDY1LCA1MywgNTcsIAorICAgIDUwLCAxMjgsIDY1LCA1MywgNTcsIDQ5LCAxMjgsIDY1LCA1MywgNTYsIDU3LCAxMjgsIDY1LCA1MywgNTYsIDU2LCAxMjgsIAorICAgIDY1LCA1MywgNTYsIDU1LCAxMjgsIDY1LCA1MywgNTYsIDU0LCAxMjgsIDY1LCA1MywgNTYsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTYsIDUyLCAxMjgsIDY1LCA1MywgNTYsIDUxLCAxMjgsIDY1LCA1MywgNTYsIDUwLCAxMjgsIDY1LCA1MywgNTYsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MywgNTYsIDQ4LCAxMjgsIDY1LCA1MywgNTUsIDU3LCAxMjgsIDY1LCA1MywgNTUsIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNTUsIDU1LCAxMjgsIDY1LCA1MywgNTUsIDU0LCAxMjgsIDY1LCA1MywgNTUsIDUzLCAxMjgsIDY1LCA1MywgNTUsIAorICAgIDUyLCAxMjgsIDY1LCA1MywgNTUsIDUxLCAxMjgsIDY1LCA1MywgNTUsIDUwLCAxMjgsIDY1LCA1MywgNTUsIDQ5LCAxMjgsIAorICAgIDY1LCA1MywgNTUsIDQ4LCAxMjgsIDY1LCA1MywgNTQsIDU3LCAxMjgsIDY1LCA1MywgNTQsIDU2LCAxMjgsIDY1LCA1MywgCisgICAgNTQsIDU0LCAxMjgsIDY1LCA1MywgNTQsIDUzLCAxMjgsIDY1LCA1MywgNTQsIDUyLCAxMjgsIDY1LCA1MywgNTQsIDUxLCAKKyAgICAxMjgsIDY1LCA1MywgNTMsIDU3LCAxMjgsIDY1LCA1MywgNTMsIDU1LCAxMjgsIDY1LCA1MywgNTMsIDU0LCAxMjgsIDY1LCAKKyAgICA1MywgNTMsIDUzLCAxMjgsIDY1LCA1MywgNTMsIDUyLCAxMjgsIDY1LCA1MywgNTMsIDUxLCAxMjgsIDY1LCA1MywgNTMsIAorICAgIDUwLCAxMjgsIDY1LCA1MywgNTMsIDQ5LCAxMjgsIDY1LCA1MywgNTMsIDQ4LCAxMjgsIDY1LCA1MywgNTIsIDU3LCAxMjgsIAorICAgIDY1LCA1MywgNTIsIDU2LCAxMjgsIDY1LCA1MywgNTIsIDU1LCAxMjgsIDY1LCA1MywgNTIsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTIsIDUwLCAxMjgsIDY1LCA1MywgNTIsIDQ5LCAxMjgsIDY1LCA1MywgNTIsIDQ4LCAxMjgsIDY1LCA1MywgNTEsIDU3LCAKKyAgICAxMjgsIDY1LCA1MywgNTEsIDU2LCAxMjgsIDY1LCA1MywgNTEsIDU1LCAxMjgsIDY1LCA1MywgNTEsIDU0LCAxMjgsIDY1LCAKKyAgICA1MywgNTEsIDUzLCAxMjgsIDY1LCA1MywgNTEsIDUyLCAxMjgsIDY1LCA1MywgNTEsIDUwLCAxMjgsIDY1LCA1MywgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA1MywgNTEsIDQ4LCAxMjgsIDY1LCA1MywgNTAsIDU3LCAxMjgsIDY1LCA1MywgNTAsIDU2LCAxMjgsIAorICAgIDY1LCA1MywgNTAsIDU1LCAxMjgsIDY1LCA1MywgNTAsIDU0LCAxMjgsIDY1LCA1MywgNTAsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTAsIDUyLCAxMjgsIDY1LCA1MywgNTAsIDUxLCAxMjgsIDY1LCA1MywgNTAsIDUwLCAxMjgsIDY1LCA1MywgNTAsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MywgNTAsIDQ4LCAxMjgsIDY1LCA1MywgNDksIDU3LCAxMjgsIDY1LCA1MywgNDksIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNDksIDU1LCAxMjgsIDY1LCA1MywgNDksIDU0LCAxMjgsIDY1LCA1MywgNDksIDUzLCAxMjgsIDY1LCA1MywgNDksIAorICAgIDUyLCAxMjgsIDY1LCA1MywgNDksIDUxLCAxMjgsIDY1LCA1MywgNDksIDUwLCAxMjgsIDY1LCA1MywgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA1MywgNDksIDQ4LCAxMjgsIDY1LCA1MywgNDgsIDU3LCAxMjgsIDY1LCA1MywgNDgsIDU2LCAxMjgsIDY1LCA1MywgCisgICAgNDgsIDU1LCAxMjgsIDY1LCA1MywgNDgsIDU0LCAxMjgsIDY1LCA1MywgNDgsIDUzLCAxMjgsIDY1LCA1MywgNDgsIDUyLCAKKyAgICAxMjgsIDY1LCA1MywgNDgsIDUxLCAxMjgsIDY1LCA1MywgNDgsIDUwLCAxMjgsIDY1LCA1MywgNDgsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MiwgNTcsIDU1LCAxMjgsIDY1LCA1MiwgNTcsIDU0LCAxMjgsIDY1LCA1MiwgNTcsIDUzLCAxMjgsIDY1LCA1MiwgNTcsIAorICAgIDUyLCAxMjgsIDY1LCA1MiwgNTcsIDUxLCAxMjgsIDY1LCA1MiwgNTcsIDUwLCAxMjgsIDY1LCA1MiwgNTcsIDQ5LCAxMjgsIAorICAgIDY1LCA1MiwgNTcsIDQ4LCAxMjgsIDY1LCA1MiwgNTYsIDU3LCAxMjgsIDY1LCA1MiwgNTYsIDU2LCAxMjgsIDY1LCA1MiwgCisgICAgNTYsIDU1LCAxMjgsIDY1LCA1MiwgNTYsIDU0LCAxMjgsIDY1LCA1MiwgNTYsIDUzLCAxMjgsIDY1LCA1MiwgNTYsIDUyLCAKKyAgICAxMjgsIDY1LCA1MiwgNTYsIDUxLCAxMjgsIDY1LCA1MiwgNTYsIDUwLCAxMjgsIDY1LCA1MiwgNTYsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MiwgNTYsIDQ4LCAxMjgsIDY1LCA1MiwgNTUsIDU3LCAxMjgsIDY1LCA1MiwgNTUsIDU2LCAxMjgsIDY1LCA1MiwgNTUsIAorICAgIDU1LCAxMjgsIDY1LCA1MiwgNTUsIDU0LCAxMjgsIDY1LCA1MiwgNTUsIDUzLCAxMjgsIDY1LCA1MiwgNTUsIDUyLCAxMjgsIAorICAgIDY1LCA1MiwgNTUsIDUxLCAxMjgsIDY1LCA1MiwgNTUsIDUwLCAxMjgsIDY1LCA1MiwgNTUsIDQ5LCAxMjgsIDY1LCA1MiwgCisgICAgNTUsIDQ4LCAxMjgsIDY1LCA1MiwgNTQsIDU3LCAxMjgsIDY1LCA1MiwgNTQsIDU2LCAxMjgsIDY1LCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY1LCA1MiwgNTQsIDU0LCAxMjgsIDY1LCA1MiwgNTQsIDUzLCAxMjgsIDY1LCA1MiwgNTQsIDUyLCAxMjgsIDY1LCAKKyAgICA1MiwgNTQsIDUxLCAxMjgsIDY1LCA1MiwgNTQsIDUwLCAxMjgsIDY1LCA1MiwgNTQsIDQ5LCAxMjgsIDY1LCA1MiwgNTQsIAorICAgIDQ4LCAxMjgsIDY1LCA1MiwgNTMsIDU3LCAxMjgsIDY1LCA1MiwgNTMsIDU2LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCA2NSwgCisgICAgMTI4LCA2NSwgNTIsIDUzLCA1NSwgMTI4LCA2NSwgNTIsIDUzLCA1NCwgMTI4LCA2NSwgNTIsIDUzLCA1MywgMTI4LCA2NSwgCisgICAgNTIsIDUzLCA1MiwgMTI4LCA2NSwgNTIsIDUzLCA1MSwgMTI4LCA2NSwgNTIsIDUzLCA1MCwgMTI4LCA2NSwgNTIsIDUzLCAKKyAgICA0OSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNDgsIDEyOCwgNjUsIDUyLCA1MiwgNTcsIAorICAgIDEyOCwgNjUsIDUyLCA1MiwgNTYsIDEyOCwgNjUsIDUyLCA1MiwgNTUsIDEyOCwgNjUsIDUyLCA1MiwgNTQsIDEyOCwgNjUsIAorICAgIDUyLCA1MiwgNTMsIDEyOCwgNjUsIDUyLCA1MiwgNTIsIDEyOCwgNjUsIDUyLCA1MiwgNTEsIDEyOCwgNjUsIDUyLCA1MiwgCisgICAgNTAsIDEyOCwgNjUsIDUyLCA1MiwgNDksIDEyOCwgNjUsIDUyLCA1MiwgNDgsIDEyOCwgNjUsIDUyLCA1MSwgNTcsIDEyOCwgCisgICAgNjUsIDUyLCA1MSwgNTYsIDEyOCwgNjUsIDUyLCA1MSwgNTUsIDEyOCwgNjUsIDUyLCA1MSwgNTQsIDEyOCwgNjUsIDUyLCAKKyAgICA1MSwgNTMsIDEyOCwgNjUsIDUyLCA1MSwgNTIsIDEyOCwgNjUsIDUyLCA1MSwgNTEsIDEyOCwgNjUsIDUyLCA1MSwgNTAsIAorICAgIDEyOCwgNjUsIDUyLCA1MSwgNDksIDEyOCwgNjUsIDUyLCA1MSwgNDgsIDEyOCwgNjUsIDUyLCA1MCwgNTcsIDEyOCwgNjUsIAorICAgIDUyLCA1MCwgNTYsIDEyOCwgNjUsIDUyLCA1MCwgNTUsIDEyOCwgNjUsIDUyLCA1MCwgNTQsIDEyOCwgNjUsIDUyLCA1MCwgCisgICAgNTMsIDEyOCwgNjUsIDUyLCA1MCwgNTIsIDEyOCwgNjUsIDUyLCA1MCwgNTEsIDEyOCwgNjUsIDUyLCA1MCwgNTAsIDEyOCwgCisgICAgNjUsIDUyLCA1MCwgNDksIDEyOCwgNjUsIDUyLCA1MCwgNDgsIDEyOCwgNjUsIDUyLCA0OSwgNTcsIDEyOCwgNjUsIDUyLCAKKyAgICA0OSwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU2LCAxMjgsIDY1LCA1MiwgNDksIDU1LCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NSwgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgCisgICAgNjUsIDUyLCA0OSwgNTQsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUwLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCA0NSwgODYsIDY1LCA4MywgMTI4LCAKKyAgICA2NSwgNTIsIDQ5LCA0OSwgMTI4LCA2NSwgNTIsIDQ5LCA0OCwgMTkzLCA2NSwgNTIsIDQ5LCA0OCwgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OSwgMTc2LCA2NSwgNTIsIDQ4LCA1NywgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgCisgICAgNTcsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU2LCAxMjgsIDY1LCAKKyAgICA1MiwgNDgsIDU1LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgNDUsIAorICAgIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDUzLCAxMjgsIDY1LCA1MiwgNDgsIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAorICAgIDQ4LCA1MiwgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDEyOCwgCisgICAgNjUsIDUyLCA0OCwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDEyOCwgNjUsIDUxLCA1NywgNTcsIDEyOCwgNjUsIDUxLCA1NywgNTYsIDEyOCwgNjUsIAorICAgIDUxLCA1NywgNTUsIDEyOCwgNjUsIDUxLCA1NywgNTQsIDEyOCwgNjUsIDUxLCA1NywgNTMsIDEyOCwgNjUsIDUxLCA1NywgCisgICAgNTIsIDEyOCwgNjUsIDUxLCA1NywgMTc5LCA2NSwgNTEsIDU3LCA1MCwgMTI4LCA2NSwgNTEsIDU3LCA0OSwgMTI4LCA2NSwgCisgICAgNTEsIDU3LCA0OCwgMTI4LCA2NSwgNTEsIDU2LCA1NywgMTI4LCA2NSwgNTEsIDU2LCA1NiwgMTI4LCA2NSwgNTEsIDU2LCAKKyAgICA1NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDEyOCwgNjUsIDUxLCA1NiwgNTMsIAorICAgIDEyOCwgNjUsIDUxLCA1NiwgNTIsIDEyOCwgNjUsIDUxLCA1NiwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDE3OSwgNjUsIAorICAgIDUxLCA1NiwgNTAsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCAxMjgsIDY1LCA1MSwgCisgICAgNTYsIDQ4LCAxMjgsIDY1LCA1MSwgNTUsIDU3LCAxMjgsIDY1LCA1MSwgNTUsIDU2LCAxMjgsIDY1LCA1MSwgNTUsIDU1LCAKKyAgICAxMjgsIDY1LCA1MSwgNTUsIDU0LCAxMjgsIDY1LCA1MSwgNTUsIDUzLCAxMjgsIDY1LCA1MSwgNTUsIDUyLCAxMjgsIDY1LCAKKyAgICA1MSwgNTUsIDUxLCAxMjgsIDY1LCA1MSwgNTUsIDUwLCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIAorICAgIDU1LCA0OSwgMTI4LCA2NSwgNTEsIDU1LCA0OCwgMTI4LCA2NSwgNTEsIDU0LCA1NywgMTI4LCA2NSwgNTEsIDU0LCA1NiwgCisgICAgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTYsIDEyOCwgNjUsIDUxLCA1NCwgNTUsIDEyOCwgNjUsIDUxLCA1NCwgNTQsIDEyOCwgCisgICAgNjUsIDUxLCA1NCwgNTMsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDUyLCAxMjgsIDY1LCAKKyAgICA1MSwgNTQsIDUxLCAxMjgsIDY1LCA1MSwgNTQsIDUwLCAxMjgsIDY1LCA1MSwgNTQsIDQ5LCAxMjgsIDY1LCA1MSwgNTQsIAorICAgIDQ4LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUzLCA1NywgMTI4LCA2NSwgNTEsIDUzLCA1NiwgCisgICAgMTI4LCA2NSwgNTEsIDUzLCA1NSwgMTI4LCA2NSwgNTEsIDUzLCA1NCwgMTI4LCA2NSwgNTEsIDUzLCA1MywgMTI4LCA2NSwgCisgICAgNTEsIDUzLCA1MiwgMTI4LCA2NSwgNTEsIDUzLCA1MSwgMTI4LCA2NSwgNTEsIDUzLCA1MCwgMTI4LCA2NSwgNTEsIDUzLCAKKyAgICA0OSwgMTI4LCA2NSwgNTEsIDUzLCA0OCwgMTI4LCA2NSwgNTEsIDUyLCA1NywgMTI4LCA2NSwgNTEsIDUyLCA1NiwgMTI4LCAKKyAgICA2NSwgNTEsIDUyLCA1NSwgMTI4LCA2NSwgNTEsIDUyLCA1NCwgMTI4LCA2NSwgNTEsIDUyLCA1MywgMTI4LCA2NSwgNTEsIAorICAgIDUyLCA1MiwgMTI4LCA2NSwgNTEsIDUyLCA1MSwgMTI4LCA2NSwgNTEsIDUyLCA1MCwgMTI4LCA2NSwgNTEsIDUyLCA0OSwgCisgICAgMTI4LCA2NSwgNTEsIDUyLCA0OCwgMTI4LCA2NSwgNTEsIDUxLCA1NywgMTI4LCA2NSwgNTEsIDUxLCA1NiwgMTI4LCA2NSwgCisgICAgNTEsIDUxLCA1NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTEsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgMTI4LCA2NSwgNTEsIDUxLCA1MywgMTI4LCA2NSwgNTEsIAorICAgIDUxLCA1MiwgMTI4LCA2NSwgNTEsIDUxLCA1MSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgCisgICAgNTAsIDY2LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA0OSwgMTI4LCA2NSwgNTEsIDUxLCA0OCwgMTI4LCA2NSwgNTEsIDUwLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIAorICAgIDEyOCwgNjUsIDUxLCA1MCwgNTYsIDEyOCwgNjUsIDUxLCA1MCwgNTUsIDEyOCwgNjUsIDUxLCA1MCwgNTQsIDEyOCwgNjUsIAorICAgIDUxLCA1MCwgNTMsIDEyOCwgNjUsIDUxLCA1MCwgNTIsIDEyOCwgNjUsIDUxLCA1MCwgNTEsIDEyOCwgNjUsIDUxLCA1MCwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA1MCwgNDksIDEyOCwgNjUsIDUxLCA1MCwgNDgsIDEyOCwgNjUsIDUxLCA0OSwgNTcsIDEyOCwgCisgICAgNjUsIDUxLCA0OSwgNTYsIDEyOCwgNjUsIDUxLCA0OSwgNTUsIDEyOCwgNjUsIDUxLCA0OSwgNTQsIDEyOCwgNjUsIDUxLCAKKyAgICA0OSwgNTMsIDEyOCwgNjUsIDUxLCA0OSwgNTIsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY3LCAxMjgsIDY1LCA1MSwgNDksIAorICAgIDUxLCA2NiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDEyOCwgNjUsIDUxLCA0OSwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA0OSwgNDksIDEyOCwgNjUsIDUxLCA0OSwgNDgsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY3LCAKKyAgICAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjUsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIAorICAgIDEyOCwgNjUsIDUxLCA0OCwgNTYsIDEyOCwgNjUsIDUxLCA0OCwgNTUsIDEyOCwgNjUsIDUxLCA0OCwgNTQsIDEyOCwgNjUsIAorICAgIDUxLCA0OCwgNTMsIDEyOCwgNjUsIDUxLCA0OCwgNTIsIDEyOCwgNjUsIDUxLCA0OCwgNTEsIDEyOCwgNjUsIDUxLCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA0OCwgNDksIDEyOCwgNjUsIDUxLCA0OCwgNDgsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDY1LCAKKyAgICAxMjgsIDY1LCA1MCwgNTcsIDU3LCAxMjgsIDY1LCA1MCwgNTcsIDU2LCAxMjgsIDY1LCA1MCwgNTcsIDU1LCAxMjgsIDY1LCAKKyAgICA1MCwgNTcsIDU0LCAxMjgsIDY1LCA1MCwgNTcsIDUzLCAxMjgsIDY1LCA1MCwgNTcsIDUyLCA2NSwgMTI4LCA2NSwgNTAsIAorICAgIDU3LCA1MiwgMTI4LCA2NSwgNTAsIDU3LCA1MSwgMTI4LCA2NSwgNTAsIDU3LCA1MCwgMTI4LCA2NSwgNTAsIDU3LCA0OSwgCisgICAgMTI4LCA2NSwgNTAsIDU3LCA0OCwgMTI4LCA2NSwgNTAsIDU2LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDEyOCwgCisgICAgNjUsIDUwLCA1NiwgNTYsIDEyOCwgNjUsIDUwLCA1NiwgNTUsIDEyOCwgNjUsIDUwLCA1NiwgNTQsIDEyOCwgNjUsIDUwLCAKKyAgICA1NiwgNTMsIDEyOCwgNjUsIDUwLCA1NiwgNTIsIDEyOCwgNjUsIDUwLCA1NiwgNTEsIDEyOCwgNjUsIDUwLCA1NiwgNTAsIAorICAgIDEyOCwgNjUsIDUwLCA1NiwgNDksIDEyOCwgNjUsIDUwLCA1NiwgNDgsIDEyOCwgNjUsIDUwLCA1NSwgNTcsIDEyOCwgNjUsIAorICAgIDUwLCA1NSwgNTYsIDEyOCwgNjUsIDUwLCA1NSwgNTUsIDEyOCwgNjUsIDUwLCA1NSwgNTQsIDEyOCwgNjUsIDUwLCA1NSwgCisgICAgNTMsIDEyOCwgNjUsIDUwLCA1NSwgNTIsIDEyOCwgNjUsIDUwLCA1NSwgNTEsIDEyOCwgNjUsIDUwLCA1NSwgNTAsIDEyOCwgCisgICAgNjUsIDUwLCA1NSwgNDksIDEyOCwgNjUsIDUwLCA1NSwgNDgsIDEyOCwgNjUsIDUwLCA1NCwgNTcsIDEyOCwgNjUsIDUwLCAKKyAgICA1NCwgNTYsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCAxMjgsIDY1LCA1MCwgNTQsIAorICAgIDU0LCAxMjgsIDY1LCA1MCwgNTQsIDUzLCAxMjgsIDY1LCA1MCwgNTQsIDUyLCAxMjgsIDY1LCA1MCwgNTQsIDUxLCAxMjgsIAorICAgIDY1LCA1MCwgNTQsIDUwLCAxMjgsIDY1LCA1MCwgNTQsIDQ5LCAxMjgsIDY1LCA1MCwgNTQsIDQ4LCAxMjgsIDY1LCA1MCwgCisgICAgNTMsIDU3LCAxMjgsIDY1LCA1MCwgNTMsIDU2LCAxMjgsIDY1LCA1MCwgNTMsIDU1LCAxMjgsIDY1LCA1MCwgNTMsIDU0LCAKKyAgICAxMjgsIDY1LCA1MCwgNTMsIDUzLCAxMjgsIDY1LCA1MCwgNTMsIDUyLCAxMjgsIDY1LCA1MCwgNTMsIDUxLCAxMjgsIDY1LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDY1LCA1MCwgNTMsIDQ5LCAxMjgsIDY1LCA1MCwgNTMsIDQ4LCAxMjgsIDY1LCA1MCwgNTIsIAorICAgIDU3LCAxMjgsIDY1LCA1MCwgNTIsIDU2LCAxMjgsIDY1LCA1MCwgNTIsIDU1LCAxMjgsIDY1LCA1MCwgNTIsIDU0LCAxMjgsIAorICAgIDY1LCA1MCwgNTIsIDUzLCAxMjgsIDY1LCA1MCwgNTIsIDUyLCAxMjgsIDY1LCA1MCwgNTIsIDUxLCAxMjgsIDY1LCA1MCwgCisgICAgNTIsIDUwLCAxMjgsIDY1LCA1MCwgNTIsIDQ5LCAxMjgsIDY1LCA1MCwgNTIsIDQ4LCAxMjgsIDY1LCA1MCwgNTEsIDU3LCAKKyAgICAxMjgsIDY1LCA1MCwgNTEsIDU2LCAxMjgsIDY1LCA1MCwgNTEsIDU1LCAxMjgsIDY1LCA1MCwgNTEsIDU0LCAxMjgsIDY1LCAKKyAgICA1MCwgNTEsIDUzLCAxMjgsIDY1LCA1MCwgNTEsIDUyLCAxMjgsIDY1LCA1MCwgNTEsIDUxLCAxMjgsIDY1LCA1MCwgNTEsIAorICAgIDUwLCAxMjgsIDY1LCA1MCwgNTEsIDQ5LCAxMjgsIDY1LCA1MCwgNTEsIDQ4LCAxMjgsIDY1LCA1MCwgNTAsIDU3LCAxMjgsIAorICAgIDY1LCA1MCwgNTAsIDU2LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgMTI4LCA2NSwgCisgICAgNTAsIDUwLCA1NCwgMTI4LCA2NSwgNTAsIDUwLCA1MywgMTI4LCA2NSwgNTAsIDUwLCA1MiwgMTI4LCA2NSwgNTAsIDUwLCAKKyAgICA1MSwgMTI4LCA2NSwgNTAsIDUwLCA1MCwgMTI4LCA2NSwgNTAsIDUwLCA0OSwgMTI4LCA2NSwgNTAsIDUwLCA0OCwgMTI4LCAKKyAgICA2NSwgNTAsIDQ5LCA1NywgMTI4LCA2NSwgNTAsIDQ5LCA1NiwgMTI4LCA2NSwgNTAsIDQ5LCA1NSwgMTI4LCA2NSwgNTAsIAorICAgIDQ5LCA1NCwgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDY1LCA1MCwgNDksIDUyLCAxMjgsIDY1LCA1MCwgNDksIDUxLCAxMjgsIDY1LCA1MCwgNDksIDUwLCAKKyAgICAxMjgsIDY1LCA1MCwgNDksIDQ5LCAxMjgsIDY1LCA1MCwgNDksIDQ4LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCA2NSwgMTI4LCAKKyAgICA2NSwgNTAsIDQ4LCA1NywgMTI4LCA2NSwgNTAsIDQ4LCA1NiwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIAorICAgIDUwLCA0OCwgNTUsIDEyOCwgNjUsIDUwLCA0OCwgNTQsIDEyOCwgNjUsIDUwLCA0OCwgNTMsIDEyOCwgNjUsIDUwLCA0OCwgCisgICAgNTIsIDEyOCwgNjUsIDUwLCA0OCwgNTEsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDY2LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAKKyAgICA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgMTI4LCA2NSwgNTAsIDQ4LCA0OSwgMTI4LCA2NSwgNTAsIDQ4LCA0OCwgMTI4LCAKKyAgICA2NSwgNDksIDU3LCA1NywgMTI4LCA2NSwgNDksIDU3LCA1NiwgMTI4LCA2NSwgNDksIDU3LCA1NSwgMTI4LCA2NSwgNDksIAorICAgIDU3LCA1NCwgMTI4LCA2NSwgNDksIDU3LCA1MywgMTI4LCA2NSwgNDksIDU3LCA1MiwgMTI4LCA2NSwgNDksIDU3LCA1MSwgCisgICAgMTI4LCA2NSwgNDksIDU3LCA1MCwgMTI4LCA2NSwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNDksIDU3LCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDU2LCA1NywgMTI4LCA2NSwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNDksIDU2LCA1NSwgMTI4LCA2NSwgNDksIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNDksIDU2LCA1MywgMTI4LCA2NSwgNDksIDU2LCA1MiwgMTI4LCA2NSwgNDksIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNDksIDU2LCA1MCwgMTI4LCA2NSwgNDksIDU2LCA0OSwgMTI4LCA2NSwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNDksIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNDksIDU1LCA1NiwgMTI4LCA2NSwgNDksIDU1LCA1NSwgMTI4LCA2NSwgNDksIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNDksIDU1LCA1MywgMTI4LCA2NSwgNDksIDU1LCA1MiwgMTI4LCA2NSwgNDksIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNDksIDU1LCA1MCwgMTI4LCA2NSwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNDksIDU1LCA0OCwgMTI4LCA2NSwgNDksIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNDksIDU0LCA1NiwgMTI4LCA2NSwgNDksIDU0LCA1NSwgMTI4LCA2NSwgNDksIDU0LCA1NCwgMTI4LCAKKyAgICA2NSwgNDksIDU0LCA1MywgMTI4LCA2NSwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNDksIDU0LCA1MSwgMTI4LCA2NSwgNDksIAorICAgIDU0LCA1MCwgMTI4LCA2NSwgNDksIDU0LCA0OSwgMTI4LCA2NSwgNDksIDU0LCA0OCwgMTI4LCA2NSwgNDksIDUzLCA1NywgCisgICAgMTI4LCA2NSwgNDksIDUzLCA1NiwgMTI4LCA2NSwgNDksIDUzLCA1NSwgMTI4LCA2NSwgNDksIDUzLCA1NCwgMTI4LCA2NSwgCisgICAgNDksIDUzLCA1MywgMTI4LCA2NSwgNDksIDUzLCA1MiwgMTI4LCA2NSwgNDksIDUzLCA1MSwgMTI4LCA2NSwgNDksIDUzLCAKKyAgICA1MCwgMTI4LCA2NSwgNDksIDUzLCA0OSwgMTI4LCA2NSwgNDksIDUzLCA0OCwgMTI4LCA2NSwgNDksIDUyLCA1NywgMTI4LCAKKyAgICA2NSwgNDksIDUyLCA1NiwgMTI4LCA2NSwgNDksIDUyLCA1NSwgMTI4LCA2NSwgNDksIDUyLCA1NCwgMTI4LCA2NSwgNDksIAorICAgIDUyLCA1MywgMTI4LCA2NSwgNDksIDUyLCA1MiwgMTI4LCA2NSwgNDksIDUyLCA1MSwgMTI4LCA2NSwgNDksIDUyLCA1MCwgCisgICAgMTI4LCA2NSwgNDksIDUyLCA0OSwgMTI4LCA2NSwgNDksIDUyLCA0OCwgMTI4LCA2NSwgNDksIDUxLCA1NywgMTI4LCA2NSwgCisgICAgNDksIDUxLCA1NiwgMTI4LCA2NSwgNDksIDUxLCA1NSwgMTI4LCA2NSwgNDksIDUxLCA1NCwgMTI4LCA2NSwgNDksIDUxLCAKKyAgICA1MywgNjUsIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDEyOCwgNjUsIDQ5LCA1MSwgNTIsIDEyOCwgNjUsIDQ5LCA1MSwgNTEsIAorICAgIDEyOCwgNjUsIDQ5LCA1MSwgNTAsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDY3LCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCAxMjgsIAorICAgIDY1LCA0OSwgNTEsIDQ4LCAxMjgsIDY1LCA0OSwgNTAsIDU3LCAxMjgsIDY1LCA0OSwgNTAsIDU2LCAxMjgsIDY1LCA0OSwgCisgICAgNTAsIDU1LCAxMjgsIDY1LCA0OSwgNTAsIDU0LCAxMjgsIDY1LCA0OSwgNTAsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUwLCAKKyAgICA1MywgMTI4LCA2NSwgNDksIDUwLCA1MiwgMTI4LCA2NSwgNDksIDUwLCA1MSwgMTI4LCA2NSwgNDksIDUwLCA1MCwgMTI4LCAKKyAgICA2NSwgNDksIDUwLCA0OSwgMTI4LCA2NSwgNDksIDUwLCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA0OSwgNTcsIDEyOCwgNjUsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDQ5LCA0OSwgNTUsIDEyOCwgNjUsIDQ5LCA0OSwgCisgICAgNTQsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNDksIDUzLCAxMjgsIDY1LCA0OSwgNDksIDUyLCAKKyAgICAxMjgsIDY1LCA0OSwgNDksIDUxLCAxMjgsIDY1LCA0OSwgNDksIDUwLCAxMjgsIDY1LCA0OSwgNDksIDQ5LCAxMjgsIDY1LCAKKyAgICA0OSwgNDksIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA0OCwgNTcsIDEyOCwgNjUsIDQ5LCA0OCwgNTYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY3LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTQsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1MywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY2LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDUyLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgMTI4LCA2NSwgNDksIDQ4LCA1MSwgMTI4LCA2NSwgNDksIDQ4LCAKKyAgICA1MCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDY1LCAxMjgsIDY1LCA0OSwgNDgsIAorICAgIDQ5LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCisgICAgNjUsIDQ5LCA0OCwgNDgsIDEyOCwgNjUsIDQ4LCA1NywgNTcsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTcsIDU2LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgMTI4LCA2NSwgNDgsIAorICAgIDU3LCA1NCwgMTI4LCA2NSwgNDgsIDU3LCA1MywgMTI4LCA2NSwgNDgsIDU3LCA1MiwgMTI4LCA2NSwgNDgsIDU3LCA1MSwgCisgICAgMTI4LCA2NSwgNDgsIDU3LCA1MCwgMTI4LCA2NSwgNDgsIDU3LCA0OSwgMTI4LCA2NSwgNDgsIDU3LCA0OCwgMTI4LCA2NSwgCisgICAgNDgsIDU2LCA1NywgMTI4LCA2NSwgNDgsIDU2LCA1NiwgMTI4LCA2NSwgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNDgsIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNDgsIDU2LCA1MywgMTI4LCA2NSwgNDgsIDU2LCA1MiwgMTI4LCA2NSwgNDgsIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNDgsIDU2LCA0OCwgMTI4LCA2NSwgNDgsIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNDgsIDU1LCA1NSwgMTI4LCA2NSwgNDgsIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNDgsIDU1LCA1MywgMTI4LCA2NSwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNDgsIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNDgsIDU1LCA1MCwgMTI4LCA2NSwgNDgsIDU1LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNDgsIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNDgsIDU0LCA1NiwgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjcsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgCisgICAgMTI4LCA2NSwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIDU0LCA1MSwgMTI4LCA2NSwgCisgICAgNDgsIDU0LCA1MCwgMTI4LCA2NSwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNDgsIDUzLCAKKyAgICA1NywgMTI4LCA2NSwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNDgsIAorICAgIDUzLCA1MCwgMTI4LCA2NSwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNDgsIDUyLCA1NywgCisgICAgMTI4LCA2NSwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjYsIDEyOCwgCisgICAgNjUsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCA2NSwgMTI4LCAKKyAgICA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAxMjgsIDY1LCA0OCwgCisgICAgNTIsIDQ5LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNDgsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDY1LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIAorICAgIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIAorICAgIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDUwLCA1NiwgNjYsIDEyOCwgNjUsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA2NSwgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgCisgICAgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAKKyAgICAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCAKKyAgICA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIAorICAgIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBsZXhpY29uX29mZnNldFtdID0gewotICAgIDAsIDAsIDYsIDEwLCAxNCwgMjIsIDI3LCAzNCwgNDQsIDQ5LCA1OCwgNjQsIDY2LCA2OSwgODEsIDg5LCAxMDIsIDEwOCwgCi0gICAgMTEzLCAxMTgsIDEyNiwgMTM1LCAxNDYsIDE1MSwgMTU2LCAxNjEsIDE2NCwgMTY4LCAxNzcsIDE4MywgMTg5LCAxOTQsIAotICAgIDIwMSwgMjA5LCAyMTcsIDIxOCwgMjIxLCAyMjksIDE2NSwgMjM1LCAyNDQsIDI1MSwgMjYxLCAyNjcsIDI3NCwgMjc5LCAKLSAgICAyODIsIDI4NywgMjkzLCAyOTYsIDMwMCwgMzA1LCAzMTEsIDMxNywgMzIyLCAzMjcsIDMzMywgMzM5LCAzNDgsIDM1NSwgCi0gICAgMzYyLCAzNzEsIDM3NiwgMzgxLCAzODMsIDM5MSwgMzk5LCA0MDAsIDQwOCwgNDEwLCA0MTcsIDQyMCwgNDI2LCA0MzMsIAotICAgIDMzMSwgNDM4LCA0NDAsIDQ0MiwgNDQ5LCA0NTEsIDQ1NiwgNDY0LCA0NzEsIDQ3NiwgNDgwLCA0ODYsIDQ5MSwgNTAxLCAKLSAgICA1MDYsIDUxMywgNTE2LCA1MjQsIDUyOCwgNTM4LCA1NDUsIDU1NCwgNTYxLCA1NzAsIDU3NywgNTgwLCA1ODQsIDU5MiwgCi0gICAgNTk4LCA2MTEsIDYxOCwgNjIyLCA2MjYsIDYyNywgNjM2LCA2NDAsIDY0OSwgNjU1LCA2NTksIDY2MSwgNjY2LCA2NzQsIAotICAgIDY3OCwgNjg2LCA2OTEsIDY5NCwgNzAwLCA3MDMsIDcwNywgNzEyLCA3MjAsIDcyMywgNzMwLCA3MzUsIDc0NCwgNzUzLCAKLSAgICA3NjEsIDc2OSwgNzczLCA3NzksIDc4NywgNzk0LCA3OTcsIDgwNywgODExLCA4MTUsIDgyNiwgODMzLCA4NDAsIDg0NCwgCi0gICAgODQ4LCA4NTQsIDg0MiwgODYzLCA4NjksIDg3NCwgODc5LCA4ODMsIDg4NiwgODg5LCA4OTQsIDkwMywgOTExLCA5MTYsIAotICAgIDY1OCwgNTc1LCA5MjEsIDkyNCwgOTMwLCA5MzQsIDkzOCwgOTQ3LCA5NTMsIDk2MCwgOTY5LCA5NzYsIDk4OSwgOTk0LCAKLSAgICA5OTgsIDEwMDYsIDEwMDksIDEwMTUsIDEwMjEsIDEwMzAsIDEwMzcsIDEwNDUsIDEwNTIsIDEwNjIsIDEwNjksIDEwNzcsIAotICAgIDEwODYsIDEwOTAsIDEwOTMsIDExMDAsIDIxLCAxMTA0LCAxMTEzLCAxMTIxLCAxMTI4LCAxMTMxLCAxMTM2LCAxMTM4LCAKLSAgICAxMTQyLCAxMTUxLCAxMTU2LCAxMTU5LCAxMTY1LCAxMTcyLCAxMTc1LCAxMTgwLCAxMTg1LCAxMTkxLCAxMTk2LCAxMjAxLCAKLSAgICAxMjA2LCAxMjEwLCAxMjE1LCAxMjIxLCAxMjI2LCAxMjMxLCAxMjM1LCAxMjQxLCAxMjQ2LCAxMjUxLCAxMjU2LCAxMjYwLCAKLSAgICAxMjY1LCAxMjcwLCAxMjc1LCAxMjgxLCAxMjg3LCAxMjkzLCAxMjk4LCAxMzAyLCAxMzA3LCAxMzEyLCAxMzE3LCAxMzIxLCAKLSAgICAxMzI2LCAxMzMxLCAxMzM2LCAxMzQxLCAxMTc2LCAxMTgxLCAxMTg2LCAxMTkyLCAxMTk3LCAxMzQ1LCAxMjA3LCAxMzUxLCAKLSAgICAxMzU2LCAxMzYxLCAxMzY4LCAxMzcyLCAxMzc1LCAxMzg0LCAxMjExLCAxMzg4LCAxMjE2LCAxMjIyLCAxMjI3LCAxMzkyLCAKLSAgICAxMzk3LCAxNDAyLCAxNDA2LCAxNDEwLCAxNDE2LCAxNDIwLCAxMjMyLCAxNDIzLCAxNDI1LCAxMjQyLCAxNDMwLCAxNDM0LCAKLSAgICAxMjQ3LCAxNDQwLCAxMjUyLCAxNDQ0LCAxNDQ4LCAxMjU3LCAxNDUyLCAxNDU3LCAxNDYxLCAxNDY0LCAxNDY4LCAxMjYxLCAKLSAgICAxMjY2LCAxNDczLCAxNDc5LCAxMjcxLCAxNDkxLCAxNDk3LCAxNTAzLCAxNTA5LCAxMjc2LCAxMjg4LCAxMjk0LCAxNTEzLCAKLSAgICAxNTE3LCAxNTIxLCAxNTI0LCAxMjk5LCAxNTI4LCAxNTMwLCAxNTM1LCAxNTQwLCAxNTQ2LCAxNTUxLCAxNTU2LCAxNTYwLCAKLSAgICAxNTY1LCAxNTcwLCAxNTc1LCAxNTgwLCAxNTg2LCAxNTkxLCAxNTk2LCAxNjAyLCAxNjA4LCAxNjEzLCAxNjE3LCAxNjIyLCAKLSAgICAxNjI3LCAxNjMyLCAxNjM3LCAxNjQyLCAxNjQ2LCAxNjU0LCAxNjU5LCAxNjYzLCAxNjY4LCAxNjczLCAxNjc4LCAxNjgzLCAKLSAgICAxNjg3LCAxNjkwLCAxNjk3LCAxNzAyLCAxNzA3LCAxNzEyLCAxNzE3LCAxNzIzLCAxNzI4LCAxNzMyLCAxMzAzLCAxNzM1LCAKLSAgICAxNzQwLCAxNzQ1LCAxMzA4LCAxNzQ5LCAxNzUzLCAxNzYwLCAxMzEzLCAxNzY3LCAxMzE4LCAxNzcxLCAxNzczLCAxNzc4LCAKLSAgICAxNzg0LCAxMzIyLCAxNzg5LCAxNzk4LCAxMzI3LCAxODAzLCAxODA5LCAxODE0LCAxMzMyLCAxODE5LCAxODI0LCAxODI3LCAKLSAgICAxODMyLCAxODM2LCAxODQwLCAxODQ0LCAxODQ3LCAxODUxLCAxMzM3LCAxODU2LCAxMzQyLCAxODYwLCAxODYyLCAxODY4LCAKLSAgICAxODc0LCAxODgwLCAxODg2LCAxODkyLCAxODk4LCAxOTA0LCAxOTEwLCAxOTE1LCAxOTIxLCAxOTI3LCAxOTMzLCAxOTM5LCAKLSAgICAxOTQ1LCAxOTUxLCAxOTU3LCAxOTYzLCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg0LCAxOTg5LCAxOTk0LCAxOTk5LCAyMDA0LCAKLSAgICAyMDA5LCAyMDE0LCAyMDE5LCAyMDI1LCAyMDMwLCAyMDM2LCAyMDQxLCAyMDQ3LCAyMDUzLCAyMDU4LCAyMDY0LCAyMDcwLCAKLSAgICAyMDc2LCAyMDgyLCAyMDg3LCAyMDkyLCAyMDk0LCAyMDk1LCAyMDk5LCAyMTAzLCAyMTA4LCAyMTEyLCAyMTE2LCAyMTIwLCAKLSAgICAyMTI1LCAyMTI5LCAyMTMyLCAyMTM3LCAyMTQxLCAyMTQ2LCAyMTUwLCAyMTU0LCAyMTU5LCAyMTYzLCAyMTY2LCAyMTcwLCAKLSAgICAyMTc2LCAyMTkwLCAyMTk0LCAyMTk4LCAyMjAyLCAyMjA1LCAyMjEwLCAyMjE0LCAyMjE4LCAyMjIxLCAyMjI1LCAyMjMwLCAKLSAgICAyMjM1LCAyMjQwLCAyMjQ1LCAyMjQ5LCAyMjUzLCAyMjU3LCAyMjYxLCAyMjY2LCAyMjcwLCAyMjc1LCAyMjc5LCAyMjg0LCAKLSAgICAyMjkwLCAyMjk3LCAyMzAzLCAyMzA4LCAyMzEzLCAyMzE4LCAyMzI0LCAyMzI5LCAyMzM1LCAyMzQwLCAyMzQzLCAyMzQ1LCAKLSAgICAxMTkzLCAyMzQ5LCAyMzU2LCAyMzY0LCAyMzc0LCAyMzgzLCAyMzk3LCAyNDAxLCAyNDA1LCAyNDEwLCAyNDIzLCAyNDMxLCAKLSAgICAyNDM1LCAyNDQwLCAyNDQ0LCAyNDQ3LCAyNDUxLCAyNDU1LCAyNDYwLCAyNDY1LCAyNDcwLCAyNDc0LCAyNDc3LCAyNDgxLCAKLSAgICAyNDg4LCAyNDk1LCAyNTAxLCAyNTA2LCAyNTExLCAyNTE3LCAyNTIzLCAyNTI4LCAyNTMxLCAxNzc1LCAyNTMzLCAyNTM5LCAKLSAgICAyNTQzLCAyNTQ4LCAyNTUyLCAyNTU2LCAxNjkzLCAxNzg2LCAyNTYxLCAyNTY1LCAyNTY4LCAyNTczLCAyNTc4LCAyNTgzLCAKLSAgICAyNTg4LCAyNTkyLCAyNTk5LCAyNjA0LCAyNjA3LCAyNjE0LCAyNjIwLCAyNjI0LCAyNjI4LCAyNjMyLCAyNjM3LCAyNjQ0LCAKLSAgICAyNjQ5LCAyNjU0LCAyNjYxLCAyNjY3LCAyNjczLCAyNjc5LCAyNjkzLCAyNzEwLCAyNzI1LCAyNzQwLCAyNzQ5LCAyNzU0LCAKLSAgICAyNzU4LCAyNzYzLCAyNzY4LCAyNzcyLCAyNzg0LCAyNzkxLCAyNzk3LCAyMjkzLCAyODAzLCAyODEwLCAyODE2LCAyODIwLCAKLSAgICAyODIzLCAyODMwLCAyODM2LCAyODQxLCAyODQ1LCAyODUwLCAyODU0LCAyODU4LCAyMTE3LCAyODYyLCAyODY3LCAyODcyLCAKLSAgICAyODc2LCAyODgxLCAyODg5LCAyODkzLCAyODk4LCAyOTAyLCAyOTA2LCAyOTEwLCAyOTE1LCAyOTIwLCAyOTI1LCAyOTI5LCAKLSAgICAyOTM0LCAyOTM5LCAyOTQzLCAyOTQ4LCAyOTUyLCAyOTU1LCAyOTU5LCAyOTYzLCAyOTcxLCAyOTc2LCAyOTgwLCAyOTg0LCAKLSAgICAyOTkwLCAyOTk5LCAzMDAzLCAzMDA3LCAzMDEzLCAzMDE4LCAzMDI1LCAzMDI5LCAzMDM5LCAzMDQzLCAzMDQ3LCAzMDUyLCAKLSAgICAzMDU2LCAzMDYxLCAzMDY3LCAzMDcyLCAzMDc2LCAzMDgwLCAzMDg0LCAyNDkxLCAzMDkyLCAzMDk3LCAzMTAzLCAzMTA4LCAKLSAgICAzMTEyLCAzMTE3LCAzMTIyLCAzMTI2LCAzMTMyLCAzMTM3LCAyMTIxLCAzMTQzLCAzMTQ5LCAzMTU0LCAzMTU5LCAzMTY0LCAKLSAgICAzMTY5LCAzMTc0LCAzMTc5LCAzMTg0LCAzMTg5LCAzMTk0LCAzMjAwLCAzMjA1LCAxMjA4LCAxMDEsIDMyMTEsIDMyMTUsIAotICAgIDMyMTksIDMyMjMsIDMyMjgsIDMyMzIsIDMyMzYsIDMyNDIsIDMyNDcsIDMyNTEsIDMyNTUsIDMyNjAsIDMyNjUsIDMyNjksIAotICAgIDMyNzQsIDMyNzgsIDMyODEsIDMyODUsIDMyOTAsIDMyOTQsIDMyOTksIDMzMDMsIDMzMDYsIDMzMTAsIDMzMTQsIDMzMTksIAotICAgIDMzMjMsIDMzMjYsIDMzMzksIDMzNDMsIDMzNDcsIDMzNTEsIDMzNTYsIDMzNjAsIDMzNjQsIDMzNjcsIDMzNzEsIDMzNzUsIAotICAgIDMzODAsIDMzODQsIDMzODksIDMzOTQsIDMzOTksIDM0MDMsIDM0MDgsIDM0MTEsIDM0MTQsIDM0MTksIDM0MjUsIDM0MjksIAotICAgIDM0MzMsIDM0MzYsIDM0NDEsIDM0NDUsIDM0NTAsIDM0NTQsIDM0NTgsIDM0NjEsIDM0NjcsIDM0NzIsIDM0NzcsIDM0ODMsIAotICAgIDM0ODgsIDM0OTMsIDM0OTksIDM1MDUsIDM1MTAsIDM1MTUsIDM1MjAsIDM1MjUsIDExNDAsIDU3OSwgMzUyOCwgMzUzMSwgCi0gICAgMzUzNiwgMzU0MCwgMzU0NCwgMzU0OCwgMzU1MiwgMzU1NSwgMzU1OSwgMzU2NCwgMzU2OSwgMzU3MywgMzU3OCwgMzU4MiwgCi0gICAgMzU4NywgMzU5MSwgMzU5NSwgMzU5OSwgMzYwNSwgMzYxMSwgMzYxNCwgMzYxNywgMTM5LCAzNjIzLCAzNjI4LCAzNjM3LCAKLSAgICAzNjQ1LCAzNjU0LCAzNjYxLCAzNjY3LCAzNjc0LCAzNjc5LCAzNjgzLCAzNjg3LCAzNjk1LCAzNzAyLCAzNzA3LCAzNzE0LCAKLSAgICAzNzE5LCAzNzIzLCAzNzMzLCAzNzM3LCAzNzQxLCAzNzQ2LCAzNzUxLCAzNzYxLCAyMTMzLCAzNzY2LCAzNzcwLCAzNzczLCAKLSAgICAzNzc5LCAzNzg0LCAzNzkwLCAzNzk2LCAzODAxLCAzODA4LCAzODEyLCAzODE2LCA2MzcsIDcwMSwgMTM2OSwgMzgyMCwgCi0gICAgMzgyNywgMzgzNCwgMzg0MCwgMzg0NSwgMzg1MiwgMzg1OSwgMzg2NCwgMzg3MCwgMzg3NiwgMzg4MSwgMzg4NSwgMzg5MSwgCi0gICAgMzg5OCwgMzkwMywgMzkwNywgMjE0MiwgMzkxMSwgMzkxOSwgMzkyNSwgMzkzMywgNzM5LCAzOTM5LCAzOTQ3LCAzOTU4LCAKLSAgICAzOTYyLCAzOTcyLCAyMTQ3LCAzOTc4LCAzOTgzLCAzOTk4LCA0MDA0LCA0MDExLCA0MDIxLCA0MDI3LCA0MDMyLCA0MDM4LCAKLSAgICA0MDQ0LCA0MDQ3LCA0MDUwLCA0MDU0LCA0MDU5LCA0MDY2LCA0MDcxLCA0MDc1LCA0MDc5LCA0MDgzLCA0MDg3LCA0MDkyLCAKLSAgICA0MDk4LCA0MTA5LCA0MTEzLCAzMjg2LCA0MTE4LCA0MTMwLCA0MTM2LCA0MTQ0LCA0MTQ4LCA0MTUzLCAxNTYyLCA0MTYwLCAKLSAgICA0MTYzLCA0MTY2LCA0MTcwLCA0MTczLCA0MTc5LCA0MTgzLCA0MTk3LCA0MjAxLCA0MjA0LCA0MjA4LCA0MjE0LCA0MjIwLCAKLSAgICA0MjI1LCA0MjI5LCA0MjMzLCA0MjM5LCA0MjUwLCA0MjU2LCA0MjYxLCA0MjY3LCA0MjcxLCA0Mjc5LCA0MjkxLCA0MzAxLCAKLSAgICA0MzA3LCA0MzEyLCA0MzIxLCA0MzI5LCA0MzM2LCA0MzQyLCA0MzQ2LCA0MzUyLCA0MzYxLCA0MzcwLCA0Mzc0LCA0MzgzLCAKLSAgICA0Mzg4LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA5LCA0NDE1LCA0NDE5LCA0NDI0LCA0NDI4LCA0NDM0LCAyMTU1LCAxMzg1LCAKLSAgICA0NDQwLCA0NDQ1LCA0NDUxLCA0NDU2LCA0NDYxLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg3LCA0NDkyLCA0NDk4LCAKLSAgICA0NTAzLCA0NTA4LCA0NTEzLCA0NTE5LCA0NTI0LCA0NTI5LCA0NTM0LCA0NTM5LCA0NTQ1LCA0NTUwLCA0NTU2LCA0NTYxLCAKLSAgICA0NTY2LCA0NTcxLCA0NTc2LCA0NTgxLCA0NTg2LCA0NTkyLCA0NTk3LCA0NjAyLCAyOTEsIDMyMSwgNDYwNywgNDYxMywgCi0gICAgNDYxNywgNDYyMSwgNDYyNiwgNDYzMCwgNDYzNCwgNDYzNywgNDY0MSwgNDY0NSwgNDY0OSwgNDY1MywgNDY1NywgNDY2MiwgCi0gICAgNDY2NiwgNDY3MCwgNDY3NiwgNDQzNywgNDY4MSwgNDY4NSwgNDY4OCwgNDY5MywgNDY5OCwgNDcwMywgNDcwOCwgNDcxMywgCi0gICAgNDcxOCwgNDcyMywgNDcyOCwgNDczMywgNDczOCwgNDc0MiwgNDc0NywgNDc1MiwgNDc1NywgNDc2MiwgNDc2NywgNDc3MiwgCi0gICAgNDc3NywgNDc4MiwgNDc4NywgNDc5MiwgNDc5NiwgNDgwMSwgNDgwNiwgNDgxMSwgNDgxNiwgNDgyMSwgNDgyNiwgNDgzMSwgCi0gICAgNDgzNiwgNDg0MSwgNDg0NiwgNDg1MCwgNDg1NSwgNDg2MCwgNDg2NSwgNDg3MCwgNDg3NSwgNDg4MCwgNDg4NSwgNDg5MCwgCi0gICAgNDg5NSwgNDkwMCwgNDkwNCwgNDkwOSwgNDkxNCwgNDkxOSwgNDkyNCwgNDkyOSwgNDkzNCwgNDkzOSwgNDk0NCwgNDk0OSwgCi0gICAgNDk1NCwgNDk1OCwgNDk2MywgNDk2OCwgNDk3MywgNDk3OCwgNDk4MywgNDk4OCwgNDk5MywgNDk5OCwgNTAwMywgNTAwOCwgCi0gICAgNTAxMiwgNTAxNywgNTAyMiwgNTAyNywgNTAzMiwgNTAzNywgNTA0MiwgNTA0NywgNTA1MiwgNTA1NywgNTA2MiwgNTA2NiwgCi0gICAgNTA3MSwgNTA3NiwgNTA4MSwgNTA4NiwgNTA5MiwgNTA5OCwgNTEwNCwgNTExMCwgNTExNiwgNTEyMiwgNTEyOCwgNTEzMywgCi0gICAgNTEzOSwgNTE0NSwgNTE1MSwgNTE1NywgNTE2MywgNTE2OSwgNTE3NSwgNTE4MSwgNTE4NywgNTE5MywgNTE5OCwgNTIwNCwgCi0gICAgNTIxMCwgNTIxNiwgNTIyMiwgNTIyOCwgNTIzNCwgNTI0MCwgNTI0NiwgNTI1MiwgNTI1OCwgNTI2MywgNTI2OSwgNTI3NSwgCi0gICAgNTI4MSwgNTI4NywgNTI5MywgNTI5OSwgNTMwNSwgNTMxMSwgNTMxNywgNTMyMywgNTMyOCwgNTMzNCwgNTM0MCwgNTM0NiwgCi0gICAgNTM1MiwgNTM1OCwgNTM2NCwgNTM3MCwgNTM3NiwgNTM4MiwgNTM4OCwgNTM5MywgNTM5OSwgNTQwNSwgNTQxMSwgNTQxNywgCi0gICAgNTQyMywgNTQyOSwgNTQzNSwgNTQ0MSwgNTQ0NywgNTQ1MywgNTQ1OCwgNTQ2MiwgNTQ2OCwgNTQ3NCwgNTQ4MCwgNTQ4NiwgCi0gICAgNTQ5MiwgNTQ5OCwgNTUwNCwgNTUxMCwgNTUxNiwgNTUyMiwgNTUyNywgNTUzMywgNTUzOSwgNTU0NSwgNTU1MSwgNTU1NywgCi0gICAgNTU2MywgNTU2OSwgNTU3NSwgNTU4MSwgNTU4NywgNTU5MiwgNTU5OCwgNTYwNCwgNTYxMCwgNTYxNiwgNTYyMiwgNTYyOCwgCi0gICAgNTYzNCwgNTY0MCwgNTY0NiwgNTY1MiwgNTY1NywgNTY2MywgNTY2OSwgNTY3NSwgNTY4MSwgNTY4NywgNTY5MywgNTY5OSwgCi0gICAgNTcwNSwgNTcxMSwgNTcxNywgNTcyMiwgNTcyOCwgNTczNCwgNTc0MCwgNTc0NiwgNTc1MiwgNTc1OCwgNTc2NCwgNTc3MCwgCi0gICAgNTc3NiwgNTc4MiwgNTc4NywgNTc5MywgNTc5OSwgNTgwNSwgNTgxMSwgNTgxNywgNTgyMywgNTgyOSwgNTgzNSwgNTg0MSwgCi0gICAgNTg0NywgNTg1MiwgNTg1OCwgNTg2NCwgNTg3MCwgNTg3NiwgNTg4MiwgNTg4OCwgNTg5NCwgNTkwMCwgNTkwNiwgNTkxMiwgCi0gICAgNTkxNywgNTkyMywgNTkyOSwgNTkzNSwgNTk0MSwgNTk0NywgNTk1MywgNTk1OSwgNTk2NSwgNTk3MSwgNTk3NywgNTk4MiwgCi0gICAgNTk4OCwgNTk5NCwgNjAwMCwgNjAwNiwgNjAxMiwgNjAxOCwgNjAyNCwgNjAzMCwgNjAzNiwgNjA0MiwgNjA0NywgNjA1MywgCi0gICAgNjA1OSwgNjA2NSwgNjA3MSwgNjA3NywgNjA4MywgNjA4OSwgNjA5NSwgNjEwMSwgNjEwNywgNjExMiwgNjExNiwgNjExOSwgCi0gICAgNjEyNiwgNjEzMCwgNjE0MywgNjE0NywgNjE1MSwgNjE1NSwgNjE1OCwgNjE2MiwgNjE2NywgNjE3MSwgNjE3NSwgNjE4MSwgCi0gICAgNjE4OCwgNjE5OSwgNjIwNywgNjIxNCwgNjIxOCwgNjIyNiwgNjIzNSwgNjI0MSwgNjI1MywgNjI1OCwgNjI2MSwgNjI2NiwgCi0gICAgNjI3MCwgNjI4MCwgNjI4OCwgNjI5NiwgNjMwMiwgNjMwNiwgNjMxNiwgNjMyNiwgNjMzNCwgNjM0MSwgNjM0OCwgNjM1NCwgCi0gICAgNjM2MCwgNjM2NywgNjM3MSwgNjM3OCwgNjM4OCwgNjM5OCwgNjQwNiwgNjQxMywgNjQxOCwgNjQyMiwgNjQyNiwgNjQzNCwgCi0gICAgNjQzOCwgNjQ0MywgNjQ1MCwgNjQ1OCwgNjQ2MywgNjQ2NywgNjQ3MiwgNjQ3NiwgNjQ4MywgNjQ4OCwgNjUwMiwgNjUwNywgCi0gICAgNjUxMiwgNjUxOSwgMzU0MSwgNjUyOCwgNjUzMiwgNjUzNywgNjU0MSwgNjU0NSwgNjU0OCwgNjU1MywgNjU1OCwgNjU2NywgCi0gICAgNjU3MywgNjU3OSwgNjU4NSwgNjU4OSwgNjYwMCwgNjYxMCwgNjYyNSwgNjY0MCwgNjY1NSwgNjY3MCwgNjY4NSwgNjcwMCwgCi0gICAgNjcxNSwgNjczMCwgNjc0NSwgNjc2MCwgNjc3NSwgNjc5MCwgNjgwNSwgNjgyMCwgNjgzNSwgNjg1MCwgNjg2NSwgNjg4MCwgCi0gICAgNjg5NSwgNjkxMCwgNjkyNSwgNjk0MCwgNjk1NSwgNjk3MCwgNjk4NSwgNzAwMCwgNzAxNSwgNzAzMCwgNzA0NSwgNzA2MCwgCi0gICAgNzA3NSwgNzA5MCwgNzEwNSwgNzEyMCwgNzEzNSwgNzE1MCwgNzE2NSwgNzE4MCwgNzE5NSwgNzIxMCwgNzIyNSwgNzI0MCwgCi0gICAgNzI1NSwgNzI3MCwgNzI4NSwgNzMwMCwgNzMxNSwgNzMzMCwgNzM0NSwgNzM1NCwgNzM2MywgNzM2OCwgNzM3NCwgNzM4NCwgCi0gICAgNzM4OCwgNzM5MiwgNzM5NywgNzQwMiwgNzQxMCwgNzQxNCwgNzQxNywgNzQyMSwgMzAzNCwgNzQyNCwgNzQyOSwgMzMwLCAKLSAgICA1MDQsIDc0MzUsIDc0NDMsIDc0NDcsIDc0NTEsIDc0NTQsIDc0NTgsIDc0NjQsIDc0NjgsIDc0NzYsIDc0ODIsIDc0ODcsIAotICAgIDc0OTQsIDc1MDIsIDc1MDksIDc1MTUsIDc1MjAsIDc1MjcsIDc1MzMsIDc1NDEsIDc1NDUsIDc1NTAsIDc1NjIsIDc1NzMsIAotICAgIDc1ODAsIDc1ODQsIDc1ODgsIDc1OTIsIDc1OTUsIDc2MDEsIDMzMTEsIDc2MDUsIDc2MTEsIDc2MTYsIDc2MjEsIDc2MjYsIAotICAgIDc2MzIsIDc2MzcsIDc2NDIsIDc2NDcsIDc2NTIsIDc2NTgsIDc2NjMsIDc2NjgsIDc2NzQsIDc2NzksIDc2ODUsIDc2OTAsIAotICAgIDc2OTYsIDc3MDEsIDc3MDcsIDc3MTIsIDc3MTcsIDc3MjIsIDc3MjcsIDc3MzIsIDc3MzgsIDc3NDMsIDc3NDgsIDc3NTMsIAotICAgIDc3NTksIDc3NjUsIDc3NzEsIDc3NzcsIDc3ODMsIDc3ODksIDc3OTUsIDc4MDEsIDc4MDcsIDc4MTMsIDc4MTksIDc4MjUsIAotICAgIDc4MzAsIDc4MzUsIDc4NDAsIDc4NDUsIDc4NTAsIDc4NTUsIDc4NjAsIDc4NjUsIDc4NzEsIDc4NzcsIDc4ODIsIDc4ODgsIAotICAgIDc4OTQsIDc5MDAsIDc5MDUsIDc5MTAsIDc5MTUsIDc5MjAsIDc5MjYsIDc5MzIsIDc5MzcsIDc5NDIsIDc5NDcsIDc5NTIsIAotICAgIDc5NTcsIDc5NjMsIDc5NjgsIDc5NzQsIDc5ODAsIDc5ODYsIDc5OTIsIDc5OTgsIDgwMDQsIDgwMTAsIDgwMTYsIDgwMjIsIAotICAgIDIxNjQsIDc0NTMsIDgwMjcsIDgwMzEsIDgwMzUsIDgwMzgsIDgwNDUsIDgwNDgsIDgwNTIsIDgwNjAsIDgwNjUsIDgwNzAsIAotICAgIDgwNjEsIDgwNzUsIDIxOTEsIDgwNzksIDgwODUsIDgwOTEsIDgwOTYsIDgxMDEsIDgxMDgsIDgxMTYsIDgxMjEsIDgxMjUsIAotICAgIDgxMjgsIDgxMzIsIDgxMzgsIDgxNDQsIDgxNDgsIDIxOTksIDUyNiwgODE1MSwgODE1NSwgODE2MCwgODE2NiwgODE3MSwgCi0gICAgODE3NSwgODE3OCwgODE4MiwgODE4OCwgODE5MywgODE5NywgODIwNCwgODIwOCwgODIxMiwgODIxNiwgODc2LCA5NTgsIAotICAgIDgyMTksIDgyMjcsIDgyMzQsIDgyNDAsIDgyNDcsIDgyNTUsIDgyNjIsIDgyNzMsIDgyODAsIDgyODYsIDgyOTEsIDgzMDMsIAotICAgIDEyMjgsIDEzOTMsIDEzOTgsIDgzMTQsIDE0MDMsIDgzMTgsIDgzMjIsIDgzMzEsIDgzMzksIDgzNDMsIDgzNTIsIDgzNTgsIAotICAgIDgzNjMsIDgzNjcsIDgzNzMsIDgzNzgsIDgzODUsIDI3NDUsIDgzOTIsIDgzOTYsIDg0MDUsIDg0MTQsIDg0MjMsIDg0MzIsIAotICAgIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTksIDg0NzEsIDg0NzYsIDg0ODQsIDIyNTAsIDg0ODgsIDg0OTAsIDg0OTUsIDg0OTksIAotICAgIDg1MDgsIDg1MTYsIDE0MDcsIDE1OSwgMzU4MywgMzU4OCwgODUyMiwgODUyNiwgODUzNSwgODU0MSwgODU0NiwgODU0OSwgCi0gICAgODU1OCwgMzU5MiwgMjczNywgODU2NCwgODU3MiwgODU3NiwgODU4MCwgODU4NCwgMjI2NywgODU4OCwgODU5MywgODYwMCwgCi0gICAgODYwNiwgODYxMiwgODYxNSwgODYxNywgODYyMCwgODYyOCwgODYzNiwgODY0NCwgODY0NywgODY1MiwgMjI4MCwgODY1NywgCi0gICAgODA3MiwgODY2MCwgODY2MiwgODY2NywgODY3MiwgODY3NywgODY4MiwgODY4NywgODY5MiwgODY5NywgODcwMiwgODcwNywgCi0gICAgODcxMiwgODcxOCwgODcyMywgODcyOCwgODczMywgODczOSwgODc0NCwgODc0OSwgODc1NCwgODc1OSwgODc2NCwgODc2OSwgCi0gICAgODc3NSwgODc4MCwgODc4NSwgODc5MCwgODc5NSwgODgwMCwgODgwNSwgODgxMCwgODgxNSwgODgyMCwgODgyNSwgODgzMCwgCi0gICAgODgzNSwgODg0MCwgODg0NSwgODg1MCwgODg1NSwgODg2MCwgODg2NiwgODg3MiwgODg3NywgODg4MiwgODg4NywgODg5MiwgCi0gICAgODg5NywgMjI5MSwgMjI5OCwgMjMwNCwgODkwMiwgODkxMCwgODkxNiwgODkyNCwgMjMzMCwgMjMzNiwgODkzMiwgODkzNiwgCi0gICAgODk0MSwgODk0NSwgODk0OSwgODk1MywgODk1OCwgODk2MiwgODk2NywgODk3MSwgODk3NCwgODk3NywgODk4MywgODk5MCwgCi0gICAgODk5NiwgOTAwMywgOTAwOSwgOTAxNiwgOTAyMiwgOTAyOSwgOTAzNSwgOTA0MSwgOTA1MCwgOTA1NiwgOTA2MCwgOTA2NCwgCi0gICAgOTA2OCwgOTA3MiwgOTA3NywgOTA4MSwgOTA4NiwgOTA5MCwgOTA5NiwgOTEwMSwgOTEwOCwgOTExOSwgOTEyNywgOTEzNywgCi0gICAgOTE0MywgOTE1MywgOTE2MiwgOTE2OSwgOTE3NCwgOTE3OCwgOTE4OSwgOTIwMiwgOTIxMywgOTIyNiwgOTIzNywgOTI0OSwgCi0gICAgOTI2MSwgOTI3MywgOTI4NiwgOTI5OSwgOTMwNiwgOTMxMiwgOTMyNiwgOTMzMywgOTMzOSwgOTM0OCwgOTM1NiwgOTM2MCwgCi0gICAgOTM2NSwgOTM2OSwgOTM3NiwgOTM4NCwgOTM4OCwgOTM5NCwgOTM5OCwgOTQwNCwgOTQxNCwgOTQxOCwgOTQyMywgOTQyOCwgCi0gICAgOTQzNSwgOTQ0MSwgOTQ1MSwgODI0MiwgOTQ1NywgOTQ2MSwgOTQ2OCwgOTQ3NCwgOTQ4MSwgOTQ4OCwgOTU3LCA5NDkyLCAKLSAgICA5NDk2LCA5NTAxLCA5NTA2LCA5NTExLCA5NTE1LCA5NTIxLCA5NTI5LCA5NTM1LCA5NTM5LCA5NTQyLCA5NTQ4LCA5NTU4LCAKLSAgICA5NTYyLCA5NTY4LCA5NTczLCA5NTc3LCA5NTgxLCA5NTg3LCA5NTkzLCAyMTg3LCA5NTk4LCA5NjAwLCA5NjA1LCA5NjEzLCAKLSAgICA5NjIyLCA5NjI2LCA5NjMyLCA5NjM3LCA5NjQyLCA5NjQ3LCA5NjUyLCA5NjU4LCA5NjYzLCA5NjY4LCA0MjM1LCA5NjczLCAKLSAgICA5Njc4LCA5NjgyLCA5Njg4LCA5NjkzLCA5Njk5LCA5NzA0LCA5NzA5LCA5NzE1LCA5NzIwLCA5NjI3LCA5NzI2LCA5NzMwLCAKLSAgICA5NzM3LCA5NzQzLCA5NzQ4LCA5NzUyLCA2NDk4LCA5NzU3LCA5NzY2LCA5NzcxLCA5Nzc2LCA4NTk2LCA4NjAzLCA5NzgxLCAKLSAgICAyOTEyLCA5Nzg1LCA5NzkwLCA5Nzk1LCA5ODAwLCA5NjM4LCA5ODA0LCA5ODA5LCA5ODE0LCA5NjQzLCA5ODE4LCA5NjQ4LCAKLSAgICA5ODIzLCA5ODMwLCA5ODM3LCA5ODQzLCA5ODUwLCA5ODU2LCA5ODYyLCA5ODY3LCA5ODc0LCA5ODc5LCA5ODg0LCA5ODg5LCAKLSAgICA5ODk1LCA5NjUzLCA5NjU5LCA5OTAxLCA5OTA3LCA5OTEyLCA5OTE3LCA5OTI1LCA5NjY0LCA5OTMwLCAxMTAyLCA5OTMzLCAKLSAgICA5OTQxLCA5OTQ3LCA5OTUzLCA5OTYyLCA5OTcwLCA5OTc4LCA5OTg2LCA5OTk0LCAxMDAwMiwgMTAwMTAsIDEwMDE4LCAKLSAgICAxMDAyNiwgMTAwMzUsIDEwMDQ0LCAxMDA1MiwgMTAwNjEsIDEwMDcwLCAxMDA3OSwgMTAwODgsIDEwMDk3LCAxMDEwNiwgCi0gICAgMTAxMTUsIDEwMTI0LCAxMDEzMywgMTAxNDIsIDEwMTUwLCAxMDE1NSwgMTAxNjEsIDEwMTY5LCAxMDE3NiwgMTAxOTEsIAotICAgIDEwMjA4LCAxMDIyNywgMTAyMzYsIDEwMjQ0LCAxMDI1OSwgMTAyNzAsIDEwMjgwLCAxMDI5MCwgMTAyOTgsIDEwMzA0LCAKLSAgICAxMDMxNiwgMTAzMjUsIDEwMzMzLCAxMDM0MCwgMTAzNDcsIDEwMzU0LCAxMDM2MCwgMTAzNjUsIDEwMzc1LCAxMDM4MywgCi0gICAgMTAzOTMsIDEwNDAwLCAxMDQxMCwgMTA0MjAsIDEwNDMwLCAxMDQzOCwgMTA0NDUsIDEwNDU0LCAxMDQ2NCwgMTA0NzgsIAotICAgIDEwNDkzLCAxMDUwMiwgMTA1MTAsIDEwNTE1LCAxMDUxOSwgMTA1MjgsIDEwNTM0LCAxMDUzOSwgMTA1NDksIDEwNTU5LCAKLSAgICAxMDU2OSwgMTA1NzQsIDEwNTc4LCAxMDU4NywgMTA1OTIsIDEwNjA4LCAxMDYyNSwgMTA2MzUsIDEwNjQ2LCAxMDY1OSwgCi0gICAgMTA2NjcsIDEwNjgwLCAxMDY5MiwgMTA3MDAsIDEwNzA1LCAxMDcwOSwgMTA3MTUsIDEwNzIwLCAxMDcyOCwgMTA3MzYsIAotICAgIDEwNzQzLCAxMDc0OCwgMTA3NTYsIDEwNzY2LCAxMDc3MiwgMTA3NzYsIDEwNzc5LCAxMDc4MywgMTA3ODksIDEwNzk2LCAKLSAgICAxMDgwMCwgMTA4MDgsIDEwODE3LCAxMDgyNSwgMTA4MzIsIDEwODM3LCAxMDg0MiwgMTA4NDYsIDEwODUwLCAxMDg1OCwgCi0gICAgMTA4NzMsIDEwODg5LCAxMDg5NSwgMTA5MDMsIDEwOTEyLCAxMDkyMCwgMTA5MjYsIDEwOTMwLCAxMDkzNywgMTA5NDgsIAotICAgIDEwOTUyLCAxMDk1NSwgMTA5NjEsIDk2NjksIDEwOTY2LCAxMDk3MiwgMTA5NzksIDEwOTg1LCAxMDk5MCwgMTA5OTcsIAotICAgIDExMDA0LCAxMTAxMSwgMTEwMTgsIDExMDI1LCAxMTAzMiwgMTEwMzksIDExMDQ2LCAxMTA1MSwgMTAyMDQsIDExMDU2LCAKLSAgICAxMTA2MiwgMTEwNjksIDExMDc2LCAxMTA4MSwgMTEwODgsIDExMDk3LCAxMTEwMSwgMTExMTMsIDg2MzQsIDExMTE3LCAKLSAgICAxMTEyMCwgMTExMjQsIDExMTI4LCAxMTEzMiwgMTExMzYsIDExMTQyLCAxMTE0OCwgMTExNTMsIDExMTU5LCAxMTE2NCwgCi0gICAgMTExNjksIDExMTc1LCAxMTE4MCwgMTExODUsIDk0MzEsIDExMTkwLCAxMTE5NCwgMTExOTgsIDExMjAyLCAxMTIwNywgCi0gICAgMTEyMTIsIDExMjE3LCAxMTIyNSwgMTEyMzEsIDExMjM2LCAxMTI0MCwgMTEyNDQsIDExMjUxLCAxMTI1NiwgMTEyNjQsIAotICAgIDExMjcxLCAxMTI3NiwgMTEyODAsIDExMjgzLCAxMTI4OSwgMTEyOTYsIDExMzAwLCAxMTMwMywgMTEzMDgsIDExMzEyLCAKLSAgICA0Mjc0LCAxMTMxOCwgMTEzMjcsIDQ2LCAxMTMzNSwgMTEzNDEsIDExMzQ2LCAxMTM1MSwgMTEzNTksIDExMzY2LCAxMTM3MSwgCi0gICAgOTQ0NiwgMTEzNzcsIDExMzgzLCAxMTM4OCwgMTEzOTIsIDExMzk1LCAxMTQxMCwgMTE0MjksIDExNDQxLCAxMTQ1NCwgCi0gICAgMTE0NjcsIDExNDgwLCAxMTQ5NCwgMTE1MDcsIDExNTIyLCAxMTUyOSwgOTY3NCwgMTE1MzUsIDExNTQ5LCAxMTU1NCwgCi0gICAgMTE1NjAsIDExNTY1LCAxMTU3MywgMTE1NzgsIDg0MDEsIDExNTgzLCAxMTU4NiwgMTE1OTQsIDExNjAxLCAxMTYwNiwgCi0gICAgMTE2MTAsIDExNjE2LCAyOTE3LCAxMDI3OCwgMTE2MjAsIDExNjI0LCAxMTYzMCwgMTE2MzYsIDExNjQxLCAxMTY0NywgCi0gICAgMTE2NTIsIDk2ODMsIDExNjU4LCAxMTY2NCwgMTE2NjksIDExNjc0LCAxMTY4MiwgMTE2ODgsIDExNzAxLCAxMTcwOSwgCi0gICAgMTE3MTYsIDExNzIyLCA5Njg5LCAxMTcyOCwgMTE3MzYsIDExNzQ0LCAxMTc1MSwgMTE3NjQsIDExNzc3LCAxMTc4OSwgCi0gICAgMTE3OTksIDExODA3LCAxMTgxNCwgMTE4MjYsIDExODMzLCAxMTg0MywgMTE4NTIsIDExODYxLCAxMTg2OSwgMTE4NzYsIAotICAgIDExODgxLCAxMTg4NywgOTY5NCwgMTE4OTIsIDExODk4LCAxMTkwMywgMTE5MDgsIDk3MDAsIDExOTEzLCAxMTkxNiwgCi0gICAgMTE5MjMsIDExOTI5LCAxMTk0MiwgOTExMiwgMTE5NTMsIDExOTU5LCAxMTk2OCwgMTE5NzYsIDExOTgzLCAxMTk4OSwgCi0gICAgMTIwMDAsIDEyMDA2LCAxMjAxMSwgMzgzNiwgMTIwMTksIDEyMDI0LCAxMTQwMiwgMTIwMzAsIDEyMDM3LCAxMjA0MiwgCi0gICAgOTcwNSwgMTIwNDgsIDEyMDUzLCAxMjA2MCwgMTIwNjYsIDEyMDcyLCAxMjA3NywgMTIwODUsIDEyMDkzLCAxMjEwMCwgCi0gICAgMTIxMDQsIDEyMTE2LCAxMjEzMCwgMTIxNDAsIDEyMTQ1LCAxMjE0OSwgMTIxNjAsIDEyMTY2LCAxMjE3MSwgMTIxNzYsIAotICAgIDk3MTAsIDEyMTgwLCA5NzE2LCAxMjE4NSwgMTIxODgsIDEyMTkzLCAxMjIwNSwgMTIyMTIsIDEyMjE3LCAxMjIyMSwgCi0gICAgMTIyMjksIDEyMjM0LCAxMjIzOCwgMTIyNDMsIDEyMjQ3LCAxMjI1NCwgMTIyNjAsIDk3MjEsIDk2MjgsIDEyMjY3LCAyOTIyLCAKLSAgICAxMiwgMTIyNzQsIDEyMjc5LCAxMjI4MywgMTIyODcsIDEyMjkzLCAxMjMwMSwgMTIzMTEsIDEyMzE2LCAxMjMyMSwgMTIzMjgsIAotICAgIDEyMzM1LCAxMjMzOSwgMTIzNTAsIDEyMzYwLCAxMjM2OSwgMTIzNzgsIDEyMzkwLCAxMjM5NSwgMTIzOTksIDEyNDA3LCAKLSAgICAxMjQyMSwgMTI0MjUsIDEyNDI4LCAxMjQzNiwgMTI0NDMsIDEyNDUxLCAxMjQ1NSwgMTI0NjYsIDEyNDcwLCAxMjQ3NywgCi0gICAgMTI0ODIsIDEyNDg2LCAxMjQ5MiwgMTI0OTcsIDEyNTAzLCAxMjUwOCwgMTI1MTMsIDEyNTE3LCAxMjUyMywgMTI1MjgsIAotICAgIDEyNTM5LCAxMjU0MywgMTI1NDYsIDEyNTUyLCAxMjU1NywgMTI1NjMsIDEyNTY5LCAxMjU3NiwgMTI1ODcsIDEyNTk3LCAKLSAgICAxMjYwNywgMTI2MTYsIDEyNjIzLCAxMjYzMiwgMTI2MzYsIDk3MzEsIDk3MzgsIDk3NDQsIDk3NDksIDEyNjQyLCAxMjY0OCwgCi0gICAgMTI2NTQsIDEyNjU5LCAxMjY2NSwgOTc1MywgMTI2NzEsIDEyNjc0LCAxMjY4MSwgMTI2ODYsIDEyNzAxLCAxMjcxNywgCi0gICAgMTI3MzIsIDEyNzQwLCAxMjc0NiwgMTI3NTEsIDk1MCwgMzc0LCAxMjc1NiwgMTI3NjQsIDEyNzcxLCAxMjc3NywgMTI3ODIsIAotICAgIDEyNzg3LCA5NzU4LCAxMjc4OSwgMTI3OTMsIDEyNzk4LCAxMjgwMiwgMTI4MTIsIDEyODE3LCAxMjgyMSwgMTI4MzAsIAotICAgIDEyODM0LCAxMjgzNywgMTI4NDQsIDk3NjcsIDEyODQ5LCAxMjg1MiwgMTI4NjAsIDEyODY3LCAxMjg3NSwgMTI4NzksIAotICAgIDEyODgzLCAxMjg5MCwgMTI4OTksIDEyOTA2LCAxMjkwMiwgMTI5MTMsIDEyOTE3LCAxMjkyMywgMTI5MjcsIDEyOTMxLCAKLSAgICAxMjkzNSwgMTI5NDEsIDEyOTUxLCAxMjk1OSwgMTI5NjYsIDEyOTcwLCAxMjk3OCwgMTI5ODIsIDEyOTg5LCAxMjk5MywgCi0gICAgMTI5OTgsIDEzMDAyLCAxMzAwOSwgMTMwMTUsIDEzMDIzLCAxMzAyOSwgMTMwMzQsIDEzMDQ0LCAxMzA0OSwgMTMwNTQsIAotICAgIDEzMDU4LCAxMzA2MiwgMTMwNzAsIDQxMjQsIDEzMDc4LCAxMzA4MywgOTc3MiwgMTMwODcsIDEzMDkxLCAxMzA5NCwgCi0gICAgMTMxMDIsIDEzMTA5LCAxMzExMywgNjI5OCwgMTMxMTcsIDEzMTIyLCAxMzEyNywgMTMxMzEsIDEzMTQyLCAxMzE1MiwgCi0gICAgMTMxNTcsIDEzMTYzLCAxMzE2OCwgMTMxNzIsIDEzMTc1LCAxMzE4MywgMTMxODgsIDEzMTkzLCAxMzIwMCwgMTMyMDUsIAotICAgIDk3NzcsIDEzMjEwLCAxMzIxNCwgMTMyMjEsIDE3MzcsIDY0NTYsIDEzMjI2LCAxMzIzMSwgMTMyMzYsIDEzMjQxLCAxMzI0NywgCi0gICAgMTMyNTIsIDEzMjU4LCAxMzI2MywgMTMyNjgsIDEzMjczLCAxMzI3OCwgMTMyODMsIDEzMjg4LCAxMzI5MywgMTMyOTgsIAotICAgIDEzMzAzLCAxMzMwOCwgMTMzMTMsIDEzMzE4LCAxMzMyMywgMTMzMjgsIDEzMzMzLCAxMzMzOCwgMTMzNDQsIDEzMzQ5LCAKLSAgICAxMzM1NCwgMTMzNTksIDEzMzY0LCAxMzM2OSwgMTMzNzUsIDEzMzgwLCAxMzM4NSwgMTMzOTEsIDEzMzk2LCAxMzQwMiwgCi0gICAgMTM0MDcsIDEzNDEzLCAxMzQxOCwgMTM0MjMsIDEzNDI4LCAxMzQzMywgMTM0MzksIDEzNDQ0LCAxMzQ0OSwgMTM0NTQsIAotICAgIDkwOSwgMTEyLCAxMzQ2MiwgMTM0NjYsIDEzNDcxLCAxMzQ3NiwgMTM0ODAsIDEzNDg0LCAxMzQ4OCwgMTM0OTMsIDEzNDk3LCAKLSAgICAxMzUwMiwgMTM1MDYsIDEzNTA5LCAxMzUxMywgMTM1MTcsIDEzNTIzLCAxMzUyOCwgMTM1MzgsIDEzNTQ0LCAxMzU1MiwgCi0gICAgMTM1NTgsIDEzNTYyLCAxMzU2NiwgMTM1NzMsIDEzNTgxLCAxMzU5MCwgMTM2MDEsIDEzNjExLCAxMzYxOCwgMTM2MjUsIAotICAgIDEzNjI5LCAxMzYzOCwgMTM2NDcsIDEzNjU1LCAxMzY2NCwgMTM2NzMsIDEzNjgyLCAxMzY5MSwgMTM3MDEsIDEzNzExLCAKLSAgICAxMzcyMSwgMTM3MzEsIDEzNzQxLCAxMzc1MCwgMTM3NjAsIDEzNzcwLCAxMzc4MCwgMTM3OTAsIDEzODAwLCAxMzgxMCwgCi0gICAgMTM4MjAsIDEzODI5LCAxMzgzOSwgMTM4NDksIDEzODU5LCAxMzg2OSwgMTM4NzksIDEzODg5LCAxMzg5OCwgMTM5MDgsIAotICAgIDEzOTE4LCAxMzkyOCwgMTM5MzgsIDEzOTQ4LCAxMzk1OCwgMTM5NjgsIDEzOTc4LCAxMzk4OCwgMTM5OTcsIDE0MDA3LCAKLSAgICAxNDAxNywgMTQwMjcsIDE0MDM3LCAxNDA0NywgMTQwNTcsIDE0MDY3LCAxNDA3NywgMTQwODcsIDE0MDk3LCAxNDEwNiwgCi0gICAgMTIzNywgMTQxMTIsIDE0MTE1LCAxNDExOSwgMTQxMjQsIDE0MTMxLCAxNDEzNywgMTQxNDIsIDE0MTQ2LCAxNDE1MSwgCi0gICAgMTQxNjAsIDE0MTY4LCAxNDE3MywgMTQxNzcsIDE0MTgxLCAxNDE4NywgMTQxOTIsIDE0MTk4LCA5Nzg2LCAxNDIwMywgCi0gICAgMTQyMDgsIDE0MjE3LCA5Nzk2LCAxNDIyMiwgMTQyMjUsIDE0MjMxLCAxNDIzOSwgOTgwMSwgMTQyNDYsIDE0MjUwLCAKLSAgICAxNDI1NCwgMTQyNTksIDE0MjYzLCAxNDI3MywgMTQyNzksIDE0Mjg1LCAxNDI5MCwgMTQyOTksIDE0MzA3LCAxNDMxNCwgCi0gICAgMTQzMjEsIDE0MzI2LCAxNDMzMywgMTQzMzgsIDE0MzQyLCAxNDM0NSwgMTQzNTYsIDE0MzY2LCAxNDM3NSwgMTQzODMsIAotICAgIDE0Mzk0LCAxNDQwNiwgMTQ0MTYsIDE0NDIxLCAxNDQyNSwgMTQ0MzAsIDE0NDM1LCAxNDQzOSwgMTQ0NDUsIDE0NDUzLCAKLSAgICAxNDQ2MCwgMTQ0NzEsIDE0NDc2LCAxNDQ4NiwgMTQ0OTUsIDE0NDk5LCAxNDUwMiwgMTQ1MDksIDE0NTE5LCAxNDUyOCwgCi0gICAgMTQ1MzUsIDE0NTM5LCAxNDU0NiwgMTQ1NTIsIDE0NTU3LCAxNDU2MiwgMTQ1NjYsIDE0NTc1LCAxNDU4MCwgMTQ1ODQsIAotICAgIDE0NTkwLCAxNDU5NCwgMTQ1OTksIDE0NjAzLCAxNDYxMCwgMTQ2MTcsIDE0NjIxLCAxNDYzMCwgMTQ2MzgsIDE0NjQ2LCAKLSAgICAxNDY1MywgMTQ2NjEsIDE0NjczLCAxNDY4NCwgMTQ2OTQsIDE0NzAxLCAxNDcwNywgMTQ3MTYsIDE0NzI3LCAxNDczNiwgCi0gICAgMTQ3NDgsIDE0NzYwLCAxNDc3MiwgMTQ3ODIsIDE0NzkxLCAxNDgwMCwgMTQ4MDgsIDE0ODE1LCAxNDgyNCwgMTQ4MzIsIAotICAgIDE0ODM2LCAxNDg0MSwgMTQ4NDcsIDE0ODUzLCAxNDg1OCwgMTQ4NjMsIDgwOTMsIDE0ODY3LCAxNDg2OSwgMTQ4NzMsIAotICAgIDE0ODc4LCAxNDg4NCwgMTQ4OTAsIDE0ODk5LCAxNDkwMywgMTQ5MDksIDE0OTE3LCAxNDkyNCwgMTQ5MzMsIDE0OTQyLCAKLSAgICAxNDk1MSwgMTQ5NjAsIDE0OTY5LCAxNDk3OCwgMTQ5ODcsIDE0OTk2LCAxNTAwNiwgMTUwMTYsIDE1MDI1LCAxNTAzMSwgCi0gICAgMTUwMzgsIDE1MDQ1LCAxNTA1MSwgMTUwNjUsIDE1MDcxLCAxNTA3OCwgMTUwODYsIDE1MDk1LCAxNTEwMywgMTUxMDksIAotICAgIDE1MTE4LCAxNTEyNywgMTUxMzgsIDE1MTQ4LCAxNTE1NiwgMTUxNjMsIDE1MTcxLCAxNTE4MCwgMTUxOTMsIDE1MjAyLCAKLSAgICAxNTIxMCwgMTUyMTcsIDE1MjMwLCAxNTIzNiwgMTUyNDIsIDE1MjUyLCAxNTI2MSwgMTUyNzAsIDE1Mjc1LCAxNTI3OSwgCi0gICAgMTUyODUsIDE1MjkxLCAxNTI5NiwgMTUzMDMsIDE1MzEwLCA5NDQ1LCAxNTMxNSwgMTUzMjAsIDE1MzI3LCAxNTMzNSwgCi0gICAgMTUzNDAsIDE1MzQ3LCAxNTM1MiwgMTUzNjQsIDEzNTE5LCAxNTM2OSwgMTUzNzcsIDE1MzgzLCAxNTM4OCwgMTUzOTYsIAotICAgIDE1NDA0LCAxNTQxMSwgMTU0MTksIDE1NDI1LCAxNTQzMywgMTU0NDEsIDE1NDQ3LCAxNTQ1MiwgMTU0NTgsIDE1NDY1LCAKLSAgICAxNTQ3MSwgMTU0NzYsIDE1NDgwLCAxNTQ5MSwgMTU0OTksIDE1NTA1LCAxNTUxMCwgMTU1MTcsIDE1NTI2LCAxNTUzMiwgCi0gICAgMTU1MzcsIDE1NTQ1LCAxNTU1NCwgMTU1NjgsIDQwNjgsIDE1NTcyLCAxNTU3NywgMTU1ODIsIDE1NTg4LCAxNTU5MywgCi0gICAgMTU1OTgsIDE1NjAyLCAxNTYwNywgMTU2MTIsIDE1NjE3LCA4MDkyLCAxNTYyMiwgMTU2MjcsIDE1NjMyLCAxNTYzNywgCi0gICAgMTU2NDIsIDE1NjQ2LCAxNTY1MSwgMTU2NTYsIDE1NjYxLCAxNTY2NiwgMTU2NzIsIDE1Njc4LCAxNTY4MywgMTU2ODcsIAotICAgIDE1NjkzLCAxNTY5OCwgMTU3MDMsIDE1NzA4LCA5ODA1LCAxNTcxMywgMTU3MTgsIDE1NzIzLCAxNTcyOCwgMTU3MzMsIAotICAgIDE1NzUwLCAxNTc2OCwgMTU3ODAsIDE1NzkzLCAxNTgxMCwgMTU4MjYsIDE1ODQzLCAxNTg1MywgMTU4NzIsIDE1ODgzLCAKLSAgICAxNTg5NCwgMTU5MDUsIDE1OTE2LCAxNTkyOCwgMTU5MzksIDE1OTUwLCAxNTk2NywgMTU5NzgsIDE1OTg5LCAxNTk5NCwgCi0gICAgOTgxMCwgMTU5OTksIDE2MDAzLCAyNDIwLCAxNjAwNywgMTYwMTAsIDE2MDE2LCAxNjAyNCwgMTYwMzIsIDE2MDQxLCAKLSAgICAxNjA0OCwgMTYwNTMsIDE2MDYxLCAxNjA2OSwgMTYwNzYsIDE2MDgwLCAxNjA4NSwgMTYwOTEsIDE2MDk4LCAxNjEwNiwgCi0gICAgMTYxMTMsIDE2MTI1LCAxNjEzMiwgMTYxMzgsIDE2MTQ2LCAxNjE1MSwgMTYxNTcsIDEyNjk1LCAxNjE2MywgMTYxNzIsIAotICAgIDE2MTc4LCAxNjE4MywgMTYxOTEsIDE2MjAwLCAxNjIwOCwgMTYyMTUsIDE2MjIxLCAxNjIyOSwgMTYyMzYsIDE2MjQyLCAKLSAgICAxNjI0OCwgMTYyNTUsIDE2MjYyLCAxNjI2OCwgMTYyNzQsIDE2MjgzLCAxNjI5MSwgMTYzMDEsIDE2MzA4LCAxNjMxNCwgCi0gICAgMTYzMjIsIDE2MzI4LCAxNjMzNiwgMTYzNDQsIDE2MzUxLCAxNjM2NCwgMTYzNzEsIDE2MzgwLCAxNjM4OSwgMTYzOTgsIAotICAgIDE2NDA2LCAxNjQxNiwgMTY0MjMsIDE2NDI4LCAzNzI3LCAxNjQzNSwgMTY0NDAsIDEzNTMsIDE2NDQ0LCAxNTYyMywgCi0gICAgMTY0NDgsIDE2NDU0LCAxNjQ1OCwgMTY0NjYsIDE2NDc4LCAxNjQ4MywgMTY0OTAsIDE2NDk2LCAxNjUwMSwgMTY1MDgsIAotICAgIDE1NjI4LCAxNjUxMiwgMTY1MTYsIDE2NTIwLCAxNTYzMywgMTY1MjQsIDE1NjM4LCAxNjUyOCwgMTY1MzUsIDE2NTQwLCAKLSAgICAxNjU0NCwgMTY1NTEsIDE2NTU1LCAxNjU2MywgMTY1NzAsIDE2NTc1LCAxNjU3OSwgMTY1ODYsIDE2NjAzLCAxNjYxMiwgCi0gICAgMTY2MTYsIDE2NjE5LCAxNjYyNywgMTY2MzMsIDE2NjM4LCAzODA1LCAxNjY0MiwgMTY2NDQsIDE2NjUyLCAxNjY1OSwgCi0gICAgMTY2NjksIDE2NjgxLCAxNjY4NiwgMTY2OTAsIDE2Njk2LCAxNjcwMSwgMTY3MDUsIDE2NzExLCAxNjcxNiwgMTY3MjIsIAotICAgIDE2NzI1LCAxNjczMiwgMTY3NDAsIDE2NzQ3LCAxNjc1MywgMTY3NTgsIDE2NzY0LCAxNjc2OSwgMTY3NzYsIDE2NzgyLCAKLSAgICAxNjc4NywgMTY3OTQsIDE2Nzk5LCAxNjgwMywgMTY4MDksIDE2ODEzLCAxNjgyMCwgMTY4MjYsIDE2ODMxLCAxNjgzNywgCi0gICAgMTY4NDUsIDE2ODUzLCAxNjg2MCwgMTY4NjYsIDE2ODcxLCAxNjg3NywgMTY4ODMsIDE2ODkxLCAxNjg5OSwgMTY5MDUsIAotICAgIDE2OTExLCAxNjkxNiwgMTY5MjMsIDE2OTI4LCAxNjkzMiwgMTY5MzgsIDE2OTQzLCAxNjk1MCwgMTY5NTUsIDE2OTYxLCAKLSAgICAxNjk2NCwgMTY5NzAsIDE2OTc2LCAxNjk3OSwgMTY5ODMsIDE2OTg3LCAxNjk5OSwgMTcwMDUsIDE3MDEwLCAxNzAxNywgCi0gICAgMTcwMjMsIDE3MDI5LCAxNzA0MCwgMTcwNTAsIDE3MDU5LCAxNzA2NywgMTcwNzQsIDE3MDg1LCAxNzA5NSwgMTcxMDUsIAotICAgIDE3MTEzLCAxNzExNiwgMTU2NTIsIDE3MTIxLCAxNzEyNiwgMTU2NTcsIDE1Nzk4LCAxNzEzNCwgMTcxNDcsIDE3MTYyLCAKLSAgICAxNzE3MywgMTU4MTUsIDE3MTkxLCAxNzIwNCwgMTcyMTcsIDE3MjI4LCAxMTQxNywgMTcyMzksIDE3MjUyLCAxNzI3MSwgCi0gICAgMTcyODIsIDE3MjkzLCAxNzMwNCwgMjY4OCwgMTczMTcsIDE3MzIxLCAxNzMyOSwgMTczNDAsIDE3MzQ4LCAxNzM2MywgCi0gICAgMTczNzgsIDE3Mzg5LCAxNzM5NiwgMTc0MDIsIDE3NDEwLCAxNzQxNCwgMTc0MjAsIDE3NDIzLCAxNzQzNiwgMTc0NDgsIAotICAgIDE3NDU4LCAxNzQ2NiwgMTc0NzMsIDE3NDgxLCAxNzQ5MSwgMTc0OTYsIDE3NTAzLCAxNzUwOCwgMTc1MTUsIDE3NTI2LCAKLSAgICAxNzUzNiwgMTc1NDIsIDE3NTQ3LCAxNzU1MiwgMTU2NjIsIDE3NTU2LCAxNzU2MiwgMTc1NjgsIDE3NTczLCAxNzU3OCwgCi0gICAgMTc1ODMsIDE3NTg3LCAxNTY2NywgMTU2NzMsIDE3NTkxLCAxNTY3OSwgMTc1OTYsIDE3NjA0LCAxNzYwOSwgMTc2MTMsIAotICAgIDE3NjIxLCAxNzYzMCwgMTc2MzcsIDE3NjQxLCA5NjQ5LCAxNzY0NSwgMTc2NDcsIDE3NjUyLCAxNzY1NywgMTc2NjMsIAotICAgIDE3NjY4LCAxNzY3MywgMTc2NzgsIDE3NjgzLCAxNzY4NywgMTc2OTMsIDE3Njk5LCAxNzcwNCwgMTc3MTAsIDE3NzE1LCAKLSAgICAxNzcyMCwgMTc3MjQsIDE3NzMwLCAxNzczNSwgMTc3NDAsIDE3NzQ1LCAxNzc1NywgMTc3NjIsIDE3NzY4LCAxNzc3MywgCi0gICAgMTc3NzgsIDE3Nzg0LCAxNzc5MCwgMTc3OTUsIDE3ODAwLCAxNzgwNSwgMTc4MTIsIDE3ODE4LCAxNzgyOSwgMTc4MzYsIAotICAgIDE3ODQxLCAxNzg0NSwgMTc4NDksIDE3ODUyLCAxNzg2MCwgMTc4NjUsIDE3ODcyLCAxNzg3OSwgMTc4ODUsIDE3ODkwLCAKLSAgICAxNzg5NSwgMTc5MDAsIDE3OTA3LCAxNzkxNywgMTc5MjUsIDE3OTMwLCAxNzkzNywgMTc5NDMsIDE3OTUyLCAxNzk2MiwgCi0gICAgMTc5NzIsIDE3OTg2LCAxODAwMCwgMTgwMTQsIDE4MDI4LCAxODA0MywgMTgwNTgsIDE4MDc1LCAxODA5MywgMTgxMDYsIAotICAgIDE4MTEyLCAxODExNywgMTgxMjIsIDE4MTI2LCAxODEzNCwgMTgxMzksIDE4MTQ3LCAxODE1MywgMTgxNTksIDE4MTY0LCAKLSAgICAxODE2OSwgMTgxNzMsIDE4MTc4LCAxODE4MiwgMTgxODcsIDE4MTkxLCAxODIwMiwgMTgyMDgsIDE4MjEzLCAxODIxOCwgCi0gICAgMTgyMjUsIDE4MjMwLCAxODIzNCwgMzY5MCwgMTgyMzksIDE4MjQ1LCAxODI1MiwgMTU2ODgsIDE4MjU4LCAxODI2MiwgCi0gICAgMTgyNjgsIDE4MjczLCAxODI3OCwgMTgyODIsIDE4Mjg4LCAxODI5MywgMTgyOTgsIDE4MzA1LCAxODMxMCwgMTQyNzUsIAotICAgIDE4MzE0LCAxODMxOSwgMTgzMjMsIDE4MzI4LCAxODMzNCwgMTgzNDAsIDE4MzQ3LCAxODM1NywgMTgzNjUsIDE4MzcyLCAKLSAgICAxODM3NywgMTgzODEsIDE4MzkwLCAxODM5OCwgMTg0MDUsIDE4NDEyLCAxODQxOCwgMTg0MjMsIDE4NDI5LCAxODQzNCwgCi0gICAgMTg0MzksIDE4NDQ1LCAxODQ1MCwgMTg0NTYsIDE4NDYxLCAxODQ2NywgMTg0NzMsIDE4NDgwLCAxODQ4NiwgMTg0OTEsIAotICAgIDE4NDk2LCA5ODc1LCAxODUwNSwgMTg1MDgsIDE4NTE2LCAxODUyMiwgMTg1MjcsIDE4NTMyLCAxODU0MiwgMTg1NDksIAotICAgIDE4NTU1LCAxODU2MCwgMTg1NjUsIDE4NTcxLCAxODU3NiwgMTg1ODIsIDE4NTg3LCAxODU5MywgMTg1OTksIDE4NjA0LCAKLSAgICAxODYxMiwgMTg2MTksIDE4NjI0LCAxODYyOSwgMTg2MzUsIDE4NjQwLCAxODY0NCwgMTg2NTMsIDE4NjY0LCAxODY3MSwgCi0gICAgMTg2NzksIDE4Njg2LCAxODY5MSwgMTg2OTYsIDE4NzAyLCAxODcwNywgMTg3MTUsIDE4NzIxLCAxODcyNywgMTg3MzQsIAotICAgIDE4NzQwLCAxODc0NSwgMTg3NDksIDE4NzU1LCAxODc2MCwgMTg3NjUsIDE4NzY5LCAxODc3NCwgMTQyNiwgODExNywgMjkzNiwgCi0gICAgMTg3NzgsIDE4NzgyLCAxODc4NiwgMTg3OTAsIDE4Nzk0LCAxODc5OCwgMTg4MDEsIDE4ODA2LCAxODgxMywgMTg4MjEsIAotICAgIDE1Njk5LCAxODgyOCwgMTg4MzgsIDE4ODQ2LCAxODg1MywgMTg4NjEsIDE4ODcxLCAxODg4MCwgOTIyMCwgMTg4OTMsIAotICAgIDE4ODk4LCAxODkwMywgMTg5MTEsIDE4OTE4LCAxNDM3MSwgMTQzODAsIDE4OTI1LCAxODkzNSwgMTg5NTAsIDE4OTU2LCAKLSAgICAxODk2MywgMTg5NzAsIDE4OTc2LCAxODk4MiwgMTg5OTMsIDE5MDAxLCAxOTAwOSwgMTkwMTksIDE5MDI5LCAxNTcwNCwgCi0gICAgMTkwMzgsIDE5MDQ0LCAxOTA1MCwgMTkwNTgsIDE5MDY2LCAxOTA3MSwgMTkwODAsIDE5MDg4LCAxOTEwMCwgMTkxMTAsIAotICAgIDE5MTIwLCAxOTEzMCwgMTkxMzksIDE5MTUxLCAxOTE2MSwgMTkxNzEsIDE5MTgyLCAxOTE4NywgMTkxOTksIDE5MjExLCAKLSAgICAxOTIyMywgMTkyMzUsIDE5MjQ3LCAxOTI1OSwgMTkyNzEsIDE5MjgzLCAxOTI5NSwgMTkzMDcsIDE5MzE4LCAxOTMzMCwgCi0gICAgMTkzNDIsIDE5MzU0LCAxOTM2NiwgMTkzNzgsIDE5MzkwLCAxOTQwMiwgMTk0MTQsIDE5NDI2LCAxOTQzOCwgMTk0NDksIAotICAgIDE5NDYxLCAxOTQ3MywgMTk0ODUsIDE5NDk3LCAxOTUwOSwgMTk1MjEsIDE5NTMzLCAxOTU0NSwgMTk1NTcsIDE5NTY5LCAKLSAgICAxOTU4MCwgMTk1OTIsIDE5NjA0LCAxOTYxNiwgMTk2MjgsIDE5NjQwLCAxOTY1MiwgMTk2NjQsIDE5Njc2LCAxOTY4OCwgCi0gICAgMTk3MDAsIDE5NzExLCAxOTcyMywgMTk3MzUsIDE5NzQ3LCAxOTc1OSwgMTk3NzEsIDE5NzgzLCAxOTc5NSwgMTk4MDcsIAotICAgIDE5ODE5LCAxOTgzMSwgMTk4NDIsIDE5ODU0LCAxOTg2NiwgMTk4NzgsIDE5ODkwLCAxOTkwMiwgMTk5MTQsIDE5OTI2LCAKLSAgICAxOTkzOCwgMTk5NTAsIDE5OTYyLCAxOTk3MywgMTk5ODUsIDE5OTk3LCAyMDAwOSwgMjAwMjEsIDIwMDMzLCAyMDA0NSwgCi0gICAgMjAwNTcsIDIwMDY5LCAyMDA4MSwgMjAwOTMsIDIwMTA0LCAyMDExNiwgMjAxMjgsIDIwMTQwLCAyMDE1MiwgMjAxNjUsIAotICAgIDIwMTc4LCAyMDE5MSwgMjAyMDQsIDIwMjE3LCAyMDIzMCwgMjAyNDMsIDIwMjU1LCAyMDI2OCwgMjAyODEsIDIwMjk0LCAKLSAgICAyMDMwNywgMjAzMjAsIDIwMzMzLCAyMDM0NiwgMjAzNTksIDIwMzcyLCAyMDM4NSwgMjAzOTcsIDIwNDEwLCAyMDQyMywgCi0gICAgMjA0MzYsIDIwNDQ5LCAyMDQ2MiwgMjA0NzUsIDIwNDg4LCAyMDUwMSwgMjA1MTQsIDIwNTI3LCAyMDUzOSwgMjA1NTIsIAotICAgIDIwNTY1LCAyMDU3OCwgMjA1OTEsIDIwNjA0LCAyMDYxNywgMjA2MzAsIDIwNjQzLCAyMDY1NiwgMjA2NjksIDIwNjgxLCAKLSAgICAyMDY5NCwgMjA3MDcsIDIwNzIwLCAyMDczMywgMjA3NDYsIDIwNzU5LCAyMDc3MiwgMjA3ODUsIDIwNzk4LCAyMDgxMSwgCi0gICAgMjA4MjMsIDIwODM2LCAyMDg0OSwgMjA4NjIsIDIwODc1LCAyMDg4OCwgMjA5MDEsIDIwOTE0LCAyMDkyNywgMjA5NDAsIAotICAgIDIwOTUzLCAyMDk2NSwgMjA5NzYsIDIwOTg5LCAyMTAwMiwgMjEwMTUsIDIxMDI4LCAyMTA0MSwgMjEwNTQsIDIxMDY3LCAKLSAgICAyMTA4MCwgMjEwOTMsIDIxMTA2LCAyMTExOCwgMjExMzEsIDIxMTQ0LCAyMTE1NywgMjExNzAsIDIxMTgzLCAyMTE5NiwgCi0gICAgMjEyMDksIDIxMjIyLCAyMTIzNSwgMjEyNDgsIDIxMjYwLCAyMTI3MywgMjEyODYsIDIxMjk5LCAyMTMxMiwgMjEzMjUsIAotICAgIDIxMzM4LCAyMTM1MSwgMjEzNjQsIDIxMzc3LCAyMTM5MCwgMjE0MDIsIDIxNDE1LCAyMTQyOCwgMjE0NDEsIDIxNDU0LCAKLSAgICAyMTQ2NywgMjE0ODAsIDIxNDkzLCAyMTUwNiwgMjE1MTksIDIxNTMyLCAyMTU0NCwgMjE1NTcsIDIxNTcwLCAyMTU4MywgCi0gICAgMjE1OTYsIDIxNjA5LCAyMTYyMiwgMjE2MzUsIDIxNjQ4LCAyMTY2MSwgMjE2NzQsIDIxNjg2LCAyMTY5OSwgMjE3MTIsIAotICAgIDIxNzI1LCAyMTczOCwgMjE3NTEsIDIxNzY0LCAyMTc3NywgMjE3OTAsIDIxODAzLCAyMTgxNiwgMjE4MjgsIDIxODQxLCAKLSAgICAyMTg1NCwgMjE4NjcsIDIxODgwLCAyMTg5MywgMjE5MDYsIDIxOTE5LCAyMTkzMiwgMjE5NDUsIDIxOTU4LCAyMTk3MCwgCi0gICAgMjE5ODMsIDIxOTk2LCAyMjAwOSwgMjIwMjIsIDIyMDM1LCAyMjA0OCwgMjIwNjEsIDIyMDc0LCAyMjA4NywgMjIxMDAsIAotICAgIDIyMTEyLCAyMjEyNSwgMjIxMzgsIDIyMTUxLCAyMjE2NCwgMjIxNzcsIDIyMTkwLCAyMjIwMywgMjIyMTYsIDIyMjI5LCAKLSAgICAyMjI0MiwgMjIyNTQsIDIyMjY3LCAyMjI4MCwgMjIyOTMsIDIyMzA2LCAyMjMxOSwgMjIzMzIsIDIyMzQ1LCAyMjM1OCwgCi0gICAgMjIzNzEsIDIyMzg0LCAyMjM5NiwgMjI0MDcsIDIyNDE2LCAyMjQyNCwgMjI0MzIsIDIyNDM5LCAyMjQ0NSwgMjI0NDksIAotICAgIDIyNDU1LCAyMjQ2MSwgMjI0NjksIDIyNDc0LCAyMjQ4MCwgMjI0ODUsIDIyNDg5LCAyMjQ5OCwgOTY1NCwgMjI1MDksIAotICAgIDIyNTE2LCAyMjUyNCwgMjI1MzEsIDIyNTM4LCAxMTkzNiwgMjI1NDUsIDIyNTUyLCAyMjU2MSwgMjI1NjYsIDIyNTcxLCAKLSAgICA4MTQ1LCAyMjU3OCwgMjI1ODMsIDIyNTg2LCAyMjU5MSwgMjI1OTksIDIyNjA2LCAyMjYxMywgMjI2MjAsIDIyNjI2LCAKLSAgICAyMjYzNSwgMjI2NDQsIDIyNjUzLCAyMjY1OSwgMjI2NjgsIDIyNjcyLCAyMjY3OCwgMjI2ODMsIDIyNjkzLCAyMjcwMCwgCi0gICAgMjI3MDYsIDIyNzE0LCAyMjcyMCwgMjI3MjcsIDIyNzM3LCAyMjc0NiwgMjI3NTAsIDIyNzU3LCAyMjc2MSwgMjI3NjYsIAotICAgIDIyNzcyLCAyMjc4MCwgMjI3ODQsIDIyNzk0LCAxNTcxNCwgMjI4MDMsIDIyODA5LCAyMjgxMywgMjI4MjIsIDIyODMyLCAKLSAgICAxNTcxOSwgMjI4MzgsIDIyODQ1LCAyMjg1NiwgMjI4NjQsIDIyODc0LCAyMjg4MywgMjI4OTEsIDk0MTAsIDIyODk5LCAKLSAgICAyMjkwNCwgMjI5MTAsIDIyOTE1LCAyMjkxOSwgMjI5MjMsIDIyOTI3LCAxMDM3OSwgMjI5MzIsIDIyOTQwLCAyMjk0NywgCi0gICAgMjI5NTYsIDIyOTYzLCAyMjk3MCwgMjI5NzYsIDExODU2LCAyMjk4MywgMjI5ODksIDIyOTkzLCAyMjk5OSwgMjMwMDYsIAotICAgIDIzMDEyLCAyMzAyMCwgMjMwMjYsIDIzMDMzLCAyMzAzOSwgMjMwNDUsIDIzMDU0LCAyMzA1OCwgMjMwNjYsIDIzMDc1LCAKLSAgICAyMzA4MiwgMjMwODcsIDIzMDkxLCAyMzEwMiwgMjMxMDcsIDIzMTEyLCAyMzExNywgMjMxMzAsIDgzNDksIDIzMTM0LCAKLSAgICAyMzE0MCwgMjMxNDUsIDIzMTUzLCAyMzE1NywgMjMxNjQsIDIzMTczLCAyMzE3OCwgMTU5OTAsIDIzMTg2LCAyMzE5MCwgCi0gICAgMjMyMDIsIDIzMjA3LCAyMzIxMSwgMjMyMTQsIDIzMjIwLCAyMzIyNiwgMjMyMzIsIDIzMjM3LCAyMzI0MSwgMjMyNDQsIAotICAgIDIzMjU1LCAyMzI2MCwgOTkyNiwgMjMyNjcsIDIzMjcyLCAxMjQzLCA5OTMxLCAyMzI3NywgMjMyODIsIDIzMjg3LCAyMzI5MiwgCi0gICAgMjMyOTcsIDIzMzAyLCAyMzMwNywgMjMzMTIsIDIzMzE3LCAyMzMyMiwgMjMzMjcsIDIzMzMyLCAyMzMzOCwgMjMzNDMsIAotICAgIDIzMzQ4LCAyMzM1MywgMjMzNTgsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzc4LCAyMzM4MywgMjMzODksIDIzMzk1LCAKLSAgICAyMzQwMCwgMjM0MDUsIDIzNDEwLCAyMzQxNSwgMjM0MjAsIDIzNDI1LCAyMzQzMCwgMjM0MzUsIDIzNDQwLCAyMzQ0NiwgCi0gICAgMjM0NTEsIDIzNDU2LCAyMzQ2MSwgMjM0NjcsIDIzNDczLCAyMzQ3OCwgMjM0ODMsIDIzNDg4LCAyMzQ5MywgMjM0OTgsIAotICAgIDIzNTAzLCAyMzUwOCwgMjM1MTMsIDIzNTE5LCAyMzUyNCwgMjM1MjksIDIzNTM0LCAyMzUzOSwgMjM1NDUsIDIzNTUwLCAKLSAgICAyMzU1NSwgMjM1NTksIDEzNCwgMjM1NjcsIDIzNTcxLCAyMzU3NSwgMjM1NzksIDIzNTg0LCAyMzU4OCwgMTQyODEsIDIzNDYsIAotICAgIDIzNTkyLCAyMzU5NywgMjM2MDEsIDIzNjA2LCAyMzYxMCwgMjM2MTUsIDIzNjE5LCAyMzYyNSwgMjM2MzAsIDIzNjM0LCAKLSAgICAyMzYzOCwgMjM2NDYsIDIzNjUwLCAyMzY1NCwgMjM2NTksIDIzNjY0LCAyMzY2OCwgMjM2NzQsIDIzNjc5LCAyMzY4MywgCi0gICAgMjM2ODgsIDIzNjkzLCAyMzY5NywgMjM3MDQsIDIzNzExLCAyMzcxOCwgMjM3MjIsIDIzNzI2LCAyMzczMSwgMjM3MzUsIAotICAgIDIzNzM4LCAyMzc0NCwgMjM3NTcsIDIzNzYyLCAyMzc2OCwgMjM3NzcsIDIzNzgyLCAxMDE1MSwgMjM3ODcsIDIzNzk2LCAKLSAgICAyMzgwMSwgMjM4MDQsIDI3NTEsIDI3NTYsIDIzODA4LCAyMzgxNCwgMjM4MjAsIDc1MzgsIDIzODI1LCAyMzgzMCwgMjM4MzUsIAotICAgIDIzODQxLCAyMzg0NiwgMTUxMzQsIDIzODUxLCAyMzg1NiwgMjM4NjEsIDIzODY2LCAyMzg3MiwgMjM4NzcsIDIzODgyLCAKLSAgICAyMzg4OCwgMjM4OTMsIDIzODk3LCAyMzkwMiwgMjM5MDcsIDIzOTEyLCAyMzkxNywgMjM5MjIsIDIzOTI2LCAyMzkzMSwgCi0gICAgMjM5MzUsIDIzOTQwLCAyMzk0NSwgMjM5NTAsIDIzOTU1LCAyMzk1OSwgMjM5NjQsIDIzOTY4LCAyMzk3MywgMjM5NzgsIAotICAgIDIzOTgzLCAyMzg5OCwgMjk0NSwgMjM5MDMsIDIzOTg4LCAyMzk5NiwgMjQwMDMsIDEwNDczLCAyNDAxNSwgMjQwMjMsIAotICAgIDI0MDMzLCAyNDA1MSwgMjQwNzAsIDI0MDc5LCAyNDA4NywgMjM5MDgsIDI0MDk0LCAyNDA5OSwgMjQxMDcsIDIzOTEzLCAKLSAgICAyNDExMiwgMjQxMTcsIDI0MTI1LCAyNDEzMCwgMjM5MTgsIDI0MTM1LCAyNDE0MywgMjQxNDgsIDI0MTUyLCAyNDE1OSwgCi0gICAgMjQxNjUsIDI0MTc0LCAyNDE4MiwgMjQxODYsIDI0MTg5LCAyNDE5NiwgMjQyMDAsIDI0MjA0LCAyNDIwOSwgMjQyMTUsIAotICAgIDI0MjIyLCAyNDIyNywgOTQzNywgMTc0MiwgMTc0NywgMjQyMzEsIDI0MjM3LCAyNDI0MywgMjQyNDgsIDI0MjUyLCAyNDI1NiwgCi0gICAgMjQyNjAsIDI0MjY0LCAyNDI2OCwgMjQyNzIsIDI0Mjc2LCAyNDI4MCwgMjQyODMsIDI0Mjg5LCAyNDI5NiwgMjQzMDQsIAotICAgIDI0MzEwLCAyNDMxNiwgMjQzMjEsIDI0MzI2LCAyNDMzMiwgMjQzMzYsIDI0MzQxLCAxNTA0MCwgMTUwNDcsIDI0MzQ4LCAKLSAgICAyNDM2MCwgMjQzNjMsIDI0MzcwLCAyNDM3NCwgMTc4ODEsIDI0MzgxLCAyNDM4OSwgMjQ0MDAsIDI0NDA5LCAyNDQyMiwgCi0gICAgMjQ0MzIsIDI0NDQ2LCAyNDQ1OCwgMjQ0NzIsIDI0NDg1LCAyNDQ5NywgMjQ1MDcsIDI0NTE5LCAyNDUyNSwgMjQ1NDAsIAotICAgIDI0NTY0LCAyNDU4MiwgMjQ2MDEsIDI0NjE0LCAyNDYyOCwgMjQ2NDYsIDI0NjYyLCAyNDY3OSwgMjQ2OTcsIDI0NzA4LCAKLSAgICAyNDcyNywgMjQ3NDQsIDI0NzY0LCAyNDc4MiwgMjQ3OTQsIDI0ODA4LCAyNDgyMiwgMjQ4MzQsIDI0ODUxLCAyNDg3MCwgCi0gICAgMjQ4ODgsIDI0OTAwLCAyNDkxOCwgMjQ5MzcsIDE1ODU4LCAyNDk1MCwgMjQ5NzAsIDI0OTgyLCAxMTQ0OCwgMjQ5OTQsIAotICAgIDI0OTk5LCAyNTAwNCwgMjUwMDksIDI1MDE1LCAyNTAyMCwgMjUwMjQsIDI1MDMxLCAyNTAzNywgMjQzNywgMjUwNDEsIAotICAgIDI1MDQ3LCAyNTA1MSwgMjUwNTQsIDI1MDU4LCAyNTA2MSwgMjUwNjksIDI1MDc1LCAyMzkzNiwgMjUwNzksIDI1MDg4LCAKLSAgICAyNTA5OSwgMjUxMDUsIDI1MTExLCAyNTEyNiwgMjUxMzUsIDI1MTQzLCAyNTE1MCwgMjUxNTUsIDI1MTU5LCAyNTE2NiwgCi0gICAgMjUxNzIsIDI1MTgxLCAyNTE4OSwgMjUxOTYsIDI1MjA2LCAyNTIxNSwgMjUyMjUsIDI1MjMwLCAyNTIzOSwgMjUyNDgsIAotICAgIDI1MjU5LCAyNTI3MCwgNDE5MiwgMjUyODAsIDI1Mjg0LCAyNTI5NCwgMjUzMDIsIDI1MzEyLCAyNTMyMywgMjUzMjgsIAotICAgIDI1MzM4LCAyNTM0NiwgMjUzNTMsIDI1MzU5LCAyNTM2NiwgMjUzNzEsIDIzOTQ2LCAyNTM3NSwgMjUzODQsIDI1Mzg4LCAKLSAgICAyNTM5MSwgMjUzOTYsIDI1NDA0LCAyNTQxMSwgMjU0MjAsIDI1NDI4LCAyNTQzNiwgMjU0NDQsIDI1NDU0LCAyNTQ2MywgCi0gICAgMjU0NjksIDI1NDc1LCAyNTQ3OSwgMjM5NTEsIDIzOTU2LCAyNTQ4MywgMjU0OTMsIDI1NTAzLCAyNTUxMywgMjU1MjEsIAotICAgIDI1NTI4LCAyNTUzOCwgMjU1NDYsIDI1NTU0LCAyNTU2MCwgMjU1NjgsIDg2NSwgMjU1NzcsIDE2MDY1LCA2MTUsIDI1NTkxLCAKLSAgICAyNTYwMCwgMjU2MDgsIDI1NjE5LCAyNTYzMCwgMjU2NDAsIDI1NjQ5LCAyNTY2MSwgMjU2NzAsIDI1Njc5LCAyNTY4NiwgCi0gICAgMjU2OTIsIDI1NzAyLCAyNTcxMSwgMjU3MjAsIDI1NzI4LCAyNTczOCwgMjU3NDYsIDI1NzU0LCA5ODkyLCAyNTc2MCwgCi0gICAgMjU3NjMsIDI1NzY3LCAyNTc3MiwgMjU3NzcsIDI1NzgxLCAxMDU4OCwgMjM5NjksIDIzOTc0LCAyNTc4OSwgMjU3OTUsIAotICAgIDI1ODAxLCAyNTgwNiwgMjU4MTEsIDI1ODE1LCAyNTgyMywgMjU4MjksIDI1ODM1LCAyNTgzOSwgMzY3NSwgMjU4NDcsIAotICAgIDI1ODUyLCAyNTg1NywgMjU4NjEsIDI1ODY1LCAxMDcwMSwgMjU4NzIsIDI1ODgwLCAyNTg5NCwgMjU5MDEsIDI1OTA3LCAKLSAgICAxMDcxMCwgMTA3MTYsIDI1OTE1LCAyNTkyMywgMjU5MzAsIDI1OTM1LCAyNTk0MCwgMjM5NzksIDI1OTQ2LCAyNTk1NywgCi0gICAgMjU5NjEsIDI1OTY2LCAyNjQwLCAyNTk3MSwgMjU5ODIsIDI1OTg4LCAyNTk5MywgMjU5OTcsIDI2MDAxLCAyNjAwNCwgCi0gICAgMjYwMTEsIDI2MDE4LCAyNjAyNCwgMjYwMzEsIDI2MDM3LCAyNjA0MSwgMjM5ODQsIDI2MDQ2LCAyNjA1MCwgMjYwNTQsIAotICAgIDE0MzEsIDg1NDQsIDI2MDU5LCAyNjA2NCwgMjYwNjksIDI2MDc0LCAyNjA3OSwgMjYwODQsIDI2MDg5LCAyNjA5NCwgCi0gICAgMjYwOTksIDI2MTA0LCAyNjEwOSwgMjYxMTQsIDI2MTE5LCAyNjEyNCwgMjYxMzAsIDI2MTM1LCAyNjE0MCwgMjYxNDUsIAotICAgIDI2MTUwLCAyNjE1NSwgMjYxNjAsIDI2MTY2LCAyNjE3MSwgMjYxNzYsIDI2MTgxLCAyNjE4NiwgMjYxOTEsIDI2MTk2LCAKLSAgICAyNjIwMSwgMjYyMDcsIDI2MjEzLCAyNjIxOCwgMjYyMjQsIDI2MjI5LCAyNjIzNCwgNSwgMjYyNDAsIDI2MjQ0LCAyNjI0OCwgCi0gICAgMjYyNTIsIDI2MjU3LCAyNjI2MSwgMjYyNjUsIDI2MjY5LCAyNjI3MywgMjYyNzgsIDI2MjgyLCAyNjI4NywgMjYyOTEsIAotICAgIDI2Mjk0LCAyNjI5OCwgMjYzMDMsIDI2MzA3LCAyNjMxMiwgMjYzMTYsIDI2MzIwLCAyNjMyNCwgMjYzMjksIDI2MzMzLCAKLSAgICAyNjMzNywgMjYzNDcsIDI2MzUyLCAyNjM1NiwgMjYzNjAsIDI2MzY1LCAyNjM3MCwgMjYzNzksIDI2Mzg0LCAyNjM4OSwgCi0gICAgMjYzOTMsIDI2Mzk3LCAyNjQxMCwgMjY0MjIsIDI2NDMxLCAyNjQ0MCwgMjY0NDUsIDI2NDUxLCAyNjQ1NiwgMjY0NjAsIAotICAgIDI2NDY0LCAyNjQ3NCwgMjY0ODMsIDI2NDkxLCAyNjQ5NywgMjY1MDIsIDI2NTA2LCAyNjUxMywgMjY1MjMsIDI2NTMyLCAKLSAgICAyNjU0MCwgMTE3NzAsIDI2NTQ4LCAyNjU1NiwgMjY1NjUsIDI2NTc0LCAyNjU4MiwgMjY1OTIsIDI2NTk3LCAyNjYwMSwgCi0gICAgMjY2MDUsIDI2NjA4LCAyNjYxMCwgMjY2MTQsIDI2NjE4LCAyNjYyMywgMjY2MjgsIDI2NjMyLCAyNjYzNiwgMjY2MzksIAotICAgIDI2NjQzLCAyNjY0NiwgMjY2NTAsIDI2NjUzLCAyNjY1NiwgMjY2NjAsIDI2NjY2LCAyNjY3MCwgMjY2NzQsIDI2Njc4LCAKLSAgICAyNjY4MywgMjY2ODgsIDI2NjkzLCAyNjY5NywgMjY3MDAsIDI2NzA1LCAyNjcxMSwgMjY3MTYsIDI2NzIyLCAyNjcyNywgCi0gICAgMjY3MzEsIDI2NzM3LCAyNjc0MSwgMjY3NDUsIDI2NzUwLCAyNjc1NCwgMjY3NTksIDI2NzY0LCAyNjc2OCwgMjY3NzIsIAotICAgIDI2Nzc5LCAyNjc4MywgMjY3ODYsIDI2NzkwLCAyNjc5NCwgMjY4MDAsIDI2ODA2LCAyNjgxMCwgMjY4MTQsIDI2ODE5LCAKLSAgICAyNjgyNiwgMjY4MzIsIDI2ODM2LCAyNjg0NSwgMjY4NDksIDI2ODUzLCAyNjg1NiwgMjY4NjIsIDI2ODY3LCAyNjg3MywgCi0gICAgMTQ3NSwgMTgwNiwgMjY4NzgsIDI2ODgzLCAyNjg4OCwgMjY4OTMsIDI2ODk4LCAyNjkwMywgMjY5MDgsIDIxNzQsIDIyMjAsIAotICAgIDI2OTEzLCAyNjkxNiwgMjY5MjAsIDI2OTI0LCAyNjkyOSwgMjY5MzMsIDE2MDc3LCAyNjkzNywgMjY5NDIsIDI2OTQ3LCAKLSAgICAyNjk1MSwgMjY5NTQsIDI2OTU5LCAyNjk2MywgMjY5NjgsIDI2OTcyLCAxNjA4MSwgMjY5NzcsIDI2OTgwLCAyNjk4MywgCi0gICAgMjY5ODcsIDI2OTkyLCAyNjk5NiwgMjcwMDksIDI3MDEzLCAyNzAxNiwgMjcwMjQsIDI3MDMzLCAyNzA0MCwgMjcwNDUsIAotICAgIDI3MDUxLCAyNzA1NywgMjcwNjUsIDI3MDcyLCAyNzA3OSwgMjcwODMsIDI3MDg3LCAyNzA5MSwgMjcwOTYsIDI3MTAxLCAKLSAgICAyNzEwNSwgMjcxMTMsIDI3MTE4LCAyNzEzMCwgMjcxNDEsIDI3MTQ2LCAyNzE1MCwgMjcxNTcsIDI3MTYxLCAyNzE2NiwgCi0gICAgMjcxNzIsIDI3MTc1LCAyNzE4MCwgMjcxODUsIDI3MTg5LCAyNzE5MywgMjcxOTYsIDI3MjAyLCA4MjQ4LCAyMzUwLCAKLSAgICAyNzIwNiwgMjcyMTEsIDI3MjI3LCAxMDE5OCwgMjcyNDcsIDI3MjU2LCAyNzI3MiwgMjcyNzYsIDI3MjgzLCAyNzI4NiwgCi0gICAgMjcyOTIsIDI3MzAyLCAyNzMwOCwgMjczMTcsIDI3MzMyLCAyNzM0NCwgMjczNTUsIDI3MzYzLCAyNzM3MiwgMjczNzgsIAotICAgIDI3Mzg3LCAyNzM5NywgMjc0MDcsIDI3NDE4LCAyNzQyOSwgMjc0MzksIDI3NDQ4LCAyNzQ1NSwgMjc0NjQsIDI3NDcyLCAKLSAgICAyNzQ3OSwgMjc0ODcsIDI3NDk0LCAyNzUwMSwgMjc1MTQsIDI3NTIxLCAyNzUyOSwgMjc1MzYsIDI3NTQyLCAyNzU0NywgCi0gICAgMjc1NTYsIDI3NTYyLCAyNzU2NywgMjc1NzUsIDI3NTgyLCAyNzU4OSwgMjUzMDQsIDI3NjAxLCAyNzYxMywgMjc2MjcsIAotICAgIDI3NjM1LCAyNzY0MiwgMjc2NTQsIDI3NjYzLCAyNzY3MiwgMjc2ODAsIDI3Njg4LCAyNzY5NiwgMjc3MDMsIDI3NzA5LCAKLSAgICAyNzcxOCwgMjc3MjYsIDI3NzM2LCAyNzc0NSwgMjc3NTUsIDI3NzY0LCAyNzc3MywgMjc3ODEsIDI3Nzg2LCAyNzc5MCwgCi0gICAgMjc3OTMsIDI3Nzk3LCAyNzgwMSwgMjc4MDUsIDI3ODA5LCAyNzgxMywgMjc4MTksIDI3ODI1LCAyNzgzMywgMTYxMzksIAotICAgIDI3ODQwLCAyNzg0NSwgMjc4NTIsIDI3ODU4LCAyNzg2NSwgMTYxNDcsIDI3ODcyLCAyNzg3NSwgMjc4ODcsIDI3ODk1LCAKLSAgICAyNzkwMSwgMjc5MDYsIDI3OTEwLCAyNzkyMSwgMTA2NTEsIDI3OTMxLCAyNzkzOSwgMjc5NDksIDI3OTU4LCAyNzk2NSwgCi0gICAgMjc5NzIsIDI3OTgwLCAyNzk4NCwgMTYxNTgsIDI3OTg3LCAyNzk5NCwgMjc5OTgsIDI4MDA0LCAyODAwNywgMjgwMTQsIAotICAgIDI4MDIwLCAyODAyNywgMjgwMzMsIDI4MDM3LCAyODA0MiwgMjgwNDYsIDI4MDU1LCAyODA2MiwgMjgwNjgsIDgzMDYsIAotICAgIDI4MDc1LCAyODA4MywgMjgwOTAsIDI4MDk2LCAyODEwMSwgMjgxMDcsIDI4MTEzLCAyODEyMSwgMjgxMjcsIDI4MTMxLCAKLSAgICAyODEzNCwgMjgxMzYsIDI3Nzk4LCAyODE0NSwgMjgxNTEsIDI4MTU3LCAyODE2NywgMjgxNzIsIDI4MTc5LCAyODE4NSwgCi0gICAgMjgxOTAsIDI4MTk1LCAyODIwMCwgMjgyMDQsIDI4MjA5LCAyODIxNiwgMjgyMjIsIDI4MjMxLCAyODIzNSwgMjgyNDIsIAotICAgIDI4MjQ4LCAyODI1NywgNDM3OCwgMjgyNjMsIDI4MjY5LCAyODI3NCwgMjgyODEsIDI4MjkyLCAyODI5NywgMjgzMDEsIAotICAgIDI4MzExLCAyODMxNywgMjgzMjEsIDI4MzI2LCAyODMzNiwgMjgzNDUsIDI4MzQ5LCAyODM1NiwgMjgzNjQsIDI4MzcxLCAKLSAgICAyODM3NywgMjgzODIsIDI4MzkwLCAyODM5NywgMjg0MDIsIDI4NDA5LCAyODQyMSwgMjg0MzAsIDI4NDM0LCAxNDIxMiwgCi0gICAgMjg0NDIsIDI4NDUyLCAyODQ1NiwgMjcwMjAsIDI4NDY3LCAyODQ3MiwgMjg0NzYsIDI4NDgzLCAyODQ5MCwgMjM2NzAsIAotICAgIDI3NzIzLCAyODQ5NSwgMjg0OTksIDI4NTAyLCAyNDcxNCwgMjg1MDcsIDI4NTIxLCAyODUzNywgMjg1NTUsIDI4NTc0LCAKLSAgICAyODU5MSwgMjg2MDksIDI0NzMzLCAyODYyNiwgMjg2NDYsIDI0NzUwLCAyODY1OCwgMjg2NzAsIDE3MTc4LCAyODY4MiwgCi0gICAgMjQ3NzAsIDI4Njk2LCAyODcwOCwgMTE0NjEsIDI4NzIyLCAyODcyNywgMjg3MzIsIDI4NzM3LCAyODc0MywgMjg3NDksIAotICAgIDI4NzU1LCAyODc1OSwgMjg3NjcsIDI4Nzc0LCAyODc3OSwgMjg3ODksIDI4Nzk1LCAxMTA1OSwgMjg4MDEsIDI4ODAzLCAKLSAgICAyODgwOCwgMjg4MTYsIDI4ODIwLCAyODIxMiwgMjg4MjYsIDI4ODMzLCAxMjYwMSwgMTI2MTEsIDI4ODQwLCAyODg1MCwgCi0gICAgMjg4NTUsIDI4ODU5LCAyODg2MiwgMjg4NjgsIDI4ODc2LCAyODg4OCwgMjg4OTgsIDI4OTE0LCAyODkyNywgMjg5NDEsIAotICAgIDE3MTk2LCAyODk1NSwgMjg5NjIsIDI4OTY2LCAyODk2OSwgMjg5NzQsIDI4OTc4LCAyODk4NSwgMjg5OTIsIDI4OTk5LCAKLSAgICAyOTAwOSwgMjkwMTQsIDI5MDE5LCAyOTAyNCwgMjkwMzIsIDI5MDQwLCAyOTA0NSwgMjkwNTQsIDI5MDU5LCAzMzUzLCAKLSAgICAyOTA2MywgMjkwNjYsIDI5MDY5LCAyOTA3NCwgMjkwODEsIDI5MDg2LCAyOTEwMiwgMjkxMTAsIDI5MTE4LCA5OTY2LCAKLSAgICAyOTEyNiwgMjkxMzEsIDI5MTM1LCAyOTE0MSwgMjkxNDYsIDI5MTUyLCAyOTE1NSwgMjkxNjEsIDI5MTczLCAyOTE4MSwgCi0gICAgMjkxODgsIDI5MTk0LCAyOTIwMSwgMjkyMTIsIDI5MjI2LCAyOTIzOSwgMjkyNDUsIDI5MjU0LCAyOTI2MCwgMjkyNjksIAotICAgIDI5MjgxLCAyOTI5MiwgMjkzMDIsIDI5MzExLCAyOTMyMCwgMjkzMjgsIDI5MzM5LCA4Mjg4LCAyOTM0NiwgMjkzNTMsIAotICAgIDI5MzU5LCAyOTM2NCwgMjkzNzAsIDI5Mzc3LCAyOTM4NywgMjkzOTcsIDI5NDA2LCAyOTQxMiwgMjk0MTksIDI5NDI0LCAKLSAgICAyOTQzMiwgMjk0MzksIDI5NDQ3LCAyOTQ1NSwgMjk0NjcsIDY1NjMsIDk5NSwgMjk0NzQsIDI5NDgzLCAyOTQ5MSwgMjk0OTcsIAotICAgIDI5NTAzLCAyOTUwOCwgMjk1MTIsIDI5NTE1LCAyOTUyMSwgMjk1MjgsIDI5NTMzLCAyOTUzOCwgMjk1NDMsIDI5NTQ3LCAKLSAgICAyOTU1OSwgMjk1NzAsIDI5NTc5LCAyOTU4NywgMTYzMjMsIDI5NTkyLCAyOTU5NywgMjk2MDMsIDI5NjA5LCAxMjU5NCwgCi0gICAgOTA1OCwgMjk2MTQsIDI5NjE4LCAyOTYyMiwgMjk2MjUsIDI5NjI4LCAyOTYzNCwgMjk2NDIsIDI5NjUwLCAyOTY1NCwgCi0gICAgMjk2NTgsIDI5NjYzLCAyOTY2NiwgMjk2NzUsIDI5Njc5LCAyOTY4MiwgMjk2OTAsIDI5NzAxLCAyOTcwNSwgMjk3MTEsIAotICAgIDI5NzE3LCAyOTcyMSwgMjk3MjcsIDI5NzM1LCAyOTc1NywgMjk3ODEsIDI5NzkwLCAyOTc5NywgMjk4MDQsIDI5ODEwLCAKLSAgICAyOTgxOCwgMjk4MjQsIDI5ODI5LCAyOTg0MCwgMjk4NTgsIDI5ODY1LCAyOTg3MywgMjk4NzcsIDI5ODgyLCAyOTg5MSwgCi0gICAgMjk5MDQsIDI5OTEyLCAyOTkyNCwgMjk5MzUsIDI5OTQ2LCAyOTk1NiwgMjk5NzAsIDI5OTc5LCAyOTk4NywgMjk5OTksIAotICAgIDEwMjE1LCAzMDAxMCwgMzAwMjEsIDMwMDMzLCAzMDA0MywgMzAwNTIsIDMwMDU3LCAzMDA2MSwgMzAwNjksIDMwMDgwLCAKLSAgICAzMDA5MCwgMzAwOTUsIDMwMDk5LCAzMDEwMiwgMzAxMDUsIDMwMTEzLCAzMDEyMSwgMzAxMzAsIDMwMTQwLCAzMDE0OSwgCi0gICAgMzAxNTUsIDMwMTY5LCAyNzAyLCAzMDE5MSwgMzAyMDIsIDMwMjExLCAzMDIyMSwgMzAyMzMsIDMwMjQyLCAzMDI1MSwgCi0gICAgMzAyNjEsIDMwMjY5LCAzMDI3NywgMzAyODYsIDMwMjkxLCAzMDMwMiwgMzAzMDcsIDMwMzE4LCAzMDMyMiwgMzAzMzIsIAotICAgIDMwMzQxLCAzMDM0OSwgMzAzNTksIDMwMzY5LCAzMDM3NywgMzAzODYsIDMwMzkzLCAzMDQwMSwgMzA0MDgsIDMwNDE3LCAKLSAgICAzMDQyNiwgMzA0MzAsIDMwNDM4LCAzMDQ0NSwgMzA0NTMsIDMwNDYwLCAzMDQ3MSwgMzA0ODYsIDMwNDkzLCAzMDQ5OSwgCi0gICAgMzA1MDksIDMwNTE4LCAzMDUyNCwgMzA1MzUsIDMwNTM5LCAzMDU0NiwgMzA1NTAsIDMwNTU2LCAxNTI2NSwgMzA1NjIsIAotICAgIDMwNTY2LCAzMDU3MSwgMzA1NzcsIDMwNTg0LCAzMDU4OCwgMzA1OTIsIDMwNjAwLCAzMDYwOCwgMzA2MTQsIDMwNjIzLCAKLSAgICAzMDYzMCwgMzA2MzUsIDMwNjQwLCAzMDY1MCwgMjUzNzMsIDMwNjU0LCAzMDY1NywgMzA2NjIsIDMwNjY3LCAzMDY3MiwgCi0gICAgMzA2NzcsIDMwNjgyLCAzMDY4NywgMzA2OTIsIDMwNjk3LCAzMDcwMywgMzA3MDgsIDMwNzEzLCAzMDcxOSwgMTE5OSwgNjYwLCAKLSAgICAzMDcyNCwgMzA3MzMsIDIzOTgsIDMwNzQwLCAzMDc0NSwgMzA3NDksIDMwNzU1LCAxMjQ4LCA1NzgsIDI5MCwgMzA3NjAsIAotICAgIDMwNzY5LCAzMDc3NywgMzA3ODYsIDMwNzk0LCAzMDgwNSwgMzA4MTMsIDMwODIyLCAzMDgzMCwgMzA4MzUsIDEwNzk3LCAKLSAgICAzMDgzOSwgMzA4NDcsIDMwODU1LCAzMDg2MCwgMTYwOTQsIDM4MjQsIDMwODY2LCAzMDg3MiwgMzA4NzgsIDYxNDgsIAotICAgIDMwODgzLCAzMDg4NywgMzA4OTMsIDMwODk3LCAzMDkwMywgMzA5MDgsIDMwOTE1LCAxNDQxLCAzMDkyMSwgMzA5MjgsIAotICAgIDEzNDgsIDYxNTYsIDMwOTMyLCAzMDk0MiwgMzA5NTAsIDMwOTU2LCAzMDk2NiwgMzA5NzUsIDMwOTgzLCAzMDk4OSwgCi0gICAgMzA5OTcsIDMxMDA0LCAxMjEzNiwgMzEwMTAsIDMxMDE3LCAzMTAyMiwgMzEwMjksIDE0OTQsIDIxOSwgMjE3MywgMzEwMzUsIAotICAgIDMxMDQxLCAzMTA0OCwgMzEwNTksIDMxMDcwLCAzMTA3OCwgMzEwODUsIDMxMDk1LCAzMTEwNCwgMzExMTIsIDMxMTIxLCAKLSAgICAzMTEyOCwgMzExMzUsIDMxMTQ4LCAzMTE1NSwgMzExNjEsIDMxMTcyLCAzMTE5MSwgMTI1MywgMzExOTYsIDMxMjAxLCAKLSAgICAzMTIwOSwgMzc0MiwgMzEyMTMsIDMxMjE4LCAzMTIyMiwgMzEyMjYsIDE0NDUsIDI2NjM3LCAzMTIzNiwgMzEyNDAsIAotICAgIDMxMjQ1LCAzMTI0OSwgMzYxOSwgMzEyNTUsIDMxMjYzLCAzMTI3MCwgMzEyODEsIDMxMjg5LCAzMTI5NywgMzc0MywgMzQ2LCAKLSAgICAzMTMwMiwgMzEzMTAsIDMxMzE4LCAzMTMyNSwgMzEzMzEsIDMxMzM2LCAyMjQyLCAxMTYyOCwgMzEzNDMsIDMxMzQ5LCAKLSAgICAyODAzOCwgMjgyODcsIDMxMzU1LCA1NzQsIDEwNiwgMzEzNTksIDMxMzYzLCAzMTM2OSwgNjYzLCA5ODQxLCAzMTM3NCwgCi0gICAgMzEzODEsIDMxMzg3LCAzMTM5MSwgMTYzOSwgMzEzOTQsIDMxMzk4LCAxNjU3NiwgMzE0MDEsIDMxNDA2LCAzMTQxMywgCi0gICAgMzE0MTksIDMxNDI0LCAzMTQzMiwgMzE0MzksIDMxNDQ1LCAyNDEzMiwgMzE0NDksIDMxNDUzLCAzMTQ1NywgMzgxMywgCi0gICAgMTgxODAsIDMxNDYxLCAzMTQ2NiwgMzE0NzAsIDMxNDczLCAzMTQ4MSwgMzE0ODksIDMxNDk0LCAzMTUwMiwgMzE1MDUsIAotICAgIDMxNTEyLCAzMTUyMiwgMzE1MzQsIDMxNTM5LCAzMTU0MywgMzE1NTEsIDMxNTU4LCAzMTU2NCwgMzE1NzEsIDMxNTc4LCAKLSAgICAzMTU4MSwgMzE1ODUsIDMxNTg5LCAxNDQ5LCAzMTU5OSwgMzE2MDEsIDMxNjA2LCAzMTYxMiwgMzE2MTgsIDMxNjIzLCAKLSAgICAzMTYyOCwgMzE2MzMsIDMxNjM4LCAzMTY0MywgMzE2NDgsIDMxNjUzLCAzMTY1OCwgMzE2NjMsIDMxNjY4LCAzMTY3MywgCi0gICAgMzE2NzgsIDMxNjgzLCAzMTY4OCwgMzE2OTQsIDMxNzAwLCAzMTcwNiwgMzE3MTIsIDMxNzE3LCAzMTcyMiwgMzE3MjcsIAotICAgIDMxNzMzLCAzMTczOCwgMzE3NDMsIDMxNzQ4LCAzMTc1NCwgMzE3NTksIDMxNzY1LCAzMTc3MCwgMzE3NzUsIDMxNzgwLCAKLSAgICAzMTc4NSwgMzE3OTEsIDMxNzk2LCAzMTgwMiwgMzE4MDcsIDMxODEyLCAzMTgxNywgMzE4MjIsIDMxODI4LCAzMTgzMywgCi0gICAgMzE4MzksIDMxODQ0LCAzMTg0OSwgMzE4NTQsIDMxODU5LCAzMTg2NCwgMzE4NjksIDMxODc0LCAzMTg3OSwgMzE4ODQsIAotICAgIDMxODkwLCAzMTg5NiwgMzE5MDIsIDMxOTA3LCAzMTkxMiwgMzE5MTcsIDMxOTIyLCAzMTkyOCwgMzE5MzQsIDMxOTQwLCAKLSAgICAzMTk0NiwgMzE5NTIsIDMxOTU4LCAzMTk2MywgMzE5NjksIDMxOTc0LCAzMTk3OSwgMzE5ODQsIDMxOTg5LCAzMTk5NSwgCi0gICAgMjQ4MiwgMzIwMDAsIDI0ODksIDI0OTYsIDI3OTMsIDMyMDA1LCAyNTAyLCAyNTEyLCAzMjAxMSwgMzIwMTUsIDMyMDIwLCAKLSAgICAzMjAyNSwgMzIwMzEsIDMyMDM2LCAzMjA0MSwgMzIwNDUsIDMyMDUwLCAzMjA1NiwgMzIwNjEsIDMyMDY2LCAzMjA3MSwgCi0gICAgMzIwNzcsIDMyMDgyLCAzMjA4NiwgMzIwOTAsIDMyMDk1LCAzMjEwMCwgMzIxMDUsIDMyMTEwLCAzMjExNSwgMzIxMjEsIAotICAgIDMyMTI3LCAzMjEzMiwgMzIxMzYsIDMyMTQxLCAzMjE0NywgMzIxNTEsIDMyMTU2LCAzMjE2MSwgMzIxNjYsIDMyMTcxLCAKLSAgICAzMjE3NSwgMzIxNzgsIDMyMTgzLCAzMjE4OCwgMzIxOTMsIDMyMTk4LCAzMjIwMywgMzIyMDksIDMyMjE1LCAzMjIyMCwgCi0gICAgMzIyMjUsIDMyMjMwLCAzMjIzNCwgMzIyMzksIDMyMjQ0LCAzMjI0OSwgMzIyNTQsIDMyMjU5LCAzMjI2NCwgMzIyNjgsIAotICAgIDMyMjczLCAzMjI3OCwgMzIyODMsIDMyMjg3LCAzMjI5MSwgMzIyOTUsIDMyMzAwLCAzMjMwOCwgMzIzMTMsIDMyMzE4LCAKLSAgICAzMjMyNCwgMzIzMzAsIDMyMzM2LCAzMjM0MSwgMzIzNDUsIDMyMzQ4LCAzMjM1MywgMzIzNTgsIDMyMzYyLCAzMjM2NywgCi0gICAgMzIzNzIsIDMyMzc2LCAzMjM4MSwgMzIzODUsIDMyMzg4LCAzMjM5MywgMzkxNCwgMTg5MDYsIDMyMzk4LCAzMjQwMywgCi0gICAgMzI0MDgsIDMyNDE2LCAyMjk1OSwgMzA5MjUsIDk1MTgsIDMyNDIxLCAzMjQyNiwgMzI0MzAsIDMyNDM1LCAzMjQzOSwgCi0gICAgMzI0NDMsIDMyNDQ4LCAzMjQ1MiwgMzI0NTUsIDMyNDU4LCAzMjQ2MiwgMzI0NjcsIDMyNDcxLCAzMjQ3OSwgMzI0ODMsIAotICAgIDMyNDg2LCAzMjQ5MSwgMzI0OTUsIDMyNDk5LCAzMjUwNCwgMzI1MDksIDMyNTEzLCAzMjUxOSwgMzI1MjQsIDMyNTI5LCAKLSAgICAzMjUzNiwgMzI1NDMsIDMyNTQ3LCAzMjU1MCwgMzI1NTYsIDMyNTY1LCAzMjU3MiwgMzI1ODAsIDMyNTg3LCAzMjU5MSwgCi0gICAgMzI1OTYsIDMyNjAwLCAzMjYwNCwgMzI2MTAsIDMyNjE2LCAzMjYyMCwgMzI2MjYsIDMyNjMxLCAzMjYzNiwgMzI2NDAsIAotICAgIDMyNjQ3LCAzMjY1MywgMzI2NTksIDMyNjY1LCAzMjY3MSwgMzI2NzgsIDMyNjg0LCAzMjY5MCwgMzI2OTYsIDMyNzAyLCAKLSAgICAzMjcwOCwgMzI3MTQsIDMyNzIwLCAzMjcyNywgMzI3MzMsIDMyNzQwLCAzMjc0NiwgMzI3NTIsIDMyNzU4LCAzMjc2NCwgCi0gICAgMzI3NzAsIDMyNzc2LCAzMjc4MiwgMzI3ODgsIDMyNzk0LCAxMjQ3OSwgMzI4MDAsIDMyODA2LCAzMjgxMSwgMzI4MTYsIAotICAgIDMyODIxLCAzMjgyNCwgMzI4MzAsIDMyODM4LCAzMjg0MywgMzI4NDcsIDMyODUyLCAzMjg1OCwgMzI4NjcsIDMyODczLCAKLSAgICAzMjg3OCwgMzI4ODMsIDMyODg4LCAzMjg5MiwgMzI4OTcsIDMyOTAyLCAzMjkwNywgMzI5MTIsIDMyOTE3LCAzMjkyNCwgCi0gICAgMzI5MzEsIDMyOTM3LCAzMjk0MywgMzI5NDgsIDE3ODIyLCAzMjk1NSwgMzI5NjEsIDMyOTY4LCAzMjk3NCwgMzI5ODAsIAotICAgIDMyOTg1LCAzMjk5MywgMzI5OTgsIDEwMzcyLCAzMzAwMiwgMzMwMDcsIDMzMDEyLCAzMzAxOCwgMzMwMjMsIDMzMDI4LCAKLSAgICAzMzAzMiwgMzMwMzcsIDMzMDQyLCAzMzA0OCwgMzMwNTMsIDMzMDU4LCAzMzA2MywgMzMwNjcsIDMzMDcyLCAzMzA3NywgCi0gICAgMzMwODEsIDMzMDg2LCAzMzA5MSwgMzMwOTUsIDMzMTAwLCAzMzEwNCwgMzMxMDksIDMzMTE0LCAzMzExOSwgMzMxMjMsIAotICAgIDMzMTI4LCAzMzEzMiwgMzMxMzYsIDE2NjgyLCAzMzE0MSwgMzMxNTAsIDMzMTU2LCAzMzE2MiwgMzMxNzEsIDMzMTc5LCAKLSAgICAzMzE4OCwgMzMxOTYsIDMzMjAxLCAzMzIwNSwgMzMyMTIsIDMzMjE4LCAzMzIyNiwgMzMyMzAsIDMzMjMzLCAzMzIzOCwgCi0gICAgMzMyNDIsIDMzMjUxLCAzMzI1OSwgMzMyNzcsIDMzMjgzLCAxNDkzLCAzMzI4OSwgMzMyOTIsIDMzMjk2LCAyNDIzOCwgCi0gICAgMjQyNDQsIDMzMzAyLCAzMzMwNiwgMzMzMTcsIDMzMzI4LCAzMzMzOSwgMzMzNTEsIDMzMzU1LCAzMzM2MiwgMzMzNjksIAotICAgIDMzMzc0LCAzMzM3OCwgNjIwNCwgOTI4LCAyMjk1OCwgMzMzODYsIDMzMzkxLCAzMzM5NSwgMzM0MDAsIDMzNDA0LCAzMzQxMCwgCi0gICAgMzM0MTUsIDMzNDIxLCAzMzQyNiwgMzM0MzIsIDMzNDM3LCAzMzQ0MywgMzM0NDgsIDMzNDU0LCAzMzQ2MCwgMzM0NjYsIAotICAgIDMzNDcxLCAzMzQyNywgMzM0MzMsIDMzNDc1LCAzMzQ4MCwgMzM0ODYsIDMzNDkxLCAzMzQ5NywgMzM1MDIsIDMzNTA4LCAKLSAgICAzMzUxMywgMzM0MzgsIDExMzE0LCAzMzUxNywgMzM0NDksIDMzNDU1LCAzMzQ2MSwgMjg4NSwgMzUzMywgMzM1MjMsIAotICAgIDMzNTI2LCAzMzUzMSwgMzM1MzcsIDMzNTQzLCAzMzU0OSwgMzM1NTYsIDMzNTYyLCAzMzU2OCwgMzM1NzQsIDMzNTgwLCAKLSAgICAzMzU4NiwgMzM1OTIsIDMzNTk4LCAzMzYwNCwgMzM2MTAsIDMzNjE2LCAzMzYyMiwgMzM2MjgsIDMzNjM1LCAzMzY0MSwgCi0gICAgMzM2NDcsIDMzNjUzLCAzMzY1OSwgMzM2NjUsIDMzNjY4LCAzMzY3MywgMzM2NzYsIDMzNjgzLCAzMzY4OCwgMzM2OTYsIAotICAgIDMzNzAxLCAzMzcwNiwgMzM3MTIsIDMzNzE3LCAzMzcyMiwgMzM3MjYsIDMzNzMxLCAzMzczNywgMzM3NDIsIDMzNzQ4LCAKLSAgICAzMzc1MywgMzM3NTksIDMzNzY0LCAzMzc3MCwgMzM3NzYsIDMzNzgwLCAzMzc4NSwgMzM3OTAsIDMzNzk1LCAzMzgwMCwgCi0gICAgMzM4MDQsIDMzODA5LCAzMzgxNCwgMzM4MTksIDMzODI1LCAzMzgzMSwgMzM4MzcsIDMzODQzLCAzMzg0OCwgMzM4NTIsIAotICAgIDMzODU1LCAzMzg2MSwgMzM4NjcsIDMzODc2LCAzMzg4NCwgMzM4OTEsIDMzODk2LCAzMzkwMCwgMzM5MDQsIDMzOTA5LCAKLSAgICAxNjUzMCwgMzM5MTQsIDMzOTIyLCAzMzkyOCwgMzg2NiwgMTM1OCwgMzM5MzMsIDMzOTM3LCA4MzU5LCAzMzk0MywgMzM5NDksIAotICAgIDMzOTU2LCA4MzY4LCAzMzk2MCwgMzM5NjYsIDMzOTczLCAzMzk3OSwgMzM5ODgsIDMzOTk2LCA5MjQ0LCAzNDAwOCwgCi0gICAgMzQwMTIsIDM0MDE5LCAzNDAyNSwgMzQwMzAsIDM0MDM0LCAzNDAzOCwgMzQwNDEsIDM0MDUxLCAzNDA2MCwgMzQwNjgsIAotICAgIDMzNDI4LCAzNDA3MywgMzQwODMsIDM0MDkzLCAzNDEwMywgMzQxMDksIDM0MTE0LCAzNDEyNCwgMzQxMjksIDM0MTQyLCAKLSAgICAzNDE1NiwgMzQxNjcsIDM0MTc5LCAzNDE5MSwgMzQyMDUsIDM0MjE4LCAzNDIzMCwgMzQyNDIsIDE1ODk5LCAzNDI1NiwgCi0gICAgMzQyNjEsIDM0MjY2LCAzNDI3MCwgMzQyNzQsIDM0Mjc4LCAxNzk1LCAyOTI5MCwgMzQyODIsIDM0Mjg3LCAzMzQ3NiwgCi0gICAgMzQyOTIsIDM0Mjk1LCAzNDMwMCwgMzQzMDUsIDM0MzEwLCAzNDMxNiwgMzQzMjIsIDEwOTc0LCAzNDMyNywgMzQzMzMsIAotICAgIDM0MzQwLCAxNzEzMCwgMzQzNDYsIDM0MzUxLCAzNDM1NiwgMzQzNjAsIDM0MzY1LCAzNDM3MCwgMzM0ODEsIDM0Mzc1LCAKLSAgICAzNDM4MCwgMzQzODUsIDM0MzkxLCAzMzQ4NywgMzQzOTYsIDM0Mzk5LCAzNDQwNiwgMzQ0MTQsIDM0NDIwLCAzNDQyNiwgCi0gICAgMzQ0MzIsIDM0NDQzLCAzNDQ0OCwgMzQ0NTUsIDM0NDYyLCAzNDQ2OSwgMzQ0NzcsIDM0NDg2LCAzNDQ5NSwgMzQ1MDEsIAotICAgIDM0NTA3LCAzNDUxNSwgMzM0OTIsIDM0NTIwLCAzNDUyNiwgMzQ1MzIsIDMzNDk4LCAzNDUzNywgMzQ1NDIsIDM0NTUwLCAKLSAgICAzNDU1OCwgMzQ1NjQsIDM0NTcxLCAzNDU3NywgMzQ1ODQsIDM0NTkxLCAzNDU5NywgMzQ2MDUsIDM0NjE1LCAzNDYyMiwgCi0gICAgMzQ2MjgsIDM0NjMzLCAzNDYzOSwgMzQ2NDQsIDM0NjQ5LCAzNDY1NiwgMzQ2NjUsIDM0NjczLCAzNDY3OCwgMzQ2ODQsIAotICAgIDM0NjkxLCAzNDY5OSwgMzQ3MDUsIDM0NzEwLCAzNDcxNiwgMzQ3MjUsIDM0NzMyLCAzMDEzNSwgMzQ3MzgsIDM0NzQyLCAKLSAgICAzNDc0NywgMzQ3NTYsIDM0NzYxLCAzNDc2NiwgMzQ3NzEsIDEzNTQ4LCAzNDc3OSwgMzQ3ODQsIDM0Nzg5LCAzNDc5NCwgCi0gICAgMzQ3OTgsIDM0ODAzLCAzNDgwOCwgMzQ4MTUsIDM0ODIwLCAzNDgyNSwgMzQ4MzAsIDMzNTAzLCAyMjg5NSwgMzQ4MzYsIAotICAgIDI1NTgsIDE0NCwgMzQ4MzksIDM0ODQyLCAzNDg0NiwgMzQ4NTAsIDM0ODYwLCAzNDg2OCwgMzQ4NzUsIDM0ODc5LCAzNDg4MiwgCi0gICAgMzQ4OTAsIDM0ODk3LCAzNDkwNCwgMzQ5MTMsIDM0OTE3LCAzNDkyMCwgMzQ5MjYsIDM0OTMwLCAzNDkzOCwgMzQ5NDYsIAotICAgIDM0OTUwLCAzNDk1NCwgMzQ5NTcsIDM0OTYzLCAzNDk3MCwgMzQ5NzQsIDM0OTc4LCAzNDk4NSwgMzQ5OTMsIDMzNDM5LCAKLSAgICAzNTAwMCwgMzUwMDgsIDM1MDEzLCAxMTAzNCwgNjIzLCAzNjksIDM1MDI1LCAzNTAzMCwgMzUwMzUsIDM1MDQxLCAzNTA0NiwgCi0gICAgMzUwNTEsIDM4ODcsIDM1MDU2LCAzNTA1OSwgMzUwNjQsIDM1MDY5LCAzNTA3NCwgMzUwNzksIDM1MDg0LCAzNTA5MSwgCi0gICAgMjQzNTYsIDM1MDk2LCAzNTEwMSwgMzUxMDYsIDM1MTExLCAzNTExNiwgMzUxMjIsIDM1MTI3LCAzNTEzMywgMzM2NzksIAotICAgIDM1MTM5LCAzNTE0NCwgMzUxNTAsIDM1MTU2LCAzNTE2NiwgMzUxNzEsIDM1MTc2LCAzNTE4MCwgMzUxODUsIDM1MTkwLCAKLSAgICAzNTE5NSwgMzUyMDAsIDM1MjEzLCAzNTIxOCwgMjQwMTksIDE4MjU1LCAzOTAwLCAzNTIyMiwgMzUyMjgsIDM1MjMzLCAKLSAgICAzNTIzOCwgMzUyNDQsIDM1MjQ5LCAzNTI1NCwgMzUyNTgsIDM1MjYzLCAzNTI2OCwgMzUyNzQsIDM1Mjc5LCAzNTI4NCwgCi0gICAgMTM2MywgMzUyODgsIDM1MjkzLCAzNTI5OCwgMzUzMDMsIDM1MzA3LCAzNTMxMiwgMzUzMTcsIDM1MzIyLCAzNTMyOCwgCi0gICAgMzUzMzQsIDM1MzM5LCAzNTM0MywgMzUzNDcsIDM1MzUyLCAzNTM1NywgMzUzNjIsIDM1MzY2LCAzNTM3NCwgMzUzNzgsIAotICAgIDM1Mzg0LCAzNTM4OCwgMzUzOTUsIDE4MDM5LCAzMzQ1MCwgMzU0MDEsIDM1NDA4LCAzNTQxNiwgMzU0MjMsIDM1NDI5LCAKLSAgICAzNTQ0MiwgMzU0NTQsIDM1NDU5LCAzNTQ2NSwgMzU0NjksIDI4MTIsIDM1NDczLCAzNTQ3NywgMzQ5NjUsIDM1NDg2LCAKLSAgICAzNTQ5NywgMzU1MDIsIDMwMTk4LCAzNTUwNywgMzU1MTIsIDM1NTE2LCAzNTUyMSwgMjQyNDksIDM1NTI1LCAzNTUyOSwgCi0gICAgMzU1MzQsIDMzNDU2LCAyMjk4NSwgMzU1MzgsIDM1NTQzLCAzNTU0OSwgMzU1NTQsIDM1NTU4LCAzNTU2MiwgMzU1NjUsIAotICAgIDM1NTY5LCAzNTU3NSwgMzU1ODQsIDM1NTk1LCAzNTYwNywgMzM0NjIsIDM1NjEyLCAzNTYxNSwgMzU2MTksIDM1NjIzLCAKLSAgICA0MDYsIDM1NjI4LCAzNTYzMywgMzU2MzgsIDM1NjQzLCAzNTY0OCwgMzU2NTMsIDM1NjU5LCAzNTY2NCwgMzU2NjksIAotICAgIDM1Njc1LCAzNTY4MCwgMzU2ODYsIDM1NjkxLCAzNTY5NywgMzU3MDIsIDM1NzA3LCAzNTcxMiwgMzU3MTcsIDM1NzIyLCAKLSAgICAzNTcyNywgMzU3MzIsIDM1NzM3LCAzNTc0MywgMzU3NDgsIDM1NzUzLCAzNTc1OCwgMzU3NjMsIDM1NzY4LCAzNTc3MywgCi0gICAgMzU3NzgsIDM1Nzg0LCAzNTc5MCwgMzU3OTUsIDM1ODAwLCAzNTgwNSwgMzU4MTAsIDM1ODE1LCAzNTgyMCwgMzU4MjUsIAotICAgIDM1ODMwLCAzNTgzNSwgMzU4NDAsIDM1ODQ1LCAzNTg1MCwgMzU4NTUsIDM1ODYwLCAzNTg2NSwgMzU4NzAsIDM1ODc1LCAKLSAgICAzNTg4MCwgMzU4ODYsIDMyNSwgOSwgMzU4OTEsIDM1ODk1LCAzNTg5OSwgMzU5MDcsIDM1OTExLCAzNTkxNSwgMzU5MTgsIAotICAgIDM1OTIxLCAzNTkyMywgMzU5MjgsIDM1OTMyLCAzNTkzNywgMzU5NDEsIDM1OTQ2LCAzNTk1MCwgMzU5NTUsIDM1OTU5LCAKLSAgICAzNTk2MiwgMzU5NjQsIDM1OTY4LCAzNTk3MywgMzU5NzcsIDM1OTg4LCAzNTk5MSwgMzU5OTMsIDM1OTk3LCAzNjAwOSwgCi0gICAgMzYwMTgsIDM2MDIyLCAzNjAyNiwgMzYwMzIsIDM2MDM3LCAzNjA0NiwgMzYwNTIsIDM2MDU3LCAzNjA2MiwgMzYwNjYsIAotICAgIDM2MDcwLCAzNjA3NSwgMzYwODIsIDM2MDg3LCAzNjA5MywgMzYwOTgsIDM2MTAyLCAzNjEwOSwgMjc3MzEsIDI3NzQxLCAKLSAgICAzNjExMywgMzYxMTgsIDM2MTIzLCAzNjEyOCwgMzYxMzUsIDM2MTM5LCAzNjE0NiwgMzYxNTIsIDg0OTEsIDM2MTU2LCAKLSAgICAzNjE2NSwgMzYxNzMsIDM2MTg4LCAzNjIwMiwgMzYyMTEsIDM2MjE5LCAzNjIzMCwgMzYyMzksIDM2MjQ0LCAzNjI1MSwgCi0gICAgNzU1NiwgMzYyNjEsIDM2MjY2LCAzNjI3MSwgMzYyNzUsIDM2Mjc4LCAzNjI4MywgMzYyODcsIDM2MjkyLCAzNjI5NiwgCi0gICAgMzYzMDMsIDM2MzA4LCAzNjMxMywgMzYzMTgsIDkzOTEsIDM2MzI4LCAzNjMzMCwgMzYzMzMsIDM2MzM2LCAzNjM0MCwgCi0gICAgMzYzNDYsIDM2MzUwLCAzNjM1NSwgMzYzNjAsIDM2Mzc4LCAzNjM5MiwgMzY0MTEsIDM2NDI4LCAzNjQzNywgMzY0NDUsIAotICAgIDM2NDUwLCAzNjQ1NSwgMTQ4NiwgMzY0NjEsIDM2NDY3LCAzNjQ3MiwgMzY0ODIsIDM2NDkxLCAzNjQ5OSwgMzY1MDQsIAotICAgIDM2NTEwLCAzNjUxNSwgMzY1MjQsIDM2NTM1LCAzNjU0MCwgMzY1NDcsIDM2NTUxLCAzNjU1OCwgMzY1NjYsIDM2NTczLCAKLSAgICAzNjU4NiwgMzY1OTQsIDM2NTk4LCAzNjYwOCwgMzY2MTMsIDM2NjE3LCAzNjYyNSwgMzY2MzMsIDM2NjM4LCAzNjY0MiwgCi0gICAgMzY2NDYsIDM2NjU1LCAzNjY2MSwgMzY2NjYsIDM2Njc0LCAzNjY4NCwgMzY2OTMsIDM2NzAyLCAzNjcxMSwgMzY3MjIsIAotICAgIDM2NzMwLCAzNjc0MSwgMzY3NTAsIDM2NzU3LCAzNjc2MywgMzY3NjgsIDM2Nzc5LCAzNjc5MCwgMzY3OTUsIDM2Nzk5LCAKLSAgICAzNjgwMiwgMzY4MDYsIDM2ODE0LCAzNjgyMCwgMzY4MzEsIDM2ODQyLCAzNjg1MywgMzY4NjQsIDM2ODc1LCAzNjg4NiwgCi0gICAgMzY4OTcsIDM2OTA4LCAzNjkyMCwgMzY5MzIsIDM2OTQ0LCAzNjk1NiwgMzY5NjgsIDM2OTgwLCAzNjk5MiwgMzY5OTYsIAotICAgIDM3MDA0LCAzNzAxMCwgMzcwMTcsIDM3MDIzLCAzNzAyOCwgMzcwMzQsIDI0NTcsIDM3MDM4LCAzNzA0MCwgMzcwNDUsIAotICAgIDM3MDUwLCAzNzA1NSwgMzcwNTgsIDM3MDYwLCAzNzA2NCwgMzcwNjcsIDM3MDc0LCAzNzA3OCwgMTA2NjQsIDM3MDgyLCAKLSAgICAzNzA4OCwgMzcwOTgsIDM3MTAzLCAzNzEwOSwgMzcxMTMsIDM3MTE4LCAzNzEzMSwgMjgxNjIsIDM3MTM3LCAzNzE0NiwgCi0gICAgMzcxNTUsIDE5MTA0LCAzNzE2MiwgMzcxNzEsIDM0MDg5LCAzNzE3OSwgMzcxODQsIDM3MTg4LCAzNzE5NywgMzcyMDUsIAotICAgIDM3MjEyLCAzNzIxNywgMzcyMjEsIDM3MjI2LCAzNzIzNCwgMzcyMzgsIDM3MjQ2LCAzNzI1MiwgMzcyNTgsIDM3MjYzLCAKLSAgICAzNzI2NywgMzcyNzAsIDM3Mjc1LCAzNzI4OCwgMzczMDQsIDI0ODQwLCAzNzMyMSwgMzczMzMsIDM3MzUwLCAzNzM2MiwgCi0gICAgMzczNzYsIDI0ODU3LCAyNDg3NiwgMzczODgsIDM3NDAwLCAyNzE5LCAzNzQxNCwgMzc0MTksIDM3NDI0LCAzNzQyOSwgCi0gICAgMzc0MzMsIDM3NDQwLCAzNzQ1MiwgMzc0NTksIDM3NDY4LCAzNzQ3MSwgMzc0ODIsIDM3NDkzLCAzNzQ5OCwgMzQ1MTIsIAotICAgIDg1MiwgMzc1MDIsIDM3NTA2LCAzNzUxMCwgMzc1MTMsIDM3NTE4LCAzNzUyMywgMzc1MjksIDM3NTM0LCAzNzUzOSwgCi0gICAgMzc1NDUsIDM3NTUxLCAzNzU1NiwgMzc1NjAsIDM3NTY1LCAzNzU3MCwgMzc1NzUsIDM3NTc5LCAzNzU4MiwgMzc1ODgsIAotICAgIDM3NTkzLCAzNzU5OCwgMzc2MDMsIDM3NjA3LCAzNzYxMiwgMzc2MTgsIDM3NjI2LCAyODQxNCwgMzc2MzEsIDM3NjM2LCAKLSAgICAzNzY0MywgMzc2NDksIDM3NjU1LCAzNzY2MCwgMzc2NjgsIDI0MzY1LCAzNzY3NSwgMzc2ODAsIDM3Njg1LCAzNzY5MCwgCi0gICAgMzc2OTQsIDM3Njk3LCAzNzcwMiwgMzc3MDYsIDM3NzEwLCAzNzcxNywgMzc3MjMsIDM3NzI5LCAzNzczNSwgMzc3NDIsIAotICAgIDM3NzQ3LCAzNzc1MywgMzY2MjgsIDM3NzU3LCAzNzc2MSwgMzc3NjYsIDM3Nzc5LCAzNzc4NCwgMzc3OTAsIDM3Nzk4LCAKLSAgICAzNzgwNSwgMzc4MTMsIDM3ODIzLCAzNzgyOSwgMzc4MzUsIDM3ODQxLCAzNzg0NSwgMzc4NTQsIDM3ODYyLCAzNzg2OSwgCi0gICAgMzc4NzQsIDM3ODc5LCAxMTMzNywgMzc4ODQsIDM3ODkxLCAzNzg5NywgMzc5MDcsIDM3OTEyLCAzNzkxOCwgMzc5MjYsIAotICAgIDM3NzUsIDM3OTMzLCAzNzk0MCwgMzc5NDYsIDM3OTUzLCAzNzgxLCAzNzk1NywgMzc5NjIsIDM3OTczLCAzNzk4MCwgCi0gICAgMzc5ODYsIDM3OTk1LCAzNzk5OSwgNDI0NCwgMzgwMDIsIDM4MDA5LCAzODAxNSwgMzgwMjEsIDM4MDI5LCAzODAzOSwgCi0gICAgMzEzMjYsIDM4MDQ2LCAzODA1NCwgMzgwNjAsIDM4MDY1LCAzODA3MSwgMzgwNzYsIDM4MDgwLCAyODAxMCwgMzgwODYsIAotICAgIDM4MDkzLCAzODA5OSwgMzgxMDgsIDM4MTE1LCAyNTU2NSwgMzgxMjEsIDM4MTI2LCAzODEzMCwgMzgxMzgsIDM4MTQ2LCAKLSAgICAxMDMzMCwgNjE3OSwgMzgxNTMsIDM4MTU3LCAzODE1OSwgMzgxNjMsIDM4MTY4LCAzODE3MCwgMzgxNzUsIDM4MTgxLCAKLSAgICAzODE4NiwgMzgxOTEsIDM4MTk4LCAzNTA4NywgMzgyMDQsIDM4MjA5LCAzODIxMywgMzgyMTgsIDM4MjIyLCAzODIzMSwgCi0gICAgMzgyMzUsIDM4MjQxLCAzODI0OCwgMzgyNTQsIDM4MjYxLCAzODI2NiwgMzgyNzUsIDM4MjgwLCAzODI4NCwgMzgyODksIAotICAgIDM4Mjk2LCAzODMwNCwgMzgzMTIsIDM4MzE3LCAyMzA0MSwgMzgzMjEsIDM4MzI0LCAzODMyOCwgMzgzMzIsIDExNzI1LCAKLSAgICA4NzIsIDM4MzM2LCAzODM0MSwgMzgzNDksIDM4MzUzLCAzODM2MiwgMzgzNjksIDM4MzczLCAzODM3NywgMzgzODUsIAotICAgIDM4MzkyLCAzODQwMiwgMzg0MDYsIDM4NDEwLCAzODQxOCwgMzg0MjYsIDM4NDMyLCAzODQzNywgMzg0NDYsIDE0NTMwLCAKLSAgICAzODQ1MiwgMzg0NjEsIDM4NDY2LCAzODQ3MywgMzg0ODAsIDM4NDg4LCAzODQ5NiwgMzg1MDQsIDM4NTA5LCAzODUxNiwgCi0gICAgMzg1MjMsIDM4NTMwLCAzODUzNywgMzg1NDQsIDM4NTQ5LCAzODU1NSwgMzg1NzIsIDM4NTgwLCAzODU5MCwgMzg1OTgsIAotICAgIDM4NjA1LCA0MTQsIDM4NjA5LCAzODYxNSwgMzg2MTksIDM4NjI0LCAzNjIzNSwgMzg2MzAsIDM4NjMzLCAzODYzNywgCi0gICAgMzg2NDgsIDM4NjU2LCAzNzg2LCAzODY2NCwgMzg2NzAsIDM4Njc2LCAzODY4NiwgMzg2OTUsIDM4NzA1LCAzODcxMiwgCi0gICAgMzg3MTgsIDM4NzIzLCAzNzkyLCAzNzk4LCAzODczMiwgMzg3MzksIDM4NzQ3LCAzODc1MiwgMzg3NTYsIDM4NzYzLCAKLSAgICAzODc3MSwgMzg3NzgsIDM4Nzg0LCAzODc5MywgMzg4MDMsIDM4ODA5LCAzODgxNywgMzg4MjYsIDM4ODMzLCAzODg0MSwgCi0gICAgMzg4NDgsIDIzNzI4LCAzODg1MiwgMzg4NTksIDM4ODY1LCAzODg3NSwgMzg4ODQsIDM4ODkyLCAzODkwMywgMzg5MDcsIAotICAgIDM4OTE3LCAzODkyMywgMzg5MzAsIDM4OTM4LCAzODk0NywgMzg5NTYsIDM4OTY2LCAzODk3NywgMzg5ODQsIDM4OTg5LCAKLSAgICAzODk5NiwgMzA4OCwgMzkwMDQsIDM5MDEwLCAzOTAxNSwgMzkwMjEsIDM5MDI3LCAzOTAzMiwgMzkwNDUsIDM5MDU4LCAKLSAgICAzOTA3MSwgMzkwNzgsIDM5MDg0LCAzOTA5MiwgMzkxMDAsIDM5MTA1LCAzOTEwOSwgMTQ1NSwgMzkxMTMsIDM5MTE3LCAKLSAgICAzOTEyMSwgMzkxMjUsIDM5MTI5LCAzOTEzMywgMzkxMzcsIDM5MTQxLCAzOTE0NSwgMzkxNDksIDM5MTUzLCAzOTE1NywgCi0gICAgMzkxNjEsIDM5MTY1LCAzOTE2OSwgMzkxNzMsIDM5MTc3LCAzOTE4MSwgMzkxODUsIDM5MTg5LCAzOTE5MywgMzkxOTcsIAotICAgIDM5MjAxLCAzOTIwNSwgMzkyMDksIDM5MjEzLCAzOTIxNywgMzkyMjEsIDM5MjI1LCAzOTIyOSwgMzkyMzMsIDM5MjM3LCAKLSAgICAzOTI0MSwgMzkyNDUsIDM5MjQ5LCAzOTI1MywgMzkyNTcsIDM5MjYxLCAzOTI2NSwgMzkyNjksIDM5MjczLCAzOTI3NywgCi0gICAgMzkyODEsIDM5Mjg1LCAzOTI4OSwgMzkyOTMsIDM5Mjk3LCAzOTMwMSwgMzkzMDUsIDM5MzA5LCAzOTMxMywgMzkzMTcsIAotICAgIDM5MzIxLCAzOTMyNSwgMzkzMjksIDM5MzMzLCAzOTMzNywgMzkzNDEsIDM5MzQ1LCAzOTM0OSwgMzkzNTMsIDM5MzU3LCAKLSAgICAzOTM2MSwgMzkzNjUsIDM5MzY5LCAzOTM3MywgMzkzNzcsIDM5MzgxLCAzOTM4NSwgMzkzODksIDM5MzkzLCAzOTM5NywgCi0gICAgMzk0MDEsIDM5NDA1LCAzOTQwOSwgMzk0MTMsIDM5NDE3LCAzOTQyMSwgMzk0MjUsIDM5NDI5LCAzOTQzMywgMzk0MzcsIAotICAgIDM5NDQxLCAzOTQ0NSwgMzk0NDksIDM5NDUzLCAzOTQ1NywgMzk0NjEsIDM5NDY1LCAzOTQ2OSwgMzk0NzMsIDM5NDc3LCAKLSAgICAzOTQ4MSwgMzk0ODUsIDM5NDg5LCAzOTQ5MywgMzk0OTcsIDM5NTAxLCAzOTUwNSwgMzk1MDksIDM5NTEzLCAzOTUxNywgCi0gICAgMzk1MjEsIDM5NTI1LCAzOTUyOSwgMzk1MzMsIDM5NTM3LCAzOTU0MSwgMzk1NDUsIDM5NTQ5LCAzOTU1MywgMzk1NTcsIAotICAgIDM5NTYxLCAzOTU2NSwgMzk1NjksIDM5NTczLCAzOTU3NywgMzk1ODEsIDM5NTg1LCAzOTU4OSwgMzk1OTMsIDM5NTk3LCAKLSAgICAzOTYwMSwgMzk2MDUsIDM5NjA5LCAzOTYxMywgMzk2MTcsIDM5NjIxLCAzOTYyNSwgMzk2MjksIDM5NjMzLCAzOTYzNywgCi0gICAgMzk2NDEsIDM5NjQ1LCAzOTY0OSwgMzk2NTMsIDM5NjU3LCAzOTY2MSwgMzk2NjUsIDM5NjY5LCAzOTY3MywgMzk2NzcsIAotICAgIDM5NjgxLCAzOTY4NSwgMzk2ODksIDM5NjkzLCAzOTY5NywgMzk3MDEsIDM5NzA1LCAzOTcwOSwgMzk3MTMsIDM5NzE3LCAKLSAgICAzOTcyMSwgMzk3MjUsIDM5NzMwLCAzOTczNCwgMzk3MzksIDM5NzQzLCAzOTc0OCwgMzk3NTIsIDM5NzU3LCAzOTc2MSwgCi0gICAgMzk3NjcsIDM5NzcyLCAzOTc3NiwgMzk3ODEsIDM5Nzg1LCAzOTc5MCwgMzk3OTQsIDM5Nzk5LCAzOTgwMywgMzk4MDgsIAotICAgIDM5ODEyLCAzOTgxNywgMzk4MjEsIDM5ODI2LCAzOTgzMCwgMzk4MzYsIDM5ODQyLCAzOTg0NywgMzk4NTEsIDM5ODU2LCAKLSAgICAzOTg2MCwgMzk4NjYsIDM5ODcxLCAzOTg3NSwgMzk4ODAsIDM5ODg0LCAzOTg4OSwgMzk4OTMsIDM5ODk5LCAzOTkwNCwgCi0gICAgMzk5MDgsIDM5OTEzLCAzOTkxNywgMzk5MjIsIDM5OTI2LCAzOTkzMSwgMzk5MzUsIDM5OTQxLCAzOTk0NiwgMzk5NTAsIAotICAgIDM5OTU1LCAzOTk1OSwgMzk5NjUsIDM5OTcwLCAzOTk3NCwgMzk5NzksIDM5OTgzLCAzOTk4OCwgMzk5OTIsIDM5OTk3LCAKLSAgICA0MDAwMSwgNDAwMDYsIDQwMDEwLCA0MDAxNiwgNDAwMjEsIDQwMDI1LCA0MDAzMSwgNDAwMzYsIDQwMDQwLCA0MDA0NiwgCi0gICAgNDAwNTEsIDQwMDU1LCA0MDA2MCwgNDAwNjQsIDQwMDY5LCA0MDA3MywgNDAwNzksIDQwMDg1LCA0MDA5MSwgNDAwOTcsIAotICAgIDQwMTAzLCA0MDEwOSwgNDAxMTUsIDQwMTIxLCA0MDEyNiwgNDAxMzAsIDQwMTM1LCA0MDEzOSwgNDAxNDUsIDQwMTUwLCAKLSAgICA0MDE1NCwgNDAxNTksIDQwMTYzLCA0MDE2OCwgNDAxNzIsIDQwMTc3LCA0MDE4MSwgNDAxODYsIDQwMTkwLCA0MDE5NSwgCi0gICAgNDAxOTksIDQwMjA0LCA0MDIwOCwgNDAyMTQsIDQwMjE5LCA0MDIyMywgNDAyMjgsIDQwMjMyLCA0MDIzOCwgNDAyNDQsIAotICAgIDQwMjQ5LCAxMTYsIDU3LCA0MDI1MywgNDAyNTUsIDQwMjU5LCA0MDI2MywgNDAyNjcsIDQwMjcyLCA0MDI3NiwgNDAyODAsIAotICAgIDEwMjUxLCA0MDI4NSwgNDAyOTEsIDE3NTYsIDY1OTcsIDQwMjk3LCA0MDMwMCwgNDAzMDUsIDQwMzA5LCA0MDMxNCwgCi0gICAgNDAzMTgsIDQwMzIyLCA0MDMyNywgMTExMjEsIDQwMzMxLCA0MDMzNSwgNDAzMzksIDUyNSwgNDAzNDMsIDE2NzgzLCAKLSAgICA0MDM0OCwgNDAzNTIsIDQwMzU3LCA0MDM2MiwgNDAzNjcsIDQwMzcxLCA0MDM3OCwgMjgxODYsIDQwMzg0LCA0MDM4NywgCi0gICAgNDAzOTEsIDQwMzk2LCA0MDQwMiwgNDA0MDYsIDQwNDA5LCA0MDQxNywgNDA0MjMsIDQwNDI4LCA0MDQzMiwgNDA0MzUsIAotICAgIDQwNDM5LCA0MDQ0NSwgNDA0NDksIDQwNDUzLCAzNTg0LCAzNTg5LCAzMTUzNywgNDA0NTYsIDQwNDYwLCA0MDQ2NCwgCi0gICAgNDA0NjgsIDQwNDcyLCA0MDQ4MCwgNDA0ODcsIDQwNDkxLCAxNDQ4MCwgNDA0OTgsIDQwNTAzLCA0MDUxNywgNDA1MjQsIAotICAgIDQwNTM1LCAzMzUsIDQwNTQwLCA0MDU0NCwgNDA1NTAsIDQwNTYyLCA0MDU2OCwgNDA1NzQsIDMxNTc0LCA0MDU3OCwgCi0gICAgNDA1ODQsIDQwNTkzLCA0MDU5NywgNDA2MDEsIDQwNjA2LCA0MDYxMiwgNDA2MTcsIDQwNjIxLCA0MDYyNiwgNDA2MzAsIAotICAgIDQwNjM0LCA0MDY0MSwgNDA2NDcsIDQwNjUyLCA0MDY2NywgNDA2ODIsIDQwNjk3LCA0MDcxMywgNDA3MzEsIDExMDcxLCAKLSAgICA0MDc0NSwgNDA3NTIsIDQwNzU2LCA0MDc1OSwgNDA3NjgsIDQwNzczLCA0MDc3NywgNDA3ODUsIDE3MzMzLCA0MDc5MywgCi0gICAgNDA3OTcsIDQwODA3LCA0MDgxOCwgMzE1MDcsIDQwODMxLCA0MDgzNSwgNDA4NDQsIDQwODYyLCA0MDg4MSwgNDA4ODksIAotICAgIDEwNTI1LCAxMTIzNCwgNDA4OTMsIDI0MjYxLCA0MDg5NiwgMzI0NzUsIDQwOTAxLCAxMDUyNCwgNDA5MDYsIDQwOTEyLCAKLSAgICA0MDkxNywgNDA5MjMsIDQwOTI4LCA0MDkzNCwgNDA5MzksIDQwOTQ1LCA0MDk1MCwgNDA5NTYsIDQwOTYyLCA0MDk2OCwgCi0gICAgNDA5NzMsIDQwOTI5LCA0MDkzNSwgNDA5NDAsIDQwOTQ2LCA0MDk1MSwgNDA5NTcsIDQwOTYzLCA4NTA0LCA0MDg5LCAKLSAgICA0MDk3NywgNDA5ODUsIDQwOTg5LCA0MDk5MiwgNDA5OTYsIDQxMDAxLCA0MTAwNiwgNDEwMTMsIDQxMDE5LCA0MTAyNSwgCi0gICAgNDEwMzAsIDE2MTc0LCA0MTAzNCwgMjgwMjIsIDQxMDM4LCA0MTA0MiwgNDEwNDYsIDQxMDUyLCA0MTA1NiwgMzAwNzUsIAotICAgIDQxMDY1LCA5NTQ0LCA0MTA2OSwgOTkzNywgNDEwNzIsIDQxMDc5LCA0MTA4NSwgNDEwODksIDEzMDA0LCA0MTA5NiwgCi0gICAgNDExMDIsIDQxMTA3LCA0MTExNCwgNDExMjEsIDQxMTI4LCAzMDc4MSwgODQxMCwgNDExMzUsIDQxMTQyLCA0MTE0OSwgCi0gICAgNDExNTUsIDQxMTYwLCA0MTE2NywgNDExNzgsIDQxMTg0LCA0MTE4OSwgNDExOTQsIDQxMTk5LCA0MTIwMywgNDEyMDgsIAotICAgIDQxMjE1LCA0MDkzMCwgNDEyMTksIDQxMjI5LCA0MTIzOCwgNDEyNDksIDQxMjU1LCA0MTI2MywgNDEyNzAsIDQxMjc1LCAKLSAgICA0MTI4MCwgNDEyODUsIDQxMjkwLCA0MTI5NSwgNDEyOTksIDQxMzAzLCA0MTMxMCwgNDEzMTYsIDQxMzI0LCAyMzUzLCAKLSAgICAxMDUwLCAxMTEzNywgMTExNDksIDExMTU0LCAxMTE2MCwgNDEzMzMsIDExMTY1LCAxMTE3MCwgMTExNzYsIDQxMzM4LCAKLSAgICA0MTM0OCwgNDEzNTIsIDExMTgxLCA0MTM1NywgMTg0NTMsIDQxMzYwLCA0MTM2NSwgNDEzNjksIDM3NDYzLCA0MTM4MCwgCi0gICAgNDEzODUsIDQxMzkyLCA0MTM5OSwgNDE0MDMsIDQxNDA2LCA0MTQxNCwgMTEwODQsIDQxNDIxLCA0MTQyNCwgNDE0MzAsIAotICAgIDQxNDQwLCA2MjMxLCA0MTQ0OSwgNDE0NTUsIDQxNDU5LCA0MTQ2NywgNDE0NzEsIDQxNDgxLCA0MTQ4NywgNDE0OTIsIAotICAgIDQxNTAzLCA0MTUxMiwgNDE1MjEsIDQxNTMwLCA0MTUzOSwgNDE1NDgsIDQxNTU3LCA0MTU2NiwgNDE1NzIsIDQxNTc4LCAKLSAgICA0MTU4MywgNDE1ODksIDQxNTk1LCA0MTYwMSwgNDE2MDYsIDQxNjA5LCA0MTYxNiwgNDE2MjIsIDQxNjI2LCA0MTYzMSwgCi0gICAgNDE2MzgsIDQxNjQ1LCA0MTY0OSwgNDE2NTIsIDQxNjYyLCA0MTY3NSwgNDE2ODQsIDQxNjkzLCA0MTcwNCwgNDE3MTcsIAotICAgIDQxNzI5LCA0MTc0MCwgNDE3NDksIDQxNzYwLCA0MTc2NSwgNDE3NzQsIDQxNzc5LCAxMTE4NiwgNDE3ODUsIDQxNzkyLCAKLSAgICA0MTgwMCwgNDE4MDUsIDQxODA5LCA0MTgxNiwgNDE4MjMsIDQwNDEsIDIwLCA0MTgyNywgNDE4MzIsIDE4MzAyLCA0MTgzNiwgCi0gICAgNDE4MzksIDQxODQyLCAzMDI1NSwgNDE4NDYsIDMwNzkwLCA0MTg1NCwgNDE4NTgsIDQxODYyLCA0MTg2NSwgNDE4NzEsIAotICAgIDQxODc3LCAzMzUyNywgNDE4ODIsIDQxODkwLCA0MTg5NiwgNDE5MDMsIDMwMjM4LCA0MTkwNywgMzA0NDEsIDQxOTExLCAKLSAgICA0MTkyMCwgNDE5MjQsIDQxOTMyLCA0MTkzOCwgNDE5NDQsIDQxOTQ5LCA0MTk1MywgMzA4MDksIDQxOTU5LCA0MTk2MiwgCi0gICAgNDE5NzAsIDQxOTc4LCA0Mzc5LCA0MTk4NCwgNDE5ODgsIDQxOTkzLCA0MjAwMCwgNDIwMDYsIDQyMDExLCA0MjAxNiwgCi0gICAgNDIwMjAsIDQyMDI2LCA0MjAzMSwgNDIwMzcsIDQyOTcsIDk0NCwgNDIwNDQsIDQyMDQ4LCA0MjA1MSwgMTY2NjQsIDQyMDYzLCAKLSAgICA0MjA3MSwgNDIwNzksIDQyMDg3LCA0MjA5NSwgNDIxMDIsIDQyMTEwLCA0MjExOCwgNDIxMjUsIDQyMTMzLCA0MjE0MSwgCi0gICAgNDIxNDksIDQyMTU3LCA0MjE2NSwgNDIxNzMsIDQyMTgxLCA0MjE4OSwgNDIxOTcsIDQyMjA1LCA0MjIxMywgNDIyMjAsIAotICAgIDQyMjI4LCA0MjIzNiwgNDIyNDQsIDQyMjUyLCA0MjI2MCwgNDIyNjgsIDQyMjc2LCA0MjI4NCwgNDIyOTIsIDQyMzAwLCAKLSAgICA0MjMwOCwgNDIzMTYsIDQyMzI0LCA0MjMzMiwgNDIzNDAsIDQyMzQ4LCA0MjM1NiwgNDIzNjQsIDQyMzcyLCA0MjM3OSwgCi0gICAgNDIzODcsIDQyMzk0LCA0MjQwMiwgNDI0MTAsIDQyNDE4LCA0MjQyNiwgNDI0MzQsIDQyNDQyLCA0MjQ1MCwgNDI0NTgsIAotICAgIDQyNDY5LCAyMzc2NCwgNDI0NzQsIDQyNDc3LCA0MjQ4NCwgNDI0ODgsIDQyNDk0LCA0MjQ5OCwgNDI1MDQsIDQyNTA5LCAKLSAgICA0MjUxNSwgNDI1MjAsIDQyNTI1LCA0MjUyOSwgNDI1MzMsIDQyNTM4LCA0MjU0MywgNDI1NTMsIDQyNTU5LCA0MjU3MiwgCi0gICAgNDI1NzgsIDQyNTg0LCA0MjU5MCwgNDI1OTcsIDQyNjAyLCA0MjYwOCwgNDI2MTMsIDE4MTk4LCAxNDU4LCA4MzEsIDQyNjE4LCAKLSAgICA0MjYyMSwgNDI2MjQsIDQyNjI3LCAzMzYxMSwgMzM2MTcsIDQyNjMwLCAzMzYyMywgMzM2MzYsIDMzNjQyLCAzMzY0OCwgCi0gICAgNDI2MzYsIDMzNjU0LCAzMzY2MCwgNDI2NDIsIDQyNjQ4LCAyNiwgNDI2NTYsIDQyNjYzLCA0MjY2NywgNDI2NzEsIDQyNjc5LCAKLSAgICAzNDQwMSwgNDI2ODMsIDQyNjg3LCA0MjY5NCwgNDI2OTksIDQyNzAzLCA0MjcwOCwgNDI3MTQsIDQyNzE5LCA0MjcyNSwgCi0gICAgNDI3MzAsIDQyNzM0LCA0MjczOCwgNDI3NDIsIDQyNzQ3LCA0Mjc1MSwgNDI3NTYsIDQyNzYwLCA0Mjc2NCwgNDI3NzEsIAotICAgIDQyNzc2LCA0Mjc4MCwgNDI3ODQsIDQyNzg5LCA0Mjc5MywgNDI3OTgsIDQyODAyLCA0MjgwNiwgNDI4MTEsIDQyODE3LCAKLSAgICAxNjkyNCwgMTY5MjksIDQyODIyLCA0MjgyNiwgNDI4MjksIDQyODMzLCA0MjgzNywgMjI4NTIsIDQyODQyLCA0Mjg0NiwgCi0gICAgNDI4NTIsIDQyODU5LCA0Mjg2NSwgNDI4NzAsIDQyODgwLCA0Mjg4NSwgNDI4OTMsIDQyODk3LCA0MjkwMCwgMzQ0MTYsIAotICAgIDQyOTA0LCA0MzU2LCA0MjkwOSwgNDI5MTQsIDQyOTE4LCA0MjkyMywgNDI5MjcsIDQyOTMyLCAxNDU0OCwgNDI5NDMsIAotICAgIDQyOTQ3LCA0Mjk1MCwgNDI5NTQsIDQyOTU5LCA0Mjk2MywgNDI5NjgsIDQyOTczLCA0Mjk3NywgNDI5ODEsIDQyOTg1LCAKLSAgICA0Mjk4OCwgNDI5OTIsIDg1MjMsIDE0NTY0LCA0Mjk5NSwgNDI5OTgsIDQzMDA0LCA0MzAwOSwgNDMwMTUsIDQzMDIwLCAKLSAgICA0MzAyNiwgNDMwMzEsIDQzMDM3LCA0MzA0MiwgNDMwNDgsIDQzMDU0LCA0MzA2MCwgNDMwNjUsIDQzMDY5LCA0MzA3MywgCi0gICAgNDMwODIsIDQzMDk4LCA0MzExNCwgNDMxMjQsIDMwMTQ1LCA0MzEzMSwgNDMxMzUsIDQzMTQwLCA0MzE0NSwgNDMxNDksIAotICAgIDQzMTUzLCAzODk1MSwgNDMxNTksIDQzMTY0LCA0MzE2OCwgNDMxNzUsIDQzMTgwLCA0MzE4NSwgNDMxODksIDQzMTkzLCAKLSAgICA0MzE5OSwgMjkwOTMsIDQzMjAzLCAyMzEzNiwgNDMyMDgsIDQzMjE1LCA0MzIyMywgNDMyMjksIDQzMjM2LCA0MzI0NCwgCi0gICAgNDMyNTAsIDQzMjU0LCA0MzI1OSwgNDMyNjUsIDQzMjczLCA0MzI3OCwgNDMyODIsIDQzMjkxLCAxMDIzMiwgNDMyOTksIAotICAgIDQzMzAzLCA0MzMxMSwgNDMzMTgsIDQzMzIzLCA0MzMyOCwgNDMzMzMsIDQzMzM3LCA0MzM0MCwgNDMzNDQsIDQzMzQ3LCAKLSAgICA0MzM1MSwgNDMzNTgsIDQzMzYzLCA0MzM2NywgNDMzNzMsIDI4NDkyLCAzMzY3NCwgNDMzNzcsIDQzMzg2LCA0MzM5NCwgCi0gICAgNDM0MDAsIDQzNDA3LCA0MzQxMywgNDM0MTksIDQzNDI0LCA0MzQyNywgNDM0MjksIDQzNDM2LCA0MzQ0MywgNDM0NDksIAotICAgIDQzNDUzLCA0MzQ1NiwgNDM0NjAsIDQzNDY0LCA0MzQ2OCwgNDM0NzMsIDQzNDc3LCA0MzQ4MSwgNDM0ODQsIDQzNDg4LCAKLSAgICA0MzUwMiwgMjQ5MDYsIDQzNTIxLCA0MzUzNCwgNDM1NDcsIDQzNTYwLCAyNDkyNCwgNDM1NzUsIDExNDIyLCA0MzU5MCwgCi0gICAgNDM1OTYsIDQzNjAwLCA0MzYwNCwgNDM2MDgsIDQzNjEyLCA0MzYxOSwgNDM2MjQsIDQzNjI4LCA0MzYzNSwgNDM2NDEsIAotICAgIDQzNjQ2LCA0MzY1MiwgNDM2NjIsIDQzNjc0LCA0MzY4NSwgNDM2OTAsIDQzNjk3LCA0MzcwMSwgNDM3MDUsIDQzNzA4LCAKLSAgICAxNzM0MywgMzg1NSwgNDM3MTYsIDE2OTUxLCA0MzcyOSwgNDM3MzYsIDQzNzQzLCA0Mzc0NywgNDM3NTEsIDQzNzU2LCAKLSAgICA0Mzc2MiwgNDM3NjcsIDQzNzczLCA0Mzc3NywgNDM3ODEsIDQzNzg0LCA0Mzc4OSwgNDM3OTMsIDQzNzk4LCA4MDgyLCAKLSAgICAxNjk2MiwgNDM4MDMsIDQzODA3LCA0MzgxMywgNDM4MjIsIDQzODI3LCA0MzgzNiwgNDM4NDMsIDM4Nzk5LCA0Mzg0OSwgCi0gICAgNDM4NTQsIDQzODU4LCA0Mzg2MywgNDM4NzAsIDQzODc2LCA0Mzg4MCwgNDM4ODMsIDQzODg3LCA0Mzg5MiwgMTU4NjQsIAotICAgIDQzODk5LCA0MzkwNiwgNDM5MTAsIDQzOTEzLCA0MzkxOCwgNDM5MjMsIDQzOTI5LCA0MzkzNCwgNDM5MzksIDQzOTQzLCAKLSAgICA0Mzk0OCwgNDM5NTgsIDQzOTYzLCA0Mzk2OSwgNDM5NzQsIDQzOTgwLCA0Mzk4NSwgNDM5OTEsIDQ0MDAxLCA0NDAwNiwgCi0gICAgNDQwMTEsIDQ0MDE1LCA0NDAyMCwgNzU1OCwgNzU3MCwgNDQwMjUsIDQ0MDI4LCA0NDAzNSwgNDQwNDEsIDQ0MDUwLCA5NDc3LCAKLSAgICAzNjc2MCwgNDQwNTgsIDQ0MDYyLCA0NDA2NiwgMzQ0NjQsIDQ0MDc0LCA0NDA4NSwgNDQwOTMsIDM4OTk5LCA0NDEwMCwgCi0gICAgNDQxMDUsIDQ0MTEwLCA0NDEyMSwgNDQxMjgsIDQ0MTM5LCAzNDQ4OCwgMjMxNDcsIDQ0MTQ3LCA5MDcsIDQ0MTUyLCAKLSAgICAxNDkxMywgNDQxNTgsIDMwMjI5LCA0NDE2NCwgNDQxNjksIDQ0MTc5LCA0NDE4OCwgNDQxOTUsIDQ0MjAxLCA0NDIwNSwgCi0gICAgNDQyMDgsIDQ0MjE1LCA0NDIyMSwgNDQyMjgsIDQ0MjM0LCA0NDI0NCwgNDQyNTIsIDQ0MjU4LCA0NDI2NCwgNDQyNjksIAotICAgIDQ0MjczLCA0NDI4MCwgNDQyODUsIDQ0MjkxLCA0NDI5OCwgNDQzMDQsIDQzNDY5LCA0NDMwOSwgNDQzMTMsIDU1OCwgCi0gICAgMTUwMjksIDQ0MzE5LCA0NDMyNCwgNDQzMjcsIDQ0MzMzLCA0NDM0MSwgMTM4MCwgNDQzNDYsIDQ0MzUwLCA0NDM1NSwgCi0gICAgNDQzNjAsIDQ0MzY1LCA0NDM3MiwgNDQzNzYsIDQ0MzgxLCA0NDM4NywgNDQzOTEsIDMzNjg0LCA0NDM5NiwgNDQ0MDEsIAotICAgIDQ0NDEwLCA0NDQxNywgNDQ0MjcsIDQ0NDMzLCAzMDI3MywgNDQ0NTAsIDQ0NDU5LCA0NDQ2NywgNDQ0NzMsIDQ0NDc4LCAKLSAgICA0NDQ4NSwgNDQ0OTEsIDQ0NDk5LCA0NDUwOCwgNDQ1MTYsIDQ0NTIwLCA0NDUyNSwgNDQ1MzMsIDMxMjUxLCAzNDQ5NywgCi0gICAgNDQ1MzksIDQ0NTU4LCAxNzI1NywgNDQ1NzIsIDQ0NTg4LCA0NDYwMiwgNDQ2MDgsIDQ0NjEzLCA0NDYxOCwgNDQ2MjMsIAotICAgIDQ0NjI5LCAzNDUwMywgNDQ2MzQsIDQ0NjM3LCA0NDY0NCwgNDQ2NDksIDQ0NjUzLCA0MDQsIDI5OTUsIDQ0NjYwLCA0NDY2NSwgCi0gICAgNDQ2NzAsIDI5NDUxLCA0NDQ4OCwgNDQ2NzQsIDQ0Njc5LCA0NDY4NywgNDQ2OTEsIDQ0Njk0LCA0NDY5OSwgNDQ3MDUsIAotICAgIDQ0NzExLCA0NDcxNiwgNDQ3MjAsIDMwMzI4LCA0NDcyMywgNDQ3MjgsIDQ0NzMyLCA0NDczNSwgNDQ3NDAsIDQ0NzQ0LCAKLSAgICA0NDc0OSwgNDQ3NTQsIDQ0NzU4LCA0NDc2MywgNDQ3NjcsIDQ0NzcxLCA0NDc3NSwgMjI4NDgsIDIyODU5LCA0NDc4MCwgCi0gICAgNDQ3ODUsIDQ0NzkxLCA0NDc5NiwgNDQ4MDIsIDI5MDUwLCA0NDgwNywgNDQ4MTEsIDIyOTQ1LCAxNzU0OSwgNDQ4MTQsIAotICAgIDQ0ODE5LCA0NDgyNCwgNDQ4MjksIDQ0ODM0LCA0NDgzOSwgNDQ4NDQsIDQ0ODQ5LCA0NzQsIDY4LCAzMzY5NywgMzM3MDIsIAotICAgIDMzNzA3LCAzMzcxMywgMzM3MTgsIDMzNzIzLCA0NDg1NCwgMzM3MjcsIDQ0ODU4LCA0NDg2MiwgNDQ4NjYsIDMzNzMyLCAKLSAgICAzMzczOCwgNDQ4ODAsIDMzNzQ5LCAzMzc1NCwgNDQ4ODgsIDQ0ODkzLCAzMzc2MCwgNDQ4OTgsIDQ0OTAzLCA0NDkwOCwgCi0gICAgNDQ5MTMsIDQ0OTE5LCA0NDkyNSwgNDQ5MzEsIDMzNzc3LCA0NDk0NCwgNDQ5NTMsIDQ0OTU5LCAzMzc4MSwgNDQ5NjMsIAotICAgIDMzNzg2LCA0NDk2OCwgMzM3OTEsIDMzNzk2LCA0NDk3MSwgNDQ5NzYsIDQ0OTgwLCA0NDk4NiwgMzMzMzIsIDQ0OTkzLCAKLSAgICAxNDc5NCwgNDUwMDAsIDQ1MDA1LCAzMzgwMSwgNDUwMDksIDQ1MDE0LCA0NTAxOSwgNDUwMjQsIDQ1MDI4LCA0NTAzMywgCi0gICAgNDUwMzgsIDQ1MDQ0LCA0NTA0OSwgNDUwNTQsIDQ1MDYwLCA0NTA2NiwgNDUwNzEsIDQ1MDc1LCA0NTA4MCwgNDUwODUsIAotICAgIDQ1MDkwLCA0NTA5NCwgNDUwOTksIDQ1MTA0LCA0NTEwOSwgNDUxMTUsIDQ1MTIxLCA0NTEyNywgNDUxMzIsIDQ1MTM2LCAKLSAgICA0NTE0MSwgNDUxNDUsIDMzODA1LCAzMzgxMCwgMzM4MTUsIDQ1MTQ5LCA0NTE1MywgNDUxNTcsIDMzODIwLCAzMzgyNiwgCi0gICAgMzM4MzIsIDMzODQ0LCA0NTE2OSwgMjgwNTksIDQ1MTczLCA0NTE3OCwgNDUxODIsIDQ1MTg3LCA0NTE5NCwgNDUxOTksIAotICAgIDQ1MjA0LCA0NTIwOSwgNDUyMTMsIDQ1MjE3LCA0NTIyNywgNDUyMzIsIDQ1MjM3LCA0NTI0MSwgNDUyNDUsIDQ1MjQ4LCAKLSAgICA0NTI1NiwgMzM4OTIsIDQ1MjYxLCAxNDY1LCA0NTI2NywgNDUyNzIsIDQ1Mjc4LCA0NTI4NiwgNDUyOTAsIDQ1Mjk5LCAKLSAgICA0NTMwMywgNDUzMDcsIDQ1MzE1LCA0NTMyMSwgNDUzMjksIDQ1MzQ1LCA0NTM0OSwgNDUzNTMsIDQ1MzU3LCA0NTM2MiwgCi0gICAgNDUzNjgsIDQ1MzgzLCAzMzkyOSwgMTc2NCwgMTMxOTgsIDQ1Mzg3LCAxMzU5LCAxMzc0LCA0NTM5OSwgNDU0MDcsIDQ1NDE0LCAKLSAgICA0NTQxOSwgNDU0MjYsIDQ1NDMxLCA5OTIyLCAxMTM5LCAyNTQ0LCAxMTIxMywgNDU0MzgsIDk4MjAsIDQ1NDQzLCA0NTQ0NiwgCi0gICAgNDU0NTUsIDEyNjcsIDQ1NDYwLCA0MzYyNSwgNDU0NjcsIDQ1NDc2LCA0NTQ4MSwgNDU0ODUsIDQ1NDkzLCAyNDMxNywgCi0gICAgMjU5NiwgNDU1MDAsIDExNjc4LCA0NTUxMCwgNDU1MTYsIDIzNzEsIDIzODEsIDQ1NTI1LCA0NTUzNCwgNDU1NDQsIDQ1NTU1LCAKLSAgICAzMzc2LCAzNzA5OSwgNDU1NjAsIDExMjc3LCA0MDE5LCAxODIzNiwgMTI3MiwgNDU1NjQsIDQ1NTcyLCA0NTU3OSwgNDU1ODQsIAotICAgIDQ1NTg4LCA0NTU5MiwgMjU3OTIsIDQzODk0LCAxMTMwNCwgNDU2MDAsIDQ1NjA5LCA0NTYxOCwgNDU2MjYsIDQ1NjMzLCAKLSAgICA0NTY0NCwgNDU2NDksIDQ1NjYyLCA0NTY3NSwgNDU2ODcsIDQ1Njk5LCA0NTcxMSwgNDU3MjIsIDQ1NzM1LCA0NTc0NiwgCi0gICAgNDU3NTcsIDQ1NzY3LCA0NTc3NSwgNDU3ODMsIDQ1Nzk1LCA0NTgwNywgNDU4MTgsIDQ1ODI3LCA0NTgzNSwgNDU4NDIsIAotICAgIDQ1ODU0LCA0NTg2MSwgNDU4NjcsIDQ1ODc2LCA0NTg4MywgNDU4OTYsIDQ1OTAxLCA0NTkxMSwgNDU5MTYsIDQ1OTIyLCAKLSAgICA0NTkyNywgNDEwODYsIDQ1OTMxLCA0NTkzOCwgNDU5NDIsIDQ1OTQ5LCA0NTk1NywgNDU5NjQsIDI1NTcsIDQ1OTcxLCAKLSAgICA0NTk4MiwgNDU5OTIsIDQ2MDAxLCA0NjAwOSwgNDYwMTksIDQ2MDI3LCA0NjAzNywgNDYwNDYsIDQ2MDUxLCA0NjA1NywgCi0gICAgNDYwNjMsIDM4OTksIDQ2MDc0LCA0NjA4NCwgNDYwOTMsIDQ2MTAyLCA0NjExMCwgNDYxMjAsIDQ2MTI4LCA0NjEzNywgCi0gICAgNDYxNDIsIDQ2MTQ3LCA0NjE1MiwgMTY5NCwgNDcsIDQ2MTYwLCA0NjE2OCwgNDYxNzksIDQ2MTkwLCAxNzg3NSwgNDYyMDAsIAotICAgIDQ2MjA0LCA0NjIxMSwgNDYyMTcsIDQ2MjIyLCA0NjIyNiwgNDYyMzcsIDQ2MjQ3LCA0NjI1NiwgNDYyNjcsIDE4Mjc1LCAKLSAgICAxODI4MCwgNDYyNzIsIDQ2MjgxLCA0NjI4NiwgNDYyOTYsIDQ2MzAxLCA0NjMwOSwgNDYzMTcsIDQ2MzI0LCA0NjMzMCwgCi0gICAgMTY1NiwgMjc3LCA0NjMzNCwgNDYzNDAsIDQ2MzQ1LCA0NjM0OCwgMjE0MywgNDM3NDgsIDQ2MzU2LCA0NjM2MCwgNDYzNjMsIAotICAgIDE1MTAsIDQ2MzY5LCAxNTIxNCwgMTI3NywgNDYzNzQsIDQ2Mzg3LCA0NjQwMSwgMjY4MiwgNDY0MTksIDQ2NDMxLCA0NjQ0MywgCi0gICAgMjY5NiwgMjcxMywgNDY0NTcsIDQ2NDcwLCAyNzI4LCA0NjQ4NCwgNDY0OTYsIDI3NDMsIDQ2NTEwLCAxMjgzLCAxMjg5LCAKLSAgICAxMjk1LCAxMTU4NCwgNDY1MTUsIDQ2NTIwLCA0NjUyNSwgNDY1MjksIDQ2NTQ0LCA0NjU1OSwgNDY1NzQsIDQ2NTg5LCAKLSAgICA0NjYwNCwgNDY2MTksIDQ2NjM0LCA0NjY0OSwgNDY2NjQsIDQ2Njc5LCA0NjY5NCwgNDY3MDksIDQ2NzI0LCA0NjczOSwgCi0gICAgNDY3NTQsIDQ2NzY5LCA0Njc4NCwgNDY3OTksIDQ2ODE0LCA0NjgyOSwgNDY4NDQsIDQ2ODU5LCA0Njg3NCwgNDY4ODksIAotICAgIDQ2OTA0LCA0NjkxOSwgNDY5MzQsIDQ2OTQ5LCA0Njk2NCwgNDY5NzksIDQ2OTk0LCA0NzAwOSwgNDcwMjQsIDQ3MDM5LCAKLSAgICA0NzA1NCwgNDcwNjksIDQ3MDg0LCA0NzA5OSwgNDcxMTQsIDQ3MTI5LCA0NzE0NCwgNDcxNTksIDQ3MTc0LCA0NzE4OSwgCi0gICAgNDcyMDQsIDQ3MjE5LCA0NzIzNCwgNDcyNDksIDQ3MjY0LCA0NzI3OSwgNDcyOTQsIDQ3MzA5LCA0NzMyNCwgNDczMzksIAotICAgIDQ3MzU0LCA0NzM2OSwgNDczODQsIDQ3Mzk5LCA0NzQxNCwgNDc0MjksIDQ3NDQ0LCA0NzQ1OSwgNDc0NzQsIDQ3NDg5LCAKLSAgICA0NzUwNCwgNDc1MTksIDQ3NTM0LCA0NzU0OSwgNDc1NjQsIDQ3NTc5LCA0NzU5NCwgNDc2MDksIDQ3NjI0LCA0NzYzOSwgCi0gICAgNDc2NTQsIDQ3NjY5LCA0NzY4NCwgNDc2OTksIDQ3NzE0LCA0NzcyOSwgNDc3NDQsIDQ3NzU5LCA0Nzc3NCwgNDc3ODksIAotICAgIDQ3ODA0LCA0NzgxOSwgNDc4MzQsIDQ3ODQ5LCA0Nzg2NCwgNDc4NzksIDQ3ODk0LCA0NzkwOSwgNDc5MjQsIDQ3OTM5LCAKLSAgICA0Nzk1NCwgNDc5NjksIDQ3OTg0LCA0Nzk5OSwgNDgwMTQsIDQ4MDI5LCA0ODA0NCwgNDgwNTksIDQ4MDc0LCA0ODA4OSwgCi0gICAgNDgxMDQsIDQ4MTE5LCA0ODEzNCwgNDgxNDksIDQ4MTY0LCA0ODE3OSwgNDgxOTQsIDQ4MjA5LCA0ODIyNCwgNDgyMzksIAotICAgIDQ4MjU0LCA0ODI2OSwgNDgyODQsIDQ4Mjk5LCA0ODMxNCwgNDgzMjksIDQ4MzQ0LCA0ODM1OSwgNDgzNzQsIDQ4Mzg5LCAKLSAgICA0ODQwNCwgNDg0MTksIDQ4NDM0LCA0ODQ0OSwgNDg0NjQsIDQ4NDc5LCA0ODQ5NCwgNDg1MDksIDQ4NTI0LCA0ODUzOSwgCi0gICAgNDg1NTQsIDQ4NTY5LCA0ODU4NCwgNDg1OTksIDQ4NjE0LCA0ODYyOSwgNDg2NDQsIDQ4NjU5LCA0ODY3NCwgNDg2ODksIAotICAgIDQ4NzA0LCA0ODcxOSwgNDg3MzQsIDQ4NzQ5LCA0ODc2NCwgNDg3NzksIDQ4Nzk0LCA0ODgwOSwgNDg4MjQsIDQ4ODM5LCAKLSAgICA0ODg1NCwgNDg4NjksIDQ4ODg0LCA0ODg5OSwgNDg5MTQsIDQ4OTI5LCA0ODk0NCwgNDg5NTksIDQ4OTc0LCA0ODk4OSwgCi0gICAgNDkwMDQsIDQ5MDE5LCA0OTAzNCwgNDkwNDksIDQ5MDY0LCA0OTA3OSwgNDkwOTQsIDQ5MTA5LCA0OTEyNCwgNDkxMzksIAotICAgIDQ5MTU0LCA0OTE2OSwgNDkxODQsIDQ5MTk5LCA0OTIxNCwgNDkyMjksIDQ5MjQ0LCA0OTI1OSwgNDkyNzQsIDQ5Mjg5LCAKLSAgICA0OTMwNCwgNDkzMTksIDQ5MzM0LCA0OTM0OSwgNDkzNjQsIDQ5Mzc5LCA0OTM5NCwgNDk0MDksIDQ5NDI0LCA0OTQzOSwgCi0gICAgNDk0NTQsIDQ5NDY5LCA0OTQ4NCwgNDk0OTksIDQ5NTE0LCA0OTUyOSwgNDk1NDQsIDQ5NTU5LCA0OTU3NCwgNDk1ODksIAotICAgIDQ5NjA0LCA0OTYxOSwgNDk2MzQsIDQ5NjQ5LCA0OTY2NCwgNDk2NzksIDQ5Njk0LCA0OTcwOSwgNDk3MjQsIDQ5NzM5LCAKLSAgICA0OTc1NCwgNDk3NjksIDQ5Nzg0LCA0OTc5OSwgNDk4MTQsIDQ5ODI5LCA0OTg0NCwgNDk4NTksIDQ5ODc0LCA0OTg4OSwgCi0gICAgNDk5MDQsIDQ5OTE5LCA0OTkzNCwgNDk5NDksIDQ5OTY0LCA0OTk3OSwgNDk5OTQsIDUwMDA5LCA1MDAyNCwgNTAwMzksIAotICAgIDUwMDU0LCA1MDA2OSwgNTAwODQsIDUwMDk5LCA1MDExNCwgNTAxMjksIDUwMTQ0LCA1MDE1OSwgNTAxNzQsIDUwMTg5LCAKLSAgICA1MDIwNCwgNTAyMTksIDUwMjM0LCA1MDI0OSwgNTAyNjQsIDUwMjc5LCA1MDI5NCwgNTAzMDksIDUwMzI0LCA1MDMzOSwgCi0gICAgNTAzNTQsIDUwMzY5LCA1MDM4NCwgNTAzOTksIDUwNDE0LCA1MDQyOSwgNTA0NDQsIDUwNDU5LCA1MDQ3NCwgNTA0ODksIAotICAgIDUwNTA0LCA1MDUxOSwgNTA1MzQsIDUwNTQ5LCA1MDU2NCwgNTA1NzksIDUwNTk0LCA1MDYwOSwgNTA2MjQsIDUwNjM5LCAKLSAgICA1MDY1NCwgNTA2NjksIDUwNjg0LCA1MDY5OSwgNTA3MTQsIDUwNzI5LCA1MDc0NCwgNTA3NTksIDUwNzc0LCA1MDc4OSwgCi0gICAgNTA4MDQsIDUwODE5LCA1MDgzNCwgNTA4NDksIDUwODY0LCA1MDg3OSwgNTA4OTQsIDUwOTA5LCA1MDkyNCwgNTA5MzksIAotICAgIDUwOTU0LCA1MDk2OSwgNTA5ODQsIDUwOTk5LCA1MTAxNCwgNTEwMjksIDUxMDQ0LCA1MTA1OSwgNTEwNzQsIDUxMDg5LCAKLSAgICA1MTEwNCwgNTExMTksIDUxMTM0LCA1MTE0OSwgNTExNjQsIDUxMTc5LCA1MTE5NCwgNTEyMDksIDUxMjI0LCA1MTIzOSwgCi0gICAgNTEyNTQsIDUxMjY5LCA1MTI4NCwgNTEyOTksIDUxMzE0LCA1MTMyOSwgNTEzNDQsIDUxMzU5LCA1MTM3NCwgNTEzODksIAotICAgIDUxNDA0LCA1MTQxOSwgNTE0MzQsIDUxNDQ5LCA1MTQ2NCwgNTE0NzksIDUxNDk0LCA1MTUwOSwgNTE1MjQsIDUxNTM5LCAKLSAgICA1MTU1NCwgNTE1NjksIDUxNTg0LCA1MTU5OSwgNTE2MTQsIDUxNjI5LCA1MTY0NCwgNTE2NTksIDUxNjc0LCA1MTY4OSwgCi0gICAgNTE3MDQsIDUxNzE5LCA1MTczNCwgNTE3NDksIDUxNzY0LCA1MTc3OSwgNTE3OTQsIDUxODA5LCA1MTgyNCwgNTE4MzksIAotICAgIDUxODU0LCA1MTg2OSwgNTE4ODQsIDUxODk5LCA1MTkxNCwgNTE5MjksIDUxOTQ0LCA1MTk1OSwgNTE5NzQsIDUxOTg5LCAKLSAgICA1MjAwNCwgNTIwMTksIDUyMDM0LCA1MjA0OSwgNTIwNjQsIDUyMDc5LCA1MjA5NCwgNTIxMDksIDUyMTI0LCA1MjEzOSwgCi0gICAgNTIxNTQsIDUyMTY5LCA1MjE4NCwgNTIxOTksIDUyMjE0LCA1MjIyOSwgNTIyNDQsIDUyMjU5LCA1MjI3NCwgNTIyODksIAotICAgIDUyMzA0LCA1MjMxOSwgNTIzMzQsIDUyMzQ5LCA1MjM2NCwgNTIzNzksIDUyMzk0LCA1MjQwOSwgNTI0MjQsIDUyNDM5LCAKLSAgICA1MjQ1NCwgNTI0NjksIDUyNDg0LCA1MjQ5OSwgNTI1MTQsIDUyNTI5LCA1MjU0NCwgNTI1NTksIDUyNTc0LCA1MjU4OSwgCi0gICAgNTI2MDQsIDUyNjE5LCA1MjYzNCwgNTI2NDksIDUyNjY0LCA1MjY3OSwgNTI2OTQsIDUyNzA5LCA1MjcyNCwgNTI3MzksIAotICAgIDUyNzU0LCA1Mjc2OSwgNTI3ODQsIDUyNzk5LCA1MjgxNCwgNTI4MjksIDUyODQ0LCA1Mjg1OSwgNTI4NzQsIDUyODg5LCAKLSAgICA1MjkwNCwgNTI5MTksIDUyOTM0LCA1Mjk0OSwgNTI5NjQsIDUyOTc5LCA1Mjk5NCwgNTMwMDksIDUzMDI0LCA1MzAzOSwgCi0gICAgNTMwNTQsIDUzMDY5LCA1MzA4NCwgNTMwOTksIDUzMTE0LCA1MzEyOSwgNTMxNDQsIDUzMTU5LCA1MzE3NCwgNTMxODksIAotICAgIDUzMjA0LCA1MzIxOSwgNTMyMzQsIDUzMjQ5LCA1MzI2NCwgNTMyNzksIDUzMjk0LCA1MzMwOSwgNTMzMjQsIDUzMzM5LCAKLSAgICA1MzM1NCwgNTMzNjksIDUzMzg0LCA1MzM5OSwgNTM0MTQsIDUzNDI5LCA1MzQ0NCwgNTM0NTksIDUzNDc0LCA1MzQ4OSwgCi0gICAgNTM1MDQsIDUzNTE5LCA1MzUzNCwgNTM1NDksIDUzNTY0LCA1MzU3OSwgNTM1OTQsIDUzNjA5LCA1MzYyNCwgNTM2MzksIAotICAgIDUzNjU0LCA1MzY2OSwgNTM2ODQsIDUzNjk5LCA1MzcxNCwgNTM3MjksIDUzNzQ0LCA1Mzc1OSwgNTM3NzQsIDUzNzg5LCAKLSAgICA1MzgwNCwgNTM4MTksIDUzODM0LCA1Mzg0OSwgNTM4NjQsIDUzODc5LCA1Mzg5NCwgNTM5MDksIDUzOTI0LCA1MzkzOSwgCi0gICAgNTM5NTQsIDUzOTY5LCA1Mzk4NCwgNTM5OTksIDU0MDE0LCA1NDAyOSwgNTQwNDQsIDU0MDU5LCA1NDA3NCwgNTQwODksIAotICAgIDU0MTA0LCA1NDExOSwgNTQxMzQsIDU0MTQ5LCA1NDE2NCwgNTQxNzksIDU0MTk0LCA1NDIwOSwgNTQyMjQsIDU0MjM5LCAKLSAgICA1NDI1NCwgNTQyNjksIDU0Mjg0LCA1NDI5OSwgNTQzMTQsIDU0MzI5LCA1NDM0NSwgNTQzNjEsIDU0Mzc3LCA1NDM5MywgCi0gICAgNTQ0MDksIDU0NDI1LCA1NDQ0MSwgNTQ0NTcsIDU0NDczLCA1NDQ4OSwgNTQ1MDUsIDU0NTIxLCA1NDUzNywgNTQ1NTMsIAotICAgIDU0NTY5LCA1NDU4NSwgNTQ2MDEsIDU0NjE3LCA1NDYzMywgNTQ2NDksIDU0NjY1LCA1NDY4MSwgNTQ2OTcsIDU0NzEzLCAKLSAgICA1NDcyOSwgNTQ3NDUsIDU0NzYxLCA1NDc3NywgNTQ3OTMsIDU0ODA5LCA1NDgyNSwgNTQ4NDEsIDU0ODU3LCA1NDg3MywgCi0gICAgNTQ4ODksIDU0OTA1LCA1NDkyMSwgNTQ5MzcsIDU0OTUzLCA1NDk2OSwgNTQ5ODUsIDU1MDAxLCA1NTAxNywgNTUwMzMsIAotICAgIDU1MDQ5LCA1NTA2NSwgNTUwODEsIDU1MDk3LCA1NTExMywgNTUxMjksIDU1MTQ1LCA1NTE2MSwgNTUxNzcsIDU1MTkzLCAKLSAgICA1NTIwOSwgNTUyMjUsIDU1MjQxLCA1NTI1NywgNTUyNzMsIDU1Mjg5LCA1NTMwNSwgNTUzMjEsIDU1MzM3LCA1NTM1MywgCi0gICAgNTUzNjksIDU1Mzg1LCA1NTQwMSwgNTU0MTcsIDU1NDMzLCA1NTQ0OSwgNTU0NjUsIDU1NDgxLCA1NTQ5NywgNTU1MTMsIAotICAgIDU1NTI5LCA1NTU0NSwgNTU1NjEsIDU1NTc3LCA1NTU5MywgNTU2MDksIDU1NjI1LCA1NTY0MSwgNTU2NTcsIDU1NjczLCAKLSAgICA1NTY4OSwgNTU3MDUsIDU1NzIxLCA1NTczNywgNTU3NTMsIDU1NzY5LCA1NTc4NSwgNTU4MDEsIDU1ODE3LCA1NTgzMywgCi0gICAgNTU4NDksIDU1ODY1LCA1NTg4MSwgNTU4OTcsIDU1OTEzLCA1NTkyOSwgNTU5NDUsIDU1OTYxLCA1NTk3NywgNTU5OTMsIAotICAgIDU2MDA5LCA1NjAyNSwgNTYwNDEsIDU2MDU3LCA1NjA3MywgNTYwODksIDU2MTA1LCA1NjEyMSwgNTYxMzcsIDU2MTUzLCAKLSAgICA1NjE2OSwgNTYxODUsIDU2MjAxLCA1NjIxNywgNTYyMzMsIDU2MjQ5LCA1NjI2NSwgNTYyODEsIDU2Mjk3LCA1NjMxMywgCi0gICAgNTYzMjksIDU2MzQ1LCA1NjM2MSwgNTYzNzcsIDU2MzkzLCA1NjQwOSwgNTY0MjUsIDU2NDQxLCA1NjQ1NywgNTY0NzMsIAotICAgIDU2NDg5LCA1NjUwNSwgNTY1MjEsIDU2NTM3LCA1NjU1MywgNTY1NjksIDU2NTg1LCA1NjYwMSwgNTY2MTcsIDU2NjMzLCAKLSAgICA1NjY0OSwgNTY2NjUsIDU2NjgxLCA1NjY5NywgNTY3MTMsIDU2NzI5LCA1Njc0NSwgNTY3NjEsIDU2Nzc3LCA1Njc5MywgCi0gICAgNTY4MDksIDU2ODI1LCA1Njg0MSwgNTY4NTcsIDU2ODczLCA1Njg4OSwgNTY5MDUsIDU2OTIxLCA1NjkzNywgNTY5NTMsIAotICAgIDU2OTY5LCA1Njk4NSwgNTcwMDEsIDU3MDE3LCA1NzAzMywgNTcwNDksIDU3MDY1LCA1NzA4MSwgNTcwOTcsIDU3MTEzLCAKLSAgICA1NzEyOSwgNTcxNDUsIDU3MTYxLCA1NzE3NywgNTcxOTMsIDU3MjA5LCA1NzIyNSwgNTcyNDEsIDU3MjU3LCA1NzI3MywgCi0gICAgNTcyODksIDU3MzA1LCA1NzMyMSwgNTczMzcsIDU3MzUzLCA1NzM2OSwgNTczODUsIDU3NDAxLCA1NzQxNywgNTc0MzMsIAotICAgIDU3NDQ5LCA1NzQ2NSwgNTc0ODEsIDU3NDk3LCA1NzUxMywgNTc1MjksIDU3NTQ1LCA1NzU2MSwgNTc1NzcsIDU3NTkzLCAKLSAgICA1NzYwOSwgNTc2MjUsIDU3NjQxLCA1NzY1NywgNTc2NzMsIDU3Njg5LCA1NzcwNSwgNTc3MjEsIDU3NzM3LCA1Nzc1MywgCi0gICAgNTc3NjksIDU3Nzg1LCA1NzgwMSwgNTc4MTcsIDU3ODMzLCA1Nzg0OSwgNTc4NjUsIDU3ODgxLCA1Nzg5NywgNTc5MTMsIAotICAgIDU3OTI5LCA1Nzk0NSwgNTc5NjEsIDU3OTc3LCA1Nzk5MywgNTgwMDksIDU4MDI1LCA1ODA0MSwgNTgwNTcsIDU4MDczLCAKLSAgICA1ODA4OSwgNTgxMDUsIDU4MTIxLCA1ODEzNywgNTgxNTMsIDU4MTY5LCA1ODE4NSwgNTgyMDEsIDU4MjE3LCA1ODIzMywgCi0gICAgNTgyNDksIDU4MjY1LCA1ODI4MSwgNTgyOTcsIDU4MzEzLCA1ODMyOSwgNTgzNDUsIDU4MzYxLCA1ODM3NywgNTgzOTMsIAotICAgIDU4NDA5LCA1ODQyNSwgNTg0NDEsIDU4NDU3LCA1ODQ3MywgNTg0ODksIDU4NTA1LCA1ODUyMSwgNTg1MzcsIDU4NTUzLCAKLSAgICA1ODU2OSwgNTg1ODUsIDU4NjAxLCA1ODYxNywgNTg2MzMsIDU4NjQ5LCA1ODY2NSwgNTg2ODEsIDU4Njk3LCA1ODcxMywgCi0gICAgNTg3MjksIDU4NzQ1LCA1ODc2MSwgNTg3NzcsIDU4NzkzLCA1ODgwOSwgNTg4MjUsIDU4ODQxLCA1ODg1NywgNTg4NzMsIAotICAgIDU4ODg5LCA1ODkwNSwgNTg5MjEsIDU4OTM3LCA1ODk1MywgNTg5NjksIDU4OTg1LCA1OTAwMSwgNTkwMTcsIDU5MDMzLCAKLSAgICA1OTA0OSwgNTkwNjUsIDU5MDgxLCA1OTA5NywgNTkxMTMsIDU5MTI5LCA1OTE0NSwgNTkxNjEsIDU5MTc3LCA1OTE5MywgCi0gICAgNTkyMDksIDU5MjI1LCA1OTI0MSwgNTkyNTcsIDU5MjczLCA1OTI4OSwgNTkzMDUsIDU5MzIxLCA1OTMzNywgNTkzNTMsIAotICAgIDU5MzY5LCA1OTM4NSwgNTk0MDEsIDU5NDE3LCA1OTQzMywgNTk0NDksIDU5NDY1LCA1OTQ4MSwgNTk0OTcsIDU5NTEzLCAKLSAgICA1OTUyOSwgNTk1NDUsIDU5NTYxLCA1OTU3NywgNTk1OTMsIDU5NjA5LCA1OTYyNSwgNTk2NDEsIDU5NjU3LCA1OTY3MywgCi0gICAgNTk2ODksIDU5NzA1LCA1OTcyMSwgNTk3MzcsIDU5NzUzLCA1OTc2OSwgNTk3ODUsIDU5ODAxLCA1OTgxNywgNTk4MzMsIAotICAgIDU5ODQ5LCA1OTg2NSwgNTk4ODEsIDU5ODk3LCA1OTkxMywgNTk5MjksIDU5OTQ1LCA1OTk2MSwgNTk5NzcsIDU5OTkzLCAKLSAgICA2MDAwOSwgNjAwMjUsIDYwMDQxLCA2MDA1NywgNjAwNzMsIDYwMDg5LCA2MDEwNSwgNjAxMjEsIDYwMTM3LCA2MDE1MywgCi0gICAgNjAxNjksIDYwMTg1LCA2MDIwMSwgNjAyMTcsIDYwMjMzLCA2MDI0OSwgNjAyNjUsIDYwMjgxLCA2MDI5NywgNjAzMTMsIAotICAgIDYwMzI5LCA2MDM0NSwgNjAzNjEsIDYwMzc3LCA2MDM5MywgNjA0MDksIDYwNDI1LCA2MDQ0MSwgNjA0NTcsIDYwNDczLCAKLSAgICA2MDQ4OSwgNjA1MDUsIDYwNTIxLCA2MDUzNywgNjA1NTMsIDYwNTY5LCA2MDU4NSwgNjA2MDEsIDYwNjE3LCA2MDYzMywgCi0gICAgNjA2NDksIDYwNjY1LCA2MDY4MSwgNjA2OTcsIDYwNzEzLCA2MDcyOSwgNjA3NDUsIDYwNzYxLCA2MDc3NywgNjA3OTMsIAotICAgIDYwODA5LCA2MDgyNSwgNjA4NDEsIDYwODU3LCA2MDg3MywgNjA4ODksIDYwOTA1LCA2MDkyMSwgNjA5MzcsIDYwOTUzLCAKLSAgICA2MDk2OSwgNjA5ODUsIDYxMDAxLCA2MTAxNywgNjEwMzMsIDYxMDQ5LCA2MTA2NSwgNjEwODEsIDYxMDk3LCA2MTExMywgCi0gICAgNjExMjksIDYxMTQ1LCA2MTE2MSwgNjExNzcsIDYxMTkzLCA2MTIwOSwgNjEyMjUsIDYxMjQxLCA2MTI1NywgNjEyNzMsIAotICAgIDYxMjg5LCA2MTMwNSwgNjEzMjEsIDYxMzM3LCA2MTM1MywgNjEzNjksIDYxMzg1LCA2MTQwMSwgNjE0MTcsIDYxNDMzLCAKLSAgICA2MTQ0OSwgNjE0NjUsIDYxNDgxLCA2MTQ5NywgNjE1MTMsIDYxNTI5LCA2MTU0NSwgNjE1NjEsIDYxNTc3LCA2MTU5MywgCi0gICAgNjE2MDksIDYxNjI1LCA2MTY0MSwgNjE2NTcsIDYxNjczLCA2MTY4OSwgNjE3MDUsIDYxNzIxLCA2MTczNywgNjE3NTMsIAotICAgIDYxNzY5LCA2MTc4NSwgNjE4MDEsIDYxODE3LCA2MTgzMywgNjE4NDksIDYxODY1LCA2MTg4MSwgNjE4OTcsIDYxOTEzLCAKLSAgICA2MTkyOSwgNjE5NDUsIDYxOTYxLCA2MTk3NywgNjE5OTMsIDYyMDA5LCA2MjAyNSwgNjIwNDEsIDYyMDU3LCA2MjA3MywgCi0gICAgNjIwODksIDYyMTA1LCA2MjEyMSwgNjIxMzcsIDYyMTUzLCA2MjE2OSwgNjIxODUsIDYyMjAxLCA2MjIxNywgNjIyMzMsIAotICAgIDYyMjQ5LCA2MjI2NSwgNjIyODEsIDYyMjk3LCA2MjMxMywgNjIzMjksIDYyMzQ1LCA2MjM2MSwgNjIzNzcsIDYyMzkzLCAKLSAgICA2MjQwOSwgNjI0MjUsIDYyNDQxLCA2MjQ1NywgNjI0NzMsIDYyNDg5LCA2MjUwNSwgNjI1MjEsIDYyNTM3LCA2MjU1MywgCi0gICAgNjI1NjksIDYyNTg1LCA2MjYwMSwgNjI2MTcsIDYyNjMzLCA2MjY0OSwgNjI2NjUsIDYyNjgxLCA2MjY5NywgNjI3MTMsIAotICAgIDYyNzI5LCA2Mjc0NSwgNjI3NjEsIDYyNzc3LCA2Mjc5MywgNjI4MDksIDYyODI1LCA2Mjg0MSwgNjI4NTcsIDYyODczLCAKLSAgICA2Mjg4OSwgNjI5MDUsIDYyOTIxLCA2MjkzNywgNjI5NTMsIDYyOTY5LCA2Mjk4NSwgNjMwMDEsIDYzMDE2LCAxODMwNywgCi0gICAgNjMwMjUsIDYzMDMwLCA2MzAzNiwgNjMwNDIsIDYzMDUyLCA2MzA2MCwgMTYyNzAsIDE2ODY4LCAxMDczMywgNjMwNzMsIAotICAgIDE1MTgsIDE1MjIsIDYzMDgxLCAzOTczLCAyOTU2NiwgNzUxMiwgNjMwODcsIDYzMDkyLCA2MzA5NywgNjMxMDIsIDYzMTA3LCAKLSAgICA2MzExMywgNjMxMTgsIDYzMTI0LCA2MzEyOSwgNjMxMzUsIDYzMTQwLCA2MzE0NSwgNjMxNTAsIDYzMTU1LCA2MzE2MSwgCi0gICAgNjMxNjYsIDYzMTcxLCA2MzE3NiwgNjMxODEsIDYzMTg2LCA2MzE5MSwgNjMxOTYsIDYzMjAyLCA2MzIwNywgNjMyMTMsIAotICAgIDYzMjIwLCAyNjAwLCA2MzIyNSwgNjMyMzEsIDg5MTIsIDYzMjM1LCA2MzI0MCwgNjMyNDcsIDYzMjU1LCA2NSwgNjMyNTksIAotICAgIDYzMjY1LCA2MzI3MCwgNjMyNzUsIDYzMjc5LCA2MzI4NCwgNjMyODgsIDYzMjkyLCAxMTYyMSwgNjMyOTYsIDYzMzA2LCAKLSAgICA2MzMxOSwgNjMzMzAsIDYzMzQzLCA2MzM1MCwgNjMzNTYsIDYzMzY0LCA2MzM2OSwgNjMzNzUsIDYzMzgxLCA2MzM4NywgCi0gICAgNjMzOTIsIDYzMzk3LCA2MzQwMiwgNjM0MDcsIDYzNDExLCA2MzQxNiwgNjM0MjEsIDYzNDI2LCA2MzQzMiwgNjM0MzgsIAotICAgIDYzNDQ0LCA2MzQ0OSwgNjM0NTMsIDYzNDU4LCA2MzQ2MywgNjM0NjcsIDYzNDcyLCA2MzQ3NywgNjM0ODIsIDYzNDg2LCAKLSAgICAxMTYzNywgMTE2NDgsIDExNjUzLCAxNTYxLCA2MzQ5MCwgNjM0OTYsIDE1NjYsIDYzNTAxLCA2MzUwNCwgMTc3NDEsIAotICAgIDYzNTA5LCA2MzUxNSwgNjM1MjAsIDE1OTcsIDYzNTI2LCAxNjAzLCAxNjA5LCAxMTY4MywgNjM1MzEsIDYzNTQwLCA2MzU0OCwgCi0gICAgNjM1NTUsIDYzNTU5LCA2MzU2MywgNjM1NjksIDYzNTc0LCAzMzM2NSwgNjM1NzksIDYzNTg2LCA2MzU5MywgNjM1OTgsIAotICAgIDYzNjAyLCA2MzYwNiwgNjM2MTUsIDE2MTQsIDE3ODUwLCA2MzYyMCwgNjM2MjQsIDE3ODYxLCAxMTYyLCA2MzYyOCwgCi0gICAgNjM2MzUsIDYzNjQwLCA2MzY0NCwgMTc4OTEsIDE2MTgsIDQxMjQzLCA2MzY0NywgNjM2NTIsIDYzNjYyLCA2MzY3MSwgCi0gICAgNjM2NzYsIDYzNjgwLCA2MzY4NiwgMTYyMywgNDM4NTUsIDYzNjkxLCA2MzcwMCwgNjM3MDYsIDYzNzExLCA2MzcxNiwgCi0gICAgMTE4ODIsIDExODg4LCA2MzcyMiwgNjM3MzQsIDYzNzUxLCA2Mzc2OCwgNjM3ODUsIDYzODAyLCA2MzgxOSwgNjM4MzYsIAotICAgIDYzODUzLCA2Mzg3MCwgNjM4ODcsIDYzOTA0LCA2MzkyMSwgNjM5MzgsIDYzOTU1LCA2Mzk3MiwgNjM5ODksIDY0MDA2LCAKLSAgICA2NDAyMywgNjQwNDAsIDY0MDU3LCA2NDA3NCwgNjQwOTEsIDY0MTA4LCA2NDEyNSwgNjQxNDIsIDY0MTU5LCA2NDE3NiwgCi0gICAgNjQxOTMsIDY0MjEwLCA2NDIyNywgNjQyNDQsIDY0MjYxLCA2NDI3OCwgNjQyOTUsIDY0MzEyLCA2NDMyOSwgNjQzNDYsIAotICAgIDY0MzYzLCA2NDM4MCwgNjQzOTcsIDY0NDE0LCA2NDQzMSwgNjQ0NDgsIDY0NDY1LCA2NDQ4MiwgNjQ0OTksIDY0NTE2LCAKLSAgICA2NDUzMywgNjQ1NTAsIDY0NTY3LCA2NDU3OCwgNjQ1ODgsIDY0NTkzLCAxNjI4LCA2NDU5NywgNjQ2MDIsIDY0NjA4LCAKLSAgICA2NDYxMywgNjQ2MTgsIDY0NjI1LCA5ODM5LCAxNjMzLCA2NDYzMSwgNjQ2NDAsIDI5ODg3LCA2NDY0NSwgNjQ2NTYsIAotICAgIDExODk5LCA2NDY2NiwgNjQ2NzEsIDY0Njc3LCA2NDY4MiwgNjQ2ODksIDY0Njk1LCA2NDcwMCwgMTYzOCwgMTgxNzQsIAotICAgIDY0NzA1LCA2NDcxMSwgMTE5MDksIDE2NDMsIDExOTE0LCA2NDcxNywgNjQ3MjIsIDY0NzI4LCA2NDczMywgNjQ3MzgsIAotICAgIDY0NzQzLCA2NDc0OCwgNjQ3NTMsIDY0NzU4LCA2NDc2MywgNjQ3NjgsIDY0Nzc0LCA2NDc4MCwgNjQ3ODYsIDY0NzkxLCAKLSAgICA2NDc5NSwgNjQ4MDAsIDY0ODA1LCA2NDgwOSwgNjQ4MTQsIDY0ODE5LCA2NDgyNCwgNjQ4MjksIDY0ODMzLCA2NDgzOCwgCi0gICAgNjQ4NDQsIDY0ODQ5LCA2NDg1NCwgNjQ4NTgsIDY0ODYzLCA2NDg2OCwgNjQ4NzQsIDY0ODc5LCA2NDg4NCwgNjQ4OTAsIAotICAgIDY0ODk2LCA2NDkwMSwgNjQ5MDUsIDY0OTEwLCA2NDkxNSwgNjQ5MjAsIDY0OTI0LCA2NDkyOSwgNjQ5MzQsIDY0OTM5LCAKLSAgICA2NDk0NSwgNjQ5NTEsIDY0OTU2LCA2NDk2MCwgNjQ5NjQsIDY0OTY5LCA2NDk3NCwgNjQ5NzksIDMxMzk1LCA2NDk4MywgCi0gICAgNjQ5ODgsIDY0OTkzLCA2NDk5OSwgNjUwMDQsIDY1MDA5LCA2NTAxMywgNjUwMTgsIDY1MDIzLCA2NTAyOSwgNjUwMzQsIAotICAgIDY1MDM5LCA2NTA0NSwgNjUwNTEsIDY1MDU2LCA2NTA2MCwgNjUwNjUsIDY1MDcwLCA2NTA3NCwgNjUwNzksIDY1MDg0LCAKLSAgICA2NTA4OSwgNjUwOTUsIDY1MTAxLCA2NTEwNiwgNjUxMTAsIDY1MTE1LCA2NTEyMCwgNjUxMjQsIDY1MTI5LCA2NTEzNCwgCi0gICAgNjUxMzksIDY1MTQ0LCA2NTE0OCwgNjUxNTEsIDY1MTU0LCA2NTE1OSwgNjUxNjQsIDM0MDU2LCA2NTE3MSwgNjUxNzksIAotICAgIDM2OTEsIDI5ODM3LCA2NTE4NSwgNjUxOTIsIDY1MTk4LCAzODMwLCAxMjAyMCwgNjUyMDQsIDY1MjE0LCA2NTIyOSwgCi0gICAgNjUyMzcsIDEyMDI1LCA2NTI0OCwgNjUyNTMsIDY1MjY0LCA2NTI3NiwgNjUyODgsIDY1MzAwLCAyNzM0LCA2NTMxMiwgCi0gICAgNjUzMTcsIDY1MzI5LCA2NTMzMywgNjUzMzksIDY1MzQ1LCA2NTM1MCwgMTY2MCwgMTc0MTgsIDY1MzU5LCA2NTM2NCwgCi0gICAgNDM5MTQsIDY1MzY4LCA2NTM3MiwgNjUzNzcsIDY1MzgxLCAxODMxNSwgNjUzODYsIDY1Mzg5LCA2NTM5NCwgNjU0MDIsIAotICAgIDY1NDEwLCAxNjY0LCAxMjA2MSwgMTIwNjcsIDE2NjksIDY1NDE4LCA2NTQyNSwgNjU0MzAsIDY1NDM5LCA2NTQ0OSwgCi0gICAgNjU0NTYsIDY1NDYxLCA2NTQ2NiwgMTY3NCwgNjU0NzMsIDY1NDc4LCAxODQzNSwgNjU0ODIsIDY1NDg3LCA2NTQ5NCwgCi0gICAgNjU1MDAsIDY1NTA0LCA2NTUxNSwgNjU1MjUsIDY1NTMyLCAxODQ1NywgOTczMywgOTc0MCwgNDAyMiwgNDAyOCwgNjU1MzksIAotICAgIDE2NzksIDY1NTQ0LCA2NTU1MCwgNjU1NTgsIDY1NTY1LCA2NTU3MSwgNjU1NzgsIDY1NTkwLCA2NTU5NiwgNjU2MDEsIAotICAgIDY1NjEzLCA2NTYyNCwgNjU2MzMsIDY1NjQzLCAzOTUyLCA2NTY1MSwgMzMxNjYsIDMzMTc1LCAxODQ5NywgMTY4NCwgMTY4OCwgCi0gICAgNjU2NjQsIDY1Njc1LCA2NTY4MCwgMTY5OCwgNjU2ODgsIDY1NjkzLCA2NTY5OCwgMTg1NTYsIDY1NzEwLCA2NTcxMywgCi0gICAgNjU3MTksIDY1NzI1LCA2NTczMCwgNjU3MzgsIDE3MDMsIDY1NzQzLCA2NTc0OCwgNjU3NTYsIDY1NzY0LCA2NTc3MSwgCi0gICAgNjU3ODAsIDY1Nzg4LCA2NTc5NywgMTcwOCwgNjU4MDEsIDE3MTMsIDIzMDE2LCA2NTgwNiwgNjU4MTMsIDE4NjMwLCAKLSAgICA2NTgyMSwgNjU4MjcsIDY1ODMyLCA2NTg0MCwgNjU4NDcsIDY1ODU1LCA2NTg2NSwgNjU4NzQsIDY1ODg0LCA2NTg5MywgCi0gICAgNjU5MDQsIDY1OTE0LCA2NTkyNCwgNjU5MzMsIDY1OTQzLCA2NTk1NywgNjU5NzAsIDY1OTc5LCA2NTk4NywgNjU5OTcsIAotICAgIDY2MDA2LCA2NjAxOCwgNjYwMjksIDY2MDQwLCA2NjA1MCwgMTc5NDgsIDY2MDU1LCAxMjIxMywgNjYwNjQsIDY2MDcwLCAKLSAgICA2NjA3NSwgNjYwODIsIDY2MDg5LCA2NjA5NSwgMTc2MTcsIDY2MTA1LCA2NjExMSwgNjYxMTYsIDY2MTI3LCA2NjEzMiwgCi0gICAgNjYxNDAsIDEyMjMwLCAxMjIzNSwgNjYxNDgsIDY2MTU0LCA2NjE1OCwgNjYxNjYsIDQwMTcsIDE4NjkyLCA0NDAwNywgCi0gICAgNjYxNzEsIDY2MTc3LCA2NjE4MiwgNjYxOTAsIDY2MTk3LCAxMzE3OSwgNjYyMDIsIDY2MjA4LCAxNzI0LCA2NjIxMywgCi0gICAgNjYyMTYsIDE0MzgsIDY2MjIyLCA2NjIyNywgNjYyMzIsIDY2MjM4LCA2NjI0MywgNjYyNDgsIDY2MjUzLCA2NjI1OCwgCi0gICAgNjYyNjMsIDY2MjY4LCAxNzMzLCAxMywgNjYyNzQsIDY2Mjc4LCA2NjI4MywgNjYyODcsIDY2MjkxLCA2NjI5NSwgMzQyOTYsIAotICAgIDY2MzAwLCAyNTA3MCwgNjYzMDUsIDY2MzEwLCA2NjMxNCwgNjYzMTcsIDY2MzIxLCA2NjMyNSwgNjYzMzAsIDY2MzM0LCAKLSAgICA2NjMzOSwgNjYzNDMsIDY2MzQ5LCAzNzUxNCwgMzc1MTksIDM3NTI0LCA2NjM1MiwgNjYzNTksIDY2MzY1LCA2NjM3MywgCi0gICAgNDM2NzgsIDY2MzgzLCAzNzUzMCwgMzQ1NjAsIDM0MzExLCAzNDMxNywgMzc1NDYsIDM0MzIzLCA2NjM4OCwgNjYzOTMsIAotICAgIDM0NTkzLCA2NjM5NywgNjY0MDAsIDY2NDA0LCA2NjQxMiwgNjY0MTksIDY2NDIyLCA2NjQyNywgNjY0MzIsIDY2NDM2LCAKLSAgICA2NjQ0MCwgNjY0NDMsIDY2NDUzLCA2NjQ2NSwgNjY0NzIsIDY2NDc4LCAzNDMyOCwgNjY0ODUsIDM2MDc4LCA2NjQ4OCwgCi0gICAgODkyOSwgMTAxOSwgNjY0OTEsIDY2NDk1LCA2NjUwMCwgMzg3MywgNjY1MDQsIDY2NTA3LCAxNDgyNywgNjY1MTQsIDY2NTIxLCAKLSAgICA2NjUzNCwgNjY1NDIsIDY2NTUxLCA2NjU2MCwgNjY1NjUsIDY2NTc1LCA2NjU4OCwgNjY2MDAsIDY2NjA3LCA2NjYxMiwgCi0gICAgNjY2MjEsIDY2NjM0LCAzOTAzOSwgNjY2NTIsIDY2NjU3LCA2NjY2NCwgNjY2NzAsIDY2Njc1LCA4MTksIDY2NjgwLCAKLSAgICA2NjY4OCwgNjY2OTUsIDY2NzAyLCAyOTM5MiwgNzgzLCA2NjcwOCwgNjY3MTQsIDY2NzI0LCA2NjczMiwgNjY3MzgsIAotICAgIDY2NzQzLCAzNDM0NywgNjMxMCwgMzQzNjEsIDY2NzQ3LCA2Njc1NywgNjY3NjIsIDY2NzcyLCA2Njc4NywgNjY3OTMsIAotICAgIDY2Nzk5LCAzNDM3MSwgNjY4MDQsIDMzNDgyLCA2NjgwOCwgNjY4MTMsIDY2ODIwLCA2NjgyNSwgNjY4MjksIDY2ODM0LCAKLSAgICAxODUwMCwgNjY4NDEsIDY2ODQ2LCA2Njg1MCwgNjM1MSwgMzQzOTcsIDY2ODU0LCA2Njg2MCwgMzI0LCA2Njg3MCwgNjY4NzcsIAotICAgIDY2ODg0LCA2Njg4OSwgNjY4OTgsIDYzNjU2LCA2NjkwNCwgNjY5MTIsIDY2OTE2LCA2NjkyMCwgNjY5MjQsIDY2OTI4LCAKLSAgICA2NjkzMywgNjY5MzcsIDY2OTQzLCA2Njk1MSwgNjY5NTYsIDY2OTYxLCA2Njk2NiwgNjY5NzAsIDY2OTc1LCA2Njk3OSwgCi0gICAgNjY5ODMsIDY2OTg5LCA2Njk5NSwgNjcwMDAsIDY3MDA0LCA2NzAwOSwgMzQ1MjEsIDY3MDEzLCAzNDUyNywgMzQ1MzMsIAotICAgIDY3MDE4LCA2NzAyNCwgNjcwMzEsIDY3MDM2LCA2NzA0MCwgMzM0OTksIDE4MTY3LCA2NzA0MywgNjcwNDcsIDY3MDUyLCAKLSAgICA2NzA1OSwgNjcwNjUsIDY3MDY5LCA2NzA3NCwgNDMzNTMsIDY3MDgwLCA2NzA4NCwgNjcwOTEsIDY3MDk1LCA2NzEwMCwgCi0gICAgNjcxMDYsIDY3MTEyLCA2NzExOCwgNjcxMzAsIDY3MTM5LCA2NzE0OSwgNjcxNTUsIDY3MTYyLCA2NzE2NywgNjcxNzIsIAotICAgIDY3MTc2LCA2NzE3OSwgNjcxODUsIDY3MTkyLCA2NzE5NywgNjcyMDIsIDY3MjA5LCA2NzIxNiwgNjcyMjMsIDY3MjI5LCAKLSAgICA2NzIzNCwgNjcyMzksIDY3MjQ3LCAzNDUzOCwgMjQ2MiwgNjcyNTIsIDY3MjU3LCA2NzI2MywgNjcyNjgsIDY3Mjc0LCAKLSAgICA2NzI3OSwgNjcyODQsIDY3Mjg5LCA2NzI5NSwgMzQ1NTksIDY3MzAwLCA2NzMwNiwgNjczMTIsIDY3MzE4LCAzNDYyOSwgCi0gICAgNjczMjMsIDY3MzI4LCA2NzMzMywgMzQ2NDAsIDY3MzM4LCA2NzM0MywgNjczNDgsIDY3MzU0LCA2NzM2MCwgMzQ2NDUsIAotICAgIDY3MzY1LCA2NzM3MCwgNjczNzUsIDM0NzAwLCAzNDcwNiwgNjczODAsIDY3Mzg1LCAzNDcxMSwgMzQ3MzMsIDMwMTM2LCAKLSAgICAzNDczOSwgMzQ3NDMsIDY3MzkwLCAxMjkwOSwgNjczOTQsIDY3NDAyLCA2NzQwOCwgNjc0MTYsIDY3NDIzLCA2NzQyOSwgCi0gICAgNjc0MzksIDY3NDQ1LCA2NzQ1MiwgMTE1NTYsIDM0NzU3LCA2NzQ1OCwgNjc0NzEsIDY3NDgwLCA2NzQ4NiwgNjc0OTUsIAotICAgIDY3NTAxLCAyNTM4MCwgNjc1MDgsIDY3NTE1LCA2NzUyNSwgNjc1MjgsIDM0NzAxLCA2NzUzMywgNjc1NDAsIDY3NTQ1LCAKLSAgICA2NzU0OSwgNjc1NTMsIDY3NTU4LCA2NzU2MiwgNDEzMywgNjc1NjcsIDY3NTcyLCA2NzU3NywgMzc2MDgsIDM3NjEzLCAKLSAgICA2NzU4MSwgMzc2MjcsIDY3NTg2LCAzNzYzMiwgNjc1OTEsIDY3NTk3LCAzNzY0NCwgMzc2NTAsIDM3NjU2LCA2NzYwMiwgCi0gICAgNjc2MDgsIDI0MzY2LCA2NzYxOSwgNjc2MjIsIDY3NjM0LCA2NzY0MiwgMzQ3ODAsIDY3NjQ2LCA2NzY1NSwgNjc2NjUsIAotICAgIDY3Njc0LCAzNDc5MCwgNjc2NzksIDY3Njg2LCA2NzY5NSwgNjc3MDEsIDY3NzA5LCA2NzcxNiwgNjQwMiwgNDY3MywgCi0gICAgNjc3MjEsIDM0NzEyLCA2NzcyNywgNjc3MzAsIDY3NzM2LCA2Nzc0MywgNjc3NDgsIDY3NzUzLCAyNTI5MCwgNjc3NTcsIAotICAgIDY3NzYzLCA2Nzc2OSwgNjc3NzQsIDY3Nzc5LCA2Nzc4MywgNjc3ODksIDY3Nzk1LCAzNTk4NCwgMTA0OCwgMzg2ODksIAotICAgIDQwNDE5LCA0MDQyNSwgMzQ4MjEsIDM0ODI2LCA2NzgwMCwgNjc4MDQsIDY3ODA4LCA2NzgxMSwgNjc4MjQsIDY3ODMwLCAKLSAgICA2NzgzNCwgNjc4MzcsIDY3ODQyLCAzNjMyMSwgNjc4NDYsIDMzNTA0LCAyMjk2NiwgNjc4NTIsIDYzMzEsIDYzMzksIDk1NzAsIAotICAgIDY3ODU1LCA2Nzg2MCwgNjc4NjUsIDY3ODcwLCA2Nzg3NSwgNjc4ODAsIDY3ODg1LCA2Nzg5MCwgNjc4OTUsIDY3OTAwLCAKLSAgICA2NzkwNiwgNjc5MTEsIDY3OTE2LCA2NzkyMiwgNjc5MjcsIDY3OTMyLCA2NzkzNywgNjc5NDIsIDY3OTQ3LCA2Nzk1MiwgCi0gICAgNjc5NTgsIDY3OTYzLCA2Nzk2OSwgNjc5NzQsIDY3OTc5LCA2Nzk4NCwgNjc5ODksIDY3OTk0LCA2Nzk5OSwgNjgwMDQsIAotICAgIDY4MDA5LCA2ODAxNCwgNjgwMTksIDY4MDI1LCA2ODAzMCwgNjgwMzUsIDY4MDQwLCA2ODA0NSwgNjgwNTAsIDY4MDU1LCAKLSAgICA2ODA2MSwgNjgwNjYsIDY4MDcxLCA2ODA3NiwgNjgwODEsIDY4MDg2LCA2ODA5MSwgNjgwOTYsIDY4MTAxLCA2ODEwNiwgCi0gICAgNjgxMTIsIDY4MTE3LCA2ODEyMiwgNjgxMjcsIDY4MTMyLCA2ODEzOCwgNjgxNDQsIDY4MTQ5LCA2ODE1NSwgNjgxNjAsIAotICAgIDY4MTY1LCA2ODE3MCwgNjgxNzUsIDY4MTgwLCAxNTExLCAxNDUsIDY4MTg1LCA2ODE4OSwgNjgxOTMsIDY4MTk3LCAyNzA3NiwgCi0gICAgNjgyMDEsIDY4MjA1LCA2ODIxMCwgNjgyMTQsIDY4MjE5LCA2ODIyMywgNjgyMjgsIDY4MjMzLCA2ODIzOCwgNjgyNDIsIAotICAgIDY4MjQ2LCA2ODI1MSwgNjgyNTUsIDE0NTQyLCA2ODI2MCwgNjgyNjQsIDY4MjcxLCA2ODI4MSwgMTY1OTUsIDY4MjkwLCAKLSAgICA2ODI5OSwgNjgzMDMsIDY4MzA4LCA2ODMxMywgNjgzMTcsIDY4MzIxLCAyNjg3MCwgMzA3OCwgNjgzMjUsIDY4MzMxLCAKLSAgICAxODk2NywgNjgzMzUsIDY4MzQ0LCA2ODM1MiwgNjgzNTgsIDY4MzYzLCA2ODM3NSwgNjgzODcsIDY4MzkyLCA2ODM5NiwgCi0gICAgNjg0MDEsIDY4NDA1LCA2ODQxMSwgNjg0MTcsIDY4NDIyLCA2ODQzMiwgNjg0NDIsIDY4NDQ4LCA2ODQ1MywgNjg0NTcsIAotICAgIDY4NDYzLCA2ODQ2OCwgNjg0NzUsIDY4NDgxLCA2ODQ4NiwgNjg0OTUsIDY4NTA0LCA2ODUxMiwgMTY5OTMsIDY4NTE2LCAKLSAgICA2ODUyNSwgNjg1MzMsIDY4NTQ1LCA2ODU1NiwgNjg1NjcsIDY4NTc2LCA2ODU4MCwgNjg1ODksIDY4NTk3LCA2ODYwNywgCi0gICAgNjg2MTUsIDY4NjIyLCA2ODYyOCwgNjg2MzMsIDY4NjM5LCA2ODY0NCwgNjg2NTUsIDU0LCAzMzMwOSwgNjg2NjEsIDI4MzMxLCAKLSAgICAyODM0MSwgNjg2NjcsIDY4Njc1LCA2ODY4MiwgNjg2ODgsIDY4NjkyLCA2ODcwMiwgNjg3MTMsIDY4NzIxLCA2ODczMCwgCi0gICAgNjg3MzUsIDY4NzQwLCA2ODc0NSwgNjg3NDksIDY4NzUzLCAxODkyMSwgNjg3NjEsIDY4NzY1LCA2ODc3MSwgNjg3ODEsIAotICAgIDY4Nzg4LCA2ODc5NCwgNjg4MDAsIDM3NzA3LCA2ODgwNCwgNjg4MDYsIDY4ODA5LCA2ODgxNSwgNjg4MTksIDY4ODMwLCAKLSAgICA2ODg0MCwgNjg4NDYsIDY4ODUzLCA2ODg2MCwgMTQ0NzksIDY4ODY4LCA2ODg3NCwgNjg4ODMsIDY4ODkyLCA2ODg5OCwgCi0gICAgMTA2MTUsIDY4OTA0LCA2ODkxMCwgNjg5MTUsIDY4OTIwLCA2ODkyNywgNjg5MzIsIDY4OTM5LCA2ODk0NSwgNjg5NTAsIAotICAgIDY4OTU4LCA2ODk3MSwgNjg5ODAsIDY1OTE5LCA2NTkyOSwgNjg5ODksIDY4OTk1LCA2OTAwMSwgNjkwMDgsIDY5MDE1LCAKLSAgICA2OTAyMiwgNjkwMjksIDY5MDM2LCA2OTA0MSwgNjkwNDUsIDY5MDQ5LCA2OTA1MiwgNjkwNjIsIDY5MDY2LCA2OTA3OCwgCi0gICAgNjkwODcsIDY5MDkxLCA2OTEwMiwgNjkxMDcsIDY5MTExLCA2NTkzOCwgNjkxMTcsIDY5MTI0LCA2OTEzMywgNjkxNDEsIAotICAgIDY5MTQ5LCA2OTE1NCwgNjkxNTgsIDY5MTYzLCA2OTE2OCwgNjkxNzgsIDY5MTg2LCA2OTE5MSwgNjkxOTUsIDY5MTk5LCAKLSAgICA2OTIwNSwgNjkyMTMsIDY5MjIwLCA2OTIzMiwgNjkyNDAsIDY5MjUxLCA2OTI1OCwgNjkyNjQsIDY5Mjc0LCA2OTI4MCwgCi0gICAgNjkyODQsIDY5MjkxLCA2OTI5NywgNjkzMDIsIDY5MzA2LCA2OTMxMCwgNjkzMTQsIDY5MzIzLCA2OTMzMiwgNjkzNDEsIAotICAgIDY5MzQ3LCA2OTM1MywgNjkzNTksIDY5MzY0LCA2OTM3MSwgNjkzNzcsIDY5Mzg1LCA2OTM5MiwgNjkzOTgsIDEzNjIyLCAKLSAgICA2OTQwMywgNjk0MDksIDY5NDEzLCAxNTUyOSwgNjk0MTcsIDY5NDIyLCA2OTQzMiwgNjk0NDEsIDY5NDQ3LCA2OTQ1MywgCi0gICAgNjk0NjEsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIDY5NDgyLCA2OTQ5MCwgNjk0OTcsIDY5NTAzLCA2OTUxNCwgNjk1MTgsIAotICAgIDY5NTIyLCA2OTUyNiwgNjk1MjksIDY5NTM1LCA2OTU0MCwgNjk1NDUsIDY5NTQ5LCA2OTU1MywgNjk1NjIsIDY5NTcwLCAKLSAgICA2OTU3NywgNjk1ODMsIDY5NTkwLCAyNTk2MywgNDM0MjIsIDY5NTk1LCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNCwgCi0gICAgNjk2MjIsIDY5NjI5LCA2OTYzNSwgNjk2NDQsIDY5NjUyLCA2OTY1OCwgNjk2NjMsIDY5NjY3LCA2OTY3MiwgNjk2NzcsIAotICAgIDY5NjgxLCA2OTY4NSwgNjk2ODksIDY5Njk0LCA2OTcwMywgNjk3MDcsIDY5NzE0LCA0MDUyOCwgNjk3MTgsIDY5NzI0LCAKLSAgICA2OTcyOCwgNjk3MzYsIDY5NzQyLCA2OTc0NywgNjk3NTgsIDY5NzY2LCA2OTc3MiwgNjk3ODEsIDI0NTEzLCA2OTc4OSwgCi0gICAgNjk3OTYsIDY5ODAzLCA2OTgxMCwgNjk4MTcsIDY5ODI0LCA0NjcwNCwgMTQzMTcsIDY5ODMxLCA2OTgzOCwgNjk4NDMsIAotICAgIDM3NzQzLCA2NTI5LCA2OTg0OSwgNjk4NTQsIDY5ODU5LCA2OTg2NSwgNjk4NzEsIDY5ODc3LCA2OTg4MiwgNjk4ODcsIAotICAgIDY5ODkyLCA2OTg5NywgNjk5MDMsIDY5OTA4LCA2OTkxNCwgNjk5MTksIDY5OTI1LCA2OTkzMCwgNjk5MzUsIDY5OTQwLCAKLSAgICA2OTk0NSwgNjk5NTAsIDY5OTU1LCA2OTk2MCwgNjk5NjYsIDY5OTcxLCA2OTk3NywgNjk5ODIsIDY5OTg3LCA2OTk5MiwgCi0gICAgNjk5OTcsIDcwMDAyLCA3MDAwNywgNzAwMTMsIDcwMDE4LCA3MDAyMywgNzAwMjgsIDcwMDMzLCA3MDAzOCwgNzAwNDMsIAotICAgIDcwMDQ4LCA3MDA1MywgNzAwNTgsIDcwMDYzLCA3MDA2OSwgNzAwNzQsIDcwMDc5LCA3MDA4NCwgNzAwODksIDcwMDk0LCAKLSAgICA3MDA5OSwgNzAxMDQsIDcwMTA5LCA3MDExNSwgNzAxMjAsIDcwMTI1LCA3MDEzMCwgNzAxMzUsIDcwMTQwLCA3MDE0NSwgCi0gICAgNzAxNTAsIDcwMTU1LCA3MDE2MCwgNzAxNjUsIDcwMTcwLCA3MDE3NSwgNzAxODEsIDE4NTQsIDI2MCwgNzAxODYsIDQxMzYxLCAKLSAgICA3MDE5MCwgNzAxOTMsIDcwMTk4LCA3MDIwMiwgNzAyMDUsIDM0MTUsIDcwMjEwLCA3MDIxNSwgNzAyMTksIDcwMjI4LCAKLSAgICA3MDIzOSwgNzAyNTYsIDcwMjc0LCA2OTE0NSwgNzAyODIsIDcwMjg1LCA3MDI5NSwgNzAzMDIsIDcwMzExLCA3MDMyNywgCi0gICAgNzAzMzYsIDcwMzQ2LCA3MDM1MSwgNzAzNjEsIDcwMzcwLCA3MDM3OCwgNzAzOTIsIDcwNDAwLCA3MDQwNCwgNzA0MDcsIAotICAgIDcwNDE0LCA3MDQyMCwgNzA0MzEsIDcwNDM4LCA3MDQ1MCwgNzA0NjEsIDcwNDcyLCA3MDQ4MSwgNzA0ODgsIDEyNzgsIDcxMCwgCi0gICAgNzA0OTgsIDI2MjksIDcwNTAyLCA3MDUwNywgNzA1MTYsIDkyMjEsIDE4ODk0LCAyMjQ3MSwgNzA1MjQsIDcwNTMyLCAKLSAgICA3MDU0NiwgNzA1NTksIDcwNTYzLCA3MDU2OCwgNzA1NzMsIDcwNTc4LCA3MDU4NCwgNzA1OTAsIDcwNTk1LCA4OTIxLCAKLSAgICAxNjYyMywgNzA2MDAsIDcwNjA0LCA3MDYxMiwgMTIwNjIsIDcwNjE3LCA3MDYyMywgNzA2MzIsIDcwNjQwLCAxNzM2LCAKLSAgICAxMjA3NCwgOTA4LCA2NDY1LCA3MDY0NCwgNzA2NDgsIDcwNjU3LCA3MDY2NywgMjQxOSwgMjkxMjcsIDcwNjc2LCA3MDY4MiwgCi0gICAgMTg0MDcsIDI5MTQyLCA3MDY4OCwgNDE5MywgMTI0NTIsIDcwNjk0LCA3MDcwMSwgNjU2NzAsIDcwNzA1LCA3MDcwOSwgCi0gICAgNzA3MTUsIDcwNzIwLCA3MDcyNSwgMzYzNCwgMTU0LCAxNTQzNywgNzA3MzAsIDcwNzQyLCA3MDc0NiwgNzA3NTIsIDcwNzU3LCAKLSAgICAyOTkwNywgNzA3NjEsIDEyNDQwLCAyNzY5LCA0LCA3MDc2NiwgNzA3NzYsIDcwNzg3LCA3MDc5MywgNzA4MDQsIDcwODExLCAKLSAgICA3MDgxNywgNzA4MjMsIDcwODMxLCA3MDgzOCwgNzA4NDQsIDcwODU0LCA3MDg2NCwgNzA4NzQsIDcwODgzLCAyNTM2NywgCi0gICAgMTI5MCwgNzA4ODgsIDcwODkyLCA3MDg5NiwgNzA5MDIsIDcwOTA2LCAyNzkyLCAyNzk4LCA4OTE4LCAyMjk0LCA3MDkxMCwgCi0gICAgNzA5MTQsIDcwOTIzLCA3MDkzMSwgNzA5NDIsIDcwOTUwLCA3MDk1OCwgNzA5NjQsIDcwOTY5LCA3MDk4MCwgNzA5OTEsIAotICAgIDcwOTk5LCA3MTAwNSwgNzEwMTAsIDEwNDM0LCA3MTAyMCwgNzEwMjgsIDcxMDMyLCA3MTAzNiwgNzEwNDEsIDcxMDQ1LCAKLSAgICA3MTA1NywgMzAzMTQsIDE2NTQ4LCA3MTA2NCwgNzEwNzQsIDcxMDgwLCA3MTA4NiwgMTA1MzYsIDcxMDk2LCA3MTEwNywgCi0gICAgNzExMTgsIDcxMTI4LCA3MTEzNywgNzExNDEsIDcxMTQ4LCAxNzUwLCA5OTYsIDcxMTU4LCA3MTE2MywgNzExNzEsIDY1NDgzLCAKLSAgICA3MTE3OSwgNzExODQsIDcxMTk1LCA3MTIwMiwgNzEyMTYsIDE1MzY2LCA0NzgsIDcxMjI2LCA3MTIzMCwgNzEyMzQsIAotICAgIDcxMjQyLCA3MTI1MSwgNzEyNTksIDcxMjY1LCA3MTI3OSwgNzEyODYsIDcxMjkyLCA3MTMwMSwgNzEzMDgsIDcxMzE4LCAKLSAgICA3MTMyNiwgNzEzMzMsIDcxMzQxLCA3MTM0OCwgNDAyNCwgMTQ5LCA3MTM1NiwgNzEzNjcsIDcxMzcxLCA3MTM4MywgNzEzODksIAotICAgIDEyNjMzLCAxOTIsIDcxMzk0LCA5ODcxLCA3MTM5OSwgNzE0MDMsIDcxNDEwLCA3MTQxNiwgNzE0MjQsIDcxNDMxLCA5MjgwLCAKLSAgICA3MTQzOCwgNzE0NDcsIDcxNDU1LCA0MDkzLCA3MTQ2OCwgNDExMCwgNzE0NzIsIDI4NDIsIDUxNCwgNzE0NzcsIDcxNDkwLCAKLSAgICA3MTQ5NCwgNzE0OTksIDI4NDcsIDE4NTMsIDgwOSwgNzE1MDMsIDQxMTQsIDcxNTExLCA3MTUxNywgNzE1MjEsIDg2NiwgCi0gICAgNzE1MzEsIDcxNTQwLCA3MTU0NSwgMzY1MSwgNzE1NDksIDE2MzA0LCAxNjMxMSwgNTAwNjYsIDcxNTUzLCA0MTQ1LCA0MDM0LCAKLSAgICAxNDIwMCwgNzE1NjEsIDcxNTY4LCA3MTU3MywgMjU0MzEsIDcxNTc3LCA3MTU4NCwgNzE1OTAsIDcxNTk1LCA3MTYwMCwgCi0gICAgMTYzMjQsIDE4NiwgNzE2MDUsIDcxNjE3LCA3MTYyMywgNzE2MzEsIDI4NTksIDE3NjgsIDcxNjM5LCA3MTY0MSwgNzE2NDYsIAotICAgIDcxNjUxLCA3MTY1NiwgNzE2NjIsIDcxNjY3LCA3MTY3MiwgNzE2NzcsIDcxNjgyLCA3MTY4NywgNzE2OTIsIDcxNjk4LCAKLSAgICA3MTcwMywgNzE3MDgsIDcxNzEzLCA3MTcxOCwgNzE3MjMsIDcxNzI4LCA3MTczMywgNzE3MzgsIDcxNzQ0LCA3MTc0OSwgCi0gICAgNzE3NTQsIDcxNzU5LCA3MTc2NSwgNzE3NzAsIDcxNzc2LCA3MTc4MSwgNzE3ODYsIDcxNzkxLCA3MTc5NiwgNzE4MDEsIAotICAgIDcxODA2LCA3MTgxMSwgNzE4MTcsIDcxODIyLCA3MTgyOCwgNzE4MzMsIDcxODM4LCA3MTg0MywgNzE4NDgsIDcxODUzLCAKLSAgICA3MTg1OCwgNzE4NjMsIDcxODY4LCA3MTg3NCwgNzE4ODAsIDcxODg1LCA3MTg5MCwgNzE4OTYsIDcxOTAxLCA3MTkwNSwgCi0gICAgNzE5MDksIDcxOTE0LCA3MTkyMCwgNzE5MjQsIDcxOTMwLCA3MTkzNSwgNzE5NDAsIDcxOTQ2LCA3MTk1MSwgNzE5NTUsIAotICAgIDcxOTYwLCA3MTk2NSwgNzE5NjksIDcxOTcyLCA3MTk3NCwgNzE5NzgsIDcxOTgxLCA3MTk4OCwgNzE5OTMsIDcxOTk3LCAKLSAgICA3MjAwMiwgNzIwMDYsIDcyMDEwLCA3MjAxNCwgNzIwMjMsIDcyMDI3LCAzNTAyNiwgNzIwMzAsIDM1MDMxLCA3MjAzNywgCi0gICAgNzIwNDIsIDM1MDM2LCA3MjA1MSwgNzIwNjAsIDM1MDQyLCA3MjA2NSwgMzUwNDcsIDcyMDc0LCA3MjA3OSwgMTI2NzYsIAotICAgIDcyMDgzLCA3MjA4OCwgNzIwOTMsIDM1MDUyLCA3MjA5NywgNDQ5MjEsIDcyMTAxLCA3MjEwNCwgNzIxMDgsIDg1ODksIAotICAgIDcyMTE0LCA3MjExNywgNzIxMjIsIDcyMTI2LCAzODg4LCAzNTA1NywgNzIxMjksIDcyMTMzLCA3MjEzNiwgNzIxNDEsIAotICAgIDcyMTQ1LCA3MjE1MSwgNzIxNTksIDcyMTcyLCA3MjE4MSwgNzIxODcsIDcyMTkyLCA3MjE5OCwgNzIyMDIsIDcyMjA4LCAKLSAgICA3MjIxNCwgNzIyMjIsIDcyMjI3LCA3MjIzMSwgNzIyMzgsIDcyMjQ0LCA3MjI1MiwgNzIyNjEsIDcyMjY5LCAzNTA2MCwgCi0gICAgNzIyNzYsIDcyMjg2LCA3MjI5OSwgNzIzMDQsIDcyMzA5LCA3MjMxMywgNzIzMjIsIDcyMzI4LCA3MjMzNSwgNzIzNDYsIAotICAgIDcyMzU4LCA3MjM2NSwgNzIzNzQsIDcyMzgzLCA3MjM5MiwgNzIzOTksIDcyNDA1LCA3MjQxMiwgNzI0MjAsIDcyNDI3LCAKLSAgICA3MjQzNSwgNzI0NDQsIDcyNDUyLCA3MjQ1OSwgNzI0NjcsIDcyNDc2LCA3MjQ4NCwgNzI0OTMsIDcyNTAzLCA3MjUxMiwgCi0gICAgNzI1MjAsIDcyNTI3LCA3MjUzNSwgNzI1NDQsIDcyNTUyLCA3MjU2MSwgNzI1NzEsIDcyNTgwLCA3MjU4OCwgNzI1OTcsIAotICAgIDcyNjA3LCA3MjYxNiwgNzI2MjYsIDcyNjM3LCA3MjY0NywgNzI2NTYsIDcyNjY0LCA3MjY3MSwgNzI2NzksIDcyNjg4LCAKLSAgICA3MjY5NiwgNzI3MDUsIDcyNzE1LCA3MjcyNCwgNzI3MzIsIDcyNzQxLCA3Mjc1MSwgNzI3NjAsIDcyNzcwLCA3Mjc4MSwgCi0gICAgNzI3OTEsIDcyODAwLCA3MjgwOCwgNzI4MTcsIDcyODI3LCA3MjgzNiwgNzI4NDYsIDcyODU3LCA3Mjg2NywgNzI4NzYsIAotICAgIDcyODg2LCA3Mjg5NywgNzI5MDcsIDcyOTE4LCA3MjkzMCwgNzI5NDEsIDcyOTUxLCA3Mjk2MCwgNzI5NjgsIDcyOTc1LCAKLSAgICA3Mjk4MywgNzI5OTIsIDczMDAwLCA3MzAwOSwgNzMwMTksIDczMDI4LCA3MzAzNiwgNzMwNDUsIDczMDU1LCA3MzA2NCwgCi0gICAgNzMwNzQsIDczMDg1LCA3MzA5NSwgNzMxMDQsIDczMTEyLCA3MzEyMSwgNzMxMzEsIDczMTQwLCA3MzE1MCwgNzMxNjEsIAotICAgIDczMTcxLCA3MzE4MCwgNzMxOTAsIDczMjAxLCA3MzIxMSwgNzMyMjIsIDczMjM0LCA3MzI0NSwgNzMyNTUsIDczMjY0LCAKLSAgICA3MzI3MiwgNzMyODEsIDczMjkxLCA3MzMwMCwgNzMzMTAsIDczMzIxLCA3MzMzMSwgNzMzNDAsIDczMzUwLCA3MzM2MSwgCi0gICAgNzMzNzEsIDczMzgyLCA3MzM5NCwgNzM0MDUsIDczNDE1LCA3MzQyNCwgNzM0MzQsIDczNDQ1LCA3MzQ1NSwgNzM0NjYsIAotICAgIDczNDc4LCA3MzQ4OSwgNzM0OTksIDczNTEwLCA3MzUyMiwgNzM1MzMsIDczNTQ1LCA3MzU1OCwgNzM1NzAsIDczNTgxLCAKLSAgICA3MzU5MSwgNzM2MDAsIDczNjA4LCA3MzYxNSwgNzM2MjMsIDczNjMyLCA3MzY0MCwgNzM2NDksIDczNjU5LCA3MzY2OCwgCi0gICAgNzM2NzYsIDczNjg1LCA3MzY5NSwgNzM3MDQsIDczNzE0LCA3MzcyNSwgNzM3MzUsIDczNzQ0LCA3Mzc1MiwgNzM3NjEsIAotICAgIDczNzcxLCA3Mzc4MCwgNzM3OTAsIDczODAxLCA3MzgxMSwgNzM4MjAsIDczODMwLCA3Mzg0MSwgNzM4NTEsIDczODYyLCAKLSAgICA3Mzg3NCwgNzM4ODUsIDczODk1LCA3MzkwNCwgNzM5MTIsIDczOTIxLCA3MzkzMSwgNzM5NDAsIDczOTUwLCA3Mzk2MSwgCi0gICAgNzM5NzEsIDczOTgwLCA3Mzk5MCwgNzQwMDEsIDc0MDExLCA3NDAyMiwgNzQwMzQsIDc0MDQ1LCA3NDA1NSwgNzQwNjQsIAotICAgIDc0MDc0LCA3NDA4NSwgNzQwOTUsIDc0MTA2LCA3NDExOCwgNzQxMjksIDc0MTM5LCA3NDE1MCwgNzQxNjIsIDc0MTczLCAKLSAgICA3NDE4NSwgNzQxOTgsIDc0MjEwLCA3NDIyMSwgNzQyMzEsIDc0MjQwLCA3NDI0OCwgNzQyNTcsIDc0MjY3LCA3NDI3NiwgCi0gICAgNzQyODYsIDc0Mjk3LCA3NDMwNywgNzQzMTYsIDc0MzI2LCA3NDMzNywgNzQzNDcsIDc0MzU4LCA3NDM3MCwgNzQzODEsIAotICAgIDc0MzkxLCA3NDQwMCwgNzQ0MTAsIDc0NDIxLCA3NDQzMSwgNzQ0NDIsIDc0NDU0LCA3NDQ2NSwgNzQ0NzUsIDc0NDg2LCAKLSAgICA3NDQ5OCwgNzQ1MDksIDc0NTIxLCA3NDUzNCwgNzQ1NDYsIDc0NTU3LCA3NDU2NywgNzQ1NzYsIDc0NTg2LCA3NDU5NywgCi0gICAgNzQ2MDcsIDc0NjE4LCA3NDYzMCwgNzQ2NDEsIDc0NjUxLCA3NDY2MiwgNzQ2NzQsIDc0Njg1LCA3NDY5NywgNzQ3MTAsIAotICAgIDc0NzIyLCA3NDczMywgNzQ3NDMsIDc0NzU0LCA3NDc2NiwgNzQ3NzcsIDc0Nzg5LCA3NDgwMiwgNzQ4MTQsIDc0ODI1LCAKLSAgICA3NDgzNywgNzQ4NTAsIDc0ODYyLCA3NDg3NSwgNzQ4ODksIDc0OTAyLCA3NDkxNCwgNzQ5MjUsIDc0OTM1LCA3NDk0NCwgCi0gICAgNzQ5NTIsIDc0OTU5LCA3NDk2NCwgODQxOSwgNzQ5NzEsIDM1MDcwLCA3NDk3NiwgNzQ5ODEsIDM1MDc1LCA3NDk4NywgCi0gICAgMjI1NzksIDM1MDgwLCA3NDk5MiwgNzQ5OTgsIDc1MDA2LCA3NTAxMiwgNzUwMTgsIDc1MDI1LCA3NTAzMiwgNzUwMzcsIAotICAgIDc1MDQxLCA3NTA0NSwgNzUwNDgsIDc1MDUyLCA3NTA2MSwgNzUwNzAsIDc1MDc4LCA3NTA4NCwgNzUwOTYsIDc1MTA3LCAKLSAgICA3NTExMSwgMzE0MCwgODM5NCwgNzUxMTYsIDc1MTE5LCA3NTEyMSwgNzUxMjUsIDc1MTI5LCA3NTEzMywgNzUxMzksIAotICAgIDc1MTQ0LCAyNzk5MCwgNzUxNDksIDc1MTUzLCA3NTE1NiwgNzUxNjEsIDc1MTY1LCA3NTE3MiwgNzUxNzgsIDc1MTgyLCAKLSAgICA2NDg1LCA3NTE4NiwgMzUwOTcsIDc1MTkxLCA3NTE5OCwgNzUyMDcsIDc1MjE1LCA3NTIyNiwgNzUyMzQsIDc1MjQzLCAKLSAgICA3NTI1MSwgNzUyNTgsIDc1MjY1LCA3NTI3MSwgNzUyODIsIDM1MTAyLCA3NTI4NywgNzUyOTgsIDc1MzEwLCA3NTMxOCwgCi0gICAgNzUzMjksIDc1MzM4LCA3NTM0OSwgNzUzNTQsIDc1MzYyLCAyNTk1LCA3NTM2NywgMzcxNjYsIDc1MzgwLCA3NTM4NCwgCi0gICAgNzUzOTYsIDc1NDA0LCA3NTQwOSwgNzU0MTcsIDc1NDI4LCAxOTExNCwgNzU0MzcsIDc1NDQzLCA3NTQ1MCwgNzU0NTgsIAotICAgIDc1NDY0LCAzNTExMiwgNzU0NjksIDQxMzksIDYzMDU2LCA3NTQ3NiwgNzU0NzksIDc1NDg3LCA3NTUwMCwgNzU1MTMsIAotICAgIDc1NTI2LCA3NTUzOSwgNzU1NDYsIDc1NTU3LCA3NTU2NiwgNzU1NzEsIDQ2NTIxLCA0NjUyNiwgNzU1NzUsIDc1NTc5LCAKLSAgICA3NTU4NywgNzU1OTQsIDc1NjAzLCA3NTYxMSwgNzU2MTcsIDc1NjI2LCA3NTYzNCwgNzU2NDEsIDc1NjQ5LCA3NTY1MywgCi0gICAgNzU2NjIsIDc1NjcxLCA3NTY4MSwgNzU2OTQsIDc1NzA3LCA3NTcxNywgMzUxMTcsIDc1NzIzLCA3NTczMCwgNzU3MzYsIAotICAgIDc1NzQyLCAzNTEyMywgNzU3NDcsIDc1NzUwLCA3NTc1NCwgNzU3NjIsIDc1NzcxLCA0NjI1OSwgNzU3NzksIDc1Nzg4LCAKLSAgICA3NTc5NiwgNzU4MDMsIDc1ODExLCA3NTgyMSwgNzU4MzAsIDc1ODM5LCAzNjQyMCwgNzU4NDgsIDc1ODU5LCA3NTg3NCwgCi0gICAgNzU4ODQsIDk5MDQsIDIzMjYzLCA3NTg5MywgNzU4OTgsIDc1OTAzLCA3NTkwNywgNzU5MTIsIDc1OTE2LCA3NTkyMSwgCi0gICAgNzU5MjcsIDc1OTMyLCA3NTkzNywgNzU5NDMsIDc1OTQ4LCA3NTk1MywgMjMyMjgsIDc1OTU4LCA3NTk2NSwgNzU5NzMsIAotICAgIDc1OTgxLCA3NTk4OSwgNzU5OTQsIDc2MDAxLCA3NjAwOCwgNzYwMTMsIDIyNzIsIDc2MDE3LCA3NjAyMSwgNzYwMjksIAotICAgIDc2MDM3LCAzNTE0MCwgNzYwNDMsIDc2MDQ5LCA3NjA2MSwgNzYwNjcsIDc2MDc0LCA3NjA3OCwgNzYwODUsIDc2MDkwLCAKLSAgICA3NjA5NywgNzYxMDMsIDc2MTEwLCA3NjEyMSwgNzYxMzEsIDc2MTQxLCA3NjE1MywgNzYxNTksIDc2MTY3LCA3NjE3MywgCi0gICAgNzYxODMsIDc2MTkzLCAzNTE2NywgNzYyMDIsIDc2MjExLCA3NjIxNywgNzYyMjksIDc2MjQwLCA3NjI0NywgNzYyNTIsIAotICAgIDc2MjU2LCA3NjI2NCwgNzYyNzAsIDc2Mjc1LCA3NjI4MCwgNzYyODcsIDc2Mjk1LCA3NjMwNywgNzYzMTcsIDc2MzI2LCAKLSAgICA3NjMzNSwgNzYzNDIsIDM3MDE5LCAyNTc2NCwgNzYzNDgsIDc2MzUzLCA3NjM1NywgNzYzNjEsIDc2MzY2LCA3NjM3NCwgCi0gICAgNzYzODAsIDc2MzkxLCA3NjQwNCwgNzY0MDksIDc2NDE2LCAzNTE3MiwgNzY0MjEsIDc2NDMzLCA3NjQ0MiwgNzY0NTAsIAotICAgIDc2NDYwLCA3NjQ3MSwgNzY0ODQsIDc2NDkxLCA3NjUwMCwgNzY1MDksIDc2NTE3LCA3NjUyMiwgNzY1MjgsIDE1MDAsIAotICAgIDc2NTMzLCA3NjUzOCwgNzY1NDMsIDc2NTQ4LCA3NjU1NCwgNzY1NTksIDc2NTY0LCA3NjU3MCwgNzY1NzYsIDc2NTgxLCAKLSAgICA3NjU4NSwgNzY1OTAsIDc2NTk1LCA3NjYwMCwgNjM2MTEsIDc2NjA1LCA3NjYxMCwgNzY2MTUsIDc2NjIwLCA3NjYyNiwgCi0gICAgNzY2MzIsIDc2NjM3LCA3NjY0MSwgNzY2NDYsIDc2NjUxLCA3NjY1NiwgNzY2NjIsIDc2NjY3LCA3NjY3MywgNzY2NzgsIAotICAgIDc2NjgzLCA3NjY4OCwgNzY2OTMsIDc2Njk3LCA3NjcwMywgNzY3MDgsIDc2NzE3LCA3NjcyMiwgNzY3MjcsIDc2NzMyLCAKLSAgICA3NjczNywgNzY3NDEsIDc2NzQ4LCA3Njc1NCwgNDQzMCwgMTg3MzcsIDMxMDUsIDc2NzU5LCA3Njc2MywgNzY3NjgsIAotICAgIDc2NzcyLCA3Njc3NiwgNzY3ODAsIDUwMzIxLCA3Njc4NCwgNzY3MDksIDc2Nzg2LCA3Njc5NiwgMzUxODEsIDc2Nzk5LCAKLSAgICA3NjgwNCwgNzY4MTMsIDc2ODE5LCA2NDU0LCAzNTE4NiwgNzY4MjMsIDc2ODI5LCA3NjgzNCwgNzY4NDAsIDc2ODQ1LCAKLSAgICA3Njg0OSwgNzY4NTYsIDc2ODYxLCA3Njg3MSwgNzY4ODAsIDc2ODg0LCA3Njg5MCwgNzY4OTYsIDc2OTAyLCA3NjkwNiwgCi0gICAgNzY5MTQsIDc2OTIxLCA3NjkyOSwgNzY5MzcsIDM1MTkxLCA3Njk0NCwgNzY5NDcsIDc2OTU0LCA3Njk2MCwgNzY5NjUsIAotICAgIDc2OTY5LCA3Njk3NSwgNzY5ODIsIDc2OTg3LCA3Njk5MSwgNzcwMDAsIDc3MDA4LCA3NzAxNCwgNzcwMTksIDM1MTk2LCAKLSAgICA3NzAyNiwgNzcwMzgsIDc3MDQ1LCA3NzA1MSwgNzcwNTYsIDc3MDYyLCA3NzA2OSwgNzcwNzUsIDIyOTc5LCAyOTU4OSwgCi0gICAgNzcwODEsIDc3MDg2LCA3NzA5MiwgNzcwOTYsIDc3MTA4LCA3Njc0MiwgNzY3NDksIDIzMTYwLCA3NzExOCwgNzcxMjMsIAotICAgIDc3MTMwLCA3NzEzNiwgNzcxNDMsIDc3MTQ5LCA3NzE2MCwgNzcxNjUsIDc3MTczLCA5NjA5LCA3NzE3OCwgNzcxODEsIAotICAgIDc3MTg3LCA3NzE5MSwgNzcxOTUsIDc3MTk4LCA3NzIwNCwgMzQ5MzQsIDQ0MzEsIDEwNjcsIDE0NTk2LCA3NzIxMSwgCi0gICAgNzcyMTcsIDc3MjIzLCA3NzIyOSwgNzcyMzUsIDc3MjQxLCA3NzI0NywgNzcyNTMsIDc3MjU5LCA3NzI2NCwgNzcyNjksIAotICAgIDc3Mjc0LCA3NzI3OSwgNzcyODQsIDc3Mjg5LCA3NzI5NCwgNzcyOTksIDc3MzA0LCA3NzMwOSwgNzczMTQsIDc3MzE5LCAKLSAgICA3NzMyNCwgNzczMzAsIDc3MzM1LCA3NzM0MCwgNzczNDYsIDc3MzUxLCA3NzM1NiwgNzczNjIsIDc3MzY4LCA3NzM3NCwgCi0gICAgNzczODAsIDc3Mzg2LCA3NzM5MiwgNzczOTgsIDc3NDA0LCA3NzQxMCwgNzc0MTUsIDc3NDIwLCA3NzQyNiwgNzc0MzEsIAotICAgIDc3NDM2LCA3NzQ0MiwgNzc0NDcsIDc3NDUyLCA3NzQ1NywgNzc0NjIsIDc3NDY3LCA3NzQ3MiwgNzc0NzcsIDc3NDgyLCAKLSAgICA3NzQ4NywgNzc0OTIsIDc3NDk3LCA3NzUwMiwgNzc1MDgsIDc3NTEzLCA3NzUxOCwgNzc1MjMsIDc3NTI5LCA3NzUzNCwgCi0gICAgNzc1MzksIDc3NTQ0LCA3NzU0OSwgNzc1NTUsIDc3NTYwLCA3NzU2NSwgNzc1NzAsIDc3NTc1LCA3NzU4MCwgNzc1ODUsIAotICAgIDc3NTkwLCA3NzU5NSwgNzc2MDAsIDc3NjA1LCA3NzYxMCwgNzc2MTUsIDc3NjIwLCA3NzYyNSwgNzc2MzAsIDc3NjM1LCAKLSAgICA3NzY0MCwgNzc2NDUsIDc3NjUwLCA3NzY1NiwgNzc2NjEsIDc3NjY2LCA3NzY3MSwgNzc2NzYsIDc3NjgxLCA3NzY4NiwgCi0gICAgNzc2OTEsIDE4OTAsIDE2MywgNzc2OTYsIDc3NzAwLCA3NzcwNCwgNzc3MDksIDc3NzE3LCA3NzcyMSwgNzc3MjgsIDc3NzM2LCAKLSAgICA3Nzc0MCwgNzc3NTMsIDc3NzYxLCA3Nzc2NiwgNzc3NzEsIDI4Mzk0LCA3Nzc3NSwgNzc3ODAsIDc3Nzg0LCA3Nzc4OSwgCi0gICAgNzc3OTMsIDc3ODAxLCA3NzgwNSwgMjI1ODcsIDc3ODEwLCA3NzgxNCwgNjYxNjIsIDc3ODE4LCA3NzgyMSwgNzc4MjksIAotICAgIDc3ODM3LCA3Nzg0NSwgNzc4NTAsIDc3ODU1LCA3Nzg2MiwgNzc4NjksIDc3ODc1LCA3Nzg4MSwgNzc4ODYsIDc3ODkxLCAKLSAgICA3Nzg5OSwgNzA1NTEsIDc3OTA2LCA2NTk0OCwgNzc5MTEsIDc3OTE2LCA3NzkyMCwgNzc5MjcsIDY1OTc1LCAxMjc0MywgCi0gICAgNzc5MzMsIDc3OTM4LCA3Nzk0MywgNzc5NDcsIDc3OTUwLCA3Nzk1NiwgNzc5NjAsIDc3OTcwLCA3Nzk3OSwgNzc5ODMsIAotICAgIDc3OTg2LCA3Nzk5MCwgNzc5OTcsIDc4MDEwLCA3ODAxNiwgNzgwMjQsIDc4MDMzLCA3ODA0NCwgNzgwNTUsIDc4MDY2LCAKLSAgICA3ODA3NywgNzgwODYsIDc4MDkyLCA3ODEwMSwgNzgxMDksIDc4MTE5LCA3ODEzMiwgNzgxNDAsIDc4MTQ3LCA3ODE1OCwgCi0gICAgNzgxNjQsIDc4MTY5LCA3ODE3NCwgNzgxODAsIDc4MTg2LCA3ODE5NiwgNzgyMDMsIDc4MjEzLCA3ODIyMiwgNzY0MjMsIAotICAgIDc4MjMwLCA3ODIzNiwgNzgyNDQsIDc4MjUwLCA3ODI1NywgNzgyNjUsIDc4MjcwLCA3ODI3MywgNzgyNzcsIDc4MjgxLCAKLSAgICA3ODI4NCwgNzgyOTAsIDc4Mjk2LCA3ODMwNCwgNzgzMTYsIDc4MzI4LCA3ODMzNSwgNzgzNDAsIDc4MzQ0LCA3ODM1NSwgCi0gICAgNzgzNjMsIDc4MzcwLCA3ODM4MiwgNzgzOTAsIDc4Mzk4LCA3ODQwNSwgNzg0MTEsIDc4NDE2LCA3ODQyNiwgNzg0MzUsIAotICAgIDc4NDQwLCA3ODQ1MCwgNzg0NTksIDQ1NTQ5LCA3ODQ2NiwgNzg0NzAsIDc4NDc1LCA3ODQ4MywgNzg0OTAsIDc4NDk2LCAKLSAgICA3ODUwMCwgNzg1MTAsIDc4NTIxLCA3ODUyOSwgNzg1MzYsIDc4NTQ4LCA3ODU2MCwgNzg1NjksIDc1MzcwLCA3ODU3NiwgCi0gICAgNzg1ODYsIDc4NTk4LCA3ODYwOSwgNzg2MjMsIDc4NjMxLCA3ODY0MSwgNzg2NDgsIDc4NjU2LCA3ODY2OSwgNzg2ODEsIAotICAgIDc4NjkwLCA3ODY5OCwgNzg3MDgsIDc4NzE5LCA3ODczMSwgNzg3NDAsIDc4NzUwLCA3ODc2MCwgNzg3NjksIDc4Nzc2LCAKLSAgICA3ODc4NSwgNzg4MDAsIDc4ODA4LCA3ODgxOCwgNzg4MjcsIDc4ODM1LCA3ODg0OCwgNjMwMjYsIDc4ODYzLCA3ODg3MywgCi0gICAgNzg4ODIsIDc4ODk0LCA3ODkwNCwgNzg5MTYsIDc4OTI3LCA3ODkzOCwgNzg5NDksIDc4OTU5LCA3ODk3MCwgNzg5NzgsIAotICAgIDc4OTg0LCA3ODk5NCwgNzkwMDIsIDc5MDA4LCAzMTI5MSwgNzkwMTMsIDc5MDE5LCA3OTAyOCwgNzkwNDAsIDc5MDQ1LCAKLSAgICA3OTA1MiwgMTA0NDgsIDE5MTM0LCA3OTA1OCwgNzkwNjcsIDc5MDcyLCA3OTA3NiwgNzkwODMsIDc5MDg5LCA3OTA5NCwgCi0gICAgNzkwOTksIDc5MTA3LCA3OTExNSwgMTMxMTksIDc5MTE5LCA3OTEyMiwgNzkxMjQsIDc5MTMxLCA3OTEzNywgNzkxNDgsIAotICAgIDc5MTUzLCA3OTE1NywgNzkxNjQsIDc5MTcwLCA3OTE3NSwgNzkxODMsIDcxMTIwLCA3MTEzMCwgNzkxODksIDc5MTk2LCAKLSAgICA3OTIwNiwgMTE1NDMsIDc5MjEzLCA3OTIxOCwgMzE1MDYsIDc5MjI3LCA3OTIzMiwgNzkyMzksIDc5MjQ5LCA3OTI1NywgCi0gICAgNzkyNjUsIDc5Mjc0LCA3OTI4MCwgNzkyODYsIDc5MjkzLCA3OTMwMCwgNzkzMDUsIDc5MzA5LCA3OTMxNywgNjU5OTIsIAotICAgIDc5MzIyLCA3OTMzMSwgNzkzMzksIDc5MzQ2LCA3OTM1MSwgNzkzNTUsIDc5MzY0LCA3OTM3MCwgNzkzNzMsIDc5Mzc3LCAKLSAgICA3OTM4NiwgNzkzOTYsIDc3NzQ4LCA3OTQwNSwgNzk0MDksIDc5NDE3LCA3OTQyMSwgNzk0MjcsIDc5NDM4LCA3OTQ0OCwgCi0gICAgMTkxNDMsIDc5NDU5LCA3OTQ2OCwgNzk0NzYsIDc5NDg0LCA3OTQ5MSwgNjYwMTEsIDkxNDcsIDc5NDk5LCA3OTUwMywgCi0gICAgNzk1MTIsIDc5NTE5LCA3OTUyMiwgMjk0NzAsIDc5NTI1LCA3OTUyOSwgNzk1MzQsIDc5NTUxLCA3OTU2MywgMTE1MDEsIAotICAgIDc5NTc1LCA3OTU4MCwgNzk1ODUsIDc5NTkwLCAyMjY2OSwgNzk1OTQsIDc5NTk5LCA3OTYwNCwgNzk2MTAsIDc5NjE1LCAKLSAgICA2MTIyLCA3OTYyMCwgMjI2NzMsIDc5NjI1LCA3OTYzMCwgNzk2MzYsIDc5NjQzLCA3OTY0OCwgNzk2NTMsIDc5NjU5LCAKLSAgICA3OTY2NSwgNzk2NzEsIDc5Njc2LCA3OTY4MiwgNzk2ODYsIDc5NzAwLCA3OTcwOCwgNzk3MTYsIDc5NzIyLCA3OTcyNywgCi0gICAgNzk3MzQsIDc5NzQ0LCA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzYsIDc5NzgxLCA3OTc4NywgNzk3OTIsIAotICAgIDc5ODAxLCA2NDcxMywgNzk4MDYsIDc5ODA5LCA3OTgyNywgNzk4NDYsIDc5ODU5LCA3OTg3MywgNzk4ODksIDc5ODk2LCAKLSAgICA3OTkwMywgNzk5MTIsIDc5OTE5LCA3OTkyNSwgNzk5MzIsIDc5OTM3LCA3OTk0MywgNzk5NDksIDc5OTU3LCA3OTk2MywgCi0gICAgNzk5NjgsIDc5OTczLCA3OTk4OSwgMTE1MTQsIDgwMDAzLCA4MDAxMCwgODAwMTgsIDgwMDI0LCA4MDAyOCwgODAwMzEsIAotICAgIDgwMDM2LCA4MDA0MSwgODAwNDgsIDgwMDUzLCA4MDA2MiwgODAwNjgsIDgwMDczLCA4MDA3OSwgODAwODUsIDgwMDk0LCAKLSAgICA4MDEwMywgODAxMDgsIDgwMTEyLCA4MDEyMCwgODAxMjksIDEyNzcyLCA4MDEzOCwgODAxNDQsIDgwMTUyLCA4MDE1OCwgCi0gICAgODAxNjQsIDgwMTcwLCA4MDE3NSwgODAxODIsIDgwMTg4LCAxMjc4MywgODAxOTMsIDgwMTk2LCA4MDIwMSwgMzUyMjMsIAotICAgIDgwMjExLCA4MDIyMCwgODAyMjUsIDgwMjMxLCA4MDIzNiwgODAyNDQsIDgwMjUxLCA4MDI2MiwgODAyNzIsIDgwMjc3LCAKLSAgICA4MDI4NSwgNzA0NzQsIDgwMjkwLCA4MDI5NiwgODAzMDEsIDgwMzA4LCA4MDMxNywgODAzMjUsIDgwMzI5LCA4MDMzNSwgCi0gICAgODAzNDEsIDgwMzQ4LCA4MDM1NCwgODAzNTgsIDE4NTE4LCAzMTE0LCA4MDM2MywgODAzNjcsIDgwMzcxLCA4MDM3NywgCi0gICAgODAzODYsIDgwMzkyLCA4MDM5OSwgODA0MDMsIDgwNDI0LCA4MDQ0NiwgODA0NjIsIDgwNDc5LCA4MDQ5OCwgODA1MDcsIAotICAgIDgwNTE3LCA4MDUyNSwgODA1MzIsIDgwNTM5LCA4MDU0NSwgMjkzNDIsIDgwNTU5LCA4MDU2MywgODA1NjksIDgwNTc3LCAKLSAgICA4MDU4OSwgODA1OTUsIDgwNjAzLCA4MDYxMCwgODA2MTUsIDgwNjIwLCA4MDYyNCwgODA2MzIsIDgwNjM5LCA4MDY0MywgCi0gICAgODA2NDksIDgwNjU1LCA4MDY2MCwgMzczMCwgNDY3MjEsIDgwNjY2LCA4MDY3MCwgODA2NzQsIDgwNjc4LCA4MDY4MywgCi0gICAgODA2ODgsIDgwNjkzLCA4MDY5OSwgODA3MDUsIDgwNzExLCA4MDcxOCwgODA3MjQsIDgwNzMxLCA4MDczNywgODA3NDMsIAotICAgIDgwNzQ4LCA4MDc1NCwgODA3NTksIDgwNzYzLCA4MDc2OCwgODA3NzIsIDgwNzc3LCA0NjczNiwgODA3ODEsIDgwNzg2LCAKLSAgICA4MDc5NCwgODA3OTgsIDgwODAzLCA4MDgxMCwgODA4MTksIDgwODI1LCA4MDgzNCwgODA4MzgsIDgwODQ1LCA4MDg0OSwgCi0gICAgODA4NTIsIDgwODU5LCA4MDg2NSwgODA4NzQsIDgwODg0LCA4MDg4OSwgODA4OTMsIDgwOTAxLCA4MDkxMCwgODA5MTQsIAotICAgIDgwOTIyLCA4MDkyOCwgODA5MzMsIDgwOTM4LCA4MDk0NCwgODA5NTAsIDgwOTU1LCA4MDk1OSwgODA5NjUsIDgwOTcwLCAKLSAgICA4MDk3NCwgODA5NzgsIDgwOTgxLCA4MDk4NiwgODA5OTQsIDgxMDA0LCA4MTAxMCwgODEwMTUsIDgxMDI1LCA0NDAzMSwgCi0gICAgODEwMzMsIDgxMDQ1LCA4MTA0OSwgODEwNTUsIDgxMDY3LCA4MTA3OCwgODEwODUsIDgxMDkxLCA4MTA5OCwgODExMDUsIAotICAgIDgxMTE3LCA4MTEyNCwgODExMzAsIDIyNzQ3LCA4MTEzNCwgODExNDIsIDgxMTQ4LCA4MTE1NSwgODExNjEsIDgxMTY3LCAKLSAgICA4MTE3MywgODExNzgsIDgxMTgzLCA4MTE4OCwgODExOTcsIDgxMjA1LCA4MTIxNiwgNzM1MCwgODEyMjEsIDE3OTY3LCAKLSAgICA4MTIyNywgODEyMzEsIDgxMjM1LCA4MTIzOSwgODEyNDcsIDgxMjU2LCA4MTI2MCwgODEyNjcsIDgxMjc2LCA4MTI4NCwgCi0gICAgODEyOTcsIDgxMzAzLCA4MDc3MywgMzIzOTAsIDgxMzA4LCA4MTMxMCwgODEzMTUsIDgxMzIwLCA4MTMyNSwgODEzMzAsIAotICAgIDgxMzM1LCA4MTM0MCwgODEzNDUsIDgxMzUwLCA4MTM1NSwgODEzNjAsIDgxMzY1LCA4MTM3MCwgODEzNzUsIDgxMzgwLCAKLSAgICA4MTM4NiwgODEzOTEsIDgxMzk2LCA4MTQwMSwgODE0MDYsIDgxNDExLCA4MTQxNiwgODE0MjEsIDgxNDI2LCA4MTQzMiwgCi0gICAgODE0MzgsIDgxNDQ0LCA4MTQ0OSwgODE0NTQsIDgxNDY2LCA4MTQ3MSwgMTg5NiwgNjMsIDgxNDc2LCA4MTQ4MSwgMzUyMjksIAotICAgIDgxNDg1LCAzNTIzNCwgMzUyMzksIDM1MjQ1LCAzNTI1MCwgODE0ODksIDM1MjU1LCAyMzc4NSwgODE1MTEsIDgxNTE1LCAKLSAgICA4MTUxOSwgODE1MjQsIDgxNTI4LCAzNTI1OSwgODE1MzIsIDgxNTQwLCA4MTU0NywgMzUyNjQsIDgxNTUzLCA4MTU1NiwgCi0gICAgODE1NjEsIDgxNTY1LCA4MTU3NCwgMTAyNjYsIDgxNTgyLCAzNTI2OSwgMjM2NDEsIDgxNTg1LCA4MTU4OSwgODE1OTcsIAotICAgIDE0MTIsIDgxNjAyLCAzNTI4MCwgODE2MDUsIDgxNjEwLCAyNzc1MCwgMjc3NjAsIDM4MTgyLCA4MTYxNSwgODE2MjAsIAotICAgIDgxNjI1LCA4MTYzMCwgODE2MzYsIDgxNjQxLCA4MTY1MCwgODE2NTUsIDgxNjY0LCA4MTY3MiwgODE2NzksIDgxNjg1LCAKLSAgICA4MTY5MCwgODE2OTUsIDgxNzAwLCA4MTcxMCwgODE3MTksIDgxNzI3LCA4MTczMiwgODE3NDAsIDgxNzQ0LCA4MTc1MiwgCi0gICAgODE3NTYsIDgxNzYzLCA4MTc3MSwgMzUwODgsIDQxMTkyLCA4MTc3OCwgODE3ODQsIDgxNzg5LCA4MTc5NCwgMTMxNTQsIAotICAgIDMwNTI5LCA4MTc5OSwgODE4MDQsIDgxODExLCA4MTgxNywgODE4MjIsIDgxODMwLCA4MTg0MCwgODE4NTAsIDgxODU2LCAKLSAgICA4MTg2MSwgODE4NjcsIDE5MTY1LCA4MTg3NCwgMzkwNTIsIDgxODg3LCA4MTg5MiwgODE4OTgsIDMzMzgxLCA4MTkxMSwgCi0gICAgODE5MTcsIDgxOTIxLCA4MTkzMCwgODE5MzksIDgxOTQ2LCA4MTk1MiwgODE5NjAsIDgxOTY5LCA4MTk3NiwgODE5ODIsIAotICAgIDgxOTg1LCA4MTk4OSwgODE5OTMsIDI3ODkxLCA4MTk5NywgODIwMDQsIDgyMDEwLCA4MjAxOCwgODIwMjMsIDgyMDI3LCAKLSAgICAyNTkxMSwgODIwMzMsIDgyMDM2LCA4MjA0NCwgODIwNTEsIDgyMDU5LCA4MjA3MiwgODIwODYsIDgyMDkzLCA4MjA5OSwgCi0gICAgODIxMDYsIDgyMTEyLCAzNTI5NCwgODIxMTYsIDgyMTIzLCA4MjEzMSwgODIxMzksIDgyMTQ1LCAzNTI5OSwgODIxNTMsIAotICAgIDgyMTU5LCA4MjE2NCwgODIxNzQsIDgyMTgwLCA4MjE4OSwgMzMxODMsIDM3NjE0LCA4MjE5NywgODIyMDIsIDgyMjA3LCAKLSAgICA4MjIxMSwgODIyMTYsIDgyMjIwLCA4MjIyOCwgODIyMzMsIDE2Mjk2LCA0NDA0NCwgODIyMzcsIDgyMjQyLCAzNTMwNCwgCi0gICAgNjc1NDcsIDgyMjQ2LCA4MjI1MSwgODIyNTUsIDgyMjYyLCA4MjI3MSwgODIyNzUsIDgyMjgzLCA4MjI4OSwgODIyOTQsIAotICAgIDgyMzAwLCA4MjMwNSwgODIzMTIsIDgyMzE4LCA4MjMyMywgODIzMjgsIDgyMzM5LCA4MjM0OCwgODIzNjAsIDgyMzc1LCAKLSAgICAzNTU3MSwgODIzODEsIDE4MDg2LCAzNTMwOCwgODIzODUsIDgyMzkyLCA4MjM5OCwgMjYwMjcsIDgyNDAyLCA4MjQwOSwgCi0gICAgODI0MTgsIDgyNDI1LCA4MjQzNCwgODI0NDAsIDgyNDQ1LCA4MjQ1MywgODI0NTksIDM1MzE4LCA4MjQ2NCwgODI0NzMsIAotICAgIDgxMDczLCA4MjQ4MiwgODI0ODksIDgyNDk1LCA4MjUwMSwgODI1MTAsIDgyNTIwLCA4MjUyOCwgODI1MzUsIDgyNTM5LCAKLSAgICAzNTMyMywgODI1NDIsIDM1MzI5LCAzNTMzNSwgODI1NDcsIDgyNTU1LCA4MjU2MywgODI1NzMsIDgyNTgyLCA4MjU5MCwgCi0gICAgODI1OTcsIDgyNjA3LCAzNTM0MCwgODI2MTEsIDgyNjEzLCA4MjYxNywgODI2MjIsIDgyNjI2LCA4MjYzMCwgODI2MzYsIAotICAgIDgyNjQxLCA4MjY0NSwgODI2NTYsIDgyNjYxLCA4MjY2NiwgMzExOSwgODI2NzAsIDgyNjc3LCA4MjY4MSwgODI2OTAsIAotICAgIDgyNjk4LCA4MjcwNSwgODI3MTAsIDgyNzE1LCA2NzU5OCwgODI3MTksIDgyNzIyLCA4MjcyOCwgODI3MzYsIDgyNzQyLCAKLSAgICA4Mjc0NiwgODI3NTEsIDgyNzU4LCA4Mjc2MywgODI3NjgsIDgyNzcyLCA4Mjc3OCwgODI3ODMsIDM3NjQ1LCA4Mjc4NywgCi0gICAgODI3OTAsIDgyNzk1LCA4Mjc5OSwgODI4MDQsIDgyODExLCA4MjgxNiwgODI4MjAsIDQyNTgwLCA4MjgyOCwgMjc3NjksIAotICAgIDI3Nzc4LCA4MjgzNCwgODI4NDAsIDgyODQ2LCA4Mjg1MSwgODI4NTUsIDgyODU4LCA4Mjg2OCwgODI4NzcsIDgyODgyLCAKLSAgICA4Mjg4OCwgODI4OTUsIDgyOTAxLCA4MjkwNSwgODI5MTMsIDgyOTE4LCAzNzY1MSwgNzc5NTIsIDgyOTIyLCA4MjkzMCwgCi0gICAgODI5MzYsIDgyOTQzLCA4Mjk0OCwgODI5NTIsIDgyOTU3LCA2MzI0MiwgODI5NjMsIDgyOTY5LCAzNzY1NywgODI5NzQsIAotICAgIDgyOTc5LCA4Mjk4MywgODI5ODgsIDgyOTkzLCA4Mjk5OCwgODMwMDIsIDgzMDA3LCA4MzAxMiwgODMwMTgsIDgzMDIzLCAKLSAgICA4MzAyOCwgODMwMzQsIDgzMDQwLCA4MzA0NSwgODMwNDksIDgzMDU0LCA4MzA1OSwgODMwNjQsIDgzMDY4LCAyNjAyNiwgCi0gICAgODMwNzMsIDgzMDc4LCA4MzA4NCwgODMwOTAsIDgzMDk2LCA4MzEwMSwgODMxMDUsIDgzMTEwLCA4MzExNSwgODMxMjAsIAotICAgIDgzMTI0LCA4MzEyOSwgODMxMzQsIDgzMTM5LCA4MzE0NCwgNDY5OTEsIDgzMTQ4LCAzNTM0OCwgODMxNTYsIDgzMTYwLCAKLSAgICA4MzE2OCwgODMxNzYsIDgzMTg3LCA4MzE5MiwgODMxOTYsIDI0MjExLCA3NTQ3MywgODMyMDEsIDgzMjA3LCA4MzIxMiwgCi0gICAgODMyMjIsIDgzMjI5LCA4MzIzNCwgODMyNDIsIDgzMjUxLCA4MzI1NiwgODMyNjAsIDgzMjY1LCA4MzI3MywgODMyODEsIAotICAgIDgzMjg4LCA3MDczNiwgODMyOTQsIDgzMzAyLCA4MzMwOSwgODMzMjAsIDgzMzI2LCA4MzMzMiwgMzUzNTgsIDgzMzM1LCAKLSAgICA4MzM0MiwgODMzNTAsIDgzMzU1LCA0NDI0NywgODMzNTksIDgzMzY0LCA4MzM3MSwgODMzNzYsIDk0ODQsIDgzMzgwLCAKLSAgICA4MzM4OCwgODMzOTUsIDgzNDAyLCA4MzQxMSwgODM0MTgsIDgzNDI0LCA4MzQzOCwgNjE5NCwgODM0NDYsIDgzNDUyLCAKLSAgICA4MzQ1NiwgODM0NTksIDgzNDY3LCA4MzQ3NCwgODM0NzksIDgzNDkyLCA4MzQ5OSwgODM1MDUsIDgzNTA5LCA4MzUxNCwgCi0gICAgODM1MjEsIDgzNTI2LCA2NTg1MSwgODM1MzEsIDgzNTM0LCA4MzU0MywgODM1NTAsIDgzNTU2LCA4MzU2MCwgODM1NjMsIAotICAgIDgzNTcxLCA4MzU4MCwgODM1OTAsIDgzNjAwLCA4MzYwOSwgODM2MjAsIDgzNjI4LCA4MzYzOSwgODM2NDQsIDgzNjQ4LCAKLSAgICA4MzY1MywgODM2NTcsIDM4MzEzLCA4MzY2NSwgMjMwNDIsIDM4MzIyLCA4MzY3MCwgODM2NzUsIDgzNjgwLCA4MzY4NSwgCi0gICAgODM2OTAsIDgzNjk1LCA4MzcwMCwgODM3MDQsIDgzNzA5LCA4MzcxNCwgODM3MTksIDgzNzI0LCA4MzcyOSwgODM3MzQsIAotICAgIDgzNzM4LCA4Mzc0MywgODM3NDgsIDgzNzUyLCA4Mzc1NiwgODM3NjAsIDgzNzY0LCA4Mzc2OSwgODM3NzQsIDgzNzc4LCAKLSAgICA4Mzc4MywgODM3ODcsIDgzNzkxLCA4Mzc5NiwgODM4MDEsIDgzODA2LCA4MzgxMSwgODM4MTUsIDgzODIwLCA4MzgyNSwgCi0gICAgODM4MjksIDgzODM0LCA4MzgzOSwgODM4NDQsIDgzODQ5LCA4Mzg1NCwgODM4NTksIDgzODY0LCA4Mzg2OSwgODM4NzQsIAotICAgIDgzODc5LCA4Mzg4NCwgODM4ODksIDgzODk0LCA4Mzg5OSwgODM5MDQsIDgzOTA5LCA4MzkxNCwgODM5MTksIDgzOTI0LCAKLSAgICA4MzkyOSwgODM5MzMsIDgzOTM4LCA4Mzk0MywgODM5NDgsIDgzOTUzLCA4Mzk1OCwgODM5NjMsIDgzOTY4LCA4Mzk3MywgCi0gICAgODM5NzgsIDgzOTgzLCA4Mzk4OCwgODM5OTIsIDgzOTk3LCA4NDAwMSwgODQwMDYsIDg0MDExLCA4NDAxNiwgODQwMjEsIAotICAgIDg0MDI2LCA4NDAzMSwgODQwMzYsIDg0MDQxLCA4NDA0NiwgODQwNTAsIDg0MDU0LCA4NDA1OSwgODQwNjQsIDg0MDY4LCAKLSAgICA4NDA3MywgODQwNzgsIDg0MDgyLCA4NDA4NywgODQwOTIsIDg0MDk3LCA4NDEwMiwgODQxMDYsIDg0MTExLCA4NDExNiwgCi0gICAgODQxMjAsIDg0MTI1LCA4NDEyOSwgODQxMzMsIDg0MTM3LCA4NDE0MSwgODQxNDYsIDg0MTUwLCA4NDE1NCwgODQxNTgsIAotICAgIDg0MTYyLCA4NDE2NiwgODQxNzAsIDg0MTc0LCA4NDE3OCwgODQxODIsIDg0MTg3LCA4NDE5MiwgODQxOTcsIDg0MjAyLCAKLSAgICA4NDIwNywgODQyMTIsIDg0MjE3LCA4NDIyMiwgODQyMjcsIDg0MjMyLCA4NDIzNiwgODQyNDAsIDg0MjQ0LCA4NDI0OCwgCi0gICAgODQyNTIsIDg0MjU2LCA4NDI2MSwgODQyNjUsIDg0MjcwLCA4NDI3NCwgODQyNzksIDg0Mjg0LCA4NDI4OCwgODQyOTIsIAotICAgIDg0Mjk3LCA4NDMwMSwgODQzMDUsIDg0MzA5LCA4NDMxMywgODQzMTcsIDg0MzIxLCA4NDMyNSwgODQzMjksIDg0MzMzLCAKLSAgICA4NDMzNywgODQzNDEsIDg0MzQ1LCA4NDM0OSwgODQzNTMsIDg0MzU4LCA4NDM2MywgODQzNjcsIDg0MzcxLCA4NDM3NSwgCi0gICAgODQzNzksIDg0MzgzLCA4NDM4NywgODQzOTIsIDg0Mzk2LCA4NDQwMCwgODQ0MDQsIDg0NDA4LCA4NDQxMiwgODQ0MTYsIAotICAgIDg0NDIxLCA4NDQyNSwgODQ0MzAsIDg0NDM0LCA4NDQzOCwgODQ0NDIsIDg0NDQ2LCA4NDQ1MCwgODQ0NTQsIDg0NDU4LCAKLSAgICA4NDQ2MiwgODQ0NjYsIDg0NDcwLCA4NDQ3NCwgODQ0NzksIDg0NDgzLCA4NDQ4NywgODQ0OTEsIDg0NDk1LCA4NDQ5OSwgCi0gICAgODQ1MDMsIDg0NTA3LCA4NDUxMSwgODQ1MTUsIDg0NTE5LCA4NDUyMywgODQ1MjgsIDg0NTMyLCA4NDUzNiwgODQ1NDEsIAotICAgIDg0NTQ2LCA4NDU1MCwgODQ1NTQsIDg0NTU4LCA4NDU2MiwgODQ1NjYsIDg0NTcwLCA4NDU3NCwgODQ1NzgsIDg0NTgzLCAKLSAgICA4NDU4NywgODQ1OTIsIDg0NTk2LCA4NDYwMSwgODQ2MDUsIDg0NjEwLCA4NDYxNCwgODQ2MjAsIDg0NjI1LCA4NDYyOSwgCi0gICAgODQ2MzQsIDg0NjM4LCA4NDY0MywgODQ2NDcsIDg0NjUyLCA4NDY1NiwgODQ2NjEsIDE1MTksIDg0NjY1LCAyODczLCAxNzc0LCAKLSAgICAxNjkyLCAyNzcwNSwgODQ2NjksIDI4ODIsIDg0NjczLCAxMzgxLCA4NDY3OCwgMTMyMywgODQ2ODIsIDg0Njg2LCAyODk5LCAKLSAgICA4NDY5MCwgODQ2OTcsIDg0NzA0LCA4NDcxOCwgMjkwMywgNzQ1MiwgODQ3MjcsIDg0NzM1LCA4NDc0MiwgODQ3NTMsIAotICAgIDg0NzYyLCA4NDc2OSwgODQ3ODEsIDg0Nzk0LCA4NDgwNywgODQ4MTgsIDg0ODIzLCA4NDgzMCwgODQ4NDIsIDg0ODQ2LCAKLSAgICAyOTA3LCAxMjg1MCwgODQ4NTYsIDg0ODYxLCA4NDg3MCwgODQ4ODAsIDg0ODg1LCAyOTExLCA4NDg5MywgODQ4OTcsIAotICAgIDg0OTAyLCA4NDkwOSwgODQ5MTUsIDg0OTIzLCA4NDkzNSwgMTMyOCwgMTQyMDEsIDg0OTQ1LCA4NDk0OSwgODQ5NTUsIAotICAgIDg0OTY5LCA4NDk4MSwgODQ5OTMsIDg1MDAzLCA4NTAxMiwgODUwMjEsIDg1MDMwLCA4NTAzOCwgODUwNDksIDg1MDU3LCAKLSAgICA0MjkyLCA4NTA2NywgODUwNzgsIDg1MDg3LCA4NTA5MywgODUxMDgsIDg1MTE1LCA4NTEyMSwgODUxMjYsIDM4NDQ3LCAKLSAgICA4NTEzMSwgMjkzNSwgMTQyMDUsIDg1MTM1LCA4NTE0MiwgOTQwOSwgODUxNTEsIDI5NDAsIDM0Nzk2LCA4NTE1NywgNjU1NzMsIAotICAgIDg1MTY0LCA4NTE3MCwgODUxODEsIDg1MTg3LCA4NTE5NCwgODUyMDAsIDg1MjA4LCA4NTIxNSwgODUyMjEsIDg1MjMyLCAKLSAgICA4NTI0MiwgODUyNTEsIDg1MjYyLCA4NTI3MSwgODUyNzgsIDg1Mjg0LCA4NTI5NCwgODUzMDIsIDg1MzA4LCA4NTMyMywgCi0gICAgODUzMjksIDg1MzM0LCA4NTM0MSwgODUzNDQsIDg1MzUwLCA4NTM1NywgODUzNjMsIDg1MzcxLCA4NTM4MCwgODUzODgsIAotICAgIDg1Mzk0LCA4NTQwMywgNDYyNjEsIDg1NDE3LCA4NTQyMiwgODU0MjgsIDE2MDcyLCA4NTQzMywgODU0NDYsIDg1NDU4LCAKLSAgICA4NTQ2NywgODU0NzUsIDg1NDgyLCA4NTQ4NiwgODU0OTAsIDg1NDkzLCA4NTUwMCwgODU1MDcsIDg1NTE1LCA4NTUyMywgCi0gICAgODU1MzIsIDg1NTQwLCAxNTk4MywgODU1NDgsIDg1NTUzLCA4NTU1NywgODU1NjksIDg1NTc2LCA4NTU4NSwgODQxLCAKLSAgICA4NTU5NSwgODU2MDQsIDg1NjE1LCAyOTU2LCA4NTYxOSwgODU2MjMsIDg1NjI5LCA4NTY0MiwgODU2NTQsIDg1NjY0LCAKLSAgICA4NTY3MywgODU2ODUsIDI4NDQ2LCA4NTY5NiwgODU3MDQsIDg1NzEzLCA4NTcyNCwgODU3MzUsIDg1NzQ1LCA4NTc1NSwgCi0gICAgODU3NjQsIDg1NzcyLCAxMjM2NCwgODU3NzksIDg1NzgzLCA4NTc4NiwgODU3OTEsIDg1Nzk2LCA4NTgwMCwgODU4MDYsIAotICAgIDEzMzMsIDg1ODEzLCA4NTgxNywgMTI5MzIsIDg1ODIxLCA4NTgzMiwgODU4NDEsIDg1ODQ5LCA4NTg1OCwgODU4NjYsIAotICAgIDg1ODgyLCA4NTg5MywgODU5MDIsIDg1OTEwLCA4NTkyMiwgODU5MzMsIDg1OTQ5LCA4NTk1OSwgODU5ODAsIDg1OTk0LCAKLSAgICA4NjAwNywgODYwMTUsIDg2MDIyLCA3NDk4LCA4NjAzNSwgODYwNDAsIDg2MDQ2LCA2MjAzLCA4NjA1MiwgODYwNTUsIAotICAgIDg2MDYyLCA4NjA3MiwgODU1NCwgODYwNzksIDg2MDg0LCA4NjA4OSwgODYwOTQsIDg2MTAyLCA4NjExMSwgODYxMTksIAotICAgIDg2MTI0LCA4NjEzMSwgMTA0OTYsIDEwNTA1LCA4NjEzNywgODYxNDgsIDg2MTUzLCA4NjE1OSwgMjk3MiwgMjk3NywgCi0gICAgODYxNjUsIDExODU3LCA4NjE3MSwgODYxNzgsIDg2MTg1LCA4NjE5OCwgMjI4MSwgODcsIDg2MjAzLCA4NjIwOCwgODYyMTYsIAotICAgIDg2MjI2LCA4NjIzNSwgODYyNDEsIDg2MjUwLCA4NjI1OCwgODYyNjgsIDg2MjcyLCA4NjI3NiwgODYyODEsIDg2Mjg1LCAKLSAgICA4NjI5NywgMzAwMCwgODYzMDUsIDg2MzEzLCA4NjMxOCwgODYzMjksIDg2MzQwLCA4NjM1MiwgODYzNjMsIDg2MzczLCAKLSAgICA4NjM4MiwgMjMwODMsIDg2Mzg3LCA4NjM5MywgODYzOTgsIDg2NDA4LCA4NjQxOCwgODY0MjMsIDg2NDI5LCA4NjQzMywgCi0gICAgODY0MzgsIDg2NDQ3LCAyMzA5NSwgODY0NTEsIDQzODQsIDI0LCA4NjQ1NiwgODY0NjUsIDg2NDcyLCA4NjQ3OSwgODY0ODUsIAotICAgIDg2NDkxLCAxMDQ5LCA4NjQ5NiwgODY1MDEsIDY2MTI4LCA4NjUwNiwgODY1MTEsIDg2NTE3LCA4NjUyMywgODY1MzEsIAotICAgIDg2NTM2LCA4NjU0NCwgODY1NTEsIDg2NTU3LCA4NjU2MiwgNDI0NjQsIDQ2MTU1LCA4NjU2OCwgMzAwNCwgMzIsIDg2NTc4LCAKLSAgICA4NjU5MSwgODY1OTYsIDg2NjA0LCA4NjYwOSwgODY2MTUsIDMwMjYsIDMwNDk3LCA4NjYyMCwgODY2MjgsIDg2NjM1LCAKLSAgICA4NjY0MCwgODY2NDksIDYzNDkyLCA0MDE4LCA2NzIxOCwgODY2NTcsIDg2NjYxLCAxNzE5LCAxODMzLCA4NjY2NiwgODY2NzEsIAotICAgIDg2Njc4LCAxODM3LCAyODAsIDg2Njg1LCA4NjY5MSwgODY2OTYsIDMwNDgsIDg2NzAwLCA4NjcwNSwgODY3MTIsIDE4NDEsIAotICAgIDg2NzE3LCA4NjcyMywgODY3MjgsIDg2NzQwLCA2NDMwLCA4Njc1MCwgODY3NTcsIDE4NDgsIDg2NzYzLCA4Njc2OCwgCi0gICAgODY3NzUsIDg2NzgyLCA4Njc5NywgODY4MDQsIDg2ODE1LCA4NjgyMCwgODY4MjgsIDI2NTcsIDg2ODMyLCA4Njg0NCwgCi0gICAgODY4NDksIDg2ODUzLCA4Njg1OSwgMzAzMTMsIDIyODYsIDg2ODYzLCA4Njg3NCwgODY4NzgsIDg2ODgyLCA4Njg4OCwgCi0gICAgODY4OTIsIDg2OTAxLCA4NjkwNSwgODY5MTYsIDg2OTIwLCAyMzMyLCAzNDYxMywgODY5MjQsIDg2OTM0LCAzMTM5LCAKLSAgICA4Njk0MiwgOTkwOSwgODY5NTEsIDg2OTU2LCA4Njk2MCwgODY5NjksIDg2OTc2LCA4Njk4MiwgMzEwOSwgMTYxMzYsIAotICAgIDg2OTg2LCA4Njk5OSwgODcwMTcsIDg3MDIyLCA4NzAzMCwgODcwMzgsIDg3MDQ4LCAxMDc2OCwgMTQzMTgsIDg3MDYwLCAKLSAgICA4NzA3MywgODcwODAsIDg3MDk0LCA4NzEwMSwgODcxMTcsIDg3MTI0LCA4NzEzMCwgMjMxMjcsIDEzNTU2LCA4NzEzNywgCi0gICAgODcxNDQsIDg3MTU0LCA4NzE2MywgNDY5OTAsIDg3MTc1LCA0NzEyNSwgODcxODMsIDg3MTg2LCA4NzE5MiwgODcxOTgsIAotICAgIDg3MjA0LCA4NzIxMCwgODcyMTYsIDg3MjIzLCA4NzIzMCwgODcyMzYsIDg3MjQyLCA4NzI0OCwgODcyNTQsIDg3MjYwLCAKLSAgICA4NzI2NiwgODcyNzIsIDg3Mjc4LCA4NzI4NCwgODcyOTAsIDg3Mjk2LCA4NzMwMiwgODczMDgsIDg3MzE0LCA4NzMyMCwgCi0gICAgODczMjYsIDg3MzMyLCA4NzMzOCwgODczNDQsIDg3MzUwLCA4NzM1NiwgODczNjIsIDg3MzY4LCA4NzM3NCwgODczODAsIAotICAgIDg3Mzg2LCA4NzM5MiwgODczOTgsIDg3NDA0LCA4NzQxMCwgODc0MTYsIDg3NDIyLCA4NzQyOCwgODc0MzQsIDg3NDQwLCAKLSAgICA4NzQ0NiwgODc0NTIsIDg3NDU4LCA4NzQ2NCwgODc0NzAsIDg3NDc2LCA4NzQ4MiwgODc0ODgsIDg3NDk0LCA4NzUwMCwgCi0gICAgODc1MDYsIDg3NTEyLCA4NzUxOCwgODc1MjQsIDg3NTMwLCA4NzUzNiwgODc1NDMsIDg3NTQ5LCA4NzU1NiwgODc1NjMsIAotICAgIDg3NTY5LCA4NzU3NiwgODc1ODMsIDg3NTg5LCA4NzU5NSwgODc2MDEsIDg3NjA3LCA4NzYxMywgODc2MTksIDg3NjI1LCAKLSAgICA4NzYzMSwgODc2MzcsIDg3NjQzLCA4NzY0OSwgODc2NTUsIDg3NjYxLCA4NzY2NywgODc2NzMsIDMxMjMsIDk4ODIsIAotICAgIDg3Njc5LCA4NzY4NSwgODc2OTMsIDg3Njk3LCA4NDkwNSwgMzEyNywgODc3MDEsIDIyODYwLCAxMzE4OSwgMzk2OCwgCi0gICAgODc3MDUsIDMxMzMsIDg3NzA5LCA4NzcxOSwgODc3MjUsIDg3NzMxLCA4NzczNywgODc3NDMsIDg3NzQ5LCA4Nzc1NSwgCi0gICAgODc3NjEsIDg3NzY3LCA4Nzc3MywgODc3NzksIDg3Nzg1LCA4Nzc5MSwgODc3OTcsIDg3ODAzLCA4NzgwOSwgODc4MTUsIAotICAgIDg3ODIxLCA4NzgyNywgODc4MzMsIDg3ODM5LCA4Nzg0NSwgODc4NTEsIDg3ODU3LCA4Nzg2MywgODc4NjksIDg3ODc2LCAKLSAgICA4Nzg4MywgODc4ODksIDg3ODk1LCA4NzkwMSwgODc5MDcsIDg3OTEzLCA4NzkxOSwgMTMzOCwgODc5MjUsIDg3OTMwLCAKLSAgICA4NzkzNSwgODc5NDAsIDg3OTQ1LCA4Nzk1MCwgODc5NTUsIDg3OTYwLCA4Nzk2NSwgODc5NjksIDg3OTczLCA4Nzk3NywgCi0gICAgODc5ODEsIDg3OTg1LCA4Nzk4OSwgODc5OTMsIDg3OTk3LCA4ODAwMSwgODgwMDcsIDg4MDEzLCA4ODAxOSwgODgwMjUsIAotICAgIDg4MDI5LCA4ODAzMywgODgwMzcsIDg4MDQxLCA4ODA0NSwgODgwNDksIDg4MDUzLCA4ODA1NywgODgwNjEsIDg4MDY2LCAKLSAgICA4ODA3MSwgODgwNzYsIDg4MDgxLCA4ODA4NiwgODgwOTEsIDg4MDk2LCA4ODEwMSwgODgxMDYsIDg4MTExLCA4ODExNiwgCi0gICAgODgxMjEsIDg4MTI2LCA4ODEzMSwgODgxMzYsIDg4MTQxLCA4ODE0NiwgODgxNTEsIDg4MTU2LCA4ODE2MSwgODgxNjYsIAotICAgIDg4MTcxLCA4ODE3NiwgODgxODEsIDg4MTg2LCA4ODE5MSwgODgxOTYsIDg4MjAxLCA4ODIwNiwgODgyMTEsIDg4MjE2LCAKLSAgICA4ODIyMSwgODgyMjYsIDg4MjMxLCA4ODIzNiwgODgyNDEsIDg4MjQ2LCA4ODI1MSwgODgyNTYsIDg4MjYxLCA4ODI2NiwgCi0gICAgODgyNzEsIDg4Mjc2LCA4ODI4MSwgODgyODYsIDg4MjkxLCA4ODI5NiwgODgzMDEsIDg4MzA2LCA4ODMxMSwgODgzMTYsIAotICAgIDg4MzIxLCA4ODMyNiwgODgzMzEsIDg4MzM2LCA4ODM0MSwgODgzNDYsIDg4MzUxLCA4ODM1NiwgODgzNjEsIDg4MzY2LCAKLSAgICA4ODM3MSwgODgzNzYsIDg4MzgxLCA4ODM4NiwgODgzOTEsIDg4Mzk2LCA4ODQwMSwgODg0MDYsIDg4NDExLCA4ODQxNiwgCi0gICAgODg0MjEsIDg4NDI2LCA4ODQzMSwgODg0MzYsIDg4NDQxLCA4ODQ0NiwgODg0NTEsIDg4NDU2LCA4ODQ2MSwgODg0NjYsIAotICAgIDg4NDcxLCA4ODQ3NiwgODg0ODEsIDg4NDg2LCA4ODQ5MSwgODg0OTYsIDg4NTAxLCA4ODUwNiwgODg1MTEsIDg4NTE2LCAKLSAgICA4ODUyMSwgODg1MjYsIDg4NTMxLCA4ODUzNiwgODg1NDEsIDg4NTQ2LCA4ODU1MSwgODg1NTYsIDg4NTYxLCA4ODU2NiwgCi0gICAgODg1NzEsIDg4NTc2LCA4ODU4MSwgODg1ODYsIDg4NTkxLCA4ODU5NiwgODg2MDEsIDg4NjA2LCA4ODYxMSwgODg2MTYsIAotICAgIDg4NjIxLCA4ODYyNiwgODg2MzEsIDg4NjM2LCA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCAKLSAgICA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NiwgODg2OTEsIDg4Njk2LCA4ODcwMSwgODg3MDYsIDg4NzExLCA4ODcxNiwgCi0gICAgODg3MjEsIDg4NzI2LCA4ODczMSwgODg3MzYsIDg4NzQxLCA4ODc0NiwgODg3NTEsIDg4NzU2LCA4ODc2MSwgODg3NjYsIAotICAgIDg4NzcxLCA4ODc3NiwgODg3ODEsIDg4Nzg2LCA4ODc5MSwgODg3OTYsIDg4ODAxLCA4ODgwNiwgODg4MTEsIDg4ODE2LCAKLSAgICA4ODgyMSwgODg4MjYsIDg4ODMxLCA4ODgzNiwgODg4NDEsIDg4ODQ2LCA4ODg1MSwgODg4NTYsIDg4ODYxLCA4ODg2NiwgCi0gICAgODg4NzEsIDg4ODc2LCA4ODg4MSwgODg4ODYsIDg4ODkxLCA4ODg5NiwgODg5MDEsIDg4OTA2LCA4ODkxMSwgODg5MTYsIAotICAgIDg4OTIxLCA4ODkyNiwgODg5MzEsIDg4OTM2LCA4ODk0MSwgODg5NDYsIDg4OTUxLCA4ODk1NywgODg5NjIsIDg4OTY3LCAKLSAgICA4ODk3MiwgODg5NzcsIDg4OTgyLCA4ODk4NywgODg5OTIsIDg4OTk4LCA4OTAwMywgODkwMDgsIDg5MDEzLCA4OTAxOCwgCi0gICAgODkwMjMsIDg5MDI4LCA4OTAzMywgODkwMzgsIDg5MDQzLCA4OTA0OCwgODkwNTMsIDg5MDU4LCA4OTA2MywgODkwNjgsIAotICAgIDg5MDczLCA4OTA3OCwgODkwODMsIDg5MDg4LCA4OTA5MywgODkwOTgsIDg5MTAzLCA4OTEwOCwgODkxMTMsIDg5MTE4LCAKLSAgICA4OTEyMywgODkxMjgsIDg5MTMzLCA4OTEzOCwgODkxNDMsIDg5MTQ4LCA4OTE1MywgODkxNTgsIDg5MTY3LCA4OTE3MiwgCi0gICAgODkxODEsIDg5MTg2LCA4OTE5NSwgODkyMDAsIDg5MjA5LCA4OTIxNCwgODkyMjMsIDg5MjI4LCA4OTIzNywgODkyNDIsIAotICAgIDg5MjUxLCA4OTI1NiwgODkyNjUsIDg5MjcwLCA4OTI3NSwgODkyODQsIDg5Mjg4LCA4OTI5NywgODkzMDIsIDg5MzExLCAKLSAgICA4OTMxNiwgODkzMjUsIDg5MzMwLCA4OTMzOSwgODkzNDQsIDg5MzUzLCA4OTM1OCwgODkzNjcsIDg5MzcyLCA4OTM4MSwgCi0gICAgODkzODYsIDg5Mzk1LCA4OTQwMCwgODk0MDksIDg5NDE0LCA4OTQyMywgODk0MjgsIDg5NDMzLCA4OTQzOCwgODk0NDMsIAotICAgIDg5NDQ4LCA4OTQ1MywgODk0NTgsIDg5NDYyLCA4OTQ2NywgODk0NzIsIDg5NDc3LCA4OTQ4MiwgODk0ODcsIDg5NDkyLCAKLSAgICA4OTQ5OCwgODk1MDMsIDg5NTA4LCA4OTUxMywgODk1MTksIDg5NTIzLCA4OTUyOCwgODk1MzQsIDg5NTM5LCA4OTU0NCwgCi0gICAgODk1NDksIDg5NTU0LCA4OTU1OSwgODk1NjQsIDg5NTY5LCA4OTU3NCwgODk1NzksIDg5NTg0LCA4OTU5MCwgODk1OTUsIAotICAgIDg5NjAwLCA4OTYwNSwgODk2MTEsIDg5NjE2LCA4OTYyMSwgODk2MjYsIDg5NjMxLCA4OTYzNywgODk2NDIsIDg5NjQ3LCAKLSAgICA4OTY1MiwgODk2NTcsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc4LCA4OTY4MywgODk2ODgsIDg5NjkzLCA4OTY5OCwgCi0gICAgODk3MDMsIDg5NzA4LCA4OTcxMywgODk3MTgsIDg5NzIzLCA4OTcyOCwgODk3MzMsIDg5NzM4LCA4OTc0MywgODk3NDgsIAotICAgIDg5NzUzLCA4OTc1OCwgODk3NjMsIDg5NzY4LCA4OTc3MywgODk3NzgsIDg5NzgzLCA4OTc4OSwgODk3OTUsIDg5ODAxLCAKLSAgICA4OTgwNiwgODk4MTEsIDg5ODE2LCA4OTgyMSwgODk4MjcsIDg5ODMzLCA4OTgzOSwgODk4NDQsIDg5ODQ5LCA4OTg1NCwgCi0gICAgODk4NjAsIDg5ODY1LCA4OTg3MCwgODk4NzUsIDg5ODgwLCA4OTg4NSwgODk4OTAsIDg5ODk1LCA4OTkwMCwgODk5MDUsIAotICAgIDg5OTEwLCA4OTkxNSwgODk5MjAsIDg5OTI1LCA4OTkzMCwgODk5MzUsIDg5OTQwLCA4OTk0NiwgODk5NTIsIDg5OTU4LCAKLSAgICA4OTk2MywgODk5NjgsIDg5OTczLCA4OTk3OCwgODk5ODQsIDg5OTkwLCA4OTk5NiwgOTAwMDEsIDkwMDA2LCA5MDAxMSwgCi0gICAgOTAwMTYsIDkwMDIxLCA5MDAyNiwgOTAwMzEsIDkwMDM2LCA5MDA0MSwgMTc1MzksIDkwMDQ2LCA5MDA1MiwgOTAwNTcsIAotICAgIDkwMDYyLCA5MDA2NywgOTAwNzIsIDkwMDc3LCA5MDA4MywgOTAwODgsIDkwMDkzLCA5MDA5OCwgOTAxMDMsIDkwMTA4LCAKLSAgICA5MDExNCwgOTAxMTksIDkwMTI0LCA5MDEyOSwgOTAxMzQsIDkwMTM5LCA5MDE0NCwgOTAxNDksIDkwMTU0LCA5MDE1OSwgCi0gICAgOTAxNjQsIDkwMTY5LCA5MDE3NCwgOTAxNzksIDkwMTg0LCA5MDE4OSwgOTAxOTQsIDkwMTk5LCA5MDIwNCwgOTAyMDksIAotICAgIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjMwLCA5MDIzNSwgOTAyNDAsIDkwMjQ1LCA5MDI1MCwgOTAyNTUsIDkwMjYwLCAKLSAgICA5MDI2NSwgOTAyNzAsIDkwMjc1LCA5MDI4MCwgOTAyODUsIDkwMjkwLCA5MDI5NSwgOTAzMDAsIDkwMzA1LCA5MDMxMCwgCi0gICAgOTAzMTUsIDkwMzIwLCA5MDMyNSwgOTAzMzAsIDkwMzM1LCA5MDM0MCwgOTAzNDUsIDkwMzUwLCA5MDM1NSwgOTAzNjAsIAotICAgIDkwMzY1LCA5MDM3MCwgOTAzNzUsIDkwMzgwLCA5MDM4NSwgOTAzOTAsIDkwMzk1LCA5MDQwMCwgOTA0MDUsIDkwNDEwLCAKLSAgICA5MDQxNSwgOTA0MjAsIDkwNDI1LCA5MDQzMCwgOTA0MzYsIDkwNDQxLCA5MDQ0NiwgOTA0NTEsIDkwNDU2LCA5MDQ2MSwgCi0gICAgOTA0NjYsIDkwNDcxLCA5MDQ3NiwgOTA0ODEsIDkwNDg2LCA5MDQ5MSwgOTA0OTcsIDkwNTAyLCA5MDUwOCwgOTA1MTMsIAotICAgIDkwNTE4LCA5MDUyMywgOTA1MjgsIDkwNTMzLCA5MDUzOCwgOTA1NDQsIDkwNTQ5LCA5MDU1NCwgOTA1NjAsIDkwNTY1LCAKLSAgICA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTEsIDkwNTk3LCA5MDYwMiwgOTA2MDcsIDEzMjExLCA5MDYxMiwgCi0gICAgOTA2MTcsIDkwNjIyLCA5MDYyNywgOTA2MzIsIDkwNjM3LCA5MDY0MiwgOTA2NDcsIDkwNjUyLCA5MDY1NywgOTA2NjIsIAotICAgIDkwNjY3LCA5MDY3MiwgOTA2NzcsIDkwNjgyLCA5MDY4NywgOTA2OTIsIDkwNjk3LCA5MDcwMiwgOTA3MDcsIDkwNzEyLCAKLSAgICA5MDcxNywgOTA3MjIsIDkwNzI3LCA5MDczMiwgOTA3MzcsIDkwNzQyLCA5MDc0NywgOTA3NTIsIDkwNzU3LCA5MDc2MiwgCi0gICAgOTA3NjcsIDkwNzcyLCA5MDc3NywgOTA3ODIsIDkwNzg3LCA5MDc5MiwgOTA3OTcsIDkwODAyLCA5MDgwNywgOTA4MTIsIAotICAgIDkwODE3LCA5MDgyMiwgOTA4MjcsIDkwODMyLCA5MDgzNywgOTA4NDIsIDkwODQ3LCA5MDg1MiwgOTA4NTcsIDkwODYyLCAKLSAgICA5MDg2NywgOTA4NzIsIDkwODc3LCA5MDg4MiwgOTA4ODcsIDkwODkyLCA5MDg5NywgOTA5MDIsIDkwOTA3LCA5MDkxMiwgCi0gICAgOTA5MTcsIDkwOTIyLCA5MDkyNywgOTA5MzIsIDkwOTM4LCA5MDk0MywgOTA5NDgsIDkwOTUzLCA5MDk1OCwgOTA5NjQsIAotICAgIDkwOTY5LCA5MDk3NCwgOTA5NzksIDkwOTg0LCA5MDk4OSwgOTA5OTQsIDkxMDAwLCA5MTAwNSwgOTEwMTAsIDkxMDE1LCAKLSAgICA5MTAyMCwgOTEwMjUsIDkxMDMxLCA5MTAzNiwgOTEwNDEsIDkxMDQ2LCA5MTA1MSwgOTEwNTYsIDkxMDYyLCA5MTA2NywgCi0gICAgOTEwNzIsIDkxMDc3LCA5MTA4MiwgOTEwODcsIDkxMDkzLCA5MTA5OSwgOTExMDQsIDkxMTA5LCA5MTExNCwgOTExMjAsIAotICAgIDkxMTI2LCA5MTEzMiwgOTExMzcsIDkxMTQyLCA5MTE0OCwgOTExNTQsIDkxMTU5LCA5MTE2NSwgOTExNzEsIDkxMTc3LCAKLSAgICA5MTE4MiwgOTExODcsIDkxMTkzLCA5MTE5OCwgOTEyMDQsIDkxMjA5LCA5MTIxNSwgOTEyMjQsIDkxMjI5LCA5MTIzNCwgCi0gICAgOTEyNDAsIDkxMjQ1LCA5MTI1MSwgOTEyNTYsIDkxMjYxLCA5MTI2NiwgOTEyNzEsIDkxMjc2LCA5MTI4MSwgOTEyODYsIAotICAgIDkxMjkxLCA5MTI5NiwgOTEzMDEsIDkxMzA2LCA5MTMxMSwgOTEzMTYsIDkxMzIxLCA5MTMyNiwgOTEzMzEsIDkxMzM2LCAKLSAgICA5MTM0MSwgOTEzNDYsIDkxMzUxLCA5MTM1NiwgOTEzNjEsIDkxMzY2LCA5MTM3MSwgOTEzNzYsIDkxMzgxLCA5MTM4NiwgCi0gICAgOTEzOTEsIDkxMzk2LCA5MTQwMSwgOTE0MDYsIDkxNDEyLCA5MTQxOCwgOTE0MjQsIDkxNDI5LCA5MTQzNCwgOTE0MzksIAotICAgIDkxNDQ0LCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NCwgOTE0NjksIDkxNDc0LCA5MTQ3OSwgOTE0ODQsIDkxNDg5LCAKLSAgICA5MTQ5NCwgOTE0OTksIDkxNTA0LCA5MTUwOSwgOTE1MTQsIDkxNTE5LCA5MTUyNCwgOTE1MzAsIDkxNTM2LCA5MTU0MSwgCi0gICAgOTE1NDcsIDkxNTUyLCA5MTU1NywgOTE1NjMsIDkxNTY4LCA5MTU3NCwgOTE1NzksIDkxNTg1LCA5MTU5MCwgOTE1OTYsIAotICAgIDkxNjAxLCA5MTYwNywgOTE2MTIsIDkxNjE3LCA5MTYyMiwgOTE2MjcsIDkxNjMyLCA5MTYzNywgOTE2NDIsIDg3NzIwLCAKLSAgICA4NzcyNiwgODc3MzIsIDg3NzM4LCA5MTY0OCwgODc3NDQsIDg3NzUwLCA5MTY1NCwgODc3NTYsIDg3NzYyLCA4Nzc2OCwgCi0gICAgODc3NzQsIDg3NzgwLCA4Nzc4NiwgODc3OTIsIDg3Nzk4LCA4NzgwNCwgOTE2NjAsIDg3ODEwLCA4NzgxNiwgODc4MjIsIAotICAgIDkxNjY2LCA4NzgyOCwgODc4MzQsIDg3ODQwLCA4Nzg0NiwgOTE2NzIsIDg3ODUyLCA4Nzg1OCwgODc4NjQsIDg3ODg0LCAKLSAgICA5MTY3OCwgOTE2ODQsIDg3ODkwLCA5MTY5MCwgODc4OTYsIDg3OTAyLCA4NzkwOCwgODc5MTQsIDg3OTIwLCAzMTUwLCAKLSAgICAzMTU1LCA5MTY5NiwgOTE3MDEsIDkxNzA0LCA5MTcxMCwgOTE3MTYsIDkxNzIzLCA5MTcyOCwgOTE3MzMsIDIzMzcsIAorICAgIDAsIDAsIDYsIDEwLCAxNCwgMTksIDI3LCAzNCwgNDQsIDQ5LCA1NSwgNjQsIDY2LCA2OSwgODEsIDg5LCAxMDIsIDEwOCwgCisgICAgMTEzLCAxMTksIDEyNCwgMTMyLCAxNDEsIDE0NiwgMTU3LCAxNjIsIDE2NywgMTcwLCAxNzQsIDE4MywgMTg5LCAxOTUsIAorICAgIDIwMCwgMjA3LCAyMTUsIDIyMywgMjI0LCAyMjcsIDIzNSwgMjQ0LCAxNzEsIDI1MCwgMjU2LCAyNjMsIDI3MywgMjgwLCAKKyAgICAyODUsIDI4OCwgMjkzLCAyOTksIDMwMywgMzA2LCAzMTEsIDMxNywgMzIzLCAzMjgsIDMzMywgMzM5LCAzNDUsIDM1NCwgCisgICAgMzYxLCAzNjgsIDM3NywgMzc5LCAzODQsIDM4OSwgMzk3LCAzOTksIDQwNywgNDA4LCA0MTYsIDQxOCwgMzM3LCA0MjUsIAorICAgIDQyOCwgNDMwLCA0MzYsIDQzOCwgNDQ1LCA0NTAsIDQ1NywgNDYyLCA0NjcsIDQ3NCwgNDgyLCA0ODYsIDQ5MiwgNDk3LCAKKyAgICA1MDcsIDUxMiwgNTE5LCA1MjIsIDUzMCwgNTM5LCA1NDMsIDU1MywgNTYwLCA1NjcsIDU3NCwgNTgzLCA1OTAsIDU5MywgCisgICAgNTk5LCA2MDMsIDYwNywgNjE1LCA2MTksIDYzMiwgNjM2LCA2MzcsIDY0NCwgNjUzLCA2NjIsIDY2NSwgNjcxLCA2NzUsIAorICAgIDY3NywgNjg3LCA2OTIsIDcwMCwgNzA0LCA3MDcsIDcxNSwgNzE5LCA3MjQsIDcyOSwgNzM1LCA3NDAsIDc0NCwgNzQ3LCAKKyAgICA3NTUsIDc2NCwgNzczLCA3ODEsIDc4OSwgNzkzLCA3OTksIDgwNywgODE0LCA4MTcsIDgyNywgODMxLCA4NDIsIDg1MSwgCisgICAgODU4LCA4NjEsIDg2OCwgODcwLCA4NzYsIDg4MCwgODg1LCA4ODksIDg5NSwgOTA0LCA5MDksIDkxMywgNTg4LCA5MTYsIAorICAgIDkyMSwgOTMwLCA5MzgsIDk0MywgOTQ2LCA2NzQsIDk1MSwgOTU2LCA5NTksIDk2NSwgOTY5LCA5NzMsIDk3OSwgOTg2LCAKKyAgICA5OTUsIDk5OCwgMTAwNSwgMTAxNCwgMTAyNywgMTAzMSwgMTAzOSwgMTA0MiwgMTA0OCwgMTA1NCwgMTA2MywgMTA3MCwgCisgICAgMTA3MywgMTA4MSwgMTA4OCwgMTA5NSwgMTA5OSwgMTEwMiwgMTExMCwgMTExNCwgMTEyMywgMTEyOSwgMTEzMywgMTEzNiwgCisgICAgMTE0MCwgMjYsIDExNDcsIDExNTYsIDExNjEsIDExNjYsIDExNzIsIDExNzcsIDExODIsIDExODcsIDExOTEsIDExOTYsIAorICAgIDEyMDIsIDEyMDcsIDEyMTIsIDEyMTYsIDEyMjIsIDEyMjcsIDEyMzIsIDEyMzcsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIAorICAgIDEyNjIsIDEyNjgsIDEyNzQsIDEyNzksIDEyODMsIDEyODgsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIAorICAgIDEzMjIsIDExNTcsIDExNjIsIDExNjcsIDExNzMsIDExNzgsIDEzMjYsIDExODgsIDEzMzIsIDEzMzcsIDEzNDIsIDEzNDksIAorICAgIDEzNTMsIDEzNTYsIDEzNjUsIDExOTIsIDEzNjksIDExOTcsIDEyMDMsIDEyMDgsIDEzNzMsIDEzNzgsIDEzODMsIDEzODcsIAorICAgIDEzOTEsIDEzOTcsIDE0MDEsIDEyMTMsIDE0MDQsIDE0MDYsIDEyMjMsIDE0MTEsIDE0MTUsIDEyMjgsIDE0MjEsIDEyMzMsIAorICAgIDE0MjUsIDE0MjksIDEyMzgsIDE0MzMsIDE0MzgsIDE0NDIsIDE0NDUsIDE0NDksIDEyNDIsIDEyNDcsIDE0NTQsIDE0NjAsIAorICAgIDEyNTIsIDE0NzIsIDE0NzgsIDE0ODQsIDE0OTAsIDEyNTcsIDEyNjksIDEyNzUsIDE0OTQsIDE0OTgsIDE1MDIsIDE1MDUsIAorICAgIDEyODAsIDE1MDksIDE1MTEsIDE1MTYsIDE1MjEsIDE1MjcsIDE1MzIsIDE1MzcsIDE1NDEsIDE1NDYsIDE1NTEsIDE1NTYsIAorICAgIDE1NjEsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODMsIDE1ODksIDE1OTQsIDE1OTgsIDE2MDMsIDE2MDgsIDE2MTMsIDE2MTgsIAorICAgIDE2MjMsIDE2MjcsIDE2MzUsIDE2NDAsIDE2NDQsIDE2NDksIDE2NTQsIDE2NTksIDE2NjQsIDE2NjgsIDE2NzEsIDE2NzgsIAorICAgIDE2ODMsIDE2ODgsIDE2OTMsIDE2OTgsIDE3MDQsIDE3MDksIDE3MTMsIDEyODQsIDE3MTYsIDE3MjEsIDE3MjYsIDEyODksIAorICAgIDE3MzAsIDE3MzQsIDE3NDEsIDEyOTQsIDE3NDgsIDEyOTksIDE3NTIsIDE3NTQsIDE3NTksIDE3NjUsIDEzMDMsIDE3NzAsIAorICAgIDE3NzksIDEzMDgsIDE3ODQsIDE3OTAsIDE3OTUsIDEzMTMsIDE4MDAsIDE4MDUsIDE4MDksIDE4MTIsIDE4MTcsIDE4MjEsIAorICAgIDE4MjUsIDE4MjksIDE4MzIsIDE4MzYsIDEzMTgsIDE4NDEsIDEzMjMsIDE4NDUsIDE4NDcsIDE4NTMsIDE4NTksIDE4NjUsIAorICAgIDE4NzEsIDE4NzcsIDE4ODMsIDE4ODksIDE4OTUsIDE5MDAsIDE5MDYsIDE5MTIsIDE5MTgsIDE5MjQsIDE5MzAsIDE5MzYsIAorICAgIDE5NDIsIDE5NDgsIDE5NTQsIDE5NTksIDE5NjQsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIAorICAgIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjYsIDIwMzIsIDIwMzgsIDIwNDMsIDIwNDksIDIwNTUsIDIwNjEsIDIwNjcsIAorICAgIDIwNzIsIDIwNzcsIDIwNzksIDIwODAsIDIwODQsIDIwODgsIDIwOTMsIDIwOTcsIDIxMDEsIDIxMDUsIDIxMTAsIDIxMTQsIAorICAgIDIxMTcsIDIxMjIsIDIxMjYsIDIxMzEsIDIxMzUsIDIxMzksIDIxNDQsIDIxNDgsIDIxNTEsIDIxNTUsIDIxNjEsIDIxNzUsIAorICAgIDIxNzksIDIxODMsIDIxODcsIDIxOTAsIDIxOTUsIDIxOTksIDIyMDMsIDIyMDYsIDIyMTAsIDIyMTUsIDIyMjAsIDIyMjUsIAorICAgIDIyMzAsIDIyMzQsIDIyMzgsIDIyNDIsIDIyNDYsIDIyNTEsIDIyNTUsIDIyNjAsIDIyNjQsIDIyNjksIDIyNzUsIDIyODIsIAorICAgIDIyODgsIDIyOTMsIDIyOTgsIDIzMDMsIDIzMDksIDIzMTQsIDIzMjAsIDIzMjUsIDIzMjgsIDIzMzAsIDExNzQsIDIzMzQsIAorICAgIDIzNDEsIDIzNDksIDIzNTksIDIzNjgsIDIzODIsIDIzODYsIDIzOTAsIDIzOTUsIDI0MDgsIDI0MTYsIDI0MjAsIDI0MjUsIAorICAgIDI0MjksIDI0MzIsIDI0MzYsIDI0NDAsIDI0NDUsIDI0NTAsIDI0NTUsIDI0NTksIDI0NjIsIDI0NjYsIDI0NzMsIDI0ODAsIAorICAgIDI0ODYsIDI0OTEsIDI0OTYsIDI1MDIsIDI1MDgsIDI1MTMsIDI1MTYsIDE3NTYsIDI1MTgsIDI1MjQsIDI1MjgsIDI1MzMsIAorICAgIDI1MzcsIDI1NDEsIDE2NzQsIDE3NjcsIDI1NDYsIDI1NTAsIDI1NTMsIDI1NTgsIDI1NjMsIDI1NjgsIDI1NzMsIDI1NzcsIAorICAgIDI1ODQsIDI1ODksIDI1OTIsIDI1OTYsIDI2MDMsIDI2MDksIDI2MTMsIDI2MTcsIDI2MjEsIDI2MjYsIDI2MzMsIDI2MzgsIAorICAgIDI2NDMsIDI2NTAsIDI2NTYsIDI2NjIsIDI2NjgsIDI2ODIsIDI2OTksIDI3MTQsIDI3MjksIDI3MzgsIDI3NDMsIDI3NDcsIAorICAgIDI3NTIsIDI3NTcsIDI3NjEsIDI3NzMsIDI3ODAsIDI3ODYsIDIyNzgsIDI3OTIsIDI3OTksIDI4MDUsIDI4MDksIDI4MTIsIAorICAgIDI4MTksIDI4MjUsIDI4MzAsIDI4MzQsIDI4MzksIDI4NDMsIDI4NDcsIDIxMDIsIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjUsIAorICAgIDI4NzAsIDI4NzgsIDI4ODIsIDI4ODcsIDI4OTEsIDI4OTUsIDI4OTksIDI5MDQsIDI5MDksIDI5MTQsIDI5MTgsIDI5MjMsIAorICAgIDI5MjgsIDI5MzIsIDI5MzcsIDI5NDEsIDI5NDQsIDI5NDgsIDI5NTIsIDI5NjAsIDI5NjUsIDI5NjksIDI5NzMsIDI5NzksIAorICAgIDI5ODgsIDI5OTIsIDI5OTYsIDMwMDIsIDMwMDcsIDMwMTQsIDMwMTgsIDMwMjgsIDMwMzIsIDMwMzYsIDMwNDEsIDMwNDUsIAorICAgIDMwNTAsIDMwNTYsIDMwNjEsIDMwNjUsIDMwNjksIDMwNzMsIDI0NzYsIDMwODEsIDMwODYsIDMwOTIsIDMwOTcsIDMxMDEsIAorICAgIDMxMDYsIDMxMTEsIDMxMTUsIDMxMjEsIDMxMjYsIDIxMDYsIDMxMzIsIDMxMzgsIDMxNDMsIDMxNDgsIDMxNTMsIDMxNTgsIAorICAgIDMxNjMsIDMxNjgsIDMxNzMsIDMxNzgsIDMxODMsIDMxODksIDMxOTQsIDExODksIDEwMSwgMzIwMCwgMzIwNCwgMzIwOCwgCisgICAgMzIxMiwgMzIxNywgMzIyMSwgMzIyNSwgMzIzMSwgMzIzNiwgMzI0MCwgMzI0NCwgMzI0OSwgMzI1NCwgMzI1OCwgMzI2MywgCisgICAgMzI2NywgMzI3MCwgMzI3NCwgMzI3OSwgMzI4MywgMzI4OCwgMzI5MiwgMzI5NSwgMzI5OSwgMzMwMywgMzMwOCwgMzMxMiwgCisgICAgMzMxNSwgMzMyOCwgMzMzMiwgMzMzNiwgMzM0MCwgMzM0NSwgMzM0OSwgMzM1MywgMzM1NiwgMzM2MCwgMzM2NCwgMzM2OSwgCisgICAgMzM3MywgMzM3OCwgMzM4MywgMzM4OCwgMzM5MiwgMzM5NywgMzQwMCwgMzQwMywgMzQwOCwgMzQxNCwgMzQxOCwgMzQyMiwgCisgICAgMzQyNSwgMzQzMCwgMzQzNCwgMzQzOSwgMzQ0MywgMzQ0NywgMzQ1MCwgMzQ1NiwgMzQ2MSwgMzQ2NiwgMzQ3MiwgMzQ3NywgCisgICAgMzQ4MiwgMzQ4OCwgMzQ5NCwgMzQ5OSwgMzUwNCwgMzUwOSwgMzUxNCwgMTA5NywgNTkyLCAzNTE3LCAzNTIwLCAzNTI1LCAKKyAgICAzNTI5LCAzNTMzLCAzNTM3LCAzNTQxLCAzNTQ0LCAzNTQ4LCAzNTUzLCAzNTU4LCAzNTYyLCAzNTY3LCAzNTcxLCAzNTc2LCAKKyAgICAzNTgwLCAzNTg0LCAzNTg4LCAzNTk0LCAzNjAwLCAzNjAzLCAzNjA2LCAxNTAsIDM2MTIsIDM2MTcsIDM2MjYsIDM2MzQsIAorICAgIDM2NDMsIDM2NTMsIDM2NjAsIDM2NjYsIDM2NzMsIDM2NzgsIDM2ODIsIDM2ODYsIDM2OTQsIDM3MDEsIDM3MDYsIDM3MTMsIAorICAgIDM3MTgsIDM3MjIsIDM3MzIsIDM3MzYsIDM3NDAsIDM3NDUsIDM3NTAsIDM3NjAsIDIxMTgsIDM3NjUsIDM3NjksIDM3NzIsIAorICAgIDM3NzgsIDM3ODMsIDM3ODksIDM3OTUsIDM4MDAsIDM4MDcsIDM4MTEsIDM4MTUsIDYxNiwgNzA1LCAxMzUwLCAzODE5LCAKKyAgICAzODI2LCAzODMzLCAzODM5LCAzODQ0LCAzODUxLCAzODU4LCAzODYzLCAzODY5LCAzODc1LCAzODgwLCAzODg0LCAzODkwLCAKKyAgICAzODk3LCAzOTAyLCAzOTA2LCAzOTEwLCAyMTI3LCAzOTE2LCAzOTI0LCAzOTMwLCAzOTM4LCA3NTksIDM5NDQsIDM5NTIsIAorICAgIDM5NjMsIDM5NjcsIDM5NzcsIDIxMzIsIDM5ODMsIDM5ODgsIDQwMDMsIDQwMDksIDQwMTYsIDQwMjYsIDQwMzIsIDQwMzcsIAorICAgIDQwNDMsIDQwNDksIDQwNTIsIDQwNTUsIDQwNTksIDQwNjQsIDQwNzEsIDQwODAsIDQwODUsIDQwODksIDQwOTMsIDQwOTcsIAorICAgIDQxMDEsIDQxMDYsIDQxMTIsIDQxMjMsIDQxMjcsIDMyNzUsIDQxMzIsIDQxNDQsIDQxNTAsIDQxNTgsIDQxNjIsIDQxNjcsIAorICAgIDE1NDMsIDQxNzQsIDQxNzcsIDQxODAsIDQxODQsIDQxODcsIDQxOTMsIDQxOTcsIDQyMTEsIDQyMTUsIDQyMTgsIDQyMjIsIAorICAgIDQyMjgsIDQyMzQsIDQyMzksIDQyNDMsIDQyNDcsIDQyNTMsIDQyNjQsIDQyNzAsIDQyNzUsIDQyODEsIDQyODUsIDQyOTMsIAorICAgIDQzMDUsIDQzMTUsIDQzMjEsIDQzMjYsIDQzMzUsIDQzNDMsIDQzNTAsIDQzNTYsIDQzNjIsIDQzNjYsIDQzNzIsIDQzODEsIAorICAgIDQzOTAsIDQzOTQsIDQ0MDMsIDQ0MDgsIDQ0MTIsIDQ0MTcsIDQ0MjEsIDQ0MjksIDQ0MzUsIDQ0MzksIDQ0NDQsIDQ0NDgsIAorICAgIDQ0NTQsIDIxNDAsIDEzNjYsIDQ0NjAsIDQ0NjUsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODYsIDQ0OTEsIDQ0OTYsIDQ1MDEsIAorICAgIDQ1MDcsIDQ1MTIsIDQ1MTgsIDQ1MjMsIDQ1MjgsIDQ1MzMsIDQ1MzksIDQ1NDQsIDQ1NDksIDQ1NTQsIDQ1NTksIDQ1NjUsIAorICAgIDQ1NzAsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTEsIDQ1OTYsIDQ2MDEsIDQ2MDYsIDQ2MTIsIDQ2MTcsIDQ2MjIsIDI5NywgCisgICAgMzMyLCA0NjI3LCA0NjMzLCA0NjM3LCA0NjQxLCA0NjQ2LCA0NjUwLCA0NjU0LCA0NjU3LCA0NjYxLCA0NjY1LCA0NjY5LCAKKyAgICA0NjczLCA0Njc3LCA0NjgyLCA0Njg2LCA0NjkwLCA0Njk2LCA0NDU3LCA0NzAxLCA0NzA1LCA0NzA4LCA0NzEzLCA0NzE4LCAKKyAgICA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQzLCA0NzQ4LCA0NzUzLCA0NzU4LCA0NzYyLCA0NzY3LCA0NzcyLCA0Nzc3LCAKKyAgICA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk3LCA0ODAyLCA0ODA3LCA0ODEyLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCA0ODM2LCAKKyAgICA0ODQxLCA0ODQ2LCA0ODUxLCA0ODU2LCA0ODYxLCA0ODY2LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCA0ODk1LCAKKyAgICA0OTAwLCA0OTA1LCA0OTEwLCA0OTE1LCA0OTIwLCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCA0OTU0LCAKKyAgICA0OTU5LCA0OTY0LCA0OTY5LCA0OTc0LCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCA1MDEzLCAKKyAgICA1MDE4LCA1MDIzLCA1MDI4LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY3LCA1MDcyLCAKKyAgICA1MDc3LCA1MDgyLCA1MDg2LCA1MDkxLCA1MDk2LCA1MTAxLCA1MTA2LCA1MTEyLCA1MTE4LCA1MTI0LCA1MTMwLCA1MTM2LCAKKyAgICA1MTQyLCA1MTQ4LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgzLCA1MTg5LCA1MTk1LCA1MjAxLCA1MjA3LCAKKyAgICA1MjEzLCA1MjE4LCA1MjI0LCA1MjMwLCA1MjM2LCA1MjQyLCA1MjQ4LCA1MjU0LCA1MjYwLCA1MjY2LCA1MjcyLCA1Mjc4LCAKKyAgICA1MjgzLCA1Mjg5LCA1Mjk1LCA1MzAxLCA1MzA3LCA1MzEzLCA1MzE5LCA1MzI1LCA1MzMxLCA1MzM3LCA1MzQzLCA1MzQ4LCAKKyAgICA1MzU0LCA1MzYwLCA1MzY2LCA1MzcyLCA1Mzc4LCA1Mzg0LCA1MzkwLCA1Mzk2LCA1NDAyLCA1NDA4LCA1NDEzLCA1NDE5LCAKKyAgICA1NDI1LCA1NDMxLCA1NDM3LCA1NDQzLCA1NDQ5LCA1NDU1LCA1NDYxLCA1NDY3LCA1NDczLCA1NDc4LCA1NDgyLCA1NDg4LCAKKyAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTEyLCA1NTE4LCA1NTI0LCA1NTMwLCA1NTM2LCA1NTQyLCA1NTQ3LCA1NTUzLCA1NTU5LCAKKyAgICA1NTY1LCA1NTcxLCA1NTc3LCA1NTgzLCA1NTg5LCA1NTk1LCA1NjAxLCA1NjA3LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKKyAgICA1NjM2LCA1NjQyLCA1NjQ4LCA1NjU0LCA1NjYwLCA1NjY2LCA1NjcyLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKKyAgICA1NzA3LCA1NzEzLCA1NzE5LCA1NzI1LCA1NzMxLCA1NzM3LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcyLCAKKyAgICA1Nzc4LCA1Nzg0LCA1NzkwLCA1Nzk2LCA1ODAyLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM3LCA1ODQzLCAKKyAgICA1ODQ5LCA1ODU1LCA1ODYxLCA1ODY3LCA1ODcyLCA1ODc4LCA1ODg0LCA1ODkwLCA1ODk2LCA1OTAyLCA1OTA4LCA1OTE0LCAKKyAgICA1OTIwLCA1OTI2LCA1OTMyLCA1OTM3LCA1OTQzLCA1OTQ5LCA1OTU1LCA1OTYxLCA1OTY3LCA1OTczLCA1OTc5LCA1OTg1LCAKKyAgICA1OTkxLCA1OTk3LCA2MDAyLCA2MDA4LCA2MDE0LCA2MDIwLCA2MDI2LCA2MDMyLCA2MDM4LCA2MDQ0LCA2MDUwLCA2MDU2LCAKKyAgICA2MDYyLCA2MDY3LCA2MDczLCA2MDc5LCA2MDg1LCA2MDkxLCA2MDk3LCA2MTAzLCA2MTA5LCA2MTE1LCA2MTIxLCA2MTI3LCAKKyAgICA2MTMyLCA2MTM2LCA2MTM5LCA2MTQ2LCA2MTUwLCA2MTYzLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTc4LCA2MTgyLCA2MTg3LCAKKyAgICA2MTkxLCA2MTk1LCA2MjAxLCA2MjA4LCA2MjE5LCA2MjI3LCA2MjM0LCA2MjM4LCA2MjQ2LCA2MjU1LCA2MjYxLCA2MjY1LCAKKyAgICA2Mjc3LCA2MjgyLCA2Mjg1LCA2MjkwLCA2Mjk0LCA2MzA0LCA2MzEyLCA2MzIwLCA2MzI2LCA2MzMwLCA2MzQwLCA2MzUwLCAKKyAgICA2MzU4LCA2MzY1LCA2MzcyLCA2Mzc4LCA2Mzg0LCA2MzkxLCA2Mzk1LCA2NDAyLCA2NDEyLCA2NDIyLCA2NDMwLCA2NDM3LCAKKyAgICA2NDQyLCA2NDQ2LCA2NDUwLCA2NDU4LCA2NDYyLCA2NDY3LCA2NDc0LCA2NDgyLCA2NDg3LCA2NDkxLCA2NDk2LCA2NTAwLCAKKyAgICA2NTA3LCA2NTEyLCA2NTI2LCA2NTMxLCA2NTM2LCA2NTQzLCAzNTMwLCA2NTUyLCA2NTU2LCA2NTYxLCA2NTY1LCA2NTY5LCAKKyAgICA2NTcyLCA2NTc3LCA2NTgyLCA2NTkxLCA2NTk3LCA2NjAzLCA2NjA5LCA2NjEzLCA2NjI0LCA2NjM0LCA2NjQ5LCA2NjY0LCAKKyAgICA2Njc5LCA2Njk0LCA2NzA5LCA2NzI0LCA2NzM5LCA2NzU0LCA2NzY5LCA2Nzg0LCA2Nzk5LCA2ODE0LCA2ODI5LCA2ODQ0LCAKKyAgICA2ODU5LCA2ODc0LCA2ODg5LCA2OTA0LCA2OTE5LCA2OTM0LCA2OTQ5LCA2OTY0LCA2OTc5LCA2OTk0LCA3MDA5LCA3MDI0LCAKKyAgICA3MDM5LCA3MDU0LCA3MDY5LCA3MDg0LCA3MDk5LCA3MTE0LCA3MTI5LCA3MTQ0LCA3MTU5LCA3MTc0LCA3MTg5LCA3MjA0LCAKKyAgICA3MjE5LCA3MjM0LCA3MjQ5LCA3MjY0LCA3Mjc5LCA3Mjk0LCA3MzA5LCA3MzI0LCA3MzM5LCA3MzU0LCA3MzY5LCA3Mzc4LCAKKyAgICA3Mzg3LCA3MzkyLCA3Mzk4LCA3NDA4LCA3NDEyLCA3NDE2LCA3NDIxLCA3NDI2LCA3NDM0LCA3NDM4LCA3NDQxLCA3NDQ1LCAKKyAgICAzMDIzLCA3NDQ4LCA3NDUzLCAzMzYsIDUxMCwgNzQ1OSwgNzQ2NywgNzQ3MSwgNzQ3NSwgNzQ3OCwgNzQ4MiwgNzQ4OCwgCisgICAgNzQ5MiwgNzUwMCwgNzUwNiwgNzUxMSwgNzUxOCwgNzUyNiwgNzUzMywgNzUzOSwgNzU0NCwgNzU1MSwgNzU1NywgNzU2NSwgCisgICAgNzU2OSwgNzU3NCwgNzU4NiwgNzU5NywgNzYwNCwgNzYwOCwgNzYxMiwgNzYxNiwgNzYxOSwgNzYyNSwgMzMwMCwgNzYyOSwgCisgICAgNzYzNSwgNzY0MCwgNzY0NSwgNzY1MCwgNzY1NiwgNzY2MSwgNzY2NiwgNzY3MSwgNzY3NiwgNzY4MiwgNzY4NywgNzY5MiwgCisgICAgNzY5OCwgNzcwMywgNzcwOSwgNzcxNCwgNzcyMCwgNzcyNSwgNzczMSwgNzczNiwgNzc0MSwgNzc0NiwgNzc1MSwgNzc1NiwgCisgICAgNzc2MiwgNzc2NywgNzc3MiwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCisgICAgNzgzMSwgNzgzNywgNzg0MywgNzg0OSwgNzg1NCwgNzg1OSwgNzg2NCwgNzg2OSwgNzg3NCwgNzg3OSwgNzg4NCwgNzg4OSwgCisgICAgNzg5NSwgNzkwMSwgNzkwNiwgNzkxMiwgNzkxOCwgNzkyNCwgNzkyOSwgNzkzNCwgNzkzOSwgNzk0NCwgNzk1MCwgNzk1NiwgCisgICAgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NywgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCisgICAgODAyOCwgODAzNCwgODA0MCwgODA0NiwgMjE0OSwgNzQ3NywgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2OSwgODA3MiwgCisgICAgODA3NiwgODA4NCwgODA4OSwgODA5NCwgODA4NSwgODA5OSwgMjE3NiwgODEwMywgODEwOSwgODExNSwgODEyMCwgODEyNSwgCisgICAgODEzMiwgODE0MCwgODE0NSwgODE0OSwgODE1MiwgODE1NiwgODE2MiwgODE2OCwgODE3MiwgMjE4NCwgNTQxLCA4MTc1LCAKKyAgICA4MTc5LCA4MTg0LCA4MTkwLCA4MTk1LCA4MTk5LCA4MjAyLCA4MjA2LCA4MjEyLCA4MjE3LCA4MjIxLCA4MjI4LCA4MjMyLCAKKyAgICA4MjM2LCA4MjQwLCA4ODIsIDk4NCwgODI0MywgODI1MSwgODI1OCwgODI2NCwgODI3MSwgODI3OSwgODI4NiwgODI5NywgCisgICAgODMwNCwgODMxMCwgODMxNSwgODMyNywgMTIwOSwgMTM3NCwgMTM3OSwgODMzOCwgMTM4NCwgODM0MiwgODM0NiwgODM1NSwgCisgICAgODM2MywgODM2NywgODM3NiwgODM4MiwgODM4NywgODM5MSwgODM5NywgODQwMiwgODQxMCwgODQxNywgMjczNCwgODQyNCwgCisgICAgODQyOCwgODQzNywgODQ0NiwgODQ1NSwgODQ2NCwgODQ3MCwgODQ3NSwgODQ4MCwgODQ5MSwgODUwMCwgODUxMiwgODUxNywgCisgICAgODUyNSwgMjIzNSwgODUyOSwgODUzMSwgODUzNiwgODU0MCwgODU0OSwgODU1NywgMTM4OCwgMTY1LCAzNTcyLCAzNTc3LCAKKyAgICA4NTYzLCA4NTY3LCA4NTc2LCA4NTgyLCA4NTg3LCA4NTkwLCA4NTk5LCAzNTgxLCA4NjA1LCAyNzI2LCA4NjA5LCA4NjE3LCAKKyAgICA4NjIxLCA4NjI1LCA4NjI5LCAyMjUyLCA4NjMzLCA4NjM4LCA4NjQ1LCA4NjUxLCA4NjU3LCA4NjYwLCA4NjYyLCA4NjY1LCAKKyAgICA4NjczLCA4NjgxLCA4Njg5LCA4NjkyLCA4Njk3LCAyMjY1LCA4NzAyLCA4MDk2LCA4NzA1LCA4NzA3LCA4NzEyLCA4NzE3LCAKKyAgICA4NzIyLCA4NzI3LCA4NzMyLCA4NzM3LCA4NzQyLCA4NzQ3LCA4NzUyLCA4NzU3LCA4NzYzLCA4NzY4LCA4NzczLCA4Nzc4LCAKKyAgICA4Nzg0LCA4Nzg5LCA4Nzk0LCA4Nzk5LCA4ODA0LCA4ODA5LCA4ODE0LCA4ODIwLCA4ODI1LCA4ODMwLCA4ODM1LCA4ODQwLCAKKyAgICA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY1LCA4ODcwLCA4ODc1LCA4ODgwLCA4ODg1LCA4ODkwLCA4ODk1LCA4OTAwLCAKKyAgICA4OTA1LCA4OTExLCA4OTE3LCA4OTIyLCA4OTI3LCA4OTMyLCA4OTM3LCA4OTQyLCAyMjc2LCAyMjgzLCAyMjg5LCA4OTQ3LCAKKyAgICA4OTU1LCA4OTYxLCA4OTY5LCAyMzE1LCAyMzIxLCA4OTc3LCA4OTgxLCA4OTg2LCA4OTkwLCA4OTk0LCA4OTk4LCA5MDAzLCAKKyAgICA5MDA3LCA5MDEyLCA5MDE2LCA5MDE5LCA5MDIyLCA5MDI4LCA5MDM1LCA5MDQxLCA5MDQ4LCA5MDU0LCA5MDYxLCA5MDY3LCAKKyAgICA5MDc0LCA5MDgwLCA5MDg2LCA5MDk1LCA5MTAxLCA5MTA1LCA5MTA5LCA5MTEzLCA5MTE3LCA5MTIyLCA5MTI2LCA5MTMxLCAKKyAgICA5MTM1LCA5MTQxLCA5MTQ2LCA5MTUzLCA5MTY0LCA5MTcyLCA5MTgyLCA5MTg4LCA5MTk4LCA5MjA3LCA5MjE0LCA5MjE5LCAKKyAgICA5MjIzLCA5MjM0LCA5MjQ0LCA5MjU3LCA5MjY4LCA5MjgxLCA5MjkyLCA5MzA0LCA5MzE2LCA5MzI4LCA5MzQxLCA5MzU0LCAKKyAgICA5MzYxLCA5MzY3LCA5Mzc4LCA5Mzg4LCA5NDAyLCA5NDA5LCA5NDE1LCA5NDI0LCA5NDMyLCA5NDM2LCA5NDQxLCA5NDQ1LCAKKyAgICA5NDUyLCA5NDYwLCA5NDY3LCA5NDcxLCA5NDc3LCA5NDgxLCA5NDg3LCA5NDk3LCA5NTAxLCA5NTA2LCA5NTExLCA5NTE4LCAKKyAgICA5NTI0LCA5NTM0LCA4MjY2LCA5NTQwLCA5NTQ0LCA5NTUxLCA5NTU3LCA5NTY0LCA5NTcxLCA5ODMsIDk1NzUsIDk1NzksIAorICAgIDk1ODQsIDk1ODksIDk1OTQsIDk1OTgsIDk2MDQsIDk2MTIsIDk2MTksIDk2MjUsIDk2MjksIDk2MzIsIDk2MzgsIDk2NDgsIAorICAgIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjcsIDk2NzEsIDk2NzcsIDk2ODMsIDIxNzIsIDk2ODgsIDk2OTAsIDk2OTUsIDk3MDMsIAorICAgIDk3MTIsIDk3MTYsIDk3MjIsIDk3MjcsIDk3MzIsIDk3MzcsIDk3NDIsIDk3NDgsIDk3NTMsIDk3NTgsIDQyNDksIDk3NjMsIAorICAgIDk3NjgsIDk3NzIsIDk3NzgsIDk3ODMsIDk3ODksIDk3OTQsIDk3OTksIDk4MDUsIDk4MTAsIDk3MTcsIDk4MTYsIDk4MjAsIAorICAgIDk4MjcsIDk4MzMsIDk4MzgsIDk4NDIsIDY1MjIsIDk4NDcsIDk4NTYsIDk4NjEsIDk4NjYsIDg2NDEsIDg2NDgsIDk4NzEsIAorICAgIDI5MDEsIDk4NzUsIDk4ODAsIDk4ODUsIDk4OTAsIDk3MjgsIDk4OTQsIDk4OTksIDk5MDQsIDk3MzMsIDk5MDgsIDk3MzgsIAorICAgIDk5MTMsIDk5MjAsIDk5MjcsIDk5MzMsIDk5NDAsIDk5NDYsIDk5NTIsIDk5NTcsIDk5NjQsIDk5NjksIDk5NzQsIDk5NzksIAorICAgIDk5ODUsIDk3NDMsIDk3NDksIDk5OTEsIDk5OTcsIDEwMDAyLCAxMDAwNywgMTAwMTUsIDk3NTQsIDEwMDIwLCAxMTEyLCAKKyAgICAxMDAyMywgMTAwMzEsIDEwMDM3LCAxMDA0MywgMTAwNTIsIDEwMDYwLCAxMDA2OCwgMTAwNzYsIDEwMDg0LCAxMDA5MiwgCisgICAgMTAxMDAsIDEwMTA4LCAxMDExNiwgMTAxMjUsIDEwMTM0LCAxMDE0MiwgMTAxNTEsIDEwMTYwLCAxMDE2OSwgMTAxNzgsIAorICAgIDEwMTg3LCAxMDE5NiwgMTAyMDUsIDEwMjE0LCAxMDIyMywgMTAyMzIsIDEwMjQwLCAxMDI0NSwgMTAyNTEsIDEwMjU5LCAKKyAgICAxMDI2NiwgMTAyODEsIDEwMjk4LCAxMDMxNywgMTAzMjYsIDEwMzM0LCAxMDM0OSwgMTAzNjAsIDEwMzY4LCAxMDM3OCwgCisgICAgMTAzODgsIDEwMzk2LCAxMDQwMiwgMTA0MTQsIDEwNDIzLCAxMDQzMSwgMTA0MzgsIDEwNDQ1LCAxMDQ1MiwgMTA0NTgsIAorICAgIDEwNDYzLCAxMDQ3MywgMTA0ODEsIDEwNDkxLCAxMDQ5OCwgMTA1MDgsIDEwNTE4LCAxMDUyOCwgMTA1MzYsIDEwNTQzLCAKKyAgICAxMDU1MiwgMTA1NjIsIDEwNTc2LCAxMDU5MSwgMTA2MDAsIDEwNjA4LCAxMDYxMywgMTA2MTcsIDEwNjI2LCAxMDYzMiwgCisgICAgMTA2MzcsIDEwNjQ3LCAxMDY1NywgMTA2NjcsIDEwNjcyLCAxMDY3NiwgMTA2ODUsIDEwNjkwLCAxMDcwNiwgMTA3MjMsIAorICAgIDEwNzMzLCAxMDc0NCwgMTA3NTcsIDEwNzY1LCAxMDc3OCwgMTA3OTAsIDEwNzk4LCAxMDgwMywgMTA4MDcsIDEwODEzLCAKKyAgICAxMDgxOCwgMTA4MjYsIDEwODM0LCAxMDg0MSwgMTA4NDYsIDEwODU0LCAxMDg2NCwgMTA4NzAsIDEwODc0LCAxMDg3NywgCisgICAgMTA4ODEsIDEwODg3LCAxMDg5NCwgMTA4OTgsIDEwOTA2LCAxMDkxNSwgMTA5MjMsIDEwOTMwLCAxMDkzNSwgMTA5NDAsIAorICAgIDEwOTQ0LCAxMDk0OCwgMTA5NTYsIDEwOTcxLCAxMDk4NywgMTA5OTMsIDExMDAxLCAxMTAxMCwgMTEwMTgsIDExMDI0LCAKKyAgICAxMTAyOCwgMTEwMzUsIDExMDQ2LCAxMTA1MCwgMTEwNTMsIDExMDU5LCA5NzU5LCAxMTA2NCwgMTEwNzAsIDExMDc3LCAKKyAgICAxMTA4MywgMTEwODgsIDExMDk1LCAxMTEwMiwgMTExMDksIDExMTE2LCAxMTEyMywgMTExMzAsIDExMTM3LCAxMTE0NCwgCisgICAgMTExNDksIDEwMjk0LCAxMTE1NCwgMTExNjAsIDExMTY3LCAxMTE3NCwgMTExNzksIDExMTg2LCAxMTE5NSwgMTExOTksIAorICAgIDExMjExLCA4Njc5LCAxMTIxNSwgMTEyMTgsIDExMjIyLCAxMTIyNiwgMTEyMzAsIDExMjM0LCAxMTI0MCwgMTEyNDYsIAorICAgIDExMjUxLCAxMTI1NywgMTEyNjIsIDExMjY3LCAxMTI3MywgMTEyNzgsIDExMjgzLCA5NTE0LCAxMTI4OCwgMTEyOTIsIAorICAgIDExMjk2LCAxMTMwMCwgMTEzMDUsIDExMzEwLCAxMTMxNSwgMTEzMjMsIDExMzI5LCAxMTMzNCwgMTEzMzgsIDExMzQyLCAKKyAgICAxMTM0OSwgMTEzNTQsIDExMzYyLCAxMTM2OSwgMTEzNzQsIDExMzc4LCAxMTM4MSwgMTEzODcsIDExMzk0LCAxMTM5OCwgCisgICAgMTE0MDEsIDExNDA2LCAxMTQxMCwgNDI4OCwgMTE0MTYsIDExNDI1LCA0NiwgMTE0MzMsIDExNDM5LCAxMTQ0NCwgMTE0NDksIAorICAgIDExNDU3LCAxMTQ2NCwgMTE0NjksIDk1MjksIDExNDc1LCAxMTQ4MSwgMTE0ODYsIDExNDkwLCAxMTQ5MywgMTE1MDgsIAorICAgIDExNTI3LCAxMTUzOSwgMTE1NTIsIDExNTY1LCAxMTU3OCwgMTE1OTIsIDExNjA1LCAxMTYyMCwgMTE2MjcsIDk3NjQsIAorICAgIDExNjMzLCAxMTY0NywgMTE2NTIsIDExNjU4LCAxMTY2MywgMTE2NzEsIDExNjc2LCA4NDMzLCAxMTY4MSwgMTE2ODQsIAorICAgIDExNjkyLCAxMTY5OSwgMTE3MDQsIDExNzA4LCAxMTcxNCwgMjkwNiwgMTAzNzYsIDExNzE4LCAxMTcyMiwgMTE3MjgsIAorICAgIDExNzM0LCAxMTczOSwgMTE3NDUsIDExNzUwLCA5NzczLCAxMTc1NiwgMTE3NjIsIDExNzY3LCAxMTc3MiwgMTE3ODAsIAorICAgIDExNzg2LCAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyMCwgOTc3OSwgMTE4MjYsIDExODM0LCAxMTg0MiwgMTE4NDksIAorICAgIDExODYyLCAxMTg3NSwgMTE4ODcsIDExODk3LCAxMTkwOSwgMTE5MTcsIDExOTI0LCAxMTkzNiwgMTE5NDMsIDExOTUzLCAKKyAgICAxMTk2MiwgMTE5NzEsIDExOTc5LCAxMTk4NiwgMTE5OTEsIDExOTk3LCA5Nzg0LCAxMjAwMiwgMTIwMDgsIDEyMDEzLCAKKyAgICAxMjAxOCwgOTc5MCwgMTIwMjMsIDEyMDI2LCAxMjAzMywgMTIwMzksIDEyMDUyLCA5MTU3LCAxMjA2MywgMTIwNjksIAorICAgIDEyMDc4LCAxMjA4NiwgMTIwOTMsIDEyMDk5LCAxMjExMCwgMTIxMTYsIDEyMTIxLCAzODM1LCAxMjEyOSwgMTIxMzQsIAorICAgIDExNTAwLCAxMjE0MCwgMTIxNDcsIDEyMTUyLCA5Nzk1LCAxMjE1OCwgMTIxNjMsIDEyMTcwLCAxMjE3NiwgMTIxODIsIAorICAgIDEyMTg3LCAxMjE5NSwgMTIyMDMsIDEyMjEwLCAxMjIxNCwgMTIyMjYsIDEyMjQwLCAxMjI1MCwgMTIyNTUsIDEyMjU5LCAKKyAgICAxMjI3MCwgMTIyNzYsIDEyMjgxLCAxMjI4NiwgOTgwMCwgMTIyOTAsIDk4MDYsIDEyMjk1LCAxMjI5OCwgMTIzMDMsIAorICAgIDEyMzE1LCAxMjMyMiwgMTIzMjcsIDEyMzMxLCAxMjMzOSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTIzNTcsIDEyMzY0LCAKKyAgICAxMjM3MCwgOTgxMSwgOTcxOCwgMTIzNzcsIDI5MTEsIDEyLCAxMjM4NCwgMTIzODksIDEyMzkzLCAxMjM5NywgMTI0MDMsIAorICAgIDEyNDExLCAxMjQyMSwgMTI0MjYsIDEyNDMxLCAxMjQzOCwgMTI0NDUsIDEyNDQ5LCAxMjQ2MCwgMTI0NzAsIDEyNDc5LCAKKyAgICAxMjQ4OCwgMTI1MDAsIDEyNTA1LCAxMjUwOSwgMTI1MTcsIDEyNTMxLCAxMjUzNSwgMTI1MzgsIDEyNTQ2LCAxMjU1MywgCisgICAgMTI1NjEsIDEyNTY1LCAxMjU3NiwgMTI1ODAsIDEyNTg3LCAxMjU5MiwgMTI1OTYsIDEyNjAyLCAxMjYwNywgMTI2MTMsIAorICAgIDEyNjE4LCAxMjYyMywgMTI2MjcsIDEyNjMzLCAxMjYzOCwgMTI2NDksIDEyNjUzLCAxMjY1NiwgMTI2NjIsIDEyNjY3LCAKKyAgICAxMjY3MywgMTI2NzksIDEyNjg2LCAxMjY5NywgMTI3MDcsIDEyNzE3LCAxMjcyNiwgMTI3MzMsIDEyNzQyLCAxMjc0NiwgCisgICAgOTgyMSwgOTgyOCwgOTgzNCwgOTgzOSwgMTI3NTIsIDEyNzU4LCAxMjc2NCwgMTI3NjksIDEyNzc1LCA5ODQzLCAxMjc4MSwgCisgICAgMTI3ODQsIDEyNzkxLCAxMjc5NiwgMTI4MTEsIDEyODI3LCAxMjg0MiwgMTI4NTAsIDEyODU2LCAxMjg2MSwgOTc2LCAzODcsIAorICAgIDEyODY2LCAxMjg3NCwgMTI4ODEsIDEyODg3LCAxMjg5MiwgMTI4OTcsIDk4NDgsIDEyODk5LCAxMjkwMywgMTI5MDgsIAorICAgIDEyOTEyLCAxMjkyMiwgMTI5MjcsIDEyOTMxLCAxMjk0MCwgMTI5NDQsIDEyOTQ3LCAxMjk1NCwgOTg1NywgMTI5NTksIAorICAgIDEyOTYyLCAxMjk3MCwgMTI5NzcsIDEyOTg1LCAxMjk4OSwgMTI5OTMsIDEzMDAwLCAxMzAwOSwgMTMwMTYsIDEzMDEyLCAKKyAgICAxMzAyMywgMTMwMjcsIDEzMDMzLCAxMzAzNywgMTMwNDEsIDEzMDQ1LCAxMzA1MSwgMTMwNjEsIDEzMDY5LCAxMzA3NiwgCisgICAgMTMwODAsIDEzMDg4LCAxMzA5MiwgMTMwOTksIDEzMTAzLCAxMzEwOCwgMTMxMTIsIDEzMTE5LCAxMzEyNSwgMTMxMzMsIAorICAgIDEzMTM5LCAxMzE0NCwgMTMxNTQsIDEzMTU5LCAxMzE2NCwgMTMxNjgsIDEzMTcyLCAxMzE4MCwgNDEzOCwgMTMxODgsIAorICAgIDEzMTkzLCA5ODYyLCAxMzE5NywgMTMyMDEsIDEzMjA0LCAxMzIxMiwgMTMyMTksIDEzMjIzLCA2MzIyLCAxMzIyNywgCisgICAgMTMyMzIsIDEzMjM3LCAxMzI0MSwgMTMyNTIsIDEzMjYyLCAxMzI2NywgMTMyNzMsIDEzMjc4LCAxMzI4MiwgMTMyODUsIAorICAgIDEzMjkzLCAxMzI5OCwgMTMzMDMsIDEzMzEwLCAxMzMxNSwgOTg2NywgMTMzMjAsIDEzMzI0LCAxMzMzMSwgMTcxOCwgNjQ4MCwgCisgICAgMTMzMzYsIDEzMzQxLCAxMzM0NiwgMTMzNTEsIDEzMzU3LCAxMzM2MiwgMTMzNjgsIDEzMzczLCAxMzM3OCwgMTMzODMsIAorICAgIDEzMzg4LCAxMzM5MywgMTMzOTgsIDEzNDAzLCAxMzQwOCwgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAKKyAgICAxMzQzOCwgMTM0NDMsIDEzNDQ4LCAxMzQ1NCwgMTM0NTksIDEzNDY0LCAxMzQ2OSwgMTM0NzQsIDEzNDc5LCAxMzQ4NSwgCisgICAgMTM0OTAsIDEzNDk1LCAxMzUwMSwgMTM1MDYsIDEzNTEyLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzMywgMTM1MzgsIAorICAgIDEzNTQzLCAxMzU0OSwgMTM1NTQsIDEzNTU5LCAxMzU2NCwgOTM2LCAxMTIsIDEzNTcyLCAxMzU3NiwgMTM1ODEsIDEzNTg2LCAKKyAgICAxMzU5MCwgMTM1OTQsIDEzNTk4LCAxMzYwMywgMTM2MDcsIDEzNjEyLCAxMzYxNiwgMTM2MTksIDEzNjIzLCAxMzYyNywgCisgICAgMTM2MzMsIDEzNjM4LCAxMzY0OCwgMTM2NTQsIDEzNjYyLCAxMzY2OCwgMTM2NzIsIDEzNjc2LCAxMzY4MywgMTM2OTEsIAorICAgIDEzNzAwLCAxMzcxMSwgMTM3MjEsIDEzNzI4LCAxMzczNSwgMTM3MzksIDEzNzQ4LCAxMzc1NywgMTM3NjUsIDEzNzc0LCAKKyAgICAxMzc4MywgMTM3OTIsIDEzODAxLCAxMzgxMSwgMTM4MjEsIDEzODMxLCAxMzg0MSwgMTM4NTEsIDEzODYwLCAxMzg3MCwgCisgICAgMTM4ODAsIDEzODkwLCAxMzkwMCwgMTM5MTAsIDEzOTIwLCAxMzkzMCwgMTM5MzksIDEzOTQ5LCAxMzk1OSwgMTM5NjksIAorICAgIDEzOTc5LCAxMzk4OSwgMTM5OTksIDE0MDA4LCAxNDAxOCwgMTQwMjgsIDE0MDM4LCAxNDA0OCwgMTQwNTgsIDE0MDY4LCAKKyAgICAxNDA3OCwgMTQwODgsIDE0MDk4LCAxNDEwNywgMTQxMTcsIDE0MTI3LCAxNDEzNywgMTQxNDcsIDE0MTU3LCAxNDE2NywgCisgICAgMTQxNzcsIDE0MTg3LCAxNDE5NywgMTQyMDcsIDE0MjE2LCAxMjE4LCAxNDIyMiwgMTQyMjUsIDE0MjI5LCAxNDIzNCwgCisgICAgMTQyNDEsIDE0MjQ3LCAxNDI1MiwgMTQyNTYsIDE0MjYxLCAxNDI3MCwgMTQyNzgsIDE0MjgzLCAxNDI4NywgMTQyOTEsIAorICAgIDE0Mjk3LCAxNDMwMiwgMTQzMDgsIDk4NzYsIDE0MzEzLCAxNDMxOCwgMTQzMjcsIDk4ODYsIDE0MzMyLCAxNDMzNSwgCisgICAgMTQzNDEsIDE0MzQ5LCA5ODkxLCAxNDM1NiwgMTQzNjAsIDE0MzY0LCAxNDM2OSwgMTQzNzMsIDE0MzgzLCAxNDM4OSwgCisgICAgMTQzOTUsIDE0NDAwLCAxNDQwOSwgMTQ0MTcsIDE0NDI0LCAxNDQzMSwgMTQ0MzYsIDE0NDQzLCAxNDQ0OCwgMTQ0NTIsIAorICAgIDE0NDU1LCAxNDQ2NiwgMTQ0NzYsIDE0NDg1LCAxNDQ5MywgMTQ1MDQsIDE0NTE2LCAxNDUyNiwgMTQ1MzEsIDE0NTM1LCAKKyAgICAxNDU0MCwgMTQ1NDUsIDE0NTQ5LCAxNDU1NSwgMTQ1NjMsIDE0NTcwLCAxNDU4MSwgMTQ1ODYsIDE0NTk2LCAxNDYwNSwgCisgICAgMTQ2MDksIDE0NjEyLCAxNDYxOSwgMTQ2MjksIDE0NjM4LCAxNDY0NSwgMTQ2NDksIDE0NjU2LCAxNDY2MiwgMTQ2NjcsIAorICAgIDE0NjcyLCAxNDY3NiwgMTQ2ODUsIDE0NjkwLCAxNDY5NCwgMTQ3MDAsIDE0NzA0LCAxNDcwOSwgMTQ3MTMsIDE0NzIwLCAKKyAgICAxNDcyNywgMTQ3MzEsIDE0NzQwLCAxNDc0OCwgMTQ3NTYsIDE0NzYzLCAxNDc3MSwgMTQ3ODMsIDE0Nzk0LCAxNDgwNCwgCisgICAgMTQ4MTEsIDE0ODE3LCAxNDgyNiwgMTQ4MzcsIDE0ODQ2LCAxNDg1OCwgMTQ4NzAsIDE0ODgyLCAxNDg5MiwgMTQ5MDEsIAorICAgIDE0OTEwLCAxNDkxOCwgMTQ5MjUsIDE0OTM0LCAxNDk0MiwgMTQ5NDYsIDE0OTUxLCAxNDk1NywgMTQ5NjMsIDE0OTY4LCAKKyAgICAxNDk3MywgODExNywgMTQ5NzcsIDE0OTc5LCAxNDk4MywgMTQ5ODgsIDE0OTk1LCAxNTAwMSwgMTUwMDcsIDE1MDE2LCAKKyAgICAxNTAyMCwgMTUwMjYsIDE1MDM0LCAxNTA0MSwgMTUwNTAsIDE1MDU5LCAxNTA2OCwgMTUwNzcsIDE1MDg2LCAxNTA5NSwgCisgICAgMTUxMDQsIDE1MTEzLCAxNTEyMywgMTUxMzMsIDE1MTQyLCAxNTE0OCwgMTUxNTUsIDE1MTYyLCAxNTE2OCwgMTUxODIsIAorICAgIDE1MTg4LCAxNTE5NSwgMTUyMDMsIDE1MjEyLCAxNTIyMCwgMTUyMjYsIDE1MjM1LCAxNTI0NCwgMTUyNTUsIDE1MjY1LCAKKyAgICAxNTI3MywgMTUyODAsIDE1Mjg4LCAxNTI5NywgMTUzMTAsIDE1MzE5LCAxNTMyNywgMTUzMzQsIDE1MzQ3LCAxNTM1MywgCisgICAgMTUzNTksIDE1MzY5LCAxNTM3OCwgMTUzODcsIDE1MzkyLCAxNTM5NiwgMTU0MDIsIDE1NDA4LCAxNTQxMywgMTU0MjAsIAorICAgIDE1NDI3LCA5NTI4LCAxNTQzMiwgMTU0MzcsIDE1NDQ0LCAxNTQ1MiwgMTU0NTcsIDE1NDY0LCAxNTQ2OSwgMTU0ODEsIAorICAgIDEzNjI5LCAxNTQ4NiwgMTU0OTQsIDE1NTAwLCAxNTUwNSwgMTU1MTMsIDE1NTIxLCAxNTUyOCwgMTU1MzYsIDE1NTQyLCAKKyAgICAxNTU1MCwgMTU1NTgsIDE1NTY0LCAxNTU2OSwgMTU1NzUsIDE1NTgyLCAxNTU4OCwgMTU1OTMsIDE1NTk3LCAxNTYwOCwgCisgICAgMTU2MTYsIDE1NjIyLCAxNTYyNywgMTU2MzQsIDE1NjQzLCAxNTY0OSwgMTU2NTQsIDE1NjYyLCAxNTY3MSwgMTU2ODUsIAorICAgIDQwODIsIDE1Njg5LCAxNTY5NCwgMTU2OTksIDE1NzA1LCAxNTcxMCwgMTU3MTUsIDE1NzE5LCAxNTcyNCwgMTU3MjksIAorICAgIDE1NzM0LCA4MTE2LCAxNTczOSwgMTU3NDQsIDE1NzQ5LCAxNTc1NCwgMTU3NTksIDE1NzYzLCAxNTc2OCwgMTU3NzMsIAorICAgIDE1Nzc4LCAxNTc4MywgMTU3ODksIDE1Nzk1LCAxNTgwMCwgMTU4MDQsIDE1ODEwLCAxNTgxNSwgMTU4MjAsIDE1ODI1LCAKKyAgICA5ODk1LCAxNTgzMCwgMTU4MzUsIDE1ODQwLCAxNTg0NSwgMTU4NTAsIDE1ODY3LCAxNTg4NSwgMTU4OTcsIDE1OTEwLCAKKyAgICAxNTkyNywgMTU5NDMsIDE1OTYwLCAxNTk3MCwgMTU5ODksIDE2MDAwLCAxNjAxMSwgMTYwMjIsIDE2MDMzLCAxNjA0NSwgCisgICAgMTYwNTYsIDE2MDY3LCAxNjA4NCwgMTYwOTUsIDE2MTA2LCAxNjExMSwgOTkwMCwgMTYxMTYsIDE2MTIwLCAyNDA1LCAKKyAgICAxNjEyNCwgMTYxMjcsIDE2MTMzLCAxNjE0MSwgMTYxNDksIDE2MTU1LCAxNjE2NCwgMTYxNzEsIDE2MTc2LCAxNjE4NCwgCisgICAgMTYxOTIsIDE2MTk5LCAxNjIwMywgMTYyMDgsIDE2MjE0LCAxNjIyMSwgMTYyMjksIDE2MjM2LCAxNjI0OCwgMTYyNTUsIAorICAgIDE2MjYxLCAxNjI2OSwgMTYyNzQsIDE2MjgwLCAxMjgwNSwgMTYyODYsIDE2Mjk1LCAxNjMwMSwgMTYzMDYsIDE2MzE0LCAKKyAgICAxNjMyMywgMTYzMzEsIDE2MzM4LCAxNjM0NCwgMTYzNTIsIDE2MzU5LCAxNjM2NSwgMTYzNzEsIDE2Mzc4LCAxNjM4NSwgCisgICAgMTYzOTEsIDE2Mzk3LCAxNjQwNiwgMTY0MTQsIDE2NDI0LCAxNjQzMSwgMTY0MzcsIDE2NDQ1LCAxNjQ1MSwgMTY0NTksIAorICAgIDE2NDY3LCAxNjQ3NCwgMTY0ODcsIDE2NDk0LCAxNjUwMywgMTY1MTIsIDE2NTIxLCAxNjUyOSwgMTY1MzksIDE2NTQ2LCAKKyAgICAxNjU1MSwgMzcyNiwgMTY1NTgsIDE2NTYzLCAxMzM0LCAxNjU2NywgMTU3NDAsIDE2NTcxLCAxNjU3NywgMTY1ODEsIAorICAgIDE2NTg5LCAxNjYwMSwgMTY2MDYsIDE2NjEzLCAxNjYxOSwgMTY2MjQsIDE2NjMxLCAxNTc0NSwgMTY2MzUsIDE2NjM5LCAKKyAgICAxNjY0MywgMTU3NTAsIDE2NjQ3LCAxNTc1NSwgMTY2NTEsIDE2NjU4LCAxNjY2MywgMTY2NjcsIDE2Njc0LCAxNjY3OCwgCisgICAgMTY2ODYsIDE2NjkzLCAxNjY5OCwgMTY3MDIsIDE2NzA5LCAxNjcyNiwgMTY3MzUsIDE2NzM5LCAxNjc0MiwgMTY3NTAsIAorICAgIDE2NzU2LCAxNjc2MSwgMzgwNCwgMTY3NjUsIDE2NzY3LCAxNjc3NSwgMTY3ODIsIDE2NzkyLCAxNjgwNCwgMTY4MDksIAorICAgIDE2ODEzLCAxNjgxOSwgMTY4MjQsIDE2ODMyLCAxNjgzNiwgMTY4NDIsIDE2ODQ3LCAxNjg1MywgMTY4NTYsIDE2ODYzLCAKKyAgICAxNjg3MSwgMTY4NzgsIDE2ODg0LCAxNjg4OSwgMTY4OTUsIDE2OTAwLCAxNjkwNywgMTY5MTMsIDE2OTE4LCAxNjkyNSwgCisgICAgMTY5MzAsIDE2OTM0LCAxNjk0MCwgMTY5NDQsIDE2OTUxLCAxNjk1NywgMTY5NjIsIDE2OTY4LCAxNjk3NiwgMTY5ODQsIAorICAgIDE2OTkxLCAxNjk5NywgMTcwMDIsIDE3MDA4LCAxNzAxNCwgMTcwMjIsIDE3MDI3LCAxNzAzNSwgMTcwNDEsIDE3MDQ3LCAKKyAgICAxNzA1MiwgMTcwNTksIDE3MDY0LCAxNzA2OCwgMTcwNzQsIDE3MDc5LCAxNzA4NiwgMTcwOTEsIDE3MDk3LCAxNzEwMCwgCisgICAgMTcxMDYsIDE3MTEyLCAxNzExNSwgMTcxMTksIDE3MTIzLCAxNzEzNSwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNTksIAorICAgIDE3MTY1LCAxNzE3NiwgMTcxODYsIDE3MTk1LCAxNzIwMywgMTcyMTAsIDE3MjIxLCAxNzIzMSwgMTcyNDEsIDE3MjQ5LCAKKyAgICAxNzI1MiwgMTU3NjksIDE3MjU3LCAxNzI2MiwgMTU3NzQsIDE1OTE1LCAxNzI3MCwgMTcyODMsIDE3Mjk4LCAxNzMwOSwgCisgICAgMTU5MzIsIDE3MzI3LCAxNzM0MCwgMTczNTMsIDE3MzY0LCAxMTUxNSwgMTczNzUsIDE3Mzg4LCAxNzQwNywgMTc0MTgsIAorICAgIDE3NDI5LCAxNzQ0MCwgMjY3NywgMTc0NTMsIDE3NDU3LCAxNzQ2NSwgMTc0NzYsIDE3NDg3LCAxNzQ5NSwgMTc1MTAsIAorICAgIDE3NTI1LCAxNzUzNiwgMTc1NDMsIDE3NTQ5LCAxNzU1NywgMTc1NjEsIDE3NTY3LCAxNzU3MCwgMTc1ODMsIDE3NTk1LCAKKyAgICAxNzYwNSwgMTc2MTMsIDE3NjIwLCAxNzYyOCwgMTc2MzgsIDE3NjQzLCAxNzY1MCwgMTc2NTUsIDE3NjYyLCAxNzY3MywgCisgICAgMTc2ODMsIDE3Njg5LCAxNzY5NCwgMTc2OTksIDE1Nzc5LCAxNzcwMywgMTc3MDksIDE3NzE1LCAxNzcyMCwgMTc3MjUsIAorICAgIDE3NzMwLCAxNzczNCwgMTU3ODQsIDE1NzkwLCAxNzczOCwgMTU3OTYsIDE3NzQzLCAxNzc1MSwgMTc3NTYsIDE3NzYwLCAKKyAgICAxNzc2NywgMTc3NzUsIDE3Nzg0LCAxNzc5MSwgMTc3OTUsIDk3MzksIDE3Nzk5LCAxNzgwMSwgMTc4MDYsIDE3ODExLCAKKyAgICAxNzgxNywgMTc4MjIsIDE3ODI3LCAxNzgzMiwgMTc4MzcsIDE3ODQxLCAxNzg0NywgMTc4NTMsIDE3ODU4LCAxNzg2NCwgCisgICAgMTc4NjksIDE3ODc0LCAxNzg3OCwgMTc4ODQsIDE3ODg5LCAxNzg5MywgMTc4OTgsIDE3OTAzLCAxNzkxNSwgMTc5MjAsIAorICAgIDE3OTI2LCAxNzkzMSwgMTc5MzYsIDE3OTQyLCAxNzk0OCwgMTc5NTMsIDE3OTU4LCAxNzk2MywgMTc5NzAsIDE3OTc2LCAKKyAgICAxNzk4NywgMTc5OTQsIDE3OTk5LCAxODAwMywgMTgwMDcsIDE4MDEwLCAxODAxOCwgMTgwMjMsIDE4MDI5LCAxODAzNiwgCisgICAgMTgwNDMsIDE4MDQ5LCAxODA1NCwgMTgwNTksIDE4MDY0LCAxODA3MSwgMTgwODEsIDE4MDg5LCAxODA5NCwgMTgxMDEsIAorICAgIDE4MTA3LCAxODExNiwgMTgxMjYsIDE4MTM2LCAxODE1MCwgMTgxNjQsIDE4MTc4LCAxODE5MiwgMTgyMDcsIDE4MjIyLCAKKyAgICAxODIzOSwgMTgyNTcsIDE4MjcwLCAxODI3NiwgMTgyODEsIDE4Mjg2LCAxODI5MCwgMTgyOTgsIDE4MzAzLCAxODMxMSwgCisgICAgMTgzMTcsIDE4MzIzLCAxODMyOCwgMTgzMzMsIDE4MzM3LCAxODM0MiwgMTgzNDYsIDE4MzUxLCAxODM1NSwgMTgzNjYsIAorICAgIDE4MzcyLCAxODM3NywgMTgzODIsIDE4Mzg5LCAxODM5NCwgMTgzOTgsIDM2ODksIDE4NDAzLCAxODQwOSwgMTg0MTYsIAorICAgIDE1ODA1LCAxODQyMiwgMTg0MjYsIDE4NDMyLCAxODQzNywgMTg0NDIsIDE4NDQ2LCAxODQ1MiwgMTg0NTcsIDE4NDYyLCAKKyAgICAxODQ2OSwgMTg0NzQsIDE0Mzg1LCAxODQ3OCwgMTg0ODMsIDE4NDg3LCAxODQ5MiwgMTg0OTgsIDE4NTA0LCAxODUxMSwgCisgICAgMTg1MjEsIDE4NTI5LCAxODUzNiwgMTg1NDEsIDE4NTQ1LCAxODU1NCwgMTg1NjIsIDE4NTY5LCAxODU3NiwgMTg1ODIsIAorICAgIDE4NTg3LCAxODU5MywgMTg1OTgsIDE4NjAzLCAxODYwOSwgMTg2MTQsIDE4NjIwLCAxODYyNSwgMTg2MzEsIDE4NjM3LCAKKyAgICAxODY0NCwgMTg2NTAsIDE4NjU1LCAxODY2MCwgOTk2NSwgMTg2NjksIDE4NjcyLCAxODY4MCwgMTg2ODYsIDE4NjkxLCAKKyAgICAxODY5NiwgMTg3MDYsIDE4NzEzLCAxODcxOSwgMTg3MjQsIDE4NzI5LCAxODczNSwgMTg3NDAsIDE4NzQ2LCAxODc1MSwgCisgICAgMTg3NTcsIDE4NzYzLCAxODc2OSwgMTg3NzQsIDE4NzgyLCAxODc4OSwgMTg3OTQsIDE4Nzk5LCAxODgwNSwgMTg4MTAsIAorICAgIDE4ODE0LCAxODgyMywgMTg4MzQsIDE4ODQxLCAxODg0OCwgMTg4NTYsIDE4ODYzLCAxODg2OCwgMTg4NzMsIDE4ODc5LCAKKyAgICAxODg4NCwgMTg4OTIsIDE4ODk4LCAxODkwNCwgMTg5MTEsIDE4OTE3LCAxODkyMiwgMTg5MjYsIDE4OTMyLCAxODkzNywgCisgICAgMTg5NDIsIDE4OTQ2LCAxODk1MSwgMTQwNywgODE0MSwgMjkyNSwgMTg5NTUsIDE4OTU5LCAxODk2MywgMTg5NjcsIDE4OTcxLCAKKyAgICAxODk3NSwgMTg5NzgsIDE4OTgzLCAxODk5MCwgMTg5OTgsIDE1ODE2LCAxOTAwNSwgMTkwMTUsIDE5MDIzLCAxOTAzMCwgCisgICAgMTkwMzgsIDE5MDQ4LCAxOTA1NywgOTI3NSwgMTkwNzAsIDE5MDc1LCAxOTA4MCwgMTkwODgsIDE5MDk1LCAxNDQ4MSwgCisgICAgMTQ0OTAsIDE5MTAyLCAxOTExMiwgMTkxMjcsIDE5MTMzLCAxOTE0MCwgMTkxNDcsIDE5MTUzLCAxOTE1OSwgMTkxNzAsIAorICAgIDE5MTc4LCAxOTE4NiwgMTkxOTYsIDE5MjA2LCAxNTgyMSwgMTkyMTUsIDE5MjIxLCAxOTIyNywgMTkyMzUsIDE5MjQzLCAKKyAgICAxOTI0OCwgMTkyNTcsIDE5MjY1LCAxOTI3NywgMTkyODcsIDE5Mjk3LCAxOTMwNywgMTkzMTYsIDE5MzI4LCAxOTMzOCwgCisgICAgMTkzNDgsIDE5MzU5LCAxOTM2NiwgMTkzNzEsIDE5MzgzLCAxOTM5NSwgMTk0MDcsIDE5NDE5LCAxOTQzMSwgMTk0NDMsIAorICAgIDE5NDU1LCAxOTQ2NywgMTk0NzksIDE5NDkxLCAxOTUwMiwgMTk1MTQsIDE5NTI2LCAxOTUzOCwgMTk1NTAsIDE5NTYyLCAKKyAgICAxOTU3NCwgMTk1ODYsIDE5NTk4LCAxOTYxMCwgMTk2MjIsIDE5NjMzLCAxOTY0NSwgMTk2NTcsIDE5NjY5LCAxOTY4MSwgCisgICAgMTk2OTMsIDE5NzA1LCAxOTcxNywgMTk3MjksIDE5NzQxLCAxOTc1MywgMTk3NjQsIDE5Nzc2LCAxOTc4OCwgMTk4MDAsIAorICAgIDE5ODEyLCAxOTgyNCwgMTk4MzYsIDE5ODQ4LCAxOTg2MCwgMTk4NzIsIDE5ODg0LCAxOTg5NSwgMTk5MDcsIDE5OTE5LCAKKyAgICAxOTkzMSwgMTk5NDMsIDE5OTU1LCAxOTk2NywgMTk5NzksIDE5OTkxLCAyMDAwMywgMjAwMTUsIDIwMDI2LCAyMDAzOCwgCisgICAgMjAwNTAsIDIwMDYyLCAyMDA3NCwgMjAwODYsIDIwMDk4LCAyMDExMCwgMjAxMjIsIDIwMTM0LCAyMDE0NiwgMjAxNTcsIAorICAgIDIwMTY5LCAyMDE4MSwgMjAxOTMsIDIwMjA1LCAyMDIxNywgMjAyMjksIDIwMjQxLCAyMDI1MywgMjAyNjUsIDIwMjc3LCAKKyAgICAyMDI4OCwgMjAzMDAsIDIwMzEyLCAyMDMyNCwgMjAzMzYsIDIwMzQ5LCAyMDM2MiwgMjAzNzUsIDIwMzg4LCAyMDQwMSwgCisgICAgMjA0MTQsIDIwNDI3LCAyMDQzOSwgMjA0NTIsIDIwNDY1LCAyMDQ3OCwgMjA0OTEsIDIwNTA0LCAyMDUxNywgMjA1MzAsIAorICAgIDIwNTQzLCAyMDU1NiwgMjA1NjksIDIwNTgxLCAyMDU5NCwgMjA2MDcsIDIwNjIwLCAyMDYzMywgMjA2NDYsIDIwNjU5LCAKKyAgICAyMDY3MiwgMjA2ODUsIDIwNjk4LCAyMDcxMSwgMjA3MjMsIDIwNzM2LCAyMDc0OSwgMjA3NjIsIDIwNzc1LCAyMDc4OCwgCisgICAgMjA4MDEsIDIwODE0LCAyMDgyNywgMjA4NDAsIDIwODUzLCAyMDg2NSwgMjA4NzgsIDIwODkxLCAyMDkwNCwgMjA5MTcsIAorICAgIDIwOTMwLCAyMDk0MywgMjA5NTYsIDIwOTY5LCAyMDk4MiwgMjA5OTUsIDIxMDA3LCAyMTAyMCwgMjEwMzMsIDIxMDQ2LCAKKyAgICAyMTA1OSwgMjEwNzIsIDIxMDg1LCAyMTA5OCwgMjExMTEsIDIxMTI0LCAyMTEzNywgMjExNDksIDIxMTYwLCAyMTE3MywgCisgICAgMjExODYsIDIxMTk5LCAyMTIxMiwgMjEyMjUsIDIxMjM4LCAyMTI1MSwgMjEyNjQsIDIxMjc3LCAyMTI5MCwgMjEzMDIsIAorICAgIDIxMzE1LCAyMTMyOCwgMjEzNDEsIDIxMzU0LCAyMTM2NywgMjEzODAsIDIxMzkzLCAyMTQwNiwgMjE0MTksIDIxNDMyLCAKKyAgICAyMTQ0NCwgMjE0NTcsIDIxNDcwLCAyMTQ4MywgMjE0OTYsIDIxNTA5LCAyMTUyMiwgMjE1MzUsIDIxNTQ4LCAyMTU2MSwgCisgICAgMjE1NzQsIDIxNTg2LCAyMTU5OSwgMjE2MTIsIDIxNjI1LCAyMTYzOCwgMjE2NTEsIDIxNjY0LCAyMTY3NywgMjE2OTAsIAorICAgIDIxNzAzLCAyMTcxNiwgMjE3MjgsIDIxNzQxLCAyMTc1NCwgMjE3NjcsIDIxNzgwLCAyMTc5MywgMjE4MDYsIDIxODE5LCAKKyAgICAyMTgzMiwgMjE4NDUsIDIxODU4LCAyMTg3MCwgMjE4ODMsIDIxODk2LCAyMTkwOSwgMjE5MjIsIDIxOTM1LCAyMTk0OCwgCisgICAgMjE5NjEsIDIxOTc0LCAyMTk4NywgMjIwMDAsIDIyMDEyLCAyMjAyNSwgMjIwMzgsIDIyMDUxLCAyMjA2NCwgMjIwNzcsIAorICAgIDIyMDkwLCAyMjEwMywgMjIxMTYsIDIyMTI5LCAyMjE0MiwgMjIxNTQsIDIyMTY3LCAyMjE4MCwgMjIxOTMsIDIyMjA2LCAKKyAgICAyMjIxOSwgMjIyMzIsIDIyMjQ1LCAyMjI1OCwgMjIyNzEsIDIyMjg0LCAyMjI5NiwgMjIzMDksIDIyMzIyLCAyMjMzNSwgCisgICAgMjIzNDgsIDIyMzYxLCAyMjM3NCwgMjIzODcsIDIyNDAwLCAyMjQxMywgMjI0MjYsIDIyNDM4LCAyMjQ1MSwgMjI0NjQsIAorICAgIDIyNDc3LCAyMjQ5MCwgMjI1MDMsIDIyNTE2LCAyMjUyOSwgMjI1NDIsIDIyNTU1LCAyMjU2OCwgMjI1ODAsIDIyNTkxLCAKKyAgICAyMjYwMCwgMjI2MDgsIDIyNjE2LCAyMjYyMywgMjI2MjksIDIyNjMzLCAyMjYzOSwgMjI2NDUsIDIyNjUzLCAyMjY1OCwgCisgICAgMjI2NjQsIDIyNjY5LCAyMjY3MywgMjI2ODIsIDk3NDQsIDIyNjkzLCAyMjcwMCwgMjI3MDgsIDIyNzE1LCAyMjcyMiwgCisgICAgMTIwNDYsIDIyNzI5LCAyMjczNiwgMjI3NDUsIDIyNzUwLCAyMjc1NSwgODE2OSwgMjI3NjIsIDIyNzY3LCAyMjc3MCwgCisgICAgMjI3NzUsIDIyNzgzLCAyMjc5MCwgMjI3OTcsIDIyODA0LCAyMjgxMCwgMjI4MTksIDIyODI4LCAyMjgzNywgMjI4NDMsIAorICAgIDIyODUxLCAyMjg2MCwgMjI4NjQsIDIyODcwLCAyMjg3NSwgMjI4ODUsIDIyODkyLCAyMjg5OCwgMjI5MDYsIDIyOTEyLCAKKyAgICAyMjkxOSwgMjI5MjksIDIyOTM4LCAyMjk0MiwgMjI5NDksIDIyOTUzLCAyMjk1OCwgMjI5NjQsIDIyOTcyLCAyMjk3NiwgCisgICAgMjI5ODYsIDE1ODMxLCAyMjk5NSwgMjMwMDEsIDIzMDA1LCAyMzAxNCwgMjMwMjQsIDE1ODM2LCAyMzAzMCwgMjMwMzcsIAorICAgIDIzMDQ4LCAyMzA1NiwgMjMwNjYsIDIzMDc1LCAyMzA4MywgOTQ5MywgMjMwOTEsIDIzMDk2LCAyMzEwMiwgMjMxMDcsIAorICAgIDIzMTExLCAyMzExNSwgMjMxMTksIDEwNDc3LCAyMzEyNCwgMjMxMzIsIDIzMTM5LCAyMzE0OCwgMjMxNTUsIDIzMTYyLCAKKyAgICAyMzE2OCwgMTE5NjYsIDIzMTc1LCAyMzE4MSwgMjMxODUsIDIzMTkxLCAyMzE5OCwgMjMyMDQsIDIzMjEyLCAyMzIxOCwgCisgICAgMjMyMjUsIDIzMjMxLCAyMzIzNywgMjMyNDYsIDIzMjUwLCAyMzI1OCwgMjMyNjcsIDIzMjc0LCAyMzI3OSwgMjMyODMsIAorICAgIDIzMjk0LCAyMzI5OSwgMjMzMDQsIDIzMzEwLCAyMzMxNSwgMjMzMjgsIDgzNzMsIDIzMzMyLCAyMzMzOCwgMjMzNDQsIAorICAgIDIzMzQ5LCAyMzM1NywgMjMzNjEsIDIzMzY4LCAyMzM3NywgMjMzODIsIDE2MTA3LCAyMzM5MCwgMjMzOTQsIDIzNDA2LCAKKyAgICAyMzQxMSwgMjM0MTUsIDIzNDE4LCAyMzQyNCwgMjM0MzAsIDIzNDM2LCAyMzQ0MSwgMjM0NDUsIDIzNDQ4LCAyMzQ1OSwgCisgICAgMjM0NjQsIDEwMDE2LCAyMzQ3MSwgMjM0NzYsIDEyMjQsIDEwMDIxLCAyMzQ4MSwgMjM0ODYsIDIzNDkxLCAyMzQ5NiwgCisgICAgMjM1MDEsIDIzNTA2LCAyMzUxMSwgMjM1MTYsIDIzNTIxLCAyMzUyNiwgMjM1MzEsIDIzNTM2LCAyMzU0MiwgMjM1NDcsIAorICAgIDIzNTUyLCAyMzU1NywgMjM1NjIsIDIzNTY3LCAyMzU3MiwgMjM1NzcsIDIzNTgyLCAyMzU4NywgMjM1OTMsIDIzNTk5LCAKKyAgICAyMzYwNCwgMjM2MDksIDIzNjE0LCAyMzYxOSwgMjM2MjQsIDIzNjI5LCAyMzYzNCwgMjM2MzksIDIzNjQ0LCAyMzY1MCwgCisgICAgMjM2NTUsIDIzNjYwLCAyMzY2NSwgMjM2NzEsIDIzNjc3LCAyMzY4MiwgMjM2ODcsIDIzNjkyLCAyMzY5NywgMjM3MDIsIAorICAgIDIzNzA3LCAyMzcxMiwgMjM3MTcsIDIzNzIzLCAyMzcyOCwgMjM3MzMsIDIzNzM4LCAyMzc0MywgMjM3NDksIDIzNzU0LCAKKyAgICAyMzc1OSwgMjM3NjMsIDEzMzAsIDE0MCwgMjM3NzEsIDIzNzc1LCAyMzc3OSwgMjM3ODMsIDIzNzg4LCAyMzc5MiwgMTQzOTEsIAorICAgIDIzMzEsIDIzNzk2LCAyMzgwMSwgMjM4MDUsIDIzODEwLCAyMzgxNCwgMjM4MTksIDIzODIzLCAyMzgyOSwgMjM4MzQsIAorICAgIDIzODM4LCAyMzg0MiwgMjM4NTAsIDIzODU0LCAyMzg1OCwgMjM4NjMsIDIzODY4LCAyMzg3MiwgMjM4NzgsIDIzODgzLCAKKyAgICAyMzg4NywgMjM4OTIsIDIzODk3LCAyMzkwMSwgMjM5MDgsIDIzOTE1LCAyMzkyMiwgMjM5MjcsIDIzOTMxLCAyMzkzNSwgCisgICAgMjM5NDAsIDIzOTQ0LCAyMzk0NywgMjM5NTMsIDIzOTY2LCAyMzk3MSwgMjM5NzcsIDIzOTg2LCAyMzk5MSwgMTAyNDEsIAorICAgIDIzOTk2LCAyNDAwNSwgMjQwMTAsIDI0MDEzLCAyNzQwLCAyNzQ1LCAyNDAxNywgMjQwMjMsIDI0MDI5LCAzNjUwLCAyNDAzNCwgCisgICAgMjQwMzksIDI0MDQ0LCAyNDA1MCwgMjQwNTUsIDE1MjUxLCAyNDA2MCwgMjQwNjUsIDI0MDcwLCAyNDA3NSwgMjQwODEsIAorICAgIDI0MDg2LCAyNDA5MSwgMjQwOTcsIDI0MTAyLCAyNDEwNiwgMjQxMTEsIDI0MTE2LCAyNDEyMSwgMjQxMjYsIDI0MTMxLCAKKyAgICAyNDEzNSwgMjQxNDAsIDI0MTQ0LCAyNDE0OSwgMjQxNTQsIDI0MTU5LCAyNDE2NCwgMjQxNjgsIDI0MTczLCAyNDE3NywgCisgICAgMjQxODIsIDI0MTg3LCAyNDE5MiwgMjQxMDcsIDI5MzQsIDI0MTEyLCAyNDE5NywgMjQyMDUsIDI0MjEyLCAxMDU3MSwgCisgICAgMjQyMjQsIDI0MjMyLCAyNDI0MiwgMjQyNjAsIDI0Mjc5LCAyNDI4OCwgMjQyOTYsIDI0MTE3LCAyNDMwMywgMjQzMDgsIAorICAgIDI0MzE2LCAyNDEyMiwgMjQzMjEsIDI0MzI2LCAyNDMzNCwgMjQzMzksIDI0MTI3LCAyNDM0NCwgMjQzNTIsIDI0MzU3LCAKKyAgICAyNDM2MSwgMjQzNjgsIDI0Mzc0LCAyNDM4MywgMjQzOTEsIDI0Mzk1LCAyNDM5OCwgMjQ0MDUsIDI0NDA5LCAyNDQxMywgCisgICAgMjQ0MTgsIDI0NDI0LCAyNDQzMSwgMjQ0MzYsIDk1MjAsIDE3MjMsIDE3MjgsIDI0NDQwLCAyNDQ0NiwgMjQ0NTIsIDI0NDU3LCAKKyAgICAyNDQ2MSwgMjQ0NjUsIDI0NDY5LCAyNDQ3MywgMjQ0NzcsIDI0NDgxLCAyNDQ4NSwgMjQ0ODksIDI0NDkyLCAyNDQ5OCwgCisgICAgMjQ1MDUsIDI0NTEzLCAyNDUxOSwgMjQ1MjUsIDI0NTMwLCAyNDUzNSwgMjQ1NDEsIDI0NTQ1LCAyNDU1MCwgMTUxNTcsIAorICAgIDE1MTY0LCAyNDU1NywgMjQ1NjksIDI0NTcyLCAyNDU3OSwgMjQ1ODMsIDE4MDQ1LCAyNDU5MCwgMjQ1OTgsIDI0NjA5LCAKKyAgICAyNDYxOCwgMjQ2MzEsIDI0NjQxLCAyNDY1NSwgMjQ2NjcsIDI0NjgxLCAyNDY5NCwgMjQ3MDYsIDI0NzE2LCAyNDcyOCwgCisgICAgMjQ3MzQsIDI0NzQwLCAyNDc1NSwgMjQ3NzksIDI0Nzk3LCAyNDgxNiwgMjQ4MjksIDI0ODQzLCAyNDg2MSwgMjQ4NzcsIAorICAgIDI0ODk0LCAyNDkxMiwgMjQ5MjMsIDI0OTQyLCAyNDk1OSwgMjQ5NzksIDI0OTk3LCAyNTAwOSwgMjUwMjMsIDI1MDM3LCAKKyAgICAyNTA0OSwgMjUwNjYsIDI1MDg1LCAyNTEwMywgMjUxMTUsIDI1MTMzLCAyNTE1MiwgMTU5NzUsIDI1MTY1LCAyNTE4NSwgCisgICAgMjUxOTcsIDExNTQ2LCAyNTIwOSwgMjUyMTQsIDI1MjE5LCAyNTIyNCwgMjUyMzAsIDI1MjM1LCAyNTIzOSwgMjUyNDYsIAorICAgIDI1MjUyLCAyNDIyLCAyNTI1NiwgMjUyNjIsIDI1MjY2LCAyNTI2OSwgMjUyODAsIDI1Mjg0LCAyNTI4NywgMjUyOTUsIAorICAgIDI1MzAxLCAyNDE0NSwgMjUzMDUsIDI1MzE0LCAyNTMyNSwgMjUzMzEsIDI1MzM3LCAyNTM1MiwgMjUzNjEsIDI1MzY5LCAKKyAgICAyNTM3NiwgMjUzODEsIDI1Mzg1LCAyNTM5MiwgMjUzOTgsIDI1NDA3LCAyNTQxNSwgMjU0MjIsIDI1NDMyLCAyNTQ0MSwgCisgICAgMjU0NTEsIDI1NDU2LCAyNTQ2NSwgMjU0NzQsIDI1NDg1LCAyNTQ5NiwgNDIwNiwgMjU1MDYsIDI1NTEwLCAyNTUyMCwgCisgICAgMjU1MjgsIDI1NTM4LCAyNTU0OSwgMjU1NTQsIDI1NTY0LCAyNTU3MiwgMjU1NzksIDI1NTg1LCAyNTU5MiwgMjU1OTcsIAorICAgIDI0MTU1LCAyNTYwMSwgMjU2MTAsIDI1NjE0LCAyNTYxNywgMjU2MjIsIDI1NjMwLCAyNTYzNywgMjU2NDYsIDI1NjU0LCAKKyAgICAyNTY2MiwgMjU2NzAsIDI1NjgwLCAyNTY4OSwgMjU2OTUsIDI1NzAxLCAyNTcwNSwgMjQxNjAsIDI0MTY1LCAyNTcwOSwgCisgICAgMjU3MTksIDI1NzI5LCAyNTczOSwgMjU3NDcsIDI1NzU0LCAyNTc2NCwgMjU3NzIsIDI1NzgwLCAyNTc4NiwgMjU3OTQsIAorICAgIDg3MiwgMjU4MDMsIDE2MTg4LCA1NTcsIDI1ODE3LCAyNTgyNiwgMjU4MzQsIDI1ODQ1LCAyNTg1NiwgMjU4NjYsIDI1ODc1LCAKKyAgICAyNTg4NywgMjU4OTYsIDI1OTA1LCAyNTkxMiwgMjU5MTgsIDI1OTI4LCAyNTkzNywgMjU5NDYsIDI1OTU0LCAyNTk2NCwgCisgICAgMjU5NzIsIDI1OTgwLCA5OTgyLCAyNTk4NiwgMjU5ODksIDI1OTkzLCAyNTk5OCwgMjYwMDMsIDI2MDA3LCAxMDY4NiwgCisgICAgMjQxNzgsIDI0MTgzLCAyNjAxNSwgMjYwMjEsIDI2MDI3LCAyNjAzMiwgMjYwMzcsIDI2MDQxLCAyNjA0OSwgMjYwNTUsIAorICAgIDI2MDYxLCAyNjA2NSwgMzY3NCwgMjYwNzMsIDI2MDc4LCAyNjA4MywgMjYwODcsIDI2MDkxLCAxMDc5OSwgMjYwOTgsIAorICAgIDI2MTA2LCAyNjEyMCwgMjYxMjcsIDI2MTMzLCAxMDgwOCwgMTA4MTQsIDI2MTQxLCAyNjE0OSwgMjYxNTYsIDI2MTYxLCAKKyAgICAyNjE2NiwgMjQxODgsIDI2MTcyLCAyNjE4MywgMjYxODcsIDI2MTkyLCAyNjI5LCAyNjE5NywgMjYyMDgsIDI2MjE0LCAKKyAgICAyNjIxOSwgMjYyMjMsIDI2MjI3LCAyNjIzMCwgMjYyMzcsIDI2MjQ0LCAyNjI1MCwgMjYyNTcsIDI2MjYzLCAyNjI2NywgCisgICAgMjQxOTMsIDI2MjcyLCAyNjI3NiwgMjYyODAsIDE0MTIsIDg1ODUsIDI2Mjg1LCAyNjI5MCwgMjYyOTUsIDI2MzAwLCAKKyAgICAyNjMwNSwgMjYzMTAsIDI2MzE1LCAyNjMyMCwgMjYzMjUsIDI2MzMwLCAyNjMzNSwgMjYzNDAsIDI2MzQ1LCAyNjM1MCwgCisgICAgMjYzNTYsIDI2MzYxLCAyNjM2NiwgMjYzNzEsIDI2Mzc2LCAyNjM4MSwgMjYzODYsIDI2MzkyLCAyNjM5NywgMjY0MDIsIAorICAgIDI2NDA3LCAyNjQxMiwgMjY0MTcsIDI2NDIyLCAyNjQyNywgMjY0MzMsIDI2NDM5LCAyNjQ0NCwgMjY0NTAsIDI2NDU1LCAKKyAgICAyNjQ2MCwgNSwgMjY0NjYsIDI2NDcwLCAyNjQ3NCwgMjY0NzgsIDI2NDgzLCAyNjQ4NywgMjY0OTEsIDI2NDk1LCAyNjQ5OSwgCisgICAgMjY1MDQsIDI2NTA4LCAyNjUxMywgMjY1MTcsIDI2NTIwLCAyNjUyNCwgMjY1MjksIDI2NTMzLCAyNjUzOCwgMjY1NDIsIAorICAgIDI2NTQ2LCAyNjU1MCwgMjY1NTUsIDI2NTU5LCAyNjU2MywgMjY1NzMsIDI2NTc4LCAyNjU4MiwgMjY1ODYsIDI2NTkxLCAKKyAgICAyNjU5NiwgMjY2MDUsIDI2NjEwLCAyNjYxNSwgMjY2MTksIDI2NjIzLCAyNjYzNiwgMjY2NDgsIDI2NjU3LCAyNjY2NiwgCisgICAgMjY2NzEsIDI2Njc3LCAyNjY4MiwgMjY2ODYsIDI2NjkwLCAyNjcwMCwgMjY3MDksIDI2NzE3LCAyNjcyMywgMjY3MjgsIAorICAgIDI2NzMyLCAyNjczOSwgMjY3NDksIDI2NzU4LCAyNjc2NiwgMTE4NjgsIDI2Nzc0LCAyNjc4MiwgMjY3OTEsIDI2ODAwLCAKKyAgICAyNjgwOCwgMjY4MTgsIDI2ODIzLCAyNjgyNywgMjY4MzEsIDI2ODM0LCAyNjgzNiwgMjY4NDAsIDI2ODQ0LCAyNjg0OSwgCisgICAgMjY4NTQsIDI2ODU4LCAyNjg2MiwgMjY4NjUsIDI2ODY5LCAyNjg3MiwgMjY4NzYsIDI2ODc5LCAyNjg4MiwgMjY4ODYsIAorICAgIDI2ODkyLCAyNjg5NiwgMjY5MDAsIDI2OTA0LCAyNjkwOCwgMjY5MTMsIDI2OTE4LCAyNjkyMywgMjY5MjcsIDI2OTMwLCAKKyAgICAyNjkzNSwgMjY5NDEsIDI2OTQ2LCAyNjk1MiwgMjY5NTcsIDI2OTYxLCAyNjk2NywgMjY5NzEsIDI2OTc1LCAyNjk4MCwgCisgICAgMjY5ODQsIDI2OTg5LCAyNjk5NCwgMjY5OTgsIDI3MDAyLCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyMCwgMjcwMjQsIAorICAgIDI3MDMwLCAyNzAzNiwgMjcwNDAsIDI3MDQ0LCAyNzA0OSwgMjcwNTYsIDI3MDYyLCAyNzA2NiwgMjcwNzUsIDI3MDc5LCAKKyAgICAyNzA4MywgMjcwODYsIDI3MDkyLCAyNzA5NywgMjcxMDMsIDE0NTYsIDE3ODcsIDI3MTA4LCAyNzExMywgMjcxMTgsIAorICAgIDI3MTIzLCAyNzEyOCwgMjcxMzMsIDI3MTM4LCAyMTU5LCAyMjA1LCAyNzE0MywgMjcxNDYsIDI3MTUwLCAyNzE1NCwgCisgICAgMjcxNTksIDI3MTYzLCAxNjIwMCwgMjcxNjcsIDI3MTcyLCAyNzE3NywgMjcxODEsIDI3MTg0LCAyNzE4OSwgMjcxOTMsIAorICAgIDI3MTk4LCAyNzIwMiwgMTYyMDQsIDI3MjA3LCAyNzIxMCwgMjcyMTMsIDI3MjE3LCAyNzIyMiwgMjcyMjYsIDI3MjM5LCAKKyAgICAyNzI0MywgMjcyNDYsIDI3MjU0LCAyNzI2MywgMjcyNzAsIDI3Mjc1LCAyNzI4MSwgMjcyODcsIDI3Mjk1LCAyNzMwMiwgCisgICAgMjczMDksIDI3MzEzLCAyNzMxNywgMjczMjEsIDI3MzI2LCAyNzMzMSwgMjczMzUsIDI3MzQzLCAyNzM0OCwgMjczNjAsIAorICAgIDI3MzcxLCAyNzM3NiwgMjczODAsIDI3Mzg3LCAyNzM5MSwgMjczOTYsIDI3NDAyLCAyNzQwNSwgMjc0MTAsIDI3NDE1LCAKKyAgICAyNzQxOSwgMjc0MjMsIDI3NDI2LCAyNzQzMiwgODI3MiwgMjMzNSwgMjc0MzYsIDI3NDQxLCAyNzQ1NywgMTAyODgsIAorICAgIDI3NDc3LCAyNzQ4NiwgMjc1MDIsIDI3NTA2LCAyNzUxMywgMjc1MTYsIDI3NTIyLCAyNzUzMiwgMjc1MzgsIDI3NTQ3LCAKKyAgICAyNzU2MiwgMjc1NzQsIDI3NTg1LCAyNzU5MywgMjc2MDIsIDI3NjA4LCAyNzYxNywgMjc2MjcsIDI3NjM3LCAyNzY0OCwgCisgICAgMjc2NTksIDI3NjY5LCAyNzY3OCwgMjc2ODUsIDI3Njk0LCAyNzcwMiwgMjc3MDksIDI3NzE3LCAyNzcyNCwgMjc3MzEsIAorICAgIDI3NzQ0LCAyNzc1MSwgMjc3NTksIDI3NzY2LCAyNzc3MiwgMjc3NzcsIDI3Nzg2LCAyNzc5MywgMjc3OTksIDI3ODA0LCAKKyAgICAyNzgxMiwgMjc4MTksIDI3ODI2LCAyNTUzMCwgMjc4MzgsIDI3ODUwLCAyNzg2NCwgMjc4NzIsIDI3ODgwLCAyNzg4NywgCisgICAgMjc4OTksIDI3OTA4LCAyNzkxNywgMjc5MjUsIDI3OTMzLCAyNzk0MSwgMjc5NDgsIDI3OTU0LCAyNzk2MywgMjc5NzEsIAorICAgIDI3OTgxLCAyNzk5MCwgMjgwMDAsIDI4MDA5LCAyODAxOCwgMjgwMjYsIDI4MDMxLCAyODAzNSwgMjgwMzgsIDI4MDQyLCAKKyAgICAyODA0NiwgMjgwNTAsIDI4MDU0LCAyODA1OCwgMjgwNjQsIDI4MDcwLCAyODA3NSwgMjgwODMsIDE2MjYyLCAyODA5MCwgCisgICAgMjgwOTUsIDI4MTAyLCAyODEwOCwgMjgxMTUsIDE2MjcwLCAyODEyMiwgMjgxMjUsIDI4MTM3LCAyODE0NSwgMjgxNTEsIAorICAgIDI4MTU2LCAyODE2MCwgMjgxNzEsIDEwNzQ5LCAyODE4MSwgMjgxODksIDI4MTk5LCAyODIwOCwgMjgyMTUsIDI4MjIyLCAKKyAgICAyODIzMCwgMjgyMzQsIDE2MjgxLCAyODIzNywgMjgyNDQsIDI4MjQ4LCAyODI1NCwgMjgyNTcsIDI4MjY0LCAyODI3MCwgCisgICAgMjgyNzUsIDI4MjgyLCAyODI4OCwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgMjgzMTAsIDI4MzE3LCAyODMyMywgODMzMCwgCisgICAgMjgzMzAsIDI4MzM4LCAyODM0NSwgMjgzNTEsIDI4MzU2LCAyODM2MiwgMjgzNjgsIDI4Mzc2LCAyODM4MiwgMjgzODYsIAorICAgIDI4Mzg5LCAyODM5MSwgMjgwNDMsIDI4NDAwLCAyODQwNiwgMjg0MTIsIDI4NDIyLCAyODQyNywgMjg0MzQsIDI4NDQwLCAKKyAgICAyODQ0NSwgMjg0NTAsIDI4NDU1LCAyODQ1OSwgMjg0NjQsIDI4NDcxLCAyODQ3NywgMjg0ODYsIDI4NDkwLCAyODQ5NywgCisgICAgMjg1MDMsIDI4NTEyLCA0Mzk4LCAyODUxOCwgMjg1MjQsIDI4NTI5LCAyODUzNiwgMjg1NDcsIDI4NTUyLCAyODU1NiwgCisgICAgMjg1NjYsIDI4NTcyLCAyODU3NiwgMjg1ODEsIDI4NTkxLCAyODYwMCwgMjg2MDQsIDI4NjExLCAyODYxOSwgMjg2MjYsIAorICAgIDI4NjMyLCAyODYzNywgMjg2NDUsIDI4NjUyLCAyODY1NywgMjg2NjQsIDI4Njc2LCAyODY4NSwgMjg2ODksIDE0MzIyLCAKKyAgICAyODY5NywgMjg3MDcsIDI4NzExLCAyNzI1MCwgMjg3MjIsIDI4NzI3LCAyODczMSwgMjg3MzgsIDI4NzQ1LCAyMzg3NCwgCisgICAgMjc5NjgsIDI4NzUwLCAyODc1NCwgMjg3NTcsIDI0OTI5LCAyODc2MiwgMjg3NzYsIDI4NzkyLCAyODgxMCwgMjg4MjksIAorICAgIDI4ODQ2LCAyODg2NCwgMjQ5NDgsIDI4ODgxLCAyODkwMSwgMjQ5NjUsIDI4OTEzLCAyODkyNSwgMTczMTQsIDI4OTM3LCAKKyAgICAyNDk4NSwgMjg5NTEsIDI4OTYzLCAxMTU1OSwgMjg5NzcsIDI4OTgyLCAyODk4NywgMjg5OTIsIDI4OTk4LCAyOTAwNCwgCisgICAgMjkwMTAsIDI5MDE0LCAyOTAyMiwgMjkwMjksIDI5MDM0LCAyOTA0NCwgMjkwNTAsIDExMTU3LCAyOTA1NiwgMjkwNTgsIAorICAgIDI5MDYzLCAyOTA3MSwgMjkwNzUsIDI4NDY3LCAyOTA4MSwgMjkwODgsIDEyNzExLCAxMjcyMSwgMjkwOTUsIDI5MTA1LCAKKyAgICAyOTExMCwgMjkxMTQsIDI5MTE3LCAyOTEyMywgMjkxMzEsIDI5MTQzLCAyOTE1MywgMjkxNjksIDI5MTgyLCAyOTE5NiwgCisgICAgMTczMzIsIDI5MjEwLCAyOTIxNywgMjkyMjEsIDI5MjI0LCAyOTIyOSwgMjkyMzMsIDI5MjQwLCAyOTI0NywgMjkyNTQsIAorICAgIDI5MjY0LCAyOTI2OSwgMjkyNzQsIDI5Mjc5LCAyOTI4NywgMjkyOTUsIDI5MzAwLCAyOTMwOSwgMjkzMTQsIDMzNDIsIAorICAgIDI5MzE4LCAyOTMyMSwgMjkzMjQsIDI5MzI5LCAyOTMzNiwgMjkzNDEsIDI5MzU3LCAyOTM2NSwgMjkzNzMsIDEwMDU2LCAKKyAgICAyOTM4MSwgMjkzODYsIDI5MzkwLCAyOTM5NiwgMjk0MDEsIDI5NDA3LCAyOTQxMCwgMjk0MTYsIDI5NDI4LCAyOTQzNiwgCisgICAgMjk0NDMsIDI5NDQ5LCAyOTQ1NiwgMjk0NjcsIDI5NDgxLCAyOTQ5NCwgMjk1MDAsIDI5NTA5LCAyOTUxNSwgMjk1MjQsIAorICAgIDI5NTM2LCAyOTU0NywgMjk1NTcsIDI5NTY2LCAyOTU3NSwgMjk1ODMsIDI5NTk0LCA4MzEyLCAyOTYwMSwgMjk2MDgsIAorICAgIDI5NjE0LCAyOTYxOSwgMjk2MjUsIDI5NjMyLCAyOTY0MywgMjk2NTMsIDI5NjYzLCAyOTY3MiwgMjk2NzgsIDI5Njg1LCAKKyAgICAyOTY5MCwgMjk2OTgsIDI5NzA1LCAyOTcxMywgMjk3MjEsIDI5NzMzLCA2NTg3LCAxMDI4LCAyOTc0MCwgMjk3NDksIAorICAgIDI5NzU3LCAyOTc2MywgMjk3NjksIDI5Nzc0LCAyOTc3OCwgMjk3ODEsIDI5Nzg3LCAyOTc5NCwgMjk3OTksIDI5ODA0LCAKKyAgICAyOTgwOSwgMjk4MTMsIDI5ODI1LCAyOTgzNiwgMjk4NDUsIDI5ODUzLCAxNjQ0NiwgMjk4NTgsIDI5ODY2LCAyOTg3MSwgCisgICAgMjk4NzcsIDI5ODgzLCAxMjcwNCwgOTEwMywgMjk4ODgsIDI5ODkyLCAyOTg5NiwgMjk4OTksIDI5OTAyLCAyOTkwOCwgCisgICAgMjk5MTYsIDI5OTI0LCAyOTkyOCwgMjk5MzIsIDI5OTM3LCAyOTk0MCwgMjk5NDksIDI5OTUzLCAyOTk1NiwgMjk5NjQsIAorICAgIDI5OTc1LCAyOTk3OSwgMjk5ODUsIDI5OTkxLCAyOTk5NSwgMzAwMDEsIDMwMDA5LCAzMDAzMSwgMzAwNTUsIDMwMDY0LCAKKyAgICAzMDA3MSwgMzAwNzgsIDMwMDg0LCAzMDA5MiwgMzAwOTgsIDMwMTAzLCAzMDExNCwgMzAxMzIsIDMwMTM5LCAzMDE0NywgCisgICAgMzAxNTEsIDMwMTU2LCAzMDE2NSwgMzAxNzgsIDMwMTg2LCAzMDE5OCwgMzAyMDksIDMwMjIwLCAzMDIzMCwgMzAyNDQsIAorICAgIDMwMjUzLCAzMDI2MSwgMzAyNzMsIDEwMzA1LCAzMDI4NCwgMzAyOTUsIDMwMzA3LCAzMDMxNywgMzAzMjYsIDMwMzMxLCAKKyAgICAzMDMzNSwgMzAzNDMsIDMwMzU0LCAzMDM2NCwgMzAzNjksIDMwMzczLCAzMDM3NiwgMzAzNzksIDMwMzg3LCAzMDM5NSwgCisgICAgMzA0MDQsIDMwNDE0LCAzMDQyMywgMzA0MjksIDMwNDQzLCAyNjkxLCAzMDQ2NSwgMzA0NzYsIDMwNDg1LCAzMDQ5NSwgCisgICAgMzA1MDcsIDMwNTE2LCAzMDUyNSwgMzA1MzUsIDMwNTQzLCAzMDU1MSwgMzA1NjAsIDMwNTY1LCAzMDU3NiwgMzA1ODEsIAorICAgIDMwNTkwLCAzMDYwMSwgMzA2MDUsIDMwNjA4LCAzMDYxOCwgMzA2MjcsIDMwNjM1LCAzMDY0NSwgMzA2NTUsIDMwNjYzLCAKKyAgICAzMDY3MiwgMzA2NzksIDMwNjg3LCAzMDY5NCwgMzA3MDMsIDMwNzEyLCAzMDcxNywgMzA3MjEsIDMwNzI5LCAzMDczNiwgCisgICAgMzA3NDQsIDMwNzUxLCAzMDc2MiwgMzA3NzcsIDMwNzg0LCAzMDc5MCwgMzA4MDAsIDMwODA5LCAzMDgxNSwgMzA4MjYsIAorICAgIDMwODMwLCAzMDgzNywgMzA4NDEsIDMwODQ3LCAxNTM4MiwgMzA4NTMsIDMwODU3LCAzMDg2MiwgMzA4NjgsIDMwODc1LCAKKyAgICAzMDg3OSwgMzA4ODMsIDMwODkxLCAzMDg5OSwgMzA5MDUsIDMwOTE0LCAzMDkyMSwgMzA5MjYsIDMwOTMxLCAzMDk0MSwgCisgICAgMjU1OTksIDMwOTQ1LCAzMDk0OCwgMzA5NTMsIDMwOTU4LCAzMDk2MywgMzA5NjgsIDMwOTczLCAzMDk3OCwgMzA5ODMsIAorICAgIDMwOTg4LCAzMDk5NCwgMzA5OTksIDMxMDA0LCAzMTAxMCwgMTE4MCwgNjc2LCAzMTAxNSwgMzEwMjQsIDIzODMsIDMxMDMxLCAKKyAgICAzMTAzNiwgMzEwNDAsIDMxMDQ2LCAxMjI5LCA1OTEsIDMxMDUxLCAyOTYsIDMxMDU1LCAzMTA2NCwgMzEwNzIsIDMxMDgxLCAKKyAgICAzMTA4OSwgMzExMDAsIDMxMTA4LCAzMTExNywgMzExMjUsIDMxMTMwLCAxMDg5NSwgMzExMzQsIDMxMTQyLCAzMTE1MCwgCisgICAgMzExNTUsIDE2MjE3LCAzODIzLCAzMTE2MSwgMzExNjcsIDMxMTczLCA2MTY4LCAzMTE3OCwgMzExODIsIDMxMTg4LCAKKyAgICAzMTE5MiwgMzExOTgsIDMxMjAzLCAzMTIxMCwgMTQyMiwgMzEyMTYsIDMxMjIzLCAzMTIyNywgMTMyOSwgNjE3NiwgMzEyMzIsIAorICAgIDMxMjQyLCAzMTI1MCwgMzEyNTYsIDMxMjY2LCAzMTI3NSwgMzEyODMsIDMxMjg5LCAzMTI5NCwgMzEzMDIsIDMxMzA5LCAKKyAgICAxMjI0NiwgMzEzMTUsIDMxMzIyLCAzMTMyNywgMzEzMzQsIDE0NzUsIDIyNSwgMjE1OCwgMzEzNDAsIDMxMzQ2LCAzMTM1MywgCisgICAgMzEzNjQsIDMxMzc1LCAzMTM4MywgMzEzOTAsIDMxNDAwLCAzMTQwOSwgMzE0MTcsIDMxNDI2LCAzMTQzMywgMzE0NDAsIAorICAgIDMxNDUzLCAzMTQ2MCwgMzE0NjYsIDMxNDc3LCAzMTQ5NiwgMTIzNCwgMzE1MDEsIDMxNTA2LCAzMTUxNCwgMzc0MSwgCisgICAgMzE1MTgsIDMxNTIzLCAzMTUyNywgMzE1MzEsIDE0MjYsIDI2ODYzLCAzMTU0MSwgMzE1NDUsIDMxNTUwLCAzMTU1NCwgCisgICAgMzYwOCwgMzE1NjAsIDMxNTY4LCAzMTU3NSwgMzE1ODYsIDMxNTk0LCAzMTYxOSwgMzE2MjcsIDMxNjMyLCAzNzQyLCAzNTIsIAorICAgIDMxNjM4LCAzMTY0NiwgMzE2NTQsIDMxNjYxLCAzMTY2NywgMzE2NzIsIDIyMjcsIDExNzI2LCAzMTY3OSwgMzE2ODUsIAorICAgIDI4MjkzLCAyODU0MiwgMzE2OTEsIDU4NywgMTA2LCAzMTY5NSwgMzE2OTksIDMxNzA1LCA2ODksIDk5MzEsIDMxNzEwLCAKKyAgICAzMTcxNywgMzE3MjMsIDMxNzI3LCAzMTczMSwgMTYyMCwgMzE3MzQsIDMxNzM4LCAxNjY5OSwgMzE3NDEsIDMxNzQ2LCAKKyAgICAzMTc1MywgMzE3NTksIDMxNzY0LCAzMTc3MiwgMzE3NzksIDMxNzg1LCAyNDM0MSwgMzE3ODksIDMxNzkzLCAzMTc5NywgCisgICAgMzgxMiwgMTgzNDQsIDMxODAxLCAzMTgwNiwgMzE4MTAsIDMxODEzLCAzMTgyMSwgMzE4MjksIDMxODM0LCAzMTg0MywgCisgICAgMzE4NTEsIDMxODU0LCAzMTg2MSwgMzE4NzEsIDMxODgzLCAzMTg4OCwgMzE4OTIsIDMxOTAwLCAzMTkwNywgMzE5MTMsIAorICAgIDMxOTIwLCAzMTkyNywgMzE5MzAsIDMxOTM0LCAzMTkzOCwgMTQzMCwgMzE5NDgsIDMxOTUwLCAzMTk1NSwgMzE5NjEsIAorICAgIDMxOTY3LCAzMTk3MiwgMzE5NzcsIDMxOTgyLCAzMTk4NywgMzE5OTIsIDMxOTk3LCAzMjAwMiwgMzIwMDcsIDMyMDEyLCAKKyAgICAzMjAxNywgMzIwMjIsIDMyMDI3LCAzMjAzMiwgMzIwMzcsIDMyMDQzLCAzMjA0OSwgMzIwNTUsIDMyMDYxLCAzMjA2NiwgCisgICAgMzIwNzEsIDMyMDc2LCAzMjA4MiwgMzIwODcsIDMyMDkyLCAzMjA5NywgMzIxMDMsIDMyMTA4LCAzMjExNCwgMzIxMTksIAorICAgIDMyMTI0LCAzMjEyOSwgMzIxMzQsIDMyMTQwLCAzMjE0NSwgMzIxNTEsIDMyMTU2LCAzMjE2MSwgMzIxNjYsIDMyMTcxLCAKKyAgICAzMjE3NywgMzIxODIsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOCwgMzIyMTMsIDMyMjE4LCAzMjIyMywgCisgICAgMzIyMjgsIDMyMjMzLCAzMjIzOSwgMzIyNDUsIDMyMjUxLCAzMjI1NiwgMzIyNjEsIDMyMjY2LCAzMjI3MSwgMzIyNzcsIAorICAgIDMyMjgzLCAzMjI4OSwgMzIyOTUsIDMyMzAxLCAzMjMwNywgMzIzMTIsIDMyMzE4LCAzMjMyMywgMzIzMjgsIDMyMzMzLCAKKyAgICAzMjMzOCwgMzIzNDQsIDI0NjcsIDMyMzQ5LCAyNDc0LCAyNDgxLCAyNzgyLCAzMjM1NCwgMjQ4NywgMjQ5NywgMzIzNjAsIAorICAgIDMyMzY0LCAzMjM2OSwgMzIzNzQsIDMyMzgwLCAzMjM4NSwgMzIzOTAsIDMyMzk0LCAzMjM5OSwgMzI0MDUsIDMyNDEwLCAKKyAgICAzMjQxNSwgMzI0MjAsIDMyNDI2LCAzMjQzMSwgMzI0MzUsIDMyNDM5LCAzMjQ0NCwgMzI0NDksIDMyNDU0LCAzMjQ1OSwgCisgICAgMzI0NjQsIDMyNDcwLCAzMjQ3NiwgMzI0ODEsIDMyNDg1LCAzMjQ5MCwgMzI0OTYsIDMyNTAwLCAzMjUwNSwgMzI1MTAsIAorICAgIDMyNTE1LCAzMjUyMCwgMzI1MjQsIDMyNTI3LCAzMjUzMiwgMzI1MzcsIDMyNTQyLCAzMjU0NywgMzI1NTIsIDMyNTU4LCAKKyAgICAzMjU2NCwgMzI1NjksIDMyNTc0LCAzMjU3OSwgMzI1ODMsIDMyNTg4LCAzMjU5MywgMzI1OTgsIDMyNjAzLCAzMjYwOCwgCisgICAgMzI2MTMsIDMyNjE3LCAzMjYyMiwgMzI2MjcsIDMyNjMyLCAzMjYzNiwgMzI2NDAsIDMyNjQ0LCAzMjY0OSwgMzI2NTcsIAorICAgIDMyNjYyLCAzMjY2NywgMzI2NzMsIDMyNjc5LCAzMjY4NSwgMzI2OTAsIDMyNjk0LCAzMjY5NywgMzI3MDIsIDMyNzA3LCAKKyAgICAzMjcxMSwgMzI3MTYsIDMyNzIxLCAzMjcyNSwgMzI3MzAsIDMyNzM0LCAzMjczNywgMzI3NDIsIDM5MTksIDE5MDgzLCAKKyAgICAzMjc0NywgMzI3NTIsIDMyNzU3LCAzMjc2NSwgMjMxNTEsIDMxMjIwLCA5NjAxLCAzMjc3MCwgMzI3NzUsIDMyNzc5LCAKKyAgICAzMjc4NCwgMzI3ODgsIDMyNzkyLCAzMjc5NywgMzI4MDEsIDMyODA0LCAzMjgwNywgMzI4MTEsIDMyODE2LCAzMjgyMCwgCisgICAgMzI4MjgsIDMyODMyLCAzMjgzNSwgMzI4NDAsIDMyODQ0LCAzMjg0OCwgMzI4NTMsIDMyODU4LCAzMjg2MiwgMzI4NjgsIAorICAgIDMyODczLCAzMjg3OCwgMzI4ODUsIDMyODkyLCAzMjg5NiwgMzI4OTksIDMyOTA1LCAzMjkxNCwgMzI5MjEsIDMyOTI5LCAKKyAgICAzMjkzNiwgMzI5NDAsIDMyOTQ1LCAzMjk0OSwgMzI5NTMsIDMyOTU5LCAzMjk2NSwgMzI5NjksIDMyOTc1LCAzMjk4MCwgCisgICAgMzI5ODUsIDMyOTg5LCAzMjk5NiwgMzMwMDIsIDMzMDA4LCAzMzAxNCwgMzMwMjAsIDMzMDI3LCAzMzAzMywgMzMwMzksIAorICAgIDMzMDQ1LCAzMzA1MSwgMzMwNTcsIDMzMDYzLCAzMzA2OSwgMzMwNzYsIDMzMDgyLCAzMzA4OSwgMzMwOTUsIDMzMTAxLCAKKyAgICAzMzEwNywgMzMxMTMsIDMzMTE5LCAzMzEyNSwgMzMxMzEsIDMzMTM3LCAzMzE0MywgMTI1ODksIDMzMTQ5LCAzMzE1NSwgCisgICAgMzMxNjAsIDMzMTY1LCAzMzE3MCwgMzMxNzMsIDMzMTc5LCAzMzE4NywgMzMxOTIsIDMzMTk2LCAzMzIwMSwgMzMyMDcsIAorICAgIDMzMjE2LCAzMzIyMiwgMzMyMjcsIDMzMjMyLCAzMzIzNywgMzMyNDEsIDMzMjQ2LCAzMzI1MSwgMzMyNTYsIDMzMjYxLCAKKyAgICAzMzI2NiwgMzMyNzMsIDMzMjgwLCAzMzI4NiwgMzMyOTIsIDMzMjk3LCAxNzk4MCwgMzMzMDQsIDMzMzEwLCAzMzMxNywgCisgICAgMzMzMjMsIDMzMzI5LCAzMzMzNCwgMzMzNDIsIDMzMzQ3LCAxMDQ3MCwgMzMzNTEsIDMzMzU2LCAzMzM2MSwgMzMzNjcsIAorICAgIDMzMzcyLCAzMzM3NywgMzMzODEsIDMzMzg2LCAzMzM5MSwgMzMzOTcsIDMzNDAyLCAzMzQwNywgMzM0MTIsIDMzNDE2LCAKKyAgICAzMzQyMSwgMzM0MjYsIDMzNDMwLCAzMzQzNSwgMzM0NDAsIDMzNDQ0LCAzMzQ0OSwgMzM0NTMsIDMzNDU4LCAzMzQ2MywgCisgICAgMzM0NjgsIDMzNDcyLCAzMzQ3NywgMzM0ODEsIDMzNDg1LCAxNjgwNSwgMzM0OTAsIDMzNDk5LCAzMzUwNSwgMzM1MTEsIAorICAgIDMzNTIwLCAzMzUyOCwgMzM1MzcsIDMzNTQ1LCAzMzU1MCwgMzM1NTQsIDMzNTYxLCAzMzU2NywgMzM1NzUsIDMzNTc5LCAKKyAgICAzMzU4MiwgMzM1ODcsIDMzNTkxLCAzMzYwMCwgMzM2MDgsIDMzNjI2LCAzMzYzMiwgMTQ3NCwgMzM2MzgsIDMzNjQxLCAKKyAgICAzMzY0NSwgMjQ0NDcsIDI0NDUzLCAzMzY1MSwgMzM2NTUsIDMzNjY2LCAzMzY3NywgMzM2ODgsIDMzNzAwLCAzMzcwNCwgCisgICAgMzM3MTEsIDMzNzE4LCAzMzcyNSwgMzM3MzAsIDMzNzM0LCA2MjI0LCA5NjMsIDIzMTUwLCAzMzc0MiwgMzM3NDcsIDMzNzUxLCAKKyAgICAzMzc1NiwgMzM3NjAsIDMzNzY2LCAzMzc3MSwgMzM3NzcsIDMzNzgyLCAzMzc4OCwgMzM3OTMsIDMzNzk5LCAzMzgwNCwgCisgICAgMzM4MTAsIDMzODE2LCAzMzgyMiwgMzM4MjcsIDMzNzgzLCAzMzc4OSwgMzM4MzEsIDMzODM2LCAzMzg0MiwgMzM4NDcsIAorICAgIDMzODUzLCAzMzg1OCwgMzM4NjQsIDMzODY5LCAzMzc5NCwgMTE0MTIsIDMzODczLCAzMzgwNSwgMzM4MTEsIDMzODE3LCAKKyAgICAyODc0LCAzNTIyLCAzMzg3OSwgMzM4ODIsIDMzODg3LCAzMzg5MywgMzM4OTksIDMzOTA1LCAzMzkxMiwgMzM5MTgsIAorICAgIDMzOTI0LCAzMzkzMCwgMzM5MzYsIDMzOTQyLCAzMzk0OCwgMzM5NTQsIDMzOTYwLCAzMzk2NiwgMzM5NzIsIDMzOTc4LCAKKyAgICAzMzk4NCwgMzM5OTEsIDMzOTk3LCAzNDAwMywgMzQwMDksIDM0MDE1LCAzNDAyMSwgMzQwMjQsIDM0MDI5LCAzNDAzMiwgCisgICAgMzQwMzksIDM0MDQ0LCAzNDA1MiwgMzQwNTcsIDM0MDYyLCAzNDA2OCwgMzQwNzMsIDM0MDc4LCAzNDA4MiwgMzQwODcsIAorICAgIDM0MDkzLCAzNDA5OCwgMzQxMDQsIDM0MTA5LCAzNDExNSwgMzQxMjAsIDM0MTI2LCAzNDEzMiwgMzQxMzYsIDM0MTQxLCAKKyAgICAzNDE0NiwgMzQxNTEsIDM0MTU2LCAzNDE2MCwgMzQxNjUsIDM0MTcwLCAzNDE3NSwgMzQxODEsIDM0MTg3LCAzNDE5MywgCisgICAgMzQxOTksIDM0MjA0LCAzNDIwOCwgMzQyMTEsIDM0MjE3LCAzNDIyMywgMzQyMzIsIDM0MjQwLCAzNDI0NywgMzQyNTIsIAorICAgIDM0MjU2LCAzNDI2MCwgMzQyNjUsIDE2NjUzLCAzNDI3MCwgMzQyNzgsIDM0Mjg0LCAzODY1LCAxMzM5LCAzNDI4OSwgCisgICAgMzQyOTMsIDgzODMsIDM0Mjk5LCAzNDMwNSwgMzQzMTIsIDgzOTIsIDM0MzE2LCAzNDMyMiwgMzQzMjksIDM0MzM1LCAKKyAgICAzNDM0NCwgMzQzNTIsIDkyOTksIDM0MzY0LCAzNDM2OCwgMzQzNzUsIDM0MzgxLCAzNDM4NiwgMzQzOTAsIDM0Mzk0LCAKKyAgICAzNDM5NywgMzQ0MDcsIDM0NDE2LCAzNDQyNCwgMzM3ODQsIDM0NDI5LCAzNDQzOSwgMzQ0NDksIDM0NDU5LCAzNDQ2NSwgCisgICAgMzQ0NzAsIDM0NDgwLCAzNDQ4NSwgMzQ0OTgsIDM0NTEyLCAzNDUyMywgMzQ1MzUsIDM0NTQ3LCAzNDU2MSwgMzQ1NzQsIAorICAgIDM0NTg2LCAzNDU5OCwgMTYwMTYsIDM0NjEyLCAzNDYxNywgMzQ2MjIsIDM0NjI2LCAzNDYzMCwgMzQ2MzQsIDE3NzYsIAorICAgIDI5NTQ1LCAzNDYzOCwgMzQ2NDMsIDMzODMyLCAzNDY0OCwgMzQ2NTEsIDM0NjU2LCAzNDY2MSwgMzQ2NjYsIDM0NjcyLCAKKyAgICAzNDY3OCwgMTEwNzIsIDM0NjgzLCAzNDY4OSwgMzQ2OTYsIDE3MjY2LCAzNDcwMiwgMzQ3MDcsIDM0NzEyLCAzNDcxNiwgCisgICAgMzQ3MjEsIDM0NzI2LCAzMzgzNywgMzQ3MzEsIDM0NzM2LCAzNDc0MSwgMzQ3NDcsIDMzODQzLCAzNDc1MiwgMzQ3NTUsIAorICAgIDM0NzYyLCAzNDc3MCwgMzQ3NzYsIDM0NzgyLCAzNDc4OCwgMzQ3OTksIDM0ODA0LCAzNDgxMSwgMzQ4MTgsIDM0ODI1LCAKKyAgICAzNDgzMywgMzQ4NDIsIDM0ODUxLCAzNDg1NywgMzQ4NjMsIDM0ODcxLCAzMzg0OCwgMzQ4NzYsIDM0ODgyLCAzNDg4OCwgCisgICAgMzM4NTQsIDM0ODkzLCAzNDg5OCwgMzQ5MDYsIDM0OTE0LCAzNDkyMCwgMzQ5MjcsIDM0OTMzLCAzNDk0MCwgMzQ5NDcsIAorICAgIDM0OTUzLCAzNDk2MSwgMzQ5NzEsIDM0OTc4LCAzNDk4NCwgMzQ5ODksIDM0OTk1LCAzNTAwMCwgMzUwMDUsIDM1MDEyLCAKKyAgICAzNTAyMSwgMzUwMjksIDM1MDM0LCAzNTA0MCwgMzUwNDcsIDM1MDU1LCAzNTA2MSwgMzUwNjYsIDM1MDcyLCAzNTA4MSwgCisgICAgMzUwODgsIDMwNDA5LCAzNTA5NCwgMzUwOTgsIDM1MTAzLCAzNTExMiwgMzUxMTcsIDM1MTIyLCAzNTEyNywgMTM2NTgsIAorICAgIDM1MTM1LCAzNTE0MCwgMzUxNDUsIDM1MTUwLCAzNTE1NCwgMzUxNTksIDM1MTY0LCAzNTE3MSwgMzUxNzYsIDM1MTgxLCAKKyAgICAzNTE4NiwgMzM4NTksIDIzMDg3LCAzNTE5MiwgMjU0MywgMTU1LCAzNTE5NSwgMzUxOTgsIDM1MjAyLCAzNTIwNiwgMzUyMTYsIAorICAgIDM1MjI0LCAzNTIzMSwgMzUyMzUsIDM1MjM4LCAzNTI0NiwgMzUyNTMsIDM1MjYwLCAzNTI2OSwgMzUyNzMsIDM1Mjc2LCAKKyAgICAzNTI4MiwgMzUyODYsIDM1Mjk0LCAzNTMwMiwgMzUzMDYsIDM1MzEwLCAzNTMxMywgMzUzMTksIDM1MzI2LCAzNTMzMCwgCisgICAgMzUzMzQsIDM1MzQxLCAzNTM0OSwgMzM3OTUsIDM1MzU2LCAzNTM2NCwgMzUzNjksIDExMTMyLCA2MDAsIDM3NSwgMzUzODEsIAorICAgIDM1Mzg2LCAzNTM5MSwgMzUzOTcsIDM1NDAyLCAzNTQwNywgMzg4NiwgMzU0MTIsIDM1NDE1LCAzNTQyMCwgMzU0MjUsIAorICAgIDM1NDMwLCAzNTQzNSwgMzU0NDAsIDM1NDQ3LCAyNDU2NSwgMzU0NTIsIDM1NDU3LCAzNTQ2MiwgMzU0NjcsIDM1NDcyLCAKKyAgICAzNTQ3OCwgMzU0ODMsIDM1NDg5LCAzNDAzNSwgMzU0OTUsIDM1NTAwLCAzNTUwNiwgMzU1MTIsIDM1NTIyLCAzNTUyNywgCisgICAgMzU1MzIsIDM1NTM2LCAzNTU0MSwgMzU1NDYsIDM1NTUxLCAzNTU1NiwgMzU1NjksIDM1NTc0LCAyNDIyOCwgMTg0MTksIAorICAgIDM4OTksIDM1NTc4LCAzNTU4NCwgMzU1ODksIDM1NTk0LCAzNTYwMCwgMzU2MDUsIDM1NjEwLCAzNTYxNCwgMzU2MTksIAorICAgIDM1NjI0LCAzNTYzMCwgMzU2MzUsIDM1NjQwLCAxMzQ0LCAzNTY0NCwgMzU2NDksIDM1NjU0LCAzNTY1OSwgMzU2NjMsIAorICAgIDM1NjY4LCAzNTY3MywgMzU2NzgsIDM1Njg0LCAzNTY5MCwgMzU2OTUsIDM1Njk5LCAzNTcwMywgMzU3MDgsIDM1NzEzLCAKKyAgICAzNTcxOCwgMzU3MjIsIDM1NzMwLCAzNTczNCwgMzU3NDAsIDM1NzQ0LCAzNTc1MSwgMzU3NjAsIDE4MjAzLCAzMzgwNiwgCisgICAgMzU3NjYsIDM1NzczLCAzNTc4MSwgMzU3ODgsIDM1Nzk0LCAzNTgwNywgMzU4MTksIDM1ODI0LCAzNTgzMCwgMzU4MzQsIAorICAgIDI4MDEsIDM1ODM4LCAzNTg0MiwgMzUzMjEsIDM1ODUxLCAzNTg2MiwgMzU4NjcsIDMwNDcyLCAzNTg3MiwgMzU4NzcsIAorICAgIDM1ODgxLCAzNTg4NiwgMjQ0NTgsIDM1ODkwLCAzNTg5NCwgMzU4OTksIDMzODEyLCAyMzE3NywgMzU5MDMsIDM1OTA4LCAKKyAgICAzNTkxNCwgMzU5MTksIDM1OTIzLCAzNTkyNywgMzU5MzAsIDM1OTM0LCAzNTk0MCwgMzU5NDksIDM1OTYwLCAzNTk3MiwgCisgICAgMzM4MTgsIDM1OTc3LCAzNTk4MCwgMzU5ODQsIDM1OTg4LCA0MTQsIDM1OTkzLCAzNTk5OCwgMzYwMDMsIDM2MDA4LCAKKyAgICAzNjAxMywgMzYwMTgsIDM2MDI0LCAzNjAyOSwgMzYwMzQsIDM2MDQwLCAzNjA0NSwgMzYwNTEsIDM2MDU2LCAzNjA2MiwgCisgICAgMzYwNjcsIDM2MDcyLCAzNjA3NywgMzYwODIsIDM2MDg3LCAzNjA5MiwgMzYwOTcsIDM2MTAyLCAzNjEwOCwgMzYxMTMsIAorICAgIDM2MTE4LCAzNjEyMywgMzYxMjgsIDM2MTMzLCAzNjEzOCwgMzYxNDMsIDM2MTQ5LCAzNjE1NSwgMzYxNjAsIDM2MTY1LCAKKyAgICAzNjE3MCwgMzYxNzUsIDM2MTgwLCAzNjE4NSwgMzYxOTAsIDM2MTk1LCAzNjIwMCwgMzYyMDUsIDM2MjEwLCAzNjIxNSwgCisgICAgMzYyMjAsIDM2MjI1LCAzNjIzMCwgMzYyMzUsIDM2MjQwLCAzNjI0NSwgMzYyNTEsIDMyNiwgOSwgMzYyNTYsIDM2MjYwLCAKKyAgICAzNjI2NCwgMzYyNzIsIDM2Mjc2LCAzNjI4MCwgMzYyODMsIDM2Mjg2LCAzNjI4OCwgMzYyOTMsIDM2Mjk3LCAzNjMwMiwgCisgICAgMzYzMDYsIDM2MzExLCAzNjMxNSwgMzYzMjAsIDM2MzI0LCAzNjMyNywgMzYzMjksIDM2MzMzLCAzNjMzOCwgMzYzNDIsIAorICAgIDM2MzUzLCAzNjM1NiwgMzYzNTgsIDM2MzYyLCAzNjM3NCwgMzYzODMsIDM2Mzg3LCAzNjM5MSwgMzYzOTcsIDM2NDAyLCAKKyAgICAzNjQxMSwgMzY0MTcsIDM2NDIyLCAzNjQyNywgMzY0MzEsIDM2NDM1LCAzNjQ0MCwgMzY0NDcsIDM2NDUyLCAzNjQ1OCwgCisgICAgMzY0NjMsIDM2NDY3LCAzNjQ3NCwgMjc5NzYsIDI3OTg2LCAzNjQ3OCwgMzY0ODMsIDM2NDg4LCAzNjQ5MywgMzY1MDAsIAorICAgIDM2NTA0LCAzNjUxMSwgMzY1MTcsIDg1MzIsIDM2NTIxLCAzNjUzMCwgMzY1MzgsIDM2NTUzLCAzNjU2NywgMzY1NzYsIAorICAgIDM2NTg0LCAzNjU5NSwgMzY2MDQsIDM2NjA5LCAzNjYxNiwgNzU4MCwgMzY2MjYsIDM2NjMxLCAzNjYzNiwgMzY2NDAsIAorICAgIDM2NjQzLCAzNjY0OCwgMzY2NTIsIDM2NjU3LCAzNjY2MSwgMzY2NjgsIDM2NjczLCAzNjY3OCwgMzY2ODMsIDk0NzQsIAorICAgIDM2NjkzLCAzNjY5NSwgMzY2OTgsIDM2NzAxLCAzNjcwNSwgMzY3MTEsIDM2NzE1LCAzNjcyMCwgMzY3MjUsIDM2NzQzLCAKKyAgICAzNjc1NywgMzY3NzYsIDM2NzkzLCAzNjgwMiwgMzY4MTAsIDM2ODE1LCAzNjgyMCwgMTQ2NywgMzY4MjYsIDM2ODMyLCAKKyAgICAzNjgzNywgMzY4NDcsIDM2ODU2LCAzNjg2NCwgMzY4NjksIDM2ODc1LCAzNjg4MCwgMzY4ODksIDM2OTAwLCAzNjkwNSwgCisgICAgMzY5MTIsIDM2OTE4LCAzNjkyMiwgMzY5MjksIDM2OTM3LCAzNjk0NCwgMzY5NTcsIDM2OTY1LCAzNjk2OSwgMzY5NzksIAorICAgIDM2OTg0LCAzNjk4OCwgMzY5OTYsIDM3MDA0LCAzNzAwOSwgMzcwMTMsIDM3MDE3LCAzNzAyNiwgMzcwMzIsIDM3MDM3LCAKKyAgICAzNzA0NSwgMzcwNTUsIDM3MDY0LCAzNzA3MywgMzcwODIsIDM3MDkzLCAzNzEwMSwgMzcxMTIsIDM3MTIxLCAzNzEyOCwgCisgICAgMzcxMzQsIDM3MTM5LCAzNzE1MCwgMzcxNjEsIDM3MTY2LCAzNzE3MCwgMzcxNzMsIDM3MTc3LCAzNzE4NSwgMzcxOTEsIAorICAgIDM3MjAyLCAzNzIxMywgMzcyMjQsIDM3MjM1LCAzNzI0NiwgMzcyNTcsIDM3MjY4LCAzNzI3OSwgMzcyOTEsIDM3MzAzLCAKKyAgICAzNzMxNSwgMzczMjcsIDM3MzM5LCAzNzM1MSwgMzczNjMsIDM3MzcyLCAzNzM3NiwgMzczODQsIDM3MzkwLCAzNzM5NiwgCisgICAgMzc0MDMsIDM3NDA5LCAzNzQxNCwgMzc0MjAsIDI0NDIsIDM3NDI0LCAzNzQyNiwgMzc0MzEsIDM3NDM2LCAzNzQ0MSwgCisgICAgMzc0NDQsIDM3NDQ2LCAzNzQ1MCwgMzc0NTMsIDM3NDYwLCAzNzQ2NCwgMTA3NjIsIDM3NDY4LCAzNzQ3NCwgMzc0ODQsIAorICAgIDM3NDg5LCAzNzQ5NSwgMzc0OTksIDM3NTA0LCAzNzUxNywgMjg0MTcsIDM3NTIzLCAzNzUzMiwgMzc1NDEsIDE5MjgxLCAKKyAgICAzNzU0OCwgMzc1NTcsIDM0NDQ1LCAzNzU2NSwgMzc1NzAsIDM3NTc0LCAzNzU4MywgMzc1OTEsIDM3NTk4LCAzNzYwMywgCisgICAgMzc2MDcsIDM3NjEyLCAzNzYxNywgMzc2MjUsIDM3NjI5LCAzNzYzNywgMzc2NDMsIDM3NjQ5LCAzNzY1NCwgMzc2NTksIAorICAgIDM3NjYzLCAzNzY2NiwgMzc2NzEsIDM3Njg0LCAzNzcwMCwgMjUwNTUsIDM3NzE3LCAzNzcyOSwgMzc3NDYsIDM3NzU4LCAKKyAgICAzNzc3MiwgMjUwNzIsIDI1MDkxLCAzNzc4NCwgMzc3OTYsIDI3MDgsIDM3ODEwLCAzNzgxNSwgMzc4MjAsIDM3ODI1LCAKKyAgICAzNzgyOSwgMzc4MzYsIDM3ODQ4LCAzNzg1NSwgMzc4NjQsIDM3ODY3LCAzNzg3OCwgMzc4ODksIDM3ODk0LCAzNDg2OCwgCisgICAgODkzLCAzNzg5OCwgMzc5MDIsIDM3OTA2LCAzNzkwOSwgMzc5MTQsIDM3OTE5LCAzNzkyNSwgMzc5MzAsIDM3OTM1LCAKKyAgICAzNzk0MSwgMzc5NDcsIDM3OTUyLCAzNzk1NiwgMzc5NjEsIDM3OTY2LCAzNzk3MSwgMzc5NzUsIDM3OTc4LCAzNzk4NCwgCisgICAgMzc5ODksIDM3OTk0LCAzNzk5OSwgMzgwMDMsIDM4MDA4LCAzODAxNCwgMzgwMjIsIDI4NjY5LCAzODAyNywgMzgwMzIsIAorICAgIDM4MDM5LCAzODA0NSwgMzgwNTEsIDM4MDU2LCAzODA2NCwgMjQ1NzQsIDM4MDcxLCAzODA3NiwgMzgwODEsIDM4MDg2LCAKKyAgICAzODA5MCwgMzgwOTMsIDM4MDk4LCAzODEwMiwgMzgxMDYsIDM4MTEzLCAzODExOSwgMzgxMjUsIDM4MTMxLCAzODEzOCwgCisgICAgMzgxNDMsIDM4MTQ5LCAzNjk5OSwgMzgxNTMsIDM4MTU3LCAzODE2MiwgMzgxNzUsIDM4MTgwLCAzODE4NiwgMzgxOTQsIAorICAgIDM4MjAxLCAzODIwOSwgMzgyMTksIDM4MjI1LCAzODIzMSwgMzgyMzcsIDM4MjQxLCAzODI1MCwgMzgyNTgsIDM4MjY1LCAKKyAgICAzODI3MCwgMzgyNzUsIDExNDM1LCAzODI4MCwgMzgyODcsIDM4MjkzLCAzODMwMywgMzgzMDgsIDM4MzE0LCAzODMyMiwgCisgICAgMzc3NCwgMzgzMjksIDM4MzM2LCAzODM0MiwgMzgzNDksIDM3ODAsIDM4MzUzLCAzODM1OCwgMzgzNjksIDM4Mzc2LCAKKyAgICAzODM4MiwgMzgzOTEsIDM4Mzk1LCA0MjU4LCAzODM5OCwgMzg0MDUsIDM4NDExLCAzODQxNywgMzg0MjUsIDM4NDM1LCAKKyAgICAzMTY2MiwgMzg0NDIsIDM4NDUwLCAzODQ1NiwgMzg0NjEsIDM4NDY3LCAzODQ3MiwgMzg0NzYsIDI4MjYwLCAzODQ4MiwgCisgICAgMzg0ODksIDM4NDk1LCAzODUwNCwgMzg1MTEsIDI1NzkxLCAzODUxNywgMzg1MjIsIDM4NTI2LCAzODUzNCwgMzg1NDIsIAorICAgIDEwNDI4LCA2MTk5LCAzODU0OSwgMzg1NTMsIDM4NTU1LCAzODU1OSwgMzg1NjQsIDM4NTY2LCAzODU3MSwgMzg1NzcsIAorICAgIDM4NTgyLCAzODU4NywgMzg1OTQsIDM1NDQzLCAzODYwMCwgMzg2MDUsIDM4NjA5LCAzODYxNCwgMzg2MTgsIDM4NjI3LCAKKyAgICAzODYzMSwgMzg2MzcsIDM4NjQ0LCAzODY1MCwgMzg2NTcsIDM4NjYyLCAzODY3MSwgMzg2NzYsIDM4NjgwLCAzODY4NSwgCisgICAgMzg2OTIsIDM4NzAwLCAzODcwOCwgMzg3MTMsIDIzMjMzLCAzODcxNywgMzg3MjAsIDM4NzI0LCAzODcyOCwgMTE4MjMsIAorICAgIDkwNywgMzg3MzIsIDM4NzM3LCAzODc0NSwgMzg3NDksIDM4NzU4LCAzODc2NSwgMzg3NjksIDM4NzczLCAzODc4MSwgCisgICAgMzg3ODgsIDM4Nzk4LCAzODgwMiwgMzg4MDYsIDM4ODE0LCAzODgyMiwgMzg4MjgsIDM4ODMzLCAzODg0MiwgMTQ2NDAsIAorICAgIDM4ODQ4LCAzODg1NywgMzg4NjIsIDM4ODY5LCAzODg3NiwgMzg4ODQsIDM4ODkxLCAzODg5OSwgMzg5MDcsIDM4OTEyLCAKKyAgICAzODkxOSwgMzg5MjYsIDM4OTMzLCAzODk0MCwgMzg5NDcsIDM4OTUyLCAzODk1OSwgMzg5NjUsIDM4OTgyLCAzODk5MCwgCisgICAgMzkwMDAsIDM5MDA4LCAzOTAxNSwgNDIyLCAzOTAxOSwgMzkwMjUsIDM5MDI5LCAzOTAzNCwgMzY2MDAsIDM5MDQwLCAKKyAgICAzOTA0MywgMzkwNDcsIDM5MDU4LCAzOTA2NiwgMzc4NSwgMzkwNzQsIDM5MDgwLCAzOTA4NiwgMzkwOTYsIDM5MTA1LCAKKyAgICAzOTExNSwgMzkxMjIsIDM5MTI4LCAzOTEzMywgMzc5MSwgMzc5NywgMzkxNDIsIDM5MTQ5LCAzOTE1NywgMzkxNjIsIAorICAgIDM5MTY2LCAzOTE3MywgMzkxODEsIDM5MTg4LCAzOTE5NCwgMzkyMDMsIDM5MjEzLCAzOTIxOSwgMzkyMjcsIDM5MjM2LCAKKyAgICAzOTI0MywgMzkyNTEsIDM5MjU4LCAyMzkzNywgMzkyNjIsIDM5MjY5LCAzOTI3NSwgMzkyODUsIDM5Mjk0LCAzOTMwMiwgCisgICAgMzkzMTMsIDM5MzE3LCAzOTMyNywgMzkzMzMsIDM5MzQwLCAzOTM0OCwgMzkzNTcsIDM5MzY2LCAzOTM3NiwgMzkzODcsIAorICAgIDM5Mzk0LCAzOTM5OSwgMzk0MDYsIDMwNzcsIDM5NDE0LCAzOTQyMCwgMzk0MjUsIDM5NDMxLCAzOTQzNywgMzk0NDIsIAorICAgIDM5NDU1LCAzOTQ2OCwgMzk0ODEsIDM5NDg4LCAzOTQ5NCwgMzk1MDIsIDM5NTEwLCAzOTUxNSwgMzk1MTksIDE0MzYsIAorICAgIDM5NTIzLCAzOTUyNywgMzk1MzEsIDM5NTM1LCAzOTUzOSwgMzk1NDMsIDM5NTQ3LCAzOTU1MSwgMzk1NTUsIDM5NTU5LCAKKyAgICAzOTU2MywgMzk1NjcsIDM5NTcxLCAzOTU3NSwgMzk1NzksIDM5NTgzLCAzOTU4NywgMzk1OTEsIDM5NTk1LCAzOTU5OSwgCisgICAgMzk2MDMsIDM5NjA3LCAzOTYxMSwgMzk2MTUsIDM5NjE5LCAzOTYyMywgMzk2MjcsIDM5NjMxLCAzOTYzNSwgMzk2MzksIAorICAgIDM5NjQzLCAzOTY0NywgMzk2NTEsIDM5NjU1LCAzOTY1OSwgMzk2NjMsIDM5NjY3LCAzOTY3MSwgMzk2NzUsIDM5Njc5LCAKKyAgICAzOTY4MywgMzk2ODcsIDM5NjkxLCAzOTY5NSwgMzk2OTksIDM5NzAzLCAzOTcwNywgMzk3MTEsIDM5NzE1LCAzOTcxOSwgCisgICAgMzk3MjMsIDM5NzI3LCAzOTczMSwgMzk3MzUsIDM5NzM5LCAzOTc0MywgMzk3NDcsIDM5NzUxLCAzOTc1NSwgMzk3NTksIAorICAgIDM5NzYzLCAzOTc2NywgMzk3NzEsIDM5Nzc1LCAzOTc3OSwgMzk3ODMsIDM5Nzg3LCAzOTc5MSwgMzk3OTUsIDM5Nzk5LCAKKyAgICAzOTgwMywgMzk4MDcsIDM5ODExLCAzOTgxNSwgMzk4MTksIDM5ODIzLCAzOTgyNywgMzk4MzEsIDM5ODM1LCAzOTgzOSwgCisgICAgMzk4NDMsIDM5ODQ3LCAzOTg1MSwgMzk4NTUsIDM5ODU5LCAzOTg2MywgMzk4NjcsIDM5ODcxLCAzOTg3NSwgMzk4NzksIAorICAgIDM5ODgzLCAzOTg4NywgMzk4OTEsIDM5ODk1LCAzOTg5OSwgMzk5MDMsIDM5OTA3LCAzOTkxMSwgMzk5MTUsIDM5OTE5LCAKKyAgICAzOTkyMywgMzk5MjcsIDM5OTMxLCAzOTkzNSwgMzk5MzksIDM5OTQzLCAzOTk0NywgMzk5NTEsIDM5OTU1LCAzOTk1OSwgCisgICAgMzk5NjMsIDM5OTY3LCAzOTk3MSwgMzk5NzUsIDM5OTc5LCAzOTk4MywgMzk5ODcsIDM5OTkxLCAzOTk5NSwgMzk5OTksIAorICAgIDQwMDAzLCA0MDAwNywgNDAwMTEsIDQwMDE1LCA0MDAxOSwgNDAwMjMsIDQwMDI3LCA0MDAzMSwgNDAwMzUsIDQwMDM5LCAKKyAgICA0MDA0MywgNDAwNDcsIDQwMDUxLCA0MDA1NSwgNDAwNTksIDQwMDYzLCA0MDA2NywgNDAwNzEsIDQwMDc1LCA0MDA3OSwgCisgICAgNDAwODMsIDQwMDg3LCA0MDA5MSwgNDAwOTUsIDQwMDk5LCA0MDEwMywgNDAxMDcsIDQwMTExLCA0MDExNSwgNDAxMTksIAorICAgIDQwMTIzLCA0MDEyNywgNDAxMzEsIDQwMTM1LCA0MDE0MCwgNDAxNDQsIDQwMTQ5LCA0MDE1MywgNDAxNTgsIDQwMTYyLCAKKyAgICA0MDE2NywgNDAxNzEsIDQwMTc3LCA0MDE4MiwgNDAxODYsIDQwMTkxLCA0MDE5NSwgNDAyMDAsIDQwMjA0LCA0MDIwOSwgCisgICAgNDAyMTMsIDQwMjE4LCA0MDIyMiwgNDAyMjcsIDQwMjMxLCA0MDIzNiwgNDAyNDAsIDQwMjQ2LCA0MDI1MiwgNDAyNTcsIAorICAgIDQwMjYxLCA0MDI2NiwgNDAyNzAsIDQwMjc2LCA0MDI4MSwgNDAyODUsIDQwMjkwLCA0MDI5NCwgNDAyOTksIDQwMzAzLCAKKyAgICA0MDMwOSwgNDAzMTQsIDQwMzE4LCA0MDMyMywgNDAzMjcsIDQwMzMyLCA0MDMzNiwgNDAzNDEsIDQwMzQ1LCA0MDM1MSwgCisgICAgNDAzNTYsIDQwMzYwLCA0MDM2NSwgNDAzNjksIDQwMzc1LCA0MDM4MCwgNDAzODQsIDQwMzg5LCA0MDM5MywgNDAzOTgsIAorICAgIDQwNDAyLCA0MDQwNywgNDA0MTEsIDQwNDE2LCA0MDQyMCwgNDA0MjYsIDQwNDMxLCA0MDQzNSwgNDA0NDEsIDQwNDQ2LCAKKyAgICA0MDQ1MCwgNDA0NTYsIDQwNDYxLCA0MDQ2NSwgNDA0NzAsIDQwNDc0LCA0MDQ3OSwgNDA0ODMsIDQwNDg5LCA0MDQ5NSwgCisgICAgNDA1MDEsIDQwNTA3LCA0MDUxMywgNDA1MTksIDQwNTI1LCA0MDUzMSwgNDA1MzYsIDQwNTQwLCA0MDU0NSwgNDA1NDksIAorICAgIDQwNTU1LCA0MDU2MCwgNDA1NjQsIDQwNTY5LCA0MDU3MywgNDA1NzgsIDQwNTgyLCA0MDU4NywgNDA1OTEsIDQwNTk2LCAKKyAgICA0MDYwMCwgNDA2MDUsIDQwNjA5LCA0MDYxNCwgNDA2MTgsIDQwNjI0LCA0MDYyOSwgNDA2MzMsIDQwNjM4LCA0MDY0MiwgCisgICAgNDA2NDgsIDQwNjU0LCA0MDY1OSwgMTIyLCA2MywgNDA2NjMsIDQwNjY1LCA0MDY2OSwgNDA2NzMsIDQwNjc3LCA0MDY4MiwgCisgICAgNDA2ODYsIDQwNjkwLCA0MDY5NSwgMTAzNDEsIDQwNzAwLCA0MDcwNiwgMTczNywgNjYyMSwgNDA3MTIsIDQwNzE1LCAKKyAgICA0MDcyMCwgNDA3MjQsIDQwNzI5LCA0MDczMywgNDA3MzcsIDQwNzQyLCAxMTIxOSwgNDA3NDYsIDQwNzUwLCA0MDc1NCwgCisgICAgNTQwLCA0MDc1OCwgMTY5MTQsIDQwNzYzLCA0MDc2NywgNDA3NzIsIDQwNzc3LCA0MDc4MiwgNDA3ODYsIDQwNzkzLCAKKyAgICAyODQ0MSwgNDA3OTksIDQwODAyLCA0MDgwNiwgNDA4MTEsIDQwODE3LCA0MDgyMSwgNDA4MjQsIDQwODMyLCA0MDgzOCwgCisgICAgNDA4NDMsIDQwODQ3LCA0MDg1MCwgNDA4NTQsIDQwODYwLCA0MDg2NCwgNDA4NjgsIDM1NzMsIDM1NzgsIDMxODg2LCAKKyAgICA0MDg3MSwgNDA4NzUsIDQwODc5LCA0MDg4MywgNDA4ODcsIDQwODk1LCA0MDkwMiwgNDA5MDYsIDE0NTkwLCA0MDkxMywgCisgICAgNDA5MTgsIDQwOTMyLCA0MDkzOSwgNDA5NTAsIDM0MSwgNDA5NTUsIDQwOTU5LCA0MDk2NSwgNDA5NzcsIDQwOTgzLCAKKyAgICA0MDk4OSwgNDA5OTMsIDMxOTIzLCA0MTAwMiwgNDEwMDgsIDQxMDE3LCA0MTAyMSwgNDEwMjUsIDQxMDMwLCA0MTAzNiwgCisgICAgNDEwNDEsIDQxMDQ1LCA0MTA1MCwgNDEwNTQsIDQxMDU4LCA0MTA2NSwgNDEwNzEsIDQxMDc2LCA0MTA4NywgNDExMDIsIAorICAgIDQxMTE3LCA0MTEzMiwgNDExNDgsIDQxMTY2LCAxMTE2OSwgNDExODAsIDQxMTg3LCA0MTE5MSwgNDExOTQsIDQxMjAzLCAKKyAgICA0MTIwOCwgNDEyMTIsIDQxMjIwLCAxNzQ2OSwgNDEyMjgsIDQxMjMyLCA0MTI0MiwgNDEyNTMsIDMxODU2LCA0MTI2NiwgCisgICAgNDEyNzAsIDQxMjc5LCA0MTI5NywgNDEzMTYsIDQxMzI0LCAxMDYyMywgMTEzMzIsIDQxMzI4LCAyNDQ3MCwgNDEzMzEsIAorICAgIDMyODI0LCA0MTMzNiwgMTA2MjIsIDQxMzQxLCA0MTM0NywgNDEzNTIsIDQxMzU4LCA0MTM2MywgNDEzNjksIDQxMzc0LCAKKyAgICA0MTM4MCwgNDEzODUsIDQxMzkxLCA0MTM5NywgNDE0MDMsIDQxNDA4LCA0MTM2NCwgNDEzNzAsIDQxMzc1LCA0MTM4MSwgCisgICAgNDEzODYsIDQxMzkyLCA0MTM5OCwgODU0NSwgNDEwMywgNDE0MTIsIDQxNDIwLCA0MTQyNCwgNDE0MjcsIDQxNDM0LCAKKyAgICA0MTQzOCwgNDE0NDMsIDQxNDQ4LCA0MTQ1NSwgNDE0NjEsIDQxNDY3LCA0MTQ3MiwgMTYyOTcsIDQxNDc2LCAyODI3NywgCisgICAgNDE0ODAsIDQxNDg0LCA0MTQ4OCwgNDE0OTQsIDQxNDk4LCAzMDM0OSwgNDE1MDcsIDk2MzQsIDQxNTExLCAxMDAyNywgCisgICAgNDE1MTQsIDQxNTIxLCA0MTUyNywgNDE1MzEsIDEzMTE0LCA0MTUzOCwgNDE1NDQsIDQxNTQ5LCA0MTU1NiwgNDE1NjMsIAorICAgIDQxNTcwLCAzMTA3NiwgODQ0MiwgNDE1NzcsIDQxNTg0LCA0MTU5MSwgNDE1OTcsIDQxNjAyLCA0MTYwOSwgNDE2MjAsIAorICAgIDQxNjI2LCA0MTYzMSwgNDE2MzYsIDQxNjQxLCA0MTY0NSwgNDE2NTAsIDQxNjU3LCA0MTM2NSwgNDE2NjEsIDQxNjcxLCAKKyAgICA0MTY4MCwgNDE2OTEsIDQxNjk3LCA0MTcwNSwgNDE3MTIsIDQxNzE3LCA0MTcyMiwgNDE3MjcsIDQxNzMyLCA0MTczNywgCisgICAgNDE3NDEsIDQxNzQ1LCA0MTc1MiwgNDE3NTgsIDQxNzY2LCAyMzM4LCAxMDg2LCAxMTIzNSwgMTEyNDcsIDExMjUyLCAKKyAgICAxMTI1OCwgNDE3NzUsIDExMjYzLCAxMTI2OCwgMTEyNzQsIDQxNzgwLCA0MTc5MCwgNDE3OTQsIDExMjc5LCA0MTc5OSwgCisgICAgMTg2MTcsIDQxODAyLCA0MTgwNywgNDE4MTEsIDM3ODU5LCA0MTgyMiwgNDE4MjcsIDQxODM0LCA0MTg0MSwgNDE4NDUsIAorICAgIDQxODQ4LCA0MTg1NiwgMTExODIsIDQxODYzLCA0MTg2NiwgNDE4NzIsIDQxODgyLCA2MjUxLCA0MTg5MSwgNDE4OTcsIAorICAgIDQxOTAxLCA0MTkwOSwgNDE5MTMsIDQxOTIzLCA0MTkyOSwgNDE5MzQsIDQxOTQ1LCA0MTk1NCwgNDE5NjMsIDQxOTcyLCAKKyAgICA0MTk4MSwgNDE5OTAsIDQxOTk5LCA0MjAwOCwgNDIwMTQsIDQyMDIwLCA0MjAyNSwgNDIwMzEsIDQyMDM3LCA0MjA0MywgCisgICAgNDIwNDgsIDQyMDUxLCA0MjA1OCwgNDIwNjQsIDQyMDY4LCA0MjA3MywgNDIwODAsIDQyMDg3LCA0MjA5MSwgNDIwOTQsIAorICAgIDQyMTA0LCA0MjExNywgNDIxMjYsIDQyMTM1LCA0MjE0NiwgNDIxNTksIDQyMTcxLCA0MjE4MiwgNDIxOTEsIDQyMjAyLCAKKyAgICA0MjIwNywgNDIyMTYsIDQyMjIxLCAxMTI4NCwgNDIyMjcsIDQyMjM0LCA0MjI0MiwgNDIyNDcsIDQyMjUxLCA0MjI1OCwgCisgICAgNDIyNjUsIDQwNDYsIDI1LCA0MjI2OSwgNDIyNzQsIDE4NDY2LCA0MjI3OCwgNDIyODEsIDQyMjg0LCAzMDUyOSwgNDIyODgsIAorICAgIDMxMDg1LCA0MjI5NiwgNDIzMDAsIDQyMzA0LCA0MjMwNywgNDIzMTMsIDQyMzE5LCA0MjMyNCwgMzM4ODMsIDQyMzMzLCAKKyAgICA0MjM0MSwgNDIzNDcsIDQyMzU0LCAzMDUxMiwgNDIzNTgsIDMwNzMyLCA0MjM2MiwgNDIzNzEsIDQyMzc1LCA0MjM4MywgCisgICAgNDIzODksIDQyMzk1LCA0MjQwMCwgNDI0MDQsIDMxMTA0LCA0MjQxMCwgNDI0MTMsIDQyNDIxLCA0MjQyOSwgNDM5OSwgCisgICAgNDI0MzUsIDQyNDM5LCA0MjQ0NCwgNDI0NTEsIDQyNDU3LCA0MjQ2MiwgNDI0NjcsIDQyNDcxLCA0MjQ3NywgNDI0ODIsIAorICAgIDQyNDg4LCA0MzExLCA4NDgsIDQyNDk1LCA0MjQ5OSwgNDI1MDIsIDE2Nzg3LCA0MjUxNCwgNDI1MjIsIDQyNTMwLCA0MjUzOCwgCisgICAgNDI1NDYsIDQyNTUzLCA0MjU2MSwgNDI1NjksIDQyNTc2LCA0MjU4NCwgNDI1OTIsIDQyNjAwLCA0MjYwOCwgNDI2MTYsIAorICAgIDQyNjI0LCA0MjYzMiwgNDI2NDAsIDQyNjQ4LCA0MjY1NiwgNDI2NjQsIDQyNjcxLCA0MjY3OSwgNDI2ODcsIDQyNjk1LCAKKyAgICA0MjcwMywgNDI3MTEsIDQyNzE5LCA0MjcyNywgNDI3MzUsIDQyNzQzLCA0Mjc1MSwgNDI3NTksIDQyNzY3LCA0Mjc3NSwgCisgICAgNDI3ODMsIDQyNzkxLCA0Mjc5OSwgNDI4MDcsIDQyODE1LCA0MjgyMywgNDI4MzAsIDQyODM4LCA0Mjg0NSwgNDI4NTMsIAorICAgIDQyODYxLCA0Mjg2OSwgNDI4NzcsIDQyODg1LCA0Mjg5MywgNDI5MDEsIDQyOTA5LCA0MjkyMCwgMjM5NzMsIDQyOTI1LCAKKyAgICA0MjkyOCwgNDI5MzUsIDQyOTM5LCA0Mjk0NSwgNDI5NDksIDQyOTU1LCA0Mjk2MCwgNDI5NjYsIDQyOTcxLCA0Mjk3NiwgCisgICAgNDI5ODAsIDQyOTg0LCA0Mjk4OSwgNDI5OTQsIDQzMDA0LCA0MzAxMCwgNDMwMjMsIDQzMDI5LCA0MzAzNSwgNDMwNDEsIAorICAgIDQzMDQ4LCA0MzA1MywgNDMwNTksIDQzMDY0LCAxODM2MiwgODU2LCA0MzA2OSwgNDMwNzIsIDQzMDc1LCA0MzA3OCwgCisgICAgMzM5NjcsIDMzOTczLCA0MzA4MSwgMzM5NzksIDMzOTkyLCAzMzk5OCwgMzQwMDQsIDQzMDg3LCAzNDAxMCwgMzQwMTYsIAorICAgIDQzMDkzLCA0MzA5OSwgMTgsIDQzMTA3LCA0MzExNCwgNDMxMTgsIDQzMTIyLCA0MzEzMCwgMzQ3NTcsIDQzMTM0LCA0MzEzOCwgCisgICAgNDMxNDUsIDQzMTUwLCA0MzE1NCwgNDMxNTksIDQzMTY1LCA0MzE3MCwgNDMxNzYsIDQzMTgxLCA0MzE4NSwgNDMxODksIAorICAgIDQzMTkzLCA0MzE5OCwgNDMyMDIsIDQzMjA3LCA0MzIxMSwgNDMyMTUsIDQzMjIyLCA0MzIyNywgNDMyMzEsIDQzMjM1LCAKKyAgICA0MzI0MCwgNDMyNDQsIDQzMjQ5LCA0MzI1MywgNDMyNTcsIDQzMjYyLCA0MzI2OCwgMTcwNjAsIDE3MDY1LCA0MzI3MywgCisgICAgNDMyNzcsIDQzMjgwLCA0MzI4NCwgNDMyODgsIDIzMDQ0LCA0MzI5MywgNDMyOTcsIDQzMzAzLCA0MzMxMCwgNDMzMTYsIAorICAgIDQzMzIxLCA0MzMzMSwgNDMzMzYsIDQzMzQ0LCA0MzM0OCwgNDMzNTEsIDM0NzcyLCA0MzM1NSwgNDM3NiwgNDMzNjAsIAorICAgIDQzMzY1LCA0MzM2OSwgNDMzNzQsIDQzMzc4LCA0MzM4MywgMTQ2NTgsIDQzMzk0LCA0MzM5OCwgNDM0MDEsIDQzNDA1LCAKKyAgICA0MzQxMCwgNDM0MTQsIDQzNDE5LCA0MzQyNCwgNDM0MjgsIDQzNDMyLCA0MzQzNiwgNDM0MzksIDQzNDQzLCA4NTY0LCAKKyAgICAxNDY3NCwgNDM0NDYsIDQzNDQ5LCA0MzQ1NSwgNDM0NjAsIDQzNDY2LCA0MzQ3MSwgNDM0NzcsIDQzNDgyLCA0MzQ4OCwgCisgICAgNDM0OTMsIDQzNDk5LCA0MzUwNSwgNDM1MTEsIDQzNTE2LCA0MzUyMCwgNDM1MjQsIDQzNTMzLCA0MzU0OSwgNDM1NjUsIAorICAgIDQzNTc1LCAzMDQxOSwgNDM1ODIsIDQzNTg2LCA0MzU5MSwgNDM1OTYsIDQzNjAwLCA0MzYwNCwgMzkzNjEsIDQzNjEwLCAKKyAgICA0MzYxNSwgNDM2MTksIDQzNjI2LCA0MzYzMSwgNDM2MzYsIDQzNjQwLCA0MzY0NCwgNDM2NTAsIDI5MzQ4LCA0MzY1NCwgCisgICAgMjMzNDAsIDQzNjU5LCA0MzY2NiwgNDM2NzQsIDQzNjgwLCA0MzY4NywgNDM2OTUsIDQzNzAxLCA0MzcwNSwgNDM3MTAsIAorICAgIDQzNzE2LCA0MzcyNCwgNDM3MjksIDQzNzMzLCA0Mzc0MiwgMTAzMjIsIDQzNzUwLCA0Mzc1NCwgNDM3NjIsIDQzNzY5LCAKKyAgICA0Mzc3NCwgNDM3NzksIDQzNzg0LCA0Mzc4OCwgNDM3OTEsIDQzNzk1LCA0Mzc5OCwgNDM4MDIsIDQzODA5LCA0MzgxNCwgCisgICAgNDM4MTgsIDQzODI0LCAyODc0NywgMzQwMzAsIDQzODI4LCA0MzgzNywgNDM4NDUsIDQzODUxLCA0Mzg1OCwgNDM4NjQsIAorICAgIDQzODcwLCA0Mzg3NSwgNDM4NzgsIDQzODgwLCA0Mzg4NywgNDM4OTQsIDQzOTAwLCA0MzkwNCwgNDM5MDcsIDQzOTExLCAKKyAgICA0MzkxNSwgNDM5MTksIDQzOTI0LCA0MzkyOCwgNDM5MzIsIDQzOTM1LCA0MzkzOSwgNDM5NTMsIDI1MTIxLCA0Mzk3MiwgCisgICAgNDM5ODUsIDQzOTk4LCA0NDAxMSwgMjUxMzksIDQ0MDI2LCAxMTUyMCwgNDQwNDEsIDQ0MDQ3LCA0NDA1MSwgNDQwNjEsIAorICAgIDQ0MDY1LCA0NDA2OSwgNDQwNzMsIDQ0MDgwLCA0NDA4NSwgNDQwODksIDQ0MDk2LCA0NDEwMiwgNDQxMDcsIDQ0MTEzLCAKKyAgICA0NDEyMywgNDQxMzUsIDQ0MTQ2LCA0NDE1MSwgNDQxNTgsIDQ0MTYyLCA0NDE2NiwgNDQxNjksIDE3NDkwLCAzODU0LCAKKyAgICA0NDE3NywgMTcwODcsIDQ0MTkwLCA0NDE5NywgNDQyMDQsIDQ0MjA4LCA0NDIxMiwgNDQyMTcsIDQ0MjIzLCA0NDIyOCwgCisgICAgNDQyMzQsIDQ0MjM4LCA0NDI0MiwgNDQyNDUsIDQ0MjUwLCA0NDI1NCwgNDQyNTksIDgxMDYsIDEwMTIsIDQ0MjY0LCAKKyAgICA0NDI2OCwgNDQyNzQsIDQ0MjgzLCA0NDI4OCwgNDQyOTcsIDQ0MzA0LCAzOTIwOSwgNDQzMTAsIDQ0MzE1LCA0NDMxOSwgCisgICAgNDQzMjQsIDQ0MzMxLCA0NDMzNywgNDQzNDEsIDQ0MzQ0LCA0NDM0OCwgNDQzNTMsIDE1OTgxLCA0NDM2MCwgNDQzNjcsIAorICAgIDQ0MzcxLCA0NDM3NCwgNDQzNzksIDQ0Mzg0LCA0NDM5MCwgNDQzOTUsIDQ0NDAwLCA0NDQwNCwgNDQ0MDksIDQ0NDE5LCAKKyAgICA0NDQyNCwgNDQ0MzAsIDQ0NDM1LCA0NDQ0MSwgNDQ0NDYsIDQ0NDUyLCA0NDQ2MiwgNDQ0NjcsIDQ0NDcyLCA0NDQ3NiwgCisgICAgNDQ0ODEsIDc1ODIsIDc1OTQsIDQ0NDg2LCA0NDQ4OSwgNDQ0OTYsIDQ0NTAyLCA0NDUxMSwgOTU2MCwgMzcxMzEsIDQ0NTE5LCAKKyAgICA0NDUyMywgNDQ1MjcsIDM0ODIwLCA0NDUzNSwgNDQ1NDYsIDQ0NTU0LCAzOTQwOSwgNDQ1NjEsIDQ0NTY2LCA0NDU3MSwgCisgICAgNDQ1ODIsIDQ0NTg5LCA0NDYwMCwgMzQ4NDQsIDIzMzUxLCA0NDYwOCwgOTM0LCA0NDYxMywgMTUwMzAsIDQ0NjE5LCAKKyAgICAzMDUwMywgNDQ2MjUsIDQ0NjMwLCA0NDY0MCwgNDQ2NDksIDQ0NjU2LCA0NDY2MiwgNDQ2NjYsIDQ0NjY5LCA0NDY3NiwgCisgICAgNDQ2ODIsIDQ0Njg5LCA0NDY5NSwgNDQ3MDUsIDQ0NzEzLCA0NDcxOSwgNDQ3MjUsIDQ0NzMwLCA0NDczNCwgNDQ3NDEsIAorICAgIDQ0NzQ2LCA0NDc1MiwgNDQ3NTksIDQ0NzY1LCA0MzkyMCwgNDQ3NzAsIDQ0Nzc0LCA1NzEsIDE1MTQ2LCA0NDc4MCwgCisgICAgNDQ3ODUsIDQ0Nzg4LCA0NDc5NCwgNDQ4MDIsIDEzNjEsIDQ0ODA3LCA0NDgxMSwgNDQ4MTYsIDQ0ODIxLCA0NDgyNiwgCisgICAgNDQ4MzMsIDQ0ODM3LCA0NDg0MiwgNDQ4NDgsIDQ0ODUyLCAzNDA0MCwgNDQ4NTcsIDQ0ODYyLCA0NDg3MSwgNDQ4NzgsIAorICAgIDQ0ODg4LCA0NDg5NCwgMzA1NDcsIDQ0OTExLCA0NDkyMCwgNDQ5MjgsIDQ0OTM0LCA0NDkzOSwgNDQ5NDYsIDQ0OTUyLCAKKyAgICA0NDk2MCwgNDQ5NjksIDQ0OTc3LCA0NDk4MSwgNDQ5ODYsIDQ0OTk0LCAzMTU1NiwgMzQ4NTMsIDQ1MDAwLCA0NTAxOSwgCisgICAgMTczOTMsIDQ1MDMzLCA0NTA0OSwgNDUwNjMsIDQ1MDY5LCA0NTA3NCwgNDUwNzksIDQ1MDg0LCA0NTA5MCwgMzQ4NTksIAorICAgIDQ1MDk1LCA0NTA5OCwgNDUxMDUsIDQ1MTEyLCA0NTExNywgNDUxMjEsIDQxMiwgMjk4NCwgNDUxMjgsIDQ1MTMzLCA0NTEzOCwgCisgICAgMjk3MTcsIDQ0OTQ5LCA0NTE0MiwgNDUxNDcsIDQ1MTU1LCA0NTE1OSwgNDUxNjIsIDQ1MTY3LCA0NTE3MywgNDUxNzksIAorICAgIDQ1MTg0LCA0NTE4OCwgMzA2MTQsIDQ1MTkxLCA0NTE5NiwgNDUyMDAsIDQ1MjAzLCA0NTIwOCwgNDUyMTIsIDQ1MjE3LCAKKyAgICA0NTIyMiwgNDUyMjYsIDQ1MjMxLCA0NTIzNSwgNDUyMzksIDQ1MjQzLCAyMzA0MCwgMjMwNTEsIDQ1MjQ4LCA0NTI1MywgCisgICAgNDUyNTksIDQ1MjY0LCA0NTI3MCwgMjkzMDUsIDQ1Mjc1LCA0NTI3OSwgMjMxMzcsIDE3Njk2LCA0NTI4MiwgNDUyODcsIAorICAgIDQ1MjkyLCA0NTI5NywgNDUzMDIsIDQ1MzA3LCA0NTMxMiwgNDUzMTcsIDQ2NSwgNjgsIDM0MDUzLCAzNDA1OCwgMzQwNjMsIAorICAgIDM0MDY5LCAzNDA3NCwgMzQwNzksIDQ1MzIyLCAzNDA4MywgNDUzMjYsIDQ1MzMwLCA0NTMzNCwgMzQwODgsIDM0MDk0LCAKKyAgICA0NTM0OCwgMzQxMDUsIDM0MTEwLCA0NTM1NiwgNDUzNjEsIDM0MTE2LCA0NTM2NiwgNDUzNzEsIDQ1Mzc2LCA0NTM4MSwgCisgICAgNDUzOTAsIDQ1Mzk2LCA0NTQwMiwgNDU0MDgsIDM0MTMzLCA0NTQyMSwgNDU0MzAsIDQ1NDM2LCAzNDEzNywgNDU0NDAsIAorICAgIDM0MTQyLCA0NTQ0NSwgMzQxNDcsIDM0MTUyLCA0NTQ0OCwgNDU0NTMsIDQ1NDU3LCA0NTQ2MywgMzM2ODEsIDQ1NDcwLCAKKyAgICAxNDkwNCwgNDU0NzcsIDQ1NDgyLCAzNDE1NywgNDU0ODYsIDQ1NDkxLCA0NTQ5NiwgNDU1MDEsIDQ1NTA1LCA0NTUxMCwgCisgICAgNDU1MTUsIDQ1NTIxLCA0NTUyNiwgNDU1MzEsIDQ1NTM3LCA0NTU0MywgNDU1NDgsIDQ1NTUyLCA0NTU1NywgNDU1NjIsIAorICAgIDQ1NTY3LCA0NTU3MSwgNDU1NzYsIDQ1NTgxLCA0NTU4NiwgNDU1OTIsIDQ1NTk4LCA0NTYwNCwgNDU2MDksIDQ1NjEzLCAKKyAgICA0NTYxOCwgNDU2MjIsIDM0MTYxLCAzNDE2NiwgMzQxNzEsIDQ1NjI2LCA0NTYzMCwgNDU2MzUsIDQ1NjM5LCAzNDE3NiwgCisgICAgMzQxODIsIDM0MTg4LCAzNDIwMCwgNDU2NTEsIDI4MzE0LCA0NTY1NSwgNDU2NjAsIDQ1NjY0LCA0NTY2OSwgNDU2NzYsIAorICAgIDQ1NjgxLCA0NTY4NiwgNDU2OTEsIDQ1Njk1LCA0NTY5OSwgNDU3MDksIDQ1NzE0LCA0NTcxOSwgNDU3MjMsIDQ1NzI3LCAKKyAgICA0NTczMCwgNDU3MzgsIDM0MjQ4LCA0NTc0MywgMTQ0NiwgNDU3NDksIDQ1NzU0LCA0NTc2MCwgNDU3NjgsIDQ1NzcyLCAKKyAgICA0NTc4MSwgNDU3ODksIDQ1NzkzLCA0NTc5NywgNDU4MDUsIDQ1ODExLCA0NTgxOSwgNDU4MzUsIDQ1ODM5LCA0NTg0MywgCisgICAgNDU4NDcsIDQ1ODUyLCA0NTg1OCwgNDU4NzMsIDM0Mjg1LCAxNzQ1LCAxMzMwOCwgNDU4NzcsIDEzNDAsIDEzNTUsIDQ1ODg5LCAKKyAgICA0NTg5NywgNDU5MDQsIDQ1OTA5LCA0NTkxNiwgNDU5MjEsIDEwMDEyLCAxMDk2LCAyNTI5LCAxMTMxMSwgNDU5MjgsIDk5MTAsIAorICAgIDQ1OTMzLCA0NTkzNiwgNDU5NDUsIDEyNDgsIDQ1OTUwLCA0NDA4NiwgNDU5NTcsIDQ1OTY2LCA0NTk3MSwgNDU5NzUsIAorICAgIDQ1OTgzLCAyNDUyNiwgMjU4MSwgNDU5OTAsIDExNzc2LCA0NjAwMCwgNDYwMDYsIDIzNTYsIDIzNjYsIDQ2MDE1LCA0NjAyNCwgCisgICAgNDYwMzQsIDQ2MDQ1LCAzMzY1LCAzNzQ4NSwgNDYwNTAsIDExMzc1LCA0MDI0LCAxODQwMCwgMTI1MywgNDYwNTQsIDQ2MDYyLCAKKyAgICA0NjA2OSwgNDYwNzQsIDQ2MDc4LCA0NjA4MiwgMjYwMTgsIDQ0MzU1LCAxMTQwMiwgNDYwOTAsIDQ2MDk5LCA0NjEwOCwgCisgICAgNDYxMTYsIDQ2MTIzLCA0NjEzNCwgNDYxMzksIDQ2MTUyLCA0NjE2NSwgNDYxNzcsIDQ2MTg5LCA0NjIwMSwgNDYyMTIsIAorICAgIDQ2MjI1LCA0NjIzNiwgNDYyNDcsIDQ2MjU3LCA0NjI2NSwgNDYyNzMsIDQ2Mjg1LCA0NjI5NywgNDYzMDgsIDQ2MzE3LCAKKyAgICA0NjMyNSwgNDYzMzIsIDQ2MzQ0LCA0NjM1MSwgNDYzNTcsIDQ2MzY2LCA0NjM3MywgNDYzODYsIDQ2MzkxLCA0NjQwMSwgCisgICAgNDY0MDYsIDQ2NDEyLCA0NjQxNywgNDE1MjgsIDQ2NDIxLCA0NjQyOCwgNDY0MzIsIDQ2NDM5LCA0NjQ0NywgNDY0NTQsIAorICAgIDI1NDIsIDQ2NDYxLCA0NjQ3MiwgNDY0ODIsIDQ2NDkxLCA0NjQ5OSwgNDY1MDksIDQ2NTE3LCA0NjUyNiwgNDY1MzYsIAorICAgIDQ2NTQ1LCA0NjU1MCwgNDY1NTYsIDQ2NTYyLCAzODk4LCA0NjU3MywgNDY1ODMsIDQ2NTkyLCA0NjYwMSwgNDY2MDksIAorICAgIDQ2NjE5LCA0NjYyNywgNDY2MzYsIDQ2NjQxLCA0NjY0NiwgNDY2NTEsIDE2NzUsIDQ3LCA0NjY1OSwgNDY2NjcsIDQ2Njc4LCAKKyAgICA0NjY4OSwgMTgwMzksIDQ2Njk5LCA0NjcwMywgNDY3MTAsIDQ2NzE2LCA0NjcyMSwgNDY3MjUsIDQ2NzM2LCA0Njc0NiwgCisgICAgNDY3NTUsIDQ2NzY2LCAxODQzOSwgMTg0NDQsIDQ2NzcxLCA0Njc4MCwgNDY3ODUsIDQ2Nzk1LCA0NjgwMCwgNDY4MDgsIAorICAgIDQ2ODE2LCA0NjgyMywgNDY4MjksIDE2MzcsIDI4MywgNDY4MzMsIDQ2ODM5LCA0Njg0NCwgNDY4NDcsIDIxMjgsIDQ0MjA5LCAKKyAgICA0Njg1NSwgNDY4NTksIDQ2ODYyLCAxNDkxLCA0Njg2OCwgMTUzMzEsIDEyNTgsIDQ2ODczLCA0Njg4NiwgNDY5MDAsIDI2NzEsIAorICAgIDQ2OTE4LCA0NjkzMCwgNDY5NDIsIDI2ODUsIDI3MDIsIDQ2OTU2LCA0Njk2OSwgMjcxNywgNDY5ODMsIDQ2OTk1LCAyNzMyLCAKKyAgICA0NzAwOSwgMTI2NCwgMTI3MCwgMTI3NiwgMTE2ODIsIDQ3MDE0LCA0NzAxOSwgNDcwMjQsIDQ3MDI4LCA0NzA0MywgNDcwNTgsIAorICAgIDQ3MDczLCA0NzA4OCwgNDcxMDMsIDQ3MTE4LCA0NzEzMywgNDcxNDgsIDQ3MTYzLCA0NzE3OCwgNDcxOTMsIDQ3MjA4LCAKKyAgICA0NzIyMywgNDcyMzgsIDQ3MjUzLCA0NzI2OCwgNDcyODMsIDQ3Mjk4LCA0NzMxMywgNDczMjgsIDQ3MzQzLCA0NzM1OCwgCisgICAgNDczNzMsIDQ3Mzg4LCA0NzQwMywgNDc0MTgsIDQ3NDMzLCA0NzQ0OCwgNDc0NjMsIDQ3NDc4LCA0NzQ5MywgNDc1MDgsIAorICAgIDQ3NTIzLCA0NzUzOCwgNDc1NTMsIDQ3NTY4LCA0NzU4MywgNDc1OTgsIDQ3NjEzLCA0NzYyOCwgNDc2NDMsIDQ3NjU4LCAKKyAgICA0NzY3MywgNDc2ODgsIDQ3NzAzLCA0NzcxOCwgNDc3MzMsIDQ3NzQ4LCA0Nzc2MywgNDc3NzgsIDQ3NzkzLCA0NzgwOCwgCisgICAgNDc4MjMsIDQ3ODM4LCA0Nzg1MywgNDc4NjgsIDQ3ODgzLCA0Nzg5OCwgNDc5MTMsIDQ3OTI4LCA0Nzk0MywgNDc5NTgsIAorICAgIDQ3OTczLCA0Nzk4OCwgNDgwMDMsIDQ4MDE4LCA0ODAzMywgNDgwNDgsIDQ4MDYzLCA0ODA3OCwgNDgwOTMsIDQ4MTA4LCAKKyAgICA0ODEyMywgNDgxMzgsIDQ4MTUzLCA0ODE2OCwgNDgxODMsIDQ4MTk4LCA0ODIxMywgNDgyMjgsIDQ4MjQzLCA0ODI1OCwgCisgICAgNDgyNzMsIDQ4Mjg4LCA0ODMwMywgNDgzMTgsIDQ4MzMzLCA0ODM0OCwgNDgzNjMsIDQ4Mzc4LCA0ODM5MywgNDg0MDgsIAorICAgIDQ4NDIzLCA0ODQzOCwgNDg0NTMsIDQ4NDY4LCA0ODQ4MywgNDg0OTgsIDQ4NTEzLCA0ODUyOCwgNDg1NDMsIDQ4NTU4LCAKKyAgICA0ODU3MywgNDg1ODgsIDQ4NjAzLCA0ODYxOCwgNDg2MzMsIDQ4NjQ4LCA0ODY2MywgNDg2NzgsIDQ4NjkzLCA0ODcwOCwgCisgICAgNDg3MjMsIDQ4NzM4LCA0ODc1MywgNDg3NjgsIDQ4NzgzLCA0ODc5OCwgNDg4MTMsIDQ4ODI4LCA0ODg0MywgNDg4NTgsIAorICAgIDQ4ODczLCA0ODg4OCwgNDg5MDMsIDQ4OTE4LCA0ODkzMywgNDg5NDgsIDQ4OTYzLCA0ODk3OCwgNDg5OTMsIDQ5MDA4LCAKKyAgICA0OTAyMywgNDkwMzgsIDQ5MDUzLCA0OTA2OCwgNDkwODMsIDQ5MDk4LCA0OTExMywgNDkxMjgsIDQ5MTQzLCA0OTE1OCwgCisgICAgNDkxNzMsIDQ5MTg4LCA0OTIwMywgNDkyMTgsIDQ5MjMzLCA0OTI0OCwgNDkyNjMsIDQ5Mjc4LCA0OTI5MywgNDkzMDgsIAorICAgIDQ5MzIzLCA0OTMzOCwgNDkzNTMsIDQ5MzY4LCA0OTM4MywgNDkzOTgsIDQ5NDEzLCA0OTQyOCwgNDk0NDMsIDQ5NDU4LCAKKyAgICA0OTQ3MywgNDk0ODgsIDQ5NTAzLCA0OTUxOCwgNDk1MzMsIDQ5NTQ4LCA0OTU2MywgNDk1NzgsIDQ5NTkzLCA0OTYwOCwgCisgICAgNDk2MjMsIDQ5NjM4LCA0OTY1MywgNDk2NjgsIDQ5NjgzLCA0OTY5OCwgNDk3MTMsIDQ5NzI4LCA0OTc0MywgNDk3NTgsIAorICAgIDQ5NzczLCA0OTc4OCwgNDk4MDMsIDQ5ODE4LCA0OTgzMywgNDk4NDgsIDQ5ODYzLCA0OTg3OCwgNDk4OTMsIDQ5OTA4LCAKKyAgICA0OTkyMywgNDk5MzgsIDQ5OTUzLCA0OTk2OCwgNDk5ODMsIDQ5OTk4LCA1MDAxMywgNTAwMjgsIDUwMDQzLCA1MDA1OCwgCisgICAgNTAwNzMsIDUwMDg4LCA1MDEwMywgNTAxMTgsIDUwMTMzLCA1MDE0OCwgNTAxNjMsIDUwMTc4LCA1MDE5MywgNTAyMDgsIAorICAgIDUwMjIzLCA1MDIzOCwgNTAyNTMsIDUwMjY4LCA1MDI4MywgNTAyOTgsIDUwMzEzLCA1MDMyOCwgNTAzNDMsIDUwMzU4LCAKKyAgICA1MDM3MywgNTAzODgsIDUwNDAzLCA1MDQxOCwgNTA0MzMsIDUwNDQ4LCA1MDQ2MywgNTA0NzgsIDUwNDkzLCA1MDUwOCwgCisgICAgNTA1MjMsIDUwNTM4LCA1MDU1MywgNTA1NjgsIDUwNTgzLCA1MDU5OCwgNTA2MTMsIDUwNjI4LCA1MDY0MywgNTA2NTgsIAorICAgIDUwNjczLCA1MDY4OCwgNTA3MDMsIDUwNzE4LCA1MDczMywgNTA3NDgsIDUwNzYzLCA1MDc3OCwgNTA3OTMsIDUwODA4LCAKKyAgICA1MDgyMywgNTA4MzgsIDUwODUzLCA1MDg2OCwgNTA4ODMsIDUwODk4LCA1MDkxMywgNTA5MjgsIDUwOTQzLCA1MDk1OCwgCisgICAgNTA5NzMsIDUwOTg4LCA1MTAwMywgNTEwMTgsIDUxMDMzLCA1MTA0OCwgNTEwNjMsIDUxMDc4LCA1MTA5MywgNTExMDgsIAorICAgIDUxMTIzLCA1MTEzOCwgNTExNTMsIDUxMTY4LCA1MTE4MywgNTExOTgsIDUxMjEzLCA1MTIyOCwgNTEyNDMsIDUxMjU4LCAKKyAgICA1MTI3MywgNTEyODgsIDUxMzAzLCA1MTMxOCwgNTEzMzMsIDUxMzQ4LCA1MTM2MywgNTEzNzgsIDUxMzkzLCA1MTQwOCwgCisgICAgNTE0MjMsIDUxNDM4LCA1MTQ1MywgNTE0NjgsIDUxNDgzLCA1MTQ5OCwgNTE1MTMsIDUxNTI4LCA1MTU0MywgNTE1NTgsIAorICAgIDUxNTczLCA1MTU4OCwgNTE2MDMsIDUxNjE4LCA1MTYzMywgNTE2NDgsIDUxNjYzLCA1MTY3OCwgNTE2OTMsIDUxNzA4LCAKKyAgICA1MTcyMywgNTE3MzgsIDUxNzUzLCA1MTc2OCwgNTE3ODMsIDUxNzk4LCA1MTgxMywgNTE4MjgsIDUxODQzLCA1MTg1OCwgCisgICAgNTE4NzMsIDUxODg4LCA1MTkwMywgNTE5MTgsIDUxOTMzLCA1MTk0OCwgNTE5NjMsIDUxOTc4LCA1MTk5MywgNTIwMDgsIAorICAgIDUyMDIzLCA1MjAzOCwgNTIwNTMsIDUyMDY4LCA1MjA4MywgNTIwOTgsIDUyMTEzLCA1MjEyOCwgNTIxNDMsIDUyMTU4LCAKKyAgICA1MjE3MywgNTIxODgsIDUyMjAzLCA1MjIxOCwgNTIyMzMsIDUyMjQ4LCA1MjI2MywgNTIyNzgsIDUyMjkzLCA1MjMwOCwgCisgICAgNTIzMjMsIDUyMzM4LCA1MjM1MywgNTIzNjgsIDUyMzgzLCA1MjM5OCwgNTI0MTMsIDUyNDI4LCA1MjQ0MywgNTI0NTgsIAorICAgIDUyNDczLCA1MjQ4OCwgNTI1MDMsIDUyNTE4LCA1MjUzMywgNTI1NDgsIDUyNTYzLCA1MjU3OCwgNTI1OTMsIDUyNjA4LCAKKyAgICA1MjYyMywgNTI2MzgsIDUyNjUzLCA1MjY2OCwgNTI2ODMsIDUyNjk4LCA1MjcxMywgNTI3MjgsIDUyNzQzLCA1Mjc1OCwgCisgICAgNTI3NzMsIDUyNzg4LCA1MjgwMywgNTI4MTgsIDUyODMzLCA1Mjg0OCwgNTI4NjMsIDUyODc4LCA1Mjg5MywgNTI5MDgsIAorICAgIDUyOTIzLCA1MjkzOCwgNTI5NTMsIDUyOTY4LCA1Mjk4MywgNTI5OTgsIDUzMDEzLCA1MzAyOCwgNTMwNDMsIDUzMDU4LCAKKyAgICA1MzA3MywgNTMwODgsIDUzMTAzLCA1MzExOCwgNTMxMzMsIDUzMTQ4LCA1MzE2MywgNTMxNzgsIDUzMTkzLCA1MzIwOCwgCisgICAgNTMyMjMsIDUzMjM4LCA1MzI1MywgNTMyNjgsIDUzMjgzLCA1MzI5OCwgNTMzMTMsIDUzMzI4LCA1MzM0MywgNTMzNTgsIAorICAgIDUzMzczLCA1MzM4OCwgNTM0MDMsIDUzNDE4LCA1MzQzMywgNTM0NDgsIDUzNDYzLCA1MzQ3OCwgNTM0OTMsIDUzNTA4LCAKKyAgICA1MzUyMywgNTM1MzgsIDUzNTUzLCA1MzU2OCwgNTM1ODMsIDUzNTk4LCA1MzYxMywgNTM2MjgsIDUzNjQzLCA1MzY1OCwgCisgICAgNTM2NzMsIDUzNjg4LCA1MzcwMywgNTM3MTgsIDUzNzMzLCA1Mzc0OCwgNTM3NjMsIDUzNzc4LCA1Mzc5MywgNTM4MDgsIAorICAgIDUzODIzLCA1MzgzOCwgNTM4NTMsIDUzODY4LCA1Mzg4MywgNTM4OTgsIDUzOTEzLCA1MzkyOCwgNTM5NDMsIDUzOTU4LCAKKyAgICA1Mzk3MywgNTM5ODgsIDU0MDAzLCA1NDAxOCwgNTQwMzMsIDU0MDQ4LCA1NDA2MywgNTQwNzgsIDU0MDkzLCA1NDEwOCwgCisgICAgNTQxMjMsIDU0MTM4LCA1NDE1MywgNTQxNjgsIDU0MTgzLCA1NDE5OCwgNTQyMTMsIDU0MjI4LCA1NDI0MywgNTQyNTgsIAorICAgIDU0MjczLCA1NDI4OCwgNTQzMDMsIDU0MzE4LCA1NDMzMywgNTQzNDgsIDU0MzYzLCA1NDM3OCwgNTQzOTMsIDU0NDA4LCAKKyAgICA1NDQyMywgNTQ0MzgsIDU0NDUzLCA1NDQ2OCwgNTQ0ODMsIDU0NDk4LCA1NDUxMywgNTQ1MjgsIDU0NTQzLCA1NDU1OCwgCisgICAgNTQ1NzMsIDU0NTg4LCA1NDYwMywgNTQ2MTgsIDU0NjMzLCA1NDY0OCwgNTQ2NjMsIDU0Njc4LCA1NDY5MywgNTQ3MDgsIAorICAgIDU0NzIzLCA1NDczOCwgNTQ3NTMsIDU0NzY4LCA1NDc4MywgNTQ3OTgsIDU0ODEzLCA1NDgyOCwgNTQ4NDMsIDU0ODU5LCAKKyAgICA1NDg3NSwgNTQ4OTEsIDU0OTA3LCA1NDkyMywgNTQ5MzksIDU0OTU1LCA1NDk3MSwgNTQ5ODcsIDU1MDAzLCA1NTAxOSwgCisgICAgNTUwMzUsIDU1MDUxLCA1NTA2NywgNTUwODMsIDU1MDk5LCA1NTExNSwgNTUxMzEsIDU1MTQ3LCA1NTE2MywgNTUxNzksIAorICAgIDU1MTk1LCA1NTIxMSwgNTUyMjcsIDU1MjQzLCA1NTI1OSwgNTUyNzUsIDU1MjkxLCA1NTMwNywgNTUzMjMsIDU1MzM5LCAKKyAgICA1NTM1NSwgNTUzNzEsIDU1Mzg3LCA1NTQwMywgNTU0MTksIDU1NDM1LCA1NTQ1MSwgNTU0NjcsIDU1NDgzLCA1NTQ5OSwgCisgICAgNTU1MTUsIDU1NTMxLCA1NTU0NywgNTU1NjMsIDU1NTc5LCA1NTU5NSwgNTU2MTEsIDU1NjI3LCA1NTY0MywgNTU2NTksIAorICAgIDU1Njc1LCA1NTY5MSwgNTU3MDcsIDU1NzIzLCA1NTczOSwgNTU3NTUsIDU1NzcxLCA1NTc4NywgNTU4MDMsIDU1ODE5LCAKKyAgICA1NTgzNSwgNTU4NTEsIDU1ODY3LCA1NTg4MywgNTU4OTksIDU1OTE1LCA1NTkzMSwgNTU5NDcsIDU1OTYzLCA1NTk3OSwgCisgICAgNTU5OTUsIDU2MDExLCA1NjAyNywgNTYwNDMsIDU2MDU5LCA1NjA3NSwgNTYwOTEsIDU2MTA3LCA1NjEyMywgNTYxMzksIAorICAgIDU2MTU1LCA1NjE3MSwgNTYxODcsIDU2MjAzLCA1NjIxOSwgNTYyMzUsIDU2MjUxLCA1NjI2NywgNTYyODMsIDU2Mjk5LCAKKyAgICA1NjMxNSwgNTYzMzEsIDU2MzQ3LCA1NjM2MywgNTYzNzksIDU2Mzk1LCA1NjQxMSwgNTY0MjcsIDU2NDQzLCA1NjQ1OSwgCisgICAgNTY0NzUsIDU2NDkxLCA1NjUwNywgNTY1MjMsIDU2NTM5LCA1NjU1NSwgNTY1NzEsIDU2NTg3LCA1NjYwMywgNTY2MTksIAorICAgIDU2NjM1LCA1NjY1MSwgNTY2NjcsIDU2NjgzLCA1NjY5OSwgNTY3MTUsIDU2NzMxLCA1Njc0NywgNTY3NjMsIDU2Nzc5LCAKKyAgICA1Njc5NSwgNTY4MTEsIDU2ODI3LCA1Njg0MywgNTY4NTksIDU2ODc1LCA1Njg5MSwgNTY5MDcsIDU2OTIzLCA1NjkzOSwgCisgICAgNTY5NTUsIDU2OTcxLCA1Njk4NywgNTcwMDMsIDU3MDE5LCA1NzAzNSwgNTcwNTEsIDU3MDY3LCA1NzA4MywgNTcwOTksIAorICAgIDU3MTE1LCA1NzEzMSwgNTcxNDcsIDU3MTYzLCA1NzE3OSwgNTcxOTUsIDU3MjExLCA1NzIyNywgNTcyNDMsIDU3MjU5LCAKKyAgICA1NzI3NSwgNTcyOTEsIDU3MzA3LCA1NzMyMywgNTczMzksIDU3MzU1LCA1NzM3MSwgNTczODcsIDU3NDAzLCA1NzQxOSwgCisgICAgNTc0MzUsIDU3NDUxLCA1NzQ2NywgNTc0ODMsIDU3NDk5LCA1NzUxNSwgNTc1MzEsIDU3NTQ3LCA1NzU2MywgNTc1NzksIAorICAgIDU3NTk1LCA1NzYxMSwgNTc2MjcsIDU3NjQzLCA1NzY1OSwgNTc2NzUsIDU3NjkxLCA1NzcwNywgNTc3MjMsIDU3NzM5LCAKKyAgICA1Nzc1NSwgNTc3NzEsIDU3Nzg3LCA1NzgwMywgNTc4MTksIDU3ODM1LCA1Nzg1MSwgNTc4NjcsIDU3ODgzLCA1Nzg5OSwgCisgICAgNTc5MTUsIDU3OTMxLCA1Nzk0NywgNTc5NjMsIDU3OTc5LCA1Nzk5NSwgNTgwMTEsIDU4MDI3LCA1ODA0MywgNTgwNTksIAorICAgIDU4MDc1LCA1ODA5MSwgNTgxMDcsIDU4MTIzLCA1ODEzOSwgNTgxNTUsIDU4MTcxLCA1ODE4NywgNTgyMDMsIDU4MjE5LCAKKyAgICA1ODIzNSwgNTgyNTEsIDU4MjY3LCA1ODI4MywgNTgyOTksIDU4MzE1LCA1ODMzMSwgNTgzNDcsIDU4MzYzLCA1ODM3OSwgCisgICAgNTgzOTUsIDU4NDExLCA1ODQyNywgNTg0NDMsIDU4NDU5LCA1ODQ3NSwgNTg0OTEsIDU4NTA3LCA1ODUyMywgNTg1MzksIAorICAgIDU4NTU1LCA1ODU3MSwgNTg1ODcsIDU4NjAzLCA1ODYxOSwgNTg2MzUsIDU4NjUxLCA1ODY2NywgNTg2ODMsIDU4Njk5LCAKKyAgICA1ODcxNSwgNTg3MzEsIDU4NzQ3LCA1ODc2MywgNTg3NzksIDU4Nzk1LCA1ODgxMSwgNTg4MjcsIDU4ODQzLCA1ODg1OSwgCisgICAgNTg4NzUsIDU4ODkxLCA1ODkwNywgNTg5MjMsIDU4OTM5LCA1ODk1NSwgNTg5NzEsIDU4OTg3LCA1OTAwMywgNTkwMTksIAorICAgIDU5MDM1LCA1OTA1MSwgNTkwNjcsIDU5MDgzLCA1OTA5OSwgNTkxMTUsIDU5MTMxLCA1OTE0NywgNTkxNjMsIDU5MTc5LCAKKyAgICA1OTE5NSwgNTkyMTEsIDU5MjI3LCA1OTI0MywgNTkyNTksIDU5Mjc1LCA1OTI5MSwgNTkzMDcsIDU5MzIzLCA1OTMzOSwgCisgICAgNTkzNTUsIDU5MzcxLCA1OTM4NywgNTk0MDMsIDU5NDE5LCA1OTQzNSwgNTk0NTEsIDU5NDY3LCA1OTQ4MywgNTk0OTksIAorICAgIDU5NTE1LCA1OTUzMSwgNTk1NDcsIDU5NTYzLCA1OTU3OSwgNTk1OTUsIDU5NjExLCA1OTYyNywgNTk2NDMsIDU5NjU5LCAKKyAgICA1OTY3NSwgNTk2OTEsIDU5NzA3LCA1OTcyMywgNTk3MzksIDU5NzU1LCA1OTc3MSwgNTk3ODcsIDU5ODAzLCA1OTgxOSwgCisgICAgNTk4MzUsIDU5ODUxLCA1OTg2NywgNTk4ODMsIDU5ODk5LCA1OTkxNSwgNTk5MzEsIDU5OTQ3LCA1OTk2MywgNTk5NzksIAorICAgIDU5OTk1LCA2MDAxMSwgNjAwMjcsIDYwMDQzLCA2MDA1OSwgNjAwNzUsIDYwMDkxLCA2MDEwNywgNjAxMjMsIDYwMTM5LCAKKyAgICA2MDE1NSwgNjAxNzEsIDYwMTg3LCA2MDIwMywgNjAyMTksIDYwMjM1LCA2MDI1MSwgNjAyNjcsIDYwMjgzLCA2MDI5OSwgCisgICAgNjAzMTUsIDYwMzMxLCA2MDM0NywgNjAzNjMsIDYwMzc5LCA2MDM5NSwgNjA0MTEsIDYwNDI3LCA2MDQ0MywgNjA0NTksIAorICAgIDYwNDc1LCA2MDQ5MSwgNjA1MDcsIDYwNTIzLCA2MDUzOSwgNjA1NTUsIDYwNTcxLCA2MDU4NywgNjA2MDMsIDYwNjE5LCAKKyAgICA2MDYzNSwgNjA2NTEsIDYwNjY3LCA2MDY4MywgNjA2OTksIDYwNzE1LCA2MDczMSwgNjA3NDcsIDYwNzYzLCA2MDc3OSwgCisgICAgNjA3OTUsIDYwODExLCA2MDgyNywgNjA4NDMsIDYwODU5LCA2MDg3NSwgNjA4OTEsIDYwOTA3LCA2MDkyMywgNjA5MzksIAorICAgIDYwOTU1LCA2MDk3MSwgNjA5ODcsIDYxMDAzLCA2MTAxOSwgNjEwMzUsIDYxMDUxLCA2MTA2NywgNjEwODMsIDYxMDk5LCAKKyAgICA2MTExNSwgNjExMzEsIDYxMTQ3LCA2MTE2MywgNjExNzksIDYxMTk1LCA2MTIxMSwgNjEyMjcsIDYxMjQzLCA2MTI1OSwgCisgICAgNjEyNzUsIDYxMjkxLCA2MTMwNywgNjEzMjMsIDYxMzM5LCA2MTM1NSwgNjEzNzEsIDYxMzg3LCA2MTQwMywgNjE0MTksIAorICAgIDYxNDM1LCA2MTQ1MSwgNjE0NjcsIDYxNDgzLCA2MTQ5OSwgNjE1MTUsIDYxNTMxLCA2MTU0NywgNjE1NjMsIDYxNTc5LCAKKyAgICA2MTU5NSwgNjE2MTEsIDYxNjI3LCA2MTY0MywgNjE2NTksIDYxNjc1LCA2MTY5MSwgNjE3MDcsIDYxNzIzLCA2MTczOSwgCisgICAgNjE3NTUsIDYxNzcxLCA2MTc4NywgNjE4MDMsIDYxODE5LCA2MTgzNSwgNjE4NTEsIDYxODY3LCA2MTg4MywgNjE4OTksIAorICAgIDYxOTE1LCA2MTkzMSwgNjE5NDcsIDYxOTYzLCA2MTk3OSwgNjE5OTUsIDYyMDExLCA2MjAyNywgNjIwNDMsIDYyMDU5LCAKKyAgICA2MjA3NSwgNjIwOTEsIDYyMTA3LCA2MjEyMywgNjIxMzksIDYyMTU1LCA2MjE3MSwgNjIxODcsIDYyMjAzLCA2MjIxOSwgCisgICAgNjIyMzUsIDYyMjUxLCA2MjI2NywgNjIyODMsIDYyMjk5LCA2MjMxNSwgNjIzMzEsIDYyMzQ3LCA2MjM2MywgNjIzNzksIAorICAgIDYyMzk1LCA2MjQxMSwgNjI0MjcsIDYyNDQzLCA2MjQ1OSwgNjI0NzUsIDYyNDkxLCA2MjUwNywgNjI1MjMsIDYyNTM5LCAKKyAgICA2MjU1NSwgNjI1NzEsIDYyNTg3LCA2MjYwMywgNjI2MTksIDYyNjM1LCA2MjY1MSwgNjI2NjcsIDYyNjgzLCA2MjY5OSwgCisgICAgNjI3MTUsIDYyNzMxLCA2Mjc0NywgNjI3NjMsIDYyNzc5LCA2Mjc5NSwgNjI4MTEsIDYyODI3LCA2Mjg0MywgNjI4NTksIAorICAgIDYyODc1LCA2Mjg5MSwgNjI5MDcsIDYyOTIzLCA2MjkzOSwgNjI5NTUsIDYyOTcxLCA2Mjk4NywgNjMwMDMsIDYzMDE5LCAKKyAgICA2MzAzNSwgNjMwNTEsIDYzMDY3LCA2MzA4MywgNjMwOTksIDYzMTE1LCA2MzEzMSwgNjMxNDcsIDYzMTYzLCA2MzE3OSwgCisgICAgNjMxOTUsIDYzMjExLCA2MzIyNywgNjMyNDMsIDYzMjU5LCA2MzI3NSwgNjMyOTEsIDYzMzA3LCA2MzMyMywgNjMzMzksIAorICAgIDYzMzU1LCA2MzM3MSwgNjMzODcsIDYzNDAzLCA2MzQxOSwgNjM0MzUsIDYzNDUxLCA2MzQ2NywgNjM0ODMsIDYzNDk5LCAKKyAgICA2MzUxNSwgNjM1MzAsIDE2MTUyLCA2MzUzOSwgNjM1NDQsIDYzNTUwLCA2MzU1NiwgNjM1NjYsIDYzNTc0LCAxNjM5MywgCisgICAgMTY5OTksIDEwODMxLCA2MzU4NywgMTQ5OSwgMTUwMywgNjM1OTUsIDM5NzgsIDI5ODMyLCA3NTM2LCA2MzYwMSwgNjM2MDYsIAorICAgIDYzNjExLCA2MzYxNiwgNjM2MjEsIDYzNjI3LCA2MzYzMiwgNjM2MzgsIDYzNjQzLCA2MzY0OSwgNjM2NTQsIDYzNjU5LCAKKyAgICA2MzY2NCwgNjM2NjksIDYzNjc1LCA2MzY4MCwgNjM2ODUsIDYzNjkwLCA2MzY5NSwgNjM3MDAsIDYzNzA1LCA2MzcxMCwgCisgICAgNjM3MTYsIDYzNzIxLCA2MzcyNywgNjM3MzQsIDI1ODUsIDYzNzM5LCA2Mzc0NSwgODk1NywgNjM3NDksIDYzNzU0LCAKKyAgICA2Mzc2MSwgNjM3NjksIDY1LCA2Mzc3MywgNjM3NzksIDYzNzg0LCA2Mzc4OSwgNjM3OTMsIDYzNzk4LCA2MzgwMiwgNjM4MDYsIAorICAgIDExNzE5LCA2MzgxMCwgNjM4MjAsIDYzODMzLCA2Mzg0NCwgNjM4NTcsIDYzODY0LCA2Mzg3MCwgMTEyMzYsIDYzODc4LCAKKyAgICA2Mzg4MywgNjM4ODksIDYzODk1LCA2MzkwMSwgNjM5MDYsIDYzOTExLCA2MzkxNiwgNjM5MjEsIDYzOTI1LCA2MzkzMCwgCisgICAgNjM5MzUsIDYzOTQwLCA2Mzk0NiwgNjM5NTIsIDYzOTU4LCA2Mzk2MywgNjM5NjcsIDYzOTcyLCA2Mzk3NywgNjM5ODEsIAorICAgIDYzOTg2LCA2Mzk5MSwgNjM5OTYsIDY0MDAwLCAxMTczNSwgMTE3NDYsIDExNzUxLCAxNTQyLCA2NDAwNCwgNjQwMTAsIAorICAgIDE1NDcsIDE3ODkwLCA2NDAxNSwgMTc4OTksIDY0MDIwLCA2NDAyNiwgNjQwMzEsIDE1NzgsIDY0MDM3LCAxNTg0LCAxNTkwLCAKKyAgICAxMTc4MSwgNjQwNDIsIDY0MDUxLCA2NDA1OSwgNjQwNjcsIDY0MDc0LCA2NDA3OCwgNjQwODIsIDY0MDg4LCA2NDA5MywgCisgICAgMzM3MjEsIDY0MDk4LCA2NDEwNSwgNjQxMTIsIDY0MTE3LCA2NDEyMSwgNjQxMjUsIDY0MTM0LCAxNTk1LCAxODAwOCwgCisgICAgNjQxMzksIDY0MTQzLCAxODAxOSwgMTEyNiwgNjQxNDcsIDY0MTU0LCA2NDE1OSwgNjQxNjMsIDE4MDU1LCAxNTk5LCAKKyAgICA0MTY4NSwgNjQxNjYsIDY0MTcxLCA2NDE4MSwgNjQxOTAsIDY0MTk1LCA2NDE5OSwgNjQyMDUsIDE2MDQsIDQ0MzE2LCAKKyAgICA2NDIxMCwgNjQyMTksIDY0MjI1LCA2NDIzMCwgNjQyMzUsIDExOTkyLCAxMTk5OCwgNjQyNDEsIDY0MjUzLCA2NDI3MCwgCisgICAgNjQyODcsIDY0MzA0LCA2NDMyMSwgNjQzMzgsIDY0MzU1LCA2NDM3MiwgNjQzODksIDY0NDA2LCA2NDQyMywgNjQ0NDAsIAorICAgIDY0NDU3LCA2NDQ3NCwgNjQ0OTEsIDY0NTA4LCA2NDUyNSwgNjQ1NDIsIDY0NTU5LCA2NDU3NiwgNjQ1OTMsIDY0NjEwLCAKKyAgICA2NDYyNywgNjQ2NDQsIDY0NjYxLCA2NDY3OCwgNjQ2OTUsIDY0NzEyLCA2NDcyOSwgNjQ3NDYsIDY0NzYzLCA2NDc4MCwgCisgICAgNjQ3OTcsIDY0ODE0LCA2NDgzMSwgNjQ4NDgsIDY0ODY1LCA2NDg4MiwgNjQ4OTksIDY0OTE2LCA2NDkzMywgNjQ5NTAsIAorICAgIDY0OTY3LCA2NDk4NCwgNjUwMDEsIDY1MDE4LCA2NTAzNSwgNjUwNTIsIDY1MDY5LCA2NTA4NiwgNjUwOTcsIDY1MTA3LCAKKyAgICA2NTExMiwgMTYwOSwgNjUxMTYsIDY1MTIxLCA2NTEyNywgNjUxMzIsIDY1MTM3LCA2NTE0NCwgOTkyOSwgMTYxNCwgNjUxNTAsIAorICAgIDY1MTU5LCAzMDE2MSwgNjUxNjQsIDY1MTc1LCAxMjAwOSwgNjUxODUsIDY1MTkwLCA2NTE5NiwgNjUyMDEsIDY1MjA4LCAKKyAgICA2NTIxNCwgNjUyMTksIDE2MTksIDE4MzM4LCA2NTIyNCwgNjUyMzAsIDEyMDE5LCAxNjI0LCAxMjAyNCwgNjUyMzYsIAorICAgIDY1MjQxLCA2NTI0NywgNjUyNTIsIDY1MjU3LCA2NTI2MiwgNjUyNjcsIDY1MjcyLCA2NTI3NywgNjUyODIsIDY1Mjg3LCAKKyAgICA2NTI5MywgNjUyOTksIDY1MzA1LCA2NTMxMCwgNjUzMTQsIDY1MzE5LCA2NTMyNCwgNjUzMjgsIDY1MzMzLCA2NTMzOCwgCisgICAgNjUzNDMsIDY1MzQ4LCA2NTM1MiwgNjUzNTcsIDY1MzYzLCA2NTM2OCwgNjUzNzMsIDY1Mzc3LCA2NTM4MiwgNjUzODcsIAorICAgIDY1MzkzLCA2NTM5OCwgNjU0MDMsIDY1NDA5LCA2NTQxNSwgNjU0MjAsIDY1NDI0LCA2NTQyOSwgNjU0MzQsIDY1NDM5LCAKKyAgICA2NTQ0MywgNjU0NDgsIDY1NDUzLCA2NTQ1OCwgNjU0NjQsIDY1NDcwLCA2NTQ3NSwgNjU0NzksIDY1NDgzLCA2NTQ4OCwgCisgICAgNjU0OTMsIDY1NDk4LCAzMTczNSwgNjU1MDIsIDY1NTA3LCA2NTUxMiwgNjU1MTgsIDY1NTIzLCA2NTUyOCwgNjU1MzIsIAorICAgIDY1NTM3LCA2NTU0MiwgNjU1NDgsIDY1NTUzLCA2NTU1OCwgNjU1NjQsIDY1NTcwLCA2NTU3NSwgNjU1NzksIDY1NTg0LCAKKyAgICA2NTU4OSwgNjU1OTMsIDY1NTk4LCA2NTYwMywgNjU2MDgsIDY1NjE0LCA2NTYyMCwgNjU2MjUsIDY1NjI5LCA2NTYzNCwgCisgICAgNjU2MzksIDY1NjQzLCA2NTY0OCwgNjU2NTMsIDY1NjU4LCA2NTY2MywgNjU2NjcsIDY1NjcwLCA2NTY3MywgNjU2NzgsIAorICAgIDY1NjgzLCAzNDQxMiwgNjU2OTAsIDY1Njk4LCAzNjkwLCAzMDExMSwgNjU3MDQsIDY1NzExLCA2NTcxNywgMzgyOSwgCisgICAgMTIxMzAsIDY1NzIzLCA2NTczMywgNjU3NDgsIDY1NzU2LCAxMjEzNSwgNjU3NjcsIDY1NzcyLCA2NTc4MywgNjU3OTUsIAorICAgIDY1ODA3LCA2NTgxOSwgMjcyMywgNjU4MzEsIDY1ODM2LCA2NTg0OCwgNjU4NTIsIDY1ODU4LCA2NTg2NCwgNjU4NjksIAorICAgIDY1ODc4LCAxNjQxLCAxNzU2NSwgNjU4ODUsIDY1ODkwLCA0NDM3NSwgNjU4OTQsIDY1ODk4LCA2NTkwMywgNjU5MDcsIAorICAgIDE4NDc5LCA2NTkxMiwgNjU5MTUsIDY1OTIwLCA2NTkyOCwgNjU5MzYsIDE2NDUsIDEyMTcxLCAxMjE3NywgMTY1MCwgCisgICAgNjU5NDQsIDY1OTUxLCA2NTk1NiwgNjU5NjUsIDY1OTc1LCA2NTk4MiwgNjU5ODcsIDY1OTkyLCAxNjU1LCA2NTk5OSwgCisgICAgNjYwMDQsIDE4NTk5LCA2NjAwOCwgNjYwMTMsIDY2MDIwLCA2NjAyNiwgNjYwMzAsIDY2MDQxLCA2NjA1MSwgNjYwNTgsIAorICAgIDE4NjIxLCA5ODIzLCA5ODMwLCA0MDI3LCA0MDMzLCA2NjA2NSwgMTY2MCwgNjYwNzAsIDY2MDc2LCA2NjA4NCwgNjYwOTEsIAorICAgIDY2MDk3LCA2NjEwNCwgNjYxMTYsIDY2MTIyLCA2NjEyNywgNjYxMzksIDY2MTUwLCA2NjE1OSwgNjYxNjksIDM5NTcsIAorICAgIDY2MTc3LCAzMzUxNSwgMzM1MjQsIDE4NjYxLCAxNjY1LCAxNjY5LCA2NjE5MCwgNjYxOTQsIDY2MTk3LCA2NjIwOCwgCisgICAgNjYyMTMsIDE2NzksIDY2MjIxLCA2NjIyNiwgNjYyMzEsIDE4NzIwLCA2NjI0MywgNjYyNDYsIDY2MjUyLCA2NjI1OCwgCisgICAgNjYyNjMsIDY2MjcxLCAxNjg0LCA2NjI3NiwgNjYyODEsIDY2Mjg5LCA2NjI5NywgNjYzMDQsIDY2MzEzLCA2NjMyMSwgCisgICAgNjYzMzAsIDE2ODksIDY2MzM0LCAxNjk0LCAyMzIwOCwgNjYzMzksIDY2MzQ2LCAxODgwMCwgNjYzNTQsIDY2MzY0LCAKKyAgICA2NjM3MCwgNjYzNzUsIDY2MzgzLCA2NjM5MCwgNjYzOTksIDY2NDA3LCA2NjQxNywgNjY0MjYsIDY2NDM2LCA2NjQ0NSwgCisgICAgNjY0NTYsIDY2NDY2LCA2NjQ3NiwgNjY0ODUsIDY2NDk1LCA2NjUwOSwgNjY1MjIsIDY2NTMxLCA2NjUzOSwgNjY1NDksIAorICAgIDY2NTU4LCA2NjU3MCwgNjY1ODEsIDY2NTkyLCA2NjYwMiwgMTgxMTIsIDY2NjA3LCAxMjMyMywgNjY2MTYsIDY2NjIyLCAKKyAgICA2NjYyNywgNjY2MzQsIDY2NjQxLCA2NjY0NywgMTc3NzEsIDY2NjU3LCA2NjY2MywgNjY2NjgsIDY2Njc5LCA2NjY4NCwgCisgICAgNjY2OTIsIDEyMzQwLCAxMjM0NSwgNjY3MDAsIDY2NzA2LCA2NjcxMCwgNjY3MTgsIDQwMjIsIDE4ODY5LCA0NDQ2OCwgCisgICAgNjY3MjMsIDY2NzI5LCA2NjczNCwgNjY3NDIsIDY2NzQ5LCAxMzI4OSwgNjY3NTQsIDY2NzYwLCAxNzA1LCA2Njc2NSwgCisgICAgNjY3NjgsIDE0MTksIDY2Nzc0LCA2Njc3OSwgNjY3ODQsIDY2NzkwLCA2Njc5NSwgNjY4MDAsIDY2ODA1LCA2NjgxMCwgCisgICAgNjY4MTUsIDY2ODIwLCAxNzE0LCAxMywgNjY4MjYsIDY2ODMwLCA2NjgzNSwgNjY4MzksIDY2ODQzLCA2Njg0NywgMzQ2NTIsIAorICAgIDY2ODUyLCAyNTI5NiwgNjY4NTcsIDY2ODYyLCA2Njg2NiwgNjY4NjksIDY2ODczLCA2Njg3NywgNjY4ODIsIDY2ODg2LCAKKyAgICA2Njg5MSwgNjY4OTUsIDY2OTAxLCAzNzkxMCwgMzc5MTUsIDM3OTIwLCA2NjkwNCwgNjY5MTEsIDY2OTE3LCA2NjkyNSwgCisgICAgNDQxMzksIDY2OTM1LCAzNzkyNiwgMzQ5MTYsIDM0NjY3LCAzNDY3MywgMzc5NDIsIDM0Njc5LCA2Njk0MCwgNjY5NDUsIAorICAgIDM0OTQ5LCA2Njk0OSwgNjY5NTIsIDY2OTU2LCA2Njk2NCwgNjY5NzEsIDY2OTc0LCA2Njk3OSwgNjY5ODQsIDY2OTg4LCAKKyAgICA2Njk5MiwgNjY5OTUsIDY3MDA1LCA2NzAxNywgNjcwMjQsIDY3MDMwLCAzNDY4NCwgNjcwMzcsIDM2NDQzLCA2NzA0MCwgCisgICAgODk3NCwgMTA1MiwgNjcwNDMsIDY3MDQ3LCA2NzA1MiwgMzg3MiwgNjcwNTYsIDY3MDU5LCAxNDkzNywgNjcwNjYsIDY3MDczLCAKKyAgICA2NzA4NiwgNjcwOTQsIDY3MTAzLCA2NzExMiwgNjcxMTcsIDY3MTI3LCA2NzE0MCwgNjcxNTIsIDY3MTU5LCA2NzE2NCwgCisgICAgNjcxNzMsIDY3MTg2LCAzOTQ0OSwgNjcyMDQsIDY3MjA5LCA2NzIxNiwgNjcyMjIsIDY3MjI3LCA4MzUsIDY3MjMyLCAKKyAgICA2NzI0MCwgNjcyNDcsIDY3MjU0LCAyOTY1OCwgODAzLCA2NzI2MCwgNjcyNjYsIDY3Mjc2LCA2NzI4NCwgNjcyOTAsIAorICAgIDY3Mjk1LCAzNDcwMywgNjMzNCwgMzQ3MTcsIDY3Mjk5LCA2NzMwOSwgNjczMTQsIDY3MzIyLCA2NzMzMiwgNjczNDcsIAorICAgIDY3MzUzLCA2NzM1OSwgMzQ3MjcsIDY3MzY0LCAzMzgzOCwgNjczNjgsIDY3MzczLCA2NzM4MCwgNjczODUsIDY3Mzg5LCAKKyAgICA2NzM5NCwgMTg2NjQsIDY3NDAxLCA2NzQwNiwgNjc0MTAsIDYzNzUsIDM0NzUzLCA2NzQxNCwgNjc0MjAsIDMyNSwgNjc0MzAsIAorICAgIDY3NDM3LCA2NzQ0MywgNjc0NTAsIDY3NDU1LCA2NzQ2NCwgMTQ1NzMsIDY0MTc1LCA2NDE4NSwgNjc0NzAsIDY3NDc4LCAKKyAgICA2NzQ4MiwgNjc0ODYsIDY3NDkwLCA2NzQ5NCwgNjc0OTksIDY3NTAzLCA2NzUwOSwgNjc1MTcsIDY3NTIyLCA2NzUyNywgCisgICAgNjc1MzIsIDY3NTM2LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1NSwgNjc1NjEsIDY3NTY2LCA2NzU3MCwgNjc1NzUsIAorICAgIDM0ODc3LCA2NzU3OSwgMzQ4ODMsIDM0ODg5LCA2NzU4NCwgNjc1OTAsIDY3NTk3LCA2NzYwMiwgNjc2MDYsIDMzODU1LCAKKyAgICAxODMzMSwgNjc2MDksIDY3NjEzLCA2NzYxOCwgNjc2MjUsIDY3NjMxLCA2NzYzNSwgNjc2NDAsIDQzODA0LCA2NzY0NiwgCisgICAgNjc2NTAsIDY3NjU3LCA2NzY2MSwgNjc2NjYsIDY3NjcyLCA2NzY3OCwgNjc2ODQsIDY3Njk2LCA2NzcwNSwgNjc3MTUsIAorICAgIDY3NzIxLCA2NzcyOCwgNjc3MzMsIDY3NzM4LCA2Nzc0MiwgNjc3NDUsIDY3NzUxLCA2Nzc1OCwgNjc3NjMsIDY3NzY4LCAKKyAgICA2Nzc3NSwgNjc3ODIsIDY3Nzg5LCA2Nzc5NSwgNjc4MDAsIDY3ODA1LCA2NzgxMywgMzQ4OTQsIDI0NDcsIDY3ODE4LCAKKyAgICA2NzgyMywgNjc4MjksIDY3ODM0LCA2Nzg0MCwgNjc4NDUsIDY3ODUwLCA2Nzg1NSwgNjc4NjEsIDM0OTE1LCA2Nzg2NiwgCisgICAgNjc4NzIsIDY3ODc4LCA2Nzg4NCwgMzQ5ODUsIDY3ODg5LCA2Nzg5NCwgNjc4OTksIDM0OTk2LCA2NzkwNCwgNjc5MDksIAorICAgIDY3OTE0LCA2NzkyMCwgNjc5MjYsIDM1MDAxLCA2NzkzMSwgNjc5MzYsIDY3OTQxLCAzNTA1NiwgMzUwNjIsIDY3OTQ2LCAKKyAgICA2Nzk1MSwgMzUwNjcsIDM1MDg5LCAzMDQxMCwgMzUwOTUsIDM1MDk5LCA2Nzk1NiwgMTMwMTksIDY3OTYwLCA2Nzk2OCwgCisgICAgNjc5NzQsIDY3OTgyLCA2Nzk4OSwgNjc5OTUsIDY4MDA1LCA2ODAxMSwgNjgwMTgsIDExNjU0LCAzNTExMywgNjgwMjQsIAorICAgIDY4MDM3LCA2ODA0NiwgNjgwNTIsIDY4MDYxLCA2ODA2NywgMjU2MDYsIDY4MDc0LCA2ODA4MSwgNjgwOTEsIDY4MDk5LCAKKyAgICA2ODEwMiwgMzUwNTcsIDY4MTA3LCA2ODExNCwgNjgxMTksIDY4MTIzLCA2ODEyNywgNjgxMzIsIDY4MTM2LCA0MTQ3LCAKKyAgICA2ODE0MSwgNjgxNDYsIDY4MTUxLCAzODAwNCwgMzgwMDksIDY4MTU1LCAzODAyMywgNjgxNjAsIDM4MDI4LCA2ODE2NSwgCisgICAgNjgxNzEsIDM4MDQwLCAzODA0NiwgMzgwNTIsIDY4MTc2LCA2ODE4MiwgMjQ1NzUsIDY4MTkzLCA2ODE5NiwgNjgyMDgsIAorICAgIDY4MjE2LCAzNTEzNiwgNjgyMjAsIDY4MjI5LCA2ODIzOSwgNjgyNDgsIDM1MTQ2LCA2ODI1MywgNjgyNjAsIDY4MjY5LCAKKyAgICA2ODI3NSwgNjgyODMsIDY4MjkwLCA2NDI2LCA0NjkzLCA2ODI5NSwgMzUwNjgsIDY4MzAxLCA2ODMwNCwgNjgzMTAsIAorICAgIDY4MzE3LCA2ODMyMiwgNjgzMjcsIDI1NTE2LCA2ODMzMSwgNjgzMzcsIDY4MzQzLCA2ODM0OCwgNjgzNTMsIDY4MzU3LCAKKyAgICA2ODM2MywgNjgzNjksIDM2MzQ5LCAxMDg0LCAzOTA5OSwgNDA4MzQsIDQwODQwLCAzNTE3NywgMzUxODIsIDY4Mzc0LCAKKyAgICA2ODM3OCwgNjgzODIsIDY4Mzg1LCA2ODM5OCwgNjg0MDQsIDY4NDA4LCA2ODQxMSwgNjg0MTYsIDM2Njg2LCA2ODQyMCwgCisgICAgMzM4NjAsIDIzMTU4LCA2ODQyNiwgNjM1NSwgNjM2MywgOTY2MCwgNjg0MjksIDY4NDM0LCA2ODQzOSwgNjg0NDQsIDY4NDQ5LCAKKyAgICA2ODQ1NCwgNjg0NTksIDY4NDY0LCA2ODQ2OSwgNjg0NzQsIDY4NDgwLCA2ODQ4NSwgNjg0OTAsIDY4NDk2LCA2ODUwMSwgCisgICAgNjg1MDYsIDY4NTExLCA2ODUxNiwgNjg1MjEsIDY4NTI2LCA2ODUzMiwgNjg1MzcsIDY4NTQzLCA2ODU0OCwgNjg1NTMsIAorICAgIDY4NTU4LCA2ODU2MywgNjg1NjgsIDY4NTczLCA2ODU3OCwgNjg1ODMsIDY4NTg4LCA2ODU5MywgNjg1OTksIDY4NjA0LCAKKyAgICA2ODYwOSwgNjg2MTQsIDY4NjE5LCA2ODYyNCwgNjg2MjksIDY4NjM1LCA2ODY0MCwgNjg2NDUsIDY4NjUwLCA2ODY1NSwgCisgICAgNjg2NjAsIDY4NjY1LCA2ODY3MCwgNjg2NzUsIDY4NjgwLCA2ODY4NiwgNjg2OTEsIDY4Njk2LCA2ODcwMSwgNjg3MDYsIAorICAgIDY4NzEyLCA2ODcxOCwgNjg3MjMsIDY4NzI5LCA2ODczNCwgNjg3MzksIDY4NzQ0LCA2ODc0OSwgNjg3NTQsIDE0OTIsIDE1NiwgCisgICAgNjg3NTksIDY4NzYzLCA2ODc2NywgNjg3NzEsIDI3MzA2LCA2ODc3NSwgNjg3NzksIDY4Nzg0LCA2ODc4OCwgNjg3OTMsIAorICAgIDY4Nzk3LCA2ODgwMiwgNjg4MDcsIDY4ODEyLCA2ODgxNiwgNjg4MjAsIDY4ODI1LCA2ODgyOSwgMTQ2NTIsIDY4ODM0LCAKKyAgICA2ODgzOCwgNjg4NDUsIDY4ODU1LCAxNjcxOCwgNjg4NjQsIDY4ODczLCA2ODg3NywgNjg4ODIsIDY4ODg3LCA2ODg5MSwgCisgICAgNjg4OTUsIDI3MTAwLCAzMDY3LCA2ODg5OSwgNjg5MDUsIDE5MTQ0LCA2ODkwOSwgNjg5MTgsIDY4OTI2LCA2ODkzMiwgCisgICAgNjg5MzcsIDY4OTQ5LCA2ODk2MSwgNjg5NjYsIDY4OTcwLCA2ODk3NSwgNjg5NzksIDY4OTg1LCA2ODk5MSwgNjg5OTYsIAorICAgIDY5MDA2LCA2OTAxNiwgNjkwMjIsIDY5MDI3LCA2OTAzMSwgNjkwMzcsIDY5MDQyLCA2OTA0OSwgNjkwNTUsIDY5MDYwLCAKKyAgICA2OTA2OSwgNjkwNzgsIDY5MDg2LCA2OTA5MCwgMTcxMjksIDY5MDkzLCA2OTEwMiwgNjkxMTAsIDY5MTIyLCA2OTEzMywgCisgICAgNjkxNDQsIDY5MTUzLCA2OTE1NywgNjkxNjYsIDY5MTc0LCA2OTE4NCwgNjkxOTIsIDY5MTk5LCA2OTIwNSwgNjkyMTAsIAorICAgIDY5MjE5LCA2OTIyNSwgNjkyMzAsIDY5MjQxLCA2MCwgMzM2NTgsIDY5MjQ3LCAyODU4NiwgMjg1OTYsIDY5MjUzLCA2OTI2MSwgCisgICAgNjkyNjgsIDY5Mjc0LCA2OTI3OCwgNjkyODgsIDY5Mjk5LCA2OTMwNywgNjkzMTYsIDY5MzIxLCA2OTMyNiwgNjkzMzEsIAorICAgIDY5MzM1LCA2OTMzOSwgMTkwOTgsIDY5MzQ3LCA2OTM1MSwgNjkzNTcsIDY5MzY3LCA2OTM3NCwgNjkzODAsIDY5Mzg2LCAKKyAgICAzODEwMywgNjkzOTAsIDY5MzkyLCA2OTM5NSwgNjk0MDEsIDY5NDA1LCA2OTQxNiwgNjk0MjYsIDY5NDMyLCA2OTQzOSwgCisgICAgNjk0NDYsIDE0NTg5LCA2OTQ1NCwgNjk0NjAsIDY5NDY5LCA2OTQ3OCwgNjk0ODQsIDEwNzEzLCA2OTQ5MCwgNjk0OTYsIAorICAgIDY5NTAxLCA2OTUwNiwgNjk1MTMsIDY5NTE4LCA2OTUyNSwgNjk1MzEsIDY5NTM2LCA2OTU0NCwgNjk1NTcsIDY5NTY2LCAKKyAgICA2OTU3NSwgNjY0NzEsIDY2NDgxLCA2OTU4NSwgNjk1OTEsIDY5NTk3LCA2OTYwNCwgNjk2MTEsIDY5NjE4LCA2OTYyNSwgCisgICAgNjk2MzIsIDY5NjM3LCA2OTY0MSwgNjk2NDUsIDY5NjQ4LCA2OTY1OCwgNjk2NjIsIDY5Njc0LCA2OTY4MywgNjk2ODcsIAorICAgIDY5Njk4LCA2OTcwMywgNjk3MDcsIDY2NDkwLCA2OTcxMywgNjk3MjAsIDY5NzI5LCA2OTczNywgNjk3NDUsIDY5NzUwLCAKKyAgICA2OTc1NCwgNjk3NTksIDY5NzY0LCA2OTc3NCwgNjk3ODIsIDY5Nzg3LCA2OTc5MSwgNjk3OTUsIDY5ODAxLCA2OTgwOSwgCisgICAgNjk4MTYsIDY5ODI4LCA2OTgzNiwgNjk4NDcsIDY5ODU0LCA2OTg2MCwgNjk4NzAsIDY5ODc2LCA2OTg4MCwgNjk4ODksIAorICAgIDY5ODk4LCA2OTkwNSwgNjk5MTEsIDY5OTE2LCA2OTkyMCwgNjk5MjQsIDY5OTI4LCA2OTkzNywgNjk5NDYsIDY5OTU1LCAKKyAgICA2OTk2MSwgNjk5NjcsIDY5OTczLCA2OTk3OCwgNjk5ODUsIDY5OTkxLCA2OTk5OSwgNzAwMDYsIDcwMDEyLCAxMzczMiwgCisgICAgNzAwMTcsIDcwMDIzLCA3MDAyNywgMTU2NDYsIDcwMDMxLCA3MDAzNiwgNzAwNDYsIDcwMDU1LCA3MDA2MSwgNzAwNjcsIAorICAgIDcwMDc1LCA3MDA4MiwgNzAwODYsIDcwMDkwLCA3MDA5NywgNzAxMDMsIDcwMTExLCA3MDExOCwgNzAxMjQsIDcwMTM1LCAKKyAgICA3MDEzOSwgNzAxNDMsIDcwMTQ3LCA3MDE1MCwgNzAxNTYsIDcwMTYxLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE4MywgCisgICAgNzAxOTEsIDcwMTk4LCA3MDIwNCwgNzAyMTEsIDI2MTg5LCA0Mzg3MywgNzAyMTYsIDcwMjI0LCA3MDIyOCwgNzAyMzIsIAorICAgIDcwMjM1LCA3MDI0MywgNzAyNTAsIDcwMjU2LCA3MDI2NSwgNzAyNzMsIDcwMjc5LCA3MDI4NCwgNzAyODgsIDcwMjkzLCAKKyAgICA3MDI5OCwgNzAzMDIsIDcwMzA2LCA3MDMxMCwgNzAzMTUsIDcwMzI0LCA3MDMyOCwgNzAzMzUsIDQwOTQzLCA3MDMzOSwgCisgICAgNzAzNDUsIDcwMzQ5LCA3MDM1NywgNzAzNjMsIDcwMzY4LCA3MDM3OSwgNzAzODcsIDcwMzkzLCA3MDQwMiwgMjQ3MjIsIAorICAgIDcwNDEwLCA3MDQxNywgNzA0MjQsIDcwNDMxLCA3MDQzOCwgNzA0NDUsIDQ3MjAzLCAxNDQyNywgNzA0NTIsIDcwNDU5LCAKKyAgICA3MDQ2NCwgMzgxMzksIDQzNTksIDcwNDcwLCA3MDQ3NSwgNzA0ODAsIDcwNDg2LCA3MDQ5MiwgNzA0OTgsIDcwNTAzLCAKKyAgICA3MDUwOCwgNzA1MTMsIDcwNTE4LCA3MDUyNCwgNzA1MjksIDcwNTM1LCA3MDU0MCwgNzA1NDYsIDcwNTUxLCA3MDU1NiwgCisgICAgNzA1NjEsIDcwNTY2LCA3MDU3MSwgNzA1NzYsIDcwNTgxLCA3MDU4NywgNzA1OTIsIDcwNTk4LCA3MDYwMywgNzA2MDgsIAorICAgIDcwNjEzLCA3MDYxOCwgNzA2MjMsIDcwNjI4LCA3MDYzNCwgNzA2MzksIDcwNjQ0LCA3MDY0OSwgNzA2NTQsIDcwNjU5LCAKKyAgICA3MDY2NCwgNzA2NjksIDcwNjc0LCA3MDY3OSwgNzA2ODQsIDcwNjkwLCA3MDY5NSwgNzA3MDAsIDcwNzA1LCA3MDcxMCwgCisgICAgNzA3MTUsIDcwNzIwLCA3MDcyNSwgNzA3MzAsIDcwNzM2LCA3MDc0MSwgNzA3NDYsIDcwNzUxLCA3MDc1NiwgNzA3NjEsIAorICAgIDcwNzY2LCA3MDc3MSwgNzA3NzYsIDcwNzgxLCA3MDc4NiwgNzA3OTEsIDcwNzk2LCA3MDgwMiwgMTgzOSwgMjcyLCA3MDgwNywgCisgICAgNDE4MDMsIDcwODExLCA3MDgxNCwgNzA4MTksIDcwODIzLCA3MDgyNiwgMzQwNCwgNzA4MzEsIDcwODM2LCA3MDg0MCwgCisgICAgNzA4NDksIDcwODYwLCA3MDg3NywgNzA4OTUsIDY5NzQxLCA3MDkwMywgNzA5MDYsIDcwOTE2LCA3MDkyMywgNzA5MzIsIAorICAgIDcwOTQ4LCA3MDk1NywgNzA5NjcsIDcwOTcyLCA3MDk4MiwgNzA5OTEsIDcwOTk5LCA3MTAxMywgNzEwMjEsIDcxMDI1LCAKKyAgICA3MTAyOCwgNzEwMzUsIDcxMDQxLCA3MTA1MiwgNzEwNTksIDcxMDcxLCA3MTA4MiwgNzEwOTMsIDcxMTAyLCA3MTEwOSwgCisgICAgMTI1OSwgNzI3LCA3MTExOSwgMjYxOCwgNzExMjMsIDcxMTI4LCA3MTEzNywgOTI3NiwgMTkwNzEsIDIyNjU1LCA3MTE0NSwgCisgICAgNzExNTMsIDcxMTY3LCA3MTE4MCwgNzExODQsIDcxMTg5LCA3MTE5NCwgNzExOTksIDcxMjA1LCA3MTIxMSwgNzEyMTYsIAorICAgIDg5NjYsIDE2NzQ2LCA3MTIyMSwgNzEyMjUsIDcxMjMzLCA5Mzg0LCA3MTIzOCwgNzEyNDQsIDcxMjUzLCA3MTI2MSwgMTcxNywgCisgICAgMTIxODQsIDkzNSwgNjQ4OSwgNzEyNjUsIDcxMjY5LCA3MTI3OCwgNzEyODgsIDI0MDQsIDI5MzgyLCA3MTI5NywgNzEzMDMsIAorICAgIDE4NTcxLCAyOTM5NywgNzEzMDksIDQyMDcsIDEyNTYyLCA3MTMxNSwgNzEzMjIsIDY2MjAzLCA3MTMyNiwgNzEzMzAsIAorICAgIDcxMzM2LCA3MTM0MSwgNzEzNDYsIDM2MjMsIDE2MCwgMzY0OSwgNzEzNTEsIDcxMzYzLCA3MTM2NywgNzEzNzMsIDcxMzc4LCAKKyAgICAzMDE4MSwgNzEzODIsIDEyNTUwLCAyNzU4LCA0LCA3MTM4NywgNzEzOTcsIDcxNDA4LCA3MTQxNCwgNzE0MjUsIDcxNDMyLCAKKyAgICA3MTQzOCwgNzE0NDQsIDcxNDUyLCA3MTQ1OSwgNzE0NjUsIDcxNDc1LCA3MTQ4NSwgNzE0OTUsIDcxNTA0LCAyNTU5MywgCisgICAgMTI3MSwgNzE1MDksIDcxNTEzLCA3MTUxNywgNzE1MjMsIDcxNTI3LCAyNzgxLCAyNzg3LCA4OTYzLCAyMjc5LCA3MTUzMSwgCisgICAgNzE1MzUsIDcxNTQ0LCA3MTU1MiwgNzE1NjMsIDcxNTcxLCA3MTU3OSwgNzE1ODUsIDcxNTkwLCA3MTYwMSwgNzE2MTIsIAorICAgIDcxNjIwLCA3MTYyNiwgNzE2MzEsIDEwNTMyLCA3MTY0MSwgNzE2NDksIDcxNjUzLCA3MTY1NywgNzE2NjIsIDcxNjY2LCAKKyAgICA3MTY3OCwgMzA1OTcsIDE2NjcxLCA3MTY4NSwgNzE2OTUsIDcxNzAxLCA3MTcwNywgMTA2MzQsIDcxNzE3LCA3MTcyOCwgCisgICAgNzE3MzksIDcxNzQ5LCA3MTc1OCwgNzE3NjIsIDcxNzY5LCAxNzMxLCAxMDI5LCA3MTc3OSwgNzE3ODQsIDcxNzkyLCAKKyAgICA2NjAwOSwgNzE4MDAsIDcxODA1LCA3MTgxNiwgNzE4MjMsIDcxODM3LCAxNTQ4MywgNDg0LCA3MTg0NywgNzE4NTEsIAorICAgIDcxODU1LCA3MTg2MywgNzE4NzIsIDcxODgwLCA3MTg4NiwgNzE5MDAsIDcxOTA3LCA3MTkxMywgNzE5MjIsIDcxOTI5LCAKKyAgICA3MTkzOSwgNzE5NDcsIDcxOTU0LCA3MTk2MiwgNzE5NjksIDQwMjksIDE0NCwgNzE5NzcsIDcxOTg4LCA3MTk5MiwgNzIwMDQsIAorICAgIDcyMDEwLCAxMjc0MywgMTk4LCA3MjAxNSwgOTk2MSwgNzIwMjAsIDI4MjYsIDcyMDI0LCA3MjAzMSwgNzIwMzcsIDcyMDQ4LCAKKyAgICA3MjA1NiwgNzIwNjMsIDkzMzUsIDcyMDcwLCA3MjA3OSwgNzIwODcsIDQxMDcsIDcyMTAwLCA0MTI0LCA3MjEwNCwgNzIxMDksIAorICAgIDcyMTE1LCA3MjEyMCwgNzIxMjUsIDcyMTMwLCAyODMxLCA1MjAsIDcyMTM2LCA3MjE0OSwgNzIxNTMsIDcyMTU4LCAyODM2LCAKKyAgICAxODM4LCA4MjksIDcyMTYyLCA0MTI4LCA3MjE3MCwgNzIxNzYsIDcyMTgwLCA4NzMsIDcyMTkwLCA3MjE5OSwgNzIyMDQsIAorICAgIDM2NDAsIDcyMjA4LCAxNjQyNywgMTY0MzQsIDUwNTY1LCA3MjIxMiwgNDE1OSwgNDAzOSwgMTQzMTAsIDcyMjIwLCA3MjIyNywgCisgICAgNzIyMzIsIDI1NjU3LCA3MjIzNiwgNzIyNDMsIDcyMjQ5LCA3MjI1NCwgNzIyNTksIDE2NDQ3LCAxOTIsIDcyMjY0LCAKKyAgICA3MjI3NiwgNzIyODIsIDcyMjkwLCAyODQ4LCAxNzQ5LCA3MjI5OCwgNzIzMDAsIDcyMzA1LCA3MjMxMCwgNzIzMTUsIAorICAgIDcyMzIxLCA3MjMyNiwgNzIzMzEsIDcyMzM2LCA3MjM0MSwgNzIzNDYsIDcyMzUxLCA3MjM1NywgNzIzNjIsIDcyMzY3LCAKKyAgICA3MjM3MiwgNzIzNzcsIDcyMzgyLCA3MjM4NywgNzIzOTIsIDcyMzk3LCA3MjQwMywgNzI0MDgsIDcyNDEzLCA3MjQxOCwgCisgICAgNzI0MjQsIDcyNDI5LCA3MjQzNSwgNzI0NDAsIDcyNDQ1LCA3MjQ1MCwgNzI0NTUsIDcyNDYwLCA3MjQ2NSwgNzI0NzAsIAorICAgIDcyNDc2LCA3MjQ4MSwgNzI0ODcsIDcyNDkyLCA3MjQ5NywgNzI1MDIsIDcyNTA3LCA3MjUxMiwgNzI1MTcsIDcyNTIyLCAKKyAgICA3MjUyNywgNzI1MzMsIDcyNTM5LCA3MjU0NCwgNzI1NDksIDcyNTU1LCA3MjU2MCwgNzI1NjQsIDcyNTY4LCA3MjU3MywgCisgICAgNzI1NzksIDcyNTgzLCA3MjU4OSwgNzI1OTQsIDcyNTk5LCA3MjYwNSwgNzI2MTAsIDcyNjE0LCA3MjYxOSwgNzI2MjQsIAorICAgIDcyNjI4LCA3MjYzMSwgNzI2MzMsIDcyNjM3LCA3MjY0MCwgNzI2NDcsIDcyNjUyLCA3MjY1NiwgNzI2NjEsIDcyNjY1LCAKKyAgICA3MjY2OSwgNzI2NzMsIDcyNjgyLCA3MjY4NiwgMzUzODIsIDcyNjg5LCAzNTM4NywgNzI2OTYsIDcyNzAxLCAzNTM5MiwgCisgICAgNzI3MTAsIDcyNzE5LCAzNTM5OCwgNzI3MjQsIDM1NDAzLCA3MjczMywgNzI3MzgsIDEyNzg2LCA3Mjc0MiwgNzI3NDcsIAorICAgIDcyNzUyLCAzNTQwOCwgNzI3NTYsIDQ1Mzk4LCA3Mjc2MCwgNzI3NjMsIDcyNzY3LCA4NjM0LCA3Mjc3MywgNzI3NzYsIAorICAgIDcyNzgxLCA3Mjc4NiwgNzI3OTAsIDM4ODcsIDM1NDEzLCA3Mjc5MywgNzI3OTcsIDcyODAwLCA3MjgxMSwgNzI4MTYsIAorICAgIDcyODIwLCA3MjgyNiwgNzI4MzQsIDcyODQ3LCA3Mjg1NSwgNzI4NjQsIDcyODcwLCA3Mjg3NSwgNzI4ODEsIDcyODg1LCAKKyAgICA3Mjg5MSwgNzI4OTcsIDcyOTA1LCA3MjkxMCwgNzI5MTQsIDcyOTIxLCA3MjkyNywgNzI5MzUsIDcyOTQ0LCA3Mjk1MiwgCisgICAgMzU0MTYsIDcyOTU5LCA3Mjk2OSwgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTYsIDczMDA1LCA3MzAxMSwgNzMwMTgsIAorICAgIDczMDI5LCA3MzA0MSwgNzMwNDgsIDczMDU3LCA3MzA2NiwgNzMwNzUsIDczMDgyLCA3MzA4OCwgNzMwOTUsIDczMTAzLCAKKyAgICA3MzExMCwgNzMxMTgsIDczMTI3LCA3MzEzNSwgNzMxNDIsIDczMTUwLCA3MzE1OSwgNzMxNjcsIDczMTc2LCA3MzE4NiwgCisgICAgNzMxOTUsIDczMjAzLCA3MzIxMCwgNzMyMTgsIDczMjI3LCA3MzIzNSwgNzMyNDQsIDczMjU0LCA3MzI2MywgNzMyNzEsIAorICAgIDczMjgwLCA3MzI5MCwgNzMyOTksIDczMzA5LCA3MzMyMCwgNzMzMzAsIDczMzM5LCA3MzM0NywgNzMzNTQsIDczMzYyLCAKKyAgICA3MzM3MSwgNzMzNzksIDczMzg4LCA3MzM5OCwgNzM0MDcsIDczNDE1LCA3MzQyNCwgNzM0MzQsIDczNDQzLCA3MzQ1MywgCisgICAgNzM0NjQsIDczNDc0LCA3MzQ4MywgNzM0OTEsIDczNTAwLCA3MzUxMCwgNzM1MTksIDczNTI5LCA3MzU0MCwgNzM1NTAsIAorICAgIDczNTU5LCA3MzU2OSwgNzM1ODAsIDczNTkwLCA3MzYwMSwgNzM2MTMsIDczNjI0LCA3MzYzNCwgNzM2NDMsIDczNjUxLCAKKyAgICA3MzY1OCwgNzM2NjYsIDczNjc1LCA3MzY4MywgNzM2OTIsIDczNzAyLCA3MzcxMSwgNzM3MTksIDczNzI4LCA3MzczOCwgCisgICAgNzM3NDcsIDczNzU3LCA3Mzc2OCwgNzM3NzgsIDczNzg3LCA3Mzc5NSwgNzM4MDQsIDczODE0LCA3MzgyMywgNzM4MzMsIAorICAgIDczODQ0LCA3Mzg1NCwgNzM4NjMsIDczODczLCA3Mzg4NCwgNzM4OTQsIDczOTA1LCA3MzkxNywgNzM5MjgsIDczOTM4LCAKKyAgICA3Mzk0NywgNzM5NTUsIDczOTY0LCA3Mzk3NCwgNzM5ODMsIDczOTkzLCA3NDAwNCwgNzQwMTQsIDc0MDIzLCA3NDAzMywgCisgICAgNzQwNDQsIDc0MDU0LCA3NDA2NSwgNzQwNzcsIDc0MDg4LCA3NDA5OCwgNzQxMDcsIDc0MTE3LCA3NDEyOCwgNzQxMzgsIAorICAgIDc0MTQ5LCA3NDE2MSwgNzQxNzIsIDc0MTgyLCA3NDE5MywgNzQyMDUsIDc0MjE2LCA3NDIyOCwgNzQyNDEsIDc0MjUzLCAKKyAgICA3NDI2NCwgNzQyNzQsIDc0MjgzLCA3NDI5MSwgNzQyOTgsIDc0MzA2LCA3NDMxNSwgNzQzMjMsIDc0MzMyLCA3NDM0MiwgCisgICAgNzQzNTEsIDc0MzU5LCA3NDM2OCwgNzQzNzgsIDc0Mzg3LCA3NDM5NywgNzQ0MDgsIDc0NDE4LCA3NDQyNywgNzQ0MzUsIAorICAgIDc0NDQ0LCA3NDQ1NCwgNzQ0NjMsIDc0NDczLCA3NDQ4NCwgNzQ0OTQsIDc0NTAzLCA3NDUxMywgNzQ1MjQsIDc0NTM0LCAKKyAgICA3NDU0NSwgNzQ1NTcsIDc0NTY4LCA3NDU3OCwgNzQ1ODcsIDc0NTk1LCA3NDYwNCwgNzQ2MTQsIDc0NjIzLCA3NDYzMywgCisgICAgNzQ2NDQsIDc0NjU0LCA3NDY2MywgNzQ2NzMsIDc0Njg0LCA3NDY5NCwgNzQ3MDUsIDc0NzE3LCA3NDcyOCwgNzQ3MzgsIAorICAgIDc0NzQ3LCA3NDc1NywgNzQ3NjgsIDc0Nzc4LCA3NDc4OSwgNzQ4MDEsIDc0ODEyLCA3NDgyMiwgNzQ4MzMsIDc0ODQ1LCAKKyAgICA3NDg1NiwgNzQ4NjgsIDc0ODgxLCA3NDg5MywgNzQ5MDQsIDc0OTE0LCA3NDkyMywgNzQ5MzEsIDc0OTQwLCA3NDk1MCwgCisgICAgNzQ5NTksIDc0OTY5LCA3NDk4MCwgNzQ5OTAsIDc0OTk5LCA3NTAwOSwgNzUwMjAsIDc1MDMwLCA3NTA0MSwgNzUwNTMsIAorICAgIDc1MDY0LCA3NTA3NCwgNzUwODMsIDc1MDkzLCA3NTEwNCwgNzUxMTQsIDc1MTI1LCA3NTEzNywgNzUxNDgsIDc1MTU4LCAKKyAgICA3NTE2OSwgNzUxODEsIDc1MTkyLCA3NTIwNCwgNzUyMTcsIDc1MjI5LCA3NTI0MCwgNzUyNTAsIDc1MjU5LCA3NTI2OSwgCisgICAgNzUyODAsIDc1MjkwLCA3NTMwMSwgNzUzMTMsIDc1MzI0LCA3NTMzNCwgNzUzNDUsIDc1MzU3LCA3NTM2OCwgNzUzODAsIAorICAgIDc1MzkzLCA3NTQwNSwgNzU0MTYsIDc1NDI2LCA3NTQzNywgNzU0NDksIDc1NDYwLCA3NTQ3MiwgNzU0ODUsIDc1NDk3LCAKKyAgICA3NTUwOCwgNzU1MjAsIDc1NTMzLCA3NTU0NSwgNzU1NTgsIDc1NTcyLCA3NTU4NSwgNzU1OTcsIDc1NjA4LCA3NTYxOCwgCisgICAgNzU2MjcsIDc1NjM1LCA3NTY0MiwgNzU2NDcsIDg0NTEsIDc1NjU0LCAzNTQyNiwgNzU2NTksIDc1NjY0LCAzNTQzMSwgCisgICAgNzU2NzAsIDIyNzYzLCAzNTQzNiwgNzU2NzUsIDc1NjgxLCA3NTY4OSwgNzU2OTUsIDc1NzAxLCA3NTcwOCwgNzU3MTUsIAorICAgIDc1NzIwLCA3NTcyNSwgNzU3MjksIDc1NzMzLCA3NTczNiwgNzU3NDAsIDc1NzQ5LCA3NTc1OCwgNzU3NjYsIDc1NzcyLCAKKyAgICA3NTc4NCwgNzU3OTUsIDc1Nzk5LCAzMTI5LCA4NDI2LCA3NTgwNCwgNzU4MDcsIDc1ODA5LCA3NTgxMywgNzU4MTcsIAorICAgIDc1ODIxLCA3NTgyNywgNzU4MzIsIDI4MjQwLCA3NTgzNywgNzU4NDEsIDc1ODQ0LCA3NTg0OSwgNzU4NTMsIDc1ODYwLCAKKyAgICA3NTg2NiwgNzU4NzAsIDY1MDksIDc1ODc0LCAzNTQ1MywgNzU4NzksIDc1ODg2LCA3NTg5NSwgNzU5MDMsIDc1OTE0LCAKKyAgICA3NTkyMiwgNzU5MzEsIDc1OTM5LCA3NTk0NiwgNzU5NTMsIDc1OTU5LCA3NTk3MCwgMzU0NTgsIDc1OTc1LCA3NTk4NiwgCisgICAgNzU5OTgsIDc2MDA2LCA3NjAxNywgNzYwMjYsIDc2MDM0LCA3NjA0NSwgNzYwNTAsIDc2MDU4LCAyNTgwLCA3NjA2MywgCisgICAgMzc1NTIsIDc2MDc2LCA3NjA4MCwgNzYwOTIsIDc2MTAwLCA3NjEwNSwgNzYxMTMsIDc2MTI0LCAxOTI5MSwgNzYxMzMsIAorICAgIDc2MTM5LCA3NjE0NiwgNzYxNTQsIDc2MTYwLCAzNTQ2OCwgNzYxNjUsIDQxNTMsIDYzNTcwLCA3NjE3MiwgNzYxNzUsIAorICAgIDc2MTgzLCA3NjE5NiwgNzYyMDksIDc2MjIyLCA3NjIzNSwgNzYyNDIsIDc2MjUzLCA3NjI2MiwgNzYyNjcsIDQ3MDIwLCAKKyAgICA0NzAyNSwgNzYyNzEsIDc2Mjc1LCA3NjI4MywgNzYyOTAsIDc2Mjk5LCA3NjMwNywgNzYzMTMsIDc2MzIyLCA3NjMzMCwgCisgICAgNzYzMzcsIDc2MzQ1LCA3NjM0OSwgNzYzNTgsIDc2MzY3LCA3NjM3NywgNzYzOTAsIDc2NDAzLCA3NjQxMywgMzU0NzMsIAorICAgIDc2NDE5LCA3NjQyNiwgNzY0MzIsIDc2NDM4LCAzNTQ3OSwgNzY0NDMsIDc2NDQ2LCA3NjQ1MCwgNzY0NTgsIDc2NDY3LCAKKyAgICA0Njc1OCwgNzY0NzUsIDc2NDg0LCA3NjQ5MiwgNzY0OTksIDc2NTA3LCA3NjUxNywgNzY1MjYsIDc2NTM1LCAzNjc4NSwgCisgICAgNzY1NDQsIDc2NTU1LCA3NjU3MCwgNzY1ODAsIDk5OTQsIDIzNDY3LCA3NjU4OSwgNzY1OTQsIDc2NTk5LCA3NjYwMywgCisgICAgMTc3NjMsIDc2NjA4LCA3NjYxMywgNzY2MTksIDc2NjI0LCA3NjYyOSwgNzY2MzUsIDc2NjQwLCA3NjY0NSwgMjM0MzIsIAorICAgIDc2NjUwLCA3NjY1NywgNzY2NjUsIDc2NjczLCA3NjY4MSwgNzY2ODYsIDc2NjkzLCA3NjcwMCwgNzY3MDUsIDIyNTcsIAorICAgIDc2NzA5LCA3NjcxMywgNzY3MjEsIDc2NzI5LCAzNTQ5NiwgNzY3MzUsIDc2NzQxLCA3Njc1MywgNzY3NTksIDc2NzY2LCAKKyAgICA3Njc3MCwgNzY3NzcsIDc2NzgyLCA3Njc4OSwgNzY3OTUsIDc2ODAyLCA3NjgxMywgNzY4MjMsIDc2ODMzLCA3Njg0NSwgCisgICAgNzY4NTEsIDc2ODU5LCA3Njg2NSwgNzY4NzUsIDc2ODg1LCAzNTUyMywgNzY4OTQsIDc2OTAzLCA3NjkwOSwgNzY5MjEsIAorICAgIDc2OTMyLCA3NjkzOSwgNzY5NDQsIDc2OTQ4LCA3Njk1NiwgNzY5NjIsIDc2OTY3LCA3Njk3MiwgNzY5NzksIDc2OTg3LCAKKyAgICA3Njk5OSwgNzcwMDksIDc3MDE4LCA3NzAyNywgNzcwMzUsIDc3MDQyLCAzNzQwNSwgMjU5OTAsIDc3MDQ4LCA3NzA1MywgCisgICAgNzcwNTcsIDc3MDYxLCA3NzA2NiwgNzcwNzQsIDc3MDgwLCA3NzA5MSwgNzcxMDQsIDc3MTA5LCA3NzExNiwgMzU1MjgsIAorICAgIDc3MTIxLCA3NzEzMywgNzcxNDIsIDc3MTUwLCA3NzE2MCwgNzcxNzEsIDc3MTg0LCA3NzE5MSwgNzcyMDAsIDc3MjA5LCAKKyAgICA3NzIxNywgNzcyMjIsIDc3MjI4LCAxNDgxLCA3NzIzMywgNzcyMzgsIDc3MjQzLCA3NzI0OCwgNzcyNTQsIDc3MjU5LCAKKyAgICA3NzI2NCwgNzcyNzAsIDc3Mjc2LCA3NzI4MSwgNzcyODUsIDc3MjkwLCA3NzI5NSwgNzczMDAsIDY0MTMwLCA3NzMwNSwgCisgICAgNzczMTAsIDc3MzE1LCA3NzMyMCwgNzczMjYsIDc3MzMyLCA3NzMzNywgNzczNDEsIDc3MzQ2LCAxNzc2MiwgNzczNTEsIAorICAgIDc3MzU3LCA3NzM2MiwgNzczNjgsIDc3MzczLCA3NzM3OCwgNzczODMsIDc3Mzg4LCA3NzM5MiwgNzczOTgsIDc3NDAzLCAKKyAgICA3NzQxMiwgNzc0MTcsIDc3NDIyLCA3NzQyNywgNzc0MzIsIDc3NDM2LCA3NzQ0MywgNzc0NDksIDQ0NTAsIDE4OTE0LCAKKyAgICAzMDk0LCA3NzQ1NCwgNzc0NTgsIDc3NDYzLCA3NzQ2NywgNzc0NzEsIDc3NDc1LCA1MDgyMCwgNzc0NzksIDc3NDA0LCAKKyAgICA3NzQ4MSwgNzc0OTEsIDM1NTM3LCA3NzQ5NCwgNzc0OTksIDc3NTA4LCA3NzUxNCwgNjQ3OCwgMzU1NDIsIDc3NTE4LCAKKyAgICA3NzUyNCwgNzc1MjksIDc3NTM1LCA3NzU0MCwgNzc1NDQsIDc3NTUxLCA3NzU1NiwgNzc1NjYsIDc3NTc1LCA3NzU3OSwgCisgICAgNzc1ODUsIDc3NTkxLCA3NzU5NywgNzc2MDEsIDc3NjA5LCA3NzYxNiwgNzc2MjQsIDc3NjMyLCAzNTU0NywgNzc2MzksIAorICAgIDc3NjQyLCA3NzY0OSwgNzc2NTUsIDc3NjYwLCA3NzY2NCwgNzc2NzAsIDc3Njc4LCA3NzY4NSwgNzc2OTAsIDc3Njk0LCAKKyAgICA3NzcwMywgNzc3MTEsIDc3NzE3LCA3NzcyMiwgMzU1NTIsIDc3NzI5LCA3Nzc0MSwgNzc3NDgsIDc3NzU0LCA3Nzc1OSwgCisgICAgNzc3NjUsIDc3NzcyLCA3Nzc3OCwgMjMxNzEsIDI5ODU1LCA3Nzc4NCwgNzc3ODksIDc3Nzk1LCA3Nzc5OSwgNzc4MTEsIAorICAgIDc3NDM3LCA3NzQ0NCwgMjMzNjQsIDc3ODIxLCA3NzgyNiwgNzc4MzMsIDc3ODM5LCA3Nzg0NiwgNzc4NTIsIDc3ODYzLCAKKyAgICA3Nzg2OCwgNzc4NzYsIDk2OTksIDc3ODgxLCA3Nzg4NCwgNzc4OTAsIDc3ODk0LCA3Nzg5OCwgNzc5MDEsIDc3OTA3LCAKKyAgICA3NzkxMywgMzUyOTAsIDQ0NTEsIDEwOTMsIDE0NzA2LCA3NzkyMCwgNzc5MjYsIDc3OTMyLCA3NzkzOCwgNzc5NDQsIAorICAgIDc3OTUwLCA3Nzk1NiwgNzc5NjIsIDc3OTY4LCA3Nzk3MywgNzc5NzgsIDc3OTgzLCA3Nzk4OCwgNzc5OTMsIDc3OTk4LCAKKyAgICA3ODAwMywgNzgwMDgsIDc4MDEzLCA3ODAxOCwgNzgwMjMsIDc4MDI4LCA3ODAzMywgNzgwMzksIDc4MDQ0LCA3ODA0OSwgCisgICAgNzgwNTUsIDc4MDYwLCA3ODA2NSwgNzgwNzEsIDc4MDc3LCA3ODA4MywgNzgwODksIDc4MDk1LCA3ODEwMSwgNzgxMDcsIAorICAgIDc4MTEzLCA3ODExOSwgNzgxMjQsIDc4MTI5LCA3ODEzNSwgNzgxNDAsIDc4MTQ1LCA3ODE1MSwgNzgxNTYsIDc4MTYxLCAKKyAgICA3ODE2NiwgNzgxNzEsIDc4MTc2LCA3ODE4MSwgNzgxODYsIDc4MTkxLCA3ODE5NiwgNzgyMDEsIDc4MjA2LCA3ODIxMSwgCisgICAgNzgyMTcsIDc4MjIyLCA3ODIyNywgNzgyMzIsIDc4MjM4LCA3ODI0MywgNzgyNDgsIDc4MjUzLCA3ODI1OCwgNzgyNjQsIAorICAgIDc4MjY5LCA3ODI3NCwgNzgyNzksIDc4Mjg0LCA3ODI4OSwgNzgyOTQsIDc4Mjk5LCA3ODMwNCwgNzgzMDksIDc4MzE0LCAKKyAgICA3ODMxOSwgNzgzMjQsIDc4MzI5LCA3ODMzNCwgNzgzMzksIDc4MzQ0LCA3ODM0OSwgNzgzNTQsIDc4MzU5LCA3ODM2NSwgCisgICAgNzgzNzAsIDc4Mzc1LCA3ODM4MCwgNzgzODUsIDc4MzkwLCA3ODM5NSwgNzg0MDAsIDE4NzUsIDE2OSwgNzg0MDUsIDc4NDA5LCAKKyAgICA3ODQxMywgNzg0MTgsIDc4NDI2LCA3ODQzMCwgNzg0MzcsIDc4NDQ1LCA3ODQ0OSwgNzg0NjIsIDc4NDcwLCA3ODQ3NSwgCisgICAgNzg0ODAsIDI4NjQ5LCA3ODQ4NCwgNzg0ODksIDc4NDkzLCA3ODQ5OCwgNzg1MDIsIDc4NTEwLCA3ODUxNCwgMjI3NzEsIAorICAgIDc4NTE5LCA3ODUyMywgNjY3MTQsIDc4NTI3LCA3ODUzMCwgNzg1MzgsIDc4NTQ2LCA3ODU1NCwgNzg1NTksIDc4NTY0LCAKKyAgICA3ODU3MSwgNzg1NzgsIDc4NTg0LCA3ODU5MCwgNzg1OTUsIDc4NjAyLCA3ODYwNywgNzg2MTUsIDcxMTcyLCA3ODYyMiwgCisgICAgNjY1MDAsIDc4NjI3LCA3ODYzMiwgNzg2MzYsIDc4NjQzLCA2NjUyNywgMTI4NTMsIDc4NjQ5LCA3ODY1NCwgNzg2NTksIAorICAgIDc4NjYzLCA3ODY2NiwgNzg2NzUsIDc4NjgxLCA3ODY4NSwgNzg2OTUsIDc4NzA0LCA3ODcwOCwgNzg3MTEsIDc4NzE1LCAKKyAgICA3ODcyMiwgNzg3MzUsIDc4NzQxLCA3ODc0OSwgNzg3NTgsIDc4NzY5LCA3ODc4MCwgNzg3OTEsIDc4ODAyLCA3ODgxMSwgCisgICAgNzg4MTcsIDc4ODI2LCA3ODgzNCwgNzg4NDQsIDc4ODU3LCA3ODg2NSwgNzg4NzIsIDc4ODgzLCA3ODg4OSwgNzg4OTQsIAorICAgIDc4ODk5LCA3ODkwNSwgNzg5MTUsIDc4OTIxLCA3ODkzMSwgNzg5MzgsIDc4OTQ4LCA3ODk1NywgNzcxMjMsIDc4OTY1LCAKKyAgICA3ODk3MSwgNzg5NzksIDc4OTg1LCA3ODk5MiwgNzkwMDAsIDc5MDA1LCA3OTAwOCwgNzkwMTIsIDc5MDE4LCA3OTAyMiwgCisgICAgNzkwMjUsIDc5MDMxLCA3OTAzNywgNzkwNDUsIDc5MDU3LCA3OTA2OSwgNzkwNzYsIDc5MDgxLCA3OTA4NSwgNzkwOTYsIAorICAgIDc5MTA0LCA3OTExMSwgNzkxMjMsIDc5MTMxLCA3OTEzOSwgNzkxNDYsIDc5MTUyLCA3OTE1NywgNzkxNjcsIDc5MTc2LCAKKyAgICA3OTE4MSwgNzkxOTEsIDc5MjAwLCA0NjAzOSwgNzkyMDcsIDc5MjExLCA3OTIxNiwgNzkyMjQsIDc5MjMxLCA3OTIzNywgCisgICAgNzkyNDEsIDc5MjUxLCA3OTI2MiwgNzkyNzAsIDc5Mjc3LCA3OTI4OSwgNzkzMDEsIDc5MzEwLCA3NjA2NiwgNzkzMTcsIAorICAgIDc5MzI3LCA3OTMzOSwgNzkzNTAsIDc5MzY0LCA3OTM3MiwgNzkzODIsIDc5Mzg5LCA3OTM5NywgNzk0MTAsIDc5NDIyLCAKKyAgICA3OTQzMSwgNzk0MzksIDc5NDQ5LCA3OTQ2MCwgNzk0NzIsIDc5NDgxLCA3OTQ5MSwgNzk1MDEsIDc5NTEwLCA3OTUxNywgCisgICAgNzk1MjYsIDc5NTQxLCA3OTU0OSwgNzk1NTksIDc5NTY4LCA3OTU3NiwgNzk1ODksIDYzNTQwLCA3OTYwNCwgNzk2MTQsIAorICAgIDc5NjIzLCA3OTYzNSwgNzk2NDUsIDc5NjU3LCA3OTY2OCwgNzk2ODIsIDc5Njk2LCA3OTcxMCwgNzk3MjQsIDc5NzM4LCAKKyAgICA3OTc1MiwgNzk3NjYsIDc5NzgwLCA3OTc5NCwgNzk4MDgsIDc5ODIyLCA3OTgzNiwgNzk4NTAsIDc5ODY0LCA3OTg3OCwgCisgICAgNzk4OTIsIDc5OTA2LCA3OTkyMCwgNzk5MzQsIDc5OTQ4LCA3OTk2MiwgNzk5NzYsIDc5OTkwLCA4MDAwNCwgODAwMTgsIAorICAgIDgwMDMyLCA4MDA0NiwgODAwNjAsIDgwMDc0LCA4MDA4OCwgODAxMDIsIDgwMTE2LCA4MDEzMCwgODAxNDQsIDgwMTU4LCAKKyAgICA4MDE3MiwgODAxODYsIDgwMjAwLCA4MDIxNCwgODAyMjgsIDgwMjQyLCA4MDI1NiwgODAyNzAsIDgwMjg0LCA4MDI5OCwgCisgICAgODAzMTIsIDgwMzI2LCA4MDM0MCwgODAzNTQsIDgwMzY4LCA4MDM4MiwgODAzOTYsIDgwNDEwLCA4MDQyNCwgODA0MzgsIAorICAgIDgwNDUyLCA4MDQ2NiwgODA0ODAsIDgwNDk0LCA4MDUwOCwgODA1MjIsIDgwNTM2LCA4MDU1MCwgODA1NjQsIDgwNTc4LCAKKyAgICA4MDU5MiwgODA2MDYsIDgwNjIwLCA4MDYzNCwgODA2NDgsIDgwNjYyLCA4MDY3NiwgODA2OTAsIDgwNzA0LCA4MDcxOCwgCisgICAgODA3MzIsIDgwNzQ2LCA4MDc2MCwgODA3NzQsIDgwNzg4LCA4MDgwMiwgODA4MTYsIDgwODMwLCA4MDg0NCwgODA4NTgsIAorICAgIDgwODcyLCA4MDg4NiwgODA5MDAsIDgwOTE0LCA4MDkyOCwgODA5NDIsIDgwOTU2LCA4MDk3MCwgODA5ODQsIDgwOTk4LCAKKyAgICA4MTAxMiwgODEwMjYsIDgxMDQwLCA4MTA1NCwgODEwNjgsIDgxMDgyLCA4MTA5NiwgODExMTAsIDgxMTI0LCA4MTEzOCwgCisgICAgODExNTIsIDgxMTY2LCA4MTE4MCwgODExOTQsIDgxMjA4LCA4MTIyMiwgODEyMzYsIDgxMjUwLCA4MTI2NCwgODEyNzgsIAorICAgIDgxMjkyLCA4MTMwNiwgODEzMjAsIDgxMzM0LCA4MTM0OCwgODEzNjIsIDgxMzc2LCA4MTM5MCwgODE0MDQsIDgxNDE4LCAKKyAgICA4MTQzMiwgODE0NDYsIDgxNDYwLCA4MTQ3NCwgODE0ODgsIDgxNTAyLCA4MTUxNiwgODE1MzAsIDgxNTQ0LCA4MTU1OCwgCisgICAgODE1NzIsIDgxNTg2LCA4MTYwMCwgODE2MTQsIDgxNjI4LCA4MTY0MiwgODE2NTYsIDgxNjcwLCA4MTY4NCwgODE2OTgsIAorICAgIDgxNzEyLCA4MTcyNiwgODE3NDAsIDgxNzU0LCA4MTc2OCwgODE3ODIsIDgxNzk2LCA4MTgxMCwgODE4MjQsIDgxODM4LCAKKyAgICA4MTg1MiwgODE4NjYsIDgxODgwLCA4MTg5NCwgODE5MDgsIDgxOTIyLCA4MTkzNiwgODE5NTAsIDgxOTY0LCA4MTk3OCwgCisgICAgODE5OTIsIDgyMDA2LCA4MjAyMCwgODIwMzQsIDgyMDQ4LCA4MjA2MiwgODIwNzYsIDgyMDkwLCA4MjEwNCwgODIxMTgsIAorICAgIDgyMTMyLCA4MjE0NiwgODIxNjAsIDgyMTc0LCA4MjE4OCwgODIyMDIsIDgyMjE2LCA4MjIzMCwgODIyNDQsIDgyMjU4LCAKKyAgICA4MjI3MiwgODIyODYsIDgyMzAwLCA4MjMxNCwgODIzMjgsIDgyMzQyLCA4MjM1NiwgODIzNzAsIDgyMzg0LCA4MjM5OCwgCisgICAgODI0MTIsIDgyNDI2LCA4MjQ0MCwgODI0NTQsIDgyNDY4LCA4MjQ4MiwgODI0OTYsIDgyNTEwLCA4MjUyNCwgODI1MzgsIAorICAgIDgyNTUyLCA4MjU2NiwgODI1ODAsIDgyNTk0LCA4MjYwOCwgODI2MjIsIDgyNjM2LCA4MjY1MCwgODI2NjQsIDgyNjc4LCAKKyAgICA4MjY5MiwgODI3MDYsIDgyNzIwLCA4MjczNCwgODI3NDgsIDgyNzYyLCA4Mjc3NiwgODI3OTAsIDgyODA0LCA4MjgxOCwgCisgICAgODI4MzIsIDgyODQ2LCA4Mjg2MCwgODI4NzQsIDgyODg4LCA4MjkwMiwgODI5MTYsIDgyOTMwLCA4Mjk0NCwgODI5NTgsIAorICAgIDgyOTcyLCA4Mjk4NiwgODMwMDAsIDgzMDE0LCA4MzAyOCwgODMwNDIsIDgzMDU2LCA4MzA3MCwgODMwODQsIDgzMDk4LCAKKyAgICA4MzExMiwgODMxMjYsIDgzMTQwLCA4MzE1NCwgODMxNjgsIDgzMTgyLCA4MzE5NiwgODMyMTAsIDgzMjI0LCA4MzIzOCwgCisgICAgODMyNTIsIDgzMjY2LCA4MzI4MCwgODMyOTQsIDgzMzA4LCA4MzMyMiwgODMzMzYsIDgzMzUwLCA4MzM2NCwgODMzNzgsIAorICAgIDgzMzkyLCA4MzQwNiwgODM0MjAsIDgzNDM0LCA4MzQ0OCwgODM0NjIsIDgzNDc2LCA4MzQ5MCwgODM1MDQsIDgzNTE4LCAKKyAgICA4MzUzMiwgODM1NDYsIDgzNTYwLCA4MzU3NCwgODM1ODgsIDgzNjAyLCA4MzYxNiwgODM2MzAsIDgzNjQ0LCA4MzY1OCwgCisgICAgODM2NzIsIDgzNjg2LCA4MzcwMCwgODM3MTQsIDgzNzI4LCA4Mzc0MiwgODM3NTYsIDgzNzcwLCA4Mzc4NCwgODM3OTgsIAorICAgIDgzODEyLCA4MzgyNiwgODM4NDAsIDgzODU0LCA4Mzg2OCwgODM4ODIsIDgzODk2LCA4MzkxMCwgODM5MjQsIDgzOTM4LCAKKyAgICA4Mzk1MiwgODM5NjYsIDgzOTgwLCA4Mzk5NCwgODQwMDgsIDg0MDIyLCA4NDAzNiwgODQwNTAsIDg0MDY0LCA4NDA3OCwgCisgICAgODQwOTIsIDg0MTA2LCA4NDEyMCwgODQxMzQsIDg0MTQ4LCA4NDE2MiwgODQxNzYsIDg0MTkwLCA4NDIwNCwgODQyMTgsIAorICAgIDg0MjMyLCA4NDI0NiwgODQyNjAsIDg0Mjc0LCA4NDI4OCwgODQzMDIsIDg0MzE2LCA4NDMzMCwgODQzNDQsIDg0MzU4LCAKKyAgICA4NDM3MiwgODQzODYsIDg0NDAwLCA4NDQxNCwgODQ0MjgsIDg0NDQyLCA4NDQ1NiwgODQ0NzAsIDg0NDg0LCA4NDQ5OCwgCisgICAgODQ1MTIsIDg0NTI2LCA4NDU0MCwgODQ1NTQsIDg0NTY4LCA4NDU4MiwgODQ1OTYsIDg0NjEwLCA4NDYyNCwgODQ2MzgsIAorICAgIDg0NjUyLCA4NDY2NiwgODQ2ODAsIDg0Njk0LCA4NDcwOCwgODQ3MjIsIDg0NzM2LCA4NDc1MCwgODQ3NjQsIDg0Nzc4LCAKKyAgICA4NDc5MiwgODQ4MDYsIDg0ODIwLCA4NDgzNCwgODQ4NDgsIDg0ODYyLCA4NDg3NiwgODQ4OTAsIDg0OTA0LCA4NDkxOCwgCisgICAgODQ5MzIsIDg0OTQ2LCA4NDk2MCwgODQ5NzQsIDg0OTg4LCA4NTAwMiwgODUwMTYsIDg1MDMwLCA4NTA0NCwgODUwNTgsIAorICAgIDg1MDcyLCA4NTA4NiwgODUxMDAsIDg1MTE0LCA4NTEyOCwgODUxNDIsIDg1MTU2LCA4NTE3MCwgODUxODQsIDg1MTk4LCAKKyAgICA4NTIxMiwgODUyMjYsIDg1MjQwLCA4NTI1NCwgODUyNjgsIDg1MjgyLCA4NTI5NiwgODUzMTAsIDg1MzI0LCA4NTMzOCwgCisgICAgODUzNTIsIDg1MzY2LCA4NTM4MCwgODUzOTQsIDg1NDA4LCA4NTQyMiwgODU0MzYsIDg1NDUwLCA4NTQ2NCwgODU0NzgsIAorICAgIDg1NDkyLCA4NTUwNiwgODU1MjAsIDg1NTM0LCA4NTU0OCwgODU1NjIsIDg1NTc2LCA4NTU5MCwgODU2MDQsIDg1NjE4LCAKKyAgICA4NTYzMiwgODU2NDYsIDg1NjYwLCA4NTY3NCwgODU2ODgsIDg1NzAyLCA4NTcxNiwgODU3MzAsIDg1NzQ0LCA4NTc1OCwgCisgICAgODU3NzIsIDg1Nzg2LCA4NTgwMCwgODU4MTQsIDg1ODI4LCA4NTg0MiwgODU4NTYsIDg1ODcwLCA4NTg4NCwgODU4OTgsIAorICAgIDg1OTEyLCA4NTkyNiwgODU5NDAsIDg1OTU0LCA4NTk2OCwgODU5ODIsIDg1OTk2LCA4NjAxMCwgODYwMjQsIDg2MDM4LCAKKyAgICA4NjA1MiwgODYwNjYsIDg2MDgwLCA4NjA5NCwgODYxMDgsIDg2MTIyLCA4NjEzNiwgODYxNTAsIDg2MTY0LCA4NjE3OCwgCisgICAgODYxOTIsIDg2MjA2LCA4NjIyMCwgODYyMzQsIDg2MjQ4LCA4NjI2MiwgODYyNzYsIDg2MjkwLCA4NjMwNCwgODYzMTgsIAorICAgIDg2MzMyLCA4NjM0NiwgODYzNjAsIDg2Mzc0LCA4NjM4OCwgODY0MDIsIDg2NDE2LCA4NjQzMCwgODY0NDQsIDg2NDU4LCAKKyAgICA4NjQ3MiwgODY0ODYsIDg2NTAwLCA4NjUxNCwgODY1MjgsIDg2NTQyLCA4NjU1NiwgODY1NzAsIDg2NTg0LCA4NjU5OCwgCisgICAgODY2MTIsIDg2NjI2LCA4NjY0MCwgODY2NTQsIDg2NjY4LCA4NjY4MiwgODY2OTYsIDg2NzEwLCA4NjcyNCwgODY3MzgsIAorICAgIDg2NzUyLCA4Njc2NiwgODY3ODAsIDg2Nzk0LCA4NjgwOCwgODY4MjIsIDg2ODM2LCA4Njg1MCwgODY4NjQsIDg2ODc4LCAKKyAgICA4Njg5MiwgODY5MDYsIDg2OTIwLCA4NjkzNCwgODY5NDgsIDg2OTYyLCA4Njk3NiwgODY5OTAsIDg3MDA0LCA4NzAxOCwgCisgICAgODcwMzIsIDg3MDQ2LCA4NzA2MCwgODcwNzQsIDg3MDg4LCA4NzEwMiwgODcxMTYsIDg3MTMwLCA4NzE0NCwgODcxNTgsIAorICAgIDg3MTcyLCA4NzE4NiwgODcyMDAsIDg3MjE0LCA4NzIyOCwgODcyNDIsIDg3MjU2LCA4NzI3MCwgODcyODQsIDg3Mjk4LCAKKyAgICA4NzMxMiwgODczMjYsIDg3MzQwLCA4NzM1NCwgODczNjgsIDg3MzgyLCA4NzM5NiwgODc0MTAsIDg3NDI0LCA4NzQzOCwgCisgICAgODc0NTIsIDg3NDY2LCA4NzQ4MCwgODc0OTQsIDg3NTA4LCA4NzUyMiwgODc1MzYsIDg3NTUwLCA4NzU2NCwgODc1NzgsIAorICAgIDg3NTkyLCA4NzYwNiwgODc2MjAsIDg3NjM0LCA4NzY0OCwgODc2NjIsIDg3Njc2LCA4NzY5MCwgODc3MDQsIDg3NzE4LCAKKyAgICA4NzczMiwgODc3NDYsIDg3NzYwLCA4Nzc3NCwgODc3ODgsIDg3ODAyLCA4NzgxNiwgODc4MzAsIDg3ODQ0LCA4Nzg1OCwgCisgICAgODc4NzIsIDg3ODg2LCA4NzkwMCwgODc5MTQsIDg3OTI4LCA4Nzk0MiwgODc5NTYsIDg3OTcwLCA4Nzk4NCwgODc5OTgsIAorICAgIDg4MDEyLCA4ODAyNiwgODgwNDAsIDg4MDU0LCA4ODA2OCwgODgwODIsIDg4MDk2LCA4ODExMCwgODgxMjQsIDg4MTM4LCAKKyAgICA4ODE1MiwgODgxNjYsIDg4MTgwLCA4ODE5NCwgODgyMDgsIDg4MjIyLCA4ODIzNiwgODgyNTAsIDg4MjY0LCA4ODI3OCwgCisgICAgODgyOTIsIDg4MzA2LCA4ODMyMCwgODgzMzQsIDg4MzQ4LCA4ODM2MiwgODgzNzYsIDg4MzkwLCA4ODQwNCwgODg0MTgsIAorICAgIDg4NDMyLCA4ODQ0NiwgODg0NjAsIDg4NDc0LCA4ODQ4OCwgODg1MDIsIDg4NTE2LCA4ODUzMCwgODg1NDQsIDg4NTU4LCAKKyAgICA4ODU3MiwgODg1ODYsIDg4NjAwLCA4ODYxNCwgODg2MjgsIDg4NjQyLCA4ODY1NiwgODg2NzAsIDg4Njg0LCA4ODY5OCwgCisgICAgODg3MTIsIDg4NzI2LCA4ODc0MCwgODg3NTQsIDg4NzY4LCA4ODc4MiwgODg3OTYsIDg4ODEwLCA4ODgyNCwgODg4MzgsIAorICAgIDg4ODUyLCA4ODg2NiwgODg4ODAsIDg4ODk0LCA4ODkwOCwgODg5MjIsIDg4OTM2LCA4ODk1MCwgODg5NjQsIDg4OTc4LCAKKyAgICA4ODk5MiwgODkwMDYsIDg5MDIwLCA4OTAzNCwgODkwNDgsIDg5MDYyLCA4OTA3NiwgODkwOTAsIDg5MTA0LCA4OTExOCwgCisgICAgODkxMzIsIDg5MTQ2LCA4OTE2MCwgODkxNzQsIDg5MTg4LCA4OTIwMiwgODkyMTYsIDg5MjMwLCA4OTI0NCwgODkyNTgsIAorICAgIDg5MjcyLCA4OTI4NiwgODkzMDAsIDg5MzE0LCA4OTMyOCwgODkzNDIsIDg5MzU2LCA4OTM3MCwgODkzODQsIDg5Mzk4LCAKKyAgICA4OTQxMiwgODk0MjYsIDg5NDQwLCA4OTQ1NCwgODk0NjgsIDg5NDgyLCA4OTQ5NiwgODk1MTAsIDg5NTI0LCA4OTUzOCwgCisgICAgODk1NTIsIDg5NTY2LCA4OTU4MCwgODk1OTQsIDg5NjA4LCA4OTYyMiwgODk2MzYsIDg5NjUwLCA4OTY2NCwgODk2NzgsIAorICAgIDg5NjkyLCA4OTcwNiwgODk3MjAsIDg5NzM0LCA4OTc0OCwgODk3NjIsIDg5Nzc2LCA4OTc5MCwgODk4MDQsIDg5ODE4LCAKKyAgICA4OTgzMiwgODk4NDYsIDg5ODYwLCA4OTg3NCwgODk4ODgsIDg5OTAyLCA4OTkxNiwgODk5MzAsIDg5OTQ0LCA4OTk1OCwgCisgICAgODk5NzIsIDg5OTg2LCA5MDAwMCwgOTAwMTQsIDkwMDI4LCA5MDA0MiwgOTAwNTYsIDkwMDcwLCA5MDA4NCwgOTAwOTgsIAorICAgIDkwMTEyLCA5MDEyNiwgOTAxNDAsIDkwMTU0LCA5MDE2OCwgOTAxODIsIDkwMTk2LCA5MDIxMCwgOTAyMjQsIDkwMjM4LCAKKyAgICA5MDI0OSwgOTAyNjAsIDkwMjcwLCA5MDI4MSwgOTAyODksIDkwMjk1LCA5MDMwNSwgOTAzMTMsIDkwMzE5LCAzMTYyMSwgCisgICAgOTAzMjQsIDkwMzMwLCA5MDMzOSwgOTAzNTEsIDkwMzU2LCA5MDM2MywgMTA1NDYsIDE5MzExLCA5MDM2OSwgOTAzNzgsIAorICAgIDkwMzgzLCA5MDM4NywgOTAzOTQsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIDkwNDE4LCA5MDQyNiwgMTMyMjksIDkwNDMwLCAKKyAgICA5MDQzMywgOTA0MzUsIDkwNDQyLCA5MDQ0OCwgOTA0NTksIDkwNDY0LCA5MDQ2OCwgOTA0NzMsIDkwNDgwLCA5MDQ4NiwgCisgICAgOTA0OTEsIDkwNDk5LCA3MTc0MSwgNzE3NTEsIDkwNTA1LCA5MDUxMiwgOTA1MjIsIDExNjQxLCA5MDUyOSwgOTA1MzQsIAorICAgIDMxODU1LCA5MDU0MywgOTA1NDgsIDkwNTU1LCA5MDU2NSwgOTA1NzMsIDkwNTgxLCA5MDU5MCwgOTA1OTYsIDkwNjAyLCAKKyAgICA5MDYwOSwgOTA2MTYsIDkwNjIxLCA5MDYyNSwgOTA2MzMsIDY2NTQ0LCA5MDYzOCwgOTA2NDcsIDkwNjU1LCA5MDY2MiwgCisgICAgOTA2NjcsIDkwNjcxLCA5MDY4MCwgOTA2ODYsIDkwNjg5LCA5MDY5MywgOTA3MDIsIDkwNzEyLCA3ODQ1NywgOTA3MjEsIAorICAgIDkwNzI1LCA5MDczMywgOTA3MzcsIDkwNzQzLCA5MDc1NCwgOTA3NjQsIDE5MzIwLCA5MDc3NSwgOTA3ODQsIDkwNzkyLCAKKyAgICA5MDgwMCwgOTA4MDcsIDY2NTYzLCA5MTkyLCA5MDgxNSwgOTA4MTksIDkwODI4LCA5MDgzNSwgOTA4MzgsIDI5NzM2LCAKKyAgICA5MDg0MSwgOTA4NDUsIDkwODUwLCA5MDg2NywgOTA4NzksIDExNTk5LCA5MDg5MSwgOTA4OTYsIDkwOTAxLCA5MDkwNiwgCisgICAgMjI4NjEsIDkwOTEwLCA5MDkxNSwgOTA5MjAsIDkwOTI2LCA5MDkzMSwgNjE0MiwgOTA5MzYsIDIyODY1LCA5MDk0MSwgCisgICAgOTA5NDYsIDkwOTUyLCA5MDk1OSwgOTA5NjQsIDkwOTY5LCA5MDk3NSwgOTA5ODEsIDkwOTg3LCA5MDk5MiwgOTA5OTgsIAorICAgIDkxMDAyLCA5MTAxNiwgOTEwMjQsIDkxMDMyLCA5MTAzOCwgOTEwNDMsIDkxMDUwLCA5MTA2MCwgOTEwNjksIDkxMDc0LCAKKyAgICA5MTA3OSwgOTEwODQsIDkxMDkyLCA5MTA5NywgOTExMDMsIDkxMTA4LCA5MTExNywgNjUyMzIsIDkxMTIyLCA5MTEyNSwgCisgICAgOTExNDMsIDkxMTYyLCA5MTE3NSwgOTExODksIDkxMjA1LCA5MTIxMiwgOTEyMTksIDkxMjI4LCA5MTIzNSwgOTEyNDEsIAorICAgIDkxMjQ4LCA5MTI1MywgOTEyNTksIDkxMjY1LCA5MTI3MywgOTEyNzksIDkxMjg0LCA5MTI4OSwgOTEzMDUsIDExNjEyLCAKKyAgICA5MTMxOSwgOTEzMjYsIDkxMzM0LCA5MTM0MCwgOTEzNDQsIDkxMzQ3LCA5MTM1MiwgOTEzNTcsIDkxMzY0LCA5MTM2OSwgCisgICAgOTEzNzgsIDkxMzg0LCA5MTM4OSwgOTEzOTUsIDkxNDAxLCA5MTQxMCwgOTE0MTksIDM4OTU1LCA5MTQyNCwgOTE0MzIsIAorICAgIDkxNDQxLCAxMjg4MiwgOTE0NTAsIDkxNDU2LCA5MTQ2NCwgOTE0NzAsIDkxNDc2LCA5MTQ4MiwgOTE0ODcsIDkxNDk0LCAKKyAgICA5MTUwMCwgMTI4OTMsIDkxNTA1LCA5MTUwOCwgOTE1MTMsIDM1NTc5LCA5MTUyMywgOTE1MzIsIDkxNTM3LCA5MTU0MywgCisgICAgOTE1NDgsIDkxNTU2LCA5MTU2MywgOTE1NzQsIDkxNTg0LCA5MTU4OSwgOTE1OTcsIDcxMDk1LCA5MTYwMiwgOTE2MDgsIAorICAgIDkxNjEzLCA5MTYyMCwgOTE2MjksIDkxNjM3LCA5MTY0MSwgOTE2NDcsIDkxNjUzLCA5MTY2MCwgOTE2NjYsIDkxNjcwLCAKKyAgICAxODY4MiwgMzEwMywgOTE2NzUsIDkxNjc5LCA5MTY4MywgOTE2ODksIDkxNjk4LCA5MTcwNCwgOTE3MTEsIDkxNzE1LCAKKyAgICA5MTczNiwgOTE3NTgsIDkxNzc0LCA5MTc5MSwgOTE4MTAsIDkxODE5LCA5MTgyOSwgOTE4MzcsIDkxODQ0LCA5MTg1MSwgCisgICAgOTE4NTcsIDI5NTk3LCA5MTg3MSwgOTE4NzUsIDkxODgxLCA5MTg4OSwgOTE5MDEsIDkxOTA3LCA5MTkxNSwgOTE5MjIsIAorICAgIDkxOTI3LCA5MTkzMiwgOTE5MzYsIDkxOTQ0LCA5MTk1MSwgOTE5NTUsIDkxOTYxLCA5MTk2NywgOTE5NzIsIDM3MjksIAorICAgIDQ3MjIwLCA5MTk3OCwgOTE5ODIsIDkxOTg2LCA5MTk5MCwgOTE5OTUsIDkyMDAwLCA5MjAwNSwgOTIwMTEsIDkyMDE3LCAKKyAgICA5MjAyMywgOTIwMzAsIDkyMDM2LCA5MjA0MywgOTIwNDksIDkyMDU1LCA5MjA2MCwgOTIwNjYsIDkyMDcxLCA5MjA3NSwgCisgICAgOTIwODAsIDkyMDg0LCA5MjA4OSwgNDcyMzUsIDkyMDkzLCA5MjA5OCwgOTIxMDYsIDkyMTEwLCA5MjExNSwgOTIxMjIsIAorICAgIDkyMTMxLCA5MjEzNywgOTIxNDYsIDkyMTUwLCA5MjE1NywgOTIxNjEsIDkyMTY0LCA5MjE3MSwgOTIxNzcsIDkyMTg2LCAKKyAgICA5MjE5NiwgOTIyMDYsIDkyMjExLCA5MjIxNSwgOTIyMjIsIDkyMjMwLCA5MjIzOSwgOTIyNDMsIDkyMjUxLCA5MjI1NywgCisgICAgOTIyNjIsIDkyMjY3LCA5MjI3MywgOTIyNzksIDkyMjg0LCA5MjI4OCwgOTIyOTQsIDkyMjk5LCA5MjMwMywgOTIzMDcsIAorICAgIDkyMzEwLCA5MjMxNSwgOTIzMjMsIDkyMzMzLCA5MjMzOSwgOTIzNDQsIDkyMzU0LCA0NDQ5MiwgOTIzNjIsIDkyMzc0LCAKKyAgICA5MjM4MCwgOTIzODQsIDkyMzkwLCA5MjQwMiwgOTI0MTMsIDkyNDIwLCA5MjQyNiwgOTI0MzMsIDkyNDQwLCA5MjQ1MiwgCisgICAgOTI0NTksIDkyNDY1LCAyMjkzOSwgOTI0NjksIDkyNDc3LCA5MjQ4MywgOTI0OTAsIDkyNDk2LCA5MjUwMiwgOTI1MDgsIAorICAgIDkyNTEzLCA5MjUxOCwgOTI1MjMsIDkyNTI3LCA5MjUzNiwgOTI1NDQsIDkyNTU1LCA3Mzc0LCA5MjU2MCwgMTgxMzEsIAorICAgIDkyNTY2LCA5MjU3MCwgOTI1NzQsIDkyNTc4LCA5MjU4NiwgOTI1OTUsIDkyNTk5LCA5MjYwNiwgOTI2MTUsIDkyNjIzLCAKKyAgICA5MjYzNiwgOTI2NDIsIDkyMDg1LCAzMjczOSwgOTI2NDcsIDkyNjQ5LCA5MjY1NCwgOTI2NTksIDkyNjY0LCA5MjY2OSwgCisgICAgOTI2NzQsIDkyNjc5LCA5MjY4NCwgOTI2ODksIDkyNjk0LCA5MjY5OSwgOTI3MDQsIDkyNzA5LCA5MjcxNCwgOTI3MTksIAorICAgIDkyNzI1LCA5MjczMCwgOTI3MzUsIDkyNzQwLCA5Mjc0NSwgOTI3NTAsIDkyNzU1LCA5Mjc2MCwgOTI3NjUsIDkyNzcxLCAKKyAgICA5Mjc3NywgOTI3ODMsIDkyNzg4LCA5Mjc5MywgOTI4MDUsIDkyODEwLCAxODgxLCA1NCwgOTI4MTUsIDkyODIwLCAzNTU4NSwgCisgICAgOTI4MjQsIDM1NTkwLCAzNTU5NSwgMzU2MDEsIDM1NjA2LCA5MjgyOCwgMzU2MTEsIDIzOTk0LCA5Mjg1MCwgOTI4NTQsIAorICAgIDkyODU4LCA5Mjg2MywgOTI4NjcsIDM1NjE1LCA5Mjg3MSwgOTI4NzksIDkyODg2LCA5Mjg5MiwgMzU2MjAsIDkyOTAyLCAKKyAgICA5MjkwNSwgOTI5MTAsIDkyOTE0LCA5MjkyMywgMTAzNTYsIDkyOTMxLCAzNTYyNSwgMjM4NDUsIDkyOTM0LCA5MjkzOCwgCisgICAgOTI5NDYsIDEzOTMsIDkyOTUxLCAzNTYzNiwgOTI5NTQsIDkyOTU5LCAyNzk5NSwgMjgwMDUsIDM4NTc4LCA5Mjk2NCwgCisgICAgOTI5NjksIDkyOTc0LCA5Mjk3OSwgOTI5ODUsIDkyOTkwLCA5Mjk5OSwgOTMwMDQsIDkzMDEzLCA5MzAyMSwgOTMwMjgsIAorICAgIDkzMDM0LCA5MzAzOSwgOTMwNDQsIDkzMDQ5LCA5MzA1OSwgOTMwNjgsIDkzMDc2LCA5MzA4MSwgOTMwODksIDkzMDkzLCAKKyAgICA5MzEwMSwgOTMxMDUsIDkzMTEyLCA5MzEyMCwgMzU0NDQsIDQxNjM0LCA5MzEyNywgOTMxMzMsIDkzMTM4LCA5MzE0MywgCisgICAgMTMyNjQsIDMwODIwLCA5MzE0OCwgOTMxNTMsIDkzMTYwLCA5MzE2NiwgOTMxNzEsIDkzMTc5LCA5MzE4OSwgOTMxOTksIAorICAgIDkzMjA1LCA5MzIxMCwgOTMyMTYsIDE5MzQyLCA5MzIyMywgMzk0NjIsIDkzMjM2LCA5MzI0MSwgOTMyNDcsIDMzNzM3LCAKKyAgICA2OTU3OSwgOTMyNjAsIDkzMjY0LCA5MzI3MywgOTMyODIsIDkzMjg5LCA5MzI5NSwgOTMzMDMsIDkzMzEyLCA5MzMxOSwgCisgICAgNDE3NTQsIDkzMzI1LCA5MzMyOCwgOTMzMzIsIDkzMzM2LCA5MzM0MCwgMjgxNDEsIDkzMzQ2LCA5MzM1MywgOTMzNTksIAorICAgIDkzMzY3LCA5MzM3MiwgOTMzNzYsIDI2MTM3LCA5MzM4MiwgOTMzODUsIDkzMzkzLCA5MzQwMCwgOTM0MDgsIDkzNDIxLCAKKyAgICA5MzQzNSwgOTM0NDIsIDkzNDQ4LCA5MzQ1NSwgOTM0NjEsIDM1NjUwLCA5MzQ2NSwgOTM0NzIsIDkzNDgwLCA5MzQ4OCwgCisgICAgOTM0OTQsIDM1NjU1LCA5MzUwMiwgOTM1MDgsIDkzNTEzLCA5MzUyMywgOTM1MjksIDkzNTM4LCAzMzUzMiwgMzgwMTAsIAorICAgIDkzNTQ2LCA5MzU1MSwgOTM1NTYsIDkzNTYwLCA5MzU2NSwgOTM1NjksIDkzNTc3LCA5MzU4MiwgMTY0MTksIDQ0NTA1LCAKKyAgICA5MzU4NiwgOTM1OTEsIDM1NjYwLCA2ODEyMSwgOTM1OTUsIDkzNjAwLCA5MzYwNCwgOTM2MTEsIDkzNjIwLCA5MzYyNCwgCisgICAgOTM2MzIsIDkzNjM4LCA5MzY0MywgOTM2NDksIDg0OTMsIDkzNjU0LCA5MzY2MCwgOTM2NjUsIDkzNjcwLCA5MzY4MSwgCisgICAgOTM2OTAsIDkzNzAyLCA5MzcxNywgMzU5MzYsIDkzNzIzLCAxODI1MCwgMzU2NjQsIDkzNzI3LCA5MzczNCwgOTM3NDAsIAorICAgIDI2MjUzLCA5Mzc0NCwgOTM3NTEsIDkzNzYwLCA5Mzc2NywgOTM3NzYsIDkzNzgyLCA5Mzc4NywgOTM3OTUsIDkzODAxLCAKKyAgICA5MzgwNiwgMzU2NzQsIDkzODExLCA5MzgyMCwgOTI0MDgsIDkzODI5LCA5MzgzNiwgOTM4NDIsIDkzODQ4LCA5Mzg1NywgCisgICAgOTM4NjcsIDkzODc1LCA5Mzg4MiwgOTM4ODYsIDM1Njc5LCA5Mzg4OSwgMzU2ODUsIDM1NjkxLCA5Mzg5NCwgOTM5MDIsIAorICAgIDkzOTEwLCA5MzkyMCwgOTM5MjksIDkzOTM3LCA5Mzk0NCwgOTM5NTQsIDM1Njk2LCA5Mzk1OCwgOTM5NjAsIDkzOTY0LCAKKyAgICA5Mzk2OSwgOTM5NzMsIDkzOTc3LCA5Mzk4MywgOTM5ODgsIDkzOTkyLCA5NDAwMywgOTQwMDgsIDk0MDEzLCAzMTA4LCAKKyAgICA5NDAxNywgOTQwMjQsIDk0MDI4LCA5NDAzNywgOTQwNDUsIDk0MDUyLCA5NDA1NywgOTQwNjIsIDY4MTcyLCA5NDA2NiwgCisgICAgOTQwNjksIDk0MDc1LCA5NDA4MywgOTQwODksIDk0MDkzLCA5NDA5OCwgOTQxMDUsIDk0MTEwLCA5NDExNSwgOTQxMTksIAorICAgIDk0MTI1LCA5NDEzMCwgMzgwNDEsIDk0MTM0LCA5NDEzNywgOTQxNDIsIDk0MTQ2LCA5NDE1MSwgOTQxNTgsIDk0MTYzLCAKKyAgICA5NDE2NywgNDMwMzEsIDk0MTc1LCAyODAxNCwgMjgwMjMsIDk0MTgxLCA5NDE4NywgOTQxOTMsIDk0MTk4LCA5NDIwMiwgCisgICAgOTQyMDUsIDk0MjE1LCA5NDIyNCwgOTQyMjksIDk0MjM1LCA5NDI0MiwgOTQyNDgsIDk0MjUyLCA5NDI2MCwgOTQyNjUsIAorICAgIDM4MDQ3LCA3ODY3NywgOTQyNjksIDk0Mjc3LCA5NDI4MywgOTQyOTAsIDk0Mjk1LCA5NDI5OSwgOTQzMDQsIDYzNzU2LCAKKyAgICA5NDMxMCwgOTQzMTYsIDM4MDUzLCA5NDMyMSwgOTQzMjYsIDk0MzMwLCA5NDMzNSwgOTQzNDAsIDk0MzQ1LCA5NDM0OSwgCisgICAgOTQzNTQsIDk0MzU5LCA5NDM2NSwgOTQzNzAsIDk0Mzc1LCA5NDM4MSwgOTQzODcsIDk0MzkyLCA5NDM5NiwgOTQ0MDEsIAorICAgIDk0NDA2LCA5NDQxMSwgOTQ0MTUsIDI2MjUyLCA5NDQyMCwgOTQ0MjUsIDk0NDMxLCA5NDQzNywgOTQ0NDMsIDk0NDQ4LCAKKyAgICA5NDQ1MiwgOTQ0NTcsIDk0NDYyLCA5NDQ2NywgOTQ0NzEsIDk0NDc2LCA5NDQ4MSwgOTQ0ODYsIDk0NDkxLCA0NzQ5MCwgCisgICAgOTQ0OTUsIDM1NzA0LCA5NDUwMywgOTQ1MDcsIDk0NTE1LCA5NDUyMywgOTQ1MzQsIDk0NTM5LCA5NDU0MywgMjQ0MjAsIAorICAgIDc2MTY5LCA5NDU0OCwgOTQ1NTQsIDk0NTU5LCA5NDU2OSwgOTQ1NzYsIDk0NTgxLCA5NDU4OSwgOTQ1OTgsIDk0NjAzLCAKKyAgICA5NDYwNywgOTQ2MTIsIDk0NjIwLCA5NDYyOCwgOTQ2MzUsIDcxMzU3LCA5NDY0MSwgOTQ2NDksIDk0NjU2LCA5NDY2NywgCisgICAgOTQ2NzMsIDk0Njc5LCAzNTcxNCwgOTQ2ODIsIDk0Njg5LCA5NDY5NywgOTQ3MDIsIDQ0NzA4LCA5NDcwNiwgOTQ3MTEsIAorICAgIDk0NzE4LCA5NDcyMywgOTU2NywgOTQ3MjcsIDk0NzM1LCA5NDc0MiwgOTQ3NDksIDk0NzU4LCA5NDc2NSwgOTQ3NzEsIAorICAgIDk0Nzg1LCA2MjE0LCA5NDc5MywgOTQ3OTksIDk0ODAzLCA5NDgwNiwgOTQ4MTQsIDk0ODIxLCA5NDgyNiwgOTQ4MzksIAorICAgIDk0ODQ2LCA5NDg1MiwgOTQ4NTYsIDk0ODY0LCA5NDg2OSwgOTQ4NzYsIDk0ODgxLCA2NjQwMywgOTQ4ODYsIDk0ODg5LCAKKyAgICA5NDg5OCwgOTQ5MDUsIDk0OTExLCA5NDkxNSwgOTQ5MTgsIDk0OTI2LCA5NDkzMiwgOTQ5NDEsIDk0OTUxLCA5NDk2MSwgCisgICAgOTQ5NzAsIDk0OTgxLCA5NDk4OSwgOTUwMDAsIDk1MDA1LCA5NTAwOSwgOTUwMTQsIDk1MDE4LCAzODcwOSwgOTUwMjYsIAorICAgIDIzMjM0LCAzODcxOCwgOTUwMzEsIDk1MDM2LCA5NTA0MSwgOTUwNDYsIDk1MDUxLCA5NTA1NiwgOTUwNjEsIDk1MDY1LCAKKyAgICA5NTA3MCwgOTUwNzUsIDk1MDgwLCA5NTA4NSwgOTUwOTAsIDk1MDk1LCA5NTA5OSwgOTUxMDQsIDk1MTA5LCA5NTExMywgCisgICAgOTUxMTcsIDk1MTIxLCA5NTEyNSwgOTUxMzAsIDk1MTM1LCA5NTEzOSwgOTUxNDQsIDk1MTQ4LCA5NTE1MiwgOTUxNTcsIAorICAgIDk1MTYyLCA5NTE2NywgOTUxNzIsIDk1MTc2LCA5NTE4MSwgOTUxODYsIDk1MTkwLCA5NTE5NSwgOTUyMDAsIDk1MjA1LCAKKyAgICA5NTIxMCwgOTUyMTUsIDk1MjIwLCA5NTIyNSwgOTUyMzAsIDk1MjM1LCA5NTI0MCwgOTUyNDUsIDk1MjUwLCA5NTI1NSwgCisgICAgOTUyNjAsIDk1MjY1LCA5NTI3MCwgOTUyNzUsIDk1MjgwLCA5NTI4NSwgOTUyOTAsIDk1Mjk0LCA5NTI5OSwgOTUzMDQsIAorICAgIDk1MzA5LCA5NTMxNCwgOTUzMTksIDk1MzI0LCA5NTMyOSwgOTUzMzQsIDk1MzM5LCA5NTM0NCwgOTUzNDksIDk1MzUzLCAKKyAgICA5NTM1OCwgOTUzNjIsIDk1MzY3LCA5NTM3MiwgOTUzNzcsIDk1MzgyLCA5NTM4NywgOTUzOTIsIDk1Mzk3LCA5NTQwMiwgCisgICAgOTU0MDcsIDk1NDExLCA5NTQxNSwgOTU0MjAsIDk1NDI1LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCA5NTQ0MywgOTU0NDgsIAorICAgIDk1NDUzLCA5NTQ1OCwgOTU0NjMsIDk1NDY3LCA5NTQ3MiwgOTU0NzcsIDk1NDgxLCA5NTQ4NiwgOTU0OTAsIDk1NDk0LCAKKyAgICA5NTQ5OCwgOTU1MDIsIDk1NTA3LCA5NTUxMSwgOTU1MTUsIDk1NTE5LCA5NTUyMywgOTU1MjcsIDk1NTMxLCA5NTUzNSwgCisgICAgOTU1MzksIDk1NTQzLCA5NTU0OCwgOTU1NTMsIDk1NTU4LCA5NTU2MywgOTU1NjgsIDk1NTczLCA5NTU3OCwgOTU1ODMsIAorICAgIDk1NTg4LCA5NTU5MywgOTU1OTcsIDk1NjAxLCA5NTYwNSwgOTU2MDksIDk1NjEzLCA5NTYxNywgOTU2MjIsIDk1NjI2LCAKKyAgICA5NTYzMSwgOTU2MzUsIDk1NjQwLCA5NTY0NSwgOTU2NDksIDk1NjUzLCA5NTY1OCwgOTU2NjIsIDk1NjY2LCA5NTY3MCwgCisgICAgOTU2NzQsIDk1Njc4LCA5NTY4MiwgOTU2ODYsIDk1NjkwLCA5NTY5NCwgOTU2OTgsIDk1NzAyLCA5NTcwNiwgOTU3MTAsIAorICAgIDk1NzE0LCA5NTcxOSwgOTU3MjQsIDk1NzI4LCA5NTczMiwgOTU3MzYsIDk1NzQwLCA5NTc0NCwgOTU3NDgsIDk1NzUzLCAKKyAgICA5NTc1NywgOTU3NjEsIDk1NzY1LCA5NTc2OSwgOTU3NzMsIDk1Nzc3LCA5NTc4MiwgOTU3ODYsIDk1NzkxLCA5NTc5NSwgCisgICAgOTU3OTksIDk1ODAzLCA5NTgwNywgOTU4MTEsIDk1ODE1LCA5NTgxOSwgOTU4MjMsIDk1ODI3LCA5NTgzMSwgOTU4MzUsIAorICAgIDk1ODQwLCA5NTg0NCwgOTU4NDgsIDk1ODUyLCA5NTg1NiwgOTU4NjAsIDk1ODY0LCA5NTg2OCwgOTU4NzIsIDk1ODc2LCAKKyAgICA5NTg4MCwgOTU4ODQsIDk1ODg5LCA5NTg5MywgOTU4OTcsIDk1OTAyLCA5NTkwNywgOTU5MTEsIDk1OTE1LCA5NTkxOSwgCisgICAgOTU5MjMsIDk1OTI3LCA5NTkzMSwgOTU5MzUsIDk1OTM5LCA5NTk0NCwgOTU5NDgsIDk1OTUzLCA5NTk1NywgOTU5NjIsIAorICAgIDk1OTY2LCA5NTk3MSwgOTU5NzUsIDk1OTgxLCA5NTk4NiwgOTU5OTAsIDk1OTk1LCA5NTk5OSwgOTYwMDQsIDk2MDA4LCAKKyAgICA5NjAxMywgOTYwMTcsIDk2MDIyLCAxNTAwLCA5NjAyNiwgMjg2MiwgMTc1NSwgMTY3MywgMjc5NTAsIDk2MDMwLCAyODcxLCAKKyAgICA5NjAzNCwgMTM2MiwgOTYwMzksIDEzMDQsIDk2MDQzLCA5NjA0NywgMjg4OCwgOTYwNTEsIDk2MDU5LCA5NjA2NiwgOTYwNzMsIAorICAgIDk2MDg3LCAyODkyLCA3NDc2LCA5NjA5NiwgOTYxMDQsIDk2MTExLCA5NjEyMiwgOTYxMzEsIDk2MTM4LCA5NjE1MCwgCisgICAgOTYxNjMsIDk2MTc2LCA5NjE4NywgOTYxOTIsIDk2MTk5LCA5NjIxMSwgOTYyMTUsIDI4OTYsIDEyOTYwLCA5NjIyNSwgCisgICAgOTYyMzAsIDk2MjM5LCA5NjI0OSwgOTYyNTQsIDI5MDAsIDk2MjYyLCA5NjI2NiwgOTYyNzEsIDk2Mjc4LCA5NjI4NCwgCisgICAgOTYyOTIsIDk2MzA0LCA5NjMxNCwgMTMwOSwgMTQzMTEsIDk2MzI3LCA5NjMzMSwgOTYzMzcsIDk2MzUxLCA5NjM2MywgCisgICAgOTYzNzUsIDk2Mzg1LCA5NjM5NCwgOTY0MDMsIDk2NDEyLCA5NjQyMCwgOTY0MzEsIDk2NDM5LCA0MzA2LCA5NjQ0OSwgCisgICAgOTY0NjAsIDk2NDY5LCA5NjQ3NSwgOTY0OTAsIDk2NDk3LCA5NjUwMywgOTY1MDgsIDM4ODQzLCA5NjUxMywgMjkyNCwgCisgICAgMTQzMTUsIDk2NTE3LCA5NjUyNCwgOTQ5MiwgOTY1MzMsIDk2NTM5LCAyOTI5LCAzNTE1MiwgOTY1NDgsIDY2MDk5LCAKKyAgICA5NjU1NSwgOTY1NTksIDk2NTY1LCA5NjU3NiwgOTY1ODIsIDk2NTg5LCA5NjU5NSwgOTY2MDMsIDk2NjEwLCA5NjYxNiwgCisgICAgOTY2MjcsIDk2NjM3LCA5NjY0NiwgOTY2NTcsIDk2NjY2LCA5NjY3MywgOTY2NzksIDk2Njg5LCA5NjY5NywgOTY3MDMsIAorICAgIDk2NzE4LCA5NjcyNCwgOTY3MjksIDk2NzM2LCA5NjczOSwgOTY3NDUsIDk2NzUyLCA5Njc1OCwgOTY3NjYsIDk2Nzc1LCAKKyAgICA5Njc4MywgOTY3ODksIDk2Nzk4LCA0Njc2MCwgOTY4MTIsIDk2ODE3LCA5NjgyMywgMTYxOTUsIDk2ODI4LCA5Njg0MSwgCisgICAgOTY4NTMsIDk2ODYyLCA5Njg3MCwgOTY4NzcsIDk2ODgxLCA5Njg4NSwgOTY4ODgsIDk2ODk1LCA5NjkwMiwgOTY5MTAsIAorICAgIDk2OTE4LCA5NjkyNywgOTY5MzUsIDE2MTAwLCA5Njk0MywgOTY5NDgsIDk2OTUyLCA5Njk2NCwgOTY5NzEsIDk2OTc4LCAKKyAgICA5Njk4NywgODc3LCA5Njk5NywgOTcwMDYsIDk3MDE3LCAyOTQ1LCA5NzAyMSwgOTcwMjUsIDk3MDMxLCA5NzA0NCwgOTcwNTYsIAorICAgIDk3MDY2LCA5NzA3NSwgOTcwODcsIDI4NzAxLCA5NzA5OCwgOTcxMDYsIDk3MTE1LCA5NzEyNiwgOTcxMzcsIDk3MTQ3LCAKKyAgICA5NzE1NywgOTcxNjYsIDk3MTc0LCAxMjQ3NCwgOTcxODEsIDk3MTg1LCA5NzE4OCwgOTcxOTMsIDk3MTk4LCA5NzIwMiwgCisgICAgOTcyMDgsIDEzMTQsIDk3MjE1LCA5NzIxOSwgMTMwNDIsIDk3MjIzLCA5NzIzNCwgOTcyNDMsIDk3MjUxLCA5NzI2MCwgCisgICAgOTcyNjgsIDk3Mjg0LCA5NzI5NSwgOTczMDQsIDk3MzEyLCA5NzMyNCwgOTczMzUsIDk3MzUxLCA5NzM2MSwgOTczODIsIAorICAgIDk3Mzk2LCA5NzQwOSwgOTc0MTcsIDk3NDI0LCA3NTIyLCA5NzQzNywgOTc0NDIsIDk3NDQ4LCA2MjIzLCA5NzQ1NCwgCisgICAgOTc0NTcsIDk3NDY0LCA5NzQ3NCwgODU5NSwgOTc0ODEsIDk3NDg2LCA5NzQ5MSwgOTc0OTYsIDk3NTA0LCA5NzUxMywgCisgICAgOTc1MjEsIDk3NTI2LCA5NzUzMywgMTA1OTQsIDEwNjAzLCA5NzUzOSwgOTc1NTAsIDk3NTU1LCA5NzU2MSwgMjk2MSwgCisgICAgMjk2NiwgOTc1NjcsIDExOTY3LCA5NzU3MywgOTc1ODAsIDk3NTg3LCA5NzYwMCwgOTc2MDUsIDIyNjYsIDg3LCA5NzYxMywgCisgICAgOTc2MTgsIDk3NjI2LCA5NzYzNiwgOTc2NDUsIDk3NjUxLCA5NzY2MCwgOTc2NjgsIDk3Njc4LCA5NzY4MiwgOTc2ODYsIAorICAgIDk3NjkxLCA5NzY5NSwgOTc3MDcsIDI5ODksIDk3NzE1LCA5NzcyMywgOTc3MjgsIDk3NzM5LCA5Nzc1MCwgOTc3NjIsIAorICAgIDk3NzczLCA5Nzc4MywgOTc3OTIsIDIzMjc1LCA5Nzc5NywgOTc4MDMsIDk3ODA4LCA5NzgxOCwgOTc4MjgsIDk3ODMzLCAKKyAgICAzMDcxMywgOTc4MzksIDk3ODQ0LCA5Nzg1MywgMjMyODcsIDk3ODU3LCA0NDA0LCAxNiwgOTc4NjIsIDk3ODcxLCA5Nzg3OCwgCisgICAgOTc4ODUsIDk3ODkxLCA5Nzg5NiwgOTc5MDAsIDk3OTA2LCAxMDg1LCA5NzkxMSwgOTc5MTYsIDY2NjgwLCA5NzkyMSwgCisgICAgOTc5MjYsIDk3OTMyLCA5NzkzOCwgOTc5NDYsIDk3OTUxLCA5Nzk1OSwgOTc5NjYsIDk3OTcyLCA5Nzk3NywgNDI5MTUsIAorICAgIDQ2NjU0LCA5Nzk4MywgMTgwNiwgMzIsIDk3OTkzLCA5ODAwNiwgOTgwMTEsIDk4MDE5LCA5ODAyNCwgOTgwMzAsIDMwMTUsIAorICAgIDMwNzg4LCA5ODAzNSwgOTgwNDMsIDk4MDUwLCA5ODA1NSwgOTgwNjQsIDY0MDA2LCA0MDIzLCA2Nzc4NCwgOTgwNzIsIAorICAgIDk4MDc2LCAxNzAwLCAxODE4LCA5ODA4MSwgOTgwODYsIDk4MDkzLCAxODIyLCAyODYsIDk4MTAwLCA5ODEwNiwgOTgxMTEsIAorICAgIDMwMzcsIDk4MTE1LCA5ODEyMCwgOTgxMjcsIDE4MjYsIDk4MTMyLCA5ODEzOCwgOTgxNDMsIDk4MTU1LCA2NDU0LCA5ODE2NSwgCisgICAgOTgxNzIsIDE4MzMsIDk4MTc4LCA5ODE4MywgOTgxOTAsIDk4MTk3LCA5ODIxMiwgOTgyMTksIDk4MjMwLCA5ODIzNSwgCisgICAgOTgyNDMsIDI2NDYsIDk4MjQ3LCA5ODI1OSwgOTgyNjQsIDk4MjY4LCA5ODI3NCwgMzA1OTYsIDIyNzEsIDk4Mjc4LCAKKyAgICA5ODI4OSwgOTgyOTMsIDk4Mjk3LCA5ODMwMywgOTgzMDcsIDk4MzE2LCA5ODMyMCwgOTgzMzEsIDk4MzM1LCAyMzE3LCAKKyAgICAzNDk2OSwgOTgzMzksIDk4MzQ5LCAzMTI4LCA5ODM1NywgOTgzNjYsIDk5OTksIDk4MzcxLCA5ODM3NiwgOTgzODAsIAorICAgIDk4Mzg5LCA5ODM5NiwgOTg0MDIsIDMwOTgsIDE2MjU5LCA5ODQwNiwgOTg0MTksIDk4NDM3LCA5ODQ0MiwgOTg0NTAsIAorICAgIDk4NDU4LCA5ODQ2OCwgMTA4NjYsIDE0NDI4LCA5ODQ4MCwgOTg0OTMsIDk4NTAwLCA5ODUxNCwgOTg1MjEsIDk4NTM3LCAKKyAgICA5ODU0NCwgOTg1NTAsIDIzMzI1LCAxMzY2NiwgOTg1NTcsIDk4NTY0LCA5ODU3NCwgOTg1ODMsIDQ3NDg5LCA5ODU5NSwgCisgICAgNDc2MjQsIDk4NjAzLCA5ODYwNiwgOTg2MTIsIDk4NjE4LCA5ODYyNCwgOTg2MzAsIDk4NjM2LCA5ODY0MywgOTg2NTAsIAorICAgIDk4NjU2LCA5ODY2MiwgOTg2NjgsIDk4Njc0LCA5ODY4MCwgOTg2ODYsIDk4NjkyLCA5ODY5OCwgOTg3MDQsIDk4NzEwLCAKKyAgICA5ODcxNiwgOTg3MjIsIDk4NzI4LCA5ODczNCwgOTg3NDAsIDk4NzQ2LCA5ODc1MiwgOTg3NTgsIDk4NzY0LCA5ODc3MCwgCisgICAgOTg3NzYsIDk4NzgyLCA5ODc4OCwgOTg3OTQsIDk4ODAwLCA5ODgwNiwgOTg4MTIsIDk4ODE4LCA5ODgyNCwgOTg4MzAsIAorICAgIDk4ODM2LCA5ODg0MiwgOTg4NDgsIDk4ODU0LCA5ODg2MCwgOTg4NjYsIDk4ODcyLCA5ODg3OCwgOTg4ODQsIDk4ODkwLCAKKyAgICA5ODg5NiwgOTg5MDIsIDk4OTA4LCA5ODkxNCwgOTg5MjAsIDk4OTI2LCA5ODkzMiwgOTg5MzgsIDk4OTQ0LCA5ODk1MCwgCisgICAgOTg5NTYsIDk4OTYzLCA5ODk2OSwgOTg5NzYsIDk4OTgzLCA5ODk4OSwgOTg5OTYsIDk5MDAzLCA5OTAwOSwgOTkwMTUsIAorICAgIDk5MDIxLCA5OTAyNywgOTkwMzMsIDk5MDM5LCA5OTA0NSwgOTkwNTEsIDk5MDU3LCA5OTA2MywgOTkwNjksIDk5MDc1LCAKKyAgICA5OTA4MSwgOTkwODcsIDk5MDkzLCAzMTEyLCA5OTcyLCA5OTA5OSwgOTkxMDUsIDk5MTEzLCA5OTExNywgOTYyNzQsIDMxMTYsIAorICAgIDk5MTIxLCAyMzA1MiwgMTMyOTksIDM5NzMsIDk5MTI1LCAzMTIyLCA5OTEyOSwgOTkxMzksIDk5MTQ1LCA5OTE1MSwgCisgICAgOTkxNTcsIDk5MTYzLCA5OTE2OSwgOTkxNzUsIDk5MTgxLCA5OTE4NywgOTkxOTMsIDk5MTk5LCA5OTIwNSwgOTkyMTEsIAorICAgIDk5MjE3LCA5OTIyMywgOTkyMjksIDk5MjM1LCA5OTI0MSwgOTkyNDcsIDk5MjUzLCA5OTI1OSwgOTkyNjUsIDk5MjcxLCAKKyAgICA5OTI3NywgOTkyODMsIDk5Mjg5LCA5OTI5NiwgOTkzMDMsIDk5MzA5LCA5OTMxNSwgOTkzMjEsIDk5MzI3LCA5OTMzMywgCisgICAgOTkzMzksIDEzMTksIDk5MzQ1LCA5OTM1MCwgOTkzNTUsIDk5MzYwLCA5OTM2NSwgOTkzNzAsIDk5Mzc1LCA5OTM4MCwgCisgICAgOTkzODUsIDk5Mzg5LCA5OTM5MywgOTkzOTcsIDk5NDAxLCA5OTQwNSwgOTk0MDksIDk5NDEzLCA5OTQxNywgOTk0MjEsIAorICAgIDk5NDI3LCA5OTQzMywgOTk0MzksIDk5NDQ1LCA5OTQ0OSwgOTk0NTMsIDk5NDU3LCA5OTQ2MSwgOTk0NjUsIDk5NDY5LCAKKyAgICA5OTQ3MywgOTk0NzcsIDk5NDgxLCA5OTQ4NiwgOTk0OTEsIDk5NDk2LCA5OTUwMSwgOTk1MDYsIDk5NTExLCA5OTUxNiwgCisgICAgOTk1MjEsIDk5NTI2LCA5OTUzMSwgOTk1MzYsIDk5NTQxLCA5OTU0NiwgOTk1NTEsIDk5NTU2LCA5OTU2MSwgOTk1NjYsIAorICAgIDk5NTcxLCA5OTU3NiwgOTk1ODEsIDk5NTg2LCA5OTU5MSwgOTk1OTYsIDk5NjAxLCA5OTYwNiwgOTk2MTEsIDk5NjE2LCAKKyAgICA5OTYyMSwgOTk2MjYsIDk5NjMxLCA5OTYzNiwgOTk2NDEsIDk5NjQ2LCA5OTY1MSwgOTk2NTYsIDk5NjYxLCA5OTY2NiwgCisgICAgOTk2NzEsIDk5Njc2LCA5OTY4MSwgOTk2ODYsIDk5NjkxLCA5OTY5NiwgOTk3MDEsIDk5NzA2LCA5OTcxMSwgOTk3MTYsIAorICAgIDk5NzIxLCA5OTcyNiwgOTk3MzEsIDk5NzM2LCA5OTc0MSwgOTk3NDYsIDk5NzUxLCA5OTc1NiwgOTk3NjEsIDk5NzY2LCAKKyAgICA5OTc3MSwgOTk3NzYsIDk5NzgxLCA5OTc4NiwgOTk3OTEsIDk5Nzk2LCA5OTgwMSwgOTk4MDYsIDk5ODExLCA5OTgxNiwgCisgICAgOTk4MjEsIDk5ODI2LCA5OTgzMSwgOTk4MzYsIDk5ODQxLCA5OTg0NiwgOTk4NTEsIDk5ODU2LCA5OTg2MSwgOTk4NjYsIAorICAgIDk5ODcxLCA5OTg3NiwgOTk4ODEsIDk5ODg2LCA5OTg5MSwgOTk4OTYsIDk5OTAxLCA5OTkwNiwgOTk5MTEsIDk5OTE2LCAKKyAgICA5OTkyMSwgOTk5MjYsIDk5OTMxLCA5OTkzNiwgOTk5NDEsIDk5OTQ2LCA5OTk1MSwgOTk5NTYsIDk5OTYxLCA5OTk2NiwgCisgICAgOTk5NzEsIDk5OTc2LCA5OTk4MSwgOTk5ODYsIDk5OTkxLCA5OTk5NiwgMTAwMDAxLCAxMDAwMDYsIDEwMDAxMSwgMTAwMDE2LCAKKyAgICAxMDAwMjEsIDEwMDAyNiwgMTAwMDMxLCAxMDAwMzYsIDEwMDA0MSwgMTAwMDQ2LCAxMDAwNTEsIDEwMDA1NiwgMTAwMDYxLCAKKyAgICAxMDAwNjYsIDEwMDA3MSwgMTAwMDc2LCAxMDAwODEsIDEwMDA4NiwgMTAwMDkxLCAxMDAwOTYsIDEwMDEwMSwgMTAwMTA2LCAKKyAgICAxMDAxMTEsIDEwMDExNiwgMTAwMTIxLCAxMDAxMjYsIDEwMDEzMSwgMTAwMTM2LCAxMDAxNDEsIDEwMDE0NiwgMTAwMTUxLCAKKyAgICAxMDAxNTYsIDEwMDE2MSwgMTAwMTY2LCAxMDAxNzEsIDEwMDE3NiwgMTAwMTgxLCAxMDAxODYsIDEwMDE5MSwgMTAwMTk2LCAKKyAgICAxMDAyMDEsIDEwMDIwNiwgMTAwMjExLCAxMDAyMTYsIDEwMDIyMSwgMTAwMjI2LCAxMDAyMzEsIDEwMDIzNiwgMTAwMjQxLCAKKyAgICAxMDAyNDYsIDEwMDI1MSwgMTAwMjU2LCAxMDAyNjEsIDEwMDI2NiwgMTAwMjcxLCAxMDAyNzYsIDEwMDI4MSwgMTAwMjg2LCAKKyAgICAxMDAyOTEsIDEwMDI5NiwgMTAwMzAxLCAxMDAzMDYsIDEwMDMxMSwgMTAwMzE2LCAxMDAzMjEsIDEwMDMyNiwgMTAwMzMxLCAKKyAgICAxMDAzMzYsIDEwMDM0MSwgMTAwMzQ2LCAxMDAzNTEsIDEwMDM1NiwgMTAwMzYxLCAxMDAzNjYsIDEwMDM3MSwgMTAwMzc3LCAKKyAgICAxMDAzODIsIDEwMDM4NywgMTAwMzkyLCAxMDAzOTcsIDEwMDQwMiwgMTAwNDA3LCAxMDA0MTIsIDEwMDQxOCwgMTAwNDIzLCAKKyAgICAxMDA0MjgsIDEwMDQzMywgMTAwNDM4LCAxMDA0NDMsIDEwMDQ0OCwgMTAwNDUzLCAxMDA0NTgsIDEwMDQ2MywgMTAwNDY4LCAKKyAgICAxMDA0NzMsIDEwMDQ3OCwgMTAwNDgzLCAxMDA0ODgsIDEwMDQ5MywgMTAwNDk4LCAxMDA1MDMsIDEwMDUwOCwgMTAwNTEzLCAKKyAgICAxMDA1MTgsIDEwMDUyMywgMTAwNTI4LCAxMDA1MzMsIDEwMDUzOCwgMTAwNTQzLCAxMDA1NDgsIDEwMDU1MywgMTAwNTU4LCAKKyAgICAxMDA1NjMsIDEwMDU2OCwgMTAwNTczLCAxMDA1NzgsIDEwMDU4NywgMTAwNTkyLCAxMDA2MDEsIDEwMDYwNiwgMTAwNjE1LCAKKyAgICAxMDA2MjAsIDEwMDYyOSwgMTAwNjM0LCAxMDA2NDMsIDEwMDY0OCwgMTAwNjU3LCAxMDA2NjIsIDEwMDY3MSwgMTAwNjc2LCAKKyAgICAxMDA2ODUsIDEwMDY5MCwgMTAwNjk1LCAxMDA3MDQsIDEwMDcwOCwgMTAwNzE3LCAxMDA3MjIsIDEwMDczMSwgMTAwNzM2LCAKKyAgICAxMDA3NDUsIDEwMDc1MCwgMTAwNzU5LCAxMDA3NjQsIDEwMDc3MywgMTAwNzc4LCAxMDA3ODcsIDEwMDc5MiwgMTAwODAxLCAKKyAgICAxMDA4MDYsIDEwMDgxNSwgMTAwODIwLCAxMDA4MjksIDEwMDgzNCwgMTAwODQzLCAxMDA4NDgsIDEwMDg1MywgMTAwODU4LCAKKyAgICAxMDA4NjMsIDEwMDg2OCwgMTAwODczLCAxMDA4NzgsIDEwMDg4MiwgMTAwODg3LCAxMDA4OTIsIDEwMDg5NywgMTAwOTAyLCAKKyAgICAxMDA5MDcsIDEwMDkxMiwgMTAwOTE4LCAxMDA5MjMsIDEwMDkyOCwgMTAwOTMzLCAxMDA5MzksIDEwMDk0MywgMTAwOTQ4LCAKKyAgICAxMDA5NTQsIDEwMDk1OSwgMTAwOTY0LCAxMDA5NjksIDEwMDk3NCwgMTAwOTc5LCAxMDA5ODQsIDEwMDk4OSwgMTAwOTk0LCAKKyAgICAxMDA5OTksIDEwMTAwNCwgMTAxMDEwLCAxMDEwMTUsIDEwMTAyMCwgMTAxMDI1LCAxMDEwMzEsIDEwMTAzNiwgMTAxMDQxLCAKKyAgICAxMDEwNDYsIDEwMTA1MSwgMTAxMDU3LCAxMDEwNjIsIDEwMTA2NywgMTAxMDcyLCAxMDEwNzcsIDEwMTA4MiwgMTAxMDg4LCAKKyAgICAxMDEwOTMsIDEwMTA5OCwgMTAxMTAzLCAxMDExMDgsIDEwMTExMywgMTAxMTE4LCAxMDExMjMsIDEwMTEyOCwgMTAxMTMzLCAKKyAgICAxMDExMzgsIDEwMTE0MywgMTAxMTQ4LCAxMDExNTMsIDEwMTE1OCwgMTAxMTYzLCAxMDExNjgsIDEwMTE3MywgMTAxMTc4LCAKKyAgICAxMDExODMsIDEwMTE4OCwgMTAxMTkzLCAxMDExOTgsIDEwMTIwMywgMTAxMjA5LCAxMDEyMTUsIDEwMTIyMSwgMTAxMjI2LCAKKyAgICAxMDEyMzEsIDEwMTIzNiwgMTAxMjQxLCAxMDEyNDcsIDEwMTI1MywgMTAxMjU5LCAxMDEyNjQsIDEwMTI2OSwgMTAxMjc0LCAKKyAgICAxMDEyODAsIDEwMTI4NSwgMTAxMjkwLCAxMDEyOTUsIDEwMTMwMCwgMTAxMzA1LCAxMDEzMTAsIDEwMTMxNSwgMTAxMzIwLCAKKyAgICAxMDEzMjUsIDEwMTMzMCwgMTAxMzM1LCAxMDEzNDAsIDEwMTM0NSwgMTAxMzUwLCAxMDEzNTUsIDEwMTM2MCwgMTAxMzY2LCAKKyAgICAxMDEzNzIsIDEwMTM3OCwgMTAxMzgzLCAxMDEzODgsIDEwMTM5MywgMTAxMzk4LCAxMDE0MDQsIDEwMTQxMCwgMTAxNDE2LCAKKyAgICAxMDE0MjEsIDEwMTQyNiwgMTAxNDMxLCAxMDE0MzYsIDEwMTQ0MSwgMTAxNDQ2LCAxMDE0NTEsIDEwMTQ1NiwgMTAxNDYxLCAKKyAgICAxNzY4NiwgMTAxNDY2LCAxMDE0NzIsIDEwMTQ3NywgMTAxNDgyLCAxMDE0ODcsIDEwMTQ5MiwgMTAxNDk3LCAxMDE1MDMsIAorICAgIDEwMTUwOCwgMTAxNTEzLCAxMDE1MTgsIDEwMTUyMywgMTAxNTI4LCAxMDE1MzQsIDEwMTUzOSwgMTAxNTQ0LCAxMDE1NDksIAorICAgIDEwMTU1NCwgMTAxNTU5LCAxMDE1NjQsIDEwMTU2OSwgMTAxNTc0LCAxMDE1NzksIDEwMTU4NCwgMTAxNTg5LCAxMDE1OTQsIAorICAgIDEwMTU5OSwgMTAxNjA0LCAxMDE2MDksIDEwMTYxNCwgMTAxNjE5LCAxMDE2MjQsIDEwMTYyOSwgMTAxNjM0LCAxMDE2MzksIAorICAgIDEwMTY0NCwgMTAxNjUwLCAxMDE2NTUsIDEwMTY2MCwgMTAxNjY1LCAxMDE2NzAsIDEwMTY3NSwgMTAxNjgwLCAxMDE2ODUsIAorICAgIDEwMTY5MCwgMTAxNjk1LCAxMDE3MDAsIDEwMTcwNSwgMTAxNzEwLCAxMDE3MTUsIDEwMTcyMCwgMTAxNzI1LCAxMDE3MzAsIAorICAgIDEwMTczNSwgMTAxNzQwLCAxMDE3NDUsIDEwMTc1MCwgMTAxNzU1LCAxMDE3NjAsIDEwMTc2NSwgMTAxNzcwLCAxMDE3NzUsIAorICAgIDEwMTc4MCwgMTAxNzg1LCAxMDE3OTAsIDEwMTc5NSwgMTAxODAwLCAxMDE4MDUsIDEwMTgxMCwgMTAxODE1LCAxMDE4MjAsIAorICAgIDEwMTgyNSwgMTAxODMwLCAxMDE4MzUsIDEwMTg0MCwgMTAxODQ1LCAxMDE4NTAsIDEwMTg1NiwgMTAxODYxLCAxMDE4NjYsIAorICAgIDEwMTg3MSwgMTAxODc2LCAxMDE4ODEsIDEwMTg4NiwgMTAxODkxLCAxMDE4OTYsIDEwMTkwMSwgMTAxOTA2LCAxMDE5MTEsIAorICAgIDEwMTkxNywgMTAxOTIyLCAxMDE5MjgsIDEwMTkzMywgMTAxOTM4LCAxMDE5NDMsIDEwMTk0OCwgMTAxOTUzLCAxMDE5NTgsIAorICAgIDEwMTk2NCwgMTAxOTY5LCAxMDE5NzQsIDEwMTk4MCwgMTAxOTg1LCAxMDE5OTAsIDEwMTk5NSwgMTAyMDAwLCAxMDIwMDUsIAorICAgIDEwMjAxMSwgMTAyMDE3LCAxMDIwMjIsIDEwMjAyNywgMTMzMjEsIDEwMjAzMiwgMTAyMDM3LCAxMDIwNDIsIDEwMjA0NywgCisgICAgMTAyMDUyLCAxMDIwNTcsIDEwMjA2MiwgMTAyMDY3LCAxMDIwNzIsIDEwMjA3NywgMTAyMDgyLCAxMDIwODcsIDEwMjA5MiwgCisgICAgMTAyMDk3LCAxMDIxMDIsIDEwMjEwNywgMTAyMTEyLCAxMDIxMTcsIDEwMjEyMiwgMTAyMTI3LCAxMDIxMzIsIDEwMjEzNywgCisgICAgMTAyMTQyLCAxMDIxNDcsIDEwMjE1MiwgMTAyMTU3LCAxMDIxNjIsIDEwMjE2NywgMTAyMTcyLCAxMDIxNzcsIDEwMjE4MiwgCisgICAgMTAyMTg3LCAxMDIxOTIsIDEwMjE5NywgMTAyMjAyLCAxMDIyMDcsIDEwMjIxMiwgMTAyMjE3LCAxMDIyMjIsIDEwMjIyNywgCisgICAgMTAyMjMyLCAxMDIyMzcsIDEwMjI0MiwgMTAyMjQ3LCAxMDIyNTIsIDEwMjI1NywgMTAyMjYyLCAxMDIyNjcsIDEwMjI3MiwgCisgICAgMTAyMjc3LCAxMDIyODIsIDEwMjI4NywgMTAyMjkyLCAxMDIyOTcsIDEwMjMwMiwgMTAyMzA3LCAxMDIzMTIsIDEwMjMxNywgCisgICAgMTAyMzIyLCAxMDIzMjcsIDEwMjMzMiwgMTAyMzM3LCAxMDIzNDIsIDEwMjM0NywgMTAyMzUyLCAxMDIzNTgsIDEwMjM2MywgCisgICAgMTAyMzY4LCAxMDIzNzMsIDEwMjM3OCwgMTAyMzg0LCAxMDIzODksIDEwMjM5NCwgMTAyMzk5LCAxMDI0MDQsIDEwMjQwOSwgCisgICAgMTAyNDE0LCAxMDI0MjAsIDEwMjQyNSwgMTAyNDMwLCAxMDI0MzUsIDEwMjQ0MCwgMTAyNDQ1LCAxMDI0NTEsIDEwMjQ1NiwgCisgICAgMTAyNDYxLCAxMDI0NjYsIDEwMjQ3MSwgMTAyNDc2LCAxMDI0ODIsIDEwMjQ4NywgMTAyNDkyLCAxMDI0OTcsIDEwMjUwMiwgCisgICAgMTAyNTA3LCAxMDI1MTMsIDEwMjUxOSwgMTAyNTI0LCAxMDI1MjksIDEwMjUzNCwgMTAyNTQwLCAxMDI1NDYsIDEwMjU1MiwgCisgICAgMTAyNTU3LCAxMDI1NjIsIDEwMjU2OCwgMTAyNTc0LCAxMDI1NzksIDEwMjU4NSwgMTAyNTkxLCAxMDI1OTcsIDEwMjYwMiwgCisgICAgMTAyNjA3LCAxMDI2MTMsIDEwMjYxOCwgMTAyNjI0LCAxMDI2MjksIDEwMjYzNSwgMTAyNjQ0LCAxMDI2NDksIDEwMjY1NCwgCisgICAgMTAyNjYwLCAxMDI2NjUsIDEwMjY3MSwgMTAyNjc2LCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkxLCAxMDI2OTYsIDEwMjcwMSwgCisgICAgMTAyNzA2LCAxMDI3MTEsIDEwMjcxNiwgMTAyNzIxLCAxMDI3MjYsIDEwMjczMSwgMTAyNzM2LCAxMDI3NDEsIDEwMjc0NiwgCisgICAgMTAyNzUxLCAxMDI3NTYsIDEwMjc2MSwgMTAyNzY2LCAxMDI3NzEsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODYsIDEwMjc5MSwgCisgICAgMTAyNzk2LCAxMDI4MDEsIDEwMjgwNiwgMTAyODExLCAxMDI4MTYsIDEwMjgyMSwgMTAyODI2LCAxMDI4MzIsIDEwMjgzOCwgCisgICAgMTAyODQ0LCAxMDI4NDksIDEwMjg1NCwgMTAyODU5LCAxMDI4NjQsIDEwMjg2OSwgMTAyODc0LCAxMDI4NzksIDEwMjg4NCwgCisgICAgMTAyODg5LCAxMDI4OTQsIDEwMjg5OSwgMTAyOTA0LCAxMDI5MDksIDEwMjkxNCwgMTAyOTE5LCAxMDI5MjQsIDEwMjkyOSwgCisgICAgMTAyOTM0LCAxMDI5MzksIDEwMjk0NCwgMTAyOTUwLCAxMDI5NTYsIDEwMjk2MSwgMTAyOTY3LCAxMDI5NzIsIDEwMjk3NywgCisgICAgMTAyOTgzLCAxMDI5ODgsIDEwMjk5NCwgMTAyOTk5LCAxMDMwMDUsIDEwMzAxMCwgMTAzMDE2LCAxMDMwMjEsIDEwMzAyNywgCisgICAgMTAzMDMyLCAxMDMwMzcsIDEwMzA0MiwgMTAzMDQ3LCAxMDMwNTIsIDEwMzA1NywgMTAzMDYyLCA5OTE0MCwgOTkxNDYsIAorICAgIDk5MTUyLCA5OTE1OCwgMTAzMDY4LCA5OTE2NCwgOTkxNzAsIDEwMzA3NCwgOTkxNzYsIDk5MTgyLCA5OTE4OCwgOTkxOTQsIAorICAgIDk5MjAwLCA5OTIwNiwgOTkyMTIsIDk5MjE4LCA5OTIyNCwgMTAzMDgwLCA5OTIzMCwgOTkyMzYsIDk5MjQyLCAxMDMwODYsIAorICAgIDk5MjQ4LCA5OTI1NCwgOTkyNjAsIDk5MjY2LCAxMDMwOTIsIDk5MjcyLCA5OTI3OCwgOTkyODQsIDk5MzA0LCAxMDMwOTgsIAorICAgIDEwMzEwNCwgOTkzMTAsIDEwMzExMCwgOTkzMTYsIDk5MzIyLCA5OTMyOCwgOTkzMzQsIDk5MzQwLCAzMTM5LCAzMTQ0LCAKKyAgICAxMDMxMTYsIDEwMzEyMSwgMTAzMTI0LCAxMDMxMzAsIDEwMzEzNiwgMTAzMTQzLCAxMDMxNDgsIDEwMzE1MywgMjMyMiwgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KICNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA4Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjAxCisjZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMTk4CiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rW10gPSB7Ci0gICAgMCwgMjExLCAyMjgsIDI0MCwgMjEyLCA4MiwgMjE3LCAzMSwgODIsIDQyLCA1NCwgMjQzLCA5NywgNTQsIDIxOCwgMjQ2LCAKLSAgICA1NCwgMjUwLCAyMzUsIDI1MCwgMTYwLCA0OSwgMjE5LCA3NiwgNTAsIDIxOSwgNzYsIDI1MCwgNTksIDkxLCA1NCwgMjQ1LCAKLSAgICAyMzMsIDIzNSwgMjE5LCAyMzksIDEwMiwgMjExLCA2MSwgMjEyLCAwLCAxNywgMjAyLCA4NCwgMTcsIDEwNSwgMTcsIDEwOCwgCi0gICAgMTcsIDE0NywgMTcsIDE0OSwgMTcsIDE3MCwgMTcsIDE5NSwgMTcsIDIxMywgMTExLCAxNywgMTk5LCAxNywgMjIyLCA2MywgCi0gICAgMjQ1LCAyNDIsIDIxMywgMTQzLCAyMjcsIDE3OSwgNTQsIDI0MSwgMzUsIDU0LCAyMzcsIDI0NywgNTQsIDIxNywgNDcsIDgyLCAKLSAgICAyNDUsIDIzMSwgMjUwLCA0OSwgOCwgNiwgMSwgNjMsIDgsIDYsIDEsIDI0OSwgMjU1LCA4LCA2LCAxLCAyNDcsIDEyNSwgOCwgCi0gICAgNiwgMSwgMjQ1LCA1MSwgOCwgNiwgMSwgNzQsIDgsIDYsIDEsIDI0MCwgMTc0LCA4LCA2LCAxLCAyMzksIDc1LCA4LCA2LCAxLCAKLSAgICAyMzcsIDE3MSwgOCwgNiwgMSwgNzUsIDgsIDYsIDEsIDIzMCwgMTg0LCA4LCA2LCAxLCAyMzAsIDU0LCA4LCA2LCAxLCAxNTksIAotICAgIDgsIDYsIDEsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2MywgOCwgNiwgMSwgNzgsIDgsIDYsIDEsIDIxOSwgMTg0LCA4LCAKLSAgICA2LCAxLCAyMTcsIDEzNCwgOCwgNiwgMSwgMTQ2LCA4LCA2LCAxLCAxOTQsIDgsIDYsIDEsIDIxMCwgNjksIDgsIDYsIDEsIAotICAgIDY4LCA4LCA2LCAxLCAyMDYsIDE2NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDgsIDYsIDEsIDIwMywgMTk2LCA4LCA2LCAxLCAKLSAgICAyMDMsIDEyNCwgOCwgNiwgMSwgMjAyLCAxNTksIDQ5LCA1MSwgMTU1LCAyMTYsIDc0LCAyMTIsIDAsIDUwLCA1MSwgMTU1LCAKLSAgICAyNDYsIDUzLCAyNTEsIDEzOCwgMTI0LCAyMjcsIDExNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCA4LCA1LCAxLCA2MywgOCwgNSwgCi0gICAgMSwgMjQ5LCAyNTUsIDgsIDUsIDEsIDI0NywgMTI1LCA4LCA1LCAxLCAyNDUsIDUxLCA4LCA1LCAxLCA3NCwgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzQsIDgsIDUsIDEsIDIzOSwgNzUsIDgsIDUsIDEsIDIzNywgMTcxLCA4LCA1LCAxLCA3NSwgOCwgNSwgMSwgMjMwLCAKLSAgICAxODQsIDgsIDUsIDEsIDIzMCwgNTQsIDgsIDUsIDEsIDE1OSwgOCwgNSwgMSwgMjI2LCAxODUsIDgsIDUsIDEsIDIyMywgCi0gICAgMTYzLCA4LCA1LCAxLCA3OCwgOCwgNSwgMSwgMjE5LCAxODQsIDgsIDUsIDEsIDIxNywgMTM0LCA4LCA1LCAxLCAxNDYsIDgsIAotICAgIDUsIDEsIDE5NCwgOCwgNSwgMSwgMjEwLCA2OSwgOCwgNSwgMSwgNjgsIDgsIDUsIDEsIDIwNiwgMTY0LCA4LCA1LCAxLCAKLSAgICAyMDQsIDE0NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDgsIDUsIDEsIDIwMywgMTI0LCA4LCA1LCAxLCAyMDIsIDE1OSwgNDksIAotICAgIDI0NSwgOTMsIDE1NSwgODAsIDIyNywgMTE0LCA1MCwgMjQ1LCA5MywgMTU1LCAyMDgsIDIyNywgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCAyNDYsIDIyMCwgNTQsIDIxOCwgMjAsIDU0LCAyNDUsIDkyLCA1NCwgMjAzLCAKLSAgICA0MywgNTQsIDI0NywgMjAzLCAxNDIsIDIxNCwgMTY4LCA1NCwgMjQzLCAyMzEsIDI0NSwgMTY5LCA1NCwgMjQwLCA0MSwgCi0gICAgMjE5LCAyNDAsIDIzMSwgMzEsIDIyNywgMjE3LCA1MiwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMjEsIDE2NiwgNTQsIAotICAgIDIxMiwgNywgMjM1LCAyMjAsIDIxNiwgMTI5LCA1NCwgMjI1LCAxNzAsIDI0NCwgNTUsIDU0LCAyMTgsIDc1LCA1NCwgMjEwLCAKLSAgICAxOTksIDEwOCwgMjEwLCAxOTksIDE0NywgMjUxLCAxMjYsIDI1MSwgMTM4LCAyMjQsIDE1MywgNTQsIDIxOCwgMTI2LCA1NCwgCi0gICAgMTAxLCAyNDMsIDg1LCAyNDYsIDIzMSwgMjEwLCAxOTksIDEwNSwgMjI1LCA4MCwgMjE5LCAyNDAsIDIzMSwgMzEsIDIxNiwgCi0gICAgMTEsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAyMDQsIAotICAgIDE2MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAyMzAsIDIzOSwgCi0gICAgMjE3LCA0NywgODIsIDgsIDYsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDE2NSwgOCwgNiwgMSwgMzQsIAotICAgIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAKLSAgICAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA2LCAxLCAyNTEsIDEwOSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIAotICAgIDUyLCA4LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIAotICAgIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjQzLCAyMzEsIDgsIDYsIDEsIDI0MCwgMjQzLCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTIsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDIyMywgMjI0LCA1NCwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDEwNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgCi0gICAgNiwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjEzLCA1NywgMTk0LCA4LCA1LCAxLCAzNCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAzNCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjUxLCAxMDksIDgsIDUsIAotICAgIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyNDAsIDI0MywgOCwgNSwgMSwgMjIzLCAxNjQsIAotICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAKLSAgICAyNDMsIDEzNywgNTQsIDgsIDUsIDEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDEwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDgsIDUsIAotICAgIDEsIDIwMywgMTI1LCAzLCAxNjUsIDgsIDUsIDEsIDIwOSwgNDAsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyNDMsIDIzMSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDIyMCwgNjIsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIAotICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIAotICAgIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgOTUsIDgsIAotICAgIDYsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDcwLCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA1LCAKLSAgICAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM5LCA3NiwgCi0gICAgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCAKLSAgICA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIzNywgCi0gICAgMTcyLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDk1LCAKLSAgICA4LCA1LCAxLCAyMzcsIDE3MiwgMywgOTUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyMjUsIDE3MCwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIAotICAgIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MiwgOCwgNiwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQzLCA4NCwgNzUsIDgsIDYsIDMyLCAyMzEsIDgxLCA4LCA1LCAzMiwgCi0gICAgMjMxLCA4MSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDYsIDUyLCA4LCAKLSAgICA2LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA2LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDI0NywgMjksIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIAotICAgIDg1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIDg1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgCi0gICAgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjIzLCAxNjQsIAotICAgIDIxNywgMjUxLCAyNDcsIDEzNywgMjUwLCAxNjAsIDgsIDYsIDEsIDI0MSwgNzgsIDgsIDUsIDEsIDI0MSwgNzgsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE1OCwgMywgNTIsIDE2NSwgOCwgNSwgMSwgMTU4LCAKLSAgICAzLCA1MiwgMTY1LCA4LCA2LCAzMiwgMjIwLCA3MywgOCwgNSwgMzIsIDIyMCwgNzMsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgMTY1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDE2NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjE3LCAKLSAgICAxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIAotICAgIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDE2NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNDYsIDUyLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgCi0gICAgNSwgMSwgMjE1LCA5NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNSwgCi0gICAgOTQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDYsIAotICAgIDIzMSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgCi0gICAgMjEwLCA3MCwgMywgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgCi0gICAgMTcwLCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxMDYsIAotICAgIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDEwNiwgMywgNTIsIDE2NSwgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDEwNiwgMywgMjIwLCAKLSAgICA2MiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDYsIDUyLCA4LCA2LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIwMywgCi0gICAgMTI1LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgCi0gICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAKLSAgICAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxNjMsIDE5NCwgOCwgNSwgCi0gICAgMSwgNjYsIDMsIDk1LCA4LCA2LCAxLCA2NiwgMywgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIDY2LCAKLSAgICAzLCAyMDgsIDE0MiwgOCwgNiwgMSwgMTQzLCAxOTUsIDgsIDUsIDEsIDE0MywgMTk1LCA4LCA2LCAxLCAxNzEsIDc4LCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA2LCAxLCAyNTEsIDg0LCAyNDUsIAotICAgIDUxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAxMTMsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDI0NCwgMzcsIDgsIDYsIDEsIDIxNiwgNzMsIDc0LCAKLSAgICA4LCA2LCAxLCAyMTQsIDE5MiwgOCwgNiwgMSwgMTcxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDExMywgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzUsIDMsIDExMywgOCwgNiwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA2LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgCi0gICAgMjM1LCAyNTUsIDgsIDYsIDEsIDIzMCwgMjMwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIAotICAgIDMsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTEzLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA1LCAxLCAKLSAgICAyMjgsIDI2LCAzLCA5NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNDksIAotICAgIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2MywgNTAsIDIyNywgMjEwLCA4LCA2LCAxLCAxNTgsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA2LCAxLCAyMjAsIAotICAgIDU3LCA4LCA1LCAxLCAyMjAsIDU3LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgCi0gICAgMTEzLCA4LCAxLCAyMDIsIDIxNiwgOCwgNiwgMSwgMTQzLCAxMDgsIDgsIDUsIDEsIDE0MywgMTA4LCA4LCA2LCAxLCAyNDEsIAotICAgIDcsIDgsIDEsIDIxNiwgNzMsIDI0MSwgOCwgMjI3LCAxNCwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE5LCAxNDIsIDExMywgOCwgCi0gICAgNiwgMSwgMjEwLCA3MCwgMywgMTEzLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDYsIAotICAgIDEsIDIwNiwgMjE2LCA4LCA2LCAxLCAyMDYsIDE2NSwgMywgMTEzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA1LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgOTUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA5NSwgCi0gICAgOCwgNiwgMSwgMjQwLCAxNzcsIDgsIDYsIDEsIDI0MCwgMTc4LCAyMTYsIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMjE2LCAKLSAgICA3MiwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIwOSwgMjQ4LCA4LCAxLCAxMjAsIDMsIDk1LCA4LCA2LCAxLCAxNDMsIDE3MCwgCi0gICAgOCwgNSwgMSwgMTQzLCAxNzAsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgMSwgMjAzLCAKLSAgICAxOTksIDgsIDEsIDI0NCwgMzAsIDI0NiwgMjcsIDgsIDEsIDIyNywgMjU0LCAyNDYsIDI3LCA4LCAxLCAyNTAsIDI0OCwgCi0gICAgMjQ2LCAyNywgOCwgMSwgMjE2LCA3OSwgMjQ2LCAyNywgOCwgNiwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKLSAgICAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCAKLSAgICA2LCAxLCAyMjcsIDgxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNSwgMSwgMjMwLCAxODQsIDgsIDUsIDEsIDIyNywgODEsIDgsIAotICAgIDYsIDEsIDIyMiwgNDksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjIyLCA0OSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgCi0gICAgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAKLSAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjQ3LCAyOSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIwNywgMTc0LCA3NCwgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAzNCwgMywgNzAsIAotICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjUxLCAKLSAgICAxMTAsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIAotICAgIDk1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA5NSwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE1OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjMsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDE4NSwgCi0gICAgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQyLCAwLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE1OSwgOCwgNSwgCi0gICAgMSwgMjQyLCAwLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxNjUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjM1LCAyNTIsIDgsIDYsIDEsIDIwMywgMTk5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjUxLCAxMTAsIDMsIDE2NSwgOCwgNSwgMSwgMjUxLCAKLSAgICAxMTAsIDMsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyMTEsIDMyLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIxMSwgMzIsIAotICAgIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAotICAgIDYsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMzUsIAotICAgIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCAKLSAgICA2LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgCi0gICAgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxNTgsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjE3LCAKLSAgICAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIxNywgMSwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCi0gICAgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzAsIAotICAgIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgCi0gICAgMjQ1LCAyMzQsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDUsIDIzNCwgNTYsIDgsIDYsIDEsIDIwMiwgMjM0LCA4LCA1LCAKLSAgICAxLCAyMDIsIDIzNCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDcsIAotICAgIDI5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDI0NSwgCi0gICAgOTUsIDgsIDYsIDEsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMTksIDIxNiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgCi0gICAgNSwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NSwgCi0gICAgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMTU4LCAzLCAKLSAgICAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgNzAsIAotICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIwMywgCi0gICAgMTI1LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgMjQ1LCA5NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgOTUsIDgsIAotICAgIDUsIDEsIDI0MywgODQsIDIzMCwgMTg0LCA4LCA1LCAxLCAyNDQsIDEzMCwgMjQzLCAxOTEsIDgsIDUsIDEsIDIxNywgNjYsIAotICAgIDI0MywgMTkxLCA4LCA2LCAxLCAzNCwgMywgOTUsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCA5NSwgOCwgNSwgMSwgMjQ3LCAKLSAgICAxMjYsIDMsIDk1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIAotICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAKLSAgICAyMDksIDI0OCwgOCwgNiwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNiwgMSwgCi0gICAgNjYsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDE0MiwgOCwgNiwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDk1LCA4LCA1LCAxLCAxODgsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCA5NSwgOCwgNiwgMSwgNSwgMjE3LCAxMzUsIDMsIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIAotICAgIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNiwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNiwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDk1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCA2MywgOCwgCi0gICAgNSwgMSwgMjUxLCAyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjUxLCAyLCA4LCA1LCAxLCA2NiwgMywgMTEzLCA4LCA1LCAxLCAKLSAgICAxNzEsIDc4LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjA5LCAyNDgsIDgsIAotICAgIDUsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNSwgMSwgMjE2LCA3MywgNzQsIDgsIDUsIDEsIDIxNCwgMTkyLCA4LCA1LCAxLCAKLSAgICAyMTQsIDE5MywgMywgMTEzLCA4LCA1LCAxLCAxNzEsIDc0LCA4LCA1LCAxLCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKLSAgICAyMTYsIDczLCAxNzEsIDE4OCwgMywgMTEzLCA4LCA1LCAxLCAyNDYsIDE2LCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKLSAgICAyNDMsIDg0LCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDExMywgOCwgNSwgMSwgMTMyLCAyMzksIAotICAgIDc1LCA4LCAxLCA1LCA2LCAyMzksIDc1LCA4LCA1LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgMjE2LCAxODIsIDIzNiwgNTMsIAotICAgIDgsIDUsIDEsIDIwNywgMTc0LCAyMzcsIDE3MSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNSwgMSwgMjM3LCAzMiwgCi0gICAgMywgMTEzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjMwLCA4LCAxLCA1LCA2LCA3NSwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDgsIDEyNCwgOCwgNSwgCi0gICAgMSwgMjI4LCAxMzEsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjI3LCAxNjQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjYsIAotICAgIDE4NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgCi0gICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNDksIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIDExMywgCi0gICAgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDgsIDUsIDEsIDI0OCwgMjI1LCA3OCwgOCwgMSwgNSwgNiwgMjIwLCA3MywgOCwgNSwgCi0gICAgMSwgMjQ2LCAxNiwgMjIwLCAzNiwgOCwgNSwgMSwgMjE4LCAxOTIsIDgsIDUsIDEsIDIwNywgMTc0LCAxNDYsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDExMywgOCwgCi0gICAgNSwgMSwgMjE3LCAxLCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMTYsIDczLCAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCAxLCA1LCA2LCAKLSAgICAxNDYsIDgsIDEsIDUsIDYsIDIzMCwgMjM5LCAxNDYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDExMywgOCwgNSwgMSwgMjQxLCAKLSAgICA3LCA4LCA1LCAxLCAyNDMsIDg0LCAyMzAsIDE4NSwgMywgMjExLCAzMiwgMjUsIDExMywgOCwgNSwgMSwgMjExLCAxNzQsIAotICAgIDIxNiwgNzMsIDI0MSwgNywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgCi0gICAgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDE0MiwgOCwgNSwgMSwgMjA2LCAyMTYsIAotICAgIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDYsIDE2NCwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjAzLCAxMjQsIDgsIDEsIDUsIDYsIDIwMywgMTI0LCA4LCA1LCAKLSAgICAxLCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzcsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDUsIDk1LCA4LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKLSAgICAyMTgsIDE5OSwgMjA1LCAxODYsIDIzOSwgMTI2LCA4LCAxLCAyMzAsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgMSwgCi0gICAgMjExLCA0MCwgMjQ3LCAxMjUsIDgsIDEsIDI0OCwgNzAsIDI0NiwgMjcsIDgsIDEsIDUsIDYsIDI0OSwgMjU1LCA4LCA1LCAxLCAKLSAgICAyNDYsIDE2LCAxNzEsIDc0LCA4LCAxLCA1LCA2LCAyMzksIDc2LCAzLCAxMTMsIDgsIDEsIDUsIDYsIDIzNywgMTcxLCA4LCAKLSAgICA1LCAxLCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCA4LCAxLCA1LCA2LCAxNTksIAotICAgIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAxMTMsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMTYsIDczLCAKLSAgICAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjQ0LCAzLCAyNDMsIAotICAgIDE5MSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjA4LCAyMiwgMjQzLCAxOTEsIAotICAgIDgsIDUsIDEsIDIwOSwgMTM3LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjA5LCAxOTQsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCAKLSAgICA1LCAxLCAyNDAsIDM5LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjI2LCAyNDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDE4NywgCi0gICAgMjQzLCAxOTEsIDgsIDEsIDI0OCwgNzAsIDIxOCwgMjQ1LCA4LCAxLCAyNDgsIDc4LCAyMTgsIDI0NSwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MSwgMjUsIAotICAgIDIwOSwgMjQ4LCA2NSwgMSwgNSwgMjM3LCAxNzEsIDY1LCAxLCA1LCAyMzcsIDE3MiwgMywgMTEzLCA2NSwgMSwgNSwgMjMwLCAKLSAgICAxODQsIDY1LCAxLCA1LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMTQ2LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIxNywgMSwgCi0gICAgMywgMTEzLCA2NSwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgNjUsIDEsIDUsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgMjAzLCAKLSAgICAxMjQsIDY1LCAxLCAyMTcsIDIzNiwgNjUsIDEsIDUyLCAyMTcsIDIzNiwgNjUsIDEsIDIwNywgMTc0LCAyNDUsIDIzMywgNjUsIAotICAgIDEsIDI1MCwgMTYwLCA2NSwgMSwgMjE2LCA3MywgMjQ1LCAyMzMsIDY1LCAxLCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIAotICAgIDQ5LCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgCi0gICAgNjEsIDY1LCAxLCA0OSwgMjUwLCA5NCwgNjUsIDEsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgCi0gICAgMTIxLCAyNTAsIDk0LCA2NSwgMSwgMjQ2LCA1MywgMjUxLCAxMzgsIDI0NywgMjksIDY1LCAxLCA4MCwgMjI3LCAxMTQsIDY1LCAKLSAgICAxLCAyMjUsIDE3MCwgNjUsIDEsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIzNywgMjU0LCAyNTEsIDEzOCwgNjUsIDEsIAotICAgIDEyNCwgODAsIDIyNywgMTE0LCA2NSwgMSwgMTI0LCAyMjUsIDE3MCwgNjUsIDEsIDEyNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCAKLSAgICA2NSwgMSwgMTI0LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDE2MiwgCi0gICAgMjA4LCA4MiwgMjQ1LCAyNDIsIDY1LCAxLCAyNDYsIDIxNiwgNTAsIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyNDYsIDIxNiwgCi0gICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAxMTIsIDIxMCwgMywgNjUsIDEsIDEyMSwgMjEwLCAzLCA2NSwgMSwgOTEsIDU0LCAKLSAgICA2NSwgMSwgMjI0LCAxMDMsIDU0LCAyNDcsIDIxNCwgNzAsIDU1LCAyMTUsIDI1MywgNTUsIDIyMCwgNjIsIDUsIDIwOCwgCi0gICAgMjI3LCA1MiwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjE2LCA1OCwgMTEzLCA2NSwgMSwgMjQ1LCAxMzEsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgNSwgMjM4LCAyMzUsIDY1LCAxLCA1LCAxNTksIDY1LCAxLCA1LCAxOTQsIDY1LCAxLCA1LCAyMDMsIAotICAgIDE5NiwgNjUsIDEsIDUsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgNjEsIDY1LCAxLCAyNDAsIDE5OCwgMTQzLCAxNDIsIDY1LCAKLSAgICAxLCAxMzgsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAxNDMsIDE0MiwgNjUsIDEsIAotICAgIDI0MCwgMTk3LCAxNDMsIDE0MiwgNjUsIDEsIDIwMywgMSwgMjQ0LCAyNywgMTQzLCA4MiwgNjUsIDEsIDIwMywgNzcsIDI0NCwgCi0gICAgMjcsIDE0MywgODIsIDY1LCAxLCAyMDUsIDE4NCwgNjUsIDEsIDIwNiwgMjUxLCA2NSwgMSwgNTIsIDI1MCwgMTYwLCA2NSwgCi0gICAgMSwgMTI0LCAxMjEsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDExMiwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgNDksIDI1MCwgOTQsIAotICAgIDY1LCAxLCAxMjQsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCAyMTUsIDI1MiwgNjUsIDEsIDEwMSwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjUxLCAxMjYsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgMTI0LCAyMDgsIDIyNywgNjUsIDEsIDIxNiwgMTg4LCAyNDUsIDI0MiwgNjUsIDEsIDI0OCwgMTQyLCAKLSAgICAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDI0OCwgMTQyLCAxMjQsIDIwOCwgCi0gICAgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTI0LCAyMDgsIDE2MSwgNjUsIDEsIDIxMywgMzQsIDY1LCAxLCAxNzEsIDIxMywgMzQsIAotICAgIDY1LCAxLCAxMjQsIDQ5LCA0NywgMzksIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIAotICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAzOSwgMjA4LCAyMjcsIDM5LCAyMjUsIDE3MCwgMzksIDIxOSwgMTk4LCAzOSwgMjQ3LCAKLSAgICAyMTQsIDM5LCA3MCwgNTUsIDM5LCAyNDMsIDIzMSwgMzksIDIzNiwgMTE2LCA1NSwgMzksIDIxNSwgMjUzLCA1NSwgMzksIAotICAgIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyNDcsIDI5LCAzOSwgODAsIDIyNywgMTE1LCA1NSwgMzksIDUyLCA4MCwgCi0gICAgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI0NywgNTIsIDM5LCAyMzAsIDIzOSwgMjQ3LCAKLSAgICAyMTQsIDM5LCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDU1LCAzOSwgMjQ1LCAyMzQsIDU1LCAzOSwgMjE2LCA3MywgMjQ1LCAyMzQsIAotICAgIDU1LCAzOSwgMjQ1LCAyMzQsIDg3LCAyMTYsIDE2LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM5LCA1NiwgMzksIDI1MSwgMTI2LCAKLSAgICAyNTEsIDEzOSwgNTYsIDM5LCA0OSwgMjEwLCA0LCA1NiwgMzksIDUwLCAyMTAsIDQsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCAKLSAgICA1NSwgMzksIDIzNiwgNTMsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAxMTIsIDIxMCwgNCwgNTYsIDM5LCAxMjEsIAotICAgIDIxMCwgNCwgNTYsIDM5LCA5MSwgMiwgNTYsIDM5LCAyMjQsIDEwMywgMiwgNTYsIDM5LCAyMTksIDE0MCwgMjM2LCAxMTYsIAotICAgIDU2LCAzOSwgMjE2LCA3OSwgMjM2LCAxMTYsIDU2LCAzOSwgNzAsIDU2LCAzOSwgMjQzLCAyMzIsIDU2LCAzOSwgMjE1LCAKLSAgICAyNTMsIDU2LCAzOSwgMjQ1LCAyMzQsIDU2LCAzOSwgMjQ2LCAyMzEsIDM5LCAyMjAsIDYyLCAzOSwgODAsIDIyNywgMTE1LCAKLSAgICA1NiwgMzksIDI0NywgMjA4LCA1NiwgMzksIDIzMCwgMjM5LCA1MiwgMjUwLCAxMjcsIDU2LCAzOSwgMjQ3LCAzMCwgNTYsIAotICAgIDM5LCAyNDYsIDUzLCAyNTEsIDEzOSwgNTYsIDM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMTUsIDU2LCAKLSAgICAzOSwgMjA4LCAyMjgsIDU2LCAzOSwgMjI1LCAxNzEsIDU2LCAzOSwgMTI0LCAyMjcsIDExNCwgMzksIDUyLCAxMjQsIDIyNywgCi0gICAgMTE0LCAzOSwgMjA4LCAyMjgsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMTYzLCAKLSAgICAyMTEsIDMyLCAyMTksIDE5OSwgMzksIDIxMiwgMjI4LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgMTYzLCAyMTIsIDEsIDIxOSwgCi0gICAgMTk5LCAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU2LCAzOSwgMjMwLCAyMzksIDI0NywgMjA4LCA1NiwgMzksIDUxLCA1NiwgCi0gICAgMzksIDIxNCwgMTc2LCA1NiwgMzksIDIwMywgMTk3LCA1NSwgMzksIDgwLCAyMDgsIDIyNywgMzksIDUyLCAyMTksIDE5OCwgCi0gICAgMzksIDIzNywgMjU0LCAxNDMsIDgyLCAzOSwgMjUxLCAxMjYsIDE0MywgODIsIDM5LCAzMCwgMjE4LCAyMzksIDM5LCAzMCwgCi0gICAgMjI4LCAyNTIsIDM5LCAzMCwgMjQzLCAyMjUsIDIwOCwgMTQ5LCAzOSwgMzAsIDIwMiwgMjIxLCAzOSwgMjQ3LCAyMDgsIDU1LCAKLSAgICAzOSwgMjQxLCAzNSwgMiwgNTYsIDM5LCA1MiwgODAsIDIyNywgMTE1LCA1NiwgMzksIDQ5LCAyNTAsIDIxOCwgNTYsIDM5LCAKLSAgICAyMjEsIDE2NiwgMjA4LCAyMjgsIDU1LCAzOSwgMjM2LCAxMjIsIDU1LCAzOSwgMjUxLCA3LCAxNTYsIDIwOCwgMTczLCA1NSwgCi0gICAgMzksIDQ5LCA1MCwgNTMsIDU2LCAzOSwgMTc3LCA1MywgNTYsIDM5LCAyMzgsIDQsIDIzMCwgOTYsIDM5LCA1MCwgMjUwLCAKLSAgICA5NSwgNTUsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCAyNDAsIDM2LCAzOSwgMjAzLCAxOTcsIDU2LCAzOSwgNDksIAotICAgIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMTIsIDI1MCwgOTUsIDU2LCAKLSAgICAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU1LCAzOSwgNzAsIDg3LCAyMTYsIDE2LCAzOSwgMjUwLCA2MCwgNTYsIDM5LCA1MiwgCi0gICAgMjE1LCAyNTMsIDU2LCAzOSwgMjAyLCAzMCwgNTUsIDM5LCA1MiwgMjQ3LCAyMTUsIDU2LCAzOSwgNTIsIDI0NywgMjE0LCAKLSAgICAzOSwgNTIsIDIyNSwgMTcwLCAzOSwgNTIsIDIyNSwgMTcxLCA1NiwgMzksIDUyLCAyMDgsIDIyNywgMzksIDUyLCAyMzAsIAotICAgIDIzOSwgMjQ3LCAyMTQsIDM5LCA1MiwgODYsIDUzLCA1NiwgMzksIDgsIDUsIDEsIDYzLCAzOSwgOCwgNSwgMSwgNzQsIDM5LCAKLSAgICA4LCA1LCAxLCA3NSwgMzksIDgsIDUsIDEsIDc4LCAzOSwgOCwgNSwgMSwgNjgsIDM5LCA4LCA1LCAxLCAyNDcsIDEyNSwgMzksIAotICAgIDgsIDUsIDEsIDI0NSwgNTEsIDM5LCA4LCA1LCAxLCAyMzcsIDE3MSwgMzksIDgsIDUsIDEsIDIyNiwgMTg1LCAzOSwgOCwgNSwgCi0gICAgMSwgMTQ2LCAzOSwgOCwgNSwgMSwgMjEwLCA2OSwgMzksIDgsIDUsIDEsIDIwNiwgMTY0LCAzOSwgOCwgNSwgMSwgMjAzLCAKLSAgICAxOTYsIDMwLCA2LCAxLCAyMzcsIDIwLCAzMCwgNSwgMSwgMjM3LCAyMCwgMzAsIDYsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgCi0gICAgMzAsIDUsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgMzAsIDIyMSwgNDQsIDU0LCAzMCwgMjI2LCAyNTEsIDIyMSwgNDQsIDU0LCAKLSAgICAzMCwgNiwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgNSwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgMjAyLCAyMjEsIAotICAgIDMwLCA1LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNSwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgCi0gICAgMTQ1LCA5NywgMzAsIDUsIDIxNiwgNzMsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAyMTcsIDQ3LCAKLSAgICA4MiwgMzAsIDYsIDEsIDIwMiwgMjI3LCAzMCwgMjA4LCAxNDksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDMwLCA2LCAxLCAKLSAgICAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgMjUwLCAyMDMsIDIwOSwgMTYzLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA4LCAKLSAgICAxNDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjA4LCAxNDksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIAotICAgIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIAotICAgIDMwLCA2LCAxLCAyNTEsIDIsIDMwLCA2LCAxLCAyNDgsIDEwNiwgMzAsIDYsIDEsIDIzOCwgMjM1LCAzMCwgNiwgMSwgMjQ0LCAKLSAgICAzNywgMzAsIDYsIDEsIDI0MSwgMzcsIDMwLCA2LCAxLCAyMDIsIDgzLCAzMCwgNiwgMSwgMjQwLCAyNDgsIDMwLCA2LCAxLCAKLSAgICAyMDksIDc0LCAzMCwgNiwgMSwgMjMwLCAyMzAsIDMwLCA2LCAxLCAyMjksIDI0NywgMzAsIDYsIDEsIDIyOCwgMjQsIDMwLCAKLSAgICA2LCAxLCAyMjMsIDI0NiwgMzAsIDYsIDEsIDIyMSwgODQsIDMwLCA2LCAxLCAyMDMsIDE3MCwgMzAsIDYsIDEsIDIyMCwgMzQsIAotICAgIDMwLCA2LCAxLCAyMTgsIDE2NywgMzAsIDYsIDEsIDIxNiwgNTksIDMwLCA2LCAxLCAyMTIsIDE0NCwgMzAsIDYsIDEsIDIwOSwgCi0gICAgMjA3LCAzMCwgNiwgMSwgMjA2LCAyMTYsIDMwLCA2LCAxLCAyMTgsIDE5MiwgMzAsIDYsIDEsIDI0NiwgMTQyLCAzMCwgNiwgCi0gICAgMSwgMjE3LCAyMDIsIDMwLCA2LCAxLCAyMjAsIDM2LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI0LCAzMCwgNiwgCi0gICAgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI0MSwgCi0gICAgMzgsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIAotICAgIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIDMwLCA1LCAxLCAyNTEsIAotICAgIDIsIDMwLCA1LCAxLCAyNDgsIDEwNiwgMzAsIDUsIDEsIDIzOCwgMjM1LCAzMCwgNSwgMSwgMjQ0LCAzNywgMzAsIDUsIDEsIAotICAgIDI0MSwgMzcsIDMwLCA1LCAxLCAyMDIsIDgzLCAzMCwgNSwgMSwgMjQwLCAyNDgsIDMwLCA1LCAxLCAyMDksIDc0LCAzMCwgNSwgCi0gICAgMSwgMjMwLCAyMzAsIDMwLCA1LCAxLCAyMjksIDI0NywgMzAsIDUsIDEsIDIyOCwgMjQsIDMwLCA1LCAxLCAyMjMsIDI0NiwgCi0gICAgMzAsIDUsIDEsIDIyMSwgODQsIDMwLCA1LCAxLCAyMDMsIDE3MCwgMzAsIDUsIDEsIDIyMCwgMzQsIDMwLCA1LCAxLCAyMTgsIAotICAgIDE2NywgMzAsIDUsIDEsIDIxNiwgNTksIDMwLCA1LCAxLCA0NiwgMjEyLCAxNDQsIDMwLCA1LCAxLCAyMTIsIDE0NCwgMzAsIAotICAgIDUsIDEsIDIwOSwgMjA3LCAzMCwgNSwgMSwgMjA2LCAyMTYsIDMwLCA1LCAxLCAyMTgsIDE5MiwgMzAsIDUsIDEsIDI0NiwgCi0gICAgMTQyLCAzMCwgNSwgMSwgMjE3LCAyMDIsIDMwLCA1LCAxLCAyMjAsIDM2LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgCi0gICAgMjI0LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjA4LCAxNDksIDMwLCAKLSAgICA1LCAxLCAyMDYsIDIxNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDIzMCwgCi0gICAgMTksIDk3LCAzMCwgMjQ4LCAxMDcsIDk3LCAzMCwgMjA5LCA3NSwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjM2LCAxMTYsIDk3LCAKLSAgICAzMCwgMjA2LCAyMTcsIDMsIDI1MSwgMTI2LCAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjA2LCAyMTcsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjE4LCAxOTMsIDk3LCAzMCwgMjE4LCAxNjgsIDk3LCAzMCwgMjMwLCAxOSwgOTcsIAotICAgIDMwLCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgNSwgMSwgMjUwLCAxMjYsIDIyOSwgMCwgMzAsIDEsIDIxMSwgNzEsIDMwLCAKLSAgICA1LCAxLCAyMTEsIDcxLCAzMCwgMSwgMjQzLCAxOTksIDMwLCA1LCAxLCAyNDMsIDE5OSwgMzAsIDEsIDIyOSwgMCwgMzAsIDUsIAotICAgIDEsIDIyOSwgMCwgMzAsIDEsIDIxNCwgMjQ2LCAzMCwgNSwgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyMTMsIDM1LCA4NCwgNSwgCi0gICAgMSwgMjEzLCAzNSwgODQsIDYsIDEsIDI0MCwgNDUsIDg0LCA1LCAxLCAyNDAsIDQ1LCA4NCwgNiwgMSwgMjI5LCAxMjcsIDg0LCAKLSAgICA1LCAxLCAyMjksIDEyNywgODQsIDYsIDEsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMjM2LCAxMDcsIDg0LCA2LCAxLCAyMzgsIAotICAgIDIzMCwgODQsIDUsIDEsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMjEzLCAxLCA4NCwgNSwgMSwgMjEzLCAxLCA4NCwgNiwgMSwgCi0gICAgMjQ0LCA1MiwgODQsIDUsIDEsIDI0NCwgNTIsIDMwLCAyMjksIDI0OCwgOTcsIDMwLCAyMTYsIDYwLCA5NywgMzAsIDIyNiwgCi0gICAgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAxLCAyMDIsIDIyNywgMzAsIDYsIDIwOSwgNzUsIDk3LCAzMCwgMjI2LCAyMjEsIAotICAgIDI0MSwgMzgsIDk3LCAzMCwgMjE2LCA3MywgMjI2LCAyMjEsIDI0MSwgMzgsIDk3LCAzMCwgNiwgMSwgMjEyLCAyNDIsIDMwLCAKLSAgICA1LCAxLCAyMTIsIDI0MiwgMzAsIDYsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA2LCAxLCAyMTQsIDI0MywgMzAsIDUsIAotICAgIDEsIDIxNCwgMjQzLCAzMCwgMjE2LCA2MCwgMywgMjExLCAzMiwgOTcsIDMwLCA2LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAKLSAgICAxNDUsIDk3LCAzMCwgNiwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDIxNiwgNzMsIDI0MiwgODMsIAotICAgIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMzAsIAotICAgIDIzNCwgMzYsIDYsIDEsIDI0MywgMTMwLCAzNiwgNiwgMSwgMjM4LCA1MiwgMzYsIDYsIDEsIDIwNywgMTEsIDIzMSwgMTEwLCAKLSAgICAzNiwgNiwgMSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA2LCAxLCAyMDMsIDExLCAzNiwgNiwgMSwgCi0gICAgMjMwLCAxNjEsIDM2LCA2LCAxLCAyMjcsIDgwLCAzNiwgNiwgMSwgMjIyLCA0MSwgMzYsIDYsIDEsIDIwOCwgOCwgMzYsIDYsIAotICAgIDEsIDIyOSwgNDksIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNjgsIDM2LCAKLSAgICA2LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDYzLCAzNiwgNiwgMSwgMjQ4LCAxNjIsIDM2LCA2LCAxLCAyMDYsIDU1LCAzNiwgCi0gICAgNiwgMSwgMjM4LCAxMDUsIDM2LCA2LCAxLCAyNDQsIDc1LCAzNiwgNiwgMSwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMDIsIDcxLCAKLSAgICAzNiwgNiwgMSwgMjAyLCA5MiwgMzYsIDYsIDEsIDc1LCAzNiwgNiwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNiwgMSwgMTczLCAKLSAgICAzNiwgNiwgMSwgMjQxLCAxMjIsIDM2LCA2LCAxLCAyNDEsIDEwMywgMzYsIDYsIDEsIDI0MSwgOTIsIDM2LCA2LCAxLCA3OCwgCi0gICAgMzYsIDYsIDEsIDIxOSwgMzQsIDM2LCA2LCAxLCAyNDEsIDI4LCAzNiwgNiwgMSwgMjQxLCAxNywgMzYsIDYsIDEsIDIwOSwgCi0gICAgMTg3LCAzNiwgNiwgMSwgNjgsIDM2LCA2LCAxLCAyNDEsIDE1NCwgMzYsIDYsIDEsIDE1MiwgMzYsIDYsIDEsIDIwOCwgMTQsIAotICAgIDM2LCA2LCAxLCAyNDYsIDE3MCwgMzYsIDYsIDEsIDIxMywgOTAsIDM2LCA2LCAxLCAyMTMsIDQ2LCAzNiwgNiwgMSwgMjM3LCAKLSAgICA5MSwgNTQsIDM2LCA2LCAxLCAyMDMsIDMwLCAzNiwgNiwgMSwgMjEyLCA3LCA1NCwgMzYsIDYsIDEsIDc0LCAzNiwgNiwgMSwgCi0gICAgMjAyLCAyMTMsIDM2LCA2LCAxLCAxOTgsIDM2LCA1LCAxLCA2MywgMzYsIDUsIDEsIDI0OCwgMTYyLCAzNiwgNSwgMSwgMjA2LCAKLSAgICA1NSwgMzYsIDUsIDEsIDIzOCwgMTA1LCAzNiwgNSwgMSwgMjQ0LCA3NSwgMzYsIDUsIDEsIDIzMSwgMTEwLCAzNiwgNSwgMSwgCi0gICAgMjAyLCA3MSwgMzYsIDUsIDEsIDIwMiwgOTIsIDM2LCA1LCAxLCA3NSwgMzYsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMzYsIDUsIAotICAgIDEsIDE3MywgMzYsIDUsIDEsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjQxLCAxMDMsIDM2LCA1LCAxLCAyNDEsIDkyLCAzNiwgNSwgCi0gICAgMSwgNzgsIDM2LCA1LCAxLCAyMTksIDM0LCAzNiwgNSwgMSwgMjQxLCAyOCwgMzYsIDUsIDEsIDI0MSwgMTcsIDM2LCA1LCAxLCAKLSAgICAyMDksIDE4NywgMzYsIDUsIDEsIDY4LCAzNiwgNSwgMSwgMjQxLCAxNTQsIDM2LCA1LCAxLCAxNTIsIDM2LCA1LCAxLCAyMDgsIAotICAgIDE0LCAzNiwgNSwgMSwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMTMsIDkwLCAzNiwgNSwgMSwgMjEzLCA0NiwgMzYsIDUsIDEsIAotICAgIDIzNywgOTEsIDU0LCAzNiwgNSwgMSwgMjAzLCAzMCwgMzYsIDUsIDEsIDIxMiwgNywgNTQsIDM2LCA1LCAxLCA3NCwgMzYsIAotICAgIDUsIDEsIDIwMiwgMjEzLCAzNiwgNSwgMSwgMTk4LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgCi0gICAgMjMwLCAyMzQsIDM2LCA1LCAxLCAyNDMsIDEzMCwgMzYsIDUsIDEsIDIzOCwgNTIsIDM2LCA1LCAxLCAyMDcsIDExLCAyMzEsIAotICAgIDExMCwgMzYsIDUsIDEsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjQ3LCAxMzUsIDc1LCAzNiwgNSwgMSwgMjAzLCAxMSwgMzYsIAotICAgIDUsIDEsIDIzMCwgMTYxLCAzNiwgNSwgMSwgMjI3LCA4MCwgMzYsIDUsIDEsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMDgsIDgsIAotICAgIDM2LCA1LCAxLCAyMjksIDQ5LCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgMjEyLCAyMjgsIAotICAgIDY4LCAzNiwgNSwgMSwgMjQxLCAyNDgsIDM2LCA2LCAxLCAyMjAsIDM2LCAzNiwgNSwgMSwgMjIwLCAzNiwgMzYsIDYsIDEsIAotICAgIDIwMywgNjYsIDM2LCA1LCAxLCAyMDMsIDY2LCAzNiwgNiwgMSwgMjMwLCAyMjgsIDc0LCAzNiwgNSwgMSwgMjMwLCAyMjgsIAotICAgIDc0LCAzNiwgNiwgMSwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIDEsIAotICAgIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIAotICAgIDYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCi0gICAgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMjgsIAotICAgIDIyNSwgMzYsIDUsIDEsIDIyOCwgMjI1LCAzNiwgNiwgMSwgMjE3LCAyMDIsIDM2LCA1LCAxLCAyMTcsIDIwMiwgMzYsIDYsIAotICAgIDEsIDIzOSwgMjM1LCAzNiwgNSwgMSwgMjM5LCAyMzUsIDM2LCA2LCAxLCAyMzAsIDE4NiwgMzYsIDUsIDEsIDIzMCwgMTg2LCAKLSAgICAzNiwgNiwgMSwgMjMwLCAxODcsIDMsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM2LCA1LCAxLCAyMzAsIDE4NywgMywgNTIsIAotICAgIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDYsIDEsIDIwNywgMTQsIDM2LCA1LCAxLCAyMDcsIDE0LCAzNiwgNiwgMSwgMjE1LCAKLSAgICAxOTEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMTUsIDE5MSwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMCwgMzcsIDMsIDIwOCwgCi0gICAgMTk3LCAzNiwgNSwgMSwgMjIwLCAzNywgMywgMjA4LCAxOTcsIDM2LCA2LCAxLCAyMTksIDIyNCwgMzYsIDUsIDEsIDIxOSwgCi0gICAgMjI0LCAzNiwgNiwgMSwgMjI5LCAwLCAzNiwgNSwgMSwgMjI5LCAwLCAzNiwgMjA5LCAzNSwgNTQsIDM5LCAzNiwgMjA4LCAKLSAgICAxOTcsIDM5LCAzNiwgMjE5LCAxNDEsIDM5LCAzNiwgMjQ0LCAxNDIsIDIxOCwgNzEsIDM5LCAzNiwgMjE3LCAxOTYsIDIxOCwgCi0gICAgNzEsIDM5LCAzNiwgMjE4LCA1NSwgMzksIDM2LCAyMzYsIDEyLCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMjQsIDExNCwgNTQsIAotICAgIDM2LCA2LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDIzNSwgMjA2LCAKLSAgICAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDUsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDYsIDEsIAotICAgIDI0MSwgMjksIDMsIDIwOCwgMjU0LCAzNiwgNSwgMSwgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA2LCAxLCAyMzgsIDEwNiwgCi0gICAgMywgMjA2LCAyMTUsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjA2LCAyMTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgOTUsIAotICAgIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgOTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAKLSAgICAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDcyLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjAyLCA3MiwgCi0gICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDkzLCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAKLSAgICA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDk1LCAzNiwgNiwgMSwgMjQ4LCAyMTQsIDE3MywgMzYsIDUsIDEsIDI0OCwgCi0gICAgMjE0LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjQ0LCAyMCwgCi0gICAgMzYsIDYsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDUsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDYsIDEsIAotICAgIDIxOSwgMzUsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNTEsIDE0NSwgCi0gICAgMTUyLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDE1MiwgMzYsIDYsIDEsIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAKLSAgICAyNDEsIDE4LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDksIDE4OCwgCi0gICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIxMSwgNTMsIDY4LCAzNiwgNSwgMSwgMjExLCA1MywgNjgsIDM2LCA2LCAxLCAyMTEsIAotICAgIDUzLCAxMDYsIDMsIDk1LCAzNiwgNSwgMSwgMjExLCA1MywgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCAKLSAgICAyNDQsIDIwLCAzNiwgNSwgMSwgMjM3LCAxNjAsIDMsIDI0NCwgMjAsIDM2LCA2LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIAotICAgIDM2LCA1LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAotICAgIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDI0NiwgMTcxLCAKLSAgICAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMTMsIDEyLCAzNiwgNSwgMSwgMjEzLCAxMiwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIAotICAgIDE3MCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MCwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAKLSAgICAyMCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDEsIDIxOSwgMTMzLCAzNiwgNiwgMSwgCi0gICAgMjAyLCA3MiwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDIzMCwgNDQsIAotICAgIDMsIDExMywgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIAotICAgIDUsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDExMywgMzYsIDUsIDEsIDI0MSwgCi0gICAgOTMsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjA5LCAKLSAgICAyNDgsIDM2LCA2LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA2LCAKLSAgICAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTksIAotICAgIDEzMywgMzYsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDM0LCAKLSAgICAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA1LCAKLSAgICAzMiwgMzQsIDIzMSwgMTEwLCAzNiwgNiwgMSwgMjMxLCAxMTEsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIAotICAgIDI0NywgMjE0LCAzNiwgNiwgMSwgMjE0LCAxOTIsIDM2LCA1LCAxLCAyMTQsIDE5MiwgMzYsIDYsIDEsIDIxNCwgMTkzLCAzLCAKLSAgICAyNDMsIDIzMSwgMzYsIDUsIDEsIDIxNCwgMTkzLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNSwgMSwgMjAyLCA3MiwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMDIsIDkzLCAzLCAyNDMsIDIzMSwgMzYsIAotICAgIDUsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjUxLCAKLSAgICAxNDUsIDI0MSwgMjUyLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAKLSAgICAyNDgsIDIyNSwgNzgsIDM2LCA1LCAxLCAyNDgsIDIyNSwgNzgsIDM2LCA2LCAxLCAyNDgsIDIyNSwgMTU4LCAzLCAyNDMsIAotICAgIDIzMSwgMzYsIDUsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgCi0gICAgMzYsIDUsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMjUsIDE3MCwgMzYsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzNiwgNiwgCi0gICAgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIAotICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjQ2LCAxNzEsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDI0NCwgCi0gICAgMjAsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMywgMzEsIDMsIDI0MywgMjMxLCAzNiwgCi0gICAgNSwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjExLCAzMiwgMjUsIDExMywgMzYsIAotICAgIDUsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDUsIAotICAgIDEsIDIzNywgMTYwLCAzLCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgOTUsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgCi0gICAgOTUsIDM2LCA2LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQ0LCA3NSwgMzYsIDYsIDEsIAotICAgIDIyOSwgMTAsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDIsIAotICAgIDIxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjAyLCAyMSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0MSwgMjQ0LCAzNiwgNSwgMSwgCi0gICAgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA2LCAxLCAyMjksIDEwLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjI3LCAKLSAgICA4MCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjIsIDQxLCAzNiwgNiwgMSwgCi0gICAgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIxMiwgNzEsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDgsIAotICAgIDE5MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIwOCwgMTkxLCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDUsIDEsIAotICAgIDIxNiwgNzMsIDIwMiwgOTIsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAxMjMsIDMsIDExMywgCi0gICAgMzYsIDYsIDEsIDIyNywgMTYxLCAzNiwgNSwgMSwgMjI3LCAxNjEsIDM2LCA2LCAxLCAyMTYsIDYxLCAzNiwgNSwgMSwgMjE2LCAKLSAgICA2MSwgMzYsIDYsIDEsIDIwMywgOTksIDM2LCA1LCAxLCAyMDMsIDk5LCAzNiwgNiwgMSwgMjE3LCAxMjYsIDM2LCA1LCAxLCAKLSAgICAyMTcsIDEyNiwgMzYsIDYsIDEsIDIwNCwgNjIsIDM2LCA1LCAxLCAyMDQsIDYyLCAzNiwgNiwgMSwgMjUxLCAyNiwgMTczLCAKLSAgICAzNiwgNSwgMSwgMjUxLCAyNiwgMTczLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjQxLCAKLSAgICAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAKLSAgICAxMDEsIDExMywgMzYsIDYsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxMywgMTMsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgNDksIDExMywgMzYsIDYsIDEsIDI0MSwgMjM3LCAKLSAgICAzNiwgNSwgMSwgMjQxLCAyMzcsIDM2LCA2LCAxLCAyNDQsIDEyNCwgMzYsIDUsIDEsIDI0NCwgMTI0LCAzNiwgNiwgMSwgCi0gICAgMjQxLCAxMjMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMTc4LCA2LCAxLCAyNTAsIDUsIAotICAgIDE3OCwgNiwgMSwgMjQ4LCAxMjIsIDE3OCwgNiwgMSwgMjM4LCA2OSwgMTc4LCA2LCAxLCAyNDQsIDIxMiwgMTc4LCA2LCAxLCAKLSAgICAyNDEsIDE2NywgMTc4LCA2LCAxLCAyMDIsIDExNiwgMTc4LCA2LCAxLCAyNDEsIDE0NywgMTc4LCA2LCAxLCAyNDAsIDI1MCwgCi0gICAgMTc4LCA2LCAxLCAxMzUsIDE3OCwgNiwgMSwgMjAyLCA3MSwgMTc4LCA2LCAxLCAyMzEsIDE5LCAxNzgsIDYsIDEsIDIyNywgCi0gICAgODMsIDE3OCwgNiwgMSwgMjAzLCAxNzQsIDE3OCwgNiwgMSwgMjQ3LCA5MiwgMTc4LCA2LCAxLCAyMjksIDE4MCwgMTc4LCA2LCAKLSAgICAxLCAyMzYsIDEzNiwgMTc4LCA2LCAxLCAyMzAsIDE4MSwgMTc4LCA2LCAxLCAyMzgsIDExNiwgMTc4LCA2LCAxLCAyNDYsIAotICAgIDE2MCwgMTc4LCA2LCAxLCAyMjQsIDI0MCwgMTc4LCA2LCAxLCAyMDMsIDExLCAxNzgsIDYsIDEsIDIyMSwgMTUyLCAxNzgsIAotICAgIDYsIDEsIDIxMywgOTAsIDE3OCwgNiwgMSwgMjA1LCAxODksIDE3OCwgNiwgMSwgMjQ2LCAxOTksIDE3OCwgNiwgMSwgMjE5LCAKLSAgICAxNiwgMTc4LCA2LCAxLCAyMzAsIDE0NCwgMTc4LCA2LCAxLCAyMTYsIDIyMCwgMTc4LCA2LCAxLCAyMTQsIDE1NSwgMTc4LCAKLSAgICA2LCAxLCAyMDUsIDIzNCwgMTc4LCA2LCAxLCAyMDgsIDE5NCwgMTc4LCA2LCAxLCAyMTYsIDEyMiwgMTc4LCA2LCAxLCAyNDUsIAotICAgIDI1NCwgMTc4LCA2LCAxLCAyMDIsIDI1MiwgMTc4LCA2LCAxLCAyMTgsIDEwMiwgMTc4LCA2LCAxLCAyMjksIDE5MSwgMTc4LCAKLSAgICA2LCAxLCAyMjAsIDYwLCAxNzgsIDYsIDEsIDI0MCwgNDcsIDE3OCwgNjUsIDEsIDQ5LCAxNjIsIDIxNSwgMjUyLCAxNzgsIAotICAgIDI1MCwgMTYwLCAxNzgsIDI0MSwgOTYsIDgyLCAxNzgsIDI0MCwgMjEyLCA4MiwgMTc4LCAyNDUsIDIzMywgMTc4LCAyMTcsIAotICAgIDQ3LCA4MiwgMTc4LCAyNTEsIDE0NiwgODIsIDE3OCwgNSwgMSwgMjUwLCA1LCAxNzgsIDUsIDEsIDI0OCwgMTIyLCAxNzgsIAotICAgIDUsIDEsIDIzOCwgNjksIDE3OCwgNSwgMSwgMjQ0LCAyMTIsIDE3OCwgNSwgMSwgMjQxLCAxNjcsIDE3OCwgNSwgMSwgMjAyLCAKLSAgICAxMTYsIDE3OCwgNSwgMSwgMjQxLCAxNDcsIDE3OCwgNSwgMSwgMjQwLCAyNTAsIDE3OCwgNSwgMSwgMTM1LCAxNzgsIDUsIDEsIAotICAgIDIwMiwgNzEsIDE3OCwgNSwgMSwgMjMxLCAxOSwgMTc4LCA1LCAxLCAyMjcsIDgzLCAxNzgsIDUsIDEsIDIwMywgMTc0LCAKLSAgICAxNzgsIDUsIDEsIDI0NywgOTIsIDE3OCwgNSwgMSwgMjI5LCAxODAsIDE3OCwgNSwgMSwgMjM2LCAxMzYsIDE3OCwgNSwgMSwgCi0gICAgMjMwLCAxODEsIDE3OCwgNSwgMSwgMjM4LCAxMTYsIDE3OCwgNSwgMSwgMjQ2LCAxNjAsIDE3OCwgNSwgMSwgMjI0LCAyNDAsIAotICAgIDE3OCwgNSwgMSwgMjAzLCAxMSwgMTc4LCA1LCAxLCAyMjEsIDE1MiwgMTc4LCA1LCAxLCAyMTMsIDkwLCAxNzgsIDUsIDEsIAotICAgIDIwNSwgMTg5LCAxNzgsIDUsIDEsIDI0NiwgMTk5LCAxNzgsIDUsIDEsIDIxOSwgMTYsIDE3OCwgNSwgMSwgMjMwLCAxNDQsIAotICAgIDE3OCwgNSwgMSwgMjE2LCAyMjAsIDE3OCwgNSwgMSwgMjE0LCAxNTUsIDE3OCwgNSwgMSwgMjA1LCAyMzQsIDE3OCwgNSwgMSwgCi0gICAgMjA4LCAxOTQsIDE3OCwgNSwgMSwgMjE2LCAxMjIsIDE3OCwgNSwgMSwgMjQ1LCAyNTQsIDE3OCwgNSwgMSwgMjAyLCAyNTIsIAotICAgIDE3OCwgNSwgMSwgMjE4LCAxMDIsIDE3OCwgNSwgMSwgMjI5LCAxOTEsIDE3OCwgNSwgMSwgMjIwLCA2MCwgMTc4LCA1LCAxLCAKLSAgICAyNDAsIDQ3LCAxNzgsIDUsIDMyLCAyNDEsIDE2OCwgMjAyLCAyNTIsIDE3OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3OCwgCi0gICAgMjM1LCAyMjAsIDIxNiwgMTUsIDE3OCwgMjQwLCAyNDYsIDU0LCAyMjcsIDIyMSwgMTc4LCAyNDAsIDI0NiwgNTQsIDE3OCwgCi0gICAgMjQyLCA2MCwgNTQsIDExMCwgMjUxLCAxMzksIDI0MCwgMjQxLCAxMTAsIDI1MSwgMTM5LCAyMTQsIDE1NiwgMTEwLCAyNTEsIAotICAgIDEzOSwgMjEzLCA2OSwgMTEwLCAyNTEsIDEzOSwgMjAyLCAxMDMsIDIxNywgMTA5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgCi0gICAgMjM4LCAyNTQsIDExMCwgMjUxLCAxMzksIDIwOCwgMjA5LCAxMTAsIDI1MSwgMTM5LCAyMTYsIDcwLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDIsIDEwMSwgMTEwLCAyNTEsIDEzOSwgMjE5LCA2MSwgMTEwLCAyNTEsIDEzOSwgMjAzLCAyMywgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjA5LCAxMTUsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY3LCAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2OCwgMjIzLCAyMDgsIAotICAgIDExMCwgMjUxLCAxMzksIDIzOCwgMTY1LCAxMTAsIDI1MSwgMTM5LCAyMTcsIDExMCwgMjE5LCA5MCwgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjA5LCAxNTgsIDIzOCwgMTgzLCAxMTAsIDI1MSwgMTM5LCAyMTksIDQwLCAxMTAsIDI1MSwgMTM5LCAyNTAsIDQzLCAyMzcsIAotICAgIDE1MiwgMTEwLCAyNTEsIDEzOSwgMjIzLCAyMTgsIDExMCwgMjUxLCAxMzksIDIyNSwgMTQ1LCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMjQsIDIyOSwgMTEwLCAyNTEsIDEzOSwgMjI0LCAyMzAsIDIyOSwgMTkyLCAxMTAsIDI1MSwgMTM5LCAyNDQsIDE1MSwgCi0gICAgMTEwLCAyNTEsIDEzOSwgMjE3LCAxMjEsIDExMCwgMjUxLCAxMzksIDIwOSwgMTU4LCAyMTcsIDEwNCwgMTEwLCAyNTEsIAotICAgIDEzOSwgMjAzLCAzMywgMjQ4LCAxMjMsIDIwMiwgMjMzLCAxMTAsIDI1MSwgMTM5LCAyMjAsIDQzLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMzEsIDY5LCAxMTAsIDI1MSwgMTM5LCAyNDQsIDUzLCAxMTAsIDI1MSwgMTM5LCAyMDIsIDI4LCAxMTAsIDEzMSwgMjI1LCAKLSAgICA3NSwgMjQ2LCA2MSwgMTEwLCAyMTgsIDYzLCAyMTMsIDE1LCAxMTAsIDIxOCwgNjMsIDIzNywgODIsIDIxNCwgMTU2LCAxMTAsIAotICAgIDIxOCwgNjMsIDIzNywgODIsIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgCi0gICAgMjM2LCAyMzIsIDExMCwgMjE4LCA2MywgMjA4LCAxMSwgMTEwLCAyMTgsIDYzLCAyMTQsIDE1NiwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMTksIDU0LCAxMTAsIDIxOCwgNjMsIDIxNywgMTE0LCAxMTAsIDIxOCwgNjMsIDIzNiwgMTI4LCAxMTAsIDIxOCwgNjMsIAotICAgIDIzNiwgMTI5LCAyMzcsIDg0LCAzNSwgMjA2LCA1OSwgMTEwLCAyMTgsIDYzLCAyMTcsIDUxLCAxMTAsIDIxOCwgNjMsIDI0NCwgCi0gICAgMTk4LCAyMTksIDI0NSwgMjI1LCAxMDUsIDExMCwgMjE4LCA2MywgMjI0LCAyMTksIDExMCwgMjE3LCAxNzksIDIyNSwgMTAyLCAKLSAgICAxMTAsIDIxOCwgNjMsIDIxNiwgMjAwLCAxMTAsIDIxNywgMTc5LCAyMTksIDYzLCAxMTAsIDIxOCwgNjMsIDIxMywgMCwgCi0gICAgMjQzLCA4NSwgMTEwLCAyMTgsIDYzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgMjEyLCA4LCAyMTksIDU2LCAKLSAgICAxMTAsIDEzMSwgMjA2LCAyMjEsIDI0MywgODUsIDExMCwgMTMxLCAyMjYsIDI1MSwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgCi0gICAgMjIxLCA0MSwgMjM3LCAxNTEsIDExMCwgMjE4LCA2MywgMjE3LCAxMTUsIDIxNywgMTA5LCAxMTAsIDEsIDI1MSwgMzAsIAotICAgIDExMCwgMSwgMjQ4LCAxMDgsIDExMCwgMSwgMjM4LCA2NywgMTEwLCAxLCAyNDQsIDE3OCwgMTEwLCAxLCAyMzcsIDY3LCAKLSAgICAxMTAsIDEsIDIwNiwgNTksIDExMCwgMSwgMjAyLCA5NSwgMTEwLCAxLCAyMzcsIDIxLCAxMTAsIDEsIDIwOSwgMTMyLCAxMTAsIAotICAgIDEsIDIwMiwgMjM2LCAxMTAsIDEsIDQ2LCAyMzAsIDIyLCAxMTAsIDEsIDIzMCwgMjIsIDExMCwgMSwgMjI4LCAyMCwgMTEwLCAKLSAgICAxLCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjI0LCAyNDcsIDExMCwgMSwgNDYsIDIyMSwgNDAsIDExMCwgMSwgMjIxLCA0MCwgCi0gICAgMTEwLCAxLCAyMTQsIDI0OSwgMTEwLCAxLCAyNTAsIDMsIDExMCwgMSwgNDYsIDIxOSwgMzQsIDExMCwgMSwgMjE5LCAzNCwgCi0gICAgMTEwLCAxLCA0NiwgMjA4LCAxNSwgMTEwLCAxLCAyMDgsIDE1LCAxMTAsIDEsIDIxNywgNzQsIDExMCwgMSwgMjE2LCA5MSwgCi0gICAgMTEwLCAxLCAyMTIsIDI1NSwgMTEwLCAxLCAyMDksIDIwMywgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjA2LCA1OSwgMTEwLCAKLSAgICAzMiwgMjAzLCA5LCAyMDYsIDYwLCAyMDIsIDIzNiwgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjAyLCAyMzYsIDExMCwgMjE3LCAKLSAgICAxNzksIDIzOCwgMTY3LCAxMTAsIDIxNywgMTc5LCAyMzgsIDE2NSwgMTAsIDQyLCA1NCwgMTAsIDIsIDIxNCwgMjQyLCAxMCwgCi0gICAgMjM5LCAxNzAsIDIyNSwgODgsIDEwLCAyLCAyMTUsIDI0LCAxMCwgMiwgMjE0LCAyNDUsIDEwLCA0MiwgMTMxLCA1NSwgMjUwLCAKLSAgICAxNDAsIDI0NSwgMTA2LCAyMTUsIDIwNCwgMjUwLCAxNDAsIDIzOSwgMTQwLCAyMTUsIDIwNCwgMTAsIDIxNiwgMTY1LCAyNTAsIAotICAgIDE0MCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjUwLCAxNDAsIDIxOCwgMjQ3LCAyMDksIDE1MywgMjA5LCAzNywgNTQsIAotICAgIDI1MSwgODYsIDU0LCAxMCwgMjQ1LCAyMzMsIDEwLCAyNDQsIDEzOCwgMjEzLCAxMzAsIDEwLCAyMTgsIDY1LCAyMDYsIDQwLCAKLSAgICA1NCwgMTAsIDIsIDIyNCwgOTUsIDEwLCAyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODYsIDEwLCAyLCAyNTEsIDMzLCAyNTAsIAotICAgIDY0LCAxMCwgMiwgMjE2LCAxOTgsIDI1MSwgMzIsIDEwLCAyLCAyMTYsIDIwNiwgMjUxLCAxMiwgMjUwLCAyMTAsIDEwLCAyLCAKLSAgICAyMDksIDI0MCwgMTAsIDUsIDEzOCwgMjA5LCAyNTEsIDEwLCA1LCAxMzgsIDMyLCAxMzcsIDMsIDIyOCwgMjksIDMsIDIwMywgCi0gICAgNDcsIDEwLCA1LCAxMzgsIDIwMiwgMTA3LCAxMCwgNSwgMjQwLCA3MSwgMTAsIDUsIDI0NCwgMTcyLCAxMCwgNSwgMjI5LCAKLSAgICAyMjksIDEwLCAyMTMsIDE0MywgMTAsIDEsIDgyLCAxMCwgMjA4LCA3MCwgNzAsIDIxNywgMTc5LCA4MiwgMTAsIDIxNywgNDcsIAotICAgIDgyLCAxMCwgMSwgMjI5LCAyMzMsIDIwMywgNDcsIDEwLCAxLCAyMzcsIDEyNywgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIAotICAgIDU1LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAKLSAgICAxMzcsIDMsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyNTEsIDMwLCAxMCwgMSwgCi0gICAgMjQ4LCAxMzgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OCwgMTAsIDEsIDIwOSwgMTY5LCAxMCwgMSwgMjA5LCA4OCwgMTAsIAotICAgIDEsIDIzMCwgMTU4LCAxMCwgMSwgMjM3LCAxNDgsIDEwLCAxLCAyMjksIDE0MCwgMTAsIDEsIDI0NCwgMTg0LCAxMCwgMSwgCi0gICAgMjA5LCAxMDAsIDEwLCAxLCAyMTYsIDEyMiwgMTAsIDEsIDIwMiwgMTA3LCAxMCwgMSwgMjE0LCAxNjEsIDEwLCAxLCAyMTMsIAotICAgIDM5LCAxMCwgMSwgMjE1LCAyOCwgMTAsIDEsIDI0NCwgMjA3LCAxMCwgMSwgMjA5LCAyNTEsIDEwLCAxLCAyMDIsIDExMCwgCi0gICAgMTAsIDEsIDI1MSwgNTksIDEwLCAxLCAyMzgsIDExNCwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAKLSAgICAyMjksIDE5MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCi0gICAgMjA5LCAyMDksIDEwLCAxLCAyNDAsIDQ3LCAxMCwgMSwgMjE3LCAxMTksIDEwLCAxLCAyMzAsIDIyLCAxMCwgMSwgMjI4LCAKLSAgICAyOCwgMTAsIDEsIDIyNSwgNSwgMTAsIDEsIDIyMSwgMTc4LCAxMCwgMSwgMjM3LCA0MywgMTAsIDEsIDIwNCwgNzAsIDEwLCAKLSAgICAxLCAxMzcsIDIyNSwgMTI5LCAxMCwgMSwgMjAzLCA0NywgMTAsIDI0MCwgNjksIDEwLCAyNDQsIDE3MCwgMTAsIDIyOSwgCi0gICAgMjI3LCAxMCwgMjQwLCA3MSwgMTAsIDI0NCwgMTcyLCAxMCwgMjI5LCAyMjksIDEwLCAyMTMsIDgwLCAxMCwgMjEwLCAyMjIsIAotICAgIDEwLCAyMjUsIDE2NCwgNTUsIDEwLCAyMzcsIDEyOCwgNTUsIDEwLCAyMzcsIDEyOCwgNTYsIDEwLCAyMTAsIDI0NiwgMjUxLCAKLSAgICAzMCwgMTAsIDIzMCwgMjM5LCAyNDQsIDE3MiwgMTAsIDEzMSwgMjIxLCAxNzksIDIzOCwgODUsIDEwLCAyMDEsIDI0OCwgMTAsIAotICAgIDIyLCAyLCA1LCAyMDYsIDE2NSwgNTUsIDEwLCAyMiwgMiwgMjMwLCAyMzksIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAKLSAgICA3MCwgNTYsIDEwLCAyMTYsIDczLCAyNDQsIDE3MiwgMTAsIDI0MCwgNzIsIDMsIDEyMCwgMjQzLCA4MywgMTAsIDIwNCwgNzIsIAotICAgIDIzNywgMTI4LCA1NiwgMjUwLCAxNDAsIDE3LCAyMDIsIDg0LCAyNTAsIDE0MCwgMTcsIDEwNSwgMjUwLCAxNDAsIDE3LCAKLSAgICAxMDgsIDI1MCwgMTQwLCAxNywgMTQ3LCAyNTAsIDE0MCwgMTcsIDE0OSwgMjUwLCAxNDAsIDE3LCAxNzAsIDI1MCwgMTQwLCAKLSAgICAxNywgMTk1LCAyNTAsIDE0MCwgMTcsIDIxMywgMTExLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjUwLCAxNDAsIDE3LCAyMjIsIAotICAgIDYzLCAxMCwgMjE4LCAyNDYsIDU0LCAxMCwgMjQ0LCA2OCwgMjEzLCAxMzAsIDEwLCAyMDksIDM1LCAyMTMsIDEzMCwgMTAsIAotICAgIDIzOSwgMjMzLCAyMTgsIDYxLCAyMTEsIDk0LCAxMCwgMSwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxLCAyNDMsIDg0LCAKLSAgICAyMTcsIDExOSwgMTAsIDEsIDIxMCwgMTk5LCAyNTEsIDMwLCAxMCwgMSwgMTM3LCAyMDQsIDg3LCAxMCwgMSwgMTM3LCAzLCAKLSAgICAyMDQsIDcyLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzcsIDMsIDIwNCwgNzIsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDEzOCwgCi0gICAgMjM3LCAxMjcsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyNTEsIDMwLCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjA0LCA3MCwgCi0gICAgMTAsIDEsIDEwNiwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjAzLCA0NywgMTAsIDEsIDIwNywgCi0gICAgMjMzLCAxMCwgMSwgMjA3LCAyMzEsIDEwLCAxLCAyNDgsIDE0OCwgMTAsIDEsIDIwOSwgMTcwLCAzLCAyMTUsIDI1MiwgMTAsIAotICAgIDEsIDIwOSwgMTcwLCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyMTksIDE2LCAxMCwgMSwgMjA5LCAxNjcsIAotICAgIDEwLCAxLCAyNDgsIDEzNiwgMTAsIDEsIDE1MSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgCi0gICAgODAsIDU1LCAxMCwgMSwgMjIwLCAyNTQsIDEwLCAxLCAyNDIsIDUsIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIwOSwgMTkxLCAxMCwgMSwgMjA5LCAxODksIDEwLCAxLCAyNDQsIDExNSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMTUsIAotICAgIDI1MiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDE4NSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNSwgCi0gICAgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE5MSwgMTAsIDEsIDI0NCwgMTE3LCAxMCwgMSwgMjQyLCAzMywgMTAsIDEsIDI0NCwgCi0gICAgMTg1LCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAKLSAgICAxLCAyMTUsIDE3NywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMTUsIAotICAgIDI1MiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA3MCwgNTYsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMjA2LCAxNjUsIDU2LCAxMCwgCi0gICAgMSwgMjE2LCAxMjMsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAxMjAsIDE4NywgCi0gICAgNTUsIDEwLCAxLCAyMzAsIDE1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDEsIDIxNCwgCi0gICAgMTYyLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDU2LCAxMCwgCi0gICAgMSwgMjE0LCAxNjIsIDMsIDEyNiwgMTg3LCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIxNSwgMjksIDMsIAotICAgIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjYsIAotICAgIDE4NywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMSwgCi0gICAgMjQwLCA0OCwgMywgNzAsIDIyNCwgNSwgNTYsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMDYsIDQ4LCAKLSAgICAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjE5LCAxNCwgMTAsIDEsIDIxNywgMTIwLCAzLCA3MCwgCi0gICAgNTUsIDEwLCAxLCAyMTcsIDEyMCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI5LCAxODksIDEwLCAxLCAyMTAsIDE2OSwgCi0gICAgMjMwLCAyMiwgMTAsIDEsIDIzMCwgMjMsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU1LCAxMCwgMSwgCi0gICAgMjIyLCAyMDUsIDEwLCAxLCAyMzAsIDIzLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MSwgMTAsIDEsIDIzOCwgCi0gICAgMjUyLCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMiwgMTI2LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyMCwgMTg3LCA1NiwgMTAsIAotICAgIDEsIDIzNywgMjE3LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOCwgMjksIDMsIDUsIDIwNiwgCi0gICAgMTY0LCAxMCwgMSwgMjI4LCAyOSwgMywgNzAsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgCi0gICAgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDcwLCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICAyMzgsIDg1LCAxMCwgMSwgMjE1LCAyMzAsIDEwLCAxLCAyMjEsIDE3OSwgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjEsIDE3OSwgCi0gICAgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMDksIDEwLCAxLCAyMDksIDE5MiwgMywgNzAsIDU1LCAKLSAgICAxMCwgMSwgMjM3LCA0NCwgMywgODksIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNiwgMTAsIDEsIDIzNywgNDQsIDIzOCwgCi0gICAgMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk5LCAyMzgsIDM2LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjksIDc2LCAyMjAsIDczLCAxMCwgMSwgMjIwLCA3MywgMTAsIDEsIDY4LCAxMCwgMSwgCi0gICAgMjAyLCAyMTMsIDEwLCAxLCAyMjksIDc2LCAyMDIsIDIxMywgMTAsIDEsIDIwNCwgNzEsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIwNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCAyMDMsIDQ3LCAxMCwgMSwgODksIDMsIDIwOSwgMjQ4LCAxMCwgMSwgODksIAotICAgIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjA0LCA3MSwgMywgNzAsIDU1LCAxMCwgMSwgNzQsIDEwLCAxLCA4OSwgMywgMTI2LCAKLSAgICAxODcsIDU2LCAxMCwgMSwgODksIDI0OCwgMjIzLCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTAsIDEsIDI1MSwgMTA5LCAxMCwgNSwgMTM4LCAzMiwgMjE1LCAyOSwgMywgMjI4LCAyOSwgCi0gICAgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDUsIDEzOCwgMzIsIDIxNywgMTIwLCAzLCAyMjgsIDI5LCAzLCAxMzcsIDIyNSwgMTI5LCAKLSAgICAxMCwgNSwgMTM4LCA4MywgODEsIDE4LCAxMCwgNSwgMTM4LCAyMjgsIDI5LCAyNTEsIDMwLCAxMCwgNSwgMTM4LCAyMzAsIAotICAgIDE1OCwgMTAsIDUsIDEzOCwgMTI2LCAyNDMsIDgzLCAxMCwgNSwgMTM4LCAyMTQsIDE2MSwgMTAsIDI0MSwgODQsIDc2LCAKLSAgICAyNTAsIDcsIDEwLCAyMTEsIDkwLCA3NiwgMjE1LCAxNDMsIDI0MSwgMTIzLCAyMzYsIDIyNywgMTAsIDUsIDEzOCwgMjE1LCAKLSAgICAxODksIDIwMiwgODQsIDEwLCA1LCAxMzgsIDIwNiwgMjE5LCAyMTYsIDE0MiwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjQzLCAKLSAgICA4NCwgMjM3LCA2NSwgNzYsIDIyOSwgMTQwLCAxMCwgNSwgMTM4LCA4MywgNjQsIDE4LCAxMCwgNSwgMTI0LCAyMTQsIDE2MSwgCi0gICAgMTAsIDUsIDEzOCwgMjI1LCAxNjUsIDEwLCA1LCAyMDQsIDcwLCAxMCwgNSwgMjAzLCA0NywgMTAsIDUsIDEzOCwgMjAzLCAKLSAgICA0NywgMTAsIDUsIDEzOCwgMjIxLCAxNzgsIDEwLCAyMTgsIDk3LCA3NiwgMjE1LCAxNCwgMTAsIDI0MSwgOTQsIDI0NiwgCi0gICAgMjE4LCAxMjQsIDIxMSwgNjEsIDEwLCAyNDEsIDk0LCAyNDYsIDIxOCwgMTM4LCAyMTEsIDYxLCAxMCwgMjE1LCAxODksIAotICAgIDEzOCwgMjExLCA2MiwgMywgMjQwLCA4LCAyNDYsIDIxNywgMTAsIDUsIDEyNCwgMjI1LCA1LCAxMCwgMSwgMjQ0LCAxODUsIAotICAgIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEwNSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMTA4LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxNDcsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0OSwgMjQwLCAKLSAgICAyMDIsIDI1MCwgMTQwLCAxNywgMTcwLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTUsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDIxMywgMTExLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTksIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIyMiwgCi0gICAgNjMsIDEwLCAxLCAyMTMsIDQwLCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDIwOCwgMywgNzAsIDU2LCAxMCwgMSwgMjM4LCAKLSAgICAxMTUsIDMsIDcwLCA1NiwgMTAsIDIsIDIxMiwgMTIzLCAyNTAsIDIzNSwgMTAsIDIsIDIxMiwgMTIzLCAyMTgsIDI3LCAyMjQsIAotICAgIDI0MCwgMTAsIDEsIDIzNywgNDQsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjEwLCA4OSwgMjQxLCA4NCwgNzYsIDIxOSwgCi0gICAgODgsIDIxMCwgODksIDIxMCwgMTk1LCAyMzksIDEwMiwgMjExLCA2MSwgMjEwLCA4OSwgMjEwLCAyNDgsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MiwgMjEwLCAKLSAgICA4OSwgMjM2LCAxMDYsIDI0NSwgMjQyLCAyMTAsIDg5LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIxMCwgODksIAotICAgIDI0NSwgMjQzLCAyMTIsIDY4LCAyMTYsIDE2LCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgCi0gICAgMjIyLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDI0NSwgMTg2LCAKLSAgICAyMTAsIDg5LCAyMzcsIDg5LCAyMjAsIDkxLCAyMTAsIDg5LCAyMzcsIDg5LCAyMjQsIDIxNywgMjEwLCA4OSwgMjM3LCA4OSwgCi0gICAgMjUwLCA2MSwgMjEwLCA4OSwgMjUxLCAxNDYsIDgyLCAyMTAsIDg5LCAxLCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyMTAsIAotICAgIDE5OSwgMjUxLCAzNSwgMjEwLCA4OSwgMSwgMjQ4LCAxMDUsIDIxMCwgODksIDEsIDIzOCwgMjQxLCAyMTAsIDg5LCAxLCAKLSAgICAyMzgsIDI0MiwgMjM4LCAyMTksIDIxMCwgODksIDEsIDI0NCwgMTgxLCAyMTAsIDg5LCAxLCAyNDMsIDg0LCAyNDQsIDE4MiwgCi0gICAgMjE1LCAyNDYsIDIxMCwgODksIDEsIDIzNywgNjcsIDIxMCwgODksIDEsIDIwNCwgNzAsIDIxMCwgODksIDEsIDIwMiwgMTA3LCAKLSAgICAyMTAsIDg5LCAxLCAyMzcsIDE5LCAyMTAsIDg5LCAxLCAyMDksIDEyOCwgMjEwLCA4OSwgMSwgMjA5LCAxMjksIDIzOCwgCi0gICAgMjE5LCAyMTAsIDg5LCAxLCAyMDIsIDIwMCwgMjEwLCA4OSwgMSwgMjAyLCAyMDEsIDIzNywgNjcsIDIxMCwgODksIDEsIAotICAgIDIyOSwgMjUwLCAyMTAsIDg5LCAxLCAyMjgsIDI3LCAyMTAsIDg5LCAxLCAyMjQsIDExMiwgMjEwLCA4OSwgMSwgMjIxLCA0MCwgCi0gICAgMjEwLCA4OSwgMSwgMjEzLCAxMzYsIDIxMCwgODksIDEsIDQ2LCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNzQsIDIxMCwgODksIAotICAgIDEsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNiwgNzMsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNSwgMjYsIDIxMCwgODksIAotICAgIDEsIDIxNywgMTEzLCAyMTAsIDg5LCAxLCAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjEyLCAyNTUsIDIxMCwgODksIDEsIDIwOSwgCi0gICAgMjAxLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjQ4LCA5MiwgMjEwLCA4OSwgMSwgMjE4LCAyMzEsIDIzOCwgMTEyLCAyMTAsIAotICAgIDg5LCAxLCAyMTgsIDIzMSwgMjQzLCAyNTIsIDIxMCwgODksIDIxNywgMTkyLCA1NSwgMjEwLCA4OSwgMjE3LCAxOTIsIDU2LCAKLSAgICAyMTAsIDg5LCAyMTcsIDE5MiwgMjQyLCA4MiwgMjEwLCA4OSwgMjAyLCAxMSwgNTUsIDIxMCwgODksIDIwMiwgMTEsIDU2LCAKLSAgICAyMTAsIDg5LCAyMDIsIDExLCAyNDIsIDgyLCAyMTAsIDg5LCAyMTYsIDE2MSwgNTUsIDIxMCwgODksIDIxNiwgMTYxLCA1NiwgCi0gICAgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjM2LCAxMDUsIDIxMCwgODksIDI0MiwgODMsIDIwMiwgMTgsIDI1MCwgMjExLCAKLSAgICAyMTAsIDg5LCAyMzcsIDcwLCA1NSwgMjEwLCA4OSwgMjM3LCA3MCwgNTYsIDIxMCwgODksIDIzNywgNjksIDI0MiwgODIsIAotICAgIDIxMCwgODksIDI0MSwgMTEsIDU1LCAyMTAsIDg5LCAyNDEsIDExLCA1NiwgMjEwLCA4OSwgMjE1LCAxMDksIDIxMCwgODksIAotICAgIDI0MCwgNDEsIDI0MywgODUsIDIxMCwgODksIDIxNywgMjUsIDIxMCwgODksIDIxNSwgMTM3LCAyMTAsIDg5LCAxMjAsIDgwLCAKLSAgICAxODcsIDU1LCAyMTAsIDg5LCAxMjAsIDgwLCAxODcsIDU2LCAyMTAsIDg5LCAxMjYsIDE4NywgNTUsIDIxMCwgODksIDEyNiwgCi0gICAgMTg3LCA1NiwgMjEwLCA4OSwgMjIwLCA4OSwgMjI3LCAxMTUsIDU1LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTYsIAotICAgIDIxMCwgODksIDIyMywgMTk0LCAyMTAsIDg5LCAyNDgsIDIyMiwgMjEwLCA4OSwgMSwgMjEyLCA0LCAyMDIsIDc4LCAyMTAsIAotICAgIDg5LCAxLCAyMTIsIDQsIDIyOSwgMTMzLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDI0MCwgNjAsIDEwLCAxLCAyNDgsIDEzOSwgMywgCi0gICAgMTI2LCAxODcsIDIzNiwgNTUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCAyNDgsIDEyNiwgMjUsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjAsIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgMjMwLCAyMzksIDUsIDIwNiwgCi0gICAgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDE1MSwgMywgMTIwLCAxODcsIDU1LCAKLSAgICAxMCwgMSwgMTUxLCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCAxMjAsIDE4NywgCi0gICAgMjA1LCAyNDQsIDI0OCwgMTI2LCAyNSwgNSwgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjMwLCAyMzksIDUsIAotICAgIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA5NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyMzksIDE0NywgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCAyMTgsIAotICAgIDU5LCAxODMsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDI0MCwgNDgsIAotICAgIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgCi0gICAgMjI5LCAxOTAsIDMsIDcwLCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE5MCwgCi0gICAgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCA4MywgMywgNzAsIDU1LCAxMCwgMSwgODMsIDMsIDcwLCAKLSAgICA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCAxMjAsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA5LCAyNTEsIAotICAgIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCAxNDIsIDEwLCAxLCAyMTYsIDEyMywgCi0gICAgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMTQsIAotICAgIDE2MiwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NiwgCi0gICAgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE0LCAxNjIsIDMsIAotICAgIDUsIDEwLCAxLCAyMDksIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAxMCwgMSwgMjA5LCAKLSAgICAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgNTUsIDEwLCAxLCAxMzcsIAotICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAxMzcsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIAotICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIAotICAgIDU1LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgODksIAotICAgIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMTUxLCAzLCAyNDAsIDIwMiwgCi0gICAgMjUwLCAxNDAsIDE3LCAyMzksIDE0NywgNTYsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgCi0gICAgMjM5LCAxNDcsIDU1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIzMCwgMjMsIDMsIAotICAgIDEyMCwgMTg3LCA1NSwgMjA5LCAxMDUsIDEsIDIzNywgMTU3LCAyMDksIDEwNSwgMSwgMjEzLCA0OSwgMjA5LCAxMDUsIDEsIAotICAgIDIyMSwgMTc3LCAyMDksIDEwNSwgMSwgMjE2LCAyMTYsIDIwOSwgMTA1LCAxLCAyNDksIDMwLCAyMDksIDEwNSwgMSwgMjI3LCAKLSAgICAxNTgsIDIwOSwgMTA1LCAxLCAyMzAsIDM3LCAyMDksIDEwNSwgMSwgMjUxLCAxOSwgMjA5LCAxMDUsIDEsIDIwNiwgODQsIAotICAgIDIwOSwgMTA1LCAxLCAyMjUsIDQsIDIwOSwgMTA1LCAxLCAyNDAsIDEwNiwgMjA5LCAxMDUsIDEsIDI0MywgMjU1LCAyMDksIAotICAgIDEwNSwgMSwgMjA5LCAxMDcsIDIwOSwgMTA1LCAxLCAyMjgsIDEwOSwgMjA5LCAxMDUsIDEsIDIzOSwgNCwgMjA5LCAxMDUsIAotICAgIDEsIDIzOCwgNDIsIDIwOSwgMTA1LCAxLCAyMTQsIDE2MCwgMjA5LCAxMDUsIDEsIDI0NCwgMTM2LCAyMDksIDEwNSwgMSwgCi0gICAgMjAyLCA5OCwgMjA5LCAxMDUsIDEsIDIwOSwgMjAyLCAyMDksIDEwNSwgMSwgMjAzLCAxMTAsIDIwOSwgMTA1LCAxLCAyMTksIAotICAgIDQ3LCAyMDksIDEwNSwgMSwgMjMwLCAxNjYsIDIwOSwgMTA1LCAxLCAyNDYsIDE3MywgMjA5LCAxMDUsIDEsIDIwNywgMjQwLCAKLSAgICAyMDksIDEwNSwgMSwgMjM3LCAxMSwgMjA5LCAxMDUsIDEsIDIyOSwgMTQzLCAyMDksIDEwNSwgMSwgMjA5LCAxMDYsIDIwOSwgCi0gICAgMTA1LCAxLCAyMDIsIDExNCwgMjA5LCAxMDUsIDEsIDIxMywgMzgsIDIwOSwgMTA1LCAxLCAyMTUsIDMyLCAyMDksIDEwNSwgCi0gICAgMSwgMjQ0LCAyMTAsIDIwOSwgMTA1LCAxLCAxMzUsIDIwOSwgMTA1LCAxLCAyMDIsIDE3LCAyMDksIDEwNSwgMSwgMjUxLCAKLSAgICA1NiwgMjA5LCAxMDUsIDEsIDIzOCwgMTEzLCAyMDksIDEwNSwgMSwgMjE3LCAxMjMsIDIwOSwgMTA1LCAxLCAyMDQsIDEwOSwgCi0gICAgMjA5LCAxMDUsIDI1MSwgMTQ4LCAyMDksIDEwNSwgMjUxLCAyNDYsIDIwOSwgMTA1LCAyMzUsIDE2NSwgMjA5LCAxMDUsIAotICAgIDI0MSwgMTYwLCAyMDksIDEwNSwgMjA3LCAzMiwgMjA5LCAxMDUsIDIyMCwgMTcsIDIwOSwgMTA1LCAyNDEsIDE3MCwgMjA5LCAKLSAgICAxMDUsIDI0MCwgMTkzLCAyMDksIDEwNSwgMjIwLCA4OCwgMjA5LCAxMDUsIDIyMCwgOTYsIDIwOSwgMTA1LCAyMTAsIDIyMiwgCi0gICAgMjA5LCAxMDUsIDEsIDIyMywgMTA2LCAyMjEsIDI1NSwgMTcsIDIwMiwgODQsIDIyMSwgMjU1LCAxNywgMTA1LCAyMjEsIAotICAgIDI1NSwgMTcsIDEwOCwgMjIxLCAyNTUsIDE3LCAxNDcsIDIyMSwgMjU1LCAxNywgMTQ5LCAyMjEsIDI1NSwgMTcsIDE3MCwgCi0gICAgMjIxLCAyNTUsIDE3LCAxOTUsIDIyMSwgMjU1LCAxNywgMjEzLCAxMTEsIDIyMSwgMjU1LCAxNywgMTk5LCAyMjEsIDI1NSwgCi0gICAgMTcsIDIyMiwgNjMsIDIyMSwgMjU1LCAxLCA2MywgMjIxLCAyNTUsIDEsIDI0MSwgMTYxLCAyMjEsIDI1NSwgMSwgNzUsIAotICAgIDIyMSwgMjU1LCAxLCA3NCwgMjIxLCAyNTUsIDEsIDY4LCAyMjEsIDI1NSwgMSwgMjIwLCAxOCwgMjIxLCAyNTUsIDEsIDc4LCAKLSAgICAyMjEsIDI1NSwgMSwgMjQ0LCAxOTksIDIyMSwgMjU1LCAxLCAyMjMsIDE2MywgMjIxLCAyNTUsIDEsIDI0OSwgMzIsIDIyMSwgCi0gICAgMjU1LCAxLCAxODUsIDIyMSwgMjU1LCAxLCAyMTAsIDIyLCAyMjEsIDI1NSwgMSwgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAKLSAgICAyNDYsIDE5OSwgMjIxLCAyNTUsIDEsIDI0NCwgMjEyLCAyMjEsIDI1NSwgMSwgMjE2LCAyMjAsIDIyMSwgMjU1LCAxLCAyMTUsIAotICAgIDE4NSwgMjIxLCAyNTUsIDEsIDIxNSwgMzYsIDIyMSwgMjU1LCAxLCAyMzgsIDIwNywgMjIxLCAyNTUsIDEsIDI0MCwgMTA4LCAKLSAgICAyMjEsIDI1NSwgMSwgMTczLCAyMjEsIDI1NSwgMSwgMjI4LCAxMTMsIDIyMSwgMjU1LCAxLCAyMjMsIDExMSwgMjAzLCAyNTIsIAotICAgIDIyMSwgMjU1LCAxLCAxOTIsIDIyMSwgMjU1LCAxLCAyMjEsIDExLCAyMjEsIDI1NSwgMSwgMjAxLCAyMDEsIDIyMSwgMjU1LCAKLSAgICAxLCAxNTIsIDIyMSwgMjU1LCAxLCAyMDQsIDExMSwgMjIxLCAyNTUsIDEsIDE5OCwgMjIxLCAyNTUsIDEsIDIyMSwgMTIsIAotICAgIDIwMywgMjUyLCAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyNDYsIDE5OSwgCi0gICAgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDIxNiwgMjIwLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMzgsIDIwOCwgMTYxLCAKLSAgICAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAyMTUsIDI0NSwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyNDQsIDE5LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEzOCwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMjE1LCAyNDUsIAotICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIyMywgNzEsIDgyLCAyMjEsIDI1NSwgMzksIDUyLCA3MCwgNTUsIDIyMSwgMjU1LCAKLSAgICAxMzgsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxMjQsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxNiwgMjIwLCAxOSwgCi0gICAgMjQ0LCAzMywgMjIxLCAyNTUsIDE2LCAyMzgsIDIwNiwgMjIxLCAyNTUsIDI0NSwgMjMzLCAyMjEsIDI1NSwgMjQwLCAyMTIsIAotICAgIDgyLCAyMjEsIDI1NSwgMjI4LCA4NCwgMjE0LCAyNTIsIDEsIDI1MSwgMzcsIDIxNCwgMjUyLCAxLCAyNDgsIDUxLCAyMTQsIAotICAgIDI1MiwgMSwgMjM4LCAyNDAsIDIxNCwgMjUyLCAxLCAyNDQsIDE4MywgMjE0LCAyNTIsIDEsIDIzMCwgMTkyLCAyMTQsIDI1MiwgCi0gICAgMSwgMjQ5LCAzMCwgMjE0LCAyNTIsIDEsIDIwMiwgODcsIDIxNCwgMjUyLCAxLCAyMzAsIDIwMSwgMjE0LCAyNTIsIDEsIAotICAgIDIwOCwgMjAwLCAyMTQsIDI1MiwgMSwgMjAyLCAxODIsIDIxNCwgMjUyLCAxLCAyMzAsIDM4LCAyMTQsIDI1MiwgMSwgMjI4LCAKLSAgICAxMDYsIDIxNCwgMjUyLCAxLCAyMjQsIDExMiwgMjE0LCAyNTIsIDEsIDIyMSwgNDAsIDIxNCwgMjUyLCAxLCAyMTIsIDEyMSwgCi0gICAgMjE0LCAyNTIsIDEsIDIzMSwgNDksIDIxNCwgMjUyLCAxLCAyNDAsIDI2LCAyMTQsIDI1MiwgMSwgMjA4LCAxOCwgMjE0LCAKLSAgICAyNTIsIDEsIDIxNywgNDQsIDIxNCwgMjUyLCAxLCAyMTUsIDI0NiwgMjE0LCAyNTIsIDEsIDIxMywgNjYsIDIxNCwgMjUyLCAKLSAgICAxLCAyMTAsIDE3LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ5LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ4LCAyMTQsIDI1MiwgCi0gICAgMTMxLCAyMjAsIDg0LCAyMTQsIDI1MiwgMTMxLCAyNDQsIDE5NywgMjE0LCAyNTIsIDY1LCAxLCAyNDEsIDQyLCAyMDIsIAotICAgIDE4MiwgMjE0LCAyNTIsIDEzMSwgMjQxLCA0MiwgMjAyLCAxODIsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NCwgMjE0LCAKLSAgICAyNTIsIDIyLCAyLCA3NCwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIAotICAgIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgNjMsIDIxNCwgCi0gICAgMjUyLCAyMiwgMiwgMTYzLCA2MywgMjE0LCAyNTIsIDIyLCAyLCA2MywgMjE0LCAyNTIsIDY1LCAxLCAyMTIsIDIyOCwgNjMsIAotICAgIDIxNCwgMjUyLCAyMiwgMiwgMjEyLCAyMjgsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNjgsIDIxNCwgMjUyLCAyMiwgMiwgCi0gICAgNjgsIDIxNCwgMjUyLCA2NSwgMSwgNzUsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCA3NSwgCi0gICAgMjE0LCAyNTIsIDIyLCAyLCA3OCwgMjE0LCAyNTIsIDIyLCAyLCAyMTAsIDIyMiwgMjE0LCAyNTIsIDEzMSwgMjIyLCAyMjMsIAotICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjIyLCAyMjMsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjUxLCA4MywgMjE0LCAyNTIsIDIxNywgCi0gICAgMTc5LCAyNTAsIDIyMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNDgsIDIwMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTAsIDQ0LCAKLSAgICAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgMjQzLCAyMTQsIDI1MiwgMjUxLCAxNDYsIDgyLCAyMTQsIDI1MiwgMjE3LCAxNzksIAotICAgIDIyNCwgMjUwLCAyMTcsIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMjUsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjE3LCAKLSAgICA4MCwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDIsIDExMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDcsIDE3MCwgMjE0LCAyNTIsIAotICAgIDIxNywgMTc5LCAyNTAsIDExMSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTIsIDgsIDIyNSwgNzcsIDIxNCwgMjUyLCAyMTcsIAotICAgIDE3OSwgMjUwLCAyMDYsIDIyNSwgMTE4LCAxLCAyMzcsIDEzNCwgMjI1LCAxMTgsIDEsIDI1MSwgMjMyLCAyMjUsIDExOCwgMSwgCi0gICAgMjUxLCA4MSwgMjI1LCAxMTgsIDEsIDI1MSwgMTIyLCAyMjUsIDExOCwgMSwgMjUxLCA3MywgMjI1LCAxMTgsIDEsIDIwNiwgCi0gICAgMTg0LCAyMjUsIDExOCwgMSwgMjUwLCAxLCAyMjUsIDExOCwgMSwgMjMwLCAyMDEsIDIyNSwgMTE4LCAxLCAyNTAsIDQxLCAKLSAgICAyMjUsIDExOCwgMSwgMjUxLCA0MiwgMjI1LCAxMTgsIDEsIDI1MSwgNDcsIDIyNSwgMTE4LCAxLCAyNTEsIDM5LCAyMjUsIAotICAgIDExOCwgMSwgMjUwLCAyNDcsIDIyNSwgMTE4LCAxLCAyNTAsIDIzMSwgMjI1LCAxMTgsIDEsIDI1MCwgODEsIDIyNSwgMTE4LCAKLSAgICAxLCAyMzEsIDQ5LCAyMjUsIDExOCwgMSwgMjUwLCAxNzUsIDIyNSwgMTE4LCAxLCAyNTAsIDUxLCAyMjUsIDExOCwgMSwgCi0gICAgMjUwLCAxNDgsIDIyNSwgMTE4LCAxLCAyNTAsIDE0NCwgMjI1LCAxMTgsIDEsIDI1MCwgNzUsIDIyNSwgMTE4LCAxLCAyNTAsIAotICAgIDQ5LCAyMjUsIDExOCwgMSwgMjQyLCAxOCwgMjI1LCAxMTgsIDEsIDIzMCwgMzAsIDIyNSwgMTE4LCAxLCAyNTEsIDU5LCAKLSAgICAyMjUsIDExOCwgMjUxLCA4NywgODIsIDIyNSwgMTE4LCAyMDUsIDE4NywgODIsIDIyNSwgMTE4LCAyMzgsIDE3OSwgODIsIAotICAgIDIyNSwgMTE4LCAyMTcsIDE3OCwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgCi0gICAgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTg0LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyMDksIDI1MiwgMywgMTIwLCAKLSAgICAxODcsIDU1LCAxMCwgMSwgMjQwLCA0OCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE3LCAKLSAgICAxMjAsIDMsIDcwLCA1NiwgMTAsIDEsIDIyOCwgMjksIDMsIDUyLCAxNDIsIDEwLCAxLCA4MywgMywgMTI2LCAxODcsIDU1LCAKLSAgICAxMCwgMSwgODksIDMsIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDg5LCAzLCAxMjAsIAotICAgIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjI3LCAxNCwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDMsIDcwLCAyMDQsIDQsIDEwLCAxLCAyMTUsIDIxNSwgMjAzLCA0NywgMTAsIDEsIDEyNCwgMjUxLCAzMCwgMTAsIDEsIDI0NCwgCi0gICAgMTg1LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTUsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MiwgCi0gICAgMywgMjMwLCAyMzksIDk1LCAxMCwgMSwgMjExLCA1MywgMjA0LCA3MCwgMTAsIDEsIDIwMiwgMTA4LCAzLCAyMzAsIDIzOSwgCi0gICAgMjA2LCAxNjUsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU2LCAKLSAgICAxMCwgMjA3LCAxNzQsIDI0NCwgMTczLCA1NiwgMTAsIDI0NSwgOTMsIDI0MCwgNzEsIDEwLCAyNDUsIDkzLCAyNDQsIDE3MiwgCi0gICAgMTAsIDI0NSwgOTMsIDIyOSwgMjI5LCAxMCwgMjQ1LCA5MywgMjQwLCA2OSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcwLCAxMCwgCi0gICAgMjQ1LCA5MywgMjI5LCAyMjcsIDEwLCAxNDMsIDExOCwgNzAsIDU1LCAxMCwgMTQzLCAxMjAsIDE4NywgNTUsIDEwLCAxNDMsIAotICAgIDIyNywgMTUsIDU1LCAxMCwgMTQzLCAxMTgsIDcwLCA1NiwgMTAsIDE0MywgMTIwLCAxODcsIDU2LCAxMCwgMTQzLCAyMjcsIAotICAgIDE1LCA1NiwgMTAsIDE3MSwgMjQwLCA2OSwgMTAsIDE3MSwgMjQ0LCAxNzAsIDEwLCAxNzEsIDIyOSwgMjI3LCAxMCwgNSwgCi0gICAgMTM4LCAyMDQsIDcwLCAxMCwgMjQwLCA3MiwgMywgMjE1LCAyNTIsIDEwLCAyNDAsIDcyLCAzLCA3MCwgNTUsIDEwLCAyMjksIAotICAgIDIzMCwgMywgNzAsIDU2LCAxMCwgNDksIDI1MCwgOTUsIDU1LCAxMCwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNDksIDI1MCwgCi0gICAgOTUsIDU2LCAxMCwgNTAsIDI1MCwgOTUsIDU2LCAxMCwgNTIsIDUwLCAyNTAsIDk1LCA1NSwgMTAsIDUyLCA1MCwgMjUwLCAKLSAgICA5NSwgODcsIDMsIDI0MywgODUsIDEwLCA1MCwgMjUwLCA5NSwgODcsIDMsIDI0MywgODUsIDEwLCAyNDQsIDE3MywgMywgCi0gICAgMjQzLCA4NSwgMTAsIDEzMSwgMjEyLCAxNTQsIDIyMSwgMTc5LCAyMzgsIDg1LCA5MiwgMiwgMjMwLCAyMzksIDI0NywgNTIsIAotICAgIDkyLCAyLCAyNDcsIDUyLCA5MiwgMiwgMjUwLCAxODAsIDkyLCAyLCAyMDUsIDE5OSwgOTIsIDEsIDIxMiwgMjI4LCA2MywgCi0gICAgOTIsIDEsIDYzLCA5MiwgMSwgMjUyLCAyNSwgOTIsIDEsIDc1LCA5MiwgMSwgMjMxLCA4MywgOTIsIDEsIDY4LCA5MiwgMSwgCi0gICAgMjA2LCAxNzgsIDkyLCAxLCAxMjUsIDE0NiwgOTIsIDEsIDEyNSwgMTU5LCA5MiwgMSwgMjQ3LCA1NSwgNzQsIDkyLCAxLCAKLSAgICAyMTIsIDIyOCwgNzQsIDkyLCAxLCA3NCwgOTIsIDEsIDI1MSwgNjQsIDkyLCAxLCAyNDcsIDU1LCA3OCwgOTIsIDEsIDIxMiwgCi0gICAgMjI4LCA3OCwgOTIsIDEsIDc4LCA5MiwgMSwgMjUwLCAzNCwgOTIsIDEsIDE3MywgOTIsIDEsIDIyOSwgMTQ0LCA5MiwgMSwgCi0gICAgMjM5LCA4LCA5MiwgMSwgMjM4LCAxMTksIDkyLCAxLCAyMjIsIDIwMywgOTIsIDEsIDI0NywgOTIsIDkyLCAxLCAyNDYsIAotICAgIDE5OSwgOTIsIDEsIDIzMCwgMTgxLCA5MiwgMSwgMjMwLCAxNDksIDkyLCAxLCAyMjEsIDExLCA5MiwgMSwgMjA3LCAyNDEsIAotICAgIDkyLCAxLCAyMDcsIDIyOSwgOTIsIDEsIDI0NCwgMTIwLCA5MiwgMSwgMjQ0LCAxMDQsIDkyLCAxLCAyMjEsIDIyNywgOTIsIAotICAgIDEsIDIxMCwgMjIsIDkyLCAxLCAyMDksIDEwOCwgOTIsIDEsIDI0NCwgMjEyLCA5MiwgMSwgMjQ0LCAxLCA5MiwgMSwgMjAxLCAKLSAgICAyMDEsIDkyLCAxLCAyMjEsIDIwOSwgOTIsIDEsIDE4NSwgOTIsIDEsIDIxOCwgMjA4LCA5MiwgMSwgMjQ5LCAzMiwgOTIsIDEsIAotICAgIDI0OCwgOTgsIDkyLCAxLCAxOTIsIDkyLCAxLCAxOTgsIDkyLCAxLCAyMTYsIDIyMCwgOTIsIDEsIDIxNSwgMTg1LCA5MiwgMSwgCi0gICAgMjI4LCAxMTMsIDkyLCAxLCAyMjcsIDc3LCA5MiwgMSwgMjI3LCA2OCwgOTIsIDEsIDIwNiwgODYsIDkyLCAxLCAyMTMsIDkwLCAKLSAgICA5MiwgMSwgMjExLCAxNjQsIDkyLCAxLCAyMTUsIDM2LCA5MiwgMSwgMTUyLCA5MiwgMjIsIDIsIDIyMCwgNzMsIDkyLCAyMiwgCi0gICAgMiwgMjIwLCAxNiwgOTIsIDIsIDIyMSwgNTEsIDkyLCAyLCAyNTAsIDE3LCA5MiwgMjIsIDIsIDI1MiwgMjUsIDkyLCAyMiwgCi0gICAgMiwgNzUsIDkyLCAyMiwgMiwgMjMxLCA4MywgOTIsIDIyLCAyLCA2OCwgOTIsIDIyLCAyLCAyMDYsIDE3OCwgOTIsIDIyLCAyLCAKLSAgICAxMjUsIDE0NiwgOTIsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc0LCA5MiwgMjIsIDIsIAotICAgIDIxMiwgMjI4LCA3NCwgOTIsIDIyLCAyLCA3NCwgOTIsIDIyLCAyLCAyNTEsIDY0LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc4LCAKLSAgICA5MiwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgOTIsIDIyLCAyLCA3OCwgOTIsIDIyLCAyLCAyNTAsIDM0LCA5MiwgMiwgMjA1LCAKLSAgICAyMDQsIDkyLCAyMiwgMiwgMjE3LCAyMjksIDc0LCA5MiwgMjIsIDIsIDI1MCwgMTMsIDkyLCAyMjAsIDM5LCA5MiwgMjExLCAKLSAgICA0MiwgMiwgMjA3LCAyNiwgOTIsIDIxMSwgNDIsIDIsIDI1MCwgMTgyLCA5MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA5MiwgCi0gICAgMjUxLCAxMjYsIDI1MSwgMTM4LCA5MiwgMjIsIDIsIDI0NywgNTUsIDE2MywgNzQsIDkyLCAyMiwgMiwgMjA3LCAyNCwgOTIsIAotICAgIDIyLCAyLCAyMDYsIDE3NywgOTIsIDEsIDIxNywgMTI2LCA5MiwgMSwgMjI5LCAxMjUsIDkyLCAxLCAyMzgsIDk0LCA5MiwgMSwgCi0gICAgMjAyLCAxMTYsIDkyLCAxLCAyNDQsIDEwOSwgOTIsIDEsIDIxNiwgNjEsIDkyLCAxLCAyNDAsIDEwOCwgOTIsIDEsIDIwMiwgCi0gICAgMTY4LCA5MiwgMSwgMTI1LCAyMTUsIDE4NiwgOTIsIDEsIDEyNSwgMjI3LCA3OCwgOTIsIDIyLCAyLCAxMjUsIDE1OSwgOTIsIAotICAgIDIyLCAyLCAxMjUsIDIyNywgNzgsIDkyLCAyNDQsIDE2NiwgOTIsIDUyLCAyNDQsIDE2NiwgOTIsIDE3LCAyMDIsIDg0LCA5MiwgCi0gICAgMTcsIDEwNSwgOTIsIDE3LCAxMDgsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNzAsIDkyLCAxNywgMTk1LCAKLSAgICA5MiwgMTcsIDIxMywgMTExLCA5MiwgMTcsIDE5OSwgOTIsIDE3LCAyMjIsIDYzLCA5MiwgMjUxLCAxNDYsIDU0LCA5MiwgMiwgCi0gICAgMTM4LCAyMTEsIDIyNywgMjQzLCA4NSwgOTIsIDEsIDI0NywgNTUsIDYzLCA5MiwgMSwgMjIwLCA3MywgOTIsIDEsIDIyMCwgCi0gICAgMTYsIDkyLCAxLCAyNTAsIDEzLCA5MiwgMSwgMjA3LCAyNCwgOTIsIDEsIDIwNiwgMTc3LCA5MiwgMSwgMjI1LCA4MiwgMjQ0LCAKLSAgICAxMjAsIDkyLCAxLCAyMDIsIDgwLCA5MiwgMSwgNzksIDE5OCwgOTIsIDEsIDIzOCwgMTU1LCA5MiwgMSwgMjMwLCAxMjksIAotICAgIDkyLCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA5MiwgMSwgMjQ0LCAxMTAsIDkyLCAxLCAyNDgsIDE5OCwgMTc5LCAyNTAsIDIwOSwgCi0gICAgMTc5LCAyLCAyNDcsIDUyLCAxNzksIDIsIDI1MCwgMTgwLCAxNzksIDIsIDIwNSwgMTk5LCAxNzksIDEsIDYzLCAxNzksIDEsIAotICAgIDI1MiwgMjUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjMxLCA4MywgMTc5LCAxLCA2OCwgMTc5LCAxLCAyMDYsIDE3OCwgMTc5LCAKLSAgICAxLCAxMjUsIDE0NiwgMTc5LCAxLCAxMjUsIDE1OSwgMTc5LCAxLCA3NCwgMTc5LCAxLCAyNTEsIDY0LCAxNzksIDEsIDc4LCAKLSAgICAxNzksIDEsIDI1MCwgMzQsIDE3OSwgMSwgMTczLCAxNzksIDEsIDIyOSwgMTQ0LCAxNzksIDEsIDIzOSwgOCwgMTc5LCAxLCAKLSAgICAyMzgsIDExOSwgMTc5LCAxLCAyMjIsIDIwMywgMTc5LCAxLCAyNDcsIDkyLCAxNzksIDEsIDI0NiwgMTk5LCAxNzksIDEsIAotICAgIDIzMCwgMTgxLCAxNzksIDEsIDIzMCwgMTQ5LCAxNzksIDEsIDIyMSwgMTEsIDE3OSwgMSwgMjA3LCAyNDEsIDE3OSwgMSwgCi0gICAgMjA3LCAyMjksIDE3OSwgMSwgMjQ0LCAxMjAsIDE3OSwgMSwgMjQ0LCAxMDQsIDE3OSwgMSwgMjIxLCAyMjcsIDE3OSwgMSwgCi0gICAgMjEwLCAyMiwgMTc5LCAxLCAyMDksIDEwOCwgMTc5LCAxLCAyNDQsIDIxMiwgMTc5LCAxLCAyNDQsIDEsIDE3OSwgMSwgMjAxLCAKLSAgICAyMDEsIDE3OSwgMSwgMTg1LCAxNzksIDEsIDIxOCwgMjA4LCAxNzksIDEsIDI0OSwgMzIsIDE3OSwgMSwgMjQ4LCA5OCwgCi0gICAgMTc5LCAxLCAxOTIsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDIxNiwgMjIwLCAxNzksIDEsIDIyOCwgMTEzLCAxNzksIDEsIAotICAgIDIxMywgOTAsIDE3OSwgMSwgMjExLCAxNjQsIDE3OSwgMSwgMjE1LCAzNiwgMTc5LCAxLCAxNTIsIDE3OSwgMiwgMjIxLCA1MSwgCi0gICAgMTc5LCAyLCAyNTAsIDE3LCAxNzksIDIyLCAyLCAyNTIsIDI1LCAxNzksIDIyLCAyLCA3NSwgMTc5LCAyMiwgMiwgMjMxLCAKLSAgICA4MywgMTc5LCAyMiwgMiwgNjgsIDE3OSwgMjIsIDIsIDIwNiwgMTc4LCAxNzksIDIyLCAyLCAxMjUsIDE0NiwgMTc5LCAyMiwgCi0gICAgMiwgMTI1LCAyMTUsIDE4NiwgMTc5LCAyMiwgMiwgNzQsIDE3OSwgMjIsIDIsIDI1MSwgNjQsIDE3OSwgMjIsIDIsIDc4LCAKLSAgICAxNzksIDIyLCAyLCAyNTAsIDM0LCAxNzksIDIsIDIwNSwgMjA0LCAxNzksIDEsIDIyOSwgMTM1LCAyMTAsIDIyLCAxNzksIAotICAgIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTc5LCAxLCAyMTUsIDE4NSwgMTc5LCAxLCAyMTYsIDYxLCAxNzksIDEsIDIwMiwgCi0gICAgMTY4LCAxNzksIDEsIDEyNSwgMjE1LCAxODYsIDE3OSwgMSwgMTI1LCAyMjcsIDc4LCAxNzksIDIyLCAyLCAxMjUsIDE1OSwgCi0gICAgMTc5LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNzksIDE3LCAyMDIsIDg0LCAxNzksIDE3LCAxMDUsIDE3OSwgMTcsIDEwOCwgCi0gICAgMTc5LCAxNywgMTQ3LCAxNzksIDE3LCAxNDksIDE3OSwgMTcsIDE3MCwgMTc5LCAxNywgMTk1LCAxNzksIDE3LCAyMTMsIAotICAgIDExMSwgMTc5LCAxNywgMTk5LCAxNzksIDE3LCAyMjIsIDYzLCAxNzksIDEsIDIxNiwgMjIxLCAzLCAxMDEsIDI0MywgMjI3LCAKLSAgICAxNzksIDEsIDIxNiwgMjIxLCAzLCAyMjYsIDI1MSwgMjQzLCAyMjcsIDE3OSwgMjE1LCAxMjAsIDgyLCAxNzksIDIxNSwgCi0gICAgMTIwLCA1NCwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDUsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTA4LCAxNzksIAotICAgIDI0NSwgOTIsIDIyMSwgNDMsIDE0NywgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxNDksIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgCi0gICAgMTE4LCAyMjcsIDE4MCwgMjA5LCA5OCwgMjA5LCA5MywgMjQ0LCAzMSwgMTc5LCAyNDUsIDkyLCAyNDQsIDMyLCAyMTIsIDgyLCAKLSAgICAxNzksIDIzMCwgMjAyLCAxNzksIDIzOCwgMjMxLCA4MiwgMjM3LCAxOTgsIDIsIDI1MSwgMTIxLCAyNDgsIDY2LCAyMzcsIAotICAgIDE5OCwgMiwgMjQ4LCA2NiwgMjM3LCAxOTgsIDIsIDIwNSwgMTk5LCAyMzcsIDE5OCwgMSwgNjMsIDIzNywgMTk4LCAxLCAKLSAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMSwgNzUsIDIzNywgMTk4LCAxLCAyMzEsIDgzLCAyMzcsIDE5OCwgMSwgNjgsIDIzNywgCi0gICAgMTk4LCAxLCAyMDYsIDE3OCwgMjM3LCAxOTgsIDEsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMSwgMjUxLCA2NCwgMjM3LCAxOTgsIAotICAgIDEsIDIyMCwgMTgsIDIzNywgMTk4LCAxLCAyNTAsIDM0LCAyMzcsIDE5OCwgMSwgMTczLCAyMzcsIDE5OCwgMSwgMjI5LCAKLSAgICAxNDQsIDIzNywgMTk4LCAxLCAyMzksIDgsIDIzNywgMTk4LCAxLCAyMzgsIDExOSwgMjM3LCAxOTgsIDEsIDIyMiwgMjAzLCAKLSAgICAyMzcsIDE5OCwgMSwgMjQ3LCA5MiwgMjM3LCAxOTgsIDEsIDI0NiwgMTk5LCAyMzcsIDE5OCwgMSwgMjMwLCAxODEsIDIzNywgCi0gICAgMTk4LCAxLCAyMzAsIDE0OSwgMjM3LCAxOTgsIDEsIDIyMSwgMTEsIDIzNywgMTk4LCAxLCAyMDcsIDI0MSwgMjM3LCAxOTgsIAotICAgIDEsIDIwNywgMjI5LCAyMzcsIDE5OCwgMSwgMjQ0LCAxMjAsIDIzNywgMTk4LCAxLCAyNDQsIDEwNCwgMjM3LCAxOTgsIDEsIAotICAgIDIyMSwgMjI3LCAyMzcsIDE5OCwgMSwgMjEwLCAyMiwgMjM3LCAxOTgsIDEsIDIwOSwgMTA4LCAyMzcsIDE5OCwgMSwgMjQ0LCAKLSAgICAyMTIsIDIzNywgMTk4LCAxLCAyNDQsIDEsIDIzNywgMTk4LCAxLCAyMDEsIDIwMSwgMjM3LCAxOTgsIDEsIDE4NSwgMjM3LCAKLSAgICAxOTgsIDEsIDIxOCwgMjA4LCAyMzcsIDE5OCwgMSwgMjQ5LCAzMiwgMjM3LCAxOTgsIDEsIDI0OCwgOTgsIDIzNywgMTk4LCAKLSAgICAxLCAxOTIsIDIzNywgMTk4LCAxLCAxOTgsIDIzNywgMTk4LCAxLCAyMTYsIDIyMCwgMjM3LCAxOTgsIDEsIDIyOCwgMTEzLCAKLSAgICAyMzcsIDE5OCwgMSwgMjI3LCA3NywgMjM3LCAxOTgsIDEsIDIwNiwgODYsIDIzNywgMTk4LCAxLCAyMTMsIDkwLCAyMzcsIAotICAgIDE5OCwgMSwgMjE1LCAzNiwgMjM3LCAxOTgsIDEsIDE1MiwgMjM3LCAxOTgsIDIsIDIyMSwgNTEsIDIzNywgMTk4LCAyMiwgMiwgCi0gICAgMjUyLCAyNSwgMjM3LCAxOTgsIDIyLCAyLCA3NSwgMjM3LCAxOTgsIDIyLCAyLCAyMzEsIDgzLCAyMzcsIDE5OCwgMjIsIDIsIAotICAgIDY4LCAyMzcsIDE5OCwgMjIsIDIsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMjIsIDIsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMjIsIAotICAgIDIsIDI1MSwgNjQsIDIzNywgMTk4LCAyMiwgMiwgMjIwLCAxOCwgMjM3LCAxOTgsIDIyLCAyLCAyNTAsIDM0LCAyMzcsIDE5OCwgCi0gICAgMiwgMjA1LCAyMDQsIDIzNywgMTk4LCAyLCAyMDcsIDI4LCAyMzcsIDE5OCwgMSwgMjI5LCAxMjUsIDIzNywgMTk4LCAxLCAKLSAgICAyMzgsIDk0LCAyMzcsIDE5OCwgMSwgMjAyLCAxMTYsIDIzNywgMTk4LCAxLCAyMTUsIDE4NSwgMjM3LCAxOTgsIDEsIDI0MCwgCi0gICAgMTA4LCAyMzcsIDE5OCwgMTcsIDIwMiwgODQsIDIzNywgMTk4LCAxNywgMTA1LCAyMzcsIDE5OCwgMTcsIDEwOCwgMjM3LCAKLSAgICAxOTgsIDE3LCAxNDcsIDIzNywgMTk4LCAxNywgMTQ5LCAyMzcsIDE5OCwgMTcsIDE3MCwgMjM3LCAxOTgsIDE3LCAxOTUsIAotICAgIDIzNywgMTk4LCAxNywgMjEzLCAxMTEsIDIzNywgMTk4LCAxNywgMTk5LCAyMzcsIDE5OCwgMTcsIDIyMiwgNjMsIDIzNywgCi0gICAgMTk4LCAyMDgsIDIwOCwgMjM3LCAxOTgsIDI1MSwgMTIwLCAyMzcsIDE5OCwgMjMwLCAyMjIsIDIzNywgMTk4LCAyMDYsIAotICAgIDIwNiwgMjM3LCAxOTgsIDI0MSwgMTMwLCAyMjAsIDIzLCAyMzcsIDE5OCwgMiwgMjAzLCA4NSwgMjM3LCAyMTMsIDIsIDI0NywgCi0gICAgNTIsIDIzNywgMjEzLCAyLCAyNTAsIDE4MCwgMjM3LCAyMTMsIDIsIDIwNSwgMTk5LCAyMzcsIDIxMywgMSwgNjMsIDIzNywgCi0gICAgMjEzLCAxLCAyNTIsIDI1LCAyMzcsIDIxMywgMSwgNzUsIDIzNywgMjEzLCAxLCAyMzEsIDgzLCAyMzcsIDIxMywgMSwgNjgsIAotICAgIDIzNywgMjEzLCAxLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDEsIDEyNSwgMTQ2LCAyMzcsIDIxMywgMSwgMTI1LCAxNTksIDIzNywgCi0gICAgMjEzLCAyMiwgMjQ3LCA1NSwgNzQsIDIzNywgMjEzLCAxLCA3NCwgMjM3LCAyMTMsIDEsIDI1MSwgNjQsIDIzNywgMjEzLCAKLSAgICAyMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAxLCA3OCwgMjM3LCAyMTMsIDEsIDI1MCwgMzQsIDIzNywgMjEzLCAxLCAxNzMsIAotICAgIDIzNywgMjEzLCAxLCAyMjksIDE0NCwgMjM3LCAyMTMsIDEsIDIzOSwgOCwgMjM3LCAyMTMsIDEsIDIzOCwgMTE5LCAyMzcsIAotICAgIDIxMywgMSwgMjIyLCAyMDMsIDIzNywgMjEzLCAxLCAyNDcsIDkyLCAyMzcsIDIxMywgMSwgMjQ2LCAxOTksIDIzNywgMjEzLCAKLSAgICAxLCAyMzAsIDE4MSwgMjM3LCAyMTMsIDEsIDIzMCwgMTQ5LCAyMzcsIDIxMywgMSwgMjIxLCAxMSwgMjM3LCAyMTMsIDEsIAotICAgIDIwNywgMjQxLCAyMzcsIDIxMywgMSwgMjA3LCAyMjksIDIzNywgMjEzLCAxLCAyNDQsIDEyMCwgMjM3LCAyMTMsIDEsIDI0NCwgCi0gICAgMTA0LCAyMzcsIDIxMywgMSwgMjIxLCAyMjcsIDIzNywgMjEzLCAxLCAyMTAsIDIyLCAyMzcsIDIxMywgMSwgMjA5LCAxMDgsIAotICAgIDIzNywgMjEzLCAxLCAyNDQsIDIxMiwgMjM3LCAyMTMsIDEsIDI0NCwgMSwgMjM3LCAyMTMsIDEsIDIwMSwgMjAxLCAyMzcsIAotICAgIDIxMywgMSwgMTg1LCAyMzcsIDIxMywgMSwgMjE4LCAyMDgsIDIzNywgMjEzLCAxLCAyNDksIDMyLCAyMzcsIDIxMywgMSwgCi0gICAgMjQ4LCA5OCwgMjM3LCAyMTMsIDEsIDE5MiwgMjM3LCAyMTMsIDEsIDE5OCwgMjM3LCAyMTMsIDEsIDIxNiwgMjIwLCAyMzcsIAotICAgIDIxMywgMSwgMjI4LCAxMTMsIDIzNywgMjEzLCAxLCAyMjcsIDc3LCAyMzcsIDIxMywgMSwgMjA2LCA4NiwgMjM3LCAyMTMsIAotICAgIDEsIDIxMywgOTAsIDIzNywgMjEzLCAxLCAyMTEsIDE2NCwgMjM3LCAyMTMsIDEsIDIxNSwgMzYsIDIzNywgMjEzLCAxLCAKLSAgICAxNTIsIDIzNywgMjEzLCAyLCAyMjEsIDUxLCAyMzcsIDIxMywgMiwgMjUwLCAxNywgMjM3LCAyMTMsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMzcsIDIxMywgMjIsIDIsIDc1LCAyMzcsIDIxMywgMjIsIDIsIDIzMSwgODMsIDIzNywgMjEzLCAyMiwgMiwgNjgsIAotICAgIDIzNywgMjEzLCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAxNDYsIDIzNywgMjEzLCAyMiwgMiwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMjM3LCAyMTMsIDIyLCAyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDIyLCAyLCA3NCwgMjM3LCAKLSAgICAyMTMsIDIyLCAyLCAyNTEsIDY0LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDc4LCAKLSAgICAyMzcsIDIxMywgMjIsIDIsIDI1MCwgMzQsIDIzNywgMjEzLCAyLCAyMDUsIDIwNCwgMjM3LCAyMTMsIDIyMCwgMzksIDIzNywgCi0gICAgMjEzLCAxLCAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMSwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjM3LCAyMTMsIDE3LCAyMDIsIDg0LCAyMzcsIDIxMywgMTcsIAotICAgIDEwNSwgMjM3LCAyMTMsIDE3LCAxMDgsIDIzNywgMjEzLCAxNywgMTQ3LCAyMzcsIDIxMywgMTcsIDE0OSwgMjM3LCAyMTMsIAotICAgIDE3LCAxNzAsIDIzNywgMjEzLCAxNywgMTk1LCAyMzcsIDIxMywgMTcsIDIxMywgMTExLCAyMzcsIDIxMywgMTcsIDE5OSwgCi0gICAgMjM3LCAyMTMsIDE3LCAyMjIsIDYzLCAyMzcsIDIxMywgMjUxLCAxNDYsIDU0LCAyMzcsIDIxMywgMjE1LCAxMjAsIDU0LCAKLSAgICAyMzcsIDIxMywgMSwgMjAyLCA4MCwgMTkzLCAyLCAyNDcsIDUyLCAxOTMsIDIsIDI1MCwgMTgwLCAxOTMsIDIsIDIwNSwgCi0gICAgMTk5LCAxOTMsIDEsIDYzLCAxOTMsIDEsIDI1MiwgMjUsIDE5MywgMSwgNzUsIDE5MywgMSwgMjMxLCA4MywgMTkzLCAxLCAKLSAgICA2OCwgMTkzLCAxLCAyMDYsIDE3OCwgMTkzLCAxLCAxMjUsIDE0NiwgMTkzLCAxLCAxMjUsIDE1OSwgMTkzLCAxLCA3NCwgCi0gICAgMTkzLCAxLCAyNTEsIDY0LCAxOTMsIDEsIDc4LCAxOTMsIDEsIDI1MCwgMzQsIDE5MywgMSwgMTczLCAxOTMsIDEsIDIyOSwgCi0gICAgMTQ0LCAxOTMsIDEsIDIzOSwgOCwgMTkzLCAxLCAyMzgsIDExOSwgMTkzLCAxLCAyMjIsIDIwMywgMTkzLCAxLCAyNDcsIDkyLCAKLSAgICAxOTMsIDEsIDI0NiwgMTk5LCAxOTMsIDEsIDIzMCwgMTgxLCAxOTMsIDEsIDIzMCwgMTQ5LCAxOTMsIDEsIDIyMSwgMTEsIAotICAgIDE5MywgMSwgMjA3LCAyNDEsIDE5MywgMSwgMjA3LCAyMjksIDE5MywgMSwgMjQ0LCAxMjAsIDE5MywgMSwgMjQ0LCAxMDQsIAotICAgIDE5MywgMSwgMjIxLCAyMjcsIDE5MywgMSwgMjEwLCAyMiwgMTkzLCAxLCAyMDksIDEwOCwgMTkzLCAxLCAyNDQsIDIxMiwgCi0gICAgMTkzLCAxLCAyNDQsIDEsIDE5MywgMSwgMjAxLCAyMDEsIDE5MywgMSwgMTg1LCAxOTMsIDEsIDIxOCwgMjA4LCAxOTMsIDEsIAotICAgIDI0OSwgMzIsIDE5MywgMSwgMjQ4LCA5OCwgMTkzLCAxLCAxOTIsIDE5MywgMSwgMTk4LCAxOTMsIDEsIDIxNiwgMjIwLCAKLSAgICAxOTMsIDEsIDIyOCwgMTEzLCAxOTMsIDEsIDIyNywgNzcsIDE5MywgMSwgMjA2LCA4NiwgMTkzLCAxLCAyMTMsIDkwLCAxOTMsIAotICAgIDEsIDIxMSwgMTY0LCAxOTMsIDEsIDIxNSwgMzYsIDE5MywgMSwgMTUyLCAxOTMsIDIsIDIyMSwgNTEsIDE5MywgMiwgMjUwLCAKLSAgICAxNywgMTkzLCAyMiwgMiwgMjUyLCAyNSwgMTkzLCAyMiwgMiwgNzUsIDE5MywgMjIsIDIsIDIzMSwgODMsIDE5MywgMjIsIDIsIAotICAgIDY4LCAxOTMsIDIyLCAyLCAyMDYsIDE3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNDYsIDE5MywgMjIsIDIsIDEyNSwgMjE1LCAKLSAgICAxODYsIDE5MywgMjIsIDIsIDc0LCAxOTMsIDIyLCAyLCAyNTEsIDY0LCAxOTMsIDIyLCAyLCA3OCwgMTkzLCAyMiwgMiwgCi0gICAgMjUwLCAzNCwgMTkzLCAyLCAyMDUsIDIwNCwgMTkzLCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE5MywgMjUwLCAzNSwgMjI3LCAKLSAgICAxOTYsIDgyLCAxOTMsIDEsIDIxNSwgMTg1LCAxOTMsIDEsIDIxNiwgNjEsIDE5MywgMSwgMjAyLCAxNjgsIDE5MywgMSwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMTkzLCAxLCAxMjUsIDIyNywgNzgsIDE5MywgMjIsIDIsIDEyNSwgMTU5LCAxOTMsIDIyLCAyLCAKLSAgICAxMjUsIDIyNywgNzgsIDE5MywgMTcsIDIwMiwgODQsIDE5MywgMTcsIDEwNSwgMTkzLCAxNywgMTA4LCAxOTMsIDE3LCAxNDcsIAotICAgIDE5MywgMTcsIDE0OSwgMTkzLCAxNywgMTcwLCAxOTMsIDE3LCAxOTUsIDE5MywgMTcsIDIxMywgMTExLCAxOTMsIDE3LCAKLSAgICAxOTksIDE5MywgMTcsIDIyMiwgNjMsIDE5MywgMjMwLCAyMDIsIDE5MywgMSwgMjA0LCAxMTEsIDE5MywgMjM5LCAxMzgsIAotICAgIDExOCwgMjE3LCA1NSwgMTkzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTkzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAKLSAgICAxOTMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgODAsIDE5MywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE5MywgMjM5LCAxMzgsIAotICAgIDEyNiwgMjEyLCA3OSwgNDQsIDIsIDI1MCwgMTgwLCA0NCwgMiwgMjA1LCAxOTksIDQ0LCAxLCA2MywgNDQsIDEsIDI1MiwgCi0gICAgMjUsIDQ0LCAxLCA3NSwgNDQsIDEsIDIzMSwgODMsIDQ0LCAxLCA2OCwgNDQsIDEsIDIwNiwgMTc4LCA0NCwgMSwgNzQsIDQ0LCAKLSAgICAxLCAyNDEsIDE2MSwgNDQsIDEsIDI1MSwgNjQsIDQ0LCAxLCA3OCwgNDQsIDEsIDIyMCwgMTgsIDQ0LCAxLCAyNTAsIDM0LCAKLSAgICA0NCwgMSwgMTczLCA0NCwgMSwgMjIyLCAyMDMsIDQ0LCAxLCAyNDcsIDkyLCA0NCwgMSwgMjMwLCAxODEsIDQ0LCAxLCAyMjEsIAotICAgIDExLCA0NCwgMSwgMjA3LCAyNDEsIDQ0LCAxLCAyMjEsIDIyNywgNDQsIDEsIDIxMCwgMjIsIDQ0LCAxLCAyMDEsIDIwMSwgCi0gICAgNDQsIDEsIDIyMSwgMjA5LCA0NCwgMSwgMTg1LCA0NCwgMSwgMTkyLCA0NCwgMSwgMTk4LCA0NCwgMSwgMjE2LCAyMjAsIDQ0LCAKLSAgICAxLCAyMTUsIDE4NSwgNDQsIDEsIDIyOCwgMTEzLCA0NCwgMSwgMjI3LCA3NywgNDQsIDEsIDIyNywgNjgsIDQ0LCAxLCAyMDYsIAotICAgIDg2LCA0NCwgMSwgMjEzLCA5MCwgNDQsIDEsIDIxMSwgMTY0LCA0NCwgMSwgMjE1LCAzNiwgNDQsIDEsIDE1MiwgNDQsIDIyLCAKLSAgICAyLCAyNTIsIDI1LCA0NCwgMjIsIDIsIDc1LCA0NCwgMjIsIDIsIDIzMSwgODMsIDQ0LCAyMiwgMiwgNjgsIDQ0LCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDQ0LCAyMiwgMiwgNzQsIDQ0LCAyMiwgMiwgMjQxLCAxNjEsIDQ0LCAyMiwgMiwgMjUxLCA2NCwgNDQsIDIyLCAKLSAgICAyLCA3OCwgNDQsIDIyLCAyLCAyMjAsIDE4LCA0NCwgMjIsIDIsIDI1MCwgMzQsIDQ0LCAyLCAyMDUsIDIwNCwgNDQsIDIyMCwgCi0gICAgMzksIDQ0LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDQ0LCAxNywgMjAyLCA4NCwgNDQsIDE3LCAxMDUsIDQ0LCAxNywgMTA4LCAKLSAgICA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTcwLCA0NCwgMTcsIDE5NSwgNDQsIDE3LCAyMTMsIDExMSwgNDQsIAotICAgIDE3LCAxOTksIDQ0LCAxNywgMjIyLCA2MywgNDQsIDQyLCAyMDksIDE1MiwgNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDQ0LCA0MiwgCi0gICAgMTE4LCAyMDksIDM2LCA0NCwgMjQ0LCAxMzMsIDU0LCA0NCwgMjI0LCAzOCwgNTQsIDQ0LCAyMDMsIDUwLCA1NCwgNDQsIAotICAgIDI0NCwgNzIsIDU0LCA0NCwgMjQ1LCAxNDEsIDU0LCA0NCwgMjUwLCA4MiwgODcsIDU0LCA0NCwgMjE1LCAxMjAsIDU0LCA0NCwgCi0gICAgNDIsIDU0LCAxNzUsIDIsIDM5LCAyNDcsIDUzLCA1NSwgMTc1LCAyLCAyNDcsIDUyLCAxNzUsIDIsIDI1MCwgMTgwLCAxNzUsIAotICAgIDIsIDIwNSwgMTk5LCAxNzUsIDEsIDYzLCAxNzUsIDEsIDI1MiwgMjUsIDE3NSwgMSwgNzUsIDE3NSwgMSwgMjMxLCA4MywgCi0gICAgMTc1LCAxLCA2OCwgMTc1LCAxLCAyMDYsIDE3OCwgMTc1LCAxLCAxMjUsIDE0NiwgMTc1LCAxLCAxMjUsIDE1OSwgMTc1LCAxLCAKLSAgICA3NCwgMTc1LCAxLCAyNDEsIDE2MSwgMTc1LCAxLCAyNTEsIDY0LCAxNzUsIDEsIDc4LCAxNzUsIDEsIDIyMCwgMTgsIDE3NSwgCi0gICAgMSwgMjUwLCAzNCwgMTc1LCAxLCAxNzMsIDE3NSwgMSwgMjI5LCAxNDQsIDE3NSwgMSwgMjM5LCA4LCAxNzUsIDEsIDIzOCwgCi0gICAgMTE5LCAxNzUsIDEsIDIyMiwgMjAzLCAxNzUsIDEsIDI0NywgOTIsIDE3NSwgMSwgMjQ2LCAxOTksIDE3NSwgMSwgMjMwLCAKLSAgICAxODEsIDE3NSwgMSwgMjMwLCAxNDksIDE3NSwgMSwgMjIxLCAxMSwgMTc1LCAxLCAyMDcsIDI0MSwgMTc1LCAxLCAyMDcsIAotICAgIDIyOSwgMTc1LCAxLCAyNDQsIDEyMCwgMTc1LCAxLCAyNDQsIDEwNCwgMTc1LCAxLCAyMjEsIDIyNywgMTc1LCAxLCAyMTAsIAotICAgIDIyLCAxNzUsIDEsIDIwOSwgMTA4LCAxNzUsIDEsIDI0NCwgMjEyLCAxNzUsIDEsIDI0NCwgMSwgMTc1LCAxLCAyMDEsIDIwMSwgCi0gICAgMTc1LCAxLCAxODUsIDE3NSwgMSwgMjE4LCAyMDgsIDE3NSwgMSwgMjQ5LCAzMiwgMTc1LCAxLCAyNDgsIDk4LCAxNzUsIDEsIAotICAgIDE5MiwgMTc1LCAxLCAxOTgsIDE3NSwgMSwgMjE2LCAyMjAsIDE3NSwgMSwgMjE1LCAxODUsIDE3NSwgMSwgMjI4LCAxMTMsIAotICAgIDE3NSwgMSwgMjI3LCA3NywgMTc1LCAxLCAyMjcsIDY4LCAxNzUsIDEsIDIwNiwgODYsIDE3NSwgMSwgMjEzLCA5MCwgMTc1LCAKLSAgICAxLCAyMTEsIDE2NCwgMTc1LCAxLCAyMTUsIDM2LCAxNzUsIDEsIDE1MiwgMTc1LCAyLCAyNTAsIDE3LCAxNzUsIDIyLCAyLCAKLSAgICAyNTIsIDI1LCAxNzUsIDIyLCAyLCA3NSwgMTc1LCAyMiwgMiwgMjMxLCA4MywgMTc1LCAyMiwgMiwgNjgsIDE3NSwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCAxNzUsIDIyLCAyLCAxMjUsIDE0NiwgMTc1LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTc1LCAyMiwgMiwgCi0gICAgNzQsIDE3NSwgMjIsIDIsIDI0MSwgMTYxLCAxNzUsIDIyLCAyLCAyNTEsIDY0LCAxNzUsIDIyLCAyLCA3OCwgMTc1LCAyMiwgCi0gICAgMiwgMjIwLCAxOCwgMTc1LCAyMiwgMiwgMjUwLCAzNCwgMTc1LCAyLCAyMDUsIDIwNCwgMTc1LCAyMjcsIDE5NiwgODIsIAotICAgIDE3NSwgMjUxLCA2NSwgMjI3LCAxOTYsIDgyLCAxNzUsIDEsIDIwOCwgMjAsIDE3NSwgMSwgMjQxLCAyNTUsIDE3NSwgMSwgCi0gICAgMjE1LCAxNjYsIDE3NSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc1LCAxLCAxMjUsIDIyNywgNzgsIDE3NSwgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAxNzUsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3NSwgMTcsIDIwMiwgODQsIDE3NSwgMTcsIDEwNSwgMTc1LCAxNywgCi0gICAgMTA4LCAxNzUsIDE3LCAxNDcsIDE3NSwgMTcsIDE0OSwgMTc1LCAxNywgMTcwLCAxNzUsIDE3LCAxOTUsIDE3NSwgMTcsIAotICAgIDIxMywgMTExLCAxNzUsIDE3LCAxOTksIDE3NSwgMTcsIDIyMiwgNjMsIDE3NSwgMjM5LCAxMzgsIDE3LCAyMDIsIDg1LCAzNSwgCi0gICAgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIAotICAgIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgCi0gICAgMTM4LCAxNywgMTI2LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIAotICAgIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTIwLCAzNSwgMjQwLCAyMjUsIDIxOCwgCi0gICAgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjYsIDM1LCAyNDAsIDIyNSwgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAKLSAgICAyLCAyMDcsIDE2NCwgMjAwLCAyLCAyNDcsIDUyLCAyMDAsIDIsIDI1MCwgMTgwLCAyMDAsIDIsIDIwNSwgMTk5LCAyMDAsIDEsIAotICAgIDYzLCAyMDAsIDEsIDI1MiwgMjUsIDIwMCwgMSwgNzUsIDIwMCwgMSwgMjMxLCA4MywgMjAwLCAxLCA2OCwgMjAwLCAxLCAKLSAgICAyMDYsIDE3OCwgMjAwLCAxLCAxMjUsIDE0NiwgMjAwLCAxLCAxMjUsIDE1OSwgMjAwLCAxLCA3NCwgMjAwLCAxLCAyNDEsIAotICAgIDE2MSwgMjAwLCAxLCAyNTEsIDY0LCAyMDAsIDEsIDc4LCAyMDAsIDEsIDIyMCwgMTgsIDIwMCwgMSwgMjUwLCAzNCwgMjAwLCAKLSAgICAxLCAxNzMsIDIwMCwgMSwgMjI5LCAxNDQsIDIwMCwgMSwgMjM5LCA4LCAyMDAsIDEsIDIzOCwgMTE5LCAyMDAsIDEsIDIyMiwgCi0gICAgMjAzLCAyMDAsIDEsIDI0NywgOTIsIDIwMCwgMSwgMjQ2LCAxOTksIDIwMCwgMSwgMjMwLCAxODEsIDIwMCwgMSwgMjMwLCAKLSAgICAxNDksIDIwMCwgMSwgMjIxLCAxMSwgMjAwLCAxLCAyMDcsIDI0MSwgMjAwLCAxLCAyMDcsIDIyOSwgMjAwLCAxLCAyNDQsIAotICAgIDEyMCwgMjAwLCAxLCAyNDQsIDEwNCwgMjAwLCAxLCAyMjEsIDIyNywgMjAwLCAxLCAyMTAsIDIyLCAyMDAsIDEsIDIwOSwgCi0gICAgMTA4LCAyMDAsIDEsIDI0NCwgMjEyLCAyMDAsIDEsIDI0NCwgMSwgMjAwLCAxLCAyMDEsIDIwMSwgMjAwLCAxLCAxODUsIAotICAgIDIwMCwgMSwgMjE4LCAyMDgsIDIwMCwgMSwgMjQ5LCAzMiwgMjAwLCAxLCAyNDgsIDk4LCAyMDAsIDEsIDE5MiwgMjAwLCAxLCAKLSAgICAxOTgsIDIwMCwgMSwgMjE2LCAyMjAsIDIwMCwgMSwgMjE1LCAxODUsIDIwMCwgMSwgMjI4LCAxMTMsIDIwMCwgMSwgMjI3LCAKLSAgICA3NywgMjAwLCAxLCAyMDYsIDg2LCAyMDAsIDEsIDIxMywgOTAsIDIwMCwgMSwgMjExLCAxNjQsIDIwMCwgMSwgMjE1LCAzNiwgCi0gICAgMjAwLCAxLCAxNTIsIDIwMCwgMiwgMjIxLCA1MSwgMjAwLCAyLCAyNTAsIDE3LCAyMDAsIDIyLCAyLCAyNTIsIDI1LCAyMDAsIAotICAgIDIyLCAyLCA3NSwgMjAwLCAyMiwgMiwgMjMxLCA4MywgMjAwLCAyMiwgMiwgNjgsIDIwMCwgMjIsIDIsIDIwNiwgMTc4LCAKLSAgICAyMDAsIDIyLCAyLCAxMjUsIDE0NiwgMjAwLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjAwLCAyMiwgMiwgNzQsIDIwMCwgMjIsIAotICAgIDIsIDI0MSwgMTYxLCAyMDAsIDIyLCAyLCAyNTEsIDY0LCAyMDAsIDIyLCAyLCA3OCwgMjAwLCAyMiwgMiwgMjIwLCAxOCwgCi0gICAgMjAwLCAyMiwgMiwgMjUwLCAzNCwgMjAwLCAyLCAyMDUsIDIwNCwgMjAwLCAyMjcsIDE5NiwgODIsIDIwMCwgMjUxLCA2NSwgCi0gICAgMjI3LCAxOTYsIDgyLCAyMDAsIDEsIDI0MCwgMTA4LCAyMDAsIDEsIDEyNSwgMjE1LCAxODYsIDIwMCwgMSwgMTI1LCAyMjcsIAotICAgIDc4LCAyMDAsIDIyLCAyLCAxMjUsIDE1OSwgMjAwLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDAsIDE3LCAyMDIsIDg0LCAKLSAgICAyMDAsIDE3LCAxMDUsIDIwMCwgMTcsIDEwOCwgMjAwLCAxNywgMTQ3LCAyMDAsIDE3LCAxNDksIDIwMCwgMTcsIDE3MCwgCi0gICAgMjAwLCAxNywgMTk1LCAyMDAsIDE3LCAyMTMsIDExMSwgMjAwLCAxNywgMTk5LCAyMDAsIDE3LCAyMjIsIDYzLCAyMDAsIDIsIAotICAgIDIzMCwgMTM1LCAyMDAsIDIsIDIwNiwgMjIyLCAxNjQsIDIsIDI0NywgNTIsIDE2NCwgMiwgMjUwLCAxODAsIDE2NCwgMiwgCi0gICAgMjA1LCAxOTksIDE2NCwgMSwgNjMsIDE2NCwgMSwgMjUyLCAyNSwgMTY0LCAxLCA3NSwgMTY0LCAxLCAyMzEsIDgzLCAxNjQsIAotICAgIDEsIDY4LCAxNjQsIDEsIDIwNiwgMTc4LCAxNjQsIDEsIDEyNSwgMTQ2LCAxNjQsIDEsIDEyNSwgMTU5LCAxNjQsIDEsIDc0LCAKLSAgICAxNjQsIDEsIDI0MSwgMTYxLCAxNjQsIDEsIDI1MSwgNjQsIDE2NCwgMSwgNzgsIDE2NCwgMSwgMjIwLCAxOCwgMTY0LCAxLCAKLSAgICAyNTAsIDM0LCAxNjQsIDEsIDE3MywgMTY0LCAxLCAyMjksIDE0NCwgMTY0LCAxLCAyMzksIDgsIDE2NCwgMSwgMjM4LCAxMTksIAotICAgIDE2NCwgMSwgMjIyLCAyMDMsIDE2NCwgMSwgMjQ3LCA5MiwgMTY0LCAxLCAyNDYsIDE5OSwgMTY0LCAxLCAyMzAsIDE4MSwgCi0gICAgMTY0LCAxLCAyMzAsIDE0OSwgMTY0LCAxLCAyMjEsIDExLCAxNjQsIDEsIDIwNywgMjQxLCAxNjQsIDEsIDIwNywgMjI5LCAKLSAgICAxNjQsIDEsIDI0NCwgMTIwLCAxNjQsIDEsIDI0NCwgMTA0LCAxNjQsIDEsIDIyMSwgMjI3LCAxNjQsIDEsIDIxMCwgMjIsIAotICAgIDE2NCwgMSwgMjA5LCAxMDgsIDE2NCwgMSwgMjQ0LCAyMTIsIDE2NCwgMSwgMjQ0LCAxLCAxNjQsIDEsIDIwMSwgMjAxLCAKLSAgICAxNjQsIDEsIDIyMSwgMjA5LCAxNjQsIDEsIDE4NSwgMTY0LCAxLCAyMTgsIDIwOCwgMTY0LCAxLCAyNDksIDMyLCAxNjQsIDEsIAotICAgIDI0OCwgOTgsIDE2NCwgMSwgMTkyLCAxNjQsIDEsIDE5OCwgMTY0LCAxLCAyMTYsIDIyMCwgMTY0LCAxLCAyMTUsIDE4NSwgCi0gICAgMTY0LCAxLCAyMjgsIDExMywgMTY0LCAxLCAyMjcsIDc3LCAxNjQsIDEsIDIyNywgNjgsIDE2NCwgMSwgMjA2LCA4NiwgMTY0LCAKLSAgICAxLCAyMTMsIDkwLCAxNjQsIDEsIDIxMSwgMTY0LCAxNjQsIDEsIDIxNSwgMzYsIDE2NCwgMSwgMTUyLCAxNjQsIDEsIDIwNywgCi0gICAgMjEwLCAxNjQsIDIsIDI1MCwgMTcsIDE2NCwgMjIsIDIsIDI1MiwgMjUsIDE2NCwgMjIsIDIsIDc1LCAxNjQsIDIyLCAyLCAKLSAgICAyMzEsIDgzLCAxNjQsIDIyLCAyLCA2OCwgMTY0LCAyMiwgMiwgMjA2LCAxNzgsIDE2NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNjQsIAotICAgIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDIyLCAyLCA3NCwgMTY0LCAyMiwgMiwgMjQxLCAxNjEsIDE2NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDE2NCwgMjIsIDIsIDc4LCAxNjQsIDIyLCAyLCAyMjAsIDE4LCAxNjQsIDIyLCAyLCAyNTAsIDM0LCAxNjQsIAotICAgIDIsIDIwNSwgMjA0LCAxNjQsIDEsIDcwLCAyMTYsIDk3LCAxNjQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTY0LCAxLCAKLSAgICAyNTAsIDEyNiwgMjMxLCA4MywgMTY0LCAxLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDEsIDEyNSwgMjI3LCA3OCwgMTY0LCAyMiwgCi0gICAgMiwgMTI1LCAxNTksIDE2NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTY0LCAxNywgMjAyLCA4NCwgMTY0LCAxNywgMTA1LCAKLSAgICAxNjQsIDE3LCAxMDgsIDE2NCwgMTcsIDE0NywgMTY0LCAxNywgMTQ5LCAxNjQsIDE3LCAxNzAsIDE2NCwgMTcsIDE5NSwgCi0gICAgMTY0LCAxNywgMjEzLCAxMTEsIDE2NCwgMTcsIDE5OSwgMTY0LCAxNywgMjIyLCA2MywgMTY0LCA0MiwgMjA5LCAxNTIsIAotICAgIDE2NCwgNDIsIDExOCwgMjM2LCAxMSwgMTY0LCA0MiwgMTE4LCAyMDksIDM2LCAxNjQsIDIzOSwgMTM4LCAxMTgsIDIxNywgCi0gICAgNTUsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDE2NCwgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMTY0LCAyNDQsIAotICAgIDEzOCwgODIsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMSwgMjI4LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjMsIDE2MywgMTY0LCAxLCAKLSAgICAyNDYsIDEzMSwgMjE1LCAxODYsIDE2NCwgMSwgMjQ2LCAxMzEsIDE1OSwgMTY0LCAxLCAyNDYsIDEzMSwgMjI3LCA3OCwgCi0gICAgMTY0LCAxLCAyNDYsIDEzMSwgMjMwLCA1NCwgMTQwLCAyLCAyNTAsIDE3OSwgMTQwLCAyLCAyMDUsIDE5OCwgMTQwLCAxLCAKLSAgICAyNTAsIDYsIDE0MCwgMSwgMjUxLCAyMzUsIDE0MCwgMSwgMjUxLCA4OSwgMTQwLCAxLCAyNTEsIDEwNCwgMTQwLCAxLCAyMzAsIAotICAgIDE5MSwgMTQwLCAxLCAyMzEsIDgyLCAxNDAsIDEsIDIwNiwgMTY5LCAxNDAsIDEsIDIwNiwgMTcyLCAxNDAsIDEsIDIzMCwgCi0gICAgMjE3LCAxNDAsIDEsIDIzMCwgMjE4LCAxNDAsIDEsIDIzMSwgNjgsIDE0MCwgMSwgMjMxLCA3MCwgMTQwLCAxLCAyNDAsIAotICAgIDE5NCwgMTQwLCAxLCAyNDEsIDE1NiwgMTQwLCAxLCAyNTEsIDQ5LCAxNDAsIDEsIDIxOSwgMTg3LCAxNDAsIDEsIDIyMCwgCi0gICAgMTEsIDE0MCwgMSwgMjUwLCAyMCwgMTQwLCAxLCAyNTEsIDUsIDIyOSwgMjA2LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMjksIAotICAgIDIwNiwgMTQwLCAxLCAyNTEsIDUsIDIzOCwgMjEwLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzgsIDIxMCwgMTQwLCAxLCAyMjksIAotICAgIDI1NSwgMjIzLCAxMDMsIDE0MCwgMSwgMjE0LCAyMzUsIDIzOCwgMjEwLCAxNDAsIDEsIDI1MSwgNSwgMjQ3LCA4LCAxNDAsIAotICAgIDEsIDIyNSwgMTQ3LCAyNDcsIDgsIDE0MCwgMSwgMjUxLCA1LCAyMzAsIDE2NCwgMTQwLCAxLCAyMjUsIDE0NywgMjMwLCAKLSAgICAxNjQsIDE0MCwgMSwgMjEwLCAxNSwgMjIzLCAxMDMsIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMzQsIDIyMywgMTA0LCAxNDAsIAotICAgIDEsIDIxNCwgMjM1LCAyMzAsIDE2NCwgMTQwLCAxLCAyNTEsIDUsIDIwNywgMjM3LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMDcsIAotICAgIDIzNywgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTExLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIDExMSwgMTQwLCAxLCAyMjMsIAotICAgIDE5MSwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjUxLCA1LCAyMDksIDE5NSwgMTQwLCAKLSAgICAxLCAyMjUsIDE0NywgMjA5LCAxOTUsIDE0MCwgMSwgMjUxLCA1LCAyNDQsIDEzMSwgMTQwLCAxLCAyMjUsIDE0NywgMjQ0LCAKLSAgICAxMzEsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyMywgNTgsIDE0MCwgMSwgMjE0LCAyMzUsIDI0NCwgMTMxLCAxNDAsIDEsIDI1MSwgCi0gICAgNSwgMjE5LCA0MiwgMTQwLCAxLCAyMjUsIDE0NywgMjE5LCA0MiwgMTQwLCAxLCAyNTEsIDUsIDI0OCwgMjAwLCAxNDAsIDEsIAotICAgIDIyNSwgMTQ3LCAyNDgsIDIwMCwgMTQwLCAxLCAyMjUsIDYyLCAxNDAsIDEsIDI1MCwgMjQxLCAyNDgsIDIwMCwgMTQwLCAxLCAKLSAgICAyMDMsIDU3LCAxNDAsIDEsIDIxNiwgMTY0LCAxNDAsIDEsIDI0NCwgMTYyLCAyMjcsIDI0MywgMTQwLCAxLCAyMDYsIDU3LCAKLSAgICAxNDAsIDEsIDIxMCwgMTUsIDIxNCwgMjA3LCAxNDAsIDEsIDIyMywgMTkxLCAyMTQsIDIwNywgMTQwLCAxLCAyNDQsIDE2MiwgCi0gICAgMjE0LCAyMDcsIDE0MCwgMSwgMjM3LCA3MSwgMTQwLCAxLCAyMjMsIDE5MSwgMjI3LCAyNDMsIDE0MCwgMSwgMjQwLCA2MiwgCi0gICAgMTQwLCAyLCAyNTEsIDM4LCAxNDAsIDIyLCAyLCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjUxLCAxMDYsIAotICAgIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyNTEsIDEwNiwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIzMCwgMjE0LCAxNDAsIDIyLCAKLSAgICAyLCAyNDMsIDIwMCwgMjMwLCAyMTQsIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyMTksIDE2NywgMTQwLCAyMiwgMiwgMjQzLCAKLSAgICAyMDAsIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgCi0gICAgMjQzLCAyMDAsIDIyOSwgMTEsIDE0MCwgMjIsIDIsIDIyOSwgMTMsIDI0NCwgNTAsIDE0MCwgMjIsIDIsIDIyOSwgMTIsIAotICAgIDIzNywgMTU4LCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDEyLCAyMzcsIDE1OCwgMjQzLCAyMDAsIDI1MSwgOTksIDE0MCwgCi0gICAgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyMzgsIDIwOSwgMTQwLCAyMiwgMiwgMjM4LCAyMDksIDE0MCwgMjI3LCA4OSwgCi0gICAgMTcsIDIwMiwgODQsIDE0MCwgMjI3LCA4OSwgMTcsIDEwNSwgMTQwLCAyMjcsIDg5LCAxNywgMTA4LCAxNDAsIDIyNywgODksIAotICAgIDE3LCAxNDcsIDE0MCwgMjI3LCA4OSwgMTcsIDE0OSwgMTQwLCAyMjcsIDg5LCAxNywgMTcwLCAxNDAsIDIyNywgODksIDE3LCAKLSAgICAxOTUsIDE0MCwgMjI3LCA4OSwgMTcsIDIxMywgMTExLCAxNDAsIDIyNywgODksIDE3LCAxOTksIDE0MCwgMjI3LCA4OSwgMTcsIAotICAgIDIyMiwgNjMsIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjA5LCAKLSAgICAxNDAsIDIxNywgMTc5LCAyMjgsIDE5NCwgMjA5LCAxMDMsIDE2NywgMjI5LCAyNywgMjMwLCAxOCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIyOSwgMTM5LCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMDgsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMjksIDEwMywgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTYsIDIyOSwgMTEyLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjE2LCAxODUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgMTI5LCAyMjIsIDExNiwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjQ2LCAxMTcsIDI0NiwgMTg4LCAyMDksIDEwMywgMTY3LCAyNDYsIDExNywgMjQ2LCAxMjcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDI0NiwgMTE3LCAyNDYsIDE4NywgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjEyLCAxMywgMjA5LCAxMDMsIDE2NywgMjQ2LCAKLSAgICAxMTcsIDI0NiwgMTEzLCAyMDksIDEwMywgMTY3LCAyMDIsIDI0OCwgMjAyLCAyNTUsIDIwOSwgMTAzLCAxNjcsIDI0MywgCi0gICAgMTE0LCAyNDYsIDE5NiwgMjA5LCAxMDMsIDE2NywgMjA4LCAxNzMsIDIxOSwgNTMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIAotICAgIDIwOSwgOTcsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIyMywgODAsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIxOCwgCi0gICAgMTcwLCAyMDksIDEwMywgMTY3LCAyMjEsIDE5MiwgMjIyLCAyMzAsIDIwOSwgMTAzLCAxNjcsIDI0MywgMTE0LCAyNDQsIDUxLCAKLSAgICAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjA5LCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTYsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTA0LCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDQzLCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjEsIDE5MiwgMjIxLCA4NCwgMjA5LCAxMDMsIDE2NywgMjQ4LCAyNCwgMjQ5LCAwLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTgsIDcwLCAyMTgsIDk4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAxNzIsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTg3LCAyNDAsIDEwOCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxOCwgMjAxLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE4NywgMjQwLCA4MSwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxNCwgMjQ3LCAyMDksIDEwMywgMTY3LCAyMjQsIDgzLCAKLSAgICAxOTIsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDMsIDg2LCAyMDksIDEwMywgMTY3LCAyMTUsIDIyOCwgMjE1LCAxNDQsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIxNSwgMTQ1LCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyMjcsIDEwNywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI2LCAyMzksIDIwOSwgMTAzLCAxNjcsIDIwNCwgMSwgMjA0LCAxMDYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxNSwgCi0gICAgNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAxMTYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxMSwgOSwgMjA5LCAKLSAgICAxMDMsIDE2NywgMjM2LCAxMzcsIDIzNiwgMjMzLCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyNDYsIDk3LCAyMDksIDEwMywgCi0gICAgMTY3LCAxNTgsIDI1MCwgMjIzLCAyMDksIDEwMywgMTY3LCAyMzYsIDEzNywgMjIxLCAxODcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxOSwgMTQ0LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNjMsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMzcsIDEyNSwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MiwgMjUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTAsIDI0NywgMjA5LCAKLSAgICAxMDMsIDE2NywgMjE0LCAyMjksIDc1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjMxLCA4MywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE0LCAyMjksIDIwNywgMjQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDcsIDIyLCAyMDksIDEwMywgMTY3LCAyMTQsIAotICAgIDIyOSwgNjgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDYsIDE3OCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODMsIDIwOSwgCi0gICAgMTAzLCAyNDUsIDkyLCAxNiwgMjQ5LCAxLCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzQsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxNCwgMjI5LCAyNTEsIDEwOSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDc4LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgCi0gICAgMjUxLCA2NSwgMjI1LCAxMzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTEsIDY1LCAyMjUsIDEzNiwgMjA5LCAxMDMsIAotICAgIDE2NywgMjI4LCAzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzIsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTMzLCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjUsIDE0MSwgMjQxLCAxMjksIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMDksIDQ3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjUsIDE0MSwgMjA4LCA4OCwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDI0NiwgMTc1LCAyMDksIDEwMywgMTY3LCAyMDksIAotICAgIDk1LCAyMDksIDEwMywgMTY3LCAyMjIsIDcyLCAyMDksIDEwMywgMTY3LCAyMDMsIDgwLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE3NywgMjA5LCAxMDMsIDE3LCAyMDIsIDg0LCAyMDksIDEwMywgMTcsIDEwNSwgMjA5LCAxMDMsIDE3LCAxMDgsIDIwOSwgCi0gICAgMTAzLCAxNywgMTQ3LCAyMDksIDEwMywgMTcsIDE0OSwgMjA5LCAxMDMsIDE3LCAxNzAsIDIwOSwgMTAzLCAxNywgMTk1LCAKLSAgICAyMDksIDEwMywgMTcsIDIxMywgMTExLCAyMDksIDEwMywgMTcsIDE5OSwgMjA5LCAxMDMsIDE3LCAyMjIsIDYzLCAyMDksIAotICAgIDEwMywgMTY3LCAyNTAsIDIxOSwgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTMsIDIyOCwgMTIsIDEsIDIyOSwgMjYsIDIyOCwgCi0gICAgMTIsIDEsIDIyOSwgMTE2LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjI5LCAxMTYsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAKLSAgICAyMjIsIDEyOCwgMjI4LCAxMiwgMSwgMjQ1LCAyNTQsIDIyOCwgMTIsIDEsIDIxMiwgMTQsIDIwOSwgMjMyLCAyMjgsIDEyLCAKLSAgICAxLCAyMjAsIDIzMywgMjI4LCAxMiwgMSwgMjQzLCAxMTMsIDIyOCwgMTIsIDEsIDEzNSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgCi0gICAgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIwOSwgNDgsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMjEsIDE5MSwgMjI4LCAxMiwgCi0gICAgMSwgMjQ4LCAyMywgMjI4LCAxMiwgMSwgMjE4LCA2OSwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIxMCwgMjExLCAyMjgsIDEyLCAKLSAgICAxLCAyMzksIDE4NywgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIxOCwgMTgxLCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjM5LCAKLSAgICAxODcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMDIsIDI0NywgMjI4LCAxMiwgMSwgCi0gICAgMjI3LCA1MCwgMjI3LCAxMDcsIDIyOCwgMTIsIDEsIDIyNywgNTAsIDIyNywgMTIsIDIyOCwgMTIsIDEsIDIwNCwgMCwgMjI4LCAKLSAgICAxMiwgMSwgMjEyLCAxNCwgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgNzgsIAotICAgIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMDksIDIzMiwgMjI4LCAxMiwgMjQxLCAxMDgsIDIyOCwgMTIsIDIyLCAyLCA2MywgCi0gICAgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMzAsIDQsIDIyOCwgMTIsIDIyLCAyLCAyNTIsIDI1LCAyMjgsIDEyLCAyMiwgCi0gICAgMiwgMjUwLCAyNDcsIDIyOCwgMTIsIDIyLCAyLCA3NSwgMjI4LCAxMiwgMjIsIDIsIDIzMSwgODMsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyMDMsIDEyNCwgMjI4LCAxMiwgMjIsIDIsIDIwMiwgMTY5LCAyMjgsIDEyLCAyMiwgMiwgNjgsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMjksIDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjcsIAotICAgIDQ5LCAyMjgsIDEyLCAyMTMsIDEzOCwgMiwgMjIwLCAyMzMsIDIyOCwgMTIsIDIyLCAyLCA3NCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDI0MSwgMTQ1LCAyMjgsIDEyLCAyMiwgMiwgNzgsIDIyOCwgMTIsIDIyLCAyLCAyNTAsIDgsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjgsIDEyLCAyMjksIDI3LCAyMjgsIDExMywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIAotICAgIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgNDcsIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgMiwgMjI4LCAxMiwgCi0gICAgMTQzLCAyMjUsIDE0MSwgMjQ3LCAxNiwgMjI4LCAxMiwgMjQ3LCA1OCwgODIsIDIyOCwgMTIsIDIyMiwgODEsIDIyOCwgMTIsIAotICAgIDE3LCAyMDIsIDg0LCAyMjgsIDEyLCAxNywgMTA1LCAyMjgsIDEyLCAxNywgMTA4LCAyMjgsIDEyLCAxNywgMTQ3LCAyMjgsIAotICAgIDEyLCAxNywgMTQ5LCAyMjgsIDEyLCAxNywgMTcwLCAyMjgsIDEyLCAxNywgMTk1LCAyMjgsIDEyLCAxNywgMjEzLCAxMTEsIAotICAgIDIyOCwgMTIsIDE3LCAxOTksIDIyOCwgMTIsIDE3LCAyMjIsIDYzLCAyMjgsIDEyLCAyMzYsIDEzNywgMjIxLCAxOTEsIDIyOCwgCi0gICAgMTIsIDIzNiwgMTM3LCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMjksIDExNywgMjM4LCAzOSwgMjI4LCAxMiwgMSwgMjI5LCAKLSAgICAxMTcsIDIyMCwgMjMzLCA3NywgNCwgMjIwLCAzOSwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDIwOCwgCi0gICAgMjYsIDYzLCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjU1LCAyMiwgMjE1LCAyMzIsIDI0OCwgMTY0LCAKLSAgICAxOTIsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMzcsIDIzMiwgMjA4LCA2LCAxOTIsIAotICAgIDc3LCAxMzEsIDgxLCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAxMzEsIDI0NiwgMTIsIDIwMywgMywgCi0gICAgMjI0LCAxNzMsIDIxMywgOTcsIDE5MiwgNzcsIDEzMSwgMjQ3LCAzNCwgMjAzLCAzLCAyMjQsIDE3MywgMjE4LCAxNzEsIAotICAgIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCA2LCAyMTMsIDgzLCAxOTIsIDc3LCAxMzEsIAotICAgIDIxNCwgMjA1LCAyMTMsIDgyLCA3NywgMTMxLCAyNDcsIDE5NiwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjQ4LCA0NSwgCi0gICAgMjEyLCAyMzgsIDIwMywgMywgMjI0LCAxNzIsIDc3LCAxMzEsIDIzMCwgMjQzLCAyMDgsIDUsIDc3LCAxMzEsIDI0NCwgNDQsIAotICAgIDIwOCwgNiwgMjQ3LCAxOTUsIDc3LCAxMzEsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMTMsIDgyLCA3NywgMTMxLCAKLSAgICAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIxNSwgMjU1LCAKLSAgICAyNDYsIDE1NiwgMjExLCAxODAsIDIxMywgODIsIDc3LCAxMzEsIDIxNiwgNjUsIDIzOCwgOSwgMjEzLCA4MiwgNzcsIDEzMSwgCi0gICAgMjQ3LCAzNCwgMjU1LCAyNiwgMjE1LCAxNDksIDIyNSwgMjEsIDE2MywgMjQ3LCA2MSwgNzcsIDEzMSwgMjM3LCAyMzIsIAotICAgIDIwOCwgNSwgNzcsIDIyNywgMzUsIDIsIDI0NiwgMTk3LCAyMTUsIDE0OCwgNzcsIDIyNywgMzUsIDIsIDIyNywgMTU5LCAKLSAgICAyMTUsIDE0OCwgNzcsIDI1MCwgNTUsIDIsIDIxMywgOTMsIDIzOCwgMTkzLCAyNTUsIDI3LCAyMTUsIDE0OCwgNzcsIDI1MCwgCi0gICAgNTUsIDIsIDI1NSwgMjQsIDE4NSwgNzcsIDI1MCwgNTUsIDIsIDIxNCwgMTc4LCAyMDgsIDAsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjQzLCAxMjcsIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDI0MywgMTI3LCAyMzcsIDIzMywgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMzgsIDE5MiwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyMjMsIDk5LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMTYsIDE2MCwgMjIzLCA5OCwgNzcsIDE3LCAKLSAgICAyMDIsIDg0LCA3NywgMTcsIDEwNSwgNzcsIDE3LCAxMDgsIDc3LCAxNywgMTQ3LCA3NywgMTcsIDE0OSwgNzcsIDE3LCAxNzAsIAotICAgIDc3LCAxNywgMTk1LCA3NywgMTcsIDIxMywgMTExLCA3NywgMTcsIDE5OSwgNzcsIDE3LCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgCi0gICAgMTA1LCA3NywgMTcsIDE2MiwgMTA4LCA3NywgMTcsIDE2MiwgMTQ3LCA3NywgMTcsIDE2MiwgMTQ5LCA3NywgMTcsIDE2MiwgCi0gICAgMTcwLCA3NywgMTcsIDE2MiwgMTk1LCA3NywgMTcsIDE2MiwgMjEzLCAxMTEsIDc3LCAxNywgMTYyLCAxOTksIDc3LCAxNywgCi0gICAgMTYyLCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgMjAyLCA4NCwgNzcsIDEzMSwgMjQ3LCAxOTgsIDIxNSwgMTQ4LCA3NywgMTMxLCAKLSAgICAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIyMCwgMjQ5LCAyMDIsIDE5LCA3NywgMTMxLCAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIAotICAgIDE0OSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMTMxLCAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIxMywgOTQsIAotICAgIDIxNSwgMTQ4LCA3NywgMTMxLCAyNDYsIDE3MSwgMjI0LCAxNzIsIDc3LCAxMzEsIDIwOCwgMjEsIDI1NSwgMjMsIDc3LCAKLSAgICAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxNzQsIDc3LCAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxODAsIAotICAgIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAxNzQsIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAKLSAgICAxODAsIDc3LCAyLCAyMDMsIDcyLCAyMDgsIDQsIDc3LCAyLCAyMjUsIDEwMSwgMjA4LCA0LCA3NywgMSwgMTczLCA3NywgMSwgCi0gICAgMjI5LCAxNDQsIDc3LCAxLCAyMzksIDgsIDc3LCAxLCAyMzgsIDExOSwgNzcsIDEsIDIyMiwgMjAzLCA3NywgMSwgMjQ3LCAKLSAgICA5MiwgNzcsIDEsIDI0NiwgMTk5LCA3NywgMSwgMjMwLCAxODEsIDc3LCAxLCAyMjEsIDExLCA3NywgMSwgMjA3LCAyNDEsIAotICAgIDc3LCAxLCAyMDcsIDIyOSwgNzcsIDEsIDI0NCwgMTIwLCA3NywgMSwgMjQ0LCAxMDQsIDc3LCAxLCAyMjEsIDIyNywgNzcsIAotICAgIDEsIDIxMCwgMjIsIDc3LCAxLCAyMDksIDEwOCwgNzcsIDEsIDI0NCwgMjEyLCA3NywgMSwgMjQ0LCAxLCA3NywgMSwgMjAxLCAKLSAgICAyMDEsIDc3LCAxLCAxODUsIDc3LCAxLCAyMTgsIDIwOCwgNzcsIDEsIDI0OSwgMzIsIDc3LCAxLCAyNDgsIDk4LCA3NywgMSwgCi0gICAgMTkyLCA3NywgMSwgMjA4LCAyMCwgNzcsIDEsIDIwOCwgMTAsIDc3LCAxLCAyNDEsIDI1NSwgNzcsIDEsIDI0MSwgMjQ5LCAKLSAgICA3NywgMSwgMjA0LCAxMTEsIDc3LCAxLCAyMDIsIDgwLCA3NywgMSwgMjAyLCAxMTYsIDc3LCAxLCAyNTUsIDI5LCA3NywgMSwgCi0gICAgMTk4LCA3NywgMSwgMjE2LCAyMjAsIDc3LCAxLCAyMjgsIDExMywgNzcsIDEsIDIxMywgOTAsIDc3LCAxLCAyMTEsIDE2NCwgCi0gICAgNzcsIDEsIDIxNSwgMzYsIDc3LCAxLCAxNTIsIDc3LCAxLCA2MywgNzcsIDEsIDIyOCwgMjIzLCA3NywgMSwgMjM5LCAyMjksIAotICAgIDIxNiwgMjIwLCA3NywgMSwgMjI5LCA0NywgNzcsIDEsIDIxNSwgMTg1LCA3NywgMjIsIDIsIDI1MiwgMjUsIDc3LCAyMiwgMiwgCi0gICAgNzUsIDc3LCAyMiwgMiwgMjMxLCA4MywgNzcsIDIyLCAyLCA2OCwgNzcsIDIyLCAyLCAyMDYsIDE3OCwgNzcsIDIyLCAyLCAKLSAgICAxMjUsIDE0NiwgNzcsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA3NywgMjIsIDIsIDEyNSwgMTU5LCA3NywgMjIsIDIsIDEyNSwgCi0gICAgMjI3LCA3OCwgNzcsIDIyLCAyLCA3NCwgNzcsIDIyLCAyLCAyNDEsIDE2MSwgNzcsIDIyLCAyLCA3OCwgNzcsIDIyLCAyLCAKLSAgICAyMjAsIDE4LCA3NywgMiwgMjE1LCAyMzgsIDIxMSwgMTEsIDIyMiwgMjA0LCAyMTUsIDIyNywgNzcsIDIsIDIxNSwgMjMyLCAKLSAgICAyNDgsIDE2MywgNzcsIDIyLCAyLCAyMTYsIDczLCA3NSwgNzcsIDIyLCAyLCAyMTYsIDczLCAyMzEsIDgzLCA3NywgMiwgCi0gICAgMjIwLCAyNDksIDIwMiwgMjAsIDIyMywgMTA3LCAyNDQsIDIxMiwgNzcsIDIsIDIxMiwgMjcsIDIyNywgMjM2LCA3NywgMTMxLCAKLSAgICAyMzcsIDEzOSwgNzcsIDEzMSwgMjE5LCAxMzIsIDc3LCAyLCAyMjcsIDIzOSwgMjE1LCAxNDgsIDc3LCAyLCAyMDMsIDc3LCAKLSAgICAyMTUsIDE0OCwgNzcsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCA3NywgMiwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIAotICAgIDIsIDIzNywgMjM2LCAyNDcsIDYyLCAyMTYsIDYzLCA3NywgMiwgMjM3LCAyMzYsIDIyNSwgMTQsIDIxNiwgNjMsIDc3LCAyLCAKLSAgICAyMzAsIDIzOSwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAyLCAyMjcsIDI0MCwgMjA4LCAyMSwgMjQ3LCA2MSwgCi0gICAgNzcsIDIxMCwgMjU0LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIzMCwgMjM5LCAyMjUsIDI0LCAKLSAgICAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDEsIDE3MywgNzcsIDIxMCwgMjU0LCAxLCAyMjksIDE0NCwgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMzksIDgsIDc3LCAyMTAsIDI1NCwgMSwgMjM4LCAxMTksIDc3LCAyMTAsIDI1NCwgMSwgMjIyLCAyMDMsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjQ3LCA5MiwgNzcsIDIxMCwgMjU0LCAxLCAyNDYsIDE5OSwgNzcsIDIxMCwgMjU0LCAxLCAyMzAsIDE4MSwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyMjEsIDExLCA3NywgMjEwLCAyNTQsIDEsIDIwNywgMjQxLCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDIwNywgMjI5LCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTIwLCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTA0LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDIyMSwgMjI3LCA3NywgMjEwLCAyNTQsIDEsIDIxMCwgMjIsIDc3LCAyMTAsIDI1NCwgMSwgMjA5LCAxMDgsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAyMTIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxLCA3NywgMjEwLCAyNTQsIDEsIDIwMSwgCi0gICAgMjAxLCA3NywgMjEwLCAyNTQsIDEsIDE4NSwgNzcsIDIxMCwgMjU0LCAxLCAyMTgsIDIwOCwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAyNDksIDMyLCA3NywgMjEwLCAyNTQsIDEsIDI0OCwgOTgsIDc3LCAyMTAsIDI1NCwgMSwgMTkyLCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDIwOCwgMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjA4LCAxMCwgNzcsIDIxMCwgMjU0LCAxLCAyNDEsIDI1NSwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyNDEsIDI0OSwgNzcsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDIsIDgwLCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDIwMiwgMTE2LCA3NywgMjEwLCAyNTQsIDEsIDI1NSwgMjksIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMTk4LCA3NywgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCA3NywgMjEwLCAyNTQsIDEsIDIyOCwgMTEzLCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIxMywgOTAsIDc3LCAyMTAsIDI1NCwgMSwgMjExLCAxNjQsIDc3LCAyMTAsIDI1NCwgMSwgMjE1LCAzNiwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAxNTIsIDc3LCAyMTAsIDI1NCwgMSwgNjMsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAyMjMsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjM5LCAyMjksIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIzOSwgMjI5LCAxOTgsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjM5LCAyMjksIDIxNiwgMjIwLCA3NywgMjI4LCAyMTAsIDIxNSwgMTQ2LCAyMjksIDE0NCwgNzcsIDIyOCwgMjEwLCAKLSAgICAyMTUsIDE0NiwgMjI5LCAxNDUsIDI0NywgMTI4LCAyMjQsIDEyNiwgMjQ3LCA2MSwgNzcsIDI0NywgNDksIDIsIDc5LCAyNDgsIAotICAgIDE1NSwgNzcsIDI0NywgNDksIDIsIDE1NywgMjQ4LCAxNTUsIDc3LCAyNDcsIDQ5LCAyLCAyNDcsIDUwLCAyMDksIDE4NSwgCi0gICAgNzcsIDI0NywgNDksIDIsIDIxNCwgMjA0LCAyNTUsIDI4LCA3NywgMTYsIDI0MiwgNTUsIDI0NywgMTkzLCA3NywgMTYsIAotICAgIDIxNiwgMTU5LCAyMTUsIDIzOSwgNzcsIDE2LCAyMTksIDE1NSwgMjM4LCAxOTEsIDc3LCAxNiwgMjE2LCAxNTksIDIxNSwgCi0gICAgMjQwLCAyMTYsIDY1LCAyMzgsIDgsIDc3LCAxNiwgMjE4LCAxNzEsIDE4NSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTMsIAotICAgIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyMjAsIDIzOCwgMjU1LCAyNSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAKLSAgICAxOTQsIDIzNywgMjM0LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5NCwgMjQ3LCAxMjgsIDI1NSwgMjUsIAotICAgIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgMjE2LCAxNjAsIDI0MywgMTI2LCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIAotICAgIDIzNywgMjMzLCA3NywgMTMxLCAyNDcsIDE5NywgMjEyLCAyMzgsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgCi0gICAgMTMxLCAyMjQsIDg0LCAyMDMsIDMsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgMTMxLCAyMjAsIDIzOCwgMjA4LCAKLSAgICA1LCA3NywgMTMxLCA4MSwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAKLSAgICAxMzEsIDI0NiwgMTIsIDI0NywgMjIwLCAyMTUsIDIyOSwgMjAzLCAzLCAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCAyMTYsIAotICAgIDE1LCAyMTAsIDE3NCwgNTQsIDIyNywgMjIxLCAyMTAsIDE3NCwgNTQsIDIxNiwgMTUsIDIxMCwgMTc0LCAyLCAzLCAyNDMsIAotICAgIDgzLCAyMjcsIDIyMSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgODMsIDc3LCAxMzEsIDIyNywgMjMxLCAyMjUsIDI1LCAyMTUsIAotICAgIDE0OCwgNzcsIDEzMSwgMjA4LCAxMTIsIDIyNSwgMjUsIDIxNSwgMTQ4LCA2OSwgMSwgMTczLCA2OSwgMSwgMjI5LCAxNDQsIAotICAgIDY5LCAxLCAyMzksIDgsIDY5LCAxLCAyMzgsIDExOSwgNjksIDEsIDIyMiwgMjAzLCA2OSwgMSwgMjQ3LCA5MiwgNjksIDEsIAotICAgIDI0NiwgMTk5LCA2OSwgMSwgMjMwLCAxODEsIDY5LCAxLCAyMzAsIDE0OSwgNjksIDEsIDIyMSwgMTEsIDY5LCAxLCAyMjEsIAotICAgIDE5MywgNjksIDEsIDIwNywgMjQxLCA2OSwgMSwgMjA3LCAyMjksIDY5LCAxLCAyNDQsIDEyMCwgNjksIDEsIDI0NCwgMTA0LCAKLSAgICA2OSwgMSwgMjIxLCAyMjcsIDY5LCAxLCAyMTAsIDIyLCA2OSwgMSwgMjA5LCAxMDgsIDY5LCAxLCAyNDQsIDIxMiwgNjksIDEsIAotICAgIDI0NCwgMSwgNjksIDEsIDIwMSwgMjAxLCA2OSwgMSwgMTg1LCA2OSwgMSwgMjE4LCAyMDgsIDY5LCAxLCAyNDksIDMyLCA2OSwgCi0gICAgMSwgMjQ4LCA5OCwgNjksIDEsIDE5MiwgNjksIDEsIDE5OCwgNjksIDEsIDIxNiwgMjIwLCA2OSwgMSwgMjI4LCAxMTMsIDY5LCAKLSAgICAxLCAyMDQsIDExMSwgNjksIDEsIDIxNSwgMzYsIDY5LCAxLCAxNTIsIDY5LCAxLCAyMjcsIDc3LCA2OSwgMSwgNjMsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCA2MywgNjksIDEsIDc1LCA2OSwgMSwgMjMxLCA4MywgNjksIDEsIDY4LCA2OSwgMSwgMjA2LCAxNzgsIAotICAgIDY5LCAxLCA3NCwgNjksIDEsIDIyNCwgNTUsIDc0LCA2OSwgMSwgNzgsIDY5LCAxLCAyNTAsIDM0LCA2OSwgMjIsIDIsIDIwOSwgCi0gICAgMjM0LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDI1MiwgMjUsIDY5LCAyMiwgMiwgNzUsIDY5LCAyMiwgMiwgMjMxLCA4MywgNjksIAotICAgIDIyLCAyLCA2OCwgNjksIDIyLCAyLCAyMDYsIDE3OCwgNjksIDIyLCAyLCA3NCwgNjksIDIyLCAyLCAyNTEsIDY0LCA2OSwgCi0gICAgMjIsIDIsIDIyNCwgNTUsIDIzMSwgODMsIDY5LCAyMiwgMiwgMjI0LCA1NSwgNzgsIDY5LCAyMiwgMiwgMTg4LCA1NSwgNjksIAotICAgIDIsIDI1MCwgMTgwLCA2OSwgMiwgNzAsIDU2LCA2OSwgMiwgMjA1LCAxOTksIDY5LCAyLCAyMDUsIDIwNCwgNjksIDIsIDI1MCwgCi0gICAgNzksIDY5LCAxMDksIDIsIDE3NCwgMTk4LCA2OSwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA2OSwgMTA5LCAyLCAxNzQsIAotICAgIDIwNCwgMTExLCA2OSwgMTA5LCAyLCAxNzQsIDE1MiwgNjksIDEsIDIzNywgMjQ5LCAyMTUsIDM2LCA2OSwgMTcsIDIwMiwgCi0gICAgODQsIDY5LCAxNywgMTA1LCA2OSwgMTcsIDEwOCwgNjksIDE3LCAxNDcsIDY5LCAxNywgMTQ5LCA2OSwgMTcsIDE3MCwgNjksIAotICAgIDE3LCAxOTUsIDY5LCAxNywgMjEzLCAxMTEsIDY5LCAxNywgMTk5LCA2OSwgMTcsIDIyMiwgNjMsIDY5LCAyLCAyMjcsIDg2LCAKLSAgICAyMTQsIDE2NywgNjksIDIsIDIxNCwgMTY3LCA2OSwgMTYsIDIyNywgNDQsIDY5LCAxNiwgMjQ1LCAyMjcsIDY5LCAxNiwgCi0gICAgMjUxLCA4NSwgNjksIDE2LCAyMzgsIDE3NCwgNjksIDEsIDIxMywgOTAsIDY5LCAxLCAyMTEsIDE2NCwgNjksIDEsIDEyNSwgCi0gICAgMTQ2LCA2OSwgMSwgMTI1LCAyMTUsIDE4NiwgNjksIDEsIDEyNSwgMTU5LCA2OSwgMSwgMTI1LCAyMjcsIDc4LCA2OSwgMjIsIAotICAgIDIsIDEyNSwgMTQ2LCA2OSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDY5LCAyMiwgMiwgMTI1LCAxNTksIDY5LCAyMiwgMiwgCi0gICAgMTI1LCAyMjcsIDc4LCA2OSwgMSwgMjI0LCA1NSwgMjIyLCAyMDMsIDY5LCAxLCAyMjQsIDU1LCAyMzAsIDE0OSwgNjksIDEsIAotICAgIDIyNCwgNTUsIDI0OCwgMTk4LCA2OSwgMSwgMjI0LCA1NSwgMjQ4LCAxOTMsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgCi0gICAgMjAxLCAyMDEsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMTkyLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIDIyOCwgCi0gICAgMTEzLCA2OSwgMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIxMywgOTAsIDY5LCAyMiwgMiwgMjEzLCA5NiwgMjI5LCAyMzcsIAotICAgIDI0MCwgMjM4LCA2OSwgMTQzLCAxMzEsIDIxMywgOTYsIDIyOSwgMjM3LCAyMzcsIDc5LCA2OSwgMTQzLCAxMzEsIDIxMywgCi0gICAgOTYsIDIyOSwgMjM3LCAyMjksIDIwMiwgMjE4LCAxODAsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIAotICAgIDIwOSwgMTA4LCA2OSwgMSwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMTcsIDE1MiwgNjksIDIyLCAyLCAyMDQsIAotICAgIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDI0MCwgMjM4LCA2OSwgMjIsIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCi0gICAgMjA3LCAyNCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNjAsIDY5LCAyLCAyMDQsIDQ0LCAKLSAgICAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU5LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIAotICAgIDE1OCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTcsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIAotICAgIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjIxLCAyMjcsIAotICAgIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDIsIDE3NiwgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgCi0gICAgMjI5LCAyMzcsIDIzOCwgODQsIDY5LCAyMiwgMiwgMjM4LCAxODYsIDIyOSwgMjM3LCA3NSwgNjksIDIyLCAyLCAyMjksIAotICAgIDIwNywgMjIwLCA3MywgNjksIDIyLCAyLCAyMjksIDIwNywgNjgsIDY5LCAyMiwgMiwgMjI5LCAyMDcsIDI0MSwgMTYxLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgMTczLCA2OSwgMSwgMjEzLCA2NywgMjI5LCAxNDQsIDY5LCAxLCAyMTMsIDY3LCAyMzksIDgsIDY5LCAxLCAKLSAgICAyMTMsIDY3LCAyNDcsIDkyLCA2OSwgMSwgMjEzLCA2NywgMjAyLCAxMTYsIDY5LCAxLCAyMTMsIDY3LCAyMjEsIDExLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgMjQ0LCAyMTIsIDY5LCAxLCAyMTMsIDY3LCAyMDEsIDIwMSwgNjksIDEsIDIxMywgNjcsIDIxOCwgMjA4LCAKLSAgICA2OSwgMSwgMjEzLCA2NywgMjQwLCAxMDgsIDY5LCAxLCAyMTMsIDY3LCAyNDksIDMyLCA2OSwgMSwgMjEzLCA2NywgMjA5LCAKLSAgICAxMDgsIDY5LCAxLCAyMTMsIDY3LCAxNTIsIDY5LCAxMDksIDIsIDIxMywgNjcsIDE3NCwgMjA0LCAxMTEsIDY5LCAyMiwgMiwgCi0gICAgMjEzLCA2NywgMjUyLCAyNSwgNjksIDIyLCAyLCAyMTMsIDY3LCA3NCwgNjksIDIyLCAyLCAyMTMsIDY3LCAxODgsIDU1LCAKLSAgICA2OSwgMjIsIDIsIDIxMywgNjcsIDQ2LCAyMDMsIDEyNCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCAKLSAgICA2NywgMjA4LCAxNTgsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1NiwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU1LCA2OSwgMiwgCi0gICAgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU4LCA2OSwgMiwgCi0gICAgMjEzLCA2NywgMjQ1LCAxNTYsIDI0MSwgOTUsIDIwOCwgMTYxLCA2OSwgMSwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyNDAsIAotICAgIDEwOCwgNjksIDIsIDIxNSwgMTMwLCAyMTksIDEzOSwgMjA4LCAxNTYsIDY5LCAyMTMsIDY3LCAxNywgMjAyLCA4NCwgNjksIAotICAgIDIxMywgNjcsIDE3LCAxMDUsIDY5LCAyMTMsIDY3LCAxNywgMTA4LCA2OSwgMjEzLCA2NywgMTcsIDE0NywgNjksIDIxMywgCi0gICAgNjcsIDE3LCAxNDksIDY5LCAyMTMsIDY3LCAxNywgMTcwLCA2OSwgMjEzLCA2NywgMTcsIDE5NSwgNjksIDIxMywgNjcsIDE3LCAKLSAgICAyMTMsIDExMSwgNjksIDIxMywgNjcsIDE3LCAxOTksIDY5LCAyMTMsIDY3LCAxNywgMjIyLCA2MywgNjksIDIsIDIyOSwgCi0gICAgMTM3LCAyMDgsIDE2MCwgNjksIDIsIDIyOSwgMTM3LCAyMDgsIDE1OCwgNjksIDIyLCAyLCAyNTEsIDUxLCA2MywgNjksIDIyLCAKLSAgICAyLCAyNTEsIDUxLCAyNTEsIDY0LCA2OSwgMTYsIDIxMywgNjcsIDEwNSwgNjksIDE2LCAyMTMsIDY3LCAyNDAsIDIxMSwgCi0gICAgMTE0LCA2LCAxLCAyNTAsIDIzMSwgMTE0LCA2LCAxLCAyNDgsIDI0MiwgMTE0LCA2LCAxLCAyMzgsIDIzNCwgMTE0LCA2LCAxLCAKLSAgICAyNDMsIDkzLCAxMTQsIDYsIDEsIDI0MSwgOTIsIDExNCwgNiwgMSwgMjA1LCAyMTMsIDExNCwgNiwgMSwgMjAyLCA4NywgCi0gICAgMTE0LCA2LCAxLCAyMDksIDIzMCwgMTE0LCA2LCAxLCAyMzEsIDQ5LCAxMTQsIDYsIDEsIDIzMCwgNCwgMTE0LCA2LCAxLCAKLSAgICAyMjgsIDIsIDExNCwgNiwgMSwgMjI1LCAxMjIsIDExNCwgNiwgMSwgMjIzLCA3NCwgMTE0LCA2LCAxLCAyMjAsIDMxLCAxMTQsIAotICAgIDYsIDEsIDIxOSwgOTEsIDExNCwgNiwgMSwgMjAyLCA3NiwgMTE0LCA2LCAxLCAyMTYsIDIwMiwgMTE0LCA2LCAxLCAyMTQsIAotICAgIDI0MywgMTE0LCA2LCAxLCAyMDksIDIxOCwgMTE0LCA2LCAxLCAyMDYsIDI1NSwgMTE0LCA2LCAxLCAyMTgsIDIwMCwgMTE0LCAKLSAgICA2LCAxLCAyMjksIDEzMiwgMTE0LCA2LCAxLCAyMzgsIDExMCwgMTE0LCA2LCAxLCAyMTcsIDExMSwgMTE0LCA2LCAxLCAyMTIsIAotICAgIDI1NSwgMTE0LCA2LCAxLCAyNDYsIDEyOSwgMTE0LCA2LCAxLCAyNDcsIDYxLCAxMTQsIDYsIDEsIDIzMCwgMTMzLCAxMTQsIAotICAgIDYsIDEsIDI0NiwgNjgsIDExNCwgNiwgMSwgMjQ2LCAxODMsIDExNCwgNiwgMSwgMjAzLCAxODAsIDExNCwgNiwgMSwgMjMwLCAKLSAgICAxNDYsIDExNCwgNiwgMSwgMjM3LCAxNTQsIDExNCwgNiwgMSwgMjM3LCA2NywgMTE0LCA2LCAxLCAyMzYsIDI1NCwgMTE0LCAKLSAgICA2LCAxLCAyMDQsIDYyLCAxMTQsIDYsIDEsIDIzNywgOTIsIDExNCwgNiwgMSwgMjM2LCAxMzIsIDExNCwgNiwgMSwgMjAyLCAKLSAgICAyNDksIDExNCwgNiwgMSwgMjUxLCA5OCwgMTE0LCAxLCAyNTAsIDIzMSwgMTE0LCAxLCAyNDgsIDI0MiwgMTE0LCAxLCAyMzgsIAotICAgIDIzNCwgMTE0LCAxLCAyNDMsIDkzLCAxMTQsIDEsIDI0MSwgOTIsIDExNCwgMSwgMjA1LCAyMTMsIDExNCwgMSwgMjAyLCA4NywgCi0gICAgMTE0LCAxLCAyMDksIDIzMCwgMTE0LCAxLCAyMzEsIDQ5LCAxMTQsIDEsIDIzMCwgNCwgMTE0LCAxLCAyMjgsIDIsIDExNCwgCi0gICAgMSwgMjI1LCAxMjIsIDExNCwgMSwgMjIzLCA3NCwgMTE0LCAxLCAyMjAsIDMxLCAxMTQsIDEsIDIxOSwgOTEsIDExNCwgMSwgCi0gICAgMjAyLCA3NiwgMTE0LCAxLCAyMTYsIDIwMiwgMTE0LCAxLCAyMTQsIDI0MywgMTE0LCAxLCAyMDksIDIxOCwgMTE0LCAxLCAKLSAgICAyMDYsIDI1NSwgMTE0LCAxLCAyMTgsIDIwMCwgMTE0LCAxLCAyMjksIDEzMiwgMTE0LCAxLCAyMzgsIDExMCwgMTE0LCAxLCAKLSAgICAyMTcsIDExMSwgMTE0LCAxLCAyMTIsIDI1NSwgMTE0LCAxLCAyNDYsIDEyOSwgMTE0LCAxLCAyNDcsIDYxLCAxMTQsIDEsIAotICAgIDIzMCwgMTMzLCAxMTQsIDEsIDI0NiwgNjgsIDExNCwgMSwgMjQ2LCAxODMsIDExNCwgMSwgMjAzLCAxODAsIDExNCwgMSwgCi0gICAgMjMwLCAxNDYsIDExNCwgMSwgMjM3LCAxNTQsIDExNCwgMSwgMjM3LCA2NywgMTE0LCAxLCAyMzYsIDI1NCwgMTE0LCAxLCAKLSAgICAyMDQsIDYyLCAxMTQsIDEsIDIzNywgOTIsIDExNCwgMSwgMjM2LCAxMzIsIDExNCwgMSwgMjQwLCAyNiwgMTE0LCAxLCAyMDIsIAotICAgIDI0OSwgMTE0LCAxLCAyNDEsIDExMCwgMTE0LCAxLCAyMDcsIDE3NCwgMjM4LCAyMzQsIDExNCwgMSwgMjUxLCA1OSwgMTE0LCAKLSAgICAyMTksIDg5LCAyMTMsIDEzMCwgNjUsIDEsIDExNCwgMjIzLCA3NCwgMTE0LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDIzNywgOTEsIAotICAgIDU0LCAxMTQsIDEsIDIyOCwgMTA0LCA1NCwgMjgsIDEyMywgMjI5LCA1OSwgMjgsIDEyMywgMjExLCAxNTYsIDI4LCAxMjMsIAotICAgIDIyMiwgOTMsIDI4LCAxMjMsIDIwOCwgMjQwLCAyOCwgMTIzLCAyMTEsIDE0NSwgMjgsIDEyMywgMjE2LCA0NywgMjgsIDEyMywgCi0gICAgMjI0LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUzLCAyOCwgMTIzLCAyMTEsIDE1MywgMjgsIDEyMywgMjEyLCAxMTEsIDI4LCAKLSAgICAxMjMsIDIxMSwgMTUwLCAyOCwgMTIzLCAyMzEsIDEwNiwgMjgsIDEyMywgMjQ2LCA3NCwgMjgsIDEyMywgMjExLCAxNjAsIAotICAgIDI4LCAxMjMsIDI0NiwgMTM4LCAyOCwgMTIzLCAyMjksIDEyMCwgMjgsIDEyMywgMjA5LCA2NiwgMjgsIDEyMywgMjE4LCAKLSAgICAxOTAsIDI4LCAxMjMsIDIzNiwgMjUxLCAyOCwgMTIzLCAyMjIsIDg5LCAyOCwgMTIzLCAyMTEsIDE1NCwgMjgsIDEyMywgCi0gICAgMjIyLCA4MywgMjgsIDEyMywgMjIyLCA4NywgMjgsIDEyMywgMjA4LCAyMzcsIDI4LCAxMjMsIDIxNiwgMzUsIDI4LCAxMjMsIAotICAgIDIxMSwgMTUyLCAyOCwgMTIzLCAyMTYsIDQ1LCAyOCwgMTIzLCAyMjksIDI0MywgMjgsIDEyMywgMjI0LCAxMzQsIDI4LCAKLSAgICAxMjMsIDIyOSwgMjQ2LCAyOCwgMTIzLCAyMTgsIDE0OCwgMjgsIDEyMywgMjE4LCAxNDYsIDI4LCAxMjMsIDIxOCwgMTM0LCAKLSAgICAyOCwgMTIzLCAyMTgsIDE0MiwgMjgsIDEyMywgMjE4LCAxNDAsIDI4LCAxMjMsIDIxOCwgMTM3LCAyOCwgMTIzLCAyMTgsIAotICAgIDEzOSwgMjgsIDEyMywgMjE4LCAxMzYsIDI4LCAxMjMsIDIxOCwgMTQxLCAyOCwgMTIzLCAyMTgsIDE1MSwgMjgsIDEyMywgCi0gICAgMjE4LCAxNTIsIDI4LCAxMjMsIDIxOCwgMTM1LCAyOCwgMTIzLCAyMTgsIDE0NSwgMjgsIDEyMywgMjI5LCAyNDQsIDI4LCAKLSAgICAxMjMsIDIyOSwgMjQyLCAyOCwgMTIzLCAyMTIsIDEwNCwgMjgsIDEyMywgMjEyLCAxMDIsIDI4LCAxMjMsIDIxMiwgOTQsIAotICAgIDI4LCAxMjMsIDIxMiwgOTcsIDI4LCAxMjMsIDIxMiwgMTAzLCAyOCwgMTIzLCAyMTIsIDk5LCAyOCwgMTIzLCAyMTIsIDk4LCAKLSAgICAyOCwgMTIzLCAyMTIsIDk2LCAyOCwgMTIzLCAyMTIsIDEwNywgMjgsIDEyMywgMjEyLCAxMDksIDI4LCAxMjMsIDIxMiwgCi0gICAgMTEwLCAyOCwgMTIzLCAyMTIsIDEwNSwgMjgsIDEyMywgMjEyLCA5NSwgMjgsIDEyMywgMjEyLCAxMDAsIDI4LCAxMjMsIAotICAgIDIxMiwgMTA4LCAyOCwgMTIzLCAyNDYsIDEyMCwgMjgsIDEyMywgMjQ2LCAxMTgsIDI4LCAxMjMsIDI0NiwgMjEwLCAyOCwgCi0gICAgMTIzLCAyNDYsIDIwOCwgMjgsIDEyMywgMjE5LCAxMDcsIDI4LCAxMjMsIDIzMSwgMTAxLCAyOCwgMTIzLCAyMzEsIDkyLCAKLSAgICAyOCwgMTIzLCAyMzEsIDEwMCwgMjgsIDEyMywgMjMxLCA5NywgMjgsIDEyMywgMjMxLCA5NSwgMjgsIDEyMywgMjMxLCA5OSwgCi0gICAgMjgsIDEyMywgMjExLCAxNTcsIDI4LCAxMjMsIDIzMSwgMTA0LCAyOCwgMTIzLCAyMzEsIDEwNSwgMjgsIDEyMywgMjMxLCAKLSAgICA5MywgMjgsIDEyMywgMjMxLCA5OCwgMjgsIDEyMywgMjAzLCAyOSwgMjgsIDEyMywgMjQ2LCA3MywgMjgsIDEyMywgMjQ2LCAKLSAgICAxMjEsIDI4LCAxMjMsIDI0NiwgMTE5LCAyOCwgMTIzLCAyNDYsIDIxMSwgMjgsIDEyMywgMjQ2LCAyMDksIDI4LCAxMjMsIAotICAgIDI0NiwgMTM2LCAyOCwgMTIzLCAyNDYsIDEzNywgMjgsIDEyMywgMjQ2LCAxMjIsIDI4LCAxMjMsIDI0NiwgMjEyLCAyOCwgCi0gICAgMTIzLCAyMTgsIDE4OCwgMjgsIDEyMywgMjI5LCAyNDUsIDI4LCAxMjMsIDIxMSwgMTU4LCAyOCwgMTIzLCAyMDMsIDM1LCAKLSAgICAyOCwgMTIzLCAyMjksIDUwLCAyOCwgMTIzLCAyMjIsIDg1LCAyOCwgMTIzLCAyMjIsIDkxLCAyOCwgMTIzLCAyMjIsIDkwLCAKLSAgICAyOCwgMTIzLCAyMDgsIDIzNCwgMjgsIDEyMywgMjQwLCA3LCAyOCwgMTc2LCAyNDAsIDcsIDI4LCAxNzYsIDYzLCAyOCwgCi0gICAgMTc2LCAyNTEsIDEwOSwgMjgsIDE3NiwgMTk4LCAyOCwgMTc2LCAyMDMsIDk5LCAyOCwgMTc2LCAyNDEsIDU1LCAyOCwgMTc2LCAKLSAgICA3NCwgMjgsIDE3NiwgMjAzLCAzOSwgMjgsIDE3NiwgMjAzLCA1MiwgMjgsIDE3NiwgNzgsIDI4LCAxNzYsIDIwNCwgMTExLCAKLSAgICAyOCwgMTc2LCAyMDQsIDEwNywgMjgsIDE3NiwgMjIwLCA3MywgMjgsIDE3NiwgMjAyLCAyNDcsIDI4LCAxNzYsIDY4LCAyOCwgCi0gICAgMTc2LCAyMDQsIDQ4LCAyOCwgMTc2LCAyMDQsIDYyLCAyOCwgMTc2LCAyMDQsIDMwLCAyOCwgMTc2LCAyMDIsIDIxMywgMjgsIAotICAgIDE3NiwgMjQwLCAyMzgsIDI4LCAxNzYsIDIwMywgMTEsIDI4LCAxNzYsIDc1LCAyOCwgMTc2LCAyNTUsIDIwLCAyOCwgMTc2LCAKLSAgICAyNTUsIDE5LCAyOCwgMTc2LCAyMDMsIDExMywgMjgsIDE3NiwgMjAzLCAxMTEsIDI4LCAxNzYsIDI0MSwgNTMsIDI4LCAxNzYsIAotICAgIDI0MSwgNTIsIDI4LCAxNzYsIDI0MSwgNTQsIDI4LCAxNzYsIDIwMywgMzgsIDI4LCAxNzYsIDIwMywgMzcsIDI4LCAxNzYsIAotICAgIDIyMCwgMTgxLCAyOCwgMTc2LCAyMjAsIDE4MiwgMjgsIDE3NiwgMjIwLCAxNzUsIDI4LCAxNzYsIDIyMCwgMTgwLCAyOCwgCi0gICAgMTc2LCAyMjAsIDE3OCwgMjgsIDE3NiwgMjAyLCAyNDEsIDI4LCAxNzYsIDIwMiwgMjQwLCAyOCwgMTc2LCAyMDIsIDIzOSwgCi0gICAgMjgsIDE3NiwgMjAyLCAyNDIsIDI4LCAxNzYsIDIwMiwgMjQzLCAyOCwgMTc2LCAyMDcsIDk3LCAyOCwgMTc2LCAyMDcsIDk2LCAKLSAgICAyOCwgMTc2LCAyMDcsIDk0LCAyOCwgMTc2LCAyMDcsIDkwLCAyOCwgMTc2LCAyMDcsIDkxLCAyOCwgMTc2LCAyMDIsIDIxMiwgCi0gICAgMjgsIDE3NiwgMjAyLCAyMDksIDI4LCAxNzYsIDIwMiwgMjEwLCAyOCwgMTc2LCAyMDIsIDIwNCwgMjgsIDE3NiwgMjAyLCAKLSAgICAyMDUsIDI4LCAxNzYsIDIwMiwgMjA2LCAyOCwgMTc2LCAyMDIsIDIwOCwgMjgsIDE3NiwgMjQwLCAyMzIsIDI4LCAxNzYsIAotICAgIDI0MCwgMjM0LCAyOCwgMTc2LCAyMDMsIDEwLCAyOCwgMTc2LCAyMzUsIDIwNSwgMjgsIDE3NiwgMjM1LCAxOTcsIDI4LCAKLSAgICAxNzYsIDIzNSwgMjAwLCAyOCwgMTc2LCAyMzUsIDE5OCwgMjgsIDE3NiwgMjM1LCAyMDIsIDI4LCAxNzYsIDIzNSwgMjA0LCAKLSAgICAyOCwgMTc2LCAyNTAsIDEzNywgMjgsIDE3NiwgMjUwLCAxMzQsIDI4LCAxNzYsIDI1MCwgMTMyLCAyOCwgMTc2LCAyNTAsIAotICAgIDEzMywgMjgsIDE3NiwgMjExLCAxNjEsIDI4LCAxNzYsIDI1NSwgMjEsIDI4LCAxNzYsIDIwMywgMTEyLCAyOCwgMTc2LCAKLSAgICAyMDMsIDM2LCAyOCwgMTc2LCAyMjAsIDE3NywgMjgsIDE3NiwgMjIwLCAxNzYsIDI4LCAxMDcsIDIyOSwgNTksIDI4LCAxMDcsIAotICAgIDIxMSwgMTU2LCAyOCwgMTA3LCAyMjksIDUyLCAyOCwgMTA3LCAyMjIsIDkzLCAyOCwgMTA3LCAyMjIsIDkxLCAyOCwgMTA3LCAKLSAgICAyMjIsIDkwLCAyOCwgMTA3LCAyMDgsIDI0MCwgMjgsIDEwNywgMjE2LCA0NywgMjgsIDEwNywgMjE2LCA0MiwgMjgsIDEwNywgCi0gICAgMjE2LCAzOSwgMjgsIDEwNywgMjE2LCAzMiwgMjgsIDEwNywgMjE2LCAyNywgMjgsIDEwNywgMjE2LCAyMiwgMjgsIDEwNywgCi0gICAgMjE2LCAzMywgMjgsIDEwNywgMjE2LCA0NSwgMjgsIDEwNywgMjI0LCAxNDEsIDI4LCAxMDcsIDIxOCwgMTUzLCAyOCwgMTA3LCAKLSAgICAyMTgsIDE0MiwgMjgsIDEwNywgMjEyLCAxMTEsIDI4LCAxMDcsIDIxMSwgMTUwLCAyOCwgMTA3LCAyMzEsIDEwNiwgMjgsIAotICAgIDEwNywgMjQ2LCA3NCwgMjgsIDEwNywgMjQ2LCAxMzgsIDI4LCAxMDcsIDIyOSwgMTIwLCAyOCwgMTA3LCAyMDksIDY2LCAyOCwgCi0gICAgMTA3LCAyMTgsIDE5MCwgMjgsIDEwNywgMjM2LCAyNTEsIDI4LCAxMDcsIDIyOSwgNTMsIDI4LCAxMDcsIDIyOSwgNTEsIDI4LCAKLSAgICAxMDcsIDIyMiwgODksIDI4LCAxMDcsIDIyMiwgODMsIDI4LCAxMDcsIDIyMiwgODUsIDI4LCAxMDcsIDIyMiwgODgsIDI4LCAKLSAgICAxMDcsIDIyMiwgODQsIDI4LCAxMDcsIDIwOCwgMjM3LCAyOCwgMTA3LCAyMDgsIDIzNCwgMjgsIDEwNywgMjE2LCA0MCwgMjgsIAotICAgIDEwNywgMjE2LCAzNSwgMjgsIDEwNywgMjE2LCAyMSwgMjgsIDEwNywgMjE2LCAyMCwgMjgsIDEwNywgMjExLCAxNTIsIDI4LCAKLSAgICAxMDcsIDIxNiwgMzcsIDI4LCAxMDcsIDIxNiwgMzYsIDI4LCAxMDcsIDIxNiwgMjksIDI4LCAxMDcsIDIxNiwgMzEsIDI4LCAKLSAgICAxMDcsIDIxNiwgNDQsIDI4LCAxMDcsIDIxNiwgMjQsIDI4LCAxMDcsIDIxNiwgMzQsIDI4LCAxMDcsIDIxNiwgNDMsIDI4LCAKLSAgICAxMDcsIDIxNiwgMTksIDI4LCAxMDcsIDIyNCwgMTM3LCAyOCwgMTA3LCAyMjQsIDEzMiwgMjgsIDEwNywgMjI0LCAxMzQsIAotICAgIDI4LCAxMDcsIDIyNCwgMTMxLCAyOCwgMTA3LCAyMjQsIDEyOSwgMjgsIDEwNywgMjI0LCAxMzUsIDI4LCAxMDcsIDIyNCwgCi0gICAgMTQwLCAyOCwgMTA3LCAyMjQsIDEzOCwgMjgsIDEwNywgMjI5LCAyNDYsIDI4LCAxMDcsIDIxOCwgMTQ0LCAyOCwgMTA3LCAKLSAgICAyMTgsIDE0NSwgMjgsIDEwNywgMjE4LCAxNTAsIDI4LCAxMDcsIDIyOSwgMjQ0LCAyOCwgMTA3LCAyMTIsIDEwNCwgMjgsIAotICAgIDEwNywgMjEyLCA5NCwgMjgsIDEwNywgMjEyLCA5NywgMjgsIDEwNywgMjEyLCA5OSwgMjgsIDEwNywgMjE5LCAxMDcsIDI4LCAKLSAgICAxMDcsIDIzMSwgMTAxLCAyOCwgMTA3LCAyMzEsIDk0LCAyOCwgMTA3LCAyMTEsIDE1NywgMjgsIDEwNywgMjMxLCAxMDIsIAotICAgIDI4LCAxMDcsIDIwMywgMjksIDI4LCAxMDcsIDIwMywgMjUsIDI4LCAxMDcsIDIwMywgMjYsIDI4LCAxMDcsIDIxOCwgMTg4LCAKLSAgICAyOCwgMTA3LCAyMjksIDI0NSwgMjgsIDEwNywgMjM2LCAyNDksIDI4LCAxMDcsIDIzNiwgMjQ3LCAyOCwgMTA3LCAyMzYsIAotICAgIDI1MCwgMjgsIDEwNywgMjM2LCAyNDgsIDI4LCAxMDcsIDIwMywgMzUsIDI4LCAxMDcsIDIyOSwgNTUsIDI4LCAxMDcsIDIyOSwgCi0gICAgNTQsIDI4LCAxMDcsIDIyOSwgNTgsIDI4LCAxMDcsIDIyOSwgNTYsIDI4LCAxMDcsIDIyOSwgNTcsIDI4LCAxMDcsIDIxMSwgCi0gICAgMTU0LCAzMywgNCwgMTUyLCAzMywgNCwgMjM2LCAyNiwgMzMsIDQsIDIzNywgMywgMzMsIDQsIDIzNywgMTU3LCAzMywgNCwgCi0gICAgMjM3LCA0OCwgMzMsIDQsIDIzNywgNjcsIDMzLCA0LCAyMzYsIDEzNiwgMzMsIDQsIDIzNiwgMTM1LCAzMywgNCwgMjI4LCAKLSAgICAxMTMsIDMzLCA0LCAyMjYsIDIzOSwgMzMsIDQsIDIyNywgMTQ4LCAzMywgNCwgMjI4LCAxMTIsIDMzLCA0LCAyMjcsIDIyNiwgCi0gICAgMzMsIDQsIDIyNywgMjM0LCAzMywgNCwgMjI3LCA0OSwgMzMsIDQsIDIyNiwgMjA3LCAzMywgNCwgMjM3LCAxMiwgMzMsIDQsIAotICAgIDIzNywgNiwgMzMsIDQsIDIzNywgOCwgMzMsIDQsIDIzNywgMTEsIDMzLCA0LCAyMzcsIDksIDMzLCA0LCAyMzcsIDEwLCAzMywgCi0gICAgNCwgMjM3LCA3LCAzMywgNCwgMjM3LCA1LCAzMywgNCwgMTkyLCAzMywgNCwgMjIzLCAyNDYsIDMzLCA0LCAyMjQsIDE1NSwgCi0gICAgMzMsIDQsIDIyNSwgMTc1LCAzMywgNCwgMjI1LCA4LCAzMywgNCwgMjI1LCAyMCwgMzMsIDQsIDIyNCwgODIsIDMzLCA0LCAKLSAgICAyMjMsIDE4MCwgMzMsIDQsIDIxMCwgODAsIDMzLCA0LCAyMTAsIDc0LCAzMywgNCwgMjEwLCA3NiwgMzMsIDQsIDIxMCwgNzksIAotICAgIDMzLCA0LCAyMTAsIDc3LCAzMywgNCwgMjEwLCA3OCwgMzMsIDQsIDIxMCwgNzUsIDMzLCA0LCAyMTAsIDczLCAzMywgNCwgCi0gICAgMjE2LCAyMjAsIDMzLCA0LCAyMTUsIDE0NSwgMzMsIDQsIDIxNiwgNTcsIDMzLCA0LCAyMTYsIDIxNiwgMzMsIDQsIDIxNiwgCi0gICAgMTM1LCAzMywgNCwgMjE2LCAxNTgsIDMzLCA0LCAyMTUsIDIyNywgMzMsIDQsIDIxNSwgMTExLCAzMywgNCwgMjE1LCAzNiwgCi0gICAgMzMsIDQsIDIxMSwgMTAsIDMzLCA0LCAyMTIsIDE2MiwgMzMsIDQsIDIxNSwgMzMsIDMzLCA0LCAyMTQsIDE2NSwgMzMsIDQsIAotICAgIDIxNCwgMTc3LCAzMywgNCwgMjEyLCAxMywgMzMsIDQsIDIxMCwgMTcyLCAzMywgNCwgMjEzLCA5MCwgMzMsIDQsIDIxMiwgCi0gICAgMTk5LCAzMywgNCwgMjEzLCAxMSwgMzMsIDQsIDIxMywgODUsIDMzLCA0LCAyMTMsIDQxLCAzMywgNCwgMjEzLCA0MywgMzMsIAotICAgIDQsIDIxMiwgMjQyLCAzMywgNCwgMjEyLCAxODAsIDMzLCA0LCAyMTcsIDEyNiwgMzMsIDQsIDIxNywgNjUsIDMzLCA0LCAKLSAgICAyMTcsIDg4LCAzMywgNCwgMjE3LCAxMjUsIDMzLCA0LCAyMTcsIDEwNSwgMzMsIDQsIDIxNywgMTA2LCAzMywgNCwgMjE3LCAKLSAgICA3NywgMzMsIDQsIDIxNywgNzYsIDMzLCA0LCAyMTcsIDE5LCAzMywgNCwgMjE3LCAxNSwgMzMsIDQsIDIxNywgMTgsIDMzLCAKLSAgICA0LCAyMTcsIDE2LCAzMywgNCwgMjE3LCAxNywgMzMsIDQsIDIxNywgMTAyLCAzMywgNCwgMjE3LCA5NCwgMzMsIDQsIDIxNywgCi0gICAgOTcsIDMzLCA0LCAyMTcsIDEwMSwgMzMsIDQsIDIxNywgOTgsIDMzLCA0LCAyMTcsIDk5LCAzMywgNCwgMjE3LCA5NiwgMzMsIAotICAgIDQsIDIxNywgOTMsIDMzLCA0LCAyMTcsIDg5LCAzMywgNCwgMjE3LCA5MiwgMzMsIDQsIDIxNywgOTAsIDMzLCA0LCAyMTcsIAotICAgIDkxLCAzMywgNCwgMjQ5LCAzMiwgMzMsIDQsIDI0NywgMTkzLCAzMywgNCwgMjQ4LCA4NiwgMzMsIDQsIDI0OSwgMzAsIDMzLCAKLSAgICA0LCAyNDgsIDE1MCwgMzMsIDQsIDI0OCwgMTYyLCAzMywgNCwgMjQ4LCAyMywgMzMsIDQsIDI0NywgMTQyLCAzMywgNCwgCi0gICAgMjA2LCA4NiwgMzMsIDQsIDIwNCwgMTYzLCAzMywgNCwgMjA1LCAyMzAsIDMzLCA0LCAyMDYsIDg1LCAzMywgNCwgMjA2LCAKLSAgICA1MCwgMzMsIDQsIDIwNiwgNTUsIDMzLCA0LCAyMDUsIDE4OSwgMzMsIDQsIDIwNCwgMTU0LCAzMywgNCwgMjEwLCAyMiwgMzMsIAotICAgIDQsIDIwNywgMjAzLCAzMywgNCwgMjA5LCAyLCAzMywgNCwgMjEwLCAxOCwgMzMsIDQsIDIwOSwgMTc2LCAzMywgNCwgMjA5LCAKLSAgICAxODcsIDMzLCA0LCAxMzUsIDMzLCA0LCAyMDcsIDE2MCwgMzMsIDQsIDI0NywgOTIsIDMzLCA0LCAyNDUsIDExMCwgMzMsIDQsIAotICAgIDI0NiwgNzksIDMzLCA0LCAyNDcsIDkxLCAzMywgNCwgMjQ2LCAyMzAsIDMzLCA0LCAyNDYsIDIzOCwgMzMsIDQsIDI0NSwgCi0gICAgMjU0LCAzMywgNCwgMjQ1LCA3NCwgMzMsIDQsIDIwMywgMTgyLCAzMywgNCwgMjAzLCAxNTIsIDMzLCA0LCAyMDMsIDE3MCwgCi0gICAgMzMsIDQsIDIwMywgMTgxLCAzMywgNCwgMjAzLCAxNzUsIDMzLCA0LCAyMDMsIDE3NiwgMzMsIDQsIDIwMywgMTYwLCAzMywgCi0gICAgNCwgMjAzLCAxNTksIDMzLCA0LCAyMDMsIDE0NiwgMzMsIDQsIDIwMywgMTQyLCAzMywgNCwgMjAzLCAxNDUsIDMzLCA0LCAKLSAgICAyMDMsIDE0MywgMzMsIDQsIDIwMywgMTQ0LCAzMywgNCwgMjAxLCAyMDEsIDMzLCA0LCAyMjEsIDg0LCAzMywgNCwgMjIyLCAKLSAgICAxMDAsIDMzLCA0LCAyMjMsIDEwNiwgMzMsIDQsIDIyMiwgMjM1LCAzMywgNCwgMjIyLCAyNDAsIDMzLCA0LCAyMjEsIDE5MSwgCi0gICAgMzMsIDQsIDIyMSwgMjAsIDMzLCA0LCAyMjEsIDExLCAzMywgNCwgMjIwLCAyMjYsIDMzLCA0LCAyMjAsIDI0OCwgMzMsIDQsIAotICAgIDIyMSwgMTAsIDMzLCA0LCAyMjEsIDAsIDMzLCA0LCAyMjEsIDEsIDMzLCA0LCAyMjAsIDIzMywgMzMsIDQsIDIyMCwgMjE2LCAKLSAgICAzMywgNCwgMjM4LCA0NSwgNjMsIDMzLCA0LCAyMzgsIDQ1LCA2OCwgMzMsIDQsIDIzOCwgNDUsIDc1LCAzMywgNCwgMjM4LCAKLSAgICA0NSwgMjUyLCAyNSwgMzMsIDQsIDIzOCwgNDUsIDI0MSwgMTYxLCAzMywgNCwgMjM4LCA0NSwgNzQsIDMzLCA0LCAyMzgsIAotICAgIDQ1LCA3OCwgMzMsIDQsIDIzOCwgNDUsIDIwNCwgMTExLCAzMywgNCwgMTczLCAzMywgNCwgMjI4LCAyMDksIDMzLCA0LCAKLSAgICAyMjksIDEwMCwgMzMsIDQsIDIzMCwgNDEsIDMzLCA0LCAyMjksIDE5OCwgMzMsIDQsIDIyOSwgMjAxLCAzMywgNCwgMjI5LCAKLSAgICAyNiwgMzMsIDQsIDIyOSwgMjUsIDMzLCA0LCAyMjgsIDE2NywgMzMsIDQsIDIyOCwgMTYwLCAzMywgNCwgMjI4LCAxNjYsIAotICAgIDMzLCA0LCAyMjgsIDE2MSwgMzMsIDQsIDIyOCwgMTYyLCAzMywgNCwgMjI4LCAxNTMsIDMzLCA0LCAyMjgsIDE0NywgMzMsIAotICAgIDQsIDIyOCwgMTQ5LCAzMywgNCwgMjI4LCAxNTIsIDMzLCA0LCAyMjgsIDE1MCwgMzMsIDQsIDIyOCwgMTUxLCAzMywgNCwgCi0gICAgMjI4LCAxNDgsIDMzLCA0LCAyMjgsIDE0NiwgMzMsIDQsIDIyOCwgMTQyLCAzMywgNCwgMjI4LCAxNDUsIDMzLCA0LCAyMjgsIAotICAgIDE0MywgMzMsIDQsIDIyOCwgMTQ0LCAzMywgNCwgMjA0LCAxMTEsIDMzLCA0LCAyMDMsIDIxNywgMzMsIDQsIDIwNCwgMzAsIAotICAgIDMzLCA0LCAyMDQsIDExMCwgMzMsIDQsIDIwNCwgNTUsIDMzLCA0LCAyMDQsIDYyLCAzMywgNCwgMjA0LCAwLCAzMywgNCwgCi0gICAgMjAzLCAyNTUsIDMzLCA0LCAyMTgsIDE5OSwgNjMsIDMzLCA0LCAyMTgsIDE5OSwgNjgsIDMzLCA0LCAyMTgsIDE5OSwgNzUsIAotICAgIDMzLCA0LCAyMTgsIDE5OSwgMjUyLCAyNSwgMzMsIDQsIDIxOCwgMTk5LCAyNDEsIDE2MSwgMzMsIDQsIDIxOCwgMTk5LCA3NCwgCi0gICAgMzMsIDQsIDIxOCwgMTk5LCA3OCwgMzMsIDQsIDIwMiwgMTE2LCAzMywgNCwgMjAyLCA2LCAzMywgNCwgMjAyLCAzOSwgMzMsIAotICAgIDQsIDIwMiwgMTE0LCAzMywgNCwgMjAyLCA5MCwgMzMsIDQsIDIwMiwgOTIsIDMzLCA0LCAyMDIsIDE3LCAzMywgNCwgMjAxLCAKLSAgICAyNDksIDMzLCA0LCAyMDIsIDgwLCAzMywgNCwgMjAyLCA1NywgMzMsIDQsIDIwMiwgNjYsIDMzLCA0LCAyMDIsIDc5LCAzMywgCi0gICAgNCwgMjAyLCA3MCwgMzMsIDQsIDIwMiwgNzEsIDMzLCA0LCAyMDIsIDYzLCAzMywgNCwgMjAyLCA0OCwgMzMsIDQsIDE5OCwgCi0gICAgMzMsIDQsIDIwMiwgMjEzLCAzMywgNCwgMjAzLCAxMSwgMzMsIDQsIDIwMywgMTEwLCAzMywgNCwgMjAzLCA0OSwgMzMsIDQsIAotICAgIDIwMywgNTIsIDMzLCA0LCAyMDIsIDI0NywgMzMsIDQsIDIwMiwgMjM4LCAzMywgNCwgMjQ0LCAyMTIsIDMzLCA0LCAyNDIsIAotICAgIDQyLCAzMywgNCwgMjQzLCAyMzMsIDMzLCA0LCAyNDQsIDIxMSwgMzMsIDQsIDI0NCwgNjEsIDMzLCA0LCAyNDQsIDc1LCAzMywgCi0gICAgNCwgMjQzLCAxMTMsIDMzLCA0LCAyNDIsIDEwLCAzMywgNCwgMjQ0LCAxMjAsIDMzLCA0LCAyNDQsIDg1LCAzMywgNCwgMjQ0LCAKLSAgICA5NywgMzMsIDQsIDI0NCwgMTE5LCAzMywgNCwgMjQ0LCAxMDcsIDMzLCA0LCAyNDQsIDEwOCwgMzMsIDQsIDI0NCwgOTAsIAotICAgIDMzLCA0LCAyNDQsIDc2LCAzMywgNCwgMjMwLCAxODEsIDMzLCA0LCAyMzAsIDgyLCAzMywgNCwgMjMwLCAxNDEsIDMzLCA0LCAKLSAgICAyMzAsIDE4MCwgMzMsIDQsIDIzMCwgMTU5LCAzMywgNCwgMjMwLCAxNjEsIDMzLCA0LCAyMzAsIDEwMSwgMzMsIDQsIDIzMCwgCi0gICAgNjIsIDMzLCA0LCAyMzksIDgsIDMzLCA0LCAyMzcsIDIzMCwgMzMsIDQsIDIzOCwgODEsIDMzLCA0LCAyMzksIDUsIDMzLCA0LCAKLSAgICAyMzgsIDE4MiwgMzMsIDQsIDIzOCwgMTkwLCAzMywgNCwgMjM4LCAzOSwgMzMsIDQsIDIzOCwgMzgsIDMzLCA0LCAyMzcsIAotICAgIDE5MCwgMzMsIDQsIDIzNywgMTg2LCAzMywgNCwgMjM3LCAxODksIDMzLCA0LCAyMzcsIDE4NywgMzMsIDQsIDIzNywgMTg4LCAKLSAgICAzMywgNCwgMjM4LCAxNTUsIDMzLCA0LCAyMzgsIDEzNSwgMzMsIDQsIDIzOCwgMTQ1LCAzMywgNCwgMjM4LCAxNTQsIDMzLCAKLSAgICA0LCAyMzgsIDE0OSwgMzMsIDQsIDIzOCwgMTUwLCAzMywgNCwgMjM4LCAxMzksIDMzLCA0LCAyMzgsIDEyNCwgMzMsIDQsIAotICAgIDIwOSwgMTA4LCAzMywgNCwgMjA5LCAyMiwgMzMsIDQsIDIwOSwgNzAsIDMzLCA0LCAyMDksIDEwNywgMzMsIDQsIDIwOSwgCi0gICAgOTAsIDMzLCA0LCAyMDksIDkyLCAzMywgNCwgMjA5LCA0NywgMzMsIDQsIDIwOSwgMTMsIDMzLCA0LCAyNDYsIDE5OSwgMzMsIAotICAgIDQsIDI0NiwgOTgsIDMzLCA0LCAyNDYsIDE0MiwgMzMsIDQsIDI0NiwgMTk4LCAzMywgNCwgMjQ2LCAxNjYsIDMzLCA0LCAKLSAgICAyNDYsIDE3MCwgMzMsIDQsIDI0NiwgMTE2LCAzMywgNCwgMjQ2LCA4NywgMzMsIDQsIDIxOCwgMjA4LCAzMywgNCwgMjE4LCAKLSAgICAxNzMsIDMzLCA0LCAyMTgsIDE5MiwgMzMsIDQsIDIxOCwgMjA3LCAzMywgNCwgMjE4LCAxOTQsIDMzLCA0LCAyMTgsIDE5NSwgCi0gICAgMzMsIDQsIDIxOCwgMTgwLCAzMywgNCwgMjE4LCAxNjksIDMzLCA0LCAyMDgsIDIwLCAzMywgNCwgMjA3LCAyNDksIDMzLCA0LCAKLSAgICAyMDcsIDI1NSwgMzMsIDQsIDIwOCwgMTksIDMzLCA0LCAyMDgsIDEzLCAzMywgNCwgMjA4LCAxNCwgMzMsIDQsIDIwNywgCi0gICAgMjUzLCAzMywgNCwgMjA3LCAyNDcsIDMzLCA0LCAyMDcsIDEwNiwgMzMsIDQsIDIwNywgOTgsIDMzLCA0LCAyMDcsIDEwMiwgCi0gICAgMzMsIDQsIDIwNywgMTA1LCAzMywgNCwgMjA3LCAxMDMsIDMzLCA0LCAyMDcsIDEwNCwgMzMsIDQsIDIwNywgMTAwLCAzMywgCi0gICAgNCwgMjA3LCA5OSwgMzMsIDQsIDI0MCwgMTA4LCAzMywgNCwgMjM5LCAxMDgsIDMzLCA0LCAyNDAsIDI2LCAzMywgNCwgMjQwLCAKLSAgICAxMDcsIDMzLCA0LCAyNDAsIDUzLCAzMywgNCwgMjQwLCA2MCwgMzMsIDQsIDIzOSwgMTg2LCAzMywgNCwgMjM5LCA4NiwgMzMsIAotICAgIDQsIDE4NSwgMzMsIDQsIDIxNywgMTkxLCAzMywgNCwgMjE4LCAxNjcsIDMzLCA0LCAyMTksIDE2OCwgMzMsIDQsIDIxOSwgCi0gICAgMjMsIDMzLCA0LCAyMTksIDM0LCAzMywgNCwgMjE4LCA2OSwgMzMsIDQsIDIxNywgMTUyLCAzMywgNCwgMjE1LCAxMDEsIDMzLCAKLSAgICA0LCAyMjMsIDE2OSwgMzMsIDQsIDIzOSwgODAsIDMzLCAzOSwgMjM4LCAxNzksIDI1LCAyMiwgMjI3LCAxOTYsIDgyLCAzMywgCi0gICAgMzksIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAzOSwgMjM4LCAxNzksIDgyLCAzMywgMjE0LCAxNjgsIDgyLCAzMywgMjAzLCAKLSAgICAyMzcsIDMzLCAyMzksIDEwMiwgMjExLCA2MSwgMzMsIDI0NSwgMjMzLCAzMywgMjEzLCAxNDMsIDMzLCAyNDUsIDI0MiwgMzMsIAotICAgIDIxNywgMjQ2LCAyNDUsIDI0MiwgMzMsIDIxNywgNDcsIDgyLCAzMywgMjE5LCA4OSwgMjEzLCAxMzAsIDMzLCAxNywgMTA1LCAKLSAgICAzMywgMTcsIDEwOCwgMzMsIDE3LCAxNDcsIDMzLCAxNywgMTQ5LCAzMywgMTcsIDE3MCwgMzMsIDE3LCAxOTUsIDMzLCAxNywgCi0gICAgMjEzLCAxMTEsIDMzLCAxNywgMTk5LCAzMywgMTcsIDIyMiwgNjMsIDMzLCA0MiwgMjA5LCAxNTIsIDMzLCA0MiwgMjA3LCAKLSAgICAxNTEsIDMzLCA0MiwgMjA5LCA1MywgMzMsIDQyLCAyMzksIDE1MywgMzMsIDQyLCAyNDAsIDE4LCAzMywgNDIsIDIxMiwgNzQsIAotICAgIDMzLCA0MiwgMjEzLCAxMDUsIDMzLCA0MiwgMjQxLCAxMzQsIDMzLCA0MiwgMjIyLCA1OCwgMzMsIDQyLCAyMzYsIDExLCAzMywgCi0gICAgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAzMywgNCwgMjE0LCAxNzMsIDIyMywgMTgwLCAzMywgNCwgMjIzLCAxNzYsIDMzLCA0LCAKLSAgICAyMjMsIDE3NywgMzMsIDQsIDIyMywgMTc4LCAzMywgNCwgMjE0LCAxNzMsIDI0NywgMTQyLCAzMywgNCwgMjQ3LCAxMzksIAotICAgIDMzLCA0LCAyNDcsIDE0MCwgMzMsIDQsIDI0NywgMTQxLCAzMywgNCwgMjE0LCAxNzMsIDIzOSwgODYsIDMzLCA0LCAyMzksIAotICAgIDgyLCAzMywgNCwgMjM5LCA4MywgMzMsIDQsIDIzOSwgODQsIDMzLCA0LCAyMTQsIDE3MywgMjE3LCAxNTIsIDMzLCA0LCAKLSAgICAyMTcsIDE0OCwgMzMsIDQsIDIxNywgMTQ5LCAzMywgNCwgMjE3LCAxNTAsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMDIsIDI1MCwgCi0gICAgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NCwgMjIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAKLSAgICAyMTIsIDIyOCwgMjE2LCAyLCAzMywgMjA4LCAxNjIsIDEzMSwgMjQzLCAyMDcsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMjksIAotICAgIDE3OSwgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NiwgMTI0LCAzMywgMjA4LCAxNjIsIDEzMSwgMjM3LCAwLCAzMywgMjA4LCAKLSAgICAxNjIsIDEzMSwgMjQ0LCAyMSwgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOCwgMTgxLCA5MCwgMSwgNjMsIDkwLCAxLCA3NCwgOTAsIAotICAgIDEsIDc1LCA5MCwgMSwgNzgsIDkwLCAxLCA2OCwgOTAsIDEsIDIwNiwgMTY0LCA5MCwgMSwgMjM5LCA4LCA5MCwgMSwgMTczLCAKLSAgICA5MCwgMSwgMjM4LCAxOTAsIDkwLCAxLCAyMzgsIDgxLCA5MCwgMSwgMjM4LCAzOSwgOTAsIDEsIDIzNywgMjMwLCA5MCwgMSwgCi0gICAgMjM3LCAxOTIsIDkwLCAxLCAxNTIsIDkwLCAxLCAyMzcsIDY3LCA5MCwgMSwgMjM3LCAzLCA5MCwgMSwgMjM2LCAxMzYsIDkwLCAKLSAgICAxLCAyMzYsIDI2LCA5MCwgMSwgMjM1LCAyNTUsIDkwLCAxLCAyMjgsIDExMywgOTAsIDEsIDIyNywgMjM0LCA5MCwgMSwgCi0gICAgMjI3LCAxNDgsIDkwLCAxLCAyMjcsIDQ5LCA5MCwgMSwgMjI2LCAyMzksIDkwLCAxLCAyMjYsIDIwOCwgOTAsIDEsIDE5MiwgCi0gICAgOTAsIDEsIDIyNSwgMjAsIDkwLCAxLCAyMjQsIDE1NSwgOTAsIDEsIDIyNCwgODIsIDkwLCAxLCAyMjMsIDI0NiwgOTAsIDEsIAotICAgIDIwMSwgMjAxLCA5MCwgMSwgMjM2LCAxNjAsIDkwLCAxLCAyMjMsIDkzLCA5MCwgMSwgMjIyLCAyNDAsIDkwLCAxLCAyMjIsIAotICAgIDEwMCwgOTAsIDEsIDIyMSwgMTkxLCA5MCwgMSwgMjIxLCA4NCwgOTAsIDEsIDIyMSwgMjIsIDkwLCAxLCAyMTcsIDY0LCA5MCwgCi0gICAgMSwgMjE3LCA1MCwgOTAsIDEsIDIxNywgNDMsIDkwLCAxLCAyMTcsIDM0LCA5MCwgMSwgMjE3LCAyMywgOTAsIDEsIDIxNywgCi0gICAgMjEsIDkwLCAxLCAyMTUsIDM2LCA5MCwgMSwgMTk0LCA5MCwgMSwgMjE0LCAxNzcsIDkwLCAxLCAyMTIsIDE2MiwgOTAsIDEsIAotICAgIDIxMiwgMTMsIDkwLCAxLCAyMTEsIDEwLCA5MCwgMSwgMjEwLCAxNzcsIDkwLCAxLCAyNDQsIDIxMiwgOTAsIDEsIDIxMCwgCi0gICAgMjIsIDkwLCAxLCAyNDQsIDc1LCA5MCwgMSwgMjA5LCAxODcsIDkwLCAxLCAyNDMsIDIzMywgOTAsIDEsIDIwOSwgMiwgOTAsIAotICAgIDEsIDI0MywgMTEzLCA5MCwgMSwgMjQyLCA0MiwgOTAsIDEsIDI0MiwgMTMsIDkwLCAxLCAyNDMsIDEyNCwgOTAsIDEsIDIwOCwgCi0gICAgMTkwLCA5MCwgMSwgMjA4LCAxODksIDkwLCAxLCAyMDgsIDE3OCwgOTAsIDEsIDIwOCwgMTc3LCA5MCwgMSwgMjA4LCAxNzYsIAotICAgIDkwLCAxLCAyMDgsIDE3NSwgOTAsIDEsIDIwOCwgMjAsIDkwLCAxLCAyMDgsIDE0LCA5MCwgMSwgMjA3LCAyNTUsIDkwLCAxLCAKLSAgICAyMDcsIDI1MywgOTAsIDEsIDIwNywgMjQ5LCA5MCwgMSwgMjA3LCAyNDgsIDkwLCAxLCAyMDQsIDExMSwgOTAsIDEsIDIwNCwgCi0gICAgNjIsIDkwLCAxLCAyMDQsIDMwLCA5MCwgMSwgMjA0LCAwLCA5MCwgMSwgMjAzLCAyMTcsIDkwLCAxLCAyMDMsIDIwNCwgOTAsIAotICAgIDEsIDE5OCwgOTAsIDEsIDIwMywgNTIsIDkwLCAxLCAyMDMsIDExLCA5MCwgMSwgMjAyLCAyNDcsIDkwLCAxLCAyMDIsIDIxMywgCi0gICAgOTAsIDEsIDIwMiwgMTc3LCA5MCwgMSwgMjIzLCAxODcsIDkwLCA1LCAxLCAyMDMsIDUyLCA5MCwgNSwgMSwgMjAzLCAxMSwgCi0gICAgOTAsIDUsIDEsIDIwMiwgMjQ3LCA5MCwgNSwgMSwgMjAyLCAyMTMsIDkwLCA1LCAxLCAyMDIsIDE3NywgOTAsIDUsIDEsIAotICAgIDIyMywgMTg3LCAxOSwgMjAsIDIzNSwgMjIwLCAxOSwgMjAsIDc0LCAxOSwgMjAsIDI1MSwgMjQ1LCAxOSwgMjAsIDc1LCAxOSwgCi0gICAgMjAsIDIzMSwgODMsIDE5LCAyMCwgNzgsIDE5LCAyMCwgMjIwLCAxOCwgMTksIDIwLCAyMDMsIDEyMywgMjIwLCAxOCwgMTksIAotICAgIDIwLCA4OCwgMjQxLCAxNjEsIDE5LCAyMCwgODgsIDc1LCAxOSwgMjAsIDYzLCAxOSwgMjAsIDI1MiwgMjUsIDE5LCAyMCwgCi0gICAgMjA0LCA2MiwgMTksIDIwLCAxOTYsIDIwNCwgNjIsIDE5LCAyMCwgMjA0LCAzMCwgMTksIDIwLCAxOTYsIDIwNCwgMzAsIDE5LCAKLSAgICAyMCwgMjA0LCAxOSwgMTksIDIwLCAxOTYsIDIwNCwgMTksIDE5LCAyMCwgMjA0LCAwLCAxOSwgMjAsIDE5NiwgMjA0LCAwLCAKLSAgICAxOSwgMjAsIDIwMywgMjQ0LCAxOSwgMjAsIDE5NiwgMjAzLCAyNDQsIDE5LCAyMCwgMjIzLCA2OCwgMjAzLCAyNDQsIDE5LCAKLSAgICAyMCwgMjA0LCAxMTEsIDE5LCAyMCwgMTk2LCAyMDQsIDExMSwgMTksIDIwLCAyMDQsIDExMCwgMTksIDIwLCAxOTYsIDIwNCwgCi0gICAgMTEwLCAxOSwgMjAsIDIyMywgNjgsIDIwNCwgMTEwLCAxOSwgMjAsIDI1MSwgNjQsIDE5LCAyMCwgMjAzLCAxMjMsIDIwNCwgCi0gICAgMTQ0LCAxOSwgMjAsIDIzOCwgNDUsIDIxMSwgNjEsIDE5LCAyMCwgNDYsIDE2NSwgMTksIDIwLCA0NiwgMjM3LCAyNTMsIDE5LCAKLSAgICAyMCwgNDYsIDI0NywgMjQ4LCAxNjIsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMDgsIDE0NSwgMTYyLCAyMTUsIDI1MiwgMTksIAotICAgIDIwLCA0NiwgNTAsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCA1MiwgMTY1LCAxOSwgCi0gICAgMjAsIDQ2LCA1MiwgMjEyLCAyMjgsIDgwLCAyMTEsIDE5LCAxOSwgMjAsIDQ2LCAxMDEsIDI0MywgODUsIDE5LCAyMCwgNDYsIAotICAgIDIxMiwgMjI4LCAyMzYsIDEwNiwgOTUsIDE5LCAyMCwgNDYsIDIxOCwgNzYsIDE5LCAyMCwgNDYsIDEyMSwgMjEwLCAzLCAxOSwgCi0gICAgMjAsIDI0MSwgOTIsIDE5LCAyMCwgMjMxLCA0OSwgMTksIDIwLCAyMjAsIDMxLCAxOSwgMjAsIDI1MCwgMjMxLCAxOSwgMjAsIAotICAgIDIxOSwgMzQsIDE5LCAyMCwgMjE5LCAxNjYsIDE5LCAyMCwgMjE4LCAxNjcsIDE5LCAyMCwgMjE4LCAxMjksIDE5LCAyMCwgCi0gICAgMjE4LCA2OSwgMTksIDIwLCAyMTgsIDQ1LCAxOSwgMjAsIDIwMywgMTIzLCAyMTgsIDQ1LCAxOSwgMjAsIDg4LCAyMzcsIDQ4LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDMsIDE5LCAyMCwgMTg1LCAxOSwgMjAsIDIxOSwgMTY4LCAxOSwgMjAsIDIxNywgMTUwLCAxOSwgCi0gICAgMjAsIDE5NiwgMjE3LCAxNTAsIDE5LCAyMCwgMjE3LCAxNDgsIDE5LCAyMCwgMTk2LCAyMTcsIDE0OCwgMTksIDIwLCAyMTcsIAotICAgIDE0NywgMTksIDIwLCAxOTYsIDIxNywgMTQ3LCAxOSwgMjAsIDIxNywgMTQ1LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDUsIDE5LCAKLSAgICAyMCwgMjE3LCAxNDQsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NCwgMTksIDIwLCAyMTcsIDE1MiwgMTksIDIwLCAxOTYsIDIxNywgCi0gICAgMTUyLCAxOSwgMjAsIDIxNywgMTUxLCAxOSwgMjAsIDE5NiwgMjE3LCAxNTEsIDE5LCAyMCwgMjAzLCAxMjMsIDIxNywgMTUxLCAKLSAgICAxOSwgMjAsIDIxOSwgMTg0LCAxOSwgMjAsIDE5NiwgMjE5LCAxODQsIDE5LCAyMCwgODgsIDIzNywgMTcxLCAxOSwgMjAsIAotICAgIDIwOSwgMTg3LCAxOSwgMjAsIDIxMCwgMTYsIDE5LCAyMCwgMjA5LCAyLCAxOSwgMjAsIDIwOCwgMjQyLCAxOSwgMjAsIDEzNSwgCi0gICAgMTksIDIwLCAyMDgsIDE0OCwgMTksIDIwLCAyMDMsIDEyMywgMjA4LCAxNDgsIDE5LCAyMCwgODgsIDI0NCwgNjEsIDE5LCAKLSAgICAyMCwgODgsIDI0MywgMjMzLCAxOSwgMjAsIDIxMCwgMjIsIDE5LCAyMCwgMjEwLCAxOCwgMTksIDIwLCAyMDcsIDE1OCwgMTksIAotICAgIDIwLCAxOTYsIDIwNywgMTU4LCAxOSwgMjAsIDIwNywgMTQwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNDAsIDE5LCAyMCwgMjA3LCAKLSAgICAxMzksIDE5LCAyMCwgMTk2LCAyMDcsIDEzOSwgMTksIDIwLCAxMDgsIDE5LCAyMCwgMTk2LCAxMDgsIDE5LCAyMCwgMjA3LCAKLSAgICAxMzAsIDE5LCAyMCwgMTk2LCAyMDcsIDEzMCwgMTksIDIwLCAyMDcsIDE2MCwgMTksIDIwLCAxOTYsIDIwNywgMTYwLCAxOSwgCi0gICAgMjAsIDIwNywgMTU5LCAxOSwgMjAsIDE5NiwgMjA3LCAxNTksIDE5LCAyMCwgMjIzLCA2OCwgMjA3LCAxNTksIDE5LCAyMCwgCi0gICAgMjEwLCA2OSwgMTksIDIwLCAyMDcsIDIzNiwgMTksIDIwLCAyMDcsIDIyMCwgMTksIDIwLCAyMDcsIDIxOCwgMTksIDIwLCAKLSAgICAyMDcsIDI0MSwgMTksIDIwLCAyMjksIDIwMSwgMTksIDIwLCAyMzAsIDM2LCAxOSwgMjAsIDIyOSwgMTAwLCAxOSwgMjAsIAotICAgIDIyOSwgODcsIDE5LCAyMCwgMjI5LCAyNiwgMTksIDIwLCAyMjksIDYsIDE5LCAyMCwgMjAzLCAxMjMsIDIyOSwgNiwgMTksIAotICAgIDIwLCAxNzMsIDE5LCAyMCwgMjMwLCA0MSwgMTksIDIwLCAyMjgsIDE2MiwgMTksIDIwLCAxOTYsIDIyOCwgMTYyLCAxOSwgCi0gICAgMjAsIDIyOCwgMTYwLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjAsIDE5LCAyMCwgMjI4LCAxNTksIDE5LCAyMCwgMTk2LCAyMjgsIAotICAgIDE1OSwgMTksIDIwLCAyMjgsIDE1NywgMTksIDIwLCAxOTYsIDIyOCwgMTU3LCAxOSwgMjAsIDIyOCwgMTU2LCAxOSwgMjAsIAotICAgIDE5NiwgMjI4LCAxNTYsIDE5LCAyMCwgMjI4LCAxNjcsIDE5LCAyMCwgMTk2LCAyMjgsIDE2NywgMTksIDIwLCAyMjgsIDE2NiwgCi0gICAgMTksIDIwLCAxOTYsIDIyOCwgMTY2LCAxOSwgMjAsIDIyMywgNjgsIDIyOCwgMTY2LCAxOSwgMjAsIDIzMCwgNTQsIDE5LCAKLSAgICAyMCwgMjI4LCAxNjgsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgMTkxLCAxOSwgMjAsIDIxMSwgMjM3LCAyMjksIDg4LCAxOSwgCi0gICAgMjAsIDIxMSwgMjM3LCAyMjksIDIwLCAxOSwgMjAsIDIxMSwgMjM3LCAyMzAsIDIwLCAxOSwgMjAsIDI0NiwgMjM4LCAxOSwgCi0gICAgMjAsIDI0NywgOTAsIDE5LCAyMCwgMjQ2LCA3OSwgMTksIDIwLCAyNDYsIDY5LCAxOSwgMjAsIDI0NSwgMjU0LCAxOSwgMjAsIAotICAgIDI0NSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyNDUsIDE4MCwgMTksIDIwLCAyNDcsIDkyLCAxOSwgMjAsIDI0NywgOTEsIAotICAgIDE5LCAyMCwgMjQ1LCA3MiwgMTksIDIwLCAxOTYsIDI0NSwgNzIsIDE5LCAyMCwgMjQ1LCA3MCwgMTksIDIwLCAxOTYsIDI0NSwgCi0gICAgNzAsIDE5LCAyMCwgMjQ1LCA2OSwgMTksIDIwLCAxOTYsIDI0NSwgNjksIDE5LCAyMCwgMjQ1LCA2OCwgMTksIDIwLCAxOTYsIAotICAgIDI0NSwgNjgsIDE5LCAyMCwgMjQ1LCA2NywgMTksIDIwLCAxOTYsIDI0NSwgNjcsIDE5LCAyMCwgMjQ1LCA3NCwgMTksIDIwLCAKLSAgICAxOTYsIDI0NSwgNzQsIDE5LCAyMCwgMjQ1LCA3MywgMTksIDIwLCAxOTYsIDI0NSwgNzMsIDE5LCAyMCwgMjIzLCA2OCwgCi0gICAgMjQ1LCA3MywgMTksIDIwLCAyNDcsIDEyNSwgMTksIDIwLCAyMTQsIDIwNiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI1LCAyMCwgCi0gICAgMTksIDIwLCAyMjUsIDE3NCwgMTksIDIwLCAyMjQsIDE1NSwgMTksIDIwLCAyMjQsIDEyNSwgMTksIDIwLCAyMjQsIDgyLCAKLSAgICAxOSwgMjAsIDIyNCwgMzUsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNCwgMzUsIDE5LCAyMCwgMTkyLCAxOSwgMjAsIDIyNSwgCi0gICAgMTc1LCAxOSwgMjAsIDIyMywgMTc4LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzgsIDE5LCAyMCwgMjIzLCAxNzYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjMsIDE3NiwgMTksIDIwLCAyMjMsIDE3NSwgMTksIDIwLCAxOTYsIDIyMywgMTc1LCAxOSwgMjAsIDIyMywgMTc0LCAKLSAgICAxOSwgMjAsIDE5NiwgMjIzLCAxNzQsIDE5LCAyMCwgMjIzLCAxNzMsIDE5LCAyMCwgMTk2LCAyMjMsIDE3MywgMTksIDIwLCAKLSAgICAyMjMsIDE4MCwgMTksIDIwLCAxOTYsIDIyMywgMTgwLCAxOSwgMjAsIDIyMywgMTc5LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzksIAotICAgIDE5LCAyMCwgMjIzLCA2OCwgMjIzLCAxNzksIDE5LCAyMCwgMjI2LCAxODUsIDE5LCAyMCwgMTk2LCAyMjYsIDE4NSwgMTksIAotICAgIDIwLCAyMjQsIDE1OSwgMTksIDIwLCAyNTAsIDQ4LCAyMjYsIDE4NSwgMTksIDIwLCAyMTQsIDIwNiwgMjI2LCAxODUsIDE5LCAKLSAgICAyMCwgMjIyLCAyNDAsIDE5LCAyMCwgMjIzLCAxMDUsIDE5LCAyMCwgMjIyLCAxMDAsIDE5LCAyMCwgMjIyLCA3NSwgMTksIAotICAgIDIwLCAyMjEsIDE5MSwgMTksIDIwLCAyMjEsIDE4MCwgMTksIDIwLCAyMDMsIDEyMywgMjIxLCAxODAsIDE5LCAyMCwgMjAxLCAKLSAgICAyMDEsIDE5LCAyMCwgMjIzLCAxMDYsIDE5LCAyMCwgMjIxLCAxOCwgMTksIDIwLCAxOTYsIDIyMSwgMTgsIDE5LCAyMCwgCi0gICAgMjIxLCAyMCwgMTksIDIwLCAxOTYsIDIyMSwgMjAsIDE5LCAyMCwgMjIxLCAxOSwgMTksIDIwLCAxOTYsIDIyMSwgMTksIDE5LCAKLSAgICAyMCwgMjIzLCA2OCwgMjIxLCAxOSwgMTksIDIwLCAyMjMsIDE2MywgMTksIDIwLCA4OCwgMjIyLCAyMDUsIDE5LCAyMCwgCi0gICAgMjIyLCAxMDUsIDE5LCAyMCwgMjI3LCAyMzQsIDE5LCAyMCwgMjI4LCAxMTEsIDE5LCAyMCwgMjI3LCAxNDgsIDE5LCAyMCwgCi0gICAgMjI3LCAxMzAsIDE5LCAyMCwgMjI3LCA0OSwgMTksIDIwLCAyMjcsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjcsIDE4LCAKLSAgICAxOSwgMjAsIDIyOCwgMTEzLCAxOSwgMjAsIDIyOCwgMTEyLCAxOSwgMjAsIDIyNiwgMjA1LCAxOSwgMjAsIDE5NiwgMjI2LCAKLSAgICAyMDUsIDE5LCAyMCwgMjI2LCAyMDQsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNCwgMTksIDIwLCAyMjYsIDIwMywgMTksIDIwLCAKLSAgICAxOTYsIDIyNiwgMjAzLCAxOSwgMjAsIDIyNiwgMjAyLCAxOSwgMjAsIDE5NiwgMjI2LCAyMDIsIDE5LCAyMCwgMjI2LCAyMDEsIAotICAgIDE5LCAyMCwgMTk2LCAyMjYsIDIwMSwgMTksIDIwLCAyMjYsIDIwNywgMTksIDIwLCAxOTYsIDIyNiwgMjA3LCAxOSwgMjAsIAotICAgIDIyNiwgMjA2LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDYsIDE5LCAyMCwgMTU5LCAxOSwgMjAsIDE5NiwgMTU5LCAxOSwgMjAsIAotICAgIDE3NCwgMTU5LCAxOSwgMjAsIDIxNCwgMTc3LCAxOSwgMjAsIDIxNSwgMzEsIDE5LCAyMCwgMjEyLCAxNjIsIDE5LCAyMCwgCi0gICAgMjEyLCAxNDIsIDE5LCAyMCwgMjEyLCAxMywgMTksIDIwLCAyMTEsIDI1MCwgMTksIDIwLCAyMDMsIDEyMywgMjExLCAyNTAsIAotICAgIDE5LCAyMCwgMjE1LCAzNiwgMTksIDIwLCAyMTUsIDMzLCAxOSwgMjAsIDIxMCwgMTY4LCAxOSwgMjAsIDE5NiwgMjEwLCAKLSAgICAxNjgsIDE5LCAyMCwgMjEwLCAxNjIsIDE5LCAyMCwgMTk2LCAyMTAsIDE2MiwgMTksIDIwLCAyMTAsIDE2MSwgMTksIDIwLCAKLSAgICAxOTYsIDIxMCwgMTYxLCAxOSwgMjAsIDIxMCwgMTU3LCAxOSwgMjAsIDE5NiwgMjEwLCAxNTcsIDE5LCAyMCwgMjEwLCAxNTYsIAotICAgIDE5LCAyMCwgMTk2LCAyMTAsIDE1NiwgMTksIDIwLCAyMTAsIDE3MiwgMTksIDIwLCAxOTYsIDIxMCwgMTcyLCAxOSwgMjAsIAotICAgIDIxMCwgMTcxLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzEsIDE5LCAyMCwgMjIzLCA2OCwgMjEwLCAxNzEsIDE5LCAyMCwgMTk0LCAKLSAgICAxOSwgMjAsIDI1MCwgNDgsIDE5NCwgMTksIDIwLCAyMTAsIDE3MywgMTksIDIwLCAyNDgsIDQwLCAxOTQsIDE5LCAyMCwgCi0gICAgMjI0LCAyOCwgMjEyLCA3MCwgMTksIDIwLCAyMjMsIDY4LCAyMTIsIDYxLCAxOSwgMjAsIDIyMywgNjgsIDIxNSwgOTIsIDE5LCAKLSAgICAyMCwgMjIzLCA2OCwgMjExLCAxNzksIDE5LCAyMCwgMjIzLCA2OCwgMjExLCAxMywgMTksIDIwLCAyMjMsIDY4LCAyMTIsIAotICAgIDYwLCAxOSwgMjAsIDIyMywgNjgsIDIxNCwgMTgwLCAxOSwgMjAsIDIxMywgNDMsIDE5LCAyMCwgMjEzLCAxMSwgMTksIDIwLCAKLSAgICAyMTMsIDYsIDE5LCAyMCwgMjEyLCAyNDIsIDE5LCAyMCwgMjEyLCAyMzYsIDE5LCAyMCwgMjEzLCA5MCwgMTksIDIwLCAyMTMsIAotICAgIDg1LCAxOSwgMjAsIDIxMiwgMTc3LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzcsIDE5LCAyMCwgMjEyLCAxNzYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMTIsIDE3NiwgMTksIDIwLCAyMTIsIDE3NSwgMTksIDIwLCAxOTYsIDIxMiwgMTc1LCAxOSwgMjAsIDIxMiwgMTc0LCAKLSAgICAxOSwgMjAsIDE5NiwgMjEyLCAxNzQsIDE5LCAyMCwgMjEyLCAxNzMsIDE5LCAyMCwgMTk2LCAyMTIsIDE3MywgMTksIDIwLCAKLSAgICAyMTIsIDE4MCwgMTksIDIwLCAxOTYsIDIxMiwgMTgwLCAxOSwgMjAsIDIxMiwgMTc5LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzksIAotICAgIDE5LCAyMCwgMjEzLCA5MiwgMTksIDIwLCAyMDMsIDUyLCAxOSwgMjAsIDIwMywgMTA4LCAxOSwgMjAsIDIwMywgMTEsIDE5LCAKLSAgICAyMCwgMjAzLCAyLCAxOSwgMjAsIDIwMiwgMjQ3LCAxOSwgMjAsIDIwMiwgMjMyLCAxOSwgMjAsIDIwMywgMTIzLCAyMDIsIAotICAgIDIzMiwgMTksIDIwLCAxOTgsIDE5LCAyMCwgMjAzLCAxMTAsIDE5LCAyMCwgMjAyLCAxNzQsIDE5LCAyMCwgMTk2LCAyMDIsIAotICAgIDE3NCwgMTksIDIwLCAyMDIsIDE3MywgMTksIDIwLCAxOTYsIDIwMiwgMTczLCAxOSwgMjAsIDIwMiwgMTcyLCAxOSwgMjAsIAotICAgIDE5NiwgMjAyLCAxNzIsIDE5LCAyMCwgMjAyLCAxNzEsIDE5LCAyMCwgMTk2LCAyMDIsIDE3MSwgMTksIDIwLCAyMDIsIDE3MCwgCi0gICAgMTksIDIwLCAxOTYsIDIwMiwgMTcwLCAxOSwgMjAsIDIwMiwgMTc2LCAxOSwgMjAsIDE5NiwgMjAyLCAxNzYsIDE5LCAyMCwgCi0gICAgMjAyLCAxNzUsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NSwgMTksIDIwLCAyMjMsIDY4LCAyMDIsIDE3NSwgMTksIDIwLCAyMDMsIAotICAgIDEyNCwgMTksIDIwLCAyNDgsIDg0LCAyMDMsIDEyNCwgMTksIDIwLCAxOTYsIDIwMywgMTI0LCAxOSwgMjAsIDIxNCwgMjA2LCAKLSAgICAyMDMsIDExLCAxOSwgMjAsIDIxNiwgMTU4LCAxOSwgMjAsIDIxNywgMCwgMjE2LCAxNTgsIDE5LCAyMCwgMTk2LCAyMjcsIAotICAgIDIzNCwgMTksIDIwLCAyMTYsIDIxNSwgMTksIDIwLCAyMTYsIDU3LCAxOSwgMjAsIDIxNiwgMywgMTksIDIwLCAyMTUsIDIyNywgCi0gICAgMTksIDIwLCAyMTUsIDIwOCwgMTksIDIwLCAxOTYsIDIyNywgNDksIDE5LCAyMCwgMjE2LCAyMjAsIDE5LCAyMCwgMjE2LCAKLSAgICAyMTYsIDE5LCAyMCwgMTk2LCAyMjgsIDExMywgMTksIDIwLCAyMTUsIDExMCwgMTksIDIwLCAxOTYsIDIxNSwgMTEwLCAxOSwgCi0gICAgMjAsIDE0NiwgMTksIDIwLCAxOTYsIDE0NiwgMTksIDIwLCAxNzQsIDE0NiwgMTksIDIwLCAyNDAsIDYwLCAxOSwgMjAsIAotICAgIDI0MCwgMTA1LCAxOSwgMjAsIDI0MCwgMjYsIDE5LCAyMCwgMjQwLCAxMiwgMTksIDIwLCAyMzksIDE4NiwgMTksIDIwLCAKLSAgICAyMzksIDE3NSwgMTksIDIwLCAyNDAsIDEwOCwgMTksIDIwLCAyNDAsIDEwNywgMTksIDIwLCAyMzksIDg1LCAxOSwgMjAsIAotICAgIDE5NiwgMjM5LCA4NSwgMTksIDIwLCAyNDAsIDE3NCwgMTksIDIwLCAyMDksIDkyLCAxOSwgMjAsIDIyMywgMTYxLCAyMDksIAotICAgIDkyLCAxOSwgMjAsIDIwOSwgNzAsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCA2NCwgMTksIDIwLCAKLSAgICAyMjMsIDE2MSwgMjA5LCA2NCwgMTksIDIwLCAyMDksIDQ3LCAxOSwgMjAsIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDgsIAotICAgIDE5LCAyMCwgMjA5LCAxMDcsIDE5LCAyMCwgMjA5LCAxMiwgMTksIDIwLCAxOTYsIDIwOSwgMTIsIDE5LCAyMCwgMjA5LCAKLSAgICAxMTAsIDE5LCAyMCwgMjA3LCAyMjcsIDE5LCAyMCwgMjA3LCAyMjUsIDE5LCAyMCwgMjA3LCAyMjQsIDE5LCAyMCwgMjA3LCAKLSAgICAyMjksIDE5LCAyMCwgMjA3LCAyMzAsIDE5LCAyMCwgMjA3LCAxMjQsIDE5LCAyMCwgMjA3LCAxMjMsIDE5LCAyMCwgMjA3LCAKLSAgICAxMjIsIDE5LCAyMCwgMjA3LCAxMjYsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCA2NywgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDMsIAotICAgIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAyMzksIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAxMzYsIDE5LCAyMCwgMjIxLCAzOSwgCi0gICAgMjM2LCAxMTcsIDE5LCAyMCwgMjIxLCAzOSwgMTUyLCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMTU3LCAxOSwgMjAsIDIyMSwgCi0gICAgMzksIDIzNywgMTcxLCAxOSwgMjAsIDIyMSwgMzgsIDIzNywgMTcxLCAxOSwgMjAsIDIzNiwgMjI2LCAxOSwgMjAsIDIxNywgCi0gICAgMTIyLCAxOSwgMjAsIDIxNywgODgsIDE5LCAyMCwgMjE3LCA4MywgMTksIDIwLCAyMTcsIDc3LCAxOSwgMjAsIDIxNywgNzIsIAotICAgIDE5LCAyMCwgMjE3LCAxMjYsIDE5LCAyMCwgMjE3LCAxMjUsIDE5LCAyMCwgMjE3LCAxMzQsIDE5LCAyMCwgMjA4LCAxODYsIAotICAgIDE5LCAyMCwgMjA4LCAxODQsIDE5LCAyMCwgMjA4LCAxODMsIDE5LCAyMCwgMjA4LCAxODcsIDE5LCAyMCwgMTk2LCAyMTYsIAotICAgIDE1OCwgMTksIDIwLCAxOTYsIDIxNiwgNTcsIDE5LCAyMCwgMTk2LCAyMTUsIDIyNywgMTksIDIwLCAxOTYsIDIxNiwgMjIwLCAKLSAgICAxOSwgMjAsIDIyMiwgMjAxLCAxOSwgMjAsIDIyMiwgMTUxLCAxOSwgMjAsIDIyMiwgMTQ3LCAxOSwgMjAsIDIyMiwgMTI4LCAKLSAgICAxOSwgMjAsIDIyMiwgMTIzLCAxOSwgMjAsIDIyMiwgMjAzLCAxOSwgMjAsIDIyMiwgMjAyLCAxOSwgMjAsIDIyMiwgMjA1LCAKLSAgICAxOSwgMjAsIDIyMSwgMjIwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDQzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDExLCAKLSAgICAxOSwgMjAsIDIxNCwgMjA2LCAyMTIsIDI0MiwgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCA5MCwgMTksIDIwLCAyMDMsIDI0MiwgCi0gICAgMjA5LCA5MiwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3MCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA0NywgMTksIDIwLCAKLSAgICAyMDMsIDI0MiwgMjA5LCAxMDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTEwLCAxOSwgMjAsIDIyNywgMTU1LCAxOSwgMjAsIAotICAgIDIyNywgMTU0LCAxOSwgMjAsIDIyNywgMTUzLCAxOSwgMjAsIDIyNywgMTUyLCAxOSwgMjAsIDIyNywgMTYxLCAxOSwgMjAsIAotICAgIDIyNywgMTYwLCAxOSwgMjAsIDIyNywgMTYyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDkyLCAxOSwgMjAsIDIwOSwgMTA5LCAKLSAgICAyMDksIDcwLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDQ3LCAxOSwgMjAsIAotICAgIDIwOSwgMTA5LCAyMDksIDQyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDEwOCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAKLSAgICAxMDcsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTEwLCAxOSwgMjAsIDI1MSwgNTAsIDI0OSwgMjU1LCAxOSwgMjAsIDI0OCwgCi0gICAgNDAsIDc0LCAxOSwgMjAsIDI0OCwgNDAsIDc1LCAxOSwgMjAsIDI0OCwgNDAsIDc4LCAxOSwgMjAsIDI0OCwgNDAsIDYzLCAKLSAgICAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgNjIsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAzMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIAotICAgIDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxMTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjIyLCAyNDAsIDE5LCAyMCwgMjQ4LCA0MCwgCi0gICAgMjIyLCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjIxLCAxOTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjAxLCAyMDEsIDE5LCAyMCwgCi0gICAgMjQ4LCA0MCwgMjI5LCAyMDEsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAyNiwgCi0gICAgMTksIDIwLCAyNDgsIDQwLCAxNzMsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgNjcsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgCi0gICAgMywgMTksIDIwLCAyMTQsIDIwNiwgMjM2LCAxMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDE1MiwgMTksIDIwLCA4OCwgMjM4LCAKLSAgICA4NywgMTksIDIwLCA4OCwgMjM4LCA5MSwgMTksIDIwLCA4OCwgMjM4LCAxMDUsIDE5LCAyMCwgODgsIDIzOCwgMTA0LCAxOSwgCi0gICAgMjAsIDg4LCAyMzgsIDkzLCAxOSwgMjAsIDg4LCAyMzgsIDExOSwgMTksIDIwLCA4OCwgMjE1LCAxNDUsIDE5LCAyMCwgODgsIAotICAgIDIxNSwgMjI3LCAxOSwgMjAsIDg4LCAyMTYsIDE1OCwgMTksIDIwLCA4OCwgMjE2LCAxMzUsIDE5LCAyMCwgODgsIDIxNiwgCi0gICAgNTcsIDE5LCAyMCwgODgsIDIxNiwgMjIwLCAxOSwgMjAsIDg4LCAyMDMsIDIxNywgMTksIDIwLCA4OCwgMjA0LCAwLCAxOSwgCi0gICAgMjAsIDg4LCAyMDQsIDYyLCAxOSwgMjAsIDg4LCAyMDQsIDU1LCAxOSwgMjAsIDg4LCAyMDQsIDMwLCAxOSwgMjAsIDg4LCAKLSAgICAyMDQsIDExMSwgMTksIDIwLCA4OCwgMjM1LCAyNDcsIDE5LCAyMCwgODgsIDIzNSwgMjQ4LCAxOSwgMjAsIDg4LCAyMzUsIAotICAgIDI1MSwgMTksIDIwLCA4OCwgMjM1LCAyNTAsIDE5LCAyMCwgODgsIDIzNSwgMjQ5LCAxOSwgMjAsIDg4LCAyMzUsIDI1NCwgCi0gICAgMTksIDIwLCA4OCwgMjA5LCAyMiwgMTksIDIwLCA4OCwgMjA5LCA0NywgMTksIDIwLCA4OCwgMjA5LCA5MiwgMTksIDIwLCAKLSAgICA4OCwgMjA5LCA5MCwgMTksIDIwLCA4OCwgMjA5LCA3MCwgMTksIDIwLCA4OCwgMjA5LCAxMDgsIDE5LCAyMCwgODgsIDIwNywgCi0gICAgMjA4LCAxOSwgMjAsIDg4LCAyMDcsIDIxOCwgMTksIDIwLCA4OCwgMjA3LCAyMzYsIDE5LCAyMCwgODgsIDIwNywgMjM1LCAKLSAgICAxOSwgMjAsIDg4LCAyMDcsIDIyMCwgMTksIDIwLCA4OCwgMjA3LCAyNDEsIDE5LCAyMCwgODgsIDIxNywgMTkxLCAxOSwgMjAsIAotICAgIDg4LCAyMTgsIDY5LCAxOSwgMjAsIDg4LCAyMTksIDM0LCAxOSwgMjAsIDg4LCAyMTksIDIzLCAxOSwgMjAsIDg4LCAyMTgsIAotICAgIDE2NywgMTksIDIwLCA4OCwgMTg1LCAxOSwgMjAsIDg4LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAyMzAsIDE5LCAyMCwgCi0gICAgODgsIDIzOCwgMzksIDE5LCAyMCwgODgsIDIzOCwgMTkwLCAxOSwgMjAsIDg4LCAyMzgsIDE4MiwgMTksIDIwLCA4OCwgMjM4LCAKLSAgICA4MSwgMTksIDIwLCA4OCwgMjM5LCA4LCAxOSwgMjAsIDg4LCAyMjksIDEwOSwgMTksIDIwLCA4OCwgMjI5LCAxMTUsIDE5LCAKLSAgICAyMCwgODgsIDIyOSwgMTI5LCAxOSwgMjAsIDg4LCAyMjksIDEyOCwgMTksIDIwLCA4OCwgMjI5LCAxMjIsIDE5LCAyMCwgODgsIAotICAgIDIyOSwgMTQ0LCAxOSwgMjAsIDg4LCAyMjksIDQyLCAxOSwgMjAsIDg4LCAyMjksIDQzLCAxOSwgMjAsIDg4LCAyMjksIDQ2LCAKLSAgICAxOSwgMjAsIDg4LCAyMjksIDQ1LCAxOSwgMjAsIDg4LCAyMjksIDQ0LCAxOSwgMjAsIDg4LCAyMjksIDQ3LCAxOSwgMjAsIAotICAgIDg4LCAyMjksIDQ4LCAxOSwgMjAsIDg4LCAyMjEsIDg0LCAxOSwgMjAsIDg4LCAyMjEsIDE5MSwgMTksIDIwLCA4OCwgMjIyLCAKLSAgICAyNDAsIDE5LCAyMCwgODgsIDIyMiwgMjM1LCAxOSwgMjAsIDg4LCAyMjIsIDEwMCwgMTksIDIwLCA4OCwgMjAxLCAyMDEsIAotICAgIDE5LCAyMCwgODgsIDIyMywgMjQ2LCAxOSwgMjAsIDg4LCAyMjQsIDgyLCAxOSwgMjAsIDg4LCAyMjUsIDIwLCAxOSwgMjAsIAotICAgIDg4LCAyMjUsIDgsIDE5LCAyMCwgODgsIDIyNCwgMTU1LCAxOSwgMjAsIDg4LCAxOTIsIDE5LCAyMCwgODgsIDIwMiwgMjEzLCAKLSAgICAxOSwgMjAsIDg4LCAyMDIsIDI0NywgMTksIDIwLCA4OCwgMjAzLCA1MiwgMTksIDIwLCA4OCwgMjAzLCA0OSwgMTksIDIwLCAKLSAgICA4OCwgMjAzLCAxMSwgMTksIDIwLCA4OCwgMTk4LCAxOSwgMjAsIDg4LCAyMzAsIDgyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIAotICAgIDgyLCAxOSwgMjAsIDg4LCAyMzAsIDEwMSwgMTksIDIwLCA4OCwgMjMwLCAxNjEsIDE5LCAyMCwgODgsIDIzMCwgMTU5LCAxOSwgCi0gICAgMjAsIDg4LCAyMzAsIDE0MSwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCAxNDEsIDE5LCAyMCwgODgsIDIzMCwgMTgxLCAxOSwgCi0gICAgMjAsIDg4LCAyMzAsIDExNCwgMTksIDIwLCA4OCwgMjMwLCAxMTgsIDE5LCAyMCwgODgsIDIzMCwgMTI4LCAxOSwgMjAsIDg4LCAKLSAgICAyMzAsIDEyNywgMTksIDIwLCA4OCwgMjMwLCAxMjYsIDE5LCAyMCwgODgsIDIzMCwgMTI5LCAxOSwgMjAsIDg4LCAyMjYsIAotICAgIDIzOSwgMTksIDIwLCA4OCwgMjI3LCA0OSwgMTksIDIwLCA4OCwgMjI3LCAyMzQsIDE5LCAyMCwgODgsIDIyNywgMjI2LCAxOSwgCi0gICAgMjAsIDg4LCAyMjcsIDE0OCwgMTksIDIwLCA4OCwgMjI4LCAxMTMsIDE5LCAyMCwgODgsIDI0MywgMTE3LCAxOSwgMjAsIDg4LCAKLSAgICAyNDMsIDExOCwgMTksIDIwLCA4OCwgMjQzLCAxMjMsIDE5LCAyMCwgODgsIDI0MywgMTIyLCAxOSwgMjAsIDg4LCAyNDMsIAotICAgIDExOSwgMTksIDIwLCA4OCwgMjQzLCAxMjQsIDE5LCAyMCwgODgsIDIyNywgMTUxLCAxOSwgMjAsIDg4LCAyMjcsIDE1MywgCi0gICAgMTksIDIwLCA4OCwgMjI3LCAxNTcsIDE5LCAyMCwgODgsIDIyNywgMTU2LCAxOSwgMjAsIDg4LCAyMjcsIDE1NSwgMTksIDIwLCAKLSAgICA4OCwgMjI3LCAxNjEsIDE5LCAyMCwgODgsIDIwOCwgMTgxLCAxOSwgMjAsIDg4LCAyMDgsIDE4MywgMTksIDIwLCA4OCwgCi0gICAgMjA4LCAxODYsIDE5LCAyMCwgODgsIDIwOCwgMTg1LCAxOSwgMjAsIDg4LCAyMDgsIDE4NCwgMTksIDIwLCA4OCwgMjA4LCAKLSAgICAxODcsIDE5LCAyMCwgODgsIDIwOCwgMTc2LCAxOSwgMjAsIDg4LCAyMDgsIDE3NywgMTksIDIwLCA4OCwgMjA4LCAxODksIAotICAgIDE5LCAyMCwgODgsIDIwOCwgMTg4LCAxOSwgMjAsIDg4LCAyMDgsIDE3OCwgMTksIDIwLCA4OCwgMjA4LCAxOTAsIDE5LCAyMCwgCi0gICAgODgsIDIwMiwgNiwgMTksIDIwLCA4OCwgMjAyLCAxNywgMTksIDIwLCA4OCwgMjAyLCA5MiwgMTksIDIwLCA4OCwgMjAyLCAKLSAgICA5MCwgMTksIDIwLCA4OCwgMjAyLCAzOSwgMTksIDIwLCA4OCwgMjAyLCAxMTYsIDE5LCAyMCwgODgsIDIwMiwgMTU5LCAxOSwgCi0gICAgMjAsIDg4LCA4MSwgMjAyLCAxNTksIDE5LCAyMCwgODgsIDI0MSwgMjQyLCAxOSwgMjAsIDg4LCAyNDEsIDI0MywgMTksIDIwLCAKLSAgICA4OCwgMjQxLCAyNTIsIDE5LCAyMCwgODgsIDI0MSwgMjUxLCAxOSwgMjAsIDg4LCAyNDEsIDI0NiwgMTksIDIwLCA4OCwgCi0gICAgMjQxLCAyNTUsIDE5LCAyMCwgODgsIDIxMSwgMTAsIDE5LCAyMCwgODgsIDIxMiwgMTMsIDE5LCAyMCwgODgsIDIxNCwgMTc3LCAKLSAgICAxOSwgMjAsIDg4LCAyMTQsIDE2NSwgMTksIDIwLCA4OCwgMjEyLCAxNjIsIDE5LCAyMCwgODgsIDIxNSwgMzYsIDE5LCAyMCwgCi0gICAgODgsIDIxMiwgMTk5LCAxOSwgMjAsIDg4LCAyMTIsIDI0MiwgMTksIDIwLCA4OCwgMjEzLCA0MywgMTksIDIwLCA4OCwgMjEzLCAKLSAgICA0MSwgMTksIDIwLCA4OCwgMjEzLCAxMSwgMTksIDIwLCA4OCwgMjEzLCA5MCwgMTksIDIwLCA4OCwgMjEzLCA5MiwgMTksIAotICAgIDIwLCA4OCwgMjA3LCAyNDksIDE5LCAyMCwgODgsIDIwNywgMjUzLCAxOSwgMjAsIDg4LCAyMDgsIDE0LCAxOSwgMjAsIDg4LCAKLSAgICAyMDgsIDEzLCAxOSwgMjAsIDg4LCAyMDcsIDI1NSwgMTksIDIwLCA4OCwgMjA4LCAyMCwgMTksIDIwLCA4OCwgMjQ2LCA5OCwgCi0gICAgMTksIDIwLCA4OCwgMjQ2LCAxMTYsIDE5LCAyMCwgODgsIDI0NiwgMTcwLCAxOSwgMjAsIDg4LCAyNDYsIDE2NiwgMTksIDIwLCAKLSAgICA4OCwgMjQ2LCAxNDIsIDE5LCAyMCwgODgsIDI0NiwgMTk5LCAxOSwgMjAsIDg4LCAyMDcsIDIxMSwgMTksIDIwLCA4OCwgCi0gICAgMjA3LCAyMTIsIDE5LCAyMCwgODgsIDIwNywgMjE1LCAxOSwgMjAsIDg4LCAyMDcsIDIxNCwgMTksIDIwLCA4OCwgMjA3LCAKLSAgICAyMTMsIDE5LCAyMCwgODgsIDIwNywgMjE2LCAxOSwgMjAsIDI0NiwgMTQzLCA1NCwgMTksIDIwLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMTksIDIwLCAyMTcsIDExOCwgMTksIDIwLCAyMjIsIDE5OSwgMTksIDIwLCAyMjEsIDIxNywgMTksIDIwLCAyMjEsIAotICAgIDIxNiwgMTksIDIwLCAyMjEsIDIxNSwgMTksIDIwLCAyMjEsIDIxNCwgMTksIDIwLCAyMjEsIDIxOSwgMTksIDIwLCAyMjEsIAotICAgIDIxOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA5LCAxOSwgMjAsIDIwMywgCi0gICAgMjQyLCAyMDksIDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNywgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA2LCAxOSwgMjAsIAotICAgIDIwMywgMjQyLCAyMDksIDEzLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEyLCAxOSwgMjAsIDIwMywgMjQyLCA0NiwgMjA5LCAKLSAgICAxMTAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxNDQsIDIyMCwgNjQsIDIxMSwgMjI5LCA4MiwgMjIwLCA2NCwgMSwgMjQ4LCAKLSAgICAxMzIsIDIyMCwgNjQsIDEsIDIyNiwgMjI1LCAyMjAsIDY0LCAxLCAyNDAsIDU3LCAyMjAsIDY0LCAxLCAyMTUsIDE2LCAyMjAsIAotICAgIDY0LCAxLCAyMjIsIDU2LCAyMjAsIDY0LCAxLCAyMDcsIDM2LCAyMjAsIDY0LCAxLCAyNDQsIDE4NiwgMjIwLCA2NCwgMSwgCi0gICAgMjA4LCAyMTQsIDIyMCwgNjQsIDEsIDI0NSwgMjQ1LCAyMjAsIDY0LCAxLCAyNDYsIDIyNSwgMjIwLCA2NCwgMSwgMjIzLCAKLSAgICAyMzMsIDIyMCwgNjQsIDEsIDIzOCwgMjAsIDIyMCwgNjQsIDEsIDIyMiwgMTg5LCAyMjAsIDY0LCAxLCAyMTEsIDU0LCAyMjAsIAotICAgIDY0LCAxLCAyMTUsIDEzOCwgMjIwLCA2NCwgMSwgMjUxLCA2MSwgMjIwLCA2NCwgMSwgMjIwLCAyMiwgMjIwLCA2NCwgMSwgCi0gICAgMjA2LCAyMTAsIDIyMCwgNjQsIDEsIDI0MSwgMTg3LCAyMjAsIDY0LCAxLCAyMzAsIDIzMywgMjIwLCA2NCwgMSwgMjQxLCAKLSAgICAxODgsIDIyMCwgNjQsIDEsIDIxOSwgMjQ0LCAyMjAsIDY0LCAxLCAyMDcsIDE1LCAyMjAsIDY0LCAxLCAyMzEsIDg5LCAyMjAsIAotICAgIDY0LCAxLCAyNDEsIDE4NSwgMjIwLCA2NCwgMSwgMjE5LCAxMywgMjIwLCA2NCwgMjQwLCA1NiwgODIsIDIyMCwgNjQsIDIxNiwgCi0gICAgNzMsIDI0MCwgNTYsIDgyLCAxOTcsIDEsIDI0MCwgNDYsIDI0MCwgMzgsIDI0MCwgNjEsIDI0MCwgMTc0LCAxOTcsIDEsIAotICAgIDIwNiwgMTY0LCAxOTcsIDEsIDIwNiwgMTk1LCAyMDYsIDIxMSwgNjgsIDE5NywgMSwgMjAyLCAyMTYsIDE5NywgMSwgMjAzLCAKLSAgICAxMjQsIDE5NywgMSwgMjA0LCAxNDQsIDE5NywgMSwgMjA5LCAxNSwgMjA5LCAxNCwgMjA5LCA0MCwgMTk3LCAxLCAyNDAsIAotICAgIDI0MywgMTk3LCAxLCAyNTAsIDE5OSwgNjMsIDE5NywgMSwgMjE5LCAyMjgsIDc4LCAxOTcsIDEsIDI1MSwgMTQyLCA2MywgCi0gICAgMTk3LCAxLCAyNTEsIDkzLCAxOTcsIDEsIDIyNywgMjQsIDc4LCAxOTcsIDEsIDIxMiwgMjIxLCA3OCwgMTk3LCAxLCA3OCwgCi0gICAgMTk3LCAxLCAyMjAsIDczLCAxOTcsIDEsIDIyMCwgMzEsIDE5NywgMSwgMjE2LCAxOTUsIDIxNiwgMjA4LCAyMTYsIDEyMCwgCi0gICAgMTQ2LCAxOTcsIDEsIDIyOSwgMjE2LCAxOTcsIDEsIDI0NiwgMjIxLCAxOTcsIDEsIDIyOSwgMjE3LCAyMzAsIDU0LCAxOTcsIAotICAgIDEsIDIzOSwgNzUsIDE5NywgMSwgMjQxLCA3OCwgMTk3LCAxLCAyMzgsIDE4NSwgMjM3LCAxNzcsIDIzOSwgNzUsIDE5NywgMSwgCi0gICAgMjM4LCAyMjQsIDE5NywgMSwgMjAzLCAyMDksIDIwMywgMjAwLCAyMDQsIDE0NCwgMTk3LCAxLCAyMzcsIDE0OSwgMjM3LCAKLSAgICAxNzEsIDE5NywgMSwgMjM3LCAxNTMsIDIzNywgMTcxLCAxOTcsIDEsIDIyNywgMjYsIDIzNywgMTcxLCAxOTcsIDEsIDIxMiwgCi0gICAgMjI0LCAyMzcsIDE3MSwgMTk3LCAxLCAyMjMsIDYzLCAyMjEsIDIsIDIyMywgNjQsIDIyMywgMTYzLCAxOTcsIDEsIDIxMiwgCi0gICAgMjIyLCAyMjMsIDE2MywgMTk3LCAxLCAyNDIsIDgwLCAxOTcsIDEsIDIzMCwgMjEyLCAyMzAsIDIxNiwgMjMwLCAyMDMsIDc1LCAKLSAgICAxOTcsIDEsIDc0LCAxOTcsIDEsIDIzMCwgMTUyLCAyMzAsIDE4NCwgMTk3LCAxLCAyMzgsIDE2OSwgMTk3LCAxLCAyMjcsIAotICAgIDI3LCAyNTEsIDEwOSwgMTk3LCAxLCAyMTIsIDIyNiwgNjMsIDE5NywgMSwgMjMwLCAxOTUsIDI0MSwgNTEsIDE5NywgMSwgCi0gICAgMjE4LCAyMjYsIDIxOCwgMjUxLCAyMTksIDE4NCwgMTk3LCAxLCAyNTEsIDIzLCAyNDEsIDQ5LCAxOTcsIDEsIDIxMSwgMjM0LCAKLSAgICAxOTQsIDE5NywgMSwgMjEyLCAxNDYsIDIyNywgMjMsIDE5NCwgMTk3LCAxLCAyMTIsIDIyMCwgMTk0LCAxOTcsIDEsIDI0NywgCi0gICAgMTI1LCAxOTcsIDEsIDIwMiwgMTU5LCAxOTcsIDEsIDIwOCwgMTk1LCAyMDgsIDIwNywgMjA3LCAxMDgsIDIxMCwgNjksIAotICAgIDE5NywgMSwgMjEyLCAyMTksIDIxMCwgNjksIDE5NywgMSwgMjQ1LCA1MSwgMTk3LCAxLCAyNDgsIDExMSwgMjQ4LCAxMTQsIAotICAgIDI0OCwgNDYsIDI0OSwgMjU1LCAxOTcsIDEsIDIxMiwgMjI1LCAyNDksIDI1NSwgMTk3LCAxLCAyNDIsIDc5LCAxOTcsIDEsIAotICAgIDIyMCwgMiwgMTk3LCAxLCAyNDEsIDE0NiwgMjQxLCAxNDgsIDc0LCAxOTcsIDEsIDIyNSwgMTEzLCAyMjUsIDEyMywgMjI2LCAKLSAgICAxODUsIDE5NywgMSwgMjI3LCAyNSwgMjI2LCAxODUsIDE5NywgMSwgMjEyLCAyMjMsIDIyNiwgMTg1LCAxOTcsIDEsIDIyNywgCi0gICAgMjQ5LCAyMjgsIDkxLCAyMjcsIDM0LCAxNTksIDE5NywgMSwgMjQyLCA4MSwgMTk3LCAxLCAyMzEsIDIzLCAxOTcsIDEsIAotICAgIDIzMSwgMjQsIDE5NywgMSwgMjQ0LCAyMDAsIDI0NCwgMjA2LCAyNDUsIDUxLCAxOTcsIDEsIDIxOSwgMjIyLCAyNDAsIDI0MiwgCi0gICAgNzgsIDE5NywgMSwgMjQxLCAxODMsIDE5NywgMSwgMjMwLCAyMzIsIDE5NywgMSwgMjQ1LCA3MSwgMTk3LCAxLCAyNDcsIDc1LCAKLSAgICAxOTcsIDEsIDI0NiwgMjM3LCAxOTcsIDEsIDIxMSwgOTksIDE5NywgMSwgMjI3LCAyMiwgMTk3LCAxLCAyMTIsIDIxOCwgCi0gICAgMTk3LCAxLCAyMzUsIDE2MSwgMTk3LCAxLCAyMTcsIDEzNCwgMTk3LCAxLCAyMDMsIDE5NiwgMTk3LCAyMTIsIDEyMCwgMjE3LCAKLSAgICAxNzgsIDE5NywgMjIzLCAyMjYsIDIxNywgMTc4LCAxOTcsIDI0NSwgMTMxLCAyMTcsIDE3OCwgMTk3LCAyNTAsIDEwOCwgOTcsIAotICAgIDE5NywgMjA3LCAxNjIsIDk3LCAxOTcsIDI0OCwgMTMwLCA5NywgMTk3LCAxLCAyMzAsIDU0LCAxOTcsIDEsIDIxMywgOTIsIAotICAgIDE5NywgMSwgMjIwLCAxOCwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjE5LCAyMjcsIDE5NywgMSwgMjM5LCAxMzEsIAotICAgIDI0NywgMjAsIDIzMCwgMjE1LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyNDEsIDE0NywgMTk3LCAxLCAyMzksIDEzMSwgCi0gICAgMjQ3LCAyMCwgMjUxLCAxNDEsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI1MSwgOTMsIDIwOSwgMjU0LCAxLCA2MywgCi0gICAgMjA5LCAyNTQsIDEsIDc1LCAyMDksIDI1NCwgMSwgNjgsIDIwOSwgMjU0LCAxLCAxNzMsIDIwOSwgMjU0LCAxLCAyMzksIDgsIAotICAgIDIwOSwgMjU0LCAxLCAyMjIsIDIwMywgMjA5LCAyNTQsIDEsIDIxMCwgMjIsIDIwOSwgMjU0LCAxLCAyNDQsIDIxMiwgMjA5LCAKLSAgICAyNTQsIDEsIDIwMSwgMjAxLCAyMDksIDI1NCwgMSwgMTg1LCAyMDksIDI1NCwgMSwgMjQ5LCAzMiwgMjA5LCAyNTQsIDEsIAotICAgIDE5MiwgMjA5LCAyNTQsIDEsIDE5OCwgMjA5LCAyNTQsIDEsIDIyOCwgMTEzLCAyMDksIDI1NCwgMSwgMjA0LCAxMTEsIDIwOSwgCi0gICAgMjU0LCAxLCAyMTUsIDM2LCAyMDksIDI1NCwgMSwgMTUyLCAyMDksIDI1NCwgMjIsIDIsIDc1LCAyMDksIDI1NCwgMjIsIDIsIAotICAgIDY4LCAyMDksIDI1NCwgMiwgMjA1LCAyMDQsIDIzNywgOTYsIDEsIDYzLCAyMzcsIDk2LCAxLCA3NSwgMjM3LCA5NiwgMSwgCi0gICAgNjgsIDIzNywgOTYsIDEsIDE3MywgMjM3LCA5NiwgMSwgMjM5LCA4LCAyMzcsIDk2LCAxLCAyMjIsIDIwMywgMjM3LCA5NiwgCi0gICAgMSwgMjEwLCAyMiwgMjM3LCA5NiwgMSwgMjQ0LCAyMTIsIDIzNywgOTYsIDEsIDIwMSwgMjAxLCAyMzcsIDk2LCAxLCAxODUsIAotICAgIDIzNywgOTYsIDEsIDI0OSwgMzIsIDIzNywgOTYsIDEsIDE5MiwgMjM3LCA5NiwgMSwgMTk4LCAyMzcsIDk2LCAxLCAyMTYsIAotICAgIDIyMCwgMjM3LCA5NiwgMSwgMjI4LCAxMTMsIDIzNywgOTYsIDEsIDIwNCwgMTExLCAyMzcsIDk2LCAxLCAyMTUsIDM2LCAKLSAgICAyMzcsIDk2LCAxLCAxNTIsIDIzNywgOTYsIDIyLCAyLCA3NSwgMjM3LCA5NiwgMjIsIDIsIDY4LCAyMzcsIDk2LCAyLCAyMTksIAotICAgIDEyNCwgMjE4LCAxODUsIDIxMiwgMTIwLCAyMTcsIDE3OCwgMjE4LCAxODUsIDUyLCAyMTcsIDE3OCwgMjQ3LCAxODUsIDEsIAotICAgIDYzLCAyNDcsIDE4NSwgMSwgNzUsIDI0NywgMTg1LCAxLCA2OCwgMjQ3LCAxODUsIDEsIDE3MywgMjQ3LCAxODUsIDEsIDIzOSwgCi0gICAgOCwgMjQ3LCAxODUsIDEsIDIyMiwgMjAzLCAyNDcsIDE4NSwgMSwgMjEwLCAyMiwgMjQ3LCAxODUsIDEsIDI0NCwgMjEyLCAKLSAgICAyNDcsIDE4NSwgMSwgMjAxLCAyMDEsIDI0NywgMTg1LCAxLCAxODUsIDI0NywgMTg1LCAxLCAyNDksIDMyLCAyNDcsIDE4NSwgCi0gICAgMSwgMTkyLCAyNDcsIDE4NSwgMSwgMTk4LCAyNDcsIDE4NSwgMSwgMjE2LCAyMjAsIDI0NywgMTg1LCAxLCAyMjgsIDExMywgCi0gICAgMjQ3LCAxODUsIDEsIDIwNCwgMTExLCAyNDcsIDE4NSwgMSwgMjE1LCAzNiwgMjQ3LCAxODUsIDEsIDE1MiwgMjQ3LCAxODUsIAotICAgIDIyLCAyLCA3NSwgMjQ3LCAxODUsIDIyLCAyLCA2OCwgMjA5LCAyNTMsIDEsIDYzLCAyMDksIDI1MywgMSwgNzUsIDIwOSwgCi0gICAgMjUzLCAxLCA2OCwgMjA5LCAyNTMsIDEsIDE3MywgMjA5LCAyNTMsIDEsIDIzOSwgOCwgMjA5LCAyNTMsIDEsIDIyMiwgMjAzLCAKLSAgICAyMDksIDI1MywgMSwgMjEwLCAyMiwgMjA5LCAyNTMsIDEsIDI0NCwgMjEyLCAyMDksIDI1MywgMSwgMjAxLCAyMDEsIDIwOSwgCi0gICAgMjUzLCAxLCAxODUsIDIwOSwgMjUzLCAxLCAyNDksIDMyLCAyMDksIDI1MywgMSwgMTkyLCAyMDksIDI1MywgMSwgMTk4LCAKLSAgICAyMDksIDI1MywgMSwgMjI4LCAxMTMsIDIwOSwgMjUzLCAxLCAyMDQsIDExMSwgMjA5LCAyNTMsIDEsIDIxNSwgMzYsIDIwOSwgCi0gICAgMjUzLCAyMiwgMiwgNzUsIDIwOSwgMjUzLCAyMiwgMiwgNjgsIDg1LCAxLCAxNzMsIDg1LCAxLCAyMjksIDE0NCwgODUsIDEsIAotICAgIDIyOSwgMjYsIDg1LCAxLCAyMjksIDExNSwgODUsIDEsIDIyMiwgMTI4LCA4NSwgMSwgMjQ3LCA5MiwgODUsIDEsIDI0NiwgCi0gICAgMTk5LCA4NSwgMSwgMjQ1LCAyNTQsIDg1LCAxLCAyNDYsIDExNiwgODUsIDEsIDIyMCwgMjMzLCA4NSwgMSwgMjQ0LCAyMTIsIAotICAgIDg1LCAxLCAyMDcsIDIyOSwgODUsIDEsIDI0MywgMTEzLCA4NSwgMSwgMjA3LCAyMjQsIDg1LCAxLCAyMjEsIDE5NywgODUsIAotICAgIDEsIDIxMCwgMjIsIDg1LCAxLCAyMDksIDEwOCwgODUsIDEsIDEzNSwgODUsIDEsIDIwOSwgNDcsIDg1LCAxLCAyMjEsIDE5MSwgCi0gICAgODUsIDEsIDI0OSwgMzIsIDg1LCAxLCAyMTgsIDIwOCwgODUsIDEsIDIxOCwgNjksIDg1LCAxLCAyMTgsIDE4MCwgODUsIDEsIAotICAgIDIyNCwgODIsIDg1LCAxLCAyMDIsIDI0NywgODUsIDEsIDIxNSwgMjI3LCA4NSwgMSwgMjI3LCA0OSwgODUsIDEsIDIwNSwgCi0gICAgMTg5LCA4NSwgMSwgMjEzLCA5MCwgODUsIDEsIDIxMSwgMTI0LCA4NSwgMSwgMjE1LCAzNiwgODUsIDEsIDE1MiwgODUsIDEsIAotICAgIDIyOCwgMTEzLCA4NSwgMSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAxMTIsIDg1LCAyMzEsIDM2LCAyMiwgCi0gICAgMjE3LCAxMjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA4OCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDgzLCA4NSwgMjMxLCAKLSAgICAzNiwgMjIsIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAzNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDIzLCA4NSwgCi0gICAgMjMxLCAzNiwgMjIsIDIxNywgMjIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAxMDIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAKLSAgICA5NSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE5OSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE4OCwgODUsIDIzMSwgMzYsIAotICAgIDIyLCAyMTcsIDEwNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDczLCAyMDcsIAotICAgIDEyMSwgMTA1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgMTIxLCAxMDgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAKLSAgICAxMDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUwLCAxNDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUyLCAyNSwgODUsIDIyLCAyLCAyNTIsIAotICAgIDI1LCA4NSwgMjIsIDIsIDc1LCA4NSwgMjIsIDIsIDIzMSwgODMsIDg1LCAyMiwgMiwgMjAzLCAxMjQsIDg1LCAyMiwgMiwgCi0gICAgMjAyLCAxNjksIDg1LCAyMiwgMiwgNjgsIDg1LCAyMiwgMiwgMjA2LCAxNzgsIDg1LCAyMiwgMiwgMjA3LCAzOSwgODUsIDIyLCAKLSAgICAyLCAyMjAsIDczLCA4NSwgMjIsIDIsIDE5OCwgODUsIDIyLCAyLCAyMzEsIDExMCwgODUsIDIyLCAyLCA3NCwgODUsIDIyLCAKLSAgICAyLCAyNTEsIDEwOSwgODUsIDIyLCAyLCAyNTEsIDY0LCA4NSwgMjIsIDIsIDIyMCwgMTgsIDg1LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgODUsIDIsIDIyMiwgNzMsIDg1LCAyLCAyMTYsIDE1NiwgODUsIDIsIDIwMiwgMTgwLCA4NSwgMiwgMjIzLCAxOTAsIDg1LCAyLCAKLSAgICAyMDgsIDczLCA4NSwgMiwgMjQ4LCAyMzMsIDg1LCAyLCAyMTUsIDIyMiwgODUsIDIsIDIwOCwgMTcxLCA4NSwgMiwgMjMwLCAKLSAgICAxMSwgODUsIDIsIDI1MSwgNjYsIDg1LCAyLCAyMTQsIDI0NCwgMjE0LCAyMzcsIDg1LCAyLCAyMDUsIDIwMSwgODUsIDIsIAotICAgIDI0NSwgMjQ4LCA4NSwgMiwgMjQ4LCAyMDUsIDg1LCAyLCAyMjksIDEzNiwgODUsIDIsIDI0OCwgMjI4LCA4NSwgMiwgMjQ3LCAKLSAgICA2NCwgMjE4LCAxMzAsIDIyOCwgMTczLCA4NSwgMiwgMjI3LCAyMDMsIDIwOCwgMTQ4LCA4NSwgMiwgMjQ4LCAxMDAsIDg1LCAKLSAgICAyLCAyMTgsIDE4MiwgMjIzLCAyNDMsIDg1LCAyLCAyMjksIDQsIDg1LCAyNDUsIDkyLCAxNiwgMjE2LCA0OSwgODUsIDIsIAotICAgIDI1MCwgMTYsIDg1LCAyLCAyNTAsIDM3LCA4NSwgMTcsIDIwMiwgODQsIDg1LCAxNywgMTA1LCA4NSwgMTcsIDEwOCwgODUsIAotICAgIDE3LCAxNDcsIDg1LCAxNywgMTQ5LCA4NSwgMTcsIDE3MCwgODUsIDE3LCAxOTUsIDg1LCAxNywgMjEzLCAxMTEsIDg1LCAxNywgCi0gICAgMTk5LCA4NSwgMTcsIDIyMiwgNjMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxMSwgMjUzLCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMjMsIDIxMCwgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCAxMjksIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDI0OCwgMTMzLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyNDcsIDE2NSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE4LCA3LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxNywgMjU1LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDUsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxOCwgMywgOTQsIDI0OCwgNTksIDk0LCAyNDEsIDEwOCwgOTQsIDI0NSwgMjMzLCA5NCwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDk0LCAyNDUsIDI0MiwgOTQsIDIzOSwgMTQ3LCAyNDMsIDgzLCA5NCwgMjA4LCAxNzAsIDIxMiwgNywgCi0gICAgMjM1LCAyMjAsIDk0LCAyMTIsIDE2MCwgNCwgMjQ3LCAyNDQsIDIyNSwgODgsIDk0LCAyMjUsIDExOSwgMjQ1LCAyMzMsIDk0LCAKLSAgICAyMjUsIDExOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDk0LCAyMjIsIDU0LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgCi0gICAgMTA1LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTA4LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTQ3LCAKLSAgICA5NCwgMjIsIDIxMywgMTMwLCA5NCwgMTcsIDIwMiwgODQsIDk0LCAxNywgMTA1LCA5NCwgMTcsIDEwOCwgOTQsIDE3LCAxNDcsIAotICAgIDk0LCAxNywgMTQ5LCA5NCwgMTcsIDE3MCwgOTQsIDE3LCAxOTUsIDk0LCAxNywgMjEzLCAxMTEsIDk0LCAxNywgMTk5LCA5NCwgCi0gICAgMTcsIDIyMiwgNjMsIDk0LCAxLCA2MywgOTQsIDEsIDc0LCA5NCwgMSwgNzUsIDk0LCAxLCA3OCwgOTQsIDEsIDY4LCA5NCwgCi0gICAgMSwgMjIwLCA3MywgOTQsIDEsIDIwNywgMjQsIDk0LCAxLCAyNDEsIDE2MSwgOTQsIDEsIDIwMSwgMjAxLCA5NCwgMSwgMjUwLCAKLSAgICAyMjMsIDk0LCAxLCAyNDksIDMyLCA5NCwgMSwgMTg1LCA5NCwgMSwgMjE3LCAxMjYsIDk0LCAxLCAyMzksIDgsIDk0LCAxLCAKLSAgICAxOTIsIDk0LCAxLCAyMjgsIDExMywgOTQsIDEsIDIxNSwgMzYsIDk0LCAxLCAyMTMsIDkwLCA5NCwgMSwgMjEwLCAyMiwgOTQsIAotICAgIDEsIDI0NCwgMjEyLCA5NCwgMSwgMjQ2LCAxOTksIDk0LCAxLCAyMzAsIDE4MSwgOTQsIDEsIDE5OCwgOTQsIDEsIDIxNiwgCi0gICAgMjIwLCA5NCwgMSwgMjA0LCAxMTEsIDk0LCAxLCAyNDAsIDEwOCwgOTQsIDEsIDE3MywgOTQsIDEsIDIyOSwgMTQ0LCA5NCwgCi0gICAgMSwgMjA4LCAyMCwgOTQsIDEsIDIwMiwgMTE2LCA5NCwgMSwgMjM3LCAxNTcsIDk0LCAxLCAyMDIsIDEwLCA5NCwgMSwgMjI3LCAKLSAgICAxNjEsIDk0LCAxLCAyMDIsIDY2LCA5NCwgMSwgMjQ2LCAxNDIsIDk0LCAxLCAyMDgsIDE3MCwgMTYzLCAyMiwgNTQsIDk0LCAKLSAgICAxLCAyMDgsIDE3MCwgNzQsIDk0LCAxLCAyMDgsIDE3MCwgNzUsIDk0LCAxLCAyMDgsIDE3MCwgNzgsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgNjgsIDk0LCAxLCAyMDgsIDE3MCwgMjIwLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAyMDcsIDI0LCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDI1MCwgMjIzLCA5NCwgMSwgMjA4LCAxNzAsIDI0OSwgMzIsIDk0LCAxLCAyMDgsIDE3MCwgMTg1LCA5NCwgMSwgCi0gICAgMjA4LCAxNzAsIDIxNywgMTI2LCA5NCwgMSwgMjA4LCAxNzAsIDIzOSwgOCwgOTQsIDEsIDIwOCwgMTcwLCAxOTIsIDk0LCAxLCAKLSAgICAyMDgsIDE3MCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDQsIDIxMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDYsIDE5OSwgCi0gICAgOTQsIDEsIDIwOCwgMTcwLCAyMzAsIDE4MSwgOTQsIDEsIDIwOCwgMTcwLCAyMDgsIDIwLCA5NCwgMSwgMjA4LCAxNzAsIAotICAgIDE5OCwgOTQsIDEsIDIwOCwgMTcwLCAyMDQsIDExMSwgOTQsIDEsIDIwOCwgMTcwLCAxNzMsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMjM5LCA1LCA5NCwgMSwgMjA4LCAxNzAsIDIzNywgMTU3LCA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTQwLCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDIyMiwgOTgsIDk0LCAxLCAyMDgsIDE3MCwgMjQxLCAyNTUsIDk0LCAxLCAyMTIsIDE2MCwgNzQsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgNzUsIDk0LCAxLCAyMTIsIDE2MCwgMjMwLCAxOTIsIDk0LCAxLCAyMTIsIDE2MCwgMjA3LCAyNCwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCA2OCwgOTQsIDEsIDIxMiwgMTYwLCAyNTAsIDIyMywgOTQsIDEsIDIxMiwgMTYwLCAxNzMsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgMjM5LCA4LCA5NCwgMSwgMjEyLCAxNjAsIDE1MiwgOTQsIDEsIDIxMiwgMTYwLCAxODUsIDk0LCAxLCAyMTIsIDE2MCwgCi0gICAgMjEzLCA5MCwgOTQsIDEsIDIxMiwgMTYwLCAyMTAsIDIyLCA5NCwgMSwgMjEyLCAxNjAsIDI0NCwgMjEyLCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDIzMCwgMTgxLCA5NCwgMSwgMjEyLCAxNjAsIDI0MCwgMTA4LCA5NCwgMSwgMjEyLCAxNjAsIDIzOSwgNSwgOTQsIDEsIAotICAgIDIxMiwgMTYwLCAyMzcsIDE1NywgOTQsIDEsIDIxMiwgMTYwLCAyMDgsIDIwLCA5NCwgMSwgMjEyLCAxNjAsIDIwMiwgMTE2LCAKLSAgICA5NCwgMSwgMjEyLCAxNjAsIDIxNiwgMjE2LCA5NCwgMSwgMjEyLCAxNjAsIDI0NiwgMTk5LCA5NCwgMSwgMjEyLCAxNjAsIAotICAgIDIwMiwgODAsIDk0LCAxLCAyMjUsIDExOSwgNzUsIDk0LCAxLCAyMjUsIDExOSwgMTczLCA5NCwgMSwgMjI1LCAxMTksIDIxNiwgCi0gICAgMjIwLCA5NCwgMSwgMjI1LCAxMTksIDI0MCwgMTA4LCA5NCwgMSwgMjI1LCAxMTksIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjUwLCAxODEsIDEwNSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDUsIDIwMCwgMTA1LCA5NCwgMSwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTc0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMzQsIDk0LCAxLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAyMzksIDIwNywgMzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ4LCAyNDUsIAotICAgIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTI2LCAyNDgsIDI0NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA2MywgCi0gICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA3NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNzMsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjIyLCAyMDMsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMDcsIDI0MSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDcsIDIyOSwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyNDQsIDEyMCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMjEsIDIyNywgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjEyLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDE4NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTgsIDIwOCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIwMiwgMTE2LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI1MSwgNzMsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyMDgsIDE3MCwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIAotICAgIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIzOCwgMTE5LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIAotICAgIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAxNDksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAKLSAgICAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDEwNCwgOTQsIDEsIDIyNSwgCi0gICAgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAKLSAgICAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjQ1LCA2NSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgOTQsIAotICAgIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTYyLCAKLSAgICA2OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIDE5OCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAotICAgIDI0NCwgMjQ4LCA5OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDIwMSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjI3LCAxNjEsIDE5LCAyMCwgMjE5LCAxODgsIDE5LCAyMCwgMjUwLCA4LCAxOSwgMjAsIDI1MSwgCi0gICAgMjM2LCAxOSwgMjAsIDIwNCwgNjUsIDE5LCAyMCwgMjE4LCAxMywgMTksIDIwLCAyMTksIDQzLCAxOSwgMjAsIDIxNywgMTQzLCAKLSAgICAxOSwgMjAsIDIwOSwgMTk2LCAxOSwgMjAsIDIyOSwgMjA4LCAxOSwgMjAsIDIyOCwgMTY0LCAxOSwgMjAsIDIyNSwgNjMsIAotICAgIDE5LCAyMCwgMjIxLCAxNDksIDE5LCAyMCwgMjIzLCA1OSwgMTksIDIwLCAyMjcsIDI0NCwgMTksIDIwLCAyMTEsIDIzMiwgCi0gICAgMTksIDIwLCAyMTQsIDIwOCwgMTksIDIwLCAyMTIsIDIwNywgMTksIDIwLCAyMTMsIDQ3LCAxOSwgMjAsIDIxMiwgMTcyLCAKLSAgICAxOSwgMjAsIDIwMiwgMjIyLCAxOSwgMjAsIDIwMywgNTgsIDE5LCAyMCwgMjE2LCAxNjUsIDE5LCAyMCwgMjIxLCAxNywgMTksIAotICAgIDIwLCAyMjAsIDUzLCAyMjEsIDE3LCAxOSwgMjAsIDIyMSwgMTYsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNiwgMTksIDIwLCAKLSAgICAyMjEsIDE1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgMTUsIDE5LCAyMCwgMjIxLCAxNCwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIAotICAgIDE0LCAxOSwgMjAsIDIxNSwgMTA3LCAxOSwgMjAsIDIxNSwgMTA2LCAxOSwgMjAsIDIxNSwgMTA1LCAxOSwgMjAsIDIxNSwgCi0gICAgMTA0LCAxOSwgMjAsIDIxNSwgMTAzLCAxOSwgMjAsIDIxNSwgMTExLCAxOSwgMjAsIDIyMCwgNTMsIDIxOSwgMTg0LCAxOSwgCi0gICAgMjAsIDIyMCwgNTMsIDIxMCwgNjksIDE5LCAyMCwgMjIwLCA1MywgMjMwLCA1NCwgMTksIDIwLCAyMjAsIDUzLCAyNDcsIAotICAgIDEyNSwgMTksIDIwLCAyMjAsIDUzLCAyMjYsIDE4NSwgMTksIDIwLCAyMjAsIDUzLCAyMjMsIDE2MywgMTksIDIwLCAyMjAsIAotICAgIDUzLCAxOTQsIDE5LCAyMCwgMjIwLCA1MywgMjEzLCA5MiwgMTksIDIwLCAyNDEsIDE3NCwgMjA0LCAxNDQsIDE5LCAyMCwgCi0gICAgMjA0LCA0NCwgMjA0LCAxNDQsIDE5LCAyMCwgNDYsIDUsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMTYsIDE4OCwgMjQzLCAKLSAgICA4NSwgMTksIDIwLCAyMTcsIDAsIDIxNSwgMTA4LCAxOSwgMjAsIDE5NiwgMjI3LCAxOCwgMTksIDIwLCAxOTYsIDIyOCwgCi0gICAgMTEyLCAxOSwgMjAsIDIwOSwgMTEsIDE5LCAyMCwgMjA5LCAxMywgMTksIDIwLCAyMDcsIDIyMSwgMTksIDIwLCAyMDcsIAotICAgIDIyMywgMTksIDIwLCAyMDcsIDIyOCwgMTksIDIwLCAyMDgsIDE4MCwgMTksIDIwLCAyMDgsIDE4MiwgMTksIDIwLCAyMTQsIAotICAgIDIwNiwgMjEyLCAxNzcsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjM2LCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDExNywgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAxODUsIDE5LCAyMCwgODgsIDI0NCwgMzUsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzksIDUsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMTkwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDY0LCAxOSwgMjAsIDg4LCAyMzAsIDYyLCAxOSwgCi0gICAgMjAsIDI0OCwgMTUzLCAyNDQsIDM1LCAxNTksIDE5LCAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE0NiwgMTksIDIwLCA4OCwgCi0gICAgMjQ0LCAzMCwgMTk0LCAyMjcsIDEyNCwgMjA1LCAxNjksIDIyNywgMTc0LCAyMjcsIDEyNCwgMSwgMTczLCAyMjcsIDEyNCwgCi0gICAgMSwgMjI5LCAxNDQsIDIyNywgMTI0LCAxLCAyMzksIDgsIDIyNywgMTI0LCAxLCAyMzgsIDExOSwgMjI3LCAxMjQsIDEsIAotICAgIDIyMiwgMjAzLCAyMjcsIDEyNCwgMSwgMjQ3LCA5MiwgMjI3LCAxMjQsIDEsIDI0NiwgMTk5LCAyMjcsIDEyNCwgMSwgMjMwLCAKLSAgICAxODEsIDIyNywgMTI0LCAxLCAyMzAsIDE0OSwgMjI3LCAxMjQsIDEsIDIwMywgNzgsIDIyNywgMTI0LCAxLCAyMTAsIDIyLCAKLSAgICAyMjcsIDEyNCwgMSwgMjA5LCAxMDgsIDIyNywgMTI0LCAxLCAyNDQsIDIxMiwgMjI3LCAxMjQsIDEsIDI0NCwgMSwgMjI3LCAKLSAgICAxMjQsIDEsIDIwMSwgMjAxLCAyMjcsIDEyNCwgMSwgMTg1LCAyMjcsIDEyNCwgMSwgMjE4LCAyMDgsIDIyNywgMTI0LCAxLCAKLSAgICAyNDksIDMyLCAyMjcsIDEyNCwgMSwgMjQ4LCA5OCwgMjI3LCAxMjQsIDEsIDE5MiwgMjI3LCAxMjQsIDEsIDE5OCwgMjI3LCAKLSAgICAxMjQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMSwgMjI4LCAxMTMsIDIyNywgMTI0LCAxLCAyMDQsIDExMSwgMjI3LCAxMjQsIAotICAgIDEsIDIxMywgOTAsIDIyNywgMTI0LCAxLCAyMTEsIDE2NCwgMjI3LCAxMjQsIDEsIDIxNSwgMzYsIDIyNywgMTI0LCAxLCAKLSAgICAxNTIsIDIyNywgMTI0LCAxLCAyMzcsIDE4MSwgMjI3LCAxMjQsIDEsIDIwOCwgMTE5LCAyMjcsIDEyNCwgMjIsIDIsIDYzLCAKLSAgICAyMjcsIDEyNCwgMjIsIDIsIDc1LCAyMjcsIDEyNCwgMjIsIDIsIDY4LCAyMjcsIDEyNCwgMjIsIDIsIDI0MSwgMTYxLCAyMjcsIAotICAgIDEyNCwgMjIsIDIsIDI1MSwgNjQsIDIyNywgMTI0LCAyMiwgMiwgMjIwLCAxOCwgMjI3LCAxMjQsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMjcsIDEyNCwgMjIsIDIsIDc0LCAyMjcsIDEyNCwgMjIsIDIsIDc4LCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDE5OCwgCi0gICAgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDE3MywgMjI3LCAxMjQsIDUsIDEsIDIyMiwgMjAzLCAyMjcsIDEyNCwgNSwgMSwgMjUwLCAxODAsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAyMTAsIDIyLCAyMjcsIDEyNCwgNSwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCA1LCAxLCAxODUsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAxOTIsIDIyNywgMTI0LCA1LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDUsIDEsIDIyOCwgMTEzLCAyMjcsIAotICAgIDEyNCwgMiwgMjIzLCAyMzEsIDIyNywgMTI0LCAyLCAyMjksIDE4NiwgMjI3LCAxMjQsIDIsIDIxNSwgMzQsIDIyNywgMTI0LCAKLSAgICAyLCAyMjcsIDE4LCAyMjcsIDEyNCwgMjQwLCAyMTIsIDgyLCAyMjcsIDEyNCwgMjE3LCA0NywgODIsIDIyNywgMTI0LCAxNywgCi0gICAgMjAyLCA4NCwgMjI3LCAxMjQsIDE3LCAxMDUsIDIyNywgMTI0LCAxNywgMTA4LCAyMjcsIDEyNCwgMTcsIDE0NywgMjI3LCAKLSAgICAxMjQsIDE3LCAxNDksIDIyNywgMTI0LCAxNywgMTcwLCAyMjcsIDEyNCwgMTcsIDE5NSwgMjI3LCAxMjQsIDE3LCAyMTMsIAotICAgIDExMSwgMjI3LCAxMjQsIDE3LCAxOTksIDIyNywgMTI0LCAxNywgMjIyLCA2MywgNDUsIDIyNywgMjM1LCAxLCAxNzMsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjAzLCAxODIsIDQ1LCAyMjcsIDIzNSwgMSwgMjIyLCAyMDMsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKLSAgICAyMCwgNDUsIDIyNywgMjM1LCAxLCAyMTUsIDM2LCA0NSwgMjI3LCAyMzUsIDEsIDE5OCwgNDUsIDIyNywgMjM1LCAxLCAyMTAsIAotICAgIDIyLCA0NSwgMjI3LCAyMzUsIDEsIDIwOSwgMTA4LCA0NSwgMjI3LCAyMzUsIDEsIDIyOCwgMTEzLCA0NSwgMjI3LCAyMzUsIAotICAgIDEsIDE4NSwgNDUsIDIyNywgMjM1LCAxLCAyMTgsIDIwOCwgNDUsIDIyNywgMjM1LCAxLCAxOTIsIDQ1LCAyMjcsIDIzNSwgMSwgCi0gICAgMjQwLCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA2LCA4NiwgNDUsIDIyNywgMjM1LCAxLCAxNTIsIDQ1LCAyMjcsIDIzNSwgCi0gICAgMSwgMjE3LCAxMjYsIDQ1LCAyMjcsIDIzNSwgMSwgMjI5LCAxNDQsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxMCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDEsIDIwMSwgNDUsIDIyNywgMjM1LCAxLCA2MywgNDUsIDIyNywgMjM1LCAxLCA3NSwgNDUsIDIyNywgCi0gICAgMjM1LCAxLCAyNDEsIDE2MSwgNDUsIDIyNywgMjM1LCAxLCAyNDEsIDE0NywgNDUsIDIyNywgMjM1LCAxLCA2OCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMjAsIDE4LCA0NSwgMjI3LCAyMzUsIDEsIDc4LCA0NSwgMjI3LCAyMzUsIDEsIDIwNywgMjQsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgNzQsIDQ1LCAyMjcsIDIzNSwgMSwgMjUwLCAzMiwgNDUsIDIyNywgMjM1LCAxLCAyNTEsIDY0LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwOCwgMTU5LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU4LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgCi0gICAgMTU3LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU2LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU1LCAyMjIsIDIxNCwgNDUsIAotICAgIDIyNiwgMjMzLCAxLCAxMzgsIDIxNywgMTI2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNywgMTI2LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDMsIAotICAgIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTI0LCAxNzMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjAzLCAxODIsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEyNCwgMjIyLCAyMDMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA4LCAyMCwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTUsIDM2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE5OCwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDgsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNSwgCi0gICAgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTk4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAotICAgIDIxMCwgMjIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA5LCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEzOCwgMjAxLCAyMDEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjEwLCAyMiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDEsIDIwMSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxODUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjE4LCAKLSAgICAyMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAotICAgIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTgsIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTI0LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjQwLCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEzOCwgMjA2LCA4NiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjgsIDExMywgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDYsIDg2LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTEzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAotICAgIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTM4LCAyNDksIDMyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTI0LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDksIDMyLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgMTQ5LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAotICAgIDIwMywgMTQ5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMSwgMTI0LCAyMTEsIDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMiwgMjEyLCAyMTYsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyNTIsIDI1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMxLCA4MywgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDY4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAKLSAgICAxNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAotICAgIDI1MSwgMTA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAKLSAgICAyLCAyMjAsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA3LCAyNCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMjIsIDIsIDI1MCwgOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MSwgMjM2LCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAxNzAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMTksIDE4OCwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyMCwgOTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAKLSAgICAyMDcsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMwLCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDEsIDQ2LCAyMDYsIDE2NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyMiwgMjA1LCAyMjIsIDIxNCwgNDUsIAotICAgIDIyNiwgMjMzLCAxLCA0NiwgMjIzLCAxNjMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMjYsIDE4NSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIzMCwgNTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDUsIAotICAgIDUxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjQ5LCAyNTUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE0MywgCi0gICAgMjI1LCA5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAyMjUsIDkxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxNywgMjAyLCA4NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDEwNSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIAotICAgIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0OSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE5NSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDIxMywgMTExLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk5LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjIyLCA2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTA0LCAxNywgMTA1LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk2LCAKLSAgICA4NSwgMTYsIDIxOSwgNTEsIDg1LCAxNiwgMjIzLCAyMTEsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAxMzAsIDIyOSwgMjIsIAotICAgIDg1LCAxNiwgMjQ4LCAxMzQsIDIyOSwgMjIsIDg1LCAxNiwgMjQ3LCAxNjYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA4LCAKLSAgICAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDAsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAKLSAgICA2LCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgNCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE2MSwgMjI5LCAyMiwgODUsIDE2LCAKLSAgICAyNDQsIDE1NywgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NiwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1OSwgMjI5LCAyMiwgCi0gICAgODUsIDE2LCAyNDQsIDE1OCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NSwgMjI5LCAyMiwgODUsIDE2LCAyMDcsIDE2NywgCi0gICAgODUsIDE2LCAyMjMsIDIxMSwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAxMzAsIDIxNSwgMjIwLCA4NSwgMTYsIDI0OCwgMTM0LCAKLSAgICAyMTUsIDIyMCwgODUsIDE2LCAyNDcsIDE2NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA4LCAyMTUsIDIyMCwgODUsIDE2LCAKLSAgICAyMTgsIDIsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA2LCAyMTUsIDIyMCwgODUsIAotICAgIDE2LCAyMTgsIDQsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTYxLCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NywgMjE1LCAKLSAgICAyMjAsIDg1LCAxNiwgMjQ0LCAxNTYsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU5LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIAotICAgIDE1OCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTUsIDIxNSwgMjIwLCAyNDcsIDE4NiwgMSwgMTczLCAyNDcsIDE4NiwgMSwgCi0gICAgMjM5LCA4LCAyNDcsIDE4NiwgMSwgMjIyLCAyMDMsIDI0NywgMTg2LCAxLCAyMjIsIDE0NiwgMjQ3LCAxODYsIDEsIDE4NSwgCi0gICAgMjQ3LCAxODYsIDEsIDI0OSwgMzIsIDI0NywgMTg2LCAxLCAxOTIsIDI0NywgMTg2LCAxLCAyMjMsIDI1MCwgMjQ3LCAxODYsIAotICAgIDEsIDIxMCwgMjIsIDI0NywgMTg2LCAxLCAyNDQsIDIxMiwgMjQ3LCAxODYsIDEsIDIwMSwgMjAxLCAyNDcsIDE4NiwgMSwgCi0gICAgMjIxLCAxNDcsIDI0NywgMTg2LCAxLCAyNDcsIDkyLCAyNDcsIDE4NiwgMSwgMjMwLCAxODEsIDI0NywgMTg2LCAxLCAyMjEsIAotICAgIDExLCAyNDcsIDE4NiwgMSwgMjIxLCAzLCAyNDcsIDE4NiwgMSwgMTk4LCAyNDcsIDE4NiwgMSwgMjE2LCAyMjAsIDI0NywgCi0gICAgMTg2LCAxLCAyMjgsIDExMywgMjQ3LCAxODYsIDEsIDIwNiwgODYsIDI0NywgMTg2LCAxLCAyMTUsIDM2LCAyNDcsIDE4NiwgCi0gICAgMSwgNjMsIDI0NywgMTg2LCAxLCAxNTIsIDI0NywgMTg2LCAyMiwgMiwgNzUsIDI0NywgMTg2LCAyMiwgMiwgNjgsIDI0NywgCi0gICAgMTg2LCAyMiwgMiwgNzQsIDI0NywgMTg2LCAyMiwgMiwgNzgsIDI0NywgMTg2LCAyMiwgMiwgMjUxLCAxMDksIDI0NywgMTg2LCAKLSAgICAyMTksIDEzNiwgMjQ3LCAxODYsIDI0MSwgODQsIDc2LCAyMTQsIDE2NywgNDUsIDEwNCwgMSwgMTM4LCAxNzMsIDQ1LCAxMDQsIAotICAgIDEsIDEzOCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDEzOCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMTczLCA0NSwgCi0gICAgMTA0LCAxLCAxMjQsIDIyOCwgMTUzLCA0NSwgMTA0LCAxLCAxMjQsIDIyOSwgMTQ0LCA0NSwgMTA0LCAxLCAyMjIsIDIwMywgCi0gICAgNDUsIDEwNCwgMSwgMTM4LCAyNDcsIDkyLCA0NSwgMTA0LCAxLCAxMzgsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAxMjQsIAotICAgIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE1LCAzNiwgNDUsIDEwNCwgMSwgMTI0LCAyNDYsIDE5OSwgNDUsIDEwNCwgMSwgCi0gICAgMjIxLCAxMSwgNDUsIDEwNCwgMSwgMjE2LCAxNzEsIDQ1LCAxMDQsIDEsIDEzOCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIAotICAgIDI0NCwgMjEyLCA0NSwgMTA0LCAxLCAxMjQsIDIxNiwgMTY5LCA0NSwgMTA0LCAxLCAyMTYsIDE4MCwgNDUsIDEwNCwgMSwgCi0gICAgMTM4LCAyMTAsIDIyLCA0NSwgMTA0LCAxLCAxMzgsIDIwOSwgMTA4LCA0NSwgMTA0LCAxLCAxMjQsIDIxMCwgMjIsIDQ1LCAKLSAgICAxMDQsIDEsIDEyNCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDIwMSwgMjAxLCA0NSwgMTA0LCAxLCAyNDksIDMyLCA0NSwgCi0gICAgMTA0LCAxLCAxMzgsIDE4NSwgNDUsIDEwNCwgMSwgMTM4LCAyMTgsIDIwOCwgNDUsIDEwNCwgMSwgMTM4LCAyNDAsIDEwOCwgCi0gICAgNDUsIDEwNCwgMSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEsIDEyNCwgMjQwLCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjE4LCAKLSAgICAyMDgsIDQ1LCAxMDQsIDEsIDE5MiwgNDUsIDEwNCwgMSwgMTI0LCAxOTgsIDQ1LCAxMDQsIDEsIDEzOCwgMTk4LCA0NSwgCi0gICAgMTA0LCAxLCAyMTYsIDIyMCwgNDUsIDEwNCwgMSwgMjE1LCAxNDAsIDQ1LCAxMDQsIDEsIDIyOCwgMTEzLCA0NSwgMTA0LCAxLCAKLSAgICAyMjYsIDIzMiwgNDUsIDEwNCwgMSwgMjA0LCAxMTEsIDQ1LCAxMDQsIDEsIDEzOCwgMjEzLCA5MCwgNDUsIDEwNCwgMSwgCi0gICAgMTM4LCAyMTEsIDE2NCwgNDUsIDEwNCwgMSwgMTM4LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMzgsIDE1MiwgNDUsIDEwNCwgCi0gICAgMSwgMjI3LCA3NywgNDUsIDEwNCwgMSwgNjMsIDQ1LCAxMDQsIDEsIDEyNCwgMTUyLCA0NSwgMTA0LCAxLCA3NSwgNDUsIAotICAgIDEwNCwgMSwgMjMxLCA4MywgNDUsIDEwNCwgMSwgNjgsIDQ1LCAxMDQsIDEsIDIwNiwgMTc4LCA0NSwgMTA0LCAxLCAyNDEsIAotICAgIDE2MSwgNDUsIDEwNCwgMSwgMjIwLCAxOCwgNDUsIDEwNCwgMSwgMjI4LCA5NywgNDUsIDEwNCwgMSwgMjM3LCAyNDksIDIxNSwgCi0gICAgMzYsIDQ1LCAxMDQsIDEwOSwgMiwgMTc0LCAyMTYsIDIyMCwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIyOCwgMTEzLCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDIyOCwgMTE0LCAyMDksIDIyOCwgMjI4LCA4NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIzMCwgMSwgCi0gICAgMjI4LCA4NiwgNDUsIDEwNCwgMTA5LCAyLCA0NiwgMjIyLCAyMDMsIDQ1LCAxMDQsIDEwOSwgMiwgMTI0LCAxODUsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMTM4LCAyMTYsIDE3MCwgMjE5LCAyNDUsIDEyNCwgMTg1LCA0NSwgMTA0LCAxMDksIDIsIDE5MiwgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAyNDksIDMyLCA0NSwgMTA0LCAxMDksIDIsIDIxNSwgMzYsIDQ1LCAxMDQsIDIsIDIxNSwgMTAsIDQ1LCAKLSAgICAxMDQsIDIyLCAyLCA2MywgNDUsIDEwNCwgMjIsIDIsIDIyNSwgMTQxLCAyMTQsIDIyNSwgNDUsIDEwNCwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDQ1LCAxMDQsIDIyLCAyLCAyMDksIDIzNCwgMjUyLCAyNSwgNDUsIDEwNCwgMjIsIDIsIDc1LCA0NSwgMTA0LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgNDUsIDEwNCwgMjIsIDIsIDIwNywgMjQsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3NywgNDUsIDEwNCwgCi0gICAgMjIsIDIsIDY4LCA0NSwgMTA0LCAyMiwgMiwgMjA2LCAxNzgsIDQ1LCAxMDQsIDIyLCAyLCA3OCwgNDUsIDEwNCwgMjIsIDIsIAotICAgIDIyMCwgOTgsIDU2LCA0NSwgMTA0LCAyMiwgMiwgMjE5LCAxODgsIDQ1LCAxMDQsIDIyLCAyLCA3NCwgNDUsIDEwNCwgMjIsIAotICAgIDIsIDI1MSwgMTA5LCA0NSwgMTA0LCAyMiwgMiwgMjIwLCAxOCwgNDUsIDEwNCwgMjIsIDIsIDI1MSwgNjQsIDQ1LCAxMDQsIAotICAgIDIyLCAyLCAxMDQsIDI1MSwgNjQsIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDk4LCA1NSwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIAotICAgIDIzMCwgMCwgNDUsIDEwNCwgMiwgMjA4LCAxNjAsIDQ1LCAxMDQsIDIsIDIwOCwgMTU5LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgCi0gICAgMjA4LCAxNTgsIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAyMDgsIDE1NywgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU2LCAKLSAgICA0NSwgMTA0LCAyLCAyMTYsIDIyMSwgMjM3LCAxNTYsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMTQsIDI1MywgNDUsIDEwNCwgCi0gICAgMiwgMjI5LCAxMDQsIDIyOSwgMjM5LCA0NSwgMTA0LCAzOSwgMjQ1LCAxMTMsIDI0MywgODUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAKLSAgICAxNywgMjAyLCA4NCwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTA4LCA0NSwgCi0gICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE0NywgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxNDksIDQ1LCAxMDQsIDIzNiwgMTA4LCAKLSAgICAxNywgMTcwLCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE5NSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMTMsIDExMSwgNDUsIAotICAgIDEwNCwgMjM2LCAxMDgsIDE3LCAxOTksIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMjIyLCA2MywgNDUsIDEwNCwgMTA0LCAxNywgCi0gICAgMjAyLCA4NCwgNDUsIDEwNCwgMTA0LCAxNywgMTA1LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDgsIDQ1LCAxMDQsIDEwNCwgMTcsIAotICAgIDE0NywgNDUsIDEwNCwgMTA0LCAxNywgMTQ5LCA0NSwgMTA0LCAxMDQsIDE3LCAxNzAsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5NSwgCi0gICAgNDUsIDEwNCwgMTA0LCAxNywgMjEzLCAxMTEsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5OSwgNDUsIDEwNCwgMTA0LCAxNywgMjIyLCAKLSAgICA2MywgNDUsIDEwNCwgMiwgMjA0LCAyOSwgNDUsIDEwNCwgMiwgMjA0LCAyOCwgNDUsIDEwNCwgMiwgMjE0LCAyMTIsIDQ1LCAKLSAgICAxMDQsIDIsIDIyOSwgMTc1LCA0NSwgMTA0LCAyLCAyMzYsIDM2LCA0NSwgMTA0LCAyLCAyNDMsIDk5LCA0NSwgMTA0LCAyLCAKLSAgICAyMTYsIDczLCAyMTUsIDE5OCwgMjE2LCAxODAsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMDMsIDc5LCA0NSwgMTA0LCAyLCAKLSAgICAyMzAsIDM1LCA0NSwgMTA0LCAyLCAyMzAsIDM0LCA0NSwgMTA0LCAyLCAyMTQsIDIyMCwgNDUsIDEwNCwgMiwgMjE0LCAyMTksIAotICAgIDQ1LCAxMDQsIDIsIDIzNywgOTgsIDQ1LCAxMDQsIDIsIDI0NywgODksIDM5LCAyNDIsIDc1LCAyNDYsIDUzLCAyNTEsIDEzOCwgCi0gICAgMzksIDI0MywgMjMwLCAzOSwgMjMxLCAyNywgMzksIDE4MywgNDcsIDM5LCAyMDgsIDcwLCAyNDMsIDg1LCAzOSwgMjAzLCAKLSAgICAxOTUsIDU2LCAzOSwgMjA0LCAyMSwgMjI3LCAxMTUsIDU2LCAzOSwgMTcxLCAxMzEsIDU2LCAzOSwgNTIsIDE3MSwgMTMxLCAKLSAgICA1NiwgMzksIDE1NywgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAzOSwgMjExLCAxOCwgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAKLSAgICAzOSwgMjE5LCA3OCwgNTUsIDM5LCA1MiwgMjE5LCA3OCwgNTUsIDM5LCAyMTksIDc4LCA1NiwgMzksIDIxOSwgNzgsIDIxOSwgCi0gICAgMTk5LCAxMzAsIDIsIDIwNywgOSwgMjE2LCA1MSwgMTMwLCAyLCAyMDcsIDksIDI0NywgNTQsIDEzMCwgMiwgMjQ2LCAyMzQsIAotICAgIDEzMCwgMiwgMjEwLCAxOTEsIDEzMCwgMiwgMjQ4LCA1NiwgMTMwLCAxLCAyNTEsIDQ1LCAxMzAsIDEsIDI1MSwgNDYsIDIwOSwgCi0gICAgMTc4LCAxMzAsIDEsIDIzMSwgNzksIDEzMCwgMSwgMjMxLCA4MCwgMjA5LCAxNzgsIDEzMCwgMSwgMjA3LCAxMiwgMTMwLCAxLCAKLSAgICAyMDcsIDEzLCAyMDksIDE3OCwgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAxMDMsIDEzMCwgMSwgMjE2LCAyMjEsIDIxNiwgCi0gICAgMTA0LCAyMDksIDE3OCwgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMSwgMjI4LCAxMTQsIDIyNywgMTk4LCAKLSAgICAyMDksIDE3OCwgMTMwLCAxLCAyNDEsIDEyNywgMTMwLCAxLCAyNTEsIDYyLCAxMzAsIDEsIDIyMCwgNDksIDEzMCwgMSwgCi0gICAgMjIwLCA1MCwgMjA5LCAxNzgsIDEzMCwgMSwgMTczLCAxMzAsIDEsIDIzMCwgNDQsIDIyNSwgMTQ0LCAxMzAsIDEsIDIzOSwgCi0gICAgOCwgMTMwLCAxLCAyMzksIDksIDIzOCwgMjUsIDEzMCwgMSwgMjIyLCAyMDMsIDEzMCwgMSwgMjQ3LCA5MiwgMTMwLCAxLCAKLSAgICAyNDcsIDkzLCAyMjgsIDEwMCwgMTMwLCAxLCAyMzAsIDE4MSwgMTMwLCAxLCAyMzAsIDE4MiwgMjMwLCAxNTMsIDEzMCwgMSwgCi0gICAgMjIxLCAxMSwgMTMwLCAxLCAyMTAsIDIzLCAyMjcsIDI1MywgMTMwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNiwgMjI1LCAxNDQsIAotICAgIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyNTEsIDQsIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCi0gICAgMTMwLCAxLCAyMjMsIDExMSwgMjE2LCAxODMsIDEzMCwgMSwgMjEwLCAyMiwgMTMwLCAxLCAyMTAsIDIzLCAyMDksIDIwMCwgCi0gICAgMTMwLCAxLCAyNDQsIDIxMiwgMTMwLCAxLCAyNDQsIDIxMywgMjI1LCAxNjMsIDEzMCwgMSwgMjAxLCAyMDEsIDEzMCwgMSwgCi0gICAgMTg1LCAxMzAsIDEsIDIxOSwgMTY5LCAyMjksIDI1MSwgMTMwLCAxLCAyNDksIDMyLCAxMzAsIDEsIDI0OSwgMzMsIDIyOSwgCi0gICAgMTg3LCAxMzAsIDEsIDE5MiwgMTMwLCAxLCAxOTgsIDEzMCwgMSwgMjE2LCAyMjAsIDEzMCwgMSwgMjI4LCAxMTMsIDEzMCwgCi0gICAgMSwgMjA0LCAxMTEsIDEzMCwgMSwgMjE1LCAzNywgMjE1LCAyMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTQsIDIzMiwgMTMwLCAxLCAKLSAgICAyMTUsIDM2LCAxMzAsIDEsIDE1MiwgMTMwLCAyLCAyMTYsIDk0LCAxMzAsIDIyLCAyLCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgCi0gICAgMjA3LCA4LCAxMzAsIDIyLCAyLCAyMDcsIDksIDIxNCwgMjI4LCAxMzAsIDIyLCAyLCAyMTAsIDIyNCwgMTMwLCAyMiwgMiwgCi0gICAgMjEwLCAyMjUsIDIzMSwgNzEsIDEzMCwgMjIsIDIsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIAotICAgIDIxNiwgMTA0LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjI4LCAxMTQsIDIyNywgMTk3LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgCi0gICAgMjI3LCAxOTgsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMDksIDIzNSwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTAzLCAKLSAgICAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMTYsIDEwNCwgMjA5LCAxNzgsIAotICAgIDEzMCwgMjIsIDIsIDIxOCwgMjQ5LCAxMzAsIDIyLCAyLCAyMTgsIDI1MCwgMjA5LCAxNzgsIDEzMCwgMjUxLCAxMTcsIDI1MSwgCi0gICAgMTE2LCAxMzAsIDEsIDIzMCwgMjMsIDIxNCwgMjI3LCAxMzAsIDEsIDIyOSwgMTExLCAyMTQsIDIyNywgMTMwLCAxLCAyMDcsIAotICAgIDEwMSwgMjE0LCAyMjcsIDEzMCwgMSwgMjQxLCAxNTUsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNiwgNTYsIDIxNCwgMjI3LCAKLSAgICAxMzAsIDEsIDIwMiwgMTA2LCAyMTQsIDIyNywgMTMwLCAxLCAyNTAsIDUyLCAyMTQsIDIyNywgMTMwLCAxNywgMjAyLCA4NCwgCi0gICAgMTMwLCAxNywgMTA1LCAxMzAsIDE3LCAxMDgsIDEzMCwgMTcsIDE0NywgMTMwLCAxNywgMTQ5LCAxMzAsIDE3LCAxNzAsIAotICAgIDEzMCwgMTcsIDE5NSwgMTMwLCAxNywgMjEzLCAxMTEsIDEzMCwgMTcsIDE5OSwgMTMwLCAxNywgMjIyLCA2MywgMTMwLCAKLSAgICAyMTksIDEwNCwgMTMwLCAyMTksIDEzMCwgMTMwLCAyMDQsIDE0LCAxMzAsIDI0NywgMzEsIDIxOSwgMTIzLCAxMzAsIDI0NywgCi0gICAgMzEsIDIxMiwgMTM5LCAxMzAsIDI0NywgMzEsIDIxOSwgNzUsIDEzMCwgMjE5LCAxMjksIDEzMCwgMzEsIDE2LCAyNDMsIDkxLCAKLSAgICAxMzAsIDMxLCAxNiwgMjQ0LCAzNCwgMTMwLCAzMSwgMTYsIDI0MiwgMjcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NCwgMTMwLCAKLSAgICAzMSwgMTYsIDI0NCwgMTY1LCAyMTAsIDE5MSwgMTMwLCAzMSwgMTYsIDI0MywgMTc1LCAxMzAsIDMxLCAxNiwgMjQ0LCAyMDUsIAotICAgIDEzMCwgMzEsIDE2LCAyNDQsIDEwLCAxMzAsIDMxLCAxNiwgMjQ0LCAxODcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NSwgMjM4LCAKLSAgICAxODQsIDEzMCwgMzEsIDE2LCAzOSwgMjA5LCAxNzEsIDEzMCwgMzEsIDE2LCAzOSwgMjQxLCA4MiwgMTMwLCAzMSwgMTYsIAotICAgIDM5LCAyMjksIDE4MiwgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMzAsIDE1NywgMTMwLCAKLSAgICAzMSwgMTYsIDM5LCAyMjksIDE4MywgMywgMjMwLCAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjI5LCAxODUsIDMsIDIzMCwgCi0gICAgMTU3LCAxMzAsIDMxLCAxNiwgMzksIDI0OCwgMTE5LCAxMzAsIDMxLCAxNiwgMzksIDIzOCwgMjksIDEzMCwgMzEsIDE2LCAKLSAgICAyMTYsIDE0LCAxNzEsIDI0MiwgMzcsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAxNzEsIDI0NCwgMjAzLCAxMzAsIDMxLCAxNiwgCi0gICAgMjE2LCAxNCwgMjQ2LCAxNiwgMjA3LCAxOTUsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAyNDYsIDE2LCAyMDksIDI0NCwgMTMwLCAKLSAgICAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxOSwgMTE4LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE3LCAxNzcsIAotICAgIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMjQ2LCAxNiwgMjE4LCA5NCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAKLSAgICAyMTgsIDgwLCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE4LCAxMTksIDIxMCwgMjEzLCAyLCAyMTksIDEwMSwgCi0gICAgMjEwLCAyMTMsIDIsIDIxOSwgMTE0LCAyMTAsIDIxMywgMiwgMjE5LCAxMTAsIDIxMCwgMjEzLCAxLCA2MywgMjEwLCAyMTMsIAotICAgIDEsIDc1LCAyMTAsIDIxMywgMSwgNjgsIDIxMCwgMjEzLCAxLCAyNTEsIDEwOSwgMjEwLCAyMTMsIDEsIDc4LCAyMTAsIDIxMywgCi0gICAgMSwgNzQsIDIxMCwgMjEzLCAxLCAyNDAsIDIzOCwgMjEwLCAyMTMsIDEsIDE3MywgMjEwLCAyMTMsIDEsIDIxNywgMTI2LCAKLSAgICAyMTAsIDIxMywgMSwgMjM5LCA4LCAyMTAsIDIxMywgMSwgMjIyLCAyMDMsIDIxMCwgMjEzLCAxLCAyNDcsIDkyLCAyMTAsIAotICAgIDIxMywgMSwgMjMwLCAxODEsIDIxMCwgMjEzLCAxLCAyMDIsIDExNiwgMjEwLCAyMTMsIDEsIDIyMSwgMTEsIDIxMCwgMjEzLCAKLSAgICAxLCAyMTAsIDIyLCAyMTAsIDIxMywgMSwgMjQ0LCAyMTIsIDIxMCwgMjEzLCAxLCAyMDEsIDIwMSwgMjEwLCAyMTMsIDEsIAotICAgIDE4NSwgMjEwLCAyMTMsIDEsIDI0MCwgMTA4LCAyMTAsIDIxMywgMSwgMjA2LCA4NiwgMjEwLCAyMTMsIDEsIDI0OSwgMzIsIAotICAgIDIxMCwgMjEzLCAxLCAxOTIsIDIxMCwgMjEzLCAxLCAxOTgsIDIxMCwgMjEzLCAxLCAyMTYsIDIyMCwgMjEwLCAyMTMsIDEsIAotICAgIDIyOCwgMTEzLCAyMTAsIDIxMywgMSwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMTUsIDM2LCAyMTAsIDIxMywgMSwgMjAzLCAKLSAgICAxODIsIDIxMCwgMjEzLCAxLCAxNTIsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgMTI3LCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIAotICAgIDEwMywgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMDAsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMTcsIDIxMCwgMjEzLCAyMiwgCi0gICAgMiwgMjE5LCA5OSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEyMSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEwOSwgMjEwLCAKLSAgICAyMTMsIDIyLCAyLCAyMTksIDEyOCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTMxLCAKLSAgICAyMTAsIDIxMywgMiwgMjA1LCAyMDQsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgNjQsIDE5MiwgMjEwLCAyMTMsIDEwOSwgMiwgCi0gICAgMjE5LCA2NCwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMjksIDE0NCwgMjEwLCAyMTMsIDEsIDIxMCwgMTUwLCAyMTAsIAotICAgIDIxMywgMTcsIDIwMiwgODQsIDIxMCwgMjEzLCAxNywgMTA1LCAyMTAsIDIxMywgMTcsIDEwOCwgMjEwLCAyMTMsIDE3LCAKLSAgICAxNDcsIDIxMCwgMjEzLCAxNywgMTQ5LCAyMTAsIDIxMywgMTcsIDE3MCwgMjEwLCAyMTMsIDE3LCAxOTUsIDIxMCwgMjEzLCAKLSAgICAxNywgMjEzLCAxMTEsIDIxMCwgMjEzLCAxNywgMTk5LCAyMTAsIDIxMywgMTcsIDIyMiwgNjMsIDIxMCwgMjEzLCAyNTAsIAotICAgIDE3LCAyMTAsIDIxMywgMSwgMjE2LCA3NiwgMjEwLCAyMTMsIDEsIDIyNywgMTcxLCAyMTAsIDIxMywgMSwgMjQ4LCA5OCwgCi0gICAgMjEwLCAyMTMsIDEsIDQ2LCAyMzAsIDU0LCAyMTAsIDIxMywgMSwgNDYsIDIyNiwgMTg1LCAyNDgsIDIwOCwgMSwgNjMsIAotICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgNjMsIDI0OCwgMjA4LCAxLCAxNTIsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTUyLCAKLSAgICAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDE1MiwgMjQ4LCAyMDgsIDEsIDI0OSwgMzIsIDI0OCwgMjA4LCAxLCAyMjksIDIzNiwgCi0gICAgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxODUsIDI0OCwgMjA4LCAxLCAyMDEsIAotICAgIDIwMSwgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAyMDEsIDIwMSwgMjQ4LCAyMDgsIDEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjE5LCAxNDMsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjM5LCA4LCAKLSAgICAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIzOSwgOCwgMjQ4LCAyMDgsIDEsIDIzMCwgMTgxLCAyNDgsIDIwOCwgMSwgMjQ0LCAKLSAgICAyMTIsIDI0OCwgMjA4LCAxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIAotICAgIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxOTIsIDI0OCwgMjA4LCAxLCAyMTEsIDIzNiwgMjEwLCAyMiwgMjQ4LCAKLSAgICAyMDgsIDEsIDIyMSwgMTcwLCAyMTAsIDIyLCAyNDgsIDIwOCwgMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAKLSAgICAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAxOTgsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMTk4LCAyNDgsIDIwOCwgMSwgMjIyLCAyMDMsIDI0OCwgMjA4LCAxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIDIyMSwgMTEsIDI0OCwgMjA4LCAxLCAyNDcsIDkyLCAyNDgsIDIwOCwgCi0gICAgMSwgMjIzLCAyNSwgMjQ4LCAyMDgsIDEsIDIyNSwgNTQsIDI0OCwgMjA4LCAxLCA3NSwgMjQ4LCAyMDgsIDEsIDY4LCAyNDgsIAotICAgIDIwOCwgMiwgMjA4LCAxNjQsIDI0OCwgMjA4LCAyMiwgMiwgNzQsIDI0OCwgMjA4LCAyMiwgMiwgMjE5LCAxNDMsIDc0LCAKLSAgICAyNDgsIDIwOCwgMjIsIDIsIDI0MSwgMTYxLCAyNDgsIDIwOCwgMjIsIDIsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgCi0gICAgMjM2LCA3NSwgMjQ4LCAyMDgsIDIyLCAyLCA3OCwgMjQ4LCAyMDgsIDIyLCAyLCAyMjksIDIzNiwgNzgsIDI0OCwgMjA4LCAKLSAgICAyMiwgMiwgNjgsIDI0OCwgMjA4LCAyMiwgMiwgMTA2LCAzNSwgMjEyLCAxMzEsIDIxNSwgMzYsIDI0OCwgMjA4LCAxMDksIDIsIAotICAgIDIyMiwgMjA1LCAyNDgsIDIwOCwgMTA5LCAyLCAyMzcsIDE3MSwgMjQ4LCAyMDgsIDIxOSwgMTEyLCAyNDgsIDIwOCwgMjE5LCAKLSAgICAxMDgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjIzLCAxMTEsIDIyNCwgMjE4LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIAotICAgIDIxOCwgMTIyLCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIzMCwgNzksIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjE5LCAKLSAgICAxMTIsIDIyNywgMTgxLCAxLCAxNzMsIDIyNywgMTgxLCAxLCAyMjksIDQwLCAyMjcsIDE4MSwgMSwgMjI5LCAxNDQsIDIyNywgCi0gICAgMTgxLCAxLCAyMzksIDgsIDIyNywgMTgxLCAxLCAyMzgsIDUxLCAyMjcsIDE4MSwgMSwgMjIyLCAyMDMsIDIyNywgMTgxLCAxLCAKLSAgICAyNDcsIDkyLCAyMjcsIDE4MSwgMSwgMjQ2LCAxOTksIDIyNywgMTgxLCAxLCAyMzAsIDE4MSwgMjI3LCAxODEsIDEsIDIyMSwgCi0gICAgMTEsIDIyNywgMTgxLCAxLCAyMTAsIDIyLCAyMjcsIDE4MSwgMSwgMjA5LCAxMDgsIDIyNywgMTgxLCAxLCAyNDQsIDIxMiwgCi0gICAgMjI3LCAxODEsIDEsIDIwMSwgMjAxLCAyMjcsIDE4MSwgMSwgMTg1LCAyMjcsIDE4MSwgMSwgMjE4LCA5OCwgMjI3LCAxODEsIAotICAgIDEsIDIxOCwgMjA4LCAyMjcsIDE4MSwgMSwgMjQwLCAxMDgsIDIyNywgMTgxLCAxLCAyMzksIDIyNywgMjI3LCAxODEsIDEsIAotICAgIDI0OSwgMzIsIDIyNywgMTgxLCAxLCAyNDgsIDQ0LCAyMjcsIDE4MSwgMSwgMTkyLCAyMjcsIDE4MSwgMSwgMjI0LCA4OSwgCi0gICAgMjI3LCAxODEsIDEsIDIwOCwgMjAsIDIyNywgMTgxLCAxLCAyMDgsIDEwLCAyMjcsIDE4MSwgMSwgMjQxLCAyNTUsIDIyNywgCi0gICAgMTgxLCAxLCAxOTgsIDIyNywgMTgxLCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDEsIDIyOCwgMTEzLCAyMjcsIDE4MSwgMSwgCi0gICAgMTUyLCAyMjcsIDE4MSwgMSwgMjM2LCAyMjQsIDIyNywgMTgxLCAxLCAyMDYsIDg2LCAyMjcsIDE4MSwgMSwgMjE1LCAzNiwgCi0gICAgMjI3LCAxODEsIDEsIDIxMywgOTAsIDIyNywgMTgxLCAxLCAyMDQsIDExMSwgMjI3LCAxODEsIDEsIDYzLCAyMjcsIDE4MSwgCi0gICAgMjEwLCAyNTQsIDEsIDE5OCwgMjI3LCAxODEsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMjcsIDE4MSwgMjIsIDIsIDc1LCAyMjcsIDE4MSwgMjIsIDIsIDc4LCAyMjcsIDE4MSwgMjIsIDIsIDIyMCwgMTgsIAotICAgIDIyNywgMTgxLCAyMiwgMiwgNjgsIDIyNywgMTgxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNywgMTgxLCAyMiwgMiwgNzQsIDIyNywgCi0gICAgMTgxLCAxMDksIDIsIDIzMCwgNTQsIDIyNywgMTgxLCAxMDksIDIsIDIyNiwgMTg1LCAyMjcsIDE4MSwgMTA5LCAyLCAxNTksIAotICAgIDIyNywgMTgxLCAxMDksIDIsIDIyMywgMTYzLCAyMjcsIDE4MSwgMTA5LCAyLCAyMTksIDE4NCwgMjI3LCAxODEsIDEwOSwgMiwgCi0gICAgMTQ2LCAyMjcsIDE4MSwgMTA5LCAyLCAyMTAsIDY5LCAyMjcsIDE4MSwgMTA5LCAyLCAyMjAsIDI0MSwgMjI3LCAxODEsIAotICAgIDEwOSwgMiwgMjMwLCAwLCAyMjcsIDE4MSwgMiwgMjE2LCAxODEsIDIyNywgMTgxLCAyLCAyMjEsIDUxLCAyMjcsIDE4MSwgCi0gICAgMjE3LCAxNzksIDIxMCwgMjAsIDIyNywgMTgxLCAyMTcsIDE3OSwgMjIwLCAyNTIsIDIwOSwgNSwgMjEwLCAyMCwgMjI3LCAKLSAgICAxODEsIDIxNywgMTc5LCAyNDYsIDIwNiwgMjI3LCAxODEsIDIxNywgMTc5LCAyMDgsIDIsIDI0NiwgMjA2LCAyMjcsIDE4MSwgCi0gICAgMjE3LCAxNzksIDIwOCwgMSwgMjI3LCAxODEsIDE3LCAyMDIsIDg0LCAyMjcsIDE4MSwgMTcsIDEwNSwgMjI3LCAxODEsIDE3LCAKLSAgICAxMDgsIDIyNywgMTgxLCAxNywgMTQ3LCAyMjcsIDE4MSwgMTcsIDE0OSwgMjI3LCAxODEsIDE3LCAxNzAsIDIyNywgMTgxLCAKLSAgICAxNywgMTk1LCAyMjcsIDE4MSwgMTcsIDIxMywgMTExLCAyMjcsIDE4MSwgMTcsIDE5OSwgMjI3LCAxODEsIDE3LCAyMjIsIAotICAgIDYzLCAyMjcsIDE4MSwgMSwgMjA3LCAyNDEsIDIyNywgMTgxLCAxLCAyMDcsIDIyOSwgMjI3LCAxODEsIDEsIDI0NCwgMTIwLCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDIwMiwgODQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTA1LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMTcsIDEwOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTQ5LCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE3MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTUsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxNywgMjEzLCAxMTEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTk5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIAotICAgIDIyMiwgNjMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MCwgNDksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDgxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCAyMjMsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAxLCAyNTEsIDM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI4LCAxMTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAKLSAgICAxLCAyNTEsIDI0MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjQ0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAKLSAgICAyNDIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDIzNywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgMTQ4LCAyMjAsIAotICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjMwLCAyMTUsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzEsIDg0LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMSwgMjMwLCAyMzYsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIyNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIAotICAgIDIyNiwgMjM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAzMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNywgMjksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDYsIDIyOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMTcwLCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMSwgMjI3LCAyMzQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDQ2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgCi0gICAgMSwgMjQxLCAxNjQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDkyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCAKLSAgICAyMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgNDksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIxOSwgMjIwLCAKLSAgICA0NywgMjQ2LCAxMzUsIDEsIDIyMCwgOTMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIwNiwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDEsIDIyMCwgNjAsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NywgMjA3LCAyMDYsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAyMzksIDMsIDIwNywgMjA3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjIzLCAyNDUsIDIwNywgMjA3LCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMjE2LCAxMTgsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTgsIDIwNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDI1MSwgCi0gICAgNzIsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgMjIzLCAyNDEsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgCi0gICAgNTIsIDIyMywgMjQxLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxMCwgMTg0LCAyMTAsIDIxMywgMjE3LCAxNzksIAotICAgIDI0OCwgNjQsIDIxOSwgMTEzLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxNywgMTY3LCAyMTAsIDIxMywgMjE3LCAKLSAgICAxNzksIDI0OCwgNjQsIDI0NywgNzcsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjI3LCAxNzIsIDIxNCwgMjI0LCAKLSAgICAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIzMCwgNDQsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgCi0gICAgNjQsIDI0NCwgMjEzLCAyMTQsIDIyNCwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyNDksIDMzLCAyMTQsIDIyNCwgCi0gICAgMjA2LCA1MiwgMTQzLCAyMjksIDIzNCwgMjA2LCA1MiwgMTQzLCAyMTMsIDU4LCAyMDYsIDUyLCAxNDMsIDIxNywgMjQ1LCAKLSAgICAyMDYsIDUyLCAyLCAyMjIsIDc2LCAyMDYsIDUyLCAyLCAyMDMsIDg3LCAyMjQsIDE0NiwgMjEwLCAxNzUsIDIwNiwgNTIsIAotICAgIDE0MywgMjAzLCA4NywgMjUxLCA3NywgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjMxLCAzNiwgCi0gICAgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAKLSAgICAxNDMsIDI0NywgNTUsIDU2LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIyOSwgMjIyLCAyMzEsIDM2LCAyMTAsIDE3NiwgCi0gICAgMjE0LCAxOTQsIDIwNiwgNTIsIDE0MywgNTIsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwOCwgNzAsIDIxMCwgMTc1LCAKLSAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjIyLCAyNTAsIDE4MiwgMjA2LCA1MiwgMTQzLCA3MCwgNTYsIDIwNiwgNTIsIDE0MywgCi0gICAgMTIwLCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDEyNiwgMTg3LCA1NiwgMjA2LCA1MiwgMTQzLCAyMTYsIDQsIDIyOSwgMjMzLCAKLSAgICAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyNTAsIDQ3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMiwgCi0gICAgMjA1LCAyMDAsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCi0gICAgMjA1LCAyMDAsIDIwNywgMjYsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyNTAsIDE4MiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCi0gICAgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIAotICAgIDIsIDIwNSwgMjAwLCAyNTAsIDE4MywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyNTAsIDE5NywgMjA2LCAKLSAgICA1MiwgMiwgMjUwLCAxODEsIDI0OSwgMiwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDIwNiwgNzcsIDIwNiwgNTIsIDIsIDI1MCwgCi0gICAgMTgxLCAyMDYsIDc4LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjA4LCAyMDEsIDIwNiwgNTIsIDIsIDIzNywgMTUsIAotICAgIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDIxNSwgMTQ3LCAxNjMsIDI1MCwgCi0gICAgMTgwLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA3LCAzMywgMjIzLCAyMzIsIDIwNiwgNTIsIDIsIDI1MCwgMTIyLCAyMDYsIAotICAgIDUyLCAyLCAyMTUsIDE5OCwgMjUwLCAxMjIsIDIwNiwgNTIsIDE0MywgMjQ3LCA1NSwgNTUsIDIwNiwgNTIsIDIsIDIzMCwgCi0gICAgMTM1LCAyMDYsIDUyLCAyLCAyMDYsIDIyMiwgMjA2LCA1MiwgMTQzLCAyMTUsIDI1MywgNTUsIDIwNiwgNTIsIDE0MywgNTIsIAotICAgIDIxNSwgMjUzLCA1NSwgOCwgMSwgNSwgNiwgNjMsIDgsIDEsIDUsIDYsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCi0gICAgMjUxLCAxMDksIDgsIDEsIDUsIDYsIDI0OCwgMjI1LCAyNDksIDI1NSwgOCwgMSwgNSwgNiwgMjQ3LCAxMjUsIDgsIDEsIDUsIAotICAgIDYsIDI0NSwgNTEsIDgsIDEsIDUsIDYsIDI0MCwgMjQzLCA4LCAxLCA1LCA2LCA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE3MSwgCi0gICAgNzQsIDgsIDUsIDEsIDIwNywgMTc0LCA3NSwgOCwgMSwgNSwgNiwgMjMwLCAxODQsIDgsIDEsIDUsIDYsIDIzMCwgNTQsIDgsIAotICAgIDEsIDUsIDYsIDIyOCwgMTMxLCAzLCA5NSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDgsIDEsIDUsIDYsIDIxNiwgNzMsIDIyMywgCi0gICAgMTYzLCA4LCAxLCA1LCA2LCA3OCwgOCwgMSwgNSwgNiwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDc4LCA4LCA1LCAxLCAKLSAgICAyMTIsIDE1NCwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIAotICAgIDczLCA4LCAxLCA1LCA2LCAyMTksIDIxNiwgOCwgNSwgMSwgMjA4LCAxNDUsIDE2MiwgNzgsIDgsIDUsIDEsIDI0NywgMjQ4LCAKLSAgICAxNjIsIDc4LCA4LCAxLCA1LCA2LCAyMTksIDE4NCwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMTQ2LCA4LCAxLCA1LCA2LCAyMDcsIAotICAgIDE3NCwgMTQ2LCA4LCAxLCA1LCA2LCAyMTAsIDY5LCA4LCAxLCA1LCA2LCA2OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDY4LCA4LCAKLSAgICA1LCAxLCAyMTIsIDE1NCwgMjQzLCAyMjksIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAKLSAgICAxLCA1LCA2LCAyMDYsIDE2NCwgOCwgMSwgNSwgNiwgMjA0LCAxNDQsIDgsIDEsIDUsIDYsIDIwMiwgMTU5LCA4LCAxLCA1LCAKLSAgICA2LCAyNDAsIDE3NywgOCwgMSwgMjA1LCAxODYsIDIyOCwgMywgMjExLCAyMDAsIDgsIDEsIDI1MSwgNTksIDMwLCAxLCA1LCAKLSAgICA2LCAyMzgsIDIzNSwgMzAsIDEsIDUsIDYsIDIyOCwgMjQsIDMwLCAxLCA1LCA2LCAyMTgsIDE2NywgMzAsIDEsIDUsIDYsIAotICAgIDIxNiwgNTksIDMwLCAxLCA1LCA2LCAyMTcsIDIwMiwgMzYsIDEsIDUsIDYsIDI0MSwgMTIyLCA2NSwgMSwgNiwgNjMsIDY1LCAKLSAgICAxLCA2LCAyNTEsIDEwOSwgNjUsIDEsIDYsIDI0OSwgMjU1LCA2NSwgMSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA2NSwgMSwgCi0gICAgNiwgMjQ1LCA1MSwgNjUsIDEsIDYsIDc0LCA2NSwgMSwgNiwgMjE2LCA3MywgNzQsIDY1LCAxLCA2LCAyMzksIDc1LCA2NSwgCi0gICAgMSwgNiwgMjM3LCAxNzEsIDY1LCAxLCA2LCA3NSwgNjUsIDEsIDYsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjMwLCA1NCwgNjUsIAotICAgIDEsIDYsIDE1OSwgNjUsIDEsIDYsIDIyNiwgMTg1LCA2NSwgMSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA2LCAyMTYsIDczLCAKLSAgICAyMjMsIDE2MywgNjUsIDEsIDYsIDc4LCA2NSwgMSwgNiwgMjE5LCAyMTYsIDY1LCAxLCA2LCAyMTksIDE4NCwgNjUsIDEsIDYsIAotICAgIDE0NiwgNjUsIDEsIDYsIDIxMCwgNjksIDY1LCAxLCA2LCA2OCwgNjUsIDEsIDYsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgNjMsIAotICAgIDY1LCAxLCA1LCAyMDcsIDE3NCwgNjMsIDY1LCAxLCA1LCAyNTEsIDIsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjUxLCAxMDksIAotICAgIDY1LCAxLCA1LCAyNDksIDI1NSwgNjUsIDEsIDUsIDI0NSwgNTEsIDY1LCAxLCA1LCA3NCwgNjUsIDEsIDUsIDIxNCwgMTkyLCAKLSAgICA2NSwgMSwgNSwgMTcxLCA3NCwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjM5LCA3NSwgNjUsIDEsIAotICAgIDUsIDIwNywgMTc0LCA3NSwgNjUsIDEsIDUsIDIzMCwgNTQsIDY1LCAxLCA1LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDI0MSwgCi0gICAgNzgsIDY1LCAxLCA1LCA3OCwgNjUsIDEsIDUsIDE3MSwgNzgsIDY1LCAxLCA1LCAyMDgsIDE0NSwgMTYyLCA3OCwgNjUsIDEsIAotICAgIDUsIDI0NywgMjQ4LCAxNjIsIDc4LCA2NSwgMSwgNSwgMjE5LCAxODQsIDY1LCAxLCA1LCAyMTAsIDY5LCA2NSwgMSwgNSwgCi0gICAgNjgsIDY1LCAxLCA1LCAyMTIsIDE1NCwgNjgsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjI2LCAxODUsIDY1LCAxLCA1LCAyMDYsIAotICAgIDE2NCwgNjUsIDEsIDUsIDI1MSwgNTksIDY1LCAxLCA1LCAyNDgsIDEwNiwgNjUsIDEsIDUsIDMwLCAyMzgsIDIzNSwgNjUsIAotICAgIDEsIDUsIDI0NCwgMzcsIDY1LCAxLCA1LCAzMCwgMjE4LCAxOTIsIDY1LCAxLCA1LCAyNDYsIDE0MiwgOCwgMjEwLCAyNDYsIAotICAgIDUsIDEsIDc1LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTQ2LCA4LCAyMTAsIDI0NiwgNSwgMSwgNjgsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMDYsIDE2NCwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyNDgsIDEwNiwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMzgsIDIzNSwgCi0gICAgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMTYsIDU5LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxOCwgMTkyLCAzMCwgMjEwLCAyNDYsIAotICAgIDUsIDEsIDI0NiwgMTQyLCA4LCA1LCAxLCAyMDcsIDI0LCA4LCA1LCAxLCA2NiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjQ1LCA1MiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIyNiwgMTg2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNywgMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCAyMzksIDI0MSwgMjUsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAxMDEsIDIwOCwgCi0gICAgMjI3LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM5LCA3NSwgNjUsIDEsIDM2LCAyNDEsIDkyLCA4LCA1LCAxLCAyMzEsIDQsIAotICAgIDIzOSwgNzUsIDgsIDUsIDEsIDIwOSwgMTExLCAzLCAyMTEsIDM2LCA4LCA1LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCA5NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDk1LCA4LCA1LCA2LCAxLCAxMDYsIDMsIDk1LCAKLSAgICA4LCA1LCAxLCAyMDYsIDIxNywgMywgOTUsIDgsIDUsIDEsIDY2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDUsIAotICAgIDUyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI4LCAKLSAgICAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjMsIAotICAgIDE2NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxNywgCi0gICAgMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQxLCA4LCAKLSAgICAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAzLCAxOTcsIAotICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNTEsIDMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjM2LCAKLSAgICAxMTYsIDI1LCAyMDksIDI0OCwgOCwgNSwgMSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgMTg4LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNCwgCi0gICAgMTkzLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgCi0gICAgMTU4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0MSwgOCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAKLSAgICAyNTEsIDIsIDY1LCAxLCA1LCAyNDcsIDEyNSwgNjUsIDEsIDUsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA2NSwgMSwgNSwgCi0gICAgMjQwLCAyNDMsIDY1LCAxLCA1LCAyMTYsIDczLCAxNzEsIDc0LCA2NSwgMSwgNSwgMjQwLCAxNzQsIDY1LCAxLCA1LCAyNDMsIAotICAgIDg0LCAyMzAsIDE4NSwgMywgOTUsIDY1LCAxLCA1LCAxMzIsIDIzOSwgNzUsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjM3LCAKLSAgICAxNzEsIDY1LCAxLCA1LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDIzMCwgNjUsIDEsIDUsIDYsIDc1LCA2NSwgCi0gICAgMSwgNSwgNiwgMjM1LCAyMDYsIDMsIDk1LCA2NSwgMSwgNSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA2NSwgMSwgNSwgMjI4LCAKLSAgICAxMzEsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMTksIDE0MiwgMTEzLCA2NSwgMSwgNSwgNiwgCi0gICAgMTU5LCA2NSwgMSwgNSwgMjI2LCAxODYsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NiwgMywgMTYzLCAKLSAgICAyMjcsIDIxMCwgNjUsIDEsIDUsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIAotICAgIDExMywgNjUsIDEsIDUsIDYsIDIyMywgMTYzLCA2NSwgMSwgNSwgMjQ4LCAyMjUsIDc4LCA2NSwgMSwgNSwgMjE4LCAxOTIsIAotICAgIDY1LCAxLCA1LCAyMTUsIDk0LCAzLCAxMTMsIDY1LCAxLCA1LCAyNDEsIDcsIDY1LCAxLCA1LCAyMTAsIDcwLCAzLCAyMTksIAotICAgIDE0MiwgMTEzLCA2NSwgMSwgNSwgMTA2LCAxNDIsIDY1LCAxLCA1LCAyMDYsIDIxNiwgNjUsIDEsIDUsIDYsIDY4LCA2NSwgMSwgCi0gICAgNSwgMjA2LCAxNjUsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMDYsIDE2NCwgNjUsIDEsIDUsIDIwMiwgMTU5LCAKLSAgICA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA2NSwgCi0gICAgMSwgNSwgMjQwLCAxNzcsIDY1LCAxLCA1LCAyMDksIDc0LCAzOSwgMjQyLCA4MywgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgCi0gICAgMjQyLCA4MywgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgMjEyLCAyNSwgNTYsIDM5LCAyMTAsIDE4MiwgODIsIDM5LCAyMjUsIAotICAgIDE2OSwgMzksIDIzNywgMjUxLCAzOSwgMjI1LCAxNjcsIDM5LCAyNTEsIDEyNCwgMzksIDIzNywgMjUyLCAzOSwgMjUxLCAKLSAgICAxMjUsIDM5LCA4LCA1LCAxLCAyMTcsIDEsIDU2LCAzOSwgMjQ3LCAyMTMsIDM5LCAyMjUsIDE2OCwgMzksIDUyLCAyNDYsIAotICAgIDUzLCA1NSwgMzksIDIyMCwgNjMsIDU1LCAzOSwgMjAyLCAzMCwgNTYsIDM5LCAyMzAsIDIxNiwgNTYsIDM5LCAyMDYsIDIxMSwgCi0gICAgNTUsIDM5LCAyMDYsIDE5NCwgNTUsIDM5LCA4LCA1LCAxLCAyMzksIDIxNCwgMTcxLCAzNCwgNTUsIDM5LCA4LCA1LCAxLCAKLSAgICAyNTEsIDEwOSwgMzksIDgsIDUsIDEsIDI1MCwgMTc4LCAzOSwgOCwgNSwgMSwgMjUwLCAxOCwgMzksIDgsIDUsIDEsIDI0NywgCi0gICAgMTI2LCAyNDYsIDIzMSwgMzksIDgsIDUsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDI0MCwgMjQzLCAzOSwgCi0gICAgOCwgNSwgMSwgMjM5LCA3NSwgMzksIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDM5LCA4LCA1LCAxLCAyMzAsIDU0LCAzOSwgOCwgCi0gICAgNSwgMSwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDM5LCA4LCA1LCAxLCAKLSAgICAyMjMsIDE2MywgMzksIDgsIDEsIDUsIDYsIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMTQ2LCAzOSwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAyMTUsIDE5MiwgMzksIDgsIDUsIDEsIDE5NCwgMzksIDgsIDUsIDEsIDE2MywgMTk0LCAzOSwgOCwgNSwgMSwgCi0gICAgMjAyLCAxNTksIDM5LCA4LCA1LCAxLCAyNTEsIDIsIDM5LCA4LCA1LCAxLCAyNDksIDI1NSwgMzksIDgsIDUsIDEsIDI0OCwgCi0gICAgMTA2LCAzOSwgOCwgNSwgMSwgMjE0LCAxOTIsIDM5LCA4LCA1LCAxLCAyNDAsIDE3NCwgMzksIDgsIDUsIDEsIDIyOCwgMTMxLCAKLSAgICAzLCA1MiwgMTAxLCAyMDgsIDIyNywgMzksIDgsIDUsIDEsIDE1OCwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIDM5LCA4LCA1LCAKLSAgICAxLCAyMTksIDE4NCwgMzksIDgsIDUsIDEsIDI0MSwgNywgMzksIDgsIDUsIDEsIDEwNiwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIAotICAgIDM5LCA4LCA1LCAxLCAyMDQsIDE0NCwgMzksIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMjQzLCAyMzEsIDM5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzOSwgMTEyLCAyMTAsIDQsIDU1LCAzOSwgNTIsIAotICAgIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU2LCAzOSwgNDksIDI1MCwgOTUsIAotICAgIDU1LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMjEsIDI1MCwgOTUsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCAKLSAgICA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU1LCA4LCA1LCAxLCA2NiwgMywgNzAsIAotICAgIDU1LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA1LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA2LCAxLCA2NiwgMywgMjI3LCAKLSAgICAxMTUsIDU2LCA4LCA1LCAxLCA2NiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzIsIAotICAgIDI1LCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NiwgOCwgNSwgCi0gICAgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDI0NSwgCi0gICAgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIAotICAgIDI0NiwgMjMxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ2LCA1MywgCi0gICAgNTYsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgCi0gICAgMTcxLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgMjQ2LCAyMzIsIDI1LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCAKLSAgICA4LCA2LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMzksIAotICAgIDc2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgCi0gICAgNTUsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIAotICAgIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIAotICAgIDIzMSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCA1NiwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCAKLSAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCAKLSAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMyLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKLSAgICAyMzIsIDI1LCAxNjUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDE2NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA2LCAKLSAgICAxLCAyMzAsIDU1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjMwLCA1NSwgMywgCi0gICAgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICA3MCwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA3MCwgMjQ4LCAxMjYsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAKLSAgICAyMjgsIDEzMSwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDE2NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDE2NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCAKLSAgICA1NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIAotICAgIDcwLCA1NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNiwgCi0gICAgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgCi0gICAgMSwgMjIzLCAxNjQsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDE2NSwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDIxNywgMSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDUsIAotICAgIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIAotICAgIDU2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA1LCAKLSAgICAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCi0gICAgMjUxLCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDUsIDEsIAotICAgIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAKLSAgICAzLCA3MCwgNTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgNzAsIDU2LCA4LCAKLSAgICA1LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCi0gICAgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjEwLCAKLSAgICA3MCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgCi0gICAgMjMyLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCAKLSAgICA2LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIAotICAgIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIAotICAgIDIyNSwgMTcxLCAyNSwgMjQzLCAyMzEsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNiwgMSwgCi0gICAgMjA2LCAxNjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIwNiwgMTY1LCAKLSAgICAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyMzcsIDI1MywgCi0gICAgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMTY1LCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NSwgMywgMTY1LCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIAotICAgIDIzMSwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgCi0gICAgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIDI0MywgMjMxLCA4LCAKLSAgICA1LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgCi0gICAgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICA1MCwgMTYyLCAyMTUsIDI1MiwgOCwgNSwgMSwgMTYzLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE2MywgMjE1LCAKLSAgICA5NCwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDIxMywgNTcsIAotICAgIDE5NCwgOCwgNSwgMSwgMjQ0LCAzNywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIAotICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAxODgsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjM2LCAxMTYsIAotICAgIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgCi0gICAgMTE2LCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIAotICAgIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgCi0gICAgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAKLSAgICAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIAotICAgIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDExNiwgCi0gICAgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKLSAgICA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM3LCAyNTMsIDgsIAotICAgIDUsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIAotICAgIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA1LCAxLCAyMjQsIDE0NywgMjI3LCA3OCwgOCwgNiwgMSwgCi0gICAgMjI0LCAxNDcsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAKLSAgICAyMjcsIDE0LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI3LCAxNCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIAotICAgIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIAotICAgIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MSwgMzgsIAotICAgIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAKLSAgICAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIAotICAgIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAotICAgIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIAotICAgIDIzMCwgMjMxLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDIzMCwgCi0gICAgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIAotICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAKLSAgICAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIAotICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgCi0gICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzUsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAKLSAgICAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgCi0gICAgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgCi0gICAgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgCi0gICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgCi0gICAgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgCi0gICAgMSwgMjUxLCAzLCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MSwgMzgsIAotICAgIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAKLSAgICAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTksIAotICAgIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCi0gICAgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgCi0gICAgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAotICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAKLSAgICAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAKLSAgICAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCi0gICAgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgCi0gICAgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIAotICAgIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIAotICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIAotICAgIDIyMSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCi0gICAgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIAotICAgIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIAotICAgIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAotICAgIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAKLSAgICAzLCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAKLSAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAyMDksIAotICAgIDMwLCAyMjgsIDI1MiwgMzAsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTUsIDMwLCAyMTgsIDIzOSwgMzAsIDI0MywgMjI1LCAyNSwgCi0gICAgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgCi0gICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI0MCwgMjQ5LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAKLSAgICAyMzAsIDIzMSwgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE4LCAKLSAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAKLSAgICAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDYsIAotICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgCi0gICAgMjA1LCAxNjcsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAKLSAgICAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMTYsIDYwLCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDIxNiwgNjAsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjA2LCAKLSAgICAyMTcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyMDYsIAotICAgIDIxNywgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIxNiwgNjAsIDMsIAotICAgIDI0NCwgMTQxLCAzMCwgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIAotICAgIDM3LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDIwOSwgMzAsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDEsIDI0MSwgOTMsIDIxNywgNjIsIDI0MSwgMTA0LCAyMTcsIDYyLCAKLSAgICAyNDEsIDkzLCAyMTEsIDIyOCwgMjQxLCAxMDQsIDIxMSwgMjI4LCAyMDksIDI4LCAyMTEsIDIyOCwgMjM5LCAxNDUsIDIxMSwgCi0gICAgMjI4LCAyMTIsIDg2LCAyMTEsIDIyOCwgMjQwLCAxNiwgMjExLCAyMjgsIDIxNywgMTc5LCAyMTEsIDIyOCwgMjA5LCA2MywgCi0gICAgMjExLCAyMjgsIDIzNywgMTQ2LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjExLCAyMjgsIDIwMiwgODUsIDIwNCwgCi0gICAgMjQsIDIyMSwgMTgzLCAyMDIsIDg1LCAyMDQsIDI0LCAyMzAsIDk2LCAyMjcsIDIxMywgODIsIDIxNiwgNywgODIsIDIzNSwgCi0gICAgMjIwLCAyMjEsIDE4NCwgMjM1LCAyMjAsIDI0MCwgMTYsIDI0NCwgMTQ0LCAyNDEsIDkzLCAyNDQsIDE0NCwgMjQxLCAxMDQsIAotICAgIDI0NCwgMTQ0LCAyMzYsIDEwNiwgMTQyLCA1MiwgODAsIDIyNywgMTE0LCA1MiwgMTI0LCAyMjcsIDExNCwgNDksIDIxMiwgCi0gICAgMTIwLCAyMTcsIDMxLCA4MiwgNTAsIDIxMiwgMTIwLCAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIyNiwgMjU1LCAyMTcsIDMxLCAKLSAgICA4MiwgMjEyLCAxMjAsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgNDksIDUyLCAyMTcsIDMxLCA4MiwgNTAsIDUyLCAyMTcsIAotICAgIDMxLCA4MiwgNTIsIDIyNiwgMjU1LCAyMTcsIDMxLCA4MiwgNTIsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgMjQ0LCAxOTUsIAotICAgIDUyLCAyNDQsIDE5NSwgMjQ3LCAxNzcsIDIwOCwgODIsIDI0NywgMTc3LCAxMTgsIDcwLCAyMjcsIDIzMiwgMTIwLCA3MCwgCi0gICAgMjI3LCAyMzIsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMjM1LCAyMTgsIDIxOCwgNjIsIDIyNywgMTE1LCAyMTMsIDEzMCwgMjE5LCAKLSAgICA4OSwgMjEzLCAxMzAsIDIyNywgMjEzLCAyNDEsIDEwMiwgMjE2LCA3LCAyNDEsIDEwMiwgMjE4LCA0MiwgMjQzLCAxNjUsIAotICAgIDIzOSwgMTU3LCAyMjcsIDIxMywgMjE5LCAxOTYsIDIxNiwgNywgMjE5LCAxOTYsIDIyMywgNzMsIDIyMSwgMTkwLCAyMTEsIAotICAgIDIyOCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgMjE3LCAyMzYsIAotICAgIDUyLCAyMTcsIDIzNiwgMjA4LCA3MCwgMjE3LCAyMzYsIDIxNiwgNzMsIDIxNywgMjM2LCAyMTYsIDczLCA1MiwgMjE3LCAKLSAgICAyMzYsIDIxNiwgNzMsIDIwOCwgNzAsIDIxNywgMjM2LCAyNDcsIDMzLCAyMTIsIDEyMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAKLSAgICAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjE2LCAxMzQsIDgyLCA1MiwgCi0gICAgMjQwLCAyMTIsIDgyLCAyMzAsIDI0NywgMjE5LCAxOTgsIDIwNiwgMjQzLCAxNjcsIDIwOCwgMjUwLCAyNDcsIDM0LCAyMzEsIAotICAgIDgsIDIxOCwgNjIsIDI1MCwgNTcsIDIzNSwgMjIxLCAyNDcsIDE3NywgMjM5LCAxMzgsIDIxMiwgNTcsIDQ5LCA1MSwgMjQ3LCAKLSAgICAyMjcsIDMsIDIxNywgNDEsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIxNywgNDEsIDUyLCAyMTcsIDQ3LCA4MiwgMjE3LCA0NywgCi0gICAgMjQwLCAyMTIsIDgyLCAyNDAsIDIxMiwgMjE3LCA0NywgODIsIDIwOCwgMjAzLCAyLCAyNDAsIDI1MCwgMjE2LCA3MywgMjE4LCAKLSAgICAxMjYsIDU0LCA2MiwgOTYsIDI0NywgMTc3LCA2MiwgODYsIDI0NywgMTc3LCAxMjQsIDI1MCwgNTksIDIxNiwgNzMsIDIxMywgCi0gICAgMTQzLCAyNDYsIDE3LCAyMDYsIDIyNCwgMTIwLCAyNTAsIDU4LCAyNTEsIDE4LCAyMDUsIDI0MywgMjQ1LCAyMzEsIDIyNCwgCi0gICAgMTAzLCA1NCwgMjEwLCAxNTMsIDI0NCwgMTQ0LCAyMzAsIDIzOSwgMjA2LCAyNDMsIDIzOSwgMTk4LCAyMTcsIDE3OSwgODIsIAotICAgIDEyNiwgNzAsIDIxNywgMTc4LCAyMTcsIDU4LCAyMTcsIDIzNiwgMjM5LCAxNDcsIDcwLCAyMTcsIDE3OCwgMjM5LCAyMzMsIAotICAgIDcwLCAyMTcsIDE3OCwgMTIwLCA3MCwgMjE3LCAxNzgsIDIzOSwgMTQ3LCA3MCwgODIsIDI0MiwgODMsIDI0NSwgMTMwLCAKLSAgICAyMDgsIDgxLCA4MCwgMjM5LCAxNDcsIDI0MywgODMsIDIyNSwgMTAsIDEzLCAyMTEsIDIyOCwgMjAzLCAyMzgsIDIzMCwgOTYsIAotICAgIDIzOSwgMTAwLCAyNTAsIDE1NSwgMjMwLCAyMzcsIDIwOCwgMjE5LCAyMzAsIDIzNywgMjEzLCAxMzAsIDIzMCwgMjM3LCAKLSAgICAyMTgsIDc2LCAyMjcsIDIxMywgMjMwLCAyMDcsIDIxNiwgNywgMjMwLCAyMDcsIDIzOSwgMjQ1LCAyMTEsIDE4LCAyMzAsIAotICAgIDIwNywgMjE4LCA0MiwgMjQzLCAxNjUsIDIzMCwgMjA3LCAyMzEsIDIwLCAyMTAsIDEwMSwgMjEwLCAxNzAsIDI1MSwgMTI4LCAKLSAgICAyMTAsIDEwMSwgMjEwLCAxNzAsIDIzMSwgMjAsIDEwLCAyMzksIDE1OSwgMjEzLCA2MSwgMjUxLCAxMjgsIDEwLCAyMzksIAotICAgIDE1OSwgMjEzLCA2MSwgMjIzLCA2NywgMTcsIDIxMywgNjIsIDIyMSwgMTg2LCAxNywgMjEzLCA2MiwgMjEwLCAxOTksIDIwMiwgCi0gICAgODQsIDIxMCwgMTk5LCA4LCA1LCAxLCA3NSwgMjEwLCAxOTksIDE0OSwgMjEwLCAxOTksIDE3MCwgMjEwLCAxOTksIDE5NSwgCi0gICAgMjEwLCAxOTksIDIxMywgMTExLCAyMTAsIDE5OSwgMTk5LCAyMTAsIDE5OSwgMjIyLCA2MywgMjEwLCAxOTksIDkxLCA1NCwgCi0gICAgMjEwLCAxOTksIDIyNCwgMTAyLCAyMTAsIDE5OSwgMjQxLCAzNSwgNTQsIDIxMCwgMTk5LCA0OSwgMjE5LCA3NiwgMjEwLCAKLSAgICAxOTksIDUwLCAyMTksIDc2LCAyMTAsIDE5OSwgOCwgNSwgMSwgMjIzLCAxNjMsIDIxMCwgMjQ2LCAyMDIsIDg0LCAyMTAsIAotICAgIDI0NiwgMTA1LCAyMTAsIDI0NiwgMTA4LCAyMTAsIDI0NiwgMTQ3LCAyMTAsIDI0NiwgMTQ5LCAyMTAsIDI0NiwgMTcwLCAKLSAgICAyMTAsIDI0NiwgMTk1LCAyMTAsIDI0NiwgMjEzLCAxMTEsIDIxMCwgMjQ2LCAxOTksIDIxMCwgMjQ2LCAyMjIsIDYzLCAyMTAsIAotICAgIDI0NiwgOTEsIDU0LCAyMTAsIDI0NiwgMjI0LCAxMDIsIDIxMCwgMjQ2LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDYsIDQ5LCAKLSAgICAyMTksIDc2LCAyMTAsIDI0NiwgNTAsIDIxOSwgNzYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2MywgOCwgMjEwLCAyNDYsIDUsIDEsIAotICAgIDc0LCA4LCAyMTAsIDI0NiwgNSwgMSwgNzgsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMDMsIDE5NiwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIxNCwgMTkyLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjM3LCAxNzEsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzAsIDU0LCA4LCAKLSAgICAyMTAsIDI0NiwgNSwgMSwgMTU5LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjI2LCAxODUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjMsIAotICAgIDE2MywgOCwgMjEwLCAyNDYsIDUsIDEsIDIxOSwgMTg0LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTk0LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMjQwLCAyMjksIDU0LCAyNDUsIDI0MywgNTQsIDI0NSwgMTE1LCA1NCwgMjM5LCAxMjgsIDIzOSwgMTMyLCAKLSAgICA1NCwgMjI3LCA5NCwgNTQsIDIyNCwgMTE3LCA1NCwgMjIzLCA5MCwgNTQsIDIxOCwgMjI0LCA1NCwgMjE1LCAxMjAsIDU0LCAKLSAgICAyMDMsIDI0NiwgNTQsIDIyMiwgMjE0LCAyMTMsIDI5LCA1NCwgMjQzLCA5MiwgNTQsIDI0MCwgMjMwLCA1NCwgMjI5LCA3OSwgCi0gICAgNTQsIDIwNywgMTk2LCA1NCwgMjQyLCA2NiwgNTQsIDIzOCwgMTY2LCAyMTksIDIsIDU0LCAyMTgsIDIyMSwgNTQsIDIzNywgCi0gICAgMjI1LCA1NCwgMjUwLCAyNCwgNTQsIDIzNiwgMzIsIDU0LCAyNDYsIDIzMywgNTQsIDIyNywgODQsIDIwOCwgMTI1LCA1NCwgCi0gICAgMjExLCAyMDksIDU0LCAyMDksIDE1MCwgNTQsIDIzMSwgMzQsIDIxNSwgMTIwLCA1NCwgMjA3LCAxNzcsIDIyNywgOTQsIDU0LCAKLSAgICAyMjEsIDE3MywgMTMxLCA1NCwgMjI1LCAxMjAsIDU0LCAyMTUsIDE0MiwgNTQsIDIyOCwgNCwgNTQsIDM5LCA0OSwgMjM3LCAKLSAgICA4NywgNTUsIDM5LCA1MCwgMjM3LCA4NywgNTUsIDM5LCAxNjMsIDgwLCAyMjcsIDExNSwgMjE5LCAxOTksIDM5LCAyMTIsIAotICAgIDIyOCwgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCA1MywgNTUsIDM5LCAyNDYsIDE4LCA1MywgNTUsIAotICAgIDM5LCA0OSwgNTMsIDU1LCAzOSwgNTAsIDUzLCA1NSwgMzksIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDI0NiwgMTgsIDIxNSwgCi0gICAgMjUzLCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCAyMTUsIDI1MywgMjE5LCAxOTksIDM5LCAxMjYsIDE4NywgNTUsIDM5LCAKLSAgICAyMzksIDE0NywgMTg3LCA1NSwgMzksIDI0MSwgODgsIDI0NiwgNjEsIDM5LCAyNDEsIDg4LCAyMTEsIDE3NywgMzksIDI0MSwgCi0gICAgODgsIDI0MywgMjIxLCAzOSwgMjQxLCA4OCwgMjQ2LCA2MiwgMjQ5LCAyMCwgMzksIDQ5LCA1MCwgNTMsIDU1LCAzOSwgMjQxLCAKLSAgICA4OCwgMjE0LCAxODQsIDM5LCAyNDEsIDg4LCAyMjksIDE0NywgMzksIDI0MSwgODgsIDIwNiwgMjE0LCAyMTgsIDU5LCAyMDgsIAotICAgIDg1LCAzOSwgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDUyLCA4MCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAKLSAgICAyNTAsIDIwNCwgOTcsIDM5LCAyMDgsIDcwLCAyMDYsIDI0NSwgMzksIDIwNCwgMjcsIDI0NywgMjA4LCA1NSwgMzksIDk2LCAKLSAgICA1MywgMjE5LCAxOTksIDM5LCAxNjMsIDUyLCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgODYsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjQyLCA2OCwgMzksIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDM5LCA0OSwgNTMsIDU2LCAzOSwgNTAsIDUzLCAKLSAgICA1NiwgMzksIDI1MCwgNjAsIDU1LCAyNTEsIDEzNCwgMjIwLCA2OSwgMjUxLCAxMTgsIDIwOCwgMTczLCAyMDksIDkzLCAyMTAsIAotICAgIDI1NSwgMTY5LCA2LCAyNDcsIDEyNSwgMjQ0LCA1NSwgMjQ2LCAyMjMsIDI0NiwgMjE4LCAyMjcsIDExNSwgOTcsIDI0NywgCi0gICAgMzUsIDIyMCwgNjksIDI0NywgODQsIDIwNiwgMjU0LCAyNDAsIDIzMSwgMjQ1LCAyMDAsIDIxNCwgMTgxLCAyNDQsIDU1LCAKLSAgICAyNDAsIDkwLCAxMzIsIDUsIDIzOSwgNzUsIDEzMiwgNiwgMjM3LCAxNzEsIDI0OCwgNDEsIDYsIDIzNywgMTcxLCAxNjksIDYsIAotICAgIDIzNywgMTcxLCAyMTgsIDkzLCAyNDUsIDIwMCwgMjE4LCA5MywgMjQ1LCAyMDEsIDExNSwgMTIwLCAyMTgsIDE2NywgMTMyLCAKLSAgICA2LCA3NSwgMjQ4LCA0MSwgNiwgNzUsIDEzMiwgNiwgMTU5LCAxMzIsIDUsIDE1OSwgMjI4LCAxMzEsIDY2LCAyNDgsIDIzMSwgCi0gICAgOTcsIDE2OSwgNiwgMjIzLCAxNjMsIDIyMSwgNDIsIDU0LCAyMTEsIDI0MSwgMjE2LCAxNDYsIDI0NSwgMTY4LCAxMzIsIDYsIAotICAgIDIxOSwgMTg0LCAxNjksIDYsIDIxOSwgMTg0LCAxNjksIDYsIDIxNywgMTM0LCAxMzIsIDYsIDE0NiwgMjQ4LCA0MSwgNiwgCi0gICAgMTQ2LCAxNjksIDYsIDE0NiwgMjE3LCAyNDMsIDIwOSwgMjQxLCAyMTYsIDg2LCAyMTMsIDEyMiwgODIsIDIwOSwgMTYyLCAKLSAgICA1NCwgMjA4LCAxMTUsIDEzMSwgNTQsIDIwNiwgMzksIDE2OSwgNiwgMjAyLCAxNTksIDIxOSwgMjE1LCA1NCwgMjIwLCA1OSwgCi0gICAgNTQsIDIzMCwgMjM5LCAyMjAsIDU5LCA1NCwgMjQ4LCA0MSwgNiwgMjAyLCAxNTksIDIwNywgMTc0LCAzMCwgNSwgMSwgMjMwLCAKLSAgICAyMzAsIDIyOSwgMTg4LCA1NCwgMjUwLCAyMTMsIDU0LCAxMzIsIDYsIDI0OSwgMjU1LCAyNDgsIDQxLCA2LCAyNDcsIDEyNSwgCi0gICAgMjQwLCAyNTUsIDk3LCAxMzIsIDUsIDc0LCAxMzIsIDYsIDc0LCAxMzIsIDYsIDI0MCwgMTc0LCAyMDcsIDE3NCwgNiwgMjQwLCAKLSAgICAxNzQsIDEzMiwgNiwgMjI2LCAxODUsIDEzMiwgNSwgNzgsIDEzNywgOTcsIDI0OCwgMTA5LCA5NywgMjM4LCA2OCwgOTcsIAotICAgIDI0NCwgMTc5LCA5NywgMjMxLCAyNSwgMjExLCAyMzksIDIxNSwgMTk4LCA2LCAyMTcsIDEzNCwgMjQwLCA5MywgNTQsIDE2OSwgCi0gICAgNSwgMjE4LCAxNjcsIDE2OSwgNSwgMjM4LCAyMzUsIDE2OSwgNiwgMjM4LCAyMzUsIDE2OSwgNiwgMjE4LCAxNjcsIDE2OSwgCi0gICAgMjIzLCAxNjIsIDIxMCwgMjE3LCAyMDcsIDE3NCwgNDEsIDYsIDIzOSwgNzUsIDIwNywgMTc0LCA0MSwgNiwgMTU5LCAyMTYsIAotICAgIDczLCA0MSwgNiwgMTU5LCAyMDcsIDE3NCwgNDEsIDYsIDIwMywgMTI0LCAxNjksIDM3LCA2LCAyNDUsIDUxLCAxNjksIDM3LCAKLSAgICA1LCAyNDUsIDUxLCAxNjksIDM3LCA1LCA3NCwgMTY5LCAzNywgNSwgNzUsIDE2OSwgMzcsIDUsIDIzMCwgMTg0LCAyMTcsIAotICAgIDIxMiwgMjI3LCAxMTQsIDIwNywgMTc0LCAyNTAsIDIzNSwgMjE4LCAyNDcsIDU0LCAyNTEsIDQxLCAyMDcsIDE3NCwgNSwgCi0gICAgMjQwLCAxNzQsIDE2LCAzNSwgMjE0LCAyNTIsIDIxMSwgMjM5LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjEzLCAxMDcsIAotICAgIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMjIsIDU3LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjA5LCAxNDMsIDIwNCwgCi0gICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyMCwgMjA5LCA1NywgMjA0LCAxNjEsIAotICAgIDIzOSwgMTM4LCAxMTgsIDI0MCwgMjEsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDEyNiwgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDE0NywgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMTgsIDIxMiwgNzgsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIxMiwgNzYsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTE4LCAyNDEsIDEzOCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDIzOSwgMjMzLCAyNDEsIDEzNiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjQxLCAxMzYsIDIzOSwgCi0gICAgMTM4LCAyMjEsIDQzLCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDgsIDIxNSwgCi0gICAgMjEwLCAyMjEsIDQ0LCAxNDcsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDIxNSwgCi0gICAgMjEwLCAyMjEsIDQ0LCAxOTUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTMsIDExMSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgMjE1LCAyMTAsIDIyMSwgCi0gICAgNDQsIDI0MSwgMTEyLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA3LCAxNTQsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMzYsIDExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzYsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDUsIDIxNSwgMjEwLCAKLSAgICAyMjEsIDQ0LCAxMDgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDcsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTUsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAyMTMsIDExMSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MSwgMTEyLCA1LCAyMTUsIDIxMCwgCi0gICAgMjIxLCA0NCwgMjA3LCAxNTQsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMTE4LCAyMzYsIDExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIAotICAgIDQ0LCAxMTgsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzcsIDI0NywgMTI2LCAyNDUsIDUxLCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MywgMjA5LCAKLSAgICAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxNiwgNzMsIDExOCwgMjM2LCAxMSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTIsIDg4LCAyMjcsIDI1NSwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAKLSAgICAyNDEsIDE4MiwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMTE4LCAyMzYsIDEyLCAyMDksIDM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIwMiwgODUsIDIwOSwgNTcsIDIwNywgMTc0LCAKLSAgICAxNywgMTA4LCAyMDcsIDE3NCwgMTcsIDE0NywgOTYsIDQ3LCAxNzcsIDQ3LCA4NiwgNDcsIDE4MywgNDcsIDQ5LCA1MCwgNDcsIAotICAgIDExMiwgMTIxLCA0NywgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyNDEsIDE3NiwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0NywgOTYsIDUzLCAzLCA5NSwgODYsIDUzLCAzLCA5NSwgOTYsIDIwNCwgNzYsIDQ3LCAKLSAgICA4NiwgMjA0LCA3NiwgNDcsIDk2LCAxMjAsIDIzNywgNjIsIDQ3LCAxNzcsIDEyMCwgMjM3LCA2MiwgNDcsIDg2LCAxMjAsIAotICAgIDIzNywgNjIsIDQ3LCAxODMsIDEyMCwgMjM3LCA2MiwgNDcsIDk2LCA1MywgMywgMjA5LCAyNDgsIDg2LCA1MywgMywgMjA5LCAKLSAgICAyNDgsIDk2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUzLCAyMzksIDEyMCwgCi0gICAgMTQyLCAxODMsIDUzLCAyMzksIDEyMCwgMTQyLCAxMTIsIDEyMSwgNTMsIDMsIDI0OCwgMjE4LCA5NiwgNTMsIDMsIDExMywgCi0gICAgODYsIDUzLCAzLCAxMTMsIDk2LCA1MywgMywgMjI3LCAxNCwgODYsIDUzLCAzLCAyMjcsIDE0LCA0OSwgNTAsIDIwNCwgNzYsIAotICAgIDQ3LCA0OSwgNTAsIDUzLCAzLCA5NSwgMTgzLCAyMDIsIDMwLCA0NywgMTc3LCA1MywgMywgMjA4LCAyMTEsIDIyNywgMjEyLCAKLSAgICAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjE2LCA1LCAxODMsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIDE4MywgNTMsIDMsIAotICAgIDIwOCwgMjExLCAyMTYsIDUsIDg2LCA1MywgMywgMjQ1LCAxNjYsIDI0MiwgNjgsIDE4MywgNTMsIDMsIDI0NSwgMTY2LCAKLSAgICAyMjcsIDIxMiwgMjUwLCAxOTQsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgNDcsIDI0NiwgMTgsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgCi0gICAgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAxNjMsIDE0MiwgOTYsIDUzLCAyMDgsIDE3MywgMjQ4LCAyMzEsIAotICAgIDExNSwgODYsIDUzLCAyMDgsIDE3MywgMTQyLCAyNTAsIDE5NCwgMTcxLCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMTcxLCAKLSAgICAyNDYsIDYyLCA0NywgOTYsIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIAotICAgIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDUsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDIzNywgCi0gICAgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDE4MywgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyMTYsIDUsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDUzLCAxMTUsIDk2LCA0NywgMTc3LCA1MywgOTYsIAotICAgIDc2LCAxODMsIDQ3LCA5NiwgNTMsIDExNSwgODYsIDQ3LCA5NiwgMjE5LCAxNDYsIDI1MCwgOTEsIDE3NywgMjE5LCAxNDYsIAotICAgIDI1MCwgOTEsIDg2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTgzLCAyMTksIDE0NiwgMjUwLCA5MSwgOTYsIDIzNywgODcsIDExNSwgCi0gICAgODYsIDIzNywgODYsIDg2LCAyMzcsIDg3LCAxMTUsIDk2LCAyMzcsIDg2LCA5NiwgNTIsIDUzLCAzLCA5NSwgNDksIDUwLCAKLSAgICA1MiwgNTMsIDMsIDk1LCA4NiwgNTIsIDUzLCAzLCA5NSwgOTYsIDUyLCA0NywgMTc3LCA1MiwgNDcsIDg2LCA1MiwgNDcsIAotICAgIDE4MywgNTIsIDQ3LCA0OSwgNTAsIDUyLCA0NywgMTEyLCAxMjEsIDUyLCA0NywgMTUzLCAyMDQsIDQ2LCA1MiwgNDcsIDE1MywgCi0gICAgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA1MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA1MiwgNDcsIAotICAgIDk2LCAyMDgsIDcwLCA0NywgODYsIDIwOCwgNzAsIDQ3LCA5NiwgMjExLCAxNzEsIDQ3LCA4NiwgMjExLCAxNzEsIDQ3LCAKLSAgICAxNzcsIDUzLCAzLCA1MiwgOTUsIDE4MywgNTMsIDMsIDUyLCA5NSwgOTYsIDI0NCwgMTQzLCA0NywgMTc3LCAyNDQsIDE0MywgCi0gICAgNDcsIDg2LCAyNDQsIDE0MywgNDcsIDE4MywgMjQ0LCAxNDMsIDQ3LCA5NiwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgCi0gICAgMjA4LCAxNzMsIDE0MiwgOTYsIDYxLCA0NywgMTc3LCA2MSwgNDcsIDg2LCA2MSwgNDcsIDE4MywgNjEsIDQ3LCAxNzcsIDYxLCAKLSAgICA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAKLSAgICAyMTksIDI3LCAzLCAyMzYsIDEwNiwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNywgMywgODAsIDE0MiwgCi0gICAgMTc3LCA2MSwgNTIsIDQ3LCAxNzcsIDYxLCA1MiwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDg2LCA2MSwgNTMsIDIzOSwgMTIwLCAKLSAgICAyMDQsIDk5LCAxNTMsIDIwNCwgNDYsIDUzLCAyMDgsIDE3MywgMjQ1LCAxNjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIAotICAgIDIwOCwgMTczLCAyNDUsIDE2NSwgMTEyLCAxMjEsIDYxLCA0NywgNTAsIDUzLCAzLCA1LCAyNDYsIDYxLCAxODMsIDUzLCA5NiwgCi0gICAgNzYsIDE3NywgNDcsIDEyNiwgODYsIDI1MCwgOTEsIDk2LCA1MywgMywgODAsIDk1LCA4NiwgNTMsIDMsIDgwLCA5NSwgNDksIAotICAgIDUwLCA1MywgMywgODAsIDk1LCA5NiwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCA1MywgMywgNTIsIDgwLCA5NSwgNDksIDUwLCAKLSAgICA1MywgMywgNTIsIDgwLCA5NSwgOTYsIDIyMCwgNiwgNDcsIDg2LCAyMjAsIDYsIDQ3LCA0OSwgNTAsIDIyMCwgNiwgNDcsIAotICAgIDM1LCAyNTEsIDE0LCAyNDUsIDIyOCwgMjE5LCA2OSwgMjQzLCAyMDUsIDIwOSwgODMsIDI0MCwgMjA3LCAyMDksIDgzLCAKLSAgICAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0MCwgMjA4LCAyNDEsIDk0LCAyMTMsIDExNywgMjMxLCAzOCwgMjIzLCAxMDEsIDI0MSwgCi0gICAgMTE1LCAyMjAsIDY5LCAyMjEsIDE2NiwgMjUwLCAyMzIsIDI0MSwgMTE1LCAyMjAsIDY5LCA1LCAyNDEsIDExNSwgMjIwLCAKLSAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAKLSAgICAyMjQsIDI0NCwgNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDEsIDg0LCA3NiwgMjE3LCAyMTQsIDIyMywgCi0gICAgMTYyLCAyMTcsIDIyNCwgMjIzLCAxNjIsIDI0NSwgMTcxLCAyMjMsIDE2MiwgMjEwLCAyMTcsIDIyNCwgMTAzLCA1NCwgMjI0LCAKLSAgICAxMDEsIDU0LCA3MCwgMjE4LCA3NiwgMjQzLCAxMzcsIDIxMiwgNTcsIDIxMywgMTE4LCAyMjQsIDEwMiwgMjUwLCA2MCwgCi0gICAgMjE5LCAyNTQsIDIxNSwgMjUzLCAyMTksIDI1NCwgMjQ3LCAxNzgsIDIxOSwgMjU0LCA1MSwgMjE1LCAyMDQsIDI0NSwgMTA2LCAKLSAgICAyMTUsIDIwNCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAyMTcsIDIxMCwgMTM1LCAyMzEsIDI3LCA1MCwgMjUwLCAyMTcsIDI1MCwgCi0gICAgMjE3LCAyMjUsIDE3LCAyNTAsIDIxNywgMjExLCAyMDgsIDI1MCwgMjE3LCAyNDMsIDEzOSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyNDMsIDE0MywgMjE5LCA4MiwgMTM1LCAyMjEsIDE2NiwgMjE5LCA4MiwgMTM1LCAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAKLSAgICAzNywgMjE5LCAyNDQsIDIzMCwgMjQ0LCAyMDYsIDIzNywgMjMxLCAyLCA1MiwgMjMxLCAyLCAyMDgsIDcwLCAyMzEsIDIsIAotICAgIDI0NSwgMTg4LCAyMzEsIDIsIDIxMCwgMTg5LCAyMzEsIDIsIDIwNSwgMTc4LCAyMzEsIDIsIDI0NiwgMTgsIDIzMSwgMiwgCi0gICAgMjQ2LCAxOCwgMjQ1LCAxODgsIDIzMSwgMiwgMjUwLCAxOTQsIDI0NSwgMTg4LCAyMzEsIDIsIDIwOSwgODIsIDI0OCwgMTUyLCAKLSAgICAyMTYsIDE2OCwgMjE3LCAyMTEsIDcwLCAyMjQsIDEwMiwgMjQwLCAyMTUsIDIzOCwgMTcyLCAyMTcsIDIxMSwgMjM2LCAxMjEsIAotICAgIDIwOCwgMjI4LCAyMTksIDI1NCwgMjE2LCA3MywgMjA4LCAyMjcsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCAyMTIsIDEyMiwgCi0gICAgMjA0LCA3NSwgMjAzLCAyMjYsIDIxNywgMjI0LCAyMjEsIDE2NiwgMjA4LCAyMjcsIDIyNCwgMTAzLCAyMDgsIDIyNywgMjUwLCAKLSAgICA1MywgMTU2LCAxMzUsIDIyMSwgMTY2LCAyNTAsIDUzLCAxNTYsIDEzNSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgCi0gICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNTEsIDEyNywgMTU2LCAxMzUsIDIyMiwgMjMyLCAyNTAsIDE1MSwgMjIxLCAxNzUsIAotICAgIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjUxLCA3LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIDI1MSwgNywgCi0gICAgMTU2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIwOCwgMjI3LCAyNTEsIDE1LCAxNTYsIDEzNSwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMzgsIDE3MSwgMjQxLCAzMCwgMTM1LCAyNDMsIDIwNiwgMjQ4LCAxMDMsIDI1MCwgMTUzLCAyMDksIDkzLCAyMjcsIAotICAgIDEyMiwgMjM4LCAxNzEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIwOSwgOTMsIDIzMSwgCi0gICAgNjUsIDIyMCwgNjksIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNDUsIDI0MywgMjQxLCAKLSAgICAzNCwgMjQxLCAzNSwgMjQ1LCAyNDIsIDIxNSwgMjUzLCAyMzEsIDUwLCAxNTYsIDEzNSwgMjE1LCAyNTMsIDE1NiwgMTM1LCAKLSAgICAyNDUsIDE1OSwgMTM1LCAyNDAsIDI1NCwgMjQxLCAzMywgMTM1LCAyMTEsIDk1LCAyNDEsIDM0LCAyNDQsIDM4LCAxNTYsIAotICAgIDEzNSwgMTU2LCAyMDgsIDE3MywgMjQ3LCAxMzcsIDI0NCwgNTYsIDIyNSwgMTcsIDI0NywgMTM2LCAyMTcsIDQ1LCAxNTYsIAotICAgIDEzNSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzUsIDE1NCwgMTM1LCAyMjEsIDE2NiwgMjM1LCAxNTQsIDEzNSwgMjExLCAzOSwgCi0gICAgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDE1NiwgMTM1LCAKLSAgICAyMjcsIDE3OSwgMTE1LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDExNSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjIzLCAyNDAsIAotICAgIDIyNywgMTc4LCAyMjMsIDI0MCwgMjM3LCAyNDYsIDI0OCwgMTAzLCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMjEsIDE2NiwgCi0gICAgMjI3LCAxNzgsIDIyMSwgMTY2LCAyMzcsIDI0NiwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMTU2LCAxMzUsIAotICAgIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgCi0gICAgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDI0MSwgMzAsIAotICAgIDEzNSwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIzNywgCi0gICAgMjQ2LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIyNywgMTc4LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAyMzcsIAotICAgIDI0NiwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjI3LCAxNzgsIDIxNywgMjQ5LCAyMTAsIDIzNiwgMjE3LCAKLSAgICAyNTAsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDIxOSwgCi0gICAgMjQ1LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDIxNywgMjUyLCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM4LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjEwLCAxOTgsIDIyMCwgCi0gICAgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAyNDUsIDIyMCwgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAxOTgsIDIyMCwgNjksIAotICAgIDIxMCwgMjQ1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDE5OCwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIyLCAKLSAgICAyMzIsIDM0LCAyMTAsIDI0NSwgNzYsIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDM0LCAyMTAsIDE5OCwgNzYsIAotICAgIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCAzLCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMywgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDIyMSwgMjIzLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMiwgMjA2LCAyMzcsIDUxLCAKLSAgICAyMzEsIDY1LCAyMjAsIDY5LCA1MSwgMjE5LCAyMzYsIDIyMCwgNjksIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgCi0gICAgMTM1LCA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDUxLCAyNDcsIDQ4LCA1MSwgMjQ1LCA5OSwgNDMsIAotICAgIDIxOCwgNzYsIDQzLCAyMjQsIDEwMiwgNDMsIDIwOCwgMjE5LCA0MywgMjQzLCAxMzcsIDIxMiwgNTcsIDQzLCA3MCwgMjE5LCAKLSAgICAyNTQsIDQzLCAyMTUsIDI1MywgMjE5LCAyNTQsIDQzLCAyNTAsIDYwLCAyMTksIDI1NCwgNDMsIDI0MSwgMzQsIDQzLCAyNDQsIAotICAgIDE0NCwgMTAzLCAyMTgsIDc2LCAxMDMsIDIyNCwgMTAyLCAxMDMsIDIwOCwgMjE5LCAxMDMsIDcwLCAyMTksIDI1NCwgNTAsIAotICAgIDIxMCwgMywgNDksIDIxMCwgMywgMTIxLCAyMTAsIDMsIDExMiwgMjEwLCAzLCAyNTAsIDYzLCAyMjQsIDc3LCAyMDgsIDQ5LCAKLSAgICAyMzksIDE2NSwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCA1MCwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA1MCwgCi0gICAgMjA3LCAxNzMsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAyMDUsIDIyMSwgMTY2LCAyMDgsIDQ5LCAyNDMsIDEwNCwgMjIxLCAKLSAgICAxNjYsIDIzOSwgMTY2LCAyMjIsIDIzNCwgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAyMDcsIDE3MywgMjE3LCAyNTAsIAotICAgIDIwNiwgMjQ4LCAyMTYsIDExNywgMjEwLCAyMzcsIDIwNiwgMjQ4LCAyMTYsIDExNywgMjIxLCAxNzIsIDIxMSwgMiwgMjIwLCAKLSAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTcyLCAyMTEsIDIsIDc2LCAyMTksIDI0NSwgCi0gICAgMTU2LCAxMzUsIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxOSwgCi0gICAgMjM2LCAyMjAsIDY5LCAyMzEsIDY1LCAyMjAsIDY5LCAyMjMsIDIyOCwgMjM3LCAyNCwgMjQ1LCAyMDUsIDIyNSwgNjksIAotICAgIDIzMCwgMjU1LCAyMDMsIDE1NiwgMjIzLCA4MSwgMjIxLCAxNzQsIDUwLCAyNTAsIDIxOCwgMywgMjUwLCAxMjgsIDUwLCAKLSAgICAyMDgsIDg1LCAyMjMsIDE2MiwgMjI3LCAzNywgMjUwLCAyMjYsIDIyMywgMTYyLCAyMjcsIDM3LCAyMTksIDI0NCwgMjIzLCAKLSAgICAxNjIsIDIzMCwgMjQ0LCAyMjMsIDE2MiwgMjA2LCAyMzcsIDI0MywgMjIyLCAyMTksIDI1NCwgNzAsIDIxOSwgMjU0LCAyMTEsIAotICAgIDk1LCAyMTksIDI1NCwgMjQzLCAxMzcsIDIwOCwgMjE5LCAyNDcsIDIzNCwgNDksIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIAotICAgIDE0MiwgMjE3LCAyMjQsIDUwLCAyMjEsIDE3MiwgMjQwLCA5MiwgMjEzLCAxNDIsIDIxNywgMjI0LCA0OSwgMjEzLCAxNDIsIAotICAgIDIxNywgMjI0LCA1MCwgMjEzLCAxNDIsIDIxNywgMjI0LCAyMTYsIDczLCAyMDgsIDIyOCwgMjQxLCAzNCwgMjQ1LCA5MywgCi0gICAgMjI3LCAzNywgMjE5LCAyNDQsIDI0NSwgOTMsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjEwLCAyNDQsIDUyLCAyMTAsIAotICAgIDE5NywgNTIsIDIzMCwgMjQ0LCA1MiwgMjA2LCAyMzcsIDIxOCwgMTAzLCAxNTYsIDI1LCAyMTksIDgyLCAxMzUsIDIyNywgCi0gICAgMTc5LCAzLCAyNDMsIDg1LCAyMzcsIDI0NywgMywgMjQzLCA4NSwgMjA1LCAyNDIsIDIyMywgMjQwLCAyMjcsIDE3OCwgMjA1LCAKLSAgICAyNDIsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjI3LCAxNzksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgCi0gICAgMjM3LCAyNDcsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAotICAgIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAKLSAgICAyMTcsIDI0OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIxMCwgMjM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxNywgCi0gICAgMjUzLCAyMTksIDI0NSwgMjQxLCAzNiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTAsIDIzOSwgMjE5LCAyNDUsIDI0MSwgMzYsIAotICAgIDIyMSwgMTY2LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDUxLCAyMTksIDIzNiwgCi0gICAgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAKLSAgICA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjQ3LCAxNDgsIDIyMSwgCi0gICAgMTY2LCAyNDEsIDMwLCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjE3LCAyNTAsIAotICAgIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTAsIDIzNywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIDY5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAKLSAgICAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAxLCAyMjEsIDE2NiwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAxNTYsIAotICAgIDEzNSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMiwgMjE5LCAyNDUsIAotICAgIDI0MSwgMzYsIDgwLCAyNDEsIDEwOCwgMjI0LCAxNDYsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMTEyLCA1MCwgMjQzLCAyMjgsIAotICAgIDI0MSwgMTA4LCAxMjEsIDUwLCAyNDMsIDIyOCwgMjQxLCAxMDgsIDI0MSwgMTE1LCA3NiwgMywgMTYzLCAyMzYsIDEwNiwgCi0gICAgOTUsIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAKLSAgICAyNDEsIDExNSwgNzYsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgMjQxLCAKLSAgICAxMTUsIDc2LCAzLCA3MCwgNTUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAyMDMsIDUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAKLSAgICAyMDMsIDI0MSwgMTE1LCA3NiwgMywgMjA2LCAyNDYsIDI0MSwgMTE1LCA3NiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAxOSwgCi0gICAgMjQ1LCAxOTQsIDMsIDE2MywgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIAotICAgIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgCi0gICAgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgMjE5LCAyMDMsIDUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgMjAyLCAxNjAsIAotICAgIDIyMSwgMTY0LCAyNDksIDExLCAyMjQsIDI0MywgMjQzLCAyMjMsIDU0LCAyNDEsIDExNywgNDcsIDIzNiwgMzgsIDExMiwgCi0gICAgMjUwLCA5NCwgMTIxLCAyNTAsIDk0LCAyMTcsIDIxOCwgMjE4LCAyMjcsIDIwNCwgNzIsIDIyNywgMTE0LCA0OSwgMjQ2LCAKLSAgICAyMjYsIDUwLCAyNDYsIDIyNiwgNDksIDIzOSwgMjA0LCA1MCwgMjM5LCAyMDQsIDI0NywgMjQ4LCA1MCwgMjQ1LCAxMzIsIAotICAgIDI0NywgMjQ4LCA0OSwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA1MCwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA0OSwgMjQ1LCAxMzIsIAotICAgIDIxNiwgNzMsIDIyMSwgMTY2LCA1NCwgNTEsIDIyNiwgMjQ2LCAyNTAsIDEyOCwgMjE0LCAxNTgsIDIxNCwgMTY2LCAyMDksIAotICAgIDE2MiwgMjE2LCAxNDcsIDIxOCwgMzQsIDIzMSwgMzEsIDIwNSwgMjE4LCAyMTEsIDE3NywgMjE4LCA5NywgNzYsIDIzMCwgCi0gICAgMjU0LCA1NCwgMjA3LCAxNzQsIDIyMSwgMTY2LCA1NCwgMjA0LCA4MiwgMjM2LCA0MCwgMjA4LCAxNDUsIDQ5LCAyNDUsIAotICAgIDE2NSwgMjA4LCAxNDUsIDUwLCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDQ5LCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDUwLCAyNDUsIAotICAgIDE2NSwgMjA4LCAxNDUsIDE2MiwgMjMxLCAyLCAyNDcsIDI0OCwgMTYyLCAyMzEsIDIsIDIzOSwgMTE1LCAyMTIsIDMxLCAKLSAgICAxMTIsIDI1MCwgOTUsIDI0OCwgMTA0LCAxMjAsIDIzNiwgMTA2LCAyNDgsIDIyMCwgMjE5LCAyNDcsIDIyOSwgMTUxLCAyNDEsIAotICAgIDI2LCAyMDgsIDE3MywgMjA5LCA5MywgMjE2LCAxNiwgMjAzLCAxOTcsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgMjQ3LCAKLSAgICAyMzMsIDIyOSwgMTQ5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjUwLCAyMTgsIDE1NSwgMjQxLCAyNiwgCi0gICAgMjA4LCAxNzMsIDIwOSwgOTMsIDIyNywgMjIyLCAyNDgsIDExNSwgMjE1LCAyNTIsIDI0NSwgNjEsIDI1MSwgMTUsIDI1MCwgCi0gICAgMTAzLCAyMTAsIDEwMCwgMjA4LCAxMzAsIDIxNSwgMTI1LCAyNDMsIDE4NSwgMjE5LCAyMzcsIDI0NSwgMjA5LCAyMDksIAotICAgIDIyMCwgMjEyLCA0NCwgMjQ1LCAxNTUsIDI0NSwgMTU0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzNSwgMjAzLCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgMTY5LCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0MSwgCi0gICAgMzYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQzLCAxNDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKLSAgICA2MywgMjQzLCAyMjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMTcsIDYzLCAyNDYsIDYxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIxMSwgNjksIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTIsIDU4LCAxNDIsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ5LCAyMSwgMTQyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIxMiwgNTcsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAKLSAgICAyMjcsIDE3OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzcsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCA5NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCA4NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMTcsIDYzLCA5NiwgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgODYsIDQ3LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0OSwgMjAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIwNiwgCi0gICAgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgMzgsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKLSAgICA2MywgMTIxLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgMzcsIDI1MCwgMTY5LCAyMzksIAotICAgIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTc3LCAyMDYsIDc2LCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE3NywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIAotICAgIDIxOSwgMjAzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjE3LCA2MywgMTEyLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgNDgsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTgzLCAyMDYsIDc2LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE4MywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgCi0gICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjQzLCAyMjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzMCwgODksIDIwNiwgMjQ2LCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjEyLCAKLSAgICAyNDAsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgMjE3LCA2MiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyNDYsIDYyLCAyMTEsIDk0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NSwgMjQyLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyNDMsIAotICAgIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTEsIDk1LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMzAsIDg5LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyNDMsIDIzMSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMjEsIDIxMiwgMjQwLCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDQ5LCAyMTIsIDI0MCwgCi0gICAgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDgsIDIyOCwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjM3LCAyNDcsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NSwgMjM0LCAxNDIsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjAyLCAyOSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyMTEsIDcwLCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTMsIDE0NCwgMjA2LCAKLSAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjIxLCAxNjYsIDI0MSwgMzYsIDI1MCwgMTY5LCAyMzksIAotICAgIDk4LCAxNiwgMjE3LCA2MywgMjE3LCA0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDI0NywgMzQsIDIwOCwgMjI3LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjQ3LCAzNCwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjMwLCAyMzAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE2LCA1OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMjAsIDM2LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQxLCAzOCwgCi0gICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCAyMzEsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIyMCwgMzcsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMiwgMjIxLCAxNjYsIDI0NiwgMTY5LCAKLSAgICA4MiwgNTAsIDI1MCwgMjE4LCAzLCAxODMsIDIwMiwgMzAsIDQ3LCAyMTIsIDIxMCwgMTcxLCAyNDcsIDIzMywgMjQ4LCAxMjksIAotICAgIDk3LCA4MCwgMjI3LCAxMTUsIDMsIDEwMSwgMjQzLCA4NSwgMjMxLCA4LCA5NywgMjQ1LCAxODksIDIwNiwgMjQ0LCA5NywgCi0gICAgMjQzLCAxNTgsIDIwNiwgMjQ0LCA5NywgMjQxLCA5NiwgOTcsIDI0NSwgMjI0LCA5NywgNjEsIDUxLCAzLCAyNDYsIDIxOCwgCi0gICAgODAsIDIyNywgMTE0LCAyNDEsIDY4LCA5NywgMjUwLCAyNTAsIDIyOSwgMTUyLCA5NywgMjM3LCAzNywgOTcsIDQzLCAyMzYsIAotICAgIDEwNiwgMjQ4LCAyMzEsIDMsIDIyMSwgMTYzLCA0MywgMjA4LCA4NiwgMjQyLCA3MCwgMjQ3LCAyMDMsIDI0NiwgNjIsIDMsIAotICAgIDIyMSwgMTY5LCA0NywgMjA2LCAyNDIsIDk3LCAyMjQsIDQwLCA5NywgMjM1LCAyMTYsIDk3LCAyMjAsIDcsIDIzNywgMTcwLCAKLSAgICA5NywgMjIwLCA3LCAyMjgsIDEyOSwgOTcsIDIxOSwgNTksIDk3LCAyMTksIDU4LCA5NywgMjQzLCAxNjcsIDI0NSwgOTEsIAotICAgIDE2LCAyMzksIDE1OSwgMTA4LCAyMTIsIDUsIDk3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjIsIDI0NCwgNjgsIAotICAgIDIxMywgMTMxLCAyMjksIDE1MiwgOTcsIDIxNywgMjM4LCAyMTksIDE1MywgMjIyLCAyMDgsIDIxOSwgMTUzLCAyMTcsIDIzNCwgCi0gICAgMjE0LCAxODUsIDk3LCAyNDYsIDMzLCAyMTQsIDE4NSwgOTcsIDQ5LCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA0OSwgMjE5LCAKLSAgICA3NywgMjQwLCAyMDAsIDQ5LCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA1MCwgMjE5LCA3NywgMjA2LCAyMjEsIDExMywgNTAsIAotICAgIDIxOSwgNzcsIDI0MCwgMjAwLCA1MCwgMjE5LCA3NywgMjI2LCAyNTEsIDExMywgNDksIDUxLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAyNDAsIDIwMCwgNDksIDUxLCAyNDcsIDIyNywgMjI2LCAyNTEsIAotICAgIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAyMDYsIDIyMSwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDI0MCwgCi0gICAgMjAwLCA1MCwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgMjQ1LCAxNjUsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDExMywgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAxMDEsIDIxOCwgMTU5LCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIAotICAgIDIyNiwgMjUxLCAxMTMsIDI0NSwgOTMsIDI0NywgMjI3LCAyNDAsIDIwMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMTEzLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgCi0gICAgMjI2LCAyNTEsIDExMywgMjMxLCAzLCAyNDAsIDIwMCwgMjM2LCAxMDYsIDIyNywgMTE1LCAyNDAsIDIwMCwgMjA2LCAyMjEsIAotICAgIDQ5LCAyMTksIDI0NSwgMjI2LCAyNTEsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjE5LCAyNDUsIDIyNiwgMjUxLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxNCwgMTY3LCAyMTAsIDIxOCwgMjA4LCAxNDQsIAotICAgIDIxMCwgMjE4LCAyNDcsIDI0NywgMjA4LCAxNDUsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgMTU1LCAyNDcsIDI0OCwgNTEsIAotICAgIDI0NywgMjI3LCAxMTUsIDIwOCwgMTQ1LCA1MSwgMTU1LCA0MCwgMTYsIDI0NywgMjQ3LCA0OSwgODAsIDk4LCAyMjcsIDExNCwgCi0gICAgNTAsIDgwLCA5OCwgMjI3LCAxMTQsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTMsIDIzNiwgMTA2LCAyMTQsIDIwMiwgCi0gICAgMjI3LCAxMTIsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTEsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTAsIAotICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgCi0gICAgMjQ3LCAyNDgsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAKLSAgICAxMjEsIDI1LCAyMzYsIDEwNiwgMywgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIAotICAgIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAKLSAgICAyMzYsIDEwNiwgMywgMjA4LCA4NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwOCwgODUsIAotICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDYsIAotICAgIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgCi0gICAgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDUsIDI0NCwgMjksIDE2LCAKLSAgICAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIyNywgMjIyLCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDI0NywgMjQ4LCAyMjcsIAotICAgIDIyMiwgNTEsIDIzOSwgMTcyLCAyMTYsIDc4LCA5NywgMjQxLCAxMzEsIDk3LCA4MCwgMjI3LCAxMTUsIDI0MCwgMjAwLCAKLSAgICAyMjQsIDIxNCwgMjQ3LCAyMTQsIDIyNCwgMjE0LCAxNjMsIDExNSwgMjEyLCAyMjcsIDIyNCwgMjE0LCAyMTIsIDIyOCwgCi0gICAgMTE1LCAyMjcsIDI4LCAyMjQsIDIxNCwgMTYzLCAxMTUsIDEyMCwgMjEyLCAyMTMsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAKLSAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAyMzAsIDk3LCAyMjQsIDIxNCwgMjA4LCA2NiwgMjI0LCAKLSAgICAyMTQsIDIwOSwgMTI0LCAyMjQsIDIxNCwgMjE4LCAyNTMsIDI0MSwgMTgwLCAyMzcsIDIzOSwgMjM5LCA5MiwgMjA4LCAxNDUsIAotICAgIDIxOSwgNzYsIDI0NywgMjQ4LCAyMTksIDc2LCAyMDgsIDE0NSwgMjQ1LCA5MywgMTU1LCAyNDcsIDI0OCwgMjQ1LCA5MywgCi0gICAgMTU1LCAyMDgsIDE0NSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjQ3LCAyNDgsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAotICAgIDYxLCAyMDgsIDEwMSwgMjQ4LCAxMTUsIDIxNSwgMjUzLCAzLCAyNDYsIDYxLCAyMTEsIDUxLCAyMzksIDIxNSwgMjUxLCAKLSAgICAxNDIsIDI0NSwgOTAsIDI0MSwgMTE2LCAyMzAsIDI0NCwgMjQ0LCA2OCwgMjQwLCAyMDQsIDk3LCA2MiwgMjE2LCAxMSwgNTIsIAotICAgIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNTIsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNTIsIDIwOCwgODUsIDYyLCAyNDIsIAotICAgIDY5LCA1MiwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDUyLCAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjI3LCAyMTcsIDUyLCAKLSAgICAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjE2LCAxMSwgMjA4LCA4NiwgMywgNTIsIDgwLCAxNDIsIDI1MSwgMzQsIDI0NiwgCi0gICAgMTksIDIxMSwgNTgsIDIwOCwgMjIwLCAyNDYsIDE5LCAyMzYsIDQxLCAzLCAyMzksIDE5NSwgMjE0LCAyNDEsIDYyLCAyMjUsIAotICAgIDEwLCAyMjcsIDIxNywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyMDYsIAotICAgIDIyMywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODUsIDUyLCA4MCwgMTQyLCA2MiwgNTEsIDM1LCAKLSAgICAyMTEsIDYxLCA2MiwgMjQ2LCA2MiwgMzUsIDIxNiwgMTQ4LCAxNiwgMzUsIDIyMSwgNDgsIDE2LCAzNSwgMjExLCA5MCwgNzYsIAotICAgIDIzNywgNjEsIDE2LCAzNSwgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDksIDExMiwgCi0gICAgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDE2LCAzNSwgMjQxLCA3MSwgMTYsIDM1LCAyNTEsIDEzMCwgMTYsIDM1LCAKLSAgICAyNDgsIDEyOCwgMTYsIDM1LCAyNDksIDE5LCAxNiwgMzUsIDIzNiwgMTA2LCAyMTAsIDUsIDE2LCAzNSwgMjI3LCAxMTUsIAotICAgIDI0MCwgNTEsIDE2LCAzNSwgODAsIDIxMCwgNSwgMTYsIDM1LCAyMzksIDE1OSwgMjQwLCA1MSwgMTYsIDM1LCAyNDcsIDI1LCAKLSAgICAyMTYsIDc3LCAxNiwgMzUsIDIxMywgNywgMjE5LCAyMTEsIDE2LCAzNSwgMjEzLCA3LCAyMzEsIDQ5LCAxNiwgMzUsIDI0NCwgCi0gICAgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIDEwNSwgMTYsIDM1LCAyNDQsIDgsIAotICAgIDI0NSwgMTg0LCAxMDgsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ3LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIAotICAgIDE0OSwgMTYsIDM1LCAxODIsIDI1MSwgMTMwLCAxNiwgMzUsIDIxMCwgOTUsIDIzMSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIAotICAgIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMTYsIDM1LCAyNDcsIDU5LCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMjUsIDksIDE2LCAKLSAgICAzNSwgMjEwLCAyNDIsIDE2LCAzNSwgMjQxLCA5LCAxNiwgMzUsIDI0MCwgMTEsIDIxMywgMTMwLCAxNiwgMzUsIDIzNywgCi0gICAgMjM4LCAyMTMsIDEzMCwgMTYsIDM1LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDE2LCAzNSwgMjA2LCAyMzYsIDIxMywgMTMwLCAKLSAgICAxNiwgMzUsIDIxMSwgMjI4LCAxNiwgMzUsIDI0NCwgNDYsIDI0OCwgMzcsIDk3LCAxNzEsIDI0NywgMjMzLCAxNiwgMzUsIAotICAgIDIyMiwgMjExLCAxNiwgMzUsIDI0NCwgNDcsIDIzOSwgMTU5LCAxMDgsIDE2LCAzNSwgMjEwLCAyNDMsIDIzOSwgMTU5LCAKLSAgICAxMDgsIDIyMCwgODIsIDExMywgMjIwLCA4MiwgMjQ2LCAxOTQsIDIyMCwgODIsIDIzOSwgMTYyLCAyMjAsIDgyLCAyMzAsIAotICAgIDIzOSwgMjM5LCAxNjIsIDIyMCwgODIsIDI0OCwgMTI1LCAyNDcsIDE5MCwgMjIwLCA4MiwgMjQ3LCAyNDEsIDIwOCwgMjUwLCAKLSAgICAyMjAsIDgyLCAyNDcsIDIyNCwgMjQ4LCAyMzYsIDIzNSwgMTUzLCAyMjAsIDgyLCAyNTAsIDIzNywgNzYsIDI0NiwgMTY4LCAKLSAgICAyMjAsIDgyLCAyNDQsIDE0NCwgMjIwLCA4MiwgMjQ1LCA4MCwgMjUxLCAxMzQsIDIyMSwgNDYsIDIyMCwgODIsIDUyLCAyNDksIAotICAgIDIwLCA0MywgMTcsIDEwNSwgNDMsIDE3LCAxMDgsIDQzLCAxNywgMTQ3LCA0MywgMTcsIDE0OSwgNDMsIDE3LCAxNzAsIDQzLCAKLSAgICAxNywgMTk1LCA0MywgMTcsIDIxMywgMTExLCA0MywgMTcsIDE5OSwgNDMsIDE3LCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgCi0gICAgMTUyLCA0MywgNDIsIDI0MSwgMTEyLCA0MywgNDIsIDIwNywgMTU0LCA0MywgNDIsIDIwOSwgNTUsIDQzLCA0MiwgMjM5LCAKLSAgICAxNDEsIDQzLCA0MiwgMjQwLCAyMiwgNDMsIDQyLCAyMTIsIDgyLCA0MywgNDIsIDIxMywgMTA4LCA0MywgNDIsIDI0MSwgCi0gICAgMTQwLCA0MywgNDIsIDIyMiwgNjAsIDQzLCA0MiwgMjA3LCAxNTEsIDEwMiwgMTcsIDEwNSwgMTAyLCAxNywgMTA4LCAxMDIsIAotICAgIDE3LCAxNDcsIDEwMiwgMTcsIDE0OSwgMTAyLCAxNywgMTcwLCAxMDIsIDE3LCAxOTUsIDEwMiwgMTcsIDIxMywgMTExLCAKLSAgICAxMDIsIDE3LCAxOTksIDEwMiwgMTcsIDIyMiwgNjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAxMDIsIDQyLCAyNDEsIDExMiwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTQsIDEwMiwgNDIsIDIwOSwgNTUsIDEwMiwgNDIsIDIzOSwgMTQxLCAxMDIsIDQyLCAyNDAsIDIyLCAKLSAgICAxMDIsIDQyLCAyMTIsIDgyLCAxMDIsIDQyLCAyMTMsIDEwOCwgMTAyLCA0MiwgMjQxLCAxNDAsIDEwMiwgNDIsIDIyMiwgNjAsIAotICAgIDEwMiwgNDIsIDIwNywgMTUxLCAxNywgMTE4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDEyMCwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDE3LCAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAxNDcsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAKLSAgICAyMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjEyLCA4OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTMsIDExMiwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyNDEsIDE0MywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMjIsIDY0LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgMTUzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTEzLCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgNDIsIDIwNywgMTU1LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgNTYsIDIzOSwgMTAyLCAyMTEsIDYxLCAKLSAgICA0MiwgMjM5LCAxNDIsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQwLCAyMywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMTIsIAotICAgIDgzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMywgMTA5LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTQxLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIyMiwgNjEsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA3LCAxNTIsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCAxMDIsIDgsIDUsIDEsIDYzLCAxMDIsIDgsIDUsIDEsIDI0OSwgMjU1LCAxMDIsIDgsIDUsIDEsIAotICAgIDI0NywgMTI1LCAxMDIsIDgsIDUsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNSwgMSwgNzQsIDEwMiwgOCwgNSwgMSwgMjQwLCAKLSAgICAxNzQsIDEwMiwgOCwgNSwgMSwgMjM5LCA3NSwgMTAyLCA4LCA1LCAxLCAyMzcsIDE3MSwgMTAyLCA4LCA1LCAxLCA3NSwgCi0gICAgMTAyLCA4LCA1LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA1LCAxLCAyMzAsIDU0LCAxMDIsIDgsIDUsIDEsIDE1OSwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA1LCAxLCAyMjMsIDE2MywgMTAyLCA4LCA1LCAxLCA3OCwgMTAyLCA4LCA1LCAxLCAKLSAgICAyMTksIDE4NCwgMTAyLCA4LCA1LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA1LCAxLCAxNDYsIDEwMiwgOCwgNSwgMSwgMTk0LCAKLSAgICAxMDIsIDgsIDUsIDEsIDIxMCwgNjksIDEwMiwgOCwgNSwgMSwgNjgsIDEwMiwgOCwgNSwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgCi0gICAgNSwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNSwgMSwgMjAzLCAxOTYsIDEwMiwgOCwgNSwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgCi0gICAgNSwgMSwgMjAyLCAxNTksIDQzLCA4LCA2LCAxLCA2MywgNDMsIDgsIDYsIDEsIDI0OSwgMjU1LCA0MywgOCwgNiwgMSwgMjQ3LCAKLSAgICAxMjUsIDQzLCA4LCA2LCAxLCAyNDUsIDUxLCA0MywgOCwgNiwgMSwgNzQsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgNDMsIDgsIAotICAgIDYsIDEsIDIzOSwgNzUsIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgNDMsIDgsIDYsIDEsIDc1LCA0MywgOCwgNiwgMSwgMjMwLCAKLSAgICAxODQsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCA0MywgOCwgNiwgMSwgMTU5LCA0MywgOCwgNiwgMSwgMjI2LCAxODUsIDQzLCAKLSAgICA4LCA2LCAxLCAyMjMsIDE2MywgNDMsIDgsIDYsIDEsIDc4LCA0MywgOCwgNiwgMSwgMjE5LCAxODQsIDQzLCA4LCA2LCAxLCAKLSAgICAyMTcsIDEzNCwgNDMsIDgsIDYsIDEsIDE0NiwgNDMsIDgsIDYsIDEsIDE5NCwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDQzLCAKLSAgICA4LCA2LCAxLCA2OCwgNDMsIDgsIDYsIDEsIDIwNiwgMTY0LCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDQzLCA4LCA2LCAxLCAKLSAgICAyMDMsIDE5NiwgNDMsIDgsIDYsIDEsIDIwMywgMTI0LCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDQzLCA4LCA1LCAxLCA2MywgCi0gICAgNDMsIDgsIDUsIDEsIDI0OSwgMjU1LCA0MywgOCwgNSwgMSwgMjQ3LCAxMjUsIDQzLCA4LCA1LCAxLCAyNDUsIDUxLCA0MywgCi0gICAgOCwgNSwgMSwgNzQsIDQzLCA4LCA1LCAxLCAyNDAsIDE3NCwgNDMsIDgsIDUsIDEsIDIzOSwgNzUsIDQzLCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MSwgNDMsIDgsIDUsIDEsIDc1LCA0MywgOCwgNSwgMSwgMjMwLCAxODQsIDQzLCA4LCA1LCAxLCAyMzAsIDU0LCAKLSAgICA0MywgOCwgNSwgMSwgMTU5LCA0MywgOCwgNSwgMSwgMjI2LCAxODUsIDQzLCA4LCA1LCAxLCAyMjMsIDE2MywgNDMsIDgsIDUsIAotICAgIDEsIDc4LCA0MywgOCwgNSwgMSwgMjE5LCAxODQsIDQzLCA4LCA1LCAxLCAyMTcsIDEzNCwgNDMsIDgsIDUsIDEsIDE0NiwgCi0gICAgNDMsIDgsIDUsIDEsIDE5NCwgNDMsIDgsIDUsIDEsIDIxMCwgNjksIDQzLCA4LCA1LCAxLCA2OCwgNDMsIDgsIDUsIDEsIAotICAgIDIwNiwgMTY0LCA0MywgOCwgNSwgMSwgMjA0LCAxNDQsIDQzLCA4LCA1LCAxLCAyMDMsIDE5NiwgNDMsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI0LCA0MywgOCwgNSwgMSwgMjAyLCAxNTksIDQzLCAxNywgMjAyLCA4NCwgMTgyLCA0MywgNDIsIDI0MSwgMTEyLCAxODIsIAotICAgIDQzLCA0MiwgMjA3LCAxNTQsIDE4MiwgNDMsIDQyLCAyMDksIDU1LCAxODIsIDQzLCA0MiwgMjM5LCAxNDEsIDE4MiwgNDMsIAotICAgIDQyLCAyNDAsIDIyLCAxODIsIDQzLCA0MiwgMjEyLCA4MiwgMTgyLCA0MywgNDIsIDIxMywgMTA4LCAxODIsIDQzLCA0MiwgCi0gICAgMjQxLCAxNDAsIDE4MiwgNDMsIDQyLCAyMjIsIDYwLCAxODIsIDQzLCA0MiwgMjA3LCAxNTEsIDUyLCA0MywgMTcsIDEwNSwgCi0gICAgNTIsIDQzLCAxNywgMTA4LCA1MiwgNDMsIDE3LCAxNDcsIDUyLCA0MywgMTcsIDE0OSwgNTIsIDQzLCAxNywgMTcwLCA1MiwgCi0gICAgNDMsIDE3LCAxOTUsIDUyLCA0MywgMTcsIDIxMywgMTExLCA1MiwgNDMsIDE3LCAxOTksIDUyLCA0MywgMTcsIDIyMiwgNjMsIAotICAgIDUyLCA0MywgNDIsIDIwOSwgMTUyLCAxODIsIDQzLCAxNywgMjAyLCA4NCwgOTgsIDExNiwgMTU3LCAyMzYsIDEwNSwgOTgsIAotICAgIDExNiwgNzksIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCAyMDYsIDM4LCA5OCwgMTE2LCAKLSAgICAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIAotICAgIDEwNSwgOTgsIDExNiwgMTU3LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgCi0gICAgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIAotICAgIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjA2LCAzOCwgCi0gICAgOTgsIDExNiwgNzksIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIxNiwgMTYsIAotICAgIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgNTAsIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIAotICAgIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMjEsIDE1NywgMjUsIDQ5LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAKLSAgICA3OSwgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAxNTcsIAotICAgIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgCi0gICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMjcsIAotICAgIDIyMiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgCi0gICAgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgCi0gICAgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgCi0gICAgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDUwLCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCA4MCwgCi0gICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDQ5LCAKLSAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNDksIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKLSAgICA0OSwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgCi0gICAgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgCi0gICAgNzksIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgCi0gICAgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgCi0gICAgMTIxLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIAotICAgIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgCi0gICAgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAKLSAgICAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgCi0gICAgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAKLSAgICA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAKLSAgICAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAKLSAgICAxMTYsIDE1NywgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDgwLCAyMjcsIDEzNCwgOTgsIAotICAgIDExNiwgNTAsIDc5LCAyNSwgNDksIDgwLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIAotICAgIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKLSAgICAxMTIsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgCi0gICAgMTE2LCA0OSwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTEyLCA3OSwgMjUsIDQ5LCAKLSAgICAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA0OSwgMTIxLCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgCi0gICAgMTIxLCA3OSwgMjUsIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDExMiwgMjM2LCAxMDYsIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgNTAsIDE1NywgCi0gICAgMjUsIDQ5LCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNzksIAotICAgIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDUyLCAKLSAgICAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgNTIsIAotICAgIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA1MiwgMjM2LCAxMDUsIDk4LCAxMTYsIDUyLCAyMDYsIDM4LCA5OCwgMTE2LCAKLSAgICAxMjEsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMjEsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDEyMSwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgMTEyLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCi0gICAgMTE2LCA1MiwgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCAxMTIsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDgwLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCA4MCwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCA4MCwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMjEsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCAyMzYsIDEwNiwgCi0gICAgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIAotICAgIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgMjM2LCAxMDYsIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgCi0gICAgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAKLSAgICA4MCwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAKLSAgICAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMjcsIAotICAgIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIAotICAgIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDIwNiwgMjIxLCA1MCwgMjA4LCAxNzMsIDIyNiwgCi0gICAgMjUxLCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIAotICAgIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDI0NSwgMTMwLCA5OCwgMTE2LCAxNTcsIDIyNywgMjIyLCA5OCwgCi0gICAgMTE2LCAxNTcsIDIwNiwgMjI0LCA5OCwgMTE2LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQyLCA3MCwgOTgsIAotICAgIDExNiwgNzksIDIyNywgMjIyLCA5OCwgMTE2LCA3OSwgMjA2LCAyMjQsIDk4LCAxMTYsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAKLSAgICA3OSwgMjQyLCA3MCwgOTgsIDExNiwgMTU3LCA0OSwgMjUsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIAotICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCA3OSwgNDksIDI1LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAKLSAgICAxNTcsIDI0MiwgNzAsIDIwNiwgMjIxLCAxNjIsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAKLSAgICAyMjYsIDI1MSwgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAKLSAgICAyNTEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDIzOSwgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAyNTEsIDEyNiwgCi0gICAgMjE3LCA1NCwgMjQ4LCAzMywgMjI2LCAyNTEsIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgMjM5LCAxMDIsIDI0OCwgCi0gICAgMzMsIDQ5LCAyMTMsIDExMiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxMjYsIDIxNywgNTQsIDI0OCwgMzMsIDQ5LCAyMzksIAotICAgIDIzMywgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxNjIsIDI0OCwgMzMsIDQ5LCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgCi0gICAgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCA0OSwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgNTAsIDE2MiwgMjQ4LCAzMywgMTU3LCAKLSAgICAyMTMsIDc5LCAyMjUsIDEwLCAyMTMsIDc5LCAyNDQsIDE1MCwgMjEzLCA3OSwgMjA2LCAyMjEsIDExOCwgMjQxLCAxMzksIAotICAgIDI0OCwgMzMsIDUwLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAyMTcsIDYwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDIxNywgCi0gICAgNjAsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCAKLSAgICA0OSwgMjUsIDIyNiwgMjUxLCA0OSwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAKLSAgICAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIAotICAgIDIyNywgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgCi0gICAgMjE3LCA2MCwgMjA2LCAyMjEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMjcsIAotICAgIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDYyLCAKLSAgICAyMTEsIDE3NywgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgNjEsIDUxLCAyNDUsIDE5NSwgCi0gICAgNjIsIDUsIDIxMSwgMTc3LCA1MSwgMywgMjM2LCAxMDYsIDI0MCwgOSwgNTEsIDMsIDgwLCAyNDAsIDksIDUxLCAzLCAyMTksIAotICAgIDIyOSwgMjQ1LCAxMjUsIDI0MCwgOSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjA4LCAxNzMsIDIyNiwgMjUxLCA1MCwgMjQwLCAKLSAgICA5LCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAyNTEsIDQ5LCAyNDAsIDksIDUxLCAzLCAyNDMsIDIyOCwgCi0gICAgMjQ1LCAxMjUsIDI0MCwgOSwgNjIsIDUsIDIxMSwgMTc3LCA2MSwgNSwgMjExLCAxNzcsIDYyLCAyMTYsIDE0MywgNjEsIAotICAgIDIxNiwgMTQzLCA2MiwgODAsIDIxNiwgMTQzLCA2MSwgODAsIDIxNiwgMTQzLCA2MiwgMjE5LCA4MCwgNjEsIDIxOSwgODAsIAotICAgIDYyLCAyMDYsIDIyMywgMjA4LCA4NSwgNjEsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDUsIDIwOCwgODUsIAotICAgIDYxLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIwOCwgODUsIDYxLCAyMTYsIDExLCAyMDgsIDg1LCA2MiwgCi0gICAgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDUsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMTgsIDYwLCA2MSwgCi0gICAgMjE2LCAxMSwgMjE4LCA2MCwgNjIsIDI0MiwgNjksIDIwOCwgODUsIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA2MiwgMjQyLCAKLSAgICA2OSwgNSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDUsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgMjA4LCA4NSwgNjEsIDIyNywgCi0gICAgMjE3LCAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDUsIDIwOCwgODUsIDYxLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjIsIAotICAgIDIyNywgMjE3LCAyMTgsIDYwLCA2MSwgMjI3LCAyMTcsIDIxOCwgNjAsIDYyLCAyNDMsIDIyMSwgNjEsIDI0MywgMjIxLCA2MSwgCi0gICAgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgNSwgMjQzLCAyMjEsIDIzOSwgMjQyLCAyMjYsIDI0NiwgNjEsIDI0NiwgNjEsIAotICAgIDI0MiwgODMsIDI0NiwgNjEsIDI0NiwgNjIsIDMsIDgwLCAyNDAsIDksIDI0NywgMTczLCA2MiwgMjQ2LCA2MSwgMjQ2LCA2MiwgCi0gICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIAotICAgIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIAotICAgIDUwLCAyMTcsIDYwLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyNTEsIDE1LCAyNDcsIDE0OCwgMjA2LCAyMjEsIDQ5LCAyMTcsIAotICAgIDYwLCAyNDgsIDQzLCA0OSwgMTYyLCA2MiwgMjQ2LCA2MSwgNTAsIDE2MiwgNjIsIDI0NiwgNjEsIDIzMCwgMjQwLCAyNDcsIAotICAgIDE3NywgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgMTYyLCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIyNiwgCi0gICAgMjUxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIAotICAgIDEyOCwgMjA2LCAyMjEsIDUwLCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDUwLCAyMTcsIDYwLCAKLSAgICAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjA2LCAyMjEsIAotICAgIDE2MiwgMjQ2LCA2MSwgMjI2LCAyNTEsIDE2MiwgMjQ2LCA2MSwgNjIsIDIyNiwgMjUxLCA1MCwgMjA4LCA4NSwgNjIsIDIyNiwgCi0gICAgMjUxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA1MCwgMjA4LCA4NSwgCi0gICAgNjEsIDI0NywgMTc3LCA1MSwgMywgNDksIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAKLSAgICAyMDYsIDIyMSwgNDksIDI0MywgMjI4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDI0MywgMjI4LCAxNjIsIAotICAgIDI0OCwgNDMsIDYxLCA1MSwgMywgODAsIDI0OCwgNTUsIDIyNywgMTE0LCA2MSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDI0MywgCi0gICAgODUsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgNTAsIAotICAgIDE2MiwgMjQ4LCA0MywgMjI4LCA4LCAyNDYsIDYxLCA2MSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAKLSAgICAzLCAyMjYsIDI1MSwgNDksIDIxNywgNTksIDYxLCA1MSwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgNTEsIDMsIAotICAgIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgCi0gICAgNjIsIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIyNiwgMjUxLCA1MCwgMjE3LCA1OSwgNjEsIAotICAgIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCAyMDYsIDIyMSwgNTAsIAotICAgIDIwOCwgODUsIDIyNiwgMjUxLCA0OSwgMjA4LCA4NSwgNjEsIDIyNSwgMTAsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgMjExLCAKLSAgICAxNzcsIDYxLCAyMjUsIDEwLCA1LCAyMTEsIDE3NywgNjIsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCAyMjYsIDI1MSwgNTAsIAotICAgIDIwOCwgODUsIDYyLCAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDI0NiwgNywgMjA3LCAzLCAyMTIsIDE1LCAyNDUsIDIzNiwgCi0gICAgNjIsIDIxMSwgOTQsIDYxLCAyMTEsIDk0LCAyMjcsIDEzMSwgMjA5LCAxNywgMjEwLCAyMTQsIDI1MCwgNzgsIDIyMSwgMTg4LCAKLSAgICAyNDQsIDE5LCAyMjEsIDE4OCwgMjQ1LCAyMDQsIDIxOSwgMjUwLCA2MiwgMjA5LCAxNjEsIDYxLCAyMDksIDE2MSwgMjQ4LCAKLSAgICAyNDgsIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDI0NiwgMTY4LCAyNDgsIDI0OCwgOTgsIDMsIDIwMywgMTk2LCAyMTQsIAotICAgIDI1NCwgMjA3LCA0LCAzLCAyMTYsIDE5MSwgMjQyLCA0OCwgMjM2LCA0NywgMjQ4LCAxMDIsIDYxLCAyMTIsIDIzNywgMjE4LCAKLSAgICAxNTksIDYyLCAyMTIsIDIzNywgMjE4LCAxNTksIDIxMywgNjgsIDIxNiwgNzMsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCAKLSAgICA1NiwgMjQ3LCAxNzcsIDYyLCA0OSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgNDksIAotICAgIDIxOCwgNTksIDIzMSwgMzUsIDYxLCAxMTIsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgCi0gICAgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCA2MywgMjUsIDI0NSwgMTI5LCAyNDcsIDExLCA1NCwgMjE2LCAyMDMsIAotICAgIDU0LCAyNDgsIDYyLCA1NCwgMjQ3LCA4MywgMjUwLCAyMDgsIDIxOSwgMjMwLCAyNDUsIDEzMCwgMjQ2LCAxNDMsIDIxNiwgCi0gICAgNTksIDI0NSwgMTMxLCA3NiwgMjI3LCA5LCAyNDUsIDEzMSwgNzYsIDIzMCwgMTUxLCAyMTEsIDk1LCAyNSwgMjQ1LCAxMzgsIAotICAgIDI0MCwgNzUsIDk3LCAyNTEsIDExNSwgMjEzLCA3MCwgMjM3LCAxMzEsIDI1LCAyMTIsIDE1OSwgMjE5LCAzMywgOTcsIDIwMywgCi0gICAgMSwgMjAzLCA3NiwgMjA4LCA3NSwgMzUsIDIzNywgNTEsIDIwOCwgNzUsIDM1LCAyMjgsIDMzLCAyMDgsIDc1LCAzNSwgMjM5LCAKLSAgICAyNDksIDIwOCwgNzUsIDM1LCAyMDksIDE4LCAyMDgsIDc1LCAzNSwgMjA0LCAxNiwgMjA4LCA3NSwgMzUsIDIwNCwgODAsIAotICAgIDIwOCwgNzUsIDM1LCAyMjQsIDEyLCAyMDgsIDc1LCAzNSwgMjQxLCAxNzksIDIwNCwgMzcsIDc2LCAyNDMsIDI0OSwgNjEsIAotICAgIDIzOSwgMTE0LCAyNDAsIDEwMiwgNjEsIDIxMiwgMzAsIDI0MCwgMTAyLCA2MiwgMjEyLCAzMCwgMjQwLCAxMDIsIDYxLCAKLSAgICAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDI5LCAyMjgsIDEsIDIxNywgNTYsIDIyNCwgCi0gICAgMjksIDIyNCwgMjM0LCAyNDAsIDQzLCA1NCwgMjQxLCAxNzksIDIyNSwgMTI3LCA1NCwgMjMwLCA2OSwgMjE0LCAyMTgsIAotICAgIDIwNiwgMjA1LCAyMjIsIDIyNCwgMjE4LCA3MywgMjUwLCAxMTQsIDIwOSwgMjA1LCAyMzgsIDE3OCwgMjQ3LCA1NywgMjI3LCAKLSAgICAxODQsIDIwNSwgMjAyLCAyMjcsIDE0NSwgMjE0LCAxODcsIDIxNSwgMjAsIDI0NywgNDMsIDI1MCwgMTQ1LCAyMTgsIDEwOCwgCi0gICAgNjEsIDI0NiwgMTUwLCAyMjksIDgxLCA2MSwgMjQ2LCAxNTAsIDIxNywgNDgsIDYxLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYxLCAKLSAgICAyNDYsIDE1MCwgMjQ4LCA1NCwgNjEsIDI0NiwgMTUwLCAyMjksIDMxLCA2MSwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyNDYsIAotICAgIDE1MCwgMjI5LCA4MSwgNjIsIDI0NiwgMTUwLCAyMTcsIDQ4LCA2MiwgMjQ2LCAxNTAsIDIxNSwgMjA2LCA2MiwgMjQ2LCAKLSAgICAxNTAsIDI0OCwgNTQsIDYyLCAyNDYsIDE1MCwgMjI5LCAzMSwgNjIsIDI0NiwgMTUwLCAyMTksIDQ1LCA2MiwgMjExLCAyMjYsIAotICAgIDIxMCwgMjI3LCA2MSwgMjM3LCA1NiwgMjEwLCAyMjcsIDYxLCAyNDMsIDIyMiwgMjEwLCAyMjcsIDYyLCAyNDYsIDUsIDIxMCwgCi0gICAgMjI3LCA2MSwgMjExLCAyMjYsIDIxMCwgMjI3LCA2MiwgMjM3LCA1NiwgMjEwLCAyMjcsIDYyLCAyNDMsIDIyMiwgMjEwLCAKLSAgICAyMjcsIDYxLCAyNDYsIDUsIDIxMCwgMjI3LCAyMzYsIDQ3LCAyMTEsIDE4MiwgMjE3LCA1NiwgMjIxLCAxNjAsIDI0MSwgCi0gICAgMTM5LCAyMjEsIDE2MCwgMjQ4LCAxNTgsIDI0MSwgMTM5LCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDIxMiwgODEsIDIyMSwgMTU1LCAKLSAgICAyMjMsIDE5NSwgMjM5LCAyMTcsIDU0LCAyMjMsIDE5NSwgMjIzLCA2NiwgNTQsIDIyMywgMTk1LCAyMTMsIDU3LCA1NCwgCi0gICAgMjA0LCA0NiwgMjEwLCA4OSwgMjQ1LCAxMzAsIDI0MSwgMTc2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjA2LCAyMzMsIDIxNiwgCi0gICAgMTM5LCA5NywgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMjAsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE4LCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNywgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTUsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTEzLCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExMSwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMDksIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIzOCwgMTc2LCAKLSAgICAyMjUsIDcwLCA2MiwgMjA2LCAyMzMsIDIxNiwgMTM5LCA5NywgMjE2LCAxNDAsIDIxOSwgOTUsIDk3LCAyMTksIDY4LCAyMTksIAotICAgIDk1LCA5NywgMjE4LCAyMzgsIDIxOSwgOTUsIDU0LCAyMDQsIDM1LCA5NywgMjQzLCAyMTQsIDI0MCwgMTAxLCAyNDMsIDIxNCwgCi0gICAgMjQwLCAxMDAsIDI0MywgMjE0LCAyNDAsIDk5LCAyNDMsIDIxNCwgMjQwLCA5OCwgMjQzLCAyMTQsIDI0MCwgOTcsIDI0MywgCi0gICAgMjE0LCAyNDAsIDk2LCA2MSwgMjQ2LCA2MiwgMywgNzAsIDIxNiwgMTYsIDYxLCAyNDYsIDYyLCAzLCAxMjAsIDI0MywgODMsIAotICAgIDYyLCAyNDYsIDYyLCAzLCA2MSwgNzAsIDIxNiwgMTYsIDYyLCAyNDYsIDYyLCAzLCAxMjAsIDYxLCAyNDMsIDgzLCAyMjQsIAotICAgIDQ1LCAzNSwgMjAzLCA3NiwgMjI0LCA0NSwgMzUsIDIwMywgMCwgMjQzLCAxOTUsIDM1LCAyMzcsIDI0OCwgMjAzLCA3NiwgCi0gICAgMjQzLCAxOTUsIDM1LCAyMjcsIDE3NywgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDc2LCAyNDMsIAotICAgIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDAsIDYxLCAyMzksIDIyNSwgNjIsIDIzOSwgMjI1LCAyMzcsIDEzMSwgMjUsIDIxOCwgCi0gICAgMTYzLCAyNTAsIDIyOCwgMjQ1LCAxMjgsIDIxMCwgMTU0LCAyMTEsIDEwMywgNzYsIDI1MSwgOTIsIDIxNCwgMjAzLCAyNTEsIAotICAgIDI5LCAyMzksIDE5NywgMjM4LCAxODcsIDIxMSwgMTAzLCA3NiwgMjM3LCAyNiwgMjUwLCA0MiwgOTcsIDIzOSwgMjEzLCAKLSAgICAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDEyNiwgMjI3LCAxMDksIDI0NSwgMTgxLCAyMTYsIDE2LCAxMjYsIDIyNywgMTA5LCAKLSAgICAyNDUsIDE4MSwgMjI3LCAyMjIsIDIwNCwgOTEsIDU0LCAxMzgsIDIwNSwgMTc5LCA1NCwgMjQyLCA3NSwgMjQwLCA0MywgNTQsIAotICAgIDI0MiwgNzUsIDIyNSwgMTI3LCA1NCwgMjMwLCAyNTAsIDI0MCwgNDMsIDI1LCAyMjUsIDEyNywgNTQsIDIyNSwgMTI3LCAyNSwgCi0gICAgMjQwLCA0MywgNTQsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDI1LCAyMjUsIAotICAgIDEyNywgMjUsIDI0MCwgNDMsIDU0LCA4MCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMzYsIDEwNiwgMjI1LCAxMjcsIAotICAgIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEwLCA2MSwgMjQ2LCA2MSwgMjI1LCAxMCwgNjIsIDI0NiwgNjEsIDIyNSwgMTAsIDUsIAotICAgIDYxLCAyNDYsIDYxLCAyMjUsIDg2LCA5NywgMjQzLCAxMzUsIDk3LCAyMDYsIDIzMCwgMjE5LCA2NywgOTcsIDI0NSwgMjQ3LCAKLSAgICAyMzksIDk3LCAyMDYsIDIwMSwgMjIyLCAyMTcsIDI0NiwgMjAzLCAyMTksIDEzNywgMjMwLCA3NSwgMjA1LCAyNDAsIDI0NiwgCi0gICAgMTIzLCA2MiwgMjI0LCAzMCwgMjI3LCAxMjgsIDIxMywgMTAxLCAyMTMsIDE0MCwgMjE3LCAzOCwgMjEzLCAxMjAsIDIxMiwgCi0gICAgMTAsIDI0OCwgMjUxLCAyNDgsIDIxNywgMTAzLCAyMjksIDE1MSwgNjEsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MSwgMjQyLCAKLSAgICA1OCwgMjI5LCA4MSwgNjIsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MiwgMjQyLCA1OCwgMjI5LCA4MSwgMjEyLCAxNiwgMjA0LCAKLSAgICAzLCAyMTIsIDE5LCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgNywgMjE2LCAxOTAsIDYyLCAyMTIsIDE1LCAyMDksIDE5LCAKLSAgICAyNDYsIDgsIDI1LCAyMTYsIDE5MCwgMjA3LCAxNzQsIDYxLCAyMTIsIDIzNywgMjE4LCAxNTksIDIwNywgMTc0LCA2MiwgCi0gICAgMjEyLCAyMzcsIDIxOCwgMTU5LCA2MSwgMjQzLCAyMjIsIDIzMSwgNTAsIDIxMSwgMTc3LCAyNDUsIDEyNCwgMjI4LCAxNSwgCi0gICAgMjQzLCAxNjIsIDI0NywgMzksIDIxOSwgMjUzLCAyMTgsIDE2MywgMjQ3LCA0MCwgMjEyLCA0OCwgMjM3LCAzNiwgMywgNjEsIAotICAgIDI0NSwgMTMwLCA0MywgMjQ1LCAxMjQsIDIyOCwgMTUsIDI0NiwgMTk1LCAyMjEsIDE5MiwgMjQxLCA2MiwgMjUwLCAyNTUsIAotICAgIDIyMCwgMjYsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjIsIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYxLCAKLSAgICAyMDcsIDEzMSwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgNDksIDIyOCwgMTYsIDIyNCwgMjMzLCA2MSwgNDksIDIyOCwgCi0gICAgMTYsIDIyNCwgMjMzLCAyNDIsIDUzLCAyMTIsIDQwLCA1NCwgNzksIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA0OSwgMjQ2LCAKLSAgICAxNiwgMjQxLCA2MiwgMTAzLCAyMTQsIDI1NCwgMjQwLCA4NCwgMjQzLCAyMjgsIDIzMSwgNTAsIDYxLCAyNDYsIDYyLCAyMzEsIAotICAgIDUwLCA2MiwgMjExLCAxNzcsIDYyLCAyMDgsIDUwLCAyMTYsIDg0LCA0OSwgMjQxLCA2MSwgMjE2LCA4NCwgNDksIDI0MSwgCi0gICAgNjAsIDI1MCwgNTQsIDE2LCAzNSwgMjA2LCAyMDUsIDc5LCAyNDYsIDYyLCAzLCAyMTEsIDMyLCAyNSwgMTIwLCAxODcsIDU1LCAKLSAgICAyMTgsIDI1NCwgMjE2LCAxMywgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMjcsIDIxOSwgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMzAsIAotICAgIDIzOSwgMjE4LCAyNTQsIDYyLCAyNDUsIDEzMSwgMjIwLCAzMiwgMjEzLCA4LCAyMTIsIDI1MiwgMjEyLCAyMDMsIDI0NiwgCi0gICAgOTAsIDI0NywgMTksIDIzNiwgMjMxLCAyMTIsIDg5LCAyMzgsIDE4OCwgMjA0LCAzLCAyMzYsIDIzLCAyMzgsIDE4OCwgMywgCi0gICAgMjM3LCAxMDEsIDIyNSwgMTA3LCAxNiwgMzUsIDIyNywgMTMzLCAyMjQsIDEyLCAyMDcsIDQsIDIyMCwgMzIsIDIzNywgMjM5LCAKLSAgICAyMzksIDE0OCwgMjM5LCAyMjYsIDIzMSwgNTAsIDIzNiwgMTI2LCAyNDAsIDM0LCAyMTUsIDE1LCA1MSwgMjM5LCAxNDcsIAotICAgIDI0NSwgMTY0LCAyMTIsIDY2LCAyMzUsIDE2MywgMjEyLCA2OSwgMjE4LCAyMzAsIDMsIDI0OCwgMjUxLCAyMDksIDE0NCwgCi0gICAgMjMwLCAxNjksIDI0OCwgMjM2LCA5NywgMjM3LCA1OSwgMjM3LCAyNTAsIDk3LCAyMzksIDEwNSwgMjE3LCAxODAsIDI0NSwgCi0gICAgMTAwLCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDYxLCAyMzksIDIyNiwgMywgMjM2LCAxMDYsIDEwMSwgNjIsIDIxMSwgMzMsIAotICAgIDYyLCAyMTUsIDI1LCAyMTQsIDE5MCwgMjA2LCAyMjEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MiwgMjE0LCAxOTAsIDIyNiwgCi0gICAgMjUxLCAyNDgsIDM4LCAyMTQsIDE5MCwgNjEsIDIxNCwgMTkwLCA2MSwgNzksIDI0NiwgMTY5LCA4MiwgMjA5LCAxNjIsIAotICAgIDIyNywgNDcsIDU0LCAyMDksIDIyMSwgMjQyLCA1MiwgMjUxLCA1MiwgMjQxLCA1NywgMjE2LCAxODgsIDIzOSwgMjM4LCAKLSAgICAyMTYsIDE4OCwgMjM3LCAxMjMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjAzLCAyMjAsIDIzNywgMTIzLCAyMjYsIDI1MSwgNTAsIAotICAgIDIxOSwgOCwgMjE5LCA4LCAyMDYsIDIyMSwgNTAsIDIxOSwgOCwgNjEsIDIyMiwgOTcsIDYyLCAyMjIsIDk3LCAyNDYsIDE2OSwgCi0gICAgODIsIDc5LCAyNDYsIDE2OSwgODIsIDIyMywgMjI0LCAyMDMsIDE5NiwgNzksIDIyMywgMjI0LCAyMDMsIDE5NiwgMjQ4LCAKLSAgICAyNDgsIDIwMywgMTk2LCA3OSwgMjQ4LCAyNDgsIDIwMywgMTk2LCAyMTksIDIwNywgMzAsIDI0NSwgMTMwLCA3OSwgMzAsIAotICAgIDI0NSwgMTMwLCAxNzEsIDI0NiwgMjE4LCAyNDUsIDEzMCwgNzksIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA4LCAyNDUsIAotICAgIDEzMCwgMjEzLCA3NywgNjEsIDgsIDI0NSwgMTMwLCAyMTksIDIwNywgOCwgMjQ1LCAxMzAsIDIyNSwgMTI0LCAyNDUsIDEzMCwgCi0gICAgMjExLCA5NSwgNzYsIDI0NCwgMTM3LCAyMzksIDE0NywgMjA5LCAxODAsIDI1MCwgNTksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgCi0gICAgMjUwLCA1OSwgNzksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0NiwgMywgMjUwLCA1OSwgNjIsIAotICAgIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTEsIDk0LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDIxMSwgMjIxLCAKLSAgICAyMTEsIDQyLCAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDQzLCA2MSwgMjExLCA5NCwgMTcxLCAyNDYsIDIxOCwgNjIsIDIxMSwgCi0gICAgOTQsIDYyLCAyNDYsIDIxOCwgNjEsIDIxMSwgOTQsIDIxOSwgMjA3LCA2MiwgMjExLCA5NCwgNzksIDIxOSwgMjA3LCA2MiwgCi0gICAgMjExLCA5NCwgMjE4LCAxMTgsIDIxMSwgOTQsIDIxMywgNzcsIDYxLCAyMTEsIDk0LCA3OSwgMjUwLCA1OSwgMTcxLCAyNDYsIAotICAgIDIxOCwgMjUwLCA1OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgCi0gICAgOTQsIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAotICAgIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIDE0MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE2LCAKLSAgICAxNDEsIDYyLCAyMTEsIDk0LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODMsIDIxOCwgNjEsIDI1MCwgCi0gICAgNTksIDIwOSwgMTgwLCAyNTAsIDU5LCAxNzEsIDI0NiwgMjE4LCAyMDksIDE4MCwgMjUwLCA1OSwgNzksIDIwOSwgMTgwLCAKLSAgICAyNTAsIDU5LCAyMTIsIDg4LCAyMTgsIDIxOCwgNjIsIDI1LCA2MSwgMjM5LCAyMDAsIDYyLCAyMzksIDIwMCwgNjEsIDIzOSwgCi0gICAgMjAwLCAyNDEsIDE0MywgMjE4LCAyMTgsIDIxOSwgMjA3LCA2MiwgMjM5LCAyMDAsIDQzLCAxNzEsIDI0NiwgMjE4LCAyNDEsIAotICAgIDE0MywgMjE4LCA2MSwgMjExLCA5NCwgNzksIDIwOSwgMTgwLCAyMTgsIDExOCwgMjUwLCA1OSwgMjEyLCAxNywgMjA4LCAKLSAgICAyNDQsIDIwOCwgNzgsIDIxMiwgMTcsIDc5LCAyNDYsIDE0NiwgMjEyLCAxNywgMjExLCAyMjMsIDc5LCAyMTEsIDIyMywgCi0gICAgMjQ4LCAyNDksIDI1MCwgNTksIDI0MSwgMTQzLCAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDc5LCAyNDEsIDE0MywgCi0gICAgMjA5LCAxODAsIDIxNywgMjEzLCAyNTAsIDU5LCAyNDUsIDEzMSwgODIsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAxODIsIAotICAgIDEwMywgMjQ1LCAxMzEsIDgyLCAyMjYsIDI1MSwgNTAsIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyNDIsIDUwLCA2MSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAotICAgIDIxMywgNzcsIDYxLCAyMTEsIDE3NywgNjIsIDIxNywgNDcsIDEzMSwgMjE5LCAyMzMsIDYxLCAyMTcsIDQ3LCAxMzEsIDIxOSwgCi0gICAgMjMzLCA2MSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDYyLCAyNDMsIDIyMiwgMjI0LCAxMDMsIDYxLCAyMDMsIDE5NiwgCi0gICAgNzksIDI0MCwgMjEyLCAxMzEsIDk3LCAxNTcsIDgwLCAxNDIsIDIyNSwgMTAsIDgwLCAxNDIsIDc5LCA4MCwgMTQyLCA3OSwgCi0gICAgMjEyLCAxMjAsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIxMiwgMTIwLCAyNDUsIAotICAgIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAxMjQsIDIxMiwgMTIwLCAKLSAgICAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIAotICAgIDIxOSwgMjMzLCAyNDUsIDg2LCAyMTEsIDc4LCAyMTksIDg5LCAyLCAyMTksIDIzMywgNzksIDI0MCwgMjEyLCAxMzEsIDIxOSwgCi0gICAgMjMzLCA3OSwgMjM3LCA1NiwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDc5LCA2MiwgMjM3LCA1NSwgMjE1LCAxOTgsIDc5LCAKLSAgICA2MiwgMjM3LCA1NiwgMjQ3LCAxNzcsIDIzOSwgMjAxLCAyMzcsIDU1LCAyMTUsIDE5OCwgMjM5LCAyMDEsIDIzNywgNTYsIAotICAgIDI0NywgMTc3LCAyMjUsIDEwLCA0OSwgMjE5LCA3NywgMjE5LCAyMzMsIDIyNSwgMTAsIDUwLCAyMTksIDc3LCAyMTksIDIzMywgCi0gICAgMjI1LCAxMCwgMjM5LCAyMTQsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgMjM5LCAyMTQsIDUwLCAyMTksIDc3LCAKLSAgICAyMTksIDIzMywgMjI1LCAxMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgMTAsIDIxNiwgCi0gICAgMTEsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAKLSAgICAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCA3OSwgMjE2LCAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgCi0gICAgMTU3LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMTU3LCA1MCwgMjA4LCAxMzMsIDIxMywgCi0gICAgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAKLSAgICAxMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCAxODIsIDQzLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE0NywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKLSAgICAxNDksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5NSwgMjQzLCAxNzQsIAotICAgIDE4MiwgNDMsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxOTksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgCi0gICAgMjIyLCA2MywgMjQzLCAxNzQsIDE4MiwgNDMsIDQyLCAyMDksIDE1MiwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE0NywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIAotICAgIDE0OSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE5NSwgMjQzLCAxNzQsIDQzLCAKLSAgICA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMjIyLCAKLSAgICA2MywgMjQzLCAxNzQsIDQzLCA0MSwgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCAKLSAgICA0MywgNDEsIDE3LCAxNDksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAKLSAgICAxNywgMTk1LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgCi0gICAgMTk5LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDQyLCAyMDksIAotICAgIDE1MiwgNzksIDIwNCwgMjYsIDg2LCA0NywgNzksIDkxLCA1NCwgNzksIDIyNCwgMTAzLCA1NCwgNzksIDI0MywgMTM3LCA1NCwgCi0gICAgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCA4NiwgNDcsIDc5LCAxNTMsIDI0MSwgMTc2LCA0NywgMjQyLCA2MywgCi0gICAgMjE4LCA2MywgODYsIDQ3LCA3OSwgMjE1LCAxOTAsIDg2LCA0NywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjA4LCA4NCwgODYsIAotICAgIDQ3LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjQ0LCAxNDMsIDIwOCwgODQsIDg2LCA0NywgNjIsIDg2LCA0NywgCi0gICAgMjA5LCAzMSwgMjA4LCAxNDMsIDg2LCAyNTAsIDk0LCAyMDksIDMxLCAyNDcsIDI0NiwgODYsIDI1MCwgOTQsIDYyLCA4NiwgCi0gICAgMjUwLCA5NCwgNzksIDYyLCAyNDUsIDg2LCAxODMsIDI1LCA4NiwgNDcsIDc5LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgODYsIAotICAgIDQ3LCAyMTEsIDE3NCwgNjIsIDg2LCA0NywgNzksIDI0NSwgMjE3LCA2MiwgODYsIDQ3LCAyMTYsIDEwLCA2MSwgODYsIDQ3LCAKLSAgICAyMjcsIDIxNiwgNjEsIDg2LCA0NywgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDg2LCA0NywgMjM5LCAxMTcsIDIxMywgNzcsIAotICAgIDYxLCA4NiwgNDcsIDc5LCAyMjYsIDI1MSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA3OSwgMjA2LCAyMjEsIDIxNiwgOSwgNjEsIAotICAgIDg2LCA0NywgMjIxLCAxNjIsIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDI0NSwgOTMsIDIyNywgMTQsIDIyMSwgCi0gICAgMTYyLCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA0MywgNzksIDYxLCA4NiwgNDcsIDIwNCwgMzIsIDg2LCA0NywgCi0gICAgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMjQ4LCA0MiwgODYsIDQ3LCAyNDgsIDQyLCAxNTMsIDI0MSwgMTc2LCAKLSAgICA0NywgNzksIDI0OCwgNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCAyNDgsIDQyLCA4NiwgNDcsIDc5LCAyNDgsIAotICAgIDQyLCAxNTMsIDI0MSwgMTc2LCA0NywgMjA5LCAxODIsIDg2LCA0NywgNzksIDIwOSwgMTgxLCA4NiwgNDcsIDIwNCwgNTYsIAotICAgIDg2LCA0NywgNzksIDIwNCwgNTYsIDg2LCA0NywgMjIwLCAzLCA4NiwgNDcsIDUyLCAyNDUsIDkzLCAyMjcsIDE0LCAxMjYsIAotICAgIDI0MywgMTg0LCAyNTAsIDIxNywgNjEsIDIwOCwgODYsIDI0NSwgMTk1LCA1LCA2MSwgMjA4LCA4NSwgMjE4LCAyMzMsIDE3MSwgCi0gICAgMjEwLCAyNDQsIDE3MSwgMjEwLCAxOTcsIDQ5LCAyMTUsIDkzLCAyNDksIDExLCAyNDQsIDQzLCA1MCwgMjE1LCA5MywgMjQ5LCAKLSAgICAxMSwgMjQ0LCA0MywgMjE5LCAyNDUsIDMsIDcwLCAyMzEsIDYsIDIxNiwgNzQsIDIxMiwgMSwgMjE3LCAyNDgsIDIxMCwgCi0gICAgMjQ0LCAyMTAsIDE5OCwgMjE3LCAyNDgsIDIxMiwgMCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDEzLCAyMTUsIAotICAgIDI0NSwgMjQzLCAyMjcsIDE2MywgMjQzLCAxMzYsIDEzLCAyNDAsIDg0LCAyNDMsIDIyNywgMTAzLCAyMjcsIDM3LCAyNTAsIAotICAgIDIyNiwgMTAzLCAyMjcsIDM3LCAyMTksIDI0NCwgNjEsIDI0MywgMjIyLCAzLCAyNDYsIDIxNiwgMjQzLCA4NSwgMjUsIDMsIAotICAgIDI0MywgODUsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyMDYsIDIxMiwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMywgMjQzLCAKLSAgICA4NSwgMjA2LCAyMjEsIDQ5LCAyNDUsIDE2NiwgMywgMjQzLCA4NSwgNDksIDIxOSwgMjA5LCAyMzAsIDk5LCA1MCwgMjE5LCAKLSAgICAyMDksIDIzMCwgOTksIDIzOSwgMTAyLCAyMTksIDIwOSwgMjMwLCA5OSwgMjI4LCA4LCAxMTIsIDIxMCwgMywgMjI4LCA4LCAKLSAgICAxMjEsIDIxMCwgMywgNDksIDI1LCA1MCwgNTIsIDIwNywgMTczLCA0OSwgMjUsIDUwLCAyMTAsIDMsIDQ5LCAyMjMsIDIyOCwgCi0gICAgMTYzLCA1MCwgMjEwLCAzLCAxNjMsIDQ5LCAyMTAsIDMsIDExMiwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NSwgMjI2LCAyNDcsIAotICAgIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDIxNSwgMTM1LCA2MSwgMjQ1LCAyMTYsIDI0MywgMjIxLCA2MSwgMjQ1LCAKLSAgICAyMTYsIDI0MywgMjIyLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjIsIDMsIDg2LCAyMDgsIDI1NCwgCi0gICAgNjEsIDUxLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCA1MSwgMywgODYsIDIwOCwgMjU0LCAxMywgNDksIDYxLCA1MSwgMTU1LCAKLSAgICAxMywgNTAsIDYxLCA1MSwgMTU1LCAxMywgNDksIDI1MCwgMjE4LCAxNTUsIDEzLCA1MCwgMjUwLCAyMTgsIDE1NSwgMTMsIAotICAgIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDQ5LCA2MSwgMjA4LCAxMzMsIAotICAgIDIxMywgMzMsIDE1NSwgMTMsIDUwLCA2MSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMTMsIDQ5LCAyMzksIDIxNCwgMjE5LCAKLSAgICA3NiwgMTMsIDUwLCAyMzksIDIxNCwgMjE5LCA3NiwgMTc3LCAyMTcsIDU4LCA0NywgMTgzLCAyMTcsIDU4LCA0NywgMjUwLCAKLSAgICAxOTQsIDIzOCwgMjI2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCA1MCwgNTMsIDMsIAotICAgIDQzLCAyMTgsIDc2LCAxNjMsIDk2LCA0NywgMTYzLCA4NiwgNDcsIDE2MywgNDksIDUwLCA0NywgMTYzLCA5NiwgNTIsIDQ3LCAKLSAgICAxNjMsIDg2LCA1MiwgNDcsIDE2MywgNDksIDUwLCA1MiwgNDcsIDE2MywgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIAotICAgIDg2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCA5NiwgNTIsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDg2LCA1MiwgNTMsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDIxMSwgMTcxLCA0NywgNTgsIDU5LCAyNDgsIDM2LCA1OCwgNTksIDI0MywgODIsIAotICAgIDU4LCA1OSwgMjQyLCAyMTAsIDU4LCA1OSwgMjQzLCA4MSwgNTgsIDU5LCAyNDIsIDE0NiwgNTgsIDU5LCAyNDMsIDE3LCA1OCwgCi0gICAgNTksIDI0MiwgMjA5LCA1OCwgNTksIDI0MywgODAsIDU4LCA1OSwgMjQyLCAxMTQsIDU4LCA1OSwgMjQyLCAyNDEsIDU4LCAKLSAgICA1OSwgMjQyLCAxNzcsIDU4LCA1OSwgMjQzLCA0OCwgNTgsIDU5LCAyNDIsIDE0NSwgNTgsIDU5LCAyNDMsIDE2LCA1OCwgNTksIAotICAgIDI0MiwgMjA4LCA1OCwgNTksIDI0MywgNzksIDU4LCA1OSwgMjQyLCA5OCwgNTgsIDU5LCAyNDIsIDIyNSwgNTgsIDU5LCAKLSAgICAyNDIsIDE2MSwgNTgsIDU5LCAyNDMsIDMyLCA1OCwgNTksIDI0MiwgMTI5LCA1OCwgNTksIDI0MywgMCwgNTgsIDU5LCAyNDIsIAotICAgIDE5MiwgNTgsIDU5LCAyNDMsIDYzLCA1OCwgNTksIDI0MiwgMTEzLCA1OCwgNTksIDI0MiwgMjQwLCA1OCwgNTksIDI0MiwgCi0gICAgMTc2LCA1OCwgNTksIDI0MywgNDcsIDU4LCA1OSwgMjQyLCAxNDQsIDU4LCA1OSwgMjQzLCAxNSwgNTgsIDU5LCAyNDIsIAotICAgIDIwNywgNTgsIDU5LCAyNDMsIDc4LCA1OCwgNTksIDI0MiwgOTAsIDU4LCA1OSwgMjQyLCAyMTcsIDU4LCA1OSwgMjQyLCAKLSAgICAxNTMsIDU4LCA1OSwgMjQzLCAyNCwgNTgsIDU5LCAyNDIsIDEyMSwgNTgsIDU5LCAyNDIsIDI0OCwgNTgsIDU5LCAyNDIsIAotICAgIDE4NCwgNTgsIDU5LCAyNDMsIDU1LCA1OCwgNTksIDI0MiwgMTA1LCA1OCwgNTksIDI0MiwgMjMyLCA1OCwgNTksIDI0MiwgCi0gICAgMTY4LCA1OCwgNTksIDI0MywgMzksIDU4LCA1OSwgMjQyLCAxMzYsIDU4LCA1OSwgMjQzLCA3LCA1OCwgNTksIDI0MiwgMTk5LCAKLSAgICA1OCwgNTksIDI0MywgNzAsIDU4LCA1OSwgMjQyLCA5NywgNTgsIDU5LCAyNDIsIDIyNCwgNTgsIDU5LCAyNDIsIDE2MCwgNTgsIAotICAgIDU5LCAyNDMsIDMxLCA1OCwgNTksIDI0MiwgMTI4LCA1OCwgNTksIDI0MiwgMjU1LCA1OCwgNTksIDI0MiwgMTkxLCA1OCwgCi0gICAgNTksIDI0MywgNjIsIDU4LCA1OSwgMjQyLCAxMTIsIDU4LCA1OSwgMjQyLCAyMzksIDU4LCA1OSwgMjQyLCAxNzUsIDU4LCAKLSAgICA1OSwgMjQzLCA0NiwgNTgsIDU5LCAyNDIsIDE0MywgNTgsIDU5LCAyNDMsIDE0LCA1OCwgNTksIDI0MiwgMjA2LCA1OCwgNTksIAotICAgIDI0MywgNzcsIDU4LCA1OSwgMjQyLCA4NiwgNTgsIDU5LCAyNDIsIDIxMywgNTgsIDU5LCAyNDIsIDE0OSwgNTgsIDU5LCAKLSAgICAyNDMsIDIwLCA1OCwgNTksIDI0MiwgMTE3LCA1OCwgNTksIDI0MiwgMjQ0LCA1OCwgNTksIDI0MiwgMTgwLCA1OCwgNTksIAotICAgIDI0MywgNTEsIDU4LCA1OSwgMjQyLCAxMDEsIDU4LCA1OSwgMjQyLCAyMjgsIDU4LCA1OSwgMjQyLCAxNjQsIDU4LCA1OSwgCi0gICAgMjQzLCAzNSwgNTgsIDU5LCAyNDIsIDEzMiwgNTgsIDU5LCAyNDMsIDMsIDU4LCA1OSwgMjQyLCAxOTUsIDU4LCA1OSwgMjQzLCAKLSAgICA2NiwgNTgsIDU5LCAyNDIsIDkzLCA1OCwgNTksIDI0MiwgMjIwLCA1OCwgNTksIDI0MiwgMTU2LCA1OCwgNTksIDI0MywgMjcsIAotICAgIDU4LCA1OSwgMjQyLCAxMjQsIDU4LCA1OSwgMjQyLCAyNTEsIDU4LCA1OSwgMjQyLCAxODcsIDU4LCA1OSwgMjQzLCA1OCwgCi0gICAgNTgsIDU5LCAyNDIsIDEwOCwgNTgsIDU5LCAyNDIsIDIzNSwgNTgsIDU5LCAyNDIsIDE3MSwgNTgsIDU5LCAyNDMsIDQyLCAKLSAgICA1OCwgNTksIDI0MiwgMTM5LCA1OCwgNTksIDI0MywgMTAsIDU4LCA1OSwgMjQyLCAyMDIsIDU4LCA1OSwgMjQzLCA3MywgNTgsIAotICAgIDU5LCAyNDIsIDg5LCA1OCwgNTksIDI0MiwgMjE2LCA1OCwgNTksIDI0MiwgMTUyLCA1OCwgNTksIDI0MywgMjMsIDU4LCA1OSwgCi0gICAgMjQyLCAxMjAsIDU4LCA1OSwgMjQyLCAyNDcsIDU4LCA1OSwgMjQyLCAxODMsIDU4LCA1OSwgMjQzLCA1NCwgNTgsIDU5LCAKLSAgICAyNDIsIDEwNCwgNTgsIDU5LCAyNDIsIDIzMSwgNTgsIDU5LCAyNDIsIDE2NywgNTgsIDU5LCAyNDMsIDM4LCA1OCwgNTksIAotICAgIDI0MiwgMTM1LCA1OCwgNTksIDI0MywgNiwgNTgsIDU5LCAyNDIsIDE5OCwgNTgsIDU5LCAyNDMsIDY5LCA1OCwgNTksIDI0MiwgCi0gICAgOTYsIDU4LCA1OSwgMjQyLCAyMjMsIDU4LCA1OSwgMjQyLCAxNTksIDU4LCA1OSwgMjQzLCAzMCwgNTgsIDU5LCAyNDIsIAotICAgIDEyNywgNTgsIDU5LCAyNDIsIDI1NCwgNTgsIDU5LCAyNDIsIDE5MCwgNTgsIDU5LCAyNDMsIDYxLCA1OCwgNTksIDI0MiwgCi0gICAgMTExLCA1OCwgNTksIDI0MiwgMjM4LCA1OCwgNTksIDI0MiwgMTc0LCA1OCwgNTksIDI0MywgNDUsIDU4LCA1OSwgMjQyLCAKLSAgICAxNDIsIDU4LCA1OSwgMjQzLCAxMywgNTgsIDU5LCAyNDIsIDIwNSwgNTgsIDU5LCAyNDMsIDc2LCA1OCwgNTksIDI0MiwgODQsIAotICAgIDU4LCA1OSwgMjQyLCAyMTEsIDU4LCA1OSwgMjQyLCAxNDcsIDU4LCA1OSwgMjQzLCAxOCwgNTgsIDU5LCAyNDIsIDExNSwgCi0gICAgNTgsIDU5LCAyNDIsIDI0MiwgNTgsIDU5LCAyNDIsIDE3OCwgNTgsIDU5LCAyNDMsIDQ5LCA1OCwgNTksIDI0MiwgOTksIDU4LCAKLSAgICA1OSwgMjQyLCAyMjYsIDU4LCA1OSwgMjQyLCAxNjIsIDU4LCA1OSwgMjQzLCAzMywgNTgsIDU5LCAyNDIsIDEzMCwgNTgsIAotICAgIDU5LCAyNDMsIDEsIDU4LCA1OSwgMjQyLCAxOTMsIDU4LCA1OSwgMjQzLCA2NCwgNTgsIDU5LCAyNDIsIDkxLCA1OCwgNTksIAotICAgIDI0MiwgMjE4LCA1OCwgNTksIDI0MiwgMTU0LCA1OCwgNTksIDI0MywgMjUsIDU4LCA1OSwgMjQyLCAxMjIsIDU4LCA1OSwgCi0gICAgMjQyLCAyNDksIDU4LCA1OSwgMjQyLCAxODUsIDU4LCA1OSwgMjQzLCA1NiwgNTgsIDU5LCAyNDIsIDEwNiwgNTgsIDU5LCAKLSAgICAyNDIsIDIzMywgNTgsIDU5LCAyNDIsIDE2OSwgNTgsIDU5LCAyNDMsIDQwLCA1OCwgNTksIDI0MiwgMTM3LCA1OCwgNTksIAotICAgIDI0MywgOCwgNTgsIDU5LCAyNDIsIDIwMCwgNTgsIDU5LCAyNDMsIDcxLCA1OCwgNTksIDI0MiwgODcsIDU4LCA1OSwgMjQyLCAKLSAgICAyMTQsIDU4LCA1OSwgMjQyLCAxNTAsIDU4LCA1OSwgMjQzLCAyMSwgNTgsIDU5LCAyNDIsIDExOCwgNTgsIDU5LCAyNDIsIAotICAgIDI0NSwgNTgsIDU5LCAyNDIsIDE4MSwgNTgsIDU5LCAyNDMsIDUyLCA1OCwgNTksIDI0MiwgMTAyLCA1OCwgNTksIDI0MiwgCi0gICAgMjI5LCA1OCwgNTksIDI0MiwgMTY1LCA1OCwgNTksIDI0MywgMzYsIDU4LCA1OSwgMjQyLCAxMzMsIDU4LCA1OSwgMjQzLCA0LCAKLSAgICA1OCwgNTksIDI0MiwgMTk2LCA1OCwgNTksIDI0MywgNjcsIDU4LCA1OSwgMjQyLCA5NCwgNTgsIDU5LCAyNDIsIDIyMSwgNTgsIAotICAgIDU5LCAyNDIsIDE1NywgNTgsIDU5LCAyNDMsIDI4LCA1OCwgNTksIDI0MiwgMTI1LCA1OCwgNTksIDI0MiwgMjUyLCA1OCwgCi0gICAgNTksIDI0MiwgMTg4LCA1OCwgNTksIDI0MywgNTksIDU4LCA1OSwgMjQyLCAxMDksIDU4LCA1OSwgMjQyLCAyMzYsIDU4LCAKLSAgICA1OSwgMjQyLCAxNzIsIDU4LCA1OSwgMjQzLCA0MywgNTgsIDU5LCAyNDIsIDE0MCwgNTgsIDU5LCAyNDMsIDExLCA1OCwgNTksIAotICAgIDI0MiwgMjAzLCA1OCwgNTksIDI0MywgNzQsIDU4LCA1OSwgMjQyLCA4NSwgNTgsIDU5LCAyNDIsIDIxMiwgNTgsIDU5LCAKLSAgICAyNDIsIDE0OCwgNTgsIDU5LCAyNDMsIDE5LCA1OCwgNTksIDI0MiwgMTE2LCA1OCwgNTksIDI0MiwgMjQzLCA1OCwgNTksIAotICAgIDI0MiwgMTc5LCA1OCwgNTksIDI0MywgNTAsIDU4LCA1OSwgMjQyLCAxMDAsIDU4LCA1OSwgMjQyLCAyMjcsIDU4LCA1OSwgCi0gICAgMjQyLCAxNjMsIDU4LCA1OSwgMjQzLCAzNCwgNTgsIDU5LCAyNDIsIDEzMSwgNTgsIDU5LCAyNDMsIDIsIDU4LCA1OSwgMjQyLCAKLSAgICAxOTQsIDU4LCA1OSwgMjQzLCA2NSwgNTgsIDU5LCAyNDIsIDkyLCA1OCwgNTksIDI0MiwgMjE5LCA1OCwgNTksIDI0MiwgCi0gICAgMTU1LCA1OCwgNTksIDI0MywgMjYsIDU4LCA1OSwgMjQyLCAxMjMsIDU4LCA1OSwgMjQyLCAyNTAsIDU4LCA1OSwgMjQyLCAKLSAgICAxODYsIDU4LCA1OSwgMjQzLCA1NywgNTgsIDU5LCAyNDIsIDEwNywgNTgsIDU5LCAyNDIsIDIzNCwgNTgsIDU5LCAyNDIsIAotICAgIDE3MCwgNTgsIDU5LCAyNDMsIDQxLCA1OCwgNTksIDI0MiwgMTM4LCA1OCwgNTksIDI0MywgOSwgNTgsIDU5LCAyNDIsIDIwMSwgCi0gICAgNTgsIDU5LCAyNDMsIDcyLCA1OCwgNTksIDI0MiwgODgsIDU4LCA1OSwgMjQyLCAyMTUsIDU4LCA1OSwgMjQyLCAxNTEsIDU4LCAKLSAgICA1OSwgMjQzLCAyMiwgNTgsIDU5LCAyNDIsIDExOSwgNTgsIDU5LCAyNDIsIDI0NiwgNTgsIDU5LCAyNDIsIDE4MiwgNTgsIAotICAgIDU5LCAyNDMsIDUzLCA1OCwgNTksIDI0MiwgMTAzLCA1OCwgNTksIDI0MiwgMjMwLCA1OCwgNTksIDI0MiwgMTY2LCA1OCwgCi0gICAgNTksIDI0MywgMzcsIDU4LCA1OSwgMjQyLCAxMzQsIDU4LCA1OSwgMjQzLCA1LCA1OCwgNTksIDI0MiwgMTk3LCA1OCwgNTksIAotICAgIDI0MywgNjgsIDU4LCA1OSwgMjQyLCA5NSwgNTgsIDU5LCAyNDIsIDIyMiwgNTgsIDU5LCAyNDIsIDE1OCwgNTgsIDU5LCAKLSAgICAyNDMsIDI5LCA1OCwgNTksIDI0MiwgMTI2LCA1OCwgNTksIDI0MiwgMjUzLCA1OCwgNTksIDI0MiwgMTg5LCA1OCwgNTksIAotICAgIDI0MywgNjAsIDU4LCA1OSwgMjQyLCAxMTAsIDU4LCA1OSwgMjQyLCAyMzcsIDU4LCA1OSwgMjQyLCAxNzMsIDU4LCA1OSwgCi0gICAgMjQzLCA0NCwgNTgsIDU5LCAyNDIsIDE0MSwgNTgsIDU5LCAyNDMsIDEyLCA1OCwgNTksIDI0MiwgMjA0LCA1OCwgNTksIAotICAgIDI0MywgNzUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgNTIsIDgwLCA5NSwgCi0gICAgOTYsIDUyLCA1MywgMywgODAsIDk1LCA4NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDQ5LCA1MCwgNTIsIDUzLCAzLCA4MCwgOTUsIAotICAgIDg2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDg2LCA1MiwgNTMsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE4MywgNTMsIDMsIDIzNiwgMTA2LCA5NSwgMTc3LCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIAotICAgIDIwOCwgNzAsIDQ3LCAxODMsIDIwOCwgNzAsIDQ3LCA5NiwgNTIsIDI0NCwgMTQ1LCA0NywgODYsIDUyLCAyNDQsIDE0NSwgCi0gICAgNDcsIDk2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDcsIDEzNCwgCi0gICAgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDE3NywgNTMsIDIwOCwgMTczLCAKLSAgICAxNDIsIDE4MywgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDUzLCAzLCAKLSAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDg2LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCi0gICAgMjUwLCA5NiwgODYsIDI1MCwgOTYsIDk2LCA1MiwgMjUwLCA5NiwgODYsIDUyLCAyNTAsIDk2LCA5NiwgNTMsIDIwOCwgMTczLCAKLSAgICA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgOTYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIAotICAgIDIwOCwgMTczLCA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjM5LCAxMjAsIDI0OCwgMjMxLCAyMDgsIDE3MywgNjIsIDI0MywgCi0gICAgMjIxLCAxNTMsIDIwNCwgNDYsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyNSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjQxLCAxNzYsIDUzLCAzLCAxMTMsIAotICAgIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDMsIDExMywgMjExLCAyMzgsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjA0LCAKLSAgICA0NiwgNTMsIDI1LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAyNSwgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgCi0gICAgNTMsIDI1LCAxNTMsIDIwNCwgNDYsIDQ3LCAyMTUsIDI0NSwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyNDAsIDg0LCAyNDMsIAotICAgIDIyNywgMjQwLCA4NCwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTUsIDI0NSwgMjQzLCAyMjcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI0NSwgMTI0LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDQ3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMTUsIDI0NSwgCi0gICAgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIAotICAgIDE1MywgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMjA0LCA3NiwgCi0gICAgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMTYsIDE2LCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDIwNiwgCi0gICAgMjEyLCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDI0MiwgNjgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgCi0gICAgODQsIDI0NSwgODQsIDIyNywgMjEyLCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAyNDUsIDg0LCAyMTYsIDUsIDIxNiwgCi0gICAgOCwgMjUwLCAxMjksIDI0NiwgMTgsIDQ3LCAyMjcsIDIxNSwgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjA4LCAxNDUsIAotICAgIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDI0NywgMjQ4LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgMjUwLCAKLSAgICAxMjksIDI0NiwgMTgsIDUzLCAzLCAyMjQsIDEwMiwgMjA4LCAxNDUsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNTMsIDMsIDIxOCwgCi0gICAgNzYsIDIyNiwgMjUxLCA1MCwgMjEzLCAxNDUsIDI0NiwgMTgsIDQ3LCAyMjYsIDI1MSwgNDksIDIxMywgMTQ1LCAyNTAsIAotICAgIDE5NCwgNDcsIDI1MCwgMTk0LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjQ2LCAxNiwgMjQ2LCA2MiwgNDcsIAotICAgIDg2LCA1MywgODcsIDIxMiwgMjI4LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxMiwgMjI4LCA4NiwgNDcsIDIxMiwgMjI4LCA4NiwgCi0gICAgNTMsIDg3LCA5NiwgNDcsIDg2LCA1MywgMywgOTEsIDU2LCA5NiwgNTMsIDMsIDkxLCA1NiwgODYsIDUzLCAyMDksIDI1LCAKLSAgICAyMDMsIDE5NiwgNDksIDUwLCA1MywgMjA5LCAyNSwgNSwgMjQ2LCA2MSwgMTc3LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAKLSAgICA1LCAyNDYsIDYxLCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgNDksIDE1MCwgMTIxLCA1MCwgMTUwLCAKLSAgICAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAxNTAsIDQ5LCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCi0gICAgMTUwLCA1MCwgMjM3LCA4NiwgNDksIDE1MCwgMTEyLCA1MCwgMTUwLCAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAKLSAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgMTEyLCAxNTAsIDQ5LCAxMjEsIAotICAgIDE1MCwgNDksIDIzNywgODYsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjA4LCAxNzMsIDE0MiwgODYsIDIzNywgODcsIAotICAgIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIwOCwgMTczLCAxNDIsIDE4MywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMDgsIDE3MywgCi0gICAgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgCi0gICAgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAxMTIsIDIzOSwgMTIwLCAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgMTc3LCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMzksIDEyMCwgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAKLSAgICAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAKLSAgICAyMzksIDEyMCwgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgCi0gICAgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMjQyLCA3MCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDIxNiwgMTYsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNzAsIDE4MywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA5NiwgMjM3LCAKLSAgICA4NywgMywgMTUwLCAxMTIsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgOTYsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMTIxLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIAotICAgIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMjQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgODcsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDI0MiwgNzAsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgMjQ0LCAxNDQsIDk2LCAyMzcsIDg3LCAKLSAgICAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgCi0gICAgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDE3NywgMjM3LCAKLSAgICA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCAxODMsIDIzNywgODcsIDMsIAotICAgIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgNTAsIDUyLCA1MywgMywgMjE1LCAKLSAgICAxODksIDIzNywgNjQsIDI0MSwgMzUsIDIsIDg3LCA4NiwgNDcsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIDg2LCA0NywgOTYsIAotICAgIDUzLCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCA4NiwgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIAotICAgIDI1MSwgNywgMTU2LCAxMzUsIDIyNywgMTc5LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDIwOSwgMjUsIDIyNywgMTc4LCAyMzcsIAotICAgIDI0NywgODcsIDg2LCA0NywgMjEwLCAyNDUsIDg3LCA4NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjEwLCAyNDQsIDIxMCwgCi0gICAgMTk4LCA4NywgOTYsIDQ3LCA0OSwgMjM5LCAyNDQsIDIwOSwgMjQ4LCA1MCwgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMTIsIAotICAgIDIzOSwgMjQ0LCAyMDksIDI0OCwgMTIxLCAyMzksIDI0NCwgMjA5LCAyNDgsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ0LCAKLSAgICA0MywgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTEsIDE4OCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMDcsIDEyMSwgMjQ1LCAyNDIsIAotICAgIDQ5LCA2MSwgMjQ1LCA5MywgMTU1LCA1MCwgNjEsIDI0NSwgOTMsIDE1NSwgNDksIDYxLCAyMTksIDc2LCA1MCwgNjEsIDIxOSwgCi0gICAgNzYsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDIzMSwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgMjMxLCAKLSAgICA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDQ5LCAyNDgsIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNTAsIAotICAgIDI0OCwgNjUsIDE1NSwgNDksIDUxLCAyNDcsIDIyNywgMywgMjA2LCAyNDYsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwNiwgCi0gICAgMjQ2LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA1MCwgNTEsIAotICAgIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAKLSAgICAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgCi0gICAgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA0OSwgMjUwLCAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA1MCwgMjUwLCAKLSAgICAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA0OSwgMjUwLCAxMjksIDIyNywgMTc5LCAxNTUsIDUwLCAyNTAsIDEyOSwgCi0gICAgMjM3LCAyNDcsIDE1NSwgNTIsIDQ5LCAyNTAsIDEyOSwgMjM3LCAyNDcsIDE1NSwgNTIsIDUwLCAyNTAsIDEyOSwgMjI3LCAKLSAgICAxNzksIDE1NSwgNDksIDYyLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAotICAgIDI0MiwgODMsIDI0MCwgNDAsIDgwLCAyMDIsIDMwLCAyMjcsIDExNCwgMjI1LCAxNywgMjUwLCAyMTgsIDIyMCwgMSwgMjI3LCAKLSAgICAyMjIsIDUwLCAyNTAsIDIxOCwgMjA2LCA2OSwgMywgMjExLCAxNzcsIDIyNSwgMTcsIDUwLCAyNTAsIDIxOCwgMywgMjQzLCAKLSAgICA4NSwgMjUwLCAyMTgsIDMsIDIxNSwgOTQsIDIzMSwgNiwgMjUxLCAxMjYsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTgsIAotICAgIDIyMCwgMSwgMjI3LCAyMjIsIDIxMSwgMjA4LCAyNTAsIDIxOCwgMjIwLCAxLCAyMDYsIDIyNCwgMjA3LCAxNzQsIDI1MCwgCi0gICAgMjE3LCAyMTYsIDczLCAyNTAsIDIxNywgMjUwLCAyMTgsIDMsIDIwNiwgMjQ2LCAyMTYsIDczLCAyNTAsIDIxOCwgMywgMjA2LCAKLSAgICAyNDYsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMjAsIDg5LCAyNTAsIDIxOCwgMjIwLCAxLCAyNDIsIAotICAgIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIAotICAgIDExMiwgMjUsIDIxNiwgMTYsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCAKLSAgICA1MywgMjE4LCA1OSwgMTEyLCAyNSwgMjI3LCAyMjIsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIAotICAgIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgMTIxLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgCi0gICAgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAKLSAgICAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA1MCwgMjUsIDIwNiwgMjI0LCAKLSAgICAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAKLSAgICAyNSwgMjA2LCAyMjQsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgCi0gICAgMjE4LCA1OSwgNTAsIDI1LCAyNDIsIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgCi0gICAgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAyNSwgMjQyLCA3MCwgMjE2LCA3MywgMjQxLCA5NCwgMjEzLCAxMTcsIDI0MSwgCi0gICAgOTQsIDIxMywgMTE4LCAzLCAyMTksIDIwMywgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDUsIDI0NiwgNjIsIDU1LCAyNDEsIDk0LCAKLSAgICAyMTMsIDExOCwgMywgNTAsIDUzLCA1NSwgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDQ5LCA1MywgNTUsIDI0NiwgNjIsIDMsIAotICAgIDIzNiwgMTA2LCAxNDIsIDQzLCA4MCwgMTQyLCA0MywgMjE5LCA4MSwgNDMsIDIxNiwgNzQsIDIxMiwgMCwgNDMsIDIxOCwgCi0gICAgMjMzLCAyNDYsIDYyLCAyNDMsIDE0MiwgMjQ3LCAxMzcsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMjUsIDIwOCwgMTQ1LCAxNjIsIAotICAgIDI0MywgMTQyLCAyNDcsIDEzNywgODAsIDE0MiwgMjQ2LCA2MiwgMywgMjEwLCAyMDAsIDIwMywgMTk2LCA0MywgMjUwLCAKLSAgICAxOTIsIDI0MywgMTM3LCA1NCwgMTEyLCA1MywgMjA5LCAyNSwgMjQ2LCA2MSwgNDMsIDYxLCAyNDcsIDE3NywgNDMsIDI0NywgCi0gICAgMTc3LCA0MywgMjI3LCAxNzgsIDQzLCAyMzcsIDI0NiwgMjQ2LCA2MiwgMywgNSwgMjQ2LCA2MiwgMjA4LCAxNzMsIDIwOSwgCi0gICAgOTMsIDIxNiwgMTYsIDI0NiwgNjIsIDMsIDEyMCwgMjM2LCAxMDYsIDIxMSwgMjAsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIAotICAgIDE2LCAxMDMsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjEyLCA1NywgMTAzLCAyNDAsIDg0LCAyNDMsIDIyOCwgMjEyLCA1NywgCi0gICAgMTAzLCAyNTAsIDU5LCAxMDMsIDUsIDI0NiwgNjEsIDEwMywgMjExLCAxNzcsIDEyMCwgMjMwLCA5OCwgMjExLCAxNzUsIAotICAgIDIwOCwgODYsIDMsIDcwLCA1NSwgMjA4LCA4NiwgMywgMjA2LCAyNDYsIDIxNSwgOTQsIDIzMSwgNTAsIDIwOCwgODUsIDIwOCwgCi0gICAgODYsIDMsIDIxMywgMTI0LCAyNTAsIDUwLCAyNDcsIDI0NywgNTAsIDIwOCwgODYsIDg3LCA0OSwgMjA4LCA4NSwgNDksIAotICAgIDIwOCwgODYsIDI0OCwgMTEwLCA4MCwgMTQyLCA4MCwgMjQ4LCAyMzEsIDI0OCwgMTEwLCA1MCwgMjA4LCA4NSwgMjQ3LCAKLSAgICAyMzUsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0NywgMjM1LCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MiwgMjQ3LCAyMzQsIAotICAgIDIzLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMywgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjEsIDIzNiwgNDAsIDYyLCAyMzYsIAotICAgIDQwLCA0OSwgMjA0LCAyMSwgMjQwLCA0MCwgNTAsIDIwNCwgMjEsIDI0MCwgNDAsIDQ5LCA1MiwgMjA0LCAyMSwgMjQwLCA0MCwgCi0gICAgNTAsIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAyMzEsIDQyLCAyMzEsIDI3LCAyMDgsIDI1MSwgMTE1LCAyMzEsIDI3LCAyMzEsIAotICAgIDI4LCAyMjIsIDIzNCwgMywgODAsIDE0MiwgMjQyLCA3NywgMjIzLCAyMjgsIDUxLCAzLCAyNDUsIDE4NywgMjE5LCAyMDgsIAotICAgIDIzMSwgMzksIDI1MCwgODEsIDIxMiwgMTkzLCAyMTcsIDIyNCwgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODEsIAotICAgIDI0MSwgMzUsIDIsIDI1LCAyMTIsIDU5LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgNTUsIDIzNSwgMTU0LCAyMDgsIDE3MywgCi0gICAgMjUsIDIxMiwgNTksIDIxOSwgODEsIDIzOCwgNDgsIDIxMSwgOTMsIDIwOSwgODEsIDI0MiwgNjksIDIwOCwgODYsIDMsIDQ5LCAKLSAgICAxNjIsIDI0OCwgNDMsIDI0MiwgNjksIDIwOCwgODYsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDMsIDIyMiwgMywgCi0gICAgMTIxLCA0NywgNjIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgMTIxLCA0NywgNjIsIDI0NiwgNjIsIDMsIDEyMSwgNDcsIAotICAgIDI0MSwgMjAsIDYxLCAyMTEsIDE3NywgMjQxLCAyMCwgNjIsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MSwgMjQzLCAyMjEsIDI0MSwgCi0gICAgMjAsIDYyLCAyNDMsIDIyMSwgMjQxLCAyMCwgNjEsIDI0NiwgNjEsIDI0MSwgMjAsIDYyLCAyNDYsIDYxLCAyMTUsIDEzNCwgCi0gICAgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDI1NCwgMjEyLCAxLCAzLCAyMTksIDIwMywgMjE2LCA3NCwgMjEyLCAxLCAzLCAyMzYsIAotICAgIDEwNiwgOTUsIDI0OCwgNzMsIDIxMiwgMCwgMjQ4LCA3MywgMjE2LCA3NCwgMjEyLCAwLCA1MiwgMjE4LCA3NiwgMjA4LCA3MCwgCi0gICAgMjE4LCA3NiwgMjI3LCAyMTcsIDI0NSwgODYsIDI1MCwgMjE4LCAxNTUsIDIxNiwgMTEsIDI0NSwgODYsIDI1MCwgMjE4LCAKLSAgICAxNTUsIDIwOCwgMjEyLCAyMjQsIDEwMCwgMjIzLCAxNjIsIDQzLCA3MCwgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgOTEsIAotICAgIDIxOSwgMjU0LCAyMjMsIDE2MiwgNDMsIDIzLCAyMTksIDI1NCwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgCi0gICAgMjQzLCA4NSwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgMjE4LCA3NiwgMjIzLCAxNjIsIDUxLCAyMzAsIAotICAgIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCA1MSwgMjA2LCAyMzgsIDIxOSwgMjU0LCAxMjAsIDIyNywgMzcsIDI1LCAyMTksIAotICAgIDI1NCwgMTIwLCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCAyMywgMjE5LCAyNTQsIDIyNCwgNTgsIAotICAgIDEyMCwgMjEwLCAyMjAsIDIxMCwgMjE4LCAzLCAyMzEsIDIsIDIxNywgNTgsIDIzMSwgMywgMjE5LCAyNTQsIDIzOSwgMjUyLCAKLSAgICAyMTksIDcxLCAyMzEsIDIsIDIzMSwgMywgMywgNTIsIDk1LCAyMzEsIDMsIDI1MCwgMTUsIDMsIDIxMiwgNTcsIDI0NiwgNTQsIAotICAgIDIzOSwgOTksIDI1MCwgMTk0LCAyMzEsIDAsIDIyNywgMTE1LCAyMzEsIDEsIDMsIDIxNiwgMTQyLCAyMTksIDUyLCAyNTAsIAotICAgIDEwNCwgMjE4LCA1MywgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjEzLCAxNDUsIDIxOSwgNTIsIDI1MCwgMTA0LCAyMTgsIDUzLCAKLSAgICAyMjcsIDExNSwgMjMxLCAxLCAyMjEsIDE2NiwgMjMxLCA0NCwgMjA5LCA5MywgMjE4LCA1MywgMjMxLCAzLCAyNTAsIDEwNCwgCi0gICAgMzQsIDIxOCwgNjMsIDIxOSwgMjU0LCAyMTcsIDUyLCAyMzEsIDMsIDIxOSwgMjU0LCAyMzEsIDMsIDMsIDk2LCA1MywgMywgCi0gICAgMTEzLCAyMzEsIDMsIDMsIDIzLCA1NCwgMjMxLCAzLCAzLCAyMzAsIDI0NCwgMjMxLCAzLCAzLCAyMDYsIDIzNywgMjMxLCAzLCAKLSAgICAzLCAyMTksIDIwMywgMjMxLCAzLCAzLCAyMDYsIDI0NiwgMjMwLCA5OSwgMjI4LCA4LCA0OSwgMjA4LCA4NiwgMjE5LCAyNTQsIAotICAgIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIDI0NSwgMjIzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAKLSAgICAyMTgsIDExNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjE3LCAyMTksIDkxLCAyLCAzLCA1LCAyNDYsIDYyLCAKLSAgICA1NSwgOTEsIDIsIDMsIDI0NiwgNTMsIDI1MSwgMTM5LCA1NSwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NSwgOTEsIDIsIDMsIAotICAgIDcwLCA1NiwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NiwgOTEsIDIsIDMsIDIxMCwgMjQ2LCAxMDgsIDkxLCAyLCAzLCA2MiwgCi0gICAgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDMsIDI0NSwgMjM0LCA1NSwgMjI0LCAxMDMsIDIsIDMsIDcwLCA1NiwgMjI0LCAxMDMsIAotICAgIDIsIDMsIDI0MCwgODQsIDI0MywgODMsIDIyNCwgMTAzLCAyLCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgOTEsIDIsIDIzMSwgCi0gICAgNTAsIDQ5LCAxNjIsIDI0NiwgNjEsIDkxLCAyLCAyMzEsIDUwLCA1MCwgMTYyLCAyNDYsIDYxLCAyMDYsIDU0LCAyMTksIAotICAgIDI0NSwgMjQ1LCAxMzEsIDIxNywgMjI0LCAyMjMsIDIyNCwgMiwgMywgNzAsIDU1LCAyMjMsIDIyNCwgMiwgMywgMjA2LCAKLSAgICAyNDYsIDIxMywgMTQyLCAyMTcsIDIyNSwgMywgMjQ3LCAyNDgsIDI0NiwgMTUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjMsIAotICAgIDIyNCwgMiwgMjMxLCA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgCi0gICAgNjEsIDQzLCAyMjMsIDIyNCwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCA1MiwgMjQ2LCAKLSAgICA2MSwgNDMsIDI0MywgMTM3LCA1NCwgOTEsIDIsIDIzMSwgNTAsIDIwOCwgODUsIDIyNCwgMTAzLCAyLCAyMzEsIDUwLCAyMDgsIAotICAgIDg1LCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjMwLCAyNTMsIDIxNywgMjI0LCAyMTYsIDYsIDIzMCwgMjUzLCAKLSAgICAyMTcsIDIyNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDExNiwgMjQ1LCAyMjMsIDI1MCwgMjQ1LCAyMTksIDI0NSwgCi0gICAgMjQ1LCAxNzEsIDIzMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMDYsIDIzOCwgMywgMjI0LCAxMDMsIDU0LCAyMDYsIDIzOCwgMywgCi0gICAgMjE5LCAyMDMsIDIzMCwgMjQ1LCAzLCAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIyNywgMzcsIDI1MCwgMjI2LCAyMDYsIAotICAgIDIzOCwgMywgMjI3LCAzNywgMjE5LCAyNDQsIDIwNiwgMjM4LCA4NywgMjMwLCAyNDQsIDIzMCwgMjQ1LCA4NywgMjA2LCAKLSAgICAyMzcsIDIwNiwgMjM4LCA4NywgMjQ4LCAyMzEsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyNDgsIDIzMSwgODcsIAotICAgIDIwNiwgMjM3LCAyMDYsIDIzOCwgMjQ4LCAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMDYsIDIzNywgMjMwLCAyNDUsIDI0OCwgCi0gICAgMTEwLCAyNSwgMjMwLCA5OCwgMywgMjMwLCAyNDQsIDI0NiwgMTYsIDIwNiwgMjM4LCAzLCAyMTMsIDEyMywgMjQ2LCAxNiwgCi0gICAgMjMwLCAyNDUsIDMsIDIxMywgMTIzLCA1MiwgNTEsIDIzMCwgMjQ0LCA1MiwgNTEsIDIwNiwgMjM3LCAyNDYsIDE2LCAyMDYsIAotICAgIDIzOCwgMywgMjEzLCAxMjQsIDI1LCAyMTIsIDM0LCAyMTcsIDIyNCwgMjI3LCAzNywgMjUsIDMsIDcwLCA1NSwgMjI3LCAzNywgCi0gICAgMjE5LCAyNDUsIDMsIDcwLCA1NSwgNTIsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjI3LCAzNywgMjE5LCAyNDQsIDEyMCwgCi0gICAgMjMwLCAyNDYsIDIyNywgMzcsIDI1MCwgMjI2LCAxMjAsIDIzMCwgMjQ2LCAyMjcsIDM3LCAyMTksIDI0NCwgMjEyLCA0MywgCi0gICAgMjI4LCA4LCAyMTksIDI0NCwgMjEyLCA0MywgMjI4LCA4LCAyNTAsIDIyNiwgMjI3LCAzNywgMjE5LCAyNDUsIDIxOSwgMjAwLCAKLSAgICAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAzNywgMjUsIDMsIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAotICAgIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjUsIDMsIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAotICAgIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjUsIDMsIDIwNiwgCi0gICAgMjQ2LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIwNiwgMjQ2LCA1LCAyMDYsIDUxLCAzLCAyMDYsIDI0NiwgMjI3LCAzNywgMjE5LCAKLSAgICAyNDUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIDUyLCAyMDYsIDI0NiwgMjAyLCAxNjAsIDIyMSwgCi0gICAgMTY0LCAyNDMsIDk0LCAyNTAsIDE4NCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDE3OSwgMjUwLCAxODQsIDI0MSwgMzUsIAotICAgIDIsIDMsIDcwLCA1NiwgMjM1LCAxNTQsIDMsIDcwLCA1NSwgMjA4LCA3MCwgMjM2LCAxMDYsIDI0OCwgMjMxLCAzLCA1MiwgCi0gICAgODAsIDk1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDIwOCwgNzAsIDgwLCA5NSwgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU1LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAyMTksIDI1NSwgMywgMjE1LCAyNDUsIDI0MywgODMsIDIxMiwgMTI5LCAyMjQsIAotICAgIDEwMywgMjEyLCAxMjgsIDI0NSwgMjEwLCAzLCA3MCwgNTUsIDI0MSwgMzUsIDMsIDI1MCwgNTksIDI1MSwgNywgMTU2LCAKLSAgICAyMDgsIDE3MywgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDI1MCwgMTUxLCAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAKLSAgICAzNSwgMiwgODcsIDkxLCA1NCwgOTEsIDIsIDg3LCAyNDEsIDM1LCA1NCwgMjQxLCAzNSwgMiwgODcsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NCwgNTIsIDI0NSwgMjQzLCAyNDEsIDM2LCAxMjAsIDI0NSwgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMTI2LCAyNDUsIAotICAgIDIwMywgMjQxLCAzNSwgMjEyLCAxNDMsIDI0MSwgMzUsIDIsIDMsIDEyMCwgMTg3LCA4NywgMjUsIDEyMCwgMTg3LCA1NiwgCi0gICAgMjQxLCAzMCwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDIyNywgMTc5LCAzLCAyNDYsIDYyLCAyMzEsIDYsIDIzNywgMjQ3LCAzLCAKLSAgICAyNDYsIDYyLCAyMzEsIDYsIDIyNywgMTc5LCAzLCAyMTcsIDQ3LCAxMzEsIDU1LCAyMzcsIDI0NywgMywgMjE3LCA0NywgCi0gICAgMTMxLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIAotICAgIDU5LCAxNTYsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgMjMxLCA2LCAKLSAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIDIyNywgMTc5LCAyMTksIAotICAgIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgCi0gICAgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgCi0gICAgODcsIDIxNiwgMTYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDg3LCAyMjcsIAotICAgIDIyMiwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjI3LCAKLSAgICAxNzksIDI1LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgCi0gICAgMTU2LCAxMzUsIDIyNywgMTc5LCAyNSwgMjIxLCAxNjYsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjUsIDIyMSwgMTY2LCAyNTAsIAotICAgIDE1MiwgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAxNTYsIDg3LCAyMzcsIDI0NiwgMjM3LCAyNDcsIDg3LCAyNDIsIDc2LCAKLSAgICAxNTYsIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIzNywgMjQ3LCAKLSAgICA4NywgMjEyLCAxMjksIDIxOSwgMjQ1LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDYsIAotICAgIDIzNywgMjQ3LCA4NywgMjEyLCAxMjksIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMzcsIDI0NywgODcsIDI0MiwgCi0gICAgNzYsIDI0MSwgMzYsIDIzNywgMjQ3LCA4NywgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIAotICAgIDIxMiwgNTksIDE1NiwgODcsIDIzNywgMjQ3LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAKLSAgICAxNTYsIDg3LCAyMjcsIDE3OSwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCi0gICAgMjQ1LCAyMjcsIDE3OCwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIDU5LCAxNTYsIAotICAgIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzksIDMsIDcwLCAyMzEsIDYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCi0gICAgMjQ1LCAyMzcsIDI0NywgMywgNzAsIDIzMSwgNiwgMjQyLCA3NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAKLSAgICAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDI0MiwgNzYsIDIxMiwgNTksIDE1NiwgMjA4LCAKLSAgICAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgCi0gICAgMjQ2LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIyNywgMTc4LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIAotICAgIDEyOSwgODcsIDIyNywgMTc5LCA4NywgMjQxLCAzNSwgNTQsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDcsIDg3LCAyNDEsIDM1LCAKLSAgICA1NCwgNTIsIDIyMiwgMjIxLCAyMjcsIDE3OCwgNTIsIDIyMiwgMjIxLCAyMzcsIDI0NiwgNTIsIDIyMiwgMjIxLCAyMjcsIAotICAgIDE3OSwgMywgMjA2LCAyNDYsIDIzNywgMjQ3LCAyMTksIDIwMCwgMjI3LCAxNzgsIDIzNywgMjQ3LCAyNDgsIDExMCwgMjI3LCAKLSAgICAxNzgsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4NywgMjM3LCAyNDcsIDI0NiwgMTYsIDI0NywgMTM3LCAKLSAgICAyNDUsIDg3LCAyMjcsIDE3OSwgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIAotICAgIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMTIsIDM1LCAyMDksIDk3LCAKLSAgICAyMjgsIDYsIDIwOSwgOTcsIDIxMiwgMzUsIDIwOSwgOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjI4LCA2LCAyMDksIDk4LCAKLSAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MSwgMzUsIDIsIDMsIDI0NywgMTcwLCA1NSwgMjE3LCAyNTAsIDg3LCAyMTIsIDExOCwgCi0gICAgMjQxLCAzNSwgNTQsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjE3LCAyNTAsIAotICAgIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyNDEsIDM1LCA1NCwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMTU2LCAKLSAgICAxMzUsIDIxMCwgMjM3LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDI1MSwgNywgMTU2LCAxMzUsIAotICAgIDIxMCwgMjM3LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgCi0gICAgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgNTIsIDIxNywgMjQ5LCA1MiwgMjEwLCAyMzYsIAotICAgIDIxMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMTAsIDE5OCwgMywgMjQzLCA4NSwgMjEwLCAyNDUsIDMsIDkxLCAyLCA1NiwgMjEwLCAKLSAgICAxOTgsIDMsIDkxLCAyLCA1NiwgMjEwLCAyNDUsIDMsIDIyMywgMjI0LCAyLCA1NiwgMjEwLCAxOTgsIDMsIDIyMywgMjI0LCAKLSAgICAyLCA1NiwgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMTAsIDE5OCwgNzYsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMjQ1LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIAotICAgIDE5OCwgNzYsIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMjQ1LCA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMjQ1LCA3NiwgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCA1MSwgNDksIDE3MSwgOTgsIDIxOSwgMjU0LCA1MSwgNTAsIDE3MSwgOTgsIAotICAgIDIxOSwgMjU0LCAyNDYsIDE2LCAyMTAsIDI0NCwgMjQ2LCAxNiwgMjEwLCAxOTcsIDI0NiwgMTYsIDIxMCwgMjQ1LCAyMTksIAotICAgIDI0NSwgMTU2LCAxMzUsIDI0NiwgMTYsIDIxMCwgMTk4LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMjQ1LCA4NywgMjEwLCAKLSAgICAxOTcsIDIxMCwgMTk4LCA4NywgMjEwLCAyNDQsIDIxMCwgMjQ1LCA4NywgMjEwLCAyNDQsIDIxMCwgMTk4LCA4NywgMjEwLCAKLSAgICAxOTcsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjEwLCAyNDQsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDI0NywgCi0gICAgMTM3LCAyNDQsIDE0NSwgMywgMjEwLCAyNDQsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyNDIsIDY4LCAyMTgsIDEwNCwgMywgCi0gICAgMjA5LCAxNzcsIDIwOCwgMTQ0LCAyMDgsIDEwMiwgMjMwLCAyNDQsIDIzOSwgMTYwLCAyMjEsIDE4MSwgMjEyLCAyMjgsIDQ5LCAKLSAgICAyMTAsIDMsIDIxMiwgMjI4LCAxMjEsIDIxMCwgMywgMjEyLCAyMjgsIDExMiwgMjEwLCAzLCAyMTgsIDIzNCwgMywgMTk0LCAKLSAgICA4MCwgMjQ4LCAyMzEsIDIwOCwgNzAsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNDksIDIwNywgMTczLCA4MCwgCi0gICAgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDE2MywgMjQ0LCAKLSAgICAxNDUsIDIzOSwgMTIwLCA0OSwgMjI0LCAyNDUsIDc2LCA1MiwgMjA2LCAzOCwgMjEyLCAyMjgsIDEyMSwgMjEwLCA0LCAzLCAKLSAgICAyMTksIDIwMywgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCAzLCAyMDYsIDI0NiwgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCA4NywgCi0gICAgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCA1MiwgMTIxLCAyMTAsIDMsIDUyLCAxMTIsIDIxMCwgMywgNTIsIDIxMSwgMzIsIAotICAgIDIyMSwgMTY2LCA1NCwgMjE2LCA3MywgNTIsIDIxMSwgMzIsIDIyMSwgMTY2LCA1NCwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyNDMsIDE0NCwgMywgMjE2LCA3MywgMjIyLCAyMzMsIDIxMiwgNTcsIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTUsIAotICAgIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTYsIDEyMSwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NiwgMjE5LCA4MiwgMywgCi0gICAgMjM2LCAxMDYsIDk1LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ4LCAKLSAgICA2NywgMjE2LCAxMTcsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDk1LCAyMDgsIDcwLCAyNDUsIDI0MywgCi0gICAgMjE5LCAyNTQsIDIwOCwgNzAsIDIyMiwgMjIxLCAyMjcsIDE3OCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIzNywgMjQ2LCAyNDIsIAotICAgIDc2LCAyMTIsIDU5LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDIsIDc2LCAyMTIsIDU5LCAyMzcsIDI0NywgCi0gICAgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMDgsIDcwLCAyMTIsIDEsIDI0OCwgNjcsIDIxNiwgMTE3LCAyMjgsIDgsIDIwOCwgNzAsIAotICAgIDgwLCAyNDgsIDIzMSwgMjE5LCAyNTQsIDUyLCAyMTIsIDEsIDIxOSwgMjU0LCA2MSwgODAsIDE0MiwgMjIzLCAxNjIsIDYxLCAKLSAgICA4MCwgMTQyLCAxNTMsIDI0MSwgMTc2LCA2MSwgNDcsIDE1MywgMjA0LCA0NiwgNjEsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDYxLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYxLCA0NywgNDksIDUwLCA2MSwgNDcsIDk2LCA2MiwgNDcsIDE3NywgNjIsIAotICAgIDQ3LCAxODMsIDYyLCA0NywgMTUzLCAyNDEsIDE3NiwgNjIsIDQ3LCAxNTMsIDIwNCwgNDYsIDYyLCA0NywgMjExLCAyMzgsIAotICAgIDI0MSwgMTc2LCA2MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA2MiwgNDcsIDQ5LCA1MCwgNjIsIDQ3LCAxMTIsIDEyMSwgCi0gICAgNjIsIDQ3LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgOTYsIAotICAgIDUzLCAzLCAyMDgsIDIxMSwgMjQyLCA2OCwgOTYsIDUzLCAzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDUxLCAzLCAyMDgsIDE0NSwgCi0gICAgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIwNiwgMjIxLCA1MCwgMjQzLCAKLSAgICAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIAotICAgIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjA4LCAKLSAgICAxNDUsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDI0NywgMjQ4LCAxNjIsIDI0OCwgNDMsIDI0MiwgODMsIDIxMSwgCi0gICAgMTc3LCA2MiwgMjI4LCA4LCAyMTEsIDE3NywgNjEsIDIyOCwgOCwgMjExLCAxNzcsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKLSAgICAxNzcsIDYxLCAyMDUsIDI0MiwgNSwgMjExLCAxNzcsIDYyLCAyMTgsIDI1NSwgNjEsIDIxOCwgMjU1LCA2MSwgMjM3LCAxNywgCi0gICAgNjIsIDIzNywgMTcsIDIzNiwgMTA2LCA2MiwgMjM3LCAxNywgNjIsIDIyOCwgOCwgMjQ2LCA2MSwgNjIsIDIyNSwgMTAsIAotICAgIDI0MywgMjIxLCA2MSwgMjI1LCAxMCwgMjQzLCAyMjEsIDYyLCAyMjUsIDEwLCAyMjYsIDI0NiwgNjEsIDIyNSwgMTAsIDIyNiwgCi0gICAgMjQ2LCA2MiwgNSwgMjQzLCAyMjEsIDYyLCA1LCAyMjYsIDI0NiwgNjEsIDUsIDIyNiwgMjQ2LCA2MiwgMjM2LCAxMDYsIAotICAgIDI0MSwgMTA5LCA2MSwgMjM2LCAxMDYsIDI0MSwgMTA5LCA2MiwgODAsIDI0MSwgMTA5LCA2MSwgODAsIDI0MSwgMTA5LCA0OSwgCi0gICAgNTMsIDMsIDUsIDI0NiwgNjEsIDEyNiwgOTYsIDI1MCwgOTEsIDQ5LCA1MywgMywgNDMsIDIxOCwgNzYsIDE2MywgOTYsIAotICAgIDIxMSwgMTcxLCA0NywgOTYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIAotICAgIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgMTQyLCA5NiwgMjA3LCAxMzQsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgCi0gICAgOTYsIDUzLCAzLCAyNDIsIDgzLCAyMTEsIDc3LCA5NiwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCA1MywgMywgCi0gICAgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ4LCA5NiwgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIAotICAgIDUzLCAyMDksIDI1LCAyMDMsIDE5NiwgMjA0LCA3NiwgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMjcsIDIyMiwgMjQxLCAzNSwgCi0gICAgMiwgODcsIDk2LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyMTYsIAotICAgIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCA4NiwgNTMsIDIwOSwgMjUsIDIzNywgMjQ2LCA4NiwgNTMsIDIwOSwgMjUsIDIxMCwgCi0gICAgMTk3LCA5NiwgMjE3LCA1OCwgNDcsIDg2LCAyMTcsIDU4LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgCi0gICAgODYsIDQ3LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKLSAgICA5NiwgNDcsIDk2LCA1MywgODcsIDI1MSwgNywgMTU2LCAxMzUsIDk2LCA1MywgODcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NCwgODYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU0LCAxODMsIDIwOCwgODQsIDIwMiwgMzAsIDQ3LCAKLSAgICAyMTIsIDIyOCwgMjEyLCA1OSwgMTUzLCA0NywgMjEyLCAyMjgsIDI0OSwgMjIsIDIxMSwgMjM4LCA0NywgNjEsIDIyNSwgMTAsIAotICAgIDIxMSwgOTQsIDYyLCA1LCAyMTEsIDk0LCA2MSwgNSwgMjExLCA5NCwgNjIsIDIxNiwgMTEsIDIxOCwgMjU1LCA2MSwgMjE2LCAKLSAgICAxMSwgMjE4LCAyNTUsIDc5LCAyMjgsIDgsIDI0NiwgNjEsIDc5LCAyMTksIDIwNSwgMywgMjE5LCAyMDUsIDIzMSwgNiwgNzksIAotICAgIDI0NiwgNjIsIDMsIDI0NiwgNjIsIDIzMSwgNiwgNzksIDI0NiwgNjEsIDc5LCA0MywgMjE0LCAyNTQsIDIxMiwgNTksIDE1MywgCi0gICAgNTMsIDMsIDIzNiwgMTE1LCAyMzcsIDY0LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgMTE1LCAyMDksIDI0OCwgCi0gICAgMjEyLCA1OSwgMTUzLCA1MywgMywgMjM2LCAxMDYsIDIwOSwgMjQ4LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgCi0gICAgMTA2LCAyMDksIDI0OCwgMjQ4LCAxMTgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDE1MywgMjQxLCAxNzUsIDIxMiwgCi0gICAgMjI4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgOTYsIDIwOCwgODQsIDQ3LCAKLSAgICAxNzcsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNDcsIDQ5LCA1MCwgMjA4LCA4NCwgNDcsIAotICAgIDExMiwgMTIxLCAyMDgsIDg0LCA0NywgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgMTUzLCAyNDEsIDE3NiwgMjA4LCA4NCwgCi0gICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgOTYsIAotICAgIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgMTc3LCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDg2LCAyMDgsIDg0LCAyNDQsIDE0MywgCi0gICAgNDcsIDE4MywgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAyNDYsIDE4LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNTAsIAotICAgIDE5NCwgMjA4LCA4NCwgMTcxLCAyNDYsIDYyLCA0NywgOTYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIwOCwgCi0gICAgODQsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE4MywgMjA4LCA4NCwgNTMsIAotICAgIDIwOCwgMTczLCAxNDIsIDE1MywgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE1MywgMjQxLCAxNzYsIAotICAgIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgCi0gICAgMTQyLCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDk2LCAyMDgsIDg0LCA1MywgMywgCi0gICAgNTIsIDIzNiwgMTA2LCA5NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgNTIsIDIzNiwgMTA2LCA5NSwgODYsIDIwOCwgODQsIDUzLCAKLSAgICAzLCA1MiwgMjM2LCAxMDYsIDk1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCAyMzYsIDEwNiwgCi0gICAgMjEwLCAxMSwgMjI5LCAxNTEsIDgwLCAyMTAsIDExLCAyMjksIDE1MSwgOTYsIDIwOCwgODQsIDUzLCAxMTUsIDg2LCAyMDgsIAotICAgIDg0LCA0NywgMTc3LCAyMDgsIDg0LCA1MywgOTYsIDc2LCAxODMsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNTMsIDExNSwgCi0gICAgOTYsIDIwOCwgODQsIDQ3LCAxODMsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE3NywgMjA4LCA4NCwgNDcsIDk2LCAyMDgsIDg0LCAKLSAgICAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMDgsIDg0LCAyMTksIDE0NiwgMjUwLCA5MSwgODYsIDIwOCwgODQsIDIxOSwgCi0gICAgMTQ2LCAyNTAsIDkxLCAxODMsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgNjIsIDQzLCA2MSwgNDcsIDE3NywgCi0gICAgNjIsIDQzLCA2MSwgNDcsIDg2LCA2MiwgNDMsIDYxLCA0NywgMTgzLCA2MiwgNDMsIDYxLCA0NywgMjUwLCAxOTQsIDIwOCwgCi0gICAgODQsIDUwLCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDI0NywgMjQ4LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIAotICAgIDIwOCwgODQsIDQ5LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDIwOCwgMTQ1LCAyMDcsIDkyLCA0NywgMjE2LCAKLSAgICA3OCwgMjI3LCAyMjIsIDIxNiwgNzgsIDIxNiwgMTYsIDIyMiwgMjEyLCAyMjcsIDIyMiwgMjIyLCAyMTIsIDIxNiwgMTYsIAotICAgIDIzOSwgMTQ3LCAyNDUsIDE2NiwgMjUwLCA5MiwgMjQ2LCA1NywgMjUwLCAxOTMsIDg2LCA2MiwgNDcsIDIwOSwgMzEsIDIwOCwgCi0gICAgMTQzLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjE2LCAxMiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIAotICAgIDMxLCAyMDgsIDE0MywgODYsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgMzEsIDIyNywgMjE4LCAxODMsIDI0MSwgMzEsIDI1MCwgCi0gICAgOTQsIDYyLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDE3NywgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDg2LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA2MiwgMTgzLCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAKLSAgICAyMjcsIDIxMiwgMTgzLCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAxNzcsIDIwOCwgODQsIDUzLCAKLSAgICAzLCAxNjMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTc3LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAKLSAgICA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIwNiwgMjEyLCA4NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgCi0gICAgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCAyMDgsIAotICAgIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDk2LCA0NywgNjIsIDI0NSwgCi0gICAgODYsIDE4MywgMjUsIDg2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIDk2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIAotICAgIDg2LCA0NywgNjIsIDI0NSwgODYsIDk2LCAyNSwgMTc3LCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTc3LCA0NywgNjIsIAotICAgIDI0NSwgODYsIDk2LCAyNSwgMTgzLCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTgzLCA0NywgMjE2LCA1NSwgNTMsIDEyMSwgCi0gICAgMjI3LCAyMjIsIDIxNiwgNTUsIDUzLCAxMjEsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCAxMTIsIDIyNywgMjIyLCAyMTYsIDU1LCAKLSAgICA1MywgMTEyLCAyMTYsIDE2LCAyMTYsIDU1LCA1MywgNDksIDIwNiwgMjI0LCAyMTYsIDU1LCA1MywgNTAsIDIwNiwgMjI0LCAKLSAgICAyMTYsIDU1LCA1MywgNDksIDI0MiwgNzAsIDIxNiwgNTUsIDUzLCA1MCwgMjQyLCA3MCwgMTc3LCA2MSwgNTMsIDIzOSwgCi0gICAgMTIwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDE0MiwgMTEyLCAyNTAsIDk1LCAyMzEsIDUwLCAzNCwgMjE2LCAxNDQsIAotICAgIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDE1NywgMjAzLCAxOTYsIDQzLCAyMDMsIDE5NiwgNDMsIDI2LCAyMDMsIDE5NiwgCi0gICAgNjIsIDUxLCAyNDYsIDIxNSwgNjIsIDI0MywgMjIyLCAyNDYsIDIxNSwgMjA3LCAxNzQsIDYyLCAyMTgsIDI1NSwgMjM2LCAKLSAgICAxMDYsIDYyLCAyMjAsIDgxLCA2MiwgMjIwLCA4MSwgNjIsIDIyNSwgMTAsIDIwNiwgMjIzLCAyMDgsIDg2LCAyNDYsIDIxNSwgCi0gICAgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODYsIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjI3LCAyMTcsIDIwOCwgODYsIAotICAgIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDIwOCwgMTQ1LCAxNjIsIDYyLCAKLSAgICAyNDYsIDYxLCAyNDcsIDI0OCwgMTYyLCA2MiwgMjQ2LCA2MSwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDI0NSwgODIsIAotICAgIDIxNSwgMTk4LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAKLSAgICAyNDUsIDgyLCAyMTUsIDE5OCwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyNDUsIDgyLCA1MSwgMjE4LCAzNCwgMjMxLCAzMSwgCi0gICAgMjA2LCAyNTAsIDU0LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxNzcsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA4LCA4NiwgMjUwLCA5MywgODYsIDIwNywgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgzLCAyMDcsIAotICAgIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE4MCwgNiwgMSwgMjUwLCAwLCAxODAsIDYsIDEsIDI0NywgMTgxLCAKLSAgICAxODAsIDYsIDEsIDIwNiwgNTMsIDE4MCwgNiwgMSwgMjM4LCA1MCwgMTgwLCA2LCAxLCAyNDMsIDEwOCwgMTgwLCA2LCAxLCAKLSAgICAyMDMsIDI0LCAxODAsIDYsIDEsIDIwMiwgNjQsIDE4MCwgNiwgMSwgMjQxLCAyNTAsIDE4MCwgNiwgMSwgMjAyLCA4OSwgCi0gICAgMTgwLCA2LCAxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA4MSwgMjMwLCAxODgsIDE4MCwgNiwgMSwgNzUsIDE4MCwgNiwgMSwgCi0gICAgMjQzLCAxMjgsIDE4MCwgNiwgMSwgMjMwLCAxMCwgMTgwLCA2LCAxLCAyMjcsIDc5LCAxODAsIDYsIDEsIDIyMywgMTY3LCAKLSAgICAxODAsIDYsIDEsIDIyMywgNjksIDE4MCwgNiwgMSwgMjIwLCAyMCwgMTgwLCA2LCAxLCAyMTgsIDU2LCAxODAsIDYsIDEsIAotICAgIDIxNSwgMjQ0LCAxODAsIDYsIDEsIDIxMiwgNDEsIDE4MCwgNiwgMSwgMjA3LCAxNjEsIDE4MCwgNiwgMSwgMjA3LCAxMCwgCi0gICAgMTgwLCA2LCAxLCAyMzksIDEyMywgMTgwLCA2LCAxLCAyMzcsIDIzLCAxODAsIDYsIDEsIDIxOSwgMjE3LCAxODAsIDYsIDEsIAotICAgIDIxOSwgMzQsIDE4MCwgNiwgMSwgMjEyLCAyMDIsIDE4MCwgNiwgMSwgMjA3LCAyNTUsIDE4MCwgNiwgMSwgMjQ2LCAxMDQsIAotICAgIDE4MCwgNiwgMSwgMjEzLCA5MCwgMTgwLCA2LCAxLCAyMDMsIDMwLCAxODAsIDYsIDEsIDIwMywgMzIsIDE4MCwgNiwgMSwgCi0gICAgMjAzLCA2NCwgMTgwLCA2LCAxLCAyMTEsIDIwNCwgMTUyLCAxODAsIDYsIDEsIDIwMiwgMjEzLCAxODAsIDYsIDEsIDUsIAotICAgIDIwMiwgMTgzLCAxODAsIDYsIDEsIDUsIDIwMiwgMTg0LCAzLCAyMDksIDI0OCwgMTgwLCA2LCAxLCAyMDIsIDI0NywgMTgwLCAKLSAgICA2LCAxLCAyMzAsIDIyOSwgNSwgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgCi0gICAgMjMwLCAyMjksIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDYsIDEsIDIzOSwgMjM1LCAxODAsIDYsIDEsIDIzMCwgMTg2LCAKLSAgICAxODAsIDYsIDEsIDIxMiwgMjAxLCAxODAsIDYsIDEsIDIwOCwgNjAsIDYzLCAxODAsIDYsIDEsIDIyNywgMjUyLCAyMjMsIAotICAgIDE2NywgMTgwLCA1LCAxLCAyNTAsIDAsIDE4MCwgNSwgMSwgMjQ3LCAxODEsIDE4MCwgNSwgMSwgMjA2LCA1MywgMTgwLCA1LCAKLSAgICAxLCAyMzgsIDUwLCAxODAsIDUsIDEsIDI0MywgMTA4LCAxODAsIDUsIDEsIDIwMywgMjQsIDE4MCwgNSwgMSwgMjAyLCA2NCwgCi0gICAgMTgwLCA1LCAxLCAyNDEsIDI1MCwgMTgwLCA1LCAxLCAyMDIsIDg5LCAxODAsIDUsIDEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIAotICAgIDgxLCAyMzAsIDE4OCwgMTgwLCA1LCAxLCA3NSwgMTgwLCA1LCAxLCAyNDMsIDEyOCwgMTgwLCA1LCAxLCAyMzAsIDEwLCAKLSAgICAxODAsIDUsIDEsIDIyNywgNzksIDE4MCwgNSwgMSwgMjIzLCAxNjcsIDE4MCwgNSwgMSwgMjIzLCA2OSwgMTgwLCA1LCAxLCAKLSAgICAyMjAsIDIwLCAxODAsIDUsIDEsIDIxOCwgNTYsIDE4MCwgNSwgMSwgMjE1LCAyNDQsIDE4MCwgNSwgMSwgMjEyLCA0MSwgCi0gICAgMTgwLCA1LCAxLCAyMDcsIDE2MSwgMTgwLCA1LCAxLCAyMDcsIDEwLCAxODAsIDUsIDEsIDIzOSwgMTIzLCAxODAsIDUsIDEsIAotICAgIDIzNywgMjMsIDE4MCwgNSwgMSwgMjE5LCAyMTcsIDE4MCwgNSwgMSwgMjE5LCAzNCwgMTgwLCA1LCAxLCAyMTIsIDIwMiwgCi0gICAgMTgwLCA1LCAxLCAyMDcsIDI1NSwgMTgwLCA1LCAxLCAyNDYsIDEwNCwgMTgwLCA1LCAxLCAyMTMsIDkwLCAxODAsIDUsIDEsIAotICAgIDIwMywgMzAsIDE4MCwgNSwgMSwgMjAzLCAzMiwgMTgwLCA1LCAxLCAyMDMsIDY0LCAxODAsIDUsIDEsIDIxMSwgMjA0LCAKLSAgICAxNTIsIDE4MCwgNSwgMSwgMjAyLCAyMTMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODQsIAotICAgIDMsIDIwOSwgMjQ4LCAxODAsIDUsIDEsIDIwMiwgMjQ3LCAxODAsIDUsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCAKLSAgICA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAxLCAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNSwgCi0gICAgMSwgMjM5LCAyMzUsIDE4MCwgNSwgMSwgMjMwLCAxODYsIDE4MCwgNSwgMSwgMjEyLCAyMDEsIDE4MCwgNSwgMSwgMjA4LCAKLSAgICA2MCwgNjMsIDE4MCwgNSwgMSwgMjI3LCAyNTIsIDIyMywgMTY3LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxNDIsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NSwgMywgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIDM0LCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjEwLCA3MCwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjM3LCAKLSAgICAxNzIsIDMsIDI0NCwgMjAsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NCwgCi0gICAgMjAsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjUxLCAyLCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgMTEzLCA4LCA2LCAxLCAyMDcsIDE3NCwgNjMsIDgsIDYsIDEsIAotICAgIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA1MCwgMTEzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgCi0gICAgMTEzLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQ1LCA5NSwgOCwgNiwgMSwgCi0gICAgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMjA5LCAyNDYsIDIxOCwgMTkyLCA4LCA1LCAKLSAgICAxLCAxODgsIDMsIDIyMSwgMTYzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAxMjQsIDIxNSwgMjUzLCAyMzEsIDYsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCA3NCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjA2LCAxNjQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgCi0gICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgODQsIDYsIDEsIDI1MSwgMjQsIDg0LCA1LCAxLCAKLSAgICAyNTEsIDI0LCA4NCwgNiwgMSwgMjA1LCAyMjcsIDg0LCA1LCAxLCAyMDUsIDIyNywgODQsIDYsIDEsIDIzOCwgMjM1LCA4NCwgCi0gICAgNSwgMSwgMjM4LCAyMzUsIDg0LCA2LCAxLCAyNDQsIDE4MCwgODQsIDUsIDEsIDI0NCwgMTgwLCA4NCwgNiwgMSwgMjQxLCAKLSAgICAxNDQsIDg0LCA1LCAxLCAyNDEsIDE0NCwgODQsIDYsIDEsIDIxMSwgMjQzLCA4NCwgNSwgMSwgMjExLCAyNDMsIDg0LCA2LCAKLSAgICAxLCAyMDIsIDk5LCA4NCwgNSwgMSwgMjAyLCA5OSwgODQsIDYsIDEsIDIzNywgODAsIDg0LCA1LCAxLCAyMzcsIDgwLCA4NCwgCi0gICAgNiwgMSwgMjA5LCA3MiwgODQsIDUsIDEsIDIwOSwgNzIsIDg0LCA2LCAxLCAyMzUsIDE2OCwgODQsIDUsIDEsIDIzNSwgMTY4LCAKLSAgICA4NCwgNiwgMSwgMjI5LCAyNTIsIDg0LCA1LCAxLCAyMjksIDI1MiwgODQsIDYsIDEsIDIyNywgMjQ4LCA4NCwgNSwgMSwgCi0gICAgMjI3LCAyNDgsIDg0LCA2LCAxLCAyMjQsIDE1NSwgODQsIDUsIDEsIDIyNCwgMTU1LCA4NCwgNiwgMSwgMjIyLCAxMDAsIDg0LCAKLSAgICA1LCAxLCAyMjIsIDEwMCwgODQsIDYsIDEsIDIyOCwgMjI1LCA4NCwgNSwgMSwgMjI4LCAyMjUsIDg0LCA2LCAxLCA3OCwgODQsIAotICAgIDUsIDEsIDc4LCA4NCwgNiwgMSwgMjE4LCAxNjcsIDg0LCA1LCAxLCAyMTgsIDE2NywgODQsIDYsIDEsIDIxNSwgMjI3LCA4NCwgCi0gICAgNSwgMSwgMjE1LCAyMjcsIDg0LCA2LCAxLCAyMTIsIDEzMiwgODQsIDUsIDEsIDIxMiwgMTMyLCA4NCwgNiwgMSwgMjA5LCAKLSAgICAyMDcsIDg0LCA1LCAxLCAyMDksIDIwNywgODQsIDYsIDEsIDIwNywgMzksIDg0LCA1LCAxLCAyMDcsIDM5LCA4NCwgNiwgMSwgCi0gICAgMjQwLCAyNiwgODQsIDUsIDEsIDI0MCwgMjYsIDg0LCA2LCAxLCAyMjksIDEyMiwgODQsIDUsIDEsIDIyOSwgMTIyLCA4NCwgCi0gICAgNiwgMSwgMjE3LCAyMDIsIDg0LCA1LCAxLCAyMTcsIDIwMiwgODQsIDYsIDEsIDIyMCwgMTIsIDg0LCA1LCAxLCAyMjAsIDEyLCAKLSAgICA4NCwgNiwgMSwgMjQzLCAyMjYsIDI1MSwgMzAsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDYsIDEsIDM4LCAKLSAgICA4NCwgMjUxLCA1OSwgODQsIDUsIDEsIDM4LCA4NCwgMjUxLCA1OSwgODQsIDYsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIAotICAgIDUsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjksIDI1MiwgODQsIDUsIDEsIDI0MywgCi0gICAgMjI2LCAyMjksIDI1MiwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyMjIsIAotICAgIDEwMCwgODQsIDYsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDYsIAotICAgIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDUsIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDYsIDEsIDIxNCwgMjQ2LCA4NCwgNSwgCi0gICAgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyNDUsIDEyOCwgMjEzLCAzNSwgODQsIDUsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCAKLSAgICA4NCwgNiwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNiwgMSwgMzgsIDg0LCAKLSAgICAyNDEsIDcsIDg0LCA1LCAxLCAzOCwgODQsIDI0MSwgNywgODQsIDYsIDEsIDI1MSwgNDMsIDIyOSwgMTI3LCA4NCwgNSwgMSwgCi0gICAgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjM2LCAKLSAgICAxMDcsIDg0LCA2LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMzgsIDg0LCAyMzYsIDEwNywgODQsIDYsIDEsIAotICAgIDM4LCA4NCwgMTUyLCA4NCwgNSwgMSwgMzgsIDg0LCAxNTIsIDg0LCA2LCAxLCAyMjgsIDEzMCwgMTUyLCA4NCwgNSwgMSwgCi0gICAgMjI4LCAxMzAsIDE1MiwgODQsIDYsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIAotICAgIDYsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDYsIDEsIDM4LCA4NCwgMjM4LCAKLSAgICAyMzAsIDg0LCA1LCAxLCAzOCwgODQsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDUsIDEsIAotICAgIDM4LCA4NCwgMjQzLCAxMzEsIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgCi0gICAgNiwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMTMsIDEsIDg0LCA2LCAxLCAzOCwgCi0gICAgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA2LCAxLCAzOCwgMjIxLCAKLSAgICA1NCwgMjIwLCAyNDgsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIwLCAyNDgsIDg0LCA2LCAxLCAzOCwgMjIxLCA1NCwgCi0gICAgMjA0LCA3NywgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMDQsIDc3LCA4NCwgMTYsIDIzMCwgMTgsIDg0LCAxNiwgMjI0LCAKLSAgICAxNTYsIDIxNSwgMjI3LCA4NCwgMTYsIDIxOCwgMTY4LCAyMTUsIDIyNywgODQsIDE2LCAyMTEsIDg1LCA4NCwgMTYsIDIwOSwgCi0gICAgMjA4LCAyMTUsIDIyNywgODQsIDE2LCAyMjksIDEyMywgMjE1LCAyMjcsIDg0LCAxNiwgMjEzLCAyLCAyMTIsIDEzMiwgODQsIAotICAgIDYsIDEsIDI0NSwgMTEzLCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA2LCAxLCAyNDUsIDExMywgCi0gICAgMjM4LCAyMzAsIDg0LCA1LCAxLCAyNDUsIDExMywgMjM4LCAyMzAsIDg0LCAzOSwgMjIyLCAxMDEsIDU1LCA4NCwgMzksIAotICAgIDIxMSwgMTk3LCAyNTAsIDY3LCA4NCwgMzksIDIxMSwgMTk3LCAyMjcsIDE4NiwgODQsIDYsIDEsIDI0OCwgMTYsIDIyOSwgCi0gICAgMTI3LCA4NCwgNSwgMSwgMjQ4LCAxNiwgMjI5LCAxMjcsIDg0LCAzOCwgMjIxLCA1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDg0LCAKLSAgICAzOCwgMjIxLCA1NCwgMjQzLCAxNjcsIDIxNywgNDcsIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIzMSwgMzAsIDIxNywgNDcsIAotICAgIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIwNiwgNDAsIDI0MywgMTQxLCA4NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDg0LCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgODQsIDIyNCwgMjUsIDI0MywgMTQxLCAxMTQsIDUsIDEsIDI1MCwgMjMxLCAxMTQsIDUsIDEsIAotICAgIDI0OCwgMjQyLCAxMTQsIDUsIDEsIDIzOCwgMjM0LCAxMTQsIDUsIDEsIDI0MywgOTMsIDExNCwgNSwgMSwgMjQxLCA5MiwgCi0gICAgMTE0LCA1LCAxLCAyMDUsIDIxMywgMTE0LCA1LCAxLCAyMDIsIDg3LCAxMTQsIDUsIDEsIDIwOSwgMjMwLCAxMTQsIDUsIDEsIAotICAgIDIzMSwgNDksIDExNCwgNSwgMSwgMjMwLCA0LCAxMTQsIDUsIDEsIDIyOCwgMiwgMTE0LCA1LCAxLCAyMjUsIDEyMiwgMTE0LCAKLSAgICA1LCAxLCAyMjMsIDc0LCAxMTQsIDUsIDEsIDIyMCwgMzEsIDExNCwgNSwgMSwgMjE5LCA5MSwgMTE0LCA1LCAxLCAyMDIsIAotICAgIDc2LCAxMTQsIDUsIDEsIDIxNiwgMjAyLCAxMTQsIDUsIDEsIDIxNCwgMjQzLCAxMTQsIDUsIDEsIDIwOSwgMjE4LCAxMTQsIAotICAgIDUsIDEsIDIwNiwgMjU1LCAxMTQsIDUsIDEsIDIxOCwgMjAwLCAxMTQsIDUsIDEsIDIyOSwgMTMyLCAxMTQsIDUsIDEsIDIzOCwgCi0gICAgMTEwLCAxMTQsIDUsIDEsIDIxNywgMTExLCAxMTQsIDUsIDEsIDIxMiwgMjU1LCAxMTQsIDUsIDEsIDI0NiwgMTI5LCAxMTQsIAotICAgIDUsIDEsIDI0NywgNjEsIDExNCwgNSwgMSwgMjMwLCAxMzMsIDExNCwgNSwgMSwgMjQ2LCA2OCwgMTE0LCA1LCAxLCAyNDYsIAotICAgIDE4MywgMTE0LCA1LCAxLCAyMDMsIDE4MCwgMTE0LCA1LCAxLCAyMzAsIDE0NiwgMTE0LCA1LCAxLCAyMzcsIDE1NCwgMTE0LCAKLSAgICA1LCAxLCAyMzcsIDY3LCAxMTQsIDUsIDEsIDIzNiwgMjU0LCAxMTQsIDUsIDEsIDIwNCwgNjIsIDExNCwgNSwgMSwgMjM3LCAKLSAgICA5MiwgMTE0LCA1LCAxLCAyMzYsIDEzMiwgMTE0LCA1LCAxLCAyMDIsIDI0OSwgMTE0LCA1LCAxLCAyNTEsIDk4LCAyMDgsIAotICAgIDI0NywgMSwgMTk4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDYsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNSwgMjA4LCAyNDcsIDEsIAotICAgIDIwMywgOTUsIDIwOCwgMjQ3LCAxLCAyMDMsIDkzLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAyMDMsIDg4LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA4OCwgMjA4LCAyNDcsIDEsIDIwMywgMTAzLCAyMDgsIDI0NywgMSwgMjAzLCAxMDAsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDEwMiwgMjA4LCAyNDcsIDEsIDIwMywgMTAxLCAyMDgsIDI0NywgMSwgMjAzLCAxNSwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgOTcsIDIwOCwgMjQ3LCAxLCAyMDMsIDg2LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODYsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDgzLCAyMDgsIDI0NywgMSwgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDI0OCwgMTEyLCAyNTEsIDE0MCwgCi0gICAgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjAzLCA5MCwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgMTEwLCAyMDgsIDI0NywgMSwgMjAzLCA4NCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDg0LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA3MywgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjAzLCAxMSwgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyNTEsIDcxLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjA3LCAKLSAgICAyMDAsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDgyLCAyMDgsIDI0NywgMSwgMjAzLCA4MSwgMjA4LCAyNDcsIDEsIAotICAgIDIwMywgNzgsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5MiwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDc2LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA3NCwgMjA4LCAyNDcsIDEsIDIwMiwgMjEzLCAyMDgsIDI0NywgMSwgMjAzLCA3MSwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgNzAsIDIwOCwgMjQ3LCAxLCAyMDMsIDk0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTQsIAotICAgIDIwOCwgMjQ3LCAxLCAyNTAsIDQsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDY5LCAyMDgsIDI0NywgMSwgMjAzLCA2NywgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNjgsIDIwOCwgMjQ3LCAxLCAyMDMsIDY2LCAyMDgsIDI0NywgMSwgMjAzLCA2NSwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgMTA0LCAyMDgsIDI0NywgMSwgMjAzLCA2MywgMjA4LCAyNDcsIDEsIDIwMywgNjEsIDIwOCwgMjQ3LCAKLSAgICAxLCAyMDMsIDYwLCAyMDgsIDI0NywgMSwgMjAzLCA1OCwgMjA4LCAyNDcsIDEsIDIwMywgNTUsIDIwOCwgMjQ3LCAxLCAyMDksIAotICAgIDE5OSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwMywgNTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDUyLCAyMDgsIDI0NywgMSwgCi0gICAgMjAyLCAyNDcsIDIwOCwgMjQ3LCA2NSwgMSwgMjI4LCAxMDMsIDgyLCAyMDgsIDI0NywgMjEzLCAxMzEsIDgyLCAyMDgsIAotICAgIDI0NywgMTA5LCAyMzAsIDk2LCAzMywgNCwgMjI3LCA0OCwgMzMsIDQsIDIyNCwgODEsIDMzLCA0LCAyMTUsIDIyNSwgMzMsIAotICAgIDQsIDIxMiwgMTIsIDMzLCA0LCAyMTIsIDI0MSwgMzMsIDQsIDI0OCwgMjIsIDMzLCA0LCAyMDgsIDE3MiwgMzMsIDQsIDI0NSwgCi0gICAgMjUzLCAzMywgNCwgMjIxLCAxODksIDMzLCA0LCAyMjAsIDIzMiwgMzMsIDQsIDIzOCwgNDUsIDIyMCwgOTcsIDMzLCA0LCAKLSAgICAyMDIsIDE2LCAzMywgNCwgMjQzLCAxMTEsIDMzLCA0LCAyNDQsIDg5LCAzMywgNCwgMjMwLCAxMDAsIDMzLCA0LCAyMDksIAotICAgIDQ2LCAzMywgNCwgMjQ2LCAxMTUsIDMzLCA0LCAyMTgsIDE3OSwgMzMsIDQsIDIxOCwgNjgsIDMzLCA0LCAyMzgsIDEyNSwgCi0gICAgMzMsIDQsIDIzOCwgMTIxLCAzMywgNCwgMjM4LCAxMjIsIDMzLCA0LCAyMzgsIDEyMywgMzMsIDQsIDIxMSwgMTY0LCAzMywgCi0gICAgNCwgMjExLCAxMTksIDMzLCA0LCAyMTEsIDEzMiwgMzMsIDQsIDIxMSwgMTYzLCAzMywgNCwgMjExLCAxMzcsIDMzLCA0LCAKLSAgICAyMTEsIDEzOCwgMzMsIDQsIDIxMSwgMTI0LCAzMywgNCwgMjQ3LCA1LCAzMywgNCwgMjQ2LCAyNDAsIDMzLCA0LCAyNDYsIAotICAgIDI0MiwgMzMsIDQsIDI0NywgNCwgMzMsIDQsIDI0NywgMiwgMzMsIDQsIDI0NywgMywgMzMsIDQsIDI0NiwgMjQxLCAzMywgNCwgCi0gICAgMjAxLCAyMzUsIDMzLCA0LCAyMDEsIDIxMywgMzMsIDQsIDIwMSwgMjI2LCAzMywgNCwgMjAxLCAyMzQsIDMzLCA0LCAyMDEsIAotICAgIDIyOSwgMzMsIDQsIDIwMSwgMjMwLCAzMywgNCwgMjAxLCAyMTgsIDMzLCA0LCAyNDcsIDAsIDMzLCA0LCAyNDYsIDI0MywgCi0gICAgMzMsIDQsIDI0NiwgMjQ1LCAzMywgNCwgMjQ2LCAyNTUsIDMzLCA0LCAyNDYsIDI1MywgMzMsIDQsIDI0NiwgMjU0LCAzMywgCi0gICAgNCwgMjQ2LCAyNDQsIDMzLCA0LCAyMTcsIDEzLCAzMywgNCwgMjE3LCAzLCAzMywgNCwgMjE3LCA5LCAzMywgNCwgMjE3LCAKLSAgICAxMiwgMzMsIDQsIDIxNywgMTAsIDMzLCA0LCAyMTcsIDExLCAzMywgNCwgMjE3LCA4LCAzMywgNCwgMjI4LCAxNDEsIDMzLCAKLSAgICA0LCAyMjgsIDEzMywgMzMsIDQsIDIyOCwgMTM2LCAzMywgNCwgMjI4LCAxNDAsIDMzLCA0LCAyMjgsIDEzNywgMzMsIDQsIAotICAgIDIyOCwgMTM4LCAzMywgNCwgMjI4LCAxMzQsIDMzLCA0LCAyMDMsIDE0MCwgMzMsIDQsIDIwMywgMTI3LCAzMywgNCwgMjAzLCAKLSAgICAxMzUsIDMzLCA0LCAyMDMsIDEzOSwgMzMsIDQsIDIwMywgMTM3LCAzMywgNCwgMjAzLCAxMzgsIDMzLCA0LCAyMDMsIDEzNCwgCi0gICAgMzMsIDQsIDIzNywgMTgzLCAzMywgNCwgMjM3LCAxNzMsIDMzLCA0LCAyMzcsIDE3NiwgMzMsIDQsIDIzNywgMTgyLCAzMywgCi0gICAgNCwgMjM3LCAxNzgsIDMzLCA0LCAyMzcsIDE3OSwgMzMsIDQsIDIzNywgMTc1LCAzOSwgMzYsIDEsIDI0OCwgMTYyLCAzOSwgCi0gICAgMzYsIDEsIDIwNiwgNTUsIDM5LCAzNiwgMSwgMjM4LCAxMDUsIDM5LCAzNiwgMSwgMjQ0LCA3NSwgMzksIDM2LCAxLCAyMDIsIAotICAgIDcxLCAzOSwgMzYsIDEsIDIwMiwgOTIsIDM5LCAzNiwgMSwgMTczLCAzOSwgMzYsIDEsIDI0MSwgMTIyLCAzOSwgMzYsIDEsIAotICAgIDI0MSwgMTAzLCAzOSwgMzYsIDEsIDI0MSwgOTIsIDM5LCAzNiwgMSwgNzgsIDM5LCAzNiwgMSwgMjE5LCAzNCwgMzksIDM2LCAKLSAgICAxLCAyNDEsIDI4LCAzOSwgMzYsIDEsIDI0MSwgMTcsIDM5LCAzNiwgMSwgMjA5LCAxODcsIDM5LCAzNiwgMSwgMTUyLCAzOSwgCi0gICAgMzYsIDEsIDIwOCwgMTQsIDM5LCAzNiwgMSwgMjQ2LCAxNzAsIDM5LCAzNiwgMSwgMjEzLCA5MCwgMzksIDM2LCAxLCAyMTMsIAotICAgIDQ2LCAzOSwgMzYsIDEsIDIzOSwgMjM1LCAzOSwgMzYsIDEsIDI0MSwgMTMsIDM5LCAzNiwgMSwgNjMsIDM5LCAzNiwgMSwgCi0gICAgMjMxLCAxMTAsIDM5LCAzNiwgMSwgMjQzLCAxMjksIDM5LCAzNiwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzksIDM2LCAxLCAKLSAgICAyMDMsIDY2LCAzOSwgMzYsIDEsIDIwMiwgMjEzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCA2MywgMzksIDM2LCAxLCAyMjcsIAotICAgIDg2LCAyMDIsIDE4MywgMzksIDM2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzksIDM2LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgCi0gICAgMjAyLCAxODMsIDUwLCAyNTAsIDIxOCwgMjEwLCAyNDEsIDIyNSwgODgsIDUwLCAyNTAsIDIxOCwgMjQyLCA4MywgMjEwLCAKLSAgICAyNDEsIDIyNSwgODgsIDQ5LCAyMTAsIDI0MSwgMTU1LCA1MCwgMjEwLCAyNDEsIDE1NSwgNDksIDI0MiwgODMsIDIxMCwgCi0gICAgMjQxLCAxNTUsIDUwLCAyNDIsIDgzLCAyMTAsIDI0MSwgMTU1LCAyMTYsIDE4OCwgMjMwLCAyNDksIDIyNSwgODgsIDIxNiwgCi0gICAgMTg4LCAyNDIsIDgzLCAyMzAsIDI0OSwgMjI1LCA4OCwgMjQyLCA4MywgMjA4LCAxMDMsIDIyNSwgODgsIDQ5LCAyMDgsIAotICAgIDEwMywgMTU1LCA1MCwgMjA4LCAxMDMsIDE1NSwgMjE2LCAxODgsIDIxMSwgMTc3LCA0OSwgMjE2LCAxODgsIDIyMCwgMzMsIAotICAgIDE1NSwgNTAsIDIxNiwgMTg4LCAyMjAsIDMzLCAxNTUsIDI0MSwgMTYyLCAyNDUsIDE2MywgMjE5LCA4NywgMjM5LCAxNjEsIAotICAgIDIxOSwgODcsIDIxNiwgNzMsIDIzOSwgMTYxLCAyMTksIDg3LCAyMzUsIDIxNywgMjQyLCA4MywgMjIwLCA5MiwgMTgzLCAKLSAgICAyNTAsIDIyNywgMTc3LCAyNTAsIDIyNywgMjQyLCA4MywgMjE2LCAxMSwgMjUwLCAyMTcsIDUyLCAyMjAsIDg5LCAyMzUsIAotICAgIDIyMCwgMjMwLCAyMzksIDIzMCwgMjQ3LCAyMTksIDEzNSwgMjQ3LCAyMjMsIDIzNSwgMjIxLCAzLCAyNDMsIDIzMSwgMjA4LCAKLSAgICAyMjgsIDMsIDIxNSwgMjUzLCA1NSwgNDksIDEyNCwgMjE5LCA3OSwgMTU1LCA1MCwgMTI0LCAyMTksIDc5LCAxNTUsIDIwOCwgCi0gICAgMjI4LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAzLCA3MCwgNTYsIDQ5LCA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDUwLCAKLSAgICA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDIwOCwgMTQ1LCA0OSwgMTYyLCAxNTUsIDIwOCwgMTQ1LCA1MCwgMTYyLCAxNTUsIAotICAgIDI0NywgMjQ4LCA0OSwgMTYyLCAxNTUsIDI0NywgMjQ4LCA1MCwgMTYyLCAxNTUsIDQ5LCAyMTIsIDE1NCwgMTA2LCAxNTUsIAotICAgIDUwLCAyMTIsIDE1NCwgMTA2LCAxNTUsIDQ5LCA1MiwgMjE5LCA3NiwgNTAsIDUyLCAyMTksIDc2LCAxMjAsIDE4NywgMTE1LCAKLSAgICAxMTgsIDcwLCAyMTcsIDE3OCwgMTE4LCA3MCwgMTE1LCAxMjAsIDE4NywgMjE3LCAxNzgsIDEwMywgMjM5LCAxNDcsIDcwLCAKLSAgICAyMTcsIDE3OCwgMjM5LCAyMzMsIDcwLCA4MiwgMjE2LCA3MywgMjE3LCA0NywgODIsIDgwLCAyMDgsIDIyNywgMjE1LCAyNTMsIAotICAgIDIxOCwgNjIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMTAxLCAyNDMsIDg1LCAyMDcsIDE3NCwgMjQ1LCAyMzMsIDIxNiwgMTg4LCAKLSAgICAyNDMsIDg1LCAyMTYsIDE4OCwgMjQ1LCAyMzMsIDIwNywgMTc0LCAyMTMsIDE0MywgMjQ0LCAxOTYsIDMsIDQ5LCAyMzcsIAotICAgIDIyNCwgMjQ0LCAxOTYsIDMsIDUwLCAyMzcsIDIyNCwgMjA3LCAxNzQsIDI0NCwgMTk1LCAyMDgsIDE0NSwgMTYyLCAyMTQsIAotICAgIDE2OCwgNTQsIDIwNywgMTM1LCAyNDQsIDE0NCwgMjA5LCAzMCwgMjQ0LCAxNDQsIDIxMSwgNzYsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCA4MCwgMjEyLCA4OCwgMjQzLCA4MywgMjA0LCAyMSwgODAsIDIyNywgMTE0LCAyNDcsIDQ2LCA1MiwgMjM1LCAyMjAsIAotICAgIDIxNiwgNzMsIDI0NSwgMjMzLCA1MiwgMjI2LCAyNTIsIDIxNywgMzEsIDgyLCAxMiwgNDAsIDIxNiwgMTAwLCAxMiwgNDAsIAotICAgIDI0NiwgMjYsIDEyLCA0MCwgMjE0LCAxNzEsIDEwNSwgMTIsIDQwLCAyMTQsIDE3MSwgMTA4LCAxMiwgNDAsIDIxNCwgMTcxLCAKLSAgICAxNDcsIDEyLCA0MCwgMjE4LCAyMjksIDEyLCA0MCwgMjQ3LCAyMzMsIDEyLCA0MCwgMjEwLCA4LCAxMiwgNDAsIDIyOSwgMzQsIAotICAgIDEwNSwgMTIsIDQwLCAyMjksIDM0LCAxMDgsIDEyLCA0MCwgMjQzLCAxMzgsIDEyLCA0MCwgMjE0LCAxNzUsIDEyLCA0MCwgNSwgCi0gICAgMTA1LCAxMiwgNDAsIDUsIDEwOCwgMTIsIDQwLCAyMjgsIDIzLCAxMDUsIDEyLCA0MCwgMjI4LCAyMywgMTA4LCAxMiwgNDAsIAotICAgIDIyOCwgMjMsIDE0NywgMTIsIDQwLCAyMjgsIDIzLCAxNDksIDEyLCA0MCwgMjEyLCAyNCwgMTIsIDQwLCAyMDksIDMzLCAxMiwgCi0gICAgNDAsIDIxMiwgMjIsIDEwNSwgMTIsIDQwLCAyMTIsIDIyLCAxMDgsIDEyLCA0MCwgMjM3LCA1NiwgMTA1LCAxMiwgNDAsIAotICAgIDIzNywgNTYsIDEwOCwgMTIsIDQwLCAyMzcsIDEyMywgMTIsIDQwLCAyMTYsIDE3OCwgMTIsIDQwLCAyNDYsIDExMiwgMTIsIAotICAgIDQwLCAyMTAsIDIxNCwgMTIsIDQwLCAyMjQsIDI5LCAxMiwgNDAsIDI0NCwgNzMsIDEyLCA0MCwgMjI0LCAyMCwgMTIsIDQwLCAKLSAgICAyNDYsIDQ0LCAxMiwgNDAsIDIwNCwgODEsIDEwNSwgMTIsIDQwLCAyMDQsIDgxLCAxMDgsIDEyLCA0MCwgMjM5LCAyNDksIAotICAgIDEyLCA0MCwgMjE5LCA0NiwgMTA1LCAxMiwgNDAsIDIxOSwgNDYsIDEwOCwgMTIsIDQwLCAyMTIsIDEyNywgMTYyLCAyMDgsIAotICAgIDk2LCAyMDgsIDI1LCAxMiwgNDAsIDI0NSwgMTQ5LCAxMiwgNDAsIDI0MywgMTAyLCAxMiwgNDAsIDIzMCwgMTc2LCAxMiwgCi0gICAgNDAsIDI0OCwgMTUsIDc2LCAyNDYsIDEwLCAxMiwgNDAsIDI0MCwgMTkxLCAxMiwgNDAsIDIxMSwgMTk5LCAxMDUsIDEyLCAKLSAgICA0MCwgMjExLCAxOTksIDEwOCwgMTIsIDQwLCAyNDgsIDI0NCwgMTIsIDQwLCAyMTIsIDEzNCwgMTIsIDQwLCAyNDcsIDEyMiwgCi0gICAgMjEyLCAxMzQsIDEyLCA0MCwgMjIyLCAyMjAsIDEwNSwgMTIsIDQwLCAyMjIsIDIyMCwgMTA4LCAxMiwgNDAsIDIyMiwgMjIwLCAKLSAgICAxNDcsIDEyLCA0MCwgMjIyLCAyMjAsIDE0OSwgMTIsIDQwLCAyMjQsIDIyNywgMTIsIDQwLCAyMTMsIDM3LCAxMiwgNDAsIAotICAgIDIxNiwgMTg0LCAxMiwgNDAsIDI0MCwgMjE5LCAxMiwgNDAsIDIyMCwgNDUsIDEyLCA0MCwgMjQ3LCAyMDEsIDEwNSwgMTIsIAotICAgIDQwLCAyNDcsIDIwMSwgMTA4LCAxMiwgNDAsIDIyNSwgMTUsIDEyLCA0MCwgMjI0LCAyNCwgMTIsIDQwLCAyMzgsIDEsIDEwNSwgCi0gICAgMTIsIDQwLCAyMzgsIDEsIDEwOCwgMTIsIDQwLCAyMzgsIDEsIDE0NywgMTIsIDQwLCAyMDgsIDI0NSwgMTIsIDQwLCAyNDYsIAotICAgIDksIDEyLCA0MCwgMjA0LCA0NiwgMTA1LCAxMiwgNDAsIDIwNCwgNDYsIDEwOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjE0LCAKLSAgICAxNjUsIDEyLCA0MCwgMjEyLCAxMjcsIDIzNiwgNTMsIDEyLCA0MCwgMjM2LCA1MywgMTIsIDQwLCAyNDcsIDEyMiwgMjExLCAKLSAgICAyMTEsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxMywgMzIsIDEyLCA0MCwgMjM5LCAxNzIsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0NywgCi0gICAgMjMsIDEyLCA0MCwgMjEyLCAxMjcsIDIwNCwgMTAxLCAxMiwgNDAsIDIwNCwgMTAyLCAxMDUsIDEyLCA0MCwgMjA0LCAxMDIsIAotICAgIDEwOCwgMTIsIDQwLCAyNDYsIDQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDMxLCAxMiwgNDAsIDE2MywgMTA1LCAxMiwgCi0gICAgNDAsIDE2MywgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDIxNiwgMTIsIAotICAgIDQwLCAyMjQsIDE2LCAxMDUsIDEyLCA0MCwgMjI0LCAxNiwgMTA4LCAxMiwgNDAsIDIxNiwgMTkwLCAxMiwgNDAsIDI0OCwgCi0gICAgMjUsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOSwgMjI0LCAyMjcsIDIyOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjI3LCAyMjksIDEyLCAKLSAgICA0MCwgMjQ3LCAxMjIsIDIwNCwgMTYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOSwgMTkwLCAxMiwgNDAsIDI0MSwgMTczLCAxMDUsIAotICAgIDEyLCA0MCwgMjQxLCAxNzMsIDEwOCwgMTIsIDQwLCAyNDEsIDE3MywgMTQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyNDEsIDE3MiwgCi0gICAgMTIsIDQwLCAyMzcsIDY0LCAxMiwgNDAsIDI0NywgMTIyLCAyMzYsIDQ5LCAxMiwgNDAsIDI0OCwgMTEsIDEyLCA0MCwgMjM4LCAKLSAgICA4OSwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAyNDMsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0OCwgNjAsIDEyLCA0MCwgMjQ3LCAKLSAgICAxMjIsIDIxNSwgMSwgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAzOCwgMTIsIDQwLCAyMTIsIDEyNywgMjAzLCA0NCwgMTIsIAotICAgIDQwLCAyNDcsIDEyMiwgMjM5LCAxMjEsIDEyLCA0MCwgMjMwLCAxODMsIDI0MCwgMjI0LCAxMiwgNDAsIDI0NywgMTIyLCAKLSAgICAyNDAsIDIyNCwgMTIsIDQwLCAyMzAsIDE4MywgMjA4LCAxNDYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOCwgMTQ2LCAxMiwgNDAsIAotICAgIDIzMCwgMTgzLCAyNDIsIDYxLCAxMiwgNDAsIDI0NywgMTIyLCAyNDIsIDYxLCAxMiwgNDAsIDIwNywgMTcxLCAxMiwgNDAsIAotICAgIDIzMCwgMTgzLCAyMDcsIDE3MSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA3LCAxNzEsIDcxLCA0MCwgMTA1LCA3MSwgNDAsIDIyNywgCi0gICAgMTE0LCA3MSwgNDAsIDI0MywgODUsIDcxLCA0MCwgMjEyLCA1NywgNzEsIDQwLCAyMTQsIDE3MCwgNzEsIDQwLCAxMTMsIDcxLCAKLSAgICA0MCwgMTA4LCA3MSwgNDAsIDIyNywgMTQzLCA3MSwgNDAsIDIyNSwgMTIyLCA3MSwgNDAsIDIyNywgMjA3LCA3MSwgNDAsIAotICAgIDI0MSwgNjcsIDcxLCA0MCwgMTk5LCA3MSwgNDAsIDEyMSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjQ1LCAxNTEsIDcxLCA0MCwgCi0gICAgMjM1LCAxNjIsIDcxLCA0MCwgMjEwLCA4LCA3MSwgNDAsIDE3MSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjI5LCAzMywgNzEsIDQwLCAKLSAgICAyMTgsIDE2LCA3MSwgNDAsIDIwMywgMjI4LCA3MSwgNDAsIDIxMSwgMTkwLCA3MSwgNDAsIDUwLCAxNzEsIDI0NywgMjMzLCAKLSAgICA3MSwgNDAsIDIzNiwgMjU1LCAyNDEsIDg3LCA3MSwgNDAsIDIwOSwgMTUyLCA3MSwgNDAsIDI0MywgMTM4LCA3MSwgNDAsIAotICAgIDIxNCwgMTc1LCA3MSwgNDAsIDI0NiwgMjYsIDcxLCA0MCwgMjE3LCAyMjYsIDcxLCA0MCwgMjUxLCA4MCwgNzEsIDQwLCAKLSAgICAyMjQsIDcsIDcxLCA0MCwgMjQxLCA4NywgNzEsIDQwLCAyNDEsIDE3OSwgNzEsIDQwLCAyMTQsIDE5NywgNzEsIDQwLCAyMzgsIAotICAgIDM5LCA3MSwgNDAsIDIzOCwgNDAsIDIxMiwgMzgsIDcxLCA0MCwgMjQwLCAyMjMsIDcxLCA0MCwgMjQ4LCA3MiwgNzEsIDQwLCAKLSAgICAyMDMsIDI1MCwgNzEsIDQwLCAyNDYsIDEzMywgNzEsIDQwLCAyMTUsIDIwNywgNzEsIDQwLCAyMzEsIDQ1LCA3MSwgNDAsIAotICAgIDIxMiwgMzYsIDcxLCA0MCwgMjI4LCAyMiwgNzEsIDQwLCAyNDUsIDE2MSwgNzEsIDQwLCAyMTEsIDE4MSwgNzEsIDQwLCAKLSAgICAyMjQsIDEyLCA3MSwgNDAsIDIxNSwgMjQxLCA3MSwgNDAsIDIwMywgMjM1LCA3MSwgNDAsIDIyMCwgMjUsIDcxLCA0MCwgCi0gICAgMjA3LCAxODAsIDcxLCA0MCwgMjQyLCA0NCwgNzEsIDQwLCAyMTIsIDIyOCwgMjA5LCAzMywgNzEsIDQwLCAyNDIsIDgzLCAKLSAgICAyNDYsIDI2LCA3MSwgNDAsIDE2MywgMjExLCAzOCwgNzEsIDQwLCAxMjAsIDIzNywgOTksIDcxLCA0MCwgMjEyLCAyMzQsIAotICAgIDcxLCA0MCwgMjQ3LCAyNDAsIDcxLCA0MCwgMjEyLCAyMSwgNzEsIDQwLCAyNDcsIDIwNSwgNzEsIDQwLCAyMTEsIDc1LCA3MSwgCi0gICAgNDAsIDIzNywgNTUsIDcxLCA0MCwgMjM3LCAxMzgsIDcxLCA0MCwgMjQzLCA4OCwgNzEsIDQwLCAyMzcsIDEyMywgNzEsIDQwLCAKLSAgICAyNDcsIDIyMywgNzEsIDQwLCAyMTYsIDE3OCwgNzEsIDQwLCAyMTQsIDE4MywgNzEsIDQwLCAyNDMsIDE2OSwgNzEsIDQwLCAKLSAgICAyNTAsIDksIDcxLCA0MCwgMjExLCAxNzcsIDcxLCA0MCwgMjIxLCAxNjUsIDcxLCA0MCwgMjEwLCAyMTQsIDcxLCA0MCwgCi0gICAgMjE0LCAyMDgsIDcxLCA0MCwgMjI0LCAyOSwgNzEsIDQwLCAyMDgsIDk1LCA3MSwgNDAsIDIyOCwgOTksIDcxLCA0MCwgMjExLCAKLSAgICA2MSwgNzEsIDQwLCAyNDQsIDczLCA3MSwgNDAsIDIwNCwgNjEsIDcxLCA0MCwgMjQzLCAxMTQsIDIyMSwgMTY1LCA3MSwgNDAsIAotICAgIDI0NSwgMjI5LCA3MSwgNDAsIDIzOSwgOTUsIDcxLCA0MCwgMjQ2LCAzOCwgNzEsIDQwLCAyMTEsIDgwLCA3MSwgNDAsIDIwNCwgCi0gICAgODAsIDcxLCA0MCwgMjM5LCAyNDksIDcxLCA0MCwgMjQ2LCAzNCwgNzEsIDQwLCAyNDAsIDY3LCA3MSwgNDAsIDUyLCAyMDMsIAotICAgIDE5NiwgNzEsIDQwLCAxNjIsIDIwOCwgOTYsIDIwOCwgMjUsIDcxLCA0MCwgMjEyLCA1MCwgNzEsIDQwLCAyNDAsIDc5LCA3MSwgCi0gICAgNDAsIDI0NSwgMTQ5LCA3MSwgNDAsIDI0MywgMTAyLCA3MSwgNDAsIDIxNywgMjIzLCA3MSwgNDAsIDIzMCwgMTc2LCA3MSwgCi0gICAgNDAsIDIyNCwgMjQ5LCA3MSwgNDAsIDIwOCwgMjI2LCA3MSwgNDAsIDIxMCwgMTY0LCA3MSwgNDAsIDIyNywgMTM3LCA3MSwgCi0gICAgNDAsIDIwNiwgMTkxLCA3MSwgNDAsIDI0MCwgMjQsIDcxLCA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDcxLCA0MCwgMjEyLCAKLSAgICAxNTgsIDcxLCA0MCwgMjQyLCA4MywgMjA5LCAxNDQsIDcxLCA0MCwgMjA0LCAzMywgNzEsIDQwLCAyMTIsIDY1LCA3MSwgNDAsIAotICAgIDI0MywgMTU2LCA3MSwgNDAsIDI0MCwgMTkxLCA3MSwgNDAsIDIxMSwgMjE0LCA3MSwgNDAsIDQ3LCA3MSwgNDAsIDIxMSwgCi0gICAgNjMsIDcxLCA0MCwgMjExLCAxOTgsIDcxLCA0MCwgMjA4LCAxMTgsIDcxLCA0MCwgMjM4LCAxMCwgNzEsIDQwLCAyNDcsIDEwLCAKLSAgICA3MSwgNDAsIDIxMSwgOTgsIDcxLCA0MCwgMjQ4LCAyNDQsIDcxLCA0MCwgMjE2LCA1MiwgNzEsIDQwLCAyMTIsIDEzNCwgNzEsIAotICAgIDQwLCAyMzAsIDE2OCwgNzEsIDQwLCAyMjIsIDIxOSwgNzEsIDQwLCAyMTMsIDM3LCA3MSwgNDAsIDI0MCwgNTUsIDcxLCA0MCwgCi0gICAgMjIwLCA0NSwgNzEsIDQwLCAyNTAsIDIyNiwgNzEsIDQwLCAyMTgsIDgzLCA3MSwgNDAsIDI0MSwgMTgzLCA3MSwgNDAsIAotICAgIDI0NywgMjAwLCA3MSwgNDAsIDIyNSwgMTUsIDcxLCA0MCwgMjI0LCAxMDQsIDcxLCA0MCwgMjEzLCAxNDksIDcxLCA0MCwgCi0gICAgMjUwLCA5OCwgNzEsIDQwLCAyMjQsIDI0LCA3MSwgNDAsIDIwOCwgMTUwLCA3MSwgNDAsIDIxOSwgMjUyLCA3MSwgNDAsIAotICAgIDI0OCwgMTksIDcxLCA0MCwgMjExLCA1OSwgNzEsIDQwLCAyNDUsIDI0MSwgNzEsIDQwLCAyMzgsIDAsIDcxLCA0MCwgMjA4LCAKLSAgICAyNDUsIDcxLCA0MCwgMjMxLCA5LCA3MSwgNDAsIDI0OCwgMzEsIDcxLCA0MCwgMjA0LCAxMDIsIDI0MSwgODcsIDcxLCA0MCwgCi0gICAgMjQ2LCA5LCA3MSwgNDAsIDIwNCwgNDUsIDcxLCA0MCwgMjE0LCAxNjUsIDcxLCA0MCwgMjM2LCA1MywgNzEsIDQwLCAyMTEsIAotICAgIDIxMSwgNzEsIDQwLCAyMDYsIDc5LCA3MSwgNDAsIDI0OCwgMTU3LCA3MSwgNDAsIDIxOCwgMTMxLCA3MSwgNDAsIDI0OSwgCi0gICAgMTMsIDcxLCA0MCwgMjEzLCAzMiwgNzEsIDQwLCAyMTYsIDEzNywgNzEsIDQwLCAyMTUsIDEyOCwgNzEsIDQwLCAyMzksIAotICAgIDE3MiwgNzEsIDQwLCAyNDgsIDE3LCA3MSwgNDAsIDI0NywgMjMsIDcxLCA0MCwgMjQ4LCA0OCwgNzEsIDQwLCAyMjQsIDI2LCAKLSAgICA3MSwgNDAsIDIwNCwgMTAxLCA3MSwgNDAsIDI0NiwgNDcsIDcxLCA0MCwgMjA0LCAxMiwgNzEsIDQwLCAyNDMsIDE0OSwgNzEsIAotICAgIDQwLCAyMDUsIDIxNCwgNzEsIDQwLCAyMzgsIDMxLCA3MSwgNDAsIDIyNywgMjgsIDcxLCA0MCwgMjM4LCAyMTYsIDcxLCA0MCwgCi0gICAgMjI0LCAxNSwgNzEsIDQwLCAyMTIsIDU2LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDI0NywgMjQ4LCA2MCwgNzEsIDQwLCAKLSAgICAyMTYsIDE5MCwgNzEsIDQwLCAyNDgsIDI1LCA3MSwgNDAsIDIwMywgMjE5LCA3MSwgNDAsIDI0MCwgMTAyLCA3MSwgNDAsIAotICAgIDIyNywgMjI4LCA3MSwgNDAsIDIwOSwgMjI0LCAyMjcsIDIyOCwgNzEsIDQwLCAyMjcsIDIyNCwgNzEsIDQwLCAyMTEsIDI0MCwgCi0gICAgNzEsIDQwLCAyMjcsIDIyOSwgNzEsIDQwLCAyMDQsIDE2LCA3MSwgNDAsIDIzOSwgMTkwLCA3MSwgNDAsIDI0MSwgMTcyLCAKLSAgICA3MSwgNDAsIDIzNywgNjQsIDcxLCA0MCwgMjM5LCAxMzYsIDcxLCA0MCwgMjM2LCA0OSwgNzEsIDQwLCAyNDgsIDExLCA3MSwgCi0gICAgNDAsIDIwOSwgMjMzLCA3MSwgNDAsIDIzNywgMTQ1LCA3MSwgNDAsIDI0MCwgMTcsIDcxLCA0MCwgMjE1LCAzMCwgMjA0LCAKLSAgICAxMiwgNzEsIDQwLCAyNDcsIDEyLCA3MSwgNDAsIDIzOCwgODksIDcxLCA0MCwgMjM5LCAyNDMsIDcxLCA0MCwgMjQ4LCA2MCwgCi0gICAgNzEsIDQwLCAyMTUsIDEsIDcxLCA0MCwgMjQ0LCA1OCwgNzEsIDQwLCAyMDQsIDM4LCA3MSwgNDAsIDIzNywgMzQsIDcxLCAKLSAgICA0MCwgMjAzLCA0NCwgNzEsIDQwLCAyMjQsIDExNSwgNzEsIDQwLCAyNDgsIDQzLCA3MSwgNDAsIDI0MSwgOTksIDcxLCA0MCwgCi0gICAgMjM5LCAxMjEsIDcxLCA0MCwgMjA4LCA2NywgNzEsIDQwLCAyNDIsIDQ2LCA3MSwgNDAsIDIxNiwgMTcyLCA3MSwgNDAsIAotICAgIDIyMSwgMTY3LCA3MSwgNDAsIDI0MCwgMjI0LCA3MSwgNDAsIDIwOCwgMTQ2LCA3MSwgNDAsIDI0MiwgNjEsIDcxLCA0MCwgCi0gICAgMjA3LCAxNzEsIDcxLCA0MCwgMjM5LCAxOTMsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIDIxNiwgMTYsIAotICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgNDksIDIwOCwgMTczLCAKLSAgICAxMDEsIDI1LCAyMTYsIDE2LCAxMzksIDI0NCwgMTgsIDE2NywgODcsIDIwOCwgMTczLCAxMDEsIDI1LCA1NiwgMTM5LCAyNDQsIAotICAgIDE4LCAxNjcsIDIzOSwgMTAyLCAyMTAsIDE4NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTUsIAotICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIAotICAgIDIzOSwgMTIwLCAyMjcsIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjA2LCAyMjEsIDIyNywgCi0gICAgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMTM5LCAyNDQsIAotICAgIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjI2LCAyNTEsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjE5LCAKLSAgICAyMDIsIDEzOSwgMjExLCAyMjgsIDEzOSwgMjQ1LCAyMzMsIDEzOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDI0MywgMTQ2LCA4MiwgCi0gICAgMjMwLCAxNjksIDIzMSwgMjksIDIxMSwgOTcsIDk3LCAxMzksIDIzMCwgMTk5LCA4MiwgMTM5LCAyNDYsIDEyLCA4MiwgMTM5LCAKLSAgICA0MiwgMjAyLCA4NCwgNDksIDI1MCwgMjE4LCAxNTUsIDUwLCAyNTAsIDIxOCwgMTU1LCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAotICAgIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgNDksIDI0NSwgMTY2LCAxNTUsIDUwLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjEsIDI0NSwgCi0gICAgMTY2LCAxNTUsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgNDksIDYyLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjIsIDIyNywgMTg1LCAKLSAgICAxNTUsIDIxOCwgMjksIDgyLCAyMzgsIDE1OCwgODIsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgMjA4LCAxMzMsIAotICAgIDIxMywgMzMsIDE1NSwgNDksIDYxLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjEsIDIyNywgMTg1LCAxNTUsIDQ5LCA2MSwgMjA4LCAKLSAgICAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDUxLCAxNTUsIDUwLCAKLSAgICA2MSwgNTEsIDE1NSwgMjA0LCA3NiwgMjQ0LCAxNDQsIDIxNiwgNzMsIDUyLCAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDUyLCAKLSAgICAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDEyNCwgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMjE4LCAyOSwgMTMxLCAyNDAsIAotICAgIDEwMiwgMjM3LCA5NywgMjIxLCA0NCwgMTA1LCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDgsIDIzNywgOTcsIDIyMSwgNDQsIDE0NywgCi0gICAgMjM3LCA5NywgMjIxLCA0NCwgMTQ5LCAyMzcsIDk3LCAyMjEsIDQ0LCAxNzAsIDIzNywgOTcsIDIyMSwgNDQsIDE5NSwgMjM3LCAKLSAgICA5NywgMjIxLCA0NCwgMjEzLCAxMTEsIDIzNywgOTcsIDIyMSwgNDQsIDE5OSwgMjM3LCA5NywgMjIxLCA0NCwgMjIyLCA2MywgCi0gICAgMTM5LCAyMjcsIDE2NywgMTQzLCA4MiwgMTM5LCAyMTUsIDI0NSwgMTQzLCA4MiwgMTM5LCAyNDQsIDI3LCAxNDMsIDgyLCAKLSAgICAxMzksIDI0MSwgNjYsIDE0MywgODIsIDI4LCAyMTIsIDEyMCwgNzAsIDE0MywgODIsIDI4LCA1MiwgNzAsIDE0MywgODIsIAotICAgIDIwNCwgNzIsIDI0NCwgMTQ0LCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAKLSAgICAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIAotICAgIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAyMDUsIDE4NiwgMjExLCAyNDEsIDEzMSwgMjA2LCAyMjEsIDIzNywgMTM3LCA4MCwgCi0gICAgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMjYsIDI1MSwgMjM3LCAxMzcsIDQzLCAyMTgsIDI5LCA4MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMjI3LCAxMTUsIDI0MCwgNTIsIDIxMywgMTMxLCA5NywgMjM3LCA5NywgMjIxLCA0NCwgMjA5LCAxNTIsIDIzNywgCi0gICAgOTcsIDIyMSwgNDQsIDIwNywgMTUxLCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDUzLCA4MCwgMTM5LCAyMzAsIDE5OSwgODIsIAotICAgIDIyNSwgNzIsIDgyLCAyMTksIDcxLCAyNTAsIDI1MSwgODIsIDEzOSwgNTcsIDIzMSwgMzEsIDEzOSwgMTYyLCAyNDAsIDEwLCAKLSAgICAyMTEsIDIyOCwgMTcyLCAxLCA1LCA2MywgMTcyLCAxLCA2MywgMTcyLCAxLCA1LCA3NSwgMTcyLCAxLCA3NSwgMTcyLCAxLCAKLSAgICA1LCA2OCwgMTcyLCAxLCA2OCwgMTcyLCAxLCA1LCA3NCwgMTcyLCAxLCA3NCwgMTcyLCAxLCA1LCA3OCwgMTcyLCAxLCA3OCwgCi0gICAgMTcyLCAxLCAxNzMsIDE3MiwgMSwgMjM5LCA4LCAxNzIsIDEsIDIyOSwgMTAwLCAxNzIsIDEsIDIzOCwgODEsIDE3MiwgMSwgCi0gICAgMjI4LCAyMDksIDE3MiwgMSwgMjM3LCAyMzAsIDE3MiwgMSwgMjI5LCAyMDEsIDE3MiwgMSwgMjM4LCAxOTAsIDE3MiwgMSwgCi0gICAgMjI5LCAyNiwgMTcyLCAxLCAyMzgsIDM5LCAxNzIsIDEsIDIxNSwgMzYsIDE3MiwgMSwgMjAyLCAxMTYsIDE3MiwgMSwgMjEyLCAKLSAgICAxNjIsIDE3MiwgMSwgMjAyLCAzOSwgMTcyLCAxLCAyMTEsIDEwLCAxNzIsIDEsIDIwMiwgNiwgMTcyLCAxLCAyMTQsIDE3NywgCi0gICAgMTcyLCAxLCAyMDIsIDkyLCAxNzIsIDEsIDIxMiwgMTMsIDE3MiwgMSwgMjAyLCAxNywgMTcyLCAxLCAyMTAsIDIyLCAxNzIsIAotICAgIDEsIDI0NCwgMjEyLCAxNzIsIDEsIDIwOSwgMiwgMTcyLCAxLCAyNDMsIDIzMywgMTcyLCAxLCA1LCAyMDcsIDIwMywgMTcyLCAKLSAgICAxLCAyMDcsIDIwMywgMTcyLCAxLCAyNDIsIDQyLCAxNzIsIDEsIDIwOSwgMTg3LCAxNzIsIDEsIDI0NCwgNzUsIDE3MiwgMSwgCi0gICAgMTM1LCAxNzIsIDEsIDI0MywgMTEzLCAxNzIsIDEsIDIwMSwgMjAxLCAxNzIsIDEsIDIyMiwgMTAwLCAxNzIsIDEsIDIyMSwgCi0gICAgODQsIDE3MiwgMSwgMjIyLCAyNDAsIDE3MiwgMSwgMjIxLCAxOTEsIDE3MiwgMSwgMTUyLCAxNzIsIDEsIDI0OSwgMzIsIAotICAgIDE3MiwgMSwgMTg1LCAxNzIsIDEsIDIzNywgMywgMTcyLCAxLCAyNDgsIDg2LCAxNzIsIDEsIDIxOCwgMTY3LCAxNzIsIDEsIAotICAgIDIzNiwgMjYsIDE3MiwgMSwgMjQ3LCAxOTMsIDE3MiwgMSwgMjE3LCAxOTEsIDE3MiwgMSwgMjM3LCA2NywgMTcyLCAxLCAKLSAgICAyNDgsIDE2MiwgMTcyLCAxLCAyMTksIDM0LCAxNzIsIDEsIDIzNiwgMTM2LCAxNzIsIDEsIDI0OCwgMjMsIDE3MiwgMSwgCi0gICAgMjE4LCA2OSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjI0LCAxNTUsIDE3MiwgMSwgMjIzLCAyNDYsIDE3MiwgMSwgMjI1LCAKLSAgICAyMCwgMTcyLCAxLCAyMjQsIDgyLCAxNzIsIDEsIDUsIDE5OCwgMTcyLCAxLCAxOTgsIDE3MiwgMSwgNSwgMjAyLCAyMTMsIAotICAgIDE3MiwgMSwgMjAyLCAyMTMsIDE3MiwgMSwgNSwgMjAyLCAyNDcsIDE3MiwgMSwgMjAyLCAyNDcsIDE3MiwgMSwgMjE2LCAKLSAgICAyMjAsIDE3MiwgMSwgMjE2LCA1NywgMTcyLCAxLCAyMTUsIDE0NSwgMTcyLCAxLCAyMTYsIDE1OCwgMTcyLCAxLCAyMTUsIAotICAgIDIyNywgMTcyLCAxLCA1LCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDMwLCAxNzIsIDEsIDIwNCwgCi0gICAgNjIsIDE3MiwgMSwgMjA0LCAwLCAxNzIsIDEsIDIyMywgMTYzLCAxNzIsIDEsIDIwNCwgMTYzLCAxNzIsIDEsIDUsIDE3MywgCi0gICAgMTcyLCAxLCA1LCAyMjksIDIwMSwgMzksIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAzOSwgMjI5LCAyMjUsIAotICAgIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAyMjksIDIyNSwgMjEzLCAKLSAgICAxNDgsIDIxMSwgMjQxLCA4MiwgMTcyLCAyMzAsIDE5OSwgODIsIDE3MiwgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgMTcyLCAKLSAgICAyNDMsIDE5MiwgMjAyLCAyMjgsIDIyOSwgMjI1LCA1MiwgMjM1LCAyMjAsIDY3LCAxLCA1LCA2MywgNjcsIDEsIDYzLCA2NywgCi0gICAgMSwgNSwgNzUsIDY3LCAxLCA3NSwgNjcsIDEsIDUsIDY4LCA2NywgMSwgNjgsIDY3LCAxLCA1LCA3NCwgNjcsIDEsIDc0LCAKLSAgICA2NywgMSwgNSwgNzgsIDY3LCAxLCA3OCwgNjcsIDEsIDE3MywgNjcsIDEsIDIzOSwgOCwgNjcsIDEsIDIyOSwgMTAwLCA2NywgCi0gICAgMSwgMjM4LCA4MSwgNjcsIDEsIDIyOCwgMjA5LCA2NywgMSwgMjM3LCAyMzAsIDY3LCAxLCAyMjksIDIwMSwgNjcsIDEsIAotICAgIDIzOCwgMTkwLCA2NywgMSwgMjI5LCAyNiwgNjcsIDEsIDIzOCwgMzksIDY3LCAxLCAyMTUsIDM2LCA2NywgMSwgMjAyLCAKLSAgICAxMTYsIDY3LCAxLCAyMTIsIDE2MiwgNjcsIDEsIDIwMiwgMzksIDY3LCAxLCAyMTEsIDEwLCA2NywgMSwgMjAyLCA2LCA2NywgCi0gICAgMSwgMjE0LCAxNzcsIDY3LCAxLCAyMDIsIDkyLCA2NywgMSwgMjEyLCAxMywgNjcsIDEsIDIwMiwgMTcsIDY3LCAxLCAyMTAsIAotICAgIDIyLCA2NywgMSwgMjQ0LCAyMTIsIDY3LCAxLCAyMDksIDIsIDY3LCAxLCAyNDMsIDIzMywgNjcsIDEsIDUsIDIwNywgMjAzLCAKLSAgICA2NywgMSwgMjA3LCAyMDMsIDY3LCAxLCAyNDIsIDQyLCA2NywgMSwgMjA5LCAxODcsIDY3LCAxLCAyNDQsIDc1LCA2NywgMSwgCi0gICAgMTM1LCA2NywgMSwgMjQzLCAxMTMsIDY3LCAxLCAyMDEsIDIwMSwgNjcsIDEsIDIyMiwgMTAwLCA2NywgMSwgMjIxLCA4NCwgCi0gICAgNjcsIDEsIDIyMiwgMjQwLCA2NywgMSwgMjIxLCAxOTEsIDY3LCAxLCAxNTIsIDY3LCAxLCAyNDksIDMyLCA2NywgMSwgMTg1LCAKLSAgICA2NywgMSwgMjM3LCAzLCA2NywgMSwgMjQ4LCA4NiwgNjcsIDEsIDIxOCwgMTY3LCA2NywgMSwgMjM2LCAyNiwgNjcsIDEsIAotICAgIDI0NywgMTkzLCA2NywgMSwgMjE3LCAxOTEsIDY3LCAxLCAyMzcsIDY3LCA2NywgMSwgMjQ4LCAxNjIsIDY3LCAxLCAyMTksIAotICAgIDM0LCA2NywgMSwgMjM2LCAxMzYsIDY3LCAxLCAyNDgsIDIzLCA2NywgMSwgMjE4LCA2OSwgNjcsIDEsIDE5MiwgNjcsIDEsIAotICAgIDIyNCwgMTU1LCA2NywgMSwgMjIzLCAyNDYsIDY3LCAxLCAyMjUsIDIwLCA2NywgMSwgMjI0LCA4MiwgNjcsIDEsIDUsIDE5OCwgCi0gICAgNjcsIDEsIDE5OCwgNjcsIDEsIDUsIDIwMiwgMjEzLCA2NywgMSwgMjAyLCAyMTMsIDY3LCAxLCA1LCAyMDIsIDI0NywgNjcsIAotICAgIDEsIDIwMiwgMjQ3LCA2NywgMSwgMjE2LCAyMjAsIDY3LCAxLCAyMTYsIDU3LCA2NywgMSwgMjE1LCAxNDUsIDY3LCAxLCAKLSAgICAyMTYsIDE1OCwgNjcsIDEsIDIxNSwgMjI3LCA2NywgMSwgNSwgMjA0LCAxMTEsIDY3LCAxLCAyMDQsIDExMSwgNjcsIDEsIAotICAgIDIwNCwgMzAsIDY3LCAxLCAyMDQsIDYyLCA2NywgMSwgMjA0LCAwLCA2NywgMSwgMjIzLCAxNjMsIDY3LCAxLCAyMDQsIDE2MywgCi0gICAgNjcsIDEsIDUsIDE3MywgNjcsIDEsIDUsIDIyOSwgMjAxLCA2NywgMSwgMjA2LCA4NiwgNjcsIDEsIDIwNSwgMjMwLCA2NywgCi0gICAgMSwgMjA2LCA1NSwgNjcsIDEsIDIwNSwgMTg5LCA2NywgMTAxLCAyNDMsIDg1LCAyMjksIDIyNSwgMjE3LCAyMTUsIDIxMSwgCi0gICAgMjQxLCA4MiwgNjcsIDIzMCwgMTk5LCA4MiwgNjcsIDIwNSwgMTg2LCAyMzAsIDE5OSwgODIsIDY3LCAyNDMsIDE5MiwgMjI4LCAKLSAgICAyNDksIDI0OCwgMSwgMSwgMjQ5LCAyNTUsIDI0OCwgMSwgMSwgMjE5LCAxODQsIDI0OCwgMSwgMSwgMjI2LCAxODUsIDI0OCwgCi0gICAgMSwgMSwgMjQwLCAxNzQsIDI0OCwgMSwgMSwgMjQ1LCA1MSwgMjQ4LCAxLCAxLCAyMTAsIDY5LCAyNDgsIDEsIDEsIDIyMywgCi0gICAgMTYzLCAyNDgsIDEsIDEsIDE1OSwgMjQ4LCAxLCAxLCAyMzksIDc1LCAyNDgsIDEsIDEsIDIzMCwgNTQsIDI0OCwgMSwgMSwgCi0gICAgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjMwLCAxODQsIDI0OCwgMSwgMSwgMjE3LCAxMzQsIDI0OCwgMSwgMSwgMjAzLCAxOTYsIAotICAgIDI0OCwgMSwgMSwgMjAyLCA4MSwgMjQ4LCAxLCAxLCAyNDYsIDIwMCwgMjQ4LCAxLCAxLCAyMTMsIDkyLCAyNDgsIDEsIDEsIAotICAgIDE0NiwgMjQ4LCAxLCAxLCAyMDIsIDE1OSwgMjQ4LCAxLCAxLCAyNDcsIDEyNSwgMjQ4LCAxLCAxLCAxOTQsIDI0OCwgMSwgMSwgCi0gICAgNjMsIDI0OCwgMSwgMSwgNzgsIDI0OCwgMSwgMSwgNzQsIDI0OCwgMSwgMSwgMjQxLCAxNDcsIDI0OCwgMSwgMSwgMjUxLCAKLSAgICA2NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NSwgMjQ4LCAxLCAxLCAyNTAsIDM0LCAyNDgsIDEsIDEsIDIxOSwgMjE2LCAyNDgsIDEsIAotICAgIDEsIDI1MCwgMjMxLCAyNDgsIDEsIDEsIDI0MSwgOTIsIDI0OCwgMSwgMSwgMjUwLCAyMjMsIDI0OCwgMSwgMSwgMjQxLCA3OCwgCi0gICAgMjQ4LCAxLCAxLCAyNDEsIDI4LCAyNDgsIDEsIDEsIDc1LCAyNDgsIDEsIDEsIDY4LCAyNDgsIDEsIDEsIDIzMCwgMTk3LCAKLSAgICAyNDgsIDEsIDEsIDIwNiwgMTY0LCAyNDgsIDEsIDEsIDIyMiwgMjA1LCAyNDgsIDEsIDEsIDIzOCwgNDMsIDI0OCwgMSwgMSwgCi0gICAgMjMxLCA4NCwgMjgsIDEsIDIyOSwgNTksIDI4LCAxLCAyMTEsIDE1NiwgMjgsIDEsIDIyOSwgNTIsIDI4LCAxLCAyMjIsIDkzLCAKLSAgICAyOCwgMSwgMjIyLCA5MSwgMjgsIDEsIDIyMiwgOTAsIDI4LCAxLCAyMDgsIDI0MCwgMjgsIDEsIDIxMSwgMTQ1LCAyOCwgMSwgCi0gICAgMjE2LCA0NywgMjgsIDEsIDIxNiwgNDIsIDI4LCAxLCAyMTYsIDM5LCAyOCwgMSwgMjE2LCAzMiwgMjgsIDEsIDIxNiwgMjcsIAotICAgIDI4LCAxLCAyMTYsIDIyLCAyOCwgMSwgMjE2LCAzMywgMjgsIDEsIDIxNiwgNDUsIDI4LCAxLCAyMjQsIDE0MSwgMjgsIDEsIAotICAgIDIxOCwgMTUzLCAyOCwgMSwgMjExLCAxNTMsIDI4LCAxLCAyMTgsIDE0MiwgMjgsIDEsIDIxMiwgMTExLCAyOCwgMSwgMjExLCAKLSAgICAxNTAsIDI4LCAxLCAyMzEsIDEwNiwgMjgsIDEsIDI0NiwgNzQsIDI4LCAxLCAyMTEsIDE2MCwgMjgsIDEsIDI0NiwgMTM4LCAKLSAgICAyOCwgMSwgMjI5LCAxMjAsIDI4LCAxLCAyMDksIDY2LCAyOCwgMSwgMjE4LCAxOTAsIDI4LCAxLCAyMzYsIDI1MSwgMjgsIDEsIAotICAgIDYzLCAyOCwgMSwgMjUxLCAxMDksIDI4LCAxLCAxOTgsIDI4LCAxLCAyMDMsIDk5LCAyOCwgMSwgMjQxLCA1NSwgMjgsIDEsIAotICAgIDc0LCAyOCwgMSwgMjAzLCAzOSwgMjgsIDEsIDIwMywgNTIsIDI4LCAxLCA3OCwgMjgsIDEsIDIwNCwgMTExLCAyOCwgMSwgCi0gICAgMjA0LCAxMDcsIDI4LCAxLCAyMjAsIDczLCAyOCwgMSwgMjAyLCAyNDcsIDI4LCAxLCA2OCwgMjgsIDEsIDIwNCwgNDgsIDI4LCAKLSAgICAxLCAyMDQsIDYyLCAyOCwgMSwgMjA0LCAzMCwgMjgsIDEsIDIwMiwgMjEzLCAyOCwgMSwgMjQwLCAyMzgsIDI4LCAxLCAyMDMsIAotICAgIDExLCAyOCwgMSwgNzUsIDI4LCAyNDAsIDcsIDI4LCAxLCAyMTEsIDE1NCwgMjgsIDEsIDIyMiwgODMsIDI4LCAxLCAyMjIsIAotICAgIDg1LCAyOCwgMSwgMjIyLCA4OCwgMjgsIDEsIDIxNiwgNDAsIDI4LCAxLCAyMTYsIDIxLCAyOCwgMSwgMjE2LCAyOSwgMjgsIAotICAgIDEsIDIxNiwgMzQsIDI4LCAxLCAyMTYsIDE5LCAyOCwgMSwgMjI0LCAxMzQsIDI4LCAxLCAyMjQsIDEzMSwgMjgsIDEsIDIyNCwgCi0gICAgMTM1LCAyOCwgMSwgMjI5LCAyNDYsIDI4LCAxLCAyMTgsIDE0OCwgMjgsIDEsIDIxOCwgMTM0LCAyOCwgMSwgMjE4LCAxNDAsIAotICAgIDI4LCAxLCAyMTgsIDEzNywgMjgsIDEsIDIxOCwgMTUxLCAyOCwgMSwgMjE4LCAxMzUsIDI4LCAxLCAyMjksIDI0NCwgMjgsIAotICAgIDEsIDIyOSwgMjQyLCAyOCwgMSwgMjEyLCAxMDQsIDI4LCAxLCAyMTIsIDEwMiwgMjgsIDEsIDIxMiwgOTQsIDI4LCAxLCAKLSAgICAyMTIsIDk5LCAyOCwgMSwgMjEyLCAxMDksIDI4LCAxLCAyMTksIDEwNywgMjgsIDEsIDIxMSwgMTU3LCAyOCwgMSwgMjAzLCAKLSAgICAyOSwgMjgsIDEsIDIwMywgMjUsIDI4LCAxLCAyMDMsIDI2LCAyOCwgMSwgMjI5LCAyNDUsIDI4LCAxLCAyMTEsIDE1OCwgMjgsIAotICAgIDEsIDIwMywgMzUsIDI4LCAxLCAyMDIsIDI0MSwgMjgsIDEsIDIwMiwgMjQwLCAyOCwgMSwgMjAyLCAyNDMsIDI4LCAxLCAKLSAgICAyMDIsIDIwNCwgMjgsIDEsIDIwMiwgMjA1LCAyOCwgMSwgMjAyLCAyMDgsIDI4LCAxLCAyNTAsIDEzNywgMjgsIDEsIDI1MCwgCi0gICAgMTMxLCAxMzksIDI1MCwgMjA1LCAyMjcsIDEwMywgODIsIDEzOSwgMjUwLCAyMDUsIDIxNiwgNzQsIDgyLCAxMzksIDI1MCwgCi0gICAgMjA1LCAxMTgsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjAsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjYsIDgyLCAxMzksIDI1MCwgCi0gICAgMjA1LCAyMzksIDE0NywgODIsIDEzOSwgMjUwLCAyMDUsIDIwOCwgMTQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgMTAxLCA4MiwgCi0gICAgMTM5LCAyNTAsIDIwNSwgMjQ3LCAyNDgsIDgyLCAxMzksIDI1MCwgMjA1LCAyMzksIDI0NSwgODIsIDEzOSwgMjUwLCAyMDUsIAotICAgIDIxNCwgMTcxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA5LCA2MSwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMTQwLCA4MiwgCi0gICAgMTM5LCAyNTAsIDIwNSwgMjM3LCA1MiwgODIsIDEzOSwgMjUwLCAyMDUsIDI0MSwgMTgwLCA4MiwgMTM5LCAyNTAsIDIwNSwgCi0gICAgMjI1LCAxMjMsIDgyLCAyNDgsIDEsIDEsIDI0NywgMTkzLCAyNDgsIDEsIDEsIDIwMiwgMzksIDI0OCwgMSwgMSwgMjMwLCAKLSAgICAxNDEsIDI0OCwgMSwgMSwgMjM3LCAyMzAsIDI0OCwgMSwgMSwgMjQxLCAxNjEsIDI0OCwgMSwgMSwgMjQxLCA3NSwgMjQ4LCAKLSAgICAxLCAxLCAyMjAsIDE4LCAyNDgsIDEsIDEsIDIyMCwgMjIsIDI0OCwgMSwgMSwgMjMwLCAyMjQsIDI0OCwgMSwgMSwgMjUwLCAKLSAgICAyMDcsIDI0OCwgMSwgMSwgMjMxLCAxNiwgMjQ4LCAxLCAxLCAyMDYsIDIyOSwgMjQ4LCAxLCAxLCAyMzEsIDY2LCAyNDgsIDEsIAotICAgIDEsIDIyMiwgMTgzLCAyNDgsIDEsIDEsIDI1MSwgNTgsIDI0OCwgMSwgMSwgMjUwLCAyOSwgMjQ4LCAxLCAxLCAyNTAsIDI0NywgCi0gICAgMjQ4LCAxLCAxLCAyMjAsIDM5LCAyNDgsIDEsIDEsIDIyMCwgMjQsIDI0OCwgMSwgMSwgMjMxLCAxMywgMjQ4LCAxLCA0NiwgCi0gICAgMSwgMjE5LCAxODQsIDI0OCwgMSwgNDYsIDEsIDIxMCwgNjksIDI0OCwgMSwgNDYsIDEsIDIzMCwgNTQsIDI0OCwgMSwgNDYsIAotICAgIDEsIDIzNywgMTcxLCAyNDgsIDEsIDEsIDIzOCwgMTIwLCAyNDgsIDEsIDEsIDIyNywgMTYyLCAyNDgsIDEsIDEsIDIwMSwgCi0gICAgMjQyLCAxMiwgMjExLCAzMiwgMjEwLCA2OSwgMTIsIDIxMSwgMzIsIDIwNCwgNDEsIDEyLCAyMTEsIDMyLCAyMDMsIDE3MSwgCi0gICAgMTIsIDIxMSwgMzIsIDI0NywgMTM4LCAxMiwgMjExLCAzMiwgMjEwLCAxNzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMCwgMTIsIAotICAgIDIxMSwgMzIsIDIzNSwgMjE0LCAxMiwgMjExLCAzMiwgMjM2LCAzNSwgMTIsIDIxMSwgMzIsIDIzNSwgMjExLCAxMiwgMjExLCAKLSAgICAzMiwgMjEwLCA3MiwgMTIsIDIxMSwgMzIsIDIzNSwgMjEzLCAxMiwgMjExLCAzMiwgMjM1LCAyMDksIDEyLCAyMTEsIDMyLCAKLSAgICAyMzYsIDMzLCAxMiwgMjExLCAzMiwgMjM1LCAyMTIsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOCwgMTIsIDIxMSwgMzIsIDIyMywgCi0gICAgMTYzLCAxMiwgMjExLCAzMiwgMjM3LCAxNzEsIDEyLCAyMTEsIDMyLCAxOTQsIDEyLCAyMTEsIDMyLCAyMTksIDE4NCwgMTIsIAotICAgIDIxMSwgMzIsIDIxMSwgMjMxLCAxMiwgMjExLCAzMiwgMjQ1LCA1MSwgMTIsIDIxMSwgMzIsIDIzNSwgMjE1LCAxMiwgMjExLCAKLSAgICAzMiwgMjM3LCAxMywgMTIsIDIxMSwgMzIsIDIxMCwgODEsIDEyLCAyMTEsIDMyLCAyMTAsIDE1MiwgMTIsIDIxMSwgMzIsIAotICAgIDIxMSwgMTA4LCAxMiwgMjExLCAzMiwgMjEzLCA5OCwgMTIsIDIxMSwgMzIsIDIxOSwgMzgsIDEyLCAyMTEsIDMyLCAyMTcsIAotICAgIDEzNiwgMTIsIDIxMSwgMzIsIDIwOCwgMTc0LCAxMiwgMjExLCAzMiwgMjEwLCA3MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTYzLCAKLSAgICAxMiwgMjExLCAzMiwgMjM1LCAyMjMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwNywgMTIsIDIxMSwgMzIsIDIxOCwgMjEwLCAxMiwgCi0gICAgMjExLCAzMiwgMjE3LCAxMzQsIDY3LCAxLCA1LCAyMjgsIDIwOSwgNjcsIDEsIDUsIDIxMiwgMTYyLCA2NywgMSwgNSwgMjExLCAKLSAgICAxMCwgNjcsIDEsIDUsIDEzNSwgNjcsIDEsIDUsIDIyMSwgODQsIDY3LCAxLCA1LCAxNTIsIDY3LCAxLCA1LCAyMzcsIDMsIAotICAgIDY3LCAxLCA1LCAyMzYsIDI2LCA2NywgMSwgNSwgMjM3LCA2NywgNjcsIDEsIDUsIDIzNiwgMTM2LCA2NywgMSwgNSwgMjIzLCAKLSAgICAyNDYsIDY3LCAxLCA1LCAyMTYsIDIyMCwgNjcsIDEsIDUsIDIxNiwgNTcsIDY3LCAxLCA1LCAyMTUsIDE0NSwgNjcsIDEsIDUsIAotICAgIDIxNiwgMTU4LCA2NywgMSwgNSwgMjE1LCAyMjcsIDEwMiwgMjgsIDIyOSwgNTksIDEwMiwgMjgsIDIyMiwgOTMsIDEwMiwgCi0gICAgMjgsIDIwOCwgMjQwLCAxMDIsIDI4LCAyMTYsIDQ3LCAxMDIsIDI4LCAyMjQsIDE0MSwgMTAyLCAyOCwgMjE4LCAxNTMsIAotICAgIDEwMiwgMjgsIDIxMiwgMTExLCAxMDIsIDI4LCAyMzEsIDEwNiwgMTAyLCAyOCwgMjQ2LCA3NCwgMTAyLCAyOCwgMjQ2LCAKLSAgICAxMzgsIDEwMiwgMjgsIDIyOSwgMTIwLCAxMDIsIDI4LCAyMDksIDY2LCAxMDIsIDI4LCAyMTgsIDE5MCwgMTAyLCAyOCwgCi0gICAgMjM2LCAyNTEsIDEwMiwgMjgsIDIyOSwgNjAsIDYzLCAxMDIsIDI4LCAyMjIsIDk0LCA2MywgMTAyLCAyOCwgMjA4LCAyNDEsIAotICAgIDYzLCAxMDIsIDI4LCAyMTYsIDQ4LCA2MywgMTAyLCAyOCwgMjI0LCAxNDIsIDYzLCAxMDIsIDI4LCAyMTgsIDE1NCwgNjMsIAotICAgIDEwMiwgMjgsIDIxMiwgMTEyLCA2MywgMTAyLCAyOCwgMjMxLCAxMDcsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2MywgMTAyLCAKLSAgICAyOCwgMjQ2LCAxMzksIDYzLCAxMDIsIDI4LCAyMjksIDEyMSwgNjMsIDEwMiwgMjgsIDIwOSwgNjcsIDYzLCAxMDIsIDI4LCAKLSAgICAyMTgsIDE5MSwgNjMsIDEwMiwgMjgsIDIzNiwgMjUyLCA2MywgMTAyLCAyOCwgMjQ2LCA3NSwgNjgsIDEwMiwgMjI4LCAyNTMsIAotICAgIDE2NywgMjIwLCA1NCwgMTAyLCAyMjgsIDI1MywgMTY3LCAxNTgsIDIzNiwgMjYsIDEwMiwgMTg5LCAxMDUsIDEwMiwgMTg5LCAKLSAgICAxMDgsIDEwMiwgMTg5LCAxNDcsIDEwMiwgMTg5LCAxNDksIDEwMiwgMTg5LCAxNzAsIDEwMiwgMTg5LCAxOTUsIDEwMiwgCi0gICAgMTg5LCAyMTMsIDExMSwgMTAyLCAxODksIDE5OSwgMTAyLCAxODksIDIyMiwgNjMsIDEwMiwgMTg5LCAyMDksIDE1MiwgMTAyLCAKLSAgICAxODksIDIyNCwgMjksIDEwMiwgMTg5LCAyMzksIDI0OSwgMTAyLCAxODksIDIwNCwgODAsIDEwMiwgMTg5LCAyMDMsIDI0MywgCi0gICAgMTAyLCAxODksIDIyNCwgMjIwLCAxMDIsIDE4OSwgMjQxLCAxNzksIDEwMiwgMTg5LCAyMTAsIDIxNCwgMTAyLCAxODksIAotICAgIDIxMSwgNjQsIDEwMiwgMTg5LCAyMzcsIDc0LCAxMDIsIDE4OSwgMjEyLCA5LCAxMDIsIDE4OSwgMjIzLCA4NCwgMTAyLCAKLSAgICAxODksIDIxMSwgMjEzLCAxMDIsIDE4OSwgMjQwLCA0LCAxMDIsIDE4OSwgMjQ1LCAyMTEsIDEwMiwgMTg5LCAyMjgsIDEwMiwgCi0gICAgMTAyLCAxODksIDIxNiwgOTUsIDEwMiwgMTg5LCAyNDcsIDcxLCAxMDIsIDE4OSwgMjExLCAxNCwgMTAyLCAxODksIDIxMCwgCi0gICAgMTk2LCAxMDIsIDE4OSwgMjQxLCA2NSwgMTAyLCAxODksIDIxNiwgODcsIDEwMiwgMTg5LCAyNTEsIDEwLCAxMDIsIDE4OSwgCi0gICAgMjQwLCAzMywgMTAyLCAxODksIDIxNiwgODUsIDEwMiwgMTg5LCAyMTMsIDE0OSwgMTAyLCAxODksIDIxNiwgMTU3LCA0MywgCi0gICAgMTg5LCAyMTcsIDQ2LCA0MywgMTg5LCAyMjksIDgzLCA0MywgMTg5LCAyMTQsIDE5NSwgNDMsIDE4OSwgMjI4LCAyNDksIDQzLCAKLSAgICA0MiwgMjA5LCAxNTMsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMDcsIDE1MiwgMjIwLCAzMiwgNjIsIDIxMSwgCi0gICAgMTc3LCA0MywgNDIsIDIwOSwgNTQsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMzksIDE1NCwgMjIwLCAzMiwgCi0gICAgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDI0MCwgMTksIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTIsIDc1LCAKLSAgICAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjEzLCAxMDYsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAKLSAgICAyNDEsIDEzNSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCAyMTksIDY3LCA1NCwgNDMsIDQyLCAyMDcsIDE1MiwgMTA1LCA0MywgCi0gICAgNDIsIDIwNywgMTUyLCAxMDgsIDQzLCA0MiwgMjA3LCAxNTIsIDE0NywgNDMsIDQyLCAyMDcsIDE1MiwgMTQ5LCA0MywgNDIsIAotICAgIDIwNywgMTUyLCAxNzAsIDQzLCA0MiwgMjA3LCAxNTIsIDE5NSwgNDMsIDQyLCAyMDcsIDE1MiwgMjEzLCAxMTEsIDQzLCA0MiwgCi0gICAgMjA3LCAxNTIsIDE5OSwgNDMsIDQyLCAyMDcsIDE1MiwgMjIyLCA2MywgNDMsIDQyLCAyMDksIDUzLCA0MywgNDIsIDIwOSwgCi0gICAgNTQsIDEwNSwgNDMsIDQyLCAyMDksIDU0LCAxMDgsIDQzLCA0MiwgMjA5LCA1NCwgMTQ3LCA0MywgNDIsIDIwOSwgNTQsIAotICAgIDE0OSwgNDMsIDQyLCAyMDksIDU0LCAxNzAsIDQzLCAyOCwgMjI5LCA1OSwgNDMsIDI4LCAyMjIsIDkzLCA0MywgMjgsIDIwOCwgCi0gICAgMjQwLCA0MywgMjgsIDIxNiwgNDcsIDQzLCAyOCwgMjI0LCAxNDEsIDQzLCAyOCwgMjE4LCAxNTMsIDQzLCAyOCwgMjEyLCAKLSAgICAxMTEsIDQzLCAyOCwgMjMxLCAxMDYsIDQzLCAyOCwgMjQ2LCA3NCwgNDMsIDI4LCAyNDYsIDEzOCwgNDMsIDI4LCAyMjksIAotICAgIDEyMCwgNDMsIDI4LCAyMDksIDY2LCA0MywgMjgsIDIxOCwgMTkwLCA0MywgMjgsIDIzNiwgMjUxLCA0MywgMjgsIDIyOSwgCi0gICAgNjAsIDYzLCA0MywgMjgsIDIyMiwgOTQsIDYzLCA0MywgMjgsIDIwOCwgMjQxLCA2MywgNDMsIDI4LCAyMTYsIDQ4LCA2MywgCi0gICAgNDMsIDI4LCAyMjQsIDE0MiwgNjMsIDQzLCAyOCwgMjE4LCAxNTQsIDYzLCA0MywgMjgsIDIxMiwgMTEyLCA2MywgNDMsIDI4LCAKLSAgICAyMzEsIDEwNywgNjMsIDQzLCAyOCwgMjQ2LCA3NSwgNjMsIDQzLCAyOCwgMjQ2LCAxMzksIDYzLCA0MywgMjgsIDIyOSwgCi0gICAgMTIxLCA2MywgNDMsIDI4LCAyMDksIDY3LCA2MywgNDMsIDI4LCAyMTgsIDE5MSwgNjMsIDQzLCAyOCwgMjM2LCAyNTIsIDYzLCAKLSAgICA0MywgMjI4LCAyNTMsIDE2NywgMjQ2LCAxODksIDQzLCAyMjgsIDI1MywgMTY3LCAyMzAsIDc4LCA0MywgMjgsIDIzMSwgCi0gICAgMTA3LCA2OCwgMjI4LCAyNTMsIDIxMSwgOTcsIDk3LCA0MywgMTg5LCAxMDUsIDQzLCAxODksIDEwOCwgNDMsIDE4OSwgMTQ3LCAKLSAgICA0MywgMTg5LCAxNDksIDQzLCAxODksIDE3MCwgNDMsIDE4OSwgMTk1LCA0MywgMTg5LCAyMTMsIDExMSwgNDMsIDE4OSwgCi0gICAgMTk5LCA0MywgMTg5LCAyMjIsIDYzLCA0MywgMTg5LCAyMDksIDE1MiwgNDMsIDE4OSwgMjI0LCAyOSwgNDMsIDE4OSwgMjM5LCAKLSAgICAyNDksIDQzLCAxODksIDIwNCwgODAsIDQzLCAxODksIDIwMywgMjQzLCA0MywgMTg5LCAyMjQsIDIyMCwgNDMsIDE4OSwgCi0gICAgMjQxLCAxNzksIDQzLCAxODksIDIxMCwgMjE0LCA0MywgMTg5LCAyMTEsIDY0LCA0MywgMTg5LCAyMzcsIDc0LCA0MywgMTg5LCAKLSAgICAyMTIsIDksIDQzLCAxODksIDIyMywgODQsIDQzLCAxODksIDIxMSwgMjEzLCA0MywgMTg5LCAyNDAsIDQsIDQzLCAxODksIAotICAgIDI0NSwgMjExLCA0MywgMTg5LCAyMjgsIDEwMiwgNDMsIDE4OSwgMjE0LCAxNjksIDQzLCAxODksIDIyNSwgMTI2LCA0MywgCi0gICAgMTg5LCAyNDAsIDQyLCA0MywgMTg5LCAyMTAsIDIyNiwgNDMsIDE4OSwgMjQwLCAyMTYsIDQzLCAxODksIDIxNywgMjMzLCAKLSAgICA0MywgMTg5LCAyNTAsIDM4LCA0MywgMTg5LCAyMzAsIDIwMCwgNDMsIDE4OSwgMjE2LCA4NSwgNDMsIDE4OSwgMjQ1LCAxNzAsIAotICAgIDQzLCAxODksIDI0NSwgMTYwLCA0MywgMTg5LCAyMzYsIDI0NCwgNDMsIDE4OSwgMjQ2LCAyMTcsIDQzLCAxODksIDIyNywgMCwgCi0gICAgNDMsIDE4OSwgMjI3LCAyMjIsIDQzLCAxODksIDIxNiwgMTYsIDQzLCAxODksIDIyNSwgMTEsIDQzLCAxODksIDIxNiwgMTEyLCAKLSAgICA0MywgMTg5LCAyMTEsIDE0LCA0MywgMTg5LCAyMTAsIDE5NiwgNDMsIDE4OSwgMjQxLCA2NSwgNDMsIDE4OSwgMjE2LCA4NywgCi0gICAgNDMsIDE4OSwgMjUxLCAxMCwgNDMsIDE4OSwgMjIyLCA3OSwgNDMsIDQyLCAyMDksIDU0LCAxOTUsIDQzLCA0MiwgMjA5LCAKLSAgICA1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjA5LCA1NCwgMTk5LCA0MywgNDIsIDIwOSwgNTQsIDIyMiwgNjMsIDQzLCA0MiwgCi0gICAgMjM5LCAxNTMsIDQzLCA0MiwgMjM5LCAxNTQsIDEwNSwgNDMsIDQyLCAyMzksIDE1NCwgMTA4LCA0MywgNDIsIDIzOSwgMTU0LCAKLSAgICAxNDcsIDQzLCA0MiwgMjM5LCAxNTQsIDE0OSwgNDMsIDQyLCAyMzksIDE1NCwgMTcwLCA0MywgNDIsIDIzOSwgMTU0LCAxOTUsIAotICAgIDQzLCA0MiwgMjM5LCAxNTQsIDIxMywgMTExLCA0MywgNDIsIDIzOSwgMTU0LCAxOTksIDQzLCA0MiwgMjM5LCAxNTQsIDIyMiwgCi0gICAgNjMsIDQzLCA0MiwgMjQwLCAxOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDE3MSwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDAsIDU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyNSwgOTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAKLSAgICAxNTAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDc2LCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAzMCwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMTMsIDEyOSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjAsIDc5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIyMSwgMTUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgNzAsIDUxLCAyMzcsIDEzLCA1MSwgMjQxLCAyNCwgNTEsIAotICAgIDI0MCwgMjI2LCAyMjcsIDEyMCwgMjI3LCAxNDcsIDU0LCA0MywgNjcsIDYzLCA0MywgNjcsIDc1LCA0MywgNjcsIDY4LCA0MywgCi0gICAgNjcsIDc0LCA0MywgNjcsIDc4LCA0MywgNjcsIDE3MywgNDMsIDY3LCAyMjksIDEwMCwgNDMsIDY3LCAyMjgsIDIwOSwgNDMsIAotICAgIDY3LCAyMjksIDIwMSwgNDMsIDY3LCAyMjksIDI2LCA0MywgNjcsIDIxNSwgMzYsIDQzLCA2NywgMjEyLCAxNjIsIDQzLCA2NywgCi0gICAgMjExLCAxMCwgNDMsIDY3LCAyMTQsIDE3NywgNDMsIDY3LCAyMTIsIDEzLCA0MywgNjcsIDIxMCwgMjIsIDQzLCA2NywgMjA5LCAKLSAgICAyLCA0MywgNjcsIDIwNywgMjAzLCA0MywgNjcsIDIwOSwgMTg3LCA0MywgNjcsIDEzNSwgNDMsIDY3LCAyMDEsIDIwMSwgNDMsIAotICAgIDY3LCAyMjIsIDEwMCwgNDMsIDY3LCAyMjEsIDg0LCA0MywgNjcsIDIyMiwgMjQwLCA0MywgNjcsIDIyMSwgMTkxLCA0MywgCi0gICAgNjcsIDE1MiwgNDMsIDY3LCAyMzcsIDMsIDQzLCA2NywgMjM2LCAyNiwgNDMsIDY3LCAyMzcsIDY3LCA0MywgNjcsIDIzNiwgCi0gICAgMTM2LCA0MywgNjcsIDE5MiwgNDMsIDY3LCAyMjQsIDE1NSwgNDMsIDY3LCAyMjMsIDI0NiwgNDMsIDY3LCAyMjUsIDIwLCAKLSAgICA0MywgNjcsIDIyNCwgODIsIDQzLCA2NywgMTk4LCA0MywgNjcsIDIwMiwgMjEzLCA0MywgNjcsIDIwMiwgMjQ3LCA0MywgNjcsIAotICAgIDIxNiwgMjIwLCA0MywgNjcsIDIxNiwgNTcsIDQzLCA2NywgMjE1LCAxNDUsIDQzLCA2NywgMjE2LCAxNTgsIDQzLCA2NywgCi0gICAgMjE1LCAyMjcsIDQzLCA2NywgMjA0LCAxMTEsIDQzLCA2NywgMjA0LCAzMCwgNDMsIDY3LCAyMDQsIDYyLCA0MywgNjcsIAotICAgIDIwNCwgMCwgNTEsIDI1MCwgMTc0LCA1MSwgMjUwLCA4MywgNTEsIDI1MCwgMjAxLCA1MSwgMjUxLCAyMzksIDUxLCAyMzEsIAotICAgIDE4LCA1MSwgMjMwLCAyNDIsIDUxLCAyMDYsIDIyNywgNTEsIDI0MCwgMjUzLCA1MSwgMjQxLCAxNTgsIDUxLCAyMjAsIDIxLCAKLSAgICA1MSwgMjIwLCAxNCwgNTEsIDIzMCwgMTYsIDUxLCAyMjksIDIzOCwgNTEsIDIyOSwgMjM1LCA1MSwgMjM4LCAyMjAsIDUxLCAKLSAgICAyMzgsIDIyOSwgNTEsIDIzOCwgNzAsIDUxLCAyMzgsIDY2LCA1MSwgMjI4LCAxMzIsIDUxLCAyMzgsIDU4LCA1MSwgMjI5LCAKLSAgICA3NSwgNTEsIDIyOSwgNzQsIDUxLCAyMjksIDczLCA1MSwgMjI5LCA3MiwgNTEsIDIzNywgMjAwLCA1MSwgMjM3LCAxOTksIAotICAgIDUxLCAyMjgsIDE4MCwgNTEsIDIyOCwgMTgyLCA1MSwgMjI5LCAxOTQsIDUxLCAyMjgsIDI1MSwgNTEsIDIyOSwgMywgNTEsIAotICAgIDIxNSwgMTcsIDUxLCAyMTQsIDIzNiwgNTEsIDIxMiwgOTIsIDUxLCAyMTMsIDEzNCwgNTEsIDIxMywgMTMzLCA1MSwgMjQ0LCAKLSAgICAyMDksIDUxLCAyNDQsIDE0LCA1MSwgMjQzLCA4NiwgNTEsIDIwOCwgMTYzLCA1MSwgMjIzLCA3OSwgNTEsIDIyMSwgMTU0LCAKLSAgICA1MSwgMjM3LCAxNDIsIDUxLCAyMTksIDE2MywgNTEsIDIxOSwgMTYyLCA1MSwgMjQ5LCAyOSwgNTEsIDIxOCwgMTY0LCA1MSwgCi0gICAgMjE4LCAxMjcsIDUxLCAyMTgsIDEyOCwgNTEsIDI0OCwgNTcsIDUxLCAyMzYsIDI0LCA1MSwgMjM2LCAxOSwgNTEsIDI0NywgCi0gICAgMTUxLCA1MSwgMjM2LCA0LCA1MSwgMjM3LCAzOSwgNTEsIDIxOCwgMjIwLCA1MSwgMjE5LCA0LCA1MSwgMjM3LCAyMiwgNTEsIAotICAgIDIxOSwgMCwgNTEsIDIxOSwgMTgsIDUxLCAyNDgsIDE0NSwgNTEsIDIxOCwgNTgsIDUxLCAyNDcsIDI1MywgNTEsIDIzNiwgCi0gICAgMTIwLCA1MSwgMjE4LCA0NiwgNTEsIDIzNiwgMTExLCA1MSwgMjM2LCAxMTMsIDUxLCAyMjUsIDEzOCwgNTEsIDIyNSwgMTM0LCAKLSAgICA1MSwgMjI1LCAxNDMsIDUxLCAyMjUsIDgzLCA1MSwgMjI1LCAxMTAsIDUxLCAyMjQsIDEyMSwgNTEsIDIyNCwgOTcsIDUxLCAKLSAgICAyMjQsIDk2LCA1MSwgMjI1LCAwLCA1MSwgMjI0LCAyNTMsIDUxLCAyMjUsIDEsIDUxLCAyMDMsIDEwOSwgNTEsIDIwMywgCi0gICAgMTA3LCA1MSwgMjAyLCAyMDIsIDUxLCAyMTUsIDI0MywgNTEsIDIxNSwgMjQ3LCA1MSwgMjE1LCAxMTksIDUxLCAyMTUsIAotICAgIDExMywgNTEsIDIxNiwgMTA5LCA1MSwgMjE2LCAxMDYsIDUxLCAyMDQsIDc4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgCi0gICAgNDMsIDIwMiwgODQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE3MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjM2LCA0MywgMTk5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIyMiwgNjMsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxMTIsIAotICAgIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgCi0gICAgMjA5LCA1NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMzksIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxNDAsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIAotICAgIDE1MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NywgNTEsIDIzNiwgMzQsIDUxLCAyNDQsIDIxMiwgNTEsIDI1MCwgMzQsIAotICAgIDUxLCAxNDIsIDUxLCAyMTksIDIwNiwgNTEsIDIxOSwgMzksIDUxLCAyNDMsIDExNSwgNTEsIDI0MywgMTE2LCAyMTEsIDE3NiwgCi0gICAgNTEsIDI0MywgMTE2LCAyNDUsIDEwNSwgNTEsIDIzMCwgMTk3LCA1MSwgMjQxLCAyNywgMjIzLCA4NSwgMjM3LCA0MCwgNTEsIAotICAgIDI0MSwgMjcsIDIyMywgODUsIDIxMCwgOTIsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMDksIDI0NSwgNTEsIDI0MSwgMjcsIAotICAgIDIyMywgODUsIDIyNCwgMjUyLCA1MSwgMjQ1LCAxNjIsIDUxLCAyMTksIDE2OSwgMjUwLCAyMzMsIDUxLCAyMDEsIDIwMSwgCi0gICAgNTEsIDIyMywgMjQ3LCA2MywgNTEsIDE5MiwgNTEsIDE3MywgNTEsIDIyOSwgMjA0LCA1MSwgMjI1LCA1OSwgNTEsIDIzOCwgCi0gICAgMjA4LCA1MSwgMjQ3LCA3NiwgNTEsIDIyOSwgMjAzLCA1MSwgMjE4LCAyMTEsIDUxLCAyMjIsIDIwNywgNTEsIDIyMywgMjQ3LCAKLSAgICAyNDAsIDE3NCwgNTEsIDIyMywgMjQ3LCAyMzksIDc1LCA1MSwgMjI0LCAxOTYsIDUxLCAyMjksIDE0NiwgNTEsIDIzNSwgCi0gICAgMjE1LCA1MSwgMjI5LCAxMDIsIDUxLCAyMjQsIDE1NywgNTEsIDIzOCwgODMsIDUxLCAyMDksIDQsIDUxLCAyMjMsIDI0NywgCi0gICAgMTU5LCA1MSwgMjI0LCA5MCwgNTEsIDI0MywgMTI1LCA1MSwgMjI5LCA0MSwgNTEsIDIzOSwgMTg4LCA1MSwgMjIxLCAyMjksIAotICAgIDUxLCAyMjMsIDI0NywgMjI2LCAxODUsIDUxLCAyMjQsIDg3LCA1MSwgMjQ1LCAyNTUsIDUxLCAyMjksIDM1LCA1MSwgMjI0LCAKLSAgICA4OCwgMjExLCAxNzYsIDUxLCAyNDYsIDAsIDIxMSwgMTc2LCA1MSwgMjI2LCAxODYsIDIxMSwgMTc2LCA1MSwgMjI5LCAzNiwgCi0gICAgMjExLCAxNzYsIDUxLCAyMjQsIDg4LCAyNDUsIDEwNSwgNTEsIDI0NiwgMCwgMjQ1LCAxMDUsIDUxLCAyMjYsIDE4NiwgMjQ1LCAKLSAgICAxMDUsIDUxLCAyMjksIDM2LCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAxMTUsIDE5NCwgNTEsIDIyNiwgMTg2LCAxMTUsIAotICAgIDIxNSwgOTQsIDIxMSwgMTc2LCA1MSwgMTg1LCA1MSwgMjI4LCAyNDQsIDUxLCAyMjMsIDI1MCwgNTEsIDIzOCwgMTUsIDUxLCAKLSAgICAyMTYsIDIwNywgNTEsIDIxNiwgMjA4LCAxMTUsIDE5NCwgNTEsIDIxNiwgMjA4LCAxMTUsIDIxNSwgOTQsIDIxMSwgMTc2LCAKLSAgICA1MSwgMjE3LCAyMDQsIDUxLCAyMjEsIDEyMiwgNTEsIDIyMywgMjQ3LCAxOTQsIDUxLCAyMjMsIDI0OCwgNTEsIDIxNywgCi0gICAgMTU0LCA1MSwgMjIxLCAyMiwgNTEsIDIyMywgMjQ3LCAyMDYsIDE2NCwgNTEsIDIyMywgMTg3LCA1MSwgMjI4LCAxNzAsIDUxLCAKLSAgICAyMjMsIDE4OCwgMjI1LCAwLCA1MSwgMjE3LCAxNTMsIDUxLCAyMjEsIDIxLCA1MSwgMjIzLCAyNDcsIDIwNCwgMTQ0LCA1MSwgCi0gICAgMjIzLCAxODEsIDUxLCAyMjgsIDE2OCwgNTEsIDIyMywgMTgyLCAyMjUsIDAsIDUxLCAyMzAsIDU1LCAyMjAsIDU4LCA1MSwgCi0gICAgMjI2LCAxODYsIDIyMCwgNTgsIDUxLCAyNTAsIDI0NywgNTEsIDI0NywgMjI5LCA1MSwgMjQ3LCA2LCA1MSwgMjQ2LCAyMzksIAotICAgIDUxLCAyNDcsIDEyNiwgMTE1LCAyMjksIDE0NiwgNTEsIDI0NSwgMjU0LCA1MSwgMjQ0LCAxMjksIDUxLCAyMzcsIDE4NCwgCi0gICAgNTEsIDE1MiwgNTEsIDIzNiwgMzUsIDUxLCAyMzEsIDQ5LCA1MSwgMjI5LCA0OCwgNTEsIDIyOSwgMzYsIDI0NywgNDcsIDUxLCAKLSAgICAyMjgsIDIxMSwgNTEsIDIyNywgNTIsIDUxLCAyMjcsIDUxLCA1MSwgMjI3LCAzOCwgNTEsIDIyNiwgMjAwLCA1MSwgMjI1LCAKLSAgICA2MCwgMjEyLCAzNiwgNTEsIDIyNCwgMTIwLCA1MSwgMjI0LCA1NiwgNTEsIDIxOCwgMjA5LCA1MSwgMjE4LCA3MiwgNTEsIAotICAgIDIxOCwgMTEsIDUxLCAyMTgsIDksIDUxLCAyMTEsIDE2OCwgNTEsIDIxMCwgMTc3LCA1MSwgMjA0LCA2NCwgNTEsIDIwNiwgCi0gICAgMTY1LCAxMTUsIDIyNiwgMTg1LCA1MSwgMzQsIDExNSwgMjI2LCAxODUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzMsIDEwNSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE0OSwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDQsIDEzMywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMywgMTExLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTksIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAotICAgIDIwOSwgMTUyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDExMiwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDQsIDEzMywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTUsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAKLSAgICAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMTIsIDgyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjQxLCAxNDAsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgCi0gICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMjA3LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKLSAgICAxNDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMDcsIDE0NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNTAsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ2LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIAotICAgIDUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIDUyLCA1MSwgMjM4LCAyNDYsIDIzNywgMTYsIDM1LCAKLSAgICAyMDksIDkzLCAyNDUsIDE0MiwgMjM3LCA1MSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIxNiwgMTUxLCAyNDEsIDE3OSwgCi0gICAgMjM3LCAxNiwgMzUsIDI0MywgMjAzLCAyNTAsIDUwLCAyMDksIDkzLCAyNDgsIDE0MCwgMjM3LCAxNiwgMzUsIDIwMiwgMjI2LCAKLSAgICAyMzksIDE4MCwgMjM3LCAxNiwgMzUsIDIwNCwgMTAzLCAyMzcsIDE2LCAzNSwgMjQ1LCAyMTQsIDIzNywgMTYsIDM1LCAyMDksIAotICAgIDkzLCAyNTAsIDEwNSwgMjM3LCAxNiwgMzUsIDIzNiwgMTI3LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIDUsIDIwOSwgMjMxLCAKLSAgICAyMzcsIDE2LCAzNSwgMjA4LCA5NywgMjM3LCAxNiwgMzUsIDIxOSwgMzIsIDIzNywgMTYsIDM1LCAyMTEsIDk2LCAyMzcsIAotICAgIDE2LCAzNSwgMjQwLCA0NCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDMyLCAyMzcsIDE2LCAzNSwgMjI0LCA3NSwgCi0gICAgMjM3LCAxNiwgMzUsIDI0MSwgNjQsIDIzNywgMTYsIDM1LCAyMzksIDE4MSwgMjM3LCAxNiwgMzUsIDIwMywgMjM2LCAyMjAsIAotICAgIDMyLCAyMDksIDkzLCAyNDQsIDcxLCAyMzcsIDE2LCAzNSwgMjUwLCAxNTQsIDIzNywgMTYsIDM1LCAyNDUsIDE5MywgMjM3LCAKLSAgICAxNiwgMzUsIDI0OCwgNDksIDIwOSwgMjQsIDIzNywgMTYsIDM1LCAyMzgsIDEzLCAyMzcsIDE2LCAzNSwgMjExLCAxOTIsIAotICAgIDI1MCwgMTczLCAyMzcsIDE2LCAzNSwgMjE2LCA3NywgMjM3LCAxNiwgMzUsIDIzMSwgMTIsIDIzNywgMTYsIDM1LCAyMzcsIAotICAgIDI0OSwgMjA5LCAyMzEsIDIzNywgMTYsIDM1LCAyMjQsIDgsIDI0NSwgMTY0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxNywgCi0gICAgMjQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjUxLCAxNDMsIDIwNCwgODAsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDYsIAotICAgIDI0LCAyMzksIDI0OSwgMjM3LCAxNiwgMzUsIDIzMSwgMjYsIDIzNywgMTYsIDM1LCAyNDIsIDIwLCAyMzcsIDE2LCAzNSwgCi0gICAgMjE2LCA4MCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDE2LCAyMzcsIDE2LCAzNSwgMjE3LCAyMjEsIDIzNywgMTYsIAotICAgIDM1LCAyNDQsIDE0OSwgNzYsIDIwOSwgOTMsIDIyNywgMTM0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQwLCA4MiwgMjM3LCAKLSAgICAxNiwgMzUsIDIxOSwgMjUwLCAyMzcsIDE2LCAzNSwgMjIwLCA4NSwgMjM3LCAxNiwgMzUsIDI0NCwgNDIsIDIzNywgMTYsIAotICAgIDM1LCAyNDQsIDYzLCAyMzcsIDE2LCAzNSwgMjMxLCA0MCwgMjM3LCAxNiwgMzUsIDI0NywgMjE3LCAyMzcsIDE2LCAzNSwgCi0gICAgMjQ1LCAyMzUsIDIwOCwgMTczLCAyMjUsIDMsIDIzNywgMTYsIDM1LCAyMzgsIDIxNSwgMjA4LCAxNjksIDIzNywgMTYsIDM1LCAKLSAgICAyMTcsIDE2MywgMjA2LCAyMTMsIDIzNywgMTYsIDM1LCAyMTksIDI0OSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIwNCwgNTAsIAotICAgIDIzNywgMTYsIDM1LCAyMTYsIDY4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQ3LCAxMiwgMjM3LCAxNiwgMzUsIDIwOSwgCi0gICAgOTMsIDI1MCwgMTAxLCAyMDksIDE4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjI5LCAxOTUsIDIxMSwgNjgsIDIyNCwgMTIsIAotICAgIDIzNywgMTYsIDM1LCAyNDQsIDksIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjUsIDg1LCAyMjUsIDEzOSwgMjM3LCAxNiwgCi0gICAgMzUsIDI1MSwgMTQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA5NiwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIzOCwgCi0gICAgMTczLCAyMDQsIDE2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjMwLCA4NCwgMjI4LCAzMywgMjM3LCAxNiwgMzUsIDI0MywgCi0gICAgMTUzLCAyMzcsIDE2LCAzNSwgMjI3LCAxMjEsIDIzNywgMTYsIDM1LCAyMzEsIDE1LCAyMDgsIDI0LCAyMzcsIDE2LCAzNSwgCi0gICAgNSwgMjE3LCAyNDQsIDIzNywgMTYsIDM1LCAyNTEsIDgyLCAyNDUsIDIyNiwgMjM3LCAxNiwgMzUsIDI0OCwgMTQzLCAyNDUsIAotICAgIDIyNiwgMTEsIDQsIDIzMCwgMjAxLCAxMSwgNCwgMjMwLCAxOTMsIDExLCA0LCA3NSwgMTEsIDQsIDIzMCwgMjI3LCAxMSwgNCwgCi0gICAgMjMxLCAxMDgsIDExLCA0LCAyMzEsIDkxLCAxMSwgNCwgMjMxLCAxMTAsIDExLCA0LCAyMzEsIDEwOSwgMTEsIDQsIDI1MCwgCi0gICAgNDksIDExLCA0LCAyNTAsIDEwLCAxMSwgNCwgNjMsIDExLCA0LCAyNTAsIDE3NSwgMTEsIDQsIDIwNiwgMjI1LCAxMSwgNCwgCi0gICAgMjA2LCAyMjgsIDExLCA0LCAyMDYsIDIyNiwgMTEsIDQsIDIxOSwgMjI0LCAxMSwgNCwgMjE5LCAxOTMsIDExLCA0LCA3OCwgCi0gICAgMTEsIDQsIDIyMCwgOSwgMTEsIDQsIDI0MCwgMjE3LCAxMSwgNCwgNzQsIDExLCA0LCAyMDMsIDIxNywgMTEsIDQsIDI0OCwgCi0gICAgNTEsIDExLCA0LCAyNDgsIDQ3LCAxMSwgNCwgMjQ4LCA4NiwgMTEsIDQsIDI0OCwgNjEsIDExLCA0LCAyNDgsIDc1LCAxMSwgCi0gICAgNCwgMjQ4LCA3NCwgMTEsIDQsIDI0OCwgNzcsIDExLCA0LCAyNDgsIDc2LCAxMSwgNCwgMjQ4LCAyMDksIDExLCA0LCAyNDgsIAotICAgIDIwMSwgMTEsIDQsIDI0OSwgMzIsIDExLCA0LCAyNDgsIDIzMiwgMTEsIDQsIDI0NywgMTYzLCAxMSwgNCwgMjQ3LCAxNjcsIAotICAgIDExLCA0LCAyNDcsIDE2NCwgMTEsIDQsIDI0NywgMjUyLCAxMSwgNCwgMjQ3LCAyMzMsIDExLCA0LCAyNDgsIDIzLCAxMSwgNCwgCi0gICAgMjQ4LCAyLCAxMSwgNCwgMjQ4LCAxMDEsIDExLCA0LCAyNDgsIDE2MiwgMTEsIDQsIDI0OCwgMTEzLCAxMSwgNCwgMjQ3LCAKLSAgICAxNDcsIDExLCA0LCAyNDcsIDE0MywgMTEsIDQsIDI0NywgMTkzLCAxMSwgNCwgMjQ3LCAxNjIsIDExLCA0LCAyNDcsIDE1NSwgCi0gICAgMTEsIDQsIDI0NywgMTYwLCAxMSwgNCwgMjQ3LCAxMzEsIDExLCA0LCAyNDcsIDEyOSwgMTEsIDQsIDI0NywgMTM2LCAxMSwgCi0gICAgNCwgMjQ3LCAxMzQsIDExLCA0LCAyNDcsIDEzMiwgMTEsIDQsIDI0NywgMTMzLCAxMSwgNCwgMjE4LCAxMDUsIDExLCA0LCAKLSAgICAyMTgsIDEwMSwgMTEsIDQsIDIxOCwgMTY3LCAxMSwgNCwgMjE4LCAxMTcsIDExLCA0LCAyMTgsIDEzMywgMTEsIDQsIDIxOCwgCi0gICAgMTYwLCAxMSwgNCwgMjE4LCAxNTYsIDExLCA0LCAyMTksIDU1LCAxMSwgNCwgMjE5LCA0NCwgMTEsIDQsIDE4NSwgMTEsIDQsIAotICAgIDIxOSwgOTYsIDExLCA0LCAyMTcsIDE3MywgMTEsIDQsIDIxNywgMTc1LCAxMSwgNCwgMjE3LCAxNzQsIDExLCA0LCAyMTgsIAotICAgIDI1LCAxMSwgNCwgMjE4LCAxNCwgMTEsIDQsIDIxOCwgNjksIDExLCA0LCAyMTgsIDQxLCAxMSwgNCwgMjE3LCAxNTksIDExLCAKLSAgICA0LCAyMTcsIDE1NSwgMTEsIDQsIDIxNywgMTkxLCAxMSwgNCwgMjE3LCAxNzIsIDExLCA0LCAyMTcsIDE2NCwgMTEsIDQsIAotICAgIDIxNywgMTcwLCAxMSwgNCwgMjE3LCAxMzgsIDExLCA0LCAyMTcsIDEzNywgMTEsIDQsIDIxNywgMTQyLCAxMSwgNCwgMjE3LCAKLSAgICAxNDEsIDExLCA0LCAyMTcsIDEzOSwgMTEsIDQsIDIxNywgMTQwLCAxMSwgNCwgMjQ4LCAxODMsIDExLCA0LCAyNDgsIDE4MiwgCi0gICAgMTEsIDQsIDI0OCwgMTg5LCAxMSwgNCwgMjQ4LCAxODQsIDExLCA0LCAyNDgsIDE4NiwgMTEsIDQsIDI0OCwgMTg1LCAxMSwgCi0gICAgNCwgMjQ4LCAxODgsIDExLCA0LCAyNDgsIDE4NywgMTEsIDQsIDI0OCwgMTk1LCAxMSwgNCwgMjQ4LCAxOTQsIDExLCA0LCAKLSAgICAyNDgsIDE5OCwgMTEsIDQsIDI0OCwgMTk2LCAxMSwgNCwgMjQ4LCAxNzQsIDExLCA0LCAyNDgsIDE3NiwgMTEsIDQsIDI0OCwgCi0gICAgMTc1LCAxMSwgNCwgMjQ4LCAxNzksIDExLCA0LCAyNDgsIDE3OCwgMTEsIDQsIDI0OCwgMTgxLCAxMSwgNCwgMjQ4LCAxODAsIAotICAgIDExLCA0LCAyNDgsIDE5MCwgMTEsIDQsIDI0OCwgMTkzLCAxMSwgNCwgMjQ4LCAxOTEsIDExLCA0LCAyNDgsIDE3MCwgMTEsIAotICAgIDQsIDI0OCwgMTY5LCAxMSwgNCwgMjQ4LCAxNzcsIDExLCA0LCAyNDgsIDE3MywgMTEsIDQsIDI0OCwgMTcxLCAxMSwgNCwgCi0gICAgMjQ4LCAxNzIsIDExLCA0LCAyNDgsIDE2NiwgMTEsIDQsIDI0OCwgMTY1LCAxMSwgNCwgMjQ4LCAxNjgsIDExLCA0LCAyNDgsIAotICAgIDE2NywgMTEsIDQsIDIyMywgNDcsIDExLCA0LCAyMjMsIDQ2LCAxMSwgNCwgMjIzLCA1MiwgMTEsIDQsIDIyMywgNDgsIDExLCAKLSAgICA0LCAyMjMsIDQ5LCAxMSwgNCwgMjIzLCA1MSwgMTEsIDQsIDIyMywgNTAsIDExLCA0LCAyMjMsIDU1LCAxMSwgNCwgMjIzLCAKLSAgICA1NCwgMTEsIDQsIDIyMywgNTcsIDExLCA0LCAyMjMsIDU2LCAxMSwgNCwgMjIzLCA0MywgMTEsIDQsIDIyMywgNDIsIDExLCAKLSAgICA0LCAyMjMsIDQ1LCAxMSwgNCwgMjIzLCA0NCwgMTEsIDQsIDIyMywgMzYsIDExLCA0LCAyMjMsIDM1LCAxMSwgNCwgMjIzLCAKLSAgICA0MCwgMTEsIDQsIDIyMywgMzksIDExLCA0LCAyMjMsIDM3LCAxMSwgNCwgMjIzLCAzOCwgMTEsIDQsIDIyMywgMzAsIDExLCAKLSAgICA0LCAyMjMsIDI5LCAxMSwgNCwgMjIzLCAzNCwgMTEsIDQsIDIyMywgMzMsIDExLCA0LCAyMjMsIDMxLCAxMSwgNCwgMjIzLCAKLSAgICAzMiwgMTEsIDQsIDIzNiwgMTgwLCAxMSwgNCwgMjM2LCAxNzksIDExLCA0LCAyMzYsIDE4NSwgMTEsIDQsIDIzNiwgMTgxLCAKLSAgICAxMSwgNCwgMjM2LCAxODIsIDExLCA0LCAyMzYsIDE4NCwgMTEsIDQsIDIzNiwgMTgzLCAxMSwgNCwgMjM2LCAxODgsIDExLCAKLSAgICA0LCAyMzYsIDE4NywgMTEsIDQsIDIzNiwgMTkwLCAxMSwgNCwgMjM2LCAxODksIDExLCA0LCAyMzYsIDE3MSwgMTEsIDQsIAotICAgIDIzNiwgMTczLCAxMSwgNCwgMjM2LCAxNzIsIDExLCA0LCAyMzYsIDE3NiwgMTEsIDQsIDIzNiwgMTc1LCAxMSwgNCwgMjM2LCAKLSAgICAxNzgsIDExLCA0LCAyMzYsIDE3NywgMTEsIDQsIDIzNiwgMTY3LCAxMSwgNCwgMjM2LCAxNjYsIDExLCA0LCAyMzYsIDE3NCwgCi0gICAgMTEsIDQsIDIzNiwgMTcwLCAxMSwgNCwgMjM2LCAxNjgsIDExLCA0LCAyMzYsIDE2OSwgMTEsIDQsIDIzNiwgMTYxLCAxMSwgCi0gICAgNCwgMjM2LCAxNjUsIDExLCA0LCAyMzYsIDE2NCwgMTEsIDQsIDIzNiwgMTYyLCAxMSwgNCwgMjM2LCAxNjMsIDExLCA0LCAKLSAgICAyMjQsIDkzLCAxMSwgNCwgMjI0LCA5MiwgMTEsIDQsIDIyNCwgMTU1LCAxMSwgNCwgMjI0LCA5OSwgMTEsIDQsIDIyNCwgCi0gICAgMTI3LCAxMSwgNCwgMjI0LCAxNDUsIDExLCA0LCAyMjQsIDE0MywgMTEsIDQsIDIyNSwgNzEsIDExLCA0LCAyMjUsIDY2LCAKLSAgICAxMSwgNCwgMTkyLCAxMSwgNCwgMjI1LCAxMDYsIDExLCA0LCAyMjMsIDIxMywgMTEsIDQsIDIyMywgMjEyLCAxMSwgNCwgCi0gICAgMjIzLCAyMTYsIDExLCA0LCAyMjMsIDIxNCwgMTEsIDQsIDIyNCwgMjEsIDExLCA0LCAyMjMsIDI1MiwgMTEsIDQsIDIyNCwgCi0gICAgODIsIDExLCA0LCAyMjQsIDI3LCAxMSwgNCwgMjI0LCAyMDcsIDExLCA0LCAyMjUsIDIwLCAxMSwgNCwgMjIzLCAxOTMsIDExLCAKLSAgICA0LCAyMjMsIDE4OSwgMTEsIDQsIDIyMywgMjQ2LCAxMSwgNCwgMjIzLCAyMDksIDExLCA0LCAyMjMsIDIwMiwgMTEsIDQsIAotICAgIDIyMywgMjA3LCAxMSwgNCwgMjIzLCAxNjYsIDExLCA0LCAyMjMsIDE2NSwgMTEsIDQsIDIyMywgMTcxLCAxMSwgNCwgMjIzLCAKLSAgICAxNjgsIDExLCA0LCAyMzksIDIzNiwgMTEsIDQsIDIzOSwgMjMwLCAxMSwgNCwgMjQwLCAyNiwgMTEsIDQsIDIzOSwgMjUxLCAKLSAgICAxMSwgNCwgMjQwLCA3MywgMTEsIDQsIDI0MCwgNjQsIDExLCA0LCAyNDAsIDEwOCwgMTEsIDQsIDI0MCwgNzgsIDExLCA0LCAKLSAgICAyMzksIDEzOSwgMTEsIDQsIDIzOSwgMTg2LCAxMSwgNCwgMjM5LCAxNjcsIDExLCA0LCAyMzksIDkxLCAxMSwgNCwgMjM5LCAKLSAgICA5MCwgMTEsIDQsIDIzOSwgMTA4LCAxMSwgNCwgMjM5LCA5NiwgMTEsIDQsIDIzOSwgOTQsIDExLCA0LCAyMzksIDk1LCAxMSwgCi0gICAgNCwgMjM5LCA3OCwgMTEsIDQsIDIzOSwgNzcsIDExLCA0LCAyMzksIDgxLCAxMSwgNCwgMjM5LCA3OSwgMTEsIDQsIDIwNSwgCi0gICAgMTk2LCAxMSwgNCwgMjA1LCAxOTEsIDExLCA0LCAyMDUsIDIzMCwgMTEsIDQsIDIwNSwgMjA1LCAxMSwgNCwgMjA1LCAyMTksIAotICAgIDExLCA0LCAyMDUsIDIxNiwgMTEsIDQsIDIwNSwgMjIyLCAxMSwgNCwgMjA1LCAyMjEsIDExLCA0LCAyMDYsIDYzLCAxMSwgNCwgCi0gICAgMjA2LCA1OCwgMTEsIDQsIDIwNiwgODYsIDExLCA0LCAyMDYsIDc1LCAxMSwgNCwgMjA1LCAxNzIsIDExLCA0LCAyMDUsIAotICAgIDE2OCwgMTEsIDQsIDIwNSwgMTg5LCAxMSwgNCwgMjA1LCAxNzQsIDExLCA0LCAyMDUsIDIzMywgMTEsIDQsIDIwNiwgNDQsIAotICAgIDExLCA0LCAyMDQsIDE1NywgMTEsIDQsIDIwNCwgMTU1LCAxMSwgNCwgMjA0LCAxNjMsIDExLCA0LCAyMDQsIDE2MCwgMTEsIAotICAgIDQsIDIwNCwgMTU4LCAxMSwgNCwgMjA0LCAxNTksIDExLCA0LCAyMDQsIDE0OCwgMTEsIDQsIDIwNCwgMTQ3LCAxMSwgNCwgCi0gICAgMjA0LCAxNTIsIDExLCA0LCAyMDQsIDE1MSwgMTEsIDQsIDIwNCwgMTQ5LCAxMSwgNCwgMjA0LCAxNTAsIDExLCA0LCAyNDMsIAotICAgIDE0NywgMTEsIDQsIDI0MywgMTM0LCAxMSwgNCwgMjQzLCAyMzMsIDExLCA0LCAyNDMsIDE3MywgMTEsIDQsIDI0MywgMjA4LCAKLSAgICAxMSwgNCwgMjQzLCAyMTMsIDExLCA0LCAyNDMsIDIxMiwgMTEsIDQsIDI0NCwgMTQwLCAxMSwgNCwgMjQ0LCAxMzQsIDExLCAKLSAgICA0LCAyNDQsIDIxMiwgMTEsIDQsIDI0NCwgMTYwLCAxMSwgNCwgMjQyLCAyNSwgMTEsIDQsIDI0MiwgMjYsIDExLCA0LCAyNDMsIAotICAgIDg1LCAxMSwgNCwgMjQyLCA2NywgMTEsIDQsIDI0MywgMTEzLCAxMSwgNCwgMjQzLCA4NywgMTEsIDQsIDI0NCwgNywgMTEsIAotICAgIDQsIDI0NCwgNzUsIDExLCA0LCAyNDQsIDI4LCAxMSwgNCwgMjQyLCAxNiwgMTEsIDQsIDI0MiwgMTQsIDExLCA0LCAyNDIsIAotICAgIDQyLCAxMSwgNCwgMjQyLCAyNCwgMTEsIDQsIDI0MiwgMTksIDExLCA0LCAyNDIsIDIyLCAxMSwgNCwgMjA4LCAyMDAsIDExLCAKLSAgICA0LCAyMDgsIDE5MiwgMTEsIDQsIDIwOSwgMiwgMTEsIDQsIDIwOCwgMjEwLCAxMSwgNCwgMjA4LCAyNDgsIDExLCA0LCAyMDgsIAotICAgIDI1MCwgMTEsIDQsIDIwOCwgMjQ5LCAxMSwgNCwgMjA5LCAyMTIsIDExLCA0LCAyMDksIDE5OCwgMTEsIDQsIDIxMCwgMjIsIAotICAgIDExLCA0LCAyMDksIDIyMiwgMTEsIDQsIDIwNywgMTg1LCAxMSwgNCwgMjA3LCAxODQsIDExLCA0LCAyMDcsIDE4NywgMTEsIAotICAgIDQsIDIwNywgMTg2LCAxMSwgNCwgMjA4LCAxMzEsIDExLCA0LCAyMDgsIDEyMSwgMTEsIDQsIDEzNSwgMTEsIDQsIDIwOCwgCi0gICAgMTQ0LCAxMSwgNCwgMjA5LCAxMTQsIDExLCA0LCAyMDksIDE4NywgMTEsIDQsIDIwOSwgMTM5LCAxMSwgNCwgMjA3LCAxNjgsIAotICAgIDExLCA0LCAyMDcsIDE2MywgMTEsIDQsIDIwNywgMjAzLCAxMSwgNCwgMjA3LCAxODMsIDExLCA0LCAyMDcsIDE2OSwgMTEsIAotICAgIDQsIDIwNywgMTgxLCAxMSwgNCwgMjQ0LCA5MiwgMTEsIDQsIDI0NCwgOTEsIDExLCA0LCAyNDQsIDk3LCAxMSwgNCwgMjQ0LCAKLSAgICA5MywgMTEsIDQsIDI0NCwgOTQsIDExLCA0LCAyNDQsIDk2LCAxMSwgNCwgMjQ0LCA5NSwgMTEsIDQsIDI0NCwgMTEzLCAxMSwgCi0gICAgNCwgMjQ0LCAxMTIsIDExLCA0LCAyNDQsIDEyMCwgMTEsIDQsIDI0NCwgMTE0LCAxMSwgNCwgMjQ0LCA4MiwgMTEsIDQsIAotICAgIDI0NCwgODQsIDExLCA0LCAyNDQsIDgzLCAxMSwgNCwgMjQ0LCA4NywgMTEsIDQsIDI0NCwgODYsIDExLCA0LCAyNDQsIDkwLCAKLSAgICAxMSwgNCwgMjQ0LCA4OCwgMTEsIDQsIDI0NCwgMTA1LCAxMSwgNCwgMjQ0LCAxMDgsIDExLCA0LCAyNDQsIDEwNiwgMTEsIDQsIAotICAgIDI0NCwgNzgsIDExLCA0LCAyNDQsIDc3LCAxMSwgNCwgMjQ0LCA4NSwgMTEsIDQsIDI0NCwgODEsIDExLCA0LCAyNDQsIDc5LCAKLSAgICAxMSwgNCwgMjQ0LCA4MCwgMTEsIDQsIDIyMywgMywgMTEsIDQsIDIyMywgMiwgMTEsIDQsIDIyMywgMTAsIDExLCA0LCAyMjMsIAotICAgIDUsIDExLCA0LCAyMjMsIDYsIDExLCA0LCAyMjMsIDcsIDExLCA0LCAyMjMsIDE5LCAxMSwgNCwgMjIzLCAxOCwgMTEsIDQsIAotICAgIDIyMywgMjUsIDExLCA0LCAyMjMsIDIwLCAxMSwgNCwgMjIyLCAyNTEsIDExLCA0LCAyMjIsIDI1MCwgMTEsIDQsIDIyMywgMSwgCi0gICAgMTEsIDQsIDIyMiwgMjUyLCAxMSwgNCwgMjIzLCAxMSwgMTEsIDQsIDIyMywgMTcsIDExLCA0LCAyMjMsIDE1LCAxMSwgNCwgCi0gICAgMjIyLCAyNDMsIDExLCA0LCAyMjIsIDI0MiwgMTEsIDQsIDIyMiwgMjQ4LCAxMSwgNCwgMjIyLCAyNDYsIDExLCA0LCAyMjIsIAotICAgIDI0NCwgMTEsIDQsIDIyMiwgMjQ1LCAxMSwgNCwgMjM2LCAxNDYsIDExLCA0LCAyMzYsIDE0NSwgMTEsIDQsIDIzNiwgMTUyLCAKLSAgICAxMSwgNCwgMjM2LCAxNDcsIDExLCA0LCAyMzYsIDE0OSwgMTEsIDQsIDIzNiwgMTQ4LCAxMSwgNCwgMjM2LCAxNTEsIDExLCAKLSAgICA0LCAyMzYsIDE1MCwgMTEsIDQsIDIzNiwgMTU4LCAxMSwgNCwgMjM2LCAxNTYsIDExLCA0LCAyMzYsIDE2MCwgMTEsIDQsIAotICAgIDIzNiwgMTU5LCAxMSwgNCwgMjM2LCAxMzksIDExLCA0LCAyMzYsIDE0MCwgMTEsIDQsIDIzNiwgMTQzLCAxMSwgNCwgMjM2LCAKLSAgICAxNDIsIDExLCA0LCAyMzYsIDE0NCwgMTEsIDQsIDIzNiwgMTUzLCAxMSwgNCwgMjM2LCAxNTUsIDExLCA0LCAyMzYsIDE1NCwgCi0gICAgMTEsIDQsIDIzNiwgMTM4LCAxMSwgNCwgMjIyLCA1MiwgMTEsIDQsIDIyMiwgNTAsIDExLCA0LCAyMjIsIDEwMCwgMTEsIDQsIAotICAgIDIyMiwgNTUsIDExLCA0LCAyMjIsIDgyLCAxMSwgNCwgMjIyLCA5NiwgMTEsIDQsIDIyMiwgOTUsIDExLCA0LCAyMjMsIDYxLCAKLSAgICAxMSwgNCwgMjAxLCAyMDEsIDExLCA0LCAyMjMsIDc2LCAxMSwgNCwgMjIxLCAzMiwgMTEsIDQsIDIyMSwgMzQsIDExLCA0LCAKLSAgICAyMjEsIDMzLCAxMSwgNCwgMjIxLCAxNjUsIDExLCA0LCAyMjEsIDE1MCwgMTEsIDQsIDIyMSwgMTkxLCAxMSwgNCwgMjIxLCAKLSAgICAxNzYsIDExLCA0LCAyMjIsIDIwOSwgMTEsIDQsIDIyMiwgMjQwLCAxMSwgNCwgMjIyLCAyMjUsIDExLCA0LCAyMjEsIDI3LCAKLSAgICAxMSwgNCwgMjIxLCAyMywgMTEsIDQsIDIyMSwgODQsIDExLCA0LCAyMjEsIDMxLCAxMSwgNCwgMjIxLCAyOSwgMTEsIDQsIAotICAgIDIyMSwgMzAsIDExLCA0LCAyMzYsIDIxMSwgMTEsIDQsIDIzNiwgMjEwLCAxMSwgNCwgMjM2LCAyMTYsIDExLCA0LCAyMzYsIAotICAgIDIxMiwgMTEsIDQsIDIzNiwgMjEzLCAxMSwgNCwgMjM2LCAyMTUsIDExLCA0LCAyMzYsIDIxNCwgMTEsIDQsIDIzNiwgMjIyLCAKLSAgICAxMSwgNCwgMjM2LCAyMjAsIDExLCA0LCAyMzYsIDIyNCwgMTEsIDQsIDIzNiwgMjIzLCAxMSwgNCwgMjM2LCAyMDMsIDExLCAKLSAgICA0LCAyMzYsIDIwNSwgMTEsIDQsIDIzNiwgMjA0LCAxMSwgNCwgMjM2LCAyMDcsIDExLCA0LCAyMzYsIDIwOSwgMTEsIDQsIAotICAgIDIzNiwgMjA4LCAxMSwgNCwgMjM2LCAyMTcsIDExLCA0LCAyMzYsIDIxOSwgMTEsIDQsIDIzNiwgMjE4LCAxMSwgNCwgMjM2LCAKLSAgICAxOTksIDExLCA0LCAyMzYsIDE5OCwgMTEsIDQsIDIzNiwgMjA2LCAxMSwgNCwgMjM2LCAyMDIsIDExLCA0LCAyMzYsIDIwMCwgCi0gICAgMTEsIDQsIDIzNiwgMjAxLCAxMSwgNCwgMjM2LCAxOTMsIDExLCA0LCAyMzYsIDE5MiwgMTEsIDQsIDIzNiwgMTk3LCAxMSwgCi0gICAgNCwgMjM2LCAxOTYsIDExLCA0LCAyMzYsIDE5NCwgMTEsIDQsIDIzNiwgMTk1LCAxMSwgNCwgMjI3LCA5MCwgMTEsIDQsIAotICAgIDIyNywgODIsIDExLCA0LCAyMjcsIDE0OCwgMTEsIDQsIDIyNywgMTAwLCAxMSwgNCwgMjI3LCAxMzksIDExLCA0LCAyMjcsIAotICAgIDEzOCwgMTEsIDQsIDIyNywgMTQyLCAxMSwgNCwgMjI3LCAxNDAsIDExLCA0LCAyMjgsIDAsIDExLCA0LCAyMjcsIDI0NSwgCi0gICAgMTEsIDQsIDIyOCwgMTEzLCAxMSwgNCwgMjI4LCAxMSwgMTEsIDQsIDIyNiwgMjE3LCAxMSwgNCwgMjI2LCAyMTYsIDExLCA0LCAKLSAgICAyMjYsIDIxOSwgMTEsIDQsIDIyNiwgMjE4LCAxMSwgNCwgMjI3LCA2LCAxMSwgNCwgMjI2LCAyNDgsIDExLCA0LCAyMjcsIAotICAgIDQ5LCAxMSwgNCwgMjI3LCAxMSwgMTEsIDQsIDIyNywgMTY1LCAxMSwgNCwgMjI3LCAyMzQsIDExLCA0LCAyMjcsIDE4MiwgCi0gICAgMTEsIDQsIDIyNiwgMjExLCAxMSwgNCwgMjI2LCAyMDksIDExLCA0LCAyMjYsIDIzOSwgMTEsIDQsIDIyNiwgMjE1LCAxMSwgCi0gICAgNCwgMjI2LCAyMTMsIDExLCA0LCAyMjYsIDIxNCwgMTEsIDQsIDIyNiwgMTkwLCAxMSwgNCwgMjI2LCAxODksIDExLCA0LCAKLSAgICAyMjYsIDE5OSwgMTEsIDQsIDIyNiwgMTkzLCAxMSwgNCwgMjI2LCAxOTEsIDExLCA0LCAyMjYsIDE5MiwgMTEsIDQsIDIzOCwgCi0gICAgNTQsIDExLCA0LCAyMzgsIDUzLCAxMSwgNCwgMjM4LCA4MSwgMTEsIDQsIDIzOCwgNjUsIDExLCA0LCAyMzgsIDczLCAxMSwgCi0gICAgNCwgMjM4LCA3MiwgMTEsIDQsIDIzOCwgNzUsIDExLCA0LCAyMzgsIDc0LCAxMSwgNCwgMjM4LCAyMTcsIDExLCA0LCAyMzgsIAotICAgIDIxMiwgMTEsIDQsIDIzOSwgOCwgMTEsIDQsIDIzOCwgMjI3LCAxMSwgNCwgMjM3LCAyMDUsIDExLCA0LCAyMzcsIDIwNCwgCi0gICAgMTEsIDQsIDIzNywgMjA3LCAxMSwgNCwgMjM3LCAyMDYsIDExLCA0LCAyMzgsIDE4LCAxMSwgNCwgMjM4LCAxNiwgMTEsIDQsIAotICAgIDIzOCwgMzksIDExLCA0LCAyMzgsIDI2LCAxMSwgNCwgMjM4LCAxNTksIDExLCA0LCAyMzgsIDE1NywgMTEsIDQsIDIzOCwgCi0gICAgMTkwLCAxMSwgNCwgMjM4LCAxNzAsIDExLCA0LCAyMzcsIDE5NCwgMTEsIDQsIDIzNywgMTkzLCAxMSwgNCwgMjM3LCAyMzAsIAotICAgIDExLCA0LCAyMzcsIDIwMywgMTEsIDQsIDIzNywgMTk1LCAxMSwgNCwgMjM3LCAyMDIsIDExLCA0LCAyMjksIDY0LCAxMSwgNCwgCi0gICAgMjI5LCA2MSwgMTEsIDQsIDIyOSwgMTAwLCAxMSwgNCwgMjI5LCA3OCwgMTEsIDQsIDIyOSwgODksIDExLCA0LCAyMjksIDkzLCAKLSAgICAxMSwgNCwgMjI5LCA5MSwgMTEsIDQsIDIyOSwgMjI2LCAxMSwgNCwgMjI5LCAyMDksIDExLCA0LCAxNzMsIDExLCA0LCAyMjksIAotICAgIDI1MywgMTEsIDQsIDIyOCwgMTg3LCAxMSwgNCwgMjI4LCAxOTIsIDExLCA0LCAyMjgsIDE4OSwgMTEsIDQsIDIyOCwgMjUwLCAKLSAgICAxMSwgNCwgMjI4LCAyNDUsIDExLCA0LCAyMjksIDI2LCAxMSwgNCwgMjI5LCAxLCAxMSwgNCwgMjI5LCAxNzAsIDExLCA0LCAKLSAgICAyMjksIDE1MywgMTEsIDQsIDIyOSwgMjAxLCAxMSwgNCwgMjI5LCAxNzQsIDExLCA0LCAyMjgsIDE3NSwgMTEsIDQsIDIyOCwgCi0gICAgMTcxLCAxMSwgNCwgMjI4LCAyMDksIDExLCA0LCAyMjgsIDE4NiwgMTEsIDQsIDIyOCwgMTc5LCAxMSwgNCwgMjI4LCAxODMsIAotICAgIDExLCA0LCAyMzgsIDE0MSwgMTEsIDQsIDIzOCwgMTQwLCAxMSwgNCwgMjM4LCAxNDUsIDExLCA0LCAyMzgsIDE0MiwgMTEsIAotICAgIDQsIDIzOCwgMTQ0LCAxMSwgNCwgMjM4LCAxNDMsIDExLCA0LCAyMzgsIDE1MiwgMTEsIDQsIDIzOCwgMTUxLCAxMSwgNCwgCi0gICAgMjM4LCAxNTUsIDExLCA0LCAyMzgsIDE1MywgMTEsIDQsIDIzOCwgMTMyLCAxMSwgNCwgMjM4LCAxMzEsIDExLCA0LCAyMzgsIAotICAgIDEzNCwgMTEsIDQsIDIzOCwgMTMzLCAxMSwgNCwgMjM4LCAxMzcsIDExLCA0LCAyMzgsIDEzNiwgMTEsIDQsIDIzOCwgMTM5LCAKLSAgICAxMSwgNCwgMjM4LCAxMzgsIDExLCA0LCAyMzgsIDE0NywgMTEsIDQsIDIzOCwgMTQ2LCAxMSwgNCwgMjM4LCAxNTAsIDExLCAKLSAgICA0LCAyMzgsIDE0OCwgMTEsIDQsIDIzOCwgMTI3LCAxMSwgNCwgMjM4LCAxMjYsIDExLCA0LCAyMzgsIDEzNSwgMTEsIDQsIAotICAgIDIzOCwgMTMwLCAxMSwgNCwgMjM4LCAxMjgsIDExLCA0LCAyMzgsIDEyOSwgMTEsIDQsIDIyNCwgMTc0LCAxMSwgNCwgMjI0LCAKLSAgICAxNzUsIDExLCA0LCAyMjQsIDE5MywgMTEsIDQsIDIyNCwgMTkyLCAxMSwgNCwgMjI0LCAxOTUsIDExLCA0LCAyMjQsIDE5NCwgCi0gICAgMTEsIDQsIDIyNCwgMTY1LCAxMSwgNCwgMjI0LCAxNjcsIDExLCA0LCAyMjQsIDE2NiwgMTEsIDQsIDIyNCwgMTcwLCAxMSwgCi0gICAgNCwgMjI0LCAxNjksIDExLCA0LCAyMjQsIDE3MiwgMTEsIDQsIDIyNCwgMTcxLCAxMSwgNCwgMjI0LCAxNzYsIDExLCA0LCAKLSAgICAyMjQsIDE3OCwgMTEsIDQsIDIyNCwgMTc3LCAxMSwgNCwgMjI0LCAxNjEsIDExLCA0LCAyMjQsIDE2MCwgMTEsIDQsIDIyNCwgCi0gICAgMTY4LCAxMSwgNCwgMjI0LCAxNjQsIDExLCA0LCAyMjQsIDE2MiwgMTEsIDQsIDIyNCwgMTYzLCAxMSwgNCwgMjM1LCAyMzMsIAotICAgIDExLCA0LCAyMzUsIDIzMiwgMTEsIDQsIDIzNSwgMjM5LCAxMSwgNCwgMjM1LCAyMzQsIDExLCA0LCAyMzUsIDIzNiwgMTEsIAotICAgIDQsIDIzNSwgMjM1LCAxMSwgNCwgMjM1LCAyMzgsIDExLCA0LCAyMzUsIDIzNywgMTEsIDQsIDIzNSwgMjQ0LCAxMSwgNCwgCi0gICAgMjM1LCAyNDMsIDExLCA0LCAyMzUsIDI0NiwgMTEsIDQsIDIzNSwgMjQ1LCAxMSwgNCwgMjM1LCAyMjUsIDExLCA0LCAyMzUsIAotICAgIDIyNCwgMTEsIDQsIDIzNSwgMjI3LCAxMSwgNCwgMjM1LCAyMjYsIDExLCA0LCAyMzUsIDIyOSwgMTEsIDQsIDIzNSwgMjI4LCAKLSAgICAxMSwgNCwgMjM1LCAyMzEsIDExLCA0LCAyMzUsIDIzMCwgMTEsIDQsIDIzNSwgMjQwLCAxMSwgNCwgMjM1LCAyNDIsIDExLCAKLSAgICA0LCAyMzUsIDI0MSwgMTEsIDQsIDIyMiwgMTQ4LCAxMSwgNCwgMjIyLCAxNTAsIDExLCA0LCAyMjIsIDE0OSwgMTEsIDQsIAotICAgIDIyMiwgMTkzLCAxMSwgNCwgMjIyLCAxOTEsIDExLCA0LCAyMjIsIDIwMywgMTEsIDQsIDIyMiwgMTk2LCAxMSwgNCwgMjIyLCAKLSAgICAxMTAsIDExLCA0LCAyMjIsIDEwOSwgMTEsIDQsIDIyMiwgMTExLCAxMSwgNCwgMjIyLCAxMjAsIDExLCA0LCAyMjIsIDExNywgCi0gICAgMTEsIDQsIDIyMiwgMTI4LCAxMSwgNCwgMjIyLCAxMjIsIDExLCA0LCAyMjIsIDE4NCwgMTEsIDQsIDIyMiwgMTkwLCAxMSwgCi0gICAgNCwgMjIyLCAxODYsIDExLCA0LCAyMzYsIDIzMCwgMTEsIDQsIDIzNiwgMjQ1LCAxMSwgNCwgMjM2LCAyNTQsIDExLCA0LCAKLSAgICAyMzcsIDgzLCAxMSwgNCwgMjM3LCA3MiwgMTEsIDQsIDE1MiwgMTEsIDQsIDIzNywgOTQsIDExLCA0LCAyMzYsIDYsIDExLCAKLSAgICA0LCAyMzYsIDUsIDExLCA0LCAyMzYsIDgsIDExLCA0LCAyMzYsIDcsIDExLCA0LCAyMzYsIDQ2LCAxMSwgNCwgMjM2LCAzNywgCi0gICAgMTEsIDQsIDIzNiwgMTM2LCAxMSwgNCwgMjM2LCAxMDksIDExLCA0LCAyMzcsIDE4LCAxMSwgNCwgMjM3LCA2NywgMTEsIDQsIAotICAgIDIzNywgMzAsIDExLCA0LCAyMDQsIDgzLCAxMSwgNCwgMjA0LCA2OCwgMTEsIDQsIDIwNCwgMTExLCAxMSwgNCwgMjA0LCA5MywgCi0gICAgMTEsIDQsIDIwMywgMjA2LCAxMSwgNCwgMjAzLCAyMDgsIDExLCA0LCAyMDMsIDIwNywgMTEsIDQsIDIwMywgMjI5LCAxMSwgCi0gICAgNCwgMjA0LCAwLCAxMSwgNCwgMjAzLCAyMzksIDExLCA0LCAyMDQsIDQyLCAxMSwgNCwgMjA0LCA2MiwgMTEsIDQsIDIwNCwgCi0gICAgNDcsIDExLCA0LCAyMDIsIDI0LCAxMSwgNCwgMjAyLCAyMywgMTEsIDQsIDIwMiwgMzksIDExLCA0LCAyMDIsIDI3LCAxMSwgCi0gICAgNCwgMjAyLCAzMiwgMTEsIDQsIDIwMiwgMzQsIDExLCA0LCAyMDIsIDMzLCAxMSwgNCwgMjAyLCAxMDAsIDExLCA0LCAyMDIsIAotICAgIDk3LCAxMSwgNCwgMjAyLCAxMTYsIDExLCA0LCAyMDIsIDEwNCwgMTEsIDQsIDIwMSwgMjU1LCAxMSwgNCwgMjAyLCAxLCAxMSwgCi0gICAgNCwgMjAyLCAwLCAxMSwgNCwgMjAyLCAxMywgMTEsIDQsIDIwMiwgMTIsIDExLCA0LCAyMDIsIDE3LCAxMSwgNCwgMjAyLCAKLSAgICAxNCwgMTEsIDQsIDIwMiwgODIsIDExLCA0LCAyMDIsIDkyLCAxMSwgNCwgMjAyLCA4NiwgMTEsIDQsIDIwMSwgMjUxLCAxMSwgCi0gICAgNCwgMjAxLCAyNTAsIDExLCA0LCAyMDIsIDYsIDExLCA0LCAyMDEsIDI1NCwgMTEsIDQsIDIwMSwgMjUyLCAxMSwgNCwgMjAxLCAKLSAgICAyNTMsIDExLCA0LCAyMDEsIDIzNywgMTEsIDQsIDIwMSwgMjM2LCAxMSwgNCwgMjAxLCAyNDIsIDExLCA0LCAyMDEsIDI0MCwgCi0gICAgMTEsIDQsIDIwMSwgMjM4LCAxMSwgNCwgMjAxLCAyMzksIDExLCA0LCAyNDYsIDUwLCAxMSwgNCwgMjQ2LCA0MywgMTEsIDQsIAotICAgIDI0NiwgNzksIDExLCA0LCAyNDYsIDYzLCAxMSwgNCwgMjQ2LCA3NiwgMTEsIDQsIDI0NiwgNzAsIDExLCA0LCAyNDYsIDc4LCAKLSAgICAxMSwgNCwgMjQ2LCA3NywgMTEsIDQsIDI0NywgMTcsIDExLCA0LCAyNDcsIDksIDExLCA0LCAyNDcsIDkyLCAxMSwgNCwgCi0gICAgMjQ3LCA0OCwgMTEsIDQsIDI0NSwgMTAxLCAxMSwgNCwgMjQ1LCAxMDMsIDExLCA0LCAyNDUsIDEwMiwgMTEsIDQsIDI0NSwgCi0gICAgMTU4LCAxMSwgNCwgMjQ1LCAxNDgsIDExLCA0LCAyNDUsIDI1NCwgMTEsIDQsIDI0NSwgMTc1LCAxMSwgNCwgMjQ2LCAyMDIsIAotICAgIDExLCA0LCAyNDYsIDIzOCwgMTEsIDQsIDI0NiwgMjA3LCAxMSwgNCwgMjQ1LCA3NywgMTEsIDQsIDI0NSwgNzUsIDExLCA0LCAKLSAgICAyNDUsIDExMCwgMTEsIDQsIDI0NSwgOTksIDExLCA0LCAyNDUsIDgzLCAxMSwgNCwgMjQ1LCA5NiwgMTEsIDQsIDI0NSwgNTQsIAotICAgIDExLCA0LCAyNDUsIDUzLCAxMSwgNCwgMjQ1LCA2NiwgMTEsIDQsIDI0NSwgNjAsIDExLCA0LCAyNDUsIDU1LCAxMSwgNCwgCi0gICAgMjQ1LCA1NywgMTEsIDQsIDIwMSwgMjIwLCAxMSwgNCwgMjAxLCAyMTksIDExLCA0LCAyMDEsIDIyNiwgMTEsIDQsIDIwMSwgCi0gICAgMjIxLCAxMSwgNCwgMjAxLCAyMjMsIDExLCA0LCAyMDEsIDIyMiwgMTEsIDQsIDIwMSwgMjI1LCAxMSwgNCwgMjAxLCAyMjQsIAotICAgIDExLCA0LCAyMDEsIDIzMiwgMTEsIDQsIDIwMSwgMjMxLCAxMSwgNCwgMjAxLCAyMzUsIDExLCA0LCAyMDEsIDIzMywgMTEsIAotICAgIDQsIDIwMSwgMjE2LCAxMSwgNCwgMjAxLCAyMTgsIDExLCA0LCAyMDEsIDIxNywgMTEsIDQsIDIwMSwgMjI3LCAxMSwgNCwgCi0gICAgMjAxLCAyMzAsIDExLCA0LCAyMDEsIDIyOCwgMTEsIDQsIDIwMSwgMjA5LCAxMSwgNCwgMjAxLCAyMTMsIDExLCA0LCAyMDEsIAotICAgIDIxMiwgMTEsIDQsIDIwMSwgMjEwLCAxMSwgNCwgMjAxLCAyMTEsIDExLCA0LCAyMDEsIDIwMywgMTEsIDQsIDIwMSwgMjAyLCAKLSAgICAxMSwgNCwgMjAxLCAyMDgsIDExLCA0LCAyMDEsIDIwNiwgMTEsIDQsIDIwMSwgMjA0LCAxMSwgNCwgMjAxLCAyMDUsIDExLCAKLSAgICA0LCAyMjAsIDIwMSwgMTEsIDQsIDIyMCwgMjAwLCAxMSwgNCwgMjIwLCAyMDYsIDExLCA0LCAyMjAsIDIwMiwgMTEsIDQsIAotICAgIDIyMCwgMjAzLCAxMSwgNCwgMjIwLCAyMDUsIDExLCA0LCAyMjAsIDIwNCwgMTEsIDQsIDIyMCwgMjExLCAxMSwgNCwgMjIwLCAKLSAgICAyMTAsIDExLCA0LCAyMjAsIDIxNCwgMTEsIDQsIDIyMCwgMjEzLCAxMSwgNCwgMjIwLCAxOTQsIDExLCA0LCAyMjAsIDE5NSwgCi0gICAgMTEsIDQsIDIyMCwgMTk4LCAxMSwgNCwgMjIwLCAxOTksIDExLCA0LCAyMjAsIDIwNywgMTEsIDQsIDIyMCwgMjA5LCAxMSwgCi0gICAgNCwgMjIwLCAxODksIDExLCA0LCAyMjAsIDE5NywgMTEsIDQsIDIyMCwgMTkzLCAxMSwgNCwgMjIwLCAxOTAsIDExLCA0LCAKLSAgICAyMjAsIDE5MSwgMTEsIDQsIDIyMCwgMTg0LCAxMSwgNCwgMjIwLCAxODMsIDExLCA0LCAyMjAsIDE4OCwgMTEsIDQsIDIyMCwgCi0gICAgMTg3LCAxMSwgNCwgMjIwLCAxODUsIDExLCA0LCAyMjAsIDE4NiwgMTEsIDQsIDIxMiwgOTAsIDExLCA0LCAxOTUsIDExLCA0LCAKLSAgICAyMTIsIDE2MiwgMTEsIDQsIDIxMiwgOTMsIDExLCA0LCAyMTIsIDE1MCwgMTEsIDQsIDIxMiwgMTUzLCAxMSwgNCwgMjEyLCAKLSAgICAxNTEsIDExLCA0LCAyMTQsIDIyNSwgMTEsIDQsIDIxNCwgMjExLCAxMSwgNCwgMjE1LCAzNiwgMTEsIDQsIDIxNCwgMjMzLCAKLSAgICAxMSwgNCwgMjEwLCAyMDQsIDExLCA0LCAyMTAsIDIwNiwgMTEsIDQsIDIxMCwgMjA1LCAxMSwgNCwgMjExLCAyNDQsIDExLCAKLSAgICA0LCAyMTEsIDIzMywgMTEsIDQsIDIxMiwgMTMsIDExLCA0LCAyMTEsIDI0OCwgMTEsIDQsIDIxMywgMTAzLCAxMSwgNCwgCi0gICAgMjE0LCAxNzcsIDExLCA0LCAyMTMsIDEzMiwgMTEsIDQsIDIxMCwgMTgxLCAxMSwgNCwgMjEwLCAxNzgsIDExLCA0LCAyMTEsIAotICAgIDEwLCAxMSwgNCwgMjEwLCAyMDMsIDExLCA0LCAyMTAsIDE4NSwgMTEsIDQsIDIxMCwgMTkzLCAxMSwgNCwgMjEwLCA4MywgCi0gICAgMTEsIDQsIDIxMCwgODIsIDExLCA0LCAyMTAsIDE1MSwgMTEsIDQsIDIxMCwgOTEsIDExLCA0LCAyMTAsIDg1LCAxMSwgNCwgCi0gICAgMjEwLCA5MCwgMTEsIDQsIDIxMSwgMTI2LCAxMSwgNCwgMjExLCAxMjUsIDExLCA0LCAyMTEsIDEzMiwgMTEsIDQsIDIxMSwgCi0gICAgMTI3LCAxMSwgNCwgMjExLCAxMjksIDExLCA0LCAyMTEsIDEzMSwgMTEsIDQsIDIxMSwgMTMwLCAxMSwgNCwgMjExLCAxNDEsIAotICAgIDExLCA0LCAyMTEsIDEzOSwgMTEsIDQsIDIxMSwgMTY0LCAxMSwgNCwgMjExLCAxNDIsIDExLCA0LCAyMTEsIDEyMSwgMTEsIAotICAgIDQsIDIxMSwgMTIwLCAxMSwgNCwgMjExLCAxMjQsIDExLCA0LCAyMTEsIDEyMiwgMTEsIDQsIDIxMSwgMTM1LCAxMSwgNCwgCi0gICAgMjExLCAxMzgsIDExLCA0LCAyMTEsIDEzNiwgMTEsIDQsIDIxMSwgMTE3LCAxMSwgNCwgMjExLCAxMTUsIDExLCA0LCAyMTEsIAotICAgIDExOSwgMTEsIDQsIDIxMSwgMTE4LCAxMSwgNCwgMjExLCAxMTAsIDExLCA0LCAyMTEsIDEwOSwgMTEsIDQsIDIxMSwgMTE0LCAKLSAgICAxMSwgNCwgMjExLCAxMTMsIDExLCA0LCAyMTEsIDExMSwgMTEsIDQsIDIxMSwgMTEyLCAxMSwgNCwgMjAyLCA3NSwgMTEsIDQsIAotICAgIDIwMiwgNzQsIDExLCA0LCAyMDIsIDgwLCAxMSwgNCwgMjAyLCA3NywgMTEsIDQsIDIwMiwgNTQsIDExLCA0LCAyMDIsIDU2LCAKLSAgICAxMSwgNCwgMjAyLCA1NSwgMTEsIDQsIDIwMiwgNTksIDExLCA0LCAyMDIsIDU4LCAxMSwgNCwgMjAyLCA2MywgMTEsIDQsIAotICAgIDIwMiwgNjAsIDExLCA0LCAyMDIsIDY4LCAxMSwgNCwgMjAyLCA2NywgMTEsIDQsIDIwMiwgNzEsIDExLCA0LCAyMDIsIDY5LCAKLSAgICAxMSwgNCwgMjAyLCA1MCwgMTEsIDQsIDIwMiwgNDksIDExLCA0LCAyMDIsIDU3LCAxMSwgNCwgMjAyLCA1MywgMTEsIDQsIAotICAgIDIwMiwgNTEsIDExLCA0LCAyMDIsIDUyLCAxMSwgNCwgMjAyLCA0MiwgMTEsIDQsIDIwMiwgNDEsIDExLCA0LCAyMDIsIDQ2LCAKLSAgICAxMSwgNCwgMjAyLCA0NSwgMTEsIDQsIDIwMiwgNDMsIDExLCA0LCAyMDIsIDQ0LCAxMSwgNCwgMjQ2LCAxNzYsIDExLCA0LCAKLSAgICAyNDYsIDE3MiwgMTEsIDQsIDI0NiwgMTk5LCAxMSwgNCwgMjQ2LCAxODUsIDExLCA0LCAyNDYsIDk0LCAxMSwgNCwgMjQ2LCAKLSAgICA5MywgMTEsIDQsIDI0NiwgOTYsIDExLCA0LCAyNDYsIDk1LCAxMSwgNCwgMjQ2LCAxMDksIDExLCA0LCAyNDYsIDEwOCwgMTEsIAotICAgIDQsIDI0NiwgMTE2LCAxMSwgNCwgMjQ2LCAxMTEsIDExLCA0LCAyNDYsIDE0NywgMTEsIDQsIDI0NiwgMTQ1LCAxMSwgNCwgCi0gICAgMjQ2LCAxNzAsIDExLCA0LCAyNDYsIDE1NSwgMTEsIDQsIDI0NiwgODgsIDExLCA0LCAyNDYsIDk4LCAxMSwgNCwgMjQ2LCAKLSAgICA5MiwgMTEsIDQsIDI0NiwgODksIDExLCA0LCAyNDYsIDkxLCAxMSwgNCwgMjQ2LCA4MSwgMTEsIDQsIDI0NiwgODAsIDExLCAKLSAgICA0LCAyNDYsIDg1LCAxMSwgNCwgMjQ2LCA4NCwgMTEsIDQsIDI0NiwgODIsIDExLCA0LCAyNDYsIDgzLCAxMSwgNCwgMjE1LCAKLSAgICAxODEsIDExLCA0LCAyMTUsIDE4NSwgMTEsIDQsIDIxNSwgMTYzLCAxMSwgNCwgMjE1LCAxNjQsIDExLCA0LCAyMTUsIDE2OCwgCi0gICAgMTEsIDQsIDIxNSwgMTY3LCAxMSwgNCwgMjE1LCAxNzEsIDExLCA0LCAyMTUsIDE2OSwgMTEsIDQsIDIxNSwgMTc1LCAxMSwgCi0gICAgNCwgMjE1LCAxNzQsIDExLCA0LCAyMTUsIDE4MCwgMTEsIDQsIDIxNSwgMTc2LCAxMSwgNCwgMjE1LCAxNTksIDExLCA0LCAKLSAgICAyMTUsIDE1NywgMTEsIDQsIDIxNSwgMTY1LCAxMSwgNCwgMjE1LCAxNjIsIDExLCA0LCAyMTUsIDE2MCwgMTEsIDQsIDIxNSwgCi0gICAgMTYxLCAxMSwgNCwgMjE1LCAxNTIsIDExLCA0LCAyMTUsIDE1MSwgMTEsIDQsIDIxNSwgMTU2LCAxMSwgNCwgMjE1LCAxNTUsIAotICAgIDExLCA0LCAyMTUsIDE1MywgMTEsIDQsIDIxNSwgMTU0LCAxMSwgNCwgMjIxLCAxNDUsIDExLCA0LCAyMjEsIDE0NCwgMTEsIAotICAgIDQsIDIyMSwgMTQ3LCAxMSwgNCwgMjIxLCAxNDYsIDExLCA0LCAyMjEsIDEzNiwgMTEsIDQsIDIyMSwgMTM4LCAxMSwgNCwgCi0gICAgMjIxLCAxMzcsIDExLCA0LCAyMjEsIDE0MCwgMTEsIDQsIDIyMSwgMTM5LCAxMSwgNCwgMjIxLCAxNDMsIDExLCA0LCAyMjEsIAotICAgIDE0MiwgMTEsIDQsIDIyMSwgMTMwLCAxMSwgNCwgMjIxLCAxMjksIDExLCA0LCAyMjEsIDEzNSwgMTEsIDQsIDIyMSwgMTMzLCAKLSAgICAxMSwgNCwgMjIxLCAxMzEsIDExLCA0LCAyMjEsIDEzMiwgMTEsIDQsIDIyMSwgMTI0LCAxMSwgNCwgMjIxLCAxMjMsIDExLCAKLSAgICA0LCAyMjEsIDEyOCwgMTEsIDQsIDIyMSwgMTI3LCAxMSwgNCwgMjIxLCAxMjUsIDExLCA0LCAyMjEsIDEyNiwgMTEsIDQsIAotICAgIDIxMywgNTMsIDExLCA0LCAyMTMsIDQ4LCAxMSwgNCwgMjEzLCA5MCwgMTEsIDQsIDIxMywgNjQsIDExLCA0LCAyMTIsIDE4OCwgCi0gICAgMTEsIDQsIDIxMiwgMTkwLCAxMSwgNCwgMjEyLCAxODksIDExLCA0LCAyMTIsIDIxMiwgMTEsIDQsIDIxMiwgMjA4LCAxMSwgCi0gICAgNCwgMjEyLCAyNDIsIDExLCA0LCAyMTIsIDIzMiwgMTEsIDQsIDIxMywgMjEsIDExLCA0LCAyMTMsIDE0LCAxMSwgNCwgMjEzLCAKLSAgICA0MywgMTEsIDQsIDIxMywgMzAsIDExLCA0LCAyMTIsIDE4NCwgMTEsIDQsIDIxMiwgMTgxLCAxMSwgNCwgMjEyLCAxOTksIAotICAgIDExLCA0LCAyMTIsIDE4NywgMTEsIDQsIDIxMiwgMTg1LCAxMSwgNCwgMjEyLCAxODYsIDExLCA0LCAyMTIsIDE2NSwgMTEsIAotICAgIDQsIDIxMiwgMTY0LCAxMSwgNCwgMjEyLCAxNzEsIDExLCA0LCAyMTIsIDE2OCwgMTEsIDQsIDIxMiwgMTY2LCAxMSwgNCwgCi0gICAgMjEyLCAxNjcsIDExLCA0LCAyMTYsIDE3MiwgMTEsIDQsIDIxNiwgMTY2LCAxMSwgNCwgMjE2LCAyMjAsIDExLCA0LCAyMTYsIAotICAgIDE3OCwgMTEsIDQsIDIxNSwgMTIyLCAxMSwgNCwgMjE1LCAxMjQsIDExLCA0LCAyMTUsIDEyMywgMTEsIDQsIDIxNSwgMTk5LCAKLSAgICAxMSwgNCwgMjE1LCAxODcsIDExLCA0LCAyMTUsIDIyNywgMTEsIDQsIDIxNSwgMjAzLCAxMSwgNCwgMjE2LCA2NiwgMTEsIDQsIAotICAgIDIxNiwgMTU4LCAxMSwgNCwgMjE2LCAxMDUsIDExLCA0LCAyMTUsIDExNSwgMTEsIDQsIDIxNSwgMTEyLCAxMSwgNCwgMjE1LCAKLSAgICAxNDUsIDExLCA0LCAyMTUsIDEyMSwgMTEsIDQsIDIxNSwgMTE3LCAxMSwgNCwgMjE1LCAxMTgsIDExLCA0LCAyMTUsIDk3LCAKLSAgICAxMSwgNCwgMjE1LCA5NiwgMTEsIDQsIDIxNSwgMTAyLCAxMSwgNCwgMjE1LCAxMDAsIDExLCA0LCAyMTUsIDk4LCAxMSwgNCwgCi0gICAgMjE1LCA5OSwgMTEsIDQsIDIzMCwgMTMxLCAxMSwgNCwgMjMwLCAxMzAsIDExLCA0LCAyMzAsIDE0MSwgMTEsIDQsIDIzMCwgCi0gICAgMTMyLCAxMSwgNCwgMjMwLCAxMzcsIDExLCA0LCAyMzAsIDEzNiwgMTEsIDQsIDIzMCwgMTM5LCAxMSwgNCwgMjMwLCAxMzgsIAotICAgIDExLCA0LCAyMzAsIDcyLCAxMSwgNCwgMjMwLCA3MSwgMTEsIDQsIDIzMCwgNzQsIDExLCA0LCAyMzAsIDczLCAxMSwgNCwgCi0gICAgMjMwLCA4OCwgMTEsIDQsIDIzMCwgODYsIDExLCA0LCAyMzAsIDEwMSwgMTEsIDQsIDIzMCwgOTAsIDExLCA0LCAyMzAsIDY1LCAKLSAgICAxMSwgNCwgMjMwLCA2MywgMTEsIDQsIDIzMCwgODIsIDExLCA0LCAyMzAsIDcwLCAxMSwgNCwgMjMwLCA2NywgMTEsIDQsIAotICAgIDIzMCwgNjgsIDExLCA0LCAyMzAsIDU3LCAxMSwgNCwgMjMwLCA1NiwgMTEsIDQsIDIzMCwgNjEsIDExLCA0LCAyMzAsIDYwLCAKLSAgICAxMSwgNCwgMjMwLCA1OCwgMTEsIDQsIDIzMCwgNTksIDExLCA0LCAyMTcsIDgxLCAxMSwgNCwgMjE3LCA3OSwgMTEsIDQsIAotICAgIDIxNywgODgsIDExLCA0LCAyMTcsIDgyLCAxMSwgNCwgMjE3LCA4NSwgMTEsIDQsIDIxNywgODQsIDExLCA0LCAyMTcsIDg3LCAKLSAgICAxMSwgNCwgMjE3LCA4NiwgMTEsIDQsIDIxNywgMzIsIDExLCA0LCAyMTcsIDI5LCAxMSwgNCwgMjE3LCAzNCwgMTEsIDQsIAotICAgIDIxNywgMzMsIDExLCA0LCAyMTcsIDY4LCAxMSwgNCwgMjE3LCA2NywgMTEsIDQsIDIxNywgNzcsIDExLCA0LCAyMTcsIDcxLCAKLSAgICAxMSwgNCwgMjE3LCAyNCwgMTEsIDQsIDIxNywgMjAsIDExLCA0LCAyMTcsIDY1LCAxMSwgNCwgMjE3LCAyOCwgMTEsIDQsIAotICAgIDIxNywgMjYsIDExLCA0LCAyMTcsIDI3LCAxMSwgNCwgMjE3LCA0LCAxMSwgNCwgMjE3LCAyLCAxMSwgNCwgMjE3LCAxNCwgCi0gICAgMTEsIDQsIDIxNywgNywgMTEsIDQsIDIxNywgNSwgMTEsIDQsIDIxNywgNiwgMTEsIDQsIDIzMCwgMTIwLCAxMSwgNCwgMjMwLCAKLSAgICAxMTksIDExLCA0LCAyMzAsIDEyNiwgMTEsIDQsIDIzMCwgMTIxLCAxMSwgNCwgMjMwLCAxMjMsIDExLCA0LCAyMzAsIDEyMiwgCi0gICAgMTEsIDQsIDIzMCwgMTI1LCAxMSwgNCwgMjMwLCAxMjQsIDExLCA0LCAyMzAsIDExMSwgMTEsIDQsIDIzMCwgMTEzLCAxMSwgCi0gICAgNCwgMjMwLCAxMTIsIDExLCA0LCAyMzAsIDExNiwgMTEsIDQsIDIzMCwgMTE1LCAxMSwgNCwgMjMwLCAxMTgsIDExLCA0LCAKLSAgICAyMzAsIDExNywgMTEsIDQsIDIzMCwgMTA3LCAxMSwgNCwgMjMwLCAxMDYsIDExLCA0LCAyMzAsIDExNCwgMTEsIDQsIDIzMCwgCi0gICAgMTEwLCAxMSwgNCwgMjMwLCAxMDgsIDExLCA0LCAyMzAsIDEwOSwgMTEsIDQsIDIzMCwgMTAzLCAxMSwgNCwgMjMwLCAxMDIsIAotICAgIDExLCA0LCAyMzAsIDEwNSwgMTEsIDQsIDIzMCwgMTA0LCAxMSwgNCwgMjIyLCAyNSwgMTEsIDQsIDIyMiwgMjQsIDExLCA0LCAKLSAgICAyMjIsIDMyLCAxMSwgNCwgMjIyLCAyNiwgMTEsIDQsIDIyMiwgMjgsIDExLCA0LCAyMjIsIDI3LCAxMSwgNCwgMjIyLCAzMSwgCi0gICAgMTEsIDQsIDIyMiwgMjksIDExLCA0LCAyMjIsIDE0LCAxMSwgNCwgMjIyLCAxNSwgMTEsIDQsIDIyMiwgMjAsIDExLCA0LCAKLSAgICAyMjIsIDE5LCAxMSwgNCwgMjIyLCAyMywgMTEsIDQsIDIyMiwgMjEsIDExLCA0LCAyMjIsIDksIDExLCA0LCAyMjIsIDE4LCAKLSAgICAxMSwgNCwgMjIyLCAxMywgMTEsIDQsIDIyMiwgMTAsIDExLCA0LCAyMjIsIDExLCAxMSwgNCwgMjIyLCA0LCAxMSwgNCwgCi0gICAgMjIyLCAzLCAxMSwgNCwgMjIyLCA4LCAxMSwgNCwgMjIyLCA3LCAxMSwgNCwgMjIyLCA1LCAxMSwgNCwgMjIyLCA2LCAxMSwgCi0gICAgNCwgMjIwLCAyMzYsIDExLCA0LCAyMjAsIDIzNSwgMTEsIDQsIDIyMCwgMjQ4LCAxMSwgNCwgMjIwLCAyNDAsIDExLCA0LCAKLSAgICAyMjAsIDI0NSwgMTEsIDQsIDIyMCwgMjQ0LCAxMSwgNCwgMjIwLCAyNDcsIDExLCA0LCAyMjAsIDI0NiwgMTEsIDQsIDIyMCwgCi0gICAgMjIxLCAxMSwgNCwgMjIwLCAyMjMsIDExLCA0LCAyMjAsIDIyMiwgMTEsIDQsIDIyMCwgMjI4LCAxMSwgNCwgMjIwLCAyMjcsIAotICAgIDExLCA0LCAyMjAsIDIzMywgMTEsIDQsIDIyMCwgMjI5LCAxMSwgNCwgMjIwLCAyMTksIDExLCA0LCAyMjAsIDIxNywgMTEsIAotICAgIDQsIDIyMCwgMjI2LCAxMSwgNCwgMjIwLCAyMjAsIDExLCA0LCAyMDMsIDE2MiwgMTEsIDQsIDIwMywgMTYxLCAxMSwgNCwgCi0gICAgMjAzLCAxNzAsIDExLCA0LCAyMDMsIDE2NCwgMTEsIDQsIDIwMywgMTY2LCAxMSwgNCwgMjAzLCAxNjUsIDExLCA0LCAyMDMsIAotICAgIDE2OCwgMTEsIDQsIDIwMywgMTY3LCAxMSwgNCwgMjAzLCAxNTAsIDExLCA0LCAyMDMsIDE1MSwgMTEsIDQsIDIwMywgMTU1LCAKLSAgICAxMSwgNCwgMjAzLCAxNTQsIDExLCA0LCAyMDMsIDE2MCwgMTEsIDQsIDIwMywgMTU4LCAxMSwgNCwgMjAzLCAxMjgsIDExLCAKLSAgICA0LCAyMDMsIDEyNiwgMTEsIDQsIDIwMywgMTQxLCAxMSwgNCwgMjAzLCAxMzEsIDExLCA0LCAyMDMsIDEyOSwgMTEsIDQsIAotICAgIDIwMywgMTMwLCAxMSwgNCwgMjAyLCAyNTMsIDExLCA0LCAyMDIsIDI1MSwgMTEsIDQsIDIwMywgMTEsIDExLCA0LCAyMDIsIAotICAgIDI1NCwgMTEsIDQsIDIwMywgNSwgMTEsIDQsIDIwMywgNCwgMTEsIDQsIDIwMywgOCwgMTEsIDQsIDIwMywgNiwgMTEsIDQsIAotICAgIDIwMiwgMTkxLCAxMSwgNCwgMjAyLCAxOTAsIDExLCA0LCAyMDIsIDE5NCwgMTEsIDQsIDIwMiwgMTkyLCAxMSwgNCwgMjAyLCAKLSAgICAyMjcsIDExLCA0LCAyMDIsIDIyMywgMTEsIDQsIDIwMiwgMjQ3LCAxMSwgNCwgMjAyLCAyMzEsIDExLCA0LCAyMDIsIDE4MiwgCi0gICAgMTEsIDQsIDIwMiwgMTc4LCAxMSwgNCwgMjAyLCAyMTMsIDExLCA0LCAyMDIsIDE4OSwgMTEsIDQsIDIwMiwgMTg1LCAxMSwgCi0gICAgNCwgMjAyLCAxODYsIDExLCA0LCAyMDIsIDE2MiwgMTEsIDQsIDIwMiwgMTYxLCAxMSwgNCwgMjAyLCAxNjksIDExLCA0LCAKLSAgICAyMDIsIDE2NSwgMTEsIDQsIDIwMiwgMTYzLCAxMSwgNCwgMjAyLCAxNjQsIDExLCA0MCwgMjE3LCA2OCwgMTEsIDQwLCAyMjcsIAotICAgIDE0OCwgMTEsIDQwLCAyMjksIDY0LCAxMSwgNDAsIDIyMCwgMjQwLCAxMSwgNDAsIDI0NSwgNjAsIDExLCA0MCwgMjExLCAKLSAgICAxMzIsIDExLCA0MCwgMjM4LCAxMzgsIDExLCA0MCwgMjM4LCAxNzAsIDExLCA0MCwgMjI0LCAxNTUsIDExLCA0MCwgMjM1LCAKLSAgICAyMzMsIDExLCA0MCwgMjI2LCAxOTIsIDExLCA0MCwgMjQ4LCAxNzAsIDExLCA0MCwgMjI0LCAyNywgMTEsIDQwLCAyMDIsIAotICAgIDI0NywgMTEsIDQwLCAyMTcsIDE1OSwgMTEsIDQwLCAyMzUsIDIyNywgMTEsIDQwLCAyMDksIDIxMiwgMTEsIDQwLCAyMzksIAotICAgIDgsIDExLCA0MCwgMjAxLCAyNTQsIDExLCA0MCwgMjQ1LCA1NCwgMTEsIDQwLCAyNDQsIDgwLCAxMSwgNDAsIDI0NywgMTYwLCAKLSAgICAxMSwgNDAsIDIzOCwgMTM0LCAxMSwgNDAsIDIyMCwgMjI5LCAxMSwgNDAsIDIwNywgMjAzLCAxMSwgNDAsIDIyMCwgOSwgMTEsIAotICAgIDQwLCAyMzAsIDEwNywgMTEsIDQwLCAyMDIsIDEzLCAxMSwgNDAsIDIxNywgMTM4LCAxMSwgNDAsIDIzNiwgMTc4LCAxMSwgCi0gICAgNDAsIDIwMiwgMjUzLCAxMSwgNDAsIDIwNCwgMTU5LCAxMSwgNDAsIDIxMiwgMTcxLCAxMSwgNDAsIDIwNiwgNDQsIDExLCAKLSAgICA0MCwgMjAyLCAxMTYsIDExLCA0MCwgMjMwLCAxMDEsIDExLCA0MCwgMjIwLCAxOTMsIDExLCA0MCwgMjMwLCAxMDUsIDExLCAKLSAgICA0MCwgMjM4LCAxOCwgMTEsIDQwLCAyMzAsIDEyNSwgMTEsIDQwLCAyMDQsIDAsIDExLCA0MCwgMjQyLCA0MiwgMTEsIDQwLCAKLSAgICAyMTIsIDE4NiwgMTEsIDQwLCAyMjcsIDE0MiwgMTEsIDQwLCAyNDUsIDY2LCAxMSwgNDAsIDI0NSwgMTAyLCAxMSwgNDAsIAotICAgIDI0NiwgNjMsIDExLCA0MCwgMjM1LCAyMzAsIDExLCA0MCwgMjEzLCA1MywgMTEsIDQwLCAyMDEsIDI1MywgMTEsIDQwLCAKLSAgICAyMTIsIDIzMiwgMTEsIDQwLCAyNDYsIDE3MCwgMTEsIDQwLCAyMDEsIDIyMywgMTEsIDQwLCAyMjMsIDUxLCAxMSwgNDAsIAotICAgIDIyOSwgMjAxLCAyMjcsIDkxLCAxLCAyNDksIDMyLCAyMjcsIDkxLCAxLCAxODUsIDIyNywgOTEsIDEsIDIxOCwgMjA4LCAKLSAgICAyMjcsIDkxLCAxLCAyNDQsIDIxMiwgMjI3LCA5MSwgMSwgMjEwLCAyMiwgMjI3LCA5MSwgMSwgMjA5LCAxMDgsIDIyNywgOTEsIAotICAgIDEsIDIzOSwgOCwgMjI3LCA5MSwgMSwgMTczLCAyMjcsIDkxLCAxLCAyMjksIDE0NCwgMjI3LCA5MSwgMSwgMjMwLCAxODEsIAotICAgIDIyNywgOTEsIDEsIDI0NywgOTIsIDIyNywgOTEsIDEsIDI0NiwgMTk5LCAyMjcsIDkxLCAxLCAyNDEsIDI1NSwgMjI3LCA5MSwgCi0gICAgMSwgMjA4LCAyMCwgMjI3LCA5MSwgMSwgMjA4LCAxMCwgMjI3LCA5MSwgMSwgMTkyLCAyMjcsIDkxLCAxLCAyMDEsIDIwMSwgCi0gICAgMjI3LCA5MSwgMSwgMjI4LCAxMTMsIDIyNywgOTEsIDEsIDIxNSwgMzYsIDIyNywgOTEsIDEsIDIwMiwgODAsIDIyNywgOTEsIAotICAgIDEsIDIwMiwgMTE2LCAyMjcsIDkxLCAxLCAyMjIsIDIwMywgMjI3LCA5MSwgMSwgMTUyLCAyMjcsIDkxLCAxLCAyMDMsIDE4MiwgCi0gICAgMjI3LCA5MSwgMSwgMjM3LCAxMiwgMjI3LCA5MSwgMSwgMjQwLCAxMDgsIDIyNywgOTEsIDEsIDIwNCwgMTExLCAyMjcsIDkxLCAKLSAgICAxLCAyMTMsIDkwLCAyMjcsIDkxLCAxLCAxOTgsIDIyNywgOTEsIDEsIDIzOCwgMTE5LCAyMjcsIDkxLCAxLCA2MywgMjI3LCAKLSAgICA5MSwgMSwgMjUxLCAxMDksIDIyNywgOTEsIDEsIDc0LCAyMjcsIDkxLCAxLCAyNDAsIDIzOCwgMjI3LCA5MSwgMSwgNzUsIAotICAgIDIyNywgOTEsIDEsIDc4LCAyMjcsIDkxLCAxLCA2OCwgMjI3LCA5MSwgMSwgMjA3LCAyNCwgMjI3LCA5MSwgMSwgMjA3LCAxOCwgCi0gICAgMjI3LCA5MSwgMSwgMjIwLCA3MywgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjA5LCAyLCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTExLCAyMTgsIDY5LCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyNDUsIDY1LCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTcwLCAyNDgsIDIzLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDEsIDIwMSwgMjI3LCA5MSwgMSwgMTQzLCAKLSAgICAyMjMsIDE3MCwgMjMwLCAxNTAsIDIyNywgOTEsIDIxNywgMTc5LCAyNDUsIDIzMywgMjI3LCA5MSwgMjE3LCAxNzksIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA0OCwgNCwgMjQxLCAxNjEsIDQ4LCA0LCAyNDEsIDE1NywgNDgsIDQsIDIzNywgNDgsIDQ4LCA0LCAKLSAgICAyMDQsIDU1LCA0OCwgNCwgMjA0LCA1NCwgNDgsIDQsIDIxOSwgMjMsIDQ4LCA0LCAyNDgsIDkzLCA0OCwgNCwgMjQ4LCAxNTAsIAotICAgIDQ4LCA0LCAyMjUsIDQ2LCA0OCwgNCwgMjI4LCAyMzksIDQ4LCA0LCAyMjQsIDE4NywgNDgsIDQsIDIzOCwgMjAzLCA0OCwgNCwgCi0gICAgMjQwLCA1MywgNDgsIDQsIDIwNiwgNTAsIDQ4LCA0LCAyMDksIDE3NiwgNDgsIDQsIDIwOSwgOTAsIDQ4LCA0LCAyNDMsIAotICAgIDI0NywgNDgsIDQsIDI0MywgMjQ0LCA0OCwgNCwgMjI3LCAyMjYsIDQ4LCA0LCAyMTYsIDEzNSwgNDgsIDQsIDI0NCwgNjEsIAotICAgIDQ4LCA0LCAyMjMsIDE2LCA0OCwgNCwgMjE0LCAxNjUsIDQ4LCA0LCAyMTMsIDQxLCA0OCwgNCwgMjAyLCA5MCwgNDgsIDQsIAotICAgIDIwMiwgNzAsIDQ4LCA0LCAyNDYsIDIzMCwgNDgsIDQsIDIzMCwgMTU5LCA0OCwgNCwgMjIyLCAzOSwgNDgsIDQsIDIwMywgCi0gICAgNDksIDQ4LCA0LCAyMjksIDE5OCwgNDgsIDQsIDIyMiwgMTc2LCA0OCwgNCwgMjM4LCAxODIsIDQ4LCA0LCAyMjUsIDgsIDQ4LCAKLSAgICA0LCAyMjIsIDIzNSwgNDgsIDQsIDIyMSwgMCwgNDgsIDQsIDc1LCA0OCwgNCwgMjMxLCA0OSwgNDgsIDQsIDIzNywgMywgNDgsIAotICAgIDQsIDIzNiwgMjM4LCA0OCwgNCwgMjA0LCAzMCwgNDgsIDQsIDIwNCwgMTgsIDQ4LCA0LCAyMTgsIDE2NywgNDgsIDQsIDI0OCwgCi0gICAgOTEsIDQ4LCA0LCAyNDgsIDg2LCA0OCwgNCwgMjI1LCAzOSwgNDgsIDQsIDIyOCwgMjM2LCA0OCwgNCwgMjI0LCAxODQsIDQ4LCAKLSAgICA0LCAyMzgsIDE5OSwgNDgsIDQsIDI0MCwgMjYsIDQ4LCA0LCAyMDUsIDIzMCwgNDgsIDQsIDIwOSwgMiwgNDgsIDQsIDIwOSwgCi0gICAgNzAsIDQ4LCA0LCAyNDMsIDIzOSwgNDgsIDQsIDI0MywgMjQzLCA0OCwgNCwgMjI3LCAxNDgsIDQ4LCA0LCAyMTYsIDU3LCAKLSAgICA0OCwgNCwgMjQzLCAyMzMsIDQ4LCA0LCAyMjMsIDEwLCA0OCwgNCwgMjEyLCAxNjIsIDQ4LCA0LCAyMTMsIDExLCA0OCwgNCwgCi0gICAgMjAyLCAzOSwgNDgsIDQsIDIwMiwgNjYsIDQ4LCA0LCAyNDYsIDc5LCA0OCwgNCwgMjMwLCAxNDEsIDQ4LCA0LCAyMjIsIDMyLCAKLSAgICA0OCwgNCwgMjAzLCAxMSwgNDgsIDQsIDIyOSwgMTAwLCA0OCwgNCwgMjIyLCAxNjgsIDQ4LCA0LCAyMzgsIDgxLCA0OCwgNCwgCi0gICAgMjI0LCAxNTUsIDQ4LCA0LCAyMjIsIDEwMCwgNDgsIDQsIDIyMCwgMjQ4LCA0OCwgNCwgNjMsIDQ4LCA0LCAyNTAsIDIzMSwgCi0gICAgNDgsIDQsIDIyMiwgMTk4LCA0OCwgNCwgMTUyLCA0OCwgNCwgMjM3LCAxMjYsIDQ4LCA0LCAyMDQsIDExMSwgNDgsIDQsIAotICAgIDIwNCwgOTcsIDQ4LCA0LCAxODUsIDQ4LCA0LCAyNDgsIDk4LCA0OCwgNCwgMjQ5LCAzMiwgNDgsIDQsIDIyNSwgNTQsIDQ4LCAKLSAgICA0LCAyMjgsIDI0NCwgNDgsIDQsIDIyOCwgMjQyLCA0OCwgNCwgMjI0LCAxOTEsIDQ4LCA0LCAyMzgsIDIwNywgNDgsIDQsIAotICAgIDI0MCwgMTA4LCA0OCwgNCwgMjA2LCA4NiwgNDgsIDQsIDIxMCwgMjIsIDQ4LCA0LCAyMDksIDEwOCwgNDgsIDQsIDI0NCwgMSwgCi0gICAgNDgsIDQsIDI0MywgMjQ2LCA0OCwgNCwgMjI4LCAxMTMsIDQ4LCA0LCAyMTYsIDIyMCwgNDgsIDQsIDI0NCwgMjEyLCA0OCwgCi0gICAgNCwgMjIzLCAyNSwgNDgsIDQsIDIxNSwgMzYsIDQ4LCA0LCAyMTMsIDkwLCA0OCwgNCwgMjAyLCAxMTYsIDQ4LCA0LCAyMDIsIAotICAgIDgwLCA0OCwgNCwgMjQ3LCA5MiwgNDgsIDQsIDIzMCwgMTgxLCA0OCwgNCwgMjIyLCA0OCwgNDgsIDQsIDE5OCwgNDgsIDQsIAotICAgIDE3MywgNDgsIDQsIDIzMCwgNCwgNDgsIDQsIDIyMiwgMTgyLCA0OCwgNCwgMjM5LCA4LCA0OCwgNCwgMTkyLCA0OCwgNCwgCi0gICAgMjAxLCAyMDEsIDQ4LCA0LCAyMjEsIDExLCA0OCwgNCwgMjIwLCAxOCwgNDgsIDQsIDIyMCwgMTMsIDQ4LCA0LCAyMzYsIAotICAgIDExNywgNDgsIDQsIDIwMywgMjQ0LCA0OCwgNCwgMjAzLCAyNDAsIDQ4LCA0LCAyMTgsIDQ1LCA0OCwgNCwgMjQ4LCA4OSwgCi0gICAgNDgsIDQsIDI0OCwgMTAsIDQ4LCA0LCAyMjUsIDM0LCA0OCwgNCwgMjI4LCAyMzQsIDQ4LCA0LCAyMjQsIDE4MCwgNDgsIDQsIAotICAgIDIzOCwgMTk1LCA0OCwgNCwgMjM5LCAxNzUsIDQ4LCA0LCAyMDUsIDE3NiwgNDgsIDQsIDIwOCwgMTQ4LCA0OCwgNCwgMjA5LCAKLSAgICA0MiwgNDgsIDQsIDI0MywgMjM2LCA0OCwgNCwgMjQzLCAyNDEsIDQ4LCA0LCAyMjcsIDE4LCA0OCwgNCwgMjE1LCAyMDgsIAotICAgIDQ4LCA0LCAyNDMsIDkwLCA0OCwgNCwgMjIyLCAyNTMsIDQ4LCA0LCAyMTEsIDI1MCwgNDgsIDQsIDIxMiwgMjM2LCA0OCwgNCwgCi0gICAgMjAyLCAxNSwgNDgsIDQsIDIwMiwgNjEsIDQ4LCA0LCAyNDUsIDE4MCwgNDgsIDQsIDIzMCwgOTEsIDQ4LCA0LCAyMjIsIDIyLCAKLSAgICA0OCwgNCwgMjAyLCAyMzIsIDQ4LCA0LCAyMjksIDYsIDQ4LCA0LCAyMjIsIDE2NiwgNDgsIDQsIDIzOCwgMjgsIDQ4LCA0LCAKLSAgICAyMjQsIDM1LCA0OCwgNCwgMjIxLCAxODAsIDQ4LCA0LCAyMjAsIDIzMCwgNDgsIDQsIDY4LCA0OCwgNCwgMjA2LCAyNTUsIAotICAgIDQ4LCA0LCAyMzYsIDI2LCA0OCwgNCwgMjM2LCAxMywgNDgsIDQsIDIwMywgMjE3LCA0OCwgNCwgMjAzLCAyMTAsIDQ4LCA0LCAKLSAgICAyMTcsIDE5MSwgNDgsIDQsIDI0OCwgODgsIDQ4LCA0LCAyNDcsIDE5MywgNDgsIDQsIDIyNSwgMzMsIDQ4LCA0LCAyMjgsIAotICAgIDIzMiwgNDgsIDQsIDIyNCwgMTc5LCA0OCwgNCwgMjM4LCAxOTQsIDQ4LCA0LCAyMzksIDEwOCwgNDgsIDQsIDIwNCwgMTYzLCAKLSAgICA0OCwgNCwgMjA3LCAyMDMsIDQ4LCA0LCAyMDksIDIyLCA0OCwgNCwgMjQzLCAyMzQsIDQ4LCA0LCAyNDMsIDI0MCwgNDgsIDQsIAotICAgIDIyNiwgMjM5LCA0OCwgNCwgMjE1LCAxNDUsIDQ4LCA0LCAyNDIsIDQyLCA0OCwgNCwgMjIyLCAyNDgsIDQ4LCA0LCAyMTEsIAotICAgIDEwLCA0OCwgNCwgMjEyLCAxOTksIDQ4LCA0LCAyMDIsIDYsIDQ4LCA0LCAyMDIsIDU3LCA0OCwgNCwgMjQ1LCAxMTAsIDQ4LCAKLSAgICA0LCAyMzAsIDgyLCA0OCwgNCwgMjIyLCAxOCwgNDgsIDQsIDIwMiwgMjEzLCA0OCwgNCwgMjI4LCAyMDksIDQ4LCA0LCAyMjIsIAotICAgIDE2NSwgNDgsIDQsIDIzNywgMjMwLCA0OCwgNCwgMjIzLCAyNDYsIDQ4LCA0LCAyMjEsIDg0LCA0OCwgNCwgMjIwLCAyMjYsIAotICAgIDQ4LCA0LCA3OCwgNDgsIDQsIDIyMCwgMzEsIDQ4LCA0LCAyMjIsIDEyNCwgNDgsIDQsIDIzNiwgMTM2LCA0OCwgNCwgMjM2LCAKLSAgICAxMjAsIDQ4LCA0LCAyMDQsIDAsIDQ4LCA0LCAyMDMsIDI0NSwgNDgsIDQsIDIxOCwgNjksIDQ4LCA0LCAyNDgsIDkwLCA0OCwgCi0gICAgNCwgMjQ4LCAyMywgNDgsIDQsIDIyNSwgMzUsIDQ4LCA0LCAyMjgsIDIzNSwgNDgsIDQsIDIyNCwgMTgyLCA0OCwgNCwgMjM4LCAKLSAgICAxOTcsIDQ4LCA0LCAyMzgsIDE5NiwgNDgsIDQsIDIzOSwgMTg2LCA0OCwgNCwgMjA1LCAxODksIDQ4LCA0LCAxMzUsIDQ4LCAKLSAgICA0LCAyMDksIDQ3LCA0OCwgNCwgMjQzLCAyMzcsIDQ4LCA0LCAyNDMsIDI0MiwgNDgsIDQsIDIyNywgNDksIDQ4LCA0LCAyMTUsIAotICAgIDIyNywgNDgsIDQsIDI0MywgMTEzLCA0OCwgNCwgMjIzLCAxLCA0OCwgNCwgMjEyLCAxMywgNDgsIDQsIDIxMiwgMjQyLCA0OCwgCi0gICAgNCwgMjAyLCAxNywgNDgsIDQsIDIwMiwgNjMsIDQ4LCA0LCAyNDUsIDI1NCwgNDgsIDQsIDIzMCwgMTAxLCA0OCwgNCwgMjIyLCAKLSAgICAyMywgNDgsIDQsIDIwMiwgMjQ3LCA0OCwgNCwgMjI5LCAyNiwgNDgsIDQsIDIyMiwgMTY3LCA0OCwgNCwgMjM4LCAzOSwgNDgsIAotICAgIDQsIDIyNCwgODIsIDQ4LCA0LCAyMjEsIDE5MSwgNDgsIDQsIDIyMCwgMjMzLCA0OCwgNCwgNzQsIDQ4LCA0LCAyNDEsIDkyLCAKLSAgICA0OCwgNCwgMjIyLCAxODcsIDQ4LCA0LCAyMzcsIDY3LCA0OCwgNCwgMjM3LCAzMywgNDgsIDQsIDIwNCwgNjIsIDQ4LCA0LCAKLSAgICAyMDQsIDQ5LCA0OCwgNCwgMjE5LCAzNCwgNDgsIDQsIDI0OCwgOTQsIDQ4LCA0LCAyNDgsIDE2MiwgNDgsIDQsIDIyNSwgNDcsIAotICAgIDQ4LCA0LCAyMjgsIDI0MCwgNDgsIDQsIDIyOCwgMjM4LCA0OCwgNCwgMjI0LCAxODgsIDQ4LCA0LCAyMzgsIDIwNCwgNDgsIAotICAgIDQsIDIzOCwgMjAyLCA0OCwgNCwgMjQwLCA2MCwgNDgsIDQsIDIwNiwgNTUsIDQ4LCA0LCAyMDksIDE4NywgNDgsIDQsIDIwOSwgCi0gICAgOTIsIDQ4LCA0LCAyNDMsIDI0OCwgNDgsIDQsIDI0MywgMjQ1LCA0OCwgNCwgMjI3LCAyMzQsIDQ4LCA0LCAyMTYsIDE1OCwgCi0gICAgNDgsIDQsIDI0NCwgNzUsIDQ4LCA0LCAyMjMsIDE3LCA0OCwgNCwgMjE0LCAxNzcsIDQ4LCA0LCAyMTMsIDQzLCA0OCwgNCwgCi0gICAgMjAyLCA5MiwgNDgsIDQsIDIwMiwgNzEsIDQ4LCA0LCAyNDYsIDIzOCwgNDgsIDQsIDIzMCwgMTYxLCA0OCwgNCwgMjIyLCAKLSAgICA0MSwgNDgsIDQsIDIwMywgNTIsIDQ4LCA0LCAyMjksIDIwMSwgNDgsIDQsIDIyMiwgMTc3LCA0OCwgNCwgMjIyLCAxNzMsIAotICAgIDQ4LCA0LCAyMzgsIDE5MCwgNDgsIDQsIDIzOCwgMTc3LCA0OCwgNCwgMjI1LCAyMCwgNDgsIDQsIDIyMiwgMjQwLCA0OCwgNCwgCi0gICAgMjIxLCAxLCA0OCwgNCwgMjIyLCAyMDUsIDQ4LCA0LCAyMjcsIDE4OCwgNDgsIDI0NSwgMjMzLCA0OCwgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDQ4LCAyMTcsIDQ3LCA4MiwgNDgsIDQsIDIyMywgMCwgMjQwLCAxMDgsIDQ4LCA0LCAyMjMsIDAsIDE3MywgCi0gICAgNDgsIDQsIDIyMywgMCwgMjExLCAyNTAsIDQ4LCAxNiwgMjQwLCA0OSwgNDgsIDE2LCAyMjksIDE5NiwgNDgsIDE2LCAyMDgsIAotICAgIDIxNSwgNDgsIDE2LCAyMjIsIDc1LCA0OCwgMTYsIDI0OCwgMjM3LCA0OCwgMTYsIDI0MCwgMTA3LCA0OCwgMTYsIDIxMCwgCi0gICAgMTgsIDQ4LCAxNiwgMjQ0LCAxNjQsIDQ4LCAxNiwgMjQzLCA4OSwgNDgsIDE2LCAyMjgsIDE5MywgNDgsIDE2LCAyMDgsIAotICAgIDE1MiwgNDgsIDE2LCAyNDMsIDExMiwgNDgsIDE2LCAyMzAsIDkyLCA0OCwgMTcsIDIwMiwgODQsIDQ4LCAxNywgMTA1LCA0OCwgCi0gICAgMTcsIDEwOCwgNDgsIDE3LCAxNDcsIDQ4LCAxNywgMTQ5LCA0OCwgMTcsIDE3MCwgNDgsIDE3LCAxOTUsIDQ4LCAxNywgMjEzLCAKLSAgICAxMTEsIDQ4LCAxNywgMTk5LCA0OCwgMTcsIDIyMiwgNjMsIDQ4LCA0LCAyMjMsIDAsIDE5MiwgNDgsIDQsIDIyMywgMCwgCi0gICAgMjQzLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDg4LCAzNiwgNSwgMSwgMjAyLCA4OCwgMzYsIDYsIDEsIDI0MSwgMjUwLCAzNiwgCi0gICAgNSwgMSwgMjQxLCAyNTAsIDM2LCA2LCAxLCAyMTYsIDczLCAyNDEsIDI1MiwgMzYsIDUsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAKLSAgICAzNiwgNiwgMSwgMjMwLCAyMzAsIDM2LCA1LCAxLCAyMzAsIDIzMCwgMzYsIDYsIDEsIDI0MywgMTI5LCAzNiwgNSwgMSwgCi0gICAgMjQzLCAxMjksIDM2LCA2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNSwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzYsIDYsIAotICAgIDEsIDI0NywgMjA0LCAyMjAsIDM2LCAzNiwgNSwgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA2LCAxLCAyMjIsIDIxNiwgCi0gICAgMjAzLCAzNCwgMzYsIDUsIDEsIDIyMiwgMjE2LCAyMDMsIDM0LCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAKLSAgICAzNCwgMzYsIDUsIDEsIDIwMywgMzEsIDMsIDI0OSwgMjYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMzAsIDIyOCwgMjAzLCA2NiwgCi0gICAgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCAyMTMsIDM2LCA1LCAxLCAyMTYsIAotICAgIDczLCAyMDIsIDIxMywgMzYsIDYsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDUsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDYsIDEsIAotICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA2LCAKLSAgICAxLCAyNDgsIDM1LCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIAotICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgCi0gICAgMTgzLCAzNiwgNiwgMSwgMjAyLCAyNDksIDM2LCA1LCAxLCAyMDIsIDI0OSwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIAotICAgIDM2LCA1LCAxLCAyMTYsIDczLCAyMDgsIDE0LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDQsIDc1LCAzNiwgNSwgMSwgMjEyLCA3LCAKLSAgICAyNDQsIDc1LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDUsIDEsIDIxMiwgNywgMjQxLCAxMjIsIDM2LCA2LCAKLSAgICAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEwMywgMzYsIDYsIDEsIDIyNCwgNDcsIDc4LCAKLSAgICAzNiwgNSwgMSwgMjI0LCA0NywgNzgsIDM2LCA2LCAxLCAyNDgsIDYzLCA3OCwgMzYsIDUsIDEsIDI0OCwgNjMsIDc4LCAzNiwgCi0gICAgNiwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgNSwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgMSwgMjIzLCAyMjcsIDc4LCAKLSAgICAzOSwgMzYsIDIwNCwgMTQ2LCAzOSwgMzYsIDIwOSwgMTUzLCAyMjQsIDExNCwgNTQsIDM5LCAzNiwgMjM2LCAxMiwgMjI0LCAKLSAgICAxMTQsIDU0LCAzOSwgMzYsIDIwOSwgMzcsIDIyNCwgMTE0LCA1NCwgMjEyLCA1NSwgMjUwLCA1OSwgMzksIDM2LCAxLCAyMDcsIAotICAgIDExLCAyMzEsIDExMCwgMzksIDM2LCAxLCA3NSwgMzksIDM2LCAxLCAyMDMsIDExLCAzOSwgMzYsIDEsIDY4LCAzOSwgMzYsIAotICAgIDEsIDIzNywgOTEsIDU0LCAzOSwgMzYsIDEsIDIwMywgMzAsIDM5LCAzNiwgMSwgMjEyLCA3LCA1NCwgMzksIDM2LCAxLCAKLSAgICAyMjAsIDM2LCAzOSwgMzYsIDIyOSwgMjEzLCAzOSwgMzYsIDIxOSwgNDEsIDM2LCAyMjksIDIxMywgMzYsIDIxOSwgNDEsIAotICAgIDM2LCA2LCAxLCAyNDIsIDksIDM2LCA1LCAxLCAyNDIsIDksIDM2LCA2LCAxLCAyNDEsIDI0MSwgMzYsIDUsIDEsIDI0MSwgCi0gICAgMjQxLCAzNiwgNiwgMSwgMjAyLCA0NywgMzYsIDUsIDEsIDIwMiwgNDcsIDM2LCA2LCAxLCAyNDYsIDI1NCwgMzYsIDUsIDEsIAotICAgIDI0NiwgMjU0LCAzNiwgNiwgMSwgMjQxLCAyMzgsIDM2LCA1LCAxLCAyNDEsIDIzOCwgMzYsIDYsIDEsIDIwOSwgMTg4LCAzLCAKLSAgICAxMDEsIDExMywgMzYsIDUsIDEsIDIwOSwgMTg4LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwNywgMTU4LCAzNiwgNSwgMSwgCi0gICAgMjA3LCAxNTgsIDM2LCA2LCAxLCAyMDcsIDI0NSwgMzYsIDUsIDEsIDIwNywgMjQ1LCAzNiwgNiwgMSwgMjA3LCAyNTAsIDM2LCAKLSAgICA1LCAxLCAyMDcsIDI1MCwgMzYsIDYsIDEsIDIwOSwgMTkzLCAzNiwgNSwgMSwgMjA5LCAxOTMsIDM2LCA2LCAxLCAyMzUsIAotICAgIDI1MSwgMzYsIDUsIDEsIDIzNSwgMjUxLCAzNiwgNiwgMSwgMjEyLCAxNzcsIDM2LCA1LCAxLCAyMTIsIDE3NywgMzYsIDYsIAotICAgIDEsIDUyLCA3OCwgMzYsIDUsIDEsIDUyLCA3OCwgMzYsIDYsIDEsIDI0NSwgMTI4LCA3OCwgMzYsIDUsIDEsIDI0NSwgMTI4LCAKLSAgICA3OCwgNjUsIDEsIDM2LCAyMzcsIDkxLCA1NCwgNjUsIDEsIDM2LCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIDI0MSwgMTU0LCAKLSAgICAzOSwgMzYsIDEsIDIzMCwgMjI4LCA3NCwgMjQsIDEsIDYzLCAyNCwgMSwgMTczLCAyNCwgMSwgNjgsIDI0LCAxLCAyMjgsIAotICAgIDIwOSwgMjQsIDEsIDI0MSwgMTYxLCAyNCwgMSwgMjE2LCAxMzUsIDI0LCAxLCAyMTAsIDEsIDI0LCAxLCA3OCwgMjQsIDEsIAotICAgIDIyMCwgMjQ4LCAyNCwgMSwgNzUsIDI0LCAxLCAyMjgsIDExMywgMjQsIDEsIDE4NSwgMjQsIDEsIDIxNiwgMywgMjQsIDEsIAotICAgIDIxNiwgNTAsIDI0LCAxLCAyMjcsIDIyNSwgMjQsIDEsIDIyNSwgNywgMjQsIDEsIDIxMCwgMTgsIDI0LCAxLCAyMjMsIDIzLCAKLSAgICAyNCwgMSwgMjIyLCA0NiwgMjQsIDEsIDIyNiwgMTg1LCAyNCwgMSwgMjEwLCAxNzksIDI0LCAxLCAyMjMsIDI0NiwgMjQsIDEsIAotICAgIDIxMywgNiwgMjQsIDEsIDIxMiwgMTYyLCAyNCwgMSwgMjEzLCAxNiwgMjQsIDEsIDIxMywgMTEzLCAyNCwgMSwgMjI4LCAKLSAgICAxMzcsIDI0LCAxLCAyMjksIDE3MCwgMjQsIDEsIDIyMSwgNTUsIDI0LCAxLCAyMjEsIDg0LCAyNCwgMSwgMjIyLCAxNywgMjQsIAotICAgIDEsIDIwMiwgMjI5LCAyNCwgMSwgMjEyLCAxOTksIDI0LCAxLCAyMDIsIDE4NywgMjQsIDEsIDE5OCwgMjQsIDEsIDIyMSwgCi0gICAgMTE4LCAyNCwgMSwgMjI5LCAxNTYsIDI0LCAxLCAyMTgsIDIxMiwgMjQsIDEsIDIyMiwgMzksIDI0LCAxLCAyMjEsIDk5LCAKLSAgICAyNCwgMSwgMjE3LCAxODMsIDI0LCAxLCAyMDMsIDIxNCwgMjQsIDEsIDIxOSwgMjMsIDI0LCAxLCAyNDAsIDUzLCAyNCwgMSwgCi0gICAgMjE1LCAxNDUsIDI0LCAxLCAyMjYsIDIzOSwgMjQsIDEsIDIyNCwgMTU1LCAyNCwgMSwgMjIyLCAxMDAsIDI0LCAxLCAyMTYsIAotICAgIDc1LCAyNCwgMSwgMjE2LCAyMDIsIDI0LCAxLCAyMjksIDE4MCwgMjQsIDEsIDIyMiwgMTMxLCAyNCwgMSwgMjIyLCAxODIsIAotICAgIDI0LCAxLCAyMjIsIDIwMywgMjQsIDEsIDIxMiwgMjQyLCAyNCwgMSwgMjE3LCAxODgsIDI0LCAxLCAyMzksIDEwOCwgMjQsIAotICAgIDEsIDIzOSwgMTc5LCAyNCwgMSwgMjA0LCAxMTEsIDI0LCAxLCAyMDEsIDIwMSwgMjQsIDEsIDIyNywgMTQ4LCAyNCwgMSwgCi0gICAgMjE4LCAxNjcsIDI0LCAxLCAyMjcsIDEwLCAyNCwgMSwgMjI5LCAyNiwgMjQsIDEsIDIyNSwgNDQsIDI0LCAxLCAyMTYsIAotICAgIDEwNywgMjQsIDEsIDIyNCwgMjQwLCAyNCwgMSwgMTkyLCAyNCwgMSwgMjA5LCAyLCAyNCwgMSwgMjI5LCAxMDAsIDI0LCAxLCAKLSAgICAyMjQsIDgyLCAyNCwgMSwgMjI1LCA1MiwgMjQsIDEsIDIwOSwgMTMyLCAyNCwgMSwgMjI4LCAyNDQsIDI0LCAxLCAyMDksIAotICAgIDE1MiwgMjQsIDEsIDIyMSwgODYsIDI0LCAxLCAyMTQsIDI1MSwgMjQsIDEsIDI0MCwgMTA0LCAyNCwgMSwgMjI4LCAyNDYsIAotICAgIDI0LCAxLCAyMjksIDIxLCAyNCwgMzksIDEzMSwgMjI4LCAyNTUsIDI0LCAzOSwgMTMxLCAyMDcsIDE5NCwgMjQsIDIyMiwgCi0gICAgNDUsIDI0LCAyMzksIDEwMiwgMjExLCA2MSwgMjQsIDI0NSwgMjQyLCAyNCwgMjQ1LCAyMzMsIDI0LCAyMTMsIDE0MywgMjQsIAotICAgIDIxNywgNDcsIDgyLCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTgsIDExOSwgNjUsIDEsIDI0NiwgMTI4LCAKLSAgICAxNDMsIDIwMywgNzcsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTMsIDY1LCA2NSwgMSwgCi0gICAgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjEzLCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjE3LCA2NSwgCi0gICAgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxNywgNjUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIAotICAgIDIxNSwgMTQ1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE1LCAxNDUsIDY1LCAxLCAyNDAsIDE5OCwgMjQyLCAKLSAgICA4MywgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIAotICAgIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyNDIsIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAxNDMsIAotICAgIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIAotICAgIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAKLSAgICAxMjQsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAyMjcsIDIxNCwgCi0gICAgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5OCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyMjcsIDIxNCwgMTQzLCAKLSAgICAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyMjcsIDIxNCwgMTQzLCAxNDIsIAotICAgIDY1LCAxLCAyNDAsIDE5NywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgNzAsIDgwLCAxNDIsIDY1LCAxLCA3MCwgMjEyLCAKLSAgICA1NywgNjUsIDEsIDcwLCAyMzYsIDEwNiwgMTQyLCA2NSwgMSwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMjUwLCAyMTcsIAotICAgIDY1LCAxLCAyMTYsIDE4OCwgMTEyLCA0NywgNjUsIDEsIDIxNiwgMTg4LCAxMjEsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDI0MCwgCi0gICAgMjEyLCA4MiwgNjUsIDEsIDIxNiwgMTg4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMTI0LCAyMzAsIDIzOSwgCi0gICAgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMjExLCA0MiwgMjUsIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTI0LCAKLSAgICAyMDgsIDE2MSwgOCwgNiwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDUsIDEsIDI0MSwgMTQ5LCAyNTEsIDMwLCA4LCA2LCAKLSAgICAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgNTksIDgsIDYsIDEsIDIzNywgMzEsIDgsIDUsIAotICAgIDEsIDIzNywgMzEsIDgsIDYsIDEsIDIwNywgMTA3LCA4LCA1LCAxLCAyMDcsIDEwNywgOCwgNiwgMSwgMjA4LCA4OSwgOCwgNSwgCi0gICAgMSwgMjA4LCA4OSwgOCwgNiwgMSwgMjQ1LCAxMDcsIDgsIDUsIDEsIDI0NSwgMTA3LCA4LCA2LCAxLCAyNDUsIDEwOCwgMywgCi0gICAgMjQ1LCAyMzMsIDgsIDUsIDEsIDI0NSwgMTA4LCAzLCAyNDUsIDIzMywgOCwgMSwgNSwgNiwgMjQwLCAxNzQsIDgsIDEsIDUsIAotICAgIDYsIDE5NCwgOCwgNiwgMSwgMjUyLCAyNSwgOCwgNSwgMSwgMjUyLCAyNSwgOCwgNiwgMSwgMjUwLCAxNzgsIDgsIDUsIDEsIAotICAgIDI1MCwgMTc4LCA4LCA2LCAxLCAyNTAsIDM0LCA4LCA1LCAxLCAyNTAsIDM0LCA4LCA2LCAxLCAyNTAsIDE4LCA4LCA1LCAxLCAKLSAgICAyNTAsIDE4LCA4LCA2LCAxLCAyNTAsIDE5LCAzLCAyMzYsIDEwNiwgMTQyLCA4LCA1LCAxLCAyNTAsIDE5LCAzLCAyMzYsIAotICAgIDEwNiwgMTQyLCA4LCA2LCAxLCAyNTAsIDgsIDgsIDUsIDEsIDI1MCwgOCwgOCwgNiwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIAotICAgIDMsIDI0MywgODUsIDgsIDUsIDEsIDIxNiwgNzMsIDI0NywgMTI2LCAzLCAyNDMsIDg1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKLSAgICA5NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgCi0gICAgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCAKLSAgICA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyNDcsIDIwMywgMTU5LCAKLSAgICA4LCA1LCAxLCAyNDcsIDIwMywgMTU5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTM4LCA5NSwgOCwgNSwgMSwgMjI4LCAxMzEsIAotICAgIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDE1OCwgMywgMTYzLCAyMTEsIDMyLCAyMTksIDE5OSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA2LCAxLCAxNTgsIDMsIDIyNywgMTQsIDgsIDUsIDEsIDE1OCwgMywgMjI3LCAKLSAgICAxNCwgOCwgNiwgMSwgMjIwLCAxOCwgOCwgNSwgMSwgMjIwLCAxOCwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIAotICAgIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyMTksIDE4NSwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjE5LCAKLSAgICAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgCi0gICAgNiwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAyMTEsIAotICAgIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMTcsIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMTcsIAotICAgIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDIxNSwgMTkyLCA4LCA1LCAxLCAyMTcsIDEsIDIxNSwgCi0gICAgMTkyLCA4LCA2LCAxLCAyMTUsIDEzMiwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNiwgMSwgCi0gICAgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgCi0gICAgMjA0LCAxNTIsIDgsIDUsIDEsIDIwNCwgMTUyLCA4LCA2LCAxLCAyMDUsIDE5NywgMjAyLCAxNTksIDgsIDUsIDEsIDIwNSwgCi0gICAgMTk3LCAyMDIsIDE1OSwgOCwgNiwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDk1LCA4LCA2LCAxLCAKLSAgICAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIAotICAgIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMDYsIDQ1LCA4LCA1LCAxLCAyMDYsIDQ1LCA4LCA2LCAxLCAyNDAsIDI1MCwgOCwgNSwgCi0gICAgMSwgMjQwLCAyNTAsIDgsIDYsIDEsIDIzMCwgMjE1LCA4LCA1LCAxLCAyMzAsIDIxNSwgOCwgNiwgMSwgMjQ1LCAyMTgsIDgsIAotICAgIDUsIDEsIDI0NSwgMjE4LCA2NSwgMSwgMjA2LCAxOTMsIDgsIDUsIDEsIDI0MiwgMzIsIDgsIDUsIDEsIDIyNiwgMjIyLCA4LCAKLSAgICA1LCAxLCAyMjMsIDIyMCwgOCwgNSwgMSwgMjIxLCA0NywgOCwgNSwgMSwgMjE1LCAxMzEsIDgsIDEsIDUsIDYsIDIxNSwgCi0gICAgMTMxLCA4LCA1LCAxLCAyMDcsIDE5MSwgOCwgNSwgMSwgMjA3LCA2LCA4LCA2LCAxLCAyMzEsIDQsIDI0NSwgNTEsIDgsIDUsIAotICAgIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNiwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgOCwgNSwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgCi0gICAgOCwgNiwgMSwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMTU5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCi0gICAgMTU5LCA4LCA2LCAxLCAyMzEsIDQsIDE0NiwgOCwgNSwgMSwgMjMxLCA0LCAxNDYsIDgsIDYsIDEsIDIzMSwgNCwgMTk0LCA4LCAKLSAgICA1LCAxLCAyMzEsIDQsIDE5NCwgOCwgNiwgMSwgMjMxLCA0LCAyMTAsIDY5LCA4LCA1LCAxLCAyMzEsIDQsIDIxMCwgNjksIAotICAgIDY1LCAxLCAxMjQsIDI0NiwgNTMsIDI1MSwgMTM4LCA2NSwgMSwgMjQ1LCAyNDIsIDY1LCAxLCAyMTIsIDIyOCwgMjQxLCAzNSwgCi0gICAgNTQsIDgsIDYsIDEsIDIxNCwgMjU1LCA4LCA1LCAxLCAyMTQsIDI1NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMjM2LCAxMTYsIDI1LCAyNDgsIDEyNCwgOCwgMSwgMjEyLCAxMTQsIDI0MywgCi0gICAgODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIAotICAgIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjM5LCAKLSAgICAxOTksIDgsIDUsIDEsIDY2LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDk1LCA4LCA1LCAxLCAyNDAsIAotICAgIDE3NSwgMywgOTUsIDgsIDYsIDEsIDIwNSwgMTgyLCAyNTEsIDEwOSwgOCwgNSwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCAKLSAgICA2LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNSwgMSwgMjA1LCAxODIsIDIyMCwgNzMsIDgsIDYsIDEsIDIwNSwgMTgyLCAKLSAgICAyMDcsIDI0LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjA3LCAyNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIAotICAgIDUsIDEsIDIzOSwgNzYsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgCi0gICAgMjMwLCA1NSwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIAotICAgIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjIwLCAKLSAgICA4OSwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAxMTMsIDgsIDYsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDYsIDEsIAotICAgIDEzMiwgMjM5LCA3NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMwLCA1NCwgCi0gICAgOCwgNiwgMSwgMjA3LCAxNzQsIDIxMCwgNjksIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNiwgMSwgMjQ2LCAKLSAgICAxNDIsIDgsIDYsIDEsIDI0OCwgMTA2LCA4LCA1LCAxLCAyNDgsIDEwNiwgOCwgNiwgMSwgMjIwLCAzNiwgOCwgNSwgMSwgCi0gICAgMjIwLCAzNiwgOCwgMjQxLCA0MCwgMSwgMjEyLCAxNTQsIDc1LCA2NSwgMSwgNiwgMjM3LCAxNzIsIDMsIDk1LCA2NSwgMSwgCi0gICAgNSwgMzIsIDIyMCwgNzMsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgCi0gICAgMjQwLCAxNzQsIDgsIDI0MSwgNDAsIDEsIDIxNiwgNzMsIDIxOSwgMTg0LCA4LCAyNDEsIDQwLCAxLCAyMzAsIDIzOSwgMjI2LCAKLSAgICAxODUsIDgsIDI0MSwgNDAsIDEsIDIzNSwgMjA2LCAyMjcsIDIwLCA4LCAyNDEsIDQwLCAxLCAyNTAsIDEyNiwgMjI2LCAxODUsIAotICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDc1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgCi0gICAgMjQyLCAxMSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDY4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzQsIDIxMCwgMTQ5LCAKLSAgICAyMjMsIDk0LCAxLCA3OCwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDIzNywgODUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIAotICAgIDI2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI5LCAxMTUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDM5LCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMSwgMjM4LCA5MSwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDI1MCwgMTgwLCAyMTAsIDE0OSwgMjIzLCAKLSAgICA5NCwgMSwgMjQ1LCAyNTQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDYsIDExNiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAotICAgIDIzMCwgMTAxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjMwLCAxNDMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMDcsIDIxOCwgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjI0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ0LCA5MCwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDI0NCwgOTksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAxMzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAKLSAgICAyMDksIDQ3LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQzLCAxMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDIzNywgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyMSwgMTkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE4LCA2OSwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDIxOCwgMTgwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ4LCAyMywgMjEwLCAxNDksIDIyMywgOTQsIAotICAgIDEsIDI0OCwgOTAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjQsIDgyLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAKLSAgICAyMjcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjcsIDQ5LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAxNzEsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAxLCAyMTIsIDEzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjM2LCAxMzYsIDIxMCwgMTQ5LCAyMjMsIAotICAgIDk0LCAyMiwgMiwgNjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgCi0gICAgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgMjIwLCAxOCwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkxLCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgODksIDE1MywgCi0gICAgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjE3LCA1NSwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgCi0gICAgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgCi0gICAgODAsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDEyNiwgCi0gICAgMjEyLCA3OSwgMTUzLCAyMzEsIDMzLCAyMTcsIDU2LCA4MiwgMTUzLCAyMzEsIDMzLCAyMTgsIDk2LCA4MiwgMTUzLCAyMzEsIAotICAgIDMzLCAyMTUsIDEyMCwgODIsIDE1MywgMjMxLCAzMywgMjE3LCA1NywgODIsIDIxOCwgMjA0LCAxLCAxNzMsIDIxOCwgMjA0LCAKLSAgICAxLCAyMjksIDE0NCwgMjE4LCAyMDQsIDEsIDIzOSwgOCwgMjE4LCAyMDQsIDEsIDIyMiwgMjAzLCAyMTgsIDIwNCwgMSwgCi0gICAgMjQ3LCA5MiwgMjE4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMTgsIDIwNCwgMSwgMjMwLCAxODEsIDIxOCwgMjA0LCAxLCAyMjEsIAotICAgIDExLCAyMTgsIDIwNCwgMSwgMjEwLCAyMiwgMjE4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMTgsIDIwNCwgMSwgMjQ0LCAyMTIsIAotICAgIDIxOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjE4LCAyMDQsIDEsIDE4NSwgMjE4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMTgsIDIwNCwgCi0gICAgMSwgMjQ5LCAzMiwgMjE4LCAyMDQsIDEsIDE5MiwgMjE4LCAyMDQsIDEsIDIwOCwgMjAsIDIxOCwgMjA0LCAxLCAyMDgsIDEwLCAKLSAgICAyMTgsIDIwNCwgMSwgMjQxLCAyNTUsIDIxOCwgMjA0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDEsIDIwMiwgODAsIDIxOCwgCi0gICAgMjA0LCAxLCAyMDIsIDExNiwgMjE4LCAyMDQsIDEsIDUsIDYzLCAyMTgsIDIwNCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgMjE2LCAKLSAgICAyMjAsIDIxOCwgMjA0LCAxLCAyMjgsIDExMywgMjE4LCAyMDQsIDEsIDIxMywgOTAsIDIxOCwgMjA0LCAxLCAyMTUsIDM2LCAKLSAgICAyMTgsIDIwNCwgMSwgMTUyLCAyMTgsIDIwNCwgMSwgNjMsIDIxOCwgMjA0LCAxLCA3NSwgMjE4LCAyMDQsIDEsIDY4LCAyMTgsIAotICAgIDIwNCwgMSwgNzQsIDIxOCwgMjA0LCAxLCA3OCwgMjE4LCAyMDQsIDEsIDIxNywgMTI2LCAyMTgsIDIwNCwgMSwgMjAzLCAKLSAgICAxODIsIDIxOCwgMjA0LCAxLCAyNDAsIDEwOCwgMjE4LCAyMDQsIDEsIDIzOCwgMTU1LCAyMTgsIDIwNCwgMSwgMjQxLCAxNjEsIAotICAgIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgCi0gICAgMjA3LCAyNDEsIDIxOCwgMjA0LCAxLCAyMDcsIDIyOSwgMjE4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMTgsIDIwNCwgMSwgMjIxLCAKLSAgICAyMjcsIDIxOCwgMjA0LCAxLCAyNTAsIDI1NSwgMTk4LCAyMTgsIDIwNCwgMSwgMjA1LCAxODUsIDIxMywgOTAsIDIxOCwgCi0gICAgMjA0LCAxLCAyMDUsIDE4NiwgMTUyLCAyMTgsIDIwNCwgMSwgMjUwLCA2NiwgMjQwLCAxMDgsIDIxOCwgMjA0LCAyMTAsIAotICAgIDI1NCwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAyMTAsIDIwMSwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAxLCAyNDcsIDUyLCAKLSAgICAyMTgsIDIwNCwgMjEyLCAxMjAsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgNTIsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgCi0gICAgMTMxLCAyMTMsIDgyLCAyMTgsIDIwNCwgMTMxLCA1MiwgMjEzLCA4MiwgMjE0LCAyMTUsIDIsIDI1MCwgMTgwLCAyMTQsIAotICAgIDIxNSwgMiwgMjA1LCAxOTksIDIxNCwgMjE1LCAxLCA2MywgMjE0LCAyMTUsIDEsIDI1MiwgMjUsIDIxNCwgMjE1LCAxLCA3NSwgCi0gICAgMjE0LCAyMTUsIDEsIDIzMSwgODMsIDIxNCwgMjE1LCAxLCA2OCwgMjE0LCAyMTUsIDEsIDIwNiwgMTc4LCAyMTQsIDIxNSwgCi0gICAgMSwgMTI1LCAxNDYsIDIxNCwgMjE1LCAxLCAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMSwgMTI1LCAxNTksIDIxNCwgMjE1LCAKLSAgICAxLCAxMjUsIDIyNywgNzgsIDIxNCwgMjE1LCAxLCA3NCwgMjE0LCAyMTUsIDEsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMSwgCi0gICAgMjUxLCA2NCwgMjE0LCAyMTUsIDEsIDc4LCAyMTQsIDIxNSwgMSwgMjIwLCAxOCwgMjE0LCAyMTUsIDEsIDI1MCwgMzQsIAotICAgIDIxNCwgMjE1LCAxLCAxNzMsIDIxNCwgMjE1LCAxLCAyMjksIDE0NCwgMjE0LCAyMTUsIDEsIDIzOSwgOCwgMjE0LCAyMTUsIAotICAgIDEsIDIzOCwgMTE5LCAyMTQsIDIxNSwgMSwgMjIyLCAyMDMsIDIxNCwgMjE1LCAxLCAyNDcsIDkyLCAyMTQsIDIxNSwgMSwgCi0gICAgMjQ2LCAxOTksIDIxNCwgMjE1LCAxLCAyMzAsIDE4MSwgMjE0LCAyMTUsIDEsIDIzMCwgMTQ5LCAyMTQsIDIxNSwgMSwgMjIxLCAKLSAgICAxMSwgMjE0LCAyMTUsIDEsIDIwNywgMjQxLCAyMTQsIDIxNSwgMSwgMjA3LCAyMjksIDIxNCwgMjE1LCAxLCAyNDQsIDEyMCwgCi0gICAgMjE0LCAyMTUsIDEsIDI0NCwgMTA0LCAyMTQsIDIxNSwgMSwgMjIxLCAyMjcsIDIxNCwgMjE1LCAxLCAyMTAsIDIyLCAyMTQsIAotICAgIDIxNSwgMSwgMjA5LCAxMDgsIDIxNCwgMjE1LCAxLCAyNDQsIDIxMiwgMjE0LCAyMTUsIDEsIDI0NCwgMSwgMjE0LCAyMTUsIAotICAgIDEsIDIwMSwgMjAxLCAyMTQsIDIxNSwgMSwgMTg1LCAyMTQsIDIxNSwgMSwgMjE4LCAyMDgsIDIxNCwgMjE1LCAxLCAyNDksIAotICAgIDMyLCAyMTQsIDIxNSwgMSwgMjQ4LCA5OCwgMjE0LCAyMTUsIDEsIDE5MiwgMjE0LCAyMTUsIDEsIDE5OCwgMjE0LCAyMTUsIAotICAgIDEsIDIxNiwgMjIwLCAyMTQsIDIxNSwgMSwgMjI4LCAxMTMsIDIxNCwgMjE1LCAxLCAyMDYsIDg2LCAyMTQsIDIxNSwgMSwgCi0gICAgMjEzLCA5MCwgMjE0LCAyMTUsIDEsIDIxMSwgMTY0LCAyMTQsIDIxNSwgMSwgMjE1LCAzNiwgMjE0LCAyMTUsIDEsIDE1MiwgCi0gICAgMjE0LCAyMTUsIDEsIDIyNywgNzcsIDIxNCwgMjE1LCAxMDksIDIsIDIzNywgMTU1LCAyMTQsIDIxNSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIxNCwgMjE1LCAyMiwgMiwgNzUsIDIxNCwgMjE1LCAyMiwgMiwgMjMxLCA4MywgMjE0LCAyMTUsIDIyLCAyLCA2OCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCAyMDYsIDE3OCwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDIyLCAyLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTU5LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCA3NCwgMjE0LCAyMTUsIDIyLCAyLCAyNDEsIDE2MSwgMjE0LCAyMTUsIDIyLCAyLCAyNTEsIDY0LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDc4LCAyMTQsIDIxNSwgMjIsIDIsIDIyMCwgMTgsIDIxNCwgMjE1LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjE0LCAyMTUsIDIsIDIwNSwgMjA0LCAyMTQsIDIxNSwgMjQ0LCAxNjYsIDIxNCwgMjE1LCA1MiwgMjQ0LCAxNjYsIDIxNCwgCi0gICAgMjE1LCAxNywgMjAyLCA4NCwgMjE0LCAyMTUsIDE3LCAxMDUsIDIxNCwgMjE1LCAxNywgMTA4LCAyMTQsIDIxNSwgMTcsIAotICAgIDE0NywgMjE0LCAyMTUsIDE3LCAxNDksIDIxNCwgMjE1LCAxNywgMTcwLCAyMTQsIDIxNSwgMTcsIDE5NSwgMjE0LCAyMTUsIAotICAgIDE3LCAyMTMsIDExMSwgMjE0LCAyMTUsIDE3LCAxOTksIDIxNCwgMjE1LCAxNywgMjIyLCA2MywgMzksIDkyLCAxNywgMjAyLCAKLSAgICA4NCwgMzksIDkyLCAxNywgMTA1LCAzOSwgOTIsIDE3LCAxMDgsIDM5LCA5MiwgMTcsIDE0NywgMzksIDkyLCAxNywgMTQ5LCAKLSAgICAzOSwgOTIsIDE3LCAxNzAsIDM5LCA5MiwgMTcsIDE5NSwgMzksIDkyLCAxNywgMjEzLCAxMTEsIDM5LCA5MiwgMTcsIDE5OSwgCi0gICAgMzksIDkyLCAxNywgMjIyLCA2MywgMzksIDkyLCAxLCA2MywgMzksIDkyLCAxLCA2OCwgMzksIDkyLCAxLCAxNzMsIDM5LCAKLSAgICA5MiwgMSwgMjAxLCAyMDEsIDM5LCA5MiwgMSwgMTg1LCAzOSwgOTIsIDEsIDIxNiwgMjIwLCAzOSwgOTIsIDEsIDIwNSwgCi0gICAgMjMwLCAzOSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyLCAyMTEsIDIyNywgMjQ3LCA1MiwgOTIsIDIsIDI0NywgNTMsIDIwNSwgCi0gICAgMjA0LCA5MiwgMiwgNTIsIDI0NywgNTMsIDIwNSwgMjA0LCA5MiwgMiwgMjQ3LCA1MywgMTA4LCA5MiwgMiwgMjQ3LCA1MywgCi0gICAgMTQ3LCA5MiwgMiwgMjQ3LCA1MywgMjUwLCAxNywgOTIsIDIsIDIxNywgMTYyLCA5MiwgMjM4LCAyMjgsIDI0MCwgNywgOTIsIAotICAgIDI0NywgMzMsIDkyLCAyMzcsIDU4LCA5MiwgMiwgMjEyLCAxNTcsIDkyLCAyMzAsIDE3MywgMjIwLCAzOSwgMjI5LCAyMDcsIAotICAgIDIyNywgMTQ5LCAxNywgMjAyLCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTA1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE3LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE0NywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ5LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDE3LCAxNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNywgMjEzLCAxMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5OSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMjIyLCAKLSAgICA2MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxNzMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjI5LCAxNDQsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjM5LCA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMiwgMjAzLCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDEsIDIxNSwgMzYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEzLCA5MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKLSAgICAyMDIsIDExNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjEsIDExLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxMCwgMjIsIAotICAgIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjM2LCAzMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMDEsIDIwMSwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAxODUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE4LCAyMDgsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMSwgMTkyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NCwgMjEyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0OSwgCi0gICAgMzIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE2LCAyMjAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTk4LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDIyOCwgMTEzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwNCwgMTExLCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDEsIDIwOSwgMTA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE1MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKLSAgICAyMDYsIDg2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NywgOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgNjMsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjIwLCA3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA3NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxLCAyMjAsIDE4LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCAyMDcsIDI0LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA3NCwgCi0gICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDI0MSwgMTYxLCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDIyLCA3OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNDMsIDIxOCwgODQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTQzLCAyNDcsIDY4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjQ3LCA2OSwgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAyLCAyNDUsIDcwLCAyMjksIDIwNywgMjI3LCAxNDksIDIsIDIxMiwgMTcwLCAyMTYsIDExOSwgMSwgMTczLCAyMTYsIAotICAgIDExOSwgMSwgMjM5LCA4LCAyMTYsIDExOSwgMSwgMjIyLCAyMDMsIDIxNiwgMTE5LCAxLCAyMTAsIDIyLCAyMTYsIDExOSwgMSwgCi0gICAgMjQ0LCAyMTIsIDIxNiwgMTE5LCAxLCAyMDEsIDIwMSwgMjE2LCAxMTksIDEsIDE4NSwgMjE2LCAxMTksIDEsIDI0OSwgMzIsIAotICAgIDIxNiwgMTE5LCAxLCAxOTIsIDIxNiwgMTE5LCAxLCAyNDcsIDkyLCAyMTYsIDExOSwgMSwgMjMwLCAxODEsIDIxNiwgMTE5LCAKLSAgICAxLCAyMjEsIDExLCAyMTYsIDExOSwgMSwgMjE1LCAzNiwgMjE2LCAxMTksIDEsIDIxNiwgMjIwLCAyMTYsIDExOSwgMSwgCi0gICAgMjI4LCAxMTMsIDIxNiwgMTE5LCAxLCAxOTgsIDIxNiwgMTE5LCAxLCAyMDQsIDExMSwgMjE2LCAxMTksIDEsIDE1MiwgMjE2LCAKLSAgICAxMTksIDEsIDIyNSwgNTQsIDIxNiwgMTE5LCAxLCAyMjIsIDE4MiwgMjE2LCAxMTksIDEsIDIyMywgMjUsIDIxNiwgMTE5LCAKLSAgICAxLCAyMjAsIDIzNCwgMjE2LCAxMTksIDEsIDYzLCAyMTYsIDExOSwgMjIsIDIsIDc1LCAyMTYsIDExOSwgMjIsIDIsIDY4LCAKLSAgICAyMTYsIDExOSwgMjIsIDIsIDc0LCAyMTYsIDExOSwgMjIsIDIsIDI1MSwgNjQsIDIxNiwgMTE5LCAyMiwgMiwgNzgsIDIxNiwgCi0gICAgMTE5LCAyMiwgMiwgMjUwLCAzNCwgMjE2LCAxMTksIDIyLCAyLCAyNDAsIDIzOCwgMjE2LCAxMTksIDIyLCAyLCAyNDEsIAotICAgIDE4OSwgMjE2LCAxMTksIDEwOSwgMiwgMjIyLCAyMDUsIDIxNiwgMTE5LCAxMDksIDIsIDIyMywgMTYzLCAyMTYsIDExOSwgCi0gICAgMTA5LCAyLCAxNDYsIDIxNiwgMTE5LCAxMDksIDIsIDIzNywgMTcxLCAyMTYsIDExOSwgMjA1LCAyMDQsIDIxNiwgMTE5LCAKLSAgICAyMTQsIDE2OCwgODIsIDI4LCAxMjMsIDIwOCwgMjM2LCAyOCwgMTIzLCAyMDgsIDIzNSwgMjgsIDEyMywgMjA4LCAyMzMsIAotICAgIDI4LCAxMjMsIDIwOCwgMjM4LCAyOCwgMTIzLCAyMTYsIDQyLCAyOCwgMTIzLCAyMTYsIDI2LCAyOCwgMTIzLCAyMTYsIDIxLCAKLSAgICAyOCwgMTIzLCAyMTYsIDIzLCAyOCwgMTIzLCAyMTYsIDM5LCAyOCwgMTIzLCAyMTYsIDMyLCAyOCwgMTIzLCAyMTYsIDI1LCAKLSAgICAyOCwgMTIzLCAyMTYsIDQ0LCAyOCwgMTIzLCAyMTYsIDI3LCAyOCwgMTIzLCAyMTYsIDQ2LCAyOCwgMTIzLCAyMTYsIDQzLCAKLSAgICAyOCwgMTIzLCAyMjQsIDEzNywgMjgsIDEyMywgMjI0LCAxMjgsIDI4LCAxMjMsIDIyNCwgMTMxLCAyOCwgMTIzLCAyMTgsIAotICAgIDEzOCwgMjgsIDEyMywgMjE4LCAxNDksIDI4LCAxMjMsIDIxOCwgMTUwLCAyOCwgMTIzLCAyMTEsIDE0OCwgMjgsIDEyMywgCi0gICAgMjMxLCA5NiwgMjgsIDEyMywgMjMxLCAxMDMsIDI4LCAxMjMsIDIxMSwgMTU5LCAyOCwgMTIzLCAyMTEsIDE0NiwgMjgsIAotICAgIDEyMywgMjE4LCAxODksIDI4LCAxMjMsIDIzNiwgMjQ2LCAyOCwgMTIzLCAyMTEsIDE0MywgMTkwLCAyLCAyMTksIDEwMiwgCi0gICAgMTkwLCAyLCAyNDYsIDIzNSwgMTkwLCAyLCAyMjcsIDI0MiwgMTkwLCAyLCAyMDQsIDIwLCAxOTAsIDEsIDYzLCAxOTAsIDEsIAotICAgIDIzNSwgMjA2LCAyMjksIDIxMSwgMTkwLCAxLCA3NSwgMTkwLCAxLCAyMzEsIDgzLCAxOTAsIDEsIDY4LCAxOTAsIDEsIDIxOSwgCi0gICAgMTY5LCAyNDYsIDIwNSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDEsIDE5MCwgMSwgMjIyLCAyMDQsIDIyNywgMjAyLCAKLSAgICAyMTYsIDE3MywgMTkwLCAxLCA3NCwgMTkwLCAxLCAyNTEsIDY0LCAxOTAsIDEsIDc4LCAxOTAsIDEsIDE3MywgMTkwLCAxLCAKLSAgICAyMzAsIDQ0LCAyMTQsIDIyNywgMTkwLCAxLCAyMzAsIDQ0LCAyMjMsIDIwNSwgMTkwLCAxLCAyMzksIDgsIDE5MCwgMSwgCi0gICAgMjM5LCA5LCAyMjMsIDIwNSwgMTkwLCAxLCAyMjIsIDIwMywgMTkwLCAxLCAyNDcsIDkyLCAxOTAsIDEsIDI0NywgOTMsIAotICAgIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgxLCAxOTAsIDEsIDIyMSwgMTIsIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgyLCAKLSAgICAyMjUsIDE0NCwgMTkwLCAxLCAyMjEsIDExLCAxOTAsIDEsIDIwNywgMjQxLCAxOTAsIDEsIDIwNywgMjQyLCAyMjUsIDE0NCwgCi0gICAgMTkwLCAxLCAyNDQsIDEyMCwgMTkwLCAxLCAyNDQsIDEyMSwgMjI1LCAxNDQsIDE5MCwgMSwgMjIzLCAxMTEsIDIyMywgMjA1LCAKLSAgICAxOTAsIDEsIDIxMCwgMjIsIDE5MCwgMSwgMjEwLCAyMywgMjIzLCAyMDUsIDE5MCwgMSwgMjQ0LCAyMTIsIDE5MCwgMSwgCi0gICAgMjQ0LCAyMTMsIDIyNSwgMTQ0LCAxOTAsIDEsIDIwMSwgMjAxLCAxOTAsIDEsIDE4NSwgMTkwLCAxLCAyMTksIDE2OSwgMjIzLCAKLSAgICAyMDUsIDE5MCwgMSwgMjQ5LCAzMiwgMTkwLCAxLCAyNDksIDMzLCAyMjMsIDIwNSwgMTkwLCAxLCAxOTIsIDE5MCwgMSwgCi0gICAgMTk4LCAxOTAsIDEsIDIxNiwgMjIwLCAxOTAsIDEsIDIxNiwgMjIxLCAyNTEsIDc0LCAxOTAsIDEsIDIyOCwgMTEzLCAxOTAsIAotICAgIDEsIDIwNCwgMTExLCAxOTAsIDEsIDIxNSwgMzcsIDIyMywgMjA1LCAxOTAsIDEsIDIxNSwgMzcsIDIyNSwgMTQ0LCAxOTAsIAotICAgIDEsIDIxNSwgMzYsIDE5MCwgMSwgMTUyLCAxOTAsIDIsIDI0NiwgMjM2LCAyMDksIDE1NSwgMTkwLCAyMiwgMiwgMjA5LCAKLSAgICAyMTQsIDE5MCwgMjIsIDIsIDIwOCwgMTY2LCAxOTAsIDIyLCAyLCAyMDMsIDIxMSwgMTkwLCAyMiwgMiwgMjAzLCAyMTIsIAotICAgIDIyNCwgMjUxLCAxOTAsIDIyLCAyLCAyMTAsIDIyNCwgMTkwLCAyMiwgMiwgMjEwLCAyMjUsIDIyNCwgMjM5LCAxOTAsIDIyLCAKLSAgICAyLCAyMDksIDIzNSwgMTkwLCAyMiwgMiwgMjQzLCAxNjMsIDIyMywgMjA0LCAxOTAsIDIyLCAyLCAyMTgsIDI0OSwgMTkwLCAKLSAgICAxMDksIDIsIDIyOSwgMTczLCAxOTAsIDEwOSwgMiwgMjE5LCA2LCAxOTAsIDEwOSwgMiwgMjQ3LCA3NywgMTkwLCAyMTksIAotICAgIDExNSwgMTkwLCA0OSwgMjE2LCA5MywgMTkwLCA1MCwgMjE2LCA5MywgMTkwLCAyMTksIDE1OCwgMjUwLCAyMjUsIDE5MCwgCi0gICAgMjE5LCAxNTgsIDIyNSwgMTYyLCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyNiwgMTkwLCAyMTksIDE1OCwgMjA0LCAxNCwgMTkwLCAKLSAgICAyMTksIDE1OCwgMjE5LCAxMTYsIDE5MCwgMjE5LCAxNTgsIDIyNywgMTA2LCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyMCwgCi0gICAgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTYsIDE5MCwgMjE5LCAxNTgsIDI1MSwgMTE3LCAyNTEsIDExNiwgMTkwLCAyMTksIAotICAgIDE1OCwgMjE4LCAxMDcsIDE5MCwgMjA3LCAxNzQsIDIxOSwgMTU4LCAyMTgsIDEwNywgMTkwLCAyMTksIDExMSwgMTkwLCAxNywgCi0gICAgMjAyLCA4NCwgMTkwLCAxNywgMTA1LCAxOTAsIDE3LCAxMDgsIDE5MCwgMTcsIDE0NywgMTkwLCAxNywgMTQ5LCAxOTAsIDE3LCAKLSAgICAxNzAsIDE5MCwgMTcsIDE5NSwgMTkwLCAxNywgMjEzLCAxMTEsIDE5MCwgMTcsIDE5OSwgMTkwLCAxNywgMjIyLCA2MywgCi0gICAgMTkwLCAyMTksIDE1OCwgMjA4LCAyMDIsIDIwNywgMTg5LCAxOTAsIDIxOSwgMTU4LCAyMzAsIDIxMSwgNjksIDEsIDIxMywgCi0gICAgNjcsIDIzOCwgMTE5LCA2OSwgMSwgMjEzLCA2NywgMjQ2LCAxOTksIDY5LCAxLCAyMTMsIDY3LCAyMzAsIDE0OSwgNjksIDEsIAotICAgIDIxMywgNjcsIDIyMSwgMjI3LCA2OSwgMSwgMjEzLCA2NywgMjQ4LCA5OCwgNjksIDIsIDIxMywgNjcsIDIxNCwgMjEzLCA2OSwgCi0gICAgNjUsIDEsIDIxMywgNjcsIDIxNiwgMTM2LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgMTEsIDY5LCAxLCA0NSwgMjI4LCAKLSAgICA4NSwgMjQwLCAxMDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM5LCA4LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzOCwgMTE5LCAKLSAgICA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTgxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTQ5LCA2OSwgMSwgNDUsIAotICAgIDIyOCwgODUsIDI0NCwgMTIwLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgMTA0LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgCi0gICAgMjI3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMDIsIDg0LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxMDUsIDY5LCA0NSwgMjI4LCAKLSAgICA4NSwgMTcsIDEwOCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTQ3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDksIDY5LCA0NSwgCi0gICAgMjI4LCA4NSwgMTcsIDE3MCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk1LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMTMsIAotICAgIDExMSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk5LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMjIsIDYzLCA2OSwgMSwgNDUsIAotICAgIDIyOCwgODUsIDIyNywgNzcsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAyMTIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAKLSAgICAxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0OSwgMzIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ4LCA5OCwgMjQ2LCAxOTIsIDEsIAotICAgIDYzLCAyNDYsIDE5MiwgMSwgNzUsIDI0NiwgMTkyLCAxLCA2OCwgMjQ2LCAxOTIsIDEsIDc0LCAyNDYsIDE5MiwgMSwgMjUxLCAKLSAgICA2NCwgMjQ2LCAxOTIsIDEsIDc4LCAyNDYsIDE5MiwgMSwgMTczLCAyNDYsIDE5MiwgMSwgMjI5LCAxNDQsIDI0NiwgMTkyLCAKLSAgICAxLCAyMzksIDgsIDI0NiwgMTkyLCAxLCAyMzgsIDExOSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTEyLCAyNDYsIDE5MiwgMSwgCi0gICAgMjIyLCAyMDMsIDI0NiwgMTkyLCAxLCAyNDYsIDE5OSwgMjQ2LCAxOTIsIDEsIDI0NiwgMTQ0LCAyNDYsIDE5MiwgMSwgMjMwLCAKLSAgICAxODEsIDI0NiwgMTkyLCAxLCAyMzAsIDE0OSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTAyLCAyNDYsIDE5MiwgMSwgMjIyLCAxMDQsIAotICAgIDI0NiwgMTkyLCAxLCAyMjIsIDEwMywgMjQ2LCAxOTIsIDEsIDIxMCwgMjIsIDI0NiwgMTkyLCAxLCAyMDksIDEwOCwgMjQ2LCAKLSAgICAxOTIsIDEsIDI0NCwgMjEyLCAyNDYsIDE5MiwgMSwgMjQ0LCAxLCAyNDYsIDE5MiwgMSwgMjIxLCA1MywgMjQ2LCAxOTIsIDEsIAotICAgIDIwMSwgMjAxLCAyNDYsIDE5MiwgMSwgMjQ0LCAxMjAsIDI0NiwgMTkyLCAxLCAxODUsIDI0NiwgMTkyLCAxLCAyMTgsIDEyLCAKLSAgICAyNDYsIDE5MiwgMSwgMjE4LCAyMDgsIDI0NiwgMTkyLCAxLCAyNDksIDMyLCAyNDYsIDE5MiwgMSwgMjQ4LCA5OCwgMjQ2LCAKLSAgICAxOTIsIDEsIDIyMywgMjM4LCAyNDYsIDE5MiwgMSwgMTkyLCAyNDYsIDE5MiwgMSwgMjQ4LCAxOTgsIDI0NiwgMTkyLCAxLCAKLSAgICAxOTgsIDI0NiwgMTkyLCAxLCAyMTYsIDIyMCwgMjQ2LCAxOTIsIDEsIDIyOCwgMTEzLCAyNDYsIDE5MiwgMSwgMjA2LCA4NiwgCi0gICAgMjQ2LCAxOTIsIDEsIDIxMSwgMTY0LCAyNDYsIDE5MiwgMSwgMjE1LCAzNiwgMjQ2LCAxOTIsIDEsIDE1MiwgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyNTIsIDI1LCAyNDYsIDE5MiwgMjIsIDIsIDc1LCAyNDYsIDE5MiwgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjQxLCAxNDUsIDI0NiwgMTkyLCAyMiwgMiwgNjgsIDI0NiwgMTkyLCAyMiwgMiwgMjIwLCA3MywgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCA3OCwgMjQ2LCAxOTIsIDIyLCAyLCAyNTEsIDY0LCAyNDYsIDE5MiwgMjIsIDIsIDI1MCwgMzQsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjA3LCAyNCwgMjQ2LCAxOTIsIDEwOSwgMiwgMTk4LCAyNDYsIDE5MiwgMTA5LCAyLCAyMTYsIDIyMCwgMjQ2LCAKLSAgICAxOTIsIDEwOSwgMiwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxMDksIDIsIDIwNCwgMTExLCAyNDYsIDE5MiwgMSwgNDYsIDIzMCwgCi0gICAgNTQsIDI0NiwgMTkyLCAxLCA0NiwgMjM5LCA3NSwgMjQ2LCAxOTIsIDEsIDQ2LCAyMjIsIDIwNSwgMjQ2LCAxOTIsIDEwOSwgCi0gICAgMiwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMSwgNDYsIDI0NiwgMjAwLCAyNDYsIDE5MiwgMSwgNDYsIDIxMCwgNjksIAotICAgIDI0NiwgMTkyLCAxLCA0NiwgMjIzLCAxNjMsIDI0NiwgMTkyLCAxLCA0NiwgMjE5LCAxODQsIDI0NiwgMTkyLCAxLCA0NiwgCi0gICAgMjAzLCAxMjQsIDI0NiwgMTkyLCAxLCA0NiwgMTQ2LCAyNDYsIDE5MiwgMSwgNDYsIDE1OSwgMjQ2LCAxOTIsIDEsIDQ2LCAKLSAgICAyMTEsIDE2NywgMjQ2LCAxOTIsIDEwOSwgMiwgNDYsIDIyNiwgMTg1LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjM3LCAxNzEsIAotICAgIDI0NiwgMTkyLCAxNywgMjAyLCA4NCwgMjQ2LCAxOTIsIDE3LCAxMDUsIDI0NiwgMTkyLCAxNywgMTA4LCAyNDYsIDE5MiwgCi0gICAgMTcsIDE0NywgMjQ2LCAxOTIsIDE3LCAxNDksIDI0NiwgMTkyLCAxNywgMTcwLCAyNDYsIDE5MiwgMTcsIDE5NSwgMjQ2LCAKLSAgICAxOTIsIDE3LCAyMTMsIDExMSwgMjQ2LCAxOTIsIDE3LCAxOTksIDI0NiwgMTkyLCAxNywgMjIyLCA2MywgMjQ2LCAxOTIsIAotICAgIDIxNywgMTc5LCAyMTEsIDIwMSwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCA1MiwgCi0gICAgMjQ0LCAxNjYsIDI0NiwgMTkyLCAyMTcsIDE3OSwgMjA4LCA3MCwgMjQ0LCAxNjYsIDY5LCAxLCAyMjksIDEzNywgMjM5LCA4LCAKLSAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NywgOTIsIDY5LCAxLCAyMjksIDEzNywgMjQ2LCAxOTksIDY5LCAxLCAyMjksIDEzNywgCi0gICAgMjMwLCAxODEsIDY5LCAxLCAyMjksIDEzNywgMjMwLCAxNDksIDY5LCAxLCAyMjksIDEzNywgMjIxLCAxMSwgNjksIDEsIAotICAgIDIyOSwgMTM3LCAyMDcsIDI0MSwgNjksIDEsIDIyOSwgMTM3LCAyMDcsIDIyOSwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEyMCwgCi0gICAgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEwNCwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEsIDY5LCAxLCAyMjksIDEzNywgMjAxLCAKLSAgICAyMDEsIDY5LCAxLCAyMjksIDEzNywgMjE1LCAzNiwgNjksIDEsIDIyOSwgMTM3LCAxNTIsIDY5LCAxLCAyMjksIDEzNywgCi0gICAgMjM3LCAxMiwgNjksIDEsIDIyOSwgMTM3LCAyNDAsIDEwOCwgNjksIDY1LCAxLCAyMjksIDEzNywgMjE2LCAxMzYsIDY5LCAxLCAKLSAgICAyMjksIDEzNywgMjAzLCAxODIsIDY5LCAxLCAyMjksIDEzNywgMjAyLCAxMTYsIDY5LCAxLCAyMjksIDEzNywgMjE2LCAyMjAsIAotICAgIDY5LCAyMjcsIDM2LCAyMjksIDEzNywgMjIwLCA5NCwgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMTcsIDc4LCA2OSwgMjI3LCAKLSAgICAzNiwgMjI5LCAxMzcsIDIzNiwgMTkxLCA2OSwgMTYsIDI1MSwgNTEsIDI0MCwgMjExLCA2OSwgMTYsIDI1MSwgNTEsIDEwNSwgCi0gICAgNjksIDE2LCAyNTEsIDUxLCAxMDgsIDY5LCAxLCAyNTEsIDUxLCAyMTYsIDIyMCwgNjksIDIsIDIxOSwgOTgsIDIyOSwgMjM3LCAKLSAgICAyMDgsIDE2MSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1OSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1NiwgNjksIAotICAgIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjQ2LCAxOTksIDY5LCAxLCAyMTIsIDE3OCwgMjE5LCAxMzksIDIxMywgOTAsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAyNiwgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDIyOSwgMTE1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAyMjksIDEyNCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM4LCAzOSwgCi0gICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOCwgMzksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjIsIDEyOCwgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIyMiwgMTI4LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ1LCAyNTQsIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0NiwgMTE2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ2LCAKLSAgICAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTIsIDEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjEyLCAxMywgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyMCwgMjMzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyNDMsIDExMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA5LCA0NywgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIwOSwgNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjEsIDE5MSwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ4LCAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0OCwgCi0gICAgMjMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTgsIDY5LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCA2OSwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgMTgwLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyMzksIDE4NiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyNCwgODIsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDIsIDI0NywgCi0gICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwMiwgMjQ3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjE1LCAyMjcsIDQ1LCAyMDUsIAotICAgIDIyMCwgMSwgMTM4LCAyMTUsIDIyNywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyMjcsIDQ5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA1LCAxODksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMDUsIAotICAgIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIzNiwgMTM2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM2LCAxMzYsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCA3OCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAKLSAgICAyMzAsIDAsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MiwgMjUsIDQ1LCAyMDUsIDIyMCwgMjIsIDc1LCA0NSwgMjA1LCAyMjAsIAotICAgIDIyLCAyMDcsIDI0LCA0NSwgMjA1LCAyMjAsIDIyLCA2OCwgNDUsIDIwNSwgMjIwLCAyMiwgNzQsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAyMjksIDExOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjM1LCAxNzEsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMjIsIDIwNywgMjMsIDQ1LCAyMDUsIDIyMCwgMjIsIDIwNywgMzksIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgCi0gICAgMzIsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAyMzEsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDI1MCwgMjQ3LCA0NSwgMjA1LCAyMjAsIDE0MywgMjI1LCAxNDEsIDI0MSwgMTI5LCA0NSwgMjA1LCAyMjAsIDE0MywgCi0gICAgMjI1LCAxNDEsIDIyMSwgNTIsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAKLSAgICAxNDMsIDIyNSwgMTQxLCAyMTEsIDI1MiwgNDUsIDIwNSwgMjIwLCAxNiwgMjI5LCA5LCA0NSwgMjA1LCAyMjAsIDE2LCAyMjEsIAotICAgIDUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMTQsIDI1MywgNDUsIDIwNSwgMjIwLCAxNiwgMjM2LCAxMzcsIDIzNiwgMTMxLCA0NSwgCi0gICAgMjA1LCAyMjAsIDE2LCAyMjksIDE5LCAyMjksIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc0LCAyMjUsIDIsIDIyNSwgNjEsIAotICAgIDEsIDc4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0NiwgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMSwgMTEsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjA3LCAyNDEsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA3LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjQ0LCAxMjAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ0LCAxMDQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAyMjcsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjEzLCA5MCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTEsIDE2NCwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMiwgMiwgMjMxLCA4MywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNSwgMiwgMjI1LCA2MSwgCi0gICAgMjIsIDIsIDI1MSwgMjQ1LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDM0LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAKLSAgICAyNTEsIDIzOCwgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OSwgMjI1LCAyLCAyMjUsIDYxLCAyNTEsIDcwLCAyMjksIDEwNywgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAyNTAsIDIwOSwgMjI1LCAyLCAyMjUsIDYxLCA0LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMDMsIDIzOCwgMjE2LCA5OCwgODIsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNSwgMTk5LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIwNSwgMjA0LCAzMywgNCwgMjA3LCAyMjIsIDMzLCA0LCAyMDcsIDIyNSwgMzMsIDQsIDIwNywgMjI4LCAzMywgNCwgCi0gICAgMjA3LCAyMjYsIDMzLCA0LCAyMDcsIDIyNywgMzMsIDQsIDIwNywgMjI0LCAzMywgNCwgMjQ0LCA5OCwgMzMsIDQsIDI0NCwgCi0gICAgMTAwLCAzMywgNCwgMjQ0LCAxMDMsIDMzLCA0LCAyNDQsIDEwMSwgMzMsIDQsIDI0NCwgMTAyLCAzMywgNCwgMjQ0LCA5OSwgCi0gICAgMzMsIDQsIDI0MSwgMjQyLCAzMywgNCwgMjQxLCAyNDYsIDMzLCA0LCAyNDEsIDI1NCwgMzMsIDQsIDI0MSwgMjUxLCAzMywgCi0gICAgNCwgMjQxLCAyNTIsIDMzLCA0LCAyNDEsIDI0MywgMzMsIDQsIDI0NiwgMjUyLCAzMywgNCwgMjQ2LCAyNDYsIDMzLCA0LCAKLSAgICAyNDYsIDI0OCwgMzMsIDQsIDI0NiwgMjUxLCAzMywgNCwgMjQ2LCAyNDksIDMzLCA0LCAyNDYsIDI1MCwgMzMsIDQsIDI0NiwgCi0gICAgMjQ3LCAzMywgNCwgMjQ4LCAxOTgsIDMzLCA0LCAyNDgsIDE3NywgMzMsIDQsIDI0OCwgMTg5LCAzMywgNCwgMjQ4LCAxOTcsIAotICAgIDMzLCA0LCAyNDgsIDE5MiwgMzMsIDQsIDI0OCwgMTkzLCAzMywgNCwgMjQ4LCAxODEsIDgsIDUsIDEsIDI0OCwgMjI1LCAKLSAgICAyNTEsIDIsIDgsIDUsIDEsIDM0LCAyMTYsIDcxLCA4LCA1LCAxLCAyNDgsIDM5LCA3NCwgOCwgNSwgMSwgMjQ4LCAyMjUsIAotICAgIDc0LCA4LCA1LCAxLCAxODgsIDMsIDIzOSwgMTk5LCA4LCA1LCAxLCAyMjcsIDE4NywgMjQwLCAxNzQsIDgsIDUsIDEsIDEzMiwgCi0gICAgMjM5LCA3NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMTUsIAotICAgIDI1MiwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCAxMjYsIDgsIAotICAgIDUsIDEsIDI0MSwgNzksIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyNDgsIDM5LCA3OCwgOCwgNSwgMSwgMjQ4LCAzOSwgMTU4LCAKLSAgICAzLCA5NSwgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjIwLCA3MywgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIyMCwgNzQsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjIwLCA3NCwgMywgMjM2LCAxMDYsIDk1LCA4LCAKLSAgICA1LCAxLCAyMDcsIDE3NCwgMTU4LCAyMjAsIDQsIDgsIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNSwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIxMSwgNjYsIDE0NiwgOCwgMSwgNSwgNiwgMjE3LCAxLCAzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgCi0gICAgMjA0LCAzLCAyMzcsIDEwMiwgOCwgNSwgMSwgNTIsIDE0NiwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgCi0gICAgMSwgNTIsIDIxNywgMSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDEzMiwgMTQ2LCA4LCA1LCAxLCAxMzIsIDIxNywgMSwgMywgCi0gICAgMjE1LCAyNTIsIDgsIDUsIDEsIDI0OCwgMjE2LCAyNDEsIDcsIDgsIDUsIDEsIDEwNiwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIAotICAgIDIxMCwgOCwgNSwgMSwgMTA2LCAyNDgsIDIzMSwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNywgCi0gICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNywgMTcsIDgsIDUsIDEsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjQ2LCAxNDIsIAotICAgIDgsIDUsIDEsIDI0NiwgMTQzLCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNDksIAotICAgIDIxMywgMTI1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTI0LCA1MCwgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAKLSAgICAxNjMsIDQ5LCAyMjcsIDIxMCwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAyNSwgMTI0LCA1MCwgCi0gICAgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxNjMsIDQ5LCAyMjcsIDIxMSwgMywgMjEzLCAxMjUsIDgsIDUsIDEsIAotICAgIDIwMywgMTI1LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA2NSwgMjQ3LCAyMTUsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgCi0gICAgNjUsIDEsIDUsIDIzNywgMzEsIDY1LCAxLCA1LCAyMjgsIDEzMSwgMywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDY1LCAxLCAKLSAgICA1LCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgNjUsIDEsIDUsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjE1LCAKLSAgICAxMSwgMjAzLCA2NiwgOCwgNSwgMSwgMjMwLCAyMjgsIDc0LCA4LCA1LCAxLCAxNzEsIDIyMCwgNzMsIDgsIDUsIDEsIDIwNiwgCi0gICAgMjI4LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjUxLCAyLCAzMCwgMSwgNSwgNiwgMjIwLCAzNiwgOTAsIDUsIDEsIDYzLCA5MCwgCi0gICAgNSwgMSwgNzQsIDkwLCA1LCAxLCA3NSwgOTAsIDUsIDEsIDc4LCA5MCwgNSwgMSwgNjgsIDkwLCA1LCAxLCAyMDYsIDE2NCwgCi0gICAgOTAsIDUsIDEsIDIzOSwgOCwgOTAsIDUsIDEsIDE3MywgOTAsIDUsIDEsIDIzOCwgMTkwLCA5MCwgNSwgMSwgMjM4LCA4MSwgCi0gICAgOTAsIDUsIDEsIDIzOCwgMzksIDkwLCA1LCAxLCAyMzcsIDIzMCwgOTAsIDUsIDEsIDIzNywgMTkyLCA5MCwgNSwgMSwgMTUyLCAKLSAgICA5MCwgNSwgMSwgMjM3LCA2NywgOTAsIDUsIDEsIDIzNywgMywgOTAsIDUsIDEsIDIzNiwgMTM2LCA5MCwgNSwgMSwgMjM2LCAKLSAgICAyNiwgOTAsIDUsIDEsIDIzNSwgMjU1LCA5MCwgNSwgMSwgMjI4LCAxMTMsIDkwLCA1LCAxLCAyMjcsIDIzNCwgOTAsIDUsIDEsIAotICAgIDIyNywgMTQ4LCA5MCwgNSwgMSwgMjI3LCA0OSwgOTAsIDUsIDEsIDIyNiwgMjM5LCA5MCwgNSwgMSwgMjI2LCAyMDgsIDkwLCAKLSAgICA1LCAxLCAxOTIsIDkwLCA1LCAxLCAyMjUsIDIwLCA5MCwgNSwgMSwgMjI0LCAxNTUsIDkwLCA1LCAxLCAyMjQsIDgyLCA5MCwgCi0gICAgNSwgMSwgMjIzLCAyNDYsIDkwLCA1LCAxLCAyMDEsIDIwMSwgOTAsIDUsIDEsIDIzNiwgMTYwLCA5MCwgNSwgMSwgMjIzLCAKLSAgICA5MywgOTAsIDUsIDEsIDIyMiwgMjQwLCA5MCwgNSwgMSwgMjIyLCAxMDAsIDkwLCA1LCAxLCAyMjEsIDE5MSwgOTAsIDUsIDEsIAotICAgIDIyMSwgODQsIDkwLCA1LCAxLCAyMjEsIDIyLCA5MCwgNSwgMSwgMjE3LCA2NCwgOTAsIDUsIDEsIDIxNywgNTAsIDkwLCA1LCAKLSAgICAxLCAyMTcsIDQzLCA5MCwgNSwgMSwgMjE3LCAzNCwgOTAsIDUsIDEsIDIxNywgMjMsIDkwLCA1LCAxLCAyMTcsIDIxLCA5MCwgCi0gICAgNSwgMSwgMjE1LCAzNiwgOTAsIDUsIDEsIDE5NCwgOTAsIDUsIDEsIDIxNCwgMTc3LCA5MCwgNSwgMSwgMjEyLCAxNjIsIDkwLCAKLSAgICA1LCAxLCAyMTIsIDEzLCA5MCwgNSwgMSwgMjExLCAxMCwgOTAsIDUsIDEsIDIxMCwgMTc3LCA5MCwgNSwgMSwgMjQ0LCAyMTIsIAotICAgIDkwLCA1LCAxLCAyMTAsIDIyLCA5MCwgNSwgMSwgMjQ0LCA3NSwgOTAsIDUsIDEsIDIwOSwgMTg3LCA5MCwgNSwgMSwgMjQzLCAKLSAgICAyMzMsIDkwLCA1LCAxLCAyMDksIDIsIDkwLCA1LCAxLCAyNDMsIDExMywgOTAsIDUsIDEsIDI0MiwgNDIsIDkwLCA1LCAxLCAKLSAgICAyNDIsIDEzLCA5MCwgNSwgMSwgMjQzLCAxMjQsIDkwLCA1LCAxLCAyMDgsIDE5MCwgOTAsIDUsIDEsIDIwOCwgMTg5LCA5MCwgCi0gICAgNSwgMSwgMjA4LCAxNzgsIDkwLCA1LCAxLCAyMDgsIDE3NywgOTAsIDUsIDEsIDIwOCwgMTc2LCA5MCwgNSwgMSwgMjA4LCAKLSAgICAxNzUsIDkwLCA1LCAxLCAyMDgsIDIwLCA5MCwgNSwgMSwgMjA4LCAxNCwgOTAsIDUsIDEsIDIwNywgMjU1LCA5MCwgNSwgMSwgCi0gICAgMjA3LCAyNTMsIDkwLCA1LCAxLCAyMDcsIDI0OSwgOTAsIDUsIDEsIDIwNywgMjQ4LCA5MCwgNSwgMSwgMjA0LCAxMTEsIDkwLCAKLSAgICA1LCAxLCAyMDQsIDYyLCA5MCwgNSwgMSwgMjA0LCAzMCwgOTAsIDUsIDEsIDIwNCwgMCwgOTAsIDUsIDEsIDIwMywgMjE3LCAKLSAgICA5MCwgNSwgMSwgMjAzLCAyMDQsIDkwLCA1LCAxLCAxOTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI5LCAxNiwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMTQsIDI1MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjgsIDg2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIyNCwgOTMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMTg1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwMSwgMjAxLCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDI0NiwgMTM0LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjI5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIyOSwgMTEwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOSwgMzksIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjA0LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAzLCA3NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMzYsIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwNiwgMjU1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc1LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIxOCwgMjAyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI1MCwgNDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjM4LCAzMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzAsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTYsIDE5NywgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyNDksIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTMzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDI0MywgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzOCwgODgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQzLCAyMzUsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjQ4LCA5NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE3LCAyMjcsIDE5LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIyOCwgODcsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI0LCA5NCwgMjI3LCAxOSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyMTksIDE2OSwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjMsIDExMSwgMjI3LCAxOSwgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDgsIDIzMCwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjIsIDExOSwgMjI3LCAKLSAgICAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzUsIDIwNiwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjIwLCAKLSAgICAzMCwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjMxLCA0NywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjUwLCAyMzAsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwMywgNDEsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIxMSwgMjQyLCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDI1MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjQ2LCAxNTcsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMjIsIDIsIDIyMSwgMzcsIDIyNSwgMiwgMjI1LCA2MSwgMjQ2LCAxNTgsIDIyNSwgMiwgMjI1LCA2MSwgMjI2LCAKLSAgICAyMjMsIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMTQ5LCAyMzAsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCi0gICAgMjAyLCA4NCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTA1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDgsIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMTcsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTQ5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNzAsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMTcsIDE5NSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjEzLCAxMTEsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIAotICAgIDE5OSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjIyLCA2MywgMjgsIDE3NiwgMjIwLCAxNzQsIDI4LCAxNzYsIDIyMCwgMTc5LCAKLSAgICAyOCwgMTc2LCAyMDIsIDI0NiwgMjgsIDE3NiwgMjAyLCAyNDUsIDI4LCAxNzYsIDIwMiwgMjQ0LCAyOCwgMTc2LCAyMDcsIAotICAgIDg5LCAyOCwgMTc2LCAyMDcsIDkzLCAyOCwgMTc2LCAyMDIsIDIxMSwgMjgsIDE3NiwgMjAyLCAyMDcsIDI4LCAxNzYsIDI0MCwgCi0gICAgMjM3LCAyOCwgMTc2LCAyNDAsIDIzNSwgMjgsIDE3NiwgMjQwLCAyMzYsIDI4LCAxNzYsIDI0MCwgMjMzLCAyOCwgMTc2LCAKLSAgICAyMzUsIDE5NiwgMjgsIDE3NiwgMjM1LCAxOTUsIDI4LCAxNzYsIDIzNSwgMTkzLCAyOCwgMTc2LCAyMzUsIDE5NCwgMjgsIAotICAgIDE3NiwgMjM1LCAxOTksIDI4LCAxNzYsIDIzNSwgMTkyLCAyOCwgMTc2LCAyMzUsIDE5MSwgMjgsIDE3NiwgMjM1LCAyMDEsIAotICAgIDI4LCAxNzYsIDI1MCwgMTM2LCAyOCwgMTc2LCAyNTAsIDEzNSwgMjgsIDEwNywgMjIyLCA4NiwgMjgsIDEwNywgMjIyLCA5MiwgCi0gICAgMjgsIDEwNywgMjExLCAxNDUsIDI4LCAxMDcsIDIxMSwgMTQ0LCAyOCwgMTA3LCAyMDgsIDIzNSwgMjgsIDEwNywgMjA4LCAKLSAgICAyMzMsIDI4LCAxMDcsIDIwOCwgMjMyLCAyOCwgMTA3LCAyMDgsIDIzOCwgMjgsIDEwNywgMjA4LCAyMzksIDI4LCAxMDcsIAotICAgIDIwOCwgMjMxLCAyOCwgMTA3LCAyMTYsIDI2LCAyOCwgMTA3LCAyMTYsIDQxLCAyOCwgMTA3LCAyMTEsIDE1MSwgMjgsIDEwNywgCi0gICAgMjE2LCAzOCwgMjgsIDEwNywgMjE2LCAyOCwgMjgsIDEwNywgMjE2LCAzMCwgMjgsIDEwNywgMjE2LCAxNywgMjgsIDEwNywgCi0gICAgMjE2LCAxOCwgMjgsIDEwNywgMjI5LCAyNDMsIDI4LCAxMDcsIDIyNCwgMTM2LCAyOCwgMTA3LCAyMjQsIDEzMCwgMjgsIAotICAgIDEwNywgMjExLCAxNTUsIDI4LCAxMDcsIDIyNCwgMTMzLCAyOCwgMTA3LCAyMjQsIDEzOSwgMjgsIDEwNywgMjE4LCAxMzQsIAotICAgIDI4LCAxMDcsIDIxOCwgMTQzLCAyOCwgMTA3LCAyMTgsIDE0NywgMjgsIDEwNywgMjExLCAxNTMsIDI4LCAxMDcsIDIxOCwgCi0gICAgMTM3LCAyOCwgMTA3LCAyMTgsIDE1MSwgMjgsIDEwNywgMjE4LCAxNTIsIDI4LCAxMDcsIDIxMiwgMTAzLCAyOCwgMTA3LCAKLSAgICAyMTIsIDEwNiwgMjgsIDEwNywgMjExLCAxNDksIDI4LCAxMDcsIDIxMSwgMTQ3LCAyOCwgMTA3LCAyMTIsIDEwMSwgMjgsIAotICAgIDEwNywgMjEyLCAxMDksIDI4LCAxMDcsIDIxMiwgMTEwLCAyOCwgMTA3LCAyMTIsIDk1LCAyOCwgMTA3LCAyMTIsIDEwOCwgCi0gICAgMjgsIDEwNywgMjE5LCAxMDUsIDI4LCAxMDcsIDIxOSwgMTA2LCAyOCwgMTA3LCAyMDMsIDI3LCAyOCwgMTA3LCAyMDMsIDI4LCAKLSAgICAyOCwgMTA3LCAyNDYsIDcyLCAyOCwgMTA3LCAyNDYsIDcxLCAyOCwgMTA3LCAyMTEsIDE2MCwgMjgsIDEwNywgMjE4LCAxODcsIAotICAgIDI4LCAxMDcsIDIxOCwgMTg2LCAxMiwgMTUsIDIzMywgNzQsIDEyLCAxNSwgMjMzLCA3MywgMTIsIDE1LCAyMzMsIDcyLCAxMiwgCi0gICAgMTUsIDIzMywgNzEsIDEyLCAxNSwgMjMzLCA3MCwgMTIsIDE1LCAyMzMsIDY5LCAxMiwgMTUsIDIzMywgNjgsIDEyLCAxNSwgCi0gICAgMjMzLCA2NywgMTIsIDE1LCAyMzMsIDY2LCAxMiwgMTUsIDIzMywgNjUsIDEyLCAxNSwgMjMzLCA2NCwgMTIsIDE1LCAyMzMsIAotICAgIDYzLCAxMiwgMTUsIDIzMywgNjIsIDEyLCAxNSwgMjMzLCA2MSwgMTIsIDE1LCAyMzMsIDYwLCAxMiwgMTUsIDIzMywgNTksIAotICAgIDEyLCAxNSwgMjMzLCA1OCwgMTIsIDE1LCAyMzMsIDU3LCAxMiwgMTUsIDIzMywgNTYsIDEyLCAxNSwgMjMzLCA1NSwgMTIsIAotICAgIDE1LCAyMzMsIDU0LCAxMiwgMTUsIDIzMywgNTMsIDEyLCAxNSwgMjMzLCA1MiwgMTIsIDE1LCAyMzMsIDUxLCAxMiwgMTUsIAotICAgIDIzMywgNTAsIDEyLCAxNSwgMjMzLCA0OSwgMTIsIDE1LCAyMzMsIDQ4LCAxMiwgMTUsIDIzMywgNDcsIDEyLCAxNSwgMjMzLCAKLSAgICA0NiwgMTIsIDE1LCAyMzMsIDQ1LCAxMiwgMTUsIDIzMywgNDQsIDEyLCAxNSwgMjMzLCA0MywgMTIsIDE1LCAyMzMsIDQyLCAKLSAgICAxMiwgMTUsIDIzMywgNDEsIDEyLCAxNSwgMjMzLCA0MCwgMTIsIDE1LCAyMzMsIDM5LCAxMiwgMTUsIDIzMywgMzgsIDEyLCAKLSAgICAxNSwgMjMzLCAzNywgMTIsIDE1LCAyMzMsIDM2LCAxMiwgMTUsIDIzMywgMzUsIDEyLCAxNSwgMjMzLCAzNCwgMTIsIDE1LCAKLSAgICAyMzMsIDMzLCAxMiwgMTUsIDIzMywgMzIsIDEyLCAxNSwgMjMzLCAzMSwgMTIsIDE1LCAyMzMsIDMwLCAxMiwgMTUsIDIzMywgCi0gICAgMjksIDEyLCAxNSwgMjMzLCAyOCwgMTIsIDE1LCAyMzMsIDI3LCAxMiwgMTUsIDIzMywgMjYsIDEyLCAxNSwgMjMzLCAyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0LCAxMiwgMTUsIDIzMywgMjMsIDEyLCAxNSwgMjMzLCAyMiwgMTIsIDE1LCAyMzMsIDIxLCAxMiwgCi0gICAgMTUsIDIzMywgMjAsIDEyLCAxNSwgMjMzLCAxOSwgMTIsIDE1LCAyMzMsIDE4LCAxMiwgMTUsIDIzMywgMTcsIDEyLCAxNSwgCi0gICAgMjMzLCAxNiwgMTIsIDE1LCAyMzMsIDE1LCAxMiwgMTUsIDIzMywgMTQsIDEyLCAxNSwgMjMzLCAxMywgMTIsIDE1LCAyMzMsIAotICAgIDEyLCAxMiwgMTUsIDIzMywgMTEsIDEyLCAxNSwgMjMzLCAxMCwgMTIsIDE1LCAyMzMsIDksIDEyLCAxNSwgMjMzLCA4LCAxMiwgCi0gICAgMTUsIDIzMywgNywgMTIsIDE1LCAyMzMsIDYsIDEyLCAxNSwgMjMzLCA1LCAxMiwgMTUsIDIzMywgNCwgMTIsIDE1LCAyMzMsIAotICAgIDMsIDEyLCAxNSwgMjMzLCAyLCAxMiwgMTUsIDIzMywgMSwgMTIsIDE1LCAyMzMsIDAsIDEyLCAxNSwgMjMyLCAyNTUsIDEyLCAKLSAgICAxNSwgMjMyLCAyNTQsIDEyLCAxNSwgMjMyLCAyNTMsIDEyLCAxNSwgMjMyLCAyNTIsIDEyLCAxNSwgMjMyLCAyNTEsIDEyLCAKLSAgICAxNSwgMjMyLCAyNTAsIDEyLCAxNSwgMjMyLCAyNDksIDEyLCAxNSwgMjMyLCAyNDgsIDEyLCAxNSwgMjMyLCAyNDcsIDEyLCAKLSAgICAxNSwgMjMyLCAyNDYsIDEyLCAxNSwgMjMyLCAyNDUsIDEyLCAxNSwgMjMyLCAyNDQsIDEyLCAxNSwgMjMyLCAyNDMsIDEyLCAKLSAgICAxNSwgMjMyLCAyNDIsIDEyLCAxNSwgMjMyLCAyNDEsIDEyLCAxNSwgMjMyLCAyNDAsIDEyLCAxNSwgMjMyLCAyMzksIDEyLCAKLSAgICAxNSwgMjMyLCAyMzgsIDEyLCAxNSwgMjMyLCAyMzcsIDEyLCAxNSwgMjMyLCAyMzYsIDEyLCAxNSwgMjMyLCAyMzUsIDEyLCAKLSAgICAxNSwgMjMyLCAyMzQsIDEyLCAxNSwgMjMyLCAyMzMsIDEyLCAxNSwgMjMyLCAyMzIsIDEyLCAxNSwgMjMyLCAyMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAyMzAsIDEyLCAxNSwgMjMyLCAyMjksIDEyLCAxNSwgMjMyLCAyMjgsIDEyLCAxNSwgMjMyLCAyMjcsIDEyLCAKLSAgICAxNSwgMjMyLCAyMjYsIDEyLCAxNSwgMjMyLCAyMjUsIDEyLCAxNSwgMjMyLCAyMjQsIDEyLCAxNSwgMjMyLCAyMjMsIDEyLCAKLSAgICAxNSwgMjMyLCAyMjIsIDEyLCAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAKLSAgICAxNSwgMjMyLCAyMTgsIDEyLCAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAKLSAgICAxNSwgMjMyLCAyMTQsIDEyLCAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAKLSAgICAxNSwgMjMyLCAyMTAsIDEyLCAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAKLSAgICAxNSwgMjMyLCAyMDYsIDEyLCAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAKLSAgICAxNSwgMjMyLCAyMDIsIDEyLCAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAKLSAgICAxNSwgMjMyLCAxOTgsIDEyLCAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxOTQsIDEyLCAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxOTAsIDEyLCAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAKLSAgICAxNSwgMjMyLCAxODYsIDEyLCAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAKLSAgICAxNSwgMjMyLCAxODIsIDEyLCAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAKLSAgICAxNSwgMjMyLCAxNzgsIDEyLCAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAKLSAgICAxNSwgMjMyLCAxNzQsIDEyLCAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAKLSAgICAxNSwgMjMyLCAxNzAsIDEyLCAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAKLSAgICAxNSwgMjMyLCAxNjYsIDEyLCAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAKLSAgICAxNSwgMjMyLCAxNjIsIDEyLCAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAKLSAgICAxNSwgMjMyLCAxNTgsIDEyLCAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxNTQsIDEyLCAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxNTAsIDEyLCAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAKLSAgICAxNSwgMjMyLCAxNDYsIDEyLCAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAKLSAgICAxNSwgMjMyLCAxNDIsIDEyLCAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAKLSAgICAxNSwgMjMyLCAxMzgsIDEyLCAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAKLSAgICAxNSwgMjMyLCAxMzQsIDEyLCAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAxMzAsIDEyLCAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAKLSAgICAxNSwgMjMyLCAxMjYsIDEyLCAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAKLSAgICAxNSwgMjMyLCAxMjIsIDEyLCAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAKLSAgICAxNSwgMjMyLCAxMTgsIDEyLCAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxMTQsIDEyLCAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxMTAsIDEyLCAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAKLSAgICAxNSwgMjMyLCAxMDYsIDEyLCAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAKLSAgICAxNSwgMjMyLCAxMDIsIDEyLCAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIAotICAgIDE1LCAyMzIsIDk4LCAxMiwgMTUsIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIAotICAgIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCAKLSAgICA5MCwgMTIsIDE1LCAyMzIsIDg5LCAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAKLSAgICAxMiwgMTUsIDIzMiwgODUsIDEyLCAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAKLSAgICAxNSwgMjMyLCA4MSwgMTIsIDE1LCAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAKLSAgICAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgCi0gICAgNzMsIDEyLCAxNSwgMjMyLCA3MiwgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgCi0gICAgMTIsIDE1LCAyMzIsIDY4LCAxMiwgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgCi0gICAgMTUsIDIzMiwgNjQsIDEyLCAxNSwgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgCi0gICAgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIAotICAgIDU2LCAxMiwgMTUsIDIzMiwgNTUsIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIAotICAgIDEyLCAxNSwgMjMyLCA1MSwgMTIsIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIAotICAgIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIAotICAgIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAKLSAgICAzOSwgMTIsIDE1LCAyMzIsIDM4LCAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAKLSAgICAxMiwgMTUsIDIzMiwgMzQsIDEyLCAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAzMCwgMTIsIDE1LCAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAKLSAgICAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgCi0gICAgMjIsIDEyLCAxNSwgMjMyLCAyMSwgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgCi0gICAgMTIsIDE1LCAyMzIsIDE3LCAxMiwgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgCi0gICAgMTUsIDIzMiwgMTMsIDEyLCAxNSwgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgCi0gICAgMjMyLCA5LCAxMiwgMTUsIDIzMiwgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgCi0gICAgMTIsIDE1LCAyMzIsIDQsIDEyLCAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgCi0gICAgMjMyLCAwLCAxMiwgMTUsIDIzMSwgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIAotICAgIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIAotICAgIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIAotICAgIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIAotICAgIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIAotICAgIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIAotICAgIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIAotICAgIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIAotICAgIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIAotICAgIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIAotICAgIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIAotICAgIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIAotICAgIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIAotICAgIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIAotICAgIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIAotICAgIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIAotICAgIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIAotICAgIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIAotICAgIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIAotICAgIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIAotICAgIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIAotICAgIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIAotICAgIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIAotICAgIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIAotICAgIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIAotICAgIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIAotICAgIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIAotICAgIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIAotICAgIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIAotICAgIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIAotICAgIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIAotICAgIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIAotICAgIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIAotICAgIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIAotICAgIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIAotICAgIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgMTE1LCA4LCA1LCAzMiwgMjQwLCAzMCwgOCwgNSwgMzIsIDI0MCwgMjYsIDgsIDUsIAotICAgIDMyLCAyMzksIDIyOCwgOCwgNSwgMzIsIDI0MCwgMjksIDgsIDUsIDMyLCAyNDAsIDI4LCA4LCA1LCAzMiwgMTYzLCAyMTUsIAotICAgIDk0LCAyMTAsIDY5LCA4LCA1LCAzMiwgMjExLCAxMDgsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMjEsIDE1MiwgMTc4LCA1LCAKLSAgICAzMiwgMjI0LCAyNDEsIDI0MSwgMTY3LCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjMxLCAxOSwgMTc4LCA1LCAzMiwgMjA1LCAKLSAgICAyMzUsIDIyMSwgMTUyLCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjAzLCAxNzQsIDExMCwgMSwgMjAyLCAyMzcsIDMsIDIzNiwgCi0gICAgMjMyLCAxMTAsIDIxOCwgNjMsIDIzMCwgODEsIDIwNiwgNjcsIDExMCwgMzIsIDIwMywgOSwgMjAyLCAyMzcsIDIwMiwgMjM3LCAKLSAgICAyMTksIDU0LCAxMTAsIDEsIDI1MCwgMjUwLCAyNTAsIDMsIDExMCwgMSwgMjA0LCAyNywgMjUxLCAzMCwgMTEwLCAxLCAyMDQsIAotICAgIDI3LCAyNDQsIDE3OCwgMTEwLCAxLCAyMDQsIDI3LCAyMzcsIDY3LCAxMTAsIDEsIDIwNCwgMjcsIDIzMCwgMjIsIDExMCwgMSwgCi0gICAgMjA0LCAyNywgMjI4LCAyMCwgMTEwLCAxLCAyMDQsIDI3LCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjA0LCAyNywgMjE2LCAKLSAgICA5MSwgMTEwLCAxLCAyMDQsIDI3LCAyMDksIDIwMywgMTEwLCAxLCAyNTAsIDI1MCwgOTEsIDU0LCAxMTAsIDEsIDIxMywgMCwgCi0gICAgMywgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjEyLCAxMjQsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAKLSAgICAzLCAyNDQsIDE5OCwgMjUsIDIxMywgMCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIDMsIDI0NCwgMTk4LCAyNSwgMjEyLCAKLSAgICAxMjQsIDI0MywgODUsIDExMCwgMSwgMTM3LCAzLCAyMTksIDU0LCAxMTAsIDEsIDEzNywgMywgMjE3LCAxMTQsIDExMCwgMSwgCi0gICAgMTM3LCAzLCAyMjUsIDEwNSwgMTEwLCAxLCAyNDgsIDEwOSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM4LCA2OCwgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjQ0LCAxNzksIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIzNywgNjgsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIAotICAgIDIwNiwgNjAsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgOTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwOSwgMTMzLCAzLCAKLSAgICAyNDQsIDE5NywgMTEwLCAxLCAyMDIsIDIzNywgMywgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIzMCwgMjMsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDIzMCwgMjMsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyOCwgMjEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIAotICAgIDIyNCwgMjQ4LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMjEsIDQxLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTQsIDI1MCwgMywgCi0gICAgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAKLSAgICAxMTAsIDEsIDIwOCwgMTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNywgNzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNiwgCi0gICAgOTIsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAyMDQsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDIwNiwgNjAsIDMsIDIzNiwgMTI4LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAKLSAgICAyMzAsIDIzLCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAyMTksIDM1LCAzLCAyMTYsIDIwMCwgMTEwLCAzMiwgMTM3LCAyMjgsIAotICAgIDIwLCAxMCwgMSwgMTM3LCAyMDQsIDg4LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDQ2LCAxOCwgMTAsIDEsIDI0OCwgCi0gICAgMTQ5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxNDksIDgxLCAxOCwgMTAsIDEsIAotICAgIDI0OCwgMTQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNjQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjE5LCAxNywgODEsIDE4LCAxMCwgMSwgMjE5LCAxNywgMTc0LCAxOCwgMTAsIDEsIDI0OCwgMTM3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyNDgsIDEzNywgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDgxLCAxOCwgMTAsIDEsIDI0OCwgMTM3LCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjA3LCAyMzIsIDY0LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzMiwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjA3LCAyMzIsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgMTY4LCA4MSwgMTgsIDEwLCAxLCAyMDksIDE2OCwgMTc0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgNDYsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIDgxLCAxOCwgMTAsIDEsIDIwNywgCi0gICAgMjM0LCAxNzQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNjQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNDYsIDE4LCAxMCwgMSwgMjA2LCAKLSAgICA0OSwgODEsIDE4LCAxMCwgMSwgMjA2LCA0OSwgMTc0LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDY0LCAxOCwgMTAsIDEsIDIxOSwgCi0gICAgMTUsIDQ2LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDgxLCAxOCwgMTAsIDEsIDIxOSwgMTUsIDE3NCwgMTgsIDEwLCAxLCAyNDIsIAotICAgIDYsIDY0LCAxOCwgMTAsIDEsIDI0MiwgNiwgNDYsIDE4LCAxMCwgMSwgMjQyLCA2LCA4MSwgMTgsIDEwLCAxLCAyNDIsIDYsIAotICAgIDE3NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNjQsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDQ2LCAxOCwgMTAsIDEsIDIyMCwgCi0gICAgMjU1LCA4MSwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTkyLCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMDksIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTkyLCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjA5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MCwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTgsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDI0NCwgMTkyLCA2NCwgMTgsIDEwLCAxLCAyNDQsIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjQyLCAzNCwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjQyLCAzNCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTE2LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNjQsIDE4LCAxMCwgMSwgMjMwLCAxNTYsIDQ2LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMTUsIDE3OCwgNDYsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCi0gICAgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgODEsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAKLSAgICAyMzgsIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIzOCwgMjUyLCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyMzgsIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA2NCwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjM3LCAyMTgsIDgxLCAxOCwgMTAsIDEsIDIzNywgMjE4LCAxNzQsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDIyMiwgMTI3LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDEyNywgODEsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIAotICAgIDE3NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDIzOCwgODYsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIxNSwgMjMxLCA2NCwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgNDYsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIAotICAgIDgxLCAxOCwgMTAsIDEsIDIxNSwgMjMxLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMywgODksIDg3LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIzNywgNDQsIDIzOCwgMzcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDgxLCAxOCwgMTAsIDEsIDIzNywgCi0gICAgNDQsIDIzOCwgMzcsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDExMCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCi0gICAgMjQzLCAxMTAsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA4MSwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIAotICAgIDExMCwgMTc0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA0NiwgMTgsIAotICAgIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDE2LCA3MCwgNTUsIDEwLCAxNiwgNzAsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAKLSAgICA1NSwgMTAsIDE2LCAxMjAsIDE4NywgNTYsIDEwLCAxNiwgMTI2LCAxODcsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCA1NiwgMTAsIAotICAgIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NSwgMTAsIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NiwgMTAsIAotICAgIDE2LCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDE2LCAyMzksIDE0NywgMTg3LCA1NiwgMTAsIDE2LCA1MiwgODAsIDI0OCwgCi0gICAgMjMxLCA1NiwgMTAsIDE2LCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTYsIAotICAgIDEwLCAxNiwgMjE1LCAyNTIsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU1LCAxMCwgMTYsIDUsIDIwOSwgMjUyLCA1NiwgMTAsIAotICAgIDEsIDIyMiwgMjA2LCA2NCwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgNDYsIDE4LCAxMCwgMSwgMjIyLCAyMDYsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIyMiwgMjA2LCAxNzQsIDE4LCAxMCwgMSwgMTA2LCA2NCwgMTgsIDEwLCAxLCAxMDYsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIyOSwgNzYsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAyMjksIAotICAgIDc2LCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTg4LCA2NCwgMTgsIDEwLCAxLCAxODgsIDQ2LCAxOCwgMTAsIDEsIDE4OCwgCi0gICAgODEsIDE4LCAxMCwgMSwgMTg4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAKLSAgICAxMzAsIDgxLCAxOCwgMTAsIDEsIDIwNywgMTYsIDIyOSwgMjA1LCAyMjksIDc2LCAxMzcsIDIyNSwgMTMwLCAxNzQsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTEwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICAyMDQsIDcxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjA0LCA3MSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAKLSAgICAyMTQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgODEsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgODEsIDE4LCAxMCwgMSwgMjQwLCA3NSwgCi0gICAgODksIDY0LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA0NiwgMTgsIDEwLCAxLCAyNDAsIDc1LCA4OSwgODEsIDE4LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDE4NCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgODksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAxODQsIAotICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxNTEsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMjksIDE0MSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE0LCAxNjIsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNCwgMTYyLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgCi0gICAgMjksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjAyLCAxMTEsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjM4LCAxMTUsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQwLCAKLSAgICA0OCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAotICAgIDQ4LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyNDAsIDQ4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIAotICAgIDEyMCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNywgMTIwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIAotICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIAotICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODMsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIAotICAgIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCi0gICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMTg0LCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxMDEsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAyMTYsIDEyMywgCi0gICAgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDEzNywgMjI1LCAxMzAsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDIyOSwgMjI4LCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQwLCA3MiwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgCi0gICAgMTczLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAKLSAgICAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjE2LCAxMjMsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIAotICAgIDEyOCwgODcsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIxLCAxNzksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIzNywgMTI4LCA4NywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyNDgsIDEzOSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyNDgsIDEzOSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTM3LCAyMjUsIDEzMCwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgCi0gICAgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIAotICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIAotICAgIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMzAsIDIzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAKLSAgICAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIAotICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgCi0gICAgMywgMjEwLCAxOTksIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjEsIDE3OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgCi0gICAgNDQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4MywgODEsIAotICAgIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyNDQsIDIwOCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjQ0LCAyMDgsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwMiwgCi0gICAgMTExLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMTcsIDEyMCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIAotICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgMjEwLCAKLSAgICAxOTksIDEzNywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIAotICAgIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCAKLSAgICAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgCi0gICAgMjEzLCA4MSwgMywgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTM3LCAyMjUsIDEzMCwgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDEzNywgMjI1LCAKLSAgICAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIAotICAgIDQwLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCi0gICAgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAKLSAgICAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgCi0gICAgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjUxLCA2MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjM4LCAxMTUsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDE3NCwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjAyLCAxMTEsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDEzNywgMywgMjQwLCA3MCwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDEzNywgMywgMjQwLCA3MCwgNjQsIDE4LCAyMTksIDIzMSwgNDksIDIxOSwgNzYsIDIxOSwgMjMxLCA1MCwgMjE5LCA3NiwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIAotICAgIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAKLSAgICAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgCi0gICAgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAKLSAgICAxNjIsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAKLSAgICA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIAotICAgIDE2MiwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCAzLCAxNTEsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgCi0gICAgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAotICAgIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIAotICAgIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyNTEsIDYwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIAotICAgIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAKLSAgICAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIAotICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCA4MywgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgMTUxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDE4NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAKLSAgICAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIAotICAgIDQ0LCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKLSAgICAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIAotICAgIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIAotICAgIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgCi0gICAgMTcwLCAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTM3LCAyMjUsIAotICAgIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCi0gICAgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAotICAgIDIwOCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDgzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjIxLCAxNzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAzLCAxNTEsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAKLSAgICAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIAotICAgIDE3OSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgNCwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAKLSAgICAyMTEsIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMTYsIDIwNiwgMTg4LCAyNTAsIDgyLCAyMjgsIDI1NCwgMjExLCAKLSAgICA2MiwgMiwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgMTMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDQ0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjI0LCA1NywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNSwgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTc0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjUxLCAzMywgNjQsIDE4LCAxMCwgMzIsIDIwNCwgOTAsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODksIDEwLCAzMiwgMjMwLCAxNzIsIDIxNiwgNTYsIDU0LCAxMCwgMzIsIDI0OCwgCi0gICAgNTMsIDI1MCwgMTQyLCAyNTAsIDE0MywgNTcsIDIxNCwgMTQ5LCA1NywgMjE0LCAzOCwgNTcsIDIxMywgMjI2LCA1NywgMjEzLCAKLSAgICAyMTUsIDU3LCAyMTMsIDIwNCwgNTcsIDIxMywgMTkzLCA1NywgMjEzLCAxODIsIDU3LCAyMTMsIDE3MSwgNTcsIDIxMywgCi0gICAgMTYwLCA1NywgMjE0LCAxNDgsIDU3LCAyMTQsIDEzNywgNTcsIDIxNCwgMTI2LCA1NywgMjE0LCAxMTUsIDU3LCAyMTQsIAotICAgIDEwNCwgNTcsIDIxNCwgOTMsIDU3LCAyMTQsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyMzMsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIDI0NSwgMjMzLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMTM5LCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0NSwgMjQyLCAyMTcsIDI0MSwgMjM5LCAKLSAgICAxNTksIDM1LCA4MCwgMjEzLCAxNDMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDAsIDIxMiwgODIsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMTcsIDQ3LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgCi0gICAgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjI3LCAxODUsIDI0NywgMjI1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjM2LCAxMDYsIDI0MSwgMTA4LCAzOSwgMzIsIDQ5LCAyMzcsIDEzNywgMzksIAotICAgIDMyLCA1MCwgMjM3LCAxMzcsIDM5LCA1MiwgMjA4LCAyMjgsIDQ5LCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNTAsIAotICAgIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDQ5LCAyMzcsIDEzNywgMzksIDIyNSwgMTcxLCA1MCwgMjM3LCAxMzcsIDM5LCAKLSAgICAyNDUsIDIwNiwgMjI1LCAxNzAsIDM5LCAzMiwgNDksIDE2MiwgNTYsIDM5LCAzMiwgNTAsIDE2MiwgNTYsIDM5LCAyMDgsIAotICAgIDIyOCwgNDksIDE2MiwgNTYsIDM5LCAyMDgsIDIyOCwgNTAsIDE2MiwgNTYsIDM5LCAyMjUsIDE3MSwgNDksIDE2MiwgNTYsIAotICAgIDM5LCAyMjUsIDE3MSwgNTAsIDE2MiwgNTYsIDM5LCAyNDUsIDIwNiwgMjI1LCAxNzEsIDU2LCAzOSwgMzYsIDIwOCwgMTk4LCAKLSAgICA0OSwgMjM3LCAxMzcsIDM5LCAzNiwgMjA4LCAxOTgsIDUwLCAyMzcsIDEzNywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAotICAgIDEyMCwgNzAsIDIyNywgMjMyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCAxMDQsIDI0NCwgMTQ0LCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCA5MywgMjQ0LCAxNDQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAKLSAgICAxMjQsIDIyNywgMTE0LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMTksIDc2LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIxOSwgCi0gICAgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCAKLSAgICA4MCwgNTAsIDI0NSwgOTMsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgCi0gICAgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDIxNywgMjQxLCAKLSAgICAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgCi0gICAgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgCi0gICAgMzUsIDgwLCA0OSwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyNTAsIDIxOCwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDI0NSwgMTY2LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAotICAgIDgwLCA1MCwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgMjQ1LCAxNjYsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgMjEzLCAxMjEsIDI0MywgODUsIDYxLCAKLSAgICAyMTMsIDEyMSwgMjQzLCA4NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MSwgMTU1LCAyMTcsIDI0MSwgCi0gICAgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDUxLCAxNTUsIDI0NCwgMTQzLCAyMTksIDE5OCwgMjQ2LCAyMTQsIDIxOSwgMTk4LCAKLSAgICAyMDQsIDcyLCAyMTksIDE5OCwgNTIsIDIwNCwgNzIsIDIxOSwgMTk4LCAyNDQsIDE0MywgMTI0LCAyMjcsIDExNCwgMjQ2LCAKLSAgICAyMTQsIDEyNCwgMjI3LCAxMTQsIDIwNCwgNzIsIDEyNCwgMjI3LCAxMTQsIDUsIDI0NSwgMjMzLCA1LCAxMzksIDI0NSwgCi0gICAgMjMzLCA1LCAyMzksIDEwMiwgMjExLCA2MSwgNSwgMjEzLCAxNDMsIDUsIDI0NSwgMjQyLCA1LCAyMTcsIDQ3LCA4MiwgNSwgCi0gICAgMjQwLCAyMTIsIDgyLCA1LCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDUsIDQ5LCAyMTksIDc2LCA1LCA1MCwgMjE5LCA3NiwgNSwgCi0gICAgNDksIDI0NSwgOTMsIDE1NSwgNSwgNTAsIDI0NSwgOTMsIDE1NSwgNSwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIAotICAgIDUwLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1LCA0MiwgNTQsIDUsIDI1MCwgMjM1LCA1LCAyNTAsIDU5LCA1LCA5MSwgCi0gICAgNTQsIDUsIDIzNSwgMjE5LCA1LCAyMjcsIDE3OSwgNTQsIDUsIDIzNywgMjQ3LCA1NCwgNSwgMjQxLCAzNSwgNTQsIDUsIAotICAgIDIxNiwgNzQsIDIxMiwgMCwgNSwgMjQzLCA5NywgNTQsIDUsIDIxOCwgMjQ2LCA1NCwgNSwgMjQ1LCAyMzEsIDI1MCwgNDksIAotICAgIDEwLCAyNDAsIDcwLCA2NCwgMTgsIDEwLCAyMDksIDIxMCwgMywgMjQwLCA3MCwgNTUsIDEwLCAyNDQsIDE3MSwgNjQsIDE4LCAKLSAgICAxMCwgMjA5LCAyNDksIDIzOSwgMTM3LCAxMCwgMjI5LCAyMjgsIDY0LCAxOCwgMTAsIDI0MCwgNzIsIDY0LCAxOCwgMTAsIAotICAgIDI0MCwgNzIsIDE3NCwgMTgsIDEwLCAyNDQsIDE3MywgNjQsIDE4LCAxMCwgMjQ0LCAxNzMsIDE3NCwgMTgsIDEwLCAyMjksIAotICAgIDIzMCwgNjQsIDE4LCAxMCwgMjI5LCAyMzAsIDE3NCwgMTgsIDEwLCAyMTMsIDgxLCA2NCwgMTgsIDEwLCAyMTMsIDgxLCAKLSAgICAxNzQsIDE4LCAxMCwgMjEwLCAyMjMsIDY0LCAxOCwgMTAsIDIxMCwgMjIzLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAxMjgsIAotICAgIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgCi0gICAgMTI4LCA4NywgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDEsIDEzNywgCi0gICAgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA4MSwgMTgsIDEwLCAxLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAxNzQsIDE4LCAxMCwgMSwgMTM3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDQ2LCAxOCwgMTAsIAotICAgIDEsIDI0OCwgMTM5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzksIDgxLCAxOCwgCi0gICAgMTAsIDEsIDI0OCwgMTM5LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDY0LCAxOCwgMTAsIDEsIDIwOSwgCi0gICAgMTcwLCAyMjUsIDk5LCA0NiwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIwOSwgMTcwLCA4MSwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgODksIDY0LCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgODksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgODksIDgxLCAxOCwgMTAsIDEsIDIwOSwgODksIDE3NCwgCi0gICAgMTgsIDEwLCAxLCAxODQsIDY0LCAxOCwgMTAsIDEsIDE4NCwgNDYsIDE4LCAxMCwgMSwgMTg0LCA4MSwgMTgsIDEwLCAxLCAKLSAgICAxODQsIDE3NCwgMTgsIDEwLCAxLCAxNTEsIDY0LCAxOCwgMTAsIDEsIDE1MSwgNDYsIDE4LCAxMCwgMSwgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAxLCAxNTEsIDE3NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTg1LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyNDQsIDE4NSwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTAxLCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMSwgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgCi0gICAgMTA4LCA2NCwgMTgsIDEwLCAxLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIxNCwgMTYyLCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgODEsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMTMsIDQwLCA2NCwgMTgsIDEwLCAxLCAyMTMsIDQwLCA0NiwgMTgsIDEwLCAxLCAyMTMsIDQwLCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyMTMsIDQwLCAxNzQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNjQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNDYsIDE4LCAxMCwgCi0gICAgMSwgMjE1LCAyOSwgODEsIDE4LCAxMCwgMSwgMjE1LCAyOSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMjA4LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyNDQsIDIwOCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDgxLCAxOCwgMTAsIDEsIDI0NCwgMjA4LCAxNzQsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAyNTIsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDI1MiwgODEsIAotICAgIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDE3NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgNjQsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA4MSwgMTgsIDEwLCAxLCAyMDIsIDExMSwgMTc0LCAxOCwgMTAsIDEsIDI1MSwgCi0gICAgNjAsIDY0LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDQ2LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDgxLCAxOCwgMTAsIDEsIDI1MSwgCi0gICAgNjAsIDE3NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNjQsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIzOCwgMTE1LCA4MSwgMTgsIDEwLCAxLCAyMzgsIDExNSwgMTc0LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDY0LCAxOCwgMTAsIAotICAgIDEsIDI0MCwgNDgsIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDgxLCAxOCwgMTAsIDEsIDI0MCwgNDgsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMTcsIDEyMCwgNjQsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDQ2LCAxOCwgMTAsIDEsIDIxNywgMTIwLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMTcsIDEyMCwgMTc0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDY0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIzMCwgMjMsIDgxLCAxOCwgMTAsIDEsIDIzMCwgMjMsIDE3NCwgMTgsIDEwLCAxLCAyMjgsIDI5LCA2NCwgMTgsIAotICAgIDEwLCAxLCAyMjgsIDI5LCA0NiwgMTgsIDEwLCAxLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMjgsIDI5LCAxNzQsIDE4LCAKLSAgICAxMCwgMSwgODMsIDY0LCAxOCwgMTAsIDEsIDgzLCA0NiwgMTgsIDEwLCAxLCA4MywgODEsIDE4LCAxMCwgMSwgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICA4MSwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDY0LCAxOCwgMTAsIDEsIDIzNywgNDQsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAxLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAxLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAxLCA4OSwgNjQsIDE4LCAxMCwgMSwgODksIDQ2LCAxOCwgMTAsIDEsIDg5LCA4MSwgCi0gICAgMTgsIDEwLCAxLCA4OSwgMTc0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDQ2LCAxOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAxNTQsIDI0MCwgMjEyLCA4MiwgMTU0LCAyMTcsIDMxLCA4MiwgMTU0LCA0MiwgNTQsIDE1NCwgMjQzLCA5NywgNTQsIAotICAgIDE1NCwgMjE4LCAyNDYsIDU0LCAxNTQsIDI1MCwgMjM1LCAxNTQsIDI1MCwgMTYwLCAxNTQsIDQ5LCAyMTksIDc2LCAxNTQsIAotICAgIDUwLCAyMTksIDc2LCAxNTQsIDI1MCwgNTksIDE1NCwgOTEsIDU0LCAxNTQsIDI0NSwgMjMzLCAxNTQsIDIzNSwgMjE5LCAKLSAgICAxNTQsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNTQsIDIxMiwgMCwgMTU0LCAxNywgMjAyLCA4NCwgMTU0LCAxNywgMTA1LCAxNTQsIAotICAgIDE3LCAxMDgsIDE1NCwgMTcsIDE0NywgMTU0LCAxNywgMTQ5LCAxNTQsIDE3LCAxNzAsIDE1NCwgMTcsIDE5NSwgMTU0LCAxNywgCi0gICAgMjEzLCAxMTEsIDE1NCwgMTcsIDE5OSwgMTU0LCAxNywgMjIyLCA2MywgMTU0LCAyNDUsIDI0MiwgMTU0LCAyMTMsIDE0MywgCi0gICAgMTU0LCAyMjcsIDE3OSwgNTQsIDE1NCwgMjQxLCAzNSwgNTQsIDE1NCwgMjM3LCAyNDcsIDU0LCAxNTQsIDIxNywgNDcsIDgyLCAKLSAgICAxNTQsIDI0NSwgMjMxLCAyNTAsIDQ5LCAxNTQsIDgsIDYsIDEsIDYzLCAxNTQsIDgsIDYsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIAotICAgIDYsIDEsIDI0NywgMTI1LCAxNTQsIDgsIDYsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNiwgMSwgNzQsIDE1NCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzQsIDE1NCwgOCwgNiwgMSwgMjM5LCA3NSwgMTU0LCA4LCA2LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA2LCAxLCAKLSAgICA3NSwgMTU0LCA4LCA2LCAxLCAyMzAsIDE4NCwgMTU0LCA4LCA2LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDYsIDEsIDE1OSwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMjYsIDE4NSwgMTU0LCA4LCA2LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA2LCAxLCA3OCwgMTU0LCA4LCAKLSAgICA2LCAxLCAyMTksIDE4NCwgMTU0LCA4LCA2LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA2LCAxLCAxNDYsIDE1NCwgOCwgNiwgMSwgCi0gICAgMTk0LCAxNTQsIDgsIDYsIDEsIDIxMCwgNjksIDE1NCwgOCwgNiwgMSwgNjgsIDE1NCwgOCwgNiwgMSwgMjA2LCAxNjQsIAotICAgIDE1NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDE1NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNiwgMSwgMjAzLCAxMjQsIAotICAgIDE1NCwgOCwgNiwgMSwgMjAyLCAxNTksIDE1NCwgNDksIDUxLCAxNTUsIDE1NCwgMjE2LCA3NCwgMjEyLCAwLCAxNTQsIDUwLCAKLSAgICA1MSwgMTU1LCAxNTQsIDI0NiwgNTMsIDI1MSwgMTM4LCAxNTQsIDEyNCwgMjI3LCAxMTQsIDE1NCwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCAxNTQsIDgsIDUsIDEsIDYzLCAxNTQsIDgsIDUsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIDUsIDEsIDI0NywgMTI1LCAKLSAgICAxNTQsIDgsIDUsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNSwgMSwgNzQsIDE1NCwgOCwgNSwgMSwgMjQwLCAxNzQsIDE1NCwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NSwgMTU0LCA4LCA1LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA1LCAxLCA3NSwgMTU0LCA4LCA1LCAxLCAKLSAgICAyMzAsIDE4NCwgMTU0LCA4LCA1LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDUsIDEsIDE1OSwgMTU0LCA4LCA1LCAxLCAyMjYsIAotICAgIDE4NSwgMTU0LCA4LCA1LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA1LCAxLCA3OCwgMTU0LCA4LCA1LCAxLCAyMTksIDE4NCwgCi0gICAgMTU0LCA4LCA1LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA1LCAxLCAxNDYsIDE1NCwgOCwgNSwgMSwgMTk0LCAxNTQsIDgsIDUsIAotICAgIDEsIDIxMCwgNjksIDE1NCwgOCwgNSwgMSwgNjgsIDE1NCwgOCwgNSwgMSwgMjA2LCAxNjQsIDE1NCwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDQsIDE1NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNSwgMSwgMjAzLCAxMjQsIDE1NCwgOCwgNSwgMSwgMjAyLCAKLSAgICAxNTksIDE1NCwgNDksIDI0NSwgOTMsIDE1NSwgMTU0LCA4MCwgMjI3LCAxMTQsIDE1NCwgNTAsIDI0NSwgOTMsIDE1NSwgCi0gICAgMTU0LCAyMDgsIDIyNywgMTU0LCA0OSwgNjEsIDIxOSwgNzYsIDE1NCwgNTAsIDYxLCAyMTksIDc2LCAxMjcsIDEzOSwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDEyNywgNDksIDI0NSwgMTY2LCAxNTUsIDEyNywgNTAsIDI0NSwgMTY2LCAxNTUsIDEyNywgMTM5LCAKLSAgICAyNDUsIDIzMywgMTI3LCA2NywgMTAxLCAyNDMsIDg1LCAxMjcsIDY3LCAxLCAyMDQsIDAsIDEyNywgNjcsIDEsIDUsIDYzLCAKLSAgICAxMjcsIDY3LCAxLCA1LCA3NSwgMTI3LCA2NywgMSwgNSwgNjgsIDEyNywgNjcsIDEsIDUsIDc0LCAxMjcsIDY3LCAxLCA1LCAKLSAgICA3OCwgMTI3LCA2NywgMSwgNSwgMTk4LCAxMjcsIDY3LCAxLCA1LCAyMDIsIDIxMywgMTI3LCA2NywgMSwgNSwgMjAyLCAyNDcsIAotICAgIDEyNywgNjcsIDEsIDUsIDIwNywgMjAzLCAxMjcsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAyNDEsIDgyLCAxMjcsIDY3LCAKLSAgICAxLCA2MywgMTI3LCA2NywgMSwgNzUsIDEyNywgNjcsIDEsIDY4LCAxMjcsIDY3LCAxLCA3NCwgMTI3LCA2NywgMSwgNzgsIAotICAgIDEyNywgNjcsIDEsIDE3MywgMTI3LCA2NywgMSwgMjI5LCAxMDAsIDEyNywgNjcsIDEsIDIyOCwgMjA5LCAxMjcsIDY3LCAxLCAKLSAgICAyMjksIDIwMSwgMTI3LCA2NywgMSwgMjI5LCAyNiwgMTI3LCA2NywgMSwgMjE1LCAzNiwgMTI3LCA2NywgMSwgMjEyLCAxNjIsIAotICAgIDEyNywgNjcsIDEsIDIxMSwgMTAsIDEyNywgNjcsIDEsIDIxNCwgMTc3LCAxMjcsIDY3LCAxLCAyMTIsIDEzLCAxMjcsIDY3LCAKLSAgICAxLCAyMTAsIDIyLCAxMjcsIDY3LCAxLCAyMDksIDIsIDEyNywgNjcsIDEsIDIwNywgMjAzLCAxMjcsIDY3LCAxLCAyMDksIAotICAgIDE4NywgMTI3LCA2NywgMSwgMTM1LCAxMjcsIDY3LCAxLCAyMDEsIDIwMSwgMTI3LCA2NywgMSwgMjIyLCAxMDAsIDEyNywgCi0gICAgNjcsIDEsIDIyMSwgODQsIDEyNywgNjcsIDEsIDIyMiwgMjQwLCAxMjcsIDY3LCAxLCAyMjEsIDE5MSwgMTI3LCA2NywgMSwgCi0gICAgMTUyLCAxMjcsIDY3LCAxLCAyMzcsIDMsIDEyNywgNjcsIDEsIDIzNiwgMjYsIDEyNywgNjcsIDEsIDIzNywgNjcsIDEyNywgCi0gICAgNjcsIDEsIDIzNiwgMTM2LCAxMjcsIDY3LCAxLCAxOTIsIDEyNywgNjcsIDEsIDIyNCwgMTU1LCAxMjcsIDY3LCAxLCAyMjMsIAotICAgIDI0NiwgMTI3LCA2NywgMSwgMjI1LCAyMCwgMTI3LCA2NywgMSwgMjI0LCA4MiwgMTI3LCA2NywgMSwgMTk4LCAxMjcsIDY3LCAKLSAgICAxLCAyMDIsIDIxMywgMTI3LCA2NywgMSwgMjAyLCAyNDcsIDEyNywgNjcsIDEsIDIxNiwgMjIwLCAxMjcsIDY3LCAxLCAyMTYsIAotICAgIDU3LCAxMjcsIDY3LCAxLCAyMTUsIDE0NSwgMTI3LCA2NywgMSwgMjE2LCAxNTgsIDEyNywgNjcsIDEsIDIxNSwgMjI3LCAKLSAgICAxMjcsIDY3LCAxLCAyMDQsIDExMSwgMTI3LCA2NywgMSwgMjIzLCAxNjMsIDEyNywgNjcsIDIwNSwgMTg2LCAyMTEsIDI0MSwgCi0gICAgODIsIDEyNywgNjcsIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDEyNywgMjgsIDI0MCwgNywgMTI3LCAyOCwgMSwgMjI5LCAKLSAgICA1OSwgMTI3LCAyOCwgMSwgMjExLCAxNTYsIDEyNywgMjgsIDEsIDIyOSwgNTIsIDEyNywgMjgsIDEsIDIyMiwgOTMsIDEyNywgCi0gICAgMjgsIDEsIDIyMiwgOTEsIDEyNywgMjgsIDEsIDIyMiwgOTAsIDEyNywgMjgsIDEsIDIwOCwgMjQwLCAxMjcsIDI4LCAxLCAKLSAgICAyMTEsIDE0NSwgMTI3LCAyOCwgMSwgMjE2LCA0NywgMTI3LCAyOCwgMSwgMjE2LCA0MiwgMTI3LCAyOCwgMSwgMjE2LCAzOSwgCi0gICAgMTI3LCAyOCwgMSwgMjE2LCAzMiwgMTI3LCAyOCwgMSwgMjE2LCAyNywgMTI3LCAyOCwgMSwgMjE2LCAyMiwgMTI3LCAyOCwgCi0gICAgMSwgMjE2LCAzMywgMTI3LCAyOCwgMSwgMjE2LCA0NSwgMTI3LCAyOCwgMSwgMjI0LCAxNDEsIDEyNywgMjgsIDEsIDIxOCwgCi0gICAgMTUzLCAxMjcsIDI4LCAxLCAyMTEsIDE1MywgMTI3LCAyOCwgMSwgMjE4LCAxNDIsIDEyNywgMjgsIDEsIDIxMiwgMTExLCAKLSAgICAxMjcsIDI4LCAxLCAyMTEsIDE1MCwgMTI3LCAyOCwgMSwgMjMxLCAxMDYsIDEyNywgMjgsIDEsIDI0NiwgNzQsIDEyNywgMjgsIAotICAgIDEsIDIxMSwgMTYwLCAxMjcsIDI4LCAxLCAyNDYsIDEzOCwgMTI3LCAyOCwgMSwgMjI5LCAxMjAsIDEyNywgMjgsIDEsIDIwOSwgCi0gICAgNjYsIDEyNywgMjgsIDEsIDIxOCwgMTkwLCAxMjcsIDI4LCAxLCAyMzYsIDI1MSwgMTI3LCAyOCwgMSwgNjMsIDEyNywgMjgsIAotICAgIDEsIDI1MSwgMTA5LCAxMjcsIDI4LCAxLCAxOTgsIDEyNywgMjgsIDEsIDIwMywgOTksIDEyNywgMjgsIDEsIDI0MSwgNTUsIAotICAgIDEyNywgMjgsIDEsIDc0LCAxMjcsIDI4LCAxLCAyMDMsIDM5LCAxMjcsIDI4LCAxLCAyMDMsIDUyLCAxMjcsIDI4LCAxLCA3OCwgCi0gICAgMTI3LCAyOCwgMSwgMjA0LCAxMTEsIDEyNywgMjgsIDEsIDIwNCwgMTA3LCAxMjcsIDI4LCAxLCAyMjAsIDczLCAxMjcsIDI4LCAKLSAgICAxLCAyMDIsIDI0NywgMTI3LCAyOCwgMSwgNjgsIDEyNywgMjgsIDEsIDIwNCwgNDgsIDEyNywgMjgsIDEsIDIwNCwgNjIsIAotICAgIDEyNywgMjgsIDEsIDIwNCwgMzAsIDEyNywgMjgsIDEsIDIwMiwgMjEzLCAxMjcsIDI4LCAxLCAyNDAsIDIzOCwgMTI3LCAyOCwgCi0gICAgMSwgMjAzLCAxMSwgMTI3LCAyOCwgMSwgNzUsIDE1NCwgMjQ2LCAyMjAsIDU0LCAxNTQsIDIxOCwgMjAsIDU0LCAxNTQsIAotICAgIDIyMSwgMTY2LCA1NCwgMTU0LCAyMjUsIDE3MCwgMTU0LCAyNDcsIDIwMywgMTQyLCAxNTQsIDIwMywgNDMsIDU0LCAxNTQsIAotICAgIDIwMywgMjQ2LCA1NCwgMTI3LCAyMzksIDE1NiwgMTU3LCAyMDYsIDM4LCAxMjcsIDk2LCA0NywgMTI3LCAxNzcsIDQ3LCAKLSAgICAxMjcsIDg2LCA0NywgMTI3LCAxODMsIDQ3LCAxMjcsIDYyLCAyMTEsIDE3NywgMTI3LCA2MSwgMjQ2LCA2MSwgMjMwLCAyNTEsIAotICAgIDI1MCwgMjA1LCAyNTAsIDIyOCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAyMTMsIDEzMCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAKLSAgICAyMDksIDEzOCwgMjIwLCA5MCwgMjE2LCA5NiwgMjQ2LCAxODIsIDIxNiwgOTYsIDI0NiwgMTgyLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjM5LCA2MywgMjksIDY2LCA0LCAyNDksIDIwOCwgNzQsIDI5LCA2NiwgNCwgMjQ5LCAyMTcsIDc1LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMTg1LCA3OCwgMjksIDY2LCA0LCAyNDksIDIzNSwgNjgsIDI5LCA2NiwgNCwgMjQ5LCAyNTQsIDI0NCwgMjEyLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjAxLCAyNDQsIDc1LCAyOSwgNjYsIDQsIDI0OSwgMjQxLCAyNDMsIDIzMywgMjksIDY2LCA0LCAyNDksIAotICAgIDIzMSwgMjQzLCAxMTMsIDI5LCA2NiwgNCwgMjQ5LCAxOTUsIDI0MiwgNDIsIDI5LCA2NiwgNCwgMjQ5LCAxODksIDIzMCwgCi0gICAgMTgxLCAyOSwgNjYsIDQsIDI0OSwgMjAwLCAyMzAsIDE2MSwgMjksIDY2LCA0LCAyNDksIDIxMCwgMjMwLCAxMDEsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAxODEsIDIzMCwgODIsIDI5LCA2NiwgNCwgMjQ5LCAxNjksIDE3MywgMjksIDY2LCA0LCAyNDksIDIwMiwgCi0gICAgMjI5LCAyMDEsIDI5LCA2NiwgNCwgMjQ5LCAxNzksIDIyOSwgMTAwLCAyOSwgNjYsIDQsIDI0OSwgMTc2LCAyMjksIDI2LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMTY1LCAyMjgsIDIwOSwgMjksIDY2LCA0LCAyNDksIDE2NiwgMTkyLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjMyLCAyMjUsIDIwLCAyOSwgNjYsIDQsIDI0OSwgMTczLCAyMjQsIDE1NSwgMjksIDY2LCA0LCAyNDksIDIzMCwgMjI0LCAKLSAgICA4MiwgMjksIDY2LCA0LCAyNDksIDIyMiwgMjIzLCAyNDYsIDI5LCA2NiwgNCwgMjQ5LCAyNDMsIDIwMSwgMjAxLCAyOSwgNjYsIAotICAgIDQsIDI0OSwgMjIxLCAyMjIsIDI0MCwgMjksIDY2LCA0LCAyNDksIDIxNSwgMjIyLCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAxOTQsIDIyMSwgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMTkxLCAyMjEsIDg0LCAyOSwgNjYsIDQsIDI0OSwgMjUwLCAxODUsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAxNzQsIDIxOSwgMzQsIDI5LCA2NiwgNCwgMjQ5LCAyMDcsIDIxOCwgMTY3LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjM0LCAyMTgsIDY5LCAyOSwgNjYsIDQsIDI0OSwgMTk2LCAyMTcsIDE5MSwgMjksIDY2LCA0LCAyNDksIDIyOSwgCi0gICAgMjE3LCAxMjYsIDI5LCA2NiwgNCwgMjQ5LCAxNjgsIDIxNywgMTA2LCAyOSwgNjYsIDQsIDI0OSwgMjI0LCAyMTcsIDg4LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjEzLCAyMTcsIDc3LCAyOSwgNjYsIDQsIDI0OSwgMTg2LCAyMTYsIDIyMCwgMjksIDY2LCA0LCAKLSAgICAyNDksIDIxOCwgMjE2LCAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxOTMsIDIxNiwgNTcsIDI5LCA2NiwgNCwgMjQ5LCAyNTIsIAotICAgIDIxNSwgMjI3LCAyOSwgNjYsIDQsIDI0OSwgMjE5LCAyMTUsIDE0NSwgMjksIDY2LCA0LCAyNDksIDIxNCwgMjE1LCAzNiwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIzNywgMjE0LCAxNzcsIDI5LCA2NiwgNCwgMjQ5LCAyMDUsIDIxMiwgMTYyLCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjMzLCAyMTIsIDEzLCAyOSwgNjYsIDQsIDI0OSwgMTg4LCAyMTEsIDEwLCAyOSwgNjYsIDQsIDI0OSwgMTg3LCAKLSAgICAyMTAsIDIyLCAyOSwgNjYsIDQsIDI0OSwgMjQ4LCAyMDksIDE4NywgMjksIDY2LCA0LCAyNDksIDIwOSwgMjA5LCAyLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjQ2LCAxMzUsIDI5LCA2NiwgNCwgMjQ5LCAxNzcsIDIwNywgMjAzLCAyOSwgNjYsIDQsIDI0OSwgMTkyLCAKLSAgICAyMDQsIDExMSwgMjksIDY2LCA0LCAyNDksIDE3MSwgMjA0LCA2MiwgMjksIDY2LCA0LCAyNDksIDIwNiwgMjA0LCAzMCwgMjksIAotICAgIDY2LCA0LCAyNDksIDIwNCwgMjA0LCAwLCAyOSwgNjYsIDQsIDI0OSwgMjI4LCAyMDIsIDExNiwgMjksIDY2LCA0LCAyNDksIAotICAgIDE3MiwgMjAyLCA5MiwgMjksIDY2LCA0LCAyNDksIDIyNSwgMjAyLCAxNywgMjksIDY2LCA0LCAyNDksIDIyMCwgMjU0LCAzNCwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIwMywgMjUzLCAxNzgsIDI5LCA2NiwgNCwgMjQ5LCAxNjIsIDI1MCwgMzQsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAxNzUsIDI0MiwgOSwgMjksIDY2LCA0LCAyNDksIDE1OCwgMjQyLCA4LCAyOSwgNjYsIDQsIDI0OSwgMTk4LCAyMjEsIAotICAgIDIwLCAyOSwgNjYsIDQsIDI0OSwgMjE2LCAyMTcsIDE4OSwgMjksIDY2LCA0LCAyNDksIDE4NCwgMjE3LCAxOTMsIDI5LCA2NiwgCi0gICAgNCwgMjQ5LCAxNzAsIDIxNiwgMjE4LCAyOSwgNjYsIDQsIDI0OSwgMjEyLCAyMTYsIDIxNywgMjksIDY2LCA0LCAyNDksIAotICAgIDE3OCwgMjE1LCAyMjYsIDI5LCA2NiwgNCwgMjQ5LCAxODAsIDIxMCwgMTksIDI5LCA2NiwgNCwgMjQ5LCAxNjAsIDIwNywgCi0gICAgMTU4LCAyOSwgNjYsIDQsIDI0OSwgMTU3LCAxMDgsIDI5LCA2NiwgMTYsIDI0OSwgMjI3LCAyOSwgNjYsIDE2LCAyNDksIAotICAgIDIyNiwgMjksIDY2LCAxNiwgMjQ5LCAyMjMsIDI5LCA2NiwgMTYsIDI0OSwgMjExLCAyOSwgNjYsIDE2LCAyNDksIDE5OSwgCi0gICAgMjksIDY2LCAxNiwgMjQ5LCAxOTcsIDI5LCA2NiwgMTYsIDI0OSwgMTkwLCAyOSwgNjYsIDE2LCAyNDksIDE4MywgMjksIDY2LCAKLSAgICAxNiwgMjQ5LCAxODIsIDI5LCA2NiwgMTYsIDI0OSwgMTY3LCAyOSwgNjYsIDE2LCAyNDksIDE2NCwgMjksIDY2LCAxNiwgCi0gICAgMjQ5LCAxNjMsIDI5LCA2NiwgMTYsIDI0OSwgMTYxLCAyOSwgNjYsIDE2LCAyNDksIDE1OSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTU2LCAyMjUsIDEyMiwgMjksIDY2LCAxMzMsIDI0OSwgMTU1LCAyMDMsIDI1MCwgMjksIDY2LCAxMzMsIDI0OSwgMTU0LCAKLSAgICAyNDQsIDU4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNTMsIDI0MSwgMzIsIDI5LCA2NiwgMTMzLCAyNDksIDE1MiwgMjI1LCA5MywgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgMTUxLCAyMTEsIDEwMSwgMjksIDY2LCAxMzMsIDI0OSwgMTUwLCAyNDAsIDIxOSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTQ5LCAyMTYsIDE4NCwgMjksIDY2LCAxMzMsIDI0OSwgMTQ4LCAyMTMsIDQyLCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxNDcsIDIzNywgNjYsIDI5LCA2NiwgMTMzLCAyNDksIDE0NiwgMjExLCAyMzUsIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDE0NSwgMjQ4LCAyMSwgMjksIDY2LCAxMzMsIDI0OSwgMTQ0LCAyNDUsIDE0OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQzLCAKLSAgICAyNDcsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQyLCAyMDQsIDM4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDEsIDI0OCwgCi0gICAgMjI3LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDAsIDIyMCwgNDEsIDI5LCA2NiwgMTMzLCAyNDksIDEzOSwgMjExLCAyMDcsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEzOCwgMjQ1LCA1OSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzNywgMjI5LCAyNDksIDI5LCA2NiwgCi0gICAgMjI0LCA0NSwgMjQ5LCAxMzYsIDIzMCwgMiwgMjksIDY2LCAxMzMsIDI0OSwgMTM1LCAyMjAsIDU1LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMzQsIDIwNCwgMTIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMywgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMiwgMjUwLCAKLSAgICAxMTksIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzEsIDIyNCwgMjMyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzAsIDI0NywgCi0gICAgMjAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjksIDIzOCwgMzEsIDI5LCA2NiwgMTMzLCAyNDksIDEyOCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTI3LCAyMDMsIDI0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTI2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMjUsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDEyNCwgMjM2LCA1MywgMjksIDY2LCAxMzMsIDI0OSwgMTIzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjIsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEyMSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDExOSwgMjA3LCAxNzIsIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDExOCwgMjksIDY2LCAxMzMsIDI0OSwgMTE3LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTYsIDI0NiwgMTAsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDExNSwgMjksIDY2LCAxMzMsIDI0OSwgMTE0LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTMsIDIzOCwgMjIxLCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMTIsIDI1MCwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTEsIDI5LCA2NiwgMTMzLCAyNDksIDExMCwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgMTA5LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDgsIDI5LCA2NiwgMTMzLCAyNDksIDEwNywgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDUsIDI5LCA2NiwgMTMzLCAyNDksIDEwNCwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTAzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMDIsIDIyNCwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDEwMSwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTAwLCAyMDgsIDk1LCAyOSwgNjYsIDEzMywgMjQ5LCA5OSwgMjksIDY2LCAxMzMsIDI0OSwgOTgsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDk3LCAyOSwgNjYsIDEzMywgMjQ5LCA5NiwgMjksIDY2LCAxMzMsIDI0OSwgOTUsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDk0LCAyOSwgNjYsIDEzMywgMjQ5LCA5MywgMjksIDY2LCAxMzMsIDI0OSwgOTIsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDkxLCAyOSwgNjYsIDEzMywgMjQ5LCA5MCwgMjksIDY2LCAxMzMsIDI0OSwgODksIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDg4LCAyMzcsIDM1LCAyOSwgNjYsIDEzMywgMjQ5LCA2NywgMjM5LCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDY0LCAyNDgsIAotICAgIDIwNCwgMjksIDY2LCAxMzMsIDI0OSwgNTksIDIxMSwgMjE0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OCwgNDcsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDU3LCAyOSwgNjYsIDEzMywgMjQ5LCA1NiwgMjEwLCAxNTUsIDI5LCA2NiwgMTMzLCAyNDksIDU1LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCA1NCwgMjksIDY2LCAxMzMsIDI0OSwgNTMsIDIwNCwgMzQsIDI0NiwgMTc5LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCA1MiwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAyNDksIDUxLCAyNDYsIDE4MCwgMjM5LCAxMzQsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDUwLCAyMDQsIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCA0OSwgMjksIDY2LCAxMzMsIDI0OSwgNDgsIDI5LCA2NiwgCi0gICAgMjI0LCA0NSwgMjQ5LCA0NywgMjQzLCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDQ2LCAyOSwgNjYsIDEzMywgMjQ5LCA0NSwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgNDMsIDI5LCA2NiwgMTMzLCAyNDksIDQyLCAyOSwgNjYsIDEzMywgMjQ5LCA0MSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgNDAsIDI0NCwgMTQ3LCAyOSwgNjYsIDEzMywgMjQ5LCAzOSwgMjksIDY2LCAxMzMsIDI0OSwgMzgsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDM3LCAyOSwgNjYsIDEzMywgMjQ5LCAzNiwgMjksIDY2LCAxMzMsIDI0OSwgMzUsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCAxMjAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NywgMjksIDY2LCAxMzMsIAotICAgIDIwNSwgMjQxLCAyNDksIDg2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODUsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgCi0gICAgMjQ5LCA4NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODIsIAotICAgIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgwLCAyOSwgNjYsIAotICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgNzksIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OCwgMjksIDY2LCAxMzMsIDIwNSwgCi0gICAgMjQxLCAyNDksIDc3LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAKLSAgICA3NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzMsIDI5LCAKLSAgICA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcxLCAyOSwgNjYsIDEzMywgCi0gICAgMjA1LCAyNDEsIDI0OSwgNzAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKLSAgICAyNDksIDY4LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NSwgCi0gICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjIsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYwLCAyOSwgNjYsIDEzMywgMjA1LCAKLSAgICAyNDEsIDI0OSwgNDQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAzNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIAotICAgIDEzMSwgMjI3LCAxMTQsIDI1MSwgMTAyLCAyMDMsIDIzOCwgMjEzLCAxMzEsIDI0MywgODUsIDI1MSwgMTAyLCAyNDYsIDE2OSwgCi0gICAgODIsIDI1MSwgMTAyLCA0MiwgMTA1LCAyNTEsIDEwMiwgNDIsIDEwOCwgMjUxLCAxMDIsIDQyLCAxNDcsIDI1MSwgMTAyLCAKLSAgICA0MiwgMTQ5LCAyNTEsIDEwMiwgNDIsIDE3MCwgMjUxLCAxMDIsIDQyLCAxOTUsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTEsIAotICAgIDI1MSwgMTAyLCA0MiwgMTk5LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjMsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTIsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTEsIDI1MSwgMTAyLCA0MiwgMjA5LCA1MywgMjUxLCAxMDIsIDQyLCAyMzksIDE1MywgMjUxLCAKLSAgICAxMDIsIDQyLCAyNDAsIDE4LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzQsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDUsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjQxLCAxMzQsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OCwgMjUxLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIAotICAgIDI1MSwgMTAyLCA0MiwgMTIwLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDEyNiwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAKLSAgICAyMzksIDE0NywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMTIsIAotICAgIDg4LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAKLSAgICAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTE4LCAyMDksIDM2LCAyNTEsIAotICAgIDEwMiwgNDIsIDEyMCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAxMjYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAKLSAgICAxNDcsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAyMzMsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEyLCA4OCwgCi0gICAgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDEsIDE0MywgMjA5LCAKLSAgICAzNiwgMjUxLCAxMDIsIDQyLCAyMjIsIDY0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyNTEsIAotICAgIDEwMiwgNDIsIDIwNywgMTUyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgCi0gICAgMjM5LCAxNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQwLCAxOSwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDc1LCAKLSAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTA2LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTM1LCAyMDksIAotICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNTksIDIwOSwgMzYsIDI1MSwgMTAyLCAyMDQsIDUxLCAyNDgsIDIxOSwgMjA2LCAKLSAgICAyMzUsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMTQsIDE3MSwgCi0gICAgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMDksIDYxLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgCi0gICAgMTQwLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDI0MiwgNDUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIAotICAgIDIyNywgOTUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIxNCwgMTcxLCAyMTAsIAotICAgIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIwOSwgNjEsIDIxMCwgMjQwLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgCi0gICAgMjE3LCA1NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNywgMTM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIAotICAgIDExOCwgMjQyLCA2NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxNzAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOCwgCi0gICAgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAotICAgIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDIzOSwgMjMzLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjA5LCAyMzcsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzYsIAotICAgIDEyLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAyMzcsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAotICAgIDIzMywgMjA5LCAzNywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIxMSwgODgsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgCi0gICAgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMTEsIAotICAgIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDM3LCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDI0MCwgMTksIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIyNCwgODUsIAotICAgIDMwLCAyNTEsIDEyOSwgMjM3LCAyOSwgMTE4LCAyMTgsIDg2LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDEwNSwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMzcsIDI1LCAxMDUsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTA4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIAotICAgIDEwOCwgMzAsIDI1MSwgMTI5LCAyNDUsIDU2LCAxMjAsIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTIwLCAKLSAgICAyNDIsIDY0LCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDE3MCwgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MiwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MywgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDIwOSwgCi0gICAgMTUyLCAzMCwgMjUxLCAxMjksIDIyNCwgMjIyLCAyMDksIDE1MiwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDE1MiwgCi0gICAgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDUzLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDI0MCwgMTgsIDMwLCAyNTEsIAotICAgIDEyOSwgMjA4LCA2MSwgMjQwLCAxOSwgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDI0MCwgMTgsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA5LCA3NiwgMjQwLCAxOCwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMTgsIDIzNiwgMTEsIDMwLCAyNTEsIAotICAgIDEyOSwgMjA5LCA3NiwgMTI2LCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOCwgNjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIzOSwgMjMzLCAKLSAgICAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0NywgMjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIyMywgNjAsIAotICAgIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAKLSAgICAyMDksIDc2LCAyMzksIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNDQsIDQwLCAyMzksIDIzMywgMjI0LCA4NSwgMzAsIAotICAgIDI1MSwgMTI5LCAyMTEsIDQ5LCAyNDAsIDE5LCAyMjQsIDg1LCAzMCwgMTE4LCAxNjIsIDU0LCAzMCwgMTE4LCAxNjIsIDIsIAotICAgIDI1MCwgMjU1LCAxOCwgMzAsIDEyMCwgMjA5LCA1OCwgNTQsIDMwLCAxMjYsIDIxNywgNTQsIDU0LCAzMCwgMjAzLCA1MCwgCi0gICAgNTQsIDMwLCAyMDksIDIzOCwgNTQsIDMwLCAyNDIsIDY2LCA1NCwgMzAsIDIyMCwgODcsIDU0LCAzMCwgMTIwLCAyMjAsIDg2LCAKLSAgICA1NCwgMzAsIDEyNiwgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDE0NywgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDIzMywgMjIwLCAKLSAgICA4NiwgNTQsIDMwLCAyMjQsIDIxNiwgNTQsIDMwLCAyMjgsIDEzOSwgMjQ4LCAyMTksIDU0LCAzMCwgMjI3LCA4OCwgNTQsIAotICAgIDMwLCAyMTksIDIxMywgNTQsIDMwLCAyMDMsIDE3MywgNTQsIDMwLCAyNTAsIDg3LCA1NCwgMzAsIDI1MCwgMTAyLCA1NCwgCi0gICAgMzAsIDIzOCwgNywgNTQsIDMwLCAyMDgsIDIzLCAyNDgsIDIxOSwgNTQsIDMwLCAyMDIsIDg1LCA1NCwgMzAsIDExOCwgMjE3LCAKLSAgICA1NiwgNTQsIDMwLCAyMTIsIDExMywgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMiwgNTQsIDIxNSwgMjEwLCAyMDYsIDI0OSwgNTQsIAotICAgIDIxNSwgMjEwLCAyMTMsIDEzNSwgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMCwgNTQsIDIxNSwgMjEwLCAyNDMsIDE4MywgMjEzLCAKLSAgICAxMDAsIDU0LCAyMTUsIDIxMCwgMjEyLCAxMzUsIDU0LCAyMTUsIDIxMCwgMjQ0LCAzNiwgNTQsIDIxNSwgMjEwLCAyMTcsIAotICAgIDM5LCA1NCwgMjE1LCAyMTAsIDIxMywgMTE5LCA1NCwgMjE1LCAyMTAsIDI0MiwgMjMsIDU0LCAyMTUsIDIxMCwgMjUwLCA4MiwgCi0gICAgNTQsIDIxNSwgMjEwLCAyNDYsIDIxMywgNTQsIDMwLCAxNiwgMjA5LCAyMDgsIDIxNiwgNTksIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjE5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTgsIDc4LCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIwOSwgMjExLCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgNDIsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjQ2LCAxMzMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjAzLCAyNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjM3LCAzNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzgsIDIxMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDksIDAsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgNDcsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAyNDAsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgMjEzLCA4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NiwgNCwgMjE4LCAyMDMsIDI0MywgMTYwLCAKLSAgICAyLCAyMjUsIDEyMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjUsIDY4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNCwgCi0gICAgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTQzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgNSwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI2LCAyMTgsIDkxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MywgOTgsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjQ1LCAyMzksIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjEyLCA0NiwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyNDUsIDI0MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDE0NywgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMTIsIDI1MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzYsIDUzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAotICAgIDIzNywgMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDE3NCwgMjI3LCAyMTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjQ3LCAxNywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTYsIDE4NCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDEsIAotICAgIDE4NiwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDIsIDcxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNywgMTg4LCAKLSAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTUwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgOTIsIDIwOCwgOTUsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA1LCAyMTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE5LCA5MiwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyMTUsIDIwMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjcsIDEyNywgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyMTksIDE5NCwgMjQ5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzksIDE5MywgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyMzcsIDI1NSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTEsIDUwLCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDUsIDI1MCwgOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDQsIDcyLCAyNDgsIDIzOCwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAzOSwgMjIwLCA4OSwgOTUsIDIyNiwgMTk3LCAxLCA2MywgMjI2LCAxOTcsIDEsIDc0LCAyMjYsIAotICAgIDE5NywgMSwgMjQ5LCAyNTUsIDIyNiwgMTk3LCAxLCAyNDgsIDk5LCAyMjYsIDE5NywgMSwgMjM5LCA3NSwgMjI2LCAxOTcsIAotICAgIDEsIDI0NSwgNTEsIDIyNiwgMTk3LCAxLCA3NSwgMjI2LCAxOTcsIDEsIDIwNCwgMTQ0LCAyMjYsIDE5NywgMSwgMjAyLCAKLSAgICAxNTksIDIyNiwgMTk3LCAxLCAyMDksIDExMCwgMjI2LCAxOTcsIDEsIDIzMCwgMTg0LCAyMjYsIDE5NywgMSwgMjMwLCA1NCwgCi0gICAgMjI2LCAxOTcsIDEsIDIxNywgMTM0LCAyMjYsIDE5NywgMSwgMTU5LCAyMjYsIDE5NywgMSwgMjI2LCAxODUsIDIyNiwgMTk3LCAKLSAgICAxLCAyMjMsIDE2MywgMjI2LCAxOTcsIDEsIDIyNCwgODcsIDIyNiwgMTk3LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTcsIDEsIAotICAgIDY4LCAyMjYsIDE5NywgMSwgMjE5LCAxODQsIDIyNiwgMTk3LCAxLCAyMjksIDQ4LCAyMjYsIDE5NywgMSwgMTQ2LCAyMjYsIAotICAgIDE5NywgMSwgMTk0LCAyMjYsIDE5NywgMSwgMjEwLCA2OSwgMjI2LCAxOTcsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NywgMSwgCi0gICAgMjUwLCAyMzEsIDIyNiwgMTk3LCAxLCAyNDEsIDkyLCAyMjYsIDE5NywgMSwgMjM3LCAxNzEsIDIyNiwgMTk3LCAxLCAyMDMsIAotICAgIDE5NiwgMjQ3LCAzMiwgMSwgNjMsIDI0NywgMzIsIDEsIDIxOSwgMTcwLCAyNDcsIDMyLCAxLCAyNDUsIDUxLCAyNDcsIDMyLCAKLSAgICAxLCAxNTksIDI0NywgMzIsIDEsIDIwNiwgMTc2LCAyNDcsIDMyLCAxLCAxNDYsIDI0NywgMzIsIDEsIDIyNywgMjM4LCAyNDcsIAotICAgIDMyLCAxLCAyNTQsIDM0LCAyNDcsIDMyLCAxLCAyMTcsIDEzNCwgMjQ3LCAzMiwgMSwgMjQ5LCAyNTUsIDI0NywgMzIsIDEsIAotICAgIDIyNiwgMTg1LCAyNDcsIDMyLCAxLCA3OCwgMjQ3LCAzMiwgMSwgMjQ0LCAyMTQsIDI0NywgMzIsIDEsIDIxMCwgNjksIDI0NywgCi0gICAgMzIsIDEsIDIxMywgOTIsIDI0NywgMzIsIDEsIDIxMywgOTEsIDI0NywgMzIsIDEsIDE5NCwgMjQ3LCAzMiwgMSwgMjQ3LCAKLSAgICAxMjQsIDI0NywgMzIsIDEsIDY4LCAyNDcsIDMyLCAxLCAyMjEsIDIyOCwgMjQ3LCAzMiwgMSwgMjAzLCAxOTYsIDI0NywgMzIsIAotICAgIDEsIDIyMywgMTYzLCAyNDcsIDMyLCAxLCAyMDcsIDI0MywgMjQ3LCAzMiwgMSwgMjE5LCAxODQsIDI0NywgMzIsIDEsIDIxMSwgCi0gICAgMTY3LCAyNDcsIDMyLCAxLCA3NSwgMjQ3LCAzMiwgMSwgNzQsIDI0NywgMzIsIDEsIDIwNiwgMTczLCAyNDcsIDMyLCAxLCAKLSAgICAyMzAsIDU0LCAyNDcsIDMyLCAxLCAyMzAsIDQ1LCAyNDcsIDMyLCAxLCAyMjMsIDI3LCAyNDcsIDMyLCAxLCAyMDYsIDE3OCwgCi0gICAgMjQ3LCAzMiwgMSwgMjM5LCA3NSwgMjQ3LCAzMiwgMSwgMjM5LCAxMCwgMjQ3LCAzMiwgMSwgMjExLCAxMDgsIDI0NywgMzIsIAotICAgIDEsIDIxMSwgMTA3LCAyNDcsIDMyLCAxLCAyMjIsIDIwNSwgMjQ3LCAzMiwgMSwgMjMxLCA4MywgMjQ3LCAzMiwgMSwgMjQ3LCAKLSAgICAxMjMsIDI0NywgMzIsIDEsIDIwNywgMjQ0LCAyNDcsIDMyLCAxLCAyMDYsIDE3NSwgMjQ3LCAzMiwgMSwgMjE1LCAxODYsIAotICAgIDI0NywgMzIsIDEsIDIyNSwgNTksIDI0NywgMzIsIDEsIDIyNSwgNTgsIDI0NywgMzIsIDEsIDIyNSwgNTcsIDI0NywgMzIsIAotICAgIDEsIDIyNSwgNTYsIDI0NywgMzIsIDEsIDIyNywgMjM3LCAyNDcsIDMyLCAxLCAyNDEsIDE5MCwgMjQ3LCAzMiwgMSwgMjA2LCAKLSAgICAxNzQsIDg0LCAyNDEsIDQ0LCAyMDksIDM1LCA4MiwgODQsIDI0MSwgNDQsIDE3LCAxMDUsIDg0LCAyNDEsIDQ0LCAxNywgCi0gICAgMTA4LCA4NCwgMjQxLCA0NCwgMTcsIDE0NywgODQsIDI0MSwgNDQsIDE3LCAxNDksIDg0LCAyNDEsIDQ0LCAxNywgMTcwLCAKLSAgICA4NCwgMjQxLCA0NCwgMTcsIDE5NSwgODQsIDI0MSwgNDQsIDE3LCAyMTMsIDExMSwgODQsIDI0MSwgNDQsIDE3LCAxOTksIAotICAgIDg0LCAyNDEsIDQ0LCAxNywgMjIyLCA2MywgODQsIDI0MSwgNDQsIDQyLCAyMDksIDE1MiwgODQsIDI0MSwgNDQsIDQyLCAKLSAgICAyMDcsIDE1MSwgODQsIDI0MSwgNDQsIDQyLCAyMDksIDUzLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTUzLCA4NCwgMjQxLCAKLSAgICA0NCwgNDIsIDI0MCwgMTgsIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA3NCwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDEwNSwgODQsIAotICAgIDI0MSwgNDQsIDQyLCAyNDEsIDEzNCwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDU4LCA4NCwgMjQxLCA0NCwgNDIsIDExOCwgCi0gICAgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjAsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMTI2LCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgCi0gICAgMzgsIDM3LCAxLCA2MywgMzgsIDM3LCAxLCAyNDgsIDE2MiwgMzgsIDM3LCAxLCAyMjksIDIwMSwgMzgsIDM3LCAxLCAyNDQsIAotICAgIDc1LCAzOCwgMzcsIDEsIDc0LCAzOCwgMzcsIDEsIDIwNiwgNTUsIDM4LCAzNywgMSwgMjAyLCA5MiwgMzgsIDM3LCAxLCAKLSAgICAyMzcsIDY3LCAzOCwgMzcsIDEsIDIwOSwgOTIsIDM4LCAzNywgMSwgNzUsIDM4LCAzNywgMSwgMTczLCAzOCwgMzcsIDEsIAotICAgIDI0MSwgMTIyLCAzOCwgMzcsIDEsIDI0MSwgMTAzLCAzOCwgMzcsIDEsIDI0MSwgOTIsIDM4LCAzNywgMSwgMjQxLCA3LCAzOCwgCi0gICAgMzcsIDEsIDc4LCAzOCwgMzcsIDEsIDIxOSwgMzQsIDM4LCAzNywgMSwgMjEzLCA0MywgMzgsIDM3LCAxLCAyMjgsIDIwOSwgCi0gICAgMzgsIDM3LCAxLCAyNDEsIDI4LCAzOCwgMzcsIDEsIDI0MSwgMTcsIDM4LCAzNywgMSwgMjA5LCAxODcsIDM4LCAzNywgMSwgCi0gICAgNjgsIDM4LCAzNywgMSwgMjQxLCAxMjUsIDM4LCAzNywgMSwgMjE4LCAxOTUsIDM4LCAzNywgMSwgMjI5LCAxMjksIDM4LCAKLSAgICAzNywgMSwgMjQxLCAxNTQsIDM4LCAzNywgMSwgMjQxLCAxOSwgMzgsIDM3LCAxLCAyNDYsIDE3MCwgMzgsIDM3LCAxLCAyMzEsIAotICAgIDgzLCAzOCwgMzcsIDEsIDIwNiwgMTc4LCAzOCwgMzcsIDEsIDI0MSwgMCwgMzgsIDM3LCAyMjEsIDQ0LCAxMDUsIDM4LCAzNywgCi0gICAgMjIxLCA0NCwgMTcwLCAzOCwgMzcsIDIyMSwgNDQsIDIwOSwgMTUyLCAzOCwgMzcsIDIyMSwgNDQsIDI0MCwgMTgsIDIzOCwgCi0gICAgMTcsIDEsIDI1MSwgNjcsIDIzOCwgMTcsIDEsIDI0OCwgMjU1LCAyMzgsIDE3LCAxLCAyMzgsIDc4LCAyMzgsIDE3LCAxLCAKLSAgICAyNDQsIDE5NCwgMjM4LCAxNywgMSwgMjUxLCA2MywgMjM4LCAxNywgMSwgMjE3LCAxMTcsIDIzOCwgMTcsIDEsIDIzMCwgCi0gICAgMTk2LCAyMzgsIDE3LCAxLCAyMzcsIDE1MCwgMjM4LCAxNywgMSwgMjA5LCA0OSwgMjM4LCAxNywgMSwgMjQxLCAxMzMsIAotICAgIDIzOCwgMTcsIDEsIDIyOCwgMTc2LCAyMzgsIDE3LCAxLCAyMjgsIDkwLCAyMzgsIDE3LCAxLCAyMjUsIDExNCwgMjM4LCAxNywgCi0gICAgMSwgMjIzLCA2MiwgMjM4LCAxNywgMSwgMjMwLCAxNTQsIDIzOCwgMTcsIDEsIDIwNiwgMTk2LCAyMzgsIDE3LCAxLCAyMTksIAotICAgIDE0NSwgMjM4LCAxNywgMSwgMjIyLCA1OCwgMjM4LCAxNywgMSwgMjE2LCAxOTYsIDIzOCwgMTcsIDEsIDIxNCwgMjE2LCAKLSAgICAyMzgsIDE3LCAxLCAyMDksIDE2NiwgMjM4LCAxNywgMSwgMjA0LCAxMCwgMjM4LCAxNywgMSwgMjQwLCA4OCwgMjM4LCAxNywgCi0gICAgMSwgMjMxLCA4NywgMjM4LCAxNywgMSwgMjM1LCAyNTIsIDIzOCwgMTcsIDEsIDIxOSwgMjIzLCAyMzgsIDE3LCAxLCAyMjIsIAotICAgIDY0LCAyMzYsIDExLCAzOCwgMjE4LCAyMzcsIDEsIDI1MCwgMjMxLCAzOCwgMjE4LCAyMzcsIDEsIDI0NywgMTYwLCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDIzOCwgMjQ4LCAzOCwgMjE4LCAyMzcsIDEsIDI0MywgMTAxLCAzOCwgMjE4LCAyMzcsIDEsIDc0LCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgNjIsIDM4LCAyMTgsIDIzNywgMSwgMjQxLCAyNDcsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCA5OSwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NSwgMzgsIDIxOCwgMjM3LCAxLCA3NSwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMjksIDE1LCAzOCwgMjE4LCAyMzcsIDEsIDIyNywgMjA2LCAzOCwgMjE4LCAyMzcsIDEsIDIyNCwgMjM4LCAzOCwgMjE4LCAKLSAgICAyMzcsIDEsIDIyMiwgMjI4LCAzOCwgMjE4LCAyMzcsIDEsIDIwNSwgMTc1LCAzOCwgMjE4LCAyMzcsIDEsIDIxOSwgMjIsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjE2LCAxMjEsIDM4LCAyMTgsIDIzNywgMSwgMjEyLCAxNDIsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjA5LCAyNTAsIDM4LCAyMTgsIDIzNywgMSwgNjgsIDM4LCAyMTgsIDIzNywgMSwgMjQ2LCAxNTEsIDM4LCAyMTgsIDIzNywgCi0gICAgMSwgMjEyLCAyMzUsIDM4LCAyMTgsIDIzNywgMSwgMjEzLCA0NSwgMzgsIDIxOCwgMjM3LCAxLCAyMDIsIDIxNSwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyMDMsIDMwLCAzOCwgMjE4LCAyMzcsIDEsIDc4LCAzOCwgMjE4LCAyMzcsIDEsIDIyMCwgMTgsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjQxLCAxNTQsIDM4LCAyMTgsIDIzNywgMSwgMTUyLCAzOCwgMjE4LCAyMzcsIDEsIDIwNywgMjU0LCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIwNiwgNDMsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCAzNCwgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIAotICAgIDMyLCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgNjYsIDM4LCAyMTgsIDIzNywgMSwgMjMxLCAxMTAsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCAyMTMsIDM4LCAyMTgsIDIzNywgMSwgMTk4LCAzOCwgMjE4LCAyMzcsIDEsIDIzNSwgMTcxLCAzOSwgMzgsIDIxOCwgCi0gICAgMjM3LCAxLCAyNTAsIDIzMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwMiwgOTksIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIyMiwgMjI4LCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgCi0gICAgMjA3LCAxOSwgMSwgMjUxLCA2LCAyMDcsIDE5LCAxLCAyNDgsIDEwNiwgMjA3LCAxOSwgMSwgMjM4LCAyMzYsIDIwNywgMTksIAotICAgIDEsIDIyOSwgMTQ0LCAyMDcsIDE5LCAxLCAyNDQsIDM3LCAyMDcsIDE5LCAxLCAyMzYsIDEzNiwgMjA3LCAxOSwgMSwgMjA0LCAKLSAgICAwLCAyMDcsIDE5LCAxLCAyMDIsIDgzLCAyMDcsIDE5LCAxLCAyMzYsIDQ1LCAyMDcsIDE5LCAxLCAyMDksIDEzMiwgMjA3LCAKLSAgICAxOSwgMSwgMjAyLCAyMzYsIDIwNywgMTksIDEsIDIzMCwgMjIsIDIwNywgMTksIDEsIDIxMiwgMjU1LCAyMDcsIDE5LCAxLCAKLSAgICAyMjgsIDI0LCAyMDcsIDE5LCAxLCAyMjQsIDI0NywgMjA3LCAxOSwgMSwgMjQzLCAyNTMsIDIwNywgMTksIDEsIDIyMSwgNDAsIAotICAgIDIwNywgMTksIDEsIDIwMiwgNiwgMjA3LCAxOSwgMSwgMjE0LCAyNDgsIDIwNywgMTksIDEsIDI1MSwgNTksIDIwNywgMTksIAotICAgIDEsIDIxNywgMTkxLCAyMDcsIDE5LCAxLCAyMTUsIDI3LCAyMDcsIDE5LCAxLCAyMTcsIDcwLCAyMDcsIDE5LCAxLCAyMTYsIAotICAgIDE3NSwgMjA3LCAxOSwgMSwgMjA5LCA5NiwgMjA3LCAxOSwgMSwgMjM4LCAxMTQsIDIwNywgMTksIDEsIDEzNSwgMjA3LCAxOSwgCi0gICAgMSwgNzUsIDIwNywgMTksIDEsIDY4LCAyMDcsIDE5LCAxLCAyMTEsIDExOSwgMjA3LCAxOSwgMjAzLCAyMzgsIDI0MywgMTQxLCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDYzLCAzOCwgMjE4LCAyMzEsIDIsIDc1LCAzOCwgMjE4LCAyMzEsIDIsIDY4LCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDE3MywgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIDIwOSwgMzgsIDIxOCwgMjMxLCAyLCAyMzksIDgsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjM3LCAyMzAsIDM4LCAyMTgsIDIzMSwgMiwgMjAzLCAxODIsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCA5MiwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE4MSwgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE0MSwgMzgsIDIxOCwgMjMxLCAyLCAKLSAgICAyMTAsIDIyLCAzOCwgMjE4LCAyMzEsIDIsIDIwNywgMjAzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMjEyLCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDI0MywgMjMzLCAzOCwgMjE4LCAyMzEsIDIsIDI0MiwgNDIsIDM4LCAyMTgsIDIzMSwgMiwgMjA5LCAxMDgsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgMTg1LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgMzIsIDM4LCAyMTgsIDIzMSwgMiwgMjQwLCAKLSAgICAxMDgsIDM4LCAyMTgsIDIzMSwgMiwgMjAxLCAyMDEsIDM4LCAyMTgsIDIzMSwgMiwgMjIxLCA4NCwgMzgsIDIxOCwgMjMxLCAKLSAgICAyLCAxOTIsIDM4LCAyMTgsIDIzMSwgMiwgMjI0LCAxNTUsIDM4LCAyMTgsIDIzMSwgMiwgMjIzLCAyNDYsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMTk4LCAzOCwgMjE4LCAyMzEsIDIsIDIwNiwgODYsIDM4LCAyMTgsIDIzMSwgMiwgMjA1LCAyMzAsIDM4LCAKLSAgICAyMTgsIDIzMSwgMiwgMjE2LCAyMjAsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAxNDUsIDM4LCAyMTgsIDIzMSwgMiwgMjI4LCAKLSAgICAxMTMsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAzNiwgMzgsIDIxOCwgMjMxLCAyLCAyMDIsIDExNiwgMzgsIDIxOCwgMjMxLCAKLSAgICAyLCAyMTMsIDkwLCAzOCwgMjE4LCAyMzEsIDIsIDIxMSwgMTY0LCAzOCwgMjE4LCAyMzEsIDIsIDE1MiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyNTAsIDI4LCAzOCwgMjE4LCAyMzEsIDIsIDI1MCwgMjcsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNiwgMzgsIAotICAgIDIxOCwgMjMxLCAyLCAyMDMsIDE1MywgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIDE5MCwgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIAotICAgIDE4OSwgMzgsIDIxOCwgMjMxLCAyLCAyNDksIDgsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCAxNDQsIDM4LCAyMTgsIDIzMSwgCi0gICAgMjAzLCAyMzgsIDI0MywgMTQxLCAzOCwgMjE4LCAyMzEsIDQyLCAxMDUsIDM4LCAyMTgsIDIzMSwgNDIsIDEwOCwgMzgsIAotICAgIDIxOCwgMjMxLCA0MiwgMjA5LCAxNTIsIDM4LCAyMTgsIDIzMSwgNDIsIDIwNywgMTUxLCAzOCwgMjE4LCAyMzEsIDQyLCAKLSAgICAyMzYsIDExLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc1LCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc0LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAxNjMsIDYzLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDI1MSwgNzMsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzgsIDI0NCwgMTcsIDYsIAotICAgIDEsIDE2MywgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDc1LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgCi0gICAgNzQsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCA2MywgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDI1MSwgNzMsIDI0NCwgCi0gICAgMTcsIDYsIDEsIDIxMiwgMjI4LCA3OCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDIyMCwgMTgsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI1MCwgOCwgMjQ0LCAxNywgNiwgMSwgMjE5LCAxOTUsIDI0NCwgMTcsIDYsIDEsIDIwMywgMjE3LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyMDMsIDQ5LCAyNDQsIDE3LCA2LCAxLCAyMzcsIDE3MSwgMjQ0LCAxNywgNiwgMSwgMjE5LCAyMywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQ4LCAxNTAsIDI0NCwgMTcsIDYsIDEsIDIwOSwgMTc2LCAyNDQsIDE3LCA2LCAxLCAyNDQsIDYxLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDYsIDE2NiwgMjQ0LCAxNywgNiwgMSwgMjMwLCAxNTksIDI0NCwgMTcsIDYsIDEsIDIyOSwgMjA4LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyMzgsIDIxMSwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxNTQsIDI0NCwgMTcsIDYsIDEsIDIwNiwgNTAsIDI0NCwgMTcsIDYsIAotICAgIDEsIDI0MCwgMjQzLCAyNDQsIDE3LCA2LCAxLCAyMDksIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE3LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyMDIsIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDcsIDI0NCwgMTcsIDYsIDEsIDIwMiwgNzAsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0MSwgMjgsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTIyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDEwMywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQxLCA5MiwgMjQ0LCAxNywgNiwgMSwgMjQxLCA3OCwgMjQ0LCAxNywgNiwgMSwgMjIwLCA1NywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQwLCAyMjAsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDUsIDEsIAotICAgIDE2MywgNjMsIDI0NCwgMTcsIDUsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNSwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAKLSAgICA3NCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKLSAgICAxNywgNSwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjUwLCA4LCAyNDQsIDE3LCA1LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNSwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDUsIDEsIAotICAgIDIwMywgNDksIDI0NCwgMTcsIDUsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA1LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNSwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDUsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA1LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNSwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDUsIAotICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNSwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDUsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDUsIAotICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNywgMjQ0LCAxNywgNSwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQxLCAyOCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDEsIDkyLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDAsIDIyMCwgMjEzLCA1MCwgMSwgMjE5LCAyMCwgMjEzLCA1MCwgMSwgMjA4LCAxMzEsIDIxMywgNTAsIDEsIDIyOSwgOTYsIAotICAgIDIxMywgNTAsIDEsIDI0MCwgNTMsIDIxMywgNTAsIDEsIDIwOSwgNjUsIDIxMywgNTAsIDEsIDIxMiwgMTMsIDIxMywgNTAsIAotICAgIDEsIDIxMCwgMTkwLCAyMTMsIDUwLCAxLCAyNDYsIDkwLCAyMTMsIDUwLCAxLCAyMDMsIDUxLCAyMTMsIDUwLCAxLCAyMzYsIAotICAgIDksIDIxMywgNTAsIDEsIDI0OCwgODUsIDIxMywgNTAsIDEsIDI0NCwgNzQsIDIxMywgNTAsIDEsIDIzOCwgMjUwLCAyMTMsIAotICAgIDUwLCAxLCAyMDUsIDE3MCwgMjEzLCA1MCwgMSwgMjA5LCA3MSwgMjEzLCA1MCwgMSwgMjAyLCAxNSwgMjEzLCA1MCwgMSwgCi0gICAgMjI1LCAxOCwgMjEzLCA1MCwgMSwgMjMwLCA4MCwgMjEzLCA1MCwgMSwgMjAzLCAyNTQsIDIxMywgNTAsIDEsIDIzNywgMTU5LCAKLSAgICAyMTMsIDUwLCAxLCAyMjcsIDMzLCAyMTMsIDUwLCAxLCAyMjQsIDExMSwgMjEzLCA1MCwgMSwgMjMxLCA5MCwgMjEzLCA1MCwgCi0gICAgMSwgMjQxLCAxNTIsIDIxMywgNTAsIDEsIDI1MCwgNzUsIDIxMywgNTAsIDEsIDI1MSwgMTEzLCAyMTMsIDUwLCAxLCAyMjAsIAotICAgIDMxLCAyMTMsIDUwLCAxLCAyMDMsIDI0MSwgMjEzLCA1MCwgMSwgMjE5LCAyMTEsIDIxMywgNTAsIDEsIDI1MSwgNzMsIDIxMywgCi0gICAgNTAsIDEsIDIxNSwgMjI0LCAyMTMsIDUwLCAxLCAyMjEsIDQwLCAyMTMsIDUwLCAxLCAyNDEsIDE3MiwgMjEzLCA1MCwgMSwgCi0gICAgMjUxLCA3OCwgMjEzLCA1MCwgMSwgMjM1LCAxNjIsIDIxMywgNTAsIDEsIDIwNiwgMjI0LCAyMTMsIDUwLCAxLCAyMjAsIDk1LCAKLSAgICAyMTMsIDUwLCAxLCAyMjAsIDEwLCAyMTMsIDUwLCAxLCAyMjAsIDU1LCAyMTMsIDUwLCAxLCAyNTAsIDExLCAyMTMsIDUwLCAKLSAgICAxLCAyNTAsIDEyMSwgMjEzLCA1MCwgMSwgMjE5LCAyNDQsIDIxMywgNTAsIDEsIDI1MSwgNTQsIDIxMywgNTAsIDEsIDI0MSwgCi0gICAgMjEsIDIxMywgNTAsIDEsIDI1MCwgOTksIDIxMywgNTAsIDEsIDI0MSwgMTgzLCAyMTMsIDUwLCAxLCAyMzUsIDE3MCwgMjEzLCAKLSAgICA1MCwgMSwgMjAzLCAxNiwgMjE5LCAyMjUsIDEsIDI1MSwgMzAsIDIxOSwgMjI1LCAxLCAyNDksIDMyLCAyMTksIDIyNSwgMSwgCi0gICAgMjEwLCAyMiwgMjE5LCAyMjUsIDEsIDIzMCwgMTgxLCAyMTksIDIyNSwgMSwgMjAzLCAxODIsIDIxOSwgMjI1LCAxLCAyMjksIAotICAgIDE0NCwgMjE5LCAyMjUsIDEsIDI0NCwgNjAsIDIxOSwgMjI1LCAxLCAyMTYsIDIyMCwgMjE5LCAyMjUsIDEsIDIxNSwgMzYsIAotICAgIDIxOSwgMjI1LCAxLCAyMTMsIDUsIDIxOSwgMjI1LCAxLCAyNDQsIDEsIDIxOSwgMjI1LCAxLCAyNDcsIDcsIDIxOSwgMjI1LCAKLSAgICAxLCAyMzksIDgsIDIxOSwgMjI1LCAxLCAyNDAsIDEwOCwgMjE5LCAyMjUsIDEsIDIxNywgMTI0LCAyMTksIDIyNSwgMSwgCi0gICAgMjMwLCAzOCwgMjE5LCAyMjUsIDEsIDIyOCwgMTA4LCAyMTksIDIyNSwgMSwgMjI0LCAxMjQsIDIxOSwgMjI1LCAxLCAyMjEsIAotICAgIDI0LCAyMTksIDIyNSwgMSwgMjA0LCA3MCwgMjE5LCAyMjUsIDEsIDE1MiwgMjE5LCAyMjUsIDEsIDE5OCwgMjE5LCAyMjUsIAotICAgIDEsIDYzLCAyMTksIDIyNSwgMSwgNzQsIDIxOSwgMjI1LCAxLCA3NSwgMjE5LCAyMjUsIDEsIDc4LCAyMTksIDIyNSwgMSwgCi0gICAgNjgsIDIxOSwgMjI1LCAxLCAyNTIsIDI1LCAyMTksIDIyNSwgMSwgMjQxLCAxNjEsIDIxOSwgMjI1LCAxLCAyMjAsIDE4LCAKLSAgICAyMTksIDIyNSwgMTcsIDIwMiwgODQsIDIxOSwgMjI1LCAxNywgMTA1LCAyMTksIDIyNSwgMTcsIDEwOCwgMjE5LCAyMjUsIAotICAgIDE3LCAxNDcsIDIxOSwgMjI1LCAxNywgMTQ5LCAyMTksIDIyNSwgMTcsIDE3MCwgMjE5LCAyMjUsIDE3LCAxOTUsIDIxOSwgCi0gICAgMjI1LCAxNywgMjEzLCAxMTEsIDIxOSwgMjI1LCAxNywgMTk5LCAyMTksIDIyNSwgMTcsIDIyMiwgNjMsIDI0MSwgMTE4LCAxLCAKLSAgICA2MywgMjQxLCAxMTgsIDEsIDI0OCwgMTYyLCAyNDEsIDExOCwgMSwgMjQ2LCAyMzgsIDI0MSwgMTE4LCAxLCAyNDYsIDE3MCwgCi0gICAgMjQxLCAxMTgsIDEsIDI0NCwgNzUsIDI0MSwgMTE4LCAxLCAyMjMsIDE3LCAyNDEsIDExOCwgMSwgMjQzLCAyNDgsIDI0MSwgCi0gICAgMTE4LCAxLCAyNDEsIDE0NSwgMjQxLCAxMTgsIDEsIDc0LCAyNDEsIDExOCwgMSwgMjQwLCA2MCwgMjQxLCAxMTgsIDEsIAotICAgIDIzOCwgMTkwLCAyNDEsIDExOCwgMSwgMjM4LCA1MiwgMjQxLCAxMTgsIDEsIDIzNywgNjcsIDI0MSwgMTE4LCAxLCA3NSwgCi0gICAgMjQxLCAxMTgsIDEsIDIzMCwgMTYxLCAyNDEsIDExOCwgMSwgMjI5LCAyMDEsIDI0MSwgMTE4LCAxLCAyMjcsIDIzNCwgMjQxLCAKLSAgICAxMTgsIDEsIDIyNywgNzMsIDI0MSwgMTE4LCAxLCAyMjUsIDIwLCAyNDEsIDExOCwgMSwgMjIyLCAyNDAsIDI0MSwgMTE4LCAKLSAgICAxLCAyMDEsIDIwMSwgMjQxLCAxMTgsIDEsIDIyMiwgNDEsIDI0MSwgMTE4LCAxLCA3OCwgMjQxLCAxMTgsIDEsIDIxOSwgMzQsIAotICAgIDI0MSwgMTE4LCAxLCAyMTcsIDEwNiwgMjQxLCAxMTgsIDEsIDIxNiwgMTU4LCAyNDEsIDExOCwgMSwgMjE1LCAxODAsIDI0MSwgCi0gICAgMTE4LCAxLCAyMTQsIDE3NywgMjQxLCAxMTgsIDEsIDIxMywgNDMsIDI0MSwgMTE4LCAxLCAyMDksIDE4NywgMjQxLCAxMTgsIAotICAgIDEsIDIwOSwgOTIsIDI0MSwgMTE4LCAxLCA2OCwgMjQxLCAxMTgsIDEsIDIwNiwgNTUsIDI0MSwgMTE4LCAxLCAyMDMsIDE3NiwgCi0gICAgMjQxLCAxMTgsIDEsIDIwMywgMTI0LCAyNDEsIDExOCwgMSwgMjAyLCA5MiwgMjQxLCAxMTgsIDEsIDIwMiwgNzEsIDI0MSwgCi0gICAgMTE4LCAxLCAyMzgsIDEwNSwgMjQxLCAxMTgsIDEsIDIzOCwgMTExLCAyNDEsIDExOCwgMSwgMjI5LCAxMjksIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDI1MSwgMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ4LCAxMDgsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDIzOCwgNjksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NCwgMTQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDE3MSwgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgMTgzLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyMDIsIDY1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDksIDIxMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjQ2LCAxOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgMjI0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDgwLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIyMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA5MCwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjI4LCAxNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAyMzUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDIwMywgMTcyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDIsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgMzksIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDI0MCwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjI2LCAxOTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzNywgMTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNywgCi0gICAgMTA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNTAsIDE3NywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxMDcsIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDUsIDYzLCAyNDcsIDE0LCAyNTEsIDMxLCAKLSAgICAxLCAyMjUsIDEwMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAxMTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMSwgCi0gICAgMTUxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI0MCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA3MywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNjIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMCwgMzEsIDI0NywgMTQsIDI1MSwgMzEsIAotICAgIDEsIDIwNywgMTI1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDAsIDgzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI1MywgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNzYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOSwgOSwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjM4LCA5NSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE2LCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgCi0gICAgOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwNSwgMjMyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDgsIDE5MywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjEyLCAyMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTk0LCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyNDUsIDY0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDcsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMywgCi0gICAgNTYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOCwgMTAyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDYyLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAyNDYsIDQ5LCA4MiwgMjksIDM0LCAyLCAyNTEsIDIzMSwgMjksIDM0LCAyLCAyNTEsIDIzMCwgMjksIDM0LCAKLSAgICAyLCAyNTEsIDIyOSwgMjksIDM0LCAyLCAyNTEsIDIyOCwgMjksIDM0LCAyLCAyNTEsIDIyNywgMjksIDM0LCAyLCAyNTEsIAotICAgIDIyNiwgMjksIDM0LCAyLCAyNTEsIDIyNSwgMjksIDM0LCAyLCAyNTEsIDIyNCwgMjksIDM0LCAyLCAyNTEsIDIyMywgMjksIAotICAgIDM0LCAyLCAyNTEsIDIyMiwgMjksIDM0LCAyLCAyNTEsIDIyMSwgMjksIDM0LCAyLCAyNTEsIDIyMCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIxOSwgMjksIDM0LCAyLCAyNTEsIDIxOCwgMjksIDM0LCAyLCAyNTEsIDIxNywgMjksIDM0LCAyLCAyNTEsIDIxNiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIxNSwgMjksIDM0LCAyLCAyNTEsIDIxNCwgMjksIDM0LCAyLCAyNTEsIDIxMywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIxMiwgMjksIDM0LCAyLCAyNTEsIDIxMSwgMjksIDM0LCAyLCAyNTEsIDIxMCwgMjksIDM0LCAyLCAyNTEsIDIwOSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIwOCwgMjksIDM0LCAyLCAyNTEsIDIwNywgMjksIDM0LCAyLCAyNTEsIDIwNiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIwNSwgMjksIDM0LCAyLCAyNTQsIDIzOSwgMjksIDM0LCAyLCAyNTEsIDIwNCwgMjksIDM0LCAyLCAyNTEsIDIwMywgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIwMiwgMjksIDM0LCAyLCAyNTEsIDIwMSwgMjksIDM0LCAyLCAyNTEsIDIwMCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE5OSwgMjksIDM0LCAyLCAyNTEsIDE5OCwgMjksIDM0LCAyLCAyNTEsIDE5NywgMjksIDM0LCAyLCAyNTEsIDE5NiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE5NSwgMjksIDM0LCAyLCAyNTEsIDE5NCwgMjksIDM0LCAyLCAyNTEsIDE5MywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE5MiwgMjksIDM0LCAyLCAyNTEsIDE5MSwgMjksIDM0LCAyLCAyNTEsIDE5MCwgMjksIDM0LCAyLCAyNTEsIDE4OSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE4OCwgMjksIDM0LCAyLCAyNTEsIDE4NywgMjksIDM0LCAyLCAyNTEsIDE4NiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE4NSwgMjksIDM0LCAyLCAyNTEsIDE4NCwgMjksIDM0LCAyLCAyNTEsIDE4MywgMjksIDM0LCAyLCAyNTEsIDE4MiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE4MSwgMjksIDM0LCAyLCAyNTEsIDE4MCwgMjksIDM0LCAyLCAyNTEsIDE3OSwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE3OCwgMjksIDM0LCAyLCAyNTEsIDE3NywgMjksIDM0LCAyLCAyNTEsIDE3NiwgMjksIDM0LCAyLCAyNTEsIDE3NSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE3NCwgMjksIDM0LCAyLCAyNTEsIDE3MywgMjksIDM0LCAyLCAyNTEsIDE3MiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE3MSwgMjksIDM0LCAyLCAyNTEsIDE3MCwgMjksIDM0LCAyLCAyNTEsIDE2OSwgMjksIDM0LCAyLCAyNTEsIDE2OCwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE2NywgMjksIDM0LCAyLCAyNTEsIDE2NiwgMjksIDM0LCAyLCAyNTEsIDE2NSwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE2NCwgMjksIDM0LCAyLCAyNTEsIDE2MywgMjksIDM0LCAyLCAyNTEsIDE2MiwgMjksIDM0LCAyLCAyNTQsIDE1MiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE2MSwgMjksIDM0LCAyLCAyNTEsIDE2MCwgMjksIDM0LCAyLCAyNTQsIDExNywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE1OSwgMjksIDM0LCAyLCAyNTEsIDE1OCwgMjksIDM0LCAyLCAyNTEsIDE1NywgMjksIDM0LCAyLCAyNTEsIDE1NiwgCi0gICAgMjksIDM0LCAyLCAyNTQsIDEwNCwgMjksIDM0LCAyLCAyNTEsIDE1NSwgMjksIDM0LCAyLCAyNTEsIDE1NCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE1MywgMjksIDM0LCAyLCAyNTEsIDE1MiwgMjksIDM0LCAyLCAyNTEsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE3NiwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE3NSwgMjksIDM0LCAyLCAyNTMsIDE3NCwgMjksIDM0LCAyLCAyNTMsIDE3MywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE3MiwgMjksIDM0LCAyLCAyNTMsIDE3MSwgMjksIDM0LCAyLCAyNTMsIDE3MCwgMjksIDM0LCAyLCAyNTMsIDE2OSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE2NywgMjksIDM0LCAyLCAyNTMsIDE2NiwgMjksIDM0LCAyLCAyNTMsIDE2NSwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE2NCwgMjksIDM0LCAyLCAyNTMsIDE2MywgMjksIDM0LCAyLCAyNTMsIDE2MiwgMjksIDM0LCAyLCAyNTMsIDE2MCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE1OSwgMjksIDM0LCAyLCAyNTMsIDE1OCwgMjksIDM0LCAyLCAyNTMsIDE1NywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE1NiwgMjksIDM0LCAyLCAyNTMsIDE1NSwgMjksIDM0LCAyLCAyNTMsIDE1NCwgMjksIDM0LCAyLCAyNTMsIDE1MywgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE1MiwgMjksIDM0LCAyLCAyNTMsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE1MCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE0OSwgMjksIDM0LCAyLCAyNTMsIDE0OCwgMjksIDM0LCAyLCAyNTMsIDE0NywgMjksIDM0LCAyLCAyNTMsIDE0NiwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE0NSwgMjksIDM0LCAyLCAyNTMsIDE0NCwgMjksIDM0LCAyLCAyNTMsIDE0MywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE0MiwgMjksIDM0LCAyLCAyNTMsIDE0MCwgMjksIDM0LCAyLCAyNTMsIDEzOSwgMjksIDM0LCAyLCAyNTMsIDEzOCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEzNCwgMjksIDM0LCAyLCAyNTMsIDEzMywgMjksIDM0LCAyLCAyNTMsIDEzMiwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEzMSwgMjksIDM0LCAyLCAyNTMsIDEyNywgMjksIDM0LCAyLCAyNTMsIDEyNiwgMjksIDM0LCAyLCAyNTMsIDEyNSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEyNCwgMjksIDM0LCAyLCAyNTMsIDEyMywgMjksIDM0LCAyLCAyNTMsIDEyMiwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEyMSwgMjksIDM0LCAyLCAyNTMsIDEyMCwgMjksIDM0LCAyLCAyNTMsIDExOSwgMjksIDM0LCAyLCAyNTMsIDExOCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDExNywgMjksIDM0LCAyLCAyNTMsIDExNiwgMjksIDM0LCAyLCAyNTMsIDExNSwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDExNCwgMjksIDM0LCAyLCAyNTMsIDExMywgMjksIDM0LCAyLCAyNTMsIDExMiwgMjksIDM0LCAyLCAyNTMsIDExMSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDExMCwgMjksIDM0LCAyLCAyNTMsIDEwOSwgMjksIDM0LCAyLCAyNTMsIDEwOCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEwNywgMjksIDM0LCAyLCAyNTMsIDEwNiwgMjksIDM0LCAyLCAyNTMsIDEwNSwgMjksIDM0LCAyLCAyNTMsIDEwMywgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEwMiwgMjksIDM0LCAyLCAyNTMsIDEwMSwgMjksIDM0LCAyLCAyNTMsIDEwMCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDk5LCAyOSwgMzQsIDIsIDI1MywgOTcsIDI5LCAzNCwgMiwgMjUzLCA5NiwgMjksIDM0LCAyLCAyNTMsIDk1LCAyOSwgCi0gICAgMzQsIDIsIDI1MywgOTQsIDI5LCAzNCwgMiwgMjUzLCA5MiwgMjksIDM0LCAyLCAyNTMsIDkxLCAyOSwgMzQsIDIsIDI1MywgCi0gICAgOTAsIDI5LCAzNCwgMiwgMjUzLCA1NiwgMjksIDM0LCAyLCAyNTMsIDU0LCAyOSwgMzQsIDIsIDI1MywgNTIsIDI5LCAzNCwgCi0gICAgMiwgMjUzLCA1MCwgMjksIDM0LCAyLCAyNTMsIDQ4LCAyOSwgMzQsIDIsIDI1MywgNDYsIDI5LCAzNCwgMiwgMjUzLCA0NCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDQyLCAyOSwgMzQsIDIsIDI1MywgNDAsIDI5LCAzNCwgMiwgMjUzLCAzOCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDM2LCAyOSwgMzQsIDIsIDI1MywgMzMsIDI5LCAzNCwgMiwgMjUzLCAzMSwgMjksIDM0LCAyLCAyNTMsIDI5LCAyOSwgCi0gICAgMzQsIDIsIDI1MywgMjcsIDI5LCAzNCwgMiwgMjUzLCAyNSwgMjksIDM0LCAyLCAyNTMsIDIzLCAyOSwgMzQsIDIsIDI1MywgCi0gICAgMjEsIDI5LCAzNCwgMiwgMjUzLCAxOSwgMjksIDM0LCAyLCAyNTIsIDE5MywgMjksIDM0LCAyLCAyNTIsIDE5MiwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDE5MSwgMjksIDM0LCAyLCAyNTIsIDE5MCwgMjksIDM0LCAyLCAyNTIsIDE4OSwgMjksIDM0LCAyLCAyNTIsIAotICAgIDE4OCwgMjksIDM0LCAyLCAyNTIsIDE4NiwgMjksIDM0LCAyLCAyNTIsIDE4NSwgMjksIDM0LCAyLCAyNTIsIDE4NCwgMjksIAotICAgIDM0LCAyLCAyNTIsIDE4MywgMjksIDM0LCAyLCAyNTIsIDE4MiwgMjksIDM0LCAyLCAyNTIsIDE4MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE3OSwgMjksIDM0LCAyLCAyNTIsIDE3OCwgMjksIDM0LCAyLCAyNTIsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDE3MywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDE3MCwgMjksIDM0LCAyLCAyNTIsIDE2OSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE2OCwgMjksIDM0LCAyLCAyNTIsIDE2NywgMjksIDM0LCAyLCAyNTIsIDE2NiwgMjksIDM0LCAyLCAyNTIsIDE2NSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE2NCwgMjksIDM0LCAyLCAyNTIsIDE2MywgMjksIDM0LCAyLCAyNTIsIDE2MiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE2MSwgMjksIDM0LCAyLCAyNTIsIDE2MCwgMjksIDM0LCAyLCAyNTIsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDE1OCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE1NywgMjksIDM0LCAyLCAyNTIsIDE1NiwgMjksIDM0LCAyLCAyNTIsIDE1NSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE1NCwgMjksIDM0LCAyLCAyNTIsIDE1MywgMjksIDM0LCAyLCAyNTIsIDE1MiwgMjksIDM0LCAyLCAyNTIsIDE1MSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE1MCwgMjksIDM0LCAyLCAyNTIsIDE0OSwgMjksIDM0LCAyLCAyNTIsIDE0OCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE0NywgMjksIDM0LCAyLCAyNTIsIDE0NiwgMjksIDM0LCAyLCAyNTIsIDE0NSwgMjksIDM0LCAyLCAyNTIsIDE0NCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE0MywgMjksIDM0LCAyLCAyNTIsIDE0MiwgMjksIDM0LCAyLCAyNTIsIDE0MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE0MCwgMjksIDM0LCAyLCAyNTIsIDEzOSwgMjksIDM0LCAyLCAyNTIsIDEzOCwgMjksIDM0LCAyLCAyNTIsIDEzNywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEzNiwgMjksIDM0LCAyLCAyNTIsIDEzNSwgMjksIDM0LCAyLCAyNTIsIDEzNCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEzMywgMjksIDM0LCAyLCAyNTIsIDEzMiwgMjksIDM0LCAyLCAyNTIsIDEzMSwgMjksIDM0LCAyLCAyNTIsIDEzMCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEyOSwgMjksIDM0LCAyLCAyNTIsIDEyOCwgMjksIDM0LCAyLCAyNTIsIDEyNywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEyNiwgMjksIDM0LCAyLCAyNTIsIDEyNSwgMjksIDM0LCAyLCAyNTIsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDEyMywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEyMiwgMjksIDM0LCAyLCAyNTIsIDEyMSwgMjksIDM0LCAyLCAyNTIsIDEyMCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDExOSwgMjksIDM0LCAyLCAyNTIsIDExOCwgMjksIDM0LCAyLCAyNTIsIDExNywgMjksIDM0LCAyLCAyNTIsIDExNiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDExNSwgMjksIDM0LCAyLCAyNTIsIDExNCwgMjksIDM0LCAyLCAyNTIsIDExMywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDExMiwgMjksIDM0LCAyLCAyNTIsIDExMSwgMjksIDM0LCAyLCAyNTIsIDExMCwgMjksIDM0LCAyLCAyNTIsIDEwOSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEwOCwgMjksIDM0LCAyLCAyNTIsIDEwNywgMjksIDM0LCAyLCAyNTIsIDEwNiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEwNSwgMjksIDM0LCAyLCAyNTIsIDEwNCwgMjksIDM0LCAyLCAyNTIsIDEwMywgMjksIDM0LCAyLCAyNTIsIDEwMiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEwMSwgMjksIDM0LCAyLCAyNTIsIDEwMCwgMjksIDM0LCAyLCAyNTIsIDk5LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgOTgsIDI5LCAzNCwgMiwgMjUyLCA5NywgMjksIDM0LCAyLCAyNTIsIDk2LCAyOSwgMzQsIDIsIDI1MiwgOTUsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA5NCwgMjksIDM0LCAyLCAyNTIsIDkzLCAyOSwgMzQsIDIsIDI1MiwgOTIsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA5MSwgMjksIDM0LCAyLCAyNTIsIDkwLCAyOSwgMzQsIDIsIDI1MiwgODksIDI5LCAzNCwgMiwgMjUyLCA4OCwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDg3LCAyOSwgMzQsIDIsIDI1MiwgODYsIDI5LCAzNCwgMiwgMjUyLCA4NSwgMjksIDM0LCAyLCAyNTIsIDg0LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgODMsIDI5LCAzNCwgMiwgMjUyLCA4MiwgMjksIDM0LCAyLCAyNTIsIDgxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgODAsIDI5LCAzNCwgMiwgMjUyLCA3OSwgMjksIDM0LCAyLCAyNTIsIDc4LCAyOSwgMzQsIDIsIDI1MiwgNzcsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA3NiwgMjksIDM0LCAyLCAyNTIsIDc1LCAyOSwgMzQsIDIsIDI1MiwgNzQsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA3MywgMjksIDM0LCAyLCAyNTIsIDcyLCAyOSwgMzQsIDIsIDI1MiwgNzEsIDI5LCAzNCwgMiwgMjUyLCA3MCwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDY5LCAyOSwgMzQsIDIsIDI1MiwgNjgsIDI5LCAzNCwgMiwgMjUyLCA2NywgMjksIDM0LCAyLCAyNTIsIDY2LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgNjUsIDI5LCAzNCwgMiwgMjUyLCA2NCwgMjksIDM0LCAyLCAyNTIsIDYzLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgNjIsIDI5LCAzNCwgMiwgMjUyLCA2MSwgMjksIDM0LCAyLCAyNTIsIDYwLCAyOSwgMzQsIDIsIDI1MiwgNTksIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA1OCwgMjksIDM0LCAyLCAyNTIsIDU3LCAyOSwgMzQsIDIsIDI1MiwgNTYsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA1NSwgNjMsIDI5LCAzNCwgMiwgMjUyLCA1NCwgMjQ5LCAyNTUsIDI5LCAzNCwgMiwgMjUyLCA1MywgMjQ1LCA1MSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIDUxLCAyNDAsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDUwLCAKLSAgICAyMzcsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDQ5LCAyMzAsIDE4NCwgMjksIDM0LCAyLCAyNTIsIDQ4LCAyMzAsIDU0LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNDcsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDQ2LCAyMjgsIDExOCwgMjksIDM0LCAyLCAyNTIsIDQ1LCAKLSAgICAyMjgsIDExNywgMjksIDM0LCAyLCAyNTIsIDQ0LCAyMjgsIDExNiwgMjksIDM0LCAyLCAyNTIsIDQzLCAyMjgsIDExNSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDQyLCAyMDQsIDE0NCwgMjksIDM0LCAyLCAyNTIsIDQxLCAyMDMsIDE5NiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDQwLCAyMDMsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDM5LCAyMjAsIDM2LCAyOSwgMzQsIDIsIDI1MiwgMzgsIDI1MSwgMTQ3LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMzcsIDI0OCwgMTk5LCAyOSwgMzQsIDIsIDI1MiwgMzYsIDI0NCwgMTIyLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMzUsIDI0MCwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMzQsIDIzMCwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMzMsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCAzMiwgMjksIDM0LCAyLCAyNTIsIDMxLCAyOSwgMzQsIDIsIDI1MiwgMzAsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICAyOSwgMjksIDM0LCAyLCAyNTIsIDI4LCAyOSwgMzQsIDIsIDI1MiwgMjcsIDI5LCAzNCwgMiwgMjUyLCAyNiwgMjQ1LCA1OCwgCi0gICAgNCwgNjMsIDI0NSwgNTgsIDQsIDc0LCAyNDUsIDU4LCA0LCA3NSwgMjQ1LCA1OCwgNCwgNzgsIDI0NSwgNTgsIDQsIDY4LCAKLSAgICAyNDUsIDU4LCA0LCAyMzAsIDE4MSwgMjQ1LCA1OCwgNCwgMjMwLCAxMDEsIDI0NSwgNTgsIDQsIDE3MywgMjQ1LCA1OCwgNCwgCi0gICAgMjI5LCAyMDEsIDI0NSwgNTgsIDQsIDIyOSwgMTAwLCAyNDUsIDU4LCA0LCAyMjksIDI2LCAyNDUsIDU4LCA0LCAyMjgsIAotICAgIDIwOSwgMjQ1LCA1OCwgNCwgMjI4LCAxMTMsIDI0NSwgNTgsIDQsIDIyNywgMjM0LCAyNDUsIDU4LCA0LCAyMjcsIDE0OCwgCi0gICAgMjQ1LCA1OCwgNCwgMjI3LCA0OSwgMjQ1LCA1OCwgNCwgMjI2LCAyMzksIDI0NSwgNTgsIDQsIDE5MiwgMjQ1LCA1OCwgNCwgCi0gICAgMjI1LCAyMCwgMjQ1LCA1OCwgNCwgMjI0LCAxNTUsIDI0NSwgNTgsIDQsIDIyNCwgODIsIDI0NSwgNTgsIDQsIDIyMywgMjQ2LCAKLSAgICAyNDUsIDU4LCA0LCAyMDEsIDIwMSwgMjQ1LCA1OCwgNCwgMjIyLCAyNDAsIDI0NSwgNTgsIDQsIDIyMiwgMTAwLCAyNDUsIAotICAgIDU4LCA0LCAyMjEsIDE5MSwgMjQ1LCA1OCwgNCwgMjIxLCA4NCwgMjQ1LCA1OCwgNCwgMTg1LCAyNDUsIDU4LCA0LCAyMTksIAotICAgIDM0LCAyNDUsIDU4LCA0LCAyMTgsIDE2NywgMjQ1LCA1OCwgNCwgMjE4LCA2OSwgMjQ1LCA1OCwgNCwgMjE3LCAxOTEsIDI0NSwgCi0gICAgNTgsIDQsIDIxNiwgMjIwLCAyNDUsIDU4LCA0LCAyMTYsIDE1OCwgMjQ1LCA1OCwgNCwgMjE2LCA1NywgMjQ1LCA1OCwgNCwgCi0gICAgMjE1LCAyMjcsIDI0NSwgNTgsIDQsIDIxNSwgMTQ1LCAyNDUsIDU4LCA0LCAyMTUsIDM2LCAyNDUsIDU4LCA0LCAyMTQsIAotICAgIDE3NywgMjQ1LCA1OCwgNCwgMjEyLCAxNjIsIDI0NSwgNTgsIDQsIDIxMiwgMTMsIDI0NSwgNTgsIDQsIDIxMSwgMTAsIDI0NSwgCi0gICAgNTgsIDQsIDIxMCwgMjIsIDI0NSwgNTgsIDQsIDIwOSwgMTg3LCAyNDUsIDU4LCA0LCAyMDksIDIsIDI0NSwgNTgsIDQsIAotICAgIDEzNSwgMjQ1LCA1OCwgNCwgMjA3LCAyMDMsIDI0NSwgNTgsIDQsIDIwNCwgMTExLCAyNDUsIDU4LCA0LCAyMDQsIDYyLCAKLSAgICAyNDUsIDU4LCA0LCAyMDQsIDMwLCAyNDUsIDU4LCA0LCAyMDQsIDAsIDI0NSwgNTgsIDQsIDIwMywgMTgyLCAyNDUsIDU4LCAKLSAgICA0LCAyMDMsIDE3NiwgMjQ1LCA1OCwgNCwgMjAyLCAxMTYsIDI0NSwgNTgsIDQsIDIwMiwgMTcsIDIzMSwgNTEsIDI1MCwgCi0gICAgMTMwLCAxLCAyNTEsIDI4LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ4LCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKLSAgICAyMzgsIDY3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ0LCAxNzcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMzcsIDY3LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA0LCA3MCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwMiwgOTUsIDIzMSwgNTEsIAotICAgIDI1MCwgMTMwLCAxLCAyMzcsIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAxMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAKLSAgICAxLCAyMDIsIDIzNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyOSwgMjUwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI4LCAKLSAgICAxOSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyNCwgMjQ3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjIxLCA0MCwgMjMxLCAKLSAgICA1MSwgMjUwLCAxMzAsIDEsIDIxNCwgMjQ5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjUwLCAzLCAyMzEsIDUxLCAyNTAsIAotICAgIDEzMCwgMSwgMjE5LCAzNCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxNSwgMjYsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKLSAgICAyMTcsIDY5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE2LCA5MSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxMiwgMjU1LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAyMDEsIDIzMSwgNTEsIDI1MCwgMTMwLCAyMTQsIDE2OCwgNTQsIDIzMSwgNTEsIAotICAgIDI1MCwgMTMwLCA0MiwgMTA1LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDEwOCwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAKLSAgICAxNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA5LCAxNTIsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA3LCAxNTEsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDExOCwgMjA5LCAzNiwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMjE5LCAxMzQsIDEsIDI1MSwgMjgsIDIxOSwgMTM0LCAKLSAgICAxLCAyNDgsIDEwNSwgMjE5LCAxMzQsIDEsIDIzOCwgNjcsIDIxOSwgMTM0LCAxLCAyNDQsIDE3NywgMjE5LCAxMzQsIDEsIAotICAgIDIzNywgNjcsIDIxOSwgMTM0LCAxLCAyMDQsIDcwLCAyMTksIDEzNCwgMSwgMjAyLCA5NSwgMjE5LCAxMzQsIDEsIDIzNywgCi0gICAgMTksIDIxOSwgMTM0LCAxLCAyMDksIDEyOCwgMjE5LCAxMzQsIDEsIDIwMiwgMjM1LCAyMTksIDEzNCwgMSwgMjI5LCAyNTAsIAotICAgIDIxOSwgMTM0LCAxLCAyMjgsIDE5LCAyMTksIDEzNCwgMSwgMjI0LCAyNDcsIDIxOSwgMTM0LCAxLCA0NiwgMjIxLCA0MCwgCi0gICAgMjE5LCAxMzQsIDEsIDIyMSwgNDAsIDIxOSwgMTM0LCAxLCAyMTQsIDI0OSwgMjE5LCAxMzQsIDEsIDI1MCwgMywgMjE5LCAKLSAgICAxMzQsIDEsIDIxOSwgMzQsIDIxOSwgMTM0LCAxLCAyMTUsIDI2LCAyMTksIDEzNCwgMSwgMjE3LCA2OSwgMjE5LCAxMzQsIDEsIAotICAgIDIxNiwgOTEsIDIxOSwgMTM0LCAxLCAyMTIsIDI1NSwgMjE5LCAxMzQsIDEsIDIwOSwgMjAxLCAyMTksIDEzNCwgMjI3LCAKLSAgICAyMTcsIDIzOSwgMjEyLCAyMTksIDEzNCwgMjE2LCAxMSwgMjM5LCAyMTIsIDIxOSwgMTM0LCA0MiwgMTA1LCAyMTksIDEzNCwgCi0gICAgNDIsIDEwOCwgMjE5LCAxMzQsIDQyLCAxNDcsIDIxOSwgMTM0LCA0MiwgMTQ5LCAyMTksIDEzNCwgNDIsIDE3MCwgMjE5LCAKLSAgICAxMzQsIDQyLCAyMDksIDE1MiwgMjE5LCAxMzQsIDQyLCAyMDcsIDE1MSwgMjIzLCAxMDIsIDEsIDQ2LCAyNTEsIDI4LCAyMjMsIAotICAgIDEwMiwgMSwgMjUxLCAyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyNDgsIDEwNSwgMjIzLCAxMDIsIDEsIDI0OCwgMTA1LCAyMjMsIAotICAgIDEwMiwgMSwgMjM4LCA2NywgMjIzLCAxMDIsIDEsIDI0NCwgMTc3LCAyMjMsIDEwMiwgMSwgNDYsIDIzNywgNjcsIDIyMywgCi0gICAgMTAyLCAxLCAyMzcsIDY3LCAyMjMsIDEwMiwgMSwgMjA0LCA3MCwgMjIzLCAxMDIsIDEsIDIwMiwgOTUsIDIyMywgMTAyLCAxLCAKLSAgICAyMzcsIDE5LCAyMjMsIDEwMiwgMSwgMjA5LCAxMjgsIDIyMywgMTAyLCAxLCA0NiwgMjAyLCAyMzUsIDIyMywgMTAyLCAxLCAKLSAgICAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIDQ2LCAyMjksIDI1MCwgMjIzLCAxMDIsIDEsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgCi0gICAgNDYsIDIyOCwgMTksIDIyMywgMTAyLCAxLCAyMjgsIDE5LCAyMjMsIDEwMiwgMSwgNDYsIDIyNCwgMjQ3LCAyMjMsIDEwMiwgCi0gICAgMSwgMjI0LCAyNDcsIDIyMywgMTAyLCAxLCA0NiwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIDIyMSwgNDAsIDIyMywgMTAyLCAxLCAKLSAgICAyMTQsIDI0OSwgMjIzLCAxMDIsIDEsIDI1MCwgMywgMjIzLCAxMDIsIDEsIDIxOSwgMzQsIDIyMywgMTAyLCAxLCAyMTUsIAotICAgIDI2LCAyMjMsIDEwMiwgMSwgMjE3LCA2OSwgMjIzLCAxMDIsIDEsIDIxNiwgOTEsIDIyMywgMTAyLCAxLCA0NiwgMjEyLCAKLSAgICAyNTUsIDIyMywgMTAyLCAxLCAyMTIsIDI1NSwgMjIzLCAxMDIsIDEsIDIwOSwgMjAxLCAyMjMsIDEwMiwgNDIsIDEwNSwgCi0gICAgMjIzLCAxMDIsIDQyLCAxMDgsIDIyMywgMTAyLCA0MiwgMTQ3LCAyMjMsIDEwMiwgNDIsIDE0OSwgMjIzLCAxMDIsIDI0NSwgCi0gICAgMTE2LCA0MiwgMTQ5LCAyMjMsIDEwMiwgNDIsIDE3MCwgMjIzLCAxMDIsIDQyLCAyMDksIDE1MiwgMjIzLCAxMDIsIDQyLCAKLSAgICAyMDcsIDE1MSwgMjIzLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIDIzNywgNzgsIDEsIDI1MSwgMjgsIDIzNywgNzgsIDEsIAotICAgIDI0OCwgMTA1LCAyMzcsIDc4LCAxLCAyMzgsIDY3LCAyMzcsIDc4LCAxLCAyNDQsIDE3NiwgMjM3LCA3OCwgMSwgMjM3LCA2NywgCi0gICAgMjM3LCA3OCwgMSwgMjA0LCA3MCwgMjM3LCA3OCwgMSwgMjAyLCA5NCwgMjM3LCA3OCwgMSwgMjM3LCAxOSwgMjM3LCA3OCwgCi0gICAgMSwgMjA5LCAxMjgsIDIzNywgNzgsIDEsIDIwMiwgMjM1LCAyMzcsIDc4LCAxLCAyMjksIDI1MCwgMjM3LCA3OCwgMSwgMjI4LCAKLSAgICAxOSwgMjM3LCA3OCwgMSwgMjI0LCAyNDcsIDIzNywgNzgsIDEsIDIyMSwgNDAsIDIzNywgNzgsIDEsIDIxNCwgMjQ5LCAyMzcsIAotICAgIDc4LCAxLCAyNTAsIDIsIDIzNywgNzgsIDEsIDIxOSwgMzQsIDIzNywgNzgsIDEsIDIxNSwgMjYsIDIzNywgNzgsIDEsIDIxNywgCi0gICAgNjksIDIzNywgNzgsIDEsIDIxMiwgMjU1LCAyMzcsIDc4LCAxLCAyMDksIDIwMSwgMjM3LCA3OCwgNDIsIDEwNSwgMjM3LCAKLSAgICA3OCwgNDIsIDE3MCwgMjM3LCA3OCwgNDIsIDIwOSwgMTUyLCAyMzcsIDc4LCA0MiwgMjA3LCAxNTEsIDIzNywgNzgsIDQyLCAKLSAgICAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCAxLCAyNTEsIDI1LCAyMTgsIDE3OCwgMSwgMjQ4LCAxMDgsIDIxOCwgMTc4LCAxLCAKLSAgICAyMzgsIDIzNywgMjE4LCAxNzgsIDEsIDI0NCwgMzksIDIxOCwgMTc4LCAxLCAyMzcsIDY3LCAyMTgsIDE3OCwgMSwgMjA0LCAKLSAgICA3NywgMjE4LCAxNzgsIDEsIDIwMiwgMTA5LCAyMTgsIDE3OCwgMSwgMjM3LCAyMSwgMjE4LCAxNzgsIDEsIDIwOSwgMTMyLCAKLSAgICAyMTgsIDE3OCwgMSwgMjAyLCAyMzYsIDIxOCwgMTc4LCAxLCAyMzAsIDIyLCAyMTgsIDE3OCwgMSwgMjI4LCAyNSwgMjE4LCAKLSAgICAxNzgsIDEsIDIyNCwgMjQ3LCAyMTgsIDE3OCwgMSwgMjIxLCA0MCwgMjE4LCAxNzgsIDEsIDIxMywgMTM3LCAyMTgsIDE3OCwgCi0gICAgMSwgMjUxLCA1OSwgMjE4LCAxNzgsIDEsIDIxOSwgMzQsIDIxOCwgMTc4LCAxLCAyMTUsIDI3LCAyMTgsIDE3OCwgMSwgMjE3LCAKLSAgICA3NCwgMjE4LCAxNzgsIDEsIDIxNSwgMjAwLCAyMTgsIDE3OCwgMSwgMjEyLCAyNTUsIDIxOCwgMTc4LCAxLCAyMDksIDIwNywgCi0gICAgMjE4LCAxNzgsIDQyLCAxMDUsIDIxOCwgMTc4LCA0MiwgMjA5LCAxNTIsIDIxOCwgMTc4LCA0MiwgMjA3LCAxNTEsIDIxOCwgCi0gICAgMTc4LCA0MiwgMTE4LCAyMzYsIDExLCAyMTgsIDE3OCwgNDIsIDEwOCwgMjE4LCAxNzgsIDQyLCAxNDcsIDIxOCwgMTc4LCAKLSAgICAyMDMsIDIzOCwgMjEzLCAxMzAsIDIyNiwgMTk2LCAxLCA2MywgMjI2LCAxOTYsIDEsIDI0OSwgMjU1LCAyMjYsIDE5NiwgMSwgCi0gICAgMjM5LCA3NSwgMjI2LCAxOTYsIDEsIDI0NSwgNTEsIDIyNiwgMTk2LCAxLCA3NCwgMjI2LCAxOTYsIDEsIDIwNiwgMTY0LCAKLSAgICAyMjYsIDE5NiwgMSwgNzUsIDIyNiwgMTk2LCAxLCAyMDMsIDEyNCwgMjI2LCAxOTYsIDEsIDIzMCwgNTQsIDIyNiwgMTk2LCAKLSAgICAxLCAxNTksIDIyNiwgMTk2LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTYsIDEsIDIyMywgMTYzLCAyMjYsIDE5NiwgMSwgNzgsIAotICAgIDIyNiwgMTk2LCAxLCAxNDYsIDIyNiwgMTk2LCAxLCAyMTEsIDE2NywgMjI2LCAxOTYsIDEsIDIxMCwgNjksIDIyNiwgMTk2LCAKLSAgICAxLCA2OCwgMjI2LCAxOTYsIDEsIDI0MCwgMTc0LCAyMjYsIDE5NiwgMSwgMjE3LCAxMzQsIDIyNiwgMTk2LCAxLCAxOTQsIAotICAgIDIyNiwgMTk2LCAxLCAyMDcsIDI0NCwgMjI2LCAxOTYsIDEsIDI1MCwgMjMxLCAyMjYsIDE5NiwgMSwgMjQxLCA5MiwgMjI2LCAKLSAgICAxOTYsIDEsIDIyNiwgMTk5LCAyMjYsIDE5NiwgMSwgMjIxLCAyMjgsIDIyNiwgMTk2LCAxLCAyNDcsIDEyNSwgMjI2LCAxOTYsIAotICAgIDIwOCwgODIsIDgyLCAxMjksIDIzNiwgMjUzLCAxLCA2MywgMTI5LCAyMzYsIDI1MywgMSwgNzQsIDEyOSwgMjM2LCAyNTMsIAotICAgIDEsIDc1LCAxMjksIDIzNiwgMjUzLCAxLCA3OCwgMTI5LCAyMzYsIDI1MywgMSwgMTk4LCAxMjksIDIzNiwgMjUzLCAxLCAKLSAgICAyMDQsIDExMSwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMiwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMSwgMTI5LCAyMzYsIAotICAgIDI1MywgMSwgMTg1LCAxMjksIDIzNiwgMjUzLCAxLCAxOTIsIDEyOSwgMjM2LCAyNTMsIDEsIDIwMSwgMjAxLCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAyMjMsIDExMCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyNDAsIDEyOSwgMjM2LCAyNTMsIDEsIDIyMiwgMjM5LCAKLSAgICAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIyMCwgMTI5LCAyMzYsIDI1MywgMSwgMjE2LCAyMTksIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIyOCwgMTEzLCAxMjksIDIzNiwgMjUzLCAxLCAyMjksIDE0NCwgMTI5LCAyMzYsIDI1MywgMSwgMjM3LCAxMiwgMTI5LCAKLSAgICAyMzYsIDI1MywgMSwgMjE1LCAzNiwgMTI5LCAyMzYsIDI1MywgMSwgMjE1LCAzNSwgMTI5LCAyMzYsIDI1MywgMSwgMjE0LCAKLSAgICAxNzcsIDEyOSwgMjM2LCAyNTMsIDEsIDE3MywgMTI5LCAyMzYsIDI1MywgMSwgMjE3LCAxMjYsIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIxMCwgMjIsIDEyOSwgMjM2LCAyNTMsIDEsIDIxMCwgMjEsIDEyOSwgMjM2LCAyNTMsIDEsIDIwOSwgMTg3LCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAyMDksIDE4NiwgMTI5LCAyMzYsIDI1MywgMSwgMTM1LCAxMjksIDIzNiwgMjUzLCAxLCAyNDQsIDIxMiwgMTI5LCAKLSAgICAyMzYsIDI1MywgMTYsIDIwNSwgMjI0LCAxMjksIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjMsIDEyOSwgMTkxLCAxLCA2MywgCi0gICAgMTI5LCAxOTEsIDEsIDc0LCAxMjksIDE5MSwgMSwgNzUsIDEyOSwgMTkxLCAxLCA3OCwgMTI5LCAxOTEsIDEsIDE5OCwgMTI5LCAKLSAgICAxOTEsIDEsIDIwNCwgMTExLCAxMjksIDE5MSwgMSwgMjQ5LCAzMiwgMTI5LCAxOTEsIDEsIDE4NSwgMTI5LCAxOTEsIDEsIAotICAgIDE5MiwgMTI5LCAxOTEsIDEsIDIwMSwgMjAxLCAxMjksIDE5MSwgMSwgMjIyLCAyNDAsIDEyOSwgMTkxLCAxLCAyMTYsIDIyMCwgCi0gICAgMTI5LCAxOTEsIDEsIDIyOCwgMTEzLCAxMjksIDE5MSwgMSwgMjI5LCAxNDQsIDEyOSwgMTkxLCAxLCAyMzcsIDEyLCAxMjksIAotICAgIDE5MSwgMSwgMjE1LCAzNiwgMTI5LCAxOTEsIDEsIDI1MCwgMTI2LCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjE0LCAxNzcsIAotICAgIDEyOSwgMTkxLCAxLCAxNzMsIDEyOSwgMTkxLCAxLCAyMTcsIDEyNiwgMTI5LCAxOTEsIDEsIDIxMCwgMjIsIDEyOSwgMTkxLCAKLSAgICAxLCAyMDksIDE4NywgMTI5LCAxOTEsIDEsIDEzNSwgMTI5LCAxOTEsIDEsIDI0NCwgMjEyLCAxMjksIDE5MSwgMjM5LCAxMzgsIAotICAgIDI0MSwgMTEzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxMjksIDE5MSwgMjI3LCAzNiwgCi0gICAgMjE1LCAyMzMsIDEyOSwgMTkxLCAyMjcsIDM2LCAyMzEsIDU2LCAxMjksIDE5MSwgNDIsIDEwNSwgMTI5LCAxOTEsIDQyLCAKLSAgICAxMDgsIDEyOSwgMTkxLCA0MiwgMTQ3LCAxMjksIDE5MSwgNDIsIDE0OSwgMTI5LCAxOTEsIDQyLCAxNzAsIDEyOSwgMTkxLCAKLSAgICA0MiwgMTk1LCAxMjksIDE5MSwgNDIsIDIxMywgMTExLCAxMjksIDE5MSwgNDIsIDE5OSwgMTI5LCAxOTEsIDQyLCAyMjIsIAotICAgIDYzLCAxMjksIDE5MSwgNDIsIDIwOSwgMTUyLCAxMjksIDE5MSwgNDIsIDIwNywgMTUxLCAxMjksIDE5MSwgNDIsIDIwOSwgCi0gICAgNTMsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNTMsIDEyOSwgMTkxLCA0MiwgMjQwLCAxOCwgMTI5LCAxOTEsIDQyLCAyMTIsIDc0LCAKLSAgICAxMjksIDE5MSwgNDIsIDIxMywgMTA1LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjAsIAotICAgIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCAKLSAgICAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDEyOSwgCi0gICAgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDEyOSwgMTkxLCAKLSAgICA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMTgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAyMDksIAotICAgIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE0NywgMjA5LCAzNiwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTIsIDg4LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIAotICAgIDIxMywgMTEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgCi0gICAgNjQsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTIsIAotICAgIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE1NCwgMjA5LCAzNiwgCi0gICAgMTI5LCAxOTEsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgNzUsIDIwOSwgMzYsIDEyOSwgMTkxLCAKLSAgICA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxMzUsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCi0gICAgMjIyLCA1OSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAKLSAgICAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIAotICAgIDE0NywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMTIsIDg4LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMywgMTEyLCAyMzYsIDEyLCAyMDksIAotICAgIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgNjQsIDIzNiwgCi0gICAgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTE4LCAyMDcsIDE1NywgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMjAsIAotICAgIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyNiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAKLSAgICAxNDcsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIzOSwgMjMzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgCi0gICAgMTM4LCAyMTIsIDg4LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAKLSAgICAyMzksIDEzOCwgMjQxLCAxNDMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIyMiwgNjQsIDIwNywgMTU2LCAxMjksIAotICAgIDE5MSwgMjM5LCAxMzgsIDIwOSwgMTUzLCAyMDcsIDE1NiwgMjI5LCAxMzEsIDEsIDYzLCAyMjksIDEzMSwgMjIsIDIsIDc1LCAKLSAgICAyMjksIDEzMSwgMjIsIDIsIDY4LCAyMjksIDEzMSwgMjIsIDIsIDEyNSwgMTQ2LCAyMjksIDEzMSwgMjIsIDIsIDc0LCAyMjksIAotICAgIDEzMSwgMjIsIDIsIDc4LCAyMjksIDEzMSwgMjIsIDIyNywgMTk2LCA4MiwgMjI5LCAxMzEsIDIsIDUyLCAyMTUsIDI1MywgCi0gICAgNTYsIDIyOSwgMTMxLCAyLCAyNTAsIDE4MCwgMjI5LCAxMzEsIDIsIDIwNSwgMTk5LCAyMjksIDEzMSwgMSwgMTczLCAyMjksIAotICAgIDEzMSwgMSwgMjI5LCAxNDQsIDIyOSwgMTMxLCAxLCAyMzksIDgsIDIyOSwgMTMxLCAxLCAyMzgsIDExOSwgMjI5LCAxMzEsIAotICAgIDEsIDI0NywgOTIsIDIyOSwgMTMxLCAxLCAyNDYsIDE5OSwgMjI5LCAxMzEsIDEsIDIzMCwgMTgxLCAyMjksIDEzMSwgMSwgCi0gICAgMjIxLCAxMSwgMjI5LCAxMzEsIDEsIDIwNywgMjQxLCAyMjksIDEzMSwgMSwgMjA3LCAyMjksIDIyOSwgMTMxLCAxLCAyNDQsIAotICAgIDEyMCwgMjI5LCAxMzEsIDEsIDI0NCwgMTA0LCAyMjksIDEzMSwgMSwgMjIxLCAyMjcsIDIyOSwgMTMxLCAxLCAyMTAsIDIyLCAKLSAgICAyMjksIDEzMSwgMSwgMjA5LCAxMDgsIDIyOSwgMTMxLCAxLCAyNDQsIDIxMiwgMjI5LCAxMzEsIDEsIDI0NCwgMSwgMjI5LCAKLSAgICAxMzEsIDEsIDIwMSwgMjAxLCAyMjksIDEzMSwgMSwgMTg1LCAyMjksIDEzMSwgMSwgMjE4LCAyMDgsIDIyOSwgMTMxLCAxLCAKLSAgICAyNDksIDMyLCAyMjksIDEzMSwgMSwgMjQ4LCA5OCwgMjI5LCAxMzEsIDEsIDE5MiwgMjI5LCAxMzEsIDEsIDE5OCwgMjI5LCAKLSAgICAxMzEsIDEsIDIxNiwgMjIwLCAyMjksIDEzMSwgMSwgMjI4LCAxMTMsIDIyOSwgMTMxLCAxLCAyMDYsIDg2LCAyMjksIDEzMSwgCi0gICAgMSwgMjEzLCA5MCwgMjI5LCAxMzEsIDEsIDIxMSwgMTY0LCAyMjksIDEzMSwgMSwgMjE1LCAzNiwgMjI5LCAxMzEsIDEsIAotICAgIDIwMiwgMTE2LCAyMjksIDEzMSwgMSwgMTUyLCAyMjksIDEzMSwgMSwgMjI5LCA0NywgMjI5LCAxMzEsIDEsIDIwNywgMjA5LCAKLSAgICAyMjksIDEzMSwgMiwgMjQ4LCAyMzEsIDU1LCAyMjksIDEzMSwgMiwgMjQ3LCAxMywgMjI5LCAxMzEsIDIsIDcwLCA1NiwgCi0gICAgMjI5LCAxMzEsIDIwNSwgMjA0LCAyMjksIDEzMSwgMTcsIDEwNSwgMjI5LCAxMzEsIDE3LCAxMDgsIDIyOSwgMTMxLCAxNywgCi0gICAgMTQ3LCAyMjksIDEzMSwgMTcsIDE0OSwgMjI5LCAxMzEsIDQyLCAyMDksIDE1MiwgMjI5LCAxMzEsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjI5LCAxMzEsIDQyLCAxMTgsIDIzNiwgMTEsIDIyOSwgMTMxLCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDEzMSwgMjE3LCAKLSAgICAxNzksIDI0MywgODUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgNSwgMjQ2LCA2MSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDYsIAotICAgIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjI1LCAxMTYsIDIyOSwgCi0gICAgMTMxLCAyMTcsIDE3OSwgMjI3LCA1LCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIAotICAgIDUyLCAyNDQsIDE2NiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjcsIDEwOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM3LCA2NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI4LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM3LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI0LCAyNDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNywgNjksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwNCwgNzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxMiwgMjU1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMTYsIDkxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNDgsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAyMDEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNCwgMjI1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDI1MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjIxLCA0MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI5LCAxMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNSwgMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNCwgMjQ5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNDAsIDYwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNTEsIDMwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNTAsIDIsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjU0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzgsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDQsIDE3NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM4LCAxMDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgMTI4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDIsIDk0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDMsIDI1MSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjAyLCAyMzUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwOSwgNzMsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAxMDUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAKLSAgICAyNDAsIDE4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxNDEsIDIzMSwgMzEsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzcsIAotICAgIDQzLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjI4LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgMTQ4LCAzOCwgCi0gICAgMTUzLCAyNTAsIDE0MSwgMSwgMjI1LCA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjE3LCAxMTksIDM4LCAxNTMsIDI1MCwgCi0gICAgMTQxLCAxLCAyMDQsIDcwLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIAotICAgIDIxNiwgMTIyLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQ4LCAxMzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDE2OSwgCi0gICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTYsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzAsIDIyLCAzOCwgMTUzLCAKLSAgICAyNTAsIDE0MSwgMSwgMjIxLCAxNzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjksIDE0MCwgMzgsIDE1MywgMjUwLCAxNDEsIAotICAgIDEsIDIxNSwgMjgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQwLCA0NywgCi0gICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNTEsIDU5LCAzOCwgMTUzLCAKLSAgICAyNTAsIDE0MSwgMSwgMjQ0LCAyMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDE4MSwgMzgsIDE1MywgMjUwLCAxNDEsIAotICAgIDEsIDI0NCwgMTg0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM4LCAxMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIAotICAgIDI1MSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwMiwgMTA3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAxMDAsIDM4LCAKLSAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMDMsIDQ3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCA4OCwgMzgsIDE1MywgMjUwLCAKLSAgICAxNDEsIDEsIDIwMiwgMTEwLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDksIAotICAgIDE1MiwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDcsIDE1MSwgMjI1LCAxMTUsIDEsIDI1MSwgMjgsIDIyNSwgMTE1LCAxLCAKLSAgICAyNDgsIDEwNSwgMjI1LCAxMTUsIDEsIDI0OCwgOTIsIDIyNSwgMTE1LCAxLCAyMzgsIDY3LCAyMjUsIDExNSwgMSwgMjM4LCAKLSAgICA5MiwgMjI1LCAxMTUsIDEsIDI0NCwgMTc3LCAyMjUsIDExNSwgMSwgMjM3LCA2NywgMjI1LCAxMTUsIDEsIDIwNCwgNzAsIAotICAgIDIyNSwgMTE1LCAyLCAyMDcsIDI5LCAyMjUsIDExNSwgMSwgMjAyLCA5NSwgMjI1LCAxMTUsIDEsIDIwMiwgNzMsIDIyNSwgCi0gICAgMTE1LCAxLCAyMzAsIDE2MywgMjI1LCAxMTUsIDEsIDIzMCwgMTQ1LCAyMjUsIDExNSwgMSwgMjM3LCAxOSwgMjI1LCAxMTUsIAotICAgIDEsIDIwOSwgMTI4LCAyMjUsIDExNSwgMSwgMjAyLCAyMzUsIDIyNSwgMTE1LCAxLCAyMjksIDI1MCwgMjI1LCAxMTUsIDEsIAotICAgIDIwMywgMTc5LCAyMjUsIDExNSwgMSwgMjI5LCAxMzMsIDIyNSwgMTE1LCAxLCAyMjgsIDE5LCAyMjUsIDExNSwgMSwgMjQzLCAKLSAgICAyNTAsIDIyNSwgMTE1LCAxLCAyMDksIDk5LCAyMjUsIDExNSwgMSwgMjI0LCAyNDcsIDIyNSwgMTE1LCAxLCAyMjEsIDQwLCAKLSAgICAyMjUsIDExNSwgMSwgMjE0LCAyNDksIDIyNSwgMTE1LCAxLCAyNTAsIDMsIDIyNSwgMTE1LCAxLCAyNTEsIDIzNCwgMjI1LCAKLSAgICAxMTUsIDEsIDIxOSwgMzQsIDIyNSwgMTE1LCAxLCAyNDAsIDYwLCAyMjUsIDExNSwgMSwgMjE1LCAyNiwgMjI1LCAxMTUsIDEsIAotICAgIDIxNywgNjksIDIyNSwgMTE1LCAxLCAyMDMsIDE1NywgMjI1LCAxMTUsIDEsIDIxNywgOTUsIDIyNSwgMTE1LCAxLCAyMTYsIAotICAgIDkxLCAyMjUsIDExNSwgMSwgMjEyLCAyNTUsIDIyNSwgMTE1LCAxLCAyMTEsIDEzMywgMjI1LCAxMTUsIDEsIDIwOSwgMjAxLCAKLSAgICAyMjUsIDExNSwgMjUxLCAxNDYsIDEzMSwgNTUsIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NiwgMjI1LCAxMTUsIDQyLCAKLSAgICAxMDUsIDIyNSwgMTE1LCA0MiwgMTcwLCAyMjUsIDExNSwgNDIsIDIwOSwgMTUyLCAyMjUsIDExNSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMjUsIDExNSwgNDIsIDExOCwgMjM2LCAxMSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyMTEsIDk0LCAyMjUsIDExNSwgMjE3LCAKLSAgICAxNzksIDIzOSwgMjEyLCAyMjUsIDExNSwgMjE3LCAxNzksIDUyLCA3MCwgMjA0LCA1LCAyNDMsIDg1LCAyMjUsIDExNSwgCi0gICAgMjE3LCAxNzksIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjQzLCA4NSwgMjI1LCAxMTUsIAotICAgIDIxNywgMTc5LCAxMjAsIDI0MywgODMsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjI3LCAxMTUsIDI0MCwgNywgMjUwLCAxNCwgMSwgCi0gICAgNjMsIDI1MCwgMTQsIDEsIDI1MiwgMjUsIDI1MCwgMTQsIDEsIDI1MCwgMTc4LCAyNTAsIDE0LCAxLCAyNTEsIDI0MCwgMjUwLCAKLSAgICAxNCwgMSwgMjUwLCAyMzEsIDI1MCwgMTQsIDEsIDI1MSwgMjQxLCAyNTAsIDE0LCAxLCAyNTEsIDEwOSwgMjUwLCAxNCwgMSwgCi0gICAgMjUxLCAxMDUsIDI1MCwgMTQsIDEsIDc0LCAyNTAsIDE0LCAxLCAyNDEsIDE2MSwgMjUwLCAxNCwgMSwgNzgsIDI1MCwgMTQsIAotICAgIDEsIDIyMCwgMTgsIDI1MCwgMTQsIDEsIDc1LCAyNTAsIDE0LCAxLCAyMzEsIDgzLCAyNTAsIDE0LCAxLCA2OCwgMjUwLCAxNCwgCi0gICAgMSwgMjA2LCAxNzgsIDI1MCwgMTQsIDEsIDIyOSwgMjAxLCAyNTAsIDE0LCAxLCAyMDMsIDE3NiwgMjUwLCAxNCwgMSwgMjAzLCAKLSAgICAxMzgsIDI1MCwgMTQsIDEsIDIwMywgMTQ4LCAyNTAsIDE0LCAxLCAyMzgsIDE5MCwgMjUwLCAxNCwgMSwgMjM4LCAxNTAsIAotICAgIDI1MCwgMTQsIDEsIDIzOCwgMTA1LCAyNTAsIDE0LCAxLCAyNDYsIDIzOCwgMjUwLCAxNCwgMSwgMjMwLCAxNjEsIDI1MCwgCi0gICAgMTQsIDEsIDIwOSwgMTg3LCAyNTAsIDE0LCAxLCAyMDksIDkyLCAyNTAsIDE0LCAxLCAyNDQsIDc1LCAyNTAsIDE0LCAxLCAKLSAgICAyNDMsIDI0OCwgMjUwLCAxNCwgMSwgMjA3LCAyMzYsIDI1MCwgMTQsIDEsIDIxOSwgMzQsIDI1MCwgMTQsIDEsIDI0MCwgNjAsIAotICAgIDI1MCwgMTQsIDEsIDI0OCwgMTYyLCAyNTAsIDE0LCAxLCAyNDgsIDk0LCAyNTAsIDE0LCAxLCAyMjIsIDE5MCwgMjUwLCAxNCwgCi0gICAgMSwgMjIyLCAxMDYsIDI1MCwgMTQsIDEsIDIyMiwgMTA3LCAyNTAsIDE0LCAxLCAyMjIsIDI0MCwgMjUwLCAxNCwgMSwgMjIxLCAKLSAgICAxLCAyNTAsIDE0LCAxLCAyMjEsIDIyMiwgMjUwLCAxNCwgMSwgMjI1LCAyMCwgMjUwLCAxNCwgMSwgMjM2LCAxODYsIDI1MCwgCi0gICAgMTQsIDEsIDIwMiwgMTY2LCAyNTAsIDE0LCAxLCAyMDMsIDUyLCAyNTAsIDE0LCAxLCAyMDYsIDU1LCAyNTAsIDE0LCAxLCAKLSAgICAyMTYsIDE1OCwgMjUwLCAxNCwgMSwgMjI3LCAyMzQsIDI1MCwgMTQsIDEsIDIxNCwgMTc3LCAyNTAsIDE0LCAxLCAyMDIsIAotICAgIDkyLCAyNTAsIDE0LCAxLCAyMTMsIDQzLCAyNTAsIDE0LCAxLCAyMDIsIDcxLCAyNTAsIDE0LCAxLCAyMTIsIDE2OSwgMjUwLCAKLSAgICAxNCwgMSwgMjExLCAxMzQsIDI1MCwgMTQsIDEsIDIzNywgNjcsIDI1MCwgMTQsIDI1MSwgMTQ2LCA4MiwgMjA4LCAyMTMsIAotICAgIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCA1LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgCi0gICAgMjI4LCA4LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgMjI4LCA4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAKLSAgICAyMTcsIDE3OCwgMjI4LCA4LCAxMjAsIDIxNSwgMjUwLCAxMTUsIDExOCwgMjE1LCAyNTMsIDIxNywgMTc4LCAyMjgsIDgsIAotICAgIDExOCwgMjE1LCAyNTMsIDExNSwgMTIwLCAyMTUsIDI1MCwgMjE3LCAxNzgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI1MSwgCi0gICAgMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI0OCwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAKLSAgICAyMTksIDcwLCAxLCAyNDQsIDE3NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCA2NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgCi0gICAgMjA0LCA3MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCAxOSwgMjMxLCAKLSAgICAxMCwgMjE5LCA3MCwgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIAotICAgIDcwLCAxLCAyMjksIDI1MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI0LCAKLSAgICAyNDcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyMSwgNDAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNCwgMjQ5LCAyMzEsIAotICAgIDEwLCAyMTksIDcwLCAxLCAyNTAsIDMsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxOSwgMzQsIDIzMSwgMTAsIDIxOSwgNzAsIAotICAgIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNywgNjksIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNiwgOTEsIAotICAgIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDksIDIwMSwgMjMxLCAxMCwgCi0gICAgMjE5LCA3MCwgNDIsIDEwNSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0NywgCi0gICAgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIAotICAgIDcwLCA0MiwgMjA3LCAxNTEsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgNzAsIAotICAgIDQyLCAxMTgsIDIwOSwgMzYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNTEsIDI4LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgCi0gICAgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjQ0LCAxNzcsIAotICAgIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjMxLCAxMCwgCi0gICAgMjE5LCAxNDksIDEsIDIwMiwgOTUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgCi0gICAgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDIsIDIzNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyOSwgCi0gICAgMjUwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyNCwgMjQ2LCAyMzEsIAotICAgIDEwLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMzEsIDEwLCAyMTksIAotICAgIDE0OSwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKLSAgICAyMTIsIDI1NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwNSwgCi0gICAgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMDgsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMzEsIDEwLCAyMTksIAotICAgIDE0OSwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKLSAgICAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMTE4LCAyMDksIDM2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjQ4LCAKLSAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM4LCA2NywgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCi0gICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIwNCwgNjksIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDEsIDIwMiwgMjM1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOSwgMjUwLCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOCwgCi0gICAgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjE3LCAKLSAgICAyMDMsIDIxOSwgMTQ5LCAxLCAyMTQsIDI0OSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTksIDM0LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjEyLCAyNTUsIDIxNywgMjAzLCAyMTksIAotICAgIDE0OSwgMSwgMjA5LCAyMDEsIDIxNywgMjAzLCAyMTksIDE0OSwgMjE0LCAxNjgsIDgyLCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDIwNywgMTc0LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQ1LCAxMzAsIAotICAgIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQzLCA4NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMTA1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxMDgsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDE0NywgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCA0MiwgMTQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKLSAgICA0MiwgMjA3LCAxNTEsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAKLSAgICAxMDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc1LCAzOCwgCi0gICAgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCA3OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjIwLCA3MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgODEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwNywgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgNzEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAzOSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCAxMDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDIzMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDcwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgODksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA1NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgMjIzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgOTcsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgOSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjM1LCAxNjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCA3NSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjQxLCA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyNTAsIDQ5LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDI1MSwgOTEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjE5LCAyMjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0OCwgMjE1LCAzOCwgMTQ1LCA2LCAxLCA2MywgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjUyLCAyNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjQyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjYsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY1LCAzOCwgMTQ1LCA2LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNiwgMSwgNzQsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0NiwgMTcsIDc0LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTQsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxNDcsIDM4LCAxNDUsIDYsIDEsIDc1LCAzOCwgMTQ1LCA2LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEzMiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMjksIDM4LCAxNDUsIDYsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMjMyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyMiwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTAzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDkyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA2LCAxLCA3OCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjIwLCAxOCwgMzgsIDE0NSwgNiwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgCi0gICAgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIDYsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNDYsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDYsIDEsIDIxMiwgMjI4LCAyNDEsIAotICAgIDI4LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNiwgMSwgMjQwLCAKLSAgICAyNTAsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNzAsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDE2NywgMzgsIDE0NSwgNiwgMSwgNjgsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAKLSAgICAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyMTUsIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMjYsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA2OSwgNTQsIAotICAgIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTkzLCAzOCwgMTQ1LCA1LCAxLCA2MywgMzgsIDE0NSwgNSwgMSwgMjUyLCAyNSwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjQyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2OSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY1LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgNzQsIDM4LCAxNDUsIDUsIDEsIDI0NiwgMTcsIDc0LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNTQsIDM4LCAxNDUsIDUsIDEsIDI0MSwgCi0gICAgMTUzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNDcsIDM4LCAxNDUsIDUsIDEsIDc1LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEzMiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMjksIAotICAgIDM4LCAxNDUsIDUsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMjMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyMiwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTAzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDkyLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA1LCAxLCA3OCwgMzgsIDE0NSwgNSwgMSwgMjIwLCAxOCwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNSwgMSwgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIAotICAgIDUsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNDYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIAotICAgIDUsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDIxMiwgMjI4LCAyNDEsIDI4LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE3LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyNTAsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNzAsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NywgMzgsIDE0NSwgNSwgMSwgNjgsIDM4LCAKLSAgICAxNDUsIDUsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyMTUsIAotICAgIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMjYsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCAKLSAgICA1LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA2OSwgNTQsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMTkzLCAzOCwgCi0gICAgMTQ1LCA0MiwgMTA1LCAzOCwgMTQ1LCA0MiwgMTcwLCAzOCwgMTQ1LCA0MiwgMjA5LCAxNTIsIDM4LCAxNDUsIDQyLCAyNDAsIAotICAgIDE4LCAzOCwgMTQ1LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMTQ1LCA0MiwgMTE4LCAyMDksIDM2LCAyMTUsIDEyOSwgMTcsIAotICAgIDEwNSwgMjE1LCAxMjksIDE3LCAxMDgsIDIxNSwgMTI5LCAxNywgMTQ3LCAyMTUsIDEyOSwgMTcsIDE0OSwgMjE1LCAxMjksIAotICAgIDE3LCAxNzAsIDIxNSwgMTI5LCAxNywgMTk1LCAyMTUsIDEyOSwgMTcsIDIxMywgMTExLCAyMTUsIDEyOSwgMTcsIDE5OSwgCi0gICAgMjE1LCAxMjksIDE3LCAyMjIsIDYzLCAyMTUsIDEyOSwgNDIsIDIwOSwgMTUyLCAyMTUsIDEyOSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMTUsIDEyOSwgNDIsIDIwOSwgNTMsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNTMsIDIxNSwgMTI5LCA0MiwgMjQwLCAxOCwgCi0gICAgMjE1LCAxMjksIDQyLCAyMTIsIDc0LCAyMTUsIDEyOSwgNDIsIDIxMywgMTA1LCAyMTUsIDEyOSwgNDIsIDI0MSwgMTM0LCAKLSAgICAyMTUsIDEyOSwgNDIsIDIyMiwgNTgsIDIxNSwgMTI5LCA0MiwgMTE4LCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAxMjYsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAotICAgIDIxNSwgMTI5LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMjE1LCAKLSAgICAxMjksIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMjE1LCAxMjksIAotICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIxNSwgMTI5LCAyMzksIAotICAgIDEzOCwgMTE4LCAyMTcsIDU1LCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjA5LCA2MCwgMjE1LCAxMjksIDIzOSwgMTM4LCAKLSAgICAxMjAsIDIwOSwgNTcsIDE0NCwgMiwgMjQ3LCA1MiwgMTQ0LCAyLCAyNTAsIDE4MCwgMTQ0LCAyLCAyMDUsIDE5OSwgMTQ0LCAKLSAgICAyLCAyMzAsIDEzNSwgMTQ0LCAyLCAyMDYsIDIyMiwgMTQ0LCAxLCA2MywgMTQ0LCAxLCAyNTIsIDI1LCAxNDQsIDEsIDc1LCAKLSAgICAxNDQsIDEsIDIzMSwgODMsIDE0NCwgMSwgNjgsIDE0NCwgMSwgMjA2LCAxNzgsIDE0NCwgMSwgMTI1LCAxNDYsIDE0NCwgMSwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMTQ0LCAxLCAxMjUsIDE1OSwgMTQ0LCAxLCAxMjUsIDIyNywgNzgsIDE0NCwgMSwgNzQsIDE0NCwgCi0gICAgMSwgMjUxLCA2NCwgMTQ0LCAxLCA3OCwgMTQ0LCAxLCAyNTAsIDM0LCAxNDQsIDEsIDE3MywgMTQ0LCAxLCAyMjksIDE0NCwgCi0gICAgMTQ0LCAxLCAyMzksIDgsIDE0NCwgMSwgMjM4LCAxMTksIDE0NCwgMSwgMjIyLCAyMDMsIDE0NCwgMSwgMjQ3LCA5MiwgMTQ0LCAKLSAgICAxLCAyNDYsIDE5OSwgMTQ0LCAxLCAyMzAsIDE4MSwgMTQ0LCAxLCAyMzAsIDE0OSwgMTQ0LCAxLCAyMjEsIDExLCAxNDQsIDEsIAotICAgIDIwNywgMjQxLCAxNDQsIDEsIDIwNywgMjI5LCAxNDQsIDEsIDI0NCwgMTIwLCAxNDQsIDEsIDI0NCwgMTA0LCAxNDQsIDEsIAotICAgIDIyMSwgMjI3LCAxNDQsIDEsIDIxMCwgMjIsIDE0NCwgMSwgMjA5LCAxMDgsIDE0NCwgMSwgMjQ0LCAyMTIsIDE0NCwgMSwgCi0gICAgMjQ0LCAxLCAxNDQsIDEsIDIwMSwgMjAxLCAxNDQsIDEsIDE4NSwgMTQ0LCAxLCAyMTgsIDIwOCwgMTQ0LCAxLCAyNDksIDMyLCAKLSAgICAxNDQsIDEsIDI0OCwgOTgsIDE0NCwgMSwgMTkyLCAxNDQsIDEsIDE5OCwgMTQ0LCAxLCAyMTYsIDIyMCwgMTQ0LCAxLCAyMjgsIAotICAgIDExMywgMTQ0LCAxLCAyMDYsIDg2LCAxNDQsIDEsIDIxMywgOTAsIDE0NCwgMSwgMjExLCAxNjQsIDE0NCwgMSwgMjE1LCAzNiwgCi0gICAgMTQ0LCAxLCAxNTIsIDE0NCwgMSwgMjI3LCA3NywgMTQ0LCAxLCAzOCwgNDQsIDIyNywgNjgsIDE0NCwgMSwgMzgsIDQ0LCAKLSAgICAyMTUsIDE4NSwgMTQ0LCAxLCAzOCwgNDQsIDIyMSwgMjA5LCAxNDQsIDIyLCAyLCAyNTIsIDI1LCAxNDQsIDIyLCAyLCAyNDgsIAotICAgIDk1LCAyNTIsIDI1LCAxNDQsIDIyLCAyLCA3NSwgMTQ0LCAyMiwgMiwgMjMxLCA4MywgMTQ0LCAyMiwgMiwgNjgsIDE0NCwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAxNDQsIDIyLCAyLCAxMjUsIDE0NiwgMTQ0LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTQ0LCAKLSAgICAyMiwgMiwgMTI1LCAxNTksIDE0NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTQ0LCAyMiwgMiwgNzQsIDE0NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDE0NCwgMjIsIDIsIDc4LCAxNDQsIDIyLCAyLCAyNTAsIDM0LCAxNDQsIDIwNSwgMjA0LCAxNDQsIDI0NCwgCi0gICAgMTY2LCAxNDQsIDUyLCAyNDQsIDE2NiwgMTQ0LCAyMTcsIDE3OSwgMjQzLCA4NSwgMTQ0LCAyMTcsIDE3OSwgNTIsIDI0MywgCi0gICAgODUsIDE0NCwgMjE3LCAxNzksIDIyNywgMTE0LCAxNDQsIDIxNywgMTc5LCAyNDUsIDEzOSwgMTQyLCAxNDQsIDIxNywgMTc5LCAKLSAgICAyMjcsIDUsIDE0NCwgNDIsIDEwNSwgMTQ0LCA0MiwgMTA4LCAxNDQsIDQyLCAxNDcsIDE0NCwgNDIsIDE0OSwgMTQ0LCA0MiwgCi0gICAgMTcwLCAxNDQsIDQyLCAxOTUsIDE0NCwgNDIsIDIxMywgMTExLCAxNDQsIDQyLCAxOTksIDE0NCwgNDIsIDIyMiwgNjMsIAotICAgIDE0NCwgNDIsIDIwOSwgMTUyLCAxNDQsIDQyLCAyMDcsIDE1MSwgMTQ0LCA0MiwgMjA5LCA1MywgMTQ0LCA0MiwgMjM5LCAKLSAgICAxNTMsIDE0NCwgNDIsIDI0MCwgMTgsIDE0NCwgNDIsIDIxMiwgNzQsIDE0NCwgNDIsIDIxMywgMTA1LCAxNDQsIDQyLCAyNDEsIAotICAgIDEzNCwgMTQ0LCA0MiwgMjIyLCA1OCwgMTQ0LCA0MiwgMTE4LCAyMzYsIDExLCAxNDQsIDQyLCAxMTgsIDIwOSwgMzYsIDE0NCwgCi0gICAgMTcsIDIwMiwgODQsIDE0NCwgMTcsIDEwNSwgMTQ0LCAxNywgMTA4LCAxNDQsIDE3LCAxNDcsIDE0NCwgMTcsIDE0OSwgMTQ0LCAKLSAgICAxNywgMTcwLCAxNDQsIDE3LCAxOTUsIDE0NCwgMTcsIDIxMywgMTExLCAxNDQsIDE3LCAxOTksIDE0NCwgMTcsIDIyMiwgNjMsIAotICAgIDE0NCwgNDIsIDIzMCwgOTYsIDIzMCwgMTUsIDIsIDI0NywgNTIsIDIzMCwgMTUsIDIsIDI1MCwgMTgwLCAyMzAsIDE1LCAyLCAKLSAgICAyMDUsIDE5OSwgMjMwLCAxNSwgMSwgNjMsIDIzMCwgMTUsIDEsIDI1MiwgMjUsIDIzMCwgMTUsIDEsIDc1LCAyMzAsIDE1LCAKLSAgICAxLCAyMzEsIDgzLCAyMzAsIDE1LCAxLCA2OCwgMjMwLCAxNSwgMSwgMjA2LCAxNzgsIDIzMCwgMTUsIDEsIDc0LCAyMzAsIAotICAgIDE1LCAxLCAyNTEsIDY0LCAyMzAsIDE1LCAxLCA3OCwgMjMwLCAxNSwgMSwgMjUwLCAzNCwgMjMwLCAxNSwgMSwgMTczLCAKLSAgICAyMzAsIDE1LCAxLCAyMjksIDE0NCwgMjMwLCAxNSwgMSwgMjM5LCA4LCAyMzAsIDE1LCAxLCAyMzgsIDExOSwgMjMwLCAxNSwgCi0gICAgMSwgMjIyLCAyMDMsIDIzMCwgMTUsIDEsIDI0NywgOTIsIDIzMCwgMTUsIDEsIDI0NiwgMTk5LCAyMzAsIDE1LCAxLCAyMzAsIAotICAgIDE4MSwgMjMwLCAxNSwgMSwgMjMwLCAxNDksIDIzMCwgMTUsIDEsIDIyMSwgMTEsIDIzMCwgMTUsIDEsIDIwNywgMjQxLCAKLSAgICAyMzAsIDE1LCAxLCAyMDcsIDIyOSwgMjMwLCAxNSwgMSwgMjQ0LCAxMjAsIDIzMCwgMTUsIDEsIDI0NCwgMTA5LCAyMzAsIAotICAgIDE1LCAxLCAyNDQsIDEwNCwgMjMwLCAxNSwgMSwgMjE2LCA2MSwgMjMwLCAxNSwgMSwgMjIxLCAyMjcsIDIzMCwgMTUsIDEsIAotICAgIDIxMCwgMjIsIDIzMCwgMTUsIDEsIDIwOSwgMTA4LCAyMzAsIDE1LCAxLCAyNDQsIDIxMiwgMjMwLCAxNSwgMSwgMjQ0LCAxLCAKLSAgICAyMzAsIDE1LCAxLCAyMDEsIDIwMSwgMjMwLCAxNSwgMSwgMTg1LCAyMzAsIDE1LCAxLCAyMTgsIDIwOCwgMjMwLCAxNSwgMSwgCi0gICAgMjQ5LCAzMiwgMjMwLCAxNSwgMSwgMjQ4LCA5OCwgMjMwLCAxNSwgMSwgMTkyLCAyMzAsIDE1LCAxLCAxOTgsIDIzMCwgMTUsIAotICAgIDEsIDIxNiwgMjIwLCAyMzAsIDE1LCAxLCAyMjgsIDExMywgMjMwLCAxNSwgMSwgMjA2LCA4NiwgMjMwLCAxNSwgMSwgMjEzLCAKLSAgICA5MCwgMjMwLCAxNSwgMSwgMjExLCAxNjQsIDIzMCwgMTUsIDEsIDIxNSwgMzYsIDIzMCwgMTUsIDEsIDE1MiwgMjMwLCAxNSwgCi0gICAgMjIsIDIsIDI1MiwgMjUsIDIzMCwgMTUsIDIyLCAyLCA3NSwgMjMwLCAxNSwgMjIsIDIsIDIzMSwgODMsIDIzMCwgMTUsIDIyLCAKLSAgICAyLCA2OCwgMjMwLCAxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMzAsIDE1LCAyMiwgMiwgNzQsIDIzMCwgMTUsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAyMzAsIDE1LCAyMiwgMiwgNzgsIDIzMCwgMTUsIDIyLCAyLCAyNTAsIDM0LCAyMzAsIDE1LCAyLCAyMDUsIDIwNCwgCi0gICAgMjMwLCAxNSwgMiwgMjIxLCA1MSwgMjMwLCAxNSwgMjUxLCAxNDYsIDU0LCAyMzAsIDE1LCAyNDEsIDU5LCA1NCwgMjMwLCAKLSAgICAxNSwgNDIsIDU0LCAyMzAsIDE1LCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIDUyLCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIAotICAgIDI0NCwgMTY2LCAyMzAsIDE1LCA1MiwgMjQ0LCAxNjYsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE1LCAxOSwgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDksIDI1MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDksIDUsIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjQ3LCA4MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDQsIDE5MywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKLSAgICAyMzgsIDI0OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE0OCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjIsIAotICAgIDIwMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjgsIDg5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMywgOTMsIDIxMSwgCi0gICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA2LCA4MiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTksIDE1MCwgMjExLCAyNDYsIAotICAgIDIxMSwgMjU0LCAxLCAyMDMsIDkxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxNiwgMTk5LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDEsIDIzNywgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIzMCwgMjAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgCi0gICAgMjMwLCAxNzUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIxLCA4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI1MSwgNzMsIAotICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQxLCAxNTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMxLCA4NCwgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDcsIDE4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMCwgNjAsIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjQxLCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI1LCAxNjEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgCi0gICAgMTcsIDIwMiwgODQsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDEwNSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA4LCAKLSAgICAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0OSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxNywgMTcwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIxMywgCi0gICAgMTExLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIyMiwgNjMsIDI0NiwgCi0gICAgMTkzLCAyLCAyNDcsIDUyLCAyNDYsIDE5MywgMiwgMjUwLCAxODAsIDI0NiwgMTkzLCAyLCAyMDUsIDE5OSwgMjQ2LCAxOTMsIAotICAgIDEsIDI1MiwgMjUsIDI0NiwgMTkzLCAxLCA3NSwgMjQ2LCAxOTMsIDEsIDY4LCAyNDYsIDE5MywgMSwgNzQsIDI0NiwgMTkzLCAKLSAgICAxLCAyMzAsIDQxLCAyNDYsIDE5MywgMSwgMjI5LCAxNDMsIDI0NiwgMTkzLCAxLCAyMzksIDUsIDI0NiwgMTkzLCAxLCAyMzgsIAotICAgIDExOCwgMjQ2LCAxOTMsIDEsIDIyMiwgMjAyLCAyNDYsIDE5MywgMSwgMjQ3LCA5MSwgMjQ2LCAxOTMsIDEsIDI0NiwgMTk4LCAKLSAgICAyNDYsIDE5MywgMSwgMjMwLCAxODAsIDI0NiwgMTkzLCAxLCAyMzAsIDE0OCwgMjQ2LCAxOTMsIDEsIDIyMSwgMTAsIDI0NiwgCi0gICAgMTkzLCAxLCAyMDcsIDI0MCwgMjQ2LCAxOTMsIDEsIDIwNywgMjI4LCAyNDYsIDE5MywgMSwgMjQ0LCAxMTksIDI0NiwgMTkzLCAKLSAgICAxLCAyNDQsIDEwMywgMjQ2LCAxOTMsIDEsIDIyMSwgMjI2LCAyNDYsIDE5MywgMSwgMjEwLCAxOCwgMjQ2LCAxOTMsIDEsIAotICAgIDIwOSwgMTA3LCAyNDYsIDE5MywgMSwgMjQ0LCAyMTEsIDI0NiwgMTkzLCAxLCAyNDQsIDAsIDI0NiwgMTkzLCAxLCAyMjMsIAotICAgIDEwNiwgMjQ2LCAxOTMsIDEsIDIxOSwgMTY4LCAyNDYsIDE5MywgMSwgMjE4LCAyMDcsIDI0NiwgMTkzLCAxLCAyNDksIDMwLCAKLSAgICAyNDYsIDE5MywgMSwgMjQ4LCA5NywgMjQ2LCAxOTMsIDEsIDIyNSwgMTc1LCAyNDYsIDE5MywgMSwgMjAyLCAxNjcsIDI0NiwgCi0gICAgMTkzLCAxLCAyMDMsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNiwgMjE2LCAyNDYsIDE5MywgMSwgMjI4LCAxMTIsIDI0NiwgMTkzLCAKLSAgICAxLCAyMDQsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNSwgMzMsIDI0NiwgMTkzLCAxLCAyMzcsIDE1NywgMjQ2LCAxOTMsIDIyLCAKLSAgICAyLCA2MywgMjQ2LCAxOTMsIDIyLCAyLCA3NSwgMjQ2LCAxOTMsIDIyLCAyLCAyMzEsIDgzLCAyNDYsIDE5MywgMjIsIDIsIAotICAgIDY4LCAyNDYsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAyNDYsIDE5MywgMjIsIDIsIDc0LCAyNDYsIDE5MywgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDI0NiwgMTkzLCAyMiwgMiwgNzgsIDI0NiwgMTkzLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTMsIDIyLCAyLCAyMjAsIAotICAgIDU3LCAyNDYsIDE5MywgMTU4LCA4MiwgMjQ2LCAxOTMsIDI1MCwgMzUsIDgyLCAyNDYsIDE5MywgMjA1LCAyMDQsIDI0NiwgCi0gICAgMTkzLCAyMjUsIDE3MywgMjQ2LCAxOTMsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MywgMTcsIDEwNSwgMjQ2LCAxOTMsIDE3LCAKLSAgICAxMDgsIDI0NiwgMTkzLCAxNywgMTQ3LCAyNDYsIDE5MywgMTcsIDE0OSwgMjQ2LCAxOTMsIDE3LCAxNzAsIDI0NiwgMTkzLCAKLSAgICAxNywgMTk1LCAyNDYsIDE5MywgMTcsIDIxMywgMTExLCAyNDYsIDE5MywgMTcsIDE5OSwgMjQ2LCAxOTMsIDE3LCAyMjIsIAotICAgIDYzLCAyNDYsIDE5MywgMjE0LCAxNjgsIDgyLCAyNDYsIDE5MywgMjQ0LCAxNjYsIDI0NiwgMTkzLCA1MiwgMjQ0LCAxNjYsIAotICAgIDI0NiwgMTkzLCAyMTcsIDQ3LCA4MiwgMjI1LCAxNDYsIDEsIDYzLCAyMjUsIDE0NiwgMSwgNzUsIDIyNSwgMTQ2LCAxLCA2OCwgCi0gICAgMjI1LCAxNDYsIDEsIDc0LCAyMjUsIDE0NiwgMSwgNzgsIDIyNSwgMTQ2LCAxLCAxNzMsIDIyNSwgMTQ2LCAxLCAyMjksIAotICAgIDE0NCwgMjI1LCAxNDYsIDEsIDIzOSwgOCwgMjI1LCAxNDYsIDEsIDIzOCwgMTE5LCAyMjUsIDE0NiwgMSwgMjQ3LCA5MiwgCi0gICAgMjI1LCAxNDYsIDEsIDI0NiwgMTk5LCAyMjUsIDE0NiwgMSwgMjMwLCAxODEsIDIyNSwgMTQ2LCAxLCAyMzAsIDE0OSwgMjI1LCAKLSAgICAxNDYsIDEsIDIyMSwgMTEsIDIyNSwgMTQ2LCAxLCAyMDcsIDI0MSwgMjI1LCAxNDYsIDEsIDIwNywgMjI5LCAyMjUsIDE0NiwgCi0gICAgMSwgMjQ0LCAxMjAsIDIyNSwgMTQ2LCAxLCAyNDQsIDEwNCwgMjI1LCAxNDYsIDEsIDIyMSwgMjI3LCAyMjUsIDE0NiwgMSwgCi0gICAgMjEwLCAyMiwgMjI1LCAxNDYsIDEsIDIwOSwgMTA4LCAyMjUsIDE0NiwgMSwgMjQ0LCAyMTIsIDIyNSwgMTQ2LCAxLCAyNDQsIAotICAgIDEsIDIyNSwgMTQ2LCAxLCAyMDEsIDIwMSwgMjI1LCAxNDYsIDEsIDE4NSwgMjI1LCAxNDYsIDEsIDIxOCwgMjA4LCAyMjUsIAotICAgIDE0NiwgMSwgMjQ5LCAzMiwgMjI1LCAxNDYsIDEsIDI0OCwgOTgsIDIyNSwgMTQ2LCAxLCAxOTIsIDIyNSwgMTQ2LCAxLCAKLSAgICAyMTYsIDIyMCwgMjI1LCAxNDYsIDEsIDIyOCwgMTEzLCAyMjUsIDE0NiwgMSwgMjA2LCA4NiwgMjI1LCAxNDYsIDEsIDIxNSwgCi0gICAgMzYsIDIyNSwgMTQ2LCAxLCAxNTIsIDIyNSwgMTQ2LCAxLCAyMTUsIDE4NSwgMjI1LCAxNDYsIDIsIDIyMSwgNTEsIDIyNSwgCi0gICAgMTQ2LCAyNTEsIDE0NiwgNTQsIDIyNSwgMTQ2LCAyMTQsIDE2OCwgODIsIDIyNSwgMTQ2LCAzMiwgMjEyLCAyMDYsIDE4MSwgCi0gICAgMiwgMjQ3LCA1MiwgMTgxLCAyLCAyNTAsIDE4MCwgMTgxLCAyLCAyMDUsIDE5OSwgMTgxLCAxLCA2MywgMTgxLCAxLCAyNTIsIAotICAgIDI1LCAxODEsIDEsIDc1LCAxODEsIDEsIDIzMSwgODMsIDE4MSwgMSwgNjgsIDE4MSwgMSwgMjA2LCAxNzgsIDE4MSwgMSwgCi0gICAgMTI1LCAxNDYsIDE4MSwgMSwgMTI1LCAyMTUsIDE4NiwgMTgxLCAxLCAxMjUsIDE1OSwgMTgxLCAxLCAxMjUsIDIyNywgNzgsIAotICAgIDE4MSwgMSwgNzQsIDE4MSwgMSwgMjUxLCA2NCwgMTgxLCAxLCA3OCwgMTgxLCAxLCAyNTAsIDM0LCAxODEsIDEsIDE3MywgCi0gICAgMTgxLCAxLCAyMjksIDE0NCwgMTgxLCAxLCAyMzksIDgsIDE4MSwgMSwgMjM4LCAxMTksIDE4MSwgMSwgMjIyLCAyMDMsIAotICAgIDE4MSwgMSwgMjQ3LCA5MiwgMTgxLCAxLCAyNDYsIDE5OSwgMTgxLCAxLCAyMzAsIDE4MSwgMTgxLCAxLCAyMzAsIDE0OSwgCi0gICAgMTgxLCAxLCAyMjEsIDExLCAxODEsIDEsIDIwNywgMjQxLCAxODEsIDEsIDIwNywgMjI5LCAxODEsIDEsIDI0NCwgMTIwLCAKLSAgICAxODEsIDEsIDI0NCwgMTA0LCAxODEsIDEsIDIyMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDE4MSwgMSwgMjA5LCAxMDgsIAotICAgIDE4MSwgMSwgMjQ0LCAyMTIsIDE4MSwgMSwgMjQ0LCAxLCAxODEsIDEsIDIwMSwgMjAxLCAxODEsIDEsIDE4NSwgMTgxLCAxLCAKLSAgICAyMTgsIDIwOCwgMTgxLCAxLCAyNDksIDMyLCAxODEsIDEsIDI0OCwgOTgsIDE4MSwgMSwgMTkyLCAxODEsIDEsIDE5OCwgCi0gICAgMTgxLCAxLCAyMTYsIDIyMCwgMTgxLCAxLCAyMjgsIDExMywgMTgxLCAxLCAyMjcsIDc3LCAxODEsIDEsIDIwNiwgODYsIAotICAgIDE4MSwgMSwgMjEzLCA5MCwgMTgxLCAxLCAyMTEsIDE2NCwgMTgxLCAxLCAyMTUsIDM2LCAxODEsIDEsIDE1MiwgMTgxLCAyMiwgCi0gICAgMiwgMjUyLCAyNSwgMTgxLCAyMiwgMiwgNzUsIDE4MSwgMjIsIDIsIDIzMSwgODMsIDE4MSwgMjIsIDIsIDY4LCAxODEsIDIyLCAKLSAgICAyLCAyMDYsIDE3OCwgMTgxLCAyMiwgMiwgMTI1LCAxNDYsIDE4MSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4MSwgMjIsIDIsIAotICAgIDEyNSwgMTU5LCAxODEsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE4MSwgMjIsIDIsIDc0LCAxODEsIDIyLCAyLCAyNTEsIDY0LCAKLSAgICAxODEsIDIyLCAyLCA3OCwgMTgxLCAyMiwgMiwgMjUwLCAzNCwgMTgxLCAyLCAyMDUsIDIwNCwgMTgxLCAyLCAyNTAsIDE3LCAKLSAgICAxODEsIDIsIDIzMCwgMTM1LCAxODEsIDIsIDIwNiwgMjIyLCAxODEsIDIyMCwgMzksIDE4MSwgMjQ0LCAxNjYsIDE4MSwgNTIsIAotICAgIDI0NCwgMTY2LCAxODEsIDI1MSwgMTQ2LCA1NCwgMTgxLCAyMTMsIDEzMCwgMTgxLCAyMTQsIDIzOSwgODIsIDE4MSwgMiwgCi0gICAgMjIxLCA1MSwgMTgxLCAyMiwgNjUsIDgyLCAxODEsIDI0MCwgMTk5LCAyMTIsIDIyOCwgMjIsIDgyLCAxODEsIDIxMCwgMTgwLCAKLSAgICA4MiwgMTgxLCAxNywgMjAyLCA4NCwgMTgxLCAxNywgMTA1LCAxODEsIDE3LCAxMDgsIDE4MSwgMTcsIDE0NywgMTgxLCAxNywgCi0gICAgMTQ5LCAxODEsIDE3LCAxNzAsIDE4MSwgMTcsIDE5NSwgMTgxLCAxNywgMjEzLCAxMTEsIDE4MSwgMTcsIDE5OSwgMTgxLCAKLSAgICAxNywgMjIyLCA2MywgMTgxLCAyNDEsIDEyOCwgMTgxLCAyLCAyMTIsIDE1NywgMTgxLCAyMzcsIDU4LCAxODEsIDI0NSwgCi0gICAgMTkxLCA1NCwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MiwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MSwgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDEwNSwgMTQwLCAyNTAsIDEyNiwgMTcsIDEwOCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE0NywgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDE0OSwgMTQwLCAyNTAsIDEyNiwgMTcsIDE3MCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE5NSwgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDIxMywgMTExLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk5LCAxNDAsIDI1MCwgMTI2LCAxNywgMjIyLCA2MywgMTQwLCAKLSAgICAyNTAsIDEyNiwgNDIsIDIwOSwgMTUyLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjA3LCAxNTEsIDE0MCwgMjUwLCAxMjYsIDQyLCAKLSAgICAyMDksIDUzLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjM5LCAxNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyNDAsIDE4LCAxNDAsIAotICAgIDI1MCwgMTI2LCA0MiwgMjEyLCA3NCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIxMywgMTA1LCAxNDAsIDI1MCwgMTI2LCA0MiwgCi0gICAgMjQxLCAxMzQsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMjIsIDU4LCAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMzYsIDExLCAKLSAgICAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDExNCwgMSwgNjMsIDIyOSwgMTE0LCAxLCAyNTIsIDI1LCAKLSAgICAyMjksIDExNCwgMSwgNzUsIDIyOSwgMTE0LCAxLCA2OCwgMjI5LCAxMTQsIDEsIDc0LCAyMjksIDExNCwgMSwgMjUxLCA2NCwgCi0gICAgMjI5LCAxMTQsIDEsIDc4LCAyMjksIDExNCwgMSwgMjUwLCAzNCwgMjI5LCAxMTQsIDEsIDE3MywgMjI5LCAxMTQsIDEsIAotICAgIDIyOSwgMTQ0LCAyMjksIDExNCwgMSwgMjM5LCA4LCAyMjksIDExNCwgMSwgMjM4LCAxNTUsIDIyOSwgMTE0LCAxLCAyMzgsIAotICAgIDExOSwgMjI5LCAxMTQsIDEsIDIyMiwgMjAzLCAyMjksIDExNCwgMSwgMjQ3LCA5MiwgMjI5LCAxMTQsIDEsIDI0NiwgMTk5LCAKLSAgICAyMjksIDExNCwgMSwgMjMwLCAxODEsIDIyOSwgMTE0LCAxLCAyMzAsIDEyOSwgMjI5LCAxMTQsIDEsIDIyMSwgMTEsIDIyOSwgCi0gICAgMTE0LCAxLCAyMDcsIDI0MSwgMjI5LCAxMTQsIDEsIDIwNywgMjI5LCAyMjksIDExNCwgMSwgMjQ0LCAxMjAsIDIyOSwgMTE0LCAKLSAgICAxLCAyNDQsIDEwNCwgMjI5LCAxMTQsIDEsIDIyMSwgMjI3LCAyMjksIDExNCwgMSwgMjEwLCAyMiwgMjI5LCAxMTQsIDEsIAotICAgIDIwOSwgMTA4LCAyMjksIDExNCwgMSwgMjQ0LCAyMTIsIDIyOSwgMTE0LCAxLCAyNDQsIDExMCwgMjI5LCAxMTQsIDEsIDI0NCwgCi0gICAgMSwgMjI5LCAxMTQsIDEsIDIwMSwgMjAxLCAyMjksIDExNCwgMSwgMTg1LCAyMjksIDExNCwgMSwgMjE4LCAyMDgsIDIyOSwgCi0gICAgMTE0LCAxLCAyNDksIDMyLCAyMjksIDExNCwgMSwgMjQ4LCAxOTgsIDIyOSwgMTE0LCAxLCAyNDgsIDk4LCAyMjksIDExNCwgCi0gICAgMSwgMTkyLCAyMjksIDExNCwgMSwgMTk4LCAyMjksIDExNCwgMSwgMjE2LCAyMjAsIDIyOSwgMTE0LCAxLCAyMjgsIDExMywgCi0gICAgMjI5LCAxMTQsIDEsIDIwNiwgODYsIDIyOSwgMTE0LCAxLCAyMTUsIDM2LCAyMjksIDExNCwgMSwgMTUyLCAyMjksIDExNCwgCi0gICAgMSwgMjI3LCA3NywgMjI5LCAxMTQsIDIyLCAyLCAyNTIsIDI1LCAyMjksIDExNCwgMjIsIDIsIDc1LCAyMjksIDExNCwgMjIsIAotICAgIDIsIDIzMSwgODMsIDIyOSwgMTE0LCAyMiwgMiwgNjgsIDIyOSwgMTE0LCAyMiwgMiwgNzQsIDIyOSwgMTE0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI5LCAxMTQsIDIyLCAyLCA3OCwgMjI5LCAxMTQsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDExNCwgMiwgMjUwLCAKLSAgICAxODAsIDIyOSwgMTE0LCAyLCAyMDUsIDIwNCwgMjI5LCAxMTQsIDIsIDIyMSwgNTEsIDIyOSwgMTE0LCAyLCAyMTMsIDgwLCAKLSAgICAyMjksIDExNCwgMjQ0LCAxNjYsIDIyOSwgMTE0LCA1MiwgMjQ0LCAxNjYsIDIyOSwgMTE0LCAyMDMsIDIzOCwgMjEzLCAxMzAsIAotICAgIDIyOSwgMTE0LCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCA1MiwgMjE0LCAxNjgsIDgyLCAyMjksIDExNCwgMjUxLCAxNDYsIAotICAgIDU0LCAyMjMsIDIzMCwgMSwgNjMsIDIyMywgMjMwLCAxLCA3NSwgMjIzLCAyMzAsIDEsIDY4LCAyMjMsIDIzMCwgMSwgNzQsIAotICAgIDIyMywgMjMwLCAxLCAxNzMsIDIyMywgMjMwLCAxLCAyMjksIDE0NCwgMjIzLCAyMzAsIDEsIDIzOSwgOCwgMjIzLCAyMzAsIAotICAgIDEsIDIzOCwgMTE5LCAyMjMsIDIzMCwgMSwgMjQ3LCA5MiwgMjIzLCAyMzAsIDEsIDI0NiwgMTk5LCAyMjMsIDIzMCwgMSwgCi0gICAgMjMwLCAxODEsIDIyMywgMjMwLCAxLCAyMzAsIDEyOSwgMjIzLCAyMzAsIDEsIDIyMSwgMTEsIDIyMywgMjMwLCAxLCAyMDcsIAotICAgIDI0MSwgMjIzLCAyMzAsIDEsIDIwNywgMjI5LCAyMjMsIDIzMCwgMSwgMjQ0LCAxMjAsIDIyMywgMjMwLCAxLCAyNDQsIDExMCwgCi0gICAgMjIzLCAyMzAsIDEsIDI0NCwgMTA0LCAyMjMsIDIzMCwgMSwgMjIxLCAyMjcsIDIyMywgMjMwLCAxLCAyMTAsIDIyLCAyMjMsIAotICAgIDIzMCwgMSwgMjA5LCAxMDgsIDIyMywgMjMwLCAxLCAyNDQsIDIxMiwgMjIzLCAyMzAsIDEsIDI0NCwgMSwgMjIzLCAyMzAsIAotICAgIDEsIDIwMSwgMjAxLCAyMjMsIDIzMCwgMSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE4LCAyMDgsIDIyMywgMjMwLCAxLCAyNDksIAotICAgIDMyLCAyMjMsIDIzMCwgMSwgMjQ4LCA5OCwgMjIzLCAyMzAsIDEsIDE5MiwgMjIzLCAyMzAsIDEsIDE5OCwgMjIzLCAyMzAsIAotICAgIDEsIDIxNiwgMjIwLCAyMjMsIDIzMCwgMSwgMjI4LCAxMTMsIDIyMywgMjMwLCAxLCAyMDYsIDg2LCAyMjMsIDIzMCwgMSwgCi0gICAgMjE1LCAzNiwgMjIzLCAyMzAsIDEsIDE1MiwgMjIzLCAyMzAsIDEsIDIxNSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE2LCA2MSwgCi0gICAgMjIzLCAyMzAsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMDYsIDEsIDYzLCAyMjksIDEwNiwgMSwgMjUyLCAyNSwgMjI5LCAxMDYsIAotICAgIDEsIDc1LCAyMjksIDEwNiwgMSwgMjMxLCA4MywgMjI5LCAxMDYsIDEsIDY4LCAyMjksIDEwNiwgMSwgMjA2LCAxNzgsIDIyOSwgCi0gICAgMTA2LCAxLCA3NCwgMjI5LCAxMDYsIDEsIDI1MSwgNjQsIDIyOSwgMTA2LCAxLCA3OCwgMjI5LCAxMDYsIDEsIDI1MCwgMzQsIAotICAgIDIyOSwgMTA2LCAxLCAxNzMsIDIyOSwgMTA2LCAxLCAyMjksIDE0NCwgMjI5LCAxMDYsIDEsIDIzOSwgOCwgMjI5LCAxMDYsIAotICAgIDEsIDIzOCwgMTU1LCAyMjksIDEwNiwgMSwgMjM4LCAxMTksIDIyOSwgMTA2LCAxLCAyMjIsIDIwMywgMjI5LCAxMDYsIDEsIAotICAgIDI0NywgOTIsIDIyOSwgMTA2LCAxLCAyNDYsIDE5OSwgMjI5LCAxMDYsIDEsIDIzMCwgMTgxLCAyMjksIDEwNiwgMSwgMjMwLCAKLSAgICAxMjksIDIyOSwgMTA2LCAxLCAyMzAsIDE0OSwgMjI5LCAxMDYsIDEsIDIyMSwgMTEsIDIyOSwgMTA2LCAxLCAyMDcsIDI0MSwgCi0gICAgMjI5LCAxMDYsIDEsIDIwNywgMjI5LCAyMjksIDEwNiwgMSwgMjQ0LCAxMjAsIDIyOSwgMTA2LCAxLCAyNDQsIDExMCwgMjI5LCAKLSAgICAxMDYsIDEsIDIxNSwgMTg1LCAyMjksIDEwNiwgMSwgMjQ0LCAxMDQsIDIyOSwgMTA2LCAxLCAyMjEsIDIyNywgMjI5LCAxMDYsIAotICAgIDEsIDIxMCwgMjIsIDIyOSwgMTA2LCAxLCAyMDksIDEwOCwgMjI5LCAxMDYsIDEsIDI0NCwgMjEyLCAyMjksIDEwNiwgMSwgCi0gICAgMjQ0LCAxLCAyMjksIDEwNiwgMSwgMjAxLCAyMDEsIDIyOSwgMTA2LCAxLCAxODUsIDIyOSwgMTA2LCAxLCAyMTgsIDIwOCwgCi0gICAgMjI5LCAxMDYsIDEsIDI0OSwgMzIsIDIyOSwgMTA2LCAxLCAyNDgsIDE5OCwgMjI5LCAxMDYsIDEsIDI0OCwgOTgsIDIyOSwgCi0gICAgMTA2LCAxLCAxOTIsIDIyOSwgMTA2LCAxLCAxOTgsIDIyOSwgMTA2LCAxLCAyMTYsIDIyMCwgMjI5LCAxMDYsIDEsIDIyOCwgCi0gICAgMTEzLCAyMjksIDEwNiwgMSwgMjA2LCA4NiwgMjI5LCAxMDYsIDEsIDIxMywgOTAsIDIyOSwgMTA2LCAxLCAyMTUsIDM2LCAKLSAgICAyMjksIDEwNiwgMSwgMTUyLCAyMjksIDEwNiwgMiwgMjUwLCAxODAsIDIyOSwgMTA2LCAyMiwgMiwgMjUyLCAyNSwgMjI5LCAKLSAgICAxMDYsIDIyLCAyLCA3NSwgMjI5LCAxMDYsIDIyLCAyLCAyMzEsIDgzLCAyMjksIDEwNiwgMjIsIDIsIDY4LCAyMjksIDEwNiwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAyMjksIDEwNiwgMjIsIDIsIDc0LCAyMjksIDEwNiwgMjIsIDIsIDI1MSwgNjQsIDIyOSwgMTA2LCAKLSAgICAyMiwgMiwgNzgsIDIyOSwgMTA2LCAyMiwgMiwgMjUwLCAzNCwgMjI5LCAxMDYsIDIsIDIyMSwgNTEsIDIyOSwgMTA2LCAyLCAKLSAgICAyMDUsIDIwNCwgMjI5LCAxMDYsIDE3LCAyMDIsIDg0LCAyMjksIDEwNiwgMTcsIDEwNSwgMjI5LCAxMDYsIDE3LCAxMDgsIAotICAgIDIyOSwgMTA2LCAxNywgMTQ3LCAyMjksIDEwNiwgMTcsIDE0OSwgMjI5LCAxMDYsIDE3LCAxNzAsIDIyOSwgMTA2LCAxNywgCi0gICAgMTk1LCAyMjksIDEwNiwgMTcsIDIxMywgMTExLCAyMjksIDEwNiwgMTcsIDE5OSwgMjI5LCAxMDYsIDE3LCAyMjIsIDYzLCAKLSAgICAyMzgsIDYsIDIsIDM5LCAyNTAsIDE4MSwgNTUsIDIzOCwgNiwgMiwgMjQ3LCA1MiwgMjM4LCA2LCAyLCAyNTAsIDE4MCwgCi0gICAgMjM4LCA2LCAyLCAyMDUsIDE5OSwgMjM4LCA2LCAxLCA2MywgMjM4LCA2LCAxLCAyNTIsIDI1LCAyMzgsIDYsIDEsIDc1LCAKLSAgICAyMzgsIDYsIDEsIDIzMSwgODMsIDIzOCwgNiwgMSwgNjgsIDIzOCwgNiwgMSwgMjA2LCAxNzgsIDIzOCwgNiwgMSwgMTI1LCAKLSAgICAxNDYsIDIzOCwgNiwgMSwgMTI1LCAxNTksIDIzOCwgNiwgMSwgMjQxLCAxNjEsIDIzOCwgNiwgMSwgMjUxLCA2NCwgMjM4LCAKLSAgICA2LCAxLCAyMjAsIDE4LCAyMzgsIDYsIDEsIDI1MCwgMzQsIDIzOCwgNiwgMSwgMTczLCAyMzgsIDYsIDEsIDIyOSwgMTQ0LCAKLSAgICAyMzgsIDYsIDEsIDIzOSwgOCwgMjM4LCA2LCAxLCAyMzgsIDExOSwgMjM4LCA2LCAxLCAyMjIsIDIwMywgMjM4LCA2LCAxLCAKLSAgICAyNDcsIDkyLCAyMzgsIDYsIDEsIDI0NiwgMTk5LCAyMzgsIDYsIDEsIDIzMCwgMTgxLCAyMzgsIDYsIDEsIDIzMCwgMTQ5LCAKLSAgICAyMzgsIDYsIDEsIDIyMSwgMTEsIDIzOCwgNiwgMSwgMjA3LCAyNDEsIDIzOCwgNiwgMSwgMjA3LCAyMjksIDIzOCwgNiwgMSwgCi0gICAgMjQ0LCAxMjAsIDIzOCwgNiwgMSwgMjQ0LCAxMDQsIDIzOCwgNiwgMSwgMjIxLCAyMjcsIDIzOCwgNiwgMSwgMjEwLCAyMiwgCi0gICAgMjM4LCA2LCAxLCAyMDksIDEwOCwgMjM4LCA2LCAxLCAyNDQsIDIxMiwgMjM4LCA2LCAxLCAyNDQsIDEsIDIzOCwgNiwgMSwgCi0gICAgMjAxLCAyMDEsIDIzOCwgNiwgMSwgMTg1LCAyMzgsIDYsIDEsIDIxOCwgMjA4LCAyMzgsIDYsIDEsIDI0OSwgMzIsIDIzOCwgCi0gICAgNiwgMSwgMjQ4LCA5OCwgMjM4LCA2LCAxLCAxOTIsIDIzOCwgNiwgMSwgMTk4LCAyMzgsIDYsIDEsIDIxNiwgMjIwLCAyMzgsIAotICAgIDYsIDEsIDIyOCwgMTEzLCAyMzgsIDYsIDEsIDIyNywgNzcsIDIzOCwgNiwgMSwgMjA2LCA4NiwgMjM4LCA2LCAxLCAyMTMsIAotICAgIDkwLCAyMzgsIDYsIDEsIDIxMSwgMTY0LCAyMzgsIDYsIDEsIDIxNSwgMzYsIDIzOCwgNiwgMSwgMTUyLCAyMzgsIDYsIDIsIAotICAgIDIyMSwgNTEsIDIzOCwgNiwgMiwgMjUwLCAxNywgMjM4LCA2LCAyMiwgMiwgMjUyLCAyNSwgMjM4LCA2LCAyMiwgMiwgNzUsIAotICAgIDIzOCwgNiwgMjIsIDIsIDIzMSwgODMsIDIzOCwgNiwgMjIsIDIsIDY4LCAyMzgsIDYsIDIyLCAyLCAyMDYsIDE3OCwgMjM4LCAKLSAgICA2LCAyMiwgMiwgMTI1LCAxNDYsIDIzOCwgNiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMjIsIDIsIDI0MSwgCi0gICAgMTYxLCAyMzgsIDYsIDIyLCAyLCAyNTEsIDY0LCAyMzgsIDYsIDIyLCAyLCAyMjAsIDE4LCAyMzgsIDYsIDIyLCAyLCAyNTAsIAotICAgIDM0LCAyMzgsIDYsIDIsIDIwNSwgMjA0LCAyMzgsIDYsIDIyMCwgMzksIDIzOCwgNiwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAKLSAgICAyMzgsIDYsIDIsIDIxOCwgNzQsIDIzOCwgNiwgMSwgMjA2LCA1MiwgMjUwLCAxODAsIDIzOCwgNiwgMSwgMjA2LCA1MiwgNTIsIAotICAgIDI1MCwgMTgwLCAyMzgsIDYsIDEsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMSwgMTI1LCAyMjcsIDc4LCAyMzgsIDYsIDIyLCAKLSAgICAyLCAxMjUsIDE1OSwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAzOSwgMjM4LCA2LCAxNywgMjAyLCA4NCwgMzksIAotICAgIDIzOCwgNiwgMTcsIDEwNSwgMzksIDIzOCwgNiwgMTcsIDEwOCwgMzksIDIzOCwgNiwgMTcsIDE0NywgMzksIDIzOCwgNiwgCi0gICAgMTcsIDE0OSwgMzksIDIzOCwgNiwgMTcsIDE3MCwgMzksIDIzOCwgNiwgMTcsIDE5NSwgMzksIDIzOCwgNiwgMSwgNjMsIDM5LCAKLSAgICAyMzgsIDYsIDEsIDE3MywgMzksIDIzOCwgNiwgMSwgMjAxLCAyMDEsIDM5LCAyMzgsIDYsIDEsIDIwNSwgMjMwLCAzOSwgCi0gICAgMjM4LCA2LCAxLCAxODUsIDIwOCwgMjA0LCAyNTAsIDIwOSwgMjA4LCAyMDQsIDEsIDYzLCAyMDgsIDIwNCwgMSwgMjUyLCAKLSAgICAyNSwgMjA4LCAyMDQsIDEsIDc1LCAyMDgsIDIwNCwgMSwgMjMxLCA4MywgMjA4LCAyMDQsIDEsIDY4LCAyMDgsIDIwNCwgMSwgCi0gICAgMjA2LCAxNzgsIDIwOCwgMjA0LCAxLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDEsIDEyNSwgMjE1LCAxODYsIDIwOCwgMjA0LCAxLCAKLSAgICAxMjUsIDE1OSwgMjA4LCAyMDQsIDEsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIDEsIDc0LCAyMDgsIDIwNCwgMSwgMjUxLCAKLSAgICA2NCwgMjA4LCAyMDQsIDEsIDc4LCAyMDgsIDIwNCwgMSwgMjUwLCAzNCwgMjA4LCAyMDQsIDEsIDE3MywgMjA4LCAyMDQsIDEsIAotICAgIDIyOSwgMTQ0LCAyMDgsIDIwNCwgMSwgMjM5LCA4LCAyMDgsIDIwNCwgMSwgMjM4LCAxMTksIDIwOCwgMjA0LCAxLCAyMjIsIAotICAgIDIwMywgMjA4LCAyMDQsIDEsIDI0NywgOTIsIDIwOCwgMjA0LCAxLCAyNDYsIDE5OSwgMjA4LCAyMDQsIDEsIDIzMCwgMTgxLCAKLSAgICAyMDgsIDIwNCwgMSwgMjMwLCAxNDksIDIwOCwgMjA0LCAxLCAyMjEsIDExLCAyMDgsIDIwNCwgMSwgMjA3LCAyNDEsIDIwOCwgCi0gICAgMjA0LCAxLCAyMDcsIDIyOSwgMjA4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMDgsIDIwNCwgMSwgMjQ0LCAxMDQsIDIwOCwgMjA0LCAKLSAgICAxLCAyMjEsIDIyNywgMjA4LCAyMDQsIDEsIDIxMCwgMjIsIDIwOCwgMjA0LCAxLCAyMDksIDEwOCwgMjA4LCAyMDQsIDEsIAotICAgIDI0NCwgMjEyLCAyMDgsIDIwNCwgMSwgMjQ0LCAxLCAyMDgsIDIwNCwgMSwgMjAxLCAyMDEsIDIwOCwgMjA0LCAxLCAxODUsIAotICAgIDIwOCwgMjA0LCAxLCAyMTgsIDIwOCwgMjA4LCAyMDQsIDEsIDI0OSwgMzIsIDIwOCwgMjA0LCAxLCAyNDgsIDk4LCAyMDgsIAotICAgIDIwNCwgMSwgMTkyLCAyMDgsIDIwNCwgMSwgMTk4LCAyMDgsIDIwNCwgMSwgMjE2LCAyMjAsIDIwOCwgMjA0LCAxLCAyMjgsIAotICAgIDExMywgMjA4LCAyMDQsIDEsIDIwNiwgODYsIDIwOCwgMjA0LCAxLCAyMTMsIDkwLCAyMDgsIDIwNCwgMSwgMjExLCAxNjQsIAotICAgIDIwOCwgMjA0LCAxLCAyMTUsIDM2LCAyMDgsIDIwNCwgMSwgMTUyLCAyMDgsIDIwNCwgMjIsIDIsIDI1MiwgMjUsIDIwOCwgCi0gICAgMjA0LCAyMiwgMiwgNzUsIDIwOCwgMjA0LCAyMiwgMiwgMjMxLCA4MywgMjA4LCAyMDQsIDIyLCAyLCA2OCwgMjA4LCAyMDQsIAotICAgIDIyLCAyLCAyMDYsIDE3OCwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDIxNSwgCi0gICAgMTg2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTU5LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIAotICAgIDIyLCAyLCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzQsIDIwOCwgMjA0LCAyMiwgMiwgMjUxLCA2NCwgMjA4LCAKLSAgICAyMDQsIDIyLCAyLCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzgsIDIwOCwgMjA0LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjA4LCAyMDQsIDIsIDI0NywgNTIsIDIwOCwgMjA0LCAyLCAyNTAsIDE4MCwgMjA4LCAyMDQsIDIsIDIwNSwgMTk5LCAyMDgsIAotICAgIDIwNCwgMiwgMjA1LCAyMDQsIDIwOCwgMjA0LCAyLCAyMjEsIDUxLCAyMDgsIDIwNCwgMiwgMjUwLCAxNywgMjA4LCAyMDQsIAotICAgIDIzNywgMTkxLCAyMDgsIDIwNCwgMjUxLCAxNDYsIDU0LCAyMDgsIDIwNCwgMjIwLCAzOSwgMjA4LCAyMDQsIDE3LCAyMDIsIAotICAgIDg0LCAyMDgsIDIwNCwgMTcsIDEwNSwgMjA4LCAyMDQsIDE3LCAxMDgsIDIwOCwgMjA0LCAxNywgMTQ3LCAyMDgsIDIwNCwgCi0gICAgMTcsIDE0OSwgMjA4LCAyMDQsIDE3LCAxNzAsIDIwOCwgMjA0LCAxNywgMTk1LCAyMDgsIDIwNCwgMTcsIDIxMywgMTExLCAKLSAgICAyMDgsIDIwNCwgMTcsIDE5OSwgMjA4LCAyMDQsIDE3LCAyMjIsIDYzLCAxODYsIDEsIDYzLCAxODYsIDEsIDI1MiwgMjUsIAotICAgIDE4NiwgMSwgNzUsIDE4NiwgMSwgMjMxLCA4MywgMTg2LCAxLCA2OCwgMTg2LCAxLCAyMDYsIDE3OCwgMTg2LCAxLCAxMjUsIAotICAgIDE0NiwgMTg2LCAxLCAxMjUsIDIxNSwgMTg2LCAxODYsIDEsIDEyNSwgMTU5LCAxODYsIDEsIDEyNSwgMjI3LCA3OCwgMTg2LCAKLSAgICAxLCA3NCwgMTg2LCAxLCAyNTEsIDY0LCAxODYsIDEsIDc4LCAxODYsIDEsIDI1MCwgMzQsIDE4NiwgMSwgMTczLCAxODYsIDEsIAotICAgIDIyOSwgMTQ0LCAxODYsIDEsIDIzOSwgOCwgMTg2LCAxLCAyMzgsIDExOSwgMTg2LCAxLCAyMjIsIDIwMywgMTg2LCAxLCAKLSAgICAyNDcsIDkyLCAxODYsIDEsIDI0NiwgMTk5LCAxODYsIDEsIDIzMCwgMTgxLCAxODYsIDEsIDIzMCwgMTQ5LCAxODYsIDEsIAotICAgIDIyMSwgMTEsIDE4NiwgMSwgMjA3LCAyNDEsIDE4NiwgMSwgMjA3LCAyMjksIDE4NiwgMSwgMjQ0LCAxMjAsIDE4NiwgMSwgCi0gICAgMjQ0LCAxMDQsIDE4NiwgMSwgMjIxLCAyMjcsIDE4NiwgMSwgMjEwLCAyMiwgMTg2LCAxLCAyMDksIDEwOCwgMTg2LCAxLCAKLSAgICAyNDQsIDIxMiwgMTg2LCAxLCAyNDQsIDEsIDE4NiwgMSwgMjAxLCAyMDEsIDE4NiwgMSwgMTg1LCAxODYsIDEsIDIxOCwgCi0gICAgMjA4LCAxODYsIDEsIDI0OSwgMzIsIDE4NiwgMSwgMjQ4LCA5OCwgMTg2LCAxLCAxOTIsIDE4NiwgMSwgMTk4LCAxODYsIDEsIAotICAgIDIxNiwgMjIwLCAxODYsIDEsIDIyOCwgMTEzLCAxODYsIDEsIDIwNiwgODYsIDE4NiwgMSwgMjEzLCA5MCwgMTg2LCAxLCAKLSAgICAyMTEsIDE2NCwgMTg2LCAxLCAyMTUsIDM2LCAxODYsIDEsIDE1MiwgMTg2LCAyMiwgMiwgMjUyLCAyNSwgMTg2LCAyMiwgMiwgCi0gICAgNzUsIDE4NiwgMjIsIDIsIDIzMSwgODMsIDE4NiwgMjIsIDIsIDY4LCAxODYsIDIyLCAyLCAyMDYsIDE3OCwgMTg2LCAyMiwgCi0gICAgMiwgMTI1LCAxNDYsIDE4NiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4NiwgMjIsIDIsIDc0LCAxODYsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAxODYsIDIyLCAyLCA3OCwgMTg2LCAyMiwgMiwgMjUwLCAzNCwgMTg2LCAyLCAyNDcsIDUyLCAxODYsIDIsIDI1MCwgCi0gICAgMTgwLCAxODYsIDIsIDIwNSwgMTk5LCAxODYsIDIsIDIwNSwgMjA0LCAxODYsIDIsIDIyMSwgNTEsIDE4NiwgMiwgMjEyLCAKLSAgICAxNTcsIDE4NiwgMjQ0LCAxNjYsIDE4NiwgNTIsIDI0NCwgMTY2LCAxODYsIDIxMywgMTMxLCAyNDMsIDg1LCAxODYsIDIxMywgCi0gICAgMTMxLCAxNDIsIDE4NiwgMjE2LCA5OCwgMjI1LCA5MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkxLCAxODYsIDIxNiwgOTgsIAotICAgIDIyNSwgOTAsIDE4NiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEzLCA4MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAKLSAgICAyNSwgMjA3LCA5MiwgMjE5LCAyMzIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA4MCwgMjUsIDI0MiwgODMsIDI0NSwgCi0gICAgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgMjQ1LCAxMzcsIDE4NiwgMjE0LCAKLSAgICAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgCi0gICAgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAKLSAgICAyNTIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgNTIsIDIxNSwgMjUzLCAzLCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAKLSAgICAzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA3MCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIAotICAgIDEzMSwgMywgMjE3LCA1OCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjEzLCAxMjgsIDI0NSwgMTM3LCAKLSAgICAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIAotICAgIDU5LCAyNSwgMTIwLCAyNDEsIDg2LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMzksIDE0NywgMjQxLCAKLSAgICA4NiwgMTg2LCAxLCAyMDksIDMyLCAyNTAsIDI1NSwgNzUsIDE4NiwgMSwgMjA3LCAxMzYsIDI1MCwgMjU1LCA3NSwgMTg2LCAKLSAgICAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDIzMSwgODMsIDE4NiwgMSwgMjUwLCAyNTUsIDY4LCAxODYsIDIyLCAyLCAyNTAsIAotICAgIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgMjU1LCAyMDYsIDE3OCwgMjI0LCA3NCwgMSwgNjMsIDIyNCwgNzQsIDEsIDI1MiwgCi0gICAgMjUsIDIyNCwgNzQsIDEsIDc1LCAyMjQsIDc0LCAxLCAyMzEsIDgzLCAyMjQsIDc0LCAxLCA2OCwgMjI0LCA3NCwgMSwgMjA2LCAKLSAgICAxNzgsIDIyNCwgNzQsIDEsIDEyNSwgMTQ2LCAyMjQsIDc0LCAxLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAxLCAxMjUsIAotICAgIDE1OSwgMjI0LCA3NCwgMSwgMTI1LCAyMjcsIDc4LCAyMjQsIDc0LCAxLCA3NCwgMjI0LCA3NCwgMSwgMjUxLCA2NCwgMjI0LCAKLSAgICA3NCwgMSwgNzgsIDIyNCwgNzQsIDEsIDI1MCwgMzQsIDIyNCwgNzQsIDEsIDE3MywgMjI0LCA3NCwgMSwgMjI5LCAxNDQsIAotICAgIDIyNCwgNzQsIDEsIDIzOSwgOCwgMjI0LCA3NCwgMSwgMjM4LCAxMTksIDIyNCwgNzQsIDEsIDIyMiwgMjAzLCAyMjQsIDc0LCAKLSAgICAxLCAyNDcsIDkyLCAyMjQsIDc0LCAxLCAyNDYsIDE5OSwgMjI0LCA3NCwgMSwgMjMwLCAxODEsIDIyNCwgNzQsIDEsIDIzMCwgCi0gICAgMTQ5LCAyMjQsIDc0LCAxLCAyMjEsIDExLCAyMjQsIDc0LCAxLCAyMDcsIDI0MSwgMjI0LCA3NCwgMSwgMjA3LCAyMjksIAotICAgIDIyNCwgNzQsIDEsIDI0NCwgMTIwLCAyMjQsIDc0LCAxLCAyNDQsIDEwNCwgMjI0LCA3NCwgMSwgMjIxLCAyMjcsIDIyNCwgCi0gICAgNzQsIDEsIDIxMCwgMjIsIDIyNCwgNzQsIDEsIDIwOSwgMTA4LCAyMjQsIDc0LCAxLCAyNDQsIDIxMiwgMjI0LCA3NCwgMSwgCi0gICAgMjQ0LCAxLCAyMjQsIDc0LCAxLCAyMDEsIDIwMSwgMjI0LCA3NCwgMSwgMTg1LCAyMjQsIDc0LCAxLCAyMTgsIDIwOCwgMjI0LCAKLSAgICA3NCwgMSwgMjQ5LCAzMiwgMjI0LCA3NCwgMSwgMjQ4LCA5OCwgMjI0LCA3NCwgMSwgMTkyLCAyMjQsIDc0LCAxLCAxOTgsIAotICAgIDIyNCwgNzQsIDEsIDIxNiwgMjIwLCAyMjQsIDc0LCAxLCAyMjgsIDExMywgMjI0LCA3NCwgMSwgMjA2LCA4NiwgMjI0LCA3NCwgCi0gICAgMSwgMjEzLCA5MCwgMjI0LCA3NCwgMSwgMjExLCAxNjQsIDIyNCwgNzQsIDEsIDIxNSwgMzYsIDIyNCwgNzQsIDEsIDE1MiwgCi0gICAgMjI0LCA3NCwgMSwgMjI3LCA3NywgMjI0LCA3NCwgMjIsIDIsIDI1MiwgMjUsIDIyNCwgNzQsIDIyLCAyLCA3NSwgMjI0LCAKLSAgICA3NCwgMjIsIDIsIDIzMSwgODMsIDIyNCwgNzQsIDIyLCAyLCA2OCwgMjI0LCA3NCwgMjIsIDIsIDIwNiwgMTc4LCAyMjQsIAotICAgIDc0LCAyMiwgMiwgMTI1LCAxNDYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDIyLCAyLCA3NCwgMjI0LCA3NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyNCwgNzQsIDIyLCAyLCA3OCwgMjI0LCA3NCwgMjIsIDIsIDI1MCwgMzQsIDIyNCwgNzQsIDIsIDI1MCwgCi0gICAgMTgwLCAyMjQsIDc0LCAyLCAyMDUsIDE5OSwgMjI0LCA3NCwgMiwgMjA1LCAyMDQsIDIyNCwgNzQsIDIsIDI1MCwgMTIzLCAKLSAgICAyMjQsIDc0LCAyNDQsIDE2NiwgMjI0LCA3NCwgNTIsIDI0NCwgMTY2LCAyMjQsIDc0LCAyNTEsIDE0NiwgNTQsIDIyNCwgNzQsIAotICAgIDIsIDIzNiwgMCwgMjI0LCA3NCwgMTcsIDIwMiwgODQsIDIyNCwgNzQsIDE3LCAxMDUsIDIyNCwgNzQsIDE3LCAxMDgsIDIyNCwgCi0gICAgNzQsIDE3LCAxNDcsIDIyNCwgNzQsIDE3LCAxNDksIDIyNCwgNzQsIDE3LCAxNzAsIDIyNCwgNzQsIDE3LCAxOTUsIDIyNCwgCi0gICAgNzQsIDE3LCAyMTMsIDExMSwgMjI0LCA3NCwgMTcsIDE5OSwgMjI0LCA3NCwgMTcsIDIyMiwgNjMsIDIwOSwgMjM5LCAxLCAKLSAgICA2MywgMjA5LCAyMzksIDEsIDI1MiwgMjUsIDIwOSwgMjM5LCAxLCA3NSwgMjA5LCAyMzksIDEsIDIzMSwgODMsIDIwOSwgCi0gICAgMjM5LCAxLCA2OCwgMjA5LCAyMzksIDEsIDIwNiwgMTc4LCAyMDksIDIzOSwgMSwgNzQsIDIwOSwgMjM5LCAxLCAyNTEsIDY0LCAKLSAgICAyMDksIDIzOSwgMSwgNzgsIDIwOSwgMjM5LCAxLCAyNTAsIDM0LCAyMDksIDIzOSwgMSwgMTczLCAyMDksIDIzOSwgMSwgCi0gICAgMjI5LCAxNDQsIDIwOSwgMjM5LCAxLCAyMzksIDgsIDIwOSwgMjM5LCAxLCAyMzgsIDExOSwgMjA5LCAyMzksIDEsIDIyMiwgCi0gICAgMjAzLCAyMDksIDIzOSwgMSwgMjQ3LCA5MiwgMjA5LCAyMzksIDEsIDI0NiwgMTk5LCAyMDksIDIzOSwgMSwgMjMwLCAxODEsIAotICAgIDIwOSwgMjM5LCAxLCAyMzAsIDE0OSwgMjA5LCAyMzksIDEsIDIyMSwgMTEsIDIwOSwgMjM5LCAxLCAyMDcsIDI0MSwgMjA5LCAKLSAgICAyMzksIDEsIDIwNywgMjI5LCAyMDksIDIzOSwgMSwgMjQ0LCAxMjAsIDIwOSwgMjM5LCAxLCAyNDQsIDEwNCwgMjA5LCAyMzksIAotICAgIDEsIDIyMSwgMjI3LCAyMDksIDIzOSwgMSwgMjEwLCAyMiwgMjA5LCAyMzksIDEsIDIwOSwgMTA4LCAyMDksIDIzOSwgMSwgCi0gICAgMjQ0LCAyMTIsIDIwOSwgMjM5LCAxLCAyNDQsIDEsIDIwOSwgMjM5LCAxLCAyMDEsIDIwMSwgMjA5LCAyMzksIDEsIDE4NSwgCi0gICAgMjA5LCAyMzksIDEsIDIxOCwgMjA4LCAyMDksIDIzOSwgMSwgMjQ5LCAzMiwgMjA5LCAyMzksIDEsIDI0OCwgOTgsIDIwOSwgCi0gICAgMjM5LCAxLCAxOTIsIDIwOSwgMjM5LCAxLCAxOTgsIDIwOSwgMjM5LCAxLCAyMTYsIDIyMCwgMjA5LCAyMzksIDEsIDIyOCwgCi0gICAgMTEzLCAyMDksIDIzOSwgMSwgMjA2LCA4NiwgMjA5LCAyMzksIDEsIDIxMywgOTAsIDIwOSwgMjM5LCAxLCAyMTUsIDM2LCAKLSAgICAyMDksIDIzOSwgMSwgMTUyLCAyMDksIDIzOSwgMSwgMjE1LCAxODUsIDIwOSwgMjM5LCAyLCAyNTAsIDE4MCwgMjA5LCAyMzksIAotICAgIDIsIDIwNSwgMTk5LCAyMDksIDIzOSwgMjIsIDIsIDI1MiwgMjUsIDIwOSwgMjM5LCAyMiwgMiwgNzUsIDIwOSwgMjM5LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgMjA5LCAyMzksIDIyLCAyLCA2OCwgMjA5LCAyMzksIDIyLCAyLCAyMDYsIDE3OCwgMjA5LCAyMzksIDIyLCAKLSAgICAyLCA3NCwgMjA5LCAyMzksIDIyLCAyLCAyNTEsIDY0LCAyMDksIDIzOSwgMjIsIDIsIDc4LCAyMDksIDIzOSwgMjIsIDIsIAotICAgIDI1MCwgMzQsIDIwOSwgMjM5LCAyLCAyMDUsIDIwNCwgMjA5LCAyMzksIDIsIDIyMSwgNTEsIDIwOSwgMjM5LCAxNywgMjAyLCAKLSAgICA4NCwgMjA5LCAyMzksIDE3LCAxMDUsIDIwOSwgMjM5LCAxNywgMTA4LCAyMDksIDIzOSwgMTcsIDE0NywgMjA5LCAyMzksIAotICAgIDE3LCAxNDksIDIwOSwgMjM5LCAxNywgMTcwLCAyMDksIDIzOSwgMTcsIDE5NSwgMjA5LCAyMzksIDE3LCAyMTMsIDExMSwgCi0gICAgMjA5LCAyMzksIDE3LCAxOTksIDIwOSwgMjM5LCAxNywgMjIyLCA2MywgMjUxLCA2OCwgMSwgMTczLCAyNTEsIDY4LCAxLCAKLSAgICAyMjksIDE0NCwgMjUxLCA2OCwgMSwgMjIyLCAyMDMsIDI1MSwgNjgsIDEsIDIwMSwgMjAxLCAyNTEsIDY4LCAxLCAyMTAsIAotICAgIDIyLCAyNTEsIDY4LCAxLCAyNTAsIDI1NSwgMjEwLCAyMiwgMjUxLCA2OCwgMSwgMTg1LCAyNTEsIDY4LCAxLCAyMTgsIDIwOCwgCi0gICAgMjUxLCA2OCwgMSwgMjQ5LCAzMiwgMjUxLCA2OCwgMSwgMTkyLCAyNTEsIDY4LCAxLCAyMzAsIDE4MSwgMjUxLCA2OCwgMSwgCi0gICAgMjQ2LCAxOTksIDI1MSwgNjgsIDEsIDIwOSwgMTA4LCAyNTEsIDY4LCAxLCAyMTYsIDIyMCwgMjUxLCA2OCwgMSwgMjI4LCAKLSAgICAxMTMsIDI1MSwgNjgsIDEsIDIxNSwgMzYsIDI1MSwgNjgsIDEsIDIyMSwgMTEsIDI1MSwgNjgsIDEsIDE1MiwgMjUxLCA2OCwgCi0gICAgMSwgNjMsIDI1MSwgNjgsIDEsIDI0NCwgMjEyLCAyNTEsIDY4LCAxLCAyNDQsIDEsIDI1MSwgNjgsIDEsIDIzOSwgOCwgMjUxLCAKLSAgICA2OCwgMSwgMjUwLCAyNTUsIDIzOSwgOCwgMjUxLCA2OCwgMSwgMjM4LCAxMTksIDI1MSwgNjgsIDEsIDI0OCwgOTgsIDI1MSwgCi0gICAgNjgsIDEsIDIzMCwgMTQ5LCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAKLSAgICAyMTYsIDIyMCwgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIDIyNywgMTM1LCAyMTYsIDIyMCwgMjUxLCA2OCwgMjIsIDIsIDYzLCAKLSAgICAyNTEsIDY4LCAyMiwgMiwgMjUyLCAyNSwgMjUxLCA2OCwgMjIsIDIsIDc1LCAyNTEsIDY4LCAyMiwgMiwgMjMxLCA4MywgCi0gICAgMjUxLCA2OCwgMjIsIDIsIDY4LCAyNTEsIDY4LCAyMiwgMiwgMjA2LCAxNzgsIDI1MSwgNjgsIDIyLCAyLCA3NCwgMjUxLCAKLSAgICA2OCwgMjIsIDIsIDI1MCwgMTMsIDI1MSwgNjgsIDIyLCAyLCA3OCwgMjUxLCA2OCwgMjIsIDIsIDI1MSwgNjQsIDI1MSwgNjgsIAotICAgIDIyLCAyLCAyNTAsIDI0NywgMjUxLCA2OCwgMiwgMjI5LCA4NiwgMjUxLCA2OCwgMTcsIDIwMiwgODQsIDI1MSwgNjgsIDE3LCAKLSAgICAxMDUsIDI1MSwgNjgsIDE3LCAxMDgsIDI1MSwgNjgsIDE3LCAxNDcsIDI1MSwgNjgsIDE3LCAxNDksIDI1MSwgNjgsIDE3LCAKLSAgICAxNzAsIDI1MSwgNjgsIDE3LCAxOTUsIDI1MSwgNjgsIDE3LCAyMTMsIDExMSwgMjUxLCA2OCwgMTcsIDE5OSwgMjUxLCA2OCwgCi0gICAgMTcsIDIyMiwgNjMsIDI1MSwgNjgsIDQyLCAyMDksIDE1MiwgMjUxLCA2OCwgNDIsIDIwNywgMTUxLCAyNTEsIDY4LCAyLCA1LCAKLSAgICAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE0LCAxNjcsIDI1MSwgNjgsIDIsIDIxNSwgMTM2LCAyNTEsIDY4LCAxNiwgMjA1LCAKLSAgICAyMzAsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMiwgMjAyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA2MywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA0LCAzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyMTMsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDYsIDEsIDE5OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIAotICAgIDYsIDEsIDIzMSwgODMsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNiwgMTc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAKLSAgICA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjIzLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzksIDgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyOSwgMjYsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDYsIDEsIDI0MSwgNTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMTk3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKLSAgICAxLCAyMDcsIDMxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDEsIDc1LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjAsIAotICAgIDc2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDcsIDIzNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIxLCAzNywgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQ0LCAyMTIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgNDksIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDcsIDE5MywgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNiwgMSwgMjE3LCAxOTEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIzNiwgMjI4LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA2LCAxLCAyMzYsIDEyNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCA1MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgCi0gICAgMSwgMjM3LCA5MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjExLCAxMTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAotICAgIDIxMiwgMTQyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDUsIDE5MCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIyLCAKLSAgICAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDQsIDMwLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA3OCwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyMjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzOSwgOCwgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNSwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNSwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMCwgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgCi0gICAgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjEsIDM3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDQsIDIxMiwgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCA0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyNDcsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNSwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIAotICAgIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjAyLCA4NCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDEwNSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgMTcsIDEwOCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE0NywgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIAotICAgIDE0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE3MCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE5NSwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgMTcsIDIxMywgMTExLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjIyLCAKLSAgICA2MywgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgMTUyLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA3LCAxNTEsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDQyLCAyMDksIDUzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjM5LCAxNTMsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDQyLCAyNDAsIDE4LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjEyLCA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIAotICAgIDIxMywgMTA1LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjQxLCAxMzQsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMjIsIDU4LCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCAyMjAsIDM5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxODUsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE3MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjI4LCAxMTMsIDIxOSwgCi0gICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE5MiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ0LCAyMTIsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwMiwgMTE2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyMDYsIDg2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjIsIDIwMywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgMTUyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMzksIDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDIyOSwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTUsIDM2LCAyMTksIDQ5LCAyNDYsIDY2LCAKLSAgICAyMzcsIDc3LCAxLCAyNDksIDMyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDcsIDkyLCAyMTksIDQ5LCAyNDYsIAotICAgIDY2LCAyMzcsIDc3LCAxLCAyMTAsIDIyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDksIDEwOCwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAxLCAyMDEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxOCwgMjA4LCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTYsIDIyMCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjQwLCAxMDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NiwgMTk5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCA2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNzQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDEsIDc1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwNywgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDIzNSwgMTcxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjE5LCAxODQsIDIxOSwgNDksIDI0NiwgNjYsIAotICAgIDIzNywgNzcsIDEsIDQ2LCAyMzAsIDU0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjEwLCA2OSwgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyNiwgMTg1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgCi0gICAgMjIzLCAxNjMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAxNTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDQ2LCAyMDQsIDE0NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyMiwgMjA1LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjAzLCAxMjQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAKLSAgICAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAyMDgsIDE2MSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIxNSwgMjQ1LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgMTQzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAyNDAsIDUsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDIxNCwgMjM5LCAyMDgsIDE2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMTYzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCAKLSAgICA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIAotICAgIDYyLCAyMDYsIDY4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAyMjYsIDI1NCwgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMjA4LCAxNjEsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIyNiwgMjU0LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMTQzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgOSwgMiwgNjMsIDksIAotICAgIDIsIDM0LCAyMywgNjMsIDksIDIsIDM0LCAyMywgMjQ5LCAxNSwgOSwgMiwgMzQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIAotICAgIDksIDIsIDM0LCAyMywgMTUyLCA5LCAyLCAzNCwgMjMsIDIzMSwgODUsIDksIDIsIDM0LCAyMywgMjI4LCA5MywgMjM3LCAKLSAgICAyMDgsIDksIDIsIDM0LCAyMywgMjIzLCAxOTksIDksIDIsIDM0LCAyMywgMjE1LCAyMiwgOSwgMiwgMjU0LCAzNCwgOSwgMiwgCi0gICAgMjUxLCAyMzIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjUwLCA3MywgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNDIsIDMwLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDI0NiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDI1MSwgMjMzLCAyMywgMTUyLCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyNTEsIDIzMywgMjMsIDIzMSwgNTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjI4LCA5NCwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzLCAyMTMsIDI3LCA5LCAyLCAyNTEsIDIzMywgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjM3LCAyMDgsIDksIDIsIDI1MSwgMTQ5LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyNTEsIDE1MCwgCi0gICAgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCi0gICAgMjUxLCAxNTAsIDIzLCAyMTMsIDg4LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNTEsIDEyMiwgOSwgCi0gICAgMiwgMjUxLCA0NywgOSwgMiwgMjUxLCA0OCwgMjMsIDI0MSwgMjIsIDksIDIsIDI1MSwgNDgsIDIzLCAyMTIsIDI0NSwgOTEsIAotICAgIDIzOCwgNTUsIDksIDIsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAyNTEsIDM5LCA5LCAyLCAyNTEsIDQwLCAyMywgCi0gICAgMjQzLCAxODYsIDksIDIsIDI1MSwgNDAsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNTEsIDQwLCAyMywgMTUyLCA5LCAyLCAyNTEsIAotICAgIDQwLCAyMywgMjMwLCAyNywgOSwgMiwgMjUxLCA0MCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyNTEsIDQwLCAyMywgMjEzLCA0MywgCi0gICAgOSwgMiwgMjUxLCA0MCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyNTEsIDM2LCA5LCAyLCAyNTEsIDI4LCA5LCAyLCAyNTAsIAotICAgIDI0MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDExNSwgCi0gICAgMjUwLCAyMzEsIDksIDIsIDI1MCwgMjMyLCAxMjYsIDIwOCwgMjE5LCA5LCAyLCAyNTAsIDIzMiwgOTEsIDIyMywgOTcsIAotICAgIDIxOSwgMjUxLCAyNTAsIDIzMiwgOTEsIDIyMywgOTYsIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgMjExLCAxNzYsIAotICAgIDksIDIsIDI1MCwgMjAwLCA5LCAyLCAyNTAsIDE3MCwgOSwgMiwgMjUwLCAxMzgsIDksIDIsIDI1MCwgMTM5LCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDI1MCwgMTEwLCA5LCAyLCAyNTAsIDgwLCA5LCAyLCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAyMDIsIAotICAgIDM1LCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMjMwLCAzMSwgMjA5LCAxNDEsIDksIDIsIDI1MCwgNzYsIDExNSwgMjUwLCAKLSAgICA3NiwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIwNywgMTk4LCAxMTUsIDIwNywgMTk4LCAyMTksIDk2LCA5LCAyLCAyNTAsIAotICAgIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgCi0gICAgNzYsIDI0NSwgMTI0LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3MywgOSwgMiwgCi0gICAgMjUwLCA2OSwgOSwgMiwgMjQ5LCAzMiwgOSwgMiwgMjQ5LCAxNSwgOSwgMiwgMjQ5LCA5LCA5LCAyLCAyNDksIDMsIDksIDIsIAotICAgIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1NCwgMTE1LCAyNDgsIDI1MywgOSwgMiwgMjQ4LCAyNTIsIDksIDIsIDE0MiwgOSwgMiwgCi0gICAgMjQ4LCAyMzAsIDksIDIsIDI0OCwgODYsIDksIDIsIDI0OCwgODcsIDIzLCA2MywgOSwgMiwgMjQ4LCA4NywgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyNDgsIDg3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0NywgMTkzLCA5LCAyLCAyNDcsIAotICAgIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjUxLCAyMzIsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMDYsIDI1NSwgOSwgCi0gICAgMiwgMjQ3LCAxOTQsIDI0NSwgMTI0LCAyNDcsIDE5MywgOSwgMiwgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTcyLCAxMTUsIAotICAgIDI0NywgMTcxLCA5LCAyLCAyNDcsIDE2MCwgOSwgMiwgMjQ3LCAxNTksIDksIDIsIDI0NCwgMjEyLCA5LCAyLCAyNDQsIDIwMywgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAzNCwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKLSAgICAyMywgMjUwLCAyNDMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjQ4LCAyNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIAotICAgIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzksIDgsIDksIDIsIDI0NCwgMjA0LCAKLSAgICAyMjksIDY5LCAyMywgMjM5LCA5LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM3LCAKLSAgICAyMTksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMTUyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgCi0gICAgMjI0LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgMjI1LCA5MSwgMjI2LCAyMzksIDksIDIsIDI0NCwgMjA0LCAKLSAgICAyMjksIDY5LCAyMywgMjMwLCAxMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjgsIDExMywgOSwgMiwgMjQ0LCAKLSAgICAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDI0MCwgOTEsIAotICAgIDIyNSwgNzgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyMjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKLSAgICAyMywgMjIyLCAyNDAsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIAotICAgIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjEyLCAxNjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA5LCAyNDIsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA3LCA0MSwgOTEsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIAotICAgIDY5LCAyMywgMjA2LCAxODYsIDksIDIsIDI0NCwgMTc1LCA5LCAyLCAyNDQsIDE1NCwgOSwgMiwgMjQ0LCAxNTMsIDksIDIsIAotICAgIDI0NCwgMTUyLCA5LCAyLCAyNDMsIDIzMywgOSwgMiwgMjQzLCAyMTUsIDksIDIsIDI0MywgMTg4LCA5LCAyLCAyNDMsIDE4OSwgCi0gICAgMjMsIDIxMywgNDMsIDksIDIsIDI0MywgMTg2LCA5LCAyLCAyNDMsIDE3NiwgOSwgMiwgMjQzLCAxNzcsIDIyOSwgMjMyLCAKLSAgICAxMDYsIDIzNywgMjA5LCAyNDMsIDE1NiwgOSwgMiwgMjQzLCAxNTYsIDksIDIsIDI0MiwgNDIsIDksIDIsIDI0MiwgNDMsIAotICAgIDExNSwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgMjM3LCAyMDgsIDksIDIsIDI0MiwgNDMsIDIxMywgMjQsIDksIDIsIDI0MiwgCi0gICAgNDAsIDksIDIsIDI0MiwgNDEsIDIzLCAyNDEsIDQsIDksIDIsIDI0MiwgMzksIDksIDIsIDI0MiwgMzcsIDksIDIsIDI0MiwgCi0gICAgMzYsIDksIDIsIDI0MiwgMzUsIDksIDIsIDI0MiwgMzEsIDksIDIsIDI0MiwgMjksIDksIDIsIDI0MiwgMzAsIDIzNywgMjA4LCAKLSAgICA5LCAyLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMjgsIDksIDIsIDI0MiwgMjEsIDksIDIsIAotICAgIDc0LCA5LCAyLCAxODgsIDIzLCAyMTksIDk2LCA5LCAyLCAxODgsIDExNSwgMTg4LCAyMjEsIDQxLCAxMTUsIDIyMSwgNDAsIAotICAgIDksIDIsIDI0MSwgMTkwLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDM0LCA5MSwgMjM3LCAxNjAsIDkxLCAyNDQsIDIxMiwgOSwgMiwgCi0gICAgMjQxLCAxOTEsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQxLCAxOTEsIDIzLCAKLSAgICAyMTUsIDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQxLCAxOTEsIDIzLCA2OCwgOSwgMiwgMjQxLCAKLSAgICAxNjMsIDksIDIsIDI0MSwgMTUxLCA5LCAyLCAyNDEsIDEyMiwgOSwgMiwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjMsIAotICAgIDIzOCwgMjMyLCA5LCAyLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNDEsIDkzLCAyMywgMjI1LCAKLSAgICAyMCwgOSwgMiwgMjQxLCA5MywgMjQ1LCAxMjQsIDI0MSwgOTIsIDksIDIsIDI0MSwgOTMsIDIxOSwgMjUxLCAyNDEsIDkyLCAKLSAgICA5LCAyLCAyNDEsIDkzLCAyMTEsIDE3NiwgOSwgMiwgMjQxLCAyNSwgOSwgMiwgMjQxLCAyMiwgOSwgMiwgMjQxLCA0LCA5LCAKLSAgICAyLCAyNDAsIDE3OSwgOSwgMiwgMjQwLCAxODAsIDIzLCA2MywgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzAsIAotICAgIDksIDIsIDI0MCwgMTgwLCAyMywgMzQsIDkxLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAyNTAsIDIzMSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDksIDE1LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAxNTIsIDksIDIsIDI0MCwgMTgwLCAyMywgMjM3LCAxNjAsIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzMSwgODYsIAotICAgIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMyLCAKLSAgICAyMTEsIDE3NiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDExMywgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjcsIDE0OCwgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyNDAsIDE4MCwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIzOSwgOCwgOSwgMiwgMjM5LCA5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA2LCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDE1MiwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAyLCAyMzksIDcsIDIzLCAyNTEsIDE1MCwgMjA5LCAxNDIsIDkxLCAKLSAgICAyMTAsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjUwLCA3NCwgOTEsIDIzOCwgMjQ2LCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyNDgsIDIzMSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDcsIDE2MCwgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjQ3LCAxNjEsIDkxLCAyMTYsIDIyMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ0LCAyMTIsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDI0MywgMjMzLCA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgCi0gICAgNDAsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDEyMywgOTEsIDIyOCwgMTEzLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI0LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDc5LCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIAotICAgIDgwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNjQsIDkxLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyMzcsIDE2MCwgOTEsIDIyNiwgMjQwLCA5MSwgMjQxLCA0LCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDE0MCwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjM3LCAxNDEsIDkxLCAyMjgsIDExMywgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCA0LCA5MSwgMjI3LCAKLSAgICAxNDgsIDksIDIsIDIzOSwgNywgMjMsIDIzNiwgMjEsIDksIDIsIDIzOSwgNywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMzAsIDIxMCwgOTEsIDIzNiwgMjcsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzAsIAotICAgIDEyLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjI5LCA5NCwgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjI5LCA5NSwgOTEsIDIyOCwgMzAsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjA4LCA5MSwgMjUwLCAyMzEsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDAsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDEsIAotICAgIDExNSwgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMTg1LCA5LCAyLCAyMzksIDcsIDIzLCAyMTUsIDgsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQ0LCAKLSAgICA5MSwgMjA3LCAxODEsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgOSwgOSwgMiwgMjM5LCA3LCAyMywgMjEwLCAyMjAsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzksIDcsIDIzLCA2OCwgOSwgMiwgMjM5LCA3LCAyMywgMjA3LCAyOSwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMjA3LCAzMCwgOTEsIDI0MiwgNDIsIDksIDIsIDIzOSwgNywgMTE1LCAyMzksIDYsIDksIDIsIAotICAgIDIzOSwgMSwgOSwgMiwgMjM5LCAyLCAyNDUsIDEyNCwgMjM5LCAxLCA5LCAyLCAyMzgsIDI1NSwgOSwgMiwgMjM5LCAwLCAKLSAgICAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ2LCA5LCAyLCAyMzgsIDI0NywgCi0gICAgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ1LCA5LCAyLCAyMzgsIAotICAgIDI0MywgOSwgMiwgMjM4LCAyMzQsIDksIDIsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOCwgCi0gICAgMjMzLCAxMTUsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjQ1LCAxMjQsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIyNCwgCi0gICAgOSwgMiwgMjM4LCAyMjMsIDksIDIsIDIzOCwgMjE4LCA5LCAyLCAyMzgsIDE2MiwgOSwgMiwgMjM4LCAxNjMsIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjM4LCA4MSwgOSwgMiwgMjM4LCA4MiwgMjMsIDc0LCA5LCAyLCAyMzgsIDgyLCAyMywgNjgsIDksIDIsIAotICAgIDIzOCwgODIsIDI0NSwgMTI0LCAyMzgsIDgxLCA5LCAyLCAyMzgsIDc5LCA5LCAyLCAyMzgsIDgwLCAxMTUsIDIzOCwgNzksIAotICAgIDksIDIsIDIzOCwgODAsIDI0NSwgMTI0LCAyMzgsIDc5LCA5LCAyLCAyMzgsIDc2LCA5LCAyLCAyMzgsIDYzLCA5LCAyLCAKLSAgICAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgMjM4LCA2MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDM0LCA5MSwgMjMxLCA4NSwgOSwgCi0gICAgMiwgMjM4LCA2MiwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDIzMSwgODUsIDksIDIsIAotICAgIDIzOCwgNjIsIDIzLCAyMjYsIDI0MCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOCwgNjIsIDIzLCAxODUsIDksIDIsIDIzOCwgCi0gICAgNTcsIDksIDIsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzgsIDU2LCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjM4LCA1NiwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjM3LCAKLSAgICAyMzAsIDksIDIsIDIzNywgMjMxLCAyNDUsIDEyNCwgMjM3LCAyMzAsIDksIDIsIDIzNywgMjI4LCA5LCAyLCAyMzcsIDIyOSwgCi0gICAgMjMsIDIzMCwgMTIsIDksIDIsIDIzNywgMjI5LCAyMywgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyMzcsIDIyOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIzNywgMjI5LCAyMywgMjE1LCA5LCA5MSwgMjA3LCAxOTcsIDksIDIsIAotICAgIDIzNywgMjI5LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAyMTksIDksIDIsIDIzNywgMjIwLCAyMywgMzQsIDkxLCAyMjgsIDE4MywgCi0gICAgOSwgMiwgMjM3LCAyMjAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM3LCAyMjAsIDExNSwgMjM3LCAyMjAsIDIyNiwgMjMwLCA5LCAKLSAgICAyLCAyMzcsIDIxMiwgOSwgMiwgMjM3LCAyMTAsIDksIDIsIDIzNywgMjExLCAyMywgMjEzLCA0MywgOSwgMiwgMjM3LCAyMDIsIAotICAgIDksIDIsIDIzNywgMjAxLCA5LCAyLCAyMzcsIDE5NywgOSwgMiwgMjM3LCAxOTYsIDksIDIsIDE1MiwgOSwgMiwgMjM3LCAKLSAgICAxNjAsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDIzNywgMTQwLCA5LCAyLCAyMzcsIDMsIDksIAotICAgIDIsIDIzNywgNCwgMjMsIDI1MCwgNzUsIDksIDIsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIzNywgNCwgMjMsIDI0OSwgCi0gICAgMTUsIDksIDIsIDIzNywgNCwgMjMsIDI0MywgMTU2LCA5LCAyLCAyMzcsIDQsIDIzLCAyMzgsIDI1NSwgOSwgMiwgMjM3LCA0LCAKLSAgICAyMywgMjI5LCA4NCwgOSwgMiwgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCA0LCAyMywgMjEzLCA0MywgOSwgMiwgCi0gICAgMjM3LCA0LCAyMywgNjgsIDksIDIsIDIzNiwgMjYsIDksIDIsIDIzNiwgMjEsIDksIDIsIDIzNiwgMjIsIDIzLCAyNTAsIAotICAgIDIzMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDIzNywgMTQwLCA5LCAyLCAyMzYsIDIyLCAyMywgMjI5LCAyMzEsIDksIDIsIDIzNiwgCi0gICAgMjIsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMzYsIDIyLCAyMywgMjA3LCAyOSwgOSwgMiwgMjM2LCAxNywgOSwgMiwgNzUsIDksIAotICAgIDIsIDIzNSwgMjA2LCA2MywgOSwgMiwgMjM1LCAxNjYsIDksIDIsIDIzMSwgMTEzLCA5LCAyLCAyMzEsIDExNCwgMTE1LCAKLSAgICAyMzEsIDExNCwgMjQ3LCAxNjAsIDksIDIsIDIzMSwgMTE0LCAxMTUsIDIzMSwgMTE0LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCAKLSAgICA4OCwgOSwgMiwgMjMxLCA4NSwgOSwgMiwgMjMxLCA4NiwgMjQzLCAyMTUsIDksIDIsIDIzMSwgODYsIDIxNiwgNTcsIDksIDIsIAotICAgIDIzMSwgODYsIDExNSwgMjMxLCA4NiwgMjEyLCAyNDksIDExNSwgMjEyLCAyNDksIDIwNywgMzAsIDExNSwgMjA3LCAyOSwgOSwgCi0gICAgMiwgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzMSwgNzcsIDksIDIsIDIzMSwgNzgsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIzMSwgNzYsIDksIDIsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIzLCAyMDksIDI0MiwgOSwgMiwgCi0gICAgMjMxLCA2NywgMjQ1LCAxMjQsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIxOSwgMjUxLCAyMzEsIDY2LCA5LCAyLCAyMzEsIAotICAgIDY3LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCA1OSwgOSwgMiwgMjMxLCA0OSwgOSwgMiwgMjMwLCAyMjQsIDksIDIsIDIzMCwgCi0gICAgMjA5LCA5LCAyLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MSwgMTIyLCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjUxLCAxMjMsIDkxLCAyMjgsIDIwNywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MCwgNzMsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ4LCAyNTIsIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAxNDIsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQxLCAyMiwgOSwgMiwgMjMwLCAKLSAgICA0NCwgMjMsIDI0MSwgNCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOSwgOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjQ2LCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMjQsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMzgsIDIyNSwgOTEsIDIxMywgODksIDkxLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgODEsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgOTEsIDIxNCwgMjMwLCA5LCAKLSAgICAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIzMCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjAxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjMwLCA0NCwgCi0gICAgMjMsIDIzMSwgNjYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI5LCAxMDAsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI3LCAxNDgsIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAyMjYsIDIzOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIxLCA5MSwgCi0gICAgMjQyLCA0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAyMzgsIDgxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAKLSAgICAyMSwgOTEsIDIwOSwgMTg3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIAotICAgIDE1NiwgOTEsIDIyMSwgMzUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMSwgCi0gICAgNDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNSwgMTQ1LCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjE1LCAzNiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA5MCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgNDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDksIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAyMTIsIDE5OSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgMTQ5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEwLCAyMjksIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMDksIDIxOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDY4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMjksIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwMiwgMzksIDksIDIsIDIzMCwgNDIsIDksIDIsIAotICAgIDIzMCwgNDMsIDI0NSwgMTI0LCAyMzAsIDQyLCA5LCAyLCAyMzAsIDMyLCA5LCAyLCAyMzAsIDI5LCA5LCAyLCAyMzAsIDI3LCAKLSAgICA5LCAyLCAyMzAsIDI2LCA5LCAyLCAyMzAsIDI0LCA5LCAyLCAyMzAsIDI1LCAxMTUsIDIzMCwgMjQsIDksIDIsIDIzMCwgMTIsIAotICAgIDksIDIsIDIzMCwgMTMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMwLCA4LCA5LCAyLCAyMzAsIDksIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMzAsIDksIDI0NSwgMTI0LCAyMzAsIDgsIDksIDIsIDIzMCwgNiwgOSwgMiwgMjMwLCA1LCA5LCAKLSAgICAyLCAyMjksIDIzMSwgOSwgMiwgMjI5LCAyMzIsIDIyOCwgOTUsIDIzLCAxMDYsIDExNSwgMjI4LCA5NSwgMjMsIDY4LCA5LCAKLSAgICAyLCAyMjksIDIzMiwgMTE1LCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIDIsIAotICAgIDIyOSwgMTcxLCA5LCAyLCAyMjksIDEwMCwgOSwgMiwgMjI5LCAxMDEsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjksIDEwMSwgCi0gICAgMjMsIDY4LCA5LCAyLCAyMjksIDEwMSwgMjMsIDIwNywgMjksIDksIDIsIDIyOSwgOTQsIDksIDIsIDIyOSwgODQsIDksIDIsIAotICAgIDIyOSwgNzEsIDksIDIsIDIyOSwgNzAsIDksIDIsIDIyOSwgNjgsIDksIDIsIDIyOSwgNjksIDExNSwgMjI5LCA2OCwgOSwgMiwgCi0gICAgMjI4LCAyMDksIDksIDIsIDIyOCwgMjEwLCAxMTUsIDIzNywgNCwgMjMsIDI1MCwgNzQsIDIyOCwgMjEwLCAxMTUsIDIzNywgCi0gICAgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDIwNSwgOSwgMiwgMjI4LCAyMDYsIDIwNiwgNjksIAotICAgIDE4LCA5LCAyLCAyMjgsIDIwNCwgOSwgMiwgMjI4LCAxOTYsIDksIDIsIDIyOCwgMTk3LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICAxOTUsIDksIDIsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE4NCwgMjE5LCAyNTEsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE3NywgCi0gICAgOSwgMiwgMjI4LCAxNTUsIDksIDIsIDIyOCwgMTEzLCA5LCAyLCAyMjgsIDk0LCA5LCAyLCAyMjgsIDk1LCAyMywgNjMsIDksIAotICAgIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MSwgMzksIAotICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgNzYsIDIwMiwgMzUsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0OCwgODYsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyNDQsIDE1NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0MSwgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzksIDgsIAotICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjM3LCAyMjAsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIAotICAgIDIzNywgMTQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgCi0gICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAKLSAgICAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY3LCA5MSwgMjI2LCAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjksIAotICAgIDEwMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgODQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIyOCwgMTk2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI4LCAxOTcsIDkxLCAyMzcsIDQsIDkxLCA2MywgOSwgMiwgCi0gICAgMjI4LCA5NSwgMjMsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI2LCAKLSAgICAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNSwgMjAsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyMywgMTk5LCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjIyLCAyNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMTIsIDI0NSwgOTEsIDIzOCwgNTYsIDkxLCAyNDEsIDIyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAyNDUsIDkxLCAKLSAgICAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAKLSAgICAxOTgsIDkxLCAyMTIsIDE5NywgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAKLSAgICAyNTUsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMTg4LCA5MSwgMzQsIAotICAgIDkxLCAyMTEsIDExLCA5MSwgMjAxLCAyMDEsIDksIDIsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDEwNiwgCi0gICAgOTEsIDYzLCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDcsIAotICAgIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgOTUsIDIzLCAyMDYsIDE4NiwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjExLCAxNzYsIDksIDIsIDIyOCwgOTIsIDksIDIsIDIyOCwgOTMsIDIzLCAyMTMsIDQzLCA5LCAyLCAKLSAgICAyMjgsIDkzLCAyMywgMjEzLCA0NCwgOTEsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDkzLCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICA5MywgMjM3LCAyMDksIDExNSwgMjI4LCA5MywgMjM3LCAyMDksIDIxMywgNDMsIDksIDIsIDIyOCwgODgsIDksIDIsIDIyOCwgCi0gICAgMzAsIDksIDIsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDI4LCA5LCAyLCAyMjgsIDI5LCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIDE4NCwgOTEsIDIxNSwgMTQ1LCA5LCAyLCAyMjcsIDE0OCwgOSwgMiwgCi0gICAgMjI3LCAxMjksIDksIDIsIDIyNywgMTE3LCA5LCAyLCAyMjcsIDkyLCA5LCAyLCAyMjYsIDIzOSwgOSwgMiwgMjI2LCAyNDAsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNTEsIDM5LCA5LCAyLCAyMjYsIDIzOCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MSwgNSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzNywgNCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI5LCA5LCAKLSAgICAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjcsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyOCwgOTEsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjI5LCAxMDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI4LCAxMTQsIDkxLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIyOCwgOTQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjIyLCAyNDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjIxLCA4NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAKLSAgICAyMTIsIDE2MywgOTEsIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxNDEsIDkxLCAyNDcsIDE5MywgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMDcsIDE5NywgOSwgMiwgMjI2LCAyMzgsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjQ1LCAKLSAgICAxMjQsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjE5LCAyNTEsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjExLCAKLSAgICAxNzYsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI0LCA5LCAyLCAyMjYsIDIzNiwgOSwgMiwgMjI2LCAyMzAsIDksIDIsIDIyNiwgCi0gICAgMjMxLCAxMTUsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgMjE5LCAyNTEsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgCi0gICAgMjEzLCAyNCwgOSwgMiwgMjI2LCAyMjcsIDksIDIsIDIyNiwgMjI0LCA5LCAyLCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIAotICAgIDExNSwgMjI2LCAyMjIsIDksIDIsIDIyNiwgMjIzLCAxMTUsIDIyNiwgMjIzLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgCi0gICAgMiwgMTkyLCA5LCAyLCAyMjUsIDE3NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjUsIDE3NywgMjM3LCAyMDgsIDksIDIsIAotICAgIDIyNSwgMTc2LCA5LCAyLCAyMjUsIDE0OCwgOSwgMiwgMjI1LCAxMDAsIDksIDIsIDIyNSwgNzksIDksIDIsIDIyNSwgNzgsIAotICAgIDksIDIsIDIyNSwgMjAsIDksIDIsIDIyNCwgMjI4LCA5LCAyLCAyMjQsIDE1NSwgOSwgMiwgMjI0LCAxMTAsIDksIDIsIDIyMywgCi0gICAgMjQ2LCA5LCAyLCAyMjMsIDI0NywgMTE1LCAyMjMsIDI0NiwgOSwgMiwgMjIzLCAyMzUsIDksIDIsIDIyMywgMjM2LCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjIzLCAyMTcsIDksIDIsIDIyMywgMjAzLCA5LCAyLCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDIzLCAKLSAgICA2MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCi0gICAgMjIzLCAyMDAsIDExNSwgMjIzLCAxOTksIDksIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMzQsIDkxLCAyMDEsIAotICAgIDIwMSwgOSwgMiwgMjIzLCAyMDAsIDI0NSwgMTI0LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAxOTcsIDksIDIsIDIyMywgMTk4LCAKLSAgICAyMywgNjMsIDksIDIsIDIyMywgMTk4LCAyMywgMzQsIDkxLCAyNDMsIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzLCAyNDMsIAotICAgIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzNywgMjA4LCA5LCAyLCAyMDEsIDIwMSwgOSwgMiwgMjIzLCAxMDksIDksIDIsIDIyMywgCi0gICAgOTYsIDksIDIsIDIyMywgOTcsIDIzMCwgMjM4LCA5LCAyLCAyMjMsIDk3LCAyMywgMjEyLCAyMDAsIDIwOSwgMTQxLCA5LCAyLCAKLSAgICAyMjMsIDk3LCAyMTksIDI1MSwgMjIzLCA5NiwgOSwgMiwgMjIzLCA5NSwgOSwgMiwgMjIzLCA4OCwgMjIxLCAyNiwgOSwgMiwgCi0gICAgMjIzLCA4NywgOSwgMiwgMjIzLCA4NiwgOSwgMiwgMjIyLCAyNDAsIDksIDIsIDIyMiwgMjQxLCAyMywgNjMsIDksIDIsIAotICAgIDIyMiwgMjQxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjIyLCAyNDEsIDIxMywgMjQsIDksIDIsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyMjIsIDEwMSwgMjMsIDc0LCA5LCAyLCAyMjIsIDk5LCA5LCAyLCAyMjIsIDY5LCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAKLSAgICAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAyMjUsIDkxLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIAotICAgIDIyMiwgNjUsIDksIDIsIDIyMiwgNjYsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjE5LCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyMiwgCi0gICAgMjQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIxLCA0MCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDMsIDksIDIsIDIyMiwgCi0gICAgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMzQsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0NCwgOTEsIDI1MCwgCi0gICAgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCA3NiwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIAotICAgIDIzLCAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjIsIDUzLCA5LCAKLSAgICAyLCAyMjEsIDg0LCA5LCAyLCAyMjEsIDU2LCA5LCAyLCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMjUsIDc5LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAKLSAgICAyMywgMjE1LCA4LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjE1LCA5LCAxMTUsIDIyMSwgNDEsIDIyOCwgOTMsIAotICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjIxLCA0MSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgOSwgMiwgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDAsIDksIDIsIAotICAgIDIyMSwgNDEsIDI0NSwgMTI0LCAyMjEsIDQxLCAyMjgsIDkzLCAxMTUsIDIyOCwgOTIsIDksIDIsIDIyMSwgMzUsIDksIDIsIAotICAgIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNDgsIDg2LCA5LCAKLSAgICAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0MiwgMzcsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjM3LCAyMTksIAotICAgIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAKLSAgICAyMywgMjMwLCAyNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMjgsIDExMywgOSwgMiwgMjIxLCAzNiwgMjUxLCAKLSAgICAxNTAsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMTIsIDEzOCwgOSwgMiwgMjIxLCAzNiwgCi0gICAgMjUxLCAxNTAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjEsIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjIxLCAKLSAgICAzNiwgMjI5LCA2OSwgMjMsIDI0OCwgODcsIDY4LCA5LCAyLCAxODUsIDksIDIsIDIxOSwgMTU5LCA5LCAyLCAyMTksIDEyMiwgCi0gICAgOSwgMiwgMjE5LCA5NiwgOSwgMiwgMjE4LCAyMjIsIDksIDIsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDYzLCA5LCAKLSAgICAyLCAyMTgsIDE2OCwgMjMsIDI1MSwgMjMyLCA5LCAyLCAyMTgsIDE2OCwgMjMsIDI0OCwgODYsIDksIDIsIDIxOCwgMTY4LCAKLSAgICAyMywgMjQ3LCAxOTMsIDksIDIsIDIxOCwgMTY4LCAyMywgNzQsIDksIDIsIDIxOCwgMTY4LCAyMywgNzUsIDksIDIsIDIxOCwgCi0gICAgMTY4LCAyMywgMjM1LCAxNjYsIDksIDIsIDIxOCwgMTY4LCAyMywgNjgsIDksIDIsIDIxOCwgMTY4LCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjE4LCAxNjgsIDI0NSwgMTI0LCAyMTgsIDE2NywgOSwgMiwgMjE4LCAxMDksIDksIDIsIDIxOCwgMTEwLCAyMywgCi0gICAgMjMwLCA4LCA5LCAyLCAyMTgsIDExMCwgMjMsIDIwNywgMjksIDksIDIsIDIxOCwgMTEwLCAyMywgMjAyLCAxMTYsIDksIDIsIAotICAgIDIxOCwgMTEwLCAyMTksIDI1MSwgMjE4LCAxMDksIDksIDIsIDIxNiwgMjIwLCA5LCAyLCAyMTYsIDIxNCwgOSwgMiwgMjE2LCAKLSAgICA1NywgOSwgMiwgMjE1LCAxNDUsIDksIDIsIDIxNSwgMzYsIDksIDIsIDIxNSwgMjMsIDIyMSwgMjYsIDksIDIsIDIxNSwgMjIsIAotICAgIDksIDIsIDIxNSwgMjMsIDIzLCA2MywgOSwgMiwgMjE1LCAyMywgMjMsIDI0MiwgNDIsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyNDIsIDQwLCA5LCAyLCAyMTUsIDIzLCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjMwLCAxMiwgOSwgMiwgMjE1LCAKLSAgICAyMywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjI2LCAyMjIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjQsIAotICAgIDE1NSwgOSwgMiwgMjE1LCAyMywgMjMsIDIyMSwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMTUsIDgsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzLCAyMTMsIDksIDksIDIsIDIxNSwgMjMsIDIzLCAyMTAsIDEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgMzUsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDYsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyMDYsIDIxMCwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMTUsIDIzLCAxMTUsIDIxNSwgMjIsIDksIDIsIAotICAgIDIxNSwgMjMsIDIzNywgMjA4LCA5LCAyLCAyMTUsIDgsIDksIDIsIDIxNSwgOSwgMjI4LCA5NSwgMjMsIDI1MCwgNzMsIDksIAotICAgIDIsIDIxNCwgMjM4LCA5LCAyLCAyMTQsIDIzMCwgOSwgMiwgMjEzLCA5MCwgOSwgMiwgMjEzLCA4OCwgOSwgMiwgMjEzLCA4OSwgCi0gICAgMjMsIDYzLCA5LCAyLCAyMTMsIDg5LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjEzLCA4OSwgMjMsIDIzOCwgNTUsIDksIDIsIAotICAgIDIxMywgODksIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjEzLCA4OSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMTMsIDg5LCAyMywgCi0gICAgMjA3LCAxODEsIDksIDIsIDIxMywgODksIDIzLCA2OCwgOSwgMiwgMjEzLCA4OSwgMjMsIDEwNiwgOTEsIDYzLCA5LCAyLCAKLSAgICAyMTMsIDg2LCA5LCAyLCAyMTMsIDg0LCA5LCAyLCAyMTMsIDU5LCA5LCAyLCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCAyMzYsIAotICAgIDI2LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjM4LCAyMjUsIDExNSwgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIxMywgMzYsIDksIDIsIDIxMywgMzEsIDksIDIsIDIxMywgMjcsIDksIDIsIDIxMywgMjYsIDksIAotICAgIDIsIDIxMywgMjMsIDksIDIsIDIxMywgOSwgOSwgMiwgMjEzLCAxMCwgMjMsIDYzLCA5LCAyLCAyMTMsIDEwLCAyMywgMjMxLCAKLSAgICA2NiwgOSwgMiwgMjEzLCAzLCA5LCAyLCAyMTMsIDQsIDIzLCA2MywgOSwgMiwgMjEzLCA0LCAyMywgMjQ4LCAyNTMsIDksIDIsIAotICAgIDIxMywgNCwgMjMsIDI0NywgMTcxLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDMsIDE3NiwgOSwgMiwgMjEzLCA0LCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODUsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyMTMsIDQsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjEzLCA0LCAyMywgMjI2LCAyMjQsIDksIDIsIDIxMywgNCwgMjMsIAotICAgIDIyMywgMjM1LCA5LCAyLCAyMTMsIDQsIDIzLCAyMTUsIDgsIDksIDIsIDIxMiwgMjUzLCA5LCAyLCAyMTIsIDI0OCwgOSwgMiwgCi0gICAgMjEyLCAyNDksIDIwOSwgMTQxLCA5LCAyLCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKLSAgICAxNjAsIDksIDIsIDIxMiwgMjQ0LCA5LCAyLCAyMTIsIDE5OSwgOSwgMiwgMjEyLCAyMDAsIDExNSwgMjMwLCAyMzksIDIxMiwgCi0gICAgMTk5LCA5LCAyLCAyMTIsIDE5NywgOSwgMiwgMjEyLCAxOTYsIDksIDIsIDIxMiwgMTYyLCA5LCAyLCAyMTIsIDE2MywgMjM3LCAKLSAgICAyMDgsIDksIDIsIDIxMiwgMTQ5LCA5LCAyLCAyMTIsIDE0NywgOSwgMiwgMjEyLCAxNDgsIDExNSwgMjEyLCAxNDgsIDIxMiwgCi0gICAgMTk3LCA5LCAyLCAyMTIsIDE0MCwgOSwgMiwgMjEyLCAxMzgsIDksIDIsIDIxMSwgMTAsIDksIDIsIDIxMSwgMTEsIDExNSwgCi0gICAgMjExLCAxMCwgOSwgMiwgMjEwLCAyMzIsIDksIDIsIDIxMCwgMjMxLCA5LCAyLCAyMTAsIDIyOSwgOSwgMiwgMjEwLCAyMjAsIAotICAgIDksIDIsIDIxMCwgMjE5LCA5LCAyLCAyMTAsIDE5MywgOSwgMiwgMjEwLCAxOTIsIDksIDIsIDIxMCwgMjIsIDksIDIsIDIxMCwgCi0gICAgMjMsIDI1MCwgNTksIDksIDIsIDIxMCwgMjMsIDIzLCAyMzcsIDMsIDksIDIsIDIxMCwgMjMsIDIzLCAyMjQsIDE1NSwgOSwgCi0gICAgMiwgMjEwLCAyMywgMjM3LCAyMDgsIDksIDIsIDIxMCwgMTAsIDksIDIsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjIyLCAKLSAgICAxMDEsIDExNSwgMjIyLCAxMDEsIDI0MywgMTU3LCAxMTUsIDI0MywgMTU2LCA5LCAyLCAyMTAsIDExLCAyMTEsIDE3NiwgOSwgCi0gICAgMiwgMjA5LCAyNTUsIDksIDIsIDE2MCwgMjMsIDI0OCwgODYsIDksIDIsIDE2MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAxNjAsIAotICAgIDIzLCAyMTMsIDQzLCA5LCAyLCAxNjAsIDIzLCAyMTIsIDE5OSwgOSwgMiwgMTYwLCAyMywgMjA3LCAxOTcsIDksIDIsIDE2MCwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDIxOCwgOSwgMiwgMjA5LCAxODcsIDksIDIsIDIwOSwgCi0gICAgMTg4LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAyLCA5LCAyLCAyMDksIDMsIDIwOSwgMTQxLCA5LCAyLCAyMDgsIDIyOSwgOSwgCi0gICAgMiwgMjA4LCAyMDYsIDksIDIsIDIwOCwgMjA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA2LCAKLSAgICA5LCAyLCAyMDgsIDIwNywgMTE1LCAyMDgsIDIwNywgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIwNywgMjAzLCA5LCAyLCAyMDcsIDE5NywgOSwgMiwgMjA3LCAxOTUsIDksIDIsIDIwNywgMTkxLCA5LCAKLSAgICAyLCAyMDcsIDE4MSwgOSwgMiwgMjA3LCAxODIsIDExNSwgMjA3LCAxODIsIDIwMiwgMTE3LCAxMTUsIDIwMiwgMTE2LCA5LCAKLSAgICAyLCA2OCwgOSwgMiwgMTA2LCAyMzcsIDIxOSwgOSwgMiwgMTA2LCAxMDYsIDY4LCA5LCAyLCAxMDYsIDExNSwgMTA2LCAyMTksIAotICAgIDE2OSwgMTE1LCAyMTksIDE2OSwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxMCwgCi0gICAgMTk0LCAxMTUsIDIxMCwgMTkzLCA5LCAyLCAxMDYsIDExNSwgMTA2LCAxMDYsIDIxNiwgNzMsIDExNSwgMTA2LCAyMTYsIDcyLCAKLSAgICA5LCAyLCAyMDcsIDQwLCA5LCAyLCAyMDcsIDM1LCA5LCAyLCAyMDcsIDI5LCA5LCAyLCAyMDcsIDMwLCAyMjgsIDE3NywgOSwgCi0gICAgMiwgMjA3LCAzMCwgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMzAsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjA3LCAzMCwgMjMsIAotICAgIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMDcsIDMwLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgMTA2LCAyMzcsIDIwOCwgCi0gICAgOSwgMiwgMjA3LCAzMCwgMjM3LCAyMDgsIDksIDIsIDIwNywgMzAsIDIxMywgMjQsIDksIDIsIDIwNywgMzAsIDIxMywgMjUsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMDcsIDI1LCA5LCAyLCAyMDcsIDYsIDksIDIsIDIwNywgNywgMjMsIDIyOCwgOTQsIDksIAotICAgIDIsIDIwNywgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDQsIDIxMiwgOSwgMiwgMjA3LCA3LCAyMywgMjEzLCA4OCwgOSwgMiwgCi0gICAgMjA3LCA3LCAyMywgNjgsIDksIDIsIDIwNywgNSwgOSwgMiwgMjA3LCAxLCA5LCAyLCAyMDcsIDIsIDIzLCAyMjksIDIzMSwgCi0gICAgOSwgMiwgMjA3LCAyLCAyMywgMTg1LCA5LCAyLCAyMDYsIDI1NSwgOSwgMiwgMjA3LCAwLCAyMzcsIDIwOCwgOSwgMiwgMjA2LCAKLSAgICAyMTAsIDksIDIsIDIwNiwgMjExLCAyNDUsIDEyNCwgMjA2LCAyMTAsIDksIDIsIDIwNiwgMjExLCAyMTMsIDI0LCA5LCAyLCAKLSAgICAyMDYsIDIwOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIDE1MiwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIAotICAgIDIwMSwgMjAxLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDI1MSwgMzksIDksIDIsIDIwNiwgMjA5LCAyMywgMTUyLCA5LCAyLCAKLSAgICAyMDYsIDIwOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAKLSAgICAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQxLCA5MSwgMjQ4LCA4NiwgOSwgMiwgCi0gICAgMjA2LCAyMDcsIDksIDIsIDIwNiwgMjA0LCA5LCAyLCAyMDYsIDIwMywgOSwgMiwgMjA2LCAxOTksIDksIDIsIDIwNiwgMjAwLCAKLSAgICAyMywgNjMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxNDIsIDksIDIsIDIwNiwgCi0gICAgMjAwLCAyMywgMjQyLCAzMSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzksIDgsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKLSAgICAyNDYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzNywgMjMwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE1MiwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzMSwgNjYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMwLCAKLSAgICAyMDksIDksIDIsIDIwNiwgMjAwLCAyMywgMjI5LCAxMDAsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMjIsIDksIDIsIAotICAgIDIwNiwgMjAwLCAyMywgMjI0LCAxMTAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIxMywgCi0gICAgNDMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEyLCAxNDcsIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyMDMsIDksIDIsIAotICAgIDIwNiwgMjAwLCAyMywgMTA2LCA5MSwgMjM3LCAyMTksIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTcsIDksIDIsIDIwNiwgMTk4LCAyMywgNjgsIDksIDIsIDIwNiwgCi0gICAgMTg2LCA5LCAyLCAyMDYsIDE4NywgMjMsIDYzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIyOCwgMjA5LCA5LCAyLCAyMDYsIAotICAgIDE4NywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDYsIDE4MiwgOSwgMiwgCi0gICAgMjA2LCAxODUsIDksIDIsIDIwNiwgMTgzLCA5LCAyLCAyMDYsIDE3OSwgOSwgMiwgMjA2LCAxNjcsIDksIDIsIDIwNiwgMTY4LCAKLSAgICAyMywgMjI5LCAyMzEsIDksIDIsIDIwNiwgMTY2LCA5LCAyLCAyMDIsIDExNiwgOSwgMiwgMjAyLCAxMTcsIDIwOSwgMTQxLCAKLSAgICA5LCAyLCAyMDIsIDExNywgMTAzLCAyMywgMjI4LCAxODMsIDksIDIsIDIwMiwgMTEyLCA5LCAyLCAyMDIsIDEwNSwgOSwgMiwgCi0gICAgMjAyLCA5MSwgOSwgMiwgMjAyLCAzOSwgOSwgMiwgMjAyLCA0MCwgMTE1LCAyMDIsIDM5LCA5LCAyLCAyMDIsIDM4LCA5LCAyLCAKLSAgICAyMDIsIDM2LCA5LCAyLCAyMDIsIDM3LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjAyLCAzMSwgOSwgMiwgMjAyLCAyMiwgCi0gICAgOSwgMiwgMjAyLCA2LCA5LCAyLCAyMDIsIDQsIDksIDIsIDIwMiwgNSwgMjMsIDYzLCA5LCAyLCAyMDIsIDMsIDksIDIsIAotICAgIDIwMiwgMiwgOSwgMiwgMjI5LCAyNTQsIDI0MSwgMTE5LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyMSwgNDAsIDksIDIsIDI1MSwgCi0gICAgMTUwLCAyMywgNjMsIDksIDIsIDI1MCwgMjQ0LCAyMywgMjI4LCAxOTgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgCi0gICAgMjA3LCA0MSwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjAyLCA5LCAyLCAyNDMsIDE1NywgOTEsIDIxMiwgMTk5LCA5LCAyLCAKLSAgICAyNDIsIDQxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMiwgOTEsIDIzMCwgMTMsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjUwLCA3MywgOSwgMiwgMjM4LCAxODksIDksIDIsIDIzOCwgNzEsIDksIDIsIDIzNiwgMywgOSwgMiwgMjMwLCA0NCwgCi0gICAgMjMsIDI1MCwgMjAwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTUsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjMwLCA0NCwgMjMsIDE4NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgCi0gICAgMTkyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyMDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDYsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIzOCwgODEsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIAotICAgIDIzLCAyNDEsIDUsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAyMjQsIDIyNywgOSwgCi0gICAgMiwgMjIzLCAxOTgsIDIzLCAyMDIsIDExNiwgOSwgMiwgMjIzLCAxMDgsIDksIDIsIDIyMiwgNjgsIDksIDIsIDIyMiwgNjcsIAotICAgIDksIDIsIDIyMiwgNjYsIDIzLCAyNDgsIDI1MywgOSwgMiwgMjIyLCA2NiwgMjMsIDIzOCwgODEsIDksIDIsIDIyMSwgNTcsIAotICAgIDIxNSwgMTk4LCAyMjIsIDU5LCAyNDQsIDU0LCA5LCAyLCAyMTgsIDIyMywgMjUwLCA1OSwgOSwgMiwgMjE4LCAxMTMsIDksIAotICAgIDIsIDIxNSwgMjMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAxLCA5LCAyLCAyMDcsIDcsIDIzLCAyMjUsIAotICAgIDIwLCA5LCAyLCAxMDYsIDY4LCA5LCAxNDEsIDIsIDEyMCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzUsIDksIAotICAgIDE0MSwgMiwgMjM5LCAxNDcsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjEyLCAKLSAgICA4OCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjUwLCA3NSwgCi0gICAgOSwgMTQxLCAyLCAyMjIsIDY0LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAKLSAgICAxNDcsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyNDMsIAotICAgIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDI0MywgMTU2LCA5LCAKLSAgICAxNDEsIDIsIDIyMiwgNjQsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCA2OCwgOSwgMTQxLCAyLCAyMzksIDIzMywgCi0gICAgNjgsIDksIDE0MSwgMiwgMjEyLCA4OCwgNjgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDY4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAKLSAgICA2OCwgOSwgMTQxLCAyLCAyMjIsIDY0LCA2OCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDEyMCwgCi0gICAgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTI2LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjQsIDksIAotICAgIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMiwgODgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMywgCi0gICAgMTEyLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjM4LCAKLSAgICAxNjQsIDksIDE0MSwgMiwgMTE4LCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAxMjAsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyNiwgCi0gICAgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMzgsIDE2MSwgCi0gICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKLSAgICA2MCwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTksIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCi0gICAgNTksIDksIDE0MSwgMiwgMjEyLCA4OCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjEzLCA1OSwgOSwgMTQxLCAyLCAKLSAgICAyNDEsIDE0MywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDExOCwgMjEzLCA1NCwgCi0gICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU0LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKLSAgICA1NSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTQsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCi0gICAgNTQsIDksIDE0MSwgMiwgMjEzLCA2MCwgMjMsIDIzOCwgMjQ3LCA5MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjEzLCA2MCwgCi0gICAgMjMsIDIzOCwgMjQ3LCA5MSwgMjI0LCAxMTAsIDksIDE0MSwgMiwgMTE4LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIAotICAgIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyNiwgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NywgMjA2LCA2OSwgCi0gICAgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDcsIDE1NiwgOSwgMTQxLCAKLSAgICAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAyNDEsIDYsIDksIDE0MSwgMiwgMTI2LCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgMjQxLCAzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTgsIDksIDE0MSwgMiwgMjM5LCAKLSAgICAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExNiwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIAotICAgIDIyNywgMTE5LCA2MywgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE5LCAyNDksIDI1NSwgCi0gICAgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMDYsIDY5LCAyMzksIDE1OSwgMjUwLCA3MSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCAKLSAgICA2OSwgMjM5LCAxNTksIDIzMSwgNTgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDYwLCAKLSAgICA2MywgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIDI0OSwgMjU1LCA5LCAxNDEsIDIsIAotICAgIDI0MSwgMTQzLCAyMDYsIDY5LCAyMzksIDE1OSwgMjA2LCAxODEsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgCi0gICAgMTU5LCAyMDYsIDE4MCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NCwgOSwgMTQxLCAyLCAKLSAgICAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3MywgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIAotICAgIDE1OSwgMjMxLCA3MiwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NSwgNjMsIDksIDE0MSwgCi0gICAgMiwgMTIwLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIAotICAgIDIzOSwgMTQ3LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NiwgMjA5LCAxNDEsIDksIAotICAgIDE0MSwgMiwgMjEyLCA4OCwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMTE4LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAKLSAgICAxMjAsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIDEyNiwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQwLCAKLSAgICA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgCi0gICAgMjQwLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjIyLCA3NywgOSwgCi0gICAgMTQxLCAyLCAyMjIsIDc4LCA5LCAxNDEsIDIsIDExOCwgMjQxLCAyLCA5LCAxNDEsIDIsIDEyMCwgMjQxLCAyLCA5LCAxNDEsIAotICAgIDIsIDExOCwgMjA5LCA2MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAKLSAgICAyMzksIDIzMywgMjEyLCA3NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTE4LCAyMDksIDYxLCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgNjMsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyMDYsIDY5LCAyMzksIDE1OSwgNjMsIDksIDE0MSwgMiwgMTE4LCAyNDEsIAotICAgIDEzOSwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMTgsIDIxNywgNTYsIDI1MCwgNzUsIDksIDE0MSwgMiwgMzgsIDI1MCwgNjIsIAotICAgIDExOCwgMjEyLCA3OCwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgMTE4LCAyMTcsIDU1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCAKLSAgICA1NiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMTE4LCAxNjIsIDIzNywgMjAyLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAxMTgsIAotICAgIDIwOSwgNjAsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDEyMCwgMjA5LCA1NywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjM5LCAKLSAgICAxNTMsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDI0MCwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDEwNiwgMjA2LCA2OSwgMTgsIAotICAgIDksIDE0MSwgMiwgMjM5LCAyMzMsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjEyLCA4OCwgMTA2LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMTA2LCAyMDYsIAotICAgIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAxMDYsIDIwNiwgNjksIDE4LCA5LCAyMTcsIDE3OSwgMiwgMzgsIDI1MCwgCi0gICAgNjIsIDIwMywgMjM4LCAyNDMsIDE0MSwgOSwgMjE3LCAxNzksIDIsIDgwLCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIAotICAgIDI0MywgMjI4LCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIDI0MywgMjI4LCAyMDgsIDgxLCA5LCAyMTcsIDE3OSwgMiwgCi0gICAgMjQzLCAyMjgsIDIxNywgNjEsIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MSwgMjA5LCAxNDEsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMywgMjEyLCAxOTcsIDksIDIsIDI1MSwgMTIzLCAyMywgMjQxLCA0LCA5LCAyLCAyNDksIDE2LCAyMywgMjQzLCAxNTcsIAotICAgIDIwOSwgMTQxLCA5LCAyLCAyNDksIDQsIDIzLCAyNTEsIDE0OSwgOSwgMiwgMjQ5LCA0LCAyMywgMjIyLCAxMDAsIDksIDIsIAotICAgIDI0OSwgNCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyNDcsIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjMsIDIyMywgMTA5LCA5LCAyLCAKLSAgICAyNDQsIDIxMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNDQsIDIwNCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDMsIDE4OSwgMjMsIAotICAgIDIzMSwgODUsIDksIDIsIDI0MywgMTg5LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyNDMsIDE4NywgMjMsIDIwNywgMjksIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyNTAsIDIwMCwgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgNzUsIDksIDIsIDI0MiwgMzgsIAotICAgIDIzLCAyNTAsIDc2LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyNDIsIAotICAgIDM4LCAyMywgMjQyLCAzMSwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MSwgMjIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzksIDgsIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDgxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM4LCA2NCwgMjM3LCAyMDgsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMTUyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM3LCAzLCAKLSAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjksIDIzMSwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCAxNzcsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjgsIDE3OCwgOTEsIDIyOSwgMjMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCA4MiwgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyOCwgMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDI5LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjYsIDIyOCwgOTEsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjUsIDc5LCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI0LCAyMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjE4LCAxNjcsIDksIDIsIDI0MiwgMzgsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjEyLCAxNjMsIDIzNywgMjA4LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIAotICAgIDIxOSwgOTYsIDksIDIsIDI0MSwgMjMsIDIwMywgMTk2LCA5LCAyLCAyNDEsIDUsIDI0NSwgMTI0LCAyNDEsIDQsIDksIDIsIAotICAgIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzcsIDMsIDksIAotICAgIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgCi0gICAgMjI4LCAxMTMsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIAotICAgIDIzLCAyMjUsIDIwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIyNCwgMjI4LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAKLSAgICAyNSwgMjMsIDIxMSwgMTAsIDksIDIsIDI0MCwgMTgwLCAyMywgMjExLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ5LCAzLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgMzgsIDIzLCAyMzEsIAotICAgIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyNDEsIDI1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzksIDgsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjQzLCAKLSAgICAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjIyLCAyNDAsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgCi0gICAgMTYwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDIyOCwgMjgsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM5LCA3LCAyMywgMjI2LCAKLSAgICAyMjcsIDksIDIsIDIzOSwgNywgMjMsIDIyMywgMTk5LCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjIyLCAyNDEsIDkxLCAyNDEsIDE5MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIyLCAyNDEsIDkxLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDMsIDksIDIsIDIzOSwgNywgMjMsIDIwMiwgMjIsIDksIDIsIDIzOSwgMiwgMjE1LCAKLSAgICAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIzOCwgMTYzLCAyMywgNjgsIDksIDIsIDIzOCwgNTYsIDIzLCAyMzgsIAotICAgIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAKLSAgICAyMjAsIDkxLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzNywgMTYwLCAyMDksIDE0MiwgMjM3LCAyMDgsIDksIDIsIAotICAgIDIzNywgNCwgMjMsIDI1MCwgNzYsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0NywgCi0gICAgMTkzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTczLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjA2LCAyMTAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDIsIDcsIDExNSwgMjAyLCA2LCA5LCAyLCAyMjgsIDgzLCAKLSAgICA5LCAyLCAyMjgsIDgxLCA5LCAyLCAyMjgsIDgwLCA5LCAyLCAyMjgsIDc5LCA5LCAyLCAyMjgsIDc4LCA5LCAyLCAyMjgsIAotICAgIDc3LCA5LCAyLCAyMjgsIDc2LCA5LCAyLCAyMjgsIDc1LCAxMTUsIDIyOCwgNzUsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDc0LCAKLSAgICA5LCAyLCAyMjgsIDczLCAxMTUsIDIyOCwgNzIsIDksIDIsIDIyOCwgNzEsIDksIDIsIDIyOCwgNzAsIDksIDIsIDIyOCwgNjksIAotICAgIDksIDIsIDIyOCwgNjgsIDksIDIsIDIyOCwgNjcsIDksIDIsIDIyOCwgNjYsIDksIDIsIDIyOCwgNjUsIDksIDIsIDIyOCwgCi0gICAgNjQsIDksIDIsIDIyOCwgNjMsIDksIDIsIDIyOCwgNjIsIDksIDIsIDIyOCwgNjEsIDksIDIsIDIyOCwgNjAsIDksIDIsIAotICAgIDIyOCwgNTksIDksIDIsIDIyOCwgNTgsIDksIDIsIDIyOCwgNTcsIDksIDIsIDIyOCwgNTYsIDksIDIsIDIyOCwgNTUsIDksIAotICAgIDIsIDIyOCwgNTQsIDksIDIsIDIyOCwgNTIsIDksIDIsIDIyOCwgNTMsIDIzLCAyMzcsIDIzMCwgOSwgMiwgMjI4LCA1MywgCi0gICAgMjMsIDIzMSwgODUsIDksIDIsIDIyOCwgNTMsIDIzLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAKLSAgICAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIDUzLCAyMywgMjA3LCA0MSwgOTEsIDI0OSwgCi0gICAgMzIsIDksIDIsIDIyOCwgNTEsIDksIDIsIDIyOCwgNTAsIDksIDIsIDIyOCwgNDksIDksIDIsIDIyOCwgNDgsIDksIDIsIAotICAgIDIyOCwgNDcsIDksIDIsIDIyOCwgNDYsIDksIDIsIDIyOCwgNDUsIDksIDIsIDIyOCwgNDQsIDksIDIsIDIyOCwgNDMsIDksIAotICAgIDIsIDIyOCwgNDIsIDksIDIsIDIyOCwgNDAsIDksIDIsIDIyOCwgNDEsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDQxLCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjI4LCA0MSwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA0MSwgCi0gICAgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjI4LCAxMTMsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDksIDIxOCwgCi0gICAgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMTg3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjA3LCA0MCwgOSwgMiwgMjI4LCA0MSwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgNDEsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzOSwgOSwgMiwgMjI4LCAzNywgCi0gICAgOSwgMiwgMjI4LCAzOCwgMjMsIDI0MiwgNDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzksIDgsIDksIDIsIDIyOCwgMzgsIDIzLCAKLSAgICAyMzEsIDg1LCA5LCAyLCAyMjgsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgMzgsIDIzLCAyMjIsIAotICAgIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgCi0gICAgMzgsIDIzLCAyMTMsIDI4LCA5MSwgMjI5LCAxMDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDM4LCAKLSAgICAyMywgMjA2LCAxOTcsIDksIDIsIDIyOCwgMzUsIDksIDIsIDIyOCwgMzQsIDksIDIsIDIyNiwgMjM4LCAyMzcsIDIwOSwgMjMsIAotICAgIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQzLCAxNTYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCAxNDAsIDksIAotICAgIDIsIDIyNiwgMjM4LCAyMywgMjE5LCA5NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIAotICAgIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjQsIDE1NiwgOTEsIDIwMiwgMTE1LCA5LCAKLSAgICAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIAotICAgIDIzLCAyMzAsIDEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjQzLCAxODksIDIzNywgMjA4LCA5LCAyLCAyMjIsIDY2LCAyMywgCi0gICAgMjM4LCA1NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAzLCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjI5LCAxNzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjgsIDc4LCA5LCAyLCAyMjIsIDY2LCAyMywgCi0gICAgMjI1LCA3OSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk2LCA5LCAyLCAyMjIsIDY2LCAyMywgNjgsIAotICAgIDksIDIsIDIyMiwgNjYsIDIzLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMzcsIDIwOSwgMjMsIDE1MiwgOSwgMiwgMjE1LCAyMywgMjMsIDI0MSwgOTIsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyMTMsIDQ0LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMTMsIDg3LCAKLSAgICAyMDksIDE0MSwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCA5MSwgMjM2LCAyMSwgOSwgMiwgCi0gICAgMjEzLCA0NCwgOTEsIDIyMywgODYsIDksIDIsIDIxMywgNDQsIDkxLCAyMTQsIDIzMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAKLSAgICAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIDIxMiwgMTk4LCA5MSwgMjQxLCAxOTEsIDIzLCAyNTAsIDIzMSwgOSwgMiwgCi0gICAgMjEyLCAxNjMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA5LCAyNDMsIDkxLCAyMTUsIDIyLCA5LCAyLCAyMDcsIDE5MiwgMjMsIAotICAgIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjA3LCAxOTIsIDIzLCAxMjYsIDI0MywgMTU2LCA5LCAyLCAyMDYsIDIwOSwgCi0gICAgMjMwLCAyMzgsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNDQsIDE1MywgOSwgCi0gICAgMiwgMjA2LCAyMDAsIDIzLCAyMjgsIDM2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyNiwgMjM2LCA5LCAyLCAyMDIsIDExNSwgCi0gICAgOSwgMiwgMjAyLCA3LCAxMTUsIDIwMiwgNywgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMDIsIDUsIDIzLCAxMjYsIDI0MywgMTU3LCAKLSAgICAyMDksIDE0MSwgMTQsIDcsIDI1NSwgMTgsIDE0LCA3LCAyNTUsIDE3LCAxNCwgNywgMjU1LCAxNiwgMTQsIDcsIDI1NSwgMTUsIAotICAgIDE0LCA3LCAyNTUsIDE0LCAxNCwgNywgMjU1LCAxMywgMTQsIDcsIDI1NSwgMTIsIDE0LCA3LCAyNTUsIDExLCAxNCwgNywgCi0gICAgMjU1LCAxMCwgMTQsIDcsIDI1NSwgOSwgMTQsIDcsIDI1NSwgOCwgMTQsIDcsIDI1NSwgNywgMTQsIDcsIDI1NSwgNiwgMTQsIAotICAgIDcsIDI1NSwgNCwgMTQsIDcsIDI1NSwgMywgMTQsIDcsIDI1NSwgMiwgMTQsIDcsIDI1NSwgMSwgMTQsIDcsIDI1NSwgMCwgCi0gICAgMTQsIDcsIDI1NCwgMjU1LCAxNCwgNywgMjU0LCAyNTQsIDE0LCA3LCAyNTQsIDI1MywgMTQsIDcsIDI1NCwgMjUyLCAxNCwgCi0gICAgNywgMjU0LCAyNTEsIDE0LCA3LCAyNTQsIDI1MCwgMTQsIDcsIDI1NCwgMjQ5LCAxNCwgNywgMjU0LCAyNDgsIDE0LCA3LCAKLSAgICAyNTQsIDI0NywgMTQsIDcsIDI1NCwgMjQ2LCAxNCwgNywgMjU0LCAyNDUsIDE0LCA3LCAyNTQsIDI0NCwgMTQsIDcsIDI1NCwgCi0gICAgMjQzLCAxNCwgNywgMjU0LCAyNDEsIDE0LCA3LCAyNTQsIDI0MCwgMTQsIDcsIDI1NCwgMjM4LCAxNCwgNywgMjU0LCAyMzcsIAotICAgIDE0LCA3LCAyNTQsIDIzNiwgMTQsIDcsIDI1NCwgMjM1LCAxNCwgNywgMjU0LCAyMzQsIDE0LCA3LCAyNTQsIDIzMywgMTQsIAotICAgIDcsIDI1NCwgMjMyLCAxNCwgNywgMjU0LCAyMzEsIDE0LCA3LCAyNTQsIDIzMCwgMTQsIDcsIDI1NCwgMjI5LCAxNCwgNywgCi0gICAgMjU0LCAyMjgsIDE0LCA3LCAyNTQsIDIyNywgMTQsIDcsIDI1NCwgMjI1LCAxNCwgNywgMjU0LCAyMjQsIDE0LCA3LCAyNTQsIAotICAgIDIyMywgMTQsIDcsIDI1NCwgMjIxLCAxNCwgNywgMjU0LCAyMjAsIDE0LCA3LCAyNTQsIDIxOSwgMTQsIDcsIDI1NCwgMjE4LCAKLSAgICAxNCwgNywgMjU0LCAyMTcsIDE0LCA3LCAyNTQsIDIxNiwgMTQsIDcsIDI1NCwgMjE1LCAxNCwgNywgMjU0LCAyMTQsIDE0LCAKLSAgICA3LCAyNTQsIDIxMSwgMTQsIDcsIDI1NCwgMjEwLCAxNCwgNywgMjU0LCAyMDksIDE0LCA3LCAyNTQsIDIwOCwgMTQsIDcsIAotICAgIDI1NCwgMjA3LCAxNCwgNywgMjU0LCAyMDYsIDE0LCA3LCAyNTQsIDIwNSwgMTQsIDcsIDI1NCwgMjA0LCAxNCwgNywgMjU0LCAKLSAgICAyMDMsIDE0LCA3LCAyNTQsIDIwMiwgMTQsIDcsIDI1NCwgMjAxLCAxNCwgNywgMjU0LCAyMDAsIDE0LCA3LCAyNTQsIDE5OSwgCi0gICAgMTQsIDcsIDI1NCwgMTk4LCAxNCwgNywgMjU0LCAxOTcsIDE0LCA3LCAyNTQsIDE5NiwgMTQsIDcsIDI1NCwgMTk1LCAxNCwgCi0gICAgNywgMjU0LCAxOTQsIDE0LCA3LCAyNTQsIDE5MywgMTQsIDcsIDI1NCwgMTkyLCAxNCwgNywgMjU0LCAxODgsIDE0LCA3LCAKLSAgICAyNTQsIDE4NywgMTQsIDcsIDI1NCwgMTg2LCAxNCwgNywgMjU0LCAxODUsIDE0LCA3LCAyNDksIDI1MywgMTQsIDcsIDI0OSwgCi0gICAgMjUxLCAxNCwgNywgMjQ5LCAyNDksIDE0LCA3LCAyNDksIDI0NywgMTQsIDcsIDI0OSwgMjQ1LCAxNCwgNywgMjQ5LCAyNDQsIAotICAgIDE0LCA3LCAyNDksIDI0MiwgMTQsIDcsIDI0OSwgMjQwLCAxNCwgNywgMjQ5LCAyMzgsIDE0LCA3LCAyNDksIDIzNiwgMTQsIAotICAgIDcsIDI0NywgMTIxLCAxNCwgNywgMjQ3LCAxMjAsIDE0LCA3LCAyNDcsIDExOSwgMTQsIDcsIDI0NywgMTE4LCAxNCwgNywgCi0gICAgMjQ3LCAxMTcsIDE0LCA3LCAyNDcsIDExNiwgMTQsIDcsIDI0NywgMTE1LCAxNCwgNywgMjQ3LCAxMTQsIDE0LCA3LCAyNDcsIAotICAgIDExMywgMTQsIDcsIDI0NywgMTEyLCAxNCwgNywgMjQ3LCAxMTEsIDE0LCA3LCAyNDcsIDExMCwgMTQsIDcsIDI0NywgMTA5LCAKLSAgICAxNCwgNywgMjQ3LCAxMDgsIDE0LCA3LCAyNDcsIDEwNywgMTQsIDcsIDI0NywgMTA2LCAxNCwgNywgMjQ3LCAxMDUsIDE0LCAKLSAgICA3LCAyNDcsIDEwNCwgMTQsIDcsIDI0NywgMTAzLCAxNCwgNywgMjQ3LCAxMDIsIDE0LCA3LCAyNDcsIDEwMSwgMTQsIDcsIAotICAgIDI0NywgMTAwLCAxNCwgNywgMjQ3LCA5OSwgMTQsIDcsIDI0NywgOTgsIDE0LCA3LCAyNDcsIDk3LCAxNCwgNywgMjQ3LCA5NiwgCi0gICAgMTQsIDcsIDI0NywgOTUsIDE0LCA3LCAyNDcsIDk0LCAxNCwgNywgMjQ1LCA1MCwgMTQsIDcsIDI0NSwgNDksIDE0LCA3LCAKLSAgICAyNDUsIDQ4LCAxNCwgNywgMjQ1LCA0NywgMTQsIDcsIDI0NSwgNDYsIDE0LCA3LCAyNDUsIDQ1LCAxNCwgNywgMjQ1LCA0NCwgCi0gICAgMTQsIDcsIDI0NSwgNDMsIDE0LCA3LCAyNDUsIDQyLCAxNCwgNywgMjQ1LCA0MSwgMTQsIDcsIDI0NSwgNDAsIDE0LCA3LCAKLSAgICAyNDUsIDM5LCAxNCwgNywgMjQ1LCAzOCwgMTQsIDcsIDI0NSwgMzcsIDE0LCA3LCAyNDUsIDM2LCAxNCwgNywgMjQ1LCAzNSwgCi0gICAgMTQsIDcsIDI0NSwgMzQsIDE0LCA3LCAyNDUsIDMzLCAxNCwgNywgMjQ1LCAzMiwgMTQsIDcsIDI0NSwgMzEsIDE0LCA3LCAKLSAgICAyNDUsIDMwLCAxNCwgNywgMjQ1LCAyOSwgMTQsIDcsIDI0NSwgMjgsIDE0LCA3LCAyNDUsIDI3LCAxNCwgNywgMjQ1LCAyNiwgCi0gICAgMTQsIDcsIDI0NSwgMjUsIDE0LCA3LCAyNDUsIDI0LCAxNCwgNywgMjQ1LCAyMywgMTQsIDcsIDI0NSwgMjIsIDE0LCA3LCAKLSAgICAyNDUsIDIxLCAxNCwgNywgMjQ1LCAyMCwgMTQsIDcsIDI0NSwgMTksIDE0LCA3LCAyNDUsIDE4LCAxNCwgNywgMjQ1LCAxNywgCi0gICAgMTQsIDcsIDI0NSwgMTYsIDE0LCA3LCAyNDUsIDE1LCAxNCwgNywgMjQ1LCAxNCwgMTQsIDcsIDI0NSwgMTMsIDE0LCA3LCAKLSAgICAyNDUsIDEyLCAxNCwgNywgMjQ1LCAxMSwgMTQsIDcsIDI0NSwgMTAsIDE0LCA3LCAyNDUsIDksIDE0LCA3LCAyNDUsIDgsIAotICAgIDE0LCA3LCAyNDUsIDcsIDE0LCA3LCAyNDUsIDYsIDE0LCA3LCAyNDUsIDUsIDE0LCA3LCAyNDUsIDQsIDE0LCA3LCAyNDUsIAotICAgIDMsIDE0LCA3LCAyNDUsIDIsIDE0LCA3LCAyNDUsIDEsIDE0LCA3LCAyNDUsIDAsIDE0LCA3LCAyNDQsIDI1NSwgMTQsIDcsIAotICAgIDI0NCwgMjU0LCAxNCwgNywgMjQ0LCAyNTMsIDE0LCA3LCAyNDQsIDI1MiwgMTQsIDcsIDI0NCwgMjUxLCAxNCwgNywgMjQ0LCAKLSAgICAyNTAsIDE0LCA3LCAyNDQsIDI0OSwgMTQsIDcsIDI0NCwgMjQ4LCAxNCwgNywgMjQ0LCAyNDcsIDE0LCA3LCAyNDQsIDI0NiwgCi0gICAgMTQsIDcsIDI0NCwgMjQ1LCAxNCwgNywgMjQ0LCAyNDQsIDE0LCA3LCAyNDQsIDI0MywgMTQsIDcsIDI0NCwgMjQyLCAxNCwgCi0gICAgNywgMjQ0LCAyNDEsIDE0LCA3LCAyNDQsIDI0MCwgMTQsIDcsIDI0NCwgMjM5LCAxNCwgNywgMjQ0LCAyMzgsIDE0LCA3LCAKLSAgICAyNDQsIDIzNywgMTQsIDcsIDI0NCwgMjM2LCAxNCwgNywgMjQ0LCAyMzUsIDE0LCA3LCAyNDQsIDIzNCwgMTQsIDcsIDI0NCwgCi0gICAgMjMzLCAxNCwgNywgMjQ0LCAyMzIsIDE0LCA3LCAyNDQsIDIzMSwgMTQsIDcsIDI0NCwgMjMwLCAxNCwgNywgMjQ0LCAyMjksIAotICAgIDE0LCA3LCAyNDQsIDIyOCwgMTQsIDcsIDI0NCwgMjI3LCAxNCwgNywgMjQ0LCAyMjYsIDE0LCA3LCAyNDQsIDIyNSwgMTQsIAotICAgIDcsIDI0NCwgMjI0LCAxNCwgNywgMjQ0LCAyMjMsIDE0LCA3LCAyNDQsIDIyMiwgMTQsIDcsIDI0NCwgMjIxLCAxNCwgNywgCi0gICAgMjQ0LCAyMjAsIDE0LCA3LCAyNDQsIDIxOSwgMTQsIDcsIDI0NCwgMjE4LCAxNCwgNywgMjQ0LCAyMTcsIDE0LCA3LCAyNDQsIAotICAgIDIxNiwgMTQsIDcsIDI0NCwgMjE1LCAxNCwgNywgMjQxLCAyMzUsIDE0LCA3LCAyNDEsIDIzNCwgMTQsIDcsIDI0MSwgMjMzLCAKLSAgICAxNCwgNywgMjQxLCAyMzIsIDE0LCA3LCAyNDEsIDIzMSwgMTQsIDcsIDI0MSwgMjMwLCAxNCwgNywgMjQxLCAyMjksIDE0LCAKLSAgICA3LCAyNDEsIDIyOCwgMTQsIDcsIDI0MSwgMjI3LCAxNCwgNywgMjQxLCAyMjYsIDE0LCA3LCAyNDEsIDIyNSwgMTQsIDcsIAotICAgIDI0MSwgMjI0LCAxNCwgNywgMjQxLCAyMjMsIDE0LCA3LCAyNDEsIDIyMiwgMTQsIDcsIDI0MSwgMjIxLCAxNCwgNywgMjQxLCAKLSAgICAyMjAsIDE0LCA3LCAyNDEsIDIxOSwgMTQsIDcsIDI0MSwgMjE4LCAxNCwgNywgMjQxLCAyMTcsIDE0LCA3LCAyNDEsIDIxNiwgCi0gICAgMTQsIDcsIDI0MSwgMjE1LCAxNCwgNywgMjQxLCAyMTQsIDE0LCA3LCAyNDEsIDIxMywgMTQsIDcsIDI0MSwgMjEyLCAxNCwgCi0gICAgNywgMjQxLCAyMTEsIDE0LCA3LCAyNDEsIDIxMCwgMTQsIDcsIDI0MSwgMjA5LCAxNCwgNywgMjQxLCAyMDgsIDE0LCA3LCAKLSAgICAyNDEsIDIwNywgMTQsIDcsIDI0MSwgMjA2LCAxNCwgNywgMjQxLCAyMDUsIDE0LCA3LCAyNDEsIDIwNCwgMTQsIDcsIDI0MSwgCi0gICAgMjAzLCAxNCwgNywgMjQxLCAyMDIsIDE0LCA3LCAyNDEsIDIwMSwgMTQsIDcsIDI0MSwgMjAwLCAxNCwgNywgMjQxLCAxOTksIAotICAgIDE0LCA3LCAyNDEsIDE5OCwgMTQsIDcsIDI0MSwgMTk3LCAxNCwgNywgMjQxLCAxOTYsIDE0LCA3LCAyNDEsIDE5NSwgMTQsIAotICAgIDcsIDI0MSwgMTk0LCAxNCwgNywgMjQxLCAxOTMsIDE0LCA3LCAyNDEsIDE5MiwgMTQsIDcsIDI0MCwgMTczLCAxNCwgNywgCi0gICAgMjQwLCAxNzIsIDE0LCA3LCAyNDAsIDE3MSwgMTQsIDcsIDI0MCwgMTcwLCAxNCwgNywgMjQwLCAxNjksIDE0LCA3LCAyNDAsIAotICAgIDE2OCwgMTQsIDcsIDI0MCwgMTY3LCAxNCwgNywgMjQwLCAxNjYsIDE0LCA3LCAyNDAsIDE2NSwgMTQsIDcsIDI0MCwgMTY0LCAKLSAgICAxNCwgNywgMjQwLCAxNjMsIDE0LCA3LCAyNDAsIDE2MiwgMTQsIDcsIDI0MCwgMTYxLCAxNCwgNywgMjQwLCAxNjAsIDE0LCAKLSAgICA3LCAyNDAsIDE1OSwgMTQsIDcsIDI0MCwgMTU4LCAxNCwgNywgMjQwLCAxNTcsIDE0LCA3LCAyNDAsIDE1NiwgMTQsIDcsIAotICAgIDI0MCwgMTU1LCAxNCwgNywgMjQwLCAxNTQsIDE0LCA3LCAyNDAsIDE1MywgMTQsIDcsIDI0MCwgMTUyLCAxNCwgNywgMjQwLCAKLSAgICAxNTEsIDE0LCA3LCAyNDAsIDE1MCwgMTQsIDcsIDI0MCwgMTQ5LCAxNCwgNywgMjQwLCAxNDgsIDE0LCA3LCAyNDAsIDE0NywgCi0gICAgMTQsIDcsIDI0MCwgMTQ2LCAxNCwgNywgMjQwLCAxNDUsIDE0LCA3LCAyNDAsIDE0NCwgMTQsIDcsIDI0MCwgMTQzLCAxNCwgCi0gICAgNywgMjQwLCAxNDIsIDE0LCA3LCAyNDAsIDE0MSwgMTQsIDcsIDI0MCwgMTQwLCAxNCwgNywgMjQwLCAxMzksIDE0LCA3LCAKLSAgICAyNDAsIDEzOCwgMTQsIDcsIDI0MCwgMTM3LCAxNCwgNywgMjQwLCAxMzYsIDE0LCA3LCAyNDAsIDEzNSwgMTQsIDcsIDI0MCwgCi0gICAgMTM0LCAxNCwgNywgMjQwLCAxMzMsIDE0LCA3LCAyNDAsIDEzMiwgMTQsIDcsIDI0MCwgMTMxLCAxNCwgNywgMjQwLCAxMzAsIAotICAgIDE0LCA3LCAyNDAsIDEyOSwgMTQsIDcsIDI0MCwgMTI4LCAxNCwgNywgMjQwLCAxMjcsIDE0LCA3LCAyNDAsIDEyNiwgMTQsIAotICAgIDcsIDI0MCwgMTI1LCAxNCwgNywgMjQwLCAxMjQsIDE0LCA3LCAyNDAsIDEyMywgMTQsIDcsIDI0MCwgMTIyLCAxNCwgNywgCi0gICAgMjQwLCAxMjEsIDE0LCA3LCAyNDAsIDEyMCwgMTQsIDcsIDI0MCwgMTE5LCAxNCwgNywgMjQwLCAxMTgsIDE0LCA3LCAyNDAsIAotICAgIDExNywgMTQsIDcsIDI0MCwgMTE2LCAxNCwgNywgMjQwLCAxMTUsIDE0LCA3LCAyNDAsIDExNCwgMTQsIDcsIDI0MCwgMTEzLCAKLSAgICAxNCwgNywgMjQwLCAxMTIsIDE0LCA3LCAyNDAsIDExMSwgMTQsIDcsIDI0MCwgMTEwLCAxNCwgNywgMjQwLCAxMDksIDE0LCAKLSAgICA3LCAyMzksIDc0LCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgMjM5LCAKLSAgICA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIDE0LCAKLSAgICA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgMjM5LCAKLSAgICA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIDE0LCAKLSAgICA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgMjM5LCAKLSAgICA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIDE0LCAKLSAgICA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgMjM5LCAKLSAgICA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIDE0LCAKLSAgICA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgMjM5LCAKLSAgICAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIDE0LCAKLSAgICA3LCAyMzksIDI5LCAxNCwgNywgMjM5LCAyOCwgMTQsIDcsIDIzOSwgMjcsIDE0LCA3LCAyMzksIDI2LCAxNCwgNywgMjM5LCAKLSAgICAyNSwgMTQsIDcsIDIzOSwgMjQsIDE0LCA3LCAyMzksIDIzLCAxNCwgNywgMjM5LCAyMiwgMTQsIDcsIDIzOSwgMjEsIDE0LCAKLSAgICA3LCAyMzksIDIwLCAxNCwgNywgMjM5LCAxOSwgMTQsIDcsIDIzOSwgMTgsIDE0LCA3LCAyMzksIDE3LCAxNCwgNywgMjM5LCAKLSAgICAxNiwgMTQsIDcsIDIzOSwgMTUsIDE0LCA3LCAyMzksIDE0LCAxNCwgNywgMjM5LCAxMywgMTQsIDcsIDIzOSwgMTIsIDE0LCAKLSAgICA3LCAyMzksIDExLCAxNCwgNywgMjM3LCAxNjksIDE0LCA3LCAyMzcsIDE2OCwgMTQsIDcsIDIzNywgMTY3LCAxNCwgNywgCi0gICAgMjM3LCAxNjYsIDE0LCA3LCAyMzcsIDE2NSwgMTQsIDcsIDIzNywgMTY0LCAxNCwgNywgMjM3LCAxNjMsIDE0LCA3LCAyMzcsIAotICAgIDE2MiwgMTQsIDcsIDIzNywgMTYxLCAxNCwgNywgMjM1LCAxOTAsIDE0LCA3LCAyMzUsIDE4OSwgMTQsIDcsIDIzNSwgMTg4LCAKLSAgICAxNCwgNywgMjM1LCAxODcsIDE0LCA3LCAyMzUsIDE4NiwgMTQsIDcsIDIzNSwgMTg1LCAxNCwgNywgMjM1LCAxODQsIDE0LCAKLSAgICA3LCAyMzUsIDE4MywgMTQsIDcsIDIzNSwgMTgyLCAxNCwgNywgMjM1LCAxODEsIDE0LCA3LCAyMzUsIDE4MCwgMTQsIDcsIAotICAgIDIzNSwgMTc5LCAxNCwgNywgMjM1LCAxNzgsIDE0LCA3LCAyMzUsIDE3NywgMTQsIDcsIDIzNSwgMTc2LCAxNCwgNywgMjM1LCAKLSAgICAxNzUsIDE0LCA3LCAyMzUsIDE3NCwgMTQsIDcsIDIzNSwgMTczLCAxNCwgNywgMjM1LCAxNzIsIDE0LCA3LCAyMzAsIDUzLCAKLSAgICAxNCwgNywgMjMwLCA1MiwgMTQsIDcsIDIzMCwgNTEsIDE0LCA3LCAyMzAsIDUwLCAxNCwgNywgMjMwLCA0OSwgMTQsIDcsIAotICAgIDIzMCwgNDgsIDE0LCA3LCAyMzAsIDQ3LCAxNCwgNywgMjMwLCA0NiwgMTQsIDcsIDIyOCwgMTI4LCAxNCwgNywgMjI4LCAKLSAgICAxMjcsIDE0LCA3LCAyMjgsIDEyNiwgMTQsIDcsIDIyOCwgMTI1LCAxNCwgNywgMjI4LCAxMjQsIDE0LCA3LCAyMjgsIDEyMywgCi0gICAgMTQsIDcsIDIyOCwgMTIyLCAxNCwgNywgMjI4LCAxMjEsIDE0LCA3LCAyMjgsIDEyMCwgMTQsIDcsIDIyOCwgMTE5LCAxNCwgCi0gICAgNywgMjI2LCAxODMsIDE0LCA3LCAyMjYsIDE4MiwgMTQsIDcsIDIyNiwgMTgxLCAxNCwgNywgMjI2LCAxNzksIDE0LCA3LCAKLSAgICAyMjYsIDE3NywgMTQsIDcsIDIyNiwgMTc2LCAxNCwgNywgMjI2LCAxNzQsIDE0LCA3LCAyMjYsIDE3MiwgMTQsIDcsIDIyNiwgCi0gICAgMTcwLCAxNCwgNywgMjI2LCAxNjgsIDE0LCA3LCAyMjYsIDE2NiwgMTQsIDcsIDIyNiwgMTY0LCAxNCwgNywgMjI2LCAxNjIsIAotICAgIDE0LCA3LCAyMjYsIDE2MSwgMTQsIDcsIDIyNiwgMTU5LCAxNCwgNywgMjI2LCAxNTcsIDE0LCA3LCAyMjYsIDE1NiwgMTQsIAotICAgIDcsIDIyNiwgMTU1LCAxNCwgNywgMjI2LCAxNTQsIDE0LCA3LCAyMjYsIDE1MywgMTQsIDcsIDIyNiwgMTUyLCAxNCwgNywgCi0gICAgMjI2LCAxNTEsIDE0LCA3LCAyMjYsIDE1MCwgMTQsIDcsIDIyNiwgMTQ5LCAxNCwgNywgMjI2LCAxNDcsIDE0LCA3LCAyMjYsIAotICAgIDE0NSwgMTQsIDcsIDIyNiwgMTQzLCAxNCwgNywgMjI2LCAxNDIsIDE0LCA3LCAyMjYsIDE0MCwgMTQsIDcsIDIyNiwgMTM5LCAKLSAgICAxNCwgNywgMjI2LCAxMzcsIDE0LCA3LCAyMjYsIDEzNiwgMTQsIDcsIDIyNiwgMTM0LCAxNCwgNywgMjI2LCAxMzIsIDE0LCAKLSAgICA3LCAyMjYsIDEzMCwgMTQsIDcsIDIyNiwgMTI4LCAxNCwgNywgMjI2LCAxMjYsIDE0LCA3LCAyMjYsIDEyNSwgMTQsIDcsIAotICAgIDIyNiwgMTIzLCAxNCwgNywgMjI2LCAxMjEsIDE0LCA3LCAyMjYsIDEyMCwgMTQsIDcsIDIyNiwgMTE4LCAxNCwgNywgMjI2LCAKLSAgICAxMTYsIDE0LCA3LCAyMjYsIDExNCwgMTQsIDcsIDIyNiwgMTEyLCAxNCwgNywgMjI2LCAxMTEsIDE0LCA3LCAyMjYsIDEwOSwgCi0gICAgMTQsIDcsIDIyNiwgMTA3LCAxNCwgNywgMjI2LCAxMDUsIDE0LCA3LCAyMjYsIDEwNCwgMTQsIDcsIDIyNiwgMTAyLCAxNCwgCi0gICAgNywgMjI2LCAxMDAsIDE0LCA3LCAyMjYsIDk5LCAxNCwgNywgMjI2LCA5OCwgMTQsIDcsIDIyNiwgOTYsIDE0LCA3LCAyMjYsIAotICAgIDk0LCAxNCwgNywgMjI2LCA5MiwgMTQsIDcsIDIyNiwgOTAsIDE0LCA3LCAyMjYsIDg4LCAxNCwgNywgMjI2LCA4NiwgMTQsIAotICAgIDcsIDIyNiwgODQsIDE0LCA3LCAyMjYsIDgzLCAxNCwgNywgMjI2LCA4MSwgMTQsIDcsIDIyNiwgNzksIDE0LCA3LCAyMjYsIAotICAgIDc3LCAxNCwgNywgMjI2LCA3NSwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgMjIzLCAxNTksIDE0LCA3LCAyMjMsIDE1OCwgCi0gICAgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NSwgMTQsIDcsIDIyMywgMTU0LCAxNCwgCi0gICAgNywgMjIzLCAxNTMsIDE0LCA3LCAyMjMsIDE1MiwgMTQsIDcsIDIyMywgMTUxLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAKLSAgICAyMjMsIDE0OSwgMTQsIDcsIDIyMywgMTQ4LCAxNCwgNywgMjIzLCAxNDcsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgCi0gICAgMTQ1LCAxNCwgNywgMjIzLCAxNDQsIDE0LCA3LCAyMjMsIDE0MywgMTQsIDcsIDIyMywgMTQyLCAxNCwgNywgMjIzLCAxNDEsIAotICAgIDE0LCA3LCAyMjMsIDE0MCwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzgsIDE0LCA3LCAyMjMsIDEzNywgMTQsIAotICAgIDcsIDIyMywgMTM2LCAxNCwgNywgMjIzLCAxMzUsIDE0LCA3LCAyMjMsIDEzNCwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgCi0gICAgMjIzLCAxMzIsIDE0LCA3LCAyMjMsIDEzMSwgMTQsIDcsIDIyMywgMTMwLCAxNCwgNywgMjIzLCAxMjksIDE0LCA3LCAyMjMsIAotICAgIDEyOCwgMTQsIDcsIDIyMywgMTI3LCAxNCwgNywgMjIzLCAxMjYsIDE0LCA3LCAyMjMsIDEyNSwgMTQsIDcsIDIyMywgMTI0LCAKLSAgICAxNCwgNywgMjIzLCAxMjMsIDE0LCA3LCAyMjMsIDEyMiwgMTQsIDcsIDIyMywgMTIxLCAxNCwgNywgMjIzLCAxMjAsIDE0LCAKLSAgICA3LCAyMjMsIDExOSwgMTQsIDcsIDIyMywgMTE4LCAxNCwgNywgMjIzLCAxMTcsIDE0LCA3LCAyMjMsIDExNiwgMTQsIDcsIAotICAgIDIyMywgMTE1LCAxNCwgNywgMjIzLCAxMTQsIDE0LCA3LCAyMjMsIDExMywgMTQsIDcsIDIyMywgMTEyLCAxNCwgNywgMjIxLCAKLSAgICAyNTIsIDE0LCA3LCAyMjEsIDI1MSwgMTQsIDcsIDIyMSwgMjUwLCAxNCwgNywgMjIxLCAyNDksIDE0LCA3LCAyMjEsIDI0OCwgCi0gICAgMTQsIDcsIDIyMSwgMjQ3LCAxNCwgNywgMjIxLCAyNDYsIDE0LCA3LCAyMjEsIDI0NSwgMTQsIDcsIDIyMSwgMjQ0LCAxNCwgCi0gICAgNywgMjIxLCAyNDMsIDE0LCA3LCAyMjEsIDI0MiwgMTQsIDcsIDIyMSwgMjQxLCAxNCwgNywgMjIxLCAyNDAsIDE0LCA3LCAKLSAgICAyMjEsIDIzOSwgMTQsIDcsIDIyMSwgMjM4LCAxNCwgNywgMjIxLCAyMzcsIDE0LCA3LCAyMjEsIDIzNiwgMTQsIDcsIDIyMSwgCi0gICAgMjM1LCAxNCwgNywgMjIxLCAyMzQsIDE0LCA3LCAyMjEsIDIzMywgMTQsIDcsIDIyMSwgMjMyLCAxNCwgNywgMjIxLCAyMzEsIAotICAgIDE0LCA3LCAyMjEsIDgzLCAxNCwgNywgMjIxLCA4MiwgMTQsIDcsIDIyMSwgODEsIDE0LCA3LCAyMjEsIDgwLCAxNCwgNywgCi0gICAgMjIxLCA3OSwgMTQsIDcsIDIyMSwgNzgsIDE0LCA3LCAyMjEsIDc3LCAxNCwgNywgMjIxLCA3NiwgMTQsIDcsIDIyMSwgNzUsIAotICAgIDE0LCA3LCAyMjEsIDc0LCAxNCwgNywgMjIxLCA3MywgMTQsIDcsIDIyMSwgNzIsIDE0LCA3LCAyMjEsIDcxLCAxNCwgNywgCi0gICAgMjIxLCA3MCwgMTQsIDcsIDIyMSwgNjksIDE0LCA3LCAyMjEsIDY4LCAxNCwgNywgMjIxLCA2NywgMTQsIDcsIDIyMSwgNjYsIAotICAgIDE0LCA3LCAyMjEsIDY1LCAxNCwgNywgMjIxLCA2NCwgMTQsIDcsIDIyMSwgNjMsIDE0LCA3LCAyMjEsIDYyLCAxNCwgNywgCi0gICAgMjIxLCA2MSwgMTQsIDcsIDIyMSwgNjAsIDE0LCA3LCAyMjEsIDU5LCAxNCwgNywgMjIxLCA1OCwgMTQsIDcsIDIyMCwgMTczLCAKLSAgICAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCAKLSAgICA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIAotICAgIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCA3LCAyMjAsIDE2MiwgMTQsIDcsIDIyMCwgMTYxLCAxNCwgNywgMjIwLCAKLSAgICAxNjAsIDE0LCA3LCAyMjAsIDE1OSwgMTQsIDcsIDIyMCwgMTU4LCAxNCwgNywgMjIwLCAxNTcsIDE0LCA3LCAyMjAsIDE1NiwgCi0gICAgMTQsIDcsIDIyMCwgMTU1LCAxNCwgNywgMjIwLCAxNTQsIDE0LCA3LCAyMjAsIDE1MywgMTQsIDcsIDIyMCwgMTUyLCAxNCwgCi0gICAgNywgMjIwLCAxNTEsIDE0LCA3LCAyMjAsIDE1MCwgMTQsIDcsIDIyMCwgMTQ5LCAxNCwgNywgMjIwLCAxNDgsIDE0LCA3LCAKLSAgICAyMjAsIDE0NywgMTQsIDcsIDIyMCwgMTQ2LCAxNCwgNywgMjIwLCAxNDUsIDE0LCA3LCAyMjAsIDE0NCwgMTQsIDcsIDIyMCwgCi0gICAgMTQzLCAxNCwgNywgMjIwLCAxNDIsIDE0LCA3LCAyMjAsIDE0MSwgMTQsIDcsIDIyMCwgMTQwLCAxNCwgNywgMjIwLCAxMzksIAotICAgIDE0LCA3LCAyMjAsIDEzOCwgMTQsIDcsIDIyMCwgMTM3LCAxNCwgNywgMjIwLCAxMzYsIDE0LCA3LCAyMjAsIDEzNSwgMTQsIAotICAgIDcsIDIyMCwgMTM0LCAxNCwgNywgMjIwLCAxMzMsIDE0LCA3LCAyMjAsIDEzMiwgMTQsIDcsIDIyMCwgMTMxLCAxNCwgNywgCi0gICAgMjIwLCAxMzAsIDE0LCA3LCAyMjAsIDEyOSwgMTQsIDcsIDIyMCwgMTI4LCAxNCwgNywgMjIwLCAxMjcsIDE0LCA3LCAyMjAsIAotICAgIDEyNiwgMTQsIDcsIDIyMCwgMTI1LCAxNCwgNywgMjIwLCAxMjQsIDE0LCA3LCAyMjAsIDEyMywgMTQsIDcsIDIyMCwgMTIyLCAKLSAgICAxNCwgNywgMjIwLCAxMjEsIDE0LCA3LCAyMjAsIDEyMCwgMTQsIDcsIDIyMCwgMTE5LCAxNCwgNywgMjIwLCAxMTgsIDE0LCAKLSAgICA3LCAyMjAsIDExNywgMTQsIDcsIDIyMCwgMTE2LCAxNCwgNywgMjIwLCAxMTUsIDE0LCA3LCAyMjAsIDExNCwgMTQsIDcsIAotICAgIDIyMCwgMTEzLCAxNCwgNywgMjIwLCAxMTIsIDE0LCA3LCAyMjAsIDExMSwgMTQsIDcsIDIyMCwgMTEwLCAxNCwgNywgMjIwLCAKLSAgICAxMDksIDE0LCA3LCAyMjAsIDEwOCwgMTQsIDcsIDIyMCwgMTA3LCAxNCwgNywgMjIwLCAxMDYsIDE0LCA3LCAyMjAsIDEwNSwgCi0gICAgMTQsIDcsIDIyMCwgMTA0LCAxNCwgNywgMjIwLCAxMDMsIDE0LCA3LCAyMjAsIDEwMiwgMTQsIDcsIDIyMCwgMTAxLCAxNCwgCi0gICAgNywgMjIwLCAxMDAsIDE0LCA3LCAyMjAsIDk5LCAxNCwgNywgMjE5LCAxODMsIDE0LCA3LCAyMTksIDE4MiwgMTQsIDcsIAotICAgIDIxOSwgMTgxLCAxNCwgNywgMjE5LCAxODAsIDE0LCA3LCAyMTksIDE3OSwgMTQsIDcsIDIxOSwgMTc4LCAxNCwgNywgMjE5LCAKLSAgICAxNzcsIDE0LCA3LCAyMTksIDE3NiwgMTQsIDcsIDIxOSwgMTc1LCAxNCwgNywgMjE5LCAxNzQsIDE0LCA3LCAyMTksIDE3MywgCi0gICAgMTQsIDcsIDIxOSwgMTcyLCAxNCwgNywgMjE5LCAxNzEsIDE0LCA3LCAyMTcsIDEzMywgMTQsIDcsIDIxNywgMTMyLCAxNCwgCi0gICAgNywgMjE3LCAxMzEsIDE0LCA3LCAyMTcsIDEzMCwgMTQsIDcsIDIxNywgMTI5LCAxNCwgNywgMjE3LCAxMjgsIDE0LCA3LCAKLSAgICAyMTcsIDEyNywgMTQsIDcsIDIxNiwgMjU1LCAxNCwgNywgMjE2LCAyNTQsIDE0LCA3LCAyMTYsIDI1MywgMTQsIDcsIDIxNiwgCi0gICAgMjUyLCAxNCwgNywgMjE2LCAyNTEsIDE0LCA3LCAyMTYsIDI1MCwgMTQsIDcsIDIxNiwgMjQ5LCAxNCwgNywgMjE2LCAyNDgsIAotICAgIDE0LCA3LCAyMTYsIDI0NywgMTQsIDcsIDIxNiwgMjQ2LCAxNCwgNywgMjE2LCAyNDUsIDE0LCA3LCAyMTYsIDI0NCwgMTQsIAotICAgIDcsIDIxNiwgMjQzLCAxNCwgNywgMjE2LCAyNDIsIDE0LCA3LCAyMTYsIDI0MSwgMTQsIDcsIDIxNiwgMjQwLCAxNCwgNywgCi0gICAgMjE2LCAyMzksIDE0LCA3LCAyMTYsIDIzOCwgMTQsIDcsIDIxNiwgMjM3LCAxNCwgNywgMjE2LCAyMzYsIDE0LCA3LCAyMTYsIAotICAgIDIzNSwgMTQsIDcsIDIxNiwgMjM0LCAxNCwgNywgMjE2LCAyMzMsIDE0LCA3LCAyMTYsIDIzMiwgMTQsIDcsIDIxNiwgMjMxLCAKLSAgICAxNCwgNywgMjE2LCAyMzAsIDE0LCA3LCAyMTYsIDIyOSwgMTQsIDcsIDIxNiwgMjI4LCAxNCwgNywgMjE2LCAyMjcsIDE0LCAKLSAgICA3LCAyMTYsIDIyNiwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIAotICAgIDIxNiwgMjIyLCAxNCwgNywgMjE1LCA5MSwgMTQsIDcsIDIxNSwgOTAsIDE0LCA3LCAyMTUsIDg5LCAxNCwgNywgMjE1LCA4OCwgCi0gICAgMTQsIDcsIDIxNSwgODcsIDE0LCA3LCAyMTUsIDg2LCAxNCwgNywgMjE1LCA4NSwgMTQsIDcsIDIxNSwgODQsIDE0LCA3LCAKLSAgICAyMTUsIDgzLCAxNCwgNywgMjE1LCA4MiwgMTQsIDcsIDIxNSwgODEsIDE0LCA3LCAyMTUsIDgwLCAxNCwgNywgMjE1LCA3OSwgCi0gICAgMTQsIDcsIDIxNSwgNzgsIDE0LCA3LCAyMTUsIDc3LCAxNCwgNywgMjE1LCA3NiwgMTQsIDcsIDIxNSwgNzUsIDE0LCA3LCAKLSAgICAyMTUsIDc0LCAxNCwgNywgMjE1LCA3MywgMTQsIDcsIDIxNSwgNzIsIDE0LCA3LCAyMTUsIDcxLCAxNCwgNywgMjE1LCA3MCwgCi0gICAgMTQsIDcsIDIxNSwgNjksIDE0LCA3LCAyMTUsIDY4LCAxNCwgNywgMjE1LCA2NywgMTQsIDcsIDIxNSwgNjYsIDE0LCA3LCAKLSAgICAyMTUsIDY1LCAxNCwgNywgMjE1LCA2NCwgMTQsIDcsIDIxNSwgNjMsIDE0LCA3LCAyMTUsIDYyLCAxNCwgNywgMjE1LCA2MSwgCi0gICAgMTQsIDcsIDIxNSwgNjAsIDE0LCA3LCAyMTUsIDU5LCAxNCwgNywgMjE1LCA1OCwgMTQsIDcsIDIxNSwgNTcsIDE0LCA3LCAKLSAgICAyMTUsIDU2LCAxNCwgNywgMjE1LCA1NSwgMTQsIDcsIDIxNSwgNTQsIDE0LCA3LCAyMTUsIDUzLCAxNCwgNywgMjE1LCA1MiwgCi0gICAgMTQsIDcsIDIxNSwgNTEsIDE0LCA3LCAyMTUsIDUwLCAxNCwgNywgMjE1LCA0OSwgMTQsIDcsIDIxNSwgNDgsIDE0LCA3LCAKLSAgICAyMTUsIDQ3LCAxNCwgNywgMjE1LCA0NiwgMTQsIDcsIDIxNSwgNDUsIDE0LCA3LCAyMTUsIDQ0LCAxNCwgNywgMjE1LCA0MywgCi0gICAgMTQsIDcsIDIxNSwgNDIsIDE0LCA3LCAyMTUsIDQxLCAxNCwgNywgMjE1LCA0MCwgMTQsIDcsIDIxNSwgMzksIDE0LCA3LCAKLSAgICAyMTUsIDM4LCAxNCwgNywgMjEwLCA2NywgMTQsIDcsIDIxMCwgNjYsIDE0LCA3LCAyMTAsIDY1LCAxNCwgNywgMjEwLCA2NCwgCi0gICAgMTQsIDcsIDIxMCwgNjMsIDE0LCA3LCAyMTAsIDYyLCAxNCwgNywgMjEwLCA2MSwgMTQsIDcsIDIxMCwgNjAsIDE0LCA3LCAKLSAgICAyMTAsIDU5LCAxNCwgNywgMjEwLCA1OCwgMTQsIDcsIDIxMCwgNTcsIDE0LCA3LCAyMTAsIDU2LCAxNCwgNywgMjEwLCA1NSwgCi0gICAgMTQsIDcsIDIxMCwgNTQsIDE0LCA3LCAyMTAsIDUzLCAxNCwgNywgMjEwLCA1MiwgMTQsIDcsIDIxMCwgNTEsIDE0LCA3LCAKLSAgICAyMTAsIDUwLCAxNCwgNywgMjEwLCA0OSwgMTQsIDcsIDIxMCwgNDgsIDE0LCA3LCAyMTAsIDQ3LCAxNCwgNywgMjEwLCA0NiwgCi0gICAgMTQsIDcsIDIxMCwgNDUsIDE0LCA3LCAyMTAsIDQ0LCAxNCwgNywgMjEwLCA0MywgMTQsIDcsIDIxMCwgNDIsIDE0LCA3LCAKLSAgICAyMTAsIDQxLCAxNCwgNywgMjEwLCA0MCwgMTQsIDcsIDIxMCwgMzksIDE0LCA3LCAyMTAsIDM4LCAxNCwgNywgMjEwLCAzNywgCi0gICAgMTQsIDcsIDIxMCwgMzYsIDE0LCA3LCAyMTAsIDM1LCAxNCwgNywgMjEwLCAzNCwgMTQsIDcsIDIxMCwgMzMsIDE0LCA3LCAKLSAgICAyMTAsIDMyLCAxNCwgNywgMjEwLCAzMSwgMTQsIDcsIDIxMCwgMzAsIDE0LCA3LCAyMTAsIDI5LCAxNCwgNywgMjEwLCAyOCwgCi0gICAgMTQsIDcsIDIxMCwgMjcsIDE0LCA3LCAyMTAsIDI2LCAxNCwgNywgMjEwLCAyNSwgMTQsIDcsIDIxMCwgMjQsIDE0LCA3LCAKLSAgICAyMDcsIDg4LCAxNCwgNywgMjA3LCA4NywgMTQsIDcsIDIwNywgODYsIDE0LCA3LCAyMDcsIDg1LCAxNCwgNywgMjA3LCA4NCwgCi0gICAgMTQsIDcsIDIwNywgODMsIDE0LCA3LCAyMDcsIDgyLCAxNCwgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAKLSAgICAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgCi0gICAgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAKLSAgICAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgCi0gICAgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAKLSAgICAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgCi0gICAgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAKLSAgICAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgCi0gICAgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAKLSAgICAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNiwgMTYzLCAxNCwgNywgMjA2LCAxNjIsIDE0LCA3LCAyMDYsIAotICAgIDE2MSwgMTQsIDcsIDIwNiwgMTYwLCAxNCwgNywgMjA2LCAxNTksIDE0LCA3LCAyMDYsIDE1OCwgMTQsIDcsIDIwNiwgMTU3LCAKLSAgICAxNCwgNywgMjA2LCAxNTYsIDE0LCA3LCAyMDYsIDE1NSwgMTQsIDcsIDIwNiwgMTU0LCAxNCwgNywgMjA2LCAxNTMsIDE0LCAKLSAgICA3LCAyMDYsIDE1MiwgMTQsIDcsIDIwNiwgMTUxLCAxNCwgNywgMjA2LCAxNTAsIDE0LCA3LCAyMDYsIDE0OSwgMTQsIDcsIAotICAgIDIwNiwgMTQ4LCAxNCwgNywgMjA2LCAxNDcsIDE0LCA3LCAyMDYsIDE0NiwgMTQsIDcsIDIwNiwgMTQ1LCAxNCwgNywgMjA2LCAKLSAgICAxNDQsIDE0LCA3LCAyMDYsIDE0MywgMTQsIDcsIDIwNiwgMTQyLCAxNCwgNywgMjA2LCAxNDEsIDE0LCA3LCAyMDYsIDE0MCwgCi0gICAgMTQsIDcsIDIwNiwgMTM5LCAxNCwgNywgMjA2LCAxMzgsIDE0LCA3LCAyMDYsIDEzNywgMTQsIDcsIDIwNiwgMTM2LCAxNCwgCi0gICAgNywgMjA2LCAxMzUsIDE0LCA3LCAyMDYsIDEzNCwgMTQsIDcsIDIwNiwgMTMzLCAxNCwgNywgMjA2LCAxMzIsIDE0LCA3LCAKLSAgICAyMDYsIDEzMSwgMTQsIDcsIDIwNiwgMTMwLCAxNCwgNywgMjA2LCAxMjksIDE0LCA3LCAyMDYsIDEyOCwgMTQsIDcsIDIwNiwgCi0gICAgMTI3LCAxNCwgNywgMjA2LCAxMjYsIDE0LCA3LCAyMDYsIDEyNSwgMTQsIDcsIDIwNiwgMTI0LCAxNCwgNywgMjA2LCAxMjMsIAotICAgIDE0LCA3LCAyMDYsIDEyMiwgMTQsIDcsIDIwNiwgMTIxLCAxNCwgNywgMjA2LCAxMjAsIDE0LCA3LCAyMDYsIDExOSwgMTQsIAotICAgIDcsIDIwNiwgMTE4LCAxNCwgNywgMjA2LCAxMTcsIDE0LCA3LCAyMDYsIDExNiwgMTQsIDcsIDIwNiwgMTE1LCAxNCwgNywgCi0gICAgMjA2LCAxMTQsIDE0LCA3LCAyMDYsIDExMywgMTQsIDcsIDIwNiwgMTEyLCAxNCwgNywgMjA2LCAxMTEsIDE0LCA3LCAyMDYsIAotICAgIDExMCwgMTQsIDcsIDIwNiwgMTA5LCAxNCwgNywgMjA2LCAxMDgsIDE0LCA3LCAyMDYsIDEwNywgMTQsIDcsIDIwNiwgMTA2LCAKLSAgICAxNCwgNywgMjA2LCAxMDUsIDE0LCA3LCAyMDYsIDEwNCwgMTQsIDcsIDIwNiwgMTAzLCAxNCwgNywgMjA2LCAxMDIsIDE0LCAKLSAgICA3LCAyMDYsIDEwMSwgMTQsIDcsIDIwNiwgMTAwLCAxNCwgNywgMjA2LCA5OSwgMTQsIDcsIDIwNiwgOTgsIDE0LCA3LCAyMDYsIAotICAgIDk3LCAxNCwgNywgMjA2LCA5NiwgMTQsIDcsIDIwNiwgOTUsIDE0LCA3LCAyMDYsIDk0LCAxNCwgNywgMjA2LCA5MywgMTQsIAotICAgIDcsIDIwNiwgOTIsIDE0LCA3LCAyMDYsIDkxLCAxNCwgNywgMjA2LCA5MCwgMTQsIDcsIDIwNiwgODksIDE0LCA3LCAyMDYsIAotICAgIDg4LCAxNCwgNywgMjA2LCA4NywgMTQsIDcsIDIwNCwgMTQzLCAxNCwgNywgMjA0LCAxNDIsIDE0LCA3LCAyMDQsIDE0MSwgCi0gICAgMTQsIDcsIDIwNCwgMTQwLCAxNCwgNywgMjA0LCAxMzksIDE0LCA3LCAyMDQsIDEzOCwgMTQsIDcsIDIwNCwgMTM3LCAxNCwgCi0gICAgNywgMjA0LCAxMzYsIDE0LCA3LCAyMDQsIDEzNSwgMTQsIDcsIDIwNCwgMTM0LCAxNCwgNywgMjA0LCAxMzMsIDE0LCA3LCAKLSAgICAyMDQsIDEzMiwgMTQsIDcsIDIwNCwgMTMxLCAxNCwgNywgMjA0LCAxMzAsIDE0LCA3LCAyMDQsIDEyOSwgMTQsIDcsIDIwNCwgCi0gICAgMTI4LCAxNCwgNywgMjA0LCAxMjcsIDE0LCA3LCAyMDQsIDEyNiwgMTQsIDcsIDIwNCwgMTI1LCAxNCwgNywgMjA0LCAxMjQsIAotICAgIDE0LCA3LCAyMDQsIDEyMywgMTQsIDcsIDIwNCwgMTIyLCAxNCwgNywgMjA0LCAxMjEsIDE0LCA3LCAyMDQsIDEyMCwgMTQsIAotICAgIDcsIDIwNCwgMTE5LCAxNCwgNywgMjA0LCAxMTgsIDE0LCA3LCAyMDQsIDExNywgMTQsIDcsIDIwNCwgMTE2LCAxNCwgNywgCi0gICAgMjA0LCAxMTUsIDE0LCA3LCAyMDQsIDExNCwgMTQsIDcsIDIwNCwgMTEzLCAxNCwgNywgMjA0LCAxMTIsIDE0LCA3LCAyMDMsIAotICAgIDE5NCwgMTQsIDcsIDIwMywgMTkzLCAxNCwgNywgMjAzLCAxOTIsIDE0LCA3LCAyMDMsIDE5MSwgMTQsIDcsIDIwMywgMTkwLCAKLSAgICAxNCwgNywgMjAzLCAxODksIDE0LCA3LCAyMDMsIDE4OCwgMTQsIDcsIDIwMywgMTg3LCAxNCwgNywgMjAzLCAxODYsIDE0LCAKLSAgICA3LCAyMDMsIDE4NSwgMTQsIDcsIDIwMywgMTg0LCAxNCwgNywgMjAzLCAxODMsIDE0LCA3LCAyMDMsIDEyMiwgMTQsIDcsIAotICAgIDIwMywgMTIxLCAxNCwgNywgMjAzLCAxMjAsIDE0LCA3LCAyMDMsIDExOSwgMTQsIDcsIDIwMywgMTE4LCAxNCwgNywgMjAzLCAKLSAgICAxMTcsIDE0LCA3LCAyMDMsIDExNiwgMTQsIDcsIDIwMywgMTE1LCAxNCwgNywgMjAzLCAxMTQsIDE0LCA3LCAyMDIsIDE1OCwgCi0gICAgMTQsIDcsIDIwMiwgMTU3LCAxNCwgNywgMjAyLCAxNTYsIDE0LCA3LCAyMDIsIDE1NSwgMTQsIDcsIDIwMiwgMTU0LCAxNCwgCi0gICAgNywgMjAyLCAxNTMsIDE0LCA3LCAyMDIsIDE1MiwgMTQsIDcsIDIwMiwgMTUxLCAxNCwgNywgMjAyLCAxNTAsIDE0LCA3LCAKLSAgICAyMDIsIDE0OSwgMTQsIDcsIDIwMiwgMTQ4LCAxNCwgNywgMjAyLCAxNDcsIDE0LCA3LCAyMDIsIDE0NiwgMTQsIDcsIDIwMiwgCi0gICAgMTQ1LCAxNCwgNywgMjAyLCAxNDQsIDE0LCA3LCAyMDIsIDE0MywgMTQsIDcsIDIwMiwgMTQyLCAxNCwgNywgMjAyLCAxNDEsIAotICAgIDE0LCA3LCAyMDIsIDE0MCwgMTQsIDcsIDIwMiwgMTM5LCAxNCwgNywgMjAyLCAxMzgsIDE0LCA3LCAyMDIsIDEzNywgMTQsIAotICAgIDcsIDIwMiwgMTM2LCAxNCwgNywgMjAyLCAxMzUsIDE0LCA3LCAyMDIsIDEzNCwgMTQsIDcsIDIwMiwgMTMzLCAxNCwgNywgCi0gICAgMjAyLCAxMzIsIDE0LCA3LCAyMDIsIDEzMSwgMTQsIDcsIDIwMiwgMTMwLCAxNCwgNywgMjAyLCAxMjksIDE0LCA3LCAyMDIsIAotICAgIDEyOCwgMTQsIDcsIDIwMiwgMTI3LCAxNCwgNywgMjAyLCAxMjYsIDE0LCA3LCAyMDIsIDEyNSwgMTQsIDcsIDIwMiwgMTI0LCAKLSAgICAxNCwgNywgMjAyLCAxMjMsIDE0LCA3LCAyMDIsIDEyMiwgMTQsIDcsIDIwMiwgMTIxLCAxNCwgNywgMjAyLCAxMjAsIDE0LCAKLSAgICA3LCAyMDIsIDExOSwgMTQsIDcsIDIwMiwgMTE4LCAxNCwgNywgMjUyLCAyNCwgMTQsIDcsIDI1MiwgMjMsIDE0LCA3LCAyNTIsIAotICAgIDIyLCAxNCwgNywgMjUyLCAyMSwgMTQsIDcsIDI1MiwgMjAsIDE0LCA3LCAyNTIsIDE5LCAxNCwgNywgMjUyLCAxOCwgMTQsIAotICAgIDcsIDI1MiwgMTcsIDE0LCA3LCAyNTIsIDE2LCAxNCwgNywgMjUyLCAxNSwgMTQsIDcsIDI1MiwgMTQsIDE0LCA3LCAyNTIsIAotICAgIDEzLCAxNCwgNywgMjUyLCAxMiwgMTQsIDcsIDI1MiwgMTEsIDE0LCA3LCAyNTIsIDEwLCAxNCwgNywgMjUyLCA5LCAxNCwgNywgCi0gICAgMjUyLCA4LCAxNCwgNywgMjUyLCA3LCAxNCwgNywgMjUyLCA2LCAxNCwgNywgMjUyLCA1LCAxNCwgNywgMjUyLCA0LCAxNCwgCi0gICAgNywgMjUyLCAzLCAxNCwgNywgMjUyLCAyLCAxNCwgNywgMjUyLCAxLCAxNCwgNywgMjUyLCAwLCAxNCwgNywgMjUxLCAyNTUsIAotICAgIDE0LCA3LCAyNTEsIDI1NCwgMTQsIDcsIDI1MSwgMjUzLCAxNCwgNywgMjUxLCAyNTIsIDE0LCA3LCAyNTEsIDI1MSwgMTQsIAotICAgIDcsIDI1MSwgMjUwLCAxNCwgNywgMjUxLCAyNDksIDE0LCA3LCAyNTEsIDI0OCwgMTQsIDcsIDI1MSwgMjQ3LCAyNywgNywgCi0gICAgMjU1LCAxOCwgMjcsIDcsIDI1NSwgMTcsIDI3LCA3LCAyNTUsIDE2LCAyNywgNywgMjU1LCAxNSwgMjcsIDcsIDI1NSwgMTQsIAotICAgIDI3LCA3LCAyNTUsIDEyLCAyNywgNywgMjU1LCA5LCAyNywgNywgMjU1LCA4LCAyNywgNywgMjU1LCA3LCAyNywgNywgMjU1LCAKLSAgICA2LCAyNywgNywgMjU1LCA1LCAyNywgNywgMjU1LCA0LCAyNywgNywgMjU1LCAzLCAyNywgNywgMjU1LCAyLCAyNywgNywgCi0gICAgMjU1LCAxLCAyNywgNywgMjU0LCAyNTUsIDI3LCA3LCAyNTQsIDI1NCwgMjcsIDcsIDI1NCwgMjUzLCAyNywgNywgMjU0LCAKLSAgICAyNTEsIDI3LCA3LCAyNTQsIDI1MCwgMjcsIDcsIDI1NCwgMjQ5LCAyNywgNywgMjU0LCAyNDgsIDI3LCA3LCAyNTQsIDI0NywgCi0gICAgMjcsIDcsIDI1NCwgMjQ2LCAyNywgNywgMjU0LCAyNDUsIDI3LCA3LCAyNTQsIDI0NCwgMjcsIDcsIDI1NCwgMjQzLCAyNywgCi0gICAgNywgMjU0LCAyNDIsIDI3LCA3LCAyNTQsIDI0MSwgMjcsIDcsIDI1NCwgMjQwLCAyNywgNywgMjU0LCAyMzgsIDI3LCA3LCAKLSAgICAyNTQsIDIzNywgMjcsIDcsIDI1NCwgMjM2LCAyNywgNywgMjU0LCAyMzUsIDI3LCA3LCAyNTQsIDIzMywgMjcsIDcsIDI1NCwgCi0gICAgMjMyLCAyNywgNywgMjU0LCAyMzEsIDI3LCA3LCAyNTQsIDIzMCwgMjcsIDcsIDI1NCwgMjI5LCAyNywgNywgMjU0LCAyMjgsIAotICAgIDI3LCA3LCAyNTQsIDIyNywgMjcsIDcsIDI1NCwgMjI2LCAyNywgNywgMjU0LCAyMjUsIDI3LCA3LCAyNTQsIDIyMywgMjcsIAotICAgIDcsIDI1NCwgMjIyLCAyNywgNywgMjU0LCAyMjEsIDI3LCA3LCAyNTQsIDIxOSwgMjcsIDcsIDI1NCwgMjE3LCAyNywgNywgCi0gICAgMjU0LCAyMTYsIDI3LCA3LCAyNTQsIDIxNSwgMjcsIDcsIDI1NCwgMjE0LCAyNywgNywgMjU0LCAyMTMsIDI3LCA3LCAyNTQsIAotICAgIDIxMiwgMjcsIDcsIDI1NCwgMjExLCAyNywgNywgMjU0LCAyMTAsIDI3LCA3LCAyNTQsIDIwOSwgMjcsIDcsIDI1NCwgMjA4LCAKLSAgICAyNywgNywgMjU0LCAyMDcsIDI3LCA3LCAyNTQsIDIwNiwgMjcsIDcsIDI1NCwgMjA1LCAyNywgNywgMjU0LCAyMDQsIDI3LCAKLSAgICA3LCAyNTQsIDIwMywgMjcsIDcsIDI1NCwgMjAyLCAyNywgNywgMjU0LCAyMDEsIDI3LCA3LCAyNTQsIDIwMCwgMjcsIDcsIAotICAgIDI1NCwgMTk5LCAyNywgNywgMjU0LCAxOTgsIDI3LCA3LCAyNTQsIDE5NywgMjcsIDcsIDI1NCwgMTk2LCAyNywgNywgMjU0LCAKLSAgICAxOTUsIDI3LCA3LCAyNTQsIDE5NCwgMjcsIDcsIDI1NCwgMTkzLCAyNywgNywgMjU0LCAxOTIsIDI3LCA3LCAyNTQsIDE5MSwgCi0gICAgMjcsIDcsIDI1NCwgMTkwLCAyNywgNywgMjU0LCAxODksIDI3LCA3LCAyNTQsIDE4OCwgMjcsIDcsIDI1NCwgMTg3LCAyNywgCi0gICAgNywgMjU0LCAxODYsIDI3LCA3LCAyNTQsIDE4NSwgMjcsIDcsIDI1NCwgMTg0LCAyNywgNywgMjU0LCAxODMsIDI3LCA3LCAKLSAgICAyNTQsIDE4MiwgMjcsIDcsIDI1NCwgMTgxLCAyNywgNywgMjU0LCAxODAsIDI3LCA3LCAyNTQsIDE3OSwgMjcsIDcsIDI1NCwgCi0gICAgMTc4LCAyNywgNywgMjU0LCAxNzcsIDI3LCA3LCAyNTQsIDE3NiwgMjcsIDcsIDI1NCwgMTc1LCAyNywgNywgMjU0LCAxNzQsIAotICAgIDI3LCA3LCAyNTQsIDE3MywgMjcsIDcsIDI1NCwgMTcyLCAyNywgNywgMjU0LCAxNzEsIDI3LCA3LCAyNTQsIDE3MCwgMjcsIAotICAgIDcsIDI1NCwgMTY5LCAyNywgNywgMjU0LCAxNjgsIDI3LCA3LCAyNTQsIDE2NywgMjcsIDcsIDI1NCwgMTY2LCAyNywgNywgCi0gICAgMjU0LCAxNjUsIDI3LCA3LCAyNTQsIDE2NCwgMjcsIDcsIDI1NCwgMTYzLCAyNywgNywgMjU0LCAxNjIsIDI3LCA3LCAyNTQsIAotICAgIDE2MSwgMjcsIDcsIDI1NCwgMTYwLCAyNywgNywgMjU0LCAxNTksIDI3LCA3LCAyNTQsIDE1OCwgMjcsIDcsIDI1NCwgMTU3LCAKLSAgICAyNywgNywgMjU0LCAxNTYsIDI3LCA3LCAyNTQsIDE1NSwgMjcsIDcsIDI1NCwgMTU0LCAyNywgNywgMjU0LCAxNTMsIDI3LCAKLSAgICA3LCAyNTQsIDE1MSwgMjcsIDcsIDI1NCwgMTUwLCAyNywgNywgMjU0LCAxNDksIDI3LCA3LCAyNTQsIDE0OCwgMjcsIDcsIAotICAgIDI1NCwgMTQ3LCAyNywgNywgMjU0LCAxNDYsIDI3LCA3LCAyNTQsIDE0NSwgMjcsIDcsIDI1NCwgMTQ0LCAyNywgNywgMjU0LCAKLSAgICAxNDMsIDI3LCA3LCAyNTQsIDE0MiwgMjcsIDcsIDI1NCwgMTQxLCAyNywgNywgMjU0LCAxNDAsIDI3LCA3LCAyNTQsIDEzOSwgCi0gICAgMjcsIDcsIDI1NCwgMTM4LCAyNywgNywgMjU0LCAxMzcsIDI3LCA3LCAyNTQsIDEzNiwgMjcsIDcsIDI1NCwgMTM1LCAyNywgCi0gICAgNywgMjU0LCAxMzQsIDI3LCA3LCAyNTQsIDEzMywgMjcsIDcsIDI1NCwgMTMyLCAyNywgNywgMjU0LCAxMzEsIDI3LCA3LCAKLSAgICAyNTQsIDEzMCwgMjcsIDcsIDI1NCwgMTI5LCAyNywgNywgMjU0LCAxMjgsIDI3LCA3LCAyNTQsIDEyNywgMjcsIDcsIDI1NCwgCi0gICAgMTI2LCAyNywgNywgMjU0LCAxMjUsIDI3LCA3LCAyNTQsIDEyNCwgMjcsIDcsIDI1NCwgMTIzLCAyNywgNywgMjU0LCAxMjIsIAotICAgIDI3LCA3LCAyNTQsIDEyMSwgMjcsIDcsIDI1NCwgMTIwLCAyNywgNywgMjU0LCAxMTksIDI3LCA3LCAyNTQsIDExOCwgMjcsIAotICAgIDcsIDI1NCwgMTE2LCAyNywgNywgMjU0LCAxMTUsIDI3LCA3LCAyNTQsIDExNCwgMjcsIDcsIDI1NCwgMTEzLCAyNywgNywgCi0gICAgMjU0LCAxMTIsIDI3LCA3LCAyNTQsIDExMSwgMjcsIDcsIDI1NCwgMTEwLCAyNywgNywgMjU0LCAxMDksIDI3LCA3LCAyNTQsIAotICAgIDEwOCwgMjcsIDcsIDI1NCwgMTA3LCAyNywgNywgMjU0LCAxMDYsIDI3LCA3LCAyNTQsIDEwNSwgMjcsIDcsIDI1NCwgMTAzLCAKLSAgICAyNywgNywgMjU0LCAxMDIsIDI3LCA3LCAyNTQsIDEwMSwgMjcsIDcsIDI1NCwgMTAwLCAyNywgNywgMjU0LCA5OSwgMjcsIDcsIAotICAgIDI1NCwgOTgsIDI3LCA3LCAyNTQsIDk3LCAyNywgNywgMjU0LCA5NiwgMjcsIDcsIDI1NCwgOTUsIDI3LCA3LCAyNTQsIDk0LCAKLSAgICAyNywgNywgMjU0LCA5MywgMjcsIDcsIDI1NCwgOTIsIDI3LCA3LCAyNTQsIDkxLCAyNywgNywgMjU0LCA5MCwgMjcsIDcsIAotICAgIDI1NCwgODksIDI3LCA3LCAyNTQsIDg4LCAyNywgNywgMjU0LCA4NywgMjcsIDcsIDI1NCwgODYsIDI3LCA3LCAyNTQsIDg1LCAKLSAgICAyNywgNywgMjU0LCA4NCwgMjcsIDcsIDI1NCwgODMsIDI3LCA3LCAyNTQsIDgyLCAyNywgNywgMjU0LCA4MSwgMjcsIDcsIAotICAgIDI1NCwgODAsIDI3LCA3LCAyNTQsIDc5LCAyNywgNywgMjU0LCA3OCwgMjcsIDcsIDI1NCwgNzcsIDI3LCA3LCAyNTQsIDc2LCAKLSAgICAyNywgNywgMjU0LCA3NSwgMjcsIDcsIDI1NCwgNzQsIDI3LCA3LCAyNTQsIDczLCAyNywgNywgMjU0LCA3MiwgMjcsIDcsIAotICAgIDI1NCwgNzEsIDI3LCA3LCAyNTQsIDcwLCAyNywgNywgMjU0LCA2OSwgMjcsIDcsIDI1NCwgNjgsIDI3LCA3LCAyNTQsIDY3LCAKLSAgICAyNywgNywgMjU0LCA2NiwgMjcsIDcsIDI1NCwgNjUsIDI3LCA3LCAyNTQsIDY0LCAyNywgNywgMjU0LCA2MywgMjcsIDcsIAotICAgIDI1NCwgNjIsIDI3LCA3LCAyNTQsIDYxLCAyNywgNywgMjU0LCA2MCwgMjcsIDcsIDI1NCwgNTksIDI3LCA3LCAyNTQsIDU4LCAKLSAgICAyNywgNywgMjU0LCA1NywgMjcsIDcsIDI1NCwgNTYsIDI3LCA3LCAyNTQsIDU1LCAyNywgNywgMjU0LCA1NCwgMjcsIDcsIAotICAgIDI1NCwgNTMsIDI3LCA3LCAyNTQsIDUyLCAyNywgNywgMjU0LCA1MSwgMjcsIDcsIDI1NCwgNTAsIDI3LCA3LCAyNTQsIDQ5LCAKLSAgICAyNywgNywgMjU0LCA0OCwgMjcsIDcsIDI1NCwgNDcsIDI3LCA3LCAyNTQsIDQ2LCAyNywgNywgMjU0LCA0NSwgMjcsIDcsIAotICAgIDI1NCwgNDQsIDI3LCA3LCAyNTQsIDQzLCAyNywgNywgMjU0LCA0MiwgMjcsIDcsIDI1NCwgNDEsIDI3LCA3LCAyNTQsIDQwLCAKLSAgICAyNywgNywgMjU0LCAzOSwgMjcsIDcsIDI1NCwgMzgsIDI3LCA3LCAyNTQsIDM3LCAyNywgNywgMjU0LCAzNiwgMjcsIDcsIAotICAgIDI1NCwgMzUsIDI3LCA3LCAyNTQsIDMzLCAyNywgNywgMjU0LCAzMiwgMjcsIDcsIDI1NCwgMzEsIDI3LCA3LCAyNTQsIDMwLCAKLSAgICAyNywgNywgMjU0LCAyOSwgMjcsIDcsIDI1NCwgMjgsIDI3LCA3LCAyNTQsIDI3LCAyNywgNywgMjU0LCAyNiwgMjcsIDcsIAotICAgIDI1NCwgMjUsIDI3LCA3LCAyNTQsIDI0LCAyNywgNywgMjU0LCAyMywgMjcsIDcsIDI1NCwgMjIsIDI3LCA3LCAyNTQsIDIxLCAKLSAgICAyNywgNywgMjU0LCAyMCwgMjcsIDcsIDI1NCwgMTksIDI3LCA3LCAyNTQsIDE4LCAyNywgNywgMjU0LCAxNywgMjcsIDcsIAotICAgIDI1NCwgMTYsIDI3LCA3LCAyNTQsIDE1LCAyNywgNywgMjU0LCAxNCwgMjcsIDcsIDI1NCwgMTMsIDI3LCA3LCAyNTQsIDEyLCAKLSAgICAyNywgNywgMjU0LCAxMSwgMjcsIDcsIDI1NCwgMTAsIDI3LCA3LCAyNTQsIDksIDI3LCA3LCAyNTQsIDgsIDI3LCA3LCAyNTQsIAotICAgIDcsIDI3LCA3LCAyNTQsIDYsIDI3LCA3LCAyNTQsIDUsIDI3LCA3LCAyNTQsIDQsIDI3LCA3LCAyNTQsIDMsIDI3LCA3LCAKLSAgICAyNTQsIDIsIDI3LCA3LCAyNTQsIDEsIDI3LCA3LCAyNTQsIDAsIDI3LCA3LCAyNTMsIDI1NSwgMjcsIDcsIDI1MywgMjU0LCAKLSAgICAyNywgNywgMjUzLCAyNTMsIDI3LCA3LCAyNTMsIDI1MiwgMjcsIDcsIDI1MywgMjUxLCAyNywgNywgMjUzLCAyNTAsIDI3LCAKLSAgICA3LCAyNTMsIDI0OSwgMjcsIDcsIDI1MywgMjQ4LCAyNywgNywgMjUzLCAyNDcsIDI3LCA3LCAyNTMsIDI0NiwgMjcsIDcsIAotICAgIDI1MywgMjQ1LCAyNywgNywgMjUzLCAyNDQsIDI3LCA3LCAyNTMsIDI0MywgMjcsIDcsIDI1MywgMjQyLCAyNywgNywgMjUzLCAKLSAgICAyNDEsIDI3LCA3LCAyNTMsIDI0MCwgMjcsIDcsIDI1MywgMjM5LCAyNywgNywgMjUzLCAyMzgsIDI3LCA3LCAyNTMsIDIzNywgCi0gICAgMjcsIDcsIDI1MywgMjM2LCAyNywgNywgMjUzLCAyMzUsIDI3LCA3LCAyNTMsIDIzNCwgMjcsIDcsIDI1MywgMjMzLCAyNywgCi0gICAgNywgMjUzLCAyMzIsIDI3LCA3LCAyNTMsIDIzMSwgMjcsIDcsIDI1MywgMjMwLCAyNywgNywgMjUzLCAyMjksIDI3LCA3LCAKLSAgICAyNTMsIDIyOCwgMjcsIDcsIDI1MywgMjI3LCAyNywgNywgMjUzLCAyMjYsIDI3LCA3LCAyNTMsIDIyNSwgMjcsIDcsIDI1MywgCi0gICAgMjI0LCAyNywgNywgMjUzLCAyMjMsIDI3LCA3LCAyNTMsIDIyMiwgMjcsIDcsIDI1MywgMjIxLCAyNywgNywgMjUzLCAyMjAsIAotICAgIDI3LCA3LCAyNTMsIDIxOSwgMjcsIDcsIDI1MywgMjE4LCAyNywgNywgMjUzLCAyMTcsIDI3LCA3LCAyNTMsIDIxNiwgMjcsIAotICAgIDcsIDI1MywgMjE1LCAyNywgNywgMjUzLCAyMTQsIDI3LCA3LCAyNTMsIDIxMywgMjcsIDcsIDI1MywgMjEyLCAyNywgNywgCi0gICAgMjUzLCAyMTEsIDI3LCA3LCAyNTMsIDIxMCwgMjcsIDcsIDI1MywgMjA5LCAyNywgNywgMjUzLCAyMDgsIDI3LCA3LCAyNTMsIAotICAgIDIwNywgMjcsIDcsIDI1MywgMjA2LCAyNywgNywgMjUzLCAyMDUsIDI3LCA3LCAyNTMsIDIwNCwgMjcsIDcsIDI1MywgMjAzLCAKLSAgICAyNywgNywgMjUzLCAyMDIsIDI3LCA3LCAyNTMsIDIwMSwgMjcsIDcsIDI1MywgMjAwLCAyNywgNywgMjUzLCAxOTksIDI3LCAKLSAgICA3LCAyNTMsIDE5OCwgMjcsIDcsIDI1MywgMTk3LCAyNywgNywgMjUzLCAxOTYsIDI3LCA3LCAyNTMsIDE5NSwgMjcsIDcsIAotICAgIDI1MywgMTk0LCAyNywgNywgMjUzLCAxOTMsIDI3LCA3LCAyNTMsIDE5MiwgMjcsIDcsIDI1MywgMTkxLCAyNywgNywgMjUzLCAKLSAgICAxOTAsIDI3LCA3LCAyNTMsIDE4OSwgMjcsIDcsIDI1MywgMTg4LCAyNywgNywgMjUzLCAxODcsIDI3LCA3LCAyNTMsIDE4NiwgCi0gICAgMjcsIDcsIDI1MywgMTg1LCAyNywgNywgMjUzLCAxODQsIDI3LCA3LCAyNTMsIDE4MywgMjcsIDcsIDI1MywgMTgyLCAyNywgCi0gICAgNywgMjUzLCAxODEsIDI3LCA3LCAyNTMsIDE4MCwgMjcsIDcsIDI1MywgMTc5LCAyNywgNywgMjUzLCAxNzcsIDI3LCA3LCAKLSAgICAyNTMsIDE3NiwgMjcsIDcsIDI1MywgMTc1LCAyNywgNywgMjUzLCAxNzQsIDI3LCA3LCAyNTMsIDE3MywgMjcsIDcsIDI1MywgCi0gICAgMTcyLCAyNywgNywgMjUzLCAxNzEsIDI3LCA3LCAyNTMsIDE3MCwgMjcsIDcsIDI1MywgMTY5LCAyNywgNywgMjUzLCAxNjgsIAotICAgIDI3LCA3LCAyNTMsIDE2NywgMjcsIDcsIDI1MywgMTY0LCAyNywgNywgMjUzLCAxNjMsIDI3LCA3LCAyNTMsIDE2MiwgMjcsIAotICAgIDcsIDI1MywgMTYxLCAyNywgNywgMjUzLCAxNTcsIDI3LCA3LCAyNTMsIDE1NiwgMjcsIDcsIDI1MywgMTU1LCAyNywgNywgCi0gICAgMjUzLCAxNTQsIDI3LCA3LCAyNTMsIDE1MywgMjcsIDcsIDI1MywgMTUyLCAyNywgNywgMjUzLCAxNTEsIDI3LCA3LCAyNTMsIAotICAgIDE1MCwgMjcsIDcsIDI1MywgMTQ5LCAyNywgNywgMjUzLCAxNDgsIDI3LCA3LCAyNTMsIDE0NywgMjcsIDcsIDI1MywgMTQ2LCAKLSAgICAyNywgNywgMjUzLCAxNDUsIDI3LCA3LCAyNTMsIDE0NCwgMjcsIDcsIDI1MywgMTQzLCAyNywgNywgMjUzLCAxNDIsIDI3LCAKLSAgICA3LCAyNTMsIDE0MSwgMjcsIDcsIDI1MywgMTQwLCAyNywgNywgMjUzLCAxMzksIDI3LCA3LCAyNTMsIDEzNywgMjcsIDcsIAotICAgIDI1MywgMTM2LCAyNywgNywgMjUzLCAxMzUsIDI3LCA3LCAyNTMsIDEzNCwgMjcsIDcsIDI1MywgMTMzLCAyNywgNywgMjUzLCAKLSAgICAxMzIsIDI3LCA3LCAyNTMsIDEzMSwgMjcsIDcsIDI1MywgMTMwLCAyNywgNywgMjUzLCAxMjksIDI3LCA3LCAyNTMsIDEyOCwgCi0gICAgMjcsIDcsIDI1MywgMTI3LCAyNywgNywgMjUzLCAxMjYsIDI3LCA3LCAyNTMsIDEyNSwgMjcsIDcsIDI1MywgMTI0LCAyNywgCi0gICAgNywgMjUzLCAxMjMsIDI3LCA3LCAyNTMsIDEyMiwgMjcsIDcsIDI1MywgMTIxLCAyNywgNywgMjUzLCAxMjAsIDI3LCA3LCAKLSAgICAyNTMsIDExOSwgMjcsIDcsIDI1MywgMTE4LCAyNywgNywgMjUzLCAxMTcsIDI3LCA3LCAyNTMsIDExNiwgMjcsIDcsIDI1MywgCi0gICAgMTE1LCAyNywgNywgMjUzLCAxMTQsIDI3LCA3LCAyNTMsIDExMywgMjcsIDcsIDI1MywgMTEyLCAyNywgNywgMjUzLCAxMTEsIAotICAgIDI3LCA3LCAyNTMsIDExMCwgMjcsIDcsIDI1MywgMTA5LCAyNywgNywgMjUzLCAxMDgsIDI3LCA3LCAyNTMsIDEwNywgMjcsIAotICAgIDcsIDI1MywgMTA2LCAyNywgNywgMjUzLCAxMDUsIDI3LCA3LCAyNTMsIDEwNCwgMjcsIDcsIDI1MywgMTAzLCAyNywgNywgCi0gICAgMjUzLCAxMDIsIDI3LCA3LCAyNTMsIDEwMSwgMjcsIDcsIDI1MywgMTAwLCAyNywgNywgMjUzLCA5OSwgMjcsIDcsIDI1MywgCi0gICAgOTgsIDI3LCA3LCAyNTMsIDk3LCAyNywgNywgMjUzLCA5NiwgMjcsIDcsIDI1MywgOTUsIDI3LCA3LCAyNTMsIDk0LCAyNywgCi0gICAgNywgMjUzLCA5MywgMjcsIDcsIDI1MywgOTIsIDI3LCA3LCAyNTMsIDkxLCAyNywgNywgMjUzLCA5MCwgMjcsIDcsIDI1MywgCi0gICAgODksIDI3LCA3LCAyNTMsIDg4LCAyNywgNywgMjUzLCA4NywgMjcsIDcsIDI1MywgODYsIDI3LCA3LCAyNTMsIDg1LCAyNywgCi0gICAgNywgMjUzLCA4NCwgMjcsIDcsIDI1MywgODMsIDI3LCA3LCAyNTMsIDgyLCAyNywgNywgMjUzLCA4MSwgMjcsIDcsIDI1MywgCi0gICAgODAsIDI3LCA3LCAyNTMsIDc5LCAyNywgNywgMjUzLCA3OCwgMjcsIDcsIDI1MywgNzcsIDI3LCA3LCAyNTMsIDc2LCAyMTYsIAotICAgIDIyMSwgMjE5LCAyNDUsIDIxNiwgNTcsIDI3LCA3LCAyNTMsIDc1LCAyNywgNywgMjUzLCA3NCwgMjcsIDcsIDI1MywgNzMsIAotICAgIDI3LCA3LCAyNTMsIDcyLCAyNywgNywgMjUzLCA3MSwgMjcsIDcsIDI1MywgNzAsIDI3LCA3LCAyNTMsIDY5LCAyNywgNywgCi0gICAgMjUzLCA2OCwgMjcsIDcsIDI1MywgNjcsIDI3LCA3LCAyNTMsIDY2LCAyNywgNywgMjUzLCA2NSwgMjcsIDcsIDI1MywgNjQsIAotICAgIDE5OSwgMjcsIDcsIDI1MywgNjMsIDI3LCA3LCAyNTMsIDYyLCAyNywgNywgMjUzLCA2MSwgMjcsIDcsIDI1MywgNjAsIDI3LCAKLSAgICA3LCAyNTMsIDU5LCAyNywgNywgMjUzLCA1OCwgMjcsIDcsIDI1MywgNTcsIDI3LCA3LCAyNTMsIDU1LCAyNywgNywgMjUzLCAKLSAgICA1MywgMjcsIDcsIDI1MywgNTEsIDI3LCA3LCAyNTMsIDQ5LCAyNywgNywgMjUzLCA0NywgMjcsIDcsIDI1MywgNDUsIDI3LCAKLSAgICA3LCAyNTMsIDQzLCAyNywgNywgMjUzLCA0MSwgMjcsIDcsIDI1MywgMzksIDI3LCA3LCAyNTMsIDM3LCAyNDgsIDE0MiwgCi0gICAgMjI3LCAzNiwgODIsIDI3LCA3LCAyNTMsIDM1LCAyNDEsIDg0LCAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzQsIDI3LCA3LCAKLSAgICAyNTMsIDMyLCAyNywgNywgMjUzLCAzMCwgMjcsIDcsIDI1MywgMjgsIDI3LCA3LCAyNTMsIDI2LCAyNywgNywgMjUzLCAyNCwgCi0gICAgMjcsIDcsIDI1MywgMjIsIDI3LCA3LCAyNTMsIDIwLCAyNywgNywgMjUzLCAxOCwgMjcsIDcsIDI1MywgMTcsIDI3LCA3LCAKLSAgICAyNTMsIDE2LCAyNywgNywgMjUzLCAxNSwgMjcsIDcsIDI1MywgMTQsIDI3LCA3LCAyNTMsIDEzLCAyNywgNywgMjUzLCAxMiwgCi0gICAgMjcsIDcsIDI1MywgMTEsIDI3LCA3LCAyNTMsIDEwLCAyNywgNywgMjUzLCA5LCAyNywgNywgMjUzLCA4LCAyNywgNywgMjUzLCAKLSAgICA3LCAyNywgNywgMjUzLCA2LCAyNywgNywgMjUzLCA1LCAyNywgNywgMjUzLCA0LCAyNywgNywgMjUzLCAzLCAyNywgNywgCi0gICAgMjUzLCAyLCAyNywgNywgMjUzLCAxLCAyNywgNywgMjUzLCAwLCAyNywgNywgMjUyLCAyNTUsIDI3LCA3LCAyNTIsIDI1NCwgCi0gICAgMjcsIDcsIDI1MiwgMjUzLCAyNywgNywgMjUyLCAyNTIsIDI3LCA3LCAyNTIsIDI1MSwgMjcsIDcsIDI1MiwgMjUwLCAyNywgCi0gICAgNywgMjUyLCAyNDksIDI3LCA3LCAyNTIsIDI0OCwgMjcsIDcsIDI1MiwgMjQ3LCAyNywgNywgMjUyLCAyNDYsIDI3LCA3LCAKLSAgICAyNTIsIDI0NSwgMjcsIDcsIDI1MiwgMjQ0LCAyNywgNywgMjUyLCAyNDMsIDI3LCA3LCAyNTIsIDI0MiwgMjcsIDcsIDI1MiwgCi0gICAgMjQxLCAyNywgNywgMjUyLCAyNDAsIDI3LCA3LCAyNTIsIDIzOSwgMjcsIDcsIDI1MiwgMjM4LCAyNywgNywgMjUyLCAyMzcsIAotICAgIDI3LCA3LCAyNTIsIDIzNiwgMjcsIDcsIDI1MiwgMjM1LCAyNywgNywgMjUyLCAyMzQsIDI3LCA3LCAyNTIsIDIzMywgMjcsIAotICAgIDcsIDI1MiwgMjMyLCAyNywgNywgMjUyLCAyMzEsIDI3LCA3LCAyNTIsIDIzMCwgMjcsIDcsIDI1MiwgMjI5LCAyNywgNywgCi0gICAgMjUyLCAyMjgsIDI3LCA3LCAyNTIsIDIyNywgMjcsIDcsIDI1MiwgMjI2LCAyNywgNywgMjUyLCAyMjUsIDI3LCA3LCAyNTIsIAotICAgIDIyNCwgMjcsIDcsIDI1MiwgMjIzLCAyNywgNywgMjUyLCAyMjIsIDI3LCA3LCAyNTIsIDIyMSwgMjcsIDcsIDI1MiwgMjIwLCAKLSAgICAyNywgNywgMjUyLCAyMTksIDI3LCA3LCAyNTIsIDIxOCwgMjcsIDcsIDI1MiwgMjE3LCAyNywgNywgMjUyLCAyMTYsIDI3LCAKLSAgICA3LCAyNTIsIDIxNSwgMjcsIDcsIDI1MiwgMjE0LCAyNywgNywgMjUyLCAyMTMsIDI3LCA3LCAyNTIsIDIxMiwgMjcsIDcsIAotICAgIDI1MiwgMjExLCAyNywgNywgMjUyLCAyMTAsIDI3LCA3LCAyNTIsIDIwOSwgMjcsIDcsIDI1MiwgMjA4LCAyNywgNywgMjUyLCAKLSAgICAyMDcsIDI3LCA3LCAyNTIsIDIwNiwgMjcsIDcsIDI1MiwgMjA1LCAyNywgNywgMjUyLCAyMDQsIDI3LCA3LCAyNTIsIDIwMywgCi0gICAgMjcsIDcsIDI1MiwgMjAyLCAyNywgNywgMjUyLCAyMDEsIDI3LCA3LCAyNTIsIDIwMCwgMjcsIDcsIDI1MiwgMTk5LCAyNywgCi0gICAgNywgMjUyLCAxOTgsIDI3LCA3LCAyNTIsIDE5NywgMjcsIDcsIDI1MiwgMTk2LCAyNywgNywgMjUyLCAxOTUsIDI3LCA3LCAKLSAgICAyNTIsIDE5NCwgMjcsIDcsIDI1MiwgMTkzLCAyNywgNywgMjUyLCAxOTIsIDI3LCA3LCAyNTIsIDE5MSwgMjcsIDcsIDI1MiwgCi0gICAgMTkwLCAyNywgNywgMjUyLCAxODksIDI3LCA3LCAyNTIsIDE4OCwgMjcsIDcsIDI1MiwgMTg3LCAyNywgNywgMjUyLCAxODYsIAotICAgIDI3LCA3LCAyNTIsIDE4NSwgMjcsIDcsIDI1MiwgMTg0LCAyNywgNywgMjUyLCAxODMsIDI3LCA3LCAyNTIsIDE4MiwgMjcsIAotICAgIDcsIDI1MiwgMTgxLCAyNywgNywgMjUyLCAxODAsIDI3LCA3LCAyNTIsIDE3OSwgMjcsIDcsIDI1MiwgMTc4LCAyNywgNywgCi0gICAgMjUyLCAxNzcsIDI3LCA3LCAyNTIsIDE3NiwgMjcsIDcsIDI1MiwgMTc1LCAyNywgNywgMjUyLCAxNzQsIDI3LCA3LCAyNTIsIAotICAgIDE3MywgMjcsIDcsIDI1MiwgMTcyLCAyNywgNywgMjUyLCAxNzEsIDI3LCA3LCAyNTIsIDE3MCwgMjcsIDcsIDI1MiwgMTY5LCAKLSAgICAyNywgNywgMjUyLCAxNjgsIDI3LCA3LCAyNTIsIDE2NywgMjcsIDcsIDI1MiwgMTY2LCAyNywgNywgMjUyLCAxNjUsIDI3LCAKLSAgICA3LCAyNTIsIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDEzNiwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAKLSAgICAxOTgsIDIzOSwgMTc4LCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMTgsIDQ3LCAyMjQsIDE5OCwgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxMDcsIDIyNCwgMTk3LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTk1LCAyNCwgMSwgMjE4LCAxOTgsIDIwOCwgMTk5LCAyMjQsIDE5NywgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMjAsIDIxNSwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyNTQsIDIxOSwgMTY5LCAyMjIsIAotICAgIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMTgsIDQ3LCAyMTksIDE2OSwgMjIyLCAzMywgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTYsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjA3LCAyMDQsIDIyNSwgMTU3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTk3LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNSwgMTUzLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTExLCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMTg2LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIxMywgMTE0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKLSAgICAxNjMsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMCwgMTc5LCAyNCwgMSwgMjE4LCAxOTgsIAotICAgIDIyMiwgMTM1LCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAxNzYsIDIyOCwgMTc1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjQsIDIwNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE2MCwgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMTksIDYyLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTI1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgNTUsIDIyMiwgMTcwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMTk2LCAyMjQsIDIwOCwgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAxMDYsIDIwMiwgMTg4LCAyMjMsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIDEwMSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjEsIDEwMSwgMjIxLCAxMDIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCA5MSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjQsIDE5MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDMxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIzMCwgMjEsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxNjksIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMywgMjYsIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgMjE5LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgCi0gICAgMTU0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNzQsIDI0LCAxLCAyMTgsIDE5OCwgMjE3LCAxNzIsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjA3LCAyMDEsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNTEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjA5LCAxMTcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKLSAgICAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAyMiwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDE4OCwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjQsIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTkxLCAyNCwgMSwgMjE4LCAxOTgsIDIyNywgMjksIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjM5LCAyNDYsIDI0LCAxLCAyMTgsIDE5OCwgMjE1LCAyMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAyMzMsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMDcsIDIxOCwgMTU3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIxMiwgMjQ3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMjMwLCAKLSAgICAyMjEsIDExMSwgMjAyLCAxOTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyMzcsIDIyNCwgNTEsIDI0LCAxLCAyMTgsIDE5OCwgCi0gICAgMjE5LCAxNjQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyLCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgMjMxLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMiwgMTczLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNDQsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjI1LCA0OSwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMDksIAotICAgIDEyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2NSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjEsIDExNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1OCwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI0OCwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjksIDI0MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk4LCAyMDYsIAotICAgIDUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNiwgMjM5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMjMwLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMywgNzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCA0OCwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDExMywgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjI1LCAxNTUsIDI0LCAxLCAyMTgsIDE5NywgMjEyLCAxNTIsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEzLCAxMTgsIDIwNywgMjAzLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMzEsIDIyMSwgOTcsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI1LCA1NSwgMjI1LCAxNTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCA5MiwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDE4LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNTAsIDI0LCAxLCAyMTgsIDE5NywgMjMwLCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgCi0gICAgMTksIDI0LCAxLCAyMTgsIDE5NywgMjAzLCA5NiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5NywgMjI4LCAyOSwgMjIxLCAKLSAgICAxMTEsIDIyMSwgNiwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDk0LCAyMTMsIDE3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgCi0gICAgMjQ5LCAyMjIsIDQ3LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTgsIDI0LCAxLCAyMTgsIDE5NywgMjE4LCAxMDUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjA3LCAyMDQsIDIyMSwgMTA5LCAyNCwgMSwgMjE4LCAxOTcsIDIxMywgMjIsIDIyMiwgNDIsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjEzLCAxOCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDE5OCwgMjA5LCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI1LCAzNywgMjI1LCA1MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjAsIDI0OSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjksIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMzgsIDk5LCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTU1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyOCwgMTA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgNjUsIDI0LCAxLCAyMTgsIDE5NywgMjA1LCAyMzcsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMzcsIDIyMywgMTg0LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTcyLCAyMjUsIDMzLCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMjE1LCAyNCwgMSwgMjE4LCAxOTcsIDIxNSwgMTIsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEwLCAxNCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIxMCwgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDE1NiwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMjIsIDE1NywgMjI4LCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjAwLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIxMCwgMjMwLCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNDEsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAzNiwgMjQsIDEsIDIxOCwgCi0gICAgMTk3LCAyMjEsIDksIDI0LCAxLCAyMTgsIDE5NywgMjE3LCAxNzYsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDksIDIyMiwgCi0gICAgMTc0LCAyNCwgMSwgMjE4LCAxOTcsIDI0MCwgMzEsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAyOCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyNDAsIDUzLCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTY3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDM2LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDEyLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMTc1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyMiwgMTgwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTIwLCAyNCwgMSwgMjE4LCAxOTcsIDE5MiwgMjQsIAotICAgIDEsIDIxOCwgMTk3LCAyMjksIDc3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTI1LCAyNCwgMSwgMTY4LCAyMjIsIDEzNiwgCi0gICAgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyMCwgMjE0LCAyNCwgMSwgMTY4LCAyMDIsIDE5NiwgMjQsIDEsIDE2OCwgMjA0LCAKLSAgICA5NSwgMjQsIDEsIDE2OCwgMjIyLCAxNzMsIDI0LCAxLCAxNjgsIDIyMywgMTQsIDI0LCAxLCAxNjgsIDIyMiwgMTQzLCAyNCwgCi0gICAgMSwgMTY4LCAyMzgsIDEwOCwgMjQsIDEsIDE2OCwgMjI1LCA0NSwgMjQsIDEsIDE2OCwgMjM4LCAyMDUsIDI0LCAxLCAxNjgsIAotICAgIDIyMCwgMjM5LCAyMjQsIDkxLCAyMjQsIDIxMiwgMjQsIDEsIDE2OCwgMjIxLCA4OSwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCA0MiwgMjQsIDEsIDE2OCwgMjE4LCAxMTEsIDI0LCAxLCAxNjgsIDIyMiwgMjU1LCAyNCwgMSwgMTY4LCAyMjUsIDUzLCAKLSAgICAyNDcsIDg4LCAyNCwgMSwgMTY4LCAyMjksIDE1NywgMjQsIDEsIDE2OCwgMjM4LCAxMDksIDI0LCAxLCAxNjgsIDIyOSwgCi0gICAgMTY0LCAyNCwgMSwgMTY4LCAyMDIsIDIxNCwgMjIzLCAyMTUsIDI0LCAxLCAxNjgsIDIyMCwgMjA4LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDMwLCAyNCwgMSwgMTY4LCAyMjEsIDExOSwgMjQsIDEsIDE2OCwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgMjAzLCAxOSwgCi0gICAgMjQsIDEsIDE2OCwgMjI4LCAyNDEsIDI0LCAxLCAxNjgsIDIzMCwgNDEsIDI0LCAxLCAxNjgsIDIxMywgMTEzLCAyNCwgMSwgCi0gICAgMTY4LCAyMjMsIDgsIDI0LCAxLCAxNjgsIDIxMCwgMTIsIDI0LCAxLCAxNjgsIDIyMiwgMTYsIDI0LCAxLCAxNjgsIDIwOCwgCi0gICAgMTk5LCAyMDIsIDE5OSwgMjQsIDEsIDE2OCwgMjExLCA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MywgMjIxLCA2LCAyNCwgMSwgCi0gICAgMTY4LCAyMDUsIDIzNiwgMjQsIDEsIDE2OCwgMjIzLCA3OCwgMjQsIDEsIDE2OCwgMjI1LCAxNzcsIDIyOSwgMTY2LCAyNCwgCi0gICAgMSwgMTY4LCAyMjEsIDEwMiwgMjQsIDEsIDE2OCwgMjIyLCAxNTgsIDI0LCAxLCAxNjgsIDIyOCwgMTEsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgMzgsIDI0LCAxLCAxNjgsIDIyNCwgMTg5LCAyNCwgMSwgMTY4LCAyMjEsIDk2LCAyNCwgMSwgMTY4LCAyMDksIDExNiwgCi0gICAgMjQsIDEsIDE2OCwgMjIyLCAxNjAsIDI0LCAxLCAxNjgsIDIzOSwgMTA2LCAyNCwgMSwgMTY4LCAyMjMsIDEzLCAyNCwgMSwgCi0gICAgMTY4LCAyMjEsIDEyMSwgMjQsIDEsIDE2OCwgMjIxLCAxMTcsIDI0LCAxLCAxNjgsIDI0NywgMTY5LCAyNCwgMSwgMTY4LCAKLSAgICAyMDUsIDIzOCwgMjQsIDEsIDE2OCwgMjI1LCA0MywgMjQsIDEsIDE2OCwgMjE1LCAxNDUsIDI0LCAxLCAxNjgsIDIyMiwgNDYsIAotICAgIDI0LCAxLCAxNjgsIDIyOCwgMjgsIDI0LCAxLCAxNjgsIDIwOCwgMTk2LCAyNCwgMSwgMTY4LCAyMjEsIDEwMywgMjIyLCAKLSAgICAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMzgsIDI0LCAxLCAxNjgsIDIyOSwgMTcwLCAyNCwgMSwgMTY4LCAyMjIsIDE2NSwgMjQsIAotICAgIDEsIDE2OCwgMjI1LCAxNTAsIDI0LCAxLCAxNjgsIDIyNSwgMzEsIDI0LCAxLCAxNjgsIDIyNiwgMjM5LCAyNCwgMSwgMTY4LCAKLSAgICAyMjgsIDE3NSwgMjQsIDEsIDE2OCwgMjIyLCA0NCwgMjQsIDEsIDE2OCwgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIwMywgCi0gICAgMjA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MSwgMjQsIDEsIDE2OCwgMjIxLCAxMDYsIDI0LCAxLCAxNjgsIDIyMSwgOTgsIDI0LCAKLSAgICAxLCAxNjgsIDIyOCwgMTkwLCAyMjIsIDIsIDI0LCAxLCAxNjgsIDIyMSwgMTA0LCAyNCwgMSwgMTY4LCAyMjMsIDIxLCAyNCwgCi0gICAgMSwgMTY4LCAyMjUsIDE3NywgMjIxLCAxMDksIDI0LCAxLCAxNjgsIDIwMywgMTEwLCAyNCwgMSwgMTY4LCAyMjMsIDIwLCAKLSAgICAyNCwgMSwgMTY4LCAyMTIsIDE5NCwgMjQsIDEsIDE2OCwgMjEzLCAxMTYsIDI0LCAxLCAxNjgsIDIyNSwgMzksIDI0LCAxLCAKLSAgICAxNjgsIDIyNSwgMTU3LCAyNCwgMSwgMTY4LCAyMjUsIDQ5LCAyNCwgMSwgMTY4LCAyMjksIDE1OCwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCA0MCwgMjQsIDEsIDE2OCwgMjI5LCAxNjIsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIDIxOCwgMTYyLCAyNCwgMSwgMTY4LCAKLSAgICAyMDIsIDE3OSwgMjQsIDEsIDE2OCwgMjIyLCAzNCwgMjQsIDEsIDE2OCwgMjI0LCAxNDQsIDI0LCAxLCAxNjgsIDIyMywgCi0gICAgMjQ0LCAyNCwgMSwgMTY4LCAyMTIsIDI1MCwgMjQsIDEsIDE2OCwgMjI5LCAxODEsIDIyNywgMjQ2LCAyNCwgMSwgMTY4LCAKLSAgICAyMjksIDE4MSwgMjQwLCA2NiwgMjQsIDEsIDE2OCwgMjIyLCAxOTUsIDI0LCAxLCAxNjgsIDIyMywgNzUsIDI0LCAxLCAxNjgsIAotICAgIDIyNywgOTYsIDI0LCAxLCAxNjgsIDIxOCwgMTIzLCAyNCwgMSwgMTY4LCAyMTksIDksIDI0LCAxLCAxNjgsIDIwOSwgMTMyLCAKLSAgICAyNCwgMSwgMTM0LCAyMjUsIDI5LCAyNCwgMSwgMTM0LCAyMDQsIDkzLCAyNCwgMSwgMTM0LCAyMjIsIDMyLCAyNCwgMSwgCi0gICAgMTM0LCAyMjQsIDE5NywgMjQsIDEsIDEzNCwgMjIyLCAzMCwgMjQsIDEsIDEzNCwgMjI3LCAxNDEsIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMzUsIDI0LCAxLCAxMzQsIDIyMSwgMTE2LCAyNCwgMSwgMTM0LCAyMjIsIDE3OSwgMjQsIDEsIDEzNCwgMjIxLCA2LCAKLSAgICAyNCwgMSwgMTM0LCAyMDMsIDIxNiwgMjQsIDEsIDEzNCwgMjIyLCAxMzMsIDI0LCAxLCAxMzQsIDIxMywgNDEsIDI0LCAxLCAKLSAgICAxMzQsIDIyMiwgMTQ0LCAyNCwgMSwgMTM0LCAyMjksIDE2NSwgMjQsIDEsIDEzNCwgMjA5LCAxMTgsIDI0LCAxLCAxMzQsIAotICAgIDIxMywgMjAsIDI0LCAxLCAxMzQsIDIyMiwgNDMsIDI0LCAxLCAxMzQsIDIxMCwgMjMwLCAyNCwgMSwgMTM0LCAyMjksIDE3MCwgCi0gICAgMjQsIDEsIDEzNCwgMjAzLCA5OCwgMjQsIDEsIDEzNCwgMjI4LCAxOTEsIDI0LCAxLCAxMzQsIDIxNCwgMjMzLCAyNCwgMSwgCi0gICAgMTM0LCAyMjQsIDIwMiwgMjQsIDEsIDEzNCwgMjIzLCAxMiwgMjQsIDEsIDEzNCwgMjI1LCAxMjUsIDI0LCAxLCAxMzQsIAotICAgIDIyNCwgMjA4LCAyNCwgMSwgMTM0LCAyMTMsIDExNSwgMjQsIDEsIDEzNCwgMjAzLCA0MiwgMjQsIDEsIDEzNCwgMjIyLCAzNywgCi0gICAgMjQsIDEsIDEzNCwgMjI5LCAxNjEsIDIyNSwgMzIsIDI0LCAxLCAxMzQsIDIyMiwgMTQwLCAyNCwgMSwgMTM0LCAyMDcsIAotICAgIDIwMywgMjQsIDEsIDEzNCwgMjM4LCAxMTgsIDI0LCAxLCAxMzQsIDIyMiwgMTMwLCAyNCwgMSwgMTM0LCAyNDAsIDMyLCAyNCwgCi0gICAgMSwgMTM0LCAyMjMsIDE2LCAyNCwgMSwgMTM0LCAyMjQsIDE4MSwgMjQsIDEsIDEzNCwgMjI3LCAxNjksIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMjU0LCAyNCwgMSwgMTM0LCAyMjQsIDUwLCAyNCwgMSwgMTM0LCAyMjQsIDE4NSwgMjQsIDEsIDEzNCwgMjE3LCAKLSAgICAxNTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgzLCAyNCwgMSwgMTM0LCAyMjQsIDE5OSwgMjQsIDEsIDEzNCwgMjI2LCAyMjIsIAotICAgIDI0LCAxLCAxMzQsIDIyMSwgMTA4LCAyNCwgMSwgMTM0LCAyMjUsIDUyLCAyNCwgMSwgMTM0LCAyMjgsIDE2NSwgMjQsIDEsIAotICAgIDEzNCwgMjIwLCAyNTEsIDI0LCAxLCAxMzQsIDIwOSwgMTIxLCAyNCwgMSwgMTM0LCAyMTEsIDI0NCwgMjQsIDEsIDEzNCwgCi0gICAgMjAyLCAxNzksIDI0LCAxLCAxMzQsIDIyOSwgMTYyLCAyNCwgMSwgMTM0LCAyMTYsIDIwMSwgMjQsIDEsIDEzNCwgMjA5LCAKLSAgICAxNzUsIDI0LCAxLCAxMzQsIDIyMiwgMTQxLCAyNCwgMSwgMTM0LCAyMjQsIDIwNCwgMjQsIDEsIDEzNCwgMjIxLCAxMDcsIAotICAgIDI0LCAxLCAxMzQsIDIyOSwgMTYwLCAyNCwgMSwgMTM0LCAyMTgsIDExNywgMjQsIDEsIDEzNCwgMjE4LCAyMTMsIDI0LCAxLCAKLSAgICAxMzQsIDIyMCwgMjI1LCAyNCwgMSwgMTM0LCAyMjcsIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxODAsIDI0LCAxLCAxMzQsIAotICAgIDIyNCwgMjAxLCAyNCwgMSwgMTM0LCAyMjIsIDE1MywgMjQsIDEsIDEzNCwgMjAyLCAxOTMsIDI0LCAxLCAxMzQsIDIxOSwgCi0gICAgOTYsIDI0LCAxLCAxMzQsIDIwMiwgMTkyLCAyNCwgMSwgMTM0LCAyMjMsIDIxLCAyNCwgMSwgMTM0LCAyMjEsIDk3LCAyNCwgCi0gICAgMSwgMTM0LCAyMTEsIDcsIDI0LCAxLCAxMzQsIDIyOCwgMTk1LCAyNCwgMSwgMTM0LCAyMjIsIDE2OSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAxMzgsIDI0LCAxLCAxMzQsIDIwNywgMTg1LCAyNCwgMSwgMTM0LCAyMjQsIDIxMiwgMjQsIDEsIDEzNCwgMjI4LCAKLSAgICAxODUsIDI0LCAxLCAxMzQsIDIyMSwgMTA1LCAyNCwgMSwgMTM0LCAyMDksIDExOSwgMjQsIDEsIDEzNCwgMjI1LCAxNTIsIAotICAgIDI0LCAxLCAxMzQsIDIyMiwgMTc4LCAyNCwgMSwgMTM0LCAyMjcsIDE2OCwgMjQsIDEsIDEzNCwgMjIyLCAxNTksIDI0LCAxLCAKLSAgICAxMzQsIDIyMSwgMTEwLCAyNCwgMSwgMTM0LCAyMjIsIDE2LCAyNCwgMSwgMTM0LCAyMzgsIDEwMiwgMjQsIDEsIDEzNCwgCi0gICAgMjI4LCAyMDksIDI0LCAxLCAxMzQsIDIxNiwgMTA4LCAyMjAsIDQ1LCAyNCwgMSwgMTM0LCAyMTAsIDEsIDI0LCAxLCAxMzQsIAotICAgIDIwOCwgMTQxLCAyNCwgMSwgMTM0LCAyMjAsIDI0OCwgMjQsIDEsIDEzNCwgMjE2LCAzLCAyNCwgMSwgMTM0LCAyMjcsIDIyNSwgCi0gICAgMjQsIDEsIDEzNCwgMjI1LCA3LCAyNCwgMSwgMTM0LCAyMjYsIDE4NSwgMjQsIDEsIDEzNCwgMjEwLCAxNzksIDI0LCAxLCAKLSAgICAxMzQsIDIyMywgMjQ2LCAyNCwgMSwgMTM0LCAyMTMsIDYsIDI0LCAxLCAxMzQsIDIxMywgMTYsIDI0LCAxLCAxMzQsIDIyOCwgCi0gICAgMTM3LCAyNCwgMSwgMTM0LCAyMjEsIDg0LCAyNCwgMSwgMTM0LCAyMTIsIDE5OSwgMjQsIDEsIDEzNCwgMjIxLCA5OSwgMjQsIAotICAgIDEsIDEzNCwgMjE5LCAyMywgMjQsIDEsIDEzNCwgMjIyLCAxMDAsIDI0LCAxLCAxMzQsIDIxMiwgMjI5LCAyNCwgMSwgMTM0LCAKLSAgICAyMTcsIDE3MSwgMjQsIDEsIDEzNCwgMjIzLCAxODQsIDI0LCAxLCAxMzQsIDIyNywgMTAsIDI0LCAxLCAxMzQsIDIxNiwgCi0gICAgMTA4LCAyMjMsIDIzOSwgMjQsIDEsIDEzNCwgMjA5LCAyLCAyNCwgMSwgMTM0LCAyMjEsIDg2LCAyNCwgMSwgMTM0LCAyMjUsIAotICAgIDUzLCAyMTMsIDExMSwgMjQsIDEsIDEzNCwgMjE0LCAyMzEsIDI0LCAxLCAxMzQsIDI0MCwgMTA3LCAyNCwgMSwgOTMsIDIyMywgCi0gICAgMjAsIDI0LCAxLCA5MywgMjA4LCAxNDcsIDI0LCAxLCA5MywgMjI1LCA0MiwgMjQsIDEsIDkzLCAyMjgsIDExLCAyNCwgMSwgCi0gICAgOTMsIDIwNSwgMTc3LCAyNCwgMSwgOTMsIDIyNywgMTYsIDI0LCAxLCA5MywgMjE5LCAxNjgsIDI0LCAxLCA5MywgMjExLCAKLSAgICAyNTUsIDI0LCAxLCA5MywgMjE2LCAxNzYsIDI0LCAxLCA5MywgMjIxLCAxMTIsIDI0LCAxLCA5MywgMjIyLCAyNDcsIDI0LCAKLSAgICAxLCA5MywgMjE3LCAxODgsIDI0LCAxLCA5MywgMjA5LCAyMzIsIDI0LCAxLCA5MywgMjIyLCAxNDYsIDI0LCAxLCA5MywgCi0gICAgMjI4LCAyMzcsIDI0LCAxLCA5MywgMjAzLCAyMDgsIDI0LCAxLCA5MywgMjE0LCAxNjUsIDI0LCAxLCA5MywgMjIyLCAxNzAsIAotICAgIDI0LCAxLCA5MywgMjE5LCAxNjUsIDI0LCAxLCA5MywgMjA4LCAxNDgsIDI0LCAxLCA5MywgMjI4LCAxODksIDI0LCAxLCA5MywgCi0gICAgMjI3LCAzMCwgMjQsIDEsIDkzLCAyMjEsIDExNSwgMjQsIDEsIDkzLCAyMjIsIDEyMiwgMjQsIDEsIDkzLCAyMjUsIDE1OCwgCi0gICAgMjQsIDEsIDkzLCAyMjIsIDEzOSwgMjQsIDEsIDkzLCAyMjIsIDEyMSwgMjQsIDEsIDkzLCAyMjEsIDExNCwgMjQsIDEsIDkzLCAKLSAgICAyMTYsIDAsIDI0LCAxLCA5MywgMjIyLCAzNCwgMjQsIDEsIDkzLCAyMTksIDIxLCAyNCwgMSwgOTMsIDIxNSwgMzMsIDI0LCAKLSAgICAxLCA5MywgMjIyLCAxNTQsIDI0LCAxLCA5MywgMjI0LCAxOTEsIDI0LCAxLCA5MywgMjM4LCA5NiwgMjQsIDEsIDkzLCAyMjIsIAotICAgIDE0MiwgMjQsIDEsIDkzLCAyMjIsIDQ1LCAyNCwgMSwgOTMsIDIyNSwgMTA2LCAyNCwgMSwgOTMsIDIyNywgMTIsIDI0LCAxLCAKLSAgICA5MywgMjIyLCAxNzUsIDI0LCAxLCA5MywgMjIzLCA0LCAyNCwgMSwgOTMsIDIxMCwgMCwgMjIxLCA5NywgMjQsIDEsIDkzLCAKLSAgICAyMTMsIDExNywgMjQsIDEsIDkzLCAyMTcsIDE4MSwgMjQsIDEsIDkzLCAyMjMsIDI0LCAyMTIsIDYsIDI0LCAxLCA5MywgCi0gICAgMjIyLCAxNjIsIDIyMSwgNiwgMjQsIDEsIDkzLCAyMDMsIDcsIDI0LCAxLCA5MywgMjM4LCA5NywgMjQsIDEsIDkzLCAyMDcsIAotICAgIDIwMiwgMjQsIDEsIDkzLCAyMDMsIDIyLCAyNCwgMSwgOTMsIDIxOCwgNjksIDI0LCAxLCA5MywgMjA3LCAxOTAsIDI0LCAxLCAKLSAgICA5MywgMjI5LCAxNjgsIDI0LCAxLCA5MywgMjExLCA2LCAyNCwgMSwgOTMsIDIwOSwgMTIwLCAyNCwgMSwgOTMsIDIwNSwgCi0gICAgMjM5LCAyNCwgMSwgOTMsIDIwNCwgNDMsIDI0LCAxLCA5MywgMjI4LCAxMTAsIDI0LCAxLCA5MywgMjE3LCAxOTEsIDI0LCAxLCAKLSAgICA5MywgMjEwLCAxMywgMjQsIDEsIDkzLCAyMzgsIDExNywgMjQsIDEsIDkzLCAyMjIsIDE4NSwgMjQsIDEsIDkzLCAyMTMsIAotICAgIDE5LCAyNCwgMSwgOTMsIDIyNCwgMTg2LCAyNCwgMSwgOTMsIDIyNSwgNDYsIDI0LCAxLCA5MywgMjIwLCAyMTIsIDI0LCAxLCAKLSAgICA5MywgMjIxLCAyNTQsIDI0LCAxLCA5MywgMjM4LCAyMDEsIDI0LCAxLCA5MywgMjA3LCAxOTEsIDI0LCAxLCA5MywgMjI4LCAKLSAgICAxOTksIDI0LCAxLCA5MywgMjAzLCA3NCwgMjQsIDEsIDkzLCAyMjAsIDI0OSwgMjQ2LCAzMiwgMjQsIDEsIDkzLCAyMDIsIAotICAgIDI1MywgMjQsIDEsIDkzLCAyMjQsIDIwMywgMjQsIDEsIDkzLCAyMjMsIDksIDI0LCAxLCA5MywgMjE4LCAxNTgsIDI0LCAxLCAKLSAgICA5MywgMjAyLCAxOTgsIDI0LCAxLCA5MywgMjI3LCAxNzAsIDI0LCAxLCA5MywgMjM5LCAxMDYsIDI0LCAxLCA5MywgMjM4LCAKLSAgICAyMDAsIDI0LCAxLCA5MywgMjIyLCAxMzIsIDI0LCAxLCA5MywgMjI5LCAxNzAsIDI0LCAxLCA5MywgMjI1LCAxNjEsIDI0LCAKLSAgICAxLCA5MywgMjIyLCAxNDUsIDI0LCAxLCA5MywgMjM4LCAxMDMsIDI0LCAxLCA5MywgMjQwLCAxMDgsIDI0LCAxLCA5MywgCi0gICAgMjIxLCA4NywgMjQsIDEsIDkzLCAyMTgsIDIxNCwgMjQsIDEsIDkzLCAyMDMsIDIwLCAyNCwgMSwgOTMsIDIyMiwgMTcxLCAKLSAgICAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDgsIDEwMywgMjQsIDEsIDkzLCAyMjAsIDE5MiwgMjQsIDEsIDkzLCAyMTgsIDQzLCAKLSAgICAyNCwgMSwgOTMsIDIyNCwgMTQ0LCAyNCwgMSwgOTMsIDIzOSwgMTA0LCAyNCwgMSwgOTMsIDIyMywgMTAwLCAyNCwgMSwgOTMsIAotICAgIDIyMywgMjQ0LCAyNCwgMSwgOTMsIDIzOCwgMTAyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCA3NSwgMjQsIDEsIDkzLCAyMjMsIAotICAgIDE4NSwgMjQsIDEsIDkzLCAyMTcsIDE4NywgMjQsIDEsIDkzLCAyMjIsIDEzNCwgMjQsIDEsIDkzLCAyMjgsIDE3NSwgMjQsIAotICAgIDEsIDkzLCAyMTgsIDE1NSwgMjQsIDEsIDkzLCAyMjEsIDEwMCwgMjQsIDEsIDkzLCAyMDMsIDIxLCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTU1LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIDI1MiwgMjQsIDEsIDkzLCAyMzksIDEwOSwgMjQ3LCA3MSwgMjQsIDEsIAotICAgIDkzLCAyMzksIDE3OSwgMjQsIDEsIDkzLCAyMjIsIDM5LCAyNCwgMSwgOTMsIDYzLCAyNCwgMSwgOTMsIDIwOCwgMTQxLCAyNCwgCi0gICAgMSwgOTMsIDc4LCAyNCwgMSwgOTMsIDc1LCAyNCwgMSwgOTMsIDIyOCwgOSwgMjQsIDEsIDkzLCAyMTksIDE2OSwgMjE4LCAKLSAgICA3NywgMjQsIDEsIDkzLCAyMTAsIDE4LCAyNCwgMSwgOTMsIDIwOSwgMjE5LCAyNCwgMSwgOTMsIDIyMywgMjQsIDIyMywgCi0gICAgMTcyLCAyMzYsIDM4LCAyNCwgMSwgOTMsIDIxMiwgMjUwLCAyNCwgMSwgOTMsIDIwMywgMTcsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxMTUsIDI0LCAxLCA5MywgMjAyLCAyMDMsIDI0LCAxLCA5MywgMjAyLCAyMzAsIDIxMCwgMTU5LCAyNCwgMSwgOTMsIDIwMiwgCi0gICAgMjMwLCAyNDUsIDE1MSwgMjQsIDEsIDkzLCAyMDIsIDE4NywgMjQsIDEsIDkzLCAyMDIsIDE5NSwgMjQsIDEsIDkzLCAyMjksIAotICAgIDE1NiwgMjQsIDEsIDkzLCAyMTgsIDIxMiwgMjQsIDEsIDkzLCAyMjIsIDQwLCAyNDEsIDM5LCAyNCwgMSwgOTMsIDIxNywgCi0gICAgMTgzLCAyNCwgMSwgOTMsIDIwMywgMjE0LCAyNCwgMSwgOTMsIDI0MCwgNTMsIDI0LCAxLCA5MywgMjA2LCA1MCwgMjQsIDEsIAotICAgIDkzLCAyMjYsIDIzOSwgMjQsIDEsIDkzLCAyMjQsIDE1NSwgMjQsIDEsIDkzLCAyMTYsIDc1LCAyNCwgMSwgOTMsIDIxNiwgCi0gICAgMjAyLCAyNCwgMSwgOTMsIDIyMiwgMTE0LCAyNCwgMSwgOTMsIDIyMiwgMjAzLCAyNCwgMSwgOTMsIDIxMiwgMjQyLCAyNCwgCi0gICAgMSwgOTMsIDIxMiwgMjI5LCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyMTYsIDExMSwgMjQsIDEsIDkzLCAyMDEsIDIwMSwgMjQsIAotICAgIDEsIDkzLCAyMTgsIDE2NywgMjQsIDEsIDkzLCAyMjcsIDEwLCAyNCwgMSwgOTMsIDIyOSwgMjYsIDI0LCAxLCA5MywgMjI0LCAKLSAgICAyNDAsIDI0LCAxLCA5MywgMTkyLCAyNCwgMSwgOTMsIDIyNSwgMTAzLCAyNCwgMSwgOTMsIDIwOSwgMTIyLCAyNCwgMSwgOTMsIAotICAgIDIyOSwgMTAwLCAyNCwgMSwgOTMsIDIyNCwgNTQsIDI0LCAxLCA5MywgMjA5LCAxNTIsIDI0LCAxLCA5MywgMjQwLCA3NywgCi0gICAgMjQsIDEsIDkzLCAyMzgsIDkwLCAyNCwgMSwgMjE4LCAxOTYsIDE3MywgMjQsIDEsIDIxOCwgMTk2LCA2OCwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjgsIDIwOSwgMjQsIDEsIDIxOCwgMTk2LCAyNDEsIDE2MSwgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEzNSwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDEsIDI0LCAxLCAyMTgsIDE5NiwgMjIwLCAyNDgsIDI0LCAxLCAyMTgsIDE5NiwgMjI4LCAKLSAgICAxMTMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAzLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNTAsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjI1LCA3LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjIzLCAyMywgMjQsIDEsIDIxOCwgCi0gICAgMTk2LCAyMjIsIDQ2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNiwgMTg1LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTc5LCAyNCwgCi0gICAgMSwgMjE4LCAxOTYsIDIxMywgNiwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE2MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTMsIAotICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIDEzNywgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDE3MCwgMjQsIDEsIDIxOCwgCi0gICAgMTk2LCAyMjEsIDU1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMSwgODQsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxNywgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMDIsIDIyOSwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE5OSwgMjQsIDEsIDIxOCwgMTk2LCAxOTgsIDI0LCAKLSAgICAxLCAyMTgsIDE5NiwgMjIxLCAxMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjE4LCAyMTIsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCAKLSAgICA5OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDMsIDIxNCwgMjQsIDEsIDIxOCwgMTk2LCAyMTksIDIzLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIxNSwgMTQ1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTAwLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNzUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI5LCAxODAsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMzEsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxODIsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAyNDIsIDI0LCAxLCAyMTgsIDE5NiwgMjE3LCAxODgsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjM5LCAxNzksIDI0LCAxLCAyMTgsIDE5NiwgMjA0LCAxMTEsIDI0LCAxLCAyMTgsIDE5NiwgMjI3LCAxNDgsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI3LCAxMCwgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDI2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNSwgNDQsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAxMDcsIDI0LCAxLCAyMTgsIDE5NiwgMTkyLCAyNCwgMSwgMjE4LCAxOTYsIDIyNCwgCi0gICAgODIsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA1MiwgMjQsIDEsIDIxOCwgMTk2LCAyMDksIDEzMiwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMjgsIDI0NCwgMjQsIDEsIDIxOCwgMTk2LCAyMTQsIDI1MSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDE2MiwgMjIzLCAyNDksIAotICAgIDEsIDIxMCwgMjIsIDIyMywgMjQ5LCAxLCAyMjIsIDE1MSwgMjIzLCAyNDksIDEsIDIwMiwgMjQ3LCAyMjMsIDI0OSwgMSwgCi0gICAgMjI0LCAxMTIsIDIyMywgMjQ5LCAxLCAyNDksIDMyLCAyMjMsIDI0OSwgMSwgMjQ0LCAyMTIsIDIyMywgMjQ5LCAxLCA2MywgCi0gICAgMjIzLCAyNDksIDEsIDIxOCwgMTkyLCAyMjMsIDI0OSwgMSwgMjI5LCAxMzksIDIyMywgMjQ5LCAxLCAyMzcsIDk1LCAyMjMsIAotICAgIDI0OSwgMSwgMjQ0LCAxODgsIDIyMywgMjQ5LCAxLCAyNDYsIDk4LCAyMjMsIDI0OSwgMSwgMjI5LCAyMDAsIDIyMywgMjQ5LCAKLSAgICAxLCAyMjAsIDQ2LCAyMjMsIDI0OSwgMSwgMjI1LCAxNTgsIDIyMywgMjQ5LCAxLCAyMjIsIDY4LCAyMjMsIDI0OSwgMSwgCi0gICAgMTg1LCAyMjMsIDI0OSwgMSwgMjIwLCAxOCwgMjIzLCAyNDksIDEsIDc4LCAyMjMsIDI0OSwgMSwgMjE1LCAyMjcsIDIyMywgCi0gICAgMjQ5LCAxLCAyMTMsIDExLCAyMjMsIDI0OSwgMSwgMjA5LCA5MSwgMjIzLCAyNDksIDEsIDI0MSwgMTg5LCAyMjMsIDI0OSwgCi0gICAgMSwgMjA0LCAxMTEsIDIyMywgMjQ5LCAxLCA3NCwgMjIzLCAyNDksIDEsIDIyOSwgMjYsIDIyMywgMjQ5LCAxLCAyMjgsIDE3LCAKLSAgICAyMjMsIDI0OSwgMSwgMjI4LCAxMTMsIDIyMywgMjQ5LCAxLCAyMzcsIDE0NywgMjIzLCAyNDksIDEsIDIxNiwgNTcsIDIyMywgCi0gICAgMjQ5LCAxLCAyMDksIDE2NSwgMjIzLCAyNDksIDE3LCAyMDIsIDg0LCAyMjMsIDI0OSwgMTcsIDEwNSwgMjIzLCAyNDksIDE3LCAKLSAgICAxMDgsIDIyMywgMjQ5LCAxNywgMTQ3LCAyMjMsIDI0OSwgMTcsIDE0OSwgMjIzLCAyNDksIDE3LCAxNzAsIDIyMywgMjQ5LCAKLSAgICAxNywgMTk1LCAyMjMsIDI0OSwgMTcsIDIxMywgMTExLCAyMjMsIDI0OSwgMTcsIDE5OSwgMjIzLCAyNDksIDE3LCAyMjIsIAotICAgIDYzLCAyMjMsIDI0OSwgMjQ0LCAxNjYsIDIyMywgMjQ5LCA1MiwgMjQ0LCAxNjYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAyNDEsIDc0LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMTczLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjE0LCAxNzcsIDI0OCwgCi0gICAgMjEyLCAyMDYsIDgzLCAxLCAyNDAsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyNSwgNDcsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDMsIDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDI0OSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0MywgCi0gICAgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI4LCAyNDMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzAsIDEwMSwgMjQ4LCAKLSAgICAyMTIsIDIwNiwgODMsIDEsIDIzNSwgMjUzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMTEsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDIsIDE3LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjM4LCAxOTQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAyNDMsIDExMywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0NiwgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA2LCAxNzEsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxMzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDksIDMyLCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgMjA0LCAxNjMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDMsIDQ2LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCi0gICAgMTg1LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA2MywgMjQ4LCAyMTIsIAotICAgIDIwNiwgODMsIDEsIDc4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjIwLCAxOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDY4LCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQxLCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA3NCwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDc1LCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDEzOCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgCi0gICAgMTI0LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAyMjQsIDE1MCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAzOSwgMjI2LCAyNTMsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIzNiwgMjQyLCAyMDgsIDE2MSwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxMTksIDExNywgMjIsIDIyOSwgMTk3LCAxMTksIDExNywgCi0gICAgMjIsIDIyOSwgMTkzLCAxMTksIDExNywgMjIsIDIyOSwgOTcsIDExOSwgMTE3LCAyMiwgMjI5LCA2MywgMTE5LCAxMTcsIDIyLCAKLSAgICAyMjksIDIxOCwgMTE5LCAxMTcsIDIyLCAyMjksIDIxNSwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMCwgMTE5LCAxMTcsIDIyLCAKLSAgICAyMjgsIDE3MiwgMTE5LCAxMTcsIDIyLCAyMjksIDE5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDE1NCwgMTE5LCAxMTcsIDIyLCAKLSAgICAyMzAsIDE3LCAxMTksIDExNywgMjIsIDIzMCwgMTQsIDExOSwgMTE3LCAyMiwgMjI5LCA1LCAxMTksIDExNywgMjIsIDIyOSwgCi0gICAgMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMCwgMTE5LCAxMTcsIDIyLCAyMjgsIAotICAgIDIwMiwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMSwgMTE5LCAxMTcsIDIyLCAyMjksIDIzLCAxMTksIDExNywgMjIsIDIyOCwgCi0gICAgMjQ3LCAxMTksIDExNywgMjIsIDIyOSwgOTksIDExOSwgMTE3LCAyMiwgMjI5LCA5OCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMyLCAKLSAgICAxMTksIDExNywgMjIsIDIyOSwgMjE0LCAxMTksIDExNywgMjIsIDIyOCwgMTYzLCAxMTksIDExNywgMjIsIDIyOCwgMTU0LCAKLSAgICAxMTksIDExNywgMjIsIDIzMCwgNDAsIDExOSwgMTE3LCAyMiwgMjMwLCAzMywgMTE5LCAxMTcsIDEwOSwgMjA2LCA2MSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIxLCA5MCwgMTE5LCAxMTcsIDEwOSwgMjI3LCAyNTEsIDExOSwgMTE3LCAxMDksIDIzNywgNzYsIAotICAgIDExOSwgMTE3LCAxMDksIDIyMSwgMjMwLCAxMTksIDExNywgMTA5LCAyMTYsIDE2NywgMTE5LCAxMTcsIDEwOSwgMjIyLCAxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMTcsIDEwMCwgMTE5LCAxMTcsIDEwOSwgMjAzLCA2MiwgMTE5LCAxMTcsIDEwOSwgMjM2LCAyMjEsIAotICAgIDExOSwgMTE3LCAxMDksIDIyNSwgNjcsIDExOSwgMTE3LCAxMDksIDI0NiwgMTc0LCAxMTksIDExNywgMTA5LCAyMjMsIDI4LCAKLSAgICAxMTksIDExNywgMTA5LCAyMzYsIDE1NywgMTE5LCAxMTcsIDEwOSwgMjE4LCA4NSwgMTE5LCAxMTcsIDEwOSwgMjIxLCA5NSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIzLCA2NSwgMTE5LCAxMTcsIDEwOSwgMjUwLCAzNCwgMTE5LCAxMTcsIDEwOSwgMjAzLCAxNzgsIAotICAgIDExOSwgMTE3LCAxMDksIDI0NywgMTUsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwNywgMTk5LCAxMTksIDExNywgMTMxLCAKLSAgICAyNDYsIDY3LCAyMTIsIDEzLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMjksIDE3MiwgMTE5LCAxMTcsIDEzMSwgMjQ2LCAKLSAgICA2NywgMjI5LCAxMzAsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIxMSwgNCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgCi0gICAgMjM2LCAxMjMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwOSwgMjA2LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgCi0gICAgNDQsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA4LCA5LCAyNDYsIDIyOSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NiwgCi0gICAgMTYzLCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgNjksIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjQwLCA1MCwgMTE5LCAKLSAgICAxMTcsIDIsIDIwMywgMTM2LCAyMjEsIDg1LCAxMTksIDExNywgMiwgMjAzLCAxMzYsIDIxNiwgNTksIDExOSwgMTE3LCAyLCAKLSAgICAyMDMsIDEzNiwgMjA4LCAxMjQsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjQwLCA4OSwgMTE5LCAxMTcsIDIsIDIwNSwgCi0gICAgMTczLCAyMTQsIDE1OSwgMTE5LCAxMTcsIDIsIDIyNSwgNiwgMjExLCA4LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyMSwgCi0gICAgMTM0LCAxMTksIDExNywgMiwgMjM1LCAxNjcsIDIwMywgODEsIDExOSwgMTE3LCAyLCAyMDMsIDE3NywgMTE5LCAxMTcsIDIsIAotICAgIDI0NiwgNjcsIDIwNywgMjUyLCAyMTUsIDIxNiwgMTE5LCAxMTcsIDE3LCAyMDIsIDg0LCAxMTksIDExNywgMTcsIDEwNSwgCi0gICAgMTE5LCAxMTcsIDE3LCAxMDgsIDExOSwgMTE3LCAxNywgMTQ3LCAxMTksIDExNywgMTcsIDE0OSwgMTE5LCAxMTcsIDE3LCAKLSAgICAxNzAsIDExOSwgMTE3LCAxNywgMTk1LCAxMTksIDExNywgMTcsIDIxMywgMTExLCAxMTksIDExNywgMTcsIDE5OSwgMTE5LCAKLSAgICAxMTcsIDE3LCAyMjIsIDYzLCAxMTksIDExNywgNDIsIDIwOSwgMTQ3LCAxMTksIDExNywgNDIsIDIzNiwgMTAsIDExOSwgCi0gICAgMTE3LCA0MiwgMjA5LCAxNTMsIDIwOSwgMzQsIDExOSwgMTE3LCA0MiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjM2LCAKLSAgICAxMiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNTMsIDI0OCwgNjgsIDExOSwgMTE3LCA0MiwgMjA4LCA3MiwgCi0gICAgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMjYsIDIzNCwgMTE5LCAxMTcsIDIsIDIwMywgMTMzLCAxMTksIDExNywgMiwgMjM2LCAKLSAgICAyMTYsIDExOSwgMTE3LCAyLCAyMDksIDU5LCAyMzYsIDIxNiwgMTE5LCAxMTcsIDIsIDIwMSwgMjQ3LCAyMDksIDEwMiwgCi0gICAgMTE5LCAxMTcsIDIsIDIzNiwgMTQxLCAxMTksIDExNywgMiwgMjIxLCAxNDgsIDExOSwgMTE3LCAyLCAyMDMsIDE2OSwgMTE5LCAKLSAgICAxMTcsIDIsIDIyMSwgODgsIDExOSwgMTE3LCAyLCAyNTAsIDE4LCAxMTksIDExNywgMiwgMjA3LCAxMjksIDI0NiwgMjI4LCAKLSAgICAxMTksIDExNywgMiwgMjI1LCA2LCAyMDgsIDEyLCAxMTksIDExNywgMiwgMjA5LCAyMDcsIDExOSwgMTE3LCAyLCAyMjcsIDcsIAotICAgIDExOSwgMTE3LCAyLCAyMjMsIDIwMSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIzNywgMTQzLCAyMjYsIDIxMiwgMjIxLCA5MywgCi0gICAgMjIxLCA5MiwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NSwgMTA5LCAyMDgsIDMsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKLSAgICAyMDcsIDEyNywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIwNywgMTI4LCAyNDYsIDg2LCAxMTksIDExNywgMiwgMjQ2LCA2NywgCi0gICAgMjE3LCAxODYsIDI0NCwgMTM1LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjIxLCAxNDEsIDIwOCwgMTMyLCAxMTksIDExNywgCi0gICAgMjQ2LCAzOSwgMiwgMjA4LCA3LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA0OCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIAotICAgIDIyNywgOTMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjcsIDI1MCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgMTMyLCAKLSAgICAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCA2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCA3MywgMTE5LCAxMTcsIAotICAgIDI0NiwgMzksIDIsIDIyMywgMjQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjA5LCA0NSwgMTE5LCAxMTcsIDI0NiwgMzksIAotICAgIDIsIDIwOCwgMTcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMTgsIDIwNSwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOSwgCi0gICAgMTQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCAxMzMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDYsIDgwLCAxMTksIAotICAgIDExNywgMjQ2LCAzOSwgMiwgMjQwLCA4NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgODgsIDExOSwgMTE3LCAyNDYsIAotICAgIDM5LCAyLCAyMDcsIDI0NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOCwgMTU4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCi0gICAgMjA0LCAxNTMsIDExMSwgMSwgMTg1LCAxMTEsIDEsIDI0OSwgMzIsIDExMSwgMSwgMTEsIDE4NSwgMTExLCAxLCAyMTgsIDk4LCAKLSAgICAxMTEsIDEsIDE5MiwgMTExLCAxLCAyMjQsIDE1OCwgMTExLCAxLCAyNTAsIDEyNiwgMTkyLCAxMTEsIDEsIDI0MCwgMTA4LCAKLSAgICAxMTEsIDEsIDIwNiwgODYsIDExMSwgMSwgMjA1LCAyMzEsIDExMSwgMSwgMjEwLCAyMiwgMTExLCAxLCAyNDQsIDIxMiwgCi0gICAgMTExLCAxLCAxMSwgMjA3LCAyNDEsIDExMSwgMSwgMTEsIDIxMCwgMjIsIDExMSwgMSwgMjA3LCAyNDEsIDExMSwgMSwgMjQ0LCAKLSAgICAxMjAsIDExMSwgMSwgMjAxLCAyMDEsIDExMSwgMSwgMjIyLCAxMDQsIDExMSwgMSwgMTEsIDIyMSwgMjI3LCAxMTEsIDEsIAotICAgIDI1MCwgMTI2LCAyMDEsIDIwMSwgMTExLCAxLCAyMjEsIDIyNywgMTExLCAxLCAyMjEsIDIxMywgMTExLCAxLCAyMjgsIDExMywgCi0gICAgMTExLCAxLCAyMjYsIDE5OCwgMTExLCAxLCAyMjcsIDE2MSwgMTExLCAxLCAyMjcsIDE1MCwgMTExLCAxLCAyMDgsIDE4NywgCi0gICAgMTExLCAxLCAyNDMsIDEyMSwgMTExLCAxLCAyMDgsIDE3OSwgMTExLCAxLCAyNDMsIDEyMCwgMTExLCAxLCAxNzMsIDExMSwgCi0gICAgMSwgMjM5LCA4LCAxMTEsIDEsIDExLCAxNzMsIDExMSwgMSwgMjE3LCAxMjYsIDExMSwgMSwgMjE3LCAxMDMsIDExMSwgMSwgCi0gICAgMjIyLCAyMDMsIDExMSwgMSwgMjIyLCAxNTIsIDExMSwgMSwgMjUwLCAxMjYsIDIyMiwgMjAzLCAxMTEsIDEsIDE1MiwgMTExLCAKLSAgICAxLCAyMDMsIDE4MiwgMTExLCAxLCAyMzgsIDExOSwgMTExLCAxLCAyMzgsIDk0LCAxMTEsIDEsIDIwNywgMjUxLCAxMTEsIDEsIAotICAgIDI0MSwgMjM5LCAxMTEsIDEsIDIyMSwgMTEsIDExMSwgMSwgMjIwLCAyNTAsIDExMSwgMSwgMjA4LCAxMCwgMTExLCAxLCAKLSAgICAyNDEsIDI0OSwgMTExLCAxLCAxMSwgMjA4LCAxMCwgMTExLCAxLCAxMSwgMjQxLCAyNDksIDExMSwgMSwgMjE2LCAxMzMsIAotICAgIDIwOCwgMTAsIDExMSwgMSwgMjEzLCA5MCwgMTExLCAxLCAyMTEsIDE2NCwgMTExLCAxLCAyMDIsIDgwLCAxMTEsIDEsIDIwMiwgCi0gICAgOCwgMTExLCAxLCAyMDgsIDIwLCAxMTEsIDEsIDI0MSwgMjU1LCAxMTEsIDEsIDExLCAyMDgsIDIwLCAxMTEsIDEsIDIxNSwgCi0gICAgMzYsIDExMSwgMSwgMjAyLCAxMTYsIDExMSwgMSwgMjAyLCA5LCAxMTEsIDEsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjE1LCAKLSAgICAxMTEsIDEsIDI1MCwgMTI2LCAyMDEsIDIzNSwgMTExLCAxLCAyMDEsIDIwNywgMTExLCAxLCAyMDEsIDIxNCwgMTExLCAxLCAKLSAgICAyMDQsIDExMSwgMTExLCAxLCAyNTEsIDczLCAxMTEsIDEsIDIzNywgMTIsIDExMSwgMSwgMjIzLCA3MCwgMTExLCAyLCAyNTAsIAotICAgIDY1LCAxMTEsIDIsIDIxNiwgMTMzLCAyMDUsIDE4NCwgMTExLCAyLCAyMTYsIDEzMywgMjUwLCA2NSwgMTExLCAyMiwgMiwgCi0gICAgNjMsIDExMSwgMjIsIDIsIDI1MiwgMjUsIDExMSwgMjIsIDIsIDI1MSwgNjksIDExMSwgMjIsIDIsIDI1MCwgMjMxLCAxMTEsIAotICAgIDIyLCAyLCAyNTAsIDIyMywgMTExLCAyMiwgMiwgNzgsIDExMSwgMjIsIDIsIDIyMCwgMTgsIDExMSwgMjIsIDIsIDIwNCwgMCwgCi0gICAgMTExLCAyMiwgMiwgMjA0LCAxNDQsIDExMSwgMjIsIDIsIDc0LCAxMTEsIDIyLCAyLCAyNDEsIDkyLCAxMTEsIDIyLCAyLCAKLSAgICAyNDEsIDc4LCAxMTEsIDIyLCAyLCAyMjAsIDcwLCAxMTEsIDIyLCAyLCA3NSwgMTExLCAyMiwgMiwgMjM1LCAxNzEsIDExMSwgCi0gICAgMjIsIDIsIDIzNSwgMTcwLCAxMTEsIDIyLCAyLCAyMzUsIDE2OSwgMTExLCAyMiwgMiwgMjMwLCAyMzQsIDExMSwgMjIsIDIsIAotICAgIDIzMSwgMTEwLCAxMTEsIDIyLCAyLCAyMzEsIDgzLCAxMTEsIDIyLCAyLCAyMzAsIDE5NywgMTExLCAyMiwgMiwgMjMxLCAyNCwgCi0gICAgMTExLCAyMiwgMiwgNjgsIDExMSwgMjIsIDIsIDIwNywgMzksIDExMSwgMjIsIDIsIDIwNywgMzgsIDExMSwgMjIsIDIsIAotICAgIDIwNywgMzcsIDExMSwgMjIsIDIsIDIwNiwgMTc4LCAxMTEsIDIyLCAyLCAyMDcsIDIxLCAxMTEsIDIyLCAyLCAyMDYsIDI0MSwgCi0gICAgMTExLCAyMiwgMiwgMjAzLCAxMjQsIDExMSwgMjIsIDIsIDIwMywgMTEsIDExMSwgMjIsIDIsIDI1MSwgMTA5LCAxMTEsIDIyLCAKLSAgICAyLCAyNTEsIDEwNSwgMTExLCAyMiwgMiwgMjQxLCAyMSwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjEsIDExMSwgMjIsIAotICAgIDIsIDI0MSwgMjgsIDExMSwgMjIsIDIsIDIxNSwgMTg5LCAyNDEsIDI4LCAxMTEsIDIyLCAyLCAyNTEsIDY0LCAxMTEsIDIyLCAKLSAgICAyLCAyNDEsIDE0NSwgMTExLCAyMiwgMiwgMjUwLCAzNCwgMTExLCAyMiwgMiwgMjE5LCAyMTYsIDExMSwgMjIsIDIsIDIyMywgCi0gICAgMTYzLCAxMTEsIDIyLCAyLCAyMjIsIDIwNSwgMTExLCAxNDMsIDIxNiwgMTYsIDExMSwgMTQzLCAyMDgsIDE0NSwgMjE2LCAKLSAgICAxNiwgMTExLCAxNDMsIDU1LCAxMTEsIDE0MywgNTYsIDExMSwgMSwgMjA4LCAxNTksIDExMSwgMSwgMjA4LCAxNTgsIDExMSwgCi0gICAgMSwgMjA4LCAxNTcsIDExMSwgMSwgMjA4LCAxNTYsIDExMSwgMSwgMjA4LCAxNTUsIDExMSwgMSwgMjA4LCAxNTQsIDExMSwgCi0gICAgMSwgMjA4LCAxNTMsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTYwLCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1OSwgMTExLCAKLSAgICAxLCAyMTYsIDEzMywgMjA4LCAxNTcsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU2LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIAotICAgIDE1NSwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTMsIDY3LCAxLCAyNTAsIDEyNiwgNzQsIDE3MiwgMSwgMjUwLCAxMjYsIAotICAgIDIwMywgNTIsIDEwMCwgMSwgMjM3LCAxNzEsIDEwMCwgMSwgMjAzLCAxOTYsIDEwMCwgMSwgMjE5LCAxODQsIDEwMCwgMSwgCi0gICAgMjEwLCA2OSwgMTAwLCAxLCAyNDAsIDE3NCwgMTAwLCAxLCAyMzAsIDU0LCAxMDAsIDEsIDE1OSwgMTAwLCAxLCAyNDksIAotICAgIDI1NSwgMTAwLCAxLCAyNDUsIDUxLCAxMDAsIDEsIDIwNiwgMTY0LCAxMDAsIDEsIDIzOSwgNzUsIDEwMCwgMSwgMTQ2LCAKLSAgICAxMDAsIDEsIDIxOSwgMTg1LCAyMjMsIDE2MywgMTAwLCAxLCAyNDUsIDUyLCAxOTQsIDEwMCwgMSwgMjQwLCAxNzUsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIzMCwgNTUsIDIyNiwgMTg1LCAxMDAsIDEsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIwOSwgMTEwLCAKLSAgICAxMDAsIDEsIDIxMiwgNDUsIDI0NCwgMiwgMTAwLCAxLCAyNDQsIDIsIDEwMCwgMSwgMjI5LCA0OCwgMTAwLCAxLCAyMTIsIAotICAgIDQ1LCAyMzAsIDE4NCwgMTAwLCAxLCAyMzYsIDIyNSwgMTAwLCAxLCAyMjcsIDE2MiwgMTAwLCAxLCAyMTYsIDYyLCAxMDAsIAotICAgIDEsIDIyNiwgMTg1LCAxMDAsIDEsIDIyMywgMTYzLCAxMDAsIDEsIDIzMCwgMTg0LCAxMDAsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMjYsIDE4NiwgMjIzLCAxNjMsIDEwMCwgMSwgMjIzLCAxNjQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjYsIAotICAgIDE4NSwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDE4NCwgMTAwLCAxLCAyMjYsIDE4NiwgMywgMjQzLCA4NSwgMTAwLCAxLCAKLSAgICAyMjMsIDE2NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgCi0gICAgMTg3LCAyMzEsIDcsIDI1LCA1NSwgMTAwLCAxLCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDcwLCAKLSAgICA1NiwgMTAwLCAxLCAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDE5NCwgCi0gICAgMTAwLCAxLCAyMTUsIDk0LCAxOTQsIDEwMCwgMSwgMjI2LCAxODYsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIAotICAgIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCAKLSAgICAxODUsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjE1LCA5NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjMwLCAxODUsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjEwLCA2OSwgMTAwLCAxLCAKLSAgICAyMTUsIDk0LCAyMTAsIDcwLCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAxODQsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAKLSAgICAxODUsIDE0NiwgMTAwLCAxLCAyMTAsIDcwLCAxOTQsIDEwMCwgMSwgMjEwLCA3MCwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjA0LCAxNDQsIDEwMCwgMSwgMjA0LCA0MCwgMTAwLCAxLCAyMDQsIDE0NSwgMTQ2LCAxMDAsIDEsIDIxNSwgOTQsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIxNSwgOTQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgNTUsIDIxNywgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIzOSwgNzYsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgNTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NSwgCi0gICAgMTQ2LCAxMDAsIDEsIDYzLCAxMDAsIDEsIDIxMiwgNDUsIDIxOSwgMTk1LCAxMDAsIDEsIDIyMCwgOTcsIDEwMCwgMSwgNzgsIAotICAgIDEwMCwgMSwgMjUwLCAxNzYsIDEwMCwgMSwgNzUsIDEwMCwgMSwgNzQsIDEwMCwgMSwgMjMxLCAxMTAsIDEwMCwgMSwgMjEyLCAKLSAgICAyMjgsIDc1LCAxMDAsIDEsIDIwNywgMTcsIDEwMCwgMSwgMjQxLCAxNjEsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNDcsIAotICAgIDEwMCwgMSwgMjE1LCAyMDksIDc1LCAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgMTYxLCAxMDAsIDEsIDE2MywgNzUsIDEwMCwgMSwgCi0gICAgMjAzLCA1MiwgMTAwLCAxLCA2OCwgMTAwLCAxLCAyNDAsIDIzOCwgMTAwLCAxLCAyMDMsIDE0NywgMTAwLCAxLCAxMDYsIAotICAgIDIyMywgMTYzLCAxMDAsIDEsIDE2MywgNjgsIDEwMCwgMSwgMjE1LCAyMDksIDY4LCAxMDAsIDEsIDIwNywgMTgsIDEwMCwgMSwgCi0gICAgMjEyLCA0NSwgNjgsIDEwMCwgMSwgMjIwLCAxNSwgMTAwLCAxLCAyMTksIDE5NSwgMTAwLCAxLCAyMTksIDIxNiwgMTAwLCAxLCAKLSAgICAyMDQsIDExMSwgMTAwLCAxLCAyMDQsIDAsIDEwMCwgMSwgMjA0LCAzMCwgMTAwLCAxLCAyMDQsIDUzLCAxMDAsIDEsIDIwMywgCi0gICAgMjMwLCAxMDAsIDEsIDIyMywgNzIsIDY4LCAxMDAsIDEsIDIyMywgNzIsIDc4LCAxMDAsIDEsIDIyMywgNzIsIDc1LCAxMDAsIAotICAgIDEsIDIyMywgNzIsIDYzLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTgsIDIzNSwgMjUwLCAyNDcsIAotICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCA5MiwgMTAwLCAxLCAyMTIsIDQ1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTIsIDQ1LCAKLSAgICAyMjAsIDMxLCAxMDAsIDEsIDEyNSwgMjI2LCAxODUsIDEwMCwgMjUxLCA4OCwgNDksIDIzNiwgMTA2LCAyMTQsIDE3MiwgCi0gICAgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgMjM2LCAxMDYsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDUwLCAyMzYsIDEwNiwgCi0gICAgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMTI0LCA4MCwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjI0LCAxNTAsIDgwLCAKLSAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMzgsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMTQsIAotICAgIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMjcsIDIxMywgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgCi0gICAgMjA5LCAyMjYsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjA5LCAyNDgsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMTg4LCAKLSAgICAxMTMsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjM1LCAyMDYsIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIAotICAgIDIyNywgMTEzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTY1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAKLSAgICAyNTEsIDg4LCAxMzgsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAKLSAgICAxMzgsIDI0MywgODUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEzOCwgMjI3LCAxMTQsIAotICAgIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDQsIDc1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAKLSAgICAxMjQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwOCwgMjQ0LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMzcsIDI1MywgCi0gICAgMTAwLCAyNTEsIDg4LCAxMjQsIDE2MywgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTI0LCAyNDMsIDg1LCAxMDAsIDI1MSwgCi0gICAgODgsIDEyNCwgMjQ2LCA2MSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIyNywgMTE0LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA0LCAKLSAgICA3NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwNiwgMzgsIDEwMCwgMjUxLCA4OCwgMTI0LCA0NywgMTAwLCAyLCAxNTgsIDMsIAotICAgIDI0NSwgMTMwLCAxMDAsIDIwOSwgNjgsIDEsIDIxNCwgMTUwLCAxMDAsIDUyLCA4MiwgMTAwLCAyMTcsIDE3OSwgMjQ2LCAKLSAgICAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAKLSAgICAxNTgsIDI0NSwgMTkwLCAyMTksIDIwMSwgMjEyLCAyMTUsIDIzOSwgMTU4LCAxMjEsIDIxMSwgNzUsIDIxMiwgMjE1LCAyMzksIAotICAgIDE1OCwgMTEyLCAyMTEsIDc1LCA2MCwgMzEsIDE2LCAyMTcsIDE5NSwgNjAsIDMxLCAxNiwgMjQ0LCAxNDYsIDYwLCAzMSwgCi0gICAgMTYsIDIxOCwgMjM5LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDMsIAotICAgIDE3MSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDI0MywgMTcxLCA2MCwgCi0gICAgMzEsIDE2LCAyMjksIDIyMSwgNjAsIDMxLCAxNiwgMjEwLCA4NiwgNjAsIDMxLCAxNiwgMjE5LCA4MywgNjAsIDMxLCAxNiwgCi0gICAgMjAyLCAyMTksIDYwLCAzMSwgMTYsIDIwMiwgMjIwLCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjI4LCAyMjYsIDYwLCAzMSwgCi0gICAgMTYsIDI1MCwgMTcxLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjQwLCAyMDYsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMDksIAotICAgIDE2MywgNjAsIDMxLCAxNiwgMjI5LCAxNzYsIDYwLCAzMSwgMTYsIDI1MCwgMTYxLCA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgCi0gICAgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDIxMCwgOTMsIDYwLCAzMSwgMTYsIDIwOSwgNTAsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzgsIDIzLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE3LCAxOTQsIDYwLCAzMSwgCi0gICAgMTYsIDI0NiwgMTkwLCA2MCwgMzEsIDE2LCAyMDYsIDYyLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjUwLCAxMjQsIDYwLCAKLSAgICAzMSwgMTYsIDIyOSwgMTc4LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKLSAgICAyMTQsIDIxMCwgNjAsIDMxLCAxNiwgMjE5LCA3MywgNjAsIDMxLCAxNiwgMjExLCA4NCwgMjUwLCAxNjQsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgMTkxLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA2LCA3MiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNTksIDYwLCAzMSwgMTYsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIxNiwgNjksIAotICAgIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA4LCAyMTcsIDYwLCAzMSwgMTYsIDI1MCwgCi0gICAgMjI5LCA2MCwgMzEsIDE2LCAyMTQsIDE1MywgNjAsIDMxLCAxNiwgMjEwLCA5NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIxMCwgOTcsIDIyNCwgMjIxLCAyMTEsIDgyLCA2MCwgMzEsIDE2LCAyMTksIDE4NiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIwOSwgODYsIDYwLCAzMSwgMTYsIDIyNywgMjAwLCA2MCwgMzEsIDE2LCAyNDIsIDIsIDYwLCAzMSwgMTYsIDIwOCwgODcsIAotICAgIDYwLCAzMSwgMTYsIDIwOSwgMTM0LCA2MCwgMzEsIDE2LCAyMjgsIDIyOSwgNjAsIDMxLCAxNiwgMjUwLCAxNzEsIDI0MCwgCi0gICAgMjA2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzEsIDYyLCA2MCwgCi0gICAgMzEsIDE2LCAyMDgsIDU3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAyMjQsIDIwOCwgNTYsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgMTEsIDYwLCAzMSwgMTYsIDIxNywgMTk5LCA2MCwgMzEsIDE2LCAyMjksIDcsIDYwLCAzMSwgMTYsIDI0NiwgMTEwLCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE2LCAxNzcsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDI1MCwgMTI0LCA2MCwgMzEsIAotICAgIDE2LCAyMTksIDg0LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjM1LCAxNjAsIDYwLCAzMSwgMTYsIDIyMywgODIsIDYwLCAzMSwgCi0gICAgMTYsIDIxOCwgMjE3LCA2MCwgMzEsIDE2LCAyMjksIDgsIDI1MSwgOSwgNjAsIDMxLCAxNiwgMjA4LCA1NywgMjUxLCA5LCAKLSAgICA2MCwgMzEsIDE2LCAyMTEsIDU1LCA2MCwgMzEsIDE2LCAyMzcsIDI0MCwgNjAsIDMxLCAxNiwgMjMwLCAyMDYsIDIyMiwgCi0gICAgMjI2LCA2MCwgMzEsIDE2LCAyMjAsIDQyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDIyMiwgMjI2LCA2MCwgCi0gICAgMzEsIDE2LCAyMTgsIDIxNiwgNjAsIDMxLCAxNiwgMjI4LCAyNDgsIDYwLCAzMSwgMTYsIDIxOCwgMjE1LCA2MCwgMzEsIDE2LCAKLSAgICAyMjgsIDIyOCwgNjAsIDMxLCAxNiwgMjE5LCAxMiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgCi0gICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIyOSwgMTc4LCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIwMiwgMjE3LCAKLSAgICA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI1MCwgMTYzLCAyMTAsIDk0LCAyMjIsIDIyNiwgCi0gICAgNjAsIDMxLCAxNiwgMjAyLCAyMTgsIDYwLCAzMSwgMTYsIDIyOCwgMjI3LCA2MCwgMzEsIDE2LCAyNDEsIDEyMSwgNjAsIDMxLCAKLSAgICAxNiwgMjQ2LCAxOTEsIDYwLCAzMSwgMTYsIDIyNCwgMTIyLCAyMzAsIDIwNSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjIyLCAKLSAgICAyMjYsIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE3LCAyMDAsIDIyMiwgMjI2LCA2MCwgCi0gICAgMzEsIDE2LCAyMjAsIDM4LCA2MCwgMzEsIDE2LCAyNTAsIDE4OSwgNjAsIDMxLCAxNiwgMjI2LCAxOTUsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgODQsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIAotICAgIDIxOSwgODUsIDYwLCAzMSwgMTYsIDIyOCwgMTM1LCA2MCwgMzEsIDE2LCAyNTAsIDE5MCwgNjAsIDMxLCAxNiwgMjA4LCA1NywgCi0gICAgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgMTI0LCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyMjIsIDIyNiwgNjAsIDMxLCAKLSAgICAxNiwgMjEwLCA4NywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDEsIDQzLCA2MCwgMzEsIAotICAgIDE2LCAyMTQsIDE1NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwMywgMTYzLCAyMjksIDM4LCA2MCwgMzEsIDE2LCAyMDgsIAotICAgIDU0LCA2MCwgMzEsIDE2LCAyMTcsIDIwMSwgNjAsIDMxLCAxNiwgMjA4LCA1OCwgNjAsIDMxLCAxNiwgMjA4LCA1NSwgNjAsIAotICAgIDMxLCAxNiwgMjE3LCAxOTgsIDYwLCAzMSwgMTYsIDIwOCwgNTMsIDYwLCAzMSwgMTYsIDIxNywgMTk3LCA2MCwgMzEsIDE2LCAKLSAgICAyMzgsIDIyLCA2MCwgMzEsIDE2LCAyNTAsIDExNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIDI1MCwgMTE2LCA2MCwgMzEsIAotICAgIDE2LCAyMTksIDE4NiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwOSwgODUsIDI0MSwgMSwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgCi0gICAgMjQwLCAyMDUsIDYwLCAzMSwgMTYsIDIwOSwgODcsIDI1MCwgMTY2LCA2MCwgMzEsIDE2LCAyMDksIDc5LCAyMzAsIDE5LCAKLSAgICAyNTAsIDE1OCwgNjAsIDMxLCAxNiwgMjI5LCAyMjMsIDYwLCAzMSwgMTYsIDI0MSwgODAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIAotICAgIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMDMsIDE0LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjExLCA4MywgNjAsIDMxLCAxNiwgCi0gICAgMjI5LCAzOSwgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjIyLCAyMjYsIAotICAgIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjcsIDYwLCAzMSwgMTYsIDI0MywgCi0gICAgMTcxLCA2MCwgMzEsIDE2LCAyMDgsIDY4LCA2MCwgMzEsIDE2LCAyMDksIDEyNSwgNjAsIDMxLCAxNiwgMjI4LCAyNTIsIDYwLCAKLSAgICAzMSwgMTYsIDIyNywgMjA1LCAyNDEsIDczLCAyNDYsIDEwMCwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDI0MiwgMywgMjQ2LCAKLSAgICAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMDgsIDcxLCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOSwgCi0gICAgMTM2LCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIzMSwgNTcsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDIzLCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI1MCwgMTEyLCA2MCwgMzEsIAotICAgIDE2LCAyMzgsIDIzLCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDI0MywgMTk2LCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgCi0gICAgMjE5LCA3NCwgMjUwLCAxMTMsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjUwLCAxMTMsIAotICAgIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjQ0LCA2LCA2MCwgMzEsIDE2LCAyMDgsIDc2LCA2MCwgCi0gICAgMzEsIDE2LCAyNTAsIDExNywgNjAsIDMxLCAxNiwgMjMxLCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTksIDYwLCAzMSwgMTYsIAotICAgIDI1MSwgNzUsIDIxOCwgNTIsIDI1MCwgMTE4LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyNTAsIDExNSwgNjAsIDMxLCAxNiwgCi0gICAgMjUxLCA3NSwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIyNCwgMjE1LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAKLSAgICAyMjQsIDIyNiwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyMSwgNjAsIAotICAgIDMxLCAxNiwgMjUxLCA3NSwgMjE4LCA1MiwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDcsIDIzNSwgCi0gICAgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyNTEsIDExLCAyMTcsIDIwNywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgCi0gICAgODQsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAKLSAgICAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNjMsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMDgsIDc3LCA2MCwgMzEsIAotICAgIDE2LCAyMjUsIDg0LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMjcsIDIwOSwgCi0gICAgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIyNywgMjA5LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCi0gICAgMjE4LCA5NSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzMCwgMjEzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIAotICAgIDI1MCwgMTYzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIDI0MCwgODAsIDIwOSwgMTI3LCA2MCwgMzEsIDE2LCAKLSAgICAyNDAsIDgwLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDgwLCAyNDMsIDIwMiwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCi0gICAgMjA2LCA2NiwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIxNywgMjA2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgCi0gICAgMjI1LCA4NCwgMjE4LCA5NSwgMjA5LCAxMzAsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzgsIDE5LCAyMjMsIDE2NCwgMjUwLCAKLSAgICAxNjYsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNDMsIDE3MCwgNjAsIDMxLCAxNiwgMjQxLCA5MCwgMjMwLCAKLSAgICAxOSwgMjM5LCAxMTAsIDIwNSwgMTcxLCA2MCwgMzEsIDE2LCAyMzEsIDYzLCA2MCwgMzEsIDE2LCAyMzEsIDYxLCA2MCwgMzEsIAotICAgIDE2LCAyMzksIDExMCwgMjUwLCAxMjUsIDI0NCwgNCwgMjM1LCAxNTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgCi0gICAgMTg1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMywgODIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjMsIAotICAgIDc3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAKLSAgICAxMTAsIDIxMiwgNjQsIDI0MywgMjE2LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjksIAotICAgIDIwMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMDIsIDE3LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAKLSAgICAyMTcsIDIyMiwgMTAxLCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjIsIDEwMSwgMjUwLCAKLSAgICAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMzksIAotICAgIDExMCwgMjI1LCAxMjgsIDI0NiwgMTAyLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDI3LCAyMTIsIDY0LCAyNDYsIDEwMiwgCi0gICAgMjA2LCA2NSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMTAsIDk4LCA2MCwgMzEsIDE2LCAKLSAgICAyMzksIDExMCwgMjIyLCAyMjksIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMDEsIDI0MSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIAotICAgIDIyOSwgMzcsIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMTEsIDIxOSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIzNSwgMjA2LCAKLSAgICAyMDMsIDEzLCAyMDksIDEzMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MSwgOTEsIDI1MCwgMTkxLCA2MCwgMzEsIDE2LCAKLSAgICAyMDMsIDEzLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIAotICAgIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIAotICAgIDI0MywgMjEwLCAyMjQsIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNDMsIDE5MywgCi0gICAgMjQwLCAyMTgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAKLSAgICAzMSwgMTYsIDIwMywgMTMsIDI1MCwgMTY4LCAyNDIsIDMsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyMjQsIAotICAgIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDI0MywgMTkzLCAyNDAsIDIxOCwgMjQzLCAKLSAgICAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIwOCwgNzQsIDIyMCwgNDgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDE3NSwgMjQzLCAyMDksIDYwLCAzMSwgMTYsIDIzOCwgMTc1LCAyMDMsIDEyLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAKLSAgICAxNjgsIDIyNCwgMTIzLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAxNjgsIDIyNCwgMjU1LCA2MCwgMzEsIDE2LCAyNDMsIAotICAgIDIxOCwgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyMDksIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKLSAgICA3NywgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKLSAgICA3OCwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDIwOSwgMTIzLCA2MCwgMzEsIDE2LCAyMTIsIAotICAgIDEzMCwgMjUwLCA4OCwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIAotICAgIDEzMCwgMjUwLCA4OSwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDIwOSwgMTIzLCA2MCwgMzEsIAotICAgIDE2LCAyNDMsIDE5NCwgMjM4LCAxNTYsIDYwLCAzMSwgMTYsIDI0MywgMjAxLCAyMTksIDIxNiwgNjAsIDMxLCAxNiwgMjExLCAKLSAgICA3MSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDE4NSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwNSwgMTcxLCA2MCwgMzEsIAotICAgIDE2LCAyNTAsIDEwOSwgMjM5LCA4LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDI1MCwgCi0gICAgMTA5LCAyMjksIDIwMSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMjIsIAotICAgIDEwMCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgCi0gICAgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAKLSAgICAxNzgsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAzOSwgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMjMsIDIyMiwgMjI3LCAyMjksIDIyMCwgMzEsIDE2LCAyMTIsIDEyMCwgMjQ4LCAyMjYsIDMxLCAxNiwgNTIsIDI0OCwgMjI2LCAKLSAgICAzMSwgMTYsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyMTYsIDc0LCA0NiwgMjQ4LCAyMjYsIDMxLCAxNiwgMjQ0LCAxNDMsIAotICAgIDI0OCwgMjI2LCAzMSwgMTYsIDIxMiwgMjI4LCAyNDgsIDIyNiwgMzEsIDE2LCA0OSwgMjE2LCAxMDEsIDU0LCAzMSwgMTYsIAotICAgIDUwLCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgMjE2LCAxMDEsIDI0MywgODMsIDMxLCAxNiwgMjQ0LCAxODUsIDIxNCwgMTU3LCAKLSAgICAzMSwgMTYsIDI0NCwgMjEzLCAyNDcsIDQ1LCAzMSwgMTYsIDIxNCwgMTU3LCAzMSwgMTYsIDI0NSwgMjUwLCAzMSwgMTYsIAotICAgIDIxNiwgOTksIDI0MCwgMTUsIDMxLCAxNiwgMjE2LCA5OSwgMjQwLCAxNCwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDEzLCAzMSwgCi0gICAgMTYsIDI0MCwgMzYsIDMxLCAxNiwgMjQwLCAzNywgNTYsIDMxLCAxNiwgMjQ3LCAyMTYsIDgyLCAzMSwgMTYsIDI0NywgODIsIAotICAgIDMxLCAxNiwgMjQ3LCAyMjgsIDMxLCAxNiwgMTU1LCAzMSwgMTYsIDIyMCwgMjgsIDIxMSwgMTAyLCAzMSwgMTYsIDIwNywgCi0gICAgMTMzLCAyMTEsIDEwMiwgMzEsIDE2LCAyMDksIDI5LCAyMTEsIDEwMiwgMzEsIDE2LCAyMzksIDE0NiwgMjExLCAxMDIsIDMxLCAKLSAgICAxNiwgMjM5LCAyMzIsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODcsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODUsIDIzOSwgCi0gICAgMTI3LCAzMSwgMTYsIDIzOSwgMTQ0LCAyMzksIDEyNywgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMwLCAzMSwgMTYsIDIzOSwgCi0gICAgNzYsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjM5LCA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI0OCwgCi0gICAgMjExLCAzMSwgMTYsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgCi0gICAgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjUxLCAwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKLSAgICAyMTEsIDMxLCAxNiwgMjQyLCA0NywgMjQ2LCAyOSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI4LCAzMSwgMTYsIDIyMywgCi0gICAgMjI2LCAyMjUsIDE5LCAyMTYsIDg1LCAzMSwgMTYsIDUyLCAyMTMsIDU2LCAzMSwgMTYsIDUyLCAyMzksIDIxNiwgMzEsIDE2LCAKLSAgICAyMzksIDIxNywgMjA2LCAyMjQsIDMxLCAxNiwgMjM5LCAyMTcsIDI0MiwgNzAsIDMxLCAxNiwgMjIzLCA2NiwgMjA2LCAyMjQsIAotICAgIDMxLCAxNiwgMjIzLCA2NiwgMjQyLCA3MCwgMzEsIDE2LCAyMTMsIDU3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTMsIDU3LCAKLSAgICAyNDIsIDcwLCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjEzLCA1NiwgMzEsIDE2LCAyMTcsIDU2LCAxNDMsIDIzOSwgMjE2LCAKLSAgICAzMSwgMTYsIDI0NSwgMjMwLCAyMDgsIDIyMSwgMzEsIDE2LCAyNDUsIDc4LCAyMDgsIDIyMSwgMzEsIDE2LCAyMTksIDIxOCwgCi0gICAgMjUxLCAwLCAzMSwgMTYsIDIxOSwgMjE4LCAyNDgsIDIxMSwgMzEsIDE2LCAyMTcsIDM3LCAyNTEsIDAsIDMxLCAxNiwgMjE3LCAKLSAgICAzNywgMjQ4LCAyMTEsIDMxLCAxNiwgMjIzLCAyMjksIDIxNiwgODUsIDMxLCAxNiwgMjA0LCAzMSwgMjE2LCA4NSwgMzEsIAotICAgIDE2LCAxNjIsIDIxNiwgODUsIDMxLCAxNiwgMjE3LCA1NiwgMjE2LCA4NSwgMzEsIDE2LCAyNDEsIDEzOSwgMjE2LCA4NSwgCi0gICAgMzEsIDE2LCAyMTIsIDgxLCAyMTYsIDg1LCAzMSwgMTYsIDIwOSwgNTEsIDIxNiwgODUsIDMxLCAxNiwgMjEyLCA3MywgMjE2LCAKLSAgICA4NSwgMzEsIDE2LCAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMTYsIDg1LCAzMSwgMTYsIDIwMywgMTk3LCAyMjEsIDE1NiwgCi0gICAgMzEsIDE2LCA5MSwgMjIxLCAxNTYsIDMxLCAxNiwgMjQ2LCA2MiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAzMSwgMTYsIDUxLCAKLSAgICAyMjEsIDE1NywgMjA0LCAzMywgMzEsIDE2LCA1MSwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAKLSAgICAxNTcsIDExMiwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgCi0gICAgODYsIDIyMSwgMTU3LCA0OSwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNDksIDI0OCwgNDMsIDMxLCAKLSAgICAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA1MCwgMjQ4LCAKLSAgICA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAKLSAgICAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCAKLSAgICA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAKLSAgICAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4MywgMjIxLCAxNTcsIDEyMSwgMjA0LCAzMywgCi0gICAgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyNDgsIDQzLCAzMSwgMTYsIDIxOSwgNzcsIDIyMSwgMTU2LCAzMSwgCi0gICAgMTYsIDIwNSwgMTgzLCAyMjEsIDE1NiwgMzEsIDE2LCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMjEsIDQ5LCAyMjEsIAotICAgIDE1NiwgMzEsIDE2LCAyNDYsIDEsIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDI0OCwgCi0gICAgNDMsIDMxLCAxNiwgMjQ3LCAyMTQsIDMxLCAxNiwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgMTYyLCAyMjEsIDE2MCwgCi0gICAgMzEsIDE2LCAyMTcsIDU2LCAyMjEsIDE2MCwgMzEsIDE2LCAyNDEsIDEzOSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA4MSwgCi0gICAgMjIxLCAxNjAsIDMxLCAxNiwgMjA5LCA1MSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA3MywgMjIxLCAxNjAsIDMxLCAxNiwgCi0gICAgMTE4LCAyMzYsIDEyLCAyMDcsIDE0OSwgMjIxLCAxNjAsIDMxLCAxNiwgMzksIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIxMSwgCi0gICAgMTg0LCAyMTEsIDc3LCAzMSwgMTYsIDM5LCAyMDgsIDk0LCAzMSwgMTYsIDM5LCAyMDgsIDkzLCAzMSwgMTYsIDM5LCAyMDgsIAotICAgIDkyLCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5NCwgMzEsIDE2LCAyNDAsIDAsIDIwOCwgOTMsIDMxLCAxNiwgMjQwLCAwLCAKLSAgICAyMDgsIDkyLCAzMSwgMTYsIDM5LCAyNTAsIDMxLCAyNDMsIDg1LCAzMSwgMTYsIDM5LCAyMzksIDIyNCwgMzEsIDE2LCAzOSwgCi0gICAgMjM5LCAyMjMsIDMxLCAxNiwgMzksIDIzOSwgMjIyLCAzMSwgMTYsIDM5LCAyMzksIDIyMSwgMzEsIDE2LCAzOSwgMjM5LCAKLSAgICAyMjAsIDMxLCAxNiwgMjQ4LCAxNDIsIDI0OCwgMTU5LCAzMSwgMTYsIDI0MSwgODQsIDI0OCwgMTU5LCAzMSwgMTYsIDI0OCwgCi0gICAgMTQyLCAyMDgsIDI1MCwgMzEsIDE2LCAyNDEsIDg0LCAyMDgsIDI1MCwgMzEsIDE2LCAyNDgsIDE0MiwgMjEyLCAzNywgMzEsIAotICAgIDE2LCAyNDEsIDg0LCAyMTIsIDM3LCAzMSwgMTYsIDI0OCwgMTQyLCAyMTgsIDE3NCwgMzEsIDE2LCAyNDEsIDg0LCAyMTgsIAotICAgIDE3NCwgMzEsIDE2LCAzOSwgMjUxLCAxMzgsIDMxLCAxNiwgMzksIDIxMSwgMTA1LCAzMSwgMTYsIDM5LCAyMDksIDE0MCwgCi0gICAgMzEsIDE2LCAzOSwgMjExLCAxMDYsIDMxLCAxNiwgMzksIDIyNSwgOTYsIDMxLCAxNiwgMzksIDIyNSwgOTUsIDMxLCAxNiwgCi0gICAgMzksIDI1MSwgMTM3LCAzMSwgMTYsIDM5LCAyMjcsIDIsIDMxLCAxNiwgMjUwLCAxMDAsIDIwNiwgMjI0LCAzMSwgMTYsIAotICAgIDI1MCwgMTAwLCAyNDIsIDcwLCAzMSwgMTYsIDM5LCAyNDMsIDEwMCwgMzEsIDE2LCAzOSwgMjE1LCAyNDksIDMxLCAxNiwgCi0gICAgMzksIDIzOSwgMjA2LCAzMSwgMTYsIDM5LCAyMTIsIDMzLCAzMSwgMTYsIDM5LCAyNDgsIDEyMCwgMzEsIDE2LCAzOSwgNTIsIAotICAgIDIwOCwgMTUwLCAzMSwgMTYsIDM5LCAyMDgsIDcwLCAyMDgsIDE1MCwgMzEsIDE2LCAyMTUsIDI1NCwgMzEsIDE2LCAyMTEsIAotICAgIDAsIDMxLCAxNiwgMjAyLCAxNTksIDMxLCAxNiwgMjE4LCAxNjYsIDMxLCAxNiwgMjI0LCAyMDYsIDMxLCAxNiwgMjM5LCAKLSAgICAxNTUsIDMxLCAxNiwgMjQ1LCAxNDAsIDMxLCAxNiwgMjQ0LCA2MiwgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjEyLCAKLSAgICA1NywgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjIxLCAxOTIsIDIxMiwgNTcsIDMxLCAxNiwgMjA4LCAxMjAsIDMxLCAKLSAgICAxNiwgMjA3LCAxNzUsIDMxLCAxNiwgMjMwLCAyMzksIDIwNywgMTc1LCAzMSwgMTYsIDIwNywgMTc2LCAyMTIsIDU3LCAzMSwgCi0gICAgMTYsIDIwNywgMTc2LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAzMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKLSAgICAyOCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNywgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNiwgMzEsIDE2LCAyMTksIAotICAgIDIzNCwgMjExLCAyNSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMywgMzEsIAotICAgIDE2LCAyMTksIDIzNCwgMjExLCAyMiwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKLSAgICAzMCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyOSwgMzEsIDE2LCAyMzcsIDc1LCAzMSwgMTYsIDIyMiwgMjM4LCAzMSwgMTYsIAotICAgIDI0MSwgODQsIDc2LCAyMTEsIDY3LCAzMSwgMTYsIDI0NCwgNTUsIDIxMiwgNTcsIDMxLCAxNiwgMzksIDEyMSwgMjQ3LCAKLSAgICAyNDAsIDMxLCAxNiwgMzksIDExMiwgMjQ3LCAyNDAsIDMxLCAxNiwgMzksIDIzNywgODgsIDMxLCAxNiwgMzksIDIxMiwgMjMsIAotICAgIDIxOCwgOTksIDMxLCAxNiwgMjE5LCAyOCwgODIsIDMxLCAxNiwgMjE5LCAyOCwgMTEyLCA4MiwgMzEsIDE2LCAxNjIsIDIxOSwgCi0gICAgMjgsIDgyLCAzMSwgMTYsIDIzOCwgNDcsIDIwNiwgMjI0LCAzMSwgMTYsIDIzOCwgNDcsIDI0MiwgNzAsIDMxLCAxNiwgMywgCi0gICAgMjM5LCAyNTUsIDMxLCAxNiwgMjQ0LCAxNjgsIDMxLCAxNiwgMjQ0LCAxNjksIDI1MSwgMTQsIDMxLCAxNiwgMjI1LCA2NSwgCi0gICAgMzEsIDE2LCAyMjcsIDIwLCAzMSwgMTYsIDI0NywgMjExLCAzMSwgMTYsIDIxMywgMTQ3LCAyMDQsIDMzLCAzMSwgMTYsIAotICAgIDIxMywgMTQ3LCAyNDgsIDQzLCAzMSwgMTYsIDIyNCwgMTA2LCAzMSwgMTYsIDIyNCwgMTA3LCAyNDgsIDQzLCAzMSwgMTYsIAotICAgIDIxMywgMTQxLCAyMDQsIDMzLCAzMSwgMTYsIDIxMywgMTQxLCAyNDgsIDQzLCAzMSwgMTYsIDIzOSwgOTMsIDIwNCwgMzMsIAotICAgIDMxLCAxNiwgMjM5LCA5MywgMjQ4LCA0MywgMzEsIDE2LCAyMjcsIDIxLCAyMTgsIDI0NCwgMjE2LCA4NSwgMzEsIDE2LCAKLSAgICAyMjcsIDIxLCAyMzEsIDU0LCAyMTYsIDg1LCAzMSwgMTYsIDI0NywgMjEyLCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQ3LCAKLSAgICAyMTYsIDg1LCAzMSwgMTYsIDIyNCwgMTA3LCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQxLCAyMTYsIDg1LCAzMSwgMTYsIAotICAgIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMTgsIDI0MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAKLSAgICAyNDIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAyNDIsIDI0NSwgMTA0LCAKLSAgICAyMTcsIDIxNiwgMjE4LCAyNDQsIDI0MywgMTgxLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAKLSAgICAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTMsIAotICAgIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODEsIDMxLCAxNiwgCi0gICAgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODAsIDMxLCAxNiwgMjA5LCAKLSAgICAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxNzksIDMxLCAxNiwgMjQ1LCAxMzMsIAotICAgIDMxLCAxNiwgMjM3LCAyNDMsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDIzNywgMjQzLCAyNDAsIDE3NSwgMjQ2LCAzMCwgCi0gICAgMzEsIDE2LCA1MSwgMjQ5LCAyNTUsIDMxLCAxNiwgMjA1LCAyMDMsIDMxLCAxNiwgMjE4LCA2NiwgMzEsIDE2LCAyNDYsIDIxLCAKLSAgICAzMSwgMTYsIDIxNCwgMjAwLCAzMSwgMTYsIDI0NiwgMjUsIDMxLCAxNiwgMjA4LCAxMzgsIDMxLCAxNiwgMjE4LCAzNiwgMzEsIAotICAgIDE2LCAyMTgsIDM3LCAyMzksIDIwOSwgMzEsIDE2LCAyMTQsIDIwMSwgMjM5LCAyMDksIDMxLCAxNiwgMjA4LCAxMzksIDIxNiwgCi0gICAgODIsIDMxLCAxNiwgMjE4LCAyMjUsIDIxMCwgMjQ3LCAzMSwgMTYsIDIyOSwgOTAsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgCi0gICAgMTYsIDIyOSwgOTAsIDI0MSwgODQsIDc2LCAyMTgsIDE1OSwgMzEsIDE2LCAyMjksIDkwLCA0NiwgMjIxLCAxNjAsIDMxLCAKLSAgICAxNiwgMjI5LCA5MCwgMjE2LCAxNTAsIDgyLCAzMSwgMTYsIDIyOSwgOTAsIDIwNCwgMzEsIDIyMSwgMTYwLCAzMSwgMTYsIAotICAgIDIyOSwgOTAsIDE2MiwgMjIxLCAxNjAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDI0MiwgCi0gICAgNzAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgCi0gICAgOTAsIDI0MSwgMTM5LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCA3MCwgMzEsIDE2LCAyMjksIDkwLCAyNDEsIDEzOSwgMjIxLCAKLSAgICAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgOTAsIDIzOSwgMjE3LCA1NCwgMzAsIDIwNSwgMTg4LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEyNywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTEyLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDUsIAotICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwMywgMzAsIAotICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ2LCAzMCwgMjA1LCAKLSAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDQsIDMwLCAyMDUsIDE4OCwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTQzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0MiwgMzAsIDIwNSwgMTg4LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQwLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEzOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTM2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzQsIAotICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzMiwgMzAsIAotICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTEwLCAzMCwgMjA1LCAKLSAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDgsIDMwLCAyMDUsIDE4OCwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTA3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEzNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTIsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjMxLCAKLSAgICA1LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIzMSwgNSwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTQ0LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIAotICAgIDE0MCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTM5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAKLSAgICAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgMjMxLCA1LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMzEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTI5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNiwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjQsIDMwLCAyMzEsIAotICAgIDUsIDIyMSwgMTY0LCAyMTAsIDEyMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIyLCAzMCwgMjMxLCA1LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxMjEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTE4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNiwgMzAsIAotICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTQsIDMwLCAyMzEsIDUsIAotICAgIDIyMSwgMTY0LCAyMTAsIDExMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTExLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMTAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA4LCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDcsIDM5LCAzMCwgMzEsIDIwOCwgNjYsIDM5LCAzMCwgMzEsIDIwOSwgCi0gICAgMTI0LCAzOSwgMzAsIDMxLCAyMTgsIDI1MywgMzAsIDMxLCAyMjcsIDIwNCwgMjI0LCA0NSwgMzUsIDI0MSwgMTc5LCAyNDMsIAotICAgIDE5NSwgMzUsIDIzNywgNTAsIDI0MSwgMTc5LCAyNDMsIDE5NSwgMzUsIDIzNiwgMTYsIDI0MSwgMTc5LCAyNDMsIDE5NSwgCi0gICAgMzUsIDI0MSwgMTc4LCAyMzcsIDUxLCAyNDMsIDE5NSwgMzUsIDI0MSwgMTc4LCAyMzYsIDE1LCAyNDMsIDE5NSwgMzUsIAotICAgIDI0MSwgMTc5LCAyMDksIDEyNiwgMzUsIDI0NiwgMjE3LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAyLCAyNDYsIDYxLCAyMDksIAotICAgIDEyNiwgMzUsIDIyNCwgOTgsIDIwOSwgMTI2LCAzNSwgMjQ4LCAyMjEsIDIwOSwgMTI2LCAzNSwgMjI5LCAxOTUsIDIxMiwgCi0gICAgMzYsIDIwOSwgMTI2LCAzNSwgMjQ1LCAxODUsIDIwOSwgMTI2LCAzNSwgMjUwLCA3NywgMjA5LCAxMjYsIDM1LCAyMTksIAotICAgIDI1MCwgMjA5LCAxMjYsIDM1LCAyNDcsIDIyMSwgMjE5LCAyMTEsIDIwOSwgMTI2LCAzNSwgMjQ0LCA1NywgMjE5LCAyNDUsIAotICAgIDI0MywgMTQ4LCAyMDksIDEyNiwgMzUsIDI0MywgMTQ1LCAyMDksIDEyNiwgMzUsIDIwMiwgMjI1LCAyMDksIDEyNiwgMzUsIAotICAgIDIzMSwgNDAsIDIwOSwgMTI2LCAzNSwgMjE5LCA3LCAyMDksIDEyNiwgMzUsIDIxNiwgMTU3LCAyMDksIDEyNiwgMzUsIDI0NSwgCi0gICAgMTk3LCAyMDksIDEyNiwgMzUsIDIzNiwgMTI3LCAyNDksIDI1LCAyMDksIDEyNiwgMzUsIDIwNCwgMTAzLCAyMDksIDEyNiwgCi0gICAgMzUsIDIzOSwgMTgxLCAyMDksIDEyNiwgMzUsIDI1MSwgMTEyLCAyMDksIDEyNiwgMzUsIDIxNiwgMTE0LCAyMDksIDEyNiwgCi0gICAgMzUsIDIxNiwgODksIDIwOSwgMTI2LCAzNSwgMjQxLCAxNzcsIDIwOSwgMTI2LCAzNSwgMjMwLCA4NSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyNDUsIDE5MiwgMjA5LCAxMjYsIDM1LCAyNDEsIDgzLCAyMDksIDEyNiwgMzUsIDI0MiwgMTUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjQ2LCAxODYsIDIwOSwgMTI2LCAzNSwgMjQ0LCA2NywgMjA5LCAxMjYsIDM1LCAyNiwgMjE2LCA4OCwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMTksIDE2MCwgMjA5LCAxMjYsIDM1LCAyMjcsIDIwOCwgMjA5LCAxMjYsIDM1LCAyNDYsIDE0LCAyMDksIDEyNiwgMzUsIAotICAgIDIyOSwgODAsIDIwOSwgMTI2LCAzNSwgMjM4LCAyMTQsIDIwOSwgMTI2LCAzNSwgMjExLCA0MywgMjA5LCAxMjYsIDM1LCAKLSAgICAyMTcsIDE2OCwgMjA5LCAxMjYsIDM1LCAyMzksIDEwMSwgMjA5LCAxMjYsIDM1LCAyMTYsIDkwLCAyMDksIDEyNiwgMzUsIAotICAgIDIyNywgMjQ3LCAyMTksIDI0NSwgMjI0LCA3OCwgMjA5LCAxMjYsIDM1LCAyMTYsIDg2LCAyMDksIDEyNiwgMzUsIDIzOCwgCi0gICAgMzMsIDIwOCwgMTczLCAyMjUsIDMsIDIwOSwgMTI2LCAzNSwgMjQxLCA4NSwgMjA5LCAxMjYsIDM1LCAyMTEsIDU2LCAyMDksIAotICAgIDEyNiwgMzUsIDIzNywgMjQ1LCAyMDksIDEyNiwgMzUsIDI0MSwgNzYsIDIwOSwgMTI2LCAzNSwgMjE5LCA1MCwgMjA5LCAKLSAgICAxMjYsIDM1LCAyMTUsIDI0MiwgMjA5LCAxMjYsIDM1LCAyMzksIDIwNywgMjA5LCAxMjYsIDM1LCAyMDYsIDY0LCAyMTksIAotICAgIDI0NSwgMjA0LCA4NCwgMjA5LCAxMjYsIDM1LCAyNDUsIDIwMiwgMjA5LCAxMjYsIDM1LCAyMjUsIDE4LCAyMDksIDEyNiwgCi0gICAgMzUsIDI0MCwgMjQ1LCAyMDksIDEyNiwgMzUsIDIwNiwgMjM0LCAyMDksIDEyNiwgMzUsIDI0MywgMTgyLCAyMDksIDEyNiwgCi0gICAgMzUsIDI0NiwgMTYsIDIyNCwgNywgMjA5LCAxMjYsIDM1LCAyMzcsIDIyMiwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNSwgMjMxLCAKLSAgICA0OSwgMjA5LCAxMjYsIDM1LCAyMjUsIDczLCAyMDksIDEyNiwgMzUsIDI1MSwgMTMzLCAyMDksIDEyNiwgMzUsIDI0MSwgCi0gICAgMTAxLCAyMDksIDEyNiwgMzUsIDI0MiwgNzQsIDIwOSwgMTI2LCAzNSwgMjA0LCA4MiwgMjA5LCAxMjYsIDM1LCAyMTIsIAotICAgIDExNSwgMjA5LCAxMjYsIDM1LCAyMzEsIDE0LCAyMDksIDEyNiwgMzUsIDI0NCwgMjUsIDIwOSwgMTI2LCAzNSwgMjQ0LCAKLSAgICAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNzgsIDIwOSwgMTI2LCAzNSwgMjQwLCAyMDksIDIwOSwgMTI2LCAzNSwgMjEzLCAKLSAgICAxMDQsIDIwOSwgMTI2LCAzNSwgMjExLCA2MCwgMjA5LCAxMjYsIDM1LCAyMzcsIDkwLCAyMDksIDEyNiwgMzUsIDI0NSwgCi0gICAgMjI2LCAyMDksIDEyNiwgMzUsIDI0NiwgMTEsIDIwOSwgMTI2LCAzNSwgMjQwLCA4NywgMjA5LCAxMjYsIDM1LCAyNTEsIDc2LCAKLSAgICAyMDksIDEyNiwgMzUsIDI0NSwgMjI1LCAyMDksIDEyNiwgMzUsIDIyMCwgMzIsIDIwOSwgOTMsIDIwNiwgNDEsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjQzLCAyMDQsIDIwOSwgMTI2LCAzNSwgMjI4LCAxMDEsIDIwOSwgMTI2LCAzNSwgMjM5LCAxNTAsIDI0NSwgCi0gICAgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDgsIAotICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAKLSAgICAxNDksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIAotICAgIDE3LCAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAKLSAgICAyMDYsIDIzNiwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIyMiwgNjMsIDI0NSwgMTUzLCAKLSAgICAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDgsIDI0NSwgCi0gICAgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDksIAotICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAKLSAgICAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIAotICAgIDE0OCwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIyMiwgNjMsIDEzLCAyNiwgNiwgNjMsIAotICAgIDEzLCAyNiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgNiwgMjQ1LCA1MSwgMTMsIDI2LCA2LCAKLSAgICA3NCwgMTMsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCA2LCAyMzksIDc1LCAxMywgMjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIAotICAgIDYsIDc1LCAxMywgMjYsIDYsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgNiwgMTU5LCAxMywgMjYsIAotICAgIDYsIDIyNiwgMTg1LCAxMywgMjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDYsIDc4LCAxMywgMjYsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDYsIDE0NiwgMTMsIDI2LCA2LCAxOTQsIDEzLCAyNiwgNiwgMjEwLCA2OSwgMTMsIAotICAgIDI2LCA2LCA2OCwgMTMsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCA2LCAyMDMsIDE5NiwgCi0gICAgMTMsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCA1LCA2MywgMTMsIDI2LCA1LCAyNDksIAotICAgIDI1NSwgMTMsIDI2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCA1LCAyNDUsIDUxLCAxMywgMjYsIDUsIDc0LCAxMywgMjYsIDUsIAotICAgIDI0MCwgMTc0LCAxMywgMjYsIDUsIDIzOSwgNzUsIDEzLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCAyNiwgNSwgNzUsIDEzLCAyNiwgCi0gICAgNSwgMjMwLCAxODQsIDEzLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDI2LCA1LCAxNTksIDEzLCAyNiwgNSwgMjI2LCAxODUsIDEzLCAKLSAgICAyNiwgNSwgMjIzLCAxNjMsIDEzLCAyNiwgNSwgNzgsIDEzLCAyNiwgNSwgMjE5LCAxODQsIDEzLCAyNiwgNSwgMjE3LCAxMzQsIAotICAgIDEzLCAyNiwgNSwgMTQ2LCAxMywgMjYsIDUsIDE5NCwgMTMsIDI2LCA1LCAyMTAsIDY5LCAxMywgMjYsIDUsIDY4LCAxMywgCi0gICAgMjYsIDUsIDIwNiwgMTY0LCAxMywgMjYsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDUsIAotICAgIDIwMywgMTI0LCAxMywgMjYsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDYsIDYzLCAxMywgMzcsIDYsIDI0OSwgMjU1LCAxMywgCi0gICAgMzcsIDYsIDI0NywgMTI1LCAxMywgMzcsIDYsIDI0NSwgNTEsIDEzLCAzNywgNiwgNzQsIDEzLCAzNywgNiwgMjQwLCAxNzQsIAotICAgIDEzLCAzNywgNiwgMjM5LCA3NSwgMTMsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDM3LCA2LCA3NSwgMTMsIDM3LCA2LCAyMzAsIAotICAgIDE4NCwgMTMsIDM3LCA2LCAyMzAsIDU0LCAxMywgMzcsIDYsIDE1OSwgMTMsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDM3LCA2LCAKLSAgICAyMjMsIDE2MywgMTMsIDM3LCA2LCA3OCwgMTMsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIAotICAgIDM3LCA2LCAxNDYsIDEzLCAzNywgNiwgMTk0LCAxMywgMzcsIDYsIDIxMCwgNjksIDEzLCAzNywgNiwgNjgsIDEzLCAzNywgNiwgCi0gICAgMjA2LCAxNjQsIDEzLCAzNywgNiwgMjA0LCAxNDQsIDEzLCAzNywgNiwgMjAzLCAxOTYsIDEzLCAzNywgNiwgMjAzLCAxMjQsIAotICAgIDEzLCAzNywgNiwgMjAyLCAxNTksIDEzLCAzNywgNSwgNjMsIDEzLCAzNywgNSwgMjQ5LCAyNTUsIDEzLCAzNywgNSwgMjQ3LCAKLSAgICAxMjUsIDEzLCAzNywgNSwgMjQ1LCA1MSwgMTMsIDM3LCA1LCA3NCwgMTMsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDM3LCA1LCAKLSAgICAyMzksIDc1LCAxMywgMzcsIDUsIDc1LCAxMywgMzcsIDUsIDIzMCwgMTg0LCAxMywgMzcsIDUsIDIzMCwgNTQsIDEzLCAzNywgCi0gICAgNSwgMTU5LCAxMywgMzcsIDUsIDIyNiwgMTg1LCAxMywgMzcsIDUsIDIyMywgMTYzLCAxMywgMzcsIDUsIDc4LCAxMywgMzcsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgMzcsIDUsIDIxNywgMTM0LCAxMywgMzcsIDUsIDE0NiwgMTMsIDM3LCA1LCAxOTQsIDEzLCAzNywgCi0gICAgNSwgMjEwLCA2OSwgMTMsIDM3LCA1LCA2OCwgMTMsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIAotICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAzNywgNiwgCi0gICAgNjMsIDEzLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAzNywgNiwgMjQ1LCAKLSAgICA1MSwgMTMsIDI2LCAzNywgNiwgNzQsIDEzLCAyNiwgMzcsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDM3LCA2LCAyMzksIDc1LCAKLSAgICAxMywgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNiwgNzUsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA2LCAxNTksIDEzLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgMjYsIAotICAgIDM3LCA2LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNiwgNzgsIDEzLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgMjYsIDM3LCAKLSAgICA2LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNiwgMTQ2LCAxMywgMjYsIDM3LCA2LCAxOTQsIDEzLCAyNiwgMzcsIDYsIDIxMCwgCi0gICAgNjksIDEzLCAyNiwgMzcsIDYsIDY4LCAxMywgMjYsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCAzNywgNiwgMjA0LCAxNDQsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCAzNywgNiwgMjAyLCAKLSAgICAxNTksIDEzLCAyNiwgMzcsIDUsIDYzLCAxMywgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIAotICAgIDEzLCAyNiwgMzcsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMzcsIDUsIDc0LCAxMywgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDI2LCAzNywgNSwgMjM5LCA3NSwgMTMsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCAyNiwgMzcsIDUsIDc1LCAxMywgMjYsIAotICAgIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDI2LCAzNywgNSwgMTU5LCAxMywgMjYsIDM3LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCAyNiwgMzcsIDUsIDc4LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMTksIDE4NCwgMTMsIDI2LCAzNywgNSwgMjE3LCAxMzQsIDEzLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDI2LCAzNywgNSwgCi0gICAgMTk0LCAxMywgMjYsIDM3LCA1LCAyMTAsIDY5LCAxMywgMjYsIDM3LCA1LCA2OCwgMTMsIDI2LCAzNywgNSwgMjA2LCAxNjQsIAotICAgIDEzLCAyNiwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAzNywgNSwgMjAzLCAKLSAgICAxMjQsIDEzLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMTMyLCA2LCA2MywgMTMsIDEzMiwgNiwgMjQ3LCAxMjUsIDEzLCAKLSAgICAxMzIsIDYsIDI0NSwgNTEsIDEzLCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAxMzIsIDYsIDIzMCwgMTg0LCAxMywgMTMyLCA2LCAKLSAgICAyMzAsIDU0LCAxMywgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDEzMiwgNiwgNzgsIDEzLCAxMzIsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDEzMiwgNiwgMTk0LCAxMywgMTMyLCA2LCAyMTAsIDY5LCAxMywgMTMyLCA2LCA2OCwgCi0gICAgMTMsIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAxMzIsIDYsIDIwNCwgMTQ0LCAxMywgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAxMzIsIDYsIDIwMiwgMTU5LCAxMywgMTMyLCA1LCA2MywgMTMsIDEzMiwgNSwgMjQ5LCAKLSAgICAyNTUsIDEzLCAxMzIsIDUsIDI0NywgMTI1LCAxMywgMTMyLCA1LCAyNDUsIDUxLCAxMywgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDEzMiwgNSwgMjM3LCAxNzEsIDEzLCAxMzIsIDUsIDc1LCAxMywgMTMyLCA1LCAyMzAsIDE4NCwgMTMsIDEzMiwgNSwgMjMwLCAKLSAgICA1NCwgMTMsIDEzMiwgNSwgMTU5LCAxMywgMTMyLCA1LCAyMjYsIDE4NSwgMTMsIDEzMiwgNSwgMjIzLCAxNjMsIDEzLCAxMzIsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDEzMiwgNSwgMTQ2LCAxMywgMTMyLCA1LCAxOTQsIDEzLCAKLSAgICAxMzIsIDUsIDIxMCwgNjksIDEzLCAxMzIsIDUsIDY4LCAxMywgMTMyLCA1LCAyMDYsIDE2NCwgMTMsIDEzMiwgNSwgMjA0LCAKLSAgICAxNDQsIDEzLCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMTMyLCA1LCAyMDMsIDEyNCwgMTMsIDEzMiwgNSwgMjAyLCAxNTksIAotICAgIDEzLCAyNiwgMTMyLCA2LCA2MywgMTMsIDI2LCAxMzIsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNiwgMjQ3LCAxMjUsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyNDUsIDUxLCAxMywgMjYsIDEzMiwgNiwgNzQsIDEzLCAyNiwgMTMyLCA2LCAyNDAsIDE3NCwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAyNiwgMTMyLCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDYsIDc1LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNiwgMTU5LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjI2LCAxODUsIDEzLCAyNiwgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDYsIDc4LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDYsIDE0NiwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDE5NCwgMTMsIDI2LCAxMzIsIDYsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA2LCA2OCwgMTMsIDI2LCAKLSAgICAxMzIsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDI2LCAxMzIsIDYsIDIwMywgMTI0LCAxMywgMjYsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgMTMyLCA1LCA2MywgMTMsIAotICAgIDI2LCAxMzIsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgMTMyLCA1LCAyNDUsIDUxLCAKLSAgICAxMywgMjYsIDEzMiwgNSwgNzQsIDEzLCAyNiwgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIDI2LCAxMzIsIDUsIDIzOSwgNzUsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDUsIDc1LCAxMywgMjYsIDEzMiwgNSwgMjMwLCAxODQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNSwgMTU5LCAxMywgMjYsIDEzMiwgNSwgMjI2LCAxODUsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDUsIDc4LCAxMywgMjYsIDEzMiwgNSwgMjE5LCAxODQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDUsIDE0NiwgMTMsIDI2LCAxMzIsIDUsIDE5NCwgMTMsIAotICAgIDI2LCAxMzIsIDUsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA1LCA2OCwgMTMsIDI2LCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTI0LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjAyLCAxNTksIDEzLCAxNjYsIDYsIDYzLCAxMywgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDE2NiwgCi0gICAgNiwgMjQ1LCA1MSwgMTMsIDE2NiwgNiwgNzQsIDEzLCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMTY2LCA2LCAyMzksIDc1LCAKLSAgICAxMywgMTY2LCA2LCAyMzAsIDE4NCwgMTMsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDE2NiwgNiwgMTU5LCAxMywgMTY2LCA2LCAKLSAgICAyMjYsIDE4NSwgMTMsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAxNjYsIDYsIDc4LCAxMywgMTY2LCA2LCAyMTksIDE4NCwgMTMsIAotICAgIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAxNjYsIDYsIDE5NCwgMTMsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDE2NiwgNiwgNjgsIAotICAgIDEzLCAxNjYsIDYsIDIwNiwgMTY0LCAxMywgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAKLSAgICAxNjYsIDYsIDIwMywgMTI0LCAxMywgMTY2LCA1LCA2MywgMTMsIDE2NiwgNSwgMjQ5LCAyNTUsIDEzLCAxNjYsIDUsIDI0NywgCi0gICAgMTI1LCAxMywgMTY2LCA1LCAyNDUsIDUxLCAxMywgMTY2LCA1LCA3NCwgMTMsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAxNjYsIAotICAgIDUsIDIzOSwgNzUsIDEzLCAxNjYsIDUsIDIzNywgMTcxLCAxMywgMTY2LCA1LCA3NSwgMTMsIDE2NiwgNSwgMjMwLCAxODQsIAotICAgIDEzLCAxNjYsIDUsIDIzMCwgNTQsIDEzLCAxNjYsIDUsIDE1OSwgMTMsIDE2NiwgNSwgMjI2LCAxODUsIDEzLCAxNjYsIDUsIAotICAgIDIyMywgMTYzLCAxMywgMTY2LCA1LCA3OCwgMTMsIDE2NiwgNSwgMjE5LCAxODQsIDEzLCAxNjYsIDUsIDIxNywgMTM0LCAxMywgCi0gICAgMTY2LCA1LCAxNDYsIDEzLCAxNjYsIDUsIDE5NCwgMTMsIDE2NiwgNSwgMjEwLCA2OSwgMTMsIDE2NiwgNSwgNjgsIDEzLCAKLSAgICAxNjYsIDUsIDIwNiwgMTY0LCAxMywgMTY2LCA1LCAyMDQsIDE0NCwgMTMsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAxNjYsIDUsIAotICAgIDIwMywgMTI0LCAxMywgMTY2LCA1LCAyMDIsIDE1OSwgMTMsIDE2OSwgNiwgNjMsIDEzLCAxNjksIDYsIDI0OSwgMjU1LCAxMywgCi0gICAgMTY5LCA2LCAyNDUsIDUxLCAxMywgMTY5LCA2LCA3NCwgMTMsIDE2OSwgNiwgMjQwLCAxNzQsIDEzLCAxNjksIDYsIDIzOSwgCi0gICAgNzUsIDEzLCAxNjksIDYsIDc1LCAxMywgMTY5LCA2LCAyMzAsIDE4NCwgMTMsIDE2OSwgNiwgMjMwLCA1NCwgMTMsIDE2OSwgCi0gICAgNiwgMTU5LCAxMywgMTY5LCA2LCAyMjYsIDE4NSwgMTMsIDE2OSwgNiwgNzgsIDEzLCAxNjksIDYsIDE5NCwgMTMsIDE2OSwgCi0gICAgNiwgMjEwLCA2OSwgMTMsIDE2OSwgNiwgNjgsIDEzLCAxNjksIDYsIDIwNiwgMTY0LCAxMywgMTY5LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDE2OSwgNiwgMjAzLCAxOTYsIDEzLCAxNjksIDYsIDIwMywgMTI0LCAxMywgMTY5LCA1LCA2MywgMTMsIDE2OSwgNSwgCi0gICAgMjQ5LCAyNTUsIDEzLCAxNjksIDUsIDI0NywgMTI1LCAxMywgMTY5LCA1LCAyNDUsIDUxLCAxMywgMTY5LCA1LCA3NCwgMTMsIAotICAgIDE2OSwgNSwgMjQwLCAxNzQsIDEzLCAxNjksIDUsIDIzOSwgNzUsIDEzLCAxNjksIDUsIDIzNywgMTcxLCAxMywgMTY5LCA1LCAKLSAgICA3NSwgMTMsIDE2OSwgNSwgMjMwLCAxODQsIDEzLCAxNjksIDUsIDIzMCwgNTQsIDEzLCAxNjksIDUsIDE1OSwgMTMsIDE2OSwgCi0gICAgNSwgMjI2LCAxODUsIDEzLCAxNjksIDUsIDIyMywgMTYzLCAxMywgMTY5LCA1LCA3OCwgMTMsIDE2OSwgNSwgMjE5LCAxODQsIAotICAgIDEzLCAxNjksIDUsIDIxNywgMTM0LCAxMywgMTY5LCA1LCAxNDYsIDEzLCAxNjksIDUsIDE5NCwgMTMsIDE2OSwgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDE2OSwgNSwgNjgsIDEzLCAxNjksIDUsIDIwNiwgMTY0LCAxMywgMTY5LCA1LCAyMDQsIDE0NCwgMTMsIDE2OSwgCi0gICAgNSwgMjAzLCAxOTYsIDEzLCAxNjksIDUsIDIwMywgMTI0LCAxMywgMTY5LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDYzLCAxMywgMjYsIDE2NiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCA2LCA3NCwgMTMsIDI2LCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNiwgNzUsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA2LCAxNTksIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNiwgNzgsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNiwgMTQ2LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMTk0LCAxMywgMjYsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxNjYsIDYsIDY4LCAxMywgMjYsIDE2NiwgNiwgMjA2LCAKLSAgICAxNjQsIDEzLCAyNiwgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxNjYsIDYsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDYzLCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCAKLSAgICA1LCA3NCwgMTMsIDI2LCAxNjYsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNSwgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNSwgNzUsIDEzLCAyNiwgMTY2LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA1LCAxNTksIDEzLCAyNiwgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNSwgNzgsIDEzLCAyNiwgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNSwgMTQ2LCAxMywgMjYsIDE2NiwgNSwgMTk0LCAxMywgMjYsIDE2NiwgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDI2LCAxNjYsIDUsIDY4LCAxMywgMjYsIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgMTY2LCA1LCAyMDQsIAotICAgIDE0NCwgMTMsIDI2LCAxNjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMDIsIDE1OSwgMTMsIDQxLCA2LCA2MywgMTMsIDQxLCA2LCAyNDksIDI1NSwgMTMsIDQxLCA2LCAyNDcsIDEyNSwgMTMsIAotICAgIDQxLCA2LCAyNDUsIDUxLCAxMywgNDEsIDYsIDc0LCAxMywgNDEsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDYsIDIzOSwgNzUsIAotICAgIDEzLCA0MSwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgNiwgNzUsIDEzLCA0MSwgNiwgMjMwLCAxODQsIDEzLCA0MSwgNiwgMjMwLCAKLSAgICA1NCwgMTMsIDQxLCA2LCAxNTksIDEzLCA0MSwgNiwgMjI2LCAxODUsIDEzLCA0MSwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgNiwgCi0gICAgNzgsIDEzLCA0MSwgNiwgMjE5LCAxODQsIDEzLCA0MSwgNiwgMjE3LCAxMzQsIDEzLCA0MSwgNiwgMTQ2LCAxMywgNDEsIDYsIAotICAgIDE5NCwgMTMsIDQxLCA2LCAyMTAsIDY5LCAxMywgNDEsIDYsIDY4LCAxMywgNDEsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDYsIAotICAgIDIwNCwgMTQ0LCAxMywgNDEsIDYsIDIwMywgMTk2LCAxMywgNDEsIDYsIDIwMywgMTI0LCAxMywgNDEsIDYsIDIwMiwgMTU5LCAKLSAgICAxMywgNDEsIDUsIDYzLCAxMywgNDEsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDUsIDI0NywgMTI1LCAxMywgNDEsIDUsIDI0NSwgCi0gICAgNTEsIDEzLCA0MSwgNSwgNzQsIDEzLCA0MSwgNSwgMjQwLCAxNzQsIDEzLCA0MSwgNSwgMjM5LCA3NSwgMTMsIDQxLCA1LCAKLSAgICAyMzcsIDE3MSwgMTMsIDQxLCA1LCA3NSwgMTMsIDQxLCA1LCAyMzAsIDE4NCwgMTMsIDQxLCA1LCAyMzAsIDU0LCAxMywgNDEsIAotICAgIDUsIDE1OSwgMTMsIDQxLCA1LCAyMjYsIDE4NSwgMTMsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDQxLCA1LCA3OCwgMTMsIDQxLCAKLSAgICA1LCAyMTksIDE4NCwgMTMsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDQxLCA1LCAxNDYsIDEzLCA0MSwgNSwgMTk0LCAxMywgNDEsIAotICAgIDUsIDIxMCwgNjksIDEzLCA0MSwgNSwgNjgsIDEzLCA0MSwgNSwgMjA2LCAxNjQsIDEzLCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAKLSAgICA0MSwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgNSwgMjAzLCAxMjQsIDEzLCA0MSwgNSwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDYsIAotICAgIDYzLCAxMywgNDEsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDYsIDI0NSwgCi0gICAgNTEsIDEzLCA0MSwgMjYsIDYsIDc0LCAxMywgNDEsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDQxLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDYsIDc1LCAxMywgNDEsIDI2LCA2LCAyMzAsIDE4NCwgMTMsIAotICAgIDQxLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNiwgMTU5LCAxMywgNDEsIDI2LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDYsIDc4LCAxMywgNDEsIDI2LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAyNiwgCi0gICAgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDYsIDE0NiwgMTMsIDQxLCAyNiwgNiwgMTk0LCAxMywgNDEsIDI2LCA2LCAyMTAsIAotICAgIDY5LCAxMywgNDEsIDI2LCA2LCA2OCwgMTMsIDQxLCAyNiwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgMjYsIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMjYsIDYsIDIwMiwgCi0gICAgMTU5LCAxMywgNDEsIDI2LCA1LCA2MywgMTMsIDQxLCAyNiwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDUsIDI0NywgMTI1LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCA1LCA3NCwgMTMsIDQxLCAyNiwgNSwgMjQwLCAxNzQsIDEzLCAKLSAgICA0MSwgMjYsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDUsIDIzNywgMTcxLCAxMywgNDEsIDI2LCA1LCA3NSwgMTMsIDQxLCAKLSAgICAyNiwgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDUsIDE1OSwgMTMsIDQxLCAyNiwgCi0gICAgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDUsIDIyMywgMTYzLCAxMywgNDEsIDI2LCA1LCA3OCwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDUsIDIxNywgMTM0LCAxMywgNDEsIDI2LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDUsIAotICAgIDE5NCwgMTMsIDQxLCAyNiwgNSwgMjEwLCA2OSwgMTMsIDQxLCAyNiwgNSwgNjgsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMTY0LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDUsIDIwMywgCi0gICAgMTI0LCAxMywgNDEsIDI2LCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNiwgNjMsIDEzLCA0MSwgMzcsIDYsIDI0OSwgMjU1LCAKLSAgICAxMywgNDEsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAzNywgNiwgNzQsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAotICAgIDQxLCAzNywgNiwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMzAsIDU0LCAxMywgNDEsIAotICAgIDM3LCA2LCAxNTksIDEzLCA0MSwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAzNywgCi0gICAgNiwgNzgsIDEzLCA0MSwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAzNywgNiwgCi0gICAgMTQ2LCAxMywgNDEsIDM3LCA2LCAxOTQsIDEzLCA0MSwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMzcsIDYsIDY4LCAxMywgCi0gICAgNDEsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMzcsIDYsIDIwMywgMTk2LCAKLSAgICAxMywgNDEsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMzcsIDUsIDYzLCAxMywgCi0gICAgNDEsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMzcsIDUsIDI0NSwgNTEsIDEzLCAKLSAgICA0MSwgMzcsIDUsIDc0LCAxMywgNDEsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAzNywgNSwgMjM5LCA3NSwgMTMsIDQxLCAKLSAgICAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMzcsIDUsIDc1LCAxMywgNDEsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAzNywgCi0gICAgNSwgMjMwLCA1NCwgMTMsIDQxLCAzNywgNSwgMTU5LCAxMywgNDEsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDQxLCAzNywgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCA0MSwgMzcsIDUsIDc4LCAxMywgNDEsIDM3LCA1LCAyMTksIDE4NCwgMTMsIDQxLCAzNywgNSwgMjE3LCAKLSAgICAxMzQsIDEzLCA0MSwgMzcsIDUsIDE0NiwgMTMsIDQxLCAzNywgNSwgMTk0LCAxMywgNDEsIDM3LCA1LCAyMTAsIDY5LCAxMywgCi0gICAgNDEsIDM3LCA1LCA2OCwgMTMsIDQxLCAzNywgNSwgMjA2LCAxNjQsIDEzLCA0MSwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIAotICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAzNywgNSwgMjAzLCAxMjQsIDEzLCA0MSwgMzcsIDUsIDIwMiwgMTU5LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NywgCi0gICAgMTI1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDYsIDc0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjM3LCAxNzEsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAKLSAgICA1NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAxOTQsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCAyMTAsIDY5LCAxMywgNDEsIDI2LCAzNywgNiwgNjgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIAotICAgIDE2NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgNjMsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NywgMTI1LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc0LCAxMywgNDEsIDI2LCAzNywgNSwgMjQwLCAxNzQsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDM3LCA1LCA3NSwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjE3LCAxMzQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTAsIAotICAgIDY5LCAxMywgNDEsIDI2LCAzNywgNSwgNjgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDEyNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgNjMsIDEzLCAyMjQsIDQxLCA2LCAyNDksIAotICAgIDI1NSwgMTMsIDIyNCwgNDEsIDYsIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNiwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDc0LCAxMywgMjI0LCA0MSwgNiwgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA2LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCA2LCA3NSwgMTMsIDIyNCwgNDEsIDYsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDYsIDE1OSwgMTMsIDIyNCwgNDEsIDYsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA2LCA3OCwgMTMsIDIyNCwgNDEsIDYsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA2LCAxNDYsIDEzLCAyMjQsIDQxLCA2LCAxOTQsIDEzLCAyMjQsIDQxLCA2LCAyMTAsIAotICAgIDY5LCAxMywgMjI0LCA0MSwgNiwgNjgsIDEzLCAyMjQsIDQxLCA2LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDYsIDIwNCwgCi0gICAgMTQ0LCAxMywgMjI0LCA0MSwgNiwgMjAzLCAxOTYsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNSwgNjMsIDEzLCAyMjQsIDQxLCA1LCAyNDksIDI1NSwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNSwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDUsIDc0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA1LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNSwgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCAKLSAgICA1LCA3NSwgMTMsIDIyNCwgNDEsIDUsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDE1OSwgMTMsIDIyNCwgNDEsIDUsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNSwgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICA3OCwgMTMsIDIyNCwgNDEsIDUsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAxNDYsIDEzLCAyMjQsIDQxLCA1LCAxOTQsIDEzLCAyMjQsIDQxLCA1LCAyMTAsIDY5LCAxMywgMjI0LCA0MSwgNSwgNjgsIAotICAgIDEzLCAyMjQsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDUsIDIwNCwgMTQ0LCAxMywgMjI0LCA0MSwgNSwgMjAzLCAKLSAgICAxOTYsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDUsIDI0MywgCi0gICAgODQsIDc1LCAxMywgMzcsIDUsIDI0MywgODQsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDI1MSwgMiwgMTMsIDI2LCA2LCAyNDgsIAotICAgIDEwNiwgMTMsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDI2LCA2LCAyNDQsIDM3LCAxMywgMjYsIDYsIDI0MSwgMzcsIDEzLCAyNiwgCi0gICAgNiwgMjAyLCA4MywgMTMsIDI2LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCA2LCAyMDksIDc0LCAxMywgMjYsIDYsIDIzMCwgMjMwLCAKLSAgICAxMywgMjYsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDYsIDIyOCwgMjQsIDEzLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCAyNiwgNiwgCi0gICAgMjIxLCA4NCwgMTMsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDI2LCA2LCAyMjAsIDM0LCAxMywgMjYsIDYsIDIxOCwgMTY3LCAKLSAgICAxMywgMjYsIDYsIDIxNiwgNTksIDEzLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAyNiwgNiwgMjEyLCAxNDQsIDEzLCAyNiwgCi0gICAgNiwgMjA5LCAyMDcsIDEzLCAyNiwgNiwgMjA2LCAyMTYsIDEzLCAyNiwgNiwgMjE4LCAxOTIsIDEzLCAyNiwgNiwgMjQ2LCAKLSAgICAxNDIsIDEzLCAyNiwgNiwgMjE3LCAyMDIsIDEzLCAyNiwgNiwgMjIwLCAzNiwgMTMsIDI2LCAyMjMsIDEwMSwgMTMsIDI2LCAKLSAgICA1LCAyNTEsIDIsIDEzLCAyNiwgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCAyNiwgNSwgMjQ0LCAzNywgCi0gICAgMTMsIDI2LCA1LCAyNDEsIDM3LCAxMywgMjYsIDUsIDIwMiwgODMsIDEzLCAyNiwgNSwgMjQwLCAyNDgsIDEzLCAyNiwgNSwgCi0gICAgMjA5LCA3NCwgMTMsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDI2LCA1LCAyMjksIDI0NywgMTMsIDI2LCA1LCAyMjgsIDI0LCAKLSAgICAxMywgMjYsIDUsIDIyMywgMjQ2LCAxMywgMjYsIDUsIDIyMSwgODQsIDEzLCAyNiwgNSwgMjAzLCAxNzAsIDEzLCAyNiwgNSwgCi0gICAgMjIwLCAzNCwgMTMsIDI2LCA1LCAyMTgsIDE2NywgMTMsIDI2LCA1LCAyMTYsIDU5LCAxMywgMjYsIDUsIDQ2LCAyMTIsIAotICAgIDE0NCwgMTMsIDI2LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCA1LCAyMDksIDIwNywgMTMsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIAotICAgIDI2LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDI2LCA1LCAKLSAgICAyMjAsIDM2LCAxMywgMjYsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDI0MSwgMzgsIDk3LCAxMywgMjYsIDIwOSwgNzUsIAotICAgIDk3LCAxMywgMjYsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAyMTgsIDE5MywgOTcsIDEzLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCAKLSAgICAyNiwgMjE4LCAxNjgsIDk3LCAxMywgMzcsIDYsIDI1MSwgMiwgMTMsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDM3LCA2LCAyMzgsIAotICAgIDIzNSwgMTMsIDM3LCA2LCAyNDQsIDM3LCAxMywgMzcsIDYsIDI0MSwgMzcsIDEzLCAzNywgNiwgMjAyLCA4MywgMTMsIDM3LCAKLSAgICA2LCAyNDAsIDI0OCwgMTMsIDM3LCA2LCAyMDksIDc0LCAxMywgMzcsIDYsIDIzMCwgMjMwLCAxMywgMzcsIDYsIDIyOSwgCi0gICAgMjQ3LCAxMywgMzcsIDYsIDIyOCwgMjQsIDEzLCAzNywgNiwgMjIzLCAyNDYsIDEzLCAzNywgNiwgMjIxLCA4NCwgMTMsIDM3LCAKLSAgICA2LCAyMDMsIDE3MCwgMTMsIDM3LCA2LCAyMjAsIDM0LCAxMywgMzcsIDYsIDIxOCwgMTY3LCAxMywgMzcsIDYsIDIxNiwgNTksIAotICAgIDEzLCAzNywgNiwgMjA5LCA3NSwgOTcsIDEzLCAzNywgNiwgMjEyLCAxNDQsIDEzLCAzNywgNiwgMjA5LCAyMDcsIDEzLCAzNywgCi0gICAgNiwgMjA2LCAyMTYsIDEzLCAzNywgNiwgMjE4LCAxOTIsIDEzLCAzNywgNiwgMjQ2LCAxNDIsIDEzLCAzNywgNiwgMjE3LCAKLSAgICAyMDIsIDEzLCAzNywgNiwgMjIwLCAzNiwgMTMsIDM3LCAyMjMsIDEwMSwgMTMsIDM3LCA1LCAyNTEsIDIsIDEzLCAzNywgNSwgCi0gICAgMjQ4LCAxMDYsIDEzLCAzNywgNSwgMjM4LCAyMzUsIDEzLCAzNywgNSwgMjQ0LCAzNywgMTMsIDM3LCA1LCAyNDEsIDM3LCAKLSAgICAxMywgMzcsIDUsIDIwMiwgODMsIDEzLCAzNywgNSwgMjQwLCAyNDgsIDEzLCAzNywgNSwgMjA5LCA3NCwgMTMsIDM3LCA1LCAKLSAgICAyMzAsIDIzMCwgMTMsIDM3LCA1LCAyMjksIDI0NywgMTMsIDM3LCA1LCAyMjgsIDI0LCAxMywgMzcsIDUsIDIyMywgMjQ2LCAKLSAgICAxMywgMzcsIDUsIDIyMSwgODQsIDEzLCAzNywgNSwgMjAzLCAxNzAsIDEzLCAzNywgNSwgMjIwLCAzNCwgMTMsIDM3LCA1LCAKLSAgICAyMTgsIDE2NywgMTMsIDM3LCA1LCAyMTYsIDU5LCAxMywgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDM3LCA1LCAyMTIsIAotICAgIDE0NCwgMTMsIDM3LCA1LCAyMDksIDIwNywgMTMsIDM3LCA1LCAyMDYsIDIxNiwgMTMsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIAotICAgIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDM3LCA1LCAyMjAsIDM2LCAxMywgMzcsIDIxOSwgCi0gICAgNjksIDI0MywgMjA1LCAxMywgMzcsIDI0MSwgMzgsIDk3LCAxMywgMzcsIDIwOSwgNzUsIDk3LCAxMywgMzcsIDIyOSwgMjQ4LCAKLSAgICA5NywgMTMsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCAzNywgMjE2LCA2MCwgOTcsIDEzLCAzNywgMjE4LCAxNjgsIDk3LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNTEsIDIsIDEzLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA2LCAyMzgsIDIzNSwgMTMsIAotICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDI2LCAzNywgNiwgMjAyLCA4MywgMTMsIAotICAgIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMjMwLCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDI2LCAzNywgNiwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNiwgMjIzLCAyNDYsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA2LCAyMjAsIDM0LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NSwgOTcsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNiwgMjA2LCAKLSAgICAyMTYsIDEzLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNiwgCi0gICAgMjE3LCAyMDIsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNTEsIDIsIDEzLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjQ0LCAzNywgMTMsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDI2LCAzNywgNSwgCi0gICAgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDUsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMjksIDI0NywgMTMsIDI2LCAzNywgNSwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIyMSwgODQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMTgsIDE2NywgMTMsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMjYsIAotICAgIDM3LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCAyNiwgMzcsIDUsIDIwNiwgMjE2LCAxMywgCi0gICAgMjYsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIDEzLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAKLSAgICAxMywgMjYsIDM3LCA1LCAyMjAsIDM2LCAxMywgMjYsIDM3LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDI2LCAzNywgMjQxLCAKLSAgICAzOCwgOTcsIDEzLCAyNiwgMzcsIDIwOSwgNzUsIDk3LCAxMywgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCAyNiwgMzcsIAotICAgIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAzNywgMjE2LCA2MCwgOTcsIDEzLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjUxLCAyLCAxMywgNDEsIDI2LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDYsIDIwMiwgODMsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIDYsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDYsIDIyMywgMjQ2LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjEsIDg0LCAxMywgNDEsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNiwgMjIwLCAzNCwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzUsIDk3LCAxMywgCi0gICAgNDEsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDYsIDIwNiwgMjE2LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDYsIDIxNywgCi0gICAgMjAyLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMjMsIDEwMSwgMTMsIDQxLCAyNiwgNSwgMjUxLCAyLCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDUsIDI0NCwgMzcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDUsIDI0MCwgMjQ4LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDksIDc0LCAxMywgNDEsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgNSwgMjI5LCAyNDcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCA1LCAyMjEsIDg0LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgNSwgMjE4LCAxNjcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjEyLCAKLSAgICAxNDQsIDEzLCA0MSwgMjYsIDUsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDUsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgCi0gICAgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCA0MSwgMjYsIDI0MSwgMzgsIDk3LCAxMywgCi0gICAgNDEsIDI2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE5MywgOTcsIAotICAgIDEzLCA0MSwgMjYsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCA2LCAKLSAgICAyNTEsIDIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDIsIAotICAgIDgzLCAxMywgNDEsIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCAKLSAgICAzNywgNiwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOCwgMjQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIDIxNiwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAyMjMsIDEwMSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDUsIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNSwgCi0gICAgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwOSwgCi0gICAgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAKLSAgICAzNywgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNSwgMjIxLCA4NCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIxOCwgMTY3LCAxMywgNDEsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMzcsIDI0MSwgMzgsIDk3LCAxMywgNDEsIDI2LCAzNywgMjA5LCA3NSwgCi0gICAgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDI2LCA2LCAyNDMsIDE5OSwgCi0gICAgMTMsIDI2LCA1LCAyNDMsIDE5OSwgMTMsIDI2LCAxNywgMjAyLCA4NCwgMTMsIDI2LCAxNywgMTA1LCAxMywgMjYsIDE3LCAKLSAgICAxMDgsIDEzLCAyNiwgMTcsIDE0NywgMTMsIDI2LCAxNywgMTQ5LCAxMywgMjYsIDE3LCAxNzAsIDEzLCAyNiwgMTcsIDE5NSwgCi0gICAgMTMsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCAyNiwgMTcsIDE5OSwgMTMsIDI2LCAxNywgMjIyLCA2MywgMTMsIDE2OSwgMTcsIAotICAgIDIwMiwgODQsIDEzLCAxNjksIDE3LCAxMDUsIDEzLCAxNjksIDE3LCAxMDgsIDEzLCAxNjksIDE3LCAxNDcsIDEzLCAxNjksIAotICAgIDE3LCAxNDksIDEzLCAxNjksIDE3LCAxNzAsIDEzLCAxNjksIDE3LCAxOTUsIDEzLCAxNjksIDE3LCAyMTMsIDExMSwgMTMsIAotICAgIDE2OSwgMTcsIDE5OSwgMTMsIDE2OSwgMTcsIDIyMiwgNjMsIDEzLCA0MSwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMTcsIDEwNSwgCi0gICAgMTMsIDQxLCAxNywgMTA4LCAxMywgNDEsIDE3LCAxNDcsIDEzLCA0MSwgMTcsIDE0OSwgMTMsIDQxLCAxNywgMTcwLCAxMywgCi0gICAgNDEsIDE3LCAxOTUsIDEzLCA0MSwgMTcsIDIxMywgMTExLCAxMywgNDEsIDE3LCAxOTksIDEzLCA0MSwgMTcsIDIyMiwgNjMsIAotICAgIDEzLCA0MSwgMjYsIDE3LCAyMDIsIDg0LCAxMywgNDEsIDI2LCAxNywgMTA1LCAxMywgNDEsIDI2LCAxNywgMTA4LCAxMywgCi0gICAgNDEsIDI2LCAxNywgMTQ3LCAxMywgNDEsIDI2LCAxNywgMTQ5LCAxMywgNDEsIDI2LCAxNywgMTcwLCAxMywgNDEsIDI2LCAKLSAgICAxNywgMTk1LCAxMywgNDEsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMjYsIDE3LCAxOTksIDEzLCA0MSwgMjYsIDE3LCAKLSAgICAyMjIsIDYzLCAxMywgMjI0LCA0MSwgMTcsIDIwMiwgODQsIDEzLCAyMjQsIDQxLCAxNywgMTA1LCAxMywgMjI0LCA0MSwgMTcsIAotICAgIDEwOCwgMTMsIDIyNCwgNDEsIDE3LCAxNDcsIDEzLCAyMjQsIDQxLCAxNywgMTQ5LCAxMywgMjI0LCA0MSwgMTcsIDE3MCwgCi0gICAgMTMsIDIyNCwgNDEsIDE3LCAxOTUsIDEzLCAyMjQsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCAyMjQsIDQxLCAxNywgMTk5LCAKLSAgICAxMywgMjI0LCA0MSwgMTcsIDIyMiwgNjMsIDIxLCAxMjgsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMCwgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTE2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDUsIDIzMSwgMzUsIDIxLCAyMzcsIDEwOSwgMjMxLCAzNSwgMjEsIDIzNywgCi0gICAgMTIyLCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAKLSAgICAxMjgsIDEyMiwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMjI3LCAKLSAgICAwLCAyMSwgMjM3LCAxMjAsIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMCwgCi0gICAgMTIyLCAyMjQsIDE0OCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE2LCAxODgsIAotICAgIDIyOSwgMjgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzUsIAotICAgIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzYsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwNywgMjEsIAotICAgIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEwMSwgCi0gICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgCi0gICAgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyNDUsIAotICAgIDEyNywgMjEsIDEyOCwgMTAxLCAyNDgsIDExOCwgMTE1LCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE4LCAxMTUsIAotICAgIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjA5LCAyMSwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjA5LCAyMSwgCi0gICAgMjEsIDEyOCwgMTIyLCAxMDEsIDIxMSwgNTMsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDgsIDExOCwgCi0gICAgMTQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgCi0gICAgMjM2LCAyMTEsIDE4NiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDIzNiwgCi0gICAgMjM2LCAxMDEsIDExMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDExMiwgMjExLCAxODYsIDE0OCwgMjM5LCAKLSAgICAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NiwgNjAsIAotICAgIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMTE0LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyMzYsIDIzNSwgMjEsIAotICAgIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAxMDEsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgCi0gICAgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDEyOCwgMTAxLCAxNDgsIDIzNiwgMTE1LCAKLSAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgCi0gICAgMTAxLCAyNDUsIDIwOCwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEyOCwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMjQ1LCAyMDgsIDI0NSwgOTgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNDUsIDk4LCAxMjIsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA5OCwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDQzLCAKLSAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyNTAsIDIxNiwgMjE5LCAyMTIsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNTAsIDIxNiwgMjMxLCA1MCwgCi0gICAgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDQzLCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMTQ4LCAyNDUsIDIwOCwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMSwgMjEsIAotICAgIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTUsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgCi0gICAgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgMjQ1LCAxMjcsIDIxLCAxMjgsIAotICAgIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDIzNiwgMTE1LCAxMDEsIDIzNiwgCi0gICAgMjM1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1MywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjM2LCAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAKLSAgICAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA4LCAyMTEsIAotICAgIDE5MywgMjEsIDIzNywgMTE4LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMzksIDE0NywgMjM5LCAKLSAgICAyNTQsIDI0NSwgMjA4LCAyNDgsIDExNywgMjEsIDIzNywgMTA5LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgCi0gICAgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIAotICAgIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM5LCAxNDcsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAKLSAgICAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgCi0gICAgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAKLSAgICAyMTEsIDE4NSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIAotICAgIDEwOSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjIwLCA4LCAyMSwgMjM3LCAxMDUsIDIzOSwgMjMzLCAyMzksIAotICAgIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzUsIDIxLCAKLSAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIAotICAgIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAKLSAgICAxMTAsIDIxLCAyMzcsIDExMSwgMjQ4LCAxMDQsIDIxOSwgMTM1LCAyNDAsIDk0LCAyMSwgMjM3LCAxMTEsIDIzNywgNDUsIAotICAgIDIxLCAyMzcsIDExMSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAxNDgsIDIxMiwgMTU1LCAyMSwgCi0gICAgMjM3LCAxMTEsIDE0OCwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTExLCAyMTEsIAotICAgIDE5NCwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyNDYsIDIxNywgMjEsIDIzNywgMTExLCAKLSAgICAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE4LCAxNDgsIAotICAgIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjI3LCA4NSwgMjEsIDIzNywgMTE3LCAyMSwgCi0gICAgMjM3LCAxMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExOCwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDExOCwgCi0gICAgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTA3LCAyNDUsIDk0LCAyMSwgMjM3LCAxMDYsIDIxLCAyMzcsIDExNiwgMjIwLCA4LCAKLSAgICAyMSwgMjM3LCAxMTUsIDIxLCAyMzcsIDExNiwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTYsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAyMzcsIDExNiwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE2LCAyMjEsIDE5MiwgMjA5LCAKLSAgICAyMSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMzksIDE1MSwgMjEsIAotICAgIDIzNywgMTE0LCAyMjAsIDgsIDIxLCAyMzcsIDExMywgMjEsIDIzNywgMTE5LCAyMSwgMjM3LCAxMDQsIDIxLCAyMzcsIDEwNSwgCi0gICAgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTA1LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA1LCAxNDgsIDIzOSwgCi0gICAgMTUxLCAyMSwgMjM3LCAxMDksIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIAotICAgIDEwOCwgMjEsIDIzNywgMTA5LCAyMTIsIDM2LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCi0gICAgMTA5LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDksIDE3MSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCi0gICAgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMTQ4LCAyMTIsIDE1NiwgMjA4LCAxMjcsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDEwOSwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTIxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMjE1LCAyNTIsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIAotICAgIDI1MiwgMjEsIDIzNywgMTIyLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NSwgMjEsIDEyOCwgCi0gICAgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDUsIDIwNywgMjEsIAotICAgIDIzNywgMTA5LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDIsIDcwLCAyMSwgCi0gICAgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAKLSAgICAyNDUsIDg1LCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxOSwgMjIwLCAyNDYsIDYwLCAyMSwgMTI4LCAyMjcsIDg2LCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMCwgMjI3LCA4NiwgCi0gICAgMjA2LCAyMjQsIDIxLCAyMzcsIDEwNSwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMiwgMjI3LCA4NiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDIyNywgODYsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMjI3LCA4NiwgMjA4LCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCi0gICAgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDIyNywgODYsIAotICAgIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAxMjIsIDE0OCwgMTIyLCAxNDgsIDIxOSwgMjExLCAyMSwgCi0gICAgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDEyMCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMjIsIAotICAgIDIyNywgODYsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAKLSAgICAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDIxNSwgMjUyLCAyMSwgCi0gICAgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAKLSAgICAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgMTMxLCAyMjcsIDg1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjQyLCA3MCwgMjEsIAotICAgIDIzNywgMTA5LCAyMTUsIDI1MywgMTIxLCAxMjIsIDE0OCwgMjM2LCAxMTYsIDIyNCwgMTQ4LCAyMSwgMjM3LCAxMjIsIDIxNSwgCi0gICAgMjUzLCAxMjEsIDEwMSwgMTQ4LCAxMjIsIDI0NSwgMTMwLCAyMSwgMTI4LCAyMTUsIDI1MywgMjA2LCAyMjQsIDIxLCAxMjgsIAotICAgIDIxNSwgMjUzLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgCi0gICAgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwNSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMjE1LCAKLSAgICAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMjQsIDE0OCwgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjQ1LCAKLSAgICAyMDcsIDIxLCAxMjgsIDIxNSwgMjUzLCAxMDEsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgMTI4LCAyMTUsIDI1MywgMjMxLCAKLSAgICAzNSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAyMzcsIDEwNywgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAxMjgsIAotICAgIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCi0gICAgMTE0LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgCi0gICAgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIAotICAgIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjA2LCAyNDcsIDIxLCAyMzcsIDExNiwgMTIyLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NSwgMjEsIDIzNywgMTA5LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIAotICAgIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgCi0gICAgMjQyLCA3MCwgMjEsIDIzNywgMTA5LCAyMjQsIDE0OCwgMjEsIDEyOCwgMTAxLCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAKLSAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAxMDEsIDExMiwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDIzNywgMTA3LCAxMDEsIDIwOSwgMjEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyMjcsIDg1LCAyMSwgCi0gICAgMTI4LCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTAxLCAKLSAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTE0LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgCi0gICAgMjM3LCAxMTYsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgCi0gICAgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgCi0gICAgMjUzLCAyMjcsIDg2LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIAotICAgIDEyMCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NiwgMjQ1LCAyMDcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxMiwgMTU1LCAKLSAgICAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMTksIDIxMSwgMjEsIDIzNywgMTA3LCAKLSAgICAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjMxLCA0OSwgMjEsIDIzNywgMTA3LCAxMDEsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTA5LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDE0OCwgCi0gICAgMjQzLCAyMjcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAyNDUsIDIwNywgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDIxMiwgMTU2LCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMjQ3LCAyNTEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIAotICAgIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzksIDE1MiwgMTIyLCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIAotICAgIDE0OCwgMjM5LCAxNTIsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAxMTMsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyNDUsIDk0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAyMzcsIDExOCwgMTIyLCAxNDgsIAotICAgIDI0NSwgODgsIDE0OCwgMjMxLCA2LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMDYsIDI0NywgMjEsIDEyOCwgCi0gICAgMTIyLCAxNDgsIDI0NiwgNjEsIDIxLCAyMzcsIDExNiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDEyMiwgMTQ4LCAKLSAgICAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjI4LCA3LCAKLSAgICAyMSwgMjM3LCAxMDksIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAzNiwgMjEsIDIzNywgCi0gICAgMTIyLCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAxNDgsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgCi0gICAgMTIyLCAyMDksIDIxLCAyMSwgMTI4LCAyMDksIDIxLCAyMSwgMTI4LCAxNDgsIDIzNywgNDUsIDIxLCAxMjgsIDE0OCwgMjEyLCAKLSAgICAxNTYsIDI0MywgMjI3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgMTQ4LCAyMTIsIDE1NiwgCi0gICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEyMiwgMjI0LCAxNDgsIAotICAgIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEwMSwgMjE1LCAyNTIsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg1LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjAsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMTIwLCAKLSAgICAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTI2LCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgCi0gICAgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMjM5LCAxNDcsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgCi0gICAgMjM3LCAxMTIsIDIxLCAxMjgsIDIzNywgNDUsIDIxLCAyMDgsIDEyOSwgMjEyLCAxMTksIDIxLCAyMDgsIDEyOSwgMjIzLCAKLSAgICAyMjUsIDIxLCAyMDgsIDEyOSwgMjQ4LCAxMDMsIDIxLCAyMzgsIDIsIDIxMiwgMTE5LCAyMSwgMjM4LCAyLCAyMjMsIDIyNSwgCi0gICAgMjEsIDIzOCwgMiwgMjQ4LCAxMDMsIDIxLCAyMTEsIDM3LCAyMTIsIDExOSwgMjEsIDIxMSwgMzcsIDIyMywgMjI1LCAyMSwgCi0gICAgMjExLCAzNywgMjQ4LCAxMDMsIDIxLCAyNDcsIDIwMSwgMjEyLCAxMTksIDIxLCAyNDcsIDIwMSwgMjIzLCAyMjUsIDIxLCAKLSAgICAyNDcsIDIwMSwgMjQ4LCAxMDMsIDIxLCAyMTUsIDE0MywgMjEyLCAxMTksIDIxLCAyMTUsIDE0MywgMjIzLCAyMjUsIDIxLCAKLSAgICAyMTUsIDE0MywgMjQ4LCAxMDMsIDIxLCAyMTAsIDE4OSwgMjEwLCAxMDIsIDIxLCAyMTAsIDE4OSwgMjQ4LCAxMDMsIDIxLCAKLSAgICAyMTEsIDE3MywgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCA1LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCAyMjgsIAotICAgIDgsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDUsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDIxMywgMTI2LCAyMSwgMjM5LCAKLSAgICAyMDgsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgNSwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgMjI4LCA4LCAKLSAgICAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCA1LCAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCAyMTMsIDEyNiwgMjEsIDIxMSwgCi0gICAgMTczLCAyMzksIDIwOCwgMjUwLCAyNTIsIDIxLCAyMjQsIDAsIDExMiwgMTIxLCAyMjgsIDcsIDIxLCAyMjQsIDAsIDExMiwgCi0gICAgMTIxLCAyMTIsIDM2LCAyMSwgMjI0LCAwLCAxMTIsIDIxMywgMTI2LCAyMSwgMjI0LCAwLCAxMjEsIDIxMywgMTI2LCAyMSwgCi0gICAgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDI1MCwgMjUzLCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAwLCAyMTIsIDE1NiwgMjA4LCAxNzMsIDIxMiwgMTU2LCAyMTQsIDE5MCwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAKLSAgICAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgCi0gICAgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA1LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgNTIsIDIxMSwgNTIsIDIxLCAKLSAgICAyMjMsIDI1NSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjUwLCAyNTIsIDIxLCAyMjMsIAotICAgIDI1NSwgNTIsIDI1MCwgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ1LCAxMzAsIDIxLCAyMjMsIAotICAgIDI1NSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDIwMywgMjIxLCAyMzksIDIxMSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MiwgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MywgMjAzLCAKLSAgICAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAKLSAgICAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjEyLCAzNiwgCi0gICAgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCAxNjYsIDIxNSwgMTk2LCAyMSwgMjIzLCAyNTUsIDI0NiwgMTY5LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NiwgMTY5LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIyOCwgNywgMjEsIDIyMywgMjU1LCA5OCwgMjEyLCAKLSAgICAzNiwgMjEsIDIyMywgMjU1LCA5OCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjAyLCAzMCwgCi0gICAgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI1LCA5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIyOCwgNywgMjEsIDIwOCwgOTksIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIwOCwgCi0gICAgOTksIDIxNSwgMTk0LCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCA5OSwgMjE1LCAKLSAgICAxOTUsIDIxMiwgMTE5LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgCi0gICAgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTMsIDcxLCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyMTIsIAotICAgIDExOSwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAyMTEsIDIwMiwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAKLSAgICAyMTEsIDIwMiwgMjA4LCA2OSwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgCi0gICAgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNSwgMjEsIAotICAgIDIyNCwgMiwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIDIsIDIwOCwgCi0gICAgMTIzLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAKLSAgICAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgCi0gICAgMjUwLCAxMiwgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgMjI0LCAyLCAyNDgsIAotICAgIDEwNCwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI1LCA5LCAyMSwgMjI0LCAKLSAgICAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjgsIDUsIAotICAgIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgCi0gICAgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCAKLSAgICA1MywgMjI4LCA1LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgCi0gICAgMjExLCA1MiwgMjEsIDIyNCwgMSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgNTIsIDI1MCwgMjUyLCAKLSAgICAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgMjQ1LCAxMzAsIDIxLCAKLSAgICAyMjQsIDEsIDIwOCwgNzAsIDIxMSwgNTMsIDIyNCwgMywgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgCi0gICAgMjExLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIDI1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIAotICAgIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDgsIDEyMCwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjQsIAotICAgIDEsIDI0NiwgMTY4LCAyMSwgMjI0LCAxLCA5OCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgOTgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgCi0gICAgOTgsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjI1LCA5LCAKLSAgICAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIAotICAgIDIxOSwgMzAsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAKLSAgICAyMTIsIDExOSwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjUwLCAKLSAgICAyNTIsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNDIsIDc4LCAKLSAgICAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNTAsIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NSwgODgsIDIxNywgNTYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI1LCA5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjgsIAotICAgIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAxMzYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAKLSAgICAxMzYsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgCi0gICAgODgsIDIzNywgMTM2LCAyMjgsIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjA5LCAyNywgMjQ2LCA2MiwgMjEyLCAzNiwgCi0gICAgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgCi0gICAgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjI4LCA3LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjI1LCA5LCAyMSwgMjIzLCAKLSAgICAyNTUsIDIyNywgMTUsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCA1LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIAotICAgIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMjUsIAotICAgIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyNDUsIDg4LCAyMDgsIDcwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyNSwgCi0gICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCAyMDgsIDcwLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKLSAgICA4OCwgMjA5LCA4NCwgMjExLCA1MiwgMjEsIDIyMywgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjEyLCAzNiwgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjI1LCA5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjE1LCAxOTQsIAotICAgIDI0MiwgNzgsIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTQsIDIxLCAyMjMsIDI1NSwgMjEzLCA3MSwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDUsIDg4LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIAotICAgIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjEyLCAKLSAgICAxMjAsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCA1MiwgMjM2LCAyMjksIDIzOSwgMTE5LCAKLSAgICAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIAotICAgIDE0OSwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIAotICAgIDE5NCwgNTIsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMTQ5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0MywgMjI4LCAyMTksIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDI0MywgMjI4LCAyMTksIDUyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIyOCwgCi0gICAgNywgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAKLSAgICAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIAotICAgIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgCi0gICAgMjI3LCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDIxMiwgCi0gICAgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAotICAgIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIAotICAgIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAKLSAgICAyMSwgMjE1LCAxOTUsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMTUsIDE5NSwgNTIsIDIzNiwgMjI5LCAKLSAgICAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMjI2LCAyMSwgMjI0LCAxLCAyNDUsIAotICAgIDg4LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgCi0gICAgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAotICAgIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIAotICAgIDIyOSwgMjM5LCAyMDUsIDIwOCwgNzAsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIAotICAgIDIwNSwgMjA4LCA3MCwgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIAotICAgIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjEyLCAxMTksIAotICAgIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgCi0gICAgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIAotICAgIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDcsIDIxLCAyMTUsIAotICAgIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIDIzOSwgMjA0LCAKLSAgICAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAyMDQsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIxMiwgMzYsIAotICAgIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAKLSAgICAyNDUsIDg4LCAyMjgsIDUsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDI0NSwgMjM3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMTIsIDI0LCAyMSwgMjI0LCAKLSAgICAxLCAyMDQsIDc2LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMjgsIDcsIDIxLCAyMTUsIDE5NSwgMjEyLCAxMTksIAotICAgIDIxLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MiwgMjEsIDIyNCwgMSwgMjEzLCA3MiwgMjE5LCAKLSAgICA4MSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgNSwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIAotICAgIDI0NiwgNjIsIDIyNSwgMTAsIDIxMiwgMTE5LCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyNDIsIDc4LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMjUsIDEwLCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgCi0gICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIAotICAgIDIyOSwgMjA0LCAxMDAsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAKLSAgICAxMDAsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIAotICAgIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyMDMsIDIyMSwgMjQ2LCA2MiwgMjM5LCAxMTksIDIxMiwgMTE5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIAotICAgIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIwMywgMjIxLCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgMjQwLCAzLCAyNDYsIDU5LCAyMTIsIDExOSwgMjEsIAotICAgIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ2LCA1OSwgMjM2LCAKLSAgICAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIDIyOSwgMjA0LCAxMDAsIAotICAgIDI0MiwgNzgsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIxMiwgMzYsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIyOCwgNywgMjEsIAotICAgIDI0MiwgNCwgMjQwLCA3NCwgMjEsIDI0MiwgNCwgMjEyLCAzOSwgMjEsIDI0MiwgNCwgMjA5LCAxNDUsIDIxLCAyNDIsIDQsIAotICAgIDIxNiwgMTE1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNSwgMjEsIDI0MiwgNCwgMjEyLCAxMjYsIDI1MCwgMjUyLCAyMSwgMjQyLCAKLSAgICA0LCAyNDAsIDIyMSwgMjE5LCAyMjEsIDIwOCwgMjIxLCAyMSwgMjQyLCA0LCAyMzgsIDEyLCAyMSwgMjM3LCA2NCwgMjEsIAotICAgIDIzNywgNjUsIDIxNiwgMSwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIAotICAgIDIwOCwgMjI0LCAyMSwgMjM3LCA2NSwgMjI0LCAxLCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDI0NSwgODcsIAotICAgIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDI0NSwgODcsIDIxLCAyMzcsIDY1LCAyMjQsIDQsIDI0NiwgNjEsIDIxLCAyNDAsIDEwMywgCi0gICAgMjQzLCAxNjYsIDIxOCwgMzQsIDIyMSwgMTY4LCAyMzksIDE1MiwgMjA4LCAyMjIsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIAotICAgIDIxOCwgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAyNDIsIDcwLCAyMSwgMjQwLCAxMDMsIDI0MywgMTY2LCAyMTgsIAotICAgIDM0LCAyMjEsIDE2OCwgMTEyLCAyMTksIDI0NSwgMTIxLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMDYsIAotICAgIDIyNCwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMjIsIDIxNSwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyNDIsIDcwLCAyMSwgCi0gICAgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgMjE2LCAyNDIsIDcwLCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDEyMSwgMjIyLCAKLSAgICAyMTUsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTEyLCAyMjIsIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAyMjIsIAotICAgIDIxNiwgMjA2LCAyMjQsIDIxLCAyMzksIDE2NCwgMjIyLCAyMTUsIDIxLCAyMzksIDE2NCwgMjQ1LCAxOTcsIDIxLCAyMzksIAotICAgIDE2NCwgMjAzLCAyMjQsIDIxLCAyNDAsIDE4NSwgMjIwLCA4LCAyMSwgMjQwLCAxODUsIDIxMSwgMTcyLCAyMSwgMjQwLCAKLSAgICAxODUsIDI0NiwgMTUsIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgMjEyLCAxMTksIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgCi0gICAgMjIzLCAyMjUsIDIxLCAyNDAsIDE4NSwgMTYyLCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjA0LCAyNywgMjIwLCA4LCAyMSwgCi0gICAgMjQwLCAxODUsIDE2MiwgMjQ2LCAxNSwgMjEsIDI0MCwgMTg1LCAyMDQsIDI1LCAyMjQsIDMsIDIxLCAyNDAsIDE5MiwgMjA0LCAKLSAgICA5LCAyMSwgMjQwLCAxODYsIDIwNiwgMjI0LCAyMSwgMjQwLCAxODYsIDI0MiwgNzAsIDIxLCAyNDAsIDE4NiwgMjM5LCAxOTEsIAotICAgIDIxLCAyNDAsIDE4OCwgMjExLCA1MiwgMjEsIDI0MCwgMTg4LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgMjQwLCAxODgsIDIxMSwgCi0gICAgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODksIDIxMSwgNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MywgMjQyLCA3OCwgMjEsIAotICAgIDI0MCwgMTg5LCAyMTEsIDUzLCAyNTAsIDI1MiwgMjEsIDI0MCwgMTg4LCAyNDUsIDg1LCAyMSwgMjQwLCAxODksIDI0NSwgCi0gICAgODUsIDIxLCAyNDAsIDE4OCwgMjQ2LCA1NiwgMjEsIDI0NiwgMTY0LCAyMTcsIDE4MiwgMjEsIDI0NiwgMTY0LCAyMjIsIAotICAgIDIxNSwgMjEsIDI0NiwgMTY0LCAyMTAsIDIzNCwgMjEsIDIwOSwgMTQ2LCAyNDYsIDE2NCwgMjM2LCAyNDQsIDIxLCAyMDksIAotICAgIDE0NiwgMjQ2LCAxNjQsIDIyNCwgMTQ4LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMjcsIDAsIDIxLCAyNDEsIDE4MSwgCi0gICAgMjEsIDIyMSwgMTY4LCAyMjIsIDIxNSwgMjEsIDIyMSwgMTY4LCAyNDUsIDE5NywgMjEsIDIyMSwgMTY4LCAyMDMsIDIyMiwgCi0gICAgMjEsIDIyMSwgMTY4LCAyMDQsIDIyLCAyMSwgMjUxLCA1NSwgMjQ4LCAyNywgMjE5LCAyMTEsIDIxLCAyNTEsIDU1LCAyMTAsIAotICAgIDIzMywgMjMxLCA0OSwgMjEsIDI1MSwgNTUsIDI0OCwgMjksIDUsIDIxNSwgMTkzLCAyMSwgMjUxLCA1NSwgMjEwLCAyMzUsIAotICAgIDUsIDIxNSwgMTkzLCAyMSwgMjQ3LCAyMTYsIDIzMSwgMjIsIDIxLCAyNDcsIDIxNiwgMjQwLCAyMTAsIDIxLCAyMjQsIDgsIAotICAgIDI0NiwgMTYsIDIyMiwgMjE1LCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjQ2LCAxNiwgCi0gICAgMjQ1LCAxOTcsIDIxLCAyMjQsIDgsIDIxMiwgMzEsIDIxLCAyMjQsIDgsIDIxMiwgMzIsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAKLSAgICAyMTIsIDMyLCAyMjAsIDgsIDIxLCAyMjQsIDgsIDIzOSwgMTE1LCAyMSwgMjI0LCA4LCAyMzksIDExNiwgMjAzLCAyMjQsIAotICAgIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMjAsIDgsIDIxLCAyMjQsIDgsIDE3MSwgMjQ2LCA2MSwgMjEsIDIyNCwgOCwgMTcxLCAKLSAgICAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMTcxLCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNCwgMjEsIDIyNCwgCi0gICAgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgMjE5LCAyMDUsIDIwMywgNTksIDIxLCAyMjQsIAotICAgIDgsIDE3MSwgMjE2LCAxNDMsIDIxLCAyMjQsIDgsIDE3MSwgMjE2LCAxNDQsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIAotICAgIDIxNiwgMTQ0LCAyMDMsIDU5LCAyMSwgMjI0LCA4LCAyMjksIDY2LCAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMzksIDE1MSwgCi0gICAgMjEsIDIyNCwgOCwgMjI5LCA2NywgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDIwOSwgMTQ1LCAyMSwgMjI0LCA4LCAyMDksIAotICAgIDE0NiwgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDIwOSwgMTQ2LCAyMTAsIDIzNCwgMjEsIDIyNywgOTksIDIxNywgMjM5LCAKLSAgICAyMDgsIDE2OSwgMjEsIDIyNywgMTAxLCAyMjYsIDI1MSwgMTE1LCAyMDYsIDIyMCwgMjEsIDIyNywgMTAxLCAyMDYsIDIyMSwgCi0gICAgMTE1LCAyMjYsIDI1MCwgMjEsIDIyNCwgOCwgMjQ1LCAxNjQsIDIxLCAyMjQsIDgsIDIwMywgMjIzLCAyMTIsIDExOSwgMjEsIAotICAgIDIyNCwgOCwgMjAzLCAyMjMsIDI0MiwgNzgsIDIxLCAyMDgsIDE1MSwgMjExLCA3MiwgMjE5LCAyMTIsIDI0MCwgNzYsIDIxLCAKLSAgICAyMDgsIDE1MSwgMjI3LCAxNDQsIDIyNywgOTgsIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDI0OCwgMTA0LCAyMjcsIDk4LCAKLSAgICAyMSwgMjA4LCAxNTEsIDIwOCwgMjExLCAyMDgsIDEyNywgMjMxLCA3LCAyMjQsIDcsIDIxLCAyMDgsIDE1MSwgMjMxLCA3LCAKLSAgICAyMjQsIDgsIDIxNiwgMTE1LCAyMSwgMjA4LCAxNTEsIDIyMywgMjU0LCAyNTEsIDc5LCAyNDYsIDE2NSwgMjEsIDIwOCwgCi0gICAgMTUxLCAyNDYsIDIxOCwgMjExLCA3MiwgMjE5LCAyMTEsIDIxLCAyMDgsIDE1MSwgMjQ2LCAyMTgsIDIzMSwgNywgMjI0LCA3LCAKLSAgICAyMSwgMjA5LCAxNzIsIDIxLCAyMDksIDE3MywgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUwLCAyMSwgCi0gICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUxLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjI3LCA5OCwgMjEsIAotICAgIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk5LCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjQ4LCA1MCwgMjI3LCA5OCwgMjEsIAotICAgIDIyMywgMjU1LCAyMzAsIDE2NSwgMjEsIDIyNCwgMSwgMjMwLCAxNjUsIDIxLCAyMjIsIDIzNywgMjEsIDIzNywgMTQ1LCAyMSwgCi0gICAgMjQwLCAyMTMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxMSwgMjAzLCAyMSwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMTgsIAotICAgIDMzLCAyMSwgMjA0LCA5OCwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMjQsIDYsIDIxLCAyMzksIDIwMywgMjEyLCAyMTEsIDIzNiwgCi0gICAgMjM0LCAyMjQsIDYsIDIxLCAyMTIsIDIxMSwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMDQsIDEwNCwgMjEsIDIwOCwgMTM0LCAKLSAgICAyMTEsIDUzLCAyMTEsIDQxLCAyMSwgMjA4LCAxMzQsIDI0NSwgODYsIDI0OCwgMTIwLCAyMSwgMjA4LCAxMzUsIDIwNywgCi0gICAgMTM3LCAyMSwgMjA2LCAyMjEsIDI0OCwgMTgsIDIwOCwgMjIzLCAyMzksIDEyMCwgMjM2LCAyMzQsIDIzMCwgOTUsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjQ1LCAyMzgsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTUsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTQsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjI3LCAxOTMsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTIsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTEsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjI3LCAxOTAsIDIxLCAyMjcsIDEyNiwgMjI3LCAxODksIDIxLCAyNDAsIDIsIDIxLCAyMjcsIDQ1LCAyMTEsIAotICAgIDIyOCwgMjEsIDIyNywgNDYsIDIxMSwgMjI4LCAyMSwgMjI3LCA0NywgMjM3LCA0MSwgMjEsIDIyNywgNDcsIDIwNCwgMjMsIAotICAgIDIxLCAyMjcsIDQ3LCAyNDQsIDI0LCAyMSwgMjI3LCA0NywgMjM3LCA2NSwgMjIyLCAyMzcsIDIxLCAyMjcsIDQ3LCAyMDgsIAotICAgIDEzNiwgMjEsIDIyNywgNDcsIDIyNywgMTI1LCAyNDMsIDE5OCwgMjEsIDI0NSwgMjMzLCAyMSwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDIxLCAyMTMsIDE0MywgMjEsIDI0NSwgMjQyLCAyMSwgMjE5LCA3NiwgMjEsIDI0MCwgMTAsIDIyNCwgNjYsIDIxLCAKLSAgICAyNDAsIDEwLCAyMjQsIDY1LCAyMSwgMjQwLCAxMCwgMjI0LCA2NCwgMjEsIDI0MCwgMTAsIDIyNCwgNjMsIDIxLCAyNDAsIAotICAgIDEwLCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjYsIDIxLCAyMTUsIDE5NywgMjI0LCA2NSwgMjEsIDIxNSwgMTk3LCAKLSAgICAyMjQsIDY0LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjMsIDIxLCAyMTUsIDE5NywgMjI0LCA2MiwgMjEsIDIxNSwgMTk3LCAyMjQsIAotICAgIDYxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjAsIDIxLCAyMTUsIDE5NywgMjI0LCA1OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDczLCAKLSAgICAyMSwgMjE1LCAxOTcsIDIyNCwgNzIsIDIxLCAyMTUsIDE5NywgMjI0LCA3MSwgMjEsIDIxNSwgMTk3LCAyMjQsIDcwLCAyMSwgCi0gICAgMjE1LCAxOTcsIDIyNCwgNjksIDIxLCAyMTUsIDE5NywgMjI0LCA2OCwgMjEsIDIxNSwgMTk3LCAyMjQsIDY3LCA3MywgNzIsIAotICAgIDQsIDIyNiwgMTg0LCAyMjksIDEwMCwgNzMsIDcyLCA0LCAyMjYsIDE4MCwgMTczLCA3MywgNzIsIDQsIDIyNiwgMTc4LCAKLSAgICAyMjgsIDIwOSwgNzMsIDcyLCA0LCAyMjYsIDU0LCAyMjksIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDI0LCAyMjksIDIwMSwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDQzLCAyMjksIDYsIDczLCA3MiwgNCwgMjI2LCA3MSwgMjI5LCAyNiwgNzMsIDcyLCA0LCAyMjUsIDE5NiwgCi0gICAgMjI4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxNzUsIDIwNCwgMzAsIDczLCA3MiwgNCwgMjI2LCAxNzMsIDIwNCwgMTExLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTcxLCAyMDMsIDIxNywgNzMsIDcyLCA0LCAyMjUsIDI0OSwgMjA0LCA1NSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDEsIDIwNCwgNjIsIDczLCA3MiwgNCwgMjI2LCA1LCAyMDMsIDI0NCwgNzMsIDcyLCA0LCAyMjYsIDc0LCAyMDQsIDAsIAotICAgIDczLCA3MiwgNCwgMjI1LCAxODEsIDIwMywgMjEzLCA3MywgNzIsIDQsIDIyNSwgMjMyLCAyMDQsIDUzLCA3MywgNzIsIDQsIAotICAgIDIyNiwgNTgsIDIwMywgMjAxLCA3MywgNzIsIDQsIDIyNiwgNzAsIDIwMywgMjAzLCA3MywgNzIsIDQsIDIyNSwgMjM2LCAKLSAgICAyMDMsIDIwMiwgNzMsIDcyLCA0LCAyMjYsIDE2OSwgMjI0LCAxMTAsIDczLCA3MiwgNCwgMjI2LCAxNjcsIDIyNSwgMTIyLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTY1LCAyMjMsIDIxOSwgNzMsIDcyLCA0LCAyMjYsIDYwLCAyMjQsIDI0MCwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDI1LCAyMjQsIDU0LCA3MywgNzIsIDQsIDIyNSwgMjIxLCAyMjMsIDI0MywgNzMsIDcyLCA0LCAyMjUsIDE4NiwgCi0gICAgMjIzLCAyMzcsIDczLCA3MiwgNCwgMjI2LCAxNjMsIDI0OCwgODYsIDczLCA3MiwgNCwgMjI2LCAxNjAsIDI0OSwgMzIsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxNTgsIDI0NywgMTkzLCA3MywgNzIsIDQsIDIyNSwgMjI1LCAyNDgsIDE1MCwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDIyLCAyNDgsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDE2LCAyNDgsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjM3LCAyNDgsIDIzLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTQ4LCA3NSwgNzMsIDcyLCA0LCAyMjYsIDE0NiwgNjMsIDczLCA3MiwgNCwgMjI2LCAxNDQsIAotICAgIDY4LCA3MywgNzIsIDQsIDIyNSwgMjEyLCAyNDEsIDE2MSwgNzMsIDcyLCA0LCAyMjYsIDE5LCA3NCwgNzMsIDcyLCA0LCAKLSAgICAyMjUsIDIxMCwgMjIwLCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyOCwgNzgsIDczLCA3MiwgNCwgMjI1LCAyMzgsIDI0MSwgCi0gICAgMTQ1LCA3MywgNzIsIDQsIDIyNSwgMjQ0LCAyMzEsIDQ5LCA3MywgNzIsIDQsIDIyNSwgMjQwLCAyMzEsIDQ5LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMTgwLCAyNTAsIDIzMSwgNzMsIDcyLCA0LCAyMjUsIDE5NywgMjQxLCA5MiwgNzMsIDcyLCA0LCAyMjYsIDEzMywgCi0gICAgMjEyLCAxNjIsIDczLCA3MiwgNCwgMjI2LCAxMzEsIDIxNSwgMzYsIDczLCA3MiwgNCwgMjI2LCAxMjksIDIxMSwgMTAsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTMsIDIxNCwgMTY1LCA3MywgNzIsIDQsIDIyNiwgMywgMjE0LCAxNzcsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMzksIDIxMSwgMjUwLCA3MywgNzIsIDQsIDIyNiwgNDAsIDIxMiwgMTMsIDczLCA3MiwgNCwgMjI1LCAxNzksIDIxMiwgCi0gICAgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTE5LCAyMjcsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDExNywgMjI4LCAxMTMsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxMTUsIDIyNiwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMzUsIDIyNywgMjI2LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNDYsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgNjUsIDIyNywgMTgsIDczLCA3MiwgNCwgMjI1LCAyMjIsIDIyNywgNDksIAotICAgIDczLCA3MiwgNCwgMjI2LCA5LCAxNjMsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgMTQxLCAyNDMsIDIzMywgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDEzOCwgMjQ0LCAyMTIsIDczLCA3MiwgNCwgMjI2LCAxMzUsIDI0MiwgNDIsIDczLCA3MiwgNCwgMjI2LCAzMCwgCi0gICAgMjQ0LCA2MSwgNzMsIDcyLCA0LCAyMjUsIDE5NSwgMjQzLCA5MCwgNzMsIDcyLCA0LCAyMjUsIDE5NCwgMjQzLCAxMTMsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxMjcsIDIwOSwgMiwgNzMsIDcyLCA0LCAyMjYsIDEyNCwgMjEwLCAyMiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDEyMiwgMjA3LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAyOCwgMjA5LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA2NCwgMjA5LCAKLSAgICAxODcsIDczLCA3MiwgNCwgMjI2LCAxNSwgMjA4LCAxNDgsIDczLCA3MiwgNCwgMjI2LCA1MCwgMTM1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMTEzLCAyMzAsIDE0MSwgNzMsIDcyLCA0LCAyMjYsIDExMCwgMjMwLCAxODEsIDczLCA3MiwgNCwgMjI2LCAxMDgsIAotICAgIDIzMCwgODIsIDczLCA3MiwgNCwgMjI1LCAyMTgsIDIzMCwgMTU5LCA3MywgNzIsIDQsIDIyNiwgNiwgMjMwLCAxNjEsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTUsIDIzMCwgOTEsIDczLCA3MiwgNCwgMjI2LCA1NiwgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMDAsIDE2MywgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI2LCAxMDYsIDIwMywgMTEsIDczLCA3MiwgNCwgMjI2LCAxMDMsIAotICAgIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDEwMSwgMjAyLCAyMTMsIDczLCA3MiwgNCwgMjI2LCAxMCwgMjAzLCA0OSwgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDM5LCAyMDMsIDUyLCA3MywgNzIsIDQsIDIyNSwgMjM0LCAyMDIsIDIzMiwgNzMsIDcyLCA0LCAyMjUsIDI1NCwgCi0gICAgMjAyLCAyNDcsIDczLCA3MiwgNCwgMjI2LCA5NywgMjQwLCAyNiwgNzMsIDcyLCA0LCAyMjYsIDk1LCAyNDAsIDEwOCwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDkzLCAyMzksIDEwOCwgNzMsIDcyLCA0LCAyMjYsIDQxLCAyNDAsIDUzLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNDQsIDI0MCwgNjAsIDczLCA3MiwgNCwgMjI1LCAyNDIsIDIzOSwgMTc1LCA3MywgNzIsIDQsIDIyNiwgMzEsIDIzOSwgMTg2LCAKLSAgICA3MywgNzIsIDQsIDIyNSwgMTc4LCAyMzksIDEwNywgNzMsIDcyLCA0LCAyMjYsIDE4LCAyNDAsIDgxLCA3MywgNzIsIDQsIAotICAgIDIyNiwgOTEsIDIyMiwgNjgsIDczLCA3MiwgNCwgMjI2LCA4OSwgMjIzLCA4MywgNzMsIDcyLCA0LCAyMjYsIDg3LCAyMjEsIAotICAgIDQwLCA3MywgNzIsIDQsIDIyNiwgMiwgMjIyLCAyMzAsIDczLCA3MiwgNCwgMjI1LCAyMDYsIDIyMSwgMTg1LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMTk5LCAyMzcsIDMsIDczLCA3MiwgNCwgMjI2LCA4MiwgMTUyLCA3MywgNzIsIDQsIDIyNSwgMTg5LCAyMzYsIAotICAgIDI2LCA3MywgNzIsIDQsIDIyNiwgODUsIDIzNywgNDgsIDczLCA3MiwgNCwgMjI2LCAyMywgMjM3LCA2NywgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDgwLCAyMzYsIDExNywgNzMsIDcyLCA0LCAyMjUsIDIzNSwgMjM2LCAxMzYsIDczLCA3MiwgNCwgMjI2LCAzNiwgCi0gICAgMjM3LCA0NywgNzMsIDcyLCA0LCAyMjUsIDI0NywgMjM2LCAxMTAsIDczLCA3MiwgNCwgMjI2LCA2NiwgMjM2LCAyMzgsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyNDUsIDIzNywgMTI2LCA3MywgNzIsIDQsIDIyNiwgMzIsIDIzNiwgMTMsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA2NywgMjM3LCAzMywgNzMsIDcyLCA0LCAyMjUsIDE4MiwgMjM2LCAxMjAsIDczLCA3MiwgNCwgMjI2LCA3MywgMjM2LCAyNSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDI5LCAyMjIsIDE2OCwgNzMsIDcyLCA0LCAyMjYsIDc4LCAyMjIsIDE4MiwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDM3LCAyMjIsIDE2NSwgNzMsIDcyLCA0LCAyMjYsIDQsIDIyMiwgMTc2LCA3MywgNzIsIDQsIDIyNSwgMjI5LCAyMjIsIAotICAgIDE3NywgNzMsIDcyLCA0LCAyMjUsIDIxOSwgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAyNTUsIDIyMiwgMTY3LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjE2LCAyMjIsIDE4MSwgNzMsIDcyLCA0LCAyMjUsIDI0OCwgMjIyLCAxNjQsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAzMywgMTYzLCAyMjIsIDE3NywgNzMsIDcyLCA0LCAyMjYsIDEzLCAxNjMsIDIyMiwgMTY2LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMTkyLCAxNjMsIDIyMiwgMTY3LCA3MywgNzIsIDQsIDIyNSwgMjIwLCAyMzgsIDgxLCA3MywgNzIsIDQsIDIyNiwgOCwgMjM5LCAKLSAgICA4LCA3MywgNzIsIDQsIDIyNSwgMjA3LCAyMzcsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE4NSwgMjM4LCAxODIsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyMDksIDIzNywgMjE2LCA3MywgNzIsIDQsIDIyNSwgMjA4LCAyMzcsIDIyNiwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDE5MSwgMjIyLCAxODcsIDczLCA3MiwgNCwgMjI2LCA2MiwgMjIyLCAxMjQsIDczLCA3MiwgNCwgMjI1LCAxOTgsIDIyMiwgCi0gICAgMTEzLCA3MywgNzIsIDQsIDIyNiwgNTEsIDIxOCwgMTY3LCA3MywgNzIsIDQsIDIyNiwgMjAsIDE4NSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDY5LCAyMTcsIDE5MSwgNzMsIDcyLCA0LCAyMjYsIDM4LCAyMTksIDIzLCA3MywgNzIsIDQsIDIyNiwgNjgsIDIxOSwgCi0gICAgMzQsIDczLCA3MiwgNCwgMjI2LCAxNywgMjE4LCA0NSwgNzMsIDcyLCA0LCAyMjYsIDUzLCAyMTgsIDY5LCA3MywgNzIsIDQsIAotICAgIDIyNSwgMjMwLCAyMjUsIDM5LCA3MywgNzIsIDQsIDIyNiwgNTcsIDIyNSwgNTQsIDczLCA3MiwgNCwgMjI1LCAyNTMsIDIyNSwgCi0gICAgMzMsIDczLCA3MiwgNCwgMjI2LCA3MiwgMjI1LCA0NiwgNzMsIDcyLCA0LCAyMjUsIDE4NywgMjI1LCA0NiwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDQ3LCAyMjUsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjAzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjAxLCAyMjUsIAotICAgIDM1LCA3MywgNzIsIDQsIDIyNSwgMTg4LCAyMjUsIDI3LCA3MywgNzIsIDQsIDIyNSwgMjE0LCAxNjMsIDIyNSwgNDcsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxNCwgMTYzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjMzLCAxNjMsIDIyNSwgMzUsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyNDMsIDIyOCwgMjM2LCA3MywgNzIsIDQsIDIyNiwgMjcsIDIyOCwgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNDUsIAotICAgIDIyOCwgMjMyLCA3MywgNzIsIDQsIDIyNiwgNzYsIDIyOCwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMTEsIDIyOCwgMjQwLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgNywgMjI4LCAyMzQsIDczLCA3MiwgNCwgMjI1LCAyMTcsIDIyOCwgMjM1LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjUxLCAyMzgsIDE5OSwgNzMsIDcyLCA0LCAyMjYsIDYzLCAyMzgsIDIwNywgNzMsIDcyLCA0LCAyMjUsIDIyNywgMjM4LCAKLSAgICAxOTQsIDczLCA3MiwgNCwgMjI2LCAyNiwgMjM4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxMiwgMjM4LCAyMDQsIDczLCA3MiwgCi0gICAgNCwgMjI2LCA0OCwgMjM4LCAxOTUsIDczLCA3MiwgNCwgMjI2LCA0OSwgMjM4LCAxOTcsIDczLCA3MiwgNCwgMjI1LCAyMDQsIAotICAgIDIxNiwgMjIwLCA3MywgNzIsIDQsIDIyNSwgMjUyLCAyMjMsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjQ2LCAyMjMsIDI1LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjUwLCAyMjIsIDI0OCwgNzMsIDcyLCA0LCAyMjUsIDE4NCwgMjIzLCAxNiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDAsIDIyMywgMTcsIDczLCA3MiwgNCwgMjI2LCA1MiwgMjIyLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1NSwgMjIzLCAxLCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjIzLCAyMjIsIDQ4LCA3MywgNzIsIDQsIDIyNSwgMTgzLCAyMjIsIDE4LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjI2LCAyMjIsIDM5LCA3MywgNzIsIDQsIDIyNSwgMjQxLCAyMjIsIDIyLCA3MywgNzIsIDQsIDIyNSwgMTkzLCAyMDUsIAotICAgIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE5MCwgMjA2LCA4NiwgNzMsIDcyLCA0LCAyMjUsIDIyNCwgMjA0LCAxNjMsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyMDIsIDIwNiwgNTAsIDczLCA3MiwgNCwgMjI2LCAzNCwgMjA2LCA1NSwgNzMsIDcyLCA0LCAyMjUsIDIzMSwgCi0gICAgMjA1LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA0MiwgMjA1LCAxODksIDczLCA3MiwgNCwgMjI1LCAyMTEsIDIyMCwgMjQyLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgNjEsIDIyMSwgNSwgNzMsIDcyLCA0LCAyMjUsIDIwNSwgMjIwLCAyMjQsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAyMSwgMjIwLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1OSwgMjIwLCAyMzEsIDczLCA3MiwgMTcsIDEwNSwgNzMsIDcyLCAKLSAgICAxNywgMTA4LCA3MywgNzIsIDE3LCAxNDcsIDczLCA3MiwgMTcsIDE0OSwgNzMsIDcyLCAxNywgMTcwLCA3MywgNzIsIDE3LCAKLSAgICAxOTUsIDczLCA3MiwgMTcsIDIxMywgMTExLCA3MywgNzIsIDE3LCAxOTksIDczLCA3MiwgMTcsIDIyMiwgNjMsIDczLCA3MiwgCi0gICAgMzksIDQyLCAyMDksIDE3NCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTQ3LCA3MywgNzIsIDM5LCA0MiwgMjM2LCAxMCwgNzMsIAotICAgIDcyLCAzOSwgNDIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIAotICAgIDIzNiwgMTIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMjQsIDExMywgMTAsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDI0OCwgCi0gICAgMTM4LCAxMCwgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjAyLCAKLSAgICAxMDcsIDEwLCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjAzLCA0NywgMTAsIDEzLCAyMzAsIAotICAgIDIyLCAxMCwgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyMSwgMTc4LCAxMCwgMTMsIDIxNCwgMTYxLCAKLSAgICAxMCwgMTMsIDI1MSwgNTksIDEwLCAxMywgMjQwLCA0NywgMTAsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIxNywgMTE5LCAxMCwgCi0gICAgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIxMywgMzksIDEwLCAxMywgMjA5LCAxNjksIDEwLCAxMywgMjA5LCA4OCwgMTAsIDEzLCAKLSAgICAyMjksIDE0MCwgMTAsIDEzLCAyMDksIDEwMCwgMTAsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMzgsIDExNCwgMTAsIDEzLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEzLCAyNDMsIDg0LCAyMjEsIDE3OCwgMTAsIDEzLCAKLSAgICAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMTMsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDgxLCAyNDgsIDEzOCwgMTAsIAotICAgIDEzLCA4MSwgMjMwLCAxNTgsIDEwLCAxMywgODEsIDIzNywgNDMsIDEwLCAxMywgODEsIDIzNywgMTQ4LCAxMCwgMTMsIDgxLCAKLSAgICAyMDMsIDQ3LCAxMCwgMTMsIDgxLCAyMzAsIDIyLCAxMCwgMTMsIDgxLCAyMjgsIDI4LCAxMCwgMTMsIDgxLCAyMjUsIDUsIAotICAgIDEwLCAxMywgODEsIDIyMSwgMTc4LCAxMCwgMTMsIDgxLCAyMTQsIDE2MSwgMTAsIDEzLCA4MSwgMjUxLCA1OSwgMTAsIDEzLCAKLSAgICA4MSwgMjQwLCA0NywgMTAsIDEzLCA4MSwgMjE1LCAyOCwgMTAsIDEzLCA4MSwgMjE3LCAxMTksIDEwLCAxMywgODEsIDIxMywgCi0gICAgMzksIDEwLCAxMywgODEsIDIwOSwgMTY5LCAxMCwgMTMsIDgxLCAyMDksIDg4LCAxMCwgMTMsIDgxLCAyMjksIDE0MCwgMTAsIAotICAgIDEzLCA4MSwgMjQ0LCAyMDcsIDEwLCAxMywgODEsIDIzOCwgMTE0LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzAsIDE1OCwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNDcsIDIwMywgNDcsIDEwLCAxMywgMjA5LCAyNDcsIDIyOCwgCi0gICAgMjgsIDEwLCAxMywgMjA5LCAyNDcsIDIyMSwgMTc4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTQsIDE2MSwgMTAsIDEzLCAyMDksIAotICAgIDI0NywgMjUxLCA1OSwgMTAsIDEzLCAyMDksIDI0NywgMjE1LCAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjE3LCAxMTksIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDIxMywgMzksIDEwLCAxMywgMjA5LCAyNDcsIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMjQ3LCAyNDQsIAotICAgIDIwNywgMTAsIDEzLCAyMDksIDI0NywgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyNDMsIDg0LCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyNDgsIDEzOCwgMTAsIDEzLCAyMTEsIAotICAgIDQwLCAyMzAsIDE1OCwgMTAsIDEzLCAyMTEsIDQwLCAyMzcsIDQzLCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgMTQ4LCAxMCwgCi0gICAgMTMsIDIxMSwgNDAsIDIwOSwgMjUxLCAxMCwgMTMsIDIxMSwgNDAsIDIwMywgNDcsIDEwLCAxMywgMjExLCA0MCwgMjMwLCAKLSAgICAyMiwgMTAsIDEzLCAyMTEsIDQwLCAyMjUsIDUsIDEwLCAxMywgMjExLCA0MCwgMjIxLCAxNzgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjE0LCAxNjEsIDEwLCAxMywgMjExLCA0MCwgMjUxLCA1OSwgMTAsIDEzLCAyMTEsIDQwLCAyNDAsIDQ3LCAxMCwgMTMsIAotICAgIDIxMSwgNDAsIDIxNSwgMjgsIDEwLCAxMywgMjExLCA0MCwgMjE3LCAxMTksIDEwLCAxMywgMjExLCA0MCwgMjEzLCAzOSwgCi0gICAgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDE2OSwgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDg4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIxMSwgNDAsIDI0NCwgMjA3LCAxMCwgMTMsIDIxMSwgNDAsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIxMSwgNDAsIDIzOCwgMTE0LCAxMCwgMTMsIDIxMSwgNDAsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjUxLCAzMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDgsIDEzOCwgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMzAsIDE1OCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDE4NCwgMTAsIDEzLCAyMjcsIDEzLCAKLSAgICAyMzcsIDQzLCAxMCwgMTMsIDIyNywgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMDcsIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjI3LCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjI3LCAxMywgMjAzLCA0NywgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMjgsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIyNSwgNSwgMTAsIDEzLCAyMjcsIDEzLCAyMjEsIAotICAgIDE3OCwgMTAsIDEzLCAyMjcsIDEzLCAyMTQsIDE2MSwgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDU5LCAxMCwgMTMsIDIyNywgCi0gICAgMTMsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjE1LCAyOCwgMTAsIDEzLCAyMjcsIDEzLCAyMTcsIDExOSwgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMTYsIDEyMiwgMTAsIDEzLCAyMjcsIDEzLCAyMTMsIDM5LCAxMCwgMTMsIDIyNywgMTMsIDIwOSwgMTY5LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIwOSwgODgsIDEwLCAxMywgMjI3LCAxMywgMjI5LCAxNDAsIDEwLCAxMywgMjI3LCAxMywgCi0gICAgMjA5LCAxMDAsIDEwLCAxMywgMjI3LCAxMywgMjQ0LCAyMDcsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjM4LCAxMTQsIDEwLCAxMywgMTY5LCAyNDgsIDEzOCwgMTAsIDEzLCAxNjksIDIzMCwgMTU4LCAxMCwgMTMsIAotICAgIDE2OSwgMjQ0LCAxODQsIDEwLCAxMywgMTY5LCAyMDQsIDcwLCAxMCwgMTMsIDE2OSwgMjAyLCAxMDcsIDEwLCAxMywgMTY5LCAKLSAgICAyMzcsIDE0OCwgMTAsIDEzLCAxNjksIDIwOSwgMjUxLCAxMCwgMTMsIDE2OSwgMjAzLCA0NywgMTAsIDEzLCAxNjksIDIyOCwgCi0gICAgMjgsIDEwLCAxMywgMTY5LCAyMjUsIDUsIDEwLCAxMywgMTY5LCAyMjEsIDE3OCwgMTAsIDEzLCAxNjksIDIxNCwgMTYxLCAKLSAgICAxMCwgMTMsIDE2OSwgMjUxLCA1OSwgMTAsIDEzLCAxNjksIDI0MCwgNDcsIDEwLCAxMywgMTY5LCAyMTUsIDI4LCAxMCwgMTMsIAotICAgIDE2OSwgMjE3LCAxMTksIDEwLCAxMywgMTY5LCAyMTYsIDEyMiwgMTAsIDEzLCAxNjksIDIxMywgMzksIDEwLCAxMywgMTY5LCAKLSAgICAyMDksIDE2OSwgMTAsIDEzLCAxNjksIDIwOSwgODgsIDEwLCAxMywgMTY5LCAyMjksIDE0MCwgMTAsIDEzLCAxNjksIDIwOSwgCi0gICAgMTAwLCAxMCwgMTMsIDE2OSwgMjQ0LCAyMDcsIDEwLCAxMywgMTY5LCAyMDIsIDExMCwgMTAsIDEzLCAxNjksIDIzOCwgMTE0LCAKLSAgICAxMCwgMTMsIDIxOSwgMjU1LCA4MywgMywgMTUxLCAzLCAyMDksIDIwOSwgMTAsIDEzLCAyMTksIDI1NSwgMTUxLCAzLCAyNDQsIAotICAgIDE4NCwgMjI1LCAxNDIsIDk5LCAyNDEsIDE3NiwgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAyMTEsIDIzOCwgMjA0LCAxNiwgCi0gICAgMjI1LCAxNDIsIDk5LCAyMDQsIDQ2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDE1MywgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAKLSAgICAyMTYsIDEzOCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAyMzcsIDI0NCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCA2MSwgCi0gICAgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDYsIAotICAgIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0NiwgCi0gICAgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIAotICAgIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIAotICAgIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgCi0gICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ4LCAKLSAgICAyNDMsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIAotICAgIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgCi0gICAgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjIyLCAKLSAgICA2NCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgCi0gICAgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0NiwgCi0gICAgNTgsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTgsIDc5LCAyMjUsIDE0MiwgCi0gICAgOTksIDIxOSwgMjQyLCAyMjUsIDE0MiwgOTksIDI0OCwgMjQ0LCAyMjUsIDE0MiwgOTksIDI0NiwgOTksIDIyNSwgMTQyLCAKLSAgICA5OSwgMjExLCAxODMsIDIyNSwgMTQyLCA5OSwgMjEwLCAyMTYsIDIyNSwgMTQyLCA5OSwgMjUwLCAyMSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMDQsIDcsIDIyNSwgMTQyLCA5OSwgMjMwLCA5NCwgMjI1LCAxNDIsIDk5LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIAotICAgIDEwNiwgMjQ5LCAyNSwgMTYxLCA5OSwgMjM2LCAxMDQsIDE2MSwgOTksIDIzNiwgMTAzLCAxNjEsIDk5LCAyMzYsIDEwMiwgCi0gICAgMTYxLCA5OSwgMjM2LCAxMDEsIDE2MSwgOTksIDIzNiwgMTAwLCAxNjEsIDk5LCAyMzYsIDk5LCAxNjEsIDk5LCAyMzYsIDk4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDk3LCAxNjEsIDk5LCAyMzYsIDk2LCAxNjEsIDk5LCAyMzYsIDk1LCAxNjEsIDk5LCAyMzYsIDk0LCAKLSAgICAxNjEsIDk5LCAyMzYsIDkzLCAxNjEsIDk5LCAyMzYsIDkyLCAxNjEsIDk5LCAyMzYsIDkxLCAxNjEsIDk5LCAyMzYsIDkwLCAKLSAgICAxNjEsIDk5LCAyMzYsIDg5LCAxNjEsIDk5LCAyMzYsIDg4LCAxNjEsIDk5LCAyMzYsIDg3LCAxNjEsIDk5LCAyMzYsIDg2LCAKLSAgICAxNjEsIDk5LCAyMzYsIDg1LCAxNjEsIDk5LCAyMzYsIDg0LCAxNjEsIDk5LCAyMzYsIDgzLCAxNjEsIDk5LCAyMzYsIDgyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDgxLCAxNjEsIDk5LCAyMzYsIDgwLCAxNjEsIDk5LCAyMzYsIDc5LCAxNjEsIDk5LCAyMzYsIDc4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDc3LCAxNjEsIDk5LCAyMzYsIDc2LCAxNjEsIDk5LCAyMzYsIDc1LCAxNjEsIDk5LCAyMzYsIDc0LCAKLSAgICAxNjEsIDk5LCAyMzYsIDczLCAxNjEsIDk5LCAyMzYsIDcyLCAxNjEsIDk5LCAyMzYsIDcxLCAxNjEsIDk5LCAyMzYsIDcwLCAKLSAgICAxNjEsIDk5LCAyMzYsIDY5LCAxNjEsIDk5LCAyMzYsIDY4LCAxNjEsIDk5LCAyMzYsIDY3LCAxNjEsIDk5LCAyMzYsIDY2LCAKLSAgICAxNjEsIDk5LCAyMzYsIDY1LCAxNjEsIDk5LCAyMzYsIDY0LCAxNjEsIDk5LCAyMzYsIDYzLCAxNjEsIDk5LCAyMzYsIDYyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDYxLCAxNjEsIDk5LCAyMzYsIDYwLCAxNjEsIDk5LCAyMzYsIDU5LCAxNjEsIDk5LCAyMzYsIDU4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDU3LCAxNjEsIDk5LCAyMzYsIDU2LCAxNjEsIDk5LCA4MCwgMjQ5LCAyNSwgMTYxLCA5OSwgMjA2LCAKLSAgICAzNywgMTYxLCA5OSwgMjA2LCAzNiwgMTYxLCA5OSwgMjA2LCAzNSwgMTYxLCA5OSwgMjA2LCAzNCwgMTYxLCA5OSwgMjA2LCAKLSAgICAzMywgMTYxLCA5OSwgMjA2LCAzMiwgMTYxLCA5OSwgMjA2LCAzMSwgMTYxLCA5OSwgMjA2LCAzMCwgMTYxLCA5OSwgMjA2LCAKLSAgICAyOSwgMTYxLCA5OSwgMjA2LCAyOCwgMTYxLCA5OSwgMjA2LCAyNywgMTYxLCA5OSwgMjA2LCAyNiwgMTYxLCA5OSwgMjA2LCAKLSAgICAyNSwgMTYxLCA5OSwgMjA2LCAyNCwgMTYxLCA5OSwgMjA2LCAyMywgMTYxLCA5OSwgMjA2LCAyMiwgMTYxLCA5OSwgMjA2LCAKLSAgICAyMSwgMTYxLCA5OSwgMjA2LCAyMCwgMTYxLCA5OSwgMjA2LCAxOSwgMTYxLCA5OSwgMjA2LCAxOCwgMTYxLCA5OSwgMjA2LCAKLSAgICAxNywgMTYxLCA5OSwgMjA2LCAxNiwgMTYxLCA5OSwgMjA2LCAxNSwgMTYxLCA5OSwgMjA2LCAxNCwgMTYxLCA5OSwgMjA2LCAKLSAgICAxMywgMTYxLCA5OSwgMjA2LCAxMiwgMTYxLCA5OSwgMjA2LCAxMSwgMTYxLCA5OSwgMjA2LCAxMCwgMTYxLCA5OSwgMjA2LCAKLSAgICA5LCAxNjEsIDk5LCAyMDYsIDgsIDE2MSwgOTksIDIwNiwgNywgMTYxLCA5OSwgMjA2LCA2LCAxNjEsIDk5LCAyMDYsIDUsIAotICAgIDE2MSwgOTksIDIwNiwgNCwgMTYxLCA5OSwgMjA2LCAzLCAxNjEsIDk5LCAyMDYsIDIsIDE2MSwgOTksIDIwNiwgMSwgMTYxLCAKLSAgICA5OSwgMjA2LCAwLCAxNjEsIDk5LCAyMDUsIDI1NSwgMTYxLCA5OSwgMjA1LCAyNTQsIDE2MSwgOTksIDIwNSwgMjUzLCAxNjEsIAotICAgIDk5LCAyMDUsIDI1MiwgMTYxLCA5OSwgMjA1LCAyNTEsIDE2MSwgOTksIDIwNSwgMjUwLCAxNjEsIDk5LCAyMDUsIDI0OSwgCi0gICAgMTYxLCA5OSwgMjA1LCAyNDgsIDE2MSwgOTksIDIwNSwgMjQ3LCAxNjEsIDk5LCAyMDUsIDI0NiwgMTYxLCA5OSwgMjA1LCAKLSAgICAyNDUsIDIxOCwgODgsIDI0NywgMzgsIDI0OSwgMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAKLSAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIAotICAgIDExMiwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAKLSAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIAotICAgIDgyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMTIwLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMjM5LCAxNDcsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIDIzNywgNTMsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDIzNywgCi0gICAgNTMsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgCi0gICAgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjMwLCAxNzksIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyMzcsIDUzLCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMTYsIDEzOCwgMjMwLCA5NCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDMsIAotICAgIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0MywgCi0gICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIAotICAgIDIzMywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgCi0gICAgMzgsIDIxMywgMTEyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjQzLCAyMjAsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAKLSAgICAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjI5LCAzMiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgNjIsIDIzMCwgOTQsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDYsIDIsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyNDYsIDIsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgCi0gICAgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAKLSAgICAxNDMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOSwgMTUzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDI0NiwgMiwgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgNjEsIDIzMCwgOTQsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIzOSwgMTczLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM3LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMzLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDMyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMwLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMDgsIDI5LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDI4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ3LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ2LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ1LCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDQ0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQyLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMDgsIDQxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM5LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM2LCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDM1LCAxNywgMjAyLCA4NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMDIsIDg1LCAyNDUsIDIzMywgMTcsIDExOCwgCi0gICAgMjQ1LCAyMzMsIDE3LCAxMjAsIDI0NSwgMjMzLCAxNywgMTI2LCAyNDUsIDIzMywgMTcsIDIzOSwgMTQ3LCAyNDUsIDIzMywgCi0gICAgMTcsIDIzOSwgMjMzLCAyNDUsIDIzMywgMTcsIDIxMiwgODgsIDI0NSwgMjMzLCAxNywgMjEzLCAxMTIsIDI0NSwgMjMzLCAKLSAgICAxNywgMjQxLCAxNDMsIDI0NSwgMjMzLCAxNywgMjIyLCA2NCwgMjQ1LCAyMzMsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMDIsIAotICAgIDg0LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMDIsIDg0LCAxMDIsIDgsIDYsIDEsIDYzLCAxMDIsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxMDIsIDgsIDYsIDEsIDI0NywgMTI1LCAxMDIsIDgsIDYsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNiwgMSwgCi0gICAgNzQsIDEwMiwgOCwgNiwgMSwgMjQwLCAxNzQsIDEwMiwgOCwgNiwgMSwgMjM5LCA3NSwgMTAyLCA4LCA2LCAxLCAyMzcsIAotICAgIDE3MSwgMTAyLCA4LCA2LCAxLCA3NSwgMTAyLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA2LCAxLCAyMzAsIDU0LCAKLSAgICAxMDIsIDgsIDYsIDEsIDE1OSwgMTAyLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA2LCAxLCAyMjMsIDE2MywgMTAyLCAKLSAgICA4LCA2LCAxLCA3OCwgMTAyLCA4LCA2LCAxLCAyMTksIDE4NCwgMTAyLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA2LCAKLSAgICAxLCAxNDYsIDEwMiwgOCwgNiwgMSwgMTk0LCAxMDIsIDgsIDYsIDEsIDIxMCwgNjksIDEwMiwgOCwgNiwgMSwgNjgsIDEwMiwgCi0gICAgOCwgNiwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgNiwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNiwgMSwgMjAzLCAxOTYsIDEwMiwgCi0gICAgOCwgNiwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgNiwgMSwgMjAyLCAxNTksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgCi0gICAgOCwgNiwgMSwgMTk0LCA0MywgMzcsIDgsIDYsIDEsIDI0NywgMTI1LCA0MywgMzcsIDgsIDYsIDEsIDE0NiwgNDMsIDI0NiwgCi0gICAgMjM5LCA0MywgMjAzLCAxOTgsIDEwMywgOCwgNiwgMSwgNjMsIDEwMywgOCwgNiwgMSwgMjQ5LCAyNTUsIDEwMywgOCwgNiwgCi0gICAgMSwgMjQ3LCAxMjUsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTAzLCA4LCA2LCAxLCA3NCwgMTAzLCA4LCA2LCAxLCAyNDAsIAotICAgIDE3NCwgMTAzLCA4LCA2LCAxLCAyMzksIDc1LCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxMDMsIDgsIDYsIDEsIDc1LCAKLSAgICAxMDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDEwMywgOCwgNiwgMSwgMTU5LCAxMDMsIDgsIAotICAgIDYsIDEsIDIyNiwgMTg1LCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDMsIDgsIDYsIDEsIDc4LCAxMDMsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg0LCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDMsIDgsIDYsIDEsIDE0NiwgMTAzLCA4LCA2LCAxLCAxOTQsIAotICAgIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTAzLCA4LCA2LCAxLCA2OCwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMDQsIDE0NCwgMTAzLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMDIsIDE1OSwgMTAzLCAyMzUsIDI1NSwgMTAzLCAyMjMsIDE4NywgMTAzLCAyMTQsIDE3OSwgMTAzLCAyMTEsIAotICAgIDE2NywgMTAzLCAyMTgsIDEwLCAxMDMsIDIwNCwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDYzLCAxODIsIDQzLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ3LCAxMjUsIDE4MiwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgNDMsIAotICAgIDgsIDYsIDEsIDc0LCAxODIsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTgyLCA0MywgOCwgNiwgMSwgMjM5LCA3NSwgMTgyLCAKLSAgICA0MywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgNDMsIDgsIDYsIDEsIDc1LCAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDE4NCwgCi0gICAgMTgyLCA0MywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCA0MywgOCwgNiwgMSwgMTU5LCAxODIsIDQzLCA4LCA2LCAxLCAyMjYsIAotICAgIDE4NSwgMTgyLCA0MywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDc4LCAxODIsIDQzLCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NCwgMTgyLCA0MywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgNDMsIDgsIDYsIDEsIDE0NiwgMTgyLCA0MywgOCwgCi0gICAgNiwgMSwgMTk0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIDQzLCA4LCA2LCAxLCA2OCwgMTgyLCA0MywgOCwgCi0gICAgNiwgMSwgMjA2LCAxNjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDE5NiwgCi0gICAgMTgyLCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMiwgMTU5LCAyMTYsIDE4OCwgMjI1LCAKLSAgICAyNiwgNTQsIDIxNiwgMTg4LCAyMjUsIDIzLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDYzLCAxODIsIDEwMywgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCA3NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjM5LCAKLSAgICA3NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxODIsIDEwMywgOCwgNiwgMSwgNzUsIDE4MiwgMTAzLCA4LCA2LCAKLSAgICAxLCAyMzAsIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAxNTksIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxODIsIDEwMywgOCwgNiwgMSwgCi0gICAgNzgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxODIsIDEwMywgCi0gICAgOCwgNiwgMSwgMTQ2LCAxODIsIDEwMywgOCwgNiwgMSwgMTk0LCAxODIsIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDY4LCAxODIsIDEwMywgOCwgNiwgMSwgMjA2LCAxNjQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDQsIAotICAgIDE0NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgMTAzLCAKLSAgICA4LCA2LCAxLCAyMDIsIDE1OSwgMjQ1LCAxMjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDIzNSwgCi0gICAgMTY0LCAxODIsIDEwMywgMTg1LCAxODIsIDEwMywgMjE1LCAzNiwgMTgyLCAxMDMsIDI1MSwgMjMyLCAxODIsIDEwMywgMjA0LCAKLSAgICA2MywgNTEsIDI0MywgMTMyLCAxMDMsIDI0NiwgNDIsIDEwMywgMjQ1LCAxNzYsIDEwMywgMjM5LCAxMjksIDEwMywgMjM1LCAKLSAgICAxNTUsIDEwMywgMjIyLCAyMTMsIDEwMywgMjIyLCAyMDUsIDEwMywgMjIwLCA1MSwgMTAzLCAyMTEsIDI0NSwgMTAzLCAxMTIsIAotICAgIDMsIDI0MCwgMjEyLCA4MiwgMTAzLCAyMDUsIDE2NiwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA2MywgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCAyNDksIDI1NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyNDcsIDEyNSwgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCAyNDUsIDUxLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgCi0gICAgMTYsIDEsIDI0MCwgMTc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIzOSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAKLSAgICAxNiwgMSwgMjM3LCAxNzEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgCi0gICAgMjMwLCAxODQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjMwLCA1NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKLSAgICAxNTksIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjI2LCAxODUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjIzLCAKLSAgICAxNjMsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE5LCAxODQsIAotICAgIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE3LCAxMzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTQ2LCAyMTYsIAotICAgIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDE5NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTAsIDY5LCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDY4LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwNiwgMTY0LCAyMTYsIDEzMCwgMjMxLCAKLSAgICAzMiwgMTYsIDEsIDIwNCwgMTQ0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMywgMTk2LCAyMTYsIDEzMCwgMjMxLCAKLSAgICAzMiwgMTYsIDEsIDIwMywgMTI0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMiwgMTU5LCA1MSwgMTcyLCAyMzYsIAotICAgIDEzMCwgMTAzLCA2NywgMjI5LCAxNCwgMTAzLCA2NywgMjE1LCAzNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTAwLCAKLSAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMiwgMTAzLCA2NywgMjQ0LCAKLSAgICA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDYsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDc4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDExOCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg1LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA5NCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMDEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExNywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTMsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDExNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDg0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA3LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMDksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA5OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMiwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTIxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTAyLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMjAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMSwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgOTcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA5OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgwLCAxMDMsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCAxMTAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MCwgCi0gICAgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgzLCAxMDMsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCAxMTQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwOCwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKLSAgICAxMiwgMjA2LCAyMzksIDIzMywgODksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEyMSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAyMDgsIDEzMywgMjEzLCAKLSAgICAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDMsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDg2LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA5OSwgCi0gICAgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgODIsIDIwOCwgMTMzLCAyMTMsIDMzLCAKLSAgICAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDExMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAKLSAgICAyMzksIDIzMywgOTUsIDQzLCAxODksIDI1MSwgMTExLCA0MywgMTg5LCAyNTEsIDEzNiwgMjQ1LCA2MiwgMjM5LCAxODQsIAotICAgIDI0NiwgMTYsIDIwNywgMywgMjIyLCA4MCwgMywgMjExLCA5MSwgMjEwLCAyMDksIDExNSwgMjI0LCAxMSwgMjEwLCAyMDgsIAotICAgIDI0NiwgNDYsIDI1MCwgNTAsIDI0MiwgMTcsIDIxMCwgMjA3LCAxMTUsIDI0NywgMTgyLCAyMTYsIDE4OSwgMjQ3LCAyMDgsIAotICAgIDI1MCwgNTAsIDIyMiwgNzksIDIwNCwgODEsIDIwNCwgNzUsIDIwNSwgMTgxLCAyMjQsIDExOCwgMjA0LCA2NSwgMjQxLCAKLSAgICAxODAsIDIzOCwgNDYsIDI0MCwgMjI4LCAyNDEsIDE4MCwgMjM4LCA0NiwgMjUwLCAyMzgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAKLSAgICAyNTAsIDY4LCAyMzgsIDQ2LCAzLCAyMjQsIDIzMSwgMjIyLCAyMTQsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyNDUsIDEzOSwgCi0gICAgMjI0LCAzMCwgOTcsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA2NywgMjM4LCA3NywgMjI0LCAzMCwgCi0gICAgOTcsIDIzOSwgMTAyLCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjM4LCA3NywgMjI0LCAzMCwgOTcsIDIyOCwgMSwgMjE3LCAKLSAgICA1NiwgMjI0LCAzMCwgOTcsIDIwNCwgOTQsIDI0NSwgMTM5LCAyMjQsIDMwLCA5NywgMjQ1LCAxMzksIDIyNCwgMjksIDIyMiwgCi0gICAgMjE0LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMjgsIAotICAgIDEsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDEwMiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIxMCwgCi0gICAgMjE1LCAzLCAyNDAsIDEwMiwgMjM4LCA0NCwgMjExLCA5NCwgMjEyLCAyMzMsIDIxMSwgOTQsIDIwOSwgODAsIDYyLCAyNDIsIAotICAgIDQ5LCA2MSwgMjEwLCAyMTQsIDYxLCAyMTAsIDIxNSwgMywgNSwgMjQ2LCA3LCA2MSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAKLSAgICAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgOCwgMywgMjE2LCAxOTAsIDI0NiwgOCwgMywgMjE2LCAxOTAsIAotICAgIDI0NiwgOCwgMywgMjEyLCAxOSwgMjQ2LCA4LCAzLCAyMjcsIDEzMSwgMjQ2LCA4LCAzLCAyMDgsIDEzNywgMjM5LCAxODUsIAotICAgIDIwNCwgMTcsIDI0OCwgMjcsIDI0MCwgMTAyLCAyMzYsIDQ3LCAyNDMsIDEwMiwgMjEwLCAyLCAyNDcsIDE1OCwgMjQ2LCAKLSAgICAxNDgsIDIxNCwgMTYzLCAyNDAsIDIyMiwgMjA4LCA5NSwgMjQ0LCA2OSwgMjA4LCA5NSwgMjE5LCAxMzUsIDIwOCwgOTUsIAotICAgIDI0NywgODUsIDIzNiwgNDcsIDIxOCwgMjQ4LCAyMDcsIDE5MywgMjQ2LCAxNTIsIDI0OCwgMzAsIDIxNSwgMjAyLCAyMzcsIAotICAgIDIsIDIxMCwgMjEyLCAyNDgsIDMwLCAyNDEsIDE4NCwgNzYsIDIyNSwgMTMxLCAyNDEsIDE4NCwgNzYsIDIxNiwgNTIsIDIzNywgCi0gICAgMjgsIDIzOSwgMTQ3LCAyMjcsIDIzMCwgMjQ2LCA2LCAyMjUsIDEwNCwgMjI3LCAyMjksIDI0MCwgODUsIDIyNywgMjI5LCAKLSAgICAyMjcsIDIzMCwgMjM5LCAxOTIsIDIzMSwgNTAsIDIwNCwgMTYsIDIyMywgMTk2LCAyMDgsIDE2NSwgMjUwLCAzMywgMjM4LCAKLSAgICA1LCAyMjQsIDI0OSwgMjA0LCA3OSwgMjA5LCAyMjUsIDIyNywgMTk5LCAyNDgsIDIzOSwgMjE4LCAxMjAsIDIxNiwgMTM4LCAKLSAgICAyNTAsIDE1NywgMjM3LCAyNDQsIDI1MCwgMTU3LCAyMTksIDI5LCAyMTksIDMxLCAyNDYsIDE1MywgMjExLCA0NSwgMjM3LCAKLSAgICAxMzIsIDIxMiwgNTEsIDc2LCAyMTgsIDEwMCwgMjI1LCAxNiwgMjIwLCAzMiwgMjQ4LCAxMSwgMjE4LCAyMSwgMjI3LCAyMTAsIAotICAgIDIxNiwgNTMsIDI0NSwgMTQ1LCAyMTYsIDUzLCAyNDgsIDI1MSwgMjQ1LCAxNzksIDIxNiwgNTIsIDI0NSwgODksIDI1LCAKLSAgICAyMTYsIDUyLCAyMTEsIDc5LCAyNDcsIDIzNywgMjExLCAyMjQsIDI0NywgMjE5LCAyMzksIDEyOCwgMjM5LCAxMjQsIDIxNSwgCi0gICAgMjIzLCAyMTAsIDE2NSwgMjE4LCAyMywgMjQ0LCAxNjMsIDIyMCwgNzUsIDIxMCwgMTgzLCAyMzksIDEyNSwgMjEyLCAyMDQsIAotICAgIDIzOSwgMjQ0LCAyNDcsIDc5LCAzLCAyMTAsIDE1OCwgMjQ0LCAxMywgMjEyLCA3LCAyMzUsIDE2MywgMjQ1LCAxNDMsIDIxMywgCi0gICAgNTEsIDIzNSwgMTYyLCAyMzUsIDE2MywgMjQ1LCAxNDMsIDI0MiwgNzMsIDI0NSwgMTc4LCAyNDYsIDExNCwgMTQyLCAyNDcsIAotICAgIDUxLCAyMjcsIDMyLCAyNDUsIDgxLCAyMzYsIDExOSwgMjE4LCAyNSwgMjEyLCAyMTcsIDI0OCwgMTE2LCAyNDcsIDIzMywgCi0gICAgMjE4LCAyNiwgNzYsIDIzOSwgMTc0LCAyNDUsIDE3NywgMjM5LCAxNjMsIDI1LCAyMjksIDMzLCAyMDksIDE4NCwgMjA0LCAzLCAKLSAgICAyMzcsIDEwMiwgMjE1LCAxMywgMjQ3LCAyNTAsIDI1LCAyNDUsIDk5LCAyMDQsIDEzLCAyMzgsIDQ5LCAyNDUsIDI1MSwgCi0gICAgMjM4LCA0OSwgMjA4LCA1MSwgMjQyLCA1NCwgMjQ4LCAxNDYsIDIyMywgMjM1LCAyNDYsIDIzLCAyNDgsIDE0NiwgMjIzLCAKLSAgICAyMzQsIDI0OSwgMjgsIDI0NywgMjQ5LCAyMzksIDE2MywgMjUsIDIyOSwgMzQsIDMsIDIxOCwgODksIDI0NywgMjUwLCAzLCAKLSAgICAyMTgsIDM4LCAyNDUsIDE2NywgMjE4LCA0MCwgMjE2LCA1NCwgMjAzLCAyMjcsIDIxNywgMjQyLCAyNDgsIDU4LCAyNDcsIAotICAgIDc4LCAyMzAsIDE3OCwgMjQ2LCAxMDYsIDIwOCwgOTUsIDI0MCwgNjgsIDI0NiwgMTA1LCAyMzksIDI0NywgMjM5LCAyNDgsIAotICAgIDIxMSwgMjIyLCAyNDgsIDI1MCwgMjE5LCA2NiwgMjE4LCAzOSwgMjQ1LCAyMTUsIDI0OCwgMjUxLCAyMDksIDIyOSwgMjA4LCAKLSAgICA5NSwgMjQ1LCAxMjgsIDIzOSwgMjE5LCAyMTgsIDEyMSwgMjQ0LCA2NiwgMjMwLCAxNjksIDI0MywgOTYsIDI0NywgMjcsIAotICAgIDIxMSwgNDQsIDIwNCwgMTcsIDI0NiwgMTMwLCAyMjQsIDMwLCAyMDUsIDIxNywgMjQ2LCAyMDQsIDIxNCwgMTk2LCAyMTQsIAotICAgIDIyMywgMjM4LCAxMSwgMjQ3LCA0OCwgMjM3LCA1NiwgMywgMjA4LCAyMTEsIDIyMCwgMzIsIDIwOSwgOTMsIDIyNywgMjIyLCAKLSAgICAyNDcsIDI0MywgNzYsIDIzOSwgMTk2LCAyMjQsIDExOSwgMjI1LCAxMywgMjE2LCAxMTAsIDIxNiwgNTQsIDMxLCAyMjksIAotICAgIDE1MCwgMywgMjMwLCAxNzcsIDIxMSwgMTUsIDIyNCwgMTUyLCAyMjcsIDE2NywgMjEyLCA0OSwgMjQ1LCAxODQsIDIyOSwgCi0gICAgMzAsIDI0OCwgMTU4LCAyNTAsIDc4LCAzMSwgMjIxLCAxNTUsIDI0OCwgMTU4LCAyNDQsIDE5LCAzMSwgMjIxLCAxNTUsIAotICAgIDI0MCwgNiwgMjM5LCAxMzMsIDI1MSwgMTE0LCAyMDgsIDI1MiwgMjQ3LCAyOCwgMjM2LCA0OSwgMjQwLCAzNSwgMjA0LCAzNiwgCi0gICAgMjE1LCAyMTMsIDI0NSwgMjUyLCAyMzksIDIzOSwgMjE4LCA1NCwgMjUsIDIzOSwgMjQzLCAyMjQsIDE1MiwgMjIzLCAyNTMsIAotICAgIDI0NywgNjUsIDI0NiwgNjUsIDIzNywgNjAsIDI1MCwgODUsIDIxOSwgMTM4LCAyMDgsIDE0NSwgMjM3LCA4MywgMjQ2LCA1MSwgCi0gICAgMjA5LCAxNDQsIDIwOCwgMjUzLCAyNDYsIDM3LCAyNDgsIDIwLCAyMTgsIDI0MSwgMjUwLCA4NCwgMjA1LCAyMjYsIDIzOCwgCi0gICAgMjM4LCAyNDMsIDE2NywgMjM2LCAyMzAsIDIxMiwgNDIsIDIyNSwgMTcyLCAyNDgsIDY5LCAyMzgsIDIzOSwgMjQzLCAyMTMsIAotICAgIDI0NywgMjM2LCAyMzksIDE5OCwgMjE4LCA4OCwgMjQ3LCAzNiwgMzEsIDIyMSwgMTYwLCAyMjMsIDIyNiwgMzEsIDIyMSwgCi0gICAgMTU1LCAyMTQsIDIwOSwgMjM3LCAyMTQsIDMxLCAyMjksIDE0OSwgMjA4LCAyNywgMjA1LCAyMDYsIDMxLCAyMTQsIDE4OSwgCi0gICAgMjE1LCAxMjYsIDIxMiwgMjQ2LCAzLCAyMTQsIDIyNiwgMjA5LCAxNDksIDIxNiwgMjA5LCAyNSwgMjQ4LCAyNTEsIDIxMiwgCi0gICAgNjcsIDI1LCAyMTIsIDY3LCAyNDgsIDQsIDI0OCwgMjEzLCAyNSwgMjM2LCAxMTIsIDI0NiwgMTU0LCAyMzksIDIyNSwgMjEyLCAKLSAgICAxOCwgMjE1LCAxMjcsIDIxMCwgMTg4LCAyMTEsIDE4OSwgMjI1LCAxMywgMjA4LCA1MiwgMjM2LCA1MCwgMjE2LCAyMTAsIAotICAgIDI1MCwgMjM5LCAyMzksIDE3MSwgMjE1LCAxMzksIDIzOSwgMTcxLCAyMTAsIDE2MCwgMjA0LCA1MSwgMjI3LCAxMzYsIDIzOCwgCi0gICAgMzAsIDIxNiwgMjExLCAyMjQsIDE4LCAyMTYsIDIxMSwgMjQ3LCAzOSwgMjQ1LCAxMzYsIDI0OCwgMjEwLCAyNSwgMjQ4LCAKLSAgICAyNTEsIDIwNSwgMTgwLCAyNDAsIDI1LCAyMzYsIDEzMywgMjExLCA3MywgMjUsIDI0OCwgMjUxLCAyMzUsIDE2MywgMjM2LCAKLSAgICAxMzMsIDIxMSwgNzMsIDI1LCAyMTcsIDE4NCwgMjEwLCA5LCAyMDksIDE0OSwgMjE5LCAxNTYsIDI1LCAyNDgsIDI1MSwgCi0gICAgMjEyLCAyMCwgMjQ3LCA0NCwgMjI0LCAxMiwgMjQ3LCA2MywgMjQ4LCAxNjEsIDMsIDIwNywgMywgMjQ3LCAxODQsIDI0NSwgCi0gICAgMTk4LCAyMzYsIDM5LCAyNDcsIDE4MiwgMjQ2LCA0NSwgMjQ0LCAyMywgMjM2LCAzOSwgMjQ3LCAxODMsIDI0NiwgMzUsIAotICAgIDI0NywgMTgzLCAyNDQsIDE1LCAyNDQsIDE2LCAyMzAsIDIwOCwgMjIzLCA2NywgMjE5LCA3MiwgMjExLCAxMDQsIDIzNiwgCi0gICAgMzksIDI0NywgMTgzLCAyMzYsIDM5LCAzLCAyMzgsIDIyMiwgMjIwLCA2NywgMjQ3LCAxODMsIDIzMCwgMTY5LCAyMTgsIDMxLCAKLSAgICAyMjAsIDY2LCAyNDAsIDIyNywgMjE4LCAzMSwgMjIwLCA2NiwgMjM2LCA0OCwgMjQ4LCAyMzUsIDI1MCwgMjMsIDIwOSwgCi0gICAgMTU3LCAyMjUsIDE3MiwgMjM2LCA0NCwgMjI3LCAxLCAyMzYsIDQ0LCAyNDUsIDE4MiwgMjExLCA1NywgMjE0LCAxOTUsIAotICAgIDI0NCwgMjYsIDIxMSwgNTcsIDI0MCwgOTEsIDIzMCwgMTg5LCAyMjgsIDEzLCAyMzAsIDE2OSwgMjQ3LCAxOSwgMjQwLCAKLSAgICAyMjcsIDI0NywgMTksIDYxLCAyMTksIDMsIDYyLCAyMTksIDMsIDIwNCwgNzMsIDYxLCAyMzksIDIyNSwgMjA0LCA3MywgNjIsIAotICAgIDIzOSwgMjI1LCAyMTUsIDIwMSwgNjIsIDIxNSwgMjAxLCAyMjgsIDEwNSwgMjQ5LCAxMiwgMjE2LCAyMDksIDI1LCAyMTIsIAotICAgIDE4MywgMjQ3LCAyNDEsIDI1LCA0NywgMjUwLCAyMzQsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTksIDI0MSwgCi0gICAgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTYsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTQsIDI0MSwgOTgsIDY1LCAKLSAgICAyMzksIDIzNCwgMjA3LCAxMTIsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTAsIDIxNiwgMTcyLCAyMjQsIDksIAotICAgIDIxOSwgMTkzLCAyMDQsIDgxLCAyNDcsIDE4OCwgMjQ1LCAxNDksIDIwOCwgMjQ1LCAyMjcsIDE4MywgMjE2LCAyMTIsIDI0NywgCi0gICAgMTcsIDI0MiwgNjEsIDI0NSwgMTM1LCAyMDQsIDM5LCAyMTIsIDI2LCAyMTIsIDI0LCAyMzYsIDQ5LCAyMTYsIDE4NCwgMjM4LCAKLSAgICAzNSwgMjEzLCAzNywgMjI0LCA0OCwgMjE1LCAyMDUsIDI0NiwgMTQwLCAyNDMsIDEwMiwgMjE4LCAxMzEsIDI0OCwgMjEsIAotICAgIDI0MSwgMTE0LCAyMjAsIDc4LCAyMTEsIDIwMiwgMjEzLCAzMiwgMjQ3LCAxODcsIDI1MCwgMTk4LCAyMzYsIDExOCwgMjI4LCAKLSAgICA5OCwgMjQ4LCAxNDQsIDIzOSwgMjQzLCAyMDgsIDUxLCAyMzksIDI0MywgMjQ4LCAyOCwgMjA3LCAxNzEsIDIzNywgODEsIAotICAgIDI0NiwgMTQxLCAyNDksIDI4LCAyNDYsIDE0MSwgMjM5LCAxMTgsIDI0OSwgMjgsIDI0NiwgMTQxLCAyNDgsIDYwLCAyMTksIAotICAgIDUsIDIyOSwgMjQsIDIxOCwgNDQsIDI0MiwgNTEsIDI0NywgNjcsIDI0OSwgMTcsIDI0NywgNjcsIDI0MywgOTUsIDIyNCwgCi0gICAgMTAsIDI0MCwgMTAyLCAyNDUsIDE1MCwgMjQwLCAxMDIsIDIwOCwgMjQ2LCAyNDAsIDEwMiwgMjE2LCAyMTMsIDI0MCwgMTAyLCAKLSAgICAyNDcsIDE4LCAyNDAsIDEwMiwgMjQyLCA2MiwgMjQwLCAxMDIsIDIxMSwgMTg3LCAyMDQsIDM5LCAyMzYsIDUwLCAyNDAsIAotICAgIDEwMiwgMjI0LCA0OSwgMjQwLCAxMDIsIDI0MywgMTAzLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDI0MCwgMTAyLCAyMzksIDEyMiwgCi0gICAgMjQwLCAxMDIsIDIzNywgMTI5LCAyNDAsIDEwMiwgMjAzLCAyNTMsIDI0MCwgMTAyLCAyNDgsIDE1NiwgMjQwLCAxMDIsIAotICAgIDIxOSwgMTIwLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDIyMSwgMTY3LCAyMTksIDQ2LCAyMTcsIDIzMCwgMjQ2LCAxMjUsIDI0MCwgCi0gICAgMTg0LCAyNDAsIDE5MSwgMjQxLCAxODMsIDIyMSwgMTY3LCAyMjQsIDcsIDIwOCwgMTUwLCA2MSwgMTEyLCAyMTgsIDU5LCAKLSAgICAyNDksIDIzLCAyMzEsIDM1LCA2MSwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCA2MSwgNDksIDIxOCwgNTksIAotICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjM5LCAyMzcsIDIzNywgMTI0LCAKLSAgICA1NCwgMjA0LCA3MywgMjM3LCAxMjQsIDU0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIDIwOSwgMjAsIDExMiwgNTQsIDIwOSwgCi0gICAgMjAsIDEyMSwgNTQsIDI0NiwgMzYsIDIzNywgMTAwLCA1NCwgMTcxLCAyMzcsIDEwMCwgNTQsIDI0NSwgMTIyLCAyMDMsIAotICAgIDI0OSwgMjM3LCA4MywgMjQwLCAxODcsIDIyMiwgMjM2LCAyMTAsIDY4LCAyMzAsIDE2MCwgMjQyLCA1NiwgMjI5LCA4NSwgCi0gICAgMjQ4LCA3MSwgMjAzLCAyNDksIDI0NiwgOSwgMjE3LCAxNjUsIDIzNywgMTAzLCAyMTgsIDIyLCAyMjUsIDExMiwgMjEyLCAKLSAgICAyMzksIDI1MCwgNDYsIDIxMiwgMjM5LCAyMzYsIDI0MywgMjEyLCAyMzksIDIwMywgMjQ5LCAyMTQsIDI0MCwgMjAzLCAyNDksIAotICAgIDI0OCwgMywgMjM5LCAxNjksIDI0NywgMTUwLCAyMzEsIDUwLCAyMTIsIDEzNiwgMjQ3LCAxNDksIDIzMSwgNTAsIDIxMiwgCi0gICAgMTM2LCAyNDcsIDIzMiwgMjM4LCA2MCwgMjI1LCAxMjIsIDIwMywgMjUwLCAyNDAsIDgyLCAyMjUsIDEyMywgMjUsIDIwMywgCi0gICAgMjUxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMjQsIDI0MSwgMjM2LCAxMjcsIDIzNywgOTksIDEyMCwgMjAzLCAyNDgsIAotICAgIDIzNiwgMTI3LCAyMzcsIDk5LCAyMTgsIDUxLCAyMjAsIDY1LCAyMDMsIDI1MSwgMywgMjQ3LCAxNjgsIDI0MSwgMTgxLCAKLSAgICAyNDcsIDIwOSwgMywgMjA2LCA0NiwgMjE4LCAyMzAsIDMsIDI0OCwgMzIsIDIzNywgMTQ1LCAyMjUsIDEyMywgMywgMjM3LCAKLSAgICAyMjcsIDIxOCwgMTY4LCAyMjUsIDEwOCwgMjI1LCAxMjMsIDMsIDIwNywgMTgwLCAyMjAsIDQ0LCAyMjUsIDEyMiwgMjIwLCAKLSAgICA0NCwgMjAzLCAyNTAsIDI0OSwgMjcsIDI0NSwgMTk5LCAyMDMsIDIzNCwgMjE3LCAyMzUsIDIzMCwgMTY5LCAyMjAsIDYxLCAKLSAgICAyMzAsIDE2OSwgMjM4LCAzNCwgMjM4LCA4OSwgMjQ5LCAyOCwgMjUwLCAyMjEsIDI0MCwgMTk2LCAyNTEsIDIwLCAyNTEsIAotICAgIDIxLCAyMjQsIDM5LCAyMzEsIDU1LCAyMTIsIDYyLCAyMzEsIDI1LCAyNDQsIDEyLCAyMTgsIDIyOSwgMjM3LCAyMjEsIDI0NCwgCi0gICAgMTY3LCAyMjcsIDk3LCAyMjMsIDkxLCAyMTgsIDUwLCAyNDAsIDEwMywgMjI1LCA3NCwgMjM3LCAxNDQsIDI0OCwgMjI5LCAKLSAgICAyMTgsIDUzLCAyMTAsIDg4LCAyMTgsIDEyNCwgMjI5LCA2NywgODIsIDIyNywgMSwgMjI3LCAxNzQsIDIxNSwgMjUyLCAyMzgsIAotICAgIDE4MCwgMjExLCA2MywgMjI5LCA2NiwgMjQ3LCAyNDIsIDI0NSwgMTUyLCAzLCAyMzcsIDU1LCAyMDQsIDU4LCAyNDgsIDE1NCwgCi0gICAgMjM3LCA1NSwgMjQ3LCAyMDMsIDIzNywgNTUsIDEyMCwgMjM3LCA1MywgMjExLCAyMjAsIDIzNywgNTUsIDIzNywgMjM3LCAKLSAgICAyMzcsIDU1LCAyMzcsIDU2LCAzLCA0NywgMjQ4LCAyNiwgMjM3LCA1NSwgMjM3LCAyNDQsIDIzNywgNTUsIDIwMywgNDUsIAotICAgIDIzNywgNTUsIDIxNywgMTY2LCAyMzcsIDU1LCAyMzcsIDU2LCAzLCAyMTYsIDU0LCAyMTYsIDY3LCAyMzcsIDUzLCAyMzcsIAotICAgIDU2LCAyNDQsIDY2LCAyNDMsIDIyMiwgMjEzLCA2MywgMywgMzQsIDcwLCAyMzEsIDYsIDI0MSwgMTE3LCAxNTcsIDI0NywgCi0gICAgMTgwLCAyNTAsIDIyMCwgOTcsIDI0OCwgMTIsIDIxMiwgNTQsIDk3LCAyNDUsIDI0NCwgOTcsIDIxMSwgMTk2LCAyMTAsIAotICAgIDE2NywgOTcsIDI0MiwgNDksIDI0NCwgMTQ1LCA5NywgMjE4LCAxMjUsIDc2LCAyMTgsIDQ1LCAyMzksIDIxMCwgMjQ4LCA4MywgCi0gICAgMjQzLCAxMzMsIDk3LCAyMTEsIDIxMiwgMjQ4LCAyNTAsIDIwOSwgMzgsIDI0OCwgMjUwLCA2MSwgMjM5LCAxOTcsIDIzNiwgCi0gICAgMTIsIDIxOCwgNTcsIDk3LCAyMjQsIDUzLCAyNDksIDEwLCAyNDUsIDkyLCAyNDAsIDIxNCwgNzksIDI0MywgOTcsIDU0LCAKLSAgICAyNDUsIDE0MSwgMjQ3LCAzNywgMjQ4LCAyMzQsIDMsIDIwMywgNDMsIDU0LCAyNDgsIDIzNCwgMywgMjQzLCA5NywgNTQsIAotICAgIDI0OCwgMjM0LCAzLCAyNDAsIDIzMCwgNTQsIDI0OCwgMjM0LCAzLCAyMTgsIDIwLCA1NCwgMjI0LCA1MywgMywgMjA0LCAxMSwgCi0gICAgMjQ2LCAxNzgsIDMsIDE3NywgMjA4LCA5MSwgMjUsIDIwMywgNDMsIDU0LCAyMTQsIDE3NCwgMjE4LCAyMjgsIDI0NSwgMjIwLCAKLSAgICAyNDcsIDIwNywgMjI0LCAxMDgsIDIzOSwgMjAyLCAyNDMsIDE1NCwgMjE5LCAyNDgsIDI0MywgMTU5LCAyNDIsIDEyLCAyNDAsIAotICAgIDExLCAyMzksIDE4MiwgMTcxLCAyNDAsIDExLCAyMzksIDE4MiwgMjE5LCAxNTQsIDMsIDI0NSwgOTUsIDIxOSwgMTU0LCAKLSAgICAyNDAsIDk1LCAyMDYsIDIyNCwgMjQ3LCA3MiwgMjA5LCAxODMsIDI0NywgNzIsIDI0NywgMzgsIDIzMSwgMzUsIDI0NiwgCi0gICAgMTc4LCAzLCAxNzcsIDIwOCwgOTAsIDI0NiwgMTc4LCAzLCAxODMsIDIwOCwgOTAsIDI0OCwgMjMxLCAyNDYsIDE3NywgMjQ2LCAKLSAgICAyMiwgMjE3LCAxNjEsIDIxNSwgMTkxLCAyMTcsIDE2MSwgMjE5LCA5NCwgMjExLCA1MywgMjE1LCAxMzMsIDIwOCwgODIsIAotICAgIDIxNSwgMTMzLCAyNDgsIDgsIDIxMCwgNywgMjI3LCAyMjcsIDIyMSwgMTU4LCAyMjEsIDE1OSwgMywgMjQ0LCA2NSwgMjQ1LCAKLSAgICAxNTEsIDI0NiwgMTYsIDI0OCwgOSwgMTcxLCAyNDgsIDksIDIzNywgMjQ0LCAyNDgsIDksIDI0OCwgMjYsIDI0OCwgOSwgCi0gICAgMjE5LCAyNDMsIDI0OCwgOSwgMjQ4LCA2LCAyMjMsIDg1LCAyNDksIDE0LCAyMTQsIDE4MiwgMjI0LCAyNDIsIDIwOSwgMTYyLCAKLSAgICAyMTYsIDE1MiwgMjE5LCAxNTIsIDI0MCwgNjUsIDIyNSwgMTcyLCAyMTQsIDIyMiwgMjUwLCAxOTUsIDIxNywgMTg1LCAyNTEsIAotICAgIDExOSwgMjI3LCAzLCAyNDYsIDE2MiwgMjI0LCAyNTQsIDIxOSwgMjEwLCAyMDgsIDk4LCAyMzEsIDQ2LCAyMDgsIDk4LCAKLSAgICAyMTksIDE2MSwgMjQxLCAyMzYsIDk3LCAyMzEsIDQzLCAyNDEsIDU3LCAyNDEsIDU4LCAzLCAxODMsIDUzLCA1NSwgMjQ2LCAKLSAgICAxNiwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAyMzksIDIyNSwgMjQ2LCAxNiwgMjI1LCAxMzcsIDMsIDIxNiwgMTg4LCAyMzksIAotICAgIDIyNSwgMTcxLCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMjYsIDI0OSwgCi0gICAgMjM5LCAyMjUsIDIxOCwgMjgsIDIxOCwgMjksIDIzNiwgNTMsIDIyMiwgMjEwLCAyMjQsIDgwLCAyMTgsIDE3NiwgMjI0LCAKLSAgICA4MCwgMjE4LCAxNzcsIDMsIDg2LCA1MywgMjUwLCA1MCwgMjI3LCAyMjIsIDIwNSwgMjI5LCAyMjQsIDc5LCAyMjQsIDgwLCAKLSAgICAyMTgsIDE3NywgMjIwLCA2OCwgMjIxLCAxOTIsIDIyNCwgODAsIDIxOCwgMTc1LCAyNTAsIDE5NiwgMywgMjQ4LCAyMjAsIAotICAgIDI0NywgNjUsIDI0NywgNjYsIDMsIDIzOSwgMjE4LCAyMDUsIDIyNiwgMjQ3LCA2NSwgMjA5LCAxNTksIDIxNiwgMjA0LCAKLSAgICAyMDUsIDIyNSwgMjQwLCA2LCAyMTcsIDIxNywgMjE4LCAzNSwgMjExLCA3NCwgMjE3LCAyNTQsIDI0OCwgMTYwLCAyMDcsIAotICAgIDEzOCwgODYsIDI1MCwgOTEsIDI0NiwgMTgsIDg2LCAyNSwgOTYsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjQ2LCAxOCwgCi0gICAgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkyLCAzLCA0MywgMTE4LCAyMTksIDE5OSwgMjQ2LCAxOCwgMTgzLCAKLSAgICAyNSwgMTc3LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTEsIDI1MCwgMTk0LCAxODMsIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgCi0gICAgMjUwLCA5MSwgMTI0LCAyNDcsIDIwNiwgOTcsIDEzOCwgMjQ3LCAyMDYsIDk3LCAyMTEsIDIxNywgMywgMjQ3LCA1OCwgOTUsIAotICAgIDIxMSwgMjE2LCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgMjExLCAyMTcsIDMsIDEyNiwgMjExLCAKLSAgICAyNDEsIDIwNCwgNzQsIDI0OCwgMjAzLCAyNDEsIDExNywgMjE4LCA4MSwgMjI3LCAyMTcsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAKLSAgICAyMTYsIDExLCAyMjUsIDE0OSwgMjM4LCA0OSwgMjI3LCA0MywgMywgMjMxLCAxNywgMjE5LCA5LCAyNDYsIDE2LCAyMjcsIAotICAgIDQzLCAzLCAyMjksIDE1MSwgMjI5LCAxNTEsIDIyNywgNDIsIDE3MSwgMjI3LCA0MiwgMjQ4LCAxMjgsIDI0OCwgMTI5LCAzLCAKLSAgICAyNDcsIDU4LCA5NSwgMjQ4LCA3LCAyMjcsIDEwNSwgOTcsIDIxNiwgMjA1LCAyNDcsIDE0NSwgMjQ5LCAyNiwgMywgOTYsIAotICAgIDUzLCA1NSwgMjQxLCA4NCwgMywgOTYsIDUzLCA1NSwgMjIwLCAzMiwgMywgMjQwLCAyMTIsIDEzMSwgMywgNDksIDUwLCA1MywgCi0gICAgNTUsIDIxMSwgMjQ5LCAzLCA4NiwgNTMsIDU1LCAyMDgsIDE0NSwgMywgMTc3LCA1MywgNTUsIDIyMSwgMTkyLCAxMTgsIAotICAgIDIwNiwgMjQ4LCAyNDEsIDE0MSwgOTcsIDIyOSwgMTQ4LCAyMDksIDE1MiwgMjMxLCAxMSwgMTYsIDM1LCA4LCA2LCAyMjcsIAotICAgIDE3MywgMjMxLCAxMSwgMTYsIDM1LCA4LCA1LCAyMjcsIDE3MywgMjMxLCAxMSwgMTYsIDM1LCAyMjEsIDQ1LCAyMzEsIDExLCAKLSAgICAxNiwgMzUsIDIxMCwgMTAyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDIyNywgMTczLCAyMzksIDI0OSwgMjQxLCAxMTcsIDIwOCwgCi0gICAgMTQwLCAyMDMsIDIyNSwgMjM3LCAxMzAsIDIyMSwgMjgsIDI1LCAyNDgsIDE0LCAyMzYsIDEzNCwgMjE4LCAxMDYsIDIyNCwgCi0gICAgMTUxLCAyMDksIDE2MCwgMjQ1LCAxMTIsIDI0OCwgMjUxLCAyMTIsIDg4LCAyMTgsIDYxLCAyMTEsIDk1LCAzLCAxMDEsIAotICAgIDI0MywgODUsIDIzMCwgMTY5LCAxNiwgMzUsIDI0OCwgMTQxLCAyMDgsIDgwLCAyNDEsIDEwMCwgNjIsIDUxLCAyNDcsIDE0NSwgCi0gICAgNjEsIDUxLCAyNDcsIDE0NSwgMjI4LCA4LCAyMTYsIDEzOCwgMjQ2LCA2MSwgMjI4LCA4LCAyNDgsIDI2LCAyNDYsIDYxLCAKLSAgICAyMjgsIDgsIDIxOSwgMjQzLCAyNDMsIDIyMSwgMjI4LCA4LCAyNDgsIDI2LCAyNDMsIDIyMSwgNSwgMjE5LCAyNDMsIDI0MywgCi0gICAgMjIxLCA1LCAyNDgsIDI2LCAyNDMsIDIyMSwgMjA2LCAyMjMsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCAyMTYsIAotICAgIDEzOCwgMjA4LCA4NSwgMjA2LCAyMjMsIDUsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCA1LCAyMTYsIDEzOCwgMjA4LCAKLSAgICA4NSwgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCAKLSAgICA2MSwgNDMsIDI0NSwgMTMxLCAyMTgsIDQ4LCAyNDUsIDEzMSwgMjE4LCA0OSwgMywgMjM3LCAxMzYsIDU2LCAyNDUsIDEzMSwgCi0gICAgMjE4LCA0OCwgMjIxLCAxNjIsIDQ5LCAyMTMsIDE0NiwgMywgMTI2LCAyNDMsIDgzLCAyMjEsIDE2MiwgNTAsIDIxMywgMTQ2LCAKLSAgICAzLCAxMjYsIDI0MywgODMsIDE2LCAzNSwgMjI1LCA4NywgMjQ2LCAxODQsIDYxLCA4LCAyNDUsIDEzMCwgNzksIDgsIDI0NSwgCi0gICAgMTMwLCAyNDYsIDIyMiwgMjQ1LCAxMzAsIDIyMCwgNDAsIDk3LCAyNDIsIDcyLCA3NiwgMjE5LCAzMiwgMjMwLCAzOSwgMjI0LCAKLSAgICAyMiwgMjEwLCA5NiwgMjI0LCAyMzcsIDMsIDIyMiwgNjQsIDI0NywgMjIyLCAyNDcsIDIzOCwgNzYsIDIzNSwgMjIyLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMTE4LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMTIwLCAyMjAsIDgzLCAyNDYsIDIwLCAKLSAgICAyNDAsIDEwMywgMTI2LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjM5LCAxNDcsIDIyMCwgODMsIDI0NiwgMjAsIAotICAgIDI0MCwgMTAzLCAyMzksIDIzMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMiwgODgsIDIyMCwgODMsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyMTMsIDExMiwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTQzLCAyMjAsIDgzLCAKLSAgICAyNDYsIDIwLCAyNDAsIDEwMywgMjIyLCA2NCwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwOSwgMTUzLCAyMjAsIAotICAgIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxMTMsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDE1NSwgCi0gICAgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMCwgMjcsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDEzMiwgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDIwOSwgMjYsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0MywgMjQ2LCAyMCwgMjQwLCAxMDMsIAotICAgIDIzOSwgMjMxLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4NCwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMywgMTEwLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjQxLCAxNDIsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDYyLCAyNDYsIDIwLCAyNDAsIDEwMywgCi0gICAgMjA5LCAxNTEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTUzLCA1MCwgCi0gICAgMjExLCAyMTYsIDUwLCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgNTAsIDIxMSwgMjE3LCAzLCAxMjYsIAotICAgIDIxMSwgMjQxLCAyMDQsIDc0LCAyNDcsIDE3NSwgMjQ3LCAxNzYsIDMsIDIxMSwgMjQxLCAyMDQsIDc0LCAyMTUsIDI1MSwgCi0gICAgMjQ4LCAxMjgsIDI0OCwgOSwgMjQ3LCA1NiwgMjI1LCAxMDksIDI0NiwgMTksIDYyLCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIAotICAgIDIyMSwgMTkyLCAyMTgsIDExMiwgMjM2LCAxMjYsIDIyNSwgMTIzLCAyMzEsIDUwLCAyNDcsIDE1MiwgMjEwLCAyMjgsIDIyNywgCi0gICAgMTY2LCAyMTIsIDUyLCAyMTksIDI0NSwgMjExLCAxNzgsIDI0NCwgMTUwLCAyMTAsIDIxMCwgMjExLCAyMDUsIDIxMSwgMjA2LCAKLSAgICAyMDQsIDU5LCAyMzAsIDgzLCA0OSwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgMjA5LCAxNjIsIDIxNiwgMTUzLCAKLSAgICAzLCAyMTksIDE1MywgNTAsIDIzNywgMTI0LCAyMDksIDE2MiwgMjE2LCAxNTIsIDYxLCAyMDgsIDEyNiwgMjA5LCAxNjEsIAotICAgIDYyLCAyMDgsIDEyNiwgMjA5LCAxNjEsIDIwOSwgMTYyLCAyMjAsIDMyLCAyMDgsIDE0NSwgNzYsIDIyNCwgNzYsIDI0NiwgCi0gICAgNDAsIDIyNCwgODAsIDIxOCwgMTc2LCAyNDksIDI2LCA3NiwgMjQxLCA1NywgMjExLCAxMDAsIDI0MSwgNTcsIDI0MSwgNTgsIAotICAgIDMsIDIyNywgMTMxLCAyMzksIDE4OSwgMjQxLCA1NywgMjE5LCAxMCwgMTE1LCAyMTEsIDEwMCwgMjQxLCA1NywgMjI3LCAKLSAgICAxMDQsIDIxOSwgOTMsIDYyLCAyMTcsIDE2MSwgMjI2LCAyNTEsIDQ5LCAyMTksIDgsIDIyNiwgMjUxLCA0OSwgMjQ4LCAyNDYsIAotICAgIDIxOSwgOSwgMjI2LCAyNTEsIDQ5LCAyMzksIDE0OSwgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIxOSwgMTQ3LCAyMjYsIDI1MSwgCi0gICAgNDksIDI0NSwgMTQ0LCA0OSwgMjAzLCAyMjAsIDIzNywgMTIzLCAyMDcsIDE3NCwgMjIwLCA1MiwgMjM3LCAxMjQsIDU0LCAKLSAgICAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjE2LCAxODgsIDIzNywgMTI0LCAKLSAgICAzLCAyMzksIDI1NCwgMjExLCAxOTUsIDIxNiwgNzMsIDIwOSwgMjAsIDExMiwgNTQsIDIxNiwgNzMsIDIwOSwgMjAsIDEyMSwgCi0gICAgNTQsIDIxNiwgNzMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjE2LCA3MywgMjM3LCAxMjQsIDMsIDEwMSwgMjQwLCAzLCAyNDAsIAotICAgIDIwMSwgMjE2LCAxODgsIDIzNywgMTI0LCAzLCAyMTksIDcxLCAyNDgsIDEwNCwgMTAxLCAyNSwgMjE1LCAyNTMsIDIzOSwgCi0gICAgMjUzLCA2MSwgMTIxLCAyMTgsIDU5LCA0OSwgMjM3LCAxMjQsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNDksIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNDksIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYyLCA0OSwgMjE4LCA1OSwgMjQ5LCAyMywgCi0gICAgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDExMiwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTEyLCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDExMiwgMjE4LCA1OSwgMjQ5LCAyMywgCi0gICAgMjMxLCAzNSwgNjIsIDEyMSwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjQ0LCAxMSwgMjQ1LCAyMjAsIDIyOSwgMTUwLCAKLSAgICAyNSwgMjI0LCA5LCAxMjYsIDIyMiwgMjE4LCAyNDUsIDIxOSwgMjE3LCAyMzEsIDIxOCwgNjcsIDI0NywgNzQsIDYyLCAyMzcsIAotICAgIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDYxLCAyMzcsIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAKLSAgICAxNTQsIDIxMiwgNywgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgMTU0LCAyMDksIDIyMSwgMjQ3LCAyMiwgMjA0LCA2LCAyMjksIAotICAgIDE0OSwgMTE4LCAyNDcsIDE0NiwgMjI0LCA5LCAxMjAsIDI0NywgMTQ2LCAyMjQsIDksIDEyNiwgMjQ3LCAxNDYsIDIyNCwgOSwgCi0gICAgMjA4LCAxMTcsIDM4LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIDIzNywgOTEsIDI0MywgMTU0LCAyMTQsIDE4NCwgMjE3LCAyMzIsIAotICAgIDIzNSwgMTU2LCAyNDAsIDY1LCAyMzUsIDE1NiwgMjE5LCAyNDgsIDI0MywgMTYwLCAyMzUsIDE1NiwgMjQzLCAxMDcsIDMsIAotICAgIDIwOSwgMTEyLCAyNDMsIDEwNywgMywgMjA5LCAxMTMsIDI1LCAyMTgsIDE2MSwgMjQzLCAxMDcsIDMsIDIxOCwgMTYxLCAKLSAgICAyMzksIDEzNSwgMywgMjE4LCAxNjEsIDIzOSwgMTM1LCAzLCAyMDgsIDIyNSwgMjM5LCAxMzUsIDMsIDI1MCwgMjMyLCAyMDMsIAotICAgIDE5NiwgNjIsIDIzOSwgMTgyLCAyMzksIDE4MiwgMTcxLCAyMzksIDE4MiwgMjQ3LCAzOCwgMTIyLCAyNDMsIDE0MCwgMjQ3LCAKLSAgICAzOCwgMjQwLCAxMSwgMjQ3LCAyMzMsIDI0MCwgMTEsIDI0NywgODcsIDI0MSwgOTQsIDIyMSwgMTYwLCAyNDEsIDk0LCAyMjEsIAotICAgIDE2MSwgMjE5LCAxNTMsIDI0MSwgOTQsIDIyMSwgMTYxLCAyMTksIDE1OSwgMjIxLCAxNjAsIDIyMSwgMTYxLCAyMTksIDE1MywgCi0gICAgMjIxLCAxNjEsIDIxOSwgMTU5LCAyNDEsIDk0LCAyNDMsIDEwNiwgMjQxLCA5NCwgMjE5LCAxNTMsIDI0MSwgOTQsIDIxOSwgCi0gICAgMTUxLCAyNDMsIDEwNiwgMjE5LCAxNTMsIDIxOSwgMTUxLCAyMDQsIDg1LCAyMTEsIDIwMiwgMjIxLCAxNjEsIDIxOSwgMTU5LCAKLSAgICAyMTEsIDIwMiwgMjQ3LCA3MywgMjE5LCAxNTksIDI0NCwgMTEsIDIwNCwgMTUsIDIyNCwgMTA1LCAyMjUsIDY0LCAyMTksIAotICAgIDIwMSwgMjQ2LCAxOCwgNTAsIDI1LCA0OSwgMjEzLCAxNDYsIDI1MCwgOTEsIDI0NywgNTgsIDIwMywgMTk2LCAyMzEsIDQxLCAKLSAgICAyMzksIDE3NiwgMjEyLCA3MiwgOTcsIDI0NCwgNjQsIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ1LCAyMjEsIDM4LCAyMjksIAotICAgIDE1MSwgMjE1LCAyMTQsIDIyMiwgMjEwLCAyMTksIDE1NCwgMywgNDMsIDIwOSwgMTEyLCAyMTEsIDY1LCAyNDYsIDE3NywgCi0gICAgMjQ0LCAxOTYsIDIyOSwgMzMsIDIyNywgOTgsIDIxMSwgMjE1LCAyMzcsIDY1LCAyMzEsIDUwLCAyMTIsIDEzNiwgMTI2LCAKLSAgICAyMTYsIDE2MywgNTUsIDEyNiwgMjE2LCAxNjMsIDU2LCAxMjYsIDIxNiwgMTYzLCAyMjcsIDIyMiwgMTI2LCAyMTYsIDE2MywgCi0gICAgMjE2LCAxNiwgNDksIDIxMSwgMjEyLCAyNDcsIDE5MiwgNTAsIDIxMSwgMjEyLCAyNDcsIDE5MiwgMTIwLCAyMTEsIDIxMiwgCi0gICAgMjQ3LCAxOTEsIDEyNiwgMjExLCAyMTIsIDI0NywgMTkxLCA0OSwgMjA5LCAzOCwgMjQ3LCAxOTIsIDUwLCAyMDksIDM4LCAKLSAgICAyNDcsIDE5MiwgNDksIDI1MCwgMjIwLCAyNDcsIDE5MiwgNTAsIDI1MCwgMjIwLCAyNDcsIDE5MiwgMjI0LCAzNCwgMjQ3LCAKLSAgICAxOTIsIDIyNywgMTMyLCAyMjQsIDM0LCAyNDcsIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzMsIDI0OCwgMjQ4LCA5OCwgMywgCi0gICAgMjQ4LCAyNDcsIDI0OCwgMjQ4LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDEzMiwgMjAzLCAxOTYsIDI0OCwgCi0gICAgMjQ4LCAyNiwgMTMyLCAyMDMsIDE5NiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMTMyLCAyMDMsIDE5NiwgMTU3LCAyNDYsIAotICAgIDE2OSwgODIsIDI0OCwgMjQ4LCA5OCwgMywgMjYsIDI0NiwgMTY4LCAyMDMsIDIzMywgMjI1LCAxMDYsIDIyNCwgMTQsIDIzOSwgCi0gICAgMTAzLCAyMDgsIDE2NywgMjA4LCAxMjIsIDIxMSwgODYsIDc2LCAyMjcsIDE0NiwgMjEyLCAxMzcsIDc2LCAyMzAsIDE3MCwgCi0gICAgMjIzLCAyNTEsIDIzNywgMjQxLCAyNDAsIDEwMiwgMjM3LCAyNDEsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgCi0gICAgMjQwLCAxMDMsIDMsIDIwOSwgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAKLSAgICAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyMTIsIDMwLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAKLSAgICAxMDMsIDMsIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAKLSAgICAyMjQsIDgsIDI1LCAyMDgsIDI0MywgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDEzNSwgMjEyLCAzMCwgCi0gICAgMjQwLCAxMDMsIDMsIDIzNiwgNTIsIDIwNCwgOCwgMjQwLCAxMDIsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAKLSAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDIxNCwgMjE0LCAyNDQsIDQ1LCAyMzksIDE3NCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMTIsIAotICAgIDMwLCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTAsIDIxMCwgMjEyLCAKLSAgICAyOSwgMjQwLCAxMDIsIDIyMiwgMjE2LCAyNDAsIDEwMiwgMjQwLCAyMDMsIDI0MCwgMTAyLCAyMDYsIDI1MywgMjQwLCAxMDIsIAotICAgIDI0MCwgMTAzLCAzLCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxOSwgMSwgMjQwLCAxMDIsIDI0NSwgMjEyLCAyNDAsIDEwMiwgCi0gICAgMjQ1LCAyMTMsIDI0MCwgMTAyLCAyMjksIDY1LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwOSwgMjMsIDM0LCAyMjksIDY2LCAKLSAgICAyMjksIDY1LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAKLSAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUwLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIAotICAgIDI1LCAyMDQsIDgsIDI0MCwgMTkxLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIDI1LCAyMDgsIDI0MywgMjQwLCAKLSAgICAxODQsIDI0MywgMTYxLCAyNDAsIDEwMiwgMjAzLCAyMzIsIDI0MCwgMTAyLCAyNTAsIDIxNCwgMjQwLCAxMDIsIDIxOCwgMTksIAotICAgIDI0MCwgMTAyLCAyNDUsIDExNCwgMjQwLCAxMDIsIDIxOCwgMjMyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDIyNywgMTcsIAotICAgIDc2LCAyMDgsIDYyLCAyNDMsIDE2MSwgMjQ3LCAxNDgsIDIxNiwgMTEzLCAyNDAsIDEwMiwgMjM5LCAxMTQsIDI0MCwgMTAzLCAKLSAgICAzLCAxNzEsIDIyNCwgNywgMjUwLCAyMTIsIDI0MCwgMTAyLCAyNDAsIDU4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQwLCAxMDIsIAotICAgIDIxMiwgNTMsIDI0MCwgMTAyLCAyMDgsIDIwNSwgMjQwLCAxMDIsIDIzNywgMjQyLCAyNDAsIDEwMiwgMjI3LCA0LCAyNDUsIAotICAgIDExNCwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjM2LCAyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAotICAgIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyNDAsIDEwMywgMjE0LCAxODYsIDIzMSwgNTAsIDI0MCwgCi0gICAgNTksIDI1MCwgNTYsIDI0MCwgMTAyLCAyMzksIDE5NCwgMjQwLCAxMDIsIDIxMiwgNTQsIDI0MCwgMTAyLCAyNDMsIDEzMywgCi0gICAgMjQwLCAxMDIsIDI0MCwgMTAzLCAyMDQsIDMsIDIyNCwgNywgMjQwLCAxMDMsIDMsIDIyNSwgMTIsIDIyNSwgNzYsIDIzNywgCi0gICAgMjQxLCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDksIAotICAgIDE3OSwgNzYsIDIzMCwgODUsIDIxMiwgMzAsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjEyLCAzMCwgCi0gICAgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIzNywgNTQsIDI0MCwgMTg0LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjAzLCAyMTgsIAotICAgIDIxMiwgMzEsIDIyOSwgNjUsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAyNDAsIDE4NCwgMjE4LCAxOSwgMjQ3LCAKLSAgICAxOCwgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDcsIDE4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQ3LCAxOCwgMjQwLCAxMDIsIAotICAgIDIxMiwgNDcsIDIzOSwgMTE0LCAyNDAsIDEwMiwgMjEyLCA0NywgMjEyLCAzMCwgMjQwLCAxMDIsIDIwNiwgMjE4LCAyNDAsIAotICAgIDEwMiwgMjQwLCAxMDMsIDMsIDIxNSwgMjEyLCAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIyMSwgMTkyLCAyMzgsIDI3LCAKLSAgICAyMzgsIDE2MCwgMjQwLCAxMDMsIDMsIDIyMCwgNTIsIDIzOCwgMTYwLCAyMTgsIDIzMCwgMjQ3LCAyMzksIDI0NCwgNTksIAotICAgIDIxNCwgMTY0LCAyMjQsIDQ4LCAyMzcsIDU3LCAyMjQsIDQ4LCAyMTEsIDIxOCwgMjI0LCA0OCwgMjM3LCA5MywgMjE4LCAKLSAgICAyMzAsIDIxNiwgMTg3LCAxMTgsIDIzNywgMTIzLCAyMTgsIDIzMCwgMjE2LCAxODcsIDI0NywgMjUxLCAyMzcsIDEwMCwgCi0gICAgMjMxLCA1MCwgMjQ2LCAyMjQsIDIxOCwgMjMwLCAyMzksIDExMywgMjE4LCAyMzAsIDMsIDIxOCwgMTksIDI0MCwgMTAyLCAKLSAgICAyMTgsIDIzMCwgMywgMjM5LCAxODMsIDIzNywgOTksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCi0gICAgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgCi0gICAgMjI5LCAyMDcsIDE3NCwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMTUzLCAyNDEsIAotICAgIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAKLSAgICAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIAotICAgIDIwNSwgMjEyLCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAKLSAgICAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIAotICAgIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCAKLSAgICA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjA0LCAKLSAgICA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjQxLCAKLSAgICAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAKLSAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIAotICAgIDIzMywgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAyMTIsIDIsIDIxNywgCi0gICAgNDAsIDUxLCAyMTksIDIzMywgMjEyLCAyLCAyMTcsIDQwLCA1MSwgMjE5LCAyMzQsIDIzMSwgNTAsIDYyLCAyMTEsIDE3NywgCi0gICAgOTYsIDIxNSwgMjE4LCAxNzcsIDIxNSwgMjE4LCA4NiwgMjE1LCAyMTgsIDE4MywgMjE1LCAyMTgsIDEzMiwgMzIsIDI0MCwgCi0gICAgMjUxLCAyMTksIDIzMywgNzksIDEzMiwgMzIsIDI0MCwgMjUxLCAyMTksIDIzMywgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgCi0gICAgMjMzLCA3OSwgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgMjMzLCA3OSwgMjUwLCAyMzYsIDIxOSwgMjMzLCAyMTAsIDE2OSwgCi0gICAgMjUwLCAyMzYsIDIxOSwgMjMzLCA0MSwgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDQxLCA3OSwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA0MSwgNzksIDEyNCwgNTIsIDI0NSwgCi0gICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjMwLCAyNDgsIDIxOSwgMjMzLCA0MSwgMjMwLCAyNDgsIDIxOSwgCi0gICAgMjMzLCA3OSwgNDEsIDIzMCwgMjQ4LCAyMTksIDIzMywgMjA1LCAyNDIsIDc5LCAyMTIsIDAsIDIwNSwgMjQyLCA3OSwgMjE2LCAKLSAgICA3NCwgMjEyLCAwLCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE2LCA3NCwgMjQ2LCAxNjcsIDI0OCwgMjAsIDIxNSwgMjE4LCAyMzcsIAotICAgIDM4LCAyMTEsIDgxLCAyMjcsIDQwLCAyMTYsIDE5MywgMjQ3LCAzOSwgMjM2LCAyNDAsIDIwOCwgMTEwLCAyMzYsIDI0MCwgCi0gICAgMjA4LCAxMTEsIDMsIDI0NywgMTc4LCAyMjEsIDE2NywgMjA4LCAxMTAsIDIyNCwgMjEzLCAxNTcsIDIxNiwgMTk0LCAyMTEsIAotICAgIDg3LCAyMDgsIDEwOCwgMjA4LCAxMDksIDI0NywgMzksIDI0NywgMTUzLCAyMjAsIDI5LCAyNDcsIDE1MywgMjA4LCA1OSwgCi0gICAgMjQ3LCAxNTQsIDIxMSwgNjEsIDIyNCwgMTA5LCAyNTAsIDI0MCwgMjM5LCAyNTAsIDI0MSwgNzcsIDIxOCwgNTEsIDI0NywgCi0gICAgMzksIDIyMCwgMjksIDIxOCwgNTEsIDI0NywgMzksIDIwOSwgMTk3LCAyMjAsIDI5LCAyMDksIDE5NywgMjUwLCAyMiwgMjIwLCAKLSAgICAyOSwgMjUwLCAyMiwgMjE2LCAxNDUsIDIwNiwgNDcsIDI0NCwgNDEsIDIwOCwgNTAsIDI1MCwgODYsIDIyNywgOCwgMjA4LCAKLSAgICAxMTYsIDIyNCwgNDIsIDIyNCwgMTMsIDIxNiwgMTkyLCAyMTAsIDE4MiwgMjE2LCAxOTIsIDIyNCwgMTMsIDI0NywgODYsIAotICAgIDI1MSwgOTUsIDIwOCwgMTA3LCAyMTIsIDI1MSwgMjE1LCAxODgsIDIxMSwgMjEwLCAyMzYsIDEwNiwgMjA4LCAxMTQsIDIyNywgCi0gICAgMTM0LCA4MCwgMjA4LCAxMTQsIDIyNywgMTM0LCAyNDUsIDE5OSwgNTQsIDIxOCwgNTEsIDI0NywgMjQsIDIxNiwgNjcsIAotICAgIDIyNywgMTM0LCAyMDgsIDgyLCAyMzksIDIyNiwgMjIwLCAzMiwgMjE4LCAzMCwgMjQzLCA4OCwgMjIxLCAxOTIsIDI0MSwgCi0gICAgNjMsIDU0LCAyMTIsIDI4LCA5NywgMjIxLCAxOTIsIDIxMiwgMjgsIDk3LCAyMTcsIDE2MCwgMjI3LCA4NywgMjMxLCA1MCwgCi0gICAgMjMwLCAxOTgsIDIxOCwgOTcsIDk3LCAyNDMsIDExNCwgMjIxLCAxNjYsIDIyNywgODcsIDk3LCAyMTgsIDI0LCAyMDQsIDgxLCAKLSAgICA5NywgMjIxLCAxODIsIDIwNCwgODEsIDk3LCAyNDgsIDgyLCAyMjEsIDE5MiwgMjQ4LCA4MSwgMjQ4LCA4MCwgMjI0LCAxMywgCi0gICAgMjQ4LCA4MCwgMjE5LCAyNSwgMjIxLCAxOTIsIDIxOSwgMjQsIDI0NiwgMTMyLCAyNDUsIDEyMywgMjI0LCAyMzYsIDk3LCAKLSAgICAyMDMsIDI0NywgOTcsIDIxNiwgODMsIDI0OSwgMjgsIDk3LCAyMDgsIDE2OCwgMjA0LCA4MSwgMjQ2LCAxMywgMjEyLCAyMDksIAotICAgIDI0OCwgMjA2LCAyNDgsIDIwNCwgMjE5LCA1NywgMjQ1LCAxODMsIDI0NSwgNzksIDI0OSwgNywgMjQ2LCA0MSwgNDksIDIyNiwgCi0gICAgMjI5LCAyMDgsIDg2LCAzLCAyMTUsIDE4OSwgMjQ1LCAxNjQsIDIxNywgMjIwLCA1NCwgNDMsIDIzMSwgMjUsIDIxMSwgMjM5LCAKLSAgICAyNDcsIDIzMSwgOTcsIDIzOCwgNTksIDk3LCAyNDUsIDE1NywgMjUsIDIyOCwgMTgsIDIxMiwgNTQsIDI1MSwgMTM1LCAyMTIsIAotICAgIDIzMSwgMjQ5LCA2LCAyNDgsIDEyNywgMjQ4LCAxMjgsIDI0OCwgMTUxLCAyMTgsIDk3LCA3NiwgMjAzLCAyMzEsIDIzNywgCi0gICAgMTMxLCAyNSwgMjAzLCAyMjUsIDIxMywgOCwgMjIwLCA1NiwgMjQyLCA0NiwgMjI0LCAxNywgMjE2LCAxOTMsIDIwOCwgMTE4LCAKLSAgICAyMjQsIDE5LCAyNDgsIDE5LCAyMDYsIDIyMywgMjI0LCAxMTksIDI1MSwgNTIsIDIwNiwgMjIzLCAyNTEsIDUyLCAyMDYsIAotICAgIDIyMywgNSwgMjUxLCA1MiwgNSwgMjUxLCA1MiwgMjIxLCAxNzEsIDI1MSwgNTIsIDI1MSwgNTMsIDI0NCwgMjUsIDI1MSwgCi0gICAgNTMsIDI1MCwgOTcsIDIxNCwgMjIxLCAyMjAsIDI5LCAyMzksIDI1MCwgMjQxLCA3NywgMjQzLCAyMTEsIDIyNywgNDAsIAotICAgIDIxOSwgNjAsIDIxMiwgMjUxLCAxMzYsIDE2LCAzNSwgMjE3LCAzNiwgMTM2LCAxNiwgMzUsIDI1MSwgNTQsIDEzNiwgMTYsIAotICAgIDM1LCAyMzksIDI0OSwgMTM2LCAxNiwgMzUsIDI0MSwgMTc5LCAxMzYsIDE2LCAzNSwgMjA0LCA4MCwgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgMTQ2LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgMTMyLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgCi0gICAgMTMxLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk1LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk0LCAKLSAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMDksIDEzNiwgMTYsIDM1LCAyMDUsIDIwOCwgMTM2LCAxNiwgMzUsIDIwNSwgMjA3LCAxMzYsIAotICAgIDE2LCAzNSwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCAyMTgsIDE4NCwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCA2MiwgMjEwLCAKLSAgICAyMjEsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTIsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTEsIAotICAgIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTAsIDEzNiwgMTYsIDM1LCAyNDYsIDY0LCAxMzYsIDE2LCAzNSwgMjE1LCAKLSAgICAxLCAxMzYsIDE2LCAzNSwgMjIyLCA1MSwgMTM2LCAxNiwgMzUsIDIwNSwgMTkzLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTIsIAotICAgIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAxLCAxMzYsIDE2LCAzNSwgMjE1LCAyMTksIDIxNSwgMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIzOCwgMzEsIDEzNiwgMTYsIDM1LCAyMTIsIDEzMywgMTM2LCAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOSwgMTM2LCAKLSAgICAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIAotICAgIDM1LCAyMTYsIDEyOCwgNzYsIDIzMCwgMjIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxNzQsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgCi0gICAgMjMwLCAyMTksIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIAotICAgIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAyNDUsIDEzNCwgNzYsIDI0NSwgMTcyLCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAzNSwgMjE1LCAyLCA3NiwgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAKLSAgICAzNSwgMjEwLCAyNTMsIDc2LCAyMTUsIDIsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDIwNiwgNDIsIDEzNiwgMTYsIAotICAgIDM1LCAyMDgsIDIxOCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMjcsIDIzMywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKLSAgICAyNTAsIDE4NywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgCi0gICAgMjE1LCAyLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI1MCwgMTg2LCAKLSAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMTAsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODYsIAotICAgIDEzNiwgMTYsIDM1LCAyMTYsIDEyOCwgNzYsIDI1MCwgMTg1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjcsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTYsIDEyNiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjQsIDEzNiwgMTYsIDM1LCAyNTEsIAotICAgIDE3LCAxMzYsIDE2LCAzNSwgMjUxLCAxNiwgMTM2LCAxNiwgMzUsIDIyNSwgOTcsIDEzNiwgMTYsIDM1LCAyMTUsIDcsIDEzNiwgCi0gICAgMTYsIDM1LCAyNTAsIDkwLCAxMzYsIDE2LCAzNSwgMjE2LCAxNTUsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NCwgMTM2LCAxNiwgCi0gICAgMzUsIDI1MCwgMjUsIDEzNiwgMTYsIDM1LCAyNDgsIDUyLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIwOSwgMjE2LCAxMzYsIAotICAgIDE2LCAzNSwgMjA5LCAyMTUsIDEzNiwgMTYsIDM1LCAyMTcsIDQyLCAyMjcsIDEyMywgMTM2LCAxNiwgMzUsIDI0OCwgMCwgCi0gICAgMTM2LCAxNiwgMzUsIDI0NywgMjU1LCAxMzYsIDE2LCAzNSwgMjQ3LCAyNTQsIDEzNiwgMTYsIDM1LCAyNTAsIDI0OSwgMTM2LCAKLSAgICAxNiwgMzUsIDIyMCwgNTUsIDEzNiwgMTYsIDM1LCAyMTEsIDE5OCwgMTM2LCAxNiwgMzUsIDIwOCwgMjE2LCAxMzYsIDE2LCAKLSAgICAzNSwgMjM3LCAyMTAsIDEzNiwgMTYsIDM1LCAyMDQsIDY4LCAxMzYsIDE2LCAzNSwgMjE4LCAxOCwgMTM2LCAxNiwgMzUsIAotICAgIDI0NywgNzAsIDEzNiwgMTYsIDM1LCAyMDcsIDE2NiwgMTM2LCAxNiwgMzUsIDI0NywgNDEsIDIyNCwgMjMsIDEzNiwgMTYsIAotICAgIDM1LCAyMTQsIDE5OSwgNzYsIDIzMCwgODcsIDEzNiwgMTYsIDM1LCAyNDcsIDgzLCAxMzYsIDE2LCAzNSwgMjA4LCA3OSwgCi0gICAgMTM2LCAxNiwgMzUsIDIxMSwgOTIsIDIwOCwgNzksIDEzNiwgMTYsIDM1LCAyMjcsIDM5LCAxMzYsIDE2LCAzNSwgMjEyLCAKLSAgICAxMSwgMTM2LCAxNiwgMzUsIDIwNiwgMjAyLCAxMzYsIDE2LCAzNSwgMjM2LCA1MCwgMjQyLCAyNywgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyMTgsIDI2LCAyNTAsIDcwLCAxMzYsIDE2LCAzNSwgMjQ3LCAyMTAsIDEzNiwgMTYsIAotICAgIDM1LCAyMTgsIDE3LCAyNDcsIDIxMCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ2LCAxMzYsIDE2LCAzNSwgMjExLCA0OCwgMjEwLCAKLSAgICAyMDIsIDIxMSwgNDcsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIDIwMiwgMjExLCA0NiwgMTM2LCAxNiwgMzUsIDIxMCwgCi0gICAgMjQ5LCAxMzYsIDE2LCAzNSwgMjE3LCAyNDcsIDEzNiwgMTYsIDM1LCAyNDMsIDE1MCwgMTM2LCAxNiwgMzUsIDI0MywgMTUyLCAKLSAgICAxMzYsIDE2LCAzNSwgMjQzLCAxNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDE2OSwgMTM2LCAxNiwgMzUsIDIxNywgMTU4LCAxMzYsIAotICAgIDE2LCAzNSwgMjQ1LCAxMjEsIDEzNiwgMTYsIDM1LCAyNDUsIDEyMCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE5LCAxMzYsIDE2LCAKLSAgICAzNSwgMjQ1LCAxMTgsIDEzNiwgMTYsIDM1LCAyNDUsIDExNywgMTM2LCAxNiwgMzUsIDI1MSwgMjksIDEzNiwgMTYsIDM1LCAKLSAgICAyNDgsIDIwNywgNzYsIDIyNSwgODEsIDEzNiwgMTYsIDM1LCAyNDgsIDIwNywgNzYsIDIwNiwgNzQsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTYsIDgxLCAxMzYsIDE2LCAzNSwgMjM2LCA0MiwgMTM2LCAxNiwgMzUsIDIyMiwgNzksIDEzNiwgMTYsIDM1LCAyNDQsIAotICAgIDEzMiwgMTM2LCAxNiwgMzUsIDIyNCwgMzcsIDEzNiwgMTYsIDM1LCAxNjIsIDI0MiwgNTksIDEzNiwgMTYsIDM1LCAxNjIsIAotICAgIDIxOSwgMjE0LCA2MiwgMjI3LCAyMTcsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCAyMzAsIDIwNCwgCi0gICAgNTAsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMzAsIDIwNCwgNTAsIDIwOCwgODUsIDYyLCAyNDIsIDY5LCAyMzAsIDIwNCwgCi0gICAgNTAsIDIwOCwgODUsIDYyLCAyMTIsIDQ3LCA1LCAyNDYsIDYxLCAyMjUsIDEwLCAyNiwgNjEsIDI0NiwgNjEsIDI2LCA2MSwgCi0gICAgMjQ2LCA2MSwgNzksIDYxLCAyNDYsIDYxLCAyMDUsIDI0MiwgNzksIDYxLCAyNDYsIDYxLCAyNDAsIDE5NSwgNzksIDYxLCAKLSAgICAyNDYsIDYxLCA2MSwgMjQ2LCA2MiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDYsIDYxLCAyMTUsIDE5MSwgMjA5LCAyMTcsIDYyLCAKLSAgICAyMDgsIDIxMywgMjExLCAxNzcsIDYyLCAyMTIsIDQ3LCA1LCAyMTEsIDE3NywgMTU3LCA2MSwgMjExLCAxNzcsIDIyNSwgMTAsIAotICAgIDYxLCAyMTEsIDE3NywgMjYsIDYxLCAyMTEsIDE3NywgNzksIDYxLCAyMTEsIDE3NywgMjA1LCAyNDIsIDc5LCA2MSwgMjExLCAKLSAgICAxNzcsIDI0MCwgMTk1LCA3OSwgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDIxMSwgCi0gICAgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjI1LCAxMCwgMjExLCAxNzcsIDUxLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAKLSAgICAyNDMsIDIyMSwgNjIsIDIwNSwgMjQyLCA1LCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAKLSAgICAyMjIsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgCi0gICAgMjI1LCAxMCwgMjQzLCAyMjEsIDI0MywgMjIyLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAyMjYsIDI0NiwgNjIsIDIwNSwgCi0gICAgMjQyLCA1LCAyMjYsIDI0NiwgNjIsIDIyNSwgMTAsIDUsIDIyNiwgMjQ2LCA2MSwgMjI2LCAyNDcsIDI0NSwgMTk1LCA2MiwgCi0gICAgNSwgMjI2LCAyNDYsIDIwOSwgNjMsIDMwLCAyNDUsIDEzMCwgMTU3LCAzMCwgMjQ1LCAxMzAsIDIyNSwgMTAsIDMwLCAyNDUsIAotICAgIDEzMCwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDI2LCAzMCwgMjQ1LCAxMzAsIDIwNSwgMjQyLCA3OSwgMzAsIDI0NSwgCi0gICAgMTMwLCAyNDAsIDE5NSwgNzksIDMwLCAyNDUsIDEzMCwgMjA5LCA2MywgMjE0LCAyNTQsIDE1NywgMjE0LCAyNTQsIDIyNSwgCi0gICAgMTAsIDIxNCwgMjU0LCAyNiwgMjE0LCAyNTQsIDc5LCAyMTQsIDI1NCwgMjA1LCAyNDIsIDc5LCAyMTQsIDI1NCwgMjQwLCAKLSAgICAxOTUsIDc5LCAyMTQsIDI1NCwgMTU3LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIDIzOSwgMjMzLCAKLSAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIDIzOSwgMjMzLCAyMTEsIAotICAgIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCA3OSwgCi0gICAgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAxNTcsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIDEwLCAKLSAgICAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjEyLCA4OCwgCi0gICAgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCAKLSAgICA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIAotICAgIDEwLCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAKLSAgICAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAKLSAgICAxNTcsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDEyNiwgCi0gICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjM5LCAKLSAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIzOSwgCi0gICAgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAKLSAgICAyMTYsIDc0LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIDIzMywgMjE4LCAKLSAgICA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMzksIDIzMywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIxMiwgODgsIAotICAgIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODgsIDIxOCwgCi0gICAgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMjUsIDEwLCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIAotICAgIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAKLSAgICA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgCi0gICAgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCAyMTgsIAotICAgIDExOCwgMjExLCA5NCwgOTYsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCA1LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA4NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIAotICAgIDk2LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCAKLSAgICA5NCwgODYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI4LCA4LCAyMDgsIAotICAgIDg2LCAyNTAsIDk0LCA4NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjI4LCA4LCAKLSAgICAyMDgsIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgCi0gICAgOTYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA4NiwgNTMsIDMsIAotICAgIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA5NiwgNTMsIDMsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIAotICAgIDk0LCA3OSwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA3OSwgMTc3LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyMjgsIDgsIAotICAgIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCAxODMsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDk2LCAyMDgsIDg0LCAKLSAgICA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA5NiwgCi0gICAgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCAKLSAgICA3NSwgOTYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCA5NiwgCi0gICAgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDk2LCAyMDgsIDg0LCAKLSAgICA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgCi0gICAgNzksIDIxMywgNzUsIDk2LCAyNDAsIDEsIDQ3LCAxNzcsIDI0MCwgMSwgNDcsIDg2LCAyNDAsIDEsIDQ3LCAxODMsIDI0MCwgCi0gICAgMSwgNDcsIDk2LCAxMDMsIDQ3LCAxNzcsIDEwMywgNDcsIDg2LCAxMDMsIDQ3LCAxODMsIDEwMywgNDcsIDk2LCAyNDUsIAotICAgIDIyMiwgNDcsIDE3NywgMjQ1LCAyMjIsIDQ3LCA4NiwgMjQ1LCAyMjIsIDQ3LCAxODMsIDI0NSwgMjIyLCA0NywgOTYsIDc5LCAKLSAgICAyNDUsIDIyMiwgNDcsIDE3NywgNzksIDI0NSwgMjIyLCA0NywgODYsIDc5LCAyNDUsIDIyMiwgNDcsIDE4MywgNzksIDI0NSwgCi0gICAgMjIyLCA0NywgOTYsIDc5LCA0NywgMTc3LCA3OSwgNDcsIDg2LCA3OSwgNDcsIDE4MywgNzksIDQ3LCA5NiwgNDEsIDQ3LCAKLSAgICAxNzcsIDQxLCA0NywgODYsIDQxLCA0NywgMTgzLCA0MSwgNDcsIDE1MywgMjA0LCA0NiwgNDEsIDQ3LCAxNTMsIDI0MSwgCi0gICAgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDEsIDQ3LCA0OSwgCi0gICAgNTAsIDQxLCA0NywgMTEyLCAxMjEsIDQxLCA0NywgMjA0LCAyNiwgOTYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKLSAgICAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTU3LCAxNTAsIDQ3LCAyMDQsIAotICAgIDI2LCAxNTMsIDIwNCwgNDYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIAotICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAxNTMsIDI0MSwgMTc2LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDIxMSwgMjM4LCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKLSAgICAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMjUsIDEwLCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIAotICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMjExLCAyMzgsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMTc3LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgODYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDc5LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgCi0gICAgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgODYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgCi0gICAgMTc2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCA5NiwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgMTc3LCAyMDgsIDg2LCAyNTAsIDk0LCA4NiwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCAyMDgsIDg2LCAyNTAsIAotICAgIDk0LCA5NiwgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDg2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA2MSwgNTMsIDIwNCwgNSwgMjA4LCAKLSAgICA4NiwgMjUwLCA5NCwgOTYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE3NywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIAotICAgIDI0OCwgODYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE4MywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgNzksIAotICAgIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCA3OSwgCi0gICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDExOCwgMjM3LCAxMzcsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMDksIAotICAgIDYwLCA5NiwgMjQ3LCAyNDUsIDYxLCA0NywgODYsIDI0NywgMjQ4LCAyMTMsIDc4LCA2MSwgNDcsIDk2LCAyMDgsIDE0NSwgCi0gICAgMjEzLCA3OCwgNjEsIDQ3LCA4NiwgMjA4LCAxNDUsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIyNywgMjE2LCA2MSwgNDcsIDg2LCAKLSAgICAyMTYsIDEwLCA2MSwgNDcsIDk2LCAyMTYsIDEwLCA2MSwgNDcsIDg2LCAyMjcsIDIxNiwgNjEsIDQ3LCA5NiwgMjQ5LCAyNCwgCi0gICAgMjEzLCA3NywgNjEsIDQ3LCA4NiwgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDQ3LCA5NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCAKLSAgICA0NywgODYsIDIzOSwgMTE3LCAyMTMsIDc3LCA2MSwgNDcsIDYxLCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTA1LCA2MSwgNTMsIAotICAgIDIxMywgNzYsIDIwNCwgMjQsIDEyMCwgMjA5LCA1NywgMjAyLCAyNiwgMjQwLCAxMDIsIDIyNCwgNTIsIDI0MCwgMTAyLCAKLSAgICAyNDAsIDEwMywgMywgMjA5LCA4MCwgMjIyLCAyMjIsIDI0MCwgMTAyLCAyMDksIDYyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAotICAgIDIzNywgNjMsIDIxNSwgMjIxLCAyNDAsIDEwMiwgMjM2LCAyMCwgMjQwLCAxMDIsIDIsIDc2LCAyMDksIDkzLCAyMzYsIDUyLCAKLSAgICAyNDUsIDE0NiwgMjI3LCAxMDIsIDI0MCwgMTAyLCAyMTQsIDE4OCwgMjA3LCAxNzksIDIwNiwgMjQwLCAyNDAsIDEwMiwgCi0gICAgMjQ2LCAxNjEsIDIwNCwgNTcsIDEyLCAxNSwgMjM1LCAxNTIsIDEyLCAxNSwgMjM1LCAxNTEsIDEyLCAxNSwgMjM1LCAxNTAsIAotICAgIDEyLCAxNSwgMjM1LCAxNDksIDEyLCAxNSwgMjM1LCAxNDgsIDEyLCAxNSwgMjM1LCAxNDcsIDEyLCAxNSwgMjM1LCAxNDYsIAotICAgIDEyLCAxNSwgMjM1LCAxNDUsIDEyLCAxNSwgMjM1LCAxNDQsIDEyLCAxNSwgMjM1LCAxNDMsIDEyLCAxNSwgMjM1LCAxNDIsIAotICAgIDEyLCAxNSwgMjM1LCAxNDEsIDEyLCAxNSwgMjM1LCAxNDAsIDEyLCAxNSwgMjM1LCAxMzksIDEyLCAxNSwgMjM1LCAxMzgsIAotICAgIDEyLCAxNSwgMjM1LCAxMzcsIDEyLCAxNSwgMjM1LCAxMzYsIDEyLCAxNSwgMjM1LCAxMzUsIDEyLCAxNSwgMjM1LCAxMzQsIAotICAgIDEyLCAxNSwgMjM1LCAxMzMsIDEyLCAxNSwgMjM1LCAxMzIsIDEyLCAxNSwgMjM1LCAxMzEsIDEyLCAxNSwgMjM1LCAxMzAsIAotICAgIDEyLCAxNSwgMjM1LCAxMjksIDEyLCAxNSwgMjM1LCAxMjgsIDEyLCAxNSwgMjM1LCAxMjcsIDEyLCAxNSwgMjM1LCAxMjYsIAotICAgIDEyLCAxNSwgMjM1LCAxMjUsIDEyLCAxNSwgMjM1LCAxMjQsIDEyLCAxNSwgMjM1LCAxMjMsIDEyLCAxNSwgMjM1LCAxMjIsIAotICAgIDEyLCAxNSwgMjM1LCAxMjEsIDEyLCAxNSwgMjM1LCAxMjAsIDEyLCAxNSwgMjM1LCAxMTksIDEyLCAxNSwgMjM1LCAxMTgsIAotICAgIDEyLCAxNSwgMjM1LCAxMTcsIDEyLCAxNSwgMjM1LCAxMTYsIDEyLCAxNSwgMjM1LCAxMTUsIDEyLCAxNSwgMjM1LCAxMTQsIAotICAgIDEyLCAxNSwgMjM1LCAxMTMsIDEyLCAxNSwgMjM1LCAxMTIsIDEyLCAxNSwgMjM1LCAxMTEsIDEyLCAxNSwgMjM1LCAxMTAsIAotICAgIDEyLCAxNSwgMjM1LCAxMDksIDEyLCAxNSwgMjM1LCAxMDgsIDEyLCAxNSwgMjM1LCAxMDcsIDEyLCAxNSwgMjM1LCAxMDYsIAotICAgIDEyLCAxNSwgMjM1LCAxMDUsIDEyLCAxNSwgMjM1LCAxMDQsIDEyLCAxNSwgMjM1LCAxMDMsIDEyLCAxNSwgMjM1LCAxMDIsIAotICAgIDEyLCAxNSwgMjM1LCAxMDEsIDEyLCAxNSwgMjM1LCAxMDAsIDEyLCAxNSwgMjM1LCA5OSwgMTIsIDE1LCAyMzUsIDk4LCAxMiwgCi0gICAgMTUsIDIzNSwgOTcsIDEyLCAxNSwgMjM1LCA5NiwgMTIsIDE1LCAyMzUsIDk1LCAxMiwgMTUsIDIzNSwgOTQsIDEyLCAxNSwgCi0gICAgMjM1LCA5MywgMTIsIDE1LCAyMzUsIDkyLCAxMiwgMTUsIDIzNSwgOTEsIDEyLCAxNSwgMjM1LCA5MCwgMTIsIDE1LCAyMzUsIAotICAgIDg5LCAxMiwgMTUsIDIzNSwgODgsIDEyLCAxNSwgMjM1LCA4NywgMTIsIDE1LCAyMzUsIDg2LCAxMiwgMTUsIDIzNSwgODUsIAotICAgIDEyLCAxNSwgMjM1LCA4NCwgMTIsIDE1LCAyMzUsIDgzLCAxMiwgMTUsIDIzNSwgODIsIDEyLCAxNSwgMjM1LCA4MSwgMTIsIAotICAgIDE1LCAyMzUsIDgwLCAxMiwgMTUsIDIzNSwgNzksIDEyLCAxNSwgMjM1LCA3OCwgMTIsIDE1LCAyMzUsIDc3LCAxMiwgMTUsIAotICAgIDIzNSwgNzYsIDEyLCAxNSwgMjM1LCA3NSwgMTIsIDE1LCAyMzUsIDc0LCAxMiwgMTUsIDIzNSwgNzMsIDEyLCAxNSwgMjM1LCAKLSAgICA3MiwgMTIsIDE1LCAyMzUsIDcxLCAxMiwgMTUsIDIzNSwgNzAsIDEyLCAxNSwgMjM1LCA2OSwgMTIsIDE1LCAyMzUsIDY4LCAKLSAgICAxMiwgMTUsIDIzNSwgNjcsIDEyLCAxNSwgMjM1LCA2NiwgMTIsIDE1LCAyMzUsIDY1LCAxMiwgMTUsIDIzNSwgNjQsIDEyLCAKLSAgICAxNSwgMjM1LCA2MywgMTIsIDE1LCAyMzUsIDYyLCAxMiwgMTUsIDIzNSwgNjEsIDEyLCAxNSwgMjM1LCA2MCwgMTIsIDE1LCAKLSAgICAyMzUsIDU5LCAxMiwgMTUsIDIzNSwgNTgsIDEyLCAxNSwgMjM1LCA1NywgMTIsIDE1LCAyMzUsIDU2LCAxMiwgMTUsIDIzNSwgCi0gICAgNTUsIDEyLCAxNSwgMjM1LCA1NCwgMTIsIDE1LCAyMzUsIDUzLCAxMiwgMTUsIDIzNSwgNTIsIDEyLCAxNSwgMjM1LCA1MSwgCi0gICAgMTIsIDE1LCAyMzUsIDUwLCAxMiwgMTUsIDIzNSwgNDksIDEyLCAxNSwgMjM1LCA0OCwgMTIsIDE1LCAyMzUsIDQ3LCAxMiwgCi0gICAgMTUsIDIzNSwgNDYsIDEyLCAxNSwgMjM1LCA0NSwgMTIsIDE1LCAyMzUsIDQ0LCAxMiwgMTUsIDIzNSwgNDMsIDEyLCAxNSwgCi0gICAgMjM1LCA0MiwgMTIsIDE1LCAyMzUsIDQxLCAxMiwgMTUsIDIzNSwgNDAsIDEyLCAxNSwgMjM1LCAzOSwgMTIsIDE1LCAyMzUsIAotICAgIDM4LCAxMiwgMTUsIDIzNSwgMzcsIDEyLCAxNSwgMjM1LCAzNiwgMTIsIDE1LCAyMzUsIDM1LCAxMiwgMTUsIDIzNSwgMzQsIAotICAgIDEyLCAxNSwgMjM1LCAzMywgMTIsIDE1LCAyMzUsIDMyLCAxMiwgMTUsIDIzNSwgMzEsIDEyLCAxNSwgMjM1LCAzMCwgMTIsIAotICAgIDE1LCAyMzUsIDI5LCAxMiwgMTUsIDIzNSwgMjgsIDEyLCAxNSwgMjM1LCAyNywgMTIsIDE1LCAyMzUsIDI2LCAxMiwgMTUsIAotICAgIDIzNSwgMjUsIDEyLCAxNSwgMjM1LCAyNCwgMTIsIDE1LCAyMzUsIDIzLCAxMiwgMTUsIDIzNSwgMjIsIDEyLCAxNSwgMjM1LCAKLSAgICAyMSwgMTIsIDE1LCAyMzUsIDIwLCAxMiwgMTUsIDIzNSwgMTksIDEyLCAxNSwgMjM1LCAxOCwgMTIsIDE1LCAyMzUsIDE3LCAKLSAgICAxMiwgMTUsIDIzNSwgMTYsIDEyLCAxNSwgMjM1LCAxNSwgMTIsIDE1LCAyMzUsIDE0LCAxMiwgMTUsIDIzNSwgMTMsIDEyLCAKLSAgICAxNSwgMjM1LCAxMiwgMTIsIDE1LCAyMzUsIDExLCAxMiwgMTUsIDIzNSwgMTAsIDEyLCAxNSwgMjM1LCA5LCAxMiwgMTUsIAotICAgIDIzNSwgOCwgMTIsIDE1LCAyMzUsIDcsIDEyLCAxNSwgMjM1LCA2LCAxMiwgMTUsIDIzNSwgNSwgMTIsIDE1LCAyMzUsIDQsIAotICAgIDEyLCAxNSwgMjM1LCAzLCAxMiwgMTUsIDIzNSwgMiwgMTIsIDE1LCAyMzUsIDEsIDEyLCAxNSwgMjM1LCAwLCAxMiwgMTUsIAotICAgIDIzNCwgMjU1LCAxMiwgMTUsIDIzNCwgMjU0LCAxMiwgMTUsIDIzNCwgMjUzLCAxMiwgMTUsIDIzNCwgMjUyLCAxMiwgMTUsIAotICAgIDIzNCwgMjUxLCAxMiwgMTUsIDIzNCwgMjUwLCAxMiwgMTUsIDIzNCwgMjQ5LCAxMiwgMTUsIDIzNCwgMjQ4LCAxMiwgMTUsIAotICAgIDIzNCwgMjQ3LCAxMiwgMTUsIDIzNCwgMjQ2LCAxMiwgMTUsIDIzNCwgMjQ1LCAxMiwgMTUsIDIzNCwgMjQ0LCAxMiwgMTUsIAotICAgIDIzNCwgMjQzLCAxMiwgMTUsIDIzNCwgMjQyLCAxMiwgMTUsIDIzNCwgMjQxLCAxMiwgMTUsIDIzNCwgMjQwLCAxMiwgMTUsIAotICAgIDIzNCwgMjM5LCAxMiwgMTUsIDIzNCwgMjM4LCAxMiwgMTUsIDIzNCwgMjM3LCAxMiwgMTUsIDIzNCwgMjM2LCAxMiwgMTUsIAotICAgIDIzNCwgMjM1LCAxMiwgMTUsIDIzNCwgMjM0LCAxMiwgMTUsIDIzNCwgMjMzLCAxMiwgMTUsIDIzNCwgMjMyLCAxMiwgMTUsIAotICAgIDIzNCwgMjMxLCAxMiwgMTUsIDIzNCwgMjMwLCAxMiwgMTUsIDIzNCwgMjI5LCAxMiwgMTUsIDIzNCwgMjI4LCAxMiwgMTUsIAotICAgIDIzNCwgMjI3LCAxMiwgMTUsIDIzNCwgMjI2LCAxMiwgMTUsIDIzNCwgMjI1LCAxMiwgMTUsIDIzNCwgMjI0LCAxMiwgMTUsIAotICAgIDIzNCwgMjIzLCAxMiwgMTUsIDIzNCwgMjIyLCAxMiwgMTUsIDIzNCwgMjIxLCAxMiwgMTUsIDIzNCwgMjIwLCAxMiwgMTUsIAotICAgIDIzNCwgMjE5LCAxMiwgMTUsIDIzNCwgMjE4LCAxMiwgMTUsIDIzNCwgMjE3LCAxMiwgMTUsIDIzNCwgMjE2LCAxMiwgMTUsIAotICAgIDIzNCwgMjE1LCAxMiwgMTUsIDIzNCwgMjE0LCAxMiwgMTUsIDIzNCwgMjEzLCAxMiwgMTUsIDIzNCwgMjEyLCAxMiwgMTUsIAotICAgIDIzNCwgMjExLCAxMiwgMTUsIDIzNCwgMjEwLCAxMiwgMTUsIDIzNCwgMjA5LCAxMiwgMTUsIDIzNCwgMjA4LCAxMiwgMTUsIAotICAgIDIzNCwgMjA3LCAxMiwgMTUsIDIzNCwgMjA2LCAxMiwgMTUsIDIzNCwgMjA1LCAxMiwgMTUsIDIzNCwgMjA0LCAxMiwgMTUsIAotICAgIDIzNCwgMjAzLCAxMiwgMTUsIDIzNCwgMjAyLCAxMiwgMTUsIDIzNCwgMjAxLCAxMiwgMTUsIDIzNCwgMjAwLCAxMiwgMTUsIAotICAgIDIzNCwgMTk5LCAxMiwgMTUsIDIzNCwgMTk4LCAxMiwgMTUsIDIzNCwgMTk3LCAxMiwgMTUsIDIzNCwgMTk2LCAxMiwgMTUsIAotICAgIDIzNCwgMTk1LCAxMiwgMTUsIDIzNCwgMTk0LCAxMiwgMTUsIDIzNCwgMTkzLCAxMiwgMTUsIDIzNCwgMTkyLCAxMiwgMTUsIAotICAgIDIzNCwgMTkxLCAxMiwgMTUsIDIzNCwgMTkwLCAxMiwgMTUsIDIzNCwgMTg5LCAxMiwgMTUsIDIzNCwgMTg4LCAxMiwgMTUsIAotICAgIDIzNCwgMTg3LCAxMiwgMTUsIDIzNCwgMTg2LCAxMiwgMTUsIDIzNCwgMTg1LCAxMiwgMTUsIDIzNCwgMTg0LCAxMiwgMTUsIAotICAgIDIzNCwgMTgzLCAxMiwgMTUsIDIzNCwgMTgyLCAxMiwgMTUsIDIzNCwgMTgxLCAxMiwgMTUsIDIzNCwgMTgwLCAxMiwgMTUsIAotICAgIDIzNCwgMTc5LCAxMiwgMTUsIDIzNCwgMTc4LCAxMiwgMTUsIDIzNCwgMTc3LCAxMiwgMTUsIDIzNCwgMTc2LCAxMiwgMTUsIAotICAgIDIzNCwgMTc1LCAxMiwgMTUsIDIzNCwgMTc0LCAxMiwgMTUsIDIzNCwgMTczLCAxMiwgMTUsIDIzNCwgMTcyLCAxMiwgMTUsIAotICAgIDIzNCwgMTcxLCAxMiwgMTUsIDIzNCwgMTcwLCAxMiwgMTUsIDIzNCwgMTY5LCAxMiwgMTUsIDIzNCwgMTY4LCAxMiwgMTUsIAotICAgIDIzNCwgMTY3LCAxMiwgMTUsIDIzNCwgMTY2LCAxMiwgMTUsIDIzNCwgMTY1LCAxMiwgMTUsIDIzNCwgMTY0LCAxMiwgMTUsIAotICAgIDIzNCwgMTYzLCAxMiwgMTUsIDIzNCwgMTYyLCAxMiwgMTUsIDIzNCwgMTYxLCAxMiwgMTUsIDIzNCwgMTYwLCAxMiwgMTUsIAotICAgIDIzNCwgMTU5LCAxMiwgMTUsIDIzNCwgMTU4LCAxMiwgMTUsIDIzNCwgMTU3LCAxMiwgMTUsIDIzNCwgMTU2LCAxMiwgMTUsIAotICAgIDIzNCwgMTU1LCAxMiwgMTUsIDIzNCwgMTU0LCAxMiwgMTUsIDIzNCwgMTUzLCAxMiwgMTUsIDIzNCwgMTUyLCAxMiwgMTUsIAotICAgIDIzNCwgMTUxLCAxMiwgMTUsIDIzNCwgMTUwLCAxMiwgMTUsIDIzNCwgMTQ5LCAxMiwgMTUsIDIzNCwgMTQ4LCAxMiwgMTUsIAotICAgIDIzNCwgMTQ3LCAxMiwgMTUsIDIzNCwgMTQ2LCAxMiwgMTUsIDIzNCwgMTQ1LCAxMiwgMTUsIDIzNCwgMTQ0LCAxMiwgMTUsIAotICAgIDIzNCwgMTQzLCAxMiwgMTUsIDIzNCwgMTQyLCAxMiwgMTUsIDIzNCwgMTQxLCAxMiwgMTUsIDIzNCwgMTQwLCAxMiwgMTUsIAotICAgIDIzNCwgMTM5LCAxMiwgMTUsIDIzNCwgMTM4LCAxMiwgMTUsIDIzNCwgMTM3LCAxMiwgMTUsIDIzNCwgMTM2LCAxMiwgMTUsIAotICAgIDIzNCwgMTM1LCAxMiwgMTUsIDIzNCwgMTM0LCAxMiwgMTUsIDIzNCwgMTMzLCAxMiwgMTUsIDIzNCwgMTMyLCAxMiwgMTUsIAotICAgIDIzNCwgMTMxLCAxMiwgMTUsIDIzNCwgMTMwLCAxMiwgMTUsIDIzNCwgMTI5LCAxMiwgMTUsIDIzNCwgMTI4LCAxMiwgMTUsIAotICAgIDIzNCwgMTI3LCAxMiwgMTUsIDIzNCwgMTI2LCAxMiwgMTUsIDIzNCwgMTI1LCAxMiwgMTUsIDIzNCwgMTI0LCAxMiwgMTUsIAotICAgIDIzNCwgMTIzLCAxMiwgMTUsIDIzNCwgMTIyLCAxMiwgMTUsIDIzNCwgMTIxLCAxMiwgMTUsIDIzNCwgMTIwLCAxMiwgMTUsIAotICAgIDIzNCwgMTE5LCAxMiwgMTUsIDIzNCwgMTE4LCAxMiwgMTUsIDIzNCwgMTE3LCAxMiwgMTUsIDIzNCwgMTE2LCAxMiwgMTUsIAotICAgIDIzNCwgMTE1LCAxMiwgMTUsIDIzNCwgMTE0LCAxMiwgMTUsIDIzNCwgMTEzLCAxMiwgMTUsIDIzNCwgMTEyLCAxMiwgMTUsIAotICAgIDIzNCwgMTExLCAxMiwgMTUsIDIzNCwgMTEwLCAxMiwgMTUsIDIzNCwgMTA5LCAxMiwgMTUsIDIzNCwgMTA4LCAxMiwgMTUsIAotICAgIDIzNCwgMTA3LCAxMiwgMTUsIDIzNCwgMTA2LCAxMiwgMTUsIDIzNCwgMTA1LCAxMiwgMTUsIDIzNCwgMTA0LCAxMiwgMTUsIAotICAgIDIzNCwgMTAzLCAxMiwgMTUsIDIzNCwgMTAyLCAxMiwgMTUsIDIzNCwgMTAxLCAxMiwgMTUsIDIzNCwgMTAwLCAxMiwgMTUsIAotICAgIDIzNCwgOTksIDEyLCAxNSwgMjM0LCA5OCwgMTIsIDE1LCAyMzQsIDk3LCAxMiwgMTUsIDIzNCwgOTYsIDEyLCAxNSwgMjM0LCAKLSAgICA5NSwgMTIsIDE1LCAyMzQsIDk0LCAxMiwgMTUsIDIzNCwgOTMsIDEyLCAxNSwgMjM0LCA5MiwgMTIsIDE1LCAyMzQsIDkxLCAKLSAgICAxMiwgMTUsIDIzNCwgOTAsIDEyLCAxNSwgMjM0LCA4OSwgMTIsIDE1LCAyMzQsIDg4LCAxMiwgMTUsIDIzNCwgODcsIDEyLCAKLSAgICAxNSwgMjM0LCA4NiwgMTIsIDE1LCAyMzQsIDg1LCAxMiwgMTUsIDIzNCwgODQsIDEyLCAxNSwgMjM0LCA4MywgMTIsIDE1LCAKLSAgICAyMzQsIDgyLCAxMiwgMTUsIDIzNCwgODEsIDEyLCAxNSwgMjM0LCA4MCwgMTIsIDE1LCAyMzQsIDc5LCAxMiwgMTUsIDIzNCwgCi0gICAgNzgsIDEyLCAxNSwgMjM0LCA3NywgMTIsIDE1LCAyMzQsIDc2LCAxMiwgMTUsIDIzNCwgNzUsIDEyLCAxNSwgMjM0LCA3NCwgCi0gICAgMTIsIDE1LCAyMzQsIDczLCAxMiwgMTUsIDIzNCwgNzIsIDEyLCAxNSwgMjM0LCA3MSwgMTIsIDE1LCAyMzQsIDcwLCAxMiwgCi0gICAgMTUsIDIzNCwgNjksIDEyLCAxNSwgMjM0LCA2OCwgMTIsIDE1LCAyMzQsIDY3LCAxMiwgMTUsIDIzNCwgNjYsIDEyLCAxNSwgCi0gICAgMjM0LCA2NSwgMTIsIDE1LCAyMzQsIDY0LCAxMiwgMTUsIDIzNCwgNjMsIDEyLCAxNSwgMjM0LCA2MiwgMTIsIDE1LCAyMzQsIAotICAgIDYxLCAxMiwgMTUsIDIzNCwgNjAsIDEyLCAxNSwgMjM0LCA1OSwgMTIsIDE1LCAyMzQsIDU4LCAxMiwgMTUsIDIzNCwgNTcsIAotICAgIDEyLCAxNSwgMjM0LCA1NiwgMTIsIDE1LCAyMzQsIDU1LCAxMiwgMTUsIDIzNCwgNTQsIDEyLCAxNSwgMjM0LCA1MywgMTIsIAotICAgIDE1LCAyMzQsIDUyLCAxMiwgMTUsIDIzNCwgNTEsIDEyLCAxNSwgMjM0LCA1MCwgMTIsIDE1LCAyMzQsIDQ5LCAxMiwgMTUsIAotICAgIDIzNCwgNDgsIDEyLCAxNSwgMjM0LCA0NywgMTIsIDE1LCAyMzQsIDQ2LCAxMiwgMTUsIDIzNCwgNDUsIDEyLCAxNSwgMjM0LCAKLSAgICA0NCwgMTIsIDE1LCAyMzQsIDQzLCAxMiwgMTUsIDIzNCwgNDIsIDEyLCAxNSwgMjM0LCA0MSwgMTIsIDE1LCAyMzQsIDQwLCAKLSAgICAxMiwgMTUsIDIzNCwgMzksIDEyLCAxNSwgMjM0LCAzOCwgMTIsIDE1LCAyMzQsIDM3LCAxMiwgMTUsIDIzNCwgMzYsIDEyLCAKLSAgICAxNSwgMjM0LCAzNSwgMTIsIDE1LCAyMzQsIDM0LCAxMiwgMTUsIDIzNCwgMzMsIDEyLCAxNSwgMjM0LCAzMiwgMTIsIDE1LCAKLSAgICAyMzQsIDMxLCAxMiwgMTUsIDIzNCwgMzAsIDEyLCAxNSwgMjM0LCAyOSwgMTIsIDE1LCAyMzQsIDI4LCAxMiwgMTUsIDIzNCwgCi0gICAgMjcsIDEyLCAxNSwgMjM0LCAyNiwgMTIsIDE1LCAyMzQsIDI1LCAxMiwgMTUsIDIzNCwgMjQsIDEyLCAxNSwgMjM0LCAyMywgCi0gICAgMTIsIDE1LCAyMzQsIDIyLCAxMiwgMTUsIDIzNCwgMjEsIDEyLCAxNSwgMjM0LCAyMCwgMTIsIDE1LCAyMzQsIDE5LCAxMiwgCi0gICAgMTUsIDIzNCwgMTgsIDEyLCAxNSwgMjM0LCAxNywgMTIsIDE1LCAyMzQsIDE2LCAxMiwgMTUsIDIzNCwgMTUsIDEyLCAxNSwgCi0gICAgMjM0LCAxNCwgMTIsIDE1LCAyMzQsIDEzLCAxMiwgMTUsIDIzNCwgMTIsIDEyLCAxNSwgMjM0LCAxMSwgMTIsIDE1LCAyMzQsIAotICAgIDEwLCAxMiwgMTUsIDIzNCwgOSwgMTIsIDE1LCAyMzQsIDgsIDEyLCAxNSwgMjM0LCA3LCAxMiwgMTUsIDIzNCwgNiwgMTIsIAotICAgIDE1LCAyMzQsIDUsIDEyLCAxNSwgMjM0LCA0LCAxMiwgMTUsIDIzNCwgMywgMTIsIDE1LCAyMzQsIDIsIDEyLCAxNSwgMjM0LCAKLSAgICAxLCAxMiwgMTUsIDIzNCwgMCwgMTIsIDE1LCAyMzMsIDI1NSwgMTIsIDE1LCAyMzMsIDI1NCwgMTIsIDE1LCAyMzMsIDI1MywgCi0gICAgMTIsIDE1LCAyMzMsIDI1MiwgMTIsIDE1LCAyMzMsIDI1MSwgMTIsIDE1LCAyMzMsIDI1MCwgMTIsIDE1LCAyMzMsIDI0OSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0OCwgMTIsIDE1LCAyMzMsIDI0NywgMTIsIDE1LCAyMzMsIDI0NiwgMTIsIDE1LCAyMzMsIDI0NSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0NCwgMTIsIDE1LCAyMzMsIDI0MywgMTIsIDE1LCAyMzMsIDI0MiwgMTIsIDE1LCAyMzMsIDI0MSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0MCwgMTIsIDE1LCAyMzMsIDIzOSwgMTIsIDE1LCAyMzMsIDIzOCwgMTIsIDE1LCAyMzMsIDIzNywgCi0gICAgMTIsIDE1LCAyMzMsIDIzNiwgMTIsIDE1LCAyMzMsIDIzNSwgMTIsIDE1LCAyMzMsIDIzNCwgMTIsIDE1LCAyMzMsIDIzMywgCi0gICAgMTIsIDE1LCAyMzMsIDIzMiwgMTIsIDE1LCAyMzMsIDIzMSwgMTIsIDE1LCAyMzMsIDIzMCwgMTIsIDE1LCAyMzMsIDIyOSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyOCwgMTIsIDE1LCAyMzMsIDIyNywgMTIsIDE1LCAyMzMsIDIyNiwgMTIsIDE1LCAyMzMsIDIyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyNCwgMTIsIDE1LCAyMzMsIDIyMywgMTIsIDE1LCAyMzMsIDIyMiwgMTIsIDE1LCAyMzMsIDIyMSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyMCwgMTIsIDE1LCAyMzMsIDIxOSwgMTIsIDE1LCAyMzMsIDIxOCwgMTIsIDE1LCAyMzMsIDIxNywgCi0gICAgMTIsIDE1LCAyMzMsIDIxNiwgMTIsIDE1LCAyMzMsIDIxNSwgMTIsIDE1LCAyMzMsIDIxNCwgMTIsIDE1LCAyMzMsIDIxMywgCi0gICAgMTIsIDE1LCAyMzMsIDIxMiwgMTIsIDE1LCAyMzMsIDIxMSwgMTIsIDE1LCAyMzMsIDIxMCwgMTIsIDE1LCAyMzMsIDIwOSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwOCwgMTIsIDE1LCAyMzMsIDIwNywgMTIsIDE1LCAyMzMsIDIwNiwgMTIsIDE1LCAyMzMsIDIwNSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwNCwgMTIsIDE1LCAyMzMsIDIwMywgMTIsIDE1LCAyMzMsIDIwMiwgMTIsIDE1LCAyMzMsIDIwMSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwMCwgMTIsIDE1LCAyMzMsIDE5OSwgMTIsIDE1LCAyMzMsIDE5OCwgMTIsIDE1LCAyMzMsIDE5NywgCi0gICAgMTIsIDE1LCAyMzMsIDE5NiwgMTIsIDE1LCAyMzMsIDE5NSwgMTIsIDE1LCAyMzMsIDE5NCwgMTIsIDE1LCAyMzMsIDE5MywgCi0gICAgMTIsIDE1LCAyMzMsIDE5MiwgMTIsIDE1LCAyMzMsIDE5MSwgMTIsIDE1LCAyMzMsIDE5MCwgMTIsIDE1LCAyMzMsIDE4OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4OCwgMTIsIDE1LCAyMzMsIDE4NywgMTIsIDE1LCAyMzMsIDE4NiwgMTIsIDE1LCAyMzMsIDE4NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4NCwgMTIsIDE1LCAyMzMsIDE4MywgMTIsIDE1LCAyMzMsIDE4MiwgMTIsIDE1LCAyMzMsIDE4MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4MCwgMTIsIDE1LCAyMzMsIDE3OSwgMTIsIDE1LCAyMzMsIDE3OCwgMTIsIDE1LCAyMzMsIDE3NywgCi0gICAgMTIsIDE1LCAyMzMsIDE3NiwgMTIsIDE1LCAyMzMsIDE3NSwgMTIsIDE1LCAyMzMsIDE3NCwgMTIsIDE1LCAyMzMsIDE3MywgCi0gICAgMTIsIDE1LCAyMzMsIDE3MiwgMTIsIDE1LCAyMzMsIDE3MSwgMTIsIDE1LCAyMzMsIDE3MCwgMTIsIDE1LCAyMzMsIDE2OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2OCwgMTIsIDE1LCAyMzMsIDE2NywgMTIsIDE1LCAyMzMsIDE2NiwgMTIsIDE1LCAyMzMsIDE2NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2NCwgMTIsIDE1LCAyMzMsIDE2MywgMTIsIDE1LCAyMzMsIDE2MiwgMTIsIDE1LCAyMzMsIDE2MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2MCwgMTIsIDE1LCAyMzMsIDE1OSwgMTIsIDE1LCAyMzMsIDE1OCwgMTIsIDE1LCAyMzMsIDE1NywgCi0gICAgMTIsIDE1LCAyMzMsIDE1NiwgMTIsIDE1LCAyMzMsIDE1NSwgMTIsIDE1LCAyMzMsIDE1NCwgMTIsIDE1LCAyMzMsIDE1MywgCi0gICAgMTIsIDE1LCAyMzMsIDE1MiwgMTIsIDE1LCAyMzMsIDE1MSwgMTIsIDE1LCAyMzMsIDE1MCwgMTIsIDE1LCAyMzMsIDE0OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0OCwgMTIsIDE1LCAyMzMsIDE0NywgMTIsIDE1LCAyMzMsIDE0NiwgMTIsIDE1LCAyMzMsIDE0NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0NCwgMTIsIDE1LCAyMzMsIDE0MywgMTIsIDE1LCAyMzMsIDE0MiwgMTIsIDE1LCAyMzMsIDE0MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0MCwgMTIsIDE1LCAyMzMsIDEzOSwgMTIsIDE1LCAyMzMsIDEzOCwgMTIsIDE1LCAyMzMsIDEzNywgCi0gICAgMTIsIDE1LCAyMzMsIDEzNiwgMTIsIDE1LCAyMzMsIDEzNSwgMTIsIDE1LCAyMzMsIDEzNCwgMTIsIDE1LCAyMzMsIDEzMywgCi0gICAgMTIsIDE1LCAyMzMsIDEzMiwgMTIsIDE1LCAyMzMsIDEzMSwgMTIsIDE1LCAyMzMsIDEzMCwgMTIsIDE1LCAyMzMsIDEyOSwgCi0gICAgMTIsIDE1LCAyMzMsIDEyOCwgMTIsIDE1LCAyMzMsIDEyNywgMTIsIDE1LCAyMzMsIDEyNiwgMTIsIDE1LCAyMzMsIDEyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDEyNCwgMTIsIDE1LCAyMzMsIDEyMywgMjI4LCAxNCwgMjA5LCAyNTUsIDE2MCwgMjExLCAyMjgsIAotICAgIDE2MCwgMjQwLCAyMTIsIDgyLCAxNjAsIDIxNywgMzEsIDgyLCAxNjAsIDQyLCA1NCwgMTYwLCAyNDMsIDk3LCA1NCwgMTYwLCAKLSAgICAyMTgsIDI0NiwgNTQsIDE2MCwgMjUwLCAyMzUsIDE2MCwgMjUwLCAxNjAsIDE2MCwgNDksIDIxOSwgNzYsIDE2MCwgNTAsIAotICAgIDIxOSwgNzYsIDE2MCwgMjUwLCA1OSwgMTYwLCA5MSwgNTQsIDE2MCwgMjQ1LCAyMzMsIDE2MCwgMjM1LCAyMTksIDE2MCwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE2MCwgMjEyLCAwLCAxNjAsIDE3LCAyMDIsIDg0LCAxNjAsIDE3LCAxMDUsIDE2MCwgMTcsIAotICAgIDEwOCwgMTYwLCAxNywgMTQ3LCAxNjAsIDE3LCAxNDksIDE2MCwgMTcsIDE3MCwgMTYwLCAxNywgMTk1LCAxNjAsIDE3LCAKLSAgICAyMTMsIDExMSwgMTYwLCAxNywgMTk5LCAxNjAsIDE3LCAyMjIsIDYzLCAxNjAsIDI0NSwgMjQyLCAxNjAsIDIxMywgMTQzLCAKLSAgICAxNjAsIDIyNywgMTc5LCA1NCwgMTYwLCAyNDEsIDM1LCA1NCwgMTYwLCAyMzcsIDI0NywgNTQsIDE2MCwgMjE3LCA0NywgODIsIAotICAgIDE2MCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE2MCwgOCwgNiwgMSwgNjMsIDE2MCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjUsIDE2MCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA2LCAxLCA3NCwgMTYwLCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3NCwgMTYwLCA4LCA2LCAxLCAyMzksIDc1LCAxNjAsIDgsIDYsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDYsIDEsIAotICAgIDc1LCAxNjAsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNjAsIDgsIDYsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNiwgMSwgMTU5LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNjAsIDgsIDYsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDYsIDEsIDc4LCAxNjAsIDgsIAotICAgIDYsIDEsIDIxOSwgMTg0LCAxNjAsIDgsIDYsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDYsIDEsIDE0NiwgMTYwLCA4LCA2LCAxLCAKLSAgICAxOTQsIDE2MCwgOCwgNiwgMSwgMjEwLCA2OSwgMTYwLCA4LCA2LCAxLCA2OCwgMTYwLCA4LCA2LCAxLCAyMDYsIDE2NCwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTYwLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA2LCAxLCAyMDMsIDEyNCwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMDIsIDE1OSwgMTYwLCA0OSwgNTEsIDE1NSwgMTYwLCAyMTYsIDc0LCAyMTIsIDAsIDE2MCwgNTAsIAotICAgIDUxLCAxNTUsIDE2MCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE2MCwgMTI0LCAyMjcsIDExNCwgMTYwLCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDE2MCwgOCwgNSwgMSwgNjMsIDE2MCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAotICAgIDE2MCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA1LCAxLCA3NCwgMTYwLCA4LCA1LCAxLCAyNDAsIDE3NCwgMTYwLCA4LCAKLSAgICA1LCAxLCAyMzksIDc1LCAxNjAsIDgsIDUsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDUsIDEsIDc1LCAxNjAsIDgsIDUsIDEsIAotICAgIDIzMCwgMTg0LCAxNjAsIDgsIDUsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNSwgMSwgMTU5LCAxNjAsIDgsIDUsIDEsIDIyNiwgCi0gICAgMTg1LCAxNjAsIDgsIDUsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDUsIDEsIDc4LCAxNjAsIDgsIDUsIDEsIDIxOSwgMTg0LCAKLSAgICAxNjAsIDgsIDUsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDUsIDEsIDE0NiwgMTYwLCA4LCA1LCAxLCAxOTQsIDE2MCwgOCwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMTYwLCA4LCA1LCAxLCA2OCwgMTYwLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTYwLCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NCwgMTYwLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTYwLCA4LCA1LCAxLCAyMDIsIAotICAgIDE1OSwgMTYwLCA0OSwgMjQ1LCA5MywgMTU1LCAxNjAsIDgwLCAyMjcsIDExNCwgMTYwLCA1MCwgMjQ1LCA5MywgMTU1LCAKLSAgICAxNjAsIDIwOCwgMjI3LCAyNDcsIDYwLCAyMDksIDI1NSwgNTcsIDIxNCwgNzEsIDU3LCAyMTQsIDYwLCA1NywgMjE0LCA0OSwgCi0gICAgNTcsIDIxNCwgMzcsIDU3LCAyMTQsIDI2LCA1NywgMjE0LCAxNSwgNTcsIDIxNCwgNCwgNTcsIDIxMywgMjQ5LCA1NywgMjEzLCAKLSAgICAyMzgsIDU3LCAyMTMsIDIzMCwgNTcsIDIxMywgMjI5LCA1NywgMjEzLCAyMjgsIDU3LCAyMTMsIDIyNywgNTcsIDIxMywgCi0gICAgMjI1LCA1NywgMjEzLCAyMjQsIDU3LCAyMTMsIDIyMywgNTcsIDIxMywgMjIyLCA1NywgMjEzLCAyMjEsIDU3LCAyMTMsIAotICAgIDIyMCwgNTcsIDIxMywgMjE5LCA1NywgMjEzLCAyMTgsIDU3LCAyMTMsIDIxNywgNTcsIDIxMywgMjE2LCA1NywgMjEzLCAKLSAgICAyMTQsIDU3LCAyMTMsIDIxMywgNTcsIDIxMywgMjEyLCA1NywgMjEzLCAyMTEsIDU3LCAyMTMsIDIxMCwgNTcsIDIxMywgCi0gICAgMjA5LCA1NywgMjEzLCAyMDgsIDU3LCAyMTMsIDIwNywgNTcsIDIxMywgMjA2LCA1NywgMjEzLCAyMDUsIDU3LCAyMTMsIAotICAgIDIwMywgNTcsIDIxMywgMjAyLCA1NywgMjEzLCAyMDEsIDU3LCAyMTMsIDIwMCwgNTcsIDIxMywgMTk5LCA1NywgMjEzLCAKLSAgICAxOTgsIDU3LCAyMTMsIDE5NywgNTcsIDIxMywgMTk2LCA1NywgMjEzLCAxOTUsIDU3LCAyMTMsIDE5NCwgNTcsIDIxMywgCi0gICAgMTkyLCA1NywgMjEzLCAxOTEsIDU3LCAyMTMsIDE5MCwgNTcsIDIxMywgMTg5LCA1NywgMjEzLCAxODgsIDU3LCAyMTMsIAotICAgIDE4NywgNTcsIDIxMywgMTg2LCA1NywgMjEzLCAxODUsIDU3LCAyMTMsIDE4NCwgNTcsIDIxMywgMTgzLCA1NywgMjEzLCAKLSAgICAxODEsIDU3LCAyMTMsIDE4MCwgNTcsIDIxMywgMTc5LCA1NywgMjEzLCAxNzgsIDU3LCAyMTMsIDE3NywgNTcsIDIxMywgCi0gICAgMTc2LCA1NywgMjEzLCAxNzUsIDU3LCAyMTMsIDE3NCwgNTcsIDIxMywgMTczLCA1NywgMjEzLCAxNzIsIDU3LCAyMTMsIAotICAgIDE3MCwgNTcsIDIxMywgMTY5LCA1NywgMjEzLCAxNjgsIDU3LCAyMTMsIDE2NywgNTcsIDIxMywgMTY2LCA1NywgMjEzLCAKLSAgICAxNjUsIDU3LCAyMTMsIDE2NCwgNTcsIDIxMywgMTYzLCA1NywgMjEzLCAxNjIsIDU3LCAyMTMsIDE2MSwgNTcsIDIxMywgCi0gICAgMTU5LCA1NywgMjEzLCAxNTgsIDU3LCAyMTMsIDE1NywgNTcsIDIxMywgMTU2LCA1NywgMjEzLCAxNTUsIDU3LCAyMTMsIAotICAgIDE1NCwgNTcsIDIxMywgMTUzLCA1NywgMjEzLCAxNTIsIDU3LCAyMTMsIDE1MSwgNTcsIDIxMywgMTUwLCA1NywgMjE0LCAKLSAgICAxNDcsIDU3LCAyMTQsIDE0NiwgNTcsIDIxNCwgMTQ1LCA1NywgMjE0LCAxNDQsIDU3LCAyMTQsIDE0MywgNTcsIDIxNCwgCi0gICAgMTQyLCA1NywgMjE0LCAxNDEsIDU3LCAyMTQsIDE0MCwgNTcsIDIxNCwgMTM5LCA1NywgMjE0LCAxMzgsIDU3LCAyMTQsIAotICAgIDEzNiwgNTcsIDIxNCwgMTM1LCA1NywgMjE0LCAxMzQsIDU3LCAyMTQsIDEzMywgNTcsIDIxNCwgMTMyLCA1NywgMjE0LCAKLSAgICAxMzEsIDU3LCAyMTQsIDEzMCwgNTcsIDIxNCwgMTI5LCA1NywgMjE0LCAxMjgsIDU3LCAyMTQsIDEyNywgNTcsIDIxNCwgCi0gICAgMTI1LCA1NywgMjE0LCAxMjQsIDU3LCAyMTQsIDEyMywgNTcsIDIxNCwgMTIyLCA1NywgMjE0LCAxMjEsIDU3LCAyMTQsIAotICAgIDEyMCwgNTcsIDIxNCwgMTE5LCA1NywgMjE0LCAxMTgsIDU3LCAyMTQsIDExNywgNTcsIDIxNCwgMTE2LCA1NywgMjE0LCAKLSAgICAxMTQsIDU3LCAyMTQsIDExMywgNTcsIDIxNCwgMTEyLCA1NywgMjE0LCAxMTEsIDU3LCAyMTQsIDExMCwgNTcsIDIxNCwgCi0gICAgMTA5LCA1NywgMjE0LCAxMDgsIDU3LCAyMTQsIDEwNywgNTcsIDIxNCwgMTA2LCA1NywgMjE0LCAxMDUsIDU3LCAyMTQsIAotICAgIDEwMywgNTcsIDIxNCwgMTAyLCA1NywgMjE0LCAxMDEsIDU3LCAyMTQsIDEwMCwgNTcsIDIxNCwgOTksIDU3LCAyMTQsIDk4LCAKLSAgICA1NywgMjE0LCA5NywgNTcsIDIxNCwgOTYsIDU3LCAyMTQsIDk1LCA1NywgMjE0LCA5NCwgNTcsIDIxNCwgOTIsIDU3LCAyMTQsIAotICAgIDkxLCA1NywgMjE0LCA5MCwgNTcsIDIxNCwgODksIDU3LCAyMTQsIDg4LCA1NywgMjE0LCA4NywgNTcsIDIxNCwgODYsIDU3LCAKLSAgICAyMTQsIDg1LCA1NywgMjE0LCA4NCwgNTcsIDIxNCwgODMsIDU3LCAyMTQsIDgxLCA1NywgMjE0LCA4MCwgNTcsIDIxNCwgNzksIAotICAgIDU3LCAyMTQsIDc4LCA1NywgMjE0LCA3NywgNTcsIDIxNCwgNzYsIDU3LCAyMTQsIDc1LCA1NywgMjE0LCA3NCwgNTcsIDIxNCwgCi0gICAgNzMsIDU3LCAyMTQsIDcyLCA1NywgMjE0LCA3MCwgNTcsIDIxNCwgNjksIDU3LCAyMTQsIDY4LCA1NywgMjE0LCA2NywgNTcsIAotICAgIDIxNCwgNjYsIDU3LCAyMTQsIDY1LCA1NywgMjE0LCA2NCwgNTcsIDIxNCwgNjMsIDU3LCAyMTQsIDYyLCA1NywgMjE0LCA2MSwgCi0gICAgNTcsIDIxNCwgNTksIDU3LCAyMTQsIDU4LCA1NywgMjE0LCA1NywgNTcsIDIxNCwgNTYsIDU3LCAyMTQsIDU1LCA1NywgMjE0LCAKLSAgICA1NCwgNTcsIDIxNCwgNTMsIDU3LCAyMTQsIDUyLCA1NywgMjE0LCA1MSwgNTcsIDIxNCwgNTAsIDU3LCAyMTQsIDQ4LCA1NywgCi0gICAgMjE0LCA0NywgNTcsIDIxNCwgNDYsIDU3LCAyMTQsIDQ1LCA1NywgMjE0LCA0NCwgNTcsIDIxNCwgNDMsIDU3LCAyMTQsIDQyLCAKLSAgICA1NywgMjE0LCA0MSwgNTcsIDIxNCwgNDAsIDU3LCAyMTQsIDM5LCA1NywgMjE0LCAzNiwgNTcsIDIxNCwgMzUsIDU3LCAyMTQsIAotICAgIDM0LCA1NywgMjE0LCAzMywgNTcsIDIxNCwgMzIsIDU3LCAyMTQsIDMxLCA1NywgMjE0LCAzMCwgNTcsIDIxNCwgMjksIDU3LCAKLSAgICAyMTQsIDI4LCA1NywgMjE0LCAyNywgNTcsIDIxNCwgMjUsIDU3LCAyMTQsIDI0LCA1NywgMjE0LCAyMywgNTcsIDIxNCwgMjIsIAotICAgIDU3LCAyMTQsIDIxLCA1NywgMjE0LCAyMCwgNTcsIDIxNCwgMTksIDU3LCAyMTQsIDE4LCA1NywgMjE0LCAxNywgNTcsIDIxNCwgCi0gICAgMTYsIDU3LCAyMTQsIDE0LCA1NywgMjE0LCAxMywgNTcsIDIxNCwgMTIsIDU3LCAyMTQsIDExLCA1NywgMjE0LCAxMCwgNTcsIAotICAgIDIxNCwgOSwgNTcsIDIxNCwgOCwgNTcsIDIxNCwgNywgNTcsIDIxNCwgNiwgNTcsIDIxNCwgNSwgNTcsIDIxNCwgMywgNTcsIAotICAgIDIxNCwgMiwgNTcsIDIxNCwgMSwgNTcsIDIxNCwgMCwgNTcsIDIxMywgMjU1LCA1NywgMjEzLCAyNTQsIDU3LCAyMTMsIDI1MywgCi0gICAgNTcsIDIxMywgMjUyLCA1NywgMjEzLCAyNTEsIDU3LCAyMTMsIDI1MCwgNTcsIDIxMywgMjQ4LCA1NywgMjEzLCAyNDcsIDU3LCAKLSAgICAyMTMsIDI0NiwgNTcsIDIxMywgMjQ1LCA1NywgMjEzLCAyNDQsIDU3LCAyMTMsIDI0MywgNTcsIDIxMywgMjQyLCA1NywgCi0gICAgMjEzLCAyNDEsIDU3LCAyMTMsIDI0MCwgNTcsIDIxMywgMjM5LCA1NywgMjEzLCAyMzcsIDU3LCAyMTMsIDIzNiwgNTcsIAotICAgIDIxMywgMjM1LCA1NywgMjEzLCAyMzQsIDU3LCAyMTMsIDIzMywgNTcsIDIxMywgMjMyLCA1NywgMjEzLCAyMzEsIDIyMSwgCi0gICAgNDgsIDIyMSwgNTAsIDIxMSwgOTAsIDc2LCAyMzcsIDYxLCAyMTIsIDMsIDIxMSwgOTAsIDc2LCAyMDksIDExMiwgMjExLCAKLSAgICAxMiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAyNDAsIDI0MCwgMjQxLCA4NCwgNzYsIDIwOCwgMTA1LCAyNDEsIDQ3LCAyNDEsIAotICAgIDcxLCAyNDEsIDcyLCAyNTEsIDEzMCwgMjUxLCAxMzEsIDI1MSwgMjcsIDI0OCwgMTMxLCAyNDksIDE5LCAyNDcsIDE5OSwgCi0gICAgMTY3LCAyMTAsIDUsIDIzNiwgMTA2LCAyMTAsIDUsIDIzNiwgMzEsIDIxMCwgMTAsIDIyNywgMTE1LCAyNDAsIDUxLCAyMjIsIAotICAgIDIxNCwgMjI3LCAxMTQsIDI0MSwgODQsIDc2LCAyMjcsIDExNCwgMjI3LCAxNjMsIDIyMSwgMjUzLCAyNDEsIDUwLCAyMjcsIAotICAgIDExNSwgMjEwLCA1LCA4MCwgMjEwLCA1LCAyMDQsIDE2NSwgMjM5LCAxNTksIDI0MCwgNTEsIDI0MCwgMzAsIDI0NywgMjUsIAotICAgIDIxNiwgNzcsIDI0NSwgMTQ3LCAyMTMsIDcsIDIxOSwgMjExLCAyMjcsIDQxLCAxMDUsIDIxMiwgMTMsIDIxMywgNywgMjMxLCAKLSAgICA0OSwgMjI3LCA0MSwgMjAyLCA4NCwgMjEyLCAxNjIsIDI0NCwgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAyNDMsIDEyMywgCi0gICAgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAyNDQsIDEyOCwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA4LCAyNDQsIDEyNywgMjQ0LCA4LCAKLSAgICAyNDUsIDE4NCwgMTQ3LCAyNDQsIDEyNiwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ5LCAyNDQsIDEyNSwgMTgyLCAyNTEsIDEzMCwgCi0gICAgMjIzLCA4OSwgMjEwLCA5NSwgMjMxLCAxMTIsIDIxMCwgOTksIDI0MSwgODQsIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMjQwLCAKLSAgICAyNDcsIDI0NywgNTksIDI0NywgNjEsIDI0MSwgODQsIDc2LCAyMjUsIDksIDI0MSwgNDgsIDIxMCwgMjQyLCAyMTEsIDMsIAotICAgIDI0MSwgOSwgMjQxLCAxMCwgMjMxLCAyNSwgMjEzLCAxMzEsIDE0OSwgMjQwLCAxMSwgMjEzLCAxMzAsIDIzOSwgMTEyLCAKLSAgICAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ3LCAyMzcsIDIzOCwgMjEzLCAxMzAsIDIzNywgMjM1LCAyMzEsIDI1LCAyMTMsIDEzMSwgCi0gICAgMTA4LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDIxNSwgMTUwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTA1LCAyMDYsIDIzNiwgMjEzLCAKLSAgICAxMzAsIDIwNiwgMTkzLCAyMTEsIDIzMSwgMjQ0LCA0NiwgMjQ0LCA0OCwgMjE5LCAxNTcsIDI0NiwgMTgyLCAyMTksIDE1OSwgCi0gICAgMTM4LCAyMjAsIDgwLCAyMTcsIDI0MCwgMjM2LCAxMDksIDI0NywgMjE4LCAyMTgsIDIzNiwgMjM3LCAyNywgMjQ3LCAyMzAsIAotICAgIDIyMSwgMTkyLCAyNDcsIDIxOCwgMjM3LCAyNywgMjIzLCA1MywgMjMxLCAzNSwgMjMxLCAzNywgMjIyLCAyMDgsIDIyNywgCi0gICAgMTE0LCAyMjIsIDIzMSwgMjExLCA5MCwgNzYsIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjExLCAxNjQsIDI0MSwgODQsIDc2LCAKLSAgICAyMTQsIDE1MiwgMjUwLCAxMjAsIDI0MSwgMTIsIDE2NywgMjEwLCA2LCAyMTMsIDExNywgMjM2LCAxMDYsIDIxMCwgNiwgCi0gICAgMjEzLCAxMTcsIDIzNiwgMjgsIDE2NywgMjEwLCA2LCAzLCAyMzAsIDY2LCAyMzYsIDEwNiwgMjEwLCA2LCAzLCAyMzAsIDY2LCAKLSAgICAyMzYsIDI5LCAyMjcsIDExNSwgMjEwLCA2LCAyMTMsIDExNywgODAsIDIxMCwgNiwgMjEzLCAxMTcsIDIwNCwgMTY0LCAyMTksIAotICAgIDY5LCAyMjcsIDExNSwgMjM5LCAxNTEsIDIxOSwgNjksIDIyNywgMTE1LCAyNDIsIDcwLCAyMTgsIDg3LCAyMTksIDY5LCAKLSAgICAyMjcsIDExNSwgMjQ5LCAxOCwgMjE5LCA2OSwgMjI3LCAxMTUsIDIwNiwgMjI0LCAyMTgsIDgyLCAyMTYsIDc0LCAyMjcsIAotICAgIDExNSwgMjQwLCA1MSwgMjE2LCA3NCwgMjMxLCAzNSwgMjE2LCA1NywgMjEyLCAxMjAsIDIxMywgNywgMTA4LCAyMTIsIDExNywgCi0gICAgMjExLCAxNjYsIDIxMiwgMTIwLCAyMTMsIDcsIDE0NywgMjEyLCAxMTYsIDIxMSwgMTY1LCAyNDQsIDgsIDI0NSwgMTg0LCAKLSAgICAyMTEsIDM0LCAyNDQsIDEyMywgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDUsIDIxNywgMjI3LCAyMDYsIDE5MCwgMjE3LCAxOTAsIAotICAgIDIxNywgMjI3LCAyMDYsIDE5MiwgMTA4LCAyMTcsIDIyNywgMjA2LCAxODksIDIxNywgMTg5LCAyMTMsIDExOCwgMjA4LCAKLSAgICAxMDQsIDIxMSwgODksIDIxMSwgMTcsIDI0NywgNjAsIDI0NiwgMTgyLCAyNDcsIDEsIDIyNCwgMjI0LCAyMDQsIDEwMywgCi0gICAgMjIzLCAxODEsIDIxMSwgOTAsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDIxMSwgOTAsIDc2LCAyMTcsIDIwOCwgMjUwLCAKLSAgICAxMjAsIDIxMSwgMjMwLCAyNDEsIDg0LCA3NiwgMjM3LCAyMjMsIDI1MCwgMTIwLCAyNDEsIDg0LCA3NiwgMjE3LCAyMDgsIAotICAgIDI1MCwgMTIwLCAyNDEsIDQ1LCAyMTEsIDkwLCA3NiwgMjExLCAzNCwgMjExLCAyNDUsIDIxMiwgMTIwLCAyMzgsIDMsIDE2NywgCi0gICAgMjMwLCAyNDEsIDIxMywgOTUsIDIxMiwgMTIwLCAxNjcsIDIzMCwgMjQxLCAyMTQsIDE5MSwgMjQ1LCAxODQsIDIxMywgMTI3LCAKLSAgICAyMzAsIDI0MSwgMjQ1LCAxMTEsIDIxMSwgMzUsIDIwOSwgMTM4LCAyMTEsIDEwOCwgMjIwLCAwLCAyMTAsIDg0LCAyNDUsIAotICAgIDIzMiwgMjE5LCAyMjYsIDIxNywgMjI4LCAyMjQsIDIyMywgMjE4LCA3MiwgMjUwLCAxNTYsIDIxNywgMjIyLCAyNDUsIDIzMiwgCi0gICAgMjUwLCAxNzIsIDIyMywgNDEsIDIxMiwgMTcxLCA4LCA2LCAxLCAyMzgsIDExOSwgOCwgNSwgMSwgMjM4LCAxMTksIDI0NiwgCi0gICAgMjAxLCAyNTEsIDgsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIwMCwgMSwgMjI3LCAKLSAgICA2OCwgMjI4LCAxMiwgMSwgMjM5LCAxODcsIDIzOSwgMTc4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjQwLCA2MywgMjI4LCAKLSAgICAxMiwgMSwgMjE1LCAyMjcsIDIyOCwgMTIsIDEsIDIyNywgNDksIDc3LCAxMzEsIDI0OCwgNDUsIDIxMiwgMjM4LCAyMzgsIAotICAgIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgMjM5LCA4OSwgMjM5LCA4OCwgMjM5LCA4NywgMjIzLCAxODMsIDIwMSwgMjQzLCAKLSAgICAyMDEsIDI0NCwgMjAxLCAyNDYsIDIyNiwgMjQzLCAyMTUsIDIzNSwgMjI2LCAyNDUsIDIxNSwgMjM3LCAyMTksIDM3LCAyMjYsIAotICAgIDI0MiwgMjE1LCAyMzQsIDIyMSwgMjIzLCAyMjQsIDg2LCAyMDQsIDIsIDIyNiwgMjQ0LCAyMTUsIDIzNiwgMjM5LCAxMTEsIAotICAgIDIxOSwgMzYsIDIwNCwgNTIsIDI0MSwgMTA3LCAyMzksIDk5LCAyMjQsIDE1NCwgMjIwLCAzMiwgMjA2LCAxOTQsIDk3LCAKLSAgICAyMjQsIDE1NCwgMjQ0LCAxNDUsIDk3LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCAyMDgsIDg0LCA1MywgCi0gICAgMywgNTIsIDgwLCA5NSwgMTEsIDQsIDIzMCwgMTk5LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgCi0gICAgMjI3LCAxODUsIDE1NSwgMjA1LCAxNjUsIDIwNSwgNTQsIDIwNCwgMjQyLCAyMDQsIDIzMSwgMjA0LCAyMjAsIDIwNCwgMjA5LCAKLSAgICAyMDQsIDE5OCwgMjA0LCAxODcsIDIwNCwgMTc2LCAyMDUsIDE2NCwgMjA1LCAxNTMsIDIwNSwgMTQyLCAyMDUsIDEzMSwgCi0gICAgMjA1LCAxMjAsIDIwNSwgMTA5LCAyMDUsIDk4LCAyNDcsIDEzMCwgMjE5LCAyNDEsIDgyLCAyNDgsIDEzLCAyMDEsIDI0NSwgCi0gICAgOSwgMiwgMjIxLCA1NywgMjA5LCAxNDEsIDksIDIsIDIyMSwgNTcsIDExNSwgMjIxLCA1NywgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKLSAgICAxNjAsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMTIsIDY0LCAyNDYsIDEwMiwgMjA2LCA2NSwgMjA1LCA4NywgMjA1LCA3NiwgCi0gICAgMjA1LCA2NSwgMjA1LCA1MywgMjA1LCA0MiwgMjA1LCAzMSwgMjA1LCAyMCwgMjA1LCA5LCAyMDQsIDI1NCwgMjA0LCAyNDYsIAotICAgIDIwNCwgMjQ1LCAyMDQsIDI0NCwgMjA0LCAyNDMsIDIwNCwgMjQxLCAyMDQsIDI0MCwgMjA0LCAyMzksIDIwNCwgMjM4LCAKLSAgICAyMDQsIDIzNywgMjA0LCAyMzYsIDIwNCwgMjM1LCAyMDQsIDIzNCwgMjA0LCAyMzMsIDIwNCwgMjMyLCAyMDQsIDIzMCwgCi0gICAgMjA0LCAyMjksIDIwNCwgMjI4LCAyMDQsIDIyNywgMjA0LCAyMjYsIDIwNCwgMjI1LCAyMDQsIDIyNCwgMjA0LCAyMjMsIAotICAgIDIwNCwgMjIyLCAyMDQsIDIyMSwgMjA0LCAyMTksIDIwNCwgMjE4LCAyMDQsIDIxNywgMjA0LCAyMTYsIDIwNCwgMjE1LCAKLSAgICAyMDQsIDIxNCwgMjA0LCAyMTMsIDIwNCwgMjEyLCAyMDQsIDIxMSwgMjA0LCAyMTAsIDIwNCwgMjA4LCAyMDQsIDIwNywgCi0gICAgMjA0LCAyMDYsIDIwNCwgMjA1LCAyMDQsIDIwNCwgMjA0LCAyMDMsIDIwNCwgMjAyLCAyMDQsIDIwMSwgMjA0LCAyMDAsIAotICAgIDIwNCwgMTk5LCAyMDQsIDE5NywgMjA0LCAxOTYsIDIwNCwgMTk1LCAyMDQsIDE5NCwgMjA0LCAxOTMsIDIwNCwgMTkyLCAKLSAgICAyMDQsIDE5MSwgMjA0LCAxOTAsIDIwNCwgMTg5LCAyMDQsIDE4OCwgMjA0LCAxODYsIDIwNCwgMTg1LCAyMDQsIDE4NCwgCi0gICAgMjA0LCAxODMsIDIwNCwgMTgyLCAyMDQsIDE4MSwgMjA0LCAxODAsIDIwNCwgMTc5LCAyMDQsIDE3OCwgMjA0LCAxNzcsIAotICAgIDIwNCwgMTc1LCAyMDQsIDE3NCwgMjA0LCAxNzMsIDIwNCwgMTcyLCAyMDQsIDE3MSwgMjA0LCAxNzAsIDIwNCwgMTY5LCAKLSAgICAyMDQsIDE2OCwgMjA0LCAxNjcsIDIwNCwgMTY2LCAyMDUsIDE2MywgMjA1LCAxNjIsIDIwNSwgMTYxLCAyMDUsIDE2MCwgCi0gICAgMjA1LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE1NywgMjA1LCAxNTYsIDIwNSwgMTU1LCAyMDUsIDE1NCwgMjA1LCAxNTIsIAotICAgIDIwNSwgMTUxLCAyMDUsIDE1MCwgMjA1LCAxNDksIDIwNSwgMTQ4LCAyMDUsIDE0NywgMjA1LCAxNDYsIDIwNSwgMTQ1LCAKLSAgICAyMDUsIDE0NCwgMjA1LCAxNDMsIDIwNSwgMTQxLCAyMDUsIDE0MCwgMjA1LCAxMzksIDIwNSwgMTM4LCAyMDUsIDEzNywgCi0gICAgMjA1LCAxMzYsIDIwNSwgMTM1LCAyMDUsIDEzNCwgMjA1LCAxMzMsIDIwNSwgMTMyLCAyMDUsIDEzMCwgMjA1LCAxMjksIAotICAgIDIwNSwgMTI4LCAyMDUsIDEyNywgMjA1LCAxMjYsIDIwNSwgMTI1LCAyMDUsIDEyNCwgMjA1LCAxMjMsIDIwNSwgMTIyLCAKLSAgICAyMDUsIDEyMSwgMjA1LCAxMTksIDIwNSwgMTE4LCAyMDUsIDExNywgMjA1LCAxMTYsIDIwNSwgMTE1LCAyMDUsIDExNCwgCi0gICAgMjA1LCAxMTMsIDIwNSwgMTEyLCAyMDUsIDExMSwgMjA1LCAxMTAsIDIwNSwgMTA4LCAyMDUsIDEwNywgMjA1LCAxMDYsIAotICAgIDIwNSwgMTA1LCAyMDUsIDEwNCwgMjA1LCAxMDMsIDIwNSwgMTAyLCAyMDUsIDEwMSwgMjA1LCAxMDAsIDIwNSwgOTksIDIwNSwgCi0gICAgOTcsIDIwNSwgOTYsIDIwNSwgOTUsIDIwNSwgOTQsIDIwNSwgOTMsIDIwNSwgOTIsIDIwNSwgOTEsIDIwNSwgOTAsIDIwNSwgCi0gICAgODksIDIwNSwgODgsIDIwNSwgODYsIDIwNSwgODUsIDIwNSwgODQsIDIwNSwgODMsIDIwNSwgODIsIDIwNSwgODEsIDIwNSwgCi0gICAgODAsIDIwNSwgNzksIDIwNSwgNzgsIDIwNSwgNzcsIDIwNSwgNzUsIDIwNSwgNzQsIDIwNSwgNzMsIDIwNSwgNzIsIDIwNSwgCi0gICAgNzEsIDIwNSwgNzAsIDIwNSwgNjksIDIwNSwgNjgsIDIwNSwgNjcsIDIwNSwgNjYsIDIwNSwgNjQsIDIwNSwgNjMsIDIwNSwgCi0gICAgNjIsIDIwNSwgNjEsIDIwNSwgNjAsIDIwNSwgNTksIDIwNSwgNTgsIDIwNSwgNTcsIDIwNSwgNTYsIDIwNSwgNTUsIDIwNSwgCi0gICAgNTIsIDIwNSwgNTEsIDIwNSwgNTAsIDIwNSwgNDksIDIwNSwgNDgsIDIwNSwgNDcsIDIwNSwgNDYsIDIwNSwgNDUsIDIwNSwgCi0gICAgNDQsIDIwNSwgNDMsIDIwNSwgNDEsIDIwNSwgNDAsIDIwNSwgMzksIDIwNSwgMzgsIDIwNSwgMzcsIDIwNSwgMzYsIDIwNSwgCi0gICAgMzUsIDIwNSwgMzQsIDIwNSwgMzMsIDIwNSwgMzIsIDIwNSwgMzAsIDIwNSwgMjksIDIwNSwgMjgsIDIwNSwgMjcsIDIwNSwgCi0gICAgMjYsIDIwNSwgMjUsIDIwNSwgMjQsIDIwNSwgMjMsIDIwNSwgMjIsIDIwNSwgMjEsIDIwNSwgMTksIDIwNSwgMTgsIDIwNSwgCi0gICAgMTcsIDIwNSwgMTYsIDIwNSwgMTUsIDIwNSwgMTQsIDIwNSwgMTMsIDIwNSwgMTIsIDIwNSwgMTEsIDIwNSwgMTAsIDIwNSwgCi0gICAgOCwgMjA1LCA3LCAyMDUsIDYsIDIwNSwgNSwgMjA1LCA0LCAyMDUsIDMsIDIwNSwgMiwgMjA1LCAxLCAyMDUsIDAsIDIwNCwgCi0gICAgMjU1LCAyMDQsIDI1MywgMjA0LCAyNTIsIDIwNCwgMjUxLCAyMDQsIDI1MCwgMjA0LCAyNDksIDIwNCwgMjQ4LCAyMDQsIAotICAgIDI0NywgOCwgNiwgMSwgMzQsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDE4OCwgMywgODAsIAotICAgIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIAotICAgIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAKLSAgICAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgCi0gICAgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAKLSAgICAxNjUsIDgsIDUsIDEsIDIyMiwgMjA2LCAzLCAyMDgsIDIyOCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKLSAgICA1NiwgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgCi0gICAgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAKLSAgICAyNTMsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCAKLSAgICA4LCA1LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIyMCwgCi0gICAgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MywgCi0gICAgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAzNCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgCi0gICAgNjMsIDI1LCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIAotICAgIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjI2LCAxODYsIDMsIAotICAgIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIAotICAgIDgsIDUsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIAotICAgIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMDgsIDIyNywgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjM3LCAyNTMsIAotICAgIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIwNiwgMTY1LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY1LCAzLCAxNjUsIDgsIDUsIDEsIAotICAgIDIxNCwgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE0LCAxOTMsIDMsIDE2NSwgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgCi0gICAgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgMTkzLCAzLCAxNjUsIDEwLCAyMTMsIDEyNywgODksIAotICAgIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAzMCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIAotICAgIDcwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMjksIDEwLCAyMTMsIDEyNywgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3MywgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICA2OCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxMywgMTAsIDIxMywgMTI3LCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCA3NCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDEwOSwgMTAsIAotICAgIDIxMywgMTI3LCAyMjEsIDE3OSwgMywgMjI5LCAxODksIDE3OSwgMSwgMjI5LCAxMTksIDQ0LCAxMDksIDIzMCwgNTQsIDQ0LCAKLSAgICAxMDksIDIyMiwgMjA1LCA0NCwgMTA5LCAyNDcsIDEyNSwgNDQsIDEwOSwgMjIxLCAxMywgNDQsIDEwOSwgMjA3LCAyNDQsIAotICAgIDQ0LCAxMDksIDIyMSwgMjI4LCA0NCwgMTA5LCAyMTAsIDY5LCA0NCwgMTA5LCAyMjMsIDE2MywgNDQsIDEwOSwgMjE5LCAKLSAgICAxODQsIDQ0LCAxMDksIDIyNiwgMTg1LCA0NCwgMTA5LCAyMDMsIDEyNCwgNDQsIDEwOSwgMTQ2LCA0NCwgMTA5LCAxNTksIAotICAgIDQ0LCAxMDksIDIwNiwgMTY0LCA0NCwgMTA5LCAyMjcsIDY5LCA0NCwgMTA5LCAyMjcsIDc4LCA0NCwgMTA5LCAyMTUsIDE4NiwgCi0gICAgNDQsIDEwOSwgMjIxLCAyMTAsIDQ0LCAxMDksIDIzMCwgMTg0LCA0NCwgMTA5LCAyMTMsIDkyLCA0NCwgMTA5LCAyMTEsIAotICAgIDE2NywgNDQsIDEwOSwgMTk0LCA0NCwgMTA5LCAyMzcsIDE3MSwgNDQsIDEwOSwgMjI4LCAyMjQsIDQ0LCA0LCAyMzAsIDQxLCAKLSAgICA0NCwgNCwgMjI5LCAxMDAsIDQ0LCA0LCAyMjksIDg3LCA0NCwgNCwgMjI4LCAyMDksIDQ0LCA0LCAyMjgsIDE3NCwgNDQsIDQsIAotICAgIDIyOSwgMjAxLCA0NCwgNCwgMjI5LCAxOTgsIDQ0LCA0LCAyMzAsIDE4LCA0NCwgNCwgMjI5LCAyNiwgNDQsIDQsIDIyOSwgNiwgCi0gICAgNDQsIDQsIDIyOSwgMjE5LCA0NCwgNCwgMjIyLCAyMDIsIDQ0LCA0LCAyMjIsIDE1MSwgNDQsIDQsIDIyMiwgMTQ3LCA0NCwgCi0gICAgNCwgMjIyLCAxMTYsIDQ0LCA0LCAyMjIsIDEwOCwgNDQsIDQsIDIyMiwgMTkwLCA0NCwgNCwgMjIyLCAxODgsIDQ0LCA0LCAKLSAgICAyMjIsIDE5OSwgNDQsIDQsIDIyMiwgMTI4LCA0NCwgNCwgMjIyLCAxMjMsIDQ0LCA0LCAyMjIsIDE5MiwgNDQsIDQsIDI0NywgCi0gICAgOTEsIDQ0LCA0LCAyNDYsIDc5LCA0NCwgNCwgMjQ2LCA2OSwgNDQsIDQsIDI0NSwgMTEwLCA0NCwgNCwgMjQ1LCA3NiwgNDQsIAotICAgIDQsIDI0NiwgMjM4LCA0NCwgNCwgMjQ2LCAyMzAsIDQ0LCA0LCAyNDcsIDgwLCA0NCwgNCwgMjQ1LCAyNTQsIDQ0LCA0LCAKLSAgICAyNDUsIDE4MCwgNDQsIDQsIDI0NywgMTUsIDQ0LCA0LCAyMjEsIDEwLCA0NCwgNCwgMjIwLCAyNDgsIDQ0LCA0LCAyMjAsIAotICAgIDI0MywgNDQsIDQsIDIyMCwgMjI2LCA0NCwgNCwgMjIwLCAyMTgsIDQ0LCA0LCAyMjEsIDEsIDQ0LCA0LCAyMjEsIDAsIDQ0LCAKLSAgICA0LCAyMjEsIDcsIDQ0LCA0LCAyMjAsIDIzMywgNDQsIDQsIDIyMCwgMjMwLCA0NCwgNCwgMjIxLCA0LCA0NCwgNCwgMjA3LCAKLSAgICAyNDAsIDQ0LCA0LCAyMDcsIDIyMCwgNDQsIDQsIDIwNywgMjE5LCA0NCwgNCwgMjA3LCAyMDgsIDQ0LCA0LCAyMDcsIDIwNSwgCi0gICAgNDQsIDQsIDIwNywgMjM2LCA0NCwgNCwgMjA3LCAyMzUsIDQ0LCA0LCAyMDcsIDIzOSwgNDQsIDQsIDIwNywgMjE4LCA0NCwgCi0gICAgNCwgMjA3LCAyMTcsIDQ0LCA0LCAyMDcsIDIzOCwgNDQsIDQsIDIyMSwgMjI2LCA0NCwgNCwgMjIxLCAyMTIsIDQ0LCA0LCAKLSAgICAyMjEsIDIxMSwgNDQsIDQsIDIyMSwgMTk1LCA0NCwgNCwgMjIxLCAxOTQsIDQ0LCA0LCAyMjEsIDIyMiwgNDQsIDQsIDIyMSwgCi0gICAgMjIxLCA0NCwgNCwgMjIxLCAyMjUsIDQ0LCA0LCAyMjEsIDE5NywgNDQsIDQsIDIyMSwgMTk2LCA0NCwgNCwgMjIxLCAyMjQsIAotICAgIDQ0LCA0LCAyMTAsIDE4LCA0NCwgNCwgMjA5LCAyLCA0NCwgNCwgMjA4LCAyNDIsIDQ0LCA0LCAyMDcsIDIwMywgNDQsIDQsIAotICAgIDIwNywgMTY1LCA0NCwgNCwgMjA5LCAxODcsIDQ0LCA0LCAyMDksIDE3NiwgNDQsIDQsIDIwOSwgMjUwLCA0NCwgNCwgMTM1LCAKLSAgICA0NCwgNCwgMjA4LCAxNDgsIDQ0LCA0LCAyMDksIDIwNywgNDQsIDQsIDIyMywgMTA2LCA0NCwgNCwgMjIyLCAxMDAsIDQ0LCAKLSAgICA0LCAyMjIsIDc1LCA0NCwgNCwgMjIxLCA4NCwgNDQsIDQsIDIyMSwgMjUsIDQ0LCA0LCAyMjIsIDI0MCwgNDQsIDQsIDIyMiwgCi0gICAgMjM1LCA0NCwgNCwgMjIzLCA5MiwgNDQsIDQsIDIyMSwgMTkxLCA0NCwgNCwgMjIxLCAxODAsIDQ0LCA0LCAyMjMsIDY1LCAKLSAgICA0NCwgNCwgMjE5LCAxNjgsIDQ0LCA0LCAyMTgsIDE2NywgNDQsIDQsIDIxOCwgMTI5LCA0NCwgNCwgMjE3LCAxOTEsIDQ0LCAKLSAgICA0LCAyMTcsIDE1NywgNDQsIDQsIDIxOSwgMzQsIDQ0LCA0LCAyMTksIDIzLCA0NCwgNCwgMjE5LCAxNDgsIDQ0LCA0LCAyMTgsIAotICAgIDY5LCA0NCwgNCwgMjE4LCA0NSwgNDQsIDQsIDIxOSwgNDgsIDQ0LCA0LCAyMjUsIDE3NSwgNDQsIDQsIDIyNCwgMTU1LCA0NCwgCi0gICAgNCwgMjI0LCAxMjUsIDQ0LCA0LCAyMjMsIDI0NiwgNDQsIDQsIDIyMywgMTkyLCA0NCwgNCwgMjI1LCAyMCwgNDQsIDQsIAotICAgIDIyNSwgOCwgNDQsIDQsIDIyNSwgMTQwLCA0NCwgNCwgMjI0LCA4MiwgNDQsIDQsIDIyNCwgMzUsIDQ0LCA0LCAyMjUsIDY3LCAKLSAgICA0NCwgNCwgMjAzLCAxMTAsIDQ0LCA0LCAyMDMsIDExLCA0NCwgNCwgMjAzLCAyLCA0NCwgNCwgMjAyLCAyMTMsIDQ0LCA0LCAKLSAgICAyMDIsIDE4MSwgNDQsIDQsIDIwMywgNTIsIDQ0LCA0LCAyMDMsIDQ5LCA0NCwgNCwgMjAzLCA4OSwgNDQsIDQsIDIwMiwgCi0gICAgMjQ3LCA0NCwgNCwgMjAyLCAyMzIsIDQ0LCA0LCAyMDMsIDYyLCA0NCwgNCwgMjE2LCAyMTYsIDQ0LCA0LCAyMTYsIDU3LCAKLSAgICA0NCwgNCwgMjE2LCAzLCA0NCwgNCwgMjE1LCAxNDUsIDQ0LCA0LCAyMTUsIDExNCwgNDQsIDQsIDIxNiwgMTU4LCA0NCwgNCwgCi0gICAgMjE2LCAxMzUsIDQ0LCA0LCAyMTYsIDE5NywgNDQsIDQsIDIxNSwgMjI3LCA0NCwgNCwgMjE1LCAyMDgsIDQ0LCA0LCAyMTYsIAotICAgIDE2NywgNDQsIDQsIDIyOCwgMTEyLCA0NCwgNCwgMjI3LCAxNDgsIDQ0LCA0LCAyMjcsIDEzMCwgNDQsIDQsIDIyNiwgMjM5LCAKLSAgICA0NCwgNCwgMjI2LCAyMTAsIDQ0LCA0LCAyMjcsIDIzNCwgNDQsIDQsIDIyNywgMjI2LCA0NCwgNCwgMjI4LCA4NiwgNDQsIDQsIAotICAgIDIyNywgNDksIDQ0LCA0LCAyMjcsIDE4LCA0NCwgNCwgMjI3LCAyNTEsIDQ0LCA0LCAyMDYsIDg1LCA0NCwgNCwgMjA1LCAKLSAgICAyMzAsIDQ0LCA0LCAyMDUsIDIxNSwgNDQsIDQsIDIwNCwgMTYzLCA0NCwgNCwgMjA0LCAxNTYsIDQ0LCA0LCAyMDYsIDU1LCAKLSAgICA0NCwgNCwgMjA2LCA1MCwgNDQsIDQsIDIwNiwgODEsIDQ0LCA0LCAyMDUsIDE4OSwgNDQsIDQsIDIwNSwgMTc2LCA0NCwgNCwgCi0gICAgMjA2LCA2MSwgNDQsIDQsIDIyNywgNjcsIDQ0LCA0LCAyMjcsIDYyLCA0NCwgNCwgMjI3LCA2MSwgNDQsIDQsIDIyNywgNTgsIAotICAgIDQ0LCA0LCAyMjcsIDU3LCA0NCwgNCwgMjI3LCA2NCwgNDQsIDQsIDIyNywgNjMsIDQ0LCA0LCAyMjcsIDY2LCA0NCwgNCwgCi0gICAgMjI3LCA2MCwgNDQsIDQsIDIyNywgNTksIDQ0LCA0LCAyMjcsIDY1LCA0NCwgNCwgMjI3LCA3NiwgNDQsIDQsIDIyNywgNzEsIAotICAgIDQ0LCA0LCAyMjcsIDcwLCA0NCwgNCwgMjI3LCA1NCwgNDQsIDQsIDIyNywgNTMsIDQ0LCA0LCAyMjcsIDczLCA0NCwgNCwgCi0gICAgMjI3LCA3MiwgNDQsIDQsIDIyNywgNzUsIDQ0LCA0LCAyMjcsIDU2LCA0NCwgNCwgMjI3LCA1NSwgNDQsIDQsIDIyNywgNzQsIAotICAgIDQ0LCA0LCAyMTUsIDE4NCwgNDQsIDQsIDIxNSwgMTczLCA0NCwgNCwgMjE1LCAxNzIsIDQ0LCA0LCAyMTUsIDE2NSwgNDQsIAotICAgIDQsIDIxNSwgMTU4LCA0NCwgNCwgMjE1LCAxODAsIDQ0LCA0LCAyMTUsIDE3OSwgNDQsIDQsIDIxNSwgMTgzLCA0NCwgNCwgCi0gICAgMjE1LCAxNzEsIDQ0LCA0LCAyMTUsIDE3MCwgNDQsIDQsIDIxNSwgMTgyLCA0NCwgNCwgMjIxLCAyMDgsIDQ0LCA0LCAyMjEsIAotICAgIDIwMywgNDQsIDQsIDIyMSwgMjAyLCA0NCwgNCwgMjIxLCAxOTksIDQ0LCA0LCAyMjEsIDE5OCwgNDQsIDQsIDIyMSwgMjA1LCAKLSAgICA0NCwgNCwgMjIxLCAyMDQsIDQ0LCA0LCAyMjEsIDIwNywgNDQsIDQsIDIyMSwgMjAxLCA0NCwgNCwgMjIxLCAyMDAsIDQ0LCAKLSAgICA0LCAyMjEsIDIwNiwgNDQsIDQsIDIzMCwgMTgwLCA0NCwgNCwgMjMwLCAxNDEsIDQ0LCA0LCAyMzAsIDEzNCwgNDQsIDQsIAotICAgIDIzMCwgODIsIDQ0LCA0LCAyMzAsIDY0LCA0NCwgNCwgMjMwLCAxNjEsIDQ0LCA0LCAyMzAsIDE1OSwgNDQsIDQsIDIzMCwgCi0gICAgMTc0LCA0NCwgNCwgMjMwLCAxMDEsIDQ0LCA0LCAyMzAsIDkxLCA0NCwgNCwgMjMwLCAxNjcsIDQ0LCA0LCAyMTMsIDg1LCAKLSAgICA0NCwgNCwgMjEzLCAxMSwgNDQsIDQsIDIxMywgNiwgNDQsIDQsIDIxMiwgMTk5LCA0NCwgNCwgMjEyLCAxODIsIDQ0LCA0LCAKLSAgICAyMTMsIDQzLCA0NCwgNCwgMjEzLCA0MSwgNDQsIDQsIDIxMywgNzQsIDQ0LCA0LCAyMTIsIDI0MiwgNDQsIDQsIDIxMiwgCi0gICAgMjM2LCA0NCwgNCwgMjEzLCA1MiwgNDQsIDQsIDIxMSwgMTYzLCA0NCwgNCwgMjExLCAxMzIsIDQ0LCA0LCAyMTEsIDEyOCwgCi0gICAgNDQsIDQsIDIxMSwgMTE5LCA0NCwgNCwgMjExLCAxMTYsIDQ0LCA0LCAyMTEsIDEzOCwgNDQsIDQsIDIxMSwgMTM3LCA0NCwgCi0gICAgNCwgMjExLCAxNjIsIDQ0LCA0LCAyMTEsIDEyNCwgNDQsIDQsIDIxMSwgMTIzLCA0NCwgNCwgMjExLCAxNDAsIDQ0LCA0LCAKLSAgICAyMTUsIDMzLCA0NCwgNCwgMjEyLCAxNjIsIDQ0LCA0LCAyMTIsIDE0MiwgNDQsIDQsIDIxMSwgMTAsIDQ0LCA0LCAyMTAsIAotICAgIDE3OSwgNDQsIDQsIDIxNCwgMTc3LCA0NCwgNCwgMjE0LCAxNjUsIDQ0LCA0LCAyMTUsIDE4LCA0NCwgNCwgMjEyLCAxMywgCi0gICAgNDQsIDQsIDIxMSwgMjUwLCA0NCwgNCwgMjE0LCAyMTcsIDQ0LCA0LCAyMzcsIDE1NywgNDQsIDQsIDIzNywgMywgNDQsIDQsIAotICAgIDIzNiwgMjM5LCA0NCwgNCwgMjM2LCAyNiwgNDQsIDQsIDIzNiwgMSwgNDQsIDQsIDIzNywgNjcsIDQ0LCA0LCAyMzcsIDQ4LCAKLSAgICA0NCwgNCwgMjM3LCAxNDcsIDQ0LCA0LCAyMzYsIDEzNiwgNDQsIDQsIDIzNiwgMTE3LCA0NCwgNCwgMjM3LCA3NiwgNDQsIDQsIAotICAgIDIyOCwgMjIzLCA0NCwgNCwgMjI4LCAyMjIsIDQ0LCA0LCAyMjgsIDIxNywgNDQsIDQsIDIyOCwgMjE2LCA0NCwgNCwgMjI4LCAKLSAgICAyMTMsIDQ0LCA0LCAyMjgsIDIxMiwgNDQsIDQsIDIyOCwgMjE5LCA0NCwgNCwgMjI4LCAyMTgsIDQ0LCA0LCAyMjgsIDIyMSwgCi0gICAgNDQsIDQsIDIyOCwgMjE1LCA0NCwgNCwgMjI4LCAyMTQsIDQ0LCA0LCAyMjgsIDIyMCwgNDQsIDQsIDIxMiwgMjA1LCAxNDAsIAotICAgIDEwOSwgMiwgMjAzLCA3NSwgMTQwLCAxMDksIDIsIDIxNiwgMTg2LCAxNDAsIDEwOSwgMiwgMjE2LCAxMDIsIDExNCwgMSwgCi0gICAgMjA3LCA5NSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDE3MywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTQ0LCA4NSwgCi0gICAgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAyNiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTE1LCA4NSwgMTA5LCAyLCAKLSAgICAyNDUsIDI0OSwgMjIyLCAxMjgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDcsIDkyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgCi0gICAgMjQ2LCAxOTksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDUsIDI1NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NiwgMTE2LCAKLSAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIwLCAyMzMsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDQsIDIxMiwgODUsIDEwOSwgCi0gICAgMiwgMjQ1LCAyNDksIDIwNywgMjI5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQzLCAxMTMsIDg1LCAxMDksIDIsIDI0NSwgCi0gICAgMjQ5LCAyMDcsIDIyNCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwMSwgMjAxLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjEwLCAKLSAgICAyMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwOSwgMTA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTM1LCA4NSwgMTA5LCAKLSAgICAyLCAyNDUsIDI0OSwgMjA5LCA0NywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyMSwgMTkxLCA4NSwgMTA5LCAyLCAyNDUsIAotICAgIDI0OSwgMjQ5LCAzMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMjA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAKLSAgICA2OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMTgwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI0LCA4MiwgODUsIAotICAgIDEwOSwgMiwgMjQ1LCAyNDksIDIwMiwgMjQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE1LCAyMjcsIDg1LCAxMDksIDIsIAotICAgIDI0NSwgMjQ5LCAyMjcsIDQ5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA1LCAxODksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKLSAgICAyMTMsIDkwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjExLCAxNjQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDM2LCAKLSAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTUyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI4LCAxMTMsIDg1LCAyMiwgMiwgCi0gICAgMjQ1LCAyNDksIDIxNywgMTI2LCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDY1LCA4NSwgMjMxLCAzNiwgCi0gICAgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE1LCA5NSwgODUsIAotICAgIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE3LCAxMDYsIDg1LCAyMiwgMiwgMjIwLCAzOSwgODUsIDIyLCAyLCAyNTEsIAotICAgIDI0MiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDIwMywgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgMTcyLCAxLCAyNDgsIAotICAgIDc5LCAyMjIsIDExNiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE5MCwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIAotICAgIDEsIDI0OCwgNzksIDIyMiwgMjAzLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxNTEsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDExNiwgCi0gICAgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxMjgsIDY3LCAxLCAyNTEsIDU3LCAyNDYsIAotICAgIDIzOCwgNjcsIDEsIDI1MSwgNTcsIDIwNywgMjAzLCA2NywgMSwgMjUxLCA1NywgMTM1LCA2NywgMSwgMjUxLCA1NywgMjE5LCAKLSAgICAxODQsIDY1LCAxLCAyNDAsIDE5OCwgMjQwLCAxOTcsIDI0NSwgMTg4LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDAsIAotICAgIDE5OCwgMjQ1LCAxODgsIDE0MywgMTQyLCAKKyAgICAwLCAyMDgsIDI0NCwgMjM4LCA0MywgODEsIDIxNCwgNjMsIDgxLCA0MSwgNTQsIDI0MCwgMTk0LCA1NCwgMjE2LCAyNywgNTQsIAorICAgIDI1MSwgODksIDI1MSwgMTMsIDQ5LCAyMTYsIDExNSwgNTEsIDIxNiwgMTE1LCAyNTAsIDE2NSwgOTMsIDU0LCAyNDYsIDcwLCAKKyAgICAyMzMsIDMyLCAyMzYsIDE4MywgMjA4LCA3NiwgMjA5LCAxNiwgMTcsIDE5OSwgODEsIDE3LCAxMDIsIDE3LCAxMDUsIDE3LCAKKyAgICAxNDcsIDE3LCAxNDksIDE3LCAxNjQsIDE3LCAxODcsIDE3LCAyMTAsIDEzNSwgMTcsIDE5MiwgMTcsIDIxOSwgMTEzLCAyNDYsIAorICAgIDc5LCAyMTAsIDE2NywgMjI0LCAyNDEsIDU0LCAyMzgsIDEyMiwgNTQsIDIzNSwgNjcsIDU0LCAyMTQsIDc5LCA4MSwgMjQ2LCAKKyAgICA2OCwgMjUwLCAxNTUsIDgsIDYsIDEsIDYyLCA4LCA2LCAxLCAyNTAsIDEwMywgOCwgNiwgMSwgMjQ3LCAyMjMsIDgsIDYsIDEsIAorICAgIDI0MiwgMTUzLCA4LCA2LCAxLCA3MiwgOCwgNiwgMSwgMjM4LCA1LCA4LCA2LCAxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjM0LCAKKyAgICAyNDcsIDgsIDYsIDEsIDcwLCA4LCA2LCAxLCAyMjcsIDI1MSwgOCwgNiwgMSwgMjI3LCAxMTgsIDgsIDYsIDEsIDE1NiwgOCwgCisgICAgNiwgMSwgMjIzLCAyNDMsIDgsIDYsIDEsIDIyMCwgMjE0LCA4LCA2LCAxLCA3NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDgsIDYsIAorICAgIDEsIDIxNCwgMTY3LCA4LCA2LCAxLCAxNDYsIDgsIDYsIDEsIDIxMiwgMTIyLCA4LCA2LCAxLCAyMDcsIDgzLCA4LCA2LCAxLCAKKyAgICA2NiwgOCwgNiwgMSwgMjAzLCAxNjgsIDgsIDYsIDEsIDIwMSwgMTQ3LCA4LCA2LCAxLCAyMDAsIDE5NSwgOCwgNiwgMSwgCisgICAgMjAwLCAxMjMsIDgsIDYsIDEsIDE5OSwgMTU3LCA0OSwgNTIsIDE1OSwgMjEzLCAxMDYsIDIwOSwgMTYsIDUxLCA1MiwgMTU5LCAKKyAgICAyNDYsIDE0NywgMjUxLCAyNTEsIDEyOCwgMjI0LCAxNzYsIDIzNSwgNzQsIDI1MSwgMjUxLCA4LCA0LCAxLCA2MiwgOCwgNCwgCisgICAgMSwgMjUwLCAxMDMsIDgsIDQsIDEsIDI0NywgMjIzLCA4LCA0LCAxLCAyNDIsIDE1MywgOCwgNCwgMSwgNzIsIDgsIDQsIDEsIAorICAgIDIzOCwgNSwgOCwgNCwgMSwgMjM2LCAxNTYsIDgsIDQsIDEsIDIzNCwgMjQ3LCA4LCA0LCAxLCA3MCwgOCwgNCwgMSwgMjI3LCAKKyAgICAyNTEsIDgsIDQsIDEsIDIyNywgMTE4LCA4LCA0LCAxLCAxNTYsIDgsIDQsIDEsIDIyMywgMjQzLCA4LCA0LCAxLCAyMjAsIAorICAgIDIxNCwgOCwgNCwgMSwgNzQsIDgsIDQsIDEsIDIxNiwgMjI2LCA4LCA0LCAxLCAyMTQsIDE2NywgOCwgNCwgMSwgMTQ2LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMiwgOCwgNCwgMSwgMjA3LCA4MywgOCwgNCwgMSwgNjYsIDgsIDQsIDEsIDIwMywgMTY4LCA4LCA0LCAKKyAgICAxLCAyMDEsIDE0NywgOCwgNCwgMSwgMjAwLCAxOTUsIDgsIDQsIDEsIDIwMCwgMTIzLCA4LCA0LCAxLCAxOTksIDE1NywgNDksIAorICAgIDI0MiwgMTk2LCAxNTksIDgzLCAyMjQsIDE3NiwgNTEsIDI0MiwgMTk2LCAxNTksIDIwNSwgMjQwLCAyMTgsIDI0MCwgMjA4LCAKKyAgICAyNDQsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCAyNDcsIDU4LCA1NCwgMjE1LCA1NiwgNTQsIDI0MiwgMTk1LCA1NCwgMjAwLCAKKyAgICA0MiwgNTQsIDI0OCwgNDYsIDE0OCwgMjExLCAxOTMsIDU0LCAyNDEsIDc0LCAyNDMsIDE5LCA1NCwgMjM3LCAxMjgsIDIxNywgCisgICAgMjksIDIyOCwgOTksIDIyNSwgMjMsIDUzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjE4LCAyMTUsIDU0LCAyMDksIDIzLCAKKyAgICAyMzMsIDMzLCAyMTMsIDE2MSwgNTQsIDIyMiwgMjI4LCAyNDEsIDE1NSwgNTQsIDIxNSwgMTEyLCA1NCwgMjA3LCAyMTMsIAorICAgIDEwNSwgMjA3LCAyMTMsIDE0NywgMjUxLCAyMzksIDI1MSwgMjUxLCAyMjEsIDIwOSwgNTQsIDIxNSwgMTYzLCA1NCwgMTAxLCAKKyAgICAyNDAsIDE4MiwgMjQ3LCA2OSwgMjA3LCAyMTMsIDEwMiwgMjIyLCAxMzYsIDIxNywgMjksIDIyOCwgOTksIDIxMywgNDEsIAorICAgIDUzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDIwMSwgMTY0LCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDIyOCwgNTAsIDIxNCwgCisgICAgNzksIDgxLCA4LCA2LCAxLCAzNSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIAorICAgIDI0NiwgMTQ2LCA4LCA2LCAxLCAzNSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAzNSwgCisgICAgMywgMjEzLCAyNywgNTYsIDgsIDYsIDEsIDI1MSwgMjIxLCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCA2OSwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NiwgOCwgCisgICAgNiwgMSwgMTk3LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAxNjksIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc0LCA4LCA2LCAKKyAgICAxLCAyMzgsIDc0LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjM1LCA3MywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDE2MywgMywgMjQxLCA3NCwgMjIxLCAxOSwgNTQsIDgsIDYsIDEsIDE2MywgMywgOTcsIDgsIDYsIDEsIDEwOCwgCisgICAgMywgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIAorICAgIDEwOCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDE2OSwgOCwgNiwgMSwgMjA2LCA1NCwgOCwgNCwgMSwgCisgICAgMjEwLCA3OSwgMjEyLCAxMjIsIDgsIDQsIDEsIDM1LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgMywgMTY5LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDM1LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDgsIDQsIAorICAgIDEsIDM1LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMjUxLCAyMjEsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgCisgICAgMTQ2LCA4LCA0LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIAorICAgIDIzMywgMTksIDMsIDE2OSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgCisgICAgNzQsIDgsIDQsIDEsIDIzOCwgNzQsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAyNDAsIDIzNSwgNTQsIDgsIDQsIDEsIDE2MywgMywgOTcsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjM1LCA3MywgOCwgNCwgMSwgMTA4LCAzLCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjQ2LCAKKyAgICAxNDYsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDE2OSwgOCwgNCwgMSwgMjA2LCAKKyAgICA1NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDM1LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1NywgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIAorICAgIDM1LCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMzUsIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyNDcsIDIyNCwgMywgMTY5LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDI0NywgCisgICAgMjI0LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAxMjUsIDgsIDYsIAorICAgIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgOTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCA5NywgOCwgNiwgMSwgMTk3LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTk3LCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMTk3LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDE5NywgMywgNzMsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMCwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ2LCAxNDYsIAorICAgIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ4LCA1NywgOCwgNiwgMSwgCisgICAgMjM2LCAxNTcsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMjQ2LCAxNDYsIAorICAgIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDk3LCA4LCA0LCAxLCAyMzQsIAorICAgIDI0OCwgMywgOTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAyMTcsIDExMCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDIzMywgMTksIDMsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMjQwLCAxODEsIDcwLCA4LCA2LCAzMywgMjI4LCAxNDksIDgsIDQsIDMzLCAyMjgsIDE0OSwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTIsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAKKyAgICAyNDcsIDY5LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjI2LCAzNywgOCwgNiwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDE2OSwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDE2OSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NywgNjksIDgsIAorICAgIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEwMSwgMjQwLCAxODIsIDgsIDQsIDEsIDIyNSwgMTkzLCAKKyAgICAzLCAxMDEsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjUsIDE5MywgMywgOTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA5NywgOCwgCisgICAgNiwgMSwgMjIwLCAyMTUsIDMsIDE2OSwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDE2OSwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQ3LCAxMjUsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjIwLCAyMTUsIDIxNSwgMzAsIDI0NywgMjM1LCAKKyAgICAyNTEsIDEzLCA4LCA2LCAxLCAyMzgsIDE2NSwgOCwgNCwgMSwgMjM4LCAxNjUsIDgsIDYsIDEsIDE2MywgMywgMjIyLCAyMjgsIAorICAgIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgMjQ4LCA1NywgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyNDgsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDUzLCAxNjksIDgsIDQsIDEsIDE2MywgMywgNTMsIDE2OSwgOCwgNiwgMzMsIAorICAgIDIxNywgMTIxLCA4LCA0LCAzMywgMjE3LCAxMjEsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDE2OSwgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMTY5LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDY5LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIxMiwgCisgICAgMTIzLCAzLCAxNjksIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxNjksIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ3LCA2OSwgOCwgNCwgMSwgCisgICAgMjEyLCAxMjMsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjEyLCAxMjMsIAorICAgIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIAorICAgIDIwNywgODQsIDMsIDk3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCA5NywgOCwgNiwgMSwgMTA4LCAzLCAyMDUsIDI0MCwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIAorICAgIDIyOCwgOCwgNiwgMSwgMTA4LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjEzLCAyNywgNTYsIDgsIDYsIDEsIDEwOCwgMywgNTMsIDE2OSwgOCwgCisgICAgNCwgMSwgMTA4LCAzLCA1MywgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgCisgICAgMTEwLCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyNDYsIDE0NiwgOCwgCisgICAgNiwgMSwgMjAwLCAxMjQsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIAorICAgIDIwMCwgMTI0LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMTY5LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgCisgICAgMTY5LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgNzMsIDU2LCA4LCA2LCAxLCAKKyAgICAxOTksIDE1OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTY4LCAyMTIsIAorICAgIDEyMiwgOCwgNCwgMSwgNjgsIDMsIDk3LCA4LCA2LCAxLCA2OCwgMywgMTE3LCA4LCA2LCAxLCA2OCwgMywgMjA1LCAxNTUsIAorICAgIDgsIDQsIDEsIDY4LCAzLCAyMDUsIDE1NSwgOCwgNiwgMSwgMTUwLCAxODcsIDgsIDQsIDEsIDE1MCwgMTg3LCA4LCA2LCAxLCAKKyAgICAxNzYsIDc0LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTE3LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMTE3LCA4LCA2LCAxLCAKKyAgICAyNTEsIDE5NiwgMjQyLCAxNTMsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAxMTcsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAyMDUsIAorICAgIDE1NSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIwNSwgMTU1LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjQxLCAxMzYsIDgsIDYsIAorICAgIDEsIDIxMywgMTA1LCA3MiwgOCwgNiwgMSwgMjExLCAyMTgsIDgsIDYsIDEsIDE3NiwgNzIsIDgsIDYsIDEsIDIzOCwgNiwgMywgCisgICAgMTE3LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDExNywgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDExNywgOCwgNiwgMSwgMjM2LCAKKyAgICA2MCwgOCwgNCwgMSwgMjMzLCA2OSwgOCwgNiwgMSwgMjI4LCA0MSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDYsIDEsIAorICAgIDIyNywgMTE5LCAzLCAxMTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAxMTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAxNDgsIAorICAgIDgsIDQsIDEsIDIyNSwgODksIDMsIDk3LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDYsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTY4LCA1MSwgMjI1LCAxNiwgOCwgNiwgMSwgMTYzLCAzLCAxMDEsIAorICAgIDIwNSwgMjQwLCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI0LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI0LCA4LCA2LCAxLCAKKyAgICAyMTcsIDEwNSwgOCwgNCwgMSwgMjE3LCAxMDUsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAxMTcsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI3LCAzLCAxMTcsIDgsIDEsIDE5OSwgMjE0LCA4LCA2LCAxLCAxNTAsIDEwNSwgOCwgNCwgMSwgMTUwLCAxMDUsIDgsIDYsIAorICAgIDEsIDIzOCwgOTQsIDgsIDEsIDIxMywgMTA1LCAyMzgsIDk1LCAyMjQsIDc0LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyMTYsIAorICAgIDE4NCwgMTE3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAxMTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDExNywgOCwgNiwgMSwgCisgICAgMjA3LCA4NCwgMywgMjEzLCAxMTEsIDExNywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNCwgOCwgNCwgMSwgMTA4LCAzLCAKKyAgICAyMzMsIDEyNCwgOCwgNiwgMSwgMjAzLCAyMjAsIDgsIDYsIDEsIDIwMywgMTY5LCAzLCAxMTcsIDgsIDYsIDEsIDIwMCwgCisgICAgMTI0LCAzLCAxMTcsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAxMTcsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMTk5LCAxNTgsIDMsIDk3LCA4LCA2LCAxLCAyMzgsIDgsIDgsIDYsIDEsIDIzOCwgOSwgMjEzLCAxMDQsIDgsIDQsIDEsIAorICAgIDIzOCwgOSwgMjEzLCAxMDQsIDgsIDQsIDEsIDIzOCwgOSwgMywgMjA3LCA2LCA4LCAxLCAxMjAsIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAxNTAsIDE2NCwgOCwgNCwgMSwgMTUwLCAxNjQsIDgsIDEsIDIyOCwgNTAsIDIzNSwgMTIzLCAyMDgsIDc3LCAzLCA5NywgOCwgCisgICAgMSwgMjAwLCAxOTgsIDgsIDEsIDI0MSwgMTI5LCAyNDYsIDEyMSwgOCwgMSwgMjI1LCA2MSwgMjQ2LCAxMjEsIDgsIDEsIAorICAgIDI1MSwgMTAyLCAyNDYsIDEyMSwgOCwgMSwgMjEzLCAxMTEsIDI0NiwgMTIxLCA4LCA2LCAxLCAyMzksIDk1LCAzLCAyNDcsIAorICAgIDEyNSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM5LCA5NSwgCisgICAgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyNCwgMTQyLCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNCwgMSwgMjI3LCAyNTEsIDgsIAorICAgIDQsIDEsIDIyNCwgMTQyLCA4LCA2LCAxLCAyMTksIDk5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgNCwgMSwgMjI3LCAyNTEsIAorICAgIDgsIDQsIDEsIDIxOSwgOTksIDgsIDYsIDEsIDM1LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMzUsIDMsIDI0NywgMTI1LCA4LCAKKyAgICA2LCAxLCAyMzMsIDE5LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDE2MywgCisgICAgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE2MywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQ3LCAxMjUsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDI0NywgMTI1LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjM1LCAKKyAgICA3MywgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjA0LCAxODUsIDcyLCA4LCA2LCAKKyAgICAxLCAzNSwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCAKKyAgICA4LCA2LCAxLCAzNSwgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAzLCA3MywgODgsIDI2LCAyMjIsIAorICAgIDIyOCwgOCwgNiwgMSwgMjUxLCAyMjIsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyNTEsIDIyMiwgMywgMjIyLCAyMjgsIDgsIAorICAgIDYsIDEsIDIzNiwgMTU3LCAzLCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDk3LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0NywgMTI1LCAKKyAgICA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDE2MywgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDE2MywgMywgMjE3LCAxMTEsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMTcsIDExMSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMzgsIDksIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzgsIDksIDMsIAorICAgIDI0NywgMTI1LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzOSwgOTQsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCA0LCAxLCAxOTksIDE1NywgOCwgNCwgMSwgMjM5LCA5NCwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjM2LCAxNTcsIDMsIDE2OSwgOCwgNiwgMSwgMjMzLCA2NiwgOCwgNiwgMSwgMjAwLCAxOTgsIDgsIDYsIDEsIAorICAgIDIyMCwgMjE1LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDIxMywgCisgICAgMjcsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAyNywgODgsIDI2LCAxNjksIDgsIDYsIDEsIDI1MSwgMjIyLCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDI1MSwgMjIyLCAzLCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjA4LCA0NywgMjYsIDE2OSwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCAyMDgsIDQ3LCAyNiwgMTY5LCA4LCA2LCAxLCAzNSwgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDM1LCAzLCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDUzLCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAxOTcsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMjMzLCAxOSwgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDE2MywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMjE0LCAzMywgMywgCisgICAgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDUzLCAKKyAgICAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgNzEsIDU3LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMywgMywgMjQ2LCA3MSwgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NiwgNzEsIDU3LCA4LCA0LCAKKyAgICAxLCAyMDcsIDg0LCAzLCAyNDYsIDcxLCA1NywgOCwgNiwgMSwgMTk5LCAyMzIsIDgsIDQsIDEsIDE5OSwgMjMyLCA4LCA2LCAKKyAgICAxLCAyMzQsIDI0OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjIwLCAKKyAgICAyMTUsIDMsIDE2OCwgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDIsIDE5OCwgOCwgNiwgMSwgMjE3LCAKKyAgICAzLCA4LCA0LCAxLCAyMTcsIDMsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAxMTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAxMTcsIAorICAgIDgsIDYsIDEsIDM1LCAzLCA3MywgNTYsIDgsIDQsIDEsIDM1LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCA2OSwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAxNjMsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNCwgCisgICAgMSwgMTYzLCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyMjIsIAorICAgIDIyOCwgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCA3MywgNTYsIDgsIDYsIDEsIDE2MywgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDE2MywgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDI0MCwgMTgxLCAyMjcsIDI1MSwgCisgICAgOCwgNCwgMSwgMjQxLCAyMzAsIDI0MSwgMzQsIDgsIDQsIDEsIDIxNCwgOTgsIDI0MSwgMzQsIDgsIDYsIDEsIDM1LCAzLCAKKyAgICA5NywgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDk3LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgOTcsIDgsIDYsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxNDgsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjA3LCAKKyAgICAxODMsIDIwNywgNiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIwNywgMTgzLCAyMDcsIDYsIDgsIDYsIDEsIDIzNSwgMTIzLCAKKyAgICAyMDgsIDc2LCA4LCA0LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgNiwgMSwgNjgsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIAorICAgIDE0OCwgOCwgNiwgMSwgMjA0LCAxODUsIDIwMywgMTY4LCA4LCA2LCAxLCAxOTcsIDMsIDk3LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDk3LCA4LCA2LCAxLCAyMjcsIDI1MiwgMywgOTcsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCA5NywgOCwgNiwgMSwgNCwgMjE0LCAKKyAgICAxNjgsIDMsIDIzMywgMTg3LCAyMDcsIDYsIDgsIDQsIDEsIDIxNCwgMTY4LCAzLCAyMzMsIDE4NywgMjA3LCA2LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCA5NywgOCwgNCwgMSwgMjE0LCAzMywgMywgOTcsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCA5NywgOCwgCisgICAgNCwgMSwgMjAwLCAxMjQsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgNjIsIDgsIDQsIDEsIDI1MSwgMTEyLCA4LCA0LCAxLCAKKyAgICAyMDQsIDE4NSwgMjUxLCAxMTIsIDgsIDQsIDEsIDY4LCAzLCAxMTcsIDgsIDQsIDEsIDE3NiwgNzQsIDgsIDQsIDEsIDI0NywgCisgICAgMjI0LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIwNywgNiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDExNywgOCwgNCwgMSwgMjEzLCAxMDUsIDcyLCA4LCA0LCAxLCAyMTEsIDIxOCwgOCwgNCwgMSwgMjExLCAyMTksIDMsIDExNywgCisgICAgOCwgNCwgMSwgMTc2LCA3MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIAorICAgIDE5NywgMywgMTE3LCA4LCA0LCAxLCAyNDYsIDExMCwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDQsIDEsIDI0MCwgMTgxLCAKKyAgICAyMjcsIDI1MiwgMywgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDQsIDEsIDEzNSwgMjM2LCAxNTYsIDgsIDEsIAorICAgIDQsIDYsIDIzNiwgMTU2LCA4LCA0LCAxLCAyMzYsIDYwLCA4LCA0LCAxLCAyMTMsIDIxNCwgMjMzLCAxMjQsIDgsIDQsIDEsIAorICAgIDIwNCwgMTg1LCAyMzQsIDI0NywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDExNywgOCwgNCwgMSwgMjM0LCAxMDQsIDMsIDExNywgCisgICAgOCwgNCwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDQsIDEsIDIyOCwgNDEsIDgsIDEsIDQsIDYsIDcwLCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0OCwgMjI2LCA4LCA0LCAxLCAyMjUsIDE5MywgCisgICAgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjI0LCAyMjYsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgNCwgCisgICAgMSwgMjA0LCAxODUsIDIyMywgMjQ0LCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAxMTcsIDgsIDQsIAorICAgIDEsIDIyMCwgMjE1LCAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjEzLCAxMTEsIDExNywgOCwgMSwgNCwgNiwgCisgICAgMjIwLCAyMTQsIDgsIDQsIDEsIDI0OSwgNzEsIDc0LCA4LCAxLCA0LCA2LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjQ2LCAxMTAsIAorICAgIDIxNywgODMsIDgsIDQsIDEsIDIxNSwgMjI5LCA4LCA0LCAxLCAyMDQsIDE4NSwgMTQ2LCA4LCA0LCAxLCAyMDQsIDE4NSwgCisgICAgMjE0LCAzMywgMywgMTY4LCAyMjUsIDE2LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE0LCAzMywgMywgMTE3LCA4LCA0LCAxLCAKKyAgICAyMTQsIDMzLCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIwNywgNiwgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMjM3LCA2OCwgOCwgNCwgMSwgMjEzLCAxMDUsIDIxNCwgMzMsIDMsIDIzNywgNjgsIDgsIDEsIDQsIDYsIDE0NiwgOCwgCisgICAgMSwgNCwgNiwgMjI4LCA1MCwgMTQ2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTE3LCA4LCA0LCAxLCAyMzgsIDk0LCA4LCA0LCAKKyAgICAxLCAyNDAsIDE4MSwgMjI3LCAyNTIsIDMsIDIwOCwgNDcsIDI2LCAxMTcsIDgsIDQsIDEsIDIwOCwgMTkwLCAyMTMsIDEwNSwgCisgICAgMjM4LCA5NCwgOCwgNCwgMSwgMjM4LCA5NSwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDcsIDgzLCA4LCA0LCAKKyAgICAxLCAyMDcsIDg0LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxMDgsIDE0OCwgOCwgNCwgMSwgMjAzLCAyMjAsIDgsIDQsIAorICAgIDEsIDIwMywgMTY5LCAzLCAxMTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIDE2OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIwMSwgCisgICAgMTQ3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAwLCAxMjMsIDgsIDEsIDQsIDYsIDIwMCwgMTIzLCA4LCA0LCAxLCAxOTksIAorICAgIDE1OCwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMzgsIDgsIAorICAgIDgsIDQsIDEsIDIzOCwgOSwgMywgMjQyLCAxOTgsIDgsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCAxLCAyMTUsIDIzNiwgCisgICAgMjAyLCAxODksIDIzNiwgMjA3LCA4LCAxLCAyMjgsIDUwLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgMSwgMjA4LCA1NSwgMjQ3LCAKKyAgICAyMjMsIDgsIDEsIDI0OCwgMTcyLCAyNDYsIDEyMSwgOCwgMSwgNCwgNiwgMjUwLCAxMDMsIDgsIDQsIDEsIDI0NiwgMTEwLCAKKyAgICAxNzYsIDcyLCA4LCAxLCA0LCA2LCAyMzYsIDE1NywgMywgMTE3LCA4LCAxLCA0LCA2LCAyMzQsIDI0NywgOCwgNCwgMSwgCisgICAgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjI3LCAxMTgsIDgsIDEsIDQsIDYsIDE1NiwgOCwgCisgICAgNCwgMSwgMjE0LCAxNjgsIDMsIDExNywgOCwgMSwgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCAxLCAyMTMsIDEwNSwgCisgICAgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCA0LCAxLCAyMzksIDk1LCAyNDEsIDM0LCA4LCA0LCAxLCAyNDEsIDEwMiwgCisgICAgMjQxLCAzNCwgOCwgNCwgMSwgMjM5LCA5NSwgMjQxLCAzNSwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNSwgMzQsIDI0MSwgCisgICAgMzQsIDgsIDQsIDEsIDIwNiwgMTUxLCAyNDEsIDM0LCA4LCA0LCAxLCAyMDYsIDIwOCwgMjQxLCAzNSwgMywgMjQyLCAxOTgsIAorICAgIDgsIDQsIDEsIDIzNywgMTI1LCAyNDEsIDM0LCA4LCA0LCAxLCAyMjQsIDQ0LCAyNDEsIDM0LCA4LCA0LCAxLCAyMjMsIDI0NSwgCisgICAgMjQxLCAzNCwgOCwgMSwgMjQ4LCAxNzIsIDIxNiwgMjYsIDgsIDEsIDI0OCwgMTgwLCAyMTYsIDI2LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMjM0LCAyNDgsIDMsIDIzNywgNjgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMzQsIDI0OCwgMywgMjM3LCA2OSwgMjYsIAorICAgIDIwNywgNiwgNjcsIDEsIDQsIDIzNCwgMjQ3LCA2NywgMSwgNCwgMjM0LCAyNDgsIDMsIDExNywgNjcsIDEsIDQsIDIyNywgCisgICAgMjUxLCA2NywgMSwgNCwgMTQ2LCA2NywgMSwgNCwgMjA0LCAxODUsIDE0NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMTQsIDMzLCAKKyAgICAzLCAxMTcsIDY3LCAxLCA0LCA2LCAyMjgsIDUwLCAxNDYsIDY3LCAxLCA0LCAyMDEsIDE0NywgNjcsIDEsIDQsIDIwMCwgCisgICAgMTIzLCA2NywgMSwgMjE1LCAxNCwgNjcsIDEsIDUzLCAyMTUsIDE0LCA2NywgMSwgMjA0LCAxODUsIDI0NiwgNzAsIDY3LCAxLCAKKyAgICAyNTEsIDEzLCA2NywgMSwgMjEzLCAxMDUsIDI0NiwgNzAsIDY3LCAxLCA1MSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgNDksIAorICAgIDE2NywgMjEzLCAyNiwgNjcsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA2NywgMSwgMjEzLCAxMDUsIDIzNSwgMTIzLCAyMDgsIAorICAgIDc2LCA2NywgMSwgNDksIDI1MCwgMjAyLCA2NywgMSwgNTEsIDI1MCwgMjAyLCA2NywgMSwgMTE1LCAyNTAsIDIwMiwgNjcsIAorICAgIDEsIDEyNywgMjUwLCAyMDIsIDY3LCAxLCAyNDYsIDE0NywgMjUxLCAyNTEsIDI0NywgMTI1LCA2NywgMSwgODMsIDIyNCwgCisgICAgMTc2LCA2NywgMSwgMjIyLCAyMjgsIDY3LCAxLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMzUsIDc0LCAyNTEsIAorICAgIDI1MSwgNjcsIDEsIDEyOCwgODMsIDIyNCwgMTc2LCA2NywgMSwgMTI4LCAyMjIsIDIyOCwgNjcsIDEsIDEyOCwgMjM1LCA3NCwgCisgICAgMjUxLCAyNTEsIDY3LCAxLCAxMjgsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIwNSwgOTUsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAxNjcsIDIwNSwgOTUsIDI0NiwgNzksIDY3LCAxLCAyNDcsIDU0LCA1MSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgMjQ3LCA1NCwgCisgICAgNDksIDE2NywgMjEzLCAyNiwgNjcsIDEsIDExNSwgMjA3LCAxNywgNjcsIDEsIDEyNywgMjA3LCAxNywgNjcsIDEsIDkzLCAKKyAgICA1NCwgNjcsIDEsIDIyMSwgMTU3LCA1NCwgMjQ4LCA1NywgNzMsIDU2LCAyMTMsIDI3LCA1NiwgMjE3LCAxMTAsIDQsIDIwNSwgCisgICAgMjQwLCA1MywgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjEzLCA4OSwgMTE3LCA2NywgMSwgMjQyLCAyMzUsIDI1MSwgCisgICAgMjUxLCA2NywgMSwgNCwgMjM2LCA2MCwgNjcsIDEsIDQsIDE1NiwgNjcsIDEsIDQsIDIxMiwgMTIyLCA2NywgMSwgNCwgMjAwLCAKKyAgICAxOTUsIDY3LCAxLCA0LCAyMTMsIDEwNSwgMjM1LCAxMjMsIDIwOCwgNzYsIDY3LCAxLCAyMzgsIDI5LCAxNTAsIDE0OCwgNjcsIAorICAgIDEsIDEyMiwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIDE1MCwgMTQ4LCA2NywgMSwgCisgICAgMjM4LCAyOCwgMTUwLCAxNDgsIDY3LCAxLCAxOTksIDI1NSwgMjQxLCAxMjYsIDE1MCwgODEsIDY3LCAxLCAyMDAsIDc2LCAKKyAgICAyNDEsIDEyNiwgMTUwLCA4MSwgNjcsIDEsIDIwMiwgMTg3LCA2NywgMSwgMjA0LCAxLCA2NywgMSwgNTMsIDI1MSwgMTMsIAorICAgIDY3LCAxLCAxMjgsIDEyNywgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDExNSwgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDQ5LCAKKyAgICAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgNTEsIDI1MCwgMjAyLCA2NywgMSwgMTI4LCAyMTMsIDI2LCA2NywgMSwgMTAxLCAyMzUsIAorICAgIDc0LCAyNTEsIDI1MSwgNjcsIDEsIDEwMSwgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCA2NywgMSwgMTAxLCA1MywgMjUxLCAKKyAgICAyMzksIDI1MSwgMjUxLCA2NywgMSwgMTI4LCAyMDUsIDI0MCwgNjcsIDEsIDIxMywgMjIwLCAyNDYsIDc5LCA2NywgMSwgCisgICAgMjQ4LCAyNDQsIDEyMiwgMjA1LCAxNzQsIDY3LCAxLCAyMzgsIDE3MSwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDI0OCwgMjQ0LCAKKyAgICAxMjgsIDIwNSwgMTc0LCA2NywgMSwgMjM4LCAxNzEsIDEyOCwgMjA1LCAxNzQsIDY3LCAxLCAyMTAsIDU2LCA2NywgMSwgCisgICAgMTc2LCAyMTAsIDU2LCA2NywgMSwgMTI4LCA0OSwgNDgsIDM4LCAyMzUsIDc0LCAyNTEsIDI1MSwgMzgsIDI1MSwgMjM5LCAKKyAgICAyNTEsIDI1MSwgMzgsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMzgsIDIwNSwgMjQwLCAzOCwgMjIyLCAyMjgsIDM4LCAyMTYsIAorICAgIDI0MSwgMzgsIDI0OCwgNTcsIDM4LCA3MywgNTYsIDM4LCAyNDEsIDc0LCAzOCwgMjMzLCAxODcsIDU2LCAzOCwgMjEzLCAyNywgCisgICAgNTYsIDM4LCA1MywgMjUxLCAyMzksIDI1MSwgMjUxLCAzOCwgMjQ3LCAxMjUsIDM4LCA4MywgMjI0LCAxNzcsIDU2LCAzOCwgCisgICAgNTMsIDgzLCAyMjQsIDE3NywgNTYsIDM4LCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDM4LCAyNDcsIDE0OSwgMzgsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDM4LCAyMDQsIDE4NSwgMjQ2LCA3MSwgNTYsIDM4LCAyNDYsIDcxLCA1NiwgMzgsIDIxMywgMTA1LCAKKyAgICAyNDYsIDcxLCA1NiwgMzgsIDI0NiwgNzEsIDg4LCAyMTMsIDQ2LCAzOCwgMjM1LCA3NCwgMjUxLCAyNTIsIDU3LCAzOCwgCisgICAgMjUxLCAyMzksIDI1MSwgMjUyLCA1NywgMzgsIDQ5LCAyMDcsIDE4LCA1NywgMzgsIDUxLCAyMDcsIDE4LCA1NywgMzgsIDQ5LCAKKyAgICAyNTEsIDcxLCA1NiwgMzgsIDIzMywgMTI0LCAzOCwgNDksIDE2NywgMjEzLCAyNywgNTcsIDM4LCAxMTUsIDIwNywgMTgsIAorICAgIDU3LCAzOCwgMTI3LCAyMDcsIDE4LCA1NywgMzgsIDkzLCAyLCA1NywgMzgsIDIyMSwgMTU3LCAyLCA1NywgMzgsIDIxNiwgCisgICAgMTgyLCAyMzMsIDE4NywgNTcsIDM4LCAyMTMsIDExMSwgMjMzLCAxODcsIDU3LCAzOCwgNzMsIDU3LCAzOCwgMjQxLCA3NSwgCisgICAgNTcsIDM4LCAyMTMsIDI3LCA1NywgMzgsIDI0NiwgNzEsIDU3LCAzOCwgMjQ3LCA2OSwgMzgsIDIxNywgMTEwLCAzOCwgODMsIAorICAgIDIyNCwgMTc3LCA1NywgMzgsIDI0OCwgNTEsIDU3LCAzOCwgMjI4LCA1MCwgNTMsIDI1MCwgMjM1LCA1NywgMzgsIDI0NywgCisgICAgMTI2LCA1NywgMzgsIDI0NiwgMTQ3LCAyNTEsIDI1MiwgNTcsIDM4LCAyNDgsIDU4LCA1NywgMzgsIDIyOCwgNTAsIDI0OCwgCisgICAgNTgsIDU3LCAzOCwgMjA1LCAyNDEsIDU3LCAzOCwgMjIyLCAyMjksIDU3LCAzOCwgMTI4LCAyMjQsIDE3NiwgMzgsIDUzLCAKKyAgICAxMjgsIDIyNCwgMTc2LCAzOCwgMjA1LCAyNDEsIDIxNiwgMjQyLCAzOCwgMjA5LCAyNTAsIDIwOCwgNDcsIDIxNiwgMjQyLCAKKyAgICAzOCwgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgMzgsIDIwOSwgMjUwLCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDE2OCwgCisgICAgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA1MSwgMTY3LCAyMTMsIDI3LCA1NywgMzgsIDIyOCwgNTAsIDI0OCwgNTEsIDU3LCAKKyAgICAzOCwgNTIsIDU3LCAzOCwgMjExLCAyMDEsIDU3LCAzOCwgMjAwLCAxOTYsIDU2LCAzOCwgODMsIDIwNSwgMjQwLCAzOCwgNTMsIAorICAgIDIxNiwgMjQxLCAzOCwgMjM1LCA3NCwgMTUwLCA4MSwgMzgsIDI1MSwgMjM5LCAxNTAsIDgxLCAzOCwgMzEsIDIxNiwgMjAsIAorICAgIDM4LCAzMSwgMjI2LCA1OCwgMzgsIDMxLCAyNDEsIDY4LCAyMDUsIDE2MiwgMzgsIDMxLCAxOTksIDIxOSwgMzgsIDI0OCwgCisgICAgNTEsIDU2LCAzOCwgMjM4LCAxMjIsIDIsIDU3LCAzOCwgNTMsIDgzLCAyMjQsIDE3NywgNTcsIDM4LCA0OSwgMjUxLCA3MSwgCisgICAgNTcsIDM4LCAyMTgsIDIxNSwgMjA1LCAyNDEsIDU2LCAzOCwgMjMzLCAxOTMsIDU2LCAzOCwgMjUxLCAxMTcsIDE2MCwgMjA1LCAKKyAgICAxODYsIDU2LCAzOCwgNDksIDUxLCA1NSwgNTcsIDM4LCAxODIsIDU1LCA1NywgMzgsIDIzNSwgODAsIDIyNywgMTYxLCAzOCwgCisgICAgNTEsIDI1MCwgMjAzLCA1NiwgMzgsIDQ5LCAxNjcsIDIxMywgMjcsIDU2LCAzOCwgMjM3LCAxMjIsIDM4LCAyMDAsIDE5NiwgCisgICAgNTcsIDM4LCA0OSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDI1MCwgMjAzLCA1NywgMzgsIDUxLCAyNTAsIDIwMywgMjYsIAorICAgIDExNSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDE2NywgMjEzLCAyNywgNTYsIDM4LCA3MywgODgsIDIxMywgNDYsIDM4LCAKKyAgICAyNTAsIDE2NiwgNTcsIDM4LCA1MywgMjEzLCAyNywgNTcsIDM4LCAxOTksIDI3LCA1NiwgMzgsIDUzLCAyNDgsIDU4LCA1NywgCisgICAgMzgsIDUzLCAyNDgsIDU3LCAzOCwgNTMsIDIyMiwgMjI4LCAzOCwgNTMsIDIyMiwgMjI5LCA1NywgMzgsIDUzLCAyMDUsIAorICAgIDI0MCwgMzgsIDUzLCAyMjgsIDUwLCAyNDgsIDU3LCAzOCwgNTMsIDg3LCA1NSwgNTcsIDM4LCA4LCA0LCAxLCA2MiwgMzgsIAorICAgIDgsIDQsIDEsIDcyLCAzOCwgOCwgNCwgMSwgNzAsIDM4LCA4LCA0LCAxLCA3NCwgMzgsIDgsIDQsIDEsIDY2LCAzOCwgOCwgNCwgCisgICAgMSwgMjQ3LCAyMjMsIDM4LCA4LCA0LCAxLCAyNDIsIDE1MywgMzgsIDgsIDQsIDEsIDIzNCwgMjQ3LCAzOCwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDMsIDM4LCA4LCA0LCAxLCAxNDYsIDM4LCA4LCA0LCAxLCAyMDcsIDgzLCAzOCwgOCwgNCwgMSwgMjAzLCAxNjgsIAorICAgIDM4LCA4LCA0LCAxLCAyMDAsIDE5NSwgMzEsIDYsIDEsIDIzNCwgOTIsIDMxLCA0LCAxLCAyMzQsIDkyLCAzMSwgNiwgMSwgCisgICAgMjUwLCAyMzQsIDIxMiwgMTYsIDMxLCA0LCAxLCAyNTAsIDIzNCwgMjEyLCAxNiwgMzEsIDIxOCwgOTMsIDU0LCAzMSwgMjI0LCAKKyAgICA1NCwgMjE4LCA5MywgNTQsIDMxLCA2LCAxLCAyMTYsIDE2NywgMjQxLCA0MiwgMzEsIDQsIDEsIDIxNiwgMTY3LCAyNDEsIAorICAgIDQyLCAzMSwgMTk5LCAyMTksIDMxLCA0LCAyMTMsIDEwNSwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNCwgMjM5LCAKKyAgICAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDQsIDIxMywgMTA1LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIAorICAgIDk5LCAzMSwgMjE0LCA3OSwgODEsIDMxLCA2LCAxLCAxOTksIDIyNSwgMzEsIDIwNSwgMTYyLCAzMSwgMjQxLCA2OCwgMjA1LCAKKyAgICAxNjIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjA1LCAxNjIsIDMxLCAyNTEsIDU2LCAyMDYsIDE3NywgMzEsIDYsIDEsIAorICAgIDIzOCwgMTI1LCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjI4LCA0MiwgCisgICAgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMDUsIAorICAgIDE2MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIAorICAgIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjUxLCAxMTIsIDMxLCA2LCAxLCAyNDgsIDIwOCwgMzEsIDYsIDEsIDIzNiwgNjAsIDMxLCAKKyAgICA2LCAxLCAyNDEsIDEzNiwgMzEsIDYsIDEsIDIzOCwgMTI0LCAzMSwgNiwgMSwgMTk5LCA4MCwgMzEsIDYsIDEsIDIzOCwgNzksIAorICAgIDMxLCA2LCAxLCAyMDYsIDg4LCAzMSwgNiwgMSwgMjI4LCA0MSwgMzEsIDYsIDEsIDIyNywgNTQsIDMxLCA2LCAxLCAyMjUsIAorICAgIDg3LCAzMSwgNiwgMSwgMjIxLCA0MSwgMzEsIDYsIDEsIDIxOCwgMTMzLCAzMSwgNiwgMSwgMjAwLCAxNjksIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgxLCAzMSwgNiwgMSwgMjE1LCAyMDQsIDMxLCA2LCAxLCAyMTMsIDkwLCAzMSwgNiwgMSwgMjA5LCAxNjMsIDMxLCAKKyAgICA2LCAxLCAyMDYsIDIyMSwgMzEsIDYsIDEsIDIwMywgMjIwLCAzMSwgNiwgMSwgMjE1LCAyMjksIDMxLCA2LCAxLCAyNDYsIAorICAgIDIzNiwgMzEsIDYsIDEsIDIxNCwgMjM1LCAzMSwgNiwgMSwgMjE3LCA4MywgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgCisgICAgNjcsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2NywgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDUsIDE2MiwgMzEsIAorICAgIDQsIDEsIDIzOCwgMTI1LCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgCisgICAgMjI4LCA0MiwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIwNSwgMTYyLCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTIsIDMxLCA0LCAxLCAyNDgsIDIwOCwgMzEsIDQsIDEsIDIzNiwgNjAsIDMxLCA0LCAxLCAyNDEsIAorICAgIDEzNiwgMzEsIDQsIDEsIDIzOCwgMTI0LCAzMSwgNCwgMSwgMTk5LCA4MCwgMzEsIDQsIDEsIDIzOCwgNzksIDMxLCA0LCAxLCAKKyAgICAyMDYsIDg4LCAzMSwgNCwgMSwgMjI4LCA0MSwgMzEsIDQsIDEsIDIyNywgNTQsIDMxLCA0LCAxLCAyMjUsIDg3LCAzMSwgNCwgCisgICAgMSwgMjIxLCA0MSwgMzEsIDQsIDEsIDIxOCwgMTMzLCAzMSwgNCwgMSwgMjAwLCAxNjksIDMxLCA0LCAxLCAyMTcsIDgxLCAKKyAgICAzMSwgNCwgMSwgMjE1LCAyMDQsIDMxLCA0LCAxLCAyMTMsIDkwLCAzMSwgNCwgMSwgNDcsIDIwOSwgMTYzLCAzMSwgNCwgMSwgCisgICAgMjA5LCAxNjMsIDMxLCA0LCAxLCAyMDYsIDIyMSwgMzEsIDQsIDEsIDIwMywgMjIwLCAzMSwgNCwgMSwgMjE1LCAyMjksIDMxLCAKKyAgICA0LCAxLCAyNDYsIDIzNiwgMzEsIDQsIDEsIDIxNCwgMjM1LCAzMSwgNCwgMSwgMjE3LCA4MywgMzEsIDQsIDEsIDIyOCwgNDIsIAorICAgIDMsIDI0MSwgNjcsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2NywgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIwNSwgCisgICAgMTYyLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjA1LCAxNjIsIDMxLCAKKyAgICA2LCAyMjcsIDgzLCA5OSwgMzEsIDI0OCwgMjA5LCA5OSwgMzEsIDIwNiwgODksIDk5LCAzMSwgMjAzLCAyMjEsIDMsIDIzMywgCisgICAgMTg3LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAyNTEsIDIzOSwgMjYsIDIzMywgMTg3LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAKKyAgICAyNDEsIDc1LCAyNiwgMjMzLCAxODcsIDk5LCAzMSwgMjE1LCAyMzAsIDk5LCAzMSwgMjE1LCAyMDUsIDk5LCAzMSwgMjI3LCAKKyAgICA4MywgOTksIDMxLCAxLCAyNTAsIDIzNCwgMjI2LCA2MiwgMzEsIDQsIDEsIDI1MCwgMjM0LCAyMjYsIDYyLCAzMSwgMSwgCisgICAgMjA4LCA4NiwgMzEsIDQsIDEsIDIwOCwgODYsIDMxLCAxLCAyNDEsIDQyLCAzMSwgNCwgMSwgMjQxLCA0MiwgMzEsIDEsIAorICAgIDIyNiwgNjIsIDMxLCA0LCAxLCAyMjYsIDYyLCAzMSwgMSwgMjEyLCAxNiwgMzEsIDQsIDEsIDIxMiwgMTYsIDg1LCA2LCAxLCAKKyAgICAyMTAsIDU3LCA4NSwgNCwgMSwgMjEwLCA1NywgODUsIDYsIDEsIDIzNywgMTMyLCA4NSwgNCwgMSwgMjM3LCAxMzIsIDg1LCAKKyAgICA2LCAxLCAyMjYsIDE5MCwgODUsIDQsIDEsIDIyNiwgMTkwLCA4NSwgNiwgMSwgMjMzLCAxNzgsIDg1LCA0LCAxLCAyMzMsIAorICAgIDE3OCwgODUsIDYsIDEsIDIzNiwgNTUsIDg1LCA0LCAxLCAyMzYsIDU1LCA4NSwgNiwgMSwgMjEwLCAyMywgODUsIDQsIDEsIAorICAgIDIxMCwgMjMsIDg1LCA2LCAxLCAyNDEsIDE1MiwgODUsIDQsIDEsIDI0MSwgMTUyLCAzMSwgMjI3LCA1NSwgOTksIDMxLCAKKyAgICAyMTMsIDkxLCA5OSwgMzEsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDEsIDE5OSwgMjI1LCAzMSwgNiwgMjA2LCA4OSwgCisgICAgOTksIDMxLCAyMjQsIDI0LCAyMzgsIDEyNSwgOTksIDMxLCAyMTMsIDEwNSwgMjI0LCAyNCwgMjM4LCAxMjUsIDk5LCAzMSwgCisgICAgNiwgMSwgMjEwLCA4LCAzMSwgNCwgMSwgMjEwLCA4LCAzMSwgNiwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgMSwgCisgICAgMjEyLCAxMywgMzEsIDQsIDEsIDIxMiwgMTMsIDMxLCAyMTMsIDkxLCAzLCAyMDgsIDQ3LCA5OSwgMzEsIDYsIDIxMywgMTA1LCAKKyAgICAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgCisgICAgMjEzLCAxMDUsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDM3LCA2LCAxLCAyMjgsIDE3OSwgMywgMjM1LCAKKyAgICA3MywgMzcsIDYsIDEsIDIyOCwgNDUsIDM3LCA2LCAxLCAyNDAsIDIyOCwgMzcsIDYsIDEsIDIzNSwgMTMyLCAzNywgNiwgMSwgCisgICAgMjA0LCAxNywgMjI4LCAxNzgsIDM3LCA2LCAxLCAyMzksIDkwLCAzNywgNiwgMSwgMjQ3LCAyMzMsIDcwLCAzNywgNiwgMSwgCisgICAgMjAwLCA5LCAzNywgNiwgMSwgMjI3LCAyMjcsIDM3LCA2LCAxLCAyMjQsIDE0MSwgMzcsIDYsIDEsIDIxOSwgOTEsIDM3LCA2LCAKKyAgICAxLCAyMDUsIDIwLCAzNywgNiwgMSwgMjI2LCAxMTEsIDM3LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCAzNywgNiwgMSwgCisgICAgMjA5LCAyNTAsIDY2LCAzNywgNiwgMSwgMjM5LCA4NiwgMzcsIDYsIDEsIDYyLCAzNywgNiwgMSwgMjQ5LCA4LCAzNywgNiwgCisgICAgMSwgMjAzLCA1OSwgMzcsIDYsIDEsIDIzNSwgMTg1LCAzNywgNiwgMSwgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMjgsIDE3OCwgCisgICAgMzcsIDYsIDEsIDE5OSwgNjgsIDM3LCA2LCAxLCAxOTksIDg5LCAzNywgNiwgMSwgNzAsIDM3LCA2LCAxLCAyMDksIDI1MCwgCisgICAgNzAsIDM3LCA2LCAxLCAxNjEsIDM3LCA2LCAxLCAyMzgsIDIwOSwgMzcsIDYsIDEsIDIzOCwgMTkwLCAzNywgNiwgMSwgMjM4LCAKKyAgICAxNzksIDM3LCA2LCAxLCA3NCwgMzcsIDYsIDEsIDIxNiwgNzMsIDM3LCA2LCAxLCAyMzgsIDExNSwgMzcsIDYsIDEsIDIzOCwgCisgICAgMTA0LCAzNywgNiwgMSwgMjA2LCAyMDEsIDM3LCA2LCAxLCA2NiwgMzcsIDYsIDEsIDIzOCwgMjQ4LCAzNywgNiwgMSwgMTQ0LCAKKyAgICAzNywgNiwgMSwgMjA1LCAyNiwgMzcsIDYsIDEsIDI0NywgOCwgMzcsIDYsIDEsIDIxMCwgMTE0LCAzNywgNiwgMSwgMjEwLCAKKyAgICA2OCwgMzcsIDYsIDEsIDIzNCwgMTY1LCA1NCwgMzcsIDYsIDEsIDIwMCwgMjksIDM3LCA2LCAxLCAyMDksIDIzLCA1NCwgMzcsIAorICAgIDYsIDEsIDcyLCAzNywgNiwgMSwgMTk5LCAyMTEsIDM3LCA2LCAxLCAxODMsIDM3LCA0LCAxLCA2MiwgMzcsIDQsIDEsIDI0OSwgCisgICAgOCwgMzcsIDQsIDEsIDIwMywgNTksIDM3LCA0LCAxLCAyMzUsIDE4NSwgMzcsIDQsIDEsIDI0MSwgMTc1LCAzNywgNCwgMSwgCisgICAgMjI4LCAxNzgsIDM3LCA0LCAxLCAxOTksIDY4LCAzNywgNCwgMSwgMTk5LCA4OSwgMzcsIDQsIDEsIDcwLCAzNywgNCwgMSwgCisgICAgMjA5LCAyNTAsIDcwLCAzNywgNCwgMSwgMTYxLCAzNywgNCwgMSwgMjM4LCAyMDksIDM3LCA0LCAxLCAyMzgsIDE5MCwgMzcsIAorICAgIDQsIDEsIDIzOCwgMTc5LCAzNywgNCwgMSwgNzQsIDM3LCA0LCAxLCAyMTYsIDczLCAzNywgNCwgMSwgMjM4LCAxMTUsIDM3LCAKKyAgICA0LCAxLCAyMzgsIDEwNCwgMzcsIDQsIDEsIDIwNiwgMjAxLCAzNywgNCwgMSwgNjYsIDM3LCA0LCAxLCAyMzgsIDI0OCwgMzcsIAorICAgIDQsIDEsIDE0NCwgMzcsIDQsIDEsIDIwNSwgMjYsIDM3LCA0LCAxLCAyNDcsIDgsIDM3LCA0LCAxLCAyMTAsIDExNCwgMzcsIAorICAgIDQsIDEsIDIxMCwgNjgsIDM3LCA0LCAxLCAyMzQsIDE2NSwgNTQsIDM3LCA0LCAxLCAyMDAsIDI5LCAzNywgNCwgMSwgMjA5LCAKKyAgICAyMywgNTQsIDM3LCA0LCAxLCA3MiwgMzcsIDQsIDEsIDE5OSwgMjExLCAzNywgNCwgMSwgMTgzLCAzNywgNCwgMSwgMjI4LCAKKyAgICAxNzksIDMsIDIzNSwgNzMsIDM3LCA0LCAxLCAyMjgsIDQ1LCAzNywgNCwgMSwgMjQwLCAyMjgsIDM3LCA0LCAxLCAyMzUsIAorICAgIDEzMiwgMzcsIDQsIDEsIDIwNCwgMTcsIDIyOCwgMTc4LCAzNywgNCwgMSwgMjM5LCA5MCwgMzcsIDQsIDEsIDI0NywgMjMzLCAKKyAgICA3MCwgMzcsIDQsIDEsIDIwMCwgOSwgMzcsIDQsIDEsIDIyNywgMjI3LCAzNywgNCwgMSwgMjI0LCAxNDEsIDM3LCA0LCAxLCAKKyAgICAyMTksIDkxLCAzNywgNCwgMSwgMjA1LCAyMCwgMzcsIDQsIDEsIDIyNiwgMTExLCAzNywgNCwgMSwgMjMzLCAxOSwgMywgCisgICAgMjM1LCA3MywgMzcsIDQsIDEsIDIwOSwgMjUwLCA2NiwgMzcsIDQsIDEsIDIzOSwgODYsIDM3LCA2LCAxLCAyMTcsIDgzLCAKKyAgICAzNywgNCwgMSwgMjE3LCA4MywgMzcsIDYsIDEsIDIwMCwgNjUsIDM3LCA0LCAxLCAyMDAsIDY1LCAzNywgNiwgMSwgMjI4LCAKKyAgICAzOSwgNzIsIDM3LCA0LCAxLCAyMjgsIDM5LCA3MiwgMzcsIDYsIDEsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIAorICAgIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDIyOCwgMzksIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgCisgICAgMzksIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0OCwgMTc1LCAKKyAgICAxOTksIDE4MSwgMzcsIDYsIDEsIDIyOCwgMzksIDI0OCwgMTc1LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgMzksIDI0OCwgCisgICAgMTc1LCAxOTksIDE4MSwgMzcsIDYsIDEsIDIyNiwgMzEsIDM3LCA0LCAxLCAyMjYsIDMxLCAzNywgNiwgMSwgMjE0LCAyMzUsIAorICAgIDM3LCA0LCAxLCAyMTQsIDIzNSwgMzcsIDYsIDEsIDIzNywgNjMsIDM3LCA0LCAxLCAyMzcsIDYzLCAzNywgNiwgMSwgMjI3LCAKKyAgICAyNTMsIDM3LCA0LCAxLCAyMjcsIDI1MywgMzcsIDYsIDEsIDIyNywgMjU0LCAzLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIAorICAgIDM3LCA0LCAxLCAyMjcsIDI1NCwgMywgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCAzNywgNiwgMSwgMjA0LCAyMCwgMzcsIDQsIAorICAgIDEsIDIwNCwgMjAsIDM3LCA2LCAxLCAyMTIsIDIyMSwgMjE3LCA4MywgMzcsIDQsIDEsIDIxMiwgMjIxLCAyMTcsIDgzLCAzNywgCisgICAgNiwgMSwgMjE3LCA4NCwgMywgMjA1LCAyMTAsIDM3LCA0LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDIxMCwgMzcsIDYsIDEsIAorICAgIDIxNywgMTEsIDM3LCA0LCAxLCAyMTcsIDExLCAzNywgNiwgMSwgMjI2LCA2MiwgMzcsIDQsIDEsIDIyNiwgNjIsIDM3LCAKKyAgICAyMDYsIDQ5LCA1NCwgMzgsIDM3LCAyMDUsIDIxMCwgMzgsIDM3LCAyMTYsIDE4MywgMzgsIDM3LCAyNDEsIDI0MiwgMjE1LCAKKyAgICAxMDgsIDM4LCAzNywgMjE0LCAyMjksIDIxNSwgMTA4LCAzOCwgMzcsIDIxNSwgOTIsIDM4LCAzNywgMjMzLCA4MywgMjA2LCAKKyAgICA0OSwgNTQsIDM4LCAzNywgMjIxLCAxNjgsIDU0LCAzNywgNiwgMSwgMjA5LCAyNTAsIDIzMywgMTksIDMsIDIwNywgNiwgMzcsIAorICAgIDQsIDEsIDIwOSwgMjUwLCAyMzMsIDE5LCAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMTAsIDE2MywgNTQsIDM3LCA0LCAxLCAKKyAgICAyMTAsIDE2MywgNTQsIDM3LCA2LCAxLCAyMzgsIDExNiwgMywgMjA2LCAxMSwgMzcsIDQsIDEsIDIzOCwgMTE2LCAzLCAyMDYsIAorICAgIDExLCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIDIwMywgMjE5LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDIwMywgMjE5LCAzNywgCisgICAgNiwgMSwgMjM1LCAxODYsIDMsIDk3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDk3LCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIAorICAgIDEwMSwgMTE3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQxLCAKKyAgICAxMTksIDM3LCA0LCAxLCAxOTksIDY5LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDE5OSwgOTAsIDMsIDI0MSwgMTE5LCAzNywgCisgICAgNCwgMSwgMTk5LCA5MCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAKKyAgICAyMjcsIDEwOCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgODMsIDk3LCAzNywgNCwgMSwgMjI3LCAxMDgsIAorICAgIDMsIDgzLCA5NywgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCA5NywgMzcsIDQsIDEsIDIyNywgMTA4LCAzLCA5NywgMzcsIDYsIAorICAgIDEsIDI0OSwgNjAsIDE2MSwgMzcsIDQsIDEsIDI0OSwgNjAsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAyNDEsIDExOSwgCisgICAgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAyNDEsIDExOSwgMzcsIDYsIDMzLCAyMzgsIDE4MCwgMjM1LCAxODUsIDM3LCA0LCAKKyAgICAzMywgMjM4LCAxODAsIDIzNSwgMTg1LCAzNywgNiwgMSwgMjE2LCA3NCwgMywgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMTYsIAorICAgIDc0LCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDI1MiwgMiwgMTQ0LCAzNywgNCwgMSwgMjUyLCAyLCAxNDQsIDM3LCA2LCAxLCAKKyAgICAyMzgsIDEwNSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzgsIDEwNSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDYsIAorICAgIDIwMiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMDYsIDIwMiwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDgsIDY4LCA2NiwgCisgICAgMzcsIDQsIDEsIDIwOCwgNjgsIDY2LCAzNywgNiwgMSwgMjA4LCA2OCwgMTA4LCAzLCA5NywgMzcsIDQsIDEsIDIwOCwgNjgsIAorICAgIDEwOCwgMywgOTcsIDM3LCA2LCAxLCAyMzQsIDIzNiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzQsIDIzNiwgMywgMjQxLCAKKyAgICAxMTksIDM3LCA2LCAzMywgMjA2LCAyMDIsIDIwNSwgMjYsIDM3LCA0LCAzMywgMjA2LCAyMDIsIDIwNSwgMjYsIDM3LCA2LCAKKyAgICAxLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDI0NywgOSwgCisgICAgMywgODMsIDk3LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCA4MywgOTcsIDM3LCA2LCAxLCAyMTAsIDM0LCAzNywgNCwgMSwgMjEwLCAKKyAgICAzNCwgMzcsIDYsIDEsIDI1MiwgMiwgMjQ3LCA4LCAzNywgNCwgMSwgMjUyLCAyLCAyNDcsIDgsIDM3LCA2LCAxLCAyNTIsIDIsIAorICAgIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyNTIsIDIsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCAxLCAyMTYsIAorICAgIDE3NCwgMzcsIDYsIDEsIDE5OSwgNjksIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAxOTksIDY5LCAzLCAyNDgsIDU3LCAzNywgNiwgCisgICAgMSwgMjI3LCAxMDgsIDMsIDExNywgMzcsIDQsIDEsIDIyNywgMTA4LCAzLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgCisgICAgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAxMTcsIDM3LCA0LCAKKyAgICAxLCAyMzgsIDE4MCwgMywgMTE3LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMTgwLCAKKyAgICAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMjYsIDIwMSwgMjQ3LCA4LCAzNywgNCwgMSwgMjI2LCAyMDEsIDI0NywgOCwgMzcsIDYsIAorICAgIDEsIDIzOCwgMTkxLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDE5MSwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjE2LCAKKyAgICAxNzQsIDM3LCA2LCAxLCAzNSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDM1LCAzLCAyNDgsIDU3LCAzNywgNiwgMSwgMzUsIDMsIAorICAgIDI0MSwgNzQsIDM3LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgMzcsIDYsIDMzLCAzNSwgMjI4LCAxNzgsIDM3LCA0LCAzMywgCisgICAgMzUsIDIyOCwgMTc4LCAzNywgNiwgMSwgMjI4LCAxNzksIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAyMjgsIDE3OSwgMywgMjQ4LCAKKyAgICA1NywgMzcsIDYsIDEsIDIxMSwgMjE4LCAzNywgNCwgMSwgMjExLCAyMTgsIDM3LCA2LCAxLCAyMTEsIDIxOSwgMywgMjQxLCAKKyAgICA3NCwgMzcsIDQsIDEsIDIxMSwgMjE5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQxLCA3NCwgMzcsIDQsIAorICAgIDEsIDE5OSwgNjksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxOTksIDkwLCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMTk5LCA5MCwgCisgICAgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDI1MiwgMiwgMjM5LCA5MCwgMzcsIDQsIDEsIDI1MiwgMiwgMjM5LCA5MCwgMzcsIDYsIAorICAgIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCAzNywgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDM3LCA2LCAxLCAyMzMsIAorICAgIDE5LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE2MywgMywgMjQxLCA3NCwgCisgICAgMzcsIDQsIDEsIDE2MywgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDI0OSwgNzEsIDc0LCAzNywgNCwgMSwgMjQ5LCA3MSwgNzQsIAorICAgIDM3LCA2LCAxLCAyNDksIDcxLCAxNjMsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyNDksIDcxLCAxNjMsIDMsIDI0MSwgNzQsIAorICAgIDM3LCA2LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI4LCAzNywgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOCwgMzcsIDYsIDEsIDEwOCwgMywgMjQxLCA3NCwgMzcsIDQsIAorICAgIDEsIDEwOCwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDEwOCwgMywgNTMsIDE2OSwgMzcsIDQsIDEsIDEwOCwgMywgNTMsIDE2OSwgCisgICAgMzcsIDYsIDEsIDI0NywgOSwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDI0NywgOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIAorICAgIDIzNSwgMTg2LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwMCwgCisgICAgMzAsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyMDAsIDMwLCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIAorICAgIDIwOCwgNDcsIDI2LCAxMTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjA4LCA0NywgMjYsIDExNywgMzcsIDYsIDEsIDIzNCwgCisgICAgMjM2LCAzLCAxMTcsIDM3LCA0LCAxLCAyMzQsIDIzNiwgMywgMTE3LCAzNywgNiwgMSwgMjM0LCAyMzYsIDMsIDk3LCAzNywgCisgICAgNCwgMSwgMjM0LCAyMzYsIDMsIDk3LCAzNywgNiwgMSwgMjI2LCA3MiwgMjQxLCAxNzUsIDM3LCA0LCAxLCAyMjYsIDcyLCAKKyAgICAyNDEsIDE3NSwgMzcsIDYsIDEsIDIyNiwgNzIsIDI0MCwgMjI4LCAzNywgNCwgMSwgMjI2LCA3MiwgMjQwLCAyMjgsIDM3LCAKKyAgICA2LCAxLCAyMjYsIDcyLCAxOTksIDE4LCAzNywgNCwgMSwgMjI2LCA3MiwgMTk5LCAxOCwgMzcsIDYsIDEsIDIyNiwgNzIsIAorICAgIDIzOSwgODIsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMzksIDgyLCAzNywgNiwgMSwgMjI2LCA3MiwgMjI0LCAxNDEsIDM3LCA0LCAKKyAgICAxLCAyMjYsIDcyLCAyMjQsIDE0MSwgMzcsIDYsIDEsIDIyNiwgNzIsIDIxOSwgOTEsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMTksIAorICAgIDkxLCAzNywgNiwgMSwgMjI2LCA3MiwgMjA5LCA4OSwgMzcsIDQsIDEsIDIyNiwgNzIsIDIwOSwgODksIDM3LCA2LCAxLCAKKyAgICAyMjYsIDcyLCAyMDUsIDIwNCwgMzcsIDQsIDEsIDIyNiwgNzIsIDIwNSwgMjA0LCAzNywgNiwgMSwgMjEzLCAxMDUsIDE5OSwgCisgICAgODksIDM3LCA0LCAxLCAyMTMsIDEwNSwgMTk5LCA4OSwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAxMTcsIDM3LCA0LCAxLCAKKyAgICAyMzgsIDIxMCwgMywgMTE3LCAzNywgNiwgMSwgMjI0LCAyMjMsIDM3LCA0LCAxLCAyMjQsIDIyMywgMzcsIDYsIDEsIDIxMywgCisgICAgOTMsIDM3LCA0LCAxLCAyMTMsIDkzLCAzNywgNiwgMSwgMjAwLCA5OCwgMzcsIDQsIDEsIDIwMCwgOTgsIDM3LCA2LCAxLCAKKyAgICAyMTQsIDE1OSwgMzcsIDQsIDEsIDIxNCwgMTU5LCAzNywgNiwgMSwgMjAxLCA2NCwgMzcsIDQsIDEsIDIwMSwgNjQsIDM3LCAKKyAgICA2LCAxLCAyNTEsIDEzOCwgMTYxLCAzNywgNCwgMSwgMjUxLCAxMzgsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAxMDEsIAorICAgIDExNywgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAxMDEsIDExNywgCisgICAgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDIxNiwgNzQsIDMsIDI0MSwgMTE5LCAzNywgNCwgCisgICAgMSwgMjE2LCA3NCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMTAsIDM1LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIxMCwgCisgICAgMzUsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDQ5LCAxMTcsIDM3LCA0LCAxLCAyMzgsIDE4MCwgMywgCisgICAgNDksIDExNywgMzcsIDYsIDEsIDIzOSwgNzUsIDM3LCA0LCAxLCAyMzksIDc1LCAzNywgNiwgMSwgMjQxLCAyMjQsIDM3LCA0LCAKKyAgICAxLCAyNDEsIDIyNCwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAyNDEsIAorICAgIDExOSwgMTg0LCA2LCAxLCAyNTAsIDEwOSwgMTg0LCA2LCAxLCAyNDgsIDIyNCwgMTg0LCA2LCAxLCAyMzUsIDE0OSwgMTg0LCAKKyAgICA2LCAxLCAyNDIsIDU4LCAxODQsIDYsIDEsIDIzOSwgNSwgMTg0LCA2LCAxLCAxOTksIDExNCwgMTg0LCA2LCAxLCAyMzgsIAorICAgIDI0MSwgMTg0LCA2LCAxLCAyMzgsIDgxLCAxODQsIDYsIDEsIDEzOCwgMTg0LCA2LCAxLCAxOTksIDY4LCAxODQsIDYsIDEsIAorICAgIDIyOCwgODYsIDE4NCwgNiwgMSwgMjI0LCAxNDUsIDE4NCwgNiwgMSwgMjAwLCAxNzMsIDE4NCwgNiwgMSwgMjQ3LCAxOTAsIAorICAgIDE4NCwgNiwgMSwgMjI2LCAyNDMsIDE4NCwgNiwgMSwgMjMzLCAyMDcsIDE4NCwgNiwgMSwgMjI3LCAyNDgsIDE4NCwgNiwgMSwgCisgICAgMjM1LCAxOTYsIDE4NCwgNiwgMSwgMjQ2LCAyNTQsIDE4NCwgNiwgMSwgMjIyLCA0MCwgMTg0LCA2LCAxLCAyMDAsIDksIAorICAgIDE4NCwgNiwgMSwgMjE4LCAyMDEsIDE4NCwgNiwgMSwgMjEwLCAxMTQsIDE4NCwgNiwgMSwgMjAyLCAxOTMsIDE4NCwgNiwgMSwgCisgICAgMjQ3LCAzNywgMTg0LCA2LCAxLCAyMTYsIDU0LCAxODQsIDYsIDEsIDIyNywgMjEwLCAxODQsIDYsIDEsIDIxMywgMjUyLCAKKyAgICAxODQsIDYsIDEsIDIxMSwgMTgwLCAxODQsIDYsIDEsIDIwMiwgMjM4LCAxODQsIDYsIDEsIDIwNSwgMjA3LCAxODQsIDYsIDEsIAorICAgIDIxMywgMTU0LCAxODQsIDYsIDEsIDI0NiwgOTEsIDE4NCwgNiwgMSwgMTk5LCAyNTAsIDE4NCwgNiwgMSwgMjE1LCAxMzksIAorICAgIDE4NCwgNiwgMSwgMjI2LCAyNTQsIDE4NCwgNiwgMSwgMjE3LCAxMDgsIDE4NCwgNiwgMSwgMjM3LCAxMzQsIDE4NCwgNjcsIAorICAgIDEsIDQ5LCAxNjcsIDIxMywgMjYsIDE4NCwgMjUxLCAxMywgMTg0LCAyMzgsIDE4MywgODEsIDE4NCwgMjM4LCA0MywgODEsIAorICAgIDE4NCwgMjQ2LCA3MCwgMTg0LCAyMTQsIDc5LCA4MSwgMTg0LCAyNTIsIDMsIDgxLCAxODQsIDQsIDEsIDI1MCwgMTA5LCAKKyAgICAxODQsIDQsIDEsIDI0OCwgMjI0LCAxODQsIDQsIDEsIDIzNSwgMTQ5LCAxODQsIDQsIDEsIDI0MiwgNTgsIDE4NCwgNCwgMSwgCisgICAgMjM5LCA1LCAxODQsIDQsIDEsIDE5OSwgMTE0LCAxODQsIDQsIDEsIDIzOCwgMjQxLCAxODQsIDQsIDEsIDIzOCwgODEsIAorICAgIDE4NCwgNCwgMSwgMTM4LCAxODQsIDQsIDEsIDE5OSwgNjgsIDE4NCwgNCwgMSwgMjI4LCA4NiwgMTg0LCA0LCAxLCAyMjQsIAorICAgIDE0NSwgMTg0LCA0LCAxLCAyMDAsIDE3MywgMTg0LCA0LCAxLCAyNDcsIDE5MCwgMTg0LCA0LCAxLCAyMjYsIDI0MywgMTg0LCAKKyAgICA0LCAxLCAyMzMsIDIwNywgMTg0LCA0LCAxLCAyMjcsIDI0OCwgMTg0LCA0LCAxLCAyMzUsIDE5NiwgMTg0LCA0LCAxLCAyNDYsIAorICAgIDI1NCwgMTg0LCA0LCAxLCAyMjIsIDQwLCAxODQsIDQsIDEsIDIwMCwgOSwgMTg0LCA0LCAxLCAyMTgsIDIwMSwgMTg0LCA0LCAKKyAgICAxLCAyMTAsIDExNCwgMTg0LCA0LCAxLCAyMDIsIDE5MywgMTg0LCA0LCAxLCAyNDcsIDM3LCAxODQsIDQsIDEsIDIxNiwgNTQsIAorICAgIDE4NCwgNCwgMSwgMjI3LCAyMTAsIDE4NCwgNCwgMSwgMjEzLCAyNTIsIDE4NCwgNCwgMSwgMjExLCAxODAsIDE4NCwgNCwgMSwgCisgICAgMjAyLCAyMzgsIDE4NCwgNCwgMSwgMjA1LCAyMDcsIDE4NCwgNCwgMSwgMjEzLCAxNTQsIDE4NCwgNCwgMSwgMjQ2LCA5MSwgCisgICAgMTg0LCA0LCAxLCAxOTksIDI1MCwgMTg0LCA0LCAxLCAyMTUsIDEzOSwgMTg0LCA0LCAxLCAyMjYsIDI1NCwgMTg0LCA0LCAxLCAKKyAgICAyMTcsIDEwOCwgMTg0LCA0LCAxLCAyMzcsIDEzNCwgMTg0LCA0LCAzMywgMjM5LCA2LCAxOTksIDI1MCwgMTg0LCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTg0LCAyMzMsIDMzLCAyMTMsIDQ1LCAxODQsIDIzOCwgNzcsIDU0LCAyMjUsIDI3LCAxODQsIDIzOCwgCisgICAgNzcsIDU0LCAxODQsIDIzOSwgMTU3LCA1NCwgMTEzLCAyNTEsIDI1MiwgMjM4LCA3MiwgMTEzLCAyNTEsIDI1MiwgMjExLCAKKyAgICAxODEsIDExMywgMjUxLCAyNTIsIDIxMCwgOTIsIDExMywgMjUxLCAyNTIsIDE5OSwgMTAwLCAyMTQsIDE0MiwgMTEzLCAyNTEsIAorICAgIDI1MiwgMTk5LCAxMDAsIDIzNiwgNzksIDExMywgMjUxLCAyNTIsIDIwNSwgMjIyLCAxMTMsIDI1MSwgMjUyLCAyMTMsIDEwMiwgCisgICAgMTEzLCAyNTEsIDI1MiwgMTk5LCA5OCwgMTEzLCAyNTEsIDI1MiwgMjE2LCAxMDAsIDExMywgMjUxLCAyNTIsIDIwMCwgMjIsIAorICAgIDExMywgMjUxLCAyNTIsIDIwNiwgMTI5LCAxMTMsIDI1MSwgMjUyLCAyMzUsIDI0NywgMTEzLCAyNTEsIDI1MiwgMjM1LCAKKyAgICAyNDgsIDIyMSwgMywgMTEzLCAyNTEsIDI1MiwgMjM1LCAyNDUsIDExMywgMjUxLCAyNTIsIDIxNCwgMTQzLCAyMTYsIDEyOSwgCisgICAgMTEzLCAyNTEsIDI1MiwgMjA2LCAxNzIsIDIzNiwgOCwgMTEzLCAyNTEsIDI1MiwgMjE2LCA3OSwgMTEzLCAyNTEsIDI1MiwgCisgICAgMjUwLCAxNDgsIDIzNCwgMjI4LCAxMTMsIDI1MSwgMjUyLCAyMjEsIDEzLCAxMTMsIDI1MSwgMjUyLCAyMjIsIDIwMywgMTEzLCAKKyAgICAyNTEsIDI1MiwgMjIyLCAyOSwgMTEzLCAyNTEsIDI1MiwgMjIyLCAzMCwgMjI2LCAyNTUsIDExMywgMjUxLCAyNTIsIDI0MSwgCisgICAgMjUxLCAxMTMsIDI1MSwgMjUyLCAyMTQsIDE1NCwgMTEzLCAyNTEsIDI1MiwgMjA2LCAxNzIsIDIxNCwgMTM3LCAxMTMsIAorICAgIDI1MSwgMjUyLCAyMDAsIDMyLCAyNDgsIDIyNSwgMTk5LCAyMzEsIDExMywgMjUxLCAyNTIsIDIxNywgOTAsIDExMywgMjUxLCAKKyAgICAyNTIsIDIyOCwgMTM3LCAxMTMsIDI1MSwgMjUyLCAyNDEsIDE1MywgMTEzLCAyNTEsIDI1MiwgMTk5LCAyNSwgMTEzLCAxMzQsIAorICAgIDIyMiwgMTMxLCAyNDYsIDE1NSwgMTEzLCAyMTUsIDEwMCwgMjEwLCAzNywgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxMSwgCisgICAgMTgxLCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjE2LCA5MywgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxNCwgMTQ3LCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMzQsIDQ3LCAxMTMsIDIxNSwgMTAwLCAyMDUsIDIzLCAxMTMsIDIxNSwgMTAwLCAyMTEsIDE4MSwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjE2LCA5MywgMTEzLCAyMTUsIDEwMCwgMjE0LCAxNDcsIDExMywgMjE1LCAxMDAsIDIzMywgMTk5LCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMzMsIDIwMCwgMjM0LCAxNTgsIDM2LCAyMDMsIDYzLCAxMTMsIDIxNSwgMTAwLCAyMTQsIDgzLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyNDIsIDQzLCAyMTcsIDM0LCAyMjIsIDE2MywgMTEzLCAyMTUsIDEwMCwgMjIyLCAxOSwgMTEzLCAKKyAgICAyMTQsIDIxMiwgMjIyLCAxNjAsIDExMywgMjE1LCAxMDAsIDIxMywgMjMyLCAxMTMsIDIxNCwgMjEyLCAyMTYsIDEwMiwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjEwLCAyMiwgMjQwLCAxODIsIDExMywgMjE1LCAxMDAsIDIwOSwgMTQzLCAyNDAsIDE4MiwgMTEzLCAKKyAgICAyMTQsIDIxMiwgMjA5LCAyNCwgMjE2LCA5NSwgMTEzLCAxMzQsIDIwMywgMjI1LCAyNDAsIDE4MiwgMTEzLCAxMzQsIDIyNCwgCisgICAgNTQsIDI0MCwgMTgyLCAxMTMsIDIxNCwgMjEyLCAyMTgsIDkwLCAyMzQsIDIyNywgMTEzLCAyMTUsIDEwMCwgMjE0LCAxNDgsIAorICAgIDIxNCwgMTQyLCAxMTMsIDEsIDI1MSwgMTQyLCAxMTMsIDEsIDI0OCwgMjEwLCAxMTMsIDEsIDIzNSwgMTQ3LCAxMTMsIDEsIAorICAgIDI0MiwgMjMsIDExMywgMSwgMjM0LCAxMzksIDExMywgMSwgMjAzLCA2MywgMTEzLCAxLCAxOTksIDkyLCAxMTMsIDEsIDIzNCwgCisgICAgOTMsIDExMywgMSwgMjA2LCAxNDYsIDExMywgMSwgMTk5LCAyMzQsIDExMywgMSwgNDcsIDIyNywgODYsIDExMywgMSwgMjI3LCAKKyAgICA4NiwgMTEzLCAxLCAyMjUsIDgzLCAxMTMsIDEsIDQ3LCAyMjIsIDQ3LCAxMTMsIDEsIDIyMiwgNDcsIDExMywgMSwgNDcsIAorICAgIDIxOCwgODksIDExMywgMSwgMjE4LCA4OSwgMTEzLCAxLCAyMTIsIDE5LCAxMTMsIDEsIDI1MCwgMTA3LCAxMTMsIDEsIDQ3LCAKKyAgICAyMTYsIDczLCAxMTMsIDEsIDIxNiwgNzMsIDExMywgMSwgNDcsIDIwNSwgMjcsIDExMywgMSwgMjA1LCAyNywgMTEzLCAxLCAKKyAgICAyMTQsIDEwNiwgMTEzLCAxLCAyMTMsIDEyMywgMTEzLCAxLCAyMTAsIDIxLCAxMTMsIDEsIDIwNiwgMjE3LCAxMTMsIDMzLCAKKyAgICAyMDAsIDcsIDUzLCAyMDMsIDYzLCAxMTMsIDMzLCAyMDAsIDcsIDIwMywgNjQsIDE5OSwgMjM0LCAxMTMsIDMzLCAyMDAsIDcsIAorICAgIDUzLCAxOTksIDIzNCwgMTEzLCAyMTQsIDIxMiwgMjM1LCAyNDcsIDExMywgMjE0LCAyMTIsIDIzNSwgMjQ1LCA5LCA0MSwgCisgICAgNTQsIDksIDIsIDIxMiwgMTIsIDksIDIzNiwgMjUzLCAyMjIsIDE0NSwgOSwgMiwgMjEyLCA1MiwgOSwgMiwgMjEyLCAxNSwgCisgICAgOSwgNDEsIDEzNCwgNTYsIDI1MCwgMjQ4LCAyNDIsIDIxMCwgMjEyLCAyMzQsIDI1MCwgMjQ4LCAyMzYsIDIyMiwgMjEyLCAKKyAgICAyMzQsIDksIDIxMywgMTk3LCAyNTAsIDI0OCwgMjE2LCAyOCwgMjIxLCAxNzAsIDU0LCAyNTAsIDI0OCwgMjE2LCAyOCwgCisgICAgMjA2LCAxNjcsIDIwNiwgNTEsIDU0LCAyNTEsIDE5OCwgNTQsIDksIDI0NiwgNzAsIDksIDI0MSwgMjM4LCAyMTAsIDE1NCwgCisgICAgOSwgMjE1LCAxMDIsIDIwMywgNDQsIDU0LCA5LCAyLCAyMjEsIDE0OSwgOSwgMiwgMjEyLCAyOSwgMjUxLCAxNDUsIDIwMSwgCisgICAgODgsIDksIDIsIDI1MSwgMTQ1LCAyNTAsIDE3MCwgOSwgMiwgMjEzLCAyMzAsIDI1MSwgMTQ0LCA5LCAyLCAyMTMsIDIzOCwgCisgICAgMjUxLCAxMjIsIDI1MSwgNjMsIDksIDIsIDIwNiwgMjU0LCA5LCA0LCAxMjIsIDIwNywgOSwgOSwgNCwgMTIyLCAzMywgMTQwLCAKKyAgICAzLCAyMjUsIDkyLCAzLCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDE5OSwgMTA1LCA5LCA0LCAyMzcsIDE1OCwgOSwgNCwgMjQyLCAKKyAgICAxNywgOSwgNCwgMjI3LCAzNiwgOSwgMjEwLCAxNjcsIDksIDEsIDgxLCA5LCAyMDUsIDgzLCA3MywgMjE0LCAyMTIsIDgxLCAKKyAgICA5LCAyMTQsIDc5LCA4MSwgOSwgMSwgMjI3LCA0MCwgMjAwLCA0NiwgOSwgMSwgMjM0LCAyMDMsIDksIDEsIDE0MCwgMywgCisgICAgMjIyLCAyMjQsIDU2LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDU2LCAKKyAgICA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA1NywgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjUxLCAxNDIsIDksIAorICAgIDEsIDI0OCwgMjQwLCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTYsIDksIDEsIDIwNiwgMTgzLCA5LCAxLCAyMDYsIDEwMiwgOSwgCisgICAgMSwgMjI3LCAyMjQsIDksIDEsIDIzNCwgMjI0LCA5LCAxLCAyMjYsIDIwMywgOSwgMSwgMjQyLCAyOSwgOSwgMSwgMjA2LCAKKyAgICAxMTQsIDksIDEsIDIxMywgMTU0LCA5LCAxLCAxOTksIDEwNSwgOSwgMSwgMjExLCAxODYsIDksIDEsIDIxMCwgNjEsIDksIDEsIAorICAgIDIxMiwgNTYsIDksIDEsIDI0MiwgNTIsIDksIDEsIDIwNywgOSwgOSwgMSwgMTk5LCAxMDgsIDksIDEsIDI1MSwgMTcxLCA5LCAKKyAgICAxLCAyMzUsIDE5NCwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgCisgICAgMTkwLCA1NywgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAKKyAgICAxMjAsIDE5MCwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMTI2LCAxOTAsIDU2LCA5LCAyMDYsIDIyMywgOSwgMSwgCisgICAgMjM3LCAxMzQsIDksIDEsIDIxNCwgMTUyLCA5LCAxLCAyMjcsIDg2LCA5LCAxLCAyMjUsIDkxLCA5LCAxLCAyMjIsIDYxLCA5LCAKKyAgICAxLCAyMTgsIDIyNywgOSwgMSwgMjM0LCAxMTUsIDksIDEsIDIwMSwgNzIsIDksIDEsIDE0MCwgMjIyLCAxODcsIDksIDEsIAorICAgIDIwMCwgNDYsIDksIDIzNywgMTU2LCA5LCAyNDIsIDE1LCA5LCAyMjcsIDM0LCA5LCAyMzcsIDE1OCwgOSwgMjQyLCAxNywgOSwgCisgICAgMjI3LCAzNiwgOSwgMjEwLCAxMDQsIDksIDIwNywgMjM2LCA5LCAyMjIsIDIyMiwgNTYsIDksIDIzNCwgMjA0LCA1NiwgOSwgCisgICAgMjM0LCAyMDQsIDU3LCA5LCAyMDgsIDQsIDI1MSwgMTQyLCA5LCAyMjgsIDUwLCAyNDIsIDE3LCA5LCAxMzQsIDIxOCwgMjI4LCAKKyAgICAyMzUsIDE2NSwgOSwgMTk4LCAyNDUsIDksIDIyLCAyLCA0LCAyMDMsIDE2OSwgNTYsIDksIDIyLCAyLCAyMjgsIDUwLCA0LCAKKyAgICAyMDMsIDE2OSwgNTYsIDksIDIyLCAyLCA3MywgNTcsIDksIDIxMywgMTA1LCAyNDIsIDE3LCA5LCAyMzcsIDE1OSwgMywgCisgICAgMTIwLCAyNDAsIDE4MCwgOSwgMjAxLCA3NCwgMjM0LCAyMDQsIDU3LCAyNTAsIDI0OCwgMTcsIDE5OSwgODEsIDI1MCwgMjQ4LCAKKyAgICAxNywgMTAyLCAyNTAsIDI0OCwgMTcsIDEwNSwgMjUwLCAyNDgsIDE3LCAxNDcsIDI1MCwgMjQ4LCAxNywgMTQ5LCAyNTAsIAorICAgIDI0OCwgMTcsIDE2NCwgMjUwLCAyNDgsIDE3LCAxODcsIDI1MCwgMjQ4LCAxNywgMjEwLCAxMzUsIDI1MCwgMjQ4LCAxNywgCisgICAgMTkyLCAyNTAsIDI0OCwgMTcsIDIxOSwgMTEzLCA5LCAyMTYsIDI3LCA1NCwgOSwgMjQxLCAxNjgsIDIxMCwgMTU0LCA5LCAKKyAgICAyMDYsIDQ5LCAyMTAsIDE1NCwgOSwgMjM3LCA2MSwgMjE1LCA5OCwgMjA4LCAxMDksIDksIDEsIDI0MCwgMTgxLCAyNDgsIAorICAgIDI0MCwgOSwgMSwgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxLCAyMDcsIDIxMywgMjUxLCAxNDIsIDksIDEsIDE0MCwgMjAxLCAKKyAgICA4OSwgOSwgMSwgMTQwLCAzLCAyMDEsIDc0LCAyMzQsIDIwNCwgNTYsIDksIDEsIDE0MCwgMywgMjAxLCA3NCwgMjM0LCAyMDQsIAorICAgIDU3LCA5LCAxLCAxMjIsIDIzNCwgMjAzLCA5LCAxLCAxMjIsIDIzNCwgMjA0LCAyNTEsIDE0MiwgOSwgMSwgMTIyLCAyMzQsIAorICAgIDIwNCwgMjAxLCA3MiwgOSwgMSwgMTA4LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDEyMiwgMjM0LCAyMDQsIDIwMCwgNDYsIAorICAgIDksIDEsIDIwNCwgMjQ1LCA5LCAxLCAyMDQsIDI0MywgOSwgMSwgMjQ4LCAyNTAsIDksIDEsIDIwNiwgMTg0LCAzLCAyMTMsIAorICAgIDI2LCA5LCAxLCAyMDYsIDE4NCwgMywgMTI2LCAxOTAsIDg4LCAyMzksIDE2NSwgOSwgMSwgMjE2LCA1NCwgOSwgMSwgMjA2LCAKKyAgICAxODEsIDksIDEsIDI0OCwgMjM4LCA5LCAxLCAxNTUsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTU1LCAzLCAxMjAsIDE5MCwgCisgICAgODMsIDU2LCA5LCAxLCAyMTgsIDQ3LCA5LCAxLCAyMzksIDk5LCA5LCAxLCAxNTUsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjA2LCAyMDUsIDksIDEsIDIwNiwgMjAzLCA5LCAxLCAyNDEsIDIxNSwgOSwgMSwgMjQyLCAzMCwgMywgMjEzLCAyNiwgOSwgCisgICAgMSwgMjQyLCAzMCwgMywgNzMsIDU3LCA5LCAxLCAyNDIsIDMwLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA0LCAyMDcsIDksIDksIAorICAgIDEsIDI0MiwgMzYsIDksIDEsIDI0MSwgMjE3LCA5LCAxLCAyMzksIDEyNywgOSwgMSwgMjQyLCAzMCwgMywgMTI2LCAxOTAsIAorICAgIDg4LCAyMzksIDE2NSwgOSwgMSwgMjQyLCAzMCwgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIDEsIDIxMiwgMjA3LCA5LCAxLCAKKyAgICAyMTMsIDE1NSwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDIxMywgMTU1LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTMsIDE1NSwgMywgCisgICAgNzMsIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgMjAzLCAxNjksIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgNzMsIDI0OCwgCisgICAgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMjcsIDIyMSwgOSwgMSwgCisgICAgMjEzLCAxNTUsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIAorICAgIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTEsIDE4NywgMywgMTI2LCAxOTAsIDI0OCwgCisgICAgMjI4LCAyNiwgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMTIsIDU3LCAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIxMiwgNTcsIDMsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjA3LCAxMCwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAKKyAgICAxOTAsIDU2LCA5LCAxLCAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEsIDIzNywgMTM1LCAzLCA3MywgMjIxLCA1NiwgNTcsIDksIAorICAgIDEsIDIzNywgMTM1LCAzLCA3MywgNTcsIDksIDEsIDIwMywgNTIsIDksIDEsIDIzNywgMTM1LCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDIxNiwgNTIsIDksIDEsIDIxNCwgMTUzLCAzLCA3MywgNTYsIDksIDEsIDIxNCwgMTUzLCAzLCAxMjYsIDE5MCwgCisgICAgNTYsIDksIDEsIDIyNiwgMjUyLCA5LCAxLCAyMDcsIDE4MywgMjI3LCA4NiwgOSwgMSwgMjI3LCA4NywgMywgMjEzLCAyNiwgCisgICAgOSwgMSwgMjI3LCA4NywgMywgNzMsIDU2LCA5LCAxLCAyMTksIDI1NSwgOSwgMSwgMjI3LCA4NywgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCAyMzYsIDc2LCA5LCAxLCAyMzYsIDc3LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTksIDE3NiwgOSwgMSwgMjM2LCA3NywgCisgICAgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMzUsIDM3LCA5LCAxLCAyMzYsIDc3LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIAorICAgIDIyNSwgOTIsIDMsIDQsIDIwMywgMTY4LCA5LCAxLCAyMjUsIDkyLCAzLCA3MywgNTYsIDksIDEsIDIyNSwgOTIsIDMsIDEyNiwgCisgICAgMTkwLCA1NiwgOSwgMSwgMjI1LCA5MiwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTgsIDIyOCwgMywgNzMsIDU3LCA5LCAxLCAKKyAgICAyMTgsIDIyOCwgMjM1LCAxNjUsIDksIDEsIDIxMywgNCwgOSwgMSwgMjE4LCAyMjgsIDMsIDIxMywgMjYsIDksIDEsIDIxOCwgCisgICAgMjI4LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwNywgOSwgMSwgMjA2LCAyMDYsIDMsIDczLCAKKyAgICA1NiwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCA1NiwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTEzLCA5LCAxLCAyMzQsIDExNiwgCisgICAgMjM1LCAxMTQsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjA2LCAxODQsIDIyMiwgMTU3LCAyMzUsIDExMywgOSwgMSwgMjAxLCAKKyAgICA3MywgMywgMjEzLCAyNiwgOSwgMSwgMjI2LCAxMzksIDIxNywgMTIxLCA5LCAxLCAyMTcsIDEyMSwgOSwgMSwgNjYsIDksIDEsIAorICAgIDE5OSwgMjExLCA5LCAxLCAyMjYsIDEzOSwgMTk5LCAyMTEsIDksIDEsIDIwMSwgNzMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjAzLCA1OSwgOSwgMSwgMjM3LCAxNjIsIDIwMCwgNDYsIDksIDEsIDkwLCAzLCAyMDcsIDYsIDksIDEsIDkwLCAzLCA0LCAKKyAgICAyMDMsIDE2OCwgOSwgMSwgMjAxLCA3MywgMywgNzMsIDU2LCA5LCAxLCA3MiwgOSwgMSwgOTAsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgOTAsIDI0OSwgNjksIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzQsIDIwNCwgNTYsIDksIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCA5LCAxLCAyNTEsIDIyMSwgOSwgNCwgMTIyLCAzMywgMjEyLCA1NywgMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4NywgCisgICAgOSwgNCwgMTIyLCAzMywgMjE0LCAxNTMsIDMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODcsIDksIDQsIDEyMiwgODQsIDgyLCAKKyAgICAxOSwgOSwgNCwgMTIyLCAyMjUsIDkyLCAyNTEsIDE0MiwgOSwgNCwgMTIyLCAyMjcsIDIyNCwgOSwgNCwgMTIyLCAxMjYsIAorICAgIDI0MCwgMTgwLCA5LCA0LCAxMjIsIDIxMSwgMTg2LCA5LCAyMzgsIDE3MSwgNzYsIDI1MCwgMTExLCA5LCAyMDgsIDEwNSwgCisgICAgNzYsIDIxMiwgMTczLCAyMzgsIDIxMCwgMjM0LCA0MiwgOSwgNCwgMTIyLCAyMTIsIDIxOSwgMTk5LCA4MSwgOSwgNCwgMTIyLCAKKyAgICAyMDMsIDIyMywgMjEzLCAxNzQsIDE5OSwgODEsIDksIDQsIDEyMiwgMjQwLCAxODEsIDIzNCwgMTM3LCA3NiwgMjI2LCAyMDMsIAorICAgIDksIDQsIDEyMiwgODQsIDY1LCAxOSwgOSwgNCwgMTI4LCAyMTEsIDE4NiwgOSwgNCwgMTIyLCAyMjIsIDIyMywgOSwgNCwgCisgICAgMjAxLCA3MiwgOSwgNCwgMjAwLCA0NiwgOSwgNCwgMTIyLCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDIxOCwgMjI3LCA5LCAyMTUsIAorICAgIDEzNCwgNzYsIDIxMiwgNDIsIDksIDIzOCwgMTgxLCAyNDcsIDU2LCAxMjgsIDIwOCwgNzYsIDksIDIzOCwgMTgxLCAyNDcsIAorICAgIDU2LCAxMjIsIDIwOCwgNzYsIDksIDIxMiwgMjE5LCAxMjIsIDIwOCwgNzcsIDMsIDIzNywgOTQsIDI0NywgNTUsIDksIDQsIAorICAgIDEyOCwgMjIyLCA2MSwgOSwgMSwgMjQyLCAzMCwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIxMywgMTU1LCAzLCAKKyAgICAyMjgsIDUwLCAyMDMsIDE2OCwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxOTksIDgxLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDEwMiwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMDUsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTQ3LCAyMzgsIDMzLCAKKyAgICAyNTAsIDI0OCwgMTcsIDE0OSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxNjQsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTg3LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIxMCwgMTM1LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE5MiwgMjM4LCAKKyAgICAzMywgMjUwLCAyNDgsIDE3LCAyMTksIDExMywgOSwgMSwgMjEwLCA2MiwgMywgNzMsIDU3LCA5LCAxLCAyNDIsIDUzLCAzLCAKKyAgICA3MywgNTcsIDksIDEsIDIzNSwgMTk1LCAzLCA3MywgNTcsIDksIDIsIDIwOSwgMTQyLCAyNTEsIDg5LCA5LCAyLCAyMDksIAorICAgIDE0MiwgMjE1LCA2MywgMjIyLCA0MCwgOSwgMSwgMjM0LCAxMTYsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCAyMDcsIDEwMywgCisgICAgMjM4LCAxNzEsIDc2LCAyMTYsIDEyNywgMjA3LCAxMDMsIDIwNywgMjA5LCAyMzYsIDE4MywgMjA4LCA3NiwgMjA3LCAxMDMsIAorICAgIDIwOCwgNiwgMjM2LCAxODMsIDIwOCwgNzYsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjQ2LCA3OSwgMjA3LCAxMDMsIDIwOCwgNiwgCisgICAgMjQ2LCA3OSwgMjA3LCAxMDMsIDIzMywgMTc3LCAyNDYsIDc5LCAyMDcsIDEwMywgMjQ2LCA4MCwgMjA5LCA4NiwgMjI1LCAKKyAgICAyOCwgMjA3LCAxMDMsIDI0NiwgODAsIDIwOSwgODYsIDIxMywgNDYsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjQ2LCA4MCwgCisgICAgMjA5LCA4NiwgMjI1LCAyOCwgMjA3LCAxMDMsIDIwOCwgNiwgMjQ2LCA4MCwgMjA5LCA4NiwgMjEzLCA0NiwgMjA3LCAxMDMsIAorICAgIDI0MywgMzYsIDIwNywgMTAzLCAyMzQsIDE2MywgMjE3LCAxNDAsIDIwNywgMTAzLCAyMzQsIDE2MywgMjIyLCAxNywgMjA3LCAKKyAgICAxMDMsIDIzNCwgMTYzLCAyNTAsIDE2NywgMjA3LCAxMDMsIDI1MiwgMywgODEsIDIwNywgMTAzLCAxLCAyNTEsIDE0NywgCisgICAgMjA3LCAxMDMsIDEsIDIwNywgMjEzLCAyNTEsIDE0NywgMjA3LCAxMDMsIDEsIDI0OCwgMjA3LCAyMDcsIDEwMywgMSwgMjM2LCAKKyAgICA2NiwgMjA3LCAxMDMsIDEsIDIzNiwgNjcsIDIzNiwgNDQsIDIwNywgMTAzLCAxLCAyNDIsIDI2LCAyMDcsIDEwMywgMSwgCisgICAgMjQwLCAxODEsIDI0MiwgMjcsIDIxMywgMjAsIDIwNywgMTAzLCAxLCAyMzQsIDEzOSwgMjA3LCAxMDMsIDEsIDIwMSwgNzIsIAorICAgIDIwNywgMTAzLCAxLCAxOTksIDEwNSwgMjA3LCAxMDMsIDEsIDIzNCwgOTEsIDIwNywgMTAzLCAxLCAyMDYsIDE0MiwgMjA3LCAKKyAgICAxMDMsIDEsIDIwNiwgMTQzLCAyMzYsIDQ0LCAyMDcsIDEwMywgMSwgMTk5LCAxOTgsIDIwNywgMTAzLCAxLCAxOTksIDE5OSwgCisgICAgMjM0LCAxMzksIDIwNywgMTAzLCAxLCAyMjcsIDU3LCAyMDcsIDEwMywgMSwgMjI1LCA5MCwgMjA3LCAxMDMsIDEsIDIyMSwgCisgICAgMTY2LCAyMDcsIDEwMywgMSwgMjE4LCA4OSwgMjA3LCAxMDMsIDEsIDIxMCwgMTYwLCAyMDcsIDEwMywgMSwgNDcsIDIxMCwgCisgICAgMTYwLCAyMDcsIDEwMywgMSwgNzIsIDIwNywgMTAzLCAxLCAyMTYsIDczLCAyMDcsIDEwMywgMSwgMjEzLCAxMDUsIDIxNiwgCisgICAgNzMsIDIwNywgMTAzLCAxLCAyMTIsIDU0LCAyMDcsIDEwMywgMSwgMjE0LCAxNDYsIDIwNywgMTAzLCAxLCAyMTMsIDIwLCAKKyAgICAyMDcsIDEwMywgMSwgMjEwLCAyMSwgMjA3LCAxMDMsIDEsIDIwNiwgMjE1LCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjQ4LCAKKyAgICAxOTQsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyMzUsIDE5MiwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDI0MSwgOTUsIDIwNywgCisgICAgMTAzLCAyMTQsIDIyNSwgNTYsIDIwNywgMTAzLCAyMTQsIDIyNSwgNTcsIDIwNywgMTAzLCAyMTQsIDIyNSwgMjM5LCAxNzksIAorICAgIDIwNywgMTAzLCAxOTksIDgsIDU2LCAyMDcsIDEwMywgMTk5LCA4LCA1NywgMjA3LCAxMDMsIDE5OSwgOCwgMjM5LCAxNzksIAorICAgIDIwNywgMTAzLCAyMTMsIDE5MywgNTYsIDIwNywgMTAzLCAyMTMsIDE5MywgNTcsIDIwNywgMTAzLCAyMzksIDE4MCwgMTk5LCAKKyAgICAxNSwgMjMzLCAxNzYsIDIwNywgMTAzLCAyMzksIDE4MCwgMTk5LCAxNSwgMjUxLCA2NCwgMjA3LCAxMDMsIDIzNCwgMTQ0LCAKKyAgICA1NiwgMjA3LCAxMDMsIDIzNCwgMTQ0LCA1NywgMjA3LCAxMDMsIDIzNCwgMTQzLCAyMzksIDE3OSwgMjA3LCAxMDMsIDIzOCwgCisgICAgOTgsIDU2LCAyMDcsIDEwMywgMjM4LCA5OCwgNTcsIDIwNywgMTAzLCAyMTIsIDEzOCwgMjA3LCAxMDMsIDIzNywgMTI4LCAKKyAgICAyNDAsIDE4MiwgMjA3LCAxMDMsIDIxNCwgNTcsIDIwNywgMTAzLCAyMTIsIDE2NywgMjA3LCAxMDMsIDEyMCwgODMsIDE5MCwgCisgICAgNTYsIDIwNywgMTAzLCAxMjAsIDgzLCAxOTAsIDU3LCAyMDcsIDEwMywgMTI2LCAxOTAsIDU2LCAyMDcsIDEwMywgMTI2LCAKKyAgICAxOTAsIDU3LCAyMDcsIDEwMywgMjE3LCAxMzgsIDIyNCwgMTc3LCA1NiwgMjA3LCAxMDMsIDIxNywgMTM4LCAyMjQsIDE3NywgCisgICAgNTcsIDIwNywgMTAzLCAyMjAsIDI0NSwgMjA3LCAxMDMsIDI0OSwgNjgsIDIwNywgMTAzLCAxLCAyMDksIDIwLCAxOTksIDc1LCAKKyAgICAyMDcsIDEwMywgMSwgMjA5LCAyMCwgMjI2LCAxOTYsIDIwNywgMTAzLCAxLCAyMDksIDIwLCAyMzcsIDE0NywgOSwgMSwgCisgICAgMjQ4LCAyNDEsIDMsIDEyNiwgMTkwLCAyMzMsIDEyNiwgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDI0OCwgMjQxLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjQ4LCAKKyAgICAyNDEsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDI0OCwgMjI4LCAyNiwgMTIwLCAxOTAsIDU2LCA5LCAxLCAyNDgsIAorICAgIDI0MSwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyNDgsIDI0MSwgMywgMjI4LCA1MCwgNCwgCisgICAgMjAzLCAxNjksIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDE1NSwgMywgMTIwLCAxOTAsIDU2LCAKKyAgICA5LCAxLCAxNTUsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyNDIsIDMwLCAzLCAxMjAsIDE5MCwgCisgICAgMjAyLCAyNDgsIDI0OCwgMjI4LCAyNiwgNCwgMjA3LCA5LCA5LCAxLCAyNDIsIDMwLCAzLCAyMjgsIDUwLCA0LCAyMDMsIAorICAgIDE2OSwgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA5NywgOSwgMSwgMjExLCAxODcsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAKKyAgICAxLCAyNTEsIDE3MiwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgCisgICAgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU2LCA5LCAxLCAyMzcsIDEzNSwgMywgMTIwLCAKKyAgICAxOTAsIDU3LCA5LCAxLCAyMzcsIDEzNSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDIyNiwgMjUzLCAKKyAgICAzLCA3MywgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIDE5MCwgCisgICAgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgODQsIDMsIDczLCA1NiwgOSwgMSwgODQsIDMsIDczLCA1NywgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjE4LCAyMjgsIDMsIDQsIDIwNywgOSwgOSwgMSwgMjE4LCAyMjgsIDMsIDQsIAorICAgIDIwMywgMTY4LCA5LCAxLCAyMjUsIDkyLCAzLCAxNDgsIDksIDEsIDIxMywgMTU1LCAzLCAxMjAsIDE5MCwgMjAyLCAyNDgsIAorICAgIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMTIwLCAxOTAsIDIwMiwgCisgICAgMjQ4LCA1NiwgOSwgMSwgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCA1NywgOSwgMSwgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIAorICAgIDEwLCAyNiwgMTIwLCAyNDAsIDE4MCwgOSwgMSwgMjExLCAxODcsIDMsIDQsIDksIDEsIDIwNywgMTAsIDI2LCAxMjAsIDI0MCwgCisgICAgMTgwLCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgOSwgMSwgMjA3LCAxMCwgMjYsIDEyMCwgMjQwLCAxODAsIDksIDEsIDE1NSwgCisgICAgMywgNCwgOSwgMSwgMjA3LCAxMCwgNTYsIDksIDEsIDE0MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIDU2LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIAorICAgIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxMjYsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjM2LCAyMjksIDU3LCA5LCAKKyAgICAxLCAyMDEsIDczLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIDEsIDIwMSwgNzMsIDMsIDIzOCwgMzMsIAorICAgIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCAKKyAgICA1NiwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgMTU1LCAzLCAKKyAgICAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIzNiwgMjI5LCA1NywgOSwgMSwgMjExLCAxODcsIDMsIDIzOCwgMzMsIDI1MCwgCisgICAgMjQ4LCAxNywgMjM2LCAyMjksIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIyNywgCisgICAgODcsIDMsIDEyMCwgMTkwLCA1NiwgMjA2LCAxMTksIDEsIDIzNCwgMjMzLCAyMDYsIDExOSwgMSwgMjEwLCA3MSwgMjA2LCAKKyAgICAxMTksIDEsIDIxOCwgMjI2LCAyMDYsIDExOSwgMSwgMjEzLCAyNDgsIDIwNiwgMTE5LCAxLCAyNDksIDEzNCwgMjA2LCAxMTksIAorICAgIDEsIDIyNCwgMjIwLCAyMDYsIDExOSwgMSwgMjI3LCAxMDEsIDIwNiwgMTE5LCAxLCAyNTEsIDEyOSwgMjA2LCAxMTksIDEsIAorICAgIDIwMywgODgsIDIwNiwgMTE5LCAxLCAyMjIsIDYwLCAyMDYsIDExOSwgMSwgMjM3LCAxOTMsIDIwNiwgMTE5LCAxLCAyNDEsIAorICAgIDk4LCAyMDYsIDExOSwgMSwgMjA2LCAxMjEsIDIwNiwgMTE5LCAxLCAyMjUsIDE3MiwgMjA2LCAxMTksIDEsIDIzNiwgODUsIAorICAgIDIwNiwgMTE5LCAxLCAyMzUsIDExOSwgMjA2LCAxMTksIDEsIDIxMSwgMTg1LCAyMDYsIDExOSwgMSwgMjQxLCAyMzYsIDIwNiwgCisgICAgMTE5LCAxLCAxOTksIDk1LCAyMDYsIDExOSwgMSwgMjA2LCAyMTYsIDIwNiwgMTE5LCAxLCAyMDAsIDEwOSwgMjA2LCAxMTksIAorICAgIDEsIDIxNiwgODYsIDIwNiwgMTE5LCAxLCAyMjcsIDIzMiwgMjA2LCAxMTksIDEsIDI0NywgMTEsIDIwNiwgMTE5LCAxLCAKKyAgICAyMDQsIDI1MiwgMjA2LCAxMTksIDEsIDIzNCwgODMsIDIwNiwgMTE5LCAxLCAyMjYsIDIwNiwgMjA2LCAxMTksIDEsIDIwNiwgCisgICAgMTIwLCAyMDYsIDExOSwgMSwgMTk5LCAxMTIsIDIwNiwgMTE5LCAxLCAyMTAsIDYwLCAyMDYsIDExOSwgMSwgMjEyLCA2MCwgCisgICAgMjA2LCAxMTksIDEsIDI0MiwgNTYsIDIwNiwgMTE5LCAxLCAxMzgsIDIwNiwgMTE5LCAxLCAxOTksIDE0LCAyMDYsIDExOSwgCisgICAgMSwgMjUxLCAxNjgsIDIwNiwgMTE5LCAxLCAyMzUsIDE5MywgMjA2LCAxMTksIDEsIDIxNCwgMTU2LCAyMDYsIDExOSwgMSwgCisgICAgMjAxLCAxMTIsIDIwNiwgMTE5LCAyNTIsIDUsIDIwNiwgMTE5LCAyNTIsIDEwMywgMjA2LCAxMTksIDIzMiwgMjM0LCAyMDYsIAorICAgIDExOSwgMjM4LCAyNTQsIDIwNiwgMTE5LCAyMDQsIDM5LCAyMDYsIDExOSwgMjE3LCA2MiwgMjA2LCAxMTksIDIzOSwgOCwgCisgICAgMjA2LCAxMTksIDIzOCwgMjQsIDIwNiwgMTE5LCAyMTcsIDEzNywgMjA2LCAxMTksIDIxNywgMTQ1LCAyMDYsIDExOSwgMjA3LCAKKyAgICAyMzYsIDIwNiwgMTE5LCAxLCAyMjAsIDE1NywgMjE5LCA0OSwgMTcsIDE5OSwgODEsIDIxOSwgNDksIDE3LCAxMDIsIDIxOSwgCisgICAgNDksIDE3LCAxMDUsIDIxOSwgNDksIDE3LCAxNDcsIDIxOSwgNDksIDE3LCAxNDksIDIxOSwgNDksIDE3LCAxNjQsIDIxOSwgCisgICAgNDksIDE3LCAxODcsIDIxOSwgNDksIDE3LCAyMTAsIDEzNSwgMjE5LCA0OSwgMTcsIDE5MiwgMjE5LCA0OSwgMTcsIDIxOSwgCisgICAgMTEzLCAyMTksIDQ5LCAxLCA2MiwgMjE5LCA0OSwgMSwgMjM4LCAyNTUsIDIxOSwgNDksIDEsIDcwLCAyMTksIDQ5LCAxLCAKKyAgICA3MiwgMjE5LCA0OSwgMSwgNjYsIDIxOSwgNDksIDEsIDIxNywgNjMsIDIxOSwgNDksIDEsIDc0LCAyMTksIDQ5LCAxLCAyNDIsIAorICAgIDQ0LCAyMTksIDQ5LCAxLCAyMjAsIDIxNCwgMjE5LCA0OSwgMSwgMjQ5LCAxMzYsIDIxOSwgNDksIDEsIDE3MiwgMjE5LCA0OSwgCisgICAgMSwgMjA3LCAzNiwgMjE5LCA0OSwgMSwgMjI3LCAyNDgsIDIxOSwgNDksIDEsIDI0NywgMzcsIDIxOSwgNDksIDEsIDI0MiwgCisgICAgNTgsIDIxOSwgNDksIDEsIDIxMywgMjUyLCAyMTksIDQ5LCAxLCAyMTIsIDIxNSwgMjE5LCA0OSwgMSwgMjEyLCA2NCwgMjE5LCAKKyAgICA0OSwgMSwgMjM2LCAzMiwgMjE5LCA0OSwgMSwgMjM3LCAxOTUsIDIxOSwgNDksIDEsIDE2MSwgMjE5LCA0OSwgMSwgMTk0LCAKKyAgICAyMTksIDQ5LCAxLCAyMjAsIDE2MiwgMjAwLCAyNTIsIDIxOSwgNDksIDEsIDE3OCwgMjE5LCA0OSwgMSwgMjE4LCA2MCwgCisgICAgMjE5LCA0OSwgMSwgMTg4LCAyMTksIDQ5LCAxLCAxNDQsIDIxOSwgNDksIDEsIDIwMSwgMTE0LCAyMTksIDQ5LCAxLCAxODMsIAorICAgIDIxOSwgNDksIDEsIDIxOCwgNjEsIDIwMCwgMjUyLCAyMTksIDQ5LCAxLCAyMjcsIDE1OCwgMjI3LCAyNDgsIDIxOSwgNDksIAorICAgIDEsIDIyNywgMTU4LCAyNDcsIDM3LCAyMTksIDQ5LCAxLCAyMjcsIDE1OCwgMjEzLCAyNTIsIDIxOSwgNDksIDM4LCAyMDksIAorICAgIDI1MCwgMTIyLCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDIwOSwgMjUwLCAxMjgsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgCisgICAgMjA5LCAyNTAsIDIxMywgMTksIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMTY4LCAyNDEsIDExOCwgMjA1LCAxNzQsIDIxOSwgCisgICAgNDksIDM4LCAxNjgsIDEyMiwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAxNjgsIDEyOCwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAKKyAgICAxNjgsIDIxMywgMTksIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMjIwLCAxMjIsIDgxLCAyMTksIDQ5LCAzOCwgNTMsIDczLCAKKyAgICA1NiwgMjE5LCA0OSwgMTIyLCAxNTAsIDI1MSwgMTMsIDIxOSwgNDksIDEyOCwgMTUwLCAyNTEsIDEzLCAyMTksIDQ5LCAxNiwgCisgICAgMjE3LCA2NCwgMjQxLCAxMzIsIDIxOSwgNDksIDE2LCAyMzYsIDMxLCAyMTksIDQ5LCAyNDYsIDcwLCAyMTksIDQ5LCAyMzgsIAorICAgIDQzLCA4MSwgMjE5LCA0OSwgMjI1LCAxNDcsIDIxMiwgMjIsIDEsIDI1MSwgMTQ5LCAyMTIsIDIyLCAxLCAyNDgsIDE1MiwgCisgICAgMjEyLCAyMiwgMSwgMjM2LCA2NSwgMjEyLCAyMiwgMSwgMjQyLCAyOCwgMjEyLCAyMiwgMSwgMjI4LCAzLCAyMTIsIDIyLCAxLCAKKyAgICAyNDksIDEzNCwgMjEyLCAyMiwgMSwgMTk5LCA4NCwgMjEyLCAyMiwgMSwgMjI4LCAxMiwgMjEyLCAyMiwgMSwgMjA1LCAyMTMsIAorICAgIDIxMiwgMjIsIDEsIDE5OSwgMTgwLCAyMTIsIDIyLCAxLCAyMjcsIDEwMiwgMjEyLCAyMiwgMSwgMjI1LCAxNjksIDIxMiwgCisgICAgMjIsIDEsIDIyMSwgMTY2LCAyMTIsIDIyLCAxLCAyMTgsIDg5LCAyMTIsIDIyLCAxLCAyMDksIDE0MCwgMjEyLCAyMiwgMSwgCisgICAgMjI4LCAxMTcsIDIxMiwgMjIsIDEsIDIzNywgMTEyLCAyMTIsIDIyLCAxLCAyMDUsIDMwLCAyMTIsIDIyLCAxLCAyMTQsIDc2LCAKKyAgICAyMTIsIDIyLCAxLCAyMTMsIDIwLCAyMTIsIDIyLCAxLCAyMTAsIDg5LCAyMTIsIDIyLCAxLCAyMDcsIDMxLCAyMTIsIDIyLCAKKyAgICAxMzQsIDIyOCwgMTE3LCAyMTIsIDIyLCAxMzQsIDIyOCwgMTE2LCAyMTIsIDIyLCAxMzQsIDIxNywgMTMzLCAyMTIsIDIyLCAKKyAgICAxMzQsIDI0MiwgNDIsIDIxMiwgMjIsIDY3LCAxLCAyMzgsIDEyOSwgMTk5LCAxODAsIDIxMiwgMjIsIDEzNCwgMjM4LCAxMjksIAorICAgIDE5OSwgMTgwLCAyMTIsIDIyLCAyMiwgMiwgMTY4LCA3MiwgMjEyLCAyMiwgMjIsIDIsIDcyLCAyMTIsIDIyLCAyMiwgMiwgCisgICAgMjE2LCAyNDAsIDI1MiwgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMTY4LCAyNTIsIDEzOCwgMjEyLCAyMiwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMjE2LCAyNDAsIDYyLCAyMTIsIDIyLCAyMiwgMiwgMTY4LCA2MiwgMjEyLCAyMiwgMjIsIAorICAgIDIsIDYyLCAyMTIsIDIyLCA2NywgMSwgMjA5LCAyNTAsIDYyLCAyMTIsIDIyLCAyMiwgMiwgMjA5LCAyNTAsIDYyLCAyMTIsIAorICAgIDIyLCAyMiwgMiwgMTY4LCA2NiwgMjEyLCAyMiwgMjIsIDIsIDY2LCAyMTIsIDIyLCA2NywgMSwgNzAsIDIxMiwgMjIsIDIyLCAKKyAgICAyLCAxNjgsIDcwLCAyMTIsIDIyLCAyMiwgMiwgNzAsIDIxMiwgMjIsIDIyLCAyLCA3NCwgMjEyLCAyMiwgMjIsIDIsIDIwNywgCisgICAgMjM2LCAyMTIsIDIyLCAxMzQsIDIyMCwgMTcsIDIxMiwgMjIsIDIxNCwgMjEyLCAyMjAsIDE3LCAyMTIsIDIyLCAyMTQsIAorICAgIDIxMiwgMjUxLCAxOTUsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTEsIDc1LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjQ5LCA0OCwgCisgICAgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MCwgMTQ5LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjEwLCA5LCAyMTIsIDIyLCAyNTIsIDMsIAorICAgIDgxLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjIyLCA1MCwgMjE0LCAxMTIsIDIxMiwgMjIsIDIxNCwgMjEyLCAxOTksIDIyLCAKKyAgICAyMTIsIDIyLCAyMTQsIDIxMiwgMjE0LCAxMTIsIDIxMiwgMjIsIDIxNCwgMjEyLCAxOTksIDExMSwgMjEyLCAyMiwgMjE0LCAKKyAgICAyMTIsIDIwNCwgMTgxLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUwLCAyMTksIDIxMiwgMjIsIDIxNCwgMjEyLCAyMDksIDI0LCAKKyAgICAyMjIsIDEzMywgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MSwgNTksIDIyMiwgMTc2LCAxLCAyMzQsIDIxMCwgMjIyLCAxNzYsIDEsIAorICAgIDI1MiwgODksIDIyMiwgMTc2LCAxLCAyNTEsIDE5MywgMjIyLCAxNzYsIDEsIDI1MSwgMjM1LCAyMjIsIDE3NiwgMSwgMjUxLCAKKyAgICAxODUsIDIyMiwgMTc2LCAxLCAyMDMsIDE4OCwgMjIyLCAxNzYsIDEsIDI1MCwgMTA1LCAyMjIsIDE3NiwgMSwgMjI4LCAxMiwgCisgICAgMjIyLCAxNzYsIDEsIDI1MCwgMTQ2LCAyMjIsIDE3NiwgMSwgMjUxLCAxNTQsIDIyMiwgMTc2LCAxLCAyNTEsIDE1OSwgMjIyLCAKKyAgICAxNzYsIDEsIDI1MSwgMTUxLCAyMjIsIDE3NiwgMSwgMjUxLCAxMDEsIDIyMiwgMTc2LCAxLCAyNTEsIDg1LCAyMjIsIDE3NiwgCisgICAgMSwgMjUwLCAxODgsIDIyMiwgMTc2LCAxLCAyMjgsIDExNywgMjIyLCAxNzYsIDEsIDI1MSwgMjgsIDIyMiwgMTc2LCAxLCAKKyAgICAyNTAsIDE1NywgMjIyLCAxNzYsIDEsIDI1MSwgMSwgMjIyLCAxNzYsIDEsIDI1MCwgMjUzLCAyMjIsIDE3NiwgMSwgMjUwLCAKKyAgICAxODEsIDIyMiwgMTc2LCAxLCAyNTAsIDE1NSwgMjIyLCAxNzYsIDEsIDIzOSwgMTEyLCAyMjIsIDE3NiwgMSwgMjI3LCA5NCwgCisgICAgMjIyLCAxNzYsIDEsIDI1MSwgMTcxLCAyMjIsIDE3NiwgMjUxLCAxOTksIDgxLCAyMjIsIDE3NiwgMjAyLCAxOTEsIDgxLCAKKyAgICAyMjIsIDE3NiwgMjM2LCAzLCA4MSwgMjIyLCAxNzYsIDIxNCwgMjExLCA5LCAxLCAyNDgsIDI0MSwgMywgNCwgMjAzLCAxNjksIAorICAgIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxOTMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjA3LCAxMCwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMzcsIDEzNSwgMywgNzMsIDI0OCwgMjI4LCAyNiwgMTI2LCAxOTAsIAorICAgIDU2LCA5LCAxLCAyMTQsIDE1MywgMywgNzMsIDU3LCA5LCAxLCAyMjUsIDkyLCAzLCA1MywgMTQ4LCA5LCAxLCA4NCwgMywgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCA5MCwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgMjM0LCAyMDQsIDU2LCA5LCAxLCAKKyAgICA5MCwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMjI0LCA3NCwgOSwgMSwgCisgICAgMjAxLCA3MywgMywgNzMsIDIwMSwgNCwgOSwgMSwgMjEyLCAyNDUsIDIwMCwgNDYsIDksIDEsIDEyOCwgMjUxLCAxNDIsIDksIAorICAgIDEsIDI0MiwgMzAsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjEyLCA1NywgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMzYsIAorICAgIDc3LCAzLCAyMjgsIDUwLCA5NywgOSwgMSwgMjA4LCA2OCwgMjAxLCA3MiwgOSwgMSwgMTk5LCAxMDYsIDMsIDIyOCwgNTAsIAorICAgIDIwMywgMTY5LCA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjI3LCA4NywgMywgNzMsIDU3LCAKKyAgICA5LCAxLCAyNDgsIDI0MSwgMywgNCwgODQsIDU2LCA5LCAxLCAyMTYsIDU1LCAzLCA0LCA4NCwgNTYsIDksIDEsIDIwNiwgCisgICAgMTg0LCAzLCA0LCAyMDYsIDE4NCwgNTYsIDksIDEsIDIxMywgMTU1LCAzLCA0LCAyMTgsIDIyOCwgNTYsIDksIDEsIDkwLCAzLCAKKyAgICAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA0LCAyMTgsIDIyOCwgNTYsIDksIDEsIDI1MSwgMTk2LCAyMzcsIDEzNCwgOSwgMSwgCisgICAgMjUxLCAxOTYsIDIxNCwgMTUyLCA5LCAxLCAyNTEsIDE5NiwgMjE4LCAyMjcsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDI1MCwgCisgICAgMjUwLCA5LCA0LCAxMjIsIDIxMiwgNTYsIDksIDQsIDEyMiwgMjUxLCAxNzEsIDksIDQsIDEyMiwgMjE0LCAxNTIsIDksIDQsIAorICAgIDEyMiwgMjE4LCAyMjgsIDMsIDIyNywgMzYsIDksIDQsIDEyOCwgMjE4LCAyMjgsIDMsIDIyNywgMzYsIDksIDQsIDEyMiwgCisgICAgMjAwLCAyMzgsIDI1MCwgMTU0LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyNTAsIDE4NywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgCisgICAgMjUxLCA4NCwgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjEyLCAzNywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjE0LCAxMTYsIDksIAorICAgIDQsIDEyMiwgMjAwLCAyMzgsIDIwMSwgOTUsIDksIDQsIDEyMiwgMjM2LCAyNTMsIDIyMiwgMTQ1LCA5LCA0LCAxMjIsIDIsIAorICAgIDIxMiwgNTIsIDksIDI0MCwgMjUxLCAyMzgsIDE3MSwgNzYsIDI1MCwgMTExLCA5LCAyMDQsIDE4NSwgMjQyLCAxOCwgNTcsIAorICAgIDksIDI0MiwgMTk2LCAyMzcsIDE1OCwgOSwgMjQyLCAxOTYsIDI0MiwgMTcsIDksIDI0MiwgMTk2LCAyMjcsIDM2LCA5LCAKKyAgICAyNDIsIDE5NiwgMjM3LCAxNTYsIDksIDI0MiwgMTk2LCAyNDIsIDE1LCA5LCAyNDIsIDE5NiwgMjI3LCAzNCwgOSwgMTUwLCAKKyAgICAxMTIsIDczLCA1NiwgOSwgMTUwLCAxMjAsIDE5MCwgNTYsIDksIDE1MCwgMjI0LCA3NSwgNTYsIDksIDE1MCwgMTEyLCA3MywgCisgICAgNTcsIDksIDE1MCwgMTIwLCAxOTAsIDU3LCA5LCAxNTAsIDIyNCwgNzUsIDU3LCA5LCAxNzYsIDIzNywgMTU2LCA5LCAxNzYsIAorICAgIDI0MiwgMTUsIDksIDE3NiwgMjI3LCAzNCwgOSwgNCwgMTIyLCAyMDEsIDcyLCA5LCAyMzcsIDE1OSwgMywgMjEzLCAyNiwgOSwgCisgICAgMjM3LCAxNTksIDMsIDczLCA1NiwgOSwgMjI3LCAzNywgMywgNzMsIDU3LCA5LCA0OSwgMjUwLCAyMDMsIDU2LCA5LCA1MSwgCisgICAgMjUwLCAyMDMsIDU2LCA5LCA0OSwgMjUwLCAyMDMsIDU3LCA5LCA1MSwgMjUwLCAyMDMsIDU3LCA5LCA1MywgNTEsIDI1MCwgCisgICAgMjAzLCA1NiwgOSwgNTMsIDUxLCAyNTAsIDIwMywgODgsIDMsIDI0MCwgMTgyLCA5LCA1MSwgMjUwLCAyMDMsIDg4LCAzLCAKKyAgICAyNDAsIDE4MiwgOSwgMjQyLCAxOCwgMywgMjQwLCAxODIsIDksIDEzNCwgMjA5LCAxNzMsIDIxOCwgMjI4LCAyMzUsIDE2NSwgCisgICAgOTQsIDIsIDIyOCwgNTAsIDI0NywgMTQ5LCA5NCwgMiwgMjQ3LCAxNDksIDk0LCAyLCAyNTEsIDMzLCA5NCwgMiwgMjAyLCAKKyAgICAyMDMsIDk0LCAxLCAyMDksIDI1MCwgNjIsIDk0LCAxLCA2MiwgOTQsIDEsIDI1MiwgMTM4LCA5NCwgMSwgNzAsIDk0LCAxLCAKKyAgICAyMjgsIDE1MSwgOTQsIDEsIDY2LCA5NCwgMSwgMjAzLCAxODIsIDk0LCAxLCAxMDksIDE0NiwgOTQsIDEsIDEwOSwgMTU2LCAKKyAgICA5NCwgMSwgMjQ3LCAxNTIsIDcyLCA5NCwgMSwgMjA5LCAyNTAsIDcyLCA5NCwgMSwgNzIsIDk0LCAxLCAyNTEsIDE3NiwgOTQsIAorICAgIDEsIDI0NywgMTUyLCA3NCwgOTQsIDEsIDIwOSwgMjUwLCA3NCwgOTQsIDEsIDc0LCA5NCwgMSwgMjUwLCAxMzksIDk0LCAxLCAKKyAgICAxNjEsIDk0LCAxLCAyMjYsIDIwNywgOTQsIDEsIDIzNiwgODksIDk0LCAxLCAyMzUsIDE5OSwgOTQsIDEsIDIxOSwgMjUzLCAKKyAgICA5NCwgMSwgMjQ3LCAxOTAsIDk0LCAxLCAyNDcsIDM3LCA5NCwgMSwgMjI3LCAyNDgsIDk0LCAxLCAyMjcsIDIxNSwgOTQsIDEsIAorICAgIDIxOCwgNjAsIDk0LCAxLCAyMDQsIDI1MywgOTQsIDEsIDIwNCwgMjQxLCA5NCwgMSwgMjQxLCAyMjAsIDk0LCAxLCAyNDEsIAorICAgIDIwNCwgOTQsIDEsIDIxOSwgMjEsIDk0LCAxLCAyMDcsIDM2LCA5NCwgMSwgMjA2LCAxMjIsIDk0LCAxLCAyNDIsIDU4LCA5NCwgCisgICAgMSwgMjQxLCAxMDAsIDk0LCAxLCAxODgsIDk0LCAxLCAyMTksIDMsIDk0LCAxLCAxNzIsIDk0LCAxLCAyMTUsIDI0NSwgOTQsIAorICAgIDEsIDI0OSwgMTM2LCA5NCwgMSwgMjQ4LCAyMDAsIDk0LCAxLCAxNzgsIDk0LCAxLCAxODMsIDk0LCAxLCAyMTMsIDI1MiwgCisgICAgOTQsIDEsIDIxMiwgMjE1LCA5NCwgMSwgMTk0LCA5NCwgMSwgMjI0LCAxMzgsIDk0LCAxLCAyMjQsIDEyOSwgOTQsIDEsIAorICAgIDIwMywgOTAsIDk0LCAxLCAyMTAsIDExNCwgOTQsIDEsIDIwOCwgMTc5LCA5NCwgMSwgMjEyLCA2NCwgOTQsIDEsIDE0NCwgCisgICAgOTQsIDIyLCAyLCAyMTcsIDEyMSwgOTQsIDIyLCAyLCAyMTcsIDYxLCA5NCwgMiwgMjE4LCAxMDAsIDk0LCAyLCAyNTAsIAorICAgIDEyMiwgOTQsIDIyLCAyLCAyNTIsIDEzOCwgOTQsIDIyLCAyLCA3MCwgOTQsIDIyLCAyLCAyMjgsIDE1MSwgOTQsIDIyLCAyLCAKKyAgICA2NiwgOTQsIDIyLCAyLCAyMDMsIDE4MiwgOTQsIDIyLCAyLCAxMDksIDE0NiwgOTQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAKKyAgICA5NCwgMjIsIDIsIDI0NywgMTUyLCA3MiwgOTQsIDIyLCAyLCAyMDksIDI1MCwgNzIsIDk0LCAyMiwgMiwgNzIsIDk0LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIDc0LCA5NCwgMjIsIDIsIDIwOSwgMjUwLCA3NCwgOTQsIDIyLCAyLCAKKyAgICA3NCwgOTQsIDIyLCAyLCAyNTAsIDEzOSwgOTQsIDIsIDIwMiwgMjA4LCA5NCwgMjIsIDIsIDIxNSwgNiwgNzIsIDk0LCAyMiwgCisgICAgMiwgMjUwLCAxMTcsIDk0LCAyMTcsIDg2LCA5NCwgMjA4LCA1NywgMiwgMjA0LCAzMywgOTQsIDIwOCwgNTcsIDIsIDI1MSwgCisgICAgMzUsIDk0LCAyMzUsIDc0LCAyNTEsIDI1MSwgOTQsIDI1MSwgMjM5LCAyNTEsIDI1MSwgOTQsIDIyLCAyLCAyNDcsIDE1MiwgCisgICAgMTY4LCA3MiwgOTQsIDIyLCAyLCAyMDQsIDMxLCA5NCwgMjIsIDIsIDIwMywgMTgxLCA5NCwgMSwgMjE0LCAxNTksIDk0LCAxLCAKKyAgICAyMjYsIDE4OCwgOTQsIDEsIDIzNSwgMTc0LCA5NCwgMSwgMTk5LCAxMTQsIDk0LCAxLCAyNDEsIDIwOSwgOTQsIDEsIDIxMywgCisgICAgOTMsIDk0LCAxLCAyMzcsIDE5NSwgOTQsIDEsIDE5OSwgMTY2LCA5NCwgMSwgMTA5LCAyMTIsIDIxNiwgOTQsIDEsIDEwOSwgCisgICAgMjI0LCAxMzksIDk0LCAyMiwgMiwgMTA5LCAxNTYsIDk0LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgOTQsIDI0MiwgMTAsIDk0LCAKKyAgICA1MywgMjQyLCAxMCwgOTQsIDE3LCAxOTksIDgxLCA5NCwgMTcsIDEwMiwgOTQsIDE3LCAxMDUsIDk0LCAxNywgMTQ3LCA5NCwgCisgICAgMTcsIDE0OSwgOTQsIDE3LCAxNjQsIDk0LCAxNywgMTg3LCA5NCwgMTcsIDIxMCwgMTM1LCA5NCwgMTcsIDE5MiwgOTQsIDE3LCAKKyAgICAyMTksIDExMywgOTQsIDI1MiwgMywgNTQsIDk0LCAyLCAxMjIsIDIwOCwgMjQzLCAyNDAsIDE4MiwgOTQsIDEsIDI0NywgCisgICAgMTUyLCA2MiwgOTQsIDEsIDIxNywgMTIxLCA5NCwgMSwgMjE3LCA2MSwgOTQsIDEsIDI1MCwgMTE3LCA5NCwgMSwgMjA0LCAKKyAgICAzMSwgOTQsIDEsIDIwMywgMTgxLCA5NCwgMSwgMjIyLCAxMzgsIDI0MSwgMjIwLCA5NCwgMSwgMTk5LCA3NywgOTQsIDEsIAorICAgIDgwLCAxODMsIDk0LCAxLCAyMzUsIDIzNSwgOTQsIDEsIDIyNywgMTk0LCA5NCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDk0LCAKKyAgICAxLCAyNDEsIDIxMCwgOTQsIDEsIDI0OSwgNDQsIDE4NSwgMjUxLCA2MiwgMTg1LCAyLCAyNDcsIDE0OSwgMTg1LCAyLCAyNTEsIAorICAgIDMzLCAxODUsIDIsIDIwMiwgMjAzLCAxODUsIDEsIDYyLCAxODUsIDEsIDI1MiwgMTM4LCAxODUsIDEsIDcwLCAxODUsIDEsIAorICAgIDIyOCwgMTUxLCAxODUsIDEsIDY2LCAxODUsIDEsIDIwMywgMTgyLCAxODUsIDEsIDEwOSwgMTQ2LCAxODUsIDEsIDEwOSwgCisgICAgMTU2LCAxODUsIDEsIDcyLCAxODUsIDEsIDI1MSwgMTc2LCAxODUsIDEsIDc0LCAxODUsIDEsIDI1MCwgMTM5LCAxODUsIDEsIAorICAgIDE2MSwgMTg1LCAxLCAyMjYsIDIwNywgMTg1LCAxLCAyMzYsIDg5LCAxODUsIDEsIDIzNSwgMTk5LCAxODUsIDEsIDIxOSwgCisgICAgMjUzLCAxODUsIDEsIDI0NywgMTkwLCAxODUsIDEsIDI0NywgMzcsIDE4NSwgMSwgMjI3LCAyNDgsIDE4NSwgMSwgMjI3LCAKKyAgICAyMTUsIDE4NSwgMSwgMjE4LCA2MCwgMTg1LCAxLCAyMDQsIDI1MywgMTg1LCAxLCAyMDQsIDI0MSwgMTg1LCAxLCAyNDEsIAorICAgIDIyMCwgMTg1LCAxLCAyNDEsIDIwNCwgMTg1LCAxLCAyMTksIDIxLCAxODUsIDEsIDIwNywgMzYsIDE4NSwgMSwgMjA2LCAKKyAgICAxMjIsIDE4NSwgMSwgMjQyLCA1OCwgMTg1LCAxLCAyNDEsIDEwMCwgMTg1LCAxLCAxODgsIDE4NSwgMSwgMTcyLCAxODUsIDEsIAorICAgIDIxNSwgMjQ1LCAxODUsIDEsIDI0OSwgMTM2LCAxODUsIDEsIDI0OCwgMjAwLCAxODUsIDEsIDE3OCwgMTg1LCAxLCAxODMsIAorICAgIDE4NSwgMSwgMjEzLCAyNTIsIDE4NSwgMSwgMTk0LCAxODUsIDEsIDIxMCwgMTE0LCAxODUsIDEsIDIwOCwgMTc5LCAxODUsIAorICAgIDEsIDIxMiwgNjQsIDE4NSwgMSwgMTQ0LCAxODUsIDIsIDIxOCwgMTAwLCAxODUsIDIsIDI1MCwgMTIyLCAxODUsIDIyLCAyLCAKKyAgICAyNTIsIDEzOCwgMTg1LCAyMiwgMiwgNzAsIDE4NSwgMjIsIDIsIDIyOCwgMTUxLCAxODUsIDIyLCAyLCA2NiwgMTg1LCAyMiwgCisgICAgMiwgMjAzLCAxODIsIDE4NSwgMjIsIDIsIDEwOSwgMTQ2LCAxODUsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODUsIDIyLCAyLCAKKyAgICA3MiwgMTg1LCAyMiwgMiwgMjUxLCAxNzYsIDE4NSwgMjIsIDIsIDc0LCAxODUsIDIyLCAyLCAyNTAsIDEzOSwgMTg1LCAyLCAKKyAgICAyMDIsIDIwOCwgMTg1LCAxLCAyMjYsIDE5OCwgMjA3LCAzNiwgMTg1LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMTg1LCAxLCAKKyAgICAyMTIsIDIxNSwgMTg1LCAxLCAyMTMsIDkzLCAxODUsIDEsIDE5OSwgMTY2LCAxODUsIDEsIDEwOSwgMjEyLCAyMTYsIDE4NSwgCisgICAgMSwgMTA5LCAyMjQsIDEzOSwgMTg1LCAyMiwgMiwgMTA5LCAxNTYsIDE4NSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE4NSwgCisgICAgMTcsIDE5OSwgODEsIDE4NSwgMTcsIDEwMiwgMTg1LCAxNywgMTA1LCAxODUsIDE3LCAxNDcsIDE4NSwgMTcsIDE0OSwgMTg1LCAKKyAgICAxNywgMTY0LCAxODUsIDE3LCAxODcsIDE4NSwgMTcsIDIxMCwgMTM1LCAxODUsIDE3LCAxOTIsIDE4NSwgMTcsIDIxOSwgCisgICAgMTEzLCAxODUsIDEsIDIxMywgMjUzLCAzLCAxMDEsIDI0MSwgNzAsIDE4NSwgMSwgMjEzLCAyNTMsIDMsIDIyNCwgNTQsIAorICAgIDI0MSwgNzAsIDE4NSwgMjEyLCAxNDksIDgxLCAxODUsIDIxMiwgMTQ5LCA1NCwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgCisgICAgMTAyLCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxMDUsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDE0NywgMTg1LCAyNDIsIAorICAgIDE5NSwgMjE4LCA5MiwgMTQ5LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxMTIsIDIyNCwgMjQyLCAyMDYsIDExMiwgMjA2LCAKKyAgICAxMDcsIDI0MSwgMTMwLCAxODUsIDI0MiwgMTk1LCAyNDEsIDEzMSwgMjA5LCAxMDAsIDE4NSwgMjI4LCAxMywgMTg1LCAyMzYsIAorICAgIDU2LCA4MSwgMjM1LCAxOCwgMiwgMjUxLCAyMzQsIDI0OCwgMTY4LCAyMzUsIDE4LCAyLCAyNDgsIDE2OCwgMjM1LCAxOCwgMiwgCisgICAgMjAyLCAyMDMsIDIzNSwgMTgsIDEsIDYyLCAyMzUsIDE4LCAxLCAyNTIsIDEzOCwgMjM1LCAxOCwgMSwgNzAsIDIzNSwgMTgsIAorICAgIDEsIDIyOCwgMTUxLCAyMzUsIDE4LCAxLCA2NiwgMjM1LCAxOCwgMSwgMjAzLCAxODIsIDIzNSwgMTgsIDEsIDIzOCwgMjU1LCAKKyAgICAyMzUsIDE4LCAxLCAyNTEsIDE3NiwgMjM1LCAxOCwgMSwgMjE3LCA2MywgMjM1LCAxOCwgMSwgMjUwLCAxMzksIDIzNSwgMTgsIAorICAgIDEsIDE2MSwgMjM1LCAxOCwgMSwgMjI2LCAyMDcsIDIzNSwgMTgsIDEsIDIzNiwgODksIDIzNSwgMTgsIDEsIDIzNSwgMTk5LCAKKyAgICAyMzUsIDE4LCAxLCAyMTksIDI1MywgMjM1LCAxOCwgMSwgMjQ3LCAxOTAsIDIzNSwgMTgsIDEsIDI0NywgMzcsIDIzNSwgMTgsIAorICAgIDEsIDIyNywgMjQ4LCAyMzUsIDE4LCAxLCAyMjcsIDIxNSwgMjM1LCAxOCwgMSwgMjE4LCA2MCwgMjM1LCAxOCwgMSwgMjA0LCAKKyAgICAyNTMsIDIzNSwgMTgsIDEsIDIwNCwgMjQxLCAyMzUsIDE4LCAxLCAyNDEsIDIyMCwgMjM1LCAxOCwgMSwgMjQxLCAyMDQsIAorICAgIDIzNSwgMTgsIDEsIDIxOSwgMjEsIDIzNSwgMTgsIDEsIDIwNywgMzYsIDIzNSwgMTgsIDEsIDIwNiwgMTIyLCAyMzUsIDE4LCAKKyAgICAxLCAyNDIsIDU4LCAyMzUsIDE4LCAxLCAyNDEsIDEwMCwgMjM1LCAxOCwgMSwgMTg4LCAyMzUsIDE4LCAxLCAxNzIsIDIzNSwgCisgICAgMTgsIDEsIDIxNSwgMjQ1LCAyMzUsIDE4LCAxLCAyNDksIDEzNiwgMjM1LCAxOCwgMSwgMjQ4LCAyMDAsIDIzNSwgMTgsIDEsIAorICAgIDE3OCwgMjM1LCAxOCwgMSwgMTgzLCAyMzUsIDE4LCAxLCAyMTMsIDI1MiwgMjM1LCAxOCwgMSwgMTk0LCAyMzUsIDE4LCAxLCAKKyAgICAyMjQsIDEzOCwgMjM1LCAxOCwgMSwgMjAzLCA5MCwgMjM1LCAxOCwgMSwgMjEwLCAxMTQsIDIzNSwgMTgsIDEsIDIxMiwgNjQsIAorICAgIDIzNSwgMTgsIDEsIDE0NCwgMjM1LCAxOCwgMiwgMjE4LCAxMDAsIDIzNSwgMTgsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCAxOCwgCisgICAgMjIsIDIsIDcwLCAyMzUsIDE4LCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgMTgsIDIyLCAyLCA2NiwgMjM1LCAxOCwgMjIsIDIsIAorICAgIDIwMywgMTgyLCAyMzUsIDE4LCAyMiwgMiwgMjM4LCAyNTUsIDIzNSwgMTgsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCAxOCwgCisgICAgMjIsIDIsIDIxNywgNjMsIDIzNSwgMTgsIDIyLCAyLCAyNTAsIDEzOSwgMjM1LCAxOCwgMiwgMjAyLCAyMDgsIDIzNSwgMTgsIAorICAgIDIsIDIwNCwgMzUsIDIzNSwgMTgsIDEsIDIyNiwgMTg4LCAyMzUsIDE4LCAxLCAyMzUsIDE3NCwgMjM1LCAxOCwgMSwgMTk5LCAKKyAgICAxMTQsIDIzNSwgMTgsIDEsIDIxMiwgMjE1LCAyMzUsIDE4LCAxLCAyMzcsIDE5NSwgMjM1LCAxOCwgMTcsIDE5OSwgODEsIAorICAgIDIzNSwgMTgsIDE3LCAxMDIsIDIzNSwgMTgsIDE3LCAxMDUsIDIzNSwgMTgsIDE3LCAxNDcsIDIzNSwgMTgsIDE3LCAxNDksIAorICAgIDIzNSwgMTgsIDE3LCAxNjQsIDIzNSwgMTgsIDE3LCAxODcsIDIzNSwgMTgsIDE3LCAyMTAsIDEzNSwgMjM1LCAxOCwgMTcsIAorICAgIDE5MiwgMjM1LCAxOCwgMTcsIDIxOSwgMTEzLCAyMzUsIDE4LCAyMDUsIDIyMSwgMjM1LCAxOCwgMjUxLCAyMzMsIDIzNSwgCisgICAgMTgsIDIyOCwgMzMsIDIzNSwgMTgsIDIwMywgMjEwLCAyMzUsIDE4LCAyMzgsIDIxNywgMjE3LCA2OCwgMjM1LCAxOCwgMiwgCisgICAgMjAwLCA4NCwgMjM1LCAzMywgMiwgMjQ3LCAxNDksIDIzNSwgMzMsIDIsIDI1MSwgMzMsIDIzNSwgMzMsIDIsIDIwMiwgMjAzLCAKKyAgICAyMzUsIDMzLCAxLCA2MiwgMjM1LCAzMywgMSwgMjUyLCAxMzgsIDIzNSwgMzMsIDEsIDcwLCAyMzUsIDMzLCAxLCAyMjgsIAorICAgIDE1MSwgMjM1LCAzMywgMSwgNjYsIDIzNSwgMzMsIDEsIDIwMywgMTgyLCAyMzUsIDMzLCAxLCAxMDksIDE0NiwgMjM1LCAzMywgCisgICAgMSwgMTA5LCAxNTYsIDIzNSwgMzMsIDIyLCAyNDcsIDE1MiwgNzIsIDIzNSwgMzMsIDEsIDcyLCAyMzUsIDMzLCAxLCAyNTEsIAorICAgIDE3NiwgMjM1LCAzMywgMjIsIDI0NywgMTUyLCA3NCwgMjM1LCAzMywgMSwgNzQsIDIzNSwgMzMsIDEsIDI1MCwgMTM5LCAKKyAgICAyMzUsIDMzLCAxLCAxNjEsIDIzNSwgMzMsIDEsIDIyNiwgMjA3LCAyMzUsIDMzLCAxLCAyMzYsIDg5LCAyMzUsIDMzLCAxLCAKKyAgICAyMzUsIDE5OSwgMjM1LCAzMywgMSwgMjE5LCAyNTMsIDIzNSwgMzMsIDEsIDI0NywgMTkwLCAyMzUsIDMzLCAxLCAyNDcsIAorICAgIDM3LCAyMzUsIDMzLCAxLCAyMjcsIDI0OCwgMjM1LCAzMywgMSwgMjI3LCAyMTUsIDIzNSwgMzMsIDEsIDIxOCwgNjAsIDIzNSwgCisgICAgMzMsIDEsIDIwNCwgMjUzLCAyMzUsIDMzLCAxLCAyMDQsIDI0MSwgMjM1LCAzMywgMSwgMjQxLCAyMjAsIDIzNSwgMzMsIDEsIAorICAgIDI0MSwgMjA0LCAyMzUsIDMzLCAxLCAyMTksIDIxLCAyMzUsIDMzLCAxLCAyMDcsIDM2LCAyMzUsIDMzLCAxLCAyMDYsIDEyMiwgCisgICAgMjM1LCAzMywgMSwgMjQyLCA1OCwgMjM1LCAzMywgMSwgMjQxLCAxMDAsIDIzNSwgMzMsIDEsIDE4OCwgMjM1LCAzMywgMSwgCisgICAgMTcyLCAyMzUsIDMzLCAxLCAyMTUsIDI0NSwgMjM1LCAzMywgMSwgMjQ5LCAxMzYsIDIzNSwgMzMsIDEsIDI0OCwgMjAwLCAKKyAgICAyMzUsIDMzLCAxLCAxNzgsIDIzNSwgMzMsIDEsIDE4MywgMjM1LCAzMywgMSwgMjEzLCAyNTIsIDIzNSwgMzMsIDEsIDE5NCwgCisgICAgMjM1LCAzMywgMSwgMjI0LCAxMzgsIDIzNSwgMzMsIDEsIDIwMywgOTAsIDIzNSwgMzMsIDEsIDIxMCwgMTE0LCAyMzUsIDMzLCAKKyAgICAxLCAyMDgsIDE3OSwgMjM1LCAzMywgMSwgMjEyLCA2NCwgMjM1LCAzMywgMSwgMTQ0LCAyMzUsIDMzLCAyLCAyMTgsIDEwMCwgCisgICAgMjM1LCAzMywgMiwgMjUwLCAxMjIsIDIzNSwgMzMsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCAzMywgMjIsIDIsIDcwLCAyMzUsIAorICAgIDMzLCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgMzMsIDIyLCAyLCA2NiwgMjM1LCAzMywgMjIsIDIsIDIwMywgMTgyLCAyMzUsIAorICAgIDMzLCAyMiwgMiwgMTA5LCAxNDYsIDIzNSwgMzMsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMzUsIDMzLCAyMiwgMiwgMjQ3LCAKKyAgICAxNTIsIDcyLCAyMzUsIDMzLCAyMiwgMiwgNzIsIDIzNSwgMzMsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCAzMywgMjIsIDIsIAorICAgIDI0NywgMTUyLCA3NCwgMjM1LCAzMywgMjIsIDIsIDc0LCAyMzUsIDMzLCAyMiwgMiwgMjUwLCAxMzksIDIzNSwgMzMsIDIsIAorICAgIDIwMiwgMjA4LCAyMzUsIDMzLCAyMTcsIDg2LCAyMzUsIDMzLCAxLCAxMDksIDIxMiwgMjE2LCAyMzUsIDMzLCAxLCAxMDksIAorICAgIDIyNCwgMTM5LCAyMzUsIDMzLCAyMiwgMiwgMTA5LCAxNTYsIDIzNSwgMzMsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMzUsIAorICAgIDMzLCAxNywgMTk5LCA4MSwgMjM1LCAzMywgMTcsIDEwMiwgMjM1LCAzMywgMTcsIDEwNSwgMjM1LCAzMywgMTcsIDE0NywgCisgICAgMjM1LCAzMywgMTcsIDE0OSwgMjM1LCAzMywgMTcsIDE2NCwgMjM1LCAzMywgMTcsIDE4NywgMjM1LCAzMywgMTcsIDIxMCwgCisgICAgMTM1LCAyMzUsIDMzLCAxNywgMTkyLCAyMzUsIDMzLCAxNywgMjE5LCAxMTMsIDIzNSwgMzMsIDI1MiwgMywgNTQsIDIzNSwgCisgICAgMzMsIDIxMiwgMTQ5LCA1NCwgMjM1LCAzMywgMSwgMTk5LCA3NywgMjE3LCAyNCwgMiwgMjQ3LCAxNDksIDIxNywgMjQsIDIsIAorICAgIDI1MSwgMzMsIDIxNywgMjQsIDIsIDIwMiwgMjAzLCAyMTcsIDI0LCAxLCA2MiwgMjE3LCAyNCwgMSwgMjUyLCAxMzgsIDIxNywgCisgICAgMjQsIDEsIDcwLCAyMTcsIDI0LCAxLCAyMjgsIDE1MSwgMjE3LCAyNCwgMSwgNjYsIDIxNywgMjQsIDEsIDIwMywgMTgyLCAKKyAgICAyMTcsIDI0LCAxLCAxMDksIDE0NiwgMjE3LCAyNCwgMSwgMTA5LCAxNTYsIDIxNywgMjQsIDEsIDcyLCAyMTcsIDI0LCAxLCAKKyAgICAyNTEsIDE3NiwgMjE3LCAyNCwgMSwgNzQsIDIxNywgMjQsIDEsIDI1MCwgMTM5LCAyMTcsIDI0LCAxLCAxNjEsIDIxNywgMjQsIAorICAgIDEsIDIyNiwgMjA3LCAyMTcsIDI0LCAxLCAyMzYsIDg5LCAyMTcsIDI0LCAxLCAyMzUsIDE5OSwgMjE3LCAyNCwgMSwgMjE5LCAKKyAgICAyNTMsIDIxNywgMjQsIDEsIDI0NywgMTkwLCAyMTcsIDI0LCAxLCAyNDcsIDM3LCAyMTcsIDI0LCAxLCAyMjcsIDI0OCwgCisgICAgMjE3LCAyNCwgMSwgMjI3LCAyMTUsIDIxNywgMjQsIDEsIDIxOCwgNjAsIDIxNywgMjQsIDEsIDIwNCwgMjUzLCAyMTcsIDI0LCAKKyAgICAxLCAyMDQsIDI0MSwgMjE3LCAyNCwgMSwgMjQxLCAyMjAsIDIxNywgMjQsIDEsIDI0MSwgMjA0LCAyMTcsIDI0LCAxLCAyMTksIAorICAgIDIxLCAyMTcsIDI0LCAxLCAyMDcsIDM2LCAyMTcsIDI0LCAxLCAyMDYsIDEyMiwgMjE3LCAyNCwgMSwgMjQyLCA1OCwgMjE3LCAKKyAgICAyNCwgMSwgMjQxLCAxMDAsIDIxNywgMjQsIDEsIDE4OCwgMjE3LCAyNCwgMSwgMTcyLCAyMTcsIDI0LCAxLCAyMTUsIDI0NSwgCisgICAgMjE3LCAyNCwgMSwgMjQ5LCAxMzYsIDIxNywgMjQsIDEsIDI0OCwgMjAwLCAyMTcsIDI0LCAxLCAxNzgsIDIxNywgMjQsIDEsIAorICAgIDE4MywgMjE3LCAyNCwgMSwgMjEzLCAyNTIsIDIxNywgMjQsIDEsIDE5NCwgMjE3LCAyNCwgMSwgMjI0LCAxMzgsIDIxNywgCisgICAgMjQsIDEsIDIwMywgOTAsIDIxNywgMjQsIDEsIDIxMCwgMTE0LCAyMTcsIDI0LCAxLCAyMDgsIDE3OSwgMjE3LCAyNCwgMSwgCisgICAgMjEyLCA2NCwgMjE3LCAyNCwgMSwgMTQ0LCAyMTcsIDI0LCAyLCAyMTgsIDEwMCwgMjE3LCAyNCwgMiwgMjUwLCAxMjIsIAorICAgIDIxNywgMjQsIDIyLCAyLCAyNTIsIDEzOCwgMjE3LCAyNCwgMjIsIDIsIDcwLCAyMTcsIDI0LCAyMiwgMiwgMjI4LCAxNTEsIAorICAgIDIxNywgMjQsIDIyLCAyLCA2NiwgMjE3LCAyNCwgMjIsIDIsIDIwMywgMTgyLCAyMTcsIDI0LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDIxNywgMjQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMTcsIDI0LCAyMiwgMiwgNzIsIDIxNywgMjQsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjE3LCAyNCwgMjIsIDIsIDc0LCAyMTcsIDI0LCAyMiwgMiwgMjUwLCAxMzksIDIxNywgMjQsIDIsIDIwMiwgMjA4LCAKKyAgICAyMTcsIDI0LCAyNTEsIDE3NywgMjI1LCAyLCA4MSwgMjE3LCAyNCwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDIxNywgMjQsIDEsIAorICAgIDIxMiwgMjE1LCAyMTcsIDI0LCAxLCAyMTMsIDkzLCAyMTcsIDI0LCAxLCAxOTksIDE2NiwgMjE3LCAyNCwgMSwgMTA5LCAKKyAgICAyMTIsIDIxNiwgMjE3LCAyNCwgMSwgMTA5LCAyMjQsIDEzOSwgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMTU2LCAyMTcsIDI0LCAKKyAgICAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMjE3LCAyNCwgMTcsIDE5OSwgODEsIDIxNywgMjQsIDE3LCAxMDIsIDIxNywgMjQsIAorICAgIDE3LCAxMDUsIDIxNywgMjQsIDE3LCAxNDcsIDIxNywgMjQsIDE3LCAxNDksIDIxNywgMjQsIDE3LCAxNjQsIDIxNywgMjQsIAorICAgIDE3LCAxODcsIDIxNywgMjQsIDE3LCAyMTAsIDEzNSwgMjE3LCAyNCwgMTcsIDE5MiwgMjE3LCAyNCwgMTcsIDIxOSwgMTEzLCAKKyAgICAyMTcsIDI0LCAyMjgsIDEzLCAyMTcsIDI0LCAxLCAyMDEsIDExNCwgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgCisgICAgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIxNywgMjQsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDIxNywgCisgICAgMjQsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIDIxNywgMjQsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAyMTcsIDI0LCAKKyAgICAyMzYsIDIxOSwgMTI2LCAyMDksIDk3LCA0NSwgMiwgMjUxLCAzMywgNDUsIDIsIDIwMiwgMjAzLCA0NSwgMSwgNjIsIDQ1LCAKKyAgICAxLCAyNTIsIDEzOCwgNDUsIDEsIDcwLCA0NSwgMSwgMjI4LCAxNTEsIDQ1LCAxLCA2NiwgNDUsIDEsIDIwMywgMTgyLCA0NSwgCisgICAgMSwgNzIsIDQ1LCAxLCAyMzgsIDI1NSwgNDUsIDEsIDI1MSwgMTc2LCA0NSwgMSwgNzQsIDQ1LCAxLCAyMTcsIDYzLCA0NSwgCisgICAgMSwgMjUwLCAxMzksIDQ1LCAxLCAxNjEsIDQ1LCAxLCAyMTksIDI1MywgNDUsIDEsIDI0NywgMTkwLCA0NSwgMSwgMjI3LCAKKyAgICAyNDgsIDQ1LCAxLCAyMTgsIDYwLCA0NSwgMSwgMjA0LCAyNTMsIDQ1LCAxLCAyMTksIDIxLCA0NSwgMSwgMjA3LCAzNiwgNDUsIAorICAgIDEsIDE4OCwgNDUsIDEsIDIxOSwgMywgNDUsIDEsIDE3MiwgNDUsIDEsIDE3OCwgNDUsIDEsIDE4MywgNDUsIDEsIDIxMywgCisgICAgMjUyLCA0NSwgMSwgMjEyLCAyMTUsIDQ1LCAxLCAxOTQsIDQ1LCAxLCAyMjQsIDEzOCwgNDUsIDEsIDIyNCwgMTI5LCA0NSwgCisgICAgMSwgMjAzLCA5MCwgNDUsIDEsIDIxMCwgMTE0LCA0NSwgMSwgMjA4LCAxNzksIDQ1LCAxLCAyMTIsIDY0LCA0NSwgMSwgMTQ0LCAKKyAgICA0NSwgMjIsIDIsIDI1MiwgMTM4LCA0NSwgMjIsIDIsIDcwLCA0NSwgMjIsIDIsIDIyOCwgMTUxLCA0NSwgMjIsIDIsIDY2LCAKKyAgICA0NSwgMjIsIDIsIDIwMywgMTgyLCA0NSwgMjIsIDIsIDcyLCA0NSwgMjIsIDIsIDIzOCwgMjU1LCA0NSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCA0NSwgMjIsIDIsIDc0LCA0NSwgMjIsIDIsIDIxNywgNjMsIDQ1LCAyMiwgMiwgMjUwLCAxMzksIDQ1LCAyLCAyMDIsIAorICAgIDIwOCwgNDUsIDIxNywgODYsIDQ1LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgNDUsIDE3LCAxOTksIDgxLCA0NSwgMTcsIDEwMiwgCisgICAgNDUsIDE3LCAxMDUsIDQ1LCAxNywgMTQ3LCA0NSwgMTcsIDE0OSwgNDUsIDE3LCAxNjQsIDQ1LCAxNywgMTg3LCA0NSwgMTcsIAorICAgIDIxMCwgMTM1LCA0NSwgMTcsIDE5MiwgNDUsIDE3LCAyMTksIDExMywgNDUsIDQxLCAyMDYsIDE2NiwgNDUsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDQ1LCA0MSwgMTEyLCAyMDYsIDUwLCA0NSwgMjQxLCAyMzMsIDU0LCA0NSwgMjIxLCA5MCwgNTQsIDQ1LCAKKyAgICAyMDAsIDQ5LCA1NCwgNDUsIDI0MSwgMTcyLCA1NCwgNDUsIDI0MiwgMjQ2LCA1NCwgNDUsIDI1MCwgMTg5LCA4OCwgNTQsIAorICAgIDQ1LCAyMTIsIDE0OSwgNTQsIDQ1LCA0MSwgNTQsIDE4MCwgMiwgMzgsIDI0NywgMTUwLCA1NiwgMTgwLCAyLCAyNDcsIDE0OSwgCisgICAgMTgwLCAyLCAyNTEsIDMzLCAxODAsIDIsIDIwMiwgMjAzLCAxODAsIDEsIDYyLCAxODAsIDEsIDI1MiwgMTM4LCAxODAsIDEsIAorICAgIDcwLCAxODAsIDEsIDIyOCwgMTUxLCAxODAsIDEsIDY2LCAxODAsIDEsIDIwMywgMTgyLCAxODAsIDEsIDEwOSwgMTQ2LCAKKyAgICAxODAsIDEsIDEwOSwgMTU2LCAxODAsIDEsIDcyLCAxODAsIDEsIDIzOCwgMjU1LCAxODAsIDEsIDI1MSwgMTc2LCAxODAsIDEsIAorICAgIDc0LCAxODAsIDEsIDIxNywgNjMsIDE4MCwgMSwgMjUwLCAxMzksIDE4MCwgMSwgMTYxLCAxODAsIDEsIDIyNiwgMjA3LCAKKyAgICAxODAsIDEsIDIzNiwgODksIDE4MCwgMSwgMjM1LCAxOTksIDE4MCwgMSwgMjE5LCAyNTMsIDE4MCwgMSwgMjQ3LCAxOTAsIAorICAgIDE4MCwgMSwgMjQ3LCAzNywgMTgwLCAxLCAyMjcsIDI0OCwgMTgwLCAxLCAyMjcsIDIxNSwgMTgwLCAxLCAyMTgsIDYwLCAKKyAgICAxODAsIDEsIDIwNCwgMjUzLCAxODAsIDEsIDIwNCwgMjQxLCAxODAsIDEsIDI0MSwgMjIwLCAxODAsIDEsIDI0MSwgMjA0LCAKKyAgICAxODAsIDEsIDIxOSwgMjEsIDE4MCwgMSwgMjA3LCAzNiwgMTgwLCAxLCAyMDYsIDEyMiwgMTgwLCAxLCAyNDIsIDU4LCAxODAsIAorICAgIDEsIDI0MSwgMTAwLCAxODAsIDEsIDE4OCwgMTgwLCAxLCAxNzIsIDE4MCwgMSwgMjE1LCAyNDUsIDE4MCwgMSwgMjQ5LCAKKyAgICAxMzYsIDE4MCwgMSwgMjQ4LCAyMDAsIDE4MCwgMSwgMTc4LCAxODAsIDEsIDE4MywgMTgwLCAxLCAyMTMsIDI1MiwgMTgwLCAKKyAgICAxLCAyMTIsIDIxNSwgMTgwLCAxLCAxOTQsIDE4MCwgMSwgMjI0LCAxMzgsIDE4MCwgMSwgMjI0LCAxMjksIDE4MCwgMSwgCisgICAgMjAzLCA5MCwgMTgwLCAxLCAyMTAsIDExNCwgMTgwLCAxLCAyMDgsIDE3OSwgMTgwLCAxLCAyMTIsIDY0LCAxODAsIDEsIAorICAgIDE0NCwgMTgwLCAyLCAyNTAsIDEyMiwgMTgwLCAyMiwgMiwgMjUyLCAxMzgsIDE4MCwgMjIsIDIsIDcwLCAxODAsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTgwLCAyMiwgMiwgNjYsIDE4MCwgMjIsIDIsIDIwMywgMTgyLCAxODAsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTgwLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTgwLCAyMiwgMiwgNzIsIDE4MCwgMjIsIDIsIDIzOCwgMjU1LCAxODAsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTgwLCAyMiwgMiwgNzQsIDE4MCwgMjIsIDIsIDIxNywgNjMsIDE4MCwgMjIsIDIsIDI1MCwgMTM5LCAKKyAgICAxODAsIDIsIDIwMiwgMjA4LCAxODAsIDIyNSwgMiwgODEsIDE4MCwgMjUxLCAxNzcsIDIyNSwgMiwgODEsIDE4MCwgMSwgCisgICAgMjA1LCAzMiwgMTgwLCAxLCAyMzksIDkzLCAxODAsIDEsIDIxMiwgMTk2LCAxODAsIDEsIDEwOSwgMjEyLCAyMTYsIDE4MCwgCisgICAgMSwgMTA5LCAyMjQsIDEzOSwgMTgwLCAyMiwgMiwgMTA5LCAxNTYsIDE4MCwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE4MCwgCisgICAgMTcsIDE5OSwgODEsIDE4MCwgMTcsIDEwMiwgMTgwLCAxNywgMTA1LCAxODAsIDE3LCAxNDcsIDE4MCwgMTcsIDE0OSwgMTgwLCAKKyAgICAxNywgMTY0LCAxODAsIDE3LCAxODcsIDE4MCwgMTcsIDIxMCwgMTM1LCAxODAsIDE3LCAxOTIsIDE4MCwgMTcsIDIxOSwgCisgICAgMTEzLCAxODAsIDIzNiwgMjE5LCAxNywgMTk5LCA4MiwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIAorICAgIDIzNiwgMjE5LCAxNywgMTEyLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAKKyAgICAxMjAsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDEyNiwgMzYsIDIxNywgCisgICAgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTEyLCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIAorICAgIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDEyMCwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAKKyAgICAyMTksIDE3LCAxMjYsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIsIDIwNCwgMTc1LCAyMjcsIDYzLCAKKyAgICAyLCAyMDgsIDI0MywgMjQ3LCAxNDksIDIyNywgNjMsIDIsIDI0NywgMTQ5LCAyMjcsIDYzLCAyLCAyNTEsIDMzLCAyMjcsIAorICAgIDYzLCAyLCAyMDIsIDIwMywgMjI3LCA2MywgMSwgNjIsIDIyNywgNjMsIDEsIDI1MiwgMTM4LCAyMjcsIDYzLCAxLCA3MCwgCisgICAgMjI3LCA2MywgMSwgMjI4LCAxNTEsIDIyNywgNjMsIDEsIDY2LCAyMjcsIDYzLCAxLCAyMDMsIDE4MiwgMjI3LCA2MywgMSwgCisgICAgMTA5LCAxNDYsIDIyNywgNjMsIDEsIDEwOSwgMTU2LCAyMjcsIDYzLCAxLCA3MiwgMjI3LCA2MywgMSwgMjM4LCAyNTUsIAorICAgIDIyNywgNjMsIDEsIDI1MSwgMTc2LCAyMjcsIDYzLCAxLCA3NCwgMjI3LCA2MywgMSwgMjE3LCA2MywgMjI3LCA2MywgMSwgCisgICAgMjUwLCAxMzksIDIyNywgNjMsIDEsIDE2MSwgMjI3LCA2MywgMSwgMjI2LCAyMDcsIDIyNywgNjMsIDEsIDIzNiwgODksIAorICAgIDIyNywgNjMsIDEsIDIzNSwgMTk5LCAyMjcsIDYzLCAxLCAyMTksIDI1MywgMjI3LCA2MywgMSwgMjQ3LCAxOTAsIDIyNywgCisgICAgNjMsIDEsIDI0NywgMzcsIDIyNywgNjMsIDEsIDIyNywgMjQ4LCAyMjcsIDYzLCAxLCAyMjcsIDIxNSwgMjI3LCA2MywgMSwgCisgICAgMjE4LCA2MCwgMjI3LCA2MywgMSwgMjA0LCAyNTMsIDIyNywgNjMsIDEsIDIwNCwgMjQxLCAyMjcsIDYzLCAxLCAyNDEsIAorICAgIDIyMCwgMjI3LCA2MywgMSwgMjQxLCAyMDQsIDIyNywgNjMsIDEsIDIxOSwgMjEsIDIyNywgNjMsIDEsIDIwNywgMzYsIDIyNywgCisgICAgNjMsIDEsIDIwNiwgMTIyLCAyMjcsIDYzLCAxLCAyNDIsIDU4LCAyMjcsIDYzLCAxLCAyNDEsIDEwMCwgMjI3LCA2MywgMSwgCisgICAgMTg4LCAyMjcsIDYzLCAxLCAxNzIsIDIyNywgNjMsIDEsIDIxNSwgMjQ1LCAyMjcsIDYzLCAxLCAyNDksIDEzNiwgMjI3LCAKKyAgICA2MywgMSwgMjQ4LCAyMDAsIDIyNywgNjMsIDEsIDE3OCwgMjI3LCA2MywgMSwgMTgzLCAyMjcsIDYzLCAxLCAyMTMsIDI1MiwgCisgICAgMjI3LCA2MywgMSwgMjEyLCAyMTUsIDIyNywgNjMsIDEsIDE5NCwgMjI3LCA2MywgMSwgMjI0LCAxMzgsIDIyNywgNjMsIDEsIAorICAgIDIwMywgOTAsIDIyNywgNjMsIDEsIDIxMCwgMTE0LCAyMjcsIDYzLCAxLCAyMDgsIDE3OSwgMjI3LCA2MywgMSwgMjEyLCA2NCwgCisgICAgMjI3LCA2MywgMSwgMTQ0LCAyMjcsIDYzLCAyLCAyMTgsIDEwMCwgMjI3LCA2MywgMiwgMjUwLCAxMjIsIDIyNywgNjMsIDIyLCAKKyAgICAyLCAyNTIsIDEzOCwgMjI3LCA2MywgMjIsIDIsIDcwLCAyMjcsIDYzLCAyMiwgMiwgMjI4LCAxNTEsIDIyNywgNjMsIDIyLCAKKyAgICAyLCA2NiwgMjI3LCA2MywgMjIsIDIsIDIwMywgMTgyLCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAxNDYsIDIyNywgNjMsIDIyLCAKKyAgICAyLCAxMDksIDIxMiwgMjE2LCAyMjcsIDYzLCAyMiwgMiwgNzIsIDIyNywgNjMsIDIyLCAyLCAyMzgsIDI1NSwgMjI3LCA2MywgCisgICAgMjIsIDIsIDI1MSwgMTc2LCAyMjcsIDYzLCAyMiwgMiwgNzQsIDIyNywgNjMsIDIyLCAyLCAyMTcsIDYzLCAyMjcsIDYzLCAKKyAgICAyMiwgMiwgMjUwLCAxMzksIDIyNywgNjMsIDIsIDIwMiwgMjA4LCAyMjcsIDYzLCAyMjUsIDIsIDgxLCAyMjcsIDYzLCAyNTEsIAorICAgIDE3NywgMjI1LCAyLCA4MSwgMjI3LCA2MywgMSwgMjM3LCAxOTUsIDIyNywgNjMsIDEsIDEwOSwgMjEyLCAyMTYsIDIyNywgCisgICAgNjMsIDEsIDEwOSwgMjI0LCAxMzksIDIyNywgNjMsIDIyLCAyLCAxMDksIDE1NiwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDIyNywgNjMsIDE3LCAxOTksIDgxLCAyMjcsIDYzLCAxNywgMTAyLCAyMjcsIDYzLCAxNywgMTA1LCAyMjcsIDYzLCAKKyAgICAxNywgMTQ3LCAyMjcsIDYzLCAxNywgMTQ5LCAyMjcsIDYzLCAxNywgMTY0LCAyMjcsIDYzLCAxNywgMTg3LCAyMjcsIDYzLCAKKyAgICAxNywgMjEwLCAxMzUsIDIyNywgNjMsIDE3LCAxOTIsIDIyNywgNjMsIDE3LCAyMTksIDExMywgMjI3LCA2MywgMiwgMjI3LCAKKyAgICAyMDEsIDIyNywgNjMsIDIsIDIwMywgMjI2LCAxNDIsIDIsIDI0NywgMTQ5LCAxNDIsIDIsIDI1MSwgMzMsIDE0MiwgMiwgCisgICAgMjAyLCAyMDMsIDE0MiwgMSwgNjIsIDE0MiwgMSwgMjUyLCAxMzgsIDE0MiwgMSwgNzAsIDE0MiwgMSwgMjI4LCAxNTEsIAorICAgIDE0MiwgMSwgNjYsIDE0MiwgMSwgMjAzLCAxODIsIDE0MiwgMSwgMTA5LCAxNDYsIDE0MiwgMSwgMTA5LCAxNTYsIDE0MiwgMSwgCisgICAgNzIsIDE0MiwgMSwgMjM4LCAyNTUsIDE0MiwgMSwgMjUxLCAxNzYsIDE0MiwgMSwgNzQsIDE0MiwgMSwgMjE3LCA2MywgMTQyLCAKKyAgICAxLCAyNTAsIDEzOSwgMTQyLCAxLCAxNjEsIDE0MiwgMSwgMjI2LCAyMDcsIDE0MiwgMSwgMjM2LCA4OSwgMTQyLCAxLCAyMzUsIAorICAgIDE5OSwgMTQyLCAxLCAyMTksIDI1MywgMTQyLCAxLCAyNDcsIDE5MCwgMTQyLCAxLCAyNDcsIDM3LCAxNDIsIDEsIDIyNywgCisgICAgMjQ4LCAxNDIsIDEsIDIyNywgMjE1LCAxNDIsIDEsIDIxOCwgNjAsIDE0MiwgMSwgMjA0LCAyNTMsIDE0MiwgMSwgMjA0LCAKKyAgICAyNDEsIDE0MiwgMSwgMjQxLCAyMjAsIDE0MiwgMSwgMjQxLCAyMDQsIDE0MiwgMSwgMjE5LCAyMSwgMTQyLCAxLCAyMDcsIAorICAgIDM2LCAxNDIsIDEsIDIwNiwgMTIyLCAxNDIsIDEsIDI0MiwgNTgsIDE0MiwgMSwgMjQxLCAxMDAsIDE0MiwgMSwgMTg4LCAKKyAgICAxNDIsIDEsIDIxOSwgMywgMTQyLCAxLCAxNzIsIDE0MiwgMSwgMjE1LCAyNDUsIDE0MiwgMSwgMjQ5LCAxMzYsIDE0MiwgMSwgCisgICAgMjQ4LCAyMDAsIDE0MiwgMSwgMTc4LCAxNDIsIDEsIDE4MywgMTQyLCAxLCAyMTMsIDI1MiwgMTQyLCAxLCAyMTIsIDIxNSwgCisgICAgMTQyLCAxLCAxOTQsIDE0MiwgMSwgMjI0LCAxMzgsIDE0MiwgMSwgMjI0LCAxMjksIDE0MiwgMSwgMjAzLCA5MCwgMTQyLCAxLCAKKyAgICAyMTAsIDExNCwgMTQyLCAxLCAyMDgsIDE3OSwgMTQyLCAxLCAyMTIsIDY0LCAxNDIsIDEsIDE0NCwgMTQyLCAxLCAyMDQsIAorICAgIDIyMiwgMTQyLCAyLCAyNTAsIDEyMiwgMTQyLCAyMiwgMiwgMjUyLCAxMzgsIDE0MiwgMjIsIDIsIDcwLCAxNDIsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTQyLCAyMiwgMiwgNjYsIDE0MiwgMjIsIDIsIDIwMywgMTgyLCAxNDIsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTQyLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTQyLCAyMiwgMiwgNzIsIDE0MiwgMjIsIDIsIDIzOCwgMjU1LCAxNDIsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTQyLCAyMiwgMiwgNzQsIDE0MiwgMjIsIDIsIDIxNywgNjMsIDE0MiwgMjIsIDIsIDI1MCwgMTM5LCAKKyAgICAxNDIsIDIsIDIwMiwgMjA4LCAxNDIsIDEsIDczLCAyMTMsIDEyOSwgMTQyLCAyLCAyMTYsIDEyOSwgMTQyLCAxLCAyNDYsIAorICAgIDIyNSwgMjIzLCAyNDMsIDE0MiwgMSwgMjQ2LCAyMjUsIDIwMCwgMTIzLCAxNDIsIDEsIDI0NiwgMjI1LCAyMjQsIDEzMCwgCisgICAgMTQyLCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMTcsIDc0LCAxNDIsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIzNiwgMjM3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIzOCwgMjI0LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwNCwgCisgICAgMTYyLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwNiwgMTU3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIwNCwgMTYxLCAxNDIsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNywgMTA3LCAxNDIsIDEsIDI1MCwgMjM0LCAyMjgsIDE1MSwgMTQyLCAxLCAxMDksIDIxMiwgCisgICAgMjE2LCAxNDIsIDEsIDEwOSwgMjI0LCAxMzksIDE0MiwgMjIsIDIsIDEwOSwgMTU2LCAxNDIsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCAxNDIsIDE3LCAxOTksIDgxLCAxNDIsIDE3LCAxMDIsIDE0MiwgMTcsIDEwNSwgMTQyLCAxNywgMTQ3LCAxNDIsIDE3LCAKKyAgICAxNDksIDE0MiwgMTcsIDE2NCwgMTQyLCAxNywgMTg3LCAxNDIsIDE3LCAyMTAsIDEzNSwgMTQyLCAxNywgMTkyLCAxNDIsIAorICAgIDE3LCAyMTksIDExMywgMTQyLCA0MSwgMjA2LCAxNjYsIDE0MiwgNDEsIDExMiwgMjMzLCA4MiwgMTQyLCA0MSwgMTEyLCAKKyAgICAyMDYsIDUwLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDE0MiwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDE0MiwgCisgICAgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMDksIDk4LCAxNDIsIDIzNiwgMjE5LCAxMTIsIAorICAgIDIzOCwgMjI3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIwOSwgOTcsIDE0MiwgMjQxLCAyMzgsIDgxLCAxNDIsIDEsIDI0NiwgCisgICAgMjI1LCAyMTksIDIyLCAxNDIsIDEsIDI0NiwgMjI1LCAyMjAsIDIxNCwgMTQyLCAxLCAyNDYsIDIyNSwgMjEyLCAyMTYsIAorICAgIDE0MiwgMSwgMjQ2LCAyMjUsIDE1NiwgMTQyLCAxLCAyNDYsIDIyNSwgMjI0LCAxMzksIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNywgCisgICAgMTE4LCAxNDMsIDIsIDI1MSwgMzIsIDE0MywgMiwgMjAyLCAyMDIsIDE0MywgMSwgMjUwLCAxMTAsIDE0MywgMSwgMjUyLCAKKyAgICA5MiwgMTQzLCAxLCAyNTEsIDIwMSwgMTQzLCAxLCAyNTEsIDIxNiwgMTQzLCAxLCAyMjgsIDIsIDE0MywgMSwgMjI4LCAxNTAsIAorICAgIDE0MywgMSwgMjAzLCAxNzMsIDE0MywgMSwgMjAzLCAxNzYsIDE0MywgMSwgMjI4LCAyOCwgMTQzLCAxLCAyMjgsIDI5LCAKKyAgICAxNDMsIDEsIDIyOCwgMTM2LCAxNDMsIDEsIDIyOCwgMTM4LCAxNDMsIDEsIDIzOCwgMjUsIDE0MywgMSwgMjM4LCAyNTAsIAorICAgIDE0MywgMSwgMjUxLCAxNjEsIDE0MywgMSwgMjE2LCAyMjksIDE0MywgMSwgMjE3LCA1NiwgMTQzLCAxLCAyNTAsIDEyNSwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjI3LCAxMywgMTQzLCAxLCAyMjIsIDIwNSwgMjI3LCAxMywgMTQzLCAxLCAyNTEsIDExNSwgCisgICAgMjM2LCAzNSwgMTQzLCAxLCAyMjIsIDIwNSwgMjM2LCAzNSwgMTQzLCAxLCAyMjcsIDYyLCAyMjAsIDE1NCwgMTQzLCAxLCAKKyAgICAyMTIsIDUsIDIzNiwgMzUsIDE0MywgMSwgMjUxLCAxMTUsIDI0NywgMTAyLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDcsIDEwMiwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjI3LCAyMzAsIDE0MywgMSwgMjIyLCAyMDUsIDIyNywgMjMwLCAxNDMsIDEsIDIwNywgMjksIAorICAgIDIyMCwgMTU0LCAxNDMsIDEsIDIwNywgMjksIDIxMiwgNCwgMjIwLCAxNTUsIDE0MywgMSwgMjEyLCA1LCAyMjcsIDIzMCwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjA0LCAyNDksIDE0MywgMSwgMjIyLCAyMDUsIDIwNCwgMjQ5LCAxNDMsIDEsIDI1MSwgMTE1LCAKKyAgICAyNDEsIDIxMSwgMTQzLCAxLCAyMjIsIDIwNSwgMjQxLCAyMTEsIDE0MywgMSwgMjIwLCAyNDIsIDIyMCwgMTA4LCAxNDMsIDEsIAorICAgIDIxMiwgNSwgMjQxLCAyMTEsIDE0MywgMSwgMjUxLCAxMTUsIDIwNiwgMjA5LCAxNDMsIDEsIDIyMiwgMjA1LCAyMDYsIDIwOSwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjQxLCAyMzEsIDE0MywgMSwgMjIyLCAyMDUsIDI0MSwgMjMxLCAxNDMsIDEsIDI0MiwgNiwgCisgICAgMjIwLCAxMDgsIDE0MywgMSwgMjEyLCA1LCAyNDEsIDIzMSwgMTQzLCAxLCAyNTEsIDExNSwgMjE2LCA4MSwgMTQzLCAxLCAKKyAgICAyMjIsIDIwNSwgMjE2LCA4MSwgMTQzLCAxLCAyNTEsIDExNSwgMjQ5LCA0NiwgMTQzLCAxLCAyMjIsIDIwNSwgMjQ5LCA0NiwgCisgICAgMTQzLCAxLCAyMjIsIDExOCwgMTQzLCAxLCAyNTEsIDk1LCAyNDksIDQ2LCAxNDMsIDEsIDIwMCwgNTYsIDE0MywgMSwgMjEzLCAKKyAgICAxOTYsIDE0MywgMSwgMjQyLCA2LCAyMjUsIDQ5LCAxNDMsIDEsIDIwMywgNjEsIDE0MywgMSwgMjA3LCAyOSwgMjExLCAyMzMsIAorICAgIDE0MywgMSwgMjIwLCAyNDIsIDIxMSwgMjMzLCAxNDMsIDEsIDI0MiwgNiwgMjExLCAyMzMsIDE0MywgMSwgMjM0LCAxNDUsIAorICAgIDE0MywgMSwgMjIwLCAyNDIsIDIyNSwgNDksIDE0MywgMSwgMjM3LCAxNDksIDE0MywgMiwgMjUxLCAxNTAsIDE0MywgMjIsIAorICAgIDIsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAyMjYsIDIzMiwgMjUxLCAyMTgsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDI1MSwgCisgICAgMjE4LCAxNDMsIDIyLCAyLCAyMjYsIDIzMiwgMjI4LCAyNSwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjI4LCAyNSwgMTQzLCAKKyAgICAyMiwgMiwgMjI2LCAyMzIsIDIxNiwgMjA5LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMTYsIDIwOSwgMTQzLCAyMiwgMiwgCisgICAgMjM2LCA3OCwgMTQzLCAyMiwgMiwgMjI2LCA3MywgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjI2LCA3MywgMTQzLCAyMiwgMiwgCisgICAgMjI2LCA3NSwgMjQxLCAxNTAsIDE0MywgMjIsIDIsIDIyNiwgNzQsIDIzNCwgMjM0LCAyNTEsIDIxMSwgMTQzLCAyMiwgMiwgCisgICAgMjI2LCA3NCwgMjM0LCAyMzQsIDI0MSwgNDMsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAyMjYsIDc0LCAyMzQsIDIzNCwgMjM2LCAKKyAgICAzNCwgMTQzLCAyMiwgMiwgMjM2LCAzNCwgMTQzLCAyMjQsIDE1MSwgMTcsIDE5OSwgODEsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAxMDIsIDE0MywgMjI0LCAxNTEsIDE3LCAxMDUsIDE0MywgMjI0LCAxNTEsIDE3LCAxNDcsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAxNDksIDE0MywgMjI0LCAxNTEsIDE3LCAxNjQsIDE0MywgMjI0LCAxNTEsIDE3LCAxODcsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAyMTAsIDEzNSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE5MiwgMTQzLCAyMjQsIDE1MSwgMTcsIDIxOSwgMTEzLCAxNDMsIDIyLCAKKyAgICAyLCAyNDEsIDQzLCAyMzYsIDc4LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMzYsIDM0LCAxNDMsIDIxNCwgMjEyLCAyMjYsIDAsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyNiwgODksIDIyNywgODIsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDIwMiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTcxLCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNjYsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE3NSwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIxMywgMjE3LCAyMDYsIAorICAgIDExNywgMTcxLCAyMTksIDE3OSwgMjE5LCAxNjYsIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDcsIDI2LCAyMDYsIDExNywgCisgICAgMTcxLCAyNDYsIDIxMSwgMjQ2LCAyMjEsIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDcsIDI1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMDksIDMwLCAyMDksIDI5LCAyMDYsIDExNywgMTcxLCAyNDYsIDIxMSwgMjQ2LCAyMDcsIDIwNiwgMTE3LCAxNzEsIDE5OSwgCisgICAgMjQ2LCAxOTksIDI1MywgMjA2LCAxMTcsIDE3MSwgMjQwLCAyMTIsIDI0NywgMzQsIDIwNiwgMTE3LCAxNzEsIDIwNSwgMTg2LCAKKyAgICAyMTYsIDkyLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDExMSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjIwLCAKKyAgICAxMzEsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIxNSwgMjA3LCAyMDYsIDExNywgMTcxLCAyMTgsIDI0MiwgMjIwLCAyNCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjQwLCAyMTIsIDI0MSwgMTUxLCAyMDYsIDExNywgMTcxLCAyMDUsIDE4NiwgMjA2LCAyMzcsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMjksIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMTE4LCAyMDYsIAorICAgIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDU3LCAyMDYsIDExNywgMTcxLCAyMTgsIDI0MiwgMjE4LCAxMzMsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDI0OCwgMTI1LCAyNDksIDEwMiwgMjA2LCAxMTcsIDE3MSwgMjE1LCAxMDcsIDIxNSwgMTM1LCAyMDYsIDExNywgCisgICAgMTcxLCAyMTUsIDIxOCwgMjE1LCAyMDksIDIwNiwgMTE3LCAxNzEsIDIzNywgMTQsIDIzNywgMTk1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMTUsIDIxOCwgMjE1LCAyMzgsIDIwNiwgMTE3LCAxNzEsIDIzNywgMTQsIDIzNywgMTY4LCAyMDYsIDExNywgMTcxLCAyMTUsIAorICAgIDIxOCwgMjEyLCAxNywgMjA2LCAxMTcsIDE3MSwgMjIxLCAxMzcsIDE3OCwgMjA2LCAxMTcsIDE3MSwgMTk5LCAyNDYsIDIwMCwgCisgICAgODUsIDIwNiwgMTE3LCAxNzEsIDIxMywgMiwgMjEyLCAxNzQsIDIwNiwgMTE3LCAxNzEsIDIxMiwgMTc1LCAyMDYsIDExNywgCisgICAgMTcxLCAyMjQsIDExMSwgMjI0LCAxNjksIDIwNiwgMTE3LCAxNzEsIDIyNCwgNDIsIDIwNiwgMTE3LCAxNzEsIDIwMSwgMSwgCisgICAgMjAxLCAxMDksIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIxMiwgMzMsIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIxMiwgCisgICAgMTQ1LCAyMDYsIDExNywgMTcxLCAyMDksIDMwLCAyMDgsIDIzLCAyMDYsIDExNywgMTcxLCAyMzMsIDIwOCwgMjM0LCA0OCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjI0LCAxMTEsIDI0NiwgMTkxLCAyMDYsIDExNywgMTcxLCAxNjMsIDI1MSwgNzYsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIzMywgMjA4LCAyMTgsIDIzNywgMjA2LCAxMTcsIDE3MSwgMjE2LCAxODYsIDIwNiwgMTE3LCAxNzEsIDIxMSwgCisgICAgMjU1LCA2MiwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIzNCwgMjAxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUyLCAKKyAgICAxMzgsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDEwMSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDcwLCAyMDYsIAorICAgIDExNywgMTcxLCAyMTEsIDI1NSwgMjI4LCAxNTEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyMDQsIDMxLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgMjA0LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDY2LCAyMDYsIDExNywgMTcxLCAyMTEsIAorICAgIDI1NSwgMjAzLCAxODIsIDIwNiwgMTE3LCAxNzEsIDIxNSwgMjIwLCAyMDYsIDExNywgMjQyLCAxOTUsIDE2LCAyNDksIDEwMywgCisgICAgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDcyLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAyMjEsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCA3NCwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMTc3LCAyMjIsIDE5MywgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDI1MSwgMTc3LCAyMjIsIDE5NCwgMjA2LCAxMTcsIDE3MSwgMjI1LCA5NSwgMjA2LCAxMTcsIDE3MSwgCisgICAgMjIyLCAxOTAsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTkxLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjM4LCAyMTYsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMDYsIDYxLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjA1LCAxMDEsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyMiwgMTk5LCAyNDcsIDEzLCAyMDYsIDExNywgMTcxLCAyMDYsIDEwOSwgMjA2LCAxMTcsIDE3MSwgMjE5LCAKKyAgICAxMjIsIDIwNiwgMTE3LCAxNzEsIDIwMCwgNzksIDIwNiwgMTE3LCAxNzEsIDIzNywgNCwgMjA2LCAxMTcsIDE3LCAxOTksIAorICAgIDgxLCAyMDYsIDExNywgMTcsIDEwMiwgMjA2LCAxMTcsIDE3LCAxMDUsIDIwNiwgMTE3LCAxNywgMTQ3LCAyMDYsIDExNywgCisgICAgMTcsIDE0OSwgMjA2LCAxMTcsIDE3LCAxNjQsIDIwNiwgMTE3LCAxNywgMTg3LCAyMDYsIDExNywgMTcsIDIxMCwgMTM1LCAKKyAgICAyMDYsIDExNywgMTcsIDE5MiwgMjA2LCAxMTcsIDE3LCAyMTksIDExMywgMjA2LCAxMTcsIDE3MSwgMjUxLCA3MiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzYsIDIyNSwgNzUsIDEsIDIyNiwgODgsIDIyNSwgNzUsIDEsIDIyNiwgMTc5LCAyMDcsIDIyNSwgCisgICAgMjI1LCA3NSwgMSwgMjI2LCAxNzksIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTksIDE3OCwgMjI1LCA3NSwgMSwgMjQ2LCAKKyAgICA5MSwgMjI1LCA3NSwgMSwgMjA5LCAzMCwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOCwgMjYsIDIyNSwgNzUsIDEsIDI0MCwgCisgICAgMjExLCAyMjUsIDc1LCAxLCAxMzgsIDIyNSwgNzUsIDEsIDIwNiwgNjIsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAyMDYsIDYyLCAKKyAgICAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE4LCAyNDEsIDIyNSwgNzUsIDEsIDI0OCwgMTI0LCAyMjUsIDc1LCAxLCAyMTUsIAorICAgIDEwNiwgMjI1LCA3NSwgMSwgMjE1LCAyMTgsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMDYsIDI0NiwgMjI1LCAKKyAgICA3NSwgMSwgMjE1LCAyMTgsIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgCisgICAgMjIxLCAxMzYsIDIyNSwgNzUsIDEsIDE5OSwgMjQ1LCAyMjUsIDc1LCAxLCAyMjQsIDExMSwgMjI0LCAxNjksIDIyNSwgNzUsIAorICAgIDEsIDIyNCwgMTExLCAyMjQsIDcyLCAyMjUsIDc1LCAxLCAyMDEsIDAsIDIyNSwgNzUsIDEsIDIwOSwgMzAsIDIwNywgMjI1LCAKKyAgICAyMjUsIDc1LCAxLCAyMzMsIDIwOCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDc0LCAyMjUsIDc1LCAxLCAyMzMsIDIwOCwgCisgICAgMjA2LCAyNDYsIDIyNSwgNzUsIDIzOCwgMTk1LCAyMjUsIDc1LCAyMiwgMiwgNjIsIDIyNSwgNzUsIDIyLCAyLCAyMjIsIAorICAgIDE5OSwgMjI3LCA2OCwgMjI1LCA3NSwgMjIsIDIsIDI1MiwgMTM4LCAyMjUsIDc1LCAyMiwgMiwgMjUxLCAxMDEsIDIyNSwgCisgICAgNzUsIDIyLCAyLCA3MCwgMjI1LCA3NSwgMjIsIDIsIDIyOCwgMTUxLCAyMjUsIDc1LCAyMiwgMiwgMjAwLCAxMjMsIDIyNSwgCisgICAgNzUsIDIyLCAyLCAxOTksIDE2NywgMjI1LCA3NSwgMjIsIDIsIDY2LCAyMjUsIDc1LCAyMiwgMiwgMjAzLCAxODIsIDIyNSwgCisgICAgNzUsIDIyLCAyLCAyMjIsIDE5OSwgMjI2LCA3MSwgMjI1LCA3NSwgMjEwLCAxNjIsIDIsIDIyNCwgMTEwLCAyMjUsIDc1LCAKKyAgICAyMTAsIDE2MiwgMiwgMjE4LCAyNiwgMjI1LCA3NSwgMjIsIDIsIDcyLCAyMjUsIDc1LCAyMiwgMiwgMjM4LCAyMzQsIDIyNSwgCisgICAgNzUsIDIyLCAyLCA3NCwgMjI1LCA3NSwgMjIsIDIsIDI1MCwgMTEyLCAyMjUsIDc1LCAyMiwgMiwgMjUxLCAxNzYsIDIyNSwgCisgICAgNzUsIDIyNiwgODksIDE5NCwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgMjM4LCAyMTYsIDIyNSwgNzUsIDE1MCwgMjIyLCAKKyAgICAxOTksIDIwNiwgNjEsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIDIwNiwgMTUsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIAorICAgIDI0NywgMTEwLCAyMjUsIDc1LCAyNDcsIDE1NSwgODEsIDIyNSwgNzUsIDIxOSwgMTMxLCAyMjUsIDc1LCAxNywgMTk5LCA4MSwgCisgICAgMjI1LCA3NSwgMTcsIDEwMiwgMjI1LCA3NSwgMTcsIDEwNSwgMjI1LCA3NSwgMTcsIDE0NywgMjI1LCA3NSwgMTcsIDE0OSwgCisgICAgMjI1LCA3NSwgMTcsIDE2NCwgMjI1LCA3NSwgMTcsIDE4NywgMjI1LCA3NSwgMTcsIDIxMCwgMTM1LCAyMjUsIDc1LCAxNywgCisgICAgMTkyLCAyMjUsIDc1LCAxNywgMjE5LCAxMTMsIDIyNSwgNzUsIDIzMywgMjA4LCAyMTgsIDI0MSwgMjI1LCA3NSwgMjMzLCAKKyAgICAyMDgsIDIyMSwgMTM2LCAyMjUsIDc1LCAxLCAyMjYsIDE4MCwgMjM1LCAxMTYsIDIyNSwgNzUsIDEsIDIyNiwgMTgwLCAyMTgsIAorICAgIDI2LCA3OSwgNSwgMjE3LCA4NiwgNzksIDEzNCwgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjA1LCAzOCwgNjIsIDc5LCAKKyAgICAxMzQsIDIzNSwgNTIsIDIwMCwgMSwgMjIxLCAyMjksIDI1NSwgMTM1LCAyMTMsIDYsIDI0OSwgMTAsIDE3OCwgNzksIDEzNCwgCisgICAgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjU1LCAxMzUsIDIzNSwgNTIsIDIwNSwgMTgsIDE3OCwgNzksIDEzNCwgODIsIAorICAgIDIwMCwgMSwgMjIxLCAyMjksIDIyMiwgNzgsIDE3OCwgNzksIDEzNCwgMjQ2LCAxMDYsIDIwMCwgMSwgMjIxLCAyMjksIDIxMCwgCisgICAgMTIxLCAxNzgsIDc5LCAxMzQsIDI0NywgMTMwLCAyMDAsIDEsIDIyMSwgMjI5LCAyMTUsIDIwOCwgMjEwLCAxMDcsIDE3OCwgCisgICAgNzksIDEzNCwgMjAwLCAxLCAyMjEsIDIyOSwgMjA1LCAxOCwgMjEwLCAxMDcsIDE3OCwgNzksIDEzNCwgMjExLCAyMzEsIAorICAgIDIxMCwgMTA2LCA3OSwgMTM0LCAyNDgsIDM5LCAyMDAsIDEsIDIyMSwgMjI4LCA3OSwgMTM0LCAyNDgsIDE0NiwgMjEwLCA0LCAKKyAgICAyMDAsIDEsIDIyMSwgMjI4LCA3OSwgMTM0LCAyMjgsIDU0LCAyMDUsIDE3LCA3OSwgMTM0LCAyNDEsIDE0MywgMjA1LCAxOCwgCisgICAgMjQ4LCAzOCwgNzksIDEzNCwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxOCwgMzEsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMDUsIDE4LCAKKyAgICAyMTAsIDEwNiwgNzksIDEzNCwgMjE4LCAzMSwgMjA1LCAxOCwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxMywgMjksIDI0NiwgCisgICAgMjUwLCAyMDgsIDE5NiwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxMywgOTcsIDIzNSwgODUsIDIxMCwgMTA2LCA3OSwgMTM0LCAKKyAgICAyNDcsIDEzMCwgMjU1LCAxMzksIDIxMiwgMTc5LCAyMjIsIDc3LCAxNjgsIDI0NywgMTU4LCA3OSwgMTM0LCAyMzUsIDUyLCAKKyAgICAyMDUsIDE3LCA3OSwgMjI0LCA5NiwgMiwgMjQ3LCAzNSwgMjEyLCAxNzgsIDc5LCAyMjQsIDk2LCAyLCAyMjQsIDIyMSwgCisgICAgMjEyLCAxNzgsIDc5LCAyNTAsIDE2MSwgMiwgMjEwLCAxMTcsIDIzNiwgMTgsIDI1NSwgMTQwLCAyMTIsIDE3OCwgNzksIAorICAgIDI1MCwgMTYxLCAyLCAyNTUsIDEzNywgMTcyLCA3OSwgMjUwLCAxNjEsIDIsIDIxMSwgMjAzLCAyMDUsIDEyLCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzYsIDE3LCA3OSwgMiwgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzUsIDExOCwgNzksIDIsIAorICAgIDIxMywgMTkyLCAyNDAsIDIyNSwgMjM1LCA1MywgNzksIDIsIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM2LCAxNywgNzksIDIsIAorICAgIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM1LCAxMTgsIDc5LCAyLCAyMTMsIDE5MiwgMjQwLCAyMjUsIDIxMywgMTkyLCAyMjAsIAorICAgIDE0OSwgNzksIDE3LCAxOTksIDgxLCA3OSwgMTcsIDEwMiwgNzksIDE3LCAxMDUsIDc5LCAxNywgMTQ3LCA3OSwgMTcsIDE0OSwgCisgICAgNzksIDE3LCAxNjQsIDc5LCAxNywgMTg3LCA3OSwgMTcsIDIxMCwgMTM1LCA3OSwgMTcsIDE5MiwgNzksIDE3LCAyMTksIAorICAgIDExMywgNzksIDE3LCAxNjcsIDEwMiwgNzksIDE3LCAxNjcsIDEwNSwgNzksIDE3LCAxNjcsIDE0NywgNzksIDE3LCAxNjcsIAorICAgIDE0OSwgNzksIDE3LCAxNjcsIDE2NCwgNzksIDE3LCAxNjcsIDE4NywgNzksIDE3LCAxNjcsIDIxMCwgMTM1LCA3OSwgMTcsIAorICAgIDE2NywgMTkyLCA3OSwgMTcsIDE2NywgMjE5LCAxMTMsIDc5LCAxNywgMTY3LCAxOTksIDgxLCA3OSwgMTM0LCAyNDgsIDQxLCAKKyAgICAyMTIsIDE3OCwgNzksIDEzNCwgMjE5LCAyNDQsIDI0NywgMjI1LCAyMTgsIDQyLCAxOTksIDE2LCA3OSwgMTM0LCAyNDcsIAorICAgIDEzMCwgMjU1LCAxMzksIDIxMiwgMTc5LCAyNDcsIDIyNiwgMjIxLCAxODIsIDI0NywgMTU4LCA3OSwgMTM0LCAyMTksIDI0NCwgCisgICAgMjQ3LCAyMjUsIDIxMCwgMTE4LCAyMTIsIDE3OCwgNzksIDEzNCwgMjQ3LCA5LCAyMjEsIDIyOCwgNzksIDEzNCwgMjA1LCAKKyAgICAzMywgMjU1LCAxMzYsIDc5LCAxMzQsIDIzNSwgMzUsIDIxMiwgMTc5LCAyMzQsIDI1MCwgNzksIDEzNCwgMjM1LCAzNSwgCisgICAgMjEyLCAxNzksIDIzNSwgMCwgNzksIDEzNCwgMjUxLCA3NywgMjI2LCAxOTcsIDIzNCwgMjUwLCA3OSwgMTM0LCAyNTEsIDc3LCAKKyAgICAyMjYsIDE5NywgMjM1LCAwLCA3OSwgMiwgMjAwLCA3MSwgMjA1LCAxNiwgNzksIDIsIDIyMiwgMTU5LCAyMDUsIDE2LCA3OSwgCisgICAgMSwgMTYxLCA3OSwgMSwgMjI2LCAyMDcsIDc5LCAxLCAyMzYsIDg5LCA3OSwgMSwgMjM1LCAxOTksIDc5LCAxLCAyMTksIAorICAgIDI1MywgNzksIDEsIDI0NywgMTkwLCA3OSwgMSwgMjQ3LCAzNywgNzksIDEsIDIyNywgMjQ4LCA3OSwgMSwgMjE4LCA2MCwgCisgICAgNzksIDEsIDIwNCwgMjUzLCA3OSwgMSwgMjA0LCAyNDEsIDc5LCAxLCAyNDEsIDIyMCwgNzksIDEsIDI0MSwgMjA0LCA3OSwgCisgICAgMSwgMjE5LCAyMSwgNzksIDEsIDIwNywgMzYsIDc5LCAxLCAyMDYsIDEyMiwgNzksIDEsIDI0MiwgNTgsIDc5LCAxLCAyNDEsIAorICAgIDEwMCwgNzksIDEsIDE4OCwgNzksIDEsIDE3MiwgNzksIDEsIDIxNSwgMjQ1LCA3OSwgMSwgMjQ5LCAxMzYsIDc5LCAxLCAKKyAgICAyNDgsIDIwMCwgNzksIDEsIDE3OCwgNzksIDEsIDIwNSwgMzIsIDc5LCAxLCAyMDUsIDIyLCA3OSwgMSwgMjM5LCA5MywgNzksIAorICAgIDEsIDIzOSwgODcsIDc5LCAxLCAyMDEsIDExNCwgNzksIDEsIDE5OSwgNzcsIDc5LCAxLCAxOTksIDExNCwgNzksIDEsIDI1NSwgCisgICAgMTQyLCA3OSwgMSwgMTgzLCA3OSwgMSwgMjEzLCAyNTIsIDc5LCAxLCAxOTQsIDc5LCAxLCAyMTAsIDExNCwgNzksIDEsIAorICAgIDIwOCwgMTc5LCA3OSwgMSwgMjEyLCA2NCwgNzksIDEsIDE0NCwgNzksIDEsIDYyLCA3OSwgMSwgMjI2LCAyOSwgNzksIDEsIAorICAgIDIzNywgNTcsIDIxMywgMjUyLCA3OSwgMSwgMjI2LCAxMDksIDc5LCAxLCAyMTIsIDIxNSwgNzksIDIyLCAyLCAyNTIsIDEzOCwgCisgICAgNzksIDIyLCAyLCA3MCwgNzksIDIyLCAyLCAyMjgsIDE1MSwgNzksIDIyLCAyLCA2NiwgNzksIDIyLCAyLCAyMDMsIDE4MiwgCisgICAgNzksIDIyLCAyLCAxMDksIDE0NiwgNzksIDIyLCAyLCAxMDksIDIxMiwgMjE2LCA3OSwgMjIsIDIsIDEwOSwgMTU2LCA3OSwgCisgICAgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDc5LCAyMiwgMiwgNzIsIDc5LCAyMiwgMiwgMjM4LCAyNTUsIDc5LCAyMiwgMiwgNzQsIAorICAgIDc5LCAyMiwgMiwgMjE3LCA2MywgNzksIDIsIDIxMywgMTIsIDIwOCwgMjUsIDIxOSwgMjU0LCAyMTMsIDEsIDc5LCAyLCAKKyAgICAyMTMsIDYsIDI0OSwgOSwgNzksIDIyLCAyLCAyMTMsIDEwNSwgNzAsIDc5LCAyMiwgMiwgMjEzLCAxMDUsIDIyOCwgMTUxLCAKKyAgICA3OSwgMiwgMjE4LCA0MiwgMTk5LCAxNywgMjIwLCAxNTgsIDI0MiwgNTgsIDc5LCAyLCAyMDksIDQ0LCAyMjUsIDQyLCA3OSwgCisgICAgMTM0LCAyMzQsIDIxNSwgNzksIDEzNCwgMjE2LCAxNzMsIDc5LCAyLCAyMjUsIDQ1LCAyMTIsIDE3OCwgNzksIDIsIDIwMCwgCisgICAgNzYsIDIxMiwgMTc4LCA3OSwgMiwgMjI1LCA0NiwgMjA1LCAzMywgMjQ3LCAxNTgsIDc5LCAyLCAyMjIsIDgwLCAyNDcsIAorICAgIDE1OCwgNzksIDIsIDIzNSwgNTYsIDI0NywgMTU5LCAyMTMsIDk1LCA3OSwgMiwgMjM1LCA1NiwgMjIyLCA3MCwgMjEzLCA5NSwgCisgICAgNzksIDIsIDIyOCwgNTAsIDIyMiwgODAsIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjI1LCA0NiwgMjA1LCAzMywgMjQ3LCAKKyAgICAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjIsIDgwLCAyNDcsIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyOCwgNTAsIDIyMiwgODAsIAorICAgIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMSwgMTYxLCA3OSwgMjA4LCAxMiwgMSwgMjI2LCAyMDcsIDc5LCAyMDgsIDEyLCAxLCAKKyAgICAyMzYsIDg5LCA3OSwgMjA4LCAxMiwgMSwgMjM1LCAxOTksIDc5LCAyMDgsIDEyLCAxLCAyMTksIDI1MywgNzksIDIwOCwgMTIsIAorICAgIDEsIDI0NywgMTkwLCA3OSwgMjA4LCAxMiwgMSwgMjQ3LCAzNywgNzksIDIwOCwgMTIsIDEsIDIyNywgMjQ4LCA3OSwgMjA4LCAKKyAgICAxMiwgMSwgMjE4LCA2MCwgNzksIDIwOCwgMTIsIDEsIDIwNCwgMjUzLCA3OSwgMjA4LCAxMiwgMSwgMjA0LCAyNDEsIDc5LCAKKyAgICAyMDgsIDEyLCAxLCAyNDEsIDIyMCwgNzksIDIwOCwgMTIsIDEsIDI0MSwgMjA0LCA3OSwgMjA4LCAxMiwgMSwgMjE5LCAyMSwgCisgICAgNzksIDIwOCwgMTIsIDEsIDIwNywgMzYsIDc5LCAyMDgsIDEyLCAxLCAyMDYsIDEyMiwgNzksIDIwOCwgMTIsIDEsIDI0MiwgCisgICAgNTgsIDc5LCAyMDgsIDEyLCAxLCAyNDEsIDEwMCwgNzksIDIwOCwgMTIsIDEsIDE4OCwgNzksIDIwOCwgMTIsIDEsIDE3MiwgCisgICAgNzksIDIwOCwgMTIsIDEsIDIxNSwgMjQ1LCA3OSwgMjA4LCAxMiwgMSwgMjQ5LCAxMzYsIDc5LCAyMDgsIDEyLCAxLCAyNDgsIAorICAgIDIwMCwgNzksIDIwOCwgMTIsIDEsIDE3OCwgNzksIDIwOCwgMTIsIDEsIDIwNSwgMzIsIDc5LCAyMDgsIDEyLCAxLCAyMDUsIAorICAgIDIyLCA3OSwgMjA4LCAxMiwgMSwgMjM5LCA5MywgNzksIDIwOCwgMTIsIDEsIDIzOSwgODcsIDc5LCAyMDgsIDEyLCAxLCAKKyAgICAyMDEsIDExNCwgNzksIDIwOCwgMTIsIDEsIDE5OSwgNzcsIDc5LCAyMDgsIDEyLCAxLCAxOTksIDExNCwgNzksIDIwOCwgMTIsIAorICAgIDEsIDI1NSwgMTQyLCA3OSwgMjA4LCAxMiwgMSwgMTgzLCA3OSwgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAxOTQsIDc5LCAyMDgsIDEyLCAxLCAyMTAsIDExNCwgNzksIDIwOCwgMTIsIDEsIDIwOCwgMTc5LCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjEyLCA2NCwgNzksIDIwOCwgMTIsIDEsIDE0NCwgNzksIDIwOCwgMTIsIDEsIDYyLCA3OSwgMjA4LCAxMiwgMSwgMjI2LCAKKyAgICAyOSwgNzksIDIwOCwgMTIsIDEsIDIzNywgNTcsIDIwMSwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMjM3LCA1NywgMTgzLCA3OSwgCisgICAgMjA4LCAxMiwgMSwgMjM3LCA1NywgMjEzLCAyNTIsIDc5LCAyMjYsIDE2LCAyMTIsIDE3NiwgMjI2LCAyMDcsIDc5LCAyMjYsIAorICAgIDE2LCAyMTIsIDE3NiwgMjI2LCAyMDgsIDI0NywgMjI2LCAyMjEsIDE4MiwgMjQ3LCAxNTgsIDc5LCAyNDcsIDE0NSwgMiwgCisgICAgODAsIDI0OSwgMSwgNzksIDI0NywgMTQ1LCAyLCAxNjIsIDI0OSwgMSwgNzksIDI0NywgMTQ1LCAyLCAyNDcsIDE0NywgMjA2LCAKKyAgICAxOTksIDc5LCAyNDcsIDE0NSwgMiwgMjExLCAyMzAsIDI1NSwgMTQxLCA3OSwgMTYsIDIzOSwgMTUyLCAyNDgsIDM2LCA3OSwgCisgICAgMTYsIDIxMywgMTkxLCAyMTMsIDEzLCA3OSwgMTYsIDIxNiwgMTk3LCAyMzYsIDE2LCA3OSwgMTYsIDIxMywgMTkxLCAyMTMsIAorICAgIDE0LCAyMTMsIDk3LCAyMzUsIDg0LCA3OSwgMTYsIDIxNSwgMjA4LCAxNzIsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzYsIAorICAgIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIDIxOCwgMzEsIDI1NSwgMTM4LCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAKKyAgICAyMzUsIDU0LCAyNTUsIDEzOCwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgMjQ3LCAyMjYsIDI1NSwgMTM4LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMTMsIDE5MiwgMjQwLCAyMjQsIDc5LCAyLCAyMTMsIDE5MiwgMjIwLCAxNTAsIDIzNSwgCisgICAgNTMsIDc5LCAxMzQsIDI0OCwgNDAsIDIxMCwgNCwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCA3OSwgMTM0LCAyMjEsIAorICAgIDEzOCwgMjAwLCAxLCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDc5LCAxMzQsIDIxOCwgMzEsIDIwNSwgMTcsIDc5LCAKKyAgICAxMzQsIDgyLCAyNDgsIDYzLCAyMTMsIDMsIDIwMCwgMSwgMjIxLCAyMjksIDIyMiwgNzgsIDE3OCwgNzksIDEzNCwgMjQ2LCAKKyAgICAxMDYsIDI0OCwgNjMsIDIxMywgMywgMjAwLCAxLCAyMjEsIDIyOSwgMjEwLCAxMjEsIDE3OCwgMjEzLCA0NSwgMjA3LCAxODgsIAorICAgIDU0LCAyMjUsIDI3LCAyMDcsIDE4OCwgNTQsIDIxMywgNDUsIDIwNywgMTg4LCAyLCAzLCAyNDAsIDE4MCwgMjI1LCAyNywgCisgICAgMjA3LCAxODgsIDIsIDMsIDI0MCwgMTgwLCA3OSwgMTM0LCAyMjUsIDM3LCAyMjIsIDgxLCAyMTIsIDE3OCwgNzksIDEzNCwgCisgICAgMjA1LCAxMjUsIDIyMiwgODEsIDIxMiwgMTc4LCA3MSwgMSwgMTYxLCA3MSwgMSwgMjI2LCAyMDcsIDcxLCAxLCAyMzYsIDg5LCAKKyAgICA3MSwgMSwgMjM1LCAxOTksIDcxLCAxLCAyMTksIDI1MywgNzEsIDEsIDI0NywgMTkwLCA3MSwgMSwgMjQ3LCAzNywgNzEsIDEsIAorICAgIDIyNywgMjQ4LCA3MSwgMSwgMjI3LCAyMTUsIDcxLCAxLCAyMTgsIDYwLCA3MSwgMSwgMjE4LCAyNDMsIDcxLCAxLCAyMDQsIAorICAgIDI1MywgNzEsIDEsIDIwNCwgMjQxLCA3MSwgMSwgMjQxLCAyMjAsIDcxLCAxLCAyNDEsIDIwNCwgNzEsIDEsIDIxOSwgMjEsIAorICAgIDcxLCAxLCAyMDcsIDM2LCA3MSwgMSwgMjA2LCAxMjIsIDcxLCAxLCAyNDIsIDU4LCA3MSwgMSwgMjQxLCAxMDAsIDcxLCAxLCAKKyAgICAxODgsIDcxLCAxLCAxNzIsIDcxLCAxLCAyMTUsIDI0NSwgNzEsIDEsIDI0OSwgMTM2LCA3MSwgMSwgMjQ4LCAyMDAsIDcxLCAKKyAgICAxLCAxNzgsIDcxLCAxLCAxODMsIDcxLCAxLCAyMTMsIDI1MiwgNzEsIDEsIDE5NCwgNzEsIDEsIDIwMSwgMTE0LCA3MSwgMSwgCisgICAgMjEyLCA2NCwgNzEsIDEsIDE0NCwgNzEsIDEsIDIyNCwgMTM4LCA3MSwgMSwgNjIsIDcxLCAxLCAyMTAsIDkwLCA2MiwgNzEsIAorICAgIDEsIDcwLCA3MSwgMSwgMjI4LCAxNTEsIDcxLCAxLCA2NiwgNzEsIDEsIDIwMywgMTgyLCA3MSwgMSwgNzIsIDcxLCAxLCAKKyAgICAyMjEsIDEwNywgNzIsIDcxLCAxLCA3NCwgNzEsIDEsIDI1MCwgMTM5LCA3MSwgMjIsIDIsIDIwNiwgMjQ4LCAyNTIsIDEzOCwgCisgICAgNzEsIDIyLCAyLCAyNTIsIDEzOCwgNzEsIDIyLCAyLCA3MCwgNzEsIDIyLCAyLCAyMjgsIDE1MSwgNzEsIDIyLCAyLCA2NiwgCisgICAgNzEsIDIyLCAyLCAyMDMsIDE4MiwgNzEsIDIyLCAyLCA3MiwgNzEsIDIyLCAyLCAyNTEsIDE3NiwgNzEsIDIyLCAyLCAyMjEsIAorICAgIDEwNywgMjI4LCAxNTEsIDcxLCAyMiwgMiwgMjIxLCAxMDcsIDc0LCA3MSwgMjIsIDIsIDE5NywgNTYsIDcxLCAyLCAyNTEsIAorICAgIDMzLCA3MSwgMiwgNzMsIDU3LCA3MSwgMiwgMjAyLCAyMDMsIDcxLCAyLCAyMDIsIDIwOCwgNzEsIDIsIDI1MCwgMTg1LCA3MSwgCisgICAgMTExLCAyLCAxNzksIDE4MywgNzEsIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgNzEsIDExMSwgMiwgMTc5LCAyMDEsIDExNCwgCisgICAgNzEsIDExMSwgMiwgMTc5LCAxNDQsIDcxLCAxLCAyMzUsIDY5LCAyMTIsIDY0LCA3MSwgMTcsIDE5OSwgODEsIDcxLCAxNywgCisgICAgMTAyLCA3MSwgMTcsIDEwNSwgNzEsIDE3LCAxNDcsIDcxLCAxNywgMTQ5LCA3MSwgMTcsIDE2NCwgNzEsIDE3LCAxODcsIDcxLCAKKyAgICAxNywgMjEwLCAxMzUsIDcxLCAxNywgMTkyLCA3MSwgMTcsIDIxOSwgMTEzLCA3MSwgMiwgMjI0LCAxNDgsIDIxMSwgMTkyLCAKKyAgICA3MSwgMiwgMjExLCAxOTIsIDcxLCAxNiwgMjI0LCAxMDUsIDcxLCAxNiwgMjQ2LCA2NCwgNzEsIDE2LCAyNTEsIDE5NywgNzEsIAorICAgIDE2LCAyMzUsIDI1NCwgNzEsIDEsIDIxMCwgMTE0LCA3MSwgMSwgMjA4LCAxNzksIDcxLCAxLCAxMDksIDE0NiwgNzEsIDEsIAorICAgIDEwOSwgMjEyLCAyMTYsIDcxLCAxLCAxMDksIDE1NiwgNzEsIDEsIDEwOSwgMjI0LCAxMzksIDcxLCAyMiwgMiwgMTA5LCAKKyAgICAxNDYsIDcxLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgNzEsIDIyLCAyLCAxMDksIDE1NiwgNzEsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCA3MSwgMSwgMjIxLCAxMDcsIDIxOSwgMjUzLCA3MSwgMSwgMjIxLCAxMDcsIDIyNywgMjE1LCA3MSwgMSwgMjIxLCAKKyAgICAxMDcsIDI0OSwgNDQsIDcxLCAxLCAyMjEsIDEwNywgMjQ5LCAzOSwgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTg4LCAKKyAgICA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxNzgsIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE5NCwgNzEsIDEsIAorICAgIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMTAsIDExNCwgNzEsIDIyLCAyLCAyMTAsIDEyMCwgMjI3LCA0NCwgMjM4LCA2OSwgNzEsIAorICAgIDE1MCwgMTM0LCAyMTAsIDEyMCwgMjI3LCA0NCwgMjM0LCAxNTMsIDcxLCAxNTAsIDEzNCwgMjEwLCAxMjAsIDIyNywgNDQsIAorICAgIDIyNywgOSwgMjE1LCAyMTcsIDcxLCAxLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA2LCAxMjIsIDcxLCAxLCAKKyAgICAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjE0LCAxODUsIDcxLCAyMiwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgCisgICAgNDQsIDIzOCwgNjksIDcxLCAyMiwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNCwgMzEsIDcxLCAyLCAyMDEsIAorICAgIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzMsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAKKyAgICAxNzIsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzEsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIAorICAgIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzAsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNjksIDcxLCAKKyAgICAxLCAyMzksIDEyLCAyMTQsIDE3OSwgMjI3LCA0NCwgMjE5LCAyMSwgNzEsIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIAorICAgIDQ0LCAxOTksIDE3NCwgNzEsIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMzUsIDE2NCwgNzEsIDIyLCAyLCAKKyAgICAyMzYsIDExLCAyMjcsIDQ0LCA3MCwgNzEsIDIyLCAyLCAyMjcsIDE0LCAyMTcsIDEyMSwgNzEsIDIyLCAyLCAyMjcsIDE0LCAKKyAgICA2NiwgNzEsIDIyLCAyLCAyMjcsIDE0LCAyMzgsIDI1NSwgNzEsIDEsIDIxMCwgOTAsIDE2MSwgNzEsIDEsIDIxMCwgOTAsIAorICAgIDIyNiwgMjA3LCA3MSwgMSwgMjEwLCA5MCwgMjM2LCA4OSwgNzEsIDEsIDIxMCwgOTAsIDI0NywgMTkwLCA3MSwgMSwgMjEwLCAKKyAgICA5MCwgMTk5LCAxMTQsIDcxLCAxLCAyMTAsIDkwLCAyMTgsIDYwLCA3MSwgMSwgMjEwLCA5MCwgMjQyLCA1OCwgNzEsIDEsIAorICAgIDIxMCwgOTAsIDE4OCwgNzEsIDEsIDIxMCwgOTAsIDIxNSwgMjQ1LCA3MSwgMSwgMjEwLCA5MCwgMjM3LCAxOTUsIDcxLCAxLCAKKyAgICAyMTAsIDkwLCAyNDksIDEzNiwgNzEsIDEsIDIxMCwgOTAsIDIwNiwgMTIyLCA3MSwgMSwgMjEwLCA5MCwgMTQ0LCA3MSwgCisgICAgMTExLCAyLCAyMTAsIDkwLCAxNzksIDIwMSwgMTE0LCA3MSwgMjIsIDIsIDIxMCwgOTAsIDI1MiwgMTM4LCA3MSwgMjIsIDIsIAorICAgIDIxMCwgOTAsIDcyLCA3MSwgMjIsIDIsIDIxMCwgOTAsIDE5NywgNTYsIDcxLCAyMiwgMiwgMjEwLCA5MCwgNDcsIDIwMCwgCisgICAgMTIzLCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNzIsIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE3MSwgNzEsIDIsIDIxMCwgOTAsIAorICAgIDIwNSwgMTY5LCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNjgsIDcxLCAyLCAyMTAsIDkwLCAyNDMsIDYsIDIwNSwgMTcyLCA3MSwgCisgICAgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMDUsIDE3MSwgNzEsIDIsIDIxMCwgOTAsIDI0MywgNiwgMjM4LCAxODIsIDIwNSwgMTc0LCAKKyAgICA3MSwgMSwgMjEyLCAxNjAsIDIxNiwgMTgxLCAyMzcsIDE5NSwgNzEsIDIsIDIxMiwgMTYwLCAyMTYsIDE4MSwgMjA1LCAxNjksIAorICAgIDcxLCAyMTAsIDkwLCAxNywgMTk5LCA4MSwgNzEsIDIxMCwgOTAsIDE3LCAxMDIsIDcxLCAyMTAsIDkwLCAxNywgMTA1LCA3MSwgCisgICAgMjEwLCA5MCwgMTcsIDE0NywgNzEsIDIxMCwgOTAsIDE3LCAxNDksIDcxLCAyMTAsIDkwLCAxNywgMTY0LCA3MSwgMjEwLCAKKyAgICA5MCwgMTcsIDE4NywgNzEsIDIxMCwgOTAsIDE3LCAyMTAsIDEzNSwgNzEsIDIxMCwgOTAsIDE3LCAxOTIsIDcxLCAyMTAsIAorICAgIDkwLCAxNywgMjE5LCAxMTMsIDcxLCAyLCAyMjYsIDIwMCwgMjA1LCAxNzMsIDcxLCAyLCAyMjYsIDIwMCwgMjA1LCAxNzEsIAorICAgIDcxLCAyMiwgMiwgMjUxLCAxNjMsIDYyLCA3MSwgMjIsIDIsIDI1MSwgMTYzLCAyNTEsIDE3NiwgNzEsIDE2LCAyMTAsIDkwLCAKKyAgICAxMDIsIDcxLCAxNiwgMjEwLCA5MCwgMjM4LCA0MiwgMTE4LCA2LCAxLCAyNTEsIDg1LCAxMTgsIDYsIDEsIDI0OSwgODgsIAorICAgIDExOCwgNiwgMSwgMjM2LCA1OSwgMTE4LCA2LCAxLCAyNDAsIDE5MCwgMTE4LCA2LCAxLCAyMzgsIDE3OSwgMTE4LCA2LCAxLCAKKyAgICAyMDIsIDIxNywgMTE4LCA2LCAxLCAxOTksIDg0LCAxMTgsIDYsIDEsIDIwNiwgMjQ0LCAxMTgsIDYsIDEsIDIyOCwgMTE3LCAKKyAgICAxMTgsIDYsIDEsIDIyNywgNjgsIDExOCwgNiwgMSwgMjI1LCA2NSwgMTE4LCA2LCAxLCAyMjIsIDE4MCwgMTE4LCA2LCAxLCAKKyAgICAyMjAsIDEyNSwgMTE4LCA2LCAxLCAyMTcsIDc4LCAxMTgsIDYsIDEsIDIxNiwgMTMwLCAxMTgsIDYsIDEsIDE5OSwgNzMsIAorICAgIDExOCwgNiwgMSwgMjEzLCAyMzQsIDExOCwgNiwgMSwgMjEyLCAxMywgMTE4LCA2LCAxLCAyMDYsIDIzMiwgMTE4LCA2LCAxLCAKKyAgICAyMDQsIDUsIDExOCwgNiwgMSwgMjE1LCAyMzcsIDExOCwgNiwgMSwgMjI2LCAxOTUsIDExOCwgNiwgMSwgMjM1LCAxOTAsIAorICAgIDExOCwgNiwgMSwgMjE0LCAxNDQsIDExOCwgNiwgMSwgMjEwLCAyMSwgMTE4LCA2LCAxLCAyNDYsIDIyMywgMTE4LCA2LCAxLCAKKyAgICAyNDcsIDE1OCwgMTE4LCA2LCAxLCAyMjcsIDE5OCwgMTE4LCA2LCAxLCAyNDYsIDE2MiwgMTE4LCA2LCAxLCAyNDcsIDIxLCAKKyAgICAxMTgsIDYsIDEsIDIwMCwgMTc5LCAxMTgsIDYsIDEsIDIyNywgMjEyLCAxMTgsIDYsIDEsIDIzNCwgMjMwLCAxMTgsIDYsIDEsIAorICAgIDIzNCwgMTM5LCAxMTgsIDYsIDEsIDIzNCwgNjksIDExOCwgNiwgMSwgMjAxLCA2NCwgMTE4LCA2LCAxLCAyMzQsIDE2NiwgCisgICAgMTE4LCA2LCAxLCAyMzMsIDIwMywgMTE4LCA2LCAxLCAxOTksIDI0NywgMTE4LCA2LCAxLCAyNTEsIDIxMCwgMTE4LCAxLCAKKyAgICAyNTEsIDg1LCAxMTgsIDEsIDI0OSwgODgsIDExOCwgMSwgMjM2LCA1OSwgMTE4LCAxLCAyNDAsIDE5MCwgMTE4LCAxLCAyMzgsIAorICAgIDE3OSwgMTE4LCAxLCAyMDIsIDIxNywgMTE4LCAxLCAxOTksIDg0LCAxMTgsIDEsIDIwNiwgMjQ0LCAxMTgsIDEsIDIyOCwgCisgICAgMTE3LCAxMTgsIDEsIDIyNywgNjgsIDExOCwgMSwgMjI1LCA2NSwgMTE4LCAxLCAyMjIsIDE4MCwgMTE4LCAxLCAyMjAsIAorICAgIDEyNSwgMTE4LCAxLCAyMTcsIDc4LCAxMTgsIDEsIDIxNiwgMTMwLCAxMTgsIDEsIDE5OSwgNzMsIDExOCwgMSwgMjEzLCAKKyAgICAyMzQsIDExOCwgMSwgMjEyLCAxMywgMTE4LCAxLCAyMDYsIDIzMiwgMTE4LCAxLCAyMDQsIDUsIDExOCwgMSwgMjE1LCAyMzcsIAorICAgIDExOCwgMSwgMjI2LCAxOTUsIDExOCwgMSwgMjM1LCAxOTAsIDExOCwgMSwgMjE0LCAxNDQsIDExOCwgMSwgMjEwLCAyMSwgCisgICAgMTE4LCAxLCAyNDYsIDIyMywgMTE4LCAxLCAyNDcsIDE1OCwgMTE4LCAxLCAyMjcsIDE5OCwgMTE4LCAxLCAyNDYsIDE2MiwgCisgICAgMTE4LCAxLCAyNDcsIDIxLCAxMTgsIDEsIDIwMCwgMTc5LCAxMTgsIDEsIDIyNywgMjEyLCAxMTgsIDEsIDIzNCwgMjMwLCAKKyAgICAxMTgsIDEsIDIzNCwgMTM5LCAxMTgsIDEsIDIzNCwgNjksIDExOCwgMSwgMjAxLCA2NCwgMTE4LCAxLCAyMzQsIDE2NiwgCisgICAgMTE4LCAxLCAyMzMsIDIwMywgMTE4LCAxLCAyMzcsIDExMiwgMTE4LCAxLCAxOTksIDI0NywgMTE4LCAxLCAyMzgsIDE5NywgCisgICAgMTE4LCAxLCAyMDQsIDE4NSwgMjM2LCA1OSwgMTE4LCAxLCAyNTEsIDE3MSwgMTE4LCAyMTYsIDEyOCwgMjEwLCAxNTQsIDY3LCAKKyAgICAxLCAxMTgsIDIyMCwgMTI1LCAxMTgsIDEsIDI1MSwgMjEwLCAxMTgsIDEsIDIzNCwgMTY1LCA1NCwgMTE4LCAxLCAyMjUsIAorICAgIDE2NywgNTQsIDI5LCAxMjksIDIyNiwgMTIxLCAyOSwgMTI5LCAyMDgsIDE3MSwgMjksIDEyOSwgMjE5LCAxNDMsIDI5LCAKKyAgICAxMjksIDIwNSwgMjUzLCAyOSwgMTI5LCAyMDgsIDE2MCwgMjksIDEyOSwgMjEzLCA3OCwgMjksIDEyOSwgMjIxLCAxOTcsIAorICAgIDI5LCAxMjksIDIxNSwgMTkwLCAyOSwgMTI5LCAyMDgsIDE2OCwgMjksIDEyOSwgMjA5LCAxMjksIDI5LCAxMjksIDIwOCwgCisgICAgMTY1LCAyOSwgMTI5LCAyMjgsIDE3NCwgMjksIDEyOSwgMjQ2LCAxNjgsIDI5LCAxMjksIDIwOCwgMTc1LCAyOSwgMTI5LCAKKyAgICAyNDYsIDIzMiwgMjksIDEyOSwgMjI2LCAxODMsIDI5LCAxMjksIDIwNiwgODAsIDI5LCAxMjksIDIxNSwgMjI3LCAyOSwgCisgICAgMTI5LCAyMzQsIDY2LCAyOSwgMTI5LCAyMTksIDEzOSwgMjksIDEyOSwgMjA4LCAxNjksIDI5LCAxMjksIDIxOSwgMTMzLCAKKyAgICAyOSwgMTI5LCAyMTksIDEzNywgMjksIDEyOSwgMjA1LCAyNTAsIDI5LCAxMjksIDIxMywgNjYsIDI5LCAxMjksIDIwOCwgCisgICAgMTY3LCAyOSwgMTI5LCAyMTMsIDc2LCAyOSwgMTI5LCAyMjcsIDUwLCAyOSwgMTI5LCAyMjEsIDE5MCwgMjksIDEyOSwgMjI3LCAKKyAgICA1MywgMjksIDEyOSwgMjE1LCAxODUsIDI5LCAxMjksIDIxNSwgMTgzLCAyOSwgMTI5LCAyMTUsIDE3MSwgMjksIDEyOSwgCisgICAgMjE1LCAxNzksIDI5LCAxMjksIDIxNSwgMTc3LCAyOSwgMTI5LCAyMTUsIDE3NCwgMjksIDEyOSwgMjE1LCAxNzYsIDI5LCAKKyAgICAxMjksIDIxNSwgMTczLCAyOSwgMTI5LCAyMTUsIDE3OCwgMjksIDEyOSwgMjE1LCAxODgsIDI5LCAxMjksIDIxNSwgMTg5LCAKKyAgICAyOSwgMTI5LCAyMTUsIDE3MiwgMjksIDEyOSwgMjE1LCAxODIsIDI5LCAxMjksIDIyNywgNTEsIDI5LCAxMjksIDIyNywgNDksIAorICAgIDI5LCAxMjksIDIwOSwgMTIyLCAyOSwgMTI5LCAyMDksIDEyMCwgMjksIDEyOSwgMjA5LCAxMTIsIDI5LCAxMjksIDIwOSwgCisgICAgMTE1LCAyOSwgMTI5LCAyMDksIDEyMSwgMjksIDEyOSwgMjA5LCAxMTcsIDI5LCAxMjksIDIwOSwgMTE2LCAyOSwgMTI5LCAKKyAgICAyMDksIDExNCwgMjksIDEyOSwgMjA5LCAxMjUsIDI5LCAxMjksIDIwOSwgMTI3LCAyOSwgMTI5LCAyMDksIDEyOCwgMjksIAorICAgIDEyOSwgMjA5LCAxMjMsIDI5LCAxMjksIDIwOSwgMTEzLCAyOSwgMTI5LCAyMDksIDExOCwgMjksIDEyOSwgMjA5LCAxMjYsIAorICAgIDI5LCAxMjksIDI0NiwgMjE0LCAyOSwgMTI5LCAyNDYsIDIxMiwgMjksIDEyOSwgMjQ3LCA0OCwgMjksIDEyOSwgMjQ3LCA0NiwgCisgICAgMjksIDEyOSwgMjE2LCAxNDYsIDI5LCAxMjksIDIyOCwgMTY5LCAyOSwgMTI5LCAyMjgsIDE2MCwgMjksIDEyOSwgMjI4LCAKKyAgICAxNjgsIDI5LCAxMjksIDIyOCwgMTY1LCAyOSwgMTI5LCAyMjgsIDE2MywgMjksIDEyOSwgMjI4LCAxNjcsIDI5LCAxMjksIAorICAgIDIwOCwgMTcyLCAyOSwgMTI5LCAyMjgsIDE3MiwgMjksIDEyOSwgMjI4LCAxNzMsIDI5LCAxMjksIDIyOCwgMTYxLCAyOSwgCisgICAgMTI5LCAyMjgsIDE2NiwgMjksIDEyOSwgMjAwLCAyOCwgMjksIDEyOSwgMjQ2LCAxNjcsIDI5LCAxMjksIDI0NiwgMjE1LCAKKyAgICAyOSwgMTI5LCAyNDYsIDIxMywgMjksIDEyOSwgMjQ3LCA0OSwgMjksIDEyOSwgMjQ3LCA0NywgMjksIDEyOSwgMjQ2LCAyMzAsIAorICAgIDI5LCAxMjksIDI0NiwgMjMxLCAyOSwgMTI5LCAyNDYsIDIxNiwgMjksIDEyOSwgMjQ3LCA1MCwgMjksIDEyOSwgMjE1LCAKKyAgICAyMjUsIDI5LCAxMjksIDIyNywgNTIsIDI5LCAxMjksIDIwOCwgMTczLCAyOSwgMTI5LCAyMDAsIDM0LCAyOSwgMTI5LCAyMjYsIAorICAgIDExMiwgMjksIDEyOSwgMjE5LCAxMzUsIDI5LCAxMjksIDIxOSwgMTQxLCAyOSwgMTI5LCAyMTksIDE0MCwgMjksIDEyOSwgCisgICAgMjA1LCAyNDcsIDI5LCAxMjksIDIzNywgOTMsIDI5LCAxODEsIDIzNywgOTMsIDI5LCAxODEsIDYyLCAyOSwgMTgxLCAyNTEsIAorICAgIDIyMSwgMjksIDE4MSwgMTgzLCAyOSwgMTgxLCAyMDAsIDk4LCAyOSwgMTgxLCAyMzgsIDE0MiwgMjksIDE4MSwgNzIsIDI5LCAKKyAgICAxODEsIDIwMCwgMzgsIDI5LCAxODEsIDIwMCwgNTEsIDI5LCAxODEsIDc0LCAyOSwgMTgxLCAyMDEsIDExNCwgMjksIDE4MSwgCisgICAgMjAxLCAxMTAsIDI5LCAxODEsIDIxNywgMTIxLCAyOSwgMTgxLCAxOTksIDI0NSwgMjksIDE4MSwgNjYsIDI5LCAxODEsIAorICAgIDIwMSwgNTAsIDI5LCAxODEsIDIwMSwgNjQsIDI5LCAxODEsIDIwMSwgMzEsIDI5LCAxODEsIDE5OSwgMjExLCAyOSwgMTgxLCAKKyAgICAyMzgsIDY5LCAyOSwgMTgxLCAyMDAsIDksIDI5LCAxODEsIDcwLCAyOSwgMTgxLCAyNTUsIDEzMywgMjksIDE4MSwgMjU1LCAKKyAgICAxMzIsIDI5LCAxODEsIDIwMCwgMTEyLCAyOSwgMTgxLCAyMDAsIDExMCwgMjksIDE4MSwgMjM4LCAxNDAsIDI5LCAxODEsIAorICAgIDIzOCwgMTM5LCAyOSwgMTgxLCAyMzgsIDE0MSwgMjksIDE4MSwgMjAwLCAzNywgMjksIDE4MSwgMjAwLCAzNiwgMjksIDE4MSwgCisgICAgMjE3LCAyMzAsIDI5LCAxODEsIDIxNywgMjMxLCAyOSwgMTgxLCAyMTcsIDIyNCwgMjksIDE4MSwgMjE3LCAyMjksIDI5LCAKKyAgICAxODEsIDIxNywgMjI3LCAyOSwgMTgxLCAxOTksIDIzOSwgMjksIDE4MSwgMTk5LCAyMzgsIDI5LCAxODEsIDE5OSwgMjM3LCAKKyAgICAyOSwgMTgxLCAxOTksIDI0MCwgMjksIDE4MSwgMTk5LCAyNDEsIDI5LCAxODEsIDIwNCwgMTA0LCAyOSwgMTgxLCAyMDQsIAorICAgIDEwMywgMjksIDE4MSwgMjA0LCAxMDEsIDI5LCAxODEsIDIwNCwgOTcsIDI5LCAxODEsIDIwNCwgOTgsIDI5LCAxODEsIDE5OSwgCisgICAgMjEwLCAyOSwgMTgxLCAxOTksIDIwNywgMjksIDE4MSwgMTk5LCAyMDgsIDI5LCAxODEsIDE5OSwgMjAyLCAyOSwgMTgxLCAKKyAgICAxOTksIDIwMywgMjksIDE4MSwgMTk5LCAyMDQsIDI5LCAxODEsIDE5OSwgMjA2LCAyOSwgMTgxLCAyMzgsIDYzLCAyOSwgCisgICAgMTgxLCAyMzgsIDY1LCAyOSwgMTgxLCAyMDAsIDgsIDI5LCAxODEsIDIzMywgMTgsIDI5LCAxODEsIDIzMywgMTAsIDI5LCAKKyAgICAxODEsIDIzMywgMTMsIDI5LCAxODEsIDIzMywgMTEsIDI5LCAxODEsIDIzMywgMTUsIDI5LCAxODEsIDIzMywgMTcsIDI5LCAKKyAgICAxODEsIDI1MCwgMjQ1LCAyOSwgMTgxLCAyNTAsIDI0MiwgMjksIDE4MSwgMjUwLCAyNDAsIDI5LCAxODEsIDI1MCwgMjQxLCAKKyAgICAyOSwgMTgxLCAyMDgsIDE3NiwgMjksIDE4MSwgMjU1LCAxMzQsIDI5LCAxODEsIDIwMCwgMTExLCAyOSwgMTgxLCAyMDAsIAorICAgIDM1LCAyOSwgMTgxLCAyMTcsIDIyNiwgMjksIDE4MSwgMjE3LCAyMjUsIDI5LCAxMTAsIDIyNiwgMTIxLCAyOSwgMTEwLCAKKyAgICAyMDgsIDE3MSwgMjksIDExMCwgMjI2LCAxMTQsIDI5LCAxMTAsIDIxOSwgMTQzLCAyOSwgMTEwLCAyMTksIDE0MSwgMjksIAorICAgIDExMCwgMjE5LCAxNDAsIDI5LCAxMTAsIDIwNSwgMjUzLCAyOSwgMTEwLCAyMTMsIDc4LCAyOSwgMTEwLCAyMTMsIDczLCAyOSwgCisgICAgMTEwLCAyMTMsIDcwLCAyOSwgMTEwLCAyMTMsIDYzLCAyOSwgMTEwLCAyMTMsIDU4LCAyOSwgMTEwLCAyMTMsIDUzLCAyOSwgCisgICAgMTEwLCAyMTMsIDY0LCAyOSwgMTEwLCAyMTMsIDc2LCAyOSwgMTEwLCAyMjEsIDE5NywgMjksIDExMCwgMjE1LCAxOTAsIDI5LCAKKyAgICAxMTAsIDIxNSwgMTc5LCAyOSwgMTEwLCAyMDksIDEyOSwgMjksIDExMCwgMjA4LCAxNjUsIDI5LCAxMTAsIDIyOCwgMTc0LCAKKyAgICAyOSwgMTEwLCAyNDYsIDE2OCwgMjksIDExMCwgMjQ2LCAyMzIsIDI5LCAxMTAsIDIyNiwgMTgzLCAyOSwgMTEwLCAyMDYsIAorICAgIDgwLCAyOSwgMTEwLCAyMTUsIDIyNywgMjksIDExMCwgMjM0LCA2NiwgMjksIDExMCwgMjI2LCAxMTUsIDI5LCAxMTAsIDIyNiwgCisgICAgMTEzLCAyOSwgMTEwLCAyMTksIDEzOSwgMjksIDExMCwgMjE5LCAxMzMsIDI5LCAxMTAsIDIxOSwgMTM1LCAyOSwgMTEwLCAKKyAgICAyMTksIDEzOCwgMjksIDExMCwgMjE5LCAxMzQsIDI5LCAxMTAsIDIwNSwgMjUwLCAyOSwgMTEwLCAyMDUsIDI0NywgMjksIAorICAgIDExMCwgMjEzLCA3MSwgMjksIDExMCwgMjEzLCA2NiwgMjksIDExMCwgMjEzLCA1MiwgMjksIDExMCwgMjEzLCA1MSwgMjksIAorICAgIDExMCwgMjA4LCAxNjcsIDI5LCAxMTAsIDIxMywgNjgsIDI5LCAxMTAsIDIxMywgNjcsIDI5LCAxMTAsIDIxMywgNjAsIDI5LCAKKyAgICAxMTAsIDIxMywgNjIsIDI5LCAxMTAsIDIxMywgNzUsIDI5LCAxMTAsIDIxMywgNTUsIDI5LCAxMTAsIDIxMywgNjUsIDI5LCAKKyAgICAxMTAsIDIxMywgNzQsIDI5LCAxMTAsIDIxMywgNTAsIDI5LCAxMTAsIDIyMSwgMTkzLCAyOSwgMTEwLCAyMjEsIDE4OCwgMjksIAorICAgIDExMCwgMjIxLCAxOTAsIDI5LCAxMTAsIDIyMSwgMTg3LCAyOSwgMTEwLCAyMjEsIDE4NSwgMjksIDExMCwgMjIxLCAxOTEsIAorICAgIDI5LCAxMTAsIDIyMSwgMTk2LCAyOSwgMTEwLCAyMjEsIDE5NCwgMjksIDExMCwgMjI3LCA1MywgMjksIDExMCwgMjE1LCAKKyAgICAxODEsIDI5LCAxMTAsIDIxNSwgMTgyLCAyOSwgMTEwLCAyMTUsIDE4NywgMjksIDExMCwgMjI3LCA1MSwgMjksIDExMCwgCisgICAgMjA5LCAxMjIsIDI5LCAxMTAsIDIwOSwgMTEyLCAyOSwgMTEwLCAyMDksIDExNSwgMjksIDExMCwgMjA5LCAxMTcsIDI5LCAKKyAgICAxMTAsIDIxNiwgMTQ2LCAyOSwgMTEwLCAyMjgsIDE2OSwgMjksIDExMCwgMjI4LCAxNjIsIDI5LCAxMTAsIDIwOCwgMTcyLCAKKyAgICAyOSwgMTEwLCAyMjgsIDE3MCwgMjksIDExMCwgMjAwLCAyOCwgMjksIDExMCwgMjAwLCAyNCwgMjksIDExMCwgMjAwLCAyNSwgCisgICAgMjksIDExMCwgMjE1LCAyMjUsIDI5LCAxMTAsIDIyNywgNTIsIDI5LCAxMTAsIDIzNCwgNjQsIDI5LCAxMTAsIDIzNCwgNjIsIAorICAgIDI5LCAxMTAsIDIzNCwgNjUsIDI5LCAxMTAsIDIzNCwgNjMsIDI5LCAxMTAsIDIwMCwgMzQsIDI5LCAxMTAsIDIyNiwgMTE3LCAKKyAgICAyOSwgMTEwLCAyMjYsIDExNiwgMjksIDExMCwgMjI2LCAxMjAsIDI5LCAxMTAsIDIyNiwgMTE4LCAyOSwgMTEwLCAyMjYsIAorICAgIDExOSwgMjksIDExMCwgMjA4LCAxNjksIDM0LCA1LCAxNDQsIDM0LCA1LCAyMzMsIDk3LCAzNCwgNSwgMjM0LCA3NSwgMzQsIAorICAgIDUsIDIzNCwgMjMzLCAzNCwgNSwgMjM0LCAxMjAsIDM0LCA1LCAyMzQsIDEzOSwgMzQsIDUsIDIzMywgMjA3LCAzNCwgNSwgCisgICAgMjMzLCAyMDYsIDM0LCA1LCAxOTQsIDM0LCA1LCAyMjQsIDQyLCAzNCwgNSwgMjI0LCAyMTAsIDM0LCA1LCAyMjUsIDE3NSwgCisgICAgMzQsIDUsIDIyNSwgMzIsIDM0LCA1LCAyMjUsIDQwLCAzNCwgNSwgMjI0LCAxMTAsIDM0LCA1LCAyMjQsIDEwLCAzNCwgNSwgCisgICAgMjM0LCA4NCwgMzQsIDUsIDIzNCwgNzgsIDM0LCA1LCAyMzQsIDgwLCAzNCwgNSwgMjM0LCA4MywgMzQsIDUsIDIzNCwgODEsIAorICAgIDM0LCA1LCAyMzQsIDgyLCAzNCwgNSwgMjM0LCA3OSwgMzQsIDUsIDIzNCwgNzcsIDM0LCA1LCAxNzgsIDM0LCA1LCAyMjEsIAorICAgIDQxLCAzNCwgNSwgMjIxLCAyMTEsIDM0LCA1LCAyMjIsIDIzMywgMzQsIDUsIDIyMiwgNjQsIDM0LCA1LCAyMjIsIDc2LCAzNCwgCisgICAgNSwgMjIxLCAxMzYsIDM0LCA1LCAyMjAsIDIzMSwgMzQsIDUsIDIwNywgOTQsIDM0LCA1LCAyMDcsIDg4LCAzNCwgNSwgMjA3LCAKKyAgICA5MCwgMzQsIDUsIDIwNywgOTMsIDM0LCA1LCAyMDcsIDkxLCAzNCwgNSwgMjA3LCA5MiwgMzQsIDUsIDIwNywgODksIDM0LCAKKyAgICA1LCAyMDcsIDg3LCAzNCwgNSwgMjEzLCAyNTIsIDM0LCA1LCAyMTIsIDE3NSwgMzQsIDUsIDIxMywgODgsIDM0LCA1LCAyMTMsIAorICAgIDI0OCwgMzQsIDUsIDIxMywgMTY3LCAzNCwgNSwgMjEzLCAxOTAsIDM0LCA1LCAyMTMsIDEsIDM0LCA1LCAyMTIsIDE0MCwgCisgICAgMzQsIDUsIDIxMiwgNjQsIDM0LCA1LCAyMDgsIDI0LCAzNCwgNSwgMjA5LCAxODIsIDM0LCA1LCAyMTIsIDYxLCAzNCwgNSwgCisgICAgMjExLCAxOTAsIDM0LCA1LCAyMTEsIDIwMiwgMzQsIDUsIDIwOSwgMjksIDM0LCA1LCAyMDcsIDE4NiwgMzQsIDUsIDIxMCwgCisgICAgMTE0LCAzNCwgNSwgMjA5LCAyMjAsIDM0LCA1LCAyMTAsIDMzLCAzNCwgNSwgMjEwLCAxMDksIDM0LCA1LCAyMTAsIDYzLCAKKyAgICAzNCwgNSwgMjEwLCA2NSwgMzQsIDUsIDIxMCwgOCwgMzQsIDUsIDIwOSwgMjAwLCAzNCwgNSwgMjE0LCAxNTksIDM0LCA1LCAKKyAgICAyMTQsIDk3LCAzNCwgNSwgMjE0LCAxMjEsIDM0LCA1LCAyMTQsIDE1OCwgMzQsIDUsIDIxNCwgMTM4LCAzNCwgNSwgMjE0LCAKKyAgICAxMzksIDM0LCA1LCAyMTQsIDEwOSwgMzQsIDUsIDIxNCwgMTA4LCAzNCwgNSwgMjE0LCA1MSwgMzQsIDUsIDIxNCwgNDcsIAorICAgIDM0LCA1LCAyMTQsIDUwLCAzNCwgNSwgMjE0LCA0OCwgMzQsIDUsIDIxNCwgNDksIDM0LCA1LCAyMTQsIDEzNSwgMzQsIDUsIAorICAgIDIxNCwgMTI3LCAzNCwgNSwgMjE0LCAxMzAsIDM0LCA1LCAyMTQsIDEzNCwgMzQsIDUsIDIxNCwgMTMxLCAzNCwgNSwgMjE0LCAKKyAgICAxMzIsIDM0LCA1LCAyMTQsIDEyOSwgMzQsIDUsIDIxNCwgMTI2LCAzNCwgNSwgMjE0LCAxMjIsIDM0LCA1LCAyMTQsIDEyNSwgCisgICAgMzQsIDUsIDIxNCwgMTIzLCAzNCwgNSwgMjE0LCAxMjQsIDM0LCA1LCAyNDksIDEzNiwgMzQsIDUsIDI0OCwgMzYsIDM0LCA1LCAKKyAgICAyNDgsIDE4OCwgMzQsIDUsIDI0OSwgMTM0LCAzNCwgNSwgMjQ4LCAyNTIsIDM0LCA1LCAyNDksIDgsIDM0LCA1LCAyNDgsIAorICAgIDEyNCwgMzQsIDUsIDI0NywgMjQwLCAzNCwgNSwgMjAzLCA5MCwgMzQsIDUsIDIwMSwgMTY2LCAzNCwgNSwgMjAyLCAyMzQsIAorICAgIDM0LCA1LCAyMDMsIDg5LCAzNCwgNSwgMjAzLCA1NCwgMzQsIDUsIDIwMywgNTksIDM0LCA1LCAyMDIsIDE5MywgMzQsIDUsIAorICAgIDIwMSwgMTU3LCAzNCwgNSwgMjA3LCAzNiwgMzQsIDUsIDIwNCwgMjE1LCAzNCwgNSwgMjA2LCAxNSwgMzQsIDUsIDIwNywgCisgICAgMzIsIDM0LCA1LCAyMDYsIDE5MCwgMzQsIDUsIDIwNiwgMjAxLCAzNCwgNSwgMTM4LCAzNCwgNSwgMjA0LCAxNzAsIDM0LCA1LCAKKyAgICAyNDcsIDE5MCwgMzQsIDUsIDI0MiwgMjE0LCAzNCwgNSwgMjQ2LCAxNzMsIDM0LCA1LCAyNDcsIDE4OSwgMzQsIDUsIDI0NywgCisgICAgNjgsIDM0LCA1LCAyNDcsIDc2LCAzNCwgNSwgMjQ2LCA5MSwgMzQsIDUsIDI0MiwgMTc2LCAzNCwgNSwgMjAwLCAxODEsIDM0LCAKKyAgICA1LCAyMDAsIDE1MSwgMzQsIDUsIDIwMCwgMTY5LCAzNCwgNSwgMjAwLCAxODAsIDM0LCA1LCAyMDAsIDE3NCwgMzQsIDUsIAorICAgIDIwMCwgMTc1LCAzNCwgNSwgMjAwLCAxNTksIDM0LCA1LCAyMDAsIDE1OCwgMzQsIDUsIDIwMCwgMTQ1LCAzNCwgNSwgMjAwLCAKKyAgICAxNDEsIDM0LCA1LCAyMDAsIDE0NCwgMzQsIDUsIDIwMCwgMTQyLCAzNCwgNSwgMjAwLCAxNDMsIDM0LCA1LCAxODgsIDM0LCAKKyAgICA1LCAyMTgsIDEzMywgMzQsIDUsIDIxOSwgMTUwLCAzNCwgNSwgMjIwLCAxNTcsIDM0LCA1LCAyMjAsIDI5LCAzNCwgNSwgCisgICAgMjIwLCAzNCwgMzQsIDUsIDIxOCwgMjQxLCAzNCwgNSwgMjE4LCA2OSwgMzQsIDUsIDIxOCwgNjAsIDM0LCA1LCAyMTgsIDE5LCAKKyAgICAzNCwgNSwgMjE4LCA0MSwgMzQsIDUsIDIxOCwgNTksIDM0LCA1LCAyMTgsIDQ5LCAzNCwgNSwgMjE4LCA1MCwgMzQsIDUsIAorICAgIDIxOCwgMjYsIDM0LCA1LCAyMTgsIDksIDM0LCA1LCAyMzUsIDEyMywgNjIsIDM0LCA1LCAyMzUsIDEyMywgNjYsIDM0LCA1LCAKKyAgICAyMzUsIDEyMywgNzAsIDM0LCA1LCAyMzUsIDEyMywgMjUyLCAxMzgsIDM0LCA1LCAyMzUsIDEyMywgMjM4LCAyNTUsIDM0LCAKKyAgICA1LCAyMzUsIDEyMywgNzIsIDM0LCA1LCAyMzUsIDEyMywgNzQsIDM0LCA1LCAyMzUsIDEyMywgMjAxLCAxMTQsIDM0LCA1LCAKKyAgICAxNjEsIDM0LCA1LCAyMjYsIDE1LCAzNCwgNSwgMjI2LCAxNjMsIDM0LCA1LCAyMjcsIDEwNSwgMzQsIDUsIDIyNywgNSwgMzQsIAorICAgIDUsIDIyNywgOCwgMzQsIDUsIDIyNiwgODgsIDM0LCA1LCAyMjYsIDg3LCAzNCwgNSwgMjI1LCAyMjksIDM0LCA1LCAyMjUsIAorICAgIDIyMiwgMzQsIDUsIDIyNSwgMjI4LCAzNCwgNSwgMjI1LCAyMjMsIDM0LCA1LCAyMjUsIDIyNCwgMzQsIDUsIDIyNSwgMjE1LCAKKyAgICAzNCwgNSwgMjI1LCAyMDksIDM0LCA1LCAyMjUsIDIxMSwgMzQsIDUsIDIyNSwgMjE0LCAzNCwgNSwgMjI1LCAyMTIsIDM0LCAKKyAgICA1LCAyMjUsIDIxMywgMzQsIDUsIDIyNSwgMjEwLCAzNCwgNSwgMjI1LCAyMDgsIDM0LCA1LCAyMjUsIDIwNCwgMzQsIDUsIAorICAgIDIyNSwgMjA3LCAzNCwgNSwgMjI1LCAyMDUsIDM0LCA1LCAyMjUsIDIwNiwgMzQsIDUsIDIwMSwgMTE0LCAzNCwgNSwgMjAwLCAKKyAgICAyMTYsIDM0LCA1LCAyMDEsIDMxLCAzNCwgNSwgMjAxLCAxMTMsIDM0LCA1LCAyMDEsIDU3LCAzNCwgNSwgMjAxLCA2NCwgMzQsIAorICAgIDUsIDIwMSwgMCwgMzQsIDUsIDIwMCwgMjU1LCAzNCwgNSwgMjE1LCAyMzYsIDYyLCAzNCwgNSwgMjE1LCAyMzYsIDY2LCAzNCwgCisgICAgNSwgMjE1LCAyMzYsIDcwLCAzNCwgNSwgMjE1LCAyMzYsIDI1MiwgMTM4LCAzNCwgNSwgMjE1LCAyMzYsIDIzOCwgMjU1LCAKKyAgICAzNCwgNSwgMjE1LCAyMzYsIDcyLCAzNCwgNSwgMjE1LCAyMzYsIDc0LCAzNCwgNSwgMTk5LCAxMTQsIDM0LCA1LCAxOTksIDMsIAorICAgIDM0LCA1LCAxOTksIDM2LCAzNCwgNSwgMTk5LCAxMTIsIDM0LCA1LCAxOTksIDg3LCAzNCwgNSwgMTk5LCA4OSwgMzQsIDUsIAorICAgIDE5OSwgMTQsIDM0LCA1LCAxOTgsIDI0NiwgMzQsIDUsIDE5OSwgNzcsIDM0LCA1LCAxOTksIDU0LCAzNCwgNSwgMTk5LCA2MywgCisgICAgMzQsIDUsIDE5OSwgNzYsIDM0LCA1LCAxOTksIDY3LCAzNCwgNSwgMTk5LCA2OCwgMzQsIDUsIDE5OSwgNjAsIDM0LCA1LCAKKyAgICAxOTksIDQ1LCAzNCwgNSwgMTgzLCAzNCwgNSwgMTk5LCAyMTEsIDM0LCA1LCAyMDAsIDksIDM0LCA1LCAyMDAsIDEwOSwgMzQsIAorICAgIDUsIDIwMCwgNDgsIDM0LCA1LCAyMDAsIDUxLCAzNCwgNSwgMTk5LCAyNDUsIDM0LCA1LCAxOTksIDIzNiwgMzQsIDUsIDI0MiwgCisgICAgNTgsIDM0LCA1LCAyMzksIDEzNywgMzQsIDUsIDI0MSwgNzYsIDM0LCA1LCAyNDIsIDU3LCAzNCwgNSwgMjQxLCAxNjEsIDM0LCAKKyAgICA1LCAyNDEsIDE3NSwgMzQsIDUsIDI0MCwgMjExLCAzNCwgNSwgMjM5LCAxMDQsIDM0LCA1LCAyNDEsIDIyMCwgMzQsIDUsIAorICAgIDI0MSwgMTg1LCAzNCwgNSwgMjQxLCAxOTcsIDM0LCA1LCAyNDEsIDIxOSwgMzQsIDUsIDI0MSwgMjA3LCAzNCwgNSwgMjQxLCAKKyAgICAyMDgsIDM0LCA1LCAyNDEsIDE5MCwgMzQsIDUsIDI0MSwgMTc2LCAzNCwgNSwgMjI3LCAyNDgsIDM0LCA1LCAyMjcsIDE0NywgCisgICAgMzQsIDUsIDIyNywgMjA3LCAzNCwgNSwgMjI3LCAyNDcsIDM0LCA1LCAyMjcsIDIyNSwgMzQsIDUsIDIyNywgMjI3LCAzNCwgCisgICAgNSwgMjI3LCAxNjYsIDM0LCA1LCAyMjcsIDEyNiwgMzQsIDUsIDIzNiwgODksIDM0LCA1LCAyMzUsIDUwLCAzNCwgNSwgMjM1LCAKKyAgICAxNjEsIDM0LCA1LCAyMzYsIDg2LCAzNCwgNSwgMjM2LCA3LCAzNCwgNSwgMjM2LCAxNSwgMzQsIDUsIDIzNSwgMTE2LCAzNCwgCisgICAgNSwgMjM1LCAxMTUsIDM0LCA1LCAyMzUsIDEwLCAzNCwgNSwgMjM1LCA2LCAzNCwgNSwgMjM1LCA5LCAzNCwgNSwgMjM1LCA3LCAKKyAgICAzNCwgNSwgMjM1LCA4LCAzNCwgNSwgMjM1LCAyMzUsIDM0LCA1LCAyMzUsIDIxNSwgMzQsIDUsIDIzNSwgMjI1LCAzNCwgNSwgCisgICAgMjM1LCAyMzQsIDM0LCA1LCAyMzUsIDIyOSwgMzQsIDUsIDIzNSwgMjMwLCAzNCwgNSwgMjM1LCAyMTksIDM0LCA1LCAyMzUsIAorICAgIDIwNCwgMzQsIDUsIDIwNiwgMTIyLCAzNCwgNSwgMjA2LCAzNSwgMzQsIDUsIDIwNiwgODQsIDM0LCA1LCAyMDYsIDEyMSwgCisgICAgMzQsIDUsIDIwNiwgMTA0LCAzNCwgNSwgMjA2LCAxMDYsIDM0LCA1LCAyMDYsIDYxLCAzNCwgNSwgMjA2LCAyNiwgMzQsIDUsIAorICAgIDI0NywgMzcsIDM0LCA1LCAyNDYsIDE5MiwgMzQsIDUsIDI0NiwgMjM2LCAzNCwgNSwgMjQ3LCAzNiwgMzQsIDUsIDI0NywgNCwgCisgICAgMzQsIDUsIDI0NywgOCwgMzQsIDUsIDI0NiwgMjEwLCAzNCwgNSwgMjQ2LCAxODEsIDM0LCA1LCAyMTUsIDI0NSwgMzQsIDUsIAorICAgIDIxNSwgMjEwLCAzNCwgNSwgMjE1LCAyMjksIDM0LCA1LCAyMTUsIDI0NCwgMzQsIDUsIDIxNSwgMjMxLCAzNCwgNSwgMjE1LCAKKyAgICAyMzIsIDM0LCA1LCAyMTUsIDIxNywgMzQsIDUsIDIxNSwgMjA2LCAzNCwgNSwgMjA1LCAzMiwgMzQsIDUsIDIwNSwgNSwgMzQsIAorICAgIDUsIDIwNSwgMTEsIDM0LCA1LCAyMDUsIDMxLCAzNCwgNSwgMjA1LCAyNSwgMzQsIDUsIDIwNSwgMjYsIDM0LCA1LCAyMDUsIAorICAgIDksIDM0LCA1LCAyMDUsIDMsIDM0LCA1LCAyMDQsIDExMywgMzQsIDUsIDIwNCwgMTA1LCAzNCwgNSwgMjA0LCAxMDksIDM0LCAKKyAgICA1LCAyMDQsIDExMiwgMzQsIDUsIDIwNCwgMTEwLCAzNCwgNSwgMjA0LCAxMTEsIDM0LCA1LCAyMDQsIDEwNywgMzQsIDUsIAorICAgIDIwNCwgMTA2LCAzNCwgNSwgMjM3LCAxOTUsIDM0LCA1LCAyMzYsIDE4OSwgMzQsIDUsIDIzNywgMTEyLCAzNCwgNSwgMjM3LCAKKyAgICAxOTQsIDM0LCA1LCAyMzcsIDE0MCwgMzQsIDUsIDIzNywgMTQ3LCAzNCwgNSwgMjM3LCAxMywgMzQsIDUsIDIzNiwgMTY3LCAKKyAgICAzNCwgNSwgMTcyLCAzNCwgNSwgMjE0LCAyMjQsIDM0LCA1LCAyMTUsIDIwNCwgMzQsIDUsIDIxNiwgMjEwLCAzNCwgNSwgCisgICAgMjE2LCA2MSwgMzQsIDUsIDIxNiwgNzMsIDM0LCA1LCAyMTUsIDEwNiwgMzQsIDUsIDIxNCwgMTg1LCAzNCwgNSwgMjEyLCAKKyAgICAxMzAsIDM0LCA1LCAyMjAsIDIyMCwgMzQsIDUsIDIzNiwgMTYxLCAzNCwgMzgsIDIzNiwgMywgMjYsIDIyLCAyMjUsIDIsIAorICAgIDgxLCAzNCwgMzgsIDIyLCAyMjUsIDIsIDgxLCAzNCwgMzgsIDIzNiwgMywgODEsIDM0LCAyMTEsIDE5MywgODEsIDM0LCAKKyAgICAyMDAsIDIzNywgMzQsIDIzNiwgMTgzLCAyMDgsIDc2LCAzNCwgMjQ2LCA3MCwgMzQsIDIxMCwgMTY3LCAzNCwgMjQ2LCA3OSwgCisgICAgMzQsIDIxNSwgMjUsIDI0NiwgNzksIDM0LCAyMTQsIDc5LCA4MSwgMzQsIDIxNiwgMTI4LCAyMTAsIDE1NCwgMzQsIDE3LCAKKyAgICAxMDIsIDM0LCAxNywgMTA1LCAzNCwgMTcsIDE0NywgMzQsIDE3LCAxNDksIDM0LCAxNywgMTY0LCAzNCwgMTcsIDE4NywgMzQsIAorICAgIDE3LCAyMTAsIDEzNSwgMzQsIDE3LCAxOTIsIDM0LCAxNywgMjE5LCAxMTMsIDM0LCA0MSwgMjA2LCAxNjYsIDM0LCA0MSwgCisgICAgMjA0LCAxNTksIDM0LCA0MSwgMjA2LCA2NywgMzQsIDQxLCAyMzYsIDIzNSwgMzQsIDQxLCAyMzcsIDEwNCwgMzQsIDQxLCAKKyAgICAyMDksIDkyLCAzNCwgNDEsIDIxMCwgMTI5LCAzNCwgNDEsIDIzOCwgMjIyLCAzNCwgNDEsIDIxOSwgMTA4LCAzNCwgNDEsIAorICAgIDIzMywgODIsIDM0LCA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDM0LCA1LCAyMTEsIDE5OCwgMjIwLCAyMzEsIDM0LCA1LCAKKyAgICAyMjAsIDIyNywgMzQsIDUsIDIyMCwgMjI4LCAzNCwgNSwgMjIwLCAyMjksIDM0LCA1LCAyMTEsIDE5OCwgMjQ3LCAyNDAsIAorICAgIDM0LCA1LCAyNDcsIDIzNywgMzQsIDUsIDI0NywgMjM4LCAzNCwgNSwgMjQ3LCAyMzksIDM0LCA1LCAyMTEsIDE5OCwgMjM2LCAKKyAgICAxNjcsIDM0LCA1LCAyMzYsIDE2MywgMzQsIDUsIDIzNiwgMTY0LCAzNCwgNSwgMjM2LCAxNjUsIDM0LCA1LCAyMTEsIDE5OCwgCisgICAgMjE0LCAxODUsIDM0LCA1LCAyMTQsIDE4MSwgMzQsIDUsIDIxNCwgMTgyLCAzNCwgNSwgMjE0LCAxODMsIDM0LCAyMDUsIAorICAgIDE3NSwgMTM0LCAxOTksIDI0OCwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0MSwgMTIxLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjEzLCAKKyAgICAzMiwgMzQsIDIwNSwgMTc1LCAxMzQsIDIwOSwgMjUwLCAyMTMsIDMyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCA1MCwgMzQsIAorICAgIDIwNSwgMTc1LCAxMzQsIDIyNiwgMjQyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQ2LCAyMTgsIDM0LCAyMDUsIDE3NSwgMTM0LCAKKyAgICAyMzQsIDcxLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCAxMjAsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMjUsIDI0MywgOTEsIDEsIAorICAgIDYyLCA5MSwgMSwgNzIsIDkxLCAxLCA3MCwgOTEsIDEsIDc0LCA5MSwgMSwgNjYsIDkxLCAxLCAyMDMsIDE2OCwgOTEsIDEsIAorICAgIDIzNiwgODksIDkxLCAxLCAxNjEsIDkxLCAxLCAyMzYsIDE1LCA5MSwgMSwgMjM1LCAxNjEsIDkxLCAxLCAyMzUsIDExNiwgCisgICAgOTEsIDEsIDIzNSwgNTAsIDkxLCAxLCAyMzUsIDEyLCA5MSwgMSwgMTQ0LCA5MSwgMSwgMjM0LCAxMzksIDkxLCAxLCAyMzQsIAorICAgIDc1LCA5MSwgMSwgMjMzLCAyMDcsIDkxLCAxLCAyMzMsIDk3LCA5MSwgMSwgMjMzLCA2OSwgOTEsIDEsIDE5NCwgOTEsIDEsIAorICAgIDIyNSwgNDAsIDkxLCAxLCAyMjQsIDIxMCwgOTEsIDEsIDIyNCwgMTEwLCA5MSwgMSwgMjI0LCA0MiwgOTEsIDEsIDIyNCwgCisgICAgMTEsIDkxLCAxLCAxNzgsIDkxLCAxLCAyMjIsIDc2LCA5MSwgMSwgMjIxLCAyMTEsIDkxLCAxLCAyMjEsIDEzNiwgOTEsIDEsIAorICAgIDIyMSwgNDEsIDkxLCAxLCAxODgsIDkxLCAxLCAyMzMsIDIzMSwgOTEsIDEsIDIyMCwgMTQ0LCA5MSwgMSwgMjIwLCAzNCwgCisgICAgOTEsIDEsIDIxOSwgMTUwLCA5MSwgMSwgMjE4LCAyNDEsIDkxLCAxLCAyMTgsIDEzMywgOTEsIDEsIDIxOCwgNzEsIDkxLCAxLCAKKyAgICAyMTQsIDk2LCA5MSwgMSwgMjE0LCA4MiwgOTEsIDEsIDIxNCwgNzUsIDkxLCAxLCAyMTQsIDY2LCA5MSwgMSwgMjE0LCA1NSwgCisgICAgOTEsIDEsIDIxNCwgNTMsIDkxLCAxLCAyMTIsIDY0LCA5MSwgMSwgMjEyLCAxMjIsIDkxLCAxLCAyMTEsIDIwMiwgOTEsIDEsIAorICAgIDIwOSwgMTgyLCA5MSwgMSwgMjA5LCAyOSwgOTEsIDEsIDIwOCwgMjQsIDkxLCAxLCAyMDcsIDE5MSwgOTEsIDEsIDI0MiwgCisgICAgNTgsIDkxLCAxLCAyMDcsIDM2LCA5MSwgMSwgMjQxLCAxNzUsIDkxLCAxLCAyMDYsIDIwMSwgOTEsIDEsIDI0MSwgNzYsIDkxLCAKKyAgICAxLCAyMDYsIDE1LCA5MSwgMSwgMjQwLCAyMTEsIDkxLCAxLCAyMzksIDEzNywgOTEsIDEsIDIzOSwgMTA3LCA5MSwgMSwgCisgICAgMjQwLCAyMjIsIDkxLCAxLCAyMDUsIDIwMywgOTEsIDEsIDIwNSwgMjAyLCA5MSwgMSwgMjA1LCAxOTEsIDkxLCAxLCAyMDUsIAorICAgIDE5MCwgOTEsIDEsIDIwNSwgMTg5LCA5MSwgMSwgMjA1LCAxODgsIDkxLCAxLCAyMDUsIDMyLCA5MSwgMSwgMjA1LCAyNiwgCisgICAgOTEsIDEsIDIwNSwgMTEsIDkxLCAxLCAyMDUsIDksIDkxLCAxLCAyMDUsIDUsIDkxLCAxLCAyMDUsIDQsIDkxLCAxLCAyMDEsIAorICAgIDExNCwgOTEsIDEsIDIwMSwgNjQsIDkxLCAxLCAyMDEsIDMxLCA5MSwgMSwgMjAxLCAwLCA5MSwgMSwgMjAwLCAyMTYsIDkxLCAKKyAgICAxLCAyMDAsIDIwMywgOTEsIDEsIDE4MywgOTEsIDEsIDIwMCwgNTEsIDkxLCAxLCAyMDAsIDksIDkxLCAxLCAxOTksIDI0NSwgCisgICAgOTEsIDEsIDE5OSwgMjExLCA5MSwgMSwgMTk5LCAxNzUsIDkxLCAxLCAyMjAsIDIzOCwgOTEsIDQsIDEsIDIwMCwgNTEsIDkxLCAKKyAgICA0LCAxLCAyMDAsIDksIDkxLCA0LCAxLCAxOTksIDI0NSwgOTEsIDQsIDEsIDE5OSwgMjExLCA5MSwgNCwgMSwgMTk5LCAxNzUsIAorICAgIDkxLCA0LCAxLCAyMjAsIDIzOCwgMjAsIDIxLCAyMzMsIDMzLCAyMCwgMjEsIDcyLCAyMCwgMjEsIDI1MiwgMTAyLCAyMCwgCisgICAgMjEsIDcwLCAyMCwgMjEsIDIyOCwgMTUxLCAyMCwgMjEsIDc0LCAyMCwgMjEsIDIxNywgNjMsIDIwLCAyMSwgMjAwLCAxMjIsIAorICAgIDIxNywgNjMsIDIwLCAyMSwgODksIDIzOCwgMjU1LCAyMCwgMjEsIDg5LCA3MCwgMjAsIDIxLCA2MiwgMjAsIDIxLCAyNTIsIAorICAgIDEzOCwgMjAsIDIxLCAyMDEsIDY0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgNjQsIDIwLCAyMSwgMjAxLCAzMSwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMDEsIDMxLCAyMCwgMjEsIDIwMSwgMjAsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAyMCwgMjAsIDIxLCAyMDEsIAorICAgIDAsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAwLCAyMCwgMjEsIDIwMCwgMjQ0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMCwgMjQ0LCAKKyAgICAyMCwgMjEsIDIyMCwgMTE5LCAyMDAsIDI0NCwgMjAsIDIxLCAyMDEsIDExNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDExNCwgCisgICAgMjAsIDIxLCAyMDEsIDExMywgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDExMywgMjAsIDIxLCAyMjAsIDExOSwgMjAxLCAxMTMsIAorICAgIDIwLCAyMSwgMjUxLCAxNzYsIDIwLCAyMSwgMjAwLCAxMjIsIDIwMSwgMTQ3LCAyMCwgMjEsIDIzNSwgMTIzLCAyMDgsIDc2LCAKKyAgICAyMCwgMjEsIDQ3LCAxNjksIDIwLCAyMSwgNDcsIDIzNSwgNzMsIDIwLCAyMSwgNDcsIDI0OCwgOTMsIDE2NywgMjEzLCAyNiwgCisgICAgMjAsIDIxLCA0NywgMjA1LCAxNTgsIDE2NywgMjEzLCAyNiwgMjAsIDIxLCA0NywgNTEsIDE2NywgMjEzLCAyNiwgMjAsIDIxLCAKKyAgICA0NywgMjEzLCAyNiwgMjAsIDIxLCA0NywgNTMsIDE2OSwgMjAsIDIxLCA0NywgNTMsIDIwOSwgMjUwLCA4MywgMjA4LCAzNCwgCisgICAgMjAsIDIxLCA0NywgMTAxLCAyNDAsIDE4MiwgMjAsIDIxLCA0NywgMjA5LCAyNTAsIDIzMywgMTc3LCA5NywgMjAsIDIxLCAKKyAgICA0NywgMjE1LCAxMTMsIDIwLCAyMSwgNDcsIDEyNywgMjA3LCAxNywgMjAsIDIxLCAyMzgsIDE3OSwgMjAsIDIxLCAyMjgsIAorICAgIDExNywgMjAsIDIxLCAyMTcsIDc4LCAyMCwgMjEsIDI1MSwgODUsIDIwLCAyMSwgMjE2LCA3MywgMjAsIDIxLCAyMTYsIDIwOCwgCisgICAgMjAsIDIxLCAyMTUsIDIwNCwgMjAsIDIxLCAyMTUsIDE2NiwgMjAsIDIxLCAyMTUsIDEwNiwgMjAsIDIxLCAyMTUsIDgxLCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMTUsIDgxLCAyMCwgMjEsIDg5LCAyMzQsIDEyMCwgMjAsIDIxLCA4OSwgMjM0LCA3NSwgMjAsIAorICAgIDIxLCAxNzIsIDIwLCAyMSwgMjE2LCAyMTAsIDIwLCAyMSwgMjE0LCAxODMsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODMsIAorICAgIDIwLCAyMSwgMjE0LCAxODEsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODEsIDIwLCAyMSwgMjE0LCAxODAsIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjE0LCAxODAsIDIwLCAyMSwgMjE0LCAxNzgsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxNzgsIDIwLCAyMSwgCisgICAgMjE0LCAxNzcsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxNzcsIDIwLCAyMSwgMjE0LCAxODUsIDIwLCAyMSwgMjAxLCA0NiwgCisgICAgMjE0LCAxODUsIDIwLCAyMSwgMjE0LCAxODQsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODQsIDIwLCAyMSwgMjAwLCAxMjIsIAorICAgIDIxNCwgMTg0LCAyMCwgMjEsIDIxNiwgMjI2LCAyMCwgMjEsIDIwMSwgNDYsIDIxNiwgMjI2LCAyMCwgMjEsIDg5LCAyMzQsIAorICAgIDI0NywgMjAsIDIxLCAyMDYsIDIwMSwgMjAsIDIxLCAyMDcsIDMwLCAyMCwgMjEsIDIwNiwgMTUsIDIwLCAyMSwgMjA1LCAKKyAgICAyNTUsIDIwLCAyMSwgMTM4LCAyMCwgMjEsIDIwNSwgMTYxLCAyMCwgMjEsIDIwMCwgMTIyLCAyMDUsIDE2MSwgMjAsIDIxLCAKKyAgICA4OSwgMjQxLCAxNjEsIDIwLCAyMSwgODksIDI0MSwgNzYsIDIwLCAyMSwgMjA3LCAzNiwgMjAsIDIxLCAyMDcsIDMyLCAyMCwgCisgICAgMjEsIDIwNCwgMTY4LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTY4LCAyMCwgMjEsIDIwNCwgMTQ3LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwNCwgMTQ3LCAyMCwgMjEsIDIwNCwgMTQ2LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTQ2LCAyMCwgMjEsIDEwNSwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAxMDUsIDIwLCAyMSwgMjA0LCAxMzcsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxMzcsIDIwLCAKKyAgICAyMSwgMjA0LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNzAsIDIwLCAyMSwgMjA0LCAxNjksIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA0LCAxNjksIDIwLCAyMSwgMjIwLCAxMTksIDIwNCwgMTY5LCAyMCwgMjEsIDIwNywgODMsIDIwLCAyMSwgMjA0LCAKKyAgICAyNDgsIDIwLCAyMSwgMjA0LCAyMzIsIDIwLCAyMSwgMjA0LCAyMzAsIDIwLCAyMSwgMjA0LCAyNTMsIDIwLCAyMSwgMjI3LCAKKyAgICA4LCAyMCwgMjEsIDIyNywgMTAwLCAyMCwgMjEsIDIyNiwgMTYzLCAyMCwgMjEsIDIyNiwgMTUwLCAyMCwgMjEsIDIyNiwgODgsIAorICAgIDIwLCAyMSwgMjI2LCA2OCwgMjAsIDIxLCAyMDAsIDEyMiwgMjI2LCA2OCwgMjAsIDIxLCAxNjEsIDIwLCAyMSwgMjI3LCAKKyAgICAxMDUsIDIwLCAyMSwgMjI1LCAyMjQsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjQsIDIwLCAyMSwgMjI1LCAyMjIsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjI1LCAyMjIsIDIwLCAyMSwgMjI1LCAyMjEsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjEsIDIwLCAKKyAgICAyMSwgMjI1LCAyMTksIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMTksIDIwLCAyMSwgMjI1LCAyMTgsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjI1LCAyMTgsIDIwLCAyMSwgMjI1LCAyMjksIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjksIDIwLCAyMSwgMjI1LCAKKyAgICAyMjgsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjgsIDIwLCAyMSwgMjIwLCAxMTksIDIyNSwgMjI4LCAyMCwgMjEsIDIyNywgCisgICAgMTE4LCAyMCwgMjEsIDIyNSwgMjMwLCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIDI1NCwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCAKKyAgICAxNTEsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgODIsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNywgODQsIDIwLCAyMSwgMjQ3LCAKKyAgICA3NiwgMjAsIDIxLCAyNDcsIDE4OCwgMjAsIDIxLCAyNDYsIDE3MywgMjAsIDIxLCAyNDYsIDE2MywgMjAsIDIxLCAyNDYsIAorICAgIDkxLCAyMCwgMjEsIDI0MywgMzAsIDIwLCAyMSwgMjAwLCAxMjIsIDI0MywgMzAsIDIwLCAyMSwgMjQ3LCAxOTAsIDIwLCAyMSwgCisgICAgMjQ3LCAxODksIDIwLCAyMSwgMjQyLCAxNzQsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzQsIDIwLCAyMSwgMjQyLCAxNzIsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzIsIDIwLCAyMSwgMjQyLCAxNzEsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzEsIAorICAgIDIwLCAyMSwgMjQyLCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzAsIDIwLCAyMSwgMjQyLCAxNjksIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjQyLCAxNjksIDIwLCAyMSwgMjQyLCAxNzYsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzYsIDIwLCAyMSwgCisgICAgMjQyLCAxNzUsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzUsIDIwLCAyMSwgMjIwLCAxMTksIDI0MiwgMTc1LCAyMCwgMjEsIAorICAgIDI0NywgMjIzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMDYsIDEyNCwgMjAsIDIxLCAyMjIsIDc2LCAyMCwgMjEsIDIyMiwgMjMyLCAKKyAgICAyMCwgMjEsIDIyMSwgMjExLCAyMCwgMjEsIDIyMSwgMTgxLCAyMCwgMjEsIDIyMSwgMTM2LCAyMCwgMjEsIDIyMSwgODcsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIyMSwgODcsIDIwLCAyMSwgMTc4LCAyMCwgMjEsIDIyMiwgMjMzLCAyMCwgMjEsIDIyMCwgCisgICAgMjI5LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI5LCAyMCwgMjEsIDIyMCwgMjI3LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgCisgICAgMjI3LCAyMCwgMjEsIDIyMCwgMjI2LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI2LCAyMCwgMjEsIDIyMCwgMjI1LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIyMCwgMjI1LCAyMCwgMjEsIDIyMCwgMjI0LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI0LCAyMCwgCisgICAgMjEsIDIyMCwgMjMxLCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjMxLCAyMCwgMjEsIDIyMCwgMjMwLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyMCwgMjMwLCAyMCwgMjEsIDIyMCwgMTE5LCAyMjAsIDIzMCwgMjAsIDIxLCAyMjMsIDI0MywgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjMsIDI0MywgMjAsIDIxLCAyMjEsIDIxNSwgMjAsIDIxLCAyNTAsIDE1MywgMjIzLCAyNDMsIDIwLCAyMSwgMjExLCAKKyAgICAyMzIsIDIyMywgMjQzLCAyMCwgMjEsIDIyMCwgMzQsIDIwLCAyMSwgMjIwLCAxNTYsIDIwLCAyMSwgMjE5LCAxNTAsIDIwLCAKKyAgICAyMSwgMjE5LCAxMjUsIDIwLCAyMSwgMjE4LCAyNDEsIDIwLCAyMSwgMjE4LCAyMjksIDIwLCAyMSwgMjAwLCAxMjIsIDIxOCwgCisgICAgMjI5LCAyMCwgMjEsIDE4OCwgMjAsIDIxLCAyMjAsIDE1NywgMjAsIDIxLCAyMTgsIDY3LCAyMCwgMjEsIDIwMSwgNDYsIAorICAgIDIxOCwgNjcsIDIwLCAyMSwgMjE4LCA2OSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTgsIDY5LCAyMCwgMjEsIDIxOCwgNjgsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjE4LCA2OCwgMjAsIDIxLCAyMjAsIDExOSwgMjE4LCA2OCwgMjAsIDIxLCAyMjAsIDIxNCwgMjAsIAorICAgIDIxLCA4OSwgMjE5LCAyNTUsIDIwLCAyMSwgMjE5LCAxNTUsIDIwLCAyMSwgMjI1LCA0MCwgMjAsIDIxLCAyMjUsIDE3NCwgCisgICAgMjAsIDIxLCAyMjQsIDIxMCwgMjAsIDIxLCAyMjQsIDE5MiwgMjAsIDIxLCAyMjQsIDExMCwgMjAsIDIxLCAyMjQsIDc4LCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMjQsIDc4LCAyMCwgMjEsIDE5NCwgMjAsIDIxLCAyMjUsIDE3NSwgMjAsIDIxLCAyMjQsIDgsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA4LCAyMCwgMjEsIDIyNCwgNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDcsIDIwLCAyMSwgCisgICAgMjI0LCA2LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNiwgMjAsIDIxLCAyMjQsIDUsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA1LCAKKyAgICAyMCwgMjEsIDIyNCwgNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDQsIDIwLCAyMSwgMjI0LCAxMCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjQsIDEwLCAyMCwgMjEsIDIyNCwgOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDksIDIwLCAyMSwgMTU2LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDE1NiwgMjAsIDIxLCAxNzksIDE1NiwgMjAsIDIxLCAyMTEsIDIwMiwgMjAsIDIxLCAyMTIsIDU5LCAKKyAgICAyMCwgMjEsIDIwOSwgMTgyLCAyMCwgMjEsIDIwOSwgMTYxLCAyMCwgMjEsIDIwOSwgMjksIDIwLCAyMSwgMjA5LCAxMCwgMjAsIAorICAgIDIxLCAyMDAsIDEyMiwgMjA5LCAxMCwgMjAsIDIxLCAyMTIsIDY0LCAyMCwgMjEsIDIxMiwgNjEsIDIwLCAyMSwgMjA3LCAKKyAgICAxODIsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxODIsIDIwLCAyMSwgMjA3LCAxNzYsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAKKyAgICAxNzYsIDIwLCAyMSwgMjA3LCAxNzUsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxNzUsIDIwLCAyMSwgMjA3LCAxNzEsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjA3LCAxNzEsIDIwLCAyMSwgMjA3LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxNzAsIDIwLCAKKyAgICAyMSwgMjA3LCAxODYsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxODYsIDIwLCAyMSwgMjA3LCAxODUsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA3LCAxODUsIDIwLCAyMSwgMjIwLCAxMTksIDIwNywgMTg1LCAyMCwgMjEsIDIxMiwgMTIyLCAyMCwgMjEsIDI1MCwgCisgICAgMTUzLCAyMTIsIDEyMiwgMjAsIDIxLCAyMDcsIDE4NywgMjAsIDIxLCAyNDgsIDE0MSwgMjEyLCAxMjIsIDIwLCAyMSwgMjIxLCAKKyAgICA4MCwgMjA5LCA4OCwgMjAsIDIxLCAyMjAsIDExOSwgMjA5LCA3OSwgMjAsIDIxLCAyMjAsIDExOSwgMjEyLCAxMjAsIDIwLCAKKyAgICAyMSwgMjIwLCAxMTksIDIwOCwgMTk1LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDgsIDI3LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDksIAorICAgIDc4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTEsIDIwNSwgMjAsIDIxLCAyMTAsIDY1LCAyMCwgMjEsIDIxMCwgMzMsIDIwLCAyMSwgCisgICAgMjEwLCAyOCwgMjAsIDIxLCAyMTAsIDgsIDIwLCAyMSwgMjEwLCAyLCAyMCwgMjEsIDIxMCwgMTE0LCAyMCwgMjEsIDIxMCwgCisgICAgMTA5LCAyMCwgMjEsIDIwOSwgMTk3LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk3LCAyMCwgMjEsIDIwOSwgMTk2LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIwOSwgMTk2LCAyMCwgMjEsIDIwOSwgMTk1LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk1LCAyMCwgCisgICAgMjEsIDIwOSwgMTk0LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk0LCAyMCwgMjEsIDIwOSwgMTkzLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwOSwgMTkzLCAyMCwgMjEsIDIwOSwgMjAwLCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMjAwLCAyMCwgMjEsIDIwOSwgCisgICAgMTk5LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk5LCAyMCwgMjEsIDIxMCwgMTE2LCAyMCwgMjEsIDIwMCwgNTEsIDIwLCAKKyAgICAyMSwgMjAwLCAxMDcsIDIwLCAyMSwgMjAwLCA5LCAyMCwgMjEsIDIwMCwgMCwgMjAsIDIxLCAxOTksIDI0NSwgMjAsIDIxLCAKKyAgICAxOTksIDIzMCwgMjAsIDIxLCAyMDAsIDEyMiwgMTk5LCAyMzAsIDIwLCAyMSwgMTgzLCAyMCwgMjEsIDIwMCwgMTA5LCAyMCwgCisgICAgMjEsIDE5OSwgMTcyLCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTcyLCAyMCwgMjEsIDE5OSwgMTcxLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDE5OSwgMTcxLCAyMCwgMjEsIDE5OSwgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTcwLCAyMCwgMjEsIDE5OSwgCisgICAgMTY5LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTY5LCAyMCwgMjEsIDE5OSwgMTY4LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgCisgICAgMTY4LCAyMCwgMjEsIDE5OSwgMTc0LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTc0LCAyMCwgMjEsIDE5OSwgMTczLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDE5OSwgMTczLCAyMCwgMjEsIDIyMCwgMTE5LCAxOTksIDE3MywgMjAsIDIxLCAyMDAsIDEyMywgMjAsIAorICAgIDIxLCAyNDgsIDE4NiwgMjAwLCAxMjMsIDIwLCAyMSwgMjAxLCA0NiwgMjAwLCAxMjMsIDIwLCAyMSwgMjExLCAyMzIsIDIwMCwgCisgICAgOSwgMjAsIDIxLCAyMTMsIDE5MCwgMjAsIDIxLCAyMTQsIDMyLCAyMTMsIDE5MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDQwLCAKKyAgICAyMCwgMjEsIDIxMywgMjQ3LCAyMCwgMjEsIDIxMywgODgsIDIwLCAyMSwgMjEzLCAzMywgMjAsIDIxLCAyMTMsIDEsIDIwLCAKKyAgICAyMSwgMjEyLCAyMzgsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCAxMTAsIDIwLCAyMSwgMjEzLCAyNTIsIDIwLCAyMSwgMjEzLCAKKyAgICAyNDgsIDIwLCAyMSwgMjAxLCA0NiwgMTk0LCAyMCwgMjEsIDIxMiwgMTM5LCAyMCwgMjEsIDIwMSwgNDYsIDIxMiwgMTM5LCAKKyAgICAyMCwgMjEsIDE0NiwgMjAsIDIxLCAyMDEsIDQ2LCAxNDYsIDIwLCAyMSwgMTc5LCAxNDYsIDIwLCAyMSwgMjM3LCAxNDcsIAorICAgIDIwLCAyMSwgMjM3LCAxOTIsIDIwLCAyMSwgMjM3LCAxMTIsIDIwLCAyMSwgMjM3LCA5OCwgMjAsIDIxLCAyMzcsIDEzLCAyMCwgCisgICAgMjEsIDIzNywgMiwgMjAsIDIxLCAyMzcsIDE5NSwgMjAsIDIxLCAyMzcsIDE5NCwgMjAsIDIxLCAyMzYsIDE2NiwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMzYsIDE2NiwgMjAsIDIxLCAyMzgsIDUsIDIwLCAyMSwgMjA2LCAxMDYsIDIwLCAyMSwgMjIwLCAyMTIsIAorICAgIDIwNiwgMTA2LCAyMCwgMjEsIDIwNiwgODQsIDIwLCAyMSwgMjIwLCAyMTIsIDIwNiwgODQsIDIwLCAyMSwgMjA2LCA3OCwgCisgICAgMjAsIDIxLCAyMjAsIDIxMiwgMjA2LCA3OCwgMjAsIDIxLCAyMDYsIDYxLCAyMCwgMjEsIDIwNiwgNTYsIDIwLCAyMSwgMjA2LCAKKyAgICAxMjIsIDIwLCAyMSwgMjA2LCAxMjEsIDIwLCAyMSwgMjA2LCAyNSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDYsIDI1LCAyMCwgMjEsIAorICAgIDIwNiwgMTI0LCAyMCwgMjEsIDIwNCwgMjM5LCAyMCwgMjEsIDIwNCwgMjM3LCAyMCwgMjEsIDIwNCwgMjM2LCAyMCwgMjEsIAorICAgIDIwNCwgMjQxLCAyMCwgMjEsIDIwNCwgMjQyLCAyMCwgMjEsIDIwNCwgMTMxLCAyMCwgMjEsIDIwNCwgMTMwLCAyMCwgMjEsIAorICAgIDIwNCwgMTI5LCAyMCwgMjEsIDIwNCwgMTMzLCAyMCwgMjEsIDIxOCwgODgsIDIzNCwgMTM5LCAyMCwgMjEsIDIxOCwgODgsIAorICAgIDIzNCwgNzUsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCA1NCwgMjAsIDIxLCAyMTgsIDg4LCAyMzMsIDIwNywgMjAsIDIxLCAKKyAgICAyMTgsIDg4LCAyMzMsIDE4OCwgMjAsIDIxLCAyMTgsIDg4LCAxNDQsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCAyMzMsIDIwLCAKKyAgICAyMSwgMjE4LCA4OCwgMjM0LCAyNDcsIDIwLCAyMSwgMjE4LCA4NywgMjM0LCAyNDcsIDIwLCAyMSwgMjM0LCA0MSwgMjAsIAorICAgIDIxLCAyMTQsIDE1NSwgMjAsIDIxLCAyMTQsIDEyMSwgMjAsIDIxLCAyMTQsIDExNSwgMjAsIDIxLCAyMTQsIDEwOSwgMjAsIAorICAgIDIxLCAyMTQsIDEwNCwgMjAsIDIxLCAyMTQsIDE1OSwgMjAsIDIxLCAyMTQsIDE1OCwgMjAsIDIxLCAyMTQsIDE2NywgMjAsIAorICAgIDIxLCAyMDUsIDE5OSwgMjAsIDIxLCAyMDUsIDE5NywgMjAsIDIxLCAyMDUsIDE5NiwgMjAsIDIxLCAyMDUsIDIwMCwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMTMsIDE5MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDg4LCAyMCwgMjEsIDIwMSwgNDYsIDIxMywgMSwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDI1MiwgMjAsIDIxLCAyMTksIDI1MSwgMjAsIDIxLCAyMTksIDIwMSwgMjAsIDIxLCAKKyAgICAyMTksIDE5NywgMjAsIDIxLCAyMTksIDE3OCwgMjAsIDIxLCAyMTksIDE3MywgMjAsIDIxLCAyMTksIDI1MywgMjAsIDIxLCAKKyAgICAyMTksIDI1MiwgMjAsIDIxLCAyMTksIDI1NSwgMjAsIDIxLCAyMTksIDE0LCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDY1LCAKKyAgICAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDMzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDgsIDIwLCAyMSwgMjExLCAyMzIsIAorICAgIDIxMCwgMTE0LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDEwNiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCA4NCwgMjAsIDIxLCAKKyAgICAyMDAsIDI0MiwgMjA2LCA2MSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAxMjIsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgCisgICAgMTI0LCAyMCwgMjEsIDIyNCwgMjE3LCAyMCwgMjEsIDIyNCwgMjE2LCAyMCwgMjEsIDIyNCwgMjE1LCAyMCwgMjEsIDIyNCwgCisgICAgMjE0LCAyMCwgMjEsIDIyNCwgMjIzLCAyMCwgMjEsIDIyNCwgMjIyLCAyMCwgMjEsIDIyNCwgMjI0LCAyMCwgMjEsIDIwNiwgCisgICAgMTIzLCAyMDYsIDEwNiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA4NCwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA3OCwgMjAsIAorICAgIDIxLCAyMDYsIDEyMywgMjA2LCA2MSwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA1NiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAKKyAgICAxMjIsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgMTIxLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDEyNCwgMjAsIDIxLCAyNTEsIAorICAgIDE2MiwgMjUwLCAxMDMsIDIwLCAyMSwgMjQ4LCAxNDEsIDcyLCAyMCwgMjEsIDI0OCwgMTQxLCA3MCwgMjAsIDIxLCAyNDgsIAorICAgIDE0MSwgNzQsIDIwLCAyMSwgMjQ4LCAxNDEsIDYyLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDY0LCAyMCwgMjEsIDI0OCwgCisgICAgMTQxLCAyMDEsIDMxLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDAsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMTE0LCAyMCwgCisgICAgMjEsIDI0OCwgMTQxLCAyMjAsIDM0LCAyMCwgMjEsIDI0OCwgMTQxLCAyMTksIDE1MCwgMjAsIDIxLCAyNDgsIDE0MSwgMjE4LCAKKyAgICAyNDEsIDIwLCAyMSwgMjQ4LCAxNDEsIDE4OCwgMjAsIDIxLCAyNDgsIDE0MSwgMjI3LCA4LCAyMCwgMjEsIDI0OCwgMTQxLCAKKyAgICAyMjYsIDE2MywgMjAsIDIxLCAyNDgsIDE0MSwgMjI2LCA4OCwgMjAsIDIxLCAyNDgsIDE0MSwgMTYxLCAyMCwgMjEsIDIxMSwgCisgICAgMjMyLCAyMzQsIDEzOSwgMjAsIDIxLCAyMTEsIDIzMiwgMjM0LCA3NSwgMjAsIDIxLCAyMTEsIDIzMiwgMjMzLCAyMDcsIDIwLCAKKyAgICAyMSwgMjExLCAyMzIsIDE0NCwgMjAsIDIxLCA4OSwgMjM1LCAxNjcsIDIwLCAyMSwgODksIDIzNSwgMTcxLCAyMCwgMjEsIAorICAgIDg5LCAyMzUsIDE4NSwgMjAsIDIxLCA4OSwgMjM1LCAxODQsIDIwLCAyMSwgODksIDIzNSwgMTczLCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDE5OSwgMjAsIDIxLCA4OSwgMjEyLCAxNzUsIDIwLCAyMSwgODksIDIxMywgMSwgMjAsIDIxLCA4OSwgMjEzLCAxOTAsIAorICAgIDIwLCAyMSwgODksIDIxMywgMTY3LCAyMCwgMjEsIDg5LCAyMTMsIDg4LCAyMCwgMjEsIDg5LCAyMTMsIDI1MiwgMjAsIDIxLCAKKyAgICA4OSwgMjAwLCAyMTYsIDIwLCAyMSwgODksIDIwMSwgMCwgMjAsIDIxLCA4OSwgMjAxLCA2NCwgMjAsIDIxLCA4OSwgMjAxLCAKKyAgICA1NywgMjAsIDIxLCA4OSwgMjAxLCAzMSwgMjAsIDIxLCA4OSwgMjAxLCAxMTQsIDIwLCAyMSwgODksIDIzMywgNjEsIDIwLCAKKyAgICAyMSwgODksIDIzMywgNjIsIDIwLCAyMSwgODksIDIzMywgNjUsIDIwLCAyMSwgODksIDIzMywgNjQsIDIwLCAyMSwgODksIAorICAgIDIzMywgNjMsIDIwLCAyMSwgODksIDIzMywgNjgsIDIwLCAyMSwgODksIDIwNiwgMzUsIDIwLCAyMSwgODksIDIwNiwgNjEsIAorICAgIDIwLCAyMSwgODksIDIwNiwgMTA2LCAyMCwgMjEsIDg5LCAyMDYsIDEwNCwgMjAsIDIxLCA4OSwgMjA2LCA4NCwgMjAsIDIxLCAKKyAgICA4OSwgMjA2LCAxMjIsIDIwLCAyMSwgODksIDIwNCwgMjIwLCAyMCwgMjEsIDg5LCAyMDQsIDIzMCwgMjAsIDIxLCA4OSwgCisgICAgMjA0LCAyNDgsIDIwLCAyMSwgODksIDIwNCwgMjQ3LCAyMCwgMjEsIDg5LCAyMDQsIDIzMiwgMjAsIDIxLCA4OSwgMjA0LCAKKyAgICAyNTMsIDIwLCAyMSwgODksIDIxNCwgMjI0LCAyMCwgMjEsIDg5LCAyMTUsIDEwNiwgMjAsIDIxLCA4OSwgMjE2LCA3MywgMjAsIAorICAgIDIxLCA4OSwgMjE2LCA2MSwgMjAsIDIxLCA4OSwgMjE1LCAyMDQsIDIwLCAyMSwgODksIDE3MiwgMjAsIDIxLCA4OSwgMjE2LCAKKyAgICAyMjYsIDIwLCAyMSwgODksIDIzNSwgNTAsIDIwLCAyMSwgODksIDIzNSwgMTE2LCAyMCwgMjEsIDg5LCAyMzYsIDE1LCAyMCwgCisgICAgMjEsIDg5LCAyMzYsIDcsIDIwLCAyMSwgODksIDIzNSwgMTYxLCAyMCwgMjEsIDg5LCAyMzYsIDg5LCAyMCwgMjEsIDg5LCAKKyAgICAyMjYsIDE3MiwgMjAsIDIxLCA4OSwgMjI2LCAxNzgsIDIwLCAyMSwgODksIDIyNiwgMTkyLCAyMCwgMjEsIDg5LCAyMjYsIAorICAgIDE5MSwgMjAsIDIxLCA4OSwgMjI2LCAxODUsIDIwLCAyMSwgODksIDIyNiwgMjA3LCAyMCwgMjEsIDg5LCAyMjYsIDEwNCwgCisgICAgMjAsIDIxLCA4OSwgMjI2LCAxMDUsIDIwLCAyMSwgODksIDIyNiwgMTA4LCAyMCwgMjEsIDg5LCAyMjYsIDEwNywgMjAsIDIxLCAKKyAgICA4OSwgMjI2LCAxMDYsIDIwLCAyMSwgODksIDIyNiwgMTA5LCAyMCwgMjEsIDg5LCAyMjYsIDExMCwgMjAsIDIxLCA4OSwgCisgICAgMjE4LCAxMzMsIDIwLCAyMSwgODksIDIxOCwgMjQxLCAyMCwgMjEsIDg5LCAyMjAsIDM0LCAyMCwgMjEsIDg5LCAyMjAsIDI5LCAKKyAgICAyMCwgMjEsIDg5LCAyMTksIDE1MCwgMjAsIDIxLCA4OSwgMTg4LCAyMCwgMjEsIDg5LCAyMjEsIDQxLCAyMCwgMjEsIDg5LCAKKyAgICAyMjEsIDEzNiwgMjAsIDIxLCA4OSwgMjIyLCA3NiwgMjAsIDIxLCA4OSwgMjIyLCA2NCwgMjAsIDIxLCA4OSwgMjIxLCAyMTEsIAorICAgIDIwLCAyMSwgODksIDE3OCwgMjAsIDIxLCA4OSwgMTk5LCAyMTEsIDIwLCAyMSwgODksIDE5OSwgMjQ1LCAyMCwgMjEsIDg5LCAKKyAgICAyMDAsIDUxLCAyMCwgMjEsIDg5LCAyMDAsIDQ4LCAyMCwgMjEsIDg5LCAyMDAsIDksIDIwLCAyMSwgODksIDE4MywgMjAsIAorICAgIDIxLCA4OSwgMjI3LCAxNDcsIDIwLCAyMSwgMjExLCAyMzIsIDIyNywgMTQ3LCAyMCwgMjEsIDg5LCAyMjcsIDE2NiwgMjAsIAorICAgIDIxLCA4OSwgMjI3LCAyMjcsIDIwLCAyMSwgODksIDIyNywgMjI1LCAyMCwgMjEsIDg5LCAyMjcsIDIwNywgMjAsIDIxLCAKKyAgICAyMTEsIDIzMiwgMjI3LCAyMDcsIDIwLCAyMSwgODksIDIyNywgMjQ4LCAyMCwgMjEsIDg5LCAyMjcsIDE3OSwgMjAsIDIxLCAKKyAgICA4OSwgMjI3LCAxODMsIDIwLCAyMSwgODksIDIyNywgMTkzLCAyMCwgMjEsIDg5LCAyMjcsIDE5MiwgMjAsIDIxLCA4OSwgCisgICAgMjI3LCAxOTEsIDIwLCAyMSwgODksIDIyNywgMTk0LCAyMCwgMjEsIDg5LCAyMjQsIDQyLCAyMCwgMjEsIDg5LCAyMjQsIAorICAgIDExMCwgMjAsIDIxLCA4OSwgMjI1LCA0MCwgMjAsIDIxLCA4OSwgMjI1LCAzMiwgMjAsIDIxLCA4OSwgMjI0LCAyMTAsIDIwLCAKKyAgICAyMSwgODksIDE5NCwgMjAsIDIxLCA4OSwgMjQwLCAyMTUsIDIwLCAyMSwgODksIDI0MCwgMjE2LCAyMCwgMjEsIDg5LCAyNDAsIAorICAgIDIyMSwgMjAsIDIxLCA4OSwgMjQwLCAyMjAsIDIwLCAyMSwgODksIDI0MCwgMjE3LCAyMCwgMjEsIDg5LCAyNDAsIDIyMiwgCisgICAgMjAsIDIxLCA4OSwgMjI0LCAyMTMsIDIwLCAyMSwgODksIDIyNCwgMjE1LCAyMCwgMjEsIDg5LCAyMjQsIDIxOSwgMjAsIDIxLCAKKyAgICA4OSwgMjI0LCAyMTgsIDIwLCAyMSwgODksIDIyNCwgMjE3LCAyMCwgMjEsIDg5LCAyMjQsIDIyMywgMjAsIDIxLCA4OSwgCisgICAgMjA1LCAxOTQsIDIwLCAyMSwgODksIDIwNSwgMTk2LCAyMCwgMjEsIDg5LCAyMDUsIDE5OSwgMjAsIDIxLCA4OSwgMjA1LCAKKyAgICAxOTgsIDIwLCAyMSwgODksIDIwNSwgMTk3LCAyMCwgMjEsIDg5LCAyMDUsIDIwMCwgMjAsIDIxLCA4OSwgMjA1LCAxODksIAorICAgIDIwLCAyMSwgODksIDIwNSwgMTkwLCAyMCwgMjEsIDg5LCAyMDUsIDIwMiwgMjAsIDIxLCA4OSwgMjA1LCAyMDEsIDIwLCAyMSwgCisgICAgODksIDIwNSwgMTkxLCAyMCwgMjEsIDg5LCAyMDUsIDIwMywgMjAsIDIxLCA4OSwgMTk5LCAzLCAyMCwgMjEsIDg5LCAxOTksIAorICAgIDE0LCAyMCwgMjEsIDg5LCAxOTksIDg5LCAyMCwgMjEsIDg5LCAxOTksIDg3LCAyMCwgMjEsIDg5LCAxOTksIDM2LCAyMCwgCisgICAgMjEsIDg5LCAxOTksIDExNCwgMjAsIDIxLCA4OSwgMTk5LCAxNTcsIDIwLCAyMSwgODksIDgyLCAxOTksIDE1NywgMjAsIDIxLCAKKyAgICA4OSwgMjM5LCA4MCwgMjAsIDIxLCA4OSwgMjM5LCA4MSwgMjAsIDIxLCA4OSwgMjM5LCA5MCwgMjAsIDIxLCA4OSwgMjM5LCAKKyAgICA4OSwgMjAsIDIxLCA4OSwgMjM5LCA4NCwgMjAsIDIxLCA4OSwgMjM5LCA5MywgMjAsIDIxLCA4OSwgMjA4LCAyNCwgMjAsIAorICAgIDIxLCA4OSwgMjA5LCAyOSwgMjAsIDIxLCA4OSwgMjExLCAyMDIsIDIwLCAyMSwgODksIDIxMSwgMTkwLCAyMCwgMjEsIDg5LCAKKyAgICAyMDksIDE4MiwgMjAsIDIxLCA4OSwgMjEyLCA2NCwgMjAsIDIxLCA4OSwgMjA5LCAyMjAsIDIwLCAyMSwgODksIDIxMCwgOCwgCisgICAgMjAsIDIxLCA4OSwgMjEwLCA2NSwgMjAsIDIxLCA4OSwgMjEwLCA2MywgMjAsIDIxLCA4OSwgMjEwLCAzMywgMjAsIDIxLCAKKyAgICA4OSwgMjEwLCAxMTQsIDIwLCAyMSwgODksIDIxMCwgMTE2LCAyMCwgMjEsIDg5LCAyMDUsIDUsIDIwLCAyMSwgODksIDIwNSwgCisgICAgOSwgMjAsIDIxLCA4OSwgMjA1LCAyNiwgMjAsIDIxLCA4OSwgMjA1LCAyNSwgMjAsIDIxLCA4OSwgMjA1LCAxMSwgMjAsIDIxLCAKKyAgICA4OSwgMjA1LCAzMiwgMjAsIDIxLCA4OSwgMjQ2LCAxOTIsIDIwLCAyMSwgODksIDI0NiwgMjEwLCAyMCwgMjEsIDg5LCAyNDcsIAorICAgIDgsIDIwLCAyMSwgODksIDI0NywgNCwgMjAsIDIxLCA4OSwgMjQ2LCAyMzYsIDIwLCAyMSwgODksIDI0NywgMzcsIDIwLCAyMSwgCisgICAgODksIDIwNCwgMjIzLCAyMCwgMjEsIDg5LCAyMDQsIDIyNCwgMjAsIDIxLCA4OSwgMjA0LCAyMjcsIDIwLCAyMSwgODksIAorICAgIDIwNCwgMjI2LCAyMCwgMjEsIDg5LCAyMDQsIDIyNSwgMjAsIDIxLCA4OSwgMjA0LCAyMjgsIDIwLCAyMSwgMjQ2LCAyMzcsIAorICAgIDU0LCAyMCwgMjEsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMCwgMjEsIDIxNCwgMTUxLCAyMCwgMjEsIDIxOSwgMjQ5LCAyMCwgCisgICAgMjEsIDIxOSwgMTEsIDIwLCAyMSwgMjE5LCAxMCwgMjAsIDIxLCAyMTksIDksIDIwLCAyMSwgMjE5LCA4LCAyMCwgMjEsIAorICAgIDIxOSwgMTMsIDIwLCAyMSwgMjE5LCAxMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMywgMjAsIDIxLCAyMDAsIDI0MiwgCisgICAgMjA2LCAyMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMCwgMjAsIDIxLCAKKyAgICAyMDAsIDI0MiwgMjA2LCAxOSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyNiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyNSwgCisgICAgMjAsIDIxLCAyMDAsIDI0MiwgNDcsIDIwNiwgMTI0LCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDE0NywgMjE3LCAxMTIsIAorICAgIDIwOCwgMjQ1LCA4MSwgMjE3LCAxMTIsIDEsIDI0OCwgMjM0LCAyMTcsIDExMiwgMSwgMjI0LCAyOCwgMjE3LCAxMTIsIDEsIAorICAgIDIzNywgMTQ0LCAyMTcsIDExMiwgMSwgMjEyLCA0NCwgMjE3LCAxMTIsIDEsIDIxOSwgMTA2LCAyMTcsIDExMiwgMSwgMjA0LCAKKyAgICA0MywgMjE3LCAxMTIsIDEsIDI0MiwgMzEsIDIxNywgMTEyLCAxLCAyMDUsIDIyNywgMjE3LCAxMTIsIDEsIDI0NiwgODIsIAorICAgIDIxNywgMTEyLCAxLCAyNDcsIDYzLCAyMTcsIDExMiwgMSwgMjIxLCAyOCwgMjE3LCAxMTIsIDEsIDIzNSwgOTYsIDIxNywgCisgICAgMTEyLCAxLCAyMTksIDIzOSwgMjE3LCAxMTIsIDEsIDIwOCwgNjksIDIxNywgMTEyLCAxLCAyMTIsIDE2OCwgMjE3LCAxMTIsIAorICAgIDEsIDI1MSwgMTczLCAyMTcsIDExMiwgMSwgMjE3LCA2NywgMjE3LCAxMTIsIDEsIDIwMywgMjE0LCAyMTcsIDExMiwgMSwgCisgICAgMjM5LCAyNSwgMjE3LCAxMTIsIDEsIDIyOCwgNDQsIDIxNywgMTEyLCAxLCAyMzksIDI2LCAyMTcsIDExMiwgMSwgMjE3LCAKKyAgICAzMywgMjE3LCAxMTIsIDEsIDIwNCwgMjEsIDIxNywgMTEyLCAxLCAyMjgsIDE1NywgMjE3LCAxMTIsIDEsIDIzOSwgMjMsIAorICAgIDIxNywgMTEyLCAxLCAyMTYsIDUxLCAyMTcsIDExMiwgMjM3LCAxNDMsIDgxLCAyMTcsIDExMiwgMjEzLCAxMDUsIDIzNywgCisgICAgMTQzLCA4MSwgMjEyLCAxNTcsIDEsIDIzNywgMTMzLCAyMzcsIDEyNCwgMjM3LCAxNDgsIDIzOCwgNSwgMjEyLCAxNTcsIDEsIAorICAgIDIwMywgMTY4LCAyMTIsIDE1NywgMSwgMjAzLCAxOTksIDIwMywgMjE1LCA2NiwgMjEyLCAxNTcsIDEsIDE5OSwgMjE0LCAKKyAgICAyMTIsIDE1NywgMSwgMjAwLCAxMjMsIDIxMiwgMTU3LCAxLCAyMDEsIDE0NywgMjEyLCAxNTcsIDEsIDIwNiwgMjgsIDIwNiwgCisgICAgMjcsIDIwNiwgNTQsIDIxMiwgMTU3LCAxLCAyMzgsIDc0LCAyMTIsIDE1NywgMSwgMjUxLCA1MiwgNjIsIDIxMiwgMTU3LCAxLCAKKyAgICAyMTcsIDE2LCA3NCwgMjEyLCAxNTcsIDEsIDI1MSwgMjU1LCA2MiwgMjEyLCAxNTcsIDEsIDI1MSwgMjA1LCAyMTIsIDE1NywgCisgICAgMSwgMjI0LCA4NSwgNzQsIDIxMiwgMTU3LCAxLCAyMDksIDI0MywgNzQsIDIxMiwgMTU3LCAxLCA3NCwgMjEyLCAxNTcsIDEsIAorICAgIDIxNywgMTIxLCAyMTIsIDE1NywgMSwgMjE3LCA3OCwgMjEyLCAxNTcsIDEsIDIxMywgMjI3LCAyMTMsIDI0MCwgMjEzLCAKKyAgICAxNTIsIDE0NiwgMjEyLCAxNTcsIDEsIDIyNywgMjMsIDIxMiwgMTU3LCAxLCAyNDcsIDU5LCAyMTIsIDE1NywgMSwgMjI3LCAKKyAgICAyNCwgMjI3LCAxMTgsIDIxMiwgMTU3LCAxLCAyMzYsIDE1NiwgMjEyLCAxNTcsIDEsIDIzOCwgMTY1LCAyMTIsIDE1NywgMSwgCisgICAgMjM2LCAxMCwgMjM0LCAyNTMsIDIzNiwgMTU2LCAyMTIsIDE1NywgMSwgMjM2LCA0OSwgMjEyLCAxNTcsIDEsIDIwMCwgMjA4LCAKKyAgICAyMDAsIDE5OSwgMjAxLCAxNDcsIDIxMiwgMTU3LCAxLCAyMzQsIDIyNSwgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMzQsIAorICAgIDIyOSwgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMjQsIDg3LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIwOSwgMjQ2LCAKKyAgICAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIyMCwgMTE0LCAyMTgsIDUxLCAyMjAsIDExNSwgMjIwLCAyMTQsIDIxMiwgMTU3LCAKKyAgICAxLCAyMDksIDI0NCwgMjIwLCAyMTQsIDIxMiwgMTU3LCAxLCAyMzksIDE3NywgMjEyLCAxNTcsIDEsIDIyOCwgMjMsIDIyOCwgCisgICAgMjcsIDIyOCwgMTQsIDcwLCAyMTIsIDE1NywgMSwgNzIsIDIxMiwgMTU3LCAxLCAyMjcsIDIxOCwgMjI3LCAyNTEsIDIxMiwgCisgICAgMTU3LCAxLCAyMzUsIDI0OSwgMjEyLCAxNTcsIDEsIDIyNCwgODgsIDI1MSwgMjIxLCAyMTIsIDE1NywgMSwgMjA5LCAyNDgsIAorICAgIDYyLCAyMTIsIDE1NywgMSwgMjI4LCA2LCAyMzgsIDEzOCwgMjEyLCAxNTcsIDEsIDIxNiwgNywgMjE2LCAzMiwgMjE2LCAKKyAgICAyMjYsIDIxMiwgMTU3LCAxLCAyNTEsIDEzNSwgMjM4LCAxMzYsIDIxMiwgMTU3LCAxLCAyMDgsIDI1MCwgMjEyLCAxMjIsIAorICAgIDIxMiwgMTU3LCAxLCAyMDksIDE2NSwgMjI0LCA4NCwgMjEyLCAxMjIsIDIxMiwgMTU3LCAxLCAyMDksIDI0MiwgMjEyLCAKKyAgICAxMjIsIDIxMiwgMTU3LCAxLCAyNDcsIDIyMywgMjEyLCAxNTcsIDEsIDE5OSwgMTU3LCAyMTIsIDE1NywgMSwgMjA1LCAyMDgsIAorICAgIDIwNSwgMjIwLCAyMDQsIDExNSwgMjA3LCA4MywgMjEyLCAxNTcsIDEsIDIwOSwgMjQxLCAyMDcsIDgzLCAyMTIsIDE1NywgMSwgCisgICAgMjQyLCAxNTMsIDIxMiwgMTU3LCAxLCAyNDgsIDIxMywgMjQ4LCAyMTYsIDI0OCwgMTQ3LCAyNTAsIDEwMywgMjEyLCAxNTcsIAorICAgIDEsIDIwOSwgMjQ3LCAyNTAsIDEwMywgMjEyLCAxNTcsIDEsIDIzOSwgMTc2LCAyMTIsIDE1NywgMSwgMjE3LCA0NywgMjEyLCAKKyAgICAxNTcsIDEsIDIzOCwgMjM1LCAyMzgsIDI0MiwgNzIsIDIxMiwgMTU3LCAxLCAyMjIsIDE3MSwgMjIyLCAxODEsIDIyMywgCisgICAgMjQzLCAyMTIsIDE1NywgMSwgMjI0LCA4NiwgMjIzLCAyNDMsIDIxMiwgMTU3LCAxLCAyMDksIDI0NSwgMjIzLCAyNDMsIAorICAgIDIxMiwgMTU3LCAxLCAyMjUsIDU1LCAyMjUsIDE1NCwgMjI0LCA5NSwgMTU2LCAyMTIsIDE1NywgMSwgMjM5LCAxNzgsIDIxMiwgCisgICAgMTU3LCAxLCAyMjgsIDkwLCAyMTIsIDE1NywgMSwgMjI4LCA5MSwgMjEyLCAxNTcsIDEsIDI0MiwgNDUsIDI0MiwgNTEsIAorICAgIDI0MiwgMTUzLCAyMTIsIDE1NywgMSwgMjE3LCA5LCAyMzgsIDczLCA3NCwgMjEyLCAxNTcsIDEsIDIzOSwgMjEsIDIxMiwgCisgICAgMTU3LCAxLCAyMjgsIDQzLCAyMTIsIDE1NywgMSwgMjQyLCAxNzMsIDIxMiwgMTU3LCAxLCAyNDcsIDE3MywgMjEyLCAxNTcsIAorICAgIDEsIDI0NywgNzUsIDIxMiwgMTU3LCAxLCAyMDgsIDExNCwgMjEyLCAxNTcsIDEsIDIyNCwgODMsIDIxMiwgMTU3LCAxLCAKKyAgICAyMDksIDI0MCwgMjEyLCAxNTcsIDEsIDIzMiwgMjMwLCAyMTIsIDE1NywgMSwgMjE0LCAxNjcsIDIxMiwgMTU3LCAxLCAyMDAsIAorICAgIDE5NSwgMjEyLCAxNTcsIDIwOSwgMTM5LCAyMTQsIDIxMSwgMjEyLCAxNTcsIDIyMSwgMjEsIDIxNCwgMjExLCAyMTIsIDE1NywgCisgICAgMjQyLCAyMzUsIDIxNCwgMjExLCAyMTIsIDE1NywgMjUwLCAyMTYsIDk5LCAyMTIsIDE1NywgMjA0LCAxNzIsIDk5LCAyMTIsIAorICAgIDE1NywgMjQ4LCAyMzIsIDk5LCAyMTIsIDE1NywgMSwgMjI3LCAxMTgsIDIxMiwgMTU3LCAxLCAyMTAsIDExNiwgMjEyLCAKKyAgICAxNTcsIDEsIDIxNywgNjMsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIxNywgMTUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIyOCwgMjYsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIzOCwgMjQxLCAKKyAgICAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgMTE0LCAyNTEsIDI1NCwgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIAorICAgIDExNCwgMjUxLCAyMDUsIDIwNywgMTIsIDEsIDYyLCAyMDcsIDEyLCAxLCA3MCwgMjA3LCAxMiwgMSwgNjYsIDIwNywgMTIsIAorICAgIDEsIDE2MSwgMjA3LCAxMiwgMSwgMjM2LCA4OSwgMjA3LCAxMiwgMSwgMjE5LCAyNTMsIDIwNywgMTIsIDEsIDIwNywgMzYsIAorICAgIDIwNywgMTIsIDEsIDI0MiwgNTgsIDIwNywgMTIsIDEsIDE4OCwgMjA3LCAxMiwgMSwgMTcyLCAyMDcsIDEyLCAxLCAyNDksIAorICAgIDEzNiwgMjA3LCAxMiwgMSwgMTc4LCAyMDcsIDEyLCAxLCAxODMsIDIwNywgMTIsIDEsIDE5NCwgMjA3LCAxMiwgMSwgMjAxLCAKKyAgICAxMTQsIDIwNywgMTIsIDEsIDIxMiwgNjQsIDIwNywgMTIsIDEsIDE0NCwgMjA3LCAxMiwgMjIsIDIsIDcwLCAyMDcsIDEyLCAKKyAgICAyMiwgMiwgNjYsIDIwNywgMTIsIDIsIDIwMiwgMjA4LCAyMzQsIDE3MCwgMSwgNjIsIDIzNCwgMTcwLCAxLCA3MCwgMjM0LCAKKyAgICAxNzAsIDEsIDY2LCAyMzQsIDE3MCwgMSwgMTYxLCAyMzQsIDE3MCwgMSwgMjM2LCA4OSwgMjM0LCAxNzAsIDEsIDIxOSwgCisgICAgMjUzLCAyMzQsIDE3MCwgMSwgMjA3LCAzNiwgMjM0LCAxNzAsIDEsIDI0MiwgNTgsIDIzNCwgMTcwLCAxLCAxODgsIDIzNCwgCisgICAgMTcwLCAxLCAxNzIsIDIzNCwgMTcwLCAxLCAyNDksIDEzNiwgMjM0LCAxNzAsIDEsIDE3OCwgMjM0LCAxNzAsIDEsIDE4MywgCisgICAgMjM0LCAxNzAsIDEsIDIxMywgMjUyLCAyMzQsIDE3MCwgMSwgMTk0LCAyMzQsIDE3MCwgMSwgMjAxLCAxMTQsIDIzNCwgMTcwLCAKKyAgICAxLCAyMTIsIDY0LCAyMzQsIDE3MCwgMSwgMTQ0LCAyMzQsIDE3MCwgMjIsIDIsIDcwLCAyMzQsIDE3MCwgMjIsIDIsIDY2LCAKKyAgICAyMzQsIDE3MCwgMiwgMjE2LCAxNjUsIDIxNSwgMjIyLCAyMDksIDEzOSwgMjE0LCAyMTEsIDIxNSwgMjIyLCA1MywgMjE0LCAKKyAgICAyMTEsIDI0OCwgMjgsIDEsIDYyLCAyNDgsIDI4LCAxLCA3MCwgMjQ4LCAyOCwgMSwgNjYsIDI0OCwgMjgsIDEsIDE2MSwgCisgICAgMjQ4LCAyOCwgMSwgMjM2LCA4OSwgMjQ4LCAyOCwgMSwgMjE5LCAyNTMsIDI0OCwgMjgsIDEsIDIwNywgMzYsIDI0OCwgMjgsIAorICAgIDEsIDI0MiwgNTgsIDI0OCwgMjgsIDEsIDE4OCwgMjQ4LCAyOCwgMSwgMTcyLCAyNDgsIDI4LCAxLCAyNDksIDEzNiwgMjQ4LCAKKyAgICAyOCwgMSwgMTc4LCAyNDgsIDI4LCAxLCAxODMsIDI0OCwgMjgsIDEsIDIxMywgMjUyLCAyNDgsIDI4LCAxLCAxOTQsIDI0OCwgCisgICAgMjgsIDEsIDIwMSwgMTE0LCAyNDgsIDI4LCAxLCAyMTIsIDY0LCAyNDgsIDI4LCAxLCAxNDQsIDI0OCwgMjgsIDIyLCAyLCAKKyAgICA3MCwgMjQ4LCAyOCwgMjIsIDIsIDY2LCAyMDcsIDExLCAxLCA2MiwgMjA3LCAxMSwgMSwgNzAsIDIwNywgMTEsIDEsIDY2LCAKKyAgICAyMDcsIDExLCAxLCAxNjEsIDIwNywgMTEsIDEsIDIzNiwgODksIDIwNywgMTEsIDEsIDIxOSwgMjUzLCAyMDcsIDExLCAxLCAKKyAgICAyMDcsIDM2LCAyMDcsIDExLCAxLCAyNDIsIDU4LCAyMDcsIDExLCAxLCAxODgsIDIwNywgMTEsIDEsIDE3MiwgMjA3LCAxMSwgCisgICAgMSwgMjQ5LCAxMzYsIDIwNywgMTEsIDEsIDE3OCwgMjA3LCAxMSwgMSwgMTgzLCAyMDcsIDExLCAxLCAxOTQsIDIwNywgMTEsIAorICAgIDEsIDIwMSwgMTE0LCAyMDcsIDExLCAxLCAyMTIsIDY0LCAyMDcsIDExLCAyMiwgMiwgNzAsIDIwNywgMTEsIDIyLCAyLCA2NiwgCisgICAgODYsIDEsIDE2MSwgODYsIDEsIDIyNiwgMjA3LCA4NiwgMSwgMjI2LCA4OCwgODYsIDEsIDIyNiwgMTc4LCA4NiwgMSwgMjE5LCAKKyAgICAxNzgsIDg2LCAxLCAyNDcsIDE5MCwgODYsIDEsIDI0NywgMzcsIDg2LCAxLCAyNDYsIDkxLCA4NiwgMSwgMjQ2LCAyMTAsIAorICAgIDg2LCAxLCAyMTgsIDI2LCA4NiwgMSwgMjQyLCA1OCwgODYsIDEsIDIwNCwgMjQxLCA4NiwgMSwgMjQwLCAyMTEsIDg2LCAxLCAKKyAgICAyMDQsIDIzNiwgODYsIDEsIDIxOCwgMjQ3LCA4NiwgMSwgMjA3LCAzNiwgODYsIDEsIDIwNiwgMTIyLCA4NiwgMSwgMTM4LCAKKyAgICA4NiwgMSwgMjA2LCA2MSwgODYsIDEsIDIxOCwgMjQxLCA4NiwgMSwgMjQ5LCAxMzYsIDg2LCAxLCAyMTUsIDI0NSwgODYsIDEsIAorICAgIDIxNSwgMTA2LCA4NiwgMSwgMjE1LCAyMTcsIDg2LCAxLCAyMjEsIDEzNiwgODYsIDEsIDE5OSwgMjQ1LCA4NiwgMSwgMjEzLCAKKyAgICAxLCA4NiwgMSwgMjI0LCAxMTAsIDg2LCAxLCAyMDIsIDE5MywgODYsIDEsIDIxMCwgMTE0LCA4NiwgMSwgMjA4LCAxMzksIAorICAgIDg2LCAxLCAyMTIsIDY0LCA4NiwgMSwgMTQ0LCA4NiwgMSwgMTk0LCA4NiwgMSwgMjE0LCAxNTksIDg2LCAyMjgsIDEwNCwgCisgICAgMjIsIDIxNCwgMTQ1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDE1OCwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMjEsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIxNCwgMTE1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDk3LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIAorICAgIDY3LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDU1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDU0LCA4NiwgMjI4LCAxMDQsIAorICAgIDIyLCAyMTIsIDEzMSwgODYsIDIyOCwgMTA0LCAyMiwgMjEyLCAxMjQsIDg2LCAyMjgsIDEwNCwgMjIsIDIyNCwgMiwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMjIzLCAyNDYsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTM5LCA4NiwgMjI4LCAxMDQsIDIyLCAKKyAgICAyMTQsIDE1MSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMDUsIDIwNCwgMTI4LCAxMDIsIDg2LCAyMjgsIDEwNCwgMjIsIAorICAgIDIxNCwgMTA1LCAyMDQsIDEyOCwgMTA1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDE0MSwgODYsIDIyLCAyMjgsIDg4LCAKKyAgICAyNTEsIDEsIDg2LCAyMiwgMjI4LCA4OCwgMjUyLCAxMzgsIDg2LCAyMiwgMiwgMjUyLCAxMzgsIDg2LCAyMiwgMiwgNzAsIAorICAgIDg2LCAyMiwgMiwgMjI4LCAxNTEsIDg2LCAyMiwgMiwgMjAwLCAxMjMsIDg2LCAyMiwgMiwgMTk5LCAxNjcsIDg2LCAyMiwgMiwgCisgICAgNjYsIDg2LCAyMiwgMiwgMjAzLCAxODIsIDg2LCAyMiwgMiwgMjA0LCA0NiwgODYsIDIyLCAyLCAyMTcsIDEyMSwgODYsIDIyLCAKKyAgICAyLCAxODMsIDg2LCAyMiwgMiwgMjI4LCAxNzgsIDg2LCAyMiwgMiwgNzIsIDg2LCAyMiwgMiwgMjUxLCAyMjEsIDg2LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDg2LCAyMiwgMiwgMjE3LCA2MywgODYsIDIyLCAyLCAyNTAsIDEzOSwgODYsIDIsIDIxOSwgMTIzLCAKKyAgICA4NiwgMiwgMjEzLCAxODgsIDg2LCAyLCAxOTksIDE3OCwgODYsIDIsIDIyMCwgMjQxLCA4NiwgMiwgMjA1LCA4NiwgODYsIDIsIAorICAgIDI0OSwgNzksIDg2LCAyLCAyMTIsIDI1MiwgODYsIDIsIDIwNSwgMTg0LCA4NiwgMiwgMjI3LCA3NSwgODYsIDIsIDI1MSwgCisgICAgMTc4LCA4NiwgMiwgMjEyLCAxNCwgMjEyLCA3LCA4NiwgMiwgMjAyLCAyMDUsIDg2LCAyLCAyNDYsIDg1LCA4NiwgMiwgMjQ5LCAKKyAgICA1MSwgODYsIDIsIDIyNiwgMTk5LCA4NiwgMiwgMjQ5LCA3NCwgODYsIDIsIDI0NywgMTYxLCAyMTUsIDE2NywgMjI1LCAyMzUsIAorICAgIDg2LCAyLCAyMjUsIDksIDIwNSwgMTYxLCA4NiwgMiwgMjQ4LCAyMDIsIDg2LCAyLCAyMTUsIDIxOSwgMjIxLCAzOCwgODYsIAorICAgIDIsIDIyNiwgNjYsIDg2LCAyNDIsIDE5NSwgMTYsIDIxMywgODAsIDg2LCAyLCAyNTAsIDEyMSwgODYsIDIsIDI1MCwgMTQyLCAKKyAgICA4NiwgMTcsIDE5OSwgODEsIDg2LCAxNywgMTAyLCA4NiwgMTcsIDEwNSwgODYsIDE3LCAxNDcsIDg2LCAxNywgMTQ5LCA4NiwgCisgICAgMTcsIDE2NCwgODYsIDE3LCAxODcsIDg2LCAxNywgMjEwLCAxMzUsIDg2LCAxNywgMTkyLCA4NiwgMTcsIDIxOSwgMTEzLCAKKyAgICA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIwOSwgMTMsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjIxLCA1LCA4NiwgCisgICAgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMTY2LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDI0OCwgMjM1LCA4NiwgCisgICAgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDI0OCwgOCwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDQyLCA4NiwgMTYsIAorICAgIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzYsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzNCwgODYsIDE2LCAKKyAgICAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDQwLCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzgsIDkyLCAyNDgsIAorICAgIDE2MCwgOTIsIDIzOCwgMTk1LCA5MiwgMjQ2LCA3MCwgOTIsIDIzNiwgMTgzLCAyMDgsIDc2LCA5MiwgMjQ2LCA3OSwgOTIsIAorICAgIDIzNiwgMjI5LCAyNDAsIDE4MCwgOTIsIDIwNSwgMTgzLCAyMDksIDIzLCAyMzMsIDMzLCA5MiwgMjA5LCAxODAsIDUsIDI0OCwgCisgICAgODksIDIyMiwgMTQ1LCA5MiwgMjIyLCAxNzcsIDI0NiwgNzAsIDkyLCAyMjIsIDE3NywgMjM2LCAxODMsIDIwOCwgNzYsIDkyLCAKKyAgICAyMTksIDEwNCwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIDEwMiwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIAorICAgIDEwNSwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIDE0NywgOTIsIDIyLCAyMTAsIDE1NCwgOTIsIDE3LCAxOTksIDgxLCAKKyAgICA5MiwgMTcsIDEwMiwgOTIsIDE3LCAxMDUsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNjQsIDkyLCAxNywgCisgICAgMTg3LCA5MiwgMTcsIDIxMCwgMTM1LCA5MiwgMTcsIDE5MiwgOTIsIDE3LCAyMTksIDExMywgOTIsIDEsIDYyLCA5MiwgMSwgCisgICAgNzIsIDkyLCAxLCA3MCwgOTIsIDEsIDc0LCA5MiwgMSwgNjYsIDkyLCAxLCAyMTcsIDEyMSwgOTIsIDEsIDIwNCwgMzEsIDkyLCAKKyAgICAxLCAyMzgsIDI1NSwgOTIsIDEsIDE4OCwgOTIsIDEsIDI1MSwgNzYsIDkyLCAxLCAyNDksIDEzNiwgOTIsIDEsIDE3MiwgOTIsIAorICAgIDEsIDIxNCwgMTU5LCA5MiwgMSwgMjM2LCA4OSwgOTIsIDEsIDE3OCwgOTIsIDEsIDE5NCwgOTIsIDEsIDIxMiwgNjQsIDkyLCAKKyAgICAxLCAyMTAsIDExNCwgOTIsIDEsIDIwNywgMzYsIDkyLCAxLCAyNDIsIDU4LCA5MiwgMSwgMjQ3LCAzNywgOTIsIDEsIDIyNywgCisgICAgMjQ4LCA5MiwgMSwgMTgzLCA5MiwgMSwgMjEzLCAyNTIsIDkyLCAxLCAyMDEsIDExNCwgOTIsIDEsIDIzNywgMTk1LCA5MiwgCisgICAgMSwgMTYxLCA5MiwgMSwgMjI2LCAyMDcsIDkyLCAxLCAyMDUsIDMyLCA5MiwgMSwgMTk5LCAxMTQsIDkyLCAxLCAyMzQsIAorICAgIDIzMywgOTIsIDEsIDE5OSwgNywgOTIsIDEsIDIyNCwgMjIzLCA5MiwgMSwgMTk5LCA2MywgOTIsIDEsIDI0NiwgMjM2LCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDE2OCwgMjIsIDU0LCA5MiwgMSwgMjA1LCAxODMsIDcyLCA5MiwgMSwgMjA1LCAxODMsIDcwLCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDc0LCA5MiwgMSwgMjA1LCAxODMsIDY2LCA5MiwgMSwgMjA1LCAxODMsIDIxNywgMTIxLCA5MiwgMSwgCisgICAgMjA1LCAxODMsIDIwNCwgMzEsIDkyLCAxLCAyMDUsIDE4MywgMjUxLCA3NiwgOTIsIDEsIDIwNSwgMTgzLCAyNDksIDEzNiwgCisgICAgOTIsIDEsIDIwNSwgMTgzLCAxNzIsIDkyLCAxLCAyMDUsIDE4MywgMjE0LCAxNTksIDkyLCAxLCAyMDUsIDE4MywgMjM2LCAKKyAgICA4OSwgOTIsIDEsIDIwNSwgMTgzLCAxNzgsIDkyLCAxLCAyMDUsIDE4MywgMjA3LCAzNiwgOTIsIDEsIDIwNSwgMTgzLCAyNDIsIAorICAgIDU4LCA5MiwgMSwgMjA1LCAxODMsIDI0NywgMzcsIDkyLCAxLCAyMDUsIDE4MywgMjI3LCAyNDgsIDkyLCAxLCAyMDUsIDE4MywgCisgICAgMjA1LCAzMiwgOTIsIDEsIDIwNSwgMTgzLCAxODMsIDkyLCAxLCAyMDUsIDE4MywgMjAxLCAxMTQsIDkyLCAxLCAyMDUsIAorICAgIDE4MywgMTYxLCA5MiwgMSwgMjA1LCAxODMsIDIzNiwgODYsIDkyLCAxLCAyMDUsIDE4MywgMjM0LCAyMzMsIDkyLCAxLCAKKyAgICAyMDUsIDE4MywgMjI3LCAyMDYsIDkyLCAxLCAyMDUsIDE4MywgMjE5LCAxNDgsIDkyLCAxLCAyMDUsIDE4MywgMjM5LCA5MywgCisgICAgOTIsIDEsIDIwOSwgMTgwLCA3MiwgOTIsIDEsIDIwOSwgMTgwLCA3MCwgOTIsIDEsIDIwOSwgMTgwLCAyMjgsIDMsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMjA0LCAzMSwgOTIsIDEsIDIwOSwgMTgwLCA2NiwgOTIsIDEsIDIwOSwgMTgwLCAyNTEsIDc2LCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDE2MSwgOTIsIDEsIDIwOSwgMTgwLCAyMzYsIDg5LCA5MiwgMSwgMjA5LCAxODAsIDE0NCwgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAxNzIsIDkyLCAxLCAyMDksIDE4MCwgMjEwLCAxMTQsIDkyLCAxLCAyMDksIDE4MCwgMjA3LCAzNiwgOTIsIAorICAgIDEsIDIwOSwgMTgwLCAyNDIsIDU4LCA5MiwgMSwgMjA5LCAxODAsIDIyNywgMjQ4LCA5MiwgMSwgMjA5LCAxODAsIDIzNywgCisgICAgMTk1LCA5MiwgMSwgMjA5LCAxODAsIDIzNiwgODYsIDkyLCAxLCAyMDksIDE4MCwgMjM0LCAyMzMsIDkyLCAxLCAyMDksIAorICAgIDE4MCwgMjA1LCAzMiwgOTIsIDEsIDIwOSwgMTgwLCAxOTksIDExNCwgOTIsIDEsIDIwOSwgMTgwLCAyMTMsIDI0OCwgOTIsIAorICAgIDEsIDIwOSwgMTgwLCAyNDcsIDM3LCA5MiwgMSwgMjA5LCAxODAsIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgNzAsIDkyLCAKKyAgICAxLCAyMjIsIDE3NywgMTYxLCA5MiwgMSwgMjIyLCAxNzcsIDIxMywgMjUyLCA5MiwgMSwgMjIyLCAxNzcsIDIzNywgMTk1LCAKKyAgICA5MiwgMSwgMjIyLCAxNzcsIDE5OSwgNzcsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjUxLCAzNCwgMTAyLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIwMiwgMjA0LCAxMDIsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCAxOSwgOTIsIAorICAgIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIyOCwgNTAsIDIwNCwgCisgICAgNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ5LCA5MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxMjYsIAorICAgIDI0OSwgOTEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgNjIsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgNzAsIDkyLCAKKyAgICAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTYxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjUzLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0NywgMTkwLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjUzLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMjIwLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA3LCAzNiwgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDU4LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE3MiwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAyMTUsIDI0NSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDgsIDE3OSwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgMTE0LCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDI1MSwgMTg1LCA5MiwgMSwgMjA1LCAxODMsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIAorICAgIDY5LCAyMzUsIDE5OSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyNTMsIDkyLCAxLCAyMjIsIAorICAgIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0NywgMTkwLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAyMjcsIDIxNSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNTMsIDkyLCAxLCAyMjIsIDE3NywgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMjA0LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCAKKyAgICA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDEsIDEwMCwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgCisgICAgMjM2LCA2OSwgMjA4LCAxNzksIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgMTY3LCA5MiwgMSwgCisgICAgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAxOTksIDExNCwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNjcsIDY2LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDE2NywgMTgzLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDgsIDIwMCwgOTIsIDEsIDI1MSwgMTM0LCAKKyAgICAyMzYsIDY5LCAyNDIsIDQ2LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMjQsIDIyMywgMjAsIDIxLCAKKyAgICAyMTYsIDIzMCwgMjAsIDIxLCAyNTAsIDExMiwgMjAsIDIxLCAyNTIsIDkzLCAyMCwgMjEsIDIwMSwgNjcsIDIwLCAyMSwgCisgICAgMjE1LCA0OCwgMjAsIDIxLCAyMTYsIDgyLCAyMCwgMjEsIDIxNCwgMTc2LCAyMCwgMjEsIDIwNiwgMjEwLCAyMCwgMjEsIAorICAgIDIyNywgMTUsIDIwLCAyMSwgMjI1LCAyMjYsIDIwLCAyMSwgMjIyLCAxMTksIDIwLCAyMSwgMjE4LCAxOTgsIDIwLCAyMSwgCisgICAgMjIwLCAxMDksIDIwLCAyMSwgMjI1LCA1MCwgMjAsIDIxLCAyMDgsIDI0OCwgMjAsIDIxLCAyMTEsIDIzNCwgMjAsIDIxLCAKKyAgICAyMDksIDIyOSwgMjAsIDIxLCAyMTAsIDY5LCAyMCwgMjEsIDIwOSwgMTkyLCAyMCwgMjEsIDE5OSwgMjIwLCAyMCwgMjEsIAorICAgIDIwMCwgNTcsIDIwLCAyMSwgMjEzLCAxOTcsIDIwLCAyMSwgMjE4LCA2NiwgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2NiwgCisgICAgMjAsIDIxLCAyMTgsIDY1LCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDY1LCAyMCwgMjEsIDIxOCwgNjQsIDIwLCAyMSwgMjE3LCAKKyAgICAxMDAsIDIxOCwgNjQsIDIwLCAyMSwgMjE4LCA2MywgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2MywgMjAsIDIxLCAyMTIsIAorICAgIDEzNiwgMjAsIDIxLCAyMTIsIDEzNSwgMjAsIDIxLCAyMTIsIDEzNCwgMjAsIDIxLCAyMTIsIDEzMywgMjAsIDIxLCAyMTIsIAorICAgIDEzMiwgMjAsIDIxLCAyMTIsIDE0MCwgMjAsIDIxLCAyMTcsIDEwMCwgMjE2LCAyMjYsIDIwLCAyMSwgMjE3LCAxMDAsIDIwNywgCisgICAgODMsIDIwLCAyMSwgMjE3LCAxMDAsIDIyNywgMTE4LCAyMCwgMjEsIDIxNywgMTAwLCAyNDcsIDIyMywgMjAsIDIxLCAyMTcsIAorICAgIDEwMCwgMjIzLCAyNDMsIDIwLCAyMSwgMjE3LCAxMDAsIDIyMCwgMjE0LCAyMCwgMjEsIDIxNywgMTAwLCAyMTIsIDEyMiwgCisgICAgMjAsIDIxLCAyMTcsIDEwMCwgMjEwLCAxMTYsIDIwLCAyMSwgMjM5LCAxMiwgMjAxLCAxNDcsIDIwLCAyMSwgMjAxLCA0NSwgCisgICAgMjAxLCAxNDcsIDIwLCAyMSwgNDcsIDQsIDIxMywgMjYsIDIwLCAyMSwgNDcsIDIxMywgMjIwLCAyNDAsIDE4MiwgMjAsIDIxLCAKKyAgICAyMTQsIDMyLCAyMTIsIDEzNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDc4LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMTc1LCAKKyAgICAyMCwgMjEsIDIwNiwgMjQsIDIwLCAyMSwgMjA2LCAyNiwgMjAsIDIxLCAyMDQsIDIzMywgMjAsIDIxLCAyMDQsIDIzNSwgMjAsIAorICAgIDIxLCAyMDQsIDI0MCwgMjAsIDIxLCAyMDUsIDE5MywgMjAsIDIxLCAyMDUsIDE5NSwgMjAsIDIxLCAyMTEsIDIzMiwgMjA5LCAKKyAgICAxOTcsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgMiwgMjAsIDIxLCAyMTEsIDIzMiwgMjMzLCAxODgsIDIwLCAyMSwgODksIAorICAgIDIzNSwgNSwgMjAsIDIxLCA4OSwgMjQxLCAxMzQsIDIzNiwgNywgMjAsIDIxLCA4OSwgMjM2LCA4NiwgMjAsIDIxLCA4OSwgCisgICAgMjM1LCAxMCwgMjAsIDIxLCAyMTEsIDIzMiwgMjI3LCAxMjgsIDIwLCAyMSwgODksIDIyNywgMTI2LCAyMCwgMjEsIDI0OCwgCisgICAgMjU1LCAyNDEsIDEzNCwgMTU2LCAyMCwgMjEsIDI0OCwgMjU1LCAyNDEsIDEzNCwgMTQ2LCAyMCwgMjEsIDg5LCAyNDEsIAorICAgIDEyOSwgMjEyLCAxMjIsIDIyNCwgMTg2LCAyMDIsIDE3MiwgMjI0LCAyMzYsIDIyNCwgMTg2LCAxLCAxNjEsIDIyNCwgMTg2LCAKKyAgICAxLCAyMjYsIDIwNywgMjI0LCAxODYsIDEsIDIzNiwgODksIDIyNCwgMTg2LCAxLCAyMzUsIDE5OSwgMjI0LCAxODYsIDEsIAorICAgIDIxOSwgMjUzLCAyMjQsIDE4NiwgMSwgMjQ3LCAxOTAsIDIyNCwgMTg2LCAxLCAyNDcsIDM3LCAyMjQsIDE4NiwgMSwgMjI3LCAKKyAgICAyNDgsIDIyNCwgMTg2LCAxLCAyMjcsIDIxNSwgMjI0LCAxODYsIDEsIDIwMCwgNzcsIDIyNCwgMTg2LCAxLCAyMDcsIDM2LCAKKyAgICAyMjQsIDE4NiwgMSwgMjA2LCAxMjIsIDIyNCwgMTg2LCAxLCAyNDIsIDU4LCAyMjQsIDE4NiwgMSwgMjQxLCAxMDAsIDIyNCwgCisgICAgMTg2LCAxLCAxODgsIDIyNCwgMTg2LCAxLCAxNzIsIDIyNCwgMTg2LCAxLCAyMTUsIDI0NSwgMjI0LCAxODYsIDEsIDI0OSwgCisgICAgMTM2LCAyMjQsIDE4NiwgMSwgMjQ4LCAyMDAsIDIyNCwgMTg2LCAxLCAxNzgsIDIyNCwgMTg2LCAxLCAxODMsIDIyNCwgMTg2LCAKKyAgICAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDEsIDE5NCwgMjI0LCAxODYsIDEsIDIwMSwgMTE0LCAyMjQsIDE4NiwgMSwgMjEwLCAKKyAgICAxMTQsIDIyNCwgMTg2LCAxLCAyMDgsIDE3OSwgMjI0LCAxODYsIDEsIDIxMiwgNjQsIDIyNCwgMTg2LCAxLCAxNDQsIDIyNCwgCisgICAgMTg2LCAxLCAyMzUsIDEsIDIyNCwgMTg2LCAxLCAyMDUsIDEzMiwgMjI0LCAxODYsIDIyLCAyLCA2MiwgMjI0LCAxODYsIDIyLCAKKyAgICAyLCA3MCwgMjI0LCAxODYsIDIyLCAyLCA2NiwgMjI0LCAxODYsIDIyLCAyLCAyMzgsIDI1NSwgMjI0LCAxODYsIDIyLCAyLCAKKyAgICAyNTEsIDE3NiwgMjI0LCAxODYsIDIyLCAyLCAyMTcsIDYzLCAyMjQsIDE4NiwgMjIsIDIsIDI1MCwgMTM5LCAyMjQsIDE4NiwgCisgICAgMjIsIDIsIDcyLCAyMjQsIDE4NiwgMjIsIDIsIDc0LCAyMjQsIDE4NiwgMjA4LCAxMiwgMSwgMTgzLCAyMjQsIDE4NiwgMjA4LCAKKyAgICAxMiwgMSwgMjEzLCAyNTIsIDIyNCwgMTg2LCAyMDgsIDEyLCAxLCAyMDEsIDExNCwgMjI0LCAxODYsIDQsIDEsIDE2MSwgCisgICAgMjI0LCAxODYsIDQsIDEsIDIxOSwgMjUzLCAyMjQsIDE4NiwgNCwgMSwgMjUxLCAzMywgMjI0LCAxODYsIDQsIDEsIDIwNywgCisgICAgMzYsIDIyNCwgMTg2LCA0LCAxLCAxODgsIDIyNCwgMTg2LCA0LCAxLCAxNzIsIDIyNCwgMTg2LCA0LCAxLCAxNzgsIDIyNCwgCisgICAgMTg2LCA0LCAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDQsIDEsIDE5NCwgMjI0LCAxODYsIDIsIDIyMSwgMjYsIDIyNCwgMTg2LCAKKyAgICAyLCAyMjYsIDI0OSwgMjI0LCAxODYsIDIsIDIxMiwgNjIsIDIyNCwgMTg2LCAyLCAyMjQsIDc4LCAyMjQsIDE4NiwgMjM4LCAKKyAgICA0MywgODEsIDIyNCwgMTg2LCAyMTQsIDc5LCA4MSwgMjI0LCAxODYsIDE3LCAxOTksIDgxLCAyMjQsIDE4NiwgMTcsIDEwMiwgCisgICAgMjI0LCAxODYsIDE3LCAxMDUsIDIyNCwgMTg2LCAxNywgMTQ3LCAyMjQsIDE4NiwgMTcsIDE0OSwgMjI0LCAxODYsIDE3LCAKKyAgICAxNjQsIDIyNCwgMTg2LCAxNywgMTg3LCAyMjQsIDE4NiwgMTcsIDIxMCwgMTM1LCAyMjQsIDE4NiwgMTcsIDE5MiwgMjI0LCAKKyAgICAxODYsIDE3LCAyMTksIDExMywgNDYsIDIyNSwgNDEsIDEsIDE2MSwgNDYsIDIyNSwgNDEsIDEsIDIwMCwgMTgxLCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMjE5LCAyNTMsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDMyLCA0NiwgMjI1LCA0MSwgMSwgMjEyLCA2NCwgCisgICAgNDYsIDIyNSwgNDEsIDEsIDE4MywgNDYsIDIyNSwgNDEsIDEsIDIwNywgMzYsIDQ2LCAyMjUsIDQxLCAxLCAyMDYsIDEyMiwgCisgICAgNDYsIDIyNSwgNDEsIDEsIDE5NCwgNDYsIDIyNSwgNDEsIDEsIDE3MiwgNDYsIDIyNSwgNDEsIDEsIDIxNSwgMjQ1LCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMTc4LCA0NiwgMjI1LCA0MSwgMSwgMjM3LCAxOTUsIDQ2LCAyMjUsIDQxLCAxLCAyMDMsIDkwLCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMTQ0LCA0NiwgMjI1LCA0MSwgMSwgMjE0LCAxNTksIDQ2LCAyMjUsIDQxLCAxLCAyMjYsIDIwNywgNDYsIAorICAgIDIyNSwgNDEsIDEsIDIwNSwgMjIsIDQ2LCAyMjUsIDQxLCAxLCAxODgsIDQ2LCAyMjUsIDQxLCAxLCA2MiwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDcwLCA0NiwgMjI1LCA0MSwgMSwgMjM4LCAyNTUsIDQ2LCAyMjUsIDQxLCAxLCAyMzgsIDI0MSwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDY2LCA0NiwgMjI1LCA0MSwgMSwgMjE3LCA2MywgNDYsIDIyNSwgNDEsIDEsIDc0LCA0NiwgMjI1LCA0MSwgMSwgCisgICAgMjA0LCAzMSwgNDYsIDIyNSwgNDEsIDEsIDcyLCA0NiwgMjI1LCA0MSwgMSwgMjUwLCAxMzcsIDQ2LCAyMjUsIDQxLCAxLCAKKyAgICAyNTEsIDE3NiwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTcyLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNzEsIDQ2LCAyMjUsIAorICAgIDQxLCAxLCAyMDUsIDE3MCwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTY5LCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNjgsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjE0LCAxNTksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE0LCAxNTksIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTYxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwMCwgMTgxLCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIxOSwgMjUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDE2MSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDAsIDE4MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTksIAorICAgIDI1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDUsIDMyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIAorICAgIDIxMiwgNjQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTgzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIAorICAgIDIwNSwgMzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjEyLCA2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxODMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA3LCAzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyMDYsIDEyMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxODgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMjA3LCAzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDYsIDEyMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxODgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTcyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIxNSwgMjQ1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE3OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE1LCAyNDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMTc4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIzNywgMTk1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIwMywgOTAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTk0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDIzNywgMTk1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwMywgOTAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTk0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE0NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyNDIsIDU4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDI0OSwgMTM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE0NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyNDIsIDU4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDI0OSwgMTM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIyNSwgMjMxLCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxLCAxMjIsIDIwMCwgMTQ4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIyNSwgMjMxLCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxLCAxMjgsIDIwMCwgMTQ4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwOCwgMjMsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjA4LCAyMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIyLCAyMDksIDIzOCwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MiwgMTM4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA2NiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTEsIAorICAgIDIyMSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDc0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjE3LCAKKyAgICAxNDYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDQsIDMxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgCisgICAgMjUwLCAxMTIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTIsIDkzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgCisgICAgMiwgMjAzLCAxNzQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMTYsIDIzMCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMjIsIDIsIDIxNywgMTQzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjA0LCAyNywgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMjIsIDIsIDIyOCwgMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIwMywgMTY4LCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxLCA0NywgMjE5LCAyNTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMjAsIDIxNCwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMSwgNDcsIDIyMywgMjQzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjI3LCAxMTgsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyNDIsIDE1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDI1MCwgMTAzLCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxNTAsIDIyMiwgMTQ5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNTAsIDIyMiwgMTQ4LCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTk5LCA4MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDEwMiwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMTcsIDEwNSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE0NywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIAorICAgIDE0OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE4NywgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMTcsIDIxMCwgMTM1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTkyLCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxNywgMjE5LCAxMTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEwNywgMTcsIDEwMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMiwgMjI1LCAxNjAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIsIDIyNSwgMTU5LCA4NiwgMTYsIDIxNiwgOTAsIDg2LCAxNiwgCisgICAgMjIxLCA2LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMTY3LCAyMjYsIDg0LCA4NiwgMTYsIDI0OCwgMjM2LCAyMjYsIDg0LCAKKyAgICA4NiwgMTYsIDI0OCwgOSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDQzLCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMzcsIDIyNiwgCisgICAgODQsIDg2LCAxNiwgMjE1LCAzNSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDQxLCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMzksIAorICAgIDIyNiwgODQsIDg2LCAxNiwgMjQyLCA1LCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMSwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIAorICAgIDAsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAzLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMiwgMjI2LCA4NCwgODYsIDE2LCAKKyAgICAyNDEsIDI1NSwgMjI2LCA4NCwgODYsIDE2LCAyMDQsIDE3OCwgODYsIDE2LCAyMjEsIDYsIDIxMiwgMjUwLCA4NiwgMTYsIAorICAgIDIxNSwgMTY3LCAyMTIsIDI1MCwgODYsIDE2LCAyNDgsIDIzNiwgMjEyLCAyNTAsIDg2LCAxNiwgMjQ4LCA5LCAyMTIsIDI1MCwgCisgICAgODYsIDE2LCAyMTUsIDQzLCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM3LCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM1LCAKKyAgICAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDQxLCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM5LCAyMTIsIDI1MCwgODYsIDE2LCAKKyAgICAyNDIsIDUsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMSwgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAwLCAyMTIsIDI1MCwgODYsIAorICAgIDE2LCAyNDIsIDMsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMiwgMjEyLCAyNTAsIDg2LCAxNiwgMjQxLCAyNTUsIDIxMiwgCisgICAgMjUwLCAyNDgsIDI5LCAxLCAxNjEsIDI0OCwgMjksIDEsIDIzNiwgODksIDI0OCwgMjksIDEsIDIxOSwgMjUzLCAyNDgsIDI5LCAKKyAgICAxLCAyMTksIDE5NiwgMjQ4LCAyOSwgMSwgMTcyLCAyNDgsIDI5LCAxLCAyNDksIDEzNiwgMjQ4LCAyOSwgMSwgMTc4LCAyNDgsIAorICAgIDI5LCAxLCAyMjEsIDQ1LCAyNDgsIDI5LCAxLCAyMDcsIDM2LCAyNDgsIDI5LCAxLCAyNDIsIDU4LCAyNDgsIDI5LCAxLCAKKyAgICAxODgsIDI0OCwgMjksIDEsIDIxOCwgMTk2LCAyNDgsIDI5LCAxLCAyNDcsIDE5MCwgMjQ4LCAyOSwgMSwgMjI3LCAyNDgsIAorICAgIDI0OCwgMjksIDEsIDIxOCwgNjAsIDI0OCwgMjksIDEsIDIxOCwgNTIsIDI0OCwgMjksIDEsIDE4MywgMjQ4LCAyOSwgMSwgCisgICAgMjEzLCAyNTIsIDI0OCwgMjksIDEsIDE5NCwgMjQ4LCAyOSwgMSwgMjAzLCA5MCwgMjQ4LCAyOSwgMSwgMjEyLCA2NCwgMjQ4LCAKKyAgICAyOSwgMSwgNjIsIDI0OCwgMjksIDEsIDE0NCwgMjQ4LCAyOSwgMjIsIDIsIDcwLCAyNDgsIDI5LCAyMiwgMiwgNjYsIDI0OCwgCisgICAgMjksIDIyLCAyLCA3MiwgMjQ4LCAyOSwgMjIsIDIsIDc0LCAyNDgsIDI5LCAyMiwgMiwgMjUxLCAyMjEsIDI0OCwgMjksIAorICAgIDIxNiwgMTc4LCAyNDgsIDI5LCAyMzgsIDE3MSwgNzYsIDIxMSwgMTkyLCA0NiwgMTA3LCAxLCAxMjIsIDE2MSwgNDYsIDEwNywgCisgICAgMSwgMTIyLCAyMjYsIDIwNywgNDYsIDEwNywgMSwgMTIyLCAyMjUsIDIxNSwgNDYsIDEwNywgMSwgMTI4LCAxNjEsIDQ2LCAKKyAgICAxMDcsIDEsIDEyOCwgMjI1LCAyMTUsIDQ2LCAxMDcsIDEsIDEyOCwgMjI2LCAyMDcsIDQ2LCAxMDcsIDEsIDIxOSwgMjUzLCAKKyAgICA0NiwgMTA3LCAxLCAxMjIsIDI0NywgMTkwLCA0NiwgMTA3LCAxLCAxMjIsIDI0NywgMzcsIDQ2LCAxMDcsIDEsIDEyOCwgCisgICAgMjQ3LCAxOTAsIDQ2LCAxMDcsIDEsIDEyOCwgMjEyLCA2NCwgNDYsIDEwNywgMSwgMTI4LCAyNDcsIDM3LCA0NiwgMTA3LCAxLCAKKyAgICAyMTgsIDYwLCA0NiwgMTA3LCAxLCAyMTMsIDIwMywgNDYsIDEwNywgMSwgMTIyLCAyMTMsIDIwMSwgNDYsIDEwNywgMSwgCisgICAgMjQyLCA1OCwgNDYsIDEwNywgMSwgMTI4LCAyMTMsIDIwMSwgNDYsIDEwNywgMSwgMjEzLCAyMTIsIDQ2LCAxMDcsIDEsIAorICAgIDEyMiwgMjA3LCAzNiwgNDYsIDEwNywgMSwgMTIyLCAyMDYsIDEyMiwgNDYsIDEwNywgMSwgMTI4LCAyMDcsIDM2LCA0NiwgCisgICAgMTA3LCAxLCAxMjgsIDIwNiwgMTIyLCA0NiwgMTA3LCAxLCAxODgsIDQ2LCAxMDcsIDEsIDI0OSwgMTM2LCA0NiwgMTA3LCAxLCAKKyAgICAxMjIsIDE3MiwgNDYsIDEwNywgMSwgMTIyLCAyMTUsIDI0NSwgNDYsIDEwNywgMSwgMTIyLCAyMzcsIDE5NSwgNDYsIDEwNywgCisgICAgMSwgMTI4LCAxNzIsIDQ2LCAxMDcsIDEsIDEyOCwgMjM3LCAxOTUsIDQ2LCAxMDcsIDEsIDEyOCwgMjE1LCAyNDUsIDQ2LCAKKyAgICAxMDcsIDEsIDE3OCwgNDYsIDEwNywgMSwgMTI4LCAxODMsIDQ2LCAxMDcsIDEsIDEyMiwgMTgzLCA0NiwgMTA3LCAxLCAyMTMsIAorICAgIDI1MiwgNDYsIDEwNywgMSwgMjEyLCAxNzAsIDQ2LCAxMDcsIDEsIDE5NCwgNDYsIDEwNywgMSwgMjI0LCAzNSwgNDYsIDEwNywgCisgICAgMSwgMjAxLCAxMTQsIDQ2LCAxMDcsIDEsIDEyMiwgMjEwLCAxMTQsIDQ2LCAxMDcsIDEsIDEyMiwgMjA4LCAxNzksIDQ2LCAKKyAgICAxMDcsIDEsIDEyMiwgMjEyLCA2NCwgNDYsIDEwNywgMSwgMTIyLCAxNDQsIDQ2LCAxMDcsIDEsIDIyNCwgMTM4LCA0NiwgCisgICAgMTA3LCAxLCA2MiwgNDYsIDEwNywgMSwgMTI4LCAxNDQsIDQ2LCAxMDcsIDEsIDcwLCA0NiwgMTA3LCAxLCAyMjgsIDE1MSwgCisgICAgNDYsIDEwNywgMSwgNjYsIDQ2LCAxMDcsIDEsIDIwMywgMTgyLCA0NiwgMTA3LCAxLCAyMzgsIDI1NSwgNDYsIDEwNywgMSwgCisgICAgMjE3LCA2MywgNDYsIDEwNywgMSwgMjI1LCAxNjAsIDQ2LCAxMDcsIDEsIDIzNSwgNjksIDIxMiwgNjQsIDQ2LCAxMDcsIAorICAgIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgNDYsIDEwNywgMTExLCAyLCAxNzksIDE5NCwgNDYsIDEwNywgMTExLCAyLCAyMjUsIAorICAgIDE3NiwgMjA2LCAyNDIsIDIyNSwgMTQ5LCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjI3LCA2NSwgMjI1LCAxNDksIDQ2LCAKKyAgICAxMDcsIDExMSwgMiwgNDcsIDIxOSwgMjUzLCA0NiwgMTA3LCAxMTEsIDIsIDEyOCwgMTcyLCA0NiwgMTA3LCAxMTEsIDIsIAorICAgIDEyMiwgMjEzLCAyMDIsIDIxNywgMzQsIDEyOCwgMTcyLCA0NiwgMTA3LCAxMTEsIDIsIDE3OCwgNDYsIDEwNywgMTExLCAyLCAKKyAgICAyNDksIDEzNiwgNDYsIDEwNywgMTExLCAyLCAyMTIsIDY0LCA0NiwgMTA3LCAyLCAyMTIsIDM4LCA0NiwgMTA3LCAyMiwgMiwgCisgICAgNjIsIDQ2LCAxMDcsIDIyLCAyLCAyMjIsIDE5OSwgMjExLCAyNTEsIDQ2LCAxMDcsIDIyLCAyLCAyNTIsIDEzOCwgNDYsIAorICAgIDEwNywgMjIsIDIsIDIwNiwgMjQ4LCAyNTIsIDEzOCwgNDYsIDEwNywgMjIsIDIsIDcwLCA0NiwgMTA3LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDQ2LCAxMDcsIDIyLCAyLCAyMDQsIDMxLCA0NiwgMTA3LCAyMiwgMiwgMjAzLCAxODEsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICA2NiwgNDYsIDEwNywgMjIsIDIsIDIwMywgMTgyLCA0NiwgMTA3LCAyMiwgMiwgNzQsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIAorICAgIDE0NywgNTcsIDQ2LCAxMDcsIDIyLCAyLCAyMTYsIDIzMCwgNDYsIDEwNywgMjIsIDIsIDcyLCA0NiwgMTA3LCAyMiwgMiwgCisgICAgMjUxLCAyMjEsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIDYzLCA0NiwgMTA3LCAyMiwgMiwgMjUxLCAxNzYsIDQ2LCAxMDcsIDIyLCAKKyAgICAyLCAxMDcsIDI1MSwgMTc2LCA0NiwgMTA3LCAyMiwgMiwgMjE3LCAxNDcsIDU2LCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgCisgICAgMjI3LCA2NCwgNDYsIDEwNywgMiwgMjA1LCAxNzMsIDQ2LCAxMDcsIDIsIDIwNSwgMTcyLCA0NiwgMTA3LCAyLCAyMjYsIAorICAgIDE2OCwgMjA1LCAxNzEsIDQ2LCAxMDcsIDIsIDIyNiwgMTY4LCAyMDUsIDE3MCwgNDYsIDEwNywgMiwgMjI2LCAxNjgsIDIwNSwgCisgICAgMTY5LCA0NiwgMTA3LCAyLCAyMTMsIDI1MywgMjM0LCAyMzIsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMTIsIDIzLCA0NiwgCisgICAgMTA3LCAyLCAyMjYsIDE2NywgMjI3LCA0NiwgNDYsIDEwNywgMzgsIDI0MiwgMjE3LCAyNDAsIDE4MiwgNDYsIDEwNywgMjMzLCAKKyAgICAxNzksIDE3LCAxOTksIDgxLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDEwMiwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxMDUsIAorICAgIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTQ3LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE0OSwgNDYsIDEwNywgMjMzLCAKKyAgICAxNzksIDE3LCAxNjQsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTg3LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDIxMCwgCisgICAgMTM1LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE5MiwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAyMTksIDExMywgNDYsIAorICAgIDEwNywgMTA3LCAxNywgMTk5LCA4MSwgNDYsIDEwNywgMTA3LCAxNywgMTAyLCA0NiwgMTA3LCAxMDcsIDE3LCAxMDUsIDQ2LCAKKyAgICAxMDcsIDEwNywgMTcsIDE0NywgNDYsIDEwNywgMTA3LCAxNywgMTQ5LCA0NiwgMTA3LCAxMDcsIDE3LCAxNjQsIDQ2LCAxMDcsIAorICAgIDEwNywgMTcsIDE4NywgNDYsIDEwNywgMTA3LCAxNywgMjEwLCAxMzUsIDQ2LCAxMDcsIDEwNywgMTcsIDE5MiwgNDYsIDEwNywgCisgICAgMTA3LCAxNywgMjE5LCAxMTMsIDQ2LCAxMDcsIDIsIDIwMSwgMzAsIDQ2LCAxMDcsIDIsIDIwMSwgMjksIDQ2LCAxMDcsIDIsIAorICAgIDIxMSwgMjM4LCA0NiwgMTA3LCAyLCAyMjYsIDIzOCwgNDYsIDEwNywgMiwgMjMzLCAxMDcsIDQ2LCAxMDcsIDIsIDI0MCwgCisgICAgMTk2LCA0NiwgMTA3LCAyLCAyMTMsIDEwNSwgMjEyLCAyMjgsIDIxMywgMjEyLCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjAwLCAKKyAgICA3OCwgNDYsIDEwNywgMiwgMjI3LCA5OSwgNDYsIDEwNywgMiwgMjI3LCA5OCwgNDYsIDEwNywgMiwgMjExLCAyNDYsIDQ2LCAKKyAgICAxMDcsIDIsIDIxMSwgMjQ1LCA0NiwgMTA3LCAyLCAyMzQsIDE3MiwgNDYsIDEwNywgMiwgMjQ3LCAxODcsIDM4LCAyMzksIAorICAgIDE3MiwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAzOCwgMjQxLCA3MywgMzgsIDIyOCwgOTQsIDM4LCAxOTEsIDQ4LCAzOCwgMjA1LCAKKyAgICA4MywgMjQwLCAxODIsIDM4LCAyMDAsIDE5NCwgNTcsIDM4LCAyMDEsIDIyLCAyMjQsIDE3NywgNTcsIDM4LCAxNzYsIDEzNCwgCisgICAgNTcsIDM4LCA1MywgMTc2LCAxMzQsIDU3LCAzOCwgMTYyLCAyNDcsIDU3LCAyMDgsIDQ3LCA1NywgMzgsIDIwOCwgMzMsIAorICAgIDI0NywgNTcsIDIwOCwgNDcsIDU3LCAzOCwgMjE2LCAxMTcsIDU2LCAzOCwgNTMsIDIxNiwgMTE3LCA1NiwgMzgsIDIxNiwgCisgICAgMTE3LCA1NywgMzgsIDIxNiwgMTE3LCAyMTYsIDI0MiwgMTMzLCAyLCAyMDQsIDE1LCAyMTMsIDgyLCAxMzMsIDIsIDIwNCwgCisgICAgMTUsIDI0NywgMTUxLCAxMzMsIDIsIDI0NywgNzIsIDEzMywgMiwgMjA3LCAyMDUsIDEzMywgMiwgMjQ4LCAxNTcsIDEzMywgCisgICAgMSwgMjUxLCAxNTcsIDEzMywgMSwgMjUxLCAxNTgsIDIwNiwgMTkyLCAxMzMsIDEsIDIyOCwgMTQ3LCAxMzMsIDEsIDIyOCwgCisgICAgMTQ4LCAyMDYsIDE5MiwgMTMzLCAxLCAyMDQsIDE4LCAxMzMsIDEsIDIwNCwgMTksIDIwNiwgMTkyLCAxMzMsIDEsIDIxMywgCisgICAgMjUzLCAyMTMsIDEzNSwgMTMzLCAxLCAyMTMsIDI1MywgMjEzLCAxMzYsIDIwNiwgMTkyLCAxMzMsIDEsIDIyNSwgMTc2LCAKKyAgICAyMjUsIDMsIDEzMywgMSwgMjI1LCAxNzYsIDIyNSwgNCwgMjA2LCAxOTIsIDEzMywgMSwgMjM4LCAyMTQsIDEzMywgMSwgCisgICAgMjUxLCAxNzQsIDEzMywgMSwgMjE3LCA5NiwgMTMzLCAxLCAyMTcsIDk3LCAyMDYsIDE5MiwgMTMzLCAxLCAxNjEsIDEzMywgCisgICAgMSwgMjI3LCAxMDgsIDIyMiwgMjAyLCAxMzMsIDEsIDIzNiwgODksIDEzMywgMSwgMjM2LCA5MCwgMjM1LCAxMDIsIDEzMywgCisgICAgMSwgMjE5LCAyNTMsIDEzMywgMSwgMjQ3LCAxOTAsIDEzMywgMSwgMjQ3LCAxOTEsIDIyNSwgMTYzLCAxMzMsIDEsIDIyNywgCisgICAgMjQ4LCAxMzMsIDEsIDIyNywgMjQ5LCAyMjcsIDIxOSwgMTMzLCAxLCAyMTgsIDYwLCAxMzMsIDEsIDIwNywgMzcsIDIyNSwgCisgICAgNjAsIDEzMywgMSwgMjA3LCAzNywgMjIxLCAxLCAyMjIsIDIwMiwgMTMzLCAxLCAyNDIsIDU5LCAyMjEsIDEsIDI1MSwgMTE0LCAKKyAgICAxMzMsIDEsIDI0MiwgNTksIDIyMSwgMSwgMjIyLCAyMDIsIDEzMywgMSwgMjIwLCAxNjIsIDIxMywgMjE1LCAxMzMsIDEsIAorICAgIDIwNywgMzYsIDEzMywgMSwgMjA3LCAzNywgMjA2LCAyMTQsIDEzMywgMSwgMjQyLCA1OCwgMTMzLCAxLCAyNDIsIDU5LCAKKyAgICAyMjIsIDIyMSwgMTMzLCAxLCAxODgsIDEzMywgMSwgMTcyLCAxMzMsIDEsIDIxNiwgMjExLCAyMjcsIDU4LCAxMzMsIDEsIAorICAgIDI0OSwgMTM2LCAxMzMsIDEsIDI0OSwgMTM3LCAyMjYsIDI1MCwgMTMzLCAxLCAxNzgsIDEzMywgMSwgMTgzLCAxMzMsIDEsIAorICAgIDIxMywgMjUyLCAxMzMsIDEsIDE5NCwgMTMzLCAxLCAyMDEsIDExNCwgMTMzLCAxLCAyMTIsIDY1LCAyMTIsIDQ5LCAxMzMsIAorICAgIDEsIDIxMiwgNjUsIDIxMiwgMiwgMTMzLCAxLCAyMTIsIDY0LCAxMzMsIDEsIDE0NCwgMTMzLCAyLCAyMTMsIDEyNiwgMTMzLCAKKyAgICAyMiwgMiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIwNCwgMTQsIDEzMywgMjIsIDIsIDIwNCwgMTUsIDIxMSwgMjU0LCAxMzMsIAorICAgIDIyLCAyLCAyMDcsIDIzOCwgMTMzLCAyMiwgMiwgMjA3LCAyMzksIDIyOCwgMTM5LCAxMzMsIDIyLCAyLCAyMTMsIDI1MywgCisgICAgMjEzLCAxMzUsIDEzMywgMjIsIDIsIDIxMywgMjUzLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIyNSwgMTc2LCAKKyAgICAyMjUsIDMsIDEzMywgMjIsIDIsIDIyNSwgMTc2LCAyMjUsIDQsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMDYsIDI0OSwgCisgICAgMTMzLCAyMiwgMiwgMjA2LCAyNTAsIDIxMywgMTM1LCAxMzMsIDIyLCAyLCAyMDYsIDI1MCwgMjA2LCAxOTIsIDEzMywgMjIsIAorICAgIDIsIDIwNiwgMjUwLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIxNiwgMzAsIDEzMywgMjIsIDIsIDIxNiwgCisgICAgMzEsIDIwNiwgMTkyLCAxMzMsIDI1MSwgMjMwLCAyNTEsIDIyOSwgMTMzLCAxLCAyMjcsIDg3LCAyMTEsIDI1MywgMTMzLCAxLCAKKyAgICAyMjYsIDE3NCwgMjExLCAyNTMsIDEzMywgMSwgMjA0LCAxMDgsIDIxMSwgMjUzLCAxMzMsIDEsIDIzOCwgMjQ5LCAyMTEsIAorICAgIDI1MywgMTMzLCAxLCAyMDMsIDYwLCAyMTEsIDI1MywgMTMzLCAxLCAxOTksIDEwNCwgMjExLCAyNTMsIDEzMywgMSwgMjUwLCAKKyAgICAxNTgsIDIxMSwgMjUzLCAxMzMsIDE3LCAxOTksIDgxLCAxMzMsIDE3LCAxMDIsIDEzMywgMTcsIDEwNSwgMTMzLCAxNywgCisgICAgMTQ3LCAxMzMsIDE3LCAxNDksIDEzMywgMTcsIDE2NCwgMTMzLCAxNywgMTg3LCAxMzMsIDE3LCAyMTAsIDEzNSwgMTMzLCAKKyAgICAxNywgMTkyLCAxMzMsIDE3LCAyMTksIDExMywgMTMzLCAyMTYsIDE0MywgMTMzLCAyMTYsIDE3MSwgMTMzLCAyMDEsIDE0LCAKKyAgICAxMzMsIDI0NywgMTI3LCAyMTYsIDE2NCwgMTMzLCAyNDcsIDEyNywgMjA5LCAxNTgsIDEzMywgMjQ3LCAxMjcsIDIxNiwgCisgICAgMTE0LCAxMzMsIDIxNiwgMTcwLCAxMzMsIDMyLCAxNiwgMjQwLCAxODgsIDEzMywgMzIsIDE2LCAyNDEsIDEzMywgMTMzLCAKKyAgICAzMiwgMTYsIDIzOSwgMTIxLCAxMzMsIDMyLCAxNiwgMjQyLCA4LCAxMzMsIDMyLCAxNiwgMjQyLCA5LCAyMDcsIDIwNSwgCisgICAgMTMzLCAzMiwgMTYsIDI0MSwgMTgsIDEzMywgMzIsIDE2LCAyNDIsIDUwLCAxMzMsIDMyLCAxNiwgMjQxLCAxMDksIDEzMywgCisgICAgMzIsIDE2LCAyNDIsIDMyLCAxMzMsIDMyLCAxNiwgMjQyLCA5LCAyMzYsIDksIDEzMywgMzIsIDE2LCAzOCwgMjA2LCAxODUsIAorICAgIDEzMywgMzIsIDE2LCAzOCwgMjM4LCAxNjksIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDUsIDEzMywgMzIsIDE2LCAzOCwgCisgICAgMjI2LCAyNDcsIDEzMywgMzIsIDE2LCAzOCwgMjI3LCAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDYsIDMsIDIyNywgCisgICAgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDIyNiwgMjQ4LCAzLCAyMjcsIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyNDgsIDIyMSwgCisgICAgMTMzLCAzMiwgMTYsIDM4LCAyMzUsIDEwNiwgMTMzLCAzMiwgMTYsIDIxMywgNDQsIDE3NiwgMjM5LCAxMzEsIDEzMywgMzIsIAorICAgIDE2LCAyMTMsIDQ0LCAxNzYsIDI0MiwgNDgsIDEzMywgMzIsIDE2LCAyMTMsIDQ0LCAyNDYsIDExMCwgMjA0LCAyMDcsIDEzMywgCisgICAgMzIsIDE2LCAyMTMsIDQ0LCAyNDYsIDExMCwgMjA3LCAyLCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAyMTYsIDE1NywgCisgICAgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgMjE0LCAyMTAsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAyNDYsIDExMCwgMjE1LCAKKyAgICAxMzEsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAyNDYsIDExMCwgMjE1LCAxMTcsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIAorICAgIDIxNSwgMTU2LCAyMDcsIDIyNywgMiwgMjE2LCAxNDAsIDIwNywgMjI3LCAyLCAyMTYsIDE1MywgMjA3LCAyMjcsIDIsIDIxNiwgCisgICAgMTQ5LCAyMDcsIDIyNywgMSwgNjIsIDIwNywgMjI3LCAxLCA3MCwgMjA3LCAyMjcsIDEsIDY2LCAyMDcsIDIyNywgMSwgMjUxLCAKKyAgICAyMjEsIDIwNywgMjI3LCAxLCA3NCwgMjA3LCAyMjcsIDEsIDcyLCAyMDcsIDIyNywgMSwgMjM4LCA2OSwgMjA3LCAyMjcsIDEsIAorICAgIDE2MSwgMjA3LCAyMjcsIDEsIDIxNCwgMTU5LCAyMDcsIDIyNywgMSwgMjM2LCA4OSwgMjA3LCAyMjcsIDEsIDIxOSwgMjUzLCAKKyAgICAyMDcsIDIyNywgMSwgMjQ3LCAxOTAsIDIwNywgMjI3LCAxLCAyMjcsIDI0OCwgMjA3LCAyMjcsIDEsIDE5OSwgMTE0LCAyMDcsIAorICAgIDIyNywgMSwgMjE4LCA2MCwgMjA3LCAyMjcsIDEsIDIwNywgMzYsIDIwNywgMjI3LCAxLCAyNDIsIDU4LCAyMDcsIDIyNywgMSwgCisgICAgMTg4LCAyMDcsIDIyNywgMSwgMTcyLCAyMDcsIDIyNywgMSwgMjM3LCAxOTUsIDIwNywgMjI3LCAxLCAyMDMsIDkwLCAyMDcsIAorICAgIDIyNywgMSwgMjQ5LCAxMzYsIDIwNywgMjI3LCAxLCAxNzgsIDIwNywgMjI3LCAxLCAxODMsIDIwNywgMjI3LCAxLCAyMTMsIAorICAgIDI1MiwgMjA3LCAyMjcsIDEsIDE5NCwgMjA3LCAyMjcsIDEsIDIwMSwgMTE0LCAyMDcsIDIyNywgMSwgMjEyLCA2NCwgMjA3LCAKKyAgICAyMjcsIDEsIDIwMCwgMTgxLCAyMDcsIDIyNywgMSwgMTQ0LCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDE2OCwgMjA3LCAyMjcsIAorICAgIDExMSwgMiwgMjE2LCAxNDIsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTM5LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTU2LCAKKyAgICAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTM4LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTYxLCAyMDcsIDIyNywgMjIsIDIsIAorICAgIDIxNiwgMTQ4LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTY5LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTU4LCAyMDcsIDIyNywgCisgICAgMiwgMjE2LCAxNzIsIDIwNywgMjI3LCAyLCAyMDIsIDIwOCwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxMDMsIDE3OCwgMjA3LCAKKyAgICAyMjcsIDExMSwgMiwgMjE2LCAxMDMsIDIwMSwgMTE0LCAyMDcsIDIyNywgMSwgMjI2LCAyMDcsIDIwNywgMjI3LCAxLCAyMDcsIAorICAgIDE2NCwgMjA3LCAyMjcsIDE3LCAxOTksIDgxLCAyMDcsIDIyNywgMTcsIDEwMiwgMjA3LCAyMjcsIDE3LCAxMDUsIDIwNywgCisgICAgMjI3LCAxNywgMTQ3LCAyMDcsIDIyNywgMTcsIDE0OSwgMjA3LCAyMjcsIDE3LCAxNjQsIDIwNywgMjI3LCAxNywgMTg3LCAKKyAgICAyMDcsIDIyNywgMTcsIDIxMCwgMTM1LCAyMDcsIDIyNywgMTcsIDE5MiwgMjA3LCAyMjcsIDE3LCAyMTksIDExMywgMjA3LCAKKyAgICAyMjcsIDI1MCwgMTIyLCAyMDcsIDIyNywgMSwgMjEzLCAxMDgsIDIwNywgMjI3LCAxLCAyMjQsIDIzMywgMjA3LCAyMjcsIDEsIAorICAgIDI0OCwgMjAwLCAyMDcsIDIyNywgMSwgNDcsIDIyNywgMTE4LCAyMDcsIDIyNywgMSwgNDcsIDIyMywgMjQzLCAyNDksIDU0LCAKKyAgICAxLCA2MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDYyLCAyNDksIDU0LCAxLCAxNDQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAKKyAgICAxNDQsIDI0OSwgNTQsIDEsIDIyMiwgMTc1LCAxNDQsIDI0OSwgNTQsIDEsIDI0OSwgMTM2LCAyNDksIDU0LCAxLCAyMjcsIAorICAgIDQzLCAyNDksIDEzNiwgMjQ5LCA1NCwgMSwgMTcyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMTcyLCAyNDksIDU0LCAxLCAKKyAgICAxODgsIDI0OSwgNTQsIDEsIDIyMiwgMTc1LCAxODgsIDI0OSwgNTQsIDEsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMDksIAorICAgIDE1MCwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIxNiwgMTg1LCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjM2LCA4OSwgMjQ5LCAKKyAgICA1NCwgMSwgMjA5LCAxNTAsIDIzNiwgODksIDI0OSwgNTQsIDEsIDIyNywgMjQ4LCAyNDksIDU0LCAxLCAyNDIsIDU4LCAyNDksIAorICAgIDU0LCAxLCAyMTMsIDI1MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDIxMywgMjUyLCAyNDksIDU0LCAxLCAxNzgsIDI0OSwgCisgICAgNTQsIDEsIDIwOSwgMTUwLCAxNzgsIDI0OSwgNTQsIDEsIDIwOCwgMjUyLCAyMDcsIDM2LCAyNDksIDU0LCAxLCAyMTgsIAorICAgIDIxOSwgMjA3LCAzNiwgMjQ5LCA1NCwgMSwgMjEyLCA2NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDIxMiwgNjQsIDI0OSwgCisgICAgNTQsIDEsIDIyMiwgMTc1LCAyMTIsIDY0LCAyNDksIDU0LCAxLCAxODMsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxODMsIAorICAgIDI0OSwgNTQsIDEsIDIxOSwgMjUzLCAyNDksIDU0LCAxLCAxOTQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxOTQsIDI0OSwgCisgICAgNTQsIDEsIDIxOCwgNjAsIDI0OSwgNTQsIDEsIDI0NywgMTkwLCAyNDksIDU0LCAxLCAyMjAsIDc1LCAyNDksIDU0LCAxLCAKKyAgICAyMjIsIDExMCwgMjQ5LCA1NCwgMSwgNzAsIDI0OSwgNTQsIDEsIDY2LCAyNDksIDU0LCAyLCAyMDUsIDE3NywgMjQ5LCA1NCwgCisgICAgMjIsIDIsIDcyLCAyNDksIDU0LCAyMiwgMiwgMjE2LCAxODUsIDcyLCAyNDksIDU0LCAyMiwgMiwgMjM4LCAyNTUsIDI0OSwgCisgICAgNTQsIDIyLCAyLCA3MCwgMjQ5LCA1NCwgMjIsIDIsIDIyNywgNDMsIDcwLCAyNDksIDU0LCAyMiwgMiwgNzQsIDI0OSwgNTQsIAorICAgIDIyLCAyLCAyMjcsIDQzLCA3NCwgMjQ5LCA1NCwgMjIsIDIsIDY2LCAyNDksIDU0LCAyMiwgMiwgMTA4LCAzNiwgMjA5LCAKKyAgICAxNTAsIDIxMiwgNjQsIDI0OSwgNTQsIDExMSwgMiwgMjE5LCAyNTUsIDI0OSwgNTQsIDExMSwgMiwgMjM0LCAyNDcsIDI0OSwgCisgICAgNTQsIDIxNiwgMTUxLCAyNDksIDU0LCAyMTYsIDE0NywgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMjAsIDE2MiwgMjIyLCAKKyAgICAxOCwgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMTUsIDE1OSwgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMjcsIDE0NCwgCisgICAgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMTYsIDE1MSwgMjI0LCAyNDMsIDEsIDE2MSwgMjI0LCAyNDMsIDEsIDIyNiwgMTAyLCAKKyAgICAyMjQsIDI0MywgMSwgMjI2LCAyMDcsIDIyNCwgMjQzLCAxLCAyMzYsIDg5LCAyMjQsIDI0MywgMSwgMjM1LCAxMzEsIDIyNCwgCisgICAgMjQzLCAxLCAyMTksIDI1MywgMjI0LCAyNDMsIDEsIDI0NywgMTkwLCAyMjQsIDI0MywgMSwgMjQ3LCAzNywgMjI0LCAyNDMsIAorICAgIDEsIDIyNywgMjQ4LCAyMjQsIDI0MywgMSwgMjE4LCA2MCwgMjI0LCAyNDMsIDEsIDIwNywgMzYsIDIyNCwgMjQzLCAxLCAKKyAgICAyMDYsIDEyMiwgMjI0LCAyNDMsIDEsIDI0MiwgNTgsIDIyNCwgMjQzLCAxLCAxODgsIDIyNCwgMjQzLCAxLCAxNzIsIDIyNCwgCisgICAgMjQzLCAxLCAyMTUsIDEzNSwgMjI0LCAyNDMsIDEsIDIxNSwgMjQ1LCAyMjQsIDI0MywgMSwgMjM3LCAxOTUsIDIyNCwgMjQzLCAKKyAgICAxLCAyMzcsIDU1LCAyMjQsIDI0MywgMSwgMjQ5LCAxMzYsIDIyNCwgMjQzLCAxLCAyNDgsIDE0NSwgMjI0LCAyNDMsIDEsIAorICAgIDE3OCwgMjI0LCAyNDMsIDEsIDIyMSwgMTQzLCAyMjQsIDI0MywgMSwgMjA1LCAzMiwgMjI0LCAyNDMsIDEsIDIwNSwgMjIsIAorICAgIDIyNCwgMjQzLCAxLCAyMzksIDkzLCAyMjQsIDI0MywgMSwgMTgzLCAyMjQsIDI0MywgMSwgMjEzLCAyNTIsIDIyNCwgMjQzLCAKKyAgICAxLCAxOTQsIDIyNCwgMjQzLCAxLCAxNDQsIDIyNCwgMjQzLCAxLCAyMzQsIDM5LCAyMjQsIDI0MywgMSwgMjAzLCA5MCwgCisgICAgMjI0LCAyNDMsIDEsIDIxMiwgNjQsIDIyNCwgMjQzLCAxLCAyMTAsIDExNCwgMjI0LCAyNDMsIDEsIDIwMSwgMTE0LCAyMjQsIAorICAgIDI0MywgMSwgNjIsIDIyNCwgMjQzLCAyMDgsIDEyLCAxLCAxODMsIDIyNCwgMjQzLCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgCisgICAgMjI0LCAyNDMsIDIyLCAyLCAyNTIsIDEzOCwgMjI0LCAyNDMsIDIyLCAyLCA3MCwgMjI0LCAyNDMsIDIyLCAyLCA3NCwgMjI0LCAKKyAgICAyNDMsIDIyLCAyLCAyMTcsIDYzLCAyMjQsIDI0MywgMjIsIDIsIDY2LCAyMjQsIDI0MywgMjIsIDIsIDIwMywgMTgyLCAyMjQsIAorICAgIDI0MywgMjIsIDIsIDcyLCAyMjQsIDI0MywgMTExLCAyLCAyMjcsIDExOCwgMjI0LCAyNDMsIDExMSwgMiwgMjIzLCAyNDMsIAorICAgIDIyNCwgMjQzLCAxMTEsIDIsIDE1NiwgMjI0LCAyNDMsIDExMSwgMiwgMjIwLCAyMTQsIDIyNCwgMjQzLCAxMTEsIDIsIDIxNiwgCisgICAgMjI2LCAyMjQsIDI0MywgMTExLCAyLCAxNDYsIDIyNCwgMjQzLCAxMTEsIDIsIDIwNywgODMsIDIyNCwgMjQzLCAxMTEsIDIsIAorICAgIDIxOCwgMzQsIDIyNCwgMjQzLCAxMTEsIDIsIDIyNywgNjQsIDIyNCwgMjQzLCAyLCAyMTMsIDIxMywgMjI0LCAyNDMsIDIsIAorICAgIDIxOCwgMTAwLCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNywgMzQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjE4LCA0NSwgMjA2LCAKKyAgICAxOCwgMjA3LCAzNCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyNDcsIDQ0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNSwgMTQsIAorICAgIDI0NywgNDQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA1LCAxMywgMjI0LCAyNDMsIDE3LCAxOTksIDgxLCAyMjQsIDI0MywgCisgICAgMTcsIDEwMiwgMjI0LCAyNDMsIDE3LCAxMDUsIDIyNCwgMjQzLCAxNywgMTQ3LCAyMjQsIDI0MywgMTcsIDE0OSwgMjI0LCAKKyAgICAyNDMsIDE3LCAxNjQsIDIyNCwgMjQzLCAxNywgMTg3LCAyMjQsIDI0MywgMTcsIDIxMCwgMTM1LCAyMjQsIDI0MywgMTcsIAorICAgIDE5MiwgMjI0LCAyNDMsIDE3LCAyMTksIDExMywgMjI0LCAyNDMsIDEsIDIwNCwgMjUzLCAyMjQsIDI0MywgMSwgMjA0LCAKKyAgICAyNDEsIDIyNCwgMjQzLCAxLCAyNDEsIDIyMCwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxOTksIDgxLCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMTcsIDEwMiwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxMDUsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTQ3LCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE0OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNjQsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxNywgMTg3LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDIxMCwgMTM1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIAorICAgIDE5MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAyMTksIDExMywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDE5NCwgMjE3LCA5NCwgCisgICAgMjQ2LCAyMjksIDEsIDI1MCwgMTU1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUxLCAxOTMsIDIxNywgOTQsIDI0NiwgMjI5LCAKKyAgICAxLCAyNTEsIDc2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUxLCAxNTEsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjUsIAorICAgIDE3NSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgMTAwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCAxMDEsIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDk5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCA5NCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDEsIDIyNCwgMjEwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCAyNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIAorICAgIDIyOCwgMTUyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCA0NywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyOCwgMzUsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjQsIDQyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjA0LCAzOCwgMjE3LCA5NCwgCisgICAgMjQ2LCAyMjksIDEsIDIwNCwgMzYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMDMsIDIzMywgMjE3LCA5NCwgMjQ2LCAyMjksIAorICAgIDEsIDIwMywgMTc0LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI1LCA0MCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgCisgICAgMTMzLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM5LCAyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAxNzksIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIDEwOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNCwgMTEwLCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMSwgMjE3LCA2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjE3LCAxNDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAKKyAgICAyMTYsIDI0OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIxNywgMTA4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjIxLCA0MiwgCisgICAgMjA0LCAyMTgsIDIxNywgOTQsIDI0NiwgMjI5LCAyMzYsIDg0LCAyMDQsIDIxOSwgMjE3LCA5NCwgMjQ2LCAyMjksIDIyMSwgCisgICAgNDAsIDIwNCwgMjE5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjEzLCAxNTAsIDIxNywgOTQsIDI0NiwgMjI5LCAyMTUsIDI0MywgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDI1MSwgMTg0LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjE0LCAyMTIsIDIyMSwgMzYsIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAyMTQsIDIxMiwgNTMsIDIyMSwgMzYsIDM3LCA0LCAxLCAyMTIsIDIxOSwgMjAzLCA1OSwgMzcsIDQsIAorICAgIDEsIDIyNCwgODIsIDI0MSwgMTc1LCAzNywgNCwgMSwgMjIwLCAxMjQsIDc0LCAzNywgNCwgMSwgMjAxLCAyOCwgMjM4LCAKKyAgICAxMDQsIDM3LCA0LCAxLCAyMDYsIDI0OCwgMjA2LCAyMDEsIDM3LCA0LCAxLCAyMDYsIDQzLCAyMDYsIDIwMSwgMzcsIDQsIDEsIAorICAgIDIwNiwgMjQ4LCAyMzQsIDE2NSwgNTQsIDM3LCA0LCAxLCAyMDYsIDI0OCwgMjAwLCA2NSwgMzcsIDQsIDEsIDIwNCwgMCwgCisgICAgMjA0LCAyMCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjA3LCAxOTgsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAKKyAgICAxNjYsIDIxNiwgMTUyLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMTQsIDIwMCwgMjA3LCAyMjcsIDIxNCwgCisgICAgMjEyLCAyNDgsIDE2NiwgMjQ3LCAxNzUsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIyNCwgMjM0LCAyMTEsIAorICAgIDI1MCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjI3LCAxMDgsIDIxMSwgMjUwLCAyMDcsIDIyNywgMjE0LCAKKyAgICAyMTIsIDI0OCwgMTY2LCAyNDIsIDU5LCAyMTEsIDI1MCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjQ5LCAxMzcsIAorICAgIDIxMSwgMjUwLCAyMDMsIDU2LCAxNTAsIDIyNywgNDEsIDIwMywgNTYsIDE1MCwgMjEwLCA4MSwgMjAzLCA1NiwgMTUwLCAKKyAgICAyMTUsIDIzLCAyMDMsIDU2LCAyLCAyMTksIDEyNiwgMjAzLCA1NiwgMiwgMjAwLCA4NiwgMjIxLCAyMDIsIDIwNywgMTg5LCAKKyAgICAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDI1MSwgMTg5LCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjAwLCAKKyAgICA4NiwgMjI4LCAxMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDIyNywgMjksIDIyOCwgMTA0LCAyMDcsIAorICAgIDE4OSwgMjAzLCA1NiwgMTUwLCAyNDcsIDE1MiwgNTcsIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjI3LCAyOSwgMjI4LCAKKyAgICAxMDQsIDIwNywgMTkwLCAyMTEsIDIyMCwgMjAzLCA1NiwgMTUwLCA1MywgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjA1LCAKKyAgICA4MywgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjI3LCAyOSwgMjUxLCAzNSwgMjAzLCA1NiwgMTUwLCA3MywgNTcsIDIwMywgCisgICAgNTYsIDE1MCwgMTIwLCAxOTAsIDU3LCAyMDMsIDU2LCAxNTAsIDEyNiwgMTkwLCA1NywgMjAzLCA1NiwgMTUwLCAyMTMsIDM0LCAKKyAgICAyMjcsIDQwLCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjUwLCAxNTIsIDIyOCwgMTA0LCAyMDcsIDE4OSwgCisgICAgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA0LCAzMywgMjAzLCA1NiwgCisgICAgMiwgMjEzLCAxMDUsIDIwMiwgMjA0LCAyMDQsIDMzLCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjUxLCAzNSwgMjAzLCA1NiwgCisgICAgMiwgMjEzLCAxMDUsIDIwMiwgMjA0LCAyNTEsIDM1LCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA0LCAzNCwgMywgMjA3LCA2LCAKKyAgICAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjUxLCAzNiwgMywgMjA3LCA2LCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyNTEsIDUwLCAKKyAgICAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyNDksIDEwNCwgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjAzLCA4MSwgMjAzLCA1NiwgMiwgCisgICAgMjUxLCAzNCwgMjAzLCA4MiwgMywgMjA3LCA2LCAyMDMsIDU2LCAyLCAyMDUsIDIxNCwgMjAzLCA1NiwgMiwgMjM0LCA4NywgCisgICAgMTY4LCAyNTEsIDMzLCAyMDMsIDU2LCAyLCAxNjgsIDI1MSwgMzMsIDIwMywgNTYsIDIsIDIxMiwgMTc3LCAxNjgsIDI1MSwgCisgICAgMzMsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDIwNCwgNDAsIDIyMSwgMjcsIDIwMywgNTYsIDIsIDI1MCwgMjMwLCAyMDMsIDU2LCAKKyAgICAyLCAyMTIsIDIyOCwgMjUwLCAyMzAsIDIwMywgNTYsIDE1MCwgMjQ3LCAxNTIsIDU2LCAyMDMsIDU2LCAyLCAyMjcsIDIwMSwgCisgICAgMjAzLCA1NiwgMiwgMjAzLCAyMjYsIDIwMywgNTYsIDE1MCwgMjEzLCAyNywgNTYsIDIwMywgNTYsIDE1MCwgNTMsIDIxMywgCisgICAgMjcsIDU2LCA4LCAxLCA0LCA2LCA2MiwgOCwgMSwgNCwgNiwgMjUxLCAyMjEsIDgsIDQsIDEsIDIwNCwgMTg1LCAyNTEsIAorICAgIDIyMSwgOCwgMSwgNCwgNiwgMjQ5LCA3MSwgMjUwLCAxMDMsIDgsIDEsIDQsIDYsIDI0NywgMjIzLCA4LCAxLCA0LCA2LCAKKyAgICAyNDIsIDE1MywgOCwgMSwgNCwgNiwgMjM4LCA3NCwgOCwgMSwgNCwgNiwgNzIsIDgsIDQsIDEsIDIwNCwgMTg1LCAxNzYsIAorICAgIDcyLCA4LCA0LCAxLCAyMDQsIDE4NSwgNzAsIDgsIDEsIDQsIDYsIDIyNywgMjUxLCA4LCAxLCA0LCA2LCAyMjcsIDExOCwgOCwgCisgICAgMSwgNCwgNiwgMjI1LCAxOTMsIDMsIDk3LCA4LCAxLCA0LCA2LCAyMjMsIDI0MywgOCwgMSwgNCwgNiwgMjEzLCAxMDUsIAorICAgIDIyMCwgMjE0LCA4LCAxLCA0LCA2LCA3NCwgOCwgMSwgNCwgNiwgMTc2LCA3NCwgOCwgNCwgMSwgMjA5LCAxNzMsIDc0LCA4LCAKKyAgICA0LCAxLCAyMDksIDE3MywgMTc2LCA3NCwgOCwgNCwgMSwgMjA5LCAxNzMsIDE2MywgMywgOTcsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAyMTcsIDEyMSwgOCwgMSwgNCwgNiwgMjE3LCAzLCA4LCA0LCAxLCAyMDUsIDE1OCwgMTY3LCA3NCwgOCwgNCwgMSwgCisgICAgMjQ4LCA5MywgMTY3LCA3NCwgOCwgMSwgNCwgNiwgMjE2LCAyMjYsIDgsIDEsIDQsIDYsIDIxMywgMTA1LCAxNDYsIDgsIDEsIAorICAgIDQsIDYsIDIwNCwgMTg1LCAxNDYsIDgsIDEsIDQsIDYsIDIwNywgODMsIDgsIDEsIDQsIDYsIDY2LCA4LCA0LCAxLCAyMDksIAorICAgIDE3MywgNjYsIDgsIDQsIDEsIDIwOSwgMTczLCAyNDEsIDcyLCA2NiwgOCwgNCwgMSwgMjA5LCAxNzMsIDIwNCwgMTg1LCAKKyAgICAyMjMsIDI0MywgOCwgMSwgNCwgNiwgMjAzLCAxNjgsIDgsIDEsIDQsIDYsIDIwMSwgMTQ3LCA4LCAxLCA0LCA2LCAxOTksIAorICAgIDE1NywgOCwgMSwgNCwgNiwgMjM4LCA4LCA4LCAxLCAyMDIsIDE4OSwgMjI1LCA2NiwgMjA4LCAyMTYsIDgsIDEsIDI1MSwgCisgICAgMTcxLCAzMSwgMSwgNCwgNiwgMjM2LCA2MCwgMzEsIDEsIDQsIDYsIDIyNSwgODcsIDMxLCAxLCA0LCA2LCAyMTUsIDIwNCwgCisgICAgMzEsIDEsIDQsIDYsIDIxMywgOTAsIDMxLCAxLCA0LCA2LCAyMTQsIDIzNSwgMzcsIDEsIDQsIDYsIDIzOCwgMjA5LCA2NywgCisgICAgMSwgNiwgNjIsIDY3LCAxLCA2LCAyNTEsIDIyMSwgNjcsIDEsIDYsIDI1MCwgMTAzLCA2NywgMSwgNiwgMjQ5LCA3MSwgMjUwLCAKKyAgICAxMDMsIDY3LCAxLCA2LCAyNDIsIDE1MywgNjcsIDEsIDYsIDcyLCA2NywgMSwgNiwgMjEzLCAxMDUsIDcyLCA2NywgMSwgNiwgCisgICAgMjM2LCAxNTYsIDY3LCAxLCA2LCAyMzQsIDI0NywgNjcsIDEsIDYsIDcwLCA2NywgMSwgNiwgMjI3LCAyNTEsIDY3LCAxLCA2LCAKKyAgICAyMjcsIDExOCwgNjcsIDEsIDYsIDE1NiwgNjcsIDEsIDYsIDIyMywgMjQzLCA2NywgMSwgNiwgMjIwLCAyMTQsIDY3LCAxLCAKKyAgICA2LCAyMTMsIDEwNSwgMjIwLCAyMTQsIDY3LCAxLCA2LCA3NCwgNjcsIDEsIDYsIDIxNywgMywgNjcsIDEsIDYsIDIxNiwgCisgICAgMjI2LCA2NywgMSwgNiwgMTQ2LCA2NywgMSwgNiwgMjA3LCA4MywgNjcsIDEsIDYsIDY2LCA2NywgMSwgNiwgMjAxLCAxNDcsIAorICAgIDY3LCAxLCA0LCA2MiwgNjcsIDEsIDQsIDIwNCwgMTg1LCA2MiwgNjcsIDEsIDQsIDI1MSwgMTEyLCA2NywgMSwgNCwgMjA0LCAKKyAgICAxODUsIDI1MSwgMjIxLCA2NywgMSwgNCwgMjUwLCAxMDMsIDY3LCAxLCA0LCAyNDIsIDE1MywgNjcsIDEsIDQsIDcyLCA2NywgCisgICAgMSwgNCwgMjExLCAyMTgsIDY3LCAxLCA0LCAxNzYsIDcyLCA2NywgMSwgNCwgMjA0LCAxODUsIDE3NiwgNzIsIDY3LCAxLCA0LCAKKyAgICAyMzYsIDE1NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCA3MCwgNjcsIDEsIDQsIDIyNywgMTE4LCA2NywgMSwgNCwgMjIzLCAyNDMsIAorICAgIDY3LCAxLCA0LCAyMzgsIDE2NSwgNjcsIDEsIDQsIDc0LCA2NywgMSwgNCwgMTc2LCA3NCwgNjcsIDEsIDQsIDIwNSwgMTU4LCAKKyAgICAxNjcsIDc0LCA2NywgMSwgNCwgMjQ4LCA5MywgMTY3LCA3NCwgNjcsIDEsIDQsIDIxNiwgMjI2LCA2NywgMSwgNCwgMjA3LCAKKyAgICA4MywgNjcsIDEsIDQsIDY2LCA2NywgMSwgNCwgMjA5LCAxNzMsIDY2LCA2NywgMSwgNCwgMjA0LCAxODUsIDIyMywgMjQzLCAKKyAgICA2NywgMSwgNCwgMjAzLCAxNjgsIDY3LCAxLCA0LCAyNTEsIDE3MSwgNjcsIDEsIDQsIDI0OCwgMjA4LCA2NywgMSwgNCwgMzEsIAorICAgIDIzNiwgNjAsIDY3LCAxLCA0LCAyNDEsIDEzNiwgNjcsIDEsIDQsIDMxLCAyMTUsIDIyOSwgNjcsIDEsIDQsIDI0NiwgMjM2LCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDcwLCA4LCAyMDgsIDQsIDQsIDEsIDE0NiwgOCwgMjA4LCA0LCA0LCAxLCA2NiwgOCwgMjA4LCAKKyAgICA0LCA0LCAxLCAyMDMsIDE2OCwgMzEsIDIwOCwgNCwgNCwgMSwgMjQ4LCAyMDgsIDMxLCAyMDgsIDQsIDQsIDEsIDIzNiwgNjAsIAorICAgIDMxLCAyMDgsIDQsIDQsIDEsIDIxMywgOTAsIDMxLCAyMDgsIDQsIDQsIDEsIDIxNSwgMjI5LCAzMSwgMjA4LCA0LCA0LCAxLCAKKyAgICAyNDYsIDIzNiwgOCwgNCwgMSwgMjA0LCAzMSwgOCwgNCwgMSwgNjgsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDI0MiwgCisgICAgMTU0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzgsIDYsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMywgCisgICAgMjQ0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjcsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgCisgICAgMzMsIDMsIDIzNywgNjksIDI2LCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTAxLCAyMDUsIDI0MCwgCisgICAgOCwgNCwgMSwgMjA3LCA4NCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDEwMSwgMjA1LCAyNDAsIAorICAgIDgsIDQsIDEsIDIwNCwgMTg1LCAyMzYsIDE1NiwgNjcsIDEsIDM3LCAyMzgsIDE3OSwgOCwgNCwgMSwgMjI4LCA3MSwgMjM2LCAKKyAgICAxNTYsIDgsIDQsIDEsIDIwNiwgMTI1LCAzLCAyMDgsIDUxLCA4LCA0LCA2LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNCwgMSwgCisgICAgMjI4LCA0MiwgMywgOTcsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCA5NywgOCwgNCwgNiwgMSwgMTA4LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDk3LCA4LCA0LCAxLCA2OCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzOCwgNiwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjE0LCAzMywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzOCwgOTUsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDM1LCAzLCAyMTMsIAorICAgIDExMSwgMTE3LCA4LCA0LCAxLCAyNTEsIDExMywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIzMywgCisgICAgMTg3LCAyNiwgMjA3LCA2LCA4LCA0LCAxLCAxOTcsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDE3NiwgMTk3LCAzLCAKKyAgICAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCAxOTcsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDIxMSwgMjE5LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAxNzYsIDE2MywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjM4LCA5NSwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMTA4LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzgsIDksIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAyMDQsIAorICAgIDE4NSwgMjUxLCAxMTIsIDY3LCAxLCA0LCAyNDcsIDIyMywgNjcsIDEsIDQsIDI0NywgMjI0LCAzLCAyNDIsIDE5OCwgNjcsIAorICAgIDEsIDQsIDIzOCwgNzQsIDY3LCAxLCA0LCAyMTMsIDEwNSwgMTc2LCA3MiwgNjcsIDEsIDQsIDIzOCwgNSwgNjcsIDEsIDQsIAorICAgIDI0MCwgMTgxLCAyMjcsIDI1MiwgMywgOTcsIDY3LCAxLCA0LCAxMzUsIDIzNiwgMTU2LCA2NywgMSwgNCwgMjA0LCAxODUsIAorICAgIDIzNCwgMjQ3LCA2NywgMSwgNCwgMjMzLCAxOSwgMywgOTcsIDY3LCAxLCA0LCAyMjgsIDQxLCA2NywgMSwgNCwgNiwgNzAsIAorICAgIDY3LCAxLCA0LCA2LCAyMzMsIDE5LCAzLCA5NywgNjcsIDEsIDQsIDIyNywgMjUyLCAzLCAyNDIsIDIzMCwgNjcsIDEsIDQsIAorICAgIDIyNSwgMTkzLCAzLCAyMTMsIDExMSwgMTE3LCA2NywgMSwgNCwgMjI1LCAxOTMsIDMsIDIxNiwgMTg0LCAxMTcsIDY3LCAxLCAKKyAgICA0LCA2LCAxNTYsIDY3LCAxLCA0LCAyMjMsIDI0NCwgMywgMTE3LCA2NywgMSwgNCwgMjA0LCAxODUsIDIyMywgMjQ0LCAzLCAKKyAgICAxNjgsIDIyNSwgMTYsIDY3LCAxLCA0LCAyMjAsIDIxNSwgMywgNDksIDExNywgNjcsIDEsIDQsIDIyMCwgMjE1LCAzLCAyMTMsIAorICAgIDExMSwgMTE3LCA2NywgMSwgNCwgNiwgMjIwLCAyMTQsIDY3LCAxLCA0LCAyNDksIDcxLCA3NCwgNjcsIDEsIDQsIDIxNSwgCisgICAgMjI5LCA2NywgMSwgNCwgMjEyLCAxMjMsIDMsIDExNywgNjcsIDEsIDQsIDIzOCwgOTQsIDY3LCAxLCA0LCAyMDcsIDg0LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA2NywgMSwgNCwgMTA4LCAxNDgsIDY3LCAxLCA0LCAyMDMsIDIyMCwgNjcsIDEsIDQsIDYsIDY2LCAKKyAgICA2NywgMSwgNCwgMjAzLCAxNjksIDMsIDExNywgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMDMsIDE2OCwgNjcsIDEsIDQsIDE5OSwgCisgICAgMTU3LCA2NywgMSwgNCwgMTk5LCAxNTgsIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAxOTksIDE1OCwgMywgMjQyLCAKKyAgICAxOTgsIDY3LCAxLCA0LCAyMzgsIDgsIDY3LCAxLCA0LCAyMDYsIDg4LCAzOCwgMjM5LCAxODAsIDIzNSwgNzQsIDI1MSwgCisgICAgMjUxLCAzOCwgMjM5LCAxODAsIDI1MSwgMjM5LCAyNTEsIDI1MSwgMzgsIDIwOSwgNDIsIDU3LCAzOCwgMjA3LCAxOTYsIDgxLCAKKyAgICAzOCwgMjIyLCAyMjcsIDM4LCAyMzUsIDcxLCAzOCwgMjIyLCAyMjUsIDM4LCAyNTEsIDIzNywgMzgsIDIzNSwgNzIsIDM4LCAKKyAgICAyNTEsIDIzOCwgMzgsIDgsIDQsIDEsIDIxNCwgMzMsIDU3LCAzOCwgMjQ4LCA1NiwgMzgsIDIyMiwgMjI2LCAzOCwgNTMsIAorICAgIDI0NiwgMTQ3LCA1NiwgMzgsIDIxNywgMTExLCA1NiwgMzgsIDE5OSwgMjcsIDU3LCAzOCwgMjI4LCAyNywgNTcsIDM4LCAKKyAgICAyMDMsIDIxNSwgNTYsIDM4LCAyMDMsIDE5OCwgNTYsIDM4LCA4LCA0LCAxLCAyMzcsIDQxLCAxNzYsIDM1LCA1NiwgMzgsIDgsIAorICAgIDQsIDEsIDI1MSwgMjIxLCAzOCwgOCwgNCwgMSwgMjUxLCAzMSwgMzgsIDgsIDQsIDEsIDI1MCwgMTIzLCAzOCwgOCwgNCwgMSwgCisgICAgMjQ3LCAyMjQsIDI0NywgNjksIDM4LCA4LCA0LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgMzgsIDgsIDQsIDEsIDIzOCwgNzQsIAorICAgIDM4LCA4LCA0LCAxLCAyMzYsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDIzNiwgMTU2LCAzOCwgOCwgNCwgMSwgMjI3LCAxMTgsIAorICAgIDM4LCA4LCA0LCAxLCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAyMjMsIDI0MywgMzgsIDgsIAorICAgIDQsIDEsIDIyMCwgMjE0LCAzOCwgOCwgMSwgNCwgNiwgMjIwLCAyMTQsIDM4LCA4LCAxLCA0LCA2LCAxNDYsIDM4LCA4LCA0LCAKKyAgICAxLCAyMTQsIDMzLCAyMTIsIDIyMiwgMzgsIDgsIDQsIDEsIDIxMiwgMTIyLCAzOCwgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMiwgCisgICAgMzgsIDgsIDQsIDEsIDE5OSwgMTU3LCAzOCwgOCwgNCwgMSwgMjUxLCAxMTIsIDM4LCA4LCA0LCAxLCAyNTAsIDEwMywgMzgsIAorICAgIDgsIDQsIDEsIDI0OCwgMjA4LCAzOCwgOCwgNCwgMSwgMjExLCAyMTgsIDM4LCA4LCA0LCAxLCAyMzgsIDUsIDM4LCA4LCA0LCAKKyAgICAxLCAyMjUsIDE5MywgMywgNTMsIDEwMSwgMjA1LCAyNDAsIDM4LCA4LCA0LCAxLCAxNjMsIDMsIDE2MiwgMjQ3LCA1NywgOTcsIAorICAgIDM4LCA4LCA0LCAxLCAyMTYsIDIyNiwgMzgsIDgsIDQsIDEsIDIzOCwgOTQsIDM4LCA4LCA0LCAxLCAxMDgsIDMsIDE2MiwgCisgICAgMjQ3LCA1NywgOTcsIDM4LCA4LCA0LCAxLCAyMDEsIDE0NywgMzgsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCAzOCwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAzOCwgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc0LCAzOCwgMTE1LCAyMDcsIDE4LCAKKyAgICA1NiwgMzgsIDI0MSwgMTQ1LCA4MSwgMzgsIDUzLCAyMjgsIDUwLCAyNDgsIDU4LCA1NywgMzgsIDI1MSwgMTE3LCAxNjAsIAorICAgIDIwNSwgMTg2LCA1NywgMzgsIDQ5LCAyNTAsIDIwMywgNTYsIDM4LCA1MSwgMjUwLCAyMDMsIDI2LCAxMjcsIDI1MCwgMjAzLCAKKyAgICA1NywgOCwgNiwgMSwgMzUsIDMsIDIxMywgMjcsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAyNywgNTcsIDgsIDYsIDEsIAorICAgIDY4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDY4LCAzLCA3MywgNTYsIDgsIDYsIDEsIDY4LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDY4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDY4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDY4LCAzLCAyMjQsIDE3NywgCisgICAgNTcsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDcwLCAyNiwgMTY5LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAKKyAgICA3MCwgMjYsIDE2OSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NiwgCisgICAgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDI0NywgNjksIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIyMiwgCisgICAgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgCisgICAgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDE5NywgCisgICAgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyMDUsIAorICAgIDI0MSwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgNzAsIDI2LCAKKyAgICAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0NywgNzAsIDI2LCAyNDgsIDU3LCA4LCA2LCAxLCAyMzgsIDYsIDMsIDczLCAKKyAgICA1NiwgOCwgNCwgMSwgMjM4LCA2LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMjM2LCAxNTcsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMzQsIDI0OCwgCisgICAgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAyMzQsIDI0OCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIzNCwgCisgICAgMjQ4LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIAorICAgIDI0OCwgNTgsIDU3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ4LCA1OCwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIwNSwgCisgICAgMjQxLCA1NywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc1LCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgCisgICAgMTY5LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMTY5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAyMjcsIDExOSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMjcsIAorICAgIDExOSwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgNzMsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDIyNCwgMTc3LCA1NywgCisgICAgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NiwgMTQ3LCA1NywgCisgICAgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDE2OSwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDQsIDMsIDE2OSwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDczLCA1NywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDczLCA1NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIyNCwgMTc3LCA1NywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0NiwgMTQ3LCA1NywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgCisgICAgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDI0MSwgCisgICAgNzQsIDgsIDQsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyNDEsIDc0LCA4LCA2LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDIxNiwgMjI3LCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAxNjksIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCA3MywgNTYsIDgsIDQsIDEsIAorICAgIDIxNiwgMjI3LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjE0LCAzMywgMywgCisgICAgNzMsIDU2LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDczLCA1NywgOCwgNiwgCisgICAgMSwgMjE0LCAzMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDczLCAyNDgsIAorICAgIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIAorICAgIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMjEyLCAxMjMsIDMsIDI1MSwgMjM5LCAyNiwgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjUxLCAyMzksIDI2LCAKKyAgICA3MywgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDEyNiwgMjYsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIAorICAgIDI0NywgMTI2LCAyNiwgNzMsIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCA3MywgNTYsIAorICAgIDgsIDQsIDEsIDIwNywgODQsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjA3LCA4NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDcsIAorICAgIDg0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgCisgICAgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIAorICAgIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCA1NywgCisgICAgOCwgNiwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAKKyAgICAxMDgsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjksIDI2LCAyNDEsIDc0LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjQxLCA3NCwgOCwgNiwgMSwgCisgICAgMjAzLCAxNjksIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIwMywgMTY5LCAKKyAgICAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMjM1LCA3MywgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDE2OSwgOCwgNCwgMSwgMjAxLCAKKyAgICAxNDgsIDMsIDE2OSwgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyNDEsIAorICAgIDc0LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU2LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE0OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDAsIDE5NiwgMywgCisgICAgNzMsIDU2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMDAsIDE5NiwgMywgMjQxLCA3NCwgOCwgCisgICAgNCwgMSwgMjAwLCAxOTYsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIwMCwgCisgICAgMTI0LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIAorICAgIDI0NiwgMTQ2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAxOTksIDE1OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjI0LCAxNzcsIDU3LCA4LCAKKyAgICA0LCAxLCAyMzQsIDI0OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAKKyAgICAyMDEsIDE0OCwgMywgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDUxLCAxNjcsIDIxMywgMjYsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMTY4LCAKKyAgICAyMTIsIDEyMywgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjMsIDMsIDEyMiwgOTcsIDgsIDYsIDEsIAorICAgIDIxMCwgNzksIDIxMiwgMTIyLCA4LCA0LCAxLCAyNDEsIDEzNiwgOCwgNiwgMSwgMzUsIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDczLCA1NywgOCwgNiwgMSwgMzUsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMzUsIDMsIDIzMywgMTg3LCAKKyAgICA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAxNjksIAorICAgIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgCisgICAgNzMsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAKKyAgICAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIAorICAgIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0OCwgNTgsIDI2LCAxNjksIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzMywgMTg3LCA1NiwgCisgICAgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgCisgICAgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAKKyAgICAyNiwgNzMsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDczLCA1NywgOCwgNiwgMSwgMTk3LCAzLCA3MywgNTcsIAorICAgIDgsIDQsIDEsIDE5NywgMywgNzMsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgMjA1LCAyNDAsIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgCisgICAgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIAorICAgIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgCisgICAgMSwgMjMzLCAxOSwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIzMywgCisgICAgMTksIDMsIDczLCA1NywgOCwgNiwgMSwgMTYzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDE2MywgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzMywgCisgICAgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgCisgICAgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDE2MywgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA0LCAKKyAgICAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgCisgICAgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDEwOCwgMywgNzMsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDczLCA1NywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDE4NywgCisgICAgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDEwOCwgCisgICAgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAKKyAgICAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCAKKyAgICA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDIwMCwgMTI0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAKKyAgICAyMDUsIDI0MCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMjEsIDIwMywgMjI0LCAxMzksIDgsIAorICAgIDQsIDEsIDIyMSwgMjAzLCAyMjQsIDEzOSwgOCwgNiwgMSwgMjIxLCAyMDMsIDIwMywgMTY4LCA4LCA0LCAxLCAyMjEsIDIwMywgCisgICAgMjAzLCAxNjgsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMjQsIDc0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjI0LCA3NCwgCisgICAgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MSwgMzEsIDQsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAKKyAgICAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjUxLCAKKyAgICAxMTMsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjgsIAorICAgIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgCisgICAgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAKKyAgICAyMzEsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDEsIAorICAgIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgCisgICAgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgCisgICAgMjQxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNCwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIAorICAgIDIyOCwgNDIsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgCisgICAgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgCisgICAgMjAsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQxLCAzMSwgCisgICAgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgCisgICAgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIAorICAgIDIxNywgODIsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgCisgICAgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDQsIDEsIDIwMywgMjIxLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MSwgCisgICAgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCAKKyAgICA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIzMSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgCisgICAgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIwMywgNzQsIAorICAgIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgCisgICAgMjE3LCA4NCwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIAorICAgIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgCisgICAgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAKKyAgICAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgCisgICAgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIAorICAgIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgCisgICAgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAKKyAgICAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIAorICAgIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA0LCAxLCAKKyAgICAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAKKyAgICAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAKKyAgICAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIAorICAgIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAKKyAgICAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIAorICAgIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgCisgICAgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAKKyAgICAyMTQsIDI0MiwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIAorICAgIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIAorICAgIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNCwgMjQyLCAKKyAgICAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgCisgICAgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAKKyAgICAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMiwgMTcwLCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTMsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzUsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIDIzMiwgCisgICAgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyNDIsIDMxLCAyMjYsIDU4LCAzMSwgMjE0LCAyNDIsIDMxLCAyMTQsIAorICAgIDIyOCwgMzEsIDIxNiwgMjAsIDMxLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAKKyAgICAzLCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgCisgICAgMTI1LCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjQyLCAzMSwgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIAorICAgIDIwMiwgMTcwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAKKyAgICAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIAorICAgIDIyOCwgNDIsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjIyLCAyMjgsIDMxLCA2LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIAorICAgIDMxLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIwMiwgMTcwLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIAorICAgIDI0MSwgNjgsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIxMywgOTEsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjEzLCA5MSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAKKyAgICAyMDMsIDIyMSwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDYsIAorICAgIDEsIDIwMywgMjIxLCAzLCAyMDIsIDE3MCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMjIsIDIyOCwgMzEsIDYsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjEzLCA5MSwgMywgCisgICAgMjQxLCAyNDEsIDMxLCAyNDEsIDY4LCAyNiwgMjAzLCA3NCwgMzEsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MiwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgCisgICAgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAKKyAgICAyNDIsIDMxLCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQxLCAyMzgsIDE4MCwgMjE0LCA5NCwgMjM4LCAxOTEsIDIxNCwgOTQsIAorICAgIDIzOCwgMTgwLCAyMDgsIDI0NCwgMjM4LCAxOTEsIDIwOCwgMjQ0LCAyMDYsIDQxLCAyMDgsIDI0NCwgMjM2LCAyMjcsIDIwOCwgCisgICAgMjQ0LCAyMDksIDEwNCwgMjA4LCAyNDQsIDIzNywgMTAyLCAyMDgsIDI0NCwgMjE0LCAyMTIsIDIwOCwgMjQ0LCAyMDYsIDc3LCAKKyAgICAyMDgsIDI0NCwgMjM0LCAyMjIsIDIwOCwgMjQ0LCAxOTksIDgyLCAyMDEsIDI1LCAyMDgsIDI0NCwgMTk5LCA4MiwgMjAxLCAKKyAgICAyNSwgMjE4LCAyMzIsIDE5OSwgODIsIDIwMSwgMjUsIDIyNywgMTYxLCAyMjUsIDE5LCA4MSwgMjEzLCAzNywgODEsIDIzMywgCisgICAgMzMsIDIxOCwgMjMzLCAyMzMsIDMzLCAyMzcsIDEwMiwgMjQxLCAyNDQsIDIzOCwgMTgwLCAyNDEsIDI0NCwgMjM4LCAxOTEsIAorICAgIDI0MSwgMjQ0LCAyMzMsIDE3NywgMTQ4LCA1MywgODMsIDIyNCwgMTc2LCA1MywgMTI4LCAyMjQsIDE3NiwgNDksIDIwOSwgCisgICAgMTM5LCAyMTQsIDYzLCA4MSwgNTEsIDIwOSwgMTM5LCAyMTQsIDYzLCA4MSwgMjA5LCAxMzksIDIyNCwgNTgsIDIxNCwgNjMsIAorICAgIDgxLCAyMDksIDEzOSwgMjM0LCA1NiwgMjE0LCA2MywgODEsIDQ5LCA1MywgMjE0LCA2MywgODEsIDUxLCA1MywgMjE0LCA2MywgCisgICAgODEsIDUzLCAyMjQsIDU4LCAyMTQsIDYzLCA4MSwgNTMsIDIzNCwgNTYsIDIxNCwgNjMsIDgxLCAyNDIsIDQwLCA1MywgMjQyLCAKKyAgICA0MCwgMjQ4LCAyMCwgMjA1LCA5NSwgMjQ4LCAyMCwgMTEyLCA3MywgMjI1LCAzOCwgMTIwLCA3MywgMjI1LCAzOCwgMjMzLCAKKyAgICAxNzcsIDIzOCwgMTk1LCAyMzMsIDMxLCAyMTUsIDk5LCAyMjQsIDE3NywgMjEwLCAxNTQsIDIxNiwgMTI4LCAyMTAsIDE1NCwgCisgICAgMjI1LCAxOSwgMjM4LCAxODksIDIxMywgMzcsIDIzOCwgMTg5LCAyMTUsIDc4LCAyNDEsIDgsIDIzNiwgMjQwLCAyMjUsIDE5LCAKKyAgICAyMTYsIDIzOSwgMjEzLCAzNywgMjE2LCAyMzksIDIyMCwgMTI0LCAyMTgsIDI0MCwgMjA4LCAyNDQsIDIxNiwgMjgsIDIyMSwgCisgICAgMTcwLCA1NCwgMjE2LCAyOCwgMjA2LCAxNjcsIDIwNiwgNTEsIDU0LCAyMTUsIDE0LCA1MywgMjE1LCAxNCwgMjA1LCA4MywgCisgICAgMjE1LCAxNCwgMjEzLCAxMDUsIDIxNSwgMTQsIDIxMywgMTA1LCA1MywgMjE1LCAxNCwgMjEzLCAxMDUsIDIwNSwgODMsIAorICAgIDIxNSwgMTQsIDI0NywgMTI5LCAyMDksIDEzOSwgMjI1LCAyMywgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIwOSwgMTM5LCAKKyAgICAyMTMsIDQxLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjEzLCAxNjYsIDgxLCA1MywgMjM4LCA0MywgODEsIDIyOCwgNTgsIAorICAgIDIxNiwgMjQxLCAyMDMsIDI0OCwgMTcxLCAyMDYsIDcsIDI0NywgMTMwLCAyMjgsIDc1LCAyMTUsIDk5LCAyNTAsIDE2MywgCisgICAgMjMzLCAzNCwgMjQ4LCAyMCwgMjM2LCAyMTksIDIwOSwgNzUsIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjE0LCA3MywgNTEsIDUyLCAKKyAgICAyNDgsIDcwLCAzLCAyMTQsIDczLCA1MywgMjE0LCA3OSwgODEsIDIxNCwgNzksIDIzOCwgNDMsIDgxLCAyMzgsIDQzLCAyMTQsIAorICAgIDc5LCA4MSwgMjA1LCAyMTYsIDIsIDIzOCwgODEsIDIxMywgMTA1LCAyMTUsIDE2MywgNTQsIDYzLCA5OCwgMjQ4LCAyMCwgCisgICAgNjMsIDg3LCAyNDgsIDIwLCAxMjgsIDI1MCwgMTY1LCAyMTMsIDEwNSwgMjEwLCAxNjcsIDI0NiwgMTExLCAyMDMsIDIyOCwgCisgICAgMTIwLCAyNTAsIDE2NCwgMjUxLCAxMjgsIDIwMiwgMjQ3LCAyNDYsIDY4LCAyMjEsIDE1NywgNTQsIDIwNywgMTY3LCAyNDEsIAorICAgIDI0NCwgMjI4LCA1MCwgMjAzLCAyNDgsIDIzNywgMjUsIDIxNCwgMjEyLCA4MSwgMTI2LCA3MywgMjE0LCAyMTEsIDIxNCwgCisgICAgOTAsIDIxNSwgMTQsIDIzNiwgMjI5LCA3MywgMjE0LCAyMTEsIDIzNywgNjEsIDczLCAyMTQsIDIxMSwgMTIwLCA3MywgMjE0LCAKKyAgICAyMTEsIDIzNiwgMjI5LCA3MywgODEsIDIzOSwgMTgwLCAyNDIsIDIzNCwgMjA1LCA5NCwgODMsIDIzNiwgMjI5LCAyNDAsIAorICAgIDE4MCwgMjIyLCA2NiwgMTMsIDIwOCwgMjQ0LCAyMDAsIDIzOCwgMjI3LCAxNjEsIDIzNiwgMTgxLCAyNTEsIDgsIDIyOCwgCisgICAgNDgsIDIwNSwgMjMyLCAyMjgsIDQ4LCAyMTAsIDE1NCwgMjI4LCA0OCwgMjE1LCAxMTMsIDIyNSwgMTksIDIyOCwgMTgsIAorICAgIDIxMywgMzcsIDIyOCwgMTgsIDIzNywgNzMsIDIwOCwgMzMsIDIyOCwgMTgsIDIxNSwgNzgsIDI0MSwgOCwgMjI4LCAxOCwgCisgICAgMjI4LCA4NywgMjA3LCAxMTUsIDIwNywgMTg0LCAyNTEsIDI0MSwgMjA3LCAxMTUsIDIwNywgMTg0LCAyMjgsIDg3LCA5LCAKKyAgICAyMzYsIDI0MiwgMjEwLCA4NCwgMjUxLCAyNDEsIDksIDIzNiwgMjQyLCAyMTAsIDg0LCAyMjAsIDExOCwgMTcsIDIxMCwgODUsIAorICAgIDIxOCwgMjM2LCAxNywgMjEwLCA4NSwgMjA3LCAyMTMsIDE5OSwgODEsIDIwNywgMjEzLCA4LCA0LCAxLCA3MCwgMjA3LCAKKyAgICAyMTMsIDE0OSwgMjA3LCAyMTMsIDE2NCwgMjA3LCAyMTMsIDE4NywgMjA3LCAyMTMsIDIxMCwgMTM1LCAyMDcsIDIxMywgCisgICAgMTkyLCAyMDcsIDIxMywgMjE5LCAxMTMsIDIwNywgMjEzLCA5MywgNTQsIDIwNywgMjEzLCAyMjEsIDE1NiwgMjA3LCAyMTMsIAorICAgIDIzOCwgMTIyLCA1NCwgMjA3LCAyMTMsIDQ5LCAyMTYsIDExNSwgMjA3LCAyMTMsIDUxLCAyMTYsIDExNSwgMjA3LCAyMTMsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE0LCAyMDgsIDQsIDE5OSwgODEsIDIwOCwgNCwgMTAyLCAyMDgsIDQsIDEwNSwgMjA4LCA0LCAKKyAgICAxNDcsIDIwOCwgNCwgMTQ5LCAyMDgsIDQsIDE2NCwgMjA4LCA0LCAxODcsIDIwOCwgNCwgMjEwLCAxMzUsIDIwOCwgNCwgCisgICAgMTkyLCAyMDgsIDQsIDIxOSwgMTEzLCAyMDgsIDQsIDkzLCA1NCwgMjA4LCA0LCAyMjEsIDE1NiwgMjA4LCA0LCAyMzgsIAorICAgIDEyMiwgNTQsIDIwOCwgNCwgNDksIDIxNiwgMTE1LCAyMDgsIDQsIDUxLCAyMTYsIDExNSwgOCwgMjA4LCA0LCA0LCAxLCA2MiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCA3MiwgOCwgMjA4LCA0LCA0LCAxLCA3NCwgOCwgMjA4LCA0LCA0LCAxLCAyMDAsIDE5NSwgOCwgCisgICAgMjA4LCA0LCA0LCAxLCAyMTEsIDIxOCwgOCwgMjA4LCA0LCA0LCAxLCAyMzQsIDI0NywgOCwgMjA4LCA0LCA0LCAxLCAyMjcsIAorICAgIDExOCwgOCwgMjA4LCA0LCA0LCAxLCAxNTYsIDgsIDIwOCwgNCwgNCwgMSwgMjIzLCAyNDMsIDgsIDIwOCwgNCwgNCwgMSwgCisgICAgMjIwLCAyMTQsIDgsIDIwOCwgNCwgNCwgMSwgMjE2LCAyMjYsIDgsIDIwOCwgNCwgNCwgMSwgMjEyLCAxMjIsIDgsIDIwOCwgCisgICAgNCwgNCwgMSwgMjA3LCA4MywgMjM4LCA2MCwgNTQsIDI0NiwgODAsIDU0LCAyNDIsIDIxOSwgNTQsIDIzNiwgMjA5LCAyMzYsIAorICAgIDIxMywgNTQsIDIyNCwgMTU2LCA1NCwgMjIxLCAxNzEsIDU0LCAyMjAsIDE0MSwgNTQsIDIxNiwgNSwgNTQsIDIxMiwgMTQ5LCAKKyAgICA1NCwgMjAwLCAyNDYsIDU0LCAyMjAsIDgsIDIxMCwgNTEsIDU0LCAyNDAsIDE4OSwgNTQsIDIzOCwgNjEsIDU0LCAyMjYsIAorICAgIDE0MiwgNTQsIDIwNCwgMjA4LCA1NCwgMjM5LCAxNjMsIDU0LCAyMzUsIDI0NiwgMjE2LCA0MCwgNTQsIDIxNiwgMiwgNTQsIAorICAgIDIzNSwgNDUsIDU0LCAyNTAsIDEyOSwgNTQsIDIzMywgMTAzLCA1NCwgMjQ3LCA3MSwgNTQsIDIyNCwgMTQ2LCAyMDUsIDEzOCwgCisgICAgNTQsIDIwOCwgMjI1LCA1NCwgMjA2LCAxNjQsIDU0LCAyMjgsIDEwMiwgMjEyLCAxNDksIDU0LCAyMDQsIDE4OCwgMjI0LCAKKyAgICAxNTYsIDU0LCAyMTgsIDIyMiwgMTM0LCA1NCwgMjIyLCAxNzgsIDU0LCAyMTIsIDE3MiwgNTQsIDIyNSwgNjcsIDU0LCAzOCwgCisgICAgNDksIDIzNCwgMTYxLCA1NiwgMzgsIDUxLCAyMzQsIDE2MSwgNTYsIDM4LCAxNjgsIDgzLCAyMjQsIDE3NywgMjE2LCAyNDIsIAorICAgIDM4LCAyMDksIDI1MCwgODMsIDIyNCwgMTc3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNDcsIDU1LCA1NiwgMzgsIDI0NiwgMTEyLCAKKyAgICA1NSwgNTYsIDM4LCA0OSwgNTUsIDU2LCAzOCwgNTEsIDU1LCA1NiwgMzgsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMjQ2LCAKKyAgICAxMTIsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMjUxLCA0NywgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAxMjYsIDE5MCwgNTYsIAorICAgIDM4LCAyMzYsIDIyOSwgMTkwLCA1NiwgMzgsIDIzOCwgMTc1LCAyNDYsIDE1NSwgMzgsIDIzOCwgMTc1LCAyMDgsIDE5MywgCisgICAgMzgsIDIzOCwgMTc1LCAyNDEsIDY0LCAzOCwgMjM4LCAxNzUsIDI0NiwgMTU2LCAyNDksIDEyNCwgMzgsIDQ5LCA1MSwgNTUsIAorICAgIDU2LCAzOCwgMjM4LCAxNzUsIDIxMSwgMjA5LCAzOCwgMjM4LCAxNzUsIDIyNiwgMjEwLCAzOCwgMjM4LCAxNzUsIDIwMywgCisgICAgMjE4LCAyMTUsIDk2LCAyMDUsIDk4LCAzOCwgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgNTMsIDgzLCAyMDgsIAorICAgIDQ3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNTcsIDk5LCAzOCwgMjA1LCA4MywgMjAzLCAyNTAsIDM4LCAyMDEsIDI4LCAyNDgsIAorICAgIDUxLCA1NiwgMzgsIDk4LCA1NSwgMjE2LCAyNDIsIDM4LCAxNjgsIDUzLCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDg3LCAKKyAgICAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMzgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMzgsIDQ5LCAKKyAgICA1NSwgNTcsIDM4LCA1MSwgNTUsIDU3LCAzOCwgMjUwLCAxNjYsIDU2LCAyNTEsIDI0NywgMjE3LCAxMTcsIDI1MSwgMjMxLCAKKyAgICAyMDUsIDE4NiwgMjA2LCAxMDcsIDIwOCwgMTMsIDE3NSwgNiwgMjQ3LCAyMjMsIDI0MSwgMTU1LCAyNDcsIDYxLCAyNDcsIAorICAgIDU2LCAyMjQsIDE3NywgOTksIDI0NywgMTMxLCAyMTcsIDExNywgMjQ3LCAxODIsIDIwNCwgNCwgMjM4LCA2MiwgMjQzLCA1MCwgCisgICAgMjExLCAyMDYsIDI0MSwgMTU1LCAyMzcsIDE3NywgMTM1LCA0LCAyMzYsIDE1NiwgMTM1LCA2LCAyMzQsIDI0NywgMjQ4LCAKKyAgICAxNDIsIDYsIDIzNCwgMjQ3LCAxNzUsIDYsIDIzNCwgMjQ3LCAyMTUsIDEzMCwgMjQzLCA1MCwgMjE1LCAxMzAsIDI0MywgNTEsIAorICAgIDExOSwgMTIwLCAyMTUsIDIwNCwgMTM1LCA2LCA3MCwgMjQ4LCAxNDIsIDYsIDcwLCAxMzUsIDYsIDE1NiwgMTM1LCA0LCAKKyAgICAxNTYsIDIyNSwgMTkzLCA2OCwgMjQ5LCA3NywgOTksIDE3NSwgNiwgMjIwLCAyMTQsIDIxOCwgOTEsIDU0LCAyMDksIDEsIAorICAgIDIxMywgMTc4LCAyNDMsIDE4LCAxMzUsIDYsIDIxNiwgMjI2LCAxNzUsIDYsIDIxNiwgMjI2LCAxNzUsIDYsIDIxNCwgMTY3LCAKKyAgICAxMzUsIDYsIDE0NiwgMjQ4LCAxNDIsIDYsIDE0NiwgMTc1LCA2LCAxNDYsIDIxNSwgMjEsIDIwNiwgMjU1LCAyMTMsIDExOCwgCisgICAgMjEwLCAxNDYsIDgxLCAyMDYsIDE3NiwgNTQsIDIwNSwgMTI4LCAxMzQsIDU0LCAyMDMsIDQzLCAxNzUsIDYsIDE5OSwgMTU3LCAKKyAgICAyMTcsIDIsIDU0LCAyMTcsIDEwNywgNTQsIDIyOCwgNTAsIDIxNywgMTA3LCA1NCwgMjQ4LCAxNDIsIDYsIDE5OSwgMTU3LCAKKyAgICAyMDQsIDE4NSwgMzEsIDQsIDEsIDIyOCwgNDEsIDIyNiwgMjUxLCA1NCwgMjUxLCA2NiwgNTQsIDEzNSwgNiwgMjUwLCAxMDMsIAorICAgIDI0OCwgMTQyLCA2LCAyNDcsIDIyMywgMjM4LCA4NiwgOTksIDEzNSwgNCwgNzIsIDEzNSwgNiwgNzIsIDEzNSwgNiwgMjM4LCAKKyAgICA1LCAyMDQsIDE4NSwgNiwgMjM4LCA1LCAxMzUsIDYsIDIyMywgMjQzLCAxMzUsIDQsIDc0LCAxNDAsIDk5LCAyNDgsIDIxMSwgCisgICAgOTksIDIzNSwgMTQ4LCA5OSwgMjQyLCAyNCwgOTksIDIyOCwgOTIsIDIwOCwgMjU1LCAyMTIsIDIyOCwgNiwgMjE0LCAxNjcsIAorICAgIDIzNywgMTgwLCA1NCwgMTc1LCA0LCAyMTUsIDIwNCwgMTc1LCA0LCAyMzYsIDYwLCAxNzUsIDYsIDIzNiwgNjAsIDE3NSwgNiwgCisgICAgMjE1LCAyMDQsIDE3NSwgMjIwLCAyMTMsIDIwNywgMjMxLCAyMDQsIDE4NSwgNDMsIDYsIDIzNiwgMTU2LCAyMDQsIDE4NSwgCisgICAgNDMsIDYsIDE1NiwgMjEzLCAxMDUsIDQzLCA2LCAxNTYsIDIwNCwgMTg1LCA0MywgNiwgMjAwLCAxMjMsIDE3NSwgMzksIDYsIAorICAgIDI0MiwgMTUzLCAxNzUsIDM5LCA0LCAyNDIsIDE1MywgMTc1LCAzOSwgNCwgNzIsIDE3NSwgMzksIDQsIDcwLCAxNzUsIDM5LCAKKyAgICA0LCAyMjcsIDI1MSwgMjE0LCAyNDUsIDIyNCwgMTc2LCAyMDQsIDE4NSwgMjUxLCA4OSwgMjE2LCAyOCwgNTQsIDI1MSwgCisgICAgMTUzLCAyMDQsIDE4NSwgNCwgMjM4LCA1LCAxNiwgMzYsIDIxMiwgMjIsIDIwOCwgMjU1LCAyMDEsIDE2NCwgMjM2LCAyMTksIAorICAgIDExMiwgMjEwLCAxMzEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMTksIDEwNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIwNiwgMTU3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjA2LCA3NCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjAsIAorICAgIDIwNiwgNzEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMzcsIDEwNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjAsIDIzNywgCisgICAgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjM3LCAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjM2LCAyMjksIAorICAgIDIzNywgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjA5LCA5NiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzcsIDYxLCAKKyAgICAyMDksIDk0LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMzgsIAorICAgIDIyNSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzcsIDYxLCAyMzgsIDIyNSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMTAsIDEzNiwgCisgICAgMjM4LCAyMjUsIDIzNiwgMjE5LCAyMTgsIDkyLCAxMDIsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDIsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxMDUsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDcsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDksIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxNjQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxODcsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTAsIDEzNSwgMjEyLCAyNDAsIAorICAgIDIxOCwgOTMsIDE5MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDIxOSwgMTEzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjA2LCAxNjYsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzgsIDE5OSwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNCwgMTY0LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMjM3LCAxMDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODIsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIAorICAgIDYxLCAyMzMsIDgyLCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUwLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTAyLCAKKyAgICA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTA1LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTQ3LCA0LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMTQ5LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTY0LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTg3LCA0LCAyMTIsIAorICAgIDI0MCwgMjE4LCA5MywgMjEwLCAxMzUsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxOTIsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAKKyAgICAyMTksIDExMywgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNiwgMTY2LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM4LCAxOTksIAorICAgIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDQsIDE2NCwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgMTA0LCA0LCAyMTIsIAorICAgIDI0MCwgMjE4LCA5MywgMTEyLCAyMzMsIDgyLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCA2MSwgMjMzLCA4MiwgNCwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MSwgMjQ3LCAKKyAgICAyMjQsIDI0MiwgMTUzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCA2MSwgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIAorICAgIDIwNiwgMTY3LCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgMjEzLCAxMDUsIDExMiwgMjMzLCA4MiwgOCwgNCwgMSwgCisgICAgMjEzLCAxMDUsIDI0NywgMjIzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjA5LCAxMDYsIDIyNSwgNjIsIDE5LCAyMTIsIDI0MCwgCisgICAgMjE4LCA5MywgMjM3LCAxMDUsIDIzOSwgMjAsIDE5LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAxMDUsIDIwNiwgNTAsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODMsIDIwNiwgNTAsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTk5LCA4MiwgCisgICAgMjA2LCA3MSwgMjA0LCAxODUsIDE3LCAxMDUsIDIwNCwgMTg1LCAxNywgMTQ3LCA5OCwgNDgsIDE4MiwgNDgsIDg3LCA0OCwgCisgICAgMTkxLCA0OCwgNDksIDUxLCA0OCwgMTE1LCAxMjcsIDQ4LCAxNTcsIDIwMSwgNDgsIDQ4LCAxNTcsIDIzOSwgMTQsIDQ4LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0OCwgOTgsIDU1LCAzLCA5NywgODcsIDU1LCAzLCAKKyAgICA5NywgOTgsIDIwMSwgNzgsIDQ4LCA4NywgMjAxLCA3OCwgNDgsIDk4LCAxMjAsIDIzNCwgMTM0LCA0OCwgMTgyLCAxMjAsIAorICAgIDIzNCwgMTM0LCA0OCwgODcsIDEyMCwgMjM0LCAxMzQsIDQ4LCAxOTEsIDEyMCwgMjM0LCAxMzQsIDQ4LCA5OCwgNTUsIDMsIAorICAgIDIwNywgNiwgODcsIDU1LCAzLCAyMDcsIDYsIDk4LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTgyLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgODcsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxMTUsIDEyNywgNTUsIDMsIDI0OSwgNjQsIAorICAgIDk4LCA1NSwgMywgMTE3LCA4NywgNTUsIDMsIDExNywgOTgsIDU1LCAzLCAyMjQsIDc0LCA4NywgNTUsIDMsIDIyNCwgNzQsIAorICAgIDQ5LCA1MSwgMjAxLCA3OCwgNDgsIDQ5LCA1MSwgNTUsIDMsIDk3LCAxOTEsIDE5OSwgMjcsIDQ4LCAxODIsIDU1LCAzLCAKKyAgICAyMDUsIDIyNCwgMjI1LCAxOCwgMTgyLCA1NSwgMywgMjA1LCAyMjQsIDIxMywgMzUsIDE5MSwgNTUsIDMsIDIwNSwgMjI0LCAKKyAgICAyMjUsIDE4LCAxOTEsIDU1LCAzLCAyMDUsIDIyNCwgMjEzLCAzNSwgODcsIDU1LCAzLCAyNDMsIDE2LCAyMzksIDE2NSwgCisgICAgMTkxLCA1NSwgMywgMjQzLCAxNiwgMjI1LCAxOCwgMjUxLCA0NywgMjA1LCAxNTgsIDIxMCwgMTcwLCA0OCwgMjQ2LCAxMTIsIAorICAgIDIwNSwgMTU4LCAyMTAsIDE3MCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIDIwNSwgMTg2LCAxNjgsIDE0OCwgOTgsIDU1LCAKKyAgICAyMDUsIDE4NiwgMjQ5LCA3NywgMTE5LCA4NywgNTUsIDIwNSwgMTg2LCAxNDgsIDI1MSwgNDcsIDE3NiwgMjQ2LCAxNTYsIAorICAgIDQ4LCAyNDYsIDExMiwgMTc2LCAyNDYsIDE1NiwgNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMDMsIDIxNiwgOTgsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgMzUsIDE4MiwgMjM0LCAxNjEsIDMsIAorICAgIDE1NCwgMjI1LCAxOCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjE2LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAKKyAgICAxNjUsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCAzNSwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMjUsIDE4LCA4NywgCisgICAgNTUsIDExOSwgOTgsIDQ4LCAxODIsIDU1LCA5OCwgNzYsIDE5MSwgNDgsIDk4LCA1NSwgMTE5LCA4NywgNDgsIDk4LCAyMTYsIAorICAgIDE4OCwgMjUwLCAxOTksIDE4MiwgMjE2LCAxODgsIDI1MCwgMTk5LCA4NywgMjE2LCAxODgsIDI1MCwgMTk5LCAxOTEsIDIxNiwgCisgICAgMTg4LCAyNTAsIDE5OSwgOTgsIDIzNCwgMTYxLCAxMTksIDg3LCAyMzQsIDE2MCwgODcsIDIzNCwgMTYxLCAxMTksIDk4LCAKKyAgICAyMzQsIDE2MCwgOTgsIDUzLCA1NSwgMywgOTcsIDQ5LCA1MSwgNTMsIDU1LCAzLCA5NywgODcsIDUzLCA1NSwgMywgOTcsIAorICAgIDk4LCA1MywgNDgsIDE4MiwgNTMsIDQ4LCA4NywgNTMsIDQ4LCAxOTEsIDUzLCA0OCwgNDksIDUxLCA1MywgNDgsIDExNSwgCisgICAgMTI3LCA1MywgNDgsIDE1NywgMjAxLCA0OCwgNTMsIDQ4LCAxNTcsIDIzOSwgMTQsIDUzLCA0OCwgMjA4LCAyNTQsIDIzOSwgCisgICAgMTQsIDUzLCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDUzLCA0OCwgOTgsIDIwNSwgODMsIDQ4LCA4NywgMjA1LCA4MywgNDgsIAorICAgIDk4LCAyMDgsIDE4NiwgNDgsIDg3LCAyMDgsIDE4NiwgNDgsIDE4MiwgNTUsIDMsIDUzLCA5NywgMTkxLCA1NSwgMywgNTMsIAorICAgIDk3LCA5OCwgMjQxLCAyNDMsIDQ4LCAxODIsIDI0MSwgMjQzLCA0OCwgODcsIDI0MSwgMjQzLCA0OCwgMTkxLCAyNDEsIDI0MywgCisgICAgNDgsIDk4LCA1NSwgMjA1LCAxODYsIDE0OCwgODcsIDU1LCAyMDUsIDE4NiwgMTQ4LCA5OCwgNjQsIDQ4LCAxODIsIDY0LCAKKyAgICA0OCwgODcsIDY0LCA0OCwgMTkxLCA2NCwgNDgsIDE4MiwgNjQsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDY0LCA1NSwgCisgICAgMjE3LCA3OSwgMjE2LCA2NCwgMTgyLCA2NCwgNTUsIDIxNywgNzksIDIxNiwgNjUsIDMsIDIzMywgMTc3LCAxNDgsIDE4MiwgCisgICAgNjQsIDU1LCAyMTcsIDc5LCAyMTYsIDY1LCAzLCA4MywgMTQ4LCAxODIsIDY0LCA1MywgNDgsIDE4MiwgNjQsIDUzLCA1NSwgCisgICAgMjE3LCA3OSwgMjE2LCA2NCwgODcsIDY0LCA1NSwgMjM2LCAyMDEsIDIwMSwgMTAyLCAxNTcsIDIwMSwgNDgsIDU1LCAyMDUsIAorICAgIDE4NiwgMjQzLCAxNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAyMDUsIDE4NiwgMjQzLCAxNSwgMTE1LCAxMjcsIDY0LCA0OCwgCisgICAgNTEsIDU1LCAzLCA0LCAyNDYsIDE1NSwgMTkxLCA1NSwgOTgsIDc2LCAxODIsIDQ4LCAxMjYsIDg3LCAyNTAsIDE5OSwgOTgsIAorICAgIDU1LCAzLCA4MywgOTcsIDg3LCA1NSwgMywgODMsIDk3LCA0OSwgNTEsIDU1LCAzLCA4MywgOTcsIDk4LCA1NSwgMywgNTMsIAorICAgIDgzLCA5NywgODcsIDU1LCAzLCA1MywgODMsIDk3LCA0OSwgNTEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgMjE3LCA1MSwgCisgICAgNDgsIDg3LCAyMTcsIDUxLCA0OCwgNDksIDUxLCAyMTcsIDUxLCA0OCwgMzYsIDI1MSwgMTI0LCAyNDYsIDY1LCAyMTYsIAorICAgIDEwOCwgMjQxLCA0OCwgMjA2LCA5NywgMjM4LCAzOCwgMjA2LCA5NywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMzgsIDM5LCAKKyAgICAyMzgsIDE4MSwgMjEwLCAxNDEsIDIyOCwgMTA2LCAyMjAsIDE1MiwgMjM4LCAyMDIsIDIxNywgMTE3LCAyMTgsIDIxNSwgCisgICAgMjUxLCA4NiwgMjM4LCAyMDIsIDIxNywgMTE3LCA0LCAyMzgsIDIwMiwgMjE3LCAxMTcsIDI0MywgNDQsIDI1MCwgMTg5LCAKKyAgICAyMjIsIDQ0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgNDYsIDI1MCwgMTg5LCAyMjIsIDQ0LCA0LCAyNDMsIDQ0LCAyNTAsIAorICAgIDE4OSwgMjIyLCA0NCwgMjM4LCAxNzEsIDc2LCAyMTQsIDI0NywgMjIwLCAyMTMsIDIxNSwgMSwgMjIwLCAyMTMsIDI0MywgCisgICAgMjEsIDIyMCwgMjEzLCAyMDcsIDIzMSwgMjIxLCAxNTcsIDU0LCAyMjEsIDE1NSwgNTQsIDczLCAyMTUsIDExMywgMjQwLCAKKyAgICAyMzUsIDIwOSwgNzUsIDIxMCwgMTQyLCAyMjEsIDE1NiwgMjUwLCAxNjYsIDIxNywgNDMsIDIxMywgMjcsIDIxNywgNDMsIAorICAgIDI0OCwgMjEsIDIxNywgNDMsIDUyLCAyMTIsIDIzNCwgMjQyLCAyMTAsIDIxMiwgMjM0LCAyMzYsIDIyMiwgMjEyLCAyMzQsIAorICAgIDIxNCwgMjQzLCAxMzgsIDIyOCwgOTQsIDUxLCAyNTEsIDcwLCAyNTEsIDcwLCAyMjIsIDczLCAyNTEsIDcwLCAyMDgsIDIyNCwgCisgICAgMjUxLCA3MCwgMjQwLCAyMzcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQwLCAyNDEsIDIxNiwgMTIxLCAxMzgsIDIxOCwgMjE1LCAKKyAgICAyMTYsIDEyMSwgMTM4LCAyMjQsIDk4LCAyNTEsIDc5LCAyMjQsIDk4LCAyMTcsIDMzLCAyMjgsIDU1LCAyMDMsIDI0MSwgCisgICAgMjI4LCA2OSwgNTMsIDIyOCwgNjksIDIwNSwgODMsIDIyOCwgNjksIDI0MywgMzgsIDIyOCwgNjksIDIwNywgMjAzLCAyMjgsIAorICAgIDY5LCAyMDIsIDE4MSwgMjI4LCA2OSwgMjQ2LCAxMTIsIDIyOCwgNjksIDI0NiwgMTEyLCAyNDMsIDM4LCAyMjgsIDY5LCAKKyAgICAyNTEsIDQ3LCAyNDMsIDM4LCAyMjgsIDY5LCAyMDYsIDk2LCAyNDgsIDI1NCwgMjEzLCAyMDAsIDIxNCwgMjQ0LCA3MywgCisgICAgMjIxLCAxNTYsIDIzOCwgNDYsIDIzNSwgMjUyLCAyMTQsIDI0NCwgMjMzLCAxOTIsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMTMsIAorICAgIDEwNSwgMjA1LCAyNDAsIDIyOCwgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCAyMDksIDE0MSwgMjAxLCA3NywgMjAwLCAyMjYsIAorICAgIDIxNSwgMSwgMjE4LCAyMTUsIDIwNSwgMjQwLCAyMjEsIDE1NywgMjA1LCAyNDAsIDI1MCwgMTU5LCAxNjAsIDEzOCwgMjE4LCAKKyAgICAyMTUsIDI1MCwgMTU5LCAxNjAsIDEzOCwgMjUxLCA0LCAxNjAsIDEzOCwgMjUxLCA0LCAyNDcsIDI0NywgMjE4LCAyMTUsIAorICAgIDI1MSwgMjQwLCAxNjAsIDEzOCwgMjIwLCAyNiwgMjUxLCA0LCAyMTgsIDIyNCwgMjUxLCAyNDAsIDE2MCwgMTM4LCAyNTEsIAorICAgIDExNywgMTYwLCAxMzgsIDIxOCwgMjE1LCAyNTEsIDExNywgMTYwLCAxMzgsIDI1MSwgMTE3LCAxNjAsIDIxNywgMzQsIDE2MCwgCisgICAgMTM4LCAyMDUsIDgzLCAyMDUsIDI0MCwgMjUxLCAxMjUsIDE2MCwgMTM4LCAyMzgsIDExNywgMTM4LCAyMzUsIDI1MSwgMjM4LCAKKyAgICAxMTcsIDEzOCwgMjQxLCA0OSwgMjQ4LCAyMDUsIDI1MSwgNiwgMjA2LCAxMDcsIDIyNCwgMTg0LCAyMzUsIDI1MSwgMTYwLCAKKyAgICAxMzgsIDI1MSwgNCwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjA2LCAxMDcsIDIyOCwgMTMzLCAyMTcsIDExNywgMjI4LCAKKyAgICAxMzMsIDc2LCAyMTcsIDM0LCAyNTEsIDQsIDE2MCwgMTM4LCAyNDYsIDgwLCAyMzgsIDEyMSwgMjM4LCAxMjIsIDI0NiwgNzksIAorICAgIDIxMywgMjcsIDIyOCwgMTE4LCAxNjAsIDEzOCwgMjEzLCAyNywgMTYwLCAxMzgsIDI0MywgOSwgMTM4LCAyMzgsIDg1LCAKKyAgICAyMzgsIDEyMCwgMTM4LCAyMDgsIDExMCwgMjM4LCAxMjEsIDI0MSwgMTM3LCAxNjAsIDEzOCwgMTYwLCAyMDUsIDE4NiwgCisgICAgMjQ3LCAyMzUsIDI0MSwgMTU2LCAyMjIsIDczLCAyNDcsIDIzNCwgMjE0LCA3NywgMTYwLCAxMzgsIDIxOCwgMjE1LCAxNjAsIAorICAgIDEzOCwgMjMyLCAyMjMsIDEzOCwgMjE4LCAyMTUsIDIzMiwgMjIzLCAxMzgsIDIwOCwgNTQsIDIzOCwgMTE3LCAxMzgsIDIyNCwgCisgICAgMjQxLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMTYwLCAxMzgsIDIyNCwgMjQxLCAxMTksIDE2MCwgCisgICAgMTM4LCAyMzUsIDY3LCAxMTksIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjM1LCAKKyAgICA2NywgMjQ3LCAyNDcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjIxLCAzNSwgMjI0LCAyNDAsIDIyMSwgMzUsIDIzNSwgNjYsIAorICAgIDI0OCwgMjA1LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE4LCAyMTUsIDIyNCwgMjQwLCAyMTgsIDIxNSwgMjM1LCA2NiwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIDE2MCwgCisgICAgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAyMzgsIDExNywgMTM4LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgCisgICAgMjM4LCAxMTcsIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIzNSwgNjYsIDIzNSwgNjcsIDIxNywgMzQsIDIyNCwgMjQwLCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDIzNSwgNjYsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAyMjQsIAorICAgIDI0MCwgMjE1LCAyOCwgMjA3LCAyNTAsIDIxNSwgMjksIDIxNywgMzQsIDE2MCwgMTM4LCAyMDcsIDI1MSwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIxNSwgMjksIDIxNywgMzQsIDIzOCwgMTE3LCAxMzgsIDIwNywgMjUxLCAyMTcsIDM0LCAyMzgsIDExNywgCisgICAgMTM4LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNSwgMzEsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjA3LCAyNTIsIDIwOCwgMywgCisgICAgMjE3LCAxMTcsIDIwNywgMjEyLCAyMTcsIDExNywgMjE4LCAyMTUsIDM1LCAyMDgsIDMsIDIxNywgMTE3LCAyMTgsIDIxNSwgCisgICAgMzUsIDIwNywgMjEyLCAyMTcsIDExNywgMjA4LCAzLCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDM1LCAyMDgsIDMsIDc2LCAyMTgsIDIyNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDM1LCAKKyAgICAyMDcsIDIxMiwgNzYsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjA4LCAzLCA3NiwgMywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIAorICAgIDIxMiwgNzYsIDMsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjIxLCAxNiwgMjIxLCAxNywgMjIxLCAxOCwgMjIxLCAxNywgMjAzLCAKKyAgICAyNDEsIDUyLCAyMjgsIDEzMywgMjE3LCAxMTcsIDUyLCAyMTcsIDI1LCAyMTcsIDExNywgNTIsIDIyOCwgMTMzLCA3NiwgCisgICAgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAyNDcsIDE0NCwgNTIsIAorICAgIDI0MiwgMjAyLCA0NCwgMjE1LCAxMTMsIDQ0LCAyMjEsIDE1NiwgNDQsIDIwNSwgMjMyLCA0NCwgMjQwLCAyMzUsIDIwOSwgCisgICAgNzUsIDQ0LCA3MywgMjE3LCA0MywgNDQsIDIxMywgMjcsIDIxNywgNDMsIDQ0LCAyNTAsIDE2NiwgMjE3LCA0MywgNDQsIAorICAgIDIzOCwgMTIxLCA0NCwgMjQxLCAyNDQsIDk1LCAyMTUsIDExMywgOTUsIDIyMSwgMTU2LCA5NSwgMjA1LCAyMzIsIDk1LCA3MywgCisgICAgMjE3LCA0MywgNTEsIDIwNywgMTcsIDQ5LCAyMDcsIDE3LCAxMjcsIDIwNywgMTcsIDExNSwgMjA3LCAxNywgMjUwLCAxNjksIAorICAgIDIyMSwgMTMxLCAyMDUsIDYxLCAyMzYsIDI0OCwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDUxLCAyMDQsIDE4NCwgNTMsIDgzLCAKKyAgICAyNDksIDc3LCA1MywgNTEsIDIwNCwgMTg0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNCwgMjM4LCAyMTgsIDIxNSwgMjA1LCAKKyAgICA2MSwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMzYsIDI0OSwgMjIwLCAyOCwgNTMsIDgzLCAyNDksIDc3LCA1MywgNTEsIDIwNCwgCisgICAgMTg0LCAyMTUsIDI5LCAyMDMsIDI1MywgMjEzLCAxNDksIDIwNywgMjUxLCAyMDMsIDI1MywgMjEzLCAxNDksIDIxOCwgMjIxLCAKKyAgICAyMDgsIDE2LCAyMTcsIDExNywgMjQzLCA0NCwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE1LCAyMTgsIDIyMSwgMjA4LCAKKyAgICAxNiwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDMsIDQ0LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTYsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMTcsIDI1LCAyMTcsIDExNywgMjI4LCAxMzMsIDIxNywgMTE3LCAyMjEsIDIzLCAyMzQsIDk2LCAyNDMsIAorICAgIDU1LCAyMjIsIDEyNSwgMjI4LCA2NiwgMjAwLCAxNTUsIDIyMCwgMTMyLCAyMTgsIDIyMywgNTEsIDI1MSwgNzEsIDMsIDI1MCwgCisgICAgMjM2LCA1MSwgMjA1LCA5OCwgMjIwLCAyMTMsIDIyNCwgOTgsIDI1MSwgNzksIDIyMCwgMjEzLCAyMjQsIDk4LCAyMTcsIDMzLCAKKyAgICAyMjAsIDIxMywgMjI4LCA1NSwgMjIwLCAyMTMsIDIwMywgMjQxLCAyNDEsIDY1LCAyMTcsIDQzLCA3MywgMjE3LCA0MywgCisgICAgMjA4LCAxMTAsIDIxNywgNDMsIDI0MCwgMjM1LCAyMDUsIDIzMiwgMjQ4LCA3OSwgNDksIDIxOCwgMjIxLCAyMzcsIDE3OSwgCisgICAgMjEwLCAxNjYsIDIxNSwgMSwgNTEsIDIxOCwgMjIxLCAyMzcsIDE3OSwgMjEwLCAxNjYsIDIxNSwgMSwgNDksIDIxMCwgMTY2LCAKKyAgICAyMTUsIDEsIDUxLCAyMTAsIDE2NiwgMjE1LCAxLCAyMTMsIDEwNSwgMjA1LCAyNDEsIDIzOCwgMTIxLCAyNDIsIDE5NiwgCisgICAgMjI0LCA5OCwgMjE3LCAzMywgMjQyLCAxOTYsIDIyNCwgOTgsIDI1MSwgNzksIDUzLCAyMDgsIDIsIDUzLCAyMDcsIDIxMSwgCisgICAgNTMsIDIyOCwgNTUsIDUzLCAyMDMsIDI0MSwgMjE1LCAxNDAsIDE2MCwgMjYsIDIxNiwgMTIxLCAxMzgsIDIyNCwgMjQxLCAzLCAKKyAgICAyNDAsIDE4MiwgMjM1LCA2NywgMywgMjQwLCAxODIsIDIwMiwgMjQ2LCAyMjEsIDM1LCAyMjQsIDI0MCwgMjAyLCAyNDYsIAorICAgIDIyMSwgMzUsIDIzNSwgNjYsIDIyNCwgMjQxLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAyMzUsIDY3LCAKKyAgICAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDE2MCwgCisgICAgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIxNSwgMjgsIDE2MCwgMjA1LCAKKyAgICAxODYsIDIxNywgMzQsIDIwNywgMjUwLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNSwgMzIsIDIxNywgMzQsIDIzOCwgMTIzLCAKKyAgICAyNDAsIDIwMiwgMjE4LCAyMTUsIDIwNywgMjUzLCAyMTcsIDM0LCAyMzgsIDEyMywgMjE4LCAyMTUsIDUyLCAyMjgsIDEzMywgCisgICAgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyMTgsIDIxNSwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIAorICAgIDIyOCwgMTMzLCA3NiwgMjE3LCAzNCwgMjE4LCAyMTUsIDE2MCwgMTM4LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDIxOCwgCisgICAgMjE1LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjM1LCA2NywgMjQ3LCAKKyAgICAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTUsIDI5LCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIAorICAgIDIwNywgMjUxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxOCwgMjE1LCAyMTgsIDIyMSwgMjA4LCAxNiwgCisgICAgMjE3LCAxMTcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCA0NiwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE1LCAyMTgsIAorICAgIDIxNSwgMjE4LCAyMjEsIDIwOCwgMTYsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIAorICAgIDQ2LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTYsIDIxNywgMzQsIDIzOCwgMTIzLCA4MywgMjM4LCAxOTUsIDIyMSwgCisgICAgMjAyLCAyMzMsIDE3NywgMjM4LCAxOTUsIDExNSwgNTEsIDI0MSwgNzEsIDIzOCwgMTk1LCAxMjcsIDUxLCAyNDEsIDcxLCAKKyAgICAyMzgsIDE5NSwgMjM4LCAyMDIsIDc2LCAzLCAxNjgsIDIzMywgMTc3LCA5NywgMjM4LCAyMDIsIDc2LCAzLCA4MywgMjQ5LCAKKyAgICA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCA0LCAyMzgsIDIwMiwgNzYsIDMsIDgzLCAyNDksIAorICAgIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDIzOCwgMjAyLCA3NiwgMywgNzMsIDU2LCAyMzgsIAorICAgIDIwMiwgNzYsIDMsIDIxNiwgMjQ2LCA0LCAyMzgsIDIwMiwgNzYsIDMsIDIxNiwgMjQ2LCAyMzgsIDIwMiwgNzYsIDMsIDIwMywgCisgICAgMjUxLCAyMzgsIDIwMiwgNzYsIDMsIDEyMCwgMjMzLCAxNzcsIDIwOCwgMzQsIDI0MywgNDQsIDMsIDE2OCwgMjMzLCAxNzcsIAorICAgIDk3LCAyNDMsIDQ0LCAzLCA4MywgMjQ5LCA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCA0LCAKKyAgICAyNDMsIDQ0LCAzLCA4MywgMjQ5LCA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCAyNDMsIDQ0LCAKKyAgICAzLCAyMTYsIDI0NiwgNCwgMjQzLCA0NCwgMywgMjE2LCAyNDYsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjQ5LCAxMTQsIDIyMiwgCisgICAgNDMsIDI0MSwgNjYsIDU0LCAyMzgsIDIwNCwgNDgsIDIzMywgMTA5LCAxMTUsIDI1MCwgMjAyLCAxMjcsIDI1MCwgMjAyLCAKKyAgICAyMTQsIDI1MSwgMjE2LCA4LCAyMDEsIDc0LCAyMjQsIDE3NiwgNDksIDI0NywgNjQsIDUxLCAyNDcsIDY0LCA0OSwgMjM3LCAKKyAgICAzMSwgNTEsIDIzNywgMzEsIDI0OCwgOTMsIDUxLCAyNDIsIDIzNiwgMjQ4LCA5MywgNDksIDI0MiwgMjM2LCAyMDUsIDE1OCwgCisgICAgNTEsIDI0MiwgMjM2LCAyMDUsIDE1OCwgNDksIDI0MiwgMjM2LCAyMTMsIDEwNSwgMjE4LCAyMTUsIDU0LCA1MiwgMjI0LCAKKyAgICA0OSwgMjUwLCAyMzYsIDIxMSwgMTgzLCAyMTEsIDE5MSwgMjA2LCAxNzYsIDIxMywgMTc5LCAyMTUsIDcwLCAyMjgsIDk5LCAKKyAgICAyMDIsIDIyMiwgMjA4LCAxOTMsIDIxNSwgMTM0LCA3NiwgMjI4LCA2NSwgNTQsIDIwNCwgMTg1LCAyMTgsIDIxNSwgNTQsIAorICAgIDIwMSwgODQsIDIzMywgMTExLCAyMDUsIDE1OCwgNDksIDI0MywgMTUsIDIwNSwgMTU4LCA1MSwgMjQzLCAxNSwgMjQ4LCA5MywgCisgICAgNDksIDI0MywgMTUsIDI0OCwgOTMsIDUxLCAyNDMsIDE1LCAyMDUsIDE1OCwgMTY3LCAyMjgsIDY5LCAyNDgsIDkzLCAxNjcsIAorICAgIDIyOCwgNjksIDIzNiwgMTk2LCAyMDksIDQ4LCAxMTUsIDI1MCwgMjAzLCAyNDgsIDIwNiwgMTIwLCAyMzMsIDE3NywgMjQ5LCAKKyAgICA2NiwgMjE3LCAzNiwgMjI2LCAyMTQsIDIzOCwgMTEzLCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIxMywgNDYsIDIwMCwgMTk2LCAKKyAgICAyMjgsIDExOCwgMzUsIDIxMywgMTc2LCAyNDgsIDc4LCAyMjYsIDIxMiwgMjI1LCAyMywgMjUxLCA3MSwgMTU5LCAyMTMsIAorICAgIDQxLCAyNTEsIDcxLCAxNTksIDIzOCwgMTEzLCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIyNSwgMjgsIDI0OCwgMjE3LCAyMTMsIAorICAgIDI2LCAyNDIsIDE2MywgMjUxLCAxMjUsIDI1MCwgMjExLCAyMDcsIDExNCwgMjA1LCAxNDMsIDIxMiwgMTU0LCAyNDEsIDI4LCAKKyAgICAyMTcsIDI2LCAyNDMsIDU5LCAyMDYsIDIzNCwgMjA5LCA2MSwgMjQzLCA1LCAyNDMsIDQsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjMzLCAxNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMDgsIDE4NCwgMjE0LCA5NCwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMTQsIDk1LCAyMzgsIDEyMywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDAsIDI0MSwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDEsIDY0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIyNywgMTUzLCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0NiwgMTU1LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgCisgICAgMTU2LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyMjcsIDE1MywgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMDksIDc2LCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ5LCAxMjUsIDE0OCwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMDksIDc1LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0OSwgMTI0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIyNCwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIAorICAgIDIzNSwgNjYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgOTgsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgODcsIAorICAgIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgOTgsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDg3LCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjQ5LCAxMjQsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMTI3LCAyMDcsIDE4LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDEzNywgMjA4LCAKKyAgICA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxMjcsIDI0NywgMTI5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDI0MSwgMTM2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgMjA3LCAxOCwgMjI3LCAxNTMsIDI1MSwgCisgICAgMjIsIDIzNiwgMTc5LCAxNiwgMTgyLCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDE4MiwgNDgsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMDcsIDE4LCAyMTYsIDI0NiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyNDEsIDE0OSwgMjA4LCA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxMTUsIDI0NywgMTI5LCAyNTEsIAorICAgIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MSwgMTQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgMjA3LCAxOCwgCisgICAgMjI3LCAxNTMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTkxLCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDE5MSwgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA2MiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjQxLCAxMzcsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgNjUsIDIwMywgMjUxLCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyNywgMTU0LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIAorICAgIDE1NiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMTAsIDYsIDIyNywgMTUzLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgNjIsIDIxNCwgOTQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDIwOCwgCisgICAgMTA5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0NiwgNzksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAKKyAgICAyMDcsIDE4LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTQ5LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIwOCwgMTEwLCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyNywgMTU0LCAyNDEsIDc0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgCisgICAgMjEwLCA2LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDQ5LCAyMTAsIDYsIDIwOCwgODQsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjA1LCAyNDEsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjM1LCA2NywgMjQxLCA3NCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDcxLCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxNDksIAorICAgIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDE5OSwgMjYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjA4LCA4NSwgCisgICAgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjEwLCAxNjgsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIxNCwgOTUsIDIxOCwgMjE1LCAyMzgsIDEyMywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMTQsIDc4LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgMjQ3LCAxMzAsIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDExNSwgMjQ3LCAxMzAsIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyOCwgNDEsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjEzLCA5MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTcsIDgzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDI1MSwgMTEzLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMzgsIDEyNSwgMjAzLCAyNTEsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjI4LCA0MiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE3LCA4NCwgMjAzLCAKKyAgICAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjUxLCAxMTIsIDIxOCwgMjE1LCAyNDcsIDcsIDgxLCA1MSwgMjUxLCA3MSwgCisgICAgMywgMTkxLCAxOTksIDI3LCA0OCwgMjA5LCAyMzIsIDE3NiwgMjQ4LCA3OCwgMjQ4LCAyMzEsIDk5LCA4MywgMjI0LCAxNzcsIAorICAgIDMsIDEwMSwgMjQwLCAxODIsIDIyOCwgNzUsIDk5LCAyNDMsIDM5LCAyMDMsIDI0OSwgOTksIDI0MSwgMSwgMjAzLCAyNDksIAorICAgIDk5LCAyMzgsIDE4MywgOTksIDI0MywgNzQsIDk5LCA2NCwgNTIsIDMsIDI0NywgNTYsIDgzLCAyMjQsIDE3NiwgMjM4LCAKKyAgICAxNTUsIDk5LCAyNTEsIDEwNCwgMjI2LCAyMTUsIDk5LCAyMzQsIDEwOSwgOTksIDQ0LCAyMzMsIDE3NywgMjQ5LCA3NywgMywgCisgICAgMjE4LCAyMTIsIDQ0LCAyMDUsIDk5LCAyMzksIDE2NywgMjQ4LCA0NiwgMjQ2LCAxNTYsIDMsIDIxOCwgMjE4LCA0OCwgMjAzLCAKKyAgICAyNDcsIDk5LCAyMjEsIDkyLCA5OSwgMjMzLCAyOSwgOTksIDIxNywgNTIsIDIzNCwgMjQ2LCA5OSwgMjE3LCA1MiwgMjI1LCAKKyAgICAxOTEsIDk5LCAyMTYsIDk4LCA5OSwgMjE2LCA5NywgOTksIDI0MSwgMTAsIDI0MiwgMTk0LCAxNiwgMjM2LCAyNDIsIDEwNSwgCisgICAgMjA5LCAyMSwgOTksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NCwgMjQxLCAxNjgsIDIxMCwgMTU1LCAyMjYsIAorICAgIDIxNSwgOTksIDIxNSwgMTYsIDIxNiwgMTk1LCAyMjAsIDIsIDIxNiwgMTk1LCAyMTUsIDExLCAyMTEsIDIxMCwgOTksIDI0NiwgCisgICAgMTI3LCAyMTEsIDIxMCwgOTksIDQ5LCAyMTYsIDExNiwgMjAzLCAyMjUsIDExNywgNDksIDIxNiwgMTE2LCAyMzgsIDMxLCAKKyAgICA0OSwgMjE2LCAxMTYsIDIyNCwgNTQsIDExNywgNTEsIDIxNiwgMTE2LCAyMDMsIDIyNSwgMTE3LCA1MSwgMjE2LCAxMTYsIAorICAgIDIzOCwgMzEsIDUxLCAyMTYsIDExNiwgMjI0LCA1NCwgMTE3LCA0OSwgNTIsIDI0OCwgNzAsIDIwMywgMjI1LCAyNDMsIDE1LCAKKyAgICA0OSwgNTIsIDI0OCwgNzAsIDIzOCwgMzEsIDQ5LCA1MiwgMjQ4LCA3MCwgMjI0LCA1NCwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIAorICAgIDcwLCAyMDMsIDIyNSwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAyMzgsIDMxLCA1MSwgNTIsIDI0OCwgNzAsIDIyNCwgCisgICAgNTQsIDI0MywgMTUsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDExNywgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAxMDEsIDIxNSwgMTk2LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIyNCwgNTQsIDExNywgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDIzOCwgMzEsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDExNywgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAxMDEsIDIxNSwgMTk2LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIyNCwgNTQsIDExNywgMjI4LCA3MCwgMjM4LCAzMSwgCisgICAgMjMzLCAxNzcsIDIyNCwgMTc3LCAyMzgsIDMxLCAyMDMsIDIyNSwgNDksIDIxNywgMzQsIDIyNCwgNTQsIDUxLCAyNDIsIAorICAgIDE5NiwgMjQ4LCA3MCwgMjExLCAxOTIsIDIwMywgMjI1LCA1MSwgMjE3LCAzNCwgMjI0LCA1NCwgNDksIDI0MiwgMTk2LCAKKyAgICAyNDgsIDcwLCAyMTEsIDE5MiwgMjA3LCAyMzIsIDIwNSwgMTU3LCAyMDcsIDIzMiwgMjQ4LCA5MiwgMjA1LCAxNTgsIDUyLCAKKyAgICAxNTksIDI0OCwgOTMsIDUyLCAxNTksIDI0OCwgOTMsIDUyLCAyNDgsIDcwLCAxMTksIDIwNSwgMTU4LCA1MiwgMTU5LCA0MiwgCisgICAgMTYsIDI0OCwgOTIsIDQ5LCA4MywgMTAwLCAyMjQsIDE3NiwgNTEsIDgzLCAxMDAsIDIyNCwgMTc2LCAyMzMsIDE3NywgMjExLCAKKyAgICAyMjgsIDIyNCwgMTc1LCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgMTc0LCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgCisgICAgMTczLCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgMTcyLCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDUsIDE1OCwgCisgICAgMjEzLCA0NiwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjQ4LCA5MywgMjEzLCA0NiwgMjQxLCAxMjgsIDE2LCAxNjIsIAorICAgIDgzLCAzLCAyNDYsIDE1NSwgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyNDYsIDE1NSwgMjQxLCAKKyAgICAxMjgsIDE2LCAxNjIsIDExNSwgMjYsIDIzMywgMTc3LCAzLCAyNDYsIDE1NSwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAzLCAKKyAgICAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgCisgICAgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NywgMywgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjAxLCA3NywgCisgICAgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyMDEsIDc3LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTE1LCAKKyAgICAyNiwgMjMzLCAxNzcsIDMsIDIwMSwgNzcsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NiwgMjQxLCAxMjgsIAorICAgIDE2LCAxNjIsIDExNSwgMjYsIDIzMywgMTc2LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDUsIDE1OCwgMjI1LCAyOCwgCisgICAgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjQ4LCA5MywgMjI1LCAyOCwgNTIsIDIzNiwgMjU1LCAyMTMsIDExMCwgOTksIAorICAgIDIzOCwgMjE4LCA5OSwgODMsIDIyNCwgMTc3LCAyMzgsIDMxLCAyMjIsIDE0LCAyNDgsIDU3LCAyMjIsIDE0LCAxNjgsIDExOSwgCisgICAgMjA5LCAyNDksIDIyMiwgMTQsIDIwOSwgMjUwLCAxMTksIDIyNCwgODksIDIyMiwgMTQsIDE2OCwgMTE5LCAxMjAsIDIwOSwgCisgICAgMjM1LCAyMjIsIDE0LCAxMjAsIDIwOSwgMjM2LCAxMTksIDIyNCwgODksIDIyMiwgMTQsIDEyMCwgMjA5LCAyMzYsIDIyNywgCisgICAgMTYyLCAyMjIsIDE0LCAyMDUsIDc5LCAyMjIsIDE0LCAyMDYsIDEzOCwgMjIyLCAxNCwgMjE2LCAzNSwgMjM5LCAxOCwgMjM1LCAKKyAgICA1OSwgMjM2LCAxNzMsIDIwNSwgMTU4LCAyMTYsIDExNSwgMjQ4LCA5MywgMjE2LCAxMTUsIDIwNSwgMTU4LCAyNDIsIDE5NiwgCisgICAgMTU5LCAyNDgsIDkzLCAyNDIsIDE5NiwgMTU5LCAyMDUsIDE1OCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjQ4LCA5MywgCisgICAgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNjQsIDIwNSwgMTE0LCAyNDgsIDIxNywgMjEzLCAyNywgMywgMjQ2LCAxNTUsIAorICAgIDIwOCwgNjYsIDIzNywgNDIsIDI1MSwgMjU1LCAyNDIsIDE5MywgMjM4LCAyMDMsIDIyOCwgNTUsIDI0MSwgMTY4LCAyMzgsIAorICAgIDM1LCA5OSwgNjMsIDIxMywgNDEsIDUzLCAyMDUsIDk4LCA2MywgMjI1LCAyMywgNTMsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgCisgICAgNTMsIDIwNSwgOTgsIDYzLCAyMzksIDE2NiwgNTMsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCA1MywgMjA1LCA5OSwgMywgODMsIAorICAgIDE0OCwgNjMsIDIyNSwgMjMsIDUzLCAyMDUsIDk5LCAzLCA4MywgMTQ4LCA2MywgMjEzLCA0MSwgMjA1LCA5OSwgMywgNTMsIAorICAgIDgzLCAxNDgsIDI1MSwgMTQ2LCAyNDYsIDExMywgMjA4LCA3MywgMjA1LCAyMzMsIDI0NiwgMTEzLCAyMzMsIDExMiwgMywgCisgICAgMjM3LCAyMiwgMjEyLCAxMSwgNjMsIDIyMiwgNjYsIDIyNSwgMjMsIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMTMsIDQxLCAKKyAgICAyMDUsIDk4LCA2MywgMjIyLCA2NiwgMjAzLCAyMjcsIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMzksIDE2NiwgMjA1LCA5OCwgCisgICAgNTMsIDgzLCAxNDgsIDYzLCA1MiwgMzYsIDIwOCwgNzYsIDYzLCAyNDYsIDE1NiwgMzYsIDIxMywgMTgwLCAyMTUsIDUyLCAKKyAgICA5OSwgMjE1LCA1MiwgMjE3LCA3NywgOTksIDIxNSwgNTIsIDIxNywgNzksIDk5LCAyMTUsIDUyLCAyMDksIDcyLCA5OSwgMTYsIAorICAgIDM2LCAyMTgsIDk3LCAxNiwgMzYsIDIwOCwgMTA1LCA3NiwgMjM0LCAxMzMsIDE2LCAzNiwgMjA4LCAxMDUsIDc2LCAyMDYsIAorICAgIDEyNiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNiwgMTI2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTgsIDE2LCAKKyAgICAzNiwgMjM4LCAxNTgsIDE2LCAzNiwgMjUxLCAyNDMsIDE2LCAzNiwgMjQ4LCAyMzAsIDE2LCAzNiwgMjQ5LCAxMjMsIDE2LCAKKyAgICAzNiwgMjMzLCAxNzcsIDIwNywgMTksIDE2LCAzNiwgMjI0LCAxNzcsIDIzNywgMTM4LCAxNiwgMzYsIDgzLCAyMDcsIDE5LCAKKyAgICAxNiwgMzYsIDIzNiwgMjQyLCAyMzcsIDEzOCwgMTYsIDM2LCAyNDcsIDEyMSwgMjEzLCAxMDksIDE2LCAzNiwgMjEwLCAyOSwgCisgICAgMjE2LCAyNTQsIDE2LCAzNiwgMjEwLCAyOSwgMjI4LCAxMTcsIDE2LCAzNiwgMjQxLCAyMzksIDIyNCwgMTY3LCAyMzgsIDk2LCAKKyAgICAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDIsIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDEwNSwgMTYsIDM2LCAKKyAgICAyNDEsIDEwNywgMjQzLCAzNCwgMTQ3LCAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDksIDE2LCAzNiwgMTg5LCAyNTEsIAorICAgIDI0MywgMTYsIDM2LCAyMDcsIDEwOSwgMjI4LCAxODAsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOSwgMjQ4LCAKKyAgICAxMzQsIDE2LCAzNiwgMjQ3LCAxNTYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMjIsIDY1LCAxNiwgMzYsIDIwOCwgMCwgMTYsIAorICAgIDM2LCAyMzgsIDk2LCAxNiwgMzYsIDIzNywgOTcsIDIxMCwgMTU0LCAxNiwgMzYsIDIzNSwgNTgsIDIxMCwgMTU0LCAxNiwgCisgICAgMzYsIDIxMywgMTgxLCAyMTAsIDE1NCwgMTYsIDM2LCAyMDMsIDI0MCwgMjEwLCAxNTQsIDE2LCAzNiwgMjA4LCAyNDQsIDE2LCAKKyAgICAzNiwgMjQxLCAxNDYsIDI0OCwgMTM4LCA5OSwgMTc2LCAyNDgsIDc4LCAxNiwgMzYsIDIyMCwgNSwgMTYsIDM2LCAyNDEsIAorICAgIDE0NywgMjM2LCAyNDIsIDEwNSwgMTYsIDM2LCAyMDgsIDEsIDIzNiwgMjQyLCAxMDUsIDIxNywgMTMxLCAxMTcsIDIxNywgCisgICAgMTMxLCAyNDcsIDMyLCAyMTcsIDEzMSwgMjM2LCAyNDUsIDIxNywgMTMxLCAyMjgsIDUwLCAyMzYsIDI0NSwgMjE3LCAxMzEsIAorICAgIDI0OCwgMjI3LCAyNDgsIDMzLCAyMTcsIDEzMSwgMjQ4LCA4NiwgMjA2LCA3LCAyMTcsIDEzMSwgMjQ4LCA2NywgMjQ5LCA4MiwgCisgICAgMjMyLCAyMjIsIDIxNywgMTMxLCAyNTEsIDkxLCA3NiwgMjQ3LCA2LCAyMTcsIDEzMSwgMjQxLCAyNDQsIDIxNywgMTMxLCAKKyAgICAyNDIsIDE4MiwgMjUxLCAyNDcsIDIxOCwgOTUsIDIxNywgMTMxLCA1MywgMjQ5LCAxMjQsIDQ0LCAxNywgMTAyLCA0NCwgMTcsIAorICAgIDEwNSwgNDQsIDE3LCAxNDcsIDQ0LCAxNywgMTQ5LCA0NCwgMTcsIDE2NCwgNDQsIDE3LCAxODcsIDQ0LCAxNywgMjEwLCAKKyAgICAxMzUsIDQ0LCAxNywgMTkyLCA0NCwgMTcsIDIxOSwgMTEzLCA0NCwgNDEsIDIwNiwgMTY2LCA0NCwgNDEsIDIzOCwgMTk5LCAKKyAgICA0NCwgNDEsIDIwNCwgMTY0LCA0NCwgNDEsIDIwNiwgNjksIDQ0LCA0MSwgMjM2LCAyMjMsIDQ0LCA0MSwgMjM3LCAxMDgsIAorICAgIDQ0LCA0MSwgMjA5LCAxMDAsIDQ0LCA0MSwgMjEwLCAxMzIsIDQ0LCA0MSwgMjM4LCAyMjksIDQ0LCA0MSwgMjE5LCAxMTAsIAorICAgIDQ0LCA0MSwgMjA0LCAxNTksIDEwNiwgMTcsIDEwMiwgMTA2LCAxNywgMTA1LCAxMDYsIDE3LCAxNDcsIDEwNiwgMTcsIDE0OSwgCisgICAgMTA2LCAxNywgMTY0LCAxMDYsIDE3LCAxODcsIDEwNiwgMTcsIDIxMCwgMTM1LCAxMDYsIDE3LCAxOTIsIDEwNiwgMTcsIAorICAgIDIxOSwgMTEzLCAxMDYsIDQxLCAyMDYsIDE2NiwgMTA2LCA0MSwgMjM4LCAxOTksIDEwNiwgNDEsIDIwNCwgMTY0LCAxMDYsIAorICAgIDQxLCAyMDYsIDY5LCAxMDYsIDQxLCAyMzYsIDIyMywgMTA2LCA0MSwgMjM3LCAxMDgsIDEwNiwgNDEsIDIwOSwgMTAwLCAKKyAgICAxMDYsIDQxLCAyMTAsIDEzMiwgMTA2LCA0MSwgMjM4LCAyMjksIDEwNiwgNDEsIDIxOSwgMTEwLCAxMDYsIDQxLCAyMDQsIAorICAgIDE1OSwgMTcsIDExMiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxMjAsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTI2LCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIzNiwgMjI5LCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIzNywgNjEsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxNywgMjA5LCAxMDYsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjEwLCAxMzYsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCAxNywgMjM4LCAyMzIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjE5LCAxMTQsIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCA0MSwgMjA2LCAxNjcsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM4LCAyMDAsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgCisgICAgMjA0LCAxNjUsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjA2LCA3MCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzYsIAorICAgIDIyNCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzcsIDEwOSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDksIDEwMSwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMTAsIDEzMywgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzgsIDIzMCwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDQxLCAyMTksIDExMSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDQsIDE2MCwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDEwNiwgOCwgNCwgMSwgNjIsIDEwNiwgOCwgNCwgMSwgMjUwLCAxMDMsIDEwNiwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjMsIDEwNiwgOCwgNCwgMSwgMjQyLCAxNTMsIDEwNiwgOCwgNCwgMSwgNzIsIDEwNiwgOCwgNCwgMSwgMjM4LCA1LCAxMDYsIAorICAgIDgsIDQsIDEsIDIzNiwgMTU2LCAxMDYsIDgsIDQsIDEsIDIzNCwgMjQ3LCAxMDYsIDgsIDQsIDEsIDcwLCAxMDYsIDgsIDQsIAorICAgIDEsIDIyNywgMjUxLCAxMDYsIDgsIDQsIDEsIDIyNywgMTE4LCAxMDYsIDgsIDQsIDEsIDE1NiwgMTA2LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0MywgMTA2LCA4LCA0LCAxLCAyMjAsIDIxNCwgMTA2LCA4LCA0LCAxLCA3NCwgMTA2LCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNiwgMTA2LCA4LCA0LCAxLCAyMTQsIDE2NywgMTA2LCA4LCA0LCAxLCAxNDYsIDEwNiwgOCwgNCwgMSwgMjEyLCAxMjIsIAorICAgIDEwNiwgOCwgNCwgMSwgMjA3LCA4MywgMTA2LCA4LCA0LCAxLCA2NiwgMTA2LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTA2LCA4LCAKKyAgICA0LCAxLCAyMDEsIDE0NywgMTA2LCA4LCA0LCAxLCAyMDAsIDE5NSwgMTA2LCA4LCA0LCAxLCAyMDAsIDEyMywgMTA2LCA4LCAKKyAgICA0LCAxLCAxOTksIDE1NywgNDQsIDgsIDYsIDEsIDYyLCA0NCwgOCwgNiwgMSwgMjUwLCAxMDMsIDQ0LCA4LCA2LCAxLCAyNDcsIAorICAgIDIyMywgNDQsIDgsIDYsIDEsIDI0MiwgMTUzLCA0NCwgOCwgNiwgMSwgNzIsIDQ0LCA4LCA2LCAxLCAyMzgsIDUsIDQ0LCA4LCAKKyAgICA2LCAxLCAyMzYsIDE1NiwgNDQsIDgsIDYsIDEsIDIzNCwgMjQ3LCA0NCwgOCwgNiwgMSwgNzAsIDQ0LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MSwgNDQsIDgsIDYsIDEsIDIyNywgMTE4LCA0NCwgOCwgNiwgMSwgMTU2LCA0NCwgOCwgNiwgMSwgMjIzLCAyNDMsIDQ0LCAKKyAgICA4LCA2LCAxLCAyMjAsIDIxNCwgNDQsIDgsIDYsIDEsIDc0LCA0NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDQ0LCA4LCA2LCAxLCAKKyAgICAyMTQsIDE2NywgNDQsIDgsIDYsIDEsIDE0NiwgNDQsIDgsIDYsIDEsIDIxMiwgMTIyLCA0NCwgOCwgNiwgMSwgMjA3LCA4MywgCisgICAgNDQsIDgsIDYsIDEsIDY2LCA0NCwgOCwgNiwgMSwgMjAzLCAxNjgsIDQ0LCA4LCA2LCAxLCAyMDEsIDE0NywgNDQsIDgsIDYsIAorICAgIDEsIDIwMCwgMTk1LCA0NCwgOCwgNiwgMSwgMjAwLCAxMjMsIDQ0LCA4LCA2LCAxLCAxOTksIDE1NywgNDQsIDgsIDQsIDEsIAorICAgIDYyLCA0NCwgOCwgNCwgMSwgMjUwLCAxMDMsIDQ0LCA4LCA0LCAxLCAyNDcsIDIyMywgNDQsIDgsIDQsIDEsIDI0MiwgMTUzLCAKKyAgICA0NCwgOCwgNCwgMSwgNzIsIDQ0LCA4LCA0LCAxLCAyMzgsIDUsIDQ0LCA4LCA0LCAxLCAyMzYsIDE1NiwgNDQsIDgsIDQsIDEsIAorICAgIDIzNCwgMjQ3LCA0NCwgOCwgNCwgMSwgNzAsIDQ0LCA4LCA0LCAxLCAyMjcsIDI1MSwgNDQsIDgsIDQsIDEsIDIyNywgMTE4LCAKKyAgICA0NCwgOCwgNCwgMSwgMTU2LCA0NCwgOCwgNCwgMSwgMjIzLCAyNDMsIDQ0LCA4LCA0LCAxLCAyMjAsIDIxNCwgNDQsIDgsIDQsIAorICAgIDEsIDc0LCA0NCwgOCwgNCwgMSwgMjE2LCAyMjYsIDQ0LCA4LCA0LCAxLCAyMTQsIDE2NywgNDQsIDgsIDQsIDEsIDE0NiwgCisgICAgNDQsIDgsIDQsIDEsIDIxMiwgMTIyLCA0NCwgOCwgNCwgMSwgMjA3LCA4MywgNDQsIDgsIDQsIDEsIDY2LCA0NCwgOCwgNCwgCisgICAgMSwgMjAzLCAxNjgsIDQ0LCA4LCA0LCAxLCAyMDEsIDE0NywgNDQsIDgsIDQsIDEsIDIwMCwgMTk1LCA0NCwgOCwgNCwgMSwgCisgICAgMjAwLCAxMjMsIDQ0LCA4LCA0LCAxLCAxOTksIDE1NywgNDQsIDE3LCAxOTksIDgxLCAxODksIDQ0LCA0MSwgMjM4LCAxOTksIAorICAgIDE4OSwgNDQsIDQxLCAyMDQsIDE2NCwgMTg5LCA0NCwgNDEsIDIwNiwgNjksIDE4OSwgNDQsIDQxLCAyMzYsIDIyMywgMTg5LCAKKyAgICA0NCwgNDEsIDIzNywgMTA4LCAxODksIDQ0LCA0MSwgMjA5LCAxMDAsIDE4OSwgNDQsIDQxLCAyMTAsIDEzMiwgMTg5LCA0NCwgCisgICAgNDEsIDIzOCwgMjI5LCAxODksIDQ0LCA0MSwgMjE5LCAxMTAsIDE4OSwgNDQsIDQxLCAyMDQsIDE1OSwgNTMsIDQ0LCAxNywgCisgICAgMTAyLCA1MywgNDQsIDE3LCAxMDUsIDUzLCA0NCwgMTcsIDE0NywgNTMsIDQ0LCAxNywgMTQ5LCA1MywgNDQsIDE3LCAxNjQsIAorICAgIDUzLCA0NCwgMTcsIDE4NywgNTMsIDQ0LCAxNywgMjEwLCAxMzUsIDUzLCA0NCwgMTcsIDE5MiwgNTMsIDQ0LCAxNywgMjE5LCAKKyAgICAxMTMsIDUzLCA0NCwgNDEsIDIwNiwgMTY2LCAxODksIDQ0LCAxNywgMTk5LCA4MSwgMTAwLCAxMjEsIDE2MiwgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA4MCwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgMjAzLCA0MiwgCisgICAgMTAwLCAxMjEsIDE2MiwgMjA1LCA4MywgMjQxLCAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgODAsIDIwNSwgODMsIDI0MSwgCisgICAgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjA1LCA4MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgCisgICAgMjA1LCA4MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCAxNjIsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDgwLCAyMTQsIDkwLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIxNCwgOTAsIDI0MSwgCisgICAgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgMTYyLCAKKyAgICAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIAorICAgIDgwLCAyNiwgNTEsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDEyNywgCisgICAgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCAKKyAgICA0OSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgCisgICAgMjEzLCA0NiwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgNTEsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDUxLCAKKyAgICAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAyMjUsIAorICAgIDI4LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNDksIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDgzLCAyNiwgMjEzLCA0NiwgMTAwLCAKKyAgICAxMjEsIDgzLCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgODAsIDI2LCA1MSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDUxLCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAKKyAgICA1MSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDgzLCAyNiwgCisgICAgMjI1LCAyOCwgMTAwLCAxMjEsIDgzLCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNDksIAorICAgIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgCisgICAgODAsIDI2LCA0OSwgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDQ5LCAxMTUsIDIzNCwgMTIxLCAxMDAsIAorICAgIDEyMSwgMTE1LCAxNjIsIDI2LCA0OSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIyNSwgMjgsIDEwMCwgCisgICAgMTIxLCAxNjIsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgNDksIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCA1MSwgODAsIDI2LCA0OSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgMjMzLCAKKyAgICAxNzcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAKKyAgICAxNjIsIDI2LCA0OSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDQ5LCAxNjIsIDI2LCA1MSwgMTI3LCAyMzQsIDEyMSwgCisgICAgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzYsIDEwMCwgCisgICAgMTIxLCA0OSwgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgCisgICAgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDE2MiwgMjYsIDQ5LCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgCisgICAgNDksIDE2MiwgMjYsIDUxLCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIzMywgMTc2LCAxMDAsIAorICAgIDEyMSwgMTYyLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgNDksIDgwLCAyNiwgNTEsIDgzLCAyMjQsIDE5NiwgMTAwLCAKKyAgICAxMjEsIDUxLCA4MCwgMjYsIDQ5LCA4MywgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgMTYyLCAyNiwgMjMzLCAxNzcsIDIzNCwgCisgICAgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDEyNywgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCA4MCwgCisgICAgMjYsIDExNSwgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIDgwLCAyNiwgMjMzLCAxNzcsIDIyNCwgMTk2LCAKKyAgICAxMDAsIDEyMSwgNDksIDExNSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAxMTUsIDgwLCAyNiwgCisgICAgNDksIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCA0OSwgMTI3LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIAorICAgIDEyMSwgNTEsIDEyNywgODAsIDI2LCA0OSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgMTE1LCAKKyAgICAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDEyNywgMjMzLCAxNzcsIDIzNCwgMTIxLCAxMDAsIAorICAgIDEyMSwgNTEsIDE2MiwgMjYsIDQ5LCA4MywgMjM0LCAxMjEsIDEwMCwgMTIxLCA0OSwgMTYyLCAyNiwgNTEsIDgzLCAyMzQsIAorICAgIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCA1MywgMjQxLCAyNDUsIDIzMywgCisgICAgMTc2LCAxMDAsIDEyMSwgODAsIDUzLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDUzLCAyNDEsIDI0NSwgCisgICAgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCA1MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA1MywgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA1MywgMjAzLCA0MiwgMTAwLCAxMjEsIDEyNywgMjA5LCAxMzksIDI2LCA1MSwgMjM5LCAxNzUsIDEwMCwgCisgICAgMTIxLCAxMjcsIDUzLCAyNiwgNTEsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAKKyAgICAxMjcsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgMTI3LCA1MywgMjYsIDQ5LCAyMDksIDEzOCwgCisgICAgMTAwLCAxMjEsIDUzLCAxMjcsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDUxLCAyMzksIAorICAgIDE3NSwgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjEzLCA0NiwgCisgICAgMTAwLCAxMjEsIDExNSwgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMTUsIDUzLCAyNiwgNDksIAorICAgIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCA1MSwgCisgICAgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMTMsIAorICAgIDQ2LCAxMDAsIDEyMSwgODMsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgODMsIDUzLCAyNiwgNDksIAorICAgIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDgzLCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDEyNywgMjA5LCAxMzksIDI2LCAKKyAgICAyMzMsIDE3NywgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMjcsIDUzLCAyNiwgMjMzLCAxNzcsIDIwOSwgMTM4LCAxMDAsIDEyMSwgCisgICAgNTMsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDIzMywgMTc3LCAyMzksIDE3NSwgCisgICAgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjMzLCAKKyAgICAxNzYsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCAyMzMsIDE3NywgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIAorICAgIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgCisgICAgMjUwLCAyMzcsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMjcsIDI2LCAyMjUsIDI4LCAKKyAgICAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDExNSwgCisgICAgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDIwMywgMjI1LCA1MSwgMjA1LCAxODYsIDIyNCwgNTQsIAorICAgIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDIwMywgMjI1LCA0OSwgMjA1LCAxODYsIDIyNCwgNTQsIDIxMywgCisgICAgNDYsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDI0MiwgMjM0LCAxMDAsIDEyMSwgMTYyLCAyMjUsIDI4LCAxMDAsIDEyMSwgCisgICAgMTYyLCAyMDMsIDIyOCwgMTAwLCAxMjEsIDE2MiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjM5LCAxNjcsIDEwMCwgMTIxLCAKKyAgICA4MCwgMjI1LCAyOCwgMTAwLCAxMjEsIDgwLCAyMDMsIDIyOCwgMTAwLCAxMjEsIDgwLCAyMTMsIDQ2LCAxMDAsIDEyMSwgODAsIAorICAgIDIzOSwgMTY3LCAxMDAsIDEyMSwgMTYyLCA0OSwgMjYsIDgwLCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCA4MCwgCisgICAgMjM5LCAxNjcsIDEwMCwgMTIxLCA4MCwgNDksIDI2LCAxNjIsIDIxMywgNDYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMTYyLCAKKyAgICAyMzksIDE2NywgMjAzLCAyMjUsIDE2NywgMjQ4LCAxMzQsIDIyNCwgNTQsIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCAyMjQsIAorICAgIDU0LCAxMTIsIDIxNCwgODgsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMjYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgMjI0LCA1NCwgCisgICAgMTY3LCAyNDgsIDEzNCwgMjI0LCA1NCwgMjM3LCA2MSwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMjYsIDIxNCwgCisgICAgODYsIDI0OCwgMTM0LCAyMjQsIDU0LCAyMTAsIDEzNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMzYsIDE4MywgMjQ4LCAxMzQsIAorICAgIDQ5LCAyMTAsIDEzNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCA0OSwgMTI2LCAyMTQsIDg2LCAyNDgsIDEzNCwgNDksIDIzNywgCisgICAgNjEsIDIzOCwgMjI2LCAyNDgsIDEzNCwgNDksIDE2NywgMjQ4LCAxMzQsIDQ5LCAxMjYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgCisgICAgNDksIDExMiwgMjE0LCA4OCwgMjQ4LCAxMzQsIDQ5LCAxMTIsIDIzOCwgMjI4LCAyNDgsIDEzNCwgNTEsIDE2NywgMjQ4LCAKKyAgICAxMzQsIDE2MiwgMjEwLCAxMDMsIDIyMiwgNjYsIDIxMCwgMTAzLCAyNDEsIDI1MCwgMjEwLCAxMDMsIDIwMywgMjI1LCAxMTIsIAorICAgIDIzOCwgMjI4LCAyNDgsIDEzNCwgNTEsIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCAyMTQsIDkyLCAyMjQsIDU0LCAyMjUsIAorICAgIDI4LCAyMTQsIDkyLCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgMjI1LCAyOCwgMjE0LCA5MiwgMjAzLCAKKyAgICAyMjUsIDQ5LCAyNiwgMjI0LCA1NCwgNDksIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIAorICAgIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIDI2LCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIAorICAgIDU0LCAyMjUsIDI4LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIDI2LCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCAyMTMsIAorICAgIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgMjI1LCAKKyAgICAyOCwgMjE0LCA5MiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgNDksIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCA2MywgCisgICAgMjA4LCAxOTMsIDY0LCAyMDgsIDE5MywgNjQsIDUyLCAzLCAyMTIsIDIxOSwgMjQzLCAxNCwgNjQsIDUyLCAyNDMsIDQ1LCAKKyAgICA2MywgNCwgMjA4LCAxOTMsIDUyLCAzLCAyMzMsIDE3NywgMjM3LCA5NSwgNTIsIDMsIDgzLCAyMzcsIDk1LCA1MiwgMywgCisgICAgMjE3LCAxNywgMjQyLCAyMjksIDIzNywgOTUsIDUyLCAzLCAyMDMsIDIyNSwgNDksIDIwNSwgMTg2LCAyMjQsIDU0LCA1MSwgCisgICAgMjM3LCA5NSwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjA1LCAxODYsIDIyNCwgNTQsIDQ5LCAyMzcsIDk1LCA1MiwgMywgMjQxLCAKKyAgICA3MSwgMjQyLCAyMjksIDIzNywgOTUsIDYzLCA0LCAyMDgsIDE5MywgNjQsIDQsIDIwOCwgMTkzLCA2MywgMjEzLCAxNzUsIAorICAgIDY0LCAyMTMsIDE3NSwgNjMsIDgzLCAyMTMsIDE3NSwgNjQsIDgzLCAyMTMsIDE3NSwgNjMsIDIxNiwgMTE5LCA2NCwgMjE2LCAKKyAgICAxMTksIDYzLCAyMDMsIDIyNywgMjA1LCA5OCwgNjQsIDIwMywgMjI3LCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIDQsIDIwNSwgCisgICAgOTgsIDY0LCAyMDMsIDIyNywgNCwgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIwNSwgOTgsIDY0LCAyMTMsIDQxLCAyMDUsIDk4LCAKKyAgICA2MywgMjEzLCA0MSwgNCwgMjA1LCA5OCwgNjQsIDIxMywgNDEsIDQsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCAyMTUsIDk3LCAKKyAgICA2NCwgMjEzLCA0MSwgMjE1LCA5NywgNjMsIDIzOSwgMTY2LCAyMDUsIDk4LCA2NCwgMjM5LCAxNjYsIDIwNSwgOTgsIDYzLCAKKyAgICAyMzksIDE2NiwgNCwgMjA1LCA5OCwgNjQsIDIzOSwgMTY2LCA0LCAyMDUsIDk4LCA2MywgMjI1LCAyMywgMjA1LCA5OCwgNjQsIAorICAgIDIyNSwgMjMsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCA0LCAyMDUsIDk4LCA2NCwgMjI1LCAyMywgNCwgMjA1LCA5OCwgNjMsIAorICAgIDIyNSwgMjMsIDIxNSwgOTcsIDY0LCAyMjUsIDIzLCAyMTUsIDk3LCA2MywgMjQxLCA2NCwgNjQsIDI0MSwgNjQsIDY0LCAKKyAgICAyNDEsIDY1LCAyNDMsIDQ1LCA2MywgNCwgMjQxLCA2NCwgMjM3LCA3MCwgMjI0LCA0OSwgNjQsIDI0NiwgMTU1LCAyMzksIAorICAgIDE4MCwgMjQ2LCAxNTUsIDI0NiwgMTU2LCAzLCA4MywgMjM3LCA5NSwgMjQ4LCAxNiwgNjMsIDI0NiwgMTU1LCAyNDYsIDE1NiwgCisgICAgMywgNDksIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDIyNCwgCisgICAgNTQsIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIAorICAgIDIwMywgMjI1LCA1MSwgMjE0LCA5MiwgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyNTEsIDEyNSwgMjQ3LCAyNDcsIDIwMywgCisgICAgMjI1LCA0OSwgMjE0LCA5MiwgMjQ4LCAxNDQsIDQ5LCAxNjcsIDYzLCAyNDYsIDE1NSwgNTEsIDE2NywgNjMsIDI0NiwgMTU1LCAKKyAgICAyMjgsIDUxLCAyNDgsIDIwLCAyMjgsIDUxLCA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCAxNjcsIDIyOCwgNTEsIDY0LCAyNDYsIAorICAgIDE1NSwgMjI0LCA1NCwgMTY3LCAyMjgsIDUxLCA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCA0OSwgMjE0LCA5MiwgMjQ2LCAKKyAgICAxNDksIDI1MCwgMjM2LCAyMDMsIDIyNSwgNTEsIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgMjI0LCA1NCwgNTEsIAorICAgIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgMjI0LCA1NCwgNDksIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgCisgICAgMjAzLCAyMjUsIDE2NywgMjQ2LCAxNTUsIDIyNCwgNTQsIDE2NywgMjQ2LCAxNTUsIDYzLCAyMjQsIDU0LCA1MSwgMjA1LCAKKyAgICA5OCwgNjMsIDIyNCwgNTQsIDQ5LCAyMDUsIDk4LCA2MywgMjAzLCAyMjUsIDQ5LCAyMDUsIDk4LCA2MywgMjAzLCAyMjUsIAorICAgIDUxLCAyMDUsIDk4LCA2NCwgMjQ4LCAyMCwgNTIsIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgNTEsIDE2NywgMjQ4LCAKKyAgICAxNDQsIDUyLCAzLCAyMDMsIDIyNSwgNDksIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAyMjQsIDU0LCA1MSwgCisgICAgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNjQsIDUyLCAzLCA4MywgMjQ4LCAxNTYsIDIyNCwgMTc2LCA2NCwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDMsIDI0MCwgMTgyLCAyMDMsIDIyNywgMjA1LCA5OSwgMywgNDksIDE2NywgMjQ4LCAxNDQsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjI1LCA3MSwgMjQ2LCAxNTUsIDY0LCA1MiwgMywgMjAzLCAyMjUsIAorICAgIDQ5LCAyMTQsIDkxLCA2NCwgNTIsIDMsIDIyNCwgNTQsIDQ5LCAyMTQsIDkxLCA2NCwgNTIsIDMsIDIyNCwgNTQsIDUxLCAKKyAgICAyMTQsIDkxLCA2NCwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgNDksIAorICAgIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjI0LCA1NCwgNDksIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjI0LCA1NCwgCisgICAgNTEsIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjAzLCAyMjUsIDUxLCAyMTQsIDkxLCAyMDMsIDIyNSwgNDksIDIwNSwgCisgICAgOTgsIDIwMywgMjI1LCA1MSwgMjA1LCA5OCwgMjI0LCA1NCwgNDksIDIwNSwgOTgsIDY0LCAyMjIsIDY2LCAyMDgsIDE5MywgCisgICAgNjMsIDIyMiwgNjYsIDIwOCwgMTkzLCA2NCwgMjIyLCA2NiwgNCwgMjA4LCAxOTMsIDYzLCAyMjIsIDY2LCA0LCAyMDgsIAorICAgIDE5MywgMjI0LCA1NCwgNTEsIDIwNSwgOTgsIDYzLCAyMDcsIDIyOSwgMywgMjEzLCAxOTQsIDI0NiwgMTAxLCAyMDQsIDksIAorICAgIDIwOSwgMzEsIDI0NiwgNzMsIDYzLCAyMDgsIDEwOSwgNjQsIDIwOCwgMTA5LCAyMjQsIDE5MywgMjA2LCAzMCwgMjA3LCAKKyAgICAyMjgsIDI1MCwgMTg0LCAyMTgsIDIzOCwgMjQxLCAxMTgsIDIxOCwgMjM4LCAyNDMsIDU0LCAyMTcsIDM5LCA2MywgMjA2LCAKKyAgICAxNzUsIDY0LCAyMDYsIDE3NSwgMjQ5LCA5NCwgMjQ4LCA3OCwgMjQ5LCA5NCwgMTAwLCAzLCAyNDcsIDYsIDI0OSwgOTQsIAorICAgIDEwMCwgMywgMjAwLCAxOTUsIDIxMiwgMjQsIDIwNCwgMTAsIDMsIDIxMywgMjIzLCAyMzksIDE0NCwgMjMzLCAxMTgsIDI0OCwgCisgICAgMjA0LCA2NCwgMjEwLCAzLCAyMTUsIDE5NiwgNjMsIDIxMCwgMywgMjE1LCAxOTYsIDIxMCwgOTEsIDIxMywgMTA1LCAyMTIsIAorICAgIDIyOCwgMjM3LCAyOCwgMjM0LCAxMjgsIDI0OCwgMjAsIDYzLCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCA1MSwgMjE1LCAKKyAgICA5NiwgMjI4LCAxMDMsIDY0LCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgCisgICAgNTEsIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCA4MSwgMjYsIDI0MiwgMjMzLCAKKyAgICAyNDcsIDEwNSwgNTQsIDIxMywgMjM1LCA1NCwgMjQ4LCAxNjQsIDU0LCAyNDcsIDE4MSwgMjUxLCA2MSwgMjE3LCAxOCwgCisgICAgMjQyLCAyMzQsIDI0NiwgMjM3LCAyMTMsIDkwLCAyNDIsIDIzNSwgNzYsIDIyNCwgNjksIDI0MiwgMjM1LCA3NiwgMjI3LCAKKyAgICAyMTcsIDIwOCwgMTEwLCAyNiwgMjQyLCAyNDMsIDIzNywgMTYyLCA5OSwgMjUxLCAyMjgsIDIxMCwgOTQsIDIzNCwgMjA3LCAKKyAgICAyNiwgMjA5LCAxNzksIDIxNiwgNzIsIDk5LCAxOTksIDI1NSwgMjAwLCA3NSwgMjA1LCA4OCwgMzYsIDIzNCwgMTIzLCAyMDUsIAorICAgIDg4LCAzNiwgMjI1LCA5NiwgMjA1LCA4OCwgMzYsIDIzNywgNzcsIDIwNSwgODgsIDM2LCAyMDYsIDMxLCAyMDUsIDg4LCAzNiwgCisgICAgMjAxLCAxNiwgMjA1LCA4OCwgMzYsIDIwMSwgODIsIDIwNSwgODgsIDM2LCAyMjEsIDYzLCAyMDUsIDg4LCAzNiwgMjM5LCAKKyAgICAxNywgMjAxLCAzOCwgNzYsIDI0MSwgOTIsIDY0LCAyMzYsIDE5NSwgMjM3LCAxODksIDY0LCAyMDksIDQ3LCAyMzcsIDE4OSwgCisgICAgNjMsIDIwOSwgNDcsIDIzNywgMTg5LCA2NCwgMjA3LCAyMjksIDMsIDIxMywgMTk0LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIAorICAgIDgxLCAyMjUsIDY0LCAyMTQsIDg4LCAyMjEsIDgxLCAyMjIsIDM0LCAyMzcsIDEzMCwgNTQsIDIzOSwgMTcsIDIyMiwgMTg1LCAKKyAgICA1NCwgMjI3LCAxMzMsIDIxMSwgMjQ0LCAyMDMsIDIwOSwgMjIwLCAxOCwgMjE1LCAxMTAsIDI1MCwgMjIyLCAyMDYsIDIxOSwgCisgICAgMjM2LCAyLCAyNDcsIDE1NCwgMjI0LCAyNDYsIDIwMiwgMjA2LCAyMjQsIDIwNywgMjExLCAyMTIsIDIxMiwgNDgsIDI0NywgCisgICAgMTM5LCAyNTAsIDI1NCwgMjE1LCAxNDUsIDY0LCAyNDYsIDI0NCwgMjI2LCAxNDQsIDY0LCAyNDYsIDI0NCwgMjE0LCA4MCwgCisgICAgNjQsIDI0NiwgMjQ0LCAyMTIsIDIzNiwgNjQsIDI0NiwgMjQ0LCAyNDgsIDE1NSwgNjQsIDI0NiwgMjQ0LCAyMjYsIDkzLCAKKyAgICA2NCwgMjQ2LCAyNDQsIDIxNiwgODQsIDYzLCAyNDYsIDI0NCwgMjI2LCAxNDQsIDYzLCAyNDYsIDI0NCwgMjE0LCA4MCwgNjMsIAorICAgIDI0NiwgMjQ0LCAyMTIsIDIzNiwgNjMsIDI0NiwgMjQ0LCAyNDgsIDE1NSwgNjMsIDI0NiwgMjQ0LCAyMjYsIDkzLCA2MywgCisgICAgMjQ2LCAyNDQsIDIxNiwgODQsIDYzLCAyMDgsIDI0MiwgMjA3LCAyNDEsIDY0LCAyMzQsIDEyOCwgMjA3LCAyNDEsIDY0LCAKKyAgICAyNDEsIDY1LCAyMDcsIDI0MSwgNjMsIDI0NiwgOTgsIDIwNywgMjQxLCA2NCwgMjA4LCAyNDIsIDIwNywgMjQxLCA2MywgCisgICAgMjM0LCAxMjgsIDIwNywgMjQxLCA2MywgMjQxLCA2NSwgMjA3LCAyNDEsIDY0LCAyNDYsIDk4LCAyMDcsIDI0MSwgMjMzLCAKKyAgICAxMTgsIDIwOCwgMTk4LCAyMTQsIDg4LCAyMTgsIDIwOSwgMjM4LCAyMjgsIDIxOCwgMjA5LCAyNDksIDQsIDIzOCwgMjI4LCAKKyAgICAyMTgsIDIwNCwgMjQ5LCA0LCAyMDksIDk5LCAyMTgsIDIwNCwgMjIwLCAyNDYsIDIzNywgNDUsIDU0LCAyMjAsIDI0NiwgCisgICAgMjIwLCAxMTcsIDU0LCAyMjAsIDI0NiwgMjEwLCA3OSwgNTQsIDIwMSwgNDgsIDIwNywgMTAzLCAyNDIsIDIzNCwgMjM5LCAKKyAgICAxNCwgMjA3LCAxMDMsIDI0MiwgMjM0LCAyMDMsIDIzNywgMjEzLCAxNzEsIDk5LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIAorICAgIDEyNywgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTI1LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgCisgICAgMjA0LCAxMjQsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDEyMiwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgCisgICAgMzYsIDIwNCwgMTIwLCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMTgsIDIxNSwgMTI3LCAyMTMsIDE3MSwgCisgICAgMTYsIDM2LCAyMDQsIDExNiwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIzNiwgMCwgMjIyLCAxMjYsIDYzLCAyMDMsIAorICAgIDIzNywgMjEzLCAxNzEsIDk5LCAyMTMsIDE3MiwgMjE2LCAxMzQsIDk5LCAyMTYsIDEwNywgMjE2LCAxMzQsIDk5LCAyMTYsIAorICAgIDE5LCAyMTYsIDEzNCwgNTQsIDIwMSwgMzYsIDk5LCAyNDEsIDU3LCAyMzcsIDE4OCwgMjQxLCA1NywgMjM3LCAxODcsIDI0MSwgCisgICAgNTcsIDIzNywgMTg2LCAyNDEsIDU3LCAyMzcsIDE4NSwgMjQxLCA1NywgMjM3LCAxODQsIDI0MSwgNTcsIDIzNywgMTgzLCAKKyAgICA2NCwgMjQ2LCAxNTYsIDMsIDczLCAyMTMsIDQ2LCA2NCwgMjQ2LCAxNTYsIDMsIDEyMCwgMjQwLCAxODAsIDYzLCAyNDYsIAorICAgIDE1NiwgMywgNjQsIDczLCAyMTMsIDQ2LCA2MywgMjQ2LCAxNTYsIDMsIDEyMCwgNjQsIDI0MCwgMTgwLCAyMjEsIDk3LCAzNiwgCisgICAgMjAwLCA3NSwgMjIxLCA5NywgMzYsIDE5OSwgMjU0LCAyNDEsIDM4LCAzNiwgMjM1LCA2OCwgMjAwLCA3NSwgMjQxLCAzOCwgCisgICAgMzYsIDIyNCwgMjM5LCAxOTksIDI1NCwgMjQxLCAzOCwgMzYsIDIyNCwgMjM5LCAyMDAsIDc1LCAyNDEsIDM4LCAzNiwgMjM1LCAKKyAgICA2OCwgMTk5LCAyNTQsIDY0LCAyMzcsIDUzLCA2MywgMjM3LCA1MywgMjM0LCAyMDcsIDI2LCAyMTUsIDIwMCwgMjUxLCA4MSwgCisgICAgMjQyLCAyMzIsIDIwNywgMTY4LCAyMDgsIDExOCwgNzYsIDI1MSwgMjA0LCAyMTEsIDIyOSwgMjUxLCAxNDEsIDIzNywgMjQsIAorICAgIDIzNiwgMTIsIDIwOCwgMTE4LCA3NiwgMjM0LCA5OCwgMjUwLCAxNDcsIDk5LCAyMzcsIDQwLCAyMTYsIDI1MCwgNjQsIDIwOCwgCisgICAgMTA5LCAxMjYsIDIyNCwgMTcxLCAyNDMsIDMxLCAyMTMsIDQ2LCAxMjYsIDIyNCwgMTcxLCAyNDMsIDMxLCAyMjUsIDI4LCAKKyAgICAyMDEsIDkzLCA1NCwgMTIyLCAyMDIsIDE4MiwgNTQsIDIzOSwgMTcyLCAyMzcsIDEzMCwgNTQsIDIzOSwgMTcyLCAyMjIsIAorICAgIDE4NSwgNTQsIDIyOCwgNjEsIDIzNywgMTMwLCAyNiwgMjIyLCAxODUsIDU0LCAyMjIsIDE4NSwgMjYsIDIzNywgMTMwLCA1NCwgCisgICAgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDU0LCAyMjIsIDE4NSwgMywgMjA4LCA0NywgMjYsIDIyMiwgMTg1LCAyNiwgMjM3LCAKKyAgICAxMzAsIDU0LCA4MywgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDU0LCAyMzMsIDE3NywgMjIyLCAxODUsIDMsIDIwOCwgNDcsIAorICAgIDU0LCAyMjIsIDY2LCA2NCwgMjQ2LCAxNTUsIDIyMiwgNjYsIDYzLCAyNDYsIDE1NSwgMjIyLCA2NiwgNCwgNjQsIDI0NiwgCisgICAgMTU1LCAyMjIsIDE0MywgOTksIDI0MCwgMjMzLCA5OSwgMjAzLCAyMzQsIDIxNiwgMTA2LCA5OSwgMjQ2LCA4NCwgMjM2LCAKKyAgICAxNzgsIDIwMywgMjA1LCAyMjAsIDExLCAyNDcsIDQxLCAyMTYsIDE3OSwgMjI3LCAxMzksIDIwMiwgMjQ0LCAyNDYsIDIxNywgCisgICAgNjMsIDIyMSwgODIsIDIyNCwgMTkwLCAyMTAsIDEyNSwgMjEwLCAxNjQsIDIxNCwgNzAsIDIxMCwgMTQ0LCAyMDksIDI2LCAKKyAgICAyNDksIDk3LCAyNDksIDYzLCA5NSwgMjI2LCAyMTQsIDY0LCAyMzksIDE1NSwgMjIyLCAxODAsIDY0LCAyMzksIDE1NSwgCisgICAgMjI2LCAxNDQsIDYzLCAyMzksIDE1NSwgMjIyLCAxODAsIDYzLCAyMzksIDE1NSwgMjI2LCAxNDQsIDIwOSwgMzIsIDIwMSwgCisgICAgMywgMjA5LCAzNSwgMjA3LCAyMjksIDI0OCwgMjM3LCAyNDYsIDEwMSwgMjEzLCAyMjIsIDYzLCAyMDksIDMxLCAyMDYsIDMyLCAKKyAgICAyNDYsIDEwMiwgMjYsIDIxMywgMjIyLCAyMDQsIDE4NSwgNjQsIDIxMCwgMywgMjE1LCAxOTYsIDIwNCwgMTg1LCA2MywgCisgICAgMjEwLCAzLCAyMTUsIDE5NiwgNjQsIDI0MSwgNjUsIDIyOCwgMTE4LCAyMDgsIDE5MywgMjQyLCAyMjgsIDIyNSwgNzgsIAorICAgIDI0MSwgNSwgMjQ3LCAxMzUsIDIxNywgNDIsIDIxNSwgMjAwLCAyNDcsIDEzNiwgMjA5LCA2NSwgMjM0LCAxMDgsIDMsIDY0LCAKKyAgICAyNDIsIDIzNCwgNDQsIDI0MiwgMjI4LCAyMjUsIDc4LCAyNDcsIDMzLCAyMTgsIDI0MiwgMjM4LCAxNDksIDI1MSwgMTA5LCAKKyAgICAyMTcsIDcxLCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDYzLCAyMDQsIDEzOCwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2NCwgCisgICAgMjA0LCAxMzgsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjMsIDQ5LCAyMjUsIDc5LCAyMjIsIDMzLCA2NCwgNDksIDIyNSwgCisgICAgNzksIDIyMiwgMzMsIDIzOSwgMTUwLCAyMDksIDU3LCA1NCwgODAsIDY0LCAyMzksIDE2NiwgMjA1LCA5OCwgNDksIDI0NiwgCisgICAgMTEwLCAyMzgsIDE0OSwgOTUsIDIxMiwgMjQsIDIzNywgMTcxLCAyNDEsIDcxLCAyMjgsIDExOCwgNjQsIDI0NiwgMTU2LCAKKyAgICAyMjgsIDExOCwgNjMsIDIwOCwgMTkzLCA2MywgMjA1LCA2MiwgMjEzLCAxMTYsIDQ5LCAyMzgsIDE0OCwgMjEzLCAxMTYsIAorICAgIDQ5LCAyMzgsIDE0NywgMjUwLCAxNjAsIDE2LCAzNiwgMjAzLCAyMDksIDgwLCAyNDYsIDE1NiwgMywgMjA4LCA0NywgMjYsIAorICAgIDEyMCwgMTkwLCA1NiwgMjE2LCAzNiwgMjEzLCA0MywgMjI4LCA2MywgMjE2LCAzNiwgMjI1LCAyNSwgMjI4LCA2MywgMjE2LCAKKyAgICAzNiwgMjI4LCA1MCwgMjE2LCAzNiwgNjMsIDI0MiwgMjM1LCAyMTcsIDc5LCAyMTAsIDMwLCAyMTAsIDE4LCAyMDksIDIyNSwgCisgICAgMjQ2LCAxODQsIDI0NywgMTEzLCAyMzQsIDQ2LCAyMDksIDEwNywgMjM2LCAxMywgMjAxLCAzLCAyMzMsIDk0LCAyMzYsIDEzLCAKKyAgICAzLCAyMzQsIDE3NiwgMjIyLCAxNjUsIDE2LCAzNiwgMjI0LCAxOTUsIDIyMSwgNjMsIDIwNCwgMTAsIDIxNywgNzksIDIzNSwgCisgICAgNTksIDIzNiwgMjMwLCAyMzcsIDU0LCAyMjgsIDExOCwgMjMzLCAxOTcsIDIzNywgMTIwLCAyMTIsIDQzLCA1MiwgMjM2LCAKKyAgICAyMjksIDI0MywgMTQsIDIwOSwgODQsIDIzMiwgMjMyLCAyMDksIDg3LCAyMTYsIDExLCAzLCAyNDksIDk3LCAyMDYsIDE1OCwgCisgICAgMjI3LCAyMzYsIDI0OSwgODIsIDk5LCAyMzQsIDEzMSwgMjM1LCA3MCwgOTksIDIzNiwgMTg2LCAyMTQsIDIxMywgMjQyLCAKKyAgICAyMDMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNjQsIDIzNywgNTQsIDMsIDIzMywgMTc3LCAxMDEsIDYzLCAyMDgsIDQ4LCAKKyAgICA2MywgMjEyLCA1MywgMjExLCAyMTYsIDIwMywgMjI1LCAyNDgsIDEzOSwgMjExLCAyMTYsIDYzLCAyMTEsIDIxNiwgMjI0LCAKKyAgICA1NCwgMjQ4LCAxMzksIDIxMSwgMjE2LCA2NCwgMjExLCAyMTYsIDY0LCA4MCwgMjQ3LCA3LCA4MSwgMjA2LCAxNzYsIDIyNCwgCisgICAgMTA4LCA1NCwgMjA2LCAyMzUsIDIzOSwgMTQ5LCAyNTEsIDE2NCwgMjM4LCAxNDQsIDIxMywgMjIwLCAyMzcsIDY2LCAyMTMsIAorICAgIDIyMCwgMjM0LCAxOTksIDIwMiwgMjMyLCAyMzQsIDE5OSwgMjAwLCAyMTksIDIzNCwgMTk5LCAyMjQsIDU0LCA1MSwgMjE2LCAKKyAgICA0NiwgMjE2LCA0NiwgMjAzLCAyMjUsIDUxLCAyMTYsIDQ2LCA2NCwgMjE5LCAxNDcsIDYzLCAyMTksIDE0NywgMjQ3LCA3LCAKKyAgICA4MSwgODAsIDI0NywgNywgODEsIDIyMSwgMTksIDIwMCwgMTk1LCA4MCwgMjIxLCAxOSwgMjAwLCAxOTUsIDI0OSwgOTQsIAorICAgIDIwMCwgMTk1LCA4MCwgMjQ5LCA5NCwgMjAwLCAxOTUsIDIxNiwgMjUwLCAzMSwgMjQyLCAyMzQsIDgwLCAzMSwgMjQyLCAKKyAgICAyMzQsIDE3NiwgMjQ3LCA1NiwgMjQyLCAyMzQsIDgwLCAxNzYsIDI0NywgNTYsIDI0MiwgMjM0LCA4LCAyNDIsIDIzNCwgCisgICAgMjEwLCAxMDEsIDY0LCA4LCAyNDIsIDIzNCwgMjE2LCAyNTAsIDgsIDI0MiwgMjM0LCAyMjIsIDE4MiwgMjQyLCAyMzQsIAorICAgIDIwOCwgMTEwLCA3NiwgMjQxLCAyMzcsIDIzNiwgMjI5LCAyMDYsIDE5NCwgMjUwLCAxNjUsIDIzNiwgMjI5LCAyNDksIDk1LCAKKyAgICAyNTAsIDE2NSwgODAsIDIzNiwgMjI5LCAyNDksIDk1LCAyNTAsIDE2NSwgMjM2LCAyMjksIDI0NiwgOTYsIDI1MCwgMTY1LCAKKyAgICA2MywgMjM2LCAyMjksIDIxNSwgOTgsIDIwOCwgMTA5LCA2NCwgMjM2LCAyMjksIDIxNSwgOTgsIDIwOCwgMTA5LCAyMDgsIAorICAgIDIzNywgMjA4LCA1NywgMjE2LCAyNTAsIDY0LCAyMDgsIDEwOSwgNDQsIDY0LCAyMDgsIDEwOSwgMTc2LCAyNDcsIDU2LCA2MywgCisgICAgMjA4LCAxMDksIDYzLCAyNDcsIDU2LCA2NCwgMjA4LCAxMDksIDIxNiwgMjUwLCA2MywgMjA4LCAxMDksIDgwLCAyMTYsIAorICAgIDI1MCwgNjMsIDIwOCwgMTA5LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIxMCwgMTAxLCA2NCwgMjA4LCAxMDksIDgwLCAyNTAsIAorICAgIDE2NSwgMTc2LCAyNDcsIDU2LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjA5LCAxMDYsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxMywgMTczLCA2MywgMjA4LCAxMDksIDgwLCAyMzgsIAorICAgIDIzMiwgMjE1LCA5OCwgMjEzLCAxNzMsIDYzLCAyMDgsIDEwOSwgMjA0LCAxNjUsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgCisgICAgMjA5LCAxMDEsIDIxNSwgOTgsIDI1MCwgMTY1LCAyMDYsIDE5NCwgMjUwLCAxNjUsIDE3NiwgMjQ3LCA1NiwgMjA2LCAxOTQsIAorICAgIDI1MCwgMTY1LCA4MCwgMjA2LCAxOTQsIDI1MCwgMTY1LCAyMDksIDEwNiwgMjE1LCAyNTUsIDYzLCAyNiwgNjQsIDIzNywgCisgICAgMjcsIDYzLCAyMzcsIDI3LCA2NCwgMjM3LCAyNywgMjM4LCAyMzIsIDIxNSwgMjU1LCAyMTYsIDI1MCwgNjMsIDIzNywgMjcsIAorICAgIDQ0LCAxNzYsIDI0NywgNTYsIDIzOCwgMjMyLCAyMTUsIDk4LCAyMDgsIDEwOSwgODAsIDIwNiwgMTk0LCAyMTUsIDE1NSwgCisgICAgMjUwLCAxNjUsIDIwOSwgMzMsIDIwNiwgMSwgMjA1LCA5MSwgMjA5LCAzMywgODAsIDI0NiwgMjQwLCAyMDksIDMzLCAyMDgsIAorICAgIDIzOSwgODAsIDIwOCwgMjM5LCAyNDksIDk1LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIwNiwgMTk0LCAyMTQsIDI0NiwgMjUwLCAKKyAgICAxNjUsIDgwLCAyMzgsIDIzMiwgMjA2LCAxOTQsIDIxNCwgMjQ2LCAyNTAsIDE2NSwgMjQyLCAyMzUsIDgxLCAyMTAsIDEwMSwgCisgICAgNjQsIDI0NiwgMTU1LCAxODksIDk1LCAyNDIsIDIzNSwgODEsIDIyNCwgNTQsIDUxLCAyMzksIDE0NiwgNjQsIDIwOCwgMTkzLCAKKyAgICAyMDMsIDIyNSwgNTEsIDIzOSwgMTQ2LCA2NCwgMjA4LCAxOTMsIDIyNCwgNTQsIDUxLCAyMTAsIDEwMSwgNjQsIDIwOCwgCisgICAgMTkzLCAyMDMsIDIyNSwgNTEsIDIxMCwgMTAxLCA2NCwgMjA4LCAxOTMsIDYzLCAyMTQsIDc5LCAxMzQsIDIxNywgMjEsIDY0LCAKKyAgICAyMTQsIDc5LCAxMzQsIDIxNywgMjEsIDY0LCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIDYzLCAyNDEsIDY1LCAyMjEsIDE1NywgCisgICAgNjQsIDIwMCwgMTk1LCA4MCwgMjM4LCA0MywgMTM0LCA5OSwgMTYyLCA4MywgMTQ4LCAyMjIsIDY2LCA4MywgMTQ4LCA4MCwgCisgICAgODMsIDE0OCwgODAsIDIwOSwgMTM5LCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjA5LCAKKyAgICAxMzksIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDUzLCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgCisgICAgMTM0LCAyMTcsIDIxLCA4MCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDEyOCwgMjA5LCAxMzksIAorICAgIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDEyOCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAKKyAgICAyMSwgMjQyLCAxODgsIDIwOCwgOTMsIDIxNiwgMTI4LCAyLCAyMTcsIDIxLCA4MCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCAKKyAgICA4MCwgMjM0LCAxMjgsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgODAsIDYzLCAyMzQsIDEyNywgMjEyLCAyMjgsIDgwLCA2MywgCisgICAgMjM0LCAxMjgsIDI0OCwgMjAsIDIzNywgMjgsIDIzNCwgMTI3LCAyMTIsIDIyOCwgMjM3LCAyOCwgMjM0LCAxMjgsIDI0OCwgCisgICAgMjAsIDIyMiwgNjYsIDQ5LCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCA2NiwgNTEsIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIAorICAgIDY2LCAyMzcsIDQxLCA0OSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgNjYsIDIzNywgNDEsIDUxLCAyMTYsIDExNiwgMjE3LCAKKyAgICAyMSwgMjIyLCA2NiwgMjI1LCAyMywgMjUxLCA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCA2NiwgMjEzLCA0MSwgMjUxLCAKKyAgICA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgODAsIDIyNSwgMjMsIDI1MSwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIAorICAgIDIxMywgNDEsIDI1MSwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDIyNSwgMjMsIDI1MSwgNzEsIDI0OCwgNzAsIAorICAgIDIxNywgMjEsIDgwLCAyMTMsIDQxLCAyNTEsIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCAxNjIsIDQ5LCAyMDUsIDE0NiwgMjEwLCAKKyAgICA1NSwgMjQ4LCA3MCwgMjE3LCAyMSwgMTYyLCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNzAsIDIxNywgMjEsIDIyMiwgCisgICAgNjYsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCA2NiwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMTcsIAorICAgIDIxLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTAyLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTA1LCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCAxNywgMTQ3LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTQ5LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTY0LCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCAxNywgMTg3LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIDE4OSwgNDQsIAorICAgIDE3LCAxOTIsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAyMTksIDExMywgMjQxLCAxNywgMTg5LCA0NCwgNDEsIDIwNiwgMTY2LCAKKyAgICAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxMDIsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDEwNSwgMjQxLCAxNywgNDQsIDQzLCAxNywgCisgICAgMTQ3LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxNDksIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE2NCwgMjQxLCAxNywgNDQsIDQzLCAKKyAgICAxNywgMTg3LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTkyLCAyNDEsIAorICAgIDE3LCA0NCwgNDMsIDE3LCAyMTksIDExMywgMjQxLCAxNywgNDQsIDQzLCA0MSwgMjA2LCAxNjYsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDQzLCAxNywgMTAyLCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDEwNSwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAKKyAgICAxNDcsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTQ5LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDE2NCwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgNDMsIDE3LCAxODcsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIAorICAgIDE4OSwgNDQsIDQzLCAxNywgMTkyLCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCA0MywgNDEsIDIwNiwgMTY2LCA4MCwgMjAxLCAyNywgODcsIDQ4LCA4MCwgOTMsIDU0LCA4MCwgMjIxLCAxNTcsIDU0LCAKKyAgICA4MCwgMjQwLCAyMzUsIDU0LCA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCA4MCwgODcsIDQ4LCA4MCwgMTU3LCAyMzksIAorICAgIDE0LCA0OCwgMjM5LCAxNjAsIDIxNSwgMTAwLCA4NywgNDgsIDgwLCAyMTIsIDIyMCwgODcsIDQ4LCAyMDUsIDk3LCA4NywgCisgICAgNDgsIDgwLCAyMDUsIDk3LCA4NywgNDgsIDI0MSwgMjQzLCAyMDUsIDk3LCA4NywgNDgsIDgwLCAyNDEsIDI0MywgMjA1LCAKKyAgICA5NywgODcsIDQ4LCA2MywgODcsIDQ4LCAyMDYsIDQ1LCAyMDUsIDE1NiwgODcsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyNDgsIAorICAgIDkxLCA4NywgMjUwLCAyMDIsIDYzLCA4NywgMjUwLCAyMDIsIDgwLCA2MywgMjQyLCAxODgsIDE5MSwgMjYsIDg3LCA0OCwgCisgICAgODAsIDYzLCAyNDIsIDE4OCwgMTgyLCAyNiwgODcsIDQ4LCAyMDgsIDE5MCwgNjMsIDg3LCA0OCwgODAsIDI0MywgNjcsIDYzLCAKKyAgICA4NywgNDgsIDIxMywgNDAsIDY0LCA4NywgNDgsIDIyNSwgMjIsIDY0LCA4NywgNDgsIDI0OSwgMTI4LCAyMTAsIDEwMSwgNjQsIAorICAgIDg3LCA0OCwgMjM2LCAxOTgsIDIxMCwgMTAxLCA2NCwgODcsIDQ4LCA4MCwgMjI0LCA1NCwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgCisgICAgODAsIDIwMywgMjI1LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCAyMTgsIDIxMSwgMjI0LCA1NCwgMjEzLCAzOSwgNjQsIDg3LCAKKyAgICA0OCwgMjQyLCAxOTYsIDIyNCwgNzQsIDIxOCwgMjExLCAyMDMsIDIyNSwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgNDQsIDgwLCAKKyAgICA2NCwgODcsIDQ4LCAyMDEsIDMzLCA4NywgNDgsIDI0OCwgMTQzLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDI0OCwgMTQzLCAKKyAgICA4NywgNDgsIDI0OCwgMTQzLCAxNTcsIDIzOSwgMTQsIDQ4LCA4MCwgMjQ4LCAxNDMsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgCisgICAgODAsIDI0OCwgMTQzLCA4NywgNDgsIDgwLCAyNDgsIDE0MywgMTU3LCAyMzksIDE0LCA0OCwgMjA2LCAxOTYsIDg3LCA0OCwgCisgICAgODAsIDIwNiwgMTk1LCA4NywgNDgsIDIwMSwgNTgsIDg3LCA0OCwgODAsIDIwMSwgNTgsIDg3LCA0OCwgMjE3LCA0OCwgODcsIAorICAgIDQ4LCA1MywgMjQyLCAxOTYsIDIyNCwgNzQsIDEyNiwgMjQxLCAyNywgMjUxLCA3MCwgNjQsIDIwNSwgOTksIDI0MywgNDUsIAorICAgIDQsIDY0LCAyMDUsIDk4LCAyMTYsIDE0LCAxNzYsIDIwOCwgMiwgMTc2LCAyMDcsIDIxMSwgNDksIDIxMiwgMTIxLCAyNDksIAorICAgIDExNCwgMjQxLCAxNDIsIDUxLCAyMTIsIDEyMSwgMjQ5LCAxMTQsIDI0MSwgMTQyLCAyMTcsIDM0LCAzLCA3MywgMjI4LCA3MywgCisgICAgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNSwgMjcsIDIwOCwgMiwgMjA3LCAyMTIsIDIxNSwgMjcsIDIwOSwgMTYsIDgzLCAyNDksIAorICAgIDc3LCAzLCAyMzMsIDE3NywgOTcsIDEzLCAyMTMsIDE5LCAyNDEsIDcwLCAxNjgsIDI0MCwgMjM0LCAxMywgMjM3LCAxNzEsIAorICAgIDI0MSwgNzAsIDk1LCAyMjQsIDk4LCAyNTEsIDc5LCA5NSwgMjI0LCA5OCwgMjE3LCAzMywgNjQsIDI0MSwgNjUsIDMsIDI0NywgCisgICAgNTQsIDI0MCwgMTgyLCAyNiwgMywgMjQwLCAxODIsIDIzOCwgMjAyLCA3NiwgMjE3LCA0NiwgMjAzLCAyMTYsIDIyNCwgNTQsIAorICAgIDUxLCAyNDMsIDE2LCAzLCAyNDAsIDE4MiwgMjAzLCAyMjUsIDQ5LCAyNDMsIDE2LCAzLCAyNDAsIDE4MiwgNDksIDIxNiwgCisgICAgMjUyLCAyMjcsIDE2NCwgNTEsIDIxNiwgMjUyLCAyMjcsIDE2NCwgMjM2LCAxODMsIDIxNiwgMjUyLCAyMjcsIDE2NCwgMjI1LCAKKyAgICA3MSwgMTE1LCAyMDcsIDE3LCAyMjUsIDcxLCAxMjcsIDIwNywgMTcsIDQ5LCAyNiwgNTEsIDUzLCAyMDQsIDE4NCwgNDksIAorICAgIDI2LCA1MSwgMjA3LCAxNywgNDksIDIyMSwgMjMsIDE2OCwgNTEsIDIwNywgMTcsIDE2OCwgNDksIDIwNywgMTcsIDExNSwgCisgICAgMjA3LCAxOCwgMywgMjQ2LCAxNTYsIDU2LCAyMjQsIDUwLCAyNDAsIDI0MCwgMjQ3LCAyMzUsIDIzMywgMTc3LCAyMTIsIAorICAgIDE2NSwgNjQsIDI0MywgNjYsIDI0MSwgNjQsIDY0LCAyNDMsIDY2LCAyNDEsIDY1LCAzLCA5OCwgMjA2LCAxMSwgNjQsIDI0MywgCisgICAgNjYsIDI0MSwgNjUsIDMsIDg3LCAyMDYsIDExLCA2NCwgNTIsIDMsIDk4LCAyMDYsIDExLCA2NCwgNTIsIDMsIDg3LCAyMDYsIAorICAgIDExLCAxMywgNDksIDY0LCA1MiwgMTU5LCAxMywgNTEsIDY0LCA1MiwgMTU5LCAxMywgNDksIDI1MSwgNzEsIDE1OSwgMTMsIAorICAgIDUxLCAyNTEsIDcxLCAxNTksIDEzLCA0OSwgNTMsIDI1MSwgNzEsIDE1OSwgMTMsIDUxLCA1MywgMjUxLCA3MSwgMTU5LCAxMywgCisgICAgNDksIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAxMywgNTEsIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAxMywgCisgICAgNDksIDIzNywgNDEsIDIxNiwgMTE1LCAxMywgNTEsIDIzNywgNDEsIDIxNiwgMTE1LCAxODIsIDIxNCwgOTAsIDQ4LCAxOTEsIAorICAgIDIxNCwgOTAsIDQ4LCAyNTEsIDQ3LCAyMzYsIDUxLCAyNDYsIDE1NiwgNDgsIDI0NiwgMTEyLCAyMzYsIDUxLCAyNDYsIDE1NiwgCisgICAgNDgsIDUxLCA1NSwgMywgNDQsIDIxNSwgMTEzLCAxNjgsIDk4LCA0OCwgMTY4LCA4NywgNDgsIDE2OCwgNDksIDUxLCA0OCwgCisgICAgMTY4LCA5OCwgNTMsIDQ4LCAxNjgsIDg3LCA1MywgNDgsIDE2OCwgNDksIDUxLCA1MywgNDgsIDE2OCwgOTgsIDU1LCAyMzYsIAorICAgIDIwMSwgMTQ4LCAxNjgsIDg3LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTY4LCA5OCwgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICAxNjgsIDg3LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDE2OCwgODcsIDIwOCwgMTg2LCA0OCwgNTksIDYwLCAyNDgsIDEzNywgCisgICAgNTksIDYwLCAyNDAsIDE3OSwgNTksIDYwLCAyNDAsIDUxLCA1OSwgNjAsIDI0MCwgMTc4LCA1OSwgNjAsIDIzOSwgMjQzLCAKKyAgICA1OSwgNjAsIDI0MCwgMTE0LCA1OSwgNjAsIDI0MCwgNTAsIDU5LCA2MCwgMjQwLCAxNzcsIDU5LCA2MCwgMjM5LCAyMTEsIAorICAgIDU5LCA2MCwgMjQwLCA4MiwgNTksIDYwLCAyNDAsIDE4LCA1OSwgNjAsIDI0MCwgMTQ1LCA1OSwgNjAsIDIzOSwgMjQyLCA1OSwgCisgICAgNjAsIDI0MCwgMTEzLCA1OSwgNjAsIDI0MCwgNDksIDU5LCA2MCwgMjQwLCAxNzYsIDU5LCA2MCwgMjM5LCAxOTUsIDU5LCAKKyAgICA2MCwgMjQwLCA2NiwgNTksIDYwLCAyNDAsIDIsIDU5LCA2MCwgMjQwLCAxMjksIDU5LCA2MCwgMjM5LCAyMjYsIDU5LCA2MCwgCisgICAgMjQwLCA5NywgNTksIDYwLCAyNDAsIDMzLCA1OSwgNjAsIDI0MCwgMTYwLCA1OSwgNjAsIDIzOSwgMjEwLCA1OSwgNjAsIAorICAgIDI0MCwgODEsIDU5LCA2MCwgMjQwLCAxNywgNTksIDYwLCAyNDAsIDE0NCwgNTksIDYwLCAyMzksIDI0MSwgNTksIDYwLCAKKyAgICAyNDAsIDExMiwgNTksIDYwLCAyNDAsIDQ4LCA1OSwgNjAsIDI0MCwgMTc1LCA1OSwgNjAsIDIzOSwgMTg3LCA1OSwgNjAsIAorICAgIDI0MCwgNTgsIDU5LCA2MCwgMjM5LCAyNTAsIDU5LCA2MCwgMjQwLCAxMjEsIDU5LCA2MCwgMjM5LCAyMTgsIDU5LCA2MCwgCisgICAgMjQwLCA4OSwgNTksIDYwLCAyNDAsIDI1LCA1OSwgNjAsIDI0MCwgMTUyLCA1OSwgNjAsIDIzOSwgMjAyLCA1OSwgNjAsIAorICAgIDI0MCwgNzMsIDU5LCA2MCwgMjQwLCA5LCA1OSwgNjAsIDI0MCwgMTM2LCA1OSwgNjAsIDIzOSwgMjMzLCA1OSwgNjAsIDI0MCwgCisgICAgMTA0LCA1OSwgNjAsIDI0MCwgNDAsIDU5LCA2MCwgMjQwLCAxNjcsIDU5LCA2MCwgMjM5LCAxOTQsIDU5LCA2MCwgMjQwLCAKKyAgICA2NSwgNTksIDYwLCAyNDAsIDEsIDU5LCA2MCwgMjQwLCAxMjgsIDU5LCA2MCwgMjM5LCAyMjUsIDU5LCA2MCwgMjQwLCA5NiwgCisgICAgNTksIDYwLCAyNDAsIDMyLCA1OSwgNjAsIDI0MCwgMTU5LCA1OSwgNjAsIDIzOSwgMjA5LCA1OSwgNjAsIDI0MCwgODAsIDU5LCAKKyAgICA2MCwgMjQwLCAxNiwgNTksIDYwLCAyNDAsIDE0MywgNTksIDYwLCAyMzksIDI0MCwgNTksIDYwLCAyNDAsIDExMSwgNTksIAorICAgIDYwLCAyNDAsIDQ3LCA1OSwgNjAsIDI0MCwgMTc0LCA1OSwgNjAsIDIzOSwgMTgzLCA1OSwgNjAsIDI0MCwgNTQsIDU5LCA2MCwgCisgICAgMjM5LCAyNDYsIDU5LCA2MCwgMjQwLCAxMTcsIDU5LCA2MCwgMjM5LCAyMTQsIDU5LCA2MCwgMjQwLCA4NSwgNTksIDYwLCAKKyAgICAyNDAsIDIxLCA1OSwgNjAsIDI0MCwgMTQ4LCA1OSwgNjAsIDIzOSwgMTk4LCA1OSwgNjAsIDI0MCwgNjksIDU5LCA2MCwgCisgICAgMjQwLCA1LCA1OSwgNjAsIDI0MCwgMTMyLCA1OSwgNjAsIDIzOSwgMjI5LCA1OSwgNjAsIDI0MCwgMTAwLCA1OSwgNjAsIAorICAgIDI0MCwgMzYsIDU5LCA2MCwgMjQwLCAxNjMsIDU5LCA2MCwgMjM5LCAxOTAsIDU5LCA2MCwgMjQwLCA2MSwgNTksIDYwLCAKKyAgICAyMzksIDI1MywgNTksIDYwLCAyNDAsIDEyNCwgNTksIDYwLCAyMzksIDIyMSwgNTksIDYwLCAyNDAsIDkyLCA1OSwgNjAsIAorICAgIDI0MCwgMjgsIDU5LCA2MCwgMjQwLCAxNTUsIDU5LCA2MCwgMjM5LCAyMDUsIDU5LCA2MCwgMjQwLCA3NiwgNTksIDYwLCAKKyAgICAyNDAsIDEyLCA1OSwgNjAsIDI0MCwgMTM5LCA1OSwgNjAsIDIzOSwgMjM2LCA1OSwgNjAsIDI0MCwgMTA3LCA1OSwgNjAsIAorICAgIDI0MCwgNDMsIDU5LCA2MCwgMjQwLCAxNzAsIDU5LCA2MCwgMjM5LCAxODYsIDU5LCA2MCwgMjQwLCA1NywgNTksIDYwLCAKKyAgICAyMzksIDI0OSwgNTksIDYwLCAyNDAsIDEyMCwgNTksIDYwLCAyMzksIDIxNywgNTksIDYwLCAyNDAsIDg4LCA1OSwgNjAsIAorICAgIDI0MCwgMjQsIDU5LCA2MCwgMjQwLCAxNTEsIDU5LCA2MCwgMjM5LCAyMDEsIDU5LCA2MCwgMjQwLCA3MiwgNTksIDYwLCAKKyAgICAyNDAsIDgsIDU5LCA2MCwgMjQwLCAxMzUsIDU5LCA2MCwgMjM5LCAyMzIsIDU5LCA2MCwgMjQwLCAxMDMsIDU5LCA2MCwgCisgICAgMjQwLCAzOSwgNTksIDYwLCAyNDAsIDE2NiwgNTksIDYwLCAyMzksIDE5MywgNTksIDYwLCAyNDAsIDY0LCA1OSwgNjAsIAorICAgIDI0MCwgMCwgNTksIDYwLCAyNDAsIDEyNywgNTksIDYwLCAyMzksIDIyNCwgNTksIDYwLCAyNDAsIDk1LCA1OSwgNjAsIDI0MCwgCisgICAgMzEsIDU5LCA2MCwgMjQwLCAxNTgsIDU5LCA2MCwgMjM5LCAyMDgsIDU5LCA2MCwgMjQwLCA3OSwgNTksIDYwLCAyNDAsIDE1LCAKKyAgICA1OSwgNjAsIDI0MCwgMTQyLCA1OSwgNjAsIDIzOSwgMjM5LCA1OSwgNjAsIDI0MCwgMTEwLCA1OSwgNjAsIDI0MCwgNDYsIAorICAgIDU5LCA2MCwgMjQwLCAxNzMsIDU5LCA2MCwgMjM5LCAxODEsIDU5LCA2MCwgMjQwLCA1MiwgNTksIDYwLCAyMzksIDI0NCwgCisgICAgNTksIDYwLCAyNDAsIDExNSwgNTksIDYwLCAyMzksIDIxMiwgNTksIDYwLCAyNDAsIDgzLCA1OSwgNjAsIDI0MCwgMTksIDU5LCAKKyAgICA2MCwgMjQwLCAxNDYsIDU5LCA2MCwgMjM5LCAxOTYsIDU5LCA2MCwgMjQwLCA2NywgNTksIDYwLCAyNDAsIDMsIDU5LCA2MCwgCisgICAgMjQwLCAxMzAsIDU5LCA2MCwgMjM5LCAyMjcsIDU5LCA2MCwgMjQwLCA5OCwgNTksIDYwLCAyNDAsIDM0LCA1OSwgNjAsIAorICAgIDI0MCwgMTYxLCA1OSwgNjAsIDIzOSwgMTg4LCA1OSwgNjAsIDI0MCwgNTksIDU5LCA2MCwgMjM5LCAyNTEsIDU5LCA2MCwgCisgICAgMjQwLCAxMjIsIDU5LCA2MCwgMjM5LCAyMTksIDU5LCA2MCwgMjQwLCA5MCwgNTksIDYwLCAyNDAsIDI2LCA1OSwgNjAsIAorICAgIDI0MCwgMTUzLCA1OSwgNjAsIDIzOSwgMjAzLCA1OSwgNjAsIDI0MCwgNzQsIDU5LCA2MCwgMjQwLCAxMCwgNTksIDYwLCAKKyAgICAyNDAsIDEzNywgNTksIDYwLCAyMzksIDIzNCwgNTksIDYwLCAyNDAsIDEwNSwgNTksIDYwLCAyNDAsIDQxLCA1OSwgNjAsIAorICAgIDI0MCwgMTY4LCA1OSwgNjAsIDIzOSwgMTg0LCA1OSwgNjAsIDI0MCwgNTUsIDU5LCA2MCwgMjM5LCAyNDcsIDU5LCA2MCwgCisgICAgMjQwLCAxMTgsIDU5LCA2MCwgMjM5LCAyMTUsIDU5LCA2MCwgMjQwLCA4NiwgNTksIDYwLCAyNDAsIDIyLCA1OSwgNjAsIAorICAgIDI0MCwgMTQ5LCA1OSwgNjAsIDIzOSwgMTk5LCA1OSwgNjAsIDI0MCwgNzAsIDU5LCA2MCwgMjQwLCA2LCA1OSwgNjAsIDI0MCwgCisgICAgMTMzLCA1OSwgNjAsIDIzOSwgMjMwLCA1OSwgNjAsIDI0MCwgMTAxLCA1OSwgNjAsIDI0MCwgMzcsIDU5LCA2MCwgMjQwLCAKKyAgICAxNjQsIDU5LCA2MCwgMjM5LCAxOTEsIDU5LCA2MCwgMjQwLCA2MiwgNTksIDYwLCAyMzksIDI1NCwgNTksIDYwLCAyNDAsIAorICAgIDEyNSwgNTksIDYwLCAyMzksIDIyMiwgNTksIDYwLCAyNDAsIDkzLCA1OSwgNjAsIDI0MCwgMjksIDU5LCA2MCwgMjQwLCAKKyAgICAxNTYsIDU5LCA2MCwgMjM5LCAyMDYsIDU5LCA2MCwgMjQwLCA3NywgNTksIDYwLCAyNDAsIDEzLCA1OSwgNjAsIDI0MCwgCisgICAgMTQwLCA1OSwgNjAsIDIzOSwgMjM3LCA1OSwgNjAsIDI0MCwgMTA4LCA1OSwgNjAsIDI0MCwgNDQsIDU5LCA2MCwgMjQwLCAKKyAgICAxNzEsIDU5LCA2MCwgMjM5LCAxODIsIDU5LCA2MCwgMjQwLCA1MywgNTksIDYwLCAyMzksIDI0NSwgNTksIDYwLCAyNDAsIAorICAgIDExNiwgNTksIDYwLCAyMzksIDIxMywgNTksIDYwLCAyNDAsIDg0LCA1OSwgNjAsIDI0MCwgMjAsIDU5LCA2MCwgMjQwLCAKKyAgICAxNDcsIDU5LCA2MCwgMjM5LCAxOTcsIDU5LCA2MCwgMjQwLCA2OCwgNTksIDYwLCAyNDAsIDQsIDU5LCA2MCwgMjQwLCAxMzEsIAorICAgIDU5LCA2MCwgMjM5LCAyMjgsIDU5LCA2MCwgMjQwLCA5OSwgNTksIDYwLCAyNDAsIDM1LCA1OSwgNjAsIDI0MCwgMTYyLCA1OSwgCisgICAgNjAsIDIzOSwgMTg5LCA1OSwgNjAsIDI0MCwgNjAsIDU5LCA2MCwgMjM5LCAyNTIsIDU5LCA2MCwgMjQwLCAxMjMsIDU5LCAKKyAgICA2MCwgMjM5LCAyMjAsIDU5LCA2MCwgMjQwLCA5MSwgNTksIDYwLCAyNDAsIDI3LCA1OSwgNjAsIDI0MCwgMTU0LCA1OSwgNjAsIAorICAgIDIzOSwgMjA0LCA1OSwgNjAsIDI0MCwgNzUsIDU5LCA2MCwgMjQwLCAxMSwgNTksIDYwLCAyNDAsIDEzOCwgNTksIDYwLCAKKyAgICAyMzksIDIzNSwgNTksIDYwLCAyNDAsIDEwNiwgNTksIDYwLCAyNDAsIDQyLCA1OSwgNjAsIDI0MCwgMTY5LCA1OSwgNjAsIAorICAgIDIzOSwgMTg1LCA1OSwgNjAsIDI0MCwgNTYsIDU5LCA2MCwgMjM5LCAyNDgsIDU5LCA2MCwgMjQwLCAxMTksIDU5LCA2MCwgCisgICAgMjM5LCAyMTYsIDU5LCA2MCwgMjQwLCA4NywgNTksIDYwLCAyNDAsIDIzLCA1OSwgNjAsIDI0MCwgMTUwLCA1OSwgNjAsIAorICAgIDIzOSwgMjAwLCA1OSwgNjAsIDI0MCwgNzEsIDU5LCA2MCwgMjQwLCA3LCA1OSwgNjAsIDI0MCwgMTM0LCA1OSwgNjAsIDIzOSwgCisgICAgMjMxLCA1OSwgNjAsIDI0MCwgMTAyLCA1OSwgNjAsIDI0MCwgMzgsIDU5LCA2MCwgMjQwLCAxNjUsIDU5LCA2MCwgMjM5LCAKKyAgICAxOTIsIDU5LCA2MCwgMjQwLCA2MywgNTksIDYwLCAyMzksIDI1NSwgNTksIDYwLCAyNDAsIDEyNiwgNTksIDYwLCAyMzksIAorICAgIDIyMywgNTksIDYwLCAyNDAsIDk0LCA1OSwgNjAsIDI0MCwgMzAsIDU5LCA2MCwgMjQwLCAxNTcsIDU5LCA2MCwgMjM5LCAKKyAgICAyMDcsIDU5LCA2MCwgMjQwLCA3OCwgNTksIDYwLCAyNDAsIDE0LCA1OSwgNjAsIDI0MCwgMTQxLCA1OSwgNjAsIDIzOSwgCisgICAgMjM4LCA1OSwgNjAsIDI0MCwgMTA5LCA1OSwgNjAsIDI0MCwgNDUsIDU5LCA2MCwgMjQwLCAxNzIsIDg3LCAyMDQsIDE0MSwgCisgICAgNTUsIDMsIDgzLCA5NywgODcsIDIwNCwgMTQxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDUzLCA1NSwgMywgODMsIDk3LCAKKyAgICA4NywgNTMsIDU1LCAzLCA4MywgOTcsIDQ5LCA1MSwgNTMsIDU1LCAzLCA4MywgOTcsIDg3LCAyMDQsIDE0MSwgNTUsIDIzNiwgCisgICAgMjAxLCAxNDgsIDk4LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDg3LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDE5MSwgNTUsIAorICAgIDMsIDIzMywgMTc3LCA5NywgMTgyLCA1NSwgMywgMjMzLCAxNzcsIDk3LCAxODIsIDIwNSwgODMsIDQ4LCAxOTEsIDIwNSwgCisgICAgODMsIDQ4LCA5OCwgNTMsIDI0MSwgMjQ1LCA0OCwgODcsIDUzLCAyNDEsIDI0NSwgNDgsIDk4LCAyMDUsIDgzLCAyNDEsIAorICAgIDI0NSwgNDgsIDg3LCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIDg3LCAyMDQsIDE0MSwgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCAKKyAgICA4NywgNTUsIDMsIDIzOSwgMTgwLCAyMDgsIDkyLCAxODIsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDU1LCAyMDUsIDE4NiwgCisgICAgMTQ4LCA4NywgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA4NywgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgODcsIAorICAgIDIwNCwgMTQxLCA1NSwgMywgMjA3LCA2LCA4NywgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgODcsIDIwNCwgCisgICAgMTQxLCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgMjUwLCAyMDQsIDg3LCAyNTAsIDIwNCwgOTgsIDUzLCAKKyAgICAyNTAsIDIwNCwgODcsIDUzLCAyNTAsIDIwNCwgOTgsIDU1LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDg3LCA1NSwgMjA1LCAKKyAgICAxODYsIDYzLCAyNDEsIDY0LCA5OCwgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDg3LCAKKyAgICA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgMTU3LCAyMDEsIDQ4LCAyNiwgMjA4LCAyNTQsIAorICAgIDIzOSwgMTQsIDQ4LCAxNTcsIDIzOSwgMTQsIDI2LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIAorICAgIDMsIDExNywgMTU3LCAyMzksIDE0LCA1NSwgMywgMTE3LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDMsIDExNywgMjA4LCAKKyAgICAyNTQsIDIwMSwgNDgsIDU1LCAzLCAxMTcsIDE1NywgMjAxLCA0OCwgNTUsIDI2LCAxNTcsIDIzOSwgMTQsIDQ4LCAxNTcsIAorICAgIDIzOSwgMTQsIDU1LCAyNiwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDI2LCAyMDgsIAorICAgIDI1NCwgMjAxLCA0OCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA1NSwgMjYsIDE1NywgMjAxLCA0OCwgNDgsIDIxMywgMTksIAorICAgIDI0MSwgNzEsIDI0MiwgMjI4LCAyMzcsIDE3MSwgMjQxLCA3MCwgMjM3LCAxNzEsIDI0MSwgNzEsIDI0MiwgMjI4LCAyMTMsIAorICAgIDE5LCAyNDEsIDcwLCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDI0MiwgMjI4LCAxNTcsIDIzOSwgMTQsIDQ4LCAxNTcsIDIzOSwgCisgICAgMTQsIDU1LCAyNDIsIDIyOCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjQyLCAyMjgsIAorICAgIDE1NywgMjM5LCAxNCwgNDgsIDIxMywgMTksIDI0MSwgNzEsIDI0MiwgMjI4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDE1NywgCisgICAgMjM5LCAxNCwgNTUsIDI0MiwgMjI4LCAxNTcsIDIwMSwgNDgsIDQ4LCAxNTcsIDIwMSwgNDgsIDU1LCAyNDIsIDIyOCwgMTU3LCAKKyAgICAyMzksIDE0LCA0OCwgMjAxLCA3OCwgNTUsIDIxNSwgOTYsIDI0MSwgNywgMjEzLCA0NiwgNTUsIDIxNSwgOTYsIDg3LCAyMDYsIAorICAgIDk4LCAyNDIsIDE4NiwgMjAzLCAyMTYsIDU1LCAyMTUsIDk2LCA4NywgMjA2LCA5OCwgMjQyLCAxODYsIDIzOSwgMTY1LCA1NSwgCisgICAgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAyNDIsIDE4NiwgMjI1LCAxOCwgNTUsIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMjQyLCAKKyAgICAxODYsIDIxMywgMzUsIDIxMywgMzgsIDI1MCwgMjM3LCAyNDYsIDExMiwgNDgsIDIyNSwgMjEsIDI1MCwgMjM3LCAyNTEsIAorICAgIDQ3LCA0OCwgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNTEsIDQ3LCA0OCwgMjQ4LCA5MywgMjUwLCAyMzcsIDI1MSwgNDcsIDQ4LCAKKyAgICAyMDUsIDE1OCwgMjUwLCAyMzcsIDI0NiwgMTEyLCA1NSwgMywgMjIxLCAxNTYsIDIwNSwgMTU4LCAyNTAsIDIzNywgMjUxLCAKKyAgICA0NywgNTUsIDMsIDIxNSwgMTEzLCAyMjQsIDU0LCA1MSwgMjEwLCAxNjksIDI0NiwgMTEyLCA0OCwgMjI0LCA1NCwgNDksIAorICAgIDIxMCwgMTY5LCAyNTEsIDQ3LCA0OCwgMjUxLCA0NywgMjQ2LCAxMTAsIDI0NiwgMTU2LCA0OCwgMjQ2LCAxMTIsIDI0NiwgCisgICAgMTEwLCAyNDYsIDE1NiwgNDgsIDg3LCA1NSwgODgsIDIwOSwgMjUwLCA5OCwgNDgsIDk4LCA1NSwgODgsIDIwOSwgMjUwLCAKKyAgICA4NywgNDgsIDIwOSwgMjUwLCA4NywgNTUsIDg4LCA5OCwgNDgsIDg3LCA1NSwgMywgOTMsIDU3LCA5OCwgNTUsIDMsIDkzLCAKKyAgICA1NywgODcsIDU1LCAyMDYsIDM4LCAyMDAsIDE5NSwgNDksIDUxLCA1NSwgMjA2LCAzOCwgNCwgMjQ2LCAxNTUsIDE4MiwgCisgICAgMjA0LCAxNDEsIDU1LCAyMzYsIDIwMSwgNCwgMjQ2LCAxNTUsIDQ5LCAxNTQsIDExNSwgNTEsIDE1NCwgMTI3LCAyMzQsIAorICAgIDE2MCwgNDksIDE1NCwgMTI3LCA1MSwgMTU0LCAxMTUsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNTEsIDEyNywgMTU0LCA0OSwgCisgICAgMjM0LCAxNjAsIDExNSwgMTU0LCA0OSwgMTI3LCAxNTQsIDUxLCAyMzQsIDE2MCwgNDksIDE1NCwgMTE1LCA1MSwgMTU0LCAKKyAgICAxMTUsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNTEsIDEyNywgMTU0LCA1MSwgMjM0LCAxNjAsIDQ5LCAxNTQsIDEyNywgNTEsIAorICAgIDE1NCwgMTI3LCAyMzQsIDE2MCwgMTE1LCAxNTQsIDQ5LCAxMjcsIDE1NCwgNDksIDIzNCwgMTYwLCA5OCwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMTE1LCAyMDUsIDE4NiwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMDUsIDE4NiwgMTQ4LCAKKyAgICAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMDUsIAorICAgIDE4NiwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyMDUsIDE4NiwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMTI3LCAyMDUsIDE4NiwgMTQ4LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDQ5LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyMDUsIDE4NiwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMzYsIAorICAgIDIwMSwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMzYsIDIwMSwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMTI3LCAyMzYsIDIwMSwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDQ5LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA4NywgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMTE1LCA4OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDQ5LCAyNDgsIDIxMiwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAKKyAgICA4OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjI4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCA4OCwgODcsIAorICAgIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgOTgsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDIwMywgMjI4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCA4OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDIzOSwgMTY3LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgMTY4LCAyNDEsIDI0NCwgOTgsIDIzNCwgMTYxLCAzLCAKKyAgICAxNTQsIDEyNywgMjQ4LCAyMjgsIDE2OCwgMjQxLCAyNDQsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCAxNjgsIAorICAgIDI0MSwgMjQ0LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyNDgsIDIyOCwgMTY4LCAyNDEsIDI0NCwgMTgyLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgMTkxLCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgNTEsIDUzLCA1NSwgMywgMjEyLCAKKyAgICAyMTksIDIzNCwgMTM2LCAyMzgsIDEyMiwgMiwgODgsIDg3LCA0OCwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA4NywgNDgsIAorICAgIDk4LCA1NSwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgCisgICAgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMjQsIDI0MSwgODgsIDk4LCA0OCwgOTgsIDU1LCAyMDYsIDM4LCAyMjQsIDI0MCwgMjM1LCAKKyAgICA2NywgODgsIDg3LCA0OCwgMjA4LCAzLCA4OCwgODcsIDQ4LCA5OCwgNTUsIDIwNiwgMzgsIDIwOCwgMiwgMjA3LCAyMTIsIAorICAgIDg4LCA5OCwgNDgsIDQ5LCAyMzcsIDcyLCAyMDcsIDYsIDUxLCAyMzcsIDcyLCAyMDcsIDYsIDExNSwgMjM3LCA3MiwgMjA3LCAKKyAgICA2LCAxMjcsIDIzNywgNzIsIDIwNywgNiwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDI0MSwgMTQyLCAxOTksIDE1OCwgMjE4LCAKKyAgICAyMTMsIDIwOCwgMjA0LCAxOTksIDE1OCwgMjE4LCAyMTMsIDIwNCwgMTI4LCAyNDYsIDc5LCA0OSwgNjQsIDI0MiwgMTk2LCAKKyAgICAxNTksIDUxLCA2NCwgMjQyLCAxOTYsIDE1OSwgNDksIDY0LCAyMTYsIDExNSwgNTEsIDY0LCAyMTYsIDExNSwgMTk5LCAxNTgsIAorICAgIDIxOCwgMjEzLCA0OSwgMjI4LCAxMzMsIDE1OSwgMTk5LCAxNTgsIDIxOCwgMjEzLCA1MSwgMjI4LCAxMzMsIDE1OSwgMTk5LCAKKyAgICAxNTgsIDIxOCwgMjEzLCA0OSwgMjQ4LCAxNjcsIDE1OSwgMTk5LCAxNTgsIDIxOCwgMjEzLCA1MSwgMjQ4LCAxNjcsIDE1OSwgCisgICAgNDksIDUyLCAyNDgsIDcwLCAzLCAyMDMsIDI1MSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDMsIDI1MSwgNDksIDUyLCAyNDgsIAorICAgIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjA1LCAxNTgsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgCisgICAgMjI4LCAxMTgsIDI0OCwgOTMsIDI0MywgMTUsIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDI0OCwgCisgICAgOTMsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDIwNSwgMTU4LCAyNDMsIDE1LCAKKyAgICA0OSwgMjUxLCA3MSwgMjQ4LCA3MCwgMywgMjQwLCAxODIsIDUxLCAyNTEsIDcxLCAyNDgsIDcwLCAzLCAyNDAsIDE4MiwgNDksIAorICAgIDI1MCwgMjM3LCAyMjQsIDI0MSwgMTU5LCA1MSwgMjUwLCAyMzcsIDIzNSwgNjcsIDE1OSwgNTMsIDQ5LCAyNTAsIDIzNywgCisgICAgMjM1LCA2NywgMTU5LCA1MywgNTEsIDI1MCwgMjM3LCAyMjQsIDI0MSwgMTU5LCA0OSwgNjMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAxNTksIDUxLCA2MywgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjM5LCAxODAsIDIzNywgMTI3LCA4MywgMTk5LCAyNywgCisgICAgMjI0LCAxNzYsIDIyMiwgNzMsIDI1MSwgNzEsIDIxNywgNDYsIDIyNSwgMjgsIDUxLCAyNTEsIDcxLCAyMDMsIDczLCAzLCAKKyAgICAyMDgsIDE5MywgMjIyLCA3MywgNTEsIDI1MSwgNzEsIDMsIDI0MCwgMTgyLCAyNTEsIDcxLCAzLCAyMTIsIDEyMywgMjI4LCAKKyAgICA3MywgMjUxLCAyMzksIDI1MSwgNzAsIDIwOCwgMjI0LCAyNTEsIDcxLCAyMTcsIDQ2LCAyMjUsIDI4LCAyMDgsIDIyNCwgCisgICAgMjUxLCA3MSwgMjE3LCA0NiwgMjAzLCAyMjgsIDIwNCwgMTg1LCAyNTEsIDcwLCAyMTMsIDEwNSwgMjUxLCA3MCwgMjUxLCAKKyAgICA3MSwgMywgMjAzLCAyNTEsIDIxMywgMTA1LCAyNTEsIDcxLCAzLCAyMDMsIDI1MSwgMjE3LCAxMzgsIDI1MSwgNzEsIDIxNywgCisgICAgNDYsIDIwMywgMjI4LCAyMTcsIDEzOCwgMjUxLCA3MSwgMjE3LCA0NiwgMjM5LCAxNjcsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIAorICAgIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDExNSwgMjYsIDIxMywgNDYsIDIyMiwgCisgICAgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDExNSwgMjYsIAorICAgIDIyNSwgMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgCisgICAgOTYsIDEyNywgMjYsIDIxMywgNDYsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIAorICAgIDExOCwgNTUsIDIxNSwgOTYsIDEyNywgMjYsIDIyNSwgMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIAorICAgIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDUxLCAyNiwgMjAzLCAyMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIAorICAgIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDQ5LCAyNiwgMjAzLCAyMjgsIDIyMiwgCisgICAgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDUxLCAyNiwgCisgICAgMjM5LCAxNjcsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIAorICAgIDIxNSwgOTYsIDQ5LCAyNiwgMjM5LCAxNjcsIDIxMywgMTA1LCAyMzgsIDE4MSwgMjEwLCAxNDEsIDIzOCwgMTgxLCAyMTAsIAorICAgIDE0MiwgMywgMjE2LCAyNDYsIDIzOCwgMTgxLCAyMTAsIDE0MiwgMywgNCwgMjQ2LCAxNTYsIDU2LCAyMzgsIDE4MSwgMjEwLCAKKyAgICAxNDIsIDMsIDUxLCA1NSwgNTYsIDIzOCwgMTgxLCAyMTAsIDE0MiwgMywgNDksIDU1LCA1NiwgMjQ2LCAxNTYsIDMsIDIzMywgCisgICAgMTc3LCAxNDgsIDQ0LCA4MywgMTQ4LCA0NCwgMjE2LCAxMjAsIDQ0LCAyMTMsIDEwNiwgMjA5LCAxNiwgNDQsIDIxNiwgMTQsIAorICAgIDI0NiwgMTU2LCAyNDAsIDI0MCwgMjQ3LCAyMzUsIDIzMywgMTc3LCAyNDksIDc3LCAyNiwgMjA1LCAxNTgsIDE2NywgMjQwLCAKKyAgICAyNDAsIDI0NywgMjM1LCA4MywgMTQ4LCAyNDYsIDE1NiwgMywgMjA3LCAyMTQsIDIwMCwgMTk1LCA0NCwgMjUxLCA0NSwgCisgICAgMjQwLCAyMzUsIDU0LCAxMTUsIDU1LCAyMDYsIDM4LCAyNDYsIDE1NSwgNDQsIDY0LCAyNDgsIDIwLCA0NCwgMjQ4LCAyMCwgCisgICAgNDQsIDIyNCwgMjQwLCA0NCwgMjM1LCA2NiwgMjQ2LCAxNTYsIDMsIDQsIDI0NiwgMTU2LCAyMDUsIDE4NiwgMjA2LCAxMDcsIAorICAgIDIxMywgNDYsIDI0NiwgMTU2LCAzLCAxMjAsIDIzMywgMTc3LCAyMDgsIDM1LCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIxMywgCisgICAgNDYsIDk1LCAyMTMsIDE5LCAyNDEsIDcxLCAyMDksIDc1LCA5NSwgMjM3LCAxNzEsIDI0MSwgNzEsIDIwOSwgNzUsIDk1LCAKKyAgICAyNTAsIDE2NSwgOTUsIDQsIDI0NiwgMTU1LCA5NSwgMjA4LCAxOTMsIDEyMCwgMjI3LCAxNjMsIDIwOCwgMTkxLCAyMDUsIAorICAgIDk5LCAzLCA3MywgNTYsIDIwNSwgOTksIDMsIDIwMywgMjUxLCAyMTIsIDEyMywgMjI4LCAxMTgsIDIwNSwgOTgsIDIwNSwgCisgICAgOTksIDMsIDIxMCwgMTQ4LCAyNTAsIDE1NiwgMjQ4LCA5MiwgNTEsIDIwNSwgOTksIDg4LCA0OSwgMjA1LCA5OCwgNDksIAorICAgIDIwNSwgOTksIDI0OCwgMjEyLCA4MywgMTQ4LCA4MywgMjQ5LCA3NywgMjQ4LCAyMTIsIDUxLCAyMDUsIDk4LCAyNDgsIDgwLCAKKyAgICAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjQ4LCA4MCwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDYzLCAyNDgsIDc5LCAyNCwgMywgCisgICAgNDksIDE2NywgMjQ4LCAxNDQsIDI0LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjQsIDIzMywgMTExLCA2MywgMjMzLCAxMTEsIAorICAgIDQ5LCAyMDEsIDIyLCAyMzcsIDEyNywgNTEsIDIwMSwgMjIsIDIzNywgMTI3LCA0OSwgNTMsIDIwMSwgMjIsIDIzNywgMTI3LCAKKyAgICA1MSwgNTMsIDIwMSwgMjIsIDIzNywgMTI3LCAyMjgsIDExMCwgMjI4LCA5NCwgMjA2LCA4LCAxMTksIDIyOCwgOTQsIDIyOCwgCisgICAgOTUsIDIyMCwgMjgsIDMsIDgzLCAxNDgsIDIzOSwgMTc0LCAyMjEsIDIzLCA1MiwgMywgMjQzLCAzNywgMjE2LCAyNTEsIAorICAgIDIyOCwgMTA3LCAyNTAsIDE4OCwgMjA5LCAyMTQsIDIxNSwgMSwgMjM4LCAxMjIsIDIsIDI2LCAyMDksIDc3LCAyMTYsIDEyMCwgCisgICAgMjM4LCAxMjIsIDIsIDI2LCAyMDksIDc3LCAyMTYsIDEyMSwgMywgMjA1LCAyNDEsIDU2LCAyMzIsIDIyMywgMjA1LCAxODYsIAorICAgIDI2LCAyMDksIDc3LCAyMTYsIDEyMCwgMjM1LCAxMjYsIDIwOCwgMTA4LCAyMDYsIDk1LCAyMzksIDE2NiwgMjA1LCA5OSwgMywgCisgICAgNDksIDE2NywgMjQ4LCAxNDQsIDIzOSwgMTY2LCAyMDUsIDk5LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjMsIDI0MSwgNjUsIAorICAgIDMsIDEyNywgNDgsIDYzLCAyMjQsIDQ5LCA2NCwgMjQ2LCAxNTYsIDMsIDEyNywgNDgsIDYzLCAyNDYsIDE1NiwgMywgMTI3LCAKKyAgICA0OCwgMjM4LCAxMDcsIDY0LCAyMDgsIDE5MywgMjM4LCAxMDcsIDYzLCAyMDgsIDE5MywgMjM4LCAxMDcsIDY0LCAyNDEsIAorICAgIDY0LCAyMzgsIDEwNywgNjMsIDI0MSwgNjQsIDIzOCwgMTA3LCA2NCwgMjQ2LCAxNTUsIDIzOCwgMTA3LCA2MywgMjQ2LCAKKyAgICAxNTUsIDIxMiwgMTY0LCAyMTMsIDEwNiwgMjA5LCAxNywgMjE3LCA0MywgMjA5LCAxNywgMywgMjE2LCAyNDYsIDIxMywgCisgICAgMTA2LCAyMDksIDE3LCAzLCAyMzMsIDE3NywgOTcsIDI0OCwgMTc1LCAyMDksIDE2LCAyNDgsIDE3NSwgMjEzLCAxMDYsIAorICAgIDIwOSwgMTYsIDUzLCAyMTUsIDExMywgMjA1LCA4MywgMjE1LCAxMTMsIDIyNSwgMjMsIDI0MiwgMTg4LCAyNTEsIDcxLCAKKyAgICAxNTksIDIxMywgNDEsIDI0MiwgMTg4LCAyNTEsIDcxLCAxNTksIDIwNSwgMjI1LCAyMjEsIDE1NCwgMjIwLCAyMTMsIDQ0LCAKKyAgICA3MywgMjE3LCA0MywgMjIwLCAyMTMsIDQ0LCA5MywgMjE3LCA0MywgMjIwLCAyMTMsIDQ0LCAyNCwgMjE3LCA0MywgMjIwLCAKKyAgICAyMTMsIDIwMywgMjQyLCAyMTcsIDQ0LCAzLCAyNDAsIDE4MiwgMjIwLCAyMTMsIDIwMywgMjQyLCAyMTcsIDQ0LCAzLCAyMTUsIAorICAgIDExMywgMjIwLCAyMTMsIDUyLCAyMjgsIDU2LCAyMTcsIDQzLCAyMjAsIDIxMywgNTIsIDIwMywgMjQyLCAyMTcsIDQzLCAKKyAgICAxMjAsIDIyNCwgOTgsIDI2LCAyMTcsIDQzLCAxMjAsIDIyNCwgOTgsIDIxNywgMzQsIDIxNywgNDMsIDIyMCwgMjEzLCAyNCwgCisgICAgMjE3LCA0MywgMjIxLCAxMTAsIDEyMCwgMjA3LCAyMzQsIDIwNywgMjMyLCAzLCAyMjgsIDY5LCAyMTQsIDkwLCAyMjgsIDcwLCAKKyAgICAyMTcsIDQzLCAyMzcsIDgwLCAyMTYsIDExMCwgMjI4LCA2OSwgMjI4LCA3MCwgMywgNTMsIDk3LCAyMjgsIDcwLCAyNTAsIAorICAgIDEyMCwgMywgMjA5LCA3NSwgMjQ2LCAxNDgsIDIzNiwgMTgwLCAyNTEsIDQ3LCAyMjgsIDY3LCAyMjQsIDE3NywgMjI4LCA2OCwgCisgICAgMywgMjEzLCAxNzQsIDIxNiwgOTEsIDI1MCwgMjEyLCAyMTUsIDkwLCAyMjQsIDE3NywgMjI4LCA2OCwgMywgMjEwLCAxNjksIAorICAgIDIxNiwgOTEsIDI1MCwgMjEyLCAyMTUsIDkwLCAyMjQsIDE3NywgMjI4LCA2OCwgMjE4LCAyMTUsIDIyOCwgMTEyLCAyMDYsIAorICAgIDEwNywgMjE1LCA5MCwgMjI4LCA3MCwgMjUwLCAyMTIsIDM1LCAyMTUsIDEwMCwgMjE3LCA0MywgMjE0LCA4NCwgMjI4LCA3MCwgCisgICAgMjE3LCA0MywgMjI4LCA3MCwgMywgOTgsIDU1LCAzLCAxMTcsIDIyOCwgNzAsIDMsIDI0LCA1NCwgMjI4LCA3MCwgMywgMjI4LCAKKyAgICA1NSwgMjI4LCA3MCwgMywgMjAzLCAyNDEsIDIyOCwgNzAsIDMsIDIxNiwgMjQ2LCAyMjgsIDcwLCAzLCAyMDMsIDI1MSwgCisgICAgMjI3LCAxNjQsIDIyNSwgNzEsIDQ5LCAyMDUsIDk5LCAyMTcsIDQzLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgMjI0LCAKKyAgICAyNDMsIDczLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgMjI0LCAyMTUsIDE1MSwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTEsIAorICAgIDIyNCwgMjE0LCAyNTIsIDkzLCAyLCAzLCA0LCAyNDYsIDE1NiwgNTYsIDkzLCAyLCAzLCAyNDYsIDE0NywgMjUxLCAyNTIsIAorICAgIDU2LCA5MywgMiwgMywgMjA1LCAyNDEsIDU2LCA5MywgMiwgMywgNzMsIDU3LCA5MywgMiwgMywgMjA1LCAyNDEsIDU3LCA5MywgCisgICAgMiwgMywgMjA4LCA0LCAxMDUsIDkzLCAyLCAzLCA2MywgMjA1LCA5OCwgMjIxLCAxNTcsIDIsIDMsIDI0NiwgNzEsIDU2LCAKKyAgICAyMjEsIDE1NywgMiwgMywgNzMsIDU3LCAyMjEsIDE1NywgMiwgMywgMjM3LCAxNzEsIDI0MCwgMTgwLCAyMjEsIDE1NywgMiwgCisgICAgMywgMjEzLCAxOSwgMjQwLCAxODAsIDkzLCAyLCAyMjgsIDExOCwgNDksIDE2NywgMjQ2LCAxNTUsIDkzLCAyLCAyMjgsIAorICAgIDExOCwgNTEsIDE2NywgMjQ2LCAxNTUsIDIwMywgNTgsIDIxNywgMzQsIDI0MiwgMjM1LCAyMTUsIDEsIDIyMSwgMTksIDIsIAorICAgIDMsIDczLCA1NiwgMjIxLCAxOSwgMiwgMywgMjAzLCAyNTEsIDIxMCwgMTY2LCAyMTUsIDIsIDMsIDI0OCwgOTMsIDI0NiwgCisgICAgMTA5LCAyMDksIDUxLCAyMTUsIDEsIDIyMSwgMTksIDIsIDIyOCwgMTE4LCA0OSwgMTY3LCAyNDYsIDE1NSwgMjIxLCAxOSwgCisgICAgMiwgMjI4LCAxMTgsIDUxLCAxNjcsIDI0NiwgMTU1LCA0NCwgMjIxLCAxOSwgMiwgMywgMjQ2LCAxNDcsIDI1MSwgMjUxLCAKKyAgICAyMjEsIDE5LCAyLCAyMjgsIDExOCwgNTMsIDI0NiwgMTU1LCA0NCwgMjQwLCAyMzUsIDU0LCA5MywgMiwgMjI4LCAxMTgsIAorICAgIDIwNSwgOTgsIDIyMSwgMTU3LCAyLCAyMjgsIDExOCwgMjA1LCA5OCwgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDIwNSwgOTgsIAorICAgIDIyOCwgNjQsIDIxNSwgMSwgMjEzLCAzNiwgMjI4LCA2NCwgMjE1LCAxLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMywgMTQ4LCAKKyAgICAyNDMsIDczLCAyNTEsIDk5LCAyMTcsIDM0LCAyNDMsIDIxLCAyMjgsIDU2LCAzLCAyNDAsIDE4MiwgMjAzLCAyNDIsIDMsIAorICAgIDIyMSwgMTU3LCA1NCwgMjAzLCAyNDIsIDMsIDIxNiwgMjQ2LCAyMjgsIDU2LCAzLCAyMTYsIDI0NiwgMjI4LCA1NiwgMywgCisgICAgMjI0LCA5OCwgMjUxLCA3OSwgMjAzLCAyNDIsIDMsIDIyNCwgOTgsIDIxNywgMzMsIDIwMywgMjQyLCA4OCwgMjI4LCA1NSwgCisgICAgMjI4LCA1NiwgODgsIDIwMywgMjQxLCAyMDMsIDI0MiwgODgsIDI0OSwgNzcsIDg4LCAyMjgsIDU1LCAyMjgsIDU2LCA4OCwgCisgICAgMjQ5LCA3NywgODgsIDIwMywgMjQxLCAyMDMsIDI0MiwgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMywgMjAzLCAyNDEsIAorICAgIDIyOCwgNTYsIDI0OCwgMjEyLCAyNiwgMjI3LCAxNjMsIDMsIDIyOCwgNTUsIDI0NiwgMTEwLCAyMDMsIDI0MiwgMywgMjEwLCAKKyAgICAxNDcsIDI0NiwgMTEwLCAyMjgsIDU2LCAzLCAyMTAsIDE0NywgNTMsIDUyLCAyMjgsIDU1LCA1MywgNTIsIDIwMywgMjQxLCAKKyAgICAyNDYsIDExMCwgMjAzLCAyNDIsIDMsIDIxMCwgMTQ4LCAyNiwgMjA5LCA1MSwgMjE1LCAxLCAyMjQsIDk4LCAyNiwgMywgNzMsIAorICAgIDU2LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCA3MywgNTYsIDUzLCAyMjQsIDk4LCAyNTEsIDc5LCA1MywgMjI0LCA5OCwgMjE3LCAKKyAgICAzMywgMTIwLCAyMjgsIDU3LCAyMjQsIDk4LCAyNTEsIDc5LCAxMjAsIDIyOCwgNTcsIDIyNCwgOTgsIDIxNywgMzMsIDIwOSwgCisgICAgNjAsIDIyNSwgNzEsIDIxNywgMzMsIDIwOSwgNjAsIDIyNSwgNzEsIDI1MSwgNzksIDIyNCwgOTgsIDIxNywgMzQsIDIxNiwgCisgICAgMjQzLCAyMjQsIDk4LCAyNTEsIDc5LCAyMjQsIDk4LCAyNiwgMywgMTAxLCAyMDgsIDkyLCAyMjQsIDk4LCAyMTcsIDM0LCAzLCAKKyAgICAxMDEsIDIwOCwgOTIsIDIyNCwgOTgsIDI2LCAzLCAyMzMsIDE3NywgMjQxLCAyNDQsIDIyNCwgOTgsIDIxNywgMzQsIDMsIAorICAgIDIzMywgMTc3LCAyNDEsIDI0NCwgMjI0LCA5OCwgMjYsIDMsIDUzLCAyMTYsIDI0NiwgMjI0LCA5OCwgMjYsIDMsIDIwMywgCisgICAgMjUxLCAyMjQsIDk4LCAyNiwgMywgNTMsIDIwMywgMjUxLCA0LCAyMDMsIDU1LCAzLCAyMDMsIDI1MSwgMjI0LCA5OCwgMjE3LCAKKyAgICAzNCwgMywgNTMsIDIxNiwgMjQ2LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCA1MywgMjAzLCAyNTEsIDE5OSwgMTU4LCAyMTgsIAorICAgIDIxMywgMjQwLCAxOTEsIDI1MSwgMzcsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjEzLCAyMTEsIDI1MSwgMzcsIDIzOCwgMTIyLCAKKyAgICAyLCAzLCA3MywgNTcsIDIzMiwgMjIzLCAzLCA3MywgNTYsIDIwNSwgODMsIDIzMywgMTc3LCAyNDksIDc3LCAzLCA1MywgODMsIAorICAgIDk3LCAyMDUsIDgzLCAyMzMsIDE3NywgMjQ5LCA3NywgMywgMjA1LCA4MywgODMsIDk3LCAyMDUsIDI0MSwgMjE3LCA0NCwgMywgCisgICAgNzMsIDU2LCAyMDUsIDI0MSwgMjE3LCA0NCwgMywgMjEzLCAxOSwgMjQwLCAxODAsIDIwOSwgMTQ4LCAyMjEsIDE1NywgMjA5LCAKKyAgICAxNDcsIDI0MywgNjAsIDMsIDczLCA1NiwgMjM4LCAxMjIsIDMsIDI1MCwgMTY1LCAyNTEsIDExNywgMTYwLCAyMDUsIDE4NiwgCisgICAgMywgMjQ2LCAxNDcsIDI1MSwgMjUxLCAyNTEsIDQsIDE2MCwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzOCwgMTIyLCAyLCA4OCwgCisgICAgOTMsIDU0LCA5MywgMiwgODgsIDIzOCwgMTIyLCA1NCwgMjM4LCAxMjIsIDIsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgNTMsIAorICAgIDI0NiwgODAsIDIzOCwgMTIzLCAxMjAsIDI0MywgNTMsIDIzOCwgMTIyLCAyMDksIDE2MiwgMTI2LCAyNDMsIDUzLCAyMzgsIAorICAgIDEyMiwgMjA5LCAxNjIsIDIzOCwgMTIyLCAyLCAzLCAxMjAsIDE5MCwgODgsIDI2LCAxMjAsIDE5MCwgNTcsIDIzOCwgMTE3LCAKKyAgICAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgMjI0LCAyNDEsIDMsIDI0NiwgMTU2LCAyMjgsIDczLCAyMzUsIDY3LCAzLCAyNDYsIAorICAgIDE1NiwgMjI4LCA3MywgMjI0LCAyNDEsIDMsIDIxNCwgNzksIDEzNCwgNTYsIDIzNSwgNjcsIDMsIDIxNCwgNzksIDEzNCwgCisgICAgNTYsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAKKyAgICAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgMjI4LCA3MywgMjM1LCA2NywgCisgICAgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDIyOCwgNzMsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIAorICAgIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgNTYsIDIzNSwgNjcsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIAorICAgIDMsIDczLCA1NiwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA4OCwgMjEzLCA0NiwgCisgICAgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDg4LCAyMjUsIDI4LCAyMjQsIDI0MSwgCisgICAgMjE3LCAzNCwgMjUxLCA1LCAyMzUsIDY3LCAyMTcsIDM0LCAyNTEsIDUsIDIyNCwgMjQxLCAyNiwgMjA5LCAxMzcsIDIxOCwgCisgICAgMjE1LCAxNjAsIDEzOCwgMjM1LCA2NywgMjYsIDIwOSwgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNiwgCisgICAgMjE4LCAyMTUsIDI1MSwgNSwgMjM1LCA2NywgMjYsIDIxOCwgMjE1LCAyNTEsIDUsIDIyNCwgMjQxLCA4OCwgMjM5LCAxNzMsIAorICAgIDE2MCwgODgsIDIzNSwgNjYsIDIzNSwgNjcsIDg4LCAyMzksIDE3MywgMTYwLCA4OCwgMjI0LCAyNDAsIDIyNCwgMjQxLCA4OCwgCisgICAgMjA5LCAxNDgsIDIxNywgMzQsIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjA5LCAxNDgsIDIxNywgMzQsIDIzOCwgMTIzLCAKKyAgICAyMjQsIDI0MSwgODgsIDIwOSwgMTQ4LCA4OCwgMjM1LCA2NiwgMjM1LCA2NywgODgsIDIwOSwgMTQ4LCA4OCwgMjI0LCAyNDAsIAorICAgIDIyNCwgMjQxLCA4OCwgMjM1LCA2NywgODgsIDIzOSwgMTczLCAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIyNCwgMjQxLCA4OCwgCisgICAgMjM5LCAxNzMsIDIzOCwgMTIzLCAyMjQsIDI0MSwgODgsIDIwOSwgNzcsIDE2MCwgODgsIDIzNSwgNjcsIDg4LCAyMDksIDc3LCAKKyAgICAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIwOSwgNzcsIDE2MCwgODgsIDIyNCwgMjQxLCA4OCwgMjA5LCA3NywgMjM4LCAxMjMsIAorICAgIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIAorICAgIDM0LCAyMzUsIDY2LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MSwgMywgNzMsIDIyOCwgNzMsIAorICAgIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjcsIDMsIDczLCAyMjgsIDczLCAyMzksIDE3MywgMTYwLCAKKyAgICAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIzOSwgMTczLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAKKyAgICAyMzksIDE3MywgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIzOSwgMTczLCAyMDksIDc3LCAKKyAgICAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAyMDksIDE0OCwgMjE3LCAzNCwgMjI0LCAyNDAsIDIwOSwgMTQ4LCAKKyAgICAyMTcsIDM0LCAyMzUsIDY2LCAyMDksIDE0OCwgODgsIDIyNCwgMjQxLCA4OCwgMjM4LCAxMjIsIDU0LCAyMDksIDE0OCwgODgsIAorICAgIDIzNSwgNjcsIDg4LCAyMzgsIDEyMiwgNTQsIDUzLCAyMjAsIDE1LCAyMjQsIDI0MCwgNTMsIDIyMCwgMTUsIDIzNSwgNjYsIAorICAgIDUzLCAyMjAsIDE1LCAyMjQsIDI0MSwgMywgMjAzLCAyNTEsIDIzNSwgNjcsIDIxNiwgMjQzLCAyMjQsIDI0MCwgMjM1LCA2NywgCisgICAgMjQ4LCAyMTIsIDIyNCwgMjQwLCAyMjQsIDI0MSwgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE4OSwgMjM1LCA2NywgMjQ2LCAKKyAgICAxMTAsIDI0NywgMjM1LCAyNDIsIDE4OSwgMjI0LCAyNDEsIDI0NiwgMTEwLCAyNDcsIDIzNSwgMjQyLCAxOTAsIDg4LCAyMDksIAorICAgIDc3LCAyMzgsIDEyMywgMjM1LCA2NywgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE5MCwgODgsIDIwOSwgNzcsIDIzOCwgCisgICAgMTIzLCAyMDksIDUyLCAyMDYsIDExMSwgMjI1LCA2OSwgMjA2LCAxMTEsIDIwOSwgNTIsIDIwNiwgMTEyLCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjI1LCA2OSwgMjA2LCAxMTIsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzgsIDEyMiwgMiwgMywgMjQ4LCAxMywgCisgICAgNTYsIDIxNSwgMjksIDg4LCAyMDksIDEzNywgMjM4LCAxMjIsIDU0LCAyMDcsIDI1MSwgODgsIDIwOSwgMTM3LCAyMzgsIAorICAgIDEyMiwgNTQsIDIxNSwgMjksIDg4LCAyMDksIDEzNywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIwOSwgCisgICAgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIxNSwgMjksIDg4LCAyMzgsIDEyMiwgNTQsIDIwNywgMjUxLCA4OCwgMjM4LCAKKyAgICAxMjIsIDU0LCAyMTUsIDI5LCA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIxOCwgMjE1LCAxNjAsIAorICAgIDEzOCwgMjE1LCAyOSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIAorICAgIDIxNSwgMjksIDg4LCAyMTgsIDIxNSwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIxOCwgMjE1LCAyNTEsIAorICAgIDExNywgMTYwLCAxMzgsIDUzLCAyMTUsIDI4LCA1MywgMjA3LCAyNTAsIDIwOCwgMywgMywgMjQwLCAxODIsIDIwNywgMjEyLCAKKyAgICAzLCAyNDAsIDE4MiwgMjA4LCAzLCAzLCA5MywgMiwgNTcsIDIwNywgMjEyLCAzLCA5MywgMiwgNTcsIDIwOCwgMywgMywgCisgICAgMjIxLCAxOSwgMiwgNTcsIDIwNywgMjEyLCAzLCAyMjEsIDE5LCAyLCA1NywgMjA4LCAzLCA3NiwgMjE3LCAzNCwgMTYwLCAKKyAgICAyMDUsIDE4NiwgMywgNzMsIDU2LCAyMDcsIDIxMiwgNzYsIDIxNywgMzQsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA1NiwgCisgICAgMjA4LCAzLCA3NiwgODgsIDIzOCwgMTIyLCA1NCwgMjA3LCAyMTIsIDc2LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDIwNywgMjEyLCA3NiwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDIxMiwgNzYsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgNTIsIDQ5LCAKKyAgICAxNzYsIDEwMCwgMjE3LCA0MywgNTIsIDUxLCAxNzYsIDEwMCwgMjE3LCA0MywgMjQ2LCAxMTAsIDIwOCwgMiwgMjQ2LCAxMTAsIAorICAgIDIwNywgMjExLCAyNDYsIDExMCwgMjA4LCAzLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQ2LCAxMTAsIDIwNywgMjEyLCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjA4LCAzLCA4OCwgMjA3LCAyMTEsIDIwNywgMjEyLCA4OCwgMjA4LCAyLCAyMDgsIDMsIDg4LCAKKyAgICAyMDgsIDIsIDIwNywgMjEyLCA4OCwgMjA3LCAyMTEsIDIwNywgMjEyLCAyNDgsIDIxMiwgMjA4LCAyLCAyMDcsIDIxMiwgCisgICAgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMjQ3LCAyMzUsIDI0MSwgMjQ1LCAzLCAyMDgsIDIsIDIzOCwgMjAyLCA3NiwgMjE3LCAKKyAgICA0NiwgMjM5LCAxNjUsIDIxNSwgMTQxLCAzLCAyMDYsIDE5MSwgMjA1LCAxNTcsIDIwNSwgMTE1LCAyMjgsIDU1LCAyMzYsIAorICAgIDI0MywgMjE4LCAyMzAsIDIwOSwgMjUwLCA0OSwgMjA3LCAxNywgMjA5LCAyNTAsIDEyNywgMjA3LCAxNywgMjA5LCAyNTAsIAorICAgIDExNSwgMjA3LCAxNywgMjE2LCAxNSwgMywgMjEyLCAxMjIsIDgzLCAyNDksIDc3LCAyMDUsIDgzLCA1MSwgMjA0LCAxODQsIAorICAgIDUzLCA4MywgMjQ5LCA3NywgNDksIDIwNCwgMTg0LCA4MywgMjQ5LCA3NywgNTMsIDQ5LCAyMDQsIDE4NCwgNTMsIDgzLCAKKyAgICAyNDksIDc3LCA1MywgNDksIDIwNCwgMTg0LCAxNjgsIDI0MSwgMjQ1LCAyMzYsIDIwMSwgNDksIDIyMiwgNDUsIDc2LCA1MywgCisgICAgMjAzLCA0MiwgMjA5LCAyNTAsIDEyNywgMjA3LCAxOCwgMywgMjE2LCAyNDYsIDIwOSwgMjUwLCAxMTUsIDIwNywgMTgsIDMsIAorICAgIDIwMywgMjUxLCAyMDksIDI1MCwgMTE1LCAyMDcsIDE4LCA4OCwgMjA5LCAyNTAsIDEyNywgMjA3LCAxNywgNTMsIDEyNywgCisgICAgMjA3LCAxNywgNTMsIDExNSwgMjA3LCAxNywgNTMsIDIwOCwgNDcsIDIxOCwgMjE1LCA1NCwgMjEzLCAxMDUsIDUzLCAyMDgsIAorICAgIDQ3LCAyMTgsIDIxNSwgNTQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQwLCAyNDIsIDMsIDIxMywgMTA1LCAyMjAsIDI3LCAKKyAgICAyMDksIDc1LCA4MywgMjI0LCAxNzcsIDMsIDI0NiwgMTU2LCA1NiwgODMsIDIyNCwgMTc3LCAzLCAyNDYsIDE1NiwgNTcsIAorICAgIDEyNywgMjA3LCAxOCwgMywgMjQ2LCAxNTYsIDU3LCAyMTYsIDEyMSwgMywgMjMzLCAxNzcsIDk3LCAyMTYsIDEyMSwgMywgCisgICAgMjA1LCAyNDEsIDIxNywgNDMsIDIwNSwgODMsIDgzLCAyNDksIDc3LCAyNDgsIDE2OSwgMjEzLCAxNDksIDIwNSwgODMsIDgzLCAKKyAgICAyNDksIDc3LCAzLCAyMzMsIDE3NywgOTcsIDIwNSwgODMsIDI0NiwgODAsIDIxNywgNDMsIDIwNSwgODMsIDIyMCwgMTUsIAorICAgIDIyNCwgMjQwLCAyMDUsIDgzLCAyMjAsIDE1LCAyMzUsIDY2LCAyMzksIDE3MywgMjA5LCA3NywgMjI0LCAyNDEsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMzksIDE3MywgMjA5LCA3NywgMjM1LCA2NywgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNSwgODMsIAorICAgIDIwOSwgMTcsIDI0OCwgMTY5LCAyMTMsIDE0OSwgMjI1LCA3MSwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDIxNywgNDMsIDUzLCAKKyAgICAyMDksIDE3LCAyMTcsIDQzLCA2NCwgODMsIDE0OCwgMjIwLCAyMTMsIDY0LCA4MywgMTQ4LCAxNTcsIDIzOSwgMTQsIDY0LCAKKyAgICA0OCwgMTU3LCAyMDEsIDQ4LCA2NCwgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA2NCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICA2NCwgNDgsIDQ5LCA1MSwgNjQsIDQ4LCA5OCwgNjMsIDQ4LCAxODIsIDYzLCA0OCwgMTkxLCA2MywgNDgsIDE1NywgMjM5LCAKKyAgICAxNCwgNjMsIDQ4LCAxNTcsIDIwMSwgNDgsIDYzLCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDYzLCA0OCwgMjA4LCAyNTQsIAorICAgIDIwMSwgNDgsIDYzLCA0OCwgNDksIDUxLCA2MywgNDgsIDExNSwgMTI3LCA2MywgNDgsIDg3LCA1NSwgMywgMjA1LCAyMjQsIAorICAgIDIzOSwgMTY1LCA4NywgNTUsIDMsIDIwNSwgMjI0LCAyMDMsIDIxNiwgOTgsIDU1LCAzLCAyMDUsIDIyNCwgMjM5LCAxNjUsIAorICAgIDk4LCA1NSwgMywgMjA1LCAyMjQsIDIwMywgMjE2LCA1MiwgMywgMjA1LCAxNTgsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAKKyAgICAyNDgsIDkzLCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA1MiwgCisgICAgMywgMjI0LCA1NCwgNDksIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDI0MSwgNjUsIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAKKyAgICAyNDEsIDY1LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjQxLCA2NSwgMywgMjA1LCAxNTgsIDE2NywgMjQ4LCAxNDQsIDI0MSwgCisgICAgNjUsIDMsIDI0OCwgOTMsIDE2NywgMjQ4LCAxNDQsIDIzOSwgMTgwLCAyMDgsIDE5MywgNjMsIDIyNSwgNzEsIDIwOCwgMTkzLCAKKyAgICA2NCwgMjI1LCA3MSwgMjA4LCAxOTMsIDYzLCAyMDIsIDI0NiwgNCwgMjA4LCAxOTMsIDY0LCAyMDIsIDI0NiwgNCwgMjA4LCAKKyAgICAxOTMsIDYzLCAyMTYsIDM3LCA2NCwgMjE2LCAzNywgNjQsIDIzNCwgODksIDYzLCAyMzQsIDg5LCAyMzMsIDE3NywgNjMsIAorICAgIDIzNCwgODksIDYzLCAyMjUsIDcxLCAyNDYsIDE1NSwgNjMsIDIyMiwgNjYsIDI0MSwgNjQsIDY0LCAyMjIsIDY2LCAyNDEsIAorICAgIDY0LCA2MywgMjIyLCA2NiwgMjI0LCA0OSwgNjQsIDIyMiwgNjYsIDIyNCwgNDksIDYzLCA0LCAyNDEsIDY0LCA2MywgNCwgCisgICAgMjI0LCA0OSwgNjQsIDQsIDIyNCwgNDksIDYzLCAyMzMsIDE3NywgMjM4LCAxOTYsIDY0LCAyMzMsIDE3NywgMjM4LCAxOTYsIAorICAgIDYzLCA4MywgMjM4LCAxOTYsIDY0LCA4MywgMjM4LCAxOTYsIDQ5LCA1NSwgMywgNCwgMjQ2LCAxNTUsIDEyNiwgOTgsIDI1MCwgCisgICAgMTk5LCA0OSwgNTUsIDMsIDQ0LCAyMTUsIDExMywgMTY4LCA5OCwgMjA4LCAxODYsIDQ4LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAKKyAgICA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDk4LCAyMDQsIDE0MSwgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCA5OCwgNTUsIDMsIDIzOSwgMTgwLCAyMDgsIDkyLCA5OCwgCisgICAgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA5OCwgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCAKKyAgICA1NSwgMywgMjA3LCA2LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgCisgICAgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgNTUsIDIwNiwgMzgsIDIwMCwgMTk1LCAyMDEsIDc4LCA1NSwgMjE1LCAKKyAgICA5NiwgMjQxLCA3LCAyMjUsIDI4LCAyMzgsIDEyMiwgMiwgODgsIDk4LCA0OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIAorICAgIDQ0LCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyMTMsIDEwNiwgMjUxLCAxMTcsIDE2MCwgMTM4LCA4NywgNTUsIDIwNiwgCisgICAgMzgsIDIzNSwgNjYsIDg3LCA1NSwgMjA2LCAzOCwgMjA3LCAyMTEsIDk4LCAyMTQsIDkwLCA0OCwgODcsIDIxNCwgOTAsIDQ4LCAKKyAgICAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA4NywgNDgsIDg3LCA1NSwgODgsIDIxMywgMTA2LCAyNTEsIDExNywgCisgICAgMTYwLCAxMzgsIDIwNSwgMjQxLCAyMTcsIDQ0LCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIAorICAgIDk4LCA1NSwgODgsIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAKKyAgICAyMTcsIDQzLCAxOTEsIDIwNSwgOTcsIDE5OSwgMjcsIDQ4LCAyMDksIDI1MCwgMjA5LCA3NywgMTU3LCA0OCwgMjA5LCAyNTAsIAorICAgIDI0OSwgMTI2LCAyMDgsIDI1NCwgNDgsIDY0LCAyMjIsIDY2LCAyMDgsIDEwOSwgNjMsIDQsIDIwOCwgMTA5LCA2NCwgNCwgCisgICAgMjA4LCAxMDksIDYzLCAyMTMsIDQxLCAyMTYsIDM3LCA2NCwgMjEzLCA0MSwgMjE2LCAzNywgODAsIDIyNSwgNzEsIDI0NiwgCisgICAgMTU1LCA4MCwgMjE2LCAyNDgsIDMsIDIxNiwgMjQ4LCAyMjgsIDczLCA4MCwgMjQ2LCAxNTYsIDMsIDI0NiwgMTU2LCAyMjgsIAorICAgIDczLCA4MCwgMjQ2LCAxNTUsIDgwLCA0NCwgMjEyLCAyNCwgMjA5LCA3NywgMTU3LCA1NSwgMywgMjMzLCAxODYsIDIzNCwgCisgICAgMTM2LCAyNDksIDEyNiwgMjA4LCAyNTQsIDU1LCAzLCAyMzMsIDE4NiwgMjA3LCA2LCAyMDksIDc3LCAxNTcsIDU1LCAzLCAKKyAgICAyMzMsIDE3NywgMjA3LCA2LCAyNDksIDEyNiwgMjA4LCAyNTQsIDU1LCAzLCAyMzMsIDE3NywgMjA3LCA2LCAyNDgsIDIyMCwgCisgICAgNTUsIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMTU3LCAyMzksIDEzLCAyMDksIDI1MCwgMjQ4LCAyMjAsIDU1LCAyMTUsIDk2LCAKKyAgICAxOTEsIDIwNiwgOTgsIDE1NywgMjM5LCAxMywgOTgsIDIwNSwgOTcsIDQ4LCAxODIsIDIwNSwgOTcsIDQ4LCA4NywgMjA1LCAKKyAgICA5NywgNDgsIDE5MSwgMjA1LCA5NywgNDgsIDQ5LCA1MSwgMjA1LCA5NywgNDgsIDExNSwgMTI3LCAyMDUsIDk3LCA0OCwgCisgICAgMTU3LCAyMDEsIDQ4LCAyMDUsIDk3LCA0OCwgMTU3LCAyMzksIDE0LCAyMDUsIDk3LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIAorICAgIDIwNSwgOTcsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjA1LCA5NywgNDgsIDk4LCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIAorICAgIDE4MiwgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCA4NywgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCAxOTEsIDIwNSwgOTcsIDI0MSwgCisgICAgMjQzLCA0OCwgMjQ2LCAxMTIsIDIwNSwgOTcsIDE3NiwgMjQ2LCAxNTYsIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCAxNzYsIAorICAgIDI0NiwgMTU2LCA0OCwgOTgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxODIsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgCisgICAgMTQ4LCA4NywgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIAorICAgIDE1NywgMjAxLCA0OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE1NywgMjM5LCAxNCwgMjA1LCA5NywgNTUsIDIwNSwgCisgICAgMTg2LCAxNDgsIDIwOCwgMjU0LCAyMzksIDE0LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMjA4LCAyNTQsIDIwMSwgCisgICAgNDgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCA5OCwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIAorICAgIDE4MiwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIDg3LCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCAKKyAgICA5NywgMTkxLCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgMjMzLCAxNzcsIDIwNywgMjUsIDIyNiwgMjE0LCAKKyAgICA4MywgMjA3LCAyNSwgMjI2LCAyMTQsIDk4LCAyMDUsIDk3LCA1NSwgMTE5LCA4NywgMjA1LCA5NywgNDgsIDE4MiwgMjA1LCAKKyAgICA5NywgNTUsIDk4LCA3NiwgMTkxLCAyMDUsIDk3LCA0OCwgODcsIDIwNSwgOTcsIDU1LCAxMTksIDk4LCAyMDUsIDk3LCA0OCwgCisgICAgMTkxLCAyMDUsIDk3LCA1NSwgOTgsIDc2LCAxODIsIDIwNSwgOTcsIDQ4LCA5OCwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgCisgICAgMTk5LCAxODIsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgODcsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgCisgICAgMTkxLCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDk4LCA2MywgNDQsIDY0LCA0OCwgMTgyLCA2MywgNDQsIDY0LCAKKyAgICA0OCwgODcsIDYzLCA0NCwgNjQsIDQ4LCAxOTEsIDYzLCA0NCwgNjQsIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCA1MSwgMjA0LCAKKyAgICA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDI0OCwgOTMsIDIwNCwgOTksIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCA0OSwgCisgICAgMjA0LCA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDIwNSwgMTU4LCAyMDQsIDk5LCA0OCwgMjEzLCAxMTAsIDIyNSwgMjgsIAorICAgIDIxMywgMTEwLCAyMTMsIDQ2LCAyMjAsIDYsIDIyNSwgMjgsIDIyMCwgNiwgMjEzLCA0NiwgMjM2LCAyMjksIDI0MywgMTYsIAorICAgIDI1MCwgMjAwLCAyNDYsIDE1MSwgMjUxLCA0NiwgODcsIDYzLCA0OCwgMjA2LCA0NSwgMjA1LCAxNTYsIDk4LCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDIwNiwgNDUsIDIxMywgNDIsIDE4MiwgMjM4LCAxMTgsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMDUsIDE1NiwgCisgICAgODcsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMjA2LCA0NSwgMjI1LCAyNCwgMTkxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCAKKyAgICA5OCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA2MywgMTgyLCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCA4NywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA2MywgMTkxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAKKyAgICAyMjQsIDIyNSwgMTgsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIxMywgMzUsIDE4MiwgMjA1LCA5NywgCisgICAgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIyNSwgMTgsIDE4MiwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIxMywgCisgICAgMzUsIDk4LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjAzLCAyMTYsIDg3LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAKKyAgICAyMDUsIDIyNCwgMjAzLCAyMTYsIDk4LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjM5LCAxNjUsIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjM5LCAxNjUsIDYzLCAyNDIsIDE4OCwgMTkxLCAyNiwgOTgsIDQ4LCA2MywgCisgICAgMjQyLCAxODgsIDE5MSwgMjYsIDg3LCA0OCwgNjMsIDI0MiwgMTg4LCAxODIsIDI2LCA5OCwgNDgsIDYzLCAyNDIsIDE4OCwgCisgICAgMTgyLCAyNiwgODcsIDQ4LCA2MywgMjQyLCAxODgsIDk4LCAyNiwgMTgyLCA0OCwgNjMsIDI0MiwgMTg4LCA4NywgMjYsIAorICAgIDE4MiwgNDgsIDYzLCAyNDIsIDE4OCwgOTgsIDI2LCAxOTEsIDQ4LCA2MywgMjQyLCAxODgsIDg3LCAyNiwgMTkxLCA0OCwgCisgICAgMjEzLCA4NiwgNTUsIDEyNywgMjI1LCAyOCwgMjEzLCA4NiwgNTUsIDEyNywgMjEzLCA0NiwgMjEzLCA4NiwgNTUsIDExNSwgCisgICAgMjI1LCAyOCwgMjEzLCA4NiwgNTUsIDExNSwgMjEzLCA0NiwgMjEzLCA4NiwgNTUsIDQ5LCAyMDMsIDIyOCwgMjEzLCA4NiwgCisgICAgNTUsIDUxLCAyMDMsIDIyOCwgMjEzLCA4NiwgNTUsIDQ5LCAyMzksIDE2NywgMjEzLCA4NiwgNTUsIDUxLCAyMzksIDE2NywgCisgICAgMTgyLCA2NCwgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAzLCAyMzMsIDE3NywgMTQ4LCAxMTUsIDI1MCwgMjAzLCAyMjgsIAorICAgIDExOCwgMzUsIDIxMywgMTc2LCAyNDgsIDc4LCAyNDksIDk0LCAxMDAsIDMsIDE2MiwgMjAwLCAxOTUsIDQ0LCAyMDAsIDE5NSwgCisgICAgNDQsIDI3LCAyMDAsIDE5NSwgNjMsIDUyLCAyNDcsIDUzLCA2MywgMjQxLCA2NSwgMjQ3LCA1MywgMjA0LCAxODUsIDYzLCAKKyAgICAyMTYsIDM3LCAyMzMsIDE3NywgNjMsIDIxNywgMTMwLCA2MywgMjE3LCAxMzAsIDYzLCAyMjIsIDY2LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIDIzOSwgMTY2LCAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgCisgICAgMjI1LCAyMywgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIDIxMywgNDEsIDIwNSwgOTksIDI0NywgNTMsIDIwNSwgCisgICAgMTU4LCAxNjcsIDYzLCAyNDYsIDE1NSwgMjQ4LCA5MywgMTY3LCA2MywgMjQ2LCAxNTUsIDE2MiwgMjM2LCAyMjksIDIxNSwgCisgICAgOTgsIDYzLCAyNDIsIDE4NCwgMjEyLCAyMjgsIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIDYzLCAyNDIsIDE4NCwgNjQsIAorICAgIDIzNiwgMjI5LCAyMTUsIDk4LCAyNDIsIDE4NCwgMjEyLCAyMjgsIDY0LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjQyLCAxODQsIAorICAgIDUyLCAyMTUsIDcwLCAyMjgsIDk5LCAyMDMsIDI1NSwgNTQsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgOTksIDI1MCwgCisgICAgMjAxLCAxODIsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAyMDEsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgCisgICAgOTksIDI1MCwgMjAxLCAxOTEsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAyMDEsIDExNiwgNiwgMSwgMjUwLCAKKyAgICAxMDQsIDExNiwgNiwgMSwgMjQ4LCAyNCwgMTE2LCA2LCAxLCAyMDMsIDU3LCAxMTYsIDYsIDEsIDIzNSwgMTMwLCAxMTYsIDYsIAorICAgIDEsIDI0MCwgMjA2LCAxMTYsIDYsIDEsIDIwMCwgMjMsIDExNiwgNiwgMSwgMTk5LCA2MSwgMTE2LCA2LCAxLCAyMzksIDg4LCAKKyAgICAxMTYsIDYsIDEsIDE5OSwgODYsIDExNiwgNiwgMSwgMjI3LCAyNTUsIDExNiwgNiwgMSwgODIsIDIyNywgMjU1LCAxMTYsIDYsIAorICAgIDEsIDcwLCAxMTYsIDYsIDEsIDI0MCwgMjI2LCAxMTYsIDYsIDEsIDIyNywgNzQsIDExNiwgNiwgMSwgMjI0LCAxNDAsIDExNiwgCisgICAgNiwgMSwgMjIwLCAyMTgsIDExNiwgNiwgMSwgMjIwLCAxMjAsIDExNiwgNiwgMSwgMjE3LCA2NSwgMTE2LCA2LCAxLCAyMTUsIAorICAgIDkzLCAxMTYsIDYsIDEsIDIxMywgMTgsIDExNiwgNiwgMSwgMjA5LCA1OCwgMTE2LCA2LCAxLCAyMDQsIDE3MSwgMTE2LCA2LCAKKyAgICAxLCAyMDQsIDE2LCAxMTYsIDYsIDEsIDIzNiwgMjA0LCAxMTYsIDYsIDEsIDIzNCwgOTUsIDExNiwgNiwgMSwgMjE3LCA0LCAKKyAgICAxMTYsIDYsIDEsIDIxNiwgNzMsIDExNiwgNiwgMSwgMjA5LCAyMjMsIDExNiwgNiwgMSwgMjA1LCAxMSwgMTE2LCA2LCAxLCAKKyAgICAyNDYsIDE5OCwgMTE2LCA2LCAxLCAyMTAsIDExNCwgMTE2LCA2LCAxLCAyMDAsIDI5LCAxMTYsIDYsIDEsIDIwMCwgMzEsIAorICAgIDExNiwgNiwgMSwgMjAwLCA2MywgMTE2LCA2LCAxLCAyMDgsIDIyMCwgMTQ0LCAxMTYsIDYsIDEsIDE5OSwgMjExLCAxMTYsIAorICAgIDYsIDEsIDQsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDQsIDE5OSwgMTgyLCAzLCAyMDcsIDYsIDExNiwgNiwgMSwgMTk5LCAKKyAgICAyNDUsIDExNiwgNiwgMSwgMjI4LCA0MCwgNCwgMTk5LCAxODEsIDExNiwgNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIAorICAgIDYsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCA2LCAxLCAyMzcsIDYzLCAxMTYsIDYsIDEsIDIyNywgCisgICAgMjUzLCAxMTYsIDYsIDEsIDIwOSwgMjIyLCAxMTYsIDYsIDEsIDIwNSwgNzMsIDYyLCAxMTYsIDYsIDEsIDIyNSwgNTksIAorICAgIDIyMCwgMjE4LCAxMTYsIDQsIDEsIDI1MCwgMTA0LCAxMTYsIDQsIDEsIDI0OCwgMjQsIDExNiwgNCwgMSwgMjAzLCA1NywgCisgICAgMTE2LCA0LCAxLCAyMzUsIDEzMCwgMTE2LCA0LCAxLCAyNDAsIDIwNiwgMTE2LCA0LCAxLCAyMDAsIDIzLCAxMTYsIDQsIDEsIAorICAgIDE5OSwgNjEsIDExNiwgNCwgMSwgMjM5LCA4OCwgMTE2LCA0LCAxLCAxOTksIDg2LCAxMTYsIDQsIDEsIDIyNywgMjU1LCAKKyAgICAxMTYsIDQsIDEsIDgyLCAyMjcsIDI1NSwgMTE2LCA0LCAxLCA3MCwgMTE2LCA0LCAxLCAyNDAsIDIyNiwgMTE2LCA0LCAxLCAKKyAgICAyMjcsIDc0LCAxMTYsIDQsIDEsIDIyNCwgMTQwLCAxMTYsIDQsIDEsIDIyMCwgMjE4LCAxMTYsIDQsIDEsIDIyMCwgMTIwLCAKKyAgICAxMTYsIDQsIDEsIDIxNywgNjUsIDExNiwgNCwgMSwgMjE1LCA5MywgMTE2LCA0LCAxLCAyMTMsIDE4LCAxMTYsIDQsIDEsIAorICAgIDIwOSwgNTgsIDExNiwgNCwgMSwgMjA0LCAxNzEsIDExNiwgNCwgMSwgMjA0LCAxNiwgMTE2LCA0LCAxLCAyMzYsIDIwNCwgCisgICAgMTE2LCA0LCAxLCAyMzQsIDk1LCAxMTYsIDQsIDEsIDIxNywgNCwgMTE2LCA0LCAxLCAyMTYsIDczLCAxMTYsIDQsIDEsIAorICAgIDIwOSwgMjIzLCAxMTYsIDQsIDEsIDIwNSwgMTEsIDExNiwgNCwgMSwgMjQ2LCAxOTgsIDExNiwgNCwgMSwgMjEwLCAxMTQsIAorICAgIDExNiwgNCwgMSwgMjAwLCAyOSwgMTE2LCA0LCAxLCAyMDAsIDMxLCAxMTYsIDQsIDEsIDIwMCwgNjMsIDExNiwgNCwgMSwgCisgICAgMjA4LCAyMjAsIDE0NCwgMTE2LCA0LCAxLCAxOTksIDIxMSwgMTE2LCA0LCAxLCA0LCAxOTksIDE4MSwgMTE2LCA0LCAxLCA0LCAKKyAgICAxOTksIDE4MiwgMywgMjA3LCA2LCAxMTYsIDQsIDEsIDE5OSwgMjQ1LCAxMTYsIDQsIDEsIDIyOCwgNDAsIDQsIDE5OSwgCisgICAgMTgxLCAxMTYsIDQsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCA0LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAKKyAgICAxODEsIDExNiwgNCwgMSwgMjM3LCA2MywgMTE2LCA0LCAxLCAyMjcsIDI1MywgMTE2LCA0LCAxLCAyMDksIDIyMiwgMTE2LCAKKyAgICA0LCAxLCAyMDUsIDczLCA2MiwgMTE2LCA0LCAxLCAyMjUsIDU5LCAyMjAsIDIxOCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDUzLCAxNDgsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA1MywgMTQ4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyMDUsIAorICAgIDI0MCwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMDcsIDYsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA5NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDExOSwgCisgICAgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQxLCAxMTksIDgsIDQsIDEsIAorICAgIDIyNywgMTE5LCAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAxOTksIDE1OCwgCisgICAgMywgMjQxLCAxMTksIDgsIDYsIDEsIDI1MSwgMTEyLCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgMTE3LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgNjIsIDgsIDYsIDEsIDIwNCwgMTg1LCAyNTEsIDExMiwgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDUxLCAxMTcsIDgsIAorICAgIDYsIDEsIDIwMSwgMTQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAKKyAgICAyNDIsIDE5OCwgOCwgNiwgMSwgMTY3LCAyMzQsIDI0NywgOCwgNCwgMSwgMTY3LCAyMzQsIDI0NywgOCwgNCwgMSwgMjA3LCAKKyAgICA0LCAyMTUsIDIyOSwgOCwgNCwgMSwgMTk3LCAzLCAyMTgsIDIxMiwgOCwgNCwgMSwgMjA0LCAxODUsIDIxNCwgMzMsIDMsIAorICAgIDIwNywgNiwgOCwgNCwgMSwgMTYzLCAzLCAxMjgsIDIxMywgMjcsIDIyOCwgNzMsIDgsIDEsIDQsIDYsIDIwNCwgMTg1LCA3MiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCAyMjcsIDI1MSwgNjcsIDEsIDYsIDIwMywgMTY4LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjA3LCAKKyAgICAxODMsIDIwNywgNiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDIwNywgMTgzLCAyMDcsIDYsIDg1LCA2LCAxLCAyNTEsIDEzNiwgCisgICAgODUsIDQsIDEsIDI1MSwgMTM2LCA4NSwgNiwgMSwgMjAyLCAyMzEsIDg1LCA0LCAxLCAyMDIsIDIzMSwgODUsIDYsIDEsIAorICAgIDIzNiwgNjAsIDg1LCA0LCAxLCAyMzYsIDYwLCA4NSwgNiwgMSwgMjQyLCAyNSwgODUsIDQsIDEsIDI0MiwgMjUsIDg1LCA2LCAKKyAgICAxLCAyMzgsIDIzMywgODUsIDQsIDEsIDIzOCwgMjMzLCA4NSwgNiwgMSwgMjA5LCAzLCA4NSwgNCwgMSwgMjA5LCAzLCA4NSwgCisgICAgNiwgMSwgMTk5LCA5NiwgODUsIDQsIDEsIDE5OSwgOTYsIDg1LCA2LCAxLCAyMzQsIDE1NCwgODUsIDQsIDEsIDIzNCwgMTU0LCAKKyAgICA4NSwgNiwgMSwgMjA2LCA4NiwgODUsIDQsIDEsIDIwNiwgODYsIDg1LCA2LCAxLCAyMzIsIDIzNywgODUsIDQsIDEsIDIzMiwgCisgICAgMjM3LCA4NSwgNiwgMSwgMjI3LCA1OSwgODUsIDQsIDEsIDIyNywgNTksIDg1LCA2LCAxLCAyMjUsIDU0LCA4NSwgNCwgMSwgCisgICAgMjI1LCA1NCwgODUsIDYsIDEsIDIyMSwgMjExLCA4NSwgNCwgMSwgMjIxLCAyMTEsIDg1LCA2LCAxLCAyMTksIDE1MCwgODUsIAorICAgIDQsIDEsIDIxOSwgMTUwLCA4NSwgNiwgMSwgMjI2LCAzMSwgODUsIDQsIDEsIDIyNiwgMzEsIDg1LCA2LCAxLCA3NCwgODUsIAorICAgIDQsIDEsIDc0LCA4NSwgNiwgMSwgMjE1LCAyMDQsIDg1LCA0LCAxLCAyMTUsIDIwNCwgODUsIDYsIDEsIDIxMywgMSwgODUsIAorICAgIDQsIDEsIDIxMywgMSwgODUsIDYsIDEsIDIwOSwgMTUxLCA4NSwgNCwgMSwgMjA5LCAxNTEsIDg1LCA2LCAxLCAyMDYsIDIyMSwgCisgICAgODUsIDQsIDEsIDIwNiwgMjIxLCA4NSwgNiwgMSwgMjA0LCA0NiwgODUsIDQsIDEsIDIwNCwgNDYsIDg1LCA2LCAxLCAyMzcsIAorICAgIDExMiwgODUsIDQsIDEsIDIzNywgMTEyLCA4NSwgNiwgMSwgMjI2LCAxODUsIDg1LCA0LCAxLCAyMjYsIDE4NSwgODUsIDYsIAorICAgIDEsIDIxNCwgMjM1LCA4NSwgNCwgMSwgMjE0LCAyMzUsIDg1LCA2LCAxLCAyMTcsIDU3LCA4NSwgNCwgMSwgMjE3LCA1NywgCisgICAgODUsIDYsIDEsIDI0MSwgNjksIDI1MSwgMTQyLCA4NSwgNCwgMSwgMjQxLCA2OSwgMjUxLCAxNDIsIDg1LCA2LCAxLCA0MCwgCisgICAgODUsIDI1MSwgMTcxLCA4NSwgNCwgMSwgNDAsIDg1LCAyNTEsIDE3MSwgODUsIDYsIDEsIDI0MiwgMjE3LCAyMzgsIDIzMywgCisgICAgODUsIDQsIDEsIDI0MiwgMjE3LCAyMzgsIDIzMywgODUsIDYsIDEsIDI0MSwgNjksIDIyNywgNTksIDg1LCA0LCAxLCAyNDEsIAorICAgIDY5LCAyMjcsIDU5LCA4NSwgNiwgMSwgMjQxLCA2OSwgMjE5LCAxNTAsIDg1LCA0LCAxLCAyNDEsIDY5LCAyMTksIDE1MCwgCisgICAgODUsIDYsIDEsIDI0MiwgMjE3LCAyMTksIDE1MCwgODUsIDQsIDEsIDI0MiwgMjE3LCAyMTksIDE1MCwgODUsIDYsIDEsIDQwLCAKKyAgICA4NSwgMjE3LCA1NywgODUsIDQsIDEsIDQwLCA4NSwgMjE3LCA1NywgODUsIDYsIDEsIDIxMiwgMTYsIDg1LCA0LCAxLCAyMTIsIAorICAgIDE2LCA4NSwgNiwgMSwgMjQyLCAyMzIsIDIxMCwgNTcsIDg1LCA0LCAxLCAyNDIsIDIzMiwgMjEwLCA1NywgODUsIDYsIDEsIAorICAgIDQwLCA4NSwgMjEwLCA1NywgODUsIDQsIDEsIDQwLCA4NSwgMjEwLCA1NywgODUsIDYsIDEsIDQwLCA4NSwgMjM4LCA5NCwgCisgICAgODUsIDQsIDEsIDQwLCA4NSwgMjM4LCA5NCwgODUsIDYsIDEsIDI1MSwgMTU1LCAyMjYsIDE5MCwgODUsIDQsIDEsIDI1MSwgCisgICAgMTU1LCAyMjYsIDE5MCwgODUsIDYsIDEsIDI0MSwgNjksIDIzMywgMTc4LCA4NSwgNCwgMSwgMjQxLCA2OSwgMjMzLCAxNzgsIAorICAgIDg1LCA2LCAxLCA0MCwgODUsIDIzMywgMTc4LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzMsIDE3OCwgODUsIDYsIDEsIDQwLCA4NSwgCisgICAgMTQ0LCA4NSwgNCwgMSwgNDAsIDg1LCAxNDQsIDg1LCA2LCAxLCAyMjUsIDE5MiwgMTQ0LCA4NSwgNCwgMSwgMjI1LCAxOTIsIAorICAgIDE0NCwgODUsIDYsIDEsIDQwLCA4NSwgMjM0LCAxMTQsIDg1LCA0LCAxLCA0MCwgODUsIDIzNCwgMTE0LCA4NSwgNiwgMSwgCisgICAgNDAsIDg1LCAyMzQsIDE1NywgODUsIDQsIDEsIDQwLCA4NSwgMjM0LCAxNTcsIDg1LCA2LCAxLCA0MCwgODUsIDIzNiwgNTUsIAorICAgIDg1LCA0LCAxLCA0MCwgODUsIDIzNiwgNTUsIDg1LCA2LCAxLCA0MCwgODUsIDI0MCwgMjI5LCA4NSwgNCwgMSwgNDAsIDg1LCAKKyAgICAyNDAsIDIyOSwgODUsIDYsIDEsIDQwLCA4NSwgMjEwLCAyMywgODUsIDQsIDEsIDQwLCA4NSwgMjEwLCAyMywgODUsIDYsIDEsIAorICAgIDQwLCAyMTgsIDEwMywgMjEwLCAyMywgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjEwLCAyMywgODUsIDYsIDEsIDQwLCAKKyAgICAyMTgsIDEwMywgMjE5LCAyMDEsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxOSwgMjAxLCA4NSwgNiwgMSwgNDAsIDIxOCwgCisgICAgMTAzLCAyMTgsIDQxLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTgsIDQxLCA4NSwgNiwgMSwgNDAsIDIxOCwgMTAzLCAKKyAgICAyMDEsIDc5LCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMDEsIDc5LCA4NSwgMTYsIDIyNywgODIsIDg1LCAxNiwgMjIxLCAKKyAgICAyMTIsIDIxMywgMSwgODUsIDE2LCAyMTUsIDIwNSwgMjEzLCAxLCA4NSwgMTYsIDIwOCwgMTAwLCA4NSwgMTYsIDIwNiwgCisgICAgMjIyLCAyMTMsIDEsIDg1LCAxNiwgMjI2LCAxODYsIDIxMywgMSwgODUsIDE2LCAyMTAsIDI0LCAyMDksIDE1MSwgODUsIDYsIAorICAgIDEsIDI0MiwgMjE3LCAyMTAsIDU3LCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIxMCwgNTcsIDg1LCA2LCAxLCAyNDIsIDIxNywgCisgICAgMjM2LCA1NSwgODUsIDQsIDEsIDI0MiwgMjE3LCAyMzYsIDU1LCA4NSwgMzgsIDIxOSwgMTUxLCA1NiwgODUsIDM4LCAyMDgsIAorICAgIDIxMywgMjUwLCAxNzMsIDg1LCAzOCwgMjA4LCAyMTMsIDIyNCwgMjQ4LCA4NSwgNiwgMSwgMjQ4LCAxMTcsIDIyNiwgMTkwLCAKKyAgICA4NSwgNCwgMSwgMjQ4LCAxMTcsIDIyNiwgMTkwLCA4NSwgNDAsIDIxOCwgMTAzLCAyMzYsIDE4MywgMjA4LCA3NiwgODUsIAorICAgIDQwLCAyMTgsIDEwMywgMjQxLCAxMCwgMjE0LCA3OSwgODEsIDg1LCA0MCwgMjE4LCAxMDMsIDIyOCwgOTcsIDIxNCwgNzksIAorICAgIDgxLCA4NSwgNDAsIDIxOCwgMTAzLCAyMDMsIDQ0LCAyNDAsIDIzOSwgODUsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCA4NSwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDg1LCAyMjEsIDc3LCAyNDAsIDIzOSwgMTE4LCA0LCAxLCAyNTEsIDg1LCAxMTgsIDQsIDEsIAorICAgIDI0OSwgODgsIDExOCwgNCwgMSwgMjM2LCA1OSwgMTE4LCA0LCAxLCAyNDAsIDE5MCwgMTE4LCA0LCAxLCAyMzgsIDE3OSwgCisgICAgMTE4LCA0LCAxLCAyMDIsIDIxNywgMTE4LCA0LCAxLCAxOTksIDg0LCAxMTgsIDQsIDEsIDIwNiwgMjQ0LCAxMTgsIDQsIDEsIAorICAgIDIyOCwgMTE3LCAxMTgsIDQsIDEsIDIyNywgNjgsIDExOCwgNCwgMSwgMjI1LCA2NSwgMTE4LCA0LCAxLCAyMjIsIDE4MCwgCisgICAgMTE4LCA0LCAxLCAyMjAsIDEyNSwgMTE4LCA0LCAxLCAyMTcsIDc4LCAxMTgsIDQsIDEsIDIxNiwgMTMwLCAxMTgsIDQsIDEsIAorICAgIDE5OSwgNzMsIDExOCwgNCwgMSwgMjEzLCAyMzQsIDExOCwgNCwgMSwgMjEyLCAxMywgMTE4LCA0LCAxLCAyMDYsIDIzMiwgCisgICAgMTE4LCA0LCAxLCAyMDQsIDUsIDExOCwgNCwgMSwgMjE1LCAyMzcsIDExOCwgNCwgMSwgMjI2LCAxOTUsIDExOCwgNCwgMSwgCisgICAgMjM1LCAxOTAsIDExOCwgNCwgMSwgMjE0LCAxNDQsIDExOCwgNCwgMSwgMjEwLCAyMSwgMTE4LCA0LCAxLCAyNDYsIDIyMywgCisgICAgMTE4LCA0LCAxLCAyNDcsIDE1OCwgMTE4LCA0LCAxLCAyMjcsIDE5OCwgMTE4LCA0LCAxLCAyNDYsIDE2MiwgMTE4LCA0LCAxLCAKKyAgICAyNDcsIDIxLCAxMTgsIDQsIDEsIDIwMCwgMTc5LCAxMTgsIDQsIDEsIDIyNywgMjEyLCAxMTgsIDQsIDEsIDIzNCwgMjMwLCAKKyAgICAxMTgsIDQsIDEsIDIzNCwgMTM5LCAxMTgsIDQsIDEsIDIzNCwgNjksIDExOCwgNCwgMSwgMjAxLCA2NCwgMTE4LCA0LCAxLCAKKyAgICAyMzQsIDE2NiwgMTE4LCA0LCAxLCAyMzMsIDIwMywgMTE4LCA0LCAxLCAxOTksIDI0NywgMTE4LCA0LCAxLCAyNTEsIDIxMCwgCisgICAgMjA2LCA0LCAxLCAxODMsIDIwNiwgNCwgMSwgMjAwLCAxMDUsIDIwNiwgNCwgMSwgMjAwLCAxMDQsIDIwNiwgNCwgMSwgMjAwLCAKKyAgICA5NCwgMjA2LCA0LCAxLCAyMDAsIDkyLCAyMDYsIDQsIDEsIDI0OCwgMjE0LCAyNTEsIDI1MywgMjAwLCA4NywgMjA2LCA0LCAKKyAgICAxLCAyMDAsIDg3LCAyMDYsIDQsIDEsIDIwMCwgMTAyLCAyMDYsIDQsIDEsIDIwMCwgOTksIDIwNiwgNCwgMSwgMjAwLCAxMDEsIAorICAgIDIwNiwgNCwgMSwgMjAwLCAxMDAsIDIwNiwgNCwgMSwgMjAwLCAxNCwgMjA2LCA0LCAxLCAyMDAsIDk2LCAyMDYsIDQsIDEsIAorICAgIDIwMCwgODUsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgODUsIDIwNiwgNCwgMSwgMjAwLCA4MiwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDkwLCAyMDYsIDQsIDEsIDI0OCwgMjE0LCAyNTEsIDI1MywgMjAwLCA5MCwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA5MCwgMjA2LCA0LCAxLCAyMDAsIDg5LCAyMDYsIDQsIDEsIDIwMCwgMTA5LCAyMDYsIDQsIDEsIDIwMCwgODMsIAorICAgIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgODMsIDIwNiwgNCwgMSwgMjAwLCA3MiwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA3MiwgMjA2LCA0LCAxLCAyMDAsIDksIDIwNiwgNCwgMSwgMjAwLCA1MywgMjA2LCA0LCAxLCAyNTEsIDE4MywgMjAwLCAKKyAgICA1MywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA1MywgMjA2LCA0LCAxLCAyMDAsIDgxLCAyMDYsIDQsIDEsIDIwMCwgODAsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA3NywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA5MSwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA3NSwgMjA2LCA0LCAxLCAyMDAsIDczLCAyMDYsIDQsIDEsIDE5OSwgMjExLCAyMDYsIDQsIDEsIDIwMCwgNzAsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA2OSwgMjA2LCA0LCAxLCAyMDAsIDkzLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDkzLCAKKyAgICAyMDYsIDQsIDEsIDI1MCwgMTA4LCAyMDAsIDkzLCAyMDYsIDQsIDEsIDIwMCwgNjgsIDIwNiwgNCwgMSwgMjAwLCA2NiwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDY3LCAyMDYsIDQsIDEsIDIwMCwgNjUsIDIwNiwgNCwgMSwgMjAwLCA2NCwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDEwMywgMjA2LCA0LCAxLCAyMDAsIDYyLCAyMDYsIDQsIDEsIDIwMCwgNjAsIDIwNiwgNCwgMSwgMjAwLCA1OSwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDU3LCAyMDYsIDQsIDEsIDIwMCwgNTQsIDIwNiwgNCwgMSwgMjA2LCAyMTMsIDIwMCwgNTQsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA1MiwgMjA2LCA0LCAxLCAyMDAsIDUxLCAyMDYsIDQsIDEsIDE5OSwgMjQ1LCAyMDYsIDQsIDY3LCAKKyAgICAxLCAyMjUsIDE2NiwgODEsIDIwNiwgNCwgMjEwLCAxNTUsIDgxLCAyMDYsIDQsIDExMSwgMjI3LCAxNjEsIDM0LCA1LCAyMjQsIAorICAgIDEwOSwgMzQsIDUsIDIyMSwgMTM1LCAzNCwgNSwgMjEyLCAyNTUsIDM0LCA1LCAyMDksIDI4LCAzNCwgNSwgMjEwLCA3LCAzNCwgCisgICAgNSwgMjQ4LCAxMjMsIDM0LCA1LCAyMDUsIDE4NSwgMzQsIDUsIDI0NiwgOTAsIDM0LCA1LCAyMTgsIDIzOSwgMzQsIDUsIAorICAgIDIxOCwgMjUsIDM0LCA1LCAyMzUsIDEyMywgMjE3LCAxNDYsIDM0LCA1LCAxOTksIDEzLCAzNCwgNSwgMjQwLCAyMDksIDM0LCAKKyAgICA1LCAyNDEsIDE4OSwgMzQsIDUsIDIyNywgMTY1LCAzNCwgNSwgMjA2LCA2MCwgMzQsIDUsIDI0NiwgMjA5LCAzNCwgNSwgCisgICAgMjE1LCAyMTYsIDM0LCA1LCAyMTUsIDEwNSwgMzQsIDUsIDIzNSwgMjA1LCAzNCwgNSwgMjM1LCAyMDEsIDM0LCA1LCAyMzUsIAorICAgIDIwMiwgMzQsIDUsIDIzNSwgMjAzLCAzNCwgNSwgMjA4LCAxNzksIDM0LCA1LCAyMDgsIDEzNCwgMzQsIDUsIDIwOCwgMTQ3LCAKKyAgICAzNCwgNSwgMjA4LCAxNzgsIDM0LCA1LCAyMDgsIDE1MiwgMzQsIDUsIDIwOCwgMTUzLCAzNCwgNSwgMjA4LCAxMzksIDM0LCAKKyAgICA1LCAyNDcsIDk5LCAzNCwgNSwgMjQ3LCA3OCwgMzQsIDUsIDI0NywgODAsIDM0LCA1LCAyNDcsIDk4LCAzNCwgNSwgMjQ3LCAKKyAgICA5NiwgMzQsIDUsIDI0NywgOTcsIDM0LCA1LCAyNDcsIDc5LCAzNCwgNSwgMTk4LCAyMzIsIDM0LCA1LCAxOTgsIDIxMCwgMzQsIAorICAgIDUsIDE5OCwgMjIzLCAzNCwgNSwgMTk4LCAyMzEsIDM0LCA1LCAxOTgsIDIyNiwgMzQsIDUsIDE5OCwgMjI3LCAzNCwgNSwgCisgICAgMTk4LCAyMTUsIDM0LCA1LCAyNDcsIDk0LCAzNCwgNSwgMjQ3LCA4MSwgMzQsIDUsIDI0NywgODMsIDM0LCA1LCAyNDcsIDkzLCAKKyAgICAzNCwgNSwgMjQ3LCA5MSwgMzQsIDUsIDI0NywgOTIsIDM0LCA1LCAyNDcsIDgyLCAzNCwgNSwgMjE0LCA0NSwgMzQsIDUsIAorICAgIDIxNCwgMzUsIDM0LCA1LCAyMTQsIDQxLCAzNCwgNSwgMjE0LCA0NCwgMzQsIDUsIDIxNCwgNDIsIDM0LCA1LCAyMTQsIDQzLCAKKyAgICAzNCwgNSwgMjE0LCA0MCwgMzQsIDUsIDIyNSwgMjAzLCAzNCwgNSwgMjI1LCAxOTUsIDM0LCA1LCAyMjUsIDE5OCwgMzQsIDUsIAorICAgIDIyNSwgMjAyLCAzNCwgNSwgMjI1LCAxOTksIDM0LCA1LCAyMjUsIDIwMCwgMzQsIDUsIDIyNSwgMTk2LCAzNCwgNSwgMjAwLCAKKyAgICAxMzksIDM0LCA1LCAyMDAsIDEyNiwgMzQsIDUsIDIwMCwgMTM0LCAzNCwgNSwgMjAwLCAxMzgsIDM0LCA1LCAyMDAsIDEzNiwgCisgICAgMzQsIDUsIDIwMCwgMTM3LCAzNCwgNSwgMjAwLCAxMzMsIDM0LCA1LCAyMzUsIDMsIDM0LCA1LCAyMzQsIDI0OSwgMzQsIDUsIAorICAgIDIzNCwgMjUyLCAzNCwgNSwgMjM1LCAyLCAzNCwgNSwgMjM0LCAyNTQsIDM0LCA1LCAyMzQsIDI1NSwgMzQsIDUsIDIzNCwgCisgICAgMjUxLCAzOCwgMzcsIDEsIDI0OSwgOCwgMzgsIDM3LCAxLCAyMDMsIDU5LCAzOCwgMzcsIDEsIDIzNSwgMTg1LCAzOCwgMzcsIAorICAgIDEsIDI0MSwgMTc1LCAzOCwgMzcsIDEsIDE5OSwgNjgsIDM4LCAzNywgMSwgMTk5LCA4OSwgMzgsIDM3LCAxLCAxNjEsIDM4LCAKKyAgICAzNywgMSwgMjM4LCAyMDksIDM4LCAzNywgMSwgMjM4LCAxOTAsIDM4LCAzNywgMSwgMjM4LCAxNzksIDM4LCAzNywgMSwgNzQsIAorICAgIDM4LCAzNywgMSwgMjE2LCA3MywgMzgsIDM3LCAxLCAyMzgsIDExNSwgMzgsIDM3LCAxLCAyMzgsIDEwNCwgMzgsIDM3LCAxLCAKKyAgICAyMDYsIDIwMSwgMzgsIDM3LCAxLCAxNDQsIDM4LCAzNywgMSwgMjA1LCAyNiwgMzgsIDM3LCAxLCAyNDcsIDgsIDM4LCAzNywgCisgICAgMSwgMjEwLCAxMTQsIDM4LCAzNywgMSwgMjEwLCA2OCwgMzgsIDM3LCAxLCAyMzcsIDYzLCAzOCwgMzcsIDEsIDIzOCwgMTAwLCAKKyAgICAzOCwgMzcsIDEsIDYyLCAzOCwgMzcsIDEsIDIyOCwgMTc4LCAzOCwgMzcsIDEsIDI0MCwgMjI3LCAzOCwgMzcsIDEsIDIyMSwgCisgICAgOTUsIDIwNCwgMjAsIDM4LCAzNywgMSwgMjAwLCA2NSwgMzgsIDM3LCAxLCAxOTksIDIxMSwgMzgsIDM3LCAxLCAyMjgsIDM5LCAKKyAgICA2MiwgMzgsIDM3LCAxLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM4LCAzNywgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgMzcsIAorICAgIDEsIDIyOCwgMzksIDI0OCwgMTc1LCAxOTksIDE4MSwgNTEsIDI1MSwgNzEsIDIwNywgMjU1LCAyMjIsIDE0NSwgNTEsIDI1MSwgCisgICAgNzEsIDIzOSwgMTgwLCAyMDcsIDI1NSwgMjIyLCAxNDUsIDQ5LCAyMDcsIDI1NSwgMTU5LCA1MSwgMjA3LCAyNTUsIDE1OSwgCisgICAgNDksIDIzOSwgMTgwLCAyMDcsIDI1NSwgMTU5LCA1MSwgMjM5LCAxODAsIDIwNywgMjU1LCAxNTksIDIxMywgMjIwLCAyMjgsIAorICAgIDYwLCAyMjIsIDE0NSwgMjEzLCAyMjAsIDIzOSwgMTgwLCAyMjgsIDYwLCAyMjIsIDE0NSwgMjM5LCAxODAsIDIwNSwgMTE2LCAKKyAgICAyMjIsIDE0NSwgNDksIDIwNSwgMTE2LCAxNTksIDUxLCAyMDUsIDExNiwgMTU5LCAyMTMsIDIyMCwgMjA4LCAxOTMsIDQ5LCAKKyAgICAyMTMsIDIyMCwgMjE3LCA4MCwgMTU5LCA1MSwgMjEzLCAyMjAsIDIxNywgODAsIDE1OSwgMjM5LCAwLCAyNDMsIDEzLCAyMTYsIAorICAgIDEyNiwgMjM2LCAyNDQsIDIxNiwgMTI2LCAyMTMsIDEwNSwgMjM2LCAyNDQsIDIxNiwgMTI2LCAyMzMsIDMwLCAyMzksIDE4MCwgCisgICAgMjE3LCAxNDEsIDE5MSwgMjUxLCA4MCwgMTgyLCAyNTEsIDgwLCAyMzksIDE4MCwgMjEzLCA0MSwgMjUxLCA3MCwgNTMsIAorICAgIDIxNywgMTM4LCAyMzMsIDMzLCAyMjgsIDUwLCAyMjgsIDU4LCAyMTYsIDE3NywgMjQ4LCA2NiwgMjMzLCAzNCwgMywgMjQxLCAKKyAgICA3NCwgMjA1LCAyNDEsIDMsIDIxMywgMjcsIDU2LCA0OSwgMTI4LCAyMTYsIDExOCwgMTU5LCA1MSwgMTI4LCAyMTYsIDExOCwgCisgICAgMTU5LCAyMDUsIDI0MSwgMywgNzMsIDU2LCAyMDUsIDI0MSwgMywgNzMsIDU3LCA0OSwgODMsIDI0OSwgNzcsIDMsIDIxNCwgCisgICAgNzMsIDUxLCA4MywgMjQ5LCA3NywgMywgMjE0LCA3MywgMjA1LCAxNTgsIDQ5LCAxNjcsIDE1OSwgMjA1LCAxNTgsIDUxLCAKKyAgICAxNjcsIDE1OSwgMjQ4LCA5MywgNDksIDE2NywgMTU5LCAyNDgsIDkzLCA1MSwgMTY3LCAxNTksIDQ5LCAyMDksIDE3MywgCisgICAgMTA4LCAxNTksIDUxLCAyMDksIDE3MywgMTA4LCAxNTksIDQ5LCA1MywgMjE2LCAxMTUsIDUxLCA1MywgMjE2LCAxMTUsIAorICAgIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCAxMTIsIDczLCAxMTksIDEyMCwgMTkwLCAyMTQsIDIxMSwgOTUsIAorICAgIDIzNiwgMjI5LCA3MywgMjE0LCAyMTEsIDIzNywgNjEsIDczLCA4MSwgMjEzLCAxMDUsIDIxNCwgNzksIDgxLCA4MywgMjA1LCAKKyAgICAyNDAsIDIxMywgMjcsIDIxNSwgOTksIDIwMCwgMjM4LCAyMTAsIDE1NSwgMTAxLCAyNDAsIDE4MiwgMjA0LCAxODUsIDI0NiwgCisgICAgNzAsIDIxMywgMjIwLCAyNDAsIDE4MiwgMjEzLCAyMjAsIDI0NiwgNzAsIDIwNCwgMTg1LCAyMTAsIDE2NywgMjQyLCA0MSwgCisgICAgMywgNDksIDIzNSwgNDQsIDI0MiwgNDEsIDMsIDUxLCAyMzUsIDQ0LCAyMDQsIDE4NSwgMjQyLCA0MCwgMjA1LCAxNTgsIAorICAgIDE2NywgMjExLCAxOTMsIDU0LCAyMDQsIDE0MiwgMjQxLCAyNDQsIDIwNiwgNDQsIDI0MSwgMjQ0LCAyMDgsIDkxLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgODMsIDIwOSwgMTA2LCAyNDAsIDE4MCwgMjAxLCAyMiwgODMsIDIyNCwgMTc2LCAyNDcsIDE0MiwgCisgICAgNTMsIDIzMywgMzMsIDIxMywgMTA1LCAyNDYsIDcwLCA1MywgMjI0LCA1NSwgMjE0LCA2MywgODEsIDI0MSwgMjQ1LCAzLCAKKyAgICA0OSwgMjAzLCAyMTksIDUzLCAyMDcsIDE5NiwgODEsIDEyLCA0MiwgMjEzLCAxMzIsIDEyLCA0MiwgMjQ2LCAxMjAsIDEyLCAKKyAgICA0MiwgMjExLCAxOTYsIDEwMiwgMTIsIDQyLCAyMTEsIDE5NiwgMTA1LCAxMiwgNDIsIDIxMSwgMTk2LCAxNDcsIDEyLCA0MiwgCisgICAgMjE2LCAxMCwgMTIsIDQyLCAyNDgsIDc4LCAxMiwgNDIsIDIwNywgMjIsIDEyLCA0MiwgMjI2LCA5NiwgMTAyLCAxMiwgNDIsIAorICAgIDIyNiwgOTYsIDEwNSwgMTIsIDQyLCAyNDAsIDIzNiwgMTIsIDQyLCAyMTEsIDIwMCwgMTIsIDQyLCA0LCAxMDIsIDEyLCA0MiwgCisgICAgNCwgMTA1LCAxMiwgNDIsIDIyNSwgODYsIDEwMiwgMTIsIDQyLCAyMjUsIDg2LCAxMDUsIDEyLCA0MiwgMjI1LCA4NiwgMTQ3LCAKKyAgICAxMiwgNDIsIDIyNSwgODYsIDE0OSwgMTIsIDQyLCAyMDksIDQxLCAxMiwgNDIsIDIwNiwgNDcsIDEyLCA0MiwgMjA5LCAzOCwgCisgICAgMTAyLCAxMiwgNDIsIDIwOSwgMzgsIDEwNSwgMTIsIDQyLCAyMzQsIDEyOCwgMTAyLCAxMiwgNDIsIDIzNCwgMTI4LCAxMDUsIAorICAgIDEyLCA0MiwgMjM0LCAxOTksIDEyLCA0MiwgMjEzLCAyMTAsIDEyLCA0MiwgMjQ2LCAyMDYsIDEyLCA0MiwgMjA3LCAyMjgsIAorICAgIDEyLCA0MiwgMjIxLCA4MSwgMTIsIDQyLCAyNDEsIDE3MywgMTIsIDQyLCAyMjEsIDcxLCAxMiwgNDIsIDI0NiwgMTM4LCAxMiwgCisgICAgNDIsIDIwMSwgODMsIDEwMiwgMTIsIDQyLCAyMDEsIDgzLCAxMDUsIDEyLCA0MiwgMjM3LCA3NywgMTIsIDQyLCAyMTYsIDg1LCAKKyAgICAxMDIsIDEyLCA0MiwgMjE2LCA4NSwgMTA1LCAxMiwgNDIsIDIwOSwgMTQ2LCAxNjcsIDIwNSwgMTA5LCAyMDUsIDM3LCAxMiwgCisgICAgNDIsIDI0MiwgMjU1LCAxMiwgNDIsIDI0MCwgMjAwLCAxMiwgNDIsIDIyNywgMjQzLCAxMiwgNDIsIDI0OCwgMTE2LCA3NiwgCisgICAgMjQ2LCAxMDQsIDEyLCA0MiwgMjM4LCAyMiwgMTIsIDQyLCAyMDgsIDIxNSwgMTAyLCAxMiwgNDIsIDIwOCwgMjE1LCAxMDUsIAorICAgIDEyLCA0MiwgMjQ5LCA5MCwgMTIsIDQyLCAyMDksIDE1MywgMTIsIDQyLCAyNDcsIDIyMCwgMjA5LCAxNTMsIDEyLCA0MiwgCisgICAgMjIwLCAxNCwgMTAyLCAxMiwgNDIsIDIyMCwgMTQsIDEwNSwgMTIsIDQyLCAyMjAsIDE0LCAxNDcsIDEyLCA0MiwgMjIwLCAKKyAgICAxNCwgMTQ5LCAxMiwgNDIsIDIyMiwgMjcsIDEyLCA0MiwgMjEwLCA1OSwgMTIsIDQyLCAyMTMsIDIxNiwgMTIsIDQyLCAyMzgsIAorICAgIDUwLCAxMiwgNDIsIDIxNywgOTIsIDEyLCA0MiwgMjQ4LCA0NCwgMTAyLCAxMiwgNDIsIDI0OCwgNDQsIDEwNSwgMTIsIDQyLCAKKyAgICAyMjIsIDcxLCAxMiwgNDIsIDIyMSwgNzYsIDEyLCA0MiwgMjM1LCA3NywgMTAyLCAxMiwgNDIsIDIzNSwgNzcsIDEwNSwgMTIsIAorICAgIDQyLCAyMzUsIDc3LCAxNDcsIDEyLCA0MiwgMjA2LCAyLCAxMiwgNDIsIDI0NiwgMTAzLCAxMiwgNDIsIDIwMSwgNDgsIDEwMiwgCisgICAgMTIsIDQyLCAyMDEsIDQ4LCAxMDUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMSwgMTkwLCAxMiwgNDIsIDIwOSwgMTQ2LCAyMzMsIAorICAgIDEyNCwgMTIsIDQyLCAyMzMsIDEyNCwgMTIsIDQyLCAyNDcsIDIyMCwgMjA4LCAyMjcsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMCwgCisgICAgNTQsIDEyLCA0MiwgMjM2LCAyNTUsIDEyLCA0MiwgMjQ3LCAyMjAsIDI0NywgMTE4LCAxMiwgNDIsIDIwOSwgMTQ2LCAyMDEsIAorICAgIDEwNCwgMTIsIDQyLCAyMDEsIDEwNSwgMTAyLCAxMiwgNDIsIDIwMSwgMTA1LCAxMDUsIDEyLCA0MiwgMjQ2LCAxNDEsIDEyLCAKKyAgICA0MiwgMjQ3LCAyMjAsIDIzNSwgMTA4LCAxMiwgNDIsIDE2OCwgMTAyLCAxMiwgNDIsIDE2OCwgMTA1LCAxMiwgNDIsIDI0NywgCisgICAgMjIwLCAyMjQsIDg5LCAxMiwgNDIsIDI0NywgMjIwLCAyMzYsIDQxLCAxMiwgNDIsIDIyMSwgNjcsIDEwMiwgMTIsIDQyLCAKKyAgICAyMjEsIDY3LCAxMDUsIDEyLCA0MiwgMjEzLCAyMjIsIDEyLCA0MiwgMjQ4LCAxMjYsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwNiwgCisgICAgMjM4LCAyMjUsIDM0LCAxMiwgNDIsIDI0NywgMjIwLCAyMjUsIDM1LCAxMiwgNDIsIDI0NywgMjIwLCAyMDEsIDE2LCAxMiwgCisgICAgNDIsIDI0NywgMjIwLCAyMzcsIDE3LCAxMiwgNDIsIDIzOSwgMTEsIDEwMiwgMTIsIDQyLCAyMzksIDExLCAxMDUsIDEyLCAKKyAgICA0MiwgMjM5LCAxMSwgMTQ3LCAxMiwgNDIsIDI0NywgMjIwLCAyMzksIDEwLCAxMiwgNDIsIDIzNCwgMTM2LCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMzMsIDEyMCwgMTIsIDQyLCAyNDgsIDExMiwgMTIsIDQyLCAyMzUsIDE2OSwgMTIsIDQyLCAyNDcsIDIyMCwgCisgICAgMjM3LCA3MSwgMTIsIDQyLCAyNDcsIDIyMCwgMjQ4LCAxNjIsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMiwgMjcsIDEyLCA0MiwgCisgICAgMjA5LCAxNDYsIDIwMSwgMzksIDEyLCA0MiwgMjA5LCAxNDYsIDIwMCwgNDMsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzNiwgMjAyLCAKKyAgICAxMiwgNDIsIDIyNywgMjUwLCAyMzgsIDU1LCAxMiwgNDIsIDI0NywgMjIwLCAyMzgsIDU1LCAxMiwgNDIsIDIyNywgMjUwLCAKKyAgICAyMDUsIDE1OSwgMTIsIDQyLCAyNDcsIDIyMCwgMjA1LCAxNTksIDEyLCA0MiwgMjI3LCAyNTAsIDIzOSwgMTU4LCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMzksIDE1OCwgMTIsIDQyLCAyMDQsIDE4MiwgMTIsIDQyLCAyMjcsIDI1MCwgMjA0LCAxODIsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIwNCwgMTgyLCA3NSwgNDIsIDEwMiwgNzUsIDQyLCAyMjQsIDE3NiwgNzUsIDQyLCAyNDAsIDE4MiwgNzUsIAorICAgIDQyLCAyMDksIDc1LCA3NSwgNDIsIDIxMSwgMTk1LCA3NSwgNDIsIDExNywgNzUsIDQyLCAxMDUsIDc1LCA0MiwgMjI0LCAKKyAgICAyMDUsIDc1LCA0MiwgMjIyLCAxODAsIDc1LCA0MiwgMjI1LCAxMywgNzUsIDQyLCAyMzgsIDE1NCwgNzUsIDQyLCAxOTIsIAorICAgIDc1LCA0MiwgMTI3LCAyNDgsIDc4LCA3NSwgNDIsIDI0MywgMSwgNzUsIDQyLCAyMzIsIDIzMSwgNzUsIDQyLCAyMDcsIDIyLCAKKyAgICA3NSwgNDIsIDE3NiwgMjQ4LCA3OCwgNzUsIDQyLCAyMjYsIDk1LCA3NSwgNDIsIDIxNSwgNTEsIDc1LCA0MiwgMjAwLCAyMjgsIAorICAgIDc1LCA0MiwgMjA4LCAyMDYsIDc1LCA0MiwgNTEsIDE3NiwgMjQ4LCA3OCwgNzUsIDQyLCAyMzQsIDcwLCAyMzgsIDE3NCwgCisgICAgNzUsIDQyLCAyMDYsIDE2NiwgNzUsIDQyLCAyNDAsIDIzNiwgNzUsIDQyLCAyMTEsIDIwMCwgNzUsIDQyLCAyNDYsIDEyMCwgCisgICAgNzUsIDQyLCAyMTUsIDMsIDc1LCA0MiwgMjUxLCAxOTIsIDc1LCA0MiwgMjIxLCA1OCwgNzUsIDQyLCAyMzgsIDE3NCwgNzUsIAorICAgIDQyLCAyMzksIDE3LCA3NSwgNDIsIDIxMSwgMjIzLCA3NSwgNDIsIDIzNSwgMTE2LCA3NSwgNDIsIDIzNSwgMTE3LCAyMDksIAorICAgIDU1LCA3NSwgNDIsIDIzOCwgNTQsIDc1LCA0MiwgMjQ4LCAxNzQsIDc1LCA0MiwgMjAwLCAyNTAsIDc1LCA0MiwgMjQ2LCAKKyAgICAyMjcsIDc1LCA0MiwgMjEyLCAyMzcsIDc1LCA0MiwgMjI4LCAxMTMsIDc1LCA0MiwgMjA5LCA1MywgNzUsIDQyLCAyMjUsIAorICAgIDg1LCA3NSwgNDIsIDI0MywgMTEsIDc1LCA0MiwgMjA4LCAxOTcsIDc1LCA0MiwgMjIxLCA2MywgNzUsIDQyLCAyMTMsIDE1LCAKKyAgICA3NSwgNDIsIDIwMCwgMjM1LCA3NSwgNDIsIDIxNywgNzAsIDc1LCA0MiwgMjA0LCAxOTEsIDc1LCA0MiwgMjM5LCAxMzksIAorICAgIDc1LCA0MiwgMjA5LCAyNTAsIDIwNiwgNDcsIDc1LCA0MiwgMjM5LCAxODAsIDI0NiwgMTIwLCA3NSwgNDIsIDE2OCwgMjA4LCAKKyAgICA1MywgNzUsIDQyLCAxMjAsIDIzNCwgMTc0LCA3NSwgNDIsIDIxMCwgMCwgNzUsIDQyLCAyNDgsIDg1LCA3NSwgNDIsIDIwOSwgCisgICAgMzcsIDc1LCA0MiwgMjQ4LCA0OCwgNzUsIDQyLCAyMDgsIDkwLCA3NSwgNDIsIDIzNCwgMTI3LCA3NSwgNDIsIDIzNCwgMjE0LCAKKyAgICA3NSwgNDIsIDI0MCwgMTg1LCA3NSwgNDIsIDIzNCwgMTk5LCA3NSwgNDIsIDI0OCwgNjYsIDc1LCA0MiwgMjEzLCAyMTAsIAorICAgIDc1LCA0MiwgMjExLCAyMDgsIDc1LCA0MiwgMjQxLCAxMiwgNzUsIDQyLCAyNTAsIDExMywgNzUsIDQyLCAyMDgsIDE5MywgCisgICAgNzUsIDQyLCAyMTgsIDIxNCwgNzUsIDQyLCAyMDcsIDIyOCwgNzUsIDQyLCAyMTEsIDIzNCwgNzUsIDQyLCAyMjEsIDgxLCAKKyAgICA3NSwgNDIsIDIwNSwgMTA4LCA3NSwgNDIsIDIyNSwgMTYyLCA3NSwgNDIsIDIwOCwgNzYsIDc1LCA0MiwgMjQxLCAxNzMsIAorICAgIDc1LCA0MiwgMjAxLCA2MywgNzUsIDQyLCAyNDAsIDIxMiwgMjE4LCAyMTQsIDc1LCA0MiwgMjQ2LCA2NiwgNzUsIDQyLCAKKyAgICAyMzYsIDE3NiwgNzUsIDQyLCAyNDYsIDEzMiwgNzUsIDQyLCAyMDgsIDk1LCA3NSwgNDIsIDIwMSwgODIsIDc1LCA0MiwgCisgICAgMjM3LCA3NywgNzUsIDQyLCAyNDYsIDEyOCwgNzUsIDQyLCAyMzcsIDE1NCwgNzUsIDQyLCA1MywgMjAwLCAxOTUsIDc1LCAKKyAgICA0MiwgMTY3LCAyMDUsIDEwOSwgMjA1LCAzNywgNzUsIDQyLCAyMDksIDY3LCA3NSwgNDIsIDIzNywgMTY2LCA3NSwgNDIsIAorICAgIDI0MiwgMjU1LCA3NSwgNDIsIDI0MCwgMjAwLCA3NSwgNDIsIDIxNSwgMCwgNzUsIDQyLCAyMjcsIDI0MywgNzUsIDQyLCAKKyAgICAyMjIsIDQ5LCA3NSwgNDIsIDIwNSwgMjM5LCA3NSwgNDIsIDIwNywgMTc4LCA3NSwgNDIsIDIyNCwgMTk5LCA3NSwgNDIsIAorICAgIDIwMywgMTk1LCA3NSwgNDIsIDIzNywgMTEwLCA3NSwgNDIsIDI0OCwgMTE2LCA3NiwgMjQ2LCAxMDQsIDc1LCA0MiwgMjA5LCAKKyAgICAxNzgsIDc1LCA0MiwgMjM5LCAxODAsIDIwNiwgMTU4LCA3NSwgNDIsIDIwMSwgMzQsIDc1LCA0MiwgMjA5LCA4MywgNzUsIAorICAgIDQyLCAyNDAsIDI1NSwgNzUsIDQyLCAyMzgsIDIyLCA3NSwgNDIsIDIwOCwgMjMwLCA3NSwgNDIsIDQ4LCA3NSwgNDIsIDIwOCwgCisgICAgNzgsIDc1LCA0MiwgMjA4LCAyMTQsIDc1LCA0MiwgMjA1LCAxMzEsIDc1LCA0MiwgMjM1LCA4NiwgNzUsIDQyLCAyNDcsIAorICAgIDEwNCwgNzUsIDQyLCAyMDgsIDExMywgNzUsIDQyLCAyNDksIDkwLCA3NSwgNDIsIDIxMywgODMsIDc1LCA0MiwgMjA5LCAKKyAgICAxNTMsIDc1LCA0MiwgMjI3LCAyMzUsIDc1LCA0MiwgMjIwLCAxMywgNzUsIDQyLCAyMTAsIDU5LCA3NSwgNDIsIDIzNywgCisgICAgMTQyLCA3NSwgNDIsIDIxNywgOTIsIDc1LCA0MiwgMjUxLCA3OSwgNzUsIDQyLCAyMTUsIDEyMCwgNzUsIDQyLCAyMzksIDIxLCAKKyAgICA3NSwgNDIsIDI0OCwgNDMsIDc1LCA0MiwgMjIyLCA3MSwgNzUsIDQyLCAyMjEsIDE1OCwgNzUsIDQyLCAyMTAsIDE3NCwgNzUsIAorICAgIDQyLCAyNTAsIDIwNiwgNzUsIDQyLCAyMjEsIDc2LCA3NSwgNDIsIDIwNSwgMTYzLCA3NSwgNDIsIDIxNywgNDEsIDc1LCA0MiwgCisgICAgMjQ4LCAxMjAsIDc1LCA0MiwgMjA4LCA3NCwgNzUsIDQyLCAyNDYsIDc4LCA3NSwgNDIsIDIzNSwgNzYsIDc1LCA0MiwgMjA2LCAKKyAgICAyLCA3NSwgNDIsIDIyOCwgNzYsIDc1LCA0MiwgMjQ4LCAxMzIsIDc1LCA0MiwgMjAxLCAxMDUsIDIzOCwgMTc0LCA3NSwgNDIsIAorICAgIDI0NiwgMTAzLCA3NSwgNDIsIDIwMSwgNDcsIDc1LCA0MiwgMjExLCAxOTAsIDc1LCA0MiwgMjMzLCAxMjQsIDc1LCA0MiwgCisgICAgMjA4LCAyMjcsIDc1LCA0MiwgMjAzLCA4MywgNzUsIDQyLCAyNDksIDMsIDc1LCA0MiwgMjE1LCAxNjgsIDc1LCA0MiwgMjQ5LCAKKyAgICAxMTYsIDc1LCA0MiwgMjEwLCA1NCwgNzUsIDQyLCAyMTMsIDE2OSwgNzUsIDQyLCAyMTIsIDE1OCwgNzUsIDQyLCAyMzYsIAorICAgIDI1NSwgNzUsIDQyLCAyNDgsIDExOCwgNzUsIDQyLCAyNDcsIDExOCwgNzUsIDQyLCAyNDgsIDE0OSwgNzUsIDQyLCAyMjEsIAorICAgIDc4LCA3NSwgNDIsIDIwMSwgMTA0LCA3NSwgNDIsIDI0NiwgMTQxLCA3NSwgNDIsIDIwMSwgMTIsIDc1LCA0MiwgMjQwLCAKKyAgICAyNDcsIDc1LCA0MiwgMjAyLCAyMTgsIDc1LCA0MiwgMjM1LCAxMDgsIDc1LCA0MiwgMjI0LCA4OSwgNzUsIDQyLCAyMzYsIAorICAgIDQxLCA3NSwgNDIsIDIyMSwgNjYsIDc1LCA0MiwgMjA5LCA3NCwgNzUsIDQyLCAyMDksIDI1MCwgMjA3LCA1LCAyNDgsIDE2MiwgCisgICAgNzUsIDQyLCAyMTMsIDIyMiwgNzUsIDQyLCAyNDgsIDEyNiwgNzUsIDQyLCAyMDAsIDIxOCwgNzUsIDQyLCAyMzcsIDE4OSwgCisgICAgNzUsIDQyLCAyMjUsIDM0LCA3NSwgNDIsIDIwNiwgMjM4LCAyMjUsIDM0LCA3NSwgNDIsIDIyNSwgMzAsIDc1LCA0MiwgMjA5LCAKKyAgICAwLCA3NSwgNDIsIDIyNSwgMzUsIDc1LCA0MiwgMjAxLCAxNiwgNzUsIDQyLCAyMzcsIDE3LCA3NSwgNDIsIDIzOSwgMTAsIAorICAgIDc1LCA0MiwgMjM0LCAxMzYsIDc1LCA0MiwgMjM2LCAyMTcsIDc1LCA0MiwgMjMzLCAxMjAsIDc1LCA0MiwgMjQ4LCAxMTIsIAorICAgIDc1LCA0MiwgMjA2LCAyNDcsIDc1LCA0MiwgMjM0LCAyMjEsIDc1LCA0MiwgMjM3LCAxMDMsIDc1LCA0MiwgMjEyLCA1OCwgCisgICAgMjAxLCAxMiwgNzUsIDQyLCAyNDcsIDEwNiwgNzUsIDQyLCAyMzUsIDE2OSwgNzUsIDQyLCAyMzcsIDcxLCA3NSwgNDIsIAorICAgIDI0OCwgMTYyLCA3NSwgNDIsIDIxMiwgMjcsIDc1LCA0MiwgMjQxLCAxNTgsIDc1LCA0MiwgMjAxLCAzOSwgNzUsIDQyLCAKKyAgICAyMzQsIDEwNiwgNzUsIDQyLCAyMDAsIDQzLCA3NSwgNDIsIDIyMSwgMTY5LCA3NSwgNDIsIDI0OCwgMTQ0LCA3NSwgNDIsIAorICAgIDIzOCwgMTg2LCA3NSwgNDIsIDIzNiwgMjAyLCA3NSwgNDIsIDIwNSwgODAsIDc1LCA0MiwgMjM5LCAxNDIsIDc1LCA0MiwgCisgICAgMjEzLCAyMDQsIDc1LCA0MiwgMjE4LCAyMTYsIDc1LCA0MiwgMjM4LCA1NSwgNzUsIDQyLCAyMDUsIDE1OSwgNzUsIDQyLCAKKyAgICAyMzksIDE1OCwgNzUsIDQyLCAyMDQsIDE4MiwgNzUsIDQyLCAyMzcsIDIwLCAxNDEsIDI0MSwgMTE3LCAxNzEsIDQ5LCAyMDUsIAorICAgIDE4NiwgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCA4OCwgMjA1LCAxODYsIDU3LCAxNDEsIDI0MSwgMTE3LCAxNzEsIAorICAgIDQ5LCAyMDUsIDE4NiwgMTAxLCAyNiwgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCA4OCwgMjA1LCAxODYsIDEwMSwgCisgICAgMjYsIDU3LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIzNiwgMTgzLCAyMDcsIDIwMCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIAorICAgIDIwMSwgMjM2LCAyMDEsIDU2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgNTcsIDE0MSwgMjQxLCAKKyAgICAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMjUsIDI4LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIAorICAgIDIwMSwgMjAzLCAyMjUsIDIyNSwgMjgsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMDMsIDIyNSwgCisgICAgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIyNCwgNTQsIDIyNSwgMjgsIDE0MSwgCisgICAgMjQxLCAxMTcsIDE3MSwgMjE2LCAyNDUsIDE0MSwgMjA4LCAyNDQsIDE0MSwgMjQ2LCA3MCwgMTQxLCAyMzYsIDE4MywgMjA4LCAKKyAgICA3NiwgMjQwLCAyNDQsIDgxLCAyMjcsIDIzNiwgMjI4LCA5NiwgMjA4LCAxMTIsIDk5LCAxNDEsIDIyOCwgMTAsIDgxLCAxNDEsIAorICAgIDI0NiwgMTA2LCA4MSwgMTQxLCA0MSwgMTk5LCA4MSwgNDksIDI1MSwgNzEsIDE1OSwgNTEsIDI1MSwgNzEsIDE1OSwgNDksIAorICAgIDUzLCAyNTEsIDcxLCAxNTksIDUxLCA1MywgMjUxLCA3MSwgMTU5LCA0OSwgMjQzLCAxNiwgMTU5LCA1MSwgMjQzLCAxNiwgCisgICAgMTU5LCA0OSwgNjQsIDI0MywgMTYsIDE1OSwgNTEsIDY0LCAyNDMsIDE2LCAxNTksIDQ5LCA2MywgMjI0LCAyNDcsIDE1OSwgCisgICAgNTEsIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDY1LCA4MSwgMjM1LCAyMzgsIDgxLCA0OSwgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDE1OSwgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDQ5LCA2NCwgMjI0LCAyNDcsIDE1OSwgNTEsIDY0LCAyMjQsIDI0NywgCisgICAgMTU5LCA0OSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDUxLCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNDksIAorICAgIDY0LCA1MiwgMTU5LCA1MSwgNjQsIDUyLCAxNTksIDIwMSwgNzgsIDI0MSwgMjQ0LCAyMTMsIDEwNSwgNTMsIDIxNSwgMTUsIAorICAgIDIxNCwgNjMsIDgxLCA1MywgMjE1LCAxNSwgMjE0LCA2MywgODEsIDEyOCwgNTMsIDIxNSwgMTUsIDIxNCwgNjMsIDgxLCAKKyAgICAyMTUsIDY1LCAxMzQsIDIzNywgMTg5LCAyMzQsIDE3MSwgMjE4LCA5MywgMTAyLCAyMzQsIDE3MSwgMjE4LCA5MywgMTA1LCAKKyAgICAyMzQsIDE3MSwgMjE4LCA5MywgMTQ3LCAyMzQsIDE3MSwgMjE4LCA5MywgMTQ5LCAyMzQsIDE3MSwgMjE4LCA5MywgMTY0LCAKKyAgICAyMzQsIDE3MSwgMjE4LCA5MywgMTg3LCAyMzQsIDE3MSwgMjE4LCA5MywgMjEwLCAxMzUsIDIzNCwgMTcxLCAyMTgsIDkzLCAKKyAgICAxOTIsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMTksIDExMywgMTQxLCAyMjQsIDIyOSwgMTUwLCA4MSwgMTQxLCAyMTMsIDE5LCAKKyAgICAxNTAsIDgxLCAxNDEsIDI0MSwgMTI2LCAxNTAsIDgxLCAxNDEsIDIzOCwgMTUzLCAxNTAsIDgxLCAyOSwgMjA5LCAxMzksIAorICAgIDczLCAxNTAsIDgxLCAyOSwgNTMsIDczLCAxNTAsIDgxLCAyMDEsIDc0LCAyNDEsIDI0NCwgODMsIDIyNywgNjcsIDIxMywgCisgICAgMTMzLCA4MSwgODMsIDIyNywgNjcsIDIxMywgMTMzLCAzLCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgODMsIDIyNywgNjcsIAorICAgIDIxMywgMTMzLCAxMzQsIDIwMywgMjI1LCAyMzQsIDIxMywgODMsIDIyNywgNjcsIDIxMywgMTMzLCAzLCAyMDIsIDE4OSwgCisgICAgMjA5LCAxLCAxMzQsIDIwMywgMjI1LCAyMzQsIDIxMywgODMsIDIyNywgNjcsIDIxMywgMTMzLCAxMzQsIDIyNCwgNTQsIAorICAgIDIzNCwgMjEzLCA0NCwgMjE1LCA2NSwgODEsIDE0MSwgMjA2LCAxNzgsIDIyNCwgMTc3LCAyMzcsIDEzOSwgMjEwLCAxNTUsIAorICAgIDk5LCAyMzQsIDE3MSwgMjE4LCA5MywgMjA2LCAxNjYsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMDQsIDE1OSwgMjM0LCAxNzEsIAorICAgIDIxOCwgOTMsIDIwNiwgNjcsIDgzLCAxNDEsIDIyOCwgMTAsIDgxLCAyMjIsIDEyOCwgODEsIDIxNiwgMTEwLCAyNTEsIDEwNSwgCisgICAgODEsIDE0MSwgNTgsIDIyOCwgOTksIDE0MSwgMTY3LCAyMzcsIDk2LCAyMDgsIDI0NCwgMTc3LCAxLCA0LCA2MiwgMTc3LCAxLCAKKyAgICA2MiwgMTc3LCAxLCA0LCA3MCwgMTc3LCAxLCA3MCwgMTc3LCAxLCA0LCA2NiwgMTc3LCAxLCA2NiwgMTc3LCAxLCA0LCA3MiwgCisgICAgMTc3LCAxLCA3MiwgMTc3LCAxLCA0LCA3NCwgMTc3LCAxLCA3NCwgMTc3LCAxLCAxNjEsIDE3NywgMSwgMjM2LCA4OSwgMTc3LCAKKyAgICAxLCAyMjYsIDE2MywgMTc3LCAxLCAyMzUsIDE2MSwgMTc3LCAxLCAyMjYsIDE1LCAxNzcsIDEsIDIzNSwgNTAsIDE3NywgMSwgCisgICAgMjI3LCA4LCAxNzcsIDEsIDIzNiwgMTUsIDE3NywgMSwgMjI2LCA4OCwgMTc3LCAxLCAyMzUsIDExNiwgMTc3LCAxLCAyMTIsIAorICAgIDY0LCAxNzcsIDEsIDE5OSwgMTE0LCAxNzcsIDEsIDIwOSwgMTgyLCAxNzcsIDEsIDE5OSwgMzYsIDE3NywgMSwgMjA4LCAyNCwgCisgICAgMTc3LCAxLCAxOTksIDMsIDE3NywgMSwgMjExLCAyMDIsIDE3NywgMSwgMTk5LCA4OSwgMTc3LCAxLCAyMDksIDI5LCAxNzcsIAorICAgIDEsIDE5OSwgMTQsIDE3NywgMSwgMjA3LCAzNiwgMTc3LCAxLCAyNDIsIDU4LCAxNzcsIDEsIDIwNiwgMTUsIDE3NywgMSwgCisgICAgMjQxLCA3NiwgMTc3LCAxLCA0LCAyMDQsIDIxNSwgMTc3LCAxLCAyMDQsIDIxNSwgMTc3LCAxLCAyMzksIDEzNywgMTc3LCAxLCAKKyAgICAyMDYsIDIwMSwgMTc3LCAxLCAyNDEsIDE3NSwgMTc3LCAxLCAxMzgsIDE3NywgMSwgMjQwLCAyMTEsIDE3NywgMSwgMTg4LCAKKyAgICAxNzcsIDEsIDIxOSwgMTUwLCAxNzcsIDEsIDIxOCwgMTMzLCAxNzcsIDEsIDIyMCwgMzQsIDE3NywgMSwgMjE4LCAyNDEsIAorICAgIDE3NywgMSwgMTQ0LCAxNzcsIDEsIDI0OSwgMTM2LCAxNzcsIDEsIDE3MiwgMTc3LCAxLCAyMzQsIDc1LCAxNzcsIDEsIDI0OCwgCisgICAgMTg4LCAxNzcsIDEsIDIxNSwgMjA0LCAxNzcsIDEsIDIzMywgOTcsIDE3NywgMSwgMjQ4LCAzNiwgMTc3LCAxLCAyMTQsIAorICAgIDIyNCwgMTc3LCAxLCAyMzQsIDEzOSwgMTc3LCAxLCAyNDksIDgsIDE3NywgMSwgMjE2LCA3MywgMTc3LCAxLCAyMzMsIDIwNywgCisgICAgMTc3LCAxLCAyNDgsIDEyNCwgMTc3LCAxLCAyMTUsIDEwNiwgMTc3LCAxLCAxNzgsIDE3NywgMSwgMjIxLCAyMTEsIDE3NywgCisgICAgMSwgMjIxLCA0MSwgMTc3LCAxLCAyMjIsIDc2LCAxNzcsIDEsIDIyMSwgMTM2LCAxNzcsIDEsIDQsIDE4MywgMTc3LCAxLCAKKyAgICAxODMsIDE3NywgMSwgNCwgMTk5LCAyMTEsIDE3NywgMSwgMTk5LCAyMTEsIDE3NywgMSwgNCwgMTk5LCAyNDUsIDE3NywgMSwgCisgICAgMTk5LCAyNDUsIDE3NywgMSwgMjEzLCAyNTIsIDE3NywgMSwgMjEzLCA4OCwgMTc3LCAxLCAyMTIsIDE3NSwgMTc3LCAxLCAKKyAgICAyMTMsIDE5MCwgMTc3LCAxLCAyMTMsIDEsIDE3NywgMSwgNCwgMjAxLCAxMTQsIDE3NywgMSwgMjAxLCAxMTQsIDE3NywgMSwgCisgICAgMjAxLCAzMSwgMTc3LCAxLCAyMDEsIDY0LCAxNzcsIDEsIDIwMSwgMCwgMTc3LCAxLCAyMjAsIDIxNCwgMTc3LCAxLCAyMDEsIAorICAgIDE2NiwgMTc3LCAxLCA0LCAxNjEsIDE3NywgMSwgNCwgMjI3LCA4LCAzOCwgMjI3LCAzMiwgMjAyLCAxODksIDIwOSwgMSwgCisgICAgODEsIDM4LCAyMjcsIDMyLCAyMTAsIDE3MiwgMjA5LCAxLCA4MSwgMjI3LCAzMiwgMjAyLCAxODksIDIwOSwgMSwgODEsIAorICAgIDIyNywgMzIsIDIxMCwgMTcyLCAyMDksIDEsIDgxLCAxNzcsIDIyOCwgMTAsIDgxLCAxNzcsIDIwMiwgMTg5LCAyMjgsIDEwLCAKKyAgICA4MSwgMTc3LCAyNDEsIDM1LCAxOTksIDIyNiwgMjI3LCAzMiwgNTMsIDIzMywgMzMsIDY5LCAxLCA0LCA2MiwgNjksIDEsIAorICAgIDYyLCA2OSwgMSwgNCwgNzAsIDY5LCAxLCA3MCwgNjksIDEsIDQsIDY2LCA2OSwgMSwgNjYsIDY5LCAxLCA0LCA3MiwgNjksIAorICAgIDEsIDcyLCA2OSwgMSwgNCwgNzQsIDY5LCAxLCA3NCwgNjksIDEsIDE2MSwgNjksIDEsIDIzNiwgODksIDY5LCAxLCAyMjYsIAorICAgIDE2MywgNjksIDEsIDIzNSwgMTYxLCA2OSwgMSwgMjI2LCAxNSwgNjksIDEsIDIzNSwgNTAsIDY5LCAxLCAyMjcsIDgsIDY5LCAKKyAgICAxLCAyMzYsIDE1LCA2OSwgMSwgMjI2LCA4OCwgNjksIDEsIDIzNSwgMTE2LCA2OSwgMSwgMjEyLCA2NCwgNjksIDEsIDE5OSwgCisgICAgMTE0LCA2OSwgMSwgMjA5LCAxODIsIDY5LCAxLCAxOTksIDM2LCA2OSwgMSwgMjA4LCAyNCwgNjksIDEsIDE5OSwgMywgNjksIAorICAgIDEsIDIxMSwgMjAyLCA2OSwgMSwgMTk5LCA4OSwgNjksIDEsIDIwOSwgMjksIDY5LCAxLCAxOTksIDE0LCA2OSwgMSwgMjA3LCAKKyAgICAzNiwgNjksIDEsIDI0MiwgNTgsIDY5LCAxLCAyMDYsIDE1LCA2OSwgMSwgMjQxLCA3NiwgNjksIDEsIDQsIDIwNCwgMjE1LCAKKyAgICA2OSwgMSwgMjA0LCAyMTUsIDY5LCAxLCAyMzksIDEzNywgNjksIDEsIDIwNiwgMjAxLCA2OSwgMSwgMjQxLCAxNzUsIDY5LCAKKyAgICAxLCAxMzgsIDY5LCAxLCAyNDAsIDIxMSwgNjksIDEsIDE4OCwgNjksIDEsIDIxOSwgMTUwLCA2OSwgMSwgMjE4LCAxMzMsIAorICAgIDY5LCAxLCAyMjAsIDM0LCA2OSwgMSwgMjE4LCAyNDEsIDY5LCAxLCAxNDQsIDY5LCAxLCAyNDksIDEzNiwgNjksIDEsIDE3MiwgCisgICAgNjksIDEsIDIzNCwgNzUsIDY5LCAxLCAyNDgsIDE4OCwgNjksIDEsIDIxNSwgMjA0LCA2OSwgMSwgMjMzLCA5NywgNjksIDEsIAorICAgIDI0OCwgMzYsIDY5LCAxLCAyMTQsIDIyNCwgNjksIDEsIDIzNCwgMTM5LCA2OSwgMSwgMjQ5LCA4LCA2OSwgMSwgMjE2LCA3MywgCisgICAgNjksIDEsIDIzMywgMjA3LCA2OSwgMSwgMjQ4LCAxMjQsIDY5LCAxLCAyMTUsIDEwNiwgNjksIDEsIDE3OCwgNjksIDEsIAorICAgIDIyMSwgMjExLCA2OSwgMSwgMjIxLCA0MSwgNjksIDEsIDIyMiwgNzYsIDY5LCAxLCAyMjEsIDEzNiwgNjksIDEsIDQsIDE4MywgCisgICAgNjksIDEsIDE4MywgNjksIDEsIDQsIDE5OSwgMjExLCA2OSwgMSwgMTk5LCAyMTEsIDY5LCAxLCA0LCAxOTksIDI0NSwgNjksIAorICAgIDEsIDE5OSwgMjQ1LCA2OSwgMSwgMjEzLCAyNTIsIDY5LCAxLCAyMTMsIDg4LCA2OSwgMSwgMjEyLCAxNzUsIDY5LCAxLCAKKyAgICAyMTMsIDE5MCwgNjksIDEsIDIxMywgMSwgNjksIDEsIDQsIDIwMSwgMTE0LCA2OSwgMSwgMjAxLCAxMTQsIDY5LCAxLCAyMDEsIAorICAgIDMxLCA2OSwgMSwgMjAxLCA2NCwgNjksIDEsIDIwMSwgMCwgNjksIDEsIDIyMCwgMjE0LCA2OSwgMSwgMjAxLCAxNjYsIDY5LCAKKyAgICAxLCA0LCAxNjEsIDY5LCAxLCA0LCAyMjcsIDgsIDY5LCAxLCAyMDMsIDkwLCA2OSwgMSwgMjAyLCAyMzQsIDY5LCAxLCAyMDMsIAorICAgIDU5LCA2OSwgMSwgMjAyLCAxOTMsIDY5LCAxMDEsIDI0MCwgMTgyLCAyMjcsIDMyLCAyMTQsIDI0OCwgMjA5LCAxLCA4MSwgCisgICAgNjksIDIyOCwgMTAsIDgxLCA2OSwgMjAyLCAxODksIDIyOCwgMTAsIDgxLCA2OSwgMjQxLCAzNSwgMjI2LCA1NSwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MCwgMTAzLCAyNDgsIDEwMiwgMSwgMjE2LCAyMjYsIDI0OCwgMTAyLCAxLCAyMjMsIDI0MywgMjQ4LCAxMDIsIAorICAgIDEsIDIzOCwgNSwgMjQ4LCAxMDIsIDEsIDI0MiwgMTUzLCAyNDgsIDEwMiwgMSwgMjA3LCA4MywgMjQ4LCAxMDIsIDEsIDIyMCwgCisgICAgMjE0LCAyNDgsIDEwMiwgMSwgMTU2LCAyNDgsIDEwMiwgMSwgMjM2LCAxNTYsIDI0OCwgMTAyLCAxLCAyMjcsIDExOCwgMjQ4LCAKKyAgICAxMDIsIDEsIDIzNCwgMjQ3LCAyNDgsIDEwMiwgMSwgMjI3LCAyNTEsIDI0OCwgMTAyLCAxLCAyMTQsIDE2NywgMjQ4LCAxMDIsIAorICAgIDEsIDIwMCwgMTk1LCAyNDgsIDEwMiwgMSwgMTk5LCA3OCwgMjQ4LCAxMDIsIDEsIDI0NywgMzgsIDI0OCwgMTAyLCAxLCAKKyAgICAyMTAsIDExNiwgMjQ4LCAxMDIsIDEsIDE0NiwgMjQ4LCAxMDIsIDEsIDE5OSwgMTU3LCAyNDgsIDEwMiwgMSwgMjQ3LCAyMjMsIAorICAgIDI0OCwgMTAyLCAxLCAyMTIsIDEyMiwgMjQ4LCAxMDIsIDEsIDYyLCAyNDgsIDEwMiwgMSwgNzQsIDI0OCwgMTAyLCAxLCA3MiwgCisgICAgMjQ4LCAxMDIsIDEsIDIzOCwgMjQxLCAyNDgsIDEwMiwgMSwgMjUxLCAxNzYsIDI0OCwgMTAyLCAxLCAyMzgsIDIzNCwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MCwgMTM5LCAyNDgsIDEwMiwgMSwgMjE3LCAzLCAyNDgsIDEwMiwgMSwgMjUxLCA4NSwgMjQ4LCAxMDIsIDEsIAorICAgIDIzOCwgMTc5LCAyNDgsIDEwMiwgMSwgMjUxLCA3NiwgMjQ4LCAxMDIsIDEsIDIzOCwgMTY1LCAyNDgsIDEwMiwgMSwgMjM4LCAKKyAgICAxMTUsIDI0OCwgMTAyLCAxLCA3MCwgMjQ4LCAxMDIsIDEsIDY2LCAyNDgsIDEwMiwgMSwgMjI4LCA4LCAyNDgsIDEwMiwgMSwgCisgICAgMjAzLCAxNjgsIDI0OCwgMTAyLCAxLCAyMTksIDI1NSwgMjQ4LCAxMDIsIDEsIDIzNSwgMTIwLCAyNDgsIDEwMiwgMSwgMjI4LCAKKyAgICAxNTIsIDI5LCAxLCAyMjYsIDEyMSwgMjksIDEsIDIwOCwgMTcxLCAyOSwgMSwgMjI2LCAxMTQsIDI5LCAxLCAyMTksIDE0MywgCisgICAgMjksIDEsIDIxOSwgMTQxLCAyOSwgMSwgMjE5LCAxNDAsIDI5LCAxLCAyMDUsIDI1MywgMjksIDEsIDIwOCwgMTYwLCAyOSwgCisgICAgMSwgMjEzLCA3OCwgMjksIDEsIDIxMywgNzMsIDI5LCAxLCAyMTMsIDcwLCAyOSwgMSwgMjEzLCA2MywgMjksIDEsIDIxMywgCisgICAgNTgsIDI5LCAxLCAyMTMsIDUzLCAyOSwgMSwgMjEzLCA2NCwgMjksIDEsIDIxMywgNzYsIDI5LCAxLCAyMjEsIDE5NywgMjksIAorICAgIDEsIDIxNSwgMTkwLCAyOSwgMSwgMjA4LCAxNjgsIDI5LCAxLCAyMTUsIDE3OSwgMjksIDEsIDIwOSwgMTI5LCAyOSwgMSwgCisgICAgMjA4LCAxNjUsIDI5LCAxLCAyMjgsIDE3NCwgMjksIDEsIDI0NiwgMTY4LCAyOSwgMSwgMjA4LCAxNzUsIDI5LCAxLCAyNDYsIAorICAgIDIzMiwgMjksIDEsIDIyNiwgMTgzLCAyOSwgMSwgMjA2LCA4MCwgMjksIDEsIDIxNSwgMjI3LCAyOSwgMSwgMjM0LCA2NiwgCisgICAgMjksIDEsIDYyLCAyOSwgMSwgMjUxLCAyMjEsIDI5LCAxLCAxODMsIDI5LCAxLCAyMDAsIDk4LCAyOSwgMSwgMjM4LCAxNDIsIAorICAgIDI5LCAxLCA3MiwgMjksIDEsIDIwMCwgMzgsIDI5LCAxLCAyMDAsIDUxLCAyOSwgMSwgNzQsIDI5LCAxLCAyMDEsIDExNCwgCisgICAgMjksIDEsIDIwMSwgMTEwLCAyOSwgMSwgMjE3LCAxMjEsIDI5LCAxLCAxOTksIDI0NSwgMjksIDEsIDY2LCAyOSwgMSwgMjAxLCAKKyAgICA1MCwgMjksIDEsIDIwMSwgNjQsIDI5LCAxLCAyMDEsIDMxLCAyOSwgMSwgMTk5LCAyMTEsIDI5LCAxLCAyMzgsIDY5LCAyOSwgCisgICAgMSwgMjAwLCA5LCAyOSwgMSwgNzAsIDI5LCAyMzcsIDkzLCAyOSwgMSwgMjA4LCAxNjksIDI5LCAxLCAyMTksIDEzMywgMjksIAorICAgIDEsIDIxOSwgMTM1LCAyOSwgMSwgMjE5LCAxMzgsIDI5LCAxLCAyMTMsIDcxLCAyOSwgMSwgMjEzLCA1MiwgMjksIDEsIDIxMywgCisgICAgNjAsIDI5LCAxLCAyMTMsIDY1LCAyOSwgMSwgMjEzLCA1MCwgMjksIDEsIDIyMSwgMTkwLCAyOSwgMSwgMjIxLCAxODcsIDI5LCAKKyAgICAxLCAyMjEsIDE5MSwgMjksIDEsIDIyNywgNTMsIDI5LCAxLCAyMTUsIDE4NSwgMjksIDEsIDIxNSwgMTcxLCAyOSwgMSwgCisgICAgMjE1LCAxNzcsIDI5LCAxLCAyMTUsIDE3NCwgMjksIDEsIDIxNSwgMTg4LCAyOSwgMSwgMjE1LCAxNzIsIDI5LCAxLCAyMjcsIAorICAgIDUxLCAyOSwgMSwgMjI3LCA0OSwgMjksIDEsIDIwOSwgMTIyLCAyOSwgMSwgMjA5LCAxMjAsIDI5LCAxLCAyMDksIDExMiwgCisgICAgMjksIDEsIDIwOSwgMTE3LCAyOSwgMSwgMjA5LCAxMjcsIDI5LCAxLCAyMTYsIDE0NiwgMjksIDEsIDIwOCwgMTcyLCAyOSwgCisgICAgMSwgMjAwLCAyOCwgMjksIDEsIDIwMCwgMjQsIDI5LCAxLCAyMDAsIDI1LCAyOSwgMSwgMjI3LCA1MiwgMjksIDEsIDIwOCwgCisgICAgMTczLCAyOSwgMSwgMjAwLCAzNCwgMjksIDEsIDE5OSwgMjM5LCAyOSwgMSwgMTk5LCAyMzgsIDI5LCAxLCAxOTksIDI0MSwgCisgICAgMjksIDEsIDE5OSwgMjAyLCAyOSwgMSwgMTk5LCAyMDMsIDI5LCAxLCAxOTksIDIwNiwgMjksIDEsIDI1MCwgMjQ1LCAyOSwgCisgICAgMSwgMjUwLCAyMzksIDE0MSwgMjUxLCA1OCwgMjI0LCAxNjUsIDgxLCAxNDEsIDI1MSwgNTgsIDIxMywgMTA2LCA4MSwgMTQxLCAKKyAgICAyNTEsIDU4LCAxMTIsIDgxLCAxNDEsIDI1MSwgNTgsIDEyMCwgODEsIDE0MSwgMjUxLCA1OCwgMTI2LCA4MSwgMTQxLCAyNTEsIAorICAgIDU4LCAyMzYsIDIyOSwgODEsIDE0MSwgMjUxLCA1OCwgMjA1LCAxNTgsIDgxLCAxNDEsIDI1MSwgNTgsIDEwMSwgODEsIDE0MSwgCisgICAgMjUxLCA1OCwgMjQ4LCA5MywgODEsIDE0MSwgMjUxLCA1OCwgMjM3LCA3MywgODEsIDE0MSwgMjUxLCA1OCwgMjExLCAxOTYsIAorICAgIDgxLCAxNDEsIDI1MSwgNTgsIDIwNiwgNzUsIDgxLCAxNDEsIDI1MSwgNTgsIDIzNiwgMjIyLCA4MSwgMTQxLCAyNTEsIDU4LCAKKyAgICAyMzQsIDEyNCwgODEsIDE0MSwgMjUxLCA1OCwgMjM5LCAxOCwgODEsIDE0MSwgMjUxLCA1OCwgMjIyLCAxODEsIDgxLCAyNDgsIAorICAgIDEwMiwgMSwgMjQ4LCAzNiwgMjQ4LCAxMDIsIDEsIDE5OSwgMzYsIDI0OCwgMTAyLCAxLCAyMjcsIDIwNywgMjQ4LCAxMDIsIAorICAgIDEsIDIzNSwgNTAsIDI0OCwgMTAyLCAxLCAyMzgsIDI1NSwgMjQ4LCAxMDIsIDEsIDIzOCwgMTYyLCAyNDgsIDEwMiwgMSwgCisgICAgMjE3LCA2MywgMjQ4LCAxMDIsIDEsIDIxNywgNjcsIDI0OCwgMTAyLCAxLCAyMjgsIDM1LCAyNDgsIDEwMiwgMSwgMjUxLCAKKyAgICA2MCwgMjQ4LCAxMDIsIDEsIDIyOCwgODMsIDI0OCwgMTAyLCAxLCAyMDMsIDIzMywgMjQ4LCAxMDIsIDEsIDIyOCwgMTM0LCAKKyAgICAyNDgsIDEwMiwgMSwgMjE5LCAyMzMsIDI0OCwgMTAyLCAxLCAyNTEsIDE3MCwgMjQ4LCAxMDIsIDEsIDI1MCwgMTM0LCAyNDgsIAorICAgIDEwMiwgMSwgMjUxLCAxMDEsIDI0OCwgMTAyLCAxLCAyMTcsIDg2LCAyNDgsIDEwMiwgMSwgMjE3LCA2OSwgMjQ4LCAxMDIsIAorICAgIDEsIDIyOCwgODAsIDI0OCwgMTAyLCA0NywgMSwgMjE2LCAyMjYsIDI0OCwgMTAyLCA0NywgMSwgMjA3LCA4MywgMjQ4LCAKKyAgICAxMDIsIDQ3LCAxLCAyMjcsIDExOCwgMjQ4LCAxMDIsIDQ3LCAxLCAyMzQsIDI0NywgMjQ4LCAxMDIsIDEsIDIzNSwgMjAwLCAKKyAgICAyNDgsIDEwMiwgMSwgMjI0LCAyMjQsIDI0OCwgMTAyLCAxLCAxOTgsIDIzOSwgMTIsIDIwOCwgNDcsIDIwNywgODMsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMDEsIDQyLCAxMiwgMjA4LCA0NywgMjAwLCAxNzAsIDEyLCAyMDgsIDQ3LCAyNDcsIDIzNiwgMTIsIDIwOCwgCisgICAgNDcsIDIwNywgMTg3LCAxMiwgMjA4LCA0NywgMjMzLCAyMywgMTIsIDIwOCwgNDcsIDIzMywgMjcsIDEyLCAyMDgsIDQ3LCAKKyAgICAyMzMsIDEwNiwgMTIsIDIwOCwgNDcsIDIzMywgMjQsIDEyLCAyMDgsIDQ3LCAyMDcsIDg2LCAxMiwgMjA4LCA0NywgMjMzLCAKKyAgICAyNiwgMTIsIDIwOCwgNDcsIDIzMywgMjIsIDEyLCAyMDgsIDQ3LCAyMzMsIDEwNCwgMTIsIDIwOCwgNDcsIDIzMywgMjUsIAorICAgIDEyLCAyMDgsIDQ3LCAyMzMsIDIxLCAxMiwgMjA4LCA0NywgMjIwLCAyMTQsIDEyLCAyMDgsIDQ3LCAyMzQsIDI0NywgMTIsIAorICAgIDIwOCwgNDcsIDIxMiwgMTIyLCAxMiwgMjA4LCA0NywgMjE2LCAyMjYsIDEyLCAyMDgsIDQ3LCAyMDgsIDI0NywgMTIsIDIwOCwgCisgICAgNDcsIDI0MiwgMTUzLCAxMiwgMjA4LCA0NywgMjMzLCAyOCwgMTIsIDIwOCwgNDcsIDIzNCwgODUsIDEyLCAyMDgsIDQ3LCAKKyAgICAyMDcsIDk1LCAxMiwgMjA4LCA0NywgMjA3LCAxNjYsIDEyLCAyMDgsIDQ3LCAyMDgsIDEyMywgMTIsIDIwOCwgNDcsIDIxMCwgCisgICAgMTIyLCAxMiwgMjA4LCA0NywgMjE2LCA3NywgMTIsIDIwOCwgNDcsIDIxNCwgMTY5LCAxMiwgMjA4LCA0NywgMjA1LCAxODcsIAorICAgIDEyLCAyMDgsIDQ3LCAyMDcsIDg1LCAxMiwgMjA4LCA0NywgMjA3LCAxNzcsIDEyLCAyMDgsIDQ3LCAyMzMsIDM3LCAxMiwgCisgICAgMjA4LCA0NywgMjMzLCAyMCwgMTIsIDIwOCwgNDcsIDIxNSwgMjQ3LCAxMiwgMjA4LCA0NywgMjE0LCAxNjcsIDY5LCAxLCA0LCAKKyAgICAyMjYsIDE1LCA2OSwgMSwgNCwgMjA5LCAxODIsIDY5LCAxLCA0LCAyMDgsIDI0LCA2OSwgMSwgNCwgMTM4LCA2OSwgMSwgNCwgCisgICAgMjE4LCAxMzMsIDY5LCAxLCA0LCAxNDQsIDY5LCAxLCA0LCAyMzQsIDc1LCA2OSwgMSwgNCwgMjMzLCA5NywgNjksIDEsIDQsIAorICAgIDIzNCwgMTM5LCA2OSwgMSwgNCwgMjMzLCAyMDcsIDY5LCAxLCA0LCAyMjEsIDQxLCA2OSwgMSwgNCwgMjEzLCAyNTIsIDY5LCAKKyAgICAxLCA0LCAyMTMsIDg4LCA2OSwgMSwgNCwgMjEyLCAxNzUsIDY5LCAxLCA0LCAyMTMsIDE5MCwgNjksIDEsIDQsIDIxMywgMSwgCisgICAgMTA2LCAyOSwgMjI2LCAxMjEsIDEwNiwgMjksIDIxOSwgMTQzLCAxMDYsIDI5LCAyMDUsIDI1MywgMTA2LCAyOSwgMjEzLCAKKyAgICA3OCwgMTA2LCAyOSwgMjIxLCAxOTcsIDEwNiwgMjksIDIxNSwgMTkwLCAxMDYsIDI5LCAyMDksIDEyOSwgMTA2LCAyOSwgCisgICAgMjI4LCAxNzQsIDEwNiwgMjksIDI0NiwgMTY4LCAxMDYsIDI5LCAyNDYsIDIzMiwgMTA2LCAyOSwgMjI2LCAxODMsIDEwNiwgCisgICAgMjksIDIwNiwgODAsIDEwNiwgMjksIDIxNSwgMjI3LCAxMDYsIDI5LCAyMzQsIDY2LCAxMDYsIDI5LCAyMjYsIDEyMiwgNjIsIAorICAgIDEwNiwgMjksIDIxOSwgMTQ0LCA2MiwgMTA2LCAyOSwgMjA1LCAyNTQsIDYyLCAxMDYsIDI5LCAyMTMsIDc5LCA2MiwgMTA2LCAKKyAgICAyOSwgMjIxLCAxOTgsIDYyLCAxMDYsIDI5LCAyMTUsIDE5MSwgNjIsIDEwNiwgMjksIDIwOSwgMTMwLCA2MiwgMTA2LCAyOSwgCisgICAgMjI4LCAxNzUsIDYyLCAxMDYsIDI5LCAyNDYsIDE2OSwgNjIsIDEwNiwgMjksIDI0NiwgMjMzLCA2MiwgMTA2LCAyOSwgMjI2LCAKKyAgICAxODQsIDYyLCAxMDYsIDI5LCAyMDYsIDgxLCA2MiwgMTA2LCAyOSwgMjE1LCAyMjgsIDYyLCAxMDYsIDI5LCAyMzQsIDY3LCAKKyAgICA2MiwgMTA2LCAyOSwgMjQ2LCAxNjksIDY2LCAxMDYsIDIyNiwgNTksIDE3MSwgMjE3LCAxMDEsIDEwNiwgMjI2LCA1OSwgCisgICAgMTcxLCAxNjMsIDIzMywgOTcsIDEwNiwgMTk4LCAxOTgsIDEwMiwgMTA2LCAxOTgsIDE5OCwgMTA1LCAxMDYsIDE5OCwgMTk4LCAKKyAgICAxNDcsIDEwNiwgMTk4LCAxOTgsIDE0OSwgMTA2LCAxOTgsIDE5OCwgMTY0LCAxMDYsIDE5OCwgMTk4LCAxODcsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIxMCwgMTM1LCAxMDYsIDE5OCwgMTk4LCAxOTIsIDEwNiwgMTk4LCAxOTgsIDIxOSwgMTEzLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDYsIDE2NiwgMTA2LCAxOTgsIDE5OCwgMjIxLCA4MSwgMTA2LCAxOTgsIDE5OCwgMjM3LCA3NywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjAxLCA4MiwgMTA2LCAxOTgsIDE5OCwgMjAwLCAyNDMsIDEwNiwgMTk4LCAxOTgsIDIyMiwgMjAsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIzOSwgMTcsIDEwNiwgMTk4LCAxOTgsIDIwNywgMjI4LCAxMDYsIDE5OCwgMTk4LCAyMDgsIDc5LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMzQsIDE0OCwgMTA2LCAxOTgsIDE5OCwgMjA5LCAyNSwgMTA2LCAxOTgsIDE5OCwgMjIwLCAxMzUsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwOCwgMjI5LCAxMDYsIDE5OCwgMTk4LCAyMzcsIDg4LCAxMDYsIDE5OCwgMTk4LCAyNDMsIDYxLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMjUsIDE2NSwgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMjcsIDEwNiwgMTk4LCAxOTgsIDI0NywgMTY4LCAKKyAgICAxMDYsIDE5OCwgMTk4LCAyMDgsIDI5LCAxMDYsIDE5OCwgMTk4LCAyMDcsIDIxMCwgMTA2LCAxOTgsIDE5OCwgMjM4LCAxNTIsIAorICAgIDEwNiwgMTk4LCAxOTgsIDIxMywgMTE5LCAxMDYsIDE5OCwgMTk4LCAyNTEsIDEyMCwgMTA2LCAxOTgsIDE5OCwgMjM3LCAKKyAgICAxMTksIDEwNiwgMTk4LCAxOTgsIDIxMywgMTE3LCAxMDYsIDE5OCwgMTk4LCAyMTAsIDE3NCwgMTA2LCAxOTgsIDE5OCwgCisgICAgMjEzLCAxODksIDQ0LCAxOTgsIDE5OCwgMjE0LCA3OCwgNDQsIDE5OCwgMTk4LCAyMjYsIDE0NiwgNDQsIDE5OCwgMTk4LCAKKyAgICAyMTEsIDIyMSwgNDQsIDE5OCwgMTk4LCAyMjYsIDU1LCA0NCwgNDEsIDIwNiwgMTY3LCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIAorICAgIDQ0LCA0MSwgMjA0LCAxNjAsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMDYsIDY4LCAyMTcsIDc5LCA2MywgCisgICAgMjA4LCAxOTMsIDQ0LCA0MSwgMjM2LCAyMzYsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMzcsIDEwNSwgMjE3LCAKKyAgICA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIwOSwgOTMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMTAsIAorICAgIDEzMCwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIzOCwgMjIzLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDIxNiwgCisgICAgMTA2LCA1NCwgNDQsIDQxLCAyMDQsIDE2MCwgMTAyLCA0NCwgNDEsIDIwNCwgMTYwLCAxMDUsIDQ0LCA0MSwgMjA0LCAxNjAsIAorICAgIDE0NywgNDQsIDQxLCAyMDQsIDE2MCwgMTQ5LCA0NCwgNDEsIDIwNCwgMTYwLCAxNjQsIDQ0LCA0MSwgMjA0LCAxNjAsIDE4NywgCisgICAgNDQsIDQxLCAyMDQsIDE2MCwgMjEwLCAxMzUsIDQ0LCA0MSwgMjA0LCAxNjAsIDE5MiwgNDQsIDQxLCAyMDQsIDE2MCwgMjE5LCAKKyAgICAxMTMsIDQ0LCA0MSwgMjA2LCA2NywgNDQsIDQxLCAyMDYsIDY4LCAxMDIsIDQ0LCA0MSwgMjA2LCA2OCwgMTA1LCA0NCwgNDEsIAorICAgIDIwNiwgNjgsIDE0NywgNDQsIDQxLCAyMDYsIDY4LCAxNDksIDQ0LCA0MSwgMjA2LCA2OCwgMTY0LCA0NCwgMjksIDIyNiwgCisgICAgMTIxLCA0NCwgMjksIDIxOSwgMTQzLCA0NCwgMjksIDIwNSwgMjUzLCA0NCwgMjksIDIxMywgNzgsIDQ0LCAyOSwgMjIxLCAKKyAgICAxOTcsIDQ0LCAyOSwgMjE1LCAxOTAsIDQ0LCAyOSwgMjA5LCAxMjksIDQ0LCAyOSwgMjI4LCAxNzQsIDQ0LCAyOSwgMjQ2LCAKKyAgICAxNjgsIDQ0LCAyOSwgMjQ2LCAyMzIsIDQ0LCAyOSwgMjI2LCAxODMsIDQ0LCAyOSwgMjA2LCA4MCwgNDQsIDI5LCAyMTUsIAorICAgIDIyNywgNDQsIDI5LCAyMzQsIDY2LCA0NCwgMjksIDIyNiwgMTIyLCA2MiwgNDQsIDI5LCAyMTksIDE0NCwgNjIsIDQ0LCAyOSwgCisgICAgMjA1LCAyNTQsIDYyLCA0NCwgMjksIDIxMywgNzksIDYyLCA0NCwgMjksIDIyMSwgMTk4LCA2MiwgNDQsIDI5LCAyMTUsIAorICAgIDE5MSwgNjIsIDQ0LCAyOSwgMjA5LCAxMzAsIDYyLCA0NCwgMjksIDIyOCwgMTc1LCA2MiwgNDQsIDI5LCAyNDYsIDE2OSwgCisgICAgNjIsIDQ0LCAyOSwgMjQ2LCAyMzMsIDYyLCA0NCwgMjksIDIyNiwgMTg0LCA2MiwgNDQsIDI5LCAyMDYsIDgxLCA2MiwgNDQsIAorICAgIDI5LCAyMTUsIDIyOCwgNjIsIDQ0LCAyOSwgMjM0LCA2NywgNjIsIDQ0LCAyMjYsIDU5LCAxNzEsIDI0NywgMjcsIDQ0LCAKKyAgICAyMjYsIDU5LCAxNzEsIDIyNywgMTQzLCA0NCwgMjksIDIyOCwgMTc1LCA2NiwgMjI2LCA1OSwgMjA4LCAxMTIsIDk5LCA0NCwgCisgICAgMTk4LCAxOTgsIDEwMiwgNDQsIDE5OCwgMTk4LCAxMDUsIDQ0LCAxOTgsIDE5OCwgMTQ3LCA0NCwgMTk4LCAxOTgsIDE0OSwgCisgICAgNDQsIDE5OCwgMTk4LCAxNjQsIDQ0LCAxOTgsIDE5OCwgMTg3LCA0NCwgMTk4LCAxOTgsIDIxMCwgMTM1LCA0NCwgMTk4LCAKKyAgICAxOTgsIDE5MiwgNDQsIDE5OCwgMTk4LCAyMTksIDExMywgNDQsIDE5OCwgMTk4LCAyMDYsIDE2NiwgNDQsIDE5OCwgMTk4LCAKKyAgICAyMjEsIDgxLCA0NCwgMTk4LCAxOTgsIDIzNywgNzcsIDQ0LCAxOTgsIDE5OCwgMjAxLCA4MiwgNDQsIDE5OCwgMTk4LCAyMDAsIAorICAgIDI0MywgNDQsIDE5OCwgMTk4LCAyMjIsIDIwLCA0NCwgMTk4LCAxOTgsIDIzOSwgMTcsIDQ0LCAxOTgsIDE5OCwgMjA3LCAKKyAgICAyMjgsIDQ0LCAxOTgsIDE5OCwgMjA4LCA3OSwgNDQsIDE5OCwgMTk4LCAyMzQsIDE0OCwgNDQsIDE5OCwgMTk4LCAyMDksIAorICAgIDI1LCA0NCwgMTk4LCAxOTgsIDIyMCwgMTM1LCA0NCwgMTk4LCAxOTgsIDIwOCwgMjI5LCA0NCwgMTk4LCAxOTgsIDIzNywgCisgICAgODgsIDQ0LCAxOTgsIDE5OCwgMjQzLCA2MSwgNDQsIDE5OCwgMTk4LCAyMjUsIDE2NSwgNDQsIDE5OCwgMTk4LCAyMTEsIAorICAgIDE5NCwgNDQsIDE5OCwgMTk4LCAyMjIsIDE4NCwgNDQsIDE5OCwgMTk4LCAyMzcsIDEyOSwgNDQsIDE5OCwgMTk4LCAyMDcsIAorICAgIDI0MCwgNDQsIDE5OCwgMTk4LCAyMzgsIDQ3LCA0NCwgMTk4LCAxOTgsIDIxNSwgMTAsIDQ0LCAxOTgsIDE5OCwgMjUwLCAKKyAgICAxNDMsIDQ0LCAxOTgsIDE5OCwgMjI4LCAxMSwgNDQsIDE5OCwgMTk4LCAyMTMsIDExNywgNDQsIDE5OCwgMTk4LCAyNDMsIAorICAgIDIwLCA0NCwgMTk4LCAxOTgsIDI0MywgMTAsIDQ0LCAxOTgsIDE5OCwgMjM0LCA1OSwgNDQsIDE5OCwgMTk4LCAyNDcsIDU1LCAKKyAgICA0NCwgMTk4LCAxOTgsIDIyNCwgNTksIDQ0LCAxOTgsIDE5OCwgMjI1LCAyOCwgNDQsIDE5OCwgMTk4LCAyMTMsIDQ2LCA0NCwgCisgICAgMTk4LCAxOTgsIDIyMiwgNjcsIDQ0LCAxOTgsIDE5OCwgMjEzLCAxNDQsIDQ0LCAxOTgsIDE5OCwgMjA4LCAyOSwgNDQsIAorICAgIDE5OCwgMTk4LCAyMDcsIDIxMCwgNDQsIDE5OCwgMTk4LCAyMzgsIDE1MiwgNDQsIDE5OCwgMTk4LCAyMTMsIDExOSwgNDQsIAorICAgIDE5OCwgMTk4LCAyNTEsIDEyMCwgNDQsIDE5OCwgMTk4LCAyMTksIDEyOSwgNDQsIDQxLCAyMDYsIDY4LCAxODcsIDQ0LCA0MSwgCisgICAgMjA2LCA2OCwgMjEwLCAxMzUsIDQ0LCA0MSwgMjA2LCA2OCwgMTkyLCA0NCwgNDEsIDIwNiwgNjgsIDIxOSwgMTEzLCA0NCwgCisgICAgNDEsIDIzNiwgMjM1LCA0NCwgNDEsIDIzNiwgMjM2LCAxMDIsIDQ0LCA0MSwgMjM2LCAyMzYsIDEwNSwgNDQsIDQxLCAyMzYsIAorICAgIDIzNiwgMTQ3LCA0NCwgNDEsIDIzNiwgMjM2LCAxNDksIDQ0LCA0MSwgMjM2LCAyMzYsIDE2NCwgNDQsIDQxLCAyMzYsIDIzNiwgCisgICAgMTg3LCA0NCwgNDEsIDIzNiwgMjM2LCAyMTAsIDEzNSwgNDQsIDQxLCAyMzYsIDIzNiwgMTkyLCA0NCwgNDEsIDIzNiwgMjM2LCAKKyAgICAyMTksIDExMywgNDQsIDQxLCAyMzcsIDEwNCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjcsIDIzOCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzcsIDE0MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjIsIDE1MiwgMTQxLCAyMDYsIDE3OCwgCisgICAgMTYsIDM2LCAyNTEsIDMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjIyLCAxMTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjI3LCAxNDAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjI3LCAxNDEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjUwLCAKKyAgICAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjEwLCAxNTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjE3LCAxMjcsIAorICAgIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjE4LCAyMDIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAxNzAsIDUyLCAKKyAgICAyMzQsIDg1LCA1MiwgMjM4LCAxMTEsIDUyLCAyMzgsIDU3LCAyMjQsIDE4MiwgMjI0LCAyMDksIDU0LCA0NCwgNjksIDYyLCAKKyAgICA0NCwgNjksIDcwLCA0NCwgNjksIDY2LCA0NCwgNjksIDcyLCA0NCwgNjksIDc0LCA0NCwgNjksIDE2MSwgNDQsIDY5LCAyMjYsIAorICAgIDE2MywgNDQsIDY5LCAyMjYsIDE1LCA0NCwgNjksIDIyNywgOCwgNDQsIDY5LCAyMjYsIDg4LCA0NCwgNjksIDIxMiwgNjQsIAorICAgIDQ0LCA2OSwgMjA5LCAxODIsIDQ0LCA2OSwgMjA4LCAyNCwgNDQsIDY5LCAyMTEsIDIwMiwgNDQsIDY5LCAyMDksIDI5LCA0NCwgCisgICAgNjksIDIwNywgMzYsIDQ0LCA2OSwgMjA2LCAxNSwgNDQsIDY5LCAyMDQsIDIxNSwgNDQsIDY5LCAyMDYsIDIwMSwgNDQsIDY5LCAKKyAgICAxMzgsIDQ0LCA2OSwgMTg4LCA0NCwgNjksIDIxOSwgMTUwLCA0NCwgNjksIDIxOCwgMTMzLCA0NCwgNjksIDIyMCwgMzQsIAorICAgIDQ0LCA2OSwgMjE4LCAyNDEsIDQ0LCA2OSwgMTQ0LCA0NCwgNjksIDIzNCwgNzUsIDQ0LCA2OSwgMjMzLCA5NywgNDQsIDY5LCAKKyAgICAyMzQsIDEzOSwgNDQsIDY5LCAyMzMsIDIwNywgNDQsIDY5LCAxNzgsIDQ0LCA2OSwgMjIxLCAyMTEsIDQ0LCA2OSwgMjIxLCAKKyAgICA0MSwgNDQsIDY5LCAyMjIsIDc2LCA0NCwgNjksIDIyMSwgMTM2LCA0NCwgNjksIDE4MywgNDQsIDY5LCAxOTksIDIxMSwgNDQsIAorICAgIDY5LCAxOTksIDI0NSwgNDQsIDY5LCAyMTMsIDI1MiwgNDQsIDY5LCAyMTMsIDg4LCA0NCwgNjksIDIxMiwgMTc1LCA0NCwgCisgICAgNjksIDIxMywgMTkwLCA0NCwgNjksIDIxMywgMSwgNDQsIDY5LCAyMDEsIDExNCwgNDQsIDY5LCAyMDEsIDMxLCA0NCwgNjksIAorICAgIDIwMSwgNjQsIDQ0LCA2OSwgMjAxLCAwLCA1MiwgMjUxLCAyNywgNTIsIDI1MCwgMTkwLCA1MiwgMjUxLCA1NCwgNTIsIDI1MiwgCisgICAgOTYsIDUyLCAyMjgsIDg1LCA1MiwgMjI4LCA1MywgNTIsIDIwMywgMjMxLCA1MiwgMjM4LCA4NCwgNTIsIDIzOCwgMjUyLCAKKyAgICA1MiwgMjE3LCA2NiwgNTIsIDIxNywgNTksIDUyLCAyMjcsIDgwLCA1MiwgMjI3LCA0NSwgNTIsIDIyNywgNDIsIDUyLCAyMzYsIAorICAgIDQ1LCA1MiwgMjM2LCA1NCwgNTIsIDIzNSwgMTUwLCA1MiwgMjM1LCAxNDYsIDUyLCAyMjUsIDE5NCwgNTIsIDIzNSwgMTM4LCAKKyAgICA1MiwgMjI2LCAxMzgsIDUyLCAyMjYsIDEzNywgNTIsIDIyNiwgMTM2LCA1MiwgMjI2LCAxMzUsIDUyLCAyMzUsIDIwLCA1MiwgCisgICAgMjM1LCAxOSwgNTIsIDIyNSwgMjQyLCA1MiwgMjI1LCAyNDQsIDUyLCAyMjcsIDEsIDUyLCAyMjYsIDU3LCA1MiwgMjI2LCAKKyAgICA2NSwgNTIsIDIxMiwgNDUsIDUyLCAyMTIsIDYsIDUyLCAyMDksIDExMCwgNTIsIDIxMCwgMTU4LCA1MiwgMjEwLCAxNTcsIAorICAgIDUyLCAyNDIsIDU0LCA1MiwgMjQxLCAxMTMsIDUyLCAyNDAsIDE4MywgNTIsIDIwNSwgMTc2LCA1MiwgMjIwLCAxMzAsIDUyLCAKKyAgICAyMTgsIDIwMywgNTIsIDIzNCwgMjE4LCA1MiwgMjE2LCAyMDUsIDUyLCAyMTYsIDIwNCwgNTIsIDI0OSwgMTMzLCA1MiwgCisgICAgMjE1LCAyMDEsIDUyLCAyMTUsIDE2NCwgNTIsIDIxNSwgMTY1LCA1MiwgMjQ4LCAxNTgsIDUyLCAyMzMsIDk1LCA1MiwgMjMzLCAKKyAgICA5MCwgNTIsIDI0NywgMjUwLCA1MiwgMjMzLCA3NCwgNTIsIDIzNCwgMTExLCA1MiwgMjE2LCAxLCA1MiwgMjE2LCA0MiwgNTIsIAorICAgIDIzNCwgOTQsIDUyLCAyMTYsIDM4LCA1MiwgMjE2LCA1NiwgNTIsIDI0OCwgMjQ3LCA1MiwgMjE1LCA5NSwgNTIsIDI0OCwgCisgICAgOTgsIDUyLCAyMzMsIDE5MSwgNTIsIDIxNSwgODIsIDUyLCAyMzMsIDE4MiwgNTIsIDIzMywgMTg0LCA1MiwgMjIyLCAxOTYsIAorICAgIDUyLCAyMjIsIDE5MiwgNTIsIDIyMiwgMjAxLCA1MiwgMjIyLCAxMzksIDUyLCAyMjIsIDE2OCwgNTIsIDIyMSwgMTc2LCA1MiwgCisgICAgMjIxLCAxNTEsIDUyLCAyMjEsIDE1MCwgNTIsIDIyMiwgNTYsIDUyLCAyMjIsIDUzLCA1MiwgMjIyLCA1NywgNTIsIDIwMCwgCisgICAgMTA4LCA1MiwgMjAwLCAxMDYsIDUyLCAxOTksIDIwMCwgNTIsIDIxMywgMTcsIDUyLCAyMTMsIDIxLCA1MiwgMjEyLCAxNDgsIAorICAgIDUyLCAyMTIsIDE0MiwgNTIsIDIxMywgMTQxLCA1MiwgMjEzLCAxMzgsIDUyLCAyMDEsIDgwLCAxNDEsIDIwNiwgMTc4LCAxNiwgCisgICAgMzYsIDIzMywgMTE0LCAxOTksIDgxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxMDIsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDEwNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTQ3LCAxNDEsIAorICAgIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNDksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE2NCwgCisgICAgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTg3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAKKyAgICAyMTAsIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTkyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMTksIDExMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA2LCAxNjYsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzOCwgMTk5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIAorICAgIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA2LCA2OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjM2LCAyMjMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzNywgMTA4LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDksIDEwMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjEwLCAKKyAgICAxMzIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzOCwgMjI5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMTksIDExMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgMTUzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIAorICAgIDE0OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIwNCwgMTU1LCA1MiwgMjMzLCAxMDUsIDUyLCAyNDIsIDU4LCA1MiwgMjUwLCAxMzksIDUyLCAxNDgsIDUyLCAKKyAgICAyMTYsIDI0OSwgNTIsIDIxNiwgNzgsIDUyLCAyNDAsIDIxMywgNTIsIDI0MCwgMjE0LCAyMDgsIDE5MiwgNTIsIDI0MCwgCisgICAgMjE0LCAyNDIsIDIwOSwgNTIsIDIyOCwgOCwgNTIsIDIzOCwgMTE0LCAyMjAsIDEzNiwgMjM0LCAxMTIsIDUyLCAyMzgsIAorICAgIDExNCwgMjIwLCAxMzYsIDIwNywgMTA2LCA1MiwgMjM4LCAxMTQsIDIyMCwgMTM2LCAyMDcsIDMsIDUyLCAyMzgsIDExNCwgCisgICAgMjIwLCAxMzYsIDIyMiwgNTIsIDUyLCAyNDMsIDEyLCA1MiwgMjE2LCAyMTEsIDI1MSwgODcsIDUyLCAxODgsIDUyLCAyMjEsIAorICAgIDQyLCA2MiwgNTIsIDE3OCwgNTIsIDE2MSwgNTIsIDIyNywgMTEsIDUyLCAyMjIsIDExNSwgNTIsIDIzNiwgMzMsIDUyLCAKKyAgICAyNDcsIDE3NCwgNTIsIDIyNywgMTAsIDUyLCAyMTUsIDI0OCwgNTIsIDIyMCwgMSwgNTIsIDIyMSwgNDIsIDIzOCwgNSwgNTIsIAorICAgIDIyMSwgNDIsIDIzNiwgMTU2LCA1MiwgMjIxLCAyNTIsIDUyLCAyMjYsIDIwOSwgNTIsIDIzMywgMjgsIDUyLCAyMjYsIDE2NSwgCisgICAgNTIsIDIyMSwgMjEzLCA1MiwgMjM1LCAxNjMsIDUyLCAyMDYsIDE3LCA1MiwgMjIxLCA0MiwgMTU2LCA1MiwgMjIxLCAxNDQsIAorICAgIDUyLCAyNDAsIDIyMywgNTIsIDIyNiwgMTAzLCA1MiwgMjM3LCAxNSwgNTIsIDIxOSwgMjMsIDUyLCAyMjEsIDQyLCAyMjMsIAorICAgIDI0MywgNTIsIDIyMSwgMTQxLCA1MiwgMjQ2LCA5MiwgNTIsIDIyNiwgOTcsIDUyLCAyMjEsIDE0MiwgMjA4LCAxOTIsIDUyLCAKKyAgICAyNDYsIDkzLCAyMDgsIDE5MiwgNTIsIDIyMywgMjQ0LCAyMDgsIDE5MiwgNTIsIDIyNiwgOTgsIDIwOCwgMTkyLCA1MiwgCisgICAgMjIxLCAxNDIsIDI0MiwgMjA5LCA1MiwgMjQ2LCA5MywgMjQyLCAyMDksIDUyLCAyMjMsIDI0NCwgMjQyLCAyMDksIDUyLCAKKyAgICAyMjYsIDk4LCAyNDIsIDIwOSwgNTIsIDIyMywgMjQ0LCAxMTksIDIxMiwgMTIyLCA1MiwgMjIzLCAyNDQsIDExOSwgMjEyLCAKKyAgICAxMjMsIDIwOCwgMTkyLCA1MiwgMTcyLCA1MiwgMjI2LCA1MCwgNTIsIDIyMSwgNDUsIDUyLCAyMzUsIDkxLCA1MiwgMjEzLCAKKyAgICAyMzksIDUyLCAyMTMsIDI0MCwgMTE5LCAyMTIsIDEyMiwgNTIsIDIxMywgMjQwLCAxMTksIDIxMiwgMTIzLCAyMDgsIDE5MiwgCisgICAgNTIsIDIxNCwgMjM3LCA1MiwgMjE4LCAxNzEsIDUyLCAyMjEsIDQyLCAyMTIsIDEyMiwgNTIsIDIyMSwgNDMsIDUyLCAyMTQsIAorICAgIDE4NywgNTIsIDIxOCwgNzEsIDUyLCAyMjEsIDQyLCAyMDMsIDE2OCwgNTIsIDIyMCwgMjM4LCA1MiwgMjI1LCAyMzIsIDUyLCAKKyAgICAyMjAsIDIzOSwgMjIyLCA1NiwgNTIsIDIxNCwgMTg2LCA1MiwgMjE4LCA3MCwgNTIsIDIyMSwgNDIsIDIwMSwgMTQ3LCA1MiwgCisgICAgMjIwLCAyMzIsIDUyLCAyMjUsIDIzMCwgNTIsIDIyMCwgMjMzLCAyMjIsIDU2LCA1MiwgMjI3LCAxMTksIDIxNywgMTA2LCAKKyAgICA1MiwgMjIzLCAyNDQsIDIxNywgMTA2LCA1MiwgMjUxLCAxMDEsIDUyLCAyNDgsIDczLCA1MiwgMjQ3LCAxMDAsIDUyLCAyNDcsIAorICAgIDc3LCA1MiwgMjQ3LCAyMjQsIDExOSwgMjI2LCAyMDksIDUyLCAyNDYsIDkxLCA1MiwgMjQxLCAyMjksIDUyLCAyMzUsIDQsIAorICAgIDUyLCAxNDQsIDUyLCAyMzMsIDEwNiwgNTIsIDIyOCwgMTE3LCA1MiwgMjI2LCAxMTAsIDUyLCAyMjYsIDk4LCAyNDcsIDE0MywgCisgICAgNTIsIDIyNiwgMTcsIDUyLCAyMjQsIDExMywgNTIsIDIyNCwgMTEyLCA1MiwgMjI0LCA5OSwgNTIsIDIyNCwgMywgNTIsIAorICAgIDIyMiwgMTE2LCAyMDksIDUzLCA1MiwgMjIxLCAxNzUsIDUyLCAyMjEsIDEwOCwgNTIsIDIxNSwgMjQ2LCA1MiwgMjE1LCAKKyAgICAxMDksIDUyLCAyMTUsIDQ2LCA1MiwgMjE1LCA0NCwgNTIsIDIwOCwgMTgzLCA1MiwgMjA3LCAxOTEsIDUyLCAyMDEsIDY2LCAKKyAgICA1MiwgMjAzLCAxNjksIDExOSwgMjIzLCAyNDMsIDUyLCAzNSwgMTE5LCAyMjMsIDI0MywgMTQxLCAyMDYsIDE3OCwgMTYsIAorICAgIDM2LCAyNDEsIDIzMywgMTAyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxMDUsIDE0MSwgMjA2LCAxNzgsIAorICAgIDE2LCAzNiwgMjQxLCAyMzMsIDE0NywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTQ5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE4NywgMTQxLCAKKyAgICAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjEwLCAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIAorICAgIDE5MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjE5LCAxMTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNiwgMTY2LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzgsIDE5OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNiwgCisgICAgNjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzNiwgMjIzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMzcsIDEwOCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA5LCAxMDAsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxMCwgMTMyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzgsIAorICAgIDIyOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjE5LCAxMTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNCwgMTU5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MywgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNDgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgCisgICAgMTUwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1NSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA0LCAxNTYsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUxLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAKKyAgICAxNTgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTU0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDYsIDY3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDYsIDY2LCA1MiwgMjM2LCA3MSwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNDIsIDI0NywgMjM0LCAxMjMsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjEzLCAKKyAgICAxODMsIDIzOSwgMTcsIDIzNCwgODgsIDM2LCAyNDEsIDQ2LCAyNTAsIDE1NiwgMjA2LCAxMDcsIDI0OCwgMjQyLCAyMzQsIAorICAgIDg4LCAzNiwgMTk5LCAyMjQsIDIzNywgNywgMjM0LCA4OCwgMzYsIDIwMSwgMTA2LCAyMzQsIDg4LCAzNiwgMjQzLCA2NCwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTAsIDIxMywgMjM0LCA4OCwgMzYsIDIzMywgMTk4LCAyMDUsIDE4MiwgMjM0LCAKKyAgICA4OCwgMzYsIDQsIDIwNiwgMjQ1LCAyMzQsIDg4LCAzNiwgMjA1LCAxMTAsIDIzNCwgODgsIDM2LCAyMTYsIDcxLCAyMzQsIAorICAgIDg4LCAzNiwgMjA4LCAxMTEsIDIzNCwgODgsIDM2LCAyMzcsIDEzMSwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIxNSwgNjgsIAorICAgIDIzNCwgODgsIDM2LCAyMjEsIDEyOCwgMjM0LCA4OCwgMzYsIDIzOCwgMTUxLCAyMzQsIDg4LCAzNiwgMjM3LCA4LCAyMzQsIAorICAgIDg4LCAzNiwgMjAwLCAyMzYsIDIxNywgNzksIDIwNiwgMTA3LCAyNDEsIDE3MSwgMjM0LCA4OCwgMzYsIDI1MSwgNywgMjM0LCAKKyAgICA4OCwgMzYsIDI0MywgNDMsIDIzNCwgODgsIDM2LCAyNDgsIDE1MCwgMjA2LCAzNywgMjM0LCA4OCwgMzYsIDIzNSwgODksIAorICAgIDIzNCwgODgsIDM2LCAyMDgsIDIwOCwgMjUxLCAyNiwgMjM0LCA4OCwgMzYsIDIxMywgMTA5LCAyMzQsIDg4LCAzNiwgMjI4LCAKKyAgICA3OSwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIwNiwgMjQ1LCAyMzQsIDg4LCAzNiwgMjIxLCA1OSwgMjQzLCAxNCwgMjM0LCAKKyAgICA4OCwgMzYsIDIzNSwgNjksIDIxNSwgMjIsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUyLCAwLCAyMDEsIDgyLCAyMzQsIAorICAgIDg4LCAzNiwgMjA2LCAxMDcsIDI0NiwgMTE4LCAyMzcsIDc3LCAyMzQsIDg4LCAzNiwgMjI4LCA5MywgMjM0LCA4OCwgMzYsIAorICAgIDIzOSwgMTE0LCAyMzQsIDg4LCAzNiwgMjEzLCAxMTIsIDIzNCwgODgsIDM2LCAyMzUsIDY5LCAyMTUsIDUxLCAyMzQsIDg4LCAKKyAgICAzNiwgMjE0LCAyNTQsIDIzNCwgODgsIDM2LCAyNDEsIDI0OSwgNzYsIDIwNiwgMTA3LCAyMjQsIDE5NiwgMjM0LCA4OCwgMzYsIAorICAgIDIwNiwgMTA3LCAyMzcsIDE2OSwgMjM0LCA4OCwgMzYsIDIxNywgMzksIDIzNCwgODgsIDM2LCAyMTcsIDEzNCwgMjM0LCA4OCwgCisgICAgMzYsIDI0MSwgMTQxLCAyMzQsIDg4LCAzNiwgMjQxLCAxNjMsIDIzNCwgODgsIDM2LCAyMjgsIDEwOCwgMjM0LCA4OCwgMzYsIAorICAgIDI0OCwgNjAsIDIzNCwgODgsIDM2LCAyNDYsIDcyLCAyMDUsIDE4NiwgMjIyLCA1OSwgMjM0LCA4OCwgMzYsIDIzNiwgNDAsIAorICAgIDIwNSwgMTgyLCAyMzQsIDg4LCAzNiwgMjE0LCAxOTYsIDIwMywgMjE3LCAyMzQsIDg4LCAzNiwgMjE3LCAzOCwgMjM0LCA4OCwgCisgICAgMzYsIDIwNiwgMTA3LCAyMDEsIDUyLCAyMzQsIDg4LCAzNiwgMjEzLCAxMDAsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjQ3LCAKKyAgICAxMDYsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUwLCAyMDksIDIwNiwgMzEsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgCisgICAgMjI3LCAyLCAyMDgsIDgzLCAyMjEsIDYzLCAyMzQsIDg4LCAzNiwgMjQxLCAxMDgsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgCisgICAgMjIyLCAxNDIsIDIyMiwgMTk3LCAyMzQsIDg4LCAzNiwgMjUyLCAxLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIwMSwgOTksIAorICAgIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjM1LCAyNTMsIDIwMSwgMTYsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjI3LCAKKyAgICAxNDksIDIyNSwgOTYsIDIzNCwgODgsIDM2LCAyNDAsIDI1MiwgMjM0LCA4OCwgMzYsIDIyNCwgMTgzLCAyMzQsIDg4LCAzNiwgCisgICAgMjI4LCA4MiwgMjA1LCAzNiwgMjM0LCA4OCwgMzYsIDQsIDIxNSwgMjIsIDIzNCwgODgsIDM2LCAyNTEsIDE5NCwgMjQ2LCAKKyAgICA2MywgMjM0LCA4OCwgMzYsIDI0OCwgMjQ1LCAyNDYsIDYzLCAxMSwgNSwgMjI4LCAxMiwgMTEsIDUsIDIyOCwgNCwgMTEsIDUsIAorICAgIDcwLCAxMSwgNSwgMjI4LCAzOCwgMTEsIDUsIDIyOCwgMTc2LCAxMSwgNSwgMjI4LCAxNTksIDExLCA1LCAyMjgsIDE3OCwgCisgICAgMTEsIDUsIDIyOCwgMTc3LCAxMSwgNSwgMjUwLCAxNTUsIDExLCA1LCAyNTAsIDExNCwgMTEsIDUsIDYyLCAxMSwgNSwgMjUxLCAKKyAgICAyOCwgMTEsIDUsIDIwMywgMjI5LCAxMSwgNSwgMjAzLCAyMzIsIDExLCA1LCAyMDMsIDIzMCwgMTEsIDUsIDIxNywgMTEsIAorICAgIDExLCA1LCAyMTYsIDIzNSwgMTEsIDUsIDc0LCAxMSwgNSwgMjE3LCA1NCwgMTEsIDUsIDIzOCwgNDgsIDExLCA1LCA3MiwgCisgICAgMTEsIDUsIDIwMCwgMjE2LCAxMSwgNSwgMjQ4LCAxNTIsIDExLCA1LCAyNDgsIDE0OCwgMTEsIDUsIDI0OCwgMTg4LCAxMSwgCisgICAgNSwgMjQ4LCAxNjMsIDExLCA1LCAyNDgsIDE3NywgMTEsIDUsIDI0OCwgMTc2LCAxMSwgNSwgMjQ4LCAxNzksIDExLCA1LCAKKyAgICAyNDgsIDE3OCwgMTEsIDUsIDI0OSwgNTUsIDExLCA1LCAyNDksIDQ3LCAxMSwgNSwgMjQ5LCAxMzYsIDExLCA1LCAyNDksIAorICAgIDc4LCAxMSwgNSwgMjQ4LCA2LCAxMSwgNSwgMjQ4LCAxMCwgMTEsIDUsIDI0OCwgNywgMTEsIDUsIDI0OCwgOTcsIDExLCA1LCAKKyAgICAyNDgsIDc4LCAxMSwgNSwgMjQ4LCAxMjQsIDExLCA1LCAyNDgsIDEwMywgMTEsIDUsIDI0OCwgMjAzLCAxMSwgNSwgMjQ5LCAKKyAgICA4LCAxMSwgNSwgMjQ4LCAyMTUsIDExLCA1LCAyNDcsIDI0NiwgMTEsIDUsIDI0NywgMjQxLCAxMSwgNSwgMjQ4LCAzNiwgMTEsIAorICAgIDUsIDI0OCwgNSwgMTEsIDUsIDI0NywgMjU0LCAxMSwgNSwgMjQ4LCAzLCAxMSwgNSwgMjQ3LCAyMjksIDExLCA1LCAyNDcsIAorICAgIDIyNywgMTEsIDUsIDI0NywgMjM0LCAxMSwgNSwgMjQ3LCAyMzIsIDExLCA1LCAyNDcsIDIzMCwgMTEsIDUsIDI0NywgMjMxLCAKKyAgICAxMSwgNSwgMjE1LCAxNDIsIDExLCA1LCAyMTUsIDEzOCwgMTEsIDUsIDIxNSwgMjA0LCAxMSwgNSwgMjE1LCAxNTQsIDExLCAKKyAgICA1LCAyMTUsIDE3MCwgMTEsIDUsIDIxNSwgMTk3LCAxMSwgNSwgMjE1LCAxOTMsIDExLCA1LCAyMTYsIDk0LCAxMSwgNSwgCisgICAgMjE2LCA4MywgMTEsIDUsIDE3MiwgMTEsIDUsIDIxNiwgMTM1LCAxMSwgNSwgMjE0LCAyMDYsIDExLCA1LCAyMTQsIDIwOCwgCisgICAgMTEsIDUsIDIxNCwgMjA3LCAxMSwgNSwgMjE1LCA2MSwgMTEsIDUsIDIxNSwgNDksIDExLCA1LCAyMTUsIDEwNiwgMTEsIDUsIAorICAgIDIxNSwgNzcsIDExLCA1LCAyMTQsIDE5MiwgMTEsIDUsIDIxNCwgMTg4LCAxMSwgNSwgMjE0LCAyMjQsIDExLCA1LCAyMTQsIAorICAgIDIwNSwgMTEsIDUsIDIxNCwgMTk3LCAxMSwgNSwgMjE0LCAyMDMsIDExLCA1LCAyMTQsIDE3MSwgMTEsIDUsIDIxNCwgMTcwLCAKKyAgICAxMSwgNSwgMjE0LCAxNzUsIDExLCA1LCAyMTQsIDE3NCwgMTEsIDUsIDIxNCwgMTcyLCAxMSwgNSwgMjE0LCAxNzMsIDExLCAKKyAgICA1LCAyNDksIDI5LCAxMSwgNSwgMjQ5LCAyOCwgMTEsIDUsIDI0OSwgMzUsIDExLCA1LCAyNDksIDMwLCAxMSwgNSwgMjQ5LCAKKyAgICAzMiwgMTEsIDUsIDI0OSwgMzEsIDExLCA1LCAyNDksIDM0LCAxMSwgNSwgMjQ5LCAzMywgMTEsIDUsIDI0OSwgNDEsIDExLCAKKyAgICA1LCAyNDksIDQwLCAxMSwgNSwgMjQ5LCA0NCwgMTEsIDUsIDI0OSwgNDIsIDExLCA1LCAyNDksIDIwLCAxMSwgNSwgMjQ5LCAKKyAgICAyMiwgMTEsIDUsIDI0OSwgMjEsIDExLCA1LCAyNDksIDI1LCAxMSwgNSwgMjQ5LCAyNCwgMTEsIDUsIDI0OSwgMjcsIDExLCAKKyAgICA1LCAyNDksIDI2LCAxMSwgNSwgMjQ5LCAzNiwgMTEsIDUsIDI0OSwgMzksIDExLCA1LCAyNDksIDM3LCAxMSwgNSwgMjQ5LCAKKyAgICAxNiwgMTEsIDUsIDI0OSwgMTUsIDExLCA1LCAyNDksIDIzLCAxMSwgNSwgMjQ5LCAxOSwgMTEsIDUsIDI0OSwgMTcsIDExLCAKKyAgICA1LCAyNDksIDE4LCAxMSwgNSwgMjQ5LCAxMiwgMTEsIDUsIDI0OSwgMTEsIDExLCA1LCAyNDksIDE0LCAxMSwgNSwgMjQ5LCAKKyAgICAxMywgMTEsIDUsIDIyMCwgOTcsIDExLCA1LCAyMjAsIDk2LCAxMSwgNSwgMjIwLCAxMDIsIDExLCA1LCAyMjAsIDk4LCAxMSwgCisgICAgNSwgMjIwLCA5OSwgMTEsIDUsIDIyMCwgMTAxLCAxMSwgNSwgMjIwLCAxMDAsIDExLCA1LCAyMjAsIDEwNSwgMTEsIDUsIAorICAgIDIyMCwgMTA0LCAxMSwgNSwgMjIwLCAxMDcsIDExLCA1LCAyMjAsIDEwNiwgMTEsIDUsIDIyMCwgOTMsIDExLCA1LCAyMjAsIAorICAgIDkyLCAxMSwgNSwgMjIwLCA5NSwgMTEsIDUsIDIyMCwgOTQsIDExLCA1LCAyMjAsIDg2LCAxMSwgNSwgMjIwLCA4NSwgMTEsIAorICAgIDUsIDIyMCwgOTAsIDExLCA1LCAyMjAsIDg5LCAxMSwgNSwgMjIwLCA4NywgMTEsIDUsIDIyMCwgODgsIDExLCA1LCAyMjAsIAorICAgIDgwLCAxMSwgNSwgMjIwLCA3OSwgMTEsIDUsIDIyMCwgODQsIDExLCA1LCAyMjAsIDgzLCAxMSwgNSwgMjIwLCA4MSwgMTEsIAorICAgIDUsIDIyMCwgODIsIDExLCA1LCAyMzMsIDI1MSwgMTEsIDUsIDIzMywgMjUwLCAxMSwgNSwgMjM0LCAwLCAxMSwgNSwgMjMzLCAKKyAgICAyNTIsIDExLCA1LCAyMzMsIDI1MywgMTEsIDUsIDIzMywgMjU1LCAxMSwgNSwgMjMzLCAyNTQsIDExLCA1LCAyMzQsIDMsIAorICAgIDExLCA1LCAyMzQsIDIsIDExLCA1LCAyMzQsIDUsIDExLCA1LCAyMzQsIDQsIDExLCA1LCAyMzMsIDI0MiwgMTEsIDUsIDIzMywgCisgICAgMjQ0LCAxMSwgNSwgMjMzLCAyNDMsIDExLCA1LCAyMzMsIDI0NywgMTEsIDUsIDIzMywgMjQ2LCAxMSwgNSwgMjMzLCAyNDksIAorICAgIDExLCA1LCAyMzMsIDI0OCwgMTEsIDUsIDIzMywgMjM4LCAxMSwgNSwgMjMzLCAyMzcsIDExLCA1LCAyMzMsIDI0NSwgMTEsIAorICAgIDUsIDIzMywgMjQxLCAxMSwgNSwgMjMzLCAyMzksIDExLCA1LCAyMzMsIDI0MCwgMTEsIDUsIDIzMywgMjMyLCAxMSwgNSwgCisgICAgMjMzLCAyMzYsIDExLCA1LCAyMzMsIDIzNSwgMTEsIDUsIDIzMywgMjMzLCAxMSwgNSwgMjMzLCAyMzQsIDExLCA1LCAyMjEsIAorICAgIDE0NywgMTEsIDUsIDIyMSwgMTQ2LCAxMSwgNSwgMjIxLCAyMTEsIDExLCA1LCAyMjEsIDE1MywgMTEsIDUsIDIyMSwgMTgzLCAKKyAgICAxMSwgNSwgMjIxLCAyMDEsIDExLCA1LCAyMjEsIDE5OSwgMTEsIDUsIDIyMiwgMTI3LCAxMSwgNSwgMjIyLCAxMjIsIDExLCAKKyAgICA1LCAxNzgsIDExLCA1LCAyMjIsIDE2NCwgMTEsIDUsIDIyMSwgOCwgMTEsIDUsIDIyMSwgNywgMTEsIDUsIDIyMSwgMTEsIAorICAgIDExLCA1LCAyMjEsIDksIDExLCA1LCAyMjEsIDczLCAxMSwgNSwgMjIxLCA0NywgMTEsIDUsIDIyMSwgMTM2LCAxMSwgNSwgCisgICAgMjIxLCA3OSwgMTEsIDUsIDIyMiwgNywgMTEsIDUsIDIyMiwgNzYsIDExLCA1LCAyMjAsIDI0NCwgMTEsIDUsIDIyMCwgMjQwLCAKKyAgICAxMSwgNSwgMjIxLCA0MSwgMTEsIDUsIDIyMSwgNCwgMTEsIDUsIDIyMCwgMjUzLCAxMSwgNSwgMjIxLCAyLCAxMSwgNSwgCisgICAgMjIwLCAyMTcsIDExLCA1LCAyMjAsIDIxNiwgMTEsIDUsIDIyMCwgMjIyLCAxMSwgNSwgMjIwLCAyMTksIDExLCA1LCAyMzcsIAorICAgIDY0LCAxMSwgNSwgMjM3LCA1OCwgMTEsIDUsIDIzNywgMTEyLCAxMSwgNSwgMjM3LCA3OSwgMTEsIDUsIDIzNywgMTYwLCAxMSwgCisgICAgNSwgMjM3LCAxNTEsIDExLCA1LCAyMzcsIDE5NSwgMTEsIDUsIDIzNywgMTY1LCAxMSwgNSwgMjM2LCAyMjAsIDExLCA1LCAKKyAgICAyMzcsIDEzLCAxMSwgNSwgMjM2LCAyNTAsIDExLCA1LCAyMzYsIDE3MiwgMTEsIDUsIDIzNiwgMTcxLCAxMSwgNSwgMjM2LCAKKyAgICAxODksIDExLCA1LCAyMzYsIDE3NywgMTEsIDUsIDIzNiwgMTc1LCAxMSwgNSwgMjM2LCAxNzYsIDExLCA1LCAyMzYsIDE1OSwgCisgICAgMTEsIDUsIDIzNiwgMTU4LCAxMSwgNSwgMjM2LCAxNjIsIDExLCA1LCAyMzYsIDE2MCwgMTEsIDUsIDIwMiwgMjAwLCAxMSwgCisgICAgNSwgMjAyLCAxOTUsIDExLCA1LCAyMDIsIDIzNCwgMTEsIDUsIDIwMiwgMjA5LCAxMSwgNSwgMjAyLCAyMjMsIDExLCA1LCAKKyAgICAyMDIsIDIyMCwgMTEsIDUsIDIwMiwgMjI2LCAxMSwgNSwgMjAyLCAyMjUsIDExLCA1LCAyMDMsIDY3LCAxMSwgNSwgMjAzLCAKKyAgICA2MiwgMTEsIDUsIDIwMywgOTAsIDExLCA1LCAyMDMsIDc5LCAxMSwgNSwgMjAyLCAxNzUsIDExLCA1LCAyMDIsIDE3MSwgMTEsIAorICAgIDUsIDIwMiwgMTkzLCAxMSwgNSwgMjAyLCAxNzcsIDExLCA1LCAyMDIsIDIzNywgMTEsIDUsIDIwMywgNDgsIDExLCA1LCAKKyAgICAyMDEsIDE2MCwgMTEsIDUsIDIwMSwgMTU4LCAxMSwgNSwgMjAxLCAxNjYsIDExLCA1LCAyMDEsIDE2MywgMTEsIDUsIDIwMSwgCisgICAgMTYxLCAxMSwgNSwgMjAxLCAxNjIsIDExLCA1LCAyMDEsIDE1MSwgMTEsIDUsIDIwMSwgMTUwLCAxMSwgNSwgMjAxLCAxNTUsIAorICAgIDExLCA1LCAyMDEsIDE1NCwgMTEsIDUsIDIwMSwgMTUyLCAxMSwgNSwgMjAxLCAxNTMsIDExLCA1LCAyNDAsIDI0NSwgMTEsIAorICAgIDUsIDI0MCwgMjMyLCAxMSwgNSwgMjQxLCA3NiwgMTEsIDUsIDI0MSwgMTYsIDExLCA1LCAyNDEsIDUxLCAxMSwgNSwgMjQxLCAKKyAgICA1NiwgMTEsIDUsIDI0MSwgNTUsIDExLCA1LCAyNDEsIDI0MCwgMTEsIDUsIDI0MSwgMjM0LCAxMSwgNSwgMjQyLCA1OCwgMTEsIAorICAgIDUsIDI0MiwgNCwgMTEsIDUsIDIzOSwgMTE5LCAxMSwgNSwgMjM5LCAxMjAsIDExLCA1LCAyNDAsIDE4MiwgMTEsIDUsIDIzOSwgCisgICAgMTY0LCAxMSwgNSwgMjQwLCAyMTEsIDExLCA1LCAyNDAsIDE4NCwgMTEsIDUsIDI0MSwgMTA2LCAxMSwgNSwgMjQxLCAxNzUsIAorICAgIDExLCA1LCAyNDEsIDEyNywgMTEsIDUsIDIzOSwgMTEwLCAxMSwgNSwgMjM5LCAxMDgsIDExLCA1LCAyMzksIDEzNywgMTEsIAorICAgIDUsIDIzOSwgMTE4LCAxMSwgNSwgMjM5LCAxMTMsIDExLCA1LCAyMzksIDExNiwgMTEsIDUsIDIwNSwgMjEzLCAxMSwgNSwgCisgICAgMjA1LCAyMDUsIDExLCA1LCAyMDYsIDE1LCAxMSwgNSwgMjA1LCAyMjMsIDExLCA1LCAyMDYsIDUsIDExLCA1LCAyMDYsIDcsIAorICAgIDExLCA1LCAyMDYsIDYsIDExLCA1LCAyMDYsIDIyNiwgMTEsIDUsIDIwNiwgMjEyLCAxMSwgNSwgMjA3LCAzNiwgMTEsIDUsIAorICAgIDIwNiwgMjM2LCAxMSwgNSwgMjA0LCAxOTYsIDExLCA1LCAyMDQsIDE5NSwgMTEsIDUsIDIwNCwgMTk4LCAxMSwgNSwgMjA0LCAKKyAgICAxOTcsIDExLCA1LCAyMDUsIDE0NCwgMTEsIDUsIDIwNSwgMTM0LCAxMSwgNSwgMTM4LCAxMSwgNSwgMjA1LCAxNTcsIDExLCAKKyAgICA1LCAyMDYsIDEyOCwgMTEsIDUsIDIwNiwgMjAxLCAxMSwgNSwgMjA2LCAxNTMsIDExLCA1LCAyMDQsIDE3OSwgMTEsIDUsIAorICAgIDIwNCwgMTc0LCAxMSwgNSwgMjA0LCAyMTUsIDExLCA1LCAyMDQsIDE5NCwgMTEsIDUsIDIwNCwgMTgwLCAxMSwgNSwgMjA0LCAKKyAgICAxOTIsIDExLCA1LCAyNDEsIDE5MiwgMTEsIDUsIDI0MSwgMTkxLCAxMSwgNSwgMjQxLCAxOTcsIDExLCA1LCAyNDEsIDE5MywgCisgICAgMTEsIDUsIDI0MSwgMTk0LCAxMSwgNSwgMjQxLCAxOTYsIDExLCA1LCAyNDEsIDE5NSwgMTEsIDUsIDI0MSwgMjEzLCAxMSwgCisgICAgNSwgMjQxLCAyMTIsIDExLCA1LCAyNDEsIDIyMCwgMTEsIDUsIDI0MSwgMjE0LCAxMSwgNSwgMjQxLCAxODIsIDExLCA1LCAKKyAgICAyNDEsIDE4NCwgMTEsIDUsIDI0MSwgMTgzLCAxMSwgNSwgMjQxLCAxODcsIDExLCA1LCAyNDEsIDE4NiwgMTEsIDUsIDI0MSwgCisgICAgMTkwLCAxMSwgNSwgMjQxLCAxODgsIDExLCA1LCAyNDEsIDIwNSwgMTEsIDUsIDI0MSwgMjA4LCAxMSwgNSwgMjQxLCAyMDYsIAorICAgIDExLCA1LCAyNDEsIDE3OCwgMTEsIDUsIDI0MSwgMTc3LCAxMSwgNSwgMjQxLCAxODUsIDExLCA1LCAyNDEsIDE4MSwgMTEsIAorICAgIDUsIDI0MSwgMTc5LCAxMSwgNSwgMjQxLCAxODAsIDExLCA1LCAyMjAsIDUzLCAxMSwgNSwgMjIwLCA1MiwgMTEsIDUsIDIyMCwgCisgICAgNjAsIDExLCA1LCAyMjAsIDU1LCAxMSwgNSwgMjIwLCA1NiwgMTEsIDUsIDIyMCwgNTcsIDExLCA1LCAyMjAsIDY5LCAxMSwgCisgICAgNSwgMjIwLCA2OCwgMTEsIDUsIDIyMCwgNzUsIDExLCA1LCAyMjAsIDcwLCAxMSwgNSwgMjIwLCA0NSwgMTEsIDUsIDIyMCwgCisgICAgNDQsIDExLCA1LCAyMjAsIDUxLCAxMSwgNSwgMjIwLCA0NiwgMTEsIDUsIDIyMCwgNjEsIDExLCA1LCAyMjAsIDY3LCAxMSwgCisgICAgNSwgMjIwLCA2NSwgMTEsIDUsIDIyMCwgMzcsIDExLCA1LCAyMjAsIDM2LCAxMSwgNSwgMjIwLCA0MiwgMTEsIDUsIDIyMCwgCisgICAgNDAsIDExLCA1LCAyMjAsIDM4LCAxMSwgNSwgMjIwLCAzOSwgMTEsIDUsIDIzMywgMjE3LCAxMSwgNSwgMjMzLCAyMTYsIDExLCAKKyAgICA1LCAyMzMsIDIyMywgMTEsIDUsIDIzMywgMjE4LCAxMSwgNSwgMjMzLCAyMjAsIDExLCA1LCAyMzMsIDIxOSwgMTEsIDUsIAorICAgIDIzMywgMjIyLCAxMSwgNSwgMjMzLCAyMjEsIDExLCA1LCAyMzMsIDIyOSwgMTEsIDUsIDIzMywgMjI3LCAxMSwgNSwgMjMzLCAKKyAgICAyMzEsIDExLCA1LCAyMzMsIDIzMCwgMTEsIDUsIDIzMywgMjEwLCAxMSwgNSwgMjMzLCAyMTEsIDExLCA1LCAyMzMsIDIxNCwgCisgICAgMTEsIDUsIDIzMywgMjEzLCAxMSwgNSwgMjMzLCAyMTUsIDExLCA1LCAyMzMsIDIyNCwgMTEsIDUsIDIzMywgMjI2LCAxMSwgCisgICAgNSwgMjMzLCAyMjUsIDExLCA1LCAyMzMsIDIwOSwgMTEsIDUsIDIxOSwgMTAyLCAxMSwgNSwgMjE5LCAxMDAsIDExLCA1LCAKKyAgICAyMTksIDE1MCwgMTEsIDUsIDIxOSwgMTA1LCAxMSwgNSwgMjE5LCAxMzIsIDExLCA1LCAyMTksIDE0NiwgMTEsIDUsIDIxOSwgCisgICAgMTQ1LCAxMSwgNSwgMjIwLCAxMTEsIDExLCA1LCAxODgsIDExLCA1LCAyMjAsIDEyNywgMTEsIDUsIDIxOCwgODEsIDExLCA1LCAKKyAgICAyMTgsIDgzLCAxMSwgNSwgMjE4LCA4MiwgMTEsIDUsIDIxOCwgMjE0LCAxMSwgNSwgMjE4LCAxOTksIDExLCA1LCAyMTgsIAorICAgIDI0MSwgMTEsIDUsIDIxOCwgMjI1LCAxMSwgNSwgMjIwLCAzLCAxMSwgNSwgMjIwLCAzNCwgMTEsIDUsIDIyMCwgMTksIDExLCAKKyAgICA1LCAyMTgsIDc2LCAxMSwgNSwgMjE4LCA3MiwgMTEsIDUsIDIxOCwgMTMzLCAxMSwgNSwgMjE4LCA4MCwgMTEsIDUsIDIxOCwgCisgICAgNzgsIDExLCA1LCAyMTgsIDc5LCAxMSwgNSwgMjM0LCAyNiwgMTEsIDUsIDIzNCwgMjUsIDExLCA1LCAyMzQsIDMxLCAxMSwgCisgICAgNSwgMjM0LCAyNywgMTEsIDUsIDIzNCwgMjgsIDExLCA1LCAyMzQsIDMwLCAxMSwgNSwgMjM0LCAyOSwgMTEsIDUsIDIzNCwgCisgICAgMzcsIDExLCA1LCAyMzQsIDM1LCAxMSwgNSwgMjM0LCAzOSwgMTEsIDUsIDIzNCwgMzgsIDExLCA1LCAyMzQsIDE4LCAxMSwgCisgICAgNSwgMjM0LCAyMCwgMTEsIDUsIDIzNCwgMTksIDExLCA1LCAyMzQsIDIyLCAxMSwgNSwgMjM0LCAyNCwgMTEsIDUsIDIzNCwgCisgICAgMjMsIDExLCA1LCAyMzQsIDMyLCAxMSwgNSwgMjM0LCAzNCwgMTEsIDUsIDIzNCwgMzMsIDExLCA1LCAyMzQsIDE0LCAxMSwgCisgICAgNSwgMjM0LCAxMywgMTEsIDUsIDIzNCwgMjEsIDExLCA1LCAyMzQsIDE3LCAxMSwgNSwgMjM0LCAxNSwgMTEsIDUsIDIzNCwgCisgICAgMTYsIDExLCA1LCAyMzQsIDgsIDExLCA1LCAyMzQsIDcsIDExLCA1LCAyMzQsIDEyLCAxMSwgNSwgMjM0LCAxMSwgMTEsIDUsIAorICAgIDIzNCwgOSwgMTEsIDUsIDIzNCwgMTAsIDExLCA1LCAyMjQsIDE1MiwgMTEsIDUsIDIyNCwgMTQ0LCAxMSwgNSwgMjI0LCAKKyAgICAyMTAsIDExLCA1LCAyMjQsIDE2MiwgMTEsIDUsIDIyNCwgMjAxLCAxMSwgNSwgMjI0LCAyMDAsIDExLCA1LCAyMjQsIDIwNCwgCisgICAgMTEsIDUsIDIyNCwgMjAyLCAxMSwgNSwgMjI1LCA2MywgMTEsIDUsIDIyNSwgNTEsIDExLCA1LCAxOTQsIDExLCA1LCAyMjUsIAorICAgIDc0LCAxMSwgNSwgMjI0LCAyMCwgMTEsIDUsIDIyNCwgMTksIDExLCA1LCAyMjQsIDIyLCAxMSwgNSwgMjI0LCAyMSwgMTEsIAorICAgIDUsIDIyNCwgNjUsIDExLCA1LCAyMjQsIDUxLCAxMSwgNSwgMjI0LCAxMTAsIDExLCA1LCAyMjQsIDcxLCAxMSwgNSwgMjI0LCAKKyAgICAyMjcsIDExLCA1LCAyMjUsIDQwLCAxMSwgNSwgMjI0LCAyNDQsIDExLCA1LCAyMjQsIDE0LCAxMSwgNSwgMjI0LCAxMiwgMTEsIAorICAgIDUsIDIyNCwgNDIsIDExLCA1LCAyMjQsIDE4LCAxMSwgNSwgMjI0LCAxNiwgMTEsIDUsIDIyNCwgMTcsIDExLCA1LCAyMjMsIAorICAgIDI0OCwgMTEsIDUsIDIyMywgMjQ3LCAxMSwgNSwgMjI0LCAyLCAxMSwgNSwgMjIzLCAyNTEsIDExLCA1LCAyMjMsIDI0OSwgCisgICAgMTEsIDUsIDIyMywgMjUwLCAxMSwgNSwgMjM1LCAxMzQsIDExLCA1LCAyMzUsIDEzMywgMTEsIDUsIDIzNSwgMTYxLCAxMSwgCisgICAgNSwgMjM1LCAxNDUsIDExLCA1LCAyMzUsIDE1MywgMTEsIDUsIDIzNSwgMTUyLCAxMSwgNSwgMjM1LCAxNTUsIDExLCA1LCAKKyAgICAyMzUsIDE1NCwgMTEsIDUsIDIzNiwgNDIsIDExLCA1LCAyMzYsIDM3LCAxMSwgNSwgMjM2LCA4OSwgMTEsIDUsIDIzNiwgNTIsIAorICAgIDExLCA1LCAyMzUsIDI1LCAxMSwgNSwgMjM1LCAyNCwgMTEsIDUsIDIzNSwgMjcsIDExLCA1LCAyMzUsIDI2LCAxMSwgNSwgCisgICAgMjM1LCA5NCwgMTEsIDUsIDIzNSwgOTIsIDExLCA1LCAyMzUsIDExNiwgMTEsIDUsIDIzNSwgMTAzLCAxMSwgNSwgMjM1LCAKKyAgICAyMzksIDExLCA1LCAyMzUsIDIzNywgMTEsIDUsIDIzNiwgMTUsIDExLCA1LCAyMzUsIDI1MCwgMTEsIDUsIDIzNSwgMTQsIAorICAgIDExLCA1LCAyMzUsIDEzLCAxMSwgNSwgMjM1LCA1MCwgMTEsIDUsIDIzNSwgMjMsIDExLCA1LCAyMzUsIDE1LCAxMSwgNSwgCisgICAgMjM1LCAyMiwgMTEsIDUsIDIyNiwgMTI3LCAxMSwgNSwgMjI2LCAxMjMsIDExLCA1LCAyMjYsIDE2MywgMTEsIDUsIDIyNiwgCisgICAgMTQxLCAxMSwgNSwgMjI2LCAxNTIsIDExLCA1LCAyMjYsIDE1NiwgMTEsIDUsIDIyNiwgMTU0LCAxMSwgNSwgMjI3LCAzMywgCisgICAgMTEsIDUsIDIyNywgMTYsIDExLCA1LCAxNjEsIDExLCA1LCAyMjcsIDYwLCAxMSwgNSwgMjI1LCAyNDksIDExLCA1LCAyMjUsIAorICAgIDI1NCwgMTEsIDUsIDIyNSwgMjUxLCAxMSwgNSwgMjI2LCA1NiwgMTEsIDUsIDIyNiwgNTEsIDExLCA1LCAyMjYsIDg4LCAxMSwgCisgICAgNSwgMjI2LCA2MywgMTEsIDUsIDIyNiwgMjMzLCAxMSwgNSwgMjI2LCAyMTYsIDExLCA1LCAyMjcsIDgsIDExLCA1LCAyMjYsIAorICAgIDIzNywgMTEsIDUsIDIyNSwgMjM3LCAxMSwgNSwgMjI1LCAyMzMsIDExLCA1LCAyMjYsIDE1LCAxMSwgNSwgMjI1LCAyNDgsIAorICAgIDExLCA1LCAyMjUsIDI0MSwgMTEsIDUsIDIyNSwgMjQ1LCAxMSwgNSwgMjM1LCAyMjEsIDExLCA1LCAyMzUsIDIyMCwgMTEsIAorICAgIDUsIDIzNSwgMjI1LCAxMSwgNSwgMjM1LCAyMjIsIDExLCA1LCAyMzUsIDIyNCwgMTEsIDUsIDIzNSwgMjIzLCAxMSwgNSwgCisgICAgMjM1LCAyMzIsIDExLCA1LCAyMzUsIDIzMSwgMTEsIDUsIDIzNSwgMjM1LCAxMSwgNSwgMjM1LCAyMzMsIDExLCA1LCAyMzUsIAorICAgIDIxMiwgMTEsIDUsIDIzNSwgMjExLCAxMSwgNSwgMjM1LCAyMTQsIDExLCA1LCAyMzUsIDIxMywgMTEsIDUsIDIzNSwgMjE3LCAKKyAgICAxMSwgNSwgMjM1LCAyMTYsIDExLCA1LCAyMzUsIDIxOSwgMTEsIDUsIDIzNSwgMjE4LCAxMSwgNSwgMjM1LCAyMjcsIDExLCAKKyAgICA1LCAyMzUsIDIyNiwgMTEsIDUsIDIzNSwgMjMwLCAxMSwgNSwgMjM1LCAyMjgsIDExLCA1LCAyMzUsIDIwNywgMTEsIDUsIAorICAgIDIzNSwgMjA2LCAxMSwgNSwgMjM1LCAyMTUsIDExLCA1LCAyMzUsIDIxMCwgMTEsIDUsIDIzNSwgMjA4LCAxMSwgNSwgMjM1LCAKKyAgICAyMDksIDExLCA1LCAyMjEsIDIzMCwgMTEsIDUsIDIyMSwgMjMxLCAxMSwgNSwgMjIxLCAyNDksIDExLCA1LCAyMjEsIDI0OCwgCisgICAgMTEsIDUsIDIyMSwgMjUxLCAxMSwgNSwgMjIxLCAyNTAsIDExLCA1LCAyMjEsIDIyMSwgMTEsIDUsIDIyMSwgMjIzLCAxMSwgCisgICAgNSwgMjIxLCAyMjIsIDExLCA1LCAyMjEsIDIyNiwgMTEsIDUsIDIyMSwgMjI1LCAxMSwgNSwgMjIxLCAyMjgsIDExLCA1LCAKKyAgICAyMjEsIDIyNywgMTEsIDUsIDIyMSwgMjMyLCAxMSwgNSwgMjIxLCAyMzQsIDExLCA1LCAyMjEsIDIzMywgMTEsIDUsIDIyMSwgCisgICAgMjE3LCAxMSwgNSwgMjIxLCAyMTYsIDExLCA1LCAyMjEsIDIyNCwgMTEsIDUsIDIyMSwgMjIwLCAxMSwgNSwgMjIxLCAyMTgsIAorICAgIDExLCA1LCAyMjEsIDIxOSwgMTEsIDUsIDIzMywgNDcsIDExLCA1LCAyMzMsIDQ2LCAxMSwgNSwgMjMzLCA1MywgMTEsIDUsIAorICAgIDIzMywgNDgsIDExLCA1LCAyMzMsIDUwLCAxMSwgNSwgMjMzLCA0OSwgMTEsIDUsIDIzMywgNTIsIDExLCA1LCAyMzMsIDUxLCAKKyAgICAxMSwgNSwgMjMzLCA1OCwgMTEsIDUsIDIzMywgNTcsIDExLCA1LCAyMzMsIDYwLCAxMSwgNSwgMjMzLCA1OSwgMTEsIDUsIAorICAgIDIzMywgMzksIDExLCA1LCAyMzMsIDM4LCAxMSwgNSwgMjMzLCA0MSwgMTEsIDUsIDIzMywgNDAsIDExLCA1LCAyMzMsIDQzLCAKKyAgICAxMSwgNSwgMjMzLCA0MiwgMTEsIDUsIDIzMywgNDUsIDExLCA1LCAyMzMsIDQ0LCAxMSwgNSwgMjMzLCA1NCwgMTEsIDUsIAorICAgIDIzMywgNTYsIDExLCA1LCAyMzMsIDU1LCAxMSwgNSwgMjE5LCAxOTgsIDExLCA1LCAyMTksIDIwMCwgMTEsIDUsIDIxOSwgCisgICAgMTk5LCAxMSwgNSwgMjE5LCAyNDMsIDExLCA1LCAyMTksIDI0MSwgMTEsIDUsIDIxOSwgMjUzLCAxMSwgNSwgMjE5LCAyNDYsIAorICAgIDExLCA1LCAyMTksIDE2MCwgMTEsIDUsIDIxOSwgMTU5LCAxMSwgNSwgMjE5LCAxNjEsIDExLCA1LCAyMTksIDE3MCwgMTEsIAorICAgIDUsIDIxOSwgMTY3LCAxMSwgNSwgMjE5LCAxNzgsIDExLCA1LCAyMTksIDE3MiwgMTEsIDUsIDIxOSwgMjM0LCAxMSwgNSwgCisgICAgMjE5LCAyNDAsIDExLCA1LCAyMTksIDIzNiwgMTEsIDUsIDIzNCwgNDUsIDExLCA1LCAyMzQsIDYwLCAxMSwgNSwgMjM0LCAKKyAgICA2OSwgMTEsIDUsIDIzNCwgMTU3LCAxMSwgNSwgMjM0LCAxNDYsIDExLCA1LCAxNDQsIDExLCA1LCAyMzQsIDE2OCwgMTEsIDUsIAorICAgIDIzMywgNzYsIDExLCA1LCAyMzMsIDc1LCAxMSwgNSwgMjMzLCA3OCwgMTEsIDUsIDIzMywgNzcsIDExLCA1LCAyMzMsIDExNywgCisgICAgMTEsIDUsIDIzMywgMTA4LCAxMSwgNSwgMjMzLCAyMDcsIDExLCA1LCAyMzMsIDE4MCwgMTEsIDUsIDIzNCwgOTAsIDExLCA1LCAKKyAgICAyMzQsIDEzOSwgMTEsIDUsIDIzNCwgMTAyLCAxMSwgNSwgMjAxLCA4NSwgMTEsIDUsIDIwMSwgNzAsIDExLCA1LCAyMDEsIAorICAgIDExNCwgMTEsIDUsIDIwMSwgOTYsIDExLCA1LCAyMDAsIDIwNSwgMTEsIDUsIDIwMCwgMjA3LCAxMSwgNSwgMjAwLCAyMDYsIAorICAgIDExLCA1LCAyMDAsIDIyOSwgMTEsIDUsIDIwMSwgMCwgMTEsIDUsIDIwMCwgMjM5LCAxMSwgNSwgMjAxLCA0MywgMTEsIDUsIAorICAgIDIwMSwgNjQsIDExLCA1LCAyMDEsIDQ5LCAxMSwgNSwgMTk5LCAyMSwgMTEsIDUsIDE5OSwgMjAsIDExLCA1LCAxOTksIDM2LCAKKyAgICAxMSwgNSwgMTk5LCAyNCwgMTEsIDUsIDE5OSwgMjksIDExLCA1LCAxOTksIDMxLCAxMSwgNSwgMTk5LCAzMCwgMTEsIDUsIAorICAgIDE5OSwgOTcsIDExLCA1LCAxOTksIDk0LCAxMSwgNSwgMTk5LCAxMTQsIDExLCA1LCAxOTksIDEwMSwgMTEsIDUsIDE5OCwgCisgICAgMjUyLCAxMSwgNSwgMTk4LCAyNTQsIDExLCA1LCAxOTgsIDI1MywgMTEsIDUsIDE5OSwgMTAsIDExLCA1LCAxOTksIDksIDExLCAKKyAgICA1LCAxOTksIDE0LCAxMSwgNSwgMTk5LCAxMSwgMTEsIDUsIDE5OSwgNzksIDExLCA1LCAxOTksIDg5LCAxMSwgNSwgMTk5LCAKKyAgICA4MywgMTEsIDUsIDE5OCwgMjQ4LCAxMSwgNSwgMTk4LCAyNDcsIDExLCA1LCAxOTksIDMsIDExLCA1LCAxOTgsIDI1MSwgMTEsIAorICAgIDUsIDE5OCwgMjQ5LCAxMSwgNSwgMTk4LCAyNTAsIDExLCA1LCAxOTgsIDIzNCwgMTEsIDUsIDE5OCwgMjMzLCAxMSwgNSwgCisgICAgMTk4LCAyMzksIDExLCA1LCAxOTgsIDIzNywgMTEsIDUsIDE5OCwgMjM1LCAxMSwgNSwgMTk4LCAyMzYsIDExLCA1LCAyNDYsIAorICAgIDE0NCwgMTEsIDUsIDI0NiwgMTM3LCAxMSwgNSwgMjQ2LCAxNzMsIDExLCA1LCAyNDYsIDE1NywgMTEsIDUsIDI0NiwgMTcwLCAKKyAgICAxMSwgNSwgMjQ2LCAxNjQsIDExLCA1LCAyNDYsIDE3MiwgMTEsIDUsIDI0NiwgMTcxLCAxMSwgNSwgMjQ3LCAxMTEsIDExLCAKKyAgICA1LCAyNDcsIDEwMywgMTEsIDUsIDI0NywgMTkwLCAxMSwgNSwgMjQ3LCAxNDQsIDExLCA1LCAyNDIsIDIwNCwgMTEsIDUsIAorICAgIDI0MiwgMjA2LCAxMSwgNSwgMjQyLCAyMDUsIDExLCA1LCAyNDMsIDgsIDExLCA1LCAyNDIsIDI1MywgMTEsIDUsIDI0NiwgCisgICAgOTEsIDExLCA1LCAyNDMsIDI1LCAxMSwgNSwgMjQ3LCA0MCwgMTEsIDUsIDI0NywgNzYsIDExLCA1LCAyNDcsIDQ1LCAxMSwgCisgICAgNSwgMjQyLCAxNzksIDExLCA1LCAyNDIsIDE3NywgMTEsIDUsIDI0MiwgMjE0LCAxMSwgNSwgMjQyLCAyMDIsIDExLCA1LCAKKyAgICAyNDIsIDE4NSwgMTEsIDUsIDI0MiwgMTk5LCAxMSwgNSwgMjQyLCAxNTYsIDExLCA1LCAyNDIsIDE1NSwgMTEsIDUsIDI0MiwgCisgICAgMTY4LCAxMSwgNSwgMjQyLCAxNjIsIDExLCA1LCAyNDIsIDE1NywgMTEsIDUsIDI0MiwgMTU5LCAxMSwgNSwgMTk4LCAyMTcsIAorICAgIDExLCA1LCAxOTgsIDIxNiwgMTEsIDUsIDE5OCwgMjIzLCAxMSwgNSwgMTk4LCAyMTgsIDExLCA1LCAxOTgsIDIyMCwgMTEsIAorICAgIDUsIDE5OCwgMjE5LCAxMSwgNSwgMTk4LCAyMjIsIDExLCA1LCAxOTgsIDIyMSwgMTEsIDUsIDE5OCwgMjI5LCAxMSwgNSwgCisgICAgMTk4LCAyMjgsIDExLCA1LCAxOTgsIDIzMiwgMTEsIDUsIDE5OCwgMjMwLCAxMSwgNSwgMTk4LCAyMTMsIDExLCA1LCAxOTgsIAorICAgIDIxNSwgMTEsIDUsIDE5OCwgMjE0LCAxMSwgNSwgMTk4LCAyMjQsIDExLCA1LCAxOTgsIDIyNywgMTEsIDUsIDE5OCwgMjI1LCAKKyAgICAxMSwgNSwgMTk4LCAyMDYsIDExLCA1LCAxOTgsIDIxMCwgMTEsIDUsIDE5OCwgMjA5LCAxMSwgNSwgMTk4LCAyMDcsIDExLCAKKyAgICA1LCAxOTgsIDIwOCwgMTEsIDUsIDE5OCwgMjAwLCAxMSwgNSwgMTk4LCAxOTksIDExLCA1LCAxOTgsIDIwNSwgMTEsIDUsIAorICAgIDE5OCwgMjAzLCAxMSwgNSwgMTk4LCAyMDEsIDExLCA1LCAxOTgsIDIwMiwgMTEsIDUsIDIxNywgMjUwLCAxMSwgNSwgMjE3LCAKKyAgICAyNDksIDExLCA1LCAyMTcsIDI1NSwgMTEsIDUsIDIxNywgMjUxLCAxMSwgNSwgMjE3LCAyNTIsIDExLCA1LCAyMTcsIDI1NCwgCisgICAgMTEsIDUsIDIxNywgMjUzLCAxMSwgNSwgMjE4LCA0LCAxMSwgNSwgMjE4LCAzLCAxMSwgNSwgMjE4LCA3LCAxMSwgNSwgMjE4LCAKKyAgICA2LCAxMSwgNSwgMjE3LCAyNDMsIDExLCA1LCAyMTcsIDI0NCwgMTEsIDUsIDIxNywgMjQ3LCAxMSwgNSwgMjE3LCAyNDgsIAorICAgIDExLCA1LCAyMTgsIDAsIDExLCA1LCAyMTgsIDIsIDExLCA1LCAyMTcsIDIzOCwgMTEsIDUsIDIxNywgMjQ2LCAxMSwgNSwgCisgICAgMjE3LCAyNDIsIDExLCA1LCAyMTcsIDIzOSwgMTEsIDUsIDIxNywgMjQwLCAxMSwgNSwgMjE3LCAyMzMsIDExLCA1LCAyMTcsIAorICAgIDIzMiwgMTEsIDUsIDIxNywgMjM3LCAxMSwgNSwgMjE3LCAyMzYsIDExLCA1LCAyMTcsIDIzNCwgMTEsIDUsIDIxNywgMjM1LCAKKyAgICAxMSwgNSwgMjA5LCAxMDgsIDExLCA1LCAxODcsIDExLCA1LCAyMDksIDE4MiwgMTEsIDUsIDIwOSwgMTExLCAxMSwgNSwgCisgICAgMjA5LCAxNjksIDExLCA1LCAyMDksIDE3MiwgMTEsIDUsIDIwOSwgMTcwLCAxMSwgNSwgMjExLCAyNTEsIDExLCA1LCAyMTEsIAorICAgIDIzNywgMTEsIDUsIDIxMiwgNjQsIDExLCA1LCAyMTIsIDMsIDExLCA1LCAyMDcsIDIxOCwgMTEsIDUsIDIwNywgMjIwLCAxMSwgCisgICAgNSwgMjA3LCAyMTksIDExLCA1LCAyMDksIDQsIDExLCA1LCAyMDgsIDI0OSwgMTEsIDUsIDIwOSwgMjksIDExLCA1LCAyMDksIAorICAgIDgsIDExLCA1LCAyMTAsIDEyNywgMTEsIDUsIDIxMSwgMjAyLCAxMSwgNSwgMjEwLCAxNTYsIDExLCA1LCAyMDcsIDE5NSwgCisgICAgMTEsIDUsIDIwNywgMTkyLCAxMSwgNSwgMjA4LCAyNCwgMTEsIDUsIDIwNywgMjE3LCAxMSwgNSwgMjA3LCAxOTksIDExLCA1LCAKKyAgICAyMDcsIDIwNywgMTEsIDUsIDIwNywgOTcsIDExLCA1LCAyMDcsIDk2LCAxMSwgNSwgMjA3LCAxNjUsIDExLCA1LCAyMDcsIAorICAgIDEwNSwgMTEsIDUsIDIwNywgOTksIDExLCA1LCAyMDcsIDEwNCwgMTEsIDUsIDIwOCwgMTQxLCAxMSwgNSwgMjA4LCAxNDAsIAorICAgIDExLCA1LCAyMDgsIDE0NywgMTEsIDUsIDIwOCwgMTQyLCAxMSwgNSwgMjA4LCAxNDQsIDExLCA1LCAyMDgsIDE0NiwgMTEsIAorICAgIDUsIDIwOCwgMTQ1LCAxMSwgNSwgMjA4LCAxNTYsIDExLCA1LCAyMDgsIDE1NCwgMTEsIDUsIDIwOCwgMTc5LCAxMSwgNSwgCisgICAgMjA4LCAxNTcsIDExLCA1LCAyMDgsIDEzNiwgMTEsIDUsIDIwOCwgMTM1LCAxMSwgNSwgMjA4LCAxMzksIDExLCA1LCAyMDgsIAorICAgIDEzNywgMTEsIDUsIDIwOCwgMTUwLCAxMSwgNSwgMjA4LCAxNTMsIDExLCA1LCAyMDgsIDE1MSwgMTEsIDUsIDIwOCwgMTMyLCAKKyAgICAxMSwgNSwgMjA4LCAxMzAsIDExLCA1LCAyMDgsIDEzNCwgMTEsIDUsIDIwOCwgMTMzLCAxMSwgNSwgMjA4LCAxMjUsIDExLCAKKyAgICA1LCAyMDgsIDEyNCwgMTEsIDUsIDIwOCwgMTI5LCAxMSwgNSwgMjA4LCAxMjgsIDExLCA1LCAyMDgsIDEyNiwgMTEsIDUsIAorICAgIDIwOCwgMTI3LCAxMSwgNSwgMTk5LCA3MiwgMTEsIDUsIDE5OSwgNzEsIDExLCA1LCAxOTksIDc3LCAxMSwgNSwgMTk5LCA3NCwgCisgICAgMTEsIDUsIDE5OSwgNTEsIDExLCA1LCAxOTksIDUzLCAxMSwgNSwgMTk5LCA1MiwgMTEsIDUsIDE5OSwgNTYsIDExLCA1LCAKKyAgICAxOTksIDU1LCAxMSwgNSwgMTk5LCA2MCwgMTEsIDUsIDE5OSwgNTcsIDExLCA1LCAxOTksIDY1LCAxMSwgNSwgMTk5LCA2NCwgCisgICAgMTEsIDUsIDE5OSwgNjgsIDExLCA1LCAxOTksIDY2LCAxMSwgNSwgMTk5LCA0NywgMTEsIDUsIDE5OSwgNDYsIDExLCA1LCAKKyAgICAxOTksIDU0LCAxMSwgNSwgMTk5LCA1MCwgMTEsIDUsIDE5OSwgNDgsIDExLCA1LCAxOTksIDQ5LCAxMSwgNSwgMTk5LCAzOSwgCisgICAgMTEsIDUsIDE5OSwgMzgsIDExLCA1LCAxOTksIDQzLCAxMSwgNSwgMTk5LCA0MiwgMTEsIDUsIDE5OSwgNDAsIDExLCA1LCAKKyAgICAxOTksIDQxLCAxMSwgNSwgMjQ3LCAxNCwgMTEsIDUsIDI0NywgMTAsIDExLCA1LCAyNDcsIDM3LCAxMSwgNSwgMjQ3LCAyMywgCisgICAgMTEsIDUsIDI0NiwgMTg4LCAxMSwgNSwgMjQ2LCAxODcsIDExLCA1LCAyNDYsIDE5MCwgMTEsIDUsIDI0NiwgMTg5LCAxMSwgCisgICAgNSwgMjQ2LCAyMDMsIDExLCA1LCAyNDYsIDIwMiwgMTEsIDUsIDI0NiwgMjEwLCAxMSwgNSwgMjQ2LCAyMDUsIDExLCA1LCAKKyAgICAyNDYsIDI0MSwgMTEsIDUsIDI0NiwgMjM5LCAxMSwgNSwgMjQ3LCA4LCAxMSwgNSwgMjQ2LCAyNDksIDExLCA1LCAyNDYsIAorICAgIDE4MiwgMTEsIDUsIDI0NiwgMTkyLCAxMSwgNSwgMjQ2LCAxODYsIDExLCA1LCAyNDYsIDE4MywgMTEsIDUsIDI0NiwgMTg1LCAKKyAgICAxMSwgNSwgMjQ2LCAxNzUsIDExLCA1LCAyNDYsIDE3NCwgMTEsIDUsIDI0NiwgMTc5LCAxMSwgNSwgMjQ2LCAxNzgsIDExLCAKKyAgICA1LCAyNDYsIDE3NiwgMTEsIDUsIDI0NiwgMTc3LCAxMSwgNSwgMjEyLCAyMTEsIDExLCA1LCAyMTIsIDIxNSwgMTEsIDUsIAorICAgIDIxMiwgMTkzLCAxMSwgNSwgMjEyLCAxOTQsIDExLCA1LCAyMTIsIDE5OCwgMTEsIDUsIDIxMiwgMTk3LCAxMSwgNSwgMjEyLCAKKyAgICAyMDEsIDExLCA1LCAyMTIsIDE5OSwgMTEsIDUsIDIxMiwgMjA1LCAxMSwgNSwgMjEyLCAyMDQsIDExLCA1LCAyMTIsIDIxMCwgCisgICAgMTEsIDUsIDIxMiwgMjA2LCAxMSwgNSwgMjEyLCAxODksIDExLCA1LCAyMTIsIDE4NywgMTEsIDUsIDIxMiwgMTk1LCAxMSwgCisgICAgNSwgMjEyLCAxOTIsIDExLCA1LCAyMTIsIDE5MCwgMTEsIDUsIDIxMiwgMTkxLCAxMSwgNSwgMjEyLCAxODIsIDExLCA1LCAKKyAgICAyMTIsIDE4MSwgMTEsIDUsIDIxMiwgMTg2LCAxMSwgNSwgMjEyLCAxODUsIDExLCA1LCAyMTIsIDE4MywgMTEsIDUsIDIxMiwgCisgICAgMTg0LCAxMSwgNSwgMjE4LCAxOTQsIDExLCA1LCAyMTgsIDE5MywgMTEsIDUsIDIxOCwgMTk2LCAxMSwgNSwgMjE4LCAxOTUsIAorICAgIDExLCA1LCAyMTgsIDE4NSwgMTEsIDUsIDIxOCwgMTg3LCAxMSwgNSwgMjE4LCAxODYsIDExLCA1LCAyMTgsIDE4OSwgMTEsIAorICAgIDUsIDIxOCwgMTg4LCAxMSwgNSwgMjE4LCAxOTIsIDExLCA1LCAyMTgsIDE5MSwgMTEsIDUsIDIxOCwgMTc5LCAxMSwgNSwgCisgICAgMjE4LCAxNzgsIDExLCA1LCAyMTgsIDE4NCwgMTEsIDUsIDIxOCwgMTgyLCAxMSwgNSwgMjE4LCAxODAsIDExLCA1LCAyMTgsIAorICAgIDE4MSwgMTEsIDUsIDIxOCwgMTczLCAxMSwgNSwgMjE4LCAxNzIsIDExLCA1LCAyMTgsIDE3NywgMTEsIDUsIDIxOCwgMTc2LCAKKyAgICAxMSwgNSwgMjE4LCAxNzQsIDExLCA1LCAyMTgsIDE3NSwgMTEsIDUsIDIxMCwgNzUsIDExLCA1LCAyMTAsIDcwLCAxMSwgNSwgCisgICAgMjEwLCAxMTQsIDExLCA1LCAyMTAsIDg3LCAxMSwgNSwgMjA5LCAyMDksIDExLCA1LCAyMDksIDIxMSwgMTEsIDUsIDIwOSwgCisgICAgMjEwLCAxMSwgNSwgMjA5LCAyMzQsIDExLCA1LCAyMDksIDIzMCwgMTEsIDUsIDIxMCwgOCwgMTEsIDUsIDIwOSwgMjU0LCAKKyAgICAxMSwgNSwgMjEwLCA0MywgMTEsIDUsIDIxMCwgMzYsIDExLCA1LCAyMTAsIDY1LCAxMSwgNSwgMjEwLCA1MiwgMTEsIDUsIAorICAgIDIwOSwgMjA1LCAxMSwgNSwgMjA5LCAyMDIsIDExLCA1LCAyMDksIDIyMCwgMTEsIDUsIDIwOSwgMjA4LCAxMSwgNSwgMjA5LCAKKyAgICAyMDYsIDExLCA1LCAyMDksIDIwNywgMTEsIDUsIDIwOSwgMTg1LCAxMSwgNSwgMjA5LCAxODQsIDExLCA1LCAyMDksIDE5MSwgCisgICAgMTEsIDUsIDIwOSwgMTg4LCAxMSwgNSwgMjA5LCAxODYsIDExLCA1LCAyMDksIDE4NywgMTEsIDUsIDIxMywgMjA0LCAxMSwgCisgICAgNSwgMjEzLCAxOTgsIDExLCA1LCAyMTMsIDI1MiwgMTEsIDUsIDIxMywgMjEwLCAxMSwgNSwgMjEyLCAxNTEsIDExLCA1LCAKKyAgICAyMTIsIDE1MywgMTEsIDUsIDIxMiwgMTUyLCAxMSwgNSwgMjEyLCAyMjksIDExLCA1LCAyMTIsIDIxNywgMTEsIDUsIDIxMywgCisgICAgMSwgMTEsIDUsIDIxMiwgMjMzLCAxMSwgNSwgMjEzLCA5OCwgMTEsIDUsIDIxMywgMTkwLCAxMSwgNSwgMjEzLCAxMzcsIDExLCAKKyAgICA1LCAyMTIsIDE0NCwgMTEsIDUsIDIxMiwgMTQxLCAxMSwgNSwgMjEyLCAxNzUsIDExLCA1LCAyMTIsIDE1MCwgMTEsIDUsIAorICAgIDIxMiwgMTQ2LCAxMSwgNSwgMjEyLCAxNDcsIDExLCA1LCAyMTIsIDEyNiwgMTEsIDUsIDIxMiwgMTI1LCAxMSwgNSwgMjEyLCAKKyAgICAxMzEsIDExLCA1LCAyMTIsIDEyOSwgMTEsIDUsIDIxMiwgMTI3LCAxMSwgNSwgMjEyLCAxMjgsIDExLCA1LCAyMjcsIDE5NiwgCisgICAgMTEsIDUsIDIyNywgMTk1LCAxMSwgNSwgMjI3LCAyMDcsIDExLCA1LCAyMjcsIDE5NywgMTEsIDUsIDIyNywgMjAzLCAxMSwgCisgICAgNSwgMjI3LCAyMDIsIDExLCA1LCAyMjcsIDIwNSwgMTEsIDUsIDIyNywgMjA0LCAxMSwgNSwgMjI3LCAxMzYsIDExLCA1LCAKKyAgICAyMjcsIDEzNSwgMTEsIDUsIDIyNywgMTM4LCAxMSwgNSwgMjI3LCAxMzcsIDExLCA1LCAyMjcsIDE1MywgMTEsIDUsIDIyNywgCisgICAgMTUxLCAxMSwgNSwgMjI3LCAxNjYsIDExLCA1LCAyMjcsIDE1NSwgMTEsIDUsIDIyNywgMTI5LCAxMSwgNSwgMjI3LCAxMjcsIAorICAgIDExLCA1LCAyMjcsIDE0NywgMTEsIDUsIDIyNywgMTM0LCAxMSwgNSwgMjI3LCAxMzEsIDExLCA1LCAyMjcsIDEzMiwgMTEsIAorICAgIDUsIDIyNywgMTIxLCAxMSwgNSwgMjI3LCAxMjAsIDExLCA1LCAyMjcsIDEyNSwgMTEsIDUsIDIyNywgMTI0LCAxMSwgNSwgCisgICAgMjI3LCAxMjIsIDExLCA1LCAyMjcsIDEyMywgMTEsIDUsIDIxNCwgMTEzLCAxMSwgNSwgMjE0LCAxMTEsIDExLCA1LCAyMTQsIAorICAgIDEyMSwgMTEsIDUsIDIxNCwgMTE0LCAxMSwgNSwgMjE0LCAxMTgsIDExLCA1LCAyMTQsIDExNywgMTEsIDUsIDIxNCwgMTIwLCAKKyAgICAxMSwgNSwgMjE0LCAxMTksIDExLCA1LCAyMTQsIDY0LCAxMSwgNSwgMjE0LCA2MSwgMTEsIDUsIDIxNCwgNjYsIDExLCA1LCAKKyAgICAyMTQsIDY1LCAxMSwgNSwgMjE0LCAxMDAsIDExLCA1LCAyMTQsIDk5LCAxMSwgNSwgMjE0LCAxMDksIDExLCA1LCAyMTQsIAorICAgIDEwMywgMTEsIDUsIDIxNCwgNTYsIDExLCA1LCAyMTQsIDUyLCAxMSwgNSwgMjE0LCA5NywgMTEsIDUsIDIxNCwgNjAsIDExLCAKKyAgICA1LCAyMTQsIDU4LCAxMSwgNSwgMjE0LCA1OSwgMTEsIDUsIDIxNCwgMzYsIDExLCA1LCAyMTQsIDM0LCAxMSwgNSwgMjE0LCAKKyAgICA0NiwgMTEsIDUsIDIxNCwgMzksIDExLCA1LCAyMTQsIDM3LCAxMSwgNSwgMjE0LCAzOCwgMTEsIDUsIDIyNywgMTg1LCAxMSwgCisgICAgNSwgMjI3LCAxODQsIDExLCA1LCAyMjcsIDE5MSwgMTEsIDUsIDIyNywgMTg2LCAxMSwgNSwgMjI3LCAxODgsIDExLCA1LCAKKyAgICAyMjcsIDE4NywgMTEsIDUsIDIyNywgMTkwLCAxMSwgNSwgMjI3LCAxODksIDExLCA1LCAyMjcsIDE3NiwgMTEsIDUsIDIyNywgCisgICAgMTc4LCAxMSwgNSwgMjI3LCAxNzcsIDExLCA1LCAyMjcsIDE4MSwgMTEsIDUsIDIyNywgMTgwLCAxMSwgNSwgMjI3LCAxODMsIAorICAgIDExLCA1LCAyMjcsIDE4MiwgMTEsIDUsIDIyNywgMTcyLCAxMSwgNSwgMjI3LCAxNzEsIDExLCA1LCAyMjcsIDE3OSwgMTEsIAorICAgIDUsIDIyNywgMTc1LCAxMSwgNSwgMjI3LCAxNzMsIDExLCA1LCAyMjcsIDE3NCwgMTEsIDUsIDIyNywgMTY4LCAxMSwgNSwgCisgICAgMjI3LCAxNjcsIDExLCA1LCAyMjcsIDE3MCwgMTEsIDUsIDIyNywgMTY5LCAxMSwgNSwgMjE5LCA3NSwgMTEsIDUsIDIxOSwgCisgICAgNzQsIDExLCA1LCAyMTksIDgyLCAxMSwgNSwgMjE5LCA3NiwgMTEsIDUsIDIxOSwgNzgsIDExLCA1LCAyMTksIDc3LCAxMSwgCisgICAgNSwgMjE5LCA4MSwgMTEsIDUsIDIxOSwgNzksIDExLCA1LCAyMTksIDY0LCAxMSwgNSwgMjE5LCA2NSwgMTEsIDUsIDIxOSwgCisgICAgNzAsIDExLCA1LCAyMTksIDY5LCAxMSwgNSwgMjE5LCA3MywgMTEsIDUsIDIxOSwgNzEsIDExLCA1LCAyMTksIDU5LCAxMSwgCisgICAgNSwgMjE5LCA2OCwgMTEsIDUsIDIxOSwgNjMsIDExLCA1LCAyMTksIDYwLCAxMSwgNSwgMjE5LCA2MSwgMTEsIDUsIDIxOSwgCisgICAgNTQsIDExLCA1LCAyMTksIDUzLCAxMSwgNSwgMjE5LCA1OCwgMTEsIDUsIDIxOSwgNTcsIDExLCA1LCAyMTksIDU1LCAxMSwgCisgICAgNSwgMjE5LCA1NiwgMTEsIDUsIDIxOCwgMjksIDExLCA1LCAyMTgsIDI4LCAxMSwgNSwgMjE4LCA0MSwgMTEsIDUsIDIxOCwgCisgICAgMzMsIDExLCA1LCAyMTgsIDM4LCAxMSwgNSwgMjE4LCAzNywgMTEsIDUsIDIxOCwgNDAsIDExLCA1LCAyMTgsIDM5LCAxMSwgCisgICAgNSwgMjE4LCAxNCwgMTEsIDUsIDIxOCwgMTYsIDExLCA1LCAyMTgsIDE1LCAxMSwgNSwgMjE4LCAyMSwgMTEsIDUsIDIxOCwgCisgICAgMjAsIDExLCA1LCAyMTgsIDI2LCAxMSwgNSwgMjE4LCAyMiwgMTEsIDUsIDIxOCwgMTIsIDExLCA1LCAyMTgsIDEwLCAxMSwgCisgICAgNSwgMjE4LCAxOSwgMTEsIDUsIDIxOCwgMTMsIDExLCA1LCAyMDAsIDE2MSwgMTEsIDUsIDIwMCwgMTYwLCAxMSwgNSwgMjAwLCAKKyAgICAxNjksIDExLCA1LCAyMDAsIDE2MywgMTEsIDUsIDIwMCwgMTY1LCAxMSwgNSwgMjAwLCAxNjQsIDExLCA1LCAyMDAsIDE2NywgCisgICAgMTEsIDUsIDIwMCwgMTY2LCAxMSwgNSwgMjAwLCAxNDksIDExLCA1LCAyMDAsIDE1MCwgMTEsIDUsIDIwMCwgMTU0LCAxMSwgCisgICAgNSwgMjAwLCAxNTMsIDExLCA1LCAyMDAsIDE1OSwgMTEsIDUsIDIwMCwgMTU3LCAxMSwgNSwgMjAwLCAxMjcsIDExLCA1LCAKKyAgICAyMDAsIDEyNSwgMTEsIDUsIDIwMCwgMTQwLCAxMSwgNSwgMjAwLCAxMzAsIDExLCA1LCAyMDAsIDEyOCwgMTEsIDUsIDIwMCwgCisgICAgMTI5LCAxMSwgNSwgMTk5LCAyNTEsIDExLCA1LCAxOTksIDI0OSwgMTEsIDUsIDIwMCwgOSwgMTEsIDUsIDE5OSwgMjUyLCAKKyAgICAxMSwgNSwgMjAwLCAzLCAxMSwgNSwgMjAwLCAyLCAxMSwgNSwgMjAwLCA2LCAxMSwgNSwgMjAwLCA0LCAxMSwgNSwgMTk5LCAKKyAgICAxODksIDExLCA1LCAxOTksIDE4OCwgMTEsIDUsIDE5OSwgMTkyLCAxMSwgNSwgMTk5LCAxOTAsIDExLCA1LCAxOTksIDIyNSwgCisgICAgMTEsIDUsIDE5OSwgMjIxLCAxMSwgNSwgMTk5LCAyNDUsIDExLCA1LCAxOTksIDIyOSwgMTEsIDUsIDE5OSwgMTgwLCAxMSwgCisgICAgNSwgMTk5LCAxNzYsIDExLCA1LCAxOTksIDIxMSwgMTEsIDUsIDE5OSwgMTg3LCAxMSwgNSwgMTk5LCAxODMsIDExLCA1LCAKKyAgICAxOTksIDE4NCwgMTEsIDUsIDE5OSwgMTYwLCAxMSwgNSwgMTk5LCAxNTksIDExLCA1LCAxOTksIDE2NywgMTEsIDUsIDE5OSwgCisgICAgMTYzLCAxMSwgNSwgMTk5LCAxNjEsIDExLCA1LCAxOTksIDE2MiwgMTEsIDQyLCAyMTQsIDEwMCwgMTEsIDQyLCAyMjQsIAorICAgIDIxMCwgMTEsIDQyLCAyMjYsIDEyNywgMTEsIDQyLCAyMTgsIDMzLCAxMSwgNDIsIDI0MiwgMTYyLCAxMSwgNDIsIDIwOCwgCisgICAgMTQ3LCAxMSwgNDIsIDIzNSwgMjE4LCAxMSwgNDIsIDIzNSwgMjUwLCAxMSwgNDIsIDIyMSwgMjExLCAxMSwgNDIsIDIzMywgCisgICAgNDcsIDExLCA0MiwgMjIzLCAyNTAsIDExLCA0MiwgMjQ5LCAxNiwgMTEsIDQyLCAyMjEsIDc5LCAxMSwgNDIsIDE5OSwgMjQ1LCAKKyAgICAxMSwgNDIsIDIxNCwgMTkyLCAxMSwgNDIsIDIzMywgNDEsIDExLCA0MiwgMjA2LCAyMjYsIDExLCA0MiwgMjM2LCA4OSwgMTEsIAorICAgIDQyLCAxOTgsIDI1MSwgMTEsIDQyLCAyNDIsIDE1NiwgMTEsIDQyLCAyNDEsIDE4MCwgMTEsIDQyLCAyNDgsIDMsIDExLCA0MiwgCisgICAgMjM1LCAyMTQsIDExLCA0MiwgMjE4LCAyMiwgMTEsIDQyLCAyMDQsIDIxNSwgMTEsIDQyLCAyMTcsIDU0LCAxMSwgNDIsIAorICAgIDIyNywgMTcyLCAxMSwgNDIsIDE5OSwgMTAsIDExLCA0MiwgMjE0LCAxNzEsIDExLCA0MiwgMjMzLCAyNDksIDExLCA0MiwgCisgICAgMTk5LCAyNTEsIDExLCA0MiwgMjAxLCAxNjIsIDExLCA0MiwgMjA5LCAxOTEsIDExLCA0MiwgMjAzLCA0OCwgMTEsIDQyLCAKKyAgICAxOTksIDExNCwgMTEsIDQyLCAyMjcsIDE2NiwgMTEsIDQyLCAyMTcsIDI0MiwgMTEsIDQyLCAyMjcsIDE3MCwgMTEsIDQyLCAKKyAgICAyMzUsIDk0LCAxMSwgNDIsIDIyNywgMTkwLCAxMSwgNDIsIDIwMSwgMCwgMTEsIDQyLCAyMzksIDEzNywgMTEsIDQyLCAyMDksIAorICAgIDIwNywgMTEsIDQyLCAyMjQsIDIwNCwgMTEsIDQyLCAyNDIsIDE2OCwgMTEsIDQyLCAyNDIsIDIwNSwgMTEsIDQyLCAyNDYsIAorICAgIDE1NywgMTEsIDQyLCAyMzMsIDQ0LCAxMSwgNDIsIDIxMCwgNzUsIDExLCA0MiwgMTk4LCAyNTAsIDExLCA0MiwgMjA5LCAKKyAgICAyNTQsIDExLCA0MiwgMjQ3LCA4LCAxMSwgNDIsIDE5OCwgMjIwLCAxMSwgNDIsIDIyMCwgMTAxLCAxMSwgNDIsIDIyNywgOCwgCisgICAgMjI0LCAxNTMsIDEsIDI0OSwgMTM2LCAyMjQsIDE1MywgMSwgMTcyLCAyMjQsIDE1MywgMSwgMjE1LCAyNDUsIDIyNCwgMTUzLCAKKyAgICAxLCAyNDIsIDU4LCAyMjQsIDE1MywgMSwgMjA3LCAzNiwgMjI0LCAxNTMsIDEsIDIwNiwgMTIyLCAyMjQsIDE1MywgMSwgCisgICAgMjM2LCA4OSwgMjI0LCAxNTMsIDEsIDE2MSwgMjI0LCAxNTMsIDEsIDIyNiwgMjA3LCAyMjQsIDE1MywgMSwgMjI3LCAyNDgsIAorICAgIDIyNCwgMTUzLCAxLCAyNDcsIDE5MCwgMjI0LCAxNTMsIDEsIDI0NywgMzcsIDIyNCwgMTUzLCAxLCAyMzksIDkzLCAyMjQsIAorICAgIDE1MywgMSwgMjA1LCAzMiwgMjI0LCAxNTMsIDEsIDIwNSwgMjIsIDIyNCwgMTUzLCAxLCAxNzgsIDIyNCwgMTUzLCAxLCAKKyAgICAxODgsIDIyNCwgMTUzLCAxLCAxOTQsIDIyNCwgMTUzLCAxLCAyMTIsIDY0LCAyMjQsIDE1MywgMSwgMTk5LCA3NywgMjI0LCAKKyAgICAxNTMsIDEsIDE5OSwgMTE0LCAyMjQsIDE1MywgMSwgMjE5LCAyNTMsIDIyNCwgMTUzLCAxLCAxNDQsIDIyNCwgMTUzLCAxLCAKKyAgICAyMDAsIDE4MSwgMjI0LCAxNTMsIDEsIDIzNCwgODQsIDIyNCwgMTUzLCAxLCAyMzcsIDE5NSwgMjI0LCAxNTMsIDEsIDIwMSwgCisgICAgMTE0LCAyMjQsIDE1MywgMSwgMjEwLCAxMTQsIDIyNCwgMTUzLCAxLCAxODMsIDIyNCwgMTUzLCAxLCAyMzUsIDE5OSwgMjI0LCAKKyAgICAxNTMsIDEsIDYyLCAyMjQsIDE1MywgMSwgMjUxLCAyMjEsIDIyNCwgMTUzLCAxLCA3MiwgMjI0LCAxNTMsIDEsIDIzOCwgNjksIAorICAgIDIyNCwgMTUzLCAxLCA3MCwgMjI0LCAxNTMsIDEsIDc0LCAyMjQsIDE1MywgMSwgNjYsIDIyNCwgMTUzLCAxLCAyMDQsIDMxLCAKKyAgICAyMjQsIDE1MywgMSwgMjA0LCAyNSwgMjI0LCAxNTMsIDEsIDIxNywgMTIxLCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgCisgICAgMjA2LCAxNSwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAxNjIsIDIxNSwgMTA2LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIAorICAgIDIyMSwgMjQyLCAxNjcsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAyNDgsIDEyNCwgMjI0LCAxNTMsIDEsIDE1MCwgCisgICAgMjIwLCAyMjEsIDE4OCwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIDIyNywgMjE2LCAyMjQsIDE1MywgMjE0LCAyMTIsIAorICAgIDI0NiwgNzAsIDIyNCwgMTUzLCAyMTQsIDIxMiwgMjM2LCAxODMsIDIwOCwgNzYsIDUwLCA1LCAyMzgsIDI1NSwgNTAsIDUsIAorICAgIDIzOCwgMjUxLCA1MCwgNSwgMjM0LCAxMjAsIDUwLCA1LCAyMDEsIDU3LCA1MCwgNSwgMjAxLCA1NiwgNTAsIDUsIDIxNiwgCisgICAgNjEsIDUwLCA1LCAyNDgsIDE5NSwgNTAsIDUsIDI0OCwgMjUyLCA1MCwgNSwgMjIyLCAxMDIsIDUwLCA1LCAyMjYsIDQ1LCAKKyAgICA1MCwgNSwgMjIxLCAyNDMsIDUwLCA1LCAyMzYsIDI4LCA1MCwgNSwgMjM3LCAxNDAsIDUwLCA1LCAyMDMsIDU0LCA1MCwgNSwgCisgICAgMjA2LCAxOTAsIDUwLCA1LCAyMDYsIDEwNCwgNTAsIDUsIDI0MSwgOTAsIDUwLCA1LCAyNDEsIDg3LCA1MCwgNSwgMjI1LCAKKyAgICAzMiwgNTAsIDUsIDIxMywgMTY3LCA1MCwgNSwgMjQxLCAxNjEsIDUwLCA1LCAyMjAsIDY2LCA1MCwgNSwgMjExLCAxOTAsIAorICAgIDUwLCA1LCAyMTAsIDYzLCA1MCwgNSwgMTk5LCA4NywgNTAsIDUsIDE5OSwgNjcsIDUwLCA1LCAyNDcsIDY4LCA1MCwgNSwgCisgICAgMjI3LCAyMjUsIDUwLCA1LCAyMTksIDg5LCA1MCwgNSwgMjAwLCA0OCwgNTAsIDUsIDIyNywgNSwgNTAsIDUsIDIxOSwgMjI2LCAKKyAgICA1MCwgNSwgMjM2LCA3LCA1MCwgNSwgMjIyLCA2NCwgNTAsIDUsIDIyMCwgMjksIDUwLCA1LCAyMTgsIDQ5LCA1MCwgNSwgNzAsIAorICAgIDUwLCA1LCAyMjgsIDExNywgNTAsIDUsIDIzNCwgNzUsIDUwLCA1LCAyMzQsIDUzLCA1MCwgNSwgMjAxLCAzMSwgNTAsIDUsIAorICAgIDIwMSwgMTgsIDUwLCA1LCAyMTUsIDIwNCwgNTAsIDUsIDI0OCwgMTkzLCA1MCwgNSwgMjQ4LCAxODgsIDUwLCA1LCAyMjIsIAorICAgIDk1LCA1MCwgNSwgMjI2LCA0MiwgNTAsIDUsIDIyMSwgMjQwLCA1MCwgNSwgMjM2LCAyNCwgNTAsIDUsIDIzNywgMTEyLCA1MCwgCisgICAgNSwgMjAyLCAyMzQsIDUwLCA1LCAyMDYsIDE1LCA1MCwgNSwgMjA2LCA4NCwgNTAsIDUsIDI0MSwgODIsIDUwLCA1LCAyNDEsIAorICAgIDg2LCA1MCwgNSwgMjI0LCAyMTAsIDUwLCA1LCAyMTMsIDg4LCA1MCwgNSwgMjQxLCA3NiwgNTAsIDUsIDIyMCwgNjAsIDUwLCAKKyAgICA1LCAyMDksIDE4MiwgNTAsIDUsIDIxMCwgMzMsIDUwLCA1LCAxOTksIDM2LCA1MCwgNSwgMTk5LCA2MywgNTAsIDUsIDI0NiwgCisgICAgMTczLCA1MCwgNSwgMjI3LCAyMDcsIDUwLCA1LCAyMTksIDgyLCA1MCwgNSwgMjAwLCA5LCA1MCwgNSwgMjI2LCAxNjMsIDUwLCAKKyAgICA1LCAyMTksIDIxOCwgNTAsIDUsIDIzNSwgMTYxLCA1MCwgNSwgMjIxLCAyMTEsIDUwLCA1LCAyMTksIDE1MCwgNTAsIDUsIAorICAgIDIxOCwgNDEsIDUwLCA1LCA2MiwgNTAsIDUsIDI1MSwgODUsIDUwLCA1LCAyMTksIDI0OCwgNTAsIDUsIDE0NCwgNTAsIDUsIAorICAgIDIzNCwgMjAyLCA1MCwgNSwgMjAxLCAxMTQsIDUwLCA1LCAyMDEsIDEwMCwgNTAsIDUsIDE3MiwgNTAsIDUsIDI0OCwgMjAwLCAKKyAgICA1MCwgNSwgMjQ5LCAxMzYsIDUwLCA1LCAyMjIsIDExMCwgNTAsIDUsIDIyNiwgNTAsIDUwLCA1LCAyMjYsIDQ4LCA1MCwgNSwgCisgICAgMjIxLCAyNDcsIDUwLCA1LCAyMzYsIDMyLCA1MCwgNSwgMjM3LCAxOTUsIDUwLCA1LCAyMDMsIDkwLCA1MCwgNSwgMjA3LCAKKyAgICAzNiwgNTAsIDUsIDIwNiwgMTIyLCA1MCwgNSwgMjQxLCAxMDAsIDUwLCA1LCAyNDEsIDg5LCA1MCwgNSwgMTk0LCA1MCwgNSwgCisgICAgMjEzLCAyNTIsIDUwLCA1LCAyNDIsIDU4LCA1MCwgNSwgMjIwLCA3NSwgNTAsIDUsIDIxMiwgNjQsIDUwLCA1LCAyMTAsIAorICAgIDExNCwgNTAsIDUsIDE5OSwgMTE0LCA1MCwgNSwgMTk5LCA3NywgNTAsIDUsIDI0NywgMTkwLCA1MCwgNSwgMjI3LCAyNDgsIAorICAgIDUwLCA1LCAyMTksIDk4LCA1MCwgNSwgMTgzLCA1MCwgNSwgMTYxLCA1MCwgNSwgMjI3LCA2OCwgNTAsIDUsIDIxOSwgMjMyLCAKKyAgICA1MCwgNSwgMjM2LCA4OSwgNTAsIDUsIDE3OCwgNTAsIDUsIDE4OCwgNTAsIDUsIDIxOCwgNjAsIDUwLCA1LCAyMTcsIDYzLCAKKyAgICA1MCwgNSwgMjE3LCA1OCwgNTAsIDUsIDIzMywgMTg4LCA1MCwgNSwgMjAwLCAyNDQsIDUwLCA1LCAyMDAsIDI0MCwgNTAsIDUsIAorICAgIDIxNSwgODEsIDUwLCA1LCAyNDgsIDE5MSwgNTAsIDUsIDI0OCwgMTExLCA1MCwgNSwgMjIyLCA5MCwgNTAsIDUsIDIyNiwgCisgICAgNDAsIDUwLCA1LCAyMjEsIDIzNiwgNTAsIDUsIDIzNiwgMjAsIDUwLCA1LCAyMzcsIDIsIDUwLCA1LCAyMDIsIDE3OSwgNTAsIAorICAgIDUsIDIwNSwgMTYxLCA1MCwgNSwgMjA2LCA1NiwgNTAsIDUsIDI0MSwgNzksIDUwLCA1LCAyNDEsIDg0LCA1MCwgNSwgMjI0LCAKKyAgICA3OCwgNTAsIDUsIDIxMiwgMjM4LCA1MCwgNSwgMjQwLCAxODcsIDUwLCA1LCAyMjAsIDQ3LCA1MCwgNSwgMjA5LCAxMCwgNTAsIAorICAgIDUsIDIxMCwgMiwgNTAsIDUsIDE5OSwgMTIsIDUwLCA1LCAxOTksIDU4LCA1MCwgNSwgMjQzLCAzMCwgNTAsIDUsIDIyNywgCisgICAgMTU2LCA1MCwgNSwgMjE5LCA3MiwgNTAsIDUsIDE5OSwgMjMwLCA1MCwgNSwgMjI2LCA2OCwgNTAsIDUsIDIxOSwgMjE2LCAKKyAgICA1MCwgNSwgMjM1LCAxMDUsIDUwLCA1LCAyMjEsIDg3LCA1MCwgNSwgMjE4LCAyMjksIDUwLCA1LCAyMTgsIDIzLCA1MCwgNSwgCisgICAgNjYsIDUwLCA1LCAyMDQsIDUsIDUwLCA1LCAyMzMsIDk3LCA1MCwgNSwgMjMzLCA4NCwgNTAsIDUsIDIwMCwgMjE2LCA1MCwgCisgICAgNSwgMjAwLCAyMDksIDUwLCA1LCAyMTQsIDIyNCwgNTAsIDUsIDI0OCwgMTkwLCA1MCwgNSwgMjQ4LCAzNiwgNTAsIDUsIAorICAgIDIyMiwgODksIDUwLCA1LCAyMjYsIDM4LCA1MCwgNSwgMjIxLCAyMzUsIDUwLCA1LCAyMzYsIDE5LCA1MCwgNSwgMjM2LCAKKyAgICAxODksIDUwLCA1LCAyMDEsIDE2NiwgNTAsIDUsIDIwNCwgMjE1LCA1MCwgNSwgMjA2LCAzNSwgNTAsIDUsIDI0MSwgNzcsIAorICAgIDUwLCA1LCAyNDEsIDgzLCA1MCwgNSwgMjI0LCA0MiwgNTAsIDUsIDIxMiwgMTc1LCA1MCwgNSwgMjM5LCAxMzcsIDUwLCA1LCAKKyAgICAyMjAsIDQyLCA1MCwgNSwgMjA4LCAyNCwgNTAsIDUsIDIwOSwgMjIwLCA1MCwgNSwgMTk5LCAzLCA1MCwgNSwgMTk5LCA1NCwgCisgICAgNTAsIDUsIDI0MiwgMjE0LCA1MCwgNSwgMjI3LCAxNDcsIDUwLCA1LCAyMTksIDY4LCA1MCwgNSwgMTk5LCAyMTEsIDUwLCA1LCAKKyAgICAyMjYsIDE1LCA1MCwgNSwgMjE5LCAyMTUsIDUwLCA1LCAyMzUsIDUwLCA1MCwgNSwgMjIxLCA0MSwgNTAsIDUsIDIxOCwgCisgICAgMTMzLCA1MCwgNSwgMjE4LCAxOSwgNTAsIDUsIDc0LCA1MCwgNSwgMjE3LCA3OCwgNTAsIDUsIDIxOSwgMTc0LCA1MCwgNSwgCisgICAgMjMzLCAyMDcsIDUwLCA1LCAyMzMsIDE5MSwgNTAsIDUsIDIwMSwgMCwgNTAsIDUsIDIwMCwgMjQ1LCA1MCwgNSwgMjE1LCAKKyAgICAxMDYsIDUwLCA1LCAyNDgsIDE5MiwgNTAsIDUsIDI0OCwgMTI0LCA1MCwgNSwgMjIyLCA5MSwgNTAsIDUsIDIyNiwgNDEsIAorICAgIDUwLCA1LCAyMjEsIDIzOCwgNTAsIDUsIDIzNiwgMjIsIDUwLCA1LCAyMzYsIDIxLCA1MCwgNSwgMjM3LCAxMywgNTAsIDUsIAorICAgIDIwMiwgMTkzLCA1MCwgNSwgMTM4LCA1MCwgNSwgMjA2LCA2MSwgNTAsIDUsIDI0MSwgODAsIDUwLCA1LCAyNDEsIDg1LCA1MCwgCisgICAgNSwgMjI0LCAxMTAsIDUwLCA1LCAyMTMsIDEsIDUwLCA1LCAyNDAsIDIxMSwgNTAsIDUsIDIyMCwgNTEsIDUwLCA1LCAyMDksIAorICAgIDI5LCA1MCwgNSwgMjEwLCA4LCA1MCwgNSwgMTk5LCAxNCwgNTAsIDUsIDE5OSwgNjAsIDUwLCA1LCAyNDYsIDkxLCA1MCwgNSwgCisgICAgMjI3LCAxNjYsIDUwLCA1LCAyMTksIDczLCA1MCwgNSwgMTk5LCAyNDUsIDUwLCA1LCAyMjYsIDg4LCA1MCwgNSwgMjE5LCAKKyAgICAyMTcsIDUwLCA1LCAyMzUsIDExNiwgNTAsIDUsIDIyMSwgMTM2LCA1MCwgNSwgMjE4LCAyNDEsIDUwLCA1LCAyMTgsIDI2LCAKKyAgICA1MCwgNSwgNzIsIDUwLCA1LCAyMzgsIDE3OSwgNTAsIDUsIDIxOSwgMjM3LCA1MCwgNSwgMjM0LCAxMzksIDUwLCA1LCAyMzQsIAorICAgIDEwNSwgNTAsIDUsIDIwMSwgNjQsIDUwLCA1LCAyMDEsIDUxLCA1MCwgNSwgMjE2LCA3MywgNTAsIDUsIDI0OCwgMTk2LCA1MCwgCisgICAgNSwgMjQ5LCA4LCA1MCwgNSwgMjIyLCAxMDMsIDUwLCA1LCAyMjYsIDQ2LCA1MCwgNSwgMjI2LCA0NCwgNTAsIDUsIDIyMSwgCisgICAgMjQ0LCA1MCwgNSwgMjM2LCAyOSwgNTAsIDUsIDIzNiwgMjcsIDUwLCA1LCAyMzcsIDE0NywgNTAsIDUsIDIwMywgNTksIDUwLCAKKyAgICA1LCAyMDYsIDIwMSwgNTAsIDUsIDIwNiwgMTA2LCA1MCwgNSwgMjQxLCA5MSwgNTAsIDUsIDI0MSwgODgsIDUwLCA1LCAyMjUsIAorICAgIDQwLCA1MCwgNSwgMjEzLCAxOTAsIDUwLCA1LCAyNDEsIDE3NSwgNTAsIDUsIDIyMCwgNjcsIDUwLCA1LCAyMTEsIDIwMiwgCisgICAgNTAsIDUsIDIxMCwgNjUsIDUwLCA1LCAxOTksIDg5LCA1MCwgNSwgMTk5LCA2OCwgNTAsIDUsIDI0NywgNzYsIDUwLCA1LCAKKyAgICAyMjcsIDIyNywgNTAsIDUsIDIxOSwgOTEsIDUwLCA1LCAyMDAsIDUxLCA1MCwgNSwgMjI3LCA4LCA1MCwgNSwgMjE5LCAyMjcsIAorICAgIDUwLCA1LCAyMTksIDIyMywgNTAsIDUsIDIzNiwgMTUsIDUwLCA1LCAyMzYsIDEsIDUwLCA1LCAyMjIsIDc2LCA1MCwgNSwgCisgICAgMjIwLCAzNCwgNTAsIDUsIDIxOCwgNTAsIDUwLCA1LCAyMTksIDI1NSwgNTAsIDUsIDIyNCwgMjUwLCA1MCwgMjQ2LCA3MCwgCisgICAgNTAsIDIzNiwgMTgzLCAyMDgsIDc2LCA1MCwgMjE0LCA3OSwgODEsIDUwLCA1LCAyMjAsIDUwLCAyMzcsIDE5NSwgNTAsIDUsIAorICAgIDIyMCwgNTAsIDE2MSwgNTAsIDUsIDIyMCwgNTAsIDIwOSwgMTAsIDUwLCAxNiwgMjM3LCAxMzYsIDUwLCAxNiwgMjI3LCAzLCAKKyAgICA1MCwgMTYsIDIwNSwgMjI4LCA1MCwgMTYsIDIxOSwgMTI1LCA1MCwgMTYsIDI0OSwgODMsIDUwLCAxNiwgMjM3LCAxOTQsIAorICAgIDUwLCAxNiwgMjA3LCAzMiwgNTAsIDE2LCAyNDIsIDgsIDUwLCAxNiwgMjQwLCAxODYsIDUwLCAxNiwgMjI1LCAyNTUsIDUwLCAKKyAgICAxNiwgMjA1LCAxNjUsIDUwLCAxNiwgMjQwLCAyMTAsIDUwLCAxNiwgMjI3LCAxNTcsIDUwLCAxNywgMTk5LCA4MSwgNTAsIAorICAgIDE3LCAxMDIsIDUwLCAxNywgMTA1LCA1MCwgMTcsIDE0NywgNTAsIDE3LCAxNDksIDUwLCAxNywgMTY0LCA1MCwgMTcsIDE4NywgCisgICAgNTAsIDE3LCAyMTAsIDEzNSwgNTAsIDE3LCAxOTIsIDUwLCAxNywgMjE5LCAxMTMsIDUwLCA1LCAyMjAsIDUwLCAxNzgsIDUwLCAKKyAgICA1LCAyMjAsIDUwLCAyNDAsIDIxMSwgMzcsIDYsIDEsIDE5OSwgODUsIDM3LCA0LCAxLCAxOTksIDg1LCAzNywgNiwgMSwgCisgICAgMjM5LCA4OCwgMzcsIDQsIDEsIDIzOSwgODgsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMjM5LCA5MCwgMzcsIDQsIDEsIDIxMywgCisgICAgMTA1LCAyMzksIDkwLCAzNywgNiwgMSwgMjI4LCA0MSwgMzcsIDQsIDEsIDIyOCwgNDEsIDM3LCA2LCAxLCAyNDAsIDIyNywgCisgICAgMzcsIDQsIDEsIDI0MCwgMjI3LCAzNywgNiwgMSwgMjIxLCA5NSwgMjA0LCAyMCwgMzcsIDQsIDEsIDIyMSwgOTUsIDIwNCwgCisgICAgMjAsIDM3LCA2LCAxLCAyNDgsIDQ3LCAyMTcsIDgzLCAzNywgNCwgMSwgMjQ4LCA0NywgMjE3LCA4MywgMzcsIDYsIDEsIAorICAgIDIyMCwgMTAsIDIwMCwgMzMsIDM3LCA0LCAxLCAyMjAsIDEwLCAyMDAsIDMzLCAzNywgNiwgMSwgMjAwLCAzMCwgMywgMjQ5LCAKKyAgICAxMzAsIDIwMCwgMzMsIDM3LCA0LCAxLCAyMDAsIDMwLCAzLCAyNDksIDEzMCwgMjAwLCAzMywgMzcsIDYsIDEsIDIyOCwgMzksIAorICAgIDIwMCwgNjUsIDM3LCA0LCAxLCAyMjgsIDM5LCAyMDAsIDY1LCAzNywgNiwgMSwgMjEzLCAxMDUsIDE5OSwgMjExLCAzNywgNCwgCisgICAgMSwgMjEzLCAxMDUsIDE5OSwgMjExLCAzNywgNiwgMSwgMjI4LCAzOSwgNjIsIDM3LCA0LCAxLCAyMjgsIDM5LCA2MiwgMzcsIAorICAgIDYsIDEsIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgCisgICAgMTgxLCAzNywgNiwgMSwgMjQ4LCAxMzYsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ4LCAxMzYsIDE5OSwgMTgxLCAzNywgNiwgCisgICAgMSwgMjI4LCAzOSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgMzksIDI0NiwgMTEwLCAKKyAgICAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA2LCAxLCAxOTksIDI0NywgMzcsIDQsIDEsIDE5OSwgMjQ3LCAzNywgNiwgMSwgCisgICAgMjEzLCAxMDUsIDIwNSwgMjYsIDM3LCA0LCAxLCAyMTMsIDEwNSwgMjA1LCAyNiwgMzcsIDYsIDEsIDIwOSwgMjMsIDI0MSwgCisgICAgMTc1LCAzNywgNCwgMSwgMjA5LCAyMywgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMDksIDIzLCAyMzgsIDIwOSwgMzcsIDQsIDEsIAorICAgIDIwOSwgMjMsIDIzOCwgMjA5LCAzNywgNiwgMSwgMjA5LCAyMywgMjM4LCAxOTAsIDM3LCA0LCAxLCAyMDksIDIzLCAyMzgsIAorICAgIDE5MCwgMzcsIDYsIDEsIDIyMSwgOTksIDc0LCAzNywgNCwgMSwgMjIxLCA5OSwgNzQsIDM3LCA2LCAxLCAyNDgsIDE2NSwgCisgICAgNzQsIDM3LCA0LCAxLCAyNDgsIDE2NSwgNzQsIDM3LCA2LCAxLCA1MywgMjIxLCA5OSwgNzQsIDM3LCA0LCAxLCA1MywgMjIxLCAKKyAgICA5OSwgNzQsIDM3LCAxLCAyMjEsIDIyLCA3NCwgMzgsIDM3LCAyMDEsIDE0OSwgMzgsIDM3LCAyMDYsIDE2NywgMjIxLCAxNjgsIAorICAgIDU0LCAzOCwgMzcsIDIzMywgODMsIDIyMSwgMTY4LCA1NCwgMzgsIDM3LCAyMDYsIDUxLCAyMjEsIDE2OCwgNTQsIDIwOSwgCisgICAgNzMsIDI1MCwgMTY1LCAzOCwgMzcsIDEsIDIwNCwgMTcsIDIyOCwgMTc4LCAzOCwgMzcsIDEsIDcwLCAzOCwgMzcsIDEsIAorICAgIDIwMCwgOSwgMzgsIDM3LCAxLCA2NiwgMzgsIDM3LCAxLCAyMzQsIDE2NSwgNTQsIDM4LCAzNywgMSwgMjAwLCAyOSwgMzgsIAorICAgIDM3LCAxLCAyMDksIDIzLCA1NCwgMzgsIDM3LCAxLCAyMTcsIDgzLCAzOCwgMzcsIDIyNywgMjAsIDM4LCAzNywgMjE2LCA4MCwgCisgICAgMzcsIDIyNywgMjAsIDM3LCAyMTYsIDgwLCAzNywgNiwgMSwgMjM5LCAxMDMsIDM3LCA0LCAxLCAyMzksIDEwMywgMzcsIDYsIAorICAgIDEsIDIzOSwgNzksIDM3LCA0LCAxLCAyMzksIDc5LCAzNywgNiwgMSwgMTk5LCA0NCwgMzcsIDQsIDEsIDE5OSwgNDQsIDM3LCAKKyAgICA2LCAxLCAyNDcsIDkyLCAzNywgNCwgMSwgMjQ3LCA5MiwgMzcsIDYsIDEsIDIzOSwgNzYsIDM3LCA0LCAxLCAyMzksIDc2LCAKKyAgICAzNywgNiwgMSwgMjA2LCAyMDIsIDMsIDEwMSwgMTE3LCAzNywgNCwgMSwgMjA2LCAyMDIsIDMsIDEwMSwgMTE3LCAzNywgNiwgCisgICAgMSwgMjA0LCAxNjgsIDM3LCA0LCAxLCAyMDQsIDE2OCwgMzcsIDYsIDEsIDIwNSwgMSwgMzcsIDQsIDEsIDIwNSwgMSwgMzcsIAorICAgIDYsIDEsIDIwNSwgNiwgMzcsIDQsIDEsIDIwNSwgNiwgMzcsIDYsIDEsIDIwNiwgMjA3LCAzNywgNCwgMSwgMjA2LCAyMDcsIAorICAgIDM3LCA2LCAxLCAyMzMsIDY1LCAzNywgNCwgMSwgMjMzLCA2NSwgMzcsIDYsIDEsIDIwOSwgMTk3LCAzNywgNCwgMSwgMjA5LCAKKyAgICAxOTcsIDM3LCA2LCAxLCA1MywgNzQsIDM3LCA0LCAxLCA1MywgNzQsIDM3LCA2LCAxLCAyNDIsIDIzMiwgNzQsIDM3LCA0LCAKKyAgICAxLCAyNDIsIDIzMiwgNzQsIDY3LCAxLCAzNywgMjM0LCAxNjUsIDU0LCA2NywgMSwgMzcsIDIwOSwgMjMsIDU0LCAzOCwgMzcsIAorICAgIDEsIDIzOCwgMjQ4LCAzOCwgMzcsIDEsIDIyOCwgMzksIDcyLCAyNSwgMSwgNjIsIDI1LCAxLCAxNjEsIDI1LCAxLCA2NiwgCisgICAgMjUsIDEsIDIyNiwgMTUsIDI1LCAxLCAyMzgsIDI1NSwgMjUsIDEsIDIxMywgMTY3LCAyNSwgMSwgMjA3LCAxNSwgMjUsIDEsIAorICAgIDc0LCAyNSwgMSwgMjE4LCA0MSwgMjUsIDEsIDcwLCAyNSwgMSwgMTk0LCAyNSwgMSwgMTcyLCAyNSwgMSwgMjEzLCAzMywgCisgICAgMjUsIDEsIDIxMywgODEsIDI1LCAxLCAyMjUsIDMxLCAyNSwgMSwgMjIyLCA2MywgMjUsIDEsIDIwNywgMzIsIDI1LCAxLCAKKyAgICAyMjAsIDczLCAyNSwgMSwgMjE5LCA5NiwgMjUsIDEsIDIyMywgMjQzLCAyNSwgMSwgMjA3LCAxOTMsIDI1LCAxLCAyMjEsIAorICAgIDQxLCAyNSwgMSwgMjEwLCAyOCwgMjUsIDEsIDIwOSwgMTgyLCAyNSwgMSwgMjEwLCAzOCwgMjUsIDEsIDIxMCwgMTM3LCAyNSwgCisgICAgMSwgMjI1LCAxOTksIDI1LCAxLCAyMjYsIDIzMywgMjUsIDEsIDIxOCwgMTA0LCAyNSwgMSwgMjE4LCAxMzMsIDI1LCAxLCAKKyAgICAyMTksIDY3LCAyNSwgMSwgMTk5LCAyMjcsIDI1LCAxLCAyMDksIDIyMCwgMjUsIDEsIDE5OSwgMTg1LCAyNSwgMSwgMTgzLCAKKyAgICAyNSwgMSwgMjE4LCAxNjcsIDI1LCAxLCAyMjYsIDIxOSwgMjUsIDEsIDIxNSwgMjQ5LCAyNSwgMSwgMjE5LCA4OSwgMjUsIDEsIAorICAgIDIxOCwgMTQ4LCAyNSwgMSwgMjE0LCAyMTYsIDI1LCAxLCAyMDAsIDIxMywgMjUsIDEsIDIxNiwgNjEsIDI1LCAxLCAyMzcsIAorICAgIDE0MCwgMjUsIDEsIDIxMiwgMTc1LCAyNSwgMSwgMjI0LCA0MiwgMjUsIDEsIDIyMSwgMjExLCAyNSwgMSwgMjE5LCAxNTAsIAorICAgIDI1LCAxLCAyMTMsIDEwNywgMjUsIDEsIDIxMywgMjM0LCAyNSwgMSwgMjI2LCAyNDMsIDI1LCAxLCAyMTksIDE4MSwgMjUsIAorICAgIDEsIDIxOSwgMjMyLCAyNSwgMSwgMjE5LCAyNTMsIDI1LCAxLCAyMTAsIDgsIDI1LCAxLCAyMTQsIDIyMSwgMjUsIDEsIDIzNiwgCisgICAgMTg5LCAyNSwgMSwgMjM3LCA2LCAyNSwgMSwgMjAxLCAxMTQsIDI1LCAxLCAxODgsIDI1LCAxLCAyMjQsIDIxMCwgMjUsIDEsIAorICAgIDIxNSwgMjA0LCAyNSwgMSwgMjI0LCA3MCwgMjUsIDEsIDIyNiwgODgsIDI1LCAxLCAyMjIsIDEwMCwgMjUsIDEsIDIxMywgCisgICAgMTM5LCAyNSwgMSwgMjIyLCA0MCwgMjUsIDEsIDE3OCwgMjUsIDEsIDIwNiwgMTUsIDI1LCAxLCAyMjYsIDE2MywgMjUsIDEsIAorICAgIDIyMSwgMTM2LCAyNSwgMSwgMjIyLCAxMDgsIDI1LCAxLCAyMDYsIDE0NiwgMjUsIDEsIDIyNiwgNTAsIDI1LCAxLCAyMDYsIAorICAgIDE2NiwgMjUsIDEsIDIxOCwgMTM1LCAyNSwgMSwgMjEyLCAyMSwgMjUsIDEsIDIzNywgMTkxLCAyNSwgMSwgMjI2LCA1MiwgCisgICAgMjUsIDEsIDIyNiwgODMsIDI1LCAzOCwgMTM0LCAyMjYsIDYxLCAyNSwgMzgsIDEzNCwgMjA0LCAyMDYsIDI1LCAyMTksIDk1LCAKKyAgICAyNSwgMjM2LCAxODMsIDIwOCwgNzYsIDI1LCAyNDYsIDc5LCAyNSwgMjQ2LCA3MCwgMjUsIDIxMCwgMTY3LCAyNSwgMjE0LCAKKyAgICA3OSwgODEsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjE1LCAxNTYsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAKKyAgICAyMDAsIDc2LCAyMTUsIDE1NiwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTAsIDg4LCA2NywgMSwgMjQ2LCAKKyAgICAyMjIsIDE1MCwgMjAwLCA3NiwgMjEwLCA4OCwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTQsIDk3LCA2NywgCisgICAgMSwgMjQ2LCAyMjIsIDE1MCwgMjAwLCA3NiwgMjE0LCA5NywgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTIsIAorICAgIDE3NSwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDIwMCwgNzYsIDIxMiwgMTc1LCA2NywgMSwgMjM4LCAyOSwgMjM5LCAxODAsIAorICAgIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMzksIDE4MCwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMjM5LCAxODAsIDE1MCwgCisgICAgMTQ4LCA2NywgMSwgMTI4LCAyMzksIDE4MCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzksIDE4MCwgMTUwLCAxNDgsIAorICAgIDY3LCAxLCAyMzgsIDI5LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIzOSwgMTgwLCAyMjUsIAorICAgIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIAorICAgIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgCisgICAgNjcsIDEsIDIzOCwgMjksIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIAorICAgIDIyMSwgMjA2LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIAorICAgIDI4LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDczLCA4MywgMTQ4LCA2NywgMSwgNzMsIDIwOSwgNzUsIDY3LCAxLCA3MywgCisgICAgMjMzLCAxNzcsIDE0OCwgNjcsIDEsIDIyNCwgNTQsIDUxLCAyNDMsIDE2LCAyNTEsIDcwLCA2NywgMSwgMjEzLCAyMjAsIAorICAgIDExNSwgNDgsIDY3LCAxLCAyMTMsIDIyMCwgMTI3LCA0OCwgNjcsIDEsIDIxMywgMjIwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIAorICAgIDIxMywgMjIwLCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIDEyOCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDY3LCAxLCAKKyAgICAyMDgsIDU3LCAyNiwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDIwOCwgNTcsIDI2LCAxMjgsIDIwNSwgMTc0LCA4LCA2LCAxLCAKKyAgICAyMzgsIDI0MywgMjUxLCAxNDIsIDgsIDQsIDEsIDIzOCwgMjQzLCAyNTEsIDE0MiwgOCwgNiwgMSwgMjM4LCAyNDMsIDI1MSwgCisgICAgMTcxLCA4LCA0LCAxLCAyMzgsIDI0MywgMjUxLCAxNzEsIDgsIDYsIDEsIDIzNCwgMTAzLCA4LCA0LCAxLCAyMzQsIDEwMywgCisgICAgOCwgNiwgMSwgMjA0LCAxMTQsIDgsIDQsIDEsIDIwNCwgMTE0LCA4LCA2LCAxLCAyMDUsIDEwMiwgOCwgNCwgMSwgMjA1LCAKKyAgICAxMDIsIDgsIDYsIDEsIDI0MiwgMjExLCA4LCA0LCAxLCAyNDIsIDIxMSwgOCwgNiwgMSwgMjQyLCAyMTIsIDMsIDI0NiwgNzAsIAorICAgIDgsIDQsIDEsIDI0MiwgMjEyLCAzLCAyNDYsIDcwLCA4LCAxLCA0LCA2LCAyMzgsIDUsIDgsIDEsIDQsIDYsIDIxMiwgMTIyLCAKKyAgICA4LCA2LCAxLCAyNTIsIDEzOCwgOCwgNCwgMSwgMjUyLCAxMzgsIDgsIDYsIDEsIDI1MSwgMzEsIDgsIDQsIDEsIDI1MSwgMzEsIAorICAgIDgsIDYsIDEsIDI1MCwgMTM5LCA4LCA0LCAxLCAyNTAsIDEzOSwgOCwgNiwgMSwgMjUwLCAxMjMsIDgsIDQsIDEsIDI1MCwgCisgICAgMTIzLCA4LCA2LCAxLCAyNTAsIDEyNCwgMywgMjMzLCAxNzcsIDE0OCwgOCwgNCwgMSwgMjUwLCAxMjQsIDMsIDIzMywgMTc3LCAKKyAgICAxNDgsIDgsIDYsIDEsIDI1MCwgMTEyLCA4LCA0LCAxLCAyNTAsIDExMiwgOCwgNiwgMSwgMjEzLCAxMDUsIDI0NywgMjI0LCAKKyAgICAzLCAyNDAsIDE4MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDI0NywgMjI0LCAzLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjI3LCAxMTksIAorICAgIDMsIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgCisgICAgMSwgMjI3LCAxMTksIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjA4LCA0NywgMjYsIDI0MSwgNzEsIAorICAgIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjA4LCA0NywgMjYsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyNDgsIDQ2LCAKKyAgICAxNTYsIDgsIDQsIDEsIDI0OCwgNDYsIDE1NiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEyMiwgOTcsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxMjIsIDk3LCA4LCA2LCAxLCAxNjMsIDMsIDE2OCwgMjA4LCA0NywgMjE2LCAyNDIsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgOCwgNiwgMSwgMTYzLCAzLCAyMjQsIDc0LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIyNCwgNzQsIDgsIDYsIDEsIDIxNywgNjMsIDgsIDQsIDEsIDIxNywgNjMsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIAorICAgIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCAKKyAgICA4LCA2LCAxLCAyMTYsIDIyNywgMywgMjM3LCAyNiwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIzNywgMjYsIDgsIDYsIDEsIAorICAgIDIxNiwgMjI3LCAzLCAyMDgsIDE4NSwgMjA3LCA2LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjA4LCAxODUsIDIwNywgNiwgOCwgCisgICAgNiwgMSwgMjE0LCAxNjgsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMTQsIDE2OCwgMywgMjA4LCAKKyAgICA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDYsIDEsIDIxNCwgMTY4LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjE0LCAKKyAgICAxNjgsIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAyMTIsIDIyMiwgOCwgNCwgMSwgMjE0LCAzMywgMjEyLCAKKyAgICAyMjIsIDgsIDYsIDEsIDIxMiwgMTYyLCAyMTIsIDIyMiwgOCwgNCwgMSwgMjEyLCAxNjIsIDIxMiwgMjIyLCA4LCA2LCAxLCAKKyAgICAyMDMsIDE2OSwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgCisgICAgMjAxLCAxNTUsIDgsIDQsIDEsIDIwMSwgMTU1LCA4LCA2LCAxLCAyMDIsIDIwMSwgMTk5LCAxNTcsIDgsIDQsIDEsIDIwMiwgCisgICAgMjAxLCAxOTksIDE1NywgOCwgNiwgMSwgMjA2LCA1NSwgMywgOTcsIDgsIDQsIDEsIDIwNiwgNTUsIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAyMDYsIDU1LCAzLCAyMDgsIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjA2LCA1NSwgMywgMjA4LCA0NywgCisgICAgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDYsIDEsIDIwMywgNDksIDgsIDQsIDEsIDIwMywgNDksIDgsIDYsIDEsIDIzOCwgODEsIAorICAgIDgsIDQsIDEsIDIzOCwgODEsIDgsIDYsIDEsIDIyOCwgMjYsIDgsIDQsIDEsIDIyOCwgMjYsIDgsIDYsIDEsIDI0MywgNjgsIAorICAgIDgsIDQsIDEsIDI0MywgNjgsIDY3LCAxLCAyMDMsIDE5NywgOCwgNCwgMSwgMjM5LCAxMjYsIDgsIDQsIDEsIDIyNCwgMjUsIAorICAgIDgsIDQsIDEsIDIyMSwgMTUsIDgsIDQsIDEsIDIxOCwgOTYsIDgsIDQsIDEsIDIxMiwgMTYxLCA4LCAxLCA0LCA2LCAyMTIsIAorICAgIDE2MSwgOCwgNCwgMSwgMjA0LCAyMDMsIDgsIDQsIDEsIDIwNCwgMTIsIDgsIDYsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCA4LCAKKyAgICA0LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgOCwgNiwgMSwgMjI4LCA3MSwgMjM4LCA1LCA4LCA0LCAxLCAyMjgsIDcxLCAyMzgsIAorICAgIDUsIDgsIDYsIDEsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIAorICAgIDQsIDEsIDIwNCwgMTg1LCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjA0LCAxODUsIDE1NiwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDE1NiwgOCwgNiwgMSwgMjI4LCA3MSwgMTQ2LCA4LCA0LCAxLCAyMjgsIDcxLCAxNDYsIDgsIDYsIDEsIDIyOCwgNzEsIAorICAgIDIxMiwgMTIyLCA4LCA0LCAxLCAyMjgsIDcxLCAyMTIsIDEyMiwgOCwgNiwgMSwgMjI4LCA3MSwgMjA3LCA4MywgOCwgNCwgMSwgCisgICAgMjI4LCA3MSwgMjA3LCA4MywgNjcsIDEsIDEyOCwgMjQ2LCAxNDcsIDI1MSwgMjUxLCA2NywgMSwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDIwOSwgMjUwLCAyMzgsIDEyMiwgNTQsIDgsIDYsIDEsIDIxMiwgMjUsIDgsIDQsIDEsIDIxMiwgMjUsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCAyMzQsIDI0NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIxMywgMTExLCAyMzMsIDE4NywgMjYsIDI0OCwgMjI2LCA4LCAKKyAgICAxLCAyMDksIDEzMiwgMjQwLCAxODIsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTQ4LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMTQ4LCA4LCA0LCAKKyAgICAxLCAyNDcsIDIyNCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDYsIAorICAgIDEsIDY4LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCA2OCwgMywgMjM3LCAyNiwgOCwgNiwgMSwgMjM4LCA2LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMjM4LCA2LCAzLCA5NywgOCwgNiwgMSwgMjAyLCAxODUsIDI1MSwgMjIxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjUxLCAKKyAgICAyMjEsIDgsIDYsIDEsIDIwMiwgMTg1LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjAyLCAxODUsIDIxNywgMTIxLCA4LCA2LCAxLCAKKyAgICAyMDIsIDE4NSwgMjA0LCAzMSwgOCwgNCwgMSwgMjAyLCAxODUsIDIwNCwgMzEsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjE0LCAzMywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMTE3LCAKKyAgICA4LCA2LCAxLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNiwgMSwgMTM1LCAyMzYsIDE1NiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDI0OCwgMjI2LCA4LCA2LCAxLCA0LCA2LCA3MCwgOCwgNiwgMSwgMjA0LCAxODUsIDIyNywgMTE4LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgMjA3LCA4MywgOCwgNiwgMSwgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA4LCA2LCAxLCAyNDYsIDIzNiwgOCwgNiwgMSwgCisgICAgMjQ4LCAyMDgsIDgsIDQsIDEsIDI0OCwgMjA4LCA4LCA2LCAxLCAyMTcsIDgzLCA4LCA0LCAxLCAyMTcsIDgzLCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjA5LCAxNzMsIDcwLCA2NywgMSwgNiwgMjM0LCAyNDgsIDMsIDk3LCA2NywgMSwgNCwgMzMsIDIxNywgMTIxLCAKKyAgICA4LCAxLCA0LCA2LCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDIzOCwgMTI3LCAxLCAyMTMsIDEwNSwgMjM4LCA1LCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjEzLCAxMDUsIDIxNiwgMjI2LCA4LCAyMzgsIDEyNywgMSwgMjI4LCA1MCwgMjIzLCAyNDMsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMzMsIDE5LCAyMjQsIDgwLCA4LCAyMzgsIDEyNywgMSwgMjUwLCAyMzQsIDIyMywgMjQzLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDYyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDcwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDIzOSwgCisgICAgMTA1LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDcyLCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDc0LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDIzNCwgMTU5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNiwgCisgICAgODgsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI2LCAxNzgsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjM1LCAxMTYsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjM1LCAxNzEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjUxLCAzMywgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyNDYsIDkxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0NiwgMjEwLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDIyNywgMTY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNywgMjA5LCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDIwNCwgMjMwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwNCwgMjM2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIAorICAgIDI0MSwgMTkwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0MSwgMTk5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDEzOCwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMDYsIDYxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0MCwgMjExLCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDI0MSwgODAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjE4LCAyNDEsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgMjE1LCAxMDYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjE1LCAyMTcsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgMjQ4LCAxMjQsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQ4LCAxOTIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgCisgICAgMjIxLCAxMzYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjEzLCAxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNCwgMTEwLCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxMiwgMjAxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwOSwgMjksIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjMzLCAyMDcsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDYyLCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDIyLCAyLCA3MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIAorICAgIDcyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCAyMTcsIDYzLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAKKyAgICAyMjIsIDE0OSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMTUsIDEwMSwgMjIyLCAxNDgsIDIwNywgMTYzLCAyMjAsIDE0NSwgCisgICAgMjE1LCAxMDEsIDIyMiwgMTQ3LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAyMjIsIDE0NiwgMTU3LCAyMjgsIAorICAgIDEwMSwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDE1NywgCisgICAgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIAorICAgIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTI2LCAKKyAgICAyMDksIDk3LCAxNTcsIDIyOCwgMTAxLCAyMTQsIDg4LCA4MSwgMTU3LCAyMjgsIDEwMSwgMjE1LCAxMzMsIDgxLCAxNTcsIAorICAgIDIyOCwgMTAxLCAyMTIsIDE0OSwgODEsIDE1NywgMjI4LCAxMDEsIDIxNCwgODksIDgxLCAyMTUsIDI0MSwgMSwgMTYxLCAKKyAgICAyMTUsIDI0MSwgMSwgMjI2LCAyMDcsIDIxNSwgMjQxLCAxLCAyMzYsIDg5LCAyMTUsIDI0MSwgMSwgMjE5LCAyNTMsIDIxNSwgCisgICAgMjQxLCAxLCAyNDcsIDE5MCwgMjE1LCAyNDEsIDEsIDI0NywgMzcsIDIxNSwgMjQxLCAxLCAyMjcsIDI0OCwgMjE1LCAyNDEsIAorICAgIDEsIDIxOCwgNjAsIDIxNSwgMjQxLCAxLCAyMDcsIDM2LCAyMTUsIDI0MSwgMSwgMjA2LCAxMjIsIDIxNSwgMjQxLCAxLCAKKyAgICAyNDIsIDU4LCAyMTUsIDI0MSwgMSwgMTg4LCAyMTUsIDI0MSwgMSwgMTcyLCAyMTUsIDI0MSwgMSwgMjE1LCAyNDUsIDIxNSwgCisgICAgMjQxLCAxLCAyNDksIDEzNiwgMjE1LCAyNDEsIDEsIDE3OCwgMjE1LCAyNDEsIDEsIDIwNSwgMzIsIDIxNSwgMjQxLCAxLCAKKyAgICAyMDUsIDIyLCAyMTUsIDI0MSwgMSwgMjM5LCA5MywgMjE1LCAyNDEsIDEsIDIwMSwgMTE0LCAyMTUsIDI0MSwgMSwgMTk5LCAKKyAgICA3NywgMjE1LCAyNDEsIDEsIDE5OSwgMTE0LCAyMTUsIDI0MSwgMSwgNCwgNjIsIDIxNSwgMjQxLCAxLCAxODMsIDIxNSwgCisgICAgMjQxLCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDEsIDE5NCwgMjE1LCAyNDEsIDEsIDIxMCwgMTE0LCAyMTUsIDI0MSwgMSwgCisgICAgMjEyLCA2NCwgMjE1LCAyNDEsIDEsIDE0NCwgMjE1LCAyNDEsIDEsIDYyLCAyMTUsIDI0MSwgMSwgNzAsIDIxNSwgMjQxLCAxLCAKKyAgICA2NiwgMjE1LCAyNDEsIDEsIDcyLCAyMTUsIDI0MSwgMSwgNzQsIDIxNSwgMjQxLCAxLCAyMTQsIDE1OSwgMjE1LCAyNDEsIDEsIAorICAgIDIwMCwgMTgxLCAyMTUsIDI0MSwgMSwgMjM3LCAxOTUsIDIxNSwgMjQxLCAxLCAyMzUsIDIzNSwgMjE1LCAyNDEsIDEsIDIzOCwgCisgICAgMjU1LCAyMTUsIDI0MSwgMjA4LCAxMiwgMSwgMjAxLCAxMTQsIDIxNSwgMjQxLCAyMDgsIDEyLCAxLCAxODMsIDIxNSwgMjQxLCAKKyAgICAxLCAyMDQsIDI1MywgMjE1LCAyNDEsIDEsIDIwNCwgMjQxLCAyMTUsIDI0MSwgMSwgMjQxLCAyMjAsIDIxNSwgMjQxLCAxLCAKKyAgICAyMTksIDIxLCAyMTUsIDI0MSwgMSwgMjUxLCAxMDksIDE4MywgMjE1LCAyNDEsIDEsIDIwMiwgMTg4LCAyMTAsIDExNCwgCisgICAgMjE1LCAyNDEsIDEsIDIwMiwgMTg5LCAxNDQsIDIxNSwgMjQxLCAxLCAyNTAsIDE3MiwgMjM3LCAxOTUsIDIxNSwgMjQxLCAKKyAgICAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDIwNywgMjE1LCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDEsIDI0NywgCisgICAgMTQ5LCAyMTUsIDI0MSwgMjA5LCAxMzksIDIzNCwgMTM3LCA4MSwgMjE1LCAyNDEsIDUzLCAyMzQsIDEzNywgODEsIDIxNSwgCisgICAgMjQxLCAxMzQsIDIxMCwgMTA2LCAyMTUsIDI0MSwgMTM0LCA1MywgMjEwLCAxMDYsIDIxMSwgMjQxLCAyLCAyNTEsIDMzLCAKKyAgICAyMTEsIDI0MSwgMiwgMjAyLCAyMDMsIDIxMSwgMjQxLCAxLCA2MiwgMjExLCAyNDEsIDEsIDI1MiwgMTM4LCAyMTEsIDI0MSwgCisgICAgMSwgNzAsIDIxMSwgMjQxLCAxLCAyMjgsIDE1MSwgMjExLCAyNDEsIDEsIDY2LCAyMTEsIDI0MSwgMSwgMjAzLCAxODIsIAorICAgIDIxMSwgMjQxLCAxLCAxMDksIDE0NiwgMjExLCAyNDEsIDEsIDEwOSwgMjEyLCAyMTYsIDIxMSwgMjQxLCAxLCAxMDksIDE1NiwgCisgICAgMjExLCAyNDEsIDEsIDEwOSwgMjI0LCAxMzksIDIxMSwgMjQxLCAxLCA3MiwgMjExLCAyNDEsIDEsIDIzOCwgMjU1LCAyMTEsIAorICAgIDI0MSwgMSwgMjUxLCAxNzYsIDIxMSwgMjQxLCAxLCA3NCwgMjExLCAyNDEsIDEsIDIxNywgNjMsIDIxMSwgMjQxLCAxLCAKKyAgICAyNTAsIDEzOSwgMjExLCAyNDEsIDEsIDE2MSwgMjExLCAyNDEsIDEsIDIyNiwgMjA3LCAyMTEsIDI0MSwgMSwgMjM2LCA4OSwgCisgICAgMjExLCAyNDEsIDEsIDIzNSwgMTk5LCAyMTEsIDI0MSwgMSwgMjE5LCAyNTMsIDIxMSwgMjQxLCAxLCAyNDcsIDE5MCwgMjExLCAKKyAgICAyNDEsIDEsIDI0NywgMzcsIDIxMSwgMjQxLCAxLCAyMjcsIDI0OCwgMjExLCAyNDEsIDEsIDIyNywgMjE1LCAyMTEsIDI0MSwgCisgICAgMSwgMjE4LCA2MCwgMjExLCAyNDEsIDEsIDIwNCwgMjUzLCAyMTEsIDI0MSwgMSwgMjA0LCAyNDEsIDIxMSwgMjQxLCAxLCAKKyAgICAyNDEsIDIyMCwgMjExLCAyNDEsIDEsIDI0MSwgMjA0LCAyMTEsIDI0MSwgMSwgMjE5LCAyMSwgMjExLCAyNDEsIDEsIDIwNywgCisgICAgMzYsIDIxMSwgMjQxLCAxLCAyMDYsIDEyMiwgMjExLCAyNDEsIDEsIDI0MiwgNTgsIDIxMSwgMjQxLCAxLCAyNDEsIDEwMCwgCisgICAgMjExLCAyNDEsIDEsIDE4OCwgMjExLCAyNDEsIDEsIDE3MiwgMjExLCAyNDEsIDEsIDIxNSwgMjQ1LCAyMTEsIDI0MSwgMSwgCisgICAgMjQ5LCAxMzYsIDIxMSwgMjQxLCAxLCAyNDgsIDIwMCwgMjExLCAyNDEsIDEsIDE3OCwgMjExLCAyNDEsIDEsIDE4MywgMjExLCAKKyAgICAyNDEsIDEsIDIxMywgMjUyLCAyMTEsIDI0MSwgMSwgMTk0LCAyMTEsIDI0MSwgMSwgMjAzLCA5MCwgMjExLCAyNDEsIDEsIAorICAgIDIxMCwgMTE0LCAyMTEsIDI0MSwgMSwgMjA4LCAxNzksIDIxMSwgMjQxLCAxLCAyMTIsIDY0LCAyMTEsIDI0MSwgMSwgMTQ0LCAKKyAgICAyMTEsIDI0MSwgMSwgMjI0LCAxMzgsIDIxMSwgMjQxLCAxMTEsIDIsIDIzNCwgMjMxLCAyMTEsIDI0MSwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMTEsIDI0MSwgMjIsIDIsIDcwLCAyMTEsIDI0MSwgMjIsIDIsIDIyOCwgMTUxLCAyMTEsIDI0MSwgMjIsIDIsIDY2LCAKKyAgICAyMTEsIDI0MSwgMjIsIDIsIDIwMywgMTgyLCAyMTEsIDI0MSwgMjIsIDIsIDEwOSwgMTQ2LCAyMTEsIDI0MSwgMjIsIDIsIAorICAgIDEwOSwgMjEyLCAyMTYsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAxNTYsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgCisgICAgMjExLCAyNDEsIDIyLCAyLCA3MiwgMjExLCAyNDEsIDIyLCAyLCAyMzgsIDI1NSwgMjExLCAyNDEsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjExLCAyNDEsIDIyLCAyLCA3NCwgMjExLCAyNDEsIDIyLCAyLCAyMTcsIDYzLCAyMTEsIDI0MSwgMjIsIDIsIDI1MCwgCisgICAgMTM5LCAyMTEsIDI0MSwgMiwgMjAyLCAyMDgsIDIxMSwgMjQxLCAyLCAyNDcsIDE0OSwgMjExLCAyNDEsIDI0MiwgMTAsIAorICAgIDIxMSwgMjQxLCA1MywgMjQyLCAxMCwgMjExLCAyNDEsIDE3LCAxOTksIDgxLCAyMTEsIDI0MSwgMTcsIDEwMiwgMjExLCAKKyAgICAyNDEsIDE3LCAxMDUsIDIxMSwgMjQxLCAxNywgMTQ3LCAyMTEsIDI0MSwgMTcsIDE0OSwgMjExLCAyNDEsIDE3LCAxNjQsIAorICAgIDIxMSwgMjQxLCAxNywgMTg3LCAyMTEsIDI0MSwgMTcsIDIxMCwgMTM1LCAyMTEsIDI0MSwgMTcsIDE5MiwgMjExLCAyNDEsIAorICAgIDE3LCAyMTksIDExMywgMzgsIDk0LCAxNywgMTk5LCA4MSwgMzgsIDk0LCAxNywgMTAyLCAzOCwgOTQsIDE3LCAxMDUsIDM4LCAKKyAgICA5NCwgMTcsIDE0NywgMzgsIDk0LCAxNywgMTQ5LCAzOCwgOTQsIDE3LCAxNjQsIDM4LCA5NCwgMTcsIDE4NywgMzgsIDk0LCAKKyAgICAxNywgMjEwLCAxMzUsIDM4LCA5NCwgMTcsIDE5MiwgMzgsIDk0LCAxNywgMjE5LCAxMTMsIDM4LCA5NCwgMSwgNjIsIDM4LCAKKyAgICA5NCwgMSwgNjYsIDM4LCA5NCwgMSwgMTYxLCAzOCwgOTQsIDEsIDE4OCwgMzgsIDk0LCAxLCAxNzIsIDM4LCA5NCwgMSwgCisgICAgMjEzLCAyNTIsIDM4LCA5NCwgMSwgMjAyLCAyMzQsIDM4LCA5NCwgMiwgMjUwLCAxMjIsIDk0LCAyLCAyMDgsIDI0MywgMjQ3LCAKKyAgICAxNDksIDk0LCAyLCAyNDcsIDE1MCwgMjAyLCAyMDgsIDk0LCAyLCA1MywgMjQ3LCAxNTAsIDIwMiwgMjA4LCA5NCwgMiwgCisgICAgMjQ3LCAxNTAsIDEwNSwgOTQsIDIsIDI0NywgMTUwLCAxNDcsIDk0LCAyLCAyNDcsIDE1MCwgMjUwLCAxMjIsIDk0LCAyLCAKKyAgICAyMTQsIDE5NSwgOTQsIDIzNiwgNTMsIDIzNywgOTMsIDk0LCAyNDcsIDEyOSwgOTQsIDIzNCwgMTMwLCA5NCwgMiwgMjA5LCAKKyAgICAxNzcsIDk0LCAyMjcsIDI0MCwgMjE3LCA4NiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxOTksIDgxLCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMTcsIDEwMiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxMDUsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTQ3LCAKKyAgICAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE0OSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNjQsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxNywgMTg3LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDIxMCwgMTM1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIAorICAgIDE5MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAyMTksIDExMywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE2MSwgMjI3LCAxNCwgCisgICAgMjI0LCAyMTEsIDEsIDIyNiwgMjA3LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjM2LCA4OSwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDEsIDIxOSwgMjUzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEyLCA2NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMCwgCisgICAgMTE0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTk5LCAxMTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTgsIDYwLCAyMjcsIAorICAgIDE0LCAyMjQsIDIxMSwgMSwgMjA3LCAzNiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIzMywgMTAxLCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMSwgMTg4LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTcyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjE1LCAyNDUsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNzgsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyNDIsIDU4LCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMSwgMjQ5LCAxMzYsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTMsIDI1MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIAorICAgIDE4MywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE5NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIwMSwgMTE0LCAyMjcsIDE0LCAKKyAgICAyMjQsIDIxMSwgMSwgMjA2LCAxMjIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNDQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAKKyAgICAyMDMsIDkwLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjQ3LCAxOTAsIDIyNywgMTQsIDIyNCwgMjExLCAxLCA2MiwgMjI3LCAKKyAgICAxNCwgMjI0LCAyMTEsIDEsIDIxNywgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgNzAsIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAxLCAyMTcsIDYzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDIwNCwgMzEsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgNzIsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgNjYsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgMjM4LCAyNTUsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAyMiwgNzQsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIDIxNSwgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAKKyAgICAyNDcsIDE2NSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgMjQ3LCAxNjYsIDIxNSwgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMiwgMjQyLCAxNzIsIDIyNywgMTQsIDIyNCwgMjExLCAyLCAyMDksIDE5MCwgMjEzLCAxNTEsIDEsIDE2MSwgMjEzLCAxNTEsIAorICAgIDEsIDIzNiwgODksIDIxMywgMTUxLCAxLCAyMTksIDI1MywgMjEzLCAxNTEsIDEsIDIwNywgMzYsIDIxMywgMTUxLCAxLCAKKyAgICAyNDIsIDU4LCAyMTMsIDE1MSwgMSwgMTg4LCAyMTMsIDE1MSwgMSwgMTcyLCAyMTMsIDE1MSwgMSwgMjQ5LCAxMzYsIDIxMywgCisgICAgMTUxLCAxLCAxNzgsIDIxMywgMTUxLCAxLCAyNDcsIDE5MCwgMjEzLCAxNTEsIDEsIDIyNywgMjQ4LCAyMTMsIDE1MSwgMSwgCisgICAgMjE4LCA2MCwgMjEzLCAxNTEsIDEsIDIxMiwgNjQsIDIxMywgMTUxLCAxLCAyMTMsIDI1MiwgMjEzLCAxNTEsIDEsIDE5NCwgCisgICAgMjEzLCAxNTEsIDEsIDE4MywgMjEzLCAxNTEsIDEsIDIwMSwgMTE0LCAyMTMsIDE1MSwgMSwgMTQ0LCAyMTMsIDE1MSwgMSwgCisgICAgMjIyLCAxMTAsIDIxMywgMTUxLCAxLCAyMTksIDIzMiwgMjEzLCAxNTEsIDEsIDIyMCwgNzUsIDIxMywgMTUxLCAxLCAyMTgsIAorICAgIDI3LCAyMTMsIDE1MSwgMSwgNjIsIDIxMywgMTUxLCAyMiwgMiwgNzAsIDIxMywgMTUxLCAyMiwgMiwgNjYsIDIxMywgMTUxLCAKKyAgICAyMiwgMiwgNzIsIDIxMywgMTUxLCAyMiwgMiwgMjUxLCAxNzYsIDIxMywgMTUxLCAyMiwgMiwgNzQsIDIxMywgMTUxLCAyMiwgCisgICAgMiwgMjUwLCAxMzksIDIxMywgMTUxLCAyMiwgMiwgMjM4LCA2OSwgMjEzLCAxNTEsIDIyLCAyLCAyMzksIDI3LCAyMTMsIAorICAgIDE1MSwgMTExLCAyLCAyMTksIDI1NSwgMjEzLCAxNTEsIDExMSwgMiwgMjIwLCAyMTQsIDIxMywgMTUxLCAxMTEsIDIsIDE0NiwgCisgICAgMjEzLCAxNTEsIDExMSwgMiwgMjM0LCAyNDcsIDIxMywgMTUxLCAyMDIsIDIwOCwgMjEzLCAxNTEsIDIxMSwgMTkzLCA4MSwgCisgICAgMjksIDEyOSwgMjA1LCAyNDksIDI5LCAxMjksIDIwNSwgMjQ4LCAyOSwgMTI5LCAyMDUsIDI0NiwgMjksIDEyOSwgMjA1LCAKKyAgICAyNTEsIDI5LCAxMjksIDIxMywgNzMsIDI5LCAxMjksIDIxMywgNTcsIDI5LCAxMjksIDIxMywgNTIsIDI5LCAxMjksIDIxMywgCisgICAgNTQsIDI5LCAxMjksIDIxMywgNzAsIDI5LCAxMjksIDIxMywgNjMsIDI5LCAxMjksIDIxMywgNTYsIDI5LCAxMjksIDIxMywgCisgICAgNzUsIDI5LCAxMjksIDIxMywgNTgsIDI5LCAxMjksIDIxMywgNzcsIDI5LCAxMjksIDIxMywgNzQsIDI5LCAxMjksIDIyMSwgCisgICAgMTkzLCAyOSwgMTI5LCAyMjEsIDE4NCwgMjksIDEyOSwgMjIxLCAxODcsIDI5LCAxMjksIDIxNSwgMTc1LCAyOSwgMTI5LCAKKyAgICAyMTUsIDE4NiwgMjksIDEyOSwgMjE1LCAxODcsIDI5LCAxMjksIDIwOCwgMTYzLCAyOSwgMTI5LCAyMjgsIDE2NCwgMjksIAorICAgIDEyOSwgMjI4LCAxNzEsIDI5LCAxMjksIDIwOCwgMTc0LCAyOSwgMTI5LCAyMDgsIDE2MSwgMjksIDEyOSwgMjE1LCAyMjYsIAorICAgIDI5LCAxMjksIDIzNCwgNjEsIDI5LCAxMjksIDIwOCwgMTU4LCAyMjcsIDIzMywgMiwgMjE2LCAxNDEsIDIyNywgMjMzLCAyLCAKKyAgICAyNDcsIDczLCAyMjcsIDIzMywgMiwgMjI1LCA0OCwgMjI3LCAyMzMsIDIsIDIwMSwgMjEsIDIyNywgMjMzLCAxLCA2MiwgCisgICAgMjI3LCAyMzMsIDEsIDIzMywgMTksIDIyNywgMTgsIDIyNywgMjMzLCAxLCA3MCwgMjI3LCAyMzMsIDEsIDIyOCwgMTUxLCAKKyAgICAyMjcsIDIzMywgMSwgNjYsIDIyNywgMjMzLCAxLCAyMTYsIDIxMSwgMjQ3LCA0MywgMjI3LCAyMzMsIDEsIDIxOSwgMjU0LCAKKyAgICAyMjUsIDcsIDIyNywgMjMzLCAxLCAyMTksIDI1NCwgMjI1LCA4LCAyMTMsIDIwNSwgMjI3LCAyMzMsIDEsIDcyLCAyMjcsIAorICAgIDIzMywgMSwgMjUxLCAxNzYsIDIyNywgMjMzLCAxLCA3NCwgMjI3LCAyMzMsIDEsIDE2MSwgMjI3LCAyMzMsIDEsIDIyNywgCisgICAgMTA4LCAyMTEsIDI1MywgMjI3LCAyMzMsIDEsIDIyNywgMTA4LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMzYsIDg5LCAyMjcsIAorICAgIDIzMywgMSwgMjM2LCA5MCwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjE5LCAyNTMsIDIyNywgMjMzLCAxLCAyNDcsIDE5MCwgCisgICAgMjI3LCAyMzMsIDEsIDI0NywgMTkxLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMjcsIDI0OCwgMjI3LCAyMzMsIDEsIDIxOCwgCisgICAgNjEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIyNywgMjQ5LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDIxOCwgNjAsIDIyNywgCisgICAgMjMzLCAxLCAyMDQsIDI1MywgMjI3LCAyMzMsIDEsIDIwNCwgMjU0LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDI0MSwgMjIwLCAKKyAgICAyMjcsIDIzMywgMSwgMjQxLCAyMjEsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjIwLCAxNjIsIDIyMSwgMCwgMjI3LCAyMzMsIAorICAgIDEsIDIwNywgMzYsIDIyNywgMjMzLCAxLCAyMDcsIDM3LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyNDIsIDU4LCAyMjcsIDIzMywgCisgICAgMSwgMjQyLCA1OSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAxODgsIDIyNywgMjMzLCAxLCAxNzIsIDIyNywgMjMzLCAxLCAKKyAgICAyMTYsIDIxMSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjQ5LCAxMzYsIDIyNywgMjMzLCAxLCAyNDksIDEzNywgMjIxLCAwLCAKKyAgICAyMjcsIDIzMywgMSwgMTc4LCAyMjcsIDIzMywgMSwgMTgzLCAyMjcsIDIzMywgMSwgMjEzLCAyNTIsIDIyNywgMjMzLCAxLCAKKyAgICAyMTMsIDI1MywgMjUxLCAxODYsIDIyNywgMjMzLCAxLCAxOTQsIDIyNywgMjMzLCAxLCAyMDEsIDExNCwgMjI3LCAyMzMsIDEsIAorICAgIDIxMiwgNjUsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIxMiwgNjUsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjEyLCA2NCwgCisgICAgMjI3LCAyMzMsIDEsIDE0NCwgMjI3LCAyMzMsIDIsIDI0NywgNzQsIDIwNiwgMTY5LCAyMjcsIDIzMywgMjIsIDIsIDIwNiwgCisgICAgMjI4LCAyMjcsIDIzMywgMjIsIDIsIDIwNSwgMTc5LCAyMjcsIDIzMywgMjIsIDIsIDIwMCwgMjEwLCAyMjcsIDIzMywgMjIsIAorICAgIDIsIDIwMCwgMjExLCAyMjIsIDUxLCAyMjcsIDIzMywgMjIsIDIsIDIwNywgMjM4LCAyMjcsIDIzMywgMjIsIDIsIDIwNywgCisgICAgMjM5LCAyMjIsIDM5LCAyMjcsIDIzMywgMjIsIDIsIDIwNiwgMjQ5LCAyMjcsIDIzMywgMjIsIDIsIDI0MSwgNiwgMjIwLCAKKyAgICAyNTUsIDIyNywgMjMzLCAyMiwgMiwgMjE2LCAzMCwgMjI3LCAyMzMsIDExMSwgMiwgMjI2LCAyMzYsIDIyNywgMjMzLCAxMTEsIAorICAgIDIsIDIxNiwgNDQsIDIyNywgMjMzLCAxMTEsIDIsIDI0NywgMTc1LCAyMjcsIDIzMywgMjE2LCAxNTQsIDIyNywgMjMzLCA0OSwgCisgICAgMjEzLCAxMjUsIDIyNywgMjMzLCA1MSwgMjEzLCAxMjUsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjUxLCA3OCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjIsIDIyMCwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMjQsIDI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIwMSwgCisgICAgMTQsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjE2LCAxNTUsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjI0LCAxNjgsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjI0LCAyMywgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIDIyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIAorICAgIDIzMCwgMjUxLCAyMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjE1LCAxNDQsIDIyNywgMjMzLCAyMDQsIDE4NSwgMjE2LCAKKyAgICAyMDAsIDIxNSwgMTQ0LCAyMjcsIDIzMywgMjE2LCAxNTAsIDIyNywgMjMzLCAxNywgMTk5LCA4MSwgMjI3LCAyMzMsIDE3LCAKKyAgICAxMDIsIDIyNywgMjMzLCAxNywgMTA1LCAyMjcsIDIzMywgMTcsIDE0NywgMjI3LCAyMzMsIDE3LCAxNDksIDIyNywgMjMzLCAKKyAgICAxNywgMTY0LCAyMjcsIDIzMywgMTcsIDE4NywgMjI3LCAyMzMsIDE3LCAyMTAsIDEzNSwgMjI3LCAyMzMsIDE3LCAxOTIsIAorICAgIDIyNywgMjMzLCAxNywgMjE5LCAxMTMsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjA1LCAyMTUsIDIwNCwgMjAwLCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyOCwgMjIsIDcxLCAxLCAyMTAsIDkwLCAyMzUsIDE5OSwgNzEsIDEsIDIxMCwgOTAsIDI0NywgMzcsIDcxLCAKKyAgICAxLCAyMTAsIDkwLCAyMjcsIDIxNSwgNzEsIDEsIDIxMCwgOTAsIDIxOSwgMjEsIDcxLCAxLCAyMTAsIDkwLCAyNDgsIDIwMCwgCisgICAgNzEsIDIsIDIxMCwgOTAsIDIxMSwgMjM5LCA3MSwgNjcsIDEsIDIxMCwgOTAsIDIxMywgMTY4LCA3MSwgMSwgNDYsIDIyNSwgCisgICAgMTQ4LCAyMTgsIDYwLCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzcsIDE5NSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM2LCAKKyAgICA4OSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM1LCAxOTksIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIyNywgMjQ4LCA3MSwgMSwgCisgICAgNDYsIDIyNSwgMTQ4LCAyMjcsIDIxNSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQxLCAyMjAsIDcxLCAxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDI0MSwgMjA0LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMTksIDIxLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTk5LCAKKyAgICA4MSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDEwMiwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDEwNSwgNzEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMTcsIDE0NywgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE0OSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE2NCwgNzEsIAorICAgIDQ2LCAyMjUsIDE0OCwgMTcsIDE4NywgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDIxMCwgMTM1LCA3MSwgNDYsIDIyNSwgMTQ4LCAKKyAgICAxNywgMTkyLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMjE5LCAxMTMsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIyNCwgMTM4LCAKKyAgICA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDIsIDU4LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDEsIDEwMCwgNzEsIDEsIDQ2LCAKKyAgICAyMjUsIDE0OCwgMjQ5LCAxMzYsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0OCwgMjAwLCAyNDcsIDMwLCAxLCA2MiwgMjQ3LCAKKyAgICAzMCwgMSwgNzAsIDI0NywgMzAsIDEsIDY2LCAyNDcsIDMwLCAxLCA3MiwgMjQ3LCAzMCwgMSwgMjUxLCAxNzYsIDI0NywgMzAsIAorICAgIDEsIDc0LCAyNDcsIDMwLCAxLCAxNjEsIDI0NywgMzAsIDEsIDIyNiwgMjA3LCAyNDcsIDMwLCAxLCAyMzYsIDg5LCAyNDcsIAorICAgIDMwLCAxLCAyMzUsIDE5OSwgMjQ3LCAzMCwgMSwgMjE5LCAxNjIsIDI0NywgMzAsIDEsIDIxOSwgMjUzLCAyNDcsIDMwLCAxLCAKKyAgICAyNDcsIDM3LCAyNDcsIDMwLCAxLCAyNDYsIDIzOCwgMjQ3LCAzMCwgMSwgMjI3LCAyNDgsIDI0NywgMzAsIDEsIDIyNywgCisgICAgMjE1LCAyNDcsIDMwLCAxLCAyMTksIDE1MiwgMjQ3LCAzMCwgMSwgMjE5LCAxNTQsIDI0NywgMzAsIDEsIDIxOSwgMTUzLCAKKyAgICAyNDcsIDMwLCAxLCAyMDcsIDM2LCAyNDcsIDMwLCAxLCAyMDYsIDEyMiwgMjQ3LCAzMCwgMSwgMjQyLCA1OCwgMjQ3LCAzMCwgCisgICAgMSwgMjQxLCAxMDAsIDI0NywgMzAsIDEsIDIxOCwgMTAyLCAyNDcsIDMwLCAxLCAxODgsIDI0NywgMzAsIDEsIDI0MSwgMjIwLCAKKyAgICAyNDcsIDMwLCAxLCAxNzIsIDI0NywgMzAsIDEsIDIxNSwgNDcsIDI0NywgMzAsIDEsIDIxNSwgMjQ1LCAyNDcsIDMwLCAxLCAKKyAgICAyNDksIDEzNiwgMjQ3LCAzMCwgMSwgMjQ4LCAyMDAsIDI0NywgMzAsIDEsIDIyMSwgMzMsIDI0NywgMzAsIDEsIDE3OCwgCisgICAgMjQ3LCAzMCwgMSwgMjQ5LCA0NCwgMjQ3LCAzMCwgMSwgMTgzLCAyNDcsIDMwLCAxLCAyMTMsIDI1MiwgMjQ3LCAzMCwgMSwgCisgICAgMTk0LCAyNDcsIDMwLCAxLCAyMDMsIDkwLCAyNDcsIDMwLCAxLCAyMDgsIDE3OSwgMjQ3LCAzMCwgMSwgMjEyLCA2NCwgMjQ3LCAKKyAgICAzMCwgMSwgMTQ0LCAyNDcsIDMwLCAyMiwgMiwgMjUyLCAxMzgsIDI0NywgMzAsIDIyLCAyLCA3MCwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAyNDcsIDMwLCAyMiwgMiwgMjM4LCAyMzQsIDI0NywgMzAsIDIyLCAyLCA2NiwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDIxNywgMTIxLCAyNDcsIDMwLCAyMiwgMiwgNzQsIDI0NywgMzAsIDIyLCAyLCAyNTEsIDE3NiwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAyNDcsIDMwLCAyMiwgMiwgMjA0LCAzMSwgMjQ3LCAzMCwgMTExLCAyLCAxODMsIDI0NywgMzAsIDExMSwgMiwgCisgICAgMjEzLCAyNTIsIDI0NywgMzAsIDExMSwgMiwgMTk0LCAyNDcsIDMwLCAxMTEsIDIsIDIwMSwgMTE0LCAyNDcsIDMwLCAxLCAKKyAgICA0NywgMjI3LCAxMTgsIDI0NywgMzAsIDEsIDQ3LCAyMzYsIDE1NiwgMjQ3LCAzMCwgMSwgNDcsIDIxOSwgMjU1LCAyNDcsIAorICAgIDMwLCAxMTEsIDIsIDQ3LCAyMTksIDI1NSwgMjQ3LCAzMCwgMSwgNDcsIDI0NywgMzgsIDI0NywgMzAsIDEsIDQ3LCAyMDcsIAorICAgIDgzLCAyNDcsIDMwLCAxLCA0NywgMjIwLCAyMTQsIDI0NywgMzAsIDEsIDQ3LCAyMTYsIDIyNiwgMjQ3LCAzMCwgMSwgNDcsIAorICAgIDIwMCwgMTIzLCAyNDcsIDMwLCAxLCA0NywgMTQ2LCAyNDcsIDMwLCAxLCA0NywgMTU2LCAyNDcsIDMwLCAxLCA0NywgMjA4LCAKKyAgICAxODIsIDI0NywgMzAsIDExMSwgMiwgNDcsIDIyMywgMjQzLCAyNDcsIDMwLCAxMTEsIDIsIDQ3LCAyMzQsIDI0NywgMjQ3LCAKKyAgICAzMCwgMTcsIDE5OSwgODEsIDI0NywgMzAsIDE3LCAxMDIsIDI0NywgMzAsIDE3LCAxMDUsIDI0NywgMzAsIDE3LCAxNDcsIAorICAgIDI0NywgMzAsIDE3LCAxNDksIDI0NywgMzAsIDE3LCAxNjQsIDI0NywgMzAsIDE3LCAxODcsIDI0NywgMzAsIDE3LCAyMTAsIAorICAgIDEzNSwgMjQ3LCAzMCwgMTcsIDE5MiwgMjQ3LCAzMCwgMTcsIDIxOSwgMTEzLCAyNDcsIDMwLCAyMTQsIDIxMiwgMjA4LCAKKyAgICAyMTcsIDI0NywgMzAsIDIxNCwgMjEyLCAyNDIsIDEwLCAyNDcsIDMwLCAyMTQsIDIxMiwgNTMsIDI0MiwgMTAsIDI0NywgMzAsIAorICAgIDIxNCwgMjEyLCAyMDUsIDgzLCAyNDIsIDEwLCA3MSwgMSwgMjI2LCAyMDAsIDIzNiwgODksIDcxLCAxLCAyMjYsIDIwMCwgCisgICAgMjQ3LCAxOTAsIDcxLCAxLCAyMjYsIDIwMCwgMjQ3LCAzNywgNzEsIDEsIDIyNiwgMjAwLCAyMjcsIDI0OCwgNzEsIDEsIAorICAgIDIyNiwgMjAwLCAyMjcsIDIxNSwgNzEsIDEsIDIyNiwgMjAwLCAyMTgsIDYwLCA3MSwgMSwgMjI2LCAyMDAsIDIwNCwgMjUzLCAKKyAgICA3MSwgMSwgMjI2LCAyMDAsIDIwNCwgMjQxLCA3MSwgMSwgMjI2LCAyMDAsIDI0MSwgMjIwLCA3MSwgMSwgMjI2LCAyMDAsIAorICAgIDI0MSwgMjA0LCA3MSwgMSwgMjI2LCAyMDAsIDI0MSwgMTAwLCA3MSwgMSwgMjI2LCAyMDAsIDE4OCwgNzEsIDEsIDIyNiwgCisgICAgMjAwLCAyMTIsIDY0LCA3MSwgMSwgMjI2LCAyMDAsIDE0NCwgNzEsIDEsIDIyNiwgMjAwLCAyMzQsIDg0LCA3MSwgMSwgMjI2LCAKKyAgICAyMDAsIDIzNywgMTk1LCA3MSwgNjcsIDEsIDIyNiwgMjAwLCAyMTMsIDE2OCwgNzEsIDEsIDIyNiwgMjAwLCAyMDAsIDE4MSwgCisgICAgNzEsIDEsIDIyNiwgMjAwLCAxOTksIDExNCwgNzEsIDEsIDIyNiwgMjAwLCAyMTMsIDI1MiwgNzEsIDIyNCwgOTcsIDIyNiwgCisgICAgMjAwLCAyMTcsIDE0MywgNzEsIDIyNCwgOTcsIDIyNiwgMjAwLCAyMTQsIDExMCwgNzEsIDIyNCwgOTcsIDIyNiwgMjAwLCAKKyAgICAyMzQsIDYsIDcxLCAxNiwgMjUxLCAxNjMsIDIzOCwgNDIsIDcxLCAxNiwgMjUxLCAxNjMsIDEwMiwgNzEsIDE2LCAyNTEsIAorICAgIDE2MywgMTA1LCA3MSwgMSwgMjUxLCAxNjMsIDIxMywgMjUyLCA3MSwgMiwgMjE2LCAxMzcsIDIyNywgNDQsIDIwNSwgMTc0LCAKKyAgICA3MSwgMiwgNDYsIDIyNSwgMTQ4LCAyMDUsIDE3MiwgNzEsIDIsIDQ2LCAyMjUsIDE0OCwgMjA1LCAxNjksIDcxLCAxLCAyMDksIAorICAgIDE5OCwgMjE2LCAxODEsIDI0NywgMzcsIDcxLCAxLCAyMDksIDE5OCwgMjE2LCAxODEsIDIxMCwgMTE0LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjI2LCA4OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgODgsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyMjYsIDE3OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjI2LCAKKyAgICAxODcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjYsIDE4NywgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIzNSwgMTE2LCA0NiwgCisgICAgMjAyLCAyMjQsIDEsIDEyMiwgMjM1LCAxMTYsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTksIDE3OCwgNDYsIDIwMiwgMjI0LCAKKyAgICAxLCAxMjIsIDIxOSwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjQ2LCA5MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDI0NiwgOTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDYsIDIxMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0NiwgMjEwLCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjA5LCAyOSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIwOSwgMjksIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMTgsIDI2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE4LCAyNiwgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDI0MCwgMjExLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQwLCAyMTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAxMzgsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAxMzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxOCwgMjQxLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjE4LCAyNDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDgsIDEyNCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0OCwgMTI0LCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE1LCAxMDYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTUsIDEwNiwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIxNSwgMjE3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE1LCAyMTcsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyMzcsIDEzLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjM3LCAxMywgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIyMSwgCisgICAgMTM2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjIxLCAxMzYsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAxOTksIDI0NSwgNDYsIAorICAgIDIwMiwgMjI0LCAxLCAxMjIsIDE5OSwgMjQ1LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjEzLCAxLCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjEzLCAxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjI0LCAxMTAsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyMjQsIDExMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwMiwgMTkzLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjAyLCAxOTMsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMzMsIDIwNywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIzMywgMjA3LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgNzQsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCA3NCwgNDYsIDIwMiwgMjI0LCAyMjIsIDE5OSwgMjI3LCAKKyAgICA2NCwgNDYsIDIwMiwgMjI0LCAyMiwgMjUyLCAxMzgsIDQ2LCAyMDIsIDIyNCwgMjIsIDcwLCA0NiwgMjAyLCAyMjQsIDIyLCAKKyAgICAyMDQsIDMxLCA0NiwgMjAyLCAyMjQsIDIyLCA2NiwgNDYsIDIwMiwgMjI0LCAyMiwgNzIsIDQ2LCAyMDIsIDIyNCwgMjIsIAorICAgIDc0LCA0NiwgMjAyLCAyMjQsIDIyMiwgMTk5LCAyMjYsIDE4MSwgNDYsIDIwMiwgMjI0LCAyMiwgMjMyLCAyNDAsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMjIsIDIwNCwgMzAsIDQ2LCAyMDIsIDIyNCwgMjIsIDIwNCwgNDYsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MCwgCisgICAgMTM3LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTAsIDExMiwgNDYsIDIwMiwgMjI0LCAyMiwgMjUxLCA4NSwgNDYsIDIwMiwgMjI0LCAKKyAgICAyMiwgMjUxLCAxMDEsIDQ2LCAyMDIsIDIyNCwgMTUwLCAyMjIsIDE5OSwgMjM4LCAyMTYsIDQ2LCAyMDIsIDIyNCwgMTUwLCAKKyAgICAyMjIsIDE5OSwgMjE4LCAxMDEsIDQ2LCAyMDIsIDIyNCwgMTUwLCAyMjIsIDE5OSwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAKKyAgICAxNTAsIDIyMiwgMTk5LCAyMDksIDEyLCA0NiwgMjAyLCAyMjQsIDE2LCAyMjYsIDcxLCA0NiwgMjAyLCAyMjQsIDE2LCAyMTgsIAorICAgIDEwMSwgNDYsIDIwMiwgMjI0LCAxNiwgMjEyLCAyMywgNDYsIDIwMiwgMjI0LCAxNiwgMjMzLCAyMDgsIDIzMywgMjAyLCA0NiwgCisgICAgMjAyLCAyMjQsIDE2LCAyMjYsIDgxLCAyMjYsIDgwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgNzIsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCA3NCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0NywgMzcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTgsIDYwLCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA0LCAyNTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDQsIDI0MSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDEsIDI0MSwgMjIwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCAyMDQsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMTksIDIxLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEwLCAxMTQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDgsIAorICAgIDE3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMjgsIDE1MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTIsIDEwMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTAsIAorICAgIDEzOSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTIsIDk1LCAyMjIsIDU4LCAyMjIsIDExNywgMjQ2LCAyNTMsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAyNTEsIDE4MiwgMjI2LCAxNzAsIDIyMiwgNTgsIDIyMiwgMTE3LCAyNTEsIDYyLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgNSwgMjEzLCAxMzAsIDgxLCAyMjIsIDU4LCAyMjIsIDExNywgMjAwLCAyMzgsIDIxMywgMTMwLCA4MSwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDIsIDIwMywgMjIyLCA1OCwgMjIyLCAxMTcsIDIwMiwgMjA4LCAzNCwgNSwgCisgICAgMjA0LCAyMzQsIDM0LCA1LCAyMDQsIDIzNywgMzQsIDUsIDIwNCwgMjQwLCAzNCwgNSwgMjA0LCAyMzgsIDM0LCA1LCAyMDQsIAorICAgIDIzOSwgMzQsIDUsIDIwNCwgMjM2LCAzNCwgNSwgMjQxLCAxOTgsIDM0LCA1LCAyNDEsIDIwMCwgMzQsIDUsIDI0MSwgMjAzLCAKKyAgICAzNCwgNSwgMjQxLCAyMDEsIDM0LCA1LCAyNDEsIDIwMiwgMzQsIDUsIDI0MSwgMTk5LCAzNCwgNSwgMjM5LCA4MCwgMzQsIDUsIAorICAgIDIzOSwgODQsIDM0LCA1LCAyMzksIDkyLCAzNCwgNSwgMjM5LCA4OSwgMzQsIDUsIDIzOSwgOTAsIDM0LCA1LCAyMzksIDgxLCAKKyAgICAzNCwgNSwgMjQ3LCA5MCwgMzQsIDUsIDI0NywgODQsIDM0LCA1LCAyNDcsIDg2LCAzNCwgNSwgMjQ3LCA4OSwgMzQsIDUsIAorICAgIDI0NywgODcsIDM0LCA1LCAyNDcsIDg4LCAzNCwgNSwgMjQ3LCA4NSwgMzQsIDUsIDI0OSwgNDQsIDM0LCA1LCAyNDksIDIzLCAKKyAgICAzNCwgNSwgMjQ5LCAzNSwgMzQsIDUsIDI0OSwgNDMsIDM0LCA1LCAyNDksIDM4LCAzNCwgNSwgMjQ5LCAzOSwgMzQsIDUsIAorICAgIDI0OSwgMjcsIDgsIDQsIDEsIDI0OSwgNzEsIDI1MSwgMTEyLCA4LCA0LCAxLCAzNSwgMjEzLCAxMDMsIDgsIDQsIDEsIDI0OCwgCisgICAgMTQwLCA3MiwgOCwgNCwgMSwgMjQ5LCA3MSwgNzIsIDgsIDQsIDEsIDE5NywgMywgMjM3LCAyNiwgOCwgNCwgMSwgMjI0LCAKKyAgICAyNDksIDIzOCwgNSwgOCwgNCwgMSwgMTM1LCAyMzYsIDE1NywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyMjgsIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDUzLCAxMDEsIDIwNSwgMjQwLCA4LCAKKyAgICA0LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyMTMsIDI2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIAorICAgIDIyMCwgMjE1LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjM4LCAxNjYsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyNDgsIDE0MCwgCisgICAgNzQsIDgsIDQsIDEsIDI0OCwgMTQwLCAxNjMsIDMsIDk3LCA4LCA0LCAxLCAxNzYsIDE2MywgMywgOTcsIDgsIDQsIDEsIAorICAgIDIyOCwgNTAsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE3LCAxMjIsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgCisgICAgMjE3LCAxMjIsIDMsIDIzMywgMTc3LCA5NywgOCwgNCwgMSwgMjA0LCAxODUsIDE2MywgMjE3LCA0OSwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDE2MywgMjE3LCA1MCwgMywgOTcsIDgsIDQsIDEsIDIwOCwgODEsIDE0NiwgOCwgMSwgNCwgNiwgMjE0LCAzMywgMywgCisgICAgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDIxNCwgMzMsIDIwMSwgMywgMjM0LCAxNzcsIDgsIDQsIDEsIDUzLCAxNDYsIDgsIDQsIAorICAgIDEsIDIxNCwgMzMsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCA1MywgMjE0LCAzMywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDEzNSwgCisgICAgMTQ2LCA4LCA0LCAxLCAxMzUsIDIxNCwgMzMsIDMsIDIxMywgMjYsIDgsIDQsIDEsIDI0OSwgNjIsIDIzOCwgOTQsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjA5LCAyNTAsIDUxLCAyMjUsIDE2LCA4LCA0LCAxLCAxMDgsIDI0OSwgNzcsIDMsIDIwOSwgMjUwLCA1MSwgCisgICAgMjI1LCAxNiwgOCwgNCwgMSwgMjA0LCAyMywgOCwgNCwgMSwgMjA0LCAxODUsIDIwNCwgMjMsIDgsIDQsIDEsIDEwOCwgMywgCisgICAgNDksIDExNywgOCwgNCwgMSwgMjQ2LCAyMzYsIDgsIDQsIDEsIDI0NiwgMjM3LCAzLCAxMjgsIDUxLCAyMTMsIDI2LCA4LCA0LCAKKyAgICAxLCAyNDYsIDIzNywgMywgMTI4LCA0OSwgMjEwLCAxNDksIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxMjgsIDUxLCAyMTMsIAorICAgIDI2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCA0OSwgMjI1LCAxNiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDE2OCwgCisgICAgNDksIDIyNSwgMTcsIDI2LCAxMjgsIDUxLCAyMTMsIDI2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCA0OSwgMjI1LCAKKyAgICAxNywgMywgMjEwLCAxNDksIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMDksIDI1MCwgNTEsIDIyNSwgMTYsIDY3LCAyNDgsIAorICAgIDU4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA2NywgMSwgNCwgMjM0LCAxMDMsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMjI4LCAKKyAgICA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMTAxLCAyMDUsIDI0MCwgNjcsIDEsIDQsIAorICAgIDEwOCwgMywgNDksIDExNywgOCwgNCwgMSwgMjEyLCAzOSwgMjAwLCA2NSwgOCwgNCwgMSwgMjI4LCAzOSwgNzIsIDgsIDQsIAorICAgIDEsIDE3NiwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwMywgMjMyLCA4LCA0LCAxLCAyMjgsIDUwLCAyNTEsIDExMiwgMzEsIDEsIAorICAgIDQsIDYsIDIxNywgODMsIDkxLCA0LCAxLCA2MiwgOTEsIDQsIDEsIDcyLCA5MSwgNCwgMSwgNzAsIDkxLCA0LCAxLCA3NCwgCisgICAgOTEsIDQsIDEsIDY2LCA5MSwgNCwgMSwgMjAzLCAxNjgsIDkxLCA0LCAxLCAyMzYsIDg5LCA5MSwgNCwgMSwgMTYxLCA5MSwgCisgICAgNCwgMSwgMjM2LCAxNSwgOTEsIDQsIDEsIDIzNSwgMTYxLCA5MSwgNCwgMSwgMjM1LCAxMTYsIDkxLCA0LCAxLCAyMzUsIDUwLCAKKyAgICA5MSwgNCwgMSwgMjM1LCAxMiwgOTEsIDQsIDEsIDE0NCwgOTEsIDQsIDEsIDIzNCwgMTM5LCA5MSwgNCwgMSwgMjM0LCA3NSwgCisgICAgOTEsIDQsIDEsIDIzMywgMjA3LCA5MSwgNCwgMSwgMjMzLCA5NywgOTEsIDQsIDEsIDIzMywgNjksIDkxLCA0LCAxLCAxOTQsIAorICAgIDkxLCA0LCAxLCAyMjUsIDQwLCA5MSwgNCwgMSwgMjI0LCAyMTAsIDkxLCA0LCAxLCAyMjQsIDExMCwgOTEsIDQsIDEsIDIyNCwgCisgICAgNDIsIDkxLCA0LCAxLCAyMjQsIDExLCA5MSwgNCwgMSwgMTc4LCA5MSwgNCwgMSwgMjIyLCA3NiwgOTEsIDQsIDEsIDIyMSwgCisgICAgMjExLCA5MSwgNCwgMSwgMjIxLCAxMzYsIDkxLCA0LCAxLCAyMjEsIDQxLCA5MSwgNCwgMSwgMTg4LCA5MSwgNCwgMSwgMjMzLCAKKyAgICAyMzEsIDkxLCA0LCAxLCAyMjAsIDE0NCwgOTEsIDQsIDEsIDIyMCwgMzQsIDkxLCA0LCAxLCAyMTksIDE1MCwgOTEsIDQsIDEsIAorICAgIDIxOCwgMjQxLCA5MSwgNCwgMSwgMjE4LCAxMzMsIDkxLCA0LCAxLCAyMTgsIDcxLCA5MSwgNCwgMSwgMjE0LCA5NiwgOTEsIAorICAgIDQsIDEsIDIxNCwgODIsIDkxLCA0LCAxLCAyMTQsIDc1LCA5MSwgNCwgMSwgMjE0LCA2NiwgOTEsIDQsIDEsIDIxNCwgNTUsIAorICAgIDkxLCA0LCAxLCAyMTQsIDUzLCA5MSwgNCwgMSwgMjEyLCA2NCwgOTEsIDQsIDEsIDIxMiwgMTIyLCA5MSwgNCwgMSwgMjExLCAKKyAgICAyMDIsIDkxLCA0LCAxLCAyMDksIDE4MiwgOTEsIDQsIDEsIDIwOSwgMjksIDkxLCA0LCAxLCAyMDgsIDI0LCA5MSwgNCwgMSwgCisgICAgMjA3LCAxOTEsIDkxLCA0LCAxLCAyNDIsIDU4LCA5MSwgNCwgMSwgMjA3LCAzNiwgOTEsIDQsIDEsIDI0MSwgMTc1LCA5MSwgCisgICAgNCwgMSwgMjA2LCAyMDEsIDkxLCA0LCAxLCAyNDEsIDc2LCA5MSwgNCwgMSwgMjA2LCAxNSwgOTEsIDQsIDEsIDI0MCwgMjExLCAKKyAgICA5MSwgNCwgMSwgMjM5LCAxMzcsIDkxLCA0LCAxLCAyMzksIDEwNywgOTEsIDQsIDEsIDI0MCwgMjIyLCA5MSwgNCwgMSwgCisgICAgMjA1LCAyMDMsIDkxLCA0LCAxLCAyMDUsIDIwMiwgOTEsIDQsIDEsIDIwNSwgMTkxLCA5MSwgNCwgMSwgMjA1LCAxOTAsIDkxLCAKKyAgICA0LCAxLCAyMDUsIDE4OSwgOTEsIDQsIDEsIDIwNSwgMTg4LCA5MSwgNCwgMSwgMjA1LCAzMiwgOTEsIDQsIDEsIDIwNSwgMjYsIAorICAgIDkxLCA0LCAxLCAyMDUsIDExLCA5MSwgNCwgMSwgMjA1LCA5LCA5MSwgNCwgMSwgMjA1LCA1LCA5MSwgNCwgMSwgMjA1LCA0LCAKKyAgICA5MSwgNCwgMSwgMjAxLCAxMTQsIDkxLCA0LCAxLCAyMDEsIDY0LCA5MSwgNCwgMSwgMjAxLCAzMSwgOTEsIDQsIDEsIDIwMSwgCisgICAgMCwgOTEsIDQsIDEsIDIwMCwgMjE2LCA5MSwgNCwgMSwgMjAwLCAyMDMsIDkxLCA0LCAxLCAxODMsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCAyMjYsIDc4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEyLCAyMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIAorICAgIDIyNSwgMTQ5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIxLCAxNDcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAxNzIsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAxODgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDYsIDIyOCwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIwNSwgMjQyLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI2LCAxNzMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTksIAorICAgIDE2OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNiwgNTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDEsIDEwOCwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDIwMCwgNzUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzMsIDg5LCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMSwgMjA0LCA1LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgNzAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTUsIDIzOSwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI1MCwgMTUwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjM1LCAxMDksIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAxLCAyMjcsIDIxMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxMywgMjI5LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjQ5LCAxMzYsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjcsIDE5OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgCisgICAgMzMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzUsIDE2OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgNzgsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyNDgsIDE5OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNiwgNzksIDIyNCwgNzksIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyMjUsIDE1MCwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMSwgMTQ4LCAyMjQsIAorICAgIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE2LCAyMTEsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjAsIAorICAgIDE2MiwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNSwgMjQzLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjE5LCAxNjksIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzMsIDE5LCAyMjQsIDc5LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDIxNywgNzYsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjI4LCAxMTUsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjUxLCA4MywgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDAsIDQwLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDIwOSwgMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDQsIDIsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAyMiwgMiwgMjQ2LCAyNTEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjE4LCA4NiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDI0NiwgMjUyLCAyMjIsIDU4LCAyMjIsIDExNywgMjI0LCAyNiwgMjI4LCAxLCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMjUxLCAyLCAyMjgsIDEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTk5LCA4MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAKKyAgICAxMDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTA1LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE0NywgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDE3LCAxNDksIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTY0LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIAorICAgIDE4NywgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAyMTAsIDEzNSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxOTIsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxNywgMjE5LCAxMTMsIDI5LCAxODEsIDIxNywgMjIzLCAyOSwgMTgxLCAyMTcsIDIyOCwgMjksIAorICAgIDE4MSwgMTk5LCAyNDQsIDI5LCAxODEsIDE5OSwgMjQzLCAyOSwgMTgxLCAxOTksIDI0MiwgMjksIDE4MSwgMjA0LCA5NiwgCisgICAgMjksIDE4MSwgMjA0LCAxMDAsIDI5LCAxODEsIDE5OSwgMjA5LCAyOSwgMTgxLCAxOTksIDIwNSwgMjksIDE4MSwgMjM4LCAKKyAgICA2OCwgMjksIDE4MSwgMjM4LCA2NiwgMjksIDE4MSwgMjM4LCA2NywgMjksIDE4MSwgMjM4LCA2NCwgMjksIDE4MSwgMjMzLCAKKyAgICA5LCAyOSwgMTgxLCAyMzMsIDgsIDI5LCAxODEsIDIzMywgNiwgMjksIDE4MSwgMjMzLCA3LCAyOSwgMTgxLCAyMzMsIDEyLCAKKyAgICAyOSwgMTgxLCAyMzMsIDUsIDI5LCAxODEsIDIzMywgNCwgMjksIDE4MSwgMjMzLCAxNCwgMjksIDE4MSwgMjUwLCAyNDQsIAorICAgIDI5LCAxODEsIDI1MCwgMjQzLCAyOSwgMTEwLCAyMTksIDEzNiwgMjksIDExMCwgMjE5LCAxNDIsIDI5LCAxMTAsIDIwOCwgCisgICAgMTYwLCAyOSwgMTEwLCAyMDgsIDE1OSwgMjksIDExMCwgMjA1LCAyNDgsIDI5LCAxMTAsIDIwNSwgMjQ2LCAyOSwgMTEwLCAKKyAgICAyMDUsIDI0NSwgMjksIDExMCwgMjA1LCAyNTEsIDI5LCAxMTAsIDIwNSwgMjUyLCAyOSwgMTEwLCAyMDUsIDI0NCwgMjksIAorICAgIDExMCwgMjEzLCA1NywgMjksIDExMCwgMjEzLCA3MiwgMjksIDExMCwgMjA4LCAxNjYsIDI5LCAxMTAsIDIxMywgNjksIDI5LCAKKyAgICAxMTAsIDIxMywgNTksIDI5LCAxMTAsIDIxMywgNjEsIDI5LCAxMTAsIDIxMywgNDgsIDI5LCAxMTAsIDIxMywgNDksIDI5LCAKKyAgICAxMTAsIDIyNywgNTAsIDI5LCAxMTAsIDIyMSwgMTkyLCAyOSwgMTEwLCAyMjEsIDE4NiwgMjksIDExMCwgMjA4LCAxNzAsIAorICAgIDI5LCAxMTAsIDIyMSwgMTg5LCAyOSwgMTEwLCAyMjEsIDE5NSwgMjksIDExMCwgMjE1LCAxNzEsIDI5LCAxMTAsIDIxNSwgCisgICAgMTgwLCAyOSwgMTEwLCAyMTUsIDE4NCwgMjksIDExMCwgMjA4LCAxNjgsIDI5LCAxMTAsIDIxNSwgMTc0LCAyOSwgMTEwLCAKKyAgICAyMTUsIDE4OCwgMjksIDExMCwgMjE1LCAxODksIDI5LCAxMTAsIDIwOSwgMTIxLCAyOSwgMTEwLCAyMDksIDEyNCwgMjksIAorICAgIDExMCwgMjA4LCAxNjQsIDI5LCAxMTAsIDIwOCwgMTYyLCAyOSwgMTEwLCAyMDksIDExOSwgMjksIDExMCwgMjA5LCAxMjcsIAorICAgIDI5LCAxMTAsIDIwOSwgMTI4LCAyOSwgMTEwLCAyMDksIDExMywgMjksIDExMCwgMjA5LCAxMjYsIDI5LCAxMTAsIDIxNiwgCisgICAgMTQ0LCAyOSwgMTEwLCAyMTYsIDE0NSwgMjksIDExMCwgMjAwLCAyNiwgMjksIDExMCwgMjAwLCAyNywgMjksIDExMCwgMjQ2LCAKKyAgICAxNjYsIDI5LCAxMTAsIDI0NiwgMTY1LCAyOSwgMTEwLCAyMDgsIDE3NSwgMjksIDExMCwgMjE1LCAyMjQsIDI5LCAxMTAsIAorICAgIDIxNSwgMjIzLCAxMiwgMTUsIDIzMCwgMTQyLCAxMiwgMTUsIDIzMCwgMTQxLCAxMiwgMTUsIDIzMCwgMTQwLCAxMiwgMTUsIAorICAgIDIzMCwgMTM5LCAxMiwgMTUsIDIzMCwgMTM4LCAxMiwgMTUsIDIzMCwgMTM3LCAxMiwgMTUsIDIzMCwgMTM2LCAxMiwgMTUsIAorICAgIDIzMCwgMTM1LCAxMiwgMTUsIDIzMCwgMTM0LCAxMiwgMTUsIDIzMCwgMTMzLCAxMiwgMTUsIDIzMCwgMTMyLCAxMiwgMTUsIAorICAgIDIzMCwgMTMxLCAxMiwgMTUsIDIzMCwgMTMwLCAxMiwgMTUsIDIzMCwgMTI5LCAxMiwgMTUsIDIzMCwgMTI4LCAxMiwgMTUsIAorICAgIDIzMCwgMTI3LCAxMiwgMTUsIDIzMCwgMTI2LCAxMiwgMTUsIDIzMCwgMTI1LCAxMiwgMTUsIDIzMCwgMTI0LCAxMiwgMTUsIAorICAgIDIzMCwgMTIzLCAxMiwgMTUsIDIzMCwgMTIyLCAxMiwgMTUsIDIzMCwgMTIxLCAxMiwgMTUsIDIzMCwgMTIwLCAxMiwgMTUsIAorICAgIDIzMCwgMTE5LCAxMiwgMTUsIDIzMCwgMTE4LCAxMiwgMTUsIDIzMCwgMTE3LCAxMiwgMTUsIDIzMCwgMTE2LCAxMiwgMTUsIAorICAgIDIzMCwgMTE1LCAxMiwgMTUsIDIzMCwgMTE0LCAxMiwgMTUsIDIzMCwgMTEzLCAxMiwgMTUsIDIzMCwgMTEyLCAxMiwgMTUsIAorICAgIDIzMCwgMTExLCAxMiwgMTUsIDIzMCwgMTEwLCAxMiwgMTUsIDIzMCwgMTA5LCAxMiwgMTUsIDIzMCwgMTA4LCAxMiwgMTUsIAorICAgIDIzMCwgMTA3LCAxMiwgMTUsIDIzMCwgMTA2LCAxMiwgMTUsIDIzMCwgMTA1LCAxMiwgMTUsIDIzMCwgMTA0LCAxMiwgMTUsIAorICAgIDIzMCwgMTAzLCAxMiwgMTUsIDIzMCwgMTAyLCAxMiwgMTUsIDIzMCwgMTAxLCAxMiwgMTUsIDIzMCwgMTAwLCAxMiwgMTUsIAorICAgIDIzMCwgOTksIDEyLCAxNSwgMjMwLCA5OCwgMTIsIDE1LCAyMzAsIDk3LCAxMiwgMTUsIDIzMCwgOTYsIDEyLCAxNSwgMjMwLCAKKyAgICA5NSwgMTIsIDE1LCAyMzAsIDk0LCAxMiwgMTUsIDIzMCwgOTMsIDEyLCAxNSwgMjMwLCA5MiwgMTIsIDE1LCAyMzAsIDkxLCAKKyAgICAxMiwgMTUsIDIzMCwgOTAsIDEyLCAxNSwgMjMwLCA4OSwgMTIsIDE1LCAyMzAsIDg4LCAxMiwgMTUsIDIzMCwgODcsIDEyLCAKKyAgICAxNSwgMjMwLCA4NiwgMTIsIDE1LCAyMzAsIDg1LCAxMiwgMTUsIDIzMCwgODQsIDEyLCAxNSwgMjMwLCA4MywgMTIsIDE1LCAKKyAgICAyMzAsIDgyLCAxMiwgMTUsIDIzMCwgODEsIDEyLCAxNSwgMjMwLCA4MCwgMTIsIDE1LCAyMzAsIDc5LCAxMiwgMTUsIDIzMCwgCisgICAgNzgsIDEyLCAxNSwgMjMwLCA3NywgMTIsIDE1LCAyMzAsIDc2LCAxMiwgMTUsIDIzMCwgNzUsIDEyLCAxNSwgMjMwLCA3NCwgCisgICAgMTIsIDE1LCAyMzAsIDczLCAxMiwgMTUsIDIzMCwgNzIsIDEyLCAxNSwgMjMwLCA3MSwgMTIsIDE1LCAyMzAsIDcwLCAxMiwgCisgICAgMTUsIDIzMCwgNjksIDEyLCAxNSwgMjMwLCA2OCwgMTIsIDE1LCAyMzAsIDY3LCAxMiwgMTUsIDIzMCwgNjYsIDEyLCAxNSwgCisgICAgMjMwLCA2NSwgMTIsIDE1LCAyMzAsIDY0LCAxMiwgMTUsIDIzMCwgNjMsIDEyLCAxNSwgMjMwLCA2MiwgMTIsIDE1LCAyMzAsIAorICAgIDYxLCAxMiwgMTUsIDIzMCwgNjAsIDEyLCAxNSwgMjMwLCA1OSwgMTIsIDE1LCAyMzAsIDU4LCAxMiwgMTUsIDIzMCwgNTcsIAorICAgIDEyLCAxNSwgMjMwLCA1NiwgMTIsIDE1LCAyMzAsIDU1LCAxMiwgMTUsIDIzMCwgNTQsIDEyLCAxNSwgMjMwLCA1MywgMTIsIAorICAgIDE1LCAyMzAsIDUyLCAxMiwgMTUsIDIzMCwgNTEsIDEyLCAxNSwgMjMwLCA1MCwgMTIsIDE1LCAyMzAsIDQ5LCAxMiwgMTUsIAorICAgIDIzMCwgNDgsIDEyLCAxNSwgMjMwLCA0NywgMTIsIDE1LCAyMzAsIDQ2LCAxMiwgMTUsIDIzMCwgNDUsIDEyLCAxNSwgMjMwLCAKKyAgICA0NCwgMTIsIDE1LCAyMzAsIDQzLCAxMiwgMTUsIDIzMCwgNDIsIDEyLCAxNSwgMjMwLCA0MSwgMTIsIDE1LCAyMzAsIDQwLCAKKyAgICAxMiwgMTUsIDIzMCwgMzksIDEyLCAxNSwgMjMwLCAzOCwgMTIsIDE1LCAyMzAsIDM3LCAxMiwgMTUsIDIzMCwgMzYsIDEyLCAKKyAgICAxNSwgMjMwLCAzNSwgMTIsIDE1LCAyMzAsIDM0LCAxMiwgMTUsIDIzMCwgMzMsIDEyLCAxNSwgMjMwLCAzMiwgMTIsIDE1LCAKKyAgICAyMzAsIDMxLCAxMiwgMTUsIDIzMCwgMzAsIDEyLCAxNSwgMjMwLCAyOSwgMTIsIDE1LCAyMzAsIDI4LCAxMiwgMTUsIDIzMCwgCisgICAgMjcsIDEyLCAxNSwgMjMwLCAyNiwgMTIsIDE1LCAyMzAsIDI1LCAxMiwgMTUsIDIzMCwgMjQsIDEyLCAxNSwgMjMwLCAyMywgCisgICAgMTIsIDE1LCAyMzAsIDIyLCAxMiwgMTUsIDIzMCwgMjEsIDEyLCAxNSwgMjMwLCAyMCwgMTIsIDE1LCAyMzAsIDE5LCAxMiwgCisgICAgMTUsIDIzMCwgMTgsIDEyLCAxNSwgMjMwLCAxNywgMTIsIDE1LCAyMzAsIDE2LCAxMiwgMTUsIDIzMCwgMTUsIDEyLCAxNSwgCisgICAgMjMwLCAxNCwgMTIsIDE1LCAyMzAsIDEzLCAxMiwgMTUsIDIzMCwgMTIsIDEyLCAxNSwgMjMwLCAxMSwgMTIsIDE1LCAyMzAsIAorICAgIDEwLCAxMiwgMTUsIDIzMCwgOSwgMTIsIDE1LCAyMzAsIDgsIDEyLCAxNSwgMjMwLCA3LCAxMiwgMTUsIDIzMCwgNiwgMTIsIAorICAgIDE1LCAyMzAsIDUsIDEyLCAxNSwgMjMwLCA0LCAxMiwgMTUsIDIzMCwgMywgMTIsIDE1LCAyMzAsIDIsIDEyLCAxNSwgMjMwLCAKKyAgICAxLCAxMiwgMTUsIDIzMCwgMCwgMTIsIDE1LCAyMjksIDI1NSwgMTIsIDE1LCAyMjksIDI1NCwgMTIsIDE1LCAyMjksIDI1MywgCisgICAgMTIsIDE1LCAyMjksIDI1MiwgMTIsIDE1LCAyMjksIDI1MSwgMTIsIDE1LCAyMjksIDI1MCwgMTIsIDE1LCAyMjksIDI0OSwgCisgICAgMTIsIDE1LCAyMjksIDI0OCwgMTIsIDE1LCAyMjksIDI0NywgMTIsIDE1LCAyMjksIDI0NiwgMTIsIDE1LCAyMjksIDI0NSwgCisgICAgMTIsIDE1LCAyMjksIDI0NCwgMTIsIDE1LCAyMjksIDI0MywgMTIsIDE1LCAyMjksIDI0MiwgMTIsIDE1LCAyMjksIDI0MSwgCisgICAgMTIsIDE1LCAyMjksIDI0MCwgMTIsIDE1LCAyMjksIDIzOSwgMTIsIDE1LCAyMjksIDIzOCwgMTIsIDE1LCAyMjksIDIzNywgCisgICAgMTIsIDE1LCAyMjksIDIzNiwgMTIsIDE1LCAyMjksIDIzNSwgMTIsIDE1LCAyMjksIDIzNCwgMTIsIDE1LCAyMjksIDIzMywgCisgICAgMTIsIDE1LCAyMjksIDIzMiwgMTIsIDE1LCAyMjksIDIzMSwgMTIsIDE1LCAyMjksIDIzMCwgMTIsIDE1LCAyMjksIDIyOSwgCisgICAgMTIsIDE1LCAyMjksIDIyOCwgMTIsIDE1LCAyMjksIDIyNywgMTIsIDE1LCAyMjksIDIyNiwgMTIsIDE1LCAyMjksIDIyNSwgCisgICAgMTIsIDE1LCAyMjksIDIyNCwgMTIsIDE1LCAyMjksIDIyMywgMTIsIDE1LCAyMjksIDIyMiwgMTIsIDE1LCAyMjksIDIyMSwgCisgICAgMTIsIDE1LCAyMjksIDIyMCwgMTIsIDE1LCAyMjksIDIxOSwgMTIsIDE1LCAyMjksIDIxOCwgMTIsIDE1LCAyMjksIDIxNywgCisgICAgMTIsIDE1LCAyMjksIDIxNiwgMTIsIDE1LCAyMjksIDIxNSwgMTIsIDE1LCAyMjksIDIxNCwgMTIsIDE1LCAyMjksIDIxMywgCisgICAgMTIsIDE1LCAyMjksIDIxMiwgMTIsIDE1LCAyMjksIDIxMSwgMTIsIDE1LCAyMjksIDIxMCwgMTIsIDE1LCAyMjksIDIwOSwgCisgICAgMTIsIDE1LCAyMjksIDIwOCwgMTIsIDE1LCAyMjksIDIwNywgMTIsIDE1LCAyMjksIDIwNiwgMTIsIDE1LCAyMjksIDIwNSwgCisgICAgMTIsIDE1LCAyMjksIDIwNCwgMTIsIDE1LCAyMjksIDIwMywgMTIsIDE1LCAyMjksIDIwMiwgMTIsIDE1LCAyMjksIDIwMSwgCisgICAgMTIsIDE1LCAyMjksIDIwMCwgMTIsIDE1LCAyMjksIDE5OSwgMTIsIDE1LCAyMjksIDE5OCwgMTIsIDE1LCAyMjksIDE5NywgCisgICAgMTIsIDE1LCAyMjksIDE5NiwgMTIsIDE1LCAyMjksIDE5NSwgMTIsIDE1LCAyMjksIDE5NCwgMTIsIDE1LCAyMjksIDE5MywgCisgICAgMTIsIDE1LCAyMjksIDE5MiwgMTIsIDE1LCAyMjksIDE5MSwgMTIsIDE1LCAyMjksIDE5MCwgMTIsIDE1LCAyMjksIDE4OSwgCisgICAgMTIsIDE1LCAyMjksIDE4OCwgMTIsIDE1LCAyMjksIDE4NywgMTIsIDE1LCAyMjksIDE4NiwgMTIsIDE1LCAyMjksIDE4NSwgCisgICAgMTIsIDE1LCAyMjksIDE4NCwgMTIsIDE1LCAyMjksIDE4MywgMTIsIDE1LCAyMjksIDE4MiwgMTIsIDE1LCAyMjksIDE4MSwgCisgICAgMTIsIDE1LCAyMjksIDE4MCwgMTIsIDE1LCAyMjksIDE3OSwgMTIsIDE1LCAyMjksIDE3OCwgMTIsIDE1LCAyMjksIDE3NywgCisgICAgMTIsIDE1LCAyMjksIDE3NiwgMTIsIDE1LCAyMjksIDE3NSwgMTIsIDE1LCAyMjksIDE3NCwgMTIsIDE1LCAyMjksIDE3MywgCisgICAgMTIsIDE1LCAyMjksIDE3MiwgMTIsIDE1LCAyMjksIDE3MSwgMTIsIDE1LCAyMjksIDE3MCwgMTIsIDE1LCAyMjksIDE2OSwgCisgICAgMTIsIDE1LCAyMjksIDE2OCwgMTIsIDE1LCAyMjksIDE2NywgMTIsIDE1LCAyMjksIDE2NiwgMTIsIDE1LCAyMjksIDE2NSwgCisgICAgMTIsIDE1LCAyMjksIDE2NCwgMTIsIDE1LCAyMjksIDE2MywgMTIsIDE1LCAyMjksIDE2MiwgMTIsIDE1LCAyMjksIDE2MSwgCisgICAgMTIsIDE1LCAyMjksIDE2MCwgMTIsIDE1LCAyMjksIDE1OSwgMTIsIDE1LCAyMjksIDE1OCwgMTIsIDE1LCAyMjksIDE1NywgCisgICAgMTIsIDE1LCAyMjksIDE1NiwgMTIsIDE1LCAyMjksIDE1NSwgMTIsIDE1LCAyMjksIDE1NCwgMTIsIDE1LCAyMjksIDE1MywgCisgICAgMTIsIDE1LCAyMjksIDE1MiwgMTIsIDE1LCAyMjksIDE1MSwgMTIsIDE1LCAyMjksIDE1MCwgMTIsIDE1LCAyMjksIDE0OSwgCisgICAgMTIsIDE1LCAyMjksIDE0OCwgMTIsIDE1LCAyMjksIDE0NywgMTIsIDE1LCAyMjksIDE0NiwgMTIsIDE1LCAyMjksIDE0NSwgCisgICAgMTIsIDE1LCAyMjksIDE0NCwgMTIsIDE1LCAyMjksIDE0MywgMTIsIDE1LCAyMjksIDE0MiwgMTIsIDE1LCAyMjksIDE0MSwgCisgICAgMTIsIDE1LCAyMjksIDE0MCwgMTIsIDE1LCAyMjksIDEzOSwgMTIsIDE1LCAyMjksIDEzOCwgMTIsIDE1LCAyMjksIDEzNywgCisgICAgMTIsIDE1LCAyMjksIDEzNiwgMTIsIDE1LCAyMjksIDEzNSwgMTIsIDE1LCAyMjksIDEzNCwgMTIsIDE1LCAyMjksIDEzMywgCisgICAgMTIsIDE1LCAyMjksIDEzMiwgMTIsIDE1LCAyMjksIDEzMSwgMTIsIDE1LCAyMjksIDEzMCwgMTIsIDE1LCAyMjksIDEyOSwgCisgICAgMTIsIDE1LCAyMjksIDEyOCwgMTIsIDE1LCAyMjksIDEyNywgMTIsIDE1LCAyMjksIDEyNiwgMTIsIDE1LCAyMjksIDEyNSwgCisgICAgMTIsIDE1LCAyMjksIDEyNCwgMTIsIDE1LCAyMjksIDEyMywgMTIsIDE1LCAyMjksIDEyMiwgMTIsIDE1LCAyMjksIDEyMSwgCisgICAgMTIsIDE1LCAyMjksIDEyMCwgMTIsIDE1LCAyMjksIDExOSwgMTIsIDE1LCAyMjksIDExOCwgMTIsIDE1LCAyMjksIDExNywgCisgICAgMTIsIDE1LCAyMjksIDExNiwgMTIsIDE1LCAyMjksIDExNSwgMTIsIDE1LCAyMjksIDExNCwgMTIsIDE1LCAyMjksIDExMywgCisgICAgMTIsIDE1LCAyMjksIDExMiwgMTIsIDE1LCAyMjksIDExMSwgMTIsIDE1LCAyMjksIDExMCwgMTIsIDE1LCAyMjksIDEwOSwgCisgICAgMTIsIDE1LCAyMjksIDEwOCwgMTIsIDE1LCAyMjksIDEwNywgMTIsIDE1LCAyMjksIDEwNiwgMTIsIDE1LCAyMjksIDEwNSwgCisgICAgMTIsIDE1LCAyMjksIDEwNCwgMTIsIDE1LCAyMjksIDEwMywgMTIsIDE1LCAyMjksIDEwMiwgMTIsIDE1LCAyMjksIDEwMSwgCisgICAgMTIsIDE1LCAyMjksIDEwMCwgMTIsIDE1LCAyMjksIDk5LCAxMiwgMTUsIDIyOSwgOTgsIDEyLCAxNSwgMjI5LCA5NywgMTIsIAorICAgIDE1LCAyMjksIDk2LCAxMiwgMTUsIDIyOSwgOTUsIDEyLCAxNSwgMjI5LCA5NCwgMTIsIDE1LCAyMjksIDkzLCAxMiwgMTUsIAorICAgIDIyOSwgOTIsIDEyLCAxNSwgMjI5LCA5MSwgMTIsIDE1LCAyMjksIDkwLCAxMiwgMTUsIDIyOSwgODksIDEyLCAxNSwgMjI5LCAKKyAgICA4OCwgMTIsIDE1LCAyMjksIDg3LCAxMiwgMTUsIDIyOSwgODYsIDEyLCAxNSwgMjI5LCA4NSwgMTIsIDE1LCAyMjksIDg0LCAKKyAgICAxMiwgMTUsIDIyOSwgODMsIDEyLCAxNSwgMjI5LCA4MiwgMTIsIDE1LCAyMjksIDgxLCAxMiwgMTUsIDIyOSwgODAsIDEyLCAKKyAgICAxNSwgMjI5LCA3OSwgMTIsIDE1LCAyMjksIDc4LCAxMiwgMTUsIDIyOSwgNzcsIDEyLCAxNSwgMjI5LCA3NiwgMTIsIDE1LCAKKyAgICAyMjksIDc1LCAxMiwgMTUsIDIyOSwgNzQsIDEyLCAxNSwgMjI5LCA3MywgMTIsIDE1LCAyMjksIDcyLCAxMiwgMTUsIDIyOSwgCisgICAgNzEsIDEyLCAxNSwgMjI5LCA3MCwgMTIsIDE1LCAyMjksIDY5LCAxMiwgMTUsIDIyOSwgNjgsIDEyLCAxNSwgMjI5LCA2NywgCisgICAgMTIsIDE1LCAyMjksIDY2LCAxMiwgMTUsIDIyOSwgNjUsIDEyLCAxNSwgMjI5LCA2NCwgMTIsIDE1LCAyMjksIDYzLCAxMiwgCisgICAgMTUsIDIyOSwgNjIsIDEyLCAxNSwgMjI5LCA2MSwgMTIsIDE1LCAyMjksIDYwLCAxMiwgMTUsIDIyOSwgNTksIDEyLCAxNSwgCisgICAgMjI5LCA1OCwgMTIsIDE1LCAyMjksIDU3LCAxMiwgMTUsIDIyOSwgNTYsIDEyLCAxNSwgMjI5LCA1NSwgMTIsIDE1LCAyMjksIAorICAgIDU0LCAxMiwgMTUsIDIyOSwgNTMsIDEyLCAxNSwgMjI5LCA1MiwgMTIsIDE1LCAyMjksIDUxLCAxMiwgMTUsIDIyOSwgNTAsIAorICAgIDEyLCAxNSwgMjI5LCA0OSwgMTIsIDE1LCAyMjksIDQ4LCAxMiwgMTUsIDIyOSwgNDcsIDEyLCAxNSwgMjI5LCA0NiwgMTIsIAorICAgIDE1LCAyMjksIDQ1LCAxMiwgMTUsIDIyOSwgNDQsIDEyLCAxNSwgMjI5LCA0MywgMTIsIDE1LCAyMjksIDQyLCAxMiwgMTUsIAorICAgIDIyOSwgNDEsIDEyLCAxNSwgMjI5LCA0MCwgMTIsIDE1LCAyMjksIDM5LCAxMiwgMTUsIDIyOSwgMzgsIDEyLCAxNSwgMjI5LCAKKyAgICAzNywgMTIsIDE1LCAyMjksIDM2LCAxMiwgMTUsIDIyOSwgMzUsIDEyLCAxNSwgMjI5LCAzNCwgMTIsIDE1LCAyMjksIDMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMzIsIDEyLCAxNSwgMjI5LCAzMSwgMTIsIDE1LCAyMjksIDMwLCAxMiwgMTUsIDIyOSwgMjksIDEyLCAKKyAgICAxNSwgMjI5LCAyOCwgMTIsIDE1LCAyMjksIDI3LCAxMiwgMTUsIDIyOSwgMjYsIDEyLCAxNSwgMjI5LCAyNSwgMTIsIDE1LCAKKyAgICAyMjksIDI0LCAxMiwgMTUsIDIyOSwgMjMsIDEyLCAxNSwgMjI5LCAyMiwgMTIsIDE1LCAyMjksIDIxLCAxMiwgMTUsIDIyOSwgCisgICAgMjAsIDEyLCAxNSwgMjI5LCAxOSwgMTIsIDE1LCAyMjksIDE4LCAxMiwgMTUsIDIyOSwgMTcsIDEyLCAxNSwgMjI5LCAxNiwgCisgICAgMTIsIDE1LCAyMjksIDE1LCAxMiwgMTUsIDIyOSwgMTQsIDEyLCAxNSwgMjI5LCAxMywgMTIsIDE1LCAyMjksIDEyLCAxMiwgCisgICAgMTUsIDIyOSwgMTEsIDEyLCAxNSwgMjI5LCAxMCwgMTIsIDE1LCAyMjksIDksIDEyLCAxNSwgMjI5LCA4LCAxMiwgMTUsIAorICAgIDIyOSwgNywgMTIsIDE1LCAyMjksIDYsIDEyLCAxNSwgMjI5LCA1LCAxMiwgMTUsIDIyOSwgNCwgMTIsIDE1LCAyMjksIDMsIAorICAgIDEyLCAxNSwgMjI5LCAyLCAxMiwgMTUsIDIyOSwgMSwgMTIsIDE1LCAyMjksIDAsIDEyLCAxNSwgMjI4LCAyNTUsIDEyLCAxNSwgCisgICAgMjI4LCAyNTQsIDEyLCAxNSwgMjI4LCAyNTMsIDEyLCAxNSwgMjI4LCAyNTIsIDEyLCAxNSwgMjI4LCAyNTEsIDEyLCAxNSwgCisgICAgMjI4LCAyNTAsIDEyLCAxNSwgMjI4LCAyNDksIDEyLCAxNSwgMjI4LCAyNDgsIDEyLCAxNSwgMjI4LCAyNDcsIDEyLCAxNSwgCisgICAgMjI4LCAyNDYsIDEyLCAxNSwgMjI4LCAyNDUsIDEyLCAxNSwgMjI4LCAyNDQsIDEyLCAxNSwgMjI4LCAyNDMsIDEyLCAxNSwgCisgICAgMjI4LCAyNDIsIDEyLCAxNSwgMjI4LCAyNDEsIDEyLCAxNSwgMjI4LCAyNDAsIDEyLCAxNSwgMjI4LCAyMzksIDEyLCAxNSwgCisgICAgMjI4LCAyMzgsIDEyLCAxNSwgMjI4LCAyMzcsIDEyLCAxNSwgMjI4LCAyMzYsIDEyLCAxNSwgMjI4LCAyMzUsIDEyLCAxNSwgCisgICAgMjI4LCAyMzQsIDEyLCAxNSwgMjI4LCAyMzMsIDEyLCAxNSwgMjI4LCAyMzIsIDEyLCAxNSwgMjI4LCAyMzEsIDEyLCAxNSwgCisgICAgMjI4LCAyMzAsIDEyLCAxNSwgMjI4LCAyMjksIDEyLCAxNSwgMjI4LCAyMjgsIDEyLCAxNSwgMjI4LCAyMjcsIDEyLCAxNSwgCisgICAgMjI4LCAyMjYsIDEyLCAxNSwgMjI4LCAyMjUsIDEyLCAxNSwgMjI4LCAyMjQsIDEyLCAxNSwgMjI4LCAyMjMsIDEyLCAxNSwgCisgICAgMjI4LCAyMjIsIDEyLCAxNSwgMjI4LCAyMjEsIDEyLCAxNSwgMjI4LCAyMjAsIDEyLCAxNSwgMjI4LCAyMTksIDEyLCAxNSwgCisgICAgMjI4LCAyMTgsIDEyLCAxNSwgMjI4LCAyMTcsIDEyLCAxNSwgMjI4LCAyMTYsIDEyLCAxNSwgMjI4LCAyMTUsIDEyLCAxNSwgCisgICAgMjI4LCAyMTQsIDEyLCAxNSwgMjI4LCAyMTMsIDEyLCAxNSwgMjI4LCAyMTIsIDEyLCAxNSwgMjI4LCAyMTEsIDEyLCAxNSwgCisgICAgMjI4LCAyMTAsIDEyLCAxNSwgMjI4LCAyMDksIDEyLCAxNSwgMjI4LCAyMDgsIDEyLCAxNSwgMjI4LCAyMDcsIDEyLCAxNSwgCisgICAgMjI4LCAyMDYsIDEyLCAxNSwgMjI4LCAyMDUsIDEyLCAxNSwgMjI4LCAyMDQsIDEyLCAxNSwgMjI4LCAyMDMsIDEyLCAxNSwgCisgICAgMjI4LCAyMDIsIDEyLCAxNSwgMjI4LCAyMDEsIDEyLCAxNSwgMjI4LCAyMDAsIDEyLCAxNSwgMjI4LCAxOTksIDEyLCAxNSwgCisgICAgMjI4LCAxOTgsIDEyLCAxNSwgMjI4LCAxOTcsIDEyLCAxNSwgMjI4LCAxOTYsIDEyLCAxNSwgMjI4LCAxOTUsIDEyLCAxNSwgCisgICAgMjI4LCAxOTQsIDEyLCAxNSwgMjI4LCAxOTMsIDEyLCAxNSwgMjI4LCAxOTIsIDEyLCAxNSwgMjI4LCAxOTEsIDEyLCAxNSwgCisgICAgMjI4LCAxOTAsIDEyLCAxNSwgMjI4LCAxODksIDEyLCAxNSwgMjI4LCAxODgsIDEyLCAxNSwgMjI4LCAxODcsIDEyLCAxNSwgCisgICAgMjI4LCAxODYsIDEyLCAxNSwgMjI4LCAxODUsIDEyLCAxNSwgMjI4LCAxODQsIDEyLCAxNSwgMjI4LCAxODMsIDgsIDQsIDMzLCAKKyAgICAyMzcsIDExNiwgOCwgNCwgMzMsIDIzNywgMTEyLCA4LCA0LCAzMywgMjM3LCA1NiwgOCwgNCwgMzMsIDIzNywgMTE1LCA4LCAKKyAgICA0LCAzMywgMjM3LCAxMTQsIDgsIDQsIDMzLCAxNjgsIDIxMiwgMTIzLCAyMDcsIDgzLCA4LCA0LCAzMywgMjA4LCAxMjMsIAorICAgIDE4NCwgNCwgMzMsIDIyMiwgNDEsIDIxOCwgMjAxLCAxODQsIDQsIDMzLCAyMjIsIDQxLCAyMzksIDUsIDE4NCwgNCwgMzMsIAorICAgIDIyMiwgNDEsIDIyOCwgODYsIDE4NCwgNCwgMzMsIDIwMiwgMjM5LCAyMTgsIDIwMSwgMTg0LCA0LCAzMywgMjIyLCA0MSwgCisgICAgMjAwLCAxNzMsIDExMywgMSwgMTk5LCAyMzUsIDMsIDIzNCwgNDcsIDExMywgMjE1LCAxMDAsIDIyNywgMTQ2LCAyMDMsIDcxLCAKKyAgICAxMTMsIDMzLCAyMDAsIDcsIDE5OSwgMjM1LCAxOTksIDIzNSwgMjE2LCA5MywgMTEzLCAxLCAyNTEsIDEwNCwgMjUwLCAxMDcsIAorICAgIDExMywgMSwgMjAxLCAyOCwgMjUxLCAxNDIsIDExMywgMSwgMjAxLCAyOCwgMjQyLCAyMywgMTEzLCAxLCAyMDEsIDI4LCAKKyAgICAyMzQsIDEzOSwgMTEzLCAxLCAyMDEsIDI4LCAyMjcsIDg2LCAxMTMsIDEsIDIwMSwgMjgsIDIyNSwgODMsIDExMywgMSwgCisgICAgMjAxLCAyOCwgNDcsIDIyMiwgNDcsIDExMywgMSwgMjAxLCAyOCwgMjEzLCAxMjMsIDExMywgMSwgMjAxLCAyOCwgMjA2LCAKKyAgICAyMTcsIDExMywgMSwgMjUxLCAxMDQsIDkzLCA1NCwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyMTAsIDIyLCAyNDAsIDE4MiwgCisgICAgMTEzLCAxLCAyMTAsIDIyLCAzLCAyMDksIDE0MywgMjQwLCAxODIsIDExMywgMSwgMjEwLCAyMiwgMywgMjQyLCA0MywgMjYsIAorICAgIDIxMCwgMjIsIDI0MCwgMTgyLCAxMTMsIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDMsIDI2LCAyMDksIDE0MywgMjQwLCAxODIsIAorICAgIDExMywgMSwgMTQwLCAzLCAyMTYsIDkzLCAxMTMsIDEsIDE0MCwgMywgMjE0LCAxNDcsIDExMywgMSwgMTQwLCAzLCAyMjIsIAorICAgIDE2MywgMTEzLCAxLCAyNDgsIDIxMSwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMzUsIDE0OCwgMywgMjQyLCA0MiwgMTEzLCAxLCAKKyAgICAyNDIsIDI0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIzNCwgMTQwLCAzLCAyMjIsIDE2MywgMTEzLCAxLCAyMDMsIDY0LCAzLCAKKyAgICAyNDIsIDQyLCAxMTMsIDEsIDE5OSwgOTMsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA2LCAxNDcsIDMsIDI0MiwgNDIsIDExMywgCisgICAgMSwgMTk5LCAyMzUsIDMsIDI0MiwgNDIsIDExMywgMSwgNDcsIDIyNywgODcsIDMsIDI0MiwgNDIsIDExMywgMSwgMjI3LCAKKyAgICA4NywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjUsIDg0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyMiwgNDgsIDMsIDI0MiwgNDIsIAorICAgIDExMywgMSwgMjE4LCA5MCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTIsIDIwLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDQ3LCAKKyAgICAyMTYsIDc0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxNiwgNzQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA1LCAyOCwgMywgCisgICAgMjQyLCA0MiwgMTEzLCAxLCAyMTQsIDEwNywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTMsIDEyNCwgMywgMjQyLCA0MiwgMTEzLCAKKyAgICAxLCAyMTAsIDIyLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwNiwgMjE4LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwMywgNjQsIDMsIAorICAgIDIzMywgMTk5LCAxMTMsIDEsIDI0OCwgMjExLCAzLCAyMTMsIDIzMiwgMTEzLCAxLCAyMjcsIDg3LCAzLCAyMTMsIDIzMiwgCisgICAgMTEzLCAxLCAyMTYsIDc0LCAzLCAyMTMsIDIzMiwgMTEzLCAzMywgMTQwLCAyMjUsIDgzLCA5LCAxLCAxNDAsIDIwMSwgOTAsIAorICAgIDY1LCAxOSwgOSwgMSwgMTQwLCAyMDEsIDkwLCA0NywgMTksIDksIDEsIDI0OCwgMjUxLCA2NSwgMTksIDksIDEsIDI0OCwgCisgICAgMjUxLCA0NywgMTksIDksIDEsIDI0OCwgMjUxLCA4MiwgMTksIDksIDEsIDI0OCwgMjUxLCAxNzksIDE5LCA5LCAxLCAyMTYsIAorICAgIDU1LCA2NSwgMTksIDksIDEsIDIxNiwgNTUsIDQ3LCAxOSwgOSwgMSwgMjE2LCA1NSwgODIsIDE5LCA5LCAxLCAyMTYsIDU1LCAKKyAgICAxNzksIDE5LCA5LCAxLCAyNDgsIDIzOSwgNjUsIDE5LCA5LCAxLCAyNDgsIDIzOSwgNDcsIDE5LCA5LCAxLCAyNDgsIDIzOSwgCisgICAgODIsIDE5LCA5LCAxLCAyNDgsIDIzOSwgMTc5LCAxOSwgOSwgMSwgMjA0LCAyNDQsIDY1LCAxOSwgOSwgMSwgMjA0LCAyNDQsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjA0LCAyNDQsIDgyLCAxOSwgOSwgMSwgMjA0LCAyNDQsIDE3OSwgMTksIDksIDEsIDIwNiwgMTgyLCAKKyAgICA2NSwgMTksIDksIDEsIDIwNiwgMTgyLCA0NywgMTksIDksIDEsIDIwNiwgMTgyLCA4MiwgMTksIDksIDEsIDIwNiwgMTgyLCAKKyAgICAxNzksIDE5LCA5LCAxLCAyMDQsIDI0NiwgNjUsIDE5LCA5LCAxLCAyMDQsIDI0NiwgNDcsIDE5LCA5LCAxLCAyMDQsIDI0NiwgCisgICAgODIsIDE5LCA5LCAxLCAyMDQsIDI0NiwgMTc5LCAxOSwgOSwgMSwgMjAzLCA1MywgNjUsIDE5LCA5LCAxLCAyMDMsIDUzLCAKKyAgICA0NywgMTksIDksIDEsIDIwMywgNTMsIDgyLCAxOSwgOSwgMSwgMjAzLCA1MywgMTc5LCAxOSwgOSwgMSwgMjE2LCA1MywgNjUsIAorICAgIDE5LCA5LCAxLCAyMTYsIDUzLCA0NywgMTksIDksIDEsIDIxNiwgNTMsIDgyLCAxOSwgOSwgMSwgMjE2LCA1MywgMTc5LCAxOSwgCisgICAgOSwgMSwgMjM5LCAxMDAsIDY1LCAxOSwgOSwgMSwgMjM5LCAxMDAsIDQ3LCAxOSwgOSwgMSwgMjM5LCAxMDAsIDgyLCAxOSwgCisgICAgOSwgMSwgMjM5LCAxMDAsIDE3OSwgMTksIDksIDEsIDIxOCwgNDgsIDY1LCAxOSwgOSwgMSwgMjE4LCA0OCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMTgsIDQ4LCA4MiwgMTksIDksIDEsIDIxOCwgNDgsIDE3OSwgMTksIDksIDEsIDIwNiwgMjA2LCA2NSwgMTksIDksIDEsIAorICAgIDIwNiwgMjA2LCA0NywgMTksIDksIDEsIDIwNiwgMjA2LCA4MiwgMTksIDksIDEsIDIwNiwgMjA2LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNCwgNjUsIDE5LCA5LCAxLCAyMDYsIDIwNCwgNDcsIDE5LCA5LCAxLCAyMDYsIDIwNCwgODIsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNCwgMTc5LCAxOSwgOSwgMSwgMjQxLCAyMTgsIDY1LCAxOSwgOSwgMSwgMjQxLCAyMTgsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjQyLCAzNywgNjUsIDE5LCA5LCAxLCAyNDIsIDM3LCA0NywgMTksIDksIDEsIDIzOSwgMTI4LCA2NSwgMTksIDksIDEsIAorICAgIDIzOSwgMTI4LCA0NywgMTksIDksIDEsIDI0MSwgMjE2LCA2NSwgMTksIDksIDEsIDI0MSwgMjE2LCA0NywgMTksIDksIDEsIAorICAgIDIyNywgMjIyLCA2NSwgMTksIDksIDEsIDIyNywgMjIyLCA0NywgMTksIDksIDEsIDIxMiwgMjA4LCA2NSwgMTksIDksIDEsIAorICAgIDIxMiwgMjA4LCA0NywgMTksIDksIDEsIDIyNiwgMjUzLCA2NSwgMTksIDksIDEsIDIyNiwgMjUzLCA0NywgMTksIDksIDEsIAorICAgIDIyNiwgMjUzLCA4MiwgMTksIDksIDEsIDIyNiwgMjUzLCAxNzksIDE5LCA5LCAxLCAyMzYsIDc3LCA2NSwgMTksIDksIDEsIAorICAgIDIzNiwgNzcsIDQ3LCAxOSwgOSwgMSwgMjM2LCA3NywgODIsIDE5LCA5LCAxLCAyMzYsIDc3LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMzUsIDM4LCA2NSwgMTksIDksIDEsIDIzNSwgMzgsIDQ3LCAxOSwgOSwgMSwgMjM1LCAzOCwgODIsIDE5LCA5LCAxLCAyMzUsIAorICAgIDM4LCAxNzksIDE5LCA5LCAxLCAyMTksIDE3NywgNjUsIDE5LCA5LCAxLCAyMTksIDE3NywgNDcsIDE5LCA5LCAxLCAyMTksIAorICAgIDE3NywgODIsIDE5LCA5LCAxLCAyMTksIDE3NywgMTc5LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDIzNSwgMTY2LCA2NSwgMTksIAorICAgIDksIDEsIDIxOCwgMjI4LCAyMzUsIDE2NiwgNDcsIDE5LCA5LCAxLCAyMTMsIDUsIDY1LCAxOSwgOSwgMSwgMjEzLCA1LCA0NywgCisgICAgMTksIDksIDEsIDIxMywgNSwgODIsIDE5LCA5LCAxLCAyMTMsIDUsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCAzLCA5MCwgCisgICAgODgsIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCA4OCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIAorICAgIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgODIsIAorICAgIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgNjUsIDE5LCAKKyAgICA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA4MiwgMTksIDksIDEsIAorICAgIDIzNCwgMTE2LCAyNDAsIDIwOCwgMTc5LCAxOSwgOSwgMSwgOTAsIDI0OSwgNzAsIDY1LCAxOSwgOSwgMSwgOTAsIDI0OSwgCisgICAgNzAsIDQ3LCAxOSwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAxLCA5MCwgMjQ5LCAKKyAgICA3MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDE2LCA3MywgNTYsIDksIDE2LCA3MywgNTcsIDksIDE2LCAxMjAsIAorICAgIDE5MCwgNTYsIDksIDE2LCAxMjAsIDE5MCwgNTcsIDksIDE2LCAxMjYsIDE5MCwgNTYsIDksIDE2LCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDE2LCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCA1NiwgOSwgMTYsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIDU3LCA5LCAKKyAgICAxNiwgMjM2LCAyMjksIDE5MCwgNTYsIDksIDE2LCAyMzYsIDIyOSwgMTkwLCA1NywgOSwgMTYsIDUzLCA4MywgMjQ5LCA3NywgCisgICAgNTcsIDksIDE2LCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU2LCA5LCAxNiwgMTIwLCAxOTAsIDIwMiwgMjQ4LCA1NywgOSwgMTYsIAorICAgIDIxMywgMjYsIDksIDE2LCA0LCAyMDcsIDEwLCA1NiwgOSwgMTYsIDQsIDIwNywgMTAsIDU3LCA5LCAxLCAyMjAsIDAsIDY1LCAKKyAgICAxOSwgOSwgMSwgMjIwLCAwLCA0NywgMTksIDksIDEsIDIyMCwgMCwgODIsIDE5LCA5LCAxLCAyMjAsIDAsIDE3OSwgMTksIDksIAorICAgIDEsIDEwOCwgNjUsIDE5LCA5LCAxLCAxMDgsIDQ3LCAxOSwgOSwgMSwgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMSwgMjE3LCAKKyAgICAxMjIsIDQ3LCAxOSwgOSwgMSwgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMSwgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMSwgMTA4LCAKKyAgICAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgMSwgMjAzLCA2MCwgNjUsIDE5LCA5LCAxLCAyMDMsIDYwLCA0NywgMTksIDksIAorICAgIDEsIDIyNiwgMTM5LCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAxLCAyMjYsIDEzOSwgMjE3LCAxMjIsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI2LCAxMzksIDE5OSwgMjEyLCA2NSwgMTksIDksIDEsIDIyNiwgMTM5LCAxOTksIDIxMiwgNDcsIDE5LCA5LCAxLCAxOTcsIAorICAgIDY1LCAxOSwgOSwgMSwgMTk3LCA0NywgMTksIDksIDEsIDE5NywgODIsIDE5LCA5LCAxLCAxOTcsIDE3OSwgMTksIDksIDEsIAorICAgIDIwNCwgMjIsIDIyNywgMTIsIDIyNiwgMTM5LCAxNDAsIDIyMiwgMTg4LCA4MiwgMTksIDksIDEsIDIwNCwgMjIsIDIyNywgCisgICAgMTIsIDIyNiwgMTM5LCAxNDAsIDIyMiwgMTg4LCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAKKyAgICA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIAorICAgIDIwNCwgODgsIDMsIDI1MSwgMjIyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyNTEsIDIyMiwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MywgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTA4LCA2NSwgCisgICAgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxMDgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDMsIDIxNywgMTIyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMTcsIDEyMiwgNDcsIDE5LCAKKyAgICA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDMsIDE5OSwgMjEyLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTcsIDY1LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5NywgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTk3LCA4MiwgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA4MiwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgNjUsIDE5LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjM3LCAxNjIsIDkwLCA4MiwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIAorICAgIDIwNCwgODgsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTU1LCA2NSwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMDYsIDE4NCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxMDMsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDEwMywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAxOTMsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCAxOTMsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIyNiwgMjA0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgCisgICAgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE5MywgNjUsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjQyLCA1MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgCisgICAgMywgODQsIDY1LCAxOSwgOSwgMzMsIDE5OSwgMTA5LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgCisgICAgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTkzLCA2NSwgMTksIAorICAgIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNywgMTM1LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjM3LCAxMzUsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTQsIAorICAgIDE1MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTQsIDE1MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgCisgICAgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNiwgCisgICAgMjA0LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIDkyLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgOTAsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCA2NSwgMTksIAorICAgIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDkwLCA2NSwgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA4NCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAKKyAgICAyMDQsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIzNCwgCisgICAgMTE2LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNCwgMTE2LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDE1NSwgCisgICAgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCA5MCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDkwLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCA5MCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTE1LCAKKyAgICAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMTMsIDE1NSwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMTQwLCAyMjIsIDE4OCwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTYsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMjcsIDM1LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjM3LCAKKyAgICAxNTksIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE4LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgCisgICAgMjI3LCAzNywgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIAorICAgIDEwNiwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIAorICAgIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCAKKyAgICAyNDgsIDI0MSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTksIDEwNiwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgOTAsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDE5OSwgMTA2LCA0NywgCisgICAgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMTgsIDIyOCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxMDMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAKKyAgICA5MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIDkyLCAKKyAgICA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA0NywgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgCisgICAgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIAorICAgIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDMsIDIwNywgMjEzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgOTAsIAorICAgIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCA5MCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMTgsIDIyOCwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCA5MCwgCisgICAgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjM0LCAxMTYsIAorICAgIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDgyLCAxOSwgCisgICAgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyNDgsIDI0MSwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTAzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE5MywgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMjYsIDIwNCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAKKyAgICAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDgyLCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjA3LCAxMCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAxOTksIDEwOSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAKKyAgICAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE5MywgCisgICAgODIsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTkzLCA4MiwgMTksIAorICAgIDksIDMzLCAyMzcsIDEzNSwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjE0LCAKKyAgICAxNTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgCisgICAgOTIsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIzNCwgMTE2LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM0LCAKKyAgICAxMTYsIDMsIDIwNywgMjEzLCAxNDAsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCAxNzksIDE5LCAKKyAgICA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCAKKyAgICA5MiwgMTc5LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDE3OSwgCisgICAgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgODQsIDE3OSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjM0LCAxMTYsIDE3OSwgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTAsIDEwNSwgMywgMjM3LCAxNTksIDE3OSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxOCwgMTc5LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgMTA1LCAzLCAyMjcsIDM3LCAxNzksIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDE5MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCAKKyAgICA5LCAzMywgMTkzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNiwgMjA0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjEyLCA1NywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIAorICAgIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgCisgICAgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNywgCisgICAgMTAsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjUxLCAKKyAgICAxNzIsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjM1LCAxOTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAKKyAgICAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgCisgICAgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjYsIDIwNCwgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTkzLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIyNiwgMjA0LCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMTMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIxMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgODIsIDE5LCAKKyAgICA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIzNCwgMTE2LCA4MiwgMTksIAorICAgIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMSwgMTg3LCAzLCAxNTUsIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjI2LCAyMDQsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTAsIDYyLCAzLCAxOTMsIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDE3OSwgMTksIDksIDMzLCAyMTAsIAorICAgIDYyLCAzLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMTk5LCAKKyAgICAxMDksIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMTQwLCAzLCAyMzcsIDE1NywgNDcsIDE5LCA5LCAzMywgMTQwLCAzLCAyMzcsIAorICAgIDE1NywgNjUsIDE5LCAyMTcsIDE5LCA0OSwgMjE2LCAxMTUsIDIxNywgMTksIDUxLCAyMTYsIDExNSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCAxOTMsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgODQsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgCisgICAgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIAorICAgIDMsIDg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAKKyAgICAxOTMsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNTUsIAorICAgIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxMSwgMTg3LCAzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMywgMTQwLCAKKyAgICAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIAorICAgIDE1NSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCAyMjYsIDIwNCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgODQsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDE1NSwgNDcsIAorICAgIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIDMsIAorICAgIDg0LCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgCisgICAgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIAorICAgIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgODQsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgCisgICAgMywgMTkzLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgMTkzLCA0NywgMTksIDksIDMzLCAKKyAgICAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDE1NSwgODIsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIDIwNCwgMywgMTkzLCA4MiwgCisgICAgMTksIDksIDMzLCA4NCwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCAyMjYsIAorICAgIDIwNCwgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAKKyAgICA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIAorICAgIDIyOCwgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA4NCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIAorICAgIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIyNiwgMjA0LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIAorICAgIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIAorICAgIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAxOTMsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDE5MywgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIAorICAgIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCAKKyAgICA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAKKyAgICAyMjYsIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIyNywgODcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA4NCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgMTU1LCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDE1NSwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIAorICAgIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTIsIAorICAgIDMwLCAyMDMsIDE5MiwgMjUwLCAxODksIDIyNiwgNjAsIDIwOCwgNzcsIDIsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTQ5LCAKKyAgICAyMDMsIDE5MiwgMjUwLCAxODksIDIyNiwgNjAsIDIwOCwgNzcsIDIsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTIzLCA2NSwgMTksIAorICAgIDksIDMzLCAyNTEsIDE1NiwgNjUsIDE5LCA5LCAzMywgMjIxLCAxMDksIDY1LCAxOSwgOSwgMzMsIDIxMiwgMzEsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIxMywgMjA2LCA2NSwgMTksIDksIDMzLCAyNTEsIDE0NSwgNjUsIDE5LCA5LCAzMywgMjAxLCA5MiwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjEyLCAzMCwgNjUsIDE5LCA5LCAzMywgMjEyLCAyOSwgMjUxLCAxNDUsIDIwMSwgOTEsIDksIDMzLCAyMjcsIAorICAgIDIzOSwgMjEzLCA4NywgNTQsIDksIDMzLCAyNDgsIDE1NCwgMjUwLCAyNTEsIDI1MCwgMjUyLCA1OCwgMjExLCAxNzQsIDU4LCAKKyAgICAyMTEsIDYzLCA1OCwgMjEwLCAyNTEsIDU4LCAyMTAsIDI0MCwgNTgsIDIxMCwgMjI5LCA1OCwgMjEwLCAyMTgsIDU4LCAyMTAsIAorICAgIDIwNywgNTgsIDIxMCwgMTk2LCA1OCwgMjEwLCAxODUsIDU4LCAyMTEsIDE3MywgNTgsIDIxMSwgMTYyLCA1OCwgMjExLCAKKyAgICAxNTEsIDU4LCAyMTEsIDE0MCwgNTgsIDIxMSwgMTI5LCA1OCwgMjExLCAxMTgsIDU4LCAyMTEsIDEwNywgMjE1LCAxOSwgCisgICAgMjM2LCAyNDIsIDM2LCA4MywgMjQ2LCA3MCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMTQxLCAyNDYsIDcwLCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAxNDEsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICAyNDYsIDc5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMTAsIDE2NywgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgMjM4LCA0MywgODEsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIxNCwgNzksIDgxLCAyMTUsIDE5LCAyMzYsIDI0MiwgCisgICAgMzYsIDgzLCA0OSwgNjQsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjI0LCAKKyAgICAyNDcsIDI0OCwgNjgsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzMywgMTc3LCAyMzgsIDE5NSwgMzgsIDMzLCA0OSwgCisgICAgMjM0LCAyMTMsIDM4LCAzMywgNTEsIDIzNCwgMjEzLCAzOCwgNTMsIDIwNSwgMjQxLCA0OSwgMjM0LCAyMTMsIDM4LCA1MywgCisgICAgMjA1LCAyNDEsIDUxLCAyMzQsIDIxMywgMzgsIDIyMiwgMjI5LCA0OSwgMjM0LCAyMTMsIDM4LCAyMjIsIDIyOSwgNTEsIAorICAgIDIzNCwgMjEzLCAzOCwgMjQzLCA1NiwgMjIyLCAyMjgsIDM4LCAzMywgNDksIDE2NywgNTcsIDM4LCAzMywgNTEsIDE2NywgCisgICAgNTcsIDM4LCAyMDUsIDI0MSwgNDksIDE2NywgNTcsIDM4LCAyMDUsIDI0MSwgNTEsIDE2NywgNTcsIDM4LCAyMjIsIDIyOSwgCisgICAgNDksIDE2NywgNTcsIDM4LCAyMjIsIDIyOSwgNTEsIDE2NywgNTcsIDM4LCAyNDMsIDU2LCAyMjIsIDIyOSwgNTcsIDM4LCAKKyAgICAzNywgMjA1LCAyMTEsIDQ5LCAyMzQsIDIxMywgMzgsIDM3LCAyMDUsIDIxMSwgNTEsIDIzNCwgMjEzLCAyMTUsIDE5LCAyMzYsIAorICAgIDI0MiwgMzYsIDgzLCAxMjAsIDczLCAyMjUsIDM4LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMzgsIDE5MSwgMjQxLCAKKyAgICAyNDQsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzOCwgMTgwLCAyNDEsIDI0NCwgMjE1LCAxOSwgMjM2LCAyNDIsIAorICAgIDM2LCA4MywgMTI4LCAyMjQsIDE3NiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjAxLCA3NCwgMTI4LCAyMjQsIDE3NiwgCisgICAgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDIxNiwgMTE1LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgCisgICAgMjE2LCAxMTUsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyNDIsIDE5NiwgMTU5LCAyMTUsIDE5LCAyMzYsIAorICAgIDI0MiwgMzYsIDgzLCA1MSwgMjQyLCAxOTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDIwNSwgMTQ2LCAKKyAgICAyMTAsIDU1LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDUxLCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDUzLCAyNTEsIDcxLCAxNTksIAorICAgIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA1MywgMjUxLCA3MSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIAorICAgIDgzLCA0OSwgMjUxLCA3MSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgMjUxLCA3MSwgMTU5LCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgCisgICAgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNjQsIDI0MywgMTYsIDE1OSwgMjE1LCAxOSwgCisgICAgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyNDMsIDE2LCAxNTksIDIxMCwgMTQ1LCAyNDAsIDE4MiwgNjQsIDIxMCwgMTQ1LCAKKyAgICAyNDAsIDE4MiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDUyLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgCisgICAgODMsIDUxLCA1MiwgMTU5LCAyNDEsIDI0MywgMjE2LCAyNDEsIDI0NywgNTIsIDIxNiwgMjQxLCAyMDEsIDc0LCAyMTYsIAorICAgIDI0MSwgNTMsIDIwMSwgNzQsIDIxNiwgMjQxLCAyNDEsIDI0MywgMTI4LCAyMjQsIDE3NiwgMjQ3LCA1MiwgMTI4LCAyMjQsIAorICAgIDE3NiwgMjAxLCA3NCwgMTI4LCAyMjQsIDE3NiwgNCwgMjQ2LCA3MCwgNCwgMTQxLCAyNDYsIDcwLCA0LCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgNCwgMjEwLCAxNjcsIDQsIDI0NiwgNzksIDQsIDIxNCwgNzksIDgxLCA0LCAyMzgsIDQzLCA4MSwgNCwgMjM4LCAKKyAgICAxOTEsIDI0MSwgMjQ0LCA0LCA0OSwgMjE2LCAxMTUsIDQsIDUxLCAyMTYsIDExNSwgNCwgNDksIDI0MiwgMTk2LCAxNTksIDQsIAorICAgIDUxLCAyNDIsIDE5NiwgMTU5LCA0LCA0OSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNCwgNTEsIDIwNSwgMTQ2LCAyMTAsIAorICAgIDU1LCAxNTksIDQsIDQxLCA1NCwgNCwgMjUxLCA4OSwgNCwgMjUwLCAxNjUsIDQsIDkzLCA1NCwgNCwgMjMzLCAzMiwgNCwgCisgICAgMjI0LCAyNDEsIDU0LCA0LCAyMzUsIDY3LCA1NCwgNCwgMjM4LCAxMjIsIDU0LCA0LCAyMTMsIDEwNiwgMjA5LCAxNiwgNCwgCisgICAgMjQwLCAxOTQsIDU0LCA0LCAyMTYsIDI3LCA1NCwgNCwgMjQ2LCA2OCwgMjUwLCAxNTUsIDksIDIzNywgMTU3LCA2NSwgMTksIAorICAgIDksIDIwNiwgMjI0LCAzLCAyMzcsIDE1NywgNTYsIDksIDI0MiwgMTYsIDY1LCAxOSwgOSwgMjA3LCA3LCAyMzYsIDIxOCwgOSwgCisgICAgMjI3LCAzNSwgNjUsIDE5LCA5LCAyMzcsIDE1OSwgNjUsIDE5LCA5LCAyMzcsIDE1OSwgMTc5LCAxOSwgOSwgMjQyLCAxOCwgCisgICAgNjUsIDE5LCA5LCAyNDIsIDE4LCAxNzksIDE5LCA5LCAyMjcsIDM3LCA2NSwgMTksIDksIDIyNywgMzcsIDE3OSwgMTksIDksIAorICAgIDIxMCwgMTA1LCA2NSwgMTksIDksIDIxMCwgMTA1LCAxNzksIDE5LCA5LCAyMDcsIDIzNywgNjUsIDE5LCA5LCAyMDcsIDIzNywgCisgICAgMTc5LCAxOSwgOSwgMSwgMjM0LCAyMDQsIDY1LCAxOSwgOSwgMSwgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMSwgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDQ3LCAxOSwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMSwgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIAorICAgIDksIDEsIDIwMSwgNzMsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIDIyOCwgCisgICAgNjUsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIDIyOCwgNDcsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIAorICAgIDg4LCA2NSwgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgCisgICAgODIsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAxNzksIDE5LCA5LCAxLCAxNDAsIDY1LCAxOSwgOSwgMSwgMTQwLCAKKyAgICA0NywgMTksIDksIDEsIDI0OCwgMjQxLCA2NSwgMTksIDksIDEsIDI0OCwgMjQxLCA0NywgMTksIDksIDEsIDI0OCwgMjQxLCAKKyAgICA4MiwgMTksIDksIDEsIDI0OCwgMjQxLCAxNzksIDE5LCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTcsIDY1LCAxOSwgOSwgMSwgCisgICAgMjA2LCAxODQsIDIyMiwgMTU3LCA0NywgMTksIDksIDEsIDIwNiwgMTg0LCA2NSwgMTksIDksIDEsIDIwNiwgMTg0LCA0NywgCisgICAgMTksIDksIDEsIDIwNiwgMTg0LCA4MiwgMTksIDksIDEsIDIwNiwgMTg0LCAxNzksIDE5LCA5LCAxLCAyMDYsIDEwMywgNjUsIAorICAgIDE5LCA5LCAxLCAyMDYsIDEwMywgNDcsIDE5LCA5LCAxLCAyMDYsIDEwMywgODIsIDE5LCA5LCAxLCAyMDYsIDEwMywgMTc5LCAKKyAgICAxOSwgOSwgMSwgMTkzLCA2NSwgMTksIDksIDEsIDE5MywgNDcsIDE5LCA5LCAxLCAxOTMsIDgyLCAxOSwgOSwgMSwgMTkzLCAKKyAgICAxNzksIDE5LCA5LCAxLCAxNTUsIDY1LCAxOSwgOSwgMSwgMTU1LCA0NywgMTksIDksIDEsIDE1NSwgODIsIDE5LCA5LCAxLCAKKyAgICAxNTUsIDE3OSwgMTksIDksIDEsIDIyNiwgMjA0LCA2NSwgMTksIDksIDEsIDIyNiwgMjA0LCA0NywgMTksIDksIDEsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDEsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAxLCAyNDIsIDMwLCA2NSwgMTksIDksIDEsIDI0MiwgCisgICAgMzAsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxMTUsIDY1LCAxOSwgOSwgMSwgMjA2LCAxMTUsIDQ3LCAxOSwgOSwgMSwgMjEzLCAKKyAgICAxNTUsIDY1LCAxOSwgOSwgMSwgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMSwgMTk5LCAxMDYsIDY1LCAxOSwgOSwgMSwgMTk5LCAKKyAgICAxMDYsIDQ3LCAxOSwgOSwgMSwgMjExLCAxODcsIDY1LCAxOSwgOSwgMSwgMjExLCAxODcsIDQ3LCAxOSwgOSwgMSwgMjExLCAKKyAgICAxODcsIDgyLCAxOSwgOSwgMSwgMjExLCAxODcsIDE3OSwgMTksIDksIDEsIDIxMCwgNjIsIDY1LCAxOSwgOSwgMSwgMjEwLCAKKyAgICA2MiwgNDcsIDE5LCA5LCAxLCAyMTAsIDYyLCA4MiwgMTksIDksIDEsIDIxMCwgNjIsIDE3OSwgMTksIDksIDEsIDIxMiwgNTcsIAorICAgIDY1LCAxOSwgOSwgMSwgMjEyLCA1NywgNDcsIDE5LCA5LCAxLCAyMTIsIDU3LCA4MiwgMTksIDksIDEsIDIxMiwgNTcsIDE3OSwgCisgICAgMTksIDksIDEsIDI0MiwgNTMsIDY1LCAxOSwgOSwgMSwgMjQyLCA1MywgNDcsIDE5LCA5LCAxLCAyNDIsIDUzLCA4MiwgMTksIAorICAgIDksIDEsIDI0MiwgNTMsIDE3OSwgMTksIDksIDEsIDIwNywgMTAsIDY1LCAxOSwgOSwgMSwgMjA3LCAxMCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMDcsIDEwLCA4MiwgMTksIDksIDEsIDIwNywgMTAsIDE3OSwgMTksIDksIDEsIDE5OSwgMTA5LCA2NSwgMTksIDksIDEsIAorICAgIDE5OSwgMTA5LCA0NywgMTksIDksIDEsIDE5OSwgMTA5LCA4MiwgMTksIDksIDEsIDE5OSwgMTA5LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyNTEsIDE3MiwgNjUsIDE5LCA5LCAxLCAyNTEsIDE3MiwgNDcsIDE5LCA5LCAxLCAyNTEsIDE3MiwgODIsIDE5LCA5LCAxLCAKKyAgICAyNTEsIDE3MiwgMTc5LCAxOSwgOSwgMSwgMjM1LCAxOTUsIDY1LCAxOSwgOSwgMSwgMjM1LCAxOTUsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjM1LCAxOTUsIDgyLCAxOSwgOSwgMSwgMjM1LCAxOTUsIDE3OSwgMTksIDksIDEsIDIzNywgMTM1LCA2NSwgMTksIDksIDEsIAorICAgIDIzNywgMTM1LCA0NywgMTksIDksIDEsIDIzNywgMTM1LCA4MiwgMTksIDksIDEsIDIzNywgMTM1LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMTQsIDE1MywgNjUsIDE5LCA5LCAxLCAyMTQsIDE1MywgNDcsIDE5LCA5LCAxLCAyMTQsIDE1MywgODIsIDE5LCA5LCAxLCAKKyAgICAyMTQsIDE1MywgMTc5LCAxOSwgOSwgMSwgMjI3LCA4NywgNjUsIDE5LCA5LCAxLCAyMjcsIDg3LCA0NywgMTksIDksIDEsIAorICAgIDIyNywgODcsIDgyLCAxOSwgOSwgMSwgMjI3LCA4NywgMTc5LCAxOSwgOSwgMSwgMjI1LCA5MiwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMjUsIDkyLCA0NywgMTksIDksIDEsIDIyNSwgOTIsIDgyLCAxOSwgOSwgMSwgMjI1LCA5MiwgMTc5LCAxOSwgOSwgMSwgODQsIAorICAgIDY1LCAxOSwgOSwgMSwgODQsIDQ3LCAxOSwgOSwgMSwgODQsIDgyLCAxOSwgOSwgMSwgODQsIDE3OSwgMTksIDksIDEsIDIxOCwgCisgICAgMjI4LCA2NSwgMTksIDksIDEsIDIxOCwgMjI4LCA0NywgMTksIDksIDEsIDIxOCwgMjI4LCA4MiwgMTksIDksIDEsIDIxOCwgCisgICAgMjI4LCAxNzksIDE5LCA5LCAxLCAyMzQsIDExNiwgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgNDcsIDE5LCA5LCAxLCAyMzQsIAorICAgIDExNiwgODIsIDE5LCA5LCAxLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMSwgMjAxLCA3MywgNjUsIDE5LCA5LCAxLCAyMDEsIAorICAgIDczLCA0NywgMTksIDksIDEsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMSwgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAxLCA5MCwgNjUsIDE5LCA5LCAxLCA5MCwgNDcsIDE5LCA5LCAxLCA5MCwgODIsIDE5LCA5LCAxLCA5MCwgMTc5LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjIyLCAyMjQsIDg4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIAorICAgIDIyMiwgMjI0LCA4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIAorICAgIDIzNCwgMjA0LCAyNDgsIDIyOCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgMjQ4LCAKKyAgICAyMjgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCA0NywgCisgICAgMTksIDE5OSwgODIsIDIwMSwgMjUsIDIxOCwgMjQwLCAyMDgsIDI0NCwgMTU4LCAyMzgsIDQzLCA4MSwgMTU4LCAyMTQsIDYzLCAKKyAgICA4MSwgMTU4LCA0MSwgNTQsIDE1OCwgMjQwLCAxOTQsIDU0LCAxNTgsIDIxNiwgMjcsIDU0LCAxNTgsIDI1MSwgODksIDE1OCwgCisgICAgMjUxLCAxMywgMTU4LCA0OSwgMjE2LCAxMTUsIDE1OCwgNTEsIDIxNiwgMTE1LCAxNTgsIDI1MCwgMTY1LCAxNTgsIDkzLCAKKyAgICA1NCwgMTU4LCAyNDYsIDcwLCAxNTgsIDIzMywgMzIsIDE1OCwgMjM2LCAxODMsIDIwOCwgNzYsIDE1OCwgMjA5LCAxNiwgCisgICAgMTU4LCAxNywgMTk5LCA4MSwgMTU4LCAxNywgMTAyLCAxNTgsIDE3LCAxMDUsIDE1OCwgMTcsIDE0NywgMTU4LCAxNywgMTQ5LCAKKyAgICAxNTgsIDE3LCAxNjQsIDE1OCwgMTcsIDE4NywgMTU4LCAxNywgMjEwLCAxMzUsIDE1OCwgMTcsIDE5MiwgMTU4LCAxNywgCisgICAgMjE5LCAxMTMsIDE1OCwgMjQ2LCA3OSwgMTU4LCAyMTAsIDE2NywgMTU4LCAyMjQsIDI0MSwgNTQsIDE1OCwgMjM4LCAxMjIsIAorICAgIDU0LCAxNTgsIDIzNSwgNjcsIDU0LCAxNTgsIDIxNCwgNzksIDgxLCAxNTgsIDI0NiwgNjgsIDI1MCwgMTU1LCAxNTgsIDgsIAorICAgIDYsIDEsIDYyLCAxNTgsIDgsIDYsIDEsIDI1MCwgMTAzLCAxNTgsIDgsIDYsIDEsIDI0NywgMjIzLCAxNTgsIDgsIDYsIDEsIAorICAgIDI0MiwgMTUzLCAxNTgsIDgsIDYsIDEsIDcyLCAxNTgsIDgsIDYsIDEsIDIzOCwgNSwgMTU4LCA4LCA2LCAxLCAyMzYsIDE1NiwgCisgICAgMTU4LCA4LCA2LCAxLCAyMzQsIDI0NywgMTU4LCA4LCA2LCAxLCA3MCwgMTU4LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTU4LCA4LCAKKyAgICA2LCAxLCAyMjcsIDExOCwgMTU4LCA4LCA2LCAxLCAxNTYsIDE1OCwgOCwgNiwgMSwgMjIzLCAyNDMsIDE1OCwgOCwgNiwgMSwgCisgICAgMjIwLCAyMTQsIDE1OCwgOCwgNiwgMSwgNzQsIDE1OCwgOCwgNiwgMSwgMjE2LCAyMjYsIDE1OCwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDE1OCwgOCwgNiwgMSwgMTQ2LCAxNTgsIDgsIDYsIDEsIDIxMiwgMTIyLCAxNTgsIDgsIDYsIDEsIDIwNywgODMsIAorICAgIDE1OCwgOCwgNiwgMSwgNjYsIDE1OCwgOCwgNiwgMSwgMjAzLCAxNjgsIDE1OCwgOCwgNiwgMSwgMjAxLCAxNDcsIDE1OCwgOCwgCisgICAgNiwgMSwgMjAwLCAxOTUsIDE1OCwgOCwgNiwgMSwgMjAwLCAxMjMsIDE1OCwgOCwgNiwgMSwgMTk5LCAxNTcsIDE1OCwgNDksIAorICAgIDUyLCAxNTksIDE1OCwgMjEzLCAxMDYsIDIwOSwgMTYsIDE1OCwgNTEsIDUyLCAxNTksIDE1OCwgMjQ2LCAxNDcsIDI1MSwgCisgICAgMjUxLCAxNTgsIDEyOCwgMjI0LCAxNzYsIDE1OCwgMjM1LCA3NCwgMjUxLCAyNTEsIDE1OCwgOCwgNCwgMSwgNjIsIDE1OCwgCisgICAgOCwgNCwgMSwgMjUwLCAxMDMsIDE1OCwgOCwgNCwgMSwgMjQ3LCAyMjMsIDE1OCwgOCwgNCwgMSwgMjQyLCAxNTMsIDE1OCwgCisgICAgOCwgNCwgMSwgNzIsIDE1OCwgOCwgNCwgMSwgMjM4LCA1LCAxNTgsIDgsIDQsIDEsIDIzNiwgMTU2LCAxNTgsIDgsIDQsIDEsIAorICAgIDIzNCwgMjQ3LCAxNTgsIDgsIDQsIDEsIDcwLCAxNTgsIDgsIDQsIDEsIDIyNywgMjUxLCAxNTgsIDgsIDQsIDEsIDIyNywgCisgICAgMTE4LCAxNTgsIDgsIDQsIDEsIDE1NiwgMTU4LCA4LCA0LCAxLCAyMjMsIDI0MywgMTU4LCA4LCA0LCAxLCAyMjAsIDIxNCwgCisgICAgMTU4LCA4LCA0LCAxLCA3NCwgMTU4LCA4LCA0LCAxLCAyMTYsIDIyNiwgMTU4LCA4LCA0LCAxLCAyMTQsIDE2NywgMTU4LCA4LCAKKyAgICA0LCAxLCAxNDYsIDE1OCwgOCwgNCwgMSwgMjEyLCAxMjIsIDE1OCwgOCwgNCwgMSwgMjA3LCA4MywgMTU4LCA4LCA0LCAxLCAKKyAgICA2NiwgMTU4LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTU4LCA4LCA0LCAxLCAyMDEsIDE0NywgMTU4LCA4LCA0LCAxLCAyMDAsIAorICAgIDE5NSwgMTU4LCA4LCA0LCAxLCAyMDAsIDEyMywgMTU4LCA4LCA0LCAxLCAxOTksIDE1NywgMTU4LCA0OSwgMjQyLCAxOTYsIAorICAgIDE1OSwgMTU4LCA4MywgMjI0LCAxNzYsIDE1OCwgNTEsIDI0MiwgMTk2LCAxNTksIDE1OCwgMjA1LCAyNDAsIDE1OCwgNDksIAorICAgIDY0LCAyMTYsIDExNSwgMTU4LCA1MSwgNjQsIDIxNiwgMTE1LCAxMzAsIDE0MSwgMjM2LCAxODMsIDIwOCwgNzYsIDEzMCwgCisgICAgNDksIDI0MywgMTYsIDE1OSwgMTMwLCA1MSwgMjQzLCAxNiwgMTU5LCAxMzAsIDE0MSwgMjQ2LCA3MCwgMTMwLCA2OSwgMTAxLCAKKyAgICAyNDAsIDE4MiwgMTMwLCA2OSwgMSwgMjAxLCAwLCAxMzAsIDY5LCAxLCA0LCA2MiwgMTMwLCA2OSwgMSwgNCwgNzAsIDEzMCwgCisgICAgNjksIDEsIDQsIDY2LCAxMzAsIDY5LCAxLCA0LCA3MiwgMTMwLCA2OSwgMSwgNCwgNzQsIDEzMCwgNjksIDEsIDQsIDE4MywgCisgICAgMTMwLCA2OSwgMSwgNCwgMTk5LCAyMTEsIDEzMCwgNjksIDEsIDQsIDE5OSwgMjQ1LCAxMzAsIDY5LCAxLCA0LCAyMDQsIAorICAgIDIxNSwgMTMwLCAyMjcsIDMyLCAyMTQsIDI0OCwgMjA5LCAxLCA4MSwgMTMwLCA2OSwgMSwgNjIsIDEzMCwgNjksIDEsIDcwLCAKKyAgICAxMzAsIDY5LCAxLCA2NiwgMTMwLCA2OSwgMSwgNzIsIDEzMCwgNjksIDEsIDc0LCAxMzAsIDY5LCAxLCAxNjEsIDEzMCwgNjksIAorICAgIDEsIDIyNiwgMTYzLCAxMzAsIDY5LCAxLCAyMjYsIDE1LCAxMzAsIDY5LCAxLCAyMjcsIDgsIDEzMCwgNjksIDEsIDIyNiwgCisgICAgODgsIDEzMCwgNjksIDEsIDIxMiwgNjQsIDEzMCwgNjksIDEsIDIwOSwgMTgyLCAxMzAsIDY5LCAxLCAyMDgsIDI0LCAxMzAsIAorICAgIDY5LCAxLCAyMTEsIDIwMiwgMTMwLCA2OSwgMSwgMjA5LCAyOSwgMTMwLCA2OSwgMSwgMjA3LCAzNiwgMTMwLCA2OSwgMSwgCisgICAgMjA2LCAxNSwgMTMwLCA2OSwgMSwgMjA0LCAyMTUsIDEzMCwgNjksIDEsIDIwNiwgMjAxLCAxMzAsIDY5LCAxLCAxMzgsIAorICAgIDEzMCwgNjksIDEsIDE4OCwgMTMwLCA2OSwgMSwgMjE5LCAxNTAsIDEzMCwgNjksIDEsIDIxOCwgMTMzLCAxMzAsIDY5LCAxLCAKKyAgICAyMjAsIDM0LCAxMzAsIDY5LCAxLCAyMTgsIDI0MSwgMTMwLCA2OSwgMSwgMTQ0LCAxMzAsIDY5LCAxLCAyMzQsIDc1LCAxMzAsIAorICAgIDY5LCAxLCAyMzMsIDk3LCAxMzAsIDY5LCAxLCAyMzQsIDEzOSwgMTMwLCA2OSwgMSwgMjMzLCAyMDcsIDEzMCwgNjksIDEsIAorICAgIDE3OCwgMTMwLCA2OSwgMSwgMjIxLCAyMTEsIDEzMCwgNjksIDEsIDIyMSwgNDEsIDEzMCwgNjksIDEsIDIyMiwgNzYsIDEzMCwgCisgICAgNjksIDEsIDIyMSwgMTM2LCAxMzAsIDY5LCAxLCAxODMsIDEzMCwgNjksIDEsIDE5OSwgMjExLCAxMzAsIDY5LCAxLCAxOTksIAorICAgIDI0NSwgMTMwLCA2OSwgMSwgMjEzLCAyNTIsIDEzMCwgNjksIDEsIDIxMywgODgsIDEzMCwgNjksIDEsIDIxMiwgMTc1LCAKKyAgICAxMzAsIDY5LCAxLCAyMTMsIDE5MCwgMTMwLCA2OSwgMSwgMjEzLCAxLCAxMzAsIDY5LCAxLCAyMDEsIDExNCwgMTMwLCA2OSwgCisgICAgMSwgMjIwLCAyMTQsIDEzMCwgNjksIDIwMiwgMTg5LCAyMDksIDEsIDgxLCAxMzAsIDY5LCAyMTAsIDE3MiwgMjA5LCAxLCAKKyAgICA4MSwgMTMwLCAyOSwgMjM3LCA5MywgMTMwLCAyOSwgMSwgMjI2LCAxMjEsIDEzMCwgMjksIDEsIDIwOCwgMTcxLCAxMzAsIAorICAgIDI5LCAxLCAyMjYsIDExNCwgMTMwLCAyOSwgMSwgMjE5LCAxNDMsIDEzMCwgMjksIDEsIDIxOSwgMTQxLCAxMzAsIDI5LCAxLCAKKyAgICAyMTksIDE0MCwgMTMwLCAyOSwgMSwgMjA1LCAyNTMsIDEzMCwgMjksIDEsIDIwOCwgMTYwLCAxMzAsIDI5LCAxLCAyMTMsIAorICAgIDc4LCAxMzAsIDI5LCAxLCAyMTMsIDczLCAxMzAsIDI5LCAxLCAyMTMsIDcwLCAxMzAsIDI5LCAxLCAyMTMsIDYzLCAxMzAsIAorICAgIDI5LCAxLCAyMTMsIDU4LCAxMzAsIDI5LCAxLCAyMTMsIDUzLCAxMzAsIDI5LCAxLCAyMTMsIDY0LCAxMzAsIDI5LCAxLCAKKyAgICAyMTMsIDc2LCAxMzAsIDI5LCAxLCAyMjEsIDE5NywgMTMwLCAyOSwgMSwgMjE1LCAxOTAsIDEzMCwgMjksIDEsIDIwOCwgCisgICAgMTY4LCAxMzAsIDI5LCAxLCAyMTUsIDE3OSwgMTMwLCAyOSwgMSwgMjA5LCAxMjksIDEzMCwgMjksIDEsIDIwOCwgMTY1LCAKKyAgICAxMzAsIDI5LCAxLCAyMjgsIDE3NCwgMTMwLCAyOSwgMSwgMjQ2LCAxNjgsIDEzMCwgMjksIDEsIDIwOCwgMTc1LCAxMzAsIAorICAgIDI5LCAxLCAyNDYsIDIzMiwgMTMwLCAyOSwgMSwgMjI2LCAxODMsIDEzMCwgMjksIDEsIDIwNiwgODAsIDEzMCwgMjksIDEsIAorICAgIDIxNSwgMjI3LCAxMzAsIDI5LCAxLCAyMzQsIDY2LCAxMzAsIDI5LCAxLCA2MiwgMTMwLCAyOSwgMSwgMjUxLCAyMjEsIDEzMCwgCisgICAgMjksIDEsIDE4MywgMTMwLCAyOSwgMSwgMjAwLCA5OCwgMTMwLCAyOSwgMSwgMjM4LCAxNDIsIDEzMCwgMjksIDEsIDcyLCAKKyAgICAxMzAsIDI5LCAxLCAyMDAsIDM4LCAxMzAsIDI5LCAxLCAyMDAsIDUxLCAxMzAsIDI5LCAxLCA3NCwgMTMwLCAyOSwgMSwgCisgICAgMjAxLCAxMTQsIDEzMCwgMjksIDEsIDIwMSwgMTEwLCAxMzAsIDI5LCAxLCAyMTcsIDEyMSwgMTMwLCAyOSwgMSwgMTk5LCAKKyAgICAyNDUsIDEzMCwgMjksIDEsIDY2LCAxMzAsIDI5LCAxLCAyMDEsIDUwLCAxMzAsIDI5LCAxLCAyMDEsIDY0LCAxMzAsIDI5LCAKKyAgICAxLCAyMDEsIDMxLCAxMzAsIDI5LCAxLCAxOTksIDIxMSwgMTMwLCAyOSwgMSwgMjM4LCA2OSwgMTMwLCAyOSwgMSwgMjAwLCAKKyAgICA5LCAxMzAsIDI5LCAxLCA3MCwgMTU4LCAyNDcsIDU4LCA1NCwgMTU4LCAyMTUsIDU2LCA1NCwgMTU4LCAyMTgsIDIxNSwgNTQsIAorICAgIDE1OCwgMjIyLCAyMjgsIDE1OCwgMjQ4LCA0NiwgMTQ4LCAxNTgsIDIwMCwgNDIsIDU0LCAxNTgsIDIwMCwgMjQ2LCA1NCwgCisgICAgMTMwLCAyMzYsIDIzOSwgMTYyLCAyMDMsIDQyLCAxMzAsIDk4LCA0OCwgMTMwLCAxODIsIDQ4LCAxMzAsIDg3LCA0OCwgMTMwLCAKKyAgICAxOTEsIDQ4LCAxMzAsIDYzLCAyMDgsIDE5MywgMTMwLCA2NCwgMjQ2LCAxNTUsIDIyOCwgNjIsIDI1MSwgNTgsIDI1MSwgODEsIAorICAgIDIyOCwgNjIsIDI1MSwgNTgsIDIxMCwgMTU0LCAyMjgsIDYyLCAyNTEsIDU4LCAyMDYsIDE1MiwgMjE3LCAxMzksIDIxMywgCisgICAgMTI4LCAyNDcsIDIwLCAyMTMsIDEyOCwgMjQ3LCAyMCwgMzAsIDY4LCA1LCAyNTAsIDg3LCA2MiwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDU2LCA3MiwgMzAsIDY4LCA1LCAyNTAsIDY1LCA3MCwgMzAsIDY4LCA1LCAyNTAsIDMzLCA3NCwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDgzLCA2NiwgMzAsIDY4LCA1LCAyNTAsIDEwMiwgMjQyLCA1OCwgMzAsIDY4LCA1LCAyNTAsIDQ5LCAyNDEsIDE3NSwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDg5LCAyNDEsIDc2LCAzMCwgNjgsIDUsIDI1MCwgNzksIDI0MCwgMjExLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNDMsIDIzOSwgMTM3LCAzMCwgNjgsIDUsIDI1MCwgMzcsIDIyNywgMjQ4LCAzMCwgNjgsIDUsIDI1MCwgNDgsIDIyNywgMjI3LCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgNTgsIDIyNywgMTY2LCAzMCwgNjgsIDUsIDI1MCwgMjksIDIyNywgMTQ3LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgMTcsIDE2MSwgMzAsIDY4LCA1LCAyNTAsIDUwLCAyMjcsIDgsIDMwLCA2OCwgNSwgMjUwLCAyNywgMjI2LCAxNjMsIAorICAgIDMwLCA2OCwgNSwgMjUwLCAyNCwgMjI2LCA4OCwgMzAsIDY4LCA1LCAyNTAsIDEzLCAyMjYsIDE1LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgMTQsIDE3OCwgMzAsIDY4LCA1LCAyNTAsIDgwLCAyMjIsIDc2LCAzMCwgNjgsIDUsIDI1MCwgMjEsIDIyMSwgMjExLCAzMCwgCisgICAgNjgsIDUsIDI1MCwgNzgsIDIyMSwgMTM2LCAzMCwgNjgsIDUsIDI1MCwgNzAsIDIyMSwgNDEsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA5MSwgMTg4LCAzMCwgNjgsIDUsIDI1MCwgNjksIDIyMCwgMzQsIDMwLCA2OCwgNSwgMjUwLCA2MywgMjE5LCAxNTAsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA0MiwgMjE4LCAyNDEsIDMwLCA2OCwgNSwgMjUwLCAzOSwgMjE4LCAxMzMsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA5OCwgMTcyLCAzMCwgNjgsIDUsIDI1MCwgMjIsIDIxNiwgNzMsIDMwLCA2OCwgNSwgMjUwLCA1NSwgMjE1LCAyMDQsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA4MiwgMjE1LCAxMDYsIDMwLCA2OCwgNSwgMjUwLCA0NCwgMjE0LCAyMjQsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA3NywgMjE0LCAxNTksIDMwLCA2OCwgNSwgMjUwLCAxNiwgMjE0LCAxMzksIDMwLCA2OCwgNSwgMjUwLCA3MiwgMjE0LCAxMjEsIAorICAgIDMwLCA2OCwgNSwgMjUwLCA2MSwgMjE0LCAxMDksIDMwLCA2OCwgNSwgMjUwLCAzNCwgMjEzLCAyNTIsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA2NiwgMjEzLCAxOTAsIDMwLCA2OCwgNSwgMjUwLCA0MSwgMjEzLCA4OCwgMzAsIDY4LCA1LCAyNTAsIDEwMCwgMjEzLCAKKyAgICAxLCAzMCwgNjgsIDUsIDI1MCwgNjcsIDIxMiwgMTc1LCAzMCwgNjgsIDUsIDI1MCwgNjIsIDIxMiwgNjQsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA4NSwgMjExLCAyMDIsIDMwLCA2OCwgNSwgMjUwLCA1MywgMjA5LCAxODIsIDMwLCA2OCwgNSwgMjUwLCA4MSwgMjA5LCAKKyAgICAyOSwgMzAsIDY4LCA1LCAyNTAsIDM2LCAyMDgsIDI0LCAzMCwgNjgsIDUsIDI1MCwgMzUsIDIwNywgMzYsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA5NiwgMjA2LCAyMDEsIDMwLCA2OCwgNSwgMjUwLCA1NywgMjA2LCAxNSwgMzAsIDY4LCA1LCAyNTAsIDk0LCAxMzgsIAorICAgIDMwLCA2OCwgNSwgMjUwLCAyNSwgMjA0LCAyMTUsIDMwLCA2OCwgNSwgMjUwLCA0MCwgMjAxLCAxMTQsIDMwLCA2OCwgNSwgCisgICAgMjUwLCAxOSwgMjAxLCA2NCwgMzAsIDY4LCA1LCAyNTAsIDU0LCAyMDEsIDMxLCAzMCwgNjgsIDUsIDI1MCwgNTIsIDIwMSwgCisgICAgMCwgMzAsIDY4LCA1LCAyNTAsIDc2LCAxOTksIDExNCwgMzAsIDY4LCA1LCAyNTAsIDIwLCAxOTksIDg5LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgNzMsIDE5OSwgMTQsIDMwLCA2OCwgNSwgMjUwLCA2OCwgMjU0LCAxNDcsIDMwLCA2OCwgNSwgMjUwLCA1MSwgMjU0LCAKKyAgICAzNSwgMzAsIDY4LCA1LCAyNTAsIDEwLCAyNTAsIDEzOSwgMzAsIDY4LCA1LCAyNTAsIDIzLCAyMzksIDEwMywgMzAsIDY4LCAKKyAgICA1LCAyNTAsIDYsIDIzOSwgMTAyLCAzMCwgNjgsIDUsIDI1MCwgNDYsIDIxOCwgNjksIDMwLCA2OCwgNSwgMjUwLCA2NCwgCisgICAgMjE0LCAyMjIsIDMwLCA2OCwgNSwgMjUwLCAzMiwgMjE0LCAyMjYsIDMwLCA2OCwgNSwgMjUwLCAxOCwgMjEzLCAyNTAsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA2MCwgMjEzLCAyNDksIDMwLCA2OCwgNSwgMjUwLCAyNiwgMjEzLCAwLCAzMCwgNjgsIDUsIDI1MCwgMjgsIAorICAgIDIwNywgMzMsIDMwLCA2OCwgNSwgMjUwLCA4LCAyMDQsIDE2OCwgMzAsIDY4LCA1LCAyNTAsIDUsIDEwNSwgMzAsIDY4LCAxNiwgCisgICAgMjUwLCA3NSwgMzAsIDY4LCAxNiwgMjUwLCA3NCwgMzAsIDY4LCAxNiwgMjUwLCA3MSwgMzAsIDY4LCAxNiwgMjUwLCA1OSwgCisgICAgMzAsIDY4LCAxNiwgMjUwLCA0NywgMzAsIDY4LCAxNiwgMjUwLCA0NSwgMzAsIDY4LCAxNiwgMjUwLCAzOCwgMzAsIDY4LCAKKyAgICAxNiwgMjUwLCAzMSwgMzAsIDY4LCAxNiwgMjUwLCAzMCwgMzAsIDY4LCAxNiwgMjUwLCAxNSwgMzAsIDY4LCAxNiwgMjUwLCAKKyAgICAxMiwgMzAsIDY4LCAxNiwgMjUwLCAxMSwgMzAsIDY4LCAxNiwgMjUwLCA5LCAzMCwgNjgsIDE2LCAyNTAsIDcsIDMwLCA2OCwgCisgICAgMTM2LCAyNTAsIDQsIDIyMiwgMTgwLCAzMCwgNjgsIDEzNiwgMjUwLCAzLCAyMDAsIDI1MCwgMzAsIDY4LCAxMzYsIDI1MCwgCisgICAgMiwgMjQxLCAxNTgsIDMwLCA2OCwgMTM2LCAyNTAsIDEsIDIzOCwgMTE5LCAzMCwgNjgsIDEzNiwgMjUwLCAwLCAyMjIsIAorICAgIDE1MCwgMzAsIDY4LCAxMzYsIDI0OSwgMjU1LCAyMDgsIDExNiwgMzAsIDY4LCAxMzYsIDI0OSwgMjU0LCAyMzgsIDUwLCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyNTMsIDIxMywgMjE2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTIsIDIxMCwgNjQsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDI1MSwgMjM0LCAxMzgsIDMwLCA2OCwgMTM2LCAyNDksIDI1MCwgMjA4LCAyNTEsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDI0OSwgMjQ4LCAxMjIsIDMwLCA2OCwgMTM2LCAyNDksIDI0OCwgMjQyLCAyNTUsIDMwLCA2OCwgMTM2LCAyNDksIDI0NywgCisgICAgMjQ4LCAyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ2LCAyMDEsIDM5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDUsIDI0OSwgNzMsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDI0NCwgMjE3LCA4OCwgMzAsIDY4LCAxMzYsIDI0OSwgMjQzLCAyMDgsIDIyMywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjQyLCAyNDIsIDE2MSwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDI0MSwgMjI3LCA1NiwgMzAsIDY4LCAyMjEsIAorICAgIDk3LCAyNDksIDI0MCwgMjI3LCA2NiwgMzAsIDY4LCAxMzYsIDI0OSwgMjM5LCAyMTcsIDEwMywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjM4LCAyMDEsIDEyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzcsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMzYsIDI1MCwgMjI3LCAKKyAgICAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjM1LCAyMjIsIDMyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzQsIDI0OCwgNDUsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIzMywgMjM1LCAxMDgsIDMwLCA2OCwgMTM2LCAyNDksIDIzMiwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjMxLCAyMDAsIDI0MSwgMzAsIDY4LCAxMzYsIDI0OSwgMjMwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjksIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDIyOCwgMjMzLCAxMjQsIDMwLCA2OCwgMTM2LCAyNDksIDIyNywgMzAsIDY4LCAxMzYsIDI0OSwgMjI2LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMjUsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMjMsIDIwNCwgMTgzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMjIsIDMwLCA2OCwgMTM2LCAyNDksIDIyMSwgMzAsIDY4LCAxMzYsIDI0OSwgMjIwLCAyNDYsIDEwNCwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjE5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTgsIDMwLCA2OCwgMTM2LCAyNDksIDIxNywgMjM2LCA0NiwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjE2LCAyNTAsIDIxNCwgMzAsIDY4LCAxMzYsIDI0OSwgMjE1LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTQsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDIxMywgMzAsIDY4LCAxMzYsIDI0OSwgMjEyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTEsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIxMCwgMzAsIDY4LCAxMzYsIDI0OSwgMjA5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDgsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIwNywgMzAsIDY4LCAxMzYsIDI0OSwgMjA2LCAyMjEsIDg5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDUsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIwNCwgMjA1LCAxMDgsIDMwLCA2OCwgMTM2LCAyNDksIDIwMywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjAyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDEsIDMwLCA2OCwgMTM2LCAyNDksIDIwMCwgMzAsIDY4LCAxMzYsIDI0OSwgMTk5LCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxOTgsIDMwLCA2OCwgMTM2LCAyNDksIDE5NywgMzAsIDY4LCAxMzYsIDI0OSwgMTk2LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAxOTUsIDMwLCA2OCwgMTM2LCAyNDksIDE5NCwgMzAsIDY4LCAxMzYsIDI0OSwgMTkzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxOTIsIDIzNCwgMTA3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNzEsIDIzNiwgMjUxLCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAxNjgsIDI0OSwgNTAsIDMwLCA2OCwgMTM2LCAyNDksIDE2MywgMjA4LCAyMzAsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDE2MiwgNDgsIDMwLCA2OCwgMTM2LCAyNDksIDE2MSwgMzAsIDY4LCAxMzYsIDI0OSwgMTYwLCAyMDcsIDE2OSwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTU5LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTgsIDMwLCA2OCwgMTM2LCAyNDksIDE1NywgMjAxLCAzNSwgCisgICAgMjQ3LCAxNywgMzAsIDY4LCAxMzYsIDI0OSwgMTU2LCAyNDcsIDE3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTUsIDI0NywgMTgsIAorICAgIDIzNiwgMjE1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTQsIDIwMSwgMzcsIDMwLCA2OCwgMTM2LCAyNDksIDE1MywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTUyLCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMTUxLCAyNDEsIDExLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTAsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDE0OSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQ3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDYsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDE0NSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQ0LCAyNDEsIDI0NywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMTQzLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDIsIDMwLCA2OCwgMTM2LCAyNDksIDE0MSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQwLCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxMzksIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAyMjQsIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxOTEsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxOTAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgCisgICAgMjQ5LCAxODksIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAKKyAgICAxODcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODYsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODUsIAorICAgIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODQsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODMsIDMwLCA2OCwgCisgICAgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODIsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODEsIDMwLCA2OCwgMTM2LCAKKyAgICAyMDIsIDI0NSwgMjQ5LCAxODAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzksIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxNzgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgCisgICAgMjQ5LCAxNzYsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzUsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAKKyAgICAxNzQsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzMsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzIsIAorICAgIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjksIDMwLCA2OCwgCisgICAgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjYsIDMwLCA2OCwgMTM2LCAKKyAgICAyMDIsIDI0NSwgMjQ5LCAxNjUsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjQsIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxNDgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxMzgsIDI1MSwgMjE0LCAyMDAsIDIzOCwgMjEwLCAKKyAgICAxNTUsIDIyNCwgMTc2LCAyNTEsIDIxNCwgMjAwLCAyMzgsIDIxMCwgMTU1LCAyNDAsIDE4MiwgMjUxLCAyMTQsIDI0NywgNywgCisgICAgODEsIDI1MSwgMjE0LCA0MSwgMTAyLCAyNTEsIDIxNCwgNDEsIDEwNSwgMjUxLCAyMTQsIDQxLCAxNDcsIDI1MSwgMjE0LCAKKyAgICA0MSwgMTQ5LCAyNTEsIDIxNCwgNDEsIDE2NCwgMjUxLCAyMTQsIDQxLCAxODcsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzUsIAorICAgIDI1MSwgMjE0LCA0MSwgMTkyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTEzLCAyNTEsIDIxNCwgNDEsIDIwNiwgMTY2LCAyNTEsIAorICAgIDIxNCwgNDEsIDIwNCwgMTU5LCAyNTEsIDIxNCwgNDEsIDIwNiwgNjcsIDI1MSwgMjE0LCA0MSwgMjM2LCAyMzUsIDI1MSwgCisgICAgMjE0LCA0MSwgMjM3LCAxMDQsIDI1MSwgMjE0LCA0MSwgMjA5LCA5MiwgMjUxLCAyMTQsIDQxLCAyMTAsIDEyOSwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzgsIDIyMiwgMjUxLCAyMTQsIDQxLCAyMTksIDEwOCwgMjUxLCAyMTQsIDQxLCAxMTIsIDIzMywgODIsIAorICAgIDI1MSwgMjE0LCA0MSwgMTIwLCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDEyNiwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAKKyAgICAyMzYsIDIyOSwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIwOSwgCisgICAgMTA2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDExMiwgMjA2LCA1MCwgCisgICAgMjUxLCAyMTQsIDQxLCAxMjAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMTI2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIAorICAgIDIzNiwgMjI5LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzNywgNjEsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA5LCAKKyAgICAxMDYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM4LCAyMzIsIAorICAgIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTQsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA2LCAxNjcsIDIwNiwgCisgICAgNTAsIDI1MSwgMjE0LCA0MSwgMjA0LCAxNjAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA2LCA2OCwgMjA2LCA1MCwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzYsIDIzNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgMjUxLCAyMTQsIAorICAgIDQxLCAyMDksIDkzLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTMwLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzOCwgCisgICAgMjIzLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTA5LCAyMDYsIDUwLCAyNTEsIDIxNCwgMjAxLCA1MywgMjQ5LCAKKyAgICA2NSwgMjAzLCAyMzksIDI1MSwgMjE0LCAyMDEsIDUzLCAyMzcsIDczLCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgNTMsIAorICAgIDIxMSwgMTk2LCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgNTMsIDIwNiwgNzUsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCAKKyAgICA1MywgMjM2LCAyMjIsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjM5LCAxNDAsIDIyMiwgNzUsIDIzNywgNzMsIDIwNywgMjU0LCAKKyAgICAyNTEsIDIxNCwgMjI0LCAxNTcsIDIyMiwgNzUsIDIzNywgNzMsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjIyLCA3NSwgMjExLCAKKyAgICAxOTYsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjIyLCA3NSwgMjA2LCA3NSwgMjA3LCAyNTQsIDMxLCAyNTEsIDI0MiwgMjUwLCAKKyAgICAxNDEsIDExMiwgMjE0LCA4NywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMzQsIDIxMywgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMzksIDE2MiwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTY0LCAzMSwgMjUxLCAyNDIsIDI1MCwgCisgICAgMTQxLCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgNTAsIAorICAgIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIAorICAgIDE2NywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMzMsIDgzLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCAKKyAgICA4MywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjA2LCA1MSwgMjA2LCAyNTEsIDMxLCAyNTEsIAorICAgIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgNTEsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIAorICAgIDYxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjMzLCA4MywgMjA4LCAKKyAgICAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIzMywgODMsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIwNiwgNTEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjA2LCAKKyAgICA1MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDUxLCAyMDgsIDEwMywgMzEsIAorICAgIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIyMSwgMTM5LCAzMSwgMjUxLCAyNDIsIDIzNCwgMTAxLCAxMTIsIDIxNSwgCisgICAgMTIzLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDEwMiwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAxMDIsIDMxLCAyNTEsIAorICAgIDI0MiwgMjM4LCAxMjgsIDEwNSwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMDUsIDMxLCAyNTEsIDI0MiwgMjQyLCAxNTgsIAorICAgIDEyMCwgMjM5LCAxNjEsIDMxLCAyNTEsIDI0MiwgMjM4LCAxMjgsIDEyMCwgMjM5LCAxNjEsIDMxLCAyNTEsIDI0MiwgMjA1LCAKKyAgICA3NCwgMTY0LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIwNiwgCisgICAgMTY3LCAyNTEsIDEwOSwgMTksIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjIyLCAKKyAgICAyMiwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgCisgICAgMjA2LCA2NywgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMzcsIAorICAgIDEwNSwgMjUxLCAxMDksIDE5LCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNiwgCisgICAgOTAsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDExMiwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAKKyAgICAxMjYsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjM4LCAxMjgsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgCisgICAgMjA1LCA3NCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgCisgICAgMjUxLCAyNDIsIDI0NywgMTE1LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIyMCwgMTEwLCAyMzcsIDYxLCAKKyAgICAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDExMiwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMzcsIAorICAgIDYxLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDI0MSwgMTM5LCAyMzcsIDYxLCAyMjEsIDEzOSwgMzEsIDI1MSwgMjQyLCAKKyAgICAyMDgsIDY0LCAyMzcsIDEwNSwgMjIxLCAxMzksIDMxLCAxMTIsIDE2NywgNTQsIDMxLCAxMTIsIDE2NywgMiwgMjUxLCAxMDksIAorICAgIDE5LCAzMSwgMTIwLCAyMDYsIDcyLCA1NCwgMzEsIDEyNiwgMjE0LCA4NiwgNTQsIDMxLCAyMDAsIDQ5LCA1NCwgMzEsIDIwNiwgCisgICAgMjUyLCA1NCwgMzEsIDIzOSwgMTYzLCA1NCwgMzEsIDIxNywgMTM2LCA1NCwgMzEsIDEyMCwgMjE3LCAxMzUsIDU0LCAzMSwgCisgICAgMTI2LCAyMTcsIDEzNSwgNTQsIDMxLCAyMzYsIDIyOSwgMjE3LCAxMzUsIDU0LCAzMSwgMjM3LCA2MSwgMjE3LCAxMzUsIDU0LCAKKyAgICAzMSwgMjIyLCAxNiwgNTQsIDMxLCAyMjUsIDIwMSwgMjQ5LCA2NSwgNTQsIDMxLCAyMjQsIDE1MCwgNTQsIDMxLCAyMTcsIDAsIAorICAgIDU0LCAzMSwgMjAwLCAxNzIsIDU0LCAzMSwgMjUwLCAxOTUsIDU0LCAzMSwgMjUwLCAyMTAsIDU0LCAzMSwgMjM1LCA4MywgCisgICAgNTQsIDMxLCAyMDUsIDM1LCAyNDksIDY1LCA1NCwgMzEsIDE5OSwgODIsIDU0LCAzMSwgMTEyLCAyMTQsIDg4LCA1NCwgMzEsIAorICAgIDIwOSwgMTMxLCA1NCwgMzEsIDIyOCwgOTgsIDU0LCAyMTgsIDIzNSwgNTQsIDIxMiwgMjQwLCAyMTAsIDEyNiwgNTQsIDIxMiwgCisgICAgMjQwLCAyMDMsIDI1NCwgNTQsIDIxMiwgMjQwLCAyMTAsIDE1OSwgNTQsIDIxMiwgMjQwLCAyMTAsIDEyNCwgNTQsIDIxMiwgCisgICAgMjQwLCAyNDEsIDI2LCAyMTAsIDEyNCwgNTQsIDIxMiwgMjQwLCAyMDksIDE1NCwgNTQsIDIxMiwgMjQwLCAyNDEsIDEzNSwgCisgICAgNTQsIDIxMiwgMjQwLCAyMTQsIDcxLCA1NCwgMjEyLCAyNDAsIDIxMCwgMTQzLCA1NCwgMjEyLCAyNDAsIDIzOSwgMTE3LCAKKyAgICA1NCwgMjEyLCAyNDAsIDI1MCwgMTg5LCA1NCwgMjEyLCAyNDAsIDI0NywgNTEsIDU0LCAzMSwgMTYsIDIwNiwgMjIyLCAyMTMsIAorICAgIDkwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDYzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTUsIDExNSwgMjM0LCAKKyAgICAxMzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwNiwgMjI1LCAyMzQsIDEzNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ3LCAKKyAgICAxMzgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NiwgMjI3LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDAsIDI1MCwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjM0LCAxMDcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNiwgMzgsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDIwNiwgMTMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDQ4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDg1LCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyMTAsIDMwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDYsIDk3LCAyMTUsIDI0MCwgMjQxLCAzLCAKKyAgICAyLCAyMjIsIDE3OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjIyLCAxMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMSwgCisgICAgMjM5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMjQsIDIwNSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAxMDYsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDI0NywgMTIyLCAyMTUsIDEyOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQwLCAxOTUsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDI0NiwgNzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwOSwgNjMsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDI0NiwgNzcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMjQ5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTAsIDE3LCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzMsIDEyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM0LCA3MiwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjQ4LCAxNywgMjI1LCAxNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ3LCAxMTEsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIxMywgMjE2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzksIDI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAKKyAgICAyMzksIDE2OCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA0LCAxOTksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMjUyLCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTUsIDEyOSwgMjA1LCAxMDgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMiwgMjE1LCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDEzMSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjEyLCAyMzEsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIyNCwgMTg5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDIzNiwgMjQ5LCAxMjksIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIzNywgMjAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNSwgNzUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIAorICAgIDIwOCwgNjUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDQsIDI1MCwgMTEzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDEsIDc0LCAKKyAgICAyNDksIDg0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAzOCwgMjE3LCAxMzgsIDk3LCAyMjQsIDAsIDEsIDYyLCAyMjQsIDAsIDEsIAorICAgIDcyLCAyMjQsIDAsIDEsIDI1MCwgMTAzLCAyMjQsIDAsIDEsIDI0OCwgMjAxLCAyMjQsIDAsIDEsIDIzNiwgMTU2LCAyMjQsIAorICAgIDAsIDEsIDI0MiwgMTUzLCAyMjQsIDAsIDEsIDcwLCAyMjQsIDAsIDEsIDIwMSwgMTQ3LCAyMjQsIDAsIDEsIDE5OSwgMTU3LCAKKyAgICAyMjQsIDAsIDEsIDIwNiwgMTI0LCAyMjQsIDAsIDEsIDIyNywgMjUxLCAyMjQsIDAsIDEsIDIyNywgMTE4LCAyMjQsIDAsIDEsIAorICAgIDIxNCwgMTY3LCAyMjQsIDAsIDEsIDE1NiwgMjI0LCAwLCAxLCAyMjMsIDI0MywgMjI0LCAwLCAxLCAyMjAsIDIxNCwgMjI0LCAKKyAgICAwLCAxLCAyMjEsIDE0MSwgMjI0LCAwLCAxLCAyMTksIDIyLCAyMjQsIDAsIDEsIDY2LCAyMjQsIDAsIDEsIDIxNiwgMjI2LCAKKyAgICAyMjQsIDAsIDEsIDIyNiwgMTEwLCAyMjQsIDAsIDEsIDE0NiwgMjI0LCAwLCAxLCAyMTIsIDEyMiwgMjI0LCAwLCAxLCAyMDcsIAorICAgIDgzLCAyMjQsIDAsIDEsIDIwNSwgMCwgMjI0LCAwLCAxLCAyNTEsIDg1LCAyMjQsIDAsIDEsIDIzOCwgMTc5LCAyMjQsIDAsIAorICAgIDEsIDIzNCwgMjQ3LCAyMjQsIDAsIDEsIDIwMCwgMTk1LCAyNDcsIDEyOCwgMSwgNjIsIDI0NywgMTI4LCAxLCAyMTYsIDIxMiwgCisgICAgMjQ3LCAxMjgsIDEsIDI0MiwgMTUzLCAyNDcsIDEyOCwgMSwgMTU2LCAyNDcsIDEyOCwgMSwgMjAzLCAxODAsIDI0NywgMTI4LCAKKyAgICAxLCAxNDYsIDI0NywgMTI4LCAxLCAyMjUsIDQ0LCAyNDcsIDEyOCwgMSwgMjU0LCAxNDcsIDI0NywgMTI4LCAxLCAyMTQsIAorICAgIDE2NywgMjQ3LCAxMjgsIDEsIDI1MCwgMTAzLCAyNDcsIDEyOCwgMSwgMjIzLCAyNDMsIDI0NywgMTI4LCAxLCA3NCwgMjQ3LCAKKyAgICAxMjgsIDEsIDI0MiwgNjAsIDI0NywgMTI4LCAxLCAyMDcsIDgzLCAyNDcsIDEyOCwgMSwgMjEwLCAxMTYsIDI0NywgMTI4LCAKKyAgICAxLCAyMTAsIDExNSwgMjQ3LCAxMjgsIDEsIDIxMiwgMTIyLCAyNDcsIDEyOCwgMSwgMjQ3LCAyMjIsIDI0NywgMTI4LCAxLCAKKyAgICA2NiwgMjQ3LCAxMjgsIDEsIDIxOSwgMjIsIDI0NywgMTI4LCAxLCAyMDAsIDE5NSwgMjQ3LCAxMjgsIDEsIDIyMCwgMjE0LCAKKyAgICAyNDcsIDEyOCwgMSwgMjA0LCAyNTUsIDI0NywgMTI4LCAxLCAyMTYsIDIyNiwgMjQ3LCAxMjgsIDEsIDIwOCwgMTgyLCAyNDcsIAorICAgIDEyOCwgMSwgNzAsIDI0NywgMTI4LCAxLCA3MiwgMjQ3LCAxMjgsIDEsIDIwMywgMTc3LCAyNDcsIDEyOCwgMSwgMjI3LCAKKyAgICAxMTgsIDI0NywgMTI4LCAxLCAyMjcsIDEwOSwgMjQ3LCAxMjgsIDEsIDIyMCwgNzcsIDI0NywgMTI4LCAxLCAyMDMsIDE4MiwgCisgICAgMjQ3LCAxMjgsIDEsIDIzNiwgMTU2LCAyNDcsIDEyOCwgMSwgMjM2LCA5MSwgMjQ3LCAxMjgsIDEsIDIwOCwgMTIzLCAyNDcsIAorICAgIDEyOCwgMSwgMjA4LCAxMjIsIDI0NywgMTI4LCAxLCAyMTksIDI1NSwgMjQ3LCAxMjgsIDEsIDIyOCwgMTUxLCAyNDcsIDEyOCwgCisgICAgMSwgMjQ3LCAyMjEsIDI0NywgMTI4LCAxLCAyMDUsIDAsIDI0NywgMTI4LCAxLCAyMDMsIDE3OSwgMjQ3LCAxMjgsIDEsIAorICAgIDIxMiwgMjE2LCAyNDcsIDEyOCwgMSwgMjIyLCAxMTUsIDI0NywgMTI4LCAxLCAyMjIsIDExNCwgMjQ3LCAxMjgsIDEsIDIyMiwgCisgICAgMTEzLCAyNDcsIDEyOCwgMSwgMjIyLCAxMTIsIDI0NywgMTI4LCAxLCAyMjUsIDQzLCAyNDcsIDEyOCwgMSwgMjM5LCAyOCwgCisgICAgMjQ3LCAxMjgsIDEsIDIwMywgMTc4LCA4NSwgMjM4LCAxMzEsIDIwNiwgNDksIDgxLCA4NSwgMjM4LCAxMzEsIDE3LCAxMDIsIAorICAgIDg1LCAyMzgsIDEzMSwgMTcsIDEwNSwgODUsIDIzOCwgMTMxLCAxNywgMTQ3LCA4NSwgMjM4LCAxMzEsIDE3LCAxNDksIDg1LCAKKyAgICAyMzgsIDEzMSwgMTcsIDE2NCwgODUsIDIzOCwgMTMxLCAxNywgMTg3LCA4NSwgMjM4LCAxMzEsIDE3LCAyMTAsIDEzNSwgODUsIAorICAgIDIzOCwgMTMxLCAxNywgMTkyLCA4NSwgMjM4LCAxMzEsIDE3LCAyMTksIDExMywgODUsIDIzOCwgMTMxLCA0MSwgMjA2LCAKKyAgICAxNjYsIDg1LCAyMzgsIDEzMSwgNDEsIDIwNCwgMTU5LCA4NSwgMjM4LCAxMzEsIDQxLCAyMDYsIDY3LCA4NSwgMjM4LCAxMzEsIAorICAgIDQxLCAyMzYsIDIzNSwgODUsIDIzOCwgMTMxLCA0MSwgMjM3LCAxMDQsIDg1LCAyMzgsIDEzMSwgNDEsIDIwOSwgOTIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxMCwgMTI5LCA4NSwgMjM4LCAxMzEsIDQxLCAyMzgsIDIyMiwgODUsIDIzOCwgMTMxLCA0MSwgCisgICAgMjE5LCAxMDgsIDg1LCAyMzgsIDEzMSwgNDEsIDExMiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMTIwLCAyMzMsIDgyLCAKKyAgICA4NSwgMjM4LCAxMzEsIDQxLCAxMjYsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAyMDksIDEwNiwgMjMzLCA4MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgNDAsIDM5LCAxLCA2MiwgNDAsIDM5LCAxLCAyNDksIDgsIDQwLCAKKyAgICAzOSwgMSwgMjI3LCA4LCA0MCwgMzksIDEsIDI0MSwgMTc1LCA0MCwgMzksIDEsIDcyLCA0MCwgMzksIDEsIDIwMywgNTksIAorICAgIDQwLCAzOSwgMSwgMTk5LCA4OSwgNDAsIDM5LCAxLCAyMzQsIDEzOSwgNDAsIDM5LCAxLCAyMDYsIDEwNiwgNDAsIDM5LCAxLCAKKyAgICA3MCwgNDAsIDM5LCAxLCAxNjEsIDQwLCAzOSwgMSwgMjM4LCAyMDksIDQwLCAzOSwgMSwgMjM4LCAxOTAsIDQwLCAzOSwgMSwgCisgICAgMjM4LCAxNzksIDQwLCAzOSwgMSwgMjM4LCA5NCwgNDAsIDM5LCAxLCA3NCwgNDAsIDM5LCAxLCAyMTYsIDczLCA0MCwgMzksIAorICAgIDEsIDIxMCwgNjUsIDQwLCAzOSwgMSwgMjI2LCAxNSwgNDAsIDM5LCAxLCAyMzgsIDExNSwgNDAsIDM5LCAxLCAyMzgsIDEwNCwgCisgICAgNDAsIDM5LCAxLCAyMDYsIDIwMSwgNDAsIDM5LCAxLCA2NiwgNDAsIDM5LCAxLCAyMzgsIDIxMiwgNDAsIDM5LCAxLCAyMTUsIAorICAgIDIzMiwgNDAsIDM5LCAxLCAyMjYsIDE5MiwgNDAsIDM5LCAxLCAyMzgsIDI0OCwgNDAsIDM5LCAxLCAyMzgsIDEwNiwgNDAsIAorICAgIDM5LCAxLCAyNDcsIDgsIDQwLCAzOSwgMSwgMjI4LCAxNTEsIDQwLCAzOSwgMSwgMjAzLCAxODIsIDQwLCAzOSwgMSwgMjM4LCAKKyAgICA4NywgNDAsIDM5LCAyMTgsIDkzLCAxMDIsIDQwLCAzOSwgMjE4LCA5MywgMTY0LCA0MCwgMzksIDIxOCwgOTMsIDIwNiwgCisgICAgMTY2LCA0MCwgMzksIDIxOCwgOTMsIDIzNywgMTA0LCAyMzUsIDkzLCAxLCAyNTEsIDE3OSwgMjM1LCA5MywgMSwgMjQ5LCAKKyAgICAxMDEsIDIzNSwgOTMsIDEsIDIzNSwgMTU4LCAyMzUsIDkzLCAxLCAyNDIsIDM5LCAyMzUsIDkzLCAxLCAyNTEsIDE3NSwgCisgICAgMjM1LCA5MywgMSwgMjE0LCAxNTAsIDIzNSwgOTMsIDEsIDIyOCwgNywgMjM1LCA5MywgMSwgMjM0LCAyMjYsIDIzNSwgOTMsIAorICAgIDEsIDIwNiwgNjMsIDIzNSwgOTMsIDEsIDIzOCwgMjIwLCAyMzUsIDkzLCAxLCAyMjUsIDIzOCwgMjM1LCA5MywgMSwgMjI1LCAKKyAgICAxNTMsIDIzNSwgOTMsIDEsIDIyMiwgMTcyLCAyMzUsIDkzLCAxLCAyMjAsIDExMiwgMjM1LCA5MywgMSwgMjI3LCAyMjAsIAorICAgIDIzNSwgOTMsIDEsIDIwMywgMjAwLCAyMzUsIDkzLCAxLCAyMTYsIDE4NywgMjM1LCA5MywgMSwgMjE5LCAxMDgsIDIzNSwgCisgICAgOTMsIDEsIDIxMywgMjI4LCAyMzUsIDkzLCAxLCAyMTEsIDI0MiwgMjM1LCA5MywgMSwgMjA2LCAxODAsIDIzNSwgOTMsIDEsIAorICAgIDIwMSwgMTAsIDIzNSwgOTMsIDEsIDIzNywgMTc1LCAyMzUsIDkzLCAxLCAyMjgsIDE1NSwgMjM1LCA5MywgMSwgMjMzLCA2NiwgCisgICAgMjM1LCA5MywgMSwgMjE3LCAxMCwgMjM1LCA5MywgMSwgMjE5LCAxMTQsIDIzMywgODIsIDQwLCAyMTYsIDE4LCAxLCAyNTEsIAorICAgIDg1LCA0MCwgMjE2LCAxOCwgMSwgMjQ4LCAzLCA0MCwgMjE2LCAxOCwgMSwgMjM2LCA3MywgNDAsIDIxNiwgMTgsIDEsIDI0MCwgCisgICAgMTk5LCA0MCwgMjE2LCAxOCwgMSwgNzIsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDU5LCA0MCwgMjE2LCAxOCwgMSwgMjM5LCAKKyAgICA4NSwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgOTYsIDQwLCAyMTYsIDE4LCAxLCAyMzksIDgzLCA0MCwgMjE2LCAxOCwgMSwgNzAsIAorICAgIDQwLCAyMTYsIDE4LCAxLCAyMjYsIDc3LCA0MCwgMjE2LCAxOCwgMSwgMjI1LCAxMiwgNDAsIDIxNiwgMTgsIDEsIDIyMiwgCisgICAgMzgsIDQwLCAyMTYsIDE4LCAxLCAyMjAsIDIyLCA0MCwgMjE2LCAxOCwgMSwgMjAyLCAxNzgsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMTYsIDYwLCA0MCwgMjE2LCAxOCwgMSwgMjEzLCAxNTMsIDQwLCAyMTYsIDE4LCAxLCAyMDksIDE2MSwgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwNywgOCwgNDAsIDIxNiwgMTgsIDEsIDY2LCA0MCwgMjE2LCAxOCwgMSwgMjQ2LCAyNDUsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMTAsIDEsIDQwLCAyMTYsIDE4LCAxLCAyMTAsIDY3LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCAyMTMsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDAsIDI5LCA0MCwgMjE2LCAxOCwgMSwgNzQsIDQwLCAyMTYsIDE4LCAxLCAyMTcsIDYzLCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjM4LCAyNDgsIDQwLCAyMTYsIDE4LCAxLCAxNDQsIDQwLCAyMTYsIDE4LCAxLCAyMDUsIDEwLCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjAzLCA0NywgNDAsIDIxNiwgMTgsIDEsIDIwMCwgMzMsIDQwLCAyMTYsIDE4LCAxLCAyMDAsIDMxLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjAwLCA2NSwgNDAsIDIxNiwgMTgsIDEsIDIyOCwgMTc4LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCAyMTEsIDQwLCAyMTYsIAorICAgIDE4LCAxLCAxODMsIDQwLCAyMTYsIDE4LCAxLCAyMzIsIDI0MCwgMzgsIDQwLCAyMTYsIDE4LCAxLCAyNTEsIDg1LCAzOCwgCisgICAgNDAsIDIxNiwgMTgsIDEsIDI0MCwgMTk5LCAzOCwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgOTYsIDM4LCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjIwLCAyMiwgMzgsIDQwLCAyMTYsIDE4LCAxLCAyMDksIDE2MSwgMjA0LCAyNiwgMSwgMjUxLCAxMTYsIDIwNCwgMjYsIAorICAgIDEsIDI0OCwgMjA4LCAyMDQsIDI2LCAxLCAyMzYsIDYxLCAyMDQsIDI2LCAxLCAyMjYsIDIwNywgMjA0LCAyNiwgMSwgMjQxLCAKKyAgICAxMzYsIDIwNCwgMjYsIDEsIDIzMywgMjA3LCAyMDQsIDI2LCAxLCAyMDEsIDAsIDIwNCwgMjYsIDEsIDE5OSwgODAsIDIwNCwgCisgICAgMjYsIDEsIDIzMywgMTE2LCAyMDQsIDI2LCAxLCAyMDYsIDE0NiwgMjA0LCAyNiwgMSwgMTk5LCAyMzQsIDIwNCwgMjYsIDEsIAorICAgIDIyNywgODYsIDIwNCwgMjYsIDEsIDIxMCwgMjEsIDIwNCwgMjYsIDEsIDIyNSwgODcsIDIwNCwgMjYsIDEsIDIyMiwgNDcsIAorICAgIDIwNCwgMjYsIDEsIDI0MSwgOTYsIDIwNCwgMjYsIDEsIDIxOCwgODksIDIwNCwgMjYsIDEsIDE5OSwgMywgMjA0LCAyNiwgMSwgCisgICAgMjEyLCAxOCwgMjA0LCAyNiwgMSwgMjUxLCAxNzEsIDIwNCwgMjYsIDEsIDIxNCwgMjI0LCAyMDQsIDI2LCAxLCAyMTIsIDU1LCAKKyAgICAyMDQsIDI2LCAxLCAyMTQsIDEwMiwgMjA0LCAyNiwgMSwgMjEzLCAyMDcsIDIwNCwgMjYsIDEsIDIwNiwgMTEwLCAyMDQsIAorICAgIDI2LCAxLCAyMzUsIDE5NCwgMjA0LCAyNiwgMSwgMTM4LCAyMDQsIDI2LCAxLCA3MCwgMjA0LCAyNiwgMSwgNjYsIDIwNCwgCisgICAgMjYsIDEsIDIwOCwgMTM0LCAyMDQsIDI2LCAyMDAsIDIzOCwgMjQwLCAyMzksIDQwLCAyMTYsIDEyLCAyLCA2MiwgNDAsIAorICAgIDIxNiwgMTIsIDIsIDcwLCA0MCwgMjE2LCAxMiwgMiwgNjYsIDQwLCAyMTYsIDEyLCAyLCAxNjEsIDQwLCAyMTYsIDEyLCAyLCAKKyAgICAyMjYsIDE1LCA0MCwgMjE2LCAxMiwgMiwgMjM2LCA4OSwgNDAsIDIxNiwgMTIsIDIsIDIzNSwgNTAsIDQwLCAyMTYsIDEyLCAKKyAgICAyLCAyMDAsIDE4MSwgNDAsIDIxNiwgMTIsIDIsIDI0NywgMTkwLCA0MCwgMjE2LCAxMiwgMiwgMjI3LCAyNDgsIDQwLCAyMTYsIAorICAgIDEyLCAyLCAyMjcsIDIwNywgNDAsIDIxNiwgMTIsIDIsIDIwNywgMzYsIDQwLCAyMTYsIDEyLCAyLCAyMDQsIDIxNSwgNDAsIAorICAgIDIxNiwgMTIsIDIsIDI0MiwgNTgsIDQwLCAyMTYsIDEyLCAyLCAyNDEsIDc2LCA0MCwgMjE2LCAxMiwgMiwgMjM5LCAxMzcsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMDYsIDEyMiwgNDAsIDIxNiwgMTIsIDIsIDE3MiwgNDAsIDIxNiwgMTIsIDIsIDI0OSwgMTM2LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjM3LCAxOTUsIDQwLCAyMTYsIDEyLCAyLCAxODgsIDQwLCAyMTYsIDEyLCAyLCAyMTgsIDEzMywgCisgICAgNDAsIDIxNiwgMTIsIDIsIDE3OCwgNDAsIDIxNiwgMTIsIDIsIDIyMSwgMjExLCA0MCwgMjE2LCAxMiwgMiwgMjIxLCA0MSwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDE4MywgNDAsIDIxNiwgMTIsIDIsIDIwMywgOTAsIDQwLCAyMTYsIDEyLCAyLCAyMDIsIDIzNCwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIxMywgMjUyLCA0MCwgMjE2LCAxMiwgMiwgMjEyLCAxNzUsIDQwLCAyMTYsIDEyLCAyLCAxOTQsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMTIsIDY0LCA0MCwgMjE2LCAxMiwgMiwgMTk5LCAxMTQsIDQwLCAyMTYsIDEyLCAyLCAyMTAsIAorICAgIDExNCwgNDAsIDIxNiwgMTIsIDIsIDIwOCwgMTc5LCA0MCwgMjE2LCAxMiwgMiwgMTQ0LCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAKKyAgICAxMzMsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIDEzMiwgNDAsIDIxNiwgMTIsIDIsIDI1MCwgMTMxLCA0MCwgMjE2LCAxMiwgMiwgCisgICAgMjAwLCAxNTIsIDQwLCAyMTYsIDEyLCAyLCAyNDIsIDM1LCA0MCwgMjE2LCAxMiwgMiwgMjQyLCAzNCwgNDAsIDIxNiwgMTIsIAorICAgIDIsIDI0OSwgMTExLCA0MCwgMjE2LCAxMiwgMiwgMjQ3LCAyNDIsIDQwLCAyMTYsIDEyLCAyMDAsIDIzOCwgMjQwLCAyMzksIAorICAgIDQwLCAyMTYsIDEyLCA0MSwgMTAyLCA0MCwgMjE2LCAxMiwgNDEsIDEwNSwgNDAsIDIxNiwgMTIsIDQxLCAyMDYsIDE2NiwgCisgICAgNDAsIDIxNiwgMTIsIDQxLCAyMDQsIDE1OSwgNDAsIDIxNiwgMTIsIDQxLCAyMzMsIDgyLCAyNDEsIDExNiwgNiwgMSwgMTY4LCAKKyAgICA3MCwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNzIsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDYyLCAyNDEsIDExNiwgNiwgMSwgCisgICAgMTY4LCAyNTEsIDE4NSwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDIxNywgNjMsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgNzAsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgNzIsIDI0MSwgMTE2LCA2LCAKKyAgICAxLCAyMDksIDI1MCwgNjIsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgMjUxLCAxODUsIDI0MSwgMTE2LCA2LCAxLCAyMDksIAorICAgIDI1MCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgMjE3LCA2MywgMjQxLCAxMTYsIDYsIDEsIDI1MCwgMTEyLCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjE2LCAyMzgsIDI0MSwgMTE2LCA2LCAxLCAyMDAsIDIxNiwgMjQxLCAxMTYsIDYsIDEsIDIwMCwgCisgICAgNDgsIDI0MSwgMTE2LCA2LCAxLCAyMzQsIDI0NywgMjQxLCAxMTYsIDYsIDEsIDIxNiwgNjEsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAyNDgsIDI1MiwgMjQxLCAxMTYsIDYsIDEsIDIwNiwgMTkwLCAyNDEsIDExNiwgNiwgMSwgMjQxLCAxNjEsIDI0MSwgMTE2LCAKKyAgICA2LCAxLCAyNDcsIDQsIDI0MSwgMTE2LCA2LCAxLCAyMjcsIDIyNSwgMjQxLCAxMTYsIDYsIDEsIDIyNywgMTUsIDI0MSwgCisgICAgMTE2LCA2LCAxLCAyMzYsIDM2LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAyNDgsIDI0MSwgMTE2LCA2LCAxLCAyMDMsIDU0LCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjM4LCA3NCwgMjQxLCAxMTYsIDYsIDEsIDIwNiwgMTA0LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAKKyAgICAxMDQsIDI0MSwgMTE2LCA2LCAxLCAxOTksIDg3LCAyNDEsIDExNiwgNiwgMSwgMjM4LCA5NCwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDE5OSwgNjcsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDExNSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMjA5LCAyNDEsIDExNiwgNiwgCisgICAgMSwgMjM4LCAxOTAsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDE3OSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTY1LCAyNDEsIAorICAgIDExNiwgNiwgMSwgMjE3LCAxMDUsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDUxLCAyNDEsIDExNiwgNCwgMSwgMTY4LCA3MCwgCisgICAgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzIsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDYyLCAyNDEsIDExNiwgNCwgMSwgMTY4LCAKKyAgICAyNTEsIDE4NSwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDIxNywgNjMsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMDksIDI1MCwgNzAsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgNzIsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAyMDksIDI1MCwgNjIsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgMjUxLCAxODUsIDI0MSwgMTE2LCA0LCAxLCAyMDksIAorICAgIDI1MCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgMjE3LCA2MywgMjQxLCAxMTYsIDQsIDEsIDI1MCwgMTEyLCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMjE2LCAyMzgsIDI0MSwgMTE2LCA0LCAxLCAyMDAsIDIxNiwgMjQxLCAxMTYsIDQsIDEsIDIwMCwgCisgICAgNDgsIDI0MSwgMTE2LCA0LCAxLCAyMzQsIDI0NywgMjQxLCAxMTYsIDQsIDEsIDIxNiwgNjEsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAyNDgsIDI1MiwgMjQxLCAxMTYsIDQsIDEsIDIwNiwgMTkwLCAyNDEsIDExNiwgNCwgMSwgMjQxLCAxNjEsIDI0MSwgMTE2LCAKKyAgICA0LCAxLCAyNDcsIDQsIDI0MSwgMTE2LCA0LCAxLCAyMjcsIDIyNSwgMjQxLCAxMTYsIDQsIDEsIDIyNywgMTUsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMzYsIDM2LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAyNDgsIDI0MSwgMTE2LCA0LCAxLCAyMDMsIDU0LCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMjM4LCA3NCwgMjQxLCAxMTYsIDQsIDEsIDIwNiwgMTA0LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAKKyAgICAxMDQsIDI0MSwgMTE2LCA0LCAxLCAxOTksIDg3LCAyNDEsIDExNiwgNCwgMSwgMjM4LCA5NCwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDE5OSwgNjcsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDExNSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMjA5LCAyNDEsIDExNiwgNCwgCisgICAgMSwgMjM4LCAxOTAsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDE3OSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTY1LCAyNDEsIAorICAgIDExNiwgNCwgMSwgMjE3LCAxMDUsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDUxLCAyMTAsIDcyLCAxLCAyMTYsIDU4LCAyMTAsIAorICAgIDcyLCAxLCAyMDUsIDE0NCwgMjEwLCA3MiwgMSwgMjI2LCAxNTksIDIxMCwgNzIsIDEsIDIzNywgMTQwLCAyMTAsIDcyLCAxLCAKKyAgICAyMDYsIDc5LCAyMTAsIDcyLCAxLCAyMDksIDI5LCAyMTAsIDcyLCAxLCAyMDcsIDIwNCwgMjEwLCA3MiwgMSwgMjQ2LCAxODQsIAorICAgIDIxMCwgNzIsIDEsIDIwMCwgNTAsIDIxMCwgNzIsIDEsIDIzMywgNzksIDIxMCwgNzIsIDEsIDI0OCwgMTg3LCAyMTAsIDcyLCAKKyAgICAxLCAyNDEsIDE3NCwgMjEwLCA3MiwgMSwgMjM2LCA3NSwgMjEwLCA3MiwgMSwgMjAyLCAxNzMsIDIxMCwgNzIsIDEsIDIwNiwgCisgICAgODUsIDIxMCwgNzIsIDEsIDE5OSwgMTIsIDIxMCwgNzIsIDEsIDIyMiwgNzQsIDIxMCwgNzIsIDEsIDIyNywgMTQ1LCAyMTAsIAorICAgIDcyLCAxLCAyMDAsIDI1NCwgMjEwLCA3MiwgMSwgMjM0LCAyMzUsIDIxMCwgNzIsIDEsIDIyNCwgOTQsIDIxMCwgNzIsIDEsIAorICAgIDIyMSwgMTY1LCAyMTAsIDcyLCAxLCAyMjgsIDE1OCwgMjEwLCA3MiwgMSwgMjM4LCAyNDYsIDIxMCwgNzIsIDEsIDI1MCwgCisgICAgMTgxLCAyMTAsIDcyLCAxLCAyNTEsIDIyNSwgMjEwLCA3MiwgMSwgMjE3LCA3OCwgMjEwLCA3MiwgMSwgMjAwLCAyNDEsIAorICAgIDIxMCwgNzIsIDEsIDIxNiwgMjU0LCAyMTAsIDcyLCAxLCAyNTEsIDE4NSwgMjEwLCA3MiwgMSwgMjEyLCAyNTQsIDIxMCwgCisgICAgNzIsIDEsIDIxOCwgODksIDIxMCwgNzIsIDEsIDIzOSwgMTAsIDIxMCwgNzIsIDEsIDI1MSwgMTkwLCAyMTAsIDcyLCAxLCAKKyAgICAyMzIsIDIzMSwgMjEwLCA3MiwgMSwgMjAzLCAyMjgsIDIxMCwgNzIsIDEsIDIxNywgMTQ0LCAyMTAsIDcyLCAxLCAyMTcsIAorICAgIDU1LCAyMTAsIDcyLCAxLCAyMTcsIDEwMywgMjEwLCA3MiwgMSwgMjUwLCAxMTUsIDIxMCwgNzIsIDEsIDI1MCwgMjI5LCAKKyAgICAyMTAsIDcyLCAxLCAyMTcsIDMzLCAyMTAsIDcyLCAxLCAyNTEsIDE2NiwgMjEwLCA3MiwgMSwgMjM4LCAxMDgsIDIxMCwgNzIsIAorICAgIDEsIDI1MCwgMjA3LCAyMTAsIDcyLCAxLCAyMzksIDIxLCAyMTAsIDcyLCAxLCAyMzIsIDIzOSwgMjEwLCA3MiwgMSwgMjAwLCAKKyAgICAxNSwgMjE3LCAxMiwgMSwgMjUxLCAxNDIsIDIxNywgMTIsIDEsIDI0OSwgMTM2LCAyMTcsIDEyLCAxLCAyMDcsIDM2LCAyMTcsIAorICAgIDEyLCAxLCAyMjcsIDI0OCwgMjE3LCAxMiwgMSwgMjAwLCAxODEsIDIxNywgMTIsIDEsIDIyNiwgMjA3LCAyMTcsIDEyLCAxLCAKKyAgICAyNDEsIDE2MCwgMjE3LCAxMiwgMSwgMjEzLCAyNTIsIDIxNywgMTIsIDEsIDIxMiwgNjQsIDIxNywgMTIsIDEsIDIxMCwgMjcsIAorICAgIDIxNywgMTIsIDEsIDI0MSwgMTAwLCAyMTcsIDEyLCAxLCAyNDcsIDEwMSwgMjE3LCAxMiwgMSwgMjM2LCA4OSwgMjE3LCAxMiwgCisgICAgMSwgMjM3LCAxOTUsIDIxNywgMTIsIDEsIDIxNCwgMTU3LCAyMTcsIDEyLCAxLCAyMjcsIDEwMiwgMjE3LCAxMiwgMSwgMjI1LCAKKyAgICAxNzEsIDIxNywgMTIsIDEsIDIyMSwgMTc5LCAyMTcsIDEyLCAxLCAyMTgsIDczLCAyMTcsIDEyLCAxLCAyMDEsIDcyLCAyMTcsIAorICAgIDEyLCAxLCAxNDQsIDIxNywgMTIsIDEsIDE4MywgMjE3LCAxMiwgMSwgNjIsIDIxNywgMTIsIDEsIDcyLCAyMTcsIDEyLCAxLCAKKyAgICA3MCwgMjE3LCAxMiwgMSwgNzQsIDIxNywgMTIsIDEsIDY2LCAyMTcsIDEyLCAxLCAyNTIsIDEzOCwgMjE3LCAxMiwgMSwgCisgICAgMjM4LCAyNTUsIDIxNywgMTIsIDEsIDIxNywgNjMsIDIxNywgMTIsIDE3LCAxOTksIDgxLCAyMTcsIDEyLCAxNywgMTAyLCAKKyAgICAyMTcsIDEyLCAxNywgMTA1LCAyMTcsIDEyLCAxNywgMTQ3LCAyMTcsIDEyLCAxNywgMTQ5LCAyMTcsIDEyLCAxNywgMTY0LCAKKyAgICAyMTcsIDEyLCAxNywgMTg3LCAyMTcsIDEyLCAxNywgMjEwLCAxMzUsIDIxNywgMTIsIDE3LCAxOTIsIDIxNywgMTIsIDE3LCAKKyAgICAyMTksIDExMywgMjE3LCAxNCwgNiwgMSwgNjIsIDIxNywgMTQsIDYsIDEsIDI1MSwgMTc2LCAyMTcsIDE0LCA2LCAxLCAyNTEsIAorICAgIDE3MSwgMjE3LCAxNCwgNiwgMSwgMjUxLCAxODUsIDIxNywgMTQsIDYsIDEsIDI0OCwgNzIsIDIxNywgMTQsIDYsIDEsIDI0NywgCisgICAgMzcsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjQwLCAyMTcsIDE0LCA2LCAxLCA3MiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMjEsIAorICAgIDIxNywgMTQsIDYsIDEsIDE0NCwgMjE3LCAxNCwgNiwgMSwgMjMzLCAzNiwgMjE3LCAxNCwgNiwgMSwgNzAsIDIxNywgMTQsIAorICAgIDYsIDEsIDE2MSwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzksIDIxNywgMTQsIDYsIDEsIDIyNSwgMjAzLCAyMTcsIDE0LCA2LCAKKyAgICAxLCAxOTQsIDIxNywgMTQsIDYsIDEsIDE3OCwgMjE3LCAxNCwgNiwgMSwgMTg4LCAyMTcsIDE0LCA2LCAxLCA3NCwgMjE3LCAKKyAgICAxNCwgNiwgMSwgMjE3LCAxMDIsIDIxNywgMTQsIDYsIDEsIDE3MiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzgsIDIxNywgMTQsIAorICAgIDYsIDEsIDIxMiwgNjQsIDIxNywgMTQsIDYsIDEsIDIxMCwgMTE0LCAyMTcsIDE0LCA2LCAxLCAyMDcsIDM2LCAyMTcsIDE0LCAKKyAgICA2LCAxLCAyMzgsIDIzNywgMjE3LCAxNCwgNiwgMSwgMjA1LCAzMiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzYsIDIxNywgMTQsIAorICAgIDYsIDEsIDIwNSwgMjIsIDIxNywgMTQsIDYsIDEsIDI0MSwgMTAwLCAyMTcsIDE0LCA2LCAxLCA2NiwgMjE3LCAxNCwgNiwgMSwgCisgICAgMjAxLCAxMTQsIDIxNywgMTQsIDYsIDEsIDIyNiwgMjA3LCAyMTcsIDE0LCA2LCAxLCAyMzUsIDE5OSwgMjE3LCAxNCwgNiwgCisgICAgMSwgMTk5LCAxMTQsIDIxNywgMTQsIDYsIDEsIDE5OSwgNzcsIDIxNywgMTQsIDQsIDEsIDYyLCAyMTcsIDE0LCA0LCAxLCAKKyAgICAyNTEsIDE3NiwgMjE3LCAxNCwgNCwgMSwgMjUxLCAxNzEsIDIxNywgMTQsIDQsIDEsIDI1MSwgMTg1LCAyMTcsIDE0LCA0LCAKKyAgICAxLCAyNDgsIDcyLCAyMTcsIDE0LCA0LCAxLCAyNDcsIDM3LCAyMTcsIDE0LCA0LCAxLCAyMzgsIDI0MCwgMjE3LCAxNCwgNCwgCisgICAgMSwgNzIsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjIxLCAyMTcsIDE0LCA0LCAxLCAxNDQsIDIxNywgMTQsIDQsIDEsIDIzMywgCisgICAgMzYsIDIxNywgMTQsIDQsIDEsIDcwLCAyMTcsIDE0LCA0LCAxLCAxNjEsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM5LCAyMTcsIAorICAgIDE0LCA0LCAxLCAyMjUsIDIwMywgMjE3LCAxNCwgNCwgMSwgMTk0LCAyMTcsIDE0LCA0LCAxLCAxNzgsIDIxNywgMTQsIDQsIAorICAgIDEsIDE4OCwgMjE3LCAxNCwgNCwgMSwgNzQsIDIxNywgMTQsIDQsIDEsIDIxNywgMTAyLCAyMTcsIDE0LCA0LCAxLCAxNzIsIAorICAgIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM4LCAyMTcsIDE0LCA0LCAxLCAyMTIsIDY0LCAyMTcsIDE0LCA0LCAxLCAyMTAsIDExNCwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjA3LCAzNiwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzcsIDIxNywgMTQsIDQsIDEsIDIwNSwgMzIsIAorICAgIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM2LCAyMTcsIDE0LCA0LCAxLCAyMDUsIDIyLCAyMTcsIDE0LCA0LCAxLCAyNDEsIDEwMCwgCisgICAgMjE3LCAxNCwgNCwgMSwgNjYsIDIxNywgMTQsIDQsIDEsIDIwMSwgMTE0LCAyMTcsIDE0LCA0LCAxLCAyMjYsIDIwNywgMjE3LCAKKyAgICAxNCwgNCwgMSwgMjM1LCAxOTksIDIxNywgMTQsIDQsIDEsIDE5OSwgMTE0LCAyMTcsIDE0LCA0LCAxLCAxOTksIDc3LCAyMzgsIAorICAgIDIwNSwgMSwgNjIsIDIzOCwgMjA1LCAxLCAyNDksIDgsIDIzOCwgMjA1LCAxLCAyNDcsIDc2LCAyMzgsIDIwNSwgMSwgMjQ3LCAKKyAgICA4LCAyMzgsIDIwNSwgMSwgMjQxLCAxNzUsIDIzOCwgMjA1LCAxLCAyMjAsIDY3LCAyMzgsIDIwNSwgMSwgMjQxLCA5MSwgCisgICAgMjM4LCAyMDUsIDEsIDIzOCwgMjM0LCAyMzgsIDIwNSwgMSwgNzIsIDIzOCwgMjA1LCAxLCAyMzcsIDE0NywgMjM4LCAyMDUsIAorICAgIDEsIDIzNiwgMTUsIDIzOCwgMjA1LCAxLCAyMzUsIDEzMiwgMjM4LCAyMDUsIDEsIDIzNCwgMTM5LCAyMzgsIDIwNSwgMSwgCisgICAgNzAsIDIzOCwgMjA1LCAxLCAyMjcsIDIyNywgMjM4LCAyMDUsIDEsIDIyNywgOCwgMjM4LCAyMDUsIDEsIDIyNSwgNDAsIAorICAgIDIzOCwgMjA1LCAxLCAyMjQsIDEzNCwgMjM4LCAyMDUsIDEsIDIyMiwgNzYsIDIzOCwgMjA1LCAxLCAyMjAsIDM0LCAyMzgsIAorICAgIDIwNSwgMSwgMTg4LCAyMzgsIDIwNSwgMSwgMjE5LCA5MSwgMjM4LCAyMDUsIDEsIDc0LCAyMzgsIDIwNSwgMSwgMjE2LCA3MywgCisgICAgMjM4LCAyMDUsIDEsIDIxNCwgMTM5LCAyMzgsIDIwNSwgMSwgMjEzLCAxOTAsIDIzOCwgMjA1LCAxLCAyMTIsIDIxMCwgMjM4LCAKKyAgICAyMDUsIDEsIDIxMSwgMjAyLCAyMzgsIDIwNSwgMSwgMjEwLCA2NSwgMjM4LCAyMDUsIDEsIDIwNiwgMjAxLCAyMzgsIDIwNSwgCisgICAgMSwgMjA2LCAxMDYsIDIzOCwgMjA1LCAxLCA2NiwgMjM4LCAyMDUsIDEsIDIwMywgNTksIDIzOCwgMjA1LCAxLCAyMDAsIAorICAgIDE3NSwgMjM4LCAyMDUsIDEsIDIwMCwgMTIzLCAyMzgsIDIwNSwgMSwgMTk5LCA4OSwgMjM4LCAyMDUsIDEsIDE5OSwgNjgsIAorICAgIDIzOCwgMjA1LCAxLCAyMzUsIDE4NSwgMjM4LCAyMDUsIDEsIDIzNSwgMTkxLCAyMzgsIDIwNSwgMSwgMjI2LCAxOTIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjUxLCAxMTEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ4LCAyMTAsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjM1LCAxNDksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQxLCAyNDAsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjM5LCA5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgOTksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjM4LCAxNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDYyLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwNiwgMjI3LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMzcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCAyMjIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA3NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjgsIDM0LCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIxMCwgMTE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNSwgODAsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjI4LCA0NiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDAsIDE3MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzksIAorICAgIDEwMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDcsIDEzNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDIwOCwgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDQ3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyMywgMjUyLCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIzNCwgODYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE0LCAxNDAsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjUxLCAzMCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDYsIDIwMSwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyNDYsIDIzNiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDIsIDE2NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMjIsIDE2MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTQsIDE0NCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTgsIAorICAgIDIwMCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzksIDc4LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMCwgOTcsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjI3LCAyMjgsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE3LCA3OCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyMDQsIDEzMiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzcsIDE3MCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMzksIDkxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjE2LCA0NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzUsIDE3NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTMsIAorICAgIDIwNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTAsIDEyMywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDIsIDIzNiwgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDUsIDIwNiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDksIDIyOSwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMjgsIDUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQyLCAxNjYsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjQ3LCAxMDEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjAwLCA1NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMTUsIDEzOSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjYsIDEyNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAyNDYsIDE0MywgCisgICAgODEsIDMwLCAzNSwgMiwgMjUyLCA4OCwgMzAsIDM1LCAyLCAyNTIsIDg3LCAzMCwgMzUsIDIsIDI1MiwgODYsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA4NSwgMzAsIDM1LCAyLCAyNTIsIDg0LCAzMCwgMzUsIDIsIDI1MiwgODMsIDMwLCAzNSwgMiwgMjUyLCA4MiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDgxLCAzMCwgMzUsIDIsIDI1MiwgODAsIDMwLCAzNSwgMiwgMjUyLCA3OSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDc4LCAzMCwgMzUsIDIsIDI1MiwgNzcsIDMwLCAzNSwgMiwgMjUyLCA3NiwgMzAsIDM1LCAyLCAyNTIsIDc1LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgNzQsIDMwLCAzNSwgMiwgMjUyLCA3MywgMzAsIDM1LCAyLCAyNTIsIDcyLCAzMCwgMzUsIDIsIDI1MiwgCisgICAgNzEsIDMwLCAzNSwgMiwgMjUyLCA3MCwgMzAsIDM1LCAyLCAyNTIsIDY5LCAzMCwgMzUsIDIsIDI1MiwgNjgsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA2NywgMzAsIDM1LCAyLCAyNTIsIDY2LCAzMCwgMzUsIDIsIDI1MiwgNjUsIDMwLCAzNSwgMiwgMjUyLCA2NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDYzLCAzMCwgMzUsIDIsIDI1MiwgNjIsIDMwLCAzNSwgMiwgMjU1LCA5NiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDYxLCAzMCwgMzUsIDIsIDI1MiwgNjAsIDMwLCAzNSwgMiwgMjUyLCA1OSwgMzAsIDM1LCAyLCAyNTIsIDU4LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgNTcsIDMwLCAzNSwgMiwgMjUyLCA1NiwgMzAsIDM1LCAyLCAyNTIsIDU1LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgNTQsIDMwLCAzNSwgMiwgMjUyLCA1MywgMzAsIDM1LCAyLCAyNTIsIDUyLCAzMCwgMzUsIDIsIDI1MiwgNTEsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA1MCwgMzAsIDM1LCAyLCAyNTIsIDQ5LCAzMCwgMzUsIDIsIDI1MiwgNDgsIDMwLCAzNSwgMiwgMjUyLCA0NywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDQ2LCAzMCwgMzUsIDIsIDI1MiwgNDUsIDMwLCAzNSwgMiwgMjUyLCA0NCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDQzLCAzMCwgMzUsIDIsIDI1MiwgNDIsIDMwLCAzNSwgMiwgMjUyLCA0MSwgMzAsIDM1LCAyLCAyNTIsIDQwLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMzksIDMwLCAzNSwgMiwgMjUyLCAzOCwgMzAsIDM1LCAyLCAyNTIsIDM3LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMzYsIDMwLCAzNSwgMiwgMjUyLCAzNSwgMzAsIDM1LCAyLCAyNTIsIDM0LCAzMCwgMzUsIDIsIDI1MiwgMzMsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAzMiwgMzAsIDM1LCAyLCAyNTIsIDMxLCAzMCwgMzUsIDIsIDI1MiwgMzAsIDMwLCAzNSwgMiwgMjUyLCAyOSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDI4LCAzMCwgMzUsIDIsIDI1MiwgMjcsIDMwLCAzNSwgMiwgMjUyLCAyNiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI1LCAzMCwgMzUsIDIsIDI1MiwgMjQsIDMwLCAzNSwgMiwgMjUyLCAyMywgMzAsIDM1LCAyLCAyNTIsIDIyLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMjEsIDMwLCAzNSwgMiwgMjUyLCAyMCwgMzAsIDM1LCAyLCAyNTIsIDE5LCAzMCwgMzUsIDIsIDI1NSwgCisgICAgOSwgMzAsIDM1LCAyLCAyNTIsIDE4LCAzMCwgMzUsIDIsIDI1MiwgMTcsIDMwLCAzNSwgMiwgMjU0LCAyMzAsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAxNiwgMzAsIDM1LCAyLCAyNTIsIDE1LCAzMCwgMzUsIDIsIDI1MiwgMTQsIDMwLCAzNSwgMiwgMjUyLCAxMywgCisgICAgMzAsIDM1LCAyLCAyNTQsIDIxNywgMzAsIDM1LCAyLCAyNTIsIDEyLCAzMCwgMzUsIDIsIDI1MiwgMTEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxMCwgMzAsIDM1LCAyLCAyNTIsIDksIDMwLCAzNSwgMiwgMjUyLCA4LCAzMCwgMzUsIDIsIDI1NCwgMzMsIDMwLCAKKyAgICAzNSwgMiwgMjU0LCAzMiwgMzAsIDM1LCAyLCAyNTQsIDMxLCAzMCwgMzUsIDIsIDI1NCwgMzAsIDMwLCAzNSwgMiwgMjU0LCAKKyAgICAyOSwgMzAsIDM1LCAyLCAyNTQsIDI4LCAzMCwgMzUsIDIsIDI1NCwgMjcsIDMwLCAzNSwgMiwgMjU0LCAyNiwgMzAsIDM1LCAKKyAgICAyLCAyNTQsIDI0LCAzMCwgMzUsIDIsIDI1NCwgMjMsIDMwLCAzNSwgMiwgMjU0LCAyMiwgMzAsIDM1LCAyLCAyNTQsIDIxLCAKKyAgICAzMCwgMzUsIDIsIDI1NCwgMjAsIDMwLCAzNSwgMiwgMjU0LCAxOSwgMzAsIDM1LCAyLCAyNTQsIDE3LCAzMCwgMzUsIDIsIAorICAgIDI1NCwgMTYsIDMwLCAzNSwgMiwgMjU0LCAxNSwgMzAsIDM1LCAyLCAyNTQsIDE0LCAzMCwgMzUsIDIsIDI1NCwgMTMsIDMwLCAKKyAgICAzNSwgMiwgMjU0LCAxMiwgMzAsIDM1LCAyLCAyNTQsIDExLCAzMCwgMzUsIDIsIDI1NCwgMTAsIDMwLCAzNSwgMiwgMjU0LCAKKyAgICA5LCAzMCwgMzUsIDIsIDI1NCwgOCwgMzAsIDM1LCAyLCAyNTQsIDcsIDMwLCAzNSwgMiwgMjU0LCA2LCAzMCwgMzUsIDIsIAorICAgIDI1NCwgNSwgMzAsIDM1LCAyLCAyNTQsIDQsIDMwLCAzNSwgMiwgMjU0LCAzLCAzMCwgMzUsIDIsIDI1NCwgMiwgMzAsIDM1LCAKKyAgICAyLCAyNTQsIDEsIDMwLCAzNSwgMiwgMjU0LCAwLCAzMCwgMzUsIDIsIDI1MywgMjU1LCAzMCwgMzUsIDIsIDI1MywgMjUzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjUyLCAzMCwgMzUsIDIsIDI1MywgMjUxLCAzMCwgMzUsIDIsIDI1MywgMjQ3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjQ2LCAzMCwgMzUsIDIsIDI1MywgMjQ1LCAzMCwgMzUsIDIsIDI1MywgMjQ0LCAzMCwgMzUsIDIsIDI1MywgMjQwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjM5LCAzMCwgMzUsIDIsIDI1MywgMjM4LCAzMCwgMzUsIDIsIDI1MywgMjM3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjM2LCAzMCwgMzUsIDIsIDI1MywgMjM1LCAzMCwgMzUsIDIsIDI1MywgMjM0LCAzMCwgMzUsIDIsIDI1MywgMjMzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjMyLCAzMCwgMzUsIDIsIDI1MywgMjMxLCAzMCwgMzUsIDIsIDI1MywgMjMwLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjI5LCAzMCwgMzUsIDIsIDI1MywgMjI4LCAzMCwgMzUsIDIsIDI1MywgMjI3LCAzMCwgMzUsIDIsIDI1MywgMjI2LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjI1LCAzMCwgMzUsIDIsIDI1MywgMjI0LCAzMCwgMzUsIDIsIDI1MywgMjIzLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjIyLCAzMCwgMzUsIDIsIDI1MywgMjIxLCAzMCwgMzUsIDIsIDI1MywgMjIwLCAzMCwgMzUsIDIsIDI1MywgMjE5LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjE4LCAzMCwgMzUsIDIsIDI1MywgMjE2LCAzMCwgMzUsIDIsIDI1MywgMjE1LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjE0LCAzMCwgMzUsIDIsIDI1MywgMjEzLCAzMCwgMzUsIDIsIDI1MywgMjEyLCAzMCwgMzUsIDIsIDI1MywgMjEwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjA5LCAzMCwgMzUsIDIsIDI1MywgMjA4LCAzMCwgMzUsIDIsIDI1MywgMjA3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjA1LCAzMCwgMzUsIDIsIDI1MywgMjA0LCAzMCwgMzUsIDIsIDI1MywgMjAzLCAzMCwgMzUsIDIsIDI1MywgMTY5LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTY3LCAzMCwgMzUsIDIsIDI1MywgMTY1LCAzMCwgMzUsIDIsIDI1MywgMTYzLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTYxLCAzMCwgMzUsIDIsIDI1MywgMTU5LCAzMCwgMzUsIDIsIDI1MywgMTU3LCAzMCwgMzUsIDIsIDI1MywgMTU1LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTUzLCAzMCwgMzUsIDIsIDI1MywgMTUxLCAzMCwgMzUsIDIsIDI1MywgMTQ5LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTQ2LCAzMCwgMzUsIDIsIDI1MywgMTQ0LCAzMCwgMzUsIDIsIDI1MywgMTQyLCAzMCwgMzUsIDIsIDI1MywgMTQwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTM4LCAzMCwgMzUsIDIsIDI1MywgMTM2LCAzMCwgMzUsIDIsIDI1MywgMTM0LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTMyLCAzMCwgMzUsIDIsIDI1MywgNTAsIDMwLCAzNSwgMiwgMjUzLCA0OSwgMzAsIDM1LCAyLCAyNTMsIDQ4LCAzMCwgCisgICAgMzUsIDIsIDI1MywgNDcsIDMwLCAzNSwgMiwgMjUzLCA0NiwgMzAsIDM1LCAyLCAyNTMsIDQ1LCAzMCwgMzUsIDIsIDI1MywgCisgICAgNDMsIDMwLCAzNSwgMiwgMjUzLCA0MiwgMzAsIDM1LCAyLCAyNTMsIDQxLCAzMCwgMzUsIDIsIDI1MywgNDAsIDMwLCAzNSwgCisgICAgMiwgMjUzLCAzOSwgMzAsIDM1LCAyLCAyNTMsIDM4LCAzMCwgMzUsIDIsIDI1MywgMzYsIDMwLCAzNSwgMiwgMjUzLCAzNSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDMxLCAzMCwgMzUsIDIsIDI1MywgMzAsIDMwLCAzNSwgMiwgMjUzLCAyOCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDI3LCAzMCwgMzUsIDIsIDI1MywgMjYsIDMwLCAzNSwgMiwgMjUzLCAyNSwgMzAsIDM1LCAyLCAyNTMsIDI0LCAzMCwgCisgICAgMzUsIDIsIDI1MywgMjMsIDMwLCAzNSwgMiwgMjUzLCAyMiwgMzAsIDM1LCAyLCAyNTMsIDIxLCAzMCwgMzUsIDIsIDI1MywgCisgICAgMjAsIDMwLCAzNSwgMiwgMjUzLCAxOSwgMzAsIDM1LCAyLCAyNTMsIDE4LCAzMCwgMzUsIDIsIDI1MywgMTcsIDMwLCAzNSwgCisgICAgMiwgMjUzLCAxNiwgMzAsIDM1LCAyLCAyNTMsIDE1LCAzMCwgMzUsIDIsIDI1MywgMTQsIDMwLCAzNSwgMiwgMjUzLCAxMywgCisgICAgMzAsIDM1LCAyLCAyNTMsIDEyLCAzMCwgMzUsIDIsIDI1MywgMTEsIDMwLCAzNSwgMiwgMjUzLCAxMCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDksIDMwLCAzNSwgMiwgMjUzLCA4LCAzMCwgMzUsIDIsIDI1MywgNywgMzAsIDM1LCAyLCAyNTMsIDYsIDMwLCAzNSwgCisgICAgMiwgMjUzLCA1LCAzMCwgMzUsIDIsIDI1MywgNCwgMzAsIDM1LCAyLCAyNTMsIDMsIDMwLCAzNSwgMiwgMjUzLCAyLCAzMCwgCisgICAgMzUsIDIsIDI1MywgMSwgMzAsIDM1LCAyLCAyNTMsIDAsIDMwLCAzNSwgMiwgMjUyLCAyNTUsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAyNTQsIDMwLCAzNSwgMiwgMjUyLCAyNTMsIDMwLCAzNSwgMiwgMjUyLCAyNTIsIDMwLCAzNSwgMiwgMjUyLCAyNTEsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAyNTAsIDMwLCAzNSwgMiwgMjUyLCAyNDksIDMwLCAzNSwgMiwgMjUyLCAyNDgsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNDcsIDMwLCAzNSwgMiwgMjUyLCAyNDYsIDMwLCAzNSwgMiwgMjUyLCAyNDUsIDMwLCAzNSwgMiwgMjUyLCAyNDQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyNDMsIDMwLCAzNSwgMiwgMjUyLCAyNDIsIDMwLCAzNSwgMiwgMjUyLCAyNDEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNDAsIDMwLCAzNSwgMiwgMjUyLCAyMzksIDMwLCAzNSwgMiwgMjUyLCAyMzgsIDMwLCAzNSwgMiwgMjUyLCAyMzcsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMzYsIDMwLCAzNSwgMiwgMjUyLCAyMzUsIDMwLCAzNSwgMiwgMjUyLCAyMzQsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMzMsIDMwLCAzNSwgMiwgMjUyLCAyMzIsIDMwLCAzNSwgMiwgMjUyLCAyMzEsIDMwLCAzNSwgMiwgMjUyLCAyMzAsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMjksIDMwLCAzNSwgMiwgMjUyLCAyMjgsIDMwLCAzNSwgMiwgMjUyLCAyMjcsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMjYsIDMwLCAzNSwgMiwgMjUyLCAyMjUsIDMwLCAzNSwgMiwgMjUyLCAyMjQsIDMwLCAzNSwgMiwgMjUyLCAyMjMsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMjIsIDMwLCAzNSwgMiwgMjUyLCAyMjEsIDMwLCAzNSwgMiwgMjUyLCAyMjAsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMTksIDMwLCAzNSwgMiwgMjUyLCAyMTgsIDMwLCAzNSwgMiwgMjUyLCAyMTcsIDMwLCAzNSwgMiwgMjUyLCAyMTYsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMTUsIDMwLCAzNSwgMiwgMjUyLCAyMTQsIDMwLCAzNSwgMiwgMjUyLCAyMTMsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMTIsIDMwLCAzNSwgMiwgMjUyLCAyMTEsIDMwLCAzNSwgMiwgMjUyLCAyMTAsIDMwLCAzNSwgMiwgMjUyLCAyMDksIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMDgsIDMwLCAzNSwgMiwgMjUyLCAyMDcsIDMwLCAzNSwgMiwgMjUyLCAyMDYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMDUsIDMwLCAzNSwgMiwgMjUyLCAyMDQsIDMwLCAzNSwgMiwgMjUyLCAyMDMsIDMwLCAzNSwgMiwgMjUyLCAyMDIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMDEsIDMwLCAzNSwgMiwgMjUyLCAyMDAsIDMwLCAzNSwgMiwgMjUyLCAxOTksIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxOTgsIDMwLCAzNSwgMiwgMjUyLCAxOTcsIDMwLCAzNSwgMiwgMjUyLCAxOTYsIDMwLCAzNSwgMiwgMjUyLCAxOTUsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxOTQsIDMwLCAzNSwgMiwgMjUyLCAxOTMsIDMwLCAzNSwgMiwgMjUyLCAxOTIsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxOTEsIDMwLCAzNSwgMiwgMjUyLCAxOTAsIDMwLCAzNSwgMiwgMjUyLCAxODksIDMwLCAzNSwgMiwgMjUyLCAxODgsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxODcsIDMwLCAzNSwgMiwgMjUyLCAxODYsIDMwLCAzNSwgMiwgMjUyLCAxODUsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxODQsIDMwLCAzNSwgMiwgMjUyLCAxODMsIDMwLCAzNSwgMiwgMjUyLCAxODIsIDMwLCAzNSwgMiwgMjUyLCAxODEsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxODAsIDMwLCAzNSwgMiwgMjUyLCAxNzksIDMwLCAzNSwgMiwgMjUyLCAxNzgsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNzcsIDMwLCAzNSwgMiwgMjUyLCAxNzYsIDMwLCAzNSwgMiwgMjUyLCAxNzUsIDMwLCAzNSwgMiwgMjUyLCAxNzQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNzMsIDMwLCAzNSwgMiwgMjUyLCAxNzIsIDMwLCAzNSwgMiwgMjUyLCAxNzEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNzAsIDMwLCAzNSwgMiwgMjUyLCAxNjksIDMwLCAzNSwgMiwgMjUyLCAxNjgsIDYyLCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMTY3LCAyNTAsIDEwMywgMzAsIDM1LCAyLCAyNTIsIDE2NiwgMjQyLCAxNTMsIDMwLCAzNSwgMiwgMjUyLCAxNjUsIDcyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTY0LCAyMzgsIDUsIDMwLCAzNSwgMiwgMjUyLCAxNjMsIDIzNCwgMjQ3LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTYyLCAyMjcsIDI1MSwgMzAsIDM1LCAyLCAyNTIsIDE2MSwgMjI3LCAxMTgsIDMwLCAzNSwgMiwgMjUyLCAxNjAsIAorICAgIDE1NiwgMzAsIDM1LCAyLCAyNTIsIDE1OSwgMjI1LCAxODAsIDMwLCAzNSwgMiwgMjUyLCAxNTgsIDIyNSwgMTc5LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMTU3LCAyMjUsIDE3OCwgMzAsIDM1LCAyLCAyNTIsIDE1NiwgMjI1LCAxNzcsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAxNTUsIDIwMSwgMTQ3LCAzMCwgMzUsIDIsIDI1MiwgMTU0LCAyMDAsIDE5NSwgMzAsIDM1LCAyLCAyNTIsIDE1MywgMjAwLCAKKyAgICAxMjMsIDMwLCAzNSwgMiwgMjUyLCAxNTIsIDIxNywgODMsIDMwLCAzNSwgMiwgMjUyLCAxNTEsIDI1MiwgNCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDE1MCwgMjQ5LCA0NSwgMzAsIDM1LCAyLCAyNTIsIDE0OSwgMjQxLCAyMjIsIDMwLCAzNSwgMiwgMjUyLCAxNDgsIAorICAgIDIzOCwgMTMsIDMwLCAzNSwgMiwgMjUyLCAxNDcsIDIyNywgMjI3LCAzMCwgMzUsIDIsIDI1MiwgMTQ2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTQ1LCAzMCwgMzUsIDIsIDI1MiwgMTQ0LCAzMCwgMzUsIDIsIDI1MiwgMTQzLCAzMCwgMzUsIDIsIDI1MiwgMTQyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTQxLCAzMCwgMzUsIDIsIDI1MiwgMTQwLCAzMCwgMzUsIDIsIDI1MiwgMTM5LCAyNDIsIDE2MCwgCisgICAgNSwgNjIsIDI0MiwgMTYwLCA1LCA3MiwgMjQyLCAxNjAsIDUsIDcwLCAyNDIsIDE2MCwgNSwgNzQsIDI0MiwgMTYwLCA1LCAKKyAgICA2NiwgMjQyLCAxNjAsIDUsIDIyNywgMjQ4LCAyNDIsIDE2MCwgNSwgMjI3LCAxNjYsIDI0MiwgMTYwLCA1LCAxNjEsIDI0MiwgCisgICAgMTYwLCA1LCAyMjcsIDgsIDI0MiwgMTYwLCA1LCAyMjYsIDE2MywgMjQyLCAxNjAsIDUsIDIyNiwgODgsIDI0MiwgMTYwLCA1LCAKKyAgICAyMjYsIDE1LCAyNDIsIDE2MCwgNSwgMTk0LCAyNDIsIDE2MCwgNSwgMjI1LCA0MCwgMjQyLCAxNjAsIDUsIDIyNCwgMjEwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjI0LCAxMTAsIDI0MiwgMTYwLCA1LCAyMjQsIDQyLCAyNDIsIDE2MCwgNSwgMTc4LCAyNDIsIDE2MCwgCisgICAgNSwgMjIyLCA3NiwgMjQyLCAxNjAsIDUsIDIyMSwgMjExLCAyNDIsIDE2MCwgNSwgMjIxLCAxMzYsIDI0MiwgMTYwLCA1LCAKKyAgICAyMjEsIDQxLCAyNDIsIDE2MCwgNSwgMTg4LCAyNDIsIDE2MCwgNSwgMjIwLCAzNCwgMjQyLCAxNjAsIDUsIDIxOSwgMTUwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjE4LCAyNDEsIDI0MiwgMTYwLCA1LCAyMTgsIDEzMywgMjQyLCAxNjAsIDUsIDE3MiwgMjQyLCAxNjAsIAorICAgIDUsIDIxNiwgNzMsIDI0MiwgMTYwLCA1LCAyMTUsIDIwNCwgMjQyLCAxNjAsIDUsIDIxNSwgMTA2LCAyNDIsIDE2MCwgNSwgCisgICAgMjE0LCAyMjQsIDI0MiwgMTYwLCA1LCAyMTMsIDI1MiwgMjQyLCAxNjAsIDUsIDIxMywgMTkwLCAyNDIsIDE2MCwgNSwgMjEzLCAKKyAgICA4OCwgMjQyLCAxNjAsIDUsIDIxMywgMSwgMjQyLCAxNjAsIDUsIDIxMiwgMTc1LCAyNDIsIDE2MCwgNSwgMjEyLCA2NCwgCisgICAgMjQyLCAxNjAsIDUsIDIxMSwgMjAyLCAyNDIsIDE2MCwgNSwgMjA5LCAxODIsIDI0MiwgMTYwLCA1LCAyMDksIDI5LCAyNDIsIAorICAgIDE2MCwgNSwgMjA4LCAyNCwgMjQyLCAxNjAsIDUsIDIwNywgMzYsIDI0MiwgMTYwLCA1LCAyMDYsIDIwMSwgMjQyLCAxNjAsIAorICAgIDUsIDIwNiwgMTUsIDI0MiwgMTYwLCA1LCAxMzgsIDI0MiwgMTYwLCA1LCAyMDQsIDIxNSwgMjQyLCAxNjAsIDUsIDIwMSwgCisgICAgMTE0LCAyNDIsIDE2MCwgNSwgMjAxLCA2NCwgMjQyLCAxNjAsIDUsIDIwMSwgMzEsIDI0MiwgMTYwLCA1LCAyMDEsIDAsIAorICAgIDI0MiwgMTYwLCA1LCAyMDAsIDE4MSwgMjQyLCAxNjAsIDUsIDIwMCwgMTc1LCAyNDIsIDE2MCwgNSwgMTk5LCAxMTQsIDI0MiwgCisgICAgMTYwLCA1LCAxOTksIDE0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDI1MSwgMTQwLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDI0OCwgMjA3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNSwgMTQ3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDI0MiwgCisgICAgMjIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM0LCAxMzksIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjAxLCA3MiwgMjI4LCAKKyAgICAxMTksIDI1MCwgMjM4LCAxLCAxOTksIDkyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNCwgOTEsIDIyOCwgMTE5LCAyNTAsIAorICAgIDIzOCwgMSwgMjA2LCAxNDIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMTk5LCAyMzMsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjI3LCA1NywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMjUsIDgyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIyMiwgNDcsIAorICAgIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE4LCA4OSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTIsIDE5LCAyMjgsIDExOSwgCisgICAgMjUwLCAyMzgsIDEsIDI1MCwgMTA3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxNiwgNzMsIDIyOCwgMTE5LCAyNTAsIAorICAgIDIzOCwgMSwgMjEyLCA1NCwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTQsIDEwMSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyMTMsIDEyMywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTAsIDIxLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIwNiwgCisgICAgMjE1LCAyMjgsIDExOSwgMjUwLCAyMzgsIDIxMSwgMTkzLCA1NCwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTAyLCAyMjgsIAorICAgIDExOSwgMjUwLCAyMzgsIDQxLCAxMDUsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDE0NywgMjI4LCAxMTksIDI1MCwgMjM4LCAKKyAgICA0MSwgMjA2LCAxNjYsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDIwNCwgMTU5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAKKyAgICAxMTIsIDIzMywgODIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDExMiwgMjA2LCA1MCwgMjI4LCAxMTksIDI1MCwgMjM4LCAKKyAgICA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDIxNiwgMTc1LCAxLCAyNTEsIDE0MCwgMjE2LCAxNzUsIDEsIDI0OCwgMjA3LCAyMTYsIAorICAgIDE3NSwgMSwgMjM1LCAxNDcsIDIxNiwgMTc1LCAxLCAyNDIsIDIyLCAyMTYsIDE3NSwgMSwgMjM0LCAxMzksIDIxNiwgMTc1LCAKKyAgICAxLCAyMDEsIDcyLCAyMTYsIDE3NSwgMSwgMTk5LCA5MiwgMjE2LCAxNzUsIDEsIDIzNCwgOTEsIDIxNiwgMTc1LCAxLCAyMDYsIAorICAgIDE0MiwgMjE2LCAxNzUsIDEsIDE5OSwgMjMzLCAyMTYsIDE3NSwgMSwgMjI3LCA1NywgMjE2LCAxNzUsIDEsIDIyNSwgODIsIAorICAgIDIxNiwgMTc1LCAxLCAyMjIsIDQ3LCAyMTYsIDE3NSwgMSwgNDcsIDIxOCwgODksIDIxNiwgMTc1LCAxLCAyMTgsIDg5LCAKKyAgICAyMTYsIDE3NSwgMSwgMjEyLCAxOSwgMjE2LCAxNzUsIDEsIDI1MCwgMTA3LCAyMTYsIDE3NSwgMSwgMjE2LCA3MywgMjE2LCAKKyAgICAxNzUsIDEsIDIxMiwgNTQsIDIxNiwgMTc1LCAxLCAyMTQsIDEwMSwgMjE2LCAxNzUsIDEsIDIxMywgMTIzLCAyMTYsIDE3NSwgCisgICAgMSwgMjEwLCAyMSwgMjE2LCAxNzUsIDEsIDIwNiwgMjE1LCAyMTYsIDE3NSwgMjI1LCAyMywgMjM3LCAzOSwgMjE2LCAxNzUsIAorICAgIDIxMywgNDEsIDIzNywgMzksIDIxNiwgMTc1LCA0MSwgMTAyLCAyMTYsIDE3NSwgNDEsIDEwNSwgMjE2LCAxNzUsIDQxLCAKKyAgICAxNDcsIDIxNiwgMTc1LCA0MSwgMTQ5LCAyMTYsIDE3NSwgNDEsIDE2NCwgMjE2LCAxNzUsIDQxLCAyMDYsIDE2NiwgMjE2LCAKKyAgICAxNzUsIDQxLCAyMDQsIDE1OSwgMjIwLCAxNTMsIDEsIDQ3LCAyNTEsIDE0MCwgMjIwLCAxNTMsIDEsIDI1MSwgMTQwLCAyMjAsIAorICAgIDE1MywgMSwgNDcsIDI0OCwgMjA3LCAyMjAsIDE1MywgMSwgMjQ4LCAyMDcsIDIyMCwgMTUzLCAxLCAyMzUsIDE0NywgMjIwLCAKKyAgICAxNTMsIDEsIDI0MiwgMjIsIDIyMCwgMTUzLCAxLCA0NywgMjM0LCAxMzksIDIyMCwgMTUzLCAxLCAyMzQsIDEzOSwgMjIwLCAKKyAgICAxNTMsIDEsIDIwMSwgNzIsIDIyMCwgMTUzLCAxLCAxOTksIDkyLCAyMjAsIDE1MywgMSwgMjM0LCA5MSwgMjIwLCAxNTMsIDEsIAorICAgIDIwNiwgMTQyLCAyMjAsIDE1MywgMSwgNDcsIDE5OSwgMjMzLCAyMjAsIDE1MywgMSwgMTk5LCAyMzMsIDIyMCwgMTUzLCAxLCAKKyAgICA0NywgMjI3LCA1NywgMjIwLCAxNTMsIDEsIDIyNywgNTcsIDIyMCwgMTUzLCAxLCA0NywgMjI1LCA4MiwgMjIwLCAxNTMsIDEsIAorICAgIDIyNSwgODIsIDIyMCwgMTUzLCAxLCA0NywgMjIyLCA0NywgMjIwLCAxNTMsIDEsIDIyMiwgNDcsIDIyMCwgMTUzLCAxLCA0NywgCisgICAgMjE4LCA4OSwgMjIwLCAxNTMsIDEsIDIxOCwgODksIDIyMCwgMTUzLCAxLCAyMTIsIDE5LCAyMjAsIDE1MywgMSwgMjUwLCAKKyAgICAxMDcsIDIyMCwgMTUzLCAxLCAyMTYsIDczLCAyMjAsIDE1MywgMSwgMjEyLCA1NCwgMjIwLCAxNTMsIDEsIDIxNCwgMTAxLCAKKyAgICAyMjAsIDE1MywgMSwgMjEzLCAxMjMsIDIyMCwgMTUzLCAxLCA0NywgMjEwLCAyMSwgMjIwLCAxNTMsIDEsIDIxMCwgMjEsIAorICAgIDIyMCwgMTUzLCAxLCAyMDYsIDIxNSwgMjIwLCAxNTMsIDQxLCAxMDIsIDIyMCwgMTUzLCA0MSwgMTA1LCAyMjAsIDE1MywgCisgICAgNDEsIDE0NywgMjIwLCAxNTMsIDQxLCAxNDksIDIyMCwgMTUzLCAyNDIsIDIyMCwgNDEsIDE0OSwgMjIwLCAxNTMsIDQxLCAKKyAgICAxNjQsIDIyMCwgMTUzLCA0MSwgMjA2LCAxNjYsIDIyMCwgMTUzLCA0MSwgMjA0LCAxNTksIDIyMCwgMTUzLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCAyMzQsIDE1MiwgMSwgMjUxLCAxNDAsIDIzNCwgMTUyLCAxLCAyNDgsIDIwNywgMjM0LCAxNTIsIDEsIDIzNSwgCisgICAgMTQ3LCAyMzQsIDE1MiwgMSwgMjQyLCAyMSwgMjM0LCAxNTIsIDEsIDIzNCwgMTM5LCAyMzQsIDE1MiwgMSwgMjAxLCA3MiwgCisgICAgMjM0LCAxNTIsIDEsIDE5OSwgOTEsIDIzNCwgMTUyLCAxLCAyMzQsIDkxLCAyMzQsIDE1MiwgMSwgMjA2LCAxNDIsIDIzNCwgCisgICAgMTUyLCAxLCAxOTksIDIzMywgMjM0LCAxNTIsIDEsIDIyNywgNTcsIDIzNCwgMTUyLCAxLCAyMjUsIDgyLCAyMzQsIDE1MiwgCisgICAgMSwgMjIyLCA0NywgMjM0LCAxNTIsIDEsIDIxOCwgODksIDIzNCwgMTUyLCAxLCAyMTIsIDE5LCAyMzQsIDE1MiwgMSwgMjUwLCAKKyAgICAxMDYsIDIzNCwgMTUyLCAxLCAyMTYsIDczLCAyMzQsIDE1MiwgMSwgMjEyLCA1NCwgMjM0LCAxNTIsIDEsIDIxNCwgMTAxLCAKKyAgICAyMzQsIDE1MiwgMSwgMjEwLCAyMSwgMjM0LCAxNTIsIDEsIDIwNiwgMjE1LCAyMzQsIDE1MiwgNDEsIDEwMiwgMjM0LCAxNTIsIAorICAgIDQxLCAxNjQsIDIzNCwgMTUyLCA0MSwgMjA2LCAxNjYsIDIzNCwgMTUyLCA0MSwgMjA0LCAxNTksIDIzNCwgMTUyLCA0MSwgCisgICAgMTEyLCAyMzMsIDgyLCAyMTUsIDIxNSwgMSwgMjUxLCAxMzcsIDIxNSwgMjE1LCAxLCAyNDgsIDIxMCwgMjE1LCAyMTUsIDEsIAorICAgIDIzNiwgNjIsIDIxNSwgMjE1LCAxLCAyNDEsIDEzOCwgMjE1LCAyMTUsIDEsIDIzNCwgMTM5LCAyMTUsIDIxNSwgMSwgMjAxLCAKKyAgICA3OSwgMjE1LCAyMTUsIDEsIDE5OSwgMTA3LCAyMTUsIDIxNSwgMSwgMjM0LCA5MywgMjE1LCAyMTUsIDEsIDIwNiwgMTQ2LCAKKyAgICAyMTUsIDIxNSwgMSwgMTk5LCAyMzQsIDIxNSwgMjE1LCAxLCAyMjcsIDg2LCAyMTUsIDIxNSwgMSwgMjI1LCA4OCwgMjE1LCAKKyAgICAyMTUsIDEsIDIyMiwgNDcsIDIxNSwgMjE1LCAxLCAyMTgsIDg5LCAyMTUsIDIxNSwgMSwgMjEwLCAxNjEsIDIxNSwgMjE1LCAKKyAgICAxLCAyNTEsIDE3MSwgMjE1LCAyMTUsIDEsIDIxNiwgNzMsIDIxNSwgMjE1LCAxLCAyMTIsIDU1LCAyMTUsIDIxNSwgMSwgCisgICAgMjE0LCAxMDYsIDIxNSwgMjE1LCAxLCAyMTIsIDIzMCwgMjE1LCAyMTUsIDEsIDIxMCwgMjEsIDIxNSwgMjE1LCAxLCAyMDYsIAorICAgIDIyMSwgMjE1LCAyMTUsIDQxLCAxMDIsIDIxNSwgMjE1LCA0MSwgMjA2LCAxNjYsIDIxNSwgMjE1LCA0MSwgMjA0LCAxNTksIAorICAgIDIxNSwgMjE1LCA0MSwgMTEyLCAyMzMsIDgyLCAyMTUsIDIxNSwgNDEsIDEwNSwgMjE1LCAyMTUsIDQxLCAxNDcsIDIxNSwgCisgICAgMjE1LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDIyMywgMjU1LCAxLCA2MiwgMjIzLCAyNTUsIDEsIDI1MCwgMTAzLCAyMjMsIAorICAgIDI1NSwgMSwgMjM2LCAxNTYsIDIyMywgMjU1LCAxLCAyNDIsIDE1MywgMjIzLCAyNTUsIDEsIDcyLCAyMjMsIDI1NSwgMSwgCisgICAgMjAzLCAxNjgsIDIyMywgMjU1LCAxLCA3MCwgMjIzLCAyNTUsIDEsIDIwMCwgMTIzLCAyMjMsIDI1NSwgMSwgMjI3LCAxMTgsIAorICAgIDIyMywgMjU1LCAxLCAxNTYsIDIyMywgMjU1LCAxLCAyMjMsIDI0MywgMjIzLCAyNTUsIDEsIDIyMCwgMjE0LCAyMjMsIDI1NSwgCisgICAgMSwgNzQsIDIyMywgMjU1LCAxLCAxNDYsIDIyMywgMjU1LCAxLCAyMDgsIDE4MiwgMjIzLCAyNTUsIDEsIDIwNywgODMsIAorICAgIDIyMywgMjU1LCAxLCA2NiwgMjIzLCAyNTUsIDEsIDIzOCwgNSwgMjIzLCAyNTUsIDEsIDIxNCwgMTY3LCAyMjMsIDI1NSwgMSwgCisgICAgMjEyLCAxMjIsIDIyMywgMjU1LCAxLCAyMDUsIDAsIDIyMywgMjU1LCAxLCAyNTEsIDg1LCAyMjMsIDI1NSwgMSwgMjM4LCAKKyAgICAxNzksIDIyMywgMjU1LCAxLCAyMjQsIDIsIDIyMywgMjU1LCAxLCAyMTksIDIyLCAyMjMsIDI1NSwgMSwgMjQ3LCAyMjMsIAorICAgIDIyMywgMjU1LCAyMDUsIDk1LCA4MSwgMTMyLCAyMzQsIDY4LCAxLCA2MiwgMTMyLCAyMzQsIDY4LCAxLCA3MiwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCA3MCwgMTMyLCAyMzQsIDY4LCAxLCA3NCwgMTMyLCAyMzQsIDY4LCAxLCAxODMsIDEzMiwgMjM0LCA2OCwgCisgICAgMSwgMjAxLCAxMTQsIDEzMiwgMjM0LCA2OCwgMSwgMjQ5LCAxMzYsIDEzMiwgMjM0LCA2OCwgMSwgMjQ5LCAxMzUsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMTcyLCAxMzIsIDIzNCwgNjgsIDEsIDE3OCwgMTMyLCAyMzQsIDY4LCAxLCAxODgsIDEzMiwgMjM0LCAKKyAgICA2OCwgMSwgMjIwLCAxNjEsIDEzMiwgMjM0LCA2OCwgMSwgMjIwLCAzNCwgMTMyLCAyMzQsIDY4LCAxLCAyMjAsIDMzLCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDIxMywgMjUyLCAxMzIsIDIzNCwgNjgsIDEsIDIxMywgMjUxLCAxMzIsIDIzNCwgNjgsIDEsIDE5NCwgCisgICAgMTMyLCAyMzQsIDY4LCAxLCAyMjYsIDIwNywgMTMyLCAyMzQsIDY4LCAxLCAyMzQsIDg0LCAxMzIsIDIzNCwgNjgsIDEsIAorICAgIDIxMiwgNjQsIDEzMiwgMjM0LCA2OCwgMSwgMjEyLCA2MywgMTMyLCAyMzQsIDY4LCAxLCAyMTEsIDIwMiwgMTMyLCAyMzQsIAorICAgIDY4LCAxLCAxNjEsIDEzMiwgMjM0LCA2OCwgMSwgMjE0LCAxNTksIDEzMiwgMjM0LCA2OCwgMSwgMjA3LCAzNiwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAyMDcsIDM1LCAxMzIsIDIzNCwgNjgsIDEsIDIwNiwgMjAxLCAxMzIsIDIzNCwgNjgsIDEsIDIwNiwgCisgICAgMjAwLCAxMzIsIDIzNCwgNjgsIDEsIDEzOCwgMTMyLCAyMzQsIDY4LCAxLCAyNDIsIDU4LCAxMzIsIDIzNCwgNjgsIDE2LCAKKyAgICAyMDIsIDIyOCwgMTMyLCAyMzQsIDY4LCAxNiwgMjAyLCAyMjcsIDEzMiwgMjQyLCAxOTEsIDEsIDYyLCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCA3MiwgMTMyLCAyNDIsIDE5MSwgMSwgNzAsIDEzMiwgMjQyLCAxOTEsIDEsIDc0LCAxMzIsIDI0MiwgMTkxLCAxLCAKKyAgICAxODMsIDEzMiwgMjQyLCAxOTEsIDEsIDIwMSwgMTE0LCAxMzIsIDI0MiwgMTkxLCAxLCAyNDksIDEzNiwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgMTcyLCAxMzIsIDI0MiwgMTkxLCAxLCAxNzgsIDEzMiwgMjQyLCAxOTEsIDEsIDE4OCwgMTMyLCAyNDIsIDE5MSwgCisgICAgMSwgMjIwLCAzNCwgMTMyLCAyNDIsIDE5MSwgMSwgMjEzLCAyNTIsIDEzMiwgMjQyLCAxOTEsIDEsIDE5NCwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgMjI2LCAyMDcsIDEzMiwgMjQyLCAxOTEsIDEsIDIzNCwgODQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMiwgNjQsIAorICAgIDEzMiwgMjQyLCAxOTEsIDEsIDI1MCwgMjM0LCAyMTIsIDY0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTEsIDIwMiwgMTMyLCAKKyAgICAyNDIsIDE5MSwgMSwgMTYxLCAxMzIsIDI0MiwgMTkxLCAxLCAyMTQsIDE1OSwgMTMyLCAyNDIsIDE5MSwgMSwgMjA3LCAzNiwgCisgICAgMTMyLCAyNDIsIDE5MSwgMSwgMjA2LCAyMDEsIDEzMiwgMjQyLCAxOTEsIDEsIDEzOCwgMTMyLCAyNDIsIDE5MSwgMSwgMjQyLCAKKyAgICA1OCwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzOCwgMjAwLCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIAorICAgIDExMiwgMjM0LCAyMTMsIDEzMiwgMjQyLCAxOTEsIDIyNCwgOTcsIDIxMywgNywgMTMyLCAyNDIsIDE5MSwgMjI0LCA5NywgCisgICAgMjI4LCAxMjQsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMDIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMDUsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAxNDcsIDEzMiwgMjQyLCAxOTEsIDQxLCAxNDksIDEzMiwgMjQyLCAxOTEsIDQxLCAxNjQsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAxODcsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzNSwgMTMyLCAyNDIsIDE5MSwgNDEsIDE5MiwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIxOSwgMTEzLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDQsIAorICAgIDE1OSwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgNjcsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIzNSwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNywgMTA0LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCA5MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgCisgICAgMTI5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTEyLCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTIwLCAyMzMsIDgyLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMTI2LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM2LCAyMjksIDIzMywgODIsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCAxMDYsIDIzMywgCisgICAgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIwNiwgCisgICAgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIyOSwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgCisgICAgMTM2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAKKyAgICAyMTksIDExNCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgMTY3LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMjA0LCAxNjAsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDY4LCAyMDYsIDUwLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM2LCAyMzYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgMTMyLCAKKyAgICAyNDIsIDE5MSwgNDEsIDIwOSwgOTMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzMCwgMjA2LCA1MCwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjIzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMDksIDIwNiwgCisgICAgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIAorICAgIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIDIzMywgODMsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDIxMCwgMTM2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIDIzMywgODMsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDExNCwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgMjM2LCAyMTksIDExMiwgMjA0LCAxNjcsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAxMjAsIDIwNCwgMTY2LCAxMzIsIAorICAgIDI0MiwgMTkxLCAyMzYsIDIxOSwgMTI2LCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzNiwgMjI5LCAKKyAgICAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzNywgNjEsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIAorICAgIDIxOSwgMjA5LCAxMDYsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjEwLCAxMzYsIDIwNCwgMTY2LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM4LCAyMzIsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgCisgICAgMjE5LCAxMTQsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjA2LCAxNjcsIDIwNCwgMTY2LCAyMjYsIAorICAgIDE5NCwgMSwgNjIsIDIyNiwgMTk0LCAyMiwgMiwgNzAsIDIyNiwgMTk0LCAyMiwgMiwgNjYsIDIyNiwgMTk0LCAyMiwgMiwgCisgICAgMTA5LCAxNDYsIDIyNiwgMTk0LCAyMiwgMiwgNzIsIDIyNiwgMTk0LCAyMiwgMiwgNzQsIDIyNiwgMTk0LCAyMiwgMjI1LCAyLCAKKyAgICA4MSwgMjI2LCAxOTQsIDIsIDUzLCAyMTMsIDI3LCA1NywgMjI2LCAxOTQsIDIsIDI1MSwgMzMsIDIyNiwgMTk0LCAyLCAyMDIsIAorICAgIDIwMywgMjI2LCAxOTQsIDEsIDE2MSwgMjI2LCAxOTQsIDEsIDIyNiwgMjA3LCAyMjYsIDE5NCwgMSwgMjM2LCA4OSwgMjI2LCAKKyAgICAxOTQsIDEsIDIzNSwgMTk5LCAyMjYsIDE5NCwgMSwgMjQ3LCAxOTAsIDIyNiwgMTk0LCAxLCAyNDcsIDM3LCAyMjYsIDE5NCwgCisgICAgMSwgMjI3LCAyNDgsIDIyNiwgMTk0LCAxLCAyMTgsIDYwLCAyMjYsIDE5NCwgMSwgMjA0LCAyNTMsIDIyNiwgMTk0LCAxLCAKKyAgICAyMDQsIDI0MSwgMjI2LCAxOTQsIDEsIDI0MSwgMjIwLCAyMjYsIDE5NCwgMSwgMjQxLCAyMDQsIDIyNiwgMTk0LCAxLCAyMTksIAorICAgIDIxLCAyMjYsIDE5NCwgMSwgMjA3LCAzNiwgMjI2LCAxOTQsIDEsIDIwNiwgMTIyLCAyMjYsIDE5NCwgMSwgMjQyLCA1OCwgCisgICAgMjI2LCAxOTQsIDEsIDI0MSwgMTAwLCAyMjYsIDE5NCwgMSwgMTg4LCAyMjYsIDE5NCwgMSwgMTcyLCAyMjYsIDE5NCwgMSwgCisgICAgMjE1LCAyNDUsIDIyNiwgMTk0LCAxLCAyNDksIDEzNiwgMjI2LCAxOTQsIDEsIDI0OCwgMjAwLCAyMjYsIDE5NCwgMSwgMTc4LCAKKyAgICAyMjYsIDE5NCwgMSwgMTgzLCAyMjYsIDE5NCwgMSwgMjEzLCAyNTIsIDIyNiwgMTk0LCAxLCAxOTQsIDIyNiwgMTk0LCAxLCAKKyAgICAyMDMsIDkwLCAyMjYsIDE5NCwgMSwgMjEwLCAxMTQsIDIyNiwgMTk0LCAxLCAyMDgsIDE3OSwgMjI2LCAxOTQsIDEsIDIxMiwgCisgICAgNjQsIDIyNiwgMTk0LCAxLCAxOTksIDExNCwgMjI2LCAxOTQsIDEsIDE0NCwgMjI2LCAxOTQsIDEsIDIyNiwgMTA5LCAyMjYsIAorICAgIDE5NCwgMSwgMjA0LCAyMjEsIDIyNiwgMTk0LCAyLCAyNDksIDc3LCA1NiwgMjI2LCAxOTQsIDIsIDI0NywgMTA3LCAyMjYsIAorICAgIDE5NCwgMiwgNzMsIDU3LCAyMjYsIDE5NCwgMjAyLCAyMDgsIDIyNiwgMTk0LCAxNywgMTAyLCAyMjYsIDE5NCwgMTcsIDEwNSwgCisgICAgMjI2LCAxOTQsIDE3LCAxNDcsIDIyNiwgMTk0LCAxNywgMTQ5LCAyMjYsIDE5NCwgNDEsIDIwNiwgMTY2LCAyMjYsIDE5NCwgCisgICAgNDEsIDIwNCwgMTU5LCAyMjYsIDE5NCwgNDEsIDExMiwgMjMzLCA4MiwgMjI2LCAxOTQsIDQxLCAxMTIsIDIwNiwgNTAsIAorICAgIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQwLCAxODIsIDIyNiwgMTk0LCAyMTQsIDIxMiwgNCwgMjQ2LCAxNTUsIDIyNiwgMTk0LCAKKyAgICAyMTQsIDIxMiwgMjQ2LCAxNTUsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQyLCAyNDQsIDE0OCwgMjI2LCAxOTQsIDIxNCwgCisgICAgMjEyLCAyMjIsIDE3NCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyMjQsIDY0LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDI0MiwgMTAsIAorICAgIDIyNiwgMTk0LCAyMTQsIDIxMiwgNTMsIDI0MiwgMTAsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjI0LCAxNzAsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNCwgMTM5LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjUsIDgyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzQsIDkxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjIsIDQ3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTQsIDEwMSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjAxLCA3MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjEwLCAyMSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjEzLCAxMjMsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDI0OCwgMjA3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDIxNSwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjExLCAyNTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNywgNTcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxOCwgODksIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNiwgMTg5LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTIsIDU0LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMTIsIDE5LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzcsIDE0NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjUxLCAxNDIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDI1MCwgMTA2LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDEsIDk3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzUsIDE0NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjQyLCAyMiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM1LCAxODcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMTQyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAxOTksIDkxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDEsIDk0LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAxOTksIDIzMywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAxMDgsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgODcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDQxLCAxMDIsIDQwLCAyMDgsIDI1NCwgCisgICAgMjUwLCAyNDksIDQxLCAyMzcsIDEwNCwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMTQ1LCAyMjgsIDk5LCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjM0LCAxMTUsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjUsIDkxLCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjM0LCAyMjQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjIsIDYxLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjE0LCAKKyAgICAxNTIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDEsIDcyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDIsIDQwLCAKKyAgICAxNTcsIDI1MCwgMjQ5LCAxLCAyMTMsIDE1NCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0OCwgMjQwLCA0MCwgMTU3LCAyNTAsIAorICAgIDI0OSwgMSwgMjA2LCAxODMsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMywgNDAsIDE1NywgMjUwLCAyNDksIDEsIAorICAgIDIyNywgODYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTgsIDIyNywgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyNiwgMjAzLCAKKyAgICA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjEyLCA1NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAxLCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjM3LCAxMzQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNTEsIDE0MiwgNDAsIDE1NywgMjUwLCAyNDksIAorICAgIDEsIDI1MSwgMTcxLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQyLCA1MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzNiwgNiwgCisgICAgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0MiwgMjksIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzUsIDE5NCwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDEsIDIwNywgOSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDE5OSwgMTA1LCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjA2LCAxMTQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDAsIDQ2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjA2LCAKKyAgICAxMDIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAxOTksIDEwOCwgNDAsIDE1NywgMjUwLCAyNDksIDQxLCAxMDIsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCA0MSwgMjA2LCAxNjYsIDQwLCAxNTcsIDI1MCwgMjQ5LCA0MSwgMjA0LCAxNTksIDIyMiwgMTczLCAxLCAKKyAgICAyNTEsIDE0MCwgMjIyLCAxNzMsIDEsIDI0OCwgMjA3LCAyMjIsIDE3MywgMSwgMjQ4LCAxOTQsIDIyMiwgMTczLCAxLCAyMzUsIAorICAgIDE0NywgMjIyLCAxNzMsIDEsIDIzNSwgMTcyLCAyMjIsIDE3MywgMSwgMjQyLCAyMiwgMjIyLCAxNzMsIDEsIDIzNCwgMTM5LCAKKyAgICAyMjIsIDE3MywgMSwgMjAxLCA3MiwgMjIyLCAxNzMsIDIsIDIwNCwgMzYsIDIyMiwgMTczLCAxLCAxOTksIDkyLCAyMjIsIAorICAgIDE3MywgMSwgMTk5LCA3MCwgMjIyLCAxNzMsIDEsIDIyNywgMjI5LCAyMjIsIDE3MywgMSwgMjI3LCAyMTEsIDIyMiwgMTczLCAKKyAgICAxLCAyMzQsIDkxLCAyMjIsIDE3MywgMSwgMjA2LCAxNDIsIDIyMiwgMTczLCAxLCAxOTksIDIzMywgMjIyLCAxNzMsIDEsIAorICAgIDIyNywgNTcsIDIyMiwgMTczLCAxLCAyMDAsIDE3OCwgMjIyLCAxNzMsIDEsIDIyNiwgMTk2LCAyMjIsIDE3MywgMSwgMjI1LCAKKyAgICA4MiwgMjIyLCAxNzMsIDEsIDI0MSwgOTMsIDIyMiwgMTczLCAxLCAyMDYsIDExMywgMjIyLCAxNzMsIDEsIDIyMiwgNDcsIAorICAgIDIyMiwgMTczLCAxLCAyMTgsIDg5LCAyMjIsIDE3MywgMSwgMjEyLCAxOSwgMjIyLCAxNzMsIDEsIDI1MCwgMTA3LCAyMjIsIAorICAgIDE3MywgMSwgMjUyLCA5MSwgMjIyLCAxNzMsIDEsIDIxNiwgNzMsIDIyMiwgMTczLCAxLCAyMzcsIDE0NywgMjIyLCAxNzMsIAorICAgIDEsIDIxMiwgNTQsIDIyMiwgMTczLCAxLCAyMTQsIDEwMSwgMjIyLCAxNzMsIDEsIDIwMCwgMTU2LCAyMjIsIDE3MywgMSwgCisgICAgMjE0LCAxMjgsIDIyMiwgMTczLCAxLCAyMTMsIDEyMywgMjIyLCAxNzMsIDEsIDIxMCwgMjEsIDIyMiwgMTczLCAxLCAyMDgsIAorICAgIDE0OCwgMjIyLCAxNzMsIDEsIDIwNiwgMjE1LCAyMjIsIDE3MywgMjUyLCAzLCAxMzQsIDU2LCAyMjIsIDE3MywgMjUyLCAzLCAKKyAgICAxMzQsIDU3LCAyMjIsIDE3MywgNDEsIDEwMiwgMjIyLCAxNzMsIDQxLCAxNjQsIDIyMiwgMTczLCA0MSwgMjA2LCAxNjYsIAorICAgIDIyMiwgMTczLCA0MSwgMjA0LCAxNTksIDIyMiwgMTczLCA0MSwgMTEyLCAyMzMsIDgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIAorICAgIDIwOCwgMTA5LCAyMjIsIDE3MywgMjE0LCAyMTIsIDIzNywgMzksIDIyMiwgMTczLCAyMTQsIDIxMiwgNTMsIDczLCAyMDEsIAorICAgIDUsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIDczLCAyMDEsIDUsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAKKyAgICAyMTIsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIDEyMCwgMjQwLCAxODAsIDIyMiwgMTczLCAyMTQsIDIxMiwgCisgICAgMjI0LCAxNzcsIDIzNywgOTMsIDI1MCwgMTE5LCAxLCA2MiwgMjUwLCAxMTksIDEsIDI1MiwgMTM4LCAyNTAsIDExOSwgMSwgCisgICAgMjUxLCAzMSwgMjUwLCAxMTksIDEsIDI1MiwgOTcsIDI1MCwgMTE5LCAxLCAyNTEsIDg1LCAyNTAsIDExOSwgMSwgMjUyLCAKKyAgICA5OCwgMjUwLCAxMTksIDEsIDI1MSwgMjIxLCAyNTAsIDExOSwgMSwgMjUxLCAyMTcsIDI1MCwgMTE5LCAxLCA3MiwgMjUwLCAKKyAgICAxMTksIDEsIDIzOCwgMjU1LCAyNTAsIDExOSwgMSwgNzQsIDI1MCwgMTE5LCAxLCAyMTcsIDYzLCAyNTAsIDExOSwgMSwgNzAsIAorICAgIDI1MCwgMTE5LCAxLCAyMjgsIDE1MSwgMjUwLCAxMTksIDEsIDY2LCAyNTAsIDExOSwgMSwgMjAzLCAxODIsIDI1MCwgMTE5LCAKKyAgICAxLCAyMjcsIDgsIDI1MCwgMTE5LCAxLCAyMDAsIDE3NSwgMjUwLCAxMTksIDEsIDIwMCwgMTM3LCAyNTAsIDExOSwgMSwgCisgICAgMjAwLCAxNDcsIDI1MCwgMTE5LCAxLCAyMzYsIDE1LCAyNTAsIDExOSwgMSwgMjM1LCAyMzAsIDI1MCwgMTE5LCAxLCAyMzUsIAorICAgIDE4NSwgMjUwLCAxMTksIDEsIDI0NywgNzYsIDI1MCwgMTE5LCAxLCAyMjcsIDIyNywgMjUwLCAxMTksIDEsIDIwNiwgMjAxLCAKKyAgICAyNTAsIDExOSwgMSwgMjA2LCAxMDYsIDI1MCwgMTE5LCAxLCAyNDEsIDE3NSwgMjUwLCAxMTksIDEsIDI0MSwgOTEsIDI1MCwgCisgICAgMTE5LCAxLCAyMDQsIDI0OCwgMjUwLCAxMTksIDEsIDIxNiwgNzMsIDI1MCwgMTE5LCAxLCAyMzcsIDE0NywgMjUwLCAxMTksIAorICAgIDEsIDI0OSwgOCwgMjUwLCAxMTksIDEsIDI0OCwgMTk2LCAyNTAsIDExOSwgMSwgMjE5LCAyNDAsIDI1MCwgMTE5LCAxLCAKKyAgICAyMTksIDE1NiwgMjUwLCAxMTksIDEsIDIxOSwgMTU3LCAyNTAsIDExOSwgMSwgMjIwLCAzNCwgMjUwLCAxMTksIDEsIDIxOCwgCisgICAgNTAsIDI1MCwgMTE5LCAxLCAyMTksIDE2LCAyNTAsIDExOSwgMSwgMjIyLCA3NiwgMjUwLCAxMTksIDEsIDIzNCwgMSwgMjUwLCAKKyAgICAxMTksIDEsIDE5OSwgMTY0LCAyNTAsIDExOSwgMSwgMjAwLCA1MSwgMjUwLCAxMTksIDEsIDIwMywgNTksIDI1MCwgMTE5LCAKKyAgICAxLCAyMTMsIDE5MCwgMjUwLCAxMTksIDEsIDIyNSwgNDAsIDI1MCwgMTE5LCAxLCAyMTEsIDIwMiwgMjUwLCAxMTksIDEsIAorICAgIDE5OSwgODksIDI1MCwgMTE5LCAxLCAyMTAsIDY1LCAyNTAsIDExOSwgMSwgMTk5LCA2OCwgMjUwLCAxMTksIDEsIDIwOSwgCisgICAgMTg5LCAyNTAsIDExOSwgMSwgMjA4LCAxNDksIDI1MCwgMTE5LCAxLCAyMzQsIDEzOSwgMjUwLCAxMTksIDI1MiwgMywgODEsIAorICAgIDIwNSwgMjI2LCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAyMTQsIDIxMSwgNCwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgCisgICAgMjE0LCAyMTEsIDIyNSwgNzEsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCAyMjUsIDcxLCAxMTIsIDczLCAKKyAgICAxMTksIDEyMCwgMTkwLCAyMTQsIDIxMSwgMjI1LCA3MSwgMTIwLCAyMTMsIDI0LCAxMTksIDExMiwgMjEzLCAyNywgMjE0LCAKKyAgICAyMTEsIDIyNSwgNzEsIDExMiwgMjEzLCAyNywgMTE5LCAxMjAsIDIxMywgMjQsIDIxNCwgMjExLCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgMSwgMjUxLCAxNDAsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNDgsIDIwNywgMjI4LCA3NywgMjE2LCAxMDksIDEsIAorICAgIDIzNSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjQyLCAyMiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIzNCwgMTM5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjAxLCA3MiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDE5OSwgOTIsIDIyOCwgNzcsIAorICAgIDIxNiwgMTA5LCAxLCAyMzQsIDkxLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjA2LCAxNDIsIDIyOCwgNzcsIDIxNiwgMTA5LCAKKyAgICAxLCAxOTksIDIzMywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyNywgNTcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjUsIAorICAgIDgyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjIyLCA0NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxOCwgODksIDIyOCwgCisgICAgNzcsIDIxNiwgMTA5LCAxLCAyMTIsIDE5LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjUwLCAxMDcsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCAxLCAyMTYsIDczLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEyLCA1NCwgMjI4LCA3NywgMjE2LCAxMDksIDEsIAorICAgIDIxNCwgMTAxLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEzLCAxMjMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTAsIDIxLCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjA2LCAyMTUsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTAyLCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgNDEsIDEwNSwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTQ5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDIwNiwgMTY2LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDIwNCwgMTU5LCAyMjgsIAorICAgIDc3LCAyMTYsIDEwOSwgNDEsIDExMiwgMjMzLCA4MiwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxMTIsIDIwNiwgNTAsIDIyOCwgCisgICAgNzcsIDIxNiwgMTkxLCAxLCAyNTEsIDE0MCwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDI0OCwgMjA3LCAyMjgsIDc3LCAyMTYsIAorICAgIDE5MSwgMSwgMjM1LCAxNDcsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyNDIsIDIyLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgCisgICAgMjM0LCAxMzksIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMDEsIDcxLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMTk5LCA5MiwgCisgICAgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIzNCwgOTEsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMDYsIDE0MiwgMjI4LCA3NywgCisgICAgMjE2LCAxOTEsIDEsIDE5OSwgMjMzLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjI3LCA1NywgMjI4LCA3NywgMjE2LCAxOTEsIAorICAgIDEsIDIyNSwgODIsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMjIsIDQ2LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjE4LCA4OSwgCisgICAgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxMiwgMTksIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTYsIDczLCAyMjgsIDc3LCAKKyAgICAyMTYsIDE5MSwgMSwgMjEyLCA1NCwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxMCwgMjEsIDIyOCwgNzcsIDIxNiwgMTkxLCAKKyAgICAxLCAyMDYsIDIxNSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMDIsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTA1LCAyMjgsIAorICAgIDc3LCAyMTYsIDE5MSwgNDEsIDE0NywgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxNDksIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgCisgICAgMjA2LCAxNjYsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMjA0LCAxNTksIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDExMiwgMjA2LCA1MCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNTEsIAorICAgIDE0MCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNDgsIDIwNywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMzUsIDE0NywgCisgICAgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNDIsIDIyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIzNCwgMTM5LCAyMTQsIAorICAgIDIzNiwgMjE2LCAxOTEsIDEsIDIwMSwgNzEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMTk5LCA5MiwgMjE0LCAyMzYsIDIxNiwgCisgICAgMTkxLCAxLCAyMzQsIDkxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDE5OSwgMjMzLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIAorICAgIDIyNywgNTcsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjI1LCA4MiwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMjIsIDQ2LCAKKyAgICAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxOCwgODksIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjEyLCAxOSwgMjE0LCAyMzYsIAorICAgIDIxNiwgMTkxLCAxLCAyMTYsIDczLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxMiwgNTQsIDIxNCwgMjM2LCAyMTYsIDE5MSwgCisgICAgMSwgMjEwLCAyMSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMDYsIDIxNSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMTEsIAorICAgIDE5MywgODEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMjA0LCAxODUsIDIxMSwgMTkzLCA4MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAKKyAgICAyMzYsIDIyOSwgMTkwLCAzLCAyNDIsIDIzNCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMzYsIDIyOSwgMTkwLCAzLCAyNDAsIAorICAgIDE4MiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTAyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMDUsIDIxNCwgMjM2LCAKKyAgICAyMTYsIDE5MSwgNDEsIDE0NywgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTQ5LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAKKyAgICAyMDYsIDE2NiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMjA0LCAxNTksIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCA2MiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCA2MiwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCA3MCwgNDAsIDIwNCwgCisgICAgMTg5LCAxLCAyMDAsIDM5LCA3MCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCA3MiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIAorICAgIDIzLCA3NCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDEyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyMTcsIDEyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTIsIDg5LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MiwgODksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMjAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMjAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMTUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMTUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMTksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxMiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MCwgMTEyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjAyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjAyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjEzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIxNywgMTE5LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIxNywgMTE5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMTUxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMTUxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTkzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTkwLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgODUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMTAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNTcsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNTcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCA3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDE2NSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIwOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDEzMywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMTcsIDU0LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzMiwgMjMzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOSwgNywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzksIDcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAKKyAgICAxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMjgsIDM3LCAKKyAgICA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIyOCwgMzcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjE3LCAzNSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMTcsIDM1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMjUzLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMjUzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjA4LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTg4LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjA2LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTgxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTgxLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgOTQsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCA5NCwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDE1NSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDE1NSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIwMywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIwMywgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDExLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI0OSwgNjEsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDYyLCA0MCwgMTUyLCA2LCAxLCAyNTIsIDEzOCwgNDAsIDE1MiwgNiwgMSwgMjM5LCA5LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyNTEsIDk2LCA0MCwgMTUyLCA2LCAxLCAyMzksIDcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTc2LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMzksIDQsIDQwLCAxNTIsIDYsIDEsIDIzOSwgMywgNDAsIDE1MiwgNiwgMSwgMjUxLCA3OSwgNDAsIDE1MiwgNiwgCisgICAgMSwgNzIsIDQwLCAxNTIsIDYsIDEsIDI0NiwgMTExLCA3MiwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNTUsIDQwLCAxNTIsIDYsIAorICAgIDEsIDIzOCwgMjQ4LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI0NywgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNDQsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOCwgMjQxLCA0MCwgMTUyLCA2LCAxLCA3MCwgNDAsIDE1MiwgNiwgMSwgMjI4LCAxNTEsIDQwLCAxNTIsIDYsIAorICAgIDEsIDIzOCwgMjE5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDIxNiwgNDAsIDE1MiwgNiwgMSwgMjUxLCAxNTksIDQwLCAxNTIsIAorICAgIDYsIDEsIDIwMywgMjM2LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDIwOSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxOTIsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDIzOCwgMTkwLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE3OSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNDMsIAorICAgIDQwLCAxNTIsIDYsIDEsIDc0LCA0MCwgMTUyLCA2LCAxLCAyMTcsIDYzLCA0MCwgMTUyLCA2LCAxLCAyMTksIDEyMSwgMjE3LCAKKyAgICAxMjEsIDQwLCAxNTIsIDYsIDEsIDIxMiwgMTcxLCAyMTcsIDEyMSwgNDAsIDE1MiwgNiwgMSwgMjE3LCAxMjAsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOCwgMTMzLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE4NCwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMTUsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDIwOSwgMjUwLCAyMzgsIDExNSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMDQsIDQwLCAxNTIsIDYsIDEsIAorICAgIDIzOCwgODMsIDQwLCAxNTIsIDYsIDEsIDIzOCwgODEsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTU3LCA0MCwgMTUyLCA2LCAxLCAKKyAgICAyMzgsIDcwLCA0MCwgMTUyLCA2LCAxLCAyMzksIDUsIDQwLCAxNTIsIDYsIDEsIDY2LCA0MCwgMTUyLCA2LCAxLCAyMDMsIAorICAgIDE4MiwgNDAsIDE1MiwgNiwgMSwgMjE5LCAxMjEsIDIwNCwgMzEsIDQwLCAxNTIsIDYsIDEsIDIxMiwgMTcxLCAyMDQsIDMxLCAKKyAgICA0MCwgMTUyLCA2LCAxLCAyMzgsIDU3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDEyLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDcsIAorICAgIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTU2LCA1NCwgNDAsIDE1MiwgNiwgMSwgMjAzLCAxOTcsIDQwLCAxNTIsIDQsIDEsIDYyLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyNTIsIDEzOCwgNDAsIDE1MiwgNCwgMSwgMjM5LCA5LCA0MCwgMTUyLCA0LCAxLCAyNTEsIDk2LCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTc2LCA0MCwgMTUyLCA0LCAxLCAyMzksIDQsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgMywgNDAsIDE1MiwgNCwgMSwgMjUxLCA3OSwgNDAsIDE1MiwgNCwgMSwgNzIsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDI0NiwgMTExLCA3MiwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNTUsIDQwLCAxNTIsIDQsIDEsIDIzOCwgCisgICAgMjQ4LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI0NywgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNDQsIDQwLCAxNTIsIDQsIDEsIAorICAgIDIzOCwgMjQxLCA0MCwgMTUyLCA0LCAxLCA3MCwgNDAsIDE1MiwgNCwgMSwgMjI4LCAxNTEsIDQwLCAxNTIsIDQsIDEsIDIzOCwgCisgICAgMjE5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDIxNiwgNDAsIDE1MiwgNCwgMSwgMjUxLCAxNTksIDQwLCAxNTIsIDQsIDEsIAorICAgIDIwMywgMjM2LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDIwOSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxOTIsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIzOCwgMTkwLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE3OSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNDMsIDQwLCAxNTIsIAorICAgIDQsIDEsIDc0LCA0MCwgMTUyLCA0LCAxLCAyMTcsIDYzLCA0MCwgMTUyLCA0LCAxLCAyMTksIDEyMSwgMjE3LCAxMjEsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDIxMiwgMTcxLCAyMTcsIDEyMSwgNDAsIDE1MiwgNCwgMSwgMjE3LCAxMjAsIDQwLCAxNTIsIDQsIDEsIAorICAgIDIzOCwgMTMzLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE4NCwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMTUsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIwOSwgMjUwLCAyMzgsIDExNSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMDQsIDQwLCAxNTIsIDQsIDEsIDIzOCwgODMsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOCwgODEsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTU3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDcwLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDUsIDQwLCAxNTIsIDQsIDEsIDY2LCA0MCwgMTUyLCA0LCAxLCAyMDMsIDE4MiwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjE5LCAxMjEsIDIwNCwgMzEsIDQwLCAxNTIsIDQsIDEsIDIxMiwgMTcxLCAyMDQsIDMxLCA0MCwgMTUyLCAKKyAgICA0LCAxLCAyMzgsIDU3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDEyLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDcsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIzOCwgMTU2LCA1NCwgNDAsIDE1MiwgNCwgMSwgMjAzLCAxOTcsIDQwLCAxNTIsIDQxLCAxMDIsIDQwLCAxNTIsIDQxLCAKKyAgICAxNjQsIDQwLCAxNTIsIDQxLCAyMDYsIDE2NiwgNDAsIDE1MiwgNDEsIDIzNywgMTA0LCA0MCwgMTUyLCA0MSwgMTEyLCAyMzMsIAorICAgIDgyLCA0MCwgMTUyLCA0MSwgMTEyLCAyMDYsIDUwLCAyMTIsIDE1OSwgMTcsIDEwMiwgMjEyLCAxNTksIDE3LCAxMDUsIDIxMiwgCisgICAgMTU5LCAxNywgMTQ3LCAyMTIsIDE1OSwgMTcsIDE0OSwgMjEyLCAxNTksIDE3LCAxNjQsIDIxMiwgMTU5LCAxNywgMTg3LCAKKyAgICAyMTIsIDE1OSwgMTcsIDIxMCwgMTM1LCAyMTIsIDE1OSwgMTcsIDE5MiwgMjEyLCAxNTksIDE3LCAyMTksIDExMywgMjEyLCAKKyAgICAxNTksIDQxLCAyMDYsIDE2NiwgMjEyLCAxNTksIDQxLCAyMDQsIDE1OSwgMjEyLCAxNTksIDQxLCAyMDYsIDY3LCAyMTIsIAorICAgIDE1OSwgNDEsIDIzNiwgMjM1LCAyMTIsIDE1OSwgNDEsIDIzNywgMTA0LCAyMTIsIDE1OSwgNDEsIDIwOSwgOTIsIDIxMiwgCisgICAgMTU5LCA0MSwgMjEwLCAxMjksIDIxMiwgMTU5LCA0MSwgMjM4LCAyMjIsIDIxMiwgMTU5LCA0MSwgMjE5LCAxMDgsIDIxMiwgCisgICAgMTU5LCA0MSwgMTEyLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDEyMCwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAxMjYsIAorICAgIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjM2LCAyMjksIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgCisgICAgMjEyLCAxNTksIDQxLCAyMDksIDEwNiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMjEyLCAKKyAgICAxNTksIDQxLCAyMzgsIDIzMiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMjEyLCAxNTksIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMTIsIDE1OSwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMjEyLCAxNTksIDIzNiwgCisgICAgMjE5LCAxMTIsIDIwNiwgNzQsIDIxMiwgMTU5LCAyMzYsIDIxOSwgMTIwLCAyMDYsIDcxLCAxNTEsIDIsIDI0NywgMTQ5LCAKKyAgICAxNTEsIDIsIDI1MSwgMzMsIDE1MSwgMiwgMjAyLCAyMDMsIDE1MSwgMiwgMjI3LCAyMDEsIDE1MSwgMiwgMjAzLCAyMjYsIAorICAgIDE1MSwgMSwgNjIsIDE1MSwgMSwgMjUyLCAxMzgsIDE1MSwgMSwgNzAsIDE1MSwgMSwgMjI4LCAxNTEsIDE1MSwgMSwgNjYsIAorICAgIDE1MSwgMSwgMjAzLCAxODIsIDE1MSwgMSwgMTA5LCAxNDYsIDE1MSwgMSwgMTA5LCAyMTIsIDIxNiwgMTUxLCAxLCAxMDksIAorICAgIDE1NiwgMTUxLCAxLCAxMDksIDIyNCwgMTM5LCAxNTEsIDEsIDcyLCAxNTEsIDEsIDI1MSwgMTc2LCAxNTEsIDEsIDc0LCAKKyAgICAxNTEsIDEsIDI1MCwgMTM5LCAxNTEsIDEsIDE2MSwgMTUxLCAxLCAyMjYsIDIwNywgMTUxLCAxLCAyMzYsIDg5LCAxNTEsIDEsIAorICAgIDIzNSwgMTk5LCAxNTEsIDEsIDIxOSwgMjUzLCAxNTEsIDEsIDI0NywgMTkwLCAxNTEsIDEsIDI0NywgMzcsIDE1MSwgMSwgCisgICAgMjI3LCAyNDgsIDE1MSwgMSwgMjI3LCAyMTUsIDE1MSwgMSwgMjE4LCA2MCwgMTUxLCAxLCAyMDQsIDI1MywgMTUxLCAxLCAKKyAgICAyMDQsIDI0MSwgMTUxLCAxLCAyNDEsIDIyMCwgMTUxLCAxLCAyNDEsIDIwNCwgMTUxLCAxLCAyMTksIDIxLCAxNTEsIDEsIAorICAgIDIwNywgMzYsIDE1MSwgMSwgMjA2LCAxMjIsIDE1MSwgMSwgMjQyLCA1OCwgMTUxLCAxLCAyNDEsIDEwMCwgMTUxLCAxLCAKKyAgICAxODgsIDE1MSwgMSwgMTcyLCAxNTEsIDEsIDIxNSwgMjQ1LCAxNTEsIDEsIDI0OSwgMTM2LCAxNTEsIDEsIDI0OCwgMjAwLCAKKyAgICAxNTEsIDEsIDE3OCwgMTUxLCAxLCAxODMsIDE1MSwgMSwgMjEzLCAyNTIsIDE1MSwgMSwgMTk0LCAxNTEsIDEsIDIwMywgOTAsIAorICAgIDE1MSwgMSwgMjEwLCAxMTQsIDE1MSwgMSwgMjA4LCAxNzksIDE1MSwgMSwgMjEyLCA2NCwgMTUxLCAxLCAxNDQsIDE1MSwgMSwgCisgICAgMjI0LCAxMzgsIDE1MSwgMSwgNDAsIDQ1LCAyMjQsIDEyOSwgMTUxLCAxLCA0MCwgNDUsIDIxMiwgMjE1LCAxNTEsIDEsIDQwLCAKKyAgICA0NSwgMjE5LCAzLCAxNTEsIDIyLCAyLCAyNTIsIDEzOCwgMTUxLCAyMiwgMiwgMjQ4LCAxOTcsIDI1MiwgMTM4LCAxNTEsIAorICAgIDIyLCAyLCA3MCwgMTUxLCAyMiwgMiwgMjI4LCAxNTEsIDE1MSwgMjIsIDIsIDY2LCAxNTEsIDIyLCAyLCAyMDMsIDE4MiwgCisgICAgMTUxLCAyMiwgMiwgMTA5LCAxNDYsIDE1MSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE1MSwgMjIsIDIsIDEwOSwgMTU2LCAKKyAgICAxNTEsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxNTEsIDIyLCAyLCA3MiwgMTUxLCAyMiwgMiwgMjUxLCAxNzYsIDE1MSwgMjIsIAorICAgIDIsIDc0LCAxNTEsIDIyLCAyLCAyNTAsIDEzOSwgMTUxLCAyMDIsIDIwOCwgMTUxLCAyNDIsIDEwLCAxNTEsIDUzLCAyNDIsIAorICAgIDEwLCAxNTEsIDIxNCwgMjEyLCAyNDAsIDE4MiwgMTUxLCAyMTQsIDIxMiwgNTMsIDI0MCwgMTgyLCAxNTEsIDIxNCwgMjEyLCAKKyAgICAyMjQsIDE3NiwgMTUxLCAyMTQsIDIxMiwgMjQyLCAyNDQsIDE0OCwgMTUxLCAyMTQsIDIxMiwgMjI0LCA2NCwgMTUxLCA0MSwgCisgICAgMTAyLCAxNTEsIDQxLCAxMDUsIDE1MSwgNDEsIDE0NywgMTUxLCA0MSwgMTQ5LCAxNTEsIDQxLCAxNjQsIDE1MSwgNDEsIAorICAgIDE4NywgMTUxLCA0MSwgMjEwLCAxMzUsIDE1MSwgNDEsIDE5MiwgMTUxLCA0MSwgMjE5LCAxMTMsIDE1MSwgNDEsIDIwNiwgCisgICAgMTY2LCAxNTEsIDQxLCAyMDQsIDE1OSwgMTUxLCA0MSwgMjA2LCA2NywgMTUxLCA0MSwgMjM2LCAyMzUsIDE1MSwgNDEsIAorICAgIDIzNywgMTA0LCAxNTEsIDQxLCAyMDksIDkyLCAxNTEsIDQxLCAyMTAsIDEyOSwgMTUxLCA0MSwgMjM4LCAyMjIsIDE1MSwgCisgICAgNDEsIDIxOSwgMTA4LCAxNTEsIDQxLCAxMTIsIDIzMywgODIsIDE1MSwgNDEsIDExMiwgMjA2LCA1MCwgMTUxLCAxNywgMTk5LCAKKyAgICA4MSwgMTUxLCAxNywgMTAyLCAxNTEsIDE3LCAxMDUsIDE1MSwgMTcsIDE0NywgMTUxLCAxNywgMTQ5LCAxNTEsIDE3LCAxNjQsIAorICAgIDE1MSwgMTcsIDE4NywgMTUxLCAxNywgMjEwLCAxMzUsIDE1MSwgMTcsIDE5MiwgMTUxLCAxNywgMjE5LCAxMTMsIDE1MSwgCisgICAgNDEsIDIyNywgMTYxLCAyMjcsIDc5LCAyLCAyNDcsIDE0OSwgMjI3LCA3OSwgMiwgMjUxLCAzMywgMjI3LCA3OSwgMiwgMjAyLCAKKyAgICAyMDMsIDIyNywgNzksIDEsIDYyLCAyMjcsIDc5LCAxLCAyNTIsIDEzOCwgMjI3LCA3OSwgMSwgNzAsIDIyNywgNzksIDEsIAorICAgIDIyOCwgMTUxLCAyMjcsIDc5LCAxLCA2NiwgMjI3LCA3OSwgMSwgMjAzLCAxODIsIDIyNywgNzksIDEsIDcyLCAyMjcsIDc5LCAKKyAgICAxLCAyNTEsIDE3NiwgMjI3LCA3OSwgMSwgNzQsIDIyNywgNzksIDEsIDI1MCwgMTM5LCAyMjcsIDc5LCAxLCAxNjEsIDIyNywgCisgICAgNzksIDEsIDIyNiwgMjA3LCAyMjcsIDc5LCAxLCAyMzYsIDg5LCAyMjcsIDc5LCAxLCAyMzUsIDE5OSwgMjI3LCA3OSwgMSwgCisgICAgMjE5LCAyNTMsIDIyNywgNzksIDEsIDI0NywgMTkwLCAyMjcsIDc5LCAxLCAyNDcsIDM3LCAyMjcsIDc5LCAxLCAyMjcsIAorICAgIDI0OCwgMjI3LCA3OSwgMSwgMjI3LCAyMTUsIDIyNywgNzksIDEsIDIxOCwgNjAsIDIyNywgNzksIDEsIDIwNCwgMjUzLCAKKyAgICAyMjcsIDc5LCAxLCAyMDQsIDI0MSwgMjI3LCA3OSwgMSwgMjQxLCAyMjAsIDIyNywgNzksIDEsIDI0MSwgMjA5LCAyMjcsIAorICAgIDc5LCAxLCAyNDEsIDIwNCwgMjI3LCA3OSwgMSwgMjEzLCA5MywgMjI3LCA3OSwgMSwgMjE5LCAyMSwgMjI3LCA3OSwgMSwgCisgICAgMjA3LCAzNiwgMjI3LCA3OSwgMSwgMjA2LCAxMjIsIDIyNywgNzksIDEsIDI0MiwgNTgsIDIyNywgNzksIDEsIDI0MSwgMTAwLCAKKyAgICAyMjcsIDc5LCAxLCAxODgsIDIyNywgNzksIDEsIDE3MiwgMjI3LCA3OSwgMSwgMjE1LCAyNDUsIDIyNywgNzksIDEsIDI0OSwgCisgICAgMTM2LCAyMjcsIDc5LCAxLCAyNDgsIDIwMCwgMjI3LCA3OSwgMSwgMTc4LCAyMjcsIDc5LCAxLCAxODMsIDIyNywgNzksIDEsIAorICAgIDIxMywgMjUyLCAyMjcsIDc5LCAxLCAxOTQsIDIyNywgNzksIDEsIDIwMywgOTAsIDIyNywgNzksIDEsIDIxMCwgMTE0LCAKKyAgICAyMjcsIDc5LCAxLCAyMDgsIDE3OSwgMjI3LCA3OSwgMSwgMjEyLCA2NCwgMjI3LCA3OSwgMSwgMTQ0LCAyMjcsIDc5LCAyMiwgCisgICAgMiwgMjUyLCAxMzgsIDIyNywgNzksIDIyLCAyLCA3MCwgMjI3LCA3OSwgMjIsIDIsIDIyOCwgMTUxLCAyMjcsIDc5LCAyMiwgCisgICAgMiwgNjYsIDIyNywgNzksIDIyLCAyLCAyMDMsIDE4MiwgMjI3LCA3OSwgMjIsIDIsIDcyLCAyMjcsIDc5LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIyNywgNzksIDIyLCAyLCA3NCwgMjI3LCA3OSwgMjIsIDIsIDI1MCwgMTM5LCAyMjcsIDc5LCAyLCAyMDIsIDIwOCwgCisgICAgMjI3LCA3OSwgMiwgMjE4LCAxMDAsIDIyNywgNzksIDI1MiwgMywgNTQsIDIyNywgNzksIDIzOCwgMTQ2LCA1NCwgMjI3LCAKKyAgICA3OSwgNDEsIDU0LCAyMjcsIDc5LCAyMTEsIDE5MywgODEsIDIyNywgNzksIDUzLCAyMTEsIDE5MywgODEsIDIyNywgNzksIAorICAgIDI0MiwgMTAsIDIyNywgNzksIDUzLCAyNDIsIDEwLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxMiwgNDcsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMSwgMjA3LCA5LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0OSwgMTA3LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0NywgCisgICAgMTc5LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0MiwgMzgsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM2LCA3NCwgMjA5LCA2LCAKKyAgICAyMDksIDE0LCAxLCAyMjIsIDIwNiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTksIDI1MCwgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyMjUsIDE1MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjAsIDE0NCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMDMsIDg2LCAyMDksIAorICAgIDYsIDIwOSwgMTQsIDEsIDIxNiwgMTkyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIwMCwgOTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjEzLCAyMzEsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM0LCAyMjQsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjI3LCA4NCwgMjA5LCAKKyAgICA2LCAyMDksIDE0LCAxLCAyMjcsIDI0MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTgsIDU3LCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDI1MSwgMTg1LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIzOCwgMjUzLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyOCwgMTUyLCAKKyAgICAyMDksIDYsIDIwOSwgMTQsIDEsIDIwNCwgMjUsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjE3LCAxMDgsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMSwgMjM4LCAyNDEsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjIyLCAyMTksIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE5OSwgCisgICAgODEsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDEwMiwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTA1LCAyMDksIDYsIDIwOSwgMTQsIAorICAgIDE3LCAxNDcsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE0OSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTY0LCAyMDksIDYsIDIwOSwgCisgICAgMTQsIDE3LCAxODcsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDIxMCwgMTM1LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxOTIsIAorICAgIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDIxOSwgMTEzLCAyNDcsIDMxLCAyLCAyNDcsIDE0OSwgMjQ3LCAzMSwgMiwgMjUxLCAzMywgCisgICAgMjQ3LCAzMSwgMiwgMjAyLCAyMDMsIDI0NywgMzEsIDEsIDI1MiwgMTM4LCAyNDcsIDMxLCAxLCA3MCwgMjQ3LCAzMSwgMSwgCisgICAgNjYsIDI0NywgMzEsIDEsIDcyLCAyNDcsIDMxLCAxLCAyMjcsIDEwNSwgMjQ3LCAzMSwgMSwgMjI2LCAyMDYsIDI0NywgMzEsIAorICAgIDEsIDIzNiwgODYsIDI0NywgMzEsIDEsIDIzNSwgMTk4LCAyNDcsIDMxLCAxLCAyMTksIDI1MiwgMjQ3LCAzMSwgMSwgMjQ3LCAKKyAgICAxODksIDI0NywgMzEsIDEsIDI0NywgMzYsIDI0NywgMzEsIDEsIDIyNywgMjQ3LCAyNDcsIDMxLCAxLCAyMjcsIDIxNCwgCisgICAgMjQ3LCAzMSwgMSwgMjE4LCA1OSwgMjQ3LCAzMSwgMSwgMjA0LCAyNTIsIDI0NywgMzEsIDEsIDIwNCwgMjQwLCAyNDcsIDMxLCAKKyAgICAxLCAyNDEsIDIxOSwgMjQ3LCAzMSwgMSwgMjQxLCAyMDMsIDI0NywgMzEsIDEsIDIxOSwgMjAsIDI0NywgMzEsIDEsIDIwNywgCisgICAgMzIsIDI0NywgMzEsIDEsIDIwNiwgMTIxLCAyNDcsIDMxLCAxLCAyNDIsIDU3LCAyNDcsIDMxLCAxLCAyNDEsIDk5LCAyNDcsIAorICAgIDMxLCAxLCAyMjAsIDE1NywgMjQ3LCAzMSwgMSwgMjE2LCAyMTAsIDI0NywgMzEsIDEsIDIxNSwgMjQ0LCAyNDcsIDMxLCAxLCAKKyAgICAyNDksIDEzNCwgMjQ3LCAzMSwgMSwgMjQ4LCAxOTksIDI0NywgMzEsIDEsIDIyMiwgMjMzLCAyNDcsIDMxLCAxLCAxOTksIAorICAgIDE2NSwgMjQ3LCAzMSwgMSwgMjAwLCAxMDksIDI0NywgMzEsIDEsIDIxMywgMjQ4LCAyNDcsIDMxLCAxLCAyMjUsIDE3NSwgCisgICAgMjQ3LCAzMSwgMSwgMjAxLCAxMTMsIDI0NywgMzEsIDEsIDIxMiwgNjEsIDI0NywgMzEsIDEsIDIzNCwgMjMzLCAyNDcsIDMxLCAKKyAgICAyMiwgMiwgNjIsIDI0NywgMzEsIDIyLCAyLCA3MCwgMjQ3LCAzMSwgMjIsIDIsIDIyOCwgMTUxLCAyNDcsIDMxLCAyMiwgMiwgCisgICAgNjYsIDI0NywgMzEsIDIyLCAyLCAyMDMsIDE4MiwgMjQ3LCAzMSwgMjIsIDIsIDcyLCAyNDcsIDMxLCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDI0NywgMzEsIDIyLCAyLCA3NCwgMjQ3LCAzMSwgMjIsIDIsIDI1MCwgMTM5LCAyNDcsIDMxLCAyMiwgMiwgMjE3LCAKKyAgICAxMDUsIDI0NywgMzEsIDE2MywgODEsIDI0NywgMzEsIDI1MCwgMTQwLCA4MSwgMjQ3LCAzMSwgMjAyLCAyMDgsIDI0NywgMzEsIAorICAgIDIyMiwgMjMxLCAyNDcsIDMxLCAxNywgMTk5LCA4MSwgMjQ3LCAzMSwgMTcsIDEwMiwgMjQ3LCAzMSwgMTcsIDEwNSwgMjQ3LCAKKyAgICAzMSwgMTcsIDE0NywgMjQ3LCAzMSwgMTcsIDE0OSwgMjQ3LCAzMSwgMTcsIDE2NCwgMjQ3LCAzMSwgMTcsIDE4NywgMjQ3LCAKKyAgICAzMSwgMTcsIDIxMCwgMTM1LCAyNDcsIDMxLCAxNywgMTkyLCAyNDcsIDMxLCAxNywgMjE5LCAxMTMsIDI0NywgMzEsIDIxMSwgCisgICAgMTkzLCA4MSwgMjQ3LCAzMSwgMjQyLCAxMCwgMjQ3LCAzMSwgNTMsIDI0MiwgMTAsIDI0NywgMzEsIDIxNCwgNzksIDgxLCAKKyAgICAyMjIsIDIwNCwgMSwgNjIsIDIyMiwgMjA0LCAxLCA3MCwgMjIyLCAyMDQsIDEsIDY2LCAyMjIsIDIwNCwgMSwgNzIsIDIyMiwgCisgICAgMjA0LCAxLCA3NCwgMjIyLCAyMDQsIDEsIDE2MSwgMjIyLCAyMDQsIDEsIDIyNiwgMjA3LCAyMjIsIDIwNCwgMSwgMjM2LCAKKyAgICA4OSwgMjIyLCAyMDQsIDEsIDIzNSwgMTk5LCAyMjIsIDIwNCwgMSwgMjQ3LCAxOTAsIDIyMiwgMjA0LCAxLCAyNDcsIDM3LCAKKyAgICAyMjIsIDIwNCwgMSwgMjI3LCAyNDgsIDIyMiwgMjA0LCAxLCAyMjcsIDIxNSwgMjIyLCAyMDQsIDEsIDIxOCwgNjAsIDIyMiwgCisgICAgMjA0LCAxLCAyMDQsIDI1MywgMjIyLCAyMDQsIDEsIDIwNCwgMjQxLCAyMjIsIDIwNCwgMSwgMjQxLCAyMjAsIDIyMiwgMjA0LCAKKyAgICAxLCAyNDEsIDIwNCwgMjIyLCAyMDQsIDEsIDIxOSwgMjEsIDIyMiwgMjA0LCAxLCAyMDcsIDM2LCAyMjIsIDIwNCwgMSwgCisgICAgMjA2LCAxMjIsIDIyMiwgMjA0LCAxLCAyNDIsIDU4LCAyMjIsIDIwNCwgMSwgMjQxLCAxMDAsIDIyMiwgMjA0LCAxLCAxODgsIAorICAgIDIyMiwgMjA0LCAxLCAxNzIsIDIyMiwgMjA0LCAxLCAyMTUsIDI0NSwgMjIyLCAyMDQsIDEsIDI0OSwgMTM2LCAyMjIsIDIwNCwgCisgICAgMSwgMjQ4LCAyMDAsIDIyMiwgMjA0LCAxLCAxNzgsIDIyMiwgMjA0LCAxLCAyMTMsIDI1MiwgMjIyLCAyMDQsIDEsIDE5NCwgCisgICAgMjIyLCAyMDQsIDEsIDIwMywgOTAsIDIyMiwgMjA0LCAxLCAyMTIsIDY0LCAyMjIsIDIwNCwgMSwgMTQ0LCAyMjIsIDIwNCwgCisgICAgMSwgMjEyLCAyMTUsIDIyMiwgMjA0LCAyLCAyMTgsIDEwMCwgMjIyLCAyMDQsIDI1MiwgMywgNTQsIDIyMiwgMjA0LCAyMTEsIAorICAgIDE5MywgODEsIDIyMiwgMjA0LCAzMywgMjA5LCAyMjgsIDE4NiwgMiwgMjQ3LCAxNDksIDE4NiwgMiwgMjUxLCAzMywgMTg2LCAKKyAgICAyLCAyMDIsIDIwMywgMTg2LCAxLCA2MiwgMTg2LCAxLCAyNTIsIDEzOCwgMTg2LCAxLCA3MCwgMTg2LCAxLCAyMjgsIDE1MSwgCisgICAgMTg2LCAxLCA2NiwgMTg2LCAxLCAyMDMsIDE4MiwgMTg2LCAxLCAxMDksIDE0NiwgMTg2LCAxLCAxMDksIDIxMiwgMjE2LCAKKyAgICAxODYsIDEsIDEwOSwgMTU2LCAxODYsIDEsIDEwOSwgMjI0LCAxMzksIDE4NiwgMSwgNzIsIDE4NiwgMSwgMjUxLCAxNzYsIAorICAgIDE4NiwgMSwgNzQsIDE4NiwgMSwgMjUwLCAxMzksIDE4NiwgMSwgMTYxLCAxODYsIDEsIDIyNiwgMjA3LCAxODYsIDEsIDIzNiwgCisgICAgODksIDE4NiwgMSwgMjM1LCAxOTksIDE4NiwgMSwgMjE5LCAyNTMsIDE4NiwgMSwgMjQ3LCAxOTAsIDE4NiwgMSwgMjQ3LCAKKyAgICAzNywgMTg2LCAxLCAyMjcsIDI0OCwgMTg2LCAxLCAyMjcsIDIxNSwgMTg2LCAxLCAyMTgsIDYwLCAxODYsIDEsIDIwNCwgCisgICAgMjUzLCAxODYsIDEsIDIwNCwgMjQxLCAxODYsIDEsIDI0MSwgMjIwLCAxODYsIDEsIDI0MSwgMjA0LCAxODYsIDEsIDIxOSwgCisgICAgMjEsIDE4NiwgMSwgMjA3LCAzNiwgMTg2LCAxLCAyMDYsIDEyMiwgMTg2LCAxLCAyNDIsIDU4LCAxODYsIDEsIDI0MSwgMTAwLCAKKyAgICAxODYsIDEsIDE4OCwgMTg2LCAxLCAxNzIsIDE4NiwgMSwgMjE1LCAyNDUsIDE4NiwgMSwgMjQ5LCAxMzYsIDE4NiwgMSwgCisgICAgMjQ4LCAyMDAsIDE4NiwgMSwgMTc4LCAxODYsIDEsIDE4MywgMTg2LCAxLCAyMTMsIDI1MiwgMTg2LCAxLCAxOTQsIDE4NiwgCisgICAgMSwgMjI0LCAxMzgsIDE4NiwgMSwgMjAzLCA5MCwgMTg2LCAxLCAyMTAsIDExNCwgMTg2LCAxLCAyMDgsIDE3OSwgMTg2LCAxLCAKKyAgICAyMTIsIDY0LCAxODYsIDEsIDE0NCwgMTg2LCAyMiwgMiwgMjUyLCAxMzgsIDE4NiwgMjIsIDIsIDcwLCAxODYsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTg2LCAyMiwgMiwgNjYsIDE4NiwgMjIsIDIsIDIwMywgMTgyLCAxODYsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTg2LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTg2LCAyMiwgMiwgMTA5LCAxNTYsIDE4NiwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDE4NiwgMjIsIDIsIDcyLCAxODYsIDIyLCAyLCAyNTEsIDE3NiwgMTg2LCAyMiwgMiwgNzQsIDE4NiwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAxODYsIDIsIDIwMiwgMjA4LCAxODYsIDIsIDI1MCwgMTIyLCAxODYsIDIsIDIyNywgMjAxLCAxODYsIDIsIAorICAgIDIwMywgMjI2LCAxODYsIDIxNywgODYsIDE4NiwgMjQyLCAxMCwgMTg2LCA1MywgMjQyLCAxMCwgMTg2LCAyNTIsIDMsIDU0LCAKKyAgICAxODYsIDIxMCwgMTU0LCAxODYsIDIxMiwgOSwgODEsIDE4NiwgMiwgMjE4LCAxMDAsIDE4NiwgMjIsIDY3LCA4MSwgMTg2LCAKKyAgICAyMzgsIDMwLCAyMDksIDI1MCwgMjIsIDgxLCAxODYsIDIwNywgMTk0LCA4MSwgMTg2LCAxNywgMTk5LCA4MSwgMTg2LCAxNywgCisgICAgMTAyLCAxODYsIDE3LCAxMDUsIDE4NiwgMTcsIDE0NywgMTg2LCAxNywgMTQ5LCAxODYsIDE3LCAxNjQsIDE4NiwgMTcsIAorICAgIDE4NywgMTg2LCAxNywgMjEwLCAxMzUsIDE4NiwgMTcsIDE5MiwgMTg2LCAxNywgMjE5LCAxMTMsIDE4NiwgMjM4LCAyMTUsIAorICAgIDE4NiwgMiwgMjA5LCAxNzcsIDE4NiwgMjM0LCAxMzAsIDE4NiwgMjQzLCA0MSwgNTQsIDE4NiwgMjExLCAxOTMsIDIyMiwgCisgICAgMTQ5LCAxODYsIDIxMSwgMTkzLCAyMjIsIDE0OCwgMTQzLCAyNTAsIDIzNCwgMTcsIDEwMiwgMTQzLCAyNTAsIDIzNCwgMTcsIAorICAgIDEwNSwgMTQzLCAyNTAsIDIzNCwgMTcsIDE0NywgMTQzLCAyNTAsIDIzNCwgMTcsIDE0OSwgMTQzLCAyNTAsIDIzNCwgMTcsIAorICAgIDE2NCwgMTQzLCAyNTAsIDIzNCwgMTcsIDE4NywgMTQzLCAyNTAsIDIzNCwgMTcsIDIxMCwgMTM1LCAxNDMsIDI1MCwgMjM0LCAKKyAgICAxNywgMTkyLCAxNDMsIDI1MCwgMjM0LCAxNywgMjE5LCAxMTMsIDE0MywgMjUwLCAyMzQsIDQxLCAyMDYsIDE2NiwgMTQzLCAKKyAgICAyNTAsIDIzNCwgNDEsIDIwNCwgMTU5LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjA2LCA2NywgMTQzLCAyNTAsIDIzNCwgNDEsIAorICAgIDIzNiwgMjM1LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjM3LCAxMDQsIDE0MywgMjUwLCAyMzQsIDQxLCAyMDksIDkyLCAxNDMsIAorICAgIDI1MCwgMjM0LCA0MSwgMjEwLCAxMjksIDE0MywgMjUwLCAyMzQsIDQxLCAyMzgsIDIyMiwgMTQzLCAyNTAsIDIzNCwgNDEsIAorICAgIDIxOSwgMTA4LCAxNDMsIDI1MCwgMjM0LCA0MSwgMTEyLCAyMzMsIDgyLCAxNDMsIDI1MCwgMjM0LCA0MSwgMTEyLCAyMDYsIAorICAgIDUwLCAyMjYsIDE3NywgMSwgNjIsIDIyNiwgMTc3LCAxLCAyNTIsIDEzOCwgMjI2LCAxNzcsIDEsIDcwLCAyMjYsIDE3NywgMSwgCisgICAgNjYsIDIyNiwgMTc3LCAxLCA3MiwgMjI2LCAxNzcsIDEsIDI1MSwgMTc2LCAyMjYsIDE3NywgMSwgNzQsIDIyNiwgMTc3LCAxLCAKKyAgICAyNTAsIDEzOSwgMjI2LCAxNzcsIDEsIDE2MSwgMjI2LCAxNzcsIDEsIDIyNiwgMjA3LCAyMjYsIDE3NywgMSwgMjM2LCA4OSwgCisgICAgMjI2LCAxNzcsIDEsIDIzNSwgMjM1LCAyMjYsIDE3NywgMSwgMjM1LCAxOTksIDIyNiwgMTc3LCAxLCAyMTksIDI1MywgMjI2LCAKKyAgICAxNzcsIDEsIDI0NywgMTkwLCAyMjYsIDE3NywgMSwgMjQ3LCAzNywgMjI2LCAxNzcsIDEsIDIyNywgMjQ4LCAyMjYsIDE3NywgCisgICAgMSwgMjI3LCAxOTQsIDIyNiwgMTc3LCAxLCAyMTgsIDYwLCAyMjYsIDE3NywgMSwgMjA0LCAyNTMsIDIyNiwgMTc3LCAxLCAKKyAgICAyMDQsIDI0MSwgMjI2LCAxNzcsIDEsIDI0MSwgMjIwLCAyMjYsIDE3NywgMSwgMjQxLCAyMDQsIDIyNiwgMTc3LCAxLCAyMTksIAorICAgIDIxLCAyMjYsIDE3NywgMSwgMjA3LCAzNiwgMjI2LCAxNzcsIDEsIDIwNiwgMTIyLCAyMjYsIDE3NywgMSwgMjQyLCA1OCwgCisgICAgMjI2LCAxNzcsIDEsIDI0MSwgMjEwLCAyMjYsIDE3NywgMSwgMjQxLCAxMDAsIDIyNiwgMTc3LCAxLCAxODgsIDIyNiwgMTc3LCAKKyAgICAxLCAxNzIsIDIyNiwgMTc3LCAxLCAyMTUsIDI0NSwgMjI2LCAxNzcsIDEsIDI0OSwgMTM2LCAyMjYsIDE3NywgMSwgMjQ5LCAKKyAgICA0NCwgMjI2LCAxNzcsIDEsIDI0OCwgMjAwLCAyMjYsIDE3NywgMSwgMTc4LCAyMjYsIDE3NywgMSwgMTgzLCAyMjYsIDE3NywgCisgICAgMSwgMjEzLCAyNTIsIDIyNiwgMTc3LCAxLCAxOTQsIDIyNiwgMTc3LCAxLCAyMDMsIDkwLCAyMjYsIDE3NywgMSwgMjEyLCAKKyAgICA2NCwgMjI2LCAxNzcsIDEsIDE0NCwgMjI2LCAxNzcsIDEsIDIyNCwgMTM4LCAyMjYsIDE3NywgMjIsIDIsIDI1MiwgMTM4LCAKKyAgICAyMjYsIDE3NywgMjIsIDIsIDcwLCAyMjYsIDE3NywgMjIsIDIsIDIyOCwgMTUxLCAyMjYsIDE3NywgMjIsIDIsIDY2LCAyMjYsIAorICAgIDE3NywgMjIsIDIsIDcyLCAyMjYsIDE3NywgMjIsIDIsIDI1MSwgMTc2LCAyMjYsIDE3NywgMjIsIDIsIDc0LCAyMjYsIDE3NywgCisgICAgMjIsIDIsIDI1MCwgMTM5LCAyMjYsIDE3NywgMiwgMjUxLCAzMywgMjI2LCAxNzcsIDIsIDIwMiwgMjA4LCAyMjYsIDE3NywgCisgICAgMiwgMjE4LCAxMDAsIDIyNiwgMTc3LCAyLCAyMTAsIDEwNCwgMjI2LCAxNzcsIDI0MiwgMTAsIDIyNiwgMTc3LCA1MywgMjQyLCAKKyAgICAxMCwgMjI2LCAxNzcsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMjI2LCAxNzcsIDIxMSwgMTkzLCA4MSwgMjI2LCAxNzcsIDUzLCAKKyAgICAyMTEsIDE5MywgODEsIDIyNiwgMTc3LCAyNTIsIDMsIDU0LCAyMjYsIDE3NywgMiwgMjA3LCAyMzYsIDIyMSwgMjUsIDEsIAorICAgIDYyLCAyMjEsIDI1LCAxLCA3MCwgMjIxLCAyNSwgMSwgNjYsIDIyMSwgMjUsIDEsIDcyLCAyMjEsIDI1LCAxLCAxNjEsIDIyMSwgCisgICAgMjUsIDEsIDIyNiwgMjA3LCAyMjEsIDI1LCAxLCAyMzYsIDg5LCAyMjEsIDI1LCAxLCAyMzUsIDE5OSwgMjIxLCAyNSwgMSwgCisgICAgMjQ3LCAxOTAsIDIyMSwgMjUsIDEsIDI0NywgMzcsIDIyMSwgMjUsIDEsIDIyNywgMjQ4LCAyMjEsIDI1LCAxLCAyMjcsIAorICAgIDE5NCwgMjIxLCAyNSwgMSwgMjE4LCA2MCwgMjIxLCAyNSwgMSwgMjA0LCAyNTMsIDIyMSwgMjUsIDEsIDIwNCwgMjQxLCAKKyAgICAyMjEsIDI1LCAxLCAyNDEsIDIyMCwgMjIxLCAyNSwgMSwgMjQxLCAyMTAsIDIyMSwgMjUsIDEsIDI0MSwgMjA0LCAyMjEsIAorICAgIDI1LCAxLCAyMTksIDIxLCAyMjEsIDI1LCAxLCAyMDcsIDM2LCAyMjEsIDI1LCAxLCAyMDYsIDEyMiwgMjIxLCAyNSwgMSwgCisgICAgMjQyLCA1OCwgMjIxLCAyNSwgMSwgMjQxLCAxMDAsIDIyMSwgMjUsIDEsIDE4OCwgMjIxLCAyNSwgMSwgMTcyLCAyMjEsIDI1LCAKKyAgICAxLCAyMTUsIDI0NSwgMjIxLCAyNSwgMSwgMjQ5LCAxMzYsIDIyMSwgMjUsIDEsIDI0OCwgMjAwLCAyMjEsIDI1LCAxLCAxNzgsIAorICAgIDIyMSwgMjUsIDEsIDE4MywgMjIxLCAyNSwgMSwgMjEzLCAyNTIsIDIyMSwgMjUsIDEsIDE5NCwgMjIxLCAyNSwgMSwgMjAzLCAKKyAgICA5MCwgMjIxLCAyNSwgMSwgMjEyLCA2NCwgMjIxLCAyNSwgMSwgMTQ0LCAyMjEsIDI1LCAxLCAyMTIsIDIxNSwgMjIxLCAyNSwgCisgICAgMSwgMjEzLCA5MywgMjIxLCAyNSwgMjExLCAxOTMsIDgxLCAyMjYsIDE2OSwgMSwgNjIsIDIyNiwgMTY5LCAxLCAyNTIsIAorICAgIDEzOCwgMjI2LCAxNjksIDEsIDcwLCAyMjYsIDE2OSwgMSwgMjI4LCAxNTEsIDIyNiwgMTY5LCAxLCA2NiwgMjI2LCAxNjksIAorICAgIDEsIDIwMywgMTgyLCAyMjYsIDE2OSwgMSwgNzIsIDIyNiwgMTY5LCAxLCAyNTEsIDE3NiwgMjI2LCAxNjksIDEsIDc0LCAKKyAgICAyMjYsIDE2OSwgMSwgMjUwLCAxMzksIDIyNiwgMTY5LCAxLCAxNjEsIDIyNiwgMTY5LCAxLCAyMjYsIDIwNywgMjI2LCAxNjksIAorICAgIDEsIDIzNiwgODksIDIyNiwgMTY5LCAxLCAyMzUsIDIzNSwgMjI2LCAxNjksIDEsIDIzNSwgMTk5LCAyMjYsIDE2OSwgMSwgCisgICAgMjE5LCAyNTMsIDIyNiwgMTY5LCAxLCAyNDcsIDE5MCwgMjI2LCAxNjksIDEsIDI0NywgMzcsIDIyNiwgMTY5LCAxLCAyMjcsIAorICAgIDI0OCwgMjI2LCAxNjksIDEsIDIyNywgMTk0LCAyMjYsIDE2OSwgMSwgMjI3LCAyMTUsIDIyNiwgMTY5LCAxLCAyMTgsIDYwLCAKKyAgICAyMjYsIDE2OSwgMSwgMjA0LCAyNTMsIDIyNiwgMTY5LCAxLCAyMDQsIDI0MSwgMjI2LCAxNjksIDEsIDI0MSwgMjIwLCAyMjYsIAorICAgIDE2OSwgMSwgMjQxLCAyMTAsIDIyNiwgMTY5LCAxLCAyMTIsIDIxNSwgMjI2LCAxNjksIDEsIDI0MSwgMjA0LCAyMjYsIDE2OSwgCisgICAgMSwgMjE5LCAyMSwgMjI2LCAxNjksIDEsIDIwNywgMzYsIDIyNiwgMTY5LCAxLCAyMDYsIDEyMiwgMjI2LCAxNjksIDEsIAorICAgIDI0MiwgNTgsIDIyNiwgMTY5LCAxLCAyNDEsIDEwMCwgMjI2LCAxNjksIDEsIDE4OCwgMjI2LCAxNjksIDEsIDE3MiwgMjI2LCAKKyAgICAxNjksIDEsIDIxNSwgMjQ1LCAyMjYsIDE2OSwgMSwgMjQ5LCAxMzYsIDIyNiwgMTY5LCAxLCAyNDksIDQ0LCAyMjYsIDE2OSwgCisgICAgMSwgMjQ4LCAyMDAsIDIyNiwgMTY5LCAxLCAxNzgsIDIyNiwgMTY5LCAxLCAxODMsIDIyNiwgMTY5LCAxLCAyMTMsIDI1MiwgCisgICAgMjI2LCAxNjksIDEsIDE5NCwgMjI2LCAxNjksIDEsIDIwMywgOTAsIDIyNiwgMTY5LCAxLCAyMTAsIDExNCwgMjI2LCAxNjksIAorICAgIDEsIDIxMiwgNjQsIDIyNiwgMTY5LCAxLCAxNDQsIDIyNiwgMTY5LCAyLCAyNTEsIDMzLCAyMjYsIDE2OSwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMjYsIDE2OSwgMjIsIDIsIDcwLCAyMjYsIDE2OSwgMjIsIDIsIDIyOCwgMTUxLCAyMjYsIDE2OSwgMjIsIDIsIDY2LCAKKyAgICAyMjYsIDE2OSwgMjIsIDIsIDIwMywgMTgyLCAyMjYsIDE2OSwgMjIsIDIsIDcyLCAyMjYsIDE2OSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMjYsIDE2OSwgMjIsIDIsIDc0LCAyMjYsIDE2OSwgMjIsIDIsIDI1MCwgMTM5LCAyMjYsIDE2OSwgMiwgMjE4LCAKKyAgICAxMDAsIDIyNiwgMTY5LCAyLCAyMDIsIDIwOCwgMjI2LCAxNjksIDE3LCAxOTksIDgxLCAyMjYsIDE2OSwgMTcsIDEwMiwgCisgICAgMjI2LCAxNjksIDE3LCAxMDUsIDIyNiwgMTY5LCAxNywgMTQ3LCAyMjYsIDE2OSwgMTcsIDE0OSwgMjI2LCAxNjksIDE3LCAKKyAgICAxNjQsIDIyNiwgMTY5LCAxNywgMTg3LCAyMjYsIDE2OSwgMTcsIDIxMCwgMTM1LCAyMjYsIDE2OSwgMTcsIDE5MiwgMjI2LCAKKyAgICAxNjksIDE3LCAyMTksIDExMywgMjM1LCA4MiwgMiwgMzgsIDI1MSwgMzQsIDU2LCAyMzUsIDgyLCAyLCAyNDcsIDE0OSwgCisgICAgMjM1LCA4MiwgMiwgMjUxLCAzMywgMjM1LCA4MiwgMiwgMjAyLCAyMDMsIDIzNSwgODIsIDEsIDYyLCAyMzUsIDgyLCAxLCAKKyAgICAyNTIsIDEzOCwgMjM1LCA4MiwgMSwgNzAsIDIzNSwgODIsIDEsIDIyOCwgMTUxLCAyMzUsIDgyLCAxLCA2NiwgMjM1LCA4MiwgCisgICAgMSwgMjAzLCAxODIsIDIzNSwgODIsIDEsIDEwOSwgMTQ2LCAyMzUsIDgyLCAxLCAxMDksIDE1NiwgMjM1LCA4MiwgMSwgMjM4LCAKKyAgICAyNTUsIDIzNSwgODIsIDEsIDI1MSwgMTc2LCAyMzUsIDgyLCAxLCAyMTcsIDYzLCAyMzUsIDgyLCAxLCAyNTAsIDEzOSwgCisgICAgMjM1LCA4MiwgMSwgMTYxLCAyMzUsIDgyLCAxLCAyMjYsIDIwNywgMjM1LCA4MiwgMSwgMjM2LCA4OSwgMjM1LCA4MiwgMSwgCisgICAgMjM1LCAxOTksIDIzNSwgODIsIDEsIDIxOSwgMjUzLCAyMzUsIDgyLCAxLCAyNDcsIDE5MCwgMjM1LCA4MiwgMSwgMjQ3LCAKKyAgICAzNywgMjM1LCA4MiwgMSwgMjI3LCAyNDgsIDIzNSwgODIsIDEsIDIyNywgMjE1LCAyMzUsIDgyLCAxLCAyMTgsIDYwLCAyMzUsIAorICAgIDgyLCAxLCAyMDQsIDI1MywgMjM1LCA4MiwgMSwgMjA0LCAyNDEsIDIzNSwgODIsIDEsIDI0MSwgMjIwLCAyMzUsIDgyLCAxLCAKKyAgICAyNDEsIDIwNCwgMjM1LCA4MiwgMSwgMjE5LCAyMSwgMjM1LCA4MiwgMSwgMjA3LCAzNiwgMjM1LCA4MiwgMSwgMjA2LCAxMjIsIAorICAgIDIzNSwgODIsIDEsIDI0MiwgNTgsIDIzNSwgODIsIDEsIDI0MSwgMTAwLCAyMzUsIDgyLCAxLCAxODgsIDIzNSwgODIsIDEsIAorICAgIDE3MiwgMjM1LCA4MiwgMSwgMjE1LCAyNDUsIDIzNSwgODIsIDEsIDI0OSwgMTM2LCAyMzUsIDgyLCAxLCAyNDgsIDIwMCwgCisgICAgMjM1LCA4MiwgMSwgMTc4LCAyMzUsIDgyLCAxLCAxODMsIDIzNSwgODIsIDEsIDIxMywgMjUyLCAyMzUsIDgyLCAxLCAxOTQsIAorICAgIDIzNSwgODIsIDEsIDIyNCwgMTM4LCAyMzUsIDgyLCAxLCAyMDMsIDkwLCAyMzUsIDgyLCAxLCAyMTAsIDExNCwgMjM1LCA4MiwgCisgICAgMSwgMjA4LCAxNzksIDIzNSwgODIsIDEsIDIxMiwgNjQsIDIzNSwgODIsIDEsIDE0NCwgMjM1LCA4MiwgMiwgMjE4LCAxMDAsIAorICAgIDIzNSwgODIsIDIsIDI1MCwgMTIyLCAyMzUsIDgyLCAyMiwgMiwgMjUyLCAxMzgsIDIzNSwgODIsIDIyLCAyLCA3MCwgMjM1LCAKKyAgICA4MiwgMjIsIDIsIDIyOCwgMTUxLCAyMzUsIDgyLCAyMiwgMiwgNjYsIDIzNSwgODIsIDIyLCAyLCAyMDMsIDE4MiwgMjM1LCAKKyAgICA4MiwgMjIsIDIsIDEwOSwgMTQ2LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjM1LCA4MiwgMjIsIDIsIDIzOCwgCisgICAgMjU1LCAyMzUsIDgyLCAyMiwgMiwgMjUxLCAxNzYsIDIzNSwgODIsIDIyLCAyLCAyMTcsIDYzLCAyMzUsIDgyLCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDIzNSwgODIsIDIsIDIwMiwgMjA4LCAyMzUsIDgyLCAyMTcsIDg2LCAyMzUsIDgyLCAyNTAsIDE0MCwgMjI1LCAKKyAgICAyLCA4MSwgMjM1LCA4MiwgMiwgMjE1LCAxMTEsIDIzNSwgODIsIDEsIDIwMywgNTYsIDI1MSwgMzMsIDIzNSwgODIsIDEsIAorICAgIDIwMywgNTYsIDUzLCAyNTEsIDMzLCAyMzUsIDgyLCAxLCAxMDksIDIxMiwgMjE2LCAyMzUsIDgyLCAxLCAxMDksIDIyNCwgCisgICAgMTM5LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAxNTYsIDIzNSwgODIsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAzOCwgMjM1LCAKKyAgICA4MiwgMTcsIDE5OSwgODEsIDM4LCAyMzUsIDgyLCAxNywgMTAyLCAzOCwgMjM1LCA4MiwgMTcsIDEwNSwgMzgsIDIzNSwgODIsIAorICAgIDE3LCAxNDcsIDM4LCAyMzUsIDgyLCAxNywgMTQ5LCAzOCwgMjM1LCA4MiwgMTcsIDE2NCwgMzgsIDIzNSwgODIsIDE3LCAKKyAgICAxODcsIDM4LCAyMzUsIDgyLCAxLCA2MiwgMzgsIDIzNSwgODIsIDEsIDE2MSwgMzgsIDIzNSwgODIsIDEsIDE4OCwgMzgsIAorICAgIDIzNSwgODIsIDEsIDIwMiwgMjM0LCAzOCwgMjM1LCA4MiwgMSwgMTcyLCAxOTUsIDEsIDYyLCAxOTUsIDEsIDI1MiwgMTM4LCAKKyAgICAxOTUsIDEsIDcwLCAxOTUsIDEsIDIyOCwgMTUxLCAxOTUsIDEsIDY2LCAxOTUsIDEsIDIwMywgMTgyLCAxOTUsIDEsIDEwOSwgCisgICAgMTQ2LCAxOTUsIDEsIDEwOSwgMjEyLCAyMTYsIDE5NSwgMSwgMTA5LCAxNTYsIDE5NSwgMSwgMTA5LCAyMjQsIDEzOSwgMTk1LCAKKyAgICAxLCA3MiwgMTk1LCAxLCAyNTEsIDE3NiwgMTk1LCAxLCA3NCwgMTk1LCAxLCAyNTAsIDEzOSwgMTk1LCAxLCAxNjEsIDE5NSwgCisgICAgMSwgMjI2LCAyMDcsIDE5NSwgMSwgMjM2LCA4OSwgMTk1LCAxLCAyMzUsIDE5OSwgMTk1LCAxLCAyMTksIDI1MywgMTk1LCAxLCAKKyAgICAyMTksIDIwMiwgMTk1LCAxLCAyNDcsIDE5MCwgMTk1LCAxLCAyNDcsIDM3LCAxOTUsIDEsIDIyNywgMjQ4LCAxOTUsIDEsIAorICAgIDIyNywgMjE1LCAxOTUsIDEsIDIxOCwgNjAsIDE5NSwgMSwgMjE4LCA0MywgMTk1LCAxLCAyMDQsIDI1MywgMTk1LCAxLCAKKyAgICAyMDQsIDI0MSwgMTk1LCAxLCAyNDEsIDIyMCwgMTk1LCAxLCAyNDEsIDIwNCwgMTk1LCAxLCAyMTksIDIxLCAxOTUsIDEsIAorICAgIDIwNywgMzYsIDE5NSwgMSwgMjA2LCAxMjIsIDE5NSwgMSwgMjQyLCA1OCwgMTk1LCAxLCAyNDEsIDEwMCwgMTk1LCAxLCAKKyAgICAxODgsIDE5NSwgMSwgMjE5LCAxNTQsIDE5NSwgMSwgMTcyLCAxOTUsIDEsIDIxNSwgMjQ1LCAxOTUsIDEsIDI0OSwgMTM2LCAKKyAgICAxOTUsIDEsIDI0OCwgMjAwLCAxOTUsIDEsIDE3OCwgMTk1LCAxLCAyMjEsIDIxNCwgMTk1LCAxLCAxODMsIDE5NSwgMSwgCisgICAgMjEzLCAyNTIsIDE5NSwgMSwgMjEzLCA5MywgMTk1LCAxLCAxOTQsIDE5NSwgMSwgMjI0LCAyMjMsIDE5NSwgMSwgMjAxLCAKKyAgICAxMTQsIDE5NSwgMSwgMjEwLCAxMTQsIDE5NSwgMSwgMjA4LCAxNzksIDE5NSwgMSwgMjEyLCA2NCwgMTk1LCAxLCAxNDQsIAorICAgIDE5NSwgMjIsIDIsIDI1MiwgMTM4LCAxOTUsIDIyLCAyLCA3MCwgMTk1LCAyMiwgMiwgMjI4LCAxNTEsIDE5NSwgMjIsIDIsIAorICAgIDY2LCAxOTUsIDIyLCAyLCAyMDMsIDE4MiwgMTk1LCAyMiwgMiwgMTA5LCAxNDYsIDE5NSwgMjIsIDIsIDEwOSwgMjEyLCAKKyAgICAyMTYsIDE5NSwgMjIsIDIsIDEwOSwgMTU2LCAxOTUsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxOTUsIDIyLCAyLCA3MiwgCisgICAgMTk1LCAyMiwgMiwgMjUxLCAxNzYsIDE5NSwgMjIsIDIsIDc0LCAxOTUsIDIyLCAyLCAyNTAsIDEzOSwgMTk1LCAyLCAyMDIsIAorICAgIDIwOCwgMTk1LCAyLCAyNDcsIDE0OSwgMTk1LCAyLCAyNTEsIDMzLCAxOTUsIDIsIDIwMiwgMjAzLCAxOTUsIDIsIDIxOCwgCisgICAgMTAwLCAxOTUsIDIsIDI1MCwgMTIyLCAxOTUsIDIsIDQ3LCAyNTEsIDMzLCAxOTUsIDIxNywgODYsIDE5NSwgMjA5LCAxNzYsIAorICAgIDE5NSwgMjQyLCAxMCwgMTk1LCA1MywgMjQyLCAxMCwgMTk1LCAyNDYsIDcwLCAxOTUsIDIzNiwgNTMsIDIzNywgOTMsIDE5NSwgCisgICAgMjUyLCAzLCA1NCwgMTk1LCAxNywgMTk5LCA4MSwgMTk1LCAxNywgMTAyLCAxOTUsIDE3LCAxMDUsIDE5NSwgMTcsIDE0NywgCisgICAgMTk1LCAxNywgMTQ5LCAxOTUsIDE3LCAxNjQsIDE5NSwgMTcsIDE4NywgMTk1LCAxNywgMjEwLCAxMzUsIDE5NSwgMTcsIAorICAgIDE5MiwgMTk1LCAxNywgMjE5LCAxMTMsIDE5NSwgMjE1LCAxMzMsIDgxLCAxOTUsIDIyOCwgNzUsIDU0LCAyMDUsIDIxNywgCisgICAgMjUxLCA2MiwgMjA1LCAyMTcsIDEsIDYyLCAyMDUsIDIxNywgMSwgMjUyLCAxMzgsIDIwNSwgMjE3LCAxLCA3MCwgMjA1LCAKKyAgICAyMTcsIDEsIDIyOCwgMTUxLCAyMDUsIDIxNywgMSwgNjYsIDIwNSwgMjE3LCAxLCAyMDMsIDE4MiwgMjA1LCAyMTcsIDEsIAorICAgIDEwOSwgMTQ2LCAyMDUsIDIxNywgMSwgMTA5LCAyMTIsIDIxNiwgMjA1LCAyMTcsIDEsIDEwOSwgMTU2LCAyMDUsIDIxNywgMSwgCisgICAgMTA5LCAyMjQsIDEzOSwgMjA1LCAyMTcsIDEsIDcyLCAyMDUsIDIxNywgMSwgMjUxLCAxNzYsIDIwNSwgMjE3LCAxLCA3NCwgCisgICAgMjA1LCAyMTcsIDEsIDI1MCwgMTM5LCAyMDUsIDIxNywgMSwgMTYxLCAyMDUsIDIxNywgMSwgMjI2LCAyMDcsIDIwNSwgMjE3LCAKKyAgICAxLCAyMzYsIDg5LCAyMDUsIDIxNywgMSwgMjM1LCAxOTksIDIwNSwgMjE3LCAxLCAyMTksIDI1MywgMjA1LCAyMTcsIDEsIAorICAgIDI0NywgMTkwLCAyMDUsIDIxNywgMSwgMjQ3LCAzNywgMjA1LCAyMTcsIDEsIDIyNywgMjQ4LCAyMDUsIDIxNywgMSwgMjI3LCAKKyAgICAyMTUsIDIwNSwgMjE3LCAxLCAyMTgsIDYwLCAyMDUsIDIxNywgMSwgMjA0LCAyNTMsIDIwNSwgMjE3LCAxLCAyMDQsIDI0MSwgCisgICAgMjA1LCAyMTcsIDEsIDI0MSwgMjIwLCAyMDUsIDIxNywgMSwgMjQxLCAyMDQsIDIwNSwgMjE3LCAxLCAyMTksIDIxLCAyMDUsIAorICAgIDIxNywgMSwgMjA3LCAzNiwgMjA1LCAyMTcsIDEsIDIwNiwgMTIyLCAyMDUsIDIxNywgMSwgMjQyLCA1OCwgMjA1LCAyMTcsIAorICAgIDEsIDI0MSwgMTAwLCAyMDUsIDIxNywgMSwgMTg4LCAyMDUsIDIxNywgMSwgMTcyLCAyMDUsIDIxNywgMSwgMjE1LCAyNDUsIAorICAgIDIwNSwgMjE3LCAxLCAyNDksIDEzNiwgMjA1LCAyMTcsIDEsIDI0OCwgMjAwLCAyMDUsIDIxNywgMSwgMTc4LCAyMDUsIDIxNywgCisgICAgMSwgMTgzLCAyMDUsIDIxNywgMSwgMjEzLCAyNTIsIDIwNSwgMjE3LCAxLCAxOTQsIDIwNSwgMjE3LCAxLCAyMDMsIDkwLCAKKyAgICAyMDUsIDIxNywgMSwgMjEwLCAxMTQsIDIwNSwgMjE3LCAxLCAyMDgsIDE3OSwgMjA1LCAyMTcsIDEsIDIxMiwgNjQsIDIwNSwgCisgICAgMjE3LCAxLCAxNDQsIDIwNSwgMjE3LCAyMiwgMiwgMjUyLCAxMzgsIDIwNSwgMjE3LCAyMiwgMiwgNzAsIDIwNSwgMjE3LCAKKyAgICAyMiwgMiwgMjI4LCAxNTEsIDIwNSwgMjE3LCAyMiwgMiwgNjYsIDIwNSwgMjE3LCAyMiwgMiwgMjAzLCAxODIsIDIwNSwgCisgICAgMjE3LCAyMiwgMiwgMTA5LCAxNDYsIDIwNSwgMjE3LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjA1LCAyMTcsIDIyLCAyLCAKKyAgICAxMDksIDE1NiwgMjA1LCAyMTcsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMDUsIDIxNywgMjIsIDIsIDcyLCAyMDUsIDIxNywgCisgICAgMjIsIDIsIDIwOSwgMjUwLCA3MiwgMjA1LCAyMTcsIDIyLCAyLCAyNTEsIDE3NiwgMjA1LCAyMTcsIDIyLCAyLCA3NCwgMjA1LCAKKyAgICAyMTcsIDIyLCAyLCAyMDksIDI1MCwgNzQsIDIwNSwgMjE3LCAyMiwgMiwgMjUwLCAxMzksIDIwNSwgMjE3LCAyLCAyNDcsIAorICAgIDE0OSwgMjA1LCAyMTcsIDIsIDI1MSwgMzMsIDIwNSwgMjE3LCAyLCAyMDIsIDIwMywgMjA1LCAyMTcsIDIsIDIwMiwgMjA4LCAKKyAgICAyMDUsIDIxNywgMiwgMjE4LCAxMDAsIDIwNSwgMjE3LCAyLCAyNTAsIDEyMiwgMjA1LCAyMTcsIDIzNSwgMTEsIDIwNSwgCisgICAgMjE3LCAyNTIsIDMsIDU0LCAyMDUsIDIxNywgMjE3LCA4NiwgMjA1LCAyMTcsIDE3LCAxOTksIDgxLCAyMDUsIDIxNywgMTcsIAorICAgIDEwMiwgMjA1LCAyMTcsIDE3LCAxMDUsIDIwNSwgMjE3LCAxNywgMTQ3LCAyMDUsIDIxNywgMTcsIDE0OSwgMjA1LCAyMTcsIAorICAgIDE3LCAxNjQsIDIwNSwgMjE3LCAxNywgMTg3LCAyMDUsIDIxNywgMTcsIDIxMCwgMTM1LCAyMDUsIDIxNywgMTcsIDE5MiwgCisgICAgMjA1LCAyMTcsIDE3LCAyMTksIDExMywgMTk2LCAxLCA2MiwgMTk2LCAxLCAyNTIsIDEzOCwgMTk2LCAxLCA3MCwgMTk2LCAxLCAKKyAgICAyMjgsIDE1MSwgMTk2LCAxLCA2NiwgMTk2LCAxLCAyMDMsIDE4MiwgMTk2LCAxLCAxMDksIDE0NiwgMTk2LCAxLCAxMDksIAorICAgIDIxMiwgMjE2LCAxOTYsIDEsIDEwOSwgMTU2LCAxOTYsIDEsIDEwOSwgMjI0LCAxMzksIDE5NiwgMSwgNzIsIDE5NiwgMSwgCisgICAgMjUxLCAxNzYsIDE5NiwgMSwgNzQsIDE5NiwgMSwgMjUwLCAxMzksIDE5NiwgMSwgMTYxLCAxOTYsIDEsIDIyNiwgMjA3LCAKKyAgICAxOTYsIDEsIDIzNiwgODksIDE5NiwgMSwgMjM1LCAxOTksIDE5NiwgMSwgMjE5LCAyNTMsIDE5NiwgMSwgMjQ3LCAxOTAsIAorICAgIDE5NiwgMSwgMjQ3LCAzNywgMTk2LCAxLCAyMjcsIDI0OCwgMTk2LCAxLCAyMjcsIDIxNSwgMTk2LCAxLCAyMTgsIDYwLCAKKyAgICAxOTYsIDEsIDIwNCwgMjUzLCAxOTYsIDEsIDIwNCwgMjQxLCAxOTYsIDEsIDI0MSwgMjIwLCAxOTYsIDEsIDI0MSwgMjA0LCAKKyAgICAxOTYsIDEsIDIxOSwgMjEsIDE5NiwgMSwgMjA3LCAzNiwgMTk2LCAxLCAyMDYsIDEyMiwgMTk2LCAxLCAyNDIsIDU4LCAxOTYsIAorICAgIDEsIDI0MSwgMTAwLCAxOTYsIDEsIDE4OCwgMTk2LCAxLCAxNzIsIDE5NiwgMSwgMjE1LCAyNDUsIDE5NiwgMSwgMjQ5LCAKKyAgICAxMzYsIDE5NiwgMSwgMjQ4LCAyMDAsIDE5NiwgMSwgMTc4LCAxOTYsIDEsIDE4MywgMTk2LCAxLCAyMTMsIDI1MiwgMTk2LCAKKyAgICAxLCAxOTQsIDE5NiwgMSwgMjAzLCA5MCwgMTk2LCAxLCAyMTAsIDExNCwgMTk2LCAxLCAyMDgsIDE3OSwgMTk2LCAxLCAyMTIsIAorICAgIDY0LCAxOTYsIDEsIDE0NCwgMTk2LCAyMiwgMiwgMjUyLCAxMzgsIDE5NiwgMjIsIDIsIDcwLCAxOTYsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgMTk2LCAyMiwgMiwgNjYsIDE5NiwgMjIsIDIsIDIwMywgMTgyLCAxOTYsIDIyLCAyLCAxMDksIDE0NiwgMTk2LCAyMiwgCisgICAgMiwgMTA5LCAyMTIsIDIxNiwgMTk2LCAyMiwgMiwgNzIsIDE5NiwgMjIsIDIsIDI1MSwgMTc2LCAxOTYsIDIyLCAyLCA3NCwgCisgICAgMTk2LCAyMiwgMiwgMjUwLCAxMzksIDE5NiwgMiwgMjQ3LCAxNDksIDE5NiwgMiwgMjUxLCAzMywgMTk2LCAyLCAyMDIsIAorICAgIDIwMywgMTk2LCAyLCAyMDIsIDIwOCwgMTk2LCAyLCAyMTgsIDEwMCwgMTk2LCAyLCAyMDksIDE3NywgMTk2LCAyNDIsIDEwLCAKKyAgICAxOTYsIDUzLCAyNDIsIDEwLCAxOTYsIDIxMCwgMTU1LCAyNDAsIDE4MiwgMTk2LCAyMTAsIDE1NSwgMTQ4LCAxOTYsIDIxMywgCisgICAgMTMwLCAyMjIsIDE0OSwgMTk2LCAyMTMsIDEzMCwgMjIyLCAxNDgsIDE5NiwgMjEzLCAxMzAsIDIyMiwgMTQ3LCAxOTYsIAorICAgIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjcsIDgxLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgOTMsIDI2LCAyMDQsIDk5LCAKKyAgICAyMTcsIDIwLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgOTMsIDI2LCAyMzksIDE4MCwgMjQyLCAyNDIsIDE5NiwgCisgICAgMjExLCAxOTMsIDEzNCwgMywgMjEzLCAxOTUsIDI2LCAyMzksIDE4MCwgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgCisgICAgMywgMjEzLCAxOTUsIDI2LCAyMzksIDE4MCwgNTMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIxMywgMTk1LCAKKyAgICAyNiwgMjM5LCAxODAsIDIwNSwgODMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDUzLCAyMTMsIDI2LCAxOTYsIAorICAgIDIxMSwgMTkzLCAxMzQsIDUzLCAyMTMsIDI3LCAzLCAyMTMsIDE5NCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCA1MywgMjQyLCAKKyAgICAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA4MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgCisgICAgMjE0LCA5MCwgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjEwLCAxNTIsIDI0MiwgMjQyLCAxOTYsIDIxMSwgCisgICAgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgMjEzLCAxOTQsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAKKyAgICAxMjAsIDIzOCwgMTczLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgMjM2LCAyMjksIDIzOCwgMTczLCAKKyAgICAxOTYsIDEsIDIwNiwgNDYsIDI1MSwgMTA5LCA3MCwgMTk2LCAxLCAyMDQsIDE0MywgMjUxLCAxMDksIDcwLCAxOTYsIDEsIAorICAgIDIwNCwgMTQzLCAyNTEsIDEwOSwgMjI4LCAxNTEsIDE5NiwgMSwgMjUxLCAxMDksIDY2LCAxOTYsIDIyLCAyLCAyNTEsIDEwOSwgCisgICAgNjYsIDE5NiwgMjIsIDIsIDI1MSwgMTA5LCAyMDMsIDE4MiwgMjIxLCAxMjcsIDEsIDYyLCAyMjEsIDEyNywgMSwgMjUyLCAKKyAgICAxMzgsIDIyMSwgMTI3LCAxLCA3MCwgMjIxLCAxMjcsIDEsIDIyOCwgMTUxLCAyMjEsIDEyNywgMSwgNjYsIDIyMSwgMTI3LCAKKyAgICAxLCAyMDMsIDE4MiwgMjIxLCAxMjcsIDEsIDEwOSwgMTQ2LCAyMjEsIDEyNywgMSwgMTA5LCAyMTIsIDIxNiwgMjIxLCAxMjcsIAorICAgIDEsIDEwOSwgMTU2LCAyMjEsIDEyNywgMSwgMTA5LCAyMjQsIDEzOSwgMjIxLCAxMjcsIDEsIDcyLCAyMjEsIDEyNywgMSwgCisgICAgMjUxLCAxNzYsIDIyMSwgMTI3LCAxLCA3NCwgMjIxLCAxMjcsIDEsIDI1MCwgMTM5LCAyMjEsIDEyNywgMSwgMTYxLCAyMjEsIAorICAgIDEyNywgMSwgMjI2LCAyMDcsIDIyMSwgMTI3LCAxLCAyMzYsIDg5LCAyMjEsIDEyNywgMSwgMjM1LCAxOTksIDIyMSwgMTI3LCAKKyAgICAxLCAyMTksIDI1MywgMjIxLCAxMjcsIDEsIDI0NywgMTkwLCAyMjEsIDEyNywgMSwgMjQ3LCAzNywgMjIxLCAxMjcsIDEsIAorICAgIDIyNywgMjQ4LCAyMjEsIDEyNywgMSwgMjI3LCAyMTUsIDIyMSwgMTI3LCAxLCAyMTgsIDYwLCAyMjEsIDEyNywgMSwgMjA0LCAKKyAgICAyNTMsIDIyMSwgMTI3LCAxLCAyMDQsIDI0MSwgMjIxLCAxMjcsIDEsIDI0MSwgMjIwLCAyMjEsIDEyNywgMSwgMjQxLCAyMDQsIAorICAgIDIyMSwgMTI3LCAxLCAyMTksIDIxLCAyMjEsIDEyNywgMSwgMjA3LCAzNiwgMjIxLCAxMjcsIDEsIDIwNiwgMTIyLCAyMjEsIAorICAgIDEyNywgMSwgMjQyLCA1OCwgMjIxLCAxMjcsIDEsIDI0MSwgMTAwLCAyMjEsIDEyNywgMSwgMTg4LCAyMjEsIDEyNywgMSwgCisgICAgMTcyLCAyMjEsIDEyNywgMSwgMjE1LCAyNDUsIDIyMSwgMTI3LCAxLCAyNDksIDEzNiwgMjIxLCAxMjcsIDEsIDI0OCwgMjAwLCAKKyAgICAyMjEsIDEyNywgMSwgMTc4LCAyMjEsIDEyNywgMSwgMTgzLCAyMjEsIDEyNywgMSwgMjEzLCAyNTIsIDIyMSwgMTI3LCAxLCAKKyAgICAxOTQsIDIyMSwgMTI3LCAxLCAyMDMsIDkwLCAyMjEsIDEyNywgMSwgMjEwLCAxMTQsIDIyMSwgMTI3LCAxLCAyMDgsIDE3OSwgCisgICAgMjIxLCAxMjcsIDEsIDIxMiwgNjQsIDIyMSwgMTI3LCAxLCAxNDQsIDIyMSwgMTI3LCAxLCAyMjQsIDEzOCwgMjIxLCAxMjcsIAorICAgIDIyLCAyLCAyNTIsIDEzOCwgMjIxLCAxMjcsIDIyLCAyLCA3MCwgMjIxLCAxMjcsIDIyLCAyLCAyMjgsIDE1MSwgMjIxLCAKKyAgICAxMjcsIDIyLCAyLCA2NiwgMjIxLCAxMjcsIDIyLCAyLCAyMDMsIDE4MiwgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMTU2LCAyMjEsIDEyNywgMjIsIAorICAgIDIsIDEwOSwgMjI0LCAxMzksIDIyMSwgMTI3LCAyMiwgMiwgNzIsIDIyMSwgMTI3LCAyMiwgMiwgMjUxLCAxNzYsIDIyMSwgCisgICAgMTI3LCAyMiwgMiwgNzQsIDIyMSwgMTI3LCAyMiwgMiwgMjUwLCAxMzksIDIyMSwgMTI3LCAyLCAyNTEsIDMzLCAyMjEsIAorICAgIDEyNywgMiwgMjAyLCAyMDMsIDIyMSwgMTI3LCAyLCAyMDIsIDIwOCwgMjIxLCAxMjcsIDIsIDI1MCwgMjMxLCAyMjEsIDEyNywgCisgICAgMjQyLCAxMCwgMjIxLCAxMjcsIDUzLCAyNDIsIDEwLCAyMjEsIDEyNywgMjUyLCAzLCA1NCwgMjIxLCAxMjcsIDIsIDIzMywgCisgICAgNzAsIDIyMSwgMTI3LCAxNywgMTk5LCA4MSwgMjIxLCAxMjcsIDE3LCAxMDIsIDIyMSwgMTI3LCAxNywgMTA1LCAyMjEsIAorICAgIDEyNywgMTcsIDE0NywgMjIxLCAxMjcsIDE3LCAxNDksIDIyMSwgMTI3LCAxNywgMTY0LCAyMjEsIDEyNywgMTcsIDE4NywgCisgICAgMjIxLCAxMjcsIDE3LCAyMTAsIDEzNSwgMjIxLCAxMjcsIDE3LCAxOTIsIDIyMSwgMTI3LCAxNywgMjE5LCAxMTMsIDkyLCAKKyAgICAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDIxMiwgMjI4LCAyNDgsIDE2MCwgOTIsIDUzLCAyNDgsIDE2MSwgMywgMjE3LCAKKyAgICAyMSwgOTIsIDIwNSwgODMsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgCisgICAgMjEyLCAyMjgsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjEyLCAyMjgsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgCisgICAgOTIsIDIyOCwgNTAsIDI0OCwgMTYwLCA5MiwgMjI4LCA1MCwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgMjA3LCAKKyAgICAxNzIsIDI0OCwgMTYwLCA5MiwgMjA3LCAxNzIsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjA3LCAxNzIsIDI0OCwgCisgICAgMTYxLCAzLCA1MywgMjE3LCAyMSwgOTIsIDIwNCwgMTg1LCAyMDcsIDE3MiwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCAKKyAgICAyMDYsIDI1MywgMSwgNjIsIDIwNiwgMjUzLCAxLCAyNTIsIDEzOCwgMjA2LCAyNTMsIDEsIDcwLCAyMDYsIDI1MywgMSwgCisgICAgMjI4LCAxNTEsIDIwNiwgMjUzLCAxLCA2NiwgMjA2LCAyNTMsIDEsIDIwMywgMTgyLCAyMDYsIDI1MywgMSwgNzIsIDIwNiwgCisgICAgMjUzLCAxLCAyNTEsIDE3NiwgMjA2LCAyNTMsIDEsIDc0LCAyMDYsIDI1MywgMSwgMjUwLCAxMzksIDIwNiwgMjUzLCAxLCAKKyAgICAxNjEsIDIwNiwgMjUzLCAxLCAyMjYsIDIwNywgMjA2LCAyNTMsIDEsIDIzNiwgODksIDIwNiwgMjUzLCAxLCAyMzUsIDE5OSwgCisgICAgMjA2LCAyNTMsIDEsIDIxOSwgMjUzLCAyMDYsIDI1MywgMSwgMjQ3LCAxOTAsIDIwNiwgMjUzLCAxLCAyNDcsIDM3LCAyMDYsIAorICAgIDI1MywgMSwgMjI3LCAyNDgsIDIwNiwgMjUzLCAxLCAyMjcsIDIxNSwgMjA2LCAyNTMsIDEsIDIxOCwgNjAsIDIwNiwgMjUzLCAKKyAgICAxLCAyMDQsIDI1MywgMjA2LCAyNTMsIDEsIDIwNCwgMjQxLCAyMDYsIDI1MywgMSwgMjQxLCAyMjAsIDIwNiwgMjUzLCAxLCAKKyAgICAyNDEsIDIwNCwgMjA2LCAyNTMsIDEsIDIxOSwgMjEsIDIwNiwgMjUzLCAxLCAyMDcsIDM2LCAyMDYsIDI1MywgMSwgMjA2LCAKKyAgICAxMjIsIDIwNiwgMjUzLCAxLCAyNDIsIDU4LCAyMDYsIDI1MywgMSwgMjQxLCAxMDAsIDIwNiwgMjUzLCAxLCAxODgsIDIwNiwgCisgICAgMjUzLCAxLCAxNzIsIDIwNiwgMjUzLCAxLCAyMTUsIDI0NSwgMjA2LCAyNTMsIDEsIDI0OSwgMTM2LCAyMDYsIDI1MywgMSwgCisgICAgMjQ4LCAyMDAsIDIwNiwgMjUzLCAxLCAxNzgsIDIwNiwgMjUzLCAxLCAxODMsIDIwNiwgMjUzLCAxLCAyMTMsIDI1MiwgMjA2LCAKKyAgICAyNTMsIDEsIDE5NCwgMjA2LCAyNTMsIDEsIDIwMywgOTAsIDIwNiwgMjUzLCAxLCAyMTAsIDExNCwgMjA2LCAyNTMsIDEsIAorICAgIDIxMiwgNjQsIDIwNiwgMjUzLCAxLCAxNDQsIDIwNiwgMjUzLCAxLCAyMTIsIDIxNSwgMjA2LCAyNTMsIDIsIDI1MSwgMzMsIAorICAgIDIwNiwgMjUzLCAyLCAyMDIsIDIwMywgMjA2LCAyNTMsIDIyLCAyLCAyNTIsIDEzOCwgMjA2LCAyNTMsIDIyLCAyLCA3MCwgCisgICAgMjA2LCAyNTMsIDIyLCAyLCAyMjgsIDE1MSwgMjA2LCAyNTMsIDIyLCAyLCA2NiwgMjA2LCAyNTMsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjA2LCAyNTMsIDIyLCAyLCA3MiwgMjA2LCAyNTMsIDIyLCAyLCAyNTEsIDE3NiwgMjA2LCAyNTMsIDIyLCAyLCA3NCwgCisgICAgMjA2LCAyNTMsIDIyLCAyLCAyNTAsIDEzOSwgMjA2LCAyNTMsIDIsIDIwMiwgMjA4LCAyMDYsIDI1MywgMiwgMjE4LCAxMDAsIAorICAgIDIwNiwgMjUzLCAxNywgMTk5LCA4MSwgMjA2LCAyNTMsIDE3LCAxMDIsIDIwNiwgMjUzLCAxNywgMTA1LCAyMDYsIDI1MywgCisgICAgMTcsIDE0NywgMjA2LCAyNTMsIDE3LCAxNDksIDIwNiwgMjUzLCAxNywgMTY0LCAyMDYsIDI1MywgMTcsIDE4NywgMjA2LCAKKyAgICAyNTMsIDE3LCAyMTAsIDEzNSwgMjA2LCAyNTMsIDE3LCAxOTIsIDIwNiwgMjUzLCAxNywgMjE5LCAxMTMsIDI1MSwgMTgwLCAKKyAgICAxLCAxNjEsIDI1MSwgMTgwLCAxLCAyMjYsIDIwNywgMjUxLCAxODAsIDEsIDIxOSwgMjUzLCAyNTEsIDE4MCwgMSwgMTg4LCAKKyAgICAyNTEsIDE4MCwgMSwgMjA3LCAzNiwgMjUxLCAxODAsIDEsIDI1MSwgMTA5LCAyMDcsIDM2LCAyNTEsIDE4MCwgMSwgMTcyLCAKKyAgICAyNTEsIDE4MCwgMSwgMjE1LCAyNDUsIDI1MSwgMTgwLCAxLCAyNDksIDEzNiwgMjUxLCAxODAsIDEsIDE3OCwgMjUxLCAxODAsIAorICAgIDEsIDIyNywgMjQ4LCAyNTEsIDE4MCwgMSwgMjQ3LCAzNywgMjUxLCAxODAsIDEsIDIwNiwgMTIyLCAyNTEsIDE4MCwgMSwgCisgICAgMjEzLCAyNTIsIDI1MSwgMTgwLCAxLCAxOTQsIDI1MSwgMTgwLCAxLCAyMTIsIDY0LCAyNTEsIDE4MCwgMSwgMjE4LCA2MCwgCisgICAgMjUxLCAxODAsIDEsIDE0NCwgMjUxLCAxODAsIDEsIDYyLCAyNTEsIDE4MCwgMSwgMjQyLCA1OCwgMjUxLCAxODAsIDEsIAorICAgIDI0MSwgMTAwLCAyNTEsIDE4MCwgMSwgMjM2LCA4OSwgMjUxLCAxODAsIDEsIDI1MSwgMTA5LCAyMzYsIDg5LCAyNTEsIDE4MCwgCisgICAgMSwgMjM1LCAxOTksIDI1MSwgMTgwLCAxLCAyNDgsIDIwMCwgMjUxLCAxODAsIDEsIDIyNywgMjE1LCAyNTEsIDE4MCwgMTExLCAKKyAgICAyLCAxNzksIDE5NCwgMjUxLCAxODAsIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgMjUxLCAxODAsIDExMSwgMiwgMTc5LCAyMjQsIAorICAgIDE5NywgMjEzLCAyNTIsIDI1MSwgMTgwLCAyMiwgMiwgNjIsIDI1MSwgMTgwLCAyMiwgMiwgMjUyLCAxMzgsIDI1MSwgMTgwLCAKKyAgICAyMiwgMiwgNzAsIDI1MSwgMTgwLCAyMiwgMiwgMjI4LCAxNTEsIDI1MSwgMTgwLCAyMiwgMiwgNjYsIDI1MSwgMTgwLCAyMiwgCisgICAgMiwgMjAzLCAxODIsIDI1MSwgMTgwLCAyMiwgMiwgNzIsIDI1MSwgMTgwLCAyMiwgMiwgMjUwLCAxMTcsIDI1MSwgMTgwLCAKKyAgICAyMiwgMiwgNzQsIDI1MSwgMTgwLCAyMiwgMiwgMjUxLCAxNzYsIDI1MSwgMTgwLCAyMiwgMiwgMjUxLCAxMDEsIDI1MSwgCisgICAgMTgwLCAyLCAyMjYsIDE0OSwgMjUxLCAxODAsIDE3LCAxOTksIDgxLCAyNTEsIDE4MCwgMTcsIDEwMiwgMjUxLCAxODAsIDE3LCAKKyAgICAxMDUsIDI1MSwgMTgwLCAxNywgMTQ3LCAyNTEsIDE4MCwgMTcsIDE0OSwgMjUxLCAxODAsIDE3LCAxNjQsIDI1MSwgMTgwLCAKKyAgICAxNywgMTg3LCAyNTEsIDE4MCwgMTcsIDIxMCwgMTM1LCAyNTEsIDE4MCwgMTcsIDE5MiwgMjUxLCAxODAsIDE3LCAyMTksIAorICAgIDExMywgMjUxLCAxODAsIDQxLCAyMDYsIDE2NiwgMjUxLCAxODAsIDQxLCAyMDQsIDE1OSwgMjUxLCAxODAsIDIsIDQsIDIxMSwgCisgICAgMTkyLCAyNTEsIDE4MCwgMiwgMjExLCAxOTIsIDI1MSwgMTgwLCAyLCAyMTIsIDE2NiwgMjUxLCAxODAsIDE2LCAyMDIsIAorICAgIDIzNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxOSwgMjUyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDEsIDMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMTk5LCAyMTEsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA2LCAxLCAxODMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDI0NSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDIyOCwgMTUxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjAzLCAxODIsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCA3MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDc0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjUxLCAKKyAgICA3NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzNiwgODksIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMjYsIDg4LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM4LCAxNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDE5NSwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwNCwgMzgsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzgsIDE2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxNywgMTI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA0LCAyNDgsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA2LCAxLCAyMTgsIDg2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjQyLCA1OCwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDI1MCwgMTU1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjUxLCAxMDEsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCAyNDgsIDM2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE0LCAyMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAKKyAgICA2LCAxLCAyMzQsIDQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjMzLCAxOTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAKKyAgICAxLCAyMzMsIDEyMiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzNCwgMTY2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgCisgICAgMjA4LCAxMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDksIDE2MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIAorICAgIDIwMiwgMTk0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE5LCAyNTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCA2MiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwMSwgMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAxOTksIDIxMSwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE4MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMjQ1LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjI4LCAxNTEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDMsIDE4MiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDcyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgNzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNTEsIAorICAgIDc2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM2LCA4OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIyNiwgODgsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzgsIDE0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMTk1LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA0LCAzOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzOCwgMTYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE3LCAxMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDQsIDI0OCwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDQsIDEsIDIxOCwgODYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNDIsIDU4LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjUwLCAxNTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNTEsIDEwMSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDI0OCwgMzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTQsIDIyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIAorICAgIDQsIDEsIDIzNCwgNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzMsIDE5NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIAorICAgIDEsIDIzMywgMTIyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM0LCAxNjYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAKKyAgICAyMDgsIDEzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwOSwgMTYxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgCisgICAgMjAyLCAxOTQsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTk5LCA4MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxMDIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTA1LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE0NywgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDE3LCAxNDksIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTY0LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE4NywgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAyMTAsIDEzNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxOTIsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCAxNywgMjE5LCAxMTMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA2LCAxNjYsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0MSwgMjA0LCAxNTksIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA2LCA2NywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAKKyAgICAyMzYsIDIzNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMzcsIDEwNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDksIAorICAgIDkyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIxMCwgMTI5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIzOCwgMjIyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIxOSwgMTA4LCAyMDEsIDk0LCAyNDYsIDE0MiwgMjE3LCA4NiwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNzIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTYxLCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE5NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNzgsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQyLCA1OCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxOTksIDExNCwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDMsIDkwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIAorICAgIDIxOSwgMjUzLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE0NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCAyMzYsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIyNiwgMjA3LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDEsIDIxMiwgNjQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ5LCAxMzYsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ3LCAxOTAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjA3LCAKKyAgICAzNiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDYsIDEyMiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCAxODgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjE1LCAyNDUsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMSwgMjEzLCAyNTIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjM3LCAxOTUsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ3LCAzNywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA2MiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3MCwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA2NiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDQsIDQ2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIzMiwgCisgICAgMjQwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMTYsIDIyNiwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAxLCA0NywgMjI3LCAxMTgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwNywgODMsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIyMywgMjQzLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDQ3LCAyMjAsIDIxNCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMTU2LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMDEsIDE0NywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgCisgICAgMjE5LCAyNTUsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwMCwgMTIzLCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMjI0LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTMsIAorICAgIDE5LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDIzNSwgMTIzLCAyMDgsIDc2LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIAorICAgIDksIDIzNSwgMTIzLCAyMDgsIDc3LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMTUwLCAKKyAgICAyMjQsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAxNTAsIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAKKyAgICAyMTIsIDksIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjEsIDIwNSwgMjA1LCAxNzQsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIwMywgNzIsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjIxLCAyMDUsIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIAorICAgIDIyMSwgMjA1LCAxNTAsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAyMjQsIAorICAgIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgCisgICAgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgMjM3LCA4OSwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NywgMjM3LCA4OSwgMTc0LCAxLCA2MiwgMTc0LCAxLCAKKyAgICAyNTIsIDEzOCwgMTc0LCAxLCA3MCwgMTc0LCAxLCAyMjgsIDE1MSwgMTc0LCAxLCA2NiwgMTc0LCAxLCAyMDMsIDE4MiwgCisgICAgMTc0LCAxLCAxMDksIDE0NiwgMTc0LCAxLCAxMDksIDIxMiwgMjE2LCAxNzQsIDEsIDEwOSwgMTU2LCAxNzQsIDEsIDcyLCAKKyAgICAxNzQsIDEsIDI1MSwgMTc2LCAxNzQsIDEsIDc0LCAxNzQsIDEsIDI1MCwgMTM5LCAxNzQsIDEsIDE2MSwgMTc0LCAxLCAyMjYsIAorICAgIDIwNywgMTc0LCAxLCAyMzYsIDg5LCAxNzQsIDEsIDIzNSwgMTk5LCAxNzQsIDEsIDIxOSwgMjUzLCAxNzQsIDEsIDI0NywgCisgICAgMTkwLCAxNzQsIDEsIDI0NywgMzcsIDE3NCwgMSwgMjI3LCAyNDgsIDE3NCwgMSwgMjI3LCAyMTUsIDE3NCwgMSwgMjE4LCAKKyAgICA2MCwgMTc0LCAxLCAyMDQsIDI1MywgMTc0LCAxLCAyMDQsIDI0MSwgMTc0LCAxLCAyNDEsIDIyMCwgMTc0LCAxLCAyNDEsIAorICAgIDIwNCwgMTc0LCAxLCAyMTksIDIxLCAxNzQsIDEsIDIwNywgMzYsIDE3NCwgMSwgMjA2LCAxMjIsIDE3NCwgMSwgMjQyLCA1OCwgCisgICAgMTc0LCAxLCAyNDEsIDEwMCwgMTc0LCAxLCAxODgsIDE3NCwgMSwgMTcyLCAxNzQsIDEsIDIxNSwgMjQ1LCAxNzQsIDEsIAorICAgIDI0OSwgMTM2LCAxNzQsIDEsIDI0OCwgMjAwLCAxNzQsIDEsIDE3OCwgMTc0LCAxLCAxODMsIDE3NCwgMSwgMjEzLCAyNTIsIAorICAgIDE3NCwgMSwgMTk0LCAxNzQsIDEsIDIwMywgOTAsIDE3NCwgMSwgMjEwLCAxMTQsIDE3NCwgMSwgMjA4LCAxNzksIDE3NCwgMSwgCisgICAgMjEyLCA2NCwgMTc0LCAxLCAxNDQsIDE3NCwgMjIsIDIsIDI1MiwgMTM4LCAxNzQsIDIyLCAyLCA3MCwgMTc0LCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE3NCwgMjIsIDIsIDY2LCAxNzQsIDIyLCAyLCAyMDMsIDE4MiwgMTc0LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE3NCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE3NCwgMjIsIDIsIDEwOSwgMTU2LCAxNzQsIDIyLCAyLCA3MiwgMTc0LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDE3NCwgMjIsIDIsIDc0LCAxNzQsIDIyLCAyLCAyNTAsIDEzOSwgMTc0LCAyLCAyNDcsIDE0OSwgMTc0LCAKKyAgICAyLCAyNTEsIDMzLCAxNzQsIDIsIDIwMiwgMjAzLCAxNzQsIDIsIDIwMiwgMjA4LCAxNzQsIDIsIDI1MCwgMTIyLCAxNzQsIAorICAgIDI0MiwgMTAsIDE3NCwgNTMsIDI0MiwgMTAsIDE3NCwgMjAwLCAyMzgsIDIxMCwgMTU0LCAxNzQsIDIzNiwgNTMsIDIzNywgCisgICAgOTIsIDE3NCwgMjM2LCA1MywgMjM3LCA5MSwgMTc0LCAxNywgMTk5LCA4MSwgMTc0LCAxNywgMTAyLCAxNzQsIDE3LCAxMDUsIAorICAgIDE3NCwgMTcsIDE0NywgMTc0LCAxNywgMTQ5LCAxNzQsIDE3LCAxNjQsIDE3NCwgMTcsIDE4NywgMTc0LCAxNywgMjEwLCAKKyAgICAxMzUsIDE3NCwgMTcsIDE5MiwgMTc0LCAxNywgMjE5LCAxMTMsIDE3NCwgNDEsIDEwMiwgMTc0LCA0MSwgMTA1LCAxNzQsIAorICAgIDQxLCAxNDcsIDE3NCwgNDEsIDE0OSwgMTc0LCA0MSwgMTY0LCAxNzQsIDQxLCAxODcsIDE3NCwgNDEsIDIxMCwgMTM1LCAKKyAgICAxNzQsIDQxLCAxOTIsIDE3NCwgNDEsIDIxOSwgMTEzLCAxNzQsIDQxLCAyMDYsIDE2NiwgMTc0LCA0MSwgMjA0LCAxNTksIAorICAgIDE3NCwgNDEsIDIwNiwgNjcsIDE3NCwgNDEsIDIzNiwgMjM1LCAxNzQsIDQxLCAyMzcsIDEwNCwgMTc0LCA0MSwgMjA5LCA5MiwgCisgICAgMTc0LCA0MSwgMjEwLCAxMjksIDE3NCwgNDEsIDIzOCwgMjIyLCAxNzQsIDQxLCAyMTksIDEwOCwgMTc0LCAyMzMsIDgxLCAKKyAgICAyMDMsIDI0MCwgODEsIDIyMiwgMTUxLCAyMzQsIDEzNywgODEsIDIyMiwgMTUxLCAxMzQsIDIxMCwgMTA2LCAyMjIsIDE1MSwgCisgICAgMSwgMTYxLCAyMjIsIDE1MSwgMSwgMjI2LCAyMDcsIDIyMiwgMTUxLCAxLCAyMzYsIDg5LCAyMjIsIDE1MSwgMSwgMjE5LCAKKyAgICAyNTMsIDIyMiwgMTUxLCAxLCAyNDcsIDE5MCwgMjIyLCAxNTEsIDEsIDI0NywgMzcsIDIyMiwgMTUxLCAxLCAyMjcsIDI0OCwgCisgICAgMjIyLCAxNTEsIDEsIDIxOCwgNjAsIDIyMiwgMTUxLCAxLCAyMDcsIDM2LCAyMjIsIDE1MSwgMSwgMjA2LCAxMjIsIDIyMiwgCisgICAgMTUxLCAxLCAyNDIsIDU4LCAyMjIsIDE1MSwgMSwgMTg4LCAyMjIsIDE1MSwgMSwgMTcyLCAyMjIsIDE1MSwgMSwgMjE1LCAKKyAgICAyNDUsIDIyMiwgMTUxLCAxLCAyNDksIDEzNiwgMjIyLCAxNTEsIDEsIDE3OCwgMjIyLCAxNTEsIDEsIDIwNSwgMzIsIDIyMiwgCisgICAgMTUxLCAxLCAyMDUsIDIyLCAyMjIsIDE1MSwgMSwgMjM5LCA5MywgMjIyLCAxNTEsIDEsIDIwMSwgMTE0LCAyMjIsIDE1MSwgCisgICAgMSwgMTk5LCA3NywgMjIyLCAxNTEsIDEsIDE5OSwgMTE0LCAyMjIsIDE1MSwgMSwgMjU1LCAxNDIsIDIyMiwgMTUxLCAxLCAKKyAgICAxODMsIDIyMiwgMTUxLCAxLCAyMTMsIDI1MiwgMjIyLCAxNTEsIDEsIDE5NCwgMjIyLCAxNTEsIDEsIDIxMCwgMTE0LCAyMjIsIAorICAgIDE1MSwgMSwgMjEyLCA2NCwgMjIyLCAxNTEsIDEsIDE0NCwgMjIyLCAxNTEsIDEsIDYyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMTYxLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjI2LCAyMDcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMzYsIDg5LCAyMjIsIAorICAgIDE1MSwgMjA4LCAxMiwgMSwgMjE5LCAyNTMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDcsIDE5MCwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDI0NywgMzcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMjcsIDI0OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDIxOCwgNjAsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDcsIDM2LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA2LCAxMjIsIAorICAgIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDIsIDU4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTg4LCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMTcyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjE1LCAyNDUsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDksIAorICAgIDEzNiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE3OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNSwgMzIsIDIyMiwgMTUxLCAKKyAgICAyMDgsIDEyLCAxLCAyMDUsIDIyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjM5LCA5MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDIwMSwgMTE0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTk5LCA3NywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE5OSwgMTE0LCAKKyAgICAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTgzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAxOTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTAsIDExNCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMiwgCisgICAgNjQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxNDQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCA2MiwgMjIyLCAxNTEsIDIyLCAyLCAKKyAgICAyNTIsIDEzOCwgMjIyLCAxNTEsIDIyLCAyLCA3MCwgMjIyLCAxNTEsIDIyLCAyLCA2NiwgMjIyLCAxNTEsIDIyLCAyLCA3MiwgCisgICAgMjIyLCAxNTEsIDIyLCAyLCA3NCwgMjIyLCAxNTEsIDIsIDI1MSwgMzMsIDIyMiwgMTUxLCAyLCAyNDcsIDE0OSwgMTAsIDIsIAorICAgIDYyLCAxMCwgMiwgMzUsIDI0LCA2MiwgMTAsIDIsIDM1LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAzNSwgMjQsIDIzNiwgNTgsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMzUsIDI0LCAxNDQsIDEwLCAyLCAzNSwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMzUsIDI0LCAKKyAgICAyMjUsIDE1NiwgMjM1LCAyOCwgMTAsIDIsIDM1LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAzNSwgMjQsIDIxMiwgNTAsIDEwLCAKKyAgICAyLCAyNTQsIDE0NywgMTAsIDIsIDI1MiwgODksIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyNTIsIAorICAgIDkwLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjM2LCA3MSwgMTAsIDIsIDI1MiwgOTAsIAorICAgIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAxNDQsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI4LCAxMjcsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI1LCAxNTcsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjEwLCA0OSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgCisgICAgMTAsIDIsIDI1MiwgOTAsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDYsIDEwLCAyLCAyNTIsIDcsIDI0LCAyNDksIDk4LCAxMCwgCisgICAgMiwgMjUyLCA3LCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDcsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAKKyAgICAxNzksIDEwLCAyLCAyNTIsIDcsIDI0LCAyMTAsIDExMiwgMTAsIDIsIDI1MiwgNywgMjQsIDIwNywgMCwgMTAsIDIsIDI1MSwgCisgICAgMjM1LCAxMCwgMiwgMjUxLCAxNTksIDEwLCAyLCAyNTEsIDE2MCwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjUxLCAxNjAsIDI0LCAKKyAgICAyMTAsIDExLCA5MywgMjM1LCAxMzUsIDEwLCAyLCAyNTEsIDE1MSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjUxLCAxNTEsIAorICAgIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDI0MSwgMjksIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjUxLCAKKyAgICAxNTIsIDI0LCAxNDQsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIyNywgOTEsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIyNiwgCisgICAgMTYzLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIAorICAgIDI1MSwgMTQ4LCAxMCwgMiwgMjUxLCAxNDAsIDEwLCAyLCAyNTEsIDk3LCAxMCwgMiwgMjUxLCA5OCwgMjQsIDIxMCwgNjUsIAorICAgIDEwLCAyLCAyNTEsIDg1LCAxMCwgMiwgMjUxLCA4NiwgMTE5LCAyNTEsIDg1LCAxMCwgMiwgMjUxLCA4NiwgMTI2LCAyMDUsIAorICAgIDIzMiwgMTAsIDIsIDI1MSwgODYsIDkzLCAyMjAsIDE0OCwgMjE3LCA0MCwgMjUxLCA4NiwgOTMsIDIyMCwgMTQ3LCAxMCwgMiwgCisgICAgMjUxLCA4NiwgOTMsIDIyMCwgMTQ4LCAyMDgsIDE5MiwgMTAsIDIsIDI1MSwgNTMsIDEwLCAyLCAyNTEsIDIzLCAxMCwgMiwgCisgICAgMjUwLCAyNDYsIDEwLCAyLCAyNTAsIDI0NywgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjUwLCAyMTgsIDEwLCAyLCAyNTAsIAorICAgIDE4NiwgMTAsIDIsIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxODIsIDE5OSwgMzIsIDIwNiwgMTU1LCAxMCwgMiwgMjUwLCAKKyAgICAxODIsIDIyNywgOTUsIDIwNiwgMTU1LCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDIwNCwgMjEwLCAxMTksIAorICAgIDIwNCwgMjEwLCAyMDQsIDIxMCwgMTE5LCAyMDQsIDIxMCwgMjE2LCAxMzUsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIAorICAgIDE4MiwgMTE5LCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAyNDIsIAorICAgIDIyOCwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDExOSwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE3OSwgMTAsIDIsIDI1MCwgCisgICAgMTc1LCAxMCwgMiwgMjQ5LCAxMzYsIDEwLCAyLCAyNDksIDExOCwgMTAsIDIsIDI0OSwgMTEyLCAxMCwgMiwgMjQ5LCAxMDUsIAorICAgIDEwLCAyLCAyNDksIDk5LCAxMCwgMiwgMjQ5LCAxMDAsIDExOSwgMjQ5LCA5OSwgMTAsIDIsIDI0OSwgOTgsIDEwLCAyLCAKKyAgICAxNDgsIDEwLCAyLCAyNDksIDc2LCAxMCwgMiwgMjQ4LCAxODgsIDEwLCAyLCAyNDgsIDE4OSwgMjQsIDYyLCAxMCwgMiwgCisgICAgMjQ4LCAxODksIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjQ4LCAxODksIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDI0OCwgMzYsIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgMzcsIDI1MiwgODksIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgCisgICAgMzcsIDIwNCwgNSwgMTAsIDIsIDI0OCwgMzcsIDI0MiwgMjI4LCAyNDgsIDM2LCAxMCwgMiwgMjQ4LCAxNCwgMTAsIDIsIAorICAgIDI0OCwgMTUsIDExOSwgMjQ4LCAxNCwgMTAsIDIsIDI0OCwgMywgMTAsIDIsIDI0OCwgMiwgMTAsIDIsIDI0MiwgNTgsIDEwLCAKKyAgICAyLCAyNDIsIDQ4LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAzNSwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyNTEsIDk3LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyNDksIDk4LCAxMCwgMiwgCisgICAgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM2LCA4OSwgCisgICAgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM2LCA5MCwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAKKyAgICAxMzIsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM1LCAxNDMsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNSwgMzksIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDE0NCwgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjI4LCAzNSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI4LCAzNiwgOTMsIAorICAgIDIyNCwgNDIsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNywgNzYsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgCisgICAgMjQsIDE5NCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI0LCA0MiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAKKyAgICAyNCwgMjI0LCA0MywgOTMsIDIyMiwgMTM0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjQsIDI1LCAxMCwgMiwgCisgICAgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMTYsIDEzNiwgCisgICAgOTMsIDIxNiwgMTM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDksIDE4MiwgMTAsIDIsIDI0MiwgNDksIAorICAgIDIyNiwgMTMyLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDQsIDQ4LCA5MywgMjM1LCAKKyAgICAxNDMsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwMywgMTkwLCAxMCwgMiwgMjQyLCAyMCwgMTAsIDIsIDI0MSwgCisgICAgMjU0LCAxMCwgMiwgMjQxLCAyNTMsIDEwLCAyLCAyNDEsIDI1MiwgMTAsIDIsIDI0MSwgNzYsIDEwLCAyLCAyNDEsIDU4LCAKKyAgICAxMCwgMiwgMjQxLCAzMSwgMTAsIDIsIDI0MSwgMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjQxLCAyOSwgMTAsIDIsIDI0MSwgCisgICAgMTksIDEwLCAyLCAyNDEsIDIwLCAyMjcsIDM5LCAxMDgsIDIzNSwgMjksIDI0MCwgMjU1LCAxMCwgMiwgMjQwLCAyNTUsIDEwLCAKKyAgICAyLCAyMzksIDEzNywgMTAsIDIsIDIzOSwgMTM4LCAxMTksIDIzOSwgMTM3LCAxMCwgMiwgMjM5LCAxMzgsIDIzNSwgMjgsIAorICAgIDEwLCAyLCAyMzksIDEzOCwgMjEwLCA0NiwgMTAsIDIsIDIzOSwgMTM1LCAxMCwgMiwgMjM5LCAxMzYsIDI0LCAyMzgsIDkxLCAKKyAgICAxMCwgMiwgMjM5LCAxMzQsIDEwLCAyLCAyMzksIDEzMSwgMTAsIDIsIDIzOSwgMTMwLCAxMCwgMiwgMjM5LCAxMjksIDEwLCAKKyAgICAyLCAyMzksIDEyNSwgMTAsIDIsIDIzOSwgMTIzLCAxMCwgMiwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyMzksIDEyNCwgCisgICAgMjM1LCAyOSwgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTIyLCAxMCwgMiwgMjM5LCAxMTUsIDEwLCAyLCA3MiwgMTAsIDIsIAorICAgIDE5NywgMjQsIDIxNiwgMTM1LCAxMCwgMiwgMTk3LCAxMTksIDE5NywgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjM5LCAyOCwgMTAsIDIsIDIzOSwgMjksIDI0LCAzNSwgOTMsIDIzNCwgMjM2LCA5MywgMjQyLCA1OCwgMTAsIDIsIDIzOSwgCisgICAgMjksIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxMiwgCisgICAgMzUsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzOSwgMjksIDI0LCA2NiwgMTAsIDIsIDIzOSwgMSwgCisgICAgMTAsIDIsIDIzOCwgMjQ1LCAxMCwgMiwgMjM4LCAyMDksIDEwLCAyLCAyMzgsIDE3OSwgMTAsIDIsIDIzOCwgMTgwLCAyNCwgCisgICAgMjM2LCA1NywgMTAsIDIsIDIzOCwgMTgwLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzgsIDE4MCwgMjQsIAorICAgIDIyMiwgNzYsIDEwLCAyLCAyMzgsIDE4MCwgMjQyLCAyMjgsIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDIxNywgNDAsIAorICAgIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDIwOCwgMTkyLCAxMCwgMiwgMjM4LCAxMTIsIDEwLCAyLCAyMzgsIDEwOSwgCisgICAgMTAsIDIsIDIzOCwgOTEsIDEwLCAyLCAyMzgsIDEwLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDYyLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjQsIDM1LCA5MywgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIDI0LCAzNSwgOTMsIDIyNSwgOTQsIDI0LCAyMjUsIDkzLCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjQsIDI1MSwgODUsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjksIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMTQ0LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzNCwgMjM2LCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjM4LCAxMSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMzgsIDExLCAyNCwgMjI3LCAzOSwgMjA4LCAxOTIsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI2LCAxMywgMTAsIDIsIDIzOCwgCisgICAgMTEsIDI0LCAxOTQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyNCwgMjI0LCAyMTAsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI0LCA0MiwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDQsIDQ3LCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzYsIDg5LCAxMCwgMiwgMjM2LCA5MCwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIzNiwgODcsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMzUsIDkzLCAyNDIsIDU5LCA5MywgMTQ0LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDM1LCA5MywgMTQ0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDM1LCA5MywgMjI4LCAxNTMsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjUyLCA3LCAyMDYsIDE1NiwgOTMsIDIwNywgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjUxLCA4NSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTAsIDE4MCwgOTMsIDIzNiwgNzEsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQ5LCA3NywgOTMsIDIxMywgMjUyLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0OCwgMywgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDgsIDQsIDkzLCAyMTMsIDI1MiwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDIsIDU4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0MSwgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjQxLCAzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjM4LCAyMDksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAyMTAsIDkzLCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAKKyAgICAxNzksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAxODAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIzNSwgMTYxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTU5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTYwLCA5MywgCisgICAgNjIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNDQsIDkzLCAyMDgsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNCwgCisgICAgMjM2LCA5MywgMjI0LCA0MywgOTMsIDIzOCwgOTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjM0LCAyMTcsIDkzLCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCA3NiwgOTMsIDIyNCwgMjEwLCAxMCwgCisgICAgMiwgMjM2LCA4OCwgMjQsIDIzMywgOTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI4LCAyMSwgOTMsIDIzMywgOTgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjcsIAorICAgIDc2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI2LCAxNTcsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI2LCAxNTgsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNiwgMTQsIDkzLCAyNTEsIAorICAgIDg1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIAorICAgIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMTcyLCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEyLCAwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgNjUsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjEwLCA2NiwgOTMsIDIwNCwgMTkyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgMzEsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjA3LCAyMzQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDY2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA0LCAzNywgOTMsIDIzOSwgCisgICAgMTM3LCAxMCwgMiwgMjM2LCA4OCwgMTE5LCAyMzYsIDg3LCAxMCwgMiwgMjM2LCA4MiwgMTAsIDIsIDIzNiwgODMsIDI0MiwgCisgICAgMjI4LCAyMzYsIDgyLCAxMCwgMiwgMjM2LCA4MCwgMTAsIDIsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAKKyAgICAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA3MSwgMTAsIDIsIDIzNiwgNzIsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgCisgICAgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA3MCwgMTAsIDIsIDIzNiwgNjgsIDEwLCAyLCAyMzYsIDU5LCAxMCwgMiwgMjM2LCAKKyAgICA1NywgMTAsIDIsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA1OCwgMTE5LCAyMzYsIDU3LCAxMCwgMiwgMjM2LCAKKyAgICA1OCwgMjQyLCAyMjgsIDIzNiwgNTcsIDEwLCAyLCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA0OCwgMTAsIDIsIDIzNiwgNDMsIAorICAgIDEwLCAyLCAyMzUsIDI0MiwgMTAsIDIsIDIzNSwgMjQzLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDE2MSwgMTAsIDIsIAorICAgIDIzNSwgMTYyLCAyNCwgNzIsIDEwLCAyLCAyMzUsIDE2MiwgMjQsIDY2LCAxMCwgMiwgMjM1LCAxNjIsIDI0MiwgMjI4LCAKKyAgICAyMzUsIDE2MSwgMTAsIDIsIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAxNjAsIDExOSwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIAorICAgIDE2MCwgMjQyLCAyMjgsIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAxNTYsIDEwLCAyLCAyMzUsIDE0MywgMTAsIDIsIDIzNSwgCisgICAgMTQ0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCAxNDEsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDM1LCA5MywgMjI4LCAxNTMsIDEwLCAKKyAgICAyLCAyMzUsIDE0MiwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAyMjgsIDE1MywgMTAsIDIsIAorICAgIDIzNSwgMTQyLCAyNCwgMjI0LCA0MywgOTMsIDIyOCwgMTUzLCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAxNzIsIDEwLCAyLCAKKyAgICAyMzUsIDEzNywgMTAsIDIsIDIzNSwgMTM1LCAxMCwgMiwgMjM1LCAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIAorICAgIDIzNSwgMTM2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzUsIDEzNiwgMjQsIDIwNywgMCwgMTAsIDIsIDIzNSwgMTM2LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIzNSwgNTAsIDEwLCAyLCAyMzUsIDUxLCAyNDIsIDIyOCwgMjM1LCA1MCwgMTAsIDIsIDIzNSwgCisgICAgNDgsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMjcsIDc3LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMTIsIDM2LCAKKyAgICA5MywgMjA0LCAyMDksIDEwLCAyLCAyMzUsIDQ5LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCAzOSwgMTAsIDIsIDIzNSwgNDAsIAorICAgIDI0LCAzNSwgOTMsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCA0MCwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCA0MCwgMTE5LCAKKyAgICAyMzUsIDQwLCAyMjQsIDMzLCAxMCwgMiwgMjM1LCAzMiwgMTAsIDIsIDIzNSwgMzAsIDEwLCAyLCAyMzUsIDMxLCAyNCwgCisgICAgMjEwLCA2NSwgMTAsIDIsIDIzNSwgMjIsIDEwLCAyLCAyMzUsIDIxLCAxMCwgMiwgMjM1LCAxNywgMTAsIDIsIDIzNSwgMTYsIAorICAgIDEwLCAyLCAxNDQsIDEwLCAyLCAyMzQsIDIzNiwgMjA2LCAxNTUsIDEwLCAyLCAyMzQsIDIzNiwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzNCwgMjE2LCAxMCwgMiwgMjM0LCA3NSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzNCwgNzYsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNDAsIDI1NSwgCisgICAgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMzYsIDgwLCAxMCwgMiwgMjM0LCA3NiwgMjQsIDIyNiwgMTQ3LCAxMCwgMiwgMjM0LCAKKyAgICA3NiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzNCwgNzYsIDI0LCA2NiwgMTAsIAorICAgIDIsIDIzMywgOTcsIDEwLCAyLCAyMzMsIDkyLCAxMCwgMiwgMjMzLCA5MywgMjQsIDI1MSwgODUsIDEwLCAyLCAyMzMsIDkzLCAKKyAgICAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzMywgOTMsIDI0LCAyMjQsIDE1NCwgCisgICAgMTAsIDIsIDIzMywgOTMsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjMzLCA4OCwgMTAsIDIsIDcwLCAxMCwgMiwgMjMzLCAxOSwgCisgICAgNjIsIDEwLCAyLCAyMzIsIDIzNSwgMTAsIDIsIDIyOCwgMTgxLCAxMCwgMiwgMjI4LCAxODIsIDExOSwgMjI4LCAxODIsIAorICAgIDI0OCwgMywgMTAsIDIsIDIyOCwgMTgyLCAxMTksIDIyOCwgMTgyLCAyMDgsIDE5MiwgMTAsIDIsIDIyOCwgMTU2LCAxMCwgMiwgCisgICAgMjI4LCAxNTMsIDEwLCAyLCAyMjgsIDE1NCwgMjQxLCA1OCwgMTAsIDIsIDIyOCwgMTU0LCAyMTMsIDg4LCAxMCwgMiwgMjI4LCAKKyAgICAxNTQsIDExOSwgMjI4LCAxNTQsIDIxMCwgMTUsIDExOSwgMjEwLCAxNSwgMjA0LCAzNywgMTE5LCAyMDQsIDM2LCAxMCwgMiwgCisgICAgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjgsIDE0NSwgMTAsIDIsIDIyOCwgMTQ2LCAyNCwgMjM2LCA1OCwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMjgsIDE0NCwgMTAsIDIsIDIyOCwgMTM0LCAxMCwgMiwgMjI4LCAxMzUsIDI0LCAyMDcsIDAsIDEwLCAKKyAgICAyLCAyMjgsIDEzNSwgMjQyLCAyMjgsIDIyOCwgMTM0LCAxMCwgMiwgMjI4LCAxMzUsIDIxNywgNDAsIDIyOCwgMTM0LCAxMCwgCisgICAgMiwgMjI4LCAxMzUsIDIwOCwgMTkyLCAxMCwgMiwgMjI4LCAxMjcsIDEwLCAyLCAyMjgsIDExNywgMTAsIDIsIDIyOCwgMzUsIAorICAgIDEwLCAyLCAyMjgsIDIwLCAxMCwgMiwgMTYxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCA2MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjUxLCAyMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI1MSwgMjM2LCA5MywgMjI2LCAxMywgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDksIAorICAgIDk4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxNDgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM4LCA5MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjM2LCA4OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA3MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA1OCwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNTAsIDkzLCAyMTAsIAorICAgIDExMywgOTMsIDYyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAKKyAgICAxNDMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMTM2LCA5MywgMjEyLCAwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIAorICAgIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDUwLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMzUsIDIxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI4LCAKKyAgICAxMzQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMjYsIDE1NywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI0LCAyMTAsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzcsIAorICAgIDkzLCAyMzksIDEzNywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NywgOTMsIDIzNSwgMTYxLCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMjIsIDc3LCA5MywgMjA2LCAyMDEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMSwgMjExLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMjEsIDIxMiwgOTMsIDIxOCwgODQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMCwgMzQsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIxOCwgODksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxNSwgMjA0LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMTIsIDE3NSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEyLCA2NCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEyLCAwLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTAsIDExNCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjEwLCAzMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA5LCAyMjAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIwOSwgMTY4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDcsIDI0MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA2LCAyMzIsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDY2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDgsIDI0LCAxNzIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIwMywgMTkwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxOTksIDM2LCAxMCwgMiwgMjI3LCAxMDYsIDEwLCAyLCAyMjcsIDEwNywgCisgICAgMjQyLCAyMjgsIDIyNywgMTA2LCAxMCwgMiwgMjI3LCA5NiwgMTAsIDIsIDIyNywgOTMsIDEwLCAyLCAyMjcsIDkxLCAxMCwgCisgICAgMiwgMjI3LCA5MCwgMTAsIDIsIDIyNywgODgsIDEwLCAyLCAyMjcsIDg5LCAxMTksIDIyNywgODgsIDEwLCAyLCAyMjcsIDc2LCAKKyAgICAxMCwgMiwgMjI3LCA3NywgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjI3LCA3MiwgMTAsIDIsIDIyNywgNzMsIAorICAgIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNywgNzMsIDI0MiwgMjI4LCAyMjcsIDcyLCAxMCwgMiwgMjI3LCA3MCwgMTAsIDIsIAorICAgIDIyNywgNjksIDEwLCAyLCAyMjcsIDM4LCAxMCwgMiwgMjI3LCAzOSwgMjI1LCAxNTgsIDI0LCAxMDgsIDExOSwgMjI1LCAKKyAgICAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNywgMzksIDExOSwgMjI3LCAzOSwgMjI1LCAxNTgsIDI0LCAxMDgsIDExOSwgMjI1LCAKKyAgICAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNiwgMjM0LCAxMCwgMiwgMjI2LCAxNjMsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDI0OSwgCisgICAgMTE4LCAxMCwgMiwgMjI2LCAxNjQsIDI0LCA2NiwgMTAsIDIsIDIyNiwgMTY0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNiwgCisgICAgMTU3LCAxMCwgMiwgMjI2LCAxNDcsIDEwLCAyLCAyMjYsIDEzNCwgMTAsIDIsIDIyNiwgMTMzLCAxMCwgMiwgMjI2LCAxMzEsIAorICAgIDEwLCAyLCAyMjYsIDEzMiwgMTE5LCAyMjYsIDEzMSwgMTAsIDIsIDIyNiwgMTUsIDEwLCAyLCAyMjYsIDE2LCAxMTksIDIzNCwgCisgICAgNzYsIDI0LCAyNTAsIDE4MCwgMjI2LCAxNiwgMTE5LCAyMzQsIDc2LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjYsIDEzLCAKKyAgICAxMCwgMiwgMjI2LCAxMSwgMTAsIDIsIDIyNiwgMTIsIDIwMywgNzMsIDE5LCAxMCwgMiwgMjI2LCAxMCwgMTAsIDIsIDIyNiwgCisgICAgMiwgMTAsIDIsIDIyNiwgMywgMjM1LCAyOCwgMTAsIDIsIDIyNiwgMSwgMTAsIDIsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCAKKyAgICAyNDYsIDIxNywgNDAsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCAyMzksIDEwLCAyLCAyMjUsIDIxNywgMTAsIDIsIDE5NCwgMTAsIAorICAgIDIsIDIyNSwgMTU3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCA2MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMzUsIDkzLCAyNDIsIAorICAgIDU5LCA5MywgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAzNSwgOTMsIDIzNiwgNDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDM1LCA5MywgMjI1LCA5MywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUxLCAxNTEsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MSwgCisgICAgODUsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MCwgMTgyLCAxOTksIDMyLCAyMDYsIDE1NSwgMTAsIDIsIDIyNSwgMTU4LCAKKyAgICAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNDEsIAorICAgIDI1NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM4LCAxNzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNiwgODksIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDIzNSwgNDAsIDkzLCAyMzUsIDM5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNCwgCisgICAgMjE2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzQsIDc2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgMTM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIAorICAgIDEzNSwgOTMsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAxMzUsIDkzLCAyMjQsIDQyLCAxMCwgMiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyMjYsIDE2MywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAxNDcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDIyNiwgMTMsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNiwgMiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAzLCA5MywgCisgICAgMjM0LCA3NiwgOTMsIDYyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCAKKyAgICAxNTQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgMjcsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIyMiwgNzYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMjUsIDE1OCwgCisgICAgMjQsIDIxMCwgNjYsIDkzLCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjEwLCAxMSwgOTMsIDIzNSwgMTM2LCAKKyAgICA5MywgMjM4LCAxMDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIxMCwgMTEsIDkzLCAyMzUsIDEzNiwgMjA2LCAxNTUsIDEwLCAKKyAgICAyLCAyMjUsIDE1OCwgMjQsIDIwOSwgMjE4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDksIDIxOSwgOTMsIDIwOSwgMjE4LCAKKyAgICAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA3LCAxMywgMTAsIDIsIDIyNSwgCisgICAgMTU4LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDYsIDIwMiwgOTMsIDM1LCA5MywgMjA4LCAyNSwgOTMsIAorICAgIDE4OCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgNjYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDEwOCwgOTMsIDYyLCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA0LCA0OCwgOTMsIAorICAgIDI1MCwgMTgxLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDMsIDE5MCwgCisgICAgMTAsIDIsIDIyNSwgMTU4LCAyMDgsIDE5MiwgMTAsIDIsIDIyNSwgMTU1LCAxMCwgMiwgMjI1LCAxNTYsIDI0LCAyMTAsIDY1LCAKKyAgICAxMCwgMiwgMjI1LCAxNTYsIDI0LCAyMTAsIDY2LCA5MywgMjA3LCAyMzQsIDEwLCAyLCAyMjUsIDE1NiwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIyNSwgMTU2LCAyMzUsIDI5LCAxMTksIDIyNSwgMTU2LCAyMzUsIDI5LCAyMTAsIDY1LCAxMCwgMiwgMjI1LCAxNTEsIAorICAgIDEwLCAyLCAyMjUsIDkzLCAxMCwgMiwgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDkxLCAxMCwgMiwgMjI1LCAKKyAgICA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCA5MiwgMjQsIDIyNSwgMjQ2LCA5MywgMjEyLCAxNzUsIDEwLCAyLCAyMjQsIAorICAgIDIxMCwgMTAsIDIsIDIyNCwgMTkxLCAxMCwgMiwgMjI0LCAxNzksIDEwLCAyLCAyMjQsIDE1NCwgMTAsIDIsIDIyNCwgNDIsIAorICAgIDEwLCAyLCAyMjQsIDQzLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDI1MSwgCisgICAgMTUxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzOCwgOTEsIDEwLCAyLCAKKyAgICAyMjQsIDQxLCAyNCwgMjM4LCA5MiwgMjA2LCAxNTUsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIAorICAgIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM0LCA3NiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyOCwgMTM0LCAKKyAgICAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNywgOTMsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI3LCA5MSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjcsIDkyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjI1LCAxNzYsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMTgsIDEzMywgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMDksIDE4MywgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIwOSwgMTYwLCA5MywgMjQ4LCAzNiwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMDQsIDIwOSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjI0LCA0MSwgMjQyLCAyMjgsIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyMTcsIDQwLCAKKyAgICAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjA4LCAxOTIsIDEwLCAyLCAyMjQsIDQxLCAyMTAsIDQ2LCAxMCwgMiwgMjI0LCAKKyAgICAzOSwgMTAsIDIsIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAxMTksIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAyMTcsIAorICAgIDQwLCAyMjQsIDMzLCAxMCwgMiwgMjI0LCAzNCwgMjEwLCA0NiwgMTAsIDIsIDIyNCwgMzAsIDEwLCAyLCAyMjQsIDI3LCAxMCwgCisgICAgMiwgMjI0LCAyNSwgMTAsIDIsIDIyNCwgMjYsIDExOSwgMjI0LCAyNSwgMTAsIDIsIDIyNCwgMjYsIDExOSwgMjI0LCAyNiwgCisgICAgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMTc4LCAxMCwgMiwgMjIyLCAyMzUsIDI0LCAyMDcsIDAsIDEwLCAyLCAKKyAgICAyMjIsIDIzNSwgMjM1LCAyOCwgMTAsIDIsIDIyMiwgMjM0LCAxMCwgMiwgMjIyLCAyMDYsIDEwLCAyLCAyMjIsIDE1OCwgMTAsIAorICAgIDIsIDIyMiwgMTM1LCAxMCwgMiwgMjIyLCAxMzQsIDEwLCAyLCAyMjIsIDc2LCAxMCwgMiwgMjIyLCAyOCwgMTAsIDIsIDIyMSwgCisgICAgMjExLCAxMCwgMiwgMjIxLCAxNjQsIDEwLCAyLCAyMjEsIDQxLCAxMCwgMiwgMjIxLCA0MiwgMTE5LCAyMjEsIDQxLCAxMCwgCisgICAgMiwgMjIxLCAzMCwgMTAsIDIsIDIyMSwgMzEsIDIzNSwgMjgsIDEwLCAyLCAyMjEsIDEyLCAxMCwgMiwgMjIwLCAyNTQsIDEwLCAKKyAgICAyLCAyMjAsIDI1MCwgMTAsIDIsIDIyMCwgMjUxLCAyNCwgNjIsIDEwLCAyLCAyMjAsIDI1MSwgMjQsIDIyNSwgMjQ1LCAxMCwgCisgICAgMiwgMjIwLCAyNTEsIDI0LCAxOTksIDExNCwgMTAsIDIsIDIyMCwgMjUxLCAxMTksIDIyMCwgMjUwLCAxMCwgMiwgMjIwLCAKKyAgICAyNTEsIDExOSwgMjIwLCAyNTEsIDI0LCAzNSwgOTMsIDE4OCwgMTAsIDIsIDIyMCwgMjUxLCAyNDIsIDIyOCwgMjIwLCAyNTAsIAorICAgIDEwLCAyLCAyMjAsIDI0OCwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgNjIsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDM1LCA5MywgCisgICAgMjQxLCA3NiwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMjQxLCA3NiwgMTAsIDIsIDIyMCwgMjQ5LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMTg4LCAxMCwgMiwgMjIwLCAxNjAsIDEwLCAyLCAyMjAsIDE0NywgMTAsIDIsIDIyMCwgMTQ4LCAyMjgsIDQ5LCAxMCwgMiwgCisgICAgMjIwLCAxNDgsIDI0LCAyMDksIDIyMSwgMjA2LCAxNTUsIDEwLCAyLCAyMjAsIDE0OCwgMjE3LCA0MCwgMjIwLCAxNDcsIDEwLCAKKyAgICAyLCAyMjAsIDE0NiwgMTAsIDIsIDIyMCwgMTM5LCAyMTgsIDc1LCAxMCwgMiwgMjIwLCAxMzgsIDEwLCAyLCAyMjAsIDEzNywgCisgICAgMTAsIDIsIDIyMCwgMzQsIDEwLCAyLCAyMjAsIDM1LCAyNCwgNjIsIDEwLCAyLCAyMjAsIDM1LCAyNCwgMjA0LCAzNiwgMTAsIAorICAgIDIsIDIyMCwgMzUsIDIxMCwgNDYsIDEwLCAyLCAyMTksIDE1MCwgMTAsIDIsIDIxOSwgMTUxLCAyNCwgNzIsIDEwLCAyLCAKKyAgICAyMTksIDE0OSwgMTAsIDIsIDIxOSwgMTE5LCAxMCwgMiwgMjE5LCAxMjAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIAorICAgIDIxOSwgMTIwLCAyNCwgMjM2LCA1MCwgOTMsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjE5LCAxMTUsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDI1MSwgODUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIAorICAgIDI0LCAyNTAsIDE4MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMjIsIDc3LCA5MywgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyMCwgMzQsIAorICAgIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAzNSwgMjUxLCA4NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDI1MCwgCisgICAgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMjUwLCAxODIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjA0LCA0OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMDMsIDE5MCwgMTAsIAorICAgIDIsIDIxOSwgMTAzLCAxMCwgMiwgMjE4LCAxMzMsIDEwLCAyLCAyMTgsIDEwNSwgMTAsIDIsIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIyMiwgMTM1LCAKKyAgICAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIAorICAgIDM2LCAxMTksIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgCisgICAgMjAzLCAxOTAsIDEwLCAyLCAyMTgsIDkwLCAyMDYsIDE1NSwgMTAsIDIsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIxOCwgOTAsIDI0MiwgMjI4LCAyMTgsIDg5LCAxMCwgMiwgMjE4LCA5MCwgMjQyLCAyMjgsIDIxOCwgOTAsIDIyNSwgMTU2LCAKKyAgICAxMTksIDIyNSwgMTU1LCAxMCwgMiwgMjE4LCA4NCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDI1MCwgMTc1LCAxMCwgCisgICAgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMzksIDEzMSwgCisgICAgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIzNSwgMzksIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyNywgOTEsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIAorICAgIDcsIDI0LCAxOTQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAKKyAgICAyNCwgMjA5LCAxNTcsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjE4LCA4NSwgMjI2LCAKKyAgICAxMzIsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxOCwgODUsIDIyNiwgMTMyLCAyNCwgMjQ4LCAxODksIDY2LCAxMCwgMiwgCisgICAgMTcyLCAxMCwgMiwgMjE2LCAyMDEsIDEwLCAyLCAyMTYsIDE2MiwgMTAsIDIsIDIxNiwgMTM1LCAxMCwgMiwgMjE2LCAzLCAKKyAgICAxMCwgMiwgMjE1LCAyMDQsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDYyLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNTIsIDg5LCAKKyAgICAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjQ4LCAzNiwgMTAsIDIsIDIxNSwgCisgICAgMjA1LCAyNCwgNzIsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDcwLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyMzIsIDIzNSwgMTAsIAorICAgIDIsIDIxNSwgMjA1LCAyNCwgNjYsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMTUsIDIwNSwgMjQyLCAKKyAgICAyMjgsIDIxNSwgMjA0LCAxMCwgMiwgMjE1LCAxNDYsIDEwLCAyLCAyMTUsIDE0NywgMjQsIDIyNywgNzIsIDEwLCAyLCAyMTUsIAorICAgIDE0NywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMTUsIDE0NywgMjQsIDE5OSwgMTE0LCAxMCwgMiwgMjE1LCAxNDcsIDIxNywgCisgICAgNDAsIDIxNSwgMTQ2LCAxMCwgMiwgMjEzLCAyNTIsIDEwLCAyLCAyMTMsIDI0NiwgMTAsIDIsIDIxMywgODgsIDEwLCAyLCAKKyAgICAyMTIsIDE3NSwgMTAsIDIsIDIxMiwgNjQsIDEwLCAyLCAyMTIsIDUxLCAyMTgsIDc1LCAxMCwgMiwgMjEyLCA1MCwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCA2MiwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzksIDEzNywgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzksIAorICAgIDEzNSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAxNDQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIxMiwgCisgICAgNTEsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyMSwgCisgICAgMjExLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIxOCwgODksIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjEyLCAzNSwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCAyMTAsIDMxLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNywgMjQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgCisgICAgMjA0LCA0NywgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDQsIDQyLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNCwgMTIsIDEwLCAyLCAKKyAgICAyMTIsIDUxLCAyNCwgMjAzLCAyMTQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAyMTIsIDUxLCAxMTksIAorICAgIDIxMiwgNTAsIDEwLCAyLCAyMTIsIDUxLCAyMzUsIDI4LCAxMCwgMiwgMjEyLCAzNSwgMTAsIDIsIDIxMiwgMzYsIDIyNSwgCisgICAgMTU4LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMTIsIDgsIDEwLCAyLCAyMTIsIDAsIDEwLCAyLCAyMTAsIDExNCwgMTAsIDIsIAorICAgIDIxMCwgMTEyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAKKyAgICAyMTAsIDExMywgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjEwLCAxMTMsIAorICAgIDI0LCAyMDksIDIxOCwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjA0LCAxOTIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDY2LCAxMCwgCisgICAgMiwgMjEwLCAxMTMsIDI0LCAxMDgsIDkzLCA2MiwgMTAsIDIsIDIxMCwgMTEwLCAxMCwgMiwgMjEwLCAxMDgsIDEwLCAyLCAKKyAgICAyMTAsIDgyLCAxMCwgMiwgMjEwLCA2NSwgMTAsIDIsIDIxMCwgNjYsIDIzMywgOTcsIDEwLCAyLCAyMTAsIDY2LCAxMTksIAorICAgIDIxMCwgNjYsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjEwLCA2NiwgCisgICAgMTE5LCAyMTAsIDY2LCAyMDcsIDI1LCAxMTksIDIwNywgMjUsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIxMCwgCisgICAgNTgsIDEwLCAyLCAyMTAsIDUzLCAxMCwgMiwgMjEwLCA0OSwgMTAsIDIsIDIxMCwgNDgsIDEwLCAyLCAyMTAsIDQ1LCAxMCwgCisgICAgMiwgMjEwLCAzMSwgMTAsIDIsIDIxMCwgMzIsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMzIsIDI0LCAyMjgsIDEzNCwgMTAsIDIsIAorICAgIDIxMCwgMjUsIDEwLCAyLCAyMTAsIDI2LCAyNCwgNjIsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjQ5LCA5OSwgMTAsIDIsIDIxMCwgCisgICAgMjYsIDI0LCAyNDgsIDE0LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDI0MSwgMTksIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjM2LCAKKyAgICA0OSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgCisgICAgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjUsIDIzOSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjQsIDI3LCAxMCwgMiwgMjEwLCAKKyAgICAyNiwgMjQsIDIyMSwgMzAsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxMCwgMTksIDEwLCAyLCAyMTAsIAorICAgIDE0LCAxMCwgMiwgMjEwLCAxNSwgMjA2LCAxNTUsIDEwLCAyLCAyMTAsIDE1LCAxMTksIDIxMCwgMTUsIDI0OCwgNCwgMTE5LCAKKyAgICAyNDgsIDMsIDEwLCAyLCAyMTAsIDEwLCAxMCwgMiwgMjA5LCAyMjAsIDEwLCAyLCAyMDksIDIyMSwgMTE5LCAyMjgsIDUwLCAKKyAgICAyMDksIDIyMCwgMTAsIDIsIDIwOSwgMjE4LCAxMCwgMiwgMjA5LCAyMTcsIDEwLCAyLCAyMDksIDE4MiwgMTAsIDIsIDIwOSwgCisgICAgMTgzLCAyMzUsIDI4LCAxMCwgMiwgMjA5LCAxNjgsIDEwLCAyLCAyMDksIDE2NiwgMTAsIDIsIDIwOSwgMTY3LCAxMTksIAorICAgIDIwOSwgMTY3LCAyMDksIDIxOCwgMTAsIDIsIDIwOSwgMTU5LCAxMCwgMiwgMjA5LCAxNTcsIDEwLCAyLCAyMDgsIDI0LCAxMCwgCisgICAgMiwgMjA4LCAyNSwgMTE5LCAyMDgsIDI0LCAxMCwgMiwgMjA3LCAyNDYsIDEwLCAyLCAyMDcsIDI0NSwgMTAsIDIsIDIwNywgCisgICAgMjQzLCAxMCwgMiwgMjA3LCAyMzQsIDEwLCAyLCAyMDcsIDIzMywgMTAsIDIsIDIwNywgMjA3LCAxMCwgMiwgMjA3LCAyMDYsIAorICAgIDEwLCAyLCAyMDcsIDM2LCAxMCwgMiwgMjA3LCAzNywgMjUwLCAxNjUsIDEwLCAyLCAyMDcsIDM3LCAyNCwgMjM0LCA3NSwgCisgICAgMTAsIDIsIDIwNywgMzcsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIwNywgMzcsIDIzNSwgMjgsIDEwLCAyLCAyMDcsIDI0LCAKKyAgICAxMCwgMiwgMjA3LCAyNSwgMTE5LCAyMDcsIDI1LCAyMTksIDE1MSwgMTE5LCAyMTksIDE1MSwgMjQxLCAwLCAxMTksIDI0MCwgCisgICAgMjU1LCAxMCwgMiwgMjA3LCAyNSwgMjA4LCAxOTIsIDEwLCAyLCAyMDcsIDEzLCAxMCwgMiwgMTY1LCAyNCwgMjQ4LCAxODgsIAorICAgIDEwLCAyLCAxNjUsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMTY1LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDE2NSwgMjQsIDIwOSwgCisgICAgMjIwLCAxMCwgMiwgMTY1LCAyNCwgMjA0LCAyMDksIDEwLCAyLCAxNjUsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjA3LCAwLCAKKyAgICAxMCwgMiwgMjA2LCAyMzIsIDEwLCAyLCAyMDYsIDIwMSwgMTAsIDIsIDIwNiwgMjAyLCAyMzUsIDI4LCAxMCwgMiwgMjA2LCAKKyAgICAxNSwgMTAsIDIsIDIwNiwgMTYsIDIwNiwgMTU1LCAxMCwgMiwgMjA1LCAyNDIsIDEwLCAyLCAyMDUsIDIxOSwgMTAsIDIsIAorICAgIDIwNSwgMjIwLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjA1LCAyMjAsIDExOSwgMjA1LCAyMTksIDEwLCAyLCAyMDUsIDIyMCwgCisgICAgMTE5LCAyMDUsIDIyMCwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMDQsIAorICAgIDIxNSwgMTAsIDIsIDIwNCwgMjA5LCAxMCwgMiwgMjA0LCAyMDcsIDEwLCAyLCAyMDQsIDIwMywgMTAsIDIsIDIwNCwgMTkyLCAKKyAgICAxMCwgMiwgMjA0LCAxOTMsIDExOSwgMjA0LCAxOTMsIDE5OSwgMTE1LCAxMTksIDE5OSwgMTE0LCAxMCwgMiwgNjYsIDEwLCAKKyAgICAyLCAxMDgsIDIzNSwgMzksIDEwLCAyLCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAyMTYsIDIxMSwgCisgICAgMTE5LCAyMTYsIDIxMSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMTA4LCAxMTksIDEwOCwgMjA3LCAyMDgsIAorICAgIDExOSwgMjA3LCAyMDcsIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAxMDgsIDIxMywgMTA1LCAxMTksIDEwOCwgMjEzLCAxMDQsIAorICAgIDEwLCAyLCAyMDQsIDQ3LCAxMCwgMiwgMjA0LCA0MiwgMTAsIDIsIDIwNCwgMzYsIDEwLCAyLCAyMDQsIDM3LCAyMjUsIDIzOSwgCisgICAgMTAsIDIsIDIwNCwgMzcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIwNCwgMzcsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIwNCwgCisgICAgMzcsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIwNCwgMzcsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCAxMDgsIAorICAgIDIzNSwgMjgsIDEwLCAyLCAyMDQsIDM3LCAyMzUsIDI4LCAxMCwgMiwgMjA0LCAzNywgMjEwLCA0NiwgMTAsIDIsIDIwNCwgCisgICAgMzcsIDIxMCwgNDcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIwNCwgMzIsIDEwLCAyLCAyMDQsIDEyLCAxMCwgMiwgMjA0LCAKKyAgICAxMywgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjA0LCAxMywgMjQsIDIyMiwgNzcsIDkzLCAyNDIsIDU4LCAxMCwgMiwgMjA0LCAKKyAgICAxMywgMjQsIDIxMCwgMTEyLCAxMCwgMiwgMjA0LCAxMywgMjQsIDY2LCAxMCwgMiwgMjA0LCAxMSwgMTAsIDIsIDIwNCwgNywgCisgICAgMTAsIDIsIDIwNCwgOCwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMDQsIDgsIDI0LCAxNzIsIDEwLCAyLCAyMDQsIDUsIDEwLCAyLCAKKyAgICAyMDQsIDYsIDIzNSwgMjgsIDEwLCAyLCAyMDMsIDIxNCwgMTAsIDIsIDIwMywgMjE1LCAyNDIsIDIyOCwgMjAzLCAyMTQsIAorICAgIDEwLCAyLCAyMDMsIDIxNSwgMjEwLCA0NiwgMTAsIDIsIDIwMywgMjEyLCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAzNSwgOTMsIAorICAgIDE0NCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMzUsIDkzLCAxODgsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDI1MSwgMTUxLCAxMCwgCisgICAgMiwgMjAzLCAyMTMsIDI0LCAxNDQsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIxOCwgODksIDEwLCAyLCAyMDMsIDIxMywgMjQsIAorICAgIDIwNCwgNDcsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIwNCwgNDgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgCisgICAgMjA0LCA0OCwgOTMsIDI0OCwgMTg4LCAxMCwgMiwgMjAzLCAyMTEsIDEwLCAyLCAyMDMsIDIwOCwgMTAsIDIsIDIwMywgMjA3LCAKKyAgICAxMCwgMiwgMjAzLCAyMDMsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDYyLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyNTAsIDE3NSwgCisgICAgMTAsIDIsIDIwMywgMjA0LCAyNCwgMTQ4LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzksIDEyNSwgMTAsIDIsIDIwMywgMjA0LCAKKyAgICAyNCwgMjM2LCA4OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA3MSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA1OCwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNSwgNTAsIDEwLCAKKyAgICAyLCAyMDMsIDIwNCwgMjQsIDE0NCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIAorICAgIDIyOCwgMTM0LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjgsIDIwLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjYsIDE2MywgCisgICAgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjIxLCAxNjQsIDEwLCAyLCAyMDMsIAorICAgIDIwNCwgMjQsIDE3MiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA5LCAKKyAgICAxNjYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwNCwgMjE1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAxMDgsIDkzLCAyMzUsIAorICAgIDM5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIAorICAgIDIwMywgMjAxLCAxMCwgMiwgMjAzLCAyMDIsIDI0LCA2NiwgMTAsIDIsIDIwMywgMTkwLCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAKKyAgICA2MiwgMTAsIDIsIDIwMywgMTkxLCAyNCwgMjI2LCAxNSwgMTAsIDIsIDIwMywgMTkxLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAKKyAgICAyMDMsIDE5MSwgMjQsIDIwNywgMCwgMTAsIDIsIDIwMywgMTg2LCAxMCwgMiwgMjAzLCAxODksIDEwLCAyLCAyMDMsIDE4NywgCisgICAgMTAsIDIsIDIwMywgMTgzLCAxMCwgMiwgMjAzLCAxNzEsIDEwLCAyLCAyMDMsIDE3MiwgMjQsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMDMsIDE3MCwgMTAsIDIsIDE5OSwgMTE0LCAxMCwgMiwgMTk5LCAxMTUsIDIwNiwgMTU1LCAxMCwgMiwgMTk5LCAxMTUsIAorICAgIDk1LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAxOTksIDExMCwgMTAsIDIsIDE5OSwgMTAyLCAxMCwgMiwgMTk5LCA4OCwgMTAsIAorICAgIDIsIDE5OSwgMzYsIDEwLCAyLCAxOTksIDM3LCAxMTksIDE5OSwgMzYsIDEwLCAyLCAxOTksIDM1LCAxMCwgMiwgMTk5LCAzMywgCisgICAgMTAsIDIsIDE5OSwgMzQsIDIyNywgOTUsIDIwNiwgMTU1LCAxMCwgMiwgMTk5LCAyOCwgMTAsIDIsIDE5OSwgMTksIDEwLCAyLCAKKyAgICAxOTksIDMsIDEwLCAyLCAxOTksIDEsIDEwLCAyLCAxOTksIDIsIDI0LCA2MiwgMTAsIDIsIDE5OSwgMCwgMTAsIDIsIDE5OCwgCisgICAgMjU1LCAxMCwgMiwgMjI3LCA2MSwgMjM4LCAyMDYsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDI1MiwgCisgICAgNywgMjQsIDYyLCAxMCwgMiwgMjUxLCA5OCwgMjQsIDIyNiwgNCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjA0LCAKKyAgICA0OCwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCA0NywgMTAsIDIsIDI0MSwgMCwgOTMsIDIwOSwgMjIwLCAxMCwgMiwgCisgICAgMjM5LCAxMzYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMzgsIDExLCAyNCwgCisgICAgMjEwLCA2NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTEsIDg2LCA5MywgMjI3LCA3NywgOTMsIDYyLCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjM2LCAxNCwgMTAsIDIsIDIzNSwgMTUxLCAxMCwgMiwgMjMzLCA3MywgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjUxLCA1MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjUwLCAxNzgsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzQsIDc2LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE3MiwgMTAsIAorICAgIDIsIDIyNywgMTA4LCAyNCwgMjA5LCAyMTMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgMjE1LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMDMsIDIxMiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMjQsIDQxLCAyMTAsIAorICAgIDQ3LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM4LCA5MiwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMjQsIAorICAgIDQxLCAyNCwgMjA5LCAyMjAsIDEwLCAyLCAyMjIsIDI3LCAxMCwgMiwgMjIwLCAyNDksIDI0LCAxOTksIDExNCwgMTAsIDIsIAorICAgIDIyMCwgMTU5LCAxMCwgMiwgMjE5LCAxMTgsIDEwLCAyLCAyMTksIDExNywgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjQ5LCA5OSwgCisgICAgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMTgsIDEwNiwgMjEyLCAyMjgsIDIxOSwgMTA5LCAyNDEsIAorICAgIDE1NCwgMTAsIDIsIDIxNiwgNCwgMjUwLCAxNjUsIDEwLCAyLCAyMTUsIDE1MCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIwNiwgMTQsIDEwLCAyLCAyMDQsIDEzLCAyNCwgMjIyLCA3NiwgMTAsIDIsIDEwOCwgCisgICAgNjYsIDEwLCAxNDUsIDIsIDEyMCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDEyNiwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjUwLCAxODEsIAorICAgIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTI2LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyNDAsIDI1NSwgCisgICAgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgNjYsIDEwLCAxNDUsIDIsIAorICAgIDIzNywgNjEsIDY2LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgNjYsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCA2NiwgMTAsIDE0NSwgCisgICAgMiwgMjM4LCAyMzIsIDY2LCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgNjYsIDEwLCAxNDUsIDIsIDExMiwgMjM1LCAyNDQsIDEwLCAKKyAgICAxNDUsIDIsIDEyMCwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDEyNiwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAKKyAgICAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyMzUsIDI0NCwgCisgICAgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjM1LCAyNDQsIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTE0LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMTEyLCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMTIwLCAyMzUsIAorICAgIDI0MSwgMTAsIDE0NSwgMiwgMTI2LCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIzNSwgMjQxLCAxMCwgMTQ1LCAKKyAgICAyLCAyMzcsIDYxLCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMTIwLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgODIsIAorICAgIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA4MywgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMTAsIDgyLCAxMCwgCisgICAgMTQ1LCAyLCAyMzcsIDYxLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjEwLCAKKyAgICAxMzYsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjEwLCAKKyAgICA4MiwgMTAsIDE0NSwgMiwgMTEyLCAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjAsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyNiwgCisgICAgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDc3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIAorICAgIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDIxMCwgODMsIDI0LCAyMzYsIDcyLCAKKyAgICA5MywgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIxMCwgODMsIDI0LCAyMzYsIDcyLCA5MywgMjIxLCAxNjQsIDEwLCAxNDUsIDIsIAorICAgIDExMiwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyMCwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyNiwgMjQ3LCAyNTUsIDEwLCAKKyAgICAxNDUsIDIsIDEyNiwgMjQ4LCAwLCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI0NywgMjU1LCAxMCwgCisgICAgMTQ1LCAyLCAyMzcsIDYxLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTI2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjM4LCA5MywgCisgICAgMTAsIDE0NSwgMiwgMTI2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjM4LCA5MCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgCisgICAgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIAorICAgIDE3OCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MSwgNjIsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI0LCAxODEsIDI1MCwgMTAzLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjAzLCA3MywgMjM2LCAyNDIsIDI1MCwgMTc3LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIAorICAgIDIyOCwgMTI2LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTI4LCA2MiwgMTAsIDE0NSwgCisgICAgMiwgMjEwLCAxMzYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDEyOCwgMjUwLCAxMDMsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAKKyAgICAyMDMsIDczLCAyMzYsIDI0MiwgMjAzLCAxODUsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMDMsIDczLCAyMzYsIDI0MiwgCisgICAgMjAzLCAxODQsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDIsIDEwLCAxNDUsIDIsIAorICAgIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDEsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAKKyAgICAyMzYsIDI0MiwgMjI4LCAxNDAsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDMsIAorICAgIDYyLCAxMCwgMTQ1LCAyLCAxMjAsIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMTI2LCAyNTAsIDE4MiwgMjA2LCAKKyAgICAxNTUsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNTAsIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI1MCwgCisgICAgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAyNDksIDg2LCAxMCwgMTQ1LCAyLCAxMjAsIDI0OSwgODYsIDEwLCAxNDUsIDIsIDEyNiwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI0OSwgODYsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNDksIDg3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjM3LCA2MSwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjQ5LCA4NywgMjAzLCA3MywgMTksIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTI3LCAxMCwgMTQ1LCAyLCAyMTksIDEyOCwgMTAsIDE0NSwgMiwgMTEyLCAyMzgsIDg5LCAxMCwgMTQ1LCAyLCAKKyAgICAxMjAsIDIzOCwgODksIDEwLCAxNDUsIDIsIDExMiwgMjA2LCA3NSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDEyMCwgMjA2LCAKKyAgICA3MiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIwOSwgOTUsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDIwNiwgNzUsIDIwMywgNzMsIDIzNiwgMjQyLCA2MiwgMTAsIDE0NSwgMiwgMTIwLCAyMDYsIDcyLCAyMDMsIDczLCAyMzYsIAorICAgIDI0MiwgNjIsIDEwLCAxNDUsIDIsIDExMiwgMjM4LCAyMjgsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMTIsIDIxNCwgODgsIAorICAgIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCA0MCwgMjUwLCAxNjgsIDExMiwgMjA5LCA5NiwgMTAsIDE0NSwgMiwgNDAsIDI1MCwgCisgICAgMTY4LCAxMTIsIDIxNCwgODcsIDEwLCAxNDUsIDIsIDExMiwgMjE0LCA4OCwgMjM1LCAyMiwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAxNjcsIDIzNSwgMjIsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAxMTIsIDIwNiwgNzQsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAKKyAgICAxMjAsIDIwNiwgNzEsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAyMzYsIDIzNSwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDIzNywgCisgICAgMTA0LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMTA4LCAKKyAgICAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIxMCwgCisgICAgMTM2LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMTQsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAyMTQsIDIxMiwgMiwgNDAsIDI1MCwgMTY4LCAyMDAsIDIzOCwgCisgICAgMjQwLCAyMzksIDEwLCAyMTQsIDIxMiwgMiwgODMsIDI0NiwgNzksIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjQ2LCAKKyAgICA3OSwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyMDUsIDk0LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDIxNCwgOTMsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjE4LCA5MCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjA5LCAyMTgsIDEwLCAKKyAgICAyLCAyNTEsIDIzNiwgMjQsIDIzOCwgOTEsIDEwLCAyLCAyNDksIDExOSwgMjQsIDI0MSwgMCwgMjA2LCAxNTUsIDEwLCAyLCAKKyAgICAyNDksIDEwNiwgMjQsIDI1MiwgNiwgMTAsIDIsIDI0OSwgMTA2LCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyNDksIDEwNiwgMjQsIAorICAgIDE5OSwgMTE0LCAxMCwgMiwgMjQ4LCAzNywgMTE5LCAyNDgsIDM3LCAyNCwgMjIwLCAxNjAsIDEwLCAyLCAyNDIsIDU5LCAyNCwgCisgICAgMjA3LCAwLCAxMCwgMiwgMjQyLCA0OSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjQxLCAzMiwgMjQsIDIyOCwgMTUzLCAxMCwgCisgICAgMiwgMjQxLCAzMiwgMjQsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDI0MSwgMzAsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyNTEsIDUzLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjUwLCAxODIsIDI1MCwgMTU2LCAyMjUsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyNDEsIDE5LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyMzksIDEyNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyMzksIDEzMiwgMjQsIAorICAgIDIzNiwgODksIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDE0NCwgCisgICAgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDE0NCwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAxMzIsIAorICAgIDI0LCAyMjUsIDIzOSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCAyNDAsIDkzLCAyMjcsIDM4LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyMjUsIDE0NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCA5MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjI1LCA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjQsIDMxLCA5MywgMjM1LCAxMzUsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIyMiwgMTM1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjIsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIAorICAgIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxNSwgCisgICAgMjA0LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMDksIDE4MywgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTYsIDEzNSwgMTAsIDIsIAorICAgIDIzOCwgMTEwLCAyMDAsIDE5NSwgMTAsIDIsIDIzOCwgOTIsIDI0MiwgMjI4LCAyMzgsIDkxLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjEwLCA0NywgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIzNCwgNzUsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyMTAsIDQ3LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMTk0LCAxMCwgCisgICAgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjIyLCA3NiwgCisgICAgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjIsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIwOCwgCisgICAgMjQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA4LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDksIDEwNSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDEsIDMyLCAyMzUsIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOSwgMTMyLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzIsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzOCwgMTEyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgODksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA1MCwgCisgICAgOTMsIDI0MSwgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA1MCwgOTMsIDIyMCwgMzQsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM0LCAyMzYsIDkzLCA2MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjUsIDI0MCwgOTMsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI1LCA5MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjUsIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI0LCAzMCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMjAsIDM0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMCwgMzUsIDkzLCAyMzksIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIyMCwgMzUsIDkzLCAyMzUsIDE2MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTAsIDI1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDE5OSwgMTksIDEwLCAyLCAyMzYsIDgzLCAyMTIsIDIyOCwgMjE5LCAxMDksIDI0MSwgMTU0LCAxMCwgMiwgMjM1LCAyNDMsIAorICAgIDI0LCA2NiwgMTAsIDIsIDIzNSwgMTM2LCAyNCwgMjM1LCAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIDIzNSwgCisgICAgNDksIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgNDAsIDkzLCAyMzUsIDEzNiwgMjQsIDIwNywgMCwgMTAsIAorICAgIDIsIDIzNCwgMjM2LCAyMDYsIDE1NiwgMjM1LCAyOCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNTAsIDE4MiwgMTE5LCAyMzQsIAorICAgIDc2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OCwgMzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE2MSwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDMsIDIxNCwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMTk5LCA0LCAxMTksIDE5OSwgMywgMTAsIDIsIDIyNSwgMTQ2LCAxMCwgMiwgMjI1LCAxNDQsIDEwLCAKKyAgICAyLCAyMjUsIDE0MywgMTAsIDIsIDIyNSwgMTQyLCAxMCwgMiwgMjI1LCAxNDEsIDEwLCAyLCAyMjUsIDE0MCwgMTAsIDIsIAorICAgIDIyNSwgMTM5LCAxMCwgMiwgMjI1LCAxMzgsIDExOSwgMjI1LCAxMzgsIDIzNSwgMjgsIDEwLCAyLCAyMjUsIDEzNywgMTAsIAorICAgIDIsIDIyNSwgMTM2LCAxMTksIDIyNSwgMTM1LCAxMCwgMiwgMjI1LCAxMzQsIDEwLCAyLCAyMjUsIDEzMywgMTAsIDIsIDIyNSwgCisgICAgMTMyLCAxMCwgMiwgMjI1LCAxMzEsIDEwLCAyLCAyMjUsIDEzMCwgMTAsIDIsIDIyNSwgMTI5LCAxMCwgMiwgMjI1LCAxMjgsIAorICAgIDEwLCAyLCAyMjUsIDEyNywgMTAsIDIsIDIyNSwgMTI2LCAxMCwgMiwgMjI1LCAxMjUsIDEwLCAyLCAyMjUsIDEyNCwgMTAsIAorICAgIDIsIDIyNSwgMTIzLCAxMCwgMiwgMjI1LCAxMjIsIDEwLCAyLCAyMjUsIDEyMSwgMTAsIDIsIDIyNSwgMTIwLCAxMCwgMiwgCisgICAgMjI1LCAxMTksIDEwLCAyLCAyMjUsIDExOCwgMTAsIDIsIDIyNSwgMTE3LCAxMCwgMiwgMjI1LCAxMTUsIDEwLCAyLCAyMjUsIAorICAgIDExNiwgMjQsIDIzNSwgNTAsIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAKKyAgICAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzYsIDkzLCAKKyAgICAyMjQsIDM5LCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAyMDQsIDQ4LCA5MywgMjQ5LCAxMzYsIDEwLCAyLCAyMjUsIDExNCwgMTAsIAorICAgIDIsIDIyNSwgMTEzLCAxMCwgMiwgMjI1LCAxMTIsIDEwLCAyLCAyMjUsIDExMSwgMTAsIDIsIDIyNSwgMTEwLCAxMCwgMiwgCisgICAgMjI1LCAxMDksIDEwLCAyLCAyMjUsIDEwOCwgMTAsIDIsIDIyNSwgMTA3LCAxMCwgMiwgMjI1LCAxMDYsIDEwLCAyLCAyMjUsIAorICAgIDEwNSwgMTAsIDIsIDIyNSwgMTAzLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgCisgICAgMjQ5LCAxMTgsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIzOSwgMTI0LCAyMzUsIDI5LCAyMzUsIDI4LCAxMCwgMiwgMjI1LCAKKyAgICAxMDQsIDI0LCAyMjYsIDEzLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAxOTQsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNiwgCisgICAgMjMyLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDYsIDIwMSwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA0LCA0NywgMTAsIDIsIAorICAgIDIyNSwgMTA0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMjUsIDEwMiwgCisgICAgMTAsIDIsIDIyNSwgMTAwLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMzksIDEzNSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjM2LCAKKyAgICA4OSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIyOCwgMTU0LCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjE2LCAxMzYsIDkzLCAKKyAgICAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxMCwgNTAsIDkzLCAyMjYsIDE2MywgMTAsIDIsIAorICAgIDIyNSwgMTAxLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMjUsIDk4LCAxMCwgCisgICAgMiwgMjI1LCA5NywgMTAsIDIsIDIyNCwgNDEsIDIzNSwgMjksIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAKKyAgICAyNDAsIDI1NSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMTYsIDEzNSwgMTAsIAorICAgIDIsIDIyNCwgNDEsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAKKyAgICAyMDcsIDAsIDEwLCAyLCAyMjEsIDIxMiwgOTMsIDE5OSwgMTEzLCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTEsIAorICAgIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTEsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyNDEsIDMyLCAyMzUsIDI4LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjM1LCAzMiwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjI2LCAKKyAgICAyMzQsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyNSwgMTQxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjIsIDEzNSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgNjYsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIxMiwgNTEsIAorICAgIDIzNSwgMjksIDI0LCAxNDQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjM4LCAxNzksIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjEwLCAKKyAgICA2NiwgMjUwLCAxNTYsIDIyNSwgMjgsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjEwLCAxMTEsIDIwNiwgCisgICAgMTU1LCAxMCwgMiwgMjEwLCA2NiwgMTE5LCAyMTAsIDY1LCAxMCwgMiwgMjEwLCA2NiwgOTMsIDIzMywgOTIsIDEwLCAyLCAKKyAgICAyMTAsIDY2LCA5MywgMjIwLCAxMzcsIDEwLCAyLCAyMTAsIDY2LCA5MywgMjEyLCAwLCAxMCwgMiwgMjA5LCAyMTksIDkzLCAKKyAgICAyMzksIDEzMiwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjA5LCAyMTksIDkzLCAyMzksIDI5LCAyNCwgMjUxLCA4NSwgMTAsIDIsIAorICAgIDIwOSwgMTgzLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjA3LCAxLCA5MywgMjEyLCA1MCwgMTAsIDIsIDIwNCwgMjA0LCAyNCwgCisgICAgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMDQsIDIwNCwgMjQsIDEyNiwgMjQwLCAyNTUsIDEwLCAyLCAyMDMsIDIxMywgCisgICAgMjI4LCA0OSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjQxLCAyNTMsIDEwLCAKKyAgICAyLCAyMDMsIDIwNCwgMjQsIDIyNSwgOTksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNCwgMzksIDEwLCAyLCAxOTksIDExMywgCisgICAgMTAsIDIsIDE5OSwgNCwgMTE5LCAxOTksIDQsIDkzLCAyMTIsIDAsIDEwLCAyLCAxOTksIDIsIDI0LCAxMjYsIDI0MSwgMCwgCisgICAgMjA2LCAxNTUsIDE0LCA3LCAyNTUsIDEzMSwgMTQsIDcsIDI1NSwgMTMwLCAxNCwgNywgMjU1LCAxMjksIDE0LCA3LCAyNTUsIAorICAgIDEyOCwgMTQsIDcsIDI1NSwgMTI3LCAxNCwgNywgMjU1LCAxMjYsIDE0LCA3LCAyNTUsIDEyNSwgMTQsIDcsIDI1NSwgMTI0LCAKKyAgICAxNCwgNywgMjU1LCAxMjMsIDE0LCA3LCAyNTUsIDEyMiwgMTQsIDcsIDI1NSwgMTIxLCAxNCwgNywgMjU1LCAxMjAsIDE0LCAKKyAgICA3LCAyNTUsIDExOSwgMTQsIDcsIDI1NSwgMTE3LCAxNCwgNywgMjU1LCAxMTYsIDE0LCA3LCAyNTUsIDExNSwgMTQsIDcsIAorICAgIDI1NSwgMTE0LCAxNCwgNywgMjU1LCAxMTMsIDE0LCA3LCAyNTUsIDExMiwgMTQsIDcsIDI1NSwgMTExLCAxNCwgNywgMjU1LCAKKyAgICAxMTAsIDE0LCA3LCAyNTUsIDEwOSwgMTQsIDcsIDI1NSwgMTA4LCAxNCwgNywgMjU1LCAxMDcsIDE0LCA3LCAyNTUsIDEwNiwgCisgICAgMTQsIDcsIDI1NSwgMTA1LCAxNCwgNywgMjU1LCAxMDQsIDE0LCA3LCAyNTUsIDEwMywgMTQsIDcsIDI1NSwgMTAyLCAxNCwgCisgICAgNywgMjU1LCAxMDEsIDE0LCA3LCAyNTUsIDEwMCwgMTQsIDcsIDI1NSwgOTgsIDE0LCA3LCAyNTUsIDk3LCAxNCwgNywgMjU1LCAKKyAgICA5NSwgMTQsIDcsIDI1NSwgOTQsIDE0LCA3LCAyNTUsIDkzLCAxNCwgNywgMjU1LCA5MiwgMTQsIDcsIDI1NSwgOTEsIDE0LCAKKyAgICA3LCAyNTUsIDkwLCAxNCwgNywgMjU1LCA4OSwgMTQsIDcsIDI1NSwgODgsIDE0LCA3LCAyNTUsIDg3LCAxNCwgNywgMjU1LCAKKyAgICA4NiwgMTQsIDcsIDI1NSwgODUsIDE0LCA3LCAyNTUsIDg0LCAxNCwgNywgMjU1LCA4MiwgMTQsIDcsIDI1NSwgODEsIDE0LCAKKyAgICA3LCAyNTUsIDgwLCAxNCwgNywgMjU1LCA3OCwgMTQsIDcsIDI1NSwgNzcsIDE0LCA3LCAyNTUsIDc2LCAxNCwgNywgMjU1LCAKKyAgICA3NSwgMTQsIDcsIDI1NSwgNzQsIDE0LCA3LCAyNTUsIDczLCAxNCwgNywgMjU1LCA3MiwgMTQsIDcsIDI1NSwgNzEsIDE0LCAKKyAgICA3LCAyNTUsIDY4LCAxNCwgNywgMjU1LCA2NywgMTQsIDcsIDI1NSwgNjYsIDE0LCA3LCAyNTUsIDY1LCAxNCwgNywgMjU1LCAKKyAgICA2NCwgMTQsIDcsIDI1NSwgNjMsIDE0LCA3LCAyNTUsIDYyLCAxNCwgNywgMjU1LCA2MSwgMTQsIDcsIDI1NSwgNjAsIDE0LCAKKyAgICA3LCAyNTUsIDU5LCAxNCwgNywgMjU1LCA1OCwgMTQsIDcsIDI1NSwgNTcsIDE0LCA3LCAyNTUsIDU2LCAxNCwgNywgMjU1LCAKKyAgICA1NSwgMTQsIDcsIDI1NSwgNTQsIDE0LCA3LCAyNTUsIDUzLCAxNCwgNywgMjU1LCA1MiwgMTQsIDcsIDI1NSwgNTEsIDE0LCAKKyAgICA3LCAyNTUsIDUwLCAxNCwgNywgMjU1LCA0OSwgMTQsIDcsIDI1NSwgNDUsIDE0LCA3LCAyNTUsIDQ0LCAxNCwgNywgMjU1LCAKKyAgICA0MywgMTQsIDcsIDI1NSwgNDIsIDE0LCA3LCAyNTAsIDEwMSwgMTQsIDcsIDI1MCwgOTksIDE0LCA3LCAyNTAsIDk3LCAxNCwgCisgICAgNywgMjUwLCA5NSwgMTQsIDcsIDI1MCwgOTMsIDE0LCA3LCAyNTAsIDkyLCAxNCwgNywgMjUwLCA5MCwgMTQsIDcsIDI1MCwgCisgICAgODgsIDE0LCA3LCAyNTAsIDg2LCAxNCwgNywgMjUwLCA4NCwgMTQsIDcsIDI0NywgMjE5LCAxNCwgNywgMjQ3LCAyMTgsIDE0LCAKKyAgICA3LCAyNDcsIDIxNywgMTQsIDcsIDI0NywgMjE2LCAxNCwgNywgMjQ3LCAyMTUsIDE0LCA3LCAyNDcsIDIxNCwgMTQsIDcsIAorICAgIDI0NywgMjEzLCAxNCwgNywgMjQ3LCAyMTIsIDE0LCA3LCAyNDcsIDIxMSwgMTQsIDcsIDI0NywgMjEwLCAxNCwgNywgMjQ3LCAKKyAgICAyMDksIDE0LCA3LCAyNDcsIDIwOCwgMTQsIDcsIDI0NywgMjA3LCAxNCwgNywgMjQ3LCAyMDYsIDE0LCA3LCAyNDcsIDIwNSwgCisgICAgMTQsIDcsIDI0NywgMjA0LCAxNCwgNywgMjQ3LCAyMDMsIDE0LCA3LCAyNDcsIDIwMiwgMTQsIDcsIDI0NywgMjAxLCAxNCwgCisgICAgNywgMjQ3LCAyMDAsIDE0LCA3LCAyNDcsIDE5OSwgMTQsIDcsIDI0NywgMTk4LCAxNCwgNywgMjQ3LCAxOTcsIDE0LCA3LCAKKyAgICAyNDcsIDE5NiwgMTQsIDcsIDI0NywgMTk1LCAxNCwgNywgMjQ3LCAxOTQsIDE0LCA3LCAyNDcsIDE5MywgMTQsIDcsIDI0NywgCisgICAgMTkyLCAxNCwgNywgMjQyLCAxNTIsIDE0LCA3LCAyNDIsIDE1MSwgMTQsIDcsIDI0MiwgMTUwLCAxNCwgNywgMjQyLCAxNDksIAorICAgIDE0LCA3LCAyNDIsIDE0OCwgMTQsIDcsIDI0MiwgMTQ3LCAxNCwgNywgMjQyLCAxNDYsIDE0LCA3LCAyNDIsIDE0NSwgMTQsIAorICAgIDcsIDI0MiwgMTQ0LCAxNCwgNywgMjQyLCAxNDMsIDE0LCA3LCAyNDIsIDE0MiwgMTQsIDcsIDI0MiwgMTQxLCAxNCwgNywgCisgICAgMjQyLCAxNDAsIDE0LCA3LCAyNDIsIDEzOSwgMTQsIDcsIDI0MiwgMTM4LCAxNCwgNywgMjQyLCAxMzcsIDE0LCA3LCAyNDIsIAorICAgIDEzNiwgMTQsIDcsIDI0MiwgMTM1LCAxNCwgNywgMjQyLCAxMzQsIDE0LCA3LCAyNDIsIDEzMywgMTQsIDcsIDI0MiwgMTMyLCAKKyAgICAxNCwgNywgMjQyLCAxMzEsIDE0LCA3LCAyNDIsIDEzMCwgMTQsIDcsIDI0MiwgMTI5LCAxNCwgNywgMjQyLCAxMjgsIDE0LCAKKyAgICA3LCAyNDIsIDEyNywgMTQsIDcsIDI0MiwgMTI2LCAxNCwgNywgMjQyLCAxMjUsIDE0LCA3LCAyNDIsIDEyNCwgMTQsIDcsIAorICAgIDI0MiwgMTIzLCAxNCwgNywgMjQyLCAxMjIsIDE0LCA3LCAyNDIsIDEyMSwgMTQsIDcsIDI0MiwgMTIwLCAxNCwgNywgMjQyLCAKKyAgICAxMTksIDE0LCA3LCAyNDIsIDExOCwgMTQsIDcsIDI0MiwgMTE3LCAxNCwgNywgMjQyLCAxMTYsIDE0LCA3LCAyNDIsIDExNSwgCisgICAgMTQsIDcsIDI0MiwgMTE0LCAxNCwgNywgMjQyLCAxMTMsIDE0LCA3LCAyNDIsIDExMiwgMTQsIDcsIDI0MiwgMTExLCAxNCwgCisgICAgNywgMjQyLCAxMTAsIDE0LCA3LCAyNDIsIDEwOSwgMTQsIDcsIDI0MiwgMTA4LCAxNCwgNywgMjQyLCAxMDcsIDE0LCA3LCAKKyAgICAyNDIsIDEwNiwgMTQsIDcsIDI0MiwgMTA1LCAxNCwgNywgMjQyLCAxMDQsIDE0LCA3LCAyNDIsIDEwMywgMTQsIDcsIDI0MiwgCisgICAgMTAyLCAxNCwgNywgMjQyLCAxMDEsIDE0LCA3LCAyNDIsIDEwMCwgMTQsIDcsIDI0MiwgOTksIDE0LCA3LCAyNDIsIDk4LCAKKyAgICAxNCwgNywgMjQyLCA5NywgMTQsIDcsIDI0MiwgOTYsIDE0LCA3LCAyNDIsIDk1LCAxNCwgNywgMjQyLCA5NCwgMTQsIDcsIAorICAgIDI0MiwgOTMsIDE0LCA3LCAyNDIsIDkyLCAxNCwgNywgMjQyLCA5MSwgMTQsIDcsIDI0MiwgOTAsIDE0LCA3LCAyNDIsIDg5LCAKKyAgICAxNCwgNywgMjQyLCA4OCwgMTQsIDcsIDI0MiwgODcsIDE0LCA3LCAyNDIsIDg2LCAxNCwgNywgMjQyLCA4NSwgMTQsIDcsIAorICAgIDI0MiwgODQsIDE0LCA3LCAyNDIsIDgzLCAxNCwgNywgMjQyLCA4MiwgMTQsIDcsIDI0MiwgODEsIDE0LCA3LCAyNDIsIDgwLCAKKyAgICAxNCwgNywgMjQyLCA3OSwgMTQsIDcsIDI0MiwgNzgsIDE0LCA3LCAyNDIsIDc3LCAxNCwgNywgMjQyLCA3NiwgMTQsIDcsIAorICAgIDI0MiwgNzUsIDE0LCA3LCAyNDIsIDc0LCAxNCwgNywgMjQyLCA3MywgMTQsIDcsIDI0MiwgNzIsIDE0LCA3LCAyNDIsIDcxLCAKKyAgICAxNCwgNywgMjQyLCA3MCwgMTQsIDcsIDI0MiwgNjksIDE0LCA3LCAyNDIsIDY4LCAxNCwgNywgMjQyLCA2NywgMTQsIDcsIAorICAgIDI0MiwgNjYsIDE0LCA3LCAyNDIsIDY1LCAxNCwgNywgMjQyLCA2NCwgMTQsIDcsIDI0MiwgNjMsIDE0LCA3LCAyNDIsIDYyLCAKKyAgICAxNCwgNywgMjQyLCA2MSwgMTQsIDcsIDIzOSwgNzMsIDE0LCA3LCAyMzksIDcyLCAxNCwgNywgMjM5LCA3MSwgMTQsIDcsIAorICAgIDIzOSwgNzAsIDE0LCA3LCAyMzksIDY5LCAxNCwgNywgMjM5LCA2OCwgMTQsIDcsIDIzOSwgNjcsIDE0LCA3LCAyMzksIDY2LCAKKyAgICAxNCwgNywgMjM5LCA2NSwgMTQsIDcsIDIzOSwgNjQsIDE0LCA3LCAyMzksIDYzLCAxNCwgNywgMjM5LCA2MiwgMTQsIDcsIAorICAgIDIzOSwgNjEsIDE0LCA3LCAyMzksIDYwLCAxNCwgNywgMjM5LCA1OSwgMTQsIDcsIDIzOSwgNTgsIDE0LCA3LCAyMzksIDU3LCAKKyAgICAxNCwgNywgMjM5LCA1NiwgMTQsIDcsIDIzOSwgNTUsIDE0LCA3LCAyMzksIDU0LCAxNCwgNywgMjM5LCA1MywgMTQsIDcsIAorICAgIDIzOSwgNTIsIDE0LCA3LCAyMzksIDUxLCAxNCwgNywgMjM5LCA1MCwgMTQsIDcsIDIzOSwgNDksIDE0LCA3LCAyMzksIDQ4LCAKKyAgICAxNCwgNywgMjM5LCA0NywgMTQsIDcsIDIzOSwgNDYsIDE0LCA3LCAyMzksIDQ1LCAxNCwgNywgMjM5LCA0NCwgMTQsIDcsIAorICAgIDIzOSwgNDMsIDE0LCA3LCAyMzksIDQyLCAxNCwgNywgMjM5LCA0MSwgMTQsIDcsIDIzOSwgNDAsIDE0LCA3LCAyMzksIDM5LCAKKyAgICAxNCwgNywgMjM5LCAzOCwgMTQsIDcsIDIzOSwgMzcsIDE0LCA3LCAyMzksIDM2LCAxNCwgNywgMjM5LCAzNSwgMTQsIDcsIAorICAgIDIzOSwgMzQsIDE0LCA3LCAyMzksIDMzLCAxNCwgNywgMjM5LCAzMiwgMTQsIDcsIDIzOSwgMzEsIDE0LCA3LCAyMzksIDMwLCAKKyAgICAxNCwgNywgMjM4LCA0LCAxNCwgNywgMjM4LCAzLCAxNCwgNywgMjM4LCAyLCAxNCwgNywgMjM4LCAxLCAxNCwgNywgMjM4LCAKKyAgICAwLCAxNCwgNywgMjM3LCAyNTUsIDE0LCA3LCAyMzcsIDI1NCwgMTQsIDcsIDIzNywgMjUzLCAxNCwgNywgMjM3LCAyNTIsIAorICAgIDE0LCA3LCAyMzcsIDI1MSwgMTQsIDcsIDIzNywgMjUwLCAxNCwgNywgMjM3LCAyNDksIDE0LCA3LCAyMzcsIDI0OCwgMTQsIAorICAgIDcsIDIzNywgMjQ3LCAxNCwgNywgMjM3LCAyNDYsIDE0LCA3LCAyMzcsIDI0NSwgMTQsIDcsIDIzNywgMjQ0LCAxNCwgNywgCisgICAgMjM3LCAyNDMsIDE0LCA3LCAyMzcsIDI0MiwgMTQsIDcsIDIzNywgMjQxLCAxNCwgNywgMjM3LCAyNDAsIDE0LCA3LCAyMzcsIAorICAgIDIzOSwgMTQsIDcsIDIzNywgMjM4LCAxNCwgNywgMjM3LCAyMzcsIDE0LCA3LCAyMzcsIDIzNiwgMTQsIDcsIDIzNywgMjM1LCAKKyAgICAxNCwgNywgMjM3LCAyMzQsIDE0LCA3LCAyMzcsIDIzMywgMTQsIDcsIDIzNywgMjMyLCAxNCwgNywgMjM3LCAyMzEsIDE0LCAKKyAgICA3LCAyMzcsIDIzMCwgMTQsIDcsIDIzNywgMjI5LCAxNCwgNywgMjM3LCAyMjgsIDE0LCA3LCAyMzcsIDIyNywgMTQsIDcsIAorICAgIDIzNywgMjI2LCAxNCwgNywgMjM3LCAyMjUsIDE0LCA3LCAyMzcsIDIyNCwgMTQsIDcsIDIzNywgMjIzLCAxNCwgNywgMjM3LCAKKyAgICAyMjIsIDE0LCA3LCAyMzcsIDIyMSwgMTQsIDcsIDIzNywgMjIwLCAxNCwgNywgMjM3LCAyMTksIDE0LCA3LCAyMzcsIDIxOCwgCisgICAgMTQsIDcsIDIzNywgMjE3LCAxNCwgNywgMjM3LCAyMTYsIDE0LCA3LCAyMzcsIDIxNSwgMTQsIDcsIDIzNywgMjE0LCAxNCwgCisgICAgNywgMjM3LCAyMTMsIDE0LCA3LCAyMzcsIDIxMiwgMTQsIDcsIDIzNywgMjExLCAxNCwgNywgMjM3LCAyMTAsIDE0LCA3LCAKKyAgICAyMzcsIDIwOSwgMTQsIDcsIDIzNywgMjA4LCAxNCwgNywgMjM3LCAyMDcsIDE0LCA3LCAyMzcsIDIwNiwgMTQsIDcsIDIzNywgCisgICAgMjA1LCAxNCwgNywgMjM3LCAyMDQsIDE0LCA3LCAyMzcsIDIwMywgMTQsIDcsIDIzNywgMjAyLCAxNCwgNywgMjM3LCAyMDEsIAorICAgIDE0LCA3LCAyMzcsIDIwMCwgMTQsIDcsIDIzNywgMTk5LCAxNCwgNywgMjM3LCAxOTgsIDE0LCA3LCAyMzcsIDE5NywgMTQsIAorICAgIDcsIDIzNywgMTk2LCAxNCwgNywgMjM2LCAxNTUsIDE0LCA3LCAyMzYsIDE1NCwgMTQsIDcsIDIzNiwgMTUzLCAxNCwgNywgCisgICAgMjM2LCAxNTIsIDE0LCA3LCAyMzYsIDE1MSwgMTQsIDcsIDIzNiwgMTUwLCAxNCwgNywgMjM2LCAxNDksIDE0LCA3LCAyMzYsIAorICAgIDE0OCwgMTQsIDcsIDIzNiwgMTQ3LCAxNCwgNywgMjM2LCAxNDYsIDE0LCA3LCAyMzYsIDE0NSwgMTQsIDcsIDIzNiwgMTQ0LCAKKyAgICAxNCwgNywgMjM2LCAxNDMsIDE0LCA3LCAyMzYsIDE0MiwgMTQsIDcsIDIzNiwgMTQxLCAxNCwgNywgMjM2LCAxNDAsIDE0LCAKKyAgICA3LCAyMzYsIDEzOSwgMTQsIDcsIDIzNiwgMTM4LCAxNCwgNywgMjM2LCAxMzcsIDE0LCA3LCAyMzYsIDEzNiwgMTQsIDcsIAorICAgIDIzNiwgMTM1LCAxNCwgNywgMjM2LCAxMzQsIDE0LCA3LCAyMzYsIDEzMywgMTQsIDcsIDIzNiwgMTMyLCAxNCwgNywgMjM2LCAKKyAgICAxMzEsIDE0LCA3LCAyMzYsIDEzMCwgMTQsIDcsIDIzNiwgMTI5LCAxNCwgNywgMjM2LCAxMjgsIDE0LCA3LCAyMzYsIDEyNywgCisgICAgMTQsIDcsIDIzNiwgMTI2LCAxNCwgNywgMjM2LCAxMjUsIDE0LCA3LCAyMzYsIDEyNCwgMTQsIDcsIDIzNiwgMTIzLCAxNCwgCisgICAgNywgMjM2LCAxMjIsIDE0LCA3LCAyMzYsIDEyMSwgMTQsIDcsIDIzNiwgMTIwLCAxNCwgNywgMjM2LCAxMTksIDE0LCA3LCAKKyAgICAyMzYsIDExOCwgMTQsIDcsIDIzNiwgMTE3LCAxNCwgNywgMjM2LCAxMTYsIDE0LCA3LCAyMzYsIDExNSwgMTQsIDcsIDIzNiwgCisgICAgMTE0LCAxNCwgNywgMjM2LCAxMTMsIDE0LCA3LCAyMzYsIDExMiwgMTQsIDcsIDIzNiwgMTExLCAxNCwgNywgMjM2LCAxMTAsIAorICAgIDE0LCA3LCAyMzYsIDEwOSwgMTQsIDcsIDIzNiwgMTA4LCAxNCwgNywgMjM2LCAxMDcsIDE0LCA3LCAyMzYsIDEwNiwgMTQsIAorICAgIDcsIDIzNiwgMTA1LCAxNCwgNywgMjM2LCAxMDQsIDE0LCA3LCAyMzYsIDEwMywgMTQsIDcsIDIzNiwgMTAyLCAxNCwgNywgCisgICAgMjM2LCAxMDEsIDE0LCA3LCAyMzYsIDEwMCwgMTQsIDcsIDIzNiwgOTksIDE0LCA3LCAyMzYsIDk4LCAxNCwgNywgMjM2LCAKKyAgICA5NywgMTQsIDcsIDIzNiwgOTYsIDE0LCA3LCAyMzYsIDk1LCAxNCwgNywgMjM2LCA5NCwgMTQsIDcsIDIzNiwgOTMsIDE0LCAKKyAgICA3LCAyMzYsIDkyLCAxNCwgNywgMjM0LCAyNDUsIDE0LCA3LCAyMzQsIDI0NCwgMTQsIDcsIDIzNCwgMjQzLCAxNCwgNywgCisgICAgMjM0LCAyNDIsIDE0LCA3LCAyMzQsIDI0MSwgMTQsIDcsIDIzNCwgMjQwLCAxNCwgNywgMjM0LCAyMzksIDE0LCA3LCAyMzQsIAorICAgIDIzOCwgMTQsIDcsIDIzNCwgMjM3LCAxNCwgNywgMjMzLCAzLCAxNCwgNywgMjMzLCAyLCAxNCwgNywgMjMzLCAxLCAxNCwgNywgCisgICAgMjMzLCAwLCAxNCwgNywgMjMyLCAyNTUsIDE0LCA3LCAyMzIsIDI1NCwgMTQsIDcsIDIzMiwgMjUzLCAxNCwgNywgMjMyLCAKKyAgICAyNTIsIDE0LCA3LCAyMzIsIDI1MSwgMTQsIDcsIDIzMiwgMjUwLCAxNCwgNywgMjMyLCAyNDksIDE0LCA3LCAyMzIsIDI0OCwgCisgICAgMTQsIDcsIDIzMiwgMjQ3LCAxNCwgNywgMjMyLCAyNDYsIDE0LCA3LCAyMzIsIDI0NSwgMTQsIDcsIDIzMiwgMjQ0LCAxNCwgCisgICAgNywgMjMyLCAyNDMsIDE0LCA3LCAyMzIsIDI0MiwgMTQsIDcsIDIzMiwgMjQxLCAxNCwgNywgMjI3LCAxMTcsIDE0LCA3LCAKKyAgICAyMjcsIDExNiwgMTQsIDcsIDIyNywgMTE1LCAxNCwgNywgMjI3LCAxMTQsIDE0LCA3LCAyMjcsIDExMywgMTQsIDcsIDIyNywgCisgICAgMTEyLCAxNCwgNywgMjI3LCAxMTEsIDE0LCA3LCAyMjcsIDExMCwgMTQsIDcsIDIyNSwgMTkwLCAxNCwgNywgMjI1LCAxODksIAorICAgIDE0LCA3LCAyMjUsIDE4OCwgMTQsIDcsIDIyNSwgMTg3LCAxNCwgNywgMjI1LCAxODYsIDE0LCA3LCAyMjUsIDE4NSwgMTQsIAorICAgIDcsIDIyNSwgMTg0LCAxNCwgNywgMjI1LCAxODMsIDE0LCA3LCAyMjUsIDE4MiwgMTQsIDcsIDIyNSwgMTgxLCAxNCwgNywgCisgICAgMjIzLCAyNDEsIDE0LCA3LCAyMjMsIDI0MCwgMTQsIDcsIDIyMywgMjM5LCAxNCwgNywgMjIzLCAyMzcsIDE0LCA3LCAyMjMsIAorICAgIDIzNSwgMTQsIDcsIDIyMywgMjM0LCAxNCwgNywgMjIzLCAyMzIsIDE0LCA3LCAyMjMsIDIzMCwgMTQsIDcsIDIyMywgMjI4LCAKKyAgICAxNCwgNywgMjIzLCAyMjYsIDE0LCA3LCAyMjMsIDIyNCwgMTQsIDcsIDIyMywgMjIyLCAxNCwgNywgMjIzLCAyMjAsIDE0LCAKKyAgICA3LCAyMjMsIDIxOSwgMTQsIDcsIDIyMywgMjE3LCAxNCwgNywgMjIzLCAyMTUsIDE0LCA3LCAyMjMsIDIxNCwgMTQsIDcsIAorICAgIDIyMywgMjEzLCAxNCwgNywgMjIzLCAyMTIsIDE0LCA3LCAyMjMsIDIxMSwgMTQsIDcsIDIyMywgMjEwLCAxNCwgNywgMjIzLCAKKyAgICAyMDksIDE0LCA3LCAyMjMsIDIwOCwgMTQsIDcsIDIyMywgMjA3LCAxNCwgNywgMjIzLCAyMDUsIDE0LCA3LCAyMjMsIDIwMywgCisgICAgMTQsIDcsIDIyMywgMjAxLCAxNCwgNywgMjIzLCAyMDAsIDE0LCA3LCAyMjMsIDE5OCwgMTQsIDcsIDIyMywgMTk3LCAxNCwgCisgICAgNywgMjIzLCAxOTUsIDE0LCA3LCAyMjMsIDE5NCwgMTQsIDcsIDIyMywgMTkyLCAxNCwgNywgMjIzLCAxOTAsIDE0LCA3LCAKKyAgICAyMjMsIDE4OCwgMTQsIDcsIDIyMywgMTg2LCAxNCwgNywgMjIzLCAxODQsIDE0LCA3LCAyMjMsIDE4MywgMTQsIDcsIDIyMywgCisgICAgMTgxLCAxNCwgNywgMjIzLCAxNzksIDE0LCA3LCAyMjMsIDE3OCwgMTQsIDcsIDIyMywgMTc2LCAxNCwgNywgMjIzLCAxNzQsIAorICAgIDE0LCA3LCAyMjMsIDE3MiwgMTQsIDcsIDIyMywgMTcwLCAxNCwgNywgMjIzLCAxNjksIDE0LCA3LCAyMjMsIDE2NywgMTQsIAorICAgIDcsIDIyMywgMTY1LCAxNCwgNywgMjIzLCAxNjMsIDE0LCA3LCAyMjMsIDE2MiwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgCisgICAgMjIzLCAxNTgsIDE0LCA3LCAyMjMsIDE1NywgMTQsIDcsIDIyMywgMTU2LCAxNCwgNywgMjIzLCAxNTQsIDE0LCA3LCAyMjMsIAorICAgIDE1MiwgMTQsIDcsIDIyMywgMTUwLCAxNCwgNywgMjIzLCAxNDgsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgMTQ0LCAKKyAgICAxNCwgNywgMjIzLCAxNDIsIDE0LCA3LCAyMjMsIDE0MSwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzcsIDE0LCAKKyAgICA3LCAyMjMsIDEzNSwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgMjIwLCAyMTEsIDE0LCA3LCAyMjAsIDIxMCwgMTQsIDcsIAorICAgIDIyMCwgMjA5LCAxNCwgNywgMjIwLCAyMDgsIDE0LCA3LCAyMjAsIDIwNywgMTQsIDcsIDIyMCwgMjA2LCAxNCwgNywgMjIwLCAKKyAgICAyMDUsIDE0LCA3LCAyMjAsIDIwNCwgMTQsIDcsIDIyMCwgMjAzLCAxNCwgNywgMjIwLCAyMDIsIDE0LCA3LCAyMjAsIDIwMSwgCisgICAgMTQsIDcsIDIyMCwgMjAwLCAxNCwgNywgMjIwLCAxOTksIDE0LCA3LCAyMjAsIDE5OCwgMTQsIDcsIDIyMCwgMTk3LCAxNCwgCisgICAgNywgMjIwLCAxOTYsIDE0LCA3LCAyMjAsIDE5NSwgMTQsIDcsIDIyMCwgMTk0LCAxNCwgNywgMjIwLCAxOTMsIDE0LCA3LCAKKyAgICAyMjAsIDE5MiwgMTQsIDcsIDIyMCwgMTkxLCAxNCwgNywgMjIwLCAxOTAsIDE0LCA3LCAyMjAsIDE4OSwgMTQsIDcsIDIyMCwgCisgICAgMTg4LCAxNCwgNywgMjIwLCAxODcsIDE0LCA3LCAyMjAsIDE4NiwgMTQsIDcsIDIyMCwgMTg1LCAxNCwgNywgMjIwLCAxODQsIAorICAgIDE0LCA3LCAyMjAsIDE4MywgMTQsIDcsIDIyMCwgMTgyLCAxNCwgNywgMjIwLCAxODEsIDE0LCA3LCAyMjAsIDE4MCwgMTQsIAorICAgIDcsIDIyMCwgMTc5LCAxNCwgNywgMjIwLCAxNzgsIDE0LCA3LCAyMjAsIDE3NywgMTQsIDcsIDIyMCwgMTc2LCAxNCwgNywgCisgICAgMjIwLCAxNzUsIDE0LCA3LCAyMjAsIDE3NCwgMTQsIDcsIDIyMCwgMTczLCAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIAorICAgIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAKKyAgICAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCAKKyAgICA3LCAyMTksIDQ2LCAxNCwgNywgMjE5LCA0NSwgMTQsIDcsIDIxOSwgNDQsIDE0LCA3LCAyMTksIDQzLCAxNCwgNywgMjE5LCAKKyAgICA0MiwgMTQsIDcsIDIxOSwgNDEsIDE0LCA3LCAyMTksIDQwLCAxNCwgNywgMjE5LCAzOSwgMTQsIDcsIDIxOSwgMzgsIDE0LCAKKyAgICA3LCAyMTksIDM3LCAxNCwgNywgMjE5LCAzNiwgMTQsIDcsIDIxOSwgMzUsIDE0LCA3LCAyMTksIDM0LCAxNCwgNywgMjE5LCAKKyAgICAzMywgMTQsIDcsIDIxOSwgMzIsIDE0LCA3LCAyMTksIDMxLCAxNCwgNywgMjE5LCAzMCwgMTQsIDcsIDIxOSwgMjksIDE0LCAKKyAgICA3LCAyMTksIDI4LCAxNCwgNywgMjE5LCAyNywgMTQsIDcsIDIxOSwgMjYsIDE0LCA3LCAyMTksIDI1LCAxNCwgNywgMjE4LCAKKyAgICAxMzIsIDE0LCA3LCAyMTgsIDEzMSwgMTQsIDcsIDIxOCwgMTMwLCAxNCwgNywgMjE4LCAxMjksIDE0LCA3LCAyMTgsIDEyOCwgCisgICAgMTQsIDcsIDIxOCwgMTI3LCAxNCwgNywgMjE4LCAxMjYsIDE0LCA3LCAyMTgsIDEyNSwgMTQsIDcsIDIxOCwgMTI0LCAxNCwgCisgICAgNywgMjE4LCAxMjMsIDE0LCA3LCAyMTgsIDEyMiwgMTQsIDcsIDIxOCwgMTIxLCAxNCwgNywgMjE4LCAxMjAsIDE0LCA3LCAKKyAgICAyMTgsIDExOSwgMTQsIDcsIDIxOCwgMTE4LCAxNCwgNywgMjE4LCAxMTcsIDE0LCA3LCAyMTgsIDExNiwgMTQsIDcsIDIxOCwgCisgICAgMTE1LCAxNCwgNywgMjE4LCAxMTQsIDE0LCA3LCAyMTgsIDExMywgMTQsIDcsIDIxOCwgMTEyLCAxNCwgNywgMjE4LCAxMTEsIAorICAgIDE0LCA3LCAyMTgsIDExMCwgMTQsIDcsIDIxOCwgMTA5LCAxNCwgNywgMjE4LCAxMDgsIDE0LCA3LCAyMTgsIDEwNywgMTQsIAorICAgIDcsIDIxNywgMjIyLCAxNCwgNywgMjE3LCAyMjEsIDE0LCA3LCAyMTcsIDIyMCwgMTQsIDcsIDIxNywgMjE5LCAxNCwgNywgCisgICAgMjE3LCAyMTgsIDE0LCA3LCAyMTcsIDIxNywgMTQsIDcsIDIxNywgMjE2LCAxNCwgNywgMjE3LCAyMTUsIDE0LCA3LCAyMTcsIAorICAgIDIxNCwgMTQsIDcsIDIxNywgMjEzLCAxNCwgNywgMjE3LCAyMTIsIDE0LCA3LCAyMTcsIDIxMSwgMTQsIDcsIDIxNywgMjEwLCAKKyAgICAxNCwgNywgMjE3LCAyMDksIDE0LCA3LCAyMTcsIDIwOCwgMTQsIDcsIDIxNywgMjA3LCAxNCwgNywgMjE3LCAyMDYsIDE0LCAKKyAgICA3LCAyMTcsIDIwNSwgMTQsIDcsIDIxNywgMjA0LCAxNCwgNywgMjE3LCAyMDMsIDE0LCA3LCAyMTcsIDIwMiwgMTQsIDcsIAorICAgIDIxNywgMjAxLCAxNCwgNywgMjE3LCAyMDAsIDE0LCA3LCAyMTcsIDE5OSwgMTQsIDcsIDIxNywgMTk4LCAxNCwgNywgMjE3LCAKKyAgICAxOTcsIDE0LCA3LCAyMTcsIDE5NiwgMTQsIDcsIDIxNywgMTk1LCAxNCwgNywgMjE3LCAxOTQsIDE0LCA3LCAyMTcsIDE5MywgCisgICAgMTQsIDcsIDIxNywgMTkyLCAxNCwgNywgMjE3LCAxOTEsIDE0LCA3LCAyMTcsIDE5MCwgMTQsIDcsIDIxNywgMTg5LCAxNCwgCisgICAgNywgMjE3LCAxODgsIDE0LCA3LCAyMTcsIDE4NywgMTQsIDcsIDIxNywgMTg2LCAxNCwgNywgMjE3LCAxODUsIDE0LCA3LCAKKyAgICAyMTcsIDE4NCwgMTQsIDcsIDIxNywgMTgzLCAxNCwgNywgMjE3LCAxODIsIDE0LCA3LCAyMTcsIDE4MSwgMTQsIDcsIDIxNywgCisgICAgMTgwLCAxNCwgNywgMjE3LCAxNzksIDE0LCA3LCAyMTcsIDE3OCwgMTQsIDcsIDIxNywgMTc3LCAxNCwgNywgMjE3LCAxNzYsIAorICAgIDE0LCA3LCAyMTcsIDE3NSwgMTQsIDcsIDIxNywgMTc0LCAxNCwgNywgMjE3LCAxNzMsIDE0LCA3LCAyMTcsIDE3MiwgMTQsIAorICAgIDcsIDIxNywgMTcxLCAxNCwgNywgMjE3LCAxNzAsIDE0LCA3LCAyMTcsIDE2OSwgMTQsIDcsIDIxNywgMTY4LCAxNCwgNywgCisgICAgMjE3LCAxNjcsIDE0LCA3LCAyMTcsIDE2NiwgMTQsIDcsIDIxNywgMTY1LCAxNCwgNywgMjE3LCAxNjQsIDE0LCA3LCAyMTcsIAorICAgIDE2MywgMTQsIDcsIDIxNywgMTYyLCAxNCwgNywgMjE3LCAxNjEsIDE0LCA3LCAyMTcsIDE2MCwgMTQsIDcsIDIxNywgMTU5LCAKKyAgICAxNCwgNywgMjE3LCAxNTgsIDE0LCA3LCAyMTcsIDE1NywgMTQsIDcsIDIxNywgMTU2LCAxNCwgNywgMjE3LCAxNTUsIDE0LCAKKyAgICA3LCAyMTcsIDE1NCwgMTQsIDcsIDIxNywgMTUzLCAxNCwgNywgMjE3LCAxNTIsIDE0LCA3LCAyMTcsIDE1MSwgMTQsIDcsIAorICAgIDIxNywgMTUwLCAxNCwgNywgMjE3LCAxNDksIDE0LCA3LCAyMTcsIDE0OCwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAKKyAgICAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIDIxNiwgMjIyLCAxNCwgNywgMjE2LCAyMjEsIDE0LCA3LCAyMTYsIDIyMCwgCisgICAgMTQsIDcsIDIxNiwgMjE5LCAxNCwgNywgMjE2LCAyMTgsIDE0LCA3LCAyMTYsIDIxNywgMTQsIDcsIDIxNiwgMjE2LCAxNCwgCisgICAgNywgMjE2LCAyMTUsIDE0LCA3LCAyMTYsIDIxNCwgMTQsIDcsIDIxNiwgMjEzLCAxNCwgNywgMjE0LCAxNjYsIDE0LCA3LCAKKyAgICAyMTQsIDE2NSwgMTQsIDcsIDIxNCwgMTY0LCAxNCwgNywgMjE0LCAxNjMsIDE0LCA3LCAyMTQsIDE2MiwgMTQsIDcsIDIxNCwgCisgICAgMTYxLCAxNCwgNywgMjE0LCAxNjAsIDE0LCA3LCAyMTQsIDMxLCAxNCwgNywgMjE0LCAzMCwgMTQsIDcsIDIxNCwgMjksIDE0LCAKKyAgICA3LCAyMTQsIDI4LCAxNCwgNywgMjE0LCAyNywgMTQsIDcsIDIxNCwgMjYsIDE0LCA3LCAyMTQsIDI1LCAxNCwgNywgMjE0LCAKKyAgICAyNCwgMTQsIDcsIDIxNCwgMjMsIDE0LCA3LCAyMTQsIDIyLCAxNCwgNywgMjE0LCAyMSwgMTQsIDcsIDIxNCwgMjAsIDE0LCAKKyAgICA3LCAyMTQsIDE5LCAxNCwgNywgMjE0LCAxOCwgMTQsIDcsIDIxNCwgMTcsIDE0LCA3LCAyMTQsIDE2LCAxNCwgNywgMjE0LCAKKyAgICAxNSwgMTQsIDcsIDIxNCwgMTQsIDE0LCA3LCAyMTQsIDEzLCAxNCwgNywgMjE0LCAxMiwgMTQsIDcsIDIxNCwgMTEsIDE0LCAKKyAgICA3LCAyMTQsIDEwLCAxNCwgNywgMjE0LCA5LCAxNCwgNywgMjE0LCA4LCAxNCwgNywgMjE0LCA3LCAxNCwgNywgMjE0LCA2LCAKKyAgICAxNCwgNywgMjE0LCA1LCAxNCwgNywgMjE0LCA0LCAxNCwgNywgMjE0LCAzLCAxNCwgNywgMjE0LCAyLCAxNCwgNywgMjE0LCAKKyAgICAxLCAxNCwgNywgMjE0LCAwLCAxNCwgNywgMjEzLCAyNTUsIDE0LCA3LCAyMTMsIDI1NCwgMTQsIDcsIDIxMiwgMTE5LCAxNCwgCisgICAgNywgMjEyLCAxMTgsIDE0LCA3LCAyMTIsIDExNywgMTQsIDcsIDIxMiwgMTE2LCAxNCwgNywgMjEyLCAxMTUsIDE0LCA3LCAKKyAgICAyMTIsIDExNCwgMTQsIDcsIDIxMiwgMTEzLCAxNCwgNywgMjEyLCAxMTIsIDE0LCA3LCAyMTIsIDExMSwgMTQsIDcsIDIxMiwgCisgICAgMTEwLCAxNCwgNywgMjEyLCAxMDksIDE0LCA3LCAyMTIsIDEwOCwgMTQsIDcsIDIxMiwgMTA3LCAxNCwgNywgMjEyLCAxMDYsIAorICAgIDE0LCA3LCAyMTIsIDEwNSwgMTQsIDcsIDIxMiwgMTA0LCAxNCwgNywgMjEyLCAxMDMsIDE0LCA3LCAyMTIsIDEwMiwgMTQsIAorICAgIDcsIDIxMiwgMTAxLCAxNCwgNywgMjEyLCAxMDAsIDE0LCA3LCAyMTIsIDk5LCAxNCwgNywgMjEyLCA5OCwgMTQsIDcsIDIxMiwgCisgICAgOTcsIDE0LCA3LCAyMTIsIDk2LCAxNCwgNywgMjEyLCA5NSwgMTQsIDcsIDIxMiwgOTQsIDE0LCA3LCAyMTIsIDkzLCAxNCwgCisgICAgNywgMjEyLCA5MiwgMTQsIDcsIDIxMiwgOTEsIDE0LCA3LCAyMTIsIDkwLCAxNCwgNywgMjEyLCA4OSwgMTQsIDcsIDIxMiwgCisgICAgODgsIDE0LCA3LCAyMTIsIDg3LCAxNCwgNywgMjEyLCA4NiwgMTQsIDcsIDIxMiwgODUsIDE0LCA3LCAyMTIsIDg0LCAxNCwgCisgICAgNywgMjEyLCA4MywgMTQsIDcsIDIxMiwgODIsIDE0LCA3LCAyMTIsIDgxLCAxNCwgNywgMjEyLCA4MCwgMTQsIDcsIDIxMiwgCisgICAgNzksIDE0LCA3LCAyMTIsIDc4LCAxNCwgNywgMjEyLCA3NywgMTQsIDcsIDIxMiwgNzYsIDE0LCA3LCAyMTIsIDc1LCAxNCwgCisgICAgNywgMjEyLCA3NCwgMTQsIDcsIDIxMiwgNzMsIDE0LCA3LCAyMTIsIDcyLCAxNCwgNywgMjEyLCA3MSwgMTQsIDcsIDIxMiwgCisgICAgNzAsIDE0LCA3LCAyMTIsIDY5LCAxNCwgNywgMjEyLCA2OCwgMTQsIDcsIDIxMiwgNjcsIDE0LCA3LCAyMTIsIDY2LCAxNCwgCisgICAgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgCisgICAgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgCisgICAgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgCisgICAgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgCisgICAgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgCisgICAgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgCisgICAgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgCisgICAgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgCisgICAgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNywgCisgICAgNDEsIDE0LCA3LCAyMDcsIDQwLCAxNCwgNywgMjA3LCAzOSwgMTQsIDcsIDIwNywgMzgsIDE0LCA3LCAyMDQsIDk1LCAxNCwgCisgICAgNywgMjA0LCA5NCwgMTQsIDcsIDIwNCwgOTMsIDE0LCA3LCAyMDQsIDkyLCAxNCwgNywgMjA0LCA5MSwgMTQsIDcsIDIwNCwgCisgICAgOTAsIDE0LCA3LCAyMDQsIDg5LCAxNCwgNywgMjA0LCA4OCwgMTQsIDcsIDIwNCwgODcsIDE0LCA3LCAyMDQsIDg2LCAxNCwgCisgICAgNywgMjA0LCA4NSwgMTQsIDcsIDIwNCwgODQsIDE0LCA3LCAyMDQsIDgzLCAxNCwgNywgMjA0LCA4MiwgMTQsIDcsIDIwNCwgCisgICAgODEsIDE0LCA3LCAyMDQsIDgwLCAxNCwgNywgMjA0LCA3OSwgMTQsIDcsIDIwNCwgNzgsIDE0LCA3LCAyMDQsIDc3LCAxNCwgCisgICAgNywgMjA0LCA3NiwgMTQsIDcsIDIwNCwgNzUsIDE0LCA3LCAyMDQsIDc0LCAxNCwgNywgMjA0LCA3MywgMTQsIDcsIDIwNCwgCisgICAgNzIsIDE0LCA3LCAyMDQsIDcxLCAxNCwgNywgMjA0LCA3MCwgMTQsIDcsIDIwNCwgNjksIDE0LCA3LCAyMDQsIDY4LCAxNCwgCisgICAgNywgMjA0LCA2NywgMTQsIDcsIDIwNCwgNjYsIDE0LCA3LCAyMDQsIDY1LCAxNCwgNywgMjA0LCA2NCwgMTQsIDcsIDIwNCwgCisgICAgNjMsIDE0LCA3LCAyMDQsIDYyLCAxNCwgNywgMjA0LCA2MSwgMTQsIDcsIDIwNCwgNjAsIDE0LCA3LCAyMDQsIDU5LCAxNCwgCisgICAgNywgMjA0LCA1OCwgMTQsIDcsIDIwNCwgNTcsIDE0LCA3LCAyMDQsIDU2LCAxNCwgNywgMjA0LCA1NSwgMTQsIDcsIDIwNCwgCisgICAgNTQsIDE0LCA3LCAyMDQsIDUzLCAxNCwgNywgMjA0LCA1MiwgMTQsIDcsIDIwNCwgNTEsIDE0LCA3LCAyMDQsIDUwLCAxNCwgCisgICAgNywgMjA0LCA0OSwgMTQsIDcsIDIwMywgMTY3LCAxNCwgNywgMjAzLCAxNjYsIDE0LCA3LCAyMDMsIDE2NSwgMTQsIDcsIAorICAgIDIwMywgMTY0LCAxNCwgNywgMjAzLCAxNjMsIDE0LCA3LCAyMDMsIDE2MiwgMTQsIDcsIDIwMywgMTYxLCAxNCwgNywgMjAzLCAKKyAgICAxNjAsIDE0LCA3LCAyMDMsIDE1OSwgMTQsIDcsIDIwMywgMTU4LCAxNCwgNywgMjAzLCAxNTcsIDE0LCA3LCAyMDMsIDE1NiwgCisgICAgMTQsIDcsIDIwMywgMTU1LCAxNCwgNywgMjAzLCAxNTQsIDE0LCA3LCAyMDMsIDE1MywgMTQsIDcsIDIwMywgMTUyLCAxNCwgCisgICAgNywgMjAzLCAxNTEsIDE0LCA3LCAyMDMsIDE1MCwgMTQsIDcsIDIwMywgMTQ5LCAxNCwgNywgMjAzLCAxNDgsIDE0LCA3LCAKKyAgICAyMDMsIDE0NywgMTQsIDcsIDIwMywgMTQ2LCAxNCwgNywgMjAzLCAxNDUsIDE0LCA3LCAyMDMsIDE0NCwgMTQsIDcsIDIwMywgCisgICAgMTQzLCAxNCwgNywgMjAzLCAxNDIsIDE0LCA3LCAyMDMsIDE0MSwgMTQsIDcsIDIwMywgMTQwLCAxNCwgNywgMjAzLCAxMzksIAorICAgIDE0LCA3LCAyMDMsIDEzOCwgMTQsIDcsIDIwMywgMTM3LCAxNCwgNywgMjAzLCAxMzYsIDE0LCA3LCAyMDMsIDEzNSwgMTQsIAorICAgIDcsIDIwMywgMTM0LCAxNCwgNywgMjAzLCAxMzMsIDE0LCA3LCAyMDMsIDEzMiwgMTQsIDcsIDIwMywgMTMxLCAxNCwgNywgCisgICAgMjAzLCAxMzAsIDE0LCA3LCAyMDMsIDEyOSwgMTQsIDcsIDIwMywgMTI4LCAxNCwgNywgMjAzLCAxMjcsIDE0LCA3LCAyMDMsIAorICAgIDEyNiwgMTQsIDcsIDIwMywgMTI1LCAxNCwgNywgMjAzLCAxMjQsIDE0LCA3LCAyMDMsIDEyMywgMTQsIDcsIDIwMywgMTIyLCAKKyAgICAxNCwgNywgMjAzLCAxMjEsIDE0LCA3LCAyMDMsIDEyMCwgMTQsIDcsIDIwMywgMTE5LCAxNCwgNywgMjAzLCAxMTgsIDE0LCAKKyAgICA3LCAyMDMsIDExNywgMTQsIDcsIDIwMywgMTE2LCAxNCwgNywgMjAzLCAxMTUsIDE0LCA3LCAyMDMsIDExNCwgMTQsIDcsIAorICAgIDIwMywgMTEzLCAxNCwgNywgMjAzLCAxMTIsIDE0LCA3LCAyMDMsIDExMSwgMTQsIDcsIDIwMywgMTEwLCAxNCwgNywgMjAzLCAKKyAgICAxMDksIDE0LCA3LCAyMDMsIDEwOCwgMTQsIDcsIDIwMywgMTA3LCAxNCwgNywgMjAzLCAxMDYsIDE0LCA3LCAyMDMsIDEwNSwgCisgICAgMTQsIDcsIDIwMywgMTA0LCAxNCwgNywgMjAzLCAxMDMsIDE0LCA3LCAyMDMsIDEwMiwgMTQsIDcsIDIwMywgMTAxLCAxNCwgCisgICAgNywgMjAzLCAxMDAsIDE0LCA3LCAyMDMsIDk5LCAxNCwgNywgMjAzLCA5OCwgMTQsIDcsIDIwMywgOTcsIDE0LCA3LCAyMDMsIAorICAgIDk2LCAxNCwgNywgMjAzLCA5NSwgMTQsIDcsIDIwMywgOTQsIDE0LCA3LCAyMDMsIDkzLCAxNCwgNywgMjAzLCA5MiwgMTQsIAorICAgIDcsIDIwMywgOTEsIDE0LCA3LCAyMDEsIDE0NiwgMTQsIDcsIDIwMSwgMTQ1LCAxNCwgNywgMjAxLCAxNDQsIDE0LCA3LCAKKyAgICAyMDEsIDE0MywgMTQsIDcsIDIwMSwgMTQyLCAxNCwgNywgMjAxLCAxNDEsIDE0LCA3LCAyMDEsIDE0MCwgMTQsIDcsIDIwMSwgCisgICAgMTM5LCAxNCwgNywgMjAxLCAxMzgsIDE0LCA3LCAyMDEsIDEzNywgMTQsIDcsIDIwMSwgMTM2LCAxNCwgNywgMjAxLCAxMzUsIAorICAgIDE0LCA3LCAyMDEsIDEzNCwgMTQsIDcsIDIwMSwgMTMzLCAxNCwgNywgMjAxLCAxMzIsIDE0LCA3LCAyMDEsIDEzMSwgMTQsIAorICAgIDcsIDIwMSwgMTMwLCAxNCwgNywgMjAxLCAxMjksIDE0LCA3LCAyMDEsIDEyOCwgMTQsIDcsIDIwMSwgMTI3LCAxNCwgNywgCisgICAgMjAxLCAxMjYsIDE0LCA3LCAyMDEsIDEyNSwgMTQsIDcsIDIwMSwgMTI0LCAxNCwgNywgMjAxLCAxMjMsIDE0LCA3LCAyMDEsIAorICAgIDEyMiwgMTQsIDcsIDIwMSwgMTIxLCAxNCwgNywgMjAxLCAxMjAsIDE0LCA3LCAyMDEsIDExOSwgMTQsIDcsIDIwMSwgMTE4LCAKKyAgICAxNCwgNywgMjAxLCAxMTcsIDE0LCA3LCAyMDEsIDExNiwgMTQsIDcsIDIwMSwgMTE1LCAxNCwgNywgMjAwLCAxOTMsIDE0LCAKKyAgICA3LCAyMDAsIDE5MiwgMTQsIDcsIDIwMCwgMTkxLCAxNCwgNywgMjAwLCAxOTAsIDE0LCA3LCAyMDAsIDE4OSwgMTQsIDcsIAorICAgIDIwMCwgMTg4LCAxNCwgNywgMjAwLCAxODcsIDE0LCA3LCAyMDAsIDE4NiwgMTQsIDcsIDIwMCwgMTg1LCAxNCwgNywgMjAwLCAKKyAgICAxODQsIDE0LCA3LCAyMDAsIDE4MywgMTQsIDcsIDIwMCwgMTgyLCAxNCwgNywgMjAwLCAxMjEsIDE0LCA3LCAyMDAsIDEyMCwgCisgICAgMTQsIDcsIDIwMCwgMTE5LCAxNCwgNywgMjAwLCAxMTgsIDE0LCA3LCAyMDAsIDExNywgMTQsIDcsIDIwMCwgMTE2LCAxNCwgCisgICAgNywgMjAwLCAxMTUsIDE0LCA3LCAyMDAsIDExNCwgMTQsIDcsIDIwMCwgMTEzLCAxNCwgNywgMTk5LCAxNTYsIDE0LCA3LCAKKyAgICAxOTksIDE1NSwgMTQsIDcsIDE5OSwgMTU0LCAxNCwgNywgMTk5LCAxNTMsIDE0LCA3LCAxOTksIDE1MiwgMTQsIDcsIDE5OSwgCisgICAgMTUxLCAxNCwgNywgMTk5LCAxNTAsIDE0LCA3LCAxOTksIDE0OSwgMTQsIDcsIDE5OSwgMTQ4LCAxNCwgNywgMTk5LCAxNDcsIAorICAgIDE0LCA3LCAxOTksIDE0NiwgMTQsIDcsIDE5OSwgMTQ1LCAxNCwgNywgMTk5LCAxNDQsIDE0LCA3LCAxOTksIDE0MywgMTQsIAorICAgIDcsIDE5OSwgMTQyLCAxNCwgNywgMTk5LCAxNDEsIDE0LCA3LCAxOTksIDE0MCwgMTQsIDcsIDE5OSwgMTM5LCAxNCwgNywgCisgICAgMTk5LCAxMzgsIDE0LCA3LCAxOTksIDEzNywgMTQsIDcsIDE5OSwgMTM2LCAxNCwgNywgMTk5LCAxMzUsIDE0LCA3LCAxOTksIAorICAgIDEzNCwgMTQsIDcsIDE5OSwgMTMzLCAxNCwgNywgMTk5LCAxMzIsIDE0LCA3LCAxOTksIDEzMSwgMTQsIDcsIDE5OSwgMTMwLCAKKyAgICAxNCwgNywgMTk5LCAxMjksIDE0LCA3LCAxOTksIDEyOCwgMTQsIDcsIDE5OSwgMTI3LCAxNCwgNywgMTk5LCAxMjYsIDE0LCAKKyAgICA3LCAxOTksIDEyNSwgMTQsIDcsIDE5OSwgMTI0LCAxNCwgNywgMTk5LCAxMjMsIDE0LCA3LCAxOTksIDEyMiwgMTQsIDcsIAorICAgIDE5OSwgMTIxLCAxNCwgNywgMTk5LCAxMjAsIDE0LCA3LCAxOTksIDExOSwgMTQsIDcsIDE5OSwgMTE4LCAxNCwgNywgMTk5LCAKKyAgICAxMTcsIDE0LCA3LCAxOTksIDExNiwgMTQsIDcsIDI1MiwgMTM3LCAxNCwgNywgMjUyLCAxMzYsIDE0LCA3LCAyNTIsIDEzNSwgCisgICAgMTQsIDcsIDI1MiwgMTM0LCAxNCwgNywgMjUyLCAxMzMsIDE0LCA3LCAyNTIsIDEzMiwgMTQsIDcsIDI1MiwgMTMxLCAxNCwgCisgICAgNywgMjUyLCAxMzAsIDE0LCA3LCAyNTIsIDEyOSwgMTQsIDcsIDI1MiwgMTI4LCAxNCwgNywgMjUyLCAxMjcsIDE0LCA3LCAKKyAgICAyNTIsIDEyNiwgMTQsIDcsIDI1MiwgMTI1LCAxNCwgNywgMjUyLCAxMjQsIDE0LCA3LCAyNTIsIDEyMywgMTQsIDcsIDI1MiwgCisgICAgMTIyLCAxNCwgNywgMjUyLCAxMjEsIDE0LCA3LCAyNTIsIDEyMCwgMTQsIDcsIDI1MiwgMTE5LCAxNCwgNywgMjUyLCAxMTgsIAorICAgIDE0LCA3LCAyNTIsIDExNywgMTQsIDcsIDI1MiwgMTE2LCAxNCwgNywgMjUyLCAxMTUsIDE0LCA3LCAyNTIsIDExNCwgMTQsIAorICAgIDcsIDI1MiwgMTEzLCAxNCwgNywgMjUyLCAxMTIsIDE0LCA3LCAyNTIsIDExMSwgMTQsIDcsIDI1MiwgMTEwLCAxNCwgNywgCisgICAgMjUyLCAxMDksIDE0LCA3LCAyNTIsIDEwOCwgMTQsIDcsIDI1MiwgMTA3LCAxNCwgNywgMjUyLCAxMDYsIDE0LCA3LCAyNTIsIAorICAgIDEwNSwgMTQsIDcsIDI1MiwgMTA0LCAyOCwgNywgMjU1LCAxMzEsIDI4LCA3LCAyNTUsIDEzMCwgMjgsIDcsIDI1NSwgMTI5LCAKKyAgICAyOCwgNywgMjU1LCAxMjgsIDI4LCA3LCAyNTUsIDEyNywgMjgsIDcsIDI1NSwgMTI1LCAyOCwgNywgMjU1LCAxMjIsIDI4LCAKKyAgICA3LCAyNTUsIDEyMSwgMjgsIDcsIDI1NSwgMTIwLCAyOCwgNywgMjU1LCAxMTksIDI4LCA3LCAyNTUsIDExOCwgMjgsIDcsIAorICAgIDI1NSwgMTE3LCAyOCwgNywgMjU1LCAxMTYsIDI4LCA3LCAyNTUsIDExNSwgMjgsIDcsIDI1NSwgMTE0LCAyOCwgNywgMjU1LCAKKyAgICAxMTIsIDI4LCA3LCAyNTUsIDExMSwgMjgsIDcsIDI1NSwgMTEwLCAyOCwgNywgMjU1LCAxMDgsIDI4LCA3LCAyNTUsIDEwNywgCisgICAgMjgsIDcsIDI1NSwgMTA2LCAyOCwgNywgMjU1LCAxMDUsIDI4LCA3LCAyNTUsIDEwNCwgMjgsIDcsIDI1NSwgMTAzLCAyOCwgCisgICAgNywgMjU1LCAxMDIsIDI4LCA3LCAyNTUsIDEwMSwgMjgsIDcsIDI1NSwgMTAwLCAyOCwgNywgMjU1LCA5OSwgMjgsIDcsIAorICAgIDI1NSwgOTgsIDI4LCA3LCAyNTUsIDk3LCAyOCwgNywgMjU1LCA5NSwgMjgsIDcsIDI1NSwgOTQsIDI4LCA3LCAyNTUsIDkzLCAKKyAgICAyOCwgNywgMjU1LCA5MiwgMjgsIDcsIDI1NSwgOTAsIDI4LCA3LCAyNTUsIDg5LCAyOCwgNywgMjU1LCA4OCwgMjgsIDcsIAorICAgIDI1NSwgODcsIDI4LCA3LCAyNTUsIDg2LCAyOCwgNywgMjU1LCA4NSwgMjgsIDcsIDI1NSwgODQsIDI4LCA3LCAyNTUsIDgzLCAKKyAgICAyOCwgNywgMjU1LCA4MiwgMjgsIDcsIDI1NSwgODAsIDI4LCA3LCAyNTUsIDc5LCAyOCwgNywgMjU1LCA3OCwgMjgsIDcsIAorICAgIDI1NSwgNzYsIDI4LCA3LCAyNTUsIDc0LCAyOCwgNywgMjU1LCA3MywgMjgsIDcsIDI1NSwgNzIsIDI4LCA3LCAyNTUsIDcxLCAKKyAgICAyOCwgNywgMjU1LCA3MCwgMjgsIDcsIDI1NSwgNjksIDI4LCA3LCAyNTUsIDY4LCAyOCwgNywgMjU1LCA2NywgMjgsIDcsIAorICAgIDI1NSwgNjYsIDI4LCA3LCAyNTUsIDY1LCAyOCwgNywgMjU1LCA2NCwgMjgsIDcsIDI1NSwgNjMsIDI4LCA3LCAyNTUsIDYyLCAKKyAgICAyOCwgNywgMjU1LCA2MSwgMjgsIDcsIDI1NSwgNjAsIDI4LCA3LCAyNTUsIDU5LCAyOCwgNywgMjU1LCA1OCwgMjgsIDcsIAorICAgIDI1NSwgNTcsIDI4LCA3LCAyNTUsIDU2LCAyOCwgNywgMjU1LCA1NSwgMjgsIDcsIDI1NSwgNTQsIDI4LCA3LCAyNTUsIDUzLCAKKyAgICAyOCwgNywgMjU1LCA1MiwgMjgsIDcsIDI1NSwgNTEsIDI4LCA3LCAyNTUsIDUwLCAyOCwgNywgMjU1LCA0OSwgMjgsIDcsIAorICAgIDI1NSwgNDgsIDI4LCA3LCAyNTUsIDQ3LCAyOCwgNywgMjU1LCA0NiwgMjgsIDcsIDI1NSwgNDUsIDI4LCA3LCAyNTUsIDQ0LCAKKyAgICAyOCwgNywgMjU1LCA0MywgMjgsIDcsIDI1NSwgNDIsIDI4LCA3LCAyNTUsIDQxLCAyOCwgNywgMjU1LCA0MCwgMjgsIDcsIAorICAgIDI1NSwgMzksIDI4LCA3LCAyNTUsIDM4LCAyOCwgNywgMjU1LCAzNywgMjgsIDcsIDI1NSwgMzYsIDI4LCA3LCAyNTUsIDM1LCAKKyAgICAyOCwgNywgMjU1LCAzNCwgMjgsIDcsIDI1NSwgMzMsIDI4LCA3LCAyNTUsIDMyLCAyOCwgNywgMjU1LCAzMSwgMjgsIDcsIAorICAgIDI1NSwgMzAsIDI4LCA3LCAyNTUsIDI5LCAyOCwgNywgMjU1LCAyOCwgMjgsIDcsIDI1NSwgMjcsIDI4LCA3LCAyNTUsIDI2LCAKKyAgICAyOCwgNywgMjU1LCAyNSwgMjgsIDcsIDI1NSwgMjQsIDI4LCA3LCAyNTUsIDIzLCAyOCwgNywgMjU1LCAyMiwgMjgsIDcsIAorICAgIDI1NSwgMjEsIDI4LCA3LCAyNTUsIDIwLCAyOCwgNywgMjU1LCAxOSwgMjgsIDcsIDI1NSwgMTgsIDI4LCA3LCAyNTUsIDE3LCAKKyAgICAyOCwgNywgMjU1LCAxNiwgMjgsIDcsIDI1NSwgMTUsIDI4LCA3LCAyNTUsIDE0LCAyOCwgNywgMjU1LCAxMywgMjgsIDcsIAorICAgIDI1NSwgMTIsIDI4LCA3LCAyNTUsIDExLCAyOCwgNywgMjU1LCAxMCwgMjgsIDcsIDI1NSwgOCwgMjgsIDcsIDI1NSwgNywgCisgICAgMjgsIDcsIDI1NSwgNiwgMjgsIDcsIDI1NSwgNSwgMjgsIDcsIDI1NSwgNCwgMjgsIDcsIDI1NSwgMywgMjgsIDcsIDI1NSwgCisgICAgMiwgMjgsIDcsIDI1NSwgMSwgMjgsIDcsIDI1NSwgMCwgMjgsIDcsIDI1NCwgMjU1LCAyOCwgNywgMjU0LCAyNTQsIDI4LCA3LCAKKyAgICAyNTQsIDI1MywgMjgsIDcsIDI1NCwgMjUyLCAyOCwgNywgMjU0LCAyNTEsIDI4LCA3LCAyNTQsIDI1MCwgMjgsIDcsIDI1NCwgCisgICAgMjQ5LCAyOCwgNywgMjU0LCAyNDgsIDI4LCA3LCAyNTQsIDI0NywgMjgsIDcsIDI1NCwgMjQ2LCAyOCwgNywgMjU0LCAyNDUsIAorICAgIDI4LCA3LCAyNTQsIDI0NCwgMjgsIDcsIDI1NCwgMjQzLCAyOCwgNywgMjU0LCAyNDIsIDI4LCA3LCAyNTQsIDI0MSwgMjgsIAorICAgIDcsIDI1NCwgMjQwLCAyOCwgNywgMjU0LCAyMzksIDI4LCA3LCAyNTQsIDIzOCwgMjgsIDcsIDI1NCwgMjM3LCAyOCwgNywgCisgICAgMjU0LCAyMzYsIDI4LCA3LCAyNTQsIDIzNSwgMjgsIDcsIDI1NCwgMjM0LCAyOCwgNywgMjU0LCAyMzMsIDI4LCA3LCAyNTQsIAorICAgIDIzMiwgMjgsIDcsIDI1NCwgMjMxLCAyOCwgNywgMjU0LCAyMjksIDI4LCA3LCAyNTQsIDIyOCwgMjgsIDcsIDI1NCwgMjI3LCAKKyAgICAyOCwgNywgMjU0LCAyMjYsIDI4LCA3LCAyNTQsIDIyNSwgMjgsIDcsIDI1NCwgMjI0LCAyOCwgNywgMjU0LCAyMjMsIDI4LCAKKyAgICA3LCAyNTQsIDIyMiwgMjgsIDcsIDI1NCwgMjIxLCAyOCwgNywgMjU0LCAyMjAsIDI4LCA3LCAyNTQsIDIxOSwgMjgsIDcsIAorICAgIDI1NCwgMjE4LCAyOCwgNywgMjU0LCAyMTYsIDI4LCA3LCAyNTQsIDIxNSwgMjgsIDcsIDI1NCwgMjE0LCAyOCwgNywgMjU0LCAKKyAgICAyMTMsIDI4LCA3LCAyNTQsIDIxMiwgMjgsIDcsIDI1NCwgMjExLCAyOCwgNywgMjU0LCAyMTAsIDI4LCA3LCAyNTQsIDIwOSwgCisgICAgMjgsIDcsIDI1NCwgMjA4LCAyOCwgNywgMjU0LCAyMDcsIDI4LCA3LCAyNTQsIDIwNiwgMjgsIDcsIDI1NCwgMjA1LCAyOCwgCisgICAgNywgMjU0LCAyMDQsIDI4LCA3LCAyNTQsIDIwMywgMjgsIDcsIDI1NCwgMjAyLCAyOCwgNywgMjU0LCAyMDEsIDI4LCA3LCAKKyAgICAyNTQsIDIwMCwgMjgsIDcsIDI1NCwgMTk5LCAyOCwgNywgMjU0LCAxOTgsIDI4LCA3LCAyNTQsIDE5NywgMjgsIDcsIDI1NCwgCisgICAgMTk2LCAyOCwgNywgMjU0LCAxOTUsIDI4LCA3LCAyNTQsIDE5NCwgMjgsIDcsIDI1NCwgMTkzLCAyOCwgNywgMjU0LCAxOTIsIAorICAgIDI4LCA3LCAyNTQsIDE5MSwgMjgsIDcsIDI1NCwgMTkwLCAyOCwgNywgMjU0LCAxODksIDI4LCA3LCAyNTQsIDE4OCwgMjgsIAorICAgIDcsIDI1NCwgMTg3LCAyOCwgNywgMjU0LCAxODYsIDI4LCA3LCAyNTQsIDE4NSwgMjgsIDcsIDI1NCwgMTg0LCAyOCwgNywgCisgICAgMjU0LCAxODMsIDI4LCA3LCAyNTQsIDE4MiwgMjgsIDcsIDI1NCwgMTgxLCAyOCwgNywgMjU0LCAxODAsIDI4LCA3LCAyNTQsIAorICAgIDE3OSwgMjgsIDcsIDI1NCwgMTc4LCAyOCwgNywgMjU0LCAxNzcsIDI4LCA3LCAyNTQsIDE3NiwgMjgsIDcsIDI1NCwgMTc1LCAKKyAgICAyOCwgNywgMjU0LCAxNzQsIDI4LCA3LCAyNTQsIDE3MywgMjgsIDcsIDI1NCwgMTcyLCAyOCwgNywgMjU0LCAxNzEsIDI4LCAKKyAgICA3LCAyNTQsIDE3MCwgMjgsIDcsIDI1NCwgMTY5LCAyOCwgNywgMjU0LCAxNjgsIDI4LCA3LCAyNTQsIDE2NywgMjgsIDcsIAorICAgIDI1NCwgMTY2LCAyOCwgNywgMjU0LCAxNjUsIDI4LCA3LCAyNTQsIDE2NCwgMjgsIDcsIDI1NCwgMTYzLCAyOCwgNywgMjU0LCAKKyAgICAxNjIsIDI4LCA3LCAyNTQsIDE2MSwgMjgsIDcsIDI1NCwgMTYwLCAyOCwgNywgMjU0LCAxNTksIDI4LCA3LCAyNTQsIDE1OCwgCisgICAgMjgsIDcsIDI1NCwgMTU3LCAyOCwgNywgMjU0LCAxNTYsIDI4LCA3LCAyNTQsIDE1NSwgMjgsIDcsIDI1NCwgMTU0LCAyOCwgCisgICAgNywgMjU0LCAxNTMsIDI4LCA3LCAyNTQsIDE1MiwgMjgsIDcsIDI1NCwgMTUxLCAyOCwgNywgMjU0LCAxNTAsIDI4LCA3LCAKKyAgICAyNTQsIDE0OSwgMjgsIDcsIDI1NCwgMTQ4LCAyOCwgNywgMjU0LCAxNDYsIDI4LCA3LCAyNTQsIDE0NSwgMjgsIDcsIDI1NCwgCisgICAgMTQ0LCAyOCwgNywgMjU0LCAxNDMsIDI4LCA3LCAyNTQsIDE0MiwgMjgsIDcsIDI1NCwgMTQxLCAyOCwgNywgMjU0LCAxNDAsIAorICAgIDI4LCA3LCAyNTQsIDEzOSwgMjgsIDcsIDI1NCwgMTM4LCAyOCwgNywgMjU0LCAxMzcsIDI4LCA3LCAyNTQsIDEzNiwgMjgsIAorICAgIDcsIDI1NCwgMTM1LCAyOCwgNywgMjU0LCAxMzQsIDI4LCA3LCAyNTQsIDEzMywgMjgsIDcsIDI1NCwgMTMyLCAyOCwgNywgCisgICAgMjU0LCAxMzEsIDI4LCA3LCAyNTQsIDEzMCwgMjgsIDcsIDI1NCwgMTI5LCAyOCwgNywgMjU0LCAxMjgsIDI4LCA3LCAyNTQsIAorICAgIDEyNywgMjgsIDcsIDI1NCwgMTI2LCAyOCwgNywgMjU0LCAxMjUsIDI4LCA3LCAyNTQsIDEyNCwgMjgsIDcsIDI1NCwgMTIzLCAKKyAgICAyOCwgNywgMjU0LCAxMjIsIDI4LCA3LCAyNTQsIDEyMSwgMjgsIDcsIDI1NCwgMTIwLCAyOCwgNywgMjU0LCAxMTksIDI4LCAKKyAgICA3LCAyNTQsIDExOCwgMjgsIDcsIDI1NCwgMTE3LCAyOCwgNywgMjU0LCAxMTYsIDI4LCA3LCAyNTQsIDExNSwgMjgsIDcsIAorICAgIDI1NCwgMTE0LCAyOCwgNywgMjU0LCAxMTMsIDI4LCA3LCAyNTQsIDExMiwgMjgsIDcsIDI1NCwgMTExLCAyOCwgNywgMjU0LCAKKyAgICAxMTAsIDI4LCA3LCAyNTQsIDEwOSwgMjgsIDcsIDI1NCwgMTA4LCAyOCwgNywgMjU0LCAxMDcsIDI4LCA3LCAyNTQsIDEwNiwgCisgICAgMjgsIDcsIDI1NCwgMTA1LCAyOCwgNywgMjU0LCAxMDQsIDI4LCA3LCAyNTQsIDEwMywgMjgsIDcsIDI1NCwgMTAyLCAyOCwgCisgICAgNywgMjU0LCAxMDEsIDI4LCA3LCAyNTQsIDEwMCwgMjgsIDcsIDI1NCwgOTksIDI4LCA3LCAyNTQsIDk4LCAyOCwgNywgMjU0LCAKKyAgICA5NywgMjgsIDcsIDI1NCwgOTYsIDI4LCA3LCAyNTQsIDk1LCAyOCwgNywgMjU0LCA5NCwgMjgsIDcsIDI1NCwgOTMsIDI4LCAKKyAgICA3LCAyNTQsIDkyLCAyOCwgNywgMjU0LCA5MSwgMjgsIDcsIDI1NCwgOTAsIDI4LCA3LCAyNTQsIDg5LCAyOCwgNywgMjU0LCAKKyAgICA4OCwgMjgsIDcsIDI1NCwgODcsIDI4LCA3LCAyNTQsIDg2LCAyOCwgNywgMjU0LCA4NSwgMjgsIDcsIDI1NCwgODQsIDI4LCAKKyAgICA3LCAyNTQsIDgzLCAyOCwgNywgMjU0LCA4MiwgMjgsIDcsIDI1NCwgODEsIDI4LCA3LCAyNTQsIDgwLCAyOCwgNywgMjU0LCAKKyAgICA3OSwgMjgsIDcsIDI1NCwgNzgsIDI4LCA3LCAyNTQsIDc3LCAyOCwgNywgMjU0LCA3NiwgMjgsIDcsIDI1NCwgNzUsIDI4LCAKKyAgICA3LCAyNTQsIDc0LCAyOCwgNywgMjU0LCA3MywgMjgsIDcsIDI1NCwgNzIsIDI4LCA3LCAyNTQsIDcxLCAyOCwgNywgMjU0LCAKKyAgICA3MCwgMjgsIDcsIDI1NCwgNjksIDI4LCA3LCAyNTQsIDY4LCAyOCwgNywgMjU0LCA2NywgMjgsIDcsIDI1NCwgNjYsIDI4LCAKKyAgICA3LCAyNTQsIDY1LCAyOCwgNywgMjU0LCA2NCwgMjgsIDcsIDI1NCwgNjMsIDI4LCA3LCAyNTQsIDYyLCAyOCwgNywgMjU0LCAKKyAgICA2MSwgMjgsIDcsIDI1NCwgNjAsIDI4LCA3LCAyNTQsIDU5LCAyOCwgNywgMjU0LCA1OCwgMjgsIDcsIDI1NCwgNTcsIDI4LCAKKyAgICA3LCAyNTQsIDU2LCAyOCwgNywgMjU0LCA1NSwgMjgsIDcsIDI1NCwgNTQsIDI4LCA3LCAyNTQsIDUzLCAyOCwgNywgMjU0LCAKKyAgICA1MiwgMjgsIDcsIDI1NCwgNTEsIDI4LCA3LCAyNTQsIDUwLCAyOCwgNywgMjU0LCA0OSwgMjgsIDcsIDI1NCwgNDgsIDI4LCAKKyAgICA3LCAyNTQsIDQ3LCAyOCwgNywgMjU0LCA0NiwgMjgsIDcsIDI1NCwgNDUsIDI4LCA3LCAyNTQsIDQ0LCAyOCwgNywgMjU0LCAKKyAgICA0MywgMjgsIDcsIDI1NCwgNDIsIDI4LCA3LCAyNTQsIDQxLCAyOCwgNywgMjU0LCA0MCwgMjgsIDcsIDI1NCwgMzksIDI4LCAKKyAgICA3LCAyNTQsIDM4LCAyOCwgNywgMjU0LCAzNywgMjgsIDcsIDI1NCwgMzYsIDI4LCA3LCAyNTQsIDM0LCAyOCwgNywgMjU0LCAKKyAgICAzMywgMjgsIDcsIDI1NCwgMzIsIDI4LCA3LCAyNTQsIDMxLCAyOCwgNywgMjU0LCAzMCwgMjgsIDcsIDI1NCwgMjksIDI4LCAKKyAgICA3LCAyNTQsIDI4LCAyOCwgNywgMjU0LCAyNywgMjgsIDcsIDI1NCwgMjYsIDI4LCA3LCAyNTQsIDI1LCAyOCwgNywgMjU0LCAKKyAgICAyNCwgMjgsIDcsIDI1NCwgMjEsIDI4LCA3LCAyNTQsIDIwLCAyOCwgNywgMjU0LCAxOSwgMjgsIDcsIDI1NCwgMTgsIDI4LCAKKyAgICA3LCAyNTQsIDE0LCAyOCwgNywgMjU0LCAxMywgMjgsIDcsIDI1NCwgMTIsIDI4LCA3LCAyNTQsIDExLCAyOCwgNywgMjU0LCAKKyAgICAxMCwgMjgsIDcsIDI1NCwgOSwgMjgsIDcsIDI1NCwgOCwgMjgsIDcsIDI1NCwgNywgMjgsIDcsIDI1NCwgNiwgMjgsIDcsIAorICAgIDI1NCwgNSwgMjgsIDcsIDI1NCwgNCwgMjgsIDcsIDI1NCwgMywgMjgsIDcsIDI1NCwgMiwgMjgsIDcsIDI1NCwgMSwgMjgsIAorICAgIDcsIDI1NCwgMCwgMjgsIDcsIDI1MywgMjU1LCAyOCwgNywgMjUzLCAyNTQsIDI4LCA3LCAyNTMsIDI1MywgMjgsIDcsIDI1MywgCisgICAgMjUyLCAyOCwgNywgMjUzLCAyNTAsIDI4LCA3LCAyNTMsIDI0OSwgMjgsIDcsIDI1MywgMjQ4LCAyOCwgNywgMjUzLCAyNDcsIAorICAgIDI4LCA3LCAyNTMsIDI0NiwgMjgsIDcsIDI1MywgMjQ1LCAyOCwgNywgMjUzLCAyNDQsIDI4LCA3LCAyNTMsIDI0MywgMjgsIAorICAgIDcsIDI1MywgMjQyLCAyOCwgNywgMjUzLCAyNDEsIDI4LCA3LCAyNTMsIDI0MCwgMjgsIDcsIDI1MywgMjM5LCAyOCwgNywgCisgICAgMjUzLCAyMzgsIDI4LCA3LCAyNTMsIDIzNywgMjgsIDcsIDI1MywgMjM2LCAyOCwgNywgMjUzLCAyMzUsIDI4LCA3LCAyNTMsIAorICAgIDIzNCwgMjgsIDcsIDI1MywgMjMzLCAyOCwgNywgMjUzLCAyMzIsIDI4LCA3LCAyNTMsIDIzMSwgMjgsIDcsIDI1MywgMjMwLCAKKyAgICAyOCwgNywgMjUzLCAyMjksIDI4LCA3LCAyNTMsIDIyOCwgMjgsIDcsIDI1MywgMjI3LCAyOCwgNywgMjUzLCAyMjYsIDI4LCAKKyAgICA3LCAyNTMsIDIyNSwgMjgsIDcsIDI1MywgMjI0LCAyOCwgNywgMjUzLCAyMjMsIDI4LCA3LCAyNTMsIDIyMiwgMjgsIDcsIAorICAgIDI1MywgMjIxLCAyOCwgNywgMjUzLCAyMjAsIDI4LCA3LCAyNTMsIDIxOSwgMjgsIDcsIDI1MywgMjE4LCAyOCwgNywgMjUzLCAKKyAgICAyMTcsIDI4LCA3LCAyNTMsIDIxNiwgMjgsIDcsIDI1MywgMjE1LCAyOCwgNywgMjUzLCAyMTQsIDI4LCA3LCAyNTMsIDIxMywgCisgICAgMjgsIDcsIDI1MywgMjEyLCAyOCwgNywgMjUzLCAyMTEsIDI4LCA3LCAyNTMsIDIxMCwgMjgsIDcsIDI1MywgMjA5LCAyOCwgCisgICAgNywgMjUzLCAyMDgsIDI4LCA3LCAyNTMsIDIwNywgMjgsIDcsIDI1MywgMjA2LCAyOCwgNywgMjUzLCAyMDUsIDI4LCA3LCAKKyAgICAyNTMsIDIwNCwgMjgsIDcsIDI1MywgMjAzLCAyOCwgNywgMjUzLCAyMDIsIDI4LCA3LCAyNTMsIDIwMSwgMjgsIDcsIDI1MywgCisgICAgMjAwLCAyOCwgNywgMjUzLCAxOTksIDI4LCA3LCAyNTMsIDE5OCwgMjgsIDcsIDI1MywgMTk3LCAyOCwgNywgMjUzLCAxOTYsIAorICAgIDI4LCA3LCAyNTMsIDE5NSwgMjgsIDcsIDI1MywgMTk0LCAyOCwgNywgMjUzLCAxOTMsIDI4LCA3LCAyNTMsIDE5MiwgMjgsIAorICAgIDcsIDI1MywgMTkxLCAyOCwgNywgMjUzLCAxOTAsIDI4LCA3LCAyNTMsIDE4OSwgMjEzLCAyNTMsIDIxNywgMzQsIDIxMywgCisgICAgODgsIDI4LCA3LCAyNTMsIDE4OCwgMjgsIDcsIDI1MywgMTg3LCAyOCwgNywgMjUzLCAxODYsIDI4LCA3LCAyNTMsIDE4NSwgCisgICAgMjgsIDcsIDI1MywgMTg0LCAyOCwgNywgMjUzLCAxODMsIDI4LCA3LCAyNTMsIDE4MiwgMjgsIDcsIDI1MywgMTgxLCAyOCwgCisgICAgNywgMjUzLCAxODAsIDI4LCA3LCAyNTMsIDE3OSwgMjgsIDcsIDI1MywgMTc4LCAyOCwgNywgMjUzLCAxNzcsIDE5MiwgMjgsIAorICAgIDcsIDI1MywgMTc2LCAyOCwgNywgMjUzLCAxNzUsIDI4LCA3LCAyNTMsIDE3NCwgMjgsIDcsIDI1MywgMTczLCAyOCwgNywgCisgICAgMjUzLCAxNzIsIDI4LCA3LCAyNTMsIDE3MSwgMjgsIDcsIDI1MywgMTcwLCAyOCwgNywgMjUzLCAxNjgsIDI4LCA3LCAyNTMsIAorICAgIDE2NiwgMjgsIDcsIDI1MywgMTY0LCAyOCwgNywgMjUzLCAxNjIsIDI4LCA3LCAyNTMsIDE2MCwgMjgsIDcsIDI1MywgMTU4LCAKKyAgICAyOCwgNywgMjUzLCAxNTYsIDI4LCA3LCAyNTMsIDE1NCwgMjgsIDcsIDI1MywgMTUyLCAyOCwgNywgMjUzLCAxNTAsIDI0OCwgCisgICAgMjQ0LCAyMjQsIDk3LCA4MSwgMjgsIDcsIDI1MywgMTQ4LCAyMzgsIDE3MSwgMjI0LCA5NywgODEsIDI4LCA3LCAyNTMsIAorICAgIDE0NywgMjgsIDcsIDI1MywgMTQ1LCAyOCwgNywgMjUzLCAxNDMsIDI4LCA3LCAyNTMsIDE0MSwgMjgsIDcsIDI1MywgMTM5LCAKKyAgICAyOCwgNywgMjUzLCAxMzcsIDI4LCA3LCAyNTMsIDEzNSwgMjgsIDcsIDI1MywgMTMzLCAyOCwgNywgMjUzLCAxMzEsIDI4LCAKKyAgICA3LCAyNTMsIDEzMCwgMjgsIDcsIDI1MywgMTI5LCAyOCwgNywgMjUzLCAxMjgsIDI4LCA3LCAyNTMsIDEyNywgMjgsIDcsIAorICAgIDI1MywgMTI2LCAyOCwgNywgMjUzLCAxMjUsIDI4LCA3LCAyNTMsIDEyNCwgMjgsIDcsIDI1MywgMTIzLCAyOCwgNywgMjUzLCAKKyAgICAxMjIsIDI4LCA3LCAyNTMsIDEyMSwgMjgsIDcsIDI1MywgMTIwLCAyOCwgNywgMjUzLCAxMTksIDI4LCA3LCAyNTMsIDExOCwgCisgICAgMjgsIDcsIDI1MywgMTE3LCAyOCwgNywgMjUzLCAxMTYsIDI4LCA3LCAyNTMsIDExNSwgMjgsIDcsIDI1MywgMTE0LCAyOCwgCisgICAgNywgMjUzLCAxMTMsIDI4LCA3LCAyNTMsIDExMiwgMjgsIDcsIDI1MywgMTExLCAyOCwgNywgMjUzLCAxMTAsIDI4LCA3LCAKKyAgICAyNTMsIDEwOSwgMjgsIDcsIDI1MywgMTA4LCAyOCwgNywgMjUzLCAxMDcsIDI4LCA3LCAyNTMsIDEwNiwgMjgsIDcsIDI1MywgCisgICAgMTA1LCAyOCwgNywgMjUzLCAxMDQsIDI4LCA3LCAyNTMsIDEwMywgMjgsIDcsIDI1MywgMTAyLCAyOCwgNywgMjUzLCAxMDEsIAorICAgIDI4LCA3LCAyNTMsIDEwMCwgMjgsIDcsIDI1MywgOTksIDI4LCA3LCAyNTMsIDk4LCAyOCwgNywgMjUzLCA5NywgMjgsIDcsIAorICAgIDI1MywgOTYsIDI4LCA3LCAyNTMsIDk1LCAyOCwgNywgMjUzLCA5NCwgMjgsIDcsIDI1MywgOTMsIDI4LCA3LCAyNTMsIDkyLCAKKyAgICAyOCwgNywgMjUzLCA5MSwgMjgsIDcsIDI1MywgOTAsIDI4LCA3LCAyNTMsIDg5LCAyOCwgNywgMjUzLCA4OCwgMjgsIDcsIAorICAgIDI1MywgODcsIDI4LCA3LCAyNTMsIDg2LCAyOCwgNywgMjUzLCA4NSwgMjgsIDcsIDI1MywgODQsIDI4LCA3LCAyNTMsIDgzLCAKKyAgICAyOCwgNywgMjUzLCA4MiwgMjgsIDcsIDI1MywgODEsIDI4LCA3LCAyNTMsIDgwLCAyOCwgNywgMjUzLCA3OSwgMjgsIDcsIAorICAgIDI1MywgNzgsIDI4LCA3LCAyNTMsIDc3LCAyOCwgNywgMjUzLCA3NiwgMjgsIDcsIDI1MywgNzUsIDI4LCA3LCAyNTMsIDc0LCAKKyAgICAyOCwgNywgMjUzLCA3MywgMjgsIDcsIDI1MywgNzIsIDI4LCA3LCAyNTMsIDcxLCAyOCwgNywgMjUzLCA3MCwgMjgsIDcsIAorICAgIDI1MywgNjksIDI4LCA3LCAyNTMsIDY4LCAyOCwgNywgMjUzLCA2NywgMjgsIDcsIDI1MywgNjYsIDI4LCA3LCAyNTMsIDY1LCAKKyAgICAyOCwgNywgMjUzLCA2NCwgMjgsIDcsIDI1MywgNjMsIDI4LCA3LCAyNTMsIDYyLCAyOCwgNywgMjUzLCA2MSwgMjgsIDcsIAorICAgIDI1MywgNjAsIDI4LCA3LCAyNTMsIDU5LCAyOCwgNywgMjUzLCA1OCwgMjgsIDcsIDI1MywgNTcsIDI4LCA3LCAyNTMsIDU2LCAKKyAgICAyOCwgNywgMjUzLCA1NSwgMjgsIDcsIDI1MywgNTQsIDI4LCA3LCAyNTMsIDUzLCAyOCwgNywgMjUzLCA1MiwgMjgsIDcsIAorICAgIDI1MywgNTEsIDI4LCA3LCAyNTMsIDUwLCAyOCwgNywgMjUzLCA0OSwgMjgsIDcsIDI1MywgNDgsIDI4LCA3LCAyNTMsIDQ3LCAKKyAgICAyOCwgNywgMjUzLCA0NiwgMjgsIDcsIDI1MywgNDUsIDI4LCA3LCAyNTMsIDQ0LCAyOCwgNywgMjUzLCA0MywgMjgsIDcsIAorICAgIDI1MywgNDIsIDI4LCA3LCAyNTMsIDQxLCAyOCwgNywgMjUzLCA0MCwgMjgsIDcsIDI1MywgMzksIDI4LCA3LCAyNTMsIDM4LCAKKyAgICAyOCwgNywgMjUzLCAzNywgMjgsIDcsIDI1MywgMzYsIDI4LCA3LCAyNTMsIDM1LCAyOCwgNywgMjUzLCAzNCwgMjgsIDcsIAorICAgIDI1MywgMzMsIDI4LCA3LCAyNTMsIDMyLCAyOCwgNywgMjUzLCAzMSwgMjgsIDcsIDI1MywgMzAsIDI4LCA3LCAyNTMsIDI5LCAKKyAgICAyOCwgNywgMjUzLCAyOCwgMjgsIDcsIDI1MywgMjcsIDI4LCA3LCAyNTMsIDI2LCAyOCwgNywgMjUzLCAyNSwgMjgsIDcsIAorICAgIDI1MywgMjQsIDI4LCA3LCAyNTMsIDIzLCAyOCwgNywgMjUzLCAyMiwgMjgsIDcsIDI1MywgMjEsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE5LCAxODYsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIzNiwgMjMsIDIzNywgNSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTUsIDgzLCAyMjEsIDI1NCwgMjE1LCAxNTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjIxLCAyNTQsIDIxNSwgCisgICAgMTUzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMTU4LCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDIxNiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDUsIDIxMiwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCA4LCAyMjEsIDI1MywgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTAsIDIwLCAyMTYsIDIxMSwgMjE5LCA4MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMTYsIAorICAgIDIxMSwgMjE5LCA4MywgMjE1LCAxNTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjE2LCAyMTEsIDIxOSwgODMsIDIxNSwgCisgICAgMTUzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE0LCAyNSwgMSwgMjE1LCAyMzUsIDIwNCwgMjE2LCAyMjIsIDIxNSwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTksIDI0NywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDE2OSwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDIzNywgMjUsIDEsIDIxNSwgMjM1LCAyMTAsIDEzOCwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMTgsIDE0MCwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDIyNiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDUwLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwNywgMTkzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMTg1LCAyNSwgMSwgMjE1LCAyMzUsIDIyNSwgCisgICAgNzMsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCAyMzgsIDIyNSwgMjM3LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTUwLCAyMjIsIAorICAgIDUsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTgsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAxMDEsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjM1LCAxODAsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAxNjYsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCAxMDcsIDIxOSwgMjIwLCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIxNywgMjQ1LCAyMjIsIDgsIDI1LCAxLCAyMTUsIDIzNSwgMTA4LCAxOTksIDE4NiwgMjIwLCAKKyAgICAxNTEsIDI1LCAxLCAyMTUsIDIzNSwgMjM1LCAxODEsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNTAsIDIxOCwgMTUxLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwOSwgMTA5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgMjQ2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMTEsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCA4MywgMjUsIDEsIDIxNSwgMjM1LCAyMjcsIDg1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNiwgMjExLCAyMjUsIDI5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgNzYsIDIyNSwgMjksIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE2LCAwLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjEyLCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMTI0LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxNCwgMjA1LCAyNSwgMSwgMjE1LCAyMzUsIDIwNCwgMjEzLCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgMzgsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA5LCAxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMDYsIDEzMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDIwOSwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDIzMywgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDcyLCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIyNSwgMjUwLCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgODQsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyMTIsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjI0LCA5MCwgMjUsIDEsIDIxNSwgMjM1LCAyMzcsIDc0LCAyNSwgMSwgMjE1LCAyMzUsIDIxMiwgCisgICAgMjQxLCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMzksIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCA3LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIyMiwgMTY1LCAyMTUsIDE5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTAsIDEzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTQ5LCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjUyLCAyMTgsIDE2MCwgMTk5LCAxOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAzMCwgCisgICAgMjIxLCAxMDMsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAyMDYsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCA1MiwgMjUsIDEsIAorICAgIDIxNSwgMjM1LCAyMDMsIDIzNSwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDIyMywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIwOCwgCisgICAgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDk0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMTA1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxOCwgNDQsIDI1LCAxLCAyMTUsIDIzNSwgMjA2LCAxMzUsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCA0LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxNiwgMjA3LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTY0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE2LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxOCwgNDEsIDI1LCAxLCAyMTUsIDIzNSwgMjI3LCA0OCwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIAorICAgIDE2NywgMjUsIDEsIDIxNSwgMjM1LCAyMDMsIDU0LCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgNDIsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjIwLCAyNCwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDEyNiwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDEwNCwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTgsIDE2MiwgMjUsIDEsIDIxNSwgMjM0LCAyMDQsIDIxNiwgMjIyLCAyMTMsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjA5LCAxNzEsIDI1LCAxLCAyMTUsIDIzNCwgMjEwLCAxNDIsIDIwNCwgMjE1LCAyNSwgMSwgMjE1LCAyMzQsIDIyNCwgOTIsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTExLCAyMjIsIDIxNywgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDE1NSwgCisgICAgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTA2LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIyNywgNzEsIDI1LCAxLCAyMTUsIDIzNCwgMjE2LCA1NywgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDk1LCAyMjUsIDI5LCAyNSwgCisgICAgMSwgMjE1LCAyMzQsIDIyNSwgOTIsIDIxOCwgMTYwLCAyMTgsIDU1LCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgMTQzLCAyMTAsIAorICAgIDM5LCAyNSwgMSwgMjE1LCAyMzQsIDIyMCwgNDMsIDIxOSwgOTcsIDI1LCAxLCAyMTUsIDIzNCwgMjM1LCAxNzgsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE1LCAxNDIsIDI1LCAxLCAyMTUsIDIzNCwgMjA0LCAyMTYsIDIxOCwgMTU4LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIxMCwgNDQsIDIxOSwgOTIsIDI1LCAxLCAyMTUsIDIzNCwgMjEwLCA0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjEsIDI1NCwgCisgICAgMjA2LCAxMzQsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCA5MywgMjIyLCAxMDcsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCA0MiwgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAyMjIsIDI1LCAxLCAyMTUsIDIzNCwgMjM1LCAxNzksIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjI2LCAyMTgsIDI1LCAxLCAyMTUsIDIzNCwgMjI1LCAxNzAsIDI1LCAxLCAyMTUsIDIzNCwgMjE2LCAxMDQsIAorICAgIDI1LCAxLCAyMTUsIDIzNCwgMjAyLCAyNDEsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAxODcsIDIyMCwgMjM1LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxOSwgMjIyLCAyMjIsIDg5LCAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgMjE0LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIxMiwgNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjA3LCAyOCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDEwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIxOSwgMjA2LCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMjA3LCAyMjUsIDcwLCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgCisgICAgMCwgMjUsIDEsIDIxNSwgMjM0LCAyMDcsIDI0NCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDk3LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIyMSwgODgsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCA1OCwgMjUsIDEsIDIxNSwgMjM0LCAyMTQsIDIwOSwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjIsIDksIDIxOSwgMjI0LCAyNSwgMSwgMjE1LCAyMzQsIDIzNywgMTE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgCisgICAgODQsIDI1LCAxLCAyMTUsIDIzNCwgMjM3LCAxNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAyMzAsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjIyLCAyMzUsIDIxOSwgODYsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAyMzUsIDIxOSwgNjIsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjI0LCAyMzcsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAyMzAsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCAxNjksIDI1LCAKKyAgICAxLCAyMTUsIDIzNCwgMTc4LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMTQwLCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMTc1LCAKKyAgICAyNSwgMSwgMTczLCAyMTksIDE4NiwgMjIyLCAyMTUsIDI1LCAxLCAxNzMsIDIxOCwgNywgMjUsIDEsIDE3MywgMTk5LCAxOTQsIAorICAgIDI1LCAxLCAxNzMsIDIwMSwgOTgsIDI1LCAxLCAxNzMsIDIxOSwgMjIzLCAyNSwgMSwgMTczLCAyMjAsIDY0LCAyNSwgMSwgCisgICAgMTczLCAyMTksIDE5MywgMjUsIDEsIDE3MywgMjM1LCAxODgsIDI1LCAxLCAxNzMsIDIyMiwgMTAxLCAyNSwgMSwgMTczLCAKKyAgICAyMzYsIDMwLCAyNSwgMSwgMTczLCAyMTgsIDMyLCAyMjEsIDE0NSwgMjIyLCAxMiwgMjUsIDEsIDE3MywgMjE4LCAxMzgsIAorICAgIDIyMiwgOTIsIDI1LCAxLCAxNzMsIDIyMiwgOTgsIDI1LCAxLCAxNzMsIDIxNSwgMTQ4LCAyNSwgMSwgMTczLCAyMjAsIDQ5LCAKKyAgICAyNSwgMSwgMTczLCAyMjIsIDEwOSwgMjQ3LCAxODYsIDI1LCAxLCAxNzMsIDIyNiwgMjIwLCAyNSwgMSwgMTczLCAyMzUsIAorICAgIDE4OSwgMjUsIDEsIDE3MywgMjI2LCAyMjcsIDI1LCAxLCAxNzMsIDE5OSwgMjEyLCAyMjEsIDEwLCAyNSwgMSwgMTczLCAKKyAgICAyMTgsIDEsIDI1LCAxLCAxNzMsIDIyMiwgODYsIDI1LCAxLCAxNzMsIDIxOCwgMTY4LCAyNSwgMSwgMTczLCAyMjIsIDkyLCAKKyAgICAyNSwgMSwgMTczLCAyMDAsIDE4LCAyNSwgMSwgMTczLCAyMjYsIDQ3LCAyNSwgMSwgMTczLCAyMjcsIDEwNSwgMjUsIDEsIAorICAgIDE3MywgMjEwLCAxMzcsIDI1LCAxLCAxNzMsIDIyMCwgNTgsIDI1LCAxLCAxNzMsIDIwNywgMjYsIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgNjYsIDI1LCAxLCAxNzMsIDIwNSwgMjEyLCAxOTksIDE5NywgMjUsIDEsIDE3MywgMjA4LCAxOSwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICAyMTMsIDIxOCwgNTUsIDI1LCAxLCAxNzMsIDIwMiwgMjQwLCAyNSwgMSwgMTczLCAyMjAsIDEyOSwgMjUsIDEsIDE3MywgCisgICAgMjIyLCAyMzUsIDIyNiwgMjI5LCAyNSwgMSwgMTczLCAyMTgsIDE1MSwgMjUsIDEsIDE3MywgMjE5LCAyMDgsIDI1LCAxLCAKKyAgICAxNzMsIDIyNSwgNzQsIDI1LCAxLCAxNzMsIDIyMiwgOTQsIDI1LCAxLCAxNzMsIDIyMSwgMjQ1LCAyNSwgMSwgMTczLCAyMTgsIAorICAgIDE0NSwgMjUsIDEsIDE3MywgMjA2LCAxMzAsIDI1LCAxLCAxNzMsIDIxOSwgMjEwLCAyNSwgMSwgMTczLCAyMzYsIDE4NywgCisgICAgMjUsIDEsIDE3MywgMjIwLCA2MywgMjUsIDEsIDE3MywgMjE4LCAxNzAsIDI1LCAxLCAxNzMsIDIxOCwgMTY2LCAyNSwgMSwgCisgICAgMTczLCAyNDgsIDEyLCAyNSwgMSwgMTczLCAyMDIsIDI0MiwgMjUsIDEsIDE3MywgMjIyLCA5OSwgMjUsIDEsIDE3MywgMjEyLCAKKyAgICAxNzUsIDI1LCAxLCAxNzMsIDIxOSwgOTYsIDI1LCAxLCAxNzMsIDIyNSwgOTEsIDI1LCAxLCAxNzMsIDIwNSwgMjA5LCAyNSwgCisgICAgMSwgMTczLCAyMTgsIDE1MiwgMjE5LCAxNzUsIDI1LCAxLCAxNzMsIDIxOSwgODgsIDI1LCAxLCAxNzMsIDIyNiwgMjMzLCAKKyAgICAyNSwgMSwgMTczLCAyMTksIDIxNSwgMjUsIDEsIDE3MywgMjIyLCAyMDgsIDI1LCAxLCAxNzMsIDIyMiwgODcsIDI1LCAxLCAKKyAgICAxNzMsIDIyNCwgNDIsIDI1LCAxLCAxNzMsIDIyNSwgMjM3LCAyNSwgMSwgMTczLCAyMTksIDk0LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDE3NSwgMjUsIDEsIDE3MywgMjAwLCAyMDQsIDI1LCAxLCAxNzMsIDIxOSwgMjExLCAyNSwgMSwgMTczLCAyMTgsIDE1NSwgCisgICAgMjUsIDEsIDE3MywgMjE4LCAxNDcsIDI1LCAxLCAxNzMsIDIyNSwgMjUyLCAyMTksIDUyLCAyNSwgMSwgMTczLCAyMTgsIAorICAgIDE1MywgMjUsIDEsIDE3MywgMjIwLCA3MSwgMjUsIDEsIDE3MywgMjIyLCAyMzUsIDIxOCwgMTU4LCAyNSwgMSwgMTczLCAKKyAgICAyMDAsIDEwOSwgMjUsIDEsIDE3MywgMjIwLCA3MCwgMjUsIDEsIDE3MywgMjA5LCAyMTUsIDI1LCAxLCAxNzMsIDIxMCwgCisgICAgMTQwLCAyNSwgMSwgMTczLCAyMjIsIDk1LCAyNSwgMSwgMTczLCAyMjIsIDIxNSwgMjUsIDEsIDE3MywgMjIyLCAxMDUsIDI1LCAKKyAgICAxLCAxNzMsIDIyNiwgMjIxLCAyNSwgMSwgMTczLCAyMjIsIDk2LCAyNSwgMSwgMTczLCAyMjYsIDIyNSwgMjUsIDEsIDE3MywgCisgICAgMjIyLCAxMDksIDIxNSwgMTk5LCAyNSwgMSwgMTczLCAxOTksIDE3NywgMjUsIDEsIDE3MywgMjE5LCA4NCwgMjUsIDEsIAorICAgIDE3MywgMjIxLCAyMDAsIDI1LCAxLCAxNzMsIDIyMSwgMzksIDI1LCAxLCAxNzMsIDIxMCwgMTYsIDI1LCAxLCAxNzMsIDIyNiwgCisgICAgMjQ0LCAyMjUsIDUyLCAyNSwgMSwgMTczLCAyMjYsIDI0NCwgMjM3LCAxNTMsIDI1LCAxLCAxNzMsIDIxOSwgMjQ1LCAyNSwgCisgICAgMSwgMTczLCAyMjAsIDEyNiwgMjUsIDEsIDE3MywgMjI0LCAxNTgsIDI1LCAxLCAxNzMsIDIxNSwgMTYwLCAyNSwgMSwgMTczLCAKKyAgICAyMTYsIDQ3LCAyNSwgMSwgMTczLCAyMDYsIDE0NiwgMjUsIDEsIDEzNywgMjIyLCA4NSwgMjUsIDEsIDEzNywgMjAxLCA5NiwgCisgICAgMjUsIDEsIDEzNywgMjE5LCA4MiwgMjUsIDEsIDEzNywgMjIxLCAyNTMsIDI1LCAxLCAxMzcsIDIxOSwgODAsIDI1LCAxLCAKKyAgICAxMzcsIDIyNCwgMjAzLCAyNSwgMSwgMTM3LCAyMTksIDg1LCAyNSwgMSwgMTM3LCAyMTgsIDE2NSwgMjUsIDEsIDEzNywgCisgICAgMjE5LCAyMjksIDI1LCAxLCAxMzcsIDIxOCwgNTUsIDI1LCAxLCAxMzcsIDIwMCwgMjE1LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDE4MywgMjUsIDEsIDEzNywgMjEwLCA2MywgMjUsIDEsIDEzNywgMjE5LCAxOTQsIDI1LCAxLCAxMzcsIDIyNiwgMjI4LCAyNSwgCisgICAgMSwgMTM3LCAyMDYsIDEzMiwgMjUsIDEsIDEzNywgMjEwLCA0MiwgMjUsIDEsIDEzNywgMjE5LCA5MywgMjUsIDEsIDEzNywgCisgICAgMjA3LCAyNDQsIDI1LCAxLCAxMzcsIDIyNiwgMjMzLCAyNSwgMSwgMTM3LCAyMDAsIDk3LCAyNSwgMSwgMTM3LCAyMjUsIAorICAgIDI1MywgMjUsIDEsIDEzNywgMjEyLCAzLCAyNSwgMSwgMTM3LCAyMjIsIDIsIDI1LCAxLCAxMzcsIDIyMCwgNjIsIDI1LCAxLCAKKyAgICAxMzcsIDIyMiwgMTgzLCAyNSwgMSwgMTM3LCAyMjIsIDgsIDI1LCAxLCAxMzcsIDIxMCwgMTM5LCAyNSwgMSwgMTM3LCAyMDAsIAorICAgIDQxLCAyNSwgMSwgMTM3LCAyMTksIDg3LCAyNSwgMSwgMTM3LCAyMjYsIDIyNCwgMjIyLCA4OCwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAxOTAsIDI1LCAxLCAxMzcsIDIwNCwgMjE1LCAyNSwgMSwgMTM3LCAyMzUsIDE5OCwgMjUsIDEsIDEzNywgMjE5LCAxODAsIAorICAgIDI1LCAxLCAxMzcsIDIzNywgMTE4LCAyNSwgMSwgMTM3LCAyMjAsIDY2LCAyNSwgMSwgMTM3LCAyMjEsIDIzNywgMjUsIDEsIAorICAgIDEzNywgMjI0LCAyMzEsIDI1LCAxLCAxMzcsIDIyMCwgNDgsIDI1LCAxLCAxMzcsIDIyMSwgMTAyLCAyNSwgMSwgMTM3LCAKKyAgICAyMjEsIDI0MSwgMjUsIDEsIDEzNywgMjE0LCAxODksIDI1LCAxLCAxMzcsIDIyMSwgMjM5LCAyNSwgMSwgMTM3LCAyMjEsIAorICAgIDI1NSwgMjUsIDEsIDEzNywgMjI0LCAyNSwgMjUsIDEsIDEzNywgMjE4LCAxNTcsIDI1LCAxLCAxMzcsIDIyMiwgMTA4LCAyNSwgCisgICAgMSwgMTM3LCAyMjUsIDIyNywgMjUsIDEsIDEzNywgMjE4LCA0NCwgMjUsIDEsIDEzNywgMjA2LCAxMzUsIDI1LCAxLCAxMzcsIAorICAgIDIwOSwgNCwgMjUsIDEsIDEzNywgMTk5LCAxNzcsIDI1LCAxLCAxMzcsIDIyNiwgMjI1LCAyNSwgMSwgMTM3LCAyMTMsIDIzMywgCisgICAgMjUsIDEsIDEzNywgMjA2LCAxODksIDI1LCAxLCAxMzcsIDIxOSwgMTkxLCAyNSwgMSwgMTM3LCAyMjIsIDQsIDI1LCAxLCAKKyAgICAxMzcsIDIxOCwgMTU2LCAyNSwgMSwgMTM3LCAyMjYsIDIyMywgMjUsIDEsIDEzNywgMjE1LCAxNTQsIDI1LCAxLCAxMzcsIAorICAgIDIxNSwgMjUwLCAyNSwgMSwgMTM3LCAyMTgsIDE4LCAyNSwgMSwgMTM3LCAyMjQsIDIzNywgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAyMzAsIDI1LCAxLCAxMzcsIDIyMiwgMSwgMjUsIDEsIDEzNywgMjE5LCAyMDMsIDI1LCAxLCAxMzcsIDE5OSwgMTkxLCAyNSwgCisgICAgMSwgMTM3LCAyMTYsIDEzNSwgMjUsIDEsIDEzNywgMTk5LCAxOTAsIDI1LCAxLCAxMzcsIDIyMCwgNzEsIDI1LCAxLCAxMzcsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMTM3LCAyMDgsIDIxLCAyNSwgMSwgMTM3LCAyMjYsIDEsIDI1LCAxLCAxMzcsIDIxOSwgMjE5LCAKKyAgICAyNSwgMSwgMTM3LCAyMTksIDE4OCwgMjUsIDEsIDEzNywgMjA0LCAxOTYsIDI1LCAxLCAxMzcsIDIyMiwgMTIsIDI1LCAxLCAKKyAgICAxMzcsIDIyNSwgMjQ3LCAyNSwgMSwgMTM3LCAyMTgsIDE1NCwgMjUsIDEsIDEzNywgMjA2LCAxMzMsIDI1LCAxLCAxMzcsIAorICAgIDIyMiwgMjEwLCAyNSwgMSwgMTM3LCAyMTksIDIyOCwgMjUsIDEsIDEzNywgMjI0LCAyMzAsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMjA5LCAyNSwgMSwgMTM3LCAyMTgsIDE1OSwgMjUsIDEsIDEzNywgMjE5LCA2NiwgMjUsIDEsIDEzNywgMjM1LCAxODIsIDI1LCAKKyAgICAxLCAxMzcsIDIyNiwgMTUsIDI1LCAxLCAxMzcsIDIxMywgMTQwLCAyMTcsIDkyLCAyNSwgMSwgMTM3LCAyMDcsIDE1LCAyNSwgCisgICAgMSwgMTM3LCAyMDUsIDE1NCwgMjUsIDEsIDEzNywgMjE4LCA0MSwgMjUsIDEsIDEzNywgMjEzLCAzMywgMjUsIDEsIDEzNywgCisgICAgMjI1LCAzMSwgMjUsIDEsIDEzNywgMjIyLCA2MywgMjUsIDEsIDEzNywgMjIzLCAyNDMsIDI1LCAxLCAxMzcsIDIwNywgMTkzLCAKKyAgICAyNSwgMSwgMTM3LCAyMjEsIDQxLCAyNSwgMSwgMTM3LCAyMTAsIDI4LCAyNSwgMSwgMTM3LCAyMTAsIDM4LCAyNSwgMSwgCisgICAgMTM3LCAyMjUsIDE5OSwgMjUsIDEsIDEzNywgMjE4LCAxMzMsIDI1LCAxLCAxMzcsIDIwOSwgMjIwLCAyNSwgMSwgMTM3LCAKKyAgICAyMTgsIDE0OCwgMjUsIDEsIDEzNywgMjE2LCA2MSwgMjUsIDEsIDEzNywgMjE5LCAxNTAsIDI1LCAxLCAxMzcsIDIwOSwgCisgICAgMjUxLCAyNSwgMSwgMTM3LCAyMTQsIDIwNCwgMjUsIDEsIDEzNywgMjIwLCAyMzUsIDI1LCAxLCAxMzcsIDIyNCwgNzAsIDI1LCAKKyAgICAxLCAxMzcsIDIxMywgMTQwLCAyMjEsIDM0LCAyNSwgMSwgMTM3LCAyMDYsIDE1LCAyNSwgMSwgMTM3LCAyMTgsIDEzNSwgMjUsIAorICAgIDEsIDEzNywgMjIyLCAxMDksIDIxMCwgMTM1LCAyNSwgMSwgMTM3LCAyMTIsIDEsIDI1LCAxLCAxMzcsIDIzNywgMTk0LCAyNSwgCisgICAgMSwgOTYsIDIyMCwgNzAsIDI1LCAxLCA5NiwgMjA1LCAxNjAsIDI1LCAxLCA5NiwgMjIyLCA5OCwgMjUsIDEsIDk2LCAyMjUsIAorICAgIDc0LCAyNSwgMSwgOTYsIDIwMiwgMTgwLCAyNSwgMSwgOTYsIDIyNCwgNzYsIDI1LCAxLCA5NiwgMjE2LCAyMTAsIDI1LCAxLCAKKyAgICA5NiwgMjA5LCAxNSwgMjUsIDEsIDk2LCAyMTMsIDIwOCwgMjUsIDEsIDk2LCAyMTgsIDE2MSwgMjUsIDEsIDk2LCAyMjAsIAorICAgIDQxLCAyNSwgMSwgOTYsIDIxNCwgMjIxLCAyNSwgMSwgOTYsIDIwNiwgMjQ2LCAyNSwgMSwgOTYsIDIxOSwgMTk2LCAyNSwgMSwgCisgICAgOTYsIDIyNiwgNDMsIDI1LCAxLCA5NiwgMjAwLCAyMDcsIDI1LCAxLCA5NiwgMjExLCAxOTAsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAyMjAsIDI1LCAxLCA5NiwgMjE2LCAyMDcsIDI1LCAxLCA5NiwgMjA1LCAxNjEsIDI1LCAxLCA5NiwgMjI1LCAyNTEsIDI1LCAKKyAgICAxLCA5NiwgMjI0LCA5MSwgMjUsIDEsIDk2LCAyMTgsIDE2NCwgMjUsIDEsIDk2LCAyMTksIDE3MiwgMjUsIDEsIDk2LCAyMjIsIAorICAgIDIxNiwgMjUsIDEsIDk2LCAyMTksIDE4OSwgMjUsIDEsIDk2LCAyMTksIDE3MSwgMjUsIDEsIDk2LCAyMTgsIDE2MywgMjUsIAorICAgIDEsIDk2LCAyMTMsIDMwLCAyNSwgMSwgOTYsIDIxOSwgODQsIDI1LCAxLCA5NiwgMjE2LCA1OSwgMjUsIDEsIDk2LCAyMTIsIAorICAgIDYxLCAyNSwgMSwgOTYsIDIxOSwgMjA0LCAyNSwgMSwgOTYsIDIyMSwgMjQ3LCAyNSwgMSwgOTYsIDIzNSwgMTc2LCAyNSwgMSwgCisgICAgOTYsIDIxOSwgMTkyLCAyNSwgMSwgOTYsIDIxOSwgOTUsIDI1LCAxLCA5NiwgMjIyLCAxNjQsIDI1LCAxLCA5NiwgMjI0LCAKKyAgICA3MiwgMjUsIDEsIDk2LCAyMTksIDIyNSwgMjUsIDEsIDk2LCAyMjAsIDU0LCAyNSwgMSwgOTYsIDIwNywgMTQsIDIxOCwgCisgICAgMTQ2LCAyNSwgMSwgOTYsIDIxMCwgMTQxLCAyNSwgMSwgOTYsIDIxNCwgMjE0LCAyNSwgMSwgOTYsIDIyMCwgNzQsIDIwOSwgCisgICAgMjIsIDI1LCAxLCA5NiwgMjE5LCAyMTIsIDIxOCwgNTUsIDI1LCAxLCA5NiwgMjAwLCA1LCAyNSwgMSwgOTYsIDIzNSwgMTc3LCAKKyAgICAyNSwgMSwgOTYsIDIwNCwgMjE0LCAyNSwgMSwgOTYsIDIwMCwgMjEsIDI1LCAxLCA5NiwgMjE1LCAxMDYsIDI1LCAxLCA5NiwgCisgICAgMjA0LCAyMDIsIDI1LCAxLCA5NiwgMjI2LCAyMzEsIDI1LCAxLCA5NiwgMjA4LCAyMCwgMjUsIDEsIDk2LCAyMDYsIDEzNCwgCisgICAgMjUsIDEsIDk2LCAyMDIsIDI0MywgMjUsIDEsIDk2LCAyMDEsIDQ0LCAyNSwgMSwgOTYsIDIyNSwgMTczLCAyNSwgMSwgOTYsIAorICAgIDIxNCwgMjI0LCAyNSwgMSwgOTYsIDIwNywgMjcsIDI1LCAxLCA5NiwgMjM1LCAxOTcsIDI1LCAxLCA5NiwgMjE5LCAyMzUsIAorICAgIDI1LCAxLCA5NiwgMjEwLCA0MSwgMjUsIDEsIDk2LCAyMjEsIDI0MiwgMjUsIDEsIDk2LCAyMjIsIDEwMiwgMjUsIDEsIDk2LCAKKyAgICAyMTgsIDUsIDI1LCAxLCA5NiwgMjE5LCA0OCwgMjUsIDEsIDk2LCAyMzYsIDI2LCAyNSwgMSwgOTYsIDIwNCwgMjAzLCAyNSwgCisgICAgMSwgOTYsIDIyNiwgNSwgMjUsIDEsIDk2LCAyMDAsIDczLCAyNSwgMSwgOTYsIDIxOCwgNDIsIDI0NiwgMTI2LCAyNSwgMSwgCisgICAgOTYsIDE5OSwgMjUxLCAyNSwgMSwgOTYsIDIyMiwgMywgMjUsIDEsIDk2LCAyMjAsIDU5LCAyNSwgMSwgOTYsIDIxNSwgMTk1LCAKKyAgICAyNSwgMSwgOTYsIDE5OSwgMTk2LCAyNSwgMSwgOTYsIDIyNCwgMjMyLCAyNSwgMSwgOTYsIDIzNiwgMTg3LCAyNSwgMSwgOTYsIAorICAgIDIzNiwgMjUsIDI1LCAxLCA5NiwgMjE5LCAxODIsIDI1LCAxLCA5NiwgMjI2LCAyMzMsIDI1LCAxLCA5NiwgMjIyLCAyMTksIAorICAgIDI1LCAxLCA5NiwgMjE5LCAxOTUsIDI1LCAxLCA5NiwgMjM1LCAxODMsIDI1LCAxLCA5NiwgMjM3LCAxOTUsIDI1LCAxLCA5NiwgCisgICAgMjE4LCAxMzYsIDI1LCAxLCA5NiwgMjE1LCAyNTEsIDI1LCAxLCA5NiwgMjAwLCAxOSwgMjUsIDEsIDk2LCAyMTksIDIyMSwgCisgICAgMjUsIDEsIDk2LCAyMTgsIDQyLCAyNDgsIDIwNSwgMjUsIDEsIDk2LCAyMTcsIDI0MSwgMjUsIDEsIDk2LCAyMTUsIDc5LCAKKyAgICAyNSwgMSwgOTYsIDIyMSwgMjAwLCAyNSwgMSwgOTYsIDIzNiwgMTg1LCAyNSwgMSwgOTYsIDIyMCwgMTUxLCAyNSwgMSwgOTYsIAorICAgIDIyMSwgMzksIDI1LCAxLCA5NiwgMjM1LCAxODIsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDcwLCAyNSwgMSwgOTYsIDIyMCwgCisgICAgMjM2LCAyNSwgMSwgOTYsIDIxNCwgMjIwLCAyNSwgMSwgOTYsIDIxOSwgMTg0LCAyNSwgMSwgOTYsIDIyNSwgMjM3LCAyNSwgCisgICAgMSwgOTYsIDIxNSwgMTkyLCAyNSwgMSwgOTYsIDIxOCwgMTQ5LCAyNSwgMSwgOTYsIDIwMCwgMjAsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAyMDUsIDI1LCAxLCA5NiwgMjE2LCAyMTEsIDIxNiwgMzMsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDI0NywgMTY4LCAyNSwgMSwgCisgICAgOTYsIDIzNywgNiwgMjUsIDEsIDk2LCAyMTksIDg5LCAyNSwgMSwgOTYsIDYyLCAyNSwgMSwgOTYsIDIwNSwgMTU0LCAyNSwgCisgICAgMSwgOTYsIDc0LCAyNSwgMSwgOTYsIDcwLCAyNSwgMSwgOTYsIDIyNSwgNzIsIDI1LCAxLCA5NiwgMjE2LCAyMTEsIDIxNSwgCisgICAgMTE0LCAyNSwgMSwgOTYsIDIwNywgMzIsIDI1LCAxLCA5NiwgMjA2LCAyMzMsIDI1LCAxLCA5NiwgMjIwLCA3NCwgMjIwLCAKKyAgICAyMjMsIDIzMywgMTA5LCAyNSwgMSwgOTYsIDIxMCwgMTYsIDI1LCAxLCA5NiwgMjAwLCAxNiwgMjUsIDEsIDk2LCAyMTksIAorICAgIDE2NSwgMjUsIDEsIDk2LCAxOTksIDIwMSwgMjUsIDEsIDk2LCAxOTksIDIyOCwgMjA3LCAxNzMsIDI1LCAxLCA5NiwgMTk5LCAKKyAgICAyMjgsIDI0MywgMSwgMjUsIDEsIDk2LCAxOTksIDE4NSwgMjUsIDEsIDk2LCAxOTksIDE5MywgMjUsIDEsIDk2LCAyMjYsIAorICAgIDIxOSwgMjUsIDEsIDk2LCAyMTUsIDI0OSwgMjUsIDEsIDk2LCAyMTksIDkwLCAyMzgsIDEyNiwgMjUsIDEsIDk2LCAyMTQsIAorICAgIDIxNiwgMjUsIDEsIDk2LCAyMDAsIDIxMywgMjUsIDEsIDk2LCAyMzcsIDE0MCwgMjUsIDEsIDk2LCAyMDMsIDU0LCAyNSwgMSwgCisgICAgOTYsIDIyNCwgNDIsIDI1LCAxLCA5NiwgMjIxLCAyMTEsIDI1LCAxLCA5NiwgMjEzLCAxMDcsIDI1LCAxLCA5NiwgMjEzLCAKKyAgICAyMzQsIDI1LCAxLCA5NiwgMjE5LCAxNjQsIDI1LCAxLCA5NiwgMjE5LCAyNTMsIDI1LCAxLCA5NiwgMjEwLCA4LCAyNSwgMSwgCisgICAgOTYsIDIwOSwgMjUxLCAyNSwgMSwgOTYsIDIzNiwgMTkwLCAyMTMsIDE0MywgMjUsIDEsIDk2LCAxODgsIDI1LCAxLCA5NiwgCisgICAgMjE1LCAyMDQsIDI1LCAxLCA5NiwgMjI0LCA3MCwgMjUsIDEsIDk2LCAyMjYsIDg4LCAyNSwgMSwgOTYsIDIyMiwgNDAsIDI1LCAKKyAgICAxLCA5NiwgMTc4LCAyNSwgMSwgOTYsIDIyMiwgMTYxLCAyNSwgMSwgOTYsIDIwNiwgMTM2LCAyNSwgMSwgOTYsIDIyNiwgCisgICAgMTYzLCAyNSwgMSwgOTYsIDIyMSwgMTA2LCAyNSwgMSwgOTYsIDIwNiwgMTY2LCAyNSwgMSwgOTYsIDIzNywgMTY0LCAyNSwgCisgICAgMSwgOTYsIDIzNSwgMTcwLCAyNSwgMSwgMjE1LCAyMzMsIDE2MSwgMjUsIDEsIDIxNSwgMjMzLCA2NiwgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMjYsIDE1LCAyNSwgMSwgMjE1LCAyMzMsIDIzOCwgMjU1LCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgMTY3LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIwNywgMTUsIDI1LCAxLCAyMTUsIDIzMywgMjE4LCA0MSwgMjUsIDEsIDIxNSwgMjMzLCAxOTQsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjEzLCAzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTMsIDgxLCAyNSwgMSwgMjE1LCAyMzMsIDIyMiwgNjMsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjA3LCAzMiwgMjUsIDEsIDIxNSwgMjMzLCAyMjAsIDczLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgCisgICAgOTYsIDI1LCAxLCAyMTUsIDIzMywgMjIzLCAyNDMsIDI1LCAxLCAyMTUsIDIzMywgMjA3LCAxOTMsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjEwLCAyOCwgMjUsIDEsIDIxNSwgMjMzLCAyMDksIDE4MiwgMjUsIDEsIDIxNSwgMjMzLCAyMTAsIDEzNywgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMjUsIDE5OSwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDIzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIAorICAgIDEwNCwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDEzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDY3LCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDE5OSwgMjI3LCAyNSwgMSwgMjE1LCAyMzMsIDIwOSwgMjIwLCAyNSwgMSwgMjE1LCAyMzMsIDE4MywgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMTgsIDE2NywgMjUsIDEsIDIxNSwgMjMzLCAyMTUsIDI0OSwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDE0OCwgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMDAsIDIxMywgMjUsIDEsIDIxNSwgMjMzLCAyMTYsIDYxLCAyNSwgMSwgMjE1LCAyMzMsIAorICAgIDIxMiwgMTc1LCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMTUwLCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgMTA3LCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIyNiwgMjQzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMTgxLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMjMyLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIxMCwgOCwgMjUsIDEsIDIxNSwgMjMzLCAyMTQsIDIyMSwgMjUsIDEsIDIxNSwgMjMzLCAyMzcsIAorICAgIDYsIDI1LCAxLCAyMTUsIDIzMywgMjAxLCAxMTQsIDI1LCAxLCAyMTUsIDIzMywgMjI0LCAyMTAsIDI1LCAxLCAyMTUsIDIzMywgCisgICAgMjI0LCA3MCwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDg4LCAyNSwgMSwgMjE1LCAyMzMsIDIyMiwgMTAwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIxMywgMTM5LCAyNSwgMSwgMjE1LCAyMzMsIDE3OCwgMjUsIDEsIDIxNSwgMjMzLCAyMjEsIDEzNiwgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMjIsIDEwOCwgMjUsIDEsIDIxNSwgMjMzLCAyMDYsIDE0NiwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDUwLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIxMiwgMjEsIDI1LCAxLCAyMTUsIDIzMywgMjAxLCAxNjUsIDIyMSwgNDQsIDEsIDIwNywgMzYsIAorICAgIDIyMSwgNDQsIDEsIDIxOSwgMjAxLCAyMjEsIDQ0LCAxLCAxOTksIDI0NSwgMjIxLCA0NCwgMSwgMjIxLCAxNjYsIDIyMSwgCisgICAgNDQsIDEsIDI0OSwgMTM2LCAyMjEsIDQ0LCAxLCAyNDIsIDU4LCAyMjEsIDQ0LCAxLCA2MiwgMjIxLCA0NCwgMSwgMjE1LCAKKyAgICAyMjksIDIyMSwgNDQsIDEsIDIyNiwgMjAyLCAyMjEsIDQ0LCAxLCAyMzQsIDE2OSwgMjIxLCA0NCwgMSwgMjQyLCAzMywgCisgICAgMjIxLCA0NCwgMSwgMjQ2LCAxOTIsIDIyMSwgNDQsIDEsIDIyNywgNywgMjIxLCA0NCwgMSwgMjE3LCA5MywgMjIxLCA0NCwgCisgICAgMSwgMjIyLCAyMTYsIDIyMSwgNDQsIDEsIDIxOSwgMTE4LCAyMjEsIDQ0LCAxLCAxNzIsIDIyMSwgNDQsIDEsIDIxNywgNjMsIAorICAgIDIyMSwgNDQsIDEsIDc0LCAyMjEsIDQ0LCAxLCAyMTMsIDEsIDIyMSwgNDQsIDEsIDIxMCwgMzMsIDIyMSwgNDQsIDEsIDIwNiwgCisgICAgMTA1LCAyMjEsIDQ0LCAxLCAyMzksIDI3LCAyMjEsIDQ0LCAxLCAyMDEsIDExNCwgMjIxLCA0NCwgMSwgNzIsIDIyMSwgNDQsIAorICAgIDEsIDIyNiwgODgsIDIyMSwgNDQsIDEsIDIyNSwgODAsIDIyMSwgNDQsIDEsIDE5NCwgMjIxLCA0NCwgMSwgMjM0LCAyMjMsIAorICAgIDIyMSwgNDQsIDEsIDIxMywgODgsIDIyMSwgNDQsIDEsIDIwNiwgMTc5LCAyMjEsIDQ0LCAxNywgMTk5LCA4MSwgMjIxLCA0NCwgCisgICAgMTcsIDEwMiwgMjIxLCA0NCwgMTcsIDEwNSwgMjIxLCA0NCwgMTcsIDE0NywgMjIxLCA0NCwgMTcsIDE0OSwgMjIxLCA0NCwgCisgICAgMTcsIDE2NCwgMjIxLCA0NCwgMTcsIDE4NywgMjIxLCA0NCwgMTcsIDIxMCwgMTM1LCAyMjEsIDQ0LCAxNywgMTkyLCAyMjEsIAorICAgIDQ0LCAxNywgMjE5LCAxMTMsIDIyMSwgNDQsIDI0MiwgMTAsIDIyMSwgNDQsIDUzLCAyNDIsIDEwLCAyNDksIDU4LCAyMDMsIAorICAgIDg3LCAxLCAyMzgsIDE2MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTYxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMTEsIDIwMiwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM3LCAxOTUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyMiwgMTAzLCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAyMDAsIDYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzNiwgNzQsIDI0OSwgNTgsIDIwMywgODcsIDEsIAorICAgIDI0MSwgODEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyNiwgNDksIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyNywgMTY2LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzMsIDY3LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDEsIDExNCwgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMTk5LCAxNCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM2LCAxOSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgCisgICAgMjQwLCAyMTEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDI0NywgNzYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMywgMTc1LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAxMzgsIDI0OSwgNTgsIDIwMywgODcsIDEsIDI0OSwgMTM2LCAyNDksIDU4LCAyMDMsIAorICAgIDg3LCAxLCAyMDEsIDE2NiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAwLCA0NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTcyLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDEsIDExMSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNjIsIDI0OSwgNTgsIDIwMywgODcsIAorICAgIDEsIDc0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMTcsIDYzLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA2NiwgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMjM4LCAyNTUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDcyLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA3MCwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDEyMiwgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAxMjgsIDIwNSwgMTc0LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjIxLCAyMDYsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjI0LCA1NiwgCisgICAgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMzQsIDU3LCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDEyNSwgMTIzLCAyMiwgMjI3LCA0LCAxMjUsIDEyMywgMjIsIDIyNywgMCwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjYsIDE2MCwgMTI1LCAxMjMsIDIyLCAyMjYsIDEyNiwgMTI1LCAxMjMsIDIyLCAyMjcsIDI1LCAxMjUsIDEyMywgMjIsIAorICAgIDIyNywgMjIsIDEyNSwgMTIzLCAyMiwgMjI2LCA2LCAxMjUsIDEyMywgMjIsIDIyNSwgMjM0LCAxMjUsIDEyMywgMjIsIDIyNywgCisgICAgNiwgMTI1LCAxMjMsIDIyLCAyMjYsIDIxNywgMTI1LCAxMjMsIDIyLCAyMjcsIDgxLCAxMjUsIDEyMywgMjIsIDIyNywgNzgsIAorICAgIDEyNSwgMTIzLCAyMiwgMjI2LCA2NywgMTI1LCAxMjMsIDIyLCAyMjYsIDY0LCAxMjUsIDEyMywgMjIsIDIyNywgMTksIDEyNSwgCisgICAgMTIzLCAyMiwgMjI3LCAxNywgMTI1LCAxMjMsIDIyLCAyMjYsIDgsIDEyNSwgMTIzLCAyMiwgMjI2LCA3LCAxMjUsIDEyMywgCisgICAgMjIsIDIyNiwgODUsIDEyNSwgMTIzLCAyMiwgMjI2LCA1MywgMTI1LCAxMjMsIDIyLCAyMjYsIDE2MiwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjYsIDE2MSwgMTI1LCAxMjMsIDIyLCAyMjcsIDk2LCAxMjUsIDEyMywgMjIsIDIyNywgMjEsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI1LCAyMjUsIDEyNSwgMTIzLCAyMiwgMjI1LCAyMTYsIDEyNSwgMTIzLCAyMiwgMjI3LCAxMDQsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI3LCA5NywgMTI1LCAxMjMsIDExMSwgMjAzLCA2NSwgMTI1LCAxMjMsIDExMSwgMjE4LCAxMzksIDEyNSwgMTIzLCAxMTEsIAorICAgIDIyNSwgNTgsIDEyNSwgMTIzLCAxMTEsIDIzNCwgMTUwLCAxMjUsIDEyMywgMTExLCAyMTksIDI0LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMTMsIDE5OSwgMTI1LCAxMjMsIDExMSwgMjE5LCA1MSwgMTI1LCAxMjMsIDExMSwgMjE0LCAxMzMsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIwMCwgNjEsIDEyNSwgMTIzLCAxMTEsIDIzNCwgMzYsIDEyNSwgMTIzLCAxMTEsIDIyMiwgMTIzLCAxMjUsIDEyMywgMTExLCAKKyAgICAyNDcsIDEyLCAxMjUsIDEyMywgMTExLCAyMjAsIDc4LCAxMjUsIDEyMywgMTExLCAyMzMsIDIyOCwgMTI1LCAxMjMsIDExMSwgCisgICAgMjE1LCAxMjIsIDEyNSwgMTIzLCAxMTEsIDIxOCwgMTQ0LCAxMjUsIDEyMywgMTExLCAyMjAsIDExNiwgMTI1LCAxMjMsIAorICAgIDExMSwgMjUwLCAxMzksIDEyNSwgMTIzLCAxMTEsIDIwMCwgMTc3LCAxMjUsIDEyMywgMTExLCAyNDcsIDEwOSwgMTI1LCAKKyAgICAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIwNCwgMjExLCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjA5LCAyOSwgMTI1LCAxMjMsIAorICAgIDEzNCwgMjQ2LCAxNjEsIDIyNiwgMjM1LCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjI2LCAxOTMsIDEyNSwgMTIzLCAKKyAgICAxMzQsIDI0NiwgMTYxLCAyMDgsIDE4LCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjMzLCAxOTQsIDEyNSwgMTIzLCAxMzQsIAorICAgIDI0NiwgMTYxLCAyMDYsIDIyMCwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMDYsIDU4LCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIwNSwgMjEsIDI0NywgNjcsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjQ3LCAxLCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIwNiwgODMsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjM3LCAxMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgCisgICAgMjE4LCAxMzQsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgMjEzLCA5MCwgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMDUsIAorICAgIDEzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMzcsIDE3NiwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMTEsIDE4NCwgCisgICAgMTI1LCAxMjMsIDIsIDIyMiwgNjIsIDIwOCwgMjIsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjE4LCAxODMsIDEyNSwgMTIzLCAKKyAgICAyLCAyMzIsIDIzNiwgMjAwLCA4MCwgMTI1LCAxMjMsIDIsIDIwMCwgMTc2LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNSwgCisgICAgOCwgMjEyLCAyNDYsIDEyNSwgMTIzLCAxNywgMTk5LCA4MSwgMTI1LCAxMjMsIDE3LCAxMDIsIDEyNSwgMTIzLCAxNywgMTA1LCAKKyAgICAxMjUsIDEyMywgMTcsIDE0NywgMTI1LCAxMjMsIDE3LCAxNDksIDEyNSwgMTIzLCAxNywgMTY0LCAxMjUsIDEyMywgMTcsIAorICAgIDE4NywgMTI1LCAxMjMsIDE3LCAyMTAsIDEzNSwgMTI1LCAxMjMsIDE3LCAxOTIsIDEyNSwgMTIzLCAxNywgMjE5LCAxMTMsIAorICAgIDEyNSwgMTIzLCA0MSwgMjA2LCAxNjEsIDEyNSwgMTIzLCA0MSwgMjMzLCA4MCwgMTI1LCAxMjMsIDQxLCAyMDYsIDE2NywgCisgICAgMjA2LCA0OCwgMTI1LCAxMjMsIDQxLCAyMjEsIDE2NywgMTI1LCAxMjMsIDQxLCAyMzMsIDgzLCAyMjEsIDE2NywgMTI1LCAKKyAgICAxMjMsIDQxLCAyMDYsIDE2NywgMjQ4LCAxNzAsIDEyNSwgMTIzLCA0MSwgMjA1LCA4NSwgMTI1LCAxMjMsIDIsIDIwMiwgCisgICAgMTc2LCAyMjQsIDM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzIsIDEyNSwgMTIzLCAyLCAyMzQsIDMxLCAxMjUsIDEyMywgMiwgCisgICAgMjA2LCA3MywgMjM0LCAzMSwgMTI1LCAxMjMsIDIsIDE5OCwgMjQ0LCAyMDYsIDExNiwgMTI1LCAxMjMsIDIsIDIzMywgMjEyLCAKKyAgICAxMjUsIDEyMywgMiwgMjE4LCAxOTcsIDEyNSwgMTIzLCAyLCAyMDAsIDE2OCwgMTI1LCAxMjMsIDIsIDIxOCwgMTM3LCAxMjUsIAorICAgIDEyMywgMiwgMjUwLCAxMjMsIDEyNSwgMTIzLCAyLCAyMDQsIDEzNiwgMjQ3LCA2NiwgMTI1LCAxMjMsIDIsIDIyMiwgNjIsIAorICAgIDIwNSwgMjQsIDEyNSwgMTIzLCAyLCAyMDYsIDIyMSwgMTI1LCAxMjMsIDIsIDIyNCwgNjcsIDEyNSwgMTIzLCAyLCAyMjAsIAorICAgIDI1MiwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMzQsIDIxOSwgMjI0LCAxNSwgMjE4LCAxNDIsIDIxOCwgMTQxLCAxMjUsIAorICAgIDEyMywgMiwgMjQ2LCAxNjEsIDI0MiwgMjEzLCAyMDUsIDE1LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNCwgMTM0LCAKKyAgICAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNCwgMTM1LCAyNDYsIDE4MCwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMTQsIAorICAgIDIxOSwgMjQxLCAyMzUsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjE4LCAxOTAsIDIwNSwgMTQ1LCAxMjUsIDEyMywgMjQ2LCAKKyAgICAxMzMsIDIsIDIwNSwgMTksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCA0NywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAKKyAgICAyMjQsIDE1NSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjUsIDU2LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgCisgICAgMTMxLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNiwgNjgsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM0LCAxNDcsIAorICAgIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjIxLCAzNywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDYsIDU5LCAxMjUsIDEyMywgCisgICAgMjQ2LCAxMzMsIDIsIDIwNSwgMjksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjE1LCAyNDIsIDEyNSwgMTIzLCAyNDYsIAorICAgIDEzMywgMiwgMjI2LCAyMDUsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM0LCAyMDksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgCisgICAgMjAzLCA4NCwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzcsIDE3MywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIDg3LCAKKyAgICAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwNSwgMiwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjUsIDIyMCwgMTI1LCAxMjMsIAorICAgIDI0NiwgMTMzLCAyLCAyMDEsIDE1NiwgMTE0LCAxLCAxNzIsIDExNCwgMSwgMjQ5LCAxMzYsIDExNCwgMSwgMTEsIDE3MiwgCisgICAgMTE0LCAxLCAyMTUsIDEzNSwgMTE0LCAxLCAxNzgsIDExNCwgMSwgMjIxLCAyMTQsIDExNCwgMSwgMjUwLCAyMzQsIDE3OCwgCisgICAgMTE0LCAxLCAyMzcsIDE5NSwgMTE0LCAxLCAyMDMsIDkwLCAxMTQsIDEsIDIwMiwgMjM1LCAxMTQsIDEsIDIwNywgMzYsIAorICAgIDExNCwgMSwgMjQyLCA1OCwgMTE0LCAxLCAxMSwgMjA0LCAyNTMsIDExNCwgMSwgMTEsIDIwNywgMzYsIDExNCwgMSwgMjA0LCAKKyAgICAyNTMsIDExNCwgMSwgMjQxLCAyMjAsIDExNCwgMSwgMTg4LCAxMTQsIDEsIDIxOSwgMTU0LCAxMTQsIDEsIDExLCAyMTksIAorICAgIDIxLCAxMTQsIDEsIDI1MCwgMjM0LCAxODgsIDExNCwgMSwgMjE5LCAyMSwgMTE0LCAxLCAyMTksIDcsIDExNCwgMSwgMTk0LCAKKyAgICAxMTQsIDEsIDIyNCwgMSwgMTE0LCAxLCAyMjQsIDIyMywgMTE0LCAxLCAyMjQsIDIxMiwgMTE0LCAxLCAyMDUsIDIwMCwgCisgICAgMTE0LCAxLCAyNDAsIDIxOSwgMTE0LCAxLCAyMDUsIDE5MiwgMTE0LCAxLCAyNDAsIDIxOCwgMTE0LCAxLCAxNjEsIDExNCwgCisgICAgMSwgMjM2LCA4OSwgMTE0LCAxLCAxMSwgMTYxLCAxMTQsIDEsIDIxNCwgMTU5LCAxMTQsIDEsIDIxNCwgMTM2LCAxMTQsIDEsIAorICAgIDIxOSwgMjUzLCAxMTQsIDEsIDIxOSwgMjAyLCAxMTQsIDEsIDI1MCwgMjM0LCAyMTksIDI1MywgMTE0LCAxLCAxNDQsIDExNCwgCisgICAgMSwgMjAwLCAxODEsIDExNCwgMSwgMjM1LCAxOTksIDExNCwgMSwgMjM1LCAxNzQsIDExNCwgMSwgMjA1LCA3LCAxMTQsIDEsIAorICAgIDIzOSwgNzcsIDExNCwgMSwgMjE4LCA2MCwgMTE0LCAxLCAyMTgsIDQzLCAxMTQsIDEsIDIwNSwgMjIsIDExNCwgMSwgMjM5LCAKKyAgICA4NywgMTE0LCAxLCAxMSwgMjA1LCAyMiwgMTE0LCAxLCAxMSwgMjM5LCA4NywgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAyMiwgCisgICAgMTE0LCAxLCAyMTAsIDExNCwgMTE0LCAxLCAyMDgsIDE3OSwgMTE0LCAxLCAxOTksIDc3LCAxMTQsIDEsIDE5OSwgNSwgMTE0LCAKKyAgICAxLCAyMDUsIDMyLCAxMTQsIDEsIDIzOSwgOTMsIDExNCwgMSwgMTEsIDIwNSwgMzIsIDExNCwgMSwgMjEyLCA2NCwgMTE0LCAKKyAgICAxLCAxOTksIDExNCwgMTE0LCAxLCAxOTksIDYsIDExNCwgMSwgMTk4LCAyMzIsIDExNCwgMSwgMTk4LCAyMTIsIDExNCwgMSwgCisgICAgMjUwLCAyMzQsIDE5OCwgMjMyLCAxMTQsIDEsIDE5OCwgMjA0LCAxMTQsIDEsIDE5OCwgMjExLCAxMTQsIDEsIDIwMSwgMTE0LCAKKyAgICAxMTQsIDEsIDI1MSwgMTg1LCAxMTQsIDEsIDIzNCwgODQsIDExNCwgMSwgMjIwLCAxMjEsIDExNCwgMiwgMjUwLCAxNzEsIAorICAgIDExNCwgMiwgMjEzLCAxNjUsIDIwMiwgMTg3LCAxMTQsIDIsIDIxMywgMTY1LCAyNTAsIDE3MSwgMTE0LCAyMiwgMiwgNjIsIAorICAgIDExNCwgMjIsIDIsIDI1MiwgMTM4LCAxMTQsIDIyLCAyLCAyNTEsIDE4MSwgMTE0LCAyMiwgMiwgMjUxLCA4NSwgMTE0LCAyMiwgCisgICAgMiwgMjUxLCA3NiwgMTE0LCAyMiwgMiwgNzQsIDExNCwgMjIsIDIsIDIxNywgNjMsIDExNCwgMjIsIDIsIDIwMSwgMCwgMTE0LCAKKyAgICAyMiwgMiwgMjAxLCAxNDcsIDExNCwgMjIsIDIsIDcyLCAxMTQsIDIyLCAyLCAyMzgsIDE3OSwgMTE0LCAyMiwgMiwgMjM4LCAKKyAgICAxNjUsIDExNCwgMjIsIDIsIDIxNywgMTE4LCAxMTQsIDIyLCAyLCA3MCwgMTE0LCAyMiwgMiwgMjMyLCAyNDAsIDExNCwgMjIsIAorICAgIDIsIDIzMiwgMjM5LCAxMTQsIDIyLCAyLCAyMzIsIDIzOCwgMTE0LCAyMiwgMiwgMjI4LCA0NSwgMTE0LCAyMiwgMiwgMjI4LCAKKyAgICAxNzgsIDExNCwgMjIsIDIsIDIyOCwgMTUxLCAxMTQsIDIyLCAyLCAyMjgsIDgsIDExNCwgMjIsIDIsIDIyOCwgOTEsIDExNCwgCisgICAgMjIsIDIsIDY2LCAxMTQsIDIyLCAyLCAyMDQsIDQ2LCAxMTQsIDIyLCAyLCAyMDQsIDQ1LCAxMTQsIDIyLCAyLCAyMDQsIDQ0LCAKKyAgICAxMTQsIDIyLCAyLCAyMDMsIDE4MiwgMTE0LCAyMiwgMiwgMjA0LCAyOCwgMTE0LCAyMiwgMiwgMjAzLCAyNDYsIDExNCwgMjIsIAorICAgIDIsIDIwMCwgMTIzLCAxMTQsIDIyLCAyLCAyMDAsIDksIDExNCwgMjIsIDIsIDI1MSwgMjIxLCAxMTQsIDIyLCAyLCAyNTEsIAorICAgIDIxNywgMTE0LCAyMiwgMiwgMjM4LCAxMDgsIDExNCwgMjIsIDIsIDIxMiwgMjE5LCAyMzgsIDEwOCwgMTE0LCAyMiwgMiwgCisgICAgMjM4LCAxMTUsIDExNCwgMjIsIDIsIDIxMiwgMjE5LCAyMzgsIDExNSwgMTE0LCAyMiwgMiwgMjUxLCAxNzYsIDExNCwgMjIsIAorICAgIDIsIDIzOCwgMjM0LCAxMTQsIDIyLCAyLCAyNTAsIDEzOSwgMTE0LCAyMiwgMiwgMjE3LCAzLCAxMTQsIDIyLCAyLCAyMjAsIAorICAgIDIxNCwgMTE0LCAyMiwgMiwgMjE5LCAyNTUsIDExNCwgMTUwLCAyMTMsIDQ2LCAxMTQsIDE1MCwgMjA1LCAxNTgsIDIxMywgCisgICAgNDYsIDExNCwgMTUwLCA1NiwgMTE0LCAxNTAsIDU3LCAxMTQsIDEsIDIwNSwgMTcyLCAxMTQsIDEsIDIwNSwgMTcxLCAxMTQsIAorICAgIDEsIDIwNSwgMTcwLCAxMTQsIDEsIDIwNSwgMTY5LCAxMTQsIDEsIDIwNSwgMTY4LCAxMTQsIDEsIDIwNSwgMTY3LCAxMTQsIAorICAgIDEsIDIwNSwgMTY2LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE3MywgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNzIsIDExNCwgCisgICAgMSwgMjEzLCAxNjUsIDIwNSwgMTcwLCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE2OSwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAKKyAgICAxNjgsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTY2LCAxOCwgMjI4LCAxMCwgODEsIDE4LCAyNDYsIDYxLCAxOCwgMjQ2LCAKKyAgICA2MCwgMTgsIDI0NiwgNTksIDE4LCAyNDYsIDU4LCAxOCwgMjQ2LCA1NywgMTgsIDI0NiwgNTYsIDE4LCAyNDYsIDU1LCAxOCwgCisgICAgMjQ2LCA1NCwgMTgsIDI0NiwgNTMsIDE4LCAyNDYsIDUyLCAxOCwgMjQ2LCA1MSwgMTgsIDI0NiwgNTAsIDE4LCAyNDYsIDQ5LCAKKyAgICAxOCwgMjQ2LCA0OCwgMTgsIDI0NiwgNDcsIDE4LCAyNDYsIDQ2LCAxOCwgMjQ2LCA0NSwgMTgsIDI0NiwgNDQsIDE4LCAyNDYsIAorICAgIDQzLCAxOCwgMjQ2LCA0MiwgMTgsIDI0NiwgNDEsIDE4LCAyNDYsIDQwLCAxOCwgMjQ2LCAzOSwgMTgsIDI0NiwgMzgsIDE4LCAKKyAgICAyNDYsIDM3LCAxOCwgMjQ2LCAzNiwgMTgsIDI0NiwgMzUsIDE4LCAyNDYsIDM0LCAxOCwgMjQ2LCAzMywgMTgsIDI0NiwgMzIsIAorICAgIDE4LCAyNDYsIDMxLCAxOCwgMjQ2LCAzMCwgMTgsIDI0NiwgMjksIDE4LCAyNDYsIDI4LCAxOCwgMjQ2LCAyNywgMTgsIDI0NiwgCisgICAgMjYsIDE4LCAyNDYsIDI1LCAxOCwgMjQ2LCAyNCwgMTgsIDI0NiwgMjMsIDE4LCAyNDYsIDIyLCAxOCwgMjQ2LCAyMSwgMTgsIAorICAgIDI0NiwgMjAsIDE4LCAyNDYsIDE5LCAxOCwgMjQ2LCAxOCwgMTgsIDI0NiwgMTcsIDE4LCAyNDYsIDE2LCAxOCwgMjQ2LCAxNSwgCisgICAgMTgsIDI0NiwgMTQsIDE4LCAyNDYsIDEzLCAxOCwgMjQ2LCAxMiwgMTgsIDI0NiwgMTEsIDE4LCAyNDYsIDEwLCAxOCwgMjQ2LCAKKyAgICA5LCAxOCwgMjQ2LCA4LCAxOCwgMjQ2LCA3LCAxOCwgMjQ2LCA2LCAxOCwgMjQ2LCA1LCAxOCwgMjQ2LCA0LCAxOCwgMjQ2LCAKKyAgICAzLCAxOCwgMjQ2LCAyLCAxOCwgMjQ2LCAxLCAxOCwgMjQ2LCAwLCAxOCwgMjQ1LCAyNTUsIDE4LCAyNDUsIDI1NCwgMTgsIAorICAgIDI0NSwgMjUzLCAxOCwgMjQ1LCAyNTIsIDE4LCAyNDUsIDI1MSwgMTgsIDI0NSwgMjUwLCAxOCwgMjQ1LCAyNDksIDE4LCAKKyAgICAyNDUsIDI0OCwgMTgsIDI0NSwgMjQ3LCAxOCwgMjQ1LCAyNDYsIDE4LCAyNDUsIDI0NSwgMTgsIDI0NSwgMjQ0LCAxOCwgCisgICAgMjQ1LCAyNDMsIDE4LCAyNDUsIDI0MiwgMTgsIDI0NSwgMjQxLCAxOCwgMjQ1LCAyNDAsIDE4LCAyNDUsIDIzOSwgMTgsIAorICAgIDI0NSwgMjM4LCAxOCwgMjQ1LCAyMzcsIDE4LCAyNDUsIDIzNiwgMTgsIDI0NSwgMjM1LCAxOCwgMjQ1LCAyMzQsIDE4LCAKKyAgICAyNDUsIDIzMywgMTgsIDI0NSwgMjMyLCAxOCwgMjQ1LCAyMzEsIDE4LCAyNDUsIDIzMCwgMTgsIDI0NSwgMjI5LCAxOCwgCisgICAgMjQ1LCAyMjgsIDE4LCAyNDUsIDIyNywgMTgsIDI0NSwgMjI2LCAxOCwgMjQ1LCAyMjUsIDE4LCAyNDUsIDIyNCwgMTgsIAorICAgIDI0NSwgMjIzLCAxOCwgMjQ1LCAyMjIsIDE4LCAyNDUsIDIyMSwgMTgsIDI0NSwgMjIwLCAxOCwgMjQ1LCAyMTksIDE4LCAKKyAgICAyNDUsIDIxOCwgMTgsIDI0NSwgMjE3LCAxOCwgMjQ1LCAyMTYsIDE4LCAyNDUsIDIxNSwgMTgsIDI0NSwgMjE0LCAxOCwgCisgICAgMjQ1LCAyMTMsIDE4LCAyNDUsIDIxMiwgMTgsIDI0NSwgMjExLCAxOCwgMjQ1LCAyMTAsIDE4LCAyNDUsIDIwOSwgMTgsIAorICAgIDI0NSwgMjA4LCAxOCwgMjQ1LCAyMDcsIDE4LCAyNDUsIDIwNiwgMTgsIDI0NSwgMjA1LCAxOCwgMjQ1LCAyMDQsIDE4LCAKKyAgICAyNDUsIDIwMywgMTgsIDI0NSwgMjAyLCAxOCwgMjQ1LCAyMDEsIDE4LCAyNDUsIDIwMCwgMTgsIDI0NSwgMTk5LCAxOCwgCisgICAgMjQ1LCAxOTgsIDE4LCAyNDUsIDE5NywgMTgsIDI0NSwgMTk2LCAxOCwgMjQ1LCAxOTUsIDE4LCAyNDUsIDE5NCwgMTgsIAorICAgIDI0NSwgMTkzLCAxOCwgMjQ1LCAxOTIsIDE4LCAyNDUsIDE5MSwgMTgsIDI0NSwgMTkwLCAxOCwgMjQ1LCAxODksIDE4LCAKKyAgICAyNDUsIDE4OCwgMTgsIDI0NSwgMTg3LCAxOCwgMjQ1LCAxODYsIDE4LCAyNDUsIDE4NSwgMTgsIDI0NSwgMTg0LCAxOCwgCisgICAgMjQ1LCAxODMsIDE4LCAyNDUsIDE4MiwgMTgsIDI0NSwgMTgxLCAxOCwgMjQ1LCAxODAsIDE4LCAyNDUsIDE3OSwgMTgsIAorICAgIDI0NSwgMTc4LCAxOCwgMjQ1LCAxNzcsIDE4LCAyNDUsIDE3NiwgMTgsIDI0NSwgMTc1LCAxOCwgMjQ1LCAxNzQsIDE4LCAKKyAgICAyNDUsIDE3MywgMTgsIDI0NSwgMTcyLCAxOCwgMjQ1LCAxNzEsIDE4LCAyNDUsIDE3MCwgMTgsIDI0NSwgMTY5LCAxOCwgCisgICAgMjQ1LCAxNjgsIDE4LCAyNDUsIDE2NywgMTgsIDI0NSwgMTY2LCAxOCwgMjQ1LCAxNjUsIDE4LCAyNDUsIDE2NCwgMTgsIAorICAgIDI0NSwgMTYzLCAxOCwgMjQ1LCAxNjIsIDE4LCAyNDUsIDE2MSwgMTgsIDI0NSwgMTYwLCAxOCwgMjQ1LCAxNTksIDE4LCAKKyAgICAyNDUsIDE1OCwgMTgsIDI0NSwgMTU3LCAxOCwgMjQ1LCAxNTYsIDE4LCAyNDUsIDE1NSwgMTgsIDI0NSwgMTU0LCAxOCwgCisgICAgMjQ1LCAxNTMsIDE4LCAyNDUsIDE1MiwgMTgsIDI0NSwgMTUxLCAxOCwgMjQ1LCAxNTAsIDE4LCAyNDUsIDE0OSwgMTgsIAorICAgIDI0NSwgMTQ4LCAxOCwgMjQ1LCAxNDcsIDE4LCAyNDUsIDE0NiwgMTgsIDI0NSwgMTQ1LCAxOCwgMjQ1LCAxNDQsIDE4LCAKKyAgICAyNDUsIDE0MywgMTgsIDI0NSwgMTQyLCAxOCwgMjQ1LCAxNDEsIDE4LCAyNDUsIDE0MCwgMTgsIDI0NSwgMTM5LCAxOCwgCisgICAgMjQ1LCAxMzgsIDE4LCAyNDUsIDEzNywgMTgsIDI0NSwgMTM2LCAxOCwgMjQ1LCAxMzUsIDE4LCAyNDUsIDEzNCwgMTgsIAorICAgIDI0NSwgMTMzLCAxOCwgMjQ1LCAxMzIsIDE4LCAyNDUsIDEzMSwgMTgsIDI0NSwgMTMwLCAxOCwgMjQ1LCAxMjksIDE4LCAKKyAgICAyNDUsIDEyOCwgMTgsIDI0NSwgMTI3LCAxOCwgMjQ1LCAxMjYsIDE4LCAyNDUsIDEyNSwgMTgsIDI0NSwgMTI0LCAxOCwgCisgICAgMjQ1LCAxMjMsIDE4LCAyNDUsIDEyMiwgMTgsIDI0NSwgMTIxLCAxOCwgMjQ1LCAxMjAsIDE4LCAyNDUsIDExOSwgMTgsIAorICAgIDI0NSwgMTE4LCAxOCwgMjQ1LCAxMTcsIDE4LCAyNDUsIDExNiwgMTgsIDI0NSwgMTE1LCAxOCwgMjQ1LCAxMTQsIDE4LCAKKyAgICAyNDUsIDExMywgMTgsIDI0NSwgMTEyLCAxOCwgMjQ1LCAxMTEsIDE4LCAyNDUsIDExMCwgMTgsIDI0NSwgMTA5LCAxOCwgCisgICAgMjQ1LCAxMDgsIDE4LCAyNDUsIDEwNywgMTgsIDI0NSwgMTA2LCAxOCwgMjQ1LCAxMDUsIDE4LCAyNDUsIDEwNCwgMTgsIAorICAgIDI0NSwgMTAzLCAxOCwgMjQ1LCAxMDIsIDE4LCAyNDUsIDEwMSwgMTgsIDI0NSwgMTAwLCAxOCwgMjQ1LCA5OSwgMTgsIDI0NSwgCisgICAgOTgsIDE4LCAyNDUsIDk3LCAxOCwgMjQ1LCA5NiwgMTgsIDI0NSwgOTUsIDE4LCAyNDUsIDk0LCAxOCwgMjQ1LCA5MywgMTgsIAorICAgIDI0NSwgOTIsIDE4LCAyNDUsIDkxLCAxOCwgMjQ1LCA5MCwgMTgsIDI0NSwgODksIDE4LCAyNDUsIDg4LCAxOCwgMjQ1LCA4NywgCisgICAgMTgsIDI0NSwgODYsIDE4LCAyNDUsIDg1LCAxOCwgMjQ1LCA4NCwgMTgsIDI0NSwgODMsIDE4LCAyNDUsIDgyLCAxOCwgMjQ1LCAKKyAgICA4MSwgMTgsIDI0NSwgODAsIDE4LCAyNDUsIDc5LCAxOCwgMjQ1LCA3OCwgMTgsIDI0NSwgNzcsIDE4LCAyNDUsIDc2LCAxOCwgCisgICAgMjQ1LCA3NSwgMTgsIDI0NSwgNzQsIDE4LCAyNDUsIDczLCAxOCwgMjQ1LCA3MiwgMTgsIDI0NSwgNzEsIDE4LCAyNDUsIDcwLCAKKyAgICAxOCwgMjQ1LCA2OSwgMTgsIDI0NSwgNjgsIDE4LCAyNDUsIDY3LCAxOCwgMjQ1LCA2NiwgMTgsIDI0NSwgNjUsIDE4LCAyNDUsIAorICAgIDY0LCAxOCwgMjQ1LCA2MywgMTgsIDI0NSwgNjIsIDE4LCAyNDUsIDYxLCAxOCwgMjQ1LCA2MCwgMTgsIDI0NSwgNTksIDE4LCAKKyAgICAyNDUsIDU4LCAxOCwgMjQ1LCA1NywgMTgsIDI0NSwgNTYsIDE4LCAyNDUsIDU1LCAxOCwgMjQ1LCA1NCwgMTgsIDI0NSwgNTMsIAorICAgIDE4LCAyNDUsIDUyLCAxOCwgMjQ1LCA1MSwgMTgsIDI0NSwgNTAsIDE4LCAyNDUsIDQ5LCAxOCwgMjQ1LCA0OCwgMTgsIDI0NSwgCisgICAgNDcsIDE4LCAyNDUsIDQ2LCAxOCwgMjQ1LCA0NSwgMTgsIDI0NSwgNDQsIDE4LCAyNDUsIDQzLCAxOCwgMjQ1LCA0MiwgMTgsIAorICAgIDI0NSwgNDEsIDE4LCAyNDUsIDQwLCAxOCwgMjQ1LCAzOSwgMTgsIDI0NSwgMzgsIDE4LCAyNDUsIDM3LCAxOCwgMjQ1LCAzNiwgCisgICAgMTgsIDI0NSwgMzUsIDE4LCAyNDUsIDM0LCAxOCwgMjQ1LCAzMywgMTgsIDI0NSwgMzIsIDE4LCAyNDUsIDMxLCAxOCwgMjQ1LCAKKyAgICAzMCwgMTgsIDI0NSwgMjksIDE4LCAyNDUsIDI4LCAxOCwgMjQ1LCAyNywgMTgsIDI0NSwgMjYsIDE4LCAyNDUsIDI1LCAxOCwgCisgICAgMjQ1LCAyNCwgMTgsIDI0NSwgMjMsIDE4LCAyNDUsIDIyLCAxOCwgMjQ1LCAyMSwgMTgsIDI0NSwgMjAsIDE4LCAyNDUsIDE5LCAKKyAgICAxOCwgMjQ1LCAxOCwgMTgsIDI0NSwgMTcsIDE4LCAyNDUsIDE2LCAxOCwgMjQ1LCAxNSwgMTgsIDI0NSwgMTQsIDE4LCAyNDUsIAorICAgIDEzLCAxOCwgMjQ1LCAxMiwgMTgsIDI0NSwgMTEsIDE4LCAyNDUsIDEwLCAxOCwgMjQ1LCA5LCAxOCwgMjQ1LCA4LCAxOCwgCisgICAgMjQ1LCA3LCAxOCwgMjQ1LCA2LCAxOCwgMjQ1LCA1LCAxOCwgMjQ1LCA0LCAxOCwgMjQ1LCAzLCAxOCwgMjQ1LCAyLCAxOCwgCisgICAgMjQ1LCAxLCAxOCwgMjQ1LCAwLCAxOCwgMjQ0LCAyNTUsIDE4LCAyNDQsIDI1NCwgMTgsIDI0NCwgMjUzLCAxOCwgMjQ0LCAKKyAgICAyNTIsIDE4LCAyNDQsIDI1MSwgMTgsIDI0NCwgMjUwLCAxOCwgMjQ0LCAyNDksIDE4LCAyNDQsIDI0OCwgMTgsIDI0NCwgCisgICAgMjQ3LCAxOCwgMjQ0LCAyNDYsIDE4LCAyNDQsIDI0NSwgMTgsIDI0NCwgMjQ0LCAxOCwgMjQ0LCAyNDMsIDE4LCAyNDQsIAorICAgIDI0MiwgMTgsIDI0NCwgMjQxLCAxOCwgMjQ0LCAyNDAsIDE4LCAyNDQsIDIzOSwgMTgsIDI0NCwgMjM4LCAxOCwgMjQ0LCAKKyAgICAyMzcsIDE4LCAyNDQsIDIzNiwgMTgsIDI0NCwgMjM1LCAxOCwgMjQ0LCAyMzQsIDE4LCAyNDQsIDIzMywgMTgsIDI0NCwgCisgICAgMjMyLCAxOCwgMjQ0LCAyMzEsIDE4LCAyNDQsIDIzMCwgMTgsIDI0NCwgMjI5LCAxOCwgMjQ0LCAyMjgsIDE4LCAyNDQsIAorICAgIDIyNywgMTgsIDI0NCwgMjI2LCAxOCwgMjQ0LCAyMjUsIDE4LCAyNDQsIDIyNCwgMTgsIDI0NCwgMjIzLCAxOCwgMjQ0LCAKKyAgICAyMjIsIDE4LCAyNDQsIDIyMSwgMTgsIDI0NCwgMjIwLCAxOCwgMjQ0LCAyMTksIDE4LCAyNDQsIDIxOCwgMTgsIDI0NCwgCisgICAgMjE3LCAxOCwgMjQ0LCAyMTYsIDE4LCAyNDQsIDIxNSwgMTgsIDI0NCwgMjE0LCAxOCwgMjQ0LCAyMTMsIDE4LCAyNDQsIAorICAgIDIxMiwgMTgsIDI0NCwgMjExLCAxOCwgMjQ0LCAyMTAsIDE4LCAyNDQsIDIwOSwgMTgsIDI0NCwgMjA4LCAxOCwgMjQ0LCAKKyAgICAyMDcsIDE4LCAyNDQsIDIwNiwgMTgsIDI0NCwgMjA1LCAxOCwgMjQ0LCAyMDQsIDE4LCAyNDQsIDIwMywgMTgsIDI0NCwgCisgICAgMjAyLCAxOCwgMjQ0LCAyMDEsIDE4LCAyNDQsIDIwMCwgMTgsIDI0NCwgMTk5LCAxOCwgMjQ0LCAxOTgsIDE4LCAyNDQsIAorICAgIDE5NywgMTgsIDI0NCwgMTk2LCAxOCwgMjQ0LCAxOTUsIDE4LCAyNDQsIDE5NCwgMTgsIDI0NCwgMTkzLCAxOCwgMjQ0LCAKKyAgICAxOTIsIDE4LCAyNDQsIDE5MSwgMTgsIDI0NCwgMTkwLCAxOCwgMjQ0LCAxODksIDE4LCAyNDQsIDE4OCwgMTgsIDI0NCwgCisgICAgMTg3LCAxOCwgMjQ0LCAxODYsIDE4LCAyNDQsIDE4NSwgMTgsIDI0NCwgMTg0LCAxOCwgMjQ0LCAxODMsIDE4LCAyNDQsIAorICAgIDE4MiwgMTgsIDI0NCwgMTgxLCAxOCwgMjQ0LCAxODAsIDE4LCAyNDQsIDE3OSwgMTgsIDI0NCwgMTc4LCAxOCwgMjQ0LCAKKyAgICAxNzcsIDE4LCAyNDQsIDE3NiwgMTgsIDI0NCwgMTc1LCAxOCwgMjQ0LCAxNzQsIDE4LCAyNDQsIDE3MywgMTgsIDI0NCwgCisgICAgMTcyLCAxOCwgMjQ0LCAxNzEsIDE4LCAyNDQsIDE3MCwgMTgsIDI0NCwgMTY5LCAxOCwgMjQ0LCAxNjgsIDE4LCAyNDQsIAorICAgIDE2NywgMTgsIDI0NCwgMTY2LCAxOCwgMjQ0LCAxNjUsIDE4LCAyNDQsIDE2NCwgMTgsIDI0NCwgMTYzLCAxOCwgMjQ0LCAKKyAgICAxNjIsIDE4LCAyNDQsIDE2MSwgMTgsIDI0NCwgMTYwLCAxOCwgMjQ0LCAxNTksIDE4LCAyNDQsIDE1OCwgMTgsIDI0NCwgCisgICAgMTU3LCAxOCwgMjQ0LCAxNTYsIDE4LCAyNDQsIDE1NSwgMTgsIDI0NCwgMTU0LCAxOCwgMjQ0LCAxNTMsIDE4LCAyNDQsIAorICAgIDE1MiwgMTgsIDI0NCwgMTUxLCAxOCwgMjQ0LCAxNTAsIDE4LCAyNDQsIDE0OSwgMTgsIDI0NCwgMTQ4LCAxOCwgMjQ0LCAKKyAgICAxNDcsIDE4LCAyNDQsIDE0NiwgMTgsIDI0NCwgMTQ1LCAxOCwgMjQ0LCAxNDQsIDE4LCAyNDQsIDE0MywgMTgsIDI0NCwgCisgICAgMTQyLCAxOCwgMjQ0LCAxNDEsIDE4LCAyNDQsIDE0MCwgMTgsIDI0NCwgMTM5LCAxOCwgMjQ0LCAxMzgsIDE4LCAyNDQsIAorICAgIDEzNywgMTgsIDI0NCwgMTM2LCAxOCwgMjQ0LCAxMzUsIDE4LCAyNDQsIDEzNCwgMTgsIDI0NCwgMTMzLCAxOCwgMjQ0LCAKKyAgICAxMzIsIDE4LCAyNDQsIDEzMSwgMTgsIDI0NCwgMTMwLCAxOCwgMjQ0LCAxMjksIDE4LCAyNDQsIDEyOCwgMTgsIDI0NCwgCisgICAgMTI3LCAxOCwgMjQ0LCAxMjYsIDE4LCAyNDQsIDEyNSwgMTgsIDI0NCwgMTI0LCAxOCwgMjQ0LCAxMjMsIDE4LCAyNDQsIAorICAgIDEyMiwgMTgsIDI0NCwgMTIxLCAxOCwgMjQ0LCAxMjAsIDE4LCAyNDQsIDExOSwgMTgsIDI0NCwgMTE4LCAxOCwgMjQ0LCAKKyAgICAxMTcsIDE4LCAyNDQsIDExNiwgMTgsIDI0NCwgMTE1LCAxOCwgMjQ0LCAxMTQsIDE4LCAyNDQsIDExMywgMTgsIDI0NCwgCisgICAgMTEyLCAxOCwgMjQ0LCAxMTEsIDE4LCAyNDQsIDExMCwgMTgsIDI0NCwgMTA5LCAxOCwgMjQ0LCAxMDgsIDE4LCAyNDQsIAorICAgIDEwNywgMTgsIDI0NCwgMTA2LCAxOCwgMjQ0LCAxMDUsIDE4LCAyNDQsIDEwNCwgMTgsIDI0NCwgMTAzLCAxOCwgMjQ0LCAKKyAgICAxMDIsIDE4LCAyNDQsIDEwMSwgMTgsIDI0NCwgMTAwLCAxOCwgMjQ0LCA5OSwgMTgsIDI0NCwgOTgsIDE4LCAyNDQsIDk3LCAKKyAgICAxOCwgMjQ0LCA5NiwgMTgsIDI0NCwgOTUsIDE4LCAyNDQsIDk0LCAxOCwgMjQ0LCA5MywgMTgsIDI0NCwgOTIsIDE4LCAyNDQsIAorICAgIDkxLCAxOCwgMjQ0LCA5MCwgMTgsIDI0NCwgODksIDE4LCAyNDQsIDg4LCAxOCwgMjQ0LCA4NywgMTgsIDI0NCwgODYsIDE4LCAKKyAgICAyNDQsIDg1LCAxOCwgMjQ0LCA4NCwgMTgsIDI0NCwgODMsIDE4LCAyNDQsIDgyLCAxOCwgMjQ0LCA4MSwgMTgsIDI0NCwgODAsIAorICAgIDE4LCAyNDQsIDc5LCAxOCwgMjQ0LCA3OCwgMTgsIDI0NCwgNzcsIDE4LCAyNDQsIDc2LCAxOCwgMjQ0LCA3NSwgMTgsIDI0NCwgCisgICAgNzQsIDE4LCAyNDQsIDczLCAxOCwgMjQ0LCA3MiwgMTgsIDI0NCwgNzEsIDE4LCAyNDQsIDcwLCAxOCwgMjQ0LCA2OSwgMTgsIAorICAgIDI0NCwgNjgsIDE4LCAyNDQsIDY3LCAxOCwgMjQ0LCA2NiwgMTgsIDI0NCwgNjUsIDE4LCAyNDQsIDY0LCAxOCwgMjQ0LCA2MywgCisgICAgMTgsIDI0NCwgNjIsIDE4LCAyNDQsIDYxLCAxOCwgMjQ0LCA2MCwgMTgsIDI0NCwgNTksIDE4LCAyNDQsIDU4LCAxOCwgMjQ0LCAKKyAgICA1NywgMTgsIDI0NCwgNTYsIDE4LCAyNDQsIDU1LCAxOCwgMjQ0LCA1NCwgMTgsIDI0NCwgNTMsIDE4LCAyNDQsIDUyLCAxOCwgCisgICAgMjQ0LCA1MSwgMTgsIDI0NCwgNTAsIDE4LCAyNDQsIDQ5LCAxOCwgMjQ0LCA0OCwgMTgsIDI0NCwgNDcsIDE4LCAyNDQsIDQ2LCAKKyAgICAxOCwgMjQ0LCA0NSwgMTgsIDI0NCwgNDQsIDE4LCAyNDQsIDQzLCAxOCwgMjQ0LCA0MiwgMTgsIDI0NCwgNDEsIDE4LCAyNDQsIAorICAgIDQwLCAxOCwgMjQ0LCAzOSwgMTgsIDI0NCwgMzgsIDE4LCAyNDQsIDM3LCAxOCwgMjQ0LCAzNiwgMTgsIDI0NCwgMzUsIDE4LCAKKyAgICAyNDQsIDM0LCAxOCwgMjQ0LCAzMywgMTgsIDI0NCwgMzIsIDE4LCAyNDQsIDMxLCAxOCwgMjQ0LCAzMCwgMTgsIDI0NCwgMjksIAorICAgIDE4LCAyNDQsIDI4LCAxOCwgMjQ0LCAyNywgMTgsIDI0NCwgMjYsIDE4LCAyNDQsIDI1LCAxOCwgMjQ0LCAyNCwgMTgsIDI0NCwgCisgICAgMjMsIDE4LCAyNDQsIDIyLCAxOCwgMjQ0LCAyMSwgMTgsIDI0NCwgMjAsIDE4LCAyNDQsIDE5LCAxOCwgMjQ0LCAxOCwgMTgsIAorICAgIDI0NCwgMTcsIDE4LCAyNDQsIDE2LCAxOCwgMjQ0LCAxNSwgMTgsIDI0NCwgMTQsIDE4LCAyNDQsIDEzLCAxOCwgMjQ0LCAxMiwgCisgICAgMTgsIDI0NCwgMTEsIDE4LCAyNDQsIDEwLCAxOCwgMjQ0LCA5LCAxOCwgMjQ0LCA4LCAxOCwgMjQ0LCA3LCAxOCwgMjQ0LCA2LCAKKyAgICAxOCwgMjQ0LCA1LCAxOCwgMjQ0LCA0LCAxOCwgMjQ0LCAzLCAxOCwgMjQ0LCAyLCAxOCwgMjQ0LCAxLCAxOCwgMjQ0LCAwLCAKKyAgICAxOCwgMjQzLCAyNTUsIDE4LCAyNDMsIDI1NCwgMTgsIDI0MywgMjUzLCAxOCwgMjQzLCAyNTIsIDE4LCAyNDMsIDI1MSwgMTgsIAorICAgIDI0MywgMjUwLCAxOCwgMjQzLCAyNDksIDE4LCAyNDMsIDI0OCwgMTgsIDI0MywgMjQ3LCAxOCwgMjQzLCAyNDYsIDE4LCAKKyAgICAyNDMsIDI0NSwgMTgsIDI0MywgMjQ0LCAxOCwgMjQzLCAyNDMsIDE4LCAyNDMsIDI0MiwgMTgsIDI0MywgMjQxLCAxOCwgCisgICAgMjQzLCAyNDAsIDE4LCAyNDMsIDIzOSwgMTgsIDI0MywgMjM4LCAxOCwgMjQzLCAyMzcsIDE4LCAyNDMsIDIzNiwgMTgsIAorICAgIDI0MywgMjM1LCAxOCwgMjQzLCAyMzQsIDE4LCAyNDMsIDIzMywgMTgsIDI0MywgMjMyLCAxOCwgMjQzLCAyMzEsIDE4LCAKKyAgICAyNDMsIDIzMCwgMTgsIDI0MywgMjI5LCAxOCwgMjQzLCAyMjgsIDE4LCAyNDMsIDIyNywgMTgsIDI0MywgMjI2LCAxOCwgCisgICAgMjQzLCAyMjUsIDE4LCAyNDMsIDIyNCwgMTgsIDI0MywgMjIzLCAxOCwgMjQzLCAyMjIsIDE4LCAyNDMsIDIyMSwgMTgsIAorICAgIDI0MywgMjIwLCAxOCwgMjQzLCAyMTksIDE4LCAyNDMsIDIxOCwgMTgsIDI0MywgMjE3LCAxOCwgMjQzLCAyMTYsIDE4LCAKKyAgICAyNDMsIDIxNSwgMTgsIDI0MywgMjE0LCAxOCwgMjQzLCAyMTMsIDE4LCAyNDMsIDIxMiwgMTgsIDI0MywgMjExLCAxOCwgCisgICAgMjQzLCAyMTAsIDE4LCAyNDMsIDIwOSwgMTgsIDI0MywgMjA4LCAxOCwgMjQzLCAyMDcsIDE4LCAyNDMsIDIwNiwgMTgsIAorICAgIDI0MywgMjA1LCAxOCwgMjQzLCAyMDQsIDE4LCAyNDMsIDIwMywgMTgsIDI0MywgMjAyLCAxOCwgMjQzLCAyMDEsIDE4LCAKKyAgICAyNDMsIDIwMCwgMTgsIDI0MywgMTk5LCAxOCwgMjQzLCAxOTgsIDE4LCAyNDMsIDE5NywgMTgsIDI0MywgMTk2LCAxOCwgCisgICAgMjQzLCAxOTUsIDE4LCAyNDMsIDE5NCwgMTgsIDI0MywgMTkzLCAxOCwgMjQzLCAxOTIsIDE4LCAyNDMsIDE5MSwgMTgsIAorICAgIDI0MywgMTkwLCAxOCwgMjQzLCAxODksIDE4LCAyNDMsIDE4OCwgMTgsIDI0MywgMTg3LCAxOCwgMjQzLCAxODYsIDE4LCAKKyAgICAyNDMsIDE4NSwgMTgsIDI0MywgMTg0LCAxOCwgMjQzLCAxODMsIDE4LCAyNDMsIDE4MiwgMTgsIDI0MywgMTgxLCAxOCwgCisgICAgMjQzLCAxODAsIDE4LCAyNDMsIDE3OSwgMTgsIDI0MywgMTc4LCAxOCwgMjQzLCAxNzcsIDE4LCAyNDMsIDE3NiwgMTgsIAorICAgIDI0MywgMTc1LCAxOCwgMjQzLCAxNzQsIDE4LCAyNDMsIDE3MywgMTgsIDI0MywgMTcyLCAxOCwgMjQzLCAxNzEsIDE4LCAKKyAgICAyNDMsIDE3MCwgMTgsIDI0MywgMTY5LCAxOCwgMjQzLCAxNjgsIDE4LCAyNDMsIDE2NywgMTgsIDI0MywgMTY2LCAxOCwgCisgICAgMjQzLCAxNjUsIDE4LCAyNDMsIDE2NCwgMTgsIDI0MywgMTYzLCAxOCwgMjQzLCAxNjIsIDE4LCAyNDMsIDE2MSwgMTgsIAorICAgIDI0MywgMTYwLCAxOCwgMjQzLCAxNTksIDE4LCAyNDMsIDE1OCwgMTgsIDI0MywgMTU3LCAxOCwgMjQzLCAxNTYsIDE4LCAKKyAgICAyNDMsIDE1NSwgMTgsIDI0MywgMTU0LCAxOCwgMjQzLCAxNTMsIDE4LCAyNDMsIDE1MiwgMTgsIDI0MywgMTUxLCAxOCwgCisgICAgMjQzLCAxNTAsIDE4LCAyNDMsIDE0OSwgMTgsIDI0MywgMTQ4LCAxOCwgMjQzLCAxNDcsIDE4LCAyNDMsIDE0NiwgMTgsIAorICAgIDI0MywgMTQ1LCAxOCwgMjQzLCAxNDQsIDE4LCAyNDMsIDE0MywgMTgsIDI0MywgMTQyLCAxOCwgMjQzLCAxNDEsIDE4LCAKKyAgICAyNDMsIDE0MCwgMTgsIDI0MywgMTM5LCAxOCwgMjQzLCAxMzgsIDE4LCAyNDMsIDEzNywgMTgsIDI0MywgMTM2LCAxOCwgCisgICAgMjQzLCAxMzUsIDE4LCAyNDMsIDEzNCwgMTgsIDI0MywgMTMzLCAxOCwgMjQzLCAxMzIsIDE4LCAyNDMsIDEzMSwgMTgsIAorICAgIDI0MywgMTMwLCAxOCwgMjQzLCAxMjksIDE4LCAyNDMsIDEyOCwgMTgsIDI0MywgMTI3LCAxOCwgMjQzLCAxMjYsIDE4LCAKKyAgICAyNDMsIDEyNSwgMTgsIDI0MywgMTI0LCAxOCwgMjQzLCAxMjMsIDE4LCAyNDMsIDEyMiwgMTgsIDI0MywgMTIxLCAxOCwgCisgICAgMjQzLCAxMjAsIDE4LCAyNDMsIDExOSwgMTgsIDI0MywgMTE4LCAxOCwgMjQzLCAxMTcsIDE4LCAyNDMsIDExNiwgMTgsIAorICAgIDI0MywgMTE1LCAxOCwgMjQzLCAxMTQsIDE4LCAyNDMsIDExMywgMTgsIDI0MywgMTEyLCAxOCwgMjQzLCAxMTEsIDE4LCAKKyAgICAyNDMsIDExMCwgMTgsIDI0MywgMTA5LCAxOCwgMjQzLCAxMDgsIDE4LCAyNDMsIDEwNywgMTgsIDI0MywgMTA2LCAxOCwgCisgICAgMjQzLCAxMDUsIDE4LCAyNDMsIDEwNCwgMTgsIDI0MywgMTAzLCAxOCwgMjQzLCAxMDIsIDE4LCAyNDMsIDEwMSwgMTgsIAorICAgIDI0MywgMTAwLCAxOCwgMjQzLCA5OSwgMTgsIDI0MywgOTgsIDE4LCAyNDMsIDk3LCAxOCwgMjQzLCA5NiwgMTgsIDI0MywgCisgICAgOTUsIDE4LCAyNDMsIDk0LCAxOCwgMjQzLCA5MywgMTgsIDI0MywgOTIsIDE4LCAyNDMsIDkxLCAxOCwgMjQzLCA5MCwgMTgsIAorICAgIDI0MywgODksIDE4LCAyNDMsIDg4LCAxOCwgMjQzLCA4NywgMTgsIDI0MywgODYsIDE4LCAyNDMsIDg1LCAxOCwgMjQzLCA4NCwgCisgICAgMTgsIDI0MywgODMsIDE4LCAyNDMsIDgyLCAxOCwgMjQzLCA4MSwgMTgsIDI0MywgODAsIDE4LCAyNDMsIDc5LCAxOCwgMjQzLCAKKyAgICA3OCwgMTgsIDI0MywgNzcsIDE4LCAyNDMsIDc2LCAxOCwgMjQzLCA3NSwgNjksIDEsIDI1MCwgMjM0LCA3MiwgMTc3LCAxLCAKKyAgICAyNTAsIDIzNCwgMjAwLCA1MSwgMTA0LCAxLCAyMzQsIDI0NywgMTA0LCAxLCAyMDAsIDE5NSwgMTA0LCAxLCAyMTYsIDIyNiwgCisgICAgMTA0LCAxLCAyMDcsIDgzLCAxMDQsIDEsIDIzOCwgNSwgMTA0LCAxLCAyMjcsIDExOCwgMTA0LCAxLCAxNTYsIDEwNCwgMSwgCisgICAgMjUwLCAxMDMsIDEwNCwgMSwgMjQyLCAxNTMsIDEwNCwgMSwgMjAzLCAxNjgsIDEwNCwgMSwgMjM2LCAxNTYsIDEwNCwgMSwgCisgICAgMTQ2LCAxMDQsIDEsIDIxNiwgMjI3LCAyMjAsIDIxNCwgMTA0LCAxLCAyNDIsIDE1NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjM4LCAKKyAgICA2LCAyMjAsIDIxNCwgMTA0LCAxLCAyMjcsIDExOSwgMjIzLCAyNDMsIDEwNCwgMSwgMjE0LCAzMywgMjEyLCAxMjIsIDEwNCwgCisgICAgMSwgMjA2LCAxMjQsIDEwNCwgMSwgMjA5LCA2MiwgMjQxLCAxMDEsIDEwNCwgMSwgMjQxLCAxMDEsIDEwNCwgMSwgMjI2LCAKKyAgICAxMTAsIDEwNCwgMSwgMjA5LCA2MiwgMjI3LCAyNTEsIDEwNCwgMSwgMjM0LCA0MCwgMTA0LCAxLCAyMjQsIDIyNCwgMTA0LCAKKyAgICAxLCAyMTMsIDk0LCAxMDQsIDEsIDIyMywgMjQzLCAxMDQsIDEsIDIyMCwgMjE0LCAxMDQsIDEsIDIyNywgMjUxLCAxMDQsIDEsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIyMywgMjQ0LCAyMjAsIDIxNCwgMTA0LCAxLCAyMjAsIDIxNSwgMjIzLCAyNDMsIDEwNCwgMSwgCisgICAgMjI3LCAyNTIsIDIyMywgMjQzLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDI1MSwgMTA0LCAxLCAyMjMsIDI0NCwgMywgMjQwLCAKKyAgICAxODIsIDEwNCwgMSwgMjIwLCAyMTUsIDMsIDI0MCwgMTgyLCAxMDQsIDEsIDIyNywgMjUyLCAzLCAyNDAsIDE4MiwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMywgMTkwLCAyMjgsIDc0LCAyNiwgNTYsIDEwNCwgMSwgMjEyLCAxMjMsIDMsIDI0MCwgMTgyLCAxMDQsIAorICAgIDEsIDIxMiwgMTIzLCAzLCA3MywgNTcsIDEwNCwgMSwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIDEsIDIyMCwgMjE1LCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMjcsIDI1MiwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIxMiwgMTIyLCAxMDQsIDEsIAorICAgIDIyMywgMjQ0LCAyMjAsIDIxNSwgMjEyLCAxMjIsIDEwNCwgMSwgMjIwLCAyMTUsIDIyMywgMjQ0LCAyMTIsIDEyMiwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDI1MiwgMjEyLCAxMjIsIAorICAgIDEwNCwgMSwgMjI3LCAyNTIsIDIxMiwgMTIzLCAzLCAyNDAsIDE4MiwgMTA0LCAxLCAyMjcsIDI1MiwgMjIwLCAyMTQsIDEwNCwgCisgICAgMSwgMjI3LCAyNTIsIDIyMCwgMjE1LCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjA3LCA4MywgMTA0LCAxLCAyMTIsIAorICAgIDEyMywgMjA3LCA4NCwgMTQ2LCAxMDQsIDEsIDIxMiwgMTIzLCAyMTYsIDIyNiwgMTA0LCAxLCAyMTIsIDEyMywgMjE2LCAKKyAgICAyMjcsIDE0NiwgMTA0LCAxLCAyMDcsIDg0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMDcsIDg0LCAyMTQsIDMzLCAyMTIsIDEyMiwgCisgICAgMTA0LCAxLCAyMDEsIDE0NywgMTA0LCAxLCAyMDEsIDQxLCAxMDQsIDEsIDIwMSwgMTQ4LCAxNDYsIDEwNCwgMSwgMjEyLCAKKyAgICAxMjMsIDIyMCwgMjE0LCAxMDQsIDEsIDIxMiwgMTIzLCAyMjMsIDI0MywgMTA0LCAxLCAyMjcsIDExOSwgMjE0LCAzMywgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjM2LCAxNTcsIDIxNCwgMzMsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIAorICAgIDExOCwgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAxMTksIDE0NiwgMTA0LCAxLCA2MiwgMTA0LCAxLCAyMDksIDYyLCAyMTYsIAorICAgIDIzOCwgMTA0LCAxLCAyMTcsIDE0NiwgMTA0LCAxLCA3NCwgMTA0LCAxLCAyNTEsIDI5LCAxMDQsIDEsIDcwLCAxMDQsIDEsIAorICAgIDcyLCAxMDQsIDEsIDIyOCwgMTc4LCAxMDQsIDEsIDIwOSwgMjUwLCA3MCwgMTA0LCAxLCAyMDQsIDIzLCAxMDQsIDEsIDIzOCwgCisgICAgMjU1LCAxMDQsIDEsIDIwOSwgNjIsIDIzOCwgMjQxLCAxMDQsIDEsIDIxMiwgMjM5LCA3MCwgMTA0LCAxLCAyMDksIDYyLCAKKyAgICAyMzgsIDI1NSwgMTA0LCAxLCAxNjgsIDcwLCAxMDQsIDEsIDIwMCwgNTEsIDEwNCwgMSwgNjYsIDEwNCwgMSwgMjM4LCA2OSwgCisgICAgMTA0LCAxLCAyMDAsIDE0NiwgMTA0LCAxLCAxMDgsIDIyMCwgMjE0LCAxMDQsIDEsIDE2OCwgNjYsIDEwNCwgMSwgMjEyLCAKKyAgICAyMzksIDY2LCAxMDQsIDEsIDIwNCwgMjUsIDEwNCwgMSwgMjA5LCA2MiwgNjYsIDEwNCwgMSwgMjE3LCA2MCwgMTA0LCAxLCAKKyAgICAyMTYsIDIzOCwgMTA0LCAxLCAyMTcsIDMsIDEwNCwgMSwgMjAxLCAxMTQsIDEwNCwgMSwgMjAxLCAwLCAxMDQsIDEsIDIwMSwgCisgICAgMzEsIDEwNCwgMSwgMjAxLCA1NSwgMTA0LCAxLCAyMDAsIDIzMCwgMTA0LCAxLCAyMjAsIDEyMywgNjYsIDEwNCwgMSwgMjIwLCAKKyAgICAxMjMsIDc0LCAxMDQsIDEsIDIyMCwgMTIzLCA3MCwgMTA0LCAxLCAyMjAsIDEyMywgNjIsIDEwNCwgMSwgMjE2LCAxNiwgCisgICAgMjUxLCA4NSwgMTA0LCAxLCAyMTYsIDE2LCAyNTEsIDEwMSwgMTA0LCAxLCAyMDksIDYyLCAyMzgsIDE3OSwgMTA0LCAxLCAKKyAgICAyMDksIDYyLCAyNTEsIDg1LCAxMDQsIDEsIDIwOSwgNjIsIDIxNywgNzgsIDEwNCwgMSwgMTA5LCAyMjMsIDI0MywgMTA0LCAKKyAgICAyNTEsIDIwMCwgNDksIDIzMywgMTc3LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjIxLCAyMDYsIDIzMywgMTc3LCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgNTEsIDIzMywgMTc3LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMTI4LCA4MywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDIyMSwgMjA2LCA4MywgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDEyMiwgODMsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMjUsIDE5LCAKKyAgICAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIwNiwgMjQwLCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgCisgICAgMjA3LCA2LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMTk3LCAxMTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMzMsIAorICAgIDE5LCAxMTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMDYsIDI0MSwgMTE3LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDE2OSwgCisgICAgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMDYsIDEsIDE2OSwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMzUsIDczLCAxMDQsIDI1MSwgCisgICAgMjAwLCAxMjIsIDE2OCwgMjM1LCA3MywgMTA0LCAyNTEsIDIwMCwgMTIyLCAyNDAsIDE4MiwgMTA0LCAyNTEsIDIwMCwgMTIyLCAKKyAgICAyNDYsIDE1NSwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMjQsIDE3NiwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMDEsIDc3LCAxMDQsIAorICAgIDI1MSwgMjAwLCAxMjIsIDIwMywgNDIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwNiwgCisgICAgMSwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIzNSwgNzMsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMTY4LCAyMzUsIDczLCAKKyAgICAxMDQsIDI1MSwgMjAwLCAxMjgsIDI0MCwgMTgyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDI0NiwgMTU1LCAxMDQsIDI1MSwgCisgICAgMjAwLCAxMjgsIDIyNCwgMTc2LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwMSwgNzcsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjAzLCAKKyAgICA0MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCA0OCwgMTA0LCAyLCAxNjMsIDMsIDI0MiwgMjM0LCAxMDQsIDIwNiwgODIsIDEsIAorICAgIDIxMSwgMTc1LCAxMDQsIDUzLCA4MSwgMTA0LCAyMTQsIDIxMiwgMjQ2LCAyMjAsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDksIAorICAgIDIzNywgMjM2LCAyNDEsIDEsIDIxNiwgMjQ0LCAyMDksIDIzNywgMjM2LCAyNDEsIDI0MywgNDAsIDIxNiwgMjQ0LCAyMDksIAorICAgIDIzNywgMjM2LCAyNDEsIDEyNywgMjA4LCA5MCwgMjA5LCAyMzcsIDIzNiwgMjQxLCAxMTUsIDIwOCwgOTAsIDYxLCAzMiwgCisgICAgMTYsIDIxNCwgMjI4LCA2MSwgMzIsIDE2LCAyNDEsIDI0NiwgNjEsIDMyLCAxNiwgMjE2LCAyMCwgNjEsIDMyLCAxNiwgMjE2LCAKKyAgICAyMzQsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAyMTYsIDIzNCwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjAzLCA3NywgMjM4LCAKKyAgICAyMTMsIDYxLCAzMiwgMTYsIDIwMywgNzcsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIyNywgMjgsIDYxLCAzMiwgMTYsIDIwNywgCisgICAgMTAwLCA2MSwgMzIsIDE2LCAyMTYsIDEyMiwgNjEsIDMyLCAxNiwgMTk5LCAyMTcsIDYxLCAzMiwgMTYsIDE5OSwgMjE4LCAKKyAgICAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMjYsIDMyLCA2MSwgMzIsIDE2LCAyNTEsIDI0LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgCisgICAgMjM4LCAzNywgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIDIwNiwgMTc3LCA2MSwgMzIsIDE2LCAyMjYsIDIzOSwgNjEsIDMyLCAKKyAgICAxNiwgMjUxLCAxNCwgNjEsIDMyLCAxNiwgMjUxLCAxNSwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjA3LCAxMDcsIDYxLCAzMiwgCisgICAgMTYsIDIwNiwgNjQsIDYxLCAzMiwgMTYsIDIxNywgODksIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMzUsIDEwMCwgMjUwLCAKKyAgICAyMzIsIDYxLCAzMiwgMTYsIDIxNCwgMjI3LCA2MSwgMzIsIDE2LCAyNDcsIDI4LCA2MSwgMzIsIDE2LCAyMDMsIDY2LCA2MSwgCisgICAgMzIsIDE2LCAyMjgsIDE3LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCAyNDEsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDI0MCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIxMSwgMjM2LCA2MSwgMzIsIDE2LCAyMTYsIDExMiwgNjEsIDMyLCAKKyAgICAxNiwgMjA4LCA5OSwgMjUxLCAxNywgNjEsIDMyLCAxNiwgMjE2LCAyMzMsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDMsIAorICAgIDc2LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjUxLCAxOCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDI1MSwgMTIsIDYxLCAzMiwgCisgICAgMTYsIDIyNiwgMTAwLCA2MSwgMzIsIDE2LCAyMTMsIDEwMSwgNjEsIDMyLCAxNiwgMjE1LCAyMDIsIDI1MCwgMjMyLCA2MSwgCisgICAgMzIsIDE2LCAyMDUsIDIzMCwgNjEsIDMyLCAxNiwgMjUxLCA4MiwgNjEsIDMyLCAxNiwgMjExLCAxNzgsIDYxLCAzMiwgMTYsIAorICAgIDIwNywgMTExLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjA3LCAxMTEsIDIyMiwgMjEsIDIwOCwgOTcsIDYxLCAzMiwgMTYsIAorICAgIDIxNiwgMjI4LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjA2LCAxMDAsIDYxLCAzMiwgMTYsIDIyNSwgNiwgNjEsIDMyLCAxNiwgCisgICAgMjM5LCA5NiwgNjEsIDMyLCAxNiwgMjA1LCAxMDAsIDYxLCAzMiwgMTYsIDIwNiwgMTQ4LCA2MSwgMzIsIDE2LCAyMjYsIDM1LCAKKyAgICA2MSwgMzIsIDE2LCAyNTEsIDI0LCAyMzgsIDM3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjUwLCAyMzIsIAorICAgIDYxLCAzMiwgMTYsIDIyOCwgMTMwLCA2MSwgMzIsIDE2LCAyMDUsIDY5LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI3LCAzMSwgCisgICAgMjA1LCA2OCwgNjEsIDMyLCAxNiwgMjE2LCA0OSwgNjEsIDMyLCAxNiwgMjE0LCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgNjksIAorICAgIDYxLCAzMiwgMTYsIDI0NiwgMjA0LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjEzLCAyMDksIDYxLCAzMiwgMTYsIDIxNiwgCisgICAgMTI1LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjE2LCAxMjMsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMzIsIDIyOSwgNjEsIAorICAgIDMyLCAxNiwgMjIwLCAxMzMsIDYxLCAzMiwgMTYsIDIxNSwgMjU0LCA2MSwgMzIsIDE2LCAyMjYsIDcwLCAyNTEsIDExOSwgCisgICAgNjEsIDMyLCAxNiwgMjA1LCA2OSwgMjUxLCAxMTksIDYxLCAzMiwgMTYsIDIwOCwgNzAsIDYxLCAzMiwgMTYsIDIzNSwgNjAsIAorICAgIDYxLCAzMiwgMTYsIDIyOCwgMTcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNywgODksIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIxNiwgMjM0LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTUsIDI1MywgNjEsIDMyLCAxNiwgMjI2LCA1NCwgNjEsIDMyLCAxNiwgCisgICAgMjE1LCAyNTIsIDYxLCAzMiwgMTYsIDIyNiwgMzQsIDYxLCAzMiwgMTYsIDIxNiwgNTAsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMjQwLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMjYsIDI0MSwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIAorICAgIDMyLCAxNiwgMTk5LCAyMTUsIDYxLCAzMiwgMTYsIDI1MSwgMTUsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMTYsIDIwNywgCisgICAgMTA4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAxOTksIDIxNiwgNjEsIDMyLCAxNiwgMjI2LCAzMywgNjEsIDMyLCAxNiwgMjM4LCAKKyAgICAyMDgsIDYxLCAzMiwgMTYsIDI0NywgMjksIDYxLCAzMiwgMTYsIDIyMSwgMTc3LCAyMjgsIDE2LCA2MSwgMzIsIDE2LCAyMDMsIAorICAgIDc3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTUsIDIwMiwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE0LCAyMzMsIDIyMCwgCisgICAgMjAsIDYxLCAzMiwgMTYsIDIxNywgODUsIDYxLCAzMiwgMTYsIDI1MSwgNDIsIDYxLCAzMiwgMTYsIDIyMywgMjU0LCA2MSwgCisgICAgMzIsIDE2LCAyMTYsIDEyMywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE2LCAxMjUsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIzOCwgNzUsIDIxNiwgMTI0LCA2MSwgMzIsIDE2LCAyMjUsIDE5NywgNjEsIDMyLCAxNiwgMjUxLCA0MywgNjEsIDMyLCAxNiwgCisgICAgMjA1LCA2OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM4LCAyMTEsIDYxLCAzMiwgMTYsIDIwNywgMTExLCAyMjAsIDIwLCAKKyAgICA2MSwgMzIsIDE2LCAyMDcsIDEwMSwgNjEsIDMyLCAxNiwgMjQ2LCAyMDQsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzOCwgCisgICAgMTMwLCA2MSwgMzIsIDE2LCAyMTEsIDE3OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjAwLCAxNjIsIDIyNiwgMTAwLCA2MSwgCisgICAgMzIsIDE2LCAyMDUsIDY2LCA2MSwgMzIsIDE2LCAyMTQsIDIzNCwgNjEsIDMyLCAxNiwgMjA1LCA3MCwgNjEsIDMyLCAxNiwgCisgICAgMjA1LCA2NywgNjEsIDMyLCAxNiwgMjE0LCAyMzEsIDYxLCAzMiwgMTYsIDIwNSwgNjUsIDYxLCAzMiwgMTYsIDIxNCwgMjMwLCAKKyAgICA2MSwgMzIsIDE2LCAyMzUsIDk5LCA2MSwgMzIsIDE2LCAyNTAsIDIyNCwgNjEsIDMyLCAxNiwgMjM4LCA3NSwgMjUwLCAyMjQsIAorICAgIDYxLCAzMiwgMTYsIDIxNiwgMjI4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMDYsIDk5LCAyMzgsIDg4LCA2MSwgMzIsIDE2LCAKKyAgICAyMDYsIDk5LCAyMzgsIDM2LCA2MSwgMzIsIDE2LCAyMDYsIDEwMSwgMjUxLCAxOSwgNjEsIDMyLCAxNiwgMjA2LCA5MywgCisgICAgMjI3LCA4MywgMjUxLCAxMSwgNjEsIDMyLCAxNiwgMjI3LCAzMCwgNjEsIDMyLCAxNiwgMjM4LCAxNjcsIDYxLCAzMiwgMTYsIAorICAgIDIwMCwgMTMsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDIwMCwgMTMsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIwOCwgOTgsIDYxLCAKKyAgICAzMiwgMTYsIDIyNiwgMTAxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyNDEsIDE1LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAzNiwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgMzYsIDI1MSwgMTE5LCA2MSwgMzIsIDE2LCAyMjYsIDM2LCAKKyAgICAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDE4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDUsIDgxLCA2MSwgMzIsIDE2LCAyMDYsIDEzOSwgNjEsIDMyLCAxNiwgMjI2LCA1OCwgCisgICAgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjM4LCAxNjAsIDI0NiwgMTk0LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMzksIDk3LCAKKyAgICAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjA1LCA4NCwgMjQ2LCAxOTUsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIAorICAgIDIwNiwgMTUwLCAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjI4LCAxMjUsIDI0NiwgMTk0LCA2MSwgMzIsIDE2LCAKKyAgICAyMzUsIDEwMCwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjM1LCAxMDAsIDIxNiwgMTEzLCAyNTAsIDIyMCwgNjEsIAorICAgIDMyLCAxNiwgMjM1LCAxMDAsIDIxNiwgMTEzLCAyNDEsIDEwNSwgNjEsIDMyLCAxNiwgMjQxLCAzOSwgNjEsIDMyLCAxNiwgCisgICAgMjQxLCA0MCwgMjE2LCAxMTMsIDI1MCwgMjIxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAyNDEsIDQwLCAyMTYsIDExMywgMjUwLCAKKyAgICAyMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDI0MSwgNDAsIDIxNiwgMTEzLCAyNDEsIDEwNSwgNjEsIDMyLCAxNiwgMjA1LCAKKyAgICA4OSwgNjEsIDMyLCAxNiwgMjUwLCAyMjUsIDYxLCAzMiwgMTYsIDIyOCwgMTMyLCA2MSwgMzIsIDE2LCAyNDEsIDYyLCA2MSwgCisgICAgMzIsIDE2LCAyNTEsIDE4NywgMjE1LCA4OSwgMjUwLCAyMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyNTAsIDIyMywgNjEsIAorICAgIDMyLCAxNiwgMjUxLCAxODcsIDI1MCwgMjI2LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjIyLCAxNSwgNjEsIDMyLCAxNiwgCisgICAgMjUxLCAxODcsIDIyMiwgMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMzUsIDEwMSwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIAorICAgIDIzNSwgOTgsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMTUsIDg5LCAyMzUsIDEwMSwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIAorICAgIDIxNCwgMjQwLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI1MSwgMTIxLCAyMTQsIDI0MCwgMjMyLCAyMjcsIAorICAgIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNDEsIDEwNCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNTEsIDEyMSwgCisgICAgMjQxLCAxMDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjA1LCA3NiwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIAorICAgIDIyMiwgMTQwLCAyMDUsIDkwLCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjA2LCAxNDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMjIsIDE0MCwgMjA2LCAxNDQsIDIyNSwgMTUsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjI1LCAxNSwgCisgICAgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMTUsIDEzMiwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyOCwgMjQsIAorICAgIDIwNiwgMTcwLCAyMzIsIDIyOCwgNjEsIDMyLCAxNiwgMjUxLCAxNiwgMjA2LCAxNzAsIDIzMiwgMjI4LCA2MSwgMzIsIDE2LCAKKyAgICAyMzcsIDE2NywgMjA2LCAxNDEsIDYxLCAzMiwgMTYsIDIzNywgMTY3LCAyMjEsIDk4LCA2MSwgMzIsIDE2LCAyMzcsIDE2NywgCisgICAgMjQxLCA0NSwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIwMywgNzAsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgCisgICAgMjE0LCAyMzksIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjE1LCAxMzIsIDIwNiwgMTQ0LCAyMzIsIDIyNywgCisgICAgNjEsIDMyLCAxNiwgMjM1LCA5NSwgMjIwLCAyMTUsIDI1MSwgMTksIDYxLCAzMiwgMTYsIDIzNSwgOTUsIDIyMCwgMjE1LCAKKyAgICAyNDEsIDEzLCA2MSwgMzIsIDE2LCAyMzgsIDE3NywgMjI3LCA4MywgMjM2LCAxOTEsIDIwMiwgMTc0LCA2MSwgMzIsIDE2LCAKKyAgICAyMjgsIDEzMSwgNjEsIDMyLCAxNiwgMjI4LCAxMjksIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNTAsIDIzMywgMjQxLCAxMDMsIAorICAgIDIzMiwgMjI2LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMTcyLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCAKKyAgICA2MCwgMjIwLCAxMzMsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjAsIDEyOCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIzNiwgCisgICAgMTkxLCAyNDEsIDYwLCAyNDEsIDc2LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCA4MiwgMjQxLCA1OSwgMjQxLCA3NiwgCisgICAgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDIyNywgOCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIAorICAgIDE5OSwgMTQsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAyMTksIDE1MSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgCisgICAgMjM2LCAxOTEsIDI0MSwgNjAsIDIxOSwgMTUxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIyLCAxODYsIAorICAgIDI0NiwgMTk2LCAyNDEsIDQ1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIyLCAxODYsIDI0NiwgMTk2LCAyMjEsIDk4LCA2MSwgCisgICAgMzIsIDE2LCAyMzcsIDExMywgMjA5LCA4MiwgMjQ2LCAxOTYsIDIwMywgNjksIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIAorICAgIDgyLCAyNDYsIDE5NiwgMjA3LCAxMTIsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjAsIDIzLCA2MSwgMzIsIDE2LCAyNDYsIAorICAgIDE5NywgMTk4LCAyMzgsIDYxLCAzMiwgMTYsIDI0NiwgMTk3LCAyMjYsIDk5LCA2MSwgMzIsIDE2LCAyNDYsIDE5NywgMjA4LCAKKyAgICAyMzUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMzMsIDE5LCAyMDAsIDEyLCAyMDYsIDE0NSwgNjEsIDMyLCAxNiwgMjM2LCAKKyAgICAxOTEsIDIzOCwgMTc4LCAyNTEsIDQ0LCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMDUsIDc3LCA2MSwgMzIsIDE2LCAyNDEsIAorICAgIDUzLCAyMDUsIDc3LCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyMDYsIDE0NSwgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjUxLCAyMSwgCisgICAgMjM5LCA5NywgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIyMSwgOTYsIDIwNiwgMTQ5LCAyNDAsIDIwMywgNjEsIAorICAgIDMyLCAxNiwgMjQxLCA1MywgMjQxLCAzNiwgMjM4LCA0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIwNSwgCisgICAgODcsIDIxNywgOTUsIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyNTEsIDIxLCAyMzksIDk3LCAyNDAsIDIwMywgCisgICAgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjIxLCA5NiwgMjA2LCAxNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAKKyAgICAyNDEsIDM2LCAyMzgsIDQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjA1LCA4NywgMjE3LCA5NSwgMjQwLCAKKyAgICAyMDMsIDYxLCAzMiwgMTYsIDIzNSwgMjU1LCAyNDEsIDUyLCA2MSwgMzIsIDE2LCAyMzUsIDI1NSwgMjAwLCAxMSwgNjEsIAorICAgIDMyLCAxNiwgMjQxLCA2MSwgMjUxLCAyMSwgMjIxLCAxNzgsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDI1MSwgMjEsIDIyMiwgCisgICAgNTUsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDIwNiwgOTEsIDYxLCAzMiwgCisgICAgMTYsIDIwOSwgMTQ5LCAyMDYsIDkxLCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjQwLCAyNTQsIDYxLCAzMiwgCisgICAgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyMDUsIDc4LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjA2LCAxMzcsIAorICAgIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NiwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAyNDAsIDI1NCwgCisgICAgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAyMDUsIDc4LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIAorICAgIDIwNiwgMTM3LCA2MSwgMzIsIDE2LCAyNDEsIDM3LCAyMzUsIDIzNiwgNjEsIDMyLCAxNiwgMjQxLCA0NCwgMjE3LCAzLCA2MSwgCisgICAgMzIsIDE2LCAyMDgsIDg2LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMTcyLCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjAyLCAKKyAgICAxNzQsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyMzYsIDg5LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjQxLCA3NiwgNjEsIAorICAgIDMyLCAxNiwgMjUwLCAyMTcsIDIyNywgOCwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDE5OSwgMTQsIDYxLCAzMiwgMTYsIDI1MCwgCisgICAgMjE3LCAyMTksIDE1MCwgNjEsIDMyLCAxNiwgMjI2LCAyNDAsIDIyMCwgMjEsIDIyMiwgMjUsIDYxLCAzMiwgMTYsIDIyNiwgCisgICAgMjQxLCAyMjAsIDIxLCAyMjIsIDI1LCA2MSwgMzIsIDE2LCAyMjYsIDI0MCwgMjIwLCAyMSwgMjI3LCAyNywgNjEsIDMyLCAKKyAgICAxNiwgMjI2LCAyNDEsIDIyMCwgMjEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDIyNiwgMTAxLCAyMjcsIDI3LCA2MSwgMzIsIAorICAgIDE2LCAyMzUsIDEwMCwgMjIwLCAyMSwgMjI3LCAyNywgMzIsIDE2LCAyMDksIDEzOSwgMjQ5LCA3MiwgMzIsIDE2LCA1MywgCisgICAgMjQ5LCA3MiwgMzIsIDE2LCA0NywgMjQ5LCA3MiwgMzIsIDE2LCAyMTMsIDEwNiwgNDcsIDI0OSwgNzIsIDMyLCAxNiwgMjQxLCAKKyAgICAyNDMsIDI0OSwgNzIsIDMyLCAxNiwgMjA5LCAyNTAsIDI0OSwgNzIsIDMyLCAxNiwgNDksIDIxMywgMTMzLCA1NCwgMzIsIAorICAgIDE2LCA1MSwgMjEzLCAxMzMsIDU0LCAzMiwgMTYsIDIxMywgMTMzLCAyNDAsIDE4MCwgMzIsIDE2LCAyNDIsIDMwLCAyMTEsIAorICAgIDE4MiwgMzIsIDE2LCAyNDIsIDU5LCAyNDcsIDE0MSwgMzIsIDE2LCAyMTEsIDE4MiwgMzIsIDE2LCAyNDYsIDg3LCAzMiwgCisgICAgMTYsIDIxMywgMTMxLCAyMzcsIDEwMSwgMzIsIDE2LCAyMTMsIDEzMSwgMjM3LCAxMDAsIDMyLCAxNiwgMjEzLCAxMzEsIAorICAgIDIzNywgOTksIDMyLCAxNiwgMjM3LCAxMjIsIDMyLCAxNiwgMjM3LCAxMjMsIDU3LCAzMiwgMTYsIDI0OCwgNTksIDgxLCAzMiwgCisgICAgMTYsIDI0NywgMTgwLCAzMiwgMTYsIDI0OCwgNzEsIDMyLCAxNiwgMTU5LCAzMiwgMTYsIDIxNywgNzMsIDIwOCwgMTE3LCAKKyAgICAzMiwgMTYsIDIwNCwgMTQwLCAyMDgsIDExNywgMzIsIDE2LCAyMDYsIDQyLCAyMDgsIDExNywgMzIsIDE2LCAyMzYsIDIyOCwgCisgICAgMjA4LCAxMTcsIDMyLCAxNiwgMjM3LCA2MCwgMjA4LCAxMTcsIDMyLCAxNiwgMjA5LCAxMDUsIDIwOCwgMTE3LCAzMiwgMTYsIAorICAgIDIwOSwgMTAzLCAyMzYsIDIwOCwgMzIsIDE2LCAyMzYsIDIyNiwgMjM2LCAyMDgsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgCisgICAgMTI0LCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIDEyNSwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAKKyAgICAxMjUsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyNDcsIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIAorICAgIDEyNCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgMTI1LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAKKyAgICAxMjUsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyMzksIDE0MywgMjQ2LCAxMjMsIDMyLCAxNiwgMjM5LCAxNDMsIDI0NiwgCisgICAgMTIyLCAzMiwgMTYsIDIyMSwgMjEsIDIyMiwgNzUsIDIxMywgMTE3LCAzMiwgMTYsIDUzLCAyMTAsIDc4LCAzMiwgMTYsIDUzLCAKKyAgICAyMzcsIDQ0LCAzMiwgMTYsIDIzNywgNDUsIDIwMywgMjI4LCAzMiwgMTYsIDIzNywgNDUsIDIzOSwgMTY3LCAzMiwgMTYsIAorICAgIDIyMCwgMTE3LCAyMDMsIDIyOCwgMzIsIDE2LCAyMjAsIDExNywgMjM5LCAxNjcsIDMyLCAxNiwgMjEwLCA3OSwgMjAzLCAKKyAgICAyMjgsIDMyLCAxNiwgMjEwLCA3OSwgMjM5LCAxNjcsIDMyLCAxNiwgMjE0LCA4OCwgMTUwLCAyMTAsIDc4LCAzMiwgMTYsIAorICAgIDIxNCwgODgsIDE1MCwgMjM3LCA0NCwgMzIsIDE2LCAyNDYsIDY3LCAyMDUsIDIzNCwgMzIsIDE2LCAyNDIsIDE4MCwgMjA1LCAKKyAgICAyMzQsIDMyLCAxNiwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMTcsIDUsIDI0OSwgNTcsIDMyLCAxNiwgMjE0LCA2OSwgCisgICAgMjUxLCAxMTAsIDMyLCAxNiwgMjE0LCA2OSwgMjQ5LCA1NywgMzIsIDE2LCAyMjEsIDI0LCAyMTMsIDExNywgMzIsIDE2LCAKKyAgICAyMDEsIDMyLCAyMTMsIDExNywgMzIsIDE2LCAxNjcsIDIxMywgMTE3LCAzMiwgMTYsIDIxNCwgODgsIDIxMywgMTE3LCAzMiwgCisgICAgMTYsIDIzOCwgMjI4LCAyMTMsIDExNywgMzIsIDE2LCAyMDksIDk5LCAyMTMsIDExNywgMzIsIDE2LCAyMDYsIDY1LCAyMTMsIAorICAgIDExNywgMzIsIDE2LCAyMDksIDkxLCAyMTMsIDExNywgMzIsIDE2LCAxMTIsIDIzMywgODMsIDIwNCwgMTU3LCAyMTMsIDExNywgCisgICAgMzIsIDE2LCAyMDAsIDE5NiwgMjE4LCAyMDUsIDMyLCAxNiwgOTMsIDIxOCwgMjA1LCAzMiwgMTYsIDI0NiwgMTU2LCAyMDAsIAorICAgIDE5NiwgMjE4LCAyMDUsIDMyLCAxNiwgNTIsIDIxOCwgMjA2LCAyMDEsIDM0LCAzMiwgMTYsIDUyLCAyMTgsIDIwNiwgMjQ4LCAKKyAgICAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgCisgICAgMTE1LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgNDksIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgCisgICAgMjE4LCAyMDYsIDQ5LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgNTEsIDIwMSwgMzQsIDMyLCAxNiwgCisgICAgMjA1LCA5OSwgMjE4LCAyMDYsIDUxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTI3LCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMjcsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIAorICAgIDUxLCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIDUxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMjEsIAorICAgIDgyLCAyMTgsIDIwNiwgMjAxLCAzNCwgMzIsIDE2LCAyMjEsIDgyLCAyMTgsIDIwNiwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCAKKyAgICA5NiwgMjE4LCAyMDYsIDEyNywgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk2LCAyMTgsIDIwNiwgMTI3LCAyNDgsIDE0NCwgMzIsIAorICAgIDE2LCAyMTYsIDExNiwgMjE4LCAyMDUsIDMyLCAxNiwgMjAyLCAxODYsIDIxOCwgMjA1LCAzMiwgMTYsIDIxOCwgMjA2LCAKKyAgICAyNDgsIDE0NCwgMzIsIDE2LCAyMTgsIDk4LCAyMTgsIDIwNSwgMzIsIDE2LCAyNDYsIDk0LCAyMTgsIDIwNiwgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyNDYsIDk0LCAyMTgsIDIwNiwgMjQ4LCAxNDQsIDMyLCAxNiwgMjQ4LCA1NywgMzIsIDE2LCAyMDEsIDMyLCAKKyAgICAyMTgsIDIwOSwgMzIsIDE2LCAxNjcsIDIxOCwgMjA5LCAzMiwgMTYsIDIxNCwgODgsIDIxOCwgMjA5LCAzMiwgMTYsIDIzOCwgCisgICAgMjI4LCAyMTgsIDIwOSwgMzIsIDE2LCAyMDksIDk5LCAyMTgsIDIwOSwgMzIsIDE2LCAyMDYsIDY1LCAyMTgsIDIwOSwgMzIsIAorICAgIDE2LCAyMDksIDkxLCAyMTgsIDIwOSwgMzIsIDE2LCAxMTIsIDIzMywgODMsIDIwNCwgMTU3LCAyMTgsIDIwOSwgMzIsIDE2LCAKKyAgICAzOCwgMjA4LCA5MiwgMzIsIDE2LCAzOCwgMjA4LCAyMDAsIDIwOCwgOTIsIDMyLCAxNiwgMzgsIDIwNSwgMTA3LCAzMiwgMTYsIAorICAgIDM4LCAyMDUsIDEwNiwgMzIsIDE2LCAzOCwgMjA1LCAxMDUsIDMyLCAxNiwgMjM3LCA4NCwgMjA1LCAxMDcsIDMyLCAxNiwgCisgICAgMjM3LCA4NCwgMjA1LCAxMDYsIDMyLCAxNiwgMjM3LCA4NCwgMjA1LCAxMDUsIDMyLCAxNiwgMzgsIDI1MCwgMTM2LCAyNDAsIAorICAgIDE4MiwgMzIsIDE2LCAzOCwgMjM3LCA1MiwgMzIsIDE2LCAzOCwgMjM3LCA1MSwgMzIsIDE2LCAzOCwgMjM3LCA1MCwgMzIsIAorICAgIDE2LCAzOCwgMjM3LCA0OSwgMzIsIDE2LCAzOCwgMjM3LCA0OCwgMzIsIDE2LCAyNDgsIDI0NCwgMjQ5LCA1LCAzMiwgMTYsIAorICAgIDIzOCwgMTcxLCAyNDksIDUsIDMyLCAxNiwgMjQ4LCAyNDQsIDIwNiwgNywgMzIsIDE2LCAyMzgsIDE3MSwgMjA2LCA3LCAzMiwgCisgICAgMTYsIDI0OCwgMjQ0LCAyMDksIDU0LCAzMiwgMTYsIDIzOCwgMTcxLCAyMDksIDU0LCAzMiwgMTYsIDI0OCwgMjQ0LCAyMTUsIAorICAgIDIxMSwgMzIsIDE2LCAyMzgsIDE3MSwgMjE1LCAyMTEsIDMyLCAxNiwgMzgsIDI1MSwgMjUxLCAzMiwgMTYsIDM4LCAyMDgsIAorICAgIDEyMCwgMzIsIDE2LCAzOCwgMjA2LCAxNTQsIDMyLCAxNiwgMzgsIDIwOCwgMTIxLCAzMiwgMTYsIDM4LCAyMjIsIDE1NCwgCisgICAgMzIsIDE2LCAzOCwgMjIyLCAxNTMsIDMyLCAxNiwgMzgsIDI1MSwgMjUwLCAzMiwgMTYsIDM4LCAyMjQsIDYxLCAzMiwgMTYsIAorICAgIDI1MCwgMjA4LCAyMDMsIDIyOCwgMzIsIDE2LCAyNTAsIDIwOCwgMjM5LCAxNjcsIDMyLCAxNiwgMzgsIDI0MCwgMTk3LCAzMiwgCisgICAgMTYsIDM4LCAyMTMsIDIzLCAzMiwgMTYsIDM4LCAyMzcsIDMzLCAzMiwgMTYsIDM4LCAyMDksIDUwLCAzMiwgMTYsIDM4LCAKKyAgICAyNDgsIDIyMiwgMzIsIDE2LCAzOCwgNTMsIDIwNSwgMTYzLCAzMiwgMTYsIDM4LCAyMDUsIDgzLCAyMDUsIDE2MywgMzIsIAorICAgIDE2LCAyMTMsIDI4LCAzMiwgMTYsIDIwOCwgMTQsIDMyLCAxNiwgMTk5LCAxNTcsIDMyLCAxNiwgMjE1LCAyMDMsIDMyLCAxNiwgCisgICAgMjIyLCA2LCAzMiwgMTYsIDIzNiwgMjM4LCAzMiwgMTYsIDI0MiwgMjQ1LCAzMiwgMTYsIDI0MSwgMTYyLCAzMiwgMTYsIAorICAgIDIzNSwgOTAsIDIxOCwgMjEwLCAyMDksIDc1LCAzMiwgMTYsIDIzNSwgOTAsIDIxOCwgMjEwLCAyMTgsIDI0MiwgMjA5LCA3NSwgCisgICAgMzIsIDE2LCAyMDUsIDEzMywgMzIsIDE2LCAyMDQsIDE4NiwgMzIsIDE2LCAyMjgsIDUwLCAyMDQsIDE4NiwgMzIsIDE2LCAKKyAgICAyMDQsIDE4NywgMjA5LCA3NSwgMzIsIDE2LCAyMDQsIDE4NywgMjAzLCAyMjgsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0NiwgCisgICAgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQzLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDIsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAKKyAgICA0MSwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQwLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzksIDMyLCAxNiwgMjE3LCAyMiwgCisgICAgMjA4LCAzOCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDM3LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzYsIDMyLCAxNiwgMjE3LCAKKyAgICAyMiwgMjA4LCA0NSwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQ0LCAzMiwgMTYsIDIzNCwgMTQ5LCAzMiwgMTYsIDIyMCwgMzIsIAorICAgIDMyLCAxNiwgMjM4LCAxNzEsIDc2LCAyMDgsIDgyLCAzMiwgMTYsIDI0MSwgMTU1LCAyMDksIDc1LCAzMiwgMTYsIDM4LCAKKyAgICAxMjcsIDI0OCwgODUsIDMyLCAxNiwgMzgsIDExNSwgMjQ4LCA4NSwgMzIsIDE2LCAzOCwgMjM0LCAxNjIsIDMyLCAxNiwgMzgsIAorICAgIDIwOSwgNDAsIDIxNSwgMTM2LCAzMiwgMTYsIDIxNiwgNjYsIDgxLCAzMiwgMTYsIDIxNiwgNjYsIDExNSwgODEsIDMyLCAxNiwgCisgICAgMTY3LCAyMTYsIDY2LCA4MSwgMzIsIDE2LCAyMzUsIDEyNSwgMjAzLCAyMjgsIDMyLCAxNiwgMjM1LCAxMjUsIDIzOSwgMTY3LCAKKyAgICAzMiwgMTYsIDMsIDIzNywgODMsIDMyLCAxNiwgMjQyLCAxMywgMzIsIDE2LCAyNDIsIDE0LCAyNTEsIDEyNCwgMzIsIDE2LCAKKyAgICAyMjIsIDEyMSwgMzIsIDE2LCAyMjQsIDgwLCAzMiwgMTYsIDI0OCwgNTQsIDMyLCAxNiwgMjEwLCAxNzEsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjEwLCAxNzEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyMSwgMTYwLCAzMiwgMTYsIDIyMSwgMTYxLCAyNDgsIDE0NCwgCisgICAgMzIsIDE2LCAyMTAsIDE2NSwgMjAxLCAzNCwgMzIsIDE2LCAyMTAsIDE2NSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjM2LCAxNzQsIAorICAgIDIwMSwgMzQsIDMyLCAxNiwgMjM2LCAxNzQsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyNCwgODEsIDIxNiwgMjUsIDIxMywgMTE3LCAKKyAgICAzMiwgMTYsIDIyNCwgODEsIDIyOCwgMTIyLCAyMTMsIDExNywgMzIsIDE2LCAyNDgsIDU1LCAyMTMsIDExNywgMzIsIDE2LCAKKyAgICAyMTAsIDE3MSwgMjEzLCAxMTcsIDMyLCAxNiwgMjIxLCAxNjEsIDIxMywgMTE3LCAzMiwgMTYsIDIxMCwgMTY1LCAyMTMsIAorICAgIDExNywgMzIsIDE2LCAyMDYsIDE2OCwgMjE2LCAyMywgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMTYsIDI0LCAzMiwgMTYsIDIwNiwgCisgICAgMTY4LCAyMTYsIDIzLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIxLCAzMiwgMTYsIDIwNiwgMTY4LCAyMTYsIDIzLCAKKyAgICAyNDIsIDIwNywgMjE0LCAyNDksIDIxNiwgMjUsIDI0MSwgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIAorICAgIDIwNywgMjE0LCAyNDksIDIxNiwgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIAorICAgIDIyOCwgMTIxLCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAKKyAgICAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgMjMsIAorICAgIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIDIyLCAzMiwgCisgICAgMTYsIDI0MiwgMjM3LCAzMiwgMTYsIDIzNSwgNjMsIDI0NywgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMzUsIDYzLCAyMzgsIAorICAgIDYsIDI0NiwgMTI0LCAzMiwgMTYsIDUyLCAyNTAsIDEwMywgMzIsIDE2LCAyMDIsIDIwNywgMzIsIDE2LCAyMTUsIDEwMywgCisgICAgMzIsIDE2LCAyNDYsIDExNSwgMzIsIDE2LCAyMTEsIDIyNiwgMzIsIDE2LCAyNDYsIDExOSwgMzIsIDE2LCAyMDUsIDE1MSwgCisgICAgMzIsIDE2LCAyMTUsIDcyLCAzMiwgMTYsIDIxNSwgNzMsIDIzNywgMzYsIDMyLCAxNiwgMjExLCAyMjcsIDIzNywgMzYsIDMyLCAKKyAgICAxNiwgMjA1LCAxNTIsIDIxMywgMTE0LCAzMiwgMTYsIDIxNiwgNiwgMjA4LCA1LCAzMiwgMTYsIDIyNiwgMTUzLCAyNDcsIAorICAgIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMTcxLCA3NiwgMjE1LCAxOTYsIDMyLCAxNiwgMjI2LCAKKyAgICAxNTMsIDQ3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMjEzLCAxODIsIDgxLCAzMiwgMTYsIDIyNiwgMTUzLCAyMDEsIAorICAgIDMyLCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMTY3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMjE0LCA4OCwgCisgICAgMjE4LCAyMTAsIDIwOCwgOTMsIDIzOSwgMTY3LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTQsIDg4LCAyMTgsIDIxMCwgMjA4LCAKKyAgICA5MywgMjAzLCAyMjgsIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMjI4LCAyMTgsIDIxMCwgMjA4LCA5MywgMjM5LCAxNjcsIAorICAgIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMjI4LCAyMTgsIDIxMCwgMjA4LCA5MywgMjAzLCAyMjgsIDMyLCAxNiwgMjI2LCAKKyAgICAxNTMsIDIzNywgNDUsIDU0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MiwgMzEsIDIwMiwgMTkyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNTEsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQxLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDEzNCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTIwLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExOSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTgsIAorICAgIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE3LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MSwgMzEsIAorICAgIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNjAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU5LCAzMSwgMjAyLCAKKyAgICAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1OCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTcsIDMxLCAyMDIsIDE5MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTU2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1NSwgMzEsIDIwMiwgMTkyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNTQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTUzLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDE1MiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTQ5LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0OCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDcsIAorICAgIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNSwgMzEsIAorICAgIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIzLCAzMSwgMjAyLCAKKyAgICAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjEsIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNjIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTEsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxMzQsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjYsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMTksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMTgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxNjAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTgsIAorICAgIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTQsIDMxLCAKKyAgICAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTIsIDMxLCAyMjgsIAorICAgIDcyLCAyMTgsIDIxMywgMjA3LCAxNDcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDYsIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNDUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDQsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNDMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxNDAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMzgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzYsIAorICAgIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzMsIDMxLCAKKyAgICAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzEsIDMxLCAyMjgsIAorICAgIDcyLCAyMTgsIDIxMywgMjA3LCAxMzAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjksIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxMjgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjcsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxMjUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjQsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMjMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMjEsIDM4LCAzMSwgMzIsIDIwNSwgNzksIDM4LCAzMSwgMzIsIDIwNiwgMTM4LCAzOCwgMzEsIDMyLCAyMTYsIDM1LCAzMSwgCisgICAgMzIsIDIyNSwgMTAsIDIyMSwgOTcsIDM2LCAyMzksIDE3LCAyNDEsIDM4LCAzNiwgMjM0LCAxMjIsIDIzOSwgMTcsIDI0MSwgCisgICAgMzgsIDM2LCAyMzMsIDg3LCAyMzksIDE3LCAyNDEsIDM4LCAzNiwgMjM5LCAxNiwgMjM0LCAxMjMsIDI0MSwgMzgsIDM2LCAKKyAgICAyMzksIDE2LCAyMzMsIDg2LCAyNDEsIDM4LCAzNiwgMjM5LCAxNywgMjA2LCAxNDAsIDM2LCAyNDcsIDU1LCAyMDYsIDE0MCwgCisgICAgMzYsIDIzNiwgMTgzLCAyNDYsIDE1NSwgMjA2LCAxNDAsIDM2LCAyMjEsIDE1MiwgMjA2LCAxNDAsIDM2LCAyNDksIDY3LCAKKyAgICAyMDYsIDE0MCwgMzYsIDIyNywgMiwgMjA5LCA1MywgMjA2LCAxNDAsIDM2LCAyNDMsIDM1LCAyMDYsIDE0MCwgMzYsIDI1MCwgCisgICAgMTgzLCAyMDYsIDE0MCwgMzYsIDIxNywgMzksIDIwNiwgMTQwLCAzNiwgMjQ4LCA2NCwgMjE2LCAyNTQsIDIwNiwgMTQwLCAKKyAgICAzNiwgMjQxLCAxNTcsIDIxNywgMzQsIDI0MCwgMjQ2LCAyMDYsIDE0MCwgMzYsIDI0MCwgMjQzLCAyMDYsIDE0MCwgMzYsIAorICAgIDE5OSwgMjIzLCAyMDYsIDE0MCwgMzYsIDIyOCwgMTA4LCAyMDYsIDE0MCwgMzYsIDIxNiwgNDUsIDIwNiwgMTQwLCAzNiwgCisgICAgMjEzLCAxODksIDIwNiwgMTQwLCAzNiwgMjQzLCA0NywgMjA2LCAxNDAsIDM2LCAyMzMsIDE5OCwgMjQ5LCAxMjksIDIwNiwgCisgICAgMTQwLCAzNiwgMjAxLCAxMDYsIDIwNiwgMTQwLCAzNiwgMjM3LCA4LCAyMDYsIDE0MCwgMzYsIDI1MSwgMjI0LCAyMDYsIAorICAgIDE0MCwgMzYsIDIxMywgMTQ2LCAyMDYsIDE0MCwgMzYsIDIxMywgMTIxLCAyMDYsIDE0MCwgMzYsIDIzOSwgMTUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjI3LCAxNTAsIDIwNiwgMTQwLCAzNiwgMjQzLCA0MiwgMjA2LCAxNDAsIDM2LCAyMzgsIDE3MCwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzksIDEwOSwgMjA2LCAxNDAsIDM2LCAyNDcsIDI0LCAyMDYsIDE0MCwgMzYsIDI0MSwgMTY3LCAyMDYsIAorICAgIDE0MCwgMzYsIDI3LCAyMTMsIDEyMCwgMjA2LCAxNDAsIDM2LCAyMTYsIDIwMiwgMjA2LCAxNDAsIDM2LCAyMjUsIDE0LCAKKyAgICAyMDYsIDE0MCwgMzYsIDI0NiwgMTA4LCAyMDYsIDE0MCwgMzYsIDIyNiwgMTQzLCAyMDYsIDE0MCwgMzYsIDIzNiwgMzksIAorICAgIDIwNiwgMTQwLCAzNiwgMjA4LCA1OCwgMjA2LCAxNDAsIDM2LCAyMTQsIDIwMSwgMjA2LCAxNDAsIDM2LCAyMzYsIDE4MiwgCisgICAgMjA2LCAxNDAsIDM2LCAyMTMsIDEyMiwgMjA2LCAxNDAsIDM2LCAyMjUsIDUzLCAyMTcsIDM0LCAyMjEsIDEzMiwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTMsIDExOCwgMjA2LCAxNDAsIDM2LCAyMzUsIDExMCwgMjA1LCAxODYsIDIyMiwgNTksIDIwNiwgMTQwLCAKKyAgICAzNiwgMjM4LCAxNzIsIDIwNiwgMTQwLCAzNiwgMjA4LCA3MSwgMjA2LCAxNDAsIDM2LCAyMzUsIDY1LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzOCwgMTYzLCAyMDYsIDE0MCwgMzYsIDIxNiwgODksIDIwNiwgMTQwLCAzNiwgMjEzLCAxNiwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzcsIDM0LCAyMDYsIDE0MCwgMzYsIDIwMywgNjgsIDIxNywgMzQsIDIwMSwgODYsIDIwNiwgMTQwLCAzNiwgMjQzLCA1MiwgCisgICAgMjA2LCAxNDAsIDM2LCAyMjIsIDc0LCAyMDYsIDE0MCwgMzYsIDIzOCwgNzYsIDIwNiwgMTQwLCAzNiwgMjAzLCAyMzgsIAorICAgIDIwNiwgMTQwLCAzNiwgMjQxLCAyNSwgMjA2LCAxNDAsIDM2LCAyNDYsIDExMCwgMjIxLCA1OCwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzUsIDQyLCAyMDYsIDE0MCwgMzYsIDIzNiwgNDAsIDIyOCwgMTE3LCAyMDYsIDE0MCwgMzYsIDIyMiwgMTI5LCAyMDYsIAorICAgIDE0MCwgMzYsIDI1MSwgMjQ2LCAyMDYsIDE0MCwgMzYsIDIzOCwgMTg4LCAyMDYsIDE0MCwgMzYsIDIzOSwgMTcxLCAyMDYsIAorICAgIDE0MCwgMzYsIDIwMSwgODQsIDIwNiwgMTQwLCAzNiwgMjA5LCAxMzQsIDIwNiwgMTQwLCAzNiwgMjI4LCA4MSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyNDEsIDEyNCwgMjA2LCAxNDAsIDM2LCAyNDEsIDI0OCwgMjA2LCAxNDAsIDM2LCAyNDEsIDIxLCAyMDYsIAorICAgIDE0MCwgMzYsIDIzOCwgNDAsIDIwNiwgMTQwLCAzNiwgMjEwLCAxMjgsIDIwNiwgMTQwLCAzNiwgMjA4LCA3NSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzQsIDE2NCwgMjA2LCAxNDAsIDM2LCAyNDYsIDYzLCAyMDYsIDE0MCwgMzYsIDI0NiwgMTA1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIzNywgMTc0LCAyMDYsIDE0MCwgMzYsIDI1MSwgMTg4LCAyMDYsIDE0MCwgMzYsIDI0NiwgNjIsIDIwNiwgCisgICAgMTQwLCAzNiwgMjE3LCA3OSwgMjA2LCAxMDcsIDIwMywgNDUsIDIwNiwgMTQwLCAzNiwgMjQxLCA0NywgMjA2LCAxNDAsIDM2LCAKKyAgICAyMjUsIDE2NCwgMjA2LCAxNDAsIDM2LCAyMzYsIDIzMiwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxMDIsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTA1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE0NywgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNDksIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTY0LCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE4NywgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAyMTAsIAorICAgIDEzNSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxOTIsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgCisgICAgMjE5LCAxMTMsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTAyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDEwNSwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxNDcsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTQ5LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDE2NCwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxODcsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMjEwLCAxMzUsIDI0MywgMywgMjEyLCAyNDcsIAorICAgIDIwNiwgMTYyLCAxNywgMTkyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDIxOSwgMTEzLCAxMywgMjcsIDYsIAorICAgIDYyLCAxMywgMjcsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDYsIDI0NywgMjIzLCAxMywgMjcsIDYsIDI0MiwgMTUzLCAxMywgCisgICAgMjcsIDYsIDcyLCAxMywgMjcsIDYsIDIzOCwgNSwgMTMsIDI3LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCA2LCAyMzQsIDI0NywgCisgICAgMTMsIDI3LCA2LCA3MCwgMTMsIDI3LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCA2LCAyMjcsIDExOCwgMTMsIDI3LCA2LCAxNTYsIAorICAgIDEzLCAyNywgNiwgMjIzLCAyNDMsIDEzLCAyNywgNiwgMjIwLCAyMTQsIDEzLCAyNywgNiwgNzQsIDEzLCAyNywgNiwgMjE2LCAKKyAgICAyMjYsIDEzLCAyNywgNiwgMjE0LCAxNjcsIDEzLCAyNywgNiwgMTQ2LCAxMywgMjcsIDYsIDIxMiwgMTIyLCAxMywgMjcsIDYsIAorICAgIDIwNywgODMsIDEzLCAyNywgNiwgNjYsIDEzLCAyNywgNiwgMjAzLCAxNjgsIDEzLCAyNywgNiwgMjAxLCAxNDcsIDEzLCAyNywgCisgICAgNiwgMjAwLCAxOTUsIDEzLCAyNywgNiwgMjAwLCAxMjMsIDEzLCAyNywgNiwgMTk5LCAxNTcsIDEzLCAyNywgNCwgNjIsIDEzLCAKKyAgICAyNywgNCwgMjUwLCAxMDMsIDEzLCAyNywgNCwgMjQ3LCAyMjMsIDEzLCAyNywgNCwgMjQyLCAxNTMsIDEzLCAyNywgNCwgNzIsIAorICAgIDEzLCAyNywgNCwgMjM4LCA1LCAxMywgMjcsIDQsIDIzNiwgMTU2LCAxMywgMjcsIDQsIDIzNCwgMjQ3LCAxMywgMjcsIDQsIAorICAgIDcwLCAxMywgMjcsIDQsIDIyNywgMjUxLCAxMywgMjcsIDQsIDIyNywgMTE4LCAxMywgMjcsIDQsIDE1NiwgMTMsIDI3LCA0LCAKKyAgICAyMjMsIDI0MywgMTMsIDI3LCA0LCAyMjAsIDIxNCwgMTMsIDI3LCA0LCA3NCwgMTMsIDI3LCA0LCAyMTYsIDIyNiwgMTMsIAorICAgIDI3LCA0LCAyMTQsIDE2NywgMTMsIDI3LCA0LCAxNDYsIDEzLCAyNywgNCwgMjEyLCAxMjIsIDEzLCAyNywgNCwgMjA3LCA4MywgCisgICAgMTMsIDI3LCA0LCA2NiwgMTMsIDI3LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCA0LCAyMDEsIDE0NywgMTMsIDI3LCA0LCAyMDAsIAorICAgIDE5NSwgMTMsIDI3LCA0LCAyMDAsIDEyMywgMTMsIDI3LCA0LCAxOTksIDE1NywgMTMsIDM5LCA2LCA2MiwgMTMsIDM5LCA2LCAKKyAgICAyNTAsIDEwMywgMTMsIDM5LCA2LCAyNDcsIDIyMywgMTMsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDM5LCA2LCA3MiwgMTMsIAorICAgIDM5LCA2LCAyMzgsIDUsIDEzLCAzOSwgNiwgMjM2LCAxNTYsIDEzLCAzOSwgNiwgMjM0LCAyNDcsIDEzLCAzOSwgNiwgNzAsIAorICAgIDEzLCAzOSwgNiwgMjI3LCAyNTEsIDEzLCAzOSwgNiwgMjI3LCAxMTgsIDEzLCAzOSwgNiwgMTU2LCAxMywgMzksIDYsIDIyMywgCisgICAgMjQzLCAxMywgMzksIDYsIDIyMCwgMjE0LCAxMywgMzksIDYsIDc0LCAxMywgMzksIDYsIDIxNiwgMjI2LCAxMywgMzksIDYsIAorICAgIDIxNCwgMTY3LCAxMywgMzksIDYsIDE0NiwgMTMsIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDM5LCA2LCAyMDcsIDgzLCAxMywgCisgICAgMzksIDYsIDY2LCAxMywgMzksIDYsIDIwMywgMTY4LCAxMywgMzksIDYsIDIwMSwgMTQ3LCAxMywgMzksIDYsIDIwMCwgMTk1LCAKKyAgICAxMywgMzksIDYsIDIwMCwgMTIzLCAxMywgMzksIDYsIDE5OSwgMTU3LCAxMywgMzksIDQsIDYyLCAxMywgMzksIDQsIDI1MCwgCisgICAgMTAzLCAxMywgMzksIDQsIDI0NywgMjIzLCAxMywgMzksIDQsIDI0MiwgMTUzLCAxMywgMzksIDQsIDcyLCAxMywgMzksIDQsIAorICAgIDIzOCwgNSwgMTMsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDM5LCA0LCA3MCwgMTMsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDM5LCAKKyAgICA0LCAyMjcsIDExOCwgMTMsIDM5LCA0LCAxNTYsIDEzLCAzOSwgNCwgMjIzLCAyNDMsIDEzLCAzOSwgNCwgMjIwLCAyMTQsIAorICAgIDEzLCAzOSwgNCwgNzQsIDEzLCAzOSwgNCwgMjE2LCAyMjYsIDEzLCAzOSwgNCwgMjE0LCAxNjcsIDEzLCAzOSwgNCwgMTQ2LCAKKyAgICAxMywgMzksIDQsIDIxMiwgMTIyLCAxMywgMzksIDQsIDIwNywgODMsIDEzLCAzOSwgNCwgNjYsIDEzLCAzOSwgNCwgMjAzLCAKKyAgICAxNjgsIDEzLCAzOSwgNCwgMjAxLCAxNDcsIDEzLCAzOSwgNCwgMjAwLCAxOTUsIDEzLCAzOSwgNCwgMjAwLCAxMjMsIDEzLCAKKyAgICAzOSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgMzksIDYsIDYyLCAxMywgMjcsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDI3LCAzOSwgCisgICAgNiwgMjQ3LCAyMjMsIDEzLCAyNywgMzksIDYsIDI0MiwgMTUzLCAxMywgMjcsIDM5LCA2LCA3MiwgMTMsIDI3LCAzOSwgNiwgCisgICAgMjM4LCA1LCAxMywgMjcsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAzOSwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMzksIDYsIAorICAgIDcwLCAxMywgMjcsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAzOSwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMzksIDYsIDE1NiwgCisgICAgMTMsIDI3LCAzOSwgNiwgMjIzLCAyNDMsIDEzLCAyNywgMzksIDYsIDIyMCwgMjE0LCAxMywgMjcsIDM5LCA2LCA3NCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE2LCAyMjYsIDEzLCAyNywgMzksIDYsIDIxNCwgMTY3LCAxMywgMjcsIDM5LCA2LCAxNDYsIDEzLCAyNywgCisgICAgMzksIDYsIDIxMiwgMTIyLCAxMywgMjcsIDM5LCA2LCAyMDcsIDgzLCAxMywgMjcsIDM5LCA2LCA2NiwgMTMsIDI3LCAzOSwgCisgICAgNiwgMjAzLCAxNjgsIDEzLCAyNywgMzksIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDI3LCAKKyAgICAzOSwgNiwgMjAwLCAxMjMsIDEzLCAyNywgMzksIDYsIDE5OSwgMTU3LCAxMywgMjcsIDM5LCA0LCA2MiwgMTMsIDI3LCAzOSwgCisgICAgNCwgMjUwLCAxMDMsIDEzLCAyNywgMzksIDQsIDI0NywgMjIzLCAxMywgMjcsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDI3LCAKKyAgICAzOSwgNCwgNzIsIDEzLCAyNywgMzksIDQsIDIzOCwgNSwgMTMsIDI3LCAzOSwgNCwgMjM2LCAxNTYsIDEzLCAyNywgMzksIDQsIAorICAgIDIzNCwgMjQ3LCAxMywgMjcsIDM5LCA0LCA3MCwgMTMsIDI3LCAzOSwgNCwgMjI3LCAyNTEsIDEzLCAyNywgMzksIDQsIDIyNywgCisgICAgMTE4LCAxMywgMjcsIDM5LCA0LCAxNTYsIDEzLCAyNywgMzksIDQsIDIyMywgMjQzLCAxMywgMjcsIDM5LCA0LCAyMjAsIAorICAgIDIxNCwgMTMsIDI3LCAzOSwgNCwgNzQsIDEzLCAyNywgMzksIDQsIDIxNiwgMjI2LCAxMywgMjcsIDM5LCA0LCAyMTQsIDE2NywgCisgICAgMTMsIDI3LCAzOSwgNCwgMTQ2LCAxMywgMjcsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCAzOSwgNCwgMjA3LCA4MywgMTMsIAorICAgIDI3LCAzOSwgNCwgNjYsIDEzLCAyNywgMzksIDQsIDIwMywgMTY4LCAxMywgMjcsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDI3LCAKKyAgICAzOSwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMzksIDQsIDIwMCwgMTIzLCAxMywgMjcsIDM5LCA0LCAxOTksIDE1NywgMTMsIAorICAgIDEzNSwgNiwgNjIsIDEzLCAxMzUsIDYsIDI0NywgMjIzLCAxMywgMTM1LCA2LCAyNDIsIDE1MywgMTMsIDEzNSwgNiwgMjM2LCAKKyAgICAxNTYsIDEzLCAxMzUsIDYsIDIyNywgMjUxLCAxMywgMTM1LCA2LCAyMjcsIDExOCwgMTMsIDEzNSwgNiwgMjIwLCAyMTQsIAorICAgIDEzLCAxMzUsIDYsIDc0LCAxMywgMTM1LCA2LCAyMTYsIDIyNiwgMTMsIDEzNSwgNiwgMjE0LCAxNjcsIDEzLCAxMzUsIDYsIAorICAgIDIxMiwgMTIyLCAxMywgMTM1LCA2LCAyMDcsIDgzLCAxMywgMTM1LCA2LCA2NiwgMTMsIDEzNSwgNiwgMjAzLCAxNjgsIDEzLCAKKyAgICAxMzUsIDYsIDIwMSwgMTQ3LCAxMywgMTM1LCA2LCAyMDAsIDE5NSwgMTMsIDEzNSwgNiwgMjAwLCAxMjMsIDEzLCAxMzUsIDYsIAorICAgIDE5OSwgMTU3LCAxMywgMTM1LCA0LCA2MiwgMTMsIDEzNSwgNCwgMjUwLCAxMDMsIDEzLCAxMzUsIDQsIDI0NywgMjIzLCAxMywgCisgICAgMTM1LCA0LCAyNDIsIDE1MywgMTMsIDEzNSwgNCwgMjM4LCA1LCAxMywgMTM1LCA0LCAyMzQsIDI0NywgMTMsIDEzNSwgNCwgCisgICAgNzAsIDEzLCAxMzUsIDQsIDIyNywgMjUxLCAxMywgMTM1LCA0LCAyMjcsIDExOCwgMTMsIDEzNSwgNCwgMTU2LCAxMywgMTM1LCAKKyAgICA0LCAyMjMsIDI0MywgMTMsIDEzNSwgNCwgMjIwLCAyMTQsIDEzLCAxMzUsIDQsIDIxNiwgMjI2LCAxMywgMTM1LCA0LCAyMTQsIAorICAgIDE2NywgMTMsIDEzNSwgNCwgMTQ2LCAxMywgMTM1LCA0LCAyMTIsIDEyMiwgMTMsIDEzNSwgNCwgMjA3LCA4MywgMTMsIDEzNSwgCisgICAgNCwgNjYsIDEzLCAxMzUsIDQsIDIwMywgMTY4LCAxMywgMTM1LCA0LCAyMDEsIDE0NywgMTMsIDEzNSwgNCwgMjAwLCAxOTUsIAorICAgIDEzLCAxMzUsIDQsIDIwMCwgMTIzLCAxMywgMTM1LCA0LCAxOTksIDE1NywgMTMsIDI3LCAxMzUsIDYsIDYyLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjUwLCAxMDMsIDEzLCAyNywgMTM1LCA2LCAyNDcsIDIyMywgMTMsIDI3LCAxMzUsIDYsIDI0MiwgMTUzLCAxMywgCisgICAgMjcsIDEzNSwgNiwgNzIsIDEzLCAyNywgMTM1LCA2LCAyMzgsIDUsIDEzLCAyNywgMTM1LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIzNCwgMjQ3LCAxMywgMjcsIDEzNSwgNiwgNzAsIDEzLCAyNywgMTM1LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIyNywgMTE4LCAxMywgMjcsIDEzNSwgNiwgMTU2LCAxMywgMjcsIDEzNSwgNiwgMjIzLCAyNDMsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCAxMzUsIDYsIDc0LCAxMywgMjcsIDEzNSwgNiwgMjE2LCAyMjYsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMTQsIDE2NywgMTMsIDI3LCAxMzUsIDYsIDE0NiwgMTMsIDI3LCAxMzUsIDYsIDIxMiwgMTIyLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjA3LCA4MywgMTMsIDI3LCAxMzUsIDYsIDY2LCAxMywgMjcsIDEzNSwgNiwgMjAzLCAxNjgsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAxMzUsIDYsIDIwMCwgMTk1LCAxMywgMjcsIDEzNSwgNiwgMjAwLCAxMjMsIDEzLCAKKyAgICAyNywgMTM1LCA2LCAxOTksIDE1NywgMTMsIDI3LCAxMzUsIDQsIDYyLCAxMywgMjcsIDEzNSwgNCwgMjUwLCAxMDMsIDEzLCAKKyAgICAyNywgMTM1LCA0LCAyNDcsIDIyMywgMTMsIDI3LCAxMzUsIDQsIDI0MiwgMTUzLCAxMywgMjcsIDEzNSwgNCwgNzIsIDEzLCAKKyAgICAyNywgMTM1LCA0LCAyMzgsIDUsIDEzLCAyNywgMTM1LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCAxMzUsIDQsIDIzNCwgMjQ3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNzAsIDEzLCAyNywgMTM1LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCAxMzUsIDQsIDIyNywgMTE4LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMTU2LCAxMywgMjcsIDEzNSwgNCwgMjIzLCAyNDMsIDEzLCAyNywgMTM1LCA0LCAyMjAsIDIxNCwgCisgICAgMTMsIDI3LCAxMzUsIDQsIDc0LCAxMywgMjcsIDEzNSwgNCwgMjE2LCAyMjYsIDEzLCAyNywgMTM1LCA0LCAyMTQsIDE2NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDE0NiwgMTMsIDI3LCAxMzUsIDQsIDIxMiwgMTIyLCAxMywgMjcsIDEzNSwgNCwgMjA3LCA4MywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDY2LCAxMywgMjcsIDEzNSwgNCwgMjAzLCAxNjgsIDEzLCAyNywgMTM1LCA0LCAyMDEsIDE0NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDIwMCwgMTk1LCAxMywgMjcsIDEzNSwgNCwgMjAwLCAxMjMsIDEzLCAyNywgMTM1LCA0LCAxOTksIAorICAgIDE1NywgMTMsIDE3MCwgNiwgNjIsIDEzLCAxNzAsIDYsIDI1MCwgMTAzLCAxMywgMTcwLCA2LCAyNDIsIDE1MywgMTMsIDE3MCwgCisgICAgNiwgNzIsIDEzLCAxNzAsIDYsIDIzOCwgNSwgMTMsIDE3MCwgNiwgMjM2LCAxNTYsIDEzLCAxNzAsIDYsIDIyNywgMjUxLCAKKyAgICAxMywgMTcwLCA2LCAyMjcsIDExOCwgMTMsIDE3MCwgNiwgMTU2LCAxMywgMTcwLCA2LCAyMjMsIDI0MywgMTMsIDE3MCwgNiwgCisgICAgMjIwLCAyMTQsIDEzLCAxNzAsIDYsIDc0LCAxMywgMTcwLCA2LCAyMTYsIDIyNiwgMTMsIDE3MCwgNiwgMjE0LCAxNjcsIDEzLCAKKyAgICAxNzAsIDYsIDIxMiwgMTIyLCAxMywgMTcwLCA2LCAyMDcsIDgzLCAxMywgMTcwLCA2LCA2NiwgMTMsIDE3MCwgNiwgMjAzLCAKKyAgICAxNjgsIDEzLCAxNzAsIDYsIDIwMSwgMTQ3LCAxMywgMTcwLCA2LCAyMDAsIDE5NSwgMTMsIDE3MCwgNiwgMjAwLCAxMjMsIAorICAgIDEzLCAxNzAsIDQsIDYyLCAxMywgMTcwLCA0LCAyNTAsIDEwMywgMTMsIDE3MCwgNCwgMjQ3LCAyMjMsIDEzLCAxNzAsIDQsIAorICAgIDI0MiwgMTUzLCAxMywgMTcwLCA0LCA3MiwgMTMsIDE3MCwgNCwgMjM4LCA1LCAxMywgMTcwLCA0LCAyMzYsIDE1NiwgMTMsIAorICAgIDE3MCwgNCwgMjM0LCAyNDcsIDEzLCAxNzAsIDQsIDcwLCAxMywgMTcwLCA0LCAyMjcsIDI1MSwgMTMsIDE3MCwgNCwgMjI3LCAKKyAgICAxMTgsIDEzLCAxNzAsIDQsIDE1NiwgMTMsIDE3MCwgNCwgMjIzLCAyNDMsIDEzLCAxNzAsIDQsIDIyMCwgMjE0LCAxMywgCisgICAgMTcwLCA0LCA3NCwgMTMsIDE3MCwgNCwgMjE2LCAyMjYsIDEzLCAxNzAsIDQsIDIxNCwgMTY3LCAxMywgMTcwLCA0LCAxNDYsIAorICAgIDEzLCAxNzAsIDQsIDIxMiwgMTIyLCAxMywgMTcwLCA0LCAyMDcsIDgzLCAxMywgMTcwLCA0LCA2NiwgMTMsIDE3MCwgNCwgCisgICAgMjAzLCAxNjgsIDEzLCAxNzAsIDQsIDIwMSwgMTQ3LCAxMywgMTcwLCA0LCAyMDAsIDE5NSwgMTMsIDE3MCwgNCwgMjAwLCAKKyAgICAxMjMsIDEzLCAxNzAsIDQsIDE5OSwgMTU3LCAxMywgMTc1LCA2LCA2MiwgMTMsIDE3NSwgNiwgMjUwLCAxMDMsIDEzLCAxNzUsIAorICAgIDYsIDI0MiwgMTUzLCAxMywgMTc1LCA2LCA3MiwgMTMsIDE3NSwgNiwgMjM4LCA1LCAxMywgMTc1LCA2LCAyMzYsIDE1NiwgCisgICAgMTMsIDE3NSwgNiwgNzAsIDEzLCAxNzUsIDYsIDIyNywgMjUxLCAxMywgMTc1LCA2LCAyMjcsIDExOCwgMTMsIDE3NSwgNiwgCisgICAgMTU2LCAxMywgMTc1LCA2LCAyMjMsIDI0MywgMTMsIDE3NSwgNiwgNzQsIDEzLCAxNzUsIDYsIDIxMiwgMTIyLCAxMywgMTc1LCAKKyAgICA2LCAyMDcsIDgzLCAxMywgMTc1LCA2LCA2NiwgMTMsIDE3NSwgNiwgMjAzLCAxNjgsIDEzLCAxNzUsIDYsIDIwMSwgMTQ3LCAKKyAgICAxMywgMTc1LCA2LCAyMDAsIDE5NSwgMTMsIDE3NSwgNiwgMjAwLCAxMjMsIDEzLCAxNzUsIDQsIDYyLCAxMywgMTc1LCA0LCAKKyAgICAyNTAsIDEwMywgMTMsIDE3NSwgNCwgMjQ3LCAyMjMsIDEzLCAxNzUsIDQsIDI0MiwgMTUzLCAxMywgMTc1LCA0LCA3MiwgMTMsIAorICAgIDE3NSwgNCwgMjM4LCA1LCAxMywgMTc1LCA0LCAyMzYsIDE1NiwgMTMsIDE3NSwgNCwgMjM0LCAyNDcsIDEzLCAxNzUsIDQsIAorICAgIDcwLCAxMywgMTc1LCA0LCAyMjcsIDI1MSwgMTMsIDE3NSwgNCwgMjI3LCAxMTgsIDEzLCAxNzUsIDQsIDE1NiwgMTMsIDE3NSwgCisgICAgNCwgMjIzLCAyNDMsIDEzLCAxNzUsIDQsIDIyMCwgMjE0LCAxMywgMTc1LCA0LCA3NCwgMTMsIDE3NSwgNCwgMjE2LCAyMjYsIAorICAgIDEzLCAxNzUsIDQsIDIxNCwgMTY3LCAxMywgMTc1LCA0LCAxNDYsIDEzLCAxNzUsIDQsIDIxMiwgMTIyLCAxMywgMTc1LCA0LCAKKyAgICAyMDcsIDgzLCAxMywgMTc1LCA0LCA2NiwgMTMsIDE3NSwgNCwgMjAzLCAxNjgsIDEzLCAxNzUsIDQsIDIwMSwgMTQ3LCAxMywgCisgICAgMTc1LCA0LCAyMDAsIDE5NSwgMTMsIDE3NSwgNCwgMjAwLCAxMjMsIDEzLCAxNzUsIDQsIDE5OSwgMTU3LCAxMywgMjcsIAorICAgIDE3MCwgNiwgNjIsIDEzLCAyNywgMTcwLCA2LCAyNTAsIDEwMywgMTMsIDI3LCAxNzAsIDYsIDI0NywgMjIzLCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjQyLCAxNTMsIDEzLCAyNywgMTcwLCA2LCA3MiwgMTMsIDI3LCAxNzAsIDYsIDIzOCwgNSwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIzNiwgMTU2LCAxMywgMjcsIDE3MCwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMTcwLCA2LCA3MCwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIyNywgMjUxLCAxMywgMjcsIDE3MCwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMTcwLCA2LCAxNTYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMjMsIDI0MywgMTMsIDI3LCAxNzAsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDE3MCwgNiwgNzQsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAxNzAsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDE3MCwgNiwgMTQ2LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjEyLCAxMjIsIDEzLCAyNywgMTcwLCA2LCAyMDcsIDgzLCAxMywgMjcsIDE3MCwgNiwgNjYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMDMsIDE2OCwgMTMsIDI3LCAxNzAsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDE3MCwgNiwgMjAwLCAxOTUsIDEzLCAKKyAgICAyNywgMTcwLCA2LCAyMDAsIDEyMywgMTMsIDI3LCAxNzAsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDE3MCwgNCwgNjIsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyNTAsIDEwMywgMTMsIDI3LCAxNzAsIDQsIDI0NywgMjIzLCAxMywgMjcsIDE3MCwgNCwgMjQyLCAxNTMsIAorICAgIDEzLCAyNywgMTcwLCA0LCA3MiwgMTMsIDI3LCAxNzAsIDQsIDIzOCwgNSwgMTMsIDI3LCAxNzAsIDQsIDIzNiwgMTU2LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjM0LCAyNDcsIDEzLCAyNywgMTcwLCA0LCA3MCwgMTMsIDI3LCAxNzAsIDQsIDIyNywgMjUxLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjI3LCAxMTgsIDEzLCAyNywgMTcwLCA0LCAxNTYsIDEzLCAyNywgMTcwLCA0LCAyMjMsIDI0MywgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIyMCwgMjE0LCAxMywgMjcsIDE3MCwgNCwgNzQsIDEzLCAyNywgMTcwLCA0LCAyMTYsIDIyNiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIxNCwgMTY3LCAxMywgMjcsIDE3MCwgNCwgMTQ2LCAxMywgMjcsIDE3MCwgNCwgMjEyLCAxMjIsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMDcsIDgzLCAxMywgMjcsIDE3MCwgNCwgNjYsIDEzLCAyNywgMTcwLCA0LCAyMDMsIDE2OCwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIwMSwgMTQ3LCAxMywgMjcsIDE3MCwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMTcwLCA0LCAyMDAsIDEyMywgCisgICAgMTMsIDI3LCAxNzAsIDQsIDE5OSwgMTU3LCAxMywgNDMsIDYsIDYyLCAxMywgNDMsIDYsIDI1MCwgMTAzLCAxMywgNDMsIDYsIAorICAgIDI0NywgMjIzLCAxMywgNDMsIDYsIDI0MiwgMTUzLCAxMywgNDMsIDYsIDcyLCAxMywgNDMsIDYsIDIzOCwgNSwgMTMsIDQzLCAKKyAgICA2LCAyMzYsIDE1NiwgMTMsIDQzLCA2LCAyMzQsIDI0NywgMTMsIDQzLCA2LCA3MCwgMTMsIDQzLCA2LCAyMjcsIDI1MSwgMTMsIAorICAgIDQzLCA2LCAyMjcsIDExOCwgMTMsIDQzLCA2LCAxNTYsIDEzLCA0MywgNiwgMjIzLCAyNDMsIDEzLCA0MywgNiwgMjIwLCAKKyAgICAyMTQsIDEzLCA0MywgNiwgNzQsIDEzLCA0MywgNiwgMjE2LCAyMjYsIDEzLCA0MywgNiwgMjE0LCAxNjcsIDEzLCA0MywgNiwgCisgICAgMTQ2LCAxMywgNDMsIDYsIDIxMiwgMTIyLCAxMywgNDMsIDYsIDIwNywgODMsIDEzLCA0MywgNiwgNjYsIDEzLCA0MywgNiwgCisgICAgMjAzLCAxNjgsIDEzLCA0MywgNiwgMjAxLCAxNDcsIDEzLCA0MywgNiwgMjAwLCAxOTUsIDEzLCA0MywgNiwgMjAwLCAxMjMsIAorICAgIDEzLCA0MywgNiwgMTk5LCAxNTcsIDEzLCA0MywgNCwgNjIsIDEzLCA0MywgNCwgMjUwLCAxMDMsIDEzLCA0MywgNCwgMjQ3LCAKKyAgICAyMjMsIDEzLCA0MywgNCwgMjQyLCAxNTMsIDEzLCA0MywgNCwgNzIsIDEzLCA0MywgNCwgMjM4LCA1LCAxMywgNDMsIDQsIAorICAgIDIzNiwgMTU2LCAxMywgNDMsIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDQsIDcwLCAxMywgNDMsIDQsIDIyNywgMjUxLCAxMywgCisgICAgNDMsIDQsIDIyNywgMTE4LCAxMywgNDMsIDQsIDE1NiwgMTMsIDQzLCA0LCAyMjMsIDI0MywgMTMsIDQzLCA0LCAyMjAsIAorICAgIDIxNCwgMTMsIDQzLCA0LCA3NCwgMTMsIDQzLCA0LCAyMTYsIDIyNiwgMTMsIDQzLCA0LCAyMTQsIDE2NywgMTMsIDQzLCA0LCAKKyAgICAxNDYsIDEzLCA0MywgNCwgMjEyLCAxMjIsIDEzLCA0MywgNCwgMjA3LCA4MywgMTMsIDQzLCA0LCA2NiwgMTMsIDQzLCA0LCAKKyAgICAyMDMsIDE2OCwgMTMsIDQzLCA0LCAyMDEsIDE0NywgMTMsIDQzLCA0LCAyMDAsIDE5NSwgMTMsIDQzLCA0LCAyMDAsIDEyMywgCisgICAgMTMsIDQzLCA0LCAxOTksIDE1NywgMTMsIDQzLCAyNywgNiwgNjIsIDEzLCA0MywgMjcsIDYsIDI1MCwgMTAzLCAxMywgNDMsIAorICAgIDI3LCA2LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgNiwgMjQyLCAxNTMsIDEzLCA0MywgMjcsIDYsIDcyLCAxMywgNDMsIDI3LCAKKyAgICA2LCAyMzgsIDUsIDEzLCA0MywgMjcsIDYsIDIzNiwgMTU2LCAxMywgNDMsIDI3LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgCisgICAgNiwgNzAsIDEzLCA0MywgMjcsIDYsIDIyNywgMjUxLCAxMywgNDMsIDI3LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgNiwgCisgICAgMTU2LCAxMywgNDMsIDI3LCA2LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgNiwgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDYsIDc0LCAKKyAgICAxMywgNDMsIDI3LCA2LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgNiwgMjE0LCAxNjcsIDEzLCA0MywgMjcsIDYsIDE0NiwgMTMsIAorICAgIDQzLCAyNywgNiwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDYsIDIwNywgODMsIDEzLCA0MywgMjcsIDYsIDY2LCAxMywgNDMsIAorICAgIDI3LCA2LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgNiwgMjAxLCAxNDcsIDEzLCA0MywgMjcsIDYsIDIwMCwgMTk1LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgNiwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDQsIDYyLCAxMywgNDMsIAorICAgIDI3LCA0LCAyNTAsIDEwMywgMTMsIDQzLCAyNywgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDQsIDI0MiwgMTUzLCAxMywgCisgICAgNDMsIDI3LCA0LCA3MiwgMTMsIDQzLCAyNywgNCwgMjM4LCA1LCAxMywgNDMsIDI3LCA0LCAyMzYsIDE1NiwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIDQsIDcwLCAxMywgNDMsIDI3LCA0LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgCisgICAgNCwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIDQsIDE1NiwgMTMsIDQzLCAyNywgNCwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDQsIAorICAgIDIyMCwgMjE0LCAxMywgNDMsIDI3LCA0LCA3NCwgMTMsIDQzLCAyNywgNCwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDQsIDIxNCwgCisgICAgMTY3LCAxMywgNDMsIDI3LCA0LCAxNDYsIDEzLCA0MywgMjcsIDQsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgNDMsIDI3LCA0LCA2NiwgMTMsIDQzLCAyNywgNCwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDQsIDIwMSwgMTQ3LCAxMywgCisgICAgNDMsIDI3LCA0LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgNCwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDQsIDE5OSwgMTU3LCAKKyAgICAxMywgNDMsIDM5LCA2LCA2MiwgMTMsIDQzLCAzOSwgNiwgMjUwLCAxMDMsIDEzLCA0MywgMzksIDYsIDI0NywgMjIzLCAxMywgCisgICAgNDMsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAzOSwgNiwgNzIsIDEzLCA0MywgMzksIDYsIDIzOCwgNSwgMTMsIDQzLCAKKyAgICAzOSwgNiwgMjM2LCAxNTYsIDEzLCA0MywgMzksIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDM5LCA2LCA3MCwgMTMsIDQzLCAzOSwgCisgICAgNiwgMjI3LCAyNTEsIDEzLCA0MywgMzksIDYsIDIyNywgMTE4LCAxMywgNDMsIDM5LCA2LCAxNTYsIDEzLCA0MywgMzksIDYsIAorICAgIDIyMywgMjQzLCAxMywgNDMsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIDQzLCAzOSwgNiwgNzQsIDEzLCA0MywgMzksIDYsIDIxNiwgCisgICAgMjI2LCAxMywgNDMsIDM5LCA2LCAyMTQsIDE2NywgMTMsIDQzLCAzOSwgNiwgMTQ2LCAxMywgNDMsIDM5LCA2LCAyMTIsIAorICAgIDEyMiwgMTMsIDQzLCAzOSwgNiwgMjA3LCA4MywgMTMsIDQzLCAzOSwgNiwgNjYsIDEzLCA0MywgMzksIDYsIDIwMywgMTY4LCAKKyAgICAxMywgNDMsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAzOSwgNiwgMjAwLCAxOTUsIDEzLCA0MywgMzksIDYsIDIwMCwgCisgICAgMTIzLCAxMywgNDMsIDM5LCA2LCAxOTksIDE1NywgMTMsIDQzLCAzOSwgNCwgNjIsIDEzLCA0MywgMzksIDQsIDI1MCwgMTAzLCAKKyAgICAxMywgNDMsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAzOSwgNCwgMjQyLCAxNTMsIDEzLCA0MywgMzksIDQsIDcyLCAxMywgCisgICAgNDMsIDM5LCA0LCAyMzgsIDUsIDEzLCA0MywgMzksIDQsIDIzNiwgMTU2LCAxMywgNDMsIDM5LCA0LCAyMzQsIDI0NywgMTMsIAorICAgIDQzLCAzOSwgNCwgNzAsIDEzLCA0MywgMzksIDQsIDIyNywgMjUxLCAxMywgNDMsIDM5LCA0LCAyMjcsIDExOCwgMTMsIDQzLCAKKyAgICAzOSwgNCwgMTU2LCAxMywgNDMsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAzOSwgNCwgMjIwLCAyMTQsIDEzLCA0MywgMzksIAorICAgIDQsIDc0LCAxMywgNDMsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAzOSwgNCwgMjE0LCAxNjcsIDEzLCA0MywgMzksIDQsIAorICAgIDE0NiwgMTMsIDQzLCAzOSwgNCwgMjEyLCAxMjIsIDEzLCA0MywgMzksIDQsIDIwNywgODMsIDEzLCA0MywgMzksIDQsIDY2LCAKKyAgICAxMywgNDMsIDM5LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAzOSwgNCwgMjAxLCAxNDcsIDEzLCA0MywgMzksIDQsIDIwMCwgCisgICAgMTk1LCAxMywgNDMsIDM5LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAzOSwgNCwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICA2MiwgMTMsIDQzLCAyNywgMzksIDYsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAyNywgMzksIDYsIDcyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCA1LCAxMywgCisgICAgNDMsIDI3LCAzOSwgNiwgMjM2LCAxNTYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDcwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDE1NiwgMTMsIDQzLCAyNywgMzksIDYsIDIyMywgMjQzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCA3NCwgMTMsIDQzLCAyNywgMzksIDYsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE0LCAKKyAgICAxNjcsIDEzLCA0MywgMjcsIDM5LCA2LCAxNDYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgMzksIAorICAgIDYsIDIwNywgODMsIDEzLCA0MywgMjcsIDM5LCA2LCA2NiwgMTMsIDQzLCAyNywgMzksIDYsIDIwMywgMTY4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjAxLCAxNDcsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgMzksIDYsIDIwMCwgCisgICAgMTIzLCAxMywgNDMsIDI3LCAzOSwgNiwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDM5LCA0LCA2MiwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDIsIDE1MywgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDcyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCA1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM2LCAKKyAgICAxNTYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgMzksIDQsIDcwLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgMzksIDQsIDE1NiwgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDIyMywgMjQzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDM5LCA0LCA3NCwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE0LCAxNjcsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAxNDYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgMzksIDQsIDIwNywgODMsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCA2NiwgMTMsIDQzLCAyNywgMzksIDQsIDIwMywgMTY4LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAxLCAxNDcsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMTk5LCAxNTcsIDEzLCAyMjEsIDkzLCA2LCA2MiwgMTMsIDIyMSwgOTMsIDYsIDI1MCwgMTAzLCAxMywgMjIxLCA5MywgCisgICAgNiwgMjQ3LCAyMjMsIDEzLCAyMjEsIDkzLCA2LCAyNDIsIDE1MywgMTMsIDIyMSwgOTMsIDYsIDcyLCAxMywgMjIxLCA5MywgCisgICAgNiwgMjM4LCA1LCAxMywgMjIxLCA5MywgNiwgMjM2LCAxNTYsIDEzLCAyMjEsIDkzLCA2LCAyMzQsIDI0NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDcwLCAxMywgMjIxLCA5MywgNiwgMjI3LCAyNTEsIDEzLCAyMjEsIDkzLCA2LCAyMjcsIDExOCwgMTMsIDIyMSwgCisgICAgOTMsIDYsIDE1NiwgMTMsIDIyMSwgOTMsIDYsIDIyMywgMjQzLCAxMywgMjIxLCA5MywgNiwgMjIwLCAyMTQsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA3NCwgMTMsIDIyMSwgOTMsIDYsIDIxNiwgMjI2LCAxMywgMjIxLCA5MywgNiwgMjE0LCAxNjcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAxNDYsIDEzLCAyMjEsIDkzLCA2LCAyMTIsIDEyMiwgMTMsIDIyMSwgOTMsIDYsIDIwNywgODMsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA2NiwgMTMsIDIyMSwgOTMsIDYsIDIwMywgMTY4LCAxMywgMjIxLCA5MywgNiwgMjAxLCAxNDcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAyMDAsIDE5NSwgMTMsIDIyMSwgOTMsIDYsIDIwMCwgMTIzLCAxMywgMjIxLCA5MywgNiwgMTk5LCAxNTcsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCA2MiwgMTMsIDIyMSwgOTMsIDQsIDI1MCwgMTAzLCAxMywgMjIxLCA5MywgNCwgMjQ3LCAyMjMsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyNDIsIDE1MywgMTMsIDIyMSwgOTMsIDQsIDcyLCAxMywgMjIxLCA5MywgNCwgMjM4LCA1LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjM2LCAxNTYsIDEzLCAyMjEsIDkzLCA0LCAyMzQsIDI0NywgMTMsIDIyMSwgOTMsIDQsIDcwLCAxMywgCisgICAgMjIxLCA5MywgNCwgMjI3LCAyNTEsIDEzLCAyMjEsIDkzLCA0LCAyMjcsIDExOCwgMTMsIDIyMSwgOTMsIDQsIDE1NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIyMywgMjQzLCAxMywgMjIxLCA5MywgNCwgMjIwLCAyMTQsIDEzLCAyMjEsIDkzLCA0LCA3NCwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIxNiwgMjI2LCAxMywgMjIxLCA5MywgNCwgMjE0LCAxNjcsIDEzLCAyMjEsIDkzLCA0LCAxNDYsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMTIsIDEyMiwgMTMsIDIyMSwgOTMsIDQsIDIwNywgODMsIDEzLCAyMjEsIDkzLCA0LCA2NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIwMywgMTY4LCAxMywgMjIxLCA5MywgNCwgMjAxLCAxNDcsIDEzLCAyMjEsIDkzLCA0LCAyMDAsIDE5NSwgCisgICAgMTMsIDIyMSwgOTMsIDQsIDIwMCwgMTIzLCAxMywgMjIxLCA5MywgNCwgMTk5LCAxNTcsIDEzLCAzOSwgNCwgMjQwLCAxODEsIAorICAgIDcwLCAxMywgMzksIDQsIDI0MCwgMTgxLCAyMjcsIDI1MSwgMTMsIDI3LCA2LCAyNTEsIDExMiwgMTMsIDI3LCA2LCAyNDgsIAorICAgIDIwOCwgMTMsIDI3LCA2LCAyMzYsIDYwLCAxMywgMjcsIDYsIDI0MSwgMTM2LCAxMywgMjcsIDYsIDIzOCwgMTI0LCAxMywgCisgICAgMjcsIDYsIDE5OSwgODAsIDEzLCAyNywgNiwgMjM4LCA3OSwgMTMsIDI3LCA2LCAyMDYsIDg4LCAxMywgMjcsIDYsIDIyOCwgCisgICAgNDEsIDEzLCAyNywgNiwgMjI3LCA1NCwgMTMsIDI3LCA2LCAyMjUsIDg3LCAxMywgMjcsIDYsIDIyMSwgNDEsIDEzLCAyNywgCisgICAgNiwgMjE4LCAxMzMsIDEzLCAyNywgNiwgMjAwLCAxNjksIDEzLCAyNywgNiwgMjE3LCA4MSwgMTMsIDI3LCA2LCAyMTUsIAorICAgIDIwNCwgMTMsIDI3LCA2LCAyMTMsIDkwLCAxMywgMjcsIDYsIDIwNiwgODksIDk5LCAxMywgMjcsIDYsIDIwOSwgMTYzLCAxMywgCisgICAgMjcsIDYsIDIwNiwgMjIxLCAxMywgMjcsIDYsIDIwMywgMjIwLCAxMywgMjcsIDYsIDIxNSwgMjI5LCAxMywgMjcsIDYsIAorICAgIDI0NiwgMjM2LCAxMywgMjcsIDYsIDIxNCwgMjM1LCAxMywgMjcsIDYsIDIxNywgODMsIDEzLCAyNywgMjIwLCAxNTIsIDEzLCAKKyAgICAyNywgNCwgMjUxLCAxMTIsIDEzLCAyNywgNCwgMjQ4LCAyMDgsIDEzLCAyNywgNCwgMjM2LCA2MCwgMTMsIDI3LCA0LCAyNDEsIAorICAgIDEzNiwgMTMsIDI3LCA0LCAyMzgsIDEyNCwgMTMsIDI3LCA0LCAxOTksIDgwLCAxMywgMjcsIDQsIDIzOCwgNzksIDEzLCAyNywgCisgICAgNCwgMjA2LCA4OCwgMTMsIDI3LCA0LCAyMjgsIDQxLCAxMywgMjcsIDQsIDIyNywgNTQsIDEzLCAyNywgNCwgMjI1LCA4NywgCisgICAgMTMsIDI3LCA0LCAyMjEsIDQxLCAxMywgMjcsIDQsIDIxOCwgMTMzLCAxMywgMjcsIDQsIDIwMCwgMTY5LCAxMywgMjcsIDQsIAorICAgIDIxNywgODEsIDEzLCAyNywgNCwgMjE1LCAyMDQsIDEzLCAyNywgNCwgMjEzLCA5MCwgMTMsIDI3LCA0LCA0NywgMjA5LCAKKyAgICAxNjMsIDEzLCAyNywgNCwgMjA5LCAxNjMsIDEzLCAyNywgNCwgMjA2LCAyMjEsIDEzLCAyNywgNCwgMjAzLCAyMjAsIDEzLCAKKyAgICAyNywgNCwgMjE1LCAyMjksIDEzLCAyNywgNCwgMjQ2LCAyMzYsIDEzLCAyNywgNCwgMjE0LCAyMzUsIDEzLCAyNywgNCwgCisgICAgMjE3LCA4MywgMTMsIDI3LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDI3LCAyMzgsIDEyNSwgOTksIDEzLCAyNywgMjA2LCAKKyAgICA4OSwgOTksIDEzLCAyNywgMjI3LCA1NSwgOTksIDEzLCAyNywgMjE1LCAyMzAsIDk5LCAxMywgMjcsIDIxMywgOTEsIDk5LCAKKyAgICAxMywgMjcsIDIxNSwgMjA1LCA5OSwgMTMsIDM5LCA2LCAyNTEsIDExMiwgMTMsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDM5LCAKKyAgICA2LCAyMzYsIDYwLCAxMywgMzksIDYsIDI0MSwgMTM2LCAxMywgMzksIDYsIDIzOCwgMTI0LCAxMywgMzksIDYsIDE5OSwgODAsIAorICAgIDEzLCAzOSwgNiwgMjM4LCA3OSwgMTMsIDM5LCA2LCAyMDYsIDg4LCAxMywgMzksIDYsIDIyOCwgNDEsIDEzLCAzOSwgNiwgCisgICAgMjI3LCA1NCwgMTMsIDM5LCA2LCAyMjUsIDg3LCAxMywgMzksIDYsIDIyMSwgNDEsIDEzLCAzOSwgNiwgMjE4LCAxMzMsIDEzLCAKKyAgICAzOSwgNiwgMjAwLCAxNjksIDEzLCAzOSwgNiwgMjE3LCA4MSwgMTMsIDM5LCA2LCAyMTUsIDIwNCwgMTMsIDM5LCA2LCAyMTMsIAorICAgIDkwLCAxMywgMzksIDYsIDIwNiwgODksIDk5LCAxMywgMzksIDYsIDIwOSwgMTYzLCAxMywgMzksIDYsIDIwNiwgMjIxLCAxMywgCisgICAgMzksIDYsIDIwMywgMjIwLCAxMywgMzksIDYsIDIxNSwgMjI5LCAxMywgMzksIDYsIDI0NiwgMjM2LCAxMywgMzksIDYsIAorICAgIDIxNCwgMjM1LCAxMywgMzksIDYsIDIxNywgODMsIDEzLCAzOSwgMjIwLCAxNTIsIDEzLCAzOSwgNCwgMjUxLCAxMTIsIDEzLCAKKyAgICAzOSwgNCwgMjQ4LCAyMDgsIDEzLCAzOSwgNCwgMjM2LCA2MCwgMTMsIDM5LCA0LCAyNDEsIDEzNiwgMTMsIDM5LCA0LCAyMzgsIAorICAgIDEyNCwgMTMsIDM5LCA0LCAxOTksIDgwLCAxMywgMzksIDQsIDIzOCwgNzksIDEzLCAzOSwgNCwgMjA2LCA4OCwgMTMsIDM5LCAKKyAgICA0LCAyMjgsIDQxLCAxMywgMzksIDQsIDIyNywgNTQsIDEzLCAzOSwgNCwgMjI1LCA4NywgMTMsIDM5LCA0LCAyMjEsIDQxLCAKKyAgICAxMywgMzksIDQsIDIxOCwgMTMzLCAxMywgMzksIDQsIDIwMCwgMTY5LCAxMywgMzksIDQsIDIxNywgODEsIDEzLCAzOSwgNCwgCisgICAgMjE1LCAyMDQsIDEzLCAzOSwgNCwgMjEzLCA5MCwgMTMsIDM5LCA0LCA0NywgMjA5LCAxNjMsIDEzLCAzOSwgNCwgMjA5LCAKKyAgICAxNjMsIDEzLCAzOSwgNCwgMjA2LCAyMjEsIDEzLCAzOSwgNCwgMjAzLCAyMjAsIDEzLCAzOSwgNCwgMjE1LCAyMjksIDEzLCAKKyAgICAzOSwgNCwgMjQ2LCAyMzYsIDEzLCAzOSwgNCwgMjE0LCAyMzUsIDEzLCAzOSwgNCwgMjE3LCA4MywgMTMsIDM5LCAyMTYsIAorICAgIDEwOCwgMjQxLCA0OCwgMTMsIDM5LCAyMzgsIDEyNSwgOTksIDEzLCAzOSwgMjA2LCA4OSwgOTksIDEzLCAzOSwgMjI3LCA1NSwgCisgICAgOTksIDEzLCAzOSwgMjE1LCAyMzAsIDk5LCAxMywgMzksIDIxMywgOTEsIDk5LCAxMywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjUxLCAxMTIsIDEzLCAyNywgMzksIDYsIDI0OCwgMjA4LCAxMywgMjcsIDM5LCA2LCAyMzYsIDYwLCAxMywgCisgICAgMjcsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDI3LCAzOSwgNiwgMjM4LCAxMjQsIDEzLCAyNywgMzksIDYsIDE5OSwgODAsIDEzLCAKKyAgICAyNywgMzksIDYsIDIzOCwgNzksIDEzLCAyNywgMzksIDYsIDIwNiwgODgsIDEzLCAyNywgMzksIDYsIDIyOCwgNDEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIyNywgNTQsIDEzLCAyNywgMzksIDYsIDIyNSwgODcsIDEzLCAyNywgMzksIDYsIDIyMSwgNDEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIxOCwgMTMzLCAxMywgMjcsIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDI3LCAzOSwgNiwgMjE3LCA4MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE1LCAyMDQsIDEzLCAyNywgMzksIDYsIDIxMywgOTAsIDEzLCAyNywgMzksIDYsIDIwNiwgODksIDk5LCAKKyAgICAxMywgMjcsIDM5LCA2LCAyMDksIDE2MywgMTMsIDI3LCAzOSwgNiwgMjA2LCAyMjEsIDEzLCAyNywgMzksIDYsIDIwMywgCisgICAgMjIwLCAxMywgMjcsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDI3LCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCAyNywgMzksIDYsIAorICAgIDIxNCwgMjM1LCAxMywgMjcsIDM5LCA2LCAyMTcsIDgzLCAxMywgMjcsIDM5LCAyMjAsIDE1MiwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjUxLCAxMTIsIDEzLCAyNywgMzksIDQsIDI0OCwgMjA4LCAxMywgMjcsIDM5LCA0LCAyMzYsIDYwLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyNDEsIDEzNiwgMTMsIDI3LCAzOSwgNCwgMjM4LCAxMjQsIDEzLCAyNywgMzksIDQsIDE5OSwgODAsIDEzLCAyNywgMzksIDQsIAorICAgIDIzOCwgNzksIDEzLCAyNywgMzksIDQsIDIwNiwgODgsIDEzLCAyNywgMzksIDQsIDIyOCwgNDEsIDEzLCAyNywgMzksIDQsIAorICAgIDIyNywgNTQsIDEzLCAyNywgMzksIDQsIDIyNSwgODcsIDEzLCAyNywgMzksIDQsIDIyMSwgNDEsIDEzLCAyNywgMzksIDQsIAorICAgIDIxOCwgMTMzLCAxMywgMjcsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDI3LCAzOSwgNCwgMjE3LCA4MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjE1LCAyMDQsIDEzLCAyNywgMzksIDQsIDIxMywgOTAsIDEzLCAyNywgMzksIDQsIDQ3LCAyMDksIDE2MywgMTMsIDI3LCAKKyAgICAzOSwgNCwgMjA5LCAxNjMsIDEzLCAyNywgMzksIDQsIDIwNiwgMjIxLCAxMywgMjcsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIAorICAgIDI3LCAzOSwgNCwgMjE1LCAyMjksIDEzLCAyNywgMzksIDQsIDI0NiwgMjM2LCAxMywgMjcsIDM5LCA0LCAyMTQsIDIzNSwgCisgICAgMTMsIDI3LCAzOSwgNCwgMjE3LCA4MywgMTMsIDI3LCAzOSwgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCAyNywgMzksIDIzOCwgCisgICAgMTI1LCA5OSwgMTMsIDI3LCAzOSwgMjA2LCA4OSwgOTksIDEzLCAyNywgMzksIDIyNywgNTUsIDk5LCAxMywgMjcsIDM5LCAKKyAgICAyMTUsIDIzMCwgOTksIDEzLCAyNywgMzksIDIxMywgOTEsIDk5LCAxMywgMjcsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCA0MywgCisgICAgMjcsIDYsIDI1MSwgMTEyLCAxMywgNDMsIDI3LCA2LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgNiwgMjM2LCA2MCwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDYsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCA2LCAxOTksIDgwLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMzgsIDc5LCAxMywgNDMsIDI3LCA2LCAyMDYsIDg4LCAxMywgNDMsIDI3LCA2LCAyMjgsIDQxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMjcsIDU0LCAxMywgNDMsIDI3LCA2LCAyMjUsIDg3LCAxMywgNDMsIDI3LCA2LCAyMjEsIDQxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgNiwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDYsIDIxNywgODEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIxNSwgMjA0LCAxMywgNDMsIDI3LCA2LCAyMTMsIDkwLCAxMywgNDMsIDI3LCA2LCAyMDYsIDg5LCA5OSwgMTMsIAorICAgIDQzLCAyNywgNiwgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDYsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCA2LCAyMDMsIDIyMCwgCisgICAgMTMsIDQzLCAyNywgNiwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDYsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCA2LCAyMTQsIAorICAgIDIzNSwgMTMsIDQzLCAyNywgNiwgMjE3LCA4MywgMTMsIDQzLCAyNywgMjIwLCAxNTIsIDEzLCA0MywgMjcsIDQsIDI1MSwgCisgICAgMTEyLCAxMywgNDMsIDI3LCA0LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgNCwgMjM2LCA2MCwgMTMsIDQzLCAyNywgNCwgMjQxLCAKKyAgICAxMzYsIDEzLCA0MywgMjcsIDQsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCA0LCAxOTksIDgwLCAxMywgNDMsIDI3LCA0LCAyMzgsIAorICAgIDc5LCAxMywgNDMsIDI3LCA0LCAyMDYsIDg4LCAxMywgNDMsIDI3LCA0LCAyMjgsIDQxLCAxMywgNDMsIDI3LCA0LCAyMjcsIAorICAgIDU0LCAxMywgNDMsIDI3LCA0LCAyMjUsIDg3LCAxMywgNDMsIDI3LCA0LCAyMjEsIDQxLCAxMywgNDMsIDI3LCA0LCAyMTgsIAorICAgIDEzMywgMTMsIDQzLCAyNywgNCwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDQsIDIxNywgODEsIDEzLCA0MywgMjcsIDQsIDIxNSwgCisgICAgMjA0LCAxMywgNDMsIDI3LCA0LCAyMTMsIDkwLCAxMywgNDMsIDI3LCA0LCA0NywgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDQsIAorICAgIDIwOSwgMTYzLCAxMywgNDMsIDI3LCA0LCAyMDYsIDIyMSwgMTMsIDQzLCAyNywgNCwgMjAzLCAyMjAsIDEzLCA0MywgMjcsIAorICAgIDQsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCA0LCAyNDYsIDIzNiwgMTMsIDQzLCAyNywgNCwgMjE0LCAyMzUsIDEzLCA0MywgCisgICAgMjcsIDQsIDIxNywgODMsIDEzLCA0MywgMjcsIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgNDMsIDI3LCAyMzgsIDEyNSwgOTksIAorICAgIDEzLCA0MywgMjcsIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAyMjcsIDU1LCA5OSwgMTMsIDQzLCAyNywgMjE1LCAyMzAsIAorICAgIDk5LCAxMywgNDMsIDI3LCAyMTMsIDkxLCA5OSwgMTMsIDQzLCAyNywgMjE1LCAyMDUsIDk5LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgMzksIDYsIDIzNiwgNjAsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgMTk5LCA4MCwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgNzksIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDg4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjI4LCA0MSwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgNTQsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjUsIAorICAgIDg3LCAxMywgNDMsIDI3LCAzOSwgNiwgMjIxLCA0MSwgMTMsIDQzLCAyNywgMzksIDYsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDM5LCA2LCAyMTcsIDgxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE1LCAyMDQsIAorICAgIDEzLCA0MywgMjcsIDM5LCA2LCAyMTMsIDkwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjAzLCAKKyAgICAyMjAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgMzksIDYsIDI0NiwgMjM2LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjE0LCAyMzUsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAzOSwgMjIwLCAKKyAgICAxNTIsIDEzLCA0MywgMjcsIDM5LCA0LCAyNTEsIDExMiwgMTMsIDQzLCAyNywgMzksIDQsIDI0OCwgMjA4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgMjM2LCA2MCwgMTMsIDQzLCAyNywgMzksIDQsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCAKKyAgICAxMjQsIDEzLCA0MywgMjcsIDM5LCA0LCAxOTksIDgwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCA3OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDQsIDIwNiwgODgsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjgsIDQxLCAxMywgNDMsIDI3LCAzOSwgNCwgMjI3LCA1NCwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIyNSwgODcsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjEsIDQxLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgMzksIDQsIDIxNywgODEsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA0LCAyMTUsIDIwNCwgMTMsIDQzLCAyNywgMzksIDQsIDIxMywgOTAsIDEzLCA0MywgMjcsIDM5LCA0LCAKKyAgICA0NywgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDQsIDIwNiwgMjIxLCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjAzLCAyMjAsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE0LCAyMzUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTcsIDgzLCAxMywgCisgICAgNDMsIDI3LCAzOSwgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCA0MywgMjcsIDM5LCAyMzgsIDEyNSwgOTksIDEzLCA0MywgMjcsIAorICAgIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgMzksIDIyNywgNTUsIDk5LCAxMywgNDMsIDI3LCAzOSwgMjE1LCAyMzAsIAorICAgIDk5LCAxMywgNDMsIDI3LCAzOSwgMjEzLCA5MSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCAyNywgNiwgCisgICAgMjQxLCA0MiwgMTMsIDI3LCA0LCAyNDEsIDQyLCAxMywgMjcsIDE3LCAxOTksIDgxLCAxMywgMjcsIDE3LCAxMDIsIDEzLCAKKyAgICAyNywgMTcsIDEwNSwgMTMsIDI3LCAxNywgMTQ3LCAxMywgMjcsIDE3LCAxNDksIDEzLCAyNywgMTcsIDE2NCwgMTMsIDI3LCAKKyAgICAxNywgMTg3LCAxMywgMjcsIDE3LCAyMTAsIDEzNSwgMTMsIDI3LCAxNywgMTkyLCAxMywgMjcsIDE3LCAyMTksIDExMywgMTMsIAorICAgIDE3NSwgMTcsIDE5OSwgODEsIDEzLCAxNzUsIDE3LCAxMDIsIDEzLCAxNzUsIDE3LCAxMDUsIDEzLCAxNzUsIDE3LCAxNDcsIAorICAgIDEzLCAxNzUsIDE3LCAxNDksIDEzLCAxNzUsIDE3LCAxNjQsIDEzLCAxNzUsIDE3LCAxODcsIDEzLCAxNzUsIDE3LCAyMTAsIAorICAgIDEzNSwgMTMsIDE3NSwgMTcsIDE5MiwgMTMsIDE3NSwgMTcsIDIxOSwgMTEzLCAxMywgNDMsIDE3LCAxOTksIDgxLCAxMywgCisgICAgNDMsIDE3LCAxMDIsIDEzLCA0MywgMTcsIDEwNSwgMTMsIDQzLCAxNywgMTQ3LCAxMywgNDMsIDE3LCAxNDksIDEzLCA0MywgCisgICAgMTcsIDE2NCwgMTMsIDQzLCAxNywgMTg3LCAxMywgNDMsIDE3LCAyMTAsIDEzNSwgMTMsIDQzLCAxNywgMTkyLCAxMywgNDMsIAorICAgIDE3LCAyMTksIDExMywgMTMsIDQzLCAyNywgMTcsIDE5OSwgODEsIDEzLCA0MywgMjcsIDE3LCAxMDIsIDEzLCA0MywgMjcsIAorICAgIDE3LCAxMDUsIDEzLCA0MywgMjcsIDE3LCAxNDcsIDEzLCA0MywgMjcsIDE3LCAxNDksIDEzLCA0MywgMjcsIDE3LCAxNjQsIAorICAgIDEzLCA0MywgMjcsIDE3LCAxODcsIDEzLCA0MywgMjcsIDE3LCAyMTAsIDEzNSwgMTMsIDQzLCAyNywgMTcsIDE5MiwgMTMsIAorICAgIDQzLCAyNywgMTcsIDIxOSwgMTEzLCAxMywgMjIxLCA5MywgMTcsIDE5OSwgODEsIDEzLCAyMjEsIDkzLCAxNywgMTAyLCAxMywgCisgICAgMjIxLCA5MywgMTcsIDEwNSwgMTMsIDIyMSwgOTMsIDE3LCAxNDcsIDEzLCAyMjEsIDkzLCAxNywgMTQ5LCAxMywgMjIxLCAKKyAgICA5MywgMTcsIDE2NCwgMTMsIDIyMSwgOTMsIDE3LCAxODcsIDEzLCAyMjEsIDkzLCAxNywgMjEwLCAxMzUsIDEzLCAyMjEsIAorICAgIDkzLCAxNywgMTkyLCAxMywgMjIxLCA5MywgMTcsIDIxOSwgMTEzLCAyMywgMTMxLCAyMjgsIDEwMywgMjMsIDIzNCwgMTk2LCAKKyAgICAyMjgsIDEwMywgMjMsIDIzNCwgMTkyLCAyMjgsIDEwMywgMjMsIDIzNCwgMTgxLCAyMjgsIDEwMywgMjMsIDIzNCwgMTg1LCAKKyAgICAyMjgsIDEwMywgMjMsIDIzNCwgMTk4LCAyMjgsIDEwMywgMjMsIDEzMSwgMTI0LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTk2LCAKKyAgICAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDIxMywgCisgICAgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAxMjQsIDI0MiwgMjAwLCAyMywgMTMxLCAxMjQsIDIzNCwgNTAsIDIzLCAxMzEsIAorICAgIDEyNCwgMjM0LCA1MSwgMjI0LCA1OSwgMjMsIDIzNCwgMTk2LCAxMjQsIDIzNCwgNTIsIDIzLCAxMzEsIDEyNCwgMjIxLCAKKyAgICAyMDQsIDIzLCAyMzQsIDE5NiwgMTI0LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDEwMSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIAorICAgIDExNSwgMTAxLCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDIzNCwgNTEsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU3LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTgsIDEwMSwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyNDIsIDIwMCwgMjMsIAorICAgIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDIsIDIzMSwgMjMsIDIzNCwgCisgICAgMTk2LCAxMjQsIDEwMSwgMjQyLCAyMzEsIDIzLCAxMzEsIDEwMSwgMjQ4LCAyMjAsIDExOSwgMjI4LCAxMDMsIDIzLCAxMzEsIAorICAgIDEyNCwgMjQ4LCAyMjAsIDExOSwgMjIxLCAyMDQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMDYsIDM0LCAyMywgMjM0LCAxOTYsIAorICAgIDEyNCwgMTAxLCAyMDYsIDM0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjA4LCA2OCwgMTUzLCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxMDEsIDI0OCwgMjIwLCAxNTMsIDIwOCwgNjcsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0OCwgMjE5LCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjM0LCA1MSwgMjA4LCAyMDIsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTE1LCAxMDEsIAorICAgIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTE1LCAxMDEsIDIzNCwgNTEsIDE1MywgMjQzLCA1NywgCisgICAgMjMsIDEzMSwgMTI0LCAyMzQsIDUxLCAxMDEsIDExNSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDExNSwgCisgICAgMjA4LCAyMDIsIDE1MywgMjM2LCAyMzMsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0MiwgMjAwLCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMTUzLCAyNDYsIDE1NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjMzLCAxODUsIDIzLCAxMzEsIDEyNCwgMTAxLCAKKyAgICAxNTMsIDIzNCwgNTAsIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDEyNCwgMTAxLCAyMDgsIDY3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzUsIAorICAgIDI0MywgNTcsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTAxLCAxNTMsIDIzMywgMTg2LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgMjMzLCAxODYsIDEwMSwgMjAzLCAKKyAgICAyMjgsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyMzQsIDUxLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQyLCAyMzIsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIzNiwgMjMzLCAKKyAgICAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjQyLCAyMDEsIDE1MywgMjM2LCAyMzMsIDIzLCAxMzEsIDEwMSwgMTUzLCAKKyAgICAyNDIsIDIwMSwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMjAxLCAxMDEsIDIwMywgMjI4LCAyMywgCisgICAgMTMxLCAxMDEsIDE1MywgNDQsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMTUzLCA0NCwgMTI0LCAyMzQsIDUwLCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjUxLCA2OSwgMjE2LCAyNTUsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAKKyAgICAyNTEsIDY5LCAyMjgsIDExOCwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDQ0LCAxMDEsIDIwMywgMjI4LCAKKyAgICAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNDMsIDU4LCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNTEsIAorICAgIDY5LCAyMTYsIDI1NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjUxLCA2OCwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgCisgICAgNjksIDIxNiwgMjU1LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCA2OSwgMjE2LCAyNTUsIDEyNCwgCisgICAgMjQyLCAyMzEsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIDY5LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgCisgICAgMjMzLCAxODYsIDEwMSwgMjM0LCA1MCwgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MSwgMjMsIDIzNCwgMTg3LCAKKyAgICAyMzYsIDIyOSwgMjM3LCA4MiwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODIsIDIzNCwgNTAsIAorICAgIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTcsIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgCisgICAgODIsIDI0MywgNTgsIDIwOCwgMjA5LCAyMywgMjM0LCAxOTQsIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU3LCAyMywgMTMxLCAKKyAgICAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1OCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NSwgMjM2LCAyMjksIDIzNywgODIsIAorICAgIDI0MywgNTcsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM0LCAKKyAgICAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgCisgICAgMjAyLCAyMzYsIDIyOSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgCisgICAgMjAyLCAyMzYsIDIyOSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDI0OCwgCisgICAgMjE5LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjQ4LCAyMTksIDIzLCAKKyAgICAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE5MiwgMjM3LCAKKyAgICA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE5MiwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIxNywgNTMsIAorICAgIDIzLCAyMzQsIDE4NSwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIxNywgNTMsIDIzLCAyMzQsIDE4MSwgMjM3LCA2MSwgCisgICAgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTAsIDIzLCAKKyAgICAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIAorICAgIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTEsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAKKyAgICAxODYsIDIzLCAyMzQsIDE4NywgMjQ4LCAyMDYsIDIxNiwgMTc3LCAyMzcsIDE4MSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExNywgCisgICAgMjMsIDIzNCwgMTg3LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAxNTMsIDIwOSwgMTc0LCAyMywgCisgICAgMjM0LCAxODcsIDE1MywgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTg3LCAyMDgsIAorICAgIDIxMCwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyNDcsIDU1LCAyMywgMjM0LCAxODcsIAorICAgIDIwOCwgMjEwLCAyNDcsIDU2LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyNDcsIDU2LCAxNTMsIAorICAgIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMDgsIDIxMCwgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MywgMjMsIAorICAgIDIzNCwgMTk0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxOTQsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxOTQsIAorICAgIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE4MywgMjQyLCAxOTcsIDIzLCAyMzQsIDE4MiwgMjMsIDIzNCwgMTkyLCAyMTcsIAorICAgIDUzLCAyMywgMjM0LCAxOTEsIDIzLCAyMzQsIDE5MiwgMTc2LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxOTIsIDE1MywgCisgICAgMjA5LCAxNzQsIDIzLCAyMzQsIDE5MiwgMTc2LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTkyLCAyMTgsIDI0MiwgCisgICAgMjA2LCAzNCwgMjMsIDIzNCwgMTkyLCAxNzYsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE5MiwgMTUzLCAyMzYsIDIzMywgCisgICAgMjMsIDIzNCwgMTkwLCAyMTcsIDUzLCAyMywgMjM0LCAxODksIDIzLCAyMzQsIDE5NSwgMjMsIDIzNCwgMTgwLCAyMywgMjM0LCAKKyAgICAxODEsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE4MSwgMTUzLCAKKyAgICAyMzYsIDIzMywgMjMsIDIzNCwgMTg1LCAyMTcsIDUzLCAyMywgMjM0LCAxODUsIDE3NiwgMTUzLCAyMzYsIDIzMywgMjMsIAorICAgIDIzNCwgMTg0LCAyMywgMjM0LCAxODUsIDIwOSwgNTMsIDIzLCAyMzQsIDE4NSwgMTc2LCAxNTMsIDIwOSwgMTc0LCAyMywgCisgICAgMjM0LCAxODUsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NSwgMTc2LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgCisgICAgMTg1LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTg1LCAxNTMsIDIwOSwgMTc1LCAyMDUsIDE0MCwgMjI4LCAxMDMsIAorICAgIDIzLCAyMzQsIDE4NSwgMTUzLCAyNDgsIDIwNiwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxOTcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAKKyAgICAyMTMsIDI2LCAyMywgMjM0LCAxOTgsIDEyNCwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxODUsIDIyNCwgMTQ3LCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjEzLCAyNywgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDMsIDU3LCAKKyAgICAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDMsIDU3LCAyMywgMTMxLCAyMjQsIDE0OCwgMjM5LCAxNjcsIAorICAgIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxMywgMjIsIDIwOCwgNjcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxMywgCisgICAgMjIsIDI0MiwgMTg3LCAyMywgMTMxLCAyMjQsIDE0OCwgMTI3LCAyMTcsIDcsIDI0NiwgMTU0LCAyMywgMTMxLCAyMjQsIAorICAgIDE0OCwgMjAzLCAyMjgsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTk2LCAKKyAgICAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE4MSwgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxOTgsIDIyNCwgCisgICAgMTQ4LCAyMDMsIDIyOCwgMjMsIDEzMSwgMjI0LCAxNDgsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAyMjQsIDE0OCwgCisgICAgMjQ4LCAyMTksIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMDUsIDE0MSwgMjA2LCAzNCwgMjMsIDEzMSwgMjI0LCAxNDgsIDIwNiwgCisgICAgMzQsIDIzLCAyMzQsIDE4NSwgMjI0LCAxNDgsIDIwNiwgMzQsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjQsIDIwNiwgMzQsIDIzLCAKKyAgICAyMzQsIDE4NSwgMjI0LCAxNDgsIDEyNCwgMjA2LCAzNCwgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMTI0LCAxNTMsIDEyNCwgCisgICAgMTUzLCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMTI0LCAxNTMsIDEyNCwgMjA2LCAzNCwgMjMsIDEzMSwgCisgICAgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTYsIDIyNCwgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTg1LCAyMjQsIAorICAgIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5OCwgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMTMxLCAxMjQsIDEwMSwgMjI0LCAKKyAgICAxNDcsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAyMjQsIDE0NywgCisgICAgMjMsIDIzNCwgMTg1LCAyMTMsIDI2LCAyMywgMjM0LCAxOTgsIDEyNCwgMTAxLCAyMjQsIDE0NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MiwgMjM1LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjQyLCAyMzUsIDIyNCwgMTQ3LCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAyMzksIDE2NywgMjMsIDIzNCwgMTg1LCAyMTMsIDI3LCAxMjcsIDEyNCwgMTUzLCAyMzMsIDE4NywgCisgICAgMjIxLCAyMDQsIDIzLCAyMzQsIDE5OCwgMjEzLCAyNywgMTI3LCAxMDEsIDE1MywgMTI0LCAyNDIsIDIzNCwgMjMsIDEzMSwgCisgICAgMjEzLCAyNywgMjAzLCAyMjgsIDIzLCAxMzEsIDIxMywgMjcsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAyMTMsIDI3LCAKKyAgICAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTgxLCAyMTMsIDI3LCAyMjQsIAorICAgIDE0NywgMjMsIDIzNCwgMTk4LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDEzMSwgMjEzLCAyNywgMjIxLCAyMDQsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDEwMSwgMjQzLCA1NywgMjMsIDEzMSwgMjEzLCAyNywgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMjI4LCAxMDMsIDIzLCAxMzEsIDIxMywgMjcsIDIwNiwgMzQsIDIzLCAyMzQsIDE4MywgMjEzLCAyNywgCisgICAgMjA2LCAzNCwgMjMsIDEzMSwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTAsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNywgNzgsIDIzLCAyMzQsIDE4MywgCisgICAgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAyMzQsIDE4MywgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgCisgICAgMjI4LCAxMTcsIDIzLCAyMzQsIDE4MywgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjAzLCAyNTIsIDIzLCAyMzQsIDE5MiwgCisgICAgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAKKyAgICAxOTgsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDEyNCwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDcsIDIzLCAxMzEsIDEwMSwgMjM5LCAxNjcsIDIzLCAyMzQsIDE4NSwgMjIxLCAyMDQsIDIzLCAxMzEsIDEwMSwgMjAzLCAKKyAgICAyMjgsIDIzLCAyMzQsIDE5NiwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MSwgMjMsIAorICAgIDEzMSwgMTAxLCAxMTUsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMDYsIDM0LCAyMywgMTMxLCAxMDEsIAorICAgIDE1MywgMjI0LCAxNDcsIDIzLCAxMzEsIDEwMSwgMjI0LCAxNDcsIDIzLCAxMzEsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIAorICAgIDIzLCAyMzQsIDE5NiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTkwLCAxMDEsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ4LCAyMTcsIDc4LCAyMywgMjM0LCAxOTIsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTAxLCAKKyAgICAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIAorICAgIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMjgsIDExNywgMjMsIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0OCwgMjE5LCAyMywgMjM0LCAxOTQsIAorICAgIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTcsIDIzLCAyMzQsIDE5NCwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgCisgICAgMjQzLCA1OCwgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1OCwgMjE2LCAKKyAgICAyNTQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1OCwgMjI4LCAxMTcsIDIzLCAyMzQsIAorICAgIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1NywgMjMsIDIzNCwgMTg1LCAxMjQsIDIzNCwgNTAsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg1LCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgCisgICAgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDEsIDcwLCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDE1MywgMjQzLCA1NywgCisgICAgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIAorICAgIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMjQ4LCA5NiwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTUzLCAyMDksIDE3NSwgMTI0LCAyMzQsIDUyLCAyMywgMTMxLCAxMjQsIDE1MywgMjM2LCAyMzQsIDEyNCwgMjA4LCAKKyAgICA2NywgMjMsIDEzMSwgMTI0LCAxNTMsIDIzNiwgMjM0LCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMTE3LCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAxOTcsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDE5MCwgMTUzLCAyMjgsIDczLCAKKyAgICAyMywgMjM0LCAxOTQsIDEyNCwgMTUzLCAyNDIsIDE5MCwgMTUzLCAyMjgsIDczLCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAKKyAgICAxOTAsIDE1MywgMjAzLCAyNTIsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDYsIDE1NSwgMjMsIDIzNCwgMTkyLCAxMjQsIDIwNiwgCisgICAgMzQsIDIzLCAyMzQsIDE5MiwgMTI0LCAxNTMsIDIxNywgNTMsIDIzLCAyMzQsIDE4NSwgMTI0LCAxNTMsIDIxNywgNTMsIDIzLCAKKyAgICAyMzQsIDE4NSwgMTI0LCAxNTMsIDIyNSwgNzAsIDIzLCAyMzQsIDE4NSwgMTI0LCAyMDYsIDM0LCAyMywgMjM0LCAxODUsIAorICAgIDEyNCwgMTUzLCAyMDksIDUzLCAyMywgMjM0LCAxOTgsIDEyNCwgMTUzLCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAxMjQsIAorICAgIDE1MywgMjI4LCAxMTcsIDIzLCAyMzQsIDE5OCwgMTI0LCAyMDYsIDM0LCAyMywgMTMxLCAyMDYsIDM0LCAyMywgMTMxLCAKKyAgICAxNTMsIDIzNCwgMTE3LCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAyNDEsIDcwLCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAKKyAgICAyNDMsIDU3LCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTUzLCAyMzYsIDIzMywgMjMsIAorICAgIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTI0LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTAxLCAyMTMsIDI2LCAKKyAgICAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMTIwLCAKKyAgICAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDExOSwgMTIwLCAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjYsIAorICAgIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDIzNiwgMjI5LCAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDExOSwgCisgICAgMjM2LCAyMjksIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgMjM0LCAxODgsIDIzLCAxMzEsIDIzNCwgMTE3LCAyMywgMjA1LCAKKyAgICAxNDIsIDIwOSwgMTM4LCAyMywgMjA1LCAxNDIsIDIyMSwgMjAsIDIzLCAyMDUsIDE0MiwgMjQ4LCAyMDUsIDIzLCAyMzUsIAorICAgIDc4LCAyMDksIDEzOCwgMjMsIDIzNSwgNzgsIDIyMSwgMjAsIDIzLCAyMzUsIDc4LCAyNDgsIDIwNSwgMjMsIDIwOCwgNTIsIAorICAgIDIwOSwgMTM4LCAyMywgMjA4LCA1MiwgMjIxLCAyMCwgMjMsIDIwOCwgNTIsIDI0OCwgMjA1LCAyMywgMjQ4LCA0NCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyNDgsIDQ0LCAyMjEsIDIwLCAyMywgMjQ4LCA0NCwgMjQ4LCAyMDUsIDIzLCAyMTIsIDE3MywgMjA5LCAxMzgsIAorICAgIDIzLCAyMTIsIDE3MywgMjIxLCAyMCwgMjMsIDIxMiwgMTczLCAyNDgsIDIwNSwgMjMsIDIwNywgMjAzLCAyMDcsIDExNiwgCisgICAgMjMsIDIwNywgMjAzLCAyNDgsIDIwNSwgMjMsIDIwOCwgMTg5LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIwOCwgMTg5LCA0LCAKKyAgICAyMDksIDEzOCwgMjMsIDIwOCwgMTg5LCAyMjUsIDcxLCAyMjEsIDIwLCAyMywgMjA4LCAxODksIDQsIDIyMSwgMjAsIDIzLCAKKyAgICAyMDgsIDE4OSwgMjEwLCAxNTAsIDIzLCAyMzcsIDM1LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIzNywgMzUsIDQsIDIwOSwgCisgICAgMTM4LCAyMywgMjM3LCAzNSwgMjI1LCA3MSwgMjIxLCAyMCwgMjMsIDIzNywgMzUsIDQsIDIyMSwgMjAsIDIzLCAyMzcsIDM1LCAKKyAgICAyMTAsIDE1MCwgMjMsIDIwOCwgMTg5LCAyMzcsIDM1LCAyNTEsIDEwNiwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyMjUsIAorICAgIDcwLCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDIwOSwgNTMsIDIzLCAyMjEsIDUxLCAxMTUsIDIxMCwgMTUwLCAyMywgMjIxLCAKKyAgICA1MSwgMTI3LCAyMTAsIDE1MCwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyNTEsIDEwNywgMjI1LCA3MCwgMjMsIDIyMSwgNTEsIAorICAgIDExNSwgMTI3LCAyNTEsIDEwNywgMjA5LCA1MywgMjMsIDIyMSwgNTEsIDIwOSwgMTc1LCAyMDUsIDE4NiwgMjA5LCAxNzUsIAorICAgIDIxMSwgMjE2LCAyMywgMjIxLCA1MCwgMjM3LCA4NywgMjQzLCA0NywgMjMsIDIyMSwgNTIsIDIzNywgODcsIDI0MywgNDcsIAorICAgIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgCisgICAgMjA4LCA2OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIAorICAgIDUzLCAyMDgsIDY3LCAyMywgMjIxLCA1MCwgNTMsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgNTMsIDI1MSwgCisgICAgMTA2LCAyMywgMjIxLCA1MCwgNTMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDI0MiwgMjM0LCAKKyAgICAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjA4LCA2OCwgMjIxLCA1NCwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDIwMCwgMjIwLCAKKyAgICAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjUxLCAxMDYsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyNTEsIDEwNywgCisgICAgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMDksIDUzLCAKKyAgICAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIyNSwgNzAsIDIzLCAyMjEsIAorICAgIDUwLCAyNDMsIDE2LCAyMTIsIDIyNiwgMjMsIDIyMSwgNTAsIDI0NywgNywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0NywgNywgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0NywgNywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDEwMCwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTAsIDEwMCwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDEwMCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIAorICAgIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMTk5LCAyNywgMjI1LCA3MCwgCisgICAgMjMsIDIyMSwgNTAsIDIxNiwgNjksIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMTYsIDY5LCAyMjIsIDY1LCAyMywgMjIxLCAKKyAgICA1MCwgMjE2LCA2OSwgMjI1LCA3MCwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMiwgCisgICAgMjEyLCAyMjQsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI0LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEyLCAyMTIsIAorICAgIDIyNSwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjUsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI1LCAKKyAgICAyNTEsIDEwNiwgMjMsIDIwNSwgMTEyLCAyMTAsIDk1LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAyMDgsIDIxOCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIDIwOCwgMjE4LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgCisgICAgMjA4LCAyMTgsIDIwNSwgODIsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjI1LCA2OCwgCisgICAgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIyMiwgNjUsIDIzLCAyMjEsIAorICAgIDUzLCAyMDUsIDEzNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMjUsIDY4LCAyMywgMjIxLCA1MywgMjQ4LCAKKyAgICAyMDYsIDI1MCwgMTE2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAKKyAgICAyMjUsIDY4LCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIAorICAgIDIwNSwgMTM2LCAyMjIsIDY1LCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgCisgICAgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMjUsIDY4LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjUsIAorICAgIDcwLCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgNjgsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjAwLCAKKyAgICAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCA1MywgMjA4LCA2NywgMjMsIDIyMSwgNTIsIDUzLCAyMDAsIDIyMCwgMjM3LCAKKyAgICAzOCwgMjMsIDIyMSwgNTIsIDUzLCAyNTEsIDEwNiwgMjMsIDIyMSwgNTIsIDUzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgCisgICAgMzgsIDIzLCAyMjEsIDUyLCAyNDIsIDIzNCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDIwOCwgNjgsIDIyMSwgNTQsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDUsIDgzLCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDI1MSwgMTA3LCAyMjEsIAorICAgIDU0LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgMjQ4LCAKKyAgICAyMjIsIDIzLCAyMjEsIDUyLCAyNDMsIDE2LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQzLCAxNiwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTIsIDI0MywgMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDcsIDYsIDIzLCAyMjEsIDUyLCAxMDAsIDIwOSwgCisgICAgNTMsIDIzLCAyMjEsIDUyLCAxMDAsIDIyMiwgNjUsIDIzLCAyMjEsIDUyLCAxMDAsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAKKyAgICAxOTksIDI3LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMTk5LCAyNywgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDE5OSwgMjcsIAorICAgIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIyNSwgNzAsIDIzLCAyMDUsIDExMywgMjEyLCAyMjUsIDIwOSwgMTM4LCAyMywgMjA1LCAKKyAgICAxMTMsIDIxMiwgMjI1LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNSwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMywgCisgICAgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjA1LCAxMTMsIDIxMiwgMjI0LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEzLCAyMTIsIAorICAgIDIyNCwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMywgMjEwLCA5NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAKKyAgICAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgCisgICAgMjE0LCA4OCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgCisgICAgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgMjEyLCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIwNiwgNDAsIDI0NiwgMTU2LCAyMDksIDUzLCAyMywgMjIxLCAKKyAgICA1MCwgMjQyLCAxOTAsIDIwNiwgNDAsIDI0NiwgMTU2LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjA5LCA1MywgCisgICAgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMjUsIDcwLCAyMywgMjIxLCAKKyAgICA1MCwgMjI0LCA3NSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIyNCwgNzUsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMjQsIAorICAgIDc1LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAKKyAgICAyNDIsIDE5MCwgNTMsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgNTMsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgNTMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgCisgICAgMjA1LCA4MywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAyMDUsIDgzLCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDIwNSwgODMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjA2LCAKKyAgICA5OCwgMjA4LCA2NywgMjMsIDIyMSwgNTAsIDI0MiwgMTg4LCAyNDIsIDIzNSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0MiwgCisgICAgMTg4LCAyNDIsIDIzNSwgMjIyLCA2NSwgMjMsIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIxMiwgMjI0LCAyMzksIDE3NSwgCisgICAgMjMsIDIxMiwgMjI0LCAyNTEsIDEwOCwgMjMsIDIyMSwgNTAsIDIxMCwgOTUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgCisgICAgMTAyLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjAxLCAKKyAgICA3OCwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAyMjQsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyMzYsIAorICAgIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIDIyNCwgNTMsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgCisgICAgMjI0LCAyNTEsIDEwNywgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMjQsIAorICAgIDc1LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjEyLCAKKyAgICAyMjQsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIxMiwgMjI0LCA1MywgMjM0LCA0NCwgMjQ2LCAyNDMsIAorICAgIDIzLCAyMTIsIDIyNCwgMjUxLCAxMDcsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgCisgICAgMjE2LCA5MSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIDIxNiwgOTEsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAyMTYsIDkxLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDI0NywgNjUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MCwgCisgICAgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCAKKyAgICA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAKKyAgICAyNDcsIDY1LCA0LCAyMDUsIDgyLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgCisgICAgMjA1LCA4MiwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCAKKyAgICA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAKKyAgICAyMzQsIDQ0LCAyNDcsIDY1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIAorICAgIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzAsIDIzLCAyMTIsIDIyNSwgMjA5LCAxMzksIDIzNCwgCisgICAgNDQsIDI0NywgNjQsIDIzLCAyMTIsIDIyNSwgNTMsIDIzNCwgNDQsIDI0NywgNjQsIDIzLCAyMTIsIDIyNSwgMjUxLCAxMDcsIAorICAgIDIzNCwgNDQsIDI0NywgNjQsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjM3LCAzMiwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCAKKyAgICA0NCwgMjM3LCAzMiwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIAorICAgIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIwNSwgODMsIDQsIDIwNSwgCisgICAgODIsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDUsIDgzLCAyMjUsIDcxLCAyMDUsIDgyLCAKKyAgICAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIAorICAgIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIAorICAgIDIzNywgMzIsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MSwgCisgICAgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDksIDUzLCAyMywgMjIxLCA1MiwgCisgICAgMjAxLCA3OCwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOSwgMjM0LCA0NCwgMjM3LCAKKyAgICAzMSwgMjMsIDIxMiwgMjI1LCA1MywgMjM0LCA0NCwgMjM3LCAzMSwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNywgMjM0LCA0NCwgCisgICAgMjM3LCAzMSwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjUsIDY4LCAyMywgMjIxLCAKKyAgICA1MiwgMjQyLCAxOTAsIDI0NiwgNzQsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjI0LCAKKyAgICA3NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIwOSwgNDEsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMDksIAorICAgIDUzLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOCwgMjMsIDIxMiwgMjI1LCAKKyAgICAyMzksIDE3NSwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNiwgMjMsIDIyMSwgNTIsIDIxMCwgOTYsIDIxNiwgMTIwLCAyMywgCisgICAgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjIyLCA2NiwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDQsIDIzOSwgMTc1LCAyMywgCisgICAgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCAyMjIsIDY2LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAKKyAgICAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjIyLCA2NiwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgMTU2LCAKKyAgICAyMzQsIDQ0LCAyMDEsIDEwMywgMjIyLCA2NiwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIAorICAgIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIwMCwgMjIwLCAyNDYsIDE1NiwgCisgICAgMjM2LCAyMDAsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzYsIDIwMCwgMjM5LCAxNzUsIAorICAgIDIzLCAyMjEsIDUyLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMDksIDEzOCwgMjMsIDIyMSwgCisgICAgNTIsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjM3LCAKKyAgICA4NywgMjQ2LCAxNTMsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjM3LCA4NywgMjQ2LCAxNTMsIDIzOSwgMTc1LCAyMywgCisgICAgMjIxLCA1MiwgMjM3LCA4NywgMjQ2LCAxNTMsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIAorICAgIDIzNywgODcsIDI0NiwgMTUzLCAyMzQsIDQ0LCAyMDEsIDEwMywgMjM5LCAxNzUsIDIzLCAyMzksIDk4LCAyNTAsIDIwMywgCisgICAgMjA5LCA1MywgMjMsIDIzOSwgOTgsIDI1MCwgMjAzLCAyMjUsIDcwLCAyMywgMjM5LCA5OCwgMjM3LCAxNjEsIDIzLCAyMzksIAorICAgIDk4LCAyMDksIDU2LCAyMywgMjM5LCA5OCwgMjA2LCAxNTksIDIzLCAyMzksIDk4LCAyMTMsIDE0NywgMjMsIDIzOSwgOTgsIAorICAgIDIwOSwgMTQ0LCAyMywgMjM5LCA5OCwgMjA5LCAxNDUsIDI1MSwgMTA2LCAyMywgMjM5LCA5OCwgMjM4LCA1MiwgMjE3LCA4LCAKKyAgICAyMDUsIDIzNCwgMjMsIDIzOSwgOTgsIDIzNSwgODgsIDIzLCAyMzQsIDEzNiwgMjMsIDIzNCwgMTM3LCAyMTMsIDMxLCAyMywgCisgICAgMjM0LCAxMzcsIDIyMSwgNTAsIDIwOCwgNjcsIDIzLCAyMzQsIDEzNywgMjIxLCA1MCwgMjA1LCAyMzcsIDIzLCAyMzQsIAorICAgIDEzNywgMjIxLCA1MiwgMjA4LCA2NywgMjMsIDIzNCwgMTM3LCAyMjEsIDUwLCAyNDIsIDE4OSwgMjMsIDIzNCwgMTM3LCAKKyAgICAyMjEsIDUyLCAyNDIsIDE4OSwgMjMsIDIzNCwgMTM3LCAyMjEsIDU1LCAyNDYsIDE1NSwgMjMsIDIzNywgMTkwLCAyNDEsIDksIAorICAgIDIxNSwgNzAsIDIxOCwgMjE3LCAyMzYsIDIzNCwgMjA1LCAyMzUsIDIzLCAyMzcsIDE5MCwgMjQxLCA5LCAyMTUsIDcwLCAKKyAgICAyMTgsIDIxNywgMTE1LCAyMTcsIDM0LCAyMzksIDE2NywgMjMsIDIzNywgMTkwLCAyNDEsIDksIDIxNSwgNzAsIDIxOCwgCisgICAgMjE3LCAxMTUsIDIxNywgMzQsIDEyNywgMjA1LCAyMzUsIDIzLCAyMzgsIDIxLCAyMDgsIDY4LCAyMDMsIDIyOCwgMjMsIAorICAgIDIzOCwgMjEsIDIwOCwgNjgsIDIyMCwgOSwgMjMsIDIzOCwgMjEsIDIwOCwgNjgsIDIzOSwgMTY3LCAyMywgMjM5LCAxNTQsIAorICAgIDIzOCwgMjEsIDIyMCwgMTAsIDIzOSwgMTY3LCAyMywgMjM5LCAxNTQsIDIzOCwgMjEsIDEyNywgMjIwLCA5LCAyMywgMjM5LCAKKyAgICAxNTQsIDIzOCwgMjEsIDExNSwgMjIwLCA5LCAyMywgMjM5LCAxNTQsIDIzOCwgMjEsIDIyMCwgMTAsIDIwMywgMjI4LCAyMywgCisgICAgMjM2LCAyNDcsIDIyMCwgOSwgMjMsIDIzNiwgMjQ3LCAyNDMsIDQ3LCAyMywgMjM2LCAyNDcsIDIwMCwgMjIzLCAyMywgMjM4LCAKKyAgICAxNiwgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDIwOCwgMTg4LCAyMywgMjM4LCAxNiwgMjQ2LCAxMDksIDIzLCAyMzgsIDIzLCAKKyAgICAyNDgsIDEzNSwgMjA5LCAxMzgsIDIzLCAyMzgsIDIzLCAyNDgsIDEzNSwgMjIxLCAyMCwgMjMsIDIzOCwgMTYsIDE2NywgCisgICAgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDIwMSwgMjgsIDIxNywgNTMsIDIzLCAyMzgsIDE2LCAxNjcsIDI0NiwgMTA5LCAyMywgCisgICAgMjM4LCAxNiwgMjAxLCAyNiwgMjIxLCA1NCwgMjMsIDIzOCwgMjMsIDIwMSwgOSwgMjMsIDIzOCwgMTcsIDIwMywgMjI4LCAKKyAgICAyMywgMjM4LCAxNywgMjM5LCAxNjcsIDIzLCAyMzgsIDE3LCAyMzcsIDE4LCAyMywgMjM4LCAxOSwgMjA4LCA2NywgMjMsIAorICAgIDIzOCwgMTksIDIwOCwgNjgsIDIzOSwgMTc1LCAyMywgMjM4LCAxOSwgMjA4LCA2OCwgMjUxLCAxMDYsIDIzLCAyMzgsIDIwLCAKKyAgICAyMDgsIDY3LCAyMywgMjM4LCAyMCwgMjA4LCA2OCwgMjM5LCAxNzUsIDIzLCAyMzgsIDIwLCAyMDgsIDY4LCAyNTEsIDEwNiwgCisgICAgMjMsIDIzOCwgMTksIDI0MiwgMTg3LCAyMywgMjM4LCAyMCwgMjQyLCAxODcsIDIzLCAyMzgsIDE5LCAyNDYsIDE1MCwgMjMsIAorICAgIDI0NywgMiwgMjE0LCAyMTUsIDIzLCAyNDcsIDIsIDIyMCwgOSwgMjMsIDI0NywgMiwgMjA3LCAyNDgsIDIzLCAyMDYsIDE2MCwgCisgICAgMjQ3LCAyLCAyMzQsIDU5LCAyMywgMjA2LCAxNjAsIDI0NywgMiwgMjIxLCAyMDQsIDIzLCAyMDYsIDE2MCwgMjQ3LCAyLCAKKyAgICAyMjQsIDU5LCAyMywgMjM5LCAxOSwgMjMsIDIxOCwgMjE3LCAyMjAsIDksIDIzLCAyMTgsIDIxNywgMjQzLCA0NywgMjMsIAorICAgIDIxOCwgMjE3LCAyMDAsIDIyMSwgMjMsIDIxOCwgMjE3LCAyMDEsIDIzLCAyMywgMjUxLCAxNjcsIDI0OCwgMTI4LCAyMTYsIAorICAgIDI1NCwgMjMsIDI1MSwgMTY3LCAyMDcsIDI0NywgMjI4LCAxMTcsIDIzLCAyNTEsIDE2NywgMjQ4LCAxMzAsIDQsIDIxMiwgCisgICAgMjIzLCAyMywgMjUxLCAxNjcsIDIwNywgMjQ5LCA0LCAyMTIsIDIyMywgMjMsIDI0OCwgNTksIDIyOCwgODksIDIzLCAyNDgsIAorICAgIDU5LCAyMzgsIDQxLCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDIyMCwgOSwgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyMzYsIAorICAgIDIzMywgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyNDMsIDQ3LCAyMywgMjIxLCA1OSwgMjA5LCA0OCwgMjMsIDIyMSwgNTksIAorICAgIDIwOSwgNDksIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjA5LCA0OSwgMjE3LCA1MywgMjMsIDIyMSwgNTksIDIzNiwgMTk2LCAKKyAgICAyMywgMjIxLCA1OSwgMjM2LCAxOTcsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjM2LCAxOTcsIDIxNywgNTMsIDIzLCAyMjEsIAorICAgIDU5LCAxNzYsIDI0NiwgMTU1LCAyMywgMjIxLCA1OSwgMTc2LCAyMzYsIDIzMywgMjMsIDIyMSwgNTksIDE3NiwgMjAwLCAKKyAgICAyMjMsIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ3LCAyMywgMjIxLCA1OSwgMTc2LCAyMTYsIDI0OCwgMjAwLCAyMjMsIAorICAgIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ4LCAyMDAsIDU4LCAyMywgMjIxLCA1OSwgMTc2LCAyMTMsIDE3NSwgMjMsIDIyMSwgCisgICAgNTksIDE3NiwgMjEzLCAxNzYsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMTc2LCAyMTMsIDE3NiwgMjAwLCA1OCwgMjMsIAorICAgIDIyMSwgNTksIDIyNiwgMTI5LCAyMywgMjIxLCA1OSwgMjI2LCAxMzAsIDIzNiwgMjMzLCAyMywgMjIxLCA1OSwgMjI2LCAKKyAgICAxMzAsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjA2LCAxNTksIDIzLCAyMjEsIDU5LCAyMDYsIDE2MCwgMjM2LCAyMzMsIAorICAgIDIzLCAyMjEsIDU5LCAyMDYsIDE2MCwgMjA3LCAyNDgsIDIzLCAyMjQsIDE2MSwgMjE1LCAxNywgMjA1LCAxODIsIDIzLCAKKyAgICAyMjQsIDE2MywgMjI0LCA1NCwgMTE5LCAyMDMsIDIyNCwgMjMsIDIyNCwgMTYzLCAyMDMsIDIyNSwgMTE5LCAyMjQsIDUzLCAKKyAgICAyMywgMjIxLCA1OSwgMjQzLCAxNCwgMjMsIDIyMSwgNTksIDIwMCwgMjIyLCAyMDksIDEzOCwgMjMsIDIyMSwgNTksIDIwMCwgCisgICAgMjIyLCAyMzksIDE3NSwgMjMsIDIwNSwgMTY0LCAyMDgsIDg3LCAyMTYsIDI1NSwgMjM3LCAxNjMsIDIzLCAyMDUsIDE2NCwgCisgICAgMjI0LCAyMDYsIDIyNCwgMTYwLCAyMywgMjA1LCAxNjQsIDIwNSwgMjI0LCAyNDgsIDIwNiwgMjI0LCAxNjAsIDIzLCAyMDUsIAorICAgIDE2NCwgMjA1LCAyMjQsIDIwNSwgMTQwLCAyMjgsIDc0LCAyMjEsIDU4LCAyMywgMjA1LCAxNjQsIDIyOCwgNzQsIDIyMSwgCisgICAgNTksIDIxMywgMTQ3LCAyMywgMjA1LCAxNjQsIDIyMSwgNDksIDI1MSwgMTkxLCAyNDcsIDMsIDIzLCAyMDUsIDE2NCwgMjQ3LCAKKyAgICA1NiwgMjA4LCA4NywgMjE2LCAyNTQsIDIzLCAyMDUsIDE2NCwgMjQ3LCA1NiwgMjI4LCA3NCwgMjIxLCA1OCwgMjMsIDIwNiwgCisgICAgMTg2LCAyMywgMjA2LCAxODcsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjE3LCA3OSwgMjA1LCAxNjMsIDIzLCAyMDYsIAorICAgIDE4NywgMjE3LCA3OSwgMjA1LCAxNjQsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjE3LCA3OSwgMjI0LCAxNjAsIDIzLCAKKyAgICAyMDYsIDE4NywgMjE3LCA3OSwgMjI0LCAxNjEsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjQ4LCAxNTEsIDIyNCwgMTYwLCAKKyAgICAyMywgMjIxLCA1MCwgMjI3LCAyMzEsIDIzLCAyMjEsIDUyLCAyMjcsIDIzMSwgMjMsIDIyMCwgMzEsIDIzLCAyMzQsIDIyMSwgCisgICAgMjMsIDIzOCwgNDQsIDIzLCAyMDksIDIzMywgMjM0LCA0OSwgMjA4LCAyMTksIDIzLCAyMDksIDIzMywgMjM0LCA0OSwgMjE1LCAKKyAgICA2OSwgMjMsIDIwMSwgMTAxLCAyMDksIDIzMywgMjM0LCA0OSwgMjIxLCA1NywgMjMsIDIzNywgMzAsIDIwOSwgMjMzLCAyMzQsIAorICAgIDQ5LCAyMjEsIDU3LCAyMywgMjA5LCAyMzMsIDIwNSwgMjM2LCAyMzYsIDIwMSwgMjAxLCAxMDcsIDIzLCAyMDUsIDE0NywgCisgICAgMjA4LCA2OCwgMjA4LCA1NiwgMjMsIDIwNSwgMTQ3LCAyNDIsIDE4OCwgMjQ4LCAyMjIsIDIzLCAyMDUsIDE0OCwgMjA0LCAKKyAgICAxNDQsIDIzLCAyMDMsIDIyNSwgMjQ4LCAxMTksIDIwNSwgMjM2LCAyMzYsIDIwMSwgMjM0LCA0OSwgMjI3LCAxNjAsIDIzLCAKKyAgICAyMjQsIDE4OCwgMjQ2LCA3NSwgMjMsIDIyNCwgMTg4LCAyMjUsIDEsIDIzLCAyMjQsIDE4OCwgMjI1LCAwLCAyMywgMjI0LCAKKyAgICAxODgsIDIyNCwgMjU1LCAyMywgMjI0LCAxODgsIDIyNCwgMjU0LCAyMywgMjI0LCAxODgsIDIyNCwgMjUzLCAyMywgMjI0LCAKKyAgICAxODgsIDIyNCwgMjUyLCAyMywgMjI0LCAxODgsIDIyNCwgMjUxLCAyMywgMjM3LCA4NiwgMjMsIDIyNCwgMTA2LCAyMDgsIAorICAgIDI0NCwgMjMsIDIyNCwgMTA3LCAyMDgsIDI0NCwgMjMsIDIyNCwgMTA4LCAyMzQsIDExMywgMjMsIDIyNCwgMTA4LCAyMDEsIAorICAgIDI0LCAyMywgMjI0LCAxMDgsIDI0MSwgMTIzLCAyMywgMjI0LCAxMDgsIDIzNCwgMTM3LCAyMjAsIDMxLCAyMywgMjI0LCAKKyAgICAxMDgsIDIwNSwgMTQ5LCAyMywgMjI0LCAxMDgsIDIyNCwgMTg3LCAyNDEsIDQxLCAyMywgMjQ2LCA3MCwgMjMsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAyMywgMjEwLCAxNjcsIDIzLCAyNDYsIDc5LCAyMywgMjE2LCAxMTUsIDIzLCAyMzcsIDk2LCAyMjEsIAorICAgIDExOCwgMjMsIDIzNywgOTYsIDIyMSwgMTE3LCAyMywgMjM3LCA5NiwgMjIxLCAxMTYsIDIzLCAyMzcsIDk2LCAyMjEsIDExNSwgCisgICAgMjMsIDIzNywgOTYsIDIyMSwgMTE0LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE4LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE3LCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTE2LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE1LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE0LCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTEzLCAyMywgMjEyLCAyMjcsIDIyMSwgMTEyLCAyMywgMjEyLCAyMjcsIDIyMSwgMTExLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTI1LCAyMywgMjEyLCAyMjcsIDIyMSwgMTI0LCAyMywgMjEyLCAyMjcsIDIyMSwgMTIzLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTIyLCAyMywgMjEyLCAyMjcsIDIyMSwgMTIxLCAyMywgMjEyLCAyMjcsIDIyMSwgMTIwLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTE5LCAzOCwgMTE2LCAxLCAyNTAsIDEwNCwgMzgsIDExNiwgMSwgMjQ4LCAyNCwgMzgsIAorICAgIDExNiwgMSwgMjAzLCA1NywgMzgsIDExNiwgMSwgMjM1LCAxMzAsIDM4LCAxMTYsIDEsIDI0MCwgMjA2LCAzOCwgMTE2LCAxLCAKKyAgICAyMDAsIDIzLCAzOCwgMTE2LCAxLCAxOTksIDYxLCAzOCwgMTE2LCAxLCAxOTksIDg2LCAzOCwgMTE2LCAxLCAyMjcsIDI1NSwgCisgICAgMzgsIDExNiwgMSwgODIsIDIyNywgMjU1LCAzOCwgMTE2LCAxLCA3MCwgMzgsIDExNiwgMSwgMjQwLCAyMjYsIDM4LCAxMTYsIAorICAgIDEsIDIyNywgNzQsIDM4LCAxMTYsIDEsIDIyNCwgMTQwLCAzOCwgMTE2LCAxLCAyMjAsIDIxOCwgMzgsIDExNiwgMSwgMjIwLCAKKyAgICAxMjAsIDM4LCAxMTYsIDEsIDIxNywgNjUsIDM4LCAxMTYsIDEsIDIxNSwgOTMsIDM4LCAxMTYsIDEsIDIxMywgMTgsIDM4LCAKKyAgICAxMTYsIDEsIDIwOSwgNTgsIDM4LCAxMTYsIDEsIDIwNCwgMTcxLCAzOCwgMTE2LCAxLCAyMDQsIDE2LCAzOCwgMTE2LCAxLCAKKyAgICAyMzYsIDIwNCwgMzgsIDExNiwgMSwgMjM0LCA5NSwgMzgsIDExNiwgMSwgMjA5LCAyMjMsIDM4LCAxMTYsIDEsIDIwNSwgMTEsIAorICAgIDM4LCAxMTYsIDEsIDI0NiwgMTk4LCAzOCwgMTE2LCAxLCAyMTAsIDExNCwgMzgsIDExNiwgMSwgMjAwLCAyOSwgMzgsIDExNiwgCisgICAgMSwgMjAwLCAzMSwgMzgsIDExNiwgMSwgMjAwLCA2MywgMzgsIDExNiwgMSwgMTk5LCAyMTEsIDM4LCAxMTYsIDEsIDQsIAorICAgIDE5OSwgMTgxLCAzOCwgMTE2LCAxLCAxOTksIDI0NSwgMzgsIDExNiwgMSwgMjI4LCA0MCwgNCwgMTk5LCAxODEsIDM4LCAKKyAgICAxMTYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzgsIDExNiwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgCisgICAgMTE2LCAxLCAyMzcsIDYzLCA3OCwgNzcsIDUsIDIyMywgMjQyLCAyMjYsIDE2MywgNzgsIDc3LCA1LCAyMjMsIDIzOCwgMTYxLCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMjM2LCAyMjYsIDE1LCA3OCwgNzcsIDUsIDIyMywgMTEyLCAyMjcsIDUsIDc4LCA3NywgNSwgCisgICAgMjIzLCA4MiwgMjI3LCA4LCA3OCwgNzcsIDUsIDIyMywgMTAxLCAyMjYsIDY4LCA3OCwgNzcsIDUsIDIyMywgMTI5LCAyMjYsIAorICAgIDg4LCA3OCwgNzcsIDUsIDIyMiwgMjU0LCAyMjYsIDksIDc4LCA3NywgNSwgMjIzLCAyMzMsIDIwMSwgMzEsIDc4LCA3NywgNSwgCisgICAgMjIzLCAyMzEsIDIwMSwgMTE0LCA3OCwgNzcsIDUsIDIyMywgMjI5LCAyMDAsIDIxNiwgNzgsIDc3LCA1LCAyMjMsIDUxLCAKKyAgICAyMDEsIDU3LCA3OCwgNzcsIDUsIDIyMywgNTksIDIwMSwgNjQsIDc4LCA3NywgNSwgMjIzLCA2MywgMjAwLCAyNDQsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMzIsIDIwMSwgMCwgNzgsIDc3LCA1LCAyMjIsIDIzOSwgMjAwLCAyMTIsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAzNCwgMjAxLCA1NSwgNzgsIDc3LCA1LCAyMjMsIDExNiwgMjAwLCAyMDAsIDc4LCA3NywgNSwgMjIzLCAxMjgsIDIwMCwgCisgICAgMjAyLCA3OCwgNzcsIDUsIDIyMywgMzgsIDIwMCwgMjAxLCA3OCwgNzcsIDUsIDIyMywgMjI3LCAyMjEsIDE2NCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDIyNSwgMjIyLCAxODAsIDc4LCA3NywgNSwgMjIzLCAyMjMsIDIyMSwgMTQsIDc4LCA3NywgNSwgMjIzLCAxMTgsIAorICAgIDIyMiwgNDAsIDc4LCA3NywgNSwgMjIzLCA4MywgMjIxLCAxMDYsIDc4LCA3NywgNSwgMjIzLCAyMywgMjIxLCAzOCwgNzgsIAorICAgIDc3LCA1LCAyMjIsIDI0NCwgMjIxLCAzMiwgNzgsIDc3LCA1LCAyMjMsIDIyMSwgMjQ4LCAxODgsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAyMTgsIDI0OSwgMTM2LCA3OCwgNzcsIDUsIDIyMywgMjE2LCAyNDgsIDM2LCA3OCwgNzcsIDUsIDIyMywgMjcsIDI0OCwgCisgICAgMjUyLCA3OCwgNzcsIDUsIDIyMywgODAsIDI0OSwgOCwgNzgsIDc3LCA1LCAyMjMsIDc0LCAyNDgsIDExMSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDM5LCAyNDgsIDEyNCwgNzgsIDc3LCA1LCAyMjMsIDIwNiwgNzAsIDc4LCA3NywgNSwgMjIzLCAyMDQsIDYyLCA3OCwgCisgICAgNzcsIDUsIDIyMywgMjAyLCA2NiwgNzgsIDc3LCA1LCAyMjMsIDE0LCAyMzgsIDI1NSwgNzgsIDc3LCA1LCAyMjMsIDc3LCAKKyAgICA3MiwgNzgsIDc3LCA1LCAyMjMsIDEyLCAyMTcsIDYzLCA3OCwgNzcsIDUsIDIyMywgMzAsIDc0LCA3OCwgNzcsIDUsIDIyMywgCisgICAgNDAsIDIzOCwgMjM0LCA3OCwgNzcsIDUsIDIyMywgNDYsIDIyOCwgMTE3LCA3OCwgNzcsIDUsIDIyMywgNDIsIDIyOCwgMTE3LCAKKyAgICA3OCwgNzcsIDUsIDIyMiwgMjM4LCAyNTEsIDg1LCA3OCwgNzcsIDUsIDIyMiwgMjU1LCAyMzgsIDE3OSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDE5MSwgMjA5LCAxODIsIDc4LCA3NywgNSwgMjIzLCAxODksIDIxMiwgNjQsIDc4LCA3NywgNSwgMjIzLCAxODcsIAorICAgIDIwOCwgMjQsIDc4LCA3NywgNSwgMjIzLCAxNSwgMjExLCAxOTAsIDc4LCA3NywgNSwgMjIzLCA2MSwgMjExLCAyMDIsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA0MSwgMjA5LCAxMCwgNzgsIDc3LCA1LCAyMjMsIDk4LCAyMDksIDI5LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjM3LCAyMDksIDE4MSwgNzgsIDc3LCA1LCAyMjMsIDE3NywgMjI0LCAyMTAsIDc4LCA3NywgNSwgMjIzLCAxNzUsIDE5NCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDE3MywgMjI0LCA0MiwgNzgsIDc3LCA1LCAyMjMsIDkzLCAyMjUsIDMyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTA0LCAyMjUsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTIzLCAyMjQsIDc4LCA3OCwgNzcsIDUsIDIyMywgMjQsIDIyNCwgCisgICAgMTEwLCA3OCwgNzcsIDUsIDIyMywgNjcsIDE2OCwgMjI1LCA0MCwgNzgsIDc3LCA1LCAyMjMsIDE5OSwgMjQxLCA3NiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDE5NiwgMjQyLCA1OCwgNzgsIDc3LCA1LCAyMjMsIDE5MywgMjM5LCAxMzcsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA4OCwgMjQxLCAxNjEsIDc4LCA3NywgNSwgMjIyLCAyNTMsIDI0MCwgMTg3LCA3OCwgNzcsIDUsIDIyMiwgMjUyLCAyNDAsIAorICAgIDIxMSwgNzgsIDc3LCA1LCAyMjMsIDE4NSwgMjA2LCAxNSwgNzgsIDc3LCA1LCAyMjMsIDE4MiwgMjA3LCAzNiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDE4MCwgMjA0LCAyMTUsIDc4LCA3NywgNSwgMjIzLCA4NiwgMjA2LCAxOTAsIDc4LCA3NywgNSwgMjIzLCAxMjIsIAorICAgIDIwNiwgMjAxLCA3OCwgNzcsIDUsIDIyMywgNzMsIDIwNSwgMTYxLCA3OCwgNzcsIDUsIDIyMywgMTA4LCAxMzgsIDc4LCA3NywgCisgICAgNSwgMjIzLCAxNzEsIDIyNywgMjA3LCA3OCwgNzcsIDUsIDIyMywgMTY4LCAyMjcsIDI0OCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE2NiwgMjI3LCAxNDcsIDc4LCA3NywgNSwgMjIzLCAyMCwgMjI3LCAyMjUsIDc4LCA3NywgNSwgMjIzLCA2NCwgMjI3LCAKKyAgICAyMjcsIDc4LCA3NywgNSwgMjIzLCAxNywgMjI3LCAxNTYsIDc4LCA3NywgNSwgMjIzLCAxMTQsIDIyNywgMTY2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMiwgMTY4LCAyMjcsIDE2NiwgNzgsIDc3LCA1LCAyMjMsIDE2NCwgMjAwLCA5LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTYxLCAxODMsIDc4LCA3NywgNSwgMjIzLCAxNTksIDE5OSwgMjExLCA3OCwgNzcsIDUsIDIyMywgNjgsIDIwMCwgNDgsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA5NywgMjAwLCA1MSwgNzgsIDc3LCA1LCAyMjMsIDM2LCAxOTksIDIzMCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDU2LCAxOTksIDI0NSwgNzgsIDc3LCA1LCAyMjMsIDE1NSwgMjM3LCAxMTIsIDc4LCA3NywgNSwgMjIzLCAxNTMsIDIzNywgCisgICAgMTk1LCA3OCwgNzcsIDUsIDIyMywgMTUxLCAyMzYsIDE4OSwgNzgsIDc3LCA1LCAyMjMsIDk5LCAyMzcsIDE0MCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDEwMiwgMjM3LCAxNDcsIDc4LCA3NywgNSwgMjIzLCA0NCwgMjM3LCAyLCA3OCwgNzcsIDUsIDIyMywgODksIAorICAgIDIzNywgMTMsIDc4LCA3NywgNSwgMjIyLCAyMzYsIDIzNiwgMTg4LCA3OCwgNzcsIDUsIDIyMywgNzYsIDIzNywgMTY4LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTQ5LCAyMTksIDExOCwgNzgsIDc3LCA1LCAyMjMsIDE0NywgMjIwLCAxMzQsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNDUsIDIxOCwgODksIDc4LCA3NywgNSwgMjIzLCA2MCwgMjIwLCAyNCwgNzgsIDc3LCA1LCAyMjMsIDgsIDIxOCwgMjM0LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMSwgMjM0LCA3NSwgNzgsIDc3LCA1LCAyMjMsIDE0MCwgMTQ0LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjQ3LCAyMzMsIDk3LCA3OCwgNzcsIDUsIDIyMywgMTQzLCAyMzQsIDEyMCwgNzgsIDc3LCA1LCAyMjMsIDgxLCAyMzQsIAorICAgIDEzOSwgNzgsIDc3LCA1LCAyMjMsIDEzOCwgMjMzLCAxODgsIDc4LCA3NywgNSwgMjIzLCAzNywgMjMzLCAyMDcsIDc4LCA3NywgCisgICAgNSwgMjIzLCA5NCwgMjM0LCAxMTksIDc4LCA3NywgNSwgMjIzLCA0OSwgMjMzLCAxODEsIDc4LCA3NywgNSwgMjIzLCAxMjQsIAorICAgIDIzNCwgNTMsIDc4LCA3NywgNSwgMjIzLCA0NywgMjM0LCAyMDIsIDc4LCA3NywgNSwgMjIzLCA5MCwgMjMzLCA4NCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEyNSwgMjM0LCAxMDUsIDc4LCA3NywgNSwgMjIyLCAyNDAsIDIzMywgMTkxLCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTMxLCAyMzMsIDk2LCA3OCwgNzcsIDUsIDIyMywgODcsIDIxOSwgMjE4LCA3OCwgNzcsIDUsIDIyMywgMTM2LCAyMTksIAorICAgIDIzMiwgNzgsIDc3LCA1LCAyMjMsIDk1LCAyMTksIDIxNSwgNzgsIDc3LCA1LCAyMjMsIDYyLCAyMTksIDIyNiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDMxLCAyMTksIDIyNywgNzgsIDc3LCA1LCAyMjMsIDIxLCAyMTksIDIxNiwgNzgsIDc3LCA1LCAyMjMsIDU3LCAKKyAgICAyMTksIDIxNywgNzgsIDc3LCA1LCAyMjMsIDE4LCAyMTksIDIzMSwgNzgsIDc3LCA1LCAyMjMsIDUwLCAyMTksIDIxNCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDkxLCAxNjgsIDIxOSwgMjI3LCA3OCwgNzcsIDUsIDIyMywgNzEsIDE2OCwgMjE5LCAyMTYsIDc4LCA3NywgCisgICAgNSwgMjIyLCAyNTAsIDE2OCwgMjE5LCAyMTcsIDc4LCA3NywgNSwgMjIzLCAyMiwgMjM1LCAxNjEsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA2NiwgMjM2LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDksIDIzNSwgNTAsIDc4LCA3NywgNSwgMjIyLCAyNDMsIDIzNiwgNywgNzgsIAorICAgIDc3LCA1LCAyMjMsIDExLCAyMzUsIDM2LCA3OCwgNzcsIDUsIDIyMywgMTAsIDIzNSwgNDYsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNDksIDIxOSwgMjM3LCA3OCwgNzcsIDUsIDIyMywgMTIwLCAyMTksIDE3NCwgNzgsIDc3LCA1LCAyMjMsIDAsIDIxOSwgCisgICAgMTYzLCA3OCwgNzcsIDUsIDIyMywgMTA5LCAyMTUsIDIwNCwgNzgsIDc3LCA1LCAyMjMsIDc4LCAxNzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAxMjcsIDIxNCwgMjI0LCA3OCwgNzcsIDUsIDIyMywgOTYsIDIxNiwgNjEsIDc4LCA3NywgNSwgMjIzLCAxMjYsIAorICAgIDIxNiwgNzMsIDc4LCA3NywgNSwgMjIzLCA3NSwgMjE1LCA4MSwgNzgsIDc3LCA1LCAyMjMsIDExMSwgMjE1LCAxMDYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAzMiwgMjIyLCA5NSwgNzgsIDc3LCA1LCAyMjMsIDExNSwgMjIyLCAxMTAsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA1NSwgMjIyLCA4OSwgNzgsIDc3LCA1LCAyMjMsIDEzMCwgMjIyLCAxMDIsIDc4LCA3NywgNSwgMjIyLCAyNDUsIDIyMiwgCisgICAgMTAyLCA3OCwgNzcsIDUsIDIyMywgMTA1LCAyMjIsIDEwMywgNzgsIDc3LCA1LCAyMjMsIDUsIDIyMiwgOTAsIDc4LCA3NywgCisgICAgNSwgMjIzLCAzLCAyMjIsIDkxLCA3OCwgNzcsIDUsIDIyMiwgMjQ2LCAyMjIsIDgzLCA3OCwgNzcsIDUsIDIyMywgMTYsIAorICAgIDE2OCwgMjIyLCAxMDMsIDc4LCA3NywgNSwgMjIzLCA3MiwgMTY4LCAyMjIsIDkwLCA3OCwgNzcsIDUsIDIyMywgMzUsIDE2OCwgCisgICAgMjIyLCA5MSwgNzgsIDc3LCA1LCAyMjMsIDQ1LCAyMjYsIDQyLCA3OCwgNzcsIDUsIDIyMywgODUsIDIyNiwgNTAsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMDMsIDIyNiwgMzgsIDc4LCA3NywgNSwgMjIzLCAxMzQsIDIyNiwgNDUsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA2OSwgMjI2LCA0NiwgNzgsIDc3LCA1LCAyMjMsIDY1LCAyMjYsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTksIDIyNiwgNDEsIAorICAgIDc4LCA3NywgNSwgMjIzLCA1MywgMjM2LCAyNCwgNzgsIDc3LCA1LCAyMjMsIDEyMSwgMjM2LCAzMiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDI5LCAyMzYsIDE5LCA3OCwgNzcsIDUsIDIyMywgODQsIDIzNiwgMjgsIDc4LCA3NywgNSwgMjIzLCA3MCwgMjM2LCAKKyAgICAyOSwgNzgsIDc3LCA1LCAyMjMsIDEwNiwgMjM2LCAyMCwgNzgsIDc3LCA1LCAyMjMsIDEwNywgMjM2LCAyMiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDYsIDIxMywgMjUyLCA3OCwgNzcsIDUsIDIyMywgNTQsIDIyMCwgNjAsIDc4LCA3NywgNSwgMjIzLCA0OCwgCisgICAgMjIwLCA3NSwgNzgsIDc3LCA1LCAyMjMsIDUyLCAyMjAsIDQyLCA3OCwgNzcsIDUsIDIyMiwgMjQyLCAyMjAsIDY2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgNTgsIDIyMCwgNjcsIDc4LCA3NywgNSwgMjIzLCAxMTAsIDIyMCwgNDcsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxMTMsIDIyMCwgNTEsIDc4LCA3NywgNSwgMjIzLCAyNSwgMjE5LCA5OCwgNzgsIDc3LCA1LCAyMjIsIDI0MSwgMjE5LCA2OCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDI4LCAyMTksIDg5LCA3OCwgNzcsIDUsIDIyMywgNDMsIDIxOSwgNzIsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNTEsIDIwMiwgMjM0LCA3OCwgNzcsIDUsIDIyMiwgMjQ4LCAyMDMsIDkwLCA3OCwgNzcsIDUsIDIyMywgMjYsIDIwMSwgCisgICAgMTY2LCA3OCwgNzcsIDUsIDIyMywgNCwgMjAzLCA1NCwgNzgsIDc3LCA1LCAyMjMsIDkyLCAyMDMsIDU5LCA3OCwgNzcsIDUsIAorICAgIDIyMywgMzMsIDIwMiwgMTc5LCA3OCwgNzcsIDUsIDIyMywgMTAwLCAyMDIsIDE5MywgNzgsIDc3LCA1LCAyMjMsIDEzLCAKKyAgICAyMTgsIDM1LCA3OCwgNzcsIDUsIDIyMywgMTE5LCAyMTgsIDU0LCA3OCwgNzcsIDUsIDIyMywgNywgMjE4LCAxNywgNzgsIAorICAgIDc3LCA1LCAyMjMsIDc5LCAyMTgsIDQ2LCA3OCwgNzcsIDUsIDIyMywgMTE3LCAyMTgsIDI0LCA3OCwgNzcsIDE3LCAxMDIsIAorICAgIDc4LCA3NywgMTcsIDEwNSwgNzgsIDc3LCAxNywgMTQ3LCA3OCwgNzcsIDE3LCAxNDksIDc4LCA3NywgMTcsIDE2NCwgNzgsIAorICAgIDc3LCAxNywgMTg3LCA3OCwgNzcsIDE3LCAyMTAsIDEzNSwgNzgsIDc3LCAxNywgMTkyLCA3OCwgNzcsIDE3LCAyMTksIDExMywgCisgICAgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTg4LCA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxNjEsIDc4LCA3NywgMzgsIDQxLCAyMzMsIAorICAgIDgwLCA3OCwgNzcsIDM4LCA0MSwgMjA2LCA0OCwgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTY3LCAyMDYsIDQ4LCA3OCwgNzcsIAorICAgIDM4LCA0MSwgMjMzLCA4MywgMjA2LCA0OCwgNzgsIDc3LCAzOCwgNDEsIDIyMSwgMTY3LCAyNTEsIDIyNywgNiwgMSwgMjUxLCAKKyAgICAxMzAsIDI1MSwgMjI3LCA2LCAxLCAyNDIsIDU1LCAyNTEsIDIyNywgNiwgMSwgMjI1LCAxNzMsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMjEsIDE4MCwgMjUxLCAyMjcsIDYsIDEsIDI0OSwgMTM2LCAyNTEsIDIyNywgNiwgMSwgMjA5LCAxMzMsIDI1MSwgMjI3LCAKKyAgICA2LCAxLCAyMTYsIDczLCAyNTEsIDIyNywgNiwgMSwgMjQ4LCAxOTYsIDI1MSwgMjI3LCA2LCAxLCAyMTMsIDI1MiwgMjUxLCAKKyAgICAyMjcsIDYsIDEsIDcyLCAyNTEsIDIyNywgNiwgMSwgMjM3LCAxOTUsIDI1MSwgMjI3LCA2LCAxLCA3MCwgMjUxLCAyMjcsIDYsIAorICAgIDEsIDc0LCAyNTEsIDIyNywgNiwgMSwgMjQxLCAxMDAsIDI1MSwgMjI3LCA2LCAxLCAyMDAsIDEwLCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjAxLCA3MiwgMjUxLCAyMjcsIDYsIDEsIDIxOCwgODksIDI1MSwgMjI3LCA2LCAxLCAyMjcsIDg2LCAyNTEsIDIyNywgNiwgCisgICAgMSwgMTgzLCAyNTEsIDIyNywgNiwgMSwgNjYsIDI1MSwgMjI3LCA2LCAxLCAyMjcsIDE5OSwgMjUxLCAyMjcsIDYsIDEsIAorICAgIDI0NiwgMjM2LCAyNTEsIDIyNywgNiwgMSwgMTQ0LCAyNTEsIDIyNywgNiwgMSwgMjE0LCAxNTcsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMzYsIDg5LCAyNTEsIDIyNywgNiwgMSwgMjE4LCA2MCwgMjUxLCAyMjcsIDYsIDEsIDIwNCwgMjE1LCAyNTEsIDIyNywgNiwgCisgICAgMSwgMjE5LCAxNTQsIDI1MSwgMjI3LCA2LCAxLCAyMDMsIDkwLCAyNTEsIDIyNywgNiwgMSwgMjI2LCAyMDcsIDI1MSwgMjI3LCAKKyAgICA2LCAxLCAyMzYsIDI5LCAyNTEsIDIyNywgNiwgMSwgMTk5LCAxMDMsIDI1MSwgMjI3LCA2LCAxLCAyMjYsIDQxLCAyNTEsIAorICAgIDIyNywgNiwgMSwgMjEwLCAxMTQsIDI1MSwgMjI3LCA0LCAxLCAyNTEsIDEzMCwgMjUxLCAyMjcsIDQsIDEsIDI0MiwgNTUsIAorICAgIDI1MSwgMjI3LCA0LCAxLCAyMjUsIDE3MywgMjUxLCAyMjcsIDQsIDEsIDIyMSwgMTgwLCAyNTEsIDIyNywgNCwgMSwgMjQ5LCAKKyAgICAxMzYsIDI1MSwgMjI3LCA0LCAxLCAyMDksIDEzMywgMjUxLCAyMjcsIDQsIDEsIDIxNiwgNzMsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyNDgsIDE5NiwgMjUxLCAyMjcsIDQsIDEsIDIxMywgMjUyLCAyNTEsIDIyNywgNCwgMSwgNzIsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMzcsIDE5NSwgMjUxLCAyMjcsIDQsIDEsIDcwLCAyNTEsIDIyNywgNCwgMSwgNzQsIDI1MSwgMjI3LCA0LCAxLCAyNDEsIAorICAgIDEwMCwgMjUxLCAyMjcsIDQsIDEsIDIwMCwgMTAsIDI1MSwgMjI3LCA0LCAxLCAyMDEsIDcyLCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjE4LCA4OSwgMjUxLCAyMjcsIDQsIDEsIDIyNywgODYsIDI1MSwgMjI3LCA0LCAxLCAxODMsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICA2NiwgMjUxLCAyMjcsIDQsIDEsIDIyNywgMTk5LCAyNTEsIDIyNywgNCwgMSwgMjQ2LCAyMzYsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAxNDQsIDI1MSwgMjI3LCA0LCAxLCAyMTQsIDE1NywgMjUxLCAyMjcsIDQsIDEsIDIzNiwgODksIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMTgsIDYwLCAyNTEsIDIyNywgNCwgMSwgMjA0LCAyMTUsIDI1MSwgMjI3LCA0LCAxLCAyMTksIDE1NCwgMjUxLCAyMjcsIDQsIAorICAgIDEsIDIwMywgOTAsIDI1MSwgMjI3LCA0LCAxLCAyMjYsIDIwNywgMjUxLCAyMjcsIDQsIDEsIDIzNiwgMjksIDI1MSwgMjI3LCAKKyAgICA0LCAxLCAxOTksIDEwMywgMjUxLCAyMjcsIDQsIDEsIDIyNiwgNDEsIDI1MSwgMjI3LCA0LCAxLCAyMTAsIDExNCwgMjUxLCAKKyAgICAyMjcsIDI1MSwgMTMxLCAyMjQsIDI1MCwgMjUxLCAyMjcsIDIyLCAyMjQsIDI1MCwgMjUxLCAyMjcsIDIzNiwgMywgODEsIAorICAgIDI1MSwgMjI3LCAyMzQsIDIwMywgMjUxLCAyMjcsIDExMSwgMjIxLCAxMjYsIDI1MSwgMjI3LCAyMzYsIDQsIDExMSwgMjIxLCAKKyAgICAxMjYsIDI1MSwgMjI3LCAyMTgsIDEwMCwgMjUxLCAyMjcsIDE3LCAxOTksIDgxLCAyNTEsIDIyNywgMTcsIDEwMiwgMjUxLCAKKyAgICAyMjcsIDE3LCAxMDUsIDI1MSwgMjI3LCAxNywgMTQ3LCAyNTEsIDIyNywgMTcsIDE0OSwgMjUxLCAyMjcsIDE3LCAxNjQsIAorICAgIDI1MSwgMjI3LCAxNywgMTg3LCAyNTEsIDIyNywgMTcsIDIxMCwgMTM1LCAyNTEsIDIyNywgMTcsIDE5MiwgMjUxLCAyMjcsIAorICAgIDE3LCAyMTksIDExMywgMjUxLCAyMjcsIDgyLCAyMzgsIDQzLCA4MSwgMjUxLCAyMjcsIDgyLCAyMTQsIDc5LCA4MSwgOSwgCisgICAgMTMsIDI1MSwgMTQyLCA5LCAxMywgMjQ4LCAyNDAsIDksIDEzLCAyMjcsIDIyNCwgOSwgMTMsIDI0MiwgMjksIDksIDEzLCAKKyAgICAyMDEsIDcyLCA5LCAxMywgMTk5LCAxMDUsIDksIDEzLCAyMzQsIDIyNCwgOSwgMTMsIDIwNywgOSwgOSwgMTMsIDIwMCwgNDYsIAorICAgIDksIDEzLCAyMjcsIDg2LCA5LCAxMywgMjI1LCA5MSwgOSwgMTMsIDIyMiwgNjEsIDksIDEzLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDIxMSwgMTg2LCA5LCAxMywgMjUxLCAxNzEsIDksIDEzLCAyMzcsIDEzNCwgOSwgMTMsIDIxMiwgNTYsIDksIDEzLCAyMTQsIAorICAgIDE1MiwgOSwgMTMsIDIxMywgMTU0LCA5LCAxMywgMjEwLCA2MSwgOSwgMTMsIDIwNiwgMTgzLCA5LCAxMywgMjA2LCAxMDIsIAorICAgIDksIDEzLCAyMjYsIDIwMywgOSwgMTMsIDIwNiwgMTE0LCA5LCAxMywgMjQyLCA1MiwgOSwgMTMsIDE5OSwgMTA4LCA5LCAxMywgCisgICAgMjM1LCAxOTQsIDksIDEzLCAyNDAsIDE4MSwgMjQ4LCAyNDAsIDksIDEzLCAyNDAsIDE4MSwgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEzLCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEzLCA4MiwgMjQ4LCAyNDAsIDksIAorICAgIDEzLCA4MiwgMjI3LCAyMjQsIDksIDEzLCA4MiwgMjM0LCAxMTUsIDksIDEzLCA4MiwgMjM0LCAyMjQsIDksIDEzLCA4MiwgCisgICAgMjAwLCA0NiwgOSwgMTMsIDgyLCAyMjcsIDg2LCA5LCAxMywgODIsIDIyNSwgOTEsIDksIDEzLCA4MiwgMjIyLCA2MSwgOSwgCisgICAgMTMsIDgyLCAyMTgsIDIyNywgOSwgMTMsIDgyLCAyMTEsIDE4NiwgOSwgMTMsIDgyLCAyNTEsIDE3MSwgOSwgMTMsIDgyLCAKKyAgICAyMzcsIDEzNCwgOSwgMTMsIDgyLCAyMTIsIDU2LCA5LCAxMywgODIsIDIxNCwgMTUyLCA5LCAxMywgODIsIDIxMCwgNjEsIDksIAorICAgIDEzLCA4MiwgMjA2LCAxODMsIDksIDEzLCA4MiwgMjA2LCAxMDIsIDksIDEzLCA4MiwgMjI2LCAyMDMsIDksIDEzLCA4MiwgCisgICAgMjQyLCA1MiwgOSwgMTMsIDgyLCAyMzUsIDE5NCwgOSwgMTMsIDIwNywgNSwgMjI3LCAyMjQsIDksIDEzLCAyMDcsIDUsIAorICAgIDIzNCwgMjI0LCA5LCAxMywgMjA3LCA1LCAyMDAsIDQ2LCA5LCAxMywgMjA3LCA1LCAyMjUsIDkxLCA5LCAxMywgMjA3LCA1LCAKKyAgICAyMTgsIDIyNywgOSwgMTMsIDIwNywgNSwgMjExLCAxODYsIDksIDEzLCAyMDcsIDUsIDI1MSwgMTcxLCA5LCAxMywgMjA3LCAKKyAgICA1LCAyMTIsIDU2LCA5LCAxMywgMjA3LCA1LCAyMTQsIDE1MiwgOSwgMTMsIDIwNywgNSwgMjEwLCA2MSwgOSwgMTMsIDIwNywgCisgICAgNSwgMjI2LCAyMDMsIDksIDEzLCAyMDcsIDUsIDI0MiwgNTIsIDksIDEzLCAyMDcsIDUsIDIzNSwgMTk0LCA5LCAxMywgMjA3LCAKKyAgICA1LCAyNDAsIDE4MSwgMjE4LCAyMjcsIDksIDEzLCAyMDcsIDUsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDI0OCwgMjQwLCA5LCAxMywgMjA4LCA1NSwgMjI3LCAyMjQsIDksIDEzLCAyMDgsIDU1LCAyMzQsIDExNSwgOSwgMTMsIDIwOCwgCisgICAgNTUsIDIzNCwgMjI0LCA5LCAxMywgMjA4LCA1NSwgMjA3LCA5LCA5LCAxMywgMjA4LCA1NSwgMjAwLCA0NiwgOSwgMTMsIAorICAgIDIwOCwgNTUsIDIyNywgODYsIDksIDEzLCAyMDgsIDU1LCAyMjIsIDYxLCA5LCAxMywgMjA4LCA1NSwgMjE4LCAyMjcsIDksIAorICAgIDEzLCAyMDgsIDU1LCAyMTEsIDE4NiwgOSwgMTMsIDIwOCwgNTUsIDI1MSwgMTcxLCA5LCAxMywgMjA4LCA1NSwgMjM3LCAKKyAgICAxMzQsIDksIDEzLCAyMDgsIDU1LCAyMTIsIDU2LCA5LCAxMywgMjA4LCA1NSwgMjE0LCAxNTIsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyMTAsIDYxLCA5LCAxMywgMjA4LCA1NSwgMjA2LCAxODMsIDksIDEzLCAyMDgsIDU1LCAyMDYsIDEwMiwgOSwgMTMsIDIwOCwgCisgICAgNTUsIDIyNiwgMjAzLCA5LCAxMywgMjA4LCA1NSwgMjQyLCA1MiwgOSwgMTMsIDIwOCwgNTUsIDE5OSwgMTA4LCA5LCAxMywgCisgICAgMjA4LCA1NSwgMjM1LCAxOTQsIDksIDEzLCAyMDgsIDU1LCAyNDAsIDE4MSwgMjQ4LCAyNDAsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEzLCAyMjQsIDczLCAyNTEsIDE0MiwgOSwgMTMsIDIyNCwgNzMsIDI0OCwgMjQwLCAKKyAgICA5LCAxMywgMjI0LCA3MywgMjI3LCAyMjQsIDksIDEzLCAyMjQsIDczLCAyNDIsIDI5LCA5LCAxMywgMjI0LCA3MywgMjM0LCAKKyAgICAxMTUsIDksIDEzLCAyMjQsIDczLCAyMDEsIDcyLCA5LCAxMywgMjI0LCA3MywgMTk5LCAxMDUsIDksIDEzLCAyMjQsIDczLCAKKyAgICAyMzQsIDIyNCwgOSwgMTMsIDIyNCwgNzMsIDIwNywgOSwgOSwgMTMsIDIyNCwgNzMsIDIwMCwgNDYsIDksIDEzLCAyMjQsIAorICAgIDczLCAyMjUsIDkxLCA5LCAxMywgMjI0LCA3MywgMjIyLCA2MSwgOSwgMTMsIDIyNCwgNzMsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjI0LCA3MywgMjExLCAxODYsIDksIDEzLCAyMjQsIDczLCAyNTEsIDE3MSwgOSwgMTMsIDIyNCwgNzMsIDIzNywgMTM0LCA5LCAKKyAgICAxMywgMjI0LCA3MywgMjEyLCA1NiwgOSwgMTMsIDIyNCwgNzMsIDIxNCwgMTUyLCA5LCAxMywgMjI0LCA3MywgMjEzLCAxNTQsIAorICAgIDksIDEzLCAyMjQsIDczLCAyMTAsIDYxLCA5LCAxMywgMjI0LCA3MywgMjA2LCAxODMsIDksIDEzLCAyMjQsIDczLCAyMDYsIAorICAgIDEwMiwgOSwgMTMsIDIyNCwgNzMsIDIyNiwgMjAzLCA5LCAxMywgMjI0LCA3MywgMjA2LCAxMTQsIDksIDEzLCAyMjQsIDczLCAKKyAgICAyNDIsIDUyLCA5LCAxMywgMjI0LCA3MywgMTk5LCAxMDgsIDksIDEzLCAyMjQsIDczLCAyMzUsIDE5NCwgOSwgMTMsIDE3NSwgCisgICAgMjQ4LCAyNDAsIDksIDEzLCAxNzUsIDIyNywgMjI0LCA5LCAxMywgMTc1LCAyNDIsIDI5LCA5LCAxMywgMTc1LCAyMDEsIDcyLCAKKyAgICA5LCAxMywgMTc1LCAxOTksIDEwNSwgOSwgMTMsIDE3NSwgMjM0LCAyMjQsIDksIDEzLCAxNzUsIDIwNywgOSwgOSwgMTMsIAorICAgIDE3NSwgMjAwLCA0NiwgOSwgMTMsIDE3NSwgMjI1LCA5MSwgOSwgMTMsIDE3NSwgMjIyLCA2MSwgOSwgMTMsIDE3NSwgMjE4LCAKKyAgICAyMjcsIDksIDEzLCAxNzUsIDIxMSwgMTg2LCA5LCAxMywgMTc1LCAyNTEsIDE3MSwgOSwgMTMsIDE3NSwgMjM3LCAxMzQsIDksIAorICAgIDEzLCAxNzUsIDIxMiwgNTYsIDksIDEzLCAxNzUsIDIxNCwgMTUyLCA5LCAxMywgMTc1LCAyMTMsIDE1NCwgOSwgMTMsIDE3NSwgCisgICAgMjEwLCA2MSwgOSwgMTMsIDE3NSwgMjA2LCAxODMsIDksIDEzLCAxNzUsIDIwNiwgMTAyLCA5LCAxMywgMTc1LCAyMjYsIAorICAgIDIwMywgOSwgMTMsIDE3NSwgMjA2LCAxMTQsIDksIDEzLCAxNzUsIDI0MiwgNTIsIDksIDEzLCAxNzUsIDE5OSwgMTA4LCA5LCAKKyAgICAxMywgMTc1LCAyMzUsIDE5NCwgOSwgMTMsIDIxNywgNDQsIDg0LCAzLCAxNTUsIDMsIDIwNiwgMjIzLCA5LCAxMywgMjE3LCAKKyAgICA0NCwgMTU1LCAzLCAyNDIsIDI5LCAyMjIsIDIwMCwgMTAzLCAyMzksIDE0LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAyMDgsIAorICAgIDI1NCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMjAxLCA0OCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMTU3LCAyMDEsIAorICAgIDE2LCAyMjIsIDIwMCwgMTAzLCAyMTMsIDE3MCwgMjM5LCAxNTgsIDIyMiwgMjAwLCAxMDMsIDIzNSwgNjQsIDIzOSwgMTU4LCAKKyAgICAyMjIsIDIwMCwgMTAzLCA2NCwgMjM5LCAxNTgsIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDEyMCwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDEyNiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIAorICAgIDIzNiwgMjI5LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjM3LCA2MSwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAyNDcsIDE5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAyMzgsIDIzMiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCA3NiwgMjQ3LCAxOSwgCisgICAgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMTIwLCA3NiwgMjQ5LCA4OSwgMjIyLCAKKyAgICAyMDAsIDEwMywgMTI2LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjM2LCAyMjksIDc2LCAyNDksIDg5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjA5LCAxMDYsIDc2LCAyNDksIDg5LCAKKyAgICAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ5LCAKKyAgICA4OSwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDYsIAorICAgIDE1MiwgMjIyLCAyMDAsIDEwMywgMTIwLCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDEyNiwgNzYsIDI0NiwgMTUyLCAKKyAgICAyMjIsIDIwMCwgMTAzLCAyMzYsIDIyOSwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ2LCAKKyAgICAxNTIsIDIyMiwgMjAwLCAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgCisgICAgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCAKKyAgICA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxNSwgMTE2LCAyMjIsIDIwMCwgMTAzLCAyMTcsIDMxLCAyMjIsIDIwMCwgCisgICAgMTAzLCAyNDksIDkwLCAyMjIsIDIwMCwgMTAzLCAyNDYsIDE5MywgMjIyLCAyMDAsIDEwMywgMjA4LCAxOTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIwNywgMjMwLCAyMjIsIDIwMCwgMTAzLCAyNTAsIDEyNiwgMjIyLCAyMDAsIDEwMywgMjAxLCA3LCAyMjIsIDIwMCwgCisgICAgMTAzLCAyMjcsIDE1OSwgMjIyLCAyMDAsIDEwMywgMjQ5LCAxMjksIDE2NiwgMTAzLCAyMzMsIDE3NywgMjQ5LCAxMjksIAorICAgIDE2NiwgMTAzLCAyMzMsIDE3NSwgMTY2LCAxMDMsIDIzMywgMTc0LCAxNjYsIDEwMywgMjMzLCAxNzMsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE3MiwgMTY2LCAxMDMsIDIzMywgMTcxLCAxNjYsIDEwMywgMjMzLCAxNzAsIDE2NiwgMTAzLCAyMzMsIDE2OSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTY4LCAxNjYsIDEwMywgMjMzLCAxNjcsIDE2NiwgMTAzLCAyMzMsIDE2NiwgMTY2LCAxMDMsIAorICAgIDIzMywgMTY1LCAxNjYsIDEwMywgMjMzLCAxNjQsIDE2NiwgMTAzLCAyMzMsIDE2MywgMTY2LCAxMDMsIDIzMywgMTYyLCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNjEsIDE2NiwgMTAzLCAyMzMsIDE2MCwgMTY2LCAxMDMsIDIzMywgMTU5LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNTgsIDE2NiwgMTAzLCAyMzMsIDE1NywgMTY2LCAxMDMsIDIzMywgMTU2LCAxNjYsIDEwMywgMjMzLCAxNTUsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE1NCwgMTY2LCAxMDMsIDIzMywgMTUzLCAxNjYsIDEwMywgMjMzLCAxNTIsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE1MSwgMTY2LCAxMDMsIDIzMywgMTUwLCAxNjYsIDEwMywgMjMzLCAxNDksIDE2NiwgMTAzLCAyMzMsIDE0OCwgCisgICAgMTY2LCAxMDMsIDIzMywgMTQ3LCAxNjYsIDEwMywgMjMzLCAxNDYsIDE2NiwgMTAzLCAyMzMsIDE0NSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTQ0LCAxNjYsIDEwMywgMjMzLCAxNDMsIDE2NiwgMTAzLCAyMzMsIDE0MiwgMTY2LCAxMDMsIDIzMywgMTQxLCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNDAsIDE2NiwgMTAzLCAyMzMsIDEzOSwgMTY2LCAxMDMsIDIzMywgMTM4LCAxNjYsIDEwMywgCisgICAgMjMzLCAxMzcsIDE2NiwgMTAzLCAyMzMsIDEzNiwgMTY2LCAxMDMsIDIzMywgMTM1LCAxNjYsIDEwMywgMjMzLCAxMzQsIAorICAgIDE2NiwgMTAzLCAyMzMsIDEzMywgMTY2LCAxMDMsIDIzMywgMTMyLCAxNjYsIDEwMywgMjMzLCAxMzEsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDEzMCwgMTY2LCAxMDMsIDIzMywgMTI5LCAxNjYsIDEwMywgMjMzLCAxMjgsIDE2NiwgMTAzLCAyMzMsIDEyNywgCisgICAgMTY2LCAxMDMsIDgzLCAyNDksIDEyOSwgMTY2LCAxMDMsIDIwMywgNDEsIDE2NiwgMTAzLCAyMDMsIDQwLCAxNjYsIDEwMywgCisgICAgMjAzLCAzOSwgMTY2LCAxMDMsIDIwMywgMzgsIDE2NiwgMTAzLCAyMDMsIDM3LCAxNjYsIDEwMywgMjAzLCAzNiwgMTY2LCAKKyAgICAxMDMsIDIwMywgMzUsIDE2NiwgMTAzLCAyMDMsIDM0LCAxNjYsIDEwMywgMjAzLCAzMywgMTY2LCAxMDMsIDIwMywgMzIsIAorICAgIDE2NiwgMTAzLCAyMDMsIDMxLCAxNjYsIDEwMywgMjAzLCAzMCwgMTY2LCAxMDMsIDIwMywgMjksIDE2NiwgMTAzLCAyMDMsIAorICAgIDI4LCAxNjYsIDEwMywgMjAzLCAyNywgMTY2LCAxMDMsIDIwMywgMjYsIDE2NiwgMTAzLCAyMDMsIDI1LCAxNjYsIDEwMywgCisgICAgMjAzLCAyNCwgMTY2LCAxMDMsIDIwMywgMjMsIDE2NiwgMTAzLCAyMDMsIDIyLCAxNjYsIDEwMywgMjAzLCAyMSwgMTY2LCAKKyAgICAxMDMsIDIwMywgMjAsIDE2NiwgMTAzLCAyMDMsIDE5LCAxNjYsIDEwMywgMjAzLCAxOCwgMTY2LCAxMDMsIDIwMywgMTcsIAorICAgIDE2NiwgMTAzLCAyMDMsIDE2LCAxNjYsIDEwMywgMjAzLCAxNSwgMTY2LCAxMDMsIDIwMywgMTQsIDE2NiwgMTAzLCAyMDMsIAorICAgIDEzLCAxNjYsIDEwMywgMjAzLCAxMiwgMTY2LCAxMDMsIDIwMywgMTEsIDE2NiwgMTAzLCAyMDMsIDEwLCAxNjYsIDEwMywgCisgICAgMjAzLCA5LCAxNjYsIDEwMywgMjAzLCA4LCAxNjYsIDEwMywgMjAzLCA3LCAxNjYsIDEwMywgMjAzLCA2LCAxNjYsIDEwMywgCisgICAgMjAzLCA1LCAxNjYsIDEwMywgMjAzLCA0LCAxNjYsIDEwMywgMjAzLCAzLCAxNjYsIDEwMywgMjAzLCAyLCAxNjYsIDEwMywgCisgICAgMjAzLCAxLCAxNjYsIDEwMywgMjAzLCAwLCAxNjYsIDEwMywgMjAyLCAyNTUsIDE2NiwgMTAzLCAyMDIsIDI1NCwgMTY2LCAKKyAgICAxMDMsIDIwMiwgMjUzLCAxNjYsIDEwMywgMjAyLCAyNTIsIDE2NiwgMTAzLCAyMDIsIDI1MSwgMTY2LCAxMDMsIDIwMiwgCisgICAgMjUwLCAxNjYsIDEwMywgMjAyLCAyNDksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjQ5LCAxMjksIDIxNSwgMTI1LCAyNDcsIAorICAgIDEzNCwgMjUxLCAyNDUsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyMDgsIDI0MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDksIAorICAgIDEwNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI3LCAKKyAgICAyNDYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjUxLCAyNDUsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIAorICAgIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMzYsIDIyOSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyMzQsIDEyNSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDksIDEwNiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgCisgICAgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMTksIDExNCwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjM0LCAxMjUsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjI3LCAyNDYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgCisgICAgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIyNiwgMTQ1LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEzLCAxNzAsIDIyNywgMTU5LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDI1MSwgMjQ1LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyNDEsIDYzLCAKKyAgICAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM2LCAyMjksIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwOSwgMTA2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIDI0MSwgNjMsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjI3LCAyNDYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyNDEsIDYzLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIxNCwgODEsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCA2MywgMjI3LCAxNTksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjUxLCAyNDUsIAorICAgIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMTI2LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA5LCAxMDYsIDc2LCAyNDYsIAorICAgIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzgsIAorICAgIDIzMiwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjcsIDI0NiwgNzYsIDI0NiwgCisgICAgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE0LCAKKyAgICA4MSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDY0LCAyMjcsIDE1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA2MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDYsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ0LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNDMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MiwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDU4LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTcsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NiwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDU1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTQsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA1MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDUyLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ4LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNDcsIDE3LCAxOTksIDgyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDE5OSwgODIsIDI0NiwgNzAsIDE3LCAxMTIsIAorICAgIDI0NiwgNzAsIDE3LCAxMjAsIDI0NiwgNzAsIDE3LCAxMjYsIDI0NiwgNzAsIDE3LCAyMzYsIDIyOSwgMjQ2LCA3MCwgMTcsIAorICAgIDIzNywgNjEsIDI0NiwgNzAsIDE3LCAyMDksIDEwNiwgMjQ2LCA3MCwgMTcsIDIxMCwgMTM2LCAyNDYsIDcwLCAxNywgMjM4LCAKKyAgICAyMzIsIDI0NiwgNzAsIDE3LCAyMTksIDExNCwgMjQ2LCA3MCwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTk5LCA4MSwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgNDMsIDE3LCAxOTksIDgxLCAxMDYsIDgsIDYsIDEsIDYyLCAxMDYsIDgsIDYsIDEsIDI1MCwgMTAzLCAKKyAgICAxMDYsIDgsIDYsIDEsIDI0NywgMjIzLCAxMDYsIDgsIDYsIDEsIDI0MiwgMTUzLCAxMDYsIDgsIDYsIDEsIDcyLCAxMDYsIDgsIAorICAgIDYsIDEsIDIzOCwgNSwgMTA2LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTA2LCA4LCA2LCAxLCAyMzQsIDI0NywgMTA2LCA4LCA2LCAKKyAgICAxLCA3MCwgMTA2LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTA2LCA4LCA2LCAxLCAyMjcsIDExOCwgMTA2LCA4LCA2LCAxLCAxNTYsIAorICAgIDEwNiwgOCwgNiwgMSwgMjIzLCAyNDMsIDEwNiwgOCwgNiwgMSwgMjIwLCAyMTQsIDEwNiwgOCwgNiwgMSwgNzQsIDEwNiwgOCwgCisgICAgNiwgMSwgMjE2LCAyMjYsIDEwNiwgOCwgNiwgMSwgMjE0LCAxNjcsIDEwNiwgOCwgNiwgMSwgMTQ2LCAxMDYsIDgsIDYsIDEsIAorICAgIDIxMiwgMTIyLCAxMDYsIDgsIDYsIDEsIDIwNywgODMsIDEwNiwgOCwgNiwgMSwgNjYsIDEwNiwgOCwgNiwgMSwgMjAzLCAKKyAgICAxNjgsIDEwNiwgOCwgNiwgMSwgMjAxLCAxNDcsIDEwNiwgOCwgNiwgMSwgMjAwLCAxOTUsIDEwNiwgOCwgNiwgMSwgMjAwLCAKKyAgICAxMjMsIDEwNiwgOCwgNiwgMSwgMTk5LCAxNTcsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMiwgNDQsIDM5LCA4LCA2LCAxLCAyNDcsIDIyMywgNDQsIDM5LCA4LCA2LCAxLCAxNDYsIDQ0LCAyNDcsIDc3LCA0NCwgCisgICAgMjAwLCAxOTcsIDk1LCA4LCA2LCAxLCA2MiwgOTUsIDgsIDYsIDEsIDI1MCwgMTAzLCA5NSwgOCwgNiwgMSwgMjQ3LCAyMjMsIAorICAgIDk1LCA4LCA2LCAxLCAyNDIsIDE1MywgOTUsIDgsIDYsIDEsIDcyLCA5NSwgOCwgNiwgMSwgMjM4LCA1LCA5NSwgOCwgNiwgMSwgCisgICAgMjM2LCAxNTYsIDk1LCA4LCA2LCAxLCAyMzQsIDI0NywgOTUsIDgsIDYsIDEsIDcwLCA5NSwgOCwgNiwgMSwgMjI3LCAyNTEsIAorICAgIDk1LCA4LCA2LCAxLCAyMjcsIDExOCwgOTUsIDgsIDYsIDEsIDE1NiwgOTUsIDgsIDYsIDEsIDIyMywgMjQzLCA5NSwgOCwgNiwgCisgICAgMSwgMjIwLCAyMTQsIDk1LCA4LCA2LCAxLCA3NCwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCA5NSwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDk1LCA4LCA2LCAxLCAxNDYsIDk1LCA4LCA2LCAxLCAyMTIsIDEyMiwgOTUsIDgsIDYsIDEsIDIwNywgODMsIDk1LCAKKyAgICA4LCA2LCAxLCA2NiwgOTUsIDgsIDYsIDEsIDIwMywgMTY4LCA5NSwgOCwgNiwgMSwgMjAxLCAxNDcsIDk1LCA4LCA2LCAxLCAKKyAgICAyMDAsIDE5NSwgOTUsIDgsIDYsIDEsIDIwMCwgMTIzLCA5NSwgOCwgNiwgMSwgMTk5LCAxNTcsIDk1LCAyMzMsIDY5LCA5NSwgCisgICAgMjIwLCAyMzgsIDk1LCAyMTEsIDIwNCwgOTUsIDIwOCwgMTgyLCA5NSwgMjE1LCA0NSwgOTUsIDIwMSwgNjUsIDE4OSwgNDQsIAorICAgIDgsIDYsIDEsIDYyLCAxODksIDQ0LCA4LCA2LCAxLCAyNTAsIDEwMywgMTg5LCA0NCwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDI0MiwgMTUzLCAxODksIDQ0LCA4LCA2LCAxLCA3MiwgMTg5LCA0NCwgOCwgNiwgMSwgMjM4LCA1LCAKKyAgICAxODksIDQ0LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjM0LCAyNDcsIDE4OSwgNDQsIDgsIDYsIDEsIAorICAgIDcwLCAxODksIDQ0LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTg5LCA0NCwgOCwgNiwgMSwgMjI3LCAxMTgsIDE4OSwgNDQsIDgsIAorICAgIDYsIDEsIDE1NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjIzLCAyNDMsIDE4OSwgNDQsIDgsIDYsIDEsIDIyMCwgMjE0LCAxODksIAorICAgIDQ0LCA4LCA2LCAxLCA3NCwgMTg5LCA0NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDE4OSwgNDQsIDgsIDYsIDEsIDIxNCwgMTY3LCAKKyAgICAxODksIDQ0LCA4LCA2LCAxLCAxNDYsIDE4OSwgNDQsIDgsIDYsIDEsIDIxMiwgMTIyLCAxODksIDQ0LCA4LCA2LCAxLCAyMDcsIAorICAgIDgzLCAxODksIDQ0LCA4LCA2LCAxLCA2NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjAzLCAxNjgsIDE4OSwgNDQsIDgsIDYsIDEsIAorICAgIDIwMSwgMTQ3LCAxODksIDQ0LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTg5LCA0NCwgOCwgNiwgMSwgMjAwLCAxMjMsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDE5OSwgMTU3LCAyMTMsIDIyMCwgMjIyLCA4MiwgNTQsIDIxMywgMjIwLCAyMjIsIDc5LCA1NCwgMTg5LCAKKyAgICA5NSwgOCwgNiwgMSwgNjIsIDE4OSwgOTUsIDgsIDYsIDEsIDI1MCwgMTAzLCAxODksIDk1LCA4LCA2LCAxLCAyNDcsIDIyMywgCisgICAgMTg5LCA5NSwgOCwgNiwgMSwgMjQyLCAxNTMsIDE4OSwgOTUsIDgsIDYsIDEsIDcyLCAxODksIDk1LCA4LCA2LCAxLCAyMzgsIAorICAgIDUsIDE4OSwgOTUsIDgsIDYsIDEsIDIzNiwgMTU2LCAxODksIDk1LCA4LCA2LCAxLCAyMzQsIDI0NywgMTg5LCA5NSwgOCwgNiwgCisgICAgMSwgNzAsIDE4OSwgOTUsIDgsIDYsIDEsIDIyNywgMjUxLCAxODksIDk1LCA4LCA2LCAxLCAyMjcsIDExOCwgMTg5LCA5NSwgCisgICAgOCwgNiwgMSwgMTU2LCAxODksIDk1LCA4LCA2LCAxLCAyMjMsIDI0MywgMTg5LCA5NSwgOCwgNiwgMSwgMjIwLCAyMTQsIAorICAgIDE4OSwgOTUsIDgsIDYsIDEsIDc0LCAxODksIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA5NSwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDE4OSwgOTUsIDgsIDYsIDEsIDE0NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjEyLCAxMjIsIDE4OSwgOTUsIDgsIDYsIDEsIAorICAgIDIwNywgODMsIDE4OSwgOTUsIDgsIDYsIDEsIDY2LCAxODksIDk1LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTg5LCA5NSwgOCwgNiwgCisgICAgMSwgMjAxLCAxNDcsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMCwgMTk1LCAxODksIDk1LCA4LCA2LCAxLCAyMDAsIDEyMywgMTg5LCAKKyAgICA5NSwgOCwgNiwgMSwgMTk5LCAxNTcsIDI0MiwgMjMyLCAxODksIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA5NSwgCisgICAgMjMyLCAyMzMsIDE4OSwgOTUsIDE3MiwgMTg5LCA5NSwgMjEyLCA2NCwgMTg5LCA5NSwgMjUyLCA4OSwgMTg5LCA5NSwgMjAxLCAKKyAgICA2NSwgNTIsIDI0MCwgMjMwLCA5NSwgMjQ2LCAxMzYsIDk1LCAyNDMsIDI2LCA5NSwgMjM2LCAyMTAsIDk1LCAyMzIsIDIyNCwgCisgICAgOTUsIDIyMCwgNywgOTUsIDIxOSwgMjU1LCA5NSwgMjE3LCA5OCwgOTUsIDIwOSwgNSwgOTUsIDExNSwgMywgMjM4LCA0MywgCisgICAgODEsIDk1LCAyMDIsIDE2OSwgOTUsIDEyNiwgMjQyLCAxNTMsIDk1LCAyMTEsIDE5NiwgMjExLCAyMDksIDk1LCAxMjAsIAorICAgIDIyNywgMTE4LCA5NSwgMjM2LCAyMjksIDIyNywgMTE4LCA5NSwgMjM4LCAyMzIsIDIyNywgMTE4LCA5NSwgMjM3LCA2MSwgCisgICAgMjE1LCAxMDAsIDEwMiwgOTUsIDIxMCwgMTM2LCAyMTUsIDEwMCwgMTAyLCA5NSwgMjA0LCAxNDksIDIxNSwgMTAwLCAxMDUsIAorICAgIDk1LCAyMDksIDkzLCAyMTYsIDIyNiwgOTUsIDExMiwgMjMzLCA4MywgMjA0LCAxNjAsIDIxNiwgMjI2LCA5NSwgOCwgNCwgMSwgCisgICAgMjQyLCAxNTMsIDk1LCAyMzQsIDE0MiwgOTUsIDIzNCwgMTQxLCA5NSwgMjM0LCA3NCwgOTUsIDIyNCwgNjYsIDk1LCAyMDksIAorICAgIDIwMSwgOTUsIDIwNCwgMjQsIDk1LCAyMDIsIDE5MCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNjIsIDIxMywgMTYyLCAKKyAgICAyMjgsIDEwMCwgMTYsIDEsIDI1MCwgMTAzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyNDcsIDIyMywgMjEzLCAxNjIsIAorICAgIDIyOCwgMTAwLCAxNiwgMSwgMjQyLCAxNTMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDcyLCAyMTMsIDE2MiwgMjI4LCAKKyAgICAxMDAsIDE2LCAxLCAyMzgsIDUsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIzNiwgMTU2LCAyMTMsIDE2MiwgMjI4LCAKKyAgICAxMDAsIDE2LCAxLCAyMzQsIDI0NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzAsIDIxMywgMTYyLCAyMjgsIDEwMCwgCisgICAgMTYsIDEsIDIyNywgMjUxLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMjcsIDExOCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAKKyAgICAxNiwgMSwgMTU2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMjMsIDI0MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgCisgICAgMSwgMjIwLCAyMTQsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDc0LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAKKyAgICAyMTYsIDIyNiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjE0LCAxNjcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIAorICAgIDE0NiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjEyLCAxMjIsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwNywgCisgICAgODMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDY2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDMsIDE2OCwgCisgICAgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAxLCAxNDcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMCwgMTk1LCAKKyAgICAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDAsIDEyMywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMTk5LCAxNTcsIAorICAgIDUyLCAxNzcsIDIzMywgMjAxLCA5NSwgNjksIDIyNiwgNzYsIDk1LCA2OSwgMjEyLCA2NCwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNjksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTczLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MSwgOTUsIDY5LCAKKyAgICAyNDEsIDE3NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc1LCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzQsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTg3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTQsIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTYzLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MiwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxODUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MywgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE3OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY3LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE2NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTEsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzEsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTg5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjYsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxNTAsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3OSwgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNTcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTU5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTIsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgzLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE3NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTU4LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MCwgCisgICAgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxODgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTcyLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE1NSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjgsIDIwNSwgCisgICAgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCAKKyAgICA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MiwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNjQsIDQ0LCAxOTgsIDE5OCwgMjUxLCAyMjMsIDQ0LCAxOTgsIDE5OCwgMjUxLCAyNDksIDI0MiwgMTY0LCAyMzcsIAorICAgIDExLCAyNDYsIDExMCwgMjA0LCA5LCAyMTksIDEzMCwgMywgMjA4LCAxMDYsIDIwNywgMjIzLCAxMTksIDIyMSwgNjIsIDIwNywgCisgICAgMjIyLCAyNDYsIDE0MCwgMjUwLCAxNTYsIDIzOSwgMTExLCAyMDcsIDIyMSwgMTE5LCAyNDgsIDI1LCAyMTMsIDIyMSwgMjQ4LCAKKyAgICA1MSwgMjUwLCAxNTYsIDIxOSwgMTI5LCAyMDEsIDgzLCAyMDEsIDc3LCAyMDIsIDE4NCwgMjIxLCAxNzIsIDIwMSwgNjcsIAorICAgIDIzOSwgMTgsIDIzNSwgMTI0LCAyMzgsIDU5LCAyMzksIDE4LCAyMzUsIDEyNCwgMjUxLCA5MiwgMjM5LCAxOCwgMjM1LCAKKyAgICAxMjQsIDI1MCwgMTc0LCAyMzUsIDEyNCwgMywgMjIyLCAzMSwgMjIwLCA4LCAyMjEsIDgyLCA5OSwgMjAxLCA2OSwgMjQyLCAKKyAgICAyNDQsIDIyMSwgODIsIDk5LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIDgyLCA5OSwgMjAxLCA2OSwgMjM1LCAxNTcsIDIyMSwgCisgICAgODIsIDk5LCAyMzYsIDE4MywgMjIxLCA4MiwgOTksIDIwMSwgOTcsIDIzNSwgMTU3LCAyMjEsIDgyLCA5OSwgMjI1LCA2NCwgCisgICAgMjE0LCA4OCwgMjIxLCA4MiwgOTksIDIwMSwgOTcsIDI0MiwgMjQ0LCAyMjEsIDgyLCA5OSwgMjQyLCAyNDQsIDIyMSwgODEsIAorICAgIDIyMCwgOCwgMjIxLCA4MiwgMywgMjM3LCAxODksIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAKKyAgICAyMjUsIDY0LCAyMTQsIDg4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgMjM2LCAxODMsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAKKyAgICAyMDcsIDIyOSwgMywgMjM3LCAxODksIDIzNSwgMTIxLCAyMDgsIDEwOSwgMjA5LCAyNTUsIDIwOCwgMTA5LCAyMDYsIDk0LCAKKyAgICA2MywgMjM5LCAxNDUsIDY0LCAyMDcsIDIyOCwgNjQsIDIwNywgMjI5LCAzLCA0LCAyNDYsIDEwMSwgNjQsIDIwNywgMjI5LCAKKyAgICAyNDgsIDIzNywgMjQ2LCAxMDEsIDY0LCAyMDcsIDIyOSwgMjQ4LCAyMzcsIDI0NiwgMTAyLCAzLCAyMTMsIDIyMiwgMjQ2LCAKKyAgICAxMDIsIDMsIDIxMywgMjIyLCAyNDYsIDEwMiwgMywgMjA5LCAzNSwgMjQ2LCAxMDIsIDMsIDIyNCwgMTkzLCAyNDYsIDEwMiwgCisgICAgMywgMjA1LCAxNTAsIDIzNywgMTIsIDIwMSwgMTcsIDI0OCwgMTI4LCAyMzcsIDE4OSwgMjMzLCAxMTgsIDI0MCwgMjAwLCAKKyAgICAyMDcsIDE2LCAyNDgsIDEsIDI0NiwgMjQyLCAyMTEsIDE4OCwgMjM4LCA1MywgMjA1LCAxMDgsIDI0MSwgMTY5LCAyMDUsIAorICAgIDEwOCwgMjE2LCAxNzcsIDIwNSwgMTA4LCAyNDcsIDE4MywgMjMzLCAxMTgsIDIxNiwgMjksIDIwNCwgMjA1LCAyNDYsIDI0NiwgCisgICAgMjQ4LCAxMzEsIDIxMiwgMjMyLCAyMzQsIDczLCAyMDcsIDIyNiwgMjQ4LCAxMzEsIDIzOSwgMjIsIDc2LCAyMjIsIDE4OSwgCisgICAgMjM5LCAyMiwgNzYsIDIxMywgODMsIDIzNCwgMTAwLCAyMzYsIDIyOSwgMjI1LCAzNiwgMjQ2LCAxMDAsIDIyMiwgMTYyLCAKKyAgICAyMjUsIDM1LCAyMzcsIDE3MiwgMjI1LCAzNSwgMjI1LCAzNiwgMjM3LCAxOSwgMjI4LCAxMTgsIDIwMSwgMTYsIDIyMCwgCisgICAgMjQ3LCAyMDUsIDE3OCwgMjUwLCAxMzgsIDIzNSwgODEsIDIyMiwgNDksIDIwMSwgODEsIDIwNiwgMjM5LCAyMjUsIDUsIAorICAgIDI0OSwgODUsIDIxNSwgMTU3LCAyMTMsIDE3MCwgMjUxLCAxMCwgMjM1LCA2NCwgMjUxLCAxMCwgMjE2LCA2NywgMjE2LCA3MCwgCisgICAgMjQ2LCAyNDcsIDIwOCwgNjAsIDIzNCwgMjA4LCAyMDksIDY4LCA3NiwgMjE1LCAxMzcsIDIyMiwgNzIsIDIxNywgNzksIAorICAgIDI0OCwgMTEyLCAyMTUsIDU3LCAyMjUsIDE2LCAyMTMsIDg0LCAyNDIsIDI1MCwgMjEzLCA4NCwgMjQ5LCA5NywgMjQzLCAyOSwgCisgICAgMjEzLCA4MywgMjQyLCAxOTIsIDI2LCAyMTMsIDgzLCAyMDgsIDk0LCAyNDgsIDgyLCAyMDgsIDI0MCwgMjQ4LCA2MiwgMjM2LCAKKyAgICAyMDksIDIzNiwgMjA1LCAyMTIsIDI1MywgMjA3LCAxNzksIDIxNSwgNTksIDI0MiwgNywgMjE3LCAxMjMsIDIwNywgMTk3LCAKKyAgICAyMzYsIDIwNiwgMjA5LCAyMjYsIDIzNywgNzIsIDI0NywgMTc3LCAzLCAyMDcsIDE3MiwgMjQxLCAxMTIsIDIwOSwgMjMsIAorICAgIDIzMiwgMjMyLCAyNDIsIDI0OCwgMjEwLCA3MywgMjMyLCAyMzEsIDIzMiwgMjMyLCAyNDIsIDI0OCwgMjM5LCAxNzAsIDI0MywgCisgICAgMjgsIDI0NiwgMjA4LCAxNDgsIDI0NywgMTQ4LCAyMjQsIDkzLCAyNDIsIDE4MywgMjMzLCAxOTAsIDIxNSwgNjEsIDIwOSwgCisgICAgMjM5LCAyNDgsIDIxOCwgMjQ4LCA3OCwgMjE1LCA2MiwgNzYsIDIzNywgMSwgMjQzLCAyNywgMjM2LCAyNDYsIDI2LCAyMjYsIAorICAgIDk1LCAyMDYsIDE5OCwgMjAxLCAzLCAyMzQsIDE3NywgMjEyLCA0MSwgMjQ4LCA5NSwgMjYsIDI0MiwgMjAyLCAyMDEsIDEzLCAKKyAgICAyMzUsIDEyOCwgMjQ2LCA4OCwgMjM1LCAxMjgsIDIwNSwgNjMsIDIzOSwgMTUxLCAyNDgsIDI0OCwgMjIxLCAzMCwgMjQ2LCAKKyAgICAxMTcsIDI0OCwgMjQ4LCAyMjEsIDI5LCAyNDksIDEzMiwgMjQ4LCA5NCwgMjM2LCAyNDYsIDI2LCAyMjYsIDk2LCAzLCAyMTUsIAorICAgIDEyNiwgMjQ4LCA5NSwgMywgMjE1LCA3NCwgMjQzLCAxNywgMjE1LCA3NiwgMjEzLCA4NSwgMjAwLCAyMjcsIDIxNSwgMjAsIAorICAgIDI0OCwgMTU5LCAyNDcsIDE3NiwgMjI3LCAyNDUsIDI0NiwgMjAwLCAyMDUsIDEwOCwgMjM3LCAxNTUsIDI0NiwgMTk5LCAKKyAgICAyMzcsIDc1LCAyMzcsIDc2LCAyMDgsIDIzOCwgMjQ5LCA5NiwgMjE2LCAxMDUsIDIxNSwgNzUsIDI0MywgNjUsIDI0OSwgOTcsIAorICAgIDIwNiwgMjQzLCAyMDUsIDEwOCwgMjQyLCAyMzIsIDIzNywgNDcsIDIxNSwgMTU4LCAyNDEsIDE2NiwgMjI3LCAyMzYsIDI0MCwgCisgICAgMTkzLCAyNDcsIDEyMywgMjA4LCA1OSwgMjAxLCAxNywgMjQ2LCAyMjQsIDIyMSwgODIsIDIwMiwgMjIxLCAyNDcsIDQyLCAKKyAgICAyMTEsIDIyMiwgMjExLCAyNDksIDIzNSwgODcsIDI0NywgMTQ0LCAyMzQsIDEyOCwgMywgMjA1LCAyMjQsIDIxNywgNzksIAorICAgIDIwNiwgMTA3LCAyMjUsIDI4LCAyNDgsIDg4LCA3NiwgMjM3LCAyMywgMjIxLCAxNzQsIDIyMiwgNjksIDIxMywgMTQyLCAKKyAgICAyMTMsIDg1LCAzMiwgMjI2LCAyMTMsIDMsIDIyNywgMjQ0LCAyMDgsIDMwLCAyMjEsIDIwOCwgMjI0LCAyMjksIDIwOSwgNjYsIAorICAgIDI0MywgMzQsIDIyNiwgOTIsIDI0OSwgNCwgMjUwLCAxODQsIDMyLCAyMTgsIDIwNCwgMjQ5LCA0LCAyNDEsIDExOCwgMzIsIAorICAgIDIxOCwgMjA0LCAyMzcsIDkwLCAyMzYsIDIxNCwgMjUxLCAyMjYsIDIwNiwgOSwgMjQ3LCAxMjQsIDIzMywgMTIwLCAyMzcsIAorICAgIDEyMSwgMjAxLCAzNywgMjEyLCAyNDMsIDI0NiwgODksIDIzNywgNjcsIDIxNSwgOTEsIDI2LCAyMzcsIDcxLCAyMjEsIDIwOCwgCisgICAgMjIxLCA0OCwgMjQ3LCAxNjIsIDI0NiwgMTU5LCAyMzQsIDEzMiwgMjUwLCAxOTMsIDIxNiwgMTgwLCAyMDUsIDE1OCwgMjM0LCAKKyAgICAxNTcsIDI0NiwgMTQ1LCAyMDYsIDE1OCwgMjA2LCAxMCwgMjQ2LCAxMzEsIDI0OCwgMTIxLCAyMTYsIDIyLCAyNTAsIDE5MSwgCisgICAgMjAyLCAyMzAsIDIzNiwgNjMsIDI0MSwgMTAsIDIzNCwgNDUsIDIwOSwgNTksIDIyMiwgMjMwLCAyNDgsIDE3MSwgMjM2LCAKKyAgICA2NCwgMjQxLCA1NiwgMjQ4LCA4MSwgMjM3LCAyNSwgMjE1LCAxMjUsIDI0NywgMTMyLCAzMiwgMjE4LCAyMDksIDIyMSwgMjEsIAorICAgIDMyLCAyMTgsIDIwNCwgMjExLCAyMzUsIDIzNSwgMzQsIDMyLCAyMjYsIDIxMiwgMjA1LCAzOSwgMjAyLCAyMTAsIDMyLCAKKyAgICAyMTEsIDIxNCwgMjEyLCAxNTUsIDIxMCwgMTIsIDMsIDIxMSwgMjUyLCAyMDYsIDE2MywgMjEzLCAyNDEsIDI2LCAyNDksIAorICAgIDk3LCAyMDksIDg1LCAyNiwgMjA5LCA4NSwgMjQ4LCAxMDUsIDI0OSwgNTksIDI2LCAyMzMsIDE4MywgMjQ2LCAyNDgsIDIzNywgCisgICAgNTMsIDIwOSwgMzQsIDIxMiwgMTU2LCAyMDcsIDIwMiwgMjA4LCAyMDUsIDIyMiwgNjksIDIwNSwgNjQsIDIzMywgMTIxLCAKKyAgICAyMTMsIDI0MiwgMjUxLCA5MywgMjM2LCAyNTQsIDIxMiwgMTY5LCAyMzYsIDI1NCwgMjA3LCAxNzQsIDIwMSwgNTMsIDIyNCwgCisgICAgMTk4LCAyMzUsIDEwNywgMjEzLCAyNDMsIDIyMSwgNjksIDIxMywgMjQzLCAyNDcsIDEzNSwgMjQyLCAyNDEsIDI0OSwgNTYsIAorICAgIDI2LCAyNDksIDk3LCAyMDIsIDE4MywgMjM3LCAxMTEsIDIzMywgMjA0LCAyMDgsIDg4LCAyNiwgMjQ5LCA5NywgMjMyLCAKKyAgICAyMzIsIDIzMywgMjA0LCAyMDgsIDg4LCAyNiwgMjE0LCAyMTcsIDIwNywgMjMsIDIwNiwgMTYzLCAyMTYsIDE5OCwgMjYsIAorICAgIDI0OSwgOTcsIDIwOSwgMzYsIDI0NywgMTQwLCAyMjEsIDYzLCAyNDcsIDE2MCwgMjQ5LCA3LCAzLCAyMDQsIDksIDI0OCwgCisgICAgMjcsIDI0MywgNDgsIDIzMywgMTEwLCAyNDgsIDI1LCAyNDYsIDEzOSwgMjQxLCAxMjIsIDIzMywgMTEwLCAyNDgsIDI2LCAKKyAgICAyNDYsIDEyOSwgMjQ4LCAyNiwgMjQxLCAxMTQsIDI0MSwgMTE1LCAyMjgsIDE5LCAyMjAsIDExOCwgMjE2LCAxMTEsIDIwOCwgCisgICAgMTE5LCAyMzMsIDExMCwgMjQ4LCAyNiwgMjMzLCAxMTAsIDMsIDIzNiwgNDcsIDIxNywgMTE1LCAyNDgsIDI2LCAyMjcsIAorICAgIDIzNiwgMjE1LCA2NywgMjE3LCAxMTQsIDIzOCwgNTgsIDIxNSwgNjcsIDIxNywgMTE0LCAyMzMsIDExOSwgMjQ5LCA4MSwgCisgICAgMjUwLCAxMjgsIDIwNiwgMTcxLCAyMjIsIDIzMCwgMjMzLCAxMTUsIDIyNCwgNjAsIDIzMywgMTE1LCAyNDMsIDMyLCAyMDgsIAorICAgIDcyLCAyMTEsIDIyMSwgMjQxLCAxMjUsIDIwOCwgNzIsIDIzNywgMTc4LCAyMjgsIDAsIDIyNSwgNzYsIDIyNywgMjM2LCAKKyAgICAyNDcsIDExMywgMjM4LCA1OCwgMjQ3LCAxMTMsIDY0LCAyMTYsIDQxLCA2MywgMjE2LCA0MSwgMjAxLCA3NSwgNjQsIDIzNywgCisgICAgNTMsIDIwMSwgNzUsIDYzLCAyMzcsIDUzLCAyMTIsIDIzMSwgNjMsIDIxMiwgMjMxLCAyMjUsIDE2OCwgMjQ5LCAxMTUsIAorICAgIDIxMywgMjQxLCAyNiwgMjA5LCAyMDQsIDI0OCwgODYsIDI2LCA0OCwgMjUxLCA4OCwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAKKyAgICAyMDQsIDEyNiwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDEyMywgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIAorICAgIDEyMSwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDExOSwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDExNywgCisgICAgMjEzLCAyMDQsIDIyMSwgNjAsIDIxNiwgMjM1LCAyMDEsIDgzLCAyNDgsIDMxLCAyNDIsIDI1NSwgMjA2LCAyLCAyMjQsIAorICAgIDI0NSwgMjEzLCAyNDQsIDI0NywgMTExLCAyMzksIDE1OCwgMjQyLCAyNDAsIDIwMSwgNDAsIDIwOSwgNDMsIDIwOSwgNDEsIAorICAgIDIzMywgMTIwLCAyMTMsIDIxNiwgMjM1LCAxMTIsIDIxMCwgNTksIDIyMSwgMTAwLCAyMTIsIDIzNSwgMjQ2LCAyMzQsIDI0MCwgCisgICAgMjAwLCAyMTUsIDE2OCwgMjQ4LCAxMjIsIDIzOCwgMjAxLCAyMTcsIDEyNiwgMjA4LCAyMTgsIDIxMCwgNTQsIDI0OCwgMzAsIAorICAgIDI1MSwgNTEsIDIzMywgMTg5LCAyMjUsIDE2MSwgMjQ4LCAyNDYsIDIzNywgNzEsIDIwNSwgNjMsIDIzNywgNzEsIDI0OCwgCisgICAgMTI5LCAyMDQsIDE4MiwgMjM0LCAxNTUsIDI0NiwgMjM1LCAyNDksIDEzMiwgMjQ2LCAyMzUsIDIzNiwgMTk5LCAyNDksIAorICAgIDEzMiwgMjQ2LCAyMzUsIDI0OCwgMTYyLCAyMTYsIDQzLCAyMjYsIDg2LCAyMTUsIDgwLCAyMzksIDE0OCwgMjQ3LCAxNjQsIAorICAgIDI0OSwgMTIwLCAyNDcsIDE2NCwgMjQwLCAxOTIsIDIyMSwgNjEsIDIzNywgMTg5LCAyNDMsIDAsIDIzNywgMTg5LCAyMDYsIAorICAgIDMsIDIzNywgMTg5LCAyMTMsIDI0NSwgMjM3LCAxODksIDI0NywgMTEyLCAyMzcsIDE4OSwgMjM5LCAxNTksIDIzNywgMTg5LCAKKyAgICAyMDgsIDIwMywgMjAxLCA0MCwgMjMzLCAxMjEsIDIzNywgMTg5LCAyMjEsIDEwMSwgMjM3LCAxODksIDI0MCwgMjAxLCAyMzcsIAorICAgIDE4OSwgMjE1LCAxNjksIDIzNywgMTg5LCAyMzYsIDIwMywgMjM3LCAxODksIDIzNCwgMjA1LCAyMzcsIDE4OSwgMjAwLCAKKyAgICAyNTMsIDIzNywgMTg5LCAyNDksIDIsIDIzNywgMTg5LCAyMTYsIDE1OSwgMjM3LCAxODksIDIxNSwgMTY5LCAyMTgsIDIxNiwgCisgICAgMjE2LCA4NSwgMjE1LCA3LCAyNDYsIDIxOSwgMjM4LCAxNSwgMjM4LCAyMiwgMjM5LCAyMSwgMjE4LCAyMTYsIDIyMSwgNTgsIAorICAgIDIwNSwgMTYzLCA2NCwgMTE1LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDY0LCAxMjcsIDIxNSwgOTYsIDI0OSwgCisgICAgMTI3LCAyMjgsIDEwMywgNjQsIDQ5LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDY0LCA1MSwgMjE1LCA5NiwgMjQ5LCAKKyAgICAxMjcsIDIyOCwgMTAzLCAyMzcsIDY1LCAyMzQsIDIwMCwgNTQsIDIwMSwgNzUsIDIzNCwgMjAwLCA1NCwgMjE3LCA5OSwgCisgICAgMjM0LCAyMDAsIDU0LCAyMDYsIDMzLCAxMTUsIDU0LCAyMDYsIDMzLCAxMjcsIDU0LCAyNDYsIDEzMCwgMjM0LCAxNzUsIDU0LCAKKyAgICAxNzYsIDIzNCwgMTc1LCA1NCwgMjQyLCAyMjYsIDIwMCwgMjQ5LCAyMzQsIDE1NywgMjM4LCAxOCwgMjIwLCAzMCwgMjA3LCAKKyAgICA4MiwgMjI3LCAyMjYsIDIzOSwgMTUzLCAyMjYsIDE0OCwgMjQ4LCAxNzMsIDIwMCwgMjQ5LCAyNDYsIDEwMywgMjE0LCAxOTgsIAorICAgIDIzNCwgMTc5LCAyMTUsIDU4LCAyMjIsIDE3MCwgMjEwLCA1LCAyNTAsIDE1MSwgMjEwLCA1LCAyMzQsIDU4LCAyMTAsIDUsIAorICAgIDIwMCwgMjQ5LCAyMTIsIDEwLCAyMDAsIDI0OSwgMjQ4LCAxMDQsIDIzNiwgMjUyLCAyNDcsIDI0OSwgMjI4LCAxMTgsIDIwOSwgCisgICAgMTU1LCAyNDcsIDI0OCwgMjI4LCAxMTgsIDIwOSwgMTU1LCAyNDgsIDc2LCAyMzUsIDE0MCwgMjIyLCAxODAsIDIwMCwgMjUwLCAKKyAgICAyMzcsIDE2OSwgMjIyLCAxODEsIDI2LCAyMDAsIDI1MSwgMjMzLCAxOTgsIDIzNCwgMTc0LCAxMjAsIDIyMiwgNDEsIDIzMywgCisgICAgMTk4LCAyMzQsIDE3NCwgMTIwLCAyMDAsIDI0OCwgMjMzLCAxOTgsIDIzNCwgMTc0LCAyMTUsIDg4LCAyMTcsIDExMywgMjAwLCAKKyAgICAyNTEsIDMsIDI0OCwgMTEsIDIzOSwgMTksIDI0OCwgNTIsIDMsIDIwMywgNTAsIDIxNiwgMTEsIDMsIDI0OCwgMTMzLCAyMzQsIAorICAgIDIyMSwgMjIyLCAxODEsIDMsIDIzNSwgNDcsIDIxNSwgMjA1LCAyMjIsIDE2NiwgMjIyLCAxODEsIDMsIDIwNCwgMTkxLCAKKyAgICAyMTcsIDkxLCAyMjIsIDE4MCwgMjE3LCA5MSwgMjAwLCAyNTAsIDI0OSwgMTMxLCAyNDMsIDQ5LCAyMDAsIDIzNCwgMjE1LCAKKyAgICAxMiwgMjI3LCAyMzYsIDIxNywgMTA5LCAyMjcsIDIzNiwgMjM1LCAxMTEsIDIzNSwgMTY5LCAyNDksIDEzMiwgMjUxLCA3NCwgCisgICAgMjM4LCAyNywgMjUxLCAxMzIsIDI1MSwgMTMzLCAyMjEsIDkxLCAyMjgsIDEyMywgMjA5LCA4MCwgMjI4LCA5MiwgMjQxLCAKKyAgICAxMTEsIDIxNiwgMTAsIDIzNSwgNDEsIDI0MiwgMTIsIDIyNCwgMTU5LCAyMjAsIDE0MiwgMjE1LCA4NywgMjM3LCAxOTAsIAorICAgIDIyMiwgMTMwLCAyMzQsIDIyMCwgMjQ5LCA3NSwgMjE1LCA5MCwgMjA3LCAxMDIsIDIxNSwgMTYxLCAyMjYsIDEzMCwgODEsIAorICAgIDIyNCwgNjAsIDIyNCwgMjM2LCAyMTMsIDI2LCAyMzYsIDUsIDIwOCwgNzgsIDIyNiwgMTI5LCAyNDgsIDg3LCAyNDMsIDIsIAorICAgIDMsIDIzNCwgMTI3LCAyMDEsIDYwLCAyNDksIDAsIDIzNCwgMTI3LCAyNDgsIDQ2LCAyMzQsIDEyNywgMTIwLCAyMzQsIDEyNSwgCisgICAgMjA4LCAyMzYsIDIzNCwgMTI3LCAyMzUsIDU3LCAyMzQsIDEyNywgMjM0LCAxMjgsIDMsIDQ4LCAyNDgsIDEyNywgMjM0LCAKKyAgICAxMjcsIDIzNSwgNjQsIDIzNCwgMTI3LCAyMDAsIDQ0LCAyMzQsIDEyNywgMjE0LCAxOTksIDIzNCwgMTI3LCAyMzQsIDEyOCwgCisgICAgMywgMjEzLCA4NSwgMjEzLCA5OSwgMjM0LCAxMjUsIDIzNCwgMTI4LCAyNDEsIDE2NiwgMjQxLCA2NSwgMjEwLCA4NiwgMywgCisgICAgMzUsIDczLCAyMjgsIDczLCAyMzgsIDIwNCwgMTYyLCAyNDgsIDIzLCAyNTEsIDczLCA5OSwgMjQ4LCAxMTMsIDIwOSwgNzEsIAorICAgIDk5LCAyNDYsIDgxLCA5OSwgMjA4LCAyMTIsIDIwNywgMTgxLCA5OSwgMjM5LCAxNDUsIDI0MSwgMjQ1LCA5OSwgMjE1LCAKKyAgICAxNjIsIDc2LCAyMTUsIDgxLCAyMzcsIDM3LCAyNDgsIDE4NSwgMjQwLCAyMzEsIDk5LCAyMDgsIDIyOCwgMjQ5LCA5NiwgCisgICAgMjA2LCA1MiwgMjQ5LCA5NiwgNjQsIDIzNywgMjQsIDIzMywgODMsIDIxNSwgOTQsIDk5LCAyMjEsIDEwNSwgMjQ5LCAxMTMsIAorICAgIDI0MiwgMTk1LCAyMzgsIDQ1LCA4MCwgMjQwLCAxOTQsIDU0LCAyNDIsIDI0NiwgMjQ3LCAxMzMsIDI0OSwgODAsIDMsIDIwMCwgCisgICAgNDIsIDU0LCAyNDksIDgwLCAzLCAyNDAsIDE5NCwgNTQsIDI0OSwgODAsIDMsIDIzOCwgNjEsIDU0LCAyNDksIDgwLCAzLCAKKyAgICAyMTUsIDU2LCA1NCwgMjIxLCAxMDUsIDMsIDIwMSwgMTEsIDI0NywgMTYsIDMsIDE4MiwgMjA1LCAxMDQsIDI2LCAyMDAsIAorICAgIDQyLCA1NCwgMjExLCAxOTksIDIxNiwgOSwgMjQzLCA3MCwgMjQ4LCA1MCwgMjIxLCAxNjIsIDIzNywgMjksIDI0MCwgMjUzLCAKKyAgICAyMTcsIDM3LCAyNDEsIDIsIDIzOSwgMTA2LCAyMzcsIDk3LCAyMzcsIDksIDE3NiwgMjM3LCA5NywgMjM3LCA5LCAyMTYsIAorICAgIDE5NiwgMywgMjQyLCAxOTgsIDIxNiwgMTk2LCAyMzcsIDE4MiwgMjAzLCAyMjgsIDI0NywgMTcwLCAyMDYsIDE5NywgMjQ3LCAKKyAgICAxNzAsIDI0NywgMTM0LCAyMjgsIDEwMywgMjQ3LCAxNiwgMywgMTgyLCAyMDUsIDEwMywgMjQ3LCAxNiwgMywgMTkxLCAyMDUsIAorICAgIDEwMywgMjQ5LCA3NywgMjQ3LCAxNSwgMjQ2LCAxMTYsIDIxNCwgMTk0LCAyMTIsIDIyMSwgMjE0LCAxOTQsIDIxNiwgMTMzLCAKKyAgICAyMDgsIDY4LCAyMTIsIDE2MywgMjA1LCA5NSwgMjEyLCAxNjMsIDI0OCwgMTA5LCAyMDcsIDIxLCAyMjUsIDMzLCAyMTgsIAorICAgIDIwNywgMjE4LCAyMDgsIDMsIDI0MSwgMTY1LCAyNDMsIDEsIDI0NiwgMTEwLCAyNDgsIDExMCwgMTc2LCAyNDgsIDExMCwgCisgICAgMjM1LCA2NCwgMjQ4LCAxMTAsIDI0OCwgMTI3LCAyNDgsIDExMCwgMjE3LCAzMiwgMjQ4LCAxMTAsIDI0OCwgMTA3LCAyMjAsIAorICAgIDEzNiwgMjQ5LCAxMTcsIDIxMSwgMjA3LCAyMjIsIDQyLCAyMDYsIDE3NiwgMjEzLCAxODQsIDIxNiwgMTk0LCAyMzcsIDE1MiwgCisgICAgMjIyLCAyMzAsIDIxMSwgMjQ4LCAyNTEsIDQ4LCAyMTQsIDIxOCwgMjUxLCAyMzIsIDIyNCwgNjIsIDI0NywgMCwgMjIyLCAKKyAgICA1NCwgMjE2LCAyNTMsIDIwNSwgMTExLCAyMjgsIDExNCwgMjA1LCAxMTEsIDIxNiwgMjAzLCAyMzksIDc0LCA5OSwgMjI4LCAKKyAgICAxMTEsIDIzOCwgMTQ0LCAyMzgsIDE0NSwgMywgMTkxLCA1NSwgNTYsIDI0NiwgMTEwLCAyMjIsIDE5NSwgMywgMjI0LCA1MiwgCisgICAgMjM3LCA1MywgMjQ2LCAxMTAsIDIyMiwgMTk1LCAzLCAyMTMsIDIyMCwgMjM3LCA1MywgMTc2LCAyMjIsIDE5NSwgMywgMjEzLCAKKyAgICAyMjAsIDIzNywgNTMsIDE3NiwgMjIyLCAxOTUsIDMsIDIyNCwgNTIsIDIzNywgNTMsIDIxNSwgNjQsIDIxNSwgNjUsIDIzMywgCisgICAgMTI0LCAyMjAsIDQsIDIyMSwgMTM0LCAyMTUsIDIxMywgMjIxLCAxMzQsIDIxNSwgMjE0LCAzLCA4NywgNTUsIDI1MCwgMTU2LCAKKyAgICAyMjUsIDI4LCAyMDIsIDIzMywgMjIxLCAxMzMsIDIyMSwgMTM0LCAyMTUsIDIxNCwgMjE3LCAxMTYsIDIxOCwgMjQyLCAyMjEsIAorICAgIDEzNCwgMjE1LCAyMTIsIDI1MSwgNDksIDMsIDI0OSwgNjYsIDI0NywgMTYyLCAyNDcsIDE2MywgMywgMjM3LCA0NiwgMjAyLCAKKyAgICAyMzAsIDI0NywgMTYyLCAyMDYsIDE3MywgMjEzLCAyMzYsIDIwMiwgMjI5LCAyMzcsIDkwLCAyMTQsIDI1MCwgMjE1LCA3MSwgCisgICAgMjA4LCA4OSwgMjE1LCAzMywgMjQ5LCA2LCAyMDQsIDE0NSwgODcsIDI1MCwgMTk5LCAyNDYsIDExMiwgODcsIDI2LCA5OCwgCisgICAgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIDI0NiwgMTEyLCA4NywgMjYsIDk4LCAxNzYsIDI0NiwgMTU2LCAyNTAsIDIwMCwgCisgICAgMywgNDQsIDExMiwgMjE2LCAyNDIsIDI0NiwgMTEyLCAxOTEsIDI2LCAxODIsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAKKyAgICAyNTEsIDQ3LCAxOTEsIDI2LCAxODIsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAxMjgsIDI0OCwgNDksIDk5LCAxMjIsIAorICAgIDI0OCwgNDksIDk5LCAyMDgsIDIzMywgMywgMjQ3LCAxNTUsIDk3LCAyMDgsIDIzMiwgMjA4LCAyMzMsIDMsIDExMiwgMjA5LCAKKyAgICAxLCAyMDEsIDc3LCAyMDgsIDIzMywgMywgMTI2LCAyMDksIDEsIDIwMSwgNzYsIDI0OSwgNDksIDIzOCwgMjA0LCAyMTUsIAorICAgIDExOCwgMjI1LCAyMywgMjIyLCAyMDcsIDIzNSwgMTI4LCAyMTMsIDQxLCAyMjIsIDIwNywgMjM1LCAxMjgsIDIyNCwgMTA0LCAKKyAgICAzLCAyMjgsIDg0LCAyMTYsIDQ3LCAyNDYsIDExMCwgMjI0LCAxMDQsIDMsIDIyNiwgMjE0LCAyMjYsIDIxNCwgMjI0LCAxMDMsIAorICAgIDE3NiwgMjI0LCAxMDMsIDI0OCwgMjMwLCAyNDgsIDIzMSwgMywgMjQ3LCAxNTUsIDk3LCAyNDgsIDEwOCwgMjI0LCAxNjcsIAorICAgIDk5LCAyMTMsIDIzNywgMjQ3LCAyNDMsIDI0OSwgMTMwLCAzLCA5OCwgNTUsIDU2LCAyMzgsIDE3MSwgMywgOTgsIDU1LCA1NiwgCisgICAgMjE3LCA3OSwgMywgMjM4LCA0MywgMTM0LCAzLCA0OSwgNTEsIDU1LCA1NiwgMjA5LCA5LCAzLCA4NywgNTUsIDU2LCAyMDUsIAorICAgIDE1OCwgMywgMTgyLCA1NSwgNTYsIDIxOCwgMjQyLCAxMTIsIDIwMywgMjUzLCAyMzgsIDIzMCwgOTksIDIyNiwgMjExLCAKKyAgICAyMDYsIDE2NiwgMjI4LCA3OCwgMTYsIDM2LCA4LCA2LCAyMjQsIDIzNSwgMjI4LCA3OCwgMTYsIDM2LCA4LCA0LCAyMjQsIAorICAgIDIzNSwgMjI4LCA3OCwgMTYsIDM2LCAyMTgsIDk0LCAyMjgsIDc4LCAxNiwgMzYsIDIwNywgMTE2LCAyMjgsIDc4LCAxNiwgCisgICAgMzYsIDgsIDIyNCwgMjM1LCAyMzcsIDc3LCAyMzgsIDIwNCwgMjA1LCAxNTMsIDIwMCwgMjI1LCAyMzQsIDIwNiwgMjE4LCAKKyAgICA3NywgMjYsIDI0OCwgMTE1LCAyMzMsIDIwNSwgMjE1LCAxNDMsIDIyMSwgMjA3LCAyMDYsIDE3NCwgMjQyLCAyMTYsIDI0OSwgCisgICAgOTcsIDIwOSwgMTA2LCAyMTUsIDk4LCAyMDgsIDExMCwgMywgMTAxLCAyNDAsIDE4MiwgMjI3LCAyMzYsIDE2LCAzNiwgMjQ4LCAKKyAgICAyNDMsIDIwNSwgOTMsIDIzOCwgMTg3LCA2MywgNTIsIDI0NywgMjQzLCA2NCwgNTIsIDI0NywgMjQzLCAyMjUsIDcxLCAyMTMsIAorICAgIDE3MCwgMjQ2LCAxNTUsIDIyNSwgNzEsIDI0OCwgMTI3LCAyNDYsIDE1NSwgMjI1LCA3MSwgMjE3LCAzMiwgMjQxLCA2NCwgCisgICAgMjI1LCA3MSwgMjQ4LCAxMjcsIDI0MSwgNjQsIDQsIDIxNywgMzIsIDI0MSwgNjQsIDQsIDI0OCwgMTI3LCAyNDEsIDY0LCAKKyAgICAyMDMsIDIyNywgMjEzLCAxNzAsIDIwNSwgOTgsIDIzOSwgMTY2LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjAzLCAyMjcsIDQsIAorICAgIDIxMywgMTcwLCAyMDUsIDk4LCAyMzksIDE2NiwgNCwgMjEzLCAxNzAsIDIwNSwgOTgsIDIyNCwgNTQsIDUxLCAyMTAsIDEwMSwgCisgICAgNjQsIDI0NiwgMTU1LCAyMDMsIDIyNSwgNTEsIDIxMCwgMTAxLCA2NCwgMjQ2LCAxNTUsIDQ0LCAyNDIsIDIzNSwgMjE1LCAKKyAgICA4NCwgMjQyLCAyMzUsIDIxNSwgODUsIDMsIDIzNCwgMjEyLCA1NywgMjQyLCAyMzUsIDIxNSwgODQsIDIxOCwgMjExLCA0OSwgCisgICAgMjEwLCAxNzAsIDMsIDEyNiwgMjQwLCAxODAsIDIxOCwgMjExLCA1MSwgMjEwLCAxNzAsIDMsIDEyNiwgMjQwLCAxODAsIDE2LCAKKyAgICAzNiwgMjIyLCAxNDQsIDI0NywgMjIsIDY0LCA4LCAyNDIsIDIzNCwgODAsIDgsIDI0MiwgMjM0LCAyNDcsIDYwLCAyNDIsIAorICAgIDIzNCwgMjE3LCA4NywgOTksIDIzOSwgMTY5LCA3NiwgMjE2LCA3MSwgMjI3LCAxMDMsIDIyMSwgNzQsIDIwNywgMTEwLCAKKyAgICAyMjIsIDM3LCAzLCAyMTksIDExNCwgMjQ4LCA2NSwgMjQ4LCA4MywgNzYsIDIzMywgMzUsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMTEyLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAxMjAsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDEyNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM2LCAyMjksIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAKKyAgICAxOTAsIDIzNywgNjEsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwOSwgMTA2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIAorICAgIDIzNywgMTkwLCAyMTAsIDEzNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMzIsIDIxNywgMTMyLCAKKyAgICAyNDYsIDExNCwgMjM3LCAxOTAsIDIxOSwgMTE0LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDYsIDE2NywgCisgICAgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMDAsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDIwNCwgMTY1LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTcsIDcyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNCwgCisgICAgMTM5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNiwgMzksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM2LCAyMjUsIDI0NiwgMTE0LCAKKyAgICAyMzcsIDE5MCwgMjM3LCA1OSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDksIDEwMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTAsIAorICAgIDEzNCwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIzMSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTksIDExMiwgMjQ2LCAKKyAgICAxMTQsIDIzNywgMTkwLCAyMDYsIDE2NSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDE5OCwgMjQ2LCAxMTQsIDIzNywgCisgICAgMTkwLCAyMDQsIDE2MywgNTEsIDIwOCwgMjMyLCA1MSwgMjA4LCAyMzMsIDMsIDExMiwgMjA5LCAxLCAyMDEsIDc3LCA1MSwgCisgICAgMjA4LCAyMzMsIDMsIDEyNiwgMjA5LCAxLCAyMDEsIDc2LCAyNDgsIDE4LCAyNDgsIDE5LCAzLCAyMDksIDEsIDIwMSwgNzYsIAorICAgIDIxMywgMjUsIDI0OCwgMjMwLCAyNDgsIDExMCwgMjQ3LCAxNTMsIDIyMiwgMTY3LCAyNDYsIDExMywgNjMsIDIwOSwgODEsIAorICAgIDI2LCAyNDIsIDIzMywgMjE4LCAyNDIsIDIxNSwgMTQ5LCAyMzMsIDE5NywgMjIyLCAxODEsIDIyOCwgMTE4LCAyNDcsIDI1MSwgCisgICAgMjA3LCAyNDIsIDIyNCwgMjI4LCAyMDksIDY5LCAyMTcsIDM0LCAyMDgsIDE5NCwgMjQxLCAyNTAsIDIwNywgMjI0LCAyMDgsIAorICAgIDIyMSwgMjA4LCAyMjIsIDIwMSwgNjEsIDIyNywgMTQ4LCAyMjIsIDE4MSwgMjQyLCAxMSwgNDksIDIzNCwgMjAwLCAyMDYsIAorICAgIDE3NiwgMjEzLCAxODQsIDIwNiwgMTc2LCAyMTMsIDE4NSwgMywgMjE2LCAxOTUsIDUxLCAyMzQsIDIwMCwgMjA2LCAxNzYsIAorICAgIDIxMywgMTg0LCA2NCwgMjA1LCAxMzksIDIwNiwgMTc1LCA2MywgMjA1LCAxMzksIDIwNiwgMTc1LCAyMDYsIDE3NiwgMjE3LCAKKyAgICA3OSwgMjA1LCAxNTgsIDc2LCAyMjEsIDEzMCwgMjQ2LCAxMzQsIDIyMSwgMTM0LCAyMTUsIDIxMywgMjQ5LCAxMzAsIDc2LCAKKyAgICAyMzgsIDE0NCwgMjA4LCAxMTUsIDIzOCwgMTQ0LCAyMzgsIDE0NSwgMywgMjI0LCAxOTMsIDIzNywgMTYsIDIzOCwgMTQ0LCAKKyAgICAyMTYsIDQ4LCAxMTksIDIwOCwgMTE1LCAyMzgsIDE0NCwgMjI0LCAxNjYsIDIxNiwgMTMyLCA2MywgMjE0LCAxOTQsIDIyNCwgCisgICAgNTQsIDQ5LCAyMTYsIDQ2LCAyMjQsIDU0LCA0OSwgMjQ5LCA5MiwgMjE2LCA0NywgMjI0LCA1NCwgNDksIDIzNiwgMjMxLCAKKyAgICAyMTYsIDQ3LCAyMjQsIDU0LCA0OSwgMjE2LCAxODksIDIyNCwgNTQsIDQ5LCAyNDIsIDI0OSwgNDksIDIwMCwgMjE5LCAyMzQsIAorICAgIDE5OSwgMjA0LCAxODUsIDIxNywgOTksIDIzNCwgMjAwLCA1NCwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAyMzcsIDgyLCAKKyAgICAyMDgsIDIxMSwgMjEzLCAxMDUsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgMjM3LCA4MiwgMjA4LCAyMTEsIDIxMywgMTA1LCAKKyAgICAyMDYsIDMzLCAxMTUsIDU0LCAyMTMsIDEwNSwgMjA2LCAzMywgMTI3LCA1NCwgMjEzLCAxMDUsIDIwMiwgMjMyLCAyMzQsIAorICAgIDE5OSwgMjEzLCAxMDUsIDIzNCwgMjAwLCAzLCAxMDEsIDIzNywgODcsIDIzOCwgMzIsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgCisgICAgMjE2LCAxMTAsIDI0OCwgMjA2LCAxMDEsIDI2LCAyMTMsIDI3LCAyMzcsIDgxLCA2NCwgMTI3LCAyMTUsIDk2LCA0OSwgMjM0LCAKKyAgICAyMDAsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCA1MSwgCisgICAgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDUxLCAKKyAgICAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDQ5LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCA1MSwgMjE1LCA5NiwgCisgICAgMjQ5LCAxMjcsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgCisgICAgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgCisgICAgNjMsIDEyNywgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCAxMTUsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIAorICAgIDEyNywgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgMjM0LCAxMjcsIDI0MSwgMTEwLCAyNDMsIDcwLCAyMjYsIAorICAgIDIxMywgMjYsIDIyMSwgNjAsIDEyNiwgMjIwLCAxMiwgMjQzLCA2OSwgMjE1LCA4LCAyMTUsIDEwNCwgMjQ3LCAxNzIsIDYzLCAKKyAgICAyMzQsIDE2NSwgMjEwLCA1NSwgMjM3LCAyOSwgMjQwLCAyNTMsIDY0LCAyMzQsIDE2NSwgMjEwLCA1NSwgMjM3LCAyOSwgCisgICAgMjQwLCAyNTMsIDIwOSwgMjMsIDIxMCwgNTUsIDIzNywgMjksIDI0MCwgMjUzLCAyMDYsIDIzNSwgMjQ3LCAxMTcsIDIwMSwgCisgICAgNiwgMjI2LCAyMTIsIDExMiwgMjQ3LCAyNDQsIDIyMSwgNjAsIDEyMCwgMjQ3LCAyNDQsIDIyMSwgNjAsIDEyNiwgMjQ3LCAKKyAgICAyNDQsIDIyMSwgNjAsIDIwNSwgMTMwLCA0MCwgMjE2LCA5LCAyNDMsIDcwLCAyMzQsIDE2NSwgMjQwLCAyNTMsIDIxMSwgCisgICAgMjA5LCAyMTUsIDksIDIzMiwgMjI1LCAyMzcsIDE1MiwgMjMyLCAyMjUsIDIxNywgMzcsIDI0MSwgMywgMjMyLCAyMjUsIAorICAgIDI0MCwgMjA1LCAzLCAyMDYsIDEyNiwgMjQwLCAyMDUsIDMsIDIwNiwgMTI3LCAyNiwgMjE1LCAxOTgsIDI0MCwgMjA1LCAzLCAKKyAgICAyMTUsIDE5OCwgMjM2LCAyMTYsIDMsIDIxNSwgMTk4LCAyMzYsIDIxNiwgMywgMjA1LCAyMzgsIDIzNiwgMjE2LCAzLCAyNTEsIAorICAgIDg2LCAyMDAsIDE5NSwgNjMsIDIzNywgOSwgMjM3LCA5LCAxNzYsIDIzNywgOSwgMjQ3LCAxMzQsIDEyNCwgMjQwLCAyMzgsIAorICAgIDI0NywgMTM0LCAyMzcsIDk3LCAyNDgsIDc4LCAyMzcsIDk3LCAyNDcsIDE4NSwgMjM4LCAxODEsIDIxOCwgMjA5LCAyMzgsIAorICAgIDE4MSwgMjE4LCAyMTAsIDIxNiwgMTk1LCAyMzgsIDE4MSwgMjE4LCAyMTAsIDIxNiwgMjAxLCAyMTgsIDIwOSwgMjE4LCAKKyAgICAyMTAsIDIxNiwgMTk1LCAyMTgsIDIxMCwgMjE2LCAyMDEsIDIzOCwgMTgxLCAyNDAsIDIwNCwgMjM4LCAxODEsIDIxNiwgCisgICAgMTk1LCAyMzgsIDE4MSwgMjE2LCAxOTMsIDI0MCwgMjA0LCAyMTYsIDE5NSwgMjE2LCAxOTMsIDIwMSwgODcsIDIwOCwgMjE4LCAKKyAgICAyMTgsIDIxMCwgMjE2LCAyMDEsIDIwOCwgMjE4LCAyNDcsIDE3MSwgMjE2LCAyMDEsIDI0MSwgMTEwLCAyMDEsIDE1LCAyMjEsIAorICAgIDE1OSwgMjIyLCAxMjAsIDIxNiwgMjQ0LCAyNDYsIDExMiwgNTEsIDI2LCA0OSwgMjEwLCAxNzAsIDI1MCwgMTk5LCAyNDcsIAorICAgIDE1NSwgMjAwLCAxOTUsIDIyOCwgMTA5LCAyMzcsIDMsIDIwOSwgOTAsIDk5LCAyNDEsIDE2NCwgMjM3LCAzLCAyMDksIDkwLCAKKyAgICA5OSwgMjQzLCA3MSwgNDAsIDIyNiwgMjE0LCAyMTIsIDI0NCwgMjIwLCA0LCAyMTYsIDE5NiwgMywgNDQsIDIwNiwgMTI2LCAKKyAgICAyMDgsIDgwLCAyNDcsIDE1LCAyNDIsIDQxLCAyMjYsIDk1LCAyMjQsIDE2MCwgMjA4LCAyMzEsIDIzNCwgMTM3LCAyMjgsIAorICAgIDExOCwgMjA5LCAxNTUsIDEyNiwgMjEzLCAxOTUsIDU2LCAxMjYsIDIxMywgMTk1LCA1NywgMTI2LCAyMTMsIDE5NSwgMjI1LCAKKyAgICAyOCwgMTI2LCAyMTMsIDE5NSwgMjEzLCA0NiwgNDksIDIwOCwgMjI4LCAyNDgsIDM1LCA1MSwgMjA4LCAyMjgsIDI0OCwgMzUsIAorICAgIDEyMCwgMjA4LCAyMjgsIDI0OCwgMzQsIDEyNiwgMjA4LCAyMjgsIDI0OCwgMzQsIDQ5LCAyMDYsIDUyLCAyNDgsIDM1LCA1MSwgCisgICAgMjA2LCA1MiwgMjQ4LCAzNSwgNDksIDI1MSwgNzMsIDI0OCwgMzUsIDUxLCAyNTEsIDczLCAyNDgsIDM1LCAyMjEsIDg2LCAKKyAgICAyNDgsIDM1LCAyMjQsIDE5NCwgMjIxLCA4NiwgMjQ4LCAzNSwgMjI0LCAxOTQsIDIyMSwgODUsIDI0OSwgOTQsIDEwMCwgMywgCisgICAgMjQ5LCA5MywgMjQ5LCA5NCwgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgMTAwLCAzLCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAKKyAgICAyNywgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgMTAwLCAzLCAyNywgMTM1LCAyMDAsIDE5NSwgMTYyLCAyNDcsIDcsIDgxLCAKKyAgICAyNDksIDk0LCAxMDAsIDMsIDI3LCAyNDcsIDYsIDIwMCwgMjMzLCAyMjIsIDE2NCwgMjIxLCA2NSwgMjM2LCAxODQsIDIwNSwgCisgICAgMTgwLCAyMDUsIDEzNSwgMjA4LCAxMDEsIDc2LCAyMjQsIDIwOCwgMjA5LCAxNTYsIDc2LCAyMjcsIDIzNywgMjIxLCA0NiwgCisgICAgMjM1LCA2MSwgMjM3LCAxODksIDIzNSwgNjEsIDIzNywgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMzcsIDE5MCwgMywgCisgICAgMjA2LCAxOTMsIDc2LCAyMjcsIDE1MCwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjA5LCA0NywgMjM3LCAKKyAgICAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIDIwOSwgNDcsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAxNzYsIAorICAgIDIyMSwgNTksIDI2LCAyNDYsIDgzLCAyMDcsIDE4MCwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIAorICAgIDIwNiwgMCwgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIzNCwgMjExLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgCisgICAgMjMzLCAxMjMsIDIwMSwgOCwgMjM3LCAxODksIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMzcsIAorICAgIDE5MCwgMjExLCAyNDAsIDI0MSwgMTQ0LCAyMzcsIDEsIDIxMywgMTQ1LCAyMzcsIDE4OSwgMjA5LCA0NywgMjM3LCAxOTAsIAorICAgIDMsIDIzNCwgMTI2LCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjA3LCAyMjQsIDIwOSwgNDYsIDIzNywgMTg5LCAKKyAgICAyMjAsIDEwLCAyMzcsIDE4OSwgMjM4LCAzNCwgMjM3LCAxODksIDIwNCwgMywgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyNDYsIAorICAgIDgzLCAyMDcsIDE4MCwgMjE2LCAzOSwgMjM3LCAxODksIDI0MywgNjIsIDIzNywgMTg5LCAyNDMsIDYzLCAyMzcsIDE4OSwgCisgICAgMjI2LCAxMjgsIDIzNywgMTg5LCAyMzcsIDE5MCwgMjA2LCAzNiwgMzUsIDIyNiwgMTI5LCAyMjYsIDEyOCwgMjM3LCAxOTAsIAorICAgIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIyNiwgMTI4LCAyMzcsIDE5MCwgMywgMjQ2LCAxMTAsIDIzOCwgMTUsIDIzNywgMTkwLCAKKyAgICAzLCAyMDgsIDMxLCAyMDUsIDE2MywgMjM3LCAxOTAsIDMsIDIwOCwgMzEsIDIwNSwgMTY0LCAyNiwgMjAxLCA4LCAyMzgsIAorICAgIDIyLCAyMzcsIDE5MCwgMywgMjA4LCAzMSwgMjA1LCAxNjQsIDI2LCAyMDYsIDAsIDIzOCwgMTUsIDI0MSwgNCwgMjM3LCAKKyAgICAxODksIDIwMCwgMjMyLCAyMzcsIDE4OSwgMjUxLCA2NywgMjM3LCAxODksIDIxNSwgNTUsIDIzNywgMTg5LCAyNDIsIDIxOCwgCisgICAgMjM3LCAxODksIDIxNiwgMTMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjI0LCA3NywgNzYsIDIwNSwgNzUsIDI0MSwgNCwgCisgICAgMjQ3LCAyNDcsIDIxMywgMTQ1LCAyMzcsIDE4OSwgMjM2LCAxOTUsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDI1MSwgCisgICAgNjUsIDIzNywgMTg5LCAyMzcsIDE0NSwgMjM3LCAxODksIDIwMSwgNjIsIDIzNywgMTg5LCAyMDksIDcwLCAyMzcsIDE4OSwgCisgICAgMjA1LCAyMTgsIDIzNywgMTg5LCAyMzUsIDYyLCAyMzcsIDE4OSwgMjI0LCA2MywgMjQyLCAyMTgsIDIzNywgMTg5LCAyMzcsIAorICAgIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMzMsIDcyLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIAorICAgIDI0NiwgODMsIDIwNywgMTgwLCAyMzcsIDE5MCwgMjExLCAyMTEsIDIyOCwgMTE4LCAyMzcsIDE0NiwgMjUwLCAxNjIsIDIzNywgCisgICAgMTg5LCAyMzcsIDIxLCAyMzcsIDE4OSwgMjA5LCA3MSwgMjM3LCAxODksIDI0MCwgMjMxLCAyMzcsIDE4OSwgMjM3LCAxOTAsIAorICAgIDIwMSwgMywgMjIxLCA1OCwgMjM3LCAxOTAsIDMsIDIyMiwgNjgsIDIyMiwgMTMyLCAyMzUsIDYxLCAyNDcsIDExMiwgMjM3LCAKKyAgICAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjA2LCAxOTMsIDc2LCAyMjcsIDE1MCwgCisgICAgMjA5LCA0NywgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIwOSwgNDcsIDI0NywgMTEyLCAyMzcsIAorICAgIDE5MCwgMywgMjM0LCAxMjYsIDIzOCwgMTUsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjAwLCAyMTcsIDIwOSwgNDgsIDIyNiwgCisgICAgMTI4LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDI0NiwgMTEwLCAyMzgsIDE1LCAyMTUsIDU1LCAyNDcsIDExMiwgMjM3LCAKKyAgICAxODksIDI0MiwgMjE4LCAyNDcsIDExMiwgMjM3LCAxODksIDIwMSwgNjIsIDI0NywgMTEyLCAyMzcsIDE4OSwgMjA5LCA2NCwgCisgICAgMjM2LCAxOTUsIDIzNywgMTg5LCAyMDksIDY0LCAyMDksIDQ3LCAyMzcsIDE4OSwgMjAzLCAyMjIsIDIzNywgMTg5LCAyMzcsIAorICAgIDE5MCwgMywgMjEyLCAyNDIsIDIzOCwgMTUsIDIzNywgMTkwLCAzLCAyMTgsIDI0MiwgMjM1LCAxMDQsIDIzNSwgMjQwLCAKKyAgICAyMzcsIDE5MCwgMywgMjE3LCA5OSwgMjM1LCAyNDAsIDIxNiwgMTEsIDI0OCwgODQsIDI0MSwgMTU5LCAyMTEsIDE4OSwgCisgICAgMjIxLCAxMDAsIDIzNCwgMTI5LCAyMjEsIDEwMCwgMjA4LCAyMzQsIDIyMSwgMTAwLCAyMzQsIDE2NywgMjE2LCAxMSwgMjEzLCAKKyAgICAyMTksIDExMiwgMjM0LCAxOTksIDIxNiwgMTEsIDIxMywgMjE5LCAyNDgsIDk2LCAyMzQsIDE3NSwgMjI4LCAxMTgsIDI0NywgCisgICAgNjIsIDIxNiwgMTEsIDIzNiwgMTk0LCAyMTYsIDExLCAzLCAyMTUsIDU1LCAyMzcsIDE4OSwgMjE2LCAxMSwgMywgMjM3LCAKKyAgICAxMCwgMjM0LCAxNzQsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIAorICAgIDIyNSwgMzUsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgCisgICAgMzUsIDIwNCwgMTg1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIyNSwgMzUsIDIwNCwgMTg1LCAyMDgsIDI1NCwgMjAxLCAKKyAgICA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIwMiwgMjE2LCAKKyAgICAyMjUsIDM1LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDE1NywgMjM5LCAxNCwgCisgICAgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAKKyAgICAzNSwgODAsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDgwLCAyMDgsIDI1NCwgMjAxLCA0OCwgCisgICAgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDgwLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAKKyAgICA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIAorICAgIDI0OCwgMzIsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIDMyLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgCisgICAgMzIsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIDMyLCA4MCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIAorICAgIDMyLCA4MCwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgMzIsIDgwLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIAorICAgIDI0OCwgMzIsIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAzMiwgMjMzLCAxOTYsIDIxNCwgNzIsIDUyLCAKKyAgICAyMTcsIDIxLCAyMzMsIDE5NiwgMjE0LCA3MiwgNTIsIDIxNywgMjIsIDIyOCwgMTE4LCA2MywgMjA4LCAxOTMsIDIwOSwgMTgsIAorICAgIDIxNCwgNzIsIDUyLCAyMTcsIDIxLCAyMDksIDE4LCAyMTQsIDcyLCA1MiwgMjE3LCAyMiwgMjI4LCAxMTgsIDYzLCAyMDgsIAorICAgIDE5MywgOTgsIDIxMiwgMjQ4LCAxODIsIDIxMiwgMjQ4LCA4NywgMjEyLCAyNDgsIDE5MSwgMjEyLCAyNDgsIDEzNSwgMzMsIAorICAgIDIzOCwgODIsIDIxNywgMjEsIDgwLCAxMzUsIDMzLCAyMzgsIDgyLCAyMTcsIDIxLCAzMywgMTc2LCAyMzgsIDgyLCAyMTcsIAorICAgIDIxLCA4MCwgMzMsIDE3NiwgMjM4LCA4MiwgMjE3LCAyMSwgODAsIDI1MSwgOTAsIDIxNywgMjEsIDIwNywgMTgzLCAyNTEsIAorICAgIDkwLCAyMTcsIDIxLCA0MywgODAsIDUzLCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA0MywgCisgICAgODAsIDUzLCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDQzLCA4MCwgMTI4LCA1MywgMjQ2LCA3MSwgMjE0LCAKKyAgICA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjI4LCA1OSwgMjE3LCAyMSwgNDMsIDIyOCwgNTksIDIxNywgMjEsIDgwLCA0MywgCisgICAgMjI4LCA1OSwgMjE3LCAyMSwgMjAyLCAyNDYsIDgwLCAyMDksIDE2LCAyMDIsIDI0NiwgODAsIDIxMywgMTA2LCAyMDksIDE2LCAKKyAgICAyNDcsIDUsIDI0OCwgMTIxLCAyMTMsIDEwNiwgMjQ3LCA1LCAyNDgsIDEyMSwgMjEyLCAyNDgsIDIzNCwgMTEwLCAyMDgsIAorICAgIDk2LCAyMjQsIDEwMSwgMjEzLCAyMjUsIDI0NywgMTM1LCAyMzQsIDU1LCAyMDUsIDEyMywgMjM0LCA1NSwgMjA1LCAxMjQsIAorICAgIDMsIDI0OCwgMjEsIDIxOCwgMjE2LCAyMDUsIDEyMywgMjIyLCAxMywgMTYyLCAyMTMsIDIyNiwgMjA4LCAxMDIsIDIwNSwgCisgICAgMTIxLCAyMDUsIDEyMiwgMjQ3LCAxMzUsIDI0NywgMjUyLCAyMTcsIDc1LCAyNDcsIDI1MiwgMjA1LCA3MSwgMjQ3LCAyNTMsIAorICAgIDIwOCwgNzYsIDIyMSwgMTYzLCAyNTEsIDk0LCAyMzcsIDc4LCAyMzgsIDE2NCwgMjE1LCA4OCwgMjQ3LCAxMzUsIDIxNywgCisgICAgNzUsIDIxNSwgODgsIDI0NywgMTM1LCAyMDYsIDIxMSwgMjE3LCA3NSwgMjA2LCAyMTEsIDI1MCwgMTI3LCAyMTcsIDc1LCAKKyAgICAyNTAsIDEyNywgMjEzLCAxNzcsIDIwMywgNTEsIDI0MSwgMTQwLCAyMDUsIDYyLCAyNTAsIDE5NCwgMjI0LCA2OCwgMjA1LCAKKyAgICAxMjksIDIyMSwgOTQsIDIyMSwgNjQsIDIxMywgMjI0LCAyMDcsIDE5NiwgMjEzLCAyMjQsIDIyMSwgNjQsIDI0NywgMTg0LCAKKyAgICAyNTEsIDIwNywgMjA1LCAxMjAsIDIxMCwgMTcsIDIxMiwgMjE4LCAyMDgsIDIyNiwgMjMzLCAxNzcsIDIwNSwgMTI3LCAyMjQsIAorICAgIDE5NiwgODMsIDIwNSwgMTI3LCAyMjQsIDE5NiwgMjQzLCA0OSwgNTQsIDIxNSwgODgsIDI0NywgMTE5LCAyMTMsIDk5LCAKKyAgICAyMjQsIDE5NiwgMjA1LCA5NSwgMjM3LCA1NCwgMjE3LCA3OSwgMjE1LCA2NiwgMjQwLCAxODUsIDIxOCwgMjQyLCAyMzgsIAorICAgIDE1MCwgNTQsIDIwOSwgNDUsIDk5LCAyMTgsIDI0MiwgMjA5LCA0NSwgOTksIDIxNCwgMTkzLCAyMjQsIDE0OSwgMjI4LCAKKyAgICAxMTgsIDIyOCwgOSwgMjE1LCAxMzQsIDk5LCAyNDAsIDIxMiwgMjE4LCAyMTUsIDIyNCwgMTQ5LCA5OSwgMjE1LCA2MCwgCisgICAgMjAxLCA4MywgOTksIDIxOCwgMjMxLCAyMDEsIDgzLCA5OSwgMjQ4LCAxODQsIDIxOCwgMjQyLCAyNDgsIDE4MywgMjQ4LCAKKyAgICAxODIsIDIyMSwgNjQsIDI0OCwgMTgyLCAyMTYsIDYzLCAyMTgsIDI0MiwgMjE2LCA2MiwgMjQ2LCAyMjYsIDI0MiwgMjI3LCAKKyAgICAyMjIsIDM2LCA5OSwgMjAwLCAyNDcsIDk5LCAyMTMsIDExNSwgMjQ5LCAxMzIsIDk5LCAyMDUsIDE4MSwgMjAxLCA4MywgCisgICAgMjQ2LCAxMDcsIDIwOSwgMjMxLCAyNDksIDUyLCAyNDksIDUwLCAyMTYsIDk2LCAyNDMsIDMzLCAyNDIsIDE4MSwgMjQ5LCAKKyAgICAxMTAsIDI0NiwgMTM1LCA0OSwgMjI0LCAzMiwgMjA1LCA5OSwgMywgMjEyLCAyMTksIDI0MywgMTQsIDIxNCwgMjUzLCA1NCwgCisgICAgNDQsIDIyOCwgOTIsIDIwOCwgMjU1LCAyNDgsIDc1LCA5OSwgMjM1LCAxMzksIDk5LCAyNDMsIDcsIDI2LCAyMjUsIDgxLCAKKyAgICAyMDksIDcxLCAyNTEsIDI0OCwgMjA5LCAyNTMsIDI0OSwgMTA5LCAyNDgsIDIyOSwgMjQ4LCAyMzAsIDI0OCwgMjUzLCAyMTUsIAorICAgIDEzNCwgNzYsIDIwMCwgMjMxLCAyMTcsIDEyOSwgNTQsIDIwOSwgMjUzLCAyMDUsIDcyLCAyMzQsIDIwNywgMjYsIDIwMCwgCisgICAgMjI1LCAyMTAsIDMwLCAyMTcsIDEwNCwgMjM5LCAxNDIsIDIyMSwgNjgsIDIxMywgMjI1LCAyMDUsIDEzMSwgMjIxLCA3MCwgCisgICAgMjQ4LCAxMjAsIDIwMywgMjI3LCAyMjEsIDE3NCwgMjUxLCAxNjQsIDIwMywgMjI3LCAyNTEsIDE2NCwgMjAzLCAyMjcsIDQsIAorICAgIDI1MSwgMTY0LCA0LCAyNTEsIDE2NCwgMjE4LCAyMjAsIDI1MSwgMTY0LCAyNTEsIDE2NSwgMjQxLCAxMjQsIDI1MSwgMTY1LCAKKyAgICAyNTAsIDIwNSwgMjExLCAyNDcsIDIxNywgNzUsIDIzNywgNzgsIDIzOCwgMTY0LCAyNDEsIDU0LCAyMjQsIDEwMSwgMjE2LCAKKyAgICA5OSwgMjEwLCAxNywgMjExLCAyMTUsIDIyMSwgNzAsIDIxMSwgMjE1LCAyNDcsIDE0NiwgMTM5LCAxNiwgMzYsIDIxNCwgNjgsIAorICAgIDEzOSwgMTYsIDM2LCAyNTEsIDE2NiwgMTM5LCAxNiwgMzYsIDIzNywgNzcsIDEzOSwgMTYsIDM2LCAyMzksIDE3LCAxMzksIAorICAgIDE2LCAzNiwgMjAxLCA4MiwgMTM5LCAxNiwgMzYsIDI1MCwgMjU1LCAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMTMsIDE2NCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjEzLCAxNjMsIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIwMiwgMTk5LCAxMzksIDE2LCAKKyAgICAzNiwgMjUxLCAwLCAyMDIsIDE5OCwgMTM5LCAxNiwgMzYsIDIwMiwgMjEzLCAxMzksIDE2LCAzNiwgMjAyLCAyMTIsIDEzOSwgCisgICAgMTYsIDM2LCAyMDIsIDIxMSwgMTM5LCAxNiwgMzYsIDIwNywgMjM1LCAxMzksIDE2LCAzNiwgMjE1LCAyMjEsIDIwNywgMjM1LCAKKyAgICAxMzksIDE2LCAzNiwgNjMsIDIwNywgMjM1LCAxMzksIDE2LCAzNiwgMjIyLCAzNSwgMjA4LCAxMCwgMTM5LCAxNiwgMzYsIAorICAgIDIyMiwgMzUsIDIwOCwgOSwgMTM5LCAxNiwgMzYsIDIyMiwgMzUsIDIwOCwgOCwgMTM5LCAxNiwgMzYsIDI0NiwgMTU4LCAKKyAgICAxMzksIDE2LCAzNiwgMjEyLCAyNywgMTM5LCAxNiwgMzYsIDIxOSwgMTAxLCAxMzksIDE2LCAzNiwgMjAyLCAxOTcsIDEzOSwgCisgICAgMTYsIDM2LCAyMDIsIDE5NiwgMTM5LCAxNiwgMzYsIDIxMiwgMjQ5LCAyMTIsIDI3LCAxMzksIDE2LCAzNiwgMjEyLCAyNDksIAorICAgIDIxMiwgMjYsIDEzOSwgMTYsIDM2LCAyMzUsIDEwOCwgMTM5LCAxNiwgMzYsIDIwOSwgMTUyLCAxMzksIDE2LCAzNiwgMjI4LCAKKyAgICAzMiwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIyOCwgMzIsIDIxNywgMjcsIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIAorICAgIDIyOCwgMzEsIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDIyOCwgMzEsIDEzOSwgMTYsIDM2LCAyNDMsIDI0LCAyMTcsIAorICAgIDI4LCAxMzksIDE2LCAzNiwgMjI4LCAzMCwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyNDMsIDIzLCAKKyAgICAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAyNDMsIDIzLCAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAyNDMsIDIyLCAKKyAgICAxMzksIDE2LCAzNiwgMjQzLCAyNCwgMjUxLCA0MSwgMTM5LCAxNiwgMzYsIDIxMiwgMjgsIDc2LCAyNDMsIDI0LCAyNTEsIAorICAgIDQxLCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDIxMiwgMjgsIDc2LCAyNDMsIDIzLCAxMzksIDE2LCAzNiwgMjAzLCA0NiwgCisgICAgMTM5LCAxNiwgMzYsIDIwNSwgMjMxLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjI1LCAzOSwgMjE3LCAyOCwgMTM5LCAxNiwgCisgICAgMzYsIDI1MSwgNDAsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjUxLCAzOSwgMTM5LCAxNiwgMzYsIAorICAgIDIxMiwgMjgsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDIxMiwgMjgsIDc2LCAyNTEsIDM5LCAKKyAgICAxMzksIDE2LCAzNiwgMjAyLCAyMTQsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyNTEsIDM5LCAKKyAgICAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyNTEsIDM4LCAxMzksIDE2LCAzNiwgMjEzLCAxNTksIDEzOSwgMTYsIDM2LCAKKyAgICAyMTMsIDE1OCwgMTM5LCAxNiwgMzYsIDIxMywgMTU3LCAxMzksIDE2LCAzNiwgMjEzLCAxNTYsIDEzOSwgMTYsIDM2LCAyNTEsIAorICAgIDEyNywgMTM5LCAxNiwgMzYsIDI1MSwgMTI2LCAxMzksIDE2LCAzNiwgMjIyLCAxNTUsIDEzOSwgMTYsIDM2LCAyMTIsIDM0LCAKKyAgICAxMzksIDE2LCAzNiwgMjUwLCAxOTgsIDEzOSwgMTYsIDM2LCAyMTMsIDE4NywgMTM5LCAxNiwgMzYsIDIxMywgMTg2LCAxMzksIAorICAgIDE2LCAzNiwgMjUwLCAxMzAsIDEzOSwgMTYsIDM2LCAyNDgsIDE1MywgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwNiwgMjMwLCAKKyAgICAxMzksIDE2LCAzNiwgMjA2LCAyMjksIDEzOSwgMTYsIDM2LCAyMTQsIDc0LCAyMjQsIDE4NSwgMTM5LCAxNiwgMzYsIDI0OCwgCisgICAgMTAxLCAxMzksIDE2LCAzNiwgMjQ4LCAxMDAsIDEzOSwgMTYsIDM2LCAyNDgsIDk5LCAxMzksIDE2LCAzNiwgMjUxLCAxMDMsIAorICAgIDEzOSwgMTYsIDM2LCAyMTcsIDEwMywgMTM5LCAxNiwgMzYsIDIwOCwgMjE0LCAxMzksIDE2LCAzNiwgMjA1LCAyMjksIDEzOSwgCisgICAgMTYsIDM2LCAyMzUsIDMwLCAxMzksIDE2LCAzNiwgMjAxLCA3MCwgMTM5LCAxNiwgMzYsIDIxNSwgNTQsIDEzOSwgMTYsIDM2LCAKKyAgICAyNDcsIDE2NywgMTM5LCAxNiwgMzYsIDIwNCwgMTc3LCAxMzksIDE2LCAzNiwgMjQ3LCAxMzcsIDIyMSwgNzUsIDEzOSwgMTYsIAorICAgIDM2LCAyMTEsIDIyNSwgNzYsIDIyNywgMTUyLCAxMzksIDE2LCAzNiwgMjQ3LCAxODEsIDEzOSwgMTYsIDM2LCAyMDUsIDkyLCAKKyAgICAxMzksIDE2LCAzNiwgMjA4LCAxMDcsIDIwNSwgOTIsIDEzOSwgMTYsIDM2LCAyMjQsIDEwMCwgMTM5LCAxNiwgMzYsIDIwOSwgCisgICAgMjcsIDEzOSwgMTYsIDM2LCAyMDMsIDIwNiwgMTM5LCAxNiwgMzYsIDIzMywgMTIxLCAyMzksIDEyMSwgMTM5LCAxNiwgMzYsIAorICAgIDI1MCwgMTc2LCAxMzksIDE2LCAzNiwgMjE1LCA2MiwgMjUwLCAxNzYsIDEzOSwgMTYsIDM2LCAyNDgsIDUzLCAxMzksIDE2LCAKKyAgICAzNiwgMjE1LCA1MywgMjQ4LCA1MywgMTM5LCAxNiwgMzYsIDI1MSwgMTAwLCAxMzksIDE2LCAzNiwgMjA4LCA2MywgMjA3LCAKKyAgICAyMTYsIDIwOCwgNjIsIDEzOSwgMTYsIDM2LCAyMDgsIDYzLCAyMDcsIDIxNiwgMjA4LCA2MSwgMTM5LCAxNiwgMzYsIDIwOCwgCisgICAgNywgMTM5LCAxNiwgMzYsIDIxNSwgMjYsIDEzOSwgMTYsIDM2LCAyNDAsIDI0OCwgMTM5LCAxNiwgMzYsIDI0MCwgMjUwLCAKKyAgICAxMzksIDE2LCAzNiwgMjQwLCAyNDksIDEzOSwgMTYsIDM2LCAyMTQsIDIwMiwgMTM5LCAxNiwgMzYsIDIxNCwgMTkxLCAxMzksIAorICAgIDE2LCAzNiwgMjQyLCAyMjUsIDEzOSwgMTYsIDM2LCAyNDIsIDIyNCwgMTM5LCAxNiwgMzYsIDI0MiwgMjIzLCAxMzksIDE2LCAKKyAgICAzNiwgMjQyLCAyMjIsIDEzOSwgMTYsIDM2LCAyNDIsIDIyMSwgMTM5LCAxNiwgMzYsIDI1MSwgMTQxLCAxMzksIDE2LCAzNiwgCisgICAgMjQ5LCA1MywgNzYsIDIyMiwgMTM3LCAxMzksIDE2LCAzNiwgMjQ5LCA1MywgNzYsIDIwMywgNzgsIDEzOSwgMTYsIDM2LCAKKyAgICAyMTMsIDExMywgMTM5LCAxNiwgMzYsIDIzMywgMTEzLCAxMzksIDE2LCAzNiwgMjE5LCAxMjksIDEzOSwgMTYsIDM2LCAyNDEsIAorICAgIDIzMiwgMTM5LCAxNiwgMzYsIDIyMSwgODksIDEzOSwgMTYsIDM2LCAxNjcsIDIzOSwgMTU2LCAxMzksIDE2LCAzNiwgMTY3LCAKKyAgICAyMTcsIDEsIDYzLCAyMjUsIDIzLCAyMjgsIDE1LCA1MSwgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCAyMjgsIDE1LCA1MSwgCisgICAgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIyOCwgMTUsIDUxLCAyMDUsIDk4LCA2MywgMjM5LCAxNjYsIDIyOCwgMTUsIDUxLCAKKyAgICAyMDUsIDk4LCA2MywgMjA5LCA2NCwgNCwgMjQ2LCAxNTUsIDIyMiwgNjYsIDI3LCA2NCwgMjQ2LCAxNTUsIDI3LCA2NCwgCisgICAgMjQ2LCAxNTUsIDgwLCA2NCwgMjQ2LCAxNTUsIDIwMiwgMjQ2LCA4MCwgNjQsIDI0NiwgMTU1LCAyMzgsIDI2LCA4MCwgNjQsIAorICAgIDI0NiwgMTU1LCA2NCwgMjQ2LCAxNTYsIDI0MywgNDUsIDYzLCA0LCAyNDYsIDE1NSwgMjEyLCAyMjEsIDIwNiwgMjMxLCA2MywgCisgICAgMjA1LCAyMjYsIDIwOCwgMTkzLCA2MywgMjA5LCA2NCwgNCwgMjA4LCAxOTMsIDE2MiwgNjQsIDIwOCwgMTkzLCAyMjIsIDY2LCAKKyAgICA2NCwgMjA4LCAxOTMsIDI3LCA2NCwgMjA4LCAxOTMsIDgwLCA2NCwgMjA4LCAxOTMsIDIwMiwgMjQ2LCA4MCwgNjQsIDIwOCwgCisgICAgMTkzLCAyMzgsIDI2LCA4MCwgNjQsIDIwOCwgMTkzLCA2NCwgNTIsIDI0MywgNDUsIDYzLCAyMDIsIDI0NiwgNCwgMjA4LCAKKyAgICAxOTMsIDY0LCA1MiwgMjQzLCA0NSwgNjMsIDIyMiwgNjYsIDIwOCwgMTkzLCA1MiwgMjA2LCAyMzEsIDYzLCAyMDUsIDIyNiwgCisgICAgMjQxLCA2NCwgNjMsIDIwMiwgMjQ2LCA0LCAyNDEsIDY0LCA2MywgMjIyLCA2NiwgNCwgMjQxLCA2NCwgNjQsIDI0MSwgNjUsIAorICAgIDI0MywgNDUsIDYzLCAyMDIsIDI0NiwgNCwgMjQxLCA2NCwgNjQsIDI0MSwgNjUsIDI0MywgNDUsIDYzLCAyMjIsIDY2LCAKKyAgICAyNDEsIDY0LCAyNDEsIDY1LCAyMDYsIDIzMSwgNjMsIDIwNSwgMjI2LCAyMjQsIDQ5LCA2MywgMjAyLCAyNDYsIDQsIDIyNCwgCisgICAgNDksIDYzLCAyMjIsIDY2LCA0LCAyMjQsIDQ5LCA2NCwgMjI0LCA1MCwgMjQzLCA0NSwgNjMsIDQsIDIyNCwgNDksIDIwNiwgCisgICAgNzcsIDMxLCAyNDIsIDIzNCwgMTYyLCAzMSwgMjQyLCAyMzQsIDIyMiwgNjYsIDMxLCAyNDIsIDIzNCwgMjcsIDMxLCAyNDIsIAorICAgIDIzNCwgMjAyLCAyNDYsIDI3LCAzMSwgMjQyLCAyMzQsIDIwMiwgMjQ2LCA4MCwgMzEsIDI0MiwgMjM0LCAyMzgsIDI2LCA4MCwgCisgICAgMzEsIDI0MiwgMjM0LCAyMDYsIDc3LCAyMTIsIDI0LCAxNjIsIDIxMiwgMjQsIDIyMiwgNjYsIDIxMiwgMjQsIDI3LCAyMTIsIAorICAgIDI0LCA4MCwgMjEyLCAyNCwgMjAyLCAyNDYsIDgwLCAyMTIsIDI0LCAyMzgsIDI2LCA4MCwgMjEyLCAyNCwgMTYyLCAyMzcsIAorICAgIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjcsIDIzNywgCisgICAgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjAyLCAyNDYsIDgwLCAKKyAgICAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjYsIDgwLCAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIAorICAgIDE2MiwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgCisgICAgMjcsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMDIsIAorICAgIDI0NiwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjYsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIAorICAgIDI1MCwgMTY1LCAxNjIsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIzOCwgMjMyLCAyMDgsIDIwNywgCisgICAgMjUwLCAxNjUsIDI3LCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIAorICAgIDE2NSwgMjAyLCAyNDYsIDgwLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAxNjIsIDEyNiwgMjE1LCA5OCwgNjMsIAorICAgIDIwOCwgMTA5LCAyMjIsIDY2LCAxMjYsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMTI2LCAyMTUsIDk4LCA2MywgMjA4LCAKKyAgICAxMDksIDIyMiwgNjYsIDEyNiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIzNiwgMjI5LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIzNiwgMjI5LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIxMywgCisgICAgMTA2LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjM3LCA2MSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCA4MCwgMjM3LCA2MSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMDksIDEwNiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjA5LCAxMDYsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjA5LCAxMDYsIDIxNSwgOTgsIAorICAgIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM4LCAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIzOCwgCisgICAgMjMyLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIwMiwgMjQ2LCA4MCwgMjM4LCAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIAorICAgIDEwOSwgODAsIDIzOCwgMjMyLCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjA0LCAxNjUsIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgODAsIDIwNCwgMTY1LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMDQsIDE2NSwgMjE1LCA5OCwgCisgICAgMjE1LCAxNTUsIDIwOCwgMTA5LCA5OCwgNTUsIDMsIDQsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDU1LCAzLCA0LCAyMDUsIAorICAgIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCA0LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgNCwgMjA1LCA5OSwgCisgICAgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIDIyMiwgNjYsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCAKKyAgICAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCAKKyAgICA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIAorICAgIDE5MSwgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgCisgICAgMTgyLCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4NywgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCAKKyAgICA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgCisgICAgMjM4LCAxMTgsIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgOTgsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxODIsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA4NywgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE5MSwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDk4LCA1NSwgMywgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTgyLCA1NSwgMywgCisgICAgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgODcsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIAorICAgIDgwLCAxOTEsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDk4LCAyMDUsIDk3LCA1NSwgMywgMjIwLCAKKyAgICAxMjQsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIyMCwgMTI0LCAyMTAsIDk5LCA4NywgMjA1LCA5NywgNTUsIDMsIAorICAgIDIyMCwgMTI0LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIDEyNCwgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIAorICAgIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDk4LCAKKyAgICAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIAorICAgIDU1LCAzLCA4MCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgODAsIDIxMCwgOTksIDg3LCAyMDUsIDk3LCA1NSwgMywgCisgICAgODAsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDgwLCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgNTUsIDMsIDIwMiwgCisgICAgMjQ2LCA4MCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDIwMiwgMjQ2LCA4MCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIAorICAgIDk5LCA5OCwgMjM3LCA4NSwgNDgsIDE4MiwgMjM3LCA4NSwgNDgsIDg3LCAyMzcsIDg1LCA0OCwgMTkxLCAyMzcsIDg1LCA0OCwgCisgICAgOTgsIDk1LCA0OCwgMTgyLCA5NSwgNDgsIDg3LCA5NSwgNDgsIDE5MSwgOTUsIDQ4LCA5OCwgMjQzLCA3MiwgNDgsIDE4MiwgCisgICAgMjQzLCA3MiwgNDgsIDg3LCAyNDMsIDcyLCA0OCwgMTkxLCAyNDMsIDcyLCA0OCwgOTgsIDgwLCAyNDMsIDcyLCA0OCwgMTgyLCAKKyAgICA4MCwgMjQzLCA3MiwgNDgsIDg3LCA4MCwgMjQzLCA3MiwgNDgsIDE5MSwgODAsIDI0MywgNzIsIDQ4LCA5OCwgODAsIDQ4LCAKKyAgICAxODIsIDgwLCA0OCwgODcsIDgwLCA0OCwgMTkxLCA4MCwgNDgsIDk4LCA0MywgNDgsIDE4MiwgNDMsIDQ4LCA4NywgNDMsIAorICAgIDQ4LCAxOTEsIDQzLCA0OCwgMTU3LCAyMDEsIDQ4LCA0MywgNDgsIDE1NywgMjM5LCAxNCwgNDMsIDQ4LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgNDMsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDMsIDQ4LCA0OSwgNTEsIDQzLCA0OCwgMTE1LCAxMjcsIDQzLCAKKyAgICA0OCwgMjAxLCAyNywgOTgsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAKKyAgICAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDE2MiwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMzksIDE0LCAKKyAgICAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDk4LCAxNTQsIAorICAgIDQ4LCAyMDEsIDI3LCAxODIsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAxNTQsIDQ4LCAyMDEsIDI3LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDk4LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAyMjIsIAorICAgIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMjIyLCAKKyAgICA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDIyMiwgNjYsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDk4LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDgwLCAxNTQsIDQ4LCAKKyAgICAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjM5LCAxNCwgODAsIDE1NCwgCisgICAgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgOTgsIDIwMiwgMjQ2LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAyMDIsIDI0NiwgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDIwMiwgCisgICAgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDk4LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIAorICAgIDI1MCwgMjAyLCAxODIsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDY0LCA1NSwgMjAxLCA1LCAKKyAgICAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgCisgICAgMjE4LCAyMTEsIDIwNywgNiwgMTgyLCA1NSwgMywgMjE4LCAyMTEsIDIwNywgNiwgODcsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCAKKyAgICA2LCAxOTEsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCA2LCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMDIsIDgwLCA1NSwgCisgICAgMjEwLCAxMDAsIDIwMSwgMjUsIDEyMCwgMjA2LCA3MSwgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTEyLCAyMzQsIAorICAgIDIxMywgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTEyLCAyMDYsIDc0LCA5OCwgMjQ4LCA5MCwgNjQsIDQ4LCA4NywgCisgICAgMjQ4LCA5MywgMjEwLCAxMDIsIDY0LCA0OCwgOTgsIDIwNSwgMTU4LCAyMTAsIDEwMiwgNjQsIDQ4LCA4NywgMjA1LCAxNTgsIAorICAgIDIxMCwgMTAyLCA2NCwgNDgsIDk4LCAyMjUsIDIyLCA2NCwgNDgsIDg3LCAyMTMsIDQwLCA2NCwgNDgsIDk4LCAyMTMsIDQwLCAKKyAgICA2NCwgNDgsIDg3LCAyMjUsIDIyLCA2NCwgNDgsIDk4LCAyNDksIDEyOCwgMjEwLCAxMDEsIDY0LCA0OCwgODcsIDI0OSwgCisgICAgMTI4LCAyMTAsIDEwMSwgNjQsIDQ4LCA5OCwgMjM2LCAxOTgsIDIxMCwgMTAxLCA2NCwgNDgsIDg3LCAyMzYsIDE5OCwgMjEwLCAKKyAgICAxMDEsIDY0LCA0OCwgNjQsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTAyLCA2NCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAKKyAgICAxMjAsIDIwNiwgNzEsIDE5OSwgMjMsIDIzNywgMTg5LCAyMjEsIDEwNCwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMDYsIAorICAgIDk0LCAyMjAsIDE2LCAyMzcsIDE4OSwgMjA2LCA3NiwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMzQsIDEzNSwgMjEyLCAKKyAgICAyNTEsIDIzNywgMTg5LCAyMzMsIDkxLCAyMzcsIDE4OSwgMiwgNzYsIDIwNiwgMTA3LCAyMzMsIDEyMywgMjQ3LCAxNjksIAorICAgIDIyMiwgNzcsIDIzNCwgMTk5LCAyMTMsIDIyMCwgMjQ5LCAxMzAsIDc2LCAyMzQsIDE5OSwgMjI1LCAyNywgMjM3LCA2NiwgCisgICAgMjEzLCA0NSwgMjM3LCA2NiwgMjM0LCAxNzMsIDIzNCwgMjAwLCAzLCAxMjQsIDI2LCAxMDEsIDIzNywgODIsIDI0MiwgMjMxLCAKKyAgICAyMzcsIDE5MCwgMywgMjQyLCAyNTQsIDIzNCwgMTU3LCAyNDYsIDk5LCAyMzcsIDE4OSwgMjIwLCAxMTMsIDIzNywgMTg5LCAKKyAgICAyMTIsIDI0MiwgMjE3LCA3OSwgMjA2LCAxMDcsIDIzNywgMzIsIDIyNSwgNTcsIDIzOSwgMTQ3LCAyMzcsIDE4OSwgMjIzLCAKKyAgICAyNTMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMjE2LCAxNzYsIDIwOSwgMzksIDIzNywgMTg5LCAyMTUsIDI0LCAyMDAsIDI1MCwgCisgICAgMjEwLCAxNzMsIDIxNSwgMTMsIDIyMiwgMTgxLCAyMjgsIDExOCwgMjA0LCAxNzMsIDIyMSwgNzIsIDI0NiwgMTk5LCAyMDksIAorICAgIDIyNCwgMjE2LCAxMSwgMjQwLCAxOTgsIDI0NywgMTE2LCAyMjcsIDE0MiwgMjM3LCAxMjYsIDIyMSwgMTI5LCAyMTYsIDM0LCAKKyAgICAyMDAsIDIyNCwgMjAxLCA4MywgMjE1LCA4NiwgMjM0LCAxNzgsIDIwMSwgMTksIDIzNywgMjQsIDIzOSwgMTQzLCAzLCAyMzksIAorICAgIDE0MSwgMjQ2LCAxMTcsIDIzNSwgMTI3LCAyMDQsIDIwMSwgMjM1LCAxMjgsIDIwOCwgMjA2LCAyMzUsIDExNCwgMjIwLCAxMywgCisgICAgMjEzLCA0NywgMjM3LCA3MywgMjE1LCAxMzQsIDIyMiwgNjksIDIxMSwgMTk2LCAyMTUsIDEzNCwgMjIyLCA2OSwgMjA2LCAKKyAgICA3NSwgMjE1LCAxMzQsIDIyMiwgNjksIDI0OCwgNzcsIDIzNSwgMTIyLCAyMjIsIDE0MSwgMjUwLCAxOTIsIDIwMywgMjQzLCAKKyAgICAyNDIsIDIzOCwgMjUwLCAxMTgsIDI0MiwgMjA4LCAyNDksIDEyMSwgMjE1LCA1OSwgMjQ3LCAxMjAsIDI0OSwgMTA4LCAyNDgsIAorICAgIDYyLCAyMzUsIDY0LCAyMTIsIDMyLCAyMTAsIDkzLCAyMTYsIDE2MywgNzYsIDIzNywgMSwgMjA4LCAyOCwgMjM3LCA0MywgCisgICAgMjM4LCAyNDYsIDIzNSwgMTI5LCA3NiwgMjIxLCAxNzMsIDIxNiwgNjgsIDIyNiwgMTI0LCAyMTYsIDE2MCwgMjQyLCAyNTEsIAorICAgIDIyNCwgMTY0LCAyMzcsIDE4OSwgMjExLCAyMTMsIDIwNCwgMTkwLCAyMDMsIDI0NSwgMjM3LCAxODksIDIzOSwgMjQsIDIzOSwgCisgICAgMTMzLCAyNDksIDU1LCAyMTAsIDgwLCAyMTYsIDIzNywgMjM2LCAyMjEsIDIzNywgMTg5LCAyNDcsIDI0NSwgMjQxLCAxNTgsIAorICAgIDIzNSwgOTcsIDIyNCwgMTQzLCAyMTMsIDkyLCAyMDksIDIyNiwgMjA4LCAxODcsIDI0NiwgMjU1LCAyMDEsIDU5LCAxMiwgCisgICAgMTUsIDIzMiwgMjIxLCAxMiwgMTUsIDIzMiwgMjIwLCAxMiwgMTUsIDIzMiwgMjE5LCAxMiwgMTUsIDIzMiwgMjE4LCAxMiwgCisgICAgMTUsIDIzMiwgMjE3LCAxMiwgMTUsIDIzMiwgMjE2LCAxMiwgMTUsIDIzMiwgMjE1LCAxMiwgMTUsIDIzMiwgMjE0LCAxMiwgCisgICAgMTUsIDIzMiwgMjEzLCAxMiwgMTUsIDIzMiwgMjEyLCAxMiwgMTUsIDIzMiwgMjExLCAxMiwgMTUsIDIzMiwgMjEwLCAxMiwgCisgICAgMTUsIDIzMiwgMjA5LCAxMiwgMTUsIDIzMiwgMjA4LCAxMiwgMTUsIDIzMiwgMjA3LCAxMiwgMTUsIDIzMiwgMjA2LCAxMiwgCisgICAgMTUsIDIzMiwgMjA1LCAxMiwgMTUsIDIzMiwgMjA0LCAxMiwgMTUsIDIzMiwgMjAzLCAxMiwgMTUsIDIzMiwgMjAyLCAxMiwgCisgICAgMTUsIDIzMiwgMjAxLCAxMiwgMTUsIDIzMiwgMjAwLCAxMiwgMTUsIDIzMiwgMTk5LCAxMiwgMTUsIDIzMiwgMTk4LCAxMiwgCisgICAgMTUsIDIzMiwgMTk3LCAxMiwgMTUsIDIzMiwgMTk2LCAxMiwgMTUsIDIzMiwgMTk1LCAxMiwgMTUsIDIzMiwgMTk0LCAxMiwgCisgICAgMTUsIDIzMiwgMTkzLCAxMiwgMTUsIDIzMiwgMTkyLCAxMiwgMTUsIDIzMiwgMTkxLCAxMiwgMTUsIDIzMiwgMTkwLCAxMiwgCisgICAgMTUsIDIzMiwgMTg5LCAxMiwgMTUsIDIzMiwgMTg4LCAxMiwgMTUsIDIzMiwgMTg3LCAxMiwgMTUsIDIzMiwgMTg2LCAxMiwgCisgICAgMTUsIDIzMiwgMTg1LCAxMiwgMTUsIDIzMiwgMTg0LCAxMiwgMTUsIDIzMiwgMTgzLCAxMiwgMTUsIDIzMiwgMTgyLCAxMiwgCisgICAgMTUsIDIzMiwgMTgxLCAxMiwgMTUsIDIzMiwgMTgwLCAxMiwgMTUsIDIzMiwgMTc5LCAxMiwgMTUsIDIzMiwgMTc4LCAxMiwgCisgICAgMTUsIDIzMiwgMTc3LCAxMiwgMTUsIDIzMiwgMTc2LCAxMiwgMTUsIDIzMiwgMTc1LCAxMiwgMTUsIDIzMiwgMTc0LCAxMiwgCisgICAgMTUsIDIzMiwgMTczLCAxMiwgMTUsIDIzMiwgMTcyLCAxMiwgMTUsIDIzMiwgMTcxLCAxMiwgMTUsIDIzMiwgMTcwLCAxMiwgCisgICAgMTUsIDIzMiwgMTY5LCAxMiwgMTUsIDIzMiwgMTY4LCAxMiwgMTUsIDIzMiwgMTY3LCAxMiwgMTUsIDIzMiwgMTY2LCAxMiwgCisgICAgMTUsIDIzMiwgMTY1LCAxMiwgMTUsIDIzMiwgMTY0LCAxMiwgMTUsIDIzMiwgMTYzLCAxMiwgMTUsIDIzMiwgMTYyLCAxMiwgCisgICAgMTUsIDIzMiwgMTYxLCAxMiwgMTUsIDIzMiwgMTYwLCAxMiwgMTUsIDIzMiwgMTU5LCAxMiwgMTUsIDIzMiwgMTU4LCAxMiwgCisgICAgMTUsIDIzMiwgMTU3LCAxMiwgMTUsIDIzMiwgMTU2LCAxMiwgMTUsIDIzMiwgMTU1LCAxMiwgMTUsIDIzMiwgMTU0LCAxMiwgCisgICAgMTUsIDIzMiwgMTUzLCAxMiwgMTUsIDIzMiwgMTUyLCAxMiwgMTUsIDIzMiwgMTUxLCAxMiwgMTUsIDIzMiwgMTUwLCAxMiwgCisgICAgMTUsIDIzMiwgMTQ5LCAxMiwgMTUsIDIzMiwgMTQ4LCAxMiwgMTUsIDIzMiwgMTQ3LCAxMiwgMTUsIDIzMiwgMTQ2LCAxMiwgCisgICAgMTUsIDIzMiwgMTQ1LCAxMiwgMTUsIDIzMiwgMTQ0LCAxMiwgMTUsIDIzMiwgMTQzLCAxMiwgMTUsIDIzMiwgMTQyLCAxMiwgCisgICAgMTUsIDIzMiwgMTQxLCAxMiwgMTUsIDIzMiwgMTQwLCAxMiwgMTUsIDIzMiwgMTM5LCAxMiwgMTUsIDIzMiwgMTM4LCAxMiwgCisgICAgMTUsIDIzMiwgMTM3LCAxMiwgMTUsIDIzMiwgMTM2LCAxMiwgMTUsIDIzMiwgMTM1LCAxMiwgMTUsIDIzMiwgMTM0LCAxMiwgCisgICAgMTUsIDIzMiwgMTMzLCAxMiwgMTUsIDIzMiwgMTMyLCAxMiwgMTUsIDIzMiwgMTMxLCAxMiwgMTUsIDIzMiwgMTMwLCAxMiwgCisgICAgMTUsIDIzMiwgMTI5LCAxMiwgMTUsIDIzMiwgMTI4LCAxMiwgMTUsIDIzMiwgMTI3LCAxMiwgMTUsIDIzMiwgMTI2LCAxMiwgCisgICAgMTUsIDIzMiwgMTI1LCAxMiwgMTUsIDIzMiwgMTI0LCAxMiwgMTUsIDIzMiwgMTIzLCAxMiwgMTUsIDIzMiwgMTIyLCAxMiwgCisgICAgMTUsIDIzMiwgMTIxLCAxMiwgMTUsIDIzMiwgMTIwLCAxMiwgMTUsIDIzMiwgMTE5LCAxMiwgMTUsIDIzMiwgMTE4LCAxMiwgCisgICAgMTUsIDIzMiwgMTE3LCAxMiwgMTUsIDIzMiwgMTE2LCAxMiwgMTUsIDIzMiwgMTE1LCAxMiwgMTUsIDIzMiwgMTE0LCAxMiwgCisgICAgMTUsIDIzMiwgMTEzLCAxMiwgMTUsIDIzMiwgMTEyLCAxMiwgMTUsIDIzMiwgMTExLCAxMiwgMTUsIDIzMiwgMTEwLCAxMiwgCisgICAgMTUsIDIzMiwgMTA5LCAxMiwgMTUsIDIzMiwgMTA4LCAxMiwgMTUsIDIzMiwgMTA3LCAxMiwgMTUsIDIzMiwgMTA2LCAxMiwgCisgICAgMTUsIDIzMiwgMTA1LCAxMiwgMTUsIDIzMiwgMTA0LCAxMiwgMTUsIDIzMiwgMTAzLCAxMiwgMTUsIDIzMiwgMTAyLCAxMiwgCisgICAgMTUsIDIzMiwgMTAxLCAxMiwgMTUsIDIzMiwgMTAwLCAxMiwgMTUsIDIzMiwgOTksIDEyLCAxNSwgMjMyLCA5OCwgMTIsIDE1LCAKKyAgICAyMzIsIDk3LCAxMiwgMTUsIDIzMiwgOTYsIDEyLCAxNSwgMjMyLCA5NSwgMTIsIDE1LCAyMzIsIDk0LCAxMiwgMTUsIDIzMiwgCisgICAgOTMsIDEyLCAxNSwgMjMyLCA5MiwgMTIsIDE1LCAyMzIsIDkxLCAxMiwgMTUsIDIzMiwgOTAsIDEyLCAxNSwgMjMyLCA4OSwgCisgICAgMTIsIDE1LCAyMzIsIDg4LCAxMiwgMTUsIDIzMiwgODcsIDEyLCAxNSwgMjMyLCA4NiwgMTIsIDE1LCAyMzIsIDg1LCAxMiwgCisgICAgMTUsIDIzMiwgODQsIDEyLCAxNSwgMjMyLCA4MywgMTIsIDE1LCAyMzIsIDgyLCAxMiwgMTUsIDIzMiwgODEsIDEyLCAxNSwgCisgICAgMjMyLCA4MCwgMTIsIDE1LCAyMzIsIDc5LCAxMiwgMTUsIDIzMiwgNzgsIDEyLCAxNSwgMjMyLCA3NywgMTIsIDE1LCAyMzIsIAorICAgIDc2LCAxMiwgMTUsIDIzMiwgNzUsIDEyLCAxNSwgMjMyLCA3NCwgMTIsIDE1LCAyMzIsIDczLCAxMiwgMTUsIDIzMiwgNzIsIAorICAgIDEyLCAxNSwgMjMyLCA3MSwgMTIsIDE1LCAyMzIsIDcwLCAxMiwgMTUsIDIzMiwgNjksIDEyLCAxNSwgMjMyLCA2OCwgMTIsIAorICAgIDE1LCAyMzIsIDY3LCAxMiwgMTUsIDIzMiwgNjYsIDEyLCAxNSwgMjMyLCA2NSwgMTIsIDE1LCAyMzIsIDY0LCAxMiwgMTUsIAorICAgIDIzMiwgNjMsIDEyLCAxNSwgMjMyLCA2MiwgMTIsIDE1LCAyMzIsIDYxLCAxMiwgMTUsIDIzMiwgNjAsIDEyLCAxNSwgMjMyLCAKKyAgICA1OSwgMTIsIDE1LCAyMzIsIDU4LCAxMiwgMTUsIDIzMiwgNTcsIDEyLCAxNSwgMjMyLCA1NiwgMTIsIDE1LCAyMzIsIDU1LCAKKyAgICAxMiwgMTUsIDIzMiwgNTQsIDEyLCAxNSwgMjMyLCA1MywgMTIsIDE1LCAyMzIsIDUyLCAxMiwgMTUsIDIzMiwgNTEsIDEyLCAKKyAgICAxNSwgMjMyLCA1MCwgMTIsIDE1LCAyMzIsIDQ5LCAxMiwgMTUsIDIzMiwgNDgsIDEyLCAxNSwgMjMyLCA0NywgMTIsIDE1LCAKKyAgICAyMzIsIDQ2LCAxMiwgMTUsIDIzMiwgNDUsIDEyLCAxNSwgMjMyLCA0NCwgMTIsIDE1LCAyMzIsIDQzLCAxMiwgMTUsIDIzMiwgCisgICAgNDIsIDEyLCAxNSwgMjMyLCA0MSwgMTIsIDE1LCAyMzIsIDQwLCAxMiwgMTUsIDIzMiwgMzksIDEyLCAxNSwgMjMyLCAzOCwgCisgICAgMTIsIDE1LCAyMzIsIDM3LCAxMiwgMTUsIDIzMiwgMzYsIDEyLCAxNSwgMjMyLCAzNSwgMTIsIDE1LCAyMzIsIDM0LCAxMiwgCisgICAgMTUsIDIzMiwgMzMsIDEyLCAxNSwgMjMyLCAzMiwgMTIsIDE1LCAyMzIsIDMxLCAxMiwgMTUsIDIzMiwgMzAsIDEyLCAxNSwgCisgICAgMjMyLCAyOSwgMTIsIDE1LCAyMzIsIDI4LCAxMiwgMTUsIDIzMiwgMjcsIDEyLCAxNSwgMjMyLCAyNiwgMTIsIDE1LCAyMzIsIAorICAgIDI1LCAxMiwgMTUsIDIzMiwgMjQsIDEyLCAxNSwgMjMyLCAyMywgMTIsIDE1LCAyMzIsIDIyLCAxMiwgMTUsIDIzMiwgMjEsIAorICAgIDEyLCAxNSwgMjMyLCAyMCwgMTIsIDE1LCAyMzIsIDE5LCAxMiwgMTUsIDIzMiwgMTgsIDEyLCAxNSwgMjMyLCAxNywgMTIsIAorICAgIDE1LCAyMzIsIDE2LCAxMiwgMTUsIDIzMiwgMTUsIDEyLCAxNSwgMjMyLCAxNCwgMTIsIDE1LCAyMzIsIDEzLCAxMiwgMTUsIAorICAgIDIzMiwgMTIsIDEyLCAxNSwgMjMyLCAxMSwgMTIsIDE1LCAyMzIsIDEwLCAxMiwgMTUsIDIzMiwgOSwgMTIsIDE1LCAyMzIsIAorICAgIDgsIDEyLCAxNSwgMjMyLCA3LCAxMiwgMTUsIDIzMiwgNiwgMTIsIDE1LCAyMzIsIDUsIDEyLCAxNSwgMjMyLCA0LCAxMiwgCisgICAgMTUsIDIzMiwgMywgMTIsIDE1LCAyMzIsIDIsIDEyLCAxNSwgMjMyLCAxLCAxMiwgMTUsIDIzMiwgMCwgMTIsIDE1LCAyMzEsIAorICAgIDI1NSwgMTIsIDE1LCAyMzEsIDI1NCwgMTIsIDE1LCAyMzEsIDI1MywgMTIsIDE1LCAyMzEsIDI1MiwgMTIsIDE1LCAyMzEsIAorICAgIDI1MSwgMTIsIDE1LCAyMzEsIDI1MCwgMTIsIDE1LCAyMzEsIDI0OSwgMTIsIDE1LCAyMzEsIDI0OCwgMTIsIDE1LCAyMzEsIAorICAgIDI0NywgMTIsIDE1LCAyMzEsIDI0NiwgMTIsIDE1LCAyMzEsIDI0NSwgMTIsIDE1LCAyMzEsIDI0NCwgMTIsIDE1LCAyMzEsIAorICAgIDI0MywgMTIsIDE1LCAyMzEsIDI0MiwgMTIsIDE1LCAyMzEsIDI0MSwgMTIsIDE1LCAyMzEsIDI0MCwgMTIsIDE1LCAyMzEsIAorICAgIDIzOSwgMTIsIDE1LCAyMzEsIDIzOCwgMTIsIDE1LCAyMzEsIDIzNywgMTIsIDE1LCAyMzEsIDIzNiwgMTIsIDE1LCAyMzEsIAorICAgIDIzNSwgMTIsIDE1LCAyMzEsIDIzNCwgMTIsIDE1LCAyMzEsIDIzMywgMTIsIDE1LCAyMzEsIDIzMiwgMTIsIDE1LCAyMzEsIAorICAgIDIzMSwgMTIsIDE1LCAyMzEsIDIzMCwgMTIsIDE1LCAyMzEsIDIyOSwgMTIsIDE1LCAyMzEsIDIyOCwgMTIsIDE1LCAyMzEsIAorICAgIDIyNywgMTIsIDE1LCAyMzEsIDIyNiwgMTIsIDE1LCAyMzEsIDIyNSwgMTIsIDE1LCAyMzEsIDIyNCwgMTIsIDE1LCAyMzEsIAorICAgIDIyMywgMTIsIDE1LCAyMzEsIDIyMiwgMTIsIDE1LCAyMzEsIDIyMSwgMTIsIDE1LCAyMzEsIDIyMCwgMTIsIDE1LCAyMzEsIAorICAgIDIxOSwgMTIsIDE1LCAyMzEsIDIxOCwgMTIsIDE1LCAyMzEsIDIxNywgMTIsIDE1LCAyMzEsIDIxNiwgMTIsIDE1LCAyMzEsIAorICAgIDIxNSwgMTIsIDE1LCAyMzEsIDIxNCwgMTIsIDE1LCAyMzEsIDIxMywgMTIsIDE1LCAyMzEsIDIxMiwgMTIsIDE1LCAyMzEsIAorICAgIDIxMSwgMTIsIDE1LCAyMzEsIDIxMCwgMTIsIDE1LCAyMzEsIDIwOSwgMTIsIDE1LCAyMzEsIDIwOCwgMTIsIDE1LCAyMzEsIAorICAgIDIwNywgMTIsIDE1LCAyMzEsIDIwNiwgMTIsIDE1LCAyMzEsIDIwNSwgMTIsIDE1LCAyMzEsIDIwNCwgMTIsIDE1LCAyMzEsIAorICAgIDIwMywgMTIsIDE1LCAyMzEsIDIwMiwgMTIsIDE1LCAyMzEsIDIwMSwgMTIsIDE1LCAyMzEsIDIwMCwgMTIsIDE1LCAyMzEsIAorICAgIDE5OSwgMTIsIDE1LCAyMzEsIDE5OCwgMTIsIDE1LCAyMzEsIDE5NywgMTIsIDE1LCAyMzEsIDE5NiwgMTIsIDE1LCAyMzEsIAorICAgIDE5NSwgMTIsIDE1LCAyMzEsIDE5NCwgMTIsIDE1LCAyMzEsIDE5MywgMTIsIDE1LCAyMzEsIDE5MiwgMTIsIDE1LCAyMzEsIAorICAgIDE5MSwgMTIsIDE1LCAyMzEsIDE5MCwgMTIsIDE1LCAyMzEsIDE4OSwgMTIsIDE1LCAyMzEsIDE4OCwgMTIsIDE1LCAyMzEsIAorICAgIDE4NywgMTIsIDE1LCAyMzEsIDE4NiwgMTIsIDE1LCAyMzEsIDE4NSwgMTIsIDE1LCAyMzEsIDE4NCwgMTIsIDE1LCAyMzEsIAorICAgIDE4MywgMTIsIDE1LCAyMzEsIDE4MiwgMTIsIDE1LCAyMzEsIDE4MSwgMTIsIDE1LCAyMzEsIDE4MCwgMTIsIDE1LCAyMzEsIAorICAgIDE3OSwgMTIsIDE1LCAyMzEsIDE3OCwgMTIsIDE1LCAyMzEsIDE3NywgMTIsIDE1LCAyMzEsIDE3NiwgMTIsIDE1LCAyMzEsIAorICAgIDE3NSwgMTIsIDE1LCAyMzEsIDE3NCwgMTIsIDE1LCAyMzEsIDE3MywgMTIsIDE1LCAyMzEsIDE3MiwgMTIsIDE1LCAyMzEsIAorICAgIDE3MSwgMTIsIDE1LCAyMzEsIDE3MCwgMTIsIDE1LCAyMzEsIDE2OSwgMTIsIDE1LCAyMzEsIDE2OCwgMTIsIDE1LCAyMzEsIAorICAgIDE2NywgMTIsIDE1LCAyMzEsIDE2NiwgMTIsIDE1LCAyMzEsIDE2NSwgMTIsIDE1LCAyMzEsIDE2NCwgMTIsIDE1LCAyMzEsIAorICAgIDE2MywgMTIsIDE1LCAyMzEsIDE2MiwgMTIsIDE1LCAyMzEsIDE2MSwgMTIsIDE1LCAyMzEsIDE2MCwgMTIsIDE1LCAyMzEsIAorICAgIDE1OSwgMTIsIDE1LCAyMzEsIDE1OCwgMTIsIDE1LCAyMzEsIDE1NywgMTIsIDE1LCAyMzEsIDE1NiwgMTIsIDE1LCAyMzEsIAorICAgIDE1NSwgMTIsIDE1LCAyMzEsIDE1NCwgMTIsIDE1LCAyMzEsIDE1MywgMTIsIDE1LCAyMzEsIDE1MiwgMTIsIDE1LCAyMzEsIAorICAgIDE1MSwgMTIsIDE1LCAyMzEsIDE1MCwgMTIsIDE1LCAyMzEsIDE0OSwgMTIsIDE1LCAyMzEsIDE0OCwgMTIsIDE1LCAyMzEsIAorICAgIDE0NywgMTIsIDE1LCAyMzEsIDE0NiwgMTIsIDE1LCAyMzEsIDE0NSwgMTIsIDE1LCAyMzEsIDE0NCwgMTIsIDE1LCAyMzEsIAorICAgIDE0MywgMTIsIDE1LCAyMzEsIDE0MiwgMTIsIDE1LCAyMzEsIDE0MSwgMTIsIDE1LCAyMzEsIDE0MCwgMTIsIDE1LCAyMzEsIAorICAgIDEzOSwgMTIsIDE1LCAyMzEsIDEzOCwgMTIsIDE1LCAyMzEsIDEzNywgMTIsIDE1LCAyMzEsIDEzNiwgMTIsIDE1LCAyMzEsIAorICAgIDEzNSwgMTIsIDE1LCAyMzEsIDEzNCwgMTIsIDE1LCAyMzEsIDEzMywgMTIsIDE1LCAyMzEsIDEzMiwgMTIsIDE1LCAyMzEsIAorICAgIDEzMSwgMTIsIDE1LCAyMzEsIDEzMCwgMTIsIDE1LCAyMzEsIDEyOSwgMTIsIDE1LCAyMzEsIDEyOCwgMTIsIDE1LCAyMzEsIAorICAgIDEyNywgMTIsIDE1LCAyMzEsIDEyNiwgMTIsIDE1LCAyMzEsIDEyNSwgMTIsIDE1LCAyMzEsIDEyNCwgMTIsIDE1LCAyMzEsIAorICAgIDEyMywgMTIsIDE1LCAyMzEsIDEyMiwgMTIsIDE1LCAyMzEsIDEyMSwgMTIsIDE1LCAyMzEsIDEyMCwgMTIsIDE1LCAyMzEsIAorICAgIDExOSwgMTIsIDE1LCAyMzEsIDExOCwgMTIsIDE1LCAyMzEsIDExNywgMTIsIDE1LCAyMzEsIDExNiwgMTIsIDE1LCAyMzEsIAorICAgIDExNSwgMTIsIDE1LCAyMzEsIDExNCwgMTIsIDE1LCAyMzEsIDExMywgMTIsIDE1LCAyMzEsIDExMiwgMTIsIDE1LCAyMzEsIAorICAgIDExMSwgMTIsIDE1LCAyMzEsIDExMCwgMTIsIDE1LCAyMzEsIDEwOSwgMTIsIDE1LCAyMzEsIDEwOCwgMTIsIDE1LCAyMzEsIAorICAgIDEwNywgMTIsIDE1LCAyMzEsIDEwNiwgMTIsIDE1LCAyMzEsIDEwNSwgMTIsIDE1LCAyMzEsIDEwNCwgMTIsIDE1LCAyMzEsIAorICAgIDEwMywgMTIsIDE1LCAyMzEsIDEwMiwgMTIsIDE1LCAyMzEsIDEwMSwgMTIsIDE1LCAyMzEsIDEwMCwgMTIsIDE1LCAyMzEsIAorICAgIDk5LCAxMiwgMTUsIDIzMSwgOTgsIDEyLCAxNSwgMjMxLCA5NywgMTIsIDE1LCAyMzEsIDk2LCAxMiwgMTUsIDIzMSwgOTUsIAorICAgIDEyLCAxNSwgMjMxLCA5NCwgMTIsIDE1LCAyMzEsIDkzLCAxMiwgMTUsIDIzMSwgOTIsIDEyLCAxNSwgMjMxLCA5MSwgMTIsIAorICAgIDE1LCAyMzEsIDkwLCAxMiwgMTUsIDIzMSwgODksIDEyLCAxNSwgMjMxLCA4OCwgMTIsIDE1LCAyMzEsIDg3LCAxMiwgMTUsIAorICAgIDIzMSwgODYsIDEyLCAxNSwgMjMxLCA4NSwgMTIsIDE1LCAyMzEsIDg0LCAxMiwgMTUsIDIzMSwgODMsIDEyLCAxNSwgMjMxLCAKKyAgICA4MiwgMTIsIDE1LCAyMzEsIDgxLCAxMiwgMTUsIDIzMSwgODAsIDEyLCAxNSwgMjMxLCA3OSwgMTIsIDE1LCAyMzEsIDc4LCAKKyAgICAxMiwgMTUsIDIzMSwgNzcsIDEyLCAxNSwgMjMxLCA3NiwgMTIsIDE1LCAyMzEsIDc1LCAxMiwgMTUsIDIzMSwgNzQsIDEyLCAKKyAgICAxNSwgMjMxLCA3MywgMTIsIDE1LCAyMzEsIDcyLCAxMiwgMTUsIDIzMSwgNzEsIDEyLCAxNSwgMjMxLCA3MCwgMTIsIDE1LCAKKyAgICAyMzEsIDY5LCAxMiwgMTUsIDIzMSwgNjgsIDEyLCAxNSwgMjMxLCA2NywgMTIsIDE1LCAyMzEsIDY2LCAxMiwgMTUsIDIzMSwgCisgICAgNjUsIDEyLCAxNSwgMjMxLCA2NCwgMTIsIDE1LCAyMzEsIDYzLCAxMiwgMTUsIDIzMSwgNjIsIDEyLCAxNSwgMjMxLCA2MSwgCisgICAgMTIsIDE1LCAyMzEsIDYwLCAxMiwgMTUsIDIzMSwgNTksIDEyLCAxNSwgMjMxLCA1OCwgMTIsIDE1LCAyMzEsIDU3LCAxMiwgCisgICAgMTUsIDIzMSwgNTYsIDEyLCAxNSwgMjMxLCA1NSwgMTIsIDE1LCAyMzEsIDU0LCAxMiwgMTUsIDIzMSwgNTMsIDEyLCAxNSwgCisgICAgMjMxLCA1MiwgMTIsIDE1LCAyMzEsIDUxLCAxMiwgMTUsIDIzMSwgNTAsIDEyLCAxNSwgMjMxLCA0OSwgMTIsIDE1LCAyMzEsIAorICAgIDQ4LCAxMiwgMTUsIDIzMSwgNDcsIDEyLCAxNSwgMjMxLCA0NiwgMTIsIDE1LCAyMzEsIDQ1LCAxMiwgMTUsIDIzMSwgNDQsIAorICAgIDEyLCAxNSwgMjMxLCA0MywgMTIsIDE1LCAyMzEsIDQyLCAxMiwgMTUsIDIzMSwgNDEsIDEyLCAxNSwgMjMxLCA0MCwgMTIsIAorICAgIDE1LCAyMzEsIDM5LCAxMiwgMTUsIDIzMSwgMzgsIDEyLCAxNSwgMjMxLCAzNywgMTIsIDE1LCAyMzEsIDM2LCAxMiwgMTUsIAorICAgIDIzMSwgMzUsIDEyLCAxNSwgMjMxLCAzNCwgMTIsIDE1LCAyMzEsIDMzLCAxMiwgMTUsIDIzMSwgMzIsIDEyLCAxNSwgMjMxLCAKKyAgICAzMSwgMTIsIDE1LCAyMzEsIDMwLCAxMiwgMTUsIDIzMSwgMjksIDEyLCAxNSwgMjMxLCAyOCwgMTIsIDE1LCAyMzEsIDI3LCAKKyAgICAxMiwgMTUsIDIzMSwgMjYsIDEyLCAxNSwgMjMxLCAyNSwgMTIsIDE1LCAyMzEsIDI0LCAxMiwgMTUsIDIzMSwgMjMsIDEyLCAKKyAgICAxNSwgMjMxLCAyMiwgMTIsIDE1LCAyMzEsIDIxLCAxMiwgMTUsIDIzMSwgMjAsIDEyLCAxNSwgMjMxLCAxOSwgMTIsIDE1LCAKKyAgICAyMzEsIDE4LCAxMiwgMTUsIDIzMSwgMTcsIDEyLCAxNSwgMjMxLCAxNiwgMTIsIDE1LCAyMzEsIDE1LCAxMiwgMTUsIDIzMSwgCisgICAgMTQsIDEyLCAxNSwgMjMxLCAxMywgMTIsIDE1LCAyMzEsIDEyLCAxMiwgMTUsIDIzMSwgMTEsIDEyLCAxNSwgMjMxLCAxMCwgCisgICAgMTIsIDE1LCAyMzEsIDksIDEyLCAxNSwgMjMxLCA4LCAxMiwgMTUsIDIzMSwgNywgMTIsIDE1LCAyMzEsIDYsIDEyLCAxNSwgCisgICAgMjMxLCA1LCAxMiwgMTUsIDIzMSwgNCwgMTIsIDE1LCAyMzEsIDMsIDEyLCAxNSwgMjMxLCAyLCAxMiwgMTUsIDIzMSwgMSwgCisgICAgMTIsIDE1LCAyMzEsIDAsIDEyLCAxNSwgMjMwLCAyNTUsIDEyLCAxNSwgMjMwLCAyNTQsIDEyLCAxNSwgMjMwLCAyNTMsIDEyLCAKKyAgICAxNSwgMjMwLCAyNTIsIDEyLCAxNSwgMjMwLCAyNTEsIDEyLCAxNSwgMjMwLCAyNTAsIDEyLCAxNSwgMjMwLCAyNDksIDEyLCAKKyAgICAxNSwgMjMwLCAyNDgsIDEyLCAxNSwgMjMwLCAyNDcsIDEyLCAxNSwgMjMwLCAyNDYsIDEyLCAxNSwgMjMwLCAyNDUsIDEyLCAKKyAgICAxNSwgMjMwLCAyNDQsIDEyLCAxNSwgMjMwLCAyNDMsIDEyLCAxNSwgMjMwLCAyNDIsIDEyLCAxNSwgMjMwLCAyNDEsIDEyLCAKKyAgICAxNSwgMjMwLCAyNDAsIDEyLCAxNSwgMjMwLCAyMzksIDEyLCAxNSwgMjMwLCAyMzgsIDEyLCAxNSwgMjMwLCAyMzcsIDEyLCAKKyAgICAxNSwgMjMwLCAyMzYsIDEyLCAxNSwgMjMwLCAyMzUsIDEyLCAxNSwgMjMwLCAyMzQsIDEyLCAxNSwgMjMwLCAyMzMsIDEyLCAKKyAgICAxNSwgMjMwLCAyMzIsIDEyLCAxNSwgMjMwLCAyMzEsIDEyLCAxNSwgMjMwLCAyMzAsIDEyLCAxNSwgMjMwLCAyMjksIDEyLCAKKyAgICAxNSwgMjMwLCAyMjgsIDEyLCAxNSwgMjMwLCAyMjcsIDEyLCAxNSwgMjMwLCAyMjYsIDEyLCAxNSwgMjMwLCAyMjUsIDEyLCAKKyAgICAxNSwgMjMwLCAyMjQsIDEyLCAxNSwgMjMwLCAyMjMsIDEyLCAxNSwgMjMwLCAyMjIsIDEyLCAxNSwgMjMwLCAyMjEsIDEyLCAKKyAgICAxNSwgMjMwLCAyMjAsIDEyLCAxNSwgMjMwLCAyMTksIDEyLCAxNSwgMjMwLCAyMTgsIDEyLCAxNSwgMjMwLCAyMTcsIDEyLCAKKyAgICAxNSwgMjMwLCAyMTYsIDEyLCAxNSwgMjMwLCAyMTUsIDEyLCAxNSwgMjMwLCAyMTQsIDEyLCAxNSwgMjMwLCAyMTMsIDEyLCAKKyAgICAxNSwgMjMwLCAyMTIsIDEyLCAxNSwgMjMwLCAyMTEsIDEyLCAxNSwgMjMwLCAyMTAsIDEyLCAxNSwgMjMwLCAyMDksIDEyLCAKKyAgICAxNSwgMjMwLCAyMDgsIDEyLCAxNSwgMjMwLCAyMDcsIDEyLCAxNSwgMjMwLCAyMDYsIDEyLCAxNSwgMjMwLCAyMDUsIDEyLCAKKyAgICAxNSwgMjMwLCAyMDQsIDEyLCAxNSwgMjMwLCAyMDMsIDEyLCAxNSwgMjMwLCAyMDIsIDEyLCAxNSwgMjMwLCAyMDEsIDEyLCAKKyAgICAxNSwgMjMwLCAyMDAsIDEyLCAxNSwgMjMwLCAxOTksIDEyLCAxNSwgMjMwLCAxOTgsIDEyLCAxNSwgMjMwLCAxOTcsIDEyLCAKKyAgICAxNSwgMjMwLCAxOTYsIDEyLCAxNSwgMjMwLCAxOTUsIDEyLCAxNSwgMjMwLCAxOTQsIDEyLCAxNSwgMjMwLCAxOTMsIDEyLCAKKyAgICAxNSwgMjMwLCAxOTIsIDIyNSwgNzcsIDIwNywgMTMsIDE2NSwgMjA4LCAyNDQsIDE2NSwgMjM4LCA0MywgODEsIDE2NSwgCisgICAgMjE0LCA2MywgODEsIDE2NSwgNDEsIDU0LCAxNjUsIDI0MCwgMTk0LCA1NCwgMTY1LCAyMTYsIDI3LCA1NCwgMTY1LCAyNTEsIAorICAgIDg5LCAxNjUsIDI1MSwgMTMsIDE2NSwgNDksIDIxNiwgMTE1LCAxNjUsIDUxLCAyMTYsIDExNSwgMTY1LCAyNTAsIDE2NSwgCisgICAgMTY1LCA5MywgNTQsIDE2NSwgMjQ2LCA3MCwgMTY1LCAyMzMsIDMyLCAxNjUsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNjUsIAorICAgIDIwOSwgMTYsIDE2NSwgMTcsIDE5OSwgODEsIDE2NSwgMTcsIDEwMiwgMTY1LCAxNywgMTA1LCAxNjUsIDE3LCAxNDcsIDE2NSwgCisgICAgMTcsIDE0OSwgMTY1LCAxNywgMTY0LCAxNjUsIDE3LCAxODcsIDE2NSwgMTcsIDIxMCwgMTM1LCAxNjUsIDE3LCAxOTIsIAorICAgIDE2NSwgMTcsIDIxOSwgMTEzLCAxNjUsIDI0NiwgNzksIDE2NSwgMjEwLCAxNjcsIDE2NSwgMjI0LCAyNDEsIDU0LCAxNjUsIAorICAgIDIzOCwgMTIyLCA1NCwgMTY1LCAyMzUsIDY3LCA1NCwgMTY1LCAyMTQsIDc5LCA4MSwgMTY1LCAyNDYsIDY4LCAyNTAsIDE1NSwgCisgICAgMTY1LCA4LCA2LCAxLCA2MiwgMTY1LCA4LCA2LCAxLCAyNTAsIDEwMywgMTY1LCA4LCA2LCAxLCAyNDcsIDIyMywgMTY1LCA4LCAKKyAgICA2LCAxLCAyNDIsIDE1MywgMTY1LCA4LCA2LCAxLCA3MiwgMTY1LCA4LCA2LCAxLCAyMzgsIDUsIDE2NSwgOCwgNiwgMSwgCisgICAgMjM2LCAxNTYsIDE2NSwgOCwgNiwgMSwgMjM0LCAyNDcsIDE2NSwgOCwgNiwgMSwgNzAsIDE2NSwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTEsIDE2NSwgOCwgNiwgMSwgMjI3LCAxMTgsIDE2NSwgOCwgNiwgMSwgMTU2LCAxNjUsIDgsIDYsIDEsIDIyMywgMjQzLCAKKyAgICAxNjUsIDgsIDYsIDEsIDIyMCwgMjE0LCAxNjUsIDgsIDYsIDEsIDc0LCAxNjUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxNjUsIDgsIAorICAgIDYsIDEsIDIxNCwgMTY3LCAxNjUsIDgsIDYsIDEsIDE0NiwgMTY1LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTY1LCA4LCA2LCAxLCAKKyAgICAyMDcsIDgzLCAxNjUsIDgsIDYsIDEsIDY2LCAxNjUsIDgsIDYsIDEsIDIwMywgMTY4LCAxNjUsIDgsIDYsIDEsIDIwMSwgCisgICAgMTQ3LCAxNjUsIDgsIDYsIDEsIDIwMCwgMTk1LCAxNjUsIDgsIDYsIDEsIDIwMCwgMTIzLCAxNjUsIDgsIDYsIDEsIDE5OSwgCisgICAgMTU3LCAxNjUsIDQ5LCA1MiwgMTU5LCAxNjUsIDIxMywgMTA2LCAyMDksIDE2LCAxNjUsIDUxLCA1MiwgMTU5LCAxNjUsIAorICAgIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMTY1LCAxMjgsIDIyNCwgMTc2LCAxNjUsIDIzNSwgNzQsIDI1MSwgMjUxLCAxNjUsIDgsIAorICAgIDQsIDEsIDYyLCAxNjUsIDgsIDQsIDEsIDI1MCwgMTAzLCAxNjUsIDgsIDQsIDEsIDI0NywgMjIzLCAxNjUsIDgsIDQsIDEsIAorICAgIDI0MiwgMTUzLCAxNjUsIDgsIDQsIDEsIDcyLCAxNjUsIDgsIDQsIDEsIDIzOCwgNSwgMTY1LCA4LCA0LCAxLCAyMzYsIDE1NiwgCisgICAgMTY1LCA4LCA0LCAxLCAyMzQsIDI0NywgMTY1LCA4LCA0LCAxLCA3MCwgMTY1LCA4LCA0LCAxLCAyMjcsIDI1MSwgMTY1LCA4LCAKKyAgICA0LCAxLCAyMjcsIDExOCwgMTY1LCA4LCA0LCAxLCAxNTYsIDE2NSwgOCwgNCwgMSwgMjIzLCAyNDMsIDE2NSwgOCwgNCwgMSwgCisgICAgMjIwLCAyMTQsIDE2NSwgOCwgNCwgMSwgNzQsIDE2NSwgOCwgNCwgMSwgMjE2LCAyMjYsIDE2NSwgOCwgNCwgMSwgMjE0LCAKKyAgICAxNjcsIDE2NSwgOCwgNCwgMSwgMTQ2LCAxNjUsIDgsIDQsIDEsIDIxMiwgMTIyLCAxNjUsIDgsIDQsIDEsIDIwNywgODMsIAorICAgIDE2NSwgOCwgNCwgMSwgNjYsIDE2NSwgOCwgNCwgMSwgMjAzLCAxNjgsIDE2NSwgOCwgNCwgMSwgMjAxLCAxNDcsIDE2NSwgOCwgCisgICAgNCwgMSwgMjAwLCAxOTUsIDE2NSwgOCwgNCwgMSwgMjAwLCAxMjMsIDE2NSwgOCwgNCwgMSwgMTk5LCAxNTcsIDE2NSwgNDksIAorICAgIDI0MiwgMTk2LCAxNTksIDE2NSwgODMsIDIyNCwgMTc2LCAxNjUsIDUxLCAyNDIsIDE5NiwgMTU5LCAxNjUsIDIwNSwgMjQwLCAKKyAgICAyNDcsIDE1NywgMjA3LCAxMywgNTgsIDIxMSwgOTYsIDU4LCAyMTEsIDg1LCA1OCwgMjExLCA3NCwgNTgsIDIxMSwgNjIsIAorICAgIDU4LCAyMTEsIDUxLCA1OCwgMjExLCA0MCwgNTgsIDIxMSwgMjksIDU4LCAyMTEsIDE4LCA1OCwgMjExLCA3LCA1OCwgMjEwLCAKKyAgICAyNTUsIDU4LCAyMTAsIDI1NCwgNTgsIDIxMCwgMjUzLCA1OCwgMjEwLCAyNTIsIDU4LCAyMTAsIDI1MCwgNTgsIDIxMCwgCisgICAgMjQ5LCA1OCwgMjEwLCAyNDgsIDU4LCAyMTAsIDI0NywgNTgsIDIxMCwgMjQ2LCA1OCwgMjEwLCAyNDUsIDU4LCAyMTAsIAorICAgIDI0NCwgNTgsIDIxMCwgMjQzLCA1OCwgMjEwLCAyNDIsIDU4LCAyMTAsIDI0MSwgNTgsIDIxMCwgMjM5LCA1OCwgMjEwLCAKKyAgICAyMzgsIDU4LCAyMTAsIDIzNywgNTgsIDIxMCwgMjM2LCA1OCwgMjEwLCAyMzUsIDU4LCAyMTAsIDIzNCwgNTgsIDIxMCwgCisgICAgMjMzLCA1OCwgMjEwLCAyMzIsIDU4LCAyMTAsIDIzMSwgNTgsIDIxMCwgMjMwLCA1OCwgMjEwLCAyMjgsIDU4LCAyMTAsIAorICAgIDIyNywgNTgsIDIxMCwgMjI2LCA1OCwgMjEwLCAyMjUsIDU4LCAyMTAsIDIyNCwgNTgsIDIxMCwgMjIzLCA1OCwgMjEwLCAKKyAgICAyMjIsIDU4LCAyMTAsIDIyMSwgNTgsIDIxMCwgMjIwLCA1OCwgMjEwLCAyMTksIDU4LCAyMTAsIDIxNywgNTgsIDIxMCwgCisgICAgMjE2LCA1OCwgMjEwLCAyMTUsIDU4LCAyMTAsIDIxNCwgNTgsIDIxMCwgMjEzLCA1OCwgMjEwLCAyMTIsIDU4LCAyMTAsIAorICAgIDIxMSwgNTgsIDIxMCwgMjEwLCA1OCwgMjEwLCAyMDksIDU4LCAyMTAsIDIwOCwgNTgsIDIxMCwgMjA2LCA1OCwgMjEwLCAKKyAgICAyMDUsIDU4LCAyMTAsIDIwNCwgNTgsIDIxMCwgMjAzLCA1OCwgMjEwLCAyMDIsIDU4LCAyMTAsIDIwMSwgNTgsIDIxMCwgCisgICAgMjAwLCA1OCwgMjEwLCAxOTksIDU4LCAyMTAsIDE5OCwgNTgsIDIxMCwgMTk3LCA1OCwgMjEwLCAxOTUsIDU4LCAyMTAsIAorICAgIDE5NCwgNTgsIDIxMCwgMTkzLCA1OCwgMjEwLCAxOTIsIDU4LCAyMTAsIDE5MSwgNTgsIDIxMCwgMTkwLCA1OCwgMjEwLCAKKyAgICAxODksIDU4LCAyMTAsIDE4OCwgNTgsIDIxMCwgMTg3LCA1OCwgMjEwLCAxODYsIDU4LCAyMTAsIDE4NCwgNTgsIDIxMCwgCisgICAgMTgzLCA1OCwgMjEwLCAxODIsIDU4LCAyMTAsIDE4MSwgNTgsIDIxMCwgMTgwLCA1OCwgMjEwLCAxNzksIDU4LCAyMTAsIAorICAgIDE3OCwgNTgsIDIxMCwgMTc3LCA1OCwgMjEwLCAxNzYsIDU4LCAyMTAsIDE3NSwgNTgsIDIxMSwgMTcyLCA1OCwgMjExLCAKKyAgICAxNzEsIDU4LCAyMTEsIDE3MCwgNTgsIDIxMSwgMTY5LCA1OCwgMjExLCAxNjgsIDU4LCAyMTEsIDE2NywgNTgsIDIxMSwgCisgICAgMTY2LCA1OCwgMjExLCAxNjUsIDU4LCAyMTEsIDE2NCwgNTgsIDIxMSwgMTYzLCA1OCwgMjExLCAxNjEsIDU4LCAyMTEsIAorICAgIDE2MCwgNTgsIDIxMSwgMTU5LCA1OCwgMjExLCAxNTgsIDU4LCAyMTEsIDE1NywgNTgsIDIxMSwgMTU2LCA1OCwgMjExLCAKKyAgICAxNTUsIDU4LCAyMTEsIDE1NCwgNTgsIDIxMSwgMTUzLCA1OCwgMjExLCAxNTIsIDU4LCAyMTEsIDE1MCwgNTgsIDIxMSwgCisgICAgMTQ5LCA1OCwgMjExLCAxNDgsIDU4LCAyMTEsIDE0NywgNTgsIDIxMSwgMTQ2LCA1OCwgMjExLCAxNDUsIDU4LCAyMTEsIAorICAgIDE0NCwgNTgsIDIxMSwgMTQzLCA1OCwgMjExLCAxNDIsIDU4LCAyMTEsIDE0MSwgNTgsIDIxMSwgMTM5LCA1OCwgMjExLCAKKyAgICAxMzgsIDU4LCAyMTEsIDEzNywgNTgsIDIxMSwgMTM2LCA1OCwgMjExLCAxMzUsIDU4LCAyMTEsIDEzNCwgNTgsIDIxMSwgCisgICAgMTMzLCA1OCwgMjExLCAxMzIsIDU4LCAyMTEsIDEzMSwgNTgsIDIxMSwgMTMwLCA1OCwgMjExLCAxMjgsIDU4LCAyMTEsIAorICAgIDEyNywgNTgsIDIxMSwgMTI2LCA1OCwgMjExLCAxMjUsIDU4LCAyMTEsIDEyNCwgNTgsIDIxMSwgMTIzLCA1OCwgMjExLCAKKyAgICAxMjIsIDU4LCAyMTEsIDEyMSwgNTgsIDIxMSwgMTIwLCA1OCwgMjExLCAxMTksIDU4LCAyMTEsIDExNywgNTgsIDIxMSwgCisgICAgMTE2LCA1OCwgMjExLCAxMTUsIDU4LCAyMTEsIDExNCwgNTgsIDIxMSwgMTEzLCA1OCwgMjExLCAxMTIsIDU4LCAyMTEsIAorICAgIDExMSwgNTgsIDIxMSwgMTEwLCA1OCwgMjExLCAxMDksIDU4LCAyMTEsIDEwOCwgNTgsIDIxMSwgMTA2LCA1OCwgMjExLCAKKyAgICAxMDUsIDU4LCAyMTEsIDEwNCwgNTgsIDIxMSwgMTAzLCA1OCwgMjExLCAxMDIsIDU4LCAyMTEsIDEwMSwgNTgsIDIxMSwgCisgICAgMTAwLCA1OCwgMjExLCA5OSwgNTgsIDIxMSwgOTgsIDU4LCAyMTEsIDk3LCA1OCwgMjExLCA5NSwgNTgsIDIxMSwgOTQsIDU4LCAKKyAgICAyMTEsIDkzLCA1OCwgMjExLCA5MiwgNTgsIDIxMSwgOTEsIDU4LCAyMTEsIDkwLCA1OCwgMjExLCA4OSwgNTgsIDIxMSwgODgsIAorICAgIDU4LCAyMTEsIDg3LCA1OCwgMjExLCA4NiwgNTgsIDIxMSwgODQsIDU4LCAyMTEsIDgzLCA1OCwgMjExLCA4MiwgNTgsIDIxMSwgCisgICAgODEsIDU4LCAyMTEsIDgwLCA1OCwgMjExLCA3OSwgNTgsIDIxMSwgNzgsIDU4LCAyMTEsIDc3LCA1OCwgMjExLCA3NiwgNTgsIAorICAgIDIxMSwgNzUsIDU4LCAyMTEsIDczLCA1OCwgMjExLCA3MiwgNTgsIDIxMSwgNzEsIDU4LCAyMTEsIDcwLCA1OCwgMjExLCA2OSwgCisgICAgNTgsIDIxMSwgNjgsIDU4LCAyMTEsIDY3LCA1OCwgMjExLCA2NiwgNTgsIDIxMSwgNjUsIDU4LCAyMTEsIDY0LCA1OCwgMjExLCAKKyAgICA2MSwgNTgsIDIxMSwgNjAsIDU4LCAyMTEsIDU5LCA1OCwgMjExLCA1OCwgNTgsIDIxMSwgNTcsIDU4LCAyMTEsIDU2LCA1OCwgCisgICAgMjExLCA1NSwgNTgsIDIxMSwgNTQsIDU4LCAyMTEsIDUzLCA1OCwgMjExLCA1MiwgNTgsIDIxMSwgNTAsIDU4LCAyMTEsIDQ5LCAKKyAgICA1OCwgMjExLCA0OCwgNTgsIDIxMSwgNDcsIDU4LCAyMTEsIDQ2LCA1OCwgMjExLCA0NSwgNTgsIDIxMSwgNDQsIDU4LCAyMTEsIAorICAgIDQzLCA1OCwgMjExLCA0MiwgNTgsIDIxMSwgNDEsIDU4LCAyMTEsIDM5LCA1OCwgMjExLCAzOCwgNTgsIDIxMSwgMzcsIDU4LCAKKyAgICAyMTEsIDM2LCA1OCwgMjExLCAzNSwgNTgsIDIxMSwgMzQsIDU4LCAyMTEsIDMzLCA1OCwgMjExLCAzMiwgNTgsIDIxMSwgMzEsIAorICAgIDU4LCAyMTEsIDMwLCA1OCwgMjExLCAyOCwgNTgsIDIxMSwgMjcsIDU4LCAyMTEsIDI2LCA1OCwgMjExLCAyNSwgNTgsIDIxMSwgCisgICAgMjQsIDU4LCAyMTEsIDIzLCA1OCwgMjExLCAyMiwgNTgsIDIxMSwgMjEsIDU4LCAyMTEsIDIwLCA1OCwgMjExLCAxOSwgNTgsIAorICAgIDIxMSwgMTcsIDU4LCAyMTEsIDE2LCA1OCwgMjExLCAxNSwgNTgsIDIxMSwgMTQsIDU4LCAyMTEsIDEzLCA1OCwgMjExLCAxMiwgCisgICAgNTgsIDIxMSwgMTEsIDU4LCAyMTEsIDEwLCA1OCwgMjExLCA5LCA1OCwgMjExLCA4LCA1OCwgMjExLCA2LCA1OCwgMjExLCA1LCAKKyAgICA1OCwgMjExLCA0LCA1OCwgMjExLCAzLCA1OCwgMjExLCAyLCA1OCwgMjExLCAxLCA1OCwgMjExLCAwLCAyMTgsIDk3LCAyMTgsIAorICAgIDk5LCAyMDgsIDEwNSwgNzYsIDIzNCwgMTMzLCAyMDksIDE5LCAyMDgsIDEwNSwgNzYsIDIwNiwgMTI2LCAyMDgsIDI2LCAKKyAgICAyMzgsIDE3MSwgNzYsIDIwNiwgMTI2LCAyMzgsIDcxLCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE4LCAyMzgsIDEzNCwgMjM4LCAKKyAgICAxNTgsIDIzOCwgMTU5LCAyNTEsIDI0MywgMjUxLCAyNDQsIDI1MSwgMTM5LCAyNDgsIDIzMywgMjQ5LCAxMjMsIDI0OCwgNDIsIAorICAgIDE3MSwgMjA3LCAxOSwgMjMzLCAxNzcsIDIwNywgMTksIDIzMywgMTAyLCAyMDcsIDI0LCAyMjQsIDE3NywgMjM3LCAxMzgsIAorICAgIDIyMCwgOCwgMjI0LCAxNzYsIDIzOCwgMTcxLCA3NiwgMjI0LCAxNzYsIDIyNCwgMjI1LCAyMTksIDQ3LCAyMzgsIDEzNywgCisgICAgMjI0LCAxNzcsIDIwNywgMTksIDgzLCAyMDcsIDE5LCAyMDEsIDE2OCwgMjM2LCAyNDIsIDIzNywgMTM4LCAyMzcsIDExNiwgCisgICAgMjQ3LCAxMjEsIDIxMywgMTA5LCAyNDIsIDI1MiwgMjEwLCAyOSwgMjE2LCAyNTQsIDIyNCwgMTAyLCAxMDIsIDIwOSwgMjksIAorICAgIDIxMCwgMjksIDIyOCwgMTE3LCAyMjQsIDEwMiwgMTk5LCA4MSwgMjA5LCAxODIsIDI0MSwgMjM5LCAyMjQsIDE2NywgMjM4LCAKKyAgICA5NiwgMjQwLCAyMjEsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDIsIDI0MSwgMjI4LCAyNDEsIDEwNywgMjQzLCAzNCwgMTA1LCAKKyAgICAyNDEsIDIyNywgMjQxLCAxMDcsIDI0MywgMzQsIDE0NywgMjQxLCAyMjYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDksIDI0MSwgCisgICAgMjI1LCAxODksIDI1MSwgMjQzLCAyMjAsIDE0MCwgMjA3LCAxMDksIDIyOCwgMTgwLCAyMDcsIDExMywgMjM4LCAxNzEsIDc2LCAKKyAgICAyMDUsIDExOSwgMjQ4LCAxMzQsIDIzOCwgNzgsIDI0NywgMTU2LCAyNDcsIDE1OCwgMjM4LCAxNzEsIDc2LCAyMjIsIDY1LCAKKyAgICAyMzgsIDEzNSwgMjA4LCAwLCAyMDgsIDE3LCAyMzgsIDk2LCAyMzgsIDk3LCAyMjgsIDkyLCAyMTAsIDE1NSwgMTQ5LCAyMzcsIAorICAgIDk3LCAyMTAsIDE1NCwgMjM2LCAxOTMsIDIyOCwgOTIsIDIxMCwgMTU1LCAxNDcsIDIzNSwgNTgsIDIxMCwgMTU0LCAyMzUsIAorICAgIDU1LCAyMjgsIDkyLCAyMTAsIDE1NSwgMTA1LCAyMTMsIDE4MSwgMjEwLCAxNTQsIDIxMiwgMTgwLCAyMjgsIDkyLCAyMTAsIAorICAgIDE1NSwgMTAyLCAyMDMsIDI0MCwgMjEwLCAxNTQsIDIwMywgMTk3LCAyMDgsIDI0NywgMjQxLCAxNDYsIDI0MSwgMTQ4LCAKKyAgICAyMTYsIDE5OSwgMjQ3LCAyMCwgMjE2LCAyMDEsIDEyMiwgMjE3LCAxMjgsIDIxNSwgMTgsIDIzMywgMTgwLCAyNDgsIDYxLCAKKyAgICAyMTYsIDE3LCAyMzQsIDk5LCAyNDgsIDc0LCAyMTgsIDI0MiwgMjQ4LCA2MSwgMjM0LCA5OSwgMjIwLCAxMDMsIDIyOCwgCisgICAgMTAzLCAyMjgsIDEwNSwgMjIwLCAyLCAyMjQsIDE3NiwgMjIwLCAyNSwgMjA4LCAxMDUsIDc2LCAyMTEsIDE3NywgMjUwLCAKKyAgICAyMjgsIDIwOCwgMTc5LCAyMzgsIDE3MSwgNzYsIDIxMSwgMTc3LCAyNTAsIDIyOCwgMjM4LCA5OSwgMTcxLCAyMDcsIDIwLCAKKyAgICAyMTAsIDE0MSwgMjMzLCAxNzcsIDIwNywgMjAsIDIxMCwgMTQxLCAyMzMsIDk5LCAxNzEsIDIwNywgMjAsIDMsIDIyNywgCisgICAgMTMwLCAyMzMsIDE3NywgMjA3LCAyMCwgMywgMjI3LCAxMzAsIDIzMywgMTAwLCAyMjQsIDE3NywgMjA3LCAyMCwgMjEwLCAKKyAgICAxNDEsIDgzLCAyMDcsIDIwLCAyMTAsIDE0MSwgMjAxLCAxNjcsIDIxNiwgMTA4LCAyMjQsIDE3NywgMjM2LCAyMzMsIDIxNiwgCisgICAgMTA4LCAyMjQsIDE3NywgMjM5LCAxNjcsIDIxNSwgMTI0LCAyMTYsIDEwOCwgMjI0LCAxNzcsIDI0OSwgMTIyLCAyMTYsIAorICAgIDEwOCwgMjI0LCAxNzcsIDIwMywgMjI4LCAyMTUsIDExOSwgMjEzLCAxMDYsIDIyNCwgMTc3LCAyMzcsIDEzOCwgMjEzLCAKKyAgICAxMDYsIDIyOCwgMTAzLCAyMTMsIDg4LCAyMDksIDEzOSwgMjEwLCAyOSwgMTA1LCAyMDksIDEzNiwgMjA4LCAxODEsIDIwOSwgCisgICAgMTM5LCAyMTAsIDI5LCAxNDcsIDIwOSwgMTM1LCAyMDgsIDE4MCwgMjQxLCAxMDcsIDI0MywgMzQsIDIwOCwgNDksIDI0MSwgCisgICAgMjIzLCAyMTUsIDQsIDIwMywgMTk2LCAxMDIsIDIxNSwgNCwgMjAzLCAxOTQsIDIxNCwgMjIzLCAyMTUsIDQsIDIwMywgMTk2LCAKKyAgICAxMDUsIDIxNSwgNCwgMjAzLCAxOTMsIDIxNCwgMjIyLCAyMTAsIDE0MiwgMjA1LCAxMTcsIDIwOCwgMTA0LCAyMDgsIDMyLCAKKyAgICAyNDcsIDE1NywgMjQ3LCAyMCwgMjQ3LCA5NSwgMjIyLCAyNCwgMjAxLCAxMDYsIDIyMCwgMjMyLCAyMDgsIDEwNSwgNzYsIAorICAgIDIzNSwgNDMsIDI1MCwgMjI4LCAyMDgsIDEwNSwgNzYsIDIxNCwgMjQxLCAyNTAsIDIyOCwgMjA4LCAyNDYsIDIzOCwgMTcxLCAKKyAgICA3NiwgMjM1LCA0MywgMjUwLCAyMjgsIDIzOCwgMTcxLCA3NiwgMjE0LCAyNDEsIDI1MCwgMjI4LCAyMzgsIDEzMiwgMjA4LCAKKyAgICAxMDUsIDc2LCAyMDgsIDQ5LCAyMDksIDUsIDIwOSwgMTM5LCAyMzUsIDc5LCAxNzEsIDIyOCwgNTIsIDIxMCwgMTE5LCAyMDksIAorICAgIDEzOSwgMTcxLCAyMjgsIDUyLCAyMTEsIDIxNywgMjQzLCAzNCwgMjEwLCAxNTEsIDIyOCwgNTIsIDI0MiwgMjE1LCAyMDgsIAorICAgIDUwLCAyMDYsIDE1MiwgMjA4LCAxMjMsIDIxNywgNDUsIDIwNywgOTgsIDI0NiwgNjksIDIxNywgMTMsIDIxNSwgNSwgMjIyLCAKKyAgICAyMywgMjE1LCAxMDksIDI1MSwgOSwgMjE0LCAyNTUsIDI0NiwgNjksIDI1MSwgMjUsIDIyMCwgOTEsIDIwOSwgMTkxLCA4LCAKKyAgICA2LCAxLCAyMzUsIDE5OSwgOCwgNCwgMSwgMjM1LCAxOTksIDI0NywgMzksIDI1MSwgMTE4LCAyMDcsIDEwMywgMjA4LCA2LCAKKyAgICAyNDYsIDgwLCAyMDksIDg2LCAyMjUsIDI4LCAyMjcsIDYzLCAxLCAyMjQsIDEyOSwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgCisgICAgMjM3LCA1LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMzcsIDE1MCwgMjI1LCA3NSwgMSwgMjEzLCAxLCAyMjUsIDc1LCAxLCAKKyAgICAyMjQsIDExMCwgNzksIDEzNCwgMjQ4LCAxNDYsIDIxMCwgNCwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCAyMzYsIAorICAgIDE3MCwgMjM2LCAxNjksIDIzNiwgMTY4LCAyMjAsIDIzNCwgMTk4LCAyNDAsIDE5OCwgMjQxLCAxOTgsIDI0MywgMjI0LCA0NiwgCisgICAgMjEzLCA5LCAyMjQsIDQ4LCAyMTMsIDExLCAyMTYsIDc2LCAyMjQsIDQ1LCAyMTMsIDgsIDIxOSwgMTcsIDIyMSwgMTQwLCAKKyAgICAyMDEsIDIsIDIyNCwgNDcsIDIxMywgMTAsIDIzNiwgMTkyLCAyMTYsIDc1LCAyMDEsIDU0LCAyMzgsIDE5NCwgMjM2LCAxODAsIAorICAgIDIyMSwgMjEwLCAyMTcsIDc5LCAyMDMsIDE5OCwgOTksIDIyMSwgMjEwLCAyNDEsIDI0NSwgOTksIDk4LCAyMDUsIDk3LCA1NSwgCisgICAgMywgNTMsIDgzLCA5NywgODcsIDIwNSwgOTcsIDU1LCAzLCA1MywgODMsIDk3LCAxMSwgNSwgMjI4LCAxMCwgODEsIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjI0LCAyNDcsIDE1OSwgMjAyLCAxNjgsIDIwMiwgNTcsIDIwMSwgMjQ1LCAKKyAgICAyMDEsIDIzNCwgMjAxLCAyMjMsIDIwMSwgMjEyLCAyMDEsIDIwMSwgMjAxLCAxOTAsIDIwMSwgMTc5LCAyMDIsIDE2NywgCisgICAgMjAyLCAxNTYsIDIwMiwgMTQ1LCAyMDIsIDEzNCwgMjAyLCAxMjMsIDIwMiwgMTEyLCAyMDIsIDEwMSwgMjQ3LCAyMjgsIAorICAgIDIxNywgMzAsIDgxLCAyNDgsIDExNCwgMTk4LCAyNDIsIDEwLCAyLCAyMTgsIDEwNiwgMjA2LCAxNTUsIDEwLCAyLCAyMTgsIAorICAgIDEwNiwgMTE5LCAyMTgsIDEwNiwgMjQ4LCA0LCAxMTksIDI0OCwgMywgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgODIsIAorICAgIDI0NiwgMTk2LCAyMDMsIDY5LCAyMDIsIDkwLCAyMDIsIDc5LCAyMDIsIDY4LCAyMDIsIDU2LCAyMDIsIDQ1LCAyMDIsIDM0LCAKKyAgICAyMDIsIDIzLCAyMDIsIDEyLCAyMDIsIDEsIDIwMSwgMjQ5LCAyMDEsIDI0OCwgMjAxLCAyNDcsIDIwMSwgMjQ2LCAyMDEsIAorICAgIDI0NCwgMjAxLCAyNDMsIDIwMSwgMjQyLCAyMDEsIDI0MSwgMjAxLCAyNDAsIDIwMSwgMjM5LCAyMDEsIDIzOCwgMjAxLCAKKyAgICAyMzcsIDIwMSwgMjM2LCAyMDEsIDIzNSwgMjAxLCAyMzMsIDIwMSwgMjMyLCAyMDEsIDIzMSwgMjAxLCAyMzAsIDIwMSwgCisgICAgMjI5LCAyMDEsIDIyOCwgMjAxLCAyMjcsIDIwMSwgMjI2LCAyMDEsIDIyNSwgMjAxLCAyMjQsIDIwMSwgMjIyLCAyMDEsIAorICAgIDIyMSwgMjAxLCAyMjAsIDIwMSwgMjE5LCAyMDEsIDIxOCwgMjAxLCAyMTcsIDIwMSwgMjE2LCAyMDEsIDIxNSwgMjAxLCAKKyAgICAyMTQsIDIwMSwgMjEzLCAyMDEsIDIxMSwgMjAxLCAyMTAsIDIwMSwgMjA5LCAyMDEsIDIwOCwgMjAxLCAyMDcsIDIwMSwgCisgICAgMjA2LCAyMDEsIDIwNSwgMjAxLCAyMDQsIDIwMSwgMjAzLCAyMDEsIDIwMiwgMjAxLCAyMDAsIDIwMSwgMTk5LCAyMDEsIAorICAgIDE5OCwgMjAxLCAxOTcsIDIwMSwgMTk2LCAyMDEsIDE5NSwgMjAxLCAxOTQsIDIwMSwgMTkzLCAyMDEsIDE5MiwgMjAxLCAKKyAgICAxOTEsIDIwMSwgMTg5LCAyMDEsIDE4OCwgMjAxLCAxODcsIDIwMSwgMTg2LCAyMDEsIDE4NSwgMjAxLCAxODQsIDIwMSwgCisgICAgMTgzLCAyMDEsIDE4MiwgMjAxLCAxODEsIDIwMSwgMTgwLCAyMDEsIDE3OCwgMjAxLCAxNzcsIDIwMSwgMTc2LCAyMDEsIAorICAgIDE3NSwgMjAxLCAxNzQsIDIwMSwgMTczLCAyMDEsIDE3MiwgMjAxLCAxNzEsIDIwMSwgMTcwLCAyMDEsIDE2OSwgMjAyLCAKKyAgICAxNjYsIDIwMiwgMTY1LCAyMDIsIDE2NCwgMjAyLCAxNjMsIDIwMiwgMTYyLCAyMDIsIDE2MSwgMjAyLCAxNjAsIDIwMiwgCisgICAgMTU5LCAyMDIsIDE1OCwgMjAyLCAxNTcsIDIwMiwgMTU1LCAyMDIsIDE1NCwgMjAyLCAxNTMsIDIwMiwgMTUyLCAyMDIsIAorICAgIDE1MSwgMjAyLCAxNTAsIDIwMiwgMTQ5LCAyMDIsIDE0OCwgMjAyLCAxNDcsIDIwMiwgMTQ2LCAyMDIsIDE0NCwgMjAyLCAKKyAgICAxNDMsIDIwMiwgMTQyLCAyMDIsIDE0MSwgMjAyLCAxNDAsIDIwMiwgMTM5LCAyMDIsIDEzOCwgMjAyLCAxMzcsIDIwMiwgCisgICAgMTM2LCAyMDIsIDEzNSwgMjAyLCAxMzMsIDIwMiwgMTMyLCAyMDIsIDEzMSwgMjAyLCAxMzAsIDIwMiwgMTI5LCAyMDIsIAorICAgIDEyOCwgMjAyLCAxMjcsIDIwMiwgMTI2LCAyMDIsIDEyNSwgMjAyLCAxMjQsIDIwMiwgMTIyLCAyMDIsIDEyMSwgMjAyLCAKKyAgICAxMjAsIDIwMiwgMTE5LCAyMDIsIDExOCwgMjAyLCAxMTcsIDIwMiwgMTE2LCAyMDIsIDExNSwgMjAyLCAxMTQsIDIwMiwgCisgICAgMTEzLCAyMDIsIDExMSwgMjAyLCAxMTAsIDIwMiwgMTA5LCAyMDIsIDEwOCwgMjAyLCAxMDcsIDIwMiwgMTA2LCAyMDIsIAorICAgIDEwNSwgMjAyLCAxMDQsIDIwMiwgMTAzLCAyMDIsIDEwMiwgMjAyLCAxMDAsIDIwMiwgOTksIDIwMiwgOTgsIDIwMiwgOTcsIAorICAgIDIwMiwgOTYsIDIwMiwgOTUsIDIwMiwgOTQsIDIwMiwgOTMsIDIwMiwgOTIsIDIwMiwgOTEsIDIwMiwgODksIDIwMiwgODgsIAorICAgIDIwMiwgODcsIDIwMiwgODYsIDIwMiwgODUsIDIwMiwgODQsIDIwMiwgODMsIDIwMiwgODIsIDIwMiwgODEsIDIwMiwgODAsIAorICAgIDIwMiwgNzgsIDIwMiwgNzcsIDIwMiwgNzYsIDIwMiwgNzUsIDIwMiwgNzQsIDIwMiwgNzMsIDIwMiwgNzIsIDIwMiwgNzEsIAorICAgIDIwMiwgNzAsIDIwMiwgNjksIDIwMiwgNjcsIDIwMiwgNjYsIDIwMiwgNjUsIDIwMiwgNjQsIDIwMiwgNjMsIDIwMiwgNjIsIAorICAgIDIwMiwgNjEsIDIwMiwgNjAsIDIwMiwgNTksIDIwMiwgNTgsIDIwMiwgNTUsIDIwMiwgNTQsIDIwMiwgNTMsIDIwMiwgNTIsIAorICAgIDIwMiwgNTEsIDIwMiwgNTAsIDIwMiwgNDksIDIwMiwgNDgsIDIwMiwgNDcsIDIwMiwgNDYsIDIwMiwgNDQsIDIwMiwgNDMsIAorICAgIDIwMiwgNDIsIDIwMiwgNDEsIDIwMiwgNDAsIDIwMiwgMzksIDIwMiwgMzgsIDIwMiwgMzcsIDIwMiwgMzYsIDIwMiwgMzUsIAorICAgIDIwMiwgMzMsIDIwMiwgMzIsIDIwMiwgMzEsIDIwMiwgMzAsIDIwMiwgMjksIDIwMiwgMjgsIDIwMiwgMjcsIDIwMiwgMjYsIAorICAgIDIwMiwgMjUsIDIwMiwgMjQsIDIwMiwgMjIsIDIwMiwgMjEsIDIwMiwgMjAsIDIwMiwgMTksIDIwMiwgMTgsIDIwMiwgMTcsIAorICAgIDIwMiwgMTYsIDIwMiwgMTUsIDIwMiwgMTQsIDIwMiwgMTMsIDIwMiwgMTEsIDIwMiwgMTAsIDIwMiwgOSwgMjAyLCA4LCAKKyAgICAyMDIsIDcsIDIwMiwgNiwgMjAyLCA1LCAyMDIsIDQsIDIwMiwgMywgMjAyLCAyLCAyMDIsIDAsIDIwMSwgMjU1LCAyMDEsIAorICAgIDI1NCwgMjAxLCAyNTMsIDIwMSwgMjUyLCAyMDEsIDI1MSwgMjAxLCAyNTAsIDgsIDYsIDEsIDM1LCAzLCAyMjIsIDIyOSwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgODMsIAorICAgIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAKKyAgICAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIAorICAgIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIAorICAgIDIyMiwgMjI4LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAKKyAgICAxNDcsIDI2LCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDI0NywgMTI1LCA4LCA2LCAxLCAyMzMsIAorICAgIDE5LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMjMzLCAxOSwgMywgNzMsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAyMjAsIDAsIDMsIDIwNSwgMjQxLCA1NiwgCisgICAgOCwgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIAorICAgIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgODMsIAorICAgIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgCisgICAgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDYsIAorICAgIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIAorICAgIDYsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIAorICAgIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIAorICAgIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE5NywgMywgNzMsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDczLCA4OCwgCisgICAgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCA3MywgODgsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgNzMsIDg4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgCisgICAgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDczLCA4OCwgMjYsIDE2OSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgCisgICAgNiwgMSwgMjI3LCAyNTIsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAKKyAgICAyMjMsIDI0NCwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjE0LCAzMywgCisgICAgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIAorICAgIDI1MSwgMjIyLCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxNzYsIDE2MywgMywgMjM1LCA3MywgOCwgNCwgMSwgMTc2LCAxNjMsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgMTY5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAKKyAgICAxNjksIDMsIDE2OSwgOCwgNCwgMSwgMjExLCAyMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIxMSwgMjE5LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDIzMywgMTg2LCAyMTEsIDIxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxODYsIDIxMSwgMjE5LCAzLCAKKyAgICAxNjksIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyNTEsIDE0MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIwMSwgNzIsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg3LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjE3LCAxMjEsIDksIDIxMCwgMTUxLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCA2NiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgMjExLCA5LCAKKyAgICAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgNzIsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAKKyAgICAzLCAyNTEsIDIyMSwgOSwgMjEwLCAxNTEsIDIxOCwgMjI4LCAzLCAyMjYsIDI1MiwgMTg1LCAxLCAyMjYsIDE4MiwgNDUsIAorICAgIDExMSwgMjI3LCAxMTgsIDQ1LCAxMTEsIDIxOSwgMjU1LCA0NSwgMTExLCAyNDcsIDIyMywgNDUsIDExMSwgMjE4LCA2MiwgCisgICAgNDUsIDExMSwgMjA1LCAwLCA0NSwgMTExLCAyMTksIDIyLCA0NSwgMTExLCAyMDcsIDgzLCA0NSwgMTExLCAyMjAsIDIxNCwgCisgICAgNDUsIDExMSwgMjE2LCAyMjYsIDQ1LCAxMTEsIDIyMywgMjQzLCA0NSwgMTExLCAyMDAsIDEyMywgNDUsIDExMSwgMTQ2LCAKKyAgICA0NSwgMTExLCAxNTYsIDQ1LCAxMTEsIDIwMywgMTY4LCA0NSwgMTExLCAyMjQsIDEzMCwgNDUsIDExMSwgMjI0LCAxMzksIAorICAgIDQ1LCAxMTEsIDIxMiwgMjE2LCA0NSwgMTExLCAyMTksIDQsIDQ1LCAxMTEsIDIyNywgMjUxLCA0NSwgMTExLCAyMTAsIDExNiwgCisgICAgNDUsIDExMSwgMjA4LCAxODIsIDQ1LCAxMTEsIDIxMiwgMTIyLCA0NSwgMTExLCAyMzQsIDI0NywgNDUsIDExMSwgMjI2LCAKKyAgICAzMCwgNDUsIDUsIDIyNywgMTA1LCA0NSwgNSwgMjI2LCAxNjMsIDQ1LCA1LCAyMjYsIDE1MCwgNDUsIDUsIDIyNiwgMTUsIAorICAgIDQ1LCA1LCAyMjUsIDIzNiwgNDUsIDUsIDIyNywgOCwgNDUsIDUsIDIyNywgNSwgNDUsIDUsIDIyNywgODIsIDQ1LCA1LCAKKyAgICAyMjYsIDg4LCA0NSwgNSwgMjI2LCA2OCwgNDUsIDUsIDIyNywgMjYsIDQ1LCA1LCAyMTksIDI1MiwgNDUsIDUsIDIxOSwgCisgICAgMjAxLCA0NSwgNSwgMjE5LCAxOTcsIDQ1LCA1LCAyMTksIDE2NiwgNDUsIDUsIDIxOSwgMTU4LCA0NSwgNSwgMjE5LCAyNDAsIAorICAgIDQ1LCA1LCAyMTksIDIzOCwgNDUsIDUsIDIxOSwgMjQ5LCA0NSwgNSwgMjE5LCAxNzgsIDQ1LCA1LCAyMTksIDE3MywgNDUsIAorICAgIDUsIDIxOSwgMjQyLCA0NSwgNSwgMjQ3LCAxODksIDQ1LCA1LCAyNDYsIDE3MywgNDUsIDUsIDI0NiwgMTYzLCA0NSwgNSwgCisgICAgMjQyLCAyMTQsIDQ1LCA1LCAyNDIsIDE3OCwgNDUsIDUsIDI0NywgNzYsIDQ1LCA1LCAyNDcsIDY4LCA0NSwgNSwgMjQ3LCAKKyAgICAxNzgsIDQ1LCA1LCAyNDYsIDkxLCA0NSwgNSwgMjQzLCAzMCwgNDUsIDUsIDI0NywgMTA5LCA0NSwgNSwgMjE4LCA1OSwgNDUsIAorICAgIDUsIDIxOCwgNDEsIDQ1LCA1LCAyMTgsIDM2LCA0NSwgNSwgMjE4LCAxOSwgNDUsIDUsIDIxOCwgMTEsIDQ1LCA1LCAyMTgsIAorICAgIDUwLCA0NSwgNSwgMjE4LCA0OSwgNDUsIDUsIDIxOCwgNTYsIDQ1LCA1LCAyMTgsIDI2LCA0NSwgNSwgMjE4LCAyMywgNDUsIAorICAgIDUsIDIxOCwgNTMsIDQ1LCA1LCAyMDQsIDI1MiwgNDUsIDUsIDIwNCwgMjMyLCA0NSwgNSwgMjA0LCAyMzEsIDQ1LCA1LCAKKyAgICAyMDQsIDIyMCwgNDUsIDUsIDIwNCwgMjE3LCA0NSwgNSwgMjA0LCAyNDgsIDQ1LCA1LCAyMDQsIDI0NywgNDUsIDUsIDIwNCwgCisgICAgMjUxLCA0NSwgNSwgMjA0LCAyMzAsIDQ1LCA1LCAyMDQsIDIyOSwgNDUsIDUsIDIwNCwgMjUwLCA0NSwgNSwgMjE5LCAyMCwgCisgICAgNDUsIDUsIDIxOSwgNiwgNDUsIDUsIDIxOSwgNSwgNDUsIDUsIDIxOCwgMjQ1LCA0NSwgNSwgMjE4LCAyNDQsIDQ1LCA1LCAKKyAgICAyMTksIDE2LCA0NSwgNSwgMjE5LCAxNSwgNDUsIDUsIDIxOSwgMTksIDQ1LCA1LCAyMTgsIDI0NywgNDUsIDUsIDIxOCwgCisgICAgMjQ2LCA0NSwgNSwgMjE5LCAxOCwgNDUsIDUsIDIwNywgMzIsIDQ1LCA1LCAyMDYsIDE1LCA0NSwgNSwgMjA1LCAyNTUsIDQ1LCAKKyAgICA1LCAyMDQsIDIxNSwgNDUsIDUsIDIwNCwgMTc2LCA0NSwgNSwgMjA2LCAyMDEsIDQ1LCA1LCAyMDYsIDE5MCwgNDUsIDUsIAorICAgIDIwNywgOCwgNDUsIDUsIDEzOCwgNDUsIDUsIDIwNSwgMTYxLCA0NSwgNSwgMjA2LCAyMjEsIDQ1LCA1LCAyMjAsIDE1NywgCisgICAgNDUsIDUsIDIxOSwgMTUwLCA0NSwgNSwgMjE5LCAxMjUsIDQ1LCA1LCAyMTgsIDEzMywgNDUsIDUsIDIxOCwgNzQsIDQ1LCA1LCAKKyAgICAyMjAsIDM0LCA0NSwgNSwgMjIwLCAyOSwgNDUsIDUsIDIyMCwgMTQzLCA0NSwgNSwgMjE4LCAyNDEsIDQ1LCA1LCAyMTgsIAorICAgIDIyOSwgNDUsIDUsIDIyMCwgMTE2LCA0NSwgNSwgMjE2LCAyMTAsIDQ1LCA1LCAyMTUsIDIwNCwgNDUsIDUsIDIxNSwgMTY2LCAKKyAgICA0NSwgNSwgMjE0LCAyMjQsIDQ1LCA1LCAyMTQsIDE5MCwgNDUsIDUsIDIxNiwgNzMsIDQ1LCA1LCAyMTYsIDYxLCA0NSwgNSwgCisgICAgMjE2LCAxOTAsIDQ1LCA1LCAyMTUsIDEwNiwgNDUsIDUsIDIxNSwgODEsIDQ1LCA1LCAyMTYsIDg3LCA0NSwgNSwgMjIyLCAKKyAgICAyMzMsIDQ1LCA1LCAyMjEsIDIxMSwgNDUsIDUsIDIyMSwgMTgxLCA0NSwgNSwgMjIxLCA0MSwgNDUsIDUsIDIyMCwgMjQzLCAKKyAgICA0NSwgNSwgMjIyLCA3NiwgNDUsIDUsIDIyMiwgNjQsIDQ1LCA1LCAyMjIsIDE5OCwgNDUsIDUsIDIyMSwgMTM2LCA0NSwgNSwgCisgICAgMjIxLCA4NywgNDUsIDUsIDIyMiwgMTIzLCA0NSwgNSwgMjAwLCAxMDksIDQ1LCA1LCAyMDAsIDksIDQ1LCA1LCAyMDAsIDAsIAorICAgIDQ1LCA1LCAxOTksIDIxMSwgNDUsIDUsIDE5OSwgMTc5LCA0NSwgNSwgMjAwLCA1MSwgNDUsIDUsIDIwMCwgNDgsIDQ1LCA1LCAKKyAgICAyMDAsIDg4LCA0NSwgNSwgMTk5LCAyNDUsIDQ1LCA1LCAxOTksIDIzMCwgNDUsIDUsIDIwMCwgNjEsIDQ1LCA1LCAyMTMsIAorICAgIDI0OCwgNDUsIDUsIDIxMywgODgsIDQ1LCA1LCAyMTMsIDMzLCA0NSwgNSwgMjEyLCAxNzUsIDQ1LCA1LCAyMTIsIDE0MywgCisgICAgNDUsIDUsIDIxMywgMTkwLCA0NSwgNSwgMjEzLCAxNjcsIDQ1LCA1LCAyMTMsIDIyOSwgNDUsIDUsIDIxMywgMSwgNDUsIDUsIAorICAgIDIxMiwgMjM4LCA0NSwgNSwgMjEzLCAxOTksIDQ1LCA1LCAyMjUsIDE3NSwgNDUsIDUsIDIyNCwgMjEwLCA0NSwgNSwgMjI0LCAKKyAgICAxOTIsIDQ1LCA1LCAyMjQsIDQyLCA0NSwgNSwgMjI0LCAxMywgNDUsIDUsIDIyNSwgNDAsIDQ1LCA1LCAyMjUsIDMyLCA0NSwgCisgICAgNSwgMjI1LCAxNDksIDQ1LCA1LCAyMjQsIDExMCwgNDUsIDUsIDIyNCwgNzgsIDQ1LCA1LCAyMjUsIDU4LCA0NSwgNSwgMjAzLCAKKyAgICA4OSwgNDUsIDUsIDIwMiwgMjM0LCA0NSwgNSwgMjAyLCAyMTksIDQ1LCA1LCAyMDEsIDE2NiwgNDUsIDUsIDIwMSwgMTU5LCAKKyAgICA0NSwgNSwgMjAzLCA1OSwgNDUsIDUsIDIwMywgNTQsIDQ1LCA1LCAyMDMsIDg1LCA0NSwgNSwgMjAyLCAxOTMsIDQ1LCA1LCAKKyAgICAyMDIsIDE3OSwgNDUsIDUsIDIwMywgNjUsIDQ1LCA1LCAyMjQsIDEyOCwgNDUsIDUsIDIyNCwgMTIzLCA0NSwgNSwgMjI0LCAKKyAgICAxMjIsIDQ1LCA1LCAyMjQsIDExOSwgNDUsIDUsIDIyNCwgMTE4LCA0NSwgNSwgMjI0LCAxMjUsIDQ1LCA1LCAyMjQsIDEyNCwgCisgICAgNDUsIDUsIDIyNCwgMTI3LCA0NSwgNSwgMjI0LCAxMjEsIDQ1LCA1LCAyMjQsIDEyMCwgNDUsIDUsIDIyNCwgMTI2LCA0NSwgCisgICAgNSwgMjI0LCAxMzcsIDQ1LCA1LCAyMjQsIDEzMiwgNDUsIDUsIDIyNCwgMTMxLCA0NSwgNSwgMjI0LCAxMTUsIDQ1LCA1LCAKKyAgICAyMjQsIDExNCwgNDUsIDUsIDIyNCwgMTM0LCA0NSwgNSwgMjI0LCAxMzMsIDQ1LCA1LCAyMjQsIDEzNiwgNDUsIDUsIDIyNCwgCisgICAgMTE3LCA0NSwgNSwgMjI0LCAxMTYsIDQ1LCA1LCAyMjQsIDEzNSwgNDUsIDUsIDIxMiwgMjE0LCA0NSwgNSwgMjEyLCAyMDMsIAorICAgIDQ1LCA1LCAyMTIsIDIwMiwgNDUsIDUsIDIxMiwgMTk1LCA0NSwgNSwgMjEyLCAxODgsIDQ1LCA1LCAyMTIsIDIxMCwgNDUsIAorICAgIDUsIDIxMiwgMjA5LCA0NSwgNSwgMjEyLCAyMTMsIDQ1LCA1LCAyMTIsIDIwMSwgNDUsIDUsIDIxMiwgMjAwLCA0NSwgNSwgCisgICAgMjEyLCAyMTIsIDQ1LCA1LCAyMTksIDIsIDQ1LCA1LCAyMTgsIDI1MywgNDUsIDUsIDIxOCwgMjUyLCA0NSwgNSwgMjE4LCAKKyAgICAyNDksIDQ1LCA1LCAyMTgsIDI0OCwgNDUsIDUsIDIxOCwgMjU1LCA0NSwgNSwgMjE4LCAyNTQsIDQ1LCA1LCAyMTksIDEsIAorICAgIDQ1LCA1LCAyMTgsIDI1MSwgNDUsIDUsIDIxOCwgMjUwLCA0NSwgNSwgMjE5LCAwLCA0NSwgNSwgMjI3LCAyNDcsIDQ1LCA1LCAKKyAgICAyMjcsIDIwNywgNDUsIDUsIDIyNywgMjAwLCA0NSwgNSwgMjI3LCAxNDcsIDQ1LCA1LCAyMjcsIDEyOCwgNDUsIDUsIDIyNywgCisgICAgMjI3LCA0NSwgNSwgMjI3LCAyMjUsIDQ1LCA1LCAyMjcsIDI0MSwgNDUsIDUsIDIyNywgMTY2LCA0NSwgNSwgMjI3LCAxNTYsIAorICAgIDQ1LCA1LCAyMjcsIDIzNCwgNDUsIDUsIDIxMCwgMTA5LCA0NSwgNSwgMjEwLCAzMywgNDUsIDUsIDIxMCwgMjgsIDQ1LCA1LCAKKyAgICAyMDksIDIyMCwgNDUsIDUsIDIwOSwgMjAzLCA0NSwgNSwgMjEwLCA2NSwgNDUsIDUsIDIxMCwgNjMsIDQ1LCA1LCAyMTAsIAorICAgIDk4LCA0NSwgNSwgMjEwLCA4LCA0NSwgNSwgMjEwLCAyLCA0NSwgNSwgMjEwLCA3NCwgNDUsIDUsIDIwOCwgMTc4LCA0NSwgNSwgCisgICAgMjA4LCAxNDcsIDQ1LCA1LCAyMDgsIDE0MywgNDUsIDUsIDIwOCwgMTM0LCA0NSwgNSwgMjA4LCAxMzEsIDQ1LCA1LCAyMDgsIAorICAgIDE1MywgNDUsIDUsIDIwOCwgMTUyLCA0NSwgNSwgMjA4LCAxNzcsIDQ1LCA1LCAyMDgsIDEzOSwgNDUsIDUsIDIwOCwgMTM4LCAKKyAgICA0NSwgNSwgMjA4LCAxNTUsIDQ1LCA1LCAyMTIsIDYxLCA0NSwgNSwgMjA5LCAxODIsIDQ1LCA1LCAyMDksIDE2MSwgNDUsIDUsIAorICAgIDIwOCwgMjQsIDQ1LCA1LCAyMDcsIDE5MywgNDUsIDUsIDIxMSwgMjAyLCA0NSwgNSwgMjExLCAxOTAsIDQ1LCA1LCAyMTIsIAorICAgIDQ2LCA0NSwgNSwgMjA5LCAyOSwgNDUsIDUsIDIwOSwgMTAsIDQ1LCA1LCAyMTEsIDI0MywgNDUsIDUsIDIzNCwgMjMzLCA0NSwgCisgICAgNSwgMjM0LCA3NSwgNDUsIDUsIDIzNCwgNTQsIDQ1LCA1LCAyMzMsIDk3LCA0NSwgNSwgMjMzLCA3MSwgNDUsIDUsIDIzNCwgCisgICAgMTM5LCA0NSwgNSwgMjM0LCAxMjAsIDQ1LCA1LCAyMzQsIDIyMywgNDUsIDUsIDIzMywgMjA3LCA0NSwgNSwgMjMzLCAxODgsIAorICAgIDQ1LCA1LCAyMzQsIDE1MCwgNDUsIDUsIDIyNiwgMjksIDQ1LCA1LCAyMjYsIDI4LCA0NSwgNSwgMjI2LCAyMywgNDUsIDUsIAorICAgIDIyNiwgMjIsIDQ1LCA1LCAyMjYsIDE5LCA0NSwgNSwgMjI2LCAxOCwgNDUsIDUsIDIyNiwgMjUsIDQ1LCA1LCAyMjYsIDI0LCAKKyAgICA0NSwgNSwgMjI2LCAyNywgNDUsIDUsIDIyNiwgMjEsIDQ1LCA1LCAyMjYsIDIwLCA0NSwgNSwgMjI2LCAyNiwgNDUsIDUsIAorICAgIDIwOSwgMjI3LCAxNDMsIDExMSwgMiwgMjAwLCA3NCwgMTQzLCAxMTEsIDIsIDIxMywgMjE4LCAxNDMsIDExMSwgMiwgMjEzLCAKKyAgICAxMzQsIDExOCwgMSwgMjA0LCAxMDIsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE2MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjI2LCAyMDcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNiwgODgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNiwgMTc4LCAKKyAgICA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTksIDE3OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ3LCAxOTAsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDI0NywgMzcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NiwgOTEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NiwgCisgICAgMjEwLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTgsIDI2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDIsIDU4LCA4NiwgMTExLCAKKyAgICAyLCAyNDYsIDg2LCAyMDQsIDI0MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQwLCAyMTEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIwNCwgMjM2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxODgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIwNywgMzYsIDg2LCAKKyAgICAxMTEsIDIsIDI0NiwgODYsIDIwNiwgMTIyLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxMzgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIwNiwgNjEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOCwgMjQxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDksIDEzNiwgCisgICAgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE1LCAyNDUsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxNSwgMTA2LCA4NiwgMTExLCAyLCAKKyAgICAyNDYsIDg2LCAyMTUsIDIxNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjIxLCAxMzYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDE5OSwgMjQ1LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTMsIDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNCwgMTEwLCA4NiwgCisgICAgMTExLCAyLCAyNDYsIDg2LCAyMDIsIDE5MywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjEwLCAxMTQsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDIwOCwgMTc5LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTIsIDY0LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAxNDQsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE5NCwgODYsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIDE1OSwgODYsIDIyOCwgCisgICAgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjE0LCA5NywgODYsIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjEyLCAxMzEsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxMiwgMTI0LCA4NiwgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIAorICAgIDEzOSwgODYsIDIyLCAyLCAyMTcsIDg2LCA4NiwgMjIsIDIsIDI1MiwgOTksIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMjUzLCAKKyAgICAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDIwMSwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAxNjYsIDE3NywgMSwgMjQ4LCAxODEsIAorICAgIDIxOSwgMjQwLCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDE3OCwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDI1MywgNjksIDEsIAorICAgIDI0OCwgMTgxLCAyMTksIDIwMSwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDE2NiwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDI0MCwgCisgICAgNjksIDEsIDI0OCwgMTgxLCAyMTksIDE3OCwgNjksIDEsIDI1MSwgMTY5LCAyNDcsIDc2LCA2OSwgMSwgMjUxLCAxNjksIAorICAgIDIwNCwgMjE1LCA2OSwgMSwgMjUxLCAxNjksIDEzOCwgNjksIDEsIDI1MSwgMTY5LCAyMTYsIDIyNiwgNjcsIDEsIDIzOCwgCisgICAgMjksIDIzOCwgMjgsIDI0MywgMzgsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM4LCAyOSwgMjQzLCAzOCwgMTUwLCAKKyAgICAxNDgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va19vZmZzZXQxW10gPSB7CkBAIC0xNjUzMywyMCArMTc2NDksMjAgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAKICAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDUyLCA4NywgNTIsIDg4LCAKLSAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDUyLCA5NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA5OCwgOTksIDEwMCwgCi0gICAgMTAxLCAxMDIsIDEwMywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNCwgMTA1LCAxMDYsIAotICAgIDEwNywgMTA4LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICAxMDksIDExMCwgMTExLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgNTIsIDk3LCA1MiwgOTgsIDUyLCA1MiwgNTIsIDk5LCAxMDAsIDEwMSwgCisgICAgMTAyLCAxMDMsIDEwNCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNSwgMTA2LCAxMDcsIAorICAgIDEwOCwgMTA5LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICAxMTAsIDExMSwgMTEyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCAxMTIsIDExMywgMTE0LCAxMTUsIDUyLCA1MiwgNTIsIDExNiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgMTEzLCAxMTQsIDExNSwgMTE2LCA1MiwgNTIsIDUyLCAxMTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOCwgMTE5LCAKKyAgICAxMjAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCAxMTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE4LCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE5LCAxMjAsIAotICAgIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTMxLCA1MiwgMTMyLCAxMzMsIDEzNCwgCi0gICAgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDEyMSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMjIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMjMsIDEyNCwgCisgICAgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzQsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzUsIDEzNiwgNTIsIDUyLCA1MiwgNTIsIDEzNywgNTIsIDEzOCwgMTM5LCAxNDAsIAorICAgIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjU2MCw3ICsxNzY3Niw3IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDIsIDE0MywgMTQ0LCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0OCwgMTQ5LCAxNTAsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3MTcsNyArMTc4MzMsNyBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDUsIDE0NiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE1MSwgMTUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzMxLDggKzE3ODQ3LDggQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NywgMTQ4LCAxNDksIAotICAgIDE1MCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE1MywgMTU0LCAxNTUsIAorICAgIDE1NiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzY4LDEyMTQgKzE3ODg0LDEyMTcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA2LCA5LCAxMSwgMTQsIDE3LCAxOSwgMjEsIDI0LCAyNywgMjksIDMxLCAKICAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU5LCA2MSwgNjQsIDY2LCA2OCwgNzEsIDc0LCAKICAgICA3NywgODAsIDg0LCA4OCwgOTMsIDk4LCAxMDMsIDEwNywgMTEyLCAxMTcsIDEyMiwgMTI2LCAxMzEsIDEzNiwgMTQwLCAxNDUsIAotICAgIDE1MCwgMTU0LCAxNTksIDE2NCwgMTY4LCAxNzIsIDE3NywgMTgxLCAxODYsIDE5MSwgMTk2LCAyMDEsIDIwNiwgMjA5LCAKLSAgICAyMTMsIDIxNiwgMjIwLCAyMjMsIDIyNywgMjMxLCAyMzYsIDI0MSwgMjQ2LCAyNTAsIDI1NSwgMjYwLCAyNjUsIDI2OSwgCi0gICAgMjc0LCAyNzksIDI4MywgMjg4LCAyOTMsIDI5NywgMzAyLCAzMDcsIDMxMSwgMzE1LCAzMjAsIDMyNCwgMzI5LCAzMzQsIAotICAgIDMzOSwgMzQ0LCAzNDksIDM1MywgMzU2LCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MiwgMzY2LCAzNzEsIAotICAgIDM3NCwgMzc3LCAzODAsIDM4MywgMzg2LCAzODksIDM5MSwgMzk0LCA0MDAsIDQwOCwgNDExLCA0MTUsIDQxOCwgNDIwLCAKLSAgICA0MjMsIDQyNiwgNDI5LCA0MzIsIDQzNiwgNDM5LCA0NDIsIDQ0NSwgNDQ3LCA0NTAsIDQ1NiwgNDY0LCA0NzEsIDQ3OCwgCi0gICAgNDg1LCA0OTAsIDQ5NywgNTAzLCA1MTAsIDUxNywgNTI0LCA1MzIsIDUzNywgNTQ1LCA1NTIsIDU1OCwgNTY1LCA1NzIsIAotICAgIDU4MCwgNTg3LCA1OTUsIDYwMywgNjA4LCA2MTYsIDYyMywgNjI5LCA2MzYsIDY0MywgNjUwLCA2NTMsIDY1OSwgNjY2LCAKLSAgICA2NzIsIDY3OSwgNjg2LCA2OTMsIDY5OCwgNzA0LCA3MTEsIDcxNywgNzI0LCA3MzEsIDczOCwgNzQ2LCA3NTEsIDc1OSwgCi0gICAgNzY2LCA3NzIsIDc3OSwgNzg2LCA3OTQsIDgwMSwgODA5LCA4MTcsIDgyMiwgODMwLCA4MzcsIDg0MywgODUwLCA4NTcsIAotICAgIDg2NCwgODY3LCA4NzMsIDg4MCwgODg2LCA4OTMsIDkwMCwgOTA3LCA5MTIsIDkyMCwgOTI3LCA5MzQsIDk0MSwgOTQ4LCAKLSAgICA5NTUsIDk2MiwgOTY5LCA5NzYsIDk4NCwgOTkyLCAxMDAwLCAxMDA4LCAxMDE2LCAxMDI0LCAxMDMyLCAxMDQwLCAxMDQ3LCAKLSAgICAxMDU0LCAxMDYxLCAxMDY4LCAxMDc1LCAxMDgyLCAxMDg5LCAxMDk2LCAxMTAzLCAxMTEwLCAxMTE3LCAxMTI0LCAxMTMyLCAKLSAgICAxMTQwLCAxMTQ4LCAxMTU2LCAxMTY0LCAxMTcyLCAxMTgwLCAxMTg4LCAxMTk2LCAxMjA0LCAxMjExLCAxMjE4LCAxMjI2LCAKLSAgICAxMjM0LCAxMjQyLCAxMjUwLCAxMjU4LCAxMjY2LCAxMjc0LCAxMjgyLCAxMjkwLCAxMjk2LCAxMzAxLCAxMzA2LCAxMzE0LCAKLSAgICAxMzIyLCAxMzMwLCAxMzM4LCAxMzQzLCAxMzUwLCAxMzU3LCAxMzY1LCAxMzczLCAxMzgxLCAxMzg5LCAxMzk4LCAxNDA3LCAKLSAgICAxNDE0LCAxNDIxLCAxNDI4LCAxNDM1LCAxNDQzLCAxNDUxLCAxNDU5LCAxNDY3LCAxNDc4LCAxNDgzLCAxNDg4LCAxNDk1LCAKLSAgICAxNTAyLCAxNTA5LCAxNTE2LCAxNTIzLCAxNTMwLCAxNTM1LCAxNTQwLCAxNTQ3LCAxNTU0LCAxNTYyLCAxNTcwLCAxNTc4LCAKLSAgICAxNTg2LCAxNTkzLCAxNjAwLCAxNjA4LCAxNjE2LCAxNjI0LCAxNjMyLCAxNjQwLCAxNjQ4LCAxNjU2LCAxNjY0LCAxNjcyLCAKLSAgICAxNjgwLCAxNjg3LCAxNjk0LCAxNzAxLCAxNzA4LCAxNzE1LCAxNzIyLCAxNzI5LCAxNzM2LCAxNzQ0LCAxNzUyLCAxNzU5LCAKLSAgICAxNzY2LCAxNzczLCAxNzgwLCAxNzg4LCAxNzk2LCAxODA0LCAxODEyLCAxODIwLCAxODI3LCAxODM0LCAxODQyLCAxODUwLCAKLSAgICAxODU4LCAxODY2LCAxODcxLCAxODc3LCAxODgzLCAxODkwLCAxODk3LCAxOTAyLCAxOTA3LCAxOTEyLCAxOTE5LCAxOTI2LCAKLSAgICAxOTMzLCAxOTQwLCAxOTQ4LCAxOTU2LCAxOTYzLCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg2LCAxOTkzLCAyMDAwLCAyMDA1LCAKLSAgICAyMDEwLCAyMDE1LCAyMDIyLCAyMDI5LCAyMDM2LCAyMDQzLCAyMDUwLCAyMDU3LCAyMDY1LCAyMDc1LCAyMDgzLCAyMDkwLCAKLSAgICAyMDk3LCAyMTAyLCAyMTA3LCAyMTE0LCAyMTIxLCAyMTI1LCAyMTMwLCAyMTM1LCAyMTQwLCAyMTQ4LCAyMTU3LCAyMTY0LCAKLSAgICAyMTcxLCAyMTgwLCAyMTg3LCAyMTk0LCAyMTk5LCAyMjA2LCAyMjEzLCAyMjIwLCAyMjI3LCAyMjM0LCAyMjM5LCAyMjQ2LCAKLSAgICAyMjUzLCAyMjYxLCAyMjY2LCAyMjcxLCAyMjc2LCAyMjg2LCAyMjkwLCAyMjk2LCAyMzAyLCAyMzA4LCAyMzE0LCAyMzIyLCAKLSAgICAyMzM1LCAyMzQzLCAyMzQ4LCAyMzU4LCAyMzYzLCAyMzY4LCAyMzc4LCAyMzgzLCAyMzkwLCAyMzk3LCAyNDA1LCAyNDEzLCAKLSAgICAyNDIwLCAyNDI3LCAyNDM0LCAyNDQxLCAyNDUxLCAyNDYxLCAyNDcwLCAyNDc5LCAyNDg5LCAyNDk5LCAyNTA5LCAyNTE5LCAKLSAgICAyNTI1LCAyNTM1LCAyNTQ1LCAyNTU1LCAyNTY1LCAyNTczLCAyNTgxLCAyNTg4LCAyNTk1LCAyNjAzLCAyNjExLCAyNjE5LCAKLSAgICAyNjI3LCAyNjM0LCAyNjQxLCAyNjUxLCAyNjYxLCAyNjY5LCAyNjc3LCAyNjg1LCAyNjkwLCAyNzAwLCAyNzA1LCAyNzEyLCAKLSAgICAyNzE5LCAyNzI0LCAyNzI5LCAyNzM3LCAyNzQ1LCAyNzU1LCAyNzY1LCAyNzcyLCAyNzc5LCAyNzg4LCAyNzk3LCAyODA1LCAKLSAgICAyODEzLCAyODIyLCAyODMxLCAyODM5LCAyODQ3LCAyODU2LCAyODY1LCAyODc0LCAyODgzLCAyODkzLCAyOTAzLCAyOTExLCAKLSAgICAyOTE5LCAyOTI4LCAyOTM3LCAyOTQ2LCAyOTU1LCAyOTY1LCAyOTc1LCAyOTgzLCAyOTkxLCAzMDAwLCAzMDA5LCAzMDE4LCAKLSAgICAzMDI3LCAzMDM2LCAzMDQ1LCAzMDUwLCAzMDU1LCAzMDYzLCAzMDcxLCAzMDgxLCAzMDg5LCAzMDk0LCAzMDk5LCAzMTA2LCAKLSAgICAzMTEzLCAzMTIwLCAzMTI3LCAzMTM0LCAzMTQxLCAzMTUxLCAzMTYxLCAzMTcxLCAzMTgxLCAzMTg4LCAzMTk1LCAzMjA1LCAKLSAgICAzMjE1LCAzMjIzLCAzMjMxLCAzMjM5LCAzMjQ3LCAzMjU1LCAzMjYyLCAzMjY5LCAzMjc2LCAzMjgyLCAzMjg5LCAzMjk2LCAKLSAgICAzMzAzLCAzMzEyLCAzMzIyLCAzMzMyLCAzMzM5LCAzMzQ2LCAzMzUyLCAzMzU3LCAzMzY0LCAzMzcwLCAzMzc2LCAzMzgzLCAKLSAgICAzMzkwLCAzNDAxLCAzNDExLCAzNDE4LCAzNDI1LCAzNDMyLCAzNDM5LCAzNDQ1LCAzNDUwLCAzNDU3LCAzNDYzLCAzNDY4LCAKLSAgICAzNDc2LCAzNDg0LCAzNDkxLCAzNDk3LCAzNTAyLCAzNTA5LCAzNTE0LCAzNTIxLCAzNTMwLCAzNTM5LCAzNTQ4LCAzNTU1LCAKLSAgICAzNTYxLCAzNTY3LCAzNTcyLCAzNTc5LCAzNTg2LCAzNTkzLCAzNjAwLCAzNjA3LCAzNjEyLCAzNjE3LCAzNjI2LCAzNjM0LCAKLSAgICAzNjQzLCAzNjQ4LCAzNjU1LCAzNjY2LCAzNjczLCAzNjgxLCAzNjkwLCAzNjk2LCAzNzAyLCAzNzA4LCAzNzE1LCAzNzIwLCAKLSAgICAzNzI2LCAzNzM3LCAzNzQ2LCAzNzU1LCAzNzYzLCAzNzcxLCAzNzgxLCAzNzg2LCAzNzkzLCAzODAwLCAzODA1LCAzODE3LCAKLSAgICAzODI2LCAzODM0LCAzODQxLCAzODUwLCAzODU1LCAzODYwLCAzODY3LCAzODc0LCAzODgxLCAzODg4LCAzODk0LCAzOTAzLCAKLSAgICAzOTExLCAzOTE2LCAzOTI0LCAzOTMwLCAzOTM4LCAzOTQ2LCAzOTUyLCAzOTU4LCAzOTY0LCAzOTcxLCAzOTc5LCAzOTg1LCAKLSAgICAzOTkzLCA0MDAwLCA0MDA1LCA0MDEyLCA0MDIwLCA0MDMwLCA0MDM3LCA0MDQ0LCA0MDU0LCA0MDYxLCA0MDY4LCA0MDc4LCAKLSAgICA0MDg1LCA0MDkyLCA0MDk5LCA0MTA1LCA0MTExLCA0MTIxLCA0MTM0LCA0MTM5LCA0MTQ2LCA0MTUxLCA0MTU1LCA0MTYxLCAKLSAgICA0MTcwLCA0MTc3LCA0MTgyLCA0MTg3LCA0MTkxLCA0MTk2LCA0MjAyLCA0MjA2LCA0MjEyLCA0MjE4LCA0MjI0LCA0MjMwLCAKLSAgICA0MjM4LCA0MjQzLCA0MjQ4LCA0MjUzLCA0MjU4LCA0MjY0LCA0MjY2LCA0MjcxLCA0Mjc1LCA0MjgxLCA0Mjg3LCA0MjkzLCAKLSAgICA0Mjk4LCA0MzA1LCA0MzEyLCA0MzE4LCA0MzI1LCA0MzMzLCA0MzQxLCA0MzQ2LCA0MzUxLCA0MzU1LCA0MzYwLCA0MzYyLCAKLSAgICA0MzY0LCA0MzY3LCA0MzY5LCA0MzcyLCA0Mzc3LCA0MzgyLCA0Mzg4LCA0MzkzLCA0Mzk3LCA0NDAxLCA0NDA2LCA0NDE1LCAKLSAgICA0NDIxLCA0NDI2LCA0NDMyLCA0NDM3LCA0NDQzLCA0NDUxLCA0NDU5LCA0NDYzLCA0NDY3LCA0NDcyLCA0NDc4LCA0NDg0LCAKLSAgICA0NDkwLCA0NDk2LCA0NTAxLCA0NTA4LCA0NTE2LCA0NTI0LCA0NTI5LCA0NTM1LCA0NTQyLCA0NTQ5LCA0NTU2LCA0NTYzLCAKLSAgICA0NTY3LCA0NTcyLCA0NTc3LCA0NTgyLCA0NTg3LCA0NTkyLCA0NTk1LCA0NTk4LCA0NjAxLCA0NjA0LCA0NjA3LCA0NjEwLCAKLSAgICA0NjE0LCA0NjE4LCA0NjI0LCA0NjI3LCA0NjMyLCA0NjM4LCA0NjQ0LCA0NjQ3LCA0NjUyLCA0NjU4LCA0NjYyLCA0NjY4LCAKLSAgICA0Njc0LCA0NjgwLCA0Njg2LCA0NjkxLCA0Njk2LCA0NzAxLCA0NzA0LCA0NzEwLCA0NzE1LCA0NzIwLCA0NzI0LCA0NzI5LCAKLSAgICA0NzM1LCA0NzQxLCA0NzQ0LCA0NzQ4LCA0NzUyLCA0NzU2LCA0NzU5LCA0NzYyLCA0NzY3LCA0NzcxLCA0Nzc4LCA0NzgyLCAKLSAgICA0Nzg4LCA0NzkyLCA0Nzk4LCA0ODAyLCA0ODA2LCA0ODEwLCA0ODE1LCA0ODIwLCA0ODI3LCA0ODMzLCA0ODQwLCA0ODQ2LCAKLSAgICA0ODUyLCA0ODU4LCA0ODYxLCA0ODY1LCA0ODY5LCA0ODczLCA0ODc3LCA0ODgyLCA0ODg3LCA0ODkxLCA0ODk1LCA0OTAxLCAKLSAgICA0OTA1LCA0OTA5LCA0OTE0LCA0OTIwLCA0OTI1LCA0OTMxLCA0OTM1LCA0OTQyLCA0OTQ3LCA0OTUxLCA0OTU2LCA0OTYxLCAKLSAgICA0OTY3LCA0OTcwLCA0OTc0LCA0OTc5LCA0OTg0LCA0OTkzLCA0OTk5LCA1MDA0LCA1MDA4LCA1MDEzLCA1MDE3LCA1MDIyLCAKLSAgICA1MDI2LCA1MDMwLCA1MDM1LCA1MDM5LCA1MDQ1LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcwLCA1MDc1LCA1MDgxLCAKLSAgICA1MDg3LCA1MDkzLCA1MDk5LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI3LCA1MTMyLCA1MTM5LCA1MTQ2LCA1MTUwLCAKLSAgICA1MTU2LCA1MTYzLCAwLCAwLCA1MTcwLCA1MTczLCA1MTgyLCA1MTkxLCA1MjAyLCA1MjA2LCAwLCAwLCAwLCAwLCA1MjExLCAKLSAgICA1MjE0LCA1MjE5LCA1MjI3LCA1MjMyLCA1MjQwLCA1MjQ4LCAwLCA1MjU2LCAwLCA1MjY0LCA1MjcyLCA1MjgwLCA1MjkxLCAKLSAgICA1Mjk2LCA1MzAxLCA1MzA2LCA1MzExLCA1MzE2LCA1MzIxLCA1MzI2LCA1MzMxLCA1MzM2LCA1MzQxLCA1MzQ2LCA1MzUxLCAKLSAgICA1MzU2LCA1MzYxLCA1MzY2LCA1MzcxLCAwLCA1Mzc2LCA1MzgxLCA1Mzg2LCA1MzkxLCA1Mzk2LCA1NDAxLCA1NDA2LCAKLSAgICA1NDExLCA1NDE5LCA1NDI3LCA1NDM1LCA1NDQzLCA1NDUxLCA1NDU5LCA1NDcwLCA1NDc1LCA1NDgwLCA1NDg1LCA1NDkwLCAKLSAgICA1NDk1LCA1NTAwLCA1NTA1LCA1NTEwLCA1NTE1LCA1NTIwLCA1NTI1LCA1NTMwLCA1NTM1LCA1NTQwLCA1NTQ1LCA1NTUwLCAKLSAgICA1NTU1LCA1NTYxLCA1NTY2LCA1NTcxLCA1NTc2LCA1NTgxLCA1NTg2LCA1NTkxLCA1NTk2LCA1NjA0LCA1NjEyLCA1NjIwLCAKLSAgICA1NjI4LCA1NjM2LCA1NjQxLCA1NjQ1LCA1NjQ5LCA1NjU2LCA1NjY2LCA1Njc2LCA1NjgwLCA1Njg0LCA1Njg4LCA1Njk0LCAKLSAgICA1NzAxLCA1NzA1LCA1NzEwLCA1NzE0LCA1NzE5LCA1NzIzLCA1NzI4LCA1NzMyLCA1NzM3LCA1NzQyLCA1NzQ3LCA1NzUyLCAKLSAgICA1NzU3LCA1NzYyLCA1NzY3LCA1NzcyLCA1Nzc3LCA1NzgyLCA1Nzg3LCA1NzkyLCA1Nzk3LCA1ODAyLCA1ODA3LCA1ODExLCAKLSAgICA1ODE1LCA1ODIxLCA1ODI1LCA1ODMwLCA1ODM2LCA1ODQ0LCA1ODQ5LCA1ODU0LCA1ODYxLCA1ODY2LCA1ODcxLCA1ODc4LCAKLSAgICA1ODg3LCA1ODk2LCA1OTA3LCA1OTE1LCA1OTIwLCA1OTI1LCA1OTMwLCA1OTM3LCA1OTQyLCA1OTQ4LCA1OTUzLCA1OTU4LCAKLSAgICA1OTYzLCA1OTY4LCA1OTczLCA1OTc4LCA1OTg2LCA1OTkyLCA1OTk3LCA2MDAxLCA2MDA2LCA2MDExLCA2MDE2LCA2MDIxLCAKLSAgICA2MDI2LCA2MDMxLCA2MDM2LCA2MDQwLCA2MDQ2LCA2MDUwLCA2MDU1LCA2MDYwLCA2MDY1LCA2MDY5LCA2MDc0LCA2MDc5LCAKLSAgICA2MDg0LCA2MDg5LCA2MDkzLCA2MDk4LCA2MTAyLCA2MTA3LCA2MTEyLCA2MTE3LCA2MTIyLCA2MTI4LCA2MTMzLCA2MTM5LCAKLSAgICA2MTQzLCA2MTQ4LCA2MTUyLCA2MTU2LCA2MTYxLCA2MTY2LCA2MTcxLCA2MTc2LCA2MTgxLCA2MTg2LCA2MTkxLCA2MTk1LCAKLSAgICA2MjAxLCA2MjA1LCA2MjEwLCA2MjE1LCA2MjIwLCA2MjI0LCA2MjI5LCA2MjM0LCA2MjM5LCA2MjQ0LCA2MjQ4LCA2MjUzLCAKLSAgICA2MjU3LCA2MjYyLCA2MjY3LCA2MjcyLCA2Mjc3LCA2MjgzLCA2Mjg4LCA2Mjk0LCA2Mjk4LCA2MzAzLCA2MzA3LCA2MzE1LCAKLSAgICA2MzIwLCA2MzI1LCA2MzMwLCA2MzM3LCA2MzQyLCA2MzQ4LCA2MzUzLCA2MzU4LCA2MzYzLCA2MzY4LCA2MzczLCA2Mzc4LCAKLSAgICA2Mzg2LCA2MzkyLCA2Mzk3LCA2NDAyLCA2NDA3LCA2NDEyLCA2NDE3LCA2NDIzLCA2NDI5LCA2NDM2LCA2NDQzLCA2NDUyLCAKLSAgICA2NDYxLCA2NDY4LCA2NDc1LCA2NDg0LCA2NDkzLCA2NDk4LCA2NTAzLCA2NTA4LCA2NTEzLCA2NTE4LCA2NTIzLCA2NTI4LCAKLSAgICA2NTMzLCA2NTQ0LCA2NTU1LCA2NTYwLCA2NTY1LCA2NTcyLCA2NTc5LCA2NTg3LCA2NTk1LCA2NjAwLCA2NjA1LCA2NjEwLCAKLSAgICA2NjE1LCA2NjE5LCA2NjIzLCA2NjI3LCA2NjMzLCA2NjM5LCA2NjQzLCA2NjUwLCA2NjU1LCA2NjY1LCA2Njc1LCA2NjgxLCAKLSAgICA2Njg3LCA2Njk1LCA2NzAzLCA2NzExLCA2NzE5LCA2NzI2LCA2NzMzLCA2NzQxLCA2NzQ5LCA2NzU3LCA2NzY1LCA2NzczLCAKLSAgICA2NzgxLCA2Nzg5LCA2Nzk3LCA2ODA1LCA2ODEzLCA2ODIwLCA2ODI3LCA2ODMzLCA2ODM5LCA2ODQ3LCA2ODU1LCA2ODYyLCAKLSAgICA2ODY5LCA2ODc3LCA2ODg1LCA2ODkxLCA2ODk3LCA2OTA1LCA2OTEzLCA2OTIxLCA2OTI5LCA2OTM1LCA2OTQxLCA2OTQ5LCAKLSAgICA2OTU3LCA2OTY1LCA2OTczLCA2OTgwLCA2OTg3LCA2OTk1LCA3MDAzLCA3MDExLCA3MDE5LCA3MDI0LCA3MDI5LCA3MDM2LCAKLSAgICA3MDQzLCA3MDUzLCA3MDYzLCA3MDY3LCA3MDc1LCA3MDgzLCA3MDkwLCA3MDk3LCA3MTA1LCA3MTEzLCA3MTIwLCA3MTI3LCAKLSAgICA3MTM1LCA3MTQzLCA3MTUwLCA3MTU3LCA3MTY1LCA3MTczLCA3MTc4LCA3MTg1LCA3MTkyLCA3MTk5LCA3MjA2LCA3MjEyLCAKLSAgICA3MjE4LCA3MjI2LCA3MjM0LCA3MjM5LCA3MjQ0LCA3MjUyLCA3MjYwLCA3MjY4LCA3Mjc2LCA3Mjg0LCA3MjkyLCA3Mjk5LCAKLSAgICA3MzA2LCA3MzE0LCA3MzIyLCA3MzMwLCA3MzM4LCA3MzQ1LCA3MzUyLCA3MzU4LCA3MzY0LCA3MzczLCA3MzgyLCA3Mzg5LCAKLSAgICA3Mzk2LCA3NDAzLCA3NDEwLCA3NDE3LCA3NDI0LCA3NDMxLCA3NDM4LCA3NDQ2LCA3NDU0LCA3NDYyLCA3NDcwLCA3NDc4LCAKLSAgICA3NDg2LCA3NDk2LCA3NTA2LCA3NTEzLCA3NTIwLCA3NTI3LCA3NTM0LCA3NTQxLCA3NTQ4LCA3NTU1LCA3NTYyLCA3NTY5LCAKLSAgICA3NTc2LCA3NTgzLCA3NTkwLCA3NTk3LCA3NjA0LCA3NjExLCA3NjE4LCA3NjI1LCA3NjMyLCA3NjM5LCA3NjQ2LCA3NjUzLCAKLSAgICA3NjYwLCA3NjY3LCA3Njc0LCA3Njc5LCA3Njg0LCA3Njg5LCA3Njk0LCA3Njk5LCA3NzA0LCA3NzA5LCA3NzE0LCA3NzE5LCAKLSAgICA3NzI0LCA3NzMwLCA3NzM2LCA3NzQ0LCA3NzUyLCA3NzYwLCA3NzY4LCA3Nzc2LCA3Nzg0LCA3NzkyLCA3ODAwLCA3ODA4LCAKLSAgICA3ODE2LCA3ODIxLCA3ODI2LCA3ODMxLCA3ODM2LCA3ODQ0LCAwLCA3ODUyLCA3ODU3LCA3ODYyLCA3ODY3LCA3ODcyLCAKLSAgICA3ODc3LCA3ODgyLCA3ODg3LCA3ODkyLCA3ODk2LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMxLCAKLSAgICA3OTM2LCA3OTQxLCA3OTQ2LCA3OTUxLCA3OTU2LCA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg2LCA3OTkxLCAKLSAgICA3OTk2LCA4MDAxLCA4MDA2LCA4MDExLCA4MDE2LCA4MDIxLCA4MDI2LCA4MDMxLCA4MDM2LCAwLCAwLCA4MDQxLCA4MDQ4LCAKLSAgICA4MDUxLCA4MDU1LCA4MDU5LCA4MDYyLCA4MDY2LCAwLCA4MDcwLCA4MDc1LCA4MDgwLCA4MDg1LCA4MDkwLCA4MDk1LCAKLSAgICA4MTAwLCA4MTA1LCA4MTEwLCA4MTE0LCA4MTE5LCA4MTI0LCA4MTI5LCA4MTM0LCA4MTM5LCA4MTQ0LCA4MTQ5LCA4MTU0LCAKLSAgICA4MTU5LCA4MTY0LCA4MTY5LCA4MTc0LCA4MTc5LCA4MTg0LCA4MTg5LCA4MTk0LCA4MTk5LCA4MjA0LCA4MjA5LCA4MjE0LCAKLSAgICA4MjE5LCA4MjI0LCA4MjI5LCA4MjM0LCA4MjM5LCA4MjQ0LCA4MjQ5LCA4MjU0LCA4MjU5LCAwLCA4MjY2LCA4MjcxLCAwLCAKLSAgICAwLCA4Mjc0LCA4MjgwLCA4Mjg2LCAwLCA4MjkwLCA4Mjk1LCA4MzAwLCA4MzA1LCA4MzEyLCA4MzE5LCA4MzI0LCA4MzI5LCAKLSAgICA4MzM0LCA4MzM5LCA4MzQ0LCA4MzQ5LCA4MzU0LCA4MzYxLCA4MzY2LCA4MzczLCA4MzgwLCA4Mzg1LCA4MzkyLCA4Mzk3LCAKLSAgICA4NDAyLCA4NDA3LCA4NDE0LCA4NDE5LCA4NDI0LCA4NDMxLCA4NDQwLCA4NDQ1LCA4NDUwLCA4NDU1LCA4NDYwLCA4NDY2LCAKLSAgICA4NDcxLCA4NDc4LCA4NDg1LCA4NDkyLCA4NDk3LCA4NTAyLCA4NTA3LCA4NTEyLCA4NTE3LCA4NTIyLCA4NTMyLCA4NTM3LCAKLSAgICA4NTQ2LCA4NTUxLCA4NTU2LCA4NTYxLCA4NTY2LCA4NTczLCA4NTgwLCA4NTg3LCA4NTkzLCA4NTk5LCA4NjA2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA4NjEzLCA4NjE3LCA4NjIxLCA4NjI1LCA4NjI5LCA4NjMzLCA4NjM3LCA4NjQxLCA4NjQ1LCAKLSAgICA4NjQ5LCA4NjUzLCA4NjU4LCA4NjYyLCA4NjY2LCA4NjcxLCA4Njc1LCA4NjgwLCA4Njg0LCA4Njg4LCA4NjkyLCA4Njk3LCAKLSAgICA4NzAxLCA4NzA2LCA4NzEwLCA4NzE0LCA4NzE4LCA4NzIyLCAwLCAwLCAwLCAwLCAwLCA4NzI2LCA4NzMzLCA4NzQxLCAKLSAgICA4NzQ4LCA4NzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzU4LCA4NzYxLCA4NzY1LCA4NzcwLCAKLSAgICA4Nzc0LCA4Nzc4LCA4NzgyLCA4Nzg4LCA4Nzk0LCA4Nzk3LCA4ODA0LCA4ODEzLCA4ODE2LCA4ODE5LCA4ODI0LCA4ODMwLCAKLSAgICA4ODM0LCA4ODQyLCA4ODQ4LCA4ODU0LCA4ODYyLCA4ODY2LCA4ODcxLCA4ODgyLCA4ODg3LCA4ODkxLCA4ODk1LCA4ODk5LCAKLSAgICA4OTAyLCAwLCA4OTA1LCA4OTEyLCA4OTE2LCA4OTIyLCA4OTI2LCA4OTMzLCA4OTQwLCA4OTQ4LCA4OTU1LCA4OTYyLCAKLSAgICA4OTY2LCA4OTcwLCA4OTc2LCA4OTgwLCA4OTg0LCA4OTg4LCA4OTkyLCA4OTk2LCA5MDAwLCA5MDA0LCA5MDA4LCA5MDEyLCAKLSAgICA5MDE2LCA5MDIwLCA5MDI0LCA5MDI4LCA5MDMyLCA5MDM2LCA5MDQwLCA5MDQ0LCA5MDUyLCA5MDYwLCA5MDcwLCA5MDc5LCAKLSAgICA5MDg4LCA5MDkxLCA5MDk1LCA5MDk5LCA5MTAzLCA5MTA3LCA5MTExLCA5MTE1LCA5MTE5LCA5MTIzLCA5MTI4LCA5MTMyLCAKLSAgICA5MTM1LCA5MTM4LCA5MTQxLCA5MTQ0LCA5MTQ3LCA5MTUwLCA5MTUzLCA5MTU2LCA5MTYwLCA5MTY0LCA5MTY4LCA5MTczLCAKLSAgICA5MTc4LCA5MTg0LCA5MTg3LCA5MTk0LCA5MjAzLCA5MjA4LCA5MjEzLCA5MjIwLCA5MjI2LCA5MjMxLCA5MjM1LCA5MjM5LCAKLSAgICA5MjQzLCA5MjQ3LCA5MjUxLCA5MjU1LCA5MjYwLCA5MjY0LCA5MjY5LCA5MjczLCA5Mjc4LCA5MjgzLCA5MjkwLCA5Mjk2LCAKLSAgICA5MzAyLCA5MzA4LCA5MzEzLCA5MzIyLCA5MzMxLCA5MzM2LCA5MzQzLCA5MzUwLCA5MzU3LCA5MzY0LCA5MzY4LCA5MzcyLCAKLSAgICA5Mzc2LCA5MzgzLCA5MzkzLCA5Mzk3LCA5NDAxLCA5NDA1LCA5NDEyLCA5NDIwLCA5NDI0LCA5NDI4LCA5NDM1LCA5NDM5LCAKLSAgICA5NDQzLCA5NDQ3LCA5NDU0LCA5NDYxLCA5NDczLCA5NDc3LCA5NDgxLCA5NDg1LCA5NDk1LCA5NTA0LCA5NTA4LCA5NTE2LCAKLSAgICA5NTIzLCA5NTMwLCA5NTM5LCA5NTUwLCA5NTU4LCA5NTYyLCA5NTcxLCA5NTgyLCA5NTkwLCA5NjAzLCA5NjExLCA5NjE5LCAKLSAgICA5NjI3LCA5NjM1LCA5NjQxLCA5NjUwLCA5NjU3LCA5NjYxLCA5NjY5LCA5NjczLCA5NjgwLCA5Njg4LCA5NjkyLCA5Njk4LCAKLSAgICA5NzA1LCA5NzEyLCA5NzE2LCA5NzI0LCA5NzI4LCA5NzM1LCA5NzM5LCA5NzQ3LCA5NzUxLCA5NzU5LCA5NzY3LCA5Nzc0LCAKLSAgICA5NzgyLCA5NzkwLCA5Nzk3LCA5ODAzLCA5ODA3LCA5ODE0LCA5ODIyLCA5ODI4LCA5ODM1LCA5ODQyLCA5ODQ4LCA5ODU4LCAKLSAgICA5ODY2LCA5ODczLCA5ODc5LCA5ODgzLCA5ODg2LCA5ODkwLCA5ODk2LCA5OTA0LCA5OTA4LCA5OTE0LCA5OTIwLCA5OTI3LCAKLSAgICA5OTM0LCA5OTM3LCA5OTQ0LCA5OTQ5LCA5OTU4LCA5OTYzLCA5OTY3LCA5OTgwLCA5OTkzLCA5OTk5LCAxMDAwNiwgMTAwMTEsIAotICAgIDEwMDE3LCAxMDAyMiwgMTAwMjgsIDEwMDM4LCAxMDA0NSwgMTAwNTQsIDEwMDY0LCAxMDA3MCwgMTAwNzUsIDEwMDgwLCAKLSAgICAxMDA4NCwgMTAwODgsIDEwMDkzLCAxMDA5OCwgMTAxMDQsIDEwMTEyLCAxMDEyMCwgMTAxMzEsIDEwMTM2LCAxMDE0NSwgCi0gICAgMTAxNTQsIDEwMTYxLCAxMDE2NywgMTAxNzMsIDEwMTc5LCAxMDE4NSwgMTAxOTEsIDEwMTk3LCAxMDIwNCwgMTAyMTAsIAotICAgIDEwMjE3LCAxMDIyNCwgMTAyMzEsIDEwMjM4LCAxMDI0NCwgMTAyNTIsIDEwMjYxLCAxMDI2OCwgMTAyNzYsIDEwMjg0LCAKLSAgICAxMDI5MCwgMTAyOTYsIDEwMzAyLCAxMDMxMCwgMTAzMTgsIDEwMzI4LCAxMDMzOCwgMTAzNDIsIDEwMzQ4LCAxMDM1NCwgMCwgCi0gICAgMTAzNjAsIDEwMzY1LCAxMDM3MCwgMTAzNzcsIDEwMzgyLCAxMDM4NywgMTAzOTQsIDEwMzk5LCAxMDQwOCwgMTA0MTMsIAotICAgIDEwNDE4LCAxMDQyMywgMTA0MjgsIDEwNDMzLCAxMDQ0MCwgMTA0NDUsIDEwNDUyLCAxMDQ1NywgMTA0NjIsIDEwNDY3LCAKLSAgICAxMDQ3MiwgMTA0NzcsIDEwNDgzLCAxMDQ4NywgMTA0OTIsIDEwNDk5LCAxMDUwNCwgMTA1MDksIDEwNTE0LCAxMDUxOSwgCi0gICAgMTA1MjQsIDEwNTMxLCAxMDUzOCwgMTA1NDUsIDEwNTUwLCAxMDU1NSwgMTA1NjEsIDEwNTY2LCAxMDU3MSwgMTA1NzcsIAotICAgIDEwNTgyLCAxMDU4NywgMTA1OTUsIDEwNjAzLCAxMDYwOCwgMTA2MTMsIDEwNjE5LCAxMDYyNCwgMTA2MjksIDEwNjMzLCAKLSAgICAxMDYzOSwgMTA2NDMsIDEwNjQ3LCAxMDY1MywgMTA2NTksIDEwNjY0LCAxMDY2OSwgMTA2NzYsIDEwNjgzLCAxMDY4NywgMCwgCi0gICAgMCwgMTA2OTEsIDEwNjk4LCAxMDcwNSwgMTA3MTIsIDEwNzIyLCAxMDczNCwgMTA3NDUsIDEwNzYxLCAxMDc3MywgMTA3ODQsIAotICAgIDEwNzkyLCAxMDc5OSwgMTA4MDksIDEwODI0LCAxMDgzNSwgMTA4NDEsIDEwODUwLCAxMDg1OCwgMTA4NjksIDEwODc5LCAKLSAgICAxMDg4NywgMTA4OTgsIDEwOTA1LCAxMDkxMywgMTA5MjQsIDEwOTMwLCAxMDkzNiwgMTA5NDQsIDEwOTUyLCAxMDk2MCwgCi0gICAgMTA5NjYsIDEwOTc2LCAxMDk4NCwgMTA5OTQsIDExMDA0LCAxMTAxNywgMTEwMzEsIDExMDQ1LCAxMTA1NSwgMTEwNjYsIAotICAgIDExMDc3LCAxMTA5MCwgMTExMDMsIDExMTE3LCAxMTEyOSwgMTExNDEsIDExMTU0LCAxMTE2NywgMTExNzksIDExMTkyLCAKLSAgICAxMTIwMSwgMTEyMDksIDExMjE0LCAxMTIxOSwgMTEyMjQsIDExMjI5LCAxMTIzNCwgMTEyMzksIDExMjQ0LCAxMTI0OSwgCi0gICAgMTEyNTQsIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc0LCAxMTI3OSwgMTEyODQsIDExMjg5LCAxMTI5NCwgMTEyOTksIAotICAgIDExMzA0LCAxMTMwOSwgMTEzMTQsIDExMzE5LCAxMTMyNCwgMTEzMjksIDExMzM0LCAxMTMzOSwgMTEzNDQsIDExMzQ5LCAKLSAgICAxMTM1NCwgMTEzNTksIDExMzY0LCAxMTM2OSwgMTEzNzMsIDExMzc4LCAxMTM4MywgMTEzODgsIDExMzkzLCAxMTM5OCwgCi0gICAgMTE0MDIsIDExNDA2LCAxMTQxMCwgMTE0MTQsIDExNDE4LCAxMTQyMiwgMTE0MjYsIDExNDMwLCAxMTQzNCwgMTE0MzgsIAotICAgIDExNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ0NywgMTE0NTIsIDExNDU2LCAKLSAgICAxMTQ2MCwgMTE0NjQsIDExNDY4LCAxMTQ3MiwgMTE0NzYsIDExNDgxLCAxMTQ4NSwgMTE0OTAsIDExNDk0LCAxMTQ5OSwgCi0gICAgMTE1MDMsIDExNTA3LCAxMTUxMSwgMTE1MTYsIDExNTIwLCAxMTUyNSwgMTE1MzAsIDExNTM1LCAxMTUzOSwgMTE1NDQsIAotICAgIDExNTQ5LCAxMTU1NCwgMTE1NTksIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc5LCAxMTU4NCwgMTE1ODgsIDExNTkzLCAKLSAgICAxMTYwMCwgMTE2MDQsIDExNjA5LCAxMTYxNCwgMTE2MTgsIDExNjIzLCAxMTYyNywgMTE2MzQsIDExNjQxLCAxMTY0OCwgCi0gICAgMTE2NTUsIDExNjYzLCAxMTY3MSwgMTE2ODAsIDExNjg4LCAxMTY5NSwgMTE3MDIsIDExNzEwLCAxMTcxNiwgMTE3MjIsIAotICAgIDExNzI4LCAxMTczNCwgMTE3NDEsIDExNzQ2LCAxMTc1MCwgMTE3NTUsIDAsIDAsIDAsIDAsIDAsIDExNzU5LCAxMTc2NCwgCi0gICAgMTE3NjksIDExNzc0LCAxMTc3OSwgMTE3ODQsIDExNzg5LCAxMTc5NCwgMTE3OTksIDExODA0LCAxMTgwOSwgMTE4MTQsIAotICAgIDExODE5LCAxMTgyNCwgMTE4MjksIDExODM0LCAxMTgzOSwgMTE4NDQsIDExODQ5LCAxMTg1NCwgMTE4NTksIDExODY0LCAKLSAgICAxMTg2OSwgMTE4NzQsIDExODc5LCAxMTg4NCwgMTE4ODksIDExODk3LCAxMTkwNCwgMTE5MTAsIDExOTE1LCAxMTkyMywgCi0gICAgMTE5MzAsIDExOTM2LCAxMTk0MywgMTE5NDksIDExOTU0LCAxMTk2MSwgMTE5NjgsIDExOTc0LCAxMTk3OSwgMTE5ODQsIAotICAgIDExOTkwLCAxMTk5NSwgMTIwMDAsIDEyMDA2LCAwLCAwLCAxMjAxMSwgMTIwMTcsIDEyMDIzLCAxMjAyOSwgMTIwMzUsIAotICAgIDEyMDQxLCAxMjA0NywgMTIwNTIsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc4LCAxMjA4NCwgMTIwOTAsIDEyMDk4LCAwLCAKLSAgICAxMjEwNCwgMTIxMDksIDEyMTE0LCAxMjExOSwgMTIxMjQsIDEyMTI5LCAxMjEzNCwgMTIxMzksIDEyMTQ0LCAxMjE0OSwgCi0gICAgMTIxNTQsIDEyMTU5LCAxMjE2NCwgMTIxNjksIDEyMTc0LCAxMjE3OSwgMTIxODQsIDEyMTg5LCAxMjE5NCwgMTIxOTksIAotICAgIDEyMjA0LCAxMjIwOSwgMTIyMTQsIDEyMjE5LCAxMjIyNCwgMTIyMjksIDEyMjM0LCAxMjIzOSwgMCwgMCwgMTIyNDQsIDAsIAorICAgIDE1MCwgMTU0LCAxNTksIDE2NCwgMTY4LCAxNzMsIDE3OCwgMTgyLCAxODcsIDE5MiwgMTk3LCAyMDIsIDIwNywgMjEwLCAKKyAgICAyMTQsIDIxNywgMjIxLCAyMjQsIDIyOCwgMjMyLCAyMzcsIDI0MiwgMjQ3LCAyNTEsIDI1NiwgMjYxLCAyNjYsIDI3MCwgCisgICAgMjc1LCAyODAsIDI4NCwgMjg5LCAyOTQsIDI5OCwgMzAzLCAzMDgsIDMxMiwgMzE3LCAzMjIsIDMyNiwgMzMxLCAzMzYsIAorICAgIDM0MSwgMzQ2LCAzNTEsIDM1NSwgMzU4LCAzNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NCwgMzY4LCAzNzMsIAorICAgIDM3NiwgMzc5LCAzODIsIDM4NSwgMzg4LCAzOTEsIDM5MywgMzk2LCA0MDIsIDQxMCwgNDEzLCA0MTcsIDQyMCwgNDIyLCAKKyAgICA0MjUsIDQyOCwgNDMxLCA0MzQsIDQzOCwgNDQxLCA0NDQsIDQ0NywgNDQ5LCA0NTIsIDQ1OCwgNDY2LCA0NzMsIDQ4MCwgCisgICAgNDg3LCA0OTIsIDQ5OSwgNTA1LCA1MTIsIDUxOSwgNTI2LCA1MzQsIDUzOSwgNTQ3LCA1NTQsIDU2MCwgNTY3LCA1NzQsIAorICAgIDU4MiwgNTg5LCA1OTcsIDYwNSwgNjEwLCA2MTgsIDYyNSwgNjMxLCA2MzgsIDY0NSwgNjUyLCA2NTUsIDY2MSwgNjY4LCAKKyAgICA2NzQsIDY4MSwgNjg4LCA2OTUsIDcwMCwgNzA3LCA3MTQsIDcyMCwgNzI3LCA3MzQsIDc0MSwgNzQ5LCA3NTQsIDc2MiwgCisgICAgNzY5LCA3NzUsIDc4MiwgNzg5LCA3OTcsIDgwNCwgODEyLCA4MjAsIDgyNSwgODMzLCA4NDAsIDg0NiwgODUzLCA4NjAsIAorICAgIDg2NywgODcwLCA4NzYsIDg4MywgODg5LCA4OTYsIDkwMywgOTEwLCA5MTUsIDkyMywgOTMwLCA5MzcsIDk0NCwgOTUxLCAKKyAgICA5NTgsIDk2NSwgOTcyLCA5NzksIDk4NywgOTk1LCAxMDAzLCAxMDExLCAxMDE5LCAxMDI3LCAxMDM1LCAxMDQzLCAxMDUwLCAKKyAgICAxMDU3LCAxMDY0LCAxMDcxLCAxMDc4LCAxMDg1LCAxMDkyLCAxMDk5LCAxMTA2LCAxMTEzLCAxMTIwLCAxMTI3LCAxMTM1LCAKKyAgICAxMTQzLCAxMTUxLCAxMTU5LCAxMTY3LCAxMTc1LCAxMTgzLCAxMTkxLCAxMTk5LCAxMjA3LCAxMjE0LCAxMjIxLCAxMjI5LCAKKyAgICAxMjM3LCAxMjQ1LCAxMjUzLCAxMjYxLCAxMjY5LCAxMjc3LCAxMjg1LCAxMjkzLCAxMjk5LCAxMzA0LCAxMzA5LCAxMzE3LCAKKyAgICAxMzI1LCAxMzMzLCAxMzQxLCAxMzQ2LCAxMzUzLCAxMzYwLCAxMzY4LCAxMzc2LCAxMzg0LCAxMzkyLCAxNDAxLCAxNDEwLCAKKyAgICAxNDE3LCAxNDI0LCAxNDMxLCAxNDM4LCAxNDQ2LCAxNDU0LCAxNDYyLCAxNDcwLCAxNDgxLCAxNDg2LCAxNDkxLCAxNDk4LCAKKyAgICAxNTA1LCAxNTEyLCAxNTE5LCAxNTI2LCAxNTMzLCAxNTM4LCAxNTQzLCAxNTUwLCAxNTU3LCAxNTY1LCAxNTczLCAxNTgxLCAKKyAgICAxNTg5LCAxNTk2LCAxNjAzLCAxNjExLCAxNjE5LCAxNjI3LCAxNjM1LCAxNjQzLCAxNjUxLCAxNjU5LCAxNjY3LCAxNjc1LCAKKyAgICAxNjgzLCAxNjkwLCAxNjk3LCAxNzA0LCAxNzExLCAxNzE4LCAxNzI1LCAxNzMyLCAxNzM5LCAxNzQ3LCAxNzU1LCAxNzYyLCAKKyAgICAxNzY5LCAxNzc2LCAxNzgzLCAxNzkxLCAxNzk5LCAxODA3LCAxODE1LCAxODIzLCAxODMwLCAxODM3LCAxODQ1LCAxODUzLCAKKyAgICAxODYxLCAxODY5LCAxODc1LCAxODgxLCAxODg3LCAxODk0LCAxOTAxLCAxOTA2LCAxOTExLCAxOTE2LCAxOTIzLCAxOTMwLCAKKyAgICAxOTM3LCAxOTQ0LCAxOTUyLCAxOTYwLCAxOTY3LCAxOTczLCAxOTc4LCAxOTgzLCAxOTkwLCAxOTk3LCAyMDA0LCAyMDA5LCAKKyAgICAyMDE0LCAyMDE5LCAyMDI2LCAyMDMzLCAyMDQwLCAyMDQ3LCAyMDU0LCAyMDYxLCAyMDY5LCAyMDc5LCAyMDg3LCAyMDk0LCAKKyAgICAyMTAxLCAyMTA2LCAyMTExLCAyMTE4LCAyMTI1LCAyMTI5LCAyMTM0LCAyMTM5LCAyMTQ0LCAyMTUyLCAyMTYxLCAyMTY4LCAKKyAgICAyMTc1LCAyMTg0LCAyMTkxLCAyMTk4LCAyMjAzLCAyMjEwLCAyMjE3LCAyMjI0LCAyMjMxLCAyMjM4LCAyMjQzLCAyMjUwLCAKKyAgICAyMjU3LCAyMjY1LCAyMjcwLCAyMjc1LCAyMjgwLCAyMjkwLCAyMjk0LCAyMzAwLCAyMzA2LCAyMzEyLCAyMzE4LCAyMzI2LCAKKyAgICAyMzM5LCAyMzQ3LCAyMzUyLCAyMzYyLCAyMzY3LCAyMzcyLCAyMzgyLCAyMzg3LCAyMzk0LCAyNDAxLCAyNDA5LCAyNDE3LCAKKyAgICAyNDI0LCAyNDMxLCAyNDM4LCAyNDQ1LCAyNDU1LCAyNDY1LCAyNDc0LCAyNDgzLCAyNDkzLCAyNTAzLCAyNTEzLCAyNTIzLCAKKyAgICAyNTI5LCAyNTM5LCAyNTQ5LCAyNTU5LCAyNTY5LCAyNTc3LCAyNTg1LCAyNTkyLCAyNTk5LCAyNjA3LCAyNjE1LCAyNjIzLCAKKyAgICAyNjMxLCAyNjM4LCAyNjQ1LCAyNjU1LCAyNjY1LCAyNjczLCAyNjgxLCAyNjg5LCAyNjk0LCAyNzA0LCAyNzA5LCAyNzE2LCAKKyAgICAyNzIzLCAyNzI4LCAyNzMzLCAyNzQxLCAyNzQ5LCAyNzU5LCAyNzY5LCAyNzc2LCAyNzgzLCAyNzkyLCAyODAxLCAyODA5LCAKKyAgICAyODE3LCAyODI2LCAyODM1LCAyODQzLCAyODUxLCAyODYwLCAyODY5LCAyODc4LCAyODg3LCAyODk3LCAyOTA3LCAyOTE1LCAKKyAgICAyOTIzLCAyOTMyLCAyOTQxLCAyOTUwLCAyOTU5LCAyOTY5LCAyOTc5LCAyOTg3LCAyOTk1LCAzMDA0LCAzMDEzLCAzMDIyLCAKKyAgICAzMDMxLCAzMDQwLCAzMDQ5LCAzMDU0LCAzMDU5LCAzMDY3LCAzMDc1LCAzMDg1LCAzMDkzLCAzMDk4LCAzMTAzLCAzMTEwLCAKKyAgICAzMTE3LCAzMTI0LCAzMTMxLCAzMTM4LCAzMTQ1LCAzMTU1LCAzMTY1LCAzMTc1LCAzMTg1LCAzMTkyLCAzMTk5LCAzMjA5LCAKKyAgICAzMjE5LCAzMjI3LCAzMjM1LCAzMjQzLCAzMjUxLCAzMjU5LCAzMjY2LCAzMjczLCAzMjgwLCAzMjg2LCAzMjkzLCAzMzAwLCAKKyAgICAzMzA3LCAzMzE2LCAzMzI2LCAzMzM2LCAzMzQzLCAzMzUwLCAzMzU2LCAzMzYxLCAzMzY4LCAzMzc0LCAzMzgwLCAzMzg3LCAKKyAgICAzMzk0LCAzNDA1LCAzNDE1LCAzNDIyLCAzNDI5LCAzNDM2LCAzNDQzLCAzNDQ5LCAzNDU0LCAzNDYxLCAzNDY3LCAzNDcyLCAKKyAgICAzNDgwLCAzNDg4LCAzNDk1LCAzNTAxLCAzNTA2LCAzNTEzLCAzNTE4LCAzNTI1LCAzNTM0LCAzNTQzLCAzNTUyLCAzNTU5LCAKKyAgICAzNTY1LCAzNTcxLCAzNTc2LCAzNTgzLCAzNTkwLCAzNTk3LCAzNjA0LCAzNjExLCAzNjE2LCAzNjIxLCAzNjMwLCAzNjM4LCAKKyAgICAzNjQ3LCAzNjUyLCAzNjU5LCAzNjcwLCAzNjc3LCAzNjg1LCAzNjk0LCAzNzAwLCAzNzA2LCAzNzEyLCAzNzE5LCAzNzI0LCAKKyAgICAzNzMwLCAzNzQxLCAzNzUwLCAzNzU5LCAzNzY3LCAzNzc1LCAzNzg1LCAzNzkwLCAzNzk3LCAzODA0LCAzODA5LCAzODIxLCAKKyAgICAzODMwLCAzODM4LCAzODQ1LCAzODU0LCAzODU5LCAzODY0LCAzODcxLCAzODc4LCAzODg1LCAzODkyLCAzODk4LCAzOTA3LCAKKyAgICAzOTE1LCAzOTIwLCAzOTI4LCAzOTM0LCAzOTQyLCAzOTUwLCAzOTU2LCAzOTYyLCAzOTY4LCAzOTc1LCAzOTgzLCAzOTg5LCAKKyAgICAzOTk3LCA0MDA0LCA0MDA5LCA0MDE2LCA0MDI0LCA0MDM0LCA0MDQxLCA0MDQ4LCA0MDU4LCA0MDY1LCA0MDcyLCA0MDgyLCAKKyAgICA0MDg5LCA0MDk2LCA0MTAzLCA0MTA5LCA0MTE1LCA0MTI1LCA0MTM4LCA0MTQzLCA0MTUwLCA0MTU1LCA0MTU5LCA0MTY1LCAKKyAgICA0MTc0LCA0MTgxLCA0MTg2LCA0MTkxLCA0MTk1LCA0MjAwLCA0MjA2LCA0MjEwLCA0MjE2LCA0MjIyLCA0MjI4LCA0MjM0LCAKKyAgICA0MjQyLCA0MjQ3LCA0MjUyLCA0MjU3LCA0MjYyLCA0MjY4LCA0MjcwLCA0Mjc1LCA0Mjc5LCA0Mjg1LCA0MjkxLCA0Mjk3LCAKKyAgICA0MzAyLCA0MzA5LCA0MzE2LCA0MzIyLCA0MzI5LCA0MzM3LCA0MzQ1LCA0MzUwLCA0MzU1LCA0MzU5LCA0MzY0LCA0MzY2LCAKKyAgICA0MzY4LCA0MzcxLCA0MzczLCA0Mzc2LCA0MzgxLCA0Mzg2LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA2LCA0NDExLCA0NDIwLCAKKyAgICA0NDI2LCA0NDMxLCA0NDM3LCA0NDQyLCA0NDQ4LCA0NDU2LCA0NDY0LCA0NDY4LCA0NDcyLCA0NDc3LCA0NDgzLCA0NDg5LCAKKyAgICA0NDk1LCA0NTAxLCA0NTA2LCA0NTEzLCA0NTIxLCA0NTI5LCA0NTM0LCA0NTQwLCA0NTQ3LCA0NTU0LCA0NTYxLCA0NTY4LCAKKyAgICA0NTcyLCA0NTc3LCA0NTgyLCA0NTg3LCA0NTkyLCA0NTk3LCA0NjAwLCA0NjAzLCA0NjA2LCA0NjA5LCA0NjEyLCA0NjE1LCAKKyAgICA0NjE5LCA0NjIzLCA0NjI5LCA0NjMyLCA0NjM3LCA0NjQzLCA0NjQ5LCA0NjUyLCA0NjU3LCA0NjYzLCA0NjY3LCA0NjczLCAKKyAgICA0Njc5LCA0Njg1LCA0NjkxLCA0Njk2LCA0NzAxLCA0NzA2LCA0NzA5LCA0NzE1LCA0NzIwLCA0NzI1LCA0NzI5LCA0NzM0LCAKKyAgICA0NzQwLCA0NzQ2LCA0NzQ5LCA0NzUzLCA0NzU3LCA0NzYxLCA0NzY0LCA0NzY3LCA0NzcyLCA0Nzc2LCA0NzgzLCA0Nzg3LCAKKyAgICA0NzkzLCA0Nzk3LCA0ODAzLCA0ODA3LCA0ODExLCA0ODE1LCA0ODIwLCA0ODI1LCA0ODMyLCA0ODM4LCA0ODQ1LCA0ODUxLCAKKyAgICA0ODU3LCA0ODYzLCA0ODY2LCA0ODcwLCA0ODc0LCA0ODc4LCA0ODgyLCA0ODg3LCA0ODkyLCA0ODk2LCA0OTAwLCA0OTA2LCAKKyAgICA0OTEwLCA0OTE0LCA0OTE5LCA0OTI1LCA0OTMwLCA0OTM2LCA0OTQwLCA0OTQ3LCA0OTUyLCA0OTU2LCA0OTYxLCA0OTY2LCAKKyAgICA0OTcyLCA0OTc1LCA0OTc5LCA0OTg0LCA0OTg5LCA0OTk4LCA1MDA0LCA1MDA5LCA1MDEzLCA1MDE4LCA1MDIyLCA1MDI3LCAKKyAgICA1MDMxLCA1MDM1LCA1MDQwLCA1MDQ0LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcwLCA1MDc1LCA1MDgwLCA1MDg2LCAKKyAgICA1MDkyLCA1MDk4LCA1MTA0LCA1MTA5LCA1MTE1LCA1MTIxLCA1MTI3LCA1MTMyLCA1MTM3LCA1MTQ0LCA1MTUxLCA1MTU1LCAKKyAgICA1MTYxLCA1MTY4LCAwLCAwLCA1MTc1LCA1MTc4LCA1MTg3LCA1MTk2LCA1MjA3LCA1MjExLCAwLCAwLCAwLCAwLCA1MjE2LCAKKyAgICA1MjE5LCA1MjI0LCA1MjMyLCA1MjM3LCA1MjQ1LCA1MjUzLCAwLCA1MjYxLCAwLCA1MjY5LCA1Mjc3LCA1Mjg1LCA1Mjk2LCAKKyAgICA1MzAxLCA1MzA2LCA1MzExLCA1MzE2LCA1MzIxLCA1MzI2LCA1MzMxLCA1MzM2LCA1MzQxLCA1MzQ2LCA1MzUxLCA1MzU2LCAKKyAgICA1MzYxLCA1MzY2LCA1MzcxLCA1Mzc2LCAwLCA1MzgxLCA1Mzg2LCA1MzkxLCA1Mzk2LCA1NDAxLCA1NDA2LCA1NDExLCAKKyAgICA1NDE2LCA1NDI0LCA1NDMyLCA1NDQwLCA1NDQ4LCA1NDU2LCA1NDY0LCA1NDc1LCA1NDgwLCA1NDg1LCA1NDkwLCA1NDk1LCAKKyAgICA1NTAwLCA1NTA1LCA1NTEwLCA1NTE1LCA1NTIwLCA1NTI1LCA1NTMwLCA1NTM1LCA1NTQwLCA1NTQ1LCA1NTUwLCA1NTU1LCAKKyAgICA1NTYwLCA1NTY2LCA1NTcxLCA1NTc2LCA1NTgxLCA1NTg2LCA1NTkxLCA1NTk2LCA1NjAxLCA1NjA5LCA1NjE3LCA1NjI1LCAKKyAgICA1NjMzLCA1NjQxLCA1NjQ2LCA1NjUwLCA1NjU0LCA1NjYxLCA1NjcxLCA1NjgxLCA1Njg1LCA1Njg5LCA1NjkzLCA1Njk5LCAKKyAgICA1NzA2LCA1NzEwLCA1NzE1LCA1NzE5LCA1NzI0LCA1NzI4LCA1NzMzLCA1NzM3LCA1NzQyLCA1NzQ3LCA1NzUyLCA1NzU3LCAKKyAgICA1NzYyLCA1NzY3LCA1NzcyLCA1Nzc3LCA1NzgyLCA1Nzg3LCA1NzkyLCA1Nzk3LCA1ODAyLCA1ODA3LCA1ODEyLCA1ODE2LCAKKyAgICA1ODIwLCA1ODI2LCA1ODMwLCA1ODM1LCA1ODQxLCA1ODQ5LCA1ODU0LCA1ODU5LCA1ODY2LCA1ODcxLCA1ODc2LCA1ODgzLCAKKyAgICA1ODkyLCA1OTAxLCA1OTEyLCA1OTIwLCA1OTI1LCA1OTMwLCA1OTM1LCA1OTQyLCA1OTQ3LCA1OTUzLCA1OTU4LCA1OTYzLCAKKyAgICA1OTY4LCA1OTczLCA1OTc4LCA1OTgzLCA1OTkxLCA1OTk3LCA2MDAyLCA2MDA2LCA2MDExLCA2MDE2LCA2MDIxLCA2MDI2LCAKKyAgICA2MDMxLCA2MDM2LCA2MDQxLCA2MDQ1LCA2MDUxLCA2MDU1LCA2MDYwLCA2MDY1LCA2MDcwLCA2MDc0LCA2MDc5LCA2MDg0LCAKKyAgICA2MDg5LCA2MDk0LCA2MDk4LCA2MTAzLCA2MTA3LCA2MTEyLCA2MTE3LCA2MTIyLCA2MTI3LCA2MTMzLCA2MTM4LCA2MTQ0LCAKKyAgICA2MTQ4LCA2MTUzLCA2MTU3LCA2MTYxLCA2MTY2LCA2MTcxLCA2MTc2LCA2MTgxLCA2MTg2LCA2MTkxLCA2MTk2LCA2MjAwLCAKKyAgICA2MjA2LCA2MjEwLCA2MjE1LCA2MjIwLCA2MjI1LCA2MjI5LCA2MjM0LCA2MjM5LCA2MjQ0LCA2MjQ5LCA2MjUzLCA2MjU4LCAKKyAgICA2MjYyLCA2MjY3LCA2MjcyLCA2Mjc3LCA2MjgyLCA2Mjg4LCA2MjkzLCA2Mjk5LCA2MzAzLCA2MzA4LCA2MzEyLCA2MzIwLCAKKyAgICA2MzI1LCA2MzMwLCA2MzM1LCA2MzQyLCA2MzQ3LCA2MzUzLCA2MzU4LCA2MzYzLCA2MzY4LCA2MzczLCA2Mzc4LCA2MzgzLCAKKyAgICA2MzkxLCA2Mzk3LCA2NDAyLCA2NDA3LCA2NDEyLCA2NDE3LCA2NDIyLCA2NDI4LCA2NDM0LCA2NDQxLCA2NDQ4LCA2NDU3LCAKKyAgICA2NDY2LCA2NDczLCA2NDgwLCA2NDg5LCA2NDk4LCA2NTAzLCA2NTA4LCA2NTEzLCA2NTE4LCA2NTIzLCA2NTI4LCA2NTMzLCAKKyAgICA2NTM4LCA2NTQ5LCA2NTYwLCA2NTY1LCA2NTcwLCA2NTc3LCA2NTg0LCA2NTkyLCA2NjAwLCA2NjA1LCA2NjEwLCA2NjE1LCAKKyAgICA2NjIwLCA2NjI0LCA2NjI4LCA2NjMyLCA2NjM4LCA2NjQ0LCA2NjQ4LCA2NjU1LCA2NjYwLCA2NjcwLCA2NjgwLCA2Njg2LCAKKyAgICA2NjkyLCA2NzAwLCA2NzA4LCA2NzE2LCA2NzI0LCA2NzMxLCA2NzM4LCA2NzQ2LCA2NzU0LCA2NzYyLCA2NzcwLCA2Nzc4LCAKKyAgICA2Nzg2LCA2Nzk0LCA2ODAyLCA2ODEwLCA2ODE4LCA2ODI1LCA2ODMyLCA2ODM4LCA2ODQ0LCA2ODUyLCA2ODYwLCA2ODY3LCAKKyAgICA2ODc0LCA2ODgyLCA2ODkwLCA2ODk2LCA2OTAyLCA2OTEwLCA2OTE4LCA2OTI2LCA2OTM0LCA2OTQwLCA2OTQ2LCA2OTU0LCAKKyAgICA2OTYyLCA2OTcwLCA2OTc4LCA2OTg1LCA2OTkyLCA3MDAwLCA3MDA4LCA3MDE2LCA3MDI0LCA3MDI5LCA3MDM0LCA3MDQxLCAKKyAgICA3MDQ4LCA3MDU4LCA3MDY4LCA3MDcyLCA3MDgwLCA3MDg4LCA3MDk1LCA3MTAyLCA3MTEwLCA3MTE4LCA3MTI1LCA3MTMyLCAKKyAgICA3MTQwLCA3MTQ4LCA3MTU1LCA3MTYyLCA3MTcwLCA3MTc4LCA3MTgzLCA3MTkwLCA3MTk3LCA3MjA0LCA3MjExLCA3MjE3LCAKKyAgICA3MjIzLCA3MjMxLCA3MjM5LCA3MjQ0LCA3MjQ5LCA3MjU3LCA3MjY1LCA3MjczLCA3MjgxLCA3Mjg5LCA3Mjk3LCA3MzA0LCAKKyAgICA3MzExLCA3MzE5LCA3MzI3LCA3MzM1LCA3MzQzLCA3MzUwLCA3MzU3LCA3MzYzLCA3MzY5LCA3Mzc4LCA3Mzg3LCA3Mzk0LCAKKyAgICA3NDAxLCA3NDA4LCA3NDE1LCA3NDIyLCA3NDI5LCA3NDM2LCA3NDQzLCA3NDUxLCA3NDU5LCA3NDY3LCA3NDc1LCA3NDgzLCAKKyAgICA3NDkxLCA3NTAxLCA3NTExLCA3NTE4LCA3NTI1LCA3NTMyLCA3NTM5LCA3NTQ2LCA3NTUzLCA3NTYwLCA3NTY3LCA3NTc0LCAKKyAgICA3NTgxLCA3NTg4LCA3NTk1LCA3NjAyLCA3NjA5LCA3NjE2LCA3NjIzLCA3NjMwLCA3NjM3LCA3NjQ0LCA3NjUxLCA3NjU4LCAKKyAgICA3NjY1LCA3NjcyLCA3Njc5LCA3Njg0LCA3Njg5LCA3Njk0LCA3Njk5LCA3NzA0LCA3NzA5LCA3NzE0LCA3NzE5LCA3NzI0LCAKKyAgICA3NzI5LCA3NzM1LCA3NzQxLCA3NzQ5LCA3NzU3LCA3NzY1LCA3NzczLCA3NzgxLCA3Nzg5LCA3Nzk3LCA3ODA1LCA3ODEzLCAKKyAgICA3ODIxLCA3ODI2LCA3ODMxLCA3ODM2LCA3ODQxLCA3ODQ5LCAwLCA3ODU3LCA3ODYyLCA3ODY3LCA3ODcyLCA3ODc3LCAKKyAgICA3ODgyLCA3ODg3LCA3ODkyLCA3ODk3LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMxLCA3OTM2LCAKKyAgICA3OTQxLCA3OTQ2LCA3OTUxLCA3OTU2LCA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg2LCA3OTkxLCA3OTk2LCAKKyAgICA4MDAxLCA4MDA2LCA4MDExLCA4MDE2LCA4MDIxLCA4MDI2LCA4MDMxLCA4MDM2LCA4MDQxLCAwLCAwLCA4MDQ2LCA4MDUzLCAKKyAgICA4MDU2LCA4MDYwLCA4MDY0LCA4MDY3LCA4MDcxLCAwLCA4MDc1LCA4MDgwLCA4MDg1LCA4MDkwLCA4MDk1LCA4MTAwLCAKKyAgICA4MTA1LCA4MTEwLCA4MTE1LCA4MTE5LCA4MTI0LCA4MTI5LCA4MTM0LCA4MTM5LCA4MTQ0LCA4MTQ5LCA4MTU0LCA4MTU5LCAKKyAgICA4MTY0LCA4MTY5LCA4MTc0LCA4MTc5LCA4MTg0LCA4MTg5LCA4MTk0LCA4MTk5LCA4MjA0LCA4MjA5LCA4MjE0LCA4MjE5LCAKKyAgICA4MjI0LCA4MjI5LCA4MjM0LCA4MjM5LCA4MjQ0LCA4MjQ5LCA4MjU0LCA4MjU5LCA4MjY0LCAwLCA4MjcxLCA4Mjc2LCAwLCAKKyAgICAwLCA4Mjc5LCA4Mjg1LCA4MjkxLCAwLCA4Mjk1LCA4MzAwLCA4MzA1LCA4MzEwLCA4MzE3LCA4MzI0LCA4MzI5LCA4MzM0LCAKKyAgICA4MzM5LCA4MzQ0LCA4MzQ5LCA4MzU0LCA4MzU5LCA4MzY2LCA4MzcxLCA4Mzc4LCA4Mzg1LCA4MzkwLCA4Mzk3LCA4NDAyLCAKKyAgICA4NDA3LCA4NDEyLCA4NDE5LCA4NDI0LCA4NDI5LCA4NDM2LCA4NDQ1LCA4NDUwLCA4NDU1LCA4NDYwLCA4NDY1LCA4NDcxLCAKKyAgICA4NDc2LCA4NDgzLCA4NDkwLCA4NDk3LCA4NTAyLCA4NTA3LCA4NTEyLCA4NTE3LCA4NTIyLCA4NTI3LCA4NTM3LCA4NTQyLCAKKyAgICA4NTUxLCA4NTU2LCA4NTYxLCA4NTY2LCA4NTcxLCA4NTc4LCA4NTg1LCA4NTkyLCA4NTk4LCA4NjA0LCA4NjExLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4NjE4LCA4NjIyLCA4NjI2LCA4NjMwLCA4NjM0LCA4NjM4LCA4NjQyLCA4NjQ2LCA4NjUwLCAKKyAgICA4NjU0LCA4NjU4LCA4NjYzLCA4NjY3LCA4NjcxLCA4Njc2LCA4NjgwLCA4Njg1LCA4Njg5LCA4NjkzLCA4Njk3LCA4NzAyLCAKKyAgICA4NzA2LCA4NzExLCA4NzE1LCA4NzE5LCA4NzIzLCA4NzI3LCAwLCAwLCAwLCAwLCAwLCA4NzMxLCA4NzM4LCA4NzQ2LCAKKyAgICA4NzUzLCA4NzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzYzLCA4NzY2LCA4NzcwLCA4Nzc1LCAKKyAgICA4Nzc5LCA4NzgzLCA4Nzg3LCA4NzkzLCA4Nzk5LCA4ODAyLCA4ODA5LCA4ODE4LCA4ODIxLCA4ODI0LCA4ODI5LCA4ODM1LCAKKyAgICA4ODM5LCA4ODQ3LCA4ODUzLCA4ODU5LCA4ODY3LCA4ODcxLCA4ODc2LCA4ODg3LCA4ODkyLCA4ODk2LCA4OTAwLCA4OTA0LCAKKyAgICA4OTA3LCAwLCA4OTEwLCA4OTE3LCA4OTIxLCA4OTI3LCA4OTMxLCA4OTM4LCA4OTQ1LCA4OTUzLCA4OTYwLCA4OTY3LCAKKyAgICA4OTcxLCA4OTc1LCA4OTgxLCA4OTg1LCA4OTg5LCA4OTkzLCA4OTk3LCA5MDAxLCA5MDA1LCA5MDA5LCA5MDEzLCA5MDE3LCAKKyAgICA5MDIxLCA5MDI1LCA5MDI5LCA5MDMzLCA5MDM3LCA5MDQxLCA5MDQ1LCA5MDQ5LCA5MDU3LCA5MDY1LCA5MDc1LCA5MDg0LCAKKyAgICA5MDkzLCA5MDk2LCA5MTAwLCA5MTA0LCA5MTA4LCA5MTEyLCA5MTE2LCA5MTIwLCA5MTI0LCA5MTI4LCA5MTMzLCA5MTM3LCAKKyAgICA5MTQwLCA5MTQzLCA5MTQ2LCA5MTQ5LCA5MTUyLCA5MTU1LCA5MTU4LCA5MTYxLCA5MTY1LCA5MTY5LCA5MTczLCA5MTc4LCAKKyAgICA5MTgzLCA5MTg5LCA5MTkyLCA5MTk5LCA5MjA4LCA5MjEzLCA5MjE4LCA5MjI1LCA5MjMxLCA5MjM2LCA5MjQwLCA5MjQ0LCAKKyAgICA5MjQ4LCA5MjUyLCA5MjU2LCA5MjYwLCA5MjY1LCA5MjY5LCA5Mjc0LCA5Mjc4LCA5MjgzLCA5Mjg4LCA5Mjk1LCA5MzAxLCAKKyAgICA5MzA3LCA5MzEzLCA5MzE4LCA5MzI3LCA5MzM2LCA5MzQxLCA5MzQ4LCA5MzU1LCA5MzYyLCA5MzY5LCA5MzczLCA5Mzc3LCAKKyAgICA5MzgxLCA5Mzg4LCA5Mzk4LCA5NDAyLCA5NDA2LCA5NDEwLCA5NDE3LCA5NDI1LCA5NDI5LCA5NDMzLCA5NDQwLCA5NDQ0LCAKKyAgICA5NDQ4LCA5NDUyLCA5NDU5LCA5NDY2LCA5NDc4LCA5NDgyLCA5NDg2LCA5NDkwLCA5NTAwLCA5NTA5LCA5NTEzLCA5NTIxLCAKKyAgICA5NTI4LCA5NTM1LCA5NTQ0LCA5NTU1LCA5NTYzLCA5NTY3LCA5NTc2LCA5NTg3LCA5NTk1LCA5NjA4LCA5NjE2LCA5NjI0LCAKKyAgICA5NjMyLCA5NjQwLCA5NjQ2LCA5NjU1LCA5NjYyLCA5NjY2LCA5Njc0LCA5Njc4LCA5Njg1LCA5NjkzLCA5Njk3LCA5NzAzLCAKKyAgICA5NzEwLCA5NzE3LCA5NzIxLCA5NzI5LCA5NzMzLCA5NzQwLCA5NzQ0LCA5NzUyLCA5NzU2LCA5NzY0LCA5NzcyLCA5Nzc5LCAKKyAgICA5Nzg3LCA5Nzk1LCA5ODAyLCA5ODA4LCA5ODEyLCA5ODE5LCA5ODI3LCA5ODMzLCA5ODQwLCA5ODQ3LCA5ODUzLCA5ODYzLCAKKyAgICA5ODcxLCA5ODc4LCA5ODg0LCA5ODg4LCA5ODkxLCA5ODk1LCA5OTAxLCA5OTA5LCA5OTEzLCA5OTE5LCA5OTI1LCA5OTMyLCAKKyAgICA5OTM5LCA5OTQyLCA5OTQ5LCA5OTU0LCA5OTYzLCA5OTY4LCA5OTcyLCA5OTg1LCA5OTk4LCAxMDAwNCwgMTAwMTEsIAorICAgIDEwMDE2LCAxMDAyMiwgMTAwMjcsIDEwMDMzLCAxMDA0MywgMTAwNTAsIDEwMDU5LCAxMDA2OSwgMTAwNzUsIDEwMDgwLCAKKyAgICAxMDA4NSwgMTAwODksIDEwMDkzLCAxMDA5OCwgMTAxMDMsIDEwMTA5LCAxMDExNywgMTAxMjUsIDEwMTM2LCAxMDE0MSwgCisgICAgMTAxNTAsIDEwMTU5LCAxMDE2NiwgMTAxNzIsIDEwMTc4LCAxMDE4NCwgMTAxOTAsIDEwMTk2LCAxMDIwMiwgMTAyMDksIAorICAgIDEwMjE1LCAxMDIyMiwgMTAyMjksIDEwMjM2LCAxMDI0MywgMTAyNDksIDEwMjU3LCAxMDI2NiwgMTAyNzMsIDEwMjgxLCAKKyAgICAxMDI4OSwgMTAyOTUsIDEwMzAxLCAxMDMwNywgMTAzMTUsIDEwMzIzLCAxMDMzMywgMTAzNDMsIDEwMzQ3LCAxMDM1MywgCisgICAgMTAzNTksIDAsIDEwMzY1LCAxMDM3MCwgMTAzNzUsIDEwMzgyLCAxMDM4NywgMTAzOTIsIDEwMzk5LCAxMDQwNCwgMTA0MTMsIAorICAgIDEwNDE4LCAxMDQyMywgMTA0MjgsIDEwNDMzLCAxMDQzOCwgMTA0NDUsIDEwNDUwLCAxMDQ1NywgMTA0NjIsIDEwNDY3LCAKKyAgICAxMDQ3MiwgMTA0NzcsIDEwNDgyLCAxMDQ4OCwgMTA0OTIsIDEwNDk3LCAxMDUwNCwgMTA1MDksIDEwNTE0LCAxMDUxOSwgCisgICAgMTA1MjQsIDEwNTI5LCAxMDUzNiwgMTA1NDMsIDEwNTUwLCAxMDU1NSwgMTA1NjAsIDEwNTY2LCAxMDU3MSwgMTA1NzYsIAorICAgIDEwNTgyLCAxMDU4NywgMTA1OTIsIDEwNjAwLCAxMDYwOCwgMTA2MTMsIDEwNjE4LCAxMDYyNCwgMTA2MjksIDEwNjM0LCAKKyAgICAxMDYzOCwgMTA2NDQsIDEwNjQ4LCAxMDY1MiwgMTA2NTgsIDEwNjY0LCAxMDY2OSwgMTA2NzQsIDEwNjgxLCAxMDY4OCwgCisgICAgMTA2OTIsIDAsIDAsIDEwNjk2LCAxMDcwMywgMTA3MTAsIDEwNzE3LCAxMDcyNywgMTA3MzksIDEwNzUwLCAxMDc2NiwgCisgICAgMTA3NzgsIDEwNzg5LCAxMDc5NywgMTA4MDQsIDEwODE0LCAxMDgyOSwgMTA4NDAsIDEwODQ2LCAxMDg1NSwgMTA4NjMsIAorICAgIDEwODc0LCAxMDg4NCwgMTA4OTIsIDEwOTAzLCAxMDkxMCwgMTA5MTgsIDEwOTI5LCAxMDkzNSwgMTA5NDEsIDEwOTQ5LCAKKyAgICAxMDk1NywgMTA5NjUsIDEwOTcxLCAxMDk4MSwgMTA5ODksIDEwOTk5LCAxMTAwOSwgMTEwMjIsIDExMDM2LCAxMTA1MCwgCisgICAgMTEwNjAsIDExMDcxLCAxMTA4MiwgMTEwOTUsIDExMTA4LCAxMTEyMiwgMTExMzQsIDExMTQ2LCAxMTE1OSwgMTExNzIsIAorICAgIDExMTg0LCAxMTE5NywgMTEyMDYsIDExMjE0LCAxMTIxOSwgMTEyMjQsIDExMjI5LCAxMTIzNCwgMTEyMzksIDExMjQ0LCAKKyAgICAxMTI0OSwgMTEyNTQsIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc0LCAxMTI3OSwgMTEyODQsIDExMjg5LCAxMTI5NCwgCisgICAgMTEyOTksIDExMzA0LCAxMTMwOSwgMTEzMTQsIDExMzE5LCAxMTMyNCwgMTEzMjksIDExMzM0LCAxMTMzOSwgMTEzNDQsIAorICAgIDExMzQ5LCAxMTM1NCwgMTEzNTksIDExMzY0LCAxMTM2OSwgMTEzNzQsIDExMzc4LCAxMTM4MywgMTEzODgsIDExMzkzLCAKKyAgICAxMTM5OCwgMTE0MDMsIDExNDA3LCAxMTQxMSwgMTE0MTUsIDExNDE5LCAxMTQyMywgMTE0MjcsIDExNDMxLCAxMTQzNSwgCisgICAgMTE0MzksIDExNDQzLCAxMTQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NTIsIAorICAgIDExNDU3LCAxMTQ2MSwgMTE0NjUsIDExNDY5LCAxMTQ3MywgMTE0NzcsIDExNDgxLCAxMTQ4NiwgMTE0OTAsIDExNDk1LCAKKyAgICAxMTQ5OSwgMTE1MDQsIDExNTA4LCAxMTUxMiwgMTE1MTYsIDExNTIxLCAxMTUyNSwgMTE1MzAsIDExNTM1LCAxMTU0MCwgCisgICAgMTE1NDQsIDExNTQ5LCAxMTU1NCwgMTE1NTksIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc5LCAxMTU4NCwgMTE1ODksIAorICAgIDExNTkzLCAxMTU5NywgMTE2MDQsIDExNjA4LCAxMTYxMywgMTE2MTcsIDExNjIxLCAxMTYyNiwgMTE2MzAsIDExNjM3LCAKKyAgICAxMTY0NCwgMTE2NTEsIDExNjU4LCAxMTY2NiwgMTE2NzQsIDExNjgzLCAxMTY5MSwgMTE2OTgsIDExNzA1LCAxMTcxMywgCisgICAgMTE3MTksIDExNzI1LCAxMTczMSwgMTE3MzcsIDExNzQ0LCAxMTc0OSwgMTE3NTMsIDExNzU4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTc2MiwgMTE3NjcsIDExNzcyLCAxMTc3NywgMTE3ODIsIDExNzg3LCAxMTc5MiwgMTE3OTcsIDExODAyLCAxMTgwNywgCisgICAgMTE4MTIsIDExODE3LCAxMTgyMiwgMTE4MjcsIDExODMyLCAxMTgzNywgMTE4NDIsIDExODQ3LCAxMTg1MiwgMTE4NTcsIAorICAgIDExODYyLCAxMTg2NywgMTE4NzIsIDExODc3LCAxMTg4MiwgMTE4ODcsIDExODkyLCAxMTkwMCwgMTE5MDcsIDExOTEzLCAKKyAgICAxMTkxOCwgMTE5MjYsIDExOTMzLCAxMTkzOSwgMTE5NDYsIDExOTUyLCAxMTk1NywgMTE5NjQsIDExOTcxLCAxMTk3NywgCisgICAgMTE5ODIsIDExOTg3LCAxMTk5MywgMTE5OTgsIDEyMDAzLCAxMjAwOSwgMCwgMCwgMTIwMTQsIDEyMDIwLCAxMjAyNiwgCisgICAgMTIwMzIsIDEyMDM4LCAxMjA0NCwgMTIwNTAsIDEyMDU1LCAxMjA2MywgMTIwNjksIDEyMDc1LCAxMjA4MSwgMTIwODcsIAorICAgIDEyMDkzLCAxMjEwMSwgMCwgMTIxMDcsIDEyMTEyLCAxMjExNywgMTIxMjIsIDEyMTI3LCAxMjEzMiwgMTIxMzcsIDEyMTQyLCAKKyAgICAxMjE0NywgMTIxNTIsIDEyMTU3LCAxMjE2MiwgMTIxNjcsIDEyMTcyLCAxMjE3NywgMTIxODIsIDEyMTg3LCAxMjE5MiwgCisgICAgMTIxOTcsIDEyMjAyLCAxMjIwNywgMTIyMTIsIDEyMjE3LCAxMjIyMiwgMTIyMjcsIDEyMjMyLCAxMjIzNywgMTIyNDIsIDAsIAorICAgIDAsIDEyMjQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1MSwgMTIyNjAsIAorICAgIDEyMjY4LCAxMjI3NSwgMTIyODMsIDEyMjk1LCAxMjMwMiwgMTIzMDksIDEyMzE2LCAxMjMyOCwgMTIzMzksIDEyMzQ2LCAKKyAgICAxMjM1NCwgMTIzNjAsIDEyMzY1LCAxMjM3MywgMTIzODEsIDEyMzg5LCAxMjM5NSwgMTI0MDUsIDEyNDEzLCAwLCAxMjQyMCwgCisgICAgMTI0MjgsIDEyNDM2LCAxMjQ0NSwgMTI0NTQsIDEyNDY3LCAxMjQ3MywgMTI0NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDg1LCAxMjQ5MiwgMTI0OTcsIDEyNTAyLCAKKyAgICAxMjUwNywgMTI1MTUsIDEyNTIzLCAxMjUzMCwgMTI1MzcsIDEyNTQ0LCAxMjU1MSwgMTI1NTgsIDEyNTY1LCAxMjU3MiwgCisgICAgMTI1NzgsIDEyNTg2LCAxMjU5MiwgMTI1OTcsIDEyNjAyLCAxMjYwNywgMTI2MTIsIDEyNjE3LCAxMjYyMiwgMTI2MjcsIAorICAgIDEyNjMyLCAxMjYzNywgMTI2NDIsIDEyNjQ3LCAxMjY1MiwgMTI2NTYsIDEyNjYwLCAxMjY2NCwgMTI2NjksIDEyNjc1LCAKKyAgICAxMjY4MSwgMTI2ODcsIDEyNjkyLCAxMjY5NywgMTI3MDIsIDEyNzA3LCAxMjcxMywgMTI3MjIsIDEyNzMwLCAxMjczNiwgCisgICAgMTI3NDQsIDEyNzUwLCAxMjc1NCwgMTI3NTgsIDEyNzYyLCAxMjc2NywgMTI3NzAsIDEyNzc0LCAxMjc3NywgMTI3ODEsIAorICAgIDEyNzg0LCAxMjc4OCwgMTI3OTIsIDEyNzk2LCAxMjgwMSwgMTI4MDYsIDEyODA5LCAxMjgxMywgMTI4MTgsIDEyODIzLCAKKyAgICAxMjgyNiwgMTI4MzAsIDEyODMzLCAxMjgzNywgMTI4NDEsIDEyODQ1LCAxMjg0OSwgMTI4NTMsIDEyODU3LCAxMjg2MSwgCisgICAgMTI4NjUsIDEyODY5LCAxMjg3MywgMTI4NzcsIDEyODgxLCAxMjg4NSwgMTI4ODksIDEyODkzLCAxMjg5NywgMTI5MDEsIAorICAgIDEyOTA1LCAxMjkwOCwgMTI5MTIsIDEyOTE1LCAxMjkxOSwgMTI5MjMsIDEyOTI3LCAxMjkzMCwgMTI5MzMsIDEyOTM3LCAKKyAgICAxMjk0MSwgMTI5NDQsIDEyOTQ4LCAxMjk1MiwgMTI5NTYsIDEyOTYwLCAxMjk2NCwgMTI5NjgsIDEyOTcxLCAxMjk3NiwgCisgICAgMTI5ODEsIDEyOTg1LCAxMjk4OSwgMTI5OTQsIDEyOTk4LCAxMzAwMywgMTMwMDcsIDEzMDEyLCAxMzAxNywgMTMwMjMsIAorICAgIDEzMDI5LCAxMzAzNSwgMTMwMzksIDEzMDQ0LCAxMzA1MCwgMTMwNTYsIDEzMDYwLCAxMzA2NSwgMTMwNjksIDEzMDc1LCAKKyAgICAxMzA4MCwgMTMwODMsIDEzMDg5LCAxMzA5NSwgMTMxMDAsIDEzMTA1LCAxMzExMiwgMTMxMTcsIDEzMTIyLCAxMzEyNiwgCisgICAgMTMxMzAsIDEzMTM0LCAxMzEzOCwgMTMxNDIsIDEzMTQ2LCAxMzE1MCwgMTMxNTQsIDEzMTU5LCAxMzE2NCwgMTMxNjksIAorICAgIDEzMTc1LCAxMzE3OCwgMTMxODIsIDEzMTg2LCAxMzE4OSwgMTMxOTIsIDEzMTk1LCAxMzE5OCwgMTMyMDEsIDEzMjA0LCAKKyAgICAxMzIwOCwgMTMyMTEsIDEzMjE1LCAxMzIxOSwgMTMyMjYsIDEzMjMxLCAxMzIzNSwgMTMyMzksIDEzMjQzLCAxMzI0NywgCisgICAgMTMyNTEsIDEzMjU3LCAxMzI2MSwgMTMyNjUsIDEzMjY5LCAxMzI3MywgMTMyNzksIDEzMjgzLCAxMzI4NywgMTMyOTAsIAorICAgIDEzMjk0LCAxMzI5OCwgMCwgMTMzMDIsIDEzMzA1LCAxMzMwOSwgMTMzMTIsIDEzMzE2LCAxMzMxOSwgMTMzMjMsIDEzMzI3LCAKKyAgICAwLCAwLCAxMzMzMSwgMTMzMzQsIDAsIDAsIDEzMzM4LCAxMzM0MSwgMTMzNDUsIDEzMzQ4LCAxMzM1MiwgMTMzNTYsIAorICAgIDEzMzYwLCAxMzM2NCwgMTMzNjgsIDEzMzcyLCAxMzM3NiwgMTMzODAsIDEzMzg0LCAxMzM4OCwgMTMzOTIsIDEzMzk2LCAKKyAgICAxMzQwMCwgMTM0MDQsIDEzNDA4LCAxMzQxMiwgMTM0MTYsIDEzNDIwLCAwLCAxMzQyMywgMTM0MjYsIDEzNDMwLCAxMzQzNCwgCisgICAgMTM0MzgsIDEzNDQxLCAxMzQ0NCwgMCwgMTM0NDgsIDAsIDAsIDAsIDEzNDUxLCAxMzQ1NSwgMTM0NTksIDEzNDYzLCAwLCAwLCAKKyAgICAxMzQ2NiwgMTM0NzAsIDEzNDc0LCAxMzQ3OSwgMTM0ODMsIDEzNDg4LCAxMzQ5MiwgMTM0OTcsIDEzNTAyLCAwLCAwLCAKKyAgICAxMzUwOCwgMTM1MTIsIDAsIDAsIDEzNTE3LCAxMzUyMSwgMTM1MjYsIDEzNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUzNiwgMCwgMCwgMCwgMCwgMTM1NDIsIDEzNTQ2LCAwLCAxMzU1MCwgMTM1NTQsIDEzNTU5LCAxMzU2NCwgMTM1NjksIDAsIAorICAgIDAsIDEzNTc1LCAxMzU3OSwgMTM1ODIsIDEzNTg1LCAxMzU4OCwgMTM1OTEsIDEzNTk0LCAxMzU5NywgMTM2MDEsIDEzNjA0LCAKKyAgICAxMzYwOCwgMTM2MTYsIDEzNjI1LCAxMzYyOSwgMTM2MzMsIDEzNjM5LCAxMzY0NSwgMTM2NTEsIDEzNjU3LCAxMzY3MSwgCisgICAgMTM2NzgsIDEzNjgxLCAwLCAwLCAwLCAwLCAwLCAxMzY4NSwgMTM2OTIsIDEzNjk3LCAwLCAxMzcwMiwgMTM3MDYsIDEzNzExLCAKKyAgICAxMzcxNSwgMTM3MjAsIDEzNzI0LCAwLCAwLCAwLCAwLCAxMzcyOSwgMTM3MzQsIDAsIDAsIDEzNzM5LCAxMzc0NCwgMTM3NDksIAorICAgIDEzNzUzLCAxMzc1OCwgMTM3NjMsIDEzNzY4LCAxMzc3MywgMTM3NzgsIDEzNzgzLCAxMzc4OCwgMTM3OTMsIDEzNzk4LCAKKyAgICAxMzgwMywgMTM4MDgsIDEzODEzLCAxMzgxOCwgMTM4MjMsIDEzODI4LCAxMzgzMywgMTM4MzgsIDEzODQzLCAwLCAxMzg0NywgCisgICAgMTM4NTEsIDEzODU2LCAxMzg2MSwgMTM4NjYsIDEzODcwLCAxMzg3NCwgMCwgMTM4NzksIDEzODgzLCAwLCAxMzg4OCwgCisgICAgMTM4OTMsIDAsIDEzODk4LCAxMzkwMywgMCwgMCwgMTM5MDcsIDAsIDEzOTEyLCAxMzkxOCwgMTM5MjMsIDEzOTI5LCAKKyAgICAxMzkzNCwgMCwgMCwgMCwgMCwgMTM5NDAsIDEzOTQ2LCAwLCAwLCAxMzk1MiwgMTM5NTgsIDEzOTY0LCAwLCAwLCAwLCAKKyAgICAxMzk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5NzQsIDEzOTc5LCAxMzk4NCwgMTM5ODksIDAsIDEzOTk0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzk5OSwgMTQwMDQsIDE0MDA4LCAxNDAxMiwgMTQwMTYsIDE0MDIwLCAxNDAyNCwgMTQwMjgsIAorICAgIDE0MDMzLCAxNDAzNywgMTQwNDIsIDE0MDQ2LCAxNDA1MCwgMTQwNTQsIDE0MDU4LCAxNDA2NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQwNjksIDE0MDc0LCAxNDA3OSwgMCwgMTQwODQsIDE0MDg4LCAxNDA5MywgMTQwOTcsIDE0MTAyLCAKKyAgICAxNDEwNiwgMTQxMTEsIDE0MTE2LCAxNDEyMSwgMCwgMTQxMjcsIDE0MTMxLCAxNDEzNiwgMCwgMTQxNDIsIDE0MTQ2LCAKKyAgICAxNDE1MSwgMTQxNTUsIDE0MTYwLCAxNDE2NSwgMTQxNzAsIDE0MTc1LCAxNDE4MCwgMTQxODUsIDE0MTkwLCAxNDE5NSwgCisgICAgMTQyMDAsIDE0MjA1LCAxNDIxMCwgMTQyMTUsIDE0MjIwLCAxNDIyNSwgMTQyMzAsIDE0MjM1LCAxNDI0MCwgMTQyNDUsIDAsIAorICAgIDE0MjQ5LCAxNDI1MywgMTQyNTgsIDE0MjYzLCAxNDI2OCwgMTQyNzIsIDE0Mjc2LCAwLCAxNDI4MSwgMTQyODUsIDAsIAorICAgIDE0MjkwLCAxNDI5NSwgMTQzMDAsIDE0MzA1LCAxNDMxMCwgMCwgMCwgMTQzMTQsIDE0MzE5LCAxNDMyNCwgMTQzMzAsIAorICAgIDE0MzM1LCAxNDM0MSwgMTQzNDYsIDE0MzUyLCAxNDM1OCwgMTQzNjUsIDAsIDE0MzcyLCAxNDM3NywgMTQzODMsIDAsIAorICAgIDE0MzkwLCAxNDM5NSwgMTQ0MDEsIDAsIDAsIDE0NDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNDQxMCwgMTQ0MTYsIDE0NDIyLCAxNDQyOCwgMCwgMCwgMTQ0MzUsIDE0NDQwLCAxNDQ0NCwgMTQ0NDgsIAorICAgIDE0NDUyLCAxNDQ1NiwgMTQ0NjAsIDE0NDY0LCAxNDQ2OSwgMTQ0NzMsIDE0NDc4LCAxNDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTQ0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDkzLCAxNDQ5OCwgMTQ1MDMsIDAsIDE0NTA4LCAxNDUxMiwgCisgICAgMTQ1MTcsIDE0NTIxLCAxNDUyNiwgMTQ1MzAsIDE0NTM1LCAxNDU0MCwgMCwgMCwgMTQ1NDUsIDE0NTQ5LCAwLCAwLCAKKyAgICAxNDU1NCwgMTQ1NTgsIDE0NTYzLCAxNDU2NywgMTQ1NzIsIDE0NTc3LCAxNDU4MiwgMTQ1ODcsIDE0NTkyLCAxNDU5NywgCisgICAgMTQ2MDIsIDE0NjA3LCAxNDYxMiwgMTQ2MTcsIDE0NjIyLCAxNDYyNywgMTQ2MzIsIDE0NjM3LCAxNDY0MiwgMTQ2NDcsIAorICAgIDE0NjUyLCAxNDY1NywgMCwgMTQ2NjEsIDE0NjY1LCAxNDY3MCwgMTQ2NzUsIDE0NjgwLCAxNDY4NCwgMTQ2ODgsIDAsIAorICAgIDE0NjkzLCAxNDY5NywgMCwgMTQ3MDIsIDE0NzA3LCAxNDcxMiwgMTQ3MTcsIDE0NzIyLCAwLCAwLCAxNDcyNiwgMTQ3MzEsIAorICAgIDE0NzM2LCAxNDc0MiwgMTQ3NDcsIDE0NzUzLCAxNDc1OCwgMTQ3NjQsIDE0NzcwLCAwLCAwLCAxNDc3NywgMTQ3ODIsIDAsIAorICAgIDAsIDE0Nzg4LCAxNDc5MywgMTQ3OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODA0LCAxNDgxMSwgMCwgMCwgMCwgMCwgCisgICAgMTQ4MTgsIDE0ODIzLCAwLCAxNDgyOCwgMTQ4MzMsIDE0ODM5LCAxNDg0NSwgMTQ4NTEsIDAsIDAsIDE0ODU4LCAxNDg2MywgCisgICAgMTQ4NjcsIDE0ODcxLCAxNDg3NSwgMTQ4NzksIDE0ODgzLCAxNDg4NywgMTQ4OTIsIDE0ODk2LCAxNDkwMSwgMTQ5MDUsIAorICAgIDE0OTEwLCAxNDkxNywgMTQ5MjQsIDE0OTMxLCAxNDkzOCwgMTQ5NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0OTUyLCAxNDk1NiwgMCwgMTQ5NjAsIDE0OTYzLCAxNDk2NywgMTQ5NzAsIDE0OTc0LCAxNDk3NywgMCwgMCwgMCwgCisgICAgMTQ5ODEsIDE0OTg0LCAxNDk4OCwgMCwgMTQ5OTIsIDE0OTk1LCAxNDk5OSwgMTUwMDMsIDAsIDAsIDAsIDE1MDA2LCAKKyAgICAxNTAxMCwgMCwgMTUwMTQsIDAsIDE1MDE4LCAxNTAyMiwgMCwgMCwgMCwgMTUwMjYsIDE1MDMwLCAwLCAwLCAwLCAxNTAzNCwgCisgICAgMTUwMzcsIDE1MDQxLCAwLCAwLCAwLCAxNTA0NCwgMTUwNDcsIDE1MDUwLCAxNTA1NCwgMTUwNTgsIDE1MDYxLCAxNTA2NSwgCisgICAgMTUwNjksIDE1MDczLCAxNTA3NywgMTUwODEsIDE1MDg1LCAwLCAwLCAwLCAwLCAxNTA4OCwgMTUwOTMsIDE1MDk3LCAKKyAgICAxNTEwMiwgMTUxMDYsIDAsIDAsIDAsIDE1MTExLCAxNTExNSwgMTUxMjAsIDAsIDE1MTI1LCAxNTEyOSwgMTUxMzQsIAorICAgIDE1MTM5LCAwLCAwLCAxNTE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMTUxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE1MTUyLCAxNTE1NiwgMTUxNTksIDE1MTYyLCAxNTE2NSwgMTUxNjgsIDE1MTcxLCAxNTE3NCwgCisgICAgMTUxNzgsIDE1MTgxLCAxNTE4NSwgMTUxODksIDE1MTk0LCAxNTE5OSwgMTUyMDMsIDE1MjA3LCAxNTIxMSwgMTUyMTUsIAorICAgIDE1MjE5LCAxNTIyNCwgMTUyMjgsIDAsIDAsIDAsIDAsIDAsIDE1MjMxLCAxNTIzNywgMTUyNDEsIDE1MjQ1LCAwLCAxNTI0OSwgCisgICAgMTUyNTIsIDE1MjU2LCAxNTI1OSwgMTUyNjMsIDE1MjY2LCAxNTI3MCwgMTUyNzQsIDAsIDE1Mjc4LCAxNTI4MSwgMTUyODUsIAorICAgIDAsIDE1Mjg5LCAxNTI5MiwgMTUyOTYsIDE1MzAwLCAxNTMwMywgMTUzMDcsIDE1MzExLCAxNTMxNSwgMTUzMTksIDE1MzIzLCAKKyAgICAxNTMyNywgMTUzMzEsIDE1MzM1LCAxNTMzOSwgMTUzNDMsIDE1MzQ3LCAxNTM1MSwgMTUzNTUsIDE1MzU5LCAxNTM2MywgCisgICAgMTUzNjcsIDE1MzcxLCAxNTM3NSwgMCwgMTUzNzgsIDE1MzgxLCAxNTM4NSwgMTUzODksIDE1MzkzLCAxNTM5NiwgMTUzOTksIAorICAgIDE1NDAzLCAxNTQwNywgMTU0MTAsIDE1NDE0LCAxNTQxOCwgMTU0MjIsIDE1NDI2LCAxNTQzMCwgMTU0MzQsIDAsIDAsIDAsIAorICAgIDE1NDM3LCAxNTQ0MSwgMTU0NDYsIDE1NDUwLCAxNTQ1NSwgMTU0NTksIDE1NDY0LCAxNTQ2OSwgMCwgMTU0NzUsIDE1NDc5LCAKKyAgICAxNTQ4NCwgMCwgMTU0ODksIDE1NDkzLCAxNTQ5OCwgMTU1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTA3LCAxNTUxMSwgCisgICAgMCwgMTU1MTcsIDE1NTIxLCAxNTUyNSwgMCwgMCwgMCwgMCwgMCwgMTU1MjksIDE1NTM0LCAxNTUzOSwgMTU1NDQsIDAsIDAsIAorICAgIDE1NTUwLCAxNTU1NCwgMTU1NTcsIDE1NTYwLCAxNTU2MywgMTU1NjYsIDE1NTY5LCAxNTU3MiwgMTU1NzYsIDE1NTc5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU4MywgMTU1OTYsIDE1NjA4LCAxNTYyMCwgMTU2MzIsIDE1NjQ0LCAxNTY1NiwgCisgICAgMTU2NjgsIDE1NjcyLCAxNTY3OSwgMTU2ODQsIDE1Njg5LCAwLCAxNTY5NCwgMTU2OTgsIDE1NzAzLCAxNTcwNywgMTU3MTIsIAorICAgIDE1NzE2LCAxNTcyMSwgMTU3MjYsIDAsIDE1NzMxLCAxNTczNSwgMTU3NDAsIDAsIDE1NzQ1LCAxNTc0OSwgMTU3NTQsIAorICAgIDE1NzU5LCAxNTc2MywgMTU3NjgsIDE1NzczLCAxNTc3OCwgMTU3ODMsIDE1Nzg4LCAxNTc5MywgMTU3OTgsIDE1ODAzLCAKKyAgICAxNTgwOCwgMTU4MTMsIDE1ODE4LCAxNTgyMywgMTU4MjgsIDE1ODMzLCAxNTgzOCwgMTU4NDMsIDE1ODQ4LCAxNTg1MywgMCwgCisgICAgMTU4NTcsIDE1ODYxLCAxNTg2NiwgMTU4NzEsIDE1ODc2LCAxNTg4MCwgMTU4ODQsIDE1ODg5LCAxNTg5NCwgMTU4OTgsIDAsIAorICAgIDE1OTAzLCAxNTkwOCwgMTU5MTMsIDE1OTE4LCAxNTkyMywgMCwgMCwgMTU5MjcsIDE1OTMyLCAxNTkzNywgMTU5NDMsIAorICAgIDE1OTQ4LCAxNTk1NCwgMTU5NTksIDE1OTY1LCAxNTk3MSwgMCwgMTU5NzgsIDE1OTgzLCAxNTk4OSwgMCwgMTU5OTUsIAorICAgIDE2MDAwLCAxNjAwNiwgMTYwMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDE3LCAxNjAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTYwMjksIDAsIDE2MDM0LCAxNjA0MCwgMTYwNDYsIDE2MDUyLCAwLCAwLCAxNjA1OSwgMTYwNjQsIDE2MDY4LCAKKyAgICAxNjA3MiwgMTYwNzYsIDE2MDgwLCAxNjA4NCwgMTYwODgsIDE2MDkzLCAxNjA5NywgMCwgMTYxMDIsIDE2MTA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjExMiwgMTYxMTYsIDE2MTIwLCAwLCAxNjEyNCwgMTYxMjcsIAorICAgIDE2MTMxLCAxNjEzNCwgMTYxMzgsIDE2MTQxLCAxNjE0NSwgMTYxNDksIDAsIDE2MTUzLCAxNjE1NiwgMTYxNjAsIDAsIAorICAgIDE2MTY0LCAxNjE2NywgMTYxNzEsIDE2MTc1LCAxNjE3OCwgMTYxODIsIDE2MTg2LCAxNjE5MCwgMTYxOTQsIDE2MTk4LCAKKyAgICAxNjIwMiwgMTYyMDYsIDE2MjEwLCAxNjIxNCwgMTYyMTgsIDE2MjIyLCAxNjIyNiwgMTYyMzAsIDE2MjM0LCAxNjIzOCwgCisgICAgMTYyNDIsIDE2MjQ2LCAxNjI1MCwgMTYyNTMsIDE2MjU3LCAxNjI2MCwgMTYyNjQsIDE2MjY4LCAxNjI3MiwgMTYyNzUsIAorICAgIDE2Mjc4LCAxNjI4MiwgMTYyODYsIDE2Mjg5LCAxNjI5MywgMTYyOTcsIDE2MzAxLCAxNjMwNSwgMTYzMDksIDE2MzEzLCAKKyAgICAxNjMxNiwgMCwgMCwgMTYzMjAsIDE2MzI0LCAxNjMyOSwgMTYzMzMsIDE2MzM4LCAxNjM0MiwgMTYzNDcsIDE2MzUyLCAwLCAKKyAgICAxNjM1OCwgMTYzNjIsIDE2MzY3LCAwLCAxNjM3MiwgMTYzNzYsIDE2MzgxLCAxNjM4NiwgMTYzOTAsIDE2Mzk1LCAwLCAwLCAKKyAgICAwLCAwLCAxNjM5OSwgMTY0MDUsIDE2NDExLCAxNjQxNywgMTY0MjMsIDE2NDI5LCAxNjQzNSwgMTY0NDEsIDE2NDQ3LCAKKyAgICAxNjQ1MywgMTY0NTksIDE2NDY1LCAxNjQ3MSwgMTY0NzYsIDE2NDgxLCAxNjQ4NiwgMCwgMCwgMTY0OTIsIDE2NDk2LCAKKyAgICAxNjQ5OSwgMTY1MDIsIDE2NTA1LCAxNjUwOCwgMTY1MTEsIDE2NTE0LCAxNjUxOCwgMTY1MjEsIDE2NTI1LCAxNjUyOSwgCisgICAgMTY1MzQsIDE2NTM5LCAxNjU0NSwgMTY1NTEsIDE2NTU3LCAxNjU2MywgMTY1NjksIDE2NTc1LCAxNjU3OSwgMTY1ODUsIAorICAgIDE2NTkxLCAxNjU5NywgMTY2MDIsIDE2NjA4LCAwLCAwLCAxNjYxNCwgMTY2MTgsIDAsIDE2NjIyLCAxNjYyNiwgMTY2MzAsIAorICAgIDE2NjM0LCAxNjYzOCwgMTY2NDIsIDE2NjQ2LCAxNjY1MCwgMTY2NTQsIDE2NjU4LCAxNjY2MiwgMTY2NjYsIDE2NjcwLCAKKyAgICAxNjY3NCwgMTY2NzgsIDE2NjgyLCAxNjY4NiwgMTY2OTAsIDAsIDAsIDAsIDE2Njk0LCAxNjcwMCwgMTY3MDYsIDE2NzEyLCAKKyAgICAxNjcxOCwgMTY3MjQsIDE2NzMwLCAxNjczNiwgMTY3NDIsIDE2NzQ4LCAxNjc1NCwgMTY3NjAsIDE2NzY4LCAxNjc3NCwgCisgICAgMTY3ODAsIDE2Nzg2LCAxNjc5MiwgMTY3OTgsIDE2ODA0LCAxNjgxMCwgMTY4MTYsIDE2ODIyLCAxNjgyOCwgMTY4MzQsIDAsIAorICAgIDE2ODQwLCAxNjg0NiwgMTY4NTIsIDE2ODU4LCAxNjg2NCwgMTY4NzAsIDE2ODc0LCAxNjg4MCwgMTY4ODQsIDAsIDE2ODg4LCAKKyAgICAwLCAwLCAxNjg5NCwgMTY4OTgsIDE2OTA0LCAxNjkxMCwgMTY5MTYsIDE2OTIwLCAxNjkyNiwgMCwgMCwgMCwgMTY5MzAsIDAsIAorICAgIDAsIDAsIDAsIDE2OTM0LCAxNjkzOSwgMTY5NDYsIDE2OTUzLCAxNjk2MCwgMTY5NjcsIDAsIDE2OTc0LCAwLCAxNjk4MSwgCisgICAgMTY5ODYsIDE2OTkxLCAxNjk5OCwgMTcwMDUsIDE3MDE0LCAxNzAyNSwgMTcwMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MDM5LCAKKyAgICAxNzA0NSwgMTcwNTAsIDE3MDU1LCAxNzA2MCwgMTcwNjUsIDE3MDcwLCAxNzA3NSwgMTcwODEsIDE3MDg2LCAwLCAwLCAKKyAgICAxNzA5MiwgMTcwOTksIDE3MTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzExMSwgMTcxMTgsIAorICAgIDE3MTI1LCAxNzEzMiwgMTcxMzksIDE3MTQ2LCAxNzE1MywgMTcxNjAsIDE3MTY3LCAxNzE3NCwgMTcxODEsIDE3MTg4LCAKKyAgICAxNzE5NSwgMTcyMDIsIDE3MjA5LCAxNzIxNiwgMTcyMjMsIDE3MjMwLCAxNzIzNywgMTcyNDQsIDE3MjUxLCAxNzI1OCwgCisgICAgMTcyNjUsIDE3MjcyLCAxNzI3OSwgMTcyODYsIDE3MjkzLCAxNzMwMCwgMTczMDcsIDE3MzE0LCAxNzMyMSwgMTczMjgsIAorICAgIDE3MzM1LCAxNzM0MSwgMTczNDgsIDE3MzU1LCAxNzM2MCwgMTczNjcsIDE3MzcyLCAxNzM3OSwgMTczODYsIDE3MzkzLCAKKyAgICAxNzQwMCwgMTc0MDcsIDE3NDE0LCAxNzQyMCwgMTc0MjcsIDE3NDMyLCAxNzQzOCwgMTc0NDUsIDE3NDUyLCAxNzQ1OSwgCisgICAgMTc0NjUsIDE3NDcyLCAxNzQ3OSwgMTc0ODYsIDE3NDkyLCAxNzQ5OSwgMCwgMCwgMCwgMCwgMTc1MDQsIDE3NTExLCAKKyAgICAxNzUxNywgMTc1MjQsIDE3NTMwLCAxNzUzOSwgMTc1NDgsIDE3NTUzLCAxNzU1OCwgMTc1NjMsIDE3NTcwLCAxNzU3NywgCisgICAgMTc1ODQsIDE3NTkxLCAxNzU5NiwgMTc2MDEsIDE3NjA2LCAxNzYxMSwgMTc2MTYsIDE3NjIwLCAxNzYyNCwgMTc2MjgsIAorICAgIDE3NjMyLCAxNzYzNiwgMTc2NDAsIDE3NjQ1LCAxNzY0OSwgMTc2NTQsIDE3NjU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzY2NCwgMTc2NjksIDAsIDE3Njc2LCAwLCAwLCAxNzY4MywgMTc2ODgsIDAsIDE3NjkzLCAwLCAKKyAgICAwLCAxNzcwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc3MDUsIDE3NzEwLCAxNzcxNCwgMTc3MjEsIDAsIDE3NzI4LCAxNzczMywgCisgICAgMTc3MzgsIDE3NzQzLCAxNzc1MCwgMTc3NTcsIDE3NzY0LCAwLCAxNzc3MSwgMTc3NzYsIDE3NzgxLCAwLCAxNzc4OCwgMCwgCisgICAgMTc3OTUsIDAsIDAsIDE3ODAwLCAxNzgwNywgMCwgMTc4MTQsIDE3ODE4LCAxNzgyNSwgMTc4MjksIDE3ODM0LCAxNzg0MiwgCisgICAgMTc4NDgsIDE3ODU0LCAxNzg1OSwgMTc4NjUsIDE3ODcxLCAxNzg3NywgMTc4ODIsIDAsIDE3ODg4LCAxNzg5NiwgMTc5MDMsIAorICAgIDAsIDAsIDE3OTEwLCAxNzkxNSwgMTc5MjEsIDE3OTI2LCAxNzkzMiwgMCwgMTc5MzgsIDAsIDE3OTQzLCAxNzk1MCwgCisgICAgMTc5NTcsIDE3OTY0LCAxNzk3MSwgMTc5NzYsIDAsIDAsIDE3OTgwLCAxNzk4NSwgMTc5ODksIDE3OTkzLCAxNzk5NywgCisgICAgMTgwMDEsIDE4MDA1LCAxODAwOSwgMTgwMTQsIDE4MDE4LCAwLCAwLCAxODAyMywgMTgwMjksIDE4MDM1LCAxODA0MiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwNDksIDE4MDUzLCAxODA2NCwgMTgwNzksIDE4MDk0LCAxODEwNCwgMTgxMTUsIAorICAgIDE4MTI4LCAxODEzOSwgMTgxNDUsIDE4MTUzLCAxODE2MywgMTgxNjksIDE4MTc3LCAxODE4MSwgMTgxODcsIDE4MTkzLCAKKyAgICAxODIwMSwgMTgyMTEsIDE4MjE5LCAxODIzMiwgMTgyMzgsIDE4MjQ2LCAxODI1NCwgMTgyNjYsIDE4MjczLCAxODI4MSwgCisgICAgMTgyODksIDE4Mjk3LCAxODMwNSwgMTgzMTMsIDE4MzIxLCAxODMzMSwgMTgzMzUsIDE4MzM4LCAxODM0MSwgMTgzNDQsIAorICAgIDE4MzQ3LCAxODM1MCwgMTgzNTMsIDE4MzU3LCAxODM2MCwgMTgzNjQsIDE4MzY4LCAxODM3MiwgMTgzNzYsIDE4MzgwLCAKKyAgICAxODM4NCwgMTgzODgsIDE4MzkzLCAxODM5NywgMTg0MDIsIDE4NDA3LCAxODQxMywgMTg0MjMsIDE4NDM3LCAxODQ0NywgCisgICAgMTg0NTMsIDE4NDU5LCAxODQ2NywgMTg0NzUsIDE4NDgzLCAxODQ5MSwgMTg0OTcsIDE4NTAzLCAxODUwNiwgMTg1MTAsIAorICAgIDE4NTE0LCAxODUxOCwgMTg1MjIsIDE4NTI2LCAxODUzMCwgMCwgMTg1MzQsIDE4NTM4LCAxODU0MiwgMTg1NDYsIDE4NTUwLCAKKyAgICAxODU1NCwgMTg1NTgsIDE4NTYyLCAxODU2NiwgMTg1NzAsIDE4NTc0LCAxODU3NywgMTg1ODAsIDE4NTg0LCAxODU4OCwgCisgICAgMTg1OTIsIDE4NTk1LCAxODU5OSwgMTg2MDMsIDE4NjA3LCAxODYxMSwgMTg2MTUsIDE4NjE5LCAxODYyMywgMTg2MjcsIAorICAgIDE4NjMwLCAxODYzNCwgMTg2MzcsIDE4NjQxLCAxODY0NSwgMTg2NDksIDE4NjUyLCAxODY1NSwgMTg2NTksIDE4NjY1LCAKKyAgICAxODY2OSwgMCwgMCwgMCwgMCwgMTg2NzMsIDE4Njc4LCAxODY4MiwgMTg2ODcsIDE4NjkxLCAxODY5NiwgMTg3MDEsIAorICAgIDE4NzA3LCAxODcxMiwgMTg3MTgsIDE4NzIyLCAxODcyNywgMTg3MzEsIDE4NzM2LCAxODc0NiwgMTg3NTIsIDE4NzU4LCAKKyAgICAxODc2NSwgMTg3NzUsIDE4NzgxLCAxODc4NSwgMTg3ODksIDE4Nzk1LCAxODgwMSwgMTg4MDksIDE4ODE1LCAxODgyMywgCisgICAgMTg4MzEsIDE4ODM5LCAxODg0OSwgMTg4NTcsIDE4ODY3LCAxODg3MiwgMTg4NzgsIDE4ODg0LCAxODg5MCwgMTg4OTYsIAorICAgIDE4OTAyLCAxODkwOCwgMCwgMTg5MTQsIDE4OTIwLCAxODkyNiwgMTg5MzIsIDE4OTM4LCAxODk0NCwgMTg5NTAsIDE4OTU2LCAKKyAgICAxODk2MiwgMTg5NjgsIDE4OTc0LCAxODk3OSwgMTg5ODQsIDE4OTkwLCAxODk5NiwgMTkwMDIsIDE5MDA3LCAxOTAxMywgCisgICAgMTkwMTksIDE5MDI1LCAxOTAzMSwgMTkwMzcsIDE5MDQzLCAxOTA0OSwgMTkwNTUsIDE5MDYwLCAxOTA2NiwgMTkwNzEsIAorICAgIDE5MDc3LCAxOTA4MywgMTkwODksIDE5MDk0LCAxOTA5OSwgMTkxMDUsIDE5MTEzLCAxOTEyMCwgMCwgMTkxMjgsIDE5MTM1LCAKKyAgICAxOTE0OCwgMTkxNTUsIDE5MTYyLCAxOTE3MCwgMTkxNzgsIDE5MTg0LCAxOTE5MCwgMTkxOTYsIDE5MjA2LCAxOTIxMSwgCisgICAgMTkyMTcsIDE5MjI3LCAxOTIzNywgMCwgMTkyNDcsIDE5MjU3LCAxOTI2NSwgMTkyNzcsIDE5Mjg5LCAxOTI5NSwgMTkzMDksIAorICAgIDE5MzI0LCAxOTMyOSwgMTkzMzQsIDE5MzQyLCAxOTM1MCwgMTkzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5MzY2LCAxOTM2OSwgMTkzNzMsIDE5Mzc3LCAxOTM4MSwgMTkzODUsIDE5Mzg5LCAxOTM5MywgMTkzOTcsIAorICAgIDE5NDAxLCAxOTQwNSwgMTk0MDksIDE5NDEzLCAxOTQxNywgMTk0MjEsIDE5NDI1LCAxOTQyOSwgMTk0MzMsIDE5NDM3LCAKKyAgICAxOTQ0MSwgMTk0NDUsIDE5NDQ4LCAxOTQ1MSwgMTk0NTUsIDE5NDU5LCAxOTQ2MywgMTk0NjYsIDE5NDY5LCAxOTQ3MywgCisgICAgMTk0NzYsIDE5NDgwLCAxOTQ4NCwgMTk0ODcsIDE5NDkxLCAxOTQ5NCwgMTk0OTksIDE5NTAyLCAxOTUwNiwgMTk1MDksIAorICAgIDE5NTEzLCAxOTUxNiwgMTk1MjEsIDE5NTI0LCAxOTUyOCwgMTk1MzUsIDE5NTQwLCAxOTU0NCwgMTk1NDksIDE5NTUzLCAKKyAgICAxOTU1OCwgMTk1NjIsIDE5NTY3LCAxOTU3NCwgMTk1ODAsIDE5NTg1LCAxOTU4OSwgMTk1OTMsIDE5NTk3LCAxOTYwMSwgCisgICAgMTk2MDUsIDE5NjEwLCAxOTYxNiwgMTk2MjIsIDE5NjI3LCAxOTYzMywgMTk2MzcsIDE5NjQwLCAxOTY0MywgMTk2NDYsIAorICAgIDE5NjQ5LCAxOTY1MiwgMTk2NTUsIDE5NjU5LCAxOTY2MiwgMTk2NjYsIDE5NjcyLCAxOTY3NiwgMTk2ODAsIDE5Njg0LCAKKyAgICAxOTY4OCwgMTk2OTIsIDE5Njk2LCAxOTcwMCwgMTk3MDQsIDE5NzA5LCAxOTcxMywgMTk3MTgsIDE5NzIzLCAxOTcyOSwgCisgICAgMTk3MzQsIDE5NzQwLCAxOTc0NiwgMTk3NTIsIDE5NzU4LCAxOTc2NCwgMTk3NzEsIDE5Nzc4LCAxOTc4NSwgMTk3OTMsIAorICAgIDE5ODAyLCAxOTgxMSwgMTk4MjIsIDE5ODMyLCAxOTg0MiwgMTk4NTMsIDE5ODY0LCAxOTg3NCwgMTk4ODQsIDE5ODk0LCAKKyAgICAxOTkwNCwgMTk5MTQsIDE5OTI0LCAxOTkzNCwgMTk5NDQsIDE5OTUyLCAxOTk1OSwgMTk5NjUsIDE5OTcyLCAxOTk3NywgCisgICAgMTk5ODMsIDE5OTg5LCAxOTk5NSwgMjAwMDEsIDIwMDA3LCAyMDAxMywgMjAwMTgsIDIwMDI0LCAyMDAzMCwgMjAwMzYsIAorICAgIDIwMDQyLCAyMDA0NywgMjAwNTUsIDIwMDYyLCAyMDA2OCwgMjAwNzUsIDIwMDgzLCAyMDA4OSwgMjAwOTUsIDIwMTAxLCAKKyAgICAyMDEwNywgMjAxMTUsIDIwMTIzLCAyMDEzMywgMjAxNDEsIDIwMTQ5LCAyMDE1NSwgMjAxNjAsIDIwMTY1LCAyMDE3MCwgCisgICAgMjAxNzUsIDIwMTgwLCAyMDE4NSwgMjAxOTEsIDIwMTk2LCAyMDIwMiwgMjAyMDgsIDIwMjE0LCAyMDIyMCwgMjAyMjcsIAorICAgIDIwMjMyLCAyMDIzOCwgMjAyNDMsIDIwMjQ4LCAyMDI1MywgMjAyNTgsIDIwMjYzLCAyMDI2OCwgMjAyNzMsIDIwMjc4LCAKKyAgICAyMDI4MywgMjAyODgsIDIwMjkzLCAyMDI5OCwgMjAzMDMsIDIwMzA4LCAyMDMxMywgMjAzMTgsIDIwMzIzLCAyMDMyOCwgCisgICAgMjAzMzMsIDIwMzM4LCAyMDM0MywgMjAzNDgsIDIwMzUzLCAyMDM1OCwgMjAzNjMsIDIwMzY4LCAyMDM3MywgMjAzNzgsIAorICAgIDIwMzgzLCAyMDM4OCwgMjAzOTMsIDIwMzk4LCAyMDQwMywgMjA0MDgsIDIwNDEzLCAyMDQxOCwgMjA0MjMsIDAsIDIwNDI4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMDQzMywgMCwgMCwgMjA0MzgsIDIwNDQyLCAyMDQ0NiwgMjA0NTAsIDIwNDU0LCAyMDQ1OCwgCisgICAgMjA0NjIsIDIwNDY2LCAyMDQ3MCwgMjA0NzQsIDIwNDc4LCAyMDQ4MiwgMjA0ODYsIDIwNDkwLCAyMDQ5NCwgMjA0OTgsIAorICAgIDIwNTAyLCAyMDUwNiwgMjA1MTAsIDIwNTE0LCAyMDUxOCwgMjA1MjIsIDIwNTI2LCAyMDUzMCwgMjA1MzQsIDIwNTM4LCAKKyAgICAyMDU0MiwgMjA1NDYsIDIwNTUwLCAyMDU1NCwgMjA1NTgsIDIwNTYyLCAyMDU2NiwgMjA1NzAsIDIwNTc0LCAyMDU3OCwgCisgICAgMjA1ODIsIDIwNTg2LCAyMDU5MCwgMjA1OTQsIDIwNTk4LCAyMDYwMiwgMjA2MDgsIDIwNjEyLCAyMDYxNywgMjA2MjIsIAorICAgIDIwNjI2LCAyMDYzMSwgMjA2MzYsIDIwNjQwLCAyMDY0NCwgMjA2NDgsIDIwNjUyLCAyMDY1NiwgMjA2NjAsIDIwNjY0LCAKKyAgICAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgMjA2ODQsIDIwNjg4LCAyMDY5MiwgMjA2OTYsIDIwNzAwLCAyMDcwNCwgCisgICAgMjA3MDgsIDIwNzEyLCAyMDcxNiwgMjA3MjAsIDIwNzI0LCAyMDcyOCwgMjA3MzIsIDIwNzM2LCAyMDc0MCwgMjA3NDQsIAorICAgIDIwNzQ4LCAyMDc1MiwgMjA3NTYsIDIwNzYwLCAyMDc2NCwgMjA3NjgsIDIwNzcyLCAyMDc3NiwgMjA3ODAsIDIwNzg0LCAKKyAgICAyMDc4OCwgMjA3OTIsIDIwNzk2LCAyMDgwMCwgMjA4MDQsIDIwODA4LCAyMDgxMiwgMjA4MTYsIDIwODIwLCAyMDgyNCwgCisgICAgMjA4MjgsIDIwODMyLCAyMDgzNiwgMjA4NDAsIDIwODQ0LCAyMDg0OCwgMjA4NTIsIDIwODU2LCAyMDg2MCwgMjA4NjQsIAorICAgIDIwODY4LCAyMDg3MiwgMjA4NzYsIDIwODgwLCAyMDg4NCwgMjA4ODgsIDIwODkyLCAyMDg5NiwgMjA5MDAsIDIwOTA0LCAKKyAgICAyMDkwOCwgMjA5MTIsIDIwOTE2LCAyMDkyMCwgMjA5MjQsIDIwOTI4LCAyMDkzMiwgMjA5MzYsIDIwOTQwLCAyMDk0NCwgCisgICAgMjA5NDgsIDIwOTUyLCAyMDk1NiwgMjA5NjAsIDIwOTY0LCAyMDk2OCwgMjA5NzIsIDIwOTc2LCAyMDk4MCwgMjA5ODQsIAorICAgIDIwOTg4LCAyMDk5MiwgMjA5OTYsIDIxMDAwLCAyMTAwNCwgMjEwMDgsIDIxMDEyLCAyMTAxNiwgMjEwMjAsIDIxMDI0LCAKKyAgICAyMTAyNywgMjEwMzEsIDIxMDM0LCAyMTAzOCwgMjEwNDIsIDIxMDQ1LCAyMTA0OSwgMjEwNTMsIDIxMDU2LCAyMTA2MCwgCisgICAgMjEwNjQsIDIxMDY4LCAyMTA3MiwgMjEwNzUsIDIxMDc5LCAyMTA4MywgMjEwODcsIDIxMDkxLCAyMTA5NSwgMjEwOTksIAorICAgIDIxMTAyLCAyMTEwNiwgMjExMTAsIDIxMTE0LCAyMTExOCwgMjExMjIsIDIxMTI2LCAyMTEzMCwgMjExMzQsIDIxMTM4LCAKKyAgICAyMTE0MiwgMjExNDYsIDIxMTUwLCAyMTE1NCwgMjExNTgsIDIxMTYyLCAyMTE2NiwgMjExNzAsIDIxMTc0LCAyMTE3OCwgCisgICAgMjExODIsIDIxMTg2LCAyMTE5MCwgMjExOTQsIDIxMTk4LCAyMTIwMiwgMjEyMDYsIDIxMjEwLCAyMTIxNCwgMjEyMTgsIAorICAgIDIxMjIyLCAyMTIyNiwgMjEyMzAsIDIxMjM0LCAyMTIzOCwgMjEyNDIsIDIxMjQ2LCAyMTI1MCwgMjEyNTQsIDIxMjU4LCAKKyAgICAyMTI2MiwgMjEyNjYsIDIxMjcwLCAyMTI3NCwgMjEyNzgsIDIxMjgyLCAyMTI4NiwgMjEyOTAsIDIxMjk0LCAyMTI5OCwgCisgICAgMjEzMDIsIDIxMzA2LCAyMTMxMCwgMjEzMTQsIDIxMzE4LCAyMTMyMiwgMjEzMjYsIDIxMzMwLCAyMTMzNCwgMjEzMzgsIAorICAgIDIxMzQyLCAyMTM0NiwgMjEzNTAsIDIxMzU0LCAyMTM1OCwgMjEzNjIsIDIxMzY2LCAyMTM3MCwgMjEzNzQsIDIxMzc4LCAKKyAgICAyMTM4MiwgMjEzODYsIDIxMzkwLCAyMTM5NCwgMjEzOTgsIDIxNDAyLCAyMTQwNiwgMjE0MTAsIDIxNDE0LCAyMTQxOCwgCisgICAgMjE0MjIsIDIxNDI2LCAyMTQzMCwgMjE0MzQsIDIxNDM4LCAyMTQ0MiwgMjE0NDYsIDIxNDUwLCAyMTQ1NCwgMjE0NTgsIAorICAgIDIxNDYyLCAyMTQ2NiwgMjE0NzAsIDIxNDc0LCAyMTQ3OCwgMjE0ODIsIDIxNDg2LCAyMTQ5MCwgMjE0OTQsIDIxNDk4LCAKKyAgICAyMTUwMiwgMjE1MDYsIDIxNTEwLCAyMTUxNCwgMjE1MTgsIDIxNTIyLCAyMTUyNiwgMjE1MzAsIDIxNTM0LCAyMTUzOCwgCisgICAgMjE1NDIsIDIxNTQ2LCAyMTU1MCwgMjE1NTQsIDIxNTU4LCAyMTU2MiwgMjE1NjYsIDIxNTcwLCAyMTU3NCwgMjE1NzgsIAorICAgIDIxNTgyLCAyMTU4NiwgMjE1OTAsIDIxNTk0LCAyMTU5OCwgMjE2MDIsIDIxNjA2LCAyMTYxMCwgMjE2MTQsIDIxNjE4LCAKKyAgICAyMTYyMiwgMjE2MjYsIDIxNjMwLCAyMTYzNCwgMjE2MzgsIDIxNjQyLCAyMTY0NiwgMjE2NTAsIDIxNjU0LCAyMTY1NywgCisgICAgMjE2NjEsIDIxNjY1LCAyMTY2OSwgMjE2NzMsIDIxNjc3LCAyMTY4MSwgMjE2ODUsIDIxNjg4LCAyMTY5MiwgMjE2OTYsIAorICAgIDIxNzAwLCAyMTcwNCwgMjE3MDgsIDIxNzEyLCAyMTcxNiwgMjE3MjAsIDIxNzI0LCAyMTcyOCwgMjE3MzIsIDIxNzM2LCAKKyAgICAyMTc0MCwgMjE3NDQsIDIxNzQ4LCAyMTc1MSwgMjE3NTUsIDIxNzU5LCAyMTc2MywgMjE3NjcsIDIxNzcxLCAyMTc3NSwgCisgICAgMjE3NzksIDIxNzgzLCAyMTc4NywgMjE3OTEsIDIxNzk1LCAyMTc5OSwgMjE4MDMsIDIxODA3LCAyMTgxMSwgMjE4MTUsIAorICAgIDIxODE5LCAyMTgyMywgMjE4MjcsIDIxODMxLCAyMTgzNSwgMjE4MzksIDIxODQzLCAyMTg0NywgMjE4NTEsIDIxODU1LCAKKyAgICAyMTg1OSwgMjE4NjMsIDIxODY3LCAyMTg3MSwgMjE4NzUsIDIxODc5LCAyMTg4MywgMjE4ODcsIDIxODkxLCAyMTg5NSwgCisgICAgMjE4OTksIDIxOTAzLCAyMTkwNywgMjE5MTEsIDIxOTE1LCAyMTkxOSwgMjE5MjMsIDIxOTI3LCAyMTkzMSwgMjE5MzUsIAorICAgIDIxOTM5LCAwLCAyMTk0MywgMjE5NDcsIDIxOTUxLCAyMTk1NSwgMCwgMCwgMjE5NTksIDIxOTYzLCAyMTk2NywgMjE5NzEsIAorICAgIDIxOTc1LCAyMTk3OSwgMjE5ODMsIDAsIDIxOTg3LCAwLCAyMTk5MSwgMjE5OTUsIDIxOTk5LCAyMjAwMywgMCwgMCwgCisgICAgMjIwMDcsIDIyMDExLCAyMjAxNSwgMjIwMTksIDIyMDIzLCAyMjAyNywgMjIwMzEsIDIyMDM1LCAyMjAzOSwgMjIwNDMsIAorICAgIDIyMDQ3LCAyMjA1MSwgMjIwNTUsIDIyMDU5LCAyMjA2MywgMjIwNjcsIDIyMDcxLCAyMjA3NSwgMjIwNzksIDIyMDgzLCAKKyAgICAyMjA4NywgMjIwOTEsIDIyMDk1LCAyMjA5OCwgMjIxMDIsIDIyMTA2LCAyMjExMCwgMjIxMTQsIDIyMTE4LCAyMjEyMiwgCisgICAgMjIxMjYsIDIyMTMwLCAyMjEzNCwgMjIxMzgsIDIyMTQyLCAyMjE0NiwgMjIxNTAsIDIyMTU0LCAyMjE1OCwgMjIxNjIsIAorICAgIDIyMTY2LCAwLCAyMjE3MCwgMjIxNzQsIDIyMTc4LCAyMjE4MiwgMCwgMCwgMjIxODYsIDIyMTg5LCAyMjE5MywgMjIxOTcsIAorICAgIDIyMjAxLCAyMjIwNSwgMjIyMDksIDIyMjEzLCAyMjIxNywgMjIyMjEsIDIyMjI1LCAyMjIyOSwgMjIyMzMsIDIyMjM3LCAKKyAgICAyMjI0MSwgMjIyNDUsIDIyMjQ5LCAyMjI1NCwgMjIyNTksIDIyMjY0LCAyMjI3MCwgMjIyNzYsIDIyMjgxLCAyMjI4NiwgCisgICAgMjIyOTIsIDIyMjk1LCAyMjI5OSwgMjIzMDMsIDIyMzA3LCAyMjMxMSwgMjIzMTUsIDIyMzE5LCAyMjMyMywgMCwgMjIzMjcsIAorICAgIDIyMzMxLCAyMjMzNSwgMjIzMzksIDAsIDAsIDIyMzQzLCAyMjM0NywgMjIzNTEsIDIyMzU1LCAyMjM1OSwgMjIzNjMsIAorICAgIDIyMzY3LCAwLCAyMjM3MSwgMCwgMjIzNzUsIDIyMzc5LCAyMjM4MywgMjIzODcsIDAsIDAsIDIyMzkxLCAyMjM5NSwgCisgICAgMjIzOTksIDIyNDAzLCAyMjQwNywgMjI0MTEsIDIyNDE1LCAyMjQxOSwgMjI0MjMsIDIyNDI4LCAyMjQzMywgMjI0MzgsIAorICAgIDIyNDQ0LCAyMjQ1MCwgMjI0NTUsIDAsIDIyNDYwLCAyMjQ2NCwgMjI0NjgsIDIyNDcyLCAyMjQ3NiwgMjI0ODAsIDIyNDg0LCAKKyAgICAyMjQ4OCwgMjI0OTIsIDIyNDk2LCAyMjUwMCwgMjI1MDQsIDIyNTA4LCAyMjUxMiwgMjI1MTYsIDIyNTIwLCAyMjUyNCwgCisgICAgMjI1MjcsIDIyNTMxLCAyMjUzNSwgMjI1MzksIDIyNTQzLCAyMjU0NywgMjI1NTEsIDIyNTU1LCAyMjU1OSwgMjI1NjMsIAorICAgIDIyNTY3LCAyMjU3MSwgMjI1NzUsIDIyNTc5LCAyMjU4MywgMjI1ODcsIDIyNTkxLCAyMjU5NSwgMjI1OTksIDIyNjAzLCAKKyAgICAyMjYwNywgMjI2MTEsIDIyNjE1LCAyMjYxOSwgMjI2MjMsIDIyNjI3LCAyMjYzMSwgMjI2MzUsIDIyNjM5LCAyMjY0MywgCisgICAgMjI2NDcsIDIyNjUxLCAyMjY1NSwgMjI2NTksIDIyNjYzLCAyMjY2NywgMjI2NzEsIDIyNjc1LCAyMjY3OSwgMjI2ODMsIDAsIAorICAgIDIyNjg3LCAyMjY5MSwgMjI2OTUsIDIyNjk5LCAwLCAwLCAyMjcwMywgMjI3MDcsIDIyNzExLCAyMjcxNSwgMjI3MTksIAorICAgIDIyNzIzLCAyMjcyNywgMjI3MzEsIDIyNzM1LCAyMjczOSwgMjI3NDMsIDIyNzQ3LCAyMjc1MSwgMjI3NTUsIDIyNzU5LCAKKyAgICAyMjc2MywgMjI3NjcsIDIyNzcxLCAyMjc3NSwgMjI3NzksIDIyNzgzLCAyMjc4NywgMjI3OTEsIDIyNzk1LCAyMjc5OSwgCisgICAgMjI4MDMsIDIyODA3LCAyMjgxMSwgMjI4MTUsIDIyODE5LCAyMjgyMywgMjI4MjcsIDIyODMxLCAyMjgzNSwgMjI4MzksIAorICAgIDIyODQzLCAyMjg0NywgMjI4NTEsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc5LCAKKyAgICAyMjg4MywgMjI4ODcsIDIyODkxLCAyMjg5NSwgMjI4OTksIDIyOTAzLCAyMjkwNywgMjI5MTEsIDIyOTE1LCAyMjkxOSwgCisgICAgMjI5MjMsIDIyOTI3LCAyMjkzMCwgMjI5MzQsIDIyOTM4LCAyMjk0MiwgMjI5NDYsIDIyOTUwLCAyMjk1NCwgMjI5NTgsIAorICAgIDIyOTYyLCAyMjk2NiwgMCwgMCwgMjI5NzAsIDIyOTc5LCAyMjk4NSwgMjI5OTAsIDIyOTk0LCAyMjk5NywgMjMwMDIsIAorICAgIDIzMDA1LCAyMzAwOCwgMjMwMTEsIDIzMDE2LCAyMzAyMCwgMjMwMjUsIDIzMDI4LCAyMzAzMSwgMjMwMzQsIDIzMDM3LCAKKyAgICAyMzA0MCwgMjMwNDMsIDIzMDQ3LCAyMzA1MCwgMjMwNTQsIDIzMDU4LCAyMzA2MiwgMjMwNjYsIDIzMDcwLCAyMzA3NCwgCisgICAgMjMwNzgsIDIzMDgyLCAyMzA4NiwgMjMwOTAsIDIzMDk0LCAwLCAwLCAwLCAyMzEwMCwgMjMxMDYsIDIzMTEwLCAyMzExNCwgCisgICAgMjMxMTgsIDIzMTI0LCAyMzEyOCwgMjMxMzIsIDIzMTM2LCAyMzE0MiwgMjMxNDYsIDIzMTUwLCAyMzE1NCwgMjMxNjAsIAorICAgIDIzMTY0LCAyMzE2OCwgMjMxNzIsIDIzMTc4LCAyMzE4NCwgMjMxOTAsIDIzMTk4LCAyMzIwNCwgMjMyMTAsIDIzMjE2LCAKKyAgICAyMzIyMiwgMjMyMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMjM0LCAyMzIzNywgMjMyNDAsIDIzMjQzLCAyMzI0NiwgMjMyNDksIAorICAgIDIzMjUzLCAyMzI1NywgMjMyNjAsIDIzMjY0LCAyMzI2OCwgMjMyNzIsIDIzMjc2LCAyMzI4MCwgMjMyODMsIDIzMjg3LCAKKyAgICAyMzI5MSwgMjMyOTUsIDIzMjk5LCAyMzMwMywgMjMzMDYsIDIzMzEwLCAyMzMxNCwgMjMzMTgsIDIzMzIyLCAyMzMyNiwgCisgICAgMjMzMjksIDIzMzMzLCAyMzMzNywgMjMzNDEsIDIzMzQ1LCAyMzM0OCwgMjMzNTIsIDIzMzU2LCAyMzM2MCwgMjMzNjQsIAorICAgIDIzMzY4LCAyMzM3MiwgMjMzNzYsIDIzMzgwLCAyMzM4NCwgMjMzODgsIDIzMzkyLCAyMzM5NiwgMjM0MDAsIDIzNDA0LCAKKyAgICAyMzQwOCwgMjM0MTIsIDIzNDE2LCAyMzQyMCwgMjM0MjQsIDIzNDI4LCAyMzQzMiwgMjM0MzYsIDIzNDQwLCAyMzQ0NCwgCisgICAgMjM0NDgsIDIzNDUyLCAyMzQ1NiwgMjM0NjAsIDIzNDY0LCAyMzQ2OCwgMjM0NzIsIDIzNDc2LCAyMzQ4MCwgMjM0ODQsIAorICAgIDIzNDg4LCAyMzQ5MiwgMjM0OTYsIDIzNTAwLCAyMzUwNCwgMjM1MDgsIDIzNTEyLCAyMzUxNiwgMjM1MjAsIDIzNTI0LCAKKyAgICAyMzUyOCwgMjM1MzIsIDIzNTM2LCAyMzU0MCwgMjM1NDMsIDIzNTQ3LCAyMzU1MSwgMjM1NTUsIDIzNTU5LCAyMzU2MywgMCwgCisgICAgMCwgMjM1NjcsIDIzNTcyLCAyMzU3NywgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMCwgMCwgMjM1OTcsIDIzNjAxLCAyMzYwNCwgCisgICAgMjM2MDgsIDIzNjExLCAyMzYxNSwgMjM2MTgsIDIzNjIyLCAyMzYyOCwgMjM2MzMsIDIzNjM3LCAyMzY0MCwgMjM2NDQsIAorICAgIDIzNjQ4LCAyMzY1NCwgMjM2NTgsIDIzNjY0LCAyMzY2OCwgMjM2NzQsIDIzNjc4LCAyMzY4NCwgMjM2ODgsIDIzNjk0LCAKKyAgICAyMzcwMCwgMjM3MDQsIDIzNzEwLCAyMzcxNCwgMjM3MjAsIDIzNzI2LCAyMzczMCwgMjM3MzYsIDIzNzQyLCAyMzc0NiwgCisgICAgMjM3NTEsIDIzNzU5LCAyMzc2NywgMjM3NzQsIDIzNzc5LCAyMzc4NCwgMjM3OTMsIDIzNzk5LCAyMzgwNywgMjM4MTIsIAorICAgIDIzODE4LCAyMzgyMiwgMjM4MjYsIDIzODMwLCAyMzgzNCwgMjM4MzgsIDIzODQyLCAyMzg0NiwgMjM4NTAsIDIzODU0LCAKKyAgICAyMzg1OCwgMjM4NjQsIDIzODY5LCAyMzg3NCwgMjM4NzcsIDIzODgxLCAyMzg4NSwgMjM4OTEsIDIzODk1LCAyMzkwMSwgCisgICAgMjM5MDUsIDIzOTExLCAyMzkxNSwgMjM5MjEsIDIzOTI1LCAyMzkzMSwgMjM5MzUsIDIzOTQxLCAyMzk0NSwgMjM5NTEsIAorICAgIDIzOTU3LCAyMzk2MSwgMjM5NjcsIDIzOTcyLCAyMzk3NiwgMjM5ODAsIDIzOTg0LCAyMzk4OCwgMjM5OTEsIDIzOTk1LCAKKyAgICAyNDAwMSwgMjQwMDYsIDI0MDExLCAyNDAxNSwgMjQwMTksIDI0MDIzLCAyNDAyOSwgMjQwMzMsIDI0MDM5LCAyNDA0MywgCisgICAgMjQwNDksIDI0MDUyLCAyNDA1NywgMjQwNjEsIDI0MDY3LCAyNDA3MSwgMjQwNzcsIDI0MDgxLCAyNDA4NywgMjQwOTMsIAorICAgIDI0MDk3LCAyNDEwMSwgMjQxMDUsIDI0MTA5LCAyNDExMywgMjQxMTcsIDI0MTIxLCAyNDEyNSwgMjQxMjksIDI0MTMzLCAKKyAgICAyNDEzNywgMjQxNDMsIDI0MTQ2LCAyNDE1MCwgMjQxNTQsIDI0MTYwLCAyNDE2NCwgMjQxNzAsIDI0MTc0LCAyNDE4MCwgCisgICAgMjQxODQsIDI0MTkwLCAyNDE5NCwgMjQyMDAsIDI0MjA0LCAyNDIxMCwgMjQyMTQsIDI0MjIwLCAyNDIyNiwgMjQyMzAsIAorICAgIDI0MjM0LCAyNDI0MCwgMjQyNDYsIDI0MjUyLCAyNDI1OCwgMjQyNjIsIDI0MjY2LCAyNDI3MCwgMjQyNzQsIDI0Mjc4LCAKKyAgICAyNDI4MiwgMjQyODgsIDI0MjkyLCAyNDI5NiwgMjQzMDAsIDI0MzA2LCAyNDMxMCwgMjQzMTYsIDI0MzIwLCAyNDMyNiwgCisgICAgMjQzMzAsIDI0MzM2LCAyNDM0MCwgMjQzNDYsIDI0MzUwLCAyNDM1NiwgMjQzNjAsIDI0MzY2LCAyNDM3MiwgMjQzNzYsIAorICAgIDI0MzgyLCAyNDM4NiwgMjQzOTAsIDI0Mzk0LCAyNDM5OCwgMjQ0MDIsIDI0NDA2LCAyNDQxMiwgMjQ0MTUsIDI0NDE5LCAKKyAgICAyNDQyMywgMjQ0MjksIDI0NDMzLCAyNDQzOSwgMjQ0NDMsIDI0NDQ5LCAyNDQ1MywgMjQ0NTksIDI0NDYzLCAyNDQ2OSwgCisgICAgMjQ0NzMsIDI0NDc5LCAyNDQ4MywgMjQ0ODksIDI0NDk1LCAyNDQ5OSwgMjQ1MDUsIDI0NTA5LCAyNDUxNSwgMjQ1MjEsIAorICAgIDI0NTI1LCAyNDUyOSwgMjQ1MzMsIDI0NTM3LCAyNDU0MSwgMjQ1NDUsIDI0NTUxLCAyNDU1NCwgMjQ1NTgsIDI0NTYyLCAKKyAgICAyNDU2OCwgMjQ1NzIsIDI0NTc4LCAyNDU4MiwgMjQ1ODgsIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAyNDYxMSwgCisgICAgMjQ2MTUsIDI0NjE5LCAyNDYyMywgMjQ2MjcsIDI0NjMxLCAyNDYzNywgMjQ2NDAsIDI0NjQ0LCAyNDY0OCwgMjQ2NTQsIAorICAgIDI0NjU4LCAyNDY2NCwgMjQ2NjgsIDI0Njc0LCAyNDY3OCwgMjQ2ODQsIDI0Njg4LCAyNDY5NCwgMjQ2OTgsIDI0NzA0LCAKKyAgICAyNDcwOCwgMjQ3MTQsIDI0NzE3LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAyNDc0NiwgCisgICAgMjQ3NTAsIDI0NzU2LCAyNDc2MCwgMjQ3NjQsIDI0NzY4LCAyNDc3NCwgMjQ3NzgsIDI0Nzg0LCAyNDc4OCwgMjQ3OTQsIAorICAgIDI0Nzk4LCAyNDgwNCwgMjQ4MDgsIDI0ODE0LCAyNDgxOCwgMjQ4MjQsIDI0ODI4LCAyNDgzNCwgMjQ4NDAsIDI0ODQ0LCAKKyAgICAyNDg1MCwgMjQ4NTQsIDI0ODYwLCAyNDg2NiwgMjQ4NzIsIDI0ODc4LCAyNDg4NCwgMjQ4OTAsIDI0ODk2LCAyNDkwMiwgCisgICAgMjQ5MDYsIDI0OTEwLCAyNDkxNCwgMjQ5MTgsIDI0OTIyLCAyNDkyNiwgMjQ5MzAsIDI0OTM0LCAyNDk0MCwgMjQ5NDQsIAorICAgIDI0OTUwLCAyNDk1NCwgMjQ5NjAsIDI0OTY0LCAyNDk3MCwgMjQ5NzQsIDI0OTgwLCAyNDk4NCwgMjQ5OTAsIDI0OTk0LCAKKyAgICAyNTAwMCwgMjUwMDQsIDI1MDA4LCAyNTAxMiwgMjUwMTYsIDI1MDIwLCAyNTAyNCwgMjUwMjgsIDI1MDM0LCAyNTAzNywgCisgICAgMjUwNDEsIDI1MDQ1LCAyNTA1MSwgMjUwNTUsIDI1MDYxLCAyNTA2NSwgMjUwNzEsIDI1MDc1LCAyNTA4MSwgMjUwODUsIAorICAgIDI1MDkxLCAyNTA5NSwgMjUxMDEsIDI1MTA1LCAyNTExMSwgMjUxMTcsIDI1MTIxLCAyNTEyNywgMjUxMzMsIDI1MTM5LCAKKyAgICAyNTE0MywgMjUxNDksIDI1MTU1LCAyNTE1OSwgMjUxNjMsIDI1MTY3LCAyNTE3MSwgMjUxNzUsIDI1MTgxLCAyNTE4NSwgCisgICAgMjUxODksIDI1MTk0LCAyNTE5OCwgMjUyMDQsIDI1MjA3LCAyNTIxMiwgMjUyMTYsIDI1MjIwLCAyNTIyNCwgMjUyMjgsIAorICAgIDI1MjMyLCAyNTIzNiwgMjUyNDAsIDI1MjQ0LCAyNTI0OCwgMjUyNTIsIDI1MjU4LCAyNTI2MiwgMjUyNjYsIDI1MjcyLCAKKyAgICAyNTI3NiwgMjUyODIsIDI1Mjg2LCAyNTI5MiwgMjUyOTYsIDI1MzAwLCAyNTMwNCwgMjUzMDgsIDI1MzEyLCAyNTMxOCwgCisgICAgMjUzMjIsIDI1MzI2LCAyNTMzMCwgMjUzMzQsIDI1MzM4LCAyNTM0MiwgMjUzNDYsIDI1MzUwLCAyNTM1NCwgMjUzNTgsIAorICAgIDI1MzY0LCAyNTM3MCwgMjUzNzYsIDI1MzgyLCAyNTM4OCwgMjUzOTMsIDI1Mzk5LCAyNTQwNSwgMjU0MTEsIDI1NDE1LCAKKyAgICAyNTQxOSwgMjU0MjMsIDI1NDI3LCAyNTQzMSwgMjU0MzUsIDI1NDM5LCAyNTQ0MywgMjU0NDcsIDI1NDUxLCAyNTQ1NSwgCisgICAgMjU0NTksIDI1NDYzLCAyNTQ2OSwgMjU0NzUsIDI1NDgxLCAyNTQ4NywgMjU0OTEsIDI1NDk1LCAyNTQ5OSwgMjU1MDMsIAorICAgIDI1NTA3LCAyNTUxMSwgMjU1MTUsIDI1NTE5LCAyNTUyMywgMjU1MjksIDI1NTM1LCAyNTU0MSwgMjU1NDcsIDI1NTUzLCAKKyAgICAyNTU1OSwgMjU1NjUsIDI1NTcxLCAyNTU3NywgMjU1ODEsIDI1NTg1LCAyNTU4OSwgMjU1OTMsIDI1NTk3LCAyNTYwMSwgCisgICAgMjU2MDUsIDI1NjExLCAyNTYxNywgMjU2MjMsIDI1NjI5LCAyNTYzNSwgMjU2NDEsIDI1NjQ3LCAyNTY1MywgMjU2NTksIAorICAgIDI1NjY0LCAyNTY2OSwgMjU2NzQsIDI1Njc5LCAyNTY4NSwgMjU2OTEsIDI1Njk3LCAyNTcwMywgMjU3MDksIDI1NzE1LCAKKyAgICAyNTcyMSwgMjU3MjYsIDI1NzMyLCAyNTczOCwgMjU3NDQsIDI1NzQ5LCAyNTc1NSwgMjU3NjEsIDI1NzY3LCAyNTc3MiwgCisgICAgMjU3NzcsIDI1NzgyLCAyNTc4NywgMjU3OTIsIDI1Nzk3LCAyNTgwMiwgMjU4MDcsIDI1ODEyLCAyNTgxNywgMjU4MjIsIAorICAgIDI1ODI3LCAyNTgzMiwgMjU4MzcsIDI1ODQyLCAyNTg0NywgMjU4NTIsIDI1ODU3LCAyNTg2MiwgMjU4NjcsIDI1ODcyLCAKKyAgICAyNTg3NywgMjU4ODIsIDI1ODg3LCAyNTg5MiwgMjU4OTcsIDI1OTAyLCAyNTkwNywgMjU5MTIsIDI1OTE3LCAyNTkyMiwgCisgICAgMjU5MjcsIDI1OTMyLCAyNTkzNywgMjU5NDIsIDI1OTQ3LCAyNTk1MiwgMjU5NTcsIDI1OTYyLCAyNTk2NywgMjU5NzIsIAorICAgIDI1OTc3LCAyNTk4MSwgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAKKyAgICAyNjAyNiwgMjYwMzEsIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgCisgICAgMjYwNzYsIDI2MDgxLCAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTEwLCAyNjExNSwgMjYxMjAsIAorICAgIDI2MTI1LCAyNjEzMCwgMjYxMzUsIDI2MTM5LCAyNjE0NCwgMjYxNDksIDI2MTU0LCAyNjE1OSwgMjYxNjQsIDI2MTY4LCAKKyAgICAyNjE3MywgMjYxNzksIDI2MTg0LCAyNjE4OSwgMjYxOTQsIDI2MTk5LCAyNjIwNSwgMjYyMTAsIDI2MjE1LCAyNjIyMCwgCisgICAgMjYyMjUsIDI2MjMwLCAyNjIzNSwgMjYyNDAsIDI2MjQ1LCAyNjI1MCwgMjYyNTUsIDI2MjYwLCAyNjI2NSwgMjYyNjksIAorICAgIDI2Mjc0LCAyNjI3OSwgMjYyODQsIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTQsIDI2MzE5LCAKKyAgICAyNjMyNCwgMjYzMjksIDI2MzM0LCAyNjMzOSwgMjYzNDQsIDI2MzQ5LCAyNjM1NCwgMjYzNTksIDI2MzY0LCAyNjM2OSwgCisgICAgMjYzNzQsIDI2Mzc5LCAyNjM4NCwgMjYzODksIDI2Mzk0LCAyNjM5OSwgMjY0MDQsIDI2NDA5LCAyNjQxNCwgMjY0MTksIAorICAgIDI2NDI0LCAyNjQzMCwgMjY0MzUsIDI2NDQwLCAyNjQ0NSwgMjY0NTAsIDI2NDU1LCAyNjQ2MCwgMjY0NjUsIDI2NDcwLCAKKyAgICAyNjQ3NSwgMjY0ODAsIDI2NDg1LCAyNjQ5MCwgMjY0OTUsIDI2NTAwLCAyNjUwNSwgMjY1MTAsIDI2NTE1LCAyNjUyMCwgCisgICAgMjY1MjUsIDI2NTMwLCAyNjUzNSwgMjY1NDAsIDI2NTQ1LCAyNjU1MCwgMjY1NTUsIDI2NTYwLCAyNjU2NSwgMjY1NzAsIAorICAgIDI2NTc1LCAyNjU4MCwgMjY1ODUsIDI2NTkwLCAyNjU5NSwgMjY2MDAsIDI2NjA1LCAyNjYxMCwgMjY2MTUsIDI2NjIwLCAKKyAgICAyNjYyNiwgMjY2MzAsIDI2NjM0LCAyNjYzOCwgMjY2NDIsIDI2NjQ2LCAyNjY1MCwgMjY2NTQsIDI2NjU4LCAyNjY2NCwgCisgICAgMjY2NzAsIDI2Njc2LCAyNjY4MiwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDcsIDI2NzEzLCAyNjcxOCwgMjY3MjMsIAorICAgIDI2NzI4LCAyNjczMywgMjY3MzgsIDI2NzQzLCAyNjc0OCwgMjY3NTMsIDI2NzU4LCAyNjc2MywgMjY3NjgsIDI2NzczLCAKKyAgICAyNjc3OCwgMjY3ODMsIDI2Nzg4LCAyNjc5MywgMjY3OTgsIDI2ODAzLCAyNjgwOCwgMjY4MTMsIDI2ODE4LCAyNjgyMywgCisgICAgMjY4MjgsIDI2ODMzLCAyNjgzOCwgMjY4NDMsIDI2ODQ4LCAyNjg1MywgMCwgMCwgMCwgMjY4NjAsIDI2ODcxLCAyNjg3NiwgCisgICAgMjY4ODQsIDI2ODg5LCAyNjg5NCwgMjY4OTksIDI2OTA4LCAyNjkxMywgMjY5MTksIDI2OTI1LCAyNjkzMSwgMjY5MzYsIAorICAgIDI2OTQyLCAyNjk0OCwgMjY5NTIsIDI2OTU3LCAyNjk2MiwgMjY5NzIsIDI2OTc3LCAyNjk4MiwgMjY5ODksIDI2OTk0LCAKKyAgICAyNjk5OSwgMjcwMDgsIDI3MDEzLCAyNzAyMiwgMjcwMjksIDI3MDM2LCAyNzA0MywgMjcwNTAsIDI3MDYxLCAyNzA2OCwgCisgICAgMjcwNzMsIDI3MDgzLCAyNzA4NywgMjcwOTQsIDI3MDk5LCAyNzEwNiwgMjcxMTIsIDI3MTE5LCAyNzEyOCwgMjcxMzUsIAorICAgIDI3MTQyLCAyNzE1MSwgMjcxNTgsIDI3MTYzLCAyNzE2OCwgMjcxNzksIDI3MTg2LCAyNzE5MSwgMjcyMDIsIDI3MjA5LCAKKyAgICAyNzIxNCwgMjcyMTksIDI3MjI3LCAyNzIzNiwgMjcyNDMsIDI3MjUwLCAyNzI2MCwgMjcyNjUsIDI3MjcwLCAyNzI3NSwgCisgICAgMjcyODQsIDI3MjkyLCAyNzI5NywgMjczMDIsIDI3MzA3LCAyNzMxMiwgMjczMTcsIDI3MzIyLCAyNzMyNywgMjczMzIsIAorICAgIDI3MzM3LCAyNzM0MiwgMjczNDcsIDI3MzUzLCAyNzM1OSwgMjczNjUsIDI3MzcwLCAyNzM3NSwgMjczODAsIDI3Mzg1LCAKKyAgICAyNzM5MCwgMjczOTUsIDI3NDA0LCAyNzQxMywgMjc0MjIsIDI3NDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzQ0MCwgCisgICAgMjc0NDQsIDI3NDQ4LCAyNzQ1MiwgMjc0NTYsIDI3NDYxLCAyNzQ2NiwgMjc0NzEsIDI3NDc2LCAyNzQ4MCwgMjc0ODQsIAorICAgIDI3NDg5LCAyNzQ5MywgMCwgMjc0OTcsIDI3NTAxLCAyNzUwNiwgMjc1MTEsIDI3NTE1LCAyNzUyMCwgMjc1MjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NTMwLCAyNzUzNCwgMjc1MzgsIDI3NTQyLCAyNzU0NiwgMjc1NTEsIAorICAgIDI3NTU2LCAyNzU2MSwgMjc1NjYsIDI3NTcwLCAyNzU3NCwgMjc1NzksIDI3NTgzLCAyNzU4NywgMjc1OTIsIDI3NTk2LCAKKyAgICAyNzYwMSwgMjc2MDYsIDI3NjEwLCAyNzYxNSwgMjc2MjAsIDI3NjI1LCAyNzYzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjc2MzYsIDI3NjQwLCAyNzY0NCwgMjc2NDgsIDI3NjUyLCAyNzY1NywgMjc2NjIsIDI3NjY3LCAyNzY3MiwgMjc2NzYsIAorICAgIDI3NjgwLCAyNzY4NSwgMjc2ODksIDI3NjkzLCAyNzY5OCwgMjc3MDIsIDI3NzA3LCAyNzcxMiwgMjc3MTYsIDI3NzIxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcyNiwgMjc3MzAsIDI3NzM0LCAyNzczOCwgMjc3NDIsIAorICAgIDI3NzQ3LCAyNzc1MiwgMjc3NTcsIDI3NzYyLCAyNzc2NiwgMjc3NzAsIDI3Nzc1LCAyNzc3OSwgMCwgMjc3ODMsIDI3Nzg3LCAKKyAgICAyNzc5MiwgMCwgMjc3OTcsIDI3ODAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzgwNywgMjc4MTAsIAorICAgIDI3ODE0LCAyNzgxOCwgMjc4MjIsIDI3ODI2LCAyNzgzMCwgMjc4MzQsIDI3ODM4LCAyNzg0MiwgMjc4NDYsIDI3ODUwLCAKKyAgICAyNzg1NCwgMjc4NTgsIDI3ODYyLCAyNzg2NiwgMjc4NzAsIDI3ODc0LCAyNzg3NywgMjc4ODEsIDI3ODg1LCAyNzg4OSwgCisgICAgMjc4OTMsIDI3ODk3LCAyNzkwMSwgMjc5MDUsIDI3OTA5LCAyNzkxMywgMjc5MTcsIDI3OTIxLCAyNzkyNSwgMjc5MjksIAorICAgIDI3OTMzLCAyNzkzNiwgMjc5MzksIDI3OTQzLCAyNzk0OSwgMjc5NTUsIDI3OTYxLCAyNzk2NywgMjc5NzMsIDI3OTc5LCAKKyAgICAyNzk4NSwgMjc5OTEsIDI3OTk3LCAyODAwMywgMjgwMDksIDI4MDE1LCAyODAyMSwgMjgwMjcsIDI4MDM2LCAyODA0NSwgCisgICAgMjgwNTEsIDI4MDU3LCAyODA2MywgMjgwNjgsIDI4MDcyLCAyODA3NywgMjgwODIsIDI4MDg3LCAyODA5MSwgMjgwOTYsIAorICAgIDI4MTAxLCAyODEwNiwgMjgxMTAsIDI4MTE1LCAyODExOSwgMjgxMjQsIDI4MTI5LCAyODEzNCwgMjgxMzksIDI4MTQzLCAKKyAgICAyODE0NywgMjgxNTEsIDI4MTU1LCAyODE1OSwgMjgxNjMsIDI4MTY3LCAyODE3MSwgMjgxNzUsIDI4MTc5LCAyODE4NSwgCisgICAgMjgxODksIDI4MTkzLCAyODE5NywgMjgyMDEsIDI4MjA1LCAyODIxMywgMjgyMTksIDI4MjIzLCAyODIyOSwgMjgyMzMsIAorICAgIDI4MjM5LCAyODI0MywgMCwgMCwgMjgyNDcsIDI4MjUxLCAyODI1NCwgMjgyNTcsIDI4MjYwLCAyODI2MywgMjgyNjYsIAorICAgIDI4MjY5LCAyODI3MywgMjgyNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MjgwLCAyODI4OCwgMjgyOTYsIDI4MzA0LCAyODMxMiwgCisgICAgMjgzMjAsIDI4MzI4LCAyODMzNiwgMjgzNDQsIDI4MzUyLCAwLCAwLCAwLCAwLCAwLCAwLCAyODM2MCwgMjgzNjMsIDI4MzY2LCAKKyAgICAyODM2OSwgMjgzNzQsIDI4Mzc3LCAyODM4MiwgMjgzODksIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDEyLCAyODQxOSwgCisgICAgMjg0MjYsIDI4NDMzLCAwLCAyODQzNywgMjg0NDEsIDI4NDQ0LCAyODQ0NywgMjg0NTAsIDI4NDUzLCAyODQ1NiwgMjg0NTksIAorICAgIDI4NDYzLCAyODQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjg0NzAsIDI4NDczLCAyODQ3NiwgMjg0NzksIDI4NDgyLCAyODQ4NSwgCisgICAgMjg0ODksIDI4NDkzLCAyODQ5NywgMjg1MDAsIDI4NTA0LCAyODUwOCwgMjg1MTEsIDI4NTE1LCAyODUxOSwgMjg1MjIsIAorICAgIDI4NTI1LCAyODUyOSwgMjg1MzMsIDI4NTM3LCAyODU0MSwgMjg1NDUsIDI4NTQ5LCAyODU1MiwgMjg1NTYsIDI4NTYwLCAKKyAgICAyODU2NCwgMjg1NjcsIDI4NTcxLCAyODU3NSwgMjg1NzksIDI4NTgzLCAyODU4NywgMjg1OTEsIDI4NTk1LCAyODU5OSwgCisgICAgMjg2MDYsIDI4NjExLCAyODYxNiwgMjg2MjEsIDI4NjI2LCAyODYzMiwgMjg2MzgsIDI4NjQ0LCAyODY1MCwgMjg2NTUsIAorICAgIDI4NjYxLCAyODY2NywgMjg2NzIsIDI4Njc4LCAyODY4NCwgMjg2OTAsIDI4Njk2LCAyODcwMiwgMjg3MDcsIDI4NzEzLCAKKyAgICAyODcxOCwgMjg3MjQsIDI4NzMwLCAyODczNiwgMjg3NDIsIDI4NzQ4LCAyODc1MywgMjg3NTgsIDI4NzY0LCAyODc3MCwgCisgICAgMjg3NzUsIDI4NzgxLCAyODc4NiwgMjg3OTIsIDI4Nzk3LCAyODgwMiwgMjg4MDgsIDI4ODE0LCAyODgyMCwgMjg4MjYsIAorICAgIDI4ODMyLCAyODgzOCwgMjg4NDQsIDI4ODUwLCAyODg1NiwgMjg4NjIsIDI4ODY4LCAyODg3NCwgMjg4NzksIDI4ODg0LCAKKyAgICAyODg5MCwgMjg4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OTAyLCAyODkxMSwgMjg5MjAsIDI4OTI4LCAyODkzNiwgCisgICAgMjg5NDYsIDI4OTU0LCAyODk2MywgMjg5NzAsIDI4OTc3LCAyODk4NCwgMjg5OTIsIDI5MDAwLCAyOTAwOCwgMjkwMTYsIAorICAgIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ4LCAyOTA1NSwgMjkwNjMsIDI5MDcxLCAyOTA3OSwgMjkwODcsIDI5MDk1LCAKKyAgICAyOTEwNSwgMjkxMTUsIDI5MTI1LCAyOTEzNSwgMjkxNDUsIDI5MTU1LCAyOTE2NSwgMjkxNzUsIDI5MTg1LCAyOTE5NSwgCisgICAgMjkyMDUsIDI5MjE1LCAyOTIyNSwgMjkyMzUsIDI5MjQzLCAyOTI1MSwgMjkyNjEsIDI5MjY5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyOTI3OSwgMjkyODMsIDI5Mjg3LCAyOTI5MSwgMjkyOTUsIDI5Mjk5LCAyOTMwMywgMjkzMDcsIDI5MzExLCAyOTMxNSwgCisgICAgMjkzMTksIDI5MzIzLCAyOTMyNywgMjkzMzEsIDI5MzM1LCAyOTMzOSwgMjkzNDMsIDI5MzQ3LCAyOTM1MSwgMjkzNTUsIAorICAgIDI5MzU5LCAyOTM2MywgMjkzNjcsIDI5MzcxLCAyOTM3NywgMjkzODEsIDI5Mzg3LCAyOTM5MSwgMjkzOTcsIDI5NDAxLCAKKyAgICAyOTQwNywgMjk0MTEsIDI5NDE1LCAyOTQxOSwgMjk0MjMsIDI5NDI3LCAyOTQzMSwgMjk0MzcsIDI5NDQzLCAyOTQ0OSwgCisgICAgMjk0NTUsIDI5NDYxLCAyOTQ2NywgMjk0NzMsIDI5NDc5LCAyOTQ4NSwgMjk0OTEsIDI5NDk3LCAyOTUwNCwgMjk1MTAsIAorICAgIDI5NTE2LCAyOTUyMiwgMjk1MjYsIDI5NTMwLCAyOTUzNCwgMjk1MzgsIDI5NTQyLCAyOTU0NiwgMjk1NTAsIDI5NTU2LCAKKyAgICAyOTU2MiwgMjk1NjgsIDI5NTczLCAyOTU4MCwgMjk1ODUsIDI5NTkwLCAyOTU5NiwgMjk2MDEsIDI5NjA4LCAyOTYxNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2MjIsIDI5NjI4LCAyOTYzMiwgMjk2MzcsIDI5NjQyLCAyOTY0NywgCisgICAgMjk2NTIsIDI5NjU3LCAyOTY2MiwgMjk2NjcsIDI5NjcyLCAyOTY3NywgMjk2ODIsIDI5Njg3LCAyOTY5MiwgMjk2OTcsIAorICAgIDI5NzAxLCAyOTcwNSwgMjk3MTAsIDI5NzE1LCAyOTcyMCwgMjk3MjQsIDI5NzI4LCAyOTczMywgMjk3MzcsIDI5NzQyLCAKKyAgICAyOTc0NywgMjk3NTIsIDI5NzU3LCAyOTc2MSwgMjk3NjYsIDAsIDI5NzcxLCAyOTc3NiwgMjk3ODEsIDI5Nzg2LCAyOTc5MiwgCisgICAgMjk3OTgsIDI5ODA0LCAyOTgxMCwgMjk4MTUsIDI5ODIwLCAyOTgyNiwgMjk4MzMsIDAsIDAsIDAsIDAsIDI5ODQwLCAKKyAgICAyOTg0NSwgMjk4NTEsIDI5ODU3LCAyOTg2MywgMjk4NjgsIDI5ODczLCAyOTg3OCwgMjk4ODQsIDI5ODg5LCAyOTg5NCwgCisgICAgMjk4OTksIDAsIDAsIDAsIDAsIDI5OTA0LCAwLCAwLCAwLCAyOTkwOSwgMjk5MTQsIDI5OTE5LCAyOTkyNCwgMjk5MjgsIAorICAgIDI5OTMyLCAyOTkzNiwgMjk5NDAsIDI5OTQ0LCAyOTk0OCwgMjk5NTMsIDI5OTU3LCAyOTk2MiwgMjk5NjcsIDI5OTczLCAKKyAgICAyOTk3OSwgMjk5ODUsIDI5OTkxLCAyOTk5NiwgMzAwMDIsIDMwMDA4LCAzMDAxMywgMzAwMTgsIDMwMDI0LCAzMDAyOSwgCisgICAgMzAwMzUsIDMwMDQxLCAzMDA0NiwgMzAwNTIsIDMwMDU4LCAzMDA2NCwgMzAwNjksIDMwMDc0LCAzMDA3OSwgMzAwODUsIAorICAgIDMwMDkxLCAzMDA5NiwgMzAxMDIsIDMwMTA3LCAzMDExMywgMzAxMTgsIDMwMTI0LCAwLCAwLCAzMDEzMCwgMzAxMzYsIAorICAgIDMwMTQyLCAzMDE0OCwgMzAxNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTYwLCAzMDE2OSwgCisgICAgMzAxNzgsIDMwMTg2LCAzMDE5NSwgMzAyMDQsIDMwMjEyLCAzMDIyMSwgMzAyMzAsIDMwMjM5LCAzMDI0OCwgMzAyNTYsIAorICAgIDMwMjY1LCAzMDI3NCwgMzAyODIsIDMwMjkxLCAzMDMwMCwgMzAzMDgsIDMwMzE3LCAzMDMyNiwgMzAzMzQsIDMwMzQyLCAKKyAgICAzMDM1MSwgMzAzNTksIDMwMzY3LCAzMDM3NiwgMzAzODQsIDMwMzkzLCAzMDQwMiwgMzA0MTAsIDMwNDE5LCAzMDQyOCwgCisgICAgMzA0MzYsIDMwNDQ0LCAzMDQ1MywgMzA0NjIsIDMwNDcwLCAzMDQ3OSwgMzA0ODgsIDMwNDk3LCAzMDUwNiwgMzA1MTUsIAorICAgIDMwNTI0LCAzMDUzMywgMCwgMCwgMCwgMCwgMzA1NDIsIDMwNTUyLCAzMDU2MSwgMzA1NzAsIDMwNTc4LCAzMDU4NywgCisgICAgMzA1OTUsIDMwNjA0LCAzMDYxMiwgMzA2MjEsIDMwNjMwLCAzMDYzOSwgMzA2NDgsIDMwNjU3LCAzMDY2NiwgMzA2NzUsIAorICAgIDMwNjg0LCAzMDY5MywgMzA3MDIsIDMwNzExLCAzMDcyMCwgMzA3MjksIDMwNzM4LCAzMDc0NywgMzA3NTYsIDMwNzY0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMDc3MiwgMzA3ODAsIDMwNzg3LCAzMDc5NCwgMzA4MDEsIDMwODA4LCAzMDgxNSwgMzA4MjIsIAorICAgIDMwODMwLCAzMDgzNywgMzA4NDUsIDAsIDAsIDAsIDMwODUzLCAzMDg2MSwgMzA4NjksIDMwODczLCAzMDg3OSwgMzA4ODUsIAorICAgIDMwODkxLCAzMDg5NywgMzA5MDMsIDMwOTA5LCAzMDkxNSwgMzA5MjEsIDMwOTI3LCAzMDkzMywgMzA5MzksIDMwOTQ1LCAKKyAgICAzMDk1MSwgMzA5NTcsIDMwOTYzLCAzMDk2NywgMzA5NzMsIDMwOTc5LCAzMDk4NSwgMzA5OTEsIDMwOTk3LCAzMTAwMywgCisgICAgMzEwMDksIDMxMDE1LCAzMTAyMSwgMzEwMjcsIDMxMDMzLCAzMTAzOSwgMzEwNDUsIDMxMDUxLCAzMTA1NywgMzEwNjEsIAorICAgIDMxMDY2LCAzMTA3MSwgMzEwNzYsIDMxMDgwLCAzMTA4NSwgMzEwODksIDMxMDk0LCAzMTA5OSwgMzExMDQsIDMxMTA4LCAKKyAgICAzMTExMywgMzExMTgsIDMxMTIzLCAzMTEyOCwgMzExMzMsIDMxMTM3LCAzMTE0MiwgMzExNDYsIDMxMTUxLCAzMTE1NiwgCisgICAgMzExNjAsIDMxMTY0LCAzMTE2OSwgMzExNzQsIDMxMTc5LCAzMTE4NCwgMCwgMCwgMzExOTAsIDMxMTk0LCAzMTIwMSwgCisgICAgMzEyMDYsIDMxMjEyLCAzMTIxOCwgMzEyMjMsIDMxMjI5LCAzMTIzNSwgMzEyNDAsIDMxMjQ2LCAzMTI1MiwgMzEyNTgsIAorICAgIDMxMjY0LCAzMTI3MCwgMzEyNzUsIDMxMjgwLCAzMTI4NiwgMzEyOTEsIDMxMjk3LCAzMTMwMiwgMzEzMDgsIDMxMzE0LCAKKyAgICAzMTMyMCwgMzEzMjYsIDMxMzMwLCAzMTMzNSwgMzEzNDAsIDMxMzQ2LCAzMTM1MiwgMzEzNTcsIDMxMzYzLCAzMTM2OSwgCisgICAgMzEzNzMsIDMxMzc4LCAzMTM4MywgMzEzODgsIDMxMzkzLCAzMTM5NywgMzE0MDIsIDMxNDA3LCAzMTQxMywgMzE0MTksIAorICAgIDMxNDI1LCAzMTQzMCwgMzE0MzUsIDMxNDM5LCAzMTQ0NCwgMzE0NDgsIDMxNDUzLCAzMTQ1NywgMzE0NjIsIDMxNDY3LCAKKyAgICAzMTQ3MiwgMzE0NzcsIDMxNDg0LCAzMTQ5MSwgMzE0OTcsIDMxNTA3LCAzMTUxNiwgMzE1MjMsIDMxNTI5LCAzMTU0MCwgCisgICAgMzE1NDUsIDMxNTUxLCAwLCAzMTU1NywgMzE1NjIsIDMxNTY3LCAzMTU3NSwgMzE1ODEsIDMxNTg5LCAzMTU5NCwgMzE2MDAsIAorICAgIDMxNjA2LCAzMTYxMiwgMzE2MTcsIDMxNjIzLCAzMTYyOCwgMzE2MzUsIDMxNjQxLCAzMTY0NiwgMzE2NTIsIDMxNjU4LCAKKyAgICAzMTY2NCwgMzE2NzEsIDMxNjc4LCAzMTY4NSwgMzE2OTAsIDMxNjk1LCAzMTcwMiwgMzE3MDksIDMxNzE2LCAzMTcyMywgCisgICAgMzE3MzAsIDAsIDAsIDMxNzM3LCAzMTc0NCwgMzE3NTEsIDMxNzU3LCAzMTc2MywgMzE3NjksIDMxNzc1LCAzMTc4MSwgCisgICAgMzE3ODcsIDMxNzk0LCAzMTgwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4MDcsIDMxODEzLCAzMTgxOCwgMzE4MjMsIDMxODI4LCAKKyAgICAzMTgzMywgMzE4MzgsIDMxODQzLCAzMTg0OSwgMzE4NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDMxODYwLCAzMTg2NSwgMzE4NzAsIAorICAgIDMxODc1LCAzMTg4MCwgMzE4ODUsIDMxODkwLCAzMTg5OSwgMzE5MDYsIDMxOTExLCAzMTkxNiwgMzE5MjEsIDMxOTI2LCAKKyAgICAzMTkzMSwgMCwgMCwgMzE5MzYsIDMxOTQzLCAzMTk0NiwgMzE5NDksIDMxOTUyLCAzMTk1NywgMzE5NjEsIDMxOTY3LCAKKyAgICAzMTk3MSwgMzE5NzYsIDMxOTgzLCAzMTk5MSwgMzE5OTUsIDMyMDAwLCAzMjAwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNDgsIDEyMjU3LCAxMjI2NSwgCi0gICAgMTIyNzIsIDEyMjgwLCAxMjI5MiwgMTIyOTksIDEyMzA2LCAxMjMxMywgMTIzMjUsIDEyMzM2LCAxMjM0MywgMTIzNTEsIAotICAgIDEyMzU3LCAxMjM2MiwgMTIzNzAsIDEyMzc4LCAxMjM4NiwgMTIzOTIsIDEyNDAyLCAxMjQxMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwMDksIDMyMDE1LCAzMjAyMSwgMzIwMjUsIDMyMDI5LCAzMjAzMywgCisgICAgMzIwMzcsIDMyMDQzLCAzMjA0NywgMzIwNTMsIDMyMDU3LCAzMjA2MywgMzIwNjksIDMyMDc3LCAzMjA4MywgMzIwOTEsIAorICAgIDMyMDk1LCAzMjA5OSwgMzIxMDMsIDMyMTA5LCAzMjExMiwgMzIxMTgsIDMyMTIyLCAzMjEyOCwgMzIxMzIsIDMyMTM2LCAKKyAgICAzMjE0MiwgMzIxNDYsIDMyMTUyLCAzMjE1NiwgMzIxNjIsIDMyMTcwLCAzMjE3OCwgMzIxODYsIDMyMTkyLCAzMjE5NiwgCisgICAgMzIyMDIsIDMyMjA2LCAzMjIxMiwgMzIyMTUsIDMyMjE4LCAzMjIyNCwgMzIyMjgsIDMyMjM0LCAzMjIzNywgMzIyNDAsIAorICAgIDMyMjQ0LCAzMjI0NywgMzIyNTEsIDMyMjU3LCAzMjI2MywgMzIyNjcsIDMyMjcwLCAzMjI3NCwgMzIyNzksIDMyMjg0LCAKKyAgICAzMjI5MSwgMzIyOTYsIDMyMzAzLCAzMjMxMCwgMzIzMTksIDMyMzI2LCAzMjMzNSwgMzIzNDAsIDMyMzQ3LCAzMjM1NCwgCisgICAgMzIzNjMsIDMyMzY4LCAzMjM3NSwgMzIzODAsIDMyMzg2LCAzMjM5MiwgMzIzOTgsIDMyNDA0LCAzMjQxMCwgMzI0MTYsIDAsIAorICAgIDAsIDAsIDAsIDMyNDIyLCAzMjQyNiwgMzI0MjksIDMyNDMyLCAzMjQzNSwgMzI0MzgsIDMyNDQxLCAzMjQ0NCwgMzI0NDgsIAorICAgIDMyNDUxLCAzMjQ1NSwgMzI0NTgsIDMyNDYxLCAzMjQ2NCwgMzI0NjksIDMyNDc0LCAzMjQ3OSwgMzI0ODIsIDMyNDg3LCAKKyAgICAzMjQ5MiwgMzI0OTcsIDMyNTAyLCAzMjUwOSwgMzI1MTQsIDMyNTE5LCAzMjUyNCwgMzI1MjksIDMyNTM2LCAzMjU0MiwgCisgICAgMzI1NDgsIDMyNTU0LCAzMjU2MCwgMzI1NjYsIDMyNTc1LCAzMjU4NCwgMzI1OTAsIDMyNTk2LCAzMjYwNCwgMzI2MTIsIAorICAgIDMyNjIxLCAzMjYzMCwgMzI2MzgsIDMyNjQ2LCAzMjY1NSwgMzI2NjQsIDAsIDAsIDAsIDMyNjcyLCAzMjY3NywgMzI2ODIsIAorICAgIDMyNjg3LCAzMjY5MSwgMzI2OTUsIDMyNjk5LCAzMjcwNCwgMzI3MDgsIDMyNzEyLCAzMjcxNywgMzI3MjEsIDMyNzI2LCAKKyAgICAzMjczMSwgMzI3MzYsIDMyNzQxLCAzMjc0NiwgMzI3NTEsIDMyNzU2LCAzMjc2MSwgMzI3NjYsIDMyNzcwLCAzMjc3NCwgCisgICAgMzI3NzksIDMyNzg0LCAzMjc4OSwgMzI3OTMsIDMyNzk3LCAzMjgwMiwgMzI4MDYsIDMyODExLCAzMjgxNiwgMzI4MjEsIAorICAgIDMyODI1LCAzMjgzMSwgMzI4MzcsIDMyODQzLCAzMjg0OSwgMzI4NTUsIDMyODYxLCAzMjg2NywgMzI4NzMsIDMyODc5LCAKKyAgICAzMjg4NCwgMzI4ODksIDMyODk2LCAzMjkwNCwgMzI5MDksIDMyOTE0LCAzMjkxOSwgMzI5MjMsIDMyOTI3LCAzMjkzMSwgCisgICAgMzI5MzUsIDMyOTM5LCAzMjk0MywgMzI5NDgsIDMyOTUyLCAzMjk1NywgMzI5NjEsIDMyOTY2LCAzMjk3MSwgMzI5NzYsIAorICAgIDMyOTgyLCAzMjk4OCwgMzI5OTIsIDMyOTk4LCAzMzAwMiwgMzMwMDgsIDMzMDE0LCAzMzAxOSwgMzMwMjYsIDMzMDMwLCAKKyAgICAzMzAzNiwgMzMwNDAsIDMzMDQ2LCAzMzA1MSwgMzMwNTgsIDMzMDY1LCAzMzA3MCwgMzMwNzcsIDMzMDgyLCAzMzA4NywgCisgICAgMzMwOTIsIDMzMDk5LCAzMzEwMywgMzMxMDksIDMzMTE2LCAzMzEyMywgMzMxMjgsIDMzMTM1LCAzMzE0MiwgMzMxNDYsIAorICAgIDMzMTUyLCAzMzE1NywgMzMxNjEsIDMzMTY3LCAzMzE3MiwgMzMxNzcsIDMzMTgyLCAzMzE4NywgMzMxOTEsIDMzMTk1LCAKKyAgICAzMzIwMCwgMzMyMDUsIDMzMjEyLCAzMzIxOCwgMzMyMjMsIDMzMjMwLCAzMzIzNSwgMzMyNDIsIDMzMjQ3LCAzMzI1NywgCisgICAgMzMyNjMsIDMzMjY5LCAzMzI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMyNzcsIDMzMjg2LCAzMzI5MywgMzMzMDAsIAorICAgIDMzMzA3LCAzMzMxMSwgMzMzMTYsIDMzMzIxLCAzMzMyNiwgMzMzMzEsIDMzMzM2LCAzMzM0MSwgMzMzNDYsIDMzMzUxLCAKKyAgICAzMzM1NiwgMzMzNjEsIDMzMzY2LCAzMzM3MSwgMzMzNzUsIDMzMzc5LCAzMzM4NCwgMzMzODksIDMzMzk0LCAzMzM5OSwgCisgICAgMzM0MDQsIDMzNDA5LCAzMzQxMywgMzM0MTgsIDMzNDIzLCAzMzQyOCwgMzM0MzMsIDMzNDM3LCAzMzQ0MiwgMzM0NDYsIAorICAgIDMzNDUwLCAzMzQ1NSwgMzM0NjAsIDMzNDY1LCAzMzQ3MCwgMzM0NzUsIDMzNDc5LCAzMzQ4NSwgMzM0OTIsIDMzNDk4LCAKKyAgICAzMzUwMywgMzM1MDgsIDMzNTE0LCAzMzUxOSwgMzM1MjUsIDMzNTMwLCAzMzUzNiwgMzM1NDIsIDMzNTQ3LCAzMzU1MywgCisgICAgMzM1NTksIDMzNTY0LCAzMzU3MCwgMzM1NzYsIDMzNTgyLCAzMzU4NywgMCwgMCwgMCwgMzM1OTIsIDMzNTk4LCAzMzYwOCwgCisgICAgMzM2MTQsIDMzNjIyLCAzMzYyOCwgMzM2MzMsIDMzNjM3LCAzMzY0MSwgMzM2NDUsIDMzNjQ5LCAzMzY1MywgMzM2NTcsIAorICAgIDMzNjYyLCAzMzY2NiwgMCwgMCwgMCwgMzM2NzEsIDMzNjc2LCAzMzY4MSwgMzM2ODYsIDMzNjkzLCAzMzY5OSwgMzM3MDUsIAorICAgIDMzNzExLCAzMzcxNywgMzM3MjMsIDMzNzI5LCAzMzczNiwgMzM3NDIsIDMzNzQ5LCAzMzc1NSwgMzM3NjIsIDMzNzY5LCAKKyAgICAzMzc3NiwgMzM3ODMsIDMzNzkwLCAzMzc5NywgMzM4MDQsIDMzODExLCAzMzgxOCwgMzM4MjUsIDMzODMyLCAzMzgzOSwgCisgICAgMzM4NDYsIDMzODUzLCAzMzg2MCwgMzM4NjcsIDMzODc0LCAzMzg4MSwgMzM4ODgsIDMzODk1LCAzMzkwMiwgMzM5MDksIAorICAgIDMzOTE2LCAzMzkyMywgMzM5MzAsIDMzOTM3LCAzMzk0NCwgMzM5NTEsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgyLCAKKyAgICAzMzk4OCwgMzM5OTQsIDM0MDAwLCAzNDAwOCwgMzQwMTcsIDM0MDI0LCAzNDAzMSwgMzQwMzcsIDM0MDQ0LCAzNDA1MSwgCisgICAgMzQwNTgsIDM0MDY2LCAzNDA3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0MTcsIDEyNDIzLCAxMjQyOCwgCi0gICAgMTI0MzMsIDEyNDM4LCAxMjQ0MywgMTI0NDgsIDEyNDUzLCAxMjQ1OCwgMTI0NjMsIDEyNDY4LCAxMjQ3MywgMTI0NzgsIAotICAgIDEyNDgzLCAxMjQ4NywgMTI0OTEsIDEyNDk1LCAxMjUwMCwgMTI1MDYsIDEyNTEyLCAxMjUxOCwgMTI1MjMsIDEyNTI4LCAKLSAgICAxMjUzMywgMTI1MzgsIDEyNTQ0LCAxMjU1MywgMTI1NjEsIDEyNTY3LCAxMjU3NSwgMTI1ODEsIDEyNTg1LCAxMjU4OSwgCi0gICAgMTI1OTMsIDEyNTk4LCAxMjYwMSwgMTI2MDUsIDEyNjA4LCAxMjYxMiwgMTI2MTUsIDEyNjE5LCAxMjYyMywgMTI2MjcsIAotICAgIDEyNjMyLCAxMjYzNywgMTI2NDAsIDEyNjQ0LCAxMjY0OSwgMTI2NTQsIDEyNjU3LCAxMjY2MSwgMTI2NjQsIDEyNjY4LCAKLSAgICAxMjY3MiwgMTI2NzYsIDEyNjgwLCAxMjY4NCwgMTI2ODgsIDEyNjkyLCAxMjY5NiwgMTI3MDAsIDEyNzA0LCAxMjcwOCwgCi0gICAgMTI3MTIsIDEyNzE2LCAxMjcyMCwgMTI3MjQsIDEyNzI4LCAxMjczMiwgMTI3MzYsIDEyNzQwLCAxMjc0NCwgMTI3NDcsIAotICAgIDEyNzUxLCAxMjc1NSwgMTI3NTksIDEyNzYyLCAxMjc2NSwgMTI3NjksIDEyNzczLCAxMjc3NywgMTI3ODEsIDEyNzg1LCAKLSAgICAxMjc4OSwgMTI3OTMsIDEyNzk3LCAxMjgwMSwgMTI4MDQsIDEyODA5LCAxMjgxNCwgMTI4MTgsIDEyODIyLCAxMjgyNywgCi0gICAgMTI4MzEsIDEyODM2LCAxMjg0MCwgMTI4NDUsIDEyODUwLCAxMjg1NiwgMTI4NjIsIDEyODY4LCAxMjg3MiwgMTI4NzcsIAotICAgIDEyODgzLCAxMjg4OSwgMTI4OTMsIDEyODk4LCAxMjkwMiwgMTI5MDgsIDEyOTEzLCAxMjkxNiwgMTI5MjIsIDEyOTI4LCAKLSAgICAxMjkzMywgMTI5MzgsIDEyOTQ1LCAxMjk1MCwgMTI5NTUsIDEyOTU5LCAxMjk2MywgMTI5NjcsIDEyOTcxLCAxMjk3NSwgCi0gICAgMTI5NzksIDEyOTgzLCAxMjk4NywgMTI5OTIsIDEyOTk3LCAxMzAwMiwgMTMwMDgsIDEzMDExLCAxMzAxNSwgMTMwMTksIAotICAgIDEzMDIyLCAxMzAyNSwgMTMwMjgsIDEzMDMxLCAxMzAzNCwgMTMwMzcsIDEzMDQxLCAxMzA0NCwgMTMwNDgsIDEzMDUyLCAKLSAgICAxMzA1OSwgMTMwNjQsIDEzMDY4LCAxMzA3MiwgMTMwNzYsIDEzMDgwLCAxMzA4NCwgMTMwOTAsIDEzMDk0LCAxMzA5OCwgCi0gICAgMTMxMDIsIDEzMTA2LCAxMzExMiwgMTMxMTYsIDEzMTIwLCAxMzEyMywgMTMxMjcsIDEzMTMxLCAwLCAxMzEzNSwgMTMxMzgsIAotICAgIDEzMTQyLCAxMzE0NSwgMTMxNDksIDEzMTUyLCAxMzE1NiwgMTMxNjAsIDAsIDAsIDEzMTY0LCAxMzE2NywgMCwgMCwgCi0gICAgMTMxNzEsIDEzMTc0LCAxMzE3OCwgMTMxODEsIDEzMTg1LCAxMzE4OSwgMTMxOTMsIDEzMTk3LCAxMzIwMSwgMTMyMDUsIAotICAgIDEzMjA5LCAxMzIxMywgMTMyMTcsIDEzMjIxLCAxMzIyNSwgMTMyMjksIDEzMjMzLCAxMzIzNywgMTMyNDEsIDEzMjQ1LCAKLSAgICAxMzI0OSwgMTMyNTMsIDAsIDEzMjU3LCAxMzI2MCwgMTMyNjQsIDEzMjY4LCAxMzI3MiwgMTMyNzUsIDEzMjc4LCAwLCAKLSAgICAxMzI4MiwgMCwgMCwgMCwgMTMyODYsIDEzMjkwLCAxMzI5NCwgMTMyOTgsIDAsIDAsIDEzMzAxLCAxMzMwNSwgMTMzMDksIAotICAgIDEzMzE0LCAxMzMxOCwgMTMzMjMsIDEzMzI3LCAxMzMzMiwgMTMzMzcsIDAsIDAsIDEzMzQzLCAxMzM0NywgMCwgMCwgCi0gICAgMTMzNTIsIDEzMzU2LCAxMzM2MSwgMTMzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzcxLCAwLCAwLCAwLCAwLCAKLSAgICAxMzM3NywgMTMzODEsIDAsIDEzMzg1LCAxMzM4OSwgMTMzOTQsIDEzMzk5LCAxMzQwNCwgMCwgMCwgMTM0MTAsIDEzNDE0LCAKLSAgICAxMzQxNywgMTM0MjAsIDEzNDIzLCAxMzQyNiwgMTM0MjksIDEzNDMyLCAxMzQzNiwgMTM0MzksIDEzNDQzLCAxMzQ1MSwgCi0gICAgMTM0NjAsIDEzNDY0LCAxMzQ2OCwgMTM0NzQsIDEzNDgwLCAxMzQ4NiwgMTM0OTIsIDEzNTA2LCAxMzUxMywgMTM1MTYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNTIwLCAxMzUyNywgMTM1MzIsIDAsIDEzNTM3LCAxMzU0MSwgMTM1NDYsIDEzNTUwLCAxMzU1NSwgCi0gICAgMTM1NTksIDAsIDAsIDAsIDAsIDEzNTY0LCAxMzU2OSwgMCwgMCwgMTM1NzQsIDEzNTc5LCAxMzU4NCwgMTM1ODgsIDEzNTkzLCAKLSAgICAxMzU5OCwgMTM2MDMsIDEzNjA4LCAxMzYxMywgMTM2MTgsIDEzNjIzLCAxMzYyOCwgMTM2MzMsIDEzNjM4LCAxMzY0MywgCi0gICAgMTM2NDgsIDEzNjUzLCAxMzY1OCwgMTM2NjMsIDEzNjY4LCAxMzY3MywgMTM2NzgsIDAsIDEzNjgzLCAxMzY4NywgMTM2OTIsIAotICAgIDEzNjk3LCAxMzcwMiwgMTM3MDYsIDEzNzEwLCAwLCAxMzcxNSwgMTM3MjAsIDAsIDEzNzI1LCAxMzczMCwgMCwgMTM3MzUsIAotICAgIDEzNzQwLCAwLCAwLCAxMzc0NCwgMCwgMTM3NDksIDEzNzU1LCAxMzc2MCwgMTM3NjYsIDEzNzcxLCAwLCAwLCAwLCAwLCAKLSAgICAxMzc3NywgMTM3ODMsIDAsIDAsIDEzNzg5LCAxMzc5NSwgMTM4MDEsIDAsIDAsIDAsIDEzODA2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzgxMSwgMTM4MTYsIDEzODIxLCAxMzgyNiwgMCwgMTM4MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODM2LCAKLSAgICAxMzg0MSwgMTM4NDUsIDEzODQ5LCAxMzg1MywgMTM4NTcsIDEzODYxLCAxMzg2NSwgMTM4NzAsIDEzODc0LCAxMzg3OSwgCi0gICAgMTM4ODMsIDEzODg3LCAxMzg5MSwgMTM4OTUsIDEzOTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzkwNiwgMTM5MTEsIDEzOTE2LCAwLCAxMzkyMSwgMTM5MjUsIDEzOTMwLCAxMzkzNCwgMTM5MzksIDEzOTQzLCAxMzk0OCwgCi0gICAgMTM5NTMsIDEzOTU4LCAwLCAxMzk2NCwgMTM5NjgsIDEzOTczLCAwLCAxMzk3OSwgMTM5ODMsIDEzOTg4LCAxMzk5MiwgCi0gICAgMTM5OTcsIDE0MDAyLCAxNDAwNywgMTQwMTIsIDE0MDE3LCAxNDAyMiwgMTQwMjcsIDE0MDMyLCAxNDAzNywgMTQwNDIsIAotICAgIDE0MDQ3LCAxNDA1MiwgMTQwNTcsIDE0MDYyLCAxNDA2NywgMTQwNzIsIDE0MDc3LCAxNDA4MiwgMCwgMTQwODcsIDE0MDkxLCAKLSAgICAxNDA5NiwgMTQxMDEsIDE0MTA2LCAxNDExMCwgMTQxMTQsIDAsIDE0MTE5LCAxNDEyNCwgMCwgMTQxMjksIDE0MTM0LCAKLSAgICAxNDEzOSwgMTQxNDQsIDE0MTQ5LCAwLCAwLCAxNDE1MywgMTQxNTgsIDE0MTYzLCAxNDE2OSwgMTQxNzQsIDE0MTgwLCAKLSAgICAxNDE4NSwgMTQxOTEsIDE0MTk3LCAxNDIwNCwgMCwgMTQyMTEsIDE0MjE2LCAxNDIyMiwgMCwgMTQyMjksIDE0MjM0LCAKLSAgICAxNDI0MCwgMCwgMCwgMTQyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MjQ5LCAKLSAgICAxNDI1NSwgMTQyNjEsIDE0MjY3LCAwLCAwLCAxNDI3NCwgMTQyNzksIDE0MjgzLCAxNDI4NywgMTQyOTEsIDE0Mjk1LCAKLSAgICAxNDI5OSwgMTQzMDMsIDE0MzA4LCAxNDMxMiwgMTQzMTcsIDE0MzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMyNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQzMzIsIDE0MzM2LCAxNDM0MCwgMCwgMTQzNDQsIDE0MzQ3LCAxNDM1MSwgMTQzNTQsIAotICAgIDE0MzU4LCAxNDM2MSwgMTQzNjUsIDE0MzY5LCAwLCAwLCAxNDM3MywgMTQzNzYsIDAsIDAsIDE0MzgwLCAxNDM4MywgCi0gICAgMTQzODcsIDE0MzkwLCAxNDM5NCwgMTQzOTgsIDE0NDAyLCAxNDQwNiwgMTQ0MTAsIDE0NDE0LCAxNDQxOCwgMTQ0MjIsIAotICAgIDE0NDI2LCAxNDQzMCwgMTQ0MzQsIDE0NDM4LCAxNDQ0MiwgMTQ0NDYsIDE0NDUwLCAxNDQ1NCwgMTQ0NTgsIDE0NDYyLCAwLCAKLSAgICAxNDQ2NiwgMTQ0NjksIDE0NDczLCAxNDQ3NywgMTQ0ODEsIDE0NDg0LCAxNDQ4NywgMCwgMTQ0OTEsIDE0NDk1LCAwLCAKLSAgICAxNDQ5OSwgMTQ1MDMsIDE0NTA3LCAxNDUxMSwgMTQ1MTUsIDAsIDAsIDE0NTE4LCAxNDUyMiwgMTQ1MjYsIDE0NTMxLCAKLSAgICAxNDUzNSwgMTQ1NDAsIDE0NTQ0LCAxNDU0OSwgMTQ1NTQsIDAsIDAsIDE0NTYwLCAxNDU2NCwgMCwgMCwgMTQ1NjksIAotICAgIDE0NTczLCAxNDU3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1ODIsIDE0NTg4LCAwLCAwLCAwLCAwLCAxNDU5NCwgCi0gICAgMTQ1OTgsIDAsIDE0NjAyLCAxNDYwNiwgMTQ2MTEsIDE0NjE2LCAxNDYyMSwgMCwgMCwgMTQ2MjcsIDE0NjMxLCAxNDYzNCwgCi0gICAgMTQ2MzcsIDE0NjQwLCAxNDY0MywgMTQ2NDYsIDE0NjQ5LCAxNDY1MywgMTQ2NTYsIDE0NjYwLCAxNDY2MywgMTQ2NjcsIAotICAgIDE0NjczLCAxNDY3OSwgMTQ2ODUsIDE0NjkxLCAxNDY5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3MDMsIAotICAgIDE0NzA3LCAwLCAxNDcxMSwgMTQ3MTQsIDE0NzE4LCAxNDcyMSwgMTQ3MjUsIDE0NzI4LCAwLCAwLCAwLCAxNDczMiwgCi0gICAgMTQ3MzUsIDE0NzM5LCAwLCAxNDc0MywgMTQ3NDYsIDE0NzUwLCAxNDc1NCwgMCwgMCwgMCwgMTQ3NTcsIDE0NzYxLCAwLCAKLSAgICAxNDc2NSwgMCwgMTQ3NjksIDE0NzczLCAwLCAwLCAwLCAxNDc3NywgMTQ3ODEsIDAsIDAsIDAsIDE0Nzg1LCAxNDc4OSwgCi0gICAgMTQ3OTMsIDAsIDAsIDAsIDE0Nzk2LCAxNDc5OSwgMTQ4MDIsIDE0ODA2LCAxNDgxMCwgMTQ4MTQsIDE0ODE4LCAxNDgyMiwgCi0gICAgMTQ4MjYsIDE0ODMwLCAxNDgzNCwgMTQ4MzgsIDAsIDAsIDAsIDAsIDE0ODQxLCAxNDg0NiwgMTQ4NTAsIDE0ODU1LCAKLSAgICAxNDg1OSwgMCwgMCwgMCwgMTQ4NjQsIDE0ODY4LCAxNDg3MywgMCwgMTQ4NzgsIDE0ODgyLCAxNDg4NywgMTQ4OTIsIDAsIDAsIAotICAgIDE0ODk2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDg5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ5MDUsIDE0OTA5LCAxNDkxMiwgMTQ5MTUsIDE0OTE4LCAxNDkyMSwgMTQ5MjQsIDE0OTI3LCAxNDkzMSwgMTQ5MzQsIAotICAgIDE0OTM4LCAxNDk0MiwgMTQ5NDcsIDE0OTUyLCAxNDk1NiwgMTQ5NjAsIDE0OTY0LCAxNDk2OCwgMTQ5NzIsIDE0OTc3LCAKLSAgICAxNDk4MSwgMCwgMCwgMCwgMCwgMCwgMTQ5ODQsIDE0OTkwLCAxNDk5NCwgMTQ5OTgsIDAsIDE1MDAyLCAxNTAwNSwgMTUwMDksIAotICAgIDE1MDEyLCAxNTAxNiwgMTUwMTksIDE1MDIzLCAxNTAyNywgMCwgMTUwMzEsIDE1MDM0LCAxNTAzOCwgMCwgMTUwNDIsIAotICAgIDE1MDQ1LCAxNTA0OSwgMTUwNTMsIDE1MDU2LCAxNTA2MCwgMTUwNjQsIDE1MDY4LCAxNTA3MiwgMTUwNzYsIDE1MDgwLCAKLSAgICAxNTA4NCwgMTUwODgsIDE1MDkyLCAxNTA5NiwgMTUxMDAsIDE1MTA0LCAxNTEwOCwgMTUxMTIsIDE1MTE2LCAxNTEyMCwgCi0gICAgMTUxMjQsIDE1MTI4LCAwLCAxNTEzMiwgMTUxMzUsIDE1MTM5LCAxNTE0MywgMTUxNDcsIDE1MTUwLCAxNTE1MywgMTUxNTcsIAotICAgIDE1MTYxLCAxNTE2NSwgMTUxNjksIDE1MTczLCAxNTE3NywgMTUxODEsIDE1MTg1LCAxNTE4OSwgMCwgMCwgMCwgMTUxOTIsIAotICAgIDE1MTk2LCAxNTIwMSwgMTUyMDUsIDE1MjEwLCAxNTIxNCwgMTUyMTksIDE1MjI0LCAwLCAxNTIzMCwgMTUyMzQsIDE1MjM5LCAKLSAgICAwLCAxNTI0NCwgMTUyNDgsIDE1MjUzLCAxNTI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyNjIsIDE1MjY2LCAwLCAKLSAgICAxNTI3MiwgMTUyNzYsIDE1MjgwLCAwLCAwLCAwLCAwLCAwLCAxNTI4NCwgMTUyODksIDE1Mjk0LCAxNTI5OSwgMCwgMCwgCi0gICAgMTUzMDUsIDE1MzA5LCAxNTMxMiwgMTUzMTUsIDE1MzE4LCAxNTMyMSwgMTUzMjQsIDE1MzI3LCAxNTMzMSwgMTUzMzQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzM4LCAxNTM1MSwgMTUzNjMsIDE1Mzc1LCAxNTM4NywgMTUzOTksIDE1NDExLCAKLSAgICAxNTQyMywgMCwgMTU0MjcsIDE1NDMxLCAxNTQzNSwgMCwgMTU0MzksIDE1NDQyLCAxNTQ0NiwgMTU0NDksIDE1NDUzLCAKLSAgICAxNTQ1NiwgMTU0NjAsIDE1NDY0LCAwLCAxNTQ2OCwgMTU0NzEsIDE1NDc1LCAwLCAxNTQ3OSwgMTU0ODIsIDE1NDg2LCAKLSAgICAxNTQ5MCwgMTU0OTMsIDE1NDk3LCAxNTUwMSwgMTU1MDUsIDE1NTA5LCAxNTUxMywgMTU1MTcsIDE1NTIxLCAxNTUyNSwgCi0gICAgMTU1MjksIDE1NTMzLCAxNTUzNywgMTU1NDEsIDE1NTQ1LCAxNTU0OSwgMTU1NTMsIDE1NTU3LCAxNTU2MSwgMTU1NjUsIDAsIAotICAgIDE1NTY5LCAxNTU3MiwgMTU1NzYsIDE1NTgwLCAxNTU4NCwgMTU1ODcsIDE1NTkwLCAxNTU5NCwgMTU1OTgsIDE1NjAyLCAwLCAKLSAgICAxNTYwNiwgMTU2MTAsIDE1NjE0LCAxNTYxOCwgMTU2MjIsIDAsIDAsIDE1NjI1LCAxNTYyOSwgMTU2MzMsIDE1NjM4LCAKLSAgICAxNTY0MiwgMTU2NDcsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDAsIDE1NjY3LCAxNTY3MSwgMTU2NzYsIDAsIDE1NjgxLCAKLSAgICAxNTY4NSwgMTU2OTAsIDE1Njk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTY5OSwgMTU3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NzA5LCAwLCAxNTcxMywgMTU3MTgsIDE1NzIzLCAxNTcyOCwgMCwgMCwgMTU3MzQsIDE1NzM4LCAxNTc0MSwgCi0gICAgMTU3NDQsIDE1NzQ3LCAxNTc1MCwgMTU3NTMsIDE1NzU2LCAxNTc2MCwgMTU3NjMsIDAsIDE1NzY3LCAxNTc3MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NzUsIDE1Nzc5LCAxNTc4MywgMCwgMTU3ODcsIDE1NzkwLCAKLSAgICAxNTc5NCwgMTU3OTcsIDE1ODAxLCAxNTgwNCwgMTU4MDgsIDE1ODEyLCAwLCAxNTgxNiwgMTU4MTksIDE1ODIzLCAwLCAKLSAgICAxNTgyNywgMTU4MzAsIDE1ODM0LCAxNTgzOCwgMTU4NDEsIDE1ODQ1LCAxNTg0OSwgMTU4NTMsIDE1ODU3LCAxNTg2MSwgCi0gICAgMTU4NjUsIDE1ODY5LCAxNTg3MywgMTU4NzcsIDE1ODgxLCAxNTg4NSwgMTU4ODksIDE1ODkzLCAxNTg5NywgMTU5MDEsIAotICAgIDE1OTA1LCAxNTkwOSwgMTU5MTMsIDE1OTE3LCAxNTkyMSwgMTU5MjQsIDE1OTI4LCAxNTkzMiwgMTU5MzYsIDE1OTM5LCAKLSAgICAxNTk0MiwgMTU5NDYsIDE1OTUwLCAxNTk1NCwgMTU5NTgsIDE1OTYyLCAxNTk2NiwgMTU5NzAsIDE1OTc0LCAxNTk3OCwgCi0gICAgMTU5ODEsIDAsIDAsIDE1OTg1LCAxNTk4OSwgMTU5OTQsIDE1OTk4LCAxNjAwMywgMTYwMDcsIDE2MDEyLCAxNjAxNywgMCwgCi0gICAgMTYwMjMsIDE2MDI3LCAxNjAzMiwgMCwgMTYwMzcsIDE2MDQxLCAxNjA0NiwgMTYwNTEsIDE2MDU1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNjA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwNjYsIDE2MDcyLCAxNjA3NywgMTYwODIsIDE2MDg3LCAKLSAgICAwLCAwLCAxNjA5MywgMTYwOTcsIDE2MTAwLCAxNjEwMywgMTYxMDYsIDE2MTA5LCAxNjExMiwgMTYxMTUsIDE2MTE5LCAKLSAgICAxNjEyMiwgMTYxMjYsIDE2MTMwLCAxNjEzNSwgMTYxNDAsIDE2MTQ2LCAxNjE1MiwgMCwgMCwgMCwgMTYxNTgsIDE2MTYyLCAKLSAgICAxNjE2OCwgMTYxNzQsIDE2MTgwLCAxNjE4NSwgMTYxOTEsIDAsIDAsIDE2MTk3LCAxNjIwMSwgMCwgMTYyMDUsIDE2MjA5LCAKLSAgICAxNjIxMywgMTYyMTcsIDE2MjIxLCAxNjIyNSwgMTYyMjksIDE2MjMzLCAxNjIzNywgMTYyNDEsIDE2MjQ1LCAxNjI0OSwgCi0gICAgMTYyNTMsIDE2MjU3LCAxNjI2MSwgMTYyNjUsIDE2MjY5LCAxNjI3MywgMCwgMCwgMCwgMTYyNzcsIDE2MjgzLCAxNjI4OSwgCi0gICAgMTYyOTUsIDE2MzAxLCAxNjMwNywgMTYzMTMsIDE2MzE5LCAxNjMyNSwgMTYzMzEsIDE2MzM3LCAxNjM0MywgMTYzNTEsIAotICAgIDE2MzU3LCAxNjM2MywgMTYzNjksIDE2Mzc1LCAxNjM4MSwgMTYzODcsIDE2MzkzLCAxNjM5OSwgMTY0MDUsIDE2NDExLCAKLSAgICAxNjQxNywgMCwgMTY0MjMsIDE2NDI5LCAxNjQzNSwgMTY0NDEsIDE2NDQ3LCAxNjQ1MywgMTY0NTcsIDE2NDYzLCAxNjQ2NywgCi0gICAgMCwgMTY0NzEsIDAsIDAsIDE2NDc3LCAxNjQ4MSwgMTY0ODcsIDE2NDkzLCAxNjQ5OSwgMTY1MDMsIDE2NTA5LCAwLCAwLCAwLCAKLSAgICAxNjUxMywgMCwgMCwgMCwgMCwgMTY1MTcsIDE2NTIyLCAxNjUyOSwgMTY1MzYsIDE2NTQzLCAxNjU1MCwgMCwgMTY1NTcsIDAsIAotICAgIDE2NTY0LCAxNjU2OSwgMTY1NzQsIDE2NTgxLCAxNjU4OCwgMTY1OTcsIDE2NjA4LCAxNjYxNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTY2MjIsIDE2NjI4LCAxNjYzMywgMTY2MzgsIDE2NjQzLCAxNjY0OCwgMTY2NTMsIDE2NjU4LCAxNjY2NCwgMTY2NjksIDAsIAotICAgIDAsIDE2Njc1LCAxNjY4MiwgMTY2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2Njk0LCAxNjcwMSwgCi0gICAgMTY3MDgsIDE2NzE1LCAxNjcyMiwgMTY3MjksIDE2NzM2LCAxNjc0MywgMTY3NTAsIDE2NzU3LCAxNjc2NCwgMTY3NzEsIAotICAgIDE2Nzc4LCAxNjc4NSwgMTY3OTIsIDE2Nzk5LCAxNjgwNiwgMTY4MTMsIDE2ODIwLCAxNjgyNywgMTY4MzQsIDE2ODQxLCAKLSAgICAxNjg0OCwgMTY4NTUsIDE2ODYyLCAxNjg2OSwgMTY4NzYsIDE2ODgzLCAxNjg5MCwgMTY4OTcsIDE2OTA0LCAxNjkxMSwgCi0gICAgMTY5MTgsIDE2OTI0LCAxNjkzMSwgMTY5MzgsIDE2OTQzLCAxNjk1MCwgMTY5NTUsIDE2OTYyLCAxNjk2OSwgMTY5NzYsIAotICAgIDE2OTgzLCAxNjk5MCwgMTY5OTcsIDE3MDAzLCAxNzAxMCwgMTcwMTUsIDE3MDIxLCAxNzAyOCwgMTcwMzUsIDE3MDQyLCAKLSAgICAxNzA0OCwgMTcwNTUsIDE3MDYyLCAxNzA2OSwgMTcwNzUsIDE3MDgyLCAwLCAwLCAwLCAwLCAxNzA4NywgMTcwOTQsIAotICAgIDE3MTAwLCAxNzEwNywgMTcxMTMsIDE3MTIyLCAxNzEzMSwgMTcxMzYsIDE3MTQxLCAxNzE0NiwgMTcxNTMsIDE3MTYwLCAKLSAgICAxNzE2NywgMTcxNzQsIDE3MTc5LCAxNzE4NCwgMTcxODksIDE3MTk0LCAxNzE5OSwgMTcyMDMsIDE3MjA3LCAxNzIxMSwgCi0gICAgMTcyMTUsIDE3MjE5LCAxNzIyMywgMTcyMjgsIDE3MjMyLCAxNzIzNywgMTcyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3MjQ3LCAxNzI1MiwgMCwgMTcyNTksIDAsIDAsIDE3MjY2LCAxNzI3MSwgMCwgMTcyNzYsIDAsIAotICAgIDAsIDE3MjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzI4OCwgMTcyOTMsIDE3Mjk3LCAxNzMwNCwgMCwgMTczMTEsIDE3MzE2LCAKLSAgICAxNzMyMSwgMTczMjYsIDE3MzMzLCAxNzM0MCwgMTczNDcsIDAsIDE3MzU0LCAxNzM1OSwgMTczNjQsIDAsIDE3MzcxLCAwLCAKLSAgICAxNzM3OCwgMCwgMCwgMTczODMsIDE3MzkwLCAwLCAxNzM5NywgMTc0MDEsIDE3NDA4LCAxNzQxMiwgMTc0MTcsIDE3NDI1LCAKLSAgICAxNzQzMSwgMTc0MzcsIDE3NDQyLCAxNzQ0OCwgMTc0NTQsIDE3NDYwLCAxNzQ2NSwgMCwgMTc0NzEsIDE3NDc5LCAxNzQ4NiwgCi0gICAgMCwgMCwgMTc0OTMsIDE3NDk4LCAxNzUwNCwgMTc1MDksIDE3NTE1LCAwLCAxNzUyMSwgMCwgMTc1MjcsIDE3NTM0LCAKLSAgICAxNzU0MSwgMTc1NDgsIDE3NTU1LCAxNzU2MCwgMCwgMCwgMTc1NjQsIDE3NTY5LCAxNzU3MywgMTc1NzcsIDE3NTgxLCAKLSAgICAxNzU4NSwgMTc1ODksIDE3NTkzLCAxNzU5OCwgMTc2MDIsIDAsIDAsIDE3NjA3LCAxNzYxMywgMTc2MTksIDE3NjI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzYzMywgMTc2MzcsIDE3NjQ4LCAxNzY2MywgMTc2NzgsIDE3Njg4LCAxNzY5OSwgCi0gICAgMTc3MTIsIDE3NzIzLCAxNzcyOSwgMTc3MzcsIDE3NzQ3LCAxNzc1MywgMTc3NjEsIDE3NzY1LCAxNzc3MSwgMTc3NzcsIAotICAgIDE3Nzg1LCAxNzc5NSwgMTc4MDMsIDE3ODE2LCAxNzgyMiwgMTc4MzAsIDE3ODM4LCAxNzg1MCwgMTc4NTcsIDE3ODY1LCAKLSAgICAxNzg3MywgMTc4ODEsIDE3ODg5LCAxNzg5NywgMTc5MDUsIDE3OTE1LCAxNzkxOSwgMTc5MjIsIDE3OTI1LCAxNzkyOCwgCi0gICAgMTc5MzEsIDE3OTM0LCAxNzkzNywgMTc5NDEsIDE3OTQ0LCAxNzk0OCwgMTc5NTIsIDE3OTU2LCAxNzk2MCwgMTc5NjQsIAotICAgIDE3OTY4LCAxNzk3MiwgMTc5NzcsIDE3OTgxLCAxNzk4NiwgMTc5OTEsIDE3OTk3LCAxODAwNywgMTgwMjEsIDE4MDMxLCAKLSAgICAxODAzNywgMTgwNDMsIDE4MDUxLCAxODA1OSwgMTgwNjcsIDE4MDc1LCAxODA4MSwgMTgwODcsIDE4MDkwLCAxODA5NCwgCi0gICAgMTgwOTgsIDE4MTAyLCAxODEwNiwgMTgxMTAsIDE4MTE0LCAwLCAxODExOCwgMTgxMjIsIDE4MTI2LCAxODEzMCwgMTgxMzQsIAotICAgIDE4MTM4LCAxODE0MiwgMTgxNDYsIDE4MTUwLCAxODE1NCwgMTgxNTgsIDE4MTYyLCAxODE2NSwgMTgxNjksIDE4MTczLCAKLSAgICAxODE3NywgMTgxODAsIDE4MTg0LCAxODE4OCwgMTgxOTIsIDE4MTk2LCAxODIwMCwgMTgyMDQsIDE4MjA4LCAxODIxMiwgCi0gICAgMTgyMTUsIDE4MjE5LCAxODIyMywgMTgyMjcsIDE4MjMxLCAxODIzNSwgMTgyMzgsIDE4MjQxLCAxODI0NSwgMTgyNTEsIAotICAgIDE4MjU1LCAwLCAwLCAwLCAwLCAxODI1OSwgMTgyNjQsIDE4MjY4LCAxODI3MywgMTgyNzcsIDE4MjgyLCAxODI4NywgCi0gICAgMTgyOTMsIDE4Mjk4LCAxODMwNCwgMTgzMDgsIDE4MzEzLCAxODMxNywgMTgzMjIsIDE4MzMyLCAxODMzOCwgMTgzNDQsIAotICAgIDE4MzUxLCAxODM2MSwgMTgzNjcsIDE4MzcxLCAxODM3NSwgMTgzODEsIDE4Mzg3LCAxODM5NSwgMTg0MDEsIDE4NDA5LCAKLSAgICAxODQxNywgMTg0MjUsIDE4NDM1LCAxODQ0MywgMTg0NTMsIDE4NDU4LCAxODQ2NCwgMTg0NzAsIDE4NDc2LCAxODQ4MiwgCi0gICAgMTg0ODgsIDE4NDk0LCAwLCAxODUwMCwgMTg1MDYsIDE4NTEyLCAxODUxOCwgMTg1MjQsIDE4NTMwLCAxODUzNiwgMTg1NDIsIAotICAgIDE4NTQ4LCAxODU1NCwgMTg1NjAsIDE4NTY2LCAxODU3MSwgMTg1NzcsIDE4NTgzLCAxODU4OSwgMTg1OTQsIDE4NjAwLCAKLSAgICAxODYwNiwgMTg2MTIsIDE4NjE4LCAxODYyNCwgMTg2MzAsIDE4NjM2LCAxODY0MiwgMTg2NDcsIDE4NjUzLCAxODY1OSwgCi0gICAgMTg2NjUsIDE4NjcxLCAxODY3NywgMTg2ODIsIDE4Njg3LCAxODY5MywgMTg3MDEsIDE4NzA4LCAwLCAxODcxNiwgMTg3MjMsIAotICAgIDE4NzM2LCAxODc0MywgMTg3NTAsIDE4NzU4LCAxODc2NiwgMTg3NzIsIDE4Nzc4LCAxODc4NCwgMTg3OTQsIDE4Nzk5LCAKLSAgICAxODgwNSwgMTg4MTUsIDE4ODI1LCAwLCAxODgzNSwgMTg4NDUsIDE4ODUzLCAxODg2NSwgMTg4NzcsIDE4ODgzLCAxODg5NywgCi0gICAgMTg5MTIsIDE4OTE3LCAxODkyMiwgMTg5MzAsIDE4OTM4LCAxODk0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTg5NTQsIDE4OTU3LCAxODk2MSwgMTg5NjUsIDE4OTY5LCAxODk3MywgMTg5NzcsIDE4OTgxLCAxODk4NSwgCi0gICAgMTg5ODksIDE4OTkzLCAxODk5NywgMTkwMDEsIDE5MDA1LCAxOTAwOSwgMTkwMTMsIDE5MDE3LCAxOTAyMSwgMTkwMjUsIAotICAgIDE5MDI5LCAxOTAzMywgMTkwMzcsIDE5MDQwLCAxOTA0NCwgMTkwNDgsIDE5MDUyLCAxOTA1NSwgMTkwNTgsIDE5MDYyLCAKLSAgICAxOTA2NiwgMTkwNzAsIDE5MDc0LCAxOTA3NywgMTkwODEsIDE5MDg0LCAxOTA4OSwgMTkwOTIsIDE5MDk2LCAxOTA5OSwgCi0gICAgMTkxMDMsIDE5MTA2LCAxOTExMSwgMTkxMTQsIDE5MTE4LCAxOTEyNSwgMTkxMzAsIDE5MTM0LCAxOTEzOSwgMTkxNDMsIAotICAgIDE5MTQ4LCAxOTE1MiwgMTkxNTcsIDE5MTY0LCAxOTE3MCwgMTkxNzUsIDE5MTc5LCAxOTE4MywgMTkxODcsIDE5MTkxLCAKLSAgICAxOTE5NSwgMTkyMDAsIDE5MjA2LCAxOTIxMiwgMTkyMTcsIDE5MjIzLCAxOTIyNywgMTkyMzAsIDE5MjMzLCAxOTIzNiwgCi0gICAgMTkyMzksIDE5MjQyLCAxOTI0NSwgMTkyNDksIDE5MjUyLCAxOTI1NiwgMTkyNjIsIDE5MjY2LCAxOTI3MCwgMTkyNzQsIAotICAgIDE5Mjc4LCAxOTI4MiwgMTkyODYsIDE5MjkwLCAxOTI5NCwgMTkyOTksIDE5MzAzLCAxOTMwOCwgMTkzMTMsIDE5MzE5LCAKLSAgICAxOTMyNCwgMTkzMzAsIDE5MzM2LCAxOTM0MiwgMTkzNDgsIDE5MzU0LCAxOTM2MiwgMTkzNjksIDE5Mzc3LCAxOTM4NSwgCi0gICAgMTkzOTQsIDE5NDAzLCAxOTQxNCwgMTk0MjQsIDE5NDM0LCAxOTQ0NSwgMTk0NTYsIDE5NDY2LCAxOTQ3NiwgMTk0ODYsIAotICAgIDE5NDk2LCAxOTUwNiwgMTk1MTYsIDE5NTI2LCAxOTUzNiwgMTk1NDQsIDE5NTUxLCAxOTU1NywgMTk1NjQsIDE5NTY5LCAKLSAgICAxOTU3NSwgMTk1ODEsIDE5NTg3LCAxOTU5MywgMTk1OTksIDE5NjA1LCAxOTYxMSwgMTk2MTcsIDE5NjIzLCAxOTYyOSwgCi0gICAgMTk2MzUsIDE5NjQwLCAxOTY0OCwgMTk2NTUsIDE5NjYxLCAxOTY2OCwgMTk2NzYsIDE5NjgyLCAxOTY4OCwgMTk2OTQsIAotICAgIDE5NzAwLCAxOTcwOCwgMTk3MTYsIDE5NzI2LCAxOTczNCwgMTk3NDIsIDE5NzQ4LCAxOTc1MywgMTk3NTgsIDE5NzYzLCAKLSAgICAxOTc2OCwgMTk3NzMsIDE5Nzc4LCAxOTc4NCwgMTk3ODksIDE5Nzk1LCAxOTgwMSwgMTk4MDcsIDE5ODEzLCAxOTgyMCwgCi0gICAgMTk4MjUsIDE5ODMxLCAxOTgzNiwgMTk4NDEsIDE5ODQ2LCAxOTg1MSwgMTk4NTYsIDE5ODYxLCAxOTg2NiwgMTk4NzEsIAotICAgIDE5ODc2LCAxOTg4MSwgMTk4ODYsIDE5ODkxLCAxOTg5NiwgMTk5MDEsIDE5OTA2LCAxOTkxMSwgMTk5MTYsIDE5OTIxLCAKLSAgICAxOTkyNiwgMTk5MzEsIDE5OTM2LCAxOTk0MSwgMTk5NDYsIDE5OTUxLCAxOTk1NiwgMTk5NjEsIDE5OTY2LCAxOTk3MSwgCi0gICAgMTk5NzYsIDE5OTgxLCAxOTk4NiwgMTk5OTEsIDE5OTk2LCAyMDAwMSwgMjAwMDYsIDIwMDExLCAyMDAxNiwgMCwgMjAwMjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIwMDI2LCAwLCAwLCAyMDAzMSwgMjAwMzUsIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAKLSAgICAyMDA1NSwgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgCi0gICAgMjAwOTUsIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIAotICAgIDIwMTM1LCAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAKLSAgICAyMDE3NSwgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAyMDIwMSwgMjAyMDUsIDIwMjEwLCAyMDIxNSwgCi0gICAgMjAyMTksIDIwMjI0LCAyMDIyOSwgMjAyMzMsIDIwMjM3LCAyMDI0MSwgMjAyNDUsIDIwMjQ5LCAyMDI1MywgMjAyNTcsIAotICAgIDIwMjYxLCAyMDI2NSwgMjAyNjksIDIwMjczLCAyMDI3NywgMjAyODEsIDIwMjg1LCAyMDI4OSwgMjAyOTMsIDIwMjk3LCAKLSAgICAyMDMwMSwgMjAzMDUsIDIwMzA5LCAyMDMxMywgMjAzMTcsIDIwMzIxLCAyMDMyNSwgMjAzMjksIDIwMzMzLCAyMDMzNywgCi0gICAgMjAzNDEsIDIwMzQ1LCAyMDM0OSwgMjAzNTMsIDIwMzU3LCAyMDM2MSwgMjAzNjUsIDIwMzY5LCAyMDM3MywgMjAzNzcsIAotICAgIDIwMzgxLCAyMDM4NSwgMjAzODksIDIwMzkzLCAyMDM5NywgMjA0MDEsIDIwNDA1LCAyMDQwOSwgMjA0MTMsIDIwNDE3LCAKLSAgICAyMDQyMSwgMjA0MjUsIDIwNDI5LCAyMDQzMywgMjA0MzcsIDIwNDQxLCAyMDQ0NSwgMjA0NDksIDIwNDUzLCAyMDQ1NywgCi0gICAgMjA0NjEsIDIwNDY1LCAyMDQ2OSwgMjA0NzMsIDIwNDc3LCAyMDQ4MSwgMjA0ODUsIDIwNDg5LCAyMDQ5MywgMjA0OTcsIAotICAgIDIwNTAxLCAyMDUwNSwgMjA1MDksIDIwNTEzLCAyMDUxNywgMjA1MjEsIDIwNTI1LCAyMDUyOSwgMjA1MzMsIDIwNTM3LCAKLSAgICAyMDU0MSwgMjA1NDUsIDIwNTQ5LCAyMDU1MywgMjA1NTcsIDIwNTYxLCAyMDU2NSwgMjA1NjksIDIwNTczLCAyMDU3NywgCi0gICAgMjA1ODEsIDIwNTg1LCAyMDU4OSwgMjA1OTMsIDIwNTk3LCAyMDYwMSwgMjA2MDUsIDIwNjA5LCAyMDYxMywgMjA2MTcsIAotICAgIDIwNjIwLCAyMDYyNCwgMjA2MjcsIDIwNjMxLCAyMDYzNSwgMjA2MzgsIDIwNjQyLCAyMDY0NiwgMjA2NDksIDIwNjUzLCAKLSAgICAyMDY1NywgMjA2NjEsIDIwNjY1LCAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgMjA2ODQsIDIwNjg4LCAyMDY5MiwgCi0gICAgMjA2OTUsIDIwNjk5LCAyMDcwMywgMjA3MDcsIDIwNzExLCAyMDcxNSwgMjA3MTksIDIwNzIzLCAyMDcyNywgMjA3MzEsIAotICAgIDIwNzM1LCAyMDczOSwgMjA3NDMsIDIwNzQ3LCAyMDc1MSwgMjA3NTUsIDIwNzU5LCAyMDc2MywgMjA3NjcsIDIwNzcxLCAKLSAgICAyMDc3NSwgMjA3NzksIDIwNzgzLCAyMDc4NywgMjA3OTEsIDIwNzk1LCAyMDc5OSwgMjA4MDMsIDIwODA3LCAyMDgxMSwgCi0gICAgMjA4MTUsIDIwODE5LCAyMDgyMywgMjA4MjcsIDIwODMxLCAyMDgzNSwgMjA4MzksIDIwODQzLCAyMDg0NywgMjA4NTEsIAotICAgIDIwODU1LCAyMDg1OSwgMjA4NjMsIDIwODY3LCAyMDg3MSwgMjA4NzUsIDIwODc5LCAyMDg4MywgMjA4ODcsIDIwODkxLCAKLSAgICAyMDg5NSwgMjA4OTksIDIwOTAzLCAyMDkwNywgMjA5MTEsIDIwOTE1LCAyMDkxOSwgMjA5MjMsIDIwOTI3LCAyMDkzMSwgCi0gICAgMjA5MzUsIDIwOTM5LCAyMDk0MywgMjA5NDcsIDIwOTUxLCAyMDk1NSwgMjA5NTksIDIwOTYzLCAyMDk2NywgMjA5NzEsIAotICAgIDIwOTc1LCAyMDk3OSwgMjA5ODMsIDIwOTg3LCAyMDk5MSwgMjA5OTUsIDIwOTk5LCAyMTAwMywgMjEwMDcsIDIxMDExLCAKLSAgICAyMTAxNSwgMjEwMTksIDIxMDIzLCAyMTAyNywgMjEwMzEsIDIxMDM1LCAyMTAzOSwgMjEwNDMsIDIxMDQ3LCAyMTA1MSwgCi0gICAgMjEwNTUsIDIxMDU5LCAyMTA2MywgMjEwNjcsIDIxMDcxLCAyMTA3NSwgMjEwNzksIDIxMDgzLCAyMTA4NywgMjEwOTEsIAotICAgIDIxMDk1LCAyMTA5OSwgMjExMDMsIDIxMTA3LCAyMTExMSwgMjExMTUsIDIxMTE5LCAyMTEyMywgMjExMjcsIDIxMTMxLCAKLSAgICAyMTEzNSwgMjExMzksIDIxMTQzLCAyMTE0NywgMjExNTEsIDIxMTU1LCAyMTE1OSwgMjExNjMsIDIxMTY3LCAyMTE3MSwgCi0gICAgMjExNzUsIDIxMTc5LCAyMTE4MywgMjExODcsIDIxMTkxLCAyMTE5NSwgMjExOTksIDIxMjAzLCAyMTIwNywgMjEyMTEsIAotICAgIDIxMjE1LCAyMTIxOSwgMjEyMjMsIDIxMjI3LCAyMTIzMSwgMjEyMzUsIDIxMjM5LCAyMTI0MywgMjEyNDcsIDIxMjUwLCAKLSAgICAyMTI1NCwgMjEyNTgsIDIxMjYyLCAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDIxMjg2LCAyMTI5MCwgCi0gICAgMjEyOTQsIDIxMjk4LCAyMTMwMiwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIAotICAgIDIxMzM0LCAyMTMzOCwgMjEzNDIsIDIxMzQ1LCAyMTM0OSwgMjEzNTMsIDIxMzU3LCAyMTM2MSwgMjEzNjUsIDIxMzY5LCAKLSAgICAyMTM3MywgMjEzNzcsIDIxMzgxLCAyMTM4NSwgMjEzODksIDIxMzkzLCAyMTM5NywgMjE0MDEsIDIxNDA1LCAyMTQwOSwgCi0gICAgMjE0MTMsIDIxNDE3LCAyMTQyMSwgMjE0MjUsIDIxNDI5LCAyMTQzMywgMjE0MzcsIDIxNDQxLCAyMTQ0NSwgMjE0NDksIAotICAgIDIxNDUzLCAyMTQ1NywgMjE0NjEsIDIxNDY1LCAyMTQ2OSwgMjE0NzMsIDIxNDc3LCAyMTQ4MSwgMjE0ODUsIDIxNDg5LCAKLSAgICAyMTQ5MywgMjE0OTcsIDIxNTAxLCAyMTUwNSwgMjE1MDksIDIxNTEzLCAyMTUxNywgMjE1MjEsIDIxNTI1LCAyMTUyOSwgCi0gICAgMjE1MzMsIDAsIDIxNTM3LCAyMTU0MSwgMjE1NDUsIDIxNTQ5LCAwLCAwLCAyMTU1MywgMjE1NTcsIDIxNTYxLCAyMTU2NSwgCi0gICAgMjE1NjksIDIxNTczLCAyMTU3NywgMCwgMjE1ODEsIDAsIDIxNTg1LCAyMTU4OSwgMjE1OTMsIDIxNTk3LCAwLCAwLCAKLSAgICAyMTYwMSwgMjE2MDUsIDIxNjA5LCAyMTYxMywgMjE2MTcsIDIxNjIxLCAyMTYyNSwgMjE2MjksIDIxNjMzLCAyMTYzNywgCi0gICAgMjE2NDEsIDIxNjQ1LCAyMTY0OSwgMjE2NTMsIDIxNjU3LCAyMTY2MSwgMjE2NjUsIDIxNjY5LCAyMTY3MywgMjE2NzcsIAotICAgIDIxNjgxLCAyMTY4NSwgMjE2ODksIDIxNjkyLCAyMTY5NiwgMjE3MDAsIDIxNzA0LCAyMTcwOCwgMjE3MTIsIDIxNzE2LCAKLSAgICAyMTcyMCwgMjE3MjQsIDIxNzI4LCAyMTczMiwgMjE3MzYsIDIxNzQwLCAyMTc0NCwgMjE3NDgsIDIxNzUyLCAyMTc1NiwgCi0gICAgMjE3NjAsIDAsIDIxNzY0LCAyMTc2OCwgMjE3NzIsIDIxNzc2LCAwLCAwLCAyMTc4MCwgMjE3ODQsIDIxNzg4LCAyMTc5MiwgCi0gICAgMjE3OTYsIDIxODAwLCAyMTgwNCwgMjE4MDgsIDIxODEyLCAyMTgxNiwgMjE4MjAsIDIxODI0LCAyMTgyOCwgMjE4MzIsIAotICAgIDIxODM2LCAyMTg0MCwgMjE4NDQsIDIxODQ5LCAyMTg1NCwgMjE4NTksIDIxODY1LCAyMTg3MSwgMjE4NzYsIDIxODgxLCAKLSAgICAyMTg4NywgMjE4OTAsIDIxODk0LCAyMTg5OCwgMjE5MDIsIDIxOTA2LCAyMTkxMCwgMjE5MTQsIDIxOTE4LCAwLCAyMTkyMiwgCi0gICAgMjE5MjYsIDIxOTMwLCAyMTkzNCwgMCwgMCwgMjE5MzgsIDIxOTQyLCAyMTk0NiwgMjE5NTAsIDIxOTU0LCAyMTk1OCwgCi0gICAgMjE5NjIsIDAsIDIxOTY2LCAwLCAyMTk3MCwgMjE5NzQsIDIxOTc4LCAyMTk4MiwgMCwgMCwgMjE5ODYsIDIxOTkwLCAKLSAgICAyMTk5NCwgMjE5OTgsIDIyMDAyLCAyMjAwNiwgMjIwMTAsIDIyMDE0LCAyMjAxOCwgMjIwMjMsIDIyMDI4LCAyMjAzMywgCi0gICAgMjIwMzksIDIyMDQ1LCAyMjA1MCwgMCwgMjIwNTUsIDIyMDU5LCAyMjA2MywgMjIwNjcsIDIyMDcxLCAyMjA3NSwgMjIwNzksIAotICAgIDIyMDgzLCAyMjA4NywgMjIwOTEsIDIyMDk1LCAyMjA5OSwgMjIxMDMsIDIyMTA3LCAyMjExMSwgMjIxMTUsIDIyMTE5LCAKLSAgICAyMjEyMiwgMjIxMjYsIDIyMTMwLCAyMjEzNCwgMjIxMzgsIDIyMTQyLCAyMjE0NiwgMjIxNTAsIDIyMTU0LCAyMjE1OCwgCi0gICAgMjIxNjIsIDIyMTY2LCAyMjE3MCwgMjIxNzQsIDIyMTc4LCAyMjE4MiwgMjIxODYsIDIyMTkwLCAyMjE5NCwgMjIxOTgsIAotICAgIDIyMjAyLCAyMjIwNiwgMjIyMTAsIDIyMjE0LCAyMjIxOCwgMjIyMjIsIDIyMjI2LCAyMjIzMCwgMjIyMzQsIDIyMjM4LCAKLSAgICAyMjI0MiwgMjIyNDYsIDIyMjUwLCAyMjI1NCwgMjIyNTgsIDIyMjYyLCAyMjI2NiwgMjIyNzAsIDIyMjc0LCAyMjI3OCwgMCwgCi0gICAgMjIyODIsIDIyMjg2LCAyMjI5MCwgMjIyOTQsIDAsIDAsIDIyMjk4LCAyMjMwMiwgMjIzMDYsIDIyMzEwLCAyMjMxNCwgCi0gICAgMjIzMTgsIDIyMzIyLCAyMjMyNiwgMjIzMzAsIDIyMzM0LCAyMjMzOCwgMjIzNDIsIDIyMzQ2LCAyMjM1MCwgMjIzNTQsIAotICAgIDIyMzU4LCAyMjM2MiwgMjIzNjYsIDIyMzcwLCAyMjM3NCwgMjIzNzgsIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk0LCAKLSAgICAyMjM5OCwgMjI0MDIsIDIyNDA2LCAyMjQxMCwgMjI0MTQsIDIyNDE4LCAyMjQyMiwgMjI0MjYsIDIyNDMwLCAyMjQzNCwgCi0gICAgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDU0LCAyMjQ1OCwgMjI0NjIsIDIyNDY2LCAyMjQ3MCwgMjI0NzQsIAotICAgIDIyNDc4LCAyMjQ4MiwgMjI0ODYsIDIyNDkwLCAyMjQ5NCwgMjI0OTgsIDIyNTAyLCAyMjUwNiwgMjI1MTAsIDIyNTE0LCAKLSAgICAyMjUxOCwgMjI1MjIsIDIyNTI1LCAyMjUyOSwgMjI1MzMsIDIyNTM3LCAyMjU0MSwgMjI1NDUsIDIyNTQ5LCAyMjU1MywgCi0gICAgMjI1NTcsIDIyNTYxLCAwLCAwLCAyMjU2NSwgMjI1NzQsIDIyNTgwLCAyMjU4NSwgMjI1ODksIDIyNTkyLCAyMjU5NywgCi0gICAgMjI2MDAsIDIyNjAzLCAyMjYwNiwgMjI2MTEsIDIyNjE1LCAyMjYyMCwgMjI2MjMsIDIyNjI2LCAyMjYyOSwgMjI2MzIsIAotICAgIDIyNjM1LCAyMjYzOCwgMjI2NDIsIDIyNjQ1LCAyMjY0OSwgMjI2NTMsIDIyNjU3LCAyMjY2MSwgMjI2NjUsIDIyNjY5LCAKLSAgICAyMjY3MywgMjI2NzcsIDIyNjgxLCAyMjY4NSwgMjI2ODksIDAsIDAsIDAsIDIyNjk1LCAyMjcwMSwgMjI3MDUsIDIyNzA5LCAKLSAgICAyMjcxMywgMjI3MTksIDIyNzIzLCAyMjcyNywgMjI3MzEsIDIyNzM3LCAyMjc0MSwgMjI3NDUsIDIyNzQ5LCAyMjc1NSwgCi0gICAgMjI3NTksIDIyNzYzLCAyMjc2NywgMjI3NzMsIDIyNzc5LCAyMjc4NSwgMjI3OTMsIDIyNzk5LCAyMjgwNSwgMjI4MTEsIAotICAgIDIyODE3LCAyMjgyMywgMCwgMCwgMCwgMCwgMCwgMCwgMjI4MjksIDIyODMyLCAyMjgzNSwgMjI4MzgsIDIyODQxLCAyMjg0NCwgCi0gICAgMjI4NDgsIDIyODUyLCAyMjg1NSwgMjI4NTksIDIyODYzLCAyMjg2NywgMjI4NzEsIDIyODc1LCAyMjg3OCwgMjI4ODIsIAotICAgIDIyODg2LCAyMjg5MCwgMjI4OTQsIDIyODk4LCAyMjkwMiwgMjI5MDYsIDIyOTEwLCAyMjkxNCwgMjI5MTgsIDIyOTIyLCAKLSAgICAyMjkyNSwgMjI5MjksIDIyOTMzLCAyMjkzNywgMjI5NDEsIDIyOTQ1LCAyMjk0OSwgMjI5NTMsIDIyOTU3LCAyMjk2MSwgCi0gICAgMjI5NjUsIDIyOTY5LCAyMjk3MywgMjI5NzcsIDIyOTgxLCAyMjk4NSwgMjI5ODksIDIyOTkzLCAyMjk5NywgMjMwMDEsIAotICAgIDIzMDA0LCAyMzAwOCwgMjMwMTIsIDIzMDE2LCAyMzAyMCwgMjMwMjQsIDIzMDI4LCAyMzAzMiwgMjMwMzYsIDIzMDQwLCAKLSAgICAyMzA0NCwgMjMwNDgsIDIzMDUyLCAyMzA1NiwgMjMwNjAsIDIzMDY0LCAyMzA2OCwgMjMwNzIsIDIzMDc2LCAyMzA4MCwgCi0gICAgMjMwODQsIDIzMDg4LCAyMzA5MiwgMjMwOTYsIDIzMTAwLCAyMzEwNCwgMjMxMDgsIDIzMTEyLCAyMzExNiwgMjMxMjAsIAotICAgIDIzMTI0LCAyMzEyOCwgMjMxMzIsIDIzMTM2LCAyMzEzOSwgMjMxNDMsIDIzMTQ3LCAyMzE1MSwgMjMxNTUsIDIzMTU5LCAwLCAKLSAgICAwLCAyMzE2MywgMjMxNjgsIDIzMTczLCAyMzE3OCwgMjMxODMsIDIzMTg4LCAwLCAwLCAyMzE5MywgMjMxOTcsIDIzMjAwLCAKLSAgICAyMzIwNCwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMTgsIDIzMjI0LCAyMzIyOSwgMjMyMzMsIDIzMjM2LCAyMzI0MCwgCi0gICAgMjMyNDQsIDIzMjQ5LCAyMzI1MywgMjMyNTgsIDIzMjYyLCAyMzI2NywgMjMyNzEsIDIzMjc2LCAyMzI4MCwgMjMyODUsIAotICAgIDIzMjkxLCAyMzI5NSwgMjMzMDAsIDIzMzA0LCAyMzMwOSwgMjMzMTUsIDIzMzE5LCAyMzMyNSwgMjMzMzEsIDIzMzM1LCAKLSAgICAyMzM0MCwgMjMzNDgsIDIzMzU2LCAyMzM2MywgMjMzNjgsIDIzMzczLCAyMzM4MiwgMjMzODgsIDIzMzk2LCAyMzQwMSwgCi0gICAgMjM0MDcsIDIzNDExLCAyMzQxNSwgMjM0MTksIDIzNDIzLCAyMzQyNywgMjM0MzEsIDIzNDM1LCAyMzQzOSwgMjM0NDMsIAotICAgIDIzNDQ3LCAyMzQ1MywgMjM0NTgsIDIzNDYzLCAyMzQ2NiwgMjM0NzAsIDIzNDc0LCAyMzQ3OSwgMjM0ODMsIDIzNDg4LCAKLSAgICAyMzQ5MiwgMjM0OTcsIDIzNTAxLCAyMzUwNiwgMjM1MTAsIDIzNTE1LCAyMzUxOSwgMjM1MjQsIDIzNTI4LCAyMzUzMywgCi0gICAgMjM1MzksIDIzNTQzLCAyMzU0OCwgMjM1NTMsIDIzNTU3LCAyMzU2MSwgMjM1NjUsIDIzNTY5LCAyMzU3MiwgMjM1NzYsIAotICAgIDIzNTgyLCAyMzU4NywgMjM1OTIsIDIzNTk2LCAyMzYwMCwgMjM2MDQsIDIzNjA5LCAyMzYxMywgMjM2MTgsIDIzNjIyLCAKLSAgICAyMzYyNywgMjM2MzAsIDIzNjM0LCAyMzYzOCwgMjM2NDMsIDIzNjQ3LCAyMzY1MiwgMjM2NTYsIDIzNjYxLCAyMzY2NywgCi0gICAgMjM2NzEsIDIzNjc1LCAyMzY3OSwgMjM2ODMsIDIzNjg3LCAyMzY5MSwgMjM2OTUsIDIzNjk5LCAyMzcwMywgMjM3MDcsIAotICAgIDIzNzExLCAyMzcxNywgMjM3MjAsIDIzNzI0LCAyMzcyOCwgMjM3MzMsIDIzNzM3LCAyMzc0MiwgMjM3NDYsIDIzNzUxLCAKLSAgICAyMzc1NSwgMjM3NjAsIDIzNzY0LCAyMzc2OSwgMjM3NzMsIDIzNzc4LCAyMzc4MiwgMjM3ODcsIDIzNzkzLCAyMzc5NywgCi0gICAgMjM4MDEsIDIzODA3LCAyMzgxMywgMjM4MTksIDIzODI1LCAyMzgyOSwgMjM4MzMsIDIzODM3LCAyMzg0MSwgMjM4NDUsIAotICAgIDIzODQ5LCAyMzg1NSwgMjM4NTksIDIzODYzLCAyMzg2NywgMjM4NzIsIDIzODc2LCAyMzg4MSwgMjM4ODUsIDIzODkwLCAKLSAgICAyMzg5NCwgMjM4OTksIDIzOTAzLCAyMzkwOCwgMjM5MTIsIDIzOTE3LCAyMzkyMSwgMjM5MjYsIDIzOTMyLCAyMzkzNiwgCi0gICAgMjM5NDIsIDIzOTQ2LCAyMzk1MCwgMjM5NTQsIDIzOTU4LCAyMzk2MiwgMjM5NjYsIDIzOTcyLCAyMzk3NSwgMjM5NzksIAotICAgIDIzOTgzLCAyMzk4OCwgMjM5OTIsIDIzOTk3LCAyNDAwMSwgMjQwMDYsIDI0MDEwLCAyNDAxNSwgMjQwMTksIDI0MDI0LCAKLSAgICAyNDAyOCwgMjQwMzMsIDI0MDM3LCAyNDA0MiwgMjQwNDgsIDI0MDUyLCAyNDA1NywgMjQwNjEsIDI0MDY3LCAyNDA3MywgCi0gICAgMjQwNzcsIDI0MDgxLCAyNDA4NSwgMjQwODksIDI0MDkzLCAyNDA5NywgMjQxMDMsIDI0MTA3LCAyNDExMSwgMjQxMTUsIAotICAgIDI0MTIwLCAyNDEyNCwgMjQxMjksIDI0MTMzLCAyNDEzOCwgMjQxNDQsIDI0MTQ4LCAyNDE1MywgMjQxNTcsIDI0MTYxLCAKLSAgICAyNDE2NSwgMjQxNjksIDI0MTczLCAyNDE3NywgMjQxODEsIDI0MTg3LCAyNDE5MSwgMjQxOTUsIDI0MTk5LCAyNDIwNCwgCi0gICAgMjQyMDgsIDI0MjEzLCAyNDIxNywgMjQyMjIsIDI0MjI2LCAyNDIzMSwgMjQyMzUsIDI0MjQwLCAyNDI0NCwgMjQyNDksIAotICAgIDI0MjUzLCAyNDI1OCwgMjQyNjEsIDI0MjY1LCAyNDI2OSwgMjQyNzMsIDI0Mjc3LCAyNDI4MSwgMjQyODUsIDI0Mjg5LCAKLSAgICAyNDI5MywgMjQyOTksIDI0MzAzLCAyNDMwNywgMjQzMTEsIDI0MzE2LCAyNDMyMCwgMjQzMjUsIDI0MzI5LCAyNDMzNCwgCi0gICAgMjQzMzgsIDI0MzQzLCAyNDM0NywgMjQzNTIsIDI0MzU2LCAyNDM2MSwgMjQzNjUsIDI0MzcwLCAyNDM3NiwgMjQzNzksIAotICAgIDI0Mzg0LCAyNDM4OCwgMjQzOTMsIDI0Mzk5LCAyNDQwNSwgMjQ0MTEsIDI0NDE3LCAyNDQyMywgMjQ0MjksIDI0NDM1LCAKLSAgICAyNDQzOSwgMjQ0NDMsIDI0NDQ3LCAyNDQ1MSwgMjQ0NTUsIDI0NDU5LCAyNDQ2MywgMjQ0NjcsIDI0NDcyLCAyNDQ3NiwgCi0gICAgMjQ0ODEsIDI0NDg1LCAyNDQ5MCwgMjQ0OTQsIDI0NDk5LCAyNDUwMywgMjQ1MDgsIDI0NTEyLCAyNDUxNywgMjQ1MjEsIAotICAgIDI0NTI2LCAyNDUzMCwgMjQ1MzQsIDI0NTM4LCAyNDU0MiwgMjQ1NDYsIDI0NTUwLCAyNDU1NCwgMjQ1NjAsIDI0NTYzLCAKLSAgICAyNDU2NywgMjQ1NzEsIDI0NTc2LCAyNDU4MCwgMjQ1ODUsIDI0NTg5LCAyNDU5NCwgMjQ1OTgsIDI0NjAzLCAyNDYwNywgCi0gICAgMjQ2MTIsIDI0NjE2LCAyNDYyMSwgMjQ2MjUsIDI0NjMwLCAyNDYzNiwgMjQ2NDAsIDI0NjQ2LCAyNDY1MSwgMjQ2NTcsIAotICAgIDI0NjYxLCAyNDY2NywgMjQ2NzIsIDI0Njc2LCAyNDY4MCwgMjQ2ODQsIDI0Njg4LCAyNDY5MiwgMjQ2OTcsIDI0NzAxLCAKLSAgICAyNDcwNSwgMjQ3MTAsIDI0NzE0LCAyNDcxOSwgMjQ3MjIsIDI0NzI2LCAyNDczMCwgMjQ3MzQsIDI0NzM4LCAyNDc0MiwgCi0gICAgMjQ3NDYsIDI0NzUwLCAyNDc1NCwgMjQ3NTgsIDI0NzYyLCAyNDc2NiwgMjQ3NzEsIDI0Nzc1LCAyNDc3OSwgMjQ3ODUsIAotICAgIDI0Nzg5LCAyNDc5NSwgMjQ3OTksIDI0ODA1LCAyNDgwOSwgMjQ4MTMsIDI0ODE3LCAyNDgyMSwgMjQ4MjUsIDI0ODMwLCAKLSAgICAyNDgzNCwgMjQ4MzgsIDI0ODQyLCAyNDg0NiwgMjQ4NTAsIDI0ODU0LCAyNDg1OCwgMjQ4NjIsIDI0ODY2LCAyNDg3MCwgCi0gICAgMjQ4NzYsIDI0ODgyLCAyNDg4OCwgMjQ4OTQsIDI0OTAwLCAyNDkwNSwgMjQ5MTEsIDI0OTE3LCAyNDkyMywgMjQ5MjcsIAotICAgIDI0OTMxLCAyNDkzNSwgMjQ5MzksIDI0OTQzLCAyNDk0NywgMjQ5NTEsIDI0OTU1LCAyNDk1OSwgMjQ5NjMsIDI0OTY3LCAKLSAgICAyNDk3MSwgMjQ5NzUsIDI0OTgwLCAyNDk4NSwgMjQ5OTAsIDI0OTk1LCAyNDk5OSwgMjUwMDMsIDI1MDA3LCAyNTAxMSwgCi0gICAgMjUwMTUsIDI1MDE5LCAyNTAyMywgMjUwMjcsIDI1MDMxLCAyNTAzNywgMjUwNDMsIDI1MDQ5LCAyNTA1NSwgMjUwNjEsIAotICAgIDI1MDY3LCAyNTA3MywgMjUwNzksIDI1MDg1LCAyNTA4OSwgMjUwOTMsIDI1MDk3LCAyNTEwMSwgMjUxMDUsIDI1MTA5LCAKLSAgICAyNTExMywgMjUxMTksIDI1MTI1LCAyNTEzMSwgMjUxMzcsIDI1MTQzLCAyNTE0OSwgMjUxNTUsIDI1MTYxLCAyNTE2NywgCi0gICAgMjUxNzIsIDI1MTc3LCAyNTE4MiwgMjUxODcsIDI1MTkzLCAyNTE5OSwgMjUyMDUsIDI1MjExLCAyNTIxNywgMjUyMjMsIAotICAgIDI1MjI5LCAyNTIzNSwgMjUyNDEsIDI1MjQ3LCAyNTI1MywgMjUyNTgsIDI1MjY0LCAyNTI3MCwgMjUyNzYsIDI1MjgxLCAKLSAgICAyNTI4NiwgMjUyOTEsIDI1Mjk2LCAyNTMwMSwgMjUzMDYsIDI1MzExLCAyNTMxNiwgMjUzMjEsIDI1MzI2LCAyNTMzMSwgCi0gICAgMjUzMzYsIDI1MzQxLCAyNTM0NiwgMjUzNTEsIDI1MzU2LCAyNTM2MSwgMjUzNjYsIDI1MzcxLCAyNTM3NiwgMjUzODEsIAotICAgIDI1Mzg2LCAyNTM5MSwgMjUzOTYsIDI1NDAxLCAyNTQwNiwgMjU0MTEsIDI1NDE2LCAyNTQyMSwgMjU0MjYsIDI1NDMxLCAKLSAgICAyNTQzNiwgMjU0NDEsIDI1NDQ2LCAyNTQ1MSwgMjU0NTYsIDI1NDYxLCAyNTQ2NiwgMjU0NzEsIDI1NDc2LCAyNTQ4MSwgCi0gICAgMjU0ODYsIDI1NDkwLCAyNTQ5NSwgMjU1MDAsIDI1NTA1LCAyNTUxMCwgMjU1MTUsIDI1NTIwLCAyNTUyNSwgMjU1MzAsIAotICAgIDI1NTM1LCAyNTU0MCwgMjU1NDUsIDI1NTUwLCAyNTU1NSwgMjU1NjAsIDI1NTY1LCAyNTU3MCwgMjU1NzUsIDI1NTgwLCAKLSAgICAyNTU4NSwgMjU1OTAsIDI1NTk1LCAyNTYwMCwgMjU2MDUsIDI1NjEwLCAyNTYxNSwgMjU2MjAsIDI1NjI1LCAyNTYzMCwgCi0gICAgMjU2MzUsIDI1NjQwLCAyNTY0NSwgMjU2NDksIDI1NjU0LCAyNTY1OSwgMjU2NjQsIDI1NjY5LCAyNTY3NCwgMjU2NzgsIAotICAgIDI1NjgzLCAyNTY4OSwgMjU2OTQsIDI1Njk5LCAyNTcwNCwgMjU3MDksIDI1NzE1LCAyNTcyMCwgMjU3MjUsIDI1NzMwLCAKLSAgICAyNTczNSwgMjU3NDAsIDI1NzQ1LCAyNTc1MCwgMjU3NTUsIDI1NzYwLCAyNTc2NSwgMjU3NzAsIDI1Nzc1LCAyNTc4MCwgCi0gICAgMjU3ODUsIDI1NzkwLCAyNTc5NSwgMjU4MDAsIDI1ODA1LCAyNTgxMCwgMjU4MTUsIDI1ODIwLCAyNTgyNSwgMjU4MzAsIAotICAgIDI1ODM1LCAyNTg0MCwgMjU4NDUsIDI1ODUwLCAyNTg1NSwgMjU4NjAsIDI1ODY1LCAyNTg3MCwgMjU4NzUsIDI1ODgwLCAKLSAgICAyNTg4NSwgMjU4OTAsIDI1ODk1LCAyNTkwMCwgMjU5MDUsIDI1OTEwLCAyNTkxNSwgMjU5MjAsIDI1OTI1LCAyNTkzMCwgCi0gICAgMjU5MzUsIDI1OTQxLCAyNTk0NiwgMjU5NTEsIDI1OTU2LCAyNTk2MSwgMjU5NjYsIDI1OTcxLCAyNTk3NiwgMjU5ODEsIAotICAgIDI1OTg2LCAyNTk5MSwgMjU5OTYsIDI2MDAxLCAyNjAwNiwgMjYwMTEsIDI2MDE2LCAyNjAyMSwgMjYwMjYsIDI2MDMxLCAKLSAgICAyNjAzNiwgMjYwNDEsIDI2MDQ2LCAyNjA1MSwgMjYwNTYsIDI2MDYxLCAyNjA2NiwgMjYwNzEsIDI2MDc2LCAyNjA4MSwgCi0gICAgMjYwODYsIDI2MDkxLCAyNjA5NiwgMjYxMDEsIDI2MTA2LCAyNjExMSwgMjYxMTYsIDI2MTIxLCAyNjEyNiwgMjYxMzEsIAotICAgIDI2MTM3LCAyNjE0MSwgMjYxNDUsIDI2MTQ5LCAyNjE1MywgMjYxNTcsIDI2MTYxLCAyNjE2NSwgMjYxNjksIDI2MTc1LCAKLSAgICAyNjE4MSwgMjYxODcsIDI2MTkzLCAyNjE5OSwgMjYyMDUsIDI2MjExLCAyNjIxOCwgMjYyMjQsIDI2MjI5LCAyNjIzNCwgCi0gICAgMjYyMzksIDI2MjQ0LCAyNjI0OSwgMjYyNTQsIDI2MjU5LCAyNjI2NCwgMjYyNjksIDI2Mjc0LCAyNjI3OSwgMjYyODQsIAotICAgIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTQsIDI2MzE5LCAyNjMyNCwgMjYzMjksIDI2MzM0LCAKLSAgICAyNjMzOSwgMjYzNDQsIDI2MzQ5LCAyNjM1NCwgMjYzNTksIDI2MzY0LCAwLCAwLCAwLCAyNjM3MSwgMjYzODEsIDI2Mzg1LCAKLSAgICAyNjM5MiwgMjYzOTYsIDI2NDAwLCAyNjQwNCwgMjY0MTIsIDI2NDE2LCAyNjQyMSwgMjY0MjYsIDI2NDMxLCAyNjQzNSwgCi0gICAgMjY0NDAsIDI2NDQ1LCAyNjQ0OCwgMjY0NTIsIDI2NDU2LCAyNjQ2NSwgMjY0NjksIDI2NDczLCAyNjQ3OSwgMjY0ODMsIAotICAgIDI2NDg3LCAyNjQ5NSwgMjY0OTksIDI2NTA3LCAyNjUxMywgMjY1MTksIDI2NTI1LCAyNjUzMSwgMjY1NDEsIDI2NTQ3LCAKLSAgICAyNjU1MSwgMjY1NjAsIDI2NTYzLCAyNjU2OSwgMjY1NzMsIDI2NTc5LCAyNjU4NCwgMjY1OTAsIDI2NTk4LCAyNjYwNCwgCi0gICAgMjY2MDksIDI2NjE2LCAyNjYyMSwgMjY2MjUsIDI2NjI5LCAyNjYzOSwgMjY2NDUsIDI2NjQ5LCAyNjY1OSwgMjY2NjUsIAotICAgIDI2NjY5LCAyNjY3MywgMjY2ODAsIDI2Njg4LCAyNjY5NCwgMjY3MDAsIDI2NzA5LCAyNjcxMywgMjY3MTcsIDI2NzIxLCAKLSAgICAyNjcyOSwgMjY3MzYsIDI2NzQwLCAyNjc0NCwgMjY3NDgsIDI2NzUyLCAyNjc1NiwgMjY3NjAsIDI2NzY0LCAyNjc2OCwgCi0gICAgMjY3NzIsIDI2Nzc2LCAyNjc4MCwgMjY3ODUsIDI2NzkwLCAyNjc5NSwgMjY3OTksIDI2ODAzLCAyNjgwNywgMjY4MTEsIAotICAgIDI2ODE1LCAyNjgxOSwgMjY4MjcsIDI2ODM1LCAyNjg0MywgMjY4NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2ODU5LCAKLSAgICAyNjg2MywgMjY4NjcsIDI2ODcxLCAyNjg3NSwgMjY4ODAsIDI2ODg1LCAyNjg5MCwgMjY4OTUsIDI2OTAwLCAyNjkwNCwgCi0gICAgMjY5MDksIDI2OTEzLCAwLCAyNjkxNywgMjY5MjIsIDI2OTI3LCAyNjkzMiwgMjY5MzYsIDI2OTQxLCAyNjk0NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5NTEsIDI2OTU1LCAyNjk1OSwgMjY5NjMsIDI2OTY3LCAyNjk3MiwgCi0gICAgMjY5NzcsIDI2OTgyLCAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwMSwgMjcwMDUsIDI3MDA5LCAyNzAxNCwgMjcwMTksIAotICAgIDI3MDI0LCAyNzAyOSwgMjcwMzMsIDI3MDM4LCAyNzA0MywgMjcwNDgsIDI3MDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzA1OSwgMjcwNjMsIDI3MDY3LCAyNzA3MSwgMjcwNzUsIDI3MDgwLCAyNzA4NSwgMjcwOTAsIDI3MDk1LCAyNzEwMCwgCi0gICAgMjcxMDQsIDI3MTA5LCAyNzExMywgMjcxMTcsIDI3MTIyLCAyNzEyNywgMjcxMzIsIDI3MTM3LCAyNzE0MSwgMjcxNDYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MTUxLCAyNzE1NSwgMjcxNTksIDI3MTYzLCAyNzE2NywgCi0gICAgMjcxNzIsIDI3MTc3LCAyNzE4MiwgMjcxODcsIDI3MTkyLCAyNzE5NiwgMjcyMDEsIDI3MjA1LCAwLCAyNzIwOSwgMjcyMTQsIAotICAgIDI3MjE5LCAwLCAyNzIyNCwgMjcyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MjM0LCAyNzIzNywgCi0gICAgMjcyNDEsIDI3MjQ1LCAyNzI0OSwgMjcyNTMsIDI3MjU3LCAyNzI2MSwgMjcyNjUsIDI3MjY5LCAyNzI3MywgMjcyNzcsIAotICAgIDI3MjgxLCAyNzI4NSwgMjcyODksIDI3MjkzLCAyNzI5NywgMjczMDEsIDI3MzA0LCAyNzMwOCwgMjczMTIsIDI3MzE2LCAKLSAgICAyNzMyMCwgMjczMjQsIDI3MzI4LCAyNzMzMiwgMjczMzYsIDI3MzQwLCAyNzM0NCwgMjczNDgsIDI3MzUyLCAyNzM1NiwgCi0gICAgMjczNjAsIDI3MzYzLCAyNzM2NywgMjczNzEsIDI3Mzc3LCAyNzM4MywgMjczODksIDI3Mzk1LCAyNzQwMSwgMjc0MDcsIAotICAgIDI3NDEzLCAyNzQxOSwgMjc0MjUsIDI3NDMxLCAyNzQzNywgMjc0NDMsIDI3NDQ5LCAyNzQ1NSwgMjc0NjQsIDI3NDczLCAKLSAgICAyNzQ3OSwgMjc0ODUsIDI3NDkxLCAyNzQ5NiwgMjc1MDAsIDI3NTA1LCAyNzUxMCwgMjc1MTUsIDI3NTE5LCAyNzUyNCwgCi0gICAgMjc1MjksIDI3NTM0LCAyNzUzOCwgMjc1NDMsIDI3NTQ3LCAyNzU1MiwgMjc1NTcsIDI3NTYyLCAyNzU2NywgMjc1NzEsIAotICAgIDI3NTc1LCAyNzU3OSwgMjc1ODMsIDI3NTg3LCAyNzU5MSwgMjc1OTUsIDI3NTk5LCAyNzYwMywgMjc2MDcsIDI3NjEzLCAKLSAgICAyNzYxNywgMjc2MjEsIDI3NjI1LCAyNzYyOSwgMjc2MzMsIDI3NjQxLCAyNzY0NywgMjc2NTEsIDI3NjU3LCAyNzY2MSwgCi0gICAgMjc2NjcsIDI3NjcxLCAwLCAwLCAyNzY3NSwgMjc2NzksIDI3NjgyLCAyNzY4NSwgMjc2ODgsIDI3NjkxLCAyNzY5NCwgCi0gICAgMjc2OTcsIDI3NzAxLCAyNzcwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3MDgsIDI3NzE2LCAyNzcyNCwgMjc3MzIsIDI3NzQwLCAKLSAgICAyNzc0OCwgMjc3NTYsIDI3NzY0LCAyNzc3MiwgMjc3ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3Nzg4LCAyNzc5MSwgMjc3OTQsIAotICAgIDI3Nzk3LCAyNzgwMiwgMjc4MDUsIDI3ODEwLCAyNzgxNywgMjc4MjUsIDI3ODMwLCAyNzgzNywgMjc4NDAsIDI3ODQ3LCAKLSAgICAyNzg1NCwgMjc4NjEsIDAsIDI3ODY1LCAyNzg2OSwgMjc4NzIsIDI3ODc1LCAyNzg3OCwgMjc4ODEsIDI3ODg0LCAyNzg4NywgCi0gICAgMjc4OTEsIDI3ODk0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzg5OCwgMjc5MDEsIDI3OTA0LCAyNzkwNywgMjc5MTAsIDI3OTEzLCAKLSAgICAyNzkxNywgMjc5MjEsIDI3OTI1LCAyNzkyOSwgMjc5MzMsIDI3OTM3LCAyNzk0MCwgMjc5NDQsIDI3OTQ4LCAyNzk1MSwgCi0gICAgMjc5NTUsIDI3OTU5LCAyNzk2MywgMjc5NjcsIDI3OTcxLCAyNzk3NSwgMjc5NzksIDI3OTgyLCAyNzk4NiwgMjc5OTAsIAotICAgIDI3OTk0LCAyNzk5NywgMjgwMDEsIDI4MDA1LCAyODAwOSwgMjgwMTMsIDI4MDE3LCAyODAyMSwgMjgwMjUsIDI4MDI5LCAKLSAgICAyODAzNiwgMjgwNDEsIDI4MDQ2LCAyODA1MSwgMjgwNTYsIDI4MDYyLCAyODA2OCwgMjgwNzQsIDI4MDgwLCAyODA4NSwgCi0gICAgMjgwOTEsIDI4MDk3LCAyODEwMiwgMjgxMDgsIDI4MTE0LCAyODEyMCwgMjgxMjYsIDI4MTMyLCAyODEzNywgMjgxNDMsIAotICAgIDI4MTQ4LCAyODE1NCwgMjgxNjAsIDI4MTY2LCAyODE3MiwgMjgxNzgsIDI4MTgzLCAyODE4OCwgMjgxOTQsIDI4MjAwLCAKLSAgICAyODIwNSwgMjgyMTEsIDI4MjE2LCAyODIyMiwgMjgyMjcsIDI4MjMyLCAyODIzOCwgMjgyNDQsIDI4MjUwLCAyODI1NiwgCi0gICAgMjgyNjIsIDI4MjY4LCAyODI3NCwgMjgyODAsIDI4Mjg2LCAyODI5MiwgMjgyOTgsIDI4MzA0LCAyODMwOSwgMjgzMTQsIAotICAgIDI4MzIwLCAyODMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgzMzIsIDI4MzQxLCAyODM1MCwgMjgzNTgsIDI4MzY2LCAKLSAgICAyODM3NiwgMjgzODQsIDI4MzkzLCAyODQwMCwgMjg0MDcsIDI4NDE0LCAyODQyMiwgMjg0MzAsIDI4NDM4LCAyODQ0NiwgCi0gICAgMjg0NTQsIDI4NDYyLCAyODQ3MCwgMjg0NzgsIDI4NDg1LCAyODQ5MywgMjg1MDEsIDI4NTA5LCAyODUxNywgMjg1MjUsIAotICAgIDI4NTM1LCAyODU0NSwgMjg1NTUsIDI4NTY1LCAyODU3NSwgMjg1ODUsIDI4NTk1LCAyODYwNSwgMjg2MTUsIDI4NjI1LCAKLSAgICAyODYzNSwgMjg2NDUsIDI4NjU1LCAyODY2NSwgMjg2NzMsIDI4NjgxLCAyODY5MSwgMjg2OTksIDAsIDAsIDAsIDAsIDAsIAotICAgIDI4NzA5LCAyODcxMywgMjg3MTcsIDI4NzIxLCAyODcyNSwgMjg3MjksIDI4NzMzLCAyODczNywgMjg3NDEsIDI4NzQ1LCAKLSAgICAyODc0OSwgMjg3NTMsIDI4NzU3LCAyODc2MSwgMjg3NjUsIDI4NzY5LCAyODc3MywgMjg3NzcsIDI4NzgxLCAyODc4NSwgCi0gICAgMjg3ODksIDI4NzkzLCAyODc5NywgMjg4MDEsIDI4ODA3LCAyODgxMSwgMjg4MTcsIDI4ODIxLCAyODgyNywgMjg4MzEsIAotICAgIDI4ODM3LCAyODg0MSwgMjg4NDUsIDI4ODQ5LCAyODg1MywgMjg4NTcsIDI4ODYxLCAyODg2NywgMjg4NzMsIDI4ODc5LCAKLSAgICAyODg4NSwgMjg4OTEsIDI4ODk3LCAyODkwMiwgMjg5MDgsIDI4OTE0LCAyODkyMCwgMjg5MjYsIDI4OTMzLCAyODkzOSwgCi0gICAgMjg5NDQsIDI4OTQ5LCAyODk1MywgMjg5NTcsIDI4OTYxLCAyODk2NSwgMjg5NjksIDI4OTczLCAyODk3NywgMjg5ODMsIAotICAgIDI4OTg5LCAyODk5NSwgMjkwMDAsIDI5MDA3LCAyOTAxMiwgMjkwMTcsIDI5MDIzLCAyOTAyOCwgMjkwMzUsIDI5MDQyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTA0OCwgMjkwNTQsIDI5MDU4LCAyOTA2MywgMjkwNjgsIDI5MDczLCAKLSAgICAyOTA3OCwgMjkwODMsIDI5MDg4LCAyOTA5MywgMjkwOTgsIDI5MTAzLCAyOTEwOCwgMjkxMTMsIDI5MTE4LCAyOTEyMywgCi0gICAgMjkxMjgsIDI5MTMyLCAyOTEzNywgMjkxNDIsIDI5MTQ3LCAyOTE1MSwgMjkxNTUsIDI5MTYwLCAyOTE2NSwgMjkxNzAsIAotICAgIDI5MTc1LCAyOTE4MCwgMjkxODUsIDI5MTg5LCAyOTE5NCwgMCwgMjkxOTksIDI5MjA0LCAyOTIwOSwgMjkyMTQsIDI5MjIwLCAKLSAgICAyOTIyNiwgMjkyMzIsIDI5MjM4LCAyOTI0MywgMjkyNDgsIDI5MjU0LCAyOTI2MSwgMCwgMCwgMCwgMCwgMjkyNjgsIAotICAgIDI5MjczLCAyOTI3OSwgMjkyODUsIDI5MjkxLCAyOTI5NywgMjkzMDIsIDI5MzA3LCAyOTMxMywgMjkzMTksIDI5MzI0LCAKLSAgICAyOTMyOSwgMCwgMCwgMCwgMCwgMjkzMzQsIDAsIDAsIDAsIDI5MzM5LCAyOTM0NCwgMjkzNDksIDI5MzU0LCAyOTM1OCwgCi0gICAgMjkzNjIsIDI5MzY2LCAyOTM3MCwgMjkzNzQsIDI5Mzc4LCAyOTM4MywgMjkzODcsIDI5MzkyLCAyOTM5NywgMjk0MDMsIAotICAgIDI5NDA5LCAyOTQxNSwgMjk0MjEsIDI5NDI2LCAyOTQzMiwgMjk0MzgsIDI5NDQ0LCAyOTQ0OSwgMjk0NTUsIDI5NDYwLCAKLSAgICAyOTQ2NiwgMjk0NzIsIDI5NDc3LCAyOTQ4MywgMjk0ODksIDI5NDk1LCAyOTUwMSwgMjk1MDYsIDI5NTExLCAyOTUxNywgCi0gICAgMjk1MjMsIDI5NTI4LCAyOTUzNCwgMjk1MzksIDI5NTQ1LCAyOTU1MCwgMjk1NTYsIDAsIDAsIDI5NTYyLCAyOTU2OCwgCi0gICAgMjk1NzQsIDI5NTgwLCAyOTU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk1OTIsIDI5NjAxLCAKLSAgICAyOTYxMCwgMjk2MTgsIDI5NjI3LCAyOTYzNiwgMjk2NDQsIDI5NjUzLCAyOTY2MiwgMjk2NzEsIDI5NjgwLCAyOTY4OCwgCi0gICAgMjk2OTcsIDI5NzA2LCAyOTcxNCwgMjk3MjMsIDI5NzMyLCAyOTc0MSwgMjk3NTAsIDI5NzU5LCAyOTc2OCwgMjk3NzYsIAotICAgIDI5Nzg1LCAyOTc5MywgMjk4MDEsIDI5ODEwLCAyOTgxOCwgMjk4MjcsIDI5ODM2LCAyOTg0NSwgMjk4NTQsIDI5ODYzLCAKLSAgICAyOTg3MiwgMjk4ODAsIDI5ODg5LCAyOTg5OCwgMjk5MDYsIDI5OTE1LCAyOTkyNCwgMjk5MzMsIDI5OTQyLCAyOTk1MSwgCi0gICAgMjk5NjAsIDI5OTY5LCAwLCAwLCAwLCAwLCAyOTk3OCwgMjk5ODgsIDI5OTk3LCAzMDAwNiwgMzAwMTQsIDMwMDIzLCAKLSAgICAzMDAzMSwgMzAwNDAsIDMwMDQ4LCAzMDA1NywgMzAwNjYsIDMwMDc1LCAzMDA4NCwgMzAwOTMsIDMwMTAyLCAzMDExMSwgCi0gICAgMzAxMjAsIDMwMTI5LCAzMDEzOCwgMzAxNDcsIDMwMTU2LCAzMDE2NSwgMzAxNzQsIDMwMTgzLCAzMDE5MiwgMzAyMDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMwMjA4LCAzMDIxNiwgMzAyMjMsIDMwMjMwLCAzMDIzNywgMzAyNDQsIDMwMjUxLCAzMDI1OCwgCi0gICAgMzAyNjYsIDMwMjczLCAzMDI4MSwgMCwgMCwgMCwgMzAyODksIDMwMjk3LCAzMDMwNSwgMzAzMDksIDMwMzE1LCAzMDMyMSwgCi0gICAgMzAzMjcsIDMwMzMzLCAzMDMzOSwgMzAzNDUsIDMwMzUxLCAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NSwgMzAzODEsIAotICAgIDMwMzg3LCAzMDM5MywgMzAzOTksIDMwNDAzLCAzMDQwOSwgMzA0MTUsIDMwNDIxLCAzMDQyNywgMzA0MzMsIDMwNDM5LCAKLSAgICAzMDQ0NSwgMzA0NTEsIDMwNDU3LCAzMDQ2MywgMzA0NjksIDMwNDc1LCAzMDQ4MSwgMzA0ODcsIDMwNDkzLCAzMDQ5NywgCi0gICAgMzA1MDIsIDMwNTA3LCAzMDUxMiwgMzA1MTYsIDMwNTIxLCAzMDUyNSwgMzA1MzAsIDMwNTM1LCAzMDU0MCwgMzA1NDUsIAotICAgIDMwNTUwLCAzMDU1NSwgMzA1NjAsIDMwNTY1LCAzMDU3MCwgMzA1NzQsIDMwNTc5LCAzMDU4NCwgMzA1ODksIDMwNTk0LCAKLSAgICAzMDU5OCwgMzA2MDIsIDMwNjA3LCAzMDYxMiwgMzA2MTcsIDMwNjIyLCAwLCAwLCAzMDYyOCwgMzA2MzIsIDMwNjM5LCAKLSAgICAzMDY0NCwgMzA2NTAsIDMwNjU2LCAzMDY2MSwgMzA2NjcsIDMwNjczLCAzMDY3OCwgMzA2ODQsIDMwNjkwLCAzMDY5NiwgCi0gICAgMzA3MDIsIDMwNzA4LCAzMDcxMywgMzA3MTgsIDMwNzI0LCAzMDcyOSwgMzA3MzUsIDMwNzQwLCAzMDc0NiwgMzA3NTIsIAotICAgIDMwNzU4LCAzMDc2NCwgMzA3NjksIDMwNzc0LCAzMDc3OSwgMzA3ODUsIDMwNzkxLCAzMDc5NiwgMzA4MDIsIDMwODA4LCAKLSAgICAzMDgxMiwgMzA4MTcsIDMwODIyLCAzMDgyNywgMzA4MzIsIDMwODM3LCAzMDg0MiwgMzA4NDcsIDMwODUzLCAzMDg1OSwgCi0gICAgMzA4NjUsIDMwODcwLCAzMDg3NSwgMzA4NzksIDMwODg0LCAzMDg4OCwgMzA4OTMsIDMwODk3LCAzMDkwMiwgMzA5MDcsIAotICAgIDMwOTEyLCAzMDkxNywgMzA5MjQsIDMwOTMxLCAzMDkzOCwgMzA5NDgsIDMwOTU3LCAzMDk2NCwgMzA5NzAsIDMwOTgxLCAKLSAgICAzMDk4NiwgMzA5OTIsIDAsIDMwOTk4LCAzMTAwMywgMzEwMDgsIDMxMDE2LCAzMTAyMiwgMzEwMzAsIDMxMDM1LCAzMTA0MSwgCi0gICAgMzEwNDcsIDMxMDUzLCAzMTA1OCwgMzEwNjQsIDMxMDY5LCAzMTA3NiwgMzEwODIsIDMxMDg3LCAzMTA5MywgMzEwOTksIAotICAgIDMxMTA1LCAzMTExMiwgMzExMTksIDMxMTI2LCAzMTEzMSwgMzExMzYsIDMxMTQzLCAzMTE1MCwgMzExNTcsIDMxMTY0LCAKLSAgICAzMTE3MSwgMCwgMCwgMzExNzgsIDMxMTg1LCAzMTE5MiwgMzExOTgsIDMxMjA0LCAzMTIxMCwgMzEyMTYsIDMxMjIyLCAKLSAgICAzMTIyOCwgMzEyMzUsIDMxMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTI0OCwgMzEyNTQsIDMxMjU5LCAzMTI2NCwgMzEyNjksIAotICAgIDMxMjc0LCAzMTI3OSwgMzEyODQsIDMxMjkwLCAzMTI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEzMDEsIDMxMzA2LCAzMTMxMSwgCi0gICAgMzEzMTYsIDMxMzIxLCAzMTMyNiwgMzEzMzEsIDMxMzQwLCAzMTM0NywgMzEzNTIsIDMxMzU3LCAzMTM2MiwgMzEzNjcsIAotICAgIDMxMzcyLCAwLCAwLCAzMTM3NywgMzEzODQsIDMxMzg3LCAzMTM5MCwgMzEzOTMsIDMxMzk4LCAzMTQwMiwgMzE0MDgsIAotICAgIDMxNDEyLCAzMTQxNywgMzE0MjQsIDMxNDMyLCAzMTQzNiwgMzE0NDEsIDMxNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA4MCwgMzQwODgsIDM0MDk2LCAzNDEwNCwgCisgICAgMzQxMTIsIDM0MTIyLCAzNDEzMiwgMzQxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MTUyLCAzNDE1NywgMzQxNjIsIAorICAgIDM0MTY3LCAzNDE3MiwgMzQxODEsIDM0MTkyLCAzNDIwMSwgMzQyMTIsIDM0MjE4LCAzNDIzMSwgMzQyMzcsIDM0MjQ0LCAKKyAgICAzNDI1MSwgMzQyNTYsIDM0MjYyLCAzNDI2OCwgMzQyNzksIDM0Mjg4LCAzNDI5NSwgMzQzMDIsIDM0MzExLCAzNDMxOCwgCisgICAgMzQzMjcsIDM0MzM3LCAzNDM0NywgMzQzNTQsIDM0MzYxLCAzNDM2OCwgMzQzNzgsIDM0MzgzLCAzNDM5MSwgMzQzOTcsIAorICAgIDM0NDA1LCAzNDQxNCwgMzQ0MTksIDM0NDI2LCAzNDQzMiwgMzQ0MzcsIDAsIDM0NDQyLCAzNDQ0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzQ0NTUsIDM0NDYwLCAzNDQ2NiwgMzQ0NzMsIDM0NDgxLCAzNDQ4NywgMzQ0OTMsIDM0NDk5LCAzNDUwNCwgMzQ1MTEsIAorICAgIDM0NTE3LCAzNDUyMywgMzQ1MjksIDM0NTM3LCAzNDU0MywgMzQ1NTEsIDM0NTU2LCAzNDU2MiwgMzQ1NjgsIDM0NTc1LCAKKyAgICAzNDU4MywgMzQ1OTAsIDM0NTk2LCAzNDYwMywgMzQ2MTAsIDM0NjE2LCAzNDYyMywgMzQ2MzAsIDM0NjM2LCAzNDY0MSwgCisgICAgMzQ2NDcsIDM0NjU1LCAzNDY2NCwgMzQ2NzAsIDM0Njc2LCAzNDY4MiwgMzQ2ODgsIDM0Njk2LCAzNDcwMCwgMzQ3MDYsIAorICAgIDM0NzEyLCAzNDcxOCwgMzQ3MjQsIDM0NzMwLCAzNDczNiwgMzQ3NDAsIDM0NzQ1LCAzNDc1MCwgMzQ3NTcsIDM0NzYyLCAKKyAgICAzNDc2NiwgMzQ3NzIsIDM0Nzc3LCAzNDc4MiwgMzQ3ODYsIDM0NzkxLCAzNDc5NiwgMzQ4MDAsIDM0ODA1LCAzNDgxMCwgCisgICAgMzQ4MTcsIDM0ODIxLCAzNDgyNiwgMzQ4MzEsIDM0ODM1LCAzNDg0MCwgMzQ4NDQsIDM0ODQ5LCAzNDg1MywgMzQ4NTksIAorICAgIDM0ODY0LCAzNDg3MSwgMzQ4NzYsIDM0ODgxLCAzNDg4NSwgMzQ4OTAsIDM0ODk1LCAzNDkwMiwgMzQ5MDcsIDM0OTEzLCAKKyAgICAzNDkxOCwgMzQ5MjMsIDM0OTI4LCAzNDkzMiwgMzQ5MzcsIDM0OTQ0LCAzNDk1MSwgMzQ5NTYsIDM0OTYxLCAzNDk2NSwgCisgICAgMzQ5NzEsIDM0OTc4LCAzNDk4MywgMzQ5ODgsIDM0OTkzLCAzNDk5OSwgMzUwMDQsIDM1MDEwLCAzNTAxNSwgMzUwMjEsIAorICAgIDM1MDI3LCAzNTAzMywgMzUwNDAsIDM1MDQ3LCAzNTA1NCwgMzUwNjEsIDM1MDY4LCAzNTA3NSwgMzUwODAsIDM1MDg4LCAKKyAgICAzNTA5NywgMzUxMDYsIDM1MTE1LCAzNTEyNCwgMzUxMzMsIDM1MTQyLCAzNTE1NCwgMzUxNjMsIDM1MTcyLCAzNTE4MSwgCisgICAgMzUxODgsIDM1MTkzLCAzNTIwMCwgMzUyMDgsIDM1MjE2LCAzNTIyMywgMzUyMzAsIDM1MjM3LCAzNTI0NCwgMzUyNTIsIAorICAgIDM1MjYxLCAzNTI3MCwgMzUyNzksIDM1Mjg4LCAzNTI5NywgMzUzMDYsIDM1MzE1LCAzNTMyNCwgMzUzMzMsIDM1MzQyLCAKKyAgICAzNTM1MSwgMzUzNjAsIDM1MzY5LCAzNTM3OCwgMzUzODYsIDM1Mzk1LCAzNTQwNiwgMzU0MTQsIDM1NDIzLCAzNTQzNCwgCisgICAgMzU0NDMsIDM1NDUyLCAzNTQ2MSwgMzU0NzAsIDM1NDc4LCAzNTQ4NywgMzU0OTQsIDM1NDk5LCAzNTUwNywgMzU1MTIsIAorICAgIDM1NTE5LCAzNTUyNCwgMzU1MzMsIDM1NTM5LCAzNTU0NiwgMzU1NTMsIDM1NTU4LCAzNTU2MywgMzU1NzEsIDM1NTc5LCAKKyAgICAzNTU4OCwgMzU1OTcsIDM1NjAyLCAzNTYwOSwgMzU2MjAsIDM1NjI4LCAzNTYzNywgMzU2NDMsIDM1NjQ5LCAzNTY1NCwgCisgICAgMzU2NjEsIDM1NjY2LCAzNTY3NSwgMzU2ODAsIDM1Njg1LCAzNTY5MCwgMzU2OTcsIDM1NzA0LCAzNTcwOSwgMzU3MTgsIAorICAgIDM1NzI2LCAzNTczMSwgMzU3MzYsIDM1NzQzLCAzNTc1MCwgMzU3NTQsIDM1NzU4LCAzNTc2MSwgMzU3NjQsIDM1NzY3LCAKKyAgICAzNTc3MCwgMzU3NzMsIDM1Nzc2LCAzNTc4MywgMzU3ODYsIDM1Nzg5LCAzNTc5NCwgMzU3OTgsIDM1ODAyLCAzNTgwNiwgCisgICAgMzU4MTAsIDM1ODE0LCAzNTgyMywgMzU4MjksIDM1ODM1LCAzNTg0MSwgMzU4NDksIDM1ODU3LCAzNTg2MywgMzU4NjksIAorICAgIDM1ODc2LCAzNTg4MiwgMzU4ODcsIDM1ODkzLCAzNTkwMCwgMzU5MDYsIDM1OTEzLCAzNTkxOSwgMzU5MjcsIDM1OTMzLCAKKyAgICAzNTk0MCwgMzU5NDYsIDM1OTUyLCAzNTk1OCwgMzU5NjQsIDM1OTcwLCAzNTk3NiwgMzU5ODcsIDM1OTk3LCAzNjAwMywgCisgICAgMzYwMDksIDM2MDE5LCAzNjAyNSwgMzYwMzMsIDM2MDQxLCAzNjA0OSwgMCwgMCwgMCwgMCwgMCwgMzYwNTQsIDM2MDU4LCAKKyAgICAzNjA2NSwgMzYwNzIsIDM2MDc3LCAzNjA4NiwgMzYwOTQsIDM2MTAyLCAzNjEwOSwgMzYxMTYsIDM2MTIzLCAzNjEzMCwgCisgICAgMzYxMzgsIDM2MTQ2LCAzNjE1NiwgMzYxNjYsIDM2MTc0LCAzNjE4MiwgMzYxOTAsIDM2MTk4LCAzNjIwNywgMzYyMTYsIAorICAgIDM2MjI0LCAzNjIzMiwgMzYyNDEsIDM2MjUwLCAzNjI2MCwgMzYyNzAsIDM2Mjc5LCAzNjI4OCwgMzYyOTYsIDM2MzA0LCAKKyAgICAzNjMxMiwgMzYzMjAsIDM2MzMwLCAzNjM0MCwgMzYzNDgsIDM2MzU2LCAzNjM2NCwgMzYzNzIsIDM2MzgwLCAzNjM4OCwgCisgICAgMzYzOTYsIDM2NDA0LCAzNjQxMiwgMzY0MjAsIDM2NDI4LCAzNjQzNiwgMzY0NDUsIDM2NDU0LCAzNjQ2MywgMzY0NzIsIAorICAgIDM2NDgyLCAzNjQ5MiwgMzY0OTksIDM2NTA2LCAzNjUxNCwgMzY1MjIsIDM2NTMxLCAzNjU0MCwgMzY1NDgsIDM2NTU2LCAKKyAgICAzNjU2OCwgMzY1ODAsIDM2NTg5LCAzNjU5OCwgMzY2MDcsIDM2NjE2LCAzNjYyMywgMzY2MzAsIDM2NjM4LCAzNjY0NiwgCisgICAgMzY2NTQsIDM2NjYyLCAzNjY3MCwgMzY2NzgsIDM2Njg2LCAzNjY5NCwgMzY3MDMsIDM2NzEyLCAzNjcyMSwgMzY3MzAsIAorICAgIDM2NzM5LCAzNjc0OCwgMzY3NTgsIDM2NzY4LCAzNjc3OCwgMzY3ODgsIDM2Nzk3LCAzNjgwNiwgMzY4MTMsIDM2ODIwLCAKKyAgICAzNjgyOCwgMzY4MzYsIDM2ODQ0LCAzNjg1MiwgMzY4NjAsIDM2ODY4LCAzNjg4MCwgMzY4OTIsIDM2OTAxLCAzNjkxMCwgCisgICAgMzY5MTgsIDM2OTI2LCAzNjkzNCwgMzY5NDIsIDM2OTUzLCAzNjk2NCwgMzY5NzUsIDM2OTg2LCAzNjk5OCwgMzcwMTAsIAorICAgIDM3MDE4LCAzNzAyNiwgMzcwMzQsIDM3MDQyLCAzNzA1MSwgMzcwNjAsIDM3MDY5LCAzNzA3OCwgMzcwODYsIDM3MDk0LCAKKyAgICAzNzEwMiwgMzcxMTAsIDM3MTE4LCAzNzEyNiwgMzcxMzUsIDM3MTQ0LCAzNzE1NCwgMzcxNjQsIDM3MTcyLCAzNzE4MCwgCisgICAgMzcxODgsIDM3MTk2LCAzNzIwNCwgMzcyMTIsIDM3MjE5LCAzNzIyNiwgMzcyMzQsIDM3MjQyLCAzNzI1MCwgMzcyNTgsIAorICAgIDM3MjY2LCAzNzI3NCwgMzcyODIsIDM3MjkwLCAzNzI5OCwgMzczMDYsIDM3MzE0LCAzNzMyMiwgMzczMzAsIDM3MzM4LCAKKyAgICAzNzM0NiwgMzczNTQsIDM3MzYzLCAzNzM3MiwgMzczODEsIDM3Mzg5LCAzNzM5OCwgMzc0MDcsIDM3NDE2LCAzNzQyNSwgCisgICAgMzc0MzUsIDM3NDQ0LCAzNzQ1MSwgMzc0NTYsIDM3NDYzLCAzNzQ3MCwgMzc0NzgsIDM3NDg2LCAzNzQ5NSwgMzc1MDQsIAorICAgIDM3NTE0LCAzNzUyNCwgMzc1MzUsIDM3NTQ2LCAzNzU1NiwgMzc1NjYsIDM3NTc2LCAzNzU4NiwgMzc1OTUsIDM3NjA0LCAKKyAgICAzNzYxNCwgMzc2MjQsIDM3NjM1LCAzNzY0NiwgMzc2NTYsIDM3NjY2LCAzNzY3NiwgMzc2ODYsIDM3NjkzLCAzNzcwMCwgCisgICAgMzc3MDgsIDM3NzE2LCAzNzcyMywgMzc3MzAsIDM3NzM5LCAzNzc0OCwgMzc3NTgsIDM3NzY4LCAzNzc3OSwgMzc3OTAsIAorICAgIDM3ODAwLCAzNzgxMCwgMzc4MjAsIDM3ODMwLCAzNzgzOSwgMzc4NDgsIDM3ODU2LCAzNzg2NCwgMzc4NzEsIDM3ODc4LCAKKyAgICAzNzg4NiwgMzc4OTQsIDM3OTAzLCAzNzkxMiwgMzc5MjIsIDM3OTMyLCAzNzk0MywgMzc5NTQsIDM3OTY0LCAzNzk3NCwgCisgICAgMzc5ODQsIDM3OTk0LCAzODAwMywgMzgwMTIsIDM4MDIyLCAzODAzMiwgMzgwNDMsIDM4MDU0LCAzODA2NCwgMzgwNzQsIAorICAgIDM4MDg0LCAzODA5NCwgMzgxMDEsIDM4MTA4LCAzODExNiwgMzgxMjQsIDM4MTMzLCAzODE0MiwgMzgxNTIsIDM4MTYyLCAKKyAgICAzODE3MywgMzgxODQsIDM4MTk0LCAzODIwNCwgMzgyMTQsIDM4MjI0LCAzODIzMiwgMzgyNDAsIDM4MjQ4LCAzODI1NiwgCisgICAgMzgyNjUsIDM4Mjc0LCAzODI4MiwgMzgyOTAsIDM4Mjk3LCAzODMwNCwgMzgzMTEsIDM4MzE4LCAzODMyNiwgMzgzMzQsIAorICAgIDM4MzQyLCAzODM1MCwgMzgzNjEsIDM4MzcyLCAzODM4MywgMzgzOTQsIDM4NDA1LCAzODQxNiwgMzg0MjQsIDM4NDMyLCAKKyAgICAzODQ0MywgMzg0NTQsIDM4NDY1LCAzODQ3NiwgMzg0ODcsIDM4NDk4LCAzODUwNiwgMzg1MTQsIDM4NTI1LCAzODUzNiwgCisgICAgMzg1NDcsIDAsIDAsIDM4NTU4LCAzODU2NiwgMzg1NzQsIDM4NTg1LCAzODU5NiwgMzg2MDcsIDAsIDAsIDM4NjE4LCAKKyAgICAzODYyNiwgMzg2MzQsIDM4NjQ1LCAzODY1NiwgMzg2NjcsIDM4Njc4LCAzODY4OSwgMzg3MDAsIDM4NzA4LCAzODcxNiwgCisgICAgMzg3MjcsIDM4NzM4LCAzODc0OSwgMzg3NjAsIDM4NzcxLCAzODc4MiwgMzg3OTAsIDM4Nzk4LCAzODgwOSwgMzg4MjAsIAorICAgIDM4ODMxLCAzODg0MiwgMzg4NTMsIDM4ODY0LCAzODg3MiwgMzg4ODAsIDM4ODkxLCAzODkwMiwgMzg5MTMsIDM4OTI0LCAKKyAgICAzODkzNSwgMzg5NDYsIDM4OTU0LCAzODk2MiwgMzg5NzMsIDM4OTg0LCAzODk5NSwgMCwgMCwgMzkwMDYsIDM5MDE0LCAKKyAgICAzOTAyMiwgMzkwMzMsIDM5MDQ0LCAzOTA1NSwgMCwgMCwgMzkwNjYsIDM5MDc0LCAzOTA4MiwgMzkwOTMsIDM5MTA0LCAKKyAgICAzOTExNSwgMzkxMjYsIDM5MTM3LCAwLCAzOTE0OCwgMCwgMzkxNTYsIDAsIDM5MTY3LCAwLCAzOTE3OCwgMzkxODksIAorICAgIDM5MTk3LCAzOTIwNSwgMzkyMTYsIDM5MjI3LCAzOTIzOCwgMzkyNDksIDM5MjYwLCAzOTI3MSwgMzkyNzksIDM5Mjg3LCAKKyAgICAzOTI5OCwgMzkzMDksIDM5MzIwLCAzOTMzMSwgMzkzNDIsIDM5MzUzLCAzOTM2MSwgMzkzNjksIDM5Mzc3LCAzOTM4NSwgCisgICAgMzkzOTMsIDM5NDAxLCAzOTQwOSwgMzk0MTcsIDM5NDI1LCAzOTQzMywgMzk0NDEsIDM5NDQ5LCAzOTQ1NywgMCwgMCwgCisgICAgMzk0NjUsIDM5NDc2LCAzOTQ4NywgMzk1MDEsIDM5NTE1LCAzOTUyOSwgMzk1NDMsIDM5NTU3LCAzOTU3MSwgMzk1ODIsIAorICAgIDM5NTkzLCAzOTYwNywgMzk2MjEsIDM5NjM1LCAzOTY0OSwgMzk2NjMsIDM5Njc3LCAzOTY4OCwgMzk2OTksIDM5NzEzLCAKKyAgICAzOTcyNywgMzk3NDEsIDM5NzU1LCAzOTc2OSwgMzk3ODMsIDM5Nzk0LCAzOTgwNSwgMzk4MTksIDM5ODMzLCAzOTg0NywgCisgICAgMzk4NjEsIDM5ODc1LCAzOTg4OSwgMzk5MDAsIDM5OTExLCAzOTkyNSwgMzk5MzksIDM5OTUzLCAzOTk2NywgMzk5ODEsIAorICAgIDM5OTk1LCA0MDAwNiwgNDAwMTcsIDQwMDMxLCA0MDA0NSwgNDAwNTksIDQwMDczLCA0MDA4NywgNDAxMDEsIDQwMTA5LCAKKyAgICA0MDExNywgNDAxMjgsIDQwMTM2LCAwLCA0MDE0NywgNDAxNTUsIDQwMTY2LCA0MDE3NCwgNDAxODIsIDQwMTkwLCA0MDE5OCwgCisgICAgNDAyMDYsIDQwMjA5LCA0MDIxMiwgNDAyMTUsIDQwMjE4LCA0MDIyNCwgNDAyMzUsIDQwMjQzLCAwLCA0MDI1NCwgNDAyNjIsIAorICAgIDQwMjczLCA0MDI4MSwgNDAyODksIDQwMjk3LCA0MDMwNSwgNDAzMTMsIDQwMzE5LCA0MDMyNSwgNDAzMzEsIDQwMzM5LCAKKyAgICA0MDM0NywgNDAzNTgsIDAsIDAsIDQwMzY5LCA0MDM3NywgNDAzODgsIDQwMzk2LCA0MDQwNCwgNDA0MTIsIDAsIDQwNDIwLCAKKyAgICA0MDQyNiwgNDA0MzIsIDQwNDM4LCA0MDQ0NiwgNDA0NTQsIDQwNDY1LCA0MDQ3NiwgNDA0ODQsIDQwNDkyLCA0MDUwMCwgCisgICAgNDA1MTEsIDQwNTE5LCA0MDUyNywgNDA1MzUsIDQwNTQzLCA0MDU1MSwgNDA1NTcsIDQwNTYzLCAwLCAwLCA0MDU2NiwgCisgICAgNDA1NzcsIDQwNTg1LCAwLCA0MDU5NiwgNDA2MDQsIDQwNjE1LCA0MDYyMywgNDA2MzEsIDQwNjM5LCA0MDY0NywgNDA2NTUsIAorICAgIDQwNjU4LCAwLCA0MDY2MSwgNDA2NjUsIDQwNjY5LCA0MDY3MywgNDA2NzcsIDQwNjgxLCA0MDY4NSwgNDA2ODksIDQwNjkzLCAKKyAgICA0MDY5NywgNDA3MDEsIDQwNzA1LCA0MDcxMSwgNDA3MTcsIDQwNzIzLCA0MDcyNiwgNDA3MjksIDQwNzMxLCA0MDczNSwgCisgICAgNDA3MzksIDQwNzQzLCA0MDc0NywgNDA3NTAsIDQwNzU0LCA0MDc1OCwgNDA3NjQsIDQwNzcwLCA0MDc3NywgNDA3ODQsIAorICAgIDQwNzg5LCA0MDc5NCwgNDA4MDAsIDQwODA2LCA0MDgwOCwgNDA4MTEsIDQwODEzLCA0MDgxNywgNDA4MjEsIDQwODI1LCAKKyAgICA0MDgyOSwgNDA4MzMsIDQwODM3LCA0MDg0MSwgNDA4NDUsIDQwODQ5LCA0MDg1NSwgNDA4NTksIDQwODYzLCA0MDg2OSwgCisgICAgNDA4NzQsIDQwODgxLCA0MDg4MywgNDA4ODYsIDQwODkwLCA0MDg5NCwgNDA4OTksIDQwOTA1LCA0MDkwNywgNDA5MTYsIAorICAgIDQwOTI1LCA0MDkyOCwgNDA5MzIsIDQwOTM0LCA0MDkzNiwgNDA5MzgsIDQwOTQxLCA0MDk0NywgNDA5NDksIDQwOTUzLCAKKyAgICA0MDk1NywgNDA5NjQsIDQwOTcxLCA0MDk3NSwgNDA5ODAsIDQwOTg1LCA0MDk5MCwgNDA5OTUsIDQwOTk5LCA0MTAwMywgCisgICAgNDEwMDYsIDQxMDEwLCA0MTAxNCwgNDEwMjEsIDQxMDI2LCA0MTAzMCwgNDEwMzQsIDQxMDM5LCA0MTA0MywgNDEwNDcsIAorICAgIDQxMDUyLCA0MTA1NywgNDEwNjEsIDQxMDY1LCA0MTA2OSwgNDEwNzEsIDQxMDc2LCA0MTA4MSwgNDEwODUsIDQxMDg5LCAKKyAgICA0MTA5MywgNDEwOTcsIDAsIDQxMTAxLCA0MTEwNSwgNDExMDksIDQxMTE1LCA0MTEyMSwgNDExMjcsIDQxMTMzLCA0MTE0MCwgCisgICAgNDExNDcsIDQxMTUyLCA0MTE1NywgNDExNjEsIDAsIDAsIDQxMTY3LCA0MTE3MCwgNDExNzMsIDQxMTc2LCA0MTE4MCwgCisgICAgNDExODMsIDQxMTg3LCA0MTE5MSwgNDExOTUsIDQxMjAwLCA0MTIwNSwgNDEyMTAsIDQxMjE3LCA0MTIyMSwgNDEyMjQsIAorICAgIDQxMjI3LCA0MTIzMCwgNDEyMzMsIDQxMjM2LCA0MTIzOSwgNDEyNDMsIDQxMjQ2LCA0MTI1MCwgNDEyNTQsIDQxMjU4LCAKKyAgICA0MTI2MywgNDEyNjgsIDAsIDQxMjczLCA0MTI3OSwgNDEyODUsIDQxMjkxLCA0MTI5OCwgNDEzMDUsIDQxMzEyLCA0MTMxOSwgCisgICAgNDEzMjUsIDQxMzMyLCA0MTMzOSwgNDEzNDYsIDQxMzUzLCAwLCAwLCAwLCA0MTM2MCwgNDEzNjMsIDQxMzY2LCA0MTM2OSwgCisgICAgNDEzNzQsIDQxMzc3LCA0MTM4MCwgNDEzODMsIDQxMzg2LCA0MTM4OSwgNDEzOTIsIDQxMzk3LCA0MTQwMCwgNDE0MDMsIAorICAgIDQxNDA2LCA0MTQwOSwgNDE0MTIsIDQxNDE3LCA0MTQyMCwgNDE0MjMsIDQxNDI2LCA0MTQyOSwgNDE0MzIsIDQxNDM3LCAKKyAgICA0MTQ0MCwgNDE0NDMsIDQxNDQ4LCA0MTQ1MywgNDE0NTcsIDQxNDYwLCA0MTQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE0NjYsIDQxNDcxLCA0MTQ3NiwgNDE0ODMsIDQxNDkxLCA0MTQ5NiwgCisgICAgNDE1MDEsIDQxNTA1LCA0MTUwOSwgNDE1MTQsIDQxNTIxLCA0MTUyOCwgNDE1MzIsIDQxNTM3LCA0MTU0MiwgNDE1NDcsIAorICAgIDQxNTUyLCA0MTU1OSwgNDE1NjQsIDQxNTY5LCA0MTU3NCwgNDE1ODMsIDQxNTkwLCA0MTU5NywgNDE2MDEsIDQxNjA2LCAKKyAgICA0MTYxMiwgNDE2MTcsIDQxNjI0LCA0MTYzMiwgNDE2NDAsIDQxNjQ0LCA0MTY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2NTIsIDQxNjU2LCA0MTY2NCwgNDE2NjgsIDQxNjcyLCA0MTY3NywgNDE2ODEsIAorICAgIDQxNjg1LCA0MTY4OSwgNDE2OTEsIDQxNjk1LCA0MTY5OSwgNDE3MDMsIDQxNzA4LCA0MTcxMiwgNDE3MTYsIDQxNzI0LCAKKyAgICA0MTcyNywgNDE3MzEsIDQxNzM0LCA0MTczNywgNDE3NDMsIDQxNzQ3LCA0MTc1MCwgNDE3NTYsIDQxNzYwLCA0MTc2NCwgCisgICAgNDE3NjgsIDQxNzcxLCA0MTc3NSwgNDE3NzgsIDQxNzgyLCA0MTc4NCwgNDE3ODcsIDQxNzkwLCA0MTc5NCwgNDE3OTYsIAorICAgIDQxODAwLCA0MTgwMywgNDE4MDYsIDQxODExLCA0MTgxNiwgNDE4MjMsIDQxODI2LCA0MTgyOSwgNDE4MzMsIDQxODM4LCAKKyAgICA0MTg0MSwgNDE4NDQsIDQxODQ3LCA0MTg1MSwgNDE4NTYsIDQxODYwLCA0MTg2MywgNDE4NjUsIDQxODY4LCA0MTg3MSwgCisgICAgNDE4NzQsIDQxODc4LCA0MTg4MywgNDE4ODYsIDQxODkwLCA0MTg5NCwgNDE4OTgsIDQxOTAyLCA0MTkwNywgNDE5MTMsIAorICAgIDQxOTE4LCA0MTkyMywgNDE5MjksIDQxOTM0LCA0MTkzOSwgNDE5NDMsIDQxOTQ3LCA0MTk1MiwgNDE5NTYsIDQxOTYwLCAKKyAgICA0MTk2MywgNDE5NjUsIDQxOTcwLCA0MTk3NiwgNDE5ODMsIDQxOTkwLCA0MTk5NywgNDIwMDQsIDQyMDExLCA0MjAxOCwgCisgICAgNDIwMjUsIDQyMDMyLCA0MjA0MCwgNDIwNDcsIDQyMDU1LCA0MjA2MiwgNDIwNjksIDQyMDc3LCA0MjA4NSwgNDIwOTAsIAorICAgIDQyMDk1LCA0MjEwMCwgNDIxMDUsIDQyMTEwLCA0MjExNSwgNDIxMjAsIDQyMTI2LCA0MjEzMSwgNDIxMzcsIDQyMTQzLCAKKyAgICA0MjE0OSwgNDIxNTUsIDQyMTYxLCA0MjE2OCwgNDIxNzYsIDQyMTgzLCA0MjE4OSwgNDIxOTUsIDQyMjAxLCA0MjIwNywgCisgICAgNDIyMTMsIDQyMjE5LCA0MjIyNiwgNDIyMzIsIDQyMjM5LCA0MjI0NiwgNDIyNTMsIDQyMjYwLCA0MjI2NywgNDIyNzUsIAorICAgIDQyMjg0LCA0MjI5MiwgNDIzMDMsIDQyMzExLCA0MjMxOSwgNDIzMjgsIDQyMzM1LCA0MjM0NCwgNDIzNTMsIDQyMzYxLCAKKyAgICA0MjM3MCwgNDIzNzgsIDQyMzgyLCAwLCAwLCAwLCAwLCA0MjM4NiwgNDIzODgsIDQyMzkwLCA0MjM5MiwgNDIzOTQsIAorICAgIDQyMzk3LCA0MjQwMCwgNDI0MDQsIDQyNDA4LCA0MjQxMywgNDI0MTgsIDQyNDIyLCA0MjQyNiwgNDI0MzAsIDQyNDM0LCAKKyAgICA0MjQzOSwgNDI0NDQsIDQyNDQ5LCA0MjQ1NCwgNDI0NTksIDQyNDY0LCA0MjQ2OSwgNDI0NzQsIDQyNDc5LCA0MjQ4NCwgCisgICAgNDI0OTAsIDQyNDk0LCA0MjQ5OCwgNDI1MDMsIDQyNTA4LCA0MjUxMywgNDI1MTgsIDQyNTIyLCA0MjUyOSwgNDI1MzYsIAorICAgIDQyNTQzLCA0MjU1MCwgNDI1NTcsIDQyNTY0LCA0MjU3MSwgNDI1NzgsIDQyNTg2LCA0MjU5OCwgNDI2MDQsIDQyNjEwLCAKKyAgICA0MjYxNywgNDI2MjQsIDQyNjMxLCA0MjYzOCwgNDI2NDUsIDQyNjUyLCA0MjY1OSwgNDI2NjYsIDQyNjcxLCA0MjY3NywgCisgICAgNDI2ODIsIDQyNjg3LCA0MjY5MiwgNDI2OTcsIDQyNzAyLCA0MjcwOSwgNDI3MTYsIDQyNzIxLCA0MjcyNywgNDI3MzIsIAorICAgIDQyNzM1LCA0MjczOCwgNDI3NDEsIDQyNzQ0LCA0Mjc0OCwgNDI3NTIsIDQyNzU3LCA0Mjc2MiwgNDI3NjgsIDQyNzc0LCAKKyAgICA0Mjc3OCwgNDI3ODIsIDQyNzg2LCA0Mjc5MCwgNDI3OTUsIDQyODAwLCA0MjgwNCwgNDI4MDgsIDQyODEyLCA0MjgxNiwgCisgICAgNDI4MjEsIDQyODI2LCA0MjgyOSwgNDI4MzIsIDQyODM1LCA0MjgzOCwgNDI4NDQsIDQyODUxLCA0Mjg2MiwgNDI4NzIsIAorICAgIDQyODc2LCA0Mjg4NCwgNDI4OTEsIDQyODk5LCA0MjkwOCwgNDI5MTIsIDQyOTE4LCA0MjkyNCwgNDI5MjgsIDQyOTMzLCAKKyAgICA0MjkzOCwgNDI5NDQsIDQyOTUwLCA0Mjk1NiwgNDI5NjMsIDQyOTY3LCA0Mjk3MSwgNDI5NzYsIDQyOTc5LCA0Mjk4MSwgCisgICAgNDI5ODUsIDQyOTg5LCA0Mjk5NywgNDMwMDEsIDQzMDAzLCA0MzAwNSwgNDMwMDksIDQzMDE3LCA0MzAyMiwgNDMwMjgsIAorICAgIDQzMDM4LCA0MzA0NSwgNDMwNTAsIDQzMDU0LCA0MzA1OCwgNDMwNjIsIDQzMDY1LCA0MzA2OCwgNDMwNzEsIDQzMDc1LCAKKyAgICA0MzA3OSwgNDMwODMsIDQzMDg3LCA0MzA5MSwgNDMwOTQsIDQzMDk4LCA0MzEwMiwgNDMxMDUsIDQzMTA3LCA0MzExMCwgCisgICAgNDMxMTIsIDQzMTE2LCA0MzEyMCwgNDMxMjIsIDQzMTI4LCA0MzEzMSwgNDMxMzYsIDQzMTQwLCA0MzE0NCwgNDMxNDYsIAorICAgIDQzMTQ4LCA0MzE1MCwgNDMxNTMsIDQzMTU3LCA0MzE2MSwgNDMxNjUsIDQzMTY5LCA0MzE3MywgNDMxNzksIDQzMTg1LCAKKyAgICA0MzE4NywgNDMxODksIDQzMTkxLCA0MzE5MywgNDMxOTYsIDQzMTk4LCA0MzIwMiwgNDMyMDQsIDQzMjA4LCA0MzIxMiwgCisgICAgNDMyMTgsIDQzMjIyLCA0MzIyNiwgNDMyMzAsIDQzMjM0LCA0MzIzOCwgNDMyNDQsIDQzMjQ4LCA0MzI1OCwgNDMyNjgsIAorICAgIDQzMjcyLCA0MzI3OCwgNDMyODUsIDQzMjg5LCA0MzI5MywgNDMyOTYsIDQzMzAxLCA0MzMwNSwgNDMzMTEsIDQzMzE1LCAKKyAgICA0MzMyOCwgNDMzMzcsIDQzMzQxLCA0MzM0NSwgNDMzNTEsIDQzMzU1LCA0MzM1OCwgNDMzNjAsIDQzMzYzLCA0MzM2NywgCisgICAgNDMzNzEsIDQzMzc4LCA0MzM4MiwgNDMzODYsIDQzMzkwLCA0MzM5MywgNDMzOTgsIDQzNDAzLCA0MzQwOSwgNDM0MTUsIAorICAgIDQzNDIwLCA0MzQyNSwgNDM0MzMsIDQzNDQxLCA0MzQ0NSwgNDM0NDksIDQzNDUxLCA0MzQ1NiwgNDM0NjAsIDQzNDY0LCAKKyAgICA0MzQ3MiwgNDM0ODAsIDQzNDg3LCA0MzQ5NCwgNDM1MDMsIDQzNTEyLCA0MzUxOCwgNDM1MjQsIDQzNTMyLCA0MzU0MCwgCisgICAgNDM1NDIsIDQzNTQ0LCA0MzU1MCwgNDM1NTYsIDQzNTYzLCA0MzU3MCwgNDM1NzYsIDQzNTgyLCA0MzU4NiwgNDM1OTAsIAorICAgIDQzNTk3LCA0MzYwNCwgNDM2MTEsIDQzNjE4LCA0MzYyOCwgNDM2MzgsIDQzNjQ2LCA0MzY1NCwgNDM2NTYsIDQzNjYwLCAKKyAgICA0MzY2NCwgNDM2NjksIDQzNjc0LCA0MzY4MiwgNDM2OTAsIDQzNjkzLCA0MzY5NiwgNDM2OTksIDQzNzAyLCA0MzcwNSwgCisgICAgNDM3MTAsIDQzNzE0LCA0MzcxOSwgNDM3MjQsIDQzNzI3LCA0MzczMCwgNDM3MzMsIDQzNzM2LCA0MzczOSwgNDM3NDMsIAorICAgIDQzNzQ2LCA0Mzc0OSwgNDM3NTIsIDQzNzU1LCA0Mzc1NywgNDM3NTksIDQzNzYxLCA0Mzc2MywgNDM3NzEsIDQzNzc5LCAKKyAgICA0Mzc4NSwgNDM3ODksIDQzNzk1LCA0MzgwNSwgNDM4MTEsIDQzODE3LCA0MzgyMywgNDM4MzEsIDQzODQwLCA0Mzg1MiwgCisgICAgNDM4NTYsIDQzODYwLCA0Mzg2MiwgNDM4NjgsIDQzODcwLCA0Mzg3MiwgNDM4NzQsIDQzODc2LCA0Mzg4MiwgNDM4ODUsIAorICAgIDQzODkxLCA0Mzg5NywgNDM5MDEsIDQzOTA1LCA0MzkwOSwgNDM5MTIsIDQzOTE2LCA0MzkyMCwgNDM5MjIsIDQzOTMxLCAKKyAgICA0Mzk0MCwgNDM5NDUsIDQzOTUwLCA0Mzk1NiwgNDM5NjIsIDQzOTY4LCA0Mzk3MSwgNDM5NzQsIDQzOTc3LCA0Mzk4MCwgCisgICAgNDM5ODIsIDQzOTg3LCA0Mzk5MiwgNDM5OTcsIDQ0MDAzLCA0NDAwOSwgNDQwMTgsIDQ0MDI3LCA0NDAzNCwgNDQwNDEsIAorICAgIDQ0MDQ4LCA0NDA1NSwgNDQwNjUsIDQ0MDc1LCA0NDA4NSwgNDQwOTUsIDQ0MTA1LCA0NDExNSwgNDQxMjQsIDQ0MTMzLCAKKyAgICA0NDE0MiwgNDQxNTEsIDQ0MTU5LCA0NDE3MSwgNDQxODIsIDQ0MTk4LCA0NDIwMSwgNDQyMDcsIDQ0MjEzLCA0NDIxOSwgCisgICAgNDQyMjcsIDQ0MjQyLCA0NDI1OCwgNDQyNjQsIDQ0MjcwLCA0NDI3NywgNDQyODMsIDQ0MjkyLCA0NDI5OSwgNDQzMTMsIAorICAgIDQ0MzI4LCA0NDMzMywgNDQzMzksIDQ0MzQ3LCA0NDM1MCwgNDQzNTMsIDQ0MzU1LCA0NDM1OCwgNDQzNjEsIDQ0MzYzLCAKKyAgICA0NDM2NSwgNDQzNjksIDQ0MzcyLCA0NDM3NSwgNDQzNzgsIDQ0MzgxLCA0NDM4NiwgNDQzOTEsIDQ0Mzk2LCA0NDQwMSwgCisgICAgNDQ0MDYsIDQ0NDA5LCA0NDQxMSwgNDQ0MTMsIDQ0NDE1LCA0NDQxOSwgNDQ0MjMsIDQ0NDI3LCA0NDQzMywgNDQ0MzgsIAorICAgIDQ0NDQwLCA0NDQ0MiwgNDQ0NDcsIDQ0NDUyLCA0NDQ1NywgNDQ0NjIsIDQ0NDY3LCA0NDQ3MiwgNDQ0NzQsIDQ0NDc2LCAKKyAgICA0NDQ4NiwgNDQ0OTAsIDQ0NDk4LCA0NDUwNywgNDQ1MDksIDQ0NTE0LCA0NDUxOSwgNDQ1MjcsIDQ0NTMxLCA0NDUzMywgCisgICAgNDQ1MzcsIDQ0NTM5LCA0NDU0MywgNDQ1NDcsIDQ0NTUxLCA0NDU1MywgNDQ1NTUsIDQ0NTU3LCA0NDU2NCwgNDQ1NzMsIAorICAgIDQ0NTgyLCA0NDU5MSwgNDQ2MDAsIDQ0NjA5LCA0NDYxOCwgNDQ2MjcsIDQ0NjM2LCA0NDY0NCwgNDQ2NTIsIDQ0NjYxLCAKKyAgICA0NDY3MCwgNDQ2NzksIDQ0Njg4LCA0NDY5NiwgNDQ3MDQsIDQ0NzEzLCA0NDcyMiwgNDQ3MzEsIDQ0NzQxLCA0NDc1MCwgCisgICAgNDQ3NjAsIDQ0NzY5LCA0NDc3OSwgNDQ3ODcsIDQ0Nzk2LCA0NDgwNiwgNDQ4MTUsIDQ0ODI1LCA0NDgzNCwgNDQ4NDQsIAorICAgIDQ0ODUyLCA0NDg2MSwgNDQ4NzAsIDQ0ODc5LCA0NDg4OCwgNDQ4OTcsIDQ0OTA2LCA0NDkxNiwgNDQ5MjUsIDQ0OTM0LCAKKyAgICA0NDk0MywgNDQ5NTMsIDQ0OTYyLCA0NDk3MSwgNDQ5ODAsIDQ0OTg5LCA0NDk5OSwgNDUwMDksIDQ1MDE4LCA0NTAyNywgCisgICAgNDUwMzUsIDQ1MDQ0LCA0NTA1MSwgNDUwNjAsIDQ1MDY5LCA0NTA4MCwgNDUwODksIDQ1MDk5LCA0NTEwOSwgNDUxMTYsIAorICAgIDQ1MTIzLCA0NTEzMCwgNDUxMzksIDQ1MTQ4LCA0NTE1NywgNDUxNjYsIDQ1MTczLCA0NTE3OCwgNDUxODYsIDQ1MTkxLCAKKyAgICA0NTE5NCwgNDUyMDEsIDQ1MjA0LCA0NTIwOSwgNDUyMTQsIDQ1MjE3LCA0NTIyMCwgNDUyMjgsIDQ1MjMxLCA0NTIzNiwgCisgICAgNDUyMzksIDQ1MjQ3LCA0NTI1MiwgNDUyNjAsIDQ1MjYzLCA0NTI2NiwgNDUyNjksIDQ1Mjc0LCA0NTI3OSwgNDUyODIsIAorICAgIDQ1Mjg1LCA0NTI5MywgNDUyOTYsIDQ1MzAzLCA0NTMxMCwgNDUzMTQsIDQ1MzE4LCA0NTMyMywgNDUzMjgsIDQ1MzM0LCAKKyAgICA0NTMzOSwgNDUzNDUsIDQ1MzUxLCA0NTM1NiwgNDUzNjIsIDQ1MzcwLCA0NTM3NiwgNDUzODQsIDQ1MzkyLCA0NTM5OCwgCisgICAgNDU0MDYsIDQ1NDE0LCA0NTQyMiwgNDU0MzAsIDQ1NDM2LCA0NTQ0NCwgNDU0NTIsIDQ1NDYwLCA0NTQ2NCwgNDU0NzAsIAorICAgIDQ1NDg0LCA0NTQ5OCwgNDU1MDIsIDQ1NTA2LCA0NTUxMCwgNDU1MTQsIDQ1NTI0LCA0NTUyOCwgNDU1MzMsIDQ1NTM4LCAKKyAgICA0NTU0NCwgNDU1NTAsIDQ1NTU2LCA0NTU2MiwgNDU1NzIsIDQ1NTgyLCA0NTU5MCwgNDU2MDEsIDQ1NjEyLCA0NTYyMCwgCisgICAgNDU2MzEsIDQ1NjQyLCA0NTY1MCwgNDU2NjEsIDQ1NjcyLCA0NTY4MCwgNDU2ODgsIDQ1Njk4LCA0NTcwOCwgNDU3MTEsIAorICAgIDQ1NzE0LCA0NTcxNywgNDU3MjIsIDQ1NzI2LCA0NTczMiwgNDU3MzksIDQ1NzQ2LCA0NTc1NCwgNDU3NjEsIDQ1NzY1LCAKKyAgICA0NTc2OSwgNDU3NzMsIDQ1Nzc3LCA0NTc3OSwgNDU3ODMsIDQ1Nzg3LCA0NTc5MiwgNDU3OTcsIDQ1ODA0LCA0NTgxMSwgCisgICAgNDU4MTQsIDQ1ODIxLCA0NTgyMywgNDU4MjUsIDQ1ODI5LCA0NTgzMywgNDU4MzgsIDQ1ODQ0LCA0NTg1MCwgNDU4NTYsIAorICAgIDQ1ODYyLCA0NTg3MSwgNDU4ODAsIDQ1ODg5LCA0NTg5MywgNDU4OTUsIDQ1ODk5LCA0NTkwNiwgNDU5MTMsIDQ1OTIwLCAKKyAgICA0NTkyNywgNDU5MzQsIDQ1OTM3LCA0NTk0MiwgNDU5NDgsIDQ1OTUxLCA0NTk1NiwgNDU5NjEsIDAsIDQ1OTY2LCA0NTk3MCwgCisgICAgNDU5NzcsIDQ1OTg0LCA0NTk5MSwgNDU5OTgsIDQ2MDAyLCA0NjAwNiwgNDYwMTAsIDQ2MDE0LCA0NjAyMCwgNDYwMjYsIAorICAgIDQ2MDMxLCA0NjAzNywgNDYwNDMsIDQ2MDQ5LCA0NjA1NSwgNDYwNjMsIDQ2MDcwLCA0NjA3NywgNDYwODQsIDQ2MDkxLCAKKyAgICA0NjA5NiwgNDYxMDIsIDQ2MTExLCA0NjExNSwgNDYxMjIsIDQ2MTI2LCA0NjEzMCwgNDYxMzYsIDQ2MTQyLCA0NjE0OCwgCisgICAgNDYxNTQsIDQ2MTU4LCA0NjE2MiwgNDYxNjUsIDQ2MTY4LCA0NjE3MiwgNDYxNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MTg2LCA0NjE4OSwgNDYxOTMsIAorICAgIDQ2MTk3LCA0NjIwMywgNDYyMDksIDQ2MjE1LCA0NjIyMywgNDYyMzAsIDQ2MjM0LCA0NjI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYyNDcsIDQ2MjUwLCA0NjI1MywgNDYyNTYsIAorICAgIDQ2MjU5LCA0NjI2MiwgNDYyNjUsIDQ2MjY5LCA0NjI3MiwgNDYyNzYsIDQ2MjgwLCA0NjI4NCwgNDYyODgsIDQ2MjkyLCAKKyAgICA0NjI5NiwgNDYzMDAsIDQ2MzA0LCA0NjMwOCwgNDYzMTIsIDQ2MzE2LCA0NjMyMCwgNDYzMjMsIDQ2MzI2LCA0NjMyOSwgCisgICAgNDYzMzIsIDQ2MzM1LCA0NjMzOCwgNDYzNDIsIDQ2MzQ1LCA0NjM0OSwgNDYzNTMsIDQ2MzU3LCA0NjM2MSwgNDYzNjUsIAorICAgIDQ2MzY5LCA0NjM3MywgNDYzNzcsIDQ2MzgxLCA0NjM4NSwgNDYzODksIDQ2MzkzLCA0NjM5OSwgNDY0MDUsIDQ2NDExLCAKKyAgICA0NjQxOCwgNDY0MjUsIDQ2NDMyLCA0NjQzOSwgNDY0NDYsIDQ2NDUzLCA0NjQ2MCwgNDY0NjcsIDQ2NDc0LCA0NjQ4MSwgCisgICAgNDY0ODgsIDQ2NDk1LCA0NjUwMiwgNDY1MDksIDQ2NTE2LCA0NjUyMywgNDY1MzAsIDQ2NTM1LCA0NjU0MSwgNDY1NDcsIAorICAgIDQ2NTUzLCA0NjU1OCwgNDY1NjQsIDQ2NTcwLCA0NjU3NiwgNDY1ODEsIDQ2NTg3LCA0NjU5MywgNDY1OTgsIDQ2NjA0LCAKKyAgICA0NjYxMCwgNDY2MTUsIDQ2NjIxLCA0NjYyNywgNDY2MzIsIDQ2NjM4LCA0NjY0NCwgNDY2NDksIDQ2NjU1LCA0NjY2MSwgCisgICAgNDY2NjcsIDQ2NjczLCA0NjY3OSwgNDY2ODQsIDQ2NjkwLCA0NjY5NiwgNDY3MDIsIDQ2NzA3LCA0NjcxMywgNDY3MTksIAorICAgIDQ2NzI1LCA0NjczMCwgNDY3MzYsIDQ2NzQyLCA0Njc0NywgNDY3NTMsIDQ2NzU5LCA0Njc2NCwgNDY3NzAsIDQ2Nzc2LCAKKyAgICA0Njc4MSwgNDY3ODcsIDQ2NzkzLCA0Njc5OCwgNDY4MDQsIDQ2ODEwLCA0NjgxNiwgNDY4MjIsIDQ2ODI4LCA0NjgzMywgCisgICAgNDY4MzksIDQ2ODQ1LCA0Njg1MSwgNDY4NTYsIDQ2ODYyLCA0Njg2OCwgNDY4NzQsIDQ2ODc5LCA0Njg4NSwgNDY4OTEsIAorICAgIDQ2ODk2LCA0NjkwMiwgNDY5MDgsIDQ2OTEzLCA0NjkxOSwgNDY5MjUsIDQ2OTMwLCA0NjkzNiwgNDY5NDIsIDQ2OTQ3LCAKKyAgICA0Njk1MywgNDY5NTksIDQ2OTY1LCA0Njk3MSwgNDY5NzcsIDQ2OTgxLCA0Njk4NiwgNDY5OTEsIDQ2OTk2LCA0NzAwMSwgCisgICAgNDcwMDYsIDQ3MDExLCA0NzAxNiwgNDcwMjEsIDQ3MDI2LCA0NzAzMSwgNDcwMzUsIDQ3MDM5LCA0NzA0MywgNDcwNDcsIAorICAgIDQ3MDUxLCA0NzA1NSwgNDcwNjAsIDQ3MDY0LCA0NzA2OSwgNDcwNzQsIDQ3MDc5LCA0NzA4NCwgNDcwODksIDQ3MDk0LCAKKyAgICA0NzA5OSwgNDcxMDgsIDQ3MTE3LCA0NzEyNiwgNDcxMzUsIDQ3MTQ0LCA0NzE1MywgNDcxNjIsIDQ3MTcxLCA0NzE3OCwgCisgICAgNDcxODYsIDQ3MTk0LCA0NzIwMSwgNDcyMDgsIDQ3MjE2LCA0NzIyNCwgNDcyMzEsIDQ3MjM4LCA0NzI0NiwgNDcyNTQsIAorICAgIDQ3MjYxLCA0NzI2OCwgNDcyNzYsIDQ3Mjg0LCA0NzI5MSwgNDcyOTgsIDQ3MzA2LCA0NzMxNSwgNDczMjQsIDQ3MzMyLCAKKyAgICA0NzM0MSwgNDczNTAsIDQ3MzU3LCA0NzM2NCwgNDczNzIsIDQ3MzgxLCA0NzM5MCwgNDczOTgsIDQ3NDA3LCA0NzQxNiwgCisgICAgNDc0MjMsIDQ3NDMwLCA0NzQzOSwgNDc0NDgsIDQ3NDU3LCA0NzQ2NiwgNDc0NzUsIDQ3NDg0LCA0NzQ5MSwgNDc0OTgsIAorICAgIDQ3NTA3LCA0NzUxNiwgNDc1MjUsIDQ3NTM0LCA0NzU0MywgNDc1NTIsIDQ3NTU5LCA0NzU2NiwgNDc1NzUsIDQ3NTg0LCAKKyAgICA0NzU5MywgNDc2MDMsIDQ3NjEzLCA0NzYyMiwgNDc2MzIsIDQ3NjQyLCA0NzY1MiwgNDc2NjIsIDQ3NjcyLCA0NzY4MiwgCisgICAgNDc2OTEsIDQ3NzAwLCA0NzcwNywgNDc3MTUsIDQ3NzIzLCA0NzczMSwgNDc3MzksIDQ3NzQ0LCA0Nzc0OSwgNDc3NTgsIAorICAgIDQ3NzY2LCA0Nzc3MywgNDc3ODIsIDQ3NzkwLCA0Nzc5NywgNDc4MDYsIDQ3ODE0LCA0NzgyMSwgNDc4MzAsIDQ3ODM4LCAKKyAgICA0Nzg0NSwgNDc4NTQsIDQ3ODYyLCA0Nzg2OSwgNDc4NzgsIDQ3ODg2LCA0Nzg5MywgNDc5MDMsIDQ3OTEyLCA0NzkxOSwgCisgICAgNDc5MjksIDQ3OTM4LCA0Nzk0NSwgNDc5NTUsIDQ3OTY0LCA0Nzk3MSwgNDc5ODAsIDQ3OTg5LCA0Nzk5OCwgNDgwMDcsIAorICAgIDQ4MDIxLCA0ODAzNSwgNDgwNDIsIDQ4MDQ3LCA0ODA1MiwgNDgwNTcsIDQ4MDYyLCA0ODA2NywgNDgwNzIsIDQ4MDc3LCAKKyAgICA0ODA4MiwgNDgwOTAsIDQ4MDk4LCA0ODEwNiwgNDgxMTQsIDQ4MTE5LCA0ODEyNiwgNDgxMzMsIDQ4MTQwLCA0ODE0NSwgCisgICAgNDgxNTMsIDQ4MTYwLCA0ODE2OCwgNDgxNzIsIDQ4MTc5LCA0ODE4NSwgNDgxOTIsIDQ4MTk2LCA0ODIwMiwgNDgyMDgsIAorICAgIDQ4MjE0LCA0ODIxOCwgNDgyMjEsIDQ4MjI1LCA0ODIyOSwgNDgyMzYsIDQ4MjQyLCA0ODI0OCwgNDgyNTQsIDQ4MjYwLCAKKyAgICA0ODI3NCwgNDgyODQsIDQ4Mjk4LCA0ODMxMiwgNDgzMTgsIDQ4MzI4LCA0ODM0MiwgNDgzNDUsIDQ4MzQ4LCA0ODM1NSwgCisgICAgNDgzNjMsIDQ4MzY5LCA0ODM3NCwgNDgzODIsIDQ4Mzk0LCA0ODQwNiwgNDg0MTQsIDQ4NDE4LCA0ODQyMiwgNDg0MjUsIAorICAgIDQ4NDI4LCA0ODQzMiwgNDg0MzYsIDQ4NDM5LCA0ODQ0MiwgNDg0NDcsIDQ4NDUyLCA0ODQ1OCwgNDg0NjQsIDQ4NDY5LCAKKyAgICA0ODQ3NCwgNDg0ODAsIDQ4NDg2LCA0ODQ5MSwgNDg0OTYsIDQ4NTAxLCA0ODUwNiwgNDg1MTIsIDQ4NTE4LCA0ODUyMywgCisgICAgNDg1MjgsIDQ4NTM0LCA0ODU0MCwgNDg1NDUsIDQ4NTUwLCA0ODU1MywgNDg1NTYsIDQ4NTY1LCA0ODU2NywgNDg1NjksIAorICAgIDQ4NTcyLCA0ODU3NiwgNDg1ODIsIDQ4NTg0LCA0ODU4NywgNDg1OTQsIDQ4NjAxLCA0ODYwOSwgNDg2MTcsIDQ4NjI3LCAKKyAgICA0ODY0MSwgNDg2NDYsIDQ4NjUxLCA0ODY1NSwgNDg2NjAsIDQ4NjY4LCA0ODY3NiwgNDg2ODUsIDQ4Njk0LCA0ODcwMywgCisgICAgNDg3MTIsIDQ4NzE3LCA0ODcyMiwgNDg3MjgsIDQ4NzM0LCA0ODc0MCwgNDg3NDYsIDQ4NzQ5LCA0ODc1NSwgNDg3NjEsIAorICAgIDQ4NzcxLCA0ODc4MSwgNDg3ODksIDQ4Nzk3LCA0ODgwNiwgNDg4MTUsIDQ4ODE5LCA0ODgyNywgNDg4MzUsIDQ4ODQzLCAKKyAgICA0ODg1MSwgNDg4NjAsIDQ4ODY5LCA0ODg3OCwgNDg4ODcsIDQ4ODkyLCA0ODg5NywgNDg5MDIsIDQ4OTA3LCA0ODkxMiwgCisgICAgNDg5MTgsIDQ4OTI0LCA0ODkyOSwgNDg5MzUsIDQ4OTM3LCA0ODkzOSwgNDg5NDEsIDQ4OTQzLCA0ODk0NiwgNDg5NDksIAorICAgIDQ4OTUxLCA0ODk1MywgNDg5NTUsIDQ4OTU5LCA0ODk2MywgNDg5NjUsIDQ4OTY3LCA0ODk3MCwgNDg5NzMsIDQ4OTc3LCAKKyAgICA0ODk4MywgNDg5ODksIDQ4OTkxLCA0ODk5OCwgNDkwMDIsIDQ5MDA3LCA0OTAxMiwgNDkwMTQsIDQ5MDI0LCA0OTAzMCwgCisgICAgNDkwMzYsIDQ5MDQyLCA0OTA0OCwgNDkwNTQsIDQ5MDYwLCA0OTA2NSwgNDkwNjgsIDQ5MDcxLCA0OTA3NCwgNDkwNzYsIAorICAgIDQ5MDc4LCA0OTA4MiwgNDkwODYsIDQ5MDkxLCA0OTA5NiwgNDkxMDEsIDQ5MTA0LCA0OTEwOCwgNDkxMTMsIDQ5MTE2LCAKKyAgICA0OTEyMCwgNDkxMjUsIDQ5MTMwLCA0OTEzNSwgNDkxNDAsIDQ5MTQ1LCA0OTE1MCwgNDkxNTUsIDQ5MTYwLCA0OTE2NSwgCisgICAgNDkxNzAsIDQ5MTc1LCA0OTE4MCwgNDkxODYsIDQ5MTkyLCA0OTE5OCwgNDkyMDAsIDQ5MjAzLCA0OTIwNSwgNDkyMDgsIAorICAgIDQ5MjEwLCA0OTIxMiwgNDkyMTQsIDQ5MjE2LCA0OTIxOCwgNDkyMjAsIDQ5MjIyLCA0OTIyNCwgNDkyMjYsIDQ5MjI4LCAKKyAgICA0OTIzMCwgNDkyMzIsIDQ5MjM0LCA0OTIzNiwgNDkyMzgsIDQ5MjQwLCA0OTI0MiwgNDkyNDcsIDQ5MjUyLCA0OTI1NywgCisgICAgNDkyNjIsIDQ5MjY3LCA0OTI3MiwgNDkyNzcsIDQ5MjgyLCA0OTI4NywgNDkyOTIsIDQ5Mjk3LCA0OTMwMiwgNDkzMDcsIAorICAgIDQ5MzEyLCA0OTMxNywgNDkzMjIsIDQ5MzI3LCA0OTMzMiwgNDkzMzcsIDQ5MzQyLCA0OTM0NiwgNDkzNTAsIDQ5MzU0LCAKKyAgICA0OTM2MCwgNDkzNjYsIDQ5MzcxLCA0OTM3NiwgNDkzODEsIDQ5Mzg3LCA0OTM5MywgNDkzOTgsIDQ5NDA2LCA0OTQxNCwgCisgICAgNDk0MjIsIDQ5NDMwLCA0OTQzOCwgNDk0NDYsIDQ5NDU0LCA0OTQ2MiwgNDk0NjgsIDQ5NDczLCA0OTQ3OCwgNDk0ODMsIAorICAgIDQ5NDg2LCA0OTQ5MCwgNDk0OTQsIDQ5NDk4LCA0OTUwMiwgNDk1MDYsIDQ5NTEwLCA0OTUxNywgNDk1MjQsIDQ5NTMyLCAKKyAgICA0OTU0MCwgNDk1NDUsIDQ5NTUwLCA0OTU1NywgNDk1NjQsIDQ5NTcxLCA0OTU3OCwgNDk1ODEsIDQ5NTg0LCA0OTU4OSwgCisgICAgNDk1OTEsIDQ5NTk1LCA0OTYwMCwgNDk2MDIsIDQ5NjA0LCA0OTYwNiwgNDk2MDgsIDQ5NjEzLCA0OTYxNiwgNDk2MTgsIAorICAgIDQ5NjIzLCA0OTYzMCwgNDk2MzcsIDQ5NjQwLCA0OTY0NCwgNDk2NDksIDQ5NjU0LCA0OTY2MiwgNDk2NjgsIDQ5Njc0LCAKKyAgICA0OTY4NiwgNDk2OTMsIDQ5NzAxLCA0OTcwNiwgNDk3MTEsIDQ5NzE3LCA0OTcyMCwgNDk3MjMsIDQ5NzI4LCA0OTczMCwgCisgICAgNDk3MzQsIDQ5NzM2LCA0OTczOCwgNDk3NDAsIDQ5NzQyLCA0OTc0NCwgNDk3NDYsIDQ5NzUxLCA0OTc1MywgNDk3NTUsIAorICAgIDQ5NzU3LCA0OTc1OSwgNDk3NjMsIDQ5NzY1LCA0OTc2OCwgNDk3NzMsIDQ5Nzc4LCA0OTc4MywgNDk3ODgsIDQ5Nzk0LCAKKyAgICA0OTgwMCwgNDk4MDIsIDQ5ODA1LCA0OTgxMiwgNDk4MTksIDQ5ODI2LCA0OTgzMywgNDk4MzcsIDQ5ODQxLCA0OTg0MywgCisgICAgNDk4NDUsIDQ5ODQ5LCA0OTg1NSwgNDk4NjAsIDQ5ODYyLCA0OTg2NiwgNDk4NzUsIDQ5ODgzLCA0OTg5MSwgNDk4OTcsIAorICAgIDQ5OTAzLCA0OTkwOCwgNDk5MTQsIDQ5OTE5LCA0OTkyMiwgNDk5MzYsIDQ5OTM5LCA0OTk0NCwgNDk5NDksIDQ5OTU1LCAKKyAgICA0OTk2NSwgNDk5NjcsIDQ5OTczLCA0OTk3OSwgNDk5ODMsIDQ5OTkwLCA0OTk5NCwgNDk5OTYsIDQ5OTk4LCA1MDAwMiwgCisgICAgNTAwMDgsIDUwMDEzLCA1MDAxOSwgNTAwMjEsIDUwMDI3LCA1MDAyOSwgNTAwMzUsIDUwMDM3LCA1MDAzOSwgNTAwNDQsIAorICAgIDUwMDQ2LCA1MDA1MCwgNTAwNTUsIDUwMDU3LCA1MDA2MiwgNTAwNjcsIDUwMDcxLCA1MDA3OCwgNTAwODgsIDUwMDkzLCAKKyAgICA1MDA5OSwgNTAxMDIsIDUwMTA4LCA1MDExMSwgNTAxMTYsIDUwMTIxLCA1MDEyNSwgNTAxMjcsIDUwMTI5LCA1MDEzMywgCisgICAgNTAxMzcsIDUwMTQxLCA1MDE0NSwgNTAxNTAsIDUwMTUyLCA1MDE1NywgNTAxNjAsIDUwMTYzLCA1MDE2NiwgNTAxNzAsIAorICAgIDUwMTc0LCA1MDE3OSwgNTAxODMsIDUwMTg4LCA1MDE5MywgNTAxOTcsIDUwMjAyLCA1MDIwOCwgNTAyMTEsIDUwMjE3LCAKKyAgICA1MDIyMiwgNTAyMjYsIDUwMjMxLCA1MDIzNywgNTAyNDMsIDUwMjUwLCA1MDI1NiwgNTAyNjMsIDUwMjcwLCA1MDI3MiwgCisgICAgNTAyNzksIDUwMjgzLCA1MDI4OSwgNTAyOTUsIDUwMzAwLCA1MDMwNiwgNTAzMTAsIDUwMzE1LCA1MDMxOCwgNTAzMjMsIAorICAgIDUwMzI5LCA1MDMzNiwgNTAzNDQsIDUwMzUxLCA1MDM2MCwgNTAzNzAsIDUwMzc3LCA1MDM4MywgNTAzODcsIDUwMzk0LCAKKyAgICA1MDM5OSwgNTA0MDgsIDUwNDExLCA1MDQxNCwgNTA0MjMsIDUwNDMzLCA1MDQ0MCwgNTA0NDIsIDUwNDQ4LCA1MDQ1MywgCisgICAgNTA0NTUsIDUwNDU4LCA1MDQ2MiwgNTA0NzAsIDUwNDc5LCA1MDQ4MiwgNTA0ODcsIDUwNDkyLCA1MDUwMCwgNTA1MDgsIAorICAgIDUwNTE2LCA1MDUyNCwgNTA1MzAsIDUwNTM2LCA1MDU0MiwgNTA1NTAsIDUwNTU1LCA1MDU1OCwgNTA1NjIsIDUwNTY1LCAKKyAgICA1MDU3NywgNTA1ODcsIDUwNTk4LCA1MDYwNywgNTA2MTgsIDUwNjI4LCA1MDYzNywgNTA2NDMsIDUwNjUxLCA1MDY1NSwgCisgICAgNTA2NjMsIDUwNjY3LCA1MDY3NSwgNTA2ODIsIDUwNjg5LCA1MDY5OCwgNTA3MDcsIDUwNzE3LCA1MDcyNywgNTA3MzcsIAorICAgIDUwNzQ3LCA1MDc1NiwgNTA3NjUsIDUwNzc1LCA1MDc4NSwgNTA3OTQsIDUwODAzLCA1MDgwOSwgNTA4MTUsIDUwODIxLCAKKyAgICA1MDgyNywgNTA4MzMsIDUwODM5LCA1MDg0NiwgNTA4NTIsIDUwODU5LCA1MDg2NiwgNTA4NzIsIDUwODc4LCA1MDg4NCwgCisgICAgNTA4OTAsIDUwODk2LCA1MDkwMiwgNTA5MDksIDUwOTE1LCA1MDkyMiwgNTA5MjksIDUwOTM2LCA1MDk0MywgNTA5NTAsIAorICAgIDUwOTU3LCA1MDk2NCwgNTA5NzEsIDUwOTc5LCA1MDk4NiwgNTA5OTQsIDUxMDAyLCA1MTAwNywgNTEwMTAsIDUxMDE0LCAKKyAgICA1MTAxOCwgNTEwMjQsIDUxMDI3LCA1MTAzMiwgNTEwMzgsIDUxMDQzLCA1MTA0NywgNTEwNTIsIDUxMDU4LCA1MTA2NSwgCisgICAgNTEwNjgsIDUxMDc1LCA1MTA4MiwgNTEwODYsIDUxMDk0LCA1MTEwMiwgNTExMDcsIDUxMTEzLCA1MTExOCwgNTExMjMsIAorICAgIDUxMTMwLCA1MTEzNywgNTExNDUsIDUxMTUzLCA1MTE2MiwgNTExNjYsIDUxMTc1LCA1MTE4MCwgNTExODQsIDUxMTkxLCAKKyAgICA1MTE5NSwgNTEyMDEsIDUxMjA5LCA1MTIxNCwgNTEyMjEsIDUxMjI1LCA1MTIzMCwgNTEyMzQsIDUxMjM5LCA1MTI0MywgCisgICAgNTEyNDgsIDUxMjUzLCA1MTI2MiwgNTEyNjQsIDUxMjY3LCA1MTI3MCwgNTEyNzcsIDUxMjg0LCA1MTI5MCwgNTEyOTgsIAorICAgIDUxMzA0LCA1MTMxMSwgNTEzMTYsIDUxMzE5LCA1MTMyNCwgNTEzMjksIDUxMzM0LCA1MTM0MiwgNTEzNDYsIDUxMzUzLCAKKyAgICA1MTM2MSwgNTEzNjksIDUxMzc0LCA1MTM3OSwgNTEzODUsIDUxMzkwLCA1MTM5NSwgNTE0MDEsIDUxNDA2LCA1MTQwOSwgCisgICAgNTE0MTMsIDUxNDE3LCA1MTQyNCwgNTE0MzQsIDUxNDM5LCA1MTQ0OCwgNTE0NTcsIDUxNDYzLCA1MTQ2OSwgNTE0NzQsIAorICAgIDUxNDc5LCA1MTQ4NCwgNTE0ODksIDUxNDk1LCA1MTUwMSwgNTE1MDksIDUxNTE3LCA1MTUyMywgNTE1MjksIDUxNTMzLCAKKyAgICA1MTUzNywgNTE1NDQsIDUxNTUxLCA1MTU1NywgNTE1NjAsIDUxNTYzLCA1MTU2NywgNTE1NzEsIDUxNTc1LCA1MTU4MCwgCisgICAgNTE1ODYsIDUxNTkyLCA1MTU5OSwgNTE2MDYsIDUxNjExLCA1MTYxNSwgNTE2MTksIDUxNjIzLCA1MTYyNywgNTE2MzEsIAorICAgIDUxNjM1LCA1MTYzOSwgNTE2NDMsIDUxNjQ3LCA1MTY1MSwgNTE2NTUsIDUxNjU5LCA1MTY2MywgNTE2NjcsIDUxNjcxLCAKKyAgICA1MTY3NSwgNTE2NzksIDUxNjgzLCA1MTY4NywgNTE2OTEsIDUxNjk1LCA1MTY5OSwgNTE3MDMsIDUxNzA3LCA1MTcxMSwgCisgICAgNTE3MTUsIDUxNzE5LCA1MTcyMywgNTE3MjcsIDUxNzMxLCA1MTczNSwgNTE3MzksIDUxNzQzLCA1MTc0NywgNTE3NTEsIAorICAgIDUxNzU1LCA1MTc1OSwgNTE3NjMsIDUxNzY3LCA1MTc3MSwgNTE3NzUsIDUxNzc5LCA1MTc4MywgNTE3ODcsIDUxNzkxLCAKKyAgICA1MTc5NSwgNTE3OTksIDUxODAzLCA1MTgwNywgNTE4MTEsIDUxODE1LCA1MTgxOSwgNTE4MjMsIDUxODI3LCA1MTgzMSwgCisgICAgNTE4MzUsIDUxODM5LCA1MTg0MywgNTE4NDcsIDUxODUxLCA1MTg1NSwgNTE4NTksIDUxODYzLCA1MTg2NywgNTE4NzEsIAorICAgIDUxODc1LCA1MTg3OSwgNTE4ODMsIDUxODg3LCA1MTg5MSwgNTE4OTUsIDUxODk5LCA1MTkwMywgNTE5MDcsIDUxOTExLCAKKyAgICA1MTkxNSwgNTE5MTksIDUxOTIzLCA1MTkyNywgNTE5MzEsIDUxOTM1LCA1MTkzOSwgNTE5NDMsIDUxOTQ3LCA1MTk1MSwgCisgICAgNTE5NTUsIDUxOTU5LCA1MTk2MywgNTE5NjcsIDUxOTcxLCA1MTk3NSwgNTE5NzksIDUxOTgzLCA1MTk4NywgNTE5OTEsIAorICAgIDUxOTk1LCA1MTk5OSwgNTIwMDMsIDUyMDA3LCA1MjAxMSwgNTIwMTUsIDUyMDE5LCA1MjAyMywgNTIwMjcsIDUyMDMxLCAKKyAgICA1MjAzNSwgNTIwMzksIDUyMDQzLCA1MjA0NywgNTIwNTEsIDUyMDU1LCA1MjA1OSwgNTIwNjMsIDUyMDY3LCA1MjA3MSwgCisgICAgNTIwNzUsIDUyMDc5LCA1MjA4MywgNTIwODcsIDUyMDkxLCA1MjA5NSwgNTIwOTksIDUyMTAzLCA1MjEwNywgNTIxMTEsIAorICAgIDUyMTE1LCA1MjExOSwgNTIxMjMsIDUyMTI3LCA1MjEzMSwgNTIxMzUsIDUyMTM5LCA1MjE0MywgNTIxNDcsIDUyMTUxLCAKKyAgICA1MjE1NSwgNTIxNTksIDUyMTYzLCA1MjE2NywgNTIxNzEsIDUyMTc1LCA1MjE3OSwgNTIxODMsIDUyMTg3LCA1MjE5MSwgCisgICAgNTIxOTUsIDUyMTk5LCA1MjIwMywgNTIyMDcsIDUyMjExLCA1MjIxNSwgNTIyMTksIDUyMjIzLCA1MjIyNywgNTIyMzEsIAorICAgIDUyMjM1LCA1MjIzOSwgNTIyNDMsIDUyMjQ3LCA1MjI1MSwgNTIyNTUsIDUyMjU5LCA1MjI2MywgNTIyNjcsIDUyMjcxLCAKKyAgICA1MjI3NSwgNTIyNzksIDUyMjgzLCA1MjI4NywgNTIyOTEsIDUyMjk1LCA1MjI5OSwgNTIzMDMsIDUyMzA3LCA1MjMxMSwgCisgICAgNTIzMTUsIDUyMzE5LCA1MjMyMywgNTIzMjcsIDUyMzMxLCA1MjMzNSwgNTIzMzksIDUyMzQzLCA1MjM0NywgNTIzNTEsIAorICAgIDUyMzU1LCA1MjM1OSwgNTIzNjMsIDUyMzY3LCA1MjM3MSwgNTIzNzUsIDUyMzc5LCA1MjM4MywgNTIzODcsIDUyMzkxLCAKKyAgICA1MjM5NSwgNTIzOTksIDUyNDAzLCA1MjQwNywgNTI0MTEsIDUyNDE1LCA1MjQxOSwgNTI0MjMsIDUyNDI3LCA1MjQzMSwgCisgICAgNTI0MzUsIDUyNDM5LCA1MjQ0MywgNTI0NDcsIDUyNDUxLCA1MjQ1NSwgNTI0NTksIDUyNDYzLCA1MjQ2NywgNTI0NzEsIAorICAgIDUyNDc1LCA1MjQ3OSwgNTI0ODMsIDUyNDg3LCA1MjQ5MSwgNTI0OTUsIDUyNDk5LCA1MjUwMywgNTI1MDcsIDUyNTExLCAKKyAgICA1MjUxNSwgNTI1MTksIDUyNTIzLCA1MjUyNywgNTI1MzEsIDUyNTM1LCA1MjUzOSwgNTI1NDMsIDUyNTQ3LCA1MjU1MSwgCisgICAgNTI1NTUsIDUyNTU5LCA1MjU2MywgNTI1NjcsIDUyNTcxLCA1MjU3NSwgNTI1NzksIDUyNTgzLCA1MjU4NywgNTI1OTEsIAorICAgIDUyNTk1LCA1MjU5OSwgNTI2MDMsIDUyNjA3LCA1MjYxMSwgNTI2MTUsIDUyNjE5LCA1MjYyMywgNTI2MjcsIDUyNjMxLCAKKyAgICA1MjYzNSwgNTI2NDIsIDUyNjUwLCA1MjY1NiwgNTI2NjIsIDUyNjY5LCA1MjY3NiwgNTI2ODIsIDUyNjg4LCA1MjY5NCwgCisgICAgNTI3MDAsIDUyNzA0LCA1MjcwOCwgNTI3MTMsIDUyNzE4LCA1MjcyNCwgNTI3MzAsIDUyNzM4LCA1Mjc0NSwgNTI3NTAsIAorICAgIDUyNzU1LCA1Mjc2MywgNTI3NzIsIDUyNzc5LCA1Mjc4OSwgNTI4MDAsIDUyODAzLCA1MjgwNiwgNTI4MTAsIDUyODE0LCAKKyAgICA1MjgyMSwgNTI4MjgsIDUyODM5LCA1Mjg1MCwgNTI4NTksIDUyODY4LCA1Mjg3NCwgNTI4ODAsIDUyODg3LCA1Mjg5NCwgCisgICAgNTI5MDMsIDUyOTEzLCA1MjkyNCwgNTI5MzQsIDUyOTQ0LCA1Mjk1NCwgNTI5NjUsIDUyOTc2LCA1Mjk4NiwgNTI5OTcsIAorICAgIDUzMDA3LCA1MzAxNywgNTMwMjYsIDUzMDM2LCA1MzA0NiwgNTMwNTYsIDUzMDY2LCA1MzA3MywgNTMwODAsIDUzMDg3LCAKKyAgICA1MzA5NCwgNTMxMDQsIDUzMTE0LCA1MzEyMiwgNTMxMzAsIDUzMTM3LCA1MzE0NCwgNTMxNTEsIDUzMTU4LCA1MzE2NSwgCisgICAgNTMxNzAsIDUzMTc1LCA1MzE4MSwgNTMxODksIDUzMTk4LCA1MzIwNiwgNTMyMTQsIDUzMjIyLCA1MzIzMCwgNTMyMzgsIAorICAgIDUzMjQ2LCA1MzI1NCwgNTMyNjIsIDUzMjcxLCA1MzI4MCwgNTMyODksIDUzMjk4LCA1MzMwNywgNTMzMTYsIDUzMzI1LCAKKyAgICA1MzMzNCwgNTMzNDMsIDUzMzUyLCA1MzM2MSwgNTMzNzAsIDUzMzc5LCA1MzM4OCwgNTMzOTcsIDUzNDA2LCA1MzQyMCwgCisgICAgNTM0MzUsIDUzNDQ5LCA1MzQ2NCwgNTM0NzgsIDUzNDkyLCA1MzUwNiwgNTM1MjAsIDUzNTMwLCA1MzU0MSwgNTM1NTEsIAorICAgIDUzNTYyLCA1MzU3NywgNTM1OTIsIDUzNjAwLCA1MzYwNiwgNTM2MTMsIDUzNjIwLCA1MzYyNywgNTM2MzQsIDUzNjM5LCAKKyAgICA1MzY0NSwgNTM2NTAsIDUzNjU1LCA1MzY2MSwgNTM2NjYsIDUzNjcxLCA1MzY3NiwgNTM2ODEsIDUzNjg2LCA1MzY5MywgCisgICAgNTM2OTksIDUzNzA3LCA1MzcxMiwgNTM3MTcsIDUzNzIxLCA1MzcyNSwgNTM3MzMsIDUzNzQxLCA1Mzc0OSwgNTM3NTcsIAorICAgIDUzNzY0LCA1Mzc3MSwgNTM3ODQsIDUzNzk3LCA1MzgxMCwgNTM4MjMsIDUzODMxLCA1MzgzOSwgNTM4NDUsIDUzODUxLCAKKyAgICA1Mzg1OCwgNTM4NjUsIDUzODcyLCA1Mzg3OSwgNTM4ODMsIDUzODg4LCA1Mzg5NiwgNTM5MDQsIDUzOTEyLCA1MzkxOSwgCisgICAgNTM5MjMsIDUzOTMxLCA1MzkzOSwgNTM5NDMsIDUzOTQ3LCA1Mzk1MiwgNTM5NTksIDUzOTY3LCA1Mzk3NSwgNTM5OTQsIAorICAgIDU0MDEzLCA1NDAzMiwgNTQwNTEsIDU0MDcwLCA1NDA4OSwgNTQxMDgsIDU0MTI3LCA1NDEzMywgNTQxNDAsIDU0MTQ5LCAKKyAgICA1NDE1NywgNTQxNjUsIDU0MTcxLCA1NDE3NCwgNTQxNzcsIDU0MTgyLCA1NDE4NSwgNTQyMDUsIDU0MjEyLCA1NDIxOCwgCisgICAgNTQyMjQsIDU0MjI4LCA1NDIzMSwgNTQyMzQsIDU0MjM3LCA1NDI0OSwgNTQyNjMsIDU0MjcwLCA1NDI3NywgNTQyODAsIAorICAgIDU0Mjg0LCA1NDI4NywgNTQyOTIsIDU0Mjk3LCA1NDMwMiwgNTQzMDgsIDU0MzE3LCA1NDMyNCwgNTQzMzEsIDU0MzM5LCAKKyAgICA1NDM0NiwgNTQzNTMsIDU0MzU2LCA1NDM2MiwgNTQzNjgsIDU0MzcxLCA1NDM3NCwgNTQzNzksIDU0Mzg0LCA1NDM5MCwgCisgICAgNTQzOTYsIDU0NDAwLCA1NDQwNSwgNTQ0MTIsIDU0NDE2LCA1NDQyMiwgNTQ0MjYsIDU0NDMwLCA1NDQzOCwgNTQ0NTAsIAorICAgIDU0NDU5LCA1NDQ2MywgNTQ0NjUsIDU0NDc0LCA1NDQ4MywgNTQ0ODksIDU0NDkyLCA1NDQ5OCwgNTQ1MDQsIDU0NTA5LCAKKyAgICA1NDUxNCwgNTQ1MTksIDU0NTI0LCA1NDUyOSwgNTQ1MzQsIDU0NTM2LCA1NDU0MiwgNTQ1NDcsIDU0NTU1LCA1NDU1OSwgCisgICAgNTQ1NjUsIDU0NTY4LCA1NDU3MiwgNTQ1NzksIDU0NTg2LCA1NDU4OCwgNTQ1OTAsIDU0NTk2LCA1NDYwMiwgNTQ2MDgsIAorICAgIDU0NjE3LCA1NDYyNiwgNTQ2MzMsIDU0NjQwLCA1NDY0NiwgNTQ2NTMsIDU0NjU4LCA1NDY2MywgNTQ2NjgsIDU0Njc0LCAKKyAgICA1NDY4MCwgNTQ2ODUsIDU0NjkyLCA1NDY5NiwgNTQ3MDAsIDU0NzEzLCA1NDcyNiwgNTQ3MzgsIDU0NzQ3LCA1NDc1MywgCisgICAgNTQ3NjAsIDU0NzY1LCA1NDc3MCwgNTQ3NzUsIDU0NzgwLCA1NDc4NSwgNTQ3ODcsIDU0Nzk0LCA1NDgwMiwgNTQ4MTAsIAorICAgIDU0ODE4LCA1NDgyNSwgNTQ4MzMsIDU0ODM5LCA1NDg0NCwgNTQ4NTAsIDU0ODU2LCA1NDg2MiwgNTQ4NjksIDU0ODc1LCAKKyAgICA1NDg4MywgNTQ4OTEsIDU0ODk5LCA1NDkwNywgNTQ5MTUsIDU0OTIxLCA1NDkyNywgNTQ5MzYsIDU0OTQwLCA1NDk0OSwgCisgICAgNTQ5NTgsIDU0OTY3LCA1NDk3NSwgNTQ5NzksIDU0OTg1LCA1NDk5MiwgNTQ5OTksIDU1MDAzLCA1NTAwOSwgNTUwMTcsIAorICAgIDU1MDIzLCA1NTAyOCwgNTUwMzQsIDU1MDM5LCA1NTA0NCwgNTUwNTEsIDU1MDU4LCA1NTA2MywgNTUwNjgsIDU1MDc2LCAKKyAgICA1NTA4NCwgNTUwOTQsIDU1MTA0LCA1NTExMSwgNTUxMTgsIDU1MTIyLCA1NTEyNiwgNTUxMzgsIDU1MTQ0LCA1NTE1MSwgCisgICAgNTUxNTYsIDU1MTYxLCA1NTE2OCwgNTUxNzUsIDU1MTgxLCA1NTE4NywgNTUxOTcsIDU1MjA0LCA1NTIxMiwgNTUyMjAsIAorICAgIDU1MjI5LCA1NTIzNiwgNTUyNDIsIDU1MjQ5LCA1NTI1NSwgNTUyNjMsIDU1MjcxLCA1NTI3OSwgNTUyODcsIDU1MjkzLCAKKyAgICA1NTI5OCwgNTUzMDgsIDU1MzE5LCA1NTMyNiwgNTUzMzUsIDU1MzQxLCA1NTM0NiwgNTUzNTEsIDU1MzYxLCA1NTM2OCwgCisgICAgNTUzNzQsIDU1MzgwLCA1NTM4OCwgNTUzOTMsIDU1NDAwLCA1NTQwNywgNTU0MTgsIDU1NDI1LCA1NTQzMiwgNTU0MzksIAorICAgIDU1NDQ2LCA1NTQ1MywgNTU0NjEsIDU1NDY5LCA1NTQ4MiwgNTU0OTUsIDU1NTA3LCA1NTUxOSwgNTU1MzMsIDU1NTQ3LCAKKyAgICA1NTU1MywgNTU1NTksIDU1NTY4LCA1NTU3NywgNTU1ODQsIDU1NTkxLCA1NTYwMCwgNTU2MDksIDU1NjE4LCA1NTYyNywgCisgICAgNTU2MzUsIDU1NjQzLCA1NTY1MywgNTU2NjMsIDU1Njc3LCA1NTY5MSwgNTU3MDAsIDU1NzA5LCA1NTcyMiwgNTU3MzUsIAorICAgIDU1NzQ0LCA1NTc1MywgNTU3NjQsIDU1Nzc1LCA1NTc4MSwgNTU3ODcsIDU1Nzk2LCA1NTgwNSwgNTU4MTAsIDU1ODE1LCAKKyAgICA1NTgyMywgNTU4MjksIDU1ODM1LCA1NTg0MywgNTU4NTEsIDU1ODY0LCA1NTg3NywgNTU4ODEsIDU1ODg1LCA1NTg5MywgCisgICAgNTU5MDEsIDU1OTA4LCA1NTkxNiwgNTU5MjQsIDU1OTMzLCA1NTk0MiwgNTU5NDgsIDU1OTU0LCA1NTk2MSwgNTU5NjgsIAorICAgIDU1OTc1LCA1NTk4MiwgNTU5OTEsIDU2MDAwLCA1NjAwMywgNTYwMDYsIDU2MDExLCA1NjAxNiwgNTYwMjIsIDU2MDI4LCAKKyAgICA1NjAzNSwgNTYwNDIsIDU2MDUzLCA1NjA2NCwgNTYwNzEsIDU2MDc4LCA1NjA4NiwgNTYwOTQsIDU2MTAyLCA1NjExMCwgCisgICAgNTYxMTgsIDU2MTI2LCA1NjEzMiwgNTYxMzgsIDU2MTQyLCA1NjE0NiwgNTYxNTQsIDU2MTYyLCA1NjE2NywgNTYxNzIsIAorICAgIDU2MTc3LCA1NjE4MiwgNTYxODgsIDU2MjAyLCA1NjIwOSwgNTYyMTYsIDU2MjIwLCA1NjIyMiwgNTYyMjQsIDU2MjI5LCAKKyAgICA1NjIzNCwgNTYyMzksIDU2MjQ0LCA1NjI1MiwgNTYyNTksIDU2MjY2LCA1NjI3NCwgNTYyODYsIDU2Mjk0LCA1NjMwMiwgCisgICAgNTYzMTMsIDU2MzE3LCA1NjMyMSwgNTYzMjcsIDU2MzM1LCA1NjM0OCwgNTYzNTUsIDU2MzYyLCA1NjM2OSwgNTYzNzUsIAorICAgIDU2MzgyLCA1NjM5MSwgNTY0MDAsIDU2NDA2LCA1NjQxMiwgNTY0MTgsIDU2NDI4LCA1NjQzOCwgNTY0NDYsIDU2NDU1LCAKKyAgICA1NjQ2MCwgNTY0NjMsIDU2NDY4LCA1NjQ3MywgNTY0NzgsIDU2NDg0LCA1NjQ5MCwgNTY0OTQsIDU2NDk3LCA1NjUwMCwgCisgICAgNTY1MDMsIDU2NTA4LCA1NjUxMywgNTY1MTksIDU2NTI1LCA1NjUyOSwgNTY1MzMsIDU2NTQwLCA1NjU0NywgNTY1NTQsIAorICAgIDU2NTYxLCA1NjU2OCwgNTY1NzUsIDU2NTg1LCA1NjU5NSwgNTY2MDIsIDU2NjA5LCA1NjYxNywgNTY2MjUsIDU2NjI5LCAKKyAgICA1NjYzNCwgNTY2MzksIDU2NjQ1LCA1NjY1MSwgNTY2NTQsIDU2NjU3LCA1NjY2MCwgNTY2NjMsIDU2NjY4LCA1NjY3MywgCisgICAgNTY2NzgsIDU2NjgzLCA1NjY4OCwgNTY2OTMsIDU2Njk3LCA1NjcwMSwgNTY3MDUsIDU2NzEwLCA1NjcxNSwgNTY3MTksIAorICAgIDU2NzIzLCA1NjcyOSwgNTY3MzMsIDU2NzM5LCA1Njc0NCwgNTY3NTEsIDU2NzU5LCA1Njc2NiwgNTY3NzQsIDU2NzgxLCAKKyAgICA1Njc4OSwgNTY3OTgsIDU2ODA1LCA1NjgxNSwgNTY4MjYsIDU2ODMyLCA1Njg0MSwgNTY4NDcsIDU2ODU2LCA1Njg2NSwgCisgICAgNTY4NzEsIDU2ODc3LCA1Njg4MSwgNTY4ODUsIDU2ODk0LCA1NjkwMywgNTY5MTAsIDU2OTE3LCA1NjkyNiwgNTY5MzUsIAorICAgIDU2OTQxLCA1Njk0NywgNTY5NTQsIDU2OTU5LCA1Njk2MywgNTY5NjcsIDU2OTcyLCA1Njk3NywgNTY5ODIsIDU2OTkwLCAKKyAgICA1Njk5OCwgNTcwMDEsIDU3MDA1LCA1NzAxNCwgNTcwMjQsIDU3MDMzLCA1NzA0MywgNTcwNTQsIDU3MDY3LCA1NzA3MSwgCisgICAgNTcwNzUsIDU3MDc5LCA1NzA4MywgNTcwODgsIDU3MDkzLCA1NzA5OSwgNTcxMDUsIDU3MTEyLCA1NzExOSwgNTcxMjUsIAorICAgIDU3MTMxLCA1NzEzNywgNTcxNDMsIDU3MTUxLCA1NzE1OSwgNTcxNjYsIDU3MTczLCA1NzE4MCwgMCwgMCwgNTcxODcsIAorICAgIDU3MTk2LCA1NzIwNSwgNTcyMTUsIDU3MjI1LCA1NzIzNCwgNTcyNDMsIDU3MjUyLCA1NzI2MSwgNTcyNjcsIDU3MjcyLCAKKyAgICA1NzI4MSwgNTcyOTEsIDU3MzAwLCA1NzMxMCwgNTczMTcsIDU3MzI0LCA1NzMzMSwgNTczMzgsIDU3MzQzLCA1NzM0OCwgCisgICAgNTczNTMsIDU3MzU4LCA1NzM2NiwgNTczNzUsIDU3MzgzLCA1NzM5MiwgNTczOTYsIDU3NDAwLCA1NzQwNCwgNTc0MDgsIAorICAgIDU3NDE4LCAwLCAwLCA1NzQyMSwgNTc0MzAsIDU3NDM5LCA1NzQ0OCwgNTc0NTcsIDU3NDYzLCA1NzQ2OSwgNTc0NzUsIAorICAgIDU3NDgxLCA1NzQ5MSwgNTc1MDEsIDU3NTExLCA1NzUyMSwgNTc1MzEsIDU3NTQxLCA1NzU1MSwgNTc1NjEsIDU3NTY4LCAKKyAgICA1NzU3NSwgNTc1ODIsIDU3NTg5LCA1NzU5NiwgNTc2MDMsIDU3NjEwLCA1NzYxNywgNTc2MjMsIDU3NjI5LCA1NzYzNSwgCisgICAgNTc2NDEsIDU3NjQ3LCA1NzY1MywgNTc2NTksIDU3NjY1LCA1NzY3NiwgMCwgMCwgMCwgNTc2ODYsIDU3NjkzLCA1NzY5NiwgCisgICAgNTc3MDAsIDU3NzA0LCA1NzcwOSwgNTc3MTQsIDU3NzE5LCA1NzcyMiwgNTc3MzEsIDU3NzQwLCA1Nzc0OSwgMCwgNTc3NTgsIAorICAgIDU3NzY0LCA1Nzc3MCwgNTc3NzgsIDU3Nzg4LCA1Nzc5NSwgNTc4MDQsIDU3ODA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzgxMiwgNTc4MjEsIAorICAgIDU3ODMwLCA1NzgzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4NDgsIAorICAgIDU3ODUzLCA1Nzg1OCwgNTc4NjMsIDU3ODY4LCA1Nzg3MywgNTc4NzgsIDU3ODgzLCA1Nzg4OCwgNTc4OTMsIDU3ODk4LCAKKyAgICA1NzkwNCwgNTc5MDgsIDU3OTEzLCA1NzkxOCwgNTc5MjMsIDU3OTI4LCA1NzkzMywgNTc5MzgsIDU3OTQzLCA1Nzk0OCwgCisgICAgNTc5NTMsIDU3OTU4LCA1Nzk2MywgNTc5NjgsIDU3OTczLCA1Nzk3OCwgNTc5ODMsIDU3OTg4LCA1Nzk5MywgNTc5OTgsIAorICAgIDU4MDAzLCA1ODAwOCwgNTgwMTMsIDU4MDE4LCA1ODAyNCwgNTgwMjksIDU4MDM1LCA1ODA0NCwgNTgwNDksIDU4MDU3LCAKKyAgICA1ODA2NCwgNTgwNzMsIDU4MDc4LCA1ODA4MywgNTgwODgsIDU4MDk0LCAwLCA1ODEwMSwgNTgxMDYsIDU4MTExLCA1ODExNiwgCisgICAgNTgxMjEsIDU4MTI2LCA1ODEzMSwgNTgxMzYsIDU4MTQxLCA1ODE0NiwgNTgxNTEsIDU4MTU3LCA1ODE2MSwgNTgxNjYsIAorICAgIDU4MTcxLCA1ODE3NiwgNTgxODEsIDU4MTg2LCA1ODE5MSwgNTgxOTYsIDU4MjAxLCA1ODIwNiwgNTgyMTEsIDU4MjE2LCAKKyAgICA1ODIyMSwgNTgyMjYsIDU4MjMxLCA1ODIzNiwgNTgyNDEsIDU4MjQ2LCA1ODI1MSwgNTgyNTYsIDU4MjYxLCA1ODI2NiwgCisgICAgNTgyNzEsIDU4Mjc3LCA1ODI4MiwgNTgyODgsIDU4Mjk3LCA1ODMwMiwgNTgzMTAsIDU4MzE3LCA1ODMyNiwgNTgzMzEsIAorICAgIDU4MzM2LCA1ODM0MSwgNTgzNDcsIDAsIDU4MzU0LCA1ODM2MiwgNTgzNzAsIDU4Mzc5LCA1ODM4NiwgNTgzOTQsIDU4NDAwLCAKKyAgICA1ODQwOSwgNTg0MTcsIDU4NDI1LCA1ODQzMywgNTg0NDEsIDU4NDQ5LCA1ODQ1NywgNTg0NjIsIDU4NDY5LCA1ODQ3NSwgCisgICAgNTg0ODIsIDU4NDkwLCA1ODQ5NywgNTg1MDQsIDU4NTEyLCA1ODUxOCwgNTg1MjQsIDU4NTMxLCA1ODUzOCwgNTg1NDgsIAorICAgIDU4NTU4LCA1ODU2NSwgNTg1NzIsIDU4NTc3LCA1ODU4NywgNTg1OTcsIDU4NjAyLCA1ODYwNywgNTg2MTIsIDU4NjE3LCAKKyAgICA1ODYyMiwgNTg2MjcsIDU4NjMyLCA1ODYzNywgNTg2NDIsIDU4NjQ3LCA1ODY1MiwgNTg2NTcsIDU4NjYyLCA1ODY2NywgCisgICAgNTg2NzIsIDU4Njc3LCA1ODY4MiwgNTg2ODcsIDU4NjkyLCA1ODY5NywgNTg3MDIsIDU4NzA3LCA1ODcxMiwgNTg3MTcsIAorICAgIDU4NzIyLCA1ODcyNywgNTg3MzIsIDU4NzM3LCA1ODc0MiwgNTg3NDcsIDU4NzUxLCA1ODc1NSwgNTg3NjAsIDU4NzY1LCAKKyAgICA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTAsIDU4Nzk1LCA1ODgwMCwgNTg4MDUsIDU4ODEwLCA1ODgxNSwgCisgICAgNTg4MjAsIDU4ODI1LCA1ODgzMCwgNTg4MzUsIDU4ODQwLCA1ODg0NSwgNTg4NTIsIDU4ODU5LCA1ODg2NiwgNTg4NzMsIAorICAgIDU4ODgwLCA1ODg4NywgNTg4OTQsIDU4OTAxLCA1ODkwOCwgNTg5MTUsIDU4OTIyLCA1ODkyOSwgNTg5MzYsIDU4OTQzLCAKKyAgICA1ODk0OCwgNTg5NTMsIDU4OTYwLCA1ODk2NywgNTg5NzQsIDU4OTgxLCA1ODk4OCwgNTg5OTUsIDU5MDAyLCA1OTAwOSwgCisgICAgNTkwMTYsIDU5MDIzLCA1OTAzMCwgNTkwMzcsIDU5MDQzLCA1OTA0OSwgNTkwNTUsIDU5MDYxLCA1OTA2OCwgNTkwNzUsIAorICAgIDU5MDgyLCA1OTA4OSwgNTkwOTYsIDU5MTAzLCA1OTExMCwgNTkxMTcsIDU5MTI0LCA1OTEzMSwgNTkxMzksIDU5MTQ3LCAKKyAgICA1OTE1NSwgNTkxNjMsIDU5MTcxLCA1OTE3OSwgNTkxODcsIDU5MTk1LCA1OTE5OSwgNTkyMDUsIDU5MjExLCA1OTIxNSwgCisgICAgNTkyMjEsIDU5MjI3LCA1OTIzMywgNTkyNDAsIDU5MjQ3LCA1OTI1NCwgNTkyNjEsIDU5MjY2LCA1OTI3MiwgNTkyNzgsIAorICAgIDU5Mjg1LCAwLCAwLCAwLCAwLCAwLCA1OTI5MiwgNTkzMDAsIDU5MzA5LCA1OTMxOCwgNTkzMjYsIDU5MzMyLCA1OTMzNywgCisgICAgNTkzNDIsIDU5MzQ3LCA1OTM1MiwgNTkzNTcsIDU5MzYyLCA1OTM2NywgNTkzNzIsIDU5Mzc3LCA1OTM4MiwgNTkzODcsIAorICAgIDU5MzkyLCA1OTM5NywgNTk0MDIsIDU5NDA3LCA1OTQxMiwgNTk0MTcsIDU5NDIyLCA1OTQyNywgNTk0MzIsIDU5NDM3LCAKKyAgICA1OTQ0MiwgNTk0NDcsIDU5NDUyLCA1OTQ1NywgNTk0NjIsIDU5NDY3LCA1OTQ3MiwgNTk0NzcsIDU5NDgyLCA1OTQ4NywgCisgICAgNTk0OTIsIDU5NDk3LCA1OTUwMiwgNTk1MDcsIDU5NTEyLCA1OTUxNywgNTk1MjIsIDU5NTI3LCAwLCA1OTUzMiwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTk1MzcsIDAsIDAsIDU5NTQyLCA1OTU0NiwgNTk1NTEsIDU5NTU2LCA1OTU2MSwgNTk1NjYsIDU5NTc1LCAKKyAgICA1OTU4MCwgNTk1ODUsIDU5NTkwLCA1OTU5NSwgNTk2MDAsIDU5NjA1LCA1OTYxMCwgNTk2MTUsIDU5NjIyLCA1OTYyNywgCisgICAgNTk2MzIsIDU5NjQxLCA1OTY0OCwgNTk2NTMsIDU5NjU4LCA1OTY2MywgNTk2NzAsIDU5Njc1LCA1OTY4MiwgNTk2ODcsIAorICAgIDU5NjkyLCA1OTY5OSwgNTk3MDYsIDU5NzExLCA1OTcxNiwgNTk3MjEsIDU5NzI4LCA1OTczNSwgNTk3NDAsIDU5NzQ1LCAKKyAgICA1OTc1MCwgNTk3NTUsIDU5NzYwLCA1OTc2NywgNTk3NzQsIDU5Nzc5LCA1OTc4NCwgNTk3ODksIDU5Nzk0LCA1OTc5OSwgCisgICAgNTk4MDQsIDU5ODA5LCA1OTgxNCwgNTk4MTksIDU5ODI0LCA1OTgyOSwgNTk4MzYsIDU5ODQxLCA1OTg0NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTk4NTEsIDU5ODU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTg2MywgNTk4NjgsIDU5ODcyLCA1OTg3NiwgNTk4ODAsIDU5ODg0LCA1OTg4OCwgNTk4OTIsIDU5ODk2LCA1OTkwMCwgCisgICAgNTk5MDQsIDU5OTA4LCA1OTkxNCwgNTk5MTgsIDU5OTIyLCA1OTkyNiwgNTk5MzAsIDU5OTM0LCA1OTkzOCwgNTk5NDIsIAorICAgIDU5OTQ2LCA1OTk1MCwgNTk5NTQsIDU5OTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTk2MiwgNTk5NjYsIAorICAgIDU5OTcwLCA1OTk3NCwgNTk5NzgsIDU5OTgyLCA1OTk4NiwgMCwgNTk5OTAsIDU5OTk0LCA1OTk5OCwgNjAwMDIsIDYwMDA2LCAKKyAgICA2MDAxMCwgNjAwMTQsIDAsIDYwMDE4LCA2MDAyMiwgNjAwMjYsIDYwMDMwLCA2MDAzNCwgNjAwMzgsIDYwMDQyLCAwLCAKKyAgICA2MDA0NiwgNjAwNTAsIDYwMDU0LCA2MDA1OCwgNjAwNjIsIDYwMDY2LCA2MDA3MCwgMCwgNjAwNzQsIDYwMDc4LCA2MDA4MiwgCisgICAgNjAwODYsIDYwMDkwLCA2MDA5NCwgNjAwOTgsIDAsIDYwMTAyLCA2MDEwNiwgNjAxMTAsIDYwMTE0LCA2MDExOCwgNjAxMjIsIAorICAgIDYwMTI2LCAwLCA2MDEzMCwgNjAxMzQsIDYwMTM4LCA2MDE0MiwgNjAxNDYsIDYwMTUwLCA2MDE1NCwgMCwgNjAxNTgsIAorICAgIDYwMTYyLCA2MDE2NiwgNjAxNzAsIDYwMTc0LCA2MDE3OCwgNjAxODIsIDAsIDYwMTg2LCA2MDE5MSwgNjAxOTYsIDYwMjAxLCAKKyAgICA2MDIwNiwgNjAyMTEsIDYwMjE2LCA2MDIyMCwgNjAyMjUsIDYwMjMwLCA2MDIzNSwgNjAyMzksIDYwMjQ0LCA2MDI0OSwgCisgICAgNjAyNTQsIDYwMjU5LCA2MDI2MywgNjAyNjgsIDYwMjczLCA2MDI3OCwgNjAyODMsIDYwMjg4LCA2MDI5MywgNjAyOTcsIAorICAgIDYwMzAyLCA2MDMwNywgNjAzMTQsIDYwMzE5LCA2MDMyNCwgNjAzMzAsIDYwMzM3LCA2MDM0NCwgNjAzNTMsIDYwMzYwLCAKKyAgICA2MDM2OSwgNjAzNzMsIDYwMzc3LCA2MDM4MywgNjAzODksIDYwMzk1LCA2MDQwMywgNjA0MDksIDYwNDEzLCA2MDQxNywgCisgICAgNjA0MjEsIDYwNDI3LCA2MDQzMywgNjA0MzcsIDYwNDM5LCA2MDQ0MywgNjA0NDksIDYwNDUxLCA2MDQ1NSwgNjA0NTgsIAorICAgIDYwNDYxLCA2MDQ2NywgNjA0NzIsIDYwNDc2LCA2MDQ4MCwgNjA0ODUsIDYwNDkxLCA2MDQ5NiwgNjA1MDEsIDYwNTA2LCAKKyAgICA2MDUxMSwgNjA1MTgsIDYwNTI1LCA2MDUzMCwgNjA1MzUsIDYwNTQwLCA2MDU0NSwgNjA1NTAsIDYwNTU1LCA2MDU1OSwgCisgICAgNjA1NjMsIDYwNTcwLCA2MDU3NywgNjA1ODMsIDYwNTg3LCA2MDU5MiwgNjA1OTUsIDYwNTk5LCA2MDYwNiwgNjA2MTAsIAorICAgIDYwNjE0LCA2MDYxOCwgNjA2MjIsIDYwNjI4LCA2MDYzNCwgNjA2MzgsIDYwNjQ0LCA2MDY0OCwgNjA2NTIsIDYwNjU4LCAKKyAgICA2MDY2MywgNjA2NjgsIDYwNjcwLCA2MDY3MywgNjA2NzcsIDYwNjgzLCA2MDY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE0NTAsIDMxNDU2LCAzMTQ2MiwgMzE0NjYsIDMxNDcwLCAzMTQ3NCwgCi0gICAgMzE0NzgsIDMxNDg0LCAzMTQ4OCwgMzE0OTQsIDMxNDk4LCAzMTUwNCwgMzE1MTAsIDMxNTE4LCAzMTUyNCwgMzE1MzIsIAotICAgIDMxNTM2LCAzMTU0MCwgMzE1NDQsIDMxNTUwLCAzMTU1MywgMzE1NTksIDMxNTYzLCAzMTU2OSwgMzE1NzMsIDMxNTc3LCAKLSAgICAzMTU4MywgMzE1ODcsIDMxNTkzLCAzMTU5NywgMzE2MDMsIDMxNjExLCAzMTYxOSwgMzE2MjcsIDMxNjMzLCAzMTYzNywgCi0gICAgMzE2NDMsIDMxNjQ3LCAzMTY1MywgMzE2NTcsIDMxNjYwLCAzMTY2NiwgMzE2NzAsIDMxNjc2LCAzMTY3OSwgMzE2ODIsIAotICAgIDMxNjg2LCAzMTY5MCwgMzE2OTQsIDMxNzAwLCAzMTcwNiwgMzE3MTAsIDMxNzEzLCAzMTcxNywgMzE3MjIsIDMxNzI3LCAKLSAgICAzMTczNCwgMzE3MzksIDMxNzQ2LCAzMTc1MywgMzE3NjIsIDMxNzY5LCAzMTc3OCwgMzE3ODMsIDMxNzkwLCAzMTc5NywgCi0gICAgMzE4MDYsIDMxODExLCAzMTgxOCwgMzE4MjMsIDMxODI5LCAzMTgzNSwgMzE4NDEsIDMxODQ3LCAzMTg1MywgMzE4NTksIDAsIAotICAgIDAsIDAsIDAsIDMxODY1LCAzMTg2OSwgMzE4NzIsIDMxODc1LCAzMTg3OCwgMzE4ODEsIDMxODg0LCAzMTg4NywgMzE4OTEsIAotICAgIDMxODk0LCAzMTg5OCwgMzE5MDEsIDMxOTA0LCAzMTkwNywgMzE5MTIsIDMxOTE3LCAzMTkyMiwgMzE5MjUsIDMxOTMwLCAKLSAgICAzMTkzNSwgMzE5NDAsIDMxOTQ1LCAzMTk1MiwgMzE5NTcsIDMxOTYyLCAzMTk2NywgMzE5NzIsIDMxOTc5LCAzMTk4NSwgCi0gICAgMzE5OTEsIDMxOTk3LCAzMjAwMywgMzIwMDksIDMyMDE4LCAzMjAyNywgMzIwMzMsIDMyMDM5LCAzMjA0NywgMzIwNTUsIAotICAgIDMyMDY0LCAzMjA3MywgMzIwODEsIDMyMDg5LCAzMjA5OCwgMzIxMDcsIDAsIDAsIDAsIDMyMTE1LCAzMjEyMCwgMzIxMjUsIAotICAgIDMyMTMwLCAzMjEzNCwgMzIxMzgsIDMyMTQyLCAzMjE0NywgMzIxNTEsIDMyMTU1LCAzMjE2MCwgMzIxNjQsIDMyMTY5LCAKLSAgICAzMjE3NCwgMzIxNzksIDMyMTg0LCAzMjE4OSwgMzIxOTQsIDMyMTk5LCAzMjIwNCwgMzIyMDksIDMyMjE0LCAzMjIxOCwgCi0gICAgMzIyMjMsIDMyMjI4LCAzMjIzMywgMzIyMzcsIDMyMjQxLCAzMjI0NiwgMzIyNTEsIDMyMjU2LCAzMjI2MSwgMzIyNjYsIAotICAgIDMyMjcwLCAzMjI3NiwgMzIyODIsIDMyMjg4LCAzMjI5NCwgMzIzMDAsIDMyMzA2LCAzMjMxMiwgMzIzMTgsIDMyMzI0LCAKLSAgICAzMjMyOSwgMzIzMzQsIDMyMzQxLCAzMjM0OSwgMzIzNTQsIDMyMzU5LCAzMjM2NCwgMzIzNjgsIDMyMzcyLCAzMjM3NiwgCi0gICAgMzIzODAsIDMyMzg0LCAzMjM4OCwgMzIzOTMsIDMyMzk3LCAzMjQwMiwgMzI0MDYsIDMyNDExLCAzMjQxNiwgMzI0MjEsIAotICAgIDMyNDI3LCAzMjQzMywgMzI0MzcsIDMyNDQzLCAzMjQ0NywgMzI0NTMsIDMyNDU5LCAzMjQ2NCwgMzI0NzEsIDMyNDc1LCAKLSAgICAzMjQ4MSwgMzI0ODYsIDMyNDkzLCAzMjQ5OCwgMzI1MDUsIDMyNTEyLCAzMjUxNywgMzI1MjQsIDMyNTI5LCAzMjUzNCwgCi0gICAgMzI1MzksIDMyNTQ2LCAzMjU1MCwgMzI1NTYsIDMyNTYzLCAzMjU3MCwgMzI1NzUsIDMyNTgyLCAzMjU4OSwgMzI1OTMsIAotICAgIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE2LCAzMjYyMSwgMzI2MjYsIDMyNjMxLCAzMjYzNiwgMzI2NDAsIDMyNjQ0LCAKLSAgICAzMjY0OSwgMzI2NTQsIDMyNjYxLCAzMjY2NywgMzI2NzIsIDMyNjc5LCAzMjY4NCwgMzI2OTEsIDMyNjk2LCAzMjcwNiwgCi0gICAgMzI3MTIsIDMyNzE4LCAzMjcyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3MjYsIDMyNzM1LCAzMjc0MiwgMzI3NDksIAotICAgIDMyNzU2LCAzMjc2MCwgMzI3NjUsIDMyNzcwLCAzMjc3NSwgMzI3ODAsIDMyNzg1LCAzMjc5MCwgMzI3OTUsIDMyODAwLCAKLSAgICAzMjgwNSwgMzI4MTAsIDMyODE1LCAzMjgyMCwgMzI4MjUsIDMyODI5LCAzMjgzNCwgMzI4MzksIDMyODQ0LCAzMjg0OSwgCi0gICAgMzI4NTQsIDMyODU5LCAzMjg2MywgMzI4NjgsIDMyODczLCAzMjg3OCwgMzI4ODMsIDMyODg3LCAzMjg5MiwgMzI4OTcsIAotICAgIDMyOTAxLCAzMjkwNiwgMzI5MTEsIDMyOTE2LCAzMjkyMSwgMzI5MjYsIDMyOTMwLCAzMjkzNiwgMzI5NDMsIDMyOTQ5LCAKLSAgICAzMjk1NCwgMzI5NTksIDMyOTY1LCAzMjk3MCwgMzI5NzYsIDMyOTgxLCAzMjk4NywgMzI5OTMsIDMyOTk4LCAzMzAwNCwgCi0gICAgMzMwMTAsIDMzMDE1LCAzMzAyMSwgMzMwMjcsIDMzMDMzLCAzMzAzOCwgMCwgMCwgMCwgMzMwNDMsIDMzMDQ5LCAzMzA1OSwgCi0gICAgMzMwNjUsIDMzMDczLCAzMzA3OSwgMzMwODQsIDMzMDg4LCAzMzA5MiwgMzMwOTYsIDMzMTAwLCAzMzEwNCwgMzMxMDgsIAotICAgIDMzMTEzLCAzMzExNywgMCwgMCwgMCwgMzMxMjIsIDMzMTI3LCAzMzEzMiwgMzMxMzcsIDMzMTQ0LCAzMzE1MCwgMzMxNTYsIAotICAgIDMzMTYyLCAzMzE2OCwgMzMxNzQsIDMzMTgwLCAzMzE4NywgMzMxOTMsIDMzMjAwLCAzMzIwNywgMzMyMTQsIDMzMjIxLCAKLSAgICAzMzIyOCwgMzMyMzUsIDMzMjQyLCAzMzI0OSwgMzMyNTYsIDMzMjYzLCAzMzI3MCwgMzMyNzcsIDMzMjg0LCAzMzI5MSwgCi0gICAgMzMyOTgsIDMzMzA1LCAzMzMxMiwgMzMzMTksIDMzMzI2LCAzMzMzMywgMzMzNDAsIDMzMzQ3LCAzMzM1NCwgMzMzNjEsIAotICAgIDMzMzY4LCAzMzM3NSwgMzMzODIsIDMzMzg5LCAzMzM5NiwgMzM0MDMsIDMzNDEwLCAzMzQxOCwgMzM0MjYsIDMzNDM0LCAKLSAgICAzMzQ0MCwgMzM0NDYsIDMzNDUyLCAzMzQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzM0NjksIDMzNDc3LCAzMzQ4NSwgMzM0OTMsIDMzNTAxLCAzMzUxMSwgMzM1MjEsIDMzNTMxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzMzU0MSwgMzM1NDYsIDMzNTUxLCAzMzU1NiwgMzM1NjEsIDMzNTcwLCAzMzU4MSwgMzM1OTAsIDMzNjAxLCAKLSAgICAzMzYwNywgMzM2MjAsIDMzNjI2LCAzMzYzMywgMzM2NDAsIDMzNjQ1LCAzMzY1MSwgMzM2NTcsIDMzNjY4LCAzMzY3NywgCi0gICAgMzM2ODQsIDMzNjkxLCAzMzcwMCwgMzM3MDcsIDMzNzE2LCAzMzcyNiwgMzM3MzYsIDMzNzQzLCAzMzc1MCwgMzM3NTcsIAotICAgIDMzNzY3LCAzMzc3MiwgMzM3ODAsIDMzNzg2LCAzMzc5NCwgMzM4MDMsIDMzODA4LCAzMzgxNSwgMzM4MjEsIDMzODI2LCAwLCAKLSAgICAzMzgzMSwgMzM4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDMzODQ0LCAzMzg0OSwgMzM4NTUsIDMzODYyLCAzMzg3MCwgMzM4NzYsIAotICAgIDMzODgyLCAzMzg4OCwgMzM4OTMsIDMzOTAwLCAzMzkwNiwgMzM5MTIsIDMzOTE4LCAzMzkyNiwgMzM5MzIsIDMzOTQwLCAKLSAgICAzMzk0NSwgMzM5NTEsIDMzOTU3LCAzMzk2NCwgMzM5NzIsIDMzOTc5LCAzMzk4NSwgMzM5OTIsIDMzOTk5LCAzNDAwNSwgCi0gICAgMzQwMTIsIDM0MDE5LCAzNDAyNSwgMzQwMzAsIDM0MDM2LCAzNDA0NCwgMzQwNTMsIDM0MDU5LCAzNDA2NSwgMzQwNzEsIAotICAgIDM0MDc3LCAzNDA4NSwgMzQwODksIDM0MDk1LCAzNDEwMSwgMzQxMDcsIDM0MTEzLCAzNDExOSwgMzQxMjUsIDM0MTI5LCAKLSAgICAzNDEzNCwgMzQxMzksIDM0MTQ2LCAzNDE1MSwgMzQxNTUsIDM0MTYxLCAzNDE2NiwgMzQxNzEsIDM0MTc1LCAzNDE4MCwgCi0gICAgMzQxODUsIDM0MTg5LCAzNDE5NCwgMzQxOTksIDM0MjA2LCAzNDIxMCwgMzQyMTUsIDM0MjIwLCAzNDIyNCwgMzQyMjksIAotICAgIDM0MjMzLCAzNDIzOCwgMzQyNDIsIDM0MjQ4LCAzNDI1MywgMzQyNjAsIDM0MjY1LCAzNDI3MCwgMzQyNzQsIDM0Mjc5LCAKLSAgICAzNDI4NCwgMzQyOTEsIDM0Mjk2LCAzNDMwMiwgMzQzMDcsIDM0MzEyLCAzNDMxNywgMzQzMjEsIDM0MzI2LCAzNDMzMywgCi0gICAgMzQzNDAsIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzYwLCAzNDM2NywgMzQzNzIsIDM0Mzc3LCAzNDM4MiwgMzQzODgsIAotICAgIDM0MzkzLCAzNDM5OSwgMzQ0MDQsIDM0NDEwLCAzNDQxNiwgMzQ0MjIsIDM0NDI5LCAzNDQzNiwgMzQ0NDMsIDM0NDUwLCAKLSAgICAzNDQ1NywgMzQ0NjQsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwNCwgMzQ1MTMsIDM0NTIyLCAzNDUzMSwgCi0gICAgMzQ1NDMsIDM0NTUyLCAzNDU2MSwgMzQ1NzAsIDM0NTc3LCAzNDU4MiwgMzQ1ODksIDM0NTk3LCAzNDYwNSwgMzQ2MTIsIAotICAgIDM0NjE5LCAzNDYyNiwgMzQ2MzMsIDM0NjQxLCAzNDY1MCwgMzQ2NTksIDM0NjY4LCAzNDY3NywgMzQ2ODYsIDM0Njk1LCAKLSAgICAzNDcwNCwgMzQ3MTMsIDM0NzIyLCAzNDczMSwgMzQ3NDAsIDM0NzQ5LCAzNDc1OCwgMzQ3NjcsIDM0Nzc1LCAzNDc4NCwgCi0gICAgMzQ3OTUsIDM0ODAzLCAzNDgxMiwgMzQ4MjMsIDM0ODMyLCAzNDg0MSwgMzQ4NTAsIDM0ODU5LCAzNDg2NywgMzQ4NzYsIAotICAgIDM0ODgzLCAzNDg4OCwgMzQ4OTYsIDM0OTAxLCAzNDkwOCwgMzQ5MTMsIDM0OTIyLCAzNDkyOCwgMzQ5MzUsIDM0OTQyLCAKLSAgICAzNDk0NywgMzQ5NTIsIDM0OTYwLCAzNDk2OCwgMzQ5NzcsIDM0OTg2LCAzNDk5MSwgMzQ5OTgsIDM1MDA5LCAzNTAxNywgCi0gICAgMzUwMjYsIDM1MDMyLCAzNTAzOCwgMzUwNDMsIDM1MDUwLCAzNTA1NSwgMzUwNjQsIDM1MDY5LCAzNTA3NCwgMzUwNzksIAotICAgIDM1MDg2LCAzNTA5MywgMzUwOTgsIDM1MTA3LCAzNTExNSwgMzUxMjAsIDM1MTI1LCAzNTEzMiwgMzUxMzksIDM1MTQzLCAKLSAgICAzNTE0NywgMzUxNTAsIDM1MTUzLCAzNTE1NiwgMzUxNTksIDM1MTYyLCAzNTE2NSwgMzUxNzIsIDM1MTc1LCAzNTE3OCwgCi0gICAgMzUxODMsIDM1MTg3LCAzNTE5MSwgMzUxOTUsIDM1MTk5LCAzNTIwMywgMzUyMTIsIDM1MjE4LCAzNTIyNCwgMzUyMzAsIAotICAgIDM1MjM4LCAzNTI0NiwgMzUyNTIsIDM1MjU4LCAzNTI2NSwgMzUyNzEsIDM1Mjc2LCAzNTI4MiwgMzUyODksIDM1Mjk1LCAKLSAgICAzNTMwMiwgMzUzMDgsIDM1MzE2LCAzNTMyMSwgMzUzMjcsIDM1MzMzLCAzNTMzOSwgMzUzNDUsIDM1MzUxLCAzNTM1NywgCi0gICAgMzUzNjMsIDM1Mzc0LCAzNTM4NCwgMzUzOTAsIDM1Mzk2LCAzNTQwNiwgMzU0MTIsIDM1NDIwLCAzNTQyOCwgMzU0MzYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM1NDQxLCAzNTQ0OCwgMzU0NTUsIDM1NDYwLCAzNTQ2OSwgMzU0NzcsIDM1NDg1LCAzNTQ5MiwgCi0gICAgMzU0OTksIDM1NTA2LCAzNTUxMywgMzU1MjEsIDM1NTI5LCAzNTUzOSwgMzU1NDksIDM1NTU3LCAzNTU2NSwgMzU1NzMsIAotICAgIDM1NTgxLCAzNTU5MCwgMzU1OTksIDM1NjA3LCAzNTYxNSwgMzU2MjQsIDM1NjMzLCAzNTY0MywgMzU2NTMsIDM1NjYyLCAKLSAgICAzNTY3MSwgMzU2NzksIDM1Njg3LCAzNTY5NSwgMzU3MDMsIDM1NzEzLCAzNTcyMywgMzU3MzEsIDM1NzM5LCAzNTc0NywgCi0gICAgMzU3NTUsIDM1NzYzLCAzNTc3MSwgMzU3NzksIDM1Nzg3LCAzNTc5NSwgMzU4MDMsIDM1ODExLCAzNTgxOSwgMzU4MjgsIAotICAgIDM1ODM3LCAzNTg0NiwgMzU4NTUsIDM1ODY1LCAzNTg3NSwgMzU4ODIsIDM1ODg5LCAzNTg5NywgMzU5MDUsIDM1OTE0LCAKLSAgICAzNTkyMywgMzU5MzEsIDM1OTM5LCAzNTk1MSwgMzU5NjMsIDM1OTcyLCAzNTk4MSwgMzU5OTAsIDM1OTk5LCAzNjAwNiwgCi0gICAgMzYwMTMsIDM2MDIxLCAzNjAyOSwgMzYwMzcsIDM2MDQ1LCAzNjA1MywgMzYwNjEsIDM2MDY5LCAzNjA3NywgMzYwODYsIAotICAgIDM2MDk1LCAzNjEwNCwgMzYxMTMsIDM2MTIyLCAzNjEzMSwgMzYxNDEsIDM2MTUxLCAzNjE2MSwgMzYxNzEsIDM2MTgwLCAKLSAgICAzNjE4OSwgMzYxOTYsIDM2MjAzLCAzNjIxMSwgMzYyMTksIDM2MjI3LCAzNjIzNSwgMzYyNDMsIDM2MjUxLCAzNjI2MywgCi0gICAgMzYyNzUsIDM2Mjg0LCAzNjI5MywgMzYzMDEsIDM2MzA5LCAzNjMxNywgMzYzMjUsIDM2MzM2LCAzNjM0NywgMzYzNTgsIAotICAgIDM2MzY5LCAzNjM4MSwgMzYzOTMsIDM2NDAxLCAzNjQwOSwgMzY0MTcsIDM2NDI1LCAzNjQzNCwgMzY0NDMsIDM2NDUyLCAKLSAgICAzNjQ2MSwgMzY0NjksIDM2NDc3LCAzNjQ4NSwgMzY0OTMsIDM2NTAxLCAzNjUwOSwgMzY1MTgsIDM2NTI3LCAzNjUzNywgCi0gICAgMzY1NDcsIDM2NTU1LCAzNjU2MywgMzY1NzEsIDM2NTc5LCAzNjU4NywgMzY1OTUsIDM2NjAyLCAzNjYwOSwgMzY2MTcsIAotICAgIDM2NjI1LCAzNjYzMywgMzY2NDEsIDM2NjQ5LCAzNjY1NywgMzY2NjUsIDM2NjczLCAzNjY4MSwgMzY2ODksIDM2Njk3LCAKLSAgICAzNjcwNSwgMzY3MTMsIDM2NzIxLCAzNjcyOSwgMzY3MzcsIDM2NzQ2LCAzNjc1NSwgMzY3NjQsIDM2NzcyLCAzNjc4MSwgCi0gICAgMzY3OTAsIDM2Nzk5LCAzNjgwOCwgMzY4MTgsIDM2ODI3LCAzNjgzMywgMzY4MzgsIDM2ODQ1LCAzNjg1MiwgMzY4NjAsIAotICAgIDM2ODY4LCAzNjg3NywgMzY4ODYsIDM2ODk2LCAzNjkwNiwgMzY5MTcsIDM2OTI4LCAzNjkzOCwgMzY5NDgsIDM2OTU4LCAKLSAgICAzNjk2OCwgMzY5NzcsIDM2OTg2LCAzNjk5NiwgMzcwMDYsIDM3MDE3LCAzNzAyOCwgMzcwMzgsIDM3MDQ4LCAzNzA1OCwgCi0gICAgMzcwNjgsIDM3MDc1LCAzNzA4MiwgMzcwOTAsIDM3MDk4LCAzNzEwNSwgMzcxMTIsIDM3MTIxLCAzNzEzMCwgMzcxNDAsIAotICAgIDM3MTUwLCAzNzE2MSwgMzcxNzIsIDM3MTgyLCAzNzE5MiwgMzcyMDIsIDM3MjEyLCAzNzIyMSwgMzcyMzAsIDM3MjM4LCAKLSAgICAzNzI0NiwgMzcyNTMsIDM3MjYwLCAzNzI2OCwgMzcyNzYsIDM3Mjg1LCAzNzI5NCwgMzczMDQsIDM3MzE0LCAzNzMyNSwgCi0gICAgMzczMzYsIDM3MzQ2LCAzNzM1NiwgMzczNjYsIDM3Mzc2LCAzNzM4NSwgMzczOTQsIDM3NDA0LCAzNzQxNCwgMzc0MjUsIAotICAgIDM3NDM2LCAzNzQ0NiwgMzc0NTYsIDM3NDY2LCAzNzQ3NiwgMzc0ODMsIDM3NDkwLCAzNzQ5OCwgMzc1MDYsIDM3NTE1LCAKLSAgICAzNzUyNCwgMzc1MzQsIDM3NTQ0LCAzNzU1NSwgMzc1NjYsIDM3NTc2LCAzNzU4NiwgMzc1OTYsIDM3NjA2LCAzNzYxNCwgCi0gICAgMzc2MjIsIDM3NjMwLCAzNzYzOCwgMzc2NDcsIDM3NjU2LCAzNzY2NCwgMzc2NzIsIDM3Njc5LCAzNzY4NiwgMzc2OTMsIAotICAgIDM3NzAwLCAzNzcwOCwgMzc3MTYsIDM3NzI0LCAzNzczMiwgMzc3NDMsIDM3NzU0LCAzNzc2NSwgMzc3NzYsIDM3Nzg3LCAKLSAgICAzNzc5OCwgMzc4MDYsIDM3ODE0LCAzNzgyNSwgMzc4MzYsIDM3ODQ3LCAzNzg1OCwgMzc4NjksIDM3ODgwLCAzNzg4OCwgCi0gICAgMzc4OTYsIDM3OTA3LCAzNzkxOCwgMzc5MjksIDAsIDAsIDM3OTQwLCAzNzk0OCwgMzc5NTYsIDM3OTY3LCAzNzk3OCwgCi0gICAgMzc5ODksIDAsIDAsIDM4MDAwLCAzODAwOCwgMzgwMTYsIDM4MDI3LCAzODAzOCwgMzgwNDksIDM4MDYwLCAzODA3MSwgCi0gICAgMzgwODIsIDM4MDkwLCAzODA5OCwgMzgxMDksIDM4MTIwLCAzODEzMSwgMzgxNDIsIDM4MTUzLCAzODE2NCwgMzgxNzIsIAotICAgIDM4MTgwLCAzODE5MSwgMzgyMDIsIDM4MjEzLCAzODIyNCwgMzgyMzUsIDM4MjQ2LCAzODI1NCwgMzgyNjIsIDM4MjczLCAKLSAgICAzODI4NCwgMzgyOTUsIDM4MzA2LCAzODMxNywgMzgzMjgsIDM4MzM2LCAzODM0NCwgMzgzNTUsIDM4MzY2LCAzODM3NywgMCwgCi0gICAgMCwgMzgzODgsIDM4Mzk2LCAzODQwNCwgMzg0MTUsIDM4NDI2LCAzODQzNywgMCwgMCwgMzg0NDgsIDM4NDU2LCAzODQ2NCwgCi0gICAgMzg0NzUsIDM4NDg2LCAzODQ5NywgMzg1MDgsIDM4NTE5LCAwLCAzODUzMCwgMCwgMzg1MzgsIDAsIDM4NTQ5LCAwLCAKLSAgICAzODU2MCwgMzg1NzEsIDM4NTc5LCAzODU4NywgMzg1OTgsIDM4NjA5LCAzODYyMCwgMzg2MzEsIDM4NjQyLCAzODY1MywgCi0gICAgMzg2NjEsIDM4NjY5LCAzODY4MCwgMzg2OTEsIDM4NzAyLCAzODcxMywgMzg3MjQsIDM4NzM1LCAzODc0MywgMzg3NTEsIAotICAgIDM4NzU5LCAzODc2NywgMzg3NzUsIDM4NzgzLCAzODc5MSwgMzg3OTksIDM4ODA3LCAzODgxNSwgMzg4MjMsIDM4ODMxLCAKLSAgICAzODgzOSwgMCwgMCwgMzg4NDcsIDM4ODU4LCAzODg2OSwgMzg4ODMsIDM4ODk3LCAzODkxMSwgMzg5MjUsIDM4OTM5LCAKLSAgICAzODk1MywgMzg5NjQsIDM4OTc1LCAzODk4OSwgMzkwMDMsIDM5MDE3LCAzOTAzMSwgMzkwNDUsIDM5MDU5LCAzOTA3MCwgCi0gICAgMzkwODEsIDM5MDk1LCAzOTEwOSwgMzkxMjMsIDM5MTM3LCAzOTE1MSwgMzkxNjUsIDM5MTc2LCAzOTE4NywgMzkyMDEsIAotICAgIDM5MjE1LCAzOTIyOSwgMzkyNDMsIDM5MjU3LCAzOTI3MSwgMzkyODIsIDM5MjkzLCAzOTMwNywgMzkzMjEsIDM5MzM1LCAKLSAgICAzOTM0OSwgMzkzNjMsIDM5Mzc3LCAzOTM4OCwgMzkzOTksIDM5NDEzLCAzOTQyNywgMzk0NDEsIDM5NDU1LCAzOTQ2OSwgCi0gICAgMzk0ODMsIDM5NDkxLCAzOTQ5OSwgMzk1MTAsIDM5NTE4LCAwLCAzOTUyOSwgMzk1MzcsIDM5NTQ4LCAzOTU1NiwgMzk1NjQsIAotICAgIDM5NTcyLCAzOTU4MCwgMzk1ODgsIDM5NTkxLCAzOTU5NCwgMzk1OTcsIDM5NjAwLCAzOTYwNiwgMzk2MTcsIDM5NjI1LCAwLCAKLSAgICAzOTYzNiwgMzk2NDQsIDM5NjU1LCAzOTY2MywgMzk2NzEsIDM5Njc5LCAzOTY4NywgMzk2OTUsIDM5NzAxLCAzOTcwNywgCi0gICAgMzk3MTMsIDM5NzIxLCAzOTcyOSwgMzk3NDAsIDAsIDAsIDM5NzUxLCAzOTc1OSwgMzk3NzAsIDM5Nzc4LCAzOTc4NiwgCi0gICAgMzk3OTQsIDAsIDM5ODAyLCAzOTgwOCwgMzk4MTQsIDM5ODIwLCAzOTgyOCwgMzk4MzYsIDM5ODQ3LCAzOTg1OCwgMzk4NjYsIAotICAgIDM5ODc0LCAzOTg4MiwgMzk4OTMsIDM5OTAxLCAzOTkwOSwgMzk5MTcsIDM5OTI1LCAzOTkzMywgMzk5MzksIDM5OTQ1LCAwLCAKLSAgICAwLCAzOTk0OCwgMzk5NTksIDM5OTY3LCAwLCAzOTk3OCwgMzk5ODYsIDM5OTk3LCA0MDAwNSwgNDAwMTMsIDQwMDIxLCAKLSAgICA0MDAyOSwgNDAwMzcsIDQwMDQwLCAwLCA0MDA0MywgNDAwNDcsIDQwMDUxLCA0MDA1NSwgNDAwNTksIDQwMDYzLCA0MDA2NywgCi0gICAgNDAwNzEsIDQwMDc1LCA0MDA3OSwgNDAwODMsIDQwMDg3LCA0MDA5MywgNDAwOTksIDQwMTA1LCA0MDEwOCwgNDAxMTEsIAotICAgIDQwMTEzLCA0MDExNywgNDAxMjEsIDQwMTI1LCA0MDEyOSwgNDAxMzIsIDQwMTM2LCA0MDE0MCwgNDAxNDYsIDQwMTUyLCAKLSAgICA0MDE1OSwgNDAxNjYsIDQwMTcxLCA0MDE3NiwgNDAxODIsIDQwMTg4LCA0MDE5MCwgNDAxOTMsIDQwMTk1LCA0MDE5OSwgCi0gICAgNDAyMDMsIDQwMjA3LCA0MDIxMSwgNDAyMTUsIDQwMjE5LCA0MDIyMywgNDAyMjcsIDQwMjMxLCA0MDIzNywgNDAyNDEsIAotICAgIDQwMjQ1LCA0MDI1MSwgNDAyNTYsIDQwMjYzLCA0MDI2NSwgNDAyNjgsIDQwMjcyLCA0MDI3NiwgNDAyODEsIDQwMjg3LCAKLSAgICA0MDI4OSwgNDAyOTgsIDQwMzA3LCA0MDMxMCwgNDAzMTQsIDQwMzE2LCA0MDMxOCwgNDAzMjAsIDQwMzIzLCA0MDMyOSwgCi0gICAgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNDAzNDYsIDQwMzUzLCA0MDM1NywgNDAzNjIsIDQwMzY3LCA0MDM3MiwgNDAzNzcsIAotICAgIDQwMzgxLCA0MDM4NSwgNDAzODgsIDQwMzkyLCA0MDM5NiwgNDA0MDMsIDQwNDA4LCA0MDQxMiwgNDA0MTYsIDQwNDIxLCAKLSAgICA0MDQyNSwgNDA0MjksIDQwNDM0LCA0MDQzOSwgNDA0NDMsIDQwNDQ3LCA0MDQ1MSwgNDA0NTMsIDQwNDU4LCA0MDQ2MywgCi0gICAgNDA0NjcsIDQwNDcxLCA0MDQ3NSwgNDA0NzksIDAsIDQwNDgzLCA0MDQ4NywgNDA0OTEsIDQwNDk3LCA0MDUwMywgNDA1MDksIAotICAgIDQwNTE1LCA0MDUyMiwgNDA1MjksIDQwNTM0LCA0MDUzOSwgNDA1NDMsIDAsIDAsIDQwNTQ5LCA0MDU1MiwgNDA1NTUsIAotICAgIDQwNTU4LCA0MDU2MiwgNDA1NjUsIDQwNTY5LCA0MDU3MywgNDA1NzcsIDQwNTgyLCA0MDU4NywgNDA1OTIsIDQwNTk5LCAKLSAgICA0MDYwMywgNDA2MDYsIDQwNjA5LCA0MDYxMiwgNDA2MTUsIDQwNjE4LCA0MDYyMSwgNDA2MjUsIDQwNjI4LCA0MDYzMiwgCi0gICAgNDA2MzYsIDQwNjQwLCA0MDY0NSwgNDA2NTAsIDAsIDQwNjU1LCA0MDY2MSwgNDA2NjcsIDQwNjczLCA0MDY4MCwgNDA2ODcsIAotICAgIDQwNjk0LCA0MDcwMSwgNDA3MDcsIDQwNzE0LCA0MDcyMSwgNDA3MjgsIDQwNzM0LCAwLCAwLCAwLCA0MDc0MSwgNDA3NDQsIAotICAgIDQwNzQ3LCA0MDc1MCwgNDA3NTUsIDQwNzU4LCA0MDc2MSwgNDA3NjQsIDQwNzY3LCA0MDc3MCwgNDA3NzMsIDQwNzc4LCAKLSAgICA0MDc4MSwgNDA3ODQsIDQwNzg3LCA0MDc5MCwgNDA3OTMsIDQwNzk4LCA0MDgwMSwgNDA4MDQsIDQwODA3LCA0MDgxMCwgCi0gICAgNDA4MTMsIDQwODE4LCA0MDgyMSwgNDA4MjQsIDQwODI5LCA0MDgzNCwgNDA4MzgsIDQwODQxLCA0MDg0NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4NDcsIDQwODUyLCA0MDg1NywgNDA4NjQsIAotICAgIDQwODcyLCA0MDg3NywgNDA4ODIsIDQwODg2LCA0MDg5MCwgNDA4OTUsIDQwOTAyLCA0MDkwOSwgNDA5MTMsIDQwOTE4LCAKLSAgICA0MDkyMywgNDA5MjgsIDQwOTMzLCA0MDk0MCwgNDA5NDUsIDQwOTUwLCA0MDk1NSwgNDA5NjQsIDQwOTcxLCA0MDk3OCwgCi0gICAgNDA5ODIsIDQwOTg3LCA0MDk5MywgNDA5OTgsIDQxMDA1LCA0MTAxMywgNDEwMjEsIDQxMDI1LCA0MTAyOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMzMsIDQxMDM3LCA0MTA0NSwgNDEwNDksIDQxMDUzLCAKLSAgICA0MTA1OCwgNDEwNjIsIDQxMDY2LCA0MTA3MCwgNDEwNzIsIDQxMDc2LCA0MTA4MCwgNDEwODQsIDQxMDg5LCA0MTA5MywgCi0gICAgNDEwOTcsIDQxMTA1LCA0MTEwOCwgNDExMTIsIDQxMTE1LCA0MTExOCwgNDExMjQsIDQxMTI4LCA0MTEzMSwgNDExMzcsIAotICAgIDQxMTQxLCA0MTE0NSwgNDExNDksIDQxMTUyLCA0MTE1NiwgNDExNTksIDQxMTYzLCA0MTE2NSwgNDExNjgsIDQxMTcxLCAKLSAgICA0MTE3NSwgNDExNzcsIDQxMTgxLCA0MTE4NCwgNDExODcsIDQxMTkyLCA0MTE5NywgNDEyMDQsIDQxMjA3LCA0MTIxMCwgCi0gICAgNDEyMTQsIDQxMjE5LCA0MTIyMiwgNDEyMjUsIDQxMjI4LCA0MTIzMiwgNDEyMzcsIDQxMjQxLCA0MTI0NCwgNDEyNDYsIAotICAgIDQxMjQ5LCA0MTI1MiwgNDEyNTUsIDQxMjU5LCA0MTI2NCwgNDEyNjcsIDQxMjcxLCA0MTI3NSwgNDEyNzksIDQxMjgzLCAKLSAgICA0MTI4OCwgNDEyOTQsIDQxMjk5LCA0MTMwNCwgNDEzMTAsIDQxMzE1LCA0MTMyMCwgNDEzMjQsIDQxMzI4LCA0MTMzMywgCi0gICAgNDEzMzcsIDQxMzQxLCA0MTM0NCwgNDEzNDYsIDQxMzUxLCA0MTM1NywgNDEzNjQsIDQxMzcxLCA0MTM3OCwgNDEzODUsIAotICAgIDQxMzkyLCA0MTM5OSwgNDE0MDYsIDQxNDEzLCA0MTQyMSwgNDE0MjgsIDQxNDM2LCA0MTQ0MywgNDE0NTAsIDQxNDU4LCAKLSAgICA0MTQ2NiwgNDE0NzEsIDQxNDc2LCA0MTQ4MSwgNDE0ODYsIDQxNDkxLCA0MTQ5NiwgNDE1MDEsIDQxNTA3LCA0MTUxMiwgCi0gICAgNDE1MTgsIDQxNTI0LCA0MTUzMCwgNDE1MzYsIDQxNTQyLCA0MTU0OSwgNDE1NTcsIDQxNTY0LCA0MTU3MCwgNDE1NzYsIAotICAgIDQxNTgyLCA0MTU4OCwgNDE1OTQsIDQxNjAwLCA0MTYwNywgNDE2MTMsIDQxNjIwLCA0MTYyNywgNDE2MzQsIDQxNjQxLCAKLSAgICA0MTY0OCwgNDE2NTYsIDQxNjY1LCA0MTY3MywgNDE2ODQsIDQxNjkyLCA0MTcwMCwgNDE3MDksIDQxNzE2LCA0MTcyNSwgCi0gICAgNDE3MzQsIDQxNzQyLCA0MTc1MSwgNDE3NTksIDQxNzYzLCAwLCAwLCAwLCAwLCA0MTc2NywgNDE3NjksIDQxNzcxLCAKLSAgICA0MTc3MywgNDE3NzUsIDQxNzc4LCA0MTc4MSwgNDE3ODUsIDQxNzg5LCA0MTc5NCwgNDE3OTksIDQxODAzLCA0MTgwNywgCi0gICAgNDE4MTEsIDQxODE1LCA0MTgyMCwgNDE4MjUsIDQxODMwLCA0MTgzNSwgNDE4NDAsIDQxODQ1LCA0MTg1MCwgNDE4NTUsIAotICAgIDQxODYwLCA0MTg2NSwgNDE4NzEsIDQxODc1LCA0MTg3OSwgNDE4ODQsIDQxODg5LCA0MTg5NCwgNDE4OTksIDQxOTAzLCAKLSAgICA0MTkxMCwgNDE5MTcsIDQxOTI0LCA0MTkzMSwgNDE5MzgsIDQxOTQ1LCA0MTk1MiwgNDE5NTksIDQxOTY3LCA0MTk3OSwgCi0gICAgNDE5ODUsIDQxOTkxLCA0MTk5OCwgNDIwMDUsIDQyMDEyLCA0MjAxOSwgNDIwMjYsIDQyMDMzLCA0MjA0MCwgNDIwNDcsIAotICAgIDQyMDUyLCA0MjA1OCwgNDIwNjMsIDQyMDY4LCA0MjA3MywgNDIwNzgsIDQyMDgzLCA0MjA5MCwgNDIwOTcsIDQyMTAyLCAKLSAgICA0MjEwOCwgNDIxMTMsIDQyMTE2LCA0MjExOSwgNDIxMjIsIDQyMTI1LCA0MjEyOSwgNDIxMzMsIDQyMTM4LCA0MjE0MywgCi0gICAgNDIxNDksIDQyMTU1LCA0MjE1OSwgNDIxNjMsIDQyMTY3LCA0MjE3MSwgNDIxNzYsIDQyMTgxLCA0MjE4NSwgNDIxODksIAotICAgIDQyMTkzLCA0MjE5NywgNDIyMDIsIDQyMjA3LCA0MjIxMCwgNDIyMTMsIDQyMjE2LCA0MjIxOSwgNDIyMjUsIDQyMjMyLCAKLSAgICA0MjI0MywgNDIyNTMsIDQyMjU3LCA0MjI2NSwgNDIyNzIsIDQyMjgwLCA0MjI4OSwgNDIyOTMsIDQyMjk5LCA0MjMwNSwgCi0gICAgNDIzMDksIDQyMzE0LCA0MjMxOSwgNDIzMjUsIDQyMzMxLCA0MjMzNywgNDIzNDQsIDQyMzQ4LCA0MjM1MiwgNDIzNTcsIAotICAgIDQyMzYwLCA0MjM2MiwgNDIzNjYsIDQyMzcwLCA0MjM3OCwgNDIzODIsIDQyMzg0LCA0MjM4NiwgNDIzOTAsIDQyMzk4LCAKLSAgICA0MjQwMywgNDI0MDksIDQyNDE5LCA0MjQyNiwgNDI0MzEsIDQyNDM1LCA0MjQzOSwgNDI0NDMsIDQyNDQ2LCA0MjQ0OSwgCi0gICAgNDI0NTIsIDQyNDU2LCA0MjQ2MCwgNDI0NjQsIDQyNDY4LCA0MjQ3MiwgNDI0NzUsIDQyNDc5LCA0MjQ4MywgNDI0ODYsIAotICAgIDQyNDg4LCA0MjQ5MSwgNDI0OTMsIDQyNDk3LCA0MjUwMSwgNDI1MDMsIDQyNTA5LCA0MjUxMiwgNDI1MTcsIDQyNTIxLCAKLSAgICA0MjUyNSwgNDI1MjcsIDQyNTI5LCA0MjUzMSwgNDI1MzQsIDQyNTM4LCA0MjU0MiwgNDI1NDYsIDQyNTUwLCA0MjU1NCwgCi0gICAgNDI1NjAsIDQyNTY2LCA0MjU2OCwgNDI1NzAsIDQyNTcyLCA0MjU3NCwgNDI1NzcsIDQyNTc5LCA0MjU4MywgNDI1ODUsIAotICAgIDQyNTg5LCA0MjU5MywgNDI1OTgsIDQyNjAyLCA0MjYwNiwgNDI2MTAsIDQyNjE0LCA0MjYxOCwgNDI2MjQsIDQyNjI4LCAKLSAgICA0MjYzOCwgNDI2NDgsIDQyNjUyLCA0MjY1OCwgNDI2NjUsIDQyNjY5LCA0MjY3MywgNDI2NzYsIDQyNjgxLCA0MjY4NSwgCi0gICAgNDI2OTEsIDQyNjk1LCA0MjcwOCwgNDI3MTcsIDQyNzIxLCA0MjcyNSwgNDI3MzEsIDQyNzM1LCA0MjczOCwgNDI3NDAsIAotICAgIDQyNzQzLCA0Mjc0NywgNDI3NTEsIDQyNzU4LCA0Mjc2MiwgNDI3NjYsIDQyNzcwLCA0Mjc3MywgNDI3NzgsIDQyNzgzLCAKLSAgICA0Mjc4OSwgNDI3OTUsIDQyODAwLCA0MjgwNSwgNDI4MTMsIDQyODIxLCA0MjgyNSwgNDI4MjksIDQyODMxLCA0MjgzNiwgCi0gICAgNDI4NDAsIDQyODQ0LCA0Mjg1MiwgNDI4NjAsIDQyODY3LCA0Mjg3NCwgNDI4ODMsIDQyODkyLCA0Mjg5OCwgNDI5MDQsIAotICAgIDQyOTEyLCA0MjkyMCwgNDI5MjIsIDQyOTI0LCA0MjkzMCwgNDI5MzYsIDQyOTQzLCA0Mjk1MCwgNDI5NTYsIDQyOTYyLCAKLSAgICA0Mjk2NiwgNDI5NzAsIDQyOTc3LCA0Mjk4NCwgNDI5OTEsIDQyOTk4LCA0MzAwOCwgNDMwMTgsIDQzMDI2LCA0MzAzNCwgCi0gICAgNDMwMzYsIDQzMDQwLCA0MzA0NCwgNDMwNDksIDQzMDU0LCA0MzA2MiwgNDMwNzAsIDQzMDczLCA0MzA3NiwgNDMwNzksIAotICAgIDQzMDgyLCA0MzA4NSwgNDMwOTAsIDQzMDk0LCA0MzA5OSwgNDMxMDQsIDQzMTA3LCA0MzExMCwgNDMxMTMsIDQzMTE2LCAKLSAgICA0MzExOSwgNDMxMjMsIDQzMTI2LCA0MzEyOSwgNDMxMzIsIDQzMTM1LCA0MzEzNywgNDMxMzksIDQzMTQxLCA0MzE0MywgCi0gICAgNDMxNTEsIDQzMTU5LCA0MzE2NSwgNDMxNjksIDQzMTc1LCA0MzE4NSwgNDMxOTEsIDQzMTk3LCA0MzIwMywgNDMyMTEsIAotICAgIDQzMjIwLCA0MzIzMiwgNDMyMzYsIDQzMjQwLCA0MzI0MiwgNDMyNDgsIDQzMjUwLCA0MzI1MiwgNDMyNTQsIDQzMjU2LCAKLSAgICA0MzI2MiwgNDMyNjUsIDQzMjcxLCA0MzI3NywgNDMyODEsIDQzMjg1LCA0MzI4OSwgNDMyOTIsIDQzMjk2LCA0MzMwMCwgCi0gICAgNDMzMDIsIDQzMzExLCA0MzMyMCwgNDMzMjUsIDQzMzMwLCA0MzMzNiwgNDMzNDIsIDQzMzQ4LCA0MzM1MSwgNDMzNTQsIAotICAgIDQzMzU3LCA0MzM2MCwgNDMzNjIsIDQzMzY3LCA0MzM3MiwgNDMzNzcsIDQzMzgzLCA0MzM4OSwgNDMzOTgsIDQzNDA3LCAKLSAgICA0MzQxNCwgNDM0MjEsIDQzNDI4LCA0MzQzNSwgNDM0NDUsIDQzNDU1LCA0MzQ2NSwgNDM0NzUsIDQzNDg1LCA0MzQ5NSwgCi0gICAgNDM1MDQsIDQzNTEzLCA0MzUyMiwgNDM1MzEsIDQzNTM5LCA0MzU1MSwgNDM1NjIsIDQzNTc4LCA0MzU4MSwgNDM1ODcsIAotICAgIDQzNTkzLCA0MzU5OSwgNDM2MDcsIDQzNjIyLCA0MzYzOCwgNDM2NDQsIDQzNjUwLCA0MzY1NywgNDM2NjMsIDQzNjcyLCAKLSAgICA0MzY3OSwgNDM2OTMsIDQzNzA4LCA0MzcxMywgNDM3MTksIDQzNzI3LCA0MzczMCwgNDM3MzMsIDQzNzM1LCA0MzczOCwgCi0gICAgNDM3NDEsIDQzNzQzLCA0Mzc0NSwgNDM3NDksIDQzNzUyLCA0Mzc1NSwgNDM3NTgsIDQzNzYxLCA0Mzc2NiwgNDM3NzEsIAotICAgIDQzNzc2LCA0Mzc4MSwgNDM3ODYsIDQzNzg5LCA0Mzc5MSwgNDM3OTMsIDQzNzk1LCA0Mzc5OSwgNDM4MDMsIDQzODA3LCAKLSAgICA0MzgxMywgNDM4MTgsIDQzODIwLCA0MzgyMiwgNDM4MjcsIDQzODMyLCA0MzgzNywgNDM4NDIsIDQzODQ3LCA0Mzg1MiwgCi0gICAgNDM4NTQsIDQzODU2LCA0Mzg2NiwgNDM4NzAsIDQzODc4LCA0Mzg4NywgNDM4ODksIDQzODk0LCA0Mzg5OSwgNDM5MDcsIAotICAgIDQzOTExLCA0MzkxMywgNDM5MTcsIDQzOTE5LCA0MzkyMywgNDM5MjcsIDQzOTMxLCA0MzkzMywgNDM5MzUsIDQzOTM3LCAKLSAgICA0Mzk0NCwgNDM5NTMsIDQzOTYyLCA0Mzk3MSwgNDM5ODAsIDQzOTg5LCA0Mzk5OCwgNDQwMDcsIDQ0MDE2LCA0NDAyNCwgCi0gICAgNDQwMzIsIDQ0MDQxLCA0NDA1MCwgNDQwNTksIDQ0MDY4LCA0NDA3NiwgNDQwODQsIDQ0MDkzLCA0NDEwMiwgNDQxMTEsIAotICAgIDQ0MTIxLCA0NDEzMCwgNDQxNDAsIDQ0MTQ5LCA0NDE1OSwgNDQxNjcsIDQ0MTc2LCA0NDE4NiwgNDQxOTUsIDQ0MjA1LCAKLSAgICA0NDIxNCwgNDQyMjQsIDQ0MjMyLCA0NDI0MSwgNDQyNTAsIDQ0MjU5LCA0NDI2OCwgNDQyNzcsIDQ0Mjg2LCA0NDI5NiwgCi0gICAgNDQzMDUsIDQ0MzE0LCA0NDMyMywgNDQzMzMsIDQ0MzQyLCA0NDM1MSwgNDQzNjAsIDQ0MzY5LCA0NDM3OSwgNDQzODksIAotICAgIDQ0Mzk4LCA0NDQwNywgNDQ0MTUsIDQ0NDI0LCA0NDQzMSwgNDQ0NDAsIDQ0NDQ5LCA0NDQ2MCwgNDQ0NjksIDQ0NDc5LCAKLSAgICA0NDQ4OSwgNDQ0OTYsIDQ0NTAzLCA0NDUxMCwgNDQ1MTksIDQ0NTI4LCA0NDUzNywgNDQ1NDYsIDQ0NTUzLCA0NDU1OCwgCi0gICAgNDQ1NjYsIDQ0NTcxLCA0NDU3NCwgNDQ1ODEsIDQ0NTg0LCA0NDU4OSwgNDQ1OTQsIDQ0NTk3LCA0NDYwMCwgNDQ2MDgsIAotICAgIDQ0NjExLCA0NDYxNiwgNDQ2MTksIDQ0NjI3LCA0NDYzMiwgNDQ2NDAsIDQ0NjQzLCA0NDY0NiwgNDQ2NDksIDQ0NjU0LCAKLSAgICA0NDY1OSwgNDQ2NjIsIDQ0NjY1LCA0NDY3MywgNDQ2NzYsIDQ0NjgzLCA0NDY5MCwgNDQ2OTQsIDQ0Njk4LCA0NDcwMywgCi0gICAgNDQ3MDgsIDQ0NzE0LCA0NDcxOSwgNDQ3MjUsIDQ0NzMxLCA0NDczNiwgNDQ3NDIsIDQ0NzUwLCA0NDc1NiwgNDQ3NjQsIAotICAgIDQ0NzcyLCA0NDc3OCwgNDQ3ODYsIDQ0Nzk0LCA0NDgwMiwgNDQ4MTAsIDQ0ODE2LCA0NDgyNCwgNDQ4MzIsIDQ0ODQwLCAKLSAgICA0NDg0NCwgNDQ4NTAsIDQ0ODY0LCA0NDg3OCwgNDQ4ODIsIDQ0ODg2LCA0NDg5MCwgNDQ4OTQsIDQ0OTA0LCA0NDkwOCwgCi0gICAgNDQ5MTMsIDQ0OTE4LCA0NDkyNCwgNDQ5MzAsIDQ0OTM2LCA0NDk0MiwgNDQ5NTIsIDQ0OTYyLCA0NDk3MCwgNDQ5ODEsIAotICAgIDQ0OTkyLCA0NTAwMCwgNDUwMTEsIDQ1MDIyLCA0NTAzMCwgNDUwNDEsIDQ1MDUyLCA0NTA2MCwgNDUwNjgsIDQ1MDc4LCAKLSAgICA0NTA4OCwgNDUwOTEsIDQ1MDk0LCA0NTA5NywgNDUxMDIsIDQ1MTA2LCA0NTExMiwgNDUxMTksIDQ1MTI2LCA0NTEzNCwgCi0gICAgNDUxNDEsIDQ1MTQ1LCA0NTE0OSwgNDUxNTMsIDQ1MTU3LCA0NTE1OSwgNDUxNjMsIDQ1MTY3LCA0NTE3MiwgNDUxNzcsIAotICAgIDQ1MTg0LCA0NTE5MSwgNDUxOTQsIDQ1MjAxLCA0NTIwMywgNDUyMDUsIDQ1MjA5LCA0NTIxMywgNDUyMTgsIDQ1MjI0LCAKLSAgICA0NTIzMCwgNDUyMzYsIDQ1MjQyLCA0NTI1MSwgNDUyNjAsIDQ1MjY5LCA0NTI3MywgNDUyNzUsIDQ1Mjc5LCA0NTI4NiwgCi0gICAgNDUyOTMsIDQ1MzAwLCA0NTMwNywgNDUzMTQsIDQ1MzE3LCA0NTMyMiwgMCwgMCwgMCwgMCwgMCwgNDUzMjgsIDQ1MzMyLCAKLSAgICA0NTMzOSwgNDUzNDYsIDQ1MzUzLCA0NTM2MCwgNDUzNjQsIDQ1MzY4LCA0NTM3MiwgNDUzNzYsIDQ1MzgyLCA0NTM4OCwgCi0gICAgNDUzOTMsIDQ1Mzk5LCA0NTQwNSwgNDU0MTEsIDQ1NDE3LCA0NTQyNSwgNDU0MzIsIDQ1NDM5LCA0NTQ0NiwgNDU0NTMsIAotICAgIDQ1NDU4LCA0NTQ2NCwgNDU0NzMsIDQ1NDc3LCA0NTQ4NCwgNDU0ODgsIDQ1NDkyLCA0NTQ5OCwgNDU1MDQsIDQ1NTEwLCAKLSAgICA0NTUxNiwgNDU1MjAsIDQ1NTI0LCA0NTUyNywgNDU1MzAsIDQ1NTM0LCA0NTU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU1NDgsIDQ1NTUxLCA0NTU1NSwgCi0gICAgNDU1NTksIDQ1NTY1LCA0NTU3MSwgNDU1NzcsIDQ1NTg1LCA0NTU5MiwgNDU1OTYsIDQ1NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTYwOSwgNDU2MTIsIDQ1NjE1LCA0NTYxOCwgCi0gICAgNDU2MjEsIDQ1NjI0LCA0NTYyNywgNDU2MzEsIDQ1NjM0LCA0NTYzOCwgNDU2NDIsIDQ1NjQ2LCA0NTY1MCwgNDU2NTQsIAotICAgIDQ1NjU4LCA0NTY2MiwgNDU2NjYsIDQ1NjcwLCA0NTY3NCwgNDU2NzgsIDQ1NjgyLCA0NTY4NSwgNDU2ODgsIDQ1NjkxLCAKLSAgICA0NTY5NCwgNDU2OTcsIDQ1NzAwLCA0NTcwNCwgNDU3MDcsIDQ1NzExLCA0NTcxNSwgNDU3MTksIDQ1NzIzLCA0NTcyNywgCi0gICAgNDU3MzEsIDQ1NzM1LCA0NTczOSwgNDU3NDMsIDQ1NzQ3LCA0NTc1MSwgNDU3NTUsIDQ1NzYxLCA0NTc2NywgNDU3NzMsIAotICAgIDQ1NzgwLCA0NTc4NywgNDU3OTQsIDQ1ODAxLCA0NTgwOCwgNDU4MTUsIDQ1ODIyLCA0NTgyOSwgNDU4MzYsIDQ1ODQzLCAKLSAgICA0NTg1MCwgNDU4NTcsIDQ1ODY0LCA0NTg3MSwgNDU4NzgsIDQ1ODg1LCA0NTg5MiwgNDU4OTcsIDQ1OTAzLCA0NTkwOSwgCi0gICAgNDU5MTUsIDQ1OTIwLCA0NTkyNiwgNDU5MzIsIDQ1OTM4LCA0NTk0MywgNDU5NDksIDQ1OTU1LCA0NTk2MCwgNDU5NjYsIAotICAgIDQ1OTcyLCA0NTk3NywgNDU5ODMsIDQ1OTg5LCA0NTk5NCwgNDU5OTksIDQ2MDA1LCA0NjAxMCwgNDYwMTYsIDQ2MDIyLCAKLSAgICA0NjAyOCwgNDYwMzQsIDQ2MDQwLCA0NjA0NSwgNDYwNTEsIDQ2MDU3LCA0NjA2MywgNDYwNjgsIDQ2MDc0LCA0NjA4MCwgCi0gICAgNDYwODYsIDQ2MDkxLCA0NjA5NywgNDYxMDMsIDQ2MTA4LCA0NjExNCwgNDYxMjAsIDQ2MTI1LCA0NjEzMSwgNDYxMzcsIAotICAgIDQ2MTQyLCA0NjE0NywgNDYxNTMsIDQ2MTU4LCA0NjE2NCwgNDYxNzAsIDQ2MTc2LCA0NjE4MiwgNDYxODgsIDQ2MTkzLCAKLSAgICA0NjE5OSwgNDYyMDUsIDQ2MjExLCA0NjIxNiwgNDYyMjIsIDQ2MjI4LCA0NjIzNCwgNDYyMzksIDQ2MjQ1LCA0NjI1MSwgCi0gICAgNDYyNTYsIDQ2MjYyLCA0NjI2OCwgNDYyNzMsIDQ2Mjc5LCA0NjI4NSwgNDYyOTAsIDQ2Mjk1LCA0NjMwMSwgNDYzMDYsIAotICAgIDQ2MzEyLCA0NjMxOCwgNDYzMjQsIDQ2MzMwLCA0NjMzNiwgNDYzNDAsIDQ2MzQ1LCA0NjM1MCwgNDYzNTUsIDQ2MzYwLCAKLSAgICA0NjM2NSwgNDYzNzAsIDQ2Mzc1LCA0NjM4MCwgNDYzODUsIDQ2MzkwLCA0NjM5NCwgNDYzOTgsIDQ2NDAyLCA0NjQwNiwgCi0gICAgNDY0MTAsIDQ2NDE0LCA0NjQxOSwgNDY0MjMsIDQ2NDI4LCA0NjQzMywgNDY0MzgsIDQ2NDQzLCA0NjQ0OCwgNDY0NTMsIAotICAgIDQ2NDU4LCA0NjQ2NywgNDY0NzYsIDQ2NDg1LCA0NjQ5NCwgNDY1MDMsIDQ2NTEyLCA0NjUyMSwgNDY1MzAsIDQ2NTM3LCAKLSAgICA0NjU0NSwgNDY1NTMsIDQ2NTYwLCA0NjU2NywgNDY1NzUsIDQ2NTgzLCA0NjU5MCwgNDY1OTcsIDQ2NjA1LCA0NjYxMywgCi0gICAgNDY2MjAsIDQ2NjI3LCA0NjYzNSwgNDY2NDMsIDQ2NjUwLCA0NjY1NywgNDY2NjUsIDQ2Njc0LCA0NjY4MywgNDY2OTEsIAotICAgIDQ2NzAwLCA0NjcwOSwgNDY3MTYsIDQ2NzIzLCA0NjczMSwgNDY3NDAsIDQ2NzQ5LCA0Njc1NywgNDY3NjYsIDQ2Nzc1LCAKLSAgICA0Njc4MiwgNDY3ODksIDQ2Nzk4LCA0NjgwNywgNDY4MTYsIDQ2ODI1LCA0NjgzNCwgNDY4NDMsIDQ2ODUwLCA0Njg1NywgCi0gICAgNDY4NjYsIDQ2ODc1LCA0Njg4NCwgNDY4OTMsIDQ2OTAyLCA0NjkxMSwgNDY5MTgsIDQ2OTI1LCA0NjkzNCwgNDY5NDMsIAotICAgIDQ2OTUyLCA0Njk2MiwgNDY5NzIsIDQ2OTgxLCA0Njk5MSwgNDcwMDEsIDQ3MDExLCA0NzAyMSwgNDcwMzEsIDQ3MDQxLCAKLSAgICA0NzA1MCwgNDcwNTksIDQ3MDY2LCA0NzA3NCwgNDcwODIsIDQ3MDkwLCA0NzA5OCwgNDcxMDMsIDQ3MTA4LCA0NzExNywgCi0gICAgNDcxMjUsIDQ3MTMyLCA0NzE0MSwgNDcxNDksIDQ3MTU2LCA0NzE2NSwgNDcxNzMsIDQ3MTgwLCA0NzE4OSwgNDcxOTcsIAotICAgIDQ3MjA0LCA0NzIxMywgNDcyMjEsIDQ3MjI4LCA0NzIzNywgNDcyNDUsIDQ3MjUyLCA0NzI2MiwgNDcyNzEsIDQ3Mjc4LCAKLSAgICA0NzI4OCwgNDcyOTcsIDQ3MzA0LCA0NzMxNCwgNDczMjMsIDQ3MzMwLCA0NzMzOSwgNDczNDgsIDQ3MzU3LCA0NzM2NiwgCi0gICAgNDczODAsIDQ3Mzk0LCA0NzQwMSwgNDc0MDYsIDQ3NDExLCA0NzQxNiwgNDc0MjEsIDQ3NDI2LCA0NzQzMSwgNDc0MzYsIAotICAgIDQ3NDQxLCA0NzQ0OSwgNDc0NTcsIDQ3NDY1LCA0NzQ3MywgNDc0NzgsIDQ3NDg1LCA0NzQ5MiwgNDc0OTksIDQ3NTA0LCAKLSAgICA0NzUxMiwgNDc1MTksIDQ3NTI3LCA0NzUzMSwgNDc1MzgsIDQ3NTQ0LCA0NzU1MSwgNDc1NTUsIDQ3NTYxLCA0NzU2NywgCi0gICAgNDc1NzMsIDQ3NTc3LCA0NzU4MCwgNDc1ODQsIDQ3NTg4LCA0NzU5NSwgNDc2MDEsIDQ3NjA3LCA0NzYxMywgNDc2MTksIAotICAgIDQ3NjMzLCA0NzY0MywgNDc2NTcsIDQ3NjcxLCA0NzY3NywgNDc2ODcsIDQ3NzAxLCA0NzcwNCwgNDc3MDcsIDQ3NzE0LCAKLSAgICA0NzcyMiwgNDc3MjgsIDQ3NzMzLCA0Nzc0MSwgNDc3NTMsIDQ3NzY1LCA0Nzc3MywgNDc3NzcsIDQ3NzgxLCA0Nzc4NCwgCi0gICAgNDc3ODcsIDQ3NzkxLCA0Nzc5NSwgNDc3OTgsIDQ3ODAxLCA0NzgwNiwgNDc4MTEsIDQ3ODE3LCA0NzgyMywgNDc4MjgsIAotICAgIDQ3ODMzLCA0NzgzOSwgNDc4NDUsIDQ3ODUwLCA0Nzg1NSwgNDc4NjAsIDQ3ODY1LCA0Nzg3MSwgNDc4NzcsIDQ3ODgyLCAKLSAgICA0Nzg4NywgNDc4OTMsIDQ3ODk5LCA0NzkwNCwgNDc5MDksIDQ3OTEyLCA0NzkxNSwgNDc5MjQsIDQ3OTI2LCA0NzkyOCwgCi0gICAgNDc5MzEsIDQ3OTM1LCA0Nzk0MSwgNDc5NDMsIDQ3OTQ2LCA0Nzk1MywgNDc5NjAsIDQ3OTY4LCA0Nzk3NiwgNDc5ODYsIAotICAgIDQ4MDAwLCA0ODAwNSwgNDgwMTAsIDQ4MDE0LCA0ODAxOSwgNDgwMjcsIDQ4MDM1LCA0ODA0NCwgNDgwNTMsIDQ4MDYyLCAKLSAgICA0ODA3MSwgNDgwNzYsIDQ4MDgxLCA0ODA4NywgNDgwOTMsIDQ4MDk5LCA0ODEwNSwgNDgxMDgsIDQ4MTE0LCA0ODEyMCwgCi0gICAgNDgxMzAsIDQ4MTQwLCA0ODE0OCwgNDgxNTYsIDQ4MTY1LCA0ODE3NCwgNDgxNzgsIDQ4MTg2LCA0ODE5NCwgNDgyMDIsIAotICAgIDQ4MjEwLCA0ODIxOSwgNDgyMjgsIDQ4MjM3LCA0ODI0NiwgNDgyNTEsIDQ4MjU2LCA0ODI2MSwgNDgyNjYsIDQ4MjcxLCAKLSAgICA0ODI3NywgNDgyODMsIDQ4Mjg4LCA0ODI5NCwgNDgyOTYsIDQ4Mjk4LCA0ODMwMCwgNDgzMDIsIDQ4MzA1LCA0ODMwOCwgCi0gICAgNDgzMTAsIDQ4MzEyLCA0ODMxNCwgNDgzMTgsIDQ4MzIyLCA0ODMyNCwgNDgzMjYsIDQ4MzI5LCA0ODMzMiwgNDgzMzYsIAotICAgIDQ4MzQyLCA0ODM0OCwgNDgzNTAsIDQ4MzU3LCA0ODM2MSwgNDgzNjYsIDQ4MzcxLCA0ODM3MywgNDgzODMsIDQ4Mzg5LCAKLSAgICA0ODM5NSwgNDg0MDEsIDQ4NDA3LCA0ODQxMywgNDg0MTksIDQ4NDI0LCA0ODQyNywgNDg0MzAsIDQ4NDMzLCA0ODQzNSwgCi0gICAgNDg0MzcsIDQ4NDQxLCA0ODQ0NSwgNDg0NTAsIDQ4NDU1LCA0ODQ2MCwgNDg0NjMsIDQ4NDY3LCA0ODQ3MiwgNDg0NzUsIAotICAgIDQ4NDc5LCA0ODQ4NCwgNDg0ODksIDQ4NDk0LCA0ODQ5OSwgNDg1MDQsIDQ4NTA5LCA0ODUxNCwgNDg1MTksIDQ4NTI0LCAKLSAgICA0ODUyOSwgNDg1MzQsIDQ4NTM5LCA0ODU0NSwgNDg1NTEsIDQ4NTU3LCA0ODU1OSwgNDg1NjIsIDQ4NTY0LCA0ODU2NywgCi0gICAgNDg1NjksIDQ4NTcxLCA0ODU3MywgNDg1NzUsIDQ4NTc3LCA0ODU3OSwgNDg1ODEsIDQ4NTgzLCA0ODU4NSwgNDg1ODcsIAotICAgIDQ4NTg5LCA0ODU5MSwgNDg1OTMsIDQ4NTk1LCA0ODU5NywgNDg1OTksIDQ4NjAxLCA0ODYwNiwgNDg2MTEsIDQ4NjE2LCAKLSAgICA0ODYyMSwgNDg2MjYsIDQ4NjMxLCA0ODYzNiwgNDg2NDEsIDQ4NjQ2LCA0ODY1MSwgNDg2NTYsIDQ4NjYxLCA0ODY2NiwgCi0gICAgNDg2NzEsIDQ4Njc2LCA0ODY4MSwgNDg2ODYsIDQ4NjkxLCA0ODY5NiwgNDg3MDEsIDQ4NzA1LCA0ODcwOSwgNDg3MTMsIAotICAgIDQ4NzE5LCA0ODcyNSwgNDg3MzAsIDQ4NzM1LCA0ODc0MCwgNDg3NDYsIDQ4NzUyLCA0ODc1NywgNDg3NjUsIDQ4NzczLCAKLSAgICA0ODc4MSwgNDg3ODksIDQ4Nzk3LCA0ODgwNSwgNDg4MTMsIDQ4ODIxLCA0ODgyNywgNDg4MzIsIDQ4ODM3LCA0ODg0MiwgCi0gICAgNDg4NDUsIDQ4ODQ5LCA0ODg1MywgNDg4NTcsIDQ4ODYxLCA0ODg2NSwgNDg4NjksIDQ4ODc2LCA0ODg4MywgNDg4OTEsIAotICAgIDQ4ODk5LCA0ODkwNCwgNDg5MDksIDQ4OTE2LCA0ODkyMywgNDg5MzAsIDQ4OTM3LCA0ODk0MCwgNDg5NDMsIDQ4OTQ4LCAKLSAgICA0ODk1MCwgNDg5NTQsIDQ4OTU5LCA0ODk2MSwgNDg5NjMsIDQ4OTY1LCA0ODk2NywgNDg5NzIsIDQ4OTc1LCA0ODk3NywgCi0gICAgNDg5ODIsIDQ4OTg5LCA0ODk5NiwgNDg5OTksIDQ5MDAzLCA0OTAwOCwgNDkwMTMsIDQ5MDIxLCA0OTAyNywgNDkwMzMsIAotICAgIDQ5MDQ1LCA0OTA1MiwgNDkwNjAsIDQ5MDY1LCA0OTA3MCwgNDkwNzYsIDQ5MDc5LCA0OTA4MiwgNDkwODcsIDQ5MDg5LCAKLSAgICA0OTA5MywgNDkwOTUsIDQ5MDk3LCA0OTA5OSwgNDkxMDEsIDQ5MTAzLCA0OTEwNSwgNDkxMTAsIDQ5MTEyLCA0OTExNCwgCi0gICAgNDkxMTYsIDQ5MTE4LCA0OTEyMiwgNDkxMjQsIDQ5MTI3LCA0OTEzMiwgNDkxMzcsIDQ5MTQyLCA0OTE0NywgNDkxNTMsIAotICAgIDQ5MTU5LCA0OTE2MSwgNDkxNjQsIDQ5MTcxLCA0OTE3OCwgNDkxODUsIDQ5MTkyLCA0OTE5NiwgNDkyMDAsIDQ5MjAyLCAKLSAgICA0OTIwNCwgNDkyMDgsIDQ5MjE0LCA0OTIxOSwgNDkyMjEsIDQ5MjI1LCA0OTIzNCwgNDkyNDIsIDQ5MjUwLCA0OTI1NiwgCi0gICAgNDkyNjIsIDQ5MjY3LCA0OTI3MywgNDkyNzgsIDQ5MjgxLCA0OTI5NSwgNDkyOTgsIDQ5MzAzLCA0OTMwOCwgNDkzMTQsIAotICAgIDQ5MzI0LCA0OTMyNiwgNDkzMzIsIDQ5MzM4LCA0OTM0MiwgNDkzNDksIDQ5MzUzLCA0OTM1NSwgNDkzNTcsIDQ5MzYxLCAKLSAgICA0OTM2NywgNDkzNzIsIDQ5Mzc4LCA0OTM4MCwgNDkzODYsIDQ5Mzg4LCA0OTM5NCwgNDkzOTYsIDQ5Mzk4LCA0OTQwMywgCi0gICAgNDk0MDUsIDQ5NDA5LCA0OTQxNCwgNDk0MTYsIDQ5NDIxLCA0OTQyNiwgNDk0MzAsIDQ5NDM3LCA0OTQ0NywgNDk0NTIsIAotICAgIDQ5NDU4LCA0OTQ2MSwgNDk0NjcsIDQ5NDcwLCA0OTQ3NSwgNDk0ODAsIDQ5NDg0LCA0OTQ4NiwgNDk0ODgsIDQ5NDkyLCAKLSAgICA0OTQ5NiwgNDk1MDAsIDQ5NTA0LCA0OTUwOSwgNDk1MTEsIDQ5NTE2LCA0OTUxOSwgNDk1MjIsIDQ5NTI1LCA0OTUyOSwgCi0gICAgNDk1MzMsIDQ5NTM4LCA0OTU0MiwgNDk1NDcsIDQ5NTUyLCA0OTU1NiwgNDk1NjEsIDQ5NTY3LCA0OTU3MCwgNDk1NzYsIAotICAgIDQ5NTgxLCA0OTU4NSwgNDk1OTAsIDQ5NTk2LCA0OTYwMiwgNDk2MDksIDQ5NjE1LCA0OTYyMiwgNDk2MjksIDQ5NjMxLCAKLSAgICA0OTYzOCwgNDk2NDIsIDQ5NjQ4LCA0OTY1NCwgNDk2NTksIDQ5NjY1LCA0OTY2OSwgNDk2NzQsIDQ5Njc3LCA0OTY4MiwgCi0gICAgNDk2ODgsIDQ5Njk1LCA0OTcwMywgNDk3MTAsIDQ5NzE5LCA0OTcyOSwgNDk3MzYsIDQ5NzQyLCA0OTc0NiwgNDk3NTMsIAotICAgIDQ5NzU4LCA0OTc2NywgNDk3NzAsIDQ5NzczLCA0OTc4MiwgNDk3OTIsIDQ5Nzk5LCA0OTgwMSwgNDk4MDcsIDQ5ODEyLCAKLSAgICA0OTgxNCwgNDk4MTcsIDQ5ODIxLCA0OTgyOSwgNDk4MzgsIDQ5ODQxLCA0OTg0NiwgNDk4NTEsIDQ5ODU5LCA0OTg2NywgCi0gICAgNDk4NzUsIDQ5ODgzLCA0OTg4OSwgNDk4OTUsIDQ5OTAxLCA0OTkwOSwgNDk5MTQsIDQ5OTE3LCA0OTkyMSwgNDk5MjQsIAotICAgIDQ5OTM2LCA0OTk0NiwgNDk5NTcsIDQ5OTY2LCA0OTk3NywgNDk5ODcsIDQ5OTk2LCA1MDAwMiwgNTAwMTAsIDUwMDE0LCAKLSAgICA1MDAyMiwgNTAwMjYsIDUwMDM0LCA1MDA0MSwgNTAwNDgsIDUwMDU3LCA1MDA2NiwgNTAwNzYsIDUwMDg2LCA1MDA5NiwgCi0gICAgNTAxMDYsIDUwMTE1LCA1MDEyNCwgNTAxMzQsIDUwMTQ0LCA1MDE1MywgNTAxNjIsIDUwMTY4LCA1MDE3NCwgNTAxODAsIAotICAgIDUwMTg2LCA1MDE5MiwgNTAxOTgsIDUwMjA1LCA1MDIxMSwgNTAyMTgsIDUwMjI1LCA1MDIzMSwgNTAyMzcsIDUwMjQzLCAKLSAgICA1MDI0OSwgNTAyNTUsIDUwMjYxLCA1MDI2OCwgNTAyNzQsIDUwMjgxLCA1MDI4OCwgNTAyOTUsIDUwMzAyLCA1MDMwOSwgCi0gICAgNTAzMTYsIDUwMzIzLCA1MDMzMCwgNTAzMzgsIDUwMzQ1LCA1MDM1MywgNTAzNjEsIDUwMzY2LCA1MDM2OSwgNTAzNzMsIAotICAgIDUwMzc3LCA1MDM4MywgNTAzODYsIDUwMzkxLCA1MDM5NywgNTA0MDIsIDUwNDA2LCA1MDQxMSwgNTA0MTcsIDUwNDI0LCAKLSAgICA1MDQyNywgNTA0MzQsIDUwNDQxLCA1MDQ0NSwgNTA0NTMsIDUwNDYxLCA1MDQ2NiwgNTA0NzIsIDUwNDc3LCA1MDQ4MiwgCi0gICAgNTA0ODksIDUwNDk2LCA1MDUwNCwgNTA1MTIsIDUwNTIxLCA1MDUyNSwgNTA1MzQsIDUwNTM5LCA1MDU0MywgNTA1NTAsIAotICAgIDUwNTU0LCA1MDU2MCwgNTA1NjgsIDUwNTczLCA1MDU4MCwgNTA1ODQsIDUwNTg5LCA1MDU5MywgNTA1OTgsIDUwNjAyLCAKLSAgICA1MDYwNywgNTA2MTIsIDUwNjIxLCA1MDYyMywgNTA2MjYsIDUwNjI5LCA1MDYzNiwgNTA2NDMsIDUwNjQ5LCA1MDY1NywgCi0gICAgNTA2NjMsIDUwNjcwLCA1MDY3NSwgNTA2NzgsIDUwNjgzLCA1MDY4OCwgNTA2OTMsIDUwNzAxLCA1MDcwNSwgNTA3MTIsIAotICAgIDUwNzIwLCA1MDcyOCwgNTA3MzMsIDUwNzM4LCA1MDc0NCwgNTA3NDksIDUwNzU0LCA1MDc2MCwgNTA3NjUsIDUwNzY4LCAKLSAgICA1MDc3MiwgNTA3NzYsIDUwNzgzLCA1MDc5MywgNTA3OTgsIDUwODA3LCA1MDgxNiwgNTA4MjIsIDUwODI4LCA1MDgzMywgCi0gICAgNTA4MzgsIDUwODQzLCA1MDg0OCwgNTA4NTQsIDUwODYwLCA1MDg2OCwgNTA4NzYsIDUwODgyLCA1MDg4OCwgNTA4OTIsIAotICAgIDUwODk2LCA1MDkwMywgNTA5MTAsIDUwOTE2LCA1MDkxOSwgNTA5MjIsIDUwOTI2LCA1MDkzMCwgNTA5MzQsIDUwOTM5LCAKLSAgICA1MDk0NSwgNTA5NTEsIDUwOTU4LCA1MDk2NSwgNTA5NzAsIDUwOTc0LCA1MDk3OCwgNTA5ODIsIDUwOTg2LCA1MDk5MCwgCi0gICAgNTA5OTQsIDUwOTk4LCA1MTAwMiwgNTEwMDYsIDUxMDEwLCA1MTAxNCwgNTEwMTgsIDUxMDIyLCA1MTAyNiwgNTEwMzAsIAotICAgIDUxMDM0LCA1MTAzOCwgNTEwNDIsIDUxMDQ2LCA1MTA1MCwgNTEwNTQsIDUxMDU4LCA1MTA2MiwgNTEwNjYsIDUxMDcwLCAKLSAgICA1MTA3NCwgNTEwNzgsIDUxMDgyLCA1MTA4NiwgNTEwOTAsIDUxMDk0LCA1MTA5OCwgNTExMDIsIDUxMTA2LCA1MTExMCwgCi0gICAgNTExMTQsIDUxMTE4LCA1MTEyMiwgNTExMjYsIDUxMTMwLCA1MTEzNCwgNTExMzgsIDUxMTQyLCA1MTE0NiwgNTExNTAsIAotICAgIDUxMTU0LCA1MTE1OCwgNTExNjIsIDUxMTY2LCA1MTE3MCwgNTExNzQsIDUxMTc4LCA1MTE4MiwgNTExODYsIDUxMTkwLCAKLSAgICA1MTE5NCwgNTExOTgsIDUxMjAyLCA1MTIwNiwgNTEyMTAsIDUxMjE0LCA1MTIxOCwgNTEyMjIsIDUxMjI2LCA1MTIzMCwgCi0gICAgNTEyMzQsIDUxMjM4LCA1MTI0MiwgNTEyNDYsIDUxMjUwLCA1MTI1NCwgNTEyNTgsIDUxMjYyLCA1MTI2NiwgNTEyNzAsIAotICAgIDUxMjc0LCA1MTI3OCwgNTEyODIsIDUxMjg2LCA1MTI5MCwgNTEyOTQsIDUxMjk4LCA1MTMwMiwgNTEzMDYsIDUxMzEwLCAKLSAgICA1MTMxNCwgNTEzMTgsIDUxMzIyLCA1MTMyNiwgNTEzMzAsIDUxMzM0LCA1MTMzOCwgNTEzNDIsIDUxMzQ2LCA1MTM1MCwgCi0gICAgNTEzNTQsIDUxMzU4LCA1MTM2MiwgNTEzNjYsIDUxMzcwLCA1MTM3NCwgNTEzNzgsIDUxMzgyLCA1MTM4NiwgNTEzOTAsIAotICAgIDUxMzk0LCA1MTM5OCwgNTE0MDIsIDUxNDA2LCA1MTQxMCwgNTE0MTQsIDUxNDE4LCA1MTQyMiwgNTE0MjYsIDUxNDMwLCAKLSAgICA1MTQzNCwgNTE0MzgsIDUxNDQyLCA1MTQ0NiwgNTE0NTAsIDUxNDU0LCA1MTQ1OCwgNTE0NjIsIDUxNDY2LCA1MTQ3MCwgCi0gICAgNTE0NzQsIDUxNDc4LCA1MTQ4MiwgNTE0ODYsIDUxNDkwLCA1MTQ5NCwgNTE0OTgsIDUxNTAyLCA1MTUwNiwgNTE1MTAsIAotICAgIDUxNTE0LCA1MTUxOCwgNTE1MjIsIDUxNTI2LCA1MTUzMCwgNTE1MzQsIDUxNTM4LCA1MTU0MiwgNTE1NDYsIDUxNTUwLCAKLSAgICA1MTU1NCwgNTE1NTgsIDUxNTYyLCA1MTU2NiwgNTE1NzAsIDUxNTc0LCA1MTU3OCwgNTE1ODIsIDUxNTg2LCA1MTU5MCwgCi0gICAgNTE1OTQsIDUxNTk4LCA1MTYwMiwgNTE2MDYsIDUxNjEwLCA1MTYxNCwgNTE2MTgsIDUxNjIyLCA1MTYyNiwgNTE2MzAsIAotICAgIDUxNjM0LCA1MTYzOCwgNTE2NDIsIDUxNjQ2LCA1MTY1MCwgNTE2NTQsIDUxNjU4LCA1MTY2MiwgNTE2NjYsIDUxNjcwLCAKLSAgICA1MTY3NCwgNTE2NzgsIDUxNjgyLCA1MTY4NiwgNTE2OTAsIDUxNjk0LCA1MTY5OCwgNTE3MDIsIDUxNzA2LCA1MTcxMCwgCi0gICAgNTE3MTQsIDUxNzE4LCA1MTcyMiwgNTE3MjYsIDUxNzMwLCA1MTczNCwgNTE3MzgsIDUxNzQyLCA1MTc0NiwgNTE3NTAsIAotICAgIDUxNzU0LCA1MTc1OCwgNTE3NjIsIDUxNzY2LCA1MTc3MCwgNTE3NzQsIDUxNzc4LCA1MTc4MiwgNTE3ODYsIDUxNzkwLCAKLSAgICA1MTc5NCwgNTE3OTgsIDUxODAyLCA1MTgwNiwgNTE4MTAsIDUxODE0LCA1MTgxOCwgNTE4MjIsIDUxODI2LCA1MTgzMCwgCi0gICAgNTE4MzQsIDUxODM4LCA1MTg0MiwgNTE4NDYsIDUxODUwLCA1MTg1NCwgNTE4NTgsIDUxODYyLCA1MTg2NiwgNTE4NzAsIAotICAgIDUxODc0LCA1MTg3OCwgNTE4ODIsIDUxODg2LCA1MTg5MCwgNTE4OTQsIDUxODk4LCA1MTkwMiwgNTE5MDYsIDUxOTEwLCAKLSAgICA1MTkxNCwgNTE5MTgsIDUxOTIyLCA1MTkyNiwgNTE5MzAsIDUxOTM0LCA1MTkzOCwgNTE5NDIsIDUxOTQ2LCA1MTk1MCwgCi0gICAgNTE5NTQsIDUxOTU4LCA1MTk2MiwgNTE5NjYsIDUxOTcwLCA1MTk3NCwgNTE5NzgsIDUxOTgyLCA1MTk4NiwgNTE5OTAsIAotICAgIDUxOTk0LCA1MjAwMSwgNTIwMDksIDUyMDE1LCA1MjAyMSwgNTIwMjgsIDUyMDM1LCA1MjA0MSwgNTIwNDcsIDUyMDUzLCAKLSAgICA1MjA1OSwgNTIwNjMsIDUyMDY3LCA1MjA3MiwgNTIwNzcsIDUyMDgzLCA1MjA4OSwgNTIwOTcsIDUyMTA0LCA1MjEwOSwgCi0gICAgNTIxMTQsIDUyMTIyLCA1MjEzMSwgNTIxMzgsIDUyMTQ4LCA1MjE1OSwgNTIxNjIsIDUyMTY1LCA1MjE2OSwgNTIxNzMsIAotICAgIDUyMTgwLCA1MjE4NywgNTIxOTgsIDUyMjA5LCA1MjIxOCwgNTIyMjcsIDUyMjMzLCA1MjIzOSwgNTIyNDYsIDUyMjUzLCAKLSAgICA1MjI2MiwgNTIyNzIsIDUyMjgzLCA1MjI5MywgNTIzMDMsIDUyMzEzLCA1MjMyNCwgNTIzMzUsIDUyMzQ1LCA1MjM1NiwgCi0gICAgNTIzNjYsIDUyMzc2LCA1MjM4NSwgNTIzOTUsIDUyNDA1LCA1MjQxNSwgNTI0MjUsIDUyNDMyLCA1MjQzOSwgNTI0NDYsIAotICAgIDUyNDUzLCA1MjQ2MywgNTI0NzMsIDUyNDgxLCA1MjQ4OSwgNTI0OTYsIDUyNTAzLCA1MjUxMCwgNTI1MTcsIDUyNTI0LCAKLSAgICA1MjUyOSwgNTI1MzQsIDUyNTQwLCA1MjU0OCwgNTI1NTcsIDUyNTY1LCA1MjU3MywgNTI1ODEsIDUyNTg5LCA1MjU5NywgCi0gICAgNTI2MDUsIDUyNjEzLCA1MjYyMSwgNTI2MzAsIDUyNjM5LCA1MjY0OCwgNTI2NTcsIDUyNjY2LCA1MjY3NSwgNTI2ODQsIAotICAgIDUyNjkzLCA1MjcwMiwgNTI3MTEsIDUyNzIwLCA1MjcyOSwgNTI3MzgsIDUyNzQ3LCA1Mjc1NiwgNTI3NjUsIDUyNzc5LCAKLSAgICA1Mjc5NCwgNTI4MDgsIDUyODIzLCA1MjgzNywgNTI4NTEsIDUyODY1LCA1Mjg3OSwgNTI4ODksIDUyOTAwLCA1MjkxMCwgCi0gICAgNTI5MjEsIDUyOTM2LCA1Mjk1MSwgNTI5NTksIDUyOTY1LCA1Mjk3MiwgNTI5NzksIDUyOTg2LCA1Mjk5MywgNTI5OTgsIAotICAgIDUzMDA0LCA1MzAwOSwgNTMwMTQsIDUzMDIwLCA1MzAyNSwgNTMwMzAsIDUzMDM1LCA1MzA0MCwgNTMwNDUsIDUzMDUyLCAKLSAgICA1MzA1OCwgNTMwNjYsIDUzMDcxLCA1MzA3NiwgNTMwODAsIDUzMDg0LCA1MzA5MiwgNTMxMDAsIDUzMTA4LCA1MzExNiwgCi0gICAgNTMxMjMsIDUzMTMwLCA1MzE0MywgNTMxNTYsIDUzMTY5LCA1MzE4MiwgNTMxOTAsIDUzMTk4LCA1MzIwNCwgNTMyMTAsIAotICAgIDUzMjE3LCA1MzIyNCwgNTMyMzEsIDUzMjM4LCA1MzI0MiwgNTMyNDcsIDUzMjU1LCA1MzI2MywgNTMyNzEsIDUzMjc4LCAKLSAgICA1MzI4MiwgNTMyOTAsIDUzMjk4LCA1MzMwMiwgNTMzMDYsIDUzMzExLCA1MzMxOCwgNTMzMjYsIDUzMzM0LCA1MzM1MywgCi0gICAgNTMzNzIsIDUzMzkxLCA1MzQxMCwgNTM0MjksIDUzNDQ4LCA1MzQ2NywgNTM0ODYsIDUzNDkyLCA1MzQ5OSwgNTM1MDgsIAotICAgIDUzNTE2LCA1MzUyNCwgNTM1MzAsIDUzNTMzLCA1MzUzNiwgNTM1NDEsIDUzNTQ0LCA1MzU2NCwgNTM1NzEsIDUzNTc3LCAKLSAgICA1MzU4MywgNTM1ODcsIDUzNTkwLCA1MzU5MywgNTM1OTYsIDUzNjA4LCA1MzYyMiwgNTM2MjksIDUzNjM2LCA1MzYzOSwgCi0gICAgNTM2NDMsIDUzNjQ2LCA1MzY1MSwgNTM2NTYsIDUzNjYxLCA1MzY2NywgNTM2NzYsIDUzNjgzLCA1MzY5MCwgNTM2OTgsIAotICAgIDUzNzA1LCA1MzcxMiwgNTM3MTUsIDUzNzIxLCA1MzcyNywgNTM3MzAsIDUzNzMzLCA1MzczOCwgNTM3NDMsIDUzNzQ5LCAKLSAgICA1Mzc1NSwgNTM3NTksIDUzNzY0LCA1Mzc3MSwgNTM3NzUsIDUzNzgxLCA1Mzc4NSwgNTM3ODksIDUzNzk3LCA1MzgwOSwgCi0gICAgNTM4MTgsIDUzODIyLCA1MzgyNCwgNTM4MzMsIDUzODQyLCA1Mzg0OCwgNTM4NTEsIDUzODU3LCA1Mzg2MywgNTM4NjgsIAotICAgIDUzODczLCA1Mzg3OCwgNTM4ODMsIDUzODg4LCA1Mzg5MywgNTM4OTUsIDUzOTAxLCA1MzkwNiwgNTM5MTQsIDUzOTE4LCAKLSAgICA1MzkyNCwgNTM5MjcsIDUzOTMxLCA1MzkzOCwgNTM5NDUsIDUzOTQ3LCA1Mzk0OSwgNTM5NTUsIDUzOTYxLCA1Mzk2NywgCi0gICAgNTM5NzYsIDUzOTg1LCA1Mzk5MiwgNTM5OTksIDU0MDA1LCA1NDAxMiwgNTQwMTcsIDU0MDIyLCA1NDAyNywgNTQwMzMsIAotICAgIDU0MDM5LCA1NDA0NCwgNTQwNTEsIDU0MDU1LCA1NDA1OSwgNTQwNzIsIDU0MDg1LCA1NDA5NywgNTQxMDYsIDU0MTEyLCAKLSAgICA1NDExOSwgNTQxMjQsIDU0MTI5LCA1NDEzNCwgNTQxMzksIDU0MTQ0LCA1NDE0NiwgNTQxNTMsIDU0MTYxLCA1NDE2OSwgCi0gICAgNTQxNzcsIDU0MTg0LCA1NDE5MiwgNTQxOTgsIDU0MjAzLCA1NDIwOSwgNTQyMTUsIDU0MjIxLCA1NDIyOCwgNTQyMzQsIAotICAgIDU0MjQyLCA1NDI1MCwgNTQyNTgsIDU0MjY2LCA1NDI3NCwgNTQyODAsIDU0Mjg2LCA1NDI5NSwgNTQyOTksIDU0MzA4LCAKLSAgICA1NDMxNywgNTQzMjYsIDU0MzM0LCA1NDMzOCwgNTQzNDQsIDU0MzUxLCA1NDM1OCwgNTQzNjIsIDU0MzY4LCA1NDM3NiwgCi0gICAgNTQzODIsIDU0Mzg3LCA1NDM5MywgNTQzOTgsIDU0NDAzLCA1NDQxMCwgNTQ0MTcsIDU0NDIyLCA1NDQyNywgNTQ0MzUsIAotICAgIDU0NDQzLCA1NDQ1MywgNTQ0NjMsIDU0NDcwLCA1NDQ3NywgNTQ0ODEsIDU0NDg1LCA1NDQ5NywgNTQ1MDMsIDU0NTEwLCAKLSAgICA1NDUxNSwgNTQ1MjAsIDU0NTI3LCA1NDUzNCwgNTQ1NDAsIDU0NTQ2LCA1NDU1NiwgNTQ1NjMsIDU0NTcxLCA1NDU3OSwgCi0gICAgNTQ1ODgsIDU0NTk1LCA1NDYwMSwgNTQ2MDgsIDU0NjE0LCA1NDYyMiwgNTQ2MzAsIDU0NjM4LCA1NDY0NiwgNTQ2NTIsIAotICAgIDU0NjU3LCA1NDY2NywgNTQ2NzgsIDU0Njg1LCA1NDY5NCwgNTQ3MDAsIDU0NzA1LCA1NDcxMCwgNTQ3MjAsIDU0NzI3LCAKLSAgICA1NDczMywgNTQ3MzksIDU0NzQ3LCA1NDc1MiwgNTQ3NTksIDU0NzY2LCA1NDc3NywgNTQ3ODQsIDU0NzkxLCA1NDc5OCwgCi0gICAgNTQ4MDUsIDU0ODEyLCA1NDgyMCwgNTQ4MjgsIDU0ODQxLCA1NDg1NCwgNTQ4NjYsIDU0ODc4LCA1NDg5MiwgNTQ5MDYsIAotICAgIDU0OTEyLCA1NDkxOCwgNTQ5MjcsIDU0OTM2LCA1NDk0MywgNTQ5NTAsIDU0OTU5LCA1NDk2OCwgNTQ5NzcsIDU0OTg2LCAKLSAgICA1NDk5NCwgNTUwMDIsIDU1MDEyLCA1NTAyMiwgNTUwMzYsIDU1MDUwLCA1NTA1OSwgNTUwNjgsIDU1MDgxLCA1NTA5NCwgCi0gICAgNTUxMDMsIDU1MTEyLCA1NTEyMywgNTUxMzQsIDU1MTQwLCA1NTE0NiwgNTUxNTUsIDU1MTY0LCA1NTE2OSwgNTUxNzQsIAotICAgIDU1MTgyLCA1NTE4OCwgNTUxOTQsIDU1MjAyLCA1NTIxMCwgNTUyMjMsIDU1MjM2LCA1NTI0MCwgNTUyNDQsIDU1MjUyLCAKLSAgICA1NTI2MCwgNTUyNjcsIDU1Mjc1LCA1NTI4MywgNTUyOTIsIDU1MzAxLCA1NTMwNywgNTUzMTMsIDU1MzIwLCA1NTMyNywgCi0gICAgNTUzMzQsIDU1MzQxLCA1NTM1MCwgNTUzNTksIDU1MzYyLCA1NTM2NSwgNTUzNzAsIDU1Mzc1LCA1NTM4MSwgNTUzODcsIAotICAgIDU1Mzk0LCA1NTQwMSwgNTU0MTIsIDU1NDIzLCA1NTQzMCwgNTU0MzcsIDU1NDQ1LCA1NTQ1MywgNTU0NjEsIDU1NDY5LCAKLSAgICA1NTQ3NywgNTU0ODUsIDU1NDkxLCA1NTQ5NywgNTU1MDEsIDU1NTA1LCA1NTUxMywgNTU1MjEsIDU1NTI2LCA1NTUzMSwgCi0gICAgNTU1MzYsIDU1NTQxLCA1NTU0NywgNTU1NjEsIDU1NTY4LCA1NTU3NSwgNTU1NzksIDU1NTgxLCA1NTU4MywgNTU1ODgsIAotICAgIDU1NTkzLCA1NTU5OCwgNTU2MDIsIDU1NjEwLCA1NTYxNywgNTU2MjQsIDU1NjMyLCA1NTY0NCwgNTU2NTIsIDU1NjYwLCAKLSAgICA1NTY3MSwgNTU2NzUsIDU1Njc5LCA1NTY4NSwgNTU2OTMsIDU1NzA2LCA1NTcxMywgNTU3MjAsIDU1NzI3LCA1NTczMywgCi0gICAgNTU3NDAsIDU1NzQ5LCA1NTc1OCwgNTU3NjQsIDU1NzcwLCA1NTc3NiwgNTU3ODYsIDU1Nzk2LCA1NTgwNCwgNTU4MTMsIAotICAgIDU1ODE4LCA1NTgyMSwgNTU4MjYsIDU1ODMxLCA1NTgzNiwgNTU4NDIsIDU1ODQ4LCA1NTg1MiwgNTU4NTUsIDU1ODU4LCAKLSAgICA1NTg2MSwgNTU4NjYsIDU1ODcxLCA1NTg3NywgNTU4ODMsIDU1ODg3LCA1NTg5MSwgNTU4OTgsIDU1OTA1LCA1NTkxMiwgCi0gICAgNTU5MTksIDU1OTI2LCA1NTkzMywgNTU5NDMsIDU1OTUzLCA1NTk2MCwgNTU5NjcsIDU1OTc1LCA1NTk4MywgNTU5ODcsIAotICAgIDU1OTkyLCA1NTk5NywgNTYwMDMsIDU2MDA5LCA1NjAxMiwgNTYwMTUsIDU2MDE4LCA1NjAyMSwgNTYwMjYsIDU2MDMxLCAKLSAgICA1NjAzNiwgNTYwNDEsIDU2MDQ2LCA1NjA1MSwgNTYwNTUsIDU2MDU5LCA1NjA2MywgNTYwNjgsIDU2MDczLCA1NjA3NywgCi0gICAgNTYwODEsIDU2MDg3LCA1NjA5MSwgNTYwOTcsIDU2MTAyLCA1NjEwOSwgNTYxMTcsIDU2MTI0LCA1NjEzMiwgNTYxMzksIAotICAgIDU2MTQ3LCA1NjE1NiwgNTYxNjMsIDU2MTczLCA1NjE4NCwgNTYxOTAsIDU2MTk5LCA1NjIwNSwgNTYyMTQsIDU2MjIzLCAKLSAgICA1NjIyOSwgNTYyMzUsIDU2MjM5LCA1NjI0MywgNTYyNTIsIDU2MjYxLCA1NjI2OCwgNTYyNzUsIDU2Mjg0LCA1NjI5MywgCi0gICAgNTYyOTksIDU2MzA1LCA1NjMxMiwgNTYzMTcsIDU2MzIxLCA1NjMyNSwgNTYzMzAsIDU2MzM1LCA1NjM0MCwgNTYzNDgsIAotICAgIDU2MzU2LCA1NjM1OSwgNTYzNjMsIDU2MzcyLCA1NjM4MiwgNTYzOTEsIDU2NDAxLCA1NjQxMiwgNTY0MjUsIDU2NDI5LCAKLSAgICA1NjQzMywgNTY0MzcsIDU2NDQxLCA1NjQ0NiwgNTY0NTEsIDU2NDU3LCA1NjQ2MywgNTY0NzAsIDU2NDc3LCA1NjQ4MywgCi0gICAgNTY0ODksIDU2NDk1LCA1NjUwMSwgNTY1MDksIDU2NTE3LCA1NjUyNCwgNTY1MzEsIDU2NTM4LCAwLCAwLCA1NjU0NSwgCi0gICAgNTY1NTQsIDU2NTYzLCA1NjU3MywgNTY1ODMsIDU2NTkyLCA1NjYwMSwgNTY2MTAsIDU2NjE5LCA1NjYyNSwgNTY2MzAsIAotICAgIDU2NjM5LCA1NjY0OSwgNTY2NTgsIDU2NjY4LCA1NjY3NSwgNTY2ODIsIDU2Njg5LCA1NjY5NiwgNTY3MDEsIDU2NzA2LCAKLSAgICA1NjcxMSwgNTY3MTYsIDU2NzI0LCA1NjczMywgNTY3NDEsIDU2NzUwLCA1Njc1NCwgNTY3NTgsIDU2NzYyLCA1Njc2NiwgCi0gICAgNTY3NzYsIDAsIDAsIDU2Nzc5LCA1Njc4OCwgNTY3OTcsIDU2ODA2LCA1NjgxNSwgNTY4MjEsIDU2ODI3LCA1NjgzMywgCi0gICAgNTY4MzksIDU2ODQ5LCA1Njg1OSwgNTY4NjksIDU2ODc5LCA1Njg4OSwgNTY4OTksIDU2OTA5LCA1NjkxOSwgNTY5MjYsIAotICAgIDU2OTMzLCA1Njk0MCwgNTY5NDcsIDU2OTU0LCA1Njk2MSwgNTY5NjgsIDU2OTc1LCA1Njk4MSwgNTY5ODcsIDU2OTkzLCAKLSAgICA1Njk5OSwgNTcwMDUsIDU3MDExLCA1NzAxNywgNTcwMjMsIDU3MDM0LCAwLCAwLCAwLCA1NzA0NCwgNTcwNTEsIDU3MDU0LCAKLSAgICA1NzA1OCwgNTcwNjIsIDU3MDY3LCA1NzA3MiwgNTcwNzcsIDU3MDgwLCA1NzA4OSwgNTcwOTgsIDU3MTA3LCAwLCA1NzExNiwgCi0gICAgNTcxMjIsIDU3MTI4LCA1NzEzNiwgNTcxNDYsIDU3MTUzLCA1NzE2MiwgNTcxNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MTcwLCA1NzE3OSwgCi0gICAgNTcxODgsIDU3MTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzIwNiwgCi0gICAgNTcyMTEsIDU3MjE2LCA1NzIyMSwgNTcyMjYsIDU3MjMxLCA1NzIzNiwgNTcyNDEsIDU3MjQ2LCA1NzI1MSwgNTcyNTYsIAotICAgIDU3MjYyLCA1NzI2NiwgNTcyNzEsIDU3Mjc2LCA1NzI4MSwgNTcyODYsIDU3MjkxLCA1NzI5NiwgNTczMDEsIDU3MzA2LCAKLSAgICA1NzMxMSwgNTczMTYsIDU3MzIxLCA1NzMyNiwgNTczMzEsIDU3MzM2LCA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NiwgCi0gICAgNTczNjEsIDU3MzY2LCA1NzM3MSwgNTczNzYsIDU3MzgyLCA1NzM4NywgNTczOTMsIDU3NDAyLCA1NzQwNywgNTc0MTUsIAotICAgIDU3NDIyLCA1NzQzMSwgNTc0MzYsIDU3NDQxLCA1NzQ0NiwgNTc0NTIsIDAsIDU3NDU5LCA1NzQ2NCwgNTc0NjksIDU3NDc0LCAKLSAgICA1NzQ3OSwgNTc0ODQsIDU3NDg5LCA1NzQ5NCwgNTc0OTksIDU3NTA0LCA1NzUwOSwgNTc1MTUsIDU3NTE5LCA1NzUyNCwgCi0gICAgNTc1MjksIDU3NTM0LCA1NzUzOSwgNTc1NDQsIDU3NTQ5LCA1NzU1NCwgNTc1NTksIDU3NTY0LCA1NzU2OSwgNTc1NzQsIAotICAgIDU3NTc5LCA1NzU4NCwgNTc1ODksIDU3NTk0LCA1NzU5OSwgNTc2MDQsIDU3NjA5LCA1NzYxNCwgNTc2MTksIDU3NjI0LCAKLSAgICA1NzYyOSwgNTc2MzUsIDU3NjQwLCA1NzY0NiwgNTc2NTUsIDU3NjYwLCA1NzY2OCwgNTc2NzUsIDU3Njg0LCA1NzY4OSwgCi0gICAgNTc2OTQsIDU3Njk5LCA1NzcwNSwgMCwgNTc3MTIsIDU3NzIwLCA1NzcyOCwgNTc3MzcsIDU3NzQ0LCA1Nzc1MiwgNTc3NTgsIAotICAgIDU3NzY3LCA1Nzc3NSwgNTc3ODMsIDU3NzkxLCA1Nzc5OSwgNTc4MDcsIDU3ODE1LCA1NzgyMCwgNTc4MjcsIDU3ODMzLCAKLSAgICA1Nzg0MCwgNTc4NDgsIDU3ODU1LCA1Nzg2MiwgNTc4NzAsIDU3ODc2LCA1Nzg4MiwgNTc4ODksIDU3ODk2LCA1NzkwNiwgCi0gICAgNTc5MTYsIDU3OTIzLCA1NzkzMCwgNTc5MzUsIDU3OTQ1LCA1Nzk1NSwgNTc5NjAsIDU3OTY1LCA1Nzk3MCwgNTc5NzUsIAotICAgIDU3OTgwLCA1Nzk4NSwgNTc5OTAsIDU3OTk1LCA1ODAwMCwgNTgwMDUsIDU4MDEwLCA1ODAxNSwgNTgwMjAsIDU4MDI1LCAKLSAgICA1ODAzMCwgNTgwMzUsIDU4MDQwLCA1ODA0NSwgNTgwNTAsIDU4MDU1LCA1ODA2MCwgNTgwNjUsIDU4MDcwLCA1ODA3NSwgCi0gICAgNTgwODAsIDU4MDg1LCA1ODA5MCwgNTgwOTUsIDU4MTAwLCA1ODEwNSwgNTgxMDksIDU4MTEzLCA1ODExOCwgNTgxMjMsIAotICAgIDU4MTI4LCA1ODEzMywgNTgxMzgsIDU4MTQzLCA1ODE0OCwgNTgxNTMsIDU4MTU4LCA1ODE2MywgNTgxNjgsIDU4MTczLCAKLSAgICA1ODE3OCwgNTgxODMsIDU4MTg4LCA1ODE5MywgNTgxOTgsIDU4MjAzLCA1ODIxMCwgNTgyMTcsIDU4MjI0LCA1ODIzMSwgCi0gICAgNTgyMzgsIDU4MjQ1LCA1ODI1MiwgNTgyNTksIDU4MjY2LCA1ODI3MywgNTgyODAsIDU4Mjg3LCA1ODI5NCwgNTgzMDEsIAotICAgIDU4MzA2LCA1ODMxMSwgNTgzMTgsIDU4MzI1LCA1ODMzMiwgNTgzMzksIDU4MzQ2LCA1ODM1MywgNTgzNjAsIDU4MzY3LCAKLSAgICA1ODM3NCwgNTgzODEsIDU4Mzg4LCA1ODM5NSwgNTg0MDEsIDU4NDA3LCA1ODQxMywgNTg0MTksIDU4NDI2LCA1ODQzMywgCi0gICAgNTg0NDAsIDU4NDQ3LCA1ODQ1NCwgNTg0NjEsIDU4NDY4LCA1ODQ3NSwgNTg0ODIsIDU4NDg5LCA1ODQ5NywgNTg1MDUsIAotICAgIDU4NTEzLCA1ODUyMSwgNTg1MjksIDU4NTM3LCA1ODU0NSwgNTg1NTMsIDU4NTU3LCA1ODU2MywgNTg1NjksIDU4NTczLCAKLSAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5OCwgNTg2MDUsIDU4NjEyLCA1ODYxOSwgNTg2MjQsIDU4NjMwLCA1ODYzNiwgCi0gICAgNTg2NDMsIDAsIDAsIDAsIDAsIDAsIDU4NjUwLCA1ODY1OCwgNTg2NjcsIDU4Njc2LCA1ODY4NCwgNTg2OTAsIDU4Njk1LCAKLSAgICA1ODcwMCwgNTg3MDUsIDU4NzEwLCA1ODcxNSwgNTg3MjAsIDU4NzI1LCA1ODczMCwgNTg3MzUsIDU4NzQwLCA1ODc0NSwgCi0gICAgNTg3NTAsIDU4NzU1LCA1ODc2MCwgNTg3NjUsIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MCwgNTg3OTUsIAotICAgIDU4ODAwLCA1ODgwNSwgNTg4MTAsIDU4ODE1LCA1ODgyMCwgNTg4MjUsIDU4ODMwLCA1ODgzNSwgNTg4NDAsIDU4ODQ1LCAKLSAgICA1ODg1MCwgNTg4NTUsIDU4ODYwLCA1ODg2NSwgNTg4NzAsIDU4ODc1LCA1ODg4MCwgNTg4ODUsIDAsIDU4ODkwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1ODg5NSwgMCwgMCwgNTg5MDAsIDU4OTA0LCA1ODkwOSwgNTg5MTQsIDU4OTE5LCA1ODkyNCwgNTg5MzMsIAotICAgIDU4OTM4LCA1ODk0MywgNTg5NDgsIDU4OTUzLCA1ODk1OCwgNTg5NjMsIDU4OTY4LCA1ODk3MywgNTg5ODAsIDU4OTg1LCAKLSAgICA1ODk5MCwgNTg5OTksIDU5MDA2LCA1OTAxMSwgNTkwMTYsIDU5MDIxLCA1OTAyOCwgNTkwMzMsIDU5MDQwLCA1OTA0NSwgCi0gICAgNTkwNTAsIDU5MDU3LCA1OTA2NCwgNTkwNjksIDU5MDc0LCA1OTA3OSwgNTkwODYsIDU5MDkzLCA1OTA5OCwgNTkxMDMsIAotICAgIDU5MTA4LCA1OTExMywgNTkxMTgsIDU5MTI1LCA1OTEzMiwgNTkxMzcsIDU5MTQyLCA1OTE0NywgNTkxNTIsIDU5MTU3LCAKLSAgICA1OTE2MiwgNTkxNjcsIDU5MTcyLCA1OTE3NywgNTkxODIsIDU5MTg3LCA1OTE5NCwgNTkxOTksIDU5MjA0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1OTIwOSwgNTkyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU5MjIxLCA1OTIyNiwgNTkyMzAsIDU5MjM0LCA1OTIzOCwgNTkyNDIsIDU5MjQ2LCA1OTI1MCwgNTkyNTQsIDU5MjU4LCAKLSAgICA1OTI2MiwgNTkyNjYsIDU5MjcyLCA1OTI3NiwgNTkyODAsIDU5Mjg0LCA1OTI4OCwgNTkyOTIsIDU5Mjk2LCA1OTMwMCwgCi0gICAgNTkzMDQsIDU5MzA4LCA1OTMxMiwgNTkzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MzIwLCA1OTMyNCwgCi0gICAgNTkzMjgsIDU5MzMyLCA1OTMzNiwgNTkzNDAsIDU5MzQ0LCAwLCA1OTM0OCwgNTkzNTIsIDU5MzU2LCA1OTM2MCwgNTkzNjQsIAotICAgIDU5MzY4LCA1OTM3MiwgMCwgNTkzNzYsIDU5MzgwLCA1OTM4NCwgNTkzODgsIDU5MzkyLCA1OTM5NiwgNTk0MDAsIDAsIAotICAgIDU5NDA0LCA1OTQwOCwgNTk0MTIsIDU5NDE2LCA1OTQyMCwgNTk0MjQsIDU5NDI4LCAwLCA1OTQzMiwgNTk0MzYsIDU5NDQwLCAKLSAgICA1OTQ0NCwgNTk0NDgsIDU5NDUyLCA1OTQ1NiwgMCwgNTk0NjAsIDU5NDY0LCA1OTQ2OCwgNTk0NzIsIDU5NDc2LCA1OTQ4MCwgCi0gICAgNTk0ODQsIDAsIDU5NDg4LCA1OTQ5MiwgNTk0OTYsIDU5NTAwLCA1OTUwNCwgNTk1MDgsIDU5NTEyLCAwLCA1OTUxNiwgCi0gICAgNTk1MjAsIDU5NTI0LCA1OTUyOCwgNTk1MzIsIDU5NTM2LCA1OTU0MCwgMCwgNTk1NDQsIDU5NTQ5LCA1OTU1NCwgNTk1NTksIAotICAgIDU5NTY0LCA1OTU2OSwgNTk1NzQsIDU5NTc4LCA1OTU4MywgNTk1ODgsIDU5NTkzLCA1OTU5NywgNTk2MDIsIDU5NjA3LCAKLSAgICA1OTYxMiwgNTk2MTcsIDU5NjIxLCA1OTYyNiwgNTk2MzEsIDU5NjM2LCA1OTY0MSwgNTk2NDYsIDU5NjUxLCA1OTY1NSwgCi0gICAgNTk2NjAsIDU5NjY1LCA1OTY3MiwgNTk2NzcsIDU5NjgyLCA1OTY4OCwgNTk2OTUsIDU5NzAyLCA1OTcxMSwgNTk3MTgsIAotICAgIDU5NzI3LCA1OTczMSwgNTk3MzUsIDU5NzQxLCA1OTc0NywgNTk3NTMsIDU5NzYxLCA1OTc2NywgNTk3NzEsIDU5Nzc1LCAKLSAgICA1OTc3OSwgNTk3ODUsIDU5NzkxLCA1OTc5NSwgNTk3OTcsIDU5ODAxLCA1OTgwNywgNTk4MDksIDU5ODEzLCA1OTgxNiwgCi0gICAgNTk4MTksIDU5ODI1LCA1OTgzMCwgNTk4MzQsIDU5ODM4LCA1OTg0MywgNTk4NDksIDU5ODU0LCA1OTg1OSwgNTk4NjQsIAotICAgIDU5ODY5LCA1OTg3NiwgNTk4ODMsIDU5ODg4LCA1OTg5MywgNTk4OTgsIDU5OTAzLCA1OTkwOCwgNTk5MTMsIDU5OTE3LCAKLSAgICA1OTkyMSwgNTk5MjgsIDU5OTM1LCA1OTk0MSwgNTk5NDUsIDU5OTUwLCA1OTk1MywgNTk5NTcsIDU5OTY0LCA1OTk2OCwgCi0gICAgNTk5NzIsIDU5OTc2LCA1OTk4MCwgNTk5ODYsIDU5OTkyLCA1OTk5NiwgNjAwMDIsIDYwMDA2LCA2MDAxMCwgNjAwMTYsIAotICAgIDYwMDIxLCA2MDAyNiwgNjAwMjgsIDYwMDMxLCA2MDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjAwNDEsIDYwMDQ1LCA2MDA0OSwgNjAwNTQsIDYwMDU5LCA2MDA2NCwgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODEsIAotICAgIDYwMDg2LCA2MDA5MCwgNjAwOTQsIDYwMDk4LCA2MDEwMiwgNjAxMDcsIDYwMTEyLCA2MDExNywgNjAxMjIsIDYwMTI2LCAKLSAgICA2MDEzMCwgNjAxMzUsIDYwMTQwLCA2MDE0NSwgNjAxNTAsIDYwMTU0LCAwLCA2MDE1OCwgNjAxNjIsIDYwMTY2LCA2MDE3MCwgCi0gICAgNjAxNzQsIDYwMTc4LCA2MDE4MiwgNjAxODcsIDYwMTkyLCA2MDE5NiwgNjAyMDEsIDYwMjA2LCA2MDIxNSwgNjAyMTksIAotICAgIDYwMjIzLCA2MDIyNywgNjAyMzQsIDYwMjM4LCA2MDI0MywgNjAyNDgsIDYwMjUyLCA2MDI1NiwgNjAyNjIsIDYwMjY3LCAKLSAgICA2MDI3MiwgNjAyNzcsIDYwMjgyLCA2MDI4NiwgNjAyOTAsIDYwMjk0LCA2MDI5OCwgNjAzMDIsIDYwMzA3LCA2MDMxMiwgCi0gICAgNjAzMTYsIDYwMzIwLCA2MDMyNSwgNjAzMzAsIDYwMzM1LCA2MDMzOSwgNjAzNDMsIDYwMzQ4LCA2MDM1MywgNjAzNTksIAotICAgIDYwMzY1LCA2MDM2OSwgNjAzNzUsIDYwMzgxLCA2MDM4NSwgNjAzOTEsIDYwMzk3LCA2MDQwMiwgNjA0MDcsIDYwNDExLCAKLSAgICA2MDQxNywgNjA0MjEsIDYwNDI1LCA2MDQzMSwgNjA0MzcsIDYwNDQyLCA2MDQ0NywgNjA0NTEsIDYwNDU1LCA2MDQ2MywgCi0gICAgNjA0NjksIDYwNDc1LCA2MDQ4MSwgNjA0ODYsIDYwNDkxLCA2MDQ5NiwgNjA1MDIsIDYwNTA2LCA2MDUxMiwgNjA1MTYsIAotICAgIDYwNTIwLCA2MDUyNiwgNjA1MzIsIDYwNTM4LCA2MDU0NCwgNjA1NTAsIDYwNTU2LCA2MDU2MiwgNjA1NjgsIDYwNTc0LCAKLSAgICA2MDU4MCwgNjA1ODYsIDYwNTkyLCA2MDU5NiwgNjA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYwNjA4LCA2MDYxMSwgNjA2MTUsIDYwNjE5LCA2MDYyMywgNjA2MjcsIDYwNjMwLCA2MDYzMywgNjA2MzcsIDYwNjQxLCAKLSAgICA2MDY0NSwgNjA2NDksIDYwNjUyLCA2MDY1NywgNjA2NjEsIDYwNjY1LCA2MDY2OSwgNjA2NzQsIDYwNjc4LCA2MDY4MiwgCi0gICAgNjA2ODYsIDYwNjkwLCA2MDY5NiwgNjA3MDIsIDYwNzA2LCA2MDcxMCwgNjA3MTQsIDYwNzE4LCA2MDcyMiwgNjA3MjYsIAotICAgIDYwNzMwLCA2MDczNCwgNjA3MzgsIDYwNzQyLCA2MDc0NiwgNjA3NTIsIDYwNzU2LCA2MDc2MCwgNjA3NjQsIDYwNzY4LCAKLSAgICA2MDc3MiwgNjA3NzYsIDYwNzgwLCA2MDc4NCwgNjA3ODgsIDYwNzkyLCA2MDc5NiwgNjA4MDAsIDYwODA0LCA2MDgwOCwgCi0gICAgNjA4MTIsIDYwODE2LCA2MDgyMiwgNjA4MjgsIDYwODMzLCA2MDgzOCwgNjA4NDIsIDYwODQ2LCA2MDg1MCwgNjA4NTQsIAotICAgIDYwODU4LCA2MDg2MiwgNjA4NjYsIDYwODcwLCA2MDg3NCwgNjA4NzgsIDYwODgyLCA2MDg4NiwgNjA4OTAsIDYwODk0LCAKLSAgICA2MDg5OCwgNjA5MDIsIDYwOTA2LCA2MDkxMCwgNjA5MTQsIDYwOTE4LCA2MDkyMiwgNjA5MjYsIDYwOTMwLCA2MDkzNCwgCi0gICAgNjA5NDAsIDYwOTQ0LCA2MDk0OCwgNjA5NTIsIDYwOTU2LCA2MDk2MCwgNjA5NjQsIDYwOTY4LCA2MDk3MiwgNjA5NzcsIAotICAgIDYwOTg0LCA2MDk4OCwgNjA5OTIsIDYwOTk2LCA2MTAwMCwgNjEwMDQsIDYxMDA4LCA2MTAxMiwgNjEwMTYsIDYxMDIwLCAKLSAgICA2MTAyNCwgNjEwMjgsIDYxMDMyLCA2MTAzOSwgNjEwNDMsIDYxMDQ5LCA2MTA1MywgNjEwNTcsIDYxMDYxLCA2MTA2NSwgCi0gICAgNjEwNjksIDYxMDcyLCA2MTA3NiwgNjEwODAsIDYxMDg0LCA2MTA4OCwgNjEwOTIsIDYxMDk2LCA2MTEwMCwgNjExMDQsIAotICAgIDYxMTA4LCA2MTExMiwgNjExMTYsIDYxMTIwLCA2MTEyNCwgNjExMjgsIDYxMTMyLCA2MTEzNiwgNjExNDAsIDYxMTQ0LCAKLSAgICA2MTE0OCwgNjExNTIsIDYxMTU2LCA2MTE2MCwgNjExNjQsIDYxMTY4LCA2MTE3MiwgNjExNzYsIDYxMTgwLCA2MTE4NCwgCi0gICAgNjExODgsIDYxMTkyLCA2MTE5NiwgNjEyMDAsIDYxMjA2LCA2MTIxMCwgNjEyMTQsIDYxMjE4LCA2MTIyMiwgNjEyMjYsIAotICAgIDYxMjMwLCA2MTIzNCwgNjEyMzgsIDYxMjQyLCA2MTI0NiwgNjEyNTAsIDYxMjU0LCA2MTI1OCwgNjEyNjIsIDYxMjY2LCAKLSAgICA2MTI3MCwgNjEyNzQsIDYxMjc4LCA2MTI4MiwgNjEyODYsIDYxMjkwLCA2MTI5NCwgNjEyOTgsIDYxMzAyLCA2MTMwNiwgCi0gICAgNjEzMTAsIDYxMzE0LCA2MTMyMiwgNjEzMjYsIDYxMzMwLCA2MTMzNCwgNjEzMzgsIDYxMzQyLCA2MTM0OCwgNjEzNTIsIAotICAgIDYxMzU2LCA2MTM2MCwgNjEzNjQsIDYxMzY4LCA2MTM3MiwgNjEzNzYsIDYxMzgwLCA2MTM4NCwgNjEzODgsIDYxMzkyLCAKLSAgICA2MTM5NiwgNjE0MDAsIDYxNDA2LCA2MTQxMCwgNjE0MTQsIDYxNDE4LCA2MTQyMiwgNjE0MjYsIDYxNDMwLCA2MTQzNCwgCi0gICAgNjE0MzgsIDYxNDQyLCA2MTQ0NiwgNjE0NTAsIDYxNDU0LCA2MTQ1OCwgNjE0NjIsIDYxNDY2LCA2MTQ3MCwgNjE0NzQsIAotICAgIDYxNDc4LCA2MTQ4MiwgNjE0ODYsIDYxNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQ5NCwgNjE1MDMsIDYxNTExLCA2MTUyMiwgNjE1MzIsIAotICAgIDYxNTQwLCA2MTU0OSwgNjE1NTgsIDYxNTY4LCA2MTU4MCwgNjE1OTIsIDYxNjA0LCAwLCAwLCAwLCAwLCA2MTYxMCwgCi0gICAgNjE2MTMsIDYxNjE2LCA2MTYyMSwgNjE2MjQsIDYxNjMxLCA2MTYzNSwgNjE2MzksIDYxNjQzLCA2MTY0NywgNjE2NTEsIAotICAgIDYxNjU2LCA2MTY2MSwgNjE2NjUsIDYxNjY5LCA2MTY3NCwgNjE2NzksIDYxNjg0LCA2MTY4OSwgNjE2OTIsIDYxNjk1LCAKLSAgICA2MTcwMSwgNjE3MDcsIDYxNzEyLCA2MTcxNywgNjE3MjQsIDYxNzMxLCA2MTczNSwgNjE3MzksIDYxNzQzLCA2MTc1MSwgCi0gICAgNjE3NTcsIDYxNzY0LCA2MTc2OSwgNjE3NzQsIDYxNzc5LCA2MTc4NCwgNjE3ODksIDYxNzk0LCA2MTc5OSwgNjE4MDUsIAotICAgIDYxODEwLCA2MTgxNiwgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzYsIDYxODQyLCA2MTg0NywgNjE4NTEsIDYxODU3LCAKLSAgICA2MTg2OCwgNjE4NzgsIDYxODkzLCA2MTkwMywgNjE5MDcsIDYxOTE3LCA2MTkyMywgNjE5MjksIDYxOTM1LCA2MTk0MCwgCi0gICAgNjE5NDMsIDYxOTQ4LCA2MTk1MiwgMCwgNjE5NTgsIDYxOTYyLCA2MTk2NSwgNjE5NjksIDYxOTcyLCA2MTk3NiwgNjE5NzksIAotICAgIDYxOTgzLCA2MTk4NiwgNjE5OTAsIDYxOTkzLCA2MTk5NiwgNjIwMDAsIDYyMDA0LCA2MjAwOCwgNjIwMTIsIDYyMDE2LCAKLSAgICA2MjAyMCwgNjIwMjQsIDYyMDI4LCA2MjAzMiwgNjIwMzYsIDYyMDQwLCA2MjA0NCwgNjIwNDgsIDYyMDUyLCA2MjA1NiwgCi0gICAgNjIwNjAsIDYyMDY0LCA2MjA2OCwgNjIwNzIsIDYyMDc2LCA2MjA4MCwgNjIwODQsIDYyMDg4LCA2MjA5MywgNjIwOTcsIAotICAgIDYyMTAxLCA2MjEwNSwgNjIxMDksIDYyMTEyLCA2MjExNiwgNjIxMjAsIDYyMTI0LCA2MjEyOCwgNjIxMzIsIDYyMTM2LCAKLSAgICA2MjEzOSwgNjIxNDMsIDYyMTQ2LCA2MjE1MCwgNjIxNTQsIDYyMTU4LCA2MjE2MiwgNjIxNjYsIDYyMTcwLCA2MjE3NCwgCi0gICAgNjIxNzgsIDYyMTgyLCA2MjE4NiwgNjIxOTAsIDYyMTk0LCA2MjE5NywgNjIyMDEsIDYyMjA1LCA2MjIwOSwgNjIyMTMsIAotICAgIDYyMjE3LCA2MjIyMCwgNjIyMjUsIDYyMjI5LCA2MjIzNCwgNjIyMzgsIDYyMjQyLCA2MjI0NiwgNjIyNTAsIDYyMjU0LCAKLSAgICA2MjI1OCwgNjIyNjMsIDYyMjY3LCA2MjI3MSwgNjIyNzUsIDYyMjc5LCA2MjI4MywgNjIyODcsIDYyMjkxLCAwLCAwLCAKLSAgICA2MjI5NiwgNjIzMDQsIDYyMzEyLCA2MjMxOSwgNjIzMjYsIDYyMzMwLCA2MjMzNiwgNjIzNDEsIDYyMzQ2LCA2MjM1MCwgCi0gICAgNjIzNTMsIDYyMzU3LCA2MjM2MCwgNjIzNjQsIDYyMzY3LCA2MjM3MSwgNjIzNzQsIDYyMzc4LCA2MjM4MSwgNjIzODQsIAotICAgIDYyMzg4LCA2MjM5MiwgNjIzOTYsIDYyNDAwLCA2MjQwNCwgNjI0MDgsIDYyNDEyLCA2MjQxNiwgNjI0MjAsIDYyNDI0LCAKLSAgICA2MjQyOCwgNjI0MzIsIDYyNDM2LCA2MjQ0MCwgNjI0NDQsIDYyNDQ4LCA2MjQ1MiwgNjI0NTYsIDYyNDYwLCA2MjQ2NCwgCi0gICAgNjI0NjgsIDYyNDcyLCA2MjQ3NiwgNjI0ODEsIDYyNDg1LCA2MjQ4OSwgNjI0OTMsIDYyNDk3LCA2MjUwMCwgNjI1MDQsIAotICAgIDYyNTA4LCA2MjUxMiwgNjI1MTYsIDYyNTIwLCA2MjUyNCwgNjI1MjcsIDYyNTMxLCA2MjUzNCwgNjI1MzgsIDYyNTQyLCAKLSAgICA2MjU0NiwgNjI1NTAsIDYyNTU0LCA2MjU1OCwgNjI1NjIsIDYyNTY2LCA2MjU3MCwgNjI1NzQsIDYyNTc4LCA2MjU4MiwgCi0gICAgNjI1ODUsIDYyNTg5LCA2MjU5MywgNjI1OTcsIDYyNjAxLCA2MjYwNSwgNjI2MDgsIDYyNjEzLCA2MjYxNywgNjI2MjIsIAotICAgIDYyNjI2LCA2MjYzMCwgNjI2MzQsIDYyNjM4LCA2MjY0MiwgNjI2NDYsIDYyNjUxLCA2MjY1NSwgNjI2NTksIDYyNjYzLCAKLSAgICA2MjY2NywgNjI2NzEsIDYyNjc1LCA2MjY3OSwgNjI2ODQsIDYyNjg4LCA2MjY5MiwgNjI2OTYsIDYyNzAwLCA2MjcwNCwgCi0gICAgNjI3MTEsIDYyNzE1LCA2MjcyMSwgMCwgMCwgMCwgMCwgMCwgNjI3MjYsIDYyNzMxLCA2MjczNiwgNjI3NDEsIDYyNzQ2LCAKLSAgICA2Mjc1MSwgNjI3NTYsIDYyNzYxLCA2Mjc2NSwgNjI3NzAsIDYyNzc1LCA2Mjc4MCwgNjI3ODUsIDYyNzkwLCA2Mjc5NSwgCi0gICAgNjI4MDAsIDYyODA1LCA2MjgxMCwgNjI4MTQsIDYyODE5LCA2MjgyNCwgNjI4MjgsIDYyODMyLCA2MjgzNiwgNjI4NDAsIAotICAgIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCA2Mjg2NSwgNjI4NzAsIDYyODc1LCA2Mjg4MCwgNjI4ODUsIDYyODkwLCAKLSAgICA2Mjg5NCwgNjI4OTgsIDYyOTAzLCA2MjkwOCwgNjI5MTMsIDYyOTE4LCAwLCAwLCAwLCA2MjkyMywgNjI5MjcsIDYyOTMxLCAKLSAgICA2MjkzNSwgNjI5MzksIDYyOTQzLCA2Mjk0NywgNjI5NTEsIDYyOTU1LCA2Mjk1OSwgNjI5NjMsIDYyOTY3LCA2Mjk3MSwgCi0gICAgNjI5NzUsIDYyOTc5LCA2Mjk4MywgNjI5ODcsIDYyOTkxLCA2Mjk5NSwgNjI5OTksIDYzMDAzLCA2MzAwNywgNjMwMTEsIAotICAgIDYzMDE1LCA2MzAxOSwgNjMwMjMsIDYzMDI3LCA2MzAzMSwgNjMwMzUsIDYzMDM5LCA2MzA0MywgNjMwNDYsIDYzMDUwLCAKLSAgICA2MzA1MywgNjMwNTcsIDYzMDYxLCA2MzA2NCwgNjMwNjgsIDYzMDcyLCA2MzA3NSwgNjMwNzksIDYzMDgzLCA2MzA4NywgCi0gICAgNjMwOTEsIDYzMDk0LCA2MzA5OCwgNjMxMDIsIDYzMTA2LCA2MzExMCwgNjMxMTQsIDYzMTE4LCA2MzEyMSwgNjMxMjQsIAotICAgIDYzMTI4LCA2MzEzMiwgNjMxMzYsIDYzMTQwLCA2MzE0NCwgNjMxNDgsIDYzMTUyLCA2MzE1NiwgNjMxNjAsIDYzMTY0LCAKLSAgICA2MzE2OCwgNjMxNzIsIDYzMTc2LCA2MzE4MCwgNjMxODQsIDYzMTg4LCA2MzE5MiwgNjMxOTYsIDYzMjAwLCA2MzIwNCwgCi0gICAgNjMyMDgsIDYzMjEyLCA2MzIxNiwgNjMyMjAsIDYzMjI0LCA2MzIyOCwgNjMyMzIsIDYzMjM2LCA2MzI0MCwgNjMyNDQsIAotICAgIDYzMjQ4LCA2MzI1MiwgNjMyNTYsIDYzMjYwLCA2MzI2NCwgNjMyNjgsIDYzMjcyLCA2MzI3NiwgNjMyODAsIDYzMjg0LCAKLSAgICA2MzI4OCwgMCwgNjMyOTIsIDYzMjk4LCA2MzMwNCwgNjMzMDksIDYzMzE0LCA2MzMxOSwgNjMzMjUsIDYzMzMxLCA2MzMzNiwgCi0gICAgNjMzNDIsIDYzMzQ4LCA2MzM1NCwgNjMzNjAsIDYzMzY2LCA2MzM3MiwgNjMzNzgsIDYzMzg0LCA2MzM4OSwgNjMzOTQsIAotICAgIDYzMzk5LCA2MzQwNCwgNjM0MDksIDYzNDE0LCA2MzQxOSwgNjM0MjQsIDYzNDI5LCA2MzQzNCwgNjM0MzksIDYzNDQ0LCAKLSAgICA2MzQ0OSwgNjM0NTQsIDYzNDU5LCA2MzQ2NCwgNjM0NjksIDYzNDc0LCA2MzQ3OSwgNjM0ODQsIDYzNDkwLCA2MzQ5NiwgCi0gICAgNjM1MDIsIDYzNTA4LCA2MzUxMywgNjM1MTgsIDAsIDAsIDAsIDAsIDAsIDYzNTIzLCA2MzUyOCwgNjM1MzMsIDYzNTM4LCAKLSAgICA2MzU0MywgNjM1NDgsIDYzNTUzLCA2MzU1OCwgNjM1NjMsIDYzNTY4LCA2MzU3MywgNjM1NzgsIDYzNTgzLCA2MzU4OCwgCi0gICAgNjM1OTMsIDYzNTk4LCA2MzYwMywgNjM2MDgsIDYzNjEyLCA2MzYxNywgNjM2MjIsIDYzNjI3LCA2MzYzMiwgNjM2MzcsIAotICAgIDYzNjQyLCA2MzY0NywgNjM2NTIsIDYzNjU3LCA2MzY2MiwgNjM2NjcsIDYzNjcyLCA2MzY3NywgNjM2ODIsIDYzNjg3LCAKLSAgICA2MzY5MiwgNjM2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNzAyLCA2MzcwNywgNjM3MTIsIAotICAgIDYzNzE3LCA2MzcyMSwgNjM3MjYsIDYzNzMwLCA2MzczNSwgNjM3NDAsIDYzNzQ1LCA2Mzc1MCwgNjM3NTUsIDYzNzYwLCAKLSAgICA2Mzc2NSwgNjM3NzAsIDYzNzc1LCA2Mzc4MCwgNjM3ODQsIDYzNzg4LCA2Mzc5MiwgNjM3OTYsIDYzODAwLCA2MzgwNCwgCi0gICAgNjM4MDgsIDYzODEyLCA2MzgxNiwgNjM4MjAsIDYzODI0LCA2MzgyOCwgNjM4MzIsIDYzODM2LCA2Mzg0MSwgNjM4NDYsIAotICAgIDYzODUxLCA2Mzg1NiwgNjM4NjEsIDYzODY2LCA2Mzg3MSwgNjM4NzYsIDYzODgxLCA2Mzg4NiwgNjM4OTEsIDYzODk2LCAKLSAgICA2MzkwMSwgNjM5MDYsIDYzOTExLCA2MzkxNywgMCwgNjM5MjQsIDYzOTI3LCA2MzkzMCwgNjM5MzMsIDYzOTM2LCA2MzkzOSwgCi0gICAgNjM5NDIsIDYzOTQ2LCA2Mzk0OSwgNjM5NTMsIDYzOTU3LCA2Mzk2MSwgNjM5NjUsIDYzOTY5LCA2Mzk3MywgNjM5NzcsIAotICAgIDYzOTgxLCA2Mzk4NSwgNjM5ODksIDYzOTkzLCA2Mzk5NywgNjQwMDEsIDY0MDA1LCA2NDAwOSwgNjQwMTMsIDY0MDE3LCAKLSAgICA2NDAyMSwgNjQwMjUsIDY0MDI5LCA2NDAzMywgNjQwMzcsIDY0MDQxLCA2NDA0NSwgNjQwNDksIDY0MDUzLCA2NDA1NywgCi0gICAgNjQwNjEsIDY0MDY1LCA2NDA2OSwgNjQwNzMsIDY0MDc3LCA2NDA4NiwgNjQwOTUsIDY0MTA0LCA2NDExMywgNjQxMjIsIAotICAgIDY0MTMxLCA2NDE0MCwgNjQxNDksIDY0MTUyLCA2NDE1NywgNjQxNjIsIDY0MTY3LCA2NDE3MiwgNjQxNzcsIDY0MTgyLCAKLSAgICA2NDE4OCwgNjQxOTMsIDY0MTk5LCA2NDIwMywgNjQyMDgsIDY0MjEzLCA2NDIxOCwgNjQyMjMsIDY0MjI4LCA2NDIzMiwgCi0gICAgNjQyMzYsIDY0MjQwLCA2NDI0NCwgNjQyNDgsIDY0MjUyLCA2NDI1NiwgNjQyNjAsIDY0MjY0LCA2NDI2OCwgNjQyNzIsIAotICAgIDY0Mjc2LCA2NDI4MCwgNjQyODQsIDY0Mjg5LCA2NDI5NCwgNjQyOTksIDY0MzA0LCA2NDMwOSwgNjQzMTQsIDY0MzE5LCAKLSAgICA2NDMyNCwgNjQzMjksIDY0MzM0LCA2NDMzOSwgNjQzNDQsIDY0MzQ5LCA2NDM1NCwgNjQzNjAsIDY0MzY2LCA2NDM3MSwgCi0gICAgNjQzNzYsIDY0Mzc5LCA2NDM4MiwgNjQzODUsIDY0Mzg4LCA2NDM5MSwgNjQzOTQsIDY0Mzk4LCA2NDQwMSwgNjQ0MDUsIAotICAgIDY0NDA5LCA2NDQxMywgNjQ0MTcsIDY0NDIxLCA2NDQyNSwgNjQ0MjksIDY0NDMzLCA2NDQzNywgNjQ0NDEsIDY0NDQ1LCAKLSAgICA2NDQ0OSwgNjQ0NTMsIDY0NDU3LCA2NDQ2MSwgNjQ0NjUsIDY0NDY5LCA2NDQ3MywgNjQ0NzcsIDY0NDgxLCA2NDQ4NSwgCi0gICAgNjQ0ODksIDY0NDkzLCA2NDQ5NywgNjQ1MDEsIDY0NTA1LCA2NDUwOSwgNjQ1MTMsIDY0NTE3LCA2NDUyMSwgNjQ1MjUsIAotICAgIDY0NTI5LCA2NDUzMywgNjQ1MzcsIDY0NTQxLCA2NDU0NSwgNjQ1NDksIDY0NTUzLCA2NDU1NywgNjQ1NjEsIDY0NTY1LCAKLSAgICA2NDU3MCwgNjQ1NzYsIDY0NTgxLCA2NDU4NywgNjQ1OTEsIDY0NTk2LCA2NDYwMSwgNjQ2MDYsIDY0NjExLCA2NDYxNiwgCi0gICAgNjQ2MjEsIDY0NjI3LCA2NDYzMiwgNjQ2MzgsIDY0NjQyLCA2NDY0OSwgNjQ2NTYsIDY0NjYzLCA2NDY3MCwgNjQ2NzcsIAotICAgIDY0Njg0LCA2NDY5MSwgNjQ2OTgsIDY0NzA1LCA2NDcxMiwgNjQ3MTksIDY0NzI2LCA2NDcyOSwgNjQ3MzIsIDY0NzM1LCAKLSAgICA2NDc0MCwgNjQ3NDMsIDY0NzQ2LCA2NDc0OSwgNjQ3NTIsIDY0NzU1LCA2NDc1OCwgNjQ3NjIsIDY0NzY2LCA2NDc3MCwgCi0gICAgNjQ3NzQsIDY0Nzc4LCA2NDc4MiwgNjQ3ODYsIDY0NzkwLCA2NDc5NCwgNjQ3OTgsIDY0ODAyLCA2NDgwNiwgNjQ4MTAsIAotICAgIDY0ODEzLCA2NDgxNywgNjQ4MjEsIDY0ODI1LCA2NDgyOSwgNjQ4MzMsIDY0ODM2LCA2NDg0MCwgNjQ4NDQsIDY0ODQ4LCAKLSAgICA2NDg1MiwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NCwgNjQ4NzgsIDY0ODgyLCA2NDg4NiwgCi0gICAgNjQ4OTAsIDY0ODk0LCA2NDg5OCwgNjQ5MDIsIDY0OTA2LCA2NDkxMCwgNjQ5MTQsIDAsIDY0OTE4LCA2NDkyMSwgNjQ5MjQsIAotICAgIDY0OTI3LCA2NDkzMCwgNjQ5MzMsIDY0OTM2LCA2NDkzOSwgNjQ5NDIsIDY0OTQ1LCA2NDk0OCwgNjQ5NTEsIDY0OTU0LCAKLSAgICA2NDk1NywgNjQ5NjAsIDY0OTYzLCA2NDk2NiwgNjQ5NjksIDY0OTcyLCA2NDk3NSwgNjQ5NzgsIDY0OTgxLCA2NDk4NCwgCi0gICAgNjQ5ODcsIDY0OTkwLCA2NDk5MywgNjQ5OTYsIDY0OTk5LCA2NTAwMiwgNjUwMDUsIDY1MDA4LCA2NTAxMSwgNjUwMTQsIAotICAgIDY1MDE3LCA2NTAyMCwgNjUwMjMsIDY1MDI2LCA2NTAyOSwgNjUwMzIsIDY1MDM1LCA2NTAzOCwgNjUwNDEsIDY1MDQ0LCAKLSAgICA2NTA0NywgNjUwNTAsIDY1MDUzLCA2NTA1NiwgNjUwNTksIDY1MDYyLCA2NTA2NSwgNjUwNjgsIDY1MDcxLCA2NTA3NCwgCi0gICAgNjUwNzcsIDY1MDgwLCA2NTA4MywgNjUwODYsIDY1MDg5LCA2NTA5MiwgNjUwOTUsIDY1MDk4LCA2NTEwMSwgNjUxMDQsIAotICAgIDY1MTA3LCA2NTExMCwgNjUxMTMsIDY1MTE2LCA2NTExOSwgNjUxMjIsIDY1MTI1LCA2NTEyOCwgNjUxMzEsIDY1MTM0LCAKLSAgICA2NTEzNywgNjUxNDAsIDY1MTQzLCA2NTE0NiwgNjUxNDksIDY1MTUyLCA2NTE1NSwgNjUxNTgsIDY1MTYxLCA2NTE2NCwgCi0gICAgNjUxNjcsIDY1MTcwLCA2NTE3MywgNjUxNzYsIDY1MTc5LCA2NTE4MiwgNjUxOTEsIDY1MTk5LCA2NTIwNywgNjUyMTUsIAotICAgIDY1MjIzLCA2NTIzMSwgNjUyMzksIDY1MjQ4LCA2NTI1NiwgNjUyNjUsIDY1Mjc0LCA2NTI4MywgNjUyOTIsIDY1MzAxLCAKLSAgICA2NTMxMCwgNjUzMTksIDY1MzI4LCA2NTMzNywgNjUzNDYsIDY1MzU1LCA2NTM2NCwgNjUzNzMsIDY1MzgyLCA2NTM5MSwgCi0gICAgNjU0MDAsIDY1NDAzLCA2NTQwNiwgNjU0MDksIDY1NDExLCA2NTQxNCwgNjU0MTcsIDY1NDIwLCA2NTQyNSwgNjU0MzAsIAotICAgIDY1NDMzLCA2NTQ0MCwgNjU0NDcsIDY1NDU0LCA2NTQ2MSwgNjU0NjQsIDY1NDY5LCA2NTQ3MiwgNjU0NzYsIDY1NDc4LCAKLSAgICA2NTQ4MCwgNjU0ODMsIDY1NDg2LCA2NTQ4OSwgNjU0OTIsIDY1NDk1LCA2NTQ5OCwgNjU1MDEsIDY1NTA2LCA2NTUxMSwgCi0gICAgNjU1MTQsIDY1NTE3LCA2NTUyMCwgNjU1MjMsIDY1NTI2LCA2NTUyOSwgNjU1MzIsIDY1NTM2LCA2NTUzOSwgNjU1NDIsIAotICAgIDY1NTQ1LCA2NTU0OCwgNjU1NTEsIDY1NTU2LCA2NTU1OSwgNjU1NjIsIDY1NTY1LCA2NTU3MCwgNjU1NzUsIDY1NTgwLCAKLSAgICA2NTU4NSwgNjU1OTAsIDY1NTk1LCA2NTYwMCwgNjU2MDUsIDY1NjEwLCA2NTYxOCwgNjU2MjAsIDY1NjIzLCA2NTYyNiwgCi0gICAgNjU2MjksIDY1NjMyLCA2NTYzNywgNjU2NDUsIDY1NjQ4LCA2NTY1MSwgNjU2NTUsIDY1NjU4LCA2NTY2MSwgNjU2NjQsIAotICAgIDY1NjY5LCA2NTY3MiwgNjU2NzUsIDY1NjgwLCA2NTY4MywgNjU2ODYsIDY1NjkxLCA2NTY5NCwgNjU2OTcsIDY1NzAyLCAKLSAgICA2NTcwNywgNjU3MTIsIDY1NzE1LCA2NTcxOCwgNjU3MjEsIDY1NzI0LCA2NTczMCwgNjU3MzMsIDY1NzM2LCA2NTczOSwgCi0gICAgNjU3NDEsIDY1NzQ0LCA2NTc0NywgNjU3NTAsIDY1NzU1LCA2NTc1OCwgNjU3NjEsIDY1NzY0LCA2NTc2NywgNjU3NzAsIAotICAgIDY1Nzc1LCA2NTc3OCwgNjU3ODEsIDY1Nzg0LCA2NTc4NywgNjU3OTAsIDY1NzkzLCA2NTc5NiwgNjU3OTksIDY1ODAyLCAKLSAgICA2NTgwOCwgNjU4MTMsIDY1ODIxLCA2NTgyOSwgNjU4MzcsIDY1ODQ1LCA2NTg1MywgNjU4NjEsIDY1ODcwLCA2NTg3OCwgCi0gICAgNjU4ODcsIDY1ODk2LCA2NTkwNSwgNjU5MTQsIDY1OTIzLCA2NTkzMiwgNjU5NDEsIDY1OTUwLCA2NTk1OSwgNjU5NjgsIAotICAgIDY1OTc3LCA2NTk4NiwgNjU5OTUsIDY2MDA0LCA2NjAxMywgNjYwMjIsIDY2MDMxLCA2NjA0MCwgNjYwNDksIDY2MDU4LCAKLSAgICA2NjA2NywgNjYwNzYsIDY2MDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA2MDY5MywgNjA2OTcsIDYwNzAxLCA2MDcwNiwgNjA3MTEsIDYwNzE2LCA2MDcyMCwgNjA3MjQsIDYwNzI4LCAKKyAgICA2MDczMywgNjA3MzgsIDYwNzQyLCA2MDc0NiwgNjA3NTAsIDYwNzU0LCA2MDc1OSwgNjA3NjQsIDYwNzY5LCA2MDc3NCwgCisgICAgNjA3NzgsIDYwNzgyLCA2MDc4NywgNjA3OTIsIDYwNzk3LCA2MDgwMiwgNjA4MDYsIDAsIDYwODEwLCA2MDgxNCwgNjA4MTgsIAorICAgIDYwODIyLCA2MDgyNiwgNjA4MzAsIDYwODM0LCA2MDgzOSwgNjA4NDQsIDYwODQ4LCA2MDg1MywgNjA4NTgsIDYwODY3LCAKKyAgICA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4NiwgNjA4OTAsIDYwODk1LCA2MDkwMCwgNjA5MDQsIDYwOTA4LCA2MDkxNCwgCisgICAgNjA5MTksIDYwOTI0LCA2MDkyOSwgNjA5MzQsIDYwOTM4LCA2MDk0MiwgNjA5NDYsIDYwOTUwLCA2MDk1NCwgNjA5NTksIAorICAgIDYwOTY0LCA2MDk2OCwgNjA5NzIsIDYwOTc3LCA2MDk4MiwgNjA5ODcsIDYwOTkxLCA2MDk5NSwgNjEwMDAsIDYxMDA1LCAKKyAgICA2MTAxMSwgNjEwMTcsIDYxMDIxLCA2MTAyNywgNjEwMzMsIDYxMDM3LCA2MTA0MywgNjEwNDksIDYxMDU0LCA2MTA1OSwgCisgICAgNjEwNjMsIDYxMDY5LCA2MTA3MywgNjEwNzcsIDYxMDgzLCA2MTA4OSwgNjEwOTQsIDYxMDk5LCA2MTEwMywgNjExMDcsIAorICAgIDYxMTE1LCA2MTEyMSwgNjExMjcsIDYxMTMzLCA2MTEzOCwgNjExNDMsIDYxMTQ4LCA2MTE1NCwgNjExNTgsIDYxMTY0LCAKKyAgICA2MTE2OCwgNjExNzIsIDYxMTc4LCA2MTE4NCwgNjExOTAsIDYxMTk2LCA2MTIwMiwgNjEyMDgsIDYxMjE0LCA2MTIyMCwgCisgICAgNjEyMjYsIDYxMjMyLCA2MTIzOCwgNjEyNDQsIDYxMjQ4LCA2MTI1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNjEyNjAsIDYxMjYzLCA2MTI2NywgNjEyNzEsIDYxMjc1LCA2MTI3OSwgNjEyODIsIDYxMjg1LCA2MTI4OSwgCisgICAgNjEyOTMsIDYxMjk3LCA2MTMwMSwgNjEzMDQsIDYxMzA5LCA2MTMxMywgNjEzMTcsIDYxMzIxLCA2MTMyNiwgNjEzMzAsIAorICAgIDYxMzM0LCA2MTMzOCwgNjEzNDIsIDYxMzQ4LCA2MTM1NCwgNjEzNTgsIDYxMzYyLCA2MTM2NiwgNjEzNzAsIDYxMzc0LCAKKyAgICA2MTM3OCwgNjEzODIsIDYxMzg2LCA2MTM5MCwgNjEzOTQsIDYxMzk4LCA2MTQwNCwgNjE0MDgsIDYxNDEyLCA2MTQxNiwgCisgICAgNjE0MjAsIDYxNDI0LCA2MTQyOCwgNjE0MzIsIDYxNDM2LCA2MTQ0MCwgNjE0NDQsIDYxNDQ4LCA2MTQ1MiwgNjE0NTYsIAorICAgIDYxNDYwLCA2MTQ2NCwgNjE0NjgsIDYxNDc0LCA2MTQ4MCwgNjE0ODUsIDYxNDkwLCA2MTQ5NCwgNjE0OTgsIDYxNTAyLCAKKyAgICA2MTUwNiwgNjE1MTAsIDYxNTE0LCA2MTUxOCwgNjE1MjIsIDYxNTI2LCA2MTUzMCwgNjE1MzQsIDYxNTM4LCA2MTU0MiwgCisgICAgNjE1NDYsIDYxNTUwLCA2MTU1NCwgNjE1NTgsIDYxNTYyLCA2MTU2NiwgNjE1NzAsIDYxNTc0LCA2MTU3OCwgNjE1ODIsIAorICAgIDYxNTg2LCA2MTU5MiwgNjE1OTYsIDYxNjAwLCA2MTYwNCwgNjE2MDgsIDYxNjEyLCA2MTYxNiwgNjE2MjAsIDYxNjI0LCAKKyAgICA2MTYyOSwgNjE2MzYsIDYxNjQwLCA2MTY0NCwgNjE2NDgsIDYxNjUyLCA2MTY1NiwgNjE2NjAsIDYxNjY0LCA2MTY2OCwgCisgICAgNjE2NzIsIDYxNjc2LCA2MTY4MCwgNjE2ODQsIDYxNjkxLCA2MTY5NSwgNjE3MDEsIDYxNzA1LCA2MTcwOSwgNjE3MTMsIAorICAgIDYxNzE3LCA2MTcyMSwgNjE3MjQsIDYxNzI4LCA2MTczMiwgNjE3MzYsIDYxNzQwLCA2MTc0NCwgNjE3NDgsIDYxNzUyLCAKKyAgICA2MTc1NiwgNjE3NjAsIDYxNzY0LCA2MTc2OCwgNjE3NzIsIDYxNzc2LCA2MTc4MCwgNjE3ODQsIDYxNzg4LCA2MTc5MiwgCisgICAgNjE3OTYsIDYxODAwLCA2MTgwNCwgNjE4MDgsIDYxODEyLCA2MTgxNiwgNjE4MjAsIDYxODI0LCA2MTgyOCwgNjE4MzIsIAorICAgIDYxODM2LCA2MTg0MCwgNjE4NDQsIDYxODQ4LCA2MTg1MiwgNjE4NTgsIDYxODYyLCA2MTg2NiwgNjE4NzAsIDYxODc0LCAKKyAgICA2MTg3OCwgNjE4ODIsIDYxODg2LCA2MTg5MCwgNjE4OTQsIDYxODk4LCA2MTkwMiwgNjE5MDYsIDYxOTEwLCA2MTkxNCwgCisgICAgNjE5MTgsIDYxOTIyLCA2MTkyNiwgNjE5MzAsIDYxOTM0LCA2MTkzOCwgNjE5NDIsIDYxOTQ2LCA2MTk1MCwgNjE5NTQsIAorICAgIDYxOTU4LCA2MTk2MiwgNjE5NjYsIDYxOTc0LCA2MTk3OCwgNjE5ODIsIDYxOTg2LCA2MTk5MCwgNjE5OTQsIDYyMDAwLCAKKyAgICA2MjAwNCwgNjIwMDgsIDYyMDEyLCA2MjAxNiwgNjIwMjAsIDYyMDI0LCA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgCisgICAgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTgsIDYyMDYyLCA2MjA2NiwgNjIwNzAsIDYyMDc0LCA2MjA3OCwgNjIwODIsIAorICAgIDYyMDg2LCA2MjA5MCwgNjIwOTQsIDYyMDk4LCA2MjEwMiwgNjIxMDYsIDYyMTEwLCA2MjExNCwgNjIxMTgsIDYyMTIyLCAKKyAgICA2MjEyNiwgNjIxMzAsIDYyMTM0LCA2MjEzOCwgNjIxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMTQ2LCA2MjE1NSwgNjIxNjMsIDYyMTc0LCA2MjE4NCwgCisgICAgNjIxOTIsIDYyMjAxLCA2MjIxMCwgNjIyMjAsIDYyMjMyLCA2MjI0NCwgNjIyNTYsIDAsIDAsIDAsIDAsIDYyMjYyLCAKKyAgICA2MjI2NSwgNjIyNjgsIDYyMjczLCA2MjI3NiwgNjIyODMsIDYyMjg3LCA2MjI5MSwgNjIyOTUsIDYyMjk5LCA2MjMwMywgCisgICAgNjIzMDgsIDYyMzEzLCA2MjMxNywgNjIzMjEsIDYyMzI2LCA2MjMzMSwgNjIzMzYsIDYyMzQxLCA2MjM0NCwgNjIzNDcsIAorICAgIDYyMzUzLCA2MjM1OSwgNjIzNjQsIDYyMzY5LCA2MjM3NiwgNjIzODMsIDYyMzg3LCA2MjM5MSwgNjIzOTUsIDYyNDAzLCAKKyAgICA2MjQwOSwgNjI0MTYsIDYyNDIxLCA2MjQyNiwgNjI0MzEsIDYyNDM2LCA2MjQ0MSwgNjI0NDYsIDYyNDUxLCA2MjQ1NywgCisgICAgNjI0NjIsIDYyNDY4LCA2MjQ3MywgNjI0NzgsIDYyNDgzLCA2MjQ4OCwgNjI0OTQsIDYyNDk5LCA2MjUwMywgNjI1MDksIAorICAgIDYyNTIwLCA2MjUzMCwgNjI1NDUsIDYyNTU1LCA2MjU1OSwgNjI1NjksIDYyNTc1LCA2MjU4MSwgNjI1ODcsIDYyNTkyLCAKKyAgICA2MjU5NSwgNjI2MDAsIDYyNjA0LCAwLCA2MjYxMCwgNjI2MTQsIDYyNjE3LCA2MjYyMSwgNjI2MjQsIDYyNjI4LCA2MjYzMSwgCisgICAgNjI2MzUsIDYyNjM4LCA2MjY0MiwgNjI2NDUsIDYyNjQ4LCA2MjY1MiwgNjI2NTYsIDYyNjYwLCA2MjY2NCwgNjI2NjgsIAorICAgIDYyNjcyLCA2MjY3NiwgNjI2ODAsIDYyNjg0LCA2MjY4OCwgNjI2OTIsIDYyNjk2LCA2MjcwMCwgNjI3MDQsIDYyNzA4LCAKKyAgICA2MjcxMiwgNjI3MTYsIDYyNzIwLCA2MjcyNCwgNjI3MjgsIDYyNzMyLCA2MjczNiwgNjI3NDAsIDYyNzQ1LCA2Mjc0OSwgCisgICAgNjI3NTMsIDYyNzU3LCA2Mjc2MSwgNjI3NjQsIDYyNzY4LCA2Mjc3MSwgNjI3NzUsIDYyNzc5LCA2Mjc4MywgNjI3ODcsIAorICAgIDYyNzkwLCA2Mjc5NCwgNjI3OTcsIDYyODAxLCA2MjgwNSwgNjI4MDksIDYyODEzLCA2MjgxNywgNjI4MjEsIDYyODI1LCAKKyAgICA2MjgyOSwgNjI4MzMsIDYyODM3LCA2Mjg0MSwgNjI4NDUsIDYyODQ4LCA2Mjg1MiwgNjI4NTYsIDYyODYwLCA2Mjg2NCwgCisgICAgNjI4NjgsIDYyODcxLCA2Mjg3NiwgNjI4ODAsIDYyODg1LCA2Mjg4OSwgNjI4OTMsIDYyODk3LCA2MjkwMSwgNjI5MDUsIAorICAgIDYyOTA5LCA2MjkxNCwgNjI5MTgsIDYyOTIyLCA2MjkyNiwgNjI5MzAsIDYyOTM0LCA2MjkzOCwgNjI5NDIsIDAsIDAsIAorICAgIDYyOTQ3LCA2Mjk1NSwgNjI5NjMsIDYyOTcwLCA2Mjk3NywgNjI5ODEsIDYyOTg3LCA2Mjk5MiwgNjI5OTcsIDYzMDAxLCAKKyAgICA2MzAwNCwgNjMwMDgsIDYzMDExLCA2MzAxNSwgNjMwMTgsIDYzMDIyLCA2MzAyNSwgNjMwMjksIDYzMDMyLCA2MzAzNSwgCisgICAgNjMwMzksIDYzMDQzLCA2MzA0NywgNjMwNTEsIDYzMDU1LCA2MzA1OSwgNjMwNjMsIDYzMDY3LCA2MzA3MSwgNjMwNzUsIAorICAgIDYzMDc5LCA2MzA4MywgNjMwODcsIDYzMDkxLCA2MzA5NSwgNjMwOTksIDYzMTAzLCA2MzEwNywgNjMxMTEsIDYzMTE1LCAKKyAgICA2MzExOSwgNjMxMjMsIDYzMTI3LCA2MzEzMiwgNjMxMzYsIDYzMTQwLCA2MzE0NCwgNjMxNDgsIDYzMTUxLCA2MzE1NSwgCisgICAgNjMxNTgsIDYzMTYyLCA2MzE2NiwgNjMxNzAsIDYzMTc0LCA2MzE3NywgNjMxODEsIDYzMTg0LCA2MzE4OCwgNjMxOTIsIAorICAgIDYzMTk2LCA2MzIwMCwgNjMyMDQsIDYzMjA4LCA2MzIxMiwgNjMyMTYsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCAKKyAgICA2MzIzNSwgNjMyMzksIDYzMjQzLCA2MzI0NywgNjMyNTEsIDYzMjU1LCA2MzI1OCwgNjMyNjMsIDYzMjY3LCA2MzI3MiwgCisgICAgNjMyNzYsIDYzMjgwLCA2MzI4NCwgNjMyODgsIDYzMjkyLCA2MzI5NiwgNjMzMDEsIDYzMzA1LCA2MzMwOSwgNjMzMTMsIAorICAgIDYzMzE3LCA2MzMyMSwgNjMzMjUsIDYzMzI5LCA2MzMzNCwgNjMzMzgsIDYzMzQyLCA2MzM0NiwgNjMzNTAsIDYzMzU0LCAKKyAgICA2MzM2MSwgNjMzNjUsIDYzMzcxLCAwLCAwLCAwLCAwLCAwLCA2MzM3NiwgNjMzODEsIDYzMzg2LCA2MzM5MSwgNjMzOTYsIAorICAgIDYzNDAxLCA2MzQwNiwgNjM0MTEsIDYzNDE1LCA2MzQyMCwgNjM0MjUsIDYzNDMwLCA2MzQzNSwgNjM0NDAsIDYzNDQ1LCAKKyAgICA2MzQ1MCwgNjM0NTUsIDYzNDYwLCA2MzQ2NCwgNjM0NjksIDYzNDc0LCA2MzQ3OSwgNjM0ODMsIDYzNDg3LCA2MzQ5MSwgCisgICAgNjM0OTYsIDYzNTAxLCA2MzUwNiwgNjM1MTEsIDYzNTE2LCA2MzUyMSwgNjM1MjYsIDYzNTMxLCA2MzUzNiwgNjM1NDEsIAorICAgIDYzNTQ1LCA2MzU0OSwgNjM1NTQsIDYzNTU5LCA2MzU2NCwgNjM1NjksIDAsIDAsIDAsIDYzNTc0LCA2MzU3OCwgNjM1ODIsIAorICAgIDYzNTg2LCA2MzU5MCwgNjM1OTQsIDYzNTk4LCA2MzYwMiwgNjM2MDYsIDYzNjEwLCA2MzYxNCwgNjM2MTgsIDYzNjIyLCAKKyAgICA2MzYyNiwgNjM2MzAsIDYzNjM0LCA2MzYzOCwgNjM2NDIsIDYzNjQ2LCA2MzY1MCwgNjM2NTQsIDYzNjU4LCA2MzY2MiwgCisgICAgNjM2NjYsIDYzNjcwLCA2MzY3NCwgNjM2NzgsIDYzNjgyLCA2MzY4NiwgNjM2OTAsIDYzNjk0LCA2MzY5NywgNjM3MDEsIAorICAgIDYzNzA0LCA2MzcwOCwgNjM3MTIsIDYzNzE1LCA2MzcxOSwgNjM3MjMsIDYzNzI2LCA2MzczMCwgNjM3MzQsIDYzNzM4LCAKKyAgICA2Mzc0MiwgNjM3NDUsIDYzNzQ5LCA2Mzc1MywgNjM3NTcsIDYzNzYxLCA2Mzc2NSwgNjM3NjksIDYzNzcyLCA2Mzc3NSwgCisgICAgNjM3NzksIDYzNzgzLCA2Mzc4NywgNjM3OTEsIDYzNzk1LCA2Mzc5OSwgNjM4MDMsIDYzODA3LCA2MzgxMSwgNjM4MTUsIAorICAgIDYzODE5LCA2MzgyMywgNjM4MjcsIDYzODMxLCA2MzgzNSwgNjM4MzksIDYzODQzLCA2Mzg0NywgNjM4NTEsIDYzODU1LCAKKyAgICA2Mzg1OSwgNjM4NjMsIDYzODY3LCA2Mzg3MSwgNjM4NzUsIDYzODc5LCA2Mzg4MywgNjM4ODcsIDYzODkxLCA2Mzg5NSwgCisgICAgNjM4OTksIDYzOTAzLCA2MzkwNywgNjM5MTEsIDYzOTE1LCA2MzkxOSwgNjM5MjMsIDYzOTI3LCA2MzkzMSwgNjM5MzUsIAorICAgIDYzOTM5LCAwLCA2Mzk0MywgNjM5NDksIDYzOTU1LCA2Mzk2MCwgNjM5NjUsIDYzOTcwLCA2Mzk3NiwgNjM5ODIsIDYzOTg3LCAKKyAgICA2Mzk5MywgNjM5OTksIDY0MDA1LCA2NDAxMSwgNjQwMTcsIDY0MDIzLCA2NDAyOSwgNjQwMzUsIDY0MDQwLCA2NDA0NSwgCisgICAgNjQwNTAsIDY0MDU1LCA2NDA2MCwgNjQwNjUsIDY0MDcwLCA2NDA3NSwgNjQwODAsIDY0MDg1LCA2NDA5MCwgNjQwOTUsIAorICAgIDY0MTAwLCA2NDEwNSwgNjQxMTAsIDY0MTE1LCA2NDEyMCwgNjQxMjUsIDY0MTMwLCA2NDEzNSwgNjQxNDEsIDY0MTQ3LCAKKyAgICA2NDE1MywgNjQxNTksIDY0MTY0LCA2NDE2OSwgMCwgMCwgMCwgMCwgMCwgNjQxNzQsIDY0MTc5LCA2NDE4NCwgNjQxODksIAorICAgIDY0MTk0LCA2NDE5OSwgNjQyMDQsIDY0MjA5LCA2NDIxNCwgNjQyMTksIDY0MjI0LCA2NDIyOSwgNjQyMzQsIDY0MjM5LCAKKyAgICA2NDI0NCwgNjQyNDksIDY0MjU0LCA2NDI1OSwgNjQyNjQsIDY0MjY5LCA2NDI3NCwgNjQyNzksIDY0Mjg0LCA2NDI4OSwgCisgICAgNjQyOTQsIDY0Mjk5LCA2NDMwNCwgNjQzMDksIDY0MzE0LCA2NDMxOSwgNjQzMjQsIDY0MzI5LCA2NDMzNCwgNjQzMzksIAorICAgIDY0MzQ0LCA2NDM0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQzNTQsIDY0MzU5LCA2NDM2NCwgCisgICAgNjQzNjksIDY0MzczLCA2NDM3OCwgNjQzODIsIDY0Mzg3LCA2NDM5MiwgNjQzOTcsIDY0NDAyLCA2NDQwNywgNjQ0MTIsIAorICAgIDY0NDE3LCA2NDQyMiwgNjQ0MjcsIDY0NDMyLCA2NDQzNiwgNjQ0NDAsIDY0NDQ0LCA2NDQ0OCwgNjQ0NTIsIDY0NDU2LCAKKyAgICA2NDQ2MCwgNjQ0NjQsIDY0NDY4LCA2NDQ3MiwgNjQ0NzYsIDY0NDgwLCA2NDQ4NCwgNjQ0ODgsIDY0NDkzLCA2NDQ5OCwgCisgICAgNjQ1MDMsIDY0NTA4LCA2NDUxMywgNjQ1MTgsIDY0NTIzLCA2NDUyOCwgNjQ1MzMsIDY0NTM4LCA2NDU0MywgNjQ1NDgsIAorICAgIDY0NTUzLCA2NDU1OCwgNjQ1NjMsIDY0NTY5LCAwLCA2NDU3NiwgNjQ1ODAsIDY0NTg0LCA2NDU4OCwgNjQ1OTIsIDY0NTk2LCAKKyAgICA2NDYwMCwgNjQ2MDUsIDY0NjA5LCA2NDYxNCwgNjQ2MTksIDY0NjI0LCA2NDYyOSwgNjQ2MzQsIDY0NjM5LCA2NDY0NCwgCisgICAgNjQ2NDksIDY0NjU0LCA2NDY1OSwgNjQ2NjQsIDY0NjY5LCA2NDY3NCwgNjQ2NzksIDY0Njg0LCA2NDY4OSwgNjQ2OTQsIAorICAgIDY0Njk5LCA2NDcwNCwgNjQ3MDksIDY0NzE0LCA2NDcxOSwgNjQ3MjQsIDY0NzI5LCA2NDczNCwgNjQ3MzksIDY0NzQ0LCAKKyAgICA2NDc0OSwgNjQ3NTQsIDY0NzU5LCA2NDc2NCwgNjQ3NjksIDY0Nzc4LCA2NDc4NywgNjQ3OTYsIDY0ODA1LCA2NDgxNCwgCisgICAgNjQ4MjMsIDY0ODMyLCA2NDg0MSwgNjQ4NDQsIDY0ODQ5LCA2NDg1NCwgNjQ4NTksIDY0ODY0LCA2NDg2OSwgNjQ4NzQsIAorICAgIDY0ODgwLCA2NDg4NSwgNjQ4OTEsIDY0ODk1LCA2NDkwMCwgNjQ5MDUsIDY0OTEwLCA2NDkxNSwgNjQ5MjAsIDY0OTI0LCAKKyAgICA2NDkyOCwgNjQ5MzIsIDY0OTM2LCA2NDk0MCwgNjQ5NDQsIDY0OTQ4LCA2NDk1MiwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgCisgICAgNjQ5NjgsIDY0OTcyLCA2NDk3NiwgNjQ5ODEsIDY0OTg2LCA2NDk5MSwgNjQ5OTYsIDY1MDAxLCA2NTAwNiwgNjUwMTEsIAorICAgIDY1MDE2LCA2NTAyMSwgNjUwMjYsIDY1MDMxLCA2NTAzNiwgNjUwNDEsIDY1MDQ2LCA2NTA1MiwgNjUwNTgsIDY1MDYzLCAKKyAgICA2NTA2OCwgNjUwNzIsIDY1MDc2LCA2NTA4MCwgNjUwODQsIDY1MDg4LCA2NTA5MiwgNjUwOTcsIDY1MTAxLCA2NTEwNiwgCisgICAgNjUxMTEsIDY1MTE2LCA2NTEyMSwgNjUxMjYsIDY1MTMxLCA2NTEzNiwgNjUxNDEsIDY1MTQ2LCA2NTE1MSwgNjUxNTYsIAorICAgIDY1MTYxLCA2NTE2NiwgNjUxNzEsIDY1MTc2LCA2NTE4MSwgNjUxODYsIDY1MTkxLCA2NTE5NiwgNjUyMDEsIDY1MjA2LCAKKyAgICA2NTIxMSwgNjUyMTYsIDY1MjIxLCA2NTIyNiwgNjUyMzEsIDY1MjM2LCA2NTI0MSwgNjUyNDYsIDY1MjUxLCA2NTI1NiwgCisgICAgNjUyNjEsIDY1MjY2LCA2NTI3MSwgNjUyNzYsIDY1MjgxLCA2NTI4NiwgNjUyOTEsIDY1Mjk2LCA2NTMwMSwgNjUzMDYsIAorICAgIDY1MzExLCA2NTMxNywgNjUzMjIsIDY1MzI4LCA2NTMzMiwgNjUzMzcsIDY1MzQyLCA2NTM0NywgNjUzNTIsIDY1MzU3LCAKKyAgICA2NTM2MiwgNjUzNjgsIDY1MzczLCA2NTM3OSwgNjUzODMsIDY1MzkwLCA2NTM5NywgNjU0MDQsIDY1NDExLCA2NTQxOCwgCisgICAgNjU0MjUsIDY1NDMyLCA2NTQzOSwgNjU0NDYsIDY1NDUzLCA2NTQ2MCwgNjU0NjcsIDY1NDcwLCA2NTQ3MywgNjU0NzYsIAorICAgIDY1NDgxLCA2NTQ4NCwgNjU0ODcsIDY1NDkwLCA2NTQ5MywgNjU0OTYsIDY1NDk5LCA2NTUwMywgNjU1MDcsIDY1NTExLCAKKyAgICA2NTUxNSwgNjU1MTksIDY1NTIzLCA2NTUyNywgNjU1MzEsIDY1NTM1LCA2NTUzOSwgNjU1NDMsIDY1NTQ3LCA2NTU1MSwgCisgICAgNjU1NTQsIDY1NTU3LCA2NTU2MSwgNjU1NjUsIDY1NTY5LCA2NTU3MywgNjU1NzYsIDY1NTgwLCA2NTU4NCwgNjU1ODgsIAorICAgIDY1NTkyLCA2NTU5NSwgNjU1OTksIDY1NjAzLCA2NTYwNywgNjU2MTEsIDY1NjE0LCA2NTYxOCwgNjU2MjIsIDY1NjI2LCAKKyAgICA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIDY1NjUwLCA2NTY1NCwgMCwgNjU2NTgsIDY1NjYxLCA2NTY2NCwgCisgICAgNjU2NjcsIDY1NjcwLCA2NTY3MywgNjU2NzYsIDY1Njc5LCA2NTY4MiwgNjU2ODUsIDY1Njg4LCA2NTY5MSwgNjU2OTQsIAorICAgIDY1Njk3LCA2NTcwMCwgNjU3MDMsIDY1NzA2LCA2NTcwOSwgNjU3MTIsIDY1NzE1LCA2NTcxOCwgNjU3MjEsIDY1NzI0LCAKKyAgICA2NTcyNywgNjU3MzAsIDY1NzMzLCA2NTczNiwgNjU3MzksIDY1NzQyLCA2NTc0NSwgNjU3NDgsIDY1NzUxLCA2NTc1NCwgCisgICAgNjU3NTcsIDY1NzYwLCA2NTc2MywgNjU3NjYsIDY1NzY5LCA2NTc3MiwgNjU3NzUsIDY1Nzc4LCA2NTc4MSwgNjU3ODQsIAorICAgIDY1Nzg3LCA2NTc5MCwgNjU3OTMsIDY1Nzk2LCA2NTc5OSwgNjU4MDIsIDY1ODA1LCA2NTgwOCwgNjU4MTEsIDY1ODE0LCAKKyAgICA2NTgxNywgNjU4MjAsIDY1ODIzLCA2NTgyNiwgNjU4MjksIDY1ODMyLCA2NTgzNSwgNjU4MzgsIDY1ODQxLCA2NTg0NCwgCisgICAgNjU4NDcsIDY1ODUwLCA2NTg1MywgNjU4NTYsIDY1ODU5LCA2NTg2MiwgNjU4NjUsIDY1ODY4LCA2NTg3MSwgNjU4NzQsIAorICAgIDY1ODc3LCA2NTg4MCwgNjU4ODMsIDY1ODg2LCA2NTg4OSwgNjU4OTIsIDY1ODk1LCA2NTg5OCwgNjU5MDEsIDY1OTA0LCAKKyAgICA2NTkwNywgNjU5MTAsIDY1OTEzLCA2NTkxNiwgNjU5MTksIDY1OTIyLCA2NTkzMSwgNjU5MzksIDY1OTQ3LCA2NTk1NSwgCisgICAgNjU5NjMsIDY1OTcxLCA2NTk3OSwgNjU5ODgsIDY1OTk2LCA2NjAwNSwgNjYwMTQsIDY2MDIzLCA2NjAzMiwgNjYwNDEsIAorICAgIDY2MDUwLCA2NjA1OSwgNjYwNjgsIDY2MDc3LCA2NjA4NiwgNjYwOTUsIDY2MTA0LCA2NjExMywgNjYxMjIsIDY2MTMxLCAKKyAgICA2NjE0MCwgNjYxNDMsIDY2MTQ2LCA2NjE0OSwgNjYxNTEsIDY2MTU0LCA2NjE1NywgNjYxNjAsIDY2MTY1LCA2NjE3MCwgCisgICAgNjYxNzMsIDY2MTgwLCA2NjE4NywgNjYxOTQsIDY2MjAxLCA2NjIwNCwgNjYyMDksIDY2MjExLCA2NjIxNSwgNjYyMTcsIAorICAgIDY2MjE5LCA2NjIyMiwgNjYyMjUsIDY2MjI4LCA2NjIzMSwgNjYyMzQsIDY2MjM3LCA2NjI0MCwgNjYyNDUsIDY2MjUwLCAKKyAgICA2NjI1MywgNjYyNTYsIDY2MjU5LCA2NjI2MiwgNjYyNjUsIDY2MjY4LCA2NjI3MSwgNjYyNzUsIDY2Mjc4LCA2NjI4MSwgCisgICAgNjYyODQsIDY2Mjg3LCA2NjI5MCwgNjYyOTUsIDY2Mjk4LCA2NjMwMSwgNjYzMDQsIDY2MzA5LCA2NjMxNCwgNjYzMTksIAorICAgIDY2MzI0LCA2NjMyOSwgNjYzMzQsIDY2MzM5LCA2NjM0NCwgNjYzNTAsIDY2MzU4LCA2NjM2MCwgNjYzNjMsIDY2MzY2LCAKKyAgICA2NjM2OSwgNjYzNzIsIDY2Mzc4LCA2NjM4NiwgNjYzODksIDY2MzkyLCA2NjM5NywgNjY0MDAsIDY2NDAzLCA2NjQwNiwgCisgICAgNjY0MTEsIDY2NDE0LCA2NjQxNywgNjY0MjIsIDY2NDI1LCA2NjQyOCwgNjY0MzMsIDY2NDM2LCA2NjQzOSwgNjY0NDQsIAorICAgIDY2NDQ5LCA2NjQ1NCwgNjY0NTcsIDY2NDYwLCA2NjQ2MywgNjY0NjYsIDY2NDcyLCA2NjQ3NSwgNjY0NzgsIDY2NDgxLCAKKyAgICA2NjQ4MywgNjY0ODYsIDY2NDg5LCA2NjQ5MiwgNjY0OTcsIDY2NTAwLCA2NjUwMywgNjY1MDYsIDY2NTA5LCA2NjUxMiwgCisgICAgNjY1MTcsIDY2NTIwLCA2NjUyMywgNjY1MjYsIDY2NTI5LCA2NjUzMiwgNjY1MzUsIDY2NTM4LCA2NjU0MSwgNjY1NDQsIAorICAgIDY2NTUwLCA2NjU1NSwgNjY1NjMsIDY2NTcxLCA2NjU3OSwgNjY1ODcsIDY2NTk1LCA2NjYwMywgNjY2MTIsIDY2NjIwLCAKKyAgICA2NjYyOSwgNjY2MzgsIDY2NjQ3LCA2NjY1NiwgNjY2NjUsIDY2Njc0LCA2NjY4MywgNjY2OTIsIDY2NzAxLCA2NjcxMCwgCisgICAgNjY3MTksIDY2NzI4LCA2NjczNywgNjY3NDYsIDY2NzU1LCA2Njc2NCwgNjY3NzMsIDY2NzgyLCA2Njc5MSwgNjY4MDAsIAorICAgIDY2ODA5LCA2NjgxOCwgNjY4MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTc5OTQsMzA1ICsxOTExMywzMDUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NjA4OCwgNjYwOTcsIDY2MTA2LCA2NjExNywgNjYxMjQsIDY2MTI5LCA2NjEzNCwgNjYxNDEsIDY2MTQ4LCA2NjE1NCwgCi0gICAgNjYxNTksIDY2MTY0LCA2NjE2OSwgNjYxNzQsIDY2MTgxLCA2NjE4NiwgNjYxOTEsIDY2MTk2LCA2NjIwNywgNjYyMTIsIAotICAgIDY2MjE3LCA2NjIyNCwgNjYyMjksIDY2MjM2LCA2NjI0MSwgNjYyNDYsIDY2MjUzLCA2NjI2MCwgNjYyNjcsIDY2Mjc2LCAKLSAgICA2NjI4NSwgNjYyOTAsIDY2Mjk1LCA2NjMwMCwgNjYzMDcsIDY2MzEyLCA2NjMyMiwgNjYzMjksIDY2MzM0LCA2NjMzOSwgCi0gICAgNjYzNDQsIDY2MzQ5LCA2NjM1NCwgNjYzNTksIDY2MzY4LCA2NjM3NSwgNjYzODIsIDY2Mzg3LCA2NjM5NCwgNjYzOTksIAotICAgIDY2NDA2LCA2NjQxNSwgNjY0MjYsIDY2NDMxLCA2NjQ0MCwgNjY0NDUsIDY2NDUyLCA2NjQ2MSwgNjY0NzAsIDY2NDc1LCAKLSAgICA2NjQ4MCwgNjY0ODcsIDY2NDkzLCA2NjUwMCwgNjY1MDcsIDY2NTExLCA2NjUxNSwgNjY1MTgsIDY2NTIyLCA2NjUyNiwgCi0gICAgNjY1MzAsIDY2NTM0LCA2NjUzOCwgNjY1NDIsIDY2NTQ2LCA2NjU0OSwgNjY1NTMsIDY2NTU3LCA2NjU2MSwgNjY1NjUsIAotICAgIDY2NTY5LCA2NjU3MywgNjY1NzYsIDY2NTgwLCA2NjU4NCwgNjY1ODcsIDY2NTkxLCA2NjU5NSwgNjY1OTksIDY2NjAzLCAKLSAgICA2NjYwNywgNjY2MTEsIDY2NjE1LCA2NjYxOSwgNjY2MjMsIDY2NjI3LCA2NjYzMSwgNjY2MzUsIDY2NjM5LCA2NjY0MywgCi0gICAgNjY2NDcsIDY2NjUxLCA2NjY1NSwgNjY2NTksIDY2NjYzLCA2NjY2NywgNjY2NzEsIDY2Njc1LCA2NjY3OSwgNjY2ODMsIAotICAgIDY2Njg3LCA2NjY5MSwgNjY2OTUsIDY2Njk5LCA2NjcwMywgNjY3MDcsIDY2NzExLCA2NjcxNSwgNjY3MTksIDY2NzIzLCAKLSAgICA2NjcyNywgNjY3MzEsIDY2NzM1LCA2NjczOSwgNjY3NDMsIDY2NzQ3LCA2Njc1MSwgNjY3NTUsIDY2NzU5LCA2Njc2MywgCi0gICAgNjY3NjYsIDY2NzcwLCA2Njc3NCwgNjY3NzgsIDY2NzgyLCA2Njc4NiwgNjY3OTAsIDY2Nzk0LCA2Njc5OCwgNjY4MDIsIAotICAgIDY2ODA2LCA2NjgxMCwgNjY4MTQsIDY2ODE4LCA2NjgyMiwgNjY4MjYsIDY2ODMwLCA2NjgzNCwgNjY4MzgsIDY2ODQyLCAKLSAgICA2Njg0NiwgNjY4NTAsIDY2ODU0LCA2Njg1OCwgNjY4NjIsIDY2ODY2LCA2Njg3MCwgNjY4NzQsIDY2ODc4LCA2Njg4MiwgCi0gICAgNjY4ODYsIDY2ODkwLCA2Njg5NCwgNjY4OTgsIDY2OTAyLCA2NjkwNiwgNjY5MTAsIDY2OTE0LCA2NjkxOCwgNjY5MjIsIAotICAgIDY2OTI2LCA2NjkzMCwgNjY5MzQsIDY2OTM4LCA2Njk0MiwgNjY5NDYsIDY2OTUwLCA2Njk1NCwgNjY5NTgsIDY2OTYyLCAKLSAgICA2Njk2NiwgNjY5NzAsIDY2OTc0LCA2Njk3OCwgNjY5ODIsIDY2OTg2LCA2Njk5MCwgNjY5OTQsIDY2OTk4LCA2NzAwMiwgCi0gICAgNjcwMDYsIDY3MDEwLCA2NzAxNCwgNjcwMTgsIDY3MDIyLCA2NzAyNiwgNjcwMzAsIDY3MDM0LCA2NzAzOCwgNjcwNDIsIAotICAgIDY3MDQ2LCA2NzA1MCwgNjcwNTQsIDY3MDU4LCA2NzA2MiwgNjcwNjYsIDY3MDcwLCA2NzA3NCwgNjcwNzgsIDY3MDgyLCAKLSAgICA2NzA4NiwgNjcwOTAsIDY3MDk0LCA2NzA5OCwgNjcxMDIsIDY3MTA2LCA2NzExMCwgNjcxMTQsIDY3MTE4LCA2NzEyMiwgCi0gICAgNjcxMjYsIDY3MTMwLCA2NzEzNCwgNjcxMzgsIDY3MTQyLCA2NzE0NiwgNjcxNTAsIDY3MTU0LCA2NzE1OCwgNjcxNjIsIAotICAgIDY3MTY2LCA2NzE3MCwgNjcxNzQsIDY3MTc4LCA2NzE4MiwgNjcxODYsIDY3MTkwLCA2NzE5NCwgNjcxOTgsIDY3MjAyLCAKLSAgICA2NzIwNiwgNjcyMTAsIDY3MjE0LCA2NzIxOCwgNjcyMjIsIDY3MjI2LCA2NzIzMCwgNjcyMzQsIDY3MjM3LCA2NzI0MSwgCi0gICAgNjcyNDUsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYxLCA2NzI2NSwgNjcyNjksIDY3MjczLCA2NzI3NywgNjcyODEsIAotICAgIDY3Mjg1LCA2NzI4OSwgNjcyOTMsIDY3Mjk3LCA2NzMwMSwgNjczMDUsIDY3MzA5LCA2NzMxMywgNjczMTcsIDY3MzIxLCAKLSAgICA2NzMyNSwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgCi0gICAgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIAotICAgIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCAKLSAgICA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgCi0gICAgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgNjc1MDksIDY3NTEzLCA2NzUxNywgNjc1MjEsIAotICAgIDY3NTI1LCA2NzUyOSwgNjc1MzMsIDY3NTM3LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1MywgNjc1NTcsIDY3NTYxLCAKLSAgICA2NzU2NSwgNjc1NjksIDY3NTczLCA2NzU3NywgNjc1ODEsIDY3NTg1LCA2NzU4OSwgNjc1OTMsIDY3NTk3LCA2NzYwMSwgCi0gICAgNjc2MDUsIDY3NjA5LCA2NzYxMywgNjc2MTcsIDY3NjIxLCA2NzYyNSwgNjc2MjksIDY3NjMzLCA2NzYzNywgNjc2NDEsIAotICAgIDY3NjQ1LCA2NzY0OSwgNjc2NTMsIDY3NjU3LCA2NzY2MSwgNjc2NjUsIDY3NjY5LCA2NzY3MywgNjc2NzcsIDY3NjgxLCAKLSAgICA2NzY4NSwgNjc2ODksIDY3NjkzLCA2NzY5NywgNjc3MDAsIDY3NzA0LCA2NzcwOCwgNjc3MTIsIDY3NzE2LCA2NzcyMCwgCi0gICAgNjc3MjQsIDY3NzI4LCA2NzczMiwgNjc3MzYsIDY3NzQwLCA2Nzc0NCwgNjc3NDgsIDY3NzUyLCA2Nzc1NiwgNjc3NjAsIAotICAgIDY3NzY0LCA2Nzc2OCwgNjc3NzIsIDY3Nzc2LCA2Nzc4MCwgNjc3ODQsIDY3Nzg4LCA2Nzc5MiwgNjc3OTYsIDY3ODAwLCAKLSAgICA2NzgwNCwgNjc4MDgsIDY3ODEyLCA2NzgxNiwgNjc4MjAsIDY3ODI0LCA2NzgyOCwgNjc4MzIsIDY3ODM2LCA2Nzg0MCwgCi0gICAgNjc4NDQsIDY3ODQ4LCA2Nzg1MiwgNjc4NTYsIDY3ODYwLCA2Nzg2NCwgNjc4NjgsIDY3ODcyLCA2Nzg3NiwgNjc4ODAsIAotICAgIDY3ODg0LCA2Nzg4OCwgNjc4OTIsIDY3ODk2LCA2NzkwMCwgNjc5MDQsIDY3OTA4LCA2NzkxMiwgNjc5MTYsIDY3OTIwLCAKLSAgICA2NzkyNCwgNjc5MjgsIDY3OTMyLCA2NzkzNiwgNjc5NDAsIDY3OTQ0LCA2Nzk0OCwgNjc5NTIsIDY3OTU2LCA2Nzk2MCwgCi0gICAgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTgwLCA2Nzk4NCwgNjc5ODgsIDY3OTkyLCA2Nzk5NiwgNjgwMDAsIAotICAgIDY4MDA0LCA2ODAwOCwgNjgwMTIsIDY4MDE2LCA2ODAyMCwgNjgwMjQsIDY4MDI4LCA2ODAzMiwgNjgwMzYsIDY4MDQwLCAKLSAgICA2ODA0NCwgNjgwNDgsIDY4MDUyLCA2ODA1NiwgNjgwNjAsIDY4MDY0LCA2ODA2OCwgNjgwNzIsIDY4MDc2LCA2ODA4MCwgCi0gICAgNjgwODQsIDY4MDg4LCA2ODA5MiwgNjgwOTYsIDY4MTAwLCA2ODEwNCwgNjgxMDgsIDY4MTEyLCA2ODExNiwgNjgxMjAsIAotICAgIDY4MTI0LCA2ODEyOCwgNjgxMzIsIDY4MTM2LCA2ODE0MCwgNjgxNDQsIDY4MTQ4LCA2ODE1MiwgNjgxNTYsIDY4MTYwLCAKLSAgICA2ODE2NCwgNjgxNjgsIDY4MTcyLCA2ODE3NiwgNjgxODAsIDY4MTg0LCA2ODE4OCwgNjgxOTIsIDY4MTk2LCA2ODIwMCwgCi0gICAgNjgyMDQsIDY4MjA4LCA2ODIxMiwgNjgyMTYsIDY4MjIwLCA2ODIyNCwgNjgyMjgsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIAotICAgIDY4MjQ0LCA2ODI0OCwgNjgyNTIsIDY4MjU2LCA2ODI2MCwgNjgyNjQsIDY4MjY4LCA2ODI3MiwgNjgyNzYsIDY4MjgwLCAKLSAgICA2ODI4NCwgNjgyODgsIDY4MjkyLCA2ODI5NiwgNjgzMDAsIDY4MzA0LCA2ODMwOCwgNjgzMTIsIDY4MzE2LCA2ODMyMCwgCi0gICAgNjgzMjQsIDY4MzI4LCA2ODMzMiwgNjgzMzYsIDY4MzQwLCA2ODM0NCwgNjgzNDgsIDY4MzUyLCA2ODM1NiwgNjgzNjAsIAotICAgIDY4MzY0LCA2ODM2OCwgNjgzNzIsIDY4Mzc2LCA2ODM4MCwgNjgzODQsIDY4Mzg4LCA2ODM5MiwgNjgzOTYsIDY4NDAwLCAKLSAgICA2ODQwNCwgNjg0MDgsIDY4NDEyLCA2ODQxNiwgNjg0MjAsIDY4NDI0LCA2ODQyOCwgNjg0MzIsIDY4NDM2LCA2ODQ0MCwgCi0gICAgNjg0NDQsIDY4NDQ4LCA2ODQ1MiwgNjg0NTYsIDY4NDYwLCA2ODQ2NCwgNjg0NjgsIDY4NDcyLCA2ODQ3NiwgNjg0ODAsIAotICAgIDY4NDg0LCA2ODQ4OCwgNjg0OTIsIDY4NDk2LCA2ODUwMCwgNjg1MDQsIDY4NTA4LCA2ODUxMiwgNjg1MTYsIDY4NTIwLCAKLSAgICA2ODUyNCwgNjg1MjgsIDY4NTMyLCA2ODUzNiwgNjg1NDAsIDY4NTQ0LCA2ODU0OCwgNjg1NTIsIDY4NTU1LCA2ODU1OSwgCi0gICAgNjg1NjMsIDY4NTY3LCA2ODU3MSwgNjg1NzUsIDY4NTc5LCA2ODU4MywgNjg1ODcsIDY4NTkxLCA2ODU5NSwgNjg1OTksIAotICAgIDY4NjAzLCA2ODYwNywgNjg2MTEsIDY4NjE1LCA2ODYxOSwgNjg2MjMsIDY4NjI3LCA2ODYzMSwgNjg2MzUsIDY4NjM5LCAKLSAgICA2ODY0MywgNjg2NDcsIDY4NjUxLCA2ODY1NSwgNjg2NTksIDY4NjYzLCA2ODY2NywgNjg2NzEsIDY4Njc1LCA2ODY3OSwgCi0gICAgNjg2ODMsIDY4Njg3LCA2ODY5MSwgNjg2OTUsIDY4Njk5LCA2ODcwMywgNjg3MDcsIDY4NzExLCA2ODcxNSwgNjg3MTksIAotICAgIDY4NzIzLCA2ODcyNywgNjg3MzEsIDY4NzM1LCA2ODczOSwgNjg3NDMsIDY4NzQ3LCA2ODc1MSwgNjg3NTUsIDY4NzU5LCAKLSAgICA2ODc2MywgNjg3NjcsIDY4NzcxLCA2ODc3NSwgNjg3NzksIDY4NzgzLCA2ODc4NywgNjg3OTEsIDY4Nzk1LCA2ODc5OSwgCi0gICAgNjg4MDMsIDY4ODA3LCA2ODgxMSwgNjg4MTUsIDY4ODE5LCA2ODgyMywgNjg4MjcsIDY4ODMxLCA2ODgzNSwgNjg4MzksIAotICAgIDY4ODQzLCA2ODg0NywgNjg4NTEsIDY4ODU1LCA2ODg1OSwgNjg4NjMsIDY4ODY3LCA2ODg3MSwgNjg4NzUsIDY4ODc5LCAKLSAgICA2ODg4MywgNjg4ODcsIDY4ODkxLCA2ODg5NSwgNjg4OTksIDY4OTAzLCA2ODkwNywgNjg5MTEsIDY4OTE1LCA2ODkxOSwgCi0gICAgNjg5MjMsIDY4OTI3LCA2ODkzMSwgNjg5MzUsIDY4OTM5LCA2ODk0MywgNjg5NDcsIDY4OTUxLCA2ODk1NSwgNjg5NTksIAotICAgIDY4OTYzLCA2ODk2NywgNjg5NzEsIDY4OTc1LCA2ODk3OSwgNjg5ODMsIDY4OTg3LCA2ODk5MSwgNjg5OTUsIDY4OTk5LCAKLSAgICA2OTAwMywgNjkwMDcsIDY5MDEwLCA2OTAxNCwgNjkwMTgsIDY5MDIyLCA2OTAyNiwgNjkwMzAsIDY5MDM0LCA2OTAzOCwgCi0gICAgNjkwNDIsIDY5MDQ2LCA2OTA1MCwgNjkwNTQsIDY5MDU4LCA2OTA2MiwgNjkwNjYsIDY5MDcwLCA2OTA3NCwgNjkwNzgsIAotICAgIDY5MDgyLCA2OTA4NiwgNjkwOTAsIDY5MDk0LCA2OTA5OCwgNjkxMDIsIDY5MTA2LCA2OTExMCwgNjkxMTQsIDY5MTE4LCAKLSAgICA2OTEyMiwgNjkxMjYsIDY5MTMwLCA2OTEzNCwgNjkxMzgsIDY5MTQyLCA2OTE0NiwgNjkxNTAsIDY5MTU0LCA2OTE1OCwgCi0gICAgNjkxNjIsIDY5MTY2LCA2OTE3MCwgNjkxNzQsIDY5MTc4LCA2OTE4MiwgNjkxODYsIDY5MTkwLCA2OTE5NCwgNjkxOTgsIAotICAgIDY5MjAyLCA2OTIwNiwgNjkyMTAsIDY5MjE0LCA2OTIxOCwgNjkyMjIsIDY5MjI2LCA2OTIzMCwgNjkyMzQsIDY5MjM4LCAKLSAgICA2OTI0MiwgNjkyNDYsIDY5MjUwLCA2OTI1NCwgNjkyNTgsIDY5MjYyLCA2OTI2NiwgNjkyNzAsIDY5Mjc0LCA2OTI3OCwgCi0gICAgNjkyODIsIDY5Mjg2LCA2OTI5MCwgNjkyOTQsIDY5Mjk4LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMTgsIAotICAgIDY5MzIyLCA2OTMyNiwgNjkzMzAsIDY5MzM0LCA2OTMzOCwgNjkzNDIsIDY5MzQ2LCA2OTM1MCwgNjkzNTQsIDY5MzU4LCAKLSAgICA2OTM2MiwgNjkzNjYsIDY5MzcwLCA2OTM3NCwgNjkzNzgsIDY5MzgyLCA2OTM4NiwgNjkzOTAsIDY5Mzk0LCA2OTM5OCwgCi0gICAgNjk0MDIsIDY5NDA2LCA2OTQxMCwgNjk0MTQsIDY5NDE4LCA2OTQyMiwgNjk0MjYsIDY5NDMwLCA2OTQzNCwgNjk0MzgsIAotICAgIDY5NDQyLCA2OTQ0NiwgNjk0NTAsIDY5NDU0LCA2OTQ1OCwgNjk0NjIsIDY5NDY2LCA2OTQ3MCwgNjk0NzQsIDY5NDc4LCAKLSAgICA2OTQ4MiwgNjk0ODYsIDY5NDkwLCA2OTQ5NCwgNjk0OTgsIDY5NTAyLCA2OTUwNiwgNjk1MTAsIDY5NTE0LCA2OTUxOCwgCi0gICAgNjk1MjIsIDY5NTI2LCA2OTUzMCwgNjk1MzQsIDY5NTM4LCA2OTU0MiwgNjk1NDYsIDY5NTUwLCA2OTU1NCwgNjk1NTgsIAotICAgIDY5NTYyLCA2OTU2NiwgNjk1NzAsIDY5NTc0LCA2OTU3OCwgNjk1ODIsIDY5NTg2LCA2OTU5MCwgNjk1OTQsIDY5NTk4LCAKLSAgICA2OTYwMiwgNjk2MDYsIDY5NjEwLCA2OTYxMywgNjk2MTcsIDY5NjIxLCA2OTYyNSwgNjk2MjksIDY5NjMzLCA2OTYzNywgCi0gICAgNjk2NDEsIDY5NjQ1LCA2OTY0OSwgNjk2NTMsIDY5NjU3LCA2OTY2MSwgNjk2NjUsIDY5NjY5LCA2OTY3MywgNjk2NzcsIAotICAgIDY5NjgxLCA2OTY4NSwgNjk2ODksIDY5NjkzLCA2OTY5NywgNjk3MDEsIDY5NzA1LCA2OTcwOSwgNjk3MTMsIDY5NzE3LCAKLSAgICA2OTcyMSwgNjk3MjUsIDY5NzI5LCA2OTczMywgNjk3MzcsIDY5NzQxLCA2OTc0NSwgNjk3NDksIDY5NzUzLCA2OTc1NywgCi0gICAgNjk3NjEsIDY5NzY1LCA2OTc2OSwgNjk3NzMsIDY5Nzc3LCA2OTc4MSwgNjk3ODUsIDY5Nzg5LCA2OTc5MywgNjk3OTcsIAotICAgIDY5ODAxLCA2OTgwNSwgNjk4MDksIDY5ODEzLCA2OTgxNywgNjk4MjEsIDY5ODI1LCA2OTgyOSwgNjk4MzMsIDY5ODM3LCAKLSAgICA2OTg0MSwgNjk4NDUsIDY5ODQ5LCA2OTg1MywgNjk4NTcsIDY5ODYxLCA2OTg2NSwgNjk4NjksIDY5ODczLCA2OTg3NywgCi0gICAgNjk4ODEsIDY5ODg1LCA2OTg4OSwgNjk4OTMsIDY5ODk3LCA2OTkwMSwgNjk5MDUsIDY5OTA5LCA2OTkxMywgNjk5MTcsIAotICAgIDY5OTIxLCA2OTkyNSwgNjk5MjksIDY5OTMzLCA2OTkzNywgNjk5NDEsIDY5OTQ1LCA2OTk0OSwgNjk5NTMsIDY5OTU3LCAKLSAgICA2OTk2MSwgNjk5NjUsIDY5OTY5LCA2OTk3MywgNjk5NzcsIDY5OTgxLCA2OTk4NSwgNjk5ODksIDY5OTkzLCA2OTk5NywgCi0gICAgNzAwMDEsIDcwMDA1LCA3MDAwOSwgNzAwMTMsIDcwMDE3LCA3MDAyMSwgNzAwMjUsIDcwMDI5LCA3MDAzMywgNzAwMzcsIAotICAgIDcwMDQxLCA3MDA0NSwgNzAwNDksIDcwMDUzLCA3MDA1NywgNzAwNjEsIDcwMDY1LCA3MDA2OSwgNzAwNzMsIDcwMDc3LCAKLSAgICA3MDA4MSwgNzAwODUsIDcwMDg5LCA3MDA5MywgNzAwOTcsIDcwMTAxLCA3MDEwNSwgNzAxMDksIDcwMTEzLCA3MDExNywgCi0gICAgNzAxMjEsIDcwMTI1LCA3MDEyOSwgNzAxMzMsIDcwMTM3LCA3MDE0MSwgNzAxNDUsIDcwMTQ5LCA3MDE1MywgNzAxNTcsIAotICAgIDcwMTYxLCA3MDE2NSwgNzAxNjksIDcwMTczLCA3MDE3NywgNzAxODEsIDcwMTg1LCA3MDE4OSwgNzAxOTMsIDcwMTk3LCAKLSAgICA3MDIwMSwgNzAyMDUsIDcwMjA5LCA3MDIxMywgNzAyMTcsIDcwMjIxLCA3MDIyNSwgNzAyMjksIDcwMjMzLCA3MDIzNywgCi0gICAgNzAyNDEsIDcwMjQ1LCA3MDI0OSwgNzAyNTMsIDcwMjU3LCA3MDI2MSwgNzAyNjUsIDcwMjY5LCA3MDI3MywgNzAyNzcsIAotICAgIDcwMjgxLCA3MDI4NSwgNzAyODksIDcwMjkzLCA3MDI5NywgNzAzMDEsIDcwMzA1LCA3MDMwOSwgNzAzMTMsIDcwMzE3LCAKLSAgICA3MDMyMSwgNzAzMjUsIDcwMzI5LCA3MDMzMywgNzAzMzcsIDcwMzQxLCA3MDM0NSwgNzAzNDksIDcwMzUzLCA3MDM1NywgCi0gICAgNzAzNjEsIDcwMzY1LCA3MDM2OSwgNzAzNzMsIDcwMzc3LCA3MDM4MSwgNzAzODUsIDcwMzg5LCA3MDM5MywgNzAzOTcsIAotICAgIDcwNDAxLCA3MDQwNSwgNzA0MDksIDcwNDEzLCA3MDQxNywgNzA0MjEsIDcwNDI1LCA3MDQyOSwgNzA0MzMsIDcwNDM3LCAKLSAgICA3MDQ0MSwgNzA0NDUsIDcwNDQ5LCA3MDQ1MywgNzA0NTcsIDcwNDYxLCA3MDQ2NSwgNzA0NjksIDcwNDczLCA3MDQ3NywgCi0gICAgNzA0ODEsIDcwNDg1LCA3MDQ4OSwgNzA0OTMsIDcwNDk3LCA3MDUwMSwgNzA1MDUsIDcwNTA5LCA3MDUxMywgNzA1MTcsIAotICAgIDcwNTIxLCA3MDUyNSwgNzA1MjksIDcwNTMzLCA3MDUzNywgNzA1NDEsIDcwNTQ1LCA3MDU0OSwgNzA1NTMsIDcwNTU3LCAKLSAgICA3MDU2MSwgNzA1NjUsIDcwNTY5LCA3MDU3MywgNzA1NzcsIDcwNTgxLCA3MDU4NSwgNzA1ODksIDcwNTkzLCA3MDU5NywgCi0gICAgNzA2MDEsIDcwNjA1LCA3MDYwOSwgNzA2MTMsIDcwNjE3LCA3MDYyMSwgNzA2MjUsIDcwNjI5LCA3MDYzMywgNzA2MzcsIAotICAgIDcwNjQxLCA3MDY0NSwgNzA2NDksIDcwNjUzLCA3MDY1NywgNzA2NjEsIDcwNjY1LCA3MDY2OSwgNzA2NzMsIDcwNjc3LCAKLSAgICA3MDY4MSwgNzA2ODUsIDcwNjg5LCA3MDY5MywgNzA2OTcsIDcwNzAxLCA3MDcwNSwgNzA3MDksIDcwNzEzLCA3MDcxNywgCi0gICAgNzA3MjEsIDcwNzI1LCA3MDcyOSwgNzA3MzMsIDcwNzM3LCA3MDc0MSwgNzA3NDUsIDcwNzQ5LCA3MDc1MywgNzA3NTcsIAotICAgIDcwNzYxLCA3MDc2NSwgNzA3NjksIDcwNzczLCA3MDc3NywgNzA3ODEsIDcwNzg1LCA3MDc4OSwgNzA3OTMsIDcwNzk3LCAKLSAgICA3MDgwMSwgNzA4MDUsIDcwODA5LCA3MDgxMywgNzA4MTcsIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCA3MDgzNywgCi0gICAgNzA4NDEsIDcwODQ1LCA3MDg0OSwgNzA4NTMsIDcwODU3LCA3MDg2MSwgNzA4NjUsIDcwODY5LCA3MDg3MywgNzA4NzcsIAotICAgIDcwODgxLCA3MDg4NSwgNzA4ODksIDcwODkzLCA3MDg5NywgNzA5MDEsIDcwOTA1LCA3MDkwOSwgNzA5MTMsIDcwOTE3LCAKLSAgICA3MDkyMSwgNzA5MjUsIDcwOTI5LCA3MDkzMywgNzA5MzcsIDcwOTQxLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgCi0gICAgNzA5NjEsIDcwOTY1LCA3MDk2OSwgNzA5NzMsIDcwOTc3LCA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MywgNzA5OTcsIAotICAgIDcxMDAxLCA3MTAwNSwgNzEwMDksIDcxMDEzLCA3MTAxNywgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIDcxMDM3LCAKLSAgICA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgCi0gICAgNzEwODEsIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk3LCA3MTEwMSwgNzExMDUsIDcxMTA5LCA3MTExMywgNzExMTcsIAotICAgIDcxMTIxLCA3MTEyNSwgNzExMjksIDcxMTMzLCA3MTEzNywgNzExNDEsIDcxMTQ1LCA3MTE0OSwgNzExNTMsIDAsIDAsIDAsIAotICAgIDcxMTU3LCA3MTE2MSwgNzExNjUsIDcxMTY5LCA3MTE3MywgNzExNzcsIDcxMTgxLCA3MTE4NSwgNzExODksIDcxMTkzLCAKLSAgICA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgCi0gICAgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIAotICAgIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCAKLSAgICA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCA3MTM0MSwgNzEzNDUsIDcxMzQ5LCA3MTM1MywgCi0gICAgNzEzNTcsIDcxMzYxLCA3MTM2NSwgNzEzNjksIDcxMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTM3NywgCi0gICAgNzEzODIsIDcxMzg2LCA3MTM5MSwgNzEzOTYsIDcxNDAxLCA3MTQwNiwgNzE0MTEsIDcxNDE1LCA3MTQyMCwgNzE0MjUsIAotICAgIDcxNDMwLCA3MTQzNSwgNzE0NDAsIDcxNDQ1LCA3MTQ1MCwgNzE0NTQsIDcxNDU5LCA3MTQ2NCwgNzE0NjksIDcxNDc0LCAKLSAgICA3MTQ3OSwgNzE0ODQsIDcxNDg4LCA3MTQ5MywgNzE0OTgsIDcxNTAzLCA3MTUwOCwgNzE1MTMsIDcxNTE3LCA3MTUyMiwgCi0gICAgNzE1MjYsIDcxNTMxLCA3MTUzNSwgNzE1NDAsIDcxNTQ0LCA3MTU0OCwgNzE1NTIsIDcxNTU3LCA3MTU2MiwgNzE1NjcsIAotICAgIDcxNTc1LCA3MTU4MywgNzE1OTEsIDcxNTk5LCA3MTYwNywgNzE2MTUsIDcxNjIxLCA3MTYyOSwgNzE2MzMsIDcxNjM3LCAKLSAgICA3MTY0MSwgNzE2NDUsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIDcxNjYxLCA3MTY2NSwgNzE2NjksIDcxNjczLCA3MTY3NywgCi0gICAgNzE2ODEsIDcxNjg1LCA3MTY4OSwgNzE2OTMsIDcxNjk3LCA3MTcwMSwgNzE3MDUsIDcxNzA5LCA3MTcxMywgNzE3MTcsIAotICAgIDcxNzIxLCA3MTcyNSwgNzE3MjksIDcxNzMzLCA3MTczNywgNzE3NDEsIDcxNzQ1LCA3MTc0OSwgNzE3NTMsIDcxNzU3LCAKLSAgICA3MTc2MSwgNzE3NjUsIDcxNzY5LCA3MTc3MywgNzE3NzYsIDcxNzgwLCA3MTc4NCwgNzE3ODgsIDcxNzkyLCA3MTc5NiwgCi0gICAgNzE4MDAsIDcxODA0LCA3MTgwOCwgNzE4MTIsIDcxODE2LCA3MTgyMCwgNzE4MjQsIDcxODI4LCA3MTgzMiwgNzE4MzYsIAotICAgIDcxODQwLCA3MTg0NCwgNzE4NDgsIDcxODUyLCA3MTg1NiwgNzE4NjAsIDcxODY0LCA3MTg2OCwgNzE4NzIsIDcxODc2LCAKLSAgICA3MTg4MCwgNzE4ODQsIDcxODg4LCA3MTg5MiwgNzE4OTYsIDcxOTAwLCA3MTkwNCwgNzE5MDgsIDcxOTEyLCA3MTkxNiwgCi0gICAgNzE5MjAsIDcxOTIzLCA3MTkyNywgNzE5MzEsIDcxOTM0LCA3MTkzOCwgNzE5NDIsIDcxOTQ2LCA3MTk0OSwgNzE5NTMsIAotICAgIDcxOTU3LCA3MTk2MSwgNzE5NjUsIDcxOTY5LCA3MTk3MywgNzE5NzcsIDcxOTgxLCA3MTk4NSwgNzE5ODksIDcxOTkzLCAKLSAgICA3MTk5NywgNzIwMDEsIDcyMDA1LCA3MjAwOSwgNzIwMTMsIDcyMDE3LCA3MjAyMSwgNzIwMjUsIDcyMDI5LCA3MjAzMywgCi0gICAgNzIwMzcsIDcyMDQxLCA3MjA0NSwgNzIwNDgsIDcyMDUxLCA3MjA1NSwgNzIwNTksIDcyMDYzLCA3MjA2NiwgNzIwNzAsIAotICAgIDcyMDc0LCA3MjA3OCwgNzIwODIsIDcyMDg2LCA3MjA5MCwgNzIwOTQsIDcyMDk4LCA3MjEwMiwgNzIxMDYsIDcyMTEwLCAKLSAgICA3MjExNCwgNzIxMTgsIDcyMTIyLCA3MjEyNiwgNzIxMzAsIDcyMTM0LCA3MjEzOCwgNzIxNDIsIDcyMTQ2LCA3MjE1MCwgCi0gICAgNzIxNTQsIDcyMTU4LCA3MjE2MiwgNzIxNjYsIDcyMTcwLCA3MjE3NCwgNzIxNzgsIDcyMTgyLCA3MjE4NiwgNzIxOTAsIAotICAgIDcyMTk0LCA3MjE5OCwgNzIyMDIsIDcyMjA2LCA3MjIxMCwgNzIyMTQsIDcyMjE4LCA3MjIyMSwgNzIyMjUsIDcyMjI5LCAKLSAgICA3MjIzMywgNzIyMzcsIDcyMjQxLCA3MjI0NSwgNzIyNDksIDcyMjUzLCA3MjI1NywgNzIyNjEsIDcyMjY1LCA3MjI2OSwgCi0gICAgNzIyNzMsIDcyMjc3LCA3MjI4MSwgNzIyODUsIDcyMjg5LCA3MjI5MywgNzIyOTcsIDcyMzAxLCA3MjMwNSwgNzIzMDksIAotICAgIDcyMzEzLCA3MjMxNywgNzIzMjEsIDcyMzI1LCA3MjMyOSwgNzIzMzMsIDcyMzM3LCA3MjM0MSwgNzIzNDUsIDcyMzQ5LCAKLSAgICA3MjM1MywgNzIzNTcsIDcyMzYxLCA3MjM2NSwgNzIzNjgsIDcyMzcyLCA3MjM3NiwgNzIzODAsIDcyMzg0LCA3MjM4OCwgCi0gICAgNzIzOTIsIDcyMzk2LCA3MjQwMCwgNzI0MDQsIDcyNDA4LCA3MjQxMiwgNzI0MTYsIDcyNDIwLCA3MjQyNCwgNzI0MjgsIAotICAgIDcyNDMyLCA3MjQzNSwgNzI0MzksIDcyNDQzLCA3MjQ0NywgNzI0NTEsIDcyNDU1LCA3MjQ1OSwgNzI0NjMsIDcyNDY3LCAKLSAgICA3MjQ3MSwgNzI0NzUsIDcyNDc5LCA3MjQ4MywgNzI0ODcsIDcyNDkxLCA3MjQ5NSwgNzI0OTksIDcyNTAzLCA3MjUwNywgCi0gICAgNzI1MTEsIDcyNTE1LCA3MjUxOSwgNzI1MjIsIDcyNTI2LCA3MjUzMCwgNzI1MzQsIDcyNTM4LCA3MjU0MiwgNzI1NDYsIAotICAgIDcyNTUwLCA3MjU1NCwgNzI1NTgsIDcyNTYyLCA3MjU2NiwgNzI1NzAsIDcyNTc0LCA3MjU3OCwgNzI1ODIsIDcyNTg2LCAKLSAgICA3MjU5MCwgNzI1OTQsIDcyNTk4LCA3MjYwMiwgNzI2MDYsIDcyNjEwLCA3MjYxNCwgNzI2MTgsIDcyNjIyLCA3MjYyNiwgCi0gICAgNzI2MzAsIDcyNjM0LCA3MjYzOCwgNzI2NDIsIDcyNjQ2LCA3MjY1MCwgNzI2NTQsIDcyNjU4LCA3MjY2MiwgNzI2NjYsIAotICAgIDcyNjcwLCA3MjY3NCwgNzI2NzgsIDcyNjgyLCA3MjY4NiwgNzI2OTAsIDcyNjk0LCA3MjY5NywgNzI3MDIsIDcyNzA2LCAKLSAgICA3MjcxMiwgNzI3MTcsIDcyNzIzLCA3MjcyNywgNzI3MzEsIDcyNzM1LCA3MjczOSwgNzI3NDMsIDcyNzQ3LCA3Mjc1MSwgCi0gICAgNzI3NTUsIDcyNzU5LCA3Mjc2MywgNzI3NjcsIDcyNzcxLCA3Mjc3NSwgNzI3NzksIDcyNzgyLCA3Mjc4NSwgNzI3ODgsIAotICAgIDcyNzkxLCA3Mjc5NCwgNzI3OTcsIDcyODAxLCA3MjgwNCwgNzI4MDgsIDcyODEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjgxOSwgNzI4MjQsIDcyODI5LCA3MjgzNCwgNzI4MzksIAotICAgIDcyODQ2LCA3Mjg1MywgNzI4NTgsIDcyODYzLCA3Mjg2OCwgNzI4NzMsIDcyODgwLCA3Mjg4NywgNzI4OTQsIDcyOTAxLCAKLSAgICA3MjkwOCwgNzI5MTUsIDcyOTI1LCA3MjkzNSwgNzI5NDIsIDcyOTQ5LCA3Mjk1NiwgNzI5NjMsIDcyOTY5LCA3Mjk3NSwgCi0gICAgNzI5ODQsIDcyOTkzLCA3MzAwMCwgNzMwMDcsIDczMDE4LCA3MzAyOSwgNzMwMzQsIDczMDM5LCA3MzA0NiwgNzMwNTMsIAotICAgIDczMDYwLCA3MzA2NywgNzMwNzQsIDczMDgxLCA3MzA4OCwgNzMwOTUsIDczMTAxLCA3MzEwNywgNzMxMTMsIDczMTE5LCAKLSAgICA3MzEyNiwgNzMxMzMsIDczMTM4LCA3MzE0MiwgNzMxNDksIDczMTU2LCA3MzE2MywgNzMxNjcsIDczMTc0LCA3MzE3OCwgCi0gICAgNzMxODMsIDczMTg3LCA3MzE5MywgNzMxOTgsIDczMjA0LCA3MzIwOSwgNzMyMTMsIDczMjE3LCA3MzIyMCwgNzMyMjMsIAotICAgIDczMjI4LCA3MzIzMywgNzMyMzgsIDczMjQzLCA3MzI0OCwgNzMyNTMsIDczMjU4LCA3MzI2MywgNzMyNjgsIDczMjczLCAKLSAgICA3MzI4MSwgNzMyODksIDczMjk0LCA3MzI5OSwgNzMzMDQsIDczMzA5LCA3MzMxNCwgNzMzMTksIDczMzI0LCA3MzMyOSwgCi0gICAgNzMzMzQsIDczMzM5LCA3MzM0NCwgNzMzNDksIDczMzU0LCA3MzM1OSwgNzMzNjUsIDczMzcxLCA3MzM3NywgNzMzODMsIAotICAgIDczMzg4LCA3MzM5NCwgNzMzOTcsIDczNDAwLCA3MzQwMywgNzM0MDcsIDczNDExLCA3MzQxNSwgNzM0MTksIDczNDIyLCAKLSAgICA3MzQyNiwgNzM0MjksIDczNDMzLCA3MzQzNiwgNzM0NDAsIDczNDQ0LCA3MzQ0OCwgNzM0NTIsIDczNDU2LCA3MzQ2MCwgCi0gICAgNzM0NjQsIDczNDY4LCA3MzQ3MiwgNzM0NzYsIDczNDgwLCA3MzQ4NCwgNzM0ODgsIDczNDkyLCA3MzQ5NiwgNzM1MDAsIAotICAgIDczNTA0LCA3MzUwOCwgNzM1MTIsIDczNTE2LCA3MzUyMCwgNzM1MjQsIDczNTI3LCA3MzUzMSwgNzM1MzUsIDczNTM5LCAKLSAgICA3MzU0MywgNzM1NDcsIDczNTUxLCA3MzU1NSwgNzM1NTksIDczNTYzLCA3MzU2NywgNzM1NzEsIDczNTc1LCA3MzU3OSwgCi0gICAgNzM1ODMsIDczNTg3LCA3MzU5MSwgNzM1OTUsIDczNTk5LCA3MzYwMywgNzM2MDcsIDczNjExLCA3MzYxNSwgNzM2MTksIAotICAgIDczNjIzLCA3MzYyNywgNzM2MzEsIDczNjM1LCA3MzYzOSwgNzM2NDMsIDczNjQ3LCA3MzY1MSwgNzM2NTUsIDczNjU4LCAKLSAgICA3MzY2MiwgNzM2NjYsIDczNjcwLCA3MzY3NCwgNzM2NzgsIDczNjgyLCA3MzY4NiwgNzM2OTAsIDczNjk0LCA3MzY5OCwgCi0gICAgNzM3MDIsIDczNzA2LCA3MzcxMSwgNzM3MTYsIDczNzE5LCA3MzcyNCwgNzM3MjcsIDczNzMwLCA3MzczMywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzM3MzcsIDczNzQ2LCA3Mzc1NSwgNzM3NjQsIDczNzczLCA3Mzc4MiwgNzM3OTEsIDczODAwLCAKLSAgICA3MzgwOSwgNzM4MTcsIDczODI0LCA3MzgzMiwgNzM4MzksIDczODQ3LCA3Mzg1NywgNzM4NjYsIDczODc2LCA3Mzg4NSwgCi0gICAgNzM4OTUsIDczOTAzLCA3MzkxMCwgNzM5MTgsIDczOTI1LCA3MzkzMywgNzM5MzgsIDczOTQzLCA3Mzk0OSwgNzM5NTgsIAotICAgIDczOTY0LCA3Mzk3MCwgNzM5NzcsIDczOTg2LCA3Mzk5NCwgNzQwMDIsIDc0MDEwLCA3NDAxNywgNzQwMjQsIDc0MDMxLCAKLSAgICA3NDAzOCwgNzQwNDMsIDc0MDQ4LCA3NDA1MywgNzQwNTgsIDc0MDYzLCA3NDA2OCwgNzQwNzMsIDc0MDc4LCA3NDA4NiwgCi0gICAgNzQwOTQsIDc0MTAwLCA3NDEwNSwgNzQxMTAsIDc0MTE1LCA3NDEyMCwgNzQxMjUsIDc0MTMwLCA3NDEzNSwgNzQxNDAsIAotICAgIDc0MTQ1LCA3NDE1NCwgNzQxNjMsIDc0MTY4LCA3NDE3MywgNzQxODMsIDc0MTkzLCA3NDIwMCwgNzQyMDcsIDc0MjE2LCAKLSAgICA3NDIyNSwgNzQyMzcsIDc0MjQ5LCA3NDI1NSwgNzQyNjEsIDc0MjY5LCA3NDI3NywgNzQyODcsIDc0Mjk3LCA3NDMwNCwgCi0gICAgNzQzMTEsIDc0MzE2LCA3NDMyMSwgNzQzMzMsIDc0MzQ1LCA3NDM1MywgNzQzNjEsIDc0MzcxLCA3NDM4MSwgNzQzOTMsIAotICAgIDc0NDA1LCA3NDQxNCwgNzQ0MjMsIDc0NDMwLCA3NDQzNywgNzQ0NDQsIDc0NDUxLCA3NDQ2MCwgNzQ0NjksIDc0NDc0LCAKLSAgICA3NDQ3OSwgNzQ0ODYsIDc0NDkzLCA3NDUwMCwgNzQ1MDcsIDc0NTE5LCA3NDUzMSwgNzQ1MzYsIDc0NTQxLCA3NDU0NiwgCi0gICAgNzQ1NTEsIDc0NTU2LCA3NDU2MSwgNzQ1NjYsIDc0NTcxLCA3NDU3NSwgNzQ1ODAsIDc0NTg1LCA3NDU5MCwgNzQ1OTUsIAotICAgIDc0NjAwLCA3NDYwNiwgNzQ2MTEsIDc0NjE2LCA3NDYyMywgNzQ2MzAsIDc0NjM3LCA3NDY0NCwgNzQ2NTEsIDc0NjYwLCAKLSAgICA3NDY2OSwgNzQ2NzUsIDc0NjgxLCA3NDY4NywgNzQ2OTMsIDc0Njk5LCA3NDcwNSwgNzQ3MTIsIDc0NzE5LCA3NDcyNiwgCi0gICAgNzQ3MzAsIDc0NzM3LCA3NDc0MiwgNzQ3NDcsIDc0NzU0LCA3NDc2NywgNzQ3NzMsIDc0NzgxLCA3NDc4OSwgNzQ3OTYsIAotICAgIDc0ODAzLCA3NDgxMiwgNzQ4MjEsIDc0ODI4LCA3NDgzNSwgNzQ4NDIsIDc0ODQ5LCA3NDg1NiwgNzQ4NjMsIDc0ODcwLCAKLSAgICA3NDg3NywgNzQ4ODQsIDc0ODkxLCA3NDkwMCwgNzQ5MDksIDc0OTE4LCA3NDkyNywgNzQ5MzYsIDc0OTQ1LCA3NDk1NCwgCi0gICAgNzQ5NjMsIDc0OTcyLCA3NDk4MSwgNzQ5ODgsIDc0OTk1LCA3NTAwMSwgMCwgMCwgNzUwMDksIDc1MDE2LCA3NTAyMywgCi0gICAgNzUwMzEsIDc1MDM2LCA3NTA0MSwgNzUwNDYsIDc1MDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NjgzMCwgNjY4MzksIDY2ODQ4LCA2Njg1OSwgNjY4NjYsIDY2ODcxLCA2Njg3NiwgNjY4ODMsIDY2ODkwLCA2Njg5NiwgCisgICAgNjY5MDEsIDY2OTA2LCA2NjkxMSwgNjY5MTYsIDY2OTIzLCA2NjkyOCwgNjY5MzMsIDY2OTM4LCA2Njk0OSwgNjY5NTQsIAorICAgIDY2OTU5LCA2Njk2NiwgNjY5NzEsIDY2OTc4LCA2Njk4MywgNjY5ODgsIDY2OTk1LCA2NzAwMiwgNjcwMDksIDY3MDE4LCAKKyAgICA2NzAyNywgNjcwMzIsIDY3MDM3LCA2NzA0MiwgNjcwNDksIDY3MDU0LCA2NzA2NCwgNjcwNzEsIDY3MDc2LCA2NzA4MSwgCisgICAgNjcwODYsIDY3MDkxLCA2NzA5NiwgNjcxMDEsIDY3MTEwLCA2NzExNywgNjcxMjQsIDY3MTI5LCA2NzEzNiwgNjcxNDEsIAorICAgIDY3MTQ4LCA2NzE1NywgNjcxNjgsIDY3MTczLCA2NzE4MiwgNjcxODcsIDY3MTk0LCA2NzIwMywgNjcyMTIsIDY3MjE3LCAKKyAgICA2NzIyMiwgNjcyMjksIDY3MjM1LCA2NzI0MiwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjAsIDY3MjY0LCA2NzI2OCwgCisgICAgNjcyNzIsIDY3Mjc2LCA2NzI4MCwgNjcyODQsIDY3Mjg4LCA2NzI5MSwgNjcyOTUsIDY3Mjk5LCA2NzMwMywgNjczMDcsIAorICAgIDY3MzExLCA2NzMxNSwgNjczMTgsIDY3MzIyLCA2NzMyNiwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCAKKyAgICA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgCisgICAgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIAorICAgIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCAKKyAgICA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgCisgICAgNjc1MDgsIDY3NTEyLCA2NzUxNiwgNjc1MjAsIDY3NTI0LCA2NzUyOCwgNjc1MzIsIDY3NTM2LCA2NzU0MCwgNjc1NDQsIAorICAgIDY3NTQ4LCA2NzU1MiwgNjc1NTYsIDY3NTYwLCA2NzU2NCwgNjc1NjgsIDY3NTcyLCA2NzU3NiwgNjc1ODAsIDY3NTg0LCAKKyAgICA2NzU4OCwgNjc1OTIsIDY3NTk2LCA2NzYwMCwgNjc2MDQsIDY3NjA4LCA2NzYxMiwgNjc2MTYsIDY3NjIwLCA2NzYyNCwgCisgICAgNjc2MjgsIDY3NjMyLCA2NzYzNiwgNjc2NDAsIDY3NjQ0LCA2NzY0OCwgNjc2NTIsIDY3NjU2LCA2NzY2MCwgNjc2NjQsIAorICAgIDY3NjY4LCA2NzY3MiwgNjc2NzYsIDY3NjgwLCA2NzY4NCwgNjc2ODgsIDY3NjkyLCA2NzY5NiwgNjc3MDAsIDY3NzA0LCAKKyAgICA2NzcwOCwgNjc3MTIsIDY3NzE2LCA2NzcyMCwgNjc3MjQsIDY3NzI4LCA2NzczMiwgNjc3MzYsIDY3NzQwLCA2Nzc0NCwgCisgICAgNjc3NDgsIDY3NzUyLCA2Nzc1NiwgNjc3NjAsIDY3NzY0LCA2Nzc2OCwgNjc3NzIsIDY3Nzc2LCA2Nzc4MCwgNjc3ODQsIAorICAgIDY3Nzg4LCA2Nzc5MiwgNjc3OTYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODEyLCA2NzgxNiwgNjc4MjAsIDY3ODI0LCAKKyAgICA2NzgyOCwgNjc4MzIsIDY3ODM2LCA2Nzg0MCwgNjc4NDQsIDY3ODQ4LCA2Nzg1MiwgNjc4NTYsIDY3ODYwLCA2Nzg2NCwgCisgICAgNjc4NjgsIDY3ODcyLCA2Nzg3NiwgNjc4ODAsIDY3ODg0LCA2Nzg4OCwgNjc4OTIsIDY3ODk2LCA2NzkwMCwgNjc5MDQsIAorICAgIDY3OTA4LCA2NzkxMiwgNjc5MTYsIDY3OTIwLCA2NzkyNCwgNjc5MjgsIDY3OTMyLCA2NzkzNiwgNjc5NDAsIDY3OTQ0LCAKKyAgICA2Nzk0OCwgNjc5NTIsIDY3OTU2LCA2Nzk2MCwgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTc5LCA2Nzk4MywgCisgICAgNjc5ODcsIDY3OTkxLCA2Nzk5NSwgNjc5OTksIDY4MDAzLCA2ODAwNywgNjgwMTEsIDY4MDE1LCA2ODAxOSwgNjgwMjMsIAorICAgIDY4MDI3LCA2ODAzMSwgNjgwMzUsIDY4MDM5LCA2ODA0MywgNjgwNDcsIDY4MDUxLCA2ODA1NSwgNjgwNTksIDY4MDYzLCAKKyAgICA2ODA2NywgNjgwNzEsIDY4MDc1LCA2ODA3OSwgNjgwODMsIDY4MDg3LCA2ODA5MSwgNjgwOTUsIDY4MDk5LCA2ODEwMywgCisgICAgNjgxMDcsIDY4MTExLCA2ODExNSwgNjgxMTksIDY4MTIzLCA2ODEyNywgNjgxMzEsIDY4MTM1LCA2ODEzOSwgNjgxNDMsIAorICAgIDY4MTQ3LCA2ODE1MSwgNjgxNTUsIDY4MTU5LCA2ODE2MywgNjgxNjcsIDY4MTcxLCA2ODE3NSwgNjgxNzksIDY4MTgzLCAKKyAgICA2ODE4NywgNjgxOTEsIDY4MTk1LCA2ODE5OSwgNjgyMDMsIDY4MjA3LCA2ODIxMSwgNjgyMTUsIDY4MjE5LCA2ODIyMywgCisgICAgNjgyMjcsIDY4MjMxLCA2ODIzNSwgNjgyMzksIDY4MjQzLCA2ODI0NywgNjgyNTEsIDY4MjU1LCA2ODI1OSwgNjgyNjMsIAorICAgIDY4MjY3LCA2ODI3MSwgNjgyNzUsIDY4Mjc5LCA2ODI4MywgNjgyODcsIDY4MjkxLCA2ODI5NSwgNjgyOTksIDY4MzAzLCAKKyAgICA2ODMwNywgNjgzMTEsIDY4MzE1LCA2ODMxOSwgNjgzMjMsIDY4MzI3LCA2ODMzMSwgNjgzMzUsIDY4MzM5LCA2ODM0MywgCisgICAgNjgzNDcsIDY4MzUxLCA2ODM1NSwgNjgzNTksIDY4MzYzLCA2ODM2NywgNjgzNzEsIDY4Mzc1LCA2ODM3OSwgNjgzODMsIAorICAgIDY4Mzg3LCA2ODM5MSwgNjgzOTUsIDY4Mzk5LCA2ODQwMywgNjg0MDcsIDY4NDExLCA2ODQxNSwgNjg0MTksIDY4NDIzLCAKKyAgICA2ODQyNywgNjg0MzEsIDY4NDM1LCA2ODQzOSwgNjg0NDIsIDY4NDQ2LCA2ODQ1MCwgNjg0NTQsIDY4NDU4LCA2ODQ2MiwgCisgICAgNjg0NjYsIDY4NDcwLCA2ODQ3NCwgNjg0NzgsIDY4NDgyLCA2ODQ4NiwgNjg0OTAsIDY4NDk0LCA2ODQ5OCwgNjg1MDIsIAorICAgIDY4NTA2LCA2ODUxMCwgNjg1MTQsIDY4NTE4LCA2ODUyMiwgNjg1MjYsIDY4NTMwLCA2ODUzNCwgNjg1MzgsIDY4NTQyLCAKKyAgICA2ODU0NiwgNjg1NTAsIDY4NTU0LCA2ODU1OCwgNjg1NjIsIDY4NTY2LCA2ODU3MCwgNjg1NzQsIDY4NTc4LCA2ODU4MiwgCisgICAgNjg1ODYsIDY4NTkwLCA2ODU5NCwgNjg1OTgsIDY4NjAyLCA2ODYwNiwgNjg2MTAsIDY4NjE0LCA2ODYxOCwgNjg2MjIsIAorICAgIDY4NjI2LCA2ODYzMCwgNjg2MzQsIDY4NjM4LCA2ODY0MiwgNjg2NDYsIDY4NjUwLCA2ODY1NCwgNjg2NTgsIDY4NjYyLCAKKyAgICA2ODY2NiwgNjg2NzAsIDY4Njc0LCA2ODY3OCwgNjg2ODIsIDY4Njg2LCA2ODY5MCwgNjg2OTQsIDY4Njk4LCA2ODcwMiwgCisgICAgNjg3MDYsIDY4NzEwLCA2ODcxNCwgNjg3MTgsIDY4NzIyLCA2ODcyNiwgNjg3MzAsIDY4NzM0LCA2ODczOCwgNjg3NDIsIAorICAgIDY4NzQ2LCA2ODc1MCwgNjg3NTQsIDY4NzU4LCA2ODc2MiwgNjg3NjYsIDY4NzcwLCA2ODc3NCwgNjg3NzgsIDY4NzgyLCAKKyAgICA2ODc4NiwgNjg3OTAsIDY4Nzk0LCA2ODc5OCwgNjg4MDEsIDY4ODA1LCA2ODgwOSwgNjg4MTMsIDY4ODE3LCA2ODgyMSwgCisgICAgNjg4MjUsIDY4ODI5LCA2ODgzMywgNjg4MzcsIDY4ODQxLCA2ODg0NSwgNjg4NDksIDY4ODUzLCA2ODg1NywgNjg4NjEsIAorICAgIDY4ODY1LCA2ODg2OSwgNjg4NzMsIDY4ODc3LCA2ODg4MSwgNjg4ODUsIDY4ODg5LCA2ODg5MywgNjg4OTcsIDY4OTAxLCAKKyAgICA2ODkwNSwgNjg5MDksIDY4OTEzLCA2ODkxNywgNjg5MjEsIDY4OTI1LCA2ODkyOSwgNjg5MzMsIDY4OTM3LCA2ODk0MSwgCisgICAgNjg5NDUsIDY4OTQ5LCA2ODk1MywgNjg5NTcsIDY4OTYxLCA2ODk2NSwgNjg5NjksIDY4OTczLCA2ODk3NywgNjg5ODEsIAorICAgIDY4OTg1LCA2ODk4OSwgNjg5OTMsIDY4OTk3LCA2OTAwMSwgNjkwMDUsIDY5MDA5LCA2OTAxMywgNjkwMTcsIDY5MDIxLCAKKyAgICA2OTAyNSwgNjkwMjksIDY5MDMzLCA2OTAzNywgNjkwNDAsIDY5MDQ0LCA2OTA0OCwgNjkwNTIsIDY5MDU2LCA2OTA2MCwgCisgICAgNjkwNjQsIDY5MDY4LCA2OTA3MiwgNjkwNzYsIDY5MDgwLCA2OTA4NCwgNjkwODgsIDY5MDkyLCA2OTA5NiwgNjkxMDAsIAorICAgIDY5MTA0LCA2OTEwOCwgNjkxMTIsIDY5MTE2LCA2OTEyMCwgNjkxMjQsIDY5MTI4LCA2OTEzMiwgNjkxMzYsIDY5MTQwLCAKKyAgICA2OTE0NCwgNjkxNDgsIDY5MTUyLCA2OTE1NiwgNjkxNjAsIDY5MTY0LCA2OTE2OCwgNjkxNzIsIDY5MTc2LCA2OTE4MCwgCisgICAgNjkxODQsIDY5MTg4LCA2OTE5MiwgNjkxOTYsIDY5MjAwLCA2OTIwNCwgNjkyMDgsIDY5MjEyLCA2OTIxNiwgNjkyMjAsIAorICAgIDY5MjI0LCA2OTIyOCwgNjkyMzIsIDY5MjM2LCA2OTI0MCwgNjkyNDQsIDY5MjQ4LCA2OTI1MiwgNjkyNTYsIDY5MjYwLCAKKyAgICA2OTI2NCwgNjkyNjgsIDY5MjcyLCA2OTI3NiwgNjkyODAsIDY5Mjg0LCA2OTI4OCwgNjkyOTIsIDY5Mjk1LCA2OTI5OSwgCisgICAgNjkzMDMsIDY5MzA3LCA2OTMxMSwgNjkzMTUsIDY5MzE5LCA2OTMyMywgNjkzMjcsIDY5MzMxLCA2OTMzNSwgNjkzMzksIAorICAgIDY5MzQzLCA2OTM0NywgNjkzNTEsIDY5MzU1LCA2OTM1OSwgNjkzNjMsIDY5MzY3LCA2OTM3MSwgNjkzNzUsIDY5Mzc5LCAKKyAgICA2OTM4MywgNjkzODcsIDY5MzkxLCA2OTM5NSwgNjkzOTksIDY5NDAzLCA2OTQwNywgNjk0MTEsIDY5NDE1LCA2OTQxOSwgCisgICAgNjk0MjMsIDY5NDI3LCA2OTQzMSwgNjk0MzUsIDY5NDM5LCA2OTQ0MywgNjk0NDcsIDY5NDUxLCA2OTQ1NSwgNjk0NTksIAorICAgIDY5NDYzLCA2OTQ2NywgNjk0NzEsIDY5NDc1LCA2OTQ3OSwgNjk0ODMsIDY5NDg3LCA2OTQ5MSwgNjk0OTUsIDY5NDk5LCAKKyAgICA2OTUwMywgNjk1MDcsIDY5NTExLCA2OTUxNSwgNjk1MTksIDY5NTIzLCA2OTUyNywgNjk1MzEsIDY5NTM1LCA2OTUzOSwgCisgICAgNjk1NDMsIDY5NTQ3LCA2OTU1MSwgNjk1NTUsIDY5NTU5LCA2OTU2MywgNjk1NjcsIDY5NTcxLCA2OTU3NSwgNjk1NzksIAorICAgIDY5NTgzLCA2OTU4NywgNjk1OTEsIDY5NTk1LCA2OTU5OSwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTUsIDY5NjE5LCAKKyAgICA2OTYyMywgNjk2MjcsIDY5NjMxLCA2OTYzNSwgNjk2MzksIDY5NjQzLCA2OTY0NywgNjk2NTEsIDY5NjU1LCA2OTY1OSwgCisgICAgNjk2NjMsIDY5NjY3LCA2OTY3MSwgNjk2NzUsIDY5Njc5LCA2OTY4MywgNjk2ODcsIDY5NjkxLCA2OTY5NSwgNjk2OTksIAorICAgIDY5NzAzLCA2OTcwNywgNjk3MTEsIDY5NzE1LCA2OTcxOSwgNjk3MjMsIDY5NzI3LCA2OTczMSwgNjk3MzUsIDY5NzM5LCAKKyAgICA2OTc0MywgNjk3NDcsIDY5NzUwLCA2OTc1NCwgNjk3NTgsIDY5NzYyLCA2OTc2NiwgNjk3NzAsIDY5Nzc0LCA2OTc3OCwgCisgICAgNjk3ODIsIDY5Nzg2LCA2OTc5MCwgNjk3OTQsIDY5Nzk4LCA2OTgwMiwgNjk4MDYsIDY5ODEwLCA2OTgxNCwgNjk4MTgsIAorICAgIDY5ODIyLCA2OTgyNiwgNjk4MzAsIDY5ODM0LCA2OTgzOCwgNjk4NDIsIDY5ODQ2LCA2OTg1MCwgNjk4NTQsIDY5ODU4LCAKKyAgICA2OTg2MiwgNjk4NjYsIDY5ODcwLCA2OTg3NCwgNjk4NzgsIDY5ODgyLCA2OTg4NiwgNjk4OTAsIDY5ODk0LCA2OTg5OCwgCisgICAgNjk5MDIsIDY5OTA2LCA2OTkxMCwgNjk5MTQsIDY5OTE4LCA2OTkyMiwgNjk5MjYsIDY5OTMwLCA2OTkzNCwgNjk5MzgsIAorICAgIDY5OTQyLCA2OTk0NiwgNjk5NTAsIDY5OTU0LCA2OTk1OCwgNjk5NjIsIDY5OTY2LCA2OTk3MCwgNjk5NzQsIDY5OTc4LCAKKyAgICA2OTk4MiwgNjk5ODYsIDY5OTkwLCA2OTk5NCwgNjk5OTgsIDcwMDAyLCA3MDAwNiwgNzAwMTAsIDcwMDE0LCA3MDAxOCwgCisgICAgNzAwMjIsIDcwMDI2LCA3MDAzMCwgNzAwMzQsIDcwMDM4LCA3MDA0MiwgNzAwNDYsIDcwMDUwLCA3MDA1NCwgNzAwNTgsIAorICAgIDcwMDYyLCA3MDA2NiwgNzAwNzAsIDcwMDc0LCA3MDA3OCwgNzAwODIsIDcwMDg2LCA3MDA5MCwgNzAwOTQsIDcwMDk4LCAKKyAgICA3MDEwMiwgNzAxMDYsIDcwMTEwLCA3MDExNCwgNzAxMTgsIDcwMTIyLCA3MDEyNiwgNzAxMzAsIDcwMTM0LCA3MDEzOCwgCisgICAgNzAxNDIsIDcwMTQ2LCA3MDE1MCwgNzAxNTQsIDcwMTU4LCA3MDE2MiwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxNzgsIAorICAgIDcwMTgyLCA3MDE4NiwgNzAxOTAsIDcwMTk0LCA3MDE5OCwgNzAyMDIsIDcwMjA2LCA3MDIxMCwgNzAyMTQsIDcwMjE4LCAKKyAgICA3MDIyMiwgNzAyMjYsIDcwMjMwLCA3MDIzNCwgNzAyMzgsIDcwMjQyLCA3MDI0NiwgNzAyNTAsIDcwMjU0LCA3MDI1OCwgCisgICAgNzAyNjIsIDcwMjY2LCA3MDI3MCwgNzAyNzQsIDcwMjc4LCA3MDI4MiwgNzAyODYsIDcwMjkwLCA3MDI5NCwgNzAyOTgsIAorICAgIDcwMzAyLCA3MDMwNiwgNzAzMTAsIDcwMzE0LCA3MDMxOCwgNzAzMjIsIDcwMzI2LCA3MDMzMCwgNzAzMzQsIDcwMzM4LCAKKyAgICA3MDM0MiwgNzAzNDYsIDcwMzUwLCA3MDM1MywgNzAzNTcsIDcwMzYxLCA3MDM2NSwgNzAzNjksIDcwMzczLCA3MDM3NywgCisgICAgNzAzODEsIDcwMzg1LCA3MDM4OSwgNzAzOTMsIDcwMzk3LCA3MDQwMSwgNzA0MDUsIDcwNDA5LCA3MDQxMywgNzA0MTcsIAorICAgIDcwNDIxLCA3MDQyNSwgNzA0MjksIDcwNDMzLCA3MDQzNywgNzA0NDEsIDcwNDQ1LCA3MDQ0OSwgNzA0NTMsIDcwNDU3LCAKKyAgICA3MDQ2MSwgNzA0NjUsIDcwNDY5LCA3MDQ3MywgNzA0NzcsIDcwNDgxLCA3MDQ4NSwgNzA0ODksIDcwNDkzLCA3MDQ5NywgCisgICAgNzA1MDEsIDcwNTA1LCA3MDUwOSwgNzA1MTMsIDcwNTE3LCA3MDUyMSwgNzA1MjUsIDcwNTI5LCA3MDUzMywgNzA1MzcsIAorICAgIDcwNTQxLCA3MDU0NSwgNzA1NDksIDcwNTUzLCA3MDU1NywgNzA1NjEsIDcwNTY1LCA3MDU2OSwgNzA1NzMsIDcwNTc3LCAKKyAgICA3MDU4MSwgNzA1ODUsIDcwNTg5LCA3MDU5MywgNzA1OTcsIDcwNjAxLCA3MDYwNSwgNzA2MDksIDcwNjEzLCA3MDYxNywgCisgICAgNzA2MjEsIDcwNjI1LCA3MDYyOSwgNzA2MzMsIDcwNjM3LCA3MDY0MSwgNzA2NDUsIDcwNjQ5LCA3MDY1MywgNzA2NTcsIAorICAgIDcwNjYxLCA3MDY2NSwgNzA2NjksIDcwNjczLCA3MDY3NywgNzA2ODEsIDcwNjg1LCA3MDY4OSwgNzA2OTMsIDcwNjk3LCAKKyAgICA3MDcwMSwgNzA3MDUsIDcwNzA5LCA3MDcxMywgNzA3MTcsIDcwNzIxLCA3MDcyNSwgNzA3MjksIDcwNzMzLCA3MDczNywgCisgICAgNzA3NDEsIDcwNzQ1LCA3MDc0OSwgNzA3NTMsIDcwNzU3LCA3MDc2MSwgNzA3NjUsIDcwNzY5LCA3MDc3MywgNzA3NzcsIAorICAgIDcwNzgxLCA3MDc4NSwgNzA3ODksIDcwNzkzLCA3MDc5NywgNzA4MDEsIDcwODA1LCA3MDgwOSwgNzA4MTMsIDcwODE3LCAKKyAgICA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgNzA4MzcsIDcwODQxLCA3MDg0NSwgNzA4NDksIDcwODUzLCA3MDg1NywgCisgICAgNzA4NjEsIDcwODY1LCA3MDg2OSwgNzA4NzMsIDcwODc3LCA3MDg4MSwgNzA4ODUsIDcwODg5LCA3MDg5MywgNzA4OTcsIAorICAgIDcwOTAxLCA3MDkwNSwgNzA5MDksIDcwOTEzLCA3MDkxNywgNzA5MjEsIDcwOTI1LCA3MDkyOSwgNzA5MzMsIDcwOTM3LCAKKyAgICA3MDk0MSwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIDcwOTYxLCA3MDk2NSwgNzA5NjksIDcwOTczLCA3MDk3NywgCisgICAgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTMsIDcwOTk3LCA3MTAwMSwgNzEwMDUsIDcxMDA5LCA3MTAxMywgNzEwMTcsIAorICAgIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCA3MTAzNywgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCAKKyAgICA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIDcxMDgxLCA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NywgCisgICAgNzExMDEsIDcxMTA1LCA3MTEwOSwgNzExMTMsIDcxMTE3LCA3MTEyMSwgNzExMjUsIDcxMTI5LCA3MTEzMywgNzExMzcsIAorICAgIDcxMTQxLCA3MTE0NSwgNzExNDksIDcxMTUzLCA3MTE1NywgNzExNjEsIDcxMTY1LCA3MTE2OSwgNzExNzMsIDcxMTc3LCAKKyAgICA3MTE4MSwgNzExODUsIDcxMTg5LCA3MTE5MywgNzExOTcsIDcxMjAxLCA3MTIwNSwgNzEyMDksIDcxMjEzLCA3MTIxNywgCisgICAgNzEyMjEsIDcxMjI1LCA3MTIyOSwgNzEyMzMsIDcxMjM3LCA3MTI0MSwgNzEyNDUsIDcxMjQ5LCA3MTI1MywgNzEyNTcsIAorICAgIDcxMjYxLCA3MTI2NSwgNzEyNjksIDcxMjczLCA3MTI3NywgNzEyODEsIDcxMjg1LCA3MTI4OSwgNzEyOTMsIDcxMjk3LCAKKyAgICA3MTMwMSwgNzEzMDUsIDcxMzA5LCA3MTMxMywgNzEzMTcsIDcxMzIxLCA3MTMyNSwgNzEzMjksIDcxMzMzLCA3MTMzNywgCisgICAgNzEzNDEsIDcxMzQ1LCA3MTM0OSwgNzEzNTMsIDcxMzU3LCA3MTM2MSwgNzEzNjUsIDcxMzY5LCA3MTM3MywgNzEzNzcsIAorICAgIDcxMzgxLCA3MTM4NSwgNzEzODksIDcxMzkzLCA3MTM5NywgNzE0MDEsIDcxNDA1LCA3MTQwOSwgNzE0MTMsIDcxNDE3LCAKKyAgICA3MTQyMSwgNzE0MjUsIDcxNDI5LCA3MTQzMywgNzE0MzcsIDcxNDQxLCA3MTQ0NSwgNzE0NDksIDcxNDUzLCA3MTQ1NywgCisgICAgNzE0NjEsIDcxNDY1LCA3MTQ2OSwgNzE0NzMsIDcxNDc3LCA3MTQ4MSwgNzE0ODUsIDcxNDg5LCA3MTQ5MywgNzE0OTcsIAorICAgIDcxNTAxLCA3MTUwNSwgNzE1MDksIDcxNTEzLCA3MTUxNywgNzE1MjEsIDcxNTI1LCA3MTUyOSwgNzE1MzMsIDcxNTM3LCAKKyAgICA3MTU0MSwgNzE1NDUsIDcxNTQ5LCA3MTU1MywgNzE1NTcsIDcxNTYxLCA3MTU2NSwgNzE1NjksIDcxNTczLCA3MTU3NywgCisgICAgNzE1ODEsIDcxNTg1LCA3MTU4OSwgNzE1OTMsIDcxNTk3LCA3MTYwMSwgNzE2MDUsIDcxNjA5LCA3MTYxMywgNzE2MTcsIAorICAgIDcxNjIxLCA3MTYyNSwgNzE2MjksIDcxNjMzLCA3MTYzNywgNzE2NDEsIDcxNjQ1LCA3MTY0OSwgNzE2NTMsIDcxNjU3LCAKKyAgICA3MTY2MSwgNzE2NjUsIDcxNjY5LCA3MTY3MywgNzE2NzcsIDcxNjgxLCA3MTY4NSwgNzE2ODksIDcxNjkzLCA3MTY5NywgCisgICAgNzE3MDEsIDcxNzA1LCA3MTcwOSwgNzE3MTMsIDcxNzE3LCA3MTcyMSwgNzE3MjUsIDcxNzI5LCA3MTczMywgNzE3MzcsIAorICAgIDcxNzQxLCA3MTc0NSwgNzE3NDksIDcxNzUzLCA3MTc1NywgNzE3NjEsIDcxNzY1LCA3MTc2OSwgNzE3NzMsIDcxNzc3LCAKKyAgICA3MTc4MSwgNzE3ODUsIDcxNzg5LCA3MTc5MywgNzE3OTcsIDcxODAxLCA3MTgwNSwgNzE4MDksIDcxODEzLCA3MTgxNywgCisgICAgNzE4MjEsIDcxODI1LCA3MTgyOSwgNzE4MzMsIDcxODM3LCA3MTg0MSwgNzE4NDUsIDcxODQ5LCA3MTg1MywgNzE4NTcsIAorICAgIDcxODYxLCA3MTg2NSwgNzE4NjksIDcxODczLCA3MTg3NywgNzE4ODEsIDcxODg1LCA3MTg4OSwgNzE4OTMsIDAsIDAsIDAsIAorICAgIDcxODk3LCA3MTkwMSwgNzE5MDUsIDcxOTA5LCA3MTkxMywgNzE5MTcsIDcxOTIxLCA3MTkyNSwgNzE5MjksIDcxOTMzLCAKKyAgICA3MTkzNywgNzE5NDEsIDcxOTQ1LCA3MTk0OSwgNzE5NTMsIDcxOTU3LCA3MTk2MSwgNzE5NjUsIDcxOTY5LCA3MTk3MywgCisgICAgNzE5NzcsIDcxOTgxLCA3MTk4NSwgNzE5ODksIDcxOTkzLCA3MTk5NywgNzIwMDEsIDcyMDA1LCA3MjAwOSwgNzIwMTMsIAorICAgIDcyMDE3LCA3MjAyMSwgNzIwMjUsIDcyMDI5LCA3MjAzMywgNzIwMzcsIDcyMDQxLCA3MjA0NSwgNzIwNDksIDcyMDUzLCAKKyAgICA3MjA1NywgNzIwNjEsIDcyMDY1LCA3MjA2OSwgNzIwNzMsIDcyMDc3LCA3MjA4MSwgNzIwODUsIDcyMDg5LCA3MjA5MywgCisgICAgNzIwOTcsIDcyMTAxLCA3MjEwNSwgNzIxMDksIDcyMTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjExNywgCisgICAgNzIxMjIsIDcyMTI2LCA3MjEzMSwgNzIxMzYsIDcyMTQxLCA3MjE0NiwgNzIxNTEsIDcyMTU1LCA3MjE2MCwgNzIxNjUsIAorICAgIDcyMTcwLCA3MjE3NSwgNzIxODAsIDcyMTg1LCA3MjE5MCwgNzIxOTQsIDcyMTk4LCA3MjIwMiwgNzIyMDcsIDcyMjEyLCAKKyAgICA3MjIxNywgNzIyMjIsIDcyMjI2LCA3MjIzMSwgNzIyMzYsIDcyMjQxLCA3MjI0NiwgNzIyNTEsIDcyMjU1LCA3MjI2MCwgCisgICAgNzIyNjQsIDcyMjY5LCA3MjI3MywgNzIyNzgsIDcyMjgyLCA3MjI4NiwgNzIyOTAsIDcyMjk1LCA3MjMwMCwgNzIzMDUsIAorICAgIDcyMzEzLCA3MjMyMSwgNzIzMjksIDcyMzM3LCA3MjM0NCwgNzIzNTIsIDcyMzU4LCA3MjM2NiwgNzIzNzAsIDcyMzc0LCAKKyAgICA3MjM3OCwgNzIzODIsIDcyMzg2LCA3MjM5MCwgNzIzOTQsIDcyMzk4LCA3MjQwMiwgNzI0MDYsIDcyNDEwLCA3MjQxNCwgCisgICAgNzI0MTgsIDcyNDIyLCA3MjQyNiwgNzI0MzAsIDcyNDM0LCA3MjQzOCwgNzI0NDIsIDcyNDQ2LCA3MjQ1MCwgNzI0NTQsIAorICAgIDcyNDU4LCA3MjQ2MiwgNzI0NjYsIDcyNDcwLCA3MjQ3NCwgNzI0NzgsIDcyNDgyLCA3MjQ4NiwgNzI0OTAsIDcyNDk0LCAKKyAgICA3MjQ5OCwgNzI1MDIsIDcyNTA2LCA3MjUxMCwgNzI1MTMsIDcyNTE3LCA3MjUyMSwgNzI1MjUsIDcyNTI5LCA3MjUzMywgCisgICAgNzI1MzcsIDcyNTQxLCA3MjU0NSwgNzI1NDksIDcyNTUzLCA3MjU1NywgNzI1NjEsIDcyNTY1LCA3MjU2OSwgNzI1NzMsIAorICAgIDcyNTc3LCA3MjU4MSwgNzI1ODUsIDcyNTg5LCA3MjU5MywgNzI1OTcsIDcyNjAxLCA3MjYwNSwgNzI2MDksIDcyNjEzLCAKKyAgICA3MjYxNywgNzI2MjEsIDcyNjI1LCA3MjYyOSwgNzI2MzMsIDcyNjM3LCA3MjY0MSwgNzI2NDUsIDcyNjQ5LCA3MjY1MywgCisgICAgNzI2NTcsIDcyNjYwLCA3MjY2NCwgNzI2NjgsIDcyNjcxLCA3MjY3NSwgNzI2NzksIDcyNjgzLCA3MjY4NiwgNzI2OTAsIAorICAgIDcyNjk0LCA3MjY5OCwgNzI3MDIsIDcyNzA2LCA3MjcxMCwgNzI3MTQsIDcyNzE4LCA3MjcyMiwgNzI3MjYsIDcyNzMwLCAKKyAgICA3MjczNCwgNzI3MzgsIDcyNzQxLCA3Mjc0NSwgNzI3NDksIDcyNzUzLCA3Mjc1NywgNzI3NjEsIDcyNzY1LCA3Mjc2OSwgCisgICAgNzI3NzMsIDcyNzc3LCA3Mjc4MSwgNzI3ODQsIDcyNzg3LCA3Mjc5MSwgNzI3OTUsIDcyNzk5LCA3MjgwMiwgNzI4MDUsIAorICAgIDcyODA5LCA3MjgxMywgNzI4MTcsIDcyODIxLCA3MjgyNSwgNzI4MjksIDcyODMzLCA3MjgzNywgNzI4NDEsIDcyODQ1LCAKKyAgICA3Mjg0OSwgNzI4NTMsIDcyODU3LCA3Mjg2MSwgNzI4NjUsIDcyODY5LCA3Mjg3MywgNzI4NzcsIDcyODgxLCA3Mjg4NSwgCisgICAgNzI4ODksIDcyODkzLCA3Mjg5NywgNzI5MDEsIDcyOTA1LCA3MjkwOSwgNzI5MTMsIDcyOTE3LCA3MjkyMSwgNzI5MjUsIAorICAgIDcyOTI5LCA3MjkzMywgNzI5MzcsIDcyOTQxLCA3Mjk0NSwgNzI5NDksIDcyOTUzLCA3Mjk1NiwgNzI5NjAsIDcyOTY0LCAKKyAgICA3Mjk2OCwgNzI5NzIsIDcyOTc2LCA3Mjk4MCwgNzI5ODQsIDcyOTg4LCA3Mjk5MiwgNzI5OTYsIDczMDAwLCA3MzAwNCwgCisgICAgNzMwMDgsIDczMDEyLCA3MzAxNiwgNzMwMjAsIDczMDI0LCA3MzAyOCwgNzMwMzIsIDczMDM2LCA3MzA0MCwgNzMwNDQsIAorICAgIDczMDQ4LCA3MzA1MiwgNzMwNTYsIDczMDYwLCA3MzA2NCwgNzMwNjgsIDczMDcyLCA3MzA3NiwgNzMwODAsIDczMDg0LCAKKyAgICA3MzA4OCwgNzMwOTIsIDczMDk2LCA3MzEwMCwgNzMxMDMsIDczMTA3LCA3MzExMSwgNzMxMTUsIDczMTE5LCA3MzEyMywgCisgICAgNzMxMjcsIDczMTMxLCA3MzEzNSwgNzMxMzksIDczMTQzLCA3MzE0NywgNzMxNTEsIDczMTU1LCA3MzE1OSwgNzMxNjMsIAorICAgIDczMTY3LCA3MzE3MCwgNzMxNzQsIDczMTc4LCA3MzE4MiwgNzMxODYsIDczMTkwLCA3MzE5NCwgNzMxOTgsIDczMjAyLCAKKyAgICA3MzIwNiwgNzMyMTAsIDczMjE0LCA3MzIxOCwgNzMyMjIsIDczMjI2LCA3MzIzMCwgNzMyMzQsIDczMjM4LCA3MzI0MiwgCisgICAgNzMyNDYsIDczMjUwLCA3MzI1NCwgNzMyNTcsIDczMjYxLCA3MzI2NSwgNzMyNjksIDczMjczLCA3MzI3NywgNzMyODEsIAorICAgIDczMjg1LCA3MzI4OSwgNzMyOTMsIDczMjk3LCA3MzMwMSwgNzMzMDUsIDczMzA5LCA3MzMxMywgNzMzMTcsIDczMzIxLCAKKyAgICA3MzMyNSwgNzMzMjksIDczMzMzLCA3MzMzNywgNzMzNDEsIDczMzQ1LCA3MzM0OSwgNzMzNTMsIDczMzU3LCA3MzM2MSwgCisgICAgNzMzNjUsIDczMzY5LCA3MzM3MywgNzMzNzcsIDczMzgxLCA3MzM4NSwgNzMzODksIDczMzkzLCA3MzM5NywgNzM0MDEsIAorICAgIDczNDA1LCA3MzQwOSwgNzM0MTMsIDczNDE3LCA3MzQyMSwgNzM0MjUsIDczNDI5LCA3MzQzMiwgNzM0MzcsIDczNDQxLCAKKyAgICA3MzQ0NywgNzM0NTIsIDczNDU4LCA3MzQ2MiwgNzM0NjYsIDczNDcwLCA3MzQ3NCwgNzM0NzgsIDczNDgyLCA3MzQ4NiwgCisgICAgNzM0OTAsIDczNDk0LCA3MzQ5OCwgNzM1MDIsIDczNTA2LCA3MzUxMCwgNzM1MTQsIDczNTE3LCA3MzUyMCwgNzM1MjMsIAorICAgIDczNTI2LCA3MzUyOSwgNzM1MzIsIDczNTM2LCA3MzUzOSwgNzM1NDMsIDczNTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzU1NCwgNzM1NTksIDczNTY0LCA3MzU2OSwgNzM1NzQsIAorICAgIDczNTgxLCA3MzU4OCwgNzM1OTMsIDczNTk4LCA3MzYwMywgNzM2MDgsIDczNjE1LCA3MzYyMiwgNzM2MjksIDczNjM2LCAKKyAgICA3MzY0MywgNzM2NTAsIDczNjYwLCA3MzY3MCwgNzM2NzcsIDczNjg0LCA3MzY5MSwgNzM2OTgsIDczNzA0LCA3MzcxMCwgCisgICAgNzM3MTksIDczNzI4LCA3MzczNSwgNzM3NDIsIDczNzUzLCA3Mzc2NCwgNzM3NjksIDczNzc0LCA3Mzc4MSwgNzM3ODgsIAorICAgIDczNzk1LCA3MzgwMiwgNzM4MDksIDczODE2LCA3MzgyMywgNzM4MzAsIDczODM2LCA3Mzg0MiwgNzM4NDgsIDczODU0LCAKKyAgICA3Mzg2MSwgNzM4NjgsIDczODczLCA3Mzg3NywgNzM4ODQsIDczODkxLCA3Mzg5OCwgNzM5MDIsIDczOTA5LCA3MzkxMywgCisgICAgNzM5MTgsIDczOTIyLCA3MzkyOCwgNzM5MzMsIDczOTM5LCA3Mzk0NCwgNzM5NDgsIDczOTUyLCA3Mzk1NSwgNzM5NTgsIAorICAgIDczOTYzLCA3Mzk2OCwgNzM5NzMsIDczOTc4LCA3Mzk4MywgNzM5ODgsIDczOTkzLCA3Mzk5OCwgNzQwMDMsIDc0MDA4LCAKKyAgICA3NDAxNiwgNzQwMjQsIDc0MDI5LCA3NDAzNCwgNzQwMzksIDc0MDQ0LCA3NDA0OSwgNzQwNTQsIDc0MDU5LCA3NDA2NCwgCisgICAgNzQwNjksIDc0MDc0LCA3NDA3OSwgNzQwODQsIDc0MDg5LCA3NDA5NCwgNzQxMDAsIDc0MTA2LCA3NDExMiwgNzQxMTgsIAorICAgIDc0MTIzLCA3NDEyOSwgNzQxMzIsIDc0MTM1LCA3NDEzOCwgNzQxNDIsIDc0MTQ2LCA3NDE1MCwgNzQxNTQsIDc0MTU3LCAKKyAgICA3NDE2MSwgNzQxNjQsIDc0MTY3LCA3NDE3MCwgNzQxNzQsIDc0MTc4LCA3NDE4MiwgNzQxODYsIDc0MTkwLCA3NDE5NCwgCisgICAgNzQxOTgsIDc0MjAyLCA3NDIwNiwgNzQyMTAsIDc0MjE0LCA3NDIxOCwgNzQyMjIsIDc0MjI2LCA3NDIzMCwgNzQyMzQsIAorICAgIDc0MjM4LCA3NDI0MiwgNzQyNDYsIDc0MjUwLCA3NDI1NCwgNzQyNTgsIDc0MjYxLCA3NDI2NSwgNzQyNjksIDc0MjczLCAKKyAgICA3NDI3NywgNzQyODEsIDc0Mjg1LCA3NDI4OSwgNzQyOTMsIDc0Mjk3LCA3NDMwMSwgNzQzMDUsIDc0MzA5LCA3NDMxMywgCisgICAgNzQzMTcsIDc0MzIxLCA3NDMyNSwgNzQzMjksIDc0MzMzLCA3NDMzNywgNzQzNDEsIDc0MzQ1LCA3NDM0OSwgNzQzNTMsIAorICAgIDc0MzU3LCA3NDM2MCwgNzQzNjQsIDc0MzY4LCA3NDM3MiwgNzQzNzYsIDc0MzgwLCA3NDM4NCwgNzQzODgsIDc0MzkxLCAKKyAgICA3NDM5NSwgNzQzOTksIDc0NDAzLCA3NDQwNywgNzQ0MTEsIDc0NDE1LCA3NDQxOSwgNzQ0MjMsIDc0NDI3LCA3NDQzMSwgCisgICAgNzQ0MzUsIDc0NDM5LCA3NDQ0NCwgNzQ0NDksIDc0NDUyLCA3NDQ1NywgNzQ0NjAsIDc0NDYzLCA3NDQ2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzQ0NzAsIDc0NDc5LCA3NDQ4OCwgNzQ0OTcsIDc0NTA2LCA3NDUxNSwgNzQ1MjQsIDc0NTMzLCAKKyAgICA3NDU0MiwgNzQ1NTAsIDc0NTU3LCA3NDU2NSwgNzQ1NzIsIDc0NTgwLCA3NDU5MCwgNzQ1OTksIDc0NjA5LCA3NDYxOCwgCisgICAgNzQ2MjgsIDc0NjM2LCA3NDY0MywgNzQ2NTEsIDc0NjU4LCA3NDY2NiwgNzQ2NzEsIDc0Njc2LCA3NDY4MiwgNzQ2OTEsIAorICAgIDc0Njk3LCA3NDcwMywgNzQ3MTAsIDc0NzE5LCA3NDcyNywgNzQ3MzUsIDc0NzQzLCA3NDc1MCwgNzQ3NTcsIDc0NzY0LCAKKyAgICA3NDc3MSwgNzQ3NzYsIDc0NzgxLCA3NDc4NiwgNzQ3OTEsIDc0Nzk2LCA3NDgwMSwgNzQ4MDYsIDc0ODExLCA3NDgxOSwgCisgICAgNzQ4MjcsIDc0ODMzLCA3NDgzOSwgNzQ4NDQsIDc0ODQ5LCA3NDg1NCwgNzQ4NTksIDc0ODY0LCA3NDg2OSwgNzQ4NzQsIAorICAgIDc0ODc5LCA3NDg4OCwgNzQ4OTcsIDc0OTAyLCA3NDkwNywgNzQ5MTcsIDc0OTI3LCA3NDkzNCwgNzQ5NDEsIDc0OTUwLCAKKyAgICA3NDk1OSwgNzQ5NzEsIDc0OTgzLCA3NDk4OSwgNzQ5OTUsIDc1MDAzLCA3NTAxMSwgNzUwMjEsIDc1MDMxLCA3NTAzOCwgCisgICAgNzUwNDUsIDc1MDUwLCA3NTA1NSwgNzUwNjcsIDc1MDc5LCA3NTA4NywgNzUwOTUsIDc1MTA1LCA3NTExNSwgNzUxMjcsIAorICAgIDc1MTM5LCA3NTE0OCwgNzUxNTcsIDc1MTY0LCA3NTE3MSwgNzUxNzgsIDc1MTg1LCA3NTE5NCwgNzUyMDMsIDc1MjA4LCAKKyAgICA3NTIxMywgNzUyMjAsIDc1MjI3LCA3NTIzNCwgNzUyNDEsIDc1MjUzLCA3NTI2NSwgNzUyNzAsIDc1Mjc1LCA3NTI4MCwgCisgICAgNzUyODUsIDc1MjkwLCA3NTI5NSwgNzUzMDAsIDc1MzA1LCA3NTMwOSwgNzUzMTQsIDc1MzE5LCA3NTMyNCwgNzUzMjksIAorICAgIDc1MzM0LCA3NTM0MCwgNzUzNDUsIDc1MzUwLCA3NTM1NywgNzUzNjQsIDc1MzcxLCA3NTM3OCwgNzUzODUsIDc1Mzk0LCAKKyAgICA3NTQwMywgNzU0MDksIDc1NDE1LCA3NTQyMSwgNzU0MjcsIDc1NDM0LCA3NTQ0MSwgNzU0NDgsIDc1NDU1LCA3NTQ2MiwgCisgICAgNzU0NjYsIDc1NDczLCA3NTQ3OCwgNzU0ODMsIDc1NDkwLCA3NTUwMywgNzU1MDksIDc1NTE3LCA3NTUyNSwgNzU1MzIsIAorICAgIDc1NTM5LCA3NTU0OCwgNzU1NTcsIDc1NTY0LCA3NTU3MSwgNzU1NzgsIDc1NTg1LCA3NTU5MiwgNzU1OTksIDc1NjA2LCAKKyAgICA3NTYxMywgNzU2MjAsIDc1NjI3LCA3NTYzNiwgNzU2NDUsIDc1NjU0LCA3NTY2MywgNzU2NzIsIDc1NjgxLCA3NTY5MCwgCisgICAgNzU2OTksIDc1NzA4LCA3NTcxNywgNzU3MjQsIDc1NzMxLCA3NTczNywgNzU3NDUsIDAsIDc1NzUxLCA3NTc1OCwgNzU3NjUsIAorICAgIDc1NzczLCA3NTc3OCwgNzU3ODMsIDc1Nzg4LCA3NTc5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzUwNTYsIDc1MDYzLCA3NTA3MCwgNzUwNzYsIDc1MDg0LCA3NTA5MiwgNzUxMDAsIDc1MTA4LCA3NTExNiwgCi0gICAgNzUxMjQsIDc1MTMwLCA3NTEzNiwgNzUxNDMsIDc1MTQ5LCA3NTE1NSwgNzUxNjEsIDc1MTY4LCA3NTE3NSwgNzUxODIsIAotICAgIDc1MTg5LCA3NTE5NiwgNzUyMDMsIDc1MjEwLCA3NTIxNywgNzUyMjQsIDc1MjMxLCA3NTIzOCwgNzUyNDUsIDc1MjUyLCAKLSAgICA3NTI1OSwgNzUyNjUsIDc1MjcyLCA3NTI3OSwgNzUyODYsIDc1MjkzLCA3NTMwMCwgNzUzMDcsIDc1MzE0LCA3NTMyMSwgCi0gICAgNzUzMjgsIDc1MzM1LCA3NTM0MiwgNzUzNDksIDc1MzU2LCA3NTM2MywgNzUzNzAsIDc1Mzc3LCA3NTM4NCwgNzUzOTEsIAotICAgIDc1Mzk5LCA3NTQwNywgNzU0MTUsIDc1NDIzLCAwLCAwLCAwLCAwLCA3NTQzMSwgNzU0MzksIDc1NDQ3LCA3NTQ1NSwgCi0gICAgNzU0NjMsIDc1NDcxLCA3NTQ3OSwgNzU0ODUsIDc1NDkxLCA3NTQ5NywgMCwgMCwgMCwgMCwgMCwgMCwgNzU1MDMsIDc1NTA3LCAKLSAgICA3NTUxMiwgNzU1MTcsIDc1NTIyLCA3NTUyNywgNzU1MzIsIDc1NTM3LCA3NTU0MiwgNzU1NDcsIDc1NTUyLCA3NTU1NywgCi0gICAgNzU1NjIsIDc1NTY2LCA3NTU3MSwgNzU1NzYsIDc1NTgwLCA3NTU4NSwgNzU1OTAsIDc1NTk1LCA3NTYwMCwgNzU2MDUsIAotICAgIDc1NjEwLCA3NTYxNSwgNzU2MTksIDc1NjI0LCA3NTYyOSwgNzU2MzQsIDc1NjM5LCA3NTY0MywgNzU2NDcsIDc1NjUxLCAKLSAgICA3NTY1NSwgNzU2NTksIDc1NjYzLCA3NTY2OCwgNzU2NzMsIDc1Njc4LCA3NTY4MywgNzU2ODgsIDc1Njk1LCA3NTcwMSwgCi0gICAgNzU3MDYsIDc1NzExLCA3NTcxNiwgNzU3MjEsIDc1NzI3LCA3NTczNCwgNzU3NDAsIDc1NzQ3LCA3NTc1NCwgNzU3NjEsIAotICAgIDc1NzY2LCA3NTc3MywgNzU3NzksIDc1Nzg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTc5MCwgNzU3OTUsIDc1ODAwLCAKLSAgICA3NTgwNCwgNzU4MDksIDc1ODEzLCA3NTgxOCwgNzU4MjIsIDc1ODI3LCA3NTgzMiwgNzU4MzgsIDc1ODQzLCA3NTg0OSwgCi0gICAgNzU4NTMsIDc1ODU4LCA3NTg2MywgNzU4NjcsIDc1ODcyLCA3NTg3NywgNzU4ODEsIDc1ODg2LCA3NTg5MSwgNzU4OTYsIAotICAgIDc1OTAxLCA3NTkwNiwgNzU5MTEsIDc1OTE2LCA3NTkyMSwgNzU5MjYsIDc1OTMxLCA3NTkzNiwgNzU5NDEsIDc1OTQ2LCAKLSAgICA3NTk1MSwgNzU5NTYsIDc1OTYxLCA3NTk2NiwgNzU5NzEsIDc1OTc2LCA3NTk4MCwgNzU5ODUsIDc1OTkwLCA3NTk5NSwgCi0gICAgNzU5OTksIDc2MDAzLCA3NjAwOCwgNzYwMTMsIDc2MDE4LCA3NjAyMywgNzYwMjgsIDc2MDMzLCA3NjAzNywgNzYwNDIsIAotICAgIDc2MDQ4LCA3NjA1NCwgNzYwNTksIDc2MDY1LCA3NjA3MCwgNzYwNzYsIDc2MDgyLCA3NjA4OSwgNzYwOTUsIDc2MTAyLCAKLSAgICA3NjEwNywgNzYxMTMsIDc2MTE5LCA3NjEyNCwgNzYxMzAsIDc2MTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NjE0MSwgNzYxNDUsIDc2MTUwLCA3NjE1NSwgNzYxNTksIDc2MTYzLCA3NjE2NywgNzYxNzEsIDc2MTc1LCA3NjE3OSwgCi0gICAgNzYxODQsIDc2MTg4LCAwLCAwLCAwLCAwLCAwLCAwLCA3NjE5MywgNzYxOTgsIDc2MjAyLCA3NjIwNiwgNzYyMTAsIDc2MjE0LCAKLSAgICA3NjIxOCwgNzYyMjIsIDc2MjI3LCA3NjIzMSwgNzYyMzYsIDc2MjQwLCA3NjI0NCwgNzYyNDgsIDc2MjUzLCA3NjI1NywgCi0gICAgNzYyNjIsIDc2MjY3LCA3NjI3MiwgNzYyNzgsIDc2Mjg0LCA3NjI5MSwgNzYyOTYsIDc2MzAxLCA3NjMwNywgNzYzMTEsIAotICAgIDc2MzE2LCA3NjMxOSwgNzYzMjIsIDc2MzI2LCAwLCAwLCA3NjMzMSwgNzYzMzgsIDc2MzQ0LCA3NjM1MCwgNzYzNTYsIAotICAgIDc2MzYyLCA3NjM2OCwgNzYzNzQsIDc2MzgxLCA3NjM4NywgNzYzOTQsIDc2NDAwLCA3NjQwNywgNzY0MTQsIDc2NDIxLCAKLSAgICA3NjQyOCwgNzY0MzUsIDc2NDQyLCA3NjQ0OSwgNzY0NTYsIDc2NDYzLCA3NjQ3MCwgNzY0NzYsIDc2NDgzLCA3NjQ4OSwgCi0gICAgNzY0OTYsIDc2NTAzLCA3NjUxMCwgNzY1MTYsIDc2NTIzLCA3NjUzMCwgNzY1MzcsIDc2NTQzLCA3NjU1MCwgNzY1NTcsIAotICAgIDc2NTYzLCA3NjU3MCwgNzY1NzYsIDc2NTgzLCA3NjU5MCwgNzY1OTYsIDc2NjAyLCA3NjYwOSwgNzY2MTUsIDc2NjIyLCAKLSAgICA3NjYyOSwgNzY2MzgsIDc2NjQ1LCA3NjY1MiwgNzY2NTYsIDc2NjYxLCA3NjY2NiwgNzY2NzEsIDc2Njc2LCA3NjY4MSwgCi0gICAgNzY2ODUsIDc2NjkwLCA3NjY5NCwgNzY2OTksIDc2NzA0LCA3NjcwOSwgNzY3MTQsIDc2NzE5LCA3NjcyNCwgNzY3MjgsIAotICAgIDc2NzMzLCA3NjczNywgNzY3NDIsIDc2NzQ3LCA3Njc1MiwgNzY3NTcsIDc2NzYxLCA3Njc2NiwgNzY3NzEsIDc2Nzc2LCAKLSAgICA3Njc4MiwgNzY3ODcsIDc2NzkzLCA3Njc5OSwgNzY4MDUsIDc2ODExLCA3NjgxNywgNzY4MjIsIDc2ODI4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjgzMiwgNzY4MzcsIDc2ODQxLCA3Njg0NSwgNzY4NDksIDc2ODUzLCA3Njg1NywgCi0gICAgNzY4NjEsIDc2ODY1LCA3Njg2OSwgNzY4NzMsIDc2ODc3LCA3Njg4MSwgNzY4ODUsIDc2ODg5LCA3Njg5MywgNzY4OTcsIAotICAgIDc2OTAxLCA3NjkwNSwgNzY5MDksIDc2OTEzLCA3NjkxNywgNzY5MjEsIDc2OTI1LCA3NjkyOSwgNzY5MzMsIDc2OTM3LCAKLSAgICA3Njk0MSwgNzY5NDUsIDc2OTQ5LCAwLCAwLCAwLCA3Njk1MywgNzY5NTcsIDc2OTYxLCA3Njk2NSwgNzY5NjksIDc2OTcyLCAKLSAgICA3Njk3OCwgNzY5ODEsIDc2OTg1LCA3Njk4OCwgNzY5OTQsIDc3MDAwLCA3NzAwOCwgNzcwMTEsIDc3MDE1LCA3NzAxOCwgCi0gICAgNzcwMjEsIDc3MDI3LCA3NzAzMywgNzcwMzcsIDc3MDQzLCA3NzA0NywgNzcwNTEsIDc3MDU3LCA3NzA2MSwgNzcwNjcsIAotICAgIDc3MDczLCA3NzA3NywgNzcwODEsIDc3MDg3LCA3NzA5MSwgNzcwOTcsIDc3MTAzLCA3NzEwNywgNzcxMTMsIDc3MTE3LCAKLSAgICA3NzEyMywgNzcxMjcsIDc3MTMwLCA3NzEzNiwgNzcxNDAsIDc3MTQ2LCA3NzE0OSwgNzcxNTIsIDc3MTU2LCA3NzE2MiwgCi0gICAgNzcxNjYsIDc3MTcwLCA3NzE3NiwgNzcxODIsIDc3MTg2LCA3NzE4OSwgNzcxOTUsIDc3MjAwLCA3NzIwNSwgNzcyMTAsIAotICAgIDc3MjE3LCA3NzIyMiwgNzcyMjksIDc3MjM0LCA3NzI0MSwgNzcyNDYsIDc3MjUxLCA3NzI1NiwgNzcyNjEsIDc3MjY0LCAKLSAgICA3NzI2OCwgNzcyNzIsIDc3Mjc3LCA3NzI4MiwgNzcyODcsIDc3MjkyLCA3NzI5NywgNzczMDIsIDc3MzA3LCA3NzMxMiwgCi0gICAgNzczMTksIDc3MzI0LCAwLCA3NzMzMSwgNzczMzQsIDc3MzM4LCA3NzM0MSwgNzczNDQsIDc3MzQ3LCA3NzM1MCwgNzczNTMsIAotICAgIDc3MzU2LCA3NzM2MCwgNzczNjMsIDAsIDAsIDAsIDAsIDc3MzY3LCA3NzM3NCwgNzczNzksIDc3Mzg1LCA3NzM5MSwgCi0gICAgNzczOTcsIDc3NDAzLCA3NzQwOSwgNzc0MTUsIDc3NDIyLCA3NzQyOSwgNzc0MzYsIDc3NDQzLCA3NzQ1MCwgNzc0NTcsIAotICAgIDc3NDY0LCA3NzQ3MSwgNzc0NzgsIDc3NDg1LCA3NzQ5MiwgNzc0OTgsIDc3NTA0LCA3NzUxMCwgNzc1MTYsIDc3NTIyLCAKLSAgICA3NzUyOCwgNzc1MzUsIDc3NTQxLCA3NzU0OCwgNzc1NTUsIDc3NTYyLCA3NzU2OSwgNzc1NzYsIDAsIDc3NTgzLCA3NzU4NywgCi0gICAgNzc1OTEsIDc3NTk1LCA3NzU5OSwgNzc2MDQsIDc3NjA4LCA3NzYxMiwgNzc2MTcsIDc3NjIyLCA3NzYyNywgNzc2MzIsIAotICAgIDc3NjM3LCA3NzY0MiwgNzc2NDcsIDc3NjUyLCA3NzY1NywgNzc2NjIsIDc3NjY3LCA3NzY3MiwgNzc2NzcsIDc3NjgyLCAKLSAgICA3NzY4NywgNzc2OTIsIDc3Njk3LCA3NzcwMiwgNzc3MDcsIDc3NzExLCA3NzcxNiwgNzc3MjEsIDc3NzI2LCA3NzczMSwgCi0gICAgNzc3MzYsIDc3NzQwLCA3Nzc0NSwgNzc3NDksIDc3NzU0LCA3Nzc1OSwgNzc3NjQsIDc3NzY5LCA3Nzc3NCwgNzc3NzgsIAotICAgIDc3Nzg0LCA3Nzc4OSwgNzc3OTUsIDc3ODAxLCA3NzgwNiwgNzc4MTIsIDc3ODE3LCA3NzgyMywgNzc4MjksIDc3ODM1LCAKLSAgICA3Nzg0MCwgNzc4NDYsIDc3ODUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3Nzg1OCwgNzc4NjQsIDc3ODcwLCAKLSAgICA3Nzg3NiwgNzc4ODMsIDc3ODg5LCA3Nzg5NSwgNzc5MDEsIDc3OTA3LCA3NzkxMywgNzc5MTgsIDc3OTIzLCA3NzkyOSwgCi0gICAgNzc5MzYsIDAsIDAsIDc3OTQzLCA3Nzk0OCwgNzc5NTIsIDc3OTU2LCA3Nzk2MCwgNzc5NjQsIDc3OTY4LCA3Nzk3MiwgCi0gICAgNzc5NzcsIDc3OTgxLCAwLCAwLCA3Nzk4NiwgNzc5OTIsIDc3OTk4LCA3ODAwNSwgNzgwMTMsIDc4MDE5LCA3ODAyNSwgCi0gICAgNzgwMzEsIDc4MDM3LCA3ODA0MywgNzgwNDksIDc4MDU1LCA3ODA2MSwgNzgwNjcsIDc4MDczLCA3ODA3OSwgNzgwODUsIAotICAgIDc4MDkxLCA3ODA5NiwgNzgxMDIsIDc4MTA4LCA3ODExNSwgNzgxMjEsIDc4MTI3LCA3ODEzMywgNzgxNDAsIDc4MTQ3LCAKLSAgICA3ODE1NCwgNzgxNjAsIDc4MTY1LCA3ODE3MCwgNzgxNzYsIDc4MTg0LCA3ODE5MSwgNzgxOTgsIDc4MjA2LCA3ODIxNCwgCi0gICAgNzgyMjEsIDc4MjI4LCA3ODIzNSwgNzgyNDIsIDc4MjQ5LCA3ODI1NiwgNzgyNjMsIDc4MjcwLCA3ODI3NywgNzgyODQsIAotICAgIDc4MjkxLCA3ODI5OCwgNzgzMDUsIDc4MzEyLCA3ODMxOSwgNzgzMjYsIDc4MzMzLCA3ODM0MCwgNzgzNDcsIDc4MzU0LCAKLSAgICA3ODM2MCwgNzgzNjYsIDc4MzczLCA3ODM4MCwgNzgzODcsIDc4Mzk0LCA3ODQwMSwgNzg0MDgsIDc4NDE1LCA3ODQyMiwgCi0gICAgNzg0MjksIDc4NDM2LCA3ODQ0MywgNzg0NTAsIDc4NDU3LCA3ODQ2NCwgNzg0NzEsIDc4NDc4LCA3ODQ4NSwgNzg0OTIsIAotICAgIDc4NDk5LCA3ODUwNiwgNzg1MTMsIDc4NTIwLCA3ODUyNywgNzg1MzQsIDc4NTQwLCA3ODU0NiwgNzg1NTMsIDc4NTU5LCAKLSAgICA3ODU2NCwgNzg1NzAsIDc4NTc1LCA3ODU4MCwgNzg1ODUsIDc4NTkyLCA3ODU5OCwgNzg2MDQsIDc4NjEwLCA3ODYxNiwgCi0gICAgNzg2MjIsIDc4NjI4LCA3ODYzNCwgNzg2NDIsIDc4NjUwLCA3ODY1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg2NjYsIDc4NjcyLCA3ODY3OCwgNzg2ODQsIAotICAgIDc4NjkyLCA3ODcwMCwgNzg3MDYsIDc4NzEyLCA3ODcxOSwgNzg3MjYsIDc4NzMzLCA3ODc0MCwgNzg3NDcsIDc4NzU0LCAKLSAgICA3ODc2MSwgNzg3NjgsIDc4Nzc1LCA3ODc4MywgNzg3OTEsIDc4Nzk5LCA3ODgwNywgNzg4MTUsIDc4ODIxLCA3ODgyOSwgCi0gICAgNzg4MzUsIDc4ODQzLCA3ODg1MiwgNzg4NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4ODY2LCA3ODg3MCwgCi0gICAgNzg4NzQsIDc4ODc4LCA3ODg4MiwgNzg4ODYsIDAsIDAsIDc4ODkwLCA3ODg5NCwgNzg4OTgsIDc4OTAyLCA3ODkwNiwgCi0gICAgNzg5MTAsIDAsIDAsIDc4OTE0LCA3ODkxOCwgNzg5MjIsIDc4OTI2LCA3ODkzMCwgNzg5MzQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDc4OTM4LCA3ODk0MiwgNzg5NDYsIDc4OTUwLCA3ODk1NCwgNzg5NTgsIDc4OTYyLCAwLCA3ODk2NiwgCi0gICAgNzg5NzAsIDc4OTc0LCA3ODk3OCwgNzg5ODIsIDc4OTg2LCA3ODk5MCwgMCwgNzg5OTQsIDc5MDAxLCA3OTAwNywgNzkwMTMsIAotICAgIDc5MDE5LCA3OTAyNiwgNzkwMzMsIDc5MDQyLCA3OTA1MywgNzkwNjMsIDc5MDcyLCA3OTA4MCwgNzkwODgsIDc5MDk2LCAKLSAgICA3OTEwMiwgNzkxMTAsIDc5MTE3LCA3OTEyNCwgNzkxMzMsIDc5MTQ0LCA3OTE1MiwgNzkxNjIsIDc5MTY4LCA3OTE3OCwgCi0gICAgNzkxODcsIDc5MTkyLCA3OTIwMCwgNzkyMDksIDc5MjE0LCA3OTIyMywgNzkyMzAsIDc5MjQwLCA3OTI1MiwgNzkyNTcsIAotICAgIDc5MjY0LCA3OTI3MSwgNzkyNzYsIDc5Mjg2LCA3OTI5NiwgNzkzMDYsIDc5MzE2LCA3OTMzMSwgNzkzNDQsIDc5MzU1LCAKLSAgICA3OTM2MywgNzkzNjgsIDc5Mzc5LCA3OTM4OCwgNzkzOTUsIDc5NDAyLCA3OTQwOCwgNzk0MTQsIDc5NDE5LCA3OTQyNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk0MzIsIDc5NDM2LCA3OTQ0MCwgNzk0NDQsIDc5NDQ4LCA3OTQ1MiwgCi0gICAgNzk0NTcsIDc5NDYyLCA3OTQ2NiwgNzk0NzEsIDc5NDc2LCA3OTQ4MSwgNzk0ODYsIDc5NDkxLCA3OTQ5NSwgNzk1MDAsIAotICAgIDc5NTA1LCA3OTUxMCwgNzk1MTUsIDc5NTIwLCA3OTUyNSwgNzk1MzAsIDc5NTM1LCA3OTU0MCwgNzk1NDUsIDc5NTUwLCAKLSAgICA3OTU1NCwgNzk1NTksIDc5NTY0LCA3OTU2OSwgNzk1NzQsIDc5NTc5LCA3OTU4NCwgNzk1ODksIDc5NTk0LCA3OTU5OSwgCi0gICAgNzk2MDQsIDc5NjA5LCA3OTYxNCwgNzk2MTksIDc5NjI0LCA3OTYyOSwgNzk2MzQsIDc5NjM5LCA3OTY0NCwgNzk2NDksIAotICAgIDc5NjUzLCA3OTY1OCwgNzk2NjMsIDc5NjY4LCA3OTY3MywgNzk2NzgsIDc5NjgzLCA3OTY4OCwgNzk2OTMsIDc5Njk4LCAKLSAgICA3OTcwMywgNzk3MDgsIDc5NzEzLCA3OTcxOCwgNzk3MjMsIDc5NzI4LCA3OTczMywgNzk3MzgsIDc5NzQzLCA3OTc0OCwgCi0gICAgNzk3NTMsIDc5NzU4LCA3OTc2MywgNzk3NjgsIDc5NzczLCA3OTc3OCwgNzk3ODMsIDc5Nzg4LCA3OTc5MywgNzk3OTgsIAotICAgIDc5ODAzLCA3OTgwOCwgNzk4MTMsIDc5ODE4LCA3OTgyMiwgNzk4MjksIDc5ODM2LCA3OTg0MywgNzk4NTAsIDc5ODU2LCAKLSAgICA3OTg2MywgNzk4NzAsIDc5ODc3LCA3OTg4NCwgNzk4OTEsIDc5ODk4LCA3OTkwNSwgNzk5MTIsIDc5OTE5LCA3OTkyNiwgCi0gICAgNzk5MzIsIDc5OTM5LCA3OTk0NiwgNzk5NTMsIDc5OTYwLCA3OTk2NywgNzk5NzQsIDc5OTgxLCA3OTk4OCwgNzk5OTUsIAotICAgIDgwMDAyLCA4MDAwOSwgODAwMTgsIDgwMDI3LCA4MDAzNiwgODAwNDUsIDgwMDU0LCA4MDA2MywgODAwNzIsIDgwMDgxLCAKLSAgICA4MDA4OSwgODAwOTcsIDgwMTA1LCA4MDExMywgODAxMjEsIDgwMTI5LCA4MDEzNywgODAxNDUsIDgwMTUxLCA4MDE1OSwgMCwgCi0gICAgMCwgODAxNjcsIDgwMTc0LCA4MDE4MCwgODAxODYsIDgwMTkyLCA4MDE5OCwgODAyMDQsIDgwMjEwLCA4MDIxNywgODAyMjMsIAorICAgIDAsIDAsIDc1Nzk4LCA3NTgwNSwgNzU4MTIsIDc1ODE4LCA3NTgyNiwgNzU4MzQsIDc1ODQyLCA3NTg1MCwgNzU4NTgsIAorICAgIDc1ODY2LCA3NTg3MiwgNzU4NzgsIDc1ODg1LCA3NTg5MSwgNzU4OTcsIDc1OTAzLCA3NTkxMCwgNzU5MTcsIDc1OTI0LCAKKyAgICA3NTkzMSwgNzU5MzgsIDc1OTQ1LCA3NTk1MiwgNzU5NTksIDc1OTY2LCA3NTk3MywgNzU5ODAsIDc1OTg3LCA3NTk5NCwgCisgICAgNzYwMDEsIDc2MDA3LCA3NjAxNCwgNzYwMjEsIDc2MDI4LCA3NjAzNSwgNzYwNDIsIDc2MDQ5LCA3NjA1NiwgNzYwNjMsIAorICAgIDc2MDcwLCA3NjA3NywgNzYwODQsIDc2MDkxLCA3NjA5OCwgNzYxMDUsIDc2MTEyLCA3NjExOSwgNzYxMjYsIDc2MTMzLCAKKyAgICA3NjE0MSwgNzYxNDksIDc2MTU3LCA3NjE2NSwgMCwgMCwgMCwgMCwgNzYxNzMsIDc2MTgxLCA3NjE4OSwgNzYxOTcsIAorICAgIDc2MjA1LCA3NjIxMywgNzYyMjEsIDc2MjI3LCA3NjIzMywgNzYyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDc2MjQ1LCA3NjI0OSwgCisgICAgNzYyNTQsIDc2MjU5LCA3NjI2NCwgNzYyNjksIDc2Mjc0LCA3NjI3OSwgNzYyODQsIDc2Mjg5LCA3NjI5NCwgNzYyOTksIAorICAgIDc2MzAzLCA3NjMwNywgNzYzMTIsIDc2MzE3LCA3NjMyMSwgNzYzMjYsIDc2MzMxLCA3NjMzNiwgNzYzNDEsIDc2MzQ2LCAKKyAgICA3NjM1MSwgNzYzNTYsIDc2MzYwLCA3NjM2NSwgNzYzNjksIDc2Mzc0LCA3NjM3OSwgNzYzODMsIDc2Mzg3LCA3NjM5MSwgCisgICAgNzYzOTUsIDc2Mzk5LCA3NjQwMywgNzY0MDgsIDc2NDEzLCA3NjQxOCwgNzY0MjMsIDc2NDI4LCA3NjQzNSwgNzY0NDEsIAorICAgIDc2NDQ2LCA3NjQ1MSwgNzY0NTYsIDc2NDYxLCA3NjQ2NywgNzY0NzQsIDc2NDgwLCA3NjQ4NywgNzY0OTQsIDc2NTAxLCAKKyAgICA3NjUwNiwgNzY1MTMsIDc2NTE5LCA3NjUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzY1MzAsIDc2NTM1LCA3NjU0MCwgCisgICAgNzY1NDQsIDc2NTQ5LCA3NjU1MywgNzY1NTgsIDc2NTYyLCA3NjU2NywgNzY1NzIsIDc2NTc4LCA3NjU4MywgNzY1ODksIAorICAgIDc2NTkzLCA3NjU5OCwgNzY2MDMsIDc2NjA3LCA3NjYxMiwgNzY2MTcsIDc2NjIxLCA3NjYyNiwgNzY2MzEsIDc2NjM2LCAKKyAgICA3NjY0MSwgNzY2NDYsIDc2NjUxLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCA3NjY4NiwgCisgICAgNzY2OTEsIDc2Njk2LCA3NjcwMSwgNzY3MDYsIDc2NzExLCA3NjcxNSwgNzY3MTksIDc2NzI0LCA3NjcyOSwgNzY3MzQsIAorICAgIDc2NzM4LCA3Njc0MiwgNzY3NDcsIDc2NzUxLCA3Njc1NiwgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzUsIDc2NzgwLCAKKyAgICA3Njc4NiwgNzY3OTIsIDc2Nzk3LCA3NjgwMywgNzY4MDgsIDc2ODE0LCA3NjgyMCwgNzY4MjcsIDc2ODMzLCA3Njg0MCwgCisgICAgNzY4NDUsIDc2ODUxLCA3Njg1NywgNzY4NjIsIDc2ODY4LCA3Njg3NCwgNzY4NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc2ODg0LCA3Njg4OCwgNzY4OTMsIDc2ODk4LCA3NjkwMiwgNzY5MDYsIDc2OTEwLCA3NjkxNCwgNzY5MTgsIDc2OTIyLCAKKyAgICA3NjkyNywgNzY5MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDc2OTM2LCA3Njk0MSwgNzY5NDUsIDc2OTQ5LCA3Njk1MywgNzY5NTcsIAorICAgIDc2OTYxLCA3Njk2NSwgNzY5NzAsIDc2OTc0LCA3Njk3OSwgNzY5ODMsIDc2OTg3LCA3Njk5MSwgNzY5OTUsIDc2OTk5LCAKKyAgICA3NzAwNCwgNzcwMDksIDc3MDE0LCA3NzAyMCwgNzcwMjYsIDc3MDMzLCA3NzAzOCwgNzcwNDMsIDc3MDQ5LCA3NzA1MywgCisgICAgNzcwNTgsIDc3MDYxLCA3NzA2NCwgNzcwNjgsIDAsIDAsIDc3MDczLCA3NzA4MCwgNzcwODYsIDc3MDkyLCA3NzA5OCwgCisgICAgNzcxMDQsIDc3MTEwLCA3NzExNiwgNzcxMjMsIDc3MTI5LCA3NzEzNiwgNzcxNDIsIDc3MTQ5LCA3NzE1NiwgNzcxNjMsIAorICAgIDc3MTcwLCA3NzE3NywgNzcxODQsIDc3MTkxLCA3NzE5OCwgNzcyMDUsIDc3MjExLCA3NzIxNywgNzcyMjQsIDc3MjMwLCAKKyAgICA3NzIzNywgNzcyNDQsIDc3MjUxLCA3NzI1NywgNzcyNjMsIDc3MjcwLCA3NzI3NywgNzcyODMsIDc3MjkwLCA3NzI5NywgCisgICAgNzczMDMsIDc3MzEwLCA3NzMxNiwgNzczMjMsIDc3MzMwLCA3NzMzNiwgNzczNDIsIDc3MzQ5LCA3NzM1NSwgNzczNjIsIAorICAgIDc3MzY5LCA3NzM3OCwgNzczODUsIDc3MzkyLCA3NzM5NiwgNzc0MDEsIDc3NDA2LCA3NzQxMSwgNzc0MTYsIDc3NDIwLCAKKyAgICA3NzQyNCwgNzc0MjksIDc3NDMzLCA3NzQzOCwgNzc0NDMsIDc3NDQ4LCA3NzQ1MywgNzc0NTgsIDc3NDYyLCA3NzQ2NiwgCisgICAgNzc0NzEsIDc3NDc1LCA3NzQ4MCwgNzc0ODUsIDc3NDkwLCA3NzQ5NSwgNzc0OTksIDc3NTA0LCA3NzUwOSwgNzc1MTQsIAorICAgIDc3NTIwLCA3NzUyNSwgNzc1MzEsIDc3NTM3LCA3NzU0MywgNzc1NDksIDc3NTU1LCA3NzU2MCwgNzc1NjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NTcwLCA3NzU3NSwgNzc1NzksIDc3NTgzLCA3NzU4NywgNzc1OTEsIDc3NTk1LCAKKyAgICA3NzU5OSwgNzc2MDMsIDc3NjA3LCA3NzYxMSwgNzc2MTUsIDc3NjE5LCA3NzYyMywgNzc2MjcsIDc3NjMxLCA3NzYzNSwgCisgICAgNzc2MzksIDc3NjQzLCA3NzY0NywgNzc2NTEsIDc3NjU1LCA3NzY1OSwgNzc2NjMsIDc3NjY3LCA3NzY3MSwgNzc2NzUsIAorICAgIDc3Njc5LCA3NzY4MywgNzc2ODcsIDAsIDAsIDAsIDc3NjkxLCA3NzY5NiwgNzc3MDEsIDc3NzA2LCA3NzcxMSwgNzc3MTUsIAorICAgIDc3NzIyLCA3NzcyNiwgNzc3MzEsIDc3NzM1LCA3Nzc0MiwgNzc3NDksIDc3NzU4LCA3Nzc2MiwgNzc3NjcsIDc3NzcxLCAKKyAgICA3Nzc3NSwgNzc3ODIsIDc3Nzg5LCA3Nzc5NCwgNzc4MDEsIDc3ODA2LCA3NzgxMSwgNzc4MTgsIDc3ODIzLCA3NzgzMCwgCisgICAgNzc4MzcsIDc3ODQyLCA3Nzg0NywgNzc4NTQsIDc3ODU5LCA3Nzg2NiwgNzc4NzMsIDc3ODc4LCA3Nzg4NSwgNzc4OTAsIAorICAgIDc3ODk3LCA3NzkwMSwgNzc5MDUsIDc3OTEyLCA3NzkxNywgNzc5MjQsIDc3OTI4LCA3NzkzMiwgNzc5MzcsIDc3OTQ0LCAKKyAgICA3Nzk0OCwgNzc5NTMsIDc3OTYwLCA3Nzk2NywgNzc5NzIsIDc3OTc2LCA3Nzk4MywgNzc5ODksIDc3OTk1LCA3ODAwMSwgCisgICAgNzgwMDksIDc4MDE1LCA3ODAyMywgNzgwMjksIDc4MDM3LCA3ODA0MywgNzgwNDksIDc4MDU1LCA3ODA2MSwgNzgwNjUsIAorICAgIDc4MDcwLCA3ODA3NSwgNzgwODEsIDc4MDg3LCA3ODA5MywgNzgwOTksIDc4MTA1LCA3ODExMSwgNzgxMTcsIDc4MTIzLCAKKyAgICA3ODEzMSwgNzgxMzcsIDAsIDc4MTQ1LCA3ODE0OSwgNzgxNTQsIDc4MTU4LCA3ODE2MiwgNzgxNjYsIDc4MTcwLCA3ODE3NCwgCisgICAgNzgxNzgsIDc4MTgzLCA3ODE4NywgMCwgMCwgMCwgMCwgNzgxOTIsIDc4MjAwLCA3ODIwNiwgNzgyMTIsIDc4MjE4LCAKKyAgICA3ODIyNCwgNzgyMzAsIDc4MjM2LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCisgICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNSwgNzgzMzEsIDc4MzM3LCA3ODM0MywgNzgzNDksIAorICAgIDc4MzU1LCA3ODM2MiwgNzgzNjgsIDc4Mzc1LCA3ODM4MiwgNzgzODksIDc4Mzk2LCA3ODQwMywgMCwgNzg0MTAsIDc4NDE0LCAKKyAgICA3ODQxOCwgNzg0MjIsIDc4NDI2LCA3ODQzMSwgNzg0MzUsIDc4NDM5LCA3ODQ0NCwgNzg0NDksIDc4NDU0LCA3ODQ1OSwgCisgICAgNzg0NjQsIDc4NDY5LCA3ODQ3NCwgNzg0NzksIDc4NDg0LCA3ODQ4OSwgNzg0OTQsIDc4NDk5LCA3ODUwNCwgNzg1MDksIAorICAgIDc4NTE0LCA3ODUxOSwgNzg1MjQsIDc4NTI4LCA3ODUzMywgNzg1MzcsIDc4NTQyLCA3ODU0NywgNzg1NTIsIDc4NTU3LCAKKyAgICA3ODU2MiwgNzg1NjYsIDc4NTcxLCA3ODU3NSwgNzg1ODAsIDc4NTg0LCA3ODU4OSwgNzg1OTQsIDc4NTk5LCA3ODYwMywgCisgICAgNzg2MDksIDc4NjE0LCA3ODYyMCwgNzg2MjYsIDc4NjMxLCA3ODYzNywgNzg2NDIsIDc4NjQ4LCA3ODY1NCwgNzg2NjAsIAorICAgIDc4NjY1LCA3ODY3MSwgNzg2NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4NjgyLCA3ODY4OCwgNzg2OTQsIAorICAgIDc4NzAwLCA3ODcwNywgNzg3MTMsIDc4NzE5LCA3ODcyNSwgNzg3MzEsIDc4NzM3LCA3ODc0MiwgNzg3NDcsIDc4NzUzLCAKKyAgICA3ODc2MCwgMCwgMCwgNzg3NjcsIDc4NzcyLCA3ODc3NiwgNzg3ODAsIDc4Nzg0LCA3ODc4OCwgNzg3OTIsIDc4Nzk2LCAKKyAgICA3ODgwMSwgNzg4MDUsIDAsIDAsIDc4ODEwLCA3ODgxNiwgNzg4MjIsIDc4ODI5LCA3ODgzNywgNzg4NDMsIDc4ODQ5LCAKKyAgICA3ODg1NSwgNzg4NjEsIDc4ODY3LCA3ODg3MywgNzg4NzksIDc4ODg1LCA3ODg5MSwgNzg4OTcsIDc4OTAzLCA3ODkwOCwgCisgICAgNzg5MTQsIDc4OTE5LCA3ODkyNSwgNzg5MzEsIDc4OTM4LCA3ODk0NCwgNzg5NTAsIDc4OTU2LCA3ODk2MywgNzg5NzAsIAorICAgIDc4OTc3LCA3ODk4MywgNzg5ODgsIDc4OTkzLCA3ODk5OSwgNzkwMDcsIDc5MDE0LCA3OTAyMSwgNzkwMjksIDc5MDM3LCAKKyAgICA3OTA0NCwgNzkwNTEsIDc5MDU4LCA3OTA2NSwgNzkwNzIsIDc5MDc5LCA3OTA4NiwgNzkwOTMsIDc5MTAwLCA3OTEwNywgCisgICAgNzkxMTQsIDc5MTIxLCA3OTEyOCwgNzkxMzUsIDc5MTQyLCA3OTE0OSwgNzkxNTYsIDc5MTYzLCA3OTE3MCwgNzkxNzcsIAorICAgIDc5MTgzLCA3OTE4OSwgNzkxOTYsIDc5MjAzLCA3OTIxMCwgNzkyMTcsIDc5MjI0LCA3OTIzMSwgNzkyMzgsIDc5MjQ1LCAKKyAgICA3OTI1MiwgNzkyNTksIDc5MjY2LCA3OTI3MywgNzkyODAsIDc5Mjg3LCA3OTI5NCwgNzkzMDEsIDc5MzA4LCA3OTMxNSwgCisgICAgNzkzMjIsIDc5MzI5LCA3OTMzNiwgNzkzNDMsIDc5MzUwLCA3OTM1NywgNzkzNjMsIDc5MzY5LCA3OTM3NiwgNzkzODIsIAorICAgIDc5Mzg3LCA3OTM5MywgNzkzOTgsIDc5NDAzLCA3OTQwOCwgNzk0MTUsIDc5NDIxLCA3OTQyNywgNzk0MzMsIDc5NDM5LCAKKyAgICA3OTQ0NSwgNzk0NTEsIDc5NDU3LCA3OTQ2NSwgNzk0NzMsIDc5NDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQ4OSwgNzk0OTUsIDc5NTAxLCA3OTUwNywgCisgICAgNzk1MTUsIDc5NTIzLCA3OTUyOSwgNzk1MzUsIDc5NTQyLCA3OTU0OSwgNzk1NTYsIDc5NTYzLCA3OTU3MCwgNzk1NzcsIAorICAgIDc5NTg0LCA3OTU5MSwgNzk1OTgsIDc5NjA2LCA3OTYxNCwgNzk2MjIsIDc5NjMwLCA3OTYzOCwgNzk2NDQsIDc5NjUyLCAKKyAgICA3OTY1OCwgNzk2NjYsIDc5Njc1LCA3OTY4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk2ODksIDc5NjkzLCAKKyAgICA3OTY5NywgNzk3MDEsIDc5NzA1LCA3OTcwOSwgMCwgMCwgNzk3MTMsIDc5NzE3LCA3OTcyMSwgNzk3MjUsIDc5NzI5LCAKKyAgICA3OTczMywgMCwgMCwgNzk3MzcsIDc5NzQxLCA3OTc0NSwgNzk3NDksIDc5NzUzLCA3OTc1NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzk3NjEsIDc5NzY1LCA3OTc2OSwgNzk3NzMsIDc5Nzc3LCA3OTc4MSwgNzk3ODUsIDAsIDc5Nzg5LCAKKyAgICA3OTc5MywgNzk3OTcsIDc5ODAxLCA3OTgwNSwgNzk4MDksIDc5ODEzLCAwLCA3OTgxNywgNzk4MjQsIDc5ODMwLCA3OTgzNiwgCisgICAgNzk4NDIsIDc5ODQ5LCA3OTg1NiwgNzk4NjUsIDc5ODc3LCA3OTg4NywgNzk4OTYsIDc5OTA0LCA3OTkxMiwgNzk5MjAsIAorICAgIDc5OTI2LCA3OTkzNCwgNzk5NDEsIDc5OTQ4LCA3OTk1NywgNzk5NjgsIDc5OTc2LCA3OTk4NiwgNzk5OTIsIDgwMDAyLCAKKyAgICA4MDAxMSwgODAwMTYsIDgwMDI0LCA4MDAzMywgODAwMzgsIDgwMDQ3LCA4MDA1NCwgODAwNjQsIDgwMDc2LCA4MDA4MSwgCisgICAgODAwODgsIDgwMDk1LCA4MDEwMCwgODAxMTAsIDgwMTIwLCA4MDEzMCwgODAxNDAsIDgwMTU1LCA4MDE2OCwgODAxNzksIAorICAgIDgwMTg3LCA4MDE5MiwgODAyMDQsIDgwMjEzLCA4MDIyMCwgODAyMjcsIDgwMjMzLCA4MDIzOSwgODAyNDQsIDgwMjUxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDI1NywgODAyNjEsIDgwMjY1LCA4MDI2OSwgODAyNzMsIDgwMjc3LCAKKyAgICA4MDI4MiwgODAyODcsIDgwMjkxLCA4MDI5NiwgODAzMDEsIDgwMzA2LCA4MDMxMSwgODAzMTYsIDgwMzIwLCA4MDMyNSwgCisgICAgODAzMzAsIDgwMzM1LCA4MDM0MCwgODAzNDUsIDgwMzQ5LCA4MDM1NCwgODAzNTksIDgwMzY0LCA4MDM2OSwgODAzNzQsIAorICAgIDgwMzc4LCA4MDM4MywgODAzODgsIDgwMzkzLCA4MDM5OCwgODA0MDIsIDgwNDA3LCA4MDQxMiwgODA0MTcsIDgwNDIyLCAKKyAgICA4MDQyNywgODA0MzIsIDgwNDM3LCA4MDQ0MiwgODA0NDcsIDgwNDUyLCA4MDQ1NywgODA0NjIsIDgwNDY3LCA4MDQ3MiwgCisgICAgODA0NzcsIDgwNDgyLCA4MDQ4NywgODA0OTIsIDgwNDk3LCA4MDUwMiwgODA1MDcsIDgwNTEyLCA4MDUxNywgODA1MjIsIAorICAgIDgwNTI3LCA4MDUzMiwgODA1MzcsIDgwNTQyLCA4MDU0NywgODA1NTIsIDgwNTU3LCA4MDU2MiwgODA1NjcsIDgwNTcyLCAKKyAgICA4MDU3NywgODA1ODIsIDgwNTg3LCA4MDU5MiwgODA1OTcsIDgwNjAyLCA4MDYwNywgODA2MTIsIDgwNjE3LCA4MDYyMiwgCisgICAgODA2MjcsIDgwNjMyLCA4MDYzNywgODA2NDIsIDgwNjQ2LCA4MDY1MywgODA2NjAsIDgwNjY3LCA4MDY3NCwgODA2ODAsIAorICAgIDgwNjg2LCA4MDY5MywgODA3MDAsIDgwNzA3LCA4MDcxNCwgODA3MjEsIDgwNzI4LCA4MDczNSwgODA3NDIsIDgwNzQ5LCAKKyAgICA4MDc1NSwgODA3NjIsIDgwNzY5LCA4MDc3NiwgODA3ODMsIDgwNzkwLCA4MDc5NywgODA4MDQsIDgwODExLCA4MDgxOCwgCisgICAgODA4MjUsIDgwODMyLCA4MDg0MSwgODA4NTAsIDgwODU5LCA4MDg2OCwgODA4NzcsIDgwODg2LCA4MDg5NSwgODA5MDQsIAorICAgIDgwOTEyLCA4MDkyMCwgODA5MjgsIDgwOTM2LCA4MDk0NCwgODA5NTIsIDgwOTYwLCA4MDk2OCwgODA5NzQsIDgwOTgyLCAwLCAKKyAgICAwLCA4MDk5MCwgODA5OTcsIDgxMDAzLCA4MTAwOSwgODEwMTUsIDgxMDIxLCA4MTAyNywgODEwMzMsIDgxMDQwLCA4MTA0NiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xODMwMCw2MTggKzE5NDE5LDYzNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjMwLCA4MDIzNCwgODAyMzgsIDgwMjQyLCAKLSAgICA4MDI0NiwgODAyNTAsIDgwMjU0LCA4MDI1OCwgODAyNjIsIDgwMjY2LCA4MDI3MCwgODAyNzQsIDgwMjc4LCA4MDI4MiwgCi0gICAgODAyODYsIDgwMjkwLCA4MDI5NCwgODAyOTgsIDgwMzAyLCA4MDMwNiwgODAzMTAsIDgwMzE0LCA4MDMxOCwgMCwgMCwgMCwgCi0gICAgMCwgODAzMjIsIDgwMzI2LCA4MDMzMCwgODAzMzQsIDgwMzM4LCA4MDM0MiwgODAzNDYsIDgwMzUwLCA4MDM1NCwgODAzNTgsIAotICAgIDgwMzYyLCA4MDM2NiwgODAzNzAsIDgwMzc0LCA4MDM3OCwgODAzODIsIDgwMzg2LCA4MDM5MCwgODAzOTQsIDgwMzk4LCAKLSAgICA4MDQwMiwgODA0MDYsIDgwNDEwLCA4MDQxNCwgODA0MTgsIDgwNDIyLCA4MDQyNiwgODA0MzAsIDgwNDM0LCA4MDQzOCwgCi0gICAgODA0NDIsIDgwNDQ2LCA4MDQ1MCwgODA0NTQsIDgwNDU4LCA4MDQ2MiwgODA0NjYsIDgwNDcwLCA4MDQ3NCwgODA0NzgsIAotICAgIDgwNDgyLCA4MDQ4NiwgODA0OTAsIDgwNDk0LCA4MDQ5OCwgODA1MDIsIDgwNTA2LCA4MDUxMCwgODA1MTQsIDAsIDAsIDAsIAotICAgIDAsIDgwNTE4LCA4MDUyMiwgODA1MjYsIDgwNTMwLCA4MDUzNCwgODA1MzgsIDgwNTQyLCA4MDU0NiwgODA1NTAsIDgwNTU0LCAKLSAgICA4MDU1OCwgODA1NjIsIDgwNTY2LCA4MDU3MCwgODA1NzQsIDgwNTc4LCA4MDU4MiwgODA1ODYsIDgwNTkwLCA4MDU5NCwgCi0gICAgODA1OTgsIDgwNjAyLCA4MDYwNiwgODA2MTAsIDgwNjE0LCA4MDYxOCwgODA2MjIsIDgwNjI2LCA4MDYzMCwgODA2MzQsIAotICAgIDgwNjM4LCA4MDY0MiwgODA2NDYsIDgwNjUwLCA4MDY1NCwgODA2NTgsIDgwNjYyLCA4MDY2NiwgODA2NzAsIDgwNjc0LCAKLSAgICA4MDY3OCwgODA2ODIsIDgwNjg2LCA4MDY5MCwgODA2OTQsIDgwNjk4LCA4MDcwMiwgODA3MDYsIDgwNzEwLCA4MDcxNCwgCi0gICAgODA3MTgsIDgwNzIyLCA4MDcyNiwgODA3MzAsIDgwNzM0LCA4MDczOCwgODA3NDIsIDgwNzQ2LCA4MDc1MCwgODA3NTQsIAotICAgIDgwNzU4LCA4MDc2MiwgODA3NjYsIDgwNzcwLCA4MDc3NCwgODA3NzgsIDgwNzgyLCA4MDc4NiwgODA3OTAsIDgwNzk0LCAKLSAgICA4MDc5OCwgODA4MDIsIDgwODA2LCA4MDgxMCwgODA4MTQsIDgwODE4LCA4MDgyMiwgODA4MjYsIDgwODMwLCA4MDgzNCwgCi0gICAgODA4MzgsIDgwODQyLCA4MDg0NiwgODA4NTAsIDgwODU0LCA4MDg1OCwgODA4NjIsIDgwODY2LCA4MDg3MCwgODA4NzQsIAotICAgIDgwODc4LCA4MDg4MiwgODA4ODYsIDgwODkwLCA4MDg5NCwgODA4OTgsIDgwOTAyLCA4MDkwNiwgODA5MTAsIDgwOTE0LCAKLSAgICA4MDkxOCwgODA5MjIsIDgwOTI2LCA4MDkzMCwgODA5MzQsIDgwOTM4LCA4MDk0MiwgODA5NDYsIDgwOTUwLCA4MDk1NCwgCi0gICAgODA5NTgsIDgwOTYyLCA4MDk2NiwgODA5NzAsIDgwOTc0LCA4MDk3OCwgODA5ODIsIDgwOTg2LCA4MDk5MCwgODA5OTQsIAotICAgIDgwOTk4LCA4MTAwMiwgODEwMDYsIDgxMDEwLCA4MTAxNCwgODEwMTgsIDgxMDIyLCA4MTAyNiwgODEwMzAsIDgxMDM0LCAKLSAgICA4MTAzOCwgODEwNDIsIDgxMDQ2LCA4MTA1MCwgODEwNTQsIDgxMDU4LCA4MTA2MiwgODEwNjYsIDgxMDcwLCA4MTA3NCwgCi0gICAgODEwNzgsIDgxMDgyLCA4MTA4NiwgODEwOTAsIDgxMDk0LCA4MTA5OCwgODExMDIsIDgxMTA2LCA4MTExMCwgODExMTQsIAotICAgIDgxMTE4LCA4MTEyMiwgODExMjYsIDgxMTMwLCA4MTEzNCwgODExMzgsIDgxMTQyLCA4MTE0NiwgODExNTAsIDgxMTU0LCAKLSAgICA4MTE1OCwgODExNjIsIDgxMTY2LCA4MTE3MCwgODExNzQsIDgxMTc4LCA4MTE4MiwgODExODYsIDgxMTkwLCA4MTE5NCwgCi0gICAgODExOTgsIDgxMjAyLCA4MTIwNiwgODEyMTAsIDgxMjE0LCA4MTIxOCwgODEyMjIsIDgxMjI2LCA4MTIzMCwgODEyMzQsIAotICAgIDgxMjM4LCA4MTI0MiwgODEyNDYsIDgxMjUwLCA4MTI1NCwgODEyNTgsIDgxMjYyLCA4MTI2NiwgODEyNzAsIDgxMjc0LCAKLSAgICA4MTI3OCwgODEyODIsIDgxMjg2LCA4MTI5MCwgODEyOTQsIDgxMjk4LCA4MTMwMiwgODEzMDYsIDgxMzEwLCA4MTMxNCwgCi0gICAgODEzMTgsIDgxMzIyLCA4MTMyNiwgODEzMzAsIDgxMzM0LCA4MTMzOCwgODEzNDIsIDgxMzQ2LCA4MTM1MCwgODEzNTQsIAotICAgIDgxMzU4LCA4MTM2MiwgODEzNjYsIDgxMzcwLCA4MTM3NCwgODEzNzgsIDgxMzgyLCA4MTM4NiwgODEzOTAsIDgxMzk0LCAKLSAgICA4MTM5OCwgODE0MDIsIDgxNDA2LCA4MTQxMCwgODE0MTQsIDgxNDE4LCA4MTQyMiwgODE0MjYsIDgxNDMwLCA4MTQzNCwgCi0gICAgODE0MzgsIDgxNDQyLCA4MTQ0NiwgODE0NTAsIDgxNDU0LCA4MTQ1OCwgODE0NjIsIDgxNDY2LCA4MTQ3MCwgODE0NzQsIAotICAgIDgxNDc4LCA4MTQ4MiwgODE0ODYsIDgxNDkwLCA4MTQ5NCwgODE0OTgsIDgxNTAyLCA4MTUwNiwgODE1MTAsIDgxNTE0LCAKLSAgICA4MTUxOCwgODE1MjIsIDgxNTI2LCA4MTUzMCwgODE1MzQsIDgxNTM4LCA4MTU0MiwgODE1NDYsIDgxNTUwLCA4MTU1NCwgCi0gICAgODE1NTgsIDgxNTYyLCA4MTU2NiwgODE1NzAsIDgxNTc0LCA4MTU3OCwgODE1ODIsIDgxNTg2LCA4MTU5MCwgODE1OTQsIAotICAgIDgxNTk4LCA4MTYwMiwgODE2MDYsIDgxNjEwLCA4MTYxNCwgODE2MTgsIDgxNjIyLCA4MTYyNiwgODE2MzAsIDgxNjM0LCAKLSAgICA4MTYzOCwgODE2NDIsIDgxNjQ2LCA4MTY1MCwgODE2NTQsIDgxNjU4LCA4MTY2MiwgODE2NjYsIDgxNjcwLCA4MTY3NCwgCi0gICAgODE2NzgsIDgxNjgyLCA4MTY4NiwgODE2OTAsIDgxNjk0LCA4MTY5OCwgODE3MDIsIDgxNzA2LCA4MTcxMCwgODE3MTQsIAotICAgIDgxNzE4LCA4MTcyMiwgODE3MjYsIDgxNzMwLCA4MTczNCwgODE3MzgsIDgxNzQyLCA4MTc0NiwgODE3NTAsIDgxNzU0LCAKLSAgICA4MTc1OCwgODE3NjIsIDgxNzY2LCA4MTc3MCwgODE3NzQsIDgxNzc4LCA4MTc4MiwgODE3ODYsIDgxNzkwLCA4MTc5NCwgCi0gICAgODE3OTgsIDgxODAyLCA4MTgwNiwgODE4MTAsIDgxODE0LCA4MTgxOCwgODE4MjIsIDgxODI2LCA4MTgzMCwgODE4MzQsIAotICAgIDgxODM4LCA4MTg0MiwgODE4NDYsIDgxODUwLCA4MTg1NCwgODE4NTgsIDgxODYyLCA4MTg2NiwgODE4NzAsIDgxODc0LCAKLSAgICA4MTg3OCwgODE4ODIsIDgxODg2LCA4MTg5MCwgODE4OTQsIDgxODk4LCA4MTkwMiwgODE5MDYsIDgxOTEwLCA4MTkxNCwgCi0gICAgODE5MTgsIDgxOTIyLCA4MTkyNiwgODE5MzAsIDgxOTM0LCA4MTkzOCwgODE5NDIsIDgxOTQ2LCA4MTk1MCwgODE5NTQsIAotICAgIDgxOTU4LCA4MTk2MiwgODE5NjYsIDgxOTcwLCA4MTk3NCwgODE5NzgsIDAsIDAsIDgxOTgyLCA4MTk4NiwgODE5OTAsIAotICAgIDgxOTk0LCA4MTk5OCwgODIwMDIsIDgyMDA2LCA4MjAxMCwgODIwMTQsIDgyMDE4LCA4MjAyMiwgODIwMjYsIDgyMDMwLCAKLSAgICA4MjAzNCwgODIwMzgsIDgyMDQyLCA4MjA0NiwgODIwNTAsIDgyMDU0LCA4MjA1OCwgODIwNjIsIDgyMDY2LCA4MjA3MCwgCi0gICAgODIwNzQsIDgyMDc4LCA4MjA4MiwgODIwODYsIDgyMDkwLCA4MjA5NCwgODIwOTgsIDgyMTAyLCA4MjEwNiwgODIxMTAsIAotICAgIDgyMTE0LCA4MjExOCwgODIxMjIsIDgyMTI2LCA4MjEzMCwgODIxMzQsIDgyMTM4LCA4MjE0MiwgODIxNDYsIDgyMTUwLCAKLSAgICA4MjE1NCwgODIxNTgsIDgyMTYyLCA4MjE2NiwgODIxNzAsIDgyMTc0LCA4MjE3OCwgODIxODIsIDgyMTg2LCA4MjE5MCwgCi0gICAgODIxOTQsIDgyMTk4LCA4MjIwMiwgODIyMDYsIDgyMjEwLCA4MjIxNCwgODIyMTgsIDgyMjIyLCA4MjIyNiwgODIyMzAsIAotICAgIDgyMjM0LCA4MjIzOCwgODIyNDIsIDgyMjQ2LCA4MjI1MCwgODIyNTQsIDgyMjU4LCA4MjI2MiwgODIyNjYsIDgyMjcwLCAKLSAgICA4MjI3NCwgODIyNzgsIDgyMjgyLCA4MjI4NiwgODIyOTAsIDgyMjk0LCA4MjI5OCwgODIzMDIsIDgyMzA2LCA4MjMxMCwgCi0gICAgODIzMTQsIDgyMzE4LCA4MjMyMiwgODIzMjYsIDgyMzMwLCA4MjMzNCwgODIzMzgsIDgyMzQyLCA4MjM0NiwgODIzNTAsIAotICAgIDgyMzU0LCA4MjM1OCwgODIzNjIsIDgyMzY2LCA4MjM3MCwgODIzNzQsIDgyMzc4LCA4MjM4MiwgODIzODYsIDgyMzkwLCAKLSAgICA4MjM5NCwgODIzOTgsIDgyNDAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MjQwNiwgCi0gICAgODI0MTEsIDgyNDE2LCA4MjQyMSwgODI0MjYsIDgyNDMxLCA4MjQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODI0NDQsIDgyNDUxLCA4MjQ1OCwgODI0NjUsIDgyNDcyLCAwLCAwLCAwLCAwLCAwLCA4MjQ3OSwgODI0ODYsIAotICAgIDgyNDkzLCA4MjUwMywgODI1MDksIDgyNTE1LCA4MjUyMSwgODI1MjcsIDgyNTMzLCA4MjUzOSwgODI1NDYsIDgyNTUyLCAKLSAgICA4MjU1OCwgODI1NjQsIDgyNTczLCA4MjU4MiwgODI1OTQsIDgyNjA2LCA4MjYxMiwgODI2MTgsIDgyNjI0LCA4MjYzMSwgCi0gICAgODI2MzgsIDgyNjQ1LCA4MjY1MiwgODI2NTksIDAsIDgyNjY2LCA4MjY3MywgODI2ODAsIDgyNjg4LCA4MjY5NSwgMCwgCi0gICAgODI3MDIsIDAsIDgyNzA5LCA4MjcxNiwgMCwgODI3MjMsIDgyNzMxLCAwLCA4MjczOCwgODI3NDUsIDgyNzUyLCA4Mjc1OSwgCi0gICAgODI3NjYsIDgyNzczLCA4Mjc4MCwgODI3ODcsIDgyNzk0LCA4MjgwMSwgODI4MDYsIDgyODEzLCA4MjgyMCwgODI4MjYsIAotICAgIDgyODMyLCA4MjgzOCwgODI4NDQsIDgyODUwLCA4Mjg1NiwgODI4NjIsIDgyODY4LCA4Mjg3NCwgODI4ODAsIDgyODg2LCAKLSAgICA4Mjg5MiwgODI4OTgsIDgyOTA0LCA4MjkxMCwgODI5MTYsIDgyOTIyLCA4MjkyOCwgODI5MzQsIDgyOTQwLCA4Mjk0NiwgCi0gICAgODI5NTIsIDgyOTU4LCA4Mjk2NCwgODI5NzAsIDgyOTc2LCA4Mjk4MiwgODI5ODgsIDgyOTk0LCA4MzAwMCwgODMwMDYsIAotICAgIDgzMDEyLCA4MzAxOCwgODMwMjQsIDgzMDMwLCA4MzAzNiwgODMwNDIsIDgzMDQ4LCA4MzA1NCwgODMwNjAsIDgzMDY2LCAKLSAgICA4MzA3MiwgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAyLCA4MzEwOCwgODMxMTQsIDgzMTIwLCA4MzEyNiwgCi0gICAgODMxMzIsIDgzMTM4LCA4MzE0NCwgODMxNTAsIDgzMTU2LCA4MzE2MiwgODMxNjgsIDgzMTc0LCA4MzE4MCwgODMxODYsIAotICAgIDgzMTkyLCA4MzE5OCwgODMyMDQsIDgzMjEwLCA4MzIxNiwgODMyMjIsIDgzMjI4LCA4MzIzNCwgODMyNDAsIDgzMjQ2LCAKLSAgICA4MzI1MiwgODMyNTgsIDgzMjY0LCA4MzI3MCwgODMyNzYsIDgzMjg0LCA4MzI5MiwgODMyOTgsIDgzMzA0LCA4MzMxMCwgCi0gICAgODMzMTYsIDgzMzI1LCA4MzMzNCwgODMzNDIsIDgzMzUwLCA4MzM1OCwgODMzNjYsIDgzMzc0LCA4MzM4MiwgODMzOTAsIAotICAgIDgzMzk4LCA4MzQwNSwgODM0MTIsIDgzNDIzLCA4MzQzNCwgODM0MzgsIDgzNDQyLCA4MzQ0NywgODM0NTIsIDgzNDU3LCAKLSAgICA4MzQ2MiwgODM0NzAsIDgzNDc4LCA4MzQ4NCwgODM0OTAsIDgzNDk3LCA4MzUwNCwgODM1MTEsIDgzNTE1LCA4MzUyMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODM1MjcsIDgzNTMzLCA4MzUzOSwgCi0gICAgODM1NDUsIDgzNTUxLCA4MzU1NiwgODM1NjEsIDgzNTY3LCA4MzU3MywgODM1NzksIDgzNTg1LCA4MzU5NCwgODM2MDAsIAotICAgIDgzNjA2LCA4MzYxNCwgODM2MjIsIDgzNjMwLCA4MzYzOCwgODM2NDMsIDgzNjQ4LCA4MzY1MywgODM2NTgsIDgzNjcxLCAKLSAgICA4MzY4NCwgODM2OTUsIDgzNzA2LCA4MzcxOCwgODM3MzAsIDgzNzQyLCA4Mzc1NCwgODM3NjUsIDgzNzc2LCA4Mzc4OCwgCi0gICAgODM4MDAsIDgzODEyLCA4MzgyNCwgODM4MzUsIDgzODQ2LCA4Mzg1NywgODM4NzQsIDgzODkxLCA4MzkwOCwgODM5MTUsIAotICAgIDgzOTIyLCA4MzkyOSwgODM5MzYsIDgzOTQ3LCA4Mzk1OCwgODM5NjksIDgzOTgyLCA4Mzk5MywgODQwMDEsIDg0MDA5LCAKLSAgICA4NDAxOCwgODQwMjYsIDg0MDM2LCA4NDA0NCwgODQwNTIsIDg0MDYwLCA4NDA2OSwgODQwNzcsIDg0MDg3LCA4NDA5NSwgCi0gICAgODQxMDMsIDg0MTExLCA4NDEyMSwgODQxMjksIDg0MTM2LCA4NDE0MywgODQxNTAsIDg0MTU3LCA4NDE2NSwgODQxNzMsIAotICAgIDg0MTgxLCA4NDE4OSwgODQxOTcsIDg0MjA2LCA4NDIxNCwgODQyMjIsIDg0MjMwLCA4NDIzOCwgODQyNDYsIDg0MjU1LCAKLSAgICA4NDI2MywgODQyNzEsIDg0Mjc5LCA4NDI4NywgODQyOTUsIDg0MzAzLCA4NDMxMSwgODQzMTksIDg0MzI3LCA4NDMzNSwgCi0gICAgODQzNDQsIDg0MzUyLCA4NDM2MiwgODQzNzAsIDg0Mzc4LCA4NDM4NiwgODQzOTYsIDg0NDA0LCA4NDQxMiwgODQ0MjAsIAotICAgIDg0NDI4LCA4NDQzNywgODQ0NDYsIDg0NDU0LCA4NDQ2NCwgODQ0NzIsIDg0NDgwLCA4NDQ4OCwgODQ0OTcsIDg0NTA1LCAKLSAgICA4NDUxNSwgODQ1MjMsIDg0NTMwLCA4NDUzNywgODQ1NDUsIDg0NTUyLCA4NDU2MSwgODQ1NjgsIDg0NTc2LCA4NDU4NCwgCi0gICAgODQ1OTMsIDg0NjAxLCA4NDYxMSwgODQ2MTksIDg0NjI3LCA4NDYzNSwgODQ2NDUsIDg0NjUzLCA4NDY2MCwgODQ2NjcsIAotICAgIDg0Njc1LCA4NDY4MiwgODQ2OTEsIDg0Njk4LCA4NDcwOCwgODQ3MTgsIDg0NzI5LCA4NDczOCwgODQ3NDcsIDg0NzU2LCAKLSAgICA4NDc2NSwgODQ3NzQsIDg0Nzg0LCA4NDc5NiwgODQ4MDgsIDg0ODE5LCA4NDgzMSwgODQ4NDQsIDg0ODU1LCA4NDg2NCwgCi0gICAgODQ4NzMsIDg0ODgxLCA4NDg5MCwgODQ5MDAsIDg0OTA4LCA4NDkxNywgODQ5MjYsIDg0OTM0LCA4NDk0MywgODQ5NTMsIAotICAgIDg0OTYxLCA4NDk3MCwgODQ5NzksIDg0OTg3LCA4NDk5NiwgODUwMDYsIDg1MDE0LCA4NTAyNCwgODUwMzIsIDg1MDQyLCAKLSAgICA4NTA1MCwgODUwNTgsIDg1MDY3LCA4NTA3NSwgODUwODUsIDg1MDkzLCA4NTEwMSwgODUxMTEsIDg1MTE5LCA4NTEyNiwgCi0gICAgODUxMzMsIDg1MTQyLCA4NTE1MSwgODUxNTksIDg1MTY4LCA4NTE3OCwgODUxODYsIDg1MTk3LCA4NTIwNSwgODUyMTMsIAotICAgIDg1MjIwLCA4NTIyOCwgODUyMzcsIDg1MjQ0LCA4NTI1NSwgODUyNjYsIDg1Mjc4LCA4NTI4OSwgODUzMDEsIDg1MzA5LCAKLSAgICA4NTMxNywgODUzMjYsIDg1MzM0LCA4NTM0MywgODUzNTEsIDg1MzU5LCA4NTM2OCwgODUzNzYsIDg1Mzg1LCA4NTM5MywgCi0gICAgODU0MDAsIDg1NDA3LCA4NTQxNCwgODU0MjEsIDg1NDI5LCA4NTQzNywgODU0NDUsIDg1NDUzLCA4NTQ2MiwgODU0NzAsIAotICAgIDg1NDc4LCA4NTQ4NywgODU0OTUsIDg1NTAzLCA4NTUxMSwgODU1MjAsIDg1NTI4LCA4NTUzNiwgODU1NDQsIDg1NTUyLCAKLSAgICA4NTU2MCwgODU1NjgsIDg1NTc2LCA4NTU4NCwgODU1OTIsIDg1NjAxLCA4NTYwOSwgODU2MTcsIDg1NjI1LCA4NTYzMywgCi0gICAgODU2NDEsIDg1NjUwLCA4NTY1OSwgODU2NjcsIDg1Njc1LCA4NTY4MywgODU2OTIsIDg1NzAwLCA4NTcwOSwgODU3MTYsIAotICAgIDg1NzIzLCA4NTczMSwgODU3MzgsIDg1NzQ2LCA4NTc1NCwgODU3NjMsIDg1NzcxLCA4NTc4MCwgODU3ODgsIDg1Nzk2LCAKLSAgICA4NTgwNiwgODU4MTMsIDg1ODIwLCA4NTgyOCwgODU4MzUsIDg1ODQzLCA4NTg1NCwgODU4NjYsIDg1ODc0LCA4NTg4MywgCi0gICAgODU4OTEsIDg1OTAwLCA4NTkwOCwgODU5MTcsIDg1OTI1LCA4NTkzNCwgODU5NDIsIDg1OTUxLCA4NTk2MCwgODU5NjgsIAotICAgIDg1OTc2LCA4NTk4NCwgODU5OTMsIDg2MDAwLCA4NjAwOCwgODYwMTcsIDg2MDI2LCA4NjAzNSwgODYwNDUsIDg2MDUzLCAKLSAgICA4NjA2MywgODYwNzEsIDg2MDgxLCA4NjA4OSwgODYwOTksIDg2MTA3LCA4NjExNywgODYxMjUsIDg2MTM0LCA4NjE0MSwgCi0gICAgODYxNTAsIDg2MTU3LCA4NjE2NywgODYxNzUsIDg2MTg1LCA4NjE5MywgODYyMDMsIDg2MjExLCA4NjIxOSwgODYyMjcsIAotICAgIDg2MjM2LCA4NjI0NCwgODYyNTMsIDg2MjYyLCA4NjI3MSwgODYyODAsIDg2MjkwLCA4NjI5OCwgODYzMDgsIDg2MzE2LCAKLSAgICA4NjMyNiwgODYzMzQsIDg2MzQ0LCA4NjM1MiwgODYzNjIsIDg2MzcwLCA4NjM3OSwgODYzODYsIDg2Mzk1LCA4NjQwMiwgCi0gICAgODY0MTIsIDg2NDIwLCA4NjQzMCwgODY0MzgsIDg2NDQ4LCA4NjQ1NiwgODY0NjQsIDg2NDcyLCA4NjQ4MSwgODY0ODksIAotICAgIDg2NDk4LCA4NjUwNywgODY1MTYsIDg2NTI1LCA4NjUzMywgODY1NDEsIDg2NTUwLCA4NjU1OCwgODY1NjcsIDg2NTc2LCAKLSAgICA4NjU4NCwgODY1OTIsIDg2NjAwLCA4NjYwOSwgODY2MTcsIDg2NjI1LCA4NjYzNCwgODY2NDIsIDg2NjUwLCA4NjY1OCwgCi0gICAgODY2NjYsIDg2NjcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjY3NiwgCi0gICAgODY2ODYsIDg2Njk2LCA4NjcwNiwgODY3MTYsIDg2NzI3LCA4NjczNywgODY3NDcsIDg2NzU4LCA4Njc2NywgODY3NzYsIAotICAgIDg2Nzg1LCA4Njc5NiwgODY4MDYsIDg2ODE2LCA4NjgyOCwgODY4MzgsIDg2ODQ4LCA4Njg1OCwgODY4NjgsIDg2ODc4LCAKLSAgICA4Njg4OCwgODY4OTgsIDg2OTA4LCA4NjkxOCwgODY5MjgsIDg2OTM4LCA4Njk0OSwgODY5NjAsIDg2OTcwLCA4Njk4MCwgCi0gICAgODY5OTIsIDg3MDAzLCA4NzAxNCwgODcwMjQsIDg3MDM0LCA4NzA0NCwgODcwNTQsIDg3MDY0LCA4NzA3NCwgODcwODQsIAotICAgIDg3MDk2LCA4NzEwNiwgODcxMTYsIDg3MTI4LCA4NzEzOSwgODcxNTAsIDg3MTYwLCA4NzE3MCwgODcxODAsIDg3MTkwLCAKLSAgICA4NzIwMiwgODcyMTIsIDg3MjIyLCA4NzIzMywgODcyNDQsIDg3MjU0LCA4NzI2NCwgODcyNzMsIDg3MjgyLCA4NzI5MSwgCi0gICAgODczMDAsIDg3MzA5LCA4NzMxOSwgMCwgMCwgODczMjksIDg3MzM5LCA4NzM0OSwgODczNTksIDg3MzY5LCA4NzM4MSwgCi0gICAgODczOTEsIDg3NDAxLCA4NzQxMywgODc0MjMsIDg3NDM1LCA4NzQ0NCwgODc0NTMsIDg3NDY0LCA4NzQ3NCwgODc0ODYsIAotICAgIDg3NDk3LCA4NzUxMCwgODc1MjAsIDg3NTMyLCA4NzU0MSwgODc1NTIsIDg3NTYzLCA4NzU3NiwgODc1ODYsIDg3NTk2LCAKLSAgICA4NzYwNiwgODc2MTYsIDg3NjI2LCA4NzYzNSwgODc2NDQsIDg3NjUzLCA4NzY2MiwgODc2NzIsIDg3NjgyLCA4NzY5MiwgCi0gICAgODc3MDIsIDg3NzEyLCA4NzcyMiwgODc3MzIsIDg3NzQyLCA4Nzc1MiwgODc3NjIsIDg3NzcyLCA4Nzc4MiwgODc3OTEsIAotICAgIDg3ODAwLCA4NzgwOSwgODc4MTksIDg3ODI5LCA4NzgzOSwgODc4NDksIDg3ODU5LCA4Nzg3MCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEwNTMsIDgxMDU3LCA4MTA2MSwgODEwNjUsIAorICAgIDgxMDY5LCA4MTA3MywgODEwNzcsIDgxMDgxLCA4MTA4NSwgODEwODksIDgxMDkzLCA4MTA5NywgODExMDEsIDgxMTA1LCAKKyAgICA4MTEwOSwgODExMTMsIDgxMTE3LCA4MTEyMSwgODExMjUsIDgxMTI5LCA4MTEzMywgODExMzcsIDgxMTQxLCAwLCAwLCAwLCAKKyAgICAwLCA4MTE0NSwgODExNDksIDgxMTUzLCA4MTE1NywgODExNjEsIDgxMTY1LCA4MTE2OSwgODExNzMsIDgxMTc3LCA4MTE4MSwgCisgICAgODExODUsIDgxMTg5LCA4MTE5MywgODExOTcsIDgxMjAxLCA4MTIwNSwgODEyMDksIDgxMjEzLCA4MTIxNywgODEyMjEsIAorICAgIDgxMjI1LCA4MTIyOSwgODEyMzMsIDgxMjM3LCA4MTI0MSwgODEyNDUsIDgxMjQ5LCA4MTI1MywgODEyNTcsIDgxMjYxLCAKKyAgICA4MTI2NSwgODEyNjksIDgxMjczLCA4MTI3NywgODEyODEsIDgxMjg1LCA4MTI4OSwgODEyOTMsIDgxMjk3LCA4MTMwMSwgCisgICAgODEzMDUsIDgxMzA5LCA4MTMxMywgODEzMTcsIDgxMzIxLCA4MTMyNSwgODEzMjksIDgxMzMzLCA4MTMzNywgMCwgMCwgMCwgCisgICAgMCwgODEzNDEsIDgxMzQ1LCA4MTM0OSwgODEzNTMsIDgxMzU3LCA4MTM2MSwgODEzNjUsIDgxMzY5LCA4MTM3MywgODEzNzcsIAorICAgIDgxMzgxLCA4MTM4NSwgODEzODksIDgxMzkzLCA4MTM5NywgODE0MDEsIDgxNDA1LCA4MTQwOSwgODE0MTMsIDgxNDE3LCAKKyAgICA4MTQyMSwgODE0MjUsIDgxNDI5LCA4MTQzMywgODE0MzcsIDgxNDQxLCA4MTQ0NSwgODE0NDksIDgxNDUzLCA4MTQ1NywgCisgICAgODE0NjEsIDgxNDY1LCA4MTQ2OSwgODE0NzMsIDgxNDc3LCA4MTQ4MSwgODE0ODUsIDgxNDg5LCA4MTQ5MywgODE0OTcsIAorICAgIDgxNTAxLCA4MTUwNSwgODE1MDksIDgxNTEzLCA4MTUxNywgODE1MjEsIDgxNTI1LCA4MTUyOSwgODE1MzMsIDgxNTM3LCAKKyAgICA4MTU0MSwgODE1NDUsIDgxNTQ5LCA4MTU1MywgODE1NTcsIDgxNTYxLCA4MTU2NSwgODE1NjksIDgxNTczLCA4MTU3NywgCisgICAgODE1ODEsIDgxNTg1LCA4MTU4OSwgODE1OTMsIDgxNTk3LCA4MTYwMSwgODE2MDUsIDgxNjA5LCA4MTYxMywgODE2MTcsIAorICAgIDgxNjIxLCA4MTYyNSwgODE2MjksIDgxNjMzLCA4MTYzNywgODE2NDEsIDgxNjQ1LCA4MTY0OSwgODE2NTMsIDgxNjU3LCAKKyAgICA4MTY2MSwgODE2NjUsIDgxNjY5LCA4MTY3MywgODE2NzcsIDgxNjgxLCA4MTY4NSwgODE2ODksIDgxNjkzLCA4MTY5NywgCisgICAgODE3MDEsIDgxNzA1LCA4MTcwOSwgODE3MTMsIDgxNzE3LCA4MTcyMSwgODE3MjUsIDgxNzI5LCA4MTczMywgODE3MzcsIAorICAgIDgxNzQxLCA4MTc0NSwgODE3NDksIDgxNzUzLCA4MTc1NywgODE3NjEsIDgxNzY1LCA4MTc2OSwgODE3NzMsIDgxNzc3LCAKKyAgICA4MTc4MSwgODE3ODUsIDgxNzg5LCA4MTc5MywgODE3OTcsIDgxODAxLCA4MTgwNSwgODE4MDksIDgxODEzLCA4MTgxNywgCisgICAgODE4MjEsIDgxODI1LCA4MTgyOSwgODE4MzMsIDgxODM3LCA4MTg0MSwgODE4NDUsIDgxODQ5LCA4MTg1MywgODE4NTcsIAorICAgIDgxODYxLCA4MTg2NSwgODE4NjksIDgxODczLCA4MTg3NywgODE4ODEsIDgxODg1LCA4MTg4OSwgODE4OTMsIDgxODk3LCAKKyAgICA4MTkwMSwgODE5MDUsIDgxOTA5LCA4MTkxMywgODE5MTcsIDgxOTIxLCA4MTkyNSwgODE5MjksIDgxOTMzLCA4MTkzNywgCisgICAgODE5NDEsIDgxOTQ1LCA4MTk0OSwgODE5NTMsIDgxOTU3LCA4MTk2MSwgODE5NjUsIDgxOTY5LCA4MTk3MywgODE5NzcsIAorICAgIDgxOTgxLCA4MTk4NSwgODE5ODksIDgxOTkzLCA4MTk5NywgODIwMDEsIDgyMDA1LCA4MjAwOSwgODIwMTMsIDgyMDE3LCAKKyAgICA4MjAyMSwgODIwMjUsIDgyMDI5LCA4MjAzMywgODIwMzcsIDgyMDQxLCA4MjA0NSwgODIwNDksIDgyMDUzLCA4MjA1NywgCisgICAgODIwNjEsIDgyMDY1LCA4MjA2OSwgODIwNzMsIDgyMDc3LCA4MjA4MSwgODIwODUsIDgyMDg5LCA4MjA5MywgODIwOTcsIAorICAgIDgyMTAxLCA4MjEwNSwgODIxMDksIDgyMTEzLCA4MjExNywgODIxMjEsIDgyMTI1LCA4MjEyOSwgODIxMzMsIDgyMTM3LCAKKyAgICA4MjE0MSwgODIxNDUsIDgyMTQ5LCA4MjE1MywgODIxNTcsIDgyMTYxLCA4MjE2NSwgODIxNjksIDgyMTczLCA4MjE3NywgCisgICAgODIxODEsIDgyMTg1LCA4MjE4OSwgODIxOTMsIDgyMTk3LCA4MjIwMSwgODIyMDUsIDgyMjA5LCA4MjIxMywgODIyMTcsIAorICAgIDgyMjIxLCA4MjIyNSwgODIyMjksIDgyMjMzLCA4MjIzNywgODIyNDEsIDgyMjQ1LCA4MjI0OSwgODIyNTMsIDgyMjU3LCAKKyAgICA4MjI2MSwgODIyNjUsIDgyMjY5LCA4MjI3MywgODIyNzcsIDgyMjgxLCA4MjI4NSwgODIyODksIDgyMjkzLCA4MjI5NywgCisgICAgODIzMDEsIDgyMzA1LCA4MjMwOSwgODIzMTMsIDgyMzE3LCA4MjMyMSwgODIzMjUsIDgyMzI5LCA4MjMzMywgODIzMzcsIAorICAgIDgyMzQxLCA4MjM0NSwgODIzNDksIDgyMzUzLCA4MjM1NywgODIzNjEsIDgyMzY1LCA4MjM2OSwgODIzNzMsIDgyMzc3LCAKKyAgICA4MjM4MSwgODIzODUsIDgyMzg5LCA4MjM5MywgODIzOTcsIDgyNDAxLCA4MjQwNSwgODI0MDksIDgyNDEzLCA4MjQxNywgCisgICAgODI0MjEsIDgyNDI1LCA4MjQyOSwgODI0MzMsIDgyNDM3LCA4MjQ0MSwgODI0NDUsIDgyNDQ5LCA4MjQ1MywgODI0NTcsIAorICAgIDgyNDYxLCA4MjQ2NSwgODI0NjksIDgyNDczLCA4MjQ3NywgODI0ODEsIDgyNDg1LCA4MjQ4OSwgODI0OTMsIDgyNDk3LCAKKyAgICA4MjUwMSwgODI1MDUsIDgyNTA5LCA4MjUxMywgODI1MTcsIDgyNTIxLCA4MjUyNSwgODI1MjksIDgyNTMzLCA4MjUzNywgCisgICAgODI1NDEsIDgyNTQ1LCA4MjU0OSwgODI1NTMsIDgyNTU3LCA4MjU2MSwgODI1NjUsIDgyNTY5LCA4MjU3MywgODI1NzcsIAorICAgIDgyNTgxLCA4MjU4NSwgODI1ODksIDgyNTkzLCA4MjU5NywgODI2MDEsIDgyNjA1LCA4MjYwOSwgODI2MTMsIDgyNjE3LCAKKyAgICA4MjYyMSwgODI2MjUsIDgyNjI5LCA4MjYzMywgODI2MzcsIDgyNjQxLCA4MjY0NSwgODI2NDksIDgyNjUzLCA4MjY1NywgCisgICAgODI2NjEsIDgyNjY1LCA4MjY2OSwgODI2NzMsIDgyNjc3LCA4MjY4MSwgODI2ODUsIDgyNjg5LCA4MjY5MywgODI2OTcsIAorICAgIDgyNzAxLCA4MjcwNSwgODI3MDksIDgyNzEzLCA4MjcxNywgODI3MjEsIDgyNzI1LCA4MjcyOSwgODI3MzMsIDgyNzM3LCAKKyAgICA4Mjc0MSwgODI3NDUsIDgyNzQ5LCA4Mjc1MywgODI3NTcsIDgyNzYxLCA4Mjc2NSwgODI3NjksIDgyNzczLCA4Mjc3NywgCisgICAgODI3ODEsIDgyNzg1LCA4Mjc4OSwgODI3OTMsIDgyNzk3LCA4MjgwMSwgMCwgMCwgODI4MDUsIDgyODA5LCA4MjgxMywgCisgICAgODI4MTcsIDgyODIxLCA4MjgyNSwgODI4MjksIDgyODMzLCA4MjgzNywgODI4NDEsIDgyODQ1LCA4Mjg0OSwgODI4NTMsIAorICAgIDgyODU3LCA4Mjg2MSwgODI4NjUsIDgyODY5LCA4Mjg3MywgODI4NzcsIDgyODgxLCA4Mjg4NSwgODI4ODksIDgyODkzLCAKKyAgICA4Mjg5NywgODI5MDEsIDgyOTA1LCA4MjkwOSwgODI5MTMsIDgyOTE3LCA4MjkyMSwgODI5MjUsIDgyOTI5LCA4MjkzMywgCisgICAgODI5MzcsIDgyOTQxLCA4Mjk0NSwgODI5NDksIDgyOTUzLCA4Mjk1NywgODI5NjEsIDgyOTY1LCA4Mjk2OSwgODI5NzMsIAorICAgIDgyOTc3LCA4Mjk4MSwgODI5ODUsIDgyOTg5LCA4Mjk5MywgODI5OTcsIDgzMDAxLCA4MzAwNSwgODMwMDksIDgzMDEzLCAKKyAgICA4MzAxNywgODMwMjEsIDgzMDI1LCA4MzAyOSwgODMwMzMsIDgzMDM3LCA4MzA0MSwgODMwNDUsIDgzMDQ5LCA4MzA1MywgCisgICAgODMwNTcsIDgzMDYxLCA4MzA2NSwgODMwNjksIDgzMDczLCA4MzA3NywgODMwODEsIDgzMDg1LCA4MzA4OSwgODMwOTMsIAorICAgIDgzMDk3LCA4MzEwMSwgODMxMDUsIDgzMTA5LCA4MzExMywgODMxMTcsIDgzMTIxLCA4MzEyNSwgODMxMjksIDgzMTMzLCAKKyAgICA4MzEzNywgODMxNDEsIDgzMTQ1LCA4MzE0OSwgODMxNTMsIDgzMTU3LCA4MzE2MSwgODMxNjUsIDgzMTY5LCA4MzE3MywgCisgICAgODMxNzcsIDgzMTgxLCA4MzE4NSwgODMxODksIDgzMTkzLCA4MzE5NywgODMyMDEsIDgzMjA1LCA4MzIwOSwgODMyMTMsIAorICAgIDgzMjE3LCA4MzIyMSwgODMyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzMjI5LCAKKyAgICA4MzIzNCwgODMyMzksIDgzMjQ0LCA4MzI0OSwgODMyNTQsIDgzMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA4MzI2NywgODMyNzQsIDgzMjgxLCA4MzI4OCwgODMyOTUsIDAsIDAsIDAsIDAsIDAsIDgzMzAyLCA4MzMwOSwgCisgICAgODMzMTYsIDgzMzI2LCA4MzMzMiwgODMzMzgsIDgzMzQ0LCA4MzM1MCwgODMzNTYsIDgzMzYyLCA4MzM2OSwgODMzNzUsIAorICAgIDgzMzgxLCA4MzM4NywgODMzOTYsIDgzNDA1LCA4MzQxNywgODM0MjksIDgzNDM1LCA4MzQ0MSwgODM0NDcsIDgzNDU0LCAKKyAgICA4MzQ2MSwgODM0NjgsIDgzNDc1LCA4MzQ4MiwgMCwgODM0ODksIDgzNDk2LCA4MzUwMywgODM1MTEsIDgzNTE4LCAwLCAKKyAgICA4MzUyNSwgMCwgODM1MzIsIDgzNTM5LCAwLCA4MzU0NiwgODM1NTQsIDAsIDgzNTYxLCA4MzU2OCwgODM1NzUsIDgzNTgyLCAKKyAgICA4MzU4OSwgODM1OTYsIDgzNjAzLCA4MzYxMCwgODM2MTcsIDgzNjI0LCA4MzYyOSwgODM2MzYsIDgzNjQzLCA4MzY0OSwgCisgICAgODM2NTUsIDgzNjYxLCA4MzY2NywgODM2NzMsIDgzNjc5LCA4MzY4NSwgODM2OTEsIDgzNjk3LCA4MzcwMywgODM3MDksIAorICAgIDgzNzE1LCA4MzcyMSwgODM3MjcsIDgzNzMzLCA4MzczOSwgODM3NDUsIDgzNzUxLCA4Mzc1NywgODM3NjMsIDgzNzY5LCAKKyAgICA4Mzc3NSwgODM3ODEsIDgzNzg3LCA4Mzc5MywgODM3OTksIDgzODA1LCA4MzgxMSwgODM4MTcsIDgzODIzLCA4MzgyOSwgCisgICAgODM4MzUsIDgzODQxLCA4Mzg0NywgODM4NTMsIDgzODU5LCA4Mzg2NSwgODM4NzEsIDgzODc3LCA4Mzg4MywgODM4ODksIAorICAgIDgzODk1LCA4MzkwMSwgODM5MDcsIDgzOTEzLCA4MzkxOSwgODM5MjUsIDgzOTMxLCA4MzkzNywgODM5NDMsIDgzOTQ5LCAKKyAgICA4Mzk1NSwgODM5NjEsIDgzOTY3LCA4Mzk3MywgODM5NzksIDgzOTg1LCA4Mzk5MSwgODM5OTcsIDg0MDAzLCA4NDAwOSwgCisgICAgODQwMTUsIDg0MDIxLCA4NDAyNywgODQwMzMsIDg0MDM5LCA4NDA0NSwgODQwNTEsIDg0MDU3LCA4NDA2MywgODQwNjksIAorICAgIDg0MDc1LCA4NDA4MSwgODQwODcsIDg0MDkzLCA4NDA5OSwgODQxMDcsIDg0MTE1LCA4NDEyMSwgODQxMjcsIDg0MTMzLCAKKyAgICA4NDEzOSwgODQxNDgsIDg0MTU3LCA4NDE2NSwgODQxNzMsIDg0MTgxLCA4NDE4OSwgODQxOTcsIDg0MjA1LCA4NDIxMywgCisgICAgODQyMjEsIDg0MjI4LCA4NDIzNSwgODQyNDYsIDg0MjU3LCA4NDI2MSwgODQyNjUsIDg0MjcwLCA4NDI3NSwgODQyODAsIAorICAgIDg0Mjg1LCA4NDI5MywgODQzMDEsIDg0MzA3LCA4NDMxMywgODQzMjAsIDg0MzI3LCA4NDMzNCwgODQzMzgsIDg0MzQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NDM1MCwgODQzNTYsIDg0MzYyLCAKKyAgICA4NDM2OCwgODQzNzQsIDg0Mzc5LCA4NDM4NCwgODQzOTAsIDg0Mzk2LCA4NDQwMiwgODQ0MDgsIDg0NDE3LCA4NDQyMywgCisgICAgODQ0MjksIDg0NDM3LCA4NDQ0NSwgODQ0NTMsIDg0NDYxLCA4NDQ2NiwgODQ0NzEsIDg0NDc2LCA4NDQ4MSwgODQ0OTQsIAorICAgIDg0NTA3LCA4NDUxOCwgODQ1MjksIDg0NTQxLCA4NDU1MywgODQ1NjUsIDg0NTc3LCA4NDU4OCwgODQ1OTksIDg0NjExLCAKKyAgICA4NDYyMywgODQ2MzUsIDg0NjQ3LCA4NDY1OCwgODQ2NjksIDg0NjgwLCA4NDY5NywgODQ3MTQsIDg0NzMxLCA4NDczOCwgCisgICAgODQ3NDUsIDg0NzUyLCA4NDc1OSwgODQ3NzAsIDg0NzgxLCA4NDc5MiwgODQ4MDUsIDg0ODE2LCA4NDgyNCwgODQ4MzIsIAorICAgIDg0ODQxLCA4NDg0OSwgODQ4NTksIDg0ODY3LCA4NDg3NSwgODQ4ODMsIDg0ODkyLCA4NDkwMCwgODQ5MTAsIDg0OTE4LCAKKyAgICA4NDkyNiwgODQ5MzQsIDg0OTQ0LCA4NDk1MiwgODQ5NTksIDg0OTY2LCA4NDk3MywgODQ5ODAsIDg0OTg4LCA4NDk5NiwgCisgICAgODUwMDQsIDg1MDEyLCA4NTAyMCwgODUwMjksIDg1MDM3LCA4NTA0NSwgODUwNTMsIDg1MDYxLCA4NTA2OSwgODUwNzgsIAorICAgIDg1MDg2LCA4NTA5NCwgODUxMDIsIDg1MTEwLCA4NTExOCwgODUxMjYsIDg1MTM0LCA4NTE0MiwgODUxNTAsIDg1MTU4LCAKKyAgICA4NTE2NywgODUxNzUsIDg1MTg1LCA4NTE5MywgODUyMDEsIDg1MjA5LCA4NTIxOSwgODUyMjcsIDg1MjM1LCA4NTI0MywgCisgICAgODUyNTEsIDg1MjYwLCA4NTI2OSwgODUyNzcsIDg1Mjg3LCA4NTI5NSwgODUzMDMsIDg1MzExLCA4NTMyMCwgODUzMjgsIAorICAgIDg1MzM4LCA4NTM0NiwgODUzNTMsIDg1MzYwLCA4NTM2OCwgODUzNzUsIDg1Mzg0LCA4NTM5MSwgODUzOTksIDg1NDA3LCAKKyAgICA4NTQxNiwgODU0MjQsIDg1NDM0LCA4NTQ0MiwgODU0NTAsIDg1NDU4LCA4NTQ2OCwgODU0NzYsIDg1NDgzLCA4NTQ5MCwgCisgICAgODU0OTgsIDg1NTA1LCA4NTUxNCwgODU1MjEsIDg1NTMxLCA4NTU0MSwgODU1NTIsIDg1NTYxLCA4NTU3MCwgODU1NzksIAorICAgIDg1NTg4LCA4NTU5NywgODU2MDcsIDg1NjE5LCA4NTYzMSwgODU2NDIsIDg1NjU0LCA4NTY2NywgODU2NzgsIDg1Njg3LCAKKyAgICA4NTY5NiwgODU3MDQsIDg1NzEzLCA4NTcyMywgODU3MzEsIDg1NzQwLCA4NTc0OSwgODU3NTcsIDg1NzY2LCA4NTc3NiwgCisgICAgODU3ODQsIDg1NzkzLCA4NTgwMiwgODU4MTAsIDg1ODE5LCA4NTgyOSwgODU4MzcsIDg1ODQ3LCA4NTg1NSwgODU4NjUsIAorICAgIDg1ODczLCA4NTg4MSwgODU4OTAsIDg1ODk4LCA4NTkwOCwgODU5MTYsIDg1OTI0LCA4NTkzNCwgODU5NDIsIDg1OTQ5LCAKKyAgICA4NTk1NiwgODU5NjUsIDg1OTc0LCA4NTk4MiwgODU5OTEsIDg2MDAxLCA4NjAwOSwgODYwMjAsIDg2MDI4LCA4NjAzNiwgCisgICAgODYwNDMsIDg2MDUxLCA4NjA2MCwgODYwNjcsIDg2MDc4LCA4NjA4OSwgODYxMDEsIDg2MTEyLCA4NjEyNCwgODYxMzIsIAorICAgIDg2MTQwLCA4NjE0OSwgODYxNTcsIDg2MTY2LCA4NjE3NCwgODYxODIsIDg2MTkxLCA4NjE5OSwgODYyMDgsIDg2MjE2LCAKKyAgICA4NjIyMywgODYyMzAsIDg2MjM3LCA4NjI0NCwgODYyNTIsIDg2MjYwLCA4NjI2OCwgODYyNzYsIDg2Mjg1LCA4NjI5MywgCisgICAgODYzMDEsIDg2MzEwLCA4NjMxOCwgODYzMjYsIDg2MzM0LCA4NjM0MywgODYzNTEsIDg2MzU5LCA4NjM2NywgODYzNzUsIAorICAgIDg2MzgzLCA4NjM5MSwgODYzOTksIDg2NDA3LCA4NjQxNSwgODY0MjQsIDg2NDMyLCA4NjQ0MCwgODY0NDgsIDg2NDU2LCAKKyAgICA4NjQ2NCwgODY0NzMsIDg2NDgyLCA4NjQ5MCwgODY0OTgsIDg2NTA2LCA4NjUxNSwgODY1MjMsIDg2NTMyLCA4NjUzOSwgCisgICAgODY1NDYsIDg2NTU0LCA4NjU2MSwgODY1NjksIDg2NTc3LCA4NjU4NiwgODY1OTQsIDg2NjAzLCA4NjYxMSwgODY2MTksIAorICAgIDg2NjI5LCA4NjYzNiwgODY2NDMsIDg2NjUxLCA4NjY1OCwgODY2NjYsIDg2Njc3LCA4NjY4OSwgODY2OTcsIDg2NzA2LCAKKyAgICA4NjcxNCwgODY3MjMsIDg2NzMxLCA4Njc0MCwgODY3NDgsIDg2NzU3LCA4Njc2NSwgODY3NzQsIDg2NzgzLCA4Njc5MSwgCisgICAgODY3OTksIDg2ODA3LCA4NjgxNiwgODY4MjMsIDg2ODMxLCA4Njg0MCwgODY4NDksIDg2ODU4LCA4Njg2OCwgODY4NzYsIAorICAgIDg2ODg2LCA4Njg5NCwgODY5MDQsIDg2OTEyLCA4NjkyMiwgODY5MzAsIDg2OTQwLCA4Njk0OCwgODY5NTcsIDg2OTY0LCAKKyAgICA4Njk3MywgODY5ODAsIDg2OTkwLCA4Njk5OCwgODcwMDgsIDg3MDE2LCA4NzAyNiwgODcwMzQsIDg3MDQyLCA4NzA1MCwgCisgICAgODcwNTksIDg3MDY3LCA4NzA3NiwgODcwODUsIDg3MDk0LCA4NzEwMywgODcxMTMsIDg3MTIxLCA4NzEzMSwgODcxMzksIAorICAgIDg3MTQ5LCA4NzE1NywgODcxNjcsIDg3MTc1LCA4NzE4NSwgODcxOTMsIDg3MjAyLCA4NzIwOSwgODcyMTgsIDg3MjI1LCAKKyAgICA4NzIzNSwgODcyNDMsIDg3MjUzLCA4NzI2MSwgODcyNzEsIDg3Mjc5LCA4NzI4NywgODcyOTUsIDg3MzA0LCA4NzMxMiwgCisgICAgODczMjEsIDg3MzMwLCA4NzMzOSwgODczNDgsIDg3MzU2LCA4NzM2NCwgODczNzMsIDg3MzgxLCA4NzM5MCwgODczOTksIAorICAgIDg3NDA3LCA4NzQxNSwgODc0MjMsIDg3NDMyLCA4NzQ0MCwgODc0NDgsIDg3NDU3LCA4NzQ2NSwgODc0NzMsIDg3NDgxLCAKKyAgICA4NzQ4OSwgODc0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NDk5LCAKKyAgICA4NzUwOSwgODc1MTksIDg3NTI5LCA4NzUzOSwgODc1NTAsIDg3NTYwLCA4NzU3MCwgODc1ODEsIDg3NTkwLCA4NzU5OSwgCisgICAgODc2MDgsIDg3NjE5LCA4NzYyOSwgODc2MzksIDg3NjUxLCA4NzY2MSwgODc2NzEsIDg3NjgxLCA4NzY5MSwgODc3MDEsIAorICAgIDg3NzExLCA4NzcyMSwgODc3MzEsIDg3NzQxLCA4Nzc1MSwgODc3NjEsIDg3NzcyLCA4Nzc4MywgODc3OTMsIDg3ODAzLCAKKyAgICA4NzgxNSwgODc4MjYsIDg3ODM3LCA4Nzg0NywgODc4NTcsIDg3ODY3LCA4Nzg3NywgODc4ODcsIDg3ODk3LCA4NzkwNywgCisgICAgODc5MTksIDg3OTI5LCA4NzkzOSwgODc5NTEsIDg3OTYyLCA4Nzk3MywgODc5ODMsIDg3OTkzLCA4ODAwMywgODgwMTMsIAorICAgIDg4MDI1LCA4ODAzNSwgODgwNDUsIDg4MDU2LCA4ODA2NywgODgwNzcsIDg4MDg3LCA4ODA5NiwgODgxMDUsIDg4MTE0LCAKKyAgICA4ODEyMywgODgxMzIsIDg4MTQyLCAwLCAwLCA4ODE1MiwgODgxNjIsIDg4MTcyLCA4ODE4MiwgODgxOTIsIDg4MjA0LCAKKyAgICA4ODIxNCwgODgyMjQsIDg4MjM2LCA4ODI0NiwgODgyNTgsIDg4MjY3LCA4ODI3NiwgODgyODcsIDg4Mjk3LCA4ODMwOSwgCisgICAgODgzMjAsIDg4MzMzLCA4ODM0MywgODgzNTUsIDg4MzY0LCA4ODM3NSwgODgzODYsIDg4Mzk5LCA4ODQwOSwgODg0MTksIAorICAgIDg4NDI5LCA4ODQzOSwgODg0NDksIDg4NDU4LCA4ODQ2NywgODg0NzYsIDg4NDg1LCA4ODQ5NSwgODg1MDUsIDg4NTE1LCAKKyAgICA4ODUyNSwgODg1MzUsIDg4NTQ1LCA4ODU1NSwgODg1NjUsIDg4NTc1LCA4ODU4NSwgODg1OTUsIDg4NjA1LCA4ODYxNCwgCisgICAgODg2MjMsIDg4NjMyLCA4ODY0MiwgODg2NTIsIDg4NjYyLCA4ODY3MiwgODg2ODIsIDg4NjkzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Nzg4MCwgODc4OTUsIDg3OTEwLCA4NzkxNiwgODc5MjIsIDg3OTI4LCAKLSAgICA4NzkzNCwgODc5NDAsIDg3OTQ2LCA4Nzk1MiwgODc5NTgsIDg3OTY2LCA4Nzk3MCwgODc5NzMsIDAsIDAsIDg3OTgxLCAKLSAgICA4Nzk4NCwgODc5ODcsIDg3OTkwLCA4Nzk5MywgODc5OTYsIDg3OTk5LCA4ODAwMiwgODgwMDUsIDg4MDA4LCA4ODAxMSwgCi0gICAgODgwMTQsIDg4MDE3LCA4ODAyMCwgODgwMjMsIDg4MDI2LCA4ODAyOSwgODgwMzcsIDg4MDQ2LCA4ODA1NywgODgwNjUsIAotICAgIDg4MDczLCA4ODA4MiwgODgwOTEsIDg4MTAyLCA4ODExNCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxMjQsIDg4MTI5LCA4ODEzNCwgCi0gICAgODgxNDEsIDg4MTQ4LCA4ODE1NCwgODgxNjAsIDg4MTY1LCA4ODE3MCwgODgxNzUsIDg4MTgxLCA4ODE4NywgODgxOTMsIAotICAgIDg4MTk5LCA4ODIwNSwgODgyMTIsIDg4MjE5LCA4ODIyOSwgODgyMzksIDg4MjQ5LCA4ODI1OCwgODgyNjksIDg4Mjc4LCAKLSAgICA4ODI4NywgODgyOTcsIDg4MzA3LCA4ODMxOSwgODgzMzEsIDg4MzQyLCA4ODM1MywgODgzNjQsIDg4Mzc1LCA4ODM4NSwgCi0gICAgODgzOTUsIDg4NDA1LCA4ODQxNSwgODg0MjYsIDg4NDM3LCA4ODQ0MSwgODg0NDYsIDg4NDU1LCA4ODQ2NCwgODg0NjgsIAotICAgIDg4NDcyLCA4ODQ3NiwgODg0ODEsIDg4NDg2LCA4ODQ5MSwgODg0OTYsIDg4NDk5LCA4ODUwMywgMCwgODg1MDgsIDg4NTExLCAKLSAgICA4ODUxNCwgODg1MTgsIDg4NTIyLCA4ODUyNywgODg1MzEsIDg4NTM1LCA4ODU0MCwgODg1NDUsIDg4NTUyLCA4ODU1OSwgCi0gICAgODg1NjIsIDg4NTY1LCA4ODU2OCwgODg1NzEsIDg4NTc0LCA4ODU3OCwgODg1ODIsIDAsIDg4NTg2LCA4ODU5MSwgODg1OTUsIAotICAgIDg4NTk5LCAwLCAwLCAwLCAwLCA4ODYwNCwgODg2MDksIDg4NjE2LCA4ODYyMSwgODg2MjYsIDAsIDg4NjMxLCA4ODYzNiwgCi0gICAgODg2NDEsIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgODg2NzEsIDg4Njc2LCA4ODY4MSwgODg2ODcsIAotICAgIDg4Njk2LCA4ODcwNSwgODg3MTQsIDg4NzIzLCA4ODczMywgODg3NDMsIDg4NzUzLCA4ODc2MywgODg3NzIsIDg4NzgxLCAKLSAgICA4ODc5MCwgODg3OTksIDg4ODA0LCA4ODgwOSwgODg4MTUsIDg4ODIxLCA4ODgyNywgODg4MzMsIDg4ODQxLCA4ODg0OSwgCi0gICAgODg4NTUsIDg4ODYxLCA4ODg2NywgODg4NzMsIDg4ODc5LCA4ODg4NSwgODg4OTEsIDg4ODk3LCA4ODkwMiwgODg5MDcsIAotICAgIDg4OTEyLCA4ODkxNywgODg5MjIsIDg4OTI3LCA4ODkzMiwgODg5MzcsIDg4OTQzLCA4ODk0OSwgODg5NTUsIDg4OTYxLCAKLSAgICA4ODk2NywgODg5NzMsIDg4OTc5LCA4ODk4NSwgODg5OTEsIDg4OTk3LCA4OTAwMywgODkwMDksIDg5MDE1LCA4OTAyMSwgCi0gICAgODkwMjcsIDg5MDMzLCA4OTAzOSwgODkwNDUsIDg5MDUxLCA4OTA1NywgODkwNjMsIDg5MDY5LCA4OTA3NSwgODkwODEsIAotICAgIDg5MDg3LCA4OTA5MywgODkwOTksIDg5MTA1LCA4OTExMSwgODkxMTcsIDg5MTIzLCA4OTEyOSwgODkxMzUsIDg5MTQxLCAKLSAgICA4OTE0NywgODkxNTMsIDg5MTU5LCA4OTE2NSwgODkxNzEsIDg5MTc3LCA4OTE4MywgODkxODksIDg5MTk1LCA4OTIwMSwgCi0gICAgODkyMDcsIDg5MjEzLCA4OTIxOSwgODkyMjUsIDg5MjMxLCA4OTIzNywgODkyNDMsIDg5MjQ5LCA4OTI1NSwgODkyNjEsIAotICAgIDg5MjY3LCA4OTI3MywgODkyNzksIDg5Mjg1LCA4OTI5MSwgODkyOTcsIDg5MzAyLCA4OTMwNywgODkzMTIsIDg5MzE3LCAKLSAgICA4OTMyMywgODkzMjksIDg5MzM1LCA4OTM0MSwgODkzNDcsIDg5MzUzLCA4OTM1OSwgODkzNjUsIDg5MzcxLCA4OTM3NywgCi0gICAgODkzODQsIDg5MzkxLCA4OTM5NiwgODk0MDEsIDg5NDA2LCA4OTQxMSwgODk0MjMsIDg5NDM1LCA4OTQ0NywgODk0NTksIAotICAgIDg5NDcyLCA4OTQ4NSwgODk0OTMsIDAsIDAsIDg5NTAxLCAwLCA4OTUwOSwgODk1MTMsIDg5NTE3LCA4OTUyMCwgODk1MjQsIAotICAgIDg5NTI4LCA4OTUzMSwgODk1MzQsIDg5NTM4LCA4OTU0MiwgODk1NDUsIDg5NTQ4LCA4OTU1MSwgODk1NTQsIDg5NTU5LCAKLSAgICA4OTU2MiwgODk1NjYsIDg5NTY5LCA4OTU3MiwgODk1NzUsIDg5NTc4LCA4OTU4MSwgODk1ODQsIDg5NTg4LCA4OTU5MSwgCi0gICAgODk1OTUsIDg5NTk4LCA4OTYwMSwgODk2MDUsIDg5NjA5LCA4OTYxMywgODk2MTcsIDg5NjIyLCA4OTYyNywgODk2MzMsIAotICAgIDg5NjM5LCA4OTY0NSwgODk2NTAsIDg5NjU2LCA4OTY2MiwgODk2NjgsIDg5NjczLCA4OTY3OSwgODk2ODUsIDg5NjkwLCAKLSAgICA4OTY5NiwgODk3MDIsIDg5NzA3LCA4OTcxMywgODk3MTksIDg5NzI0LCA4OTcyOSwgODk3MzUsIDg5NzQwLCA4OTc0NiwgCi0gICAgODk3NTIsIDg5NzU4LCA4OTc2NCwgODk3NzAsIDg5Nzc0LCA4OTc3OSwgODk3ODMsIDg5Nzg4LCA4OTc5MiwgODk3OTcsIAotICAgIDg5ODAyLCA4OTgwOCwgODk4MTQsIDg5ODIwLCA4OTgyNSwgODk4MzEsIDg5ODM3LCA4OTg0MywgODk4NDgsIDg5ODU0LCAKLSAgICA4OTg2MCwgODk4NjUsIDg5ODcxLCA4OTg3NywgODk4ODIsIDg5ODg4LCA4OTg5NCwgODk4OTksIDg5OTA0LCA4OTkxMCwgCi0gICAgODk5MTUsIDg5OTIxLCA4OTkyNywgODk5MzMsIDg5OTM5LCA4OTk0NSwgODk5NTAsIDg5OTU0LCA4OTk1OSwgODk5NjIsIAotICAgIDg5OTY3LCA4OTk3MiwgODk5NzgsIDg5OTgzLCA4OTk4OCwgODk5OTIsIDg5OTk3LCA5MDAwMiwgOTAwMDcsIDkwMDEyLCAKLSAgICA5MDAxNywgOTAwMjIsIDkwMDI3LCA5MDAzMiwgOTAwMzgsIDkwMDQ0LCA5MDA1MCwgOTAwNTgsIDkwMDYyLCA5MDA2NiwgCi0gICAgOTAwNzAsIDkwMDc0LCA5MDA3OCwgOTAwODIsIDkwMDg3LCA5MDA5MiwgOTAwOTcsIDkwMTAyLCA5MDEwNywgOTAxMTIsIAotICAgIDkwMTE3LCA5MDEyMiwgOTAxMjcsIDkwMTMyLCA5MDEzNywgOTAxNDIsIDkwMTQ3LCA5MDE1MSwgOTAxNTYsIDkwMTYxLCAKLSAgICA5MDE2NiwgOTAxNzEsIDkwMTc2LCA5MDE4MCwgOTAxODUsIDkwMTkwLCA5MDE5NSwgOTAyMDAsIDkwMjA0LCA5MDIwOSwgCi0gICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMjgsIDkwMjMzLCA5MDIzOCwgOTAyNDMsIDkwMjQ4LCA5MDI1MywgOTAyNTgsIAotICAgIDkwMjYzLCA5MDI2OCwgOTAyNzMsIDkwMjgwLCA5MDI4NywgOTAyOTEsIDkwMjk2LCA5MDMwMSwgOTAzMDYsIDkwMzExLCAKLSAgICA5MDMxNiwgOTAzMjEsIDkwMzI2LCA5MDMzMSwgOTAzMzYsIDkwMzQxLCA5MDM0NiwgOTAzNTEsIDkwMzU2LCA5MDM2MSwgCi0gICAgOTAzNjYsIDkwMzcxLCA5MDM3NiwgOTAzODEsIDkwMzg2LCA5MDM5MSwgOTAzOTYsIDkwNDAxLCA5MDQwNiwgOTA0MTEsIAotICAgIDkwNDE2LCA5MDQyMSwgOTA0MjYsIDkwNDMxLCA5MDQzNiwgMCwgMCwgMCwgOTA0NDEsIDkwNDQ1LCA5MDQ1MCwgOTA0NTQsIAotICAgIDkwNDU5LCA5MDQ2NCwgMCwgMCwgOTA0NjgsIDkwNDczLCA5MDQ3OCwgOTA0ODIsIDkwNDg3LCA5MDQ5MiwgMCwgMCwgCi0gICAgOTA0OTcsIDkwNTAyLCA5MDUwNiwgOTA1MTEsIDkwNTE2LCA5MDUyMSwgMCwgMCwgOTA1MjYsIDkwNTMxLCA5MDUzNiwgMCwgCi0gICAgMCwgMCwgOTA1NDAsIDkwNTQ0LCA5MDU0OCwgOTA1NTIsIDkwNTU1LCA5MDU1OSwgOTA1NjMsIDAsIDkwNTY3LCA5MDU3MywgCi0gICAgOTA1NzYsIDkwNTc5LCA5MDU4MiwgOTA1ODUsIDkwNTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDU5MywgCi0gICAgOTA1OTksIDkwNjA1LCA5MDYxMSwgOTA2MTcsIDAsIDAsIDkwNjIxLCA5MDYyNywgOTA2MzMsIDkwNjM5LCA5MDY0NSwgCi0gICAgOTA2NTEsIDkwNjU4LCA5MDY2NSwgOTA2NzIsIDkwNjc5LCA5MDY4NiwgOTA2OTMsIDAsIDkwNzAwLCA5MDcwNywgOTA3MTQsIAotICAgIDkwNzIwLCA5MDcyNywgOTA3MzQsIDkwNzQxLCA5MDc0OCwgOTA3NTQsIDkwNzYxLCA5MDc2OCwgOTA3NzUsIDkwNzgyLCAKLSAgICA5MDc4OSwgOTA3OTYsIDkwODAzLCA5MDgxMCwgOTA4MTcsIDkwODIzLCA5MDgzMCwgOTA4MzcsIDkwODQ0LCA5MDg1MSwgCi0gICAgOTA4NTgsIDkwODY1LCA5MDg3MiwgMCwgOTA4NzksIDkwODg2LCA5MDg5MywgOTA5MDAsIDkwOTA3LCA5MDkxNCwgOTA5MjEsIAotICAgIDkwOTI4LCA5MDkzNSwgOTA5NDIsIDkwOTQ5LCA5MDk1NiwgOTA5NjMsIDkwOTcwLCA5MDk3NiwgOTA5ODMsIDkwOTkwLCAKLSAgICA5MDk5NywgOTEwMDQsIDAsIDkxMDExLCA5MTAxOCwgMCwgOTEwMjUsIDkxMDMyLCA5MTAzOSwgOTEwNDYsIDkxMDUzLCAKLSAgICA5MTA2MCwgOTEwNjcsIDkxMDc0LCA5MTA4MSwgOTEwODgsIDkxMDk1LCA5MTEwMiwgOTExMDksIDkxMTE2LCA5MTEyMywgMCwgCi0gICAgMCwgOTExMjksIDkxMTM0LCA5MTEzOSwgOTExNDQsIDkxMTQ5LCA5MTE1NCwgOTExNTksIDkxMTY0LCA5MTE2OSwgOTExNzQsIAotICAgIDkxMTc5LCA5MTE4NCwgOTExODksIDkxMTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTE5OSwgOTEyMDYsIAotICAgIDkxMjEzLCA5MTIyMCwgOTEyMjcsIDkxMjM0LCA5MTI0MSwgOTEyNDgsIDkxMjU1LCA5MTI2MiwgOTEyNjksIDkxMjc2LCAKLSAgICA5MTI4MywgOTEyOTAsIDkxMjk3LCA5MTMwNCwgOTEzMTEsIDkxMzE4LCA5MTMyNSwgOTEzMzIsIDkxMzQwLCA5MTM0OCwgCi0gICAgOTEzNTUsIDkxMzYyLCA5MTM2NywgOTEzNzUsIDkxMzgzLCA5MTM5MCwgOTEzOTcsIDkxNDAyLCA5MTQwOSwgOTE0MTQsIAotICAgIDkxNDE5LCA5MTQyNiwgOTE0MzEsIDkxNDM2LCA5MTQ0MSwgOTE0NDksIDkxNDU0LCA5MTQ1OSwgOTE0NjYsIDkxNDcxLCAKLSAgICA5MTQ3NiwgOTE0ODMsIDkxNDkwLCA5MTQ5NSwgOTE1MDAsIDkxNTA1LCA5MTUxMCwgOTE1MTUsIDkxNTIwLCA5MTUyNSwgCi0gICAgOTE1MzAsIDkxNTM1LCA5MTU0MiwgOTE1NDcsIDkxNTU0LCA5MTU1OSwgOTE1NjQsIDkxNTY5LCA5MTU3NCwgOTE1NzksIAotICAgIDkxNTg0LCA5MTU4OSwgOTE1OTQsIDkxNTk5LCA5MTYwNCwgOTE2MDksIDkxNjE2LCA5MTYyMywgOTE2MzAsIDkxNjM3LCAKLSAgICA5MTY0MywgOTE2NDgsIDkxNjU1LCA5MTY2MCwgOTE2NjUsIDkxNjc0LCA5MTY4MSwgOTE2OTAsIDkxNjk3LCA5MTcwMiwgCi0gICAgOTE3MDcsIDkxNzE1LCA5MTcyMCwgOTE3MjUsIDkxNzMwLCA5MTczNSwgOTE3NDAsIDkxNzQ3LCA5MTc1MiwgOTE3NTcsIAotICAgIDkxNzYyLCA5MTc2NywgOTE3NzIsIDkxNzc5LCA5MTc4NiwgOTE3OTMsIDkxODAwLCA5MTgwNywgOTE4MTQsIDkxODIxLCAKLSAgICA5MTgyOCwgOTE4MzUsIDkxODQyLCA5MTg0OSwgOTE4NTYsIDkxODYzLCA5MTg3MCwgOTE4NzcsIDkxODg0LCA5MTg5MSwgCi0gICAgOTE4OTgsIDkxOTA1LCA5MTkxMiwgOTE5MTksIDkxOTI2LCA5MTkzMywgOTE5NDAsIDkxOTQ3LCA5MTk1NCwgOTE5NjEsIAotICAgIDkxOTY4LCAwLCAwLCAwLCAwLCAwLCA5MTk3NSwgOTE5ODMsIDkxOTkxLCAwLCAwLCAwLCAwLCA5MTk5NiwgOTIwMDAsIAotICAgIDkyMDA0LCA5MjAwOCwgOTIwMTIsIDkyMDE2LCA5MjAyMCwgOTIwMjUsIDkyMDI5LCA5MjAzNCwgOTIwMzksIDkyMDQ0LCAKLSAgICA5MjA0OSwgOTIwNTQsIDkyMDU5LCA5MjA2NCwgOTIwNjksIDkyMDc0LCA5MjA3OSwgOTIwODUsIDkyMDkxLCA5MjA5NywgCi0gICAgOTIxMDQsIDkyMTExLCA5MjExOCwgOTIxMjUsIDkyMTMyLCA5MjEzOSwgOTIxNDUsIDkyMTUxLCA5MjE1NywgOTIxNjQsIAotICAgIDkyMTcxLCA5MjE3OCwgOTIxODUsIDkyMTkyLCA5MjE5OSwgOTIyMDYsIDkyMjEzLCA5MjIyMCwgOTIyMjcsIDkyMjM0LCAKLSAgICA5MjI0MSwgOTIyNDgsIDkyMjU1LCAwLCAwLCAwLCA5MjI2MiwgOTIyNzAsIDkyMjc4LCA5MjI4NiwgOTIyOTQsIDkyMzAyLCAKLSAgICA5MjMxMiwgOTIzMjIsIDkyMzMwLCA5MjMzOCwgOTIzNDYsIDkyMzU0LCA5MjM2MiwgOTIzNjgsIDkyMzc1LCA5MjM4NCwgCi0gICAgOTIzOTMsIDkyNDAyLCA5MjQxMSwgOTI0MjAsIDkyNDI5LCA5MjQzOSwgOTI0NTAsIDkyNDYwLCA5MjQ3MSwgOTI0ODAsIAotICAgIDkyNDg5LCA5MjQ5OCwgOTI1MDgsIDkyNTE5LCA5MjUyOSwgOTI1NDAsIDkyNTUxLCA5MjU2MCwgOTI1NjgsIDkyNTc0LCAKLSAgICA5MjU4MCwgOTI1ODYsIDkyNTkyLCA5MjYwMCwgOTI2MDgsIDkyNjE0LCA5MjYyMSwgOTI2MzEsIDkyNjM4LCA5MjY0NSwgCi0gICAgOTI2NTIsIDkyNjU5LCA5MjY2NiwgOTI2NzYsIDkyNjgzLCA5MjY5MCwgOTI2OTgsIDkyNzA2LCA5MjcxNSwgOTI3MjQsIAotICAgIDkyNzMzLCA5Mjc0MiwgOTI3NTEsIDkyNzU5LCA5Mjc2OCwgOTI3NzcsIDkyNzg2LCA5Mjc5MCwgOTI3OTcsIDkyODAyLCAKLSAgICA5MjgwNywgOTI4MTEsIDkyODE1LCA5MjgxOSwgOTI4MjMsIDkyODI4LCA5MjgzMywgOTI4MzksIDkyODQ1LCA5Mjg0OSwgCi0gICAgOTI4NTUsIDkyODU5LCA5Mjg2MywgOTI4NjcsIDkyODcxLCA5Mjg3NSwgOTI4NzksIDkyODg1LCA5Mjg4OSwgOTI4OTQsIDAsIAotICAgIDAsIDAsIDkyODk4LCA5MjkwMywgOTI5MDgsIDkyOTEzLCA5MjkxOCwgOTI5MjUsIDkyOTMwLCA5MjkzNSwgOTI5NDAsIAotICAgIDkyOTQ1LCA5Mjk1MCwgOTI5NTUsIDAsIDAsIDAsIDAsIDkyOTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODcwMywgODg3MTgsIDg4NzMzLCA4ODczOSwgODg3NDUsIDg4NzUxLCAKKyAgICA4ODc1NywgODg3NjMsIDg4NzY5LCA4ODc3NSwgODg3ODEsIDg4Nzg5LCA4ODc5MywgODg3OTYsIDAsIDAsIDg4ODA0LCAKKyAgICA4ODgwNywgODg4MTAsIDg4ODEzLCA4ODgxNiwgODg4MTksIDg4ODIyLCA4ODgyNSwgODg4MjgsIDg4ODMxLCA4ODgzNCwgCisgICAgODg4MzcsIDg4ODQwLCA4ODg0MywgODg4NDYsIDg4ODQ5LCA4ODg1MiwgODg4NjAsIDg4ODY5LCA4ODg4MCwgODg4ODgsIAorICAgIDg4ODk2LCA4ODkwNSwgODg5MTQsIDg4OTI1LCA4ODkzNywgMCwgMCwgMCwgMCwgMCwgMCwgODg5NDcsIDg4OTUyLCA4ODk1NywgCisgICAgODg5NjQsIDg4OTcxLCA4ODk3NywgODg5ODMsIDg4OTg4LCA4ODk5MywgODg5OTgsIDg5MDA0LCA4OTAxMCwgODkwMTYsIAorICAgIDg5MDIyLCA4OTAyOCwgODkwMzUsIDg5MDQyLCA4OTA1MiwgODkwNjIsIDg5MDcyLCA4OTA4MSwgODkwOTIsIDg5MTAxLCAKKyAgICA4OTExMCwgODkxMjAsIDg5MTMwLCA4OTE0MiwgODkxNTQsIDg5MTY1LCA4OTE3NiwgODkxODcsIDg5MTk4LCA4OTIwOCwgCisgICAgODkyMTgsIDg5MjI4LCA4OTIzOCwgODkyNDksIDg5MjYwLCA4OTI2NCwgODkyNjksIDg5Mjc4LCA4OTI4NywgODkyOTEsIAorICAgIDg5Mjk1LCA4OTI5OSwgODkzMDQsIDg5MzA5LCA4OTMxNCwgODkzMTksIDg5MzIyLCA4OTMyNiwgMCwgODkzMzEsIDg5MzM0LCAKKyAgICA4OTMzNywgODkzNDEsIDg5MzQ1LCA4OTM1MCwgODkzNTQsIDg5MzU4LCA4OTM2MywgODkzNjgsIDg5Mzc1LCA4OTM4MiwgCisgICAgODkzODUsIDg5Mzg4LCA4OTM5MSwgODkzOTQsIDg5Mzk3LCA4OTQwMSwgODk0MDUsIDAsIDg5NDA5LCA4OTQxNCwgODk0MTgsIAorICAgIDg5NDIyLCAwLCAwLCAwLCAwLCA4OTQyNywgODk0MzIsIDg5NDM5LCA4OTQ0NCwgODk0NDksIDAsIDg5NDU0LCA4OTQ1OSwgCisgICAgODk0NjQsIDg5NDY5LCA4OTQ3NCwgODk0NzksIDg5NDg0LCA4OTQ4OSwgODk0OTQsIDg5NDk5LCA4OTUwNCwgODk1MTAsIAorICAgIDg5NTE5LCA4OTUyOCwgODk1MzcsIDg5NTQ2LCA4OTU1NiwgODk1NjYsIDg5NTc2LCA4OTU4NiwgODk1OTUsIDg5NjA0LCAKKyAgICA4OTYxMywgODk2MjIsIDg5NjI3LCA4OTYzMiwgODk2MzgsIDg5NjQ0LCA4OTY1MCwgODk2NTYsIDg5NjY0LCA4OTY3MiwgCisgICAgODk2NzgsIDg5Njg0LCA4OTY5MCwgODk2OTYsIDg5NzAyLCA4OTcwOCwgODk3MTQsIDg5NzIwLCA4OTcyNSwgODk3MzAsIAorICAgIDg5NzM1LCA4OTc0MCwgODk3NDUsIDg5NzUwLCA4OTc1NSwgODk3NjAsIDg5NzY2LCA4OTc3MiwgODk3NzgsIDg5Nzg0LCAKKyAgICA4OTc5MCwgODk3OTYsIDg5ODAyLCA4OTgwOCwgODk4MTQsIDg5ODIwLCA4OTgyNiwgODk4MzIsIDg5ODM4LCA4OTg0NCwgCisgICAgODk4NTAsIDg5ODU2LCA4OTg2MiwgODk4NjgsIDg5ODc0LCA4OTg4MCwgODk4ODYsIDg5ODkyLCA4OTg5OCwgODk5MDQsIAorICAgIDg5OTEwLCA4OTkxNiwgODk5MjIsIDg5OTI4LCA4OTkzNCwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIDg5OTY0LCAKKyAgICA4OTk3MCwgODk5NzYsIDg5OTgyLCA4OTk4OCwgODk5OTQsIDkwMDAwLCA5MDAwNiwgOTAwMTIsIDkwMDE4LCA5MDAyNCwgCisgICAgOTAwMzAsIDkwMDM2LCA5MDA0MiwgOTAwNDgsIDkwMDU0LCA5MDA2MCwgOTAwNjYsIDkwMDcyLCA5MDA3OCwgOTAwODQsIAorICAgIDkwMDkwLCA5MDA5NiwgOTAxMDIsIDkwMTA4LCA5MDExNCwgOTAxMjAsIDkwMTI1LCA5MDEzMCwgOTAxMzUsIDkwMTQwLCAKKyAgICA5MDE0NiwgOTAxNTIsIDkwMTU4LCA5MDE2NCwgOTAxNzAsIDkwMTc2LCA5MDE4MiwgOTAxODgsIDkwMTk0LCA5MDIwMCwgCisgICAgOTAyMDcsIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjI5LCA5MDIzNCwgOTAyNDYsIDkwMjU4LCA5MDI3MCwgOTAyODIsIAorICAgIDkwMjk1LCA5MDMwOCwgOTAzMTYsIDAsIDAsIDkwMzI0LCAwLCA5MDMzMiwgOTAzMzYsIDkwMzQwLCA5MDM0MywgOTAzNDcsIAorICAgIDkwMzUxLCA5MDM1NCwgOTAzNTcsIDkwMzYxLCA5MDM2NSwgOTAzNjgsIDkwMzcxLCA5MDM3NCwgOTAzNzcsIDkwMzgyLCAKKyAgICA5MDM4NSwgOTAzODksIDkwMzkyLCA5MDM5NSwgOTAzOTgsIDkwNDAxLCA5MDQwNCwgOTA0MDcsIDkwNDExLCA5MDQxNCwgCisgICAgOTA0MTgsIDkwNDIxLCA5MDQyNCwgOTA0MjgsIDkwNDMyLCA5MDQzNiwgOTA0NDAsIDkwNDQ1LCA5MDQ1MCwgOTA0NTYsIAorICAgIDkwNDYyLCA5MDQ2OCwgOTA0NzMsIDkwNDc5LCA5MDQ4NSwgOTA0OTEsIDkwNDk2LCA5MDUwMiwgOTA1MDgsIDkwNTEzLCAKKyAgICA5MDUxOSwgOTA1MjUsIDkwNTMwLCA5MDUzNiwgOTA1NDIsIDkwNTQ3LCA5MDU1MywgOTA1NTksIDkwNTY0LCA5MDU3MCwgCisgICAgOTA1NzYsIDkwNTgyLCA5MDU4OCwgOTA1OTQsIDkwNTk4LCA5MDYwMywgOTA2MDcsIDkwNjEyLCA5MDYxNiwgOTA2MjEsIAorICAgIDkwNjI2LCA5MDYzMiwgOTA2MzgsIDkwNjQ0LCA5MDY0OSwgOTA2NTUsIDkwNjYxLCA5MDY2NywgOTA2NzIsIDkwNjc4LCAKKyAgICA5MDY4NCwgOTA2ODksIDkwNjk1LCA5MDcwMSwgOTA3MDYsIDkwNzEyLCA5MDcxOCwgOTA3MjMsIDkwNzI5LCA5MDczNSwgCisgICAgOTA3NDAsIDkwNzQ2LCA5MDc1MiwgOTA3NTgsIDkwNzY0LCA5MDc3MCwgOTA3NzUsIDkwNzc5LCA5MDc4NCwgOTA3ODcsIAorICAgIDkwNzkyLCA5MDc5NywgOTA4MDMsIDkwODA4LCA5MDgxMywgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCAKKyAgICA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjMsIDkwODY5LCA5MDg3NSwgOTA4ODMsIDkwODg3LCA5MDg5MSwgCisgICAgOTA4OTUsIDkwODk5LCA5MDkwMywgOTA5MDcsIDkwOTEyLCA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzcsIAorICAgIDkwOTQyLCA5MDk0NywgOTA5NTIsIDkwOTU3LCA5MDk2MiwgOTA5NjcsIDkwOTcyLCA5MDk3NiwgOTA5ODAsIDkwOTg1LCAKKyAgICA5MDk5MCwgOTA5OTUsIDkxMDAwLCA5MTAwNCwgOTEwMDksIDkxMDE0LCA5MTAxOSwgOTEwMjQsIDkxMDI4LCA5MTAzMywgCisgICAgOTEwMzgsIDkxMDQzLCA5MTA0OCwgOTEwNTIsIDkxMDU3LCA5MTA2MiwgOTEwNjcsIDkxMDcyLCA5MTA3NywgOTEwODIsIAorICAgIDkxMDg3LCA5MTA5MiwgOTEwOTcsIDkxMTA0LCA5MTExMSwgOTExMTUsIDkxMTIwLCA5MTEyNSwgOTExMzAsIDkxMTM1LCAKKyAgICA5MTE0MCwgOTExNDUsIDkxMTUwLCA5MTE1NSwgOTExNjAsIDkxMTY1LCA5MTE3MCwgOTExNzUsIDkxMTgwLCA5MTE4NSwgCisgICAgOTExOTAsIDkxMTk1LCA5MTIwMCwgOTEyMDUsIDkxMjEwLCA5MTIxNSwgOTEyMjAsIDkxMjI1LCA5MTIzMCwgOTEyMzUsIAorICAgIDkxMjQwLCA5MTI0NSwgOTEyNTAsIDkxMjU1LCA5MTI2MCwgMCwgMCwgMCwgOTEyNjUsIDkxMjY5LCA5MTI3NCwgOTEyNzgsIAorICAgIDkxMjgzLCA5MTI4OCwgMCwgMCwgOTEyOTIsIDkxMjk3LCA5MTMwMiwgOTEzMDYsIDkxMzExLCA5MTMxNiwgMCwgMCwgCisgICAgOTEzMjEsIDkxMzI2LCA5MTMzMCwgOTEzMzUsIDkxMzQwLCA5MTM0NSwgMCwgMCwgOTEzNTAsIDkxMzU1LCA5MTM2MCwgMCwgCisgICAgMCwgMCwgOTEzNjQsIDkxMzY4LCA5MTM3MiwgOTEzNzYsIDkxMzc5LCA5MTM4MywgOTEzODcsIDAsIDkxMzkxLCA5MTM5NywgCisgICAgOTE0MDAsIDkxNDAzLCA5MTQwNiwgOTE0MDksIDkxNDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTQxNywgCisgICAgOTE0MjMsIDkxNDI5LCA5MTQzNSwgOTE0NDEsIDAsIDAsIDkxNDQ1LCA5MTQ1MSwgOTE0NTcsIDkxNDYzLCA5MTQ2OSwgCisgICAgOTE0NzUsIDkxNDgyLCA5MTQ4OSwgOTE0OTYsIDkxNTAzLCA5MTUxMCwgOTE1MTcsIDAsIDkxNTI0LCA5MTUzMSwgOTE1MzgsIAorICAgIDkxNTQ0LCA5MTU1MSwgOTE1NTgsIDkxNTY1LCA5MTU3MiwgOTE1NzgsIDkxNTg1LCA5MTU5MiwgOTE1OTksIDkxNjA2LCAKKyAgICA5MTYxMiwgOTE2MTksIDkxNjI2LCA5MTYzMywgOTE2NDAsIDkxNjQ2LCA5MTY1MywgOTE2NjAsIDkxNjY3LCA5MTY3NCwgCisgICAgOTE2ODEsIDkxNjg4LCA5MTY5NSwgMCwgOTE3MDIsIDkxNzA5LCA5MTcxNiwgOTE3MjMsIDkxNzMwLCA5MTczNywgOTE3NDQsIAorICAgIDkxNzUxLCA5MTc1OCwgOTE3NjUsIDkxNzcyLCA5MTc3OSwgOTE3ODYsIDkxNzkzLCA5MTc5OSwgOTE4MDYsIDkxODEzLCAKKyAgICA5MTgyMCwgOTE4MjcsIDAsIDkxODM0LCA5MTg0MSwgMCwgOTE4NDgsIDkxODU1LCA5MTg2MiwgOTE4NjksIDkxODc2LCAKKyAgICA5MTg4MywgOTE4OTAsIDkxODk3LCA5MTkwNCwgOTE5MTEsIDkxOTE4LCA5MTkyNSwgOTE5MzIsIDkxOTM5LCA5MTk0NiwgMCwgCisgICAgMCwgOTE5NTIsIDkxOTU3LCA5MTk2MiwgOTE5NjcsIDkxOTcyLCA5MTk3NywgOTE5ODIsIDkxOTg3LCA5MTk5MiwgOTE5OTcsIAorICAgIDkyMDAyLCA5MjAwNywgOTIwMTIsIDkyMDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjAyMiwgOTIwMjksIAorICAgIDkyMDM2LCA5MjA0MywgOTIwNTAsIDkyMDU3LCA5MjA2NCwgOTIwNzEsIDkyMDc4LCA5MjA4NSwgOTIwOTIsIDkyMDk5LCAKKyAgICA5MjEwNiwgOTIxMTMsIDkyMTIwLCA5MjEyNywgOTIxMzQsIDkyMTQxLCA5MjE0OCwgOTIxNTUsIDkyMTYzLCA5MjE3MSwgCisgICAgOTIxNzgsIDkyMTg1LCA5MjE5MCwgOTIxOTgsIDkyMjA2LCA5MjIxMywgOTIyMjAsIDkyMjI1LCA5MjIzMiwgOTIyMzcsIAorICAgIDkyMjQyLCA5MjI0OSwgOTIyNTQsIDkyMjU5LCA5MjI2NCwgOTIyNzIsIDkyMjc3LCA5MjI4MiwgOTIyODksIDkyMjk0LCAKKyAgICA5MjI5OSwgOTIzMDYsIDkyMzEzLCA5MjMxOCwgOTIzMjMsIDkyMzI4LCA5MjMzMywgOTIzMzgsIDkyMzQzLCA5MjM0OCwgCisgICAgOTIzNTMsIDkyMzU4LCA5MjM2NSwgOTIzNzAsIDkyMzc3LCA5MjM4MiwgOTIzODcsIDkyMzkyLCA5MjM5NywgOTI0MDIsIAorICAgIDkyNDA3LCA5MjQxMiwgOTI0MTcsIDkyNDIyLCA5MjQyNywgOTI0MzIsIDkyNDM5LCA5MjQ0NiwgOTI0NTMsIDkyNDYwLCAKKyAgICA5MjQ2NiwgOTI0NzEsIDkyNDc4LCA5MjQ4MywgOTI0ODgsIDkyNDk3LCA5MjUwNCwgOTI1MTMsIDkyNTIwLCA5MjUyNSwgCisgICAgOTI1MzAsIDkyNTM4LCA5MjU0MywgOTI1NDgsIDkyNTUzLCA5MjU1OCwgOTI1NjMsIDkyNTcwLCA5MjU3NSwgOTI1ODAsIAorICAgIDkyNTg1LCA5MjU5MCwgOTI1OTUsIDkyNjAyLCA5MjYwOSwgOTI2MTYsIDkyNjIzLCA5MjYzMCwgOTI2MzcsIDkyNjQ0LCAKKyAgICA5MjY1MSwgOTI2NTgsIDkyNjY1LCA5MjY3MiwgOTI2NzksIDkyNjg2LCA5MjY5MywgOTI3MDAsIDkyNzA3LCA5MjcxNCwgCisgICAgOTI3MjEsIDkyNzI4LCA5MjczNSwgOTI3NDIsIDkyNzQ5LCA5Mjc1NiwgOTI3NjMsIDkyNzcwLCA5Mjc3NywgOTI3ODQsIAorICAgIDkyNzkxLCAwLCAwLCAwLCAwLCAwLCA5Mjc5OCwgOTI4MDYsIDkyODE0LCAwLCAwLCAwLCAwLCA5MjgxOSwgOTI4MjMsIAorICAgIDkyODI3LCA5MjgzMSwgOTI4MzUsIDkyODM5LCA5Mjg0MywgOTI4NDgsIDkyODUyLCA5Mjg1NywgOTI4NjIsIDkyODY3LCAKKyAgICA5Mjg3MiwgOTI4NzcsIDkyODgyLCA5Mjg4NywgOTI4OTIsIDkyODk3LCA5MjkwMiwgOTI5MDgsIDkyOTE0LCA5MjkyMCwgCisgICAgOTI5MjcsIDkyOTM0LCA5Mjk0MSwgOTI5NDgsIDkyOTU1LCA5Mjk2MiwgOTI5NjgsIDkyOTc0LCA5Mjk4MCwgOTI5ODcsIAorICAgIDkyOTk0LCA5MzAwMSwgOTMwMDgsIDkzMDE1LCA5MzAyMiwgOTMwMjksIDkzMDM2LCA5MzA0MywgOTMwNTAsIDkzMDU3LCAKKyAgICA5MzA2NCwgOTMwNzEsIDkzMDc4LCAwLCAwLCAwLCA5MzA4NSwgOTMwOTMsIDkzMTAxLCA5MzEwOSwgOTMxMTcsIDkzMTI1LCAKKyAgICA5MzEzNSwgOTMxNDUsIDkzMTUzLCA5MzE2MSwgOTMxNjksIDkzMTc3LCA5MzE4NSwgOTMxOTEsIDkzMTk4LCA5MzIwNywgCisgICAgOTMyMTYsIDkzMjI1LCA5MzIzNCwgOTMyNDMsIDkzMjUyLCA5MzI2MiwgOTMyNzMsIDkzMjgzLCA5MzI5NCwgOTMzMDMsIAorICAgIDkzMzEyLCA5MzMyMSwgOTMzMzEsIDkzMzQyLCA5MzM1MiwgOTMzNjMsIDkzMzc0LCA5MzM4MywgOTMzOTEsIDkzMzk3LCAKKyAgICA5MzQwMywgOTM0MDksIDkzNDE1LCA5MzQyMywgOTM0MzEsIDkzNDM3LCA5MzQ0NCwgOTM0NTQsIDkzNDYxLCA5MzQ2OCwgCisgICAgOTM0NzUsIDkzNDgyLCA5MzQ4OSwgOTM0OTksIDkzNTA2LCA5MzUxMywgOTM1MjEsIDkzNTI5LCA5MzUzOCwgOTM1NDcsIAorICAgIDkzNTU2LCA5MzU2NSwgOTM1NzQsIDkzNTgyLCA5MzU5MSwgOTM2MDAsIDkzNjA5LCA5MzYxMywgOTM2MjAsIDkzNjI1LCAKKyAgICA5MzYzMCwgOTM2MzQsIDkzNjM4LCA5MzY0MiwgOTM2NDYsIDkzNjUxLCA5MzY1NiwgOTM2NjIsIDkzNjY4LCA5MzY3MiwgCisgICAgOTM2NzgsIDkzNjgyLCA5MzY4NiwgOTM2OTAsIDkzNjk0LCA5MzY5OCwgOTM3MDIsIDkzNzA4LCA5MzcxMiwgOTM3MTcsIAorICAgIDkzNzIxLCA5MzcyNSwgMCwgOTM3MjgsIDkzNzMzLCA5MzczOCwgOTM3NDMsIDkzNzQ4LCA5Mzc1NSwgOTM3NjAsIDkzNzY1LCAKKyAgICA5Mzc3MCwgOTM3NzUsIDkzNzgwLCA5Mzc4NSwgMCwgMCwgMCwgMCwgOTM3OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyOTY2LCA5Mjk3MywgOTI5ODIsIDkyOTkxLCA5Mjk5OCwgCi0gICAgOTMwMDUsIDkzMDEyLCA5MzAxOSwgOTMwMjYsIDkzMDMzLCA5MzAzOSwgOTMwNDYsIDkzMDUzLCA5MzA2MCwgOTMwNjcsIAotICAgIDkzMDc0LCA5MzA4MSwgOTMwODgsIDkzMDk1LCA5MzEwNCwgOTMxMTEsIDkzMTE4LCA5MzEyNSwgOTMxMzIsIDkzMTM5LCAKLSAgICA5MzE0NiwgOTMxNTMsIDkzMTYwLCA5MzE2OSwgOTMxNzYsIDkzMTgzLCA5MzE5MCwgOTMxOTcsIDkzMjA0LCA5MzIxMSwgCi0gICAgOTMyMjAsIDkzMjI3LCA5MzIzNCwgOTMyNDEsIDkzMjQ4LCA5MzI1NywgOTMyNjQsIDkzMjcxLCA5MzI3OCwgOTMyODYsIAotICAgIDkzMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5Mzc5NiwgOTM4MDMsIDkzODEyLCA5MzgyMSwgCisgICAgOTM4MjgsIDkzODM1LCA5Mzg0MiwgOTM4NDksIDkzODU2LCA5Mzg2MywgOTM4NjksIDkzODc2LCA5Mzg4MywgOTM4OTAsIAorICAgIDkzODk3LCA5MzkwNCwgOTM5MTEsIDkzOTE4LCA5MzkyNSwgOTM5MzQsIDkzOTQxLCA5Mzk0OCwgOTM5NTUsIDkzOTYyLCAKKyAgICA5Mzk2OSwgOTM5NzYsIDkzOTgzLCA5Mzk5MCwgOTM5OTksIDk0MDA2LCA5NDAxMywgOTQwMjAsIDk0MDI3LCA5NDAzNCwgCisgICAgOTQwNDEsIDk0MDUwLCA5NDA1NywgOTQwNjQsIDk0MDcxLCA5NDA3OCwgOTQwODcsIDk0MDk0LCA5NDEwMSwgOTQxMDgsIAorICAgIDk0MTE2LCA5NDEyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTMzMDQsIDkzMzA4LCA5MzMxMiwgOTMzMTcsIDkzMzIyLCAKLSAgICA5MzMyNywgOTMzMzIsIDkzMzM2LCA5MzM0MSwgOTMzNDYsIDkzMzUxLCA5MzM1NiwgOTMzNjEsIDkzMzY2LCA5MzM3MCwgCi0gICAgOTMzNzUsIDkzMzgwLCA5MzM4NSwgOTMzOTAsIDkzMzk0LCA5MzM5OSwgOTM0MDQsIDkzNDA4LCA5MzQxMiwgOTM0MTcsIAotICAgIDkzNDIyLCA5MzQyNywgOTM0MzIsIDkzNDM3LCAwLCAwLCAwLCA5MzQ0MiwgOTM0NDYsIDkzNDUxLCA5MzQ1NiwgOTM0NjAsIAotICAgIDkzNDY1LCA5MzQ2OSwgOTM0NzQsIDkzNDc5LCA5MzQ4NCwgOTM0ODksIDkzNDk0LCA5MzQ5OCwgOTM1MDMsIDkzNTA4LCAKLSAgICA5MzUxMywgOTM1MTgsIDkzNTIyLCA5MzUyNywgOTM1MzEsIDkzNTM2LCA5MzU0MSwgOTM1NDYsIDkzNTUxLCA5MzU1NiwgCi0gICAgOTM1NjEsIDkzNTY1LCA5MzU2OSwgOTM1NzQsIDkzNTc5LCA5MzU4NCwgOTM1ODksIDkzNTk0LCA5MzU5OSwgOTM2MDQsIAotICAgIDkzNjA5LCA5MzYxNCwgOTM2MTksIDkzNjI0LCA5MzYyOSwgOTM2MzQsIDkzNjM5LCA5MzY0NCwgOTM2NDksIDkzNjU0LCAKLSAgICA5MzY1OSwgOTM2NjQsIDkzNjY5LCA5MzY3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTM2NzksIDkzNjg1LCA5MzY5MCwgOTM2OTUsIDkzNzAwLCA5MzcwNSwgOTM3MTAsIDkzNzE1LCA5MzcyMSwgOTM3MjYsIAotICAgIDkzNzMyLCA5MzczOCwgOTM3NDQsIDkzNzUwLCA5Mzc1NiwgOTM3NjIsIDkzNzY4LCA5Mzc3NCwgOTM3ODAsIDkzNzg2LCAKLSAgICA5Mzc5MywgOTM4MDAsIDkzODA3LCA5MzgxNSwgOTM4MjMsIDkzODMxLCA5MzgzOSwgOTM4NDcsIDAsIDAsIDAsIDAsIAotICAgIDkzODU1LCA5Mzg1OSwgOTM4NjQsIDkzODY5LCA5Mzg3NCwgOTM4NzgsIDkzODgzLCA5Mzg4OCwgOTM4OTMsIDkzODk4LCAKLSAgICA5MzkwMiwgOTM5MDYsIDkzOTExLCA5MzkxNiwgOTM5MjEsIDkzOTI2LCA5MzkzMCwgOTM5MzUsIDkzOTQwLCA5Mzk0NSwgCi0gICAgOTM5NTAsIDkzOTU1LCA5Mzk2MCwgOTM5NjQsIDkzOTY5LCA5Mzk3NCwgOTM5NzksIDkzOTg0LCA5Mzk4OSwgOTM5OTQsIAotICAgIDkzOTk5LCA5NDAwNCwgOTQwMDksIDk0MDE0LCA5NDAxOSwgOTQwMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDk0MDMxLCA5NDAzNiwgOTQwNDEsIDk0MDQ2LCA5NDA1MSwgOTQwNTYsIDk0MDYxLCA5NDA2NiwgOTQwNzEsIAotICAgIDk0MDc2LCA5NDA4MSwgOTQwODYsIDk0MDkxLCA5NDA5NiwgOTQxMDEsIDk0MTA2LCA5NDExMSwgOTQxMTYsIDk0MTIxLCAKLSAgICA5NDEyNiwgOTQxMzEsIDk0MTM2LCA5NDE0MSwgOTQxNDYsIDk0MTUxLCA5NDE1NiwgOTQxNjEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk0MTY4LCA5NDE3NCwgOTQxODAsIDk0MTg2LCA5NDE5MiwgOTQxOTcsIDk0MjAzLCA5NDIwOSwgOTQyMTUsIDk0MjIxLCAKLSAgICA5NDIyNiwgOTQyMzIsIDk0MjM4LCA5NDI0NCwgOTQyNTAsIDk0MjU2LCA5NDI2MiwgOTQyNjgsIDk0Mjc0LCA5NDI4MCwgCi0gICAgOTQyODUsIDk0MjkxLCA5NDI5NywgOTQzMDMsIDk0MzA5LCA5NDMxNSwgOTQzMjAsIDk0MzI2LCA5NDMzMiwgOTQzMzcsIAotICAgIDk0MzQzLCA5NDM0OSwgOTQzNTUsIDk0MzYxLCA5NDM2NywgOTQzNzMsIDk0Mzc5LCA5NDM4NCwgOTQzOTAsIDk0Mzk3LCAKLSAgICA5NDQwNCwgOTQ0MTEsIDk0NDE4LCAwLCAwLCAwLCAwLCAwLCA5NDQyNSwgOTQ0MzAsIDk0NDM1LCA5NDQ0MCwgOTQ0NDUsIAotICAgIDk0NDUwLCA5NDQ1NSwgOTQ0NjAsIDk0NDY1LCA5NDQ3MCwgOTQ0NzUsIDk0NDgwLCA5NDQ4NSwgOTQ0OTAsIDk0NDk1LCAKLSAgICA5NDUwMCwgOTQ1MDUsIDk0NTEwLCA5NDUxNSwgOTQ1MjAsIDk0NTI1LCA5NDUzMCwgOTQ1MzUsIDk0NTQwLCA5NDU0NSwgCi0gICAgOTQ1NTAsIDk0NTU1LCA5NDU1OSwgOTQ1NjMsIDk0NTY3LCAwLCA5NDU3MiwgOTQ1NzgsIDk0NTgzLCA5NDU4OCwgOTQ1OTMsIAotICAgIDk0NTk4LCA5NDYwNCwgOTQ2MTAsIDk0NjE2LCA5NDYyMiwgOTQ2MjgsIDk0NjM0LCA5NDY0MCwgOTQ2NDYsIDk0NjUyLCAKLSAgICA5NDY1OCwgOTQ2NjQsIDk0NjcwLCA5NDY3NiwgOTQ2ODEsIDk0Njg3LCA5NDY5MywgOTQ2OTksIDk0NzA1LCA5NDcxMCwgCi0gICAgOTQ3MTYsIDk0NzIyLCA5NDcyNywgOTQ3MzMsIDk0NzM5LCA5NDc0NSwgOTQ3NTEsIDk0NzU3LCA5NDc2MywgOTQ3NjksIAotICAgIDk0Nzc1LCA5NDc4MSwgMCwgMCwgMCwgMCwgOTQ3ODYsIDk0NzkyLCA5NDc5OCwgOTQ4MDQsIDk0ODEwLCA5NDgxNiwgCi0gICAgOTQ4MjIsIDk0ODI4LCA5NDgzNCwgOTQ4NDEsIDk0ODQ2LCA5NDg1MSwgOTQ4NTcsIDk0ODYzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDEzNCwgOTQxMzgsIDk0MTQyLCA5NDE0NywgCisgICAgOTQxNTIsIDk0MTU3LCA5NDE2MiwgOTQxNjYsIDk0MTcxLCA5NDE3NiwgOTQxODEsIDk0MTg2LCA5NDE5MSwgOTQxOTYsIAorICAgIDk0MjAwLCA5NDIwNSwgOTQyMTAsIDk0MjE1LCA5NDIyMCwgOTQyMjQsIDk0MjI5LCA5NDIzNCwgOTQyMzgsIDk0MjQzLCAKKyAgICA5NDI0OCwgOTQyNTMsIDk0MjU4LCA5NDI2MywgOTQyNjgsIDAsIDAsIDAsIDk0MjczLCA5NDI3NywgOTQyODIsIDk0Mjg3LCAKKyAgICA5NDI5MSwgOTQyOTYsIDk0MzAwLCA5NDMwNSwgOTQzMTAsIDk0MzE1LCA5NDMyMCwgOTQzMjUsIDk0MzI5LCA5NDMzNCwgCisgICAgOTQzMzksIDk0MzQ0LCA5NDM0OSwgOTQzNTQsIDk0MzU5LCA5NDM2MywgOTQzNjgsIDk0MzczLCA5NDM3OCwgOTQzODMsIAorICAgIDk0Mzg4LCA5NDM5MywgOTQzOTcsIDk0NDAxLCA5NDQwNiwgOTQ0MTEsIDk0NDE2LCA5NDQyMSwgOTQ0MjYsIDk0NDMxLCAKKyAgICA5NDQzNiwgOTQ0NDEsIDk0NDQ2LCA5NDQ1MSwgOTQ0NTYsIDk0NDYxLCA5NDQ2NiwgOTQ0NzEsIDk0NDc2LCA5NDQ4MSwgCisgICAgOTQ0ODYsIDk0NDkxLCA5NDQ5NiwgOTQ1MDEsIDk0NTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5NDUxMSwgOTQ1MTcsIDk0NTIyLCA5NDUyNywgOTQ1MzIsIDk0NTM3LCA5NDU0MiwgOTQ1NDcsIDk0NTUzLCAKKyAgICA5NDU1OCwgOTQ1NjQsIDk0NTcwLCA5NDU3NiwgOTQ1ODIsIDk0NTg4LCA5NDU5NCwgOTQ2MDAsIDk0NjA2LCA5NDYxMiwgCisgICAgOTQ2MTgsIDk0NjI1LCA5NDYzMiwgOTQ2MzksIDk0NjQ3LCA5NDY1NSwgOTQ2NjMsIDk0NjcxLCA5NDY3OSwgMCwgMCwgMCwgCisgICAgMCwgOTQ2ODcsIDk0NjkxLCA5NDY5NiwgOTQ3MDEsIDk0NzA2LCA5NDcxMCwgOTQ3MTUsIDk0NzIwLCA5NDcyNSwgOTQ3MzAsIAorICAgIDk0NzM0LCA5NDczOCwgOTQ3NDMsIDk0NzQ4LCA5NDc1MywgOTQ3NTgsIDk0NzYyLCA5NDc2NywgOTQ3NzIsIDk0Nzc3LCAKKyAgICA5NDc4MiwgOTQ3ODcsIDk0NzkyLCA5NDc5NiwgOTQ4MDEsIDk0ODA2LCA5NDgxMSwgOTQ4MTYsIDk0ODIxLCA5NDgyNiwgCisgICAgOTQ4MzEsIDk0ODM2LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTQ4NjMsIDk0ODY4LCA5NDg3MywgOTQ4NzgsIDk0ODgzLCA5NDg4OCwgOTQ4OTMsIDk0ODk4LCA5NDkwMywgCisgICAgOTQ5MDgsIDk0OTEzLCA5NDkxOCwgOTQ5MjMsIDk0OTI4LCA5NDkzMywgOTQ5MzgsIDk0OTQzLCA5NDk0OCwgOTQ5NTMsIAorICAgIDk0OTU4LCA5NDk2MywgOTQ5NjgsIDk0OTczLCA5NDk3OCwgOTQ5ODMsIDk0OTg4LCA5NDk5MywgMCwgMCwgMCwgMCwgMCwgCisgICAgOTUwMDAsIDk1MDA2LCA5NTAxMiwgOTUwMTgsIDk1MDI0LCA5NTAyOSwgOTUwMzUsIDk1MDQxLCA5NTA0NywgOTUwNTMsIAorICAgIDk1MDU4LCA5NTA2NCwgOTUwNzAsIDk1MDc2LCA5NTA4MiwgOTUwODgsIDk1MDk0LCA5NTEwMCwgOTUxMDYsIDk1MTEyLCAKKyAgICA5NTExNywgOTUxMjMsIDk1MTI5LCA5NTEzNSwgOTUxNDEsIDk1MTQ3LCA5NTE1MiwgOTUxNTgsIDk1MTY0LCA5NTE2OSwgCisgICAgOTUxNzUsIDk1MTgxLCA5NTE4NywgOTUxOTMsIDk1MTk5LCA5NTIwNSwgOTUyMTEsIDk1MjE2LCA5NTIyMiwgOTUyMjksIAorICAgIDk1MjM2LCA5NTI0MywgOTUyNTAsIDAsIDAsIDAsIDAsIDAsIDk1MjU3LCA5NTI2MiwgOTUyNjcsIDk1MjcyLCA5NTI3NywgCisgICAgOTUyODIsIDk1Mjg3LCA5NTI5MiwgOTUyOTcsIDk1MzAyLCA5NTMwNywgOTUzMTIsIDk1MzE3LCA5NTMyMiwgOTUzMjcsIAorICAgIDk1MzMyLCA5NTMzNywgOTUzNDIsIDk1MzQ3LCA5NTM1MiwgOTUzNTcsIDk1MzYyLCA5NTM2NywgOTUzNzIsIDk1Mzc3LCAKKyAgICA5NTM4MiwgOTUzODcsIDk1MzkxLCA5NTM5NSwgOTUzOTksIDAsIDk1NDA0LCA5NTQxMCwgOTU0MTUsIDk1NDIwLCA5NTQyNSwgCisgICAgOTU0MzAsIDk1NDM2LCA5NTQ0MiwgOTU0NDgsIDk1NDU0LCA5NTQ2MCwgOTU0NjYsIDk1NDcyLCA5NTQ3OCwgOTU0ODQsIAorICAgIDk1NDkwLCA5NTQ5NiwgOTU1MDIsIDk1NTA4LCA5NTUxMywgOTU1MTksIDk1NTI1LCA5NTUzMCwgOTU1MzYsIDk1NTQxLCAKKyAgICA5NTU0NywgOTU1NTMsIDk1NTU4LCA5NTU2NCwgOTU1NzAsIDk1NTc2LCA5NTU4MiwgOTU1ODcsIDk1NTkzLCA5NTU5OSwgCisgICAgOTU2MDUsIDk1NjExLCAwLCAwLCAwLCAwLCA5NTYxNiwgOTU2MjIsIDk1NjI4LCA5NTYzNCwgOTU2NDAsIDk1NjQ2LCAKKyAgICA5NTY1MiwgOTU2NTgsIDk1NjY0LCA5NTY3MSwgOTU2NzYsIDk1NjgxLCA5NTY4NywgOTU2OTMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0ODY5LCA5NDg3NSwgOTQ4ODEsIDk0ODg3LCA5NDg5NCwgCi0gICAgOTQ5MDAsIDk0OTA3LCA5NDkxNCwgOTQ5MjEsIDk0OTI4LCA5NDkzNiwgOTQ5NDMsIDk0OTUxLCA5NDk1NywgOTQ5NjMsIAotICAgIDk0OTY5LCA5NDk3NSwgOTQ5ODEsIDk0OTg3LCA5NDk5MywgOTQ5OTksIDk1MDA1LCA5NTAxMSwgOTUwMTcsIDk1MDIzLCAKLSAgICA5NTAyOSwgOTUwMzUsIDk1MDQxLCA5NTA0NywgOTUwNTMsIDk1MDU5LCA5NTA2NSwgOTUwNzEsIDk1MDc3LCA5NTA4MywgCi0gICAgOTUwODksIDk1MDk1LCA5NTEwMSwgOTUxMDcsIDk1MTEzLCA5NTExOSwgOTUxMjUsIDk1MTMxLCA5NTEzNywgOTUxNDQsIAotICAgIDk1MTUwLCA5NTE1NywgOTUxNjQsIDk1MTcxLCA5NTE3OCwgOTUxODYsIDk1MTkzLCA5NTIwMSwgOTUyMDcsIDk1MjEzLCAKLSAgICA5NTIxOSwgOTUyMjUsIDk1MjMxLCA5NTIzNywgOTUyNDMsIDk1MjQ5LCA5NTI1NSwgOTUyNjEsIDk1MjY3LCA5NTI3MywgCi0gICAgOTUyNzksIDk1Mjg1LCA5NTI5MSwgOTUyOTcsIDk1MzAzLCA5NTMwOSwgOTUzMTUsIDk1MzIxLCA5NTMyNywgOTUzMzMsIAotICAgIDk1MzM5LCA5NTM0NSwgOTUzNTEsIDk1MzU3LCA5NTM2MywgOTUzNjksIDk1Mzc0LCA5NTM3OSwgOTUzODQsIDk1Mzg5LCAKLSAgICA5NTM5NCwgOTUzOTksIDk1NDA0LCA5NTQwOSwgOTU0MTQsIDk1NDE5LCA5NTQyNCwgOTU0MjksIDk1NDM0LCA5NTQzOSwgCi0gICAgOTU0NDQsIDk1NDQ5LCA5NTQ1NCwgOTU0NTksIDk1NDY0LCA5NTQ2OSwgOTU0NzQsIDk1NDc5LCA5NTQ4NCwgOTU0ODksIAotICAgIDk1NDk0LCA5NTQ5OSwgOTU1MDQsIDk1NTA5LCA5NTUxNCwgOTU1MTksIDk1NTI0LCA5NTUyOSwgOTU1MzQsIDk1NTM5LCAKLSAgICA5NTU0NCwgOTU1NDksIDk1NTU0LCA5NTU1OSwgOTU1NjQsIDk1NTY5LCA5NTU3NCwgOTU1NzksIDk1NTg0LCA5NTU4OSwgCi0gICAgOTU1OTQsIDk1NTk5LCA5NTYwNCwgOTU2MDksIDk1NjE0LCA5NTYxOSwgOTU2MjQsIDk1NjI5LCA5NTYzNCwgOTU2MzksIAotICAgIDk1NjQ0LCA5NTY0OSwgOTU2NTQsIDk1NjU5LCA5NTY2NCwgOTU2NjksIDk1Njc0LCA5NTY3OSwgOTU2ODQsIDk1Njg5LCAKLSAgICA5NTY5NCwgOTU2OTksIDk1NzA0LCA5NTcwOSwgOTU3MTMsIDk1NzE3LCA5NTcyMSwgOTU3MjUsIDk1NzI5LCA5NTczMywgCi0gICAgOTU3MzcsIDk1NzQyLCA5NTc0NywgMCwgMCwgOTU3NTIsIDk1NzU3LCA5NTc2MSwgOTU3NjUsIDk1NzY5LCA5NTc3MywgCi0gICAgOTU3NzcsIDk1NzgxLCA5NTc4NiwgOTU3OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1Njk5LCA5NTcwNSwgOTU3MTEsIDk1NzE3LCA5NTcyNCwgCisgICAgOTU3MzAsIDk1NzM3LCA5NTc0NCwgOTU3NTEsIDk1NzU4LCA5NTc2NiwgOTU3NzMsIDk1NzgxLCA5NTc4NywgOTU3OTMsIAorICAgIDk1Nzk5LCA5NTgwNSwgOTU4MTEsIDk1ODE3LCA5NTgyMywgOTU4MjksIDk1ODM1LCA5NTg0MSwgOTU4NDcsIDk1ODUzLCAKKyAgICA5NTg1OSwgOTU4NjUsIDk1ODcxLCA5NTg3NywgOTU4ODMsIDk1ODg5LCA5NTg5NSwgOTU5MDEsIDk1OTA3LCA5NTkxMywgCisgICAgOTU5MTksIDk1OTI1LCA5NTkzMSwgOTU5MzcsIDk1OTQzLCA5NTk0OSwgOTU5NTUsIDk1OTYxLCA5NTk2NywgOTU5NzQsIAorICAgIDk1OTgwLCA5NTk4NywgOTU5OTQsIDk2MDAxLCA5NjAwOCwgOTYwMTYsIDk2MDIzLCA5NjAzMSwgOTYwMzcsIDk2MDQzLCAKKyAgICA5NjA0OSwgOTYwNTUsIDk2MDYxLCA5NjA2NywgOTYwNzMsIDk2MDc5LCA5NjA4NSwgOTYwOTEsIDk2MDk3LCA5NjEwMywgCisgICAgOTYxMDksIDk2MTE1LCA5NjEyMSwgOTYxMjcsIDk2MTMzLCA5NjEzOSwgOTYxNDUsIDk2MTUxLCA5NjE1NywgOTYxNjMsIAorICAgIDk2MTY5LCA5NjE3NSwgOTYxODEsIDk2MTg3LCA5NjE5MywgOTYxOTksIDk2MjA0LCA5NjIwOSwgOTYyMTQsIDk2MjE5LCAKKyAgICA5NjIyNCwgOTYyMjksIDk2MjM0LCA5NjIzOSwgOTYyNDQsIDk2MjQ5LCA5NjI1NCwgOTYyNTksIDk2MjY0LCA5NjI2OSwgCisgICAgOTYyNzQsIDk2Mjc5LCA5NjI4NCwgOTYyODksIDk2Mjk0LCA5NjI5OSwgOTYzMDQsIDk2MzA5LCA5NjMxNCwgOTYzMTksIAorICAgIDk2MzI0LCA5NjMyOSwgOTYzMzQsIDk2MzM5LCA5NjM0NCwgOTYzNDksIDk2MzU0LCA5NjM1OSwgOTYzNjQsIDk2MzY5LCAKKyAgICA5NjM3NCwgOTYzNzksIDk2Mzg0LCA5NjM4OSwgOTYzOTQsIDk2Mzk5LCA5NjQwNCwgOTY0MDksIDk2NDE0LCA5NjQxOSwgCisgICAgOTY0MjQsIDk2NDI5LCA5NjQzNCwgOTY0MzksIDk2NDQ0LCA5NjQ0OSwgOTY0NTQsIDk2NDU5LCA5NjQ2NCwgOTY0NjksIAorICAgIDk2NDc0LCA5NjQ3OSwgOTY0ODQsIDk2NDg5LCA5NjQ5NCwgOTY0OTksIDk2NTA0LCA5NjUwOSwgOTY1MTQsIDk2NTE5LCAKKyAgICA5NjUyNCwgOTY1MjksIDk2NTM0LCA5NjUzOSwgOTY1NDMsIDk2NTQ3LCA5NjU1MSwgOTY1NTUsIDk2NTU5LCA5NjU2MywgCisgICAgOTY1NjcsIDk2NTcyLCA5NjU3NywgMCwgMCwgOTY1ODIsIDk2NTg3LCA5NjU5MSwgOTY1OTUsIDk2NTk5LCA5NjYwMywgCisgICAgOTY2MDcsIDk2NjExLCA5NjYxNiwgOTY2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2NjI1LCA5NjYzMCwgOTY2MzYsIDk2NjQyLCAKKyAgICA5NjY0OCwgOTY2NTQsIDk2NjYwLCA5NjY2NiwgOTY2NzEsIDk2Njc3LCA5NjY4MiwgOTY2ODgsIDk2NjkzLCA5NjY5OCwgCisgICAgOTY3MDQsIDk2NzEwLCA5NjcxNSwgOTY3MjAsIDk2NzI1LCA5NjczMCwgOTY3MzYsIDk2NzQxLCA5Njc0NywgOTY3NTMsIAorICAgIDk2NzU5LCA5Njc2NSwgOTY3NzEsIDk2Nzc3LCA5Njc4MywgOTY3ODksIDk2Nzk1LCA5NjgwMCwgOTY4MDYsIDk2ODEyLCAKKyAgICA5NjgxOCwgOTY4MjQsIDAsIDAsIDAsIDAsIDk2ODMwLCA5NjgzNSwgOTY4NDEsIDk2ODQ3LCA5Njg1MywgOTY4NTksIAorICAgIDk2ODY1LCA5Njg3MSwgOTY4NzYsIDk2ODgyLCA5Njg4NywgOTY4OTMsIDk2ODk4LCA5NjkwMywgOTY5MDksIDk2OTE1LCAKKyAgICA5NjkyMCwgOTY5MjUsIDk2OTMwLCA5NjkzNSwgOTY5NDEsIDk2OTQ2LCA5Njk1MiwgOTY5NTgsIDk2OTY0LCA5Njk3MCwgCisgICAgOTY5NzYsIDk2OTgyLCA5Njk4OCwgOTY5OTQsIDk3MDAwLCA5NzAwNSwgOTcwMTEsIDk3MDE3LCA5NzAyMywgOTcwMjksIDAsIAorICAgIDAsIDAsIDAsIDk3MDM1LCA5NzAzOSwgOTcwNDQsIDk3MDQ5LCA5NzA1NCwgOTcwNTksIDk3MDY0LCA5NzA2OSwgOTcwNzQsIAorICAgIDk3MDc4LCA5NzA4MywgOTcwODgsIDk3MDkzLCA5NzA5OCwgOTcxMDIsIDk3MTA3LCA5NzExMiwgOTcxMTcsIDk3MTIyLCAKKyAgICA5NzEyNywgOTcxMzIsIDk3MTM2LCA5NzE0MSwgOTcxNDUsIDk3MTUwLCA5NzE1NSwgOTcxNjAsIDk3MTY1LCA5NzE3MCwgCisgICAgOTcxNzUsIDk3MTgwLCA5NzE4NSwgOTcxODksIDk3MTk0LCA5NzE5OSwgOTcyMDQsIDk3MjA5LCA5NzIxNCwgOTcyMTksIAorICAgIDk3MjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NzIyOSwgOTcyMzYsIDk3MjQzLCA5NzI1MCwgOTcyNTcsIDk3MjY0LCAKKyAgICA5NzI3MSwgOTcyNzgsIDk3Mjg1LCA5NzI5MiwgOTcyOTksIDk3MzA2LCA5NzMxMywgOTczMjAsIDk3MzI3LCA5NzMzNCwgCisgICAgOTczNDEsIDk3MzQ4LCA5NzM1NSwgOTczNjIsIDk3MzY5LCA5NzM3NiwgOTczODMsIDk3MzkwLCA5NzM5NywgOTc0MDQsIAorICAgIDk3NDExLCA5NzQxOCwgOTc0MjUsIDk3NDMyLCA5NzQzOSwgOTc0NDYsIDk3NDUzLCA5NzQ2MCwgOTc0NjcsIDk3NDc0LCAKKyAgICA5NzQ4MSwgOTc0ODgsIDk3NDk1LCA5NzUwMiwgOTc1MDksIDk3NTE2LCA5NzUyMywgOTc1MzAsIDk3NTM3LCA5NzU0NCwgCisgICAgOTc1NTEsIDk3NTU4LCA5NzU2NSwgOTc1NzIsIDk3NTc5LCA5NzU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOTc1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk1Nzk1LCA5NTc5OSwgOTU4MDQsIDk1ODA5LCA5NTgxNCwgOTU4MTksIDk1ODI0LCA5NTgyOSwgOTU4MzQsIDk1ODM4LCAKLSAgICA5NTg0MywgOTU4NDgsIDk1ODUzLCA5NTg1OCwgOTU4NjIsIDk1ODY3LCA5NTg3MiwgOTU4NzcsIDk1ODgyLCA5NTg4NywgCi0gICAgOTU4OTIsIDk1ODk3LCA5NTkwMiwgOTU5MDYsIDk1OTExLCA5NTkxNiwgOTU5MjEsIDk1OTI2LCA5NTkzMSwgOTU5MzYsIAotICAgIDk1OTQxLCA5NTk0NiwgOTU5NTAsIDk1OTU1LCA5NTk2MCwgOTU5NjUsIDk1OTcwLCA5NTk3NSwgOTU5ODAsIDk1OTg1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTk5MCwgOTU5OTcsIDk2MDA0LCA5NjAxMSwgOTYwMTgsIDk2MDI1LCA5NjAzMiwgCi0gICAgOTYwMzksIDk2MDQ2LCA5NjA1MywgOTYwNjAsIDk2MDY3LCA5NjA3NCwgOTYwODEsIDk2MDg4LCA5NjA5NSwgOTYxMDIsIAotICAgIDk2MTA5LCA5NjExNiwgOTYxMjMsIDk2MTMwLCA5NjEzNywgOTYxNDQsIDk2MTUxLCA5NjE1OCwgOTYxNjUsIDk2MTcyLCAKLSAgICA5NjE3OSwgOTYxODYsIDk2MTkzLCA5NjIwMCwgOTYyMDcsIDk2MjE0LCA5NjIyMSwgOTYyMjgsIDk2MjM1LCA5NjI0MiwgCi0gICAgOTYyNDksIDk2MjU2LCA5NjI2MywgOTYyNzAsIDk2Mjc3LCA5NjI4NCwgOTYyOTEsIDk2Mjk4LCA5NjMwNSwgOTYzMTIsIAotICAgIDk2MzE5LCA5NjMyNiwgOTYzMzMsIDk2MzQwLCA5NjM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTYzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDk3NjAwLCA5NzYwNSwgOTc2MTAsIDk3NjE1LCA5NzYyMCwgOTc2MjUsIDk3NjMwLCA5NzYzNSwgOTc2NDAsIAorICAgIDk3NjQ1LCA5NzY1MCwgOTc2NTUsIDk3NjYwLCA5NzY2NSwgOTc2NzAsIDk3Njc1LCA5NzY4MCwgOTc2ODUsIDk3NjkwLCAKKyAgICA5NzY5NSwgOTc3MDAsIDk3NzA1LCA5NzcxMCwgOTc3MTUsIDk3NzIwLCA5NzcyNSwgOTc3MzAsIDk3NzM1LCA5Nzc0MCwgCisgICAgOTc3NDUsIDk3NzUwLCA5Nzc1NSwgOTc3NjAsIDk3NzY1LCA5Nzc3MCwgOTc3NzUsIDk3NzgwLCA5Nzc4NSwgOTc3OTAsIAorICAgIDk3Nzk1LCA5NzgwMCwgOTc4MDUsIDk3ODEwLCA5NzgxNSwgOTc4MjAsIDk3ODI1LCA5NzgzMCwgOTc4MzUsIDk3ODQwLCAKKyAgICA5Nzg0NSwgOTc4NTAsIDk3ODU1LCA5Nzg2MCwgOTc4NjUsIDk3ODcwLCA5Nzg3NSwgOTc4ODAsIDk3ODg1LCA5Nzg5MCwgCisgICAgOTc4OTUsIDk3OTAwLCA5NzkwNSwgOTc5MTAsIDk3OTE1LCA5NzkyMCwgOTc5MjUsIDk3OTMwLCA5NzkzNSwgOTc5NDAsIAorICAgIDk3OTQ1LCA5Nzk1MCwgOTc5NTUsIDk3OTYwLCA5Nzk2NSwgOTc5NzAsIDk3OTc1LCA5Nzk4MCwgOTc5ODUsIDk3OTkwLCAKKyAgICA5Nzk5NSwgOTgwMDAsIDk4MDA1LCA5ODAxMCwgOTgwMTUsIDk4MDIwLCA5ODAyNSwgOTgwMzAsIDk4MDM1LCA5ODA0MCwgCisgICAgOTgwNDUsIDk4MDUwLCA5ODA1NSwgOTgwNjAsIDk4MDY1LCA5ODA3MCwgOTgwNzUsIDk4MDgwLCA5ODA4NSwgOTgwOTAsIAorICAgIDk4MDk1LCA5ODEwMCwgOTgxMDUsIDk4MTEwLCA5ODExNSwgOTgxMjAsIDk4MTI1LCA5ODEzMCwgOTgxMzUsIDk4MTQwLCAKKyAgICA5ODE0NSwgOTgxNTAsIDk4MTU1LCA5ODE2MCwgOTgxNjUsIDk4MTcwLCA5ODE3NSwgOTgxODAsIDk4MTg1LCA5ODE5MCwgCisgICAgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCA5ODIzNSwgOTgyNDAsIAorICAgIDk4MjQ1LCA5ODI1MCwgOTgyNTUsIDk4MjYwLCA5ODI2NSwgOTgyNzAsIDk4Mjc1LCA5ODI4MCwgOTgyODUsIDk4MjkwLCAKKyAgICA5ODI5NSwgOTgzMDAsIDk4MzA1LCA5ODMxMCwgOTgzMTUsIDk4MzIwLCA5ODMyNSwgOTgzMzAsIDk4MzM1LCA5ODM0MCwgCisgICAgOTgzNDUsIDk4MzUwLCA5ODM1NSwgOTgzNjAsIDk4MzY1LCA5ODM3MCwgOTgzNzUsIDk4MzgwLCA5ODM4NSwgOTgzOTAsIAorICAgIDk4Mzk1LCA5ODQwMCwgOTg0MDUsIDk4NDEwLCA5ODQxNSwgOTg0MjAsIDk4NDI1LCA5ODQzMCwgOTg0MzUsIDk4NDQwLCAKKyAgICA5ODQ0NSwgOTg0NTAsIDk4NDU1LCA5ODQ2MCwgOTg0NjUsIDk4NDcwLCA5ODQ3NSwgOTg0ODAsIDk4NDg1LCA5ODQ5MCwgCisgICAgOTg0OTUsIDk4NTAwLCA5ODUwNSwgOTg1MTAsIDk4NTE1LCA5ODUyMCwgOTg1MjUsIDk4NTMwLCA5ODUzNSwgOTg1NDAsIAorICAgIDk4NTQ1LCA5ODU1MCwgOTg1NTUsIDk4NTYwLCA5ODU2NSwgOTg1NzAsIDk4NTc1LCA5ODU4MCwgOTg1ODUsIDk4NTkwLCAKKyAgICA5ODU5NSwgOTg2MDAsIDk4NjA1LCA5ODYxMCwgOTg2MTUsIDk4NjIwLCA5ODYyNSwgOTg2MzAsIDk4NjM1LCA5ODY0MCwgCisgICAgOTg2NDUsIDk4NjUwLCA5ODY1NSwgOTg2NjAsIDk4NjY1LCA5ODY3MCwgOTg2NzUsIDk4NjgwLCA5ODY4NSwgOTg2OTAsIAorICAgIDk4Njk1LCA5ODcwMCwgOTg3MDUsIDk4NzEwLCA5ODcxNSwgOTg3MjAsIDk4NzI1LCA5ODczMCwgOTg3MzUsIDk4NzQwLCAKKyAgICA5ODc0NSwgOTg3NTAsIDk4NzU1LCA5ODc2MCwgOTg3NjUsIDk4NzcwLCA5ODc3NSwgOTg3ODAsIDk4Nzg1LCA5ODc5MCwgCisgICAgOTg3OTUsIDk4ODAwLCA5ODgwNSwgOTg4MTAsIDk4ODE1LCA5ODgyMCwgOTg4MjUsIDk4ODMwLCA5ODgzNSwgOTg4NDAsIAorICAgIDk4ODQ1LCA5ODg1MCwgOTg4NTUsIDk4ODYwLCA5ODg2NSwgOTg4NzAsIDk4ODc1LCA5ODg4MCwgOTg4ODUsIDk4ODkwLCAKKyAgICA5ODg5NSwgOTg5MDAsIDk4OTA1LCA5ODkxMCwgOTg5MTUsIDk4OTIwLCA5ODkyNSwgOTg5MzAsIDk4OTM1LCA5ODk0MCwgCisgICAgOTg5NDUsIDk4OTUwLCA5ODk1NSwgOTg5NjAsIDk4OTY1LCA5ODk3MCwgOTg5NzUsIDk4OTgwLCA5ODk4NSwgOTg5OTAsIAorICAgIDk4OTk1LCA5OTAwMCwgOTkwMDUsIDk5MDEwLCA5OTAxNSwgOTkwMjAsIDk5MDI1LCA5OTAzMCwgOTkwMzUsIDk5MDQwLCAKKyAgICA5OTA0NSwgOTkwNTAsIDk5MDU1LCA5OTA2MCwgOTkwNjUsIDk5MDcwLCA5OTA3NSwgOTkwODAsIDk5MDg1LCA5OTA5MCwgCisgICAgOTkwOTUsIDk5MTAwLCA5OTEwNSwgOTkxMTAsIDk5MTE1LCA5OTEyMCwgOTkxMjUsIDk5MTMwLCA5OTEzNSwgOTkxNDAsIAorICAgIDk5MTQ1LCA5OTE1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTkxNTUsIDk5MTYxLCA5OTE2OCwgOTkxNzUsIAorICAgIDk5MTgxLCA5OTE4OCwgOTkxOTUsIDk5MjAyLCA5OTIwOSwgOTkyMTUsIDk5MjIyLCA5OTIyOSwgOTkyMzYsIDk5MjQzLCAKKyAgICA5OTI1MCwgOTkyNTcsIDk5MjY0LCA5OTI3MSwgOTkyNzgsIDk5Mjg1LCA5OTI5MiwgOTkyOTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIxLCA5OTMyNiwgOTkzMzEsIDk5MzM2LCA5OTM0MSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTYzNjEsIDk2MzY2LCA5NjM3MSwgOTYzNzYsIDk2MzgxLCA5NjM4NiwgOTYzOTEsIDk2Mzk2LCA5NjQwMSwgCi0gICAgOTY0MDYsIDk2NDExLCA5NjQxNiwgOTY0MjEsIDk2NDI2LCA5NjQzMSwgOTY0MzYsIDk2NDQxLCA5NjQ0NiwgOTY0NTEsIAotICAgIDk2NDU2LCA5NjQ2MSwgOTY0NjYsIDk2NDcxLCA5NjQ3NiwgOTY0ODEsIDk2NDg2LCA5NjQ5MSwgOTY0OTYsIDk2NTAxLCAKLSAgICA5NjUwNiwgOTY1MTEsIDk2NTE2LCA5NjUyMSwgOTY1MjYsIDk2NTMxLCA5NjUzNiwgOTY1NDEsIDk2NTQ2LCA5NjU1MSwgCi0gICAgOTY1NTYsIDk2NTYxLCA5NjU2NiwgOTY1NzEsIDk2NTc2LCA5NjU4MSwgOTY1ODYsIDk2NTkxLCA5NjU5NiwgOTY2MDEsIAotICAgIDk2NjA2LCA5NjYxMSwgOTY2MTYsIDk2NjIxLCA5NjYyNiwgOTY2MzEsIDk2NjM2LCA5NjY0MSwgOTY2NDYsIDk2NjUxLCAKLSAgICA5NjY1NiwgOTY2NjEsIDk2NjY2LCA5NjY3MSwgOTY2NzYsIDk2NjgxLCA5NjY4NiwgOTY2OTEsIDk2Njk2LCA5NjcwMSwgCi0gICAgOTY3MDYsIDk2NzExLCA5NjcxNiwgOTY3MjEsIDk2NzI2LCA5NjczMSwgOTY3MzYsIDk2NzQxLCA5Njc0NiwgOTY3NTEsIAotICAgIDk2NzU2LCA5Njc2MSwgOTY3NjYsIDk2NzcxLCA5Njc3NiwgOTY3ODEsIDk2Nzg2LCA5Njc5MSwgOTY3OTYsIDk2ODAxLCAKLSAgICA5NjgwNiwgOTY4MTEsIDk2ODE2LCA5NjgyMSwgOTY4MjYsIDk2ODMxLCA5NjgzNiwgOTY4NDEsIDk2ODQ2LCA5Njg1MSwgCi0gICAgOTY4NTYsIDk2ODYxLCA5Njg2NiwgOTY4NzEsIDk2ODc2LCA5Njg4MSwgOTY4ODYsIDk2ODkxLCA5Njg5NiwgOTY5MDEsIAotICAgIDk2OTA2LCA5NjkxMSwgOTY5MTYsIDk2OTIxLCA5NjkyNiwgOTY5MzEsIDk2OTM2LCA5Njk0MSwgOTY5NDYsIDk2OTUxLCAKLSAgICA5Njk1NiwgOTY5NjEsIDk2OTY2LCA5Njk3MSwgOTY5NzYsIDk2OTgxLCA5Njk4NiwgOTY5OTEsIDk2OTk2LCA5NzAwMSwgCi0gICAgOTcwMDYsIDk3MDExLCA5NzAxNiwgOTcwMjEsIDk3MDI2LCA5NzAzMSwgOTcwMzYsIDk3MDQxLCA5NzA0NiwgOTcwNTEsIAotICAgIDk3MDU2LCA5NzA2MSwgOTcwNjYsIDk3MDcxLCA5NzA3NiwgOTcwODEsIDk3MDg2LCA5NzA5MSwgOTcwOTYsIDk3MTAxLCAKLSAgICA5NzEwNiwgOTcxMTEsIDk3MTE2LCA5NzEyMSwgOTcxMjYsIDk3MTMxLCA5NzEzNiwgOTcxNDEsIDk3MTQ2LCA5NzE1MSwgCi0gICAgOTcxNTYsIDk3MTYxLCA5NzE2NiwgOTcxNzEsIDk3MTc2LCA5NzE4MSwgOTcxODYsIDk3MTkxLCA5NzE5NiwgOTcyMDEsIAotICAgIDk3MjA2LCA5NzIxMSwgOTcyMTYsIDk3MjIxLCA5NzIyNiwgOTcyMzEsIDk3MjM2LCA5NzI0MSwgOTcyNDYsIDk3MjUxLCAKLSAgICA5NzI1NiwgOTcyNjEsIDk3MjY2LCA5NzI3MSwgOTcyNzYsIDk3MjgxLCA5NzI4NiwgOTcyOTEsIDk3Mjk2LCA5NzMwMSwgCi0gICAgOTczMDYsIDk3MzExLCA5NzMxNiwgOTczMjEsIDk3MzI2LCA5NzMzMSwgOTczMzYsIDk3MzQxLCA5NzM0NiwgOTczNTEsIAotICAgIDk3MzU2LCA5NzM2MSwgOTczNjYsIDk3MzcxLCA5NzM3NiwgOTczODEsIDk3Mzg2LCA5NzM5MSwgOTczOTYsIDk3NDAxLCAKLSAgICA5NzQwNiwgOTc0MTEsIDk3NDE2LCA5NzQyMSwgOTc0MjYsIDk3NDMxLCA5NzQzNiwgOTc0NDEsIDk3NDQ2LCA5NzQ1MSwgCi0gICAgOTc0NTYsIDk3NDYxLCA5NzQ2NiwgOTc0NzEsIDk3NDc2LCA5NzQ4MSwgOTc0ODYsIDk3NDkxLCA5NzQ5NiwgOTc1MDEsIAotICAgIDk3NTA2LCA5NzUxMSwgOTc1MTYsIDk3NTIxLCA5NzUyNiwgOTc1MzEsIDk3NTM2LCA5NzU0MSwgOTc1NDYsIDk3NTUxLCAKLSAgICA5NzU1NiwgOTc1NjEsIDk3NTY2LCA5NzU3MSwgOTc1NzYsIDk3NTgxLCA5NzU4NiwgOTc1OTEsIDk3NTk2LCA5NzYwMSwgCi0gICAgOTc2MDYsIDk3NjExLCA5NzYxNiwgOTc2MjEsIDk3NjI2LCA5NzYzMSwgOTc2MzYsIDk3NjQxLCA5NzY0NiwgOTc2NTEsIAotICAgIDk3NjU2LCA5NzY2MSwgOTc2NjYsIDk3NjcxLCA5NzY3NiwgOTc2ODEsIDk3Njg2LCA5NzY5MSwgOTc2OTYsIDk3NzAxLCAKLSAgICA5NzcwNiwgOTc3MTEsIDk3NzE2LCA5NzcyMSwgOTc3MjYsIDk3NzMxLCA5NzczNiwgOTc3NDEsIDk3NzQ2LCA5Nzc1MSwgCi0gICAgOTc3NTYsIDk3NzYxLCA5Nzc2NiwgOTc3NzEsIDk3Nzc2LCA5Nzc4MSwgOTc3ODYsIDk3NzkxLCA5Nzc5NiwgOTc4MDEsIAotICAgIDk3ODA2LCA5NzgxMSwgOTc4MTYsIDk3ODIxLCA5NzgyNiwgOTc4MzEsIDk3ODM2LCA5Nzg0MSwgOTc4NDYsIDk3ODUxLCAKLSAgICA5Nzg1NiwgOTc4NjEsIDk3ODY2LCA5Nzg3MSwgOTc4NzYsIDk3ODgxLCA5Nzg4NiwgOTc4OTEsIDk3ODk2LCA5NzkwMSwgCi0gICAgOTc5MDYsIDk3OTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NzkxNiwgOTc5MjIsIDk3OTI5LCA5NzkzNiwgCi0gICAgOTc5NDIsIDk3OTQ5LCA5Nzk1NiwgOTc5NjMsIDk3OTcwLCA5Nzk3NiwgOTc5ODMsIDk3OTkwLCA5Nzk5NywgOTgwMDQsIAotICAgIDk4MDExLCA5ODAxOCwgOTgwMjUsIDk4MDMyLCA5ODAzOSwgOTgwNDYsIDk4MDUzLCA5ODA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTgwNjcsIDk4MDcyLCA5ODA3NywgOTgwODIsIDk4MDg3LCA5ODA5MiwgOTgwOTcsIDk4MTAyLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5OTM0NiwgOTkzNTAsIDk5MzU0LCA5OTM1OCwgOTkzNjIsIDk5MzY2LCAwLCAwLCA5OTM3MSwgCisgICAgMCwgOTkzNzYsIDk5MzgwLCA5OTM4NSwgOTkzOTAsIDk5Mzk1LCA5OTQwMCwgOTk0MDQsIDk5NDA5LCA5OTQxNCwgOTk0MTksIAorICAgIDk5NDI0LCA5OTQyOCwgOTk0MzMsIDk5NDM4LCA5OTQ0MywgOTk0NDgsIDk5NDUyLCA5OTQ1NywgOTk0NjIsIDk5NDY3LCAKKyAgICA5OTQ3MiwgOTk0NzYsIDk5NDgxLCA5OTQ4NiwgOTk0OTEsIDk5NDk2LCA5OTUwMSwgOTk1MDYsIDk5NTExLCA5OTUxNiwgCisgICAgOTk1MjEsIDk5NTI2LCA5OTUzMSwgOTk1MzYsIDk5NTQxLCA5OTU0NiwgOTk1NTEsIDk5NTU2LCA5OTU2MSwgOTk1NjUsIAorICAgIDk5NTcwLCA5OTU3NSwgOTk1ODAsIDk5NTg1LCAwLCA5OTU5MCwgOTk1OTUsIDAsIDAsIDAsIDk5NjAwLCAwLCAwLCA5OTYwNSwgCisgICAgOTk2MTAsIDk5NjE3LCA5OTYyNCwgOTk2MzEsIDk5NjM4LCA5OTY0NSwgOTk2NTIsIDk5NjU5LCA5OTY2NiwgOTk2NzMsIAorICAgIDk5NjgwLCA5OTY4NywgOTk2OTQsIDk5NzAxLCA5OTcwOCwgOTk3MTUsIDk5NzIyLCA5OTcyOSwgOTk3MzYsIDk5NzQzLCAKKyAgICA5OTc1MCwgOTk3NTcsIDAsIDk5NzY0LCA5OTc3MSwgOTk3NzcsIDk5NzgzLCA5OTc4OSwgOTk3OTYsIDk5ODAzLCA5OTgxMSwgCisgICAgOTk4MTksIDk5ODI4LCA5OTgzMywgOTk4MzgsIDk5ODQzLCA5OTg0OCwgOTk4NTMsIDk5ODU4LCA5OTg2MywgOTk4NjgsIAorICAgIDk5ODczLCA5OTg3OCwgOTk4ODMsIDk5ODg4LCA5OTg5MywgOTk4OTksIDk5OTA0LCA5OTkwOSwgOTk5MTQsIDk5OTE5LCAKKyAgICA5OTkyNCwgOTk5MjksIDk5OTM0LCA5OTkzOSwgOTk5NDQsIDk5OTUwLCA5OTk1NiwgOTk5NjAsIDk5OTY0LCA5OTk2OCwgCisgICAgOTk5NzIsIDk5OTc2LCA5OTk4MSwgOTk5ODYsIDk5OTkyLCA5OTk5NywgMTAwMDAzLCAxMDAwMDgsIDEwMDAxMywgMTAwMDE4LCAKKyAgICAxMDAwMjQsIDEwMDAyOSwgMTAwMDM0LCAxMDAwMzksIDEwMDA0NCwgMTAwMDQ5LCAxMDAwNTUsIDEwMDA2MCwgMTAwMDY2LCAKKyAgICAxMDAwNzEsIDEwMDA3NywgMTAwMDgyLCAxMDAwODgsIDEwMDA5MywgMTAwMDk5LCAxMDAxMDQsIDEwMDEwOSwgMTAwMTE0LCAKKyAgICAxMDAxMTksIDEwMDEyNCwgMTAwMTI5LCAxMDAxMzQsIDEwMDE0MCwgMTAwMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDAxNTAsIDEwMDE1NCwgMTAwMTU4LCAxMDAxNjIsIDEwMDE2NiwgMTAwMTcyLCAxMDAxNzYsIDEwMDE4MSwgMTAwMTg2LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjMsIDk4MTI3LCAwLCAwLCA5ODEzMiwgCi0gICAgMCwgOTgxMzcsIDk4MTQxLCA5ODE0NiwgOTgxNTEsIDk4MTU2LCA5ODE2MSwgOTgxNjYsIDk4MTcxLCA5ODE3NiwgOTgxODEsIAotICAgIDk4MTg2LCA5ODE5MCwgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCAKLSAgICA5ODIzNSwgOTgyMzksIDk4MjQ0LCA5ODI0OSwgOTgyNTQsIDk4MjU5LCA5ODI2NCwgOTgyNjksIDk4Mjc0LCA5ODI3OSwgCi0gICAgOTgyODQsIDk4Mjg5LCA5ODI5NCwgOTgyOTksIDk4MzA0LCA5ODMwOSwgOTgzMTQsIDk4MzE5LCA5ODMyNCwgOTgzMjgsIAotICAgIDk4MzMzLCA5ODMzOCwgOTgzNDMsIDk4MzQ4LCAwLCA5ODM1MywgOTgzNTgsIDAsIDAsIDAsIDk4MzYzLCAwLCAwLCA5ODM2OCwgCi0gICAgOTgzNzMsIDk4MzgwLCA5ODM4NywgOTgzOTQsIDk4NDAxLCA5ODQwOCwgOTg0MTUsIDk4NDIyLCA5ODQyOSwgOTg0MzYsIAotICAgIDk4NDQzLCA5ODQ1MCwgOTg0NTcsIDk4NDY0LCA5ODQ3MSwgOTg0NzgsIDk4NDg1LCA5ODQ5MiwgOTg0OTksIDk4NTA2LCAKLSAgICA5ODUxMywgOTg1MjAsIDAsIDk4NTI3LCA5ODUzNCwgOTg1NDAsIDk4NTQ2LCA5ODU1MiwgOTg1NTksIDk4NTY2LCA5ODU3NCwgCi0gICAgOTg1ODIsIDk4NTkxLCA5ODU5NiwgOTg2MDEsIDk4NjA2LCA5ODYxMSwgOTg2MTYsIDk4NjIxLCA5ODYyNiwgOTg2MzEsIAotICAgIDk4NjM2LCA5ODY0MSwgOTg2NDYsIDk4NjUxLCA5ODY1NiwgOTg2NjIsIDk4NjY3LCA5ODY3MiwgOTg2NzcsIDk4NjgyLCAKLSAgICA5ODY4NywgOTg2OTIsIDk4Njk3LCA5ODcwMiwgOTg3MDcsIDk4NzEzLCA5ODcxOSwgOTg3MjMsIDk4NzI3LCA5ODczMSwgCi0gICAgOTg3MzUsIDk4NzM5LCA5ODc0NCwgOTg3NDksIDk4NzU1LCA5ODc2MCwgOTg3NjYsIDk4NzcxLCA5ODc3NiwgOTg3ODEsIAotICAgIDk4Nzg3LCA5ODc5MiwgOTg3OTcsIDk4ODAyLCA5ODgwNywgOTg4MTIsIDk4ODE4LCA5ODgyMywgOTg4MjksIDk4ODM0LCAKLSAgICA5ODg0MCwgOTg4NDUsIDk4ODUxLCA5ODg1NiwgOTg4NjIsIDk4ODY3LCA5ODg3MiwgOTg4NzcsIDk4ODgyLCA5ODg4NywgCi0gICAgOTg4OTIsIDk4ODk3LCA5ODkwMywgOTg5MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTEzLCA5ODkxNywgOTg5MjEsIAotICAgIDk4OTI1LCA5ODkyOSwgOTg5MzUsIDk4OTM5LCA5ODk0NCwgOTg5NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCAKLSAgICA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgCi0gICAgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIDk5MDQ1LCAwLCA5OTA1MCwgOTkwNTUsIDAsIDAsIDAsIDAsIDAsIDk5MDYwLCAKLSAgICA5OTA2NCwgOTkwNjgsIDk5MDczLCA5OTA3OCwgOTkwODQsIDk5MDg5LCA5OTA5NCwgOTkwOTksIDk5MTA0LCA5OTEwOSwgCi0gICAgOTkxMTQsIDk5MTE5LCA5OTEyNCwgOTkxMjksIDk5MTM0LCA5OTEzOSwgOTkxNDQsIDk5MTQ5LCA5OTE1NCwgOTkxNTksIAotICAgIDk5MTY0LCA5OTE2OSwgOTkxNzQsIDk5MTc5LCA5OTE4NCwgOTkxODksIDk5MTk0LCA5OTE5OCwgOTkyMDMsIDk5MjA4LCAKLSAgICA5OTIxNCwgOTkyMTgsIDAsIDAsIDAsIDk5MjIyLCA5OTIyOCwgOTkyMzIsIDk5MjM3LCA5OTI0MiwgOTkyNDcsIDk5MjUxLCAKLSAgICA5OTI1NiwgOTkyNjAsIDk5MjY1LCA5OTI3MCwgOTkyNzQsIDk5Mjc5LCA5OTI4NCwgOTkyODgsIDk5MjkyLCA5OTI5NywgCi0gICAgOTkzMDIsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIwLCA5OTMyNSwgOTkzMzAsIDk5MzM1LCA5OTM0MCwgOTkzNDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDk5MzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTM1NSwgCi0gICAgOTkzNjAsIDk5MzY1LCA5OTM3MCwgOTkzNzUsIDk5MzgwLCA5OTM4NiwgOTkzOTIsIDk5Mzk4LCA5OTQwMywgOTk0MDgsIAotICAgIDk5NDE0LCA5OTQyMCwgOTk0MjYsIDk5NDMyLCA5OTQzOCwgOTk0NDQsIDk5NDUwLCA5OTQ1NiwgOTk0NjIsIDk5NDY4LCAKLSAgICA5OTQ3NCwgOTk0ODAsIDk5NDg1LCA5OTQ5MSwgOTk0OTcsIDk5NTAzLCA5OTUwOSwgOTk1MTUsIDk5NTIwLCA5OTUyNiwgCi0gICAgOTk1MzIsIDk5NTM4LCA5OTU0MiwgOTk1NDYsIDk5NTUwLCA5OTU1NCwgOTk1NTgsIDk5NTYzLCA5OTU2OCwgOTk1NzIsIAotICAgIDk5NTc2LCA5OTU4MSwgOTk1ODYsIDk5NTkxLCA5OTU5NiwgOTk2MDEsIDk5NjA2LCA5OTYxMSwgOTk2MTgsIDk5NjIzLCAKLSAgICA5OTYyNywgOTk2MzIsIDk5NjM3LCA5OTY0MiwgOTk2NDYsIDAsIDAsIDAsIDAsIDk5NjUxLCA5OTY1OSwgOTk2NjYsIAotICAgIDk5NjcyLCA5OTY3OCwgOTk2ODIsIDk5Njg2LCA5OTY5MCwgOTk2OTQsIDk5Njk4LCA5OTcwMiwgOTk3MDcsIDk5NzExLCAKLSAgICA5OTcxNiwgOTk3MjEsIDk5NzI2LCA5OTczMSwgOTk3MzYsIDk5NzQxLCA5OTc0NiwgMCwgMCwgOTk3NTEsIDk5NzU3LCAKLSAgICA5OTc2MywgOTk3NjksIDk5Nzc2LCA5OTc4MywgOTk3OTAsIDk5Nzk3LCA5OTgwNCwgOTk4MTEsIDk5ODE3LCA5OTgyMywgCi0gICAgOTk4MjksIDk5ODM2LCA5OTg0MywgOTk4NTAsIDk5ODU3LCA5OTg2NCwgOTk4NzEsIDk5ODc4LCA5OTg4NSwgOTk4OTIsIAotICAgIDk5ODk5LCA5OTkwNiwgOTk5MTMsIDk5OTIwLCA5OTkyNywgOTk5MzQsIDk5OTQyLCA5OTk1MCwgOTk5NTgsIDk5OTY3LCAKLSAgICA5OTk3NiwgOTk5ODUsIDk5OTk0LCAxMDAwMDMsIDEwMDAxMiwgMTAwMDE5LCAxMDAwMjYsIDEwMDAzMywgMTAwMDQxLCAKLSAgICAxMDAwNDksIDEwMDA1NywgMTAwMDY1LCAxMDAwNzMsIDEwMDA4MSwgMTAwMDg5LCAxMDAwOTMsIDEwMDA5OCwgMTAwMTAzLCAKLSAgICAwLCAxMDAxMDksIDEwMDExNCwgMCwgMCwgMCwgMCwgMCwgMTAwMTE5LCAxMDAxMjUsIDEwMDEzMiwgMTAwMTM3LCAxMDAxNDIsIAotICAgIDEwMDE0NiwgMTAwMTUxLCAxMDAxNTYsIDAsIDEwMDE2MSwgMTAwMTY2LCAxMDAxNzEsIDAsIDEwMDE3NiwgMTAwMTgxLCAKLSAgICAxMDAxODYsIDEwMDE5MSwgMTAwMTk2LCAxMDAyMDEsIDEwMDIwNiwgMTAwMjExLCAxMDAyMTYsIDEwMDIyMSwgMTAwMjI2LCAKLSAgICAxMDAyMzEsIDEwMDIzNSwgMTAwMjQwLCAxMDAyNDUsIDEwMDI1MCwgMTAwMjU0LCAxMDAyNTgsIDEwMDI2MywgMTAwMjY4LCAKLSAgICAxMDAyNzMsIDEwMDI3OCwgMTAwMjgzLCAxMDAyODgsIDEwMDI5MywgMTAwMjk3LCAxMDAzMDIsIDAsIDAsIDAsIDAsIAotICAgIDEwMDMwNywgMTAwMzEzLCAxMDAzMTgsIDAsIDAsIDAsIDAsIDEwMDMyMywgMTAwMzI3LCAxMDAzMzEsIDEwMDMzNSwgCi0gICAgMTAwMzM5LCAxMDAzNDMsIDEwMDM0OCwgMTAwMzUzLCAxMDAzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDM2NSwgCi0gICAgMTAwMzcxLCAxMDAzNzgsIDEwMDM4NCwgMTAwMzkxLCAxMDAzOTcsIDEwMDQwMywgMTAwNDA5LCAxMDA0MTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwMDQyMiwgMTAwNDMwLCAxMDA0MzgsIDEwMDQ0NiwgMTAwNDU0LCAxMDA0NjIsIDEwMDQ3MCwgCi0gICAgMTAwNDc4LCAxMDA0ODYsIDEwMDQ5NCwgMTAwNTAyLCAxMDA1MTAsIDEwMDUxOCwgMTAwNTI2LCAxMDA1MzQsIDEwMDU0MiwgCi0gICAgMTAwNTUwLCAxMDA1NTgsIDEwMDU2NiwgMTAwNTc0LCAxMDA1ODIsIDEwMDU5MCwgMTAwNTk4LCAxMDA2MDYsIDEwMDYxNCwgCi0gICAgMTAwNjIyLCAxMDA2MzAsIDEwMDYzOCwgMTAwNjQ2LCAxMDA2NTQsIDEwMDY2MSwgMTAwNjY5LCAxMDA2NzcsIDEwMDY4NCwgCi0gICAgMTAwNjkxLCAxMDA2OTgsIDEwMDcwNSwgMTAwNzEyLCAxMDA3MTksIDEwMDcyNiwgMTAwNzMzLCAxMDA3NDAsIDEwMDc0NywgCi0gICAgMTAwNzU0LCAxMDA3NjEsIDEwMDc2OCwgMTAwNzc1LCAxMDA3ODIsIDEwMDc4OSwgMTAwNzk2LCAxMDA4MDMsIDEwMDgxMCwgCi0gICAgMTAwODE3LCAxMDA4MjQsIDEwMDgzMSwgMTAwODM4LCAxMDA4NDUsIDEwMDg1MiwgMTAwODU5LCAxMDA4NjYsIDEwMDg3MywgCi0gICAgMTAwODgwLCAxMDA4ODYsIDEwMDg5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwOTAwLCAxMDA5MDUsIDEwMDkxMCwgCi0gICAgMTAwOTE1LCAxMDA5MjAsIDEwMDkyNSwgMTAwOTMwLCAxMDA5MzUsIDEwMDk0MCwgMTAwOTQ1LCAxMDA5NTAsIDEwMDk1NSwgCi0gICAgMTAwOTYwLCAxMDA5NjUsIDEwMDk3MCwgMTAwOTc1LCAxMDA5ODAsIDEwMDk4NSwgMTAwOTkwLCAxMDA5OTUsIDEwMTAwMCwgCi0gICAgMTAxMDA1LCAxMDEwMTAsIDEwMTAxNSwgMTAxMDIwLCAxMDEwMjUsIDEwMTAzMCwgMTAxMDM1LCAxMDEwNDAsIDEwMTA0NSwgCi0gICAgMTAxMDUwLCAxMDEwNTUsIDEwMTA2MCwgMTAxMDY1LCAxMDEwNzAsIDEwMTA3NSwgMTAxMDgwLCAxMDEwODUsIDEwMTA5MSwgCi0gICAgMCwgMCwgMCwgMCwgMTAxMDk3LCAxMDExMDEsIDEwMTEwNSwgMTAxMTEwLCAxMDExMTUsIDEwMTEyMSwgMTAxMTI3LCAKLSAgICAxMDExMzMsIDEwMTE0MywgMTAxMTUyLCAxMDExNTgsIDEwMTE2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAxMTczLCAxMDExNzcsIDEwMTE4MiwgMTAxMTg3LCAxMDExOTIsIDEwMTE5NywgMTAxMjAyLCAxMDEyMDcsIDEwMTIxMiwgCi0gICAgMTAxMjE2LCAxMDEyMjEsIDEwMTIyNSwgMTAxMjMwLCAxMDEyMzQsIDEwMTIzOSwgMTAxMjQzLCAxMDEyNDgsIDEwMTI1MywgCi0gICAgMTAxMjU4LCAxMDEyNjMsIDEwMTI2OCwgMTAxMjczLCAxMDEyNzgsIDEwMTI4MywgMTAxMjg4LCAxMDEyOTMsIDEwMTI5OCwgCi0gICAgMTAxMzAzLCAxMDEzMDgsIDEwMTMxMywgMTAxMzE4LCAxMDEzMjMsIDEwMTMyOCwgMTAxMzMzLCAxMDEzMzgsIDEwMTM0MywgCi0gICAgMTAxMzQ4LCAxMDEzNTMsIDEwMTM1OCwgMTAxMzYzLCAxMDEzNjgsIDEwMTM3MywgMTAxMzc4LCAxMDEzODMsIDEwMTM4OCwgCi0gICAgMTAxMzkzLCAxMDEzOTgsIDEwMTQwMywgMTAxNDA4LCAxMDE0MTMsIDEwMTQxOCwgMTAxNDIzLCAxMDE0MjgsIDEwMTQzMywgCi0gICAgMCwgMCwgMCwgMTAxNDM4LCAxMDE0NDMsIDEwMTQ1MiwgMTAxNDYwLCAxMDE0NjksIDEwMTQ3OCwgMTAxNDg5LCAxMDE1MDAsIAotICAgIDEwMTUwNywgMTAxNTE0LCAxMDE1MjEsIDEwMTUyOCwgMTAxNTM1LCAxMDE1NDIsIDEwMTU0OSwgMTAxNTU2LCAxMDE1NjMsIAotICAgIDEwMTU3MCwgMTAxNTc3LCAxMDE1ODQsIDEwMTU5MSwgMTAxNTk4LCAxMDE2MDUsIDEwMTYxMiwgMTAxNjE5LCAxMDE2MjYsIAotICAgIDEwMTYzMywgMTAxNjQwLCAxMDE2NDcsIDAsIDAsIDEwMTY1NCwgMTAxNjYwLCAxMDE2NjYsIDEwMTY3MiwgMTAxNjc4LCAKLSAgICAxMDE2ODUsIDEwMTY5MiwgMTAxNzAwLCAxMDE3MDgsIDEwMTcxNSwgMTAxNzIyLCAxMDE3MjksIDEwMTczNiwgMTAxNzQzLCAKLSAgICAxMDE3NTAsIDEwMTc1NywgMTAxNzY0LCAxMDE3NzEsIDEwMTc3OCwgMTAxNzg1LCAxMDE3OTIsIDEwMTc5OSwgMTAxODA2LCAKLSAgICAxMDE4MTMsIDEwMTgyMCwgMTAxODI3LCAxMDE4MzQsIDAsIDAsIDAsIDAsIDAsIDEwMTg0MSwgMTAxODQ3LCAxMDE4NTMsIAotICAgIDEwMTg1OSwgMTAxODY1LCAxMDE4NzIsIDEwMTg3OSwgMTAxODg3LCAxMDE4OTUsIDEwMTkwMiwgMTAxOTA5LCAxMDE5MTYsIAotICAgIDEwMTkyMywgMTAxOTMwLCAxMDE5MzcsIDEwMTk0NCwgMTAxOTUxLCAxMDE5NTgsIDEwMTk2NSwgMTAxOTcyLCAxMDE5NzksIAotICAgIDEwMTk4NiwgMTAxOTkzLCAxMDIwMDAsIDEwMjAwNywgMTAyMDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIwMjEsIAotICAgIDEwMjAyOCwgMTAyMDM3LCAxMDIwNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjA1NywgCi0gICAgMTAyMDYzLCAxMDIwNjksIDEwMjA3NSwgMTAyMDgxLCAxMDIwODgsIDEwMjA5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAyMTAzLCAxMDIxMTAsIDEwMjExNywgMTAyMTI1LCAxMDIxMzIsIDEwMjEzOSwgMTAyMTQ2LCAxMDIxNTMsIDEwMjE2MSwgCi0gICAgMTAyMTY5LCAxMDIxNzcsIDEwMjE4NSwgMTAyMTkzLCAxMDIyMDEsIDEwMjIwOSwgMTAyMjE3LCAxMDIyMjUsIDEwMjIzMywgCi0gICAgMTAyMjQxLCAxMDIyNDksIDEwMjI1NywgMTAyMjY1LCAxMDIyNzMsIDEwMjI4MSwgMTAyMjg5LCAxMDIyOTcsIDEwMjMwNSwgCi0gICAgMTAyMzEzLCAxMDIzMjEsIDEwMjMyOSwgMTAyMzM3LCAxMDIzNDUsIDEwMjM1MywgMTAyMzYxLCAxMDIzNjksIDEwMjM3NywgCi0gICAgMTAyMzg1LCAxMDIzOTMsIDEwMjQwMSwgMTAyNDA5LCAxMDI0MTcsIDEwMjQyNSwgMTAyNDMzLCAxMDI0NDEsIDEwMjQ0OSwgCi0gICAgMTAyNDU3LCAxMDI0NjUsIDEwMjQ3MywgMTAyNDgxLCAxMDI0ODksIDEwMjQ5NywgMTAyNTA1LCAxMDI1MTMsIDEwMjUyMSwgCi0gICAgMTAyNTI5LCAxMDI1MzcsIDEwMjU0NSwgMTAyNTUzLCAxMDI1NjEsIDEwMjU2OSwgMTAyNTc3LCAxMDI1ODUsIDEwMjU5MywgCi0gICAgMTAyNjAxLCAxMDI2MDksIDEwMjYxNywgMTAyNjI1LCAxMDI2MzMsIDEwMjY0MSwgMTAyNjQ5LCAxMDI2NTcsIDEwMjY2NSwgCi0gICAgMTAyNjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkyLCAxMDI2OTgsIDEwMjcwNCwgCi0gICAgMTAyNzEwLCAxMDI3MTYsIDEwMjcyMiwgMTAyNzI4LCAxMDI3MzQsIDEwMjczOSwgMTAyNzQ2LCAxMDI3NTIsIDEwMjc1OCwgCi0gICAgMTAyNzY0LCAxMDI3NzAsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODcsIDEwMjc5MywgMTAyNzk5LCAxMDI4MDUsIDEwMjgxMSwgCi0gICAgMTAyODE3LCAxMDI4MjMsIDEwMjgyOSwgMTAyODM1LCAxMDI4NDEsIDEwMjg0NiwgMTAyODUyLCAxMDI4NjAsIDEwMjg2OCwgCi0gICAgMTAyODc0LCAxMDI4ODAsIDEwMjg4NiwgMTAyODkyLCAxMDI5MDAsIDEwMjkwNiwgMTAyOTEyLCAxMDI5MTgsIDEwMjkyNCwgCi0gICAgMTAyOTMwLCAxMDI5MzYsIDEwMjk0MSwgMTAyOTQ3LCAxMDI5NTUsIDEwMjk2MywgMTAyOTY5LCAxMDI5NzUsIDEwMjk4MSwgCi0gICAgMTAyOTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI5OTQsIDEwMjk5OSwgMTAzMDA1LCAKLSAgICAxMDMwMTEsIDEwMzAxNywgMTAzMDIzLCAxMDMwMjksIDEwMzAzNSwgMTAzMDQxLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU5LCAKLSAgICAxMDMwNjUsIDEwMzA3MSwgMTAzMDc3LCAxMDMwODMsIDEwMzA4OSwgMTAzMDk0LCAxMDMxMDAsIDEwMzEwNiwgMTAzMTEyLCAKLSAgICAxMDMxMTgsIDEwMzEyNCwgMTAzMTMwLCAxMDMxMzYsIDEwMzE0MiwgMTAzMTQ4LCAxMDMxNTQsIDEwMzE1OSwgMTAzMTY1LCAKLSAgICAxMDMxNzMsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTMsIDEwMzE5OSwgMTAzMjA1LCAxMDMyMTMsIDEwMzIxOSwgMTAzMjI1LCAKLSAgICAxMDMyMzEsIDEwMzIzNywgMTAzMjQzLCAxMDMyNDksIDEwMzI1NCwgMTAzMjYwLCAxMDMyNjgsIDEwMzI3NiwgMTAzMjgyLCAKLSAgICAxMDMyODgsIDEwMzI5NCwgMTAzMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMDcsIDEwMzMxMSwgMTAzMzE1LCAKLSAgICAxMDMzMjAsIDEwMzMyNSwgMTAzMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDAxOTIsIDEwMDE5NywgMTAwMjAyLCAxMDAyMDcsIDEwMDIxMiwgMTAwMjE3LCAxMDAyMjIsIDEwMDIyNywgMTAwMjMyLCAKKyAgICAxMDAyMzcsIDEwMDI0MiwgMTAwMjQ3LCAxMDAyNTIsIDEwMDI1NywgMTAwMjYyLCAxMDAyNjcsIDEwMDI3MiwgMTAwMjc3LCAKKyAgICAxMDAyODIsIDAsIDEwMDI4NywgMTAwMjkyLCAwLCAwLCAwLCAwLCAwLCAxMDAyOTcsIDEwMDMwMSwgMTAwMzA1LCAxMDAzMTAsIAorICAgIDEwMDMxNSwgMTAwMzIxLCAxMDAzMjYsIDEwMDMzMSwgMTAwMzM2LCAxMDAzNDEsIDEwMDM0NiwgMTAwMzUxLCAxMDAzNTYsIAorICAgIDEwMDM2MSwgMTAwMzY2LCAxMDAzNzEsIDEwMDM3NiwgMTAwMzgxLCAxMDAzODYsIDEwMDM5MSwgMTAwMzk2LCAxMDA0MDEsIAorICAgIDEwMDQwNiwgMTAwNDExLCAxMDA0MTYsIDEwMDQyMSwgMTAwNDI2LCAxMDA0MzEsIDEwMDQzNSwgMTAwNDQwLCAxMDA0NDUsIAorICAgIDEwMDQ1MSwgMTAwNDU1LCAwLCAwLCAwLCAxMDA0NTksIDEwMDQ2NSwgMTAwNDY5LCAxMDA0NzQsIDEwMDQ3OSwgMTAwNDg0LCAKKyAgICAxMDA0ODgsIDEwMDQ5MywgMTAwNDk3LCAxMDA1MDIsIDEwMDUwNywgMTAwNTExLCAxMDA1MTYsIDEwMDUyMSwgMTAwNTI1LCAKKyAgICAxMDA1MjksIDEwMDUzNCwgMTAwNTM5LCAxMDA1NDMsIDEwMDU0OCwgMTAwNTUzLCAxMDA1NTgsIDEwMDU2MywgMTAwNTY4LCAKKyAgICAxMDA1NzMsIDEwMDU3OCwgMTAwNTgzLCAwLCAwLCAwLCAwLCAwLCAxMDA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDU5MywgMTAwNTk4LCAxMDA2MDMsIDEwMDYwOCwgMTAwNjEzLCAxMDA2MTgsIAorICAgIDEwMDYyNCwgMTAwNjMwLCAxMDA2MzYsIDEwMDY0MSwgMTAwNjQ2LCAxMDA2NTEsIDEwMDY1NywgMTAwNjYzLCAxMDA2NjksIAorICAgIDEwMDY3NSwgMTAwNjgxLCAxMDA2ODYsIDEwMDY5MiwgMTAwNjk4LCAxMDA3MDQsIDEwMDcxMCwgMTAwNzE2LCAxMDA3MjEsIAorICAgIDEwMDcyNywgMTAwNzMzLCAxMDA3MzksIDEwMDc0NSwgMTAwNzUxLCAxMDA3NTYsIDEwMDc2MiwgMTAwNzY4LCAxMDA3NzQsIAorICAgIDEwMDc3OSwgMTAwNzg0LCAxMDA3ODksIDEwMDc5NCwgMTAwNzk5LCAxMDA4MDUsIDEwMDgxMSwgMTAwODE2LCAxMDA4MjEsIAorICAgIDEwMDgyNiwgMTAwODMyLCAxMDA4MzgsIDEwMDg0MywgMTAwODQ5LCAxMDA4NTUsIDEwMDg2MSwgMTAwODY5LCAxMDA4NzUsIAorICAgIDEwMDg4MCwgMTAwODg2LCAxMDA4OTIsIDEwMDg5OCwgMTAwOTAzLCAwLCAwLCAwLCAwLCAxMDA5MDksIDEwMDkxOCwgCisgICAgMTAwOTI2LCAxMDA5MzMsIDEwMDk0MCwgMTAwOTQ1LCAxMDA5NTAsIDEwMDk1NSwgMTAwOTYwLCAxMDA5NjUsIDEwMDk3MCwgCisgICAgMTAwOTc2LCAxMDA5ODEsIDEwMDk4NywgMTAwOTkzLCAxMDA5OTksIDEwMTAwNSwgMTAxMDExLCAxMDEwMTcsIDEwMTAyMywgCisgICAgMCwgMCwgMTAxMDI5LCAxMDEwMzYsIDEwMTA0MywgMTAxMDUwLCAxMDEwNTgsIDEwMTA2NiwgMTAxMDc0LCAxMDEwODIsIAorICAgIDEwMTA5MCwgMTAxMDk4LCAxMDExMDUsIDEwMTExMiwgMTAxMTE5LCAxMDExMjcsIDEwMTEzNSwgMTAxMTQzLCAxMDExNTEsIAorICAgIDEwMTE1OSwgMTAxMTY3LCAxMDExNzUsIDEwMTE4MywgMTAxMTkxLCAxMDExOTksIDEwMTIwNywgMTAxMjE1LCAxMDEyMjMsIAorICAgIDEwMTIzMSwgMTAxMjM5LCAxMDEyNDgsIDEwMTI1NywgMTAxMjY2LCAxMDEyNzYsIDEwMTI4NiwgMTAxMjk2LCAxMDEzMDYsIAorICAgIDEwMTMxNiwgMTAxMzI2LCAxMDEzMzQsIDEwMTM0MiwgMTAxMzUwLCAxMDEzNTksIDEwMTM2OCwgMTAxMzc3LCAxMDEzODYsIAorICAgIDEwMTM5NSwgMTAxNDA0LCAxMDE0MTMsIDEwMTQxNywgMTAxNDIyLCAxMDE0MjcsIDAsIDEwMTQzMywgMTAxNDM4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDE0NDMsIDEwMTQ0OSwgMTAxNDU2LCAxMDE0NjEsIDEwMTQ2NiwgMTAxNDcwLCAxMDE0NzUsIDEwMTQ4MCwgCisgICAgMCwgMTAxNDg1LCAxMDE0OTAsIDEwMTQ5NSwgMCwgMTAxNTAwLCAxMDE1MDUsIDEwMTUxMCwgMTAxNTE1LCAxMDE1MjAsIAorICAgIDEwMTUyNSwgMTAxNTMwLCAxMDE1MzUsIDEwMTU0MCwgMTAxNTQ1LCAxMDE1NTAsIDEwMTU1NCwgMTAxNTU4LCAxMDE1NjMsIAorICAgIDEwMTU2OCwgMTAxNTczLCAxMDE1NzcsIDEwMTU4MSwgMTAxNTg2LCAxMDE1OTAsIDEwMTU5NSwgMTAxNjAwLCAxMDE2MDUsIAorICAgIDEwMTYxMCwgMTAxNjE1LCAxMDE2MTksIDEwMTYyNCwgMCwgMCwgMCwgMCwgMTAxNjI5LCAxMDE2MzUsIDEwMTY0MCwgMCwgMCwgCisgICAgMCwgMCwgMTAxNjQ1LCAxMDE2NDksIDEwMTY1MywgMTAxNjU3LCAxMDE2NjEsIDEwMTY2NSwgMTAxNjcwLCAxMDE2NzUsIAorICAgIDEwMTY4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxNjg3LCAxMDE2OTMsIDEwMTcwMCwgMTAxNzA2LCAxMDE3MTMsIAorICAgIDEwMTcxOSwgMTAxNzI1LCAxMDE3MzEsIDEwMTczOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxNzQ0LCAxMDE3NTIsIAorICAgIDEwMTc2MCwgMTAxNzY4LCAxMDE3NzYsIDEwMTc4NCwgMTAxNzkyLCAxMDE4MDAsIDEwMTgwOCwgMTAxODE2LCAxMDE4MjQsIAorICAgIDEwMTgzMiwgMTAxODQwLCAxMDE4NDgsIDEwMTg1NiwgMTAxODY0LCAxMDE4NzIsIDEwMTg4MCwgMTAxODg4LCAxMDE4OTYsIAorICAgIDEwMTkwNCwgMTAxOTEyLCAxMDE5MjAsIDEwMTkyOCwgMTAxOTM2LCAxMDE5NDQsIDEwMTk1MiwgMTAxOTYwLCAxMDE5NjgsIAorICAgIDEwMTk3NiwgMTAxOTgzLCAxMDE5OTEsIDEwMTk5OSwgMTAyMDA2LCAxMDIwMTMsIDEwMjAyMCwgMTAyMDI3LCAxMDIwMzQsIAorICAgIDEwMjA0MSwgMTAyMDQ4LCAxMDIwNTUsIDEwMjA2MiwgMTAyMDY5LCAxMDIwNzYsIDEwMjA4MywgMTAyMDkwLCAxMDIwOTcsIAorICAgIDEwMjEwNCwgMTAyMTExLCAxMDIxMTgsIDEwMjEyNSwgMTAyMTMyLCAxMDIxMzksIDEwMjE0NiwgMTAyMTUzLCAxMDIxNjAsIAorICAgIDEwMjE2NywgMTAyMTc0LCAxMDIxODEsIDEwMjE4OCwgMTAyMTk1LCAxMDIyMDIsIDEwMjIwOCwgMTAyMjE1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMzcsIDEwMzM0MSwgMTAzMzQ1LCAxMDMzNDksIDEwMzM1MywgMTAzMzU3LCAKLSAgICAxMDMzNjEsIDEwMzM2NiwgMTAzMzcwLCAxMDMzNzUsIDEwMzM4MCwgMTAzMzg1LCAxMDMzOTAsIDEwMzM5NSwgMTAzNDAwLCAKLSAgICAxMDM0MDUsIDEwMzQxMCwgMTAzNDE1LCAxMDM0MjAsIDEwMzQyNiwgMTAzNDMyLCAxMDM0MzgsIDEwMzQ0NSwgMTAzNDUyLCAKLSAgICAxMDM0NTksIDEwMzQ2NiwgMTAzNDczLCAxMDM0ODAsIDEwMzQ4NywgMTAzNDk0LCAxMDM1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwMjIyMiwgMTAyMjI3LCAxMDIyMzIsIDEwMjIzNywgMTAyMjQyLCAxMDIyNDcsIDEwMjI1MiwgCisgICAgMTAyMjU3LCAxMDIyNjIsIDEwMjI2NywgMTAyMjcyLCAxMDIyNzcsIDEwMjI4MiwgMTAyMjg3LCAxMDIyOTIsIDEwMjI5NywgCisgICAgMTAyMzAyLCAxMDIzMDcsIDEwMjMxMiwgMTAyMzE3LCAxMDIzMjIsIDEwMjMyNywgMTAyMzMyLCAxMDIzMzcsIDEwMjM0MiwgCisgICAgMTAyMzQ3LCAxMDIzNTIsIDEwMjM1NywgMTAyMzYyLCAxMDIzNjcsIDEwMjM3MiwgMTAyMzc3LCAxMDIzODIsIDEwMjM4NywgCisgICAgMTAyMzkyLCAxMDIzOTcsIDEwMjQwMiwgMTAyNDA3LCAxMDI0MTMsIDAsIDAsIDAsIDAsIDEwMjQxOSwgMTAyNDIzLCAKKyAgICAxMDI0MjcsIDEwMjQzMiwgMTAyNDM3LCAxMDI0NDMsIDEwMjQ0OSwgMTAyNDU1LCAxMDI0NjUsIDEwMjQ3NCwgMTAyNDgwLCAKKyAgICAxMDI0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjQ5NSwgMTAyNDk5LCAxMDI1MDQsIDEwMjUwOSwgCisgICAgMTAyNTE0LCAxMDI1MTksIDEwMjUyNCwgMTAyNTI5LCAxMDI1MzQsIDEwMjUzOCwgMTAyNTQzLCAxMDI1NDcsIDEwMjU1MiwgCisgICAgMTAyNTU2LCAxMDI1NjEsIDEwMjU2NSwgMTAyNTcwLCAxMDI1NzUsIDEwMjU4MCwgMTAyNTg1LCAxMDI1OTAsIDEwMjU5NSwgCisgICAgMTAyNjAwLCAxMDI2MDUsIDEwMjYxMCwgMTAyNjE1LCAxMDI2MjAsIDEwMjYyNSwgMTAyNjMwLCAxMDI2MzUsIDEwMjY0MCwgCisgICAgMTAyNjQ1LCAxMDI2NTAsIDEwMjY1NSwgMTAyNjYwLCAxMDI2NjUsIDEwMjY3MCwgMTAyNjc1LCAxMDI2ODAsIDEwMjY4NSwgCisgICAgMTAyNjkwLCAxMDI2OTUsIDEwMjcwMCwgMTAyNzA1LCAxMDI3MTAsIDEwMjcxNSwgMTAyNzIwLCAxMDI3MjUsIDEwMjczMCwgCisgICAgMTAyNzM1LCAxMDI3NDAsIDEwMjc0NSwgMTAyNzUwLCAxMDI3NTUsIDAsIDAsIDAsIDEwMjc2MCwgMTAyNzY1LCAxMDI3NzQsIAorICAgIDEwMjc4MiwgMTAyNzkxLCAxMDI4MDAsIDEwMjgxMSwgMTAyODIyLCAxMDI4MjksIDEwMjgzNiwgMTAyODQzLCAxMDI4NTAsIAorICAgIDEwMjg1NywgMTAyODY0LCAxMDI4NzEsIDEwMjg3OCwgMTAyODg1LCAxMDI4OTIsIDEwMjg5OSwgMTAyOTA2LCAxMDI5MTMsIAorICAgIDEwMjkyMCwgMTAyOTI3LCAxMDI5MzQsIDEwMjk0MSwgMTAyOTQ4LCAxMDI5NTUsIDEwMjk2MiwgMTAyOTY5LCAwLCAwLCAKKyAgICAxMDI5NzYsIDEwMjk4MiwgMTAyOTg4LCAxMDI5OTQsIDEwMzAwMCwgMTAzMDA3LCAxMDMwMTQsIDEwMzAyMiwgMTAzMDMwLCAKKyAgICAxMDMwMzcsIDEwMzA0NCwgMTAzMDUxLCAxMDMwNTgsIDEwMzA2NSwgMTAzMDcyLCAxMDMwNzksIDEwMzA4NiwgMTAzMDkzLCAKKyAgICAxMDMxMDAsIDEwMzEwNywgMTAzMTE0LCAxMDMxMjEsIDEwMzEyOCwgMTAzMTM1LCAxMDMxNDIsIDEwMzE0OSwgMTAzMTU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDMxNjMsIDEwMzE2OSwgMTAzMTc1LCAxMDMxODEsIDEwMzE4NywgMTAzMTk0LCAxMDMyMDEsIAorICAgIDEwMzIwOSwgMTAzMjE3LCAxMDMyMjQsIDEwMzIzMSwgMTAzMjM4LCAxMDMyNDUsIDEwMzI1MiwgMTAzMjU5LCAxMDMyNjYsIAorICAgIDEwMzI3MywgMTAzMjgwLCAxMDMyODcsIDEwMzI5NCwgMTAzMzAxLCAxMDMzMDgsIDEwMzMxNSwgMTAzMzIyLCAxMDMzMjksIAorICAgIDEwMzMzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzQzLCAxMDMzNTAsIDEwMzM1OSwgMTAzMzY5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzNzksIDEwMzM4NSwgMTAzMzkxLCAxMDMzOTcsIDEwMzQwMywgMTAzNDEwLCAKKyAgICAxMDM0MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzQyNSwgMTAzNDMyLCAxMDM0MzksIDEwMzQ0NywgMTAzNDU0LCAKKyAgICAxMDM0NjEsIDEwMzQ2OCwgMTAzNDc1LCAxMDM0ODMsIDEwMzQ5MSwgMTAzNDk5LCAxMDM1MDcsIDEwMzUxNSwgMTAzNTIzLCAKKyAgICAxMDM1MzEsIDEwMzUzOSwgMTAzNTQ3LCAxMDM1NTUsIDEwMzU2MywgMTAzNTcxLCAxMDM1NzksIDEwMzU4NywgMTAzNTk1LCAKKyAgICAxMDM2MDMsIDEwMzYxMSwgMTAzNjE5LCAxMDM2MjcsIDEwMzYzNSwgMTAzNjQzLCAxMDM2NTEsIDEwMzY1OSwgMTAzNjY3LCAKKyAgICAxMDM2NzUsIDEwMzY4MywgMTAzNjkxLCAxMDM2OTksIDEwMzcwNywgMTAzNzE1LCAxMDM3MjMsIDEwMzczMSwgMTAzNzM5LCAKKyAgICAxMDM3NDcsIDEwMzc1NSwgMTAzNzYzLCAxMDM3NzEsIDEwMzc3OSwgMTAzNzg3LCAxMDM3OTUsIDEwMzgwMywgMTAzODExLCAKKyAgICAxMDM4MTksIDEwMzgyNywgMTAzODM1LCAxMDM4NDMsIDEwMzg1MSwgMTAzODU5LCAxMDM4NjcsIDEwMzg3NSwgMTAzODgzLCAKKyAgICAxMDM4OTEsIDEwMzg5OSwgMTAzOTA3LCAxMDM5MTUsIDEwMzkyMywgMTAzOTMxLCAxMDM5MzksIDEwMzk0NywgMTAzOTU1LCAKKyAgICAxMDM5NjMsIDEwMzk3MSwgMTAzOTc5LCAxMDM5ODcsIDEwMzk5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MDAzLCAKKyAgICAxMDQwMDgsIDEwNDAxNCwgMTA0MDIwLCAxMDQwMjYsIDEwNDAzMiwgMTA0MDM4LCAxMDQwNDQsIDEwNDA1MCwgMTA0MDU2LCAKKyAgICAxMDQwNjEsIDEwNDA2OCwgMTA0MDc0LCAxMDQwODAsIDEwNDA4NiwgMTA0MDkyLCAxMDQwOTgsIDEwNDEwMywgMTA0MTA5LCAKKyAgICAxMDQxMTUsIDEwNDEyMSwgMTA0MTI3LCAxMDQxMzMsIDEwNDEzOSwgMTA0MTQ1LCAxMDQxNTEsIDEwNDE1NywgMTA0MTYzLCAKKyAgICAxMDQxNjgsIDEwNDE3NCwgMTA0MTgyLCAxMDQxOTAsIDEwNDE5NiwgMTA0MjAyLCAxMDQyMDgsIDEwNDIxNCwgMTA0MjIyLCAKKyAgICAxMDQyMjgsIDEwNDIzNCwgMTA0MjQwLCAxMDQyNDYsIDEwNDI1MiwgMTA0MjU4LCAxMDQyNjMsIDEwNDI2OSwgMTA0Mjc3LCAKKyAgICAxMDQyODUsIDEwNDI5MSwgMTA0Mjk3LCAxMDQzMDMsIDEwNDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA0MzE2LCAxMDQzMjEsIDEwNDMyNywgMTA0MzMzLCAxMDQzMzksIDEwNDM0NSwgMTA0MzUxLCAxMDQzNTcsIAorICAgIDEwNDM2MywgMTA0MzY5LCAxMDQzNzQsIDEwNDM4MSwgMTA0Mzg3LCAxMDQzOTMsIDEwNDM5OSwgMTA0NDA1LCAxMDQ0MTEsIAorICAgIDEwNDQxNiwgMTA0NDIyLCAxMDQ0MjgsIDEwNDQzNCwgMTA0NDQwLCAxMDQ0NDYsIDEwNDQ1MiwgMTA0NDU4LCAxMDQ0NjQsIAorICAgIDEwNDQ3MCwgMTA0NDc2LCAxMDQ0ODEsIDEwNDQ4NywgMTA0NDk1LCAxMDQ1MDMsIDEwNDUwOSwgMTA0NTE1LCAxMDQ1MjEsIAorICAgIDEwNDUyNywgMTA0NTM1LCAxMDQ1NDEsIDEwNDU0NywgMTA0NTUzLCAxMDQ1NTksIDEwNDU2NSwgMTA0NTcxLCAxMDQ1NzYsIAorICAgIDEwNDU4MiwgMTA0NTkwLCAxMDQ1OTgsIDEwNDYwNCwgMTA0NjEwLCAxMDQ2MTYsIDEwNDYyMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA0NjI5LCAxMDQ2MzMsIDEwNDYzNywgMTA0NjQyLCAxMDQ2NDcsIDEwNDY1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMxLCAxMDM1MzUsIAotICAgIDEwMzUzOCwgMTAzNTQyLCAxMDM1NDUsIDEwMzU0OSwgMTAzNTUzLCAxMDM1NTgsIDEwMzU2MiwgMTAzNTY3LCAxMDM1NzAsIAotICAgIDEwMzU3NCwgMTAzNTc3LCAxMDM1ODEsIDEwMzU4NCwgMTAzNTg4LCAxMDM1OTIsIDEwMzU5NiwgMTAzNjAwLCAxMDM2MDQsIAotICAgIDEwMzYwOCwgMTAzNjEyLCAxMDM2MTYsIDEwMzYyMCwgMTAzNjI0LCAxMDM2MjgsIDEwMzYzMiwgMTAzNjM2LCAxMDM2NDAsIAotICAgIDEwMzY0NCwgMTAzNjQ4LCAxMDM2NTIsIDEwMzY1NiwgMTAzNjYwLCAxMDM2NjMsIDEwMzY2NywgMTAzNjcxLCAxMDM2NzUsIAotICAgIDEwMzY3OCwgMTAzNjgxLCAxMDM2ODUsIDEwMzY4OSwgMTAzNjkzLCAxMDM2OTcsIDEwMzcwMSwgMTAzNzA1LCAxMDM3MDgsIAotICAgIDEwMzcxMiwgMTAzNzE4LCAxMDM3MjQsIDEwMzczMCwgMTAzNzM1LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUxLCAxMDM3NTUsIAotICAgIDEwMzc2MCwgMTAzNzY1LCAxMDM3NzEsIDEwMzc3NiwgMTAzNzgyLCAxMDM3ODYsIDEwMzc5MSwgMTAzNzk1LCAxMDM4MDAsIAotICAgIDEwMzgwMywgMTAzODA2LCAxMDM4MTAsIDEwMzgxNSwgMTAzODIxLCAxMDM4MjYsIDEwMzgzMiwgMCwgMCwgMCwgMCwgCi0gICAgMTAzODM3LCAxMDM4NDAsIDEwMzg0MywgMTAzODQ2LCAxMDM4NDksIDEwMzg1MiwgMTAzODU1LCAxMDM4NTksIDEwMzg2MiwgCi0gICAgMTAzODY2LCAxMDM4NzAsIDEwMzg3NCwgMTAzODc4LCAxMDM4ODIsIDEwMzg4NiwgMTAzODkwLCAxMDM4OTQsIDEwMzg5OCwgCi0gICAgMTAzOTAyLCAxMDM5MDcsIDEwMzkxMiwgMTAzOTE2LCAxMDM5MTksIDEwMzkyMiwgMTAzOTI1LCAxMDM5MjgsIDEwMzkzMSwgCi0gICAgMTAzOTM0LCAxMDM5MzgsIDEwMzk0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAzOTQ1LCAxMDM5NDksIDEwMzk1NCwgMTAzOTU5LCAxMDM5NjQsIDEwMzk2OCwgMTAzOTczLCAxMDM5NzcsIDEwMzk4MiwgCi0gICAgMTAzOTg2LCAxMDM5OTEsIDEwMzk5NSwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOSwgMTA0MDEzLCAxMDQwMTgsIDEwNDAyMywgCi0gICAgMTA0MDI4LCAxMDQwMzMsIDEwNDAzOCwgMTA0MDQzLCAxMDQwNDgsIDEwNDA1MywgMTA0MDU4LCAxMDQwNjMsIDEwNDA2OCwgCi0gICAgMTA0MDczLCAxMDQwNzgsIDEwNDA4MywgMTA0MDg4LCAxMDQwOTMsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDgsIDEwNDExMywgCi0gICAgMTA0MTE4LCAxMDQxMjIsIDEwNDEyNywgMTA0MTMyLCAxMDQxMzcsIDEwNDE0MSwgMTA0MTQ1LCAxMDQxNTAsIDEwNDE1NSwgCi0gICAgMTA0MTYwLCAxMDQxNjUsIDEwNDE3MCwgMTA0MTc1LCAxMDQxNzksIDEwNDE4NSwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMSwgCi0gICAgMTA0MjA3LCAxMDQyMTIsIDEwNDIxOCwgMTA0MjIzLCAxMDQyMjksIDEwNDIzNCwgMTA0MjM5LCAxMDQyNDQsIDEwNDI0OSwgCi0gICAgMTA0MjUzLCAxMDQyNTgsIDEwNDI2NCwgMTA0MjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQyNzMsIDEwNDI4MCwgMTA0Mjg3LCAxMDQyOTQsIDEwNDMwMSwgMTA0MzA4LCAxMDQzMTUsIDEwNDMyMiwgMTA0MzI5LCAKLSAgICAxMDQzMzYsIDEwNDM0MywgMTA0MzUwLCAxMDQzNTcsIDEwNDM2NCwgMTA0MzcxLCAxMDQzNzgsIDEwNDM4NSwgMTA0MzkyLCAKLSAgICAxMDQzOTksIDEwNDQwNiwgMTA0NDEzLCAxMDQ0MjAsIDEwNDQyNywgMTA0NDM0LCAxMDQ0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNDQ0OCwgMTA0NDU1LCAxMDQ0NjEsIDEwNDQ2NywgMTA0NDczLCAxMDQ0NzksIDEwNDQ4NSwgMTA0NDkxLCAKLSAgICAxMDQ0OTgsIDEwNDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTExLCAxMDQ1MTYsIDEwNDUyMSwgMTA0NTI2LCAxMDQ1MzEsIAotICAgIDEwNDUzNSwgMTA0NTM5LCAxMDQ1NDMsIDEwNDU0OCwgMTA0NTUzLCAxMDQ1NTgsIDEwNDU2MywgMTA0NTY4LCAxMDQ1NzMsIAotICAgIDEwNDU3OCwgMTA0NTgzLCAxMDQ1ODgsIDEwNDU5MywgMTA0NTk4LCAxMDQ2MDMsIDEwNDYwOCwgMTA0NjEzLCAxMDQ2MTgsIAotICAgIDEwNDYyMywgMTA0NjI4LCAxMDQ2MzMsIDEwNDYzOCwgMTA0NjQzLCAxMDQ2NDgsIDEwNDY1MywgMTA0NjU4LCAxMDQ2NjMsIAotICAgIDEwNDY2OCwgMTA0NjczLCAxMDQ2NzgsIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTMsIDEwNDY5OCwgMTA0NzAzLCAxMDQ3MDgsIAotICAgIDEwNDcxMywgMTA0NzE5LCAxMDQ3MjQsIDEwNDczMCwgMTA0NzM1LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUyLCAxMDQ3NTgsIAotICAgIDEwNDc2MiwgMTA0NzY3LCAxMDQ3NzEsIDAsIDEwNDc3NSwgMTA0NzgwLCAxMDQ3ODQsIDEwNDc4OCwgMTA0NzkyLCAKLSAgICAxMDQ3OTYsIDEwNDgwMCwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxMywgMTA0ODE4LCAxMDQ4MjMsIDEwNDgyNywgMTA0ODMyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzcsIDEwNDg0MSwgMTA0ODQ1LCAxMDQ4NDksIAotICAgIDEwNDg1MywgMTA0ODU3LCAxMDQ4NjEsIDEwNDg2NiwgMTA0ODcxLCAxMDQ4NzYsIDEwNDg4MSwgMTA0ODg2LCAxMDQ4OTEsIAotICAgIDEwNDg5NiwgMTA0OTAxLCAxMDQ5MDYsIDEwNDkxMSwgMTA0OTE2LCAxMDQ5MjEsIDEwNDkyNiwgMTA0OTMxLCAxMDQ5MzYsIAotICAgIDEwNDk0MSwgMTA0OTQ2LCAxMDQ5NTEsIDEwNDk1NSwgMTA0OTYwLCAxMDQ5NjUsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzksIAotICAgIDEwNDk4NCwgMTA0OTg5LCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAzLCAxMDUwMDgsIDEwNTAxMywgMTA1MDE4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDUwMjMsIDEwNTAyNywgMTA1MDMxLCAxMDUwMzUsIDEwNTAzOCwgMTA1MDQyLCAxMDUwNDUsIAotICAgIDEwNTA0OSwgMTA1MDUyLCAxMDUwNTYsIDEwNTA2MCwgMTA1MDY1LCAxMDUwNjksIDEwNTA3NCwgMTA1MDc3LCAxMDUwODEsIAotICAgIDEwNTA4NCwgMTA1MDg4LCAxMDUwOTEsIDEwNTA5NSwgMTA1MDk5LCAxMDUxMDMsIDEwNTEwNywgMTA1MTExLCAxMDUxMTUsIAotICAgIDEwNTExOSwgMTA1MTIzLCAxMDUxMjcsIDEwNTEzMSwgMTA1MTM1LCAxMDUxMzksIDEwNTE0MywgMTA1MTQ3LCAxMDUxNTEsIAotICAgIDEwNTE1NSwgMTA1MTU5LCAxMDUxNjMsIDEwNTE2NywgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODUsIAotICAgIDEwNTE4OCwgMTA1MTkyLCAxMDUxOTYsIDEwNTIwMCwgMTA1MjA0LCAxMDUyMDgsIDEwNTIxMiwgMTA1MjE2LCAxMDUyMTksIAotICAgIDEwNTIyNCwgMTA1MjI4LCAxMDUyMzMsIDEwNTIzNywgMTA1MjQyLCAxMDUyNDcsIDEwNTI1MywgMTA1MjU4LCAxMDUyNjQsIAotICAgIDEwNTI2OCwgMTA1MjczLCAxMDUyNzcsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDEsIAotICAgIDEwNTMwNCwgMTA1MzA4LCAxMDUzMTIsIDEwNTMxNSwgMTA1MzE5LCAxMDUzMjMsIDEwNTMyNywgMTA1MzM0LCAwLCAwLCAKLSAgICAxMDUzMzgsIDEwNTM0MiwgMTA1MzQ1LCAxMDUzNDgsIDEwNTM1MSwgMTA1MzU0LCAxMDUzNTcsIDEwNTM2MCwgMTA1MzY0LCAKLSAgICAxMDUzNjcsIDEwNTM3MSwgMTA1Mzc0LCAxMDUzNzgsIDEwNTM4MSwgMTA1Mzg1LCAxMDUzOTAsIDAsIDEwNTM5NSwgCi0gICAgMTA1NDAwLCAxMDU0MDUsIDEwNTQxMCwgMTA1NDE1LCAxMDU0MjAsIDEwNTQyNSwgMTA1NDMxLCAxMDU0MzYsIDEwNTQ0MiwgCi0gICAgMTA1NDQ4LCAxMDU0NTQsIDEwNTQ2MCwgMTA1NDY2LCAxMDU0NzIsIDEwNTQ3OCwgMTA1NDg0LCAxMDU0OTAsIDEwNTQ5NiwgCi0gICAgMTA1NTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjMsIAotICAgIDEwNTUyNywgMTA1NTMxLCAxMDU1MzYsIDEwNTU0MCwgMTA1NTQ1LCAxMDU1NDksIDEwNTU1NCwgMTA1NTU5LCAxMDU1NjQsIAotICAgIDEwNTU2OSwgMTA1NTc0LCAxMDU1NzksIDEwNTU4NCwgMTA1NTg5LCAwLCAxMDU1OTQsIDEwNTU5OSwgMTA1NjA0LCAKLSAgICAxMDU2MDksIDEwNTYxNCwgMTA1NjE5LCAxMDU2MjQsIDEwNTYyOSwgMTA1NjM0LCAxMDU2MzksIDEwNTY0NCwgMTA1NjQ5LCAKLSAgICAxMDU2NTQsIDEwNTY1OCwgMTA1NjYzLCAxMDU2NjgsIDEwNTY3MywgMTA1Njc4LCAxMDU2ODIsIDEwNTY4NiwgMTA1NjkxLCAKLSAgICAxMDU2OTYsIDEwNTcwMSwgMTA1NzA2LCAxMDU3MTAsIDEwNTcxNSwgMTA1NzIxLCAxMDU3MjYsIDEwNTczMiwgMTA1NzM3LCAKLSAgICAxMDU3NDIsIDEwNTc0OCwgMTA1NzUzLCAxMDU3NTksIDEwNTc2NCwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1NzgzLCAKLSAgICAxMDU3ODgsIDEwNTc5NCwgMTA1Nzk5LCAxMDU4MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDY1OSwgMTA0NjYzLCAKKyAgICAxMDQ2NjcsIDEwNDY3MSwgMTA0Njc1LCAxMDQ2NzksIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTIsIDEwNDY5NywgMTA0NzAyLCAKKyAgICAxMDQ3MDcsIDEwNDcxMiwgMTA0NzE3LCAxMDQ3MjIsIDEwNDcyNywgMTA0NzMyLCAxMDQ3MzcsIDEwNDc0MiwgMTA0NzQ4LCAKKyAgICAxMDQ3NTQsIDEwNDc2MCwgMTA0NzY3LCAxMDQ3NzQsIDEwNDc4MSwgMTA0Nzg4LCAxMDQ3OTUsIDEwNDgwMiwgMTA0ODA5LCAKKyAgICAxMDQ4MTYsIDEwNDgyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA1ODEwLCAxMDU4MTQsIDEwNTgxOCwgMTA1ODIyLCAxMDU4MjYsIDEwNTgzMCwgMTA1ODM1LCAwLCAKLSAgICAxMDU4NDAsIDAsIDEwNTg0NSwgMTA1ODUwLCAxMDU4NTUsIDEwNTg2MCwgMCwgMTA1ODY1LCAxMDU4NzAsIDEwNTg3NSwgCi0gICAgMTA1ODgwLCAxMDU4ODUsIDEwNTg5MCwgMTA1ODk1LCAxMDU5MDAsIDEwNTkwNSwgMTA1OTEwLCAxMDU5MTUsIDEwNTkyMCwgCi0gICAgMTA1OTI1LCAxMDU5MjksIDEwNTkzNCwgMCwgMTA1OTM5LCAxMDU5NDQsIDEwNTk0OCwgMTA1OTUyLCAxMDU5NTcsIAotICAgIDEwNTk2MiwgMTA1OTY3LCAxMDU5NzIsIDEwNTk3NiwgMTA1OTgxLCAxMDU5ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTk5MSwgCi0gICAgMTA1OTk1LCAxMDYwMDAsIDEwNjAwNCwgMTA2MDA5LCAxMDYwMTMsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjcsIDEwNjAzMSwgCi0gICAgMTA2MDM2LCAxMDYwNDAsIDEwNjA0NSwgMTA2MDUwLCAxMDYwNTUsIDEwNjA2MCwgMTA2MDY1LCAxMDYwNzAsIDEwNjA3NSwgCi0gICAgMTA2MDgwLCAxMDYwODUsIDEwNjA5MCwgMTA2MDk1LCAxMDYxMDAsIDEwNjEwNSwgMTA2MTEwLCAxMDYxMTUsIDEwNjEyMCwgCi0gICAgMTA2MTI1LCAxMDYxMzAsIDEwNjEzNSwgMTA2MTQwLCAxMDYxNDUsIDEwNjE1MCwgMTA2MTU1LCAxMDYxNTksIDEwNjE2NCwgCi0gICAgMTA2MTY5LCAxMDYxNzQsIDEwNjE3OSwgMTA2MTgzLCAxMDYxODcsIDEwNjE5MiwgMTA2MTk3LCAxMDYyMDIsIDEwNjIwNywgCi0gICAgMTA2MjEyLCAxMDYyMTYsIDEwNjIyMSwgMTA2MjI3LCAxMDYyMzIsIDEwNjIzOCwgMTA2MjQzLCAxMDYyNDksIDEwNjI1NCwgCi0gICAgMTA2MjYwLCAxMDYyNjUsIDEwNjI3MSwgMTA2Mjc2LCAwLCAwLCAwLCAwLCAwLCAxMDYyODEsIDEwNjI4NiwgMTA2MjkwLCAKLSAgICAxMDYyOTQsIDEwNjI5OCwgMTA2MzAyLCAxMDYzMDYsIDEwNjMxMCwgMTA2MzE1LCAxMDYzMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNjMyNCwgMTA2MzMxLCAxMDYzMzYsIDEwNjM0MSwgMCwgMTA2MzQ2LCAxMDYzNTAsIDEwNjM1NSwgMTA2MzU5LCAKLSAgICAxMDYzNjQsIDEwNjM2OCwgMTA2MzczLCAxMDYzNzgsIDAsIDAsIDEwNjM4MywgMTA2Mzg4LCAwLCAwLCAxMDYzOTMsIAotICAgIDEwNjM5OCwgMTA2NDAzLCAxMDY0MDcsIDEwNjQxMiwgMTA2NDE3LCAxMDY0MjIsIDEwNjQyNywgMTA2NDMyLCAxMDY0MzcsIAotICAgIDEwNjQ0MiwgMTA2NDQ3LCAxMDY0NTIsIDEwNjQ1NywgMTA2NDYyLCAxMDY0NjcsIDEwNjQ3MiwgMTA2NDc3LCAxMDY0ODIsIAotICAgIDEwNjQ4NywgMTA2NDkyLCAxMDY0OTcsIDAsIDEwNjUwMiwgMTA2NTA2LCAxMDY1MTEsIDEwNjUxNiwgMTA2NTIxLCAKLSAgICAxMDY1MjUsIDEwNjUyOSwgMCwgMTA2NTM0LCAxMDY1MzksIDAsIDEwNjU0NCwgMTA2NTQ5LCAxMDY1NTQsIDEwNjU1OSwgCi0gICAgMTA2NTY0LCAwLCAwLCAxMDY1NjgsIDEwNjU3MywgMTA2NTc4LCAxMDY1ODQsIDEwNjU4OSwgMTA2NTk1LCAxMDY2MDAsIAotICAgIDEwNjYwNiwgMTA2NjEyLCAwLCAwLCAxMDY2MTksIDEwNjYyNSwgMCwgMCwgMTA2NjMxLCAxMDY2MzcsIDEwNjY0MywgMCwgMCwgCi0gICAgMTA2NjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTIsIDAsIDAsIDAsIDAsIDAsIDEwNjY1OSwgMTA2NjY0LCAxMDY2NzEsIAotICAgIDEwNjY3OSwgMTA2Njg1LCAxMDY2OTEsIDEwNjY5NywgMCwgMCwgMTA2NzA0LCAxMDY3MTAsIDEwNjcxNSwgMTA2NzIwLCAKLSAgICAxMDY3MjUsIDEwNjczMCwgMTA2NzM1LCAwLCAwLCAwLCAxMDY3NDAsIDEwNjc0NSwgMTA2NzUwLCAxMDY3NTYsIDEwNjc2MiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0ODMwLCAxMDQ4MzQsIDEwNDgzOCwgMTA0ODQyLCAKKyAgICAxMDQ4NDYsIDEwNDg1MCwgMTA0ODUzLCAxMDQ4NTcsIDEwNDg2MCwgMTA0ODY0LCAxMDQ4NjcsIDEwNDg3MSwgMTA0ODc1LCAKKyAgICAxMDQ4ODAsIDEwNDg4NCwgMTA0ODg5LCAxMDQ4OTIsIDEwNDg5NiwgMTA0ODk5LCAxMDQ5MDMsIDEwNDkwNiwgMTA0OTEwLCAKKyAgICAxMDQ5MTQsIDEwNDkxOCwgMTA0OTIyLCAxMDQ5MjYsIDEwNDkzMCwgMTA0OTM0LCAxMDQ5MzgsIDEwNDk0MiwgMTA0OTQ2LCAKKyAgICAxMDQ5NTAsIDEwNDk1NCwgMTA0OTU4LCAxMDQ5NjIsIDEwNDk2NiwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OCwgMTA0OTgxLCAKKyAgICAxMDQ5ODQsIDEwNDk4OCwgMTA0OTkyLCAxMDQ5OTYsIDEwNDk5OSwgMTA1MDAyLCAxMDUwMDYsIDEwNTAwOSwgMTA1MDEzLCAKKyAgICAxMDUwMTcsIDEwNTAyMSwgMTA1MDI1LCAxMDUwMjgsIDEwNTAzMiwgMTA1MDM4LCAxMDUwNDQsIDEwNTA1MCwgMTA1MDU1LCAKKyAgICAxMDUwNjIsIDEwNTA2NiwgMTA1MDcxLCAxMDUwNzUsIDEwNTA4MCwgMTA1MDg1LCAxMDUwOTEsIDEwNTA5NiwgMTA1MTAyLCAKKyAgICAxMDUxMDYsIDEwNTExMSwgMTA1MTE1LCAxMDUxMjAsIDEwNTEyMywgMTA1MTI2LCAxMDUxMzAsIDEwNTEzNSwgMTA1MTQxLCAKKyAgICAxMDUxNDYsIDEwNTE1MiwgMCwgMCwgMCwgMCwgMTA1MTU3LCAxMDUxNjAsIDEwNTE2MywgMTA1MTY2LCAxMDUxNjksIAorICAgIDEwNTE3MiwgMTA1MTc1LCAxMDUxNzksIDEwNTE4MiwgMTA1MTg2LCAxMDUxOTAsIDEwNTE5NCwgMTA1MTk4LCAxMDUyMDIsIAorICAgIDEwNTIwNiwgMTA1MjEwLCAxMDUyMTQsIDEwNTIxOCwgMTA1MjIyLCAxMDUyMjcsIDEwNTIzMiwgMTA1MjM2LCAxMDUyMzksIAorICAgIDEwNTI0MiwgMTA1MjQ1LCAxMDUyNDgsIDEwNTI1MSwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MjY1LCAxMDUyNjksIDEwNTI3NCwgMTA1Mjc5LCAxMDUyODQsIAorICAgIDEwNTI4OCwgMTA1MjkzLCAxMDUyOTcsIDEwNTMwMiwgMTA1MzA2LCAxMDUzMTEsIDEwNTMxNSwgMTA1MzIwLCAxMDUzMjQsIAorICAgIDEwNTMyOSwgMTA1MzMzLCAxMDUzMzgsIDEwNTM0MywgMTA1MzQ4LCAxMDUzNTMsIDEwNTM1OCwgMTA1MzYzLCAxMDUzNjgsIAorICAgIDEwNTM3MywgMTA1Mzc4LCAxMDUzODMsIDEwNTM4OCwgMTA1MzkzLCAxMDUzOTgsIDEwNTQwMywgMTA1NDA4LCAxMDU0MTMsIAorICAgIDEwNTQxOCwgMTA1NDIzLCAxMDU0MjgsIDEwNTQzMywgMTA1NDM3LCAxMDU0NDEsIDEwNTQ0NiwgMTA1NDUxLCAxMDU0NTYsIAorICAgIDEwNTQ2MCwgMTA1NDY0LCAxMDU0NjksIDEwNTQ3MywgMTA1NDc4LCAxMDU0ODMsIDEwNTQ4OCwgMTA1NDkzLCAxMDU0OTcsIAorICAgIDEwNTUwMywgMTA1NTA4LCAxMDU1MTQsIDEwNTUxOSwgMTA1NTI1LCAxMDU1MzAsIDEwNTUzNiwgMTA1NTQxLCAxMDU1NDcsIAorICAgIDEwNTU1MiwgMTA1NTU3LCAxMDU1NjIsIDEwNTU2NywgMTA1NTcxLCAxMDU1NzYsIDEwNTU4MiwgMTA1NTg2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1OTEsIDEwNTU5OCwgMTA1NjA1LCAxMDU2MTIsIDEwNTYxOSwgCisgICAgMTA1NjI2LCAxMDU2MzMsIDEwNTY0MCwgMTA1NjQ3LCAxMDU2NTQsIDEwNTY2MSwgMTA1NjY4LCAxMDU2NzUsIDEwNTY4MiwgCisgICAgMTA1Njg5LCAxMDU2OTYsIDEwNTcwMywgMTA1NzEwLCAxMDU3MTcsIDEwNTcyNCwgMTA1NzMxLCAxMDU3MzgsIDEwNTc0NSwgCisgICAgMTA1NzUyLCAxMDU3NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTc2NiwgMTA1NzczLCAxMDU3NzksIDEwNTc4NSwgCisgICAgMTA1NzkxLCAxMDU3OTcsIDEwNTgwMywgMTA1ODA5LCAxMDU4MTYsIDEwNTgyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1ODI5LCAKKyAgICAxMDU4MzQsIDEwNTgzOSwgMTA1ODQ0LCAxMDU4NDksIDEwNTg1MywgMTA1ODU3LCAxMDU4NjEsIDEwNTg2NiwgMTA1ODcxLCAKKyAgICAxMDU4NzYsIDEwNTg4MSwgMTA1ODg2LCAxMDU4OTEsIDEwNTg5NiwgMTA1OTAxLCAxMDU5MDYsIDEwNTkxMSwgMTA1OTE2LCAKKyAgICAxMDU5MjEsIDEwNTkyNiwgMTA1OTMxLCAxMDU5MzYsIDEwNTk0MSwgMTA1OTQ2LCAxMDU5NTEsIDEwNTk1NiwgMTA1OTYxLCAKKyAgICAxMDU5NjYsIDEwNTk3MSwgMTA1OTc2LCAxMDU5ODEsIDEwNTk4NiwgMTA1OTkxLCAxMDU5OTYsIDEwNjAwMSwgMTA2MDA2LCAKKyAgICAxMDYwMTEsIDEwNjAxNiwgMTA2MDIxLCAxMDYwMjYsIDEwNjAzMSwgMTA2MDM3LCAxMDYwNDIsIDEwNjA0OCwgMTA2MDUzLCAKKyAgICAxMDYwNTksIDEwNjA2NCwgMTA2MDcwLCAxMDYwNzYsIDEwNjA4MCwgMTA2MDg1LCAxMDYwODksIDAsIDEwNjA5MywgCisgICAgMTA2MDk4LCAxMDYxMDIsIDEwNjEwNiwgMTA2MTEwLCAxMDYxMTQsIDEwNjExOCwgMTA2MTIyLCAxMDYxMjcsIDEwNjEzMSwgCisgICAgMTA2MTM2LCAxMDYxNDEsIDEwNjE0NSwgMTA2MTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDYxNTUsIDEwNjE1OSwgMTA2MTYzLCAxMDYxNjcsIDEwNjE3MSwgMTA2MTc1LCAxMDYxNzksIDEwNjE4NCwgMTA2MTg5LCAKKyAgICAxMDYxOTQsIDEwNjE5OSwgMTA2MjA0LCAxMDYyMDksIDEwNjIxNCwgMTA2MjE5LCAxMDYyMjQsIDEwNjIyOSwgMTA2MjM0LCAKKyAgICAxMDYyMzksIDEwNjI0NCwgMTA2MjQ5LCAxMDYyNTQsIDEwNjI1OSwgMTA2MjY0LCAxMDYyNjgsIDEwNjI3MiwgMTA2Mjc3LCAKKyAgICAxMDYyODIsIDEwNjI4NywgMTA2MjkxLCAxMDYyOTYsIDEwNjMwMCwgMTA2MzA1LCAxMDYzMTAsIDEwNjMxNCwgMTA2MzE5LCAKKyAgICAxMDYzMjQsIDEwNjMyOSwgMTA2MzM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDYzMzksIDEwNjM0MywgCisgICAgMTA2MzQ3LCAxMDYzNTEsIDEwNjM1NCwgMTA2MzU4LCAxMDYzNjEsIDEwNjM2NSwgMTA2MzY4LCAxMDYzNzIsIDEwNjM3NiwgCisgICAgMTA2MzgxLCAxMDYzODUsIDEwNjM5MCwgMTA2MzkzLCAxMDYzOTcsIDEwNjQwMCwgMTA2NDA0LCAxMDY0MDcsIDEwNjQxMSwgCisgICAgMTA2NDE1LCAxMDY0MTksIDEwNjQyMywgMTA2NDI3LCAxMDY0MzEsIDEwNjQzNSwgMTA2NDM5LCAxMDY0NDMsIDEwNjQ0NywgCisgICAgMTA2NDUxLCAxMDY0NTUsIDEwNjQ1OSwgMTA2NDYzLCAxMDY0NjcsIDEwNjQ3MSwgMTA2NDc1LCAxMDY0NzksIDEwNjQ4MiwgCisgICAgMTA2NDg1LCAxMDY0ODksIDEwNjQ5MywgMTA2NDk3LCAxMDY1MDAsIDEwNjUwMywgMTA2NTA3LCAxMDY1MTAsIDEwNjUxNCwgCisgICAgMTA2NTE4LCAxMDY1MjIsIDEwNjUyNiwgMTA2NTMwLCAxMDY1MzMsIDEwNjUzOCwgMTA2NTQyLCAxMDY1NDcsIDEwNjU1MSwgCisgICAgMTA2NTU2LCAxMDY1NjEsIDEwNjU2NywgMTA2NTcyLCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg3LCAxMDY1OTEsIDEwNjU5NiwgCisgICAgMTA2NjAwLCAxMDY2MDQsIDEwNjYwOCwgMTA2NjEyLCAxMDY2MTUsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYyOSwgCisgICAgMTA2NjMzLCAxMDY2MzcsIDEwNjY0MSwgMTA2NjQ4LCAwLCAwLCAxMDY2NTIsIDEwNjY1NiwgMTA2NjU5LCAxMDY2NjIsIAorICAgIDEwNjY2NSwgMTA2NjY4LCAxMDY2NzEsIDEwNjY3NCwgMTA2Njc4LCAxMDY2ODEsIDEwNjY4NSwgMTA2Njg4LCAxMDY2OTIsIAorICAgIDEwNjY5NSwgMTA2Njk5LCAxMDY3MDQsIDAsIDEwNjcwOSwgMTA2NzE0LCAxMDY3MTksIDEwNjcyNCwgMTA2NzI5LCAKKyAgICAxMDY3MzQsIDEwNjczOSwgMTA2NzQ1LCAxMDY3NTAsIDEwNjc1NiwgMTA2NzYyLCAxMDY3NjgsIDEwNjc3NCwgMTA2NzgwLCAKKyAgICAxMDY3ODYsIDEwNjc5MiwgMTA2Nzk4LCAxMDY4MDQsIDEwNjgxMCwgMTA2ODE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDY4MjQsIDEwNjgyOCwgMTA2ODMzLCAxMDY4MzcsIDEwNjg0MSwgMTA2ODQ1LCAxMDY4NTAsIDEwNjg1NCwgCisgICAgMTA2ODU5LCAxMDY4NjMsIDEwNjg2OCwgMTA2ODczLCAxMDY4NzgsIDEwNjg4MywgMTA2ODg4LCAxMDY4OTMsIDEwNjg5OCwgCisgICAgMTA2OTAzLCAwLCAxMDY5MDgsIDEwNjkxMywgMTA2OTE4LCAxMDY5MjMsIDEwNjkyOCwgMTA2OTMzLCAxMDY5MzgsIAorICAgIDEwNjk0MywgMTA2OTQ4LCAxMDY5NTMsIDEwNjk1OCwgMTA2OTYzLCAxMDY5NjcsIDEwNjk3MSwgMTA2OTc2LCAxMDY5ODEsIAorICAgIDEwNjk4NiwgMTA2OTkxLCAxMDY5OTUsIDEwNjk5OSwgMTA3MDA0LCAxMDcwMDgsIDEwNzAxMywgMTA3MDE4LCAxMDcwMjIsIAorICAgIDEwNzAyNywgMTA3MDMzLCAxMDcwMzgsIDEwNzA0NCwgMTA3MDQ5LCAxMDcwNTQsIDEwNzA2MCwgMTA3MDY1LCAxMDcwNzEsIAorICAgIDEwNzA3NiwgMTA3MDgxLCAxMDcwODYsIDEwNzA5MSwgMTA3MDk1LCAxMDcxMDAsIDEwNzEwNiwgMTA3MTExLCAxMDcxMTcsIAorICAgIDEwNzEyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTI3LCAxMDcxMzEsIAorICAgIDEwNzEzNSwgMTA3MTM5LCAxMDcxNDMsIDEwNzE0NywgMTA3MTUyLCAwLCAxMDcxNTcsIDAsIDEwNzE2MiwgMTA3MTY3LCAKKyAgICAxMDcxNzIsIDEwNzE3NywgMCwgMTA3MTgyLCAxMDcxODcsIDEwNzE5MiwgMTA3MTk3LCAxMDcyMDIsIDEwNzIwNywgCisgICAgMTA3MjEyLCAxMDcyMTcsIDEwNzIyMiwgMTA3MjI3LCAxMDcyMzIsIDEwNzIzNywgMTA3MjQxLCAxMDcyNDUsIDEwNzI1MCwgCisgICAgMCwgMTA3MjU1LCAxMDcyNjAsIDEwNzI2NCwgMTA3MjY4LCAxMDcyNzMsIDEwNzI3NywgMTA3MjgyLCAxMDcyODcsIAorICAgIDEwNzI5MSwgMTA3Mjk2LCAxMDczMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzMwNiwgMTA3MzEwLCAxMDczMTUsIDEwNzMxOSwgCisgICAgMTA3MzI0LCAxMDczMjgsIDEwNzMzMywgMTA3MzM3LCAxMDczNDIsIDEwNzM0NiwgMTA3MzUxLCAxMDczNTUsIDEwNzM2MCwgCisgICAgMTA3MzY1LCAxMDczNzAsIDEwNzM3NSwgMTA3MzgwLCAxMDczODUsIDEwNzM5MCwgMTA3Mzk1LCAxMDc0MDAsIDEwNzQwNSwgCisgICAgMTA3NDEwLCAxMDc0MTUsIDEwNzQyMCwgMTA3NDI1LCAxMDc0MzAsIDEwNzQzNSwgMTA3NDQwLCAxMDc0NDUsIDEwNzQ1MCwgCisgICAgMTA3NDU1LCAxMDc0NjAsIDEwNzQ2NSwgMTA3NDY5LCAxMDc0NzMsIDEwNzQ3OCwgMTA3NDgzLCAxMDc0ODgsIDEwNzQ5MywgCisgICAgMTA3NDk3LCAxMDc1MDEsIDEwNzUwNiwgMTA3NTEwLCAxMDc1MTUsIDEwNzUyMCwgMTA3NTI1LCAxMDc1MjksIDEwNzUzNCwgCisgICAgMTA3NTQwLCAxMDc1NDUsIDEwNzU1MSwgMTA3NTU2LCAxMDc1NjIsIDEwNzU2NywgMTA3NTczLCAxMDc1NzgsIDEwNzU4NCwgCisgICAgMTA3NTg5LCAwLCAwLCAwLCAwLCAwLCAxMDc1OTQsIDEwNzU5OSwgMTA3NjAzLCAxMDc2MDcsIDEwNzYxMSwgMTA3NjE1LCAKKyAgICAxMDc2MTksIDEwNzYyMywgMTA3NjI4LCAxMDc2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzYzNywgMTA3NjQ0LCAxMDc2NDksIAorICAgIDEwNzY1NCwgMCwgMTA3NjU5LCAxMDc2NjMsIDEwNzY2OCwgMTA3NjcyLCAxMDc2NzcsIDEwNzY4MSwgMTA3Njg2LCAKKyAgICAxMDc2OTEsIDAsIDAsIDEwNzY5NiwgMTA3NzAxLCAwLCAwLCAxMDc3MDYsIDEwNzcxMSwgMTA3NzE2LCAxMDc3MjAsIAorICAgIDEwNzcyNSwgMTA3NzMwLCAxMDc3MzUsIDEwNzc0MCwgMTA3NzQ1LCAxMDc3NTAsIDEwNzc1NSwgMTA3NzYwLCAxMDc3NjUsIAorICAgIDEwNzc3MCwgMTA3Nzc1LCAxMDc3ODAsIDEwNzc4NSwgMTA3NzkwLCAxMDc3OTUsIDEwNzgwMCwgMTA3ODA1LCAxMDc4MTAsIAorICAgIDAsIDEwNzgxNCwgMTA3ODE4LCAxMDc4MjMsIDEwNzgyOCwgMTA3ODMzLCAxMDc4MzcsIDEwNzg0MSwgMCwgMTA3ODQ2LCAKKyAgICAxMDc4NTAsIDAsIDEwNzg1NSwgMTA3ODYwLCAxMDc4NjUsIDEwNzg3MCwgMTA3ODc1LCAwLCAwLCAxMDc4NzksIDEwNzg4NCwgCisgICAgMTA3ODg5LCAxMDc4OTUsIDEwNzkwMCwgMTA3OTA2LCAxMDc5MTEsIDEwNzkxNywgMTA3OTIzLCAwLCAwLCAxMDc5MzAsIAorICAgIDEwNzkzNiwgMCwgMCwgMTA3OTQyLCAxMDc5NDgsIDEwNzk1NCwgMCwgMCwgMTA3OTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDc5NjMsIDAsIDAsIDAsIDAsIDAsIDEwNzk3MCwgMTA3OTc1LCAxMDc5ODIsIDEwNzk5MCwgMTA3OTk2LCAxMDgwMDIsIAorICAgIDEwODAwOCwgMCwgMCwgMTA4MDE1LCAxMDgwMjEsIDEwODAyNiwgMTA4MDMxLCAxMDgwMzYsIDEwODA0MSwgMTA4MDQ2LCAwLCAKKyAgICAwLCAwLCAxMDgwNTEsIDEwODA1NiwgMTA4MDYxLCAxMDgwNjYsIDEwODA3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MDc3LCAxMDgwODAsIDEwODA4NCwgMTA4MDg3LCAxMDgwOTEsIAorICAgIDEwODA5NCwgMTA4MDk4LCAxMDgxMDIsIDEwODEwNywgMTA4MTExLCAxMDgxMTYsIDEwODExOSwgMTA4MTIzLCAxMDgxMjYsIAorICAgIDEwODEzMCwgMTA4MTMzLCAxMDgxMzcsIDEwODE0MSwgMTA4MTQ1LCAxMDgxNDksIDEwODE1MywgMTA4MTU3LCAxMDgxNjEsIAorICAgIDEwODE2NSwgMTA4MTY5LCAxMDgxNzMsIDEwODE3NywgMTA4MTgxLCAxMDgxODUsIDEwODE4OSwgMTA4MTkzLCAxMDgxOTcsIAorICAgIDEwODIwMSwgMTA4MjA1LCAxMDgyMDksIDEwODIxMywgMTA4MjE2LCAxMDgyMjAsIDEwODIyMywgMTA4MjI3LCAxMDgyMzEsIAorICAgIDEwODIzNSwgMTA4MjM4LCAxMDgyNDIsIDEwODI0NSwgMTA4MjQ5LCAxMDgyNTMsIDEwODI1NiwgMTA4MjYwLCAxMDgyNjQsIAorICAgIDEwODI2OCwgMTA4MjcyLCAxMDgyNzYsIDEwODI3OSwgMTA4Mjg0LCAxMDgyODgsIDEwODI5MywgMTA4Mjk3LCAxMDgzMDIsIAorICAgIDEwODMwNywgMTA4MzEzLCAxMDgzMTgsIDEwODMyNCwgMTA4MzI4LCAxMDgzMzMsIDEwODMzNywgMTA4MzQyLCAxMDgzNDYsIAorICAgIDEwODM1MCwgMTA4MzU0LCAxMDgzNTgsIDEwODM2MiwgMTA4MzY2LCAxMDgzNzEsIDEwODM3NCwgMTA4Mzc3LCAxMDgzODAsIAorICAgIDEwODM4NCwgMTA4Mzg3LCAxMDgzOTIsIDEwODM5NiwgMTA4NDAwLCAxMDg0MDMsIDEwODQwNiwgMTA4NDA5LCAxMDg0MTIsIAorICAgIDEwODQxNSwgMTA4NDE4LCAxMDg0MjIsIDEwODQyNSwgMCwgMTA4NDI5LCAwLCAxMDg0MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwODQzNywgMTA4NDQxLCAxMDg0NDUsIDEwODQ1MCwgMTA4NDU0LCAxMDg0NTksIDEwODQ2MywgCisgICAgMTA4NDY4LCAxMDg0NzMsIDEwODQ3OSwgMTA4NDg0LCAxMDg0OTAsIDEwODQ5NCwgMTA4NDk5LCAxMDg1MDMsIDEwODUwOCwgCisgICAgMTA4NTEyLCAxMDg1MTcsIDEwODUyMiwgMTA4NTI3LCAxMDg1MzIsIDEwODUzNywgMTA4NTQyLCAxMDg1NDcsIDEwODU1MiwgCisgICAgMTA4NTU3LCAxMDg1NjIsIDEwODU2NywgMTA4NTcyLCAxMDg1NzcsIDEwODU4MiwgMTA4NTg3LCAxMDg1OTIsIDEwODU5NywgCisgICAgMTA4NjAyLCAxMDg2MDYsIDEwODYxMCwgMTA4NjE1LCAxMDg2MjAsIDEwODYyNSwgMTA4NjI5LCAxMDg2MzMsIDEwODYzOCwgCisgICAgMTA4NjQyLCAxMDg2NDcsIDEwODY1MiwgMTA4NjU3LCAxMDg2NjIsIDEwODY2NiwgMTA4NjcyLCAxMDg2NzcsIDEwODY4MywgCisgICAgMTA4Njg4LCAxMDg2OTQsIDEwODcwMCwgMTA4NzA3LCAxMDg3MTMsIDEwODcyMCwgMTA4NzI1LCAxMDg3MzIsIDEwODczOCwgCisgICAgMTA4NzQzLCAxMDg3NTAsIDEwODc1NiwgMTA4NzYxLCAxMDg3NjYsIDEwODc3MSwgMTA4Nzc2LCAxMDg3ODEsIDEwODc4NiwgCisgICAgMTA4NzkwLCAxMDg3OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODc5OSwgMTA4ODA0LCAxMDg4MDgsIDEwODgxMiwgCisgICAgMTA4ODE2LCAxMDg4MjAsIDEwODgyNCwgMTA4ODI4LCAxMDg4MzMsIDEwODgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTA2NzY3LCAxMDY3NzEsIDEwNjc3NSwgMTA2NzgwLCAxMDY3ODQsIDEwNjc4OSwgMTA2NzkzLCAxMDY3OTgsIAotICAgIDEwNjgwMywgMTA2ODA5LCAxMDY4MTQsIDEwNjgyMCwgMTA2ODI0LCAxMDY4MjksIDEwNjgzMywgMTA2ODM4LCAxMDY4NDIsIAotICAgIDEwNjg0NywgMTA2ODUyLCAxMDY4NTcsIDEwNjg2MiwgMTA2ODY3LCAxMDY4NzIsIDEwNjg3NywgMTA2ODgyLCAxMDY4ODcsIAotICAgIDEwNjg5MiwgMTA2ODk3LCAxMDY5MDIsIDEwNjkwNywgMTA2OTEyLCAxMDY5MTcsIDEwNjkyMiwgMTA2OTI3LCAxMDY5MzIsIAotICAgIDEwNjkzNywgMTA2OTQxLCAxMDY5NDYsIDEwNjk1MSwgMTA2OTU2LCAxMDY5NjAsIDEwNjk2NCwgMTA2OTY5LCAxMDY5NzQsIAotICAgIDEwNjk3OSwgMTA2OTg0LCAxMDY5ODksIDEwNjk5NCwgMTA2OTk4LCAxMDcwMDQsIDEwNzAwOSwgMTA3MDE1LCAxMDcwMjAsIAotICAgIDEwNzAyNiwgMTA3MDMyLCAxMDcwMzksIDEwNzA0NSwgMTA3MDUyLCAxMDcwNTcsIDEwNzA2NCwgMTA3MDcwLCAxMDcwNzUsIAotICAgIDEwNzA4MiwgMTA3MDg4LCAxMDcwOTMsIDEwNzA5OCwgMTA3MTAzLCAxMDcxMDgsIDEwNzExMywgMTA3MTE4LCAxMDcxMjIsIAotICAgIDEwNzEyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTMxLCAxMDcxMzYsIDEwNzE0MCwgMTA3MTQ0LCAxMDcxNDgsIAotICAgIDEwNzE1MiwgMTA3MTU2LCAxMDcxNjAsIDEwNzE2NSwgMTA3MTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDg4NDIsIDEwODg0NSwgMTA4ODQ5LCAxMDg4NTIsIAorICAgIDEwODg1NiwgMTA4ODU5LCAxMDg4NjMsIDEwODg2NywgMTA4ODcyLCAxMDg4NzYsIDEwODg4MSwgMTA4ODg0LCAxMDg4ODgsIAorICAgIDEwODg5MSwgMTA4ODk1LCAxMDg4OTgsIDEwODkwMiwgMTA4OTA2LCAxMDg5MTAsIDEwODkxNCwgMTA4OTE4LCAxMDg5MjIsIAorICAgIDEwODkyNiwgMTA4OTMwLCAxMDg5MzQsIDEwODkzOCwgMTA4OTQyLCAxMDg5NDYsIDEwODk1MCwgMTA4OTU0LCAxMDg5NTgsIAorICAgIDEwODk2MiwgMTA4OTY2LCAxMDg5NzAsIDEwODk3MywgMTA4OTc2LCAxMDg5ODAsIDEwODk4NCwgMTA4OTg4LCAxMDg5OTEsIAorICAgIDEwODk5NCwgMTA4OTk4LCAxMDkwMDEsIDEwOTAwNSwgMTA5MDA5LCAxMDkwMTMsIDEwOTAxNywgMTA5MDIwLCAxMDkwMjUsIAorICAgIDEwOTAyOSwgMTA5MDM0LCAxMDkwMzgsIDEwOTA0MywgMTA5MDQ4LCAwLCAwLCAxMDkwNTQsIDEwOTA1OCwgMTA5MDYzLCAKKyAgICAxMDkwNjcsIDEwOTA3MiwgMTA5MDc2LCAxMDkwODAsIDEwOTA4NCwgMTA5MDg4LCAxMDkwOTIsIDEwOTA5NiwgMTA5MDk5LCAKKyAgICAxMDkxMDMsIDEwOTEwOCwgMTA5MTEyLCAxMDkxMTcsIDEwOTEyMiwgMTA5MTI3LCAxMDkxMzQsIDEwOTE0NiwgMTA5MTU4LCAKKyAgICAxMDkxNzAsIDEwOTE4MywgMTA5MTk3LCAxMDkyMDQsIDEwOTIxNCwgMTA5MjIyLCAxMDkyMzEsIDEwOTI0MCwgMTA5MjQ5LCAKKyAgICAxMDkyNTksIDEwOTI3MCwgMTA5MjgyLCAxMDkyODksIDEwOTI5NiwgMTA5MzA0LCAxMDkzMDksIDEwOTMxNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTc0LCAxMDcxNzcsIDEwNzE4MSwgMTA3MTg0LCAxMDcxODgsIAotICAgIDEwNzE5MSwgMTA3MTk1LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA4LCAxMDcyMTMsIDEwNzIxNiwgMTA3MjIwLCAxMDcyMjMsIAotICAgIDEwNzIyNywgMTA3MjMwLCAxMDcyMzQsIDEwNzIzOCwgMTA3MjQyLCAxMDcyNDYsIDEwNzI1MCwgMTA3MjU0LCAxMDcyNTgsIAotICAgIDEwNzI2MiwgMTA3MjY2LCAxMDcyNzAsIDEwNzI3NCwgMTA3Mjc4LCAxMDcyODIsIDEwNzI4NiwgMTA3MjkwLCAxMDcyOTQsIAotICAgIDEwNzI5OCwgMTA3MzAyLCAxMDczMDYsIDEwNzMwOSwgMTA3MzEzLCAxMDczMTcsIDEwNzMyMSwgMTA3MzI0LCAxMDczMjcsIAotICAgIDEwNzMzMSwgMTA3MzM1LCAxMDczMzksIDEwNzM0MywgMTA3MzQ3LCAxMDczNTEsIDEwNzM1NCwgMTA3MzU5LCAxMDczNjMsIAotICAgIDEwNzM2OCwgMTA3MzcyLCAxMDczNzcsIDEwNzM4MiwgMCwgMCwgMTA3Mzg4LCAxMDczOTIsIDEwNzM5NywgMTA3NDAxLCAKLSAgICAxMDc0MDYsIDEwNzQxMCwgMTA3NDE0LCAxMDc0MTgsIDEwNzQyMiwgMTA3NDI2LCAxMDc0MzAsIDEwNzQzMywgMTA3NDM3LCAKLSAgICAxMDc0NDIsIDEwNzQ0NiwgMTA3NDUxLCAxMDc0NTYsIDEwNzQ2MSwgMTA3NDY4LCAxMDc0ODAsIDEwNzQ5MiwgMTA3NTA0LCAKLSAgICAxMDc1MTcsIDEwNzUzMSwgMTA3NTM4LCAxMDc1NDgsIDEwNzU1NiwgMTA3NTY1LCAxMDc1NzQsIDEwNzU4MywgMTA3NTkzLCAKLSAgICAxMDc2MDQsIDEwNzYxNiwgMTA3NjIzLCAxMDc2MzAsIDEwNzYzOCwgMTA3NjQzLCAxMDc2NDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTMyMiwgMTA5MzI2LCAxMDkzMzEsIDEwOTMzNSwgMTA5MzQwLCAxMDkzNDQsIAorICAgIDEwOTM0OSwgMTA5MzU0LCAxMDkzNjAsIDEwOTM2NSwgMTA5MzcxLCAxMDkzNzUsIDEwOTM4MCwgMTA5Mzg0LCAxMDkzODksIAorICAgIDEwOTM5MywgMTA5Mzk4LCAxMDk0MDMsIDEwOTQwOCwgMTA5NDEzLCAxMDk0MTgsIDEwOTQyMywgMTA5NDI4LCAxMDk0MzMsIAorICAgIDEwOTQzOCwgMTA5NDQzLCAxMDk0NDgsIDEwOTQ1MywgMTA5NDU4LCAxMDk0NjMsIDEwOTQ2OCwgMTA5NDczLCAxMDk0NzgsIAorICAgIDEwOTQ4MywgMTA5NDg3LCAxMDk0OTEsIDEwOTQ5NiwgMTA5NTAxLCAxMDk1MDYsIDEwOTUxMCwgMTA5NTE0LCAxMDk1MTksIAorICAgIDEwOTUyMywgMTA5NTI4LCAxMDk1MzMsIDEwOTUzOCwgMTA5NTQzLCAxMDk1NDcsIDEwOTU1MiwgMTA5NTU4LCAxMDk1NjMsIAorICAgIDEwOTU2OSwgMTA5NTc0LCAxMDk1ODAsIDEwOTU4NiwgMTA5NTkzLCAxMDk1OTksIDEwOTYwNiwgMTA5NjExLCAxMDk2MTcsIAorICAgIDEwOTYyMiwgMTA5NjI4LCAxMDk2MzMsIDEwOTYzOCwgMTA5NjQzLCAxMDk2NDgsIDEwOTY1MiwgMTA5NjU3LCAxMDk2NjIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTY2NywgMTA5NjcyLCAxMDk2NzYsIDEwOTY4MCwgMTA5Njg0LCAKKyAgICAxMDk2ODgsIDEwOTY5MiwgMTA5Njk2LCAxMDk3MDEsIDEwOTcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5NzEwLCAxMDk3MTYsIAorICAgIDEwOTcyMSwgMTA5NzI4LCAxMDk3MzYsIDEwOTc0MywgMTA5NzUxLCAxMDk3NjAsIDEwOTc2NSwgMTA5Nzc0LCAxMDk3NzksIAorICAgIDEwOTc4NywgMTA5Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDk4MDcsIDEwOTgxMSwgMTA5ODE2LCAxMDk4MjAsIDEwOTgyNSwgMTA5ODI5LCAxMDk4MzQsIDEwOTgzOCwgMTA5ODQzLCAKKyAgICAxMDk4NDcsIDEwOTg1MiwgMTA5ODU2LCAxMDk4NjEsIDEwOTg2NiwgMTA5ODcxLCAxMDk4NzYsIDEwOTg4MSwgMTA5ODg2LCAKKyAgICAxMDk4OTEsIDEwOTg5NiwgMTA5OTAxLCAxMDk5MDYsIDEwOTkxMSwgMTA5OTE2LCAxMDk5MjEsIDEwOTkyNiwgMTA5OTMxLCAKKyAgICAxMDk5MzYsIDEwOTk0MSwgMTA5OTQ2LCAxMDk5NTAsIDEwOTk1NCwgMTA5OTU5LCAxMDk5NjQsIDEwOTk2OSwgMTA5OTczLCAKKyAgICAxMDk5NzcsIDEwOTk4MiwgMTA5OTg2LCAxMDk5OTEsIDEwOTk5NiwgMTEwMDAxLCAxMTAwMDUsIDExMDAxMCwgMTEwMDE1LCAKKyAgICAxMTAwMjAsIDExMDAyNiwgMTEwMDMxLCAxMTAwMzcsIDExMDA0MiwgMTEwMDQ4LCAxMTAwNTMsIDExMDA1OSwgMTEwMDY0LCAKKyAgICAxMTAwNzAsIDExMDA3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMDgwLCAxMTAwODUsIDExMDA4OSwgMTEwMDkzLCAKKyAgICAxMTAwOTcsIDExMDEwMSwgMTEwMTA1LCAxMTAxMDksIDExMDExNCwgMTEwMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDc2NTYsIDEwNzY2MCwgMTA3NjY1LCAxMDc2NjksIDEwNzY3NCwgMTA3Njc4LCAxMDc2ODMsIAotICAgIDEwNzY4OCwgMTA3Njk0LCAxMDc2OTksIDEwNzcwNSwgMTA3NzA5LCAxMDc3MTQsIDEwNzcxOCwgMTA3NzIzLCAxMDc3MjcsIAotICAgIDEwNzczMiwgMTA3NzM3LCAxMDc3NDIsIDEwNzc0NywgMTA3NzUyLCAxMDc3NTcsIDEwNzc2MiwgMTA3NzY3LCAxMDc3NzIsIAotICAgIDEwNzc3NywgMTA3NzgyLCAxMDc3ODcsIDEwNzc5MiwgMTA3Nzk3LCAxMDc4MDIsIDEwNzgwNywgMTA3ODEyLCAxMDc4MTcsIAotICAgIDEwNzgyMiwgMTA3ODI2LCAxMDc4MzEsIDEwNzgzNiwgMTA3ODQxLCAxMDc4NDUsIDEwNzg0OSwgMTA3ODU0LCAxMDc4NTksIAotICAgIDEwNzg2NCwgMTA3ODY5LCAxMDc4NzQsIDEwNzg3OSwgMTA3ODgzLCAxMDc4ODgsIDEwNzg5NCwgMTA3ODk5LCAxMDc5MDUsIAotICAgIDEwNzkxMCwgMTA3OTE2LCAxMDc5MjIsIDEwNzkyOSwgMTA3OTM1LCAxMDc5NDIsIDEwNzk0NywgMTA3OTUzLCAxMDc5NTgsIAotICAgIDEwNzk2NCwgMTA3OTY5LCAxMDc5NzQsIDEwNzk3OSwgMTA3OTg0LCAxMDc5ODgsIDEwNzk5MywgMTA3OTk4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgwMDMsIDEwODAwOCwgMTA4MDEyLCAxMDgwMTYsIDEwODAyMCwgMTA4MDI0LCAKLSAgICAxMDgwMjgsIDEwODAzMiwgMTA4MDM3LCAxMDgwNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDEyMywgCisgICAgMTEwMTI3LCAxMTAxMzIsIDExMDEzNywgMTEwMTQxLCAxMTAxNDYsIDExMDE1MywgMTEwMTU3LCAxMTAxNjIsIDExMDE2NywgCisgICAgMTEwMTcxLCAxMTAxNzYsIDExMDE4MSwgMTEwMTg2LCAxMTAxOTEsIDExMDE5NSwgMTEwMjAwLCAxMTAyMDUsIDExMDIwOSwgCisgICAgMTEwMjEzLCAxMTAyMTgsIDExMDIyMywgMTEwMjI4LCAxMTAyMzUsIDExMDI0MCwgMTEwMjQ1LCAwLCAwLCAwLCAxMTAyNTAsIAorICAgIDExMDI1NiwgMTEwMjYzLCAxMTAyNzIsIDExMDI3NywgMTEwMjgzLCAxMTAyODgsIDExMDI5NCwgMTEwMjk5LCAxMTAzMDUsIAorICAgIDExMDMxMCwgMTEwMzE2LCAxMTAzMjEsIDExMDMyNywgMTEwMzMzLCAwLCAwLCAwLCAwLCAxMTAzMzgsIDExMDM0MywgCisgICAgMTEwMzQ3LCAxMTAzNTEsIDExMDM1NSwgMTEwMzU5LCAxMTAzNjMsIDExMDM2NywgMTEwMzcyLCAxMTAzNzYsIDExMDM4MSwgCisgICAgMTEwMzg2LCAxMTAzOTEsIDExMDM5NywgMTEwNDAyLCAxMTA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwODA0NiwgMTA4MDUwLCAxMDgwNTUsIDEwODA1OSwgMTA4MDY0LCAxMDgwNjgsIDEwODA3MywgMTA4MDc3LCAxMDgwODIsIAotICAgIDEwODA4NiwgMTA4MDkxLCAxMDgwOTUsIDEwODEwMCwgMTA4MTA1LCAxMDgxMTAsIDEwODExNSwgMTA4MTIwLCAxMDgxMjUsIAotICAgIDEwODEzMCwgMTA4MTM1LCAxMDgxNDAsIDEwODE0NSwgMTA4MTUwLCAxMDgxNTUsIDEwODE2MCwgMTA4MTY1LCAxMDgxNzAsIAotICAgIDEwODE3NSwgMTA4MTgwLCAxMDgxODUsIDEwODE5MCwgMTA4MTk0LCAxMDgxOTksIDEwODIwNCwgMTA4MjA5LCAxMDgyMTMsIAotICAgIDEwODIxNywgMTA4MjIyLCAxMDgyMjcsIDEwODIzMiwgMTA4MjM3LCAxMDgyNDIsIDEwODI0NiwgMTA4MjUxLCAxMDgyNTYsIAotICAgIDEwODI2MSwgMTA4MjY3LCAxMDgyNzIsIDEwODI3OCwgMTA4MjgzLCAxMDgyODksIDEwODI5NCwgMTA4MzAwLCAxMDgzMDUsIAotICAgIDEwODMxMSwgMTA4MzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgzMjEsIDEwODMyNiwgMTA4MzMwLCAxMDgzMzQsIAotICAgIDEwODMzOCwgMTA4MzQyLCAxMDgzNDYsIDEwODM1MCwgMTA4MzU1LCAxMDgzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODM2NCwgCi0gICAgMTA4MzY4LCAxMDgzNzMsIDEwODM3OCwgMTA4MzgzLCAxMDgzODgsIDEwODM5NSwgMTA4Mzk5LCAxMDg0MDQsIDEwODQwOSwgCi0gICAgMTA4NDEzLCAxMDg0MTgsIDEwODQyMywgMTA4NDI4LCAxMDg0MzMsIDEwODQzOCwgMTA4NDQzLCAxMDg0NDgsIDEwODQ1MiwgCi0gICAgMTA4NDU2LCAxMDg0NjEsIDEwODQ2NiwgMTA4NDcxLCAxMDg0NzgsIDEwODQ4MywgMTA4NDg4LCAwLCAwLCAwLCAxMDg0OTMsIAotICAgIDEwODUwMCwgMTA4NTA3LCAxMDg1MTYsIDEwODUyMSwgMTA4NTI3LCAxMDg1MzIsIDEwODUzOCwgMTA4NTQzLCAxMDg1NDksIAotICAgIDEwODU1NCwgMTA4NTYwLCAxMDg1NjUsIDEwODU3MSwgMTA4NTc3LCAwLCAwLCAwLCAwLCAxMDg1ODIsIDEwODU4NywgCi0gICAgMTA4NTkxLCAxMDg1OTUsIDEwODU5OSwgMTA4NjAzLCAxMDg2MDcsIDEwODYxMSwgMTA4NjE2LCAxMDg2MjAsIDEwODYyNSwgCi0gICAgMTA4NjMwLCAxMDg2MzUsIDEwODY0MSwgMTA4NjQ2LCAxMDg2NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTg5MjQsMTc1ICsyMDA1OSwxOTUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMTA0MTIsIDExMDQyMCwgMTEwNDI3LCAxMTA0MzUsIDExMDQ0MywgMTEwNDUwLCAxMTA0NTgsIAorICAgIDExMDQ2NiwgMTEwNDc0LCAxMTA0ODEsIDExMDQ4OCwgMTEwNDk2LCAxMTA1MDQsIDExMDUxMiwgMTEwNTIwLCAxMTA1MjgsIAorICAgIDExMDUzNiwgMTEwNTQ0LCAxMTA1NTIsIDExMDU2MCwgMTEwNTY4LCAxMTA1NzYsIDExMDU4NCwgMTEwNTkyLCAxMTA2MDAsIAorICAgIDExMDYwOCwgMTEwNjE2LCAxMTA2MjQsIDExMDYzMiwgMTEwNjQwLCAxMTA2NDgsIDExMDY1NiwgMTEwNjY0LCAxMTA2NzIsIAorICAgIDExMDY3OSwgMTEwNjg3LCAxMTA2OTUsIDExMDcwMiwgMTEwNzEwLCAxMTA3MTgsIDExMDcyNiwgMTEwNzMzLCAxMTA3NDAsIAorICAgIDExMDc0OCwgMTEwNzU2LCAxMTA3NjQsIDExMDc3MiwgMTEwNzgwLCAxMTA3ODgsIDExMDc5NiwgMTEwODA0LCAxMTA4MTIsIAorICAgIDExMDgyMCwgMTEwODI4LCAxMTA4MzYsIDExMDg0NCwgMTEwODUyLCAxMTA4NjAsIDExMDg2OCwgMTEwODc2LCAxMTA4ODQsIAorICAgIDExMDg5MiwgMTEwOTAwLCAxMTA5MDgsIDExMDkxNiwgMTEwOTIzLCAxMTA5MjksIDExMDkzNSwgMTEwOTQxLCAxMTA5NDcsIAorICAgIDExMDk1MywgMTEwOTU5LCAxMTA5NjYsIDExMDk3MiwgMTEwOTc5LCAxMTA5ODYsIDExMDk5MywgMTExMDAwLCAxMTEwMDcsIAorICAgIDExMTAxNCwgMTExMDIxLCAxMTEwMjgsIDExMTAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTExMDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDg2NTYsIDEwODY2NCwgMTA4NjcxLCAxMDg2NzksIDEwODY4NywgMTA4Njk0LCAxMDg3MDIsIAotICAgIDEwODcxMCwgMTA4NzE4LCAxMDg3MjUsIDEwODczMiwgMTA4NzQwLCAxMDg3NDgsIDEwODc1NiwgMTA4NzY0LCAxMDg3NzIsIAotICAgIDEwODc4MCwgMTA4Nzg4LCAxMDg3OTYsIDEwODgwNCwgMTA4ODEyLCAxMDg4MjAsIDEwODgyOCwgMTA4ODM2LCAxMDg4NDQsIAotICAgIDEwODg1MiwgMTA4ODYwLCAxMDg4NjgsIDEwODg3NiwgMTA4ODg0LCAxMDg4OTIsIDEwODkwMCwgMTA4OTA4LCAxMDg5MTYsIAotICAgIDEwODkyMywgMTA4OTMxLCAxMDg5MzksIDEwODk0NiwgMTA4OTU0LCAxMDg5NjIsIDEwODk3MCwgMTA4OTc3LCAxMDg5ODQsIAotICAgIDEwODk5MiwgMTA5MDAwLCAxMDkwMDgsIDEwOTAxNiwgMTA5MDI0LCAxMDkwMzIsIDEwOTA0MCwgMTA5MDQ4LCAxMDkwNTYsIAotICAgIDEwOTA2NCwgMTA5MDcyLCAxMDkwODAsIDEwOTA4OCwgMTA5MDk2LCAxMDkxMDQsIDEwOTExMiwgMTA5MTIwLCAxMDkxMjgsIAotICAgIDEwOTEzNiwgMTA5MTQ0LCAxMDkxNTIsIDEwOTE2MCwgMTA5MTY3LCAxMDkxNzMsIDEwOTE3OSwgMTA5MTg1LCAxMDkxOTEsIAotICAgIDEwOTE5NywgMTA5MjAzLCAxMDkyMTAsIDEwOTIxNiwgMTA5MjIzLCAxMDkyMzAsIDEwOTIzNywgMTA5MjQ0LCAxMDkyNTEsIAotICAgIDEwOTI1OCwgMTA5MjY1LCAxMDkyNzIsIDEwOTI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA5Mjg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMTEwNDgsIDExMTA1NiwgMTExMDY0LCAxMTEwNzIsIDExMTA4MCwgMTExMDg5LCAxMTEwOTgsIDExMTEwNywgCisgICAgMTExMTE2LCAxMTExMjQsIDExMTEzMywgMTExMTQyLCAxMTExNTEsIDExMTE2MCwgMTExMTY5LCAxMTExNzgsIDExMTE4NywgCisgICAgMTExMTk1LCAxMTEyMDQsIDExMTIxMywgMTExMjIyLCAxMTEyMzEsIDExMTIzOSwgMTExMjQ3LCAxMTEyNTUsIDExMTI2MywgCisgICAgMTExMjcxLCAxMTEyODAsIDExMTI4OSwgMTExMjk5LCAxMTEzMDksIDExMTMxOSwgMTExMzI5LCAxMTEzMzksIDExMTM0OCwgCisgICAgMTExMzU4LCAxMTEzNjgsIDExMTM3OCwgMTExMzg5LCAxMTEzOTksIDExMTQxMSwgMTExNDIzLCAxMTE0MzQsIDExMTQ0OCwgCisgICAgMTExNDU5LCAxMTE0NjksIDExMTQ4MSwgMTExNDkyLCAxMTE1MDIsIDExMTUxNCwgMTExNTI2LCAxMTE1MzcsIDExMTU0OCwgCisgICAgMTExNTU4LCAxMTE1NjgsIDExMTU4MCwgMTExNTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTE2MDMsIDExMTYwNiwgCisgICAgMTExNjEwLCAxMTE2MTMsIDExMTYxNywgMTExNjIwLCAxMTE2MjQsIDExMTYyOCwgMTExNjMzLCAwLCAxMTE2MzcsIAorICAgIDExMTY0MCwgMTExNjQ0LCAxMTE2NDcsIDExMTY1MSwgMTExNjU0LCAxMTE2NTgsIDExMTY2MiwgMTExNjY2LCAxMTE2NzAsIAorICAgIDExMTY3NCwgMTExNjc4LCAxMTE2ODIsIDExMTY4NiwgMTExNjkwLCAxMTE2OTQsIDExMTY5OCwgMTExNzAyLCAxMTE3MDYsIAorICAgIDExMTcxMCwgMTExNzE0LCAxMTE3MTgsIDExMTcyMiwgMTExNzI2LCAxMTE3MjksIDExMTczMiwgMTExNzM2LCAxMTE3NDAsIAorICAgIDExMTc0NCwgMTExNzQ3LCAxMTE3NTAsIDExMTc1NCwgMTExNzU3LCAxMTE3NjEsIDExMTc2NSwgMTExNzY5LCAxMTE3NzMsIAorICAgIDExMTc3NiwgMTExNzgxLCAxMTE3ODUsIDExMTc5MCwgMTExNzk0LCAxMTE3OTksIDExMTgwNCwgMTExODEwLCAwLCAKKyAgICAxMTE4MTUsIDExMTgxOSwgMTExODI0LCAxMTE4MjgsIDExMTgzMywgMTExODM3LCAxMTE4NDEsIDExMTg0NSwgMTExODQ5LCAKKyAgICAxMTE4NTMsIDExMTg1NiwgMTExODYwLCAxMTE4NjUsIDExMTg3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTExODc1LCAxMTE4NzksIDExMTg4MiwgMTExODg1LCAxMTE4ODgsIDExMTg5MSwgMTExODk0LCAxMTE4OTcsIDExMTkwMSwgCisgICAgMTExOTA0LCAxMTE5MDgsIDExMTkxMSwgMTExOTE0LCAxMTE5MTcsIDExMTkyMCwgMTExOTIzLCAxMTE5MjYsIDExMTkzMCwgCisgICAgMTExOTMzLCAxMTE5MzcsIDExMTk0MSwgMTExOTQ1LCAxMTE5NDksIDExMTk1MywgMTExOTU3LCAxMTE5NjEsIDExMTk2NSwgCisgICAgMTExOTY5LCAxMTE5NzMsIDAsIDAsIDAsIDExMTk3OSwgMTExOTg0LCAxMTE5ODksIDExMTk5MywgMTExOTk4LCAxMTIwMDMsIAorICAgIDExMjAwOCwgMTEyMDEzLCAxMTIwMTgsIDExMjAyMywgMTEyMDI4LCAxMTIwMzMsIDExMjAzOCwgMTEyMDQzLCAxMTIwNDcsIAorICAgIDExMjA1MSwgMTEyMDU2LCAxMTIwNjEsIDExMjA2NSwgMTEyMDcwLCAxMTIwNzUsIDExMjA4MCwgMTEyMDg1LCAxMTIwOTAsIAorICAgIDExMjA5NSwgMTEyMTAwLCAxMTIxMDQsIDExMjEwOSwgMTEyMTEzLCAxMTIxMTgsIDExMjEyMywgMTEyMTI3LCAwLCAwLCAKKyAgICAxMTIxMzEsIDExMjEzNywgMTEyMTQ0LCAxMTIxNTEsIDExMjE1OCwgMTEyMTY1LCAxMTIxNzIsIDExMjE3OSwgMTEyMTg2LCAKKyAgICAxMTIxOTMsIDExMjIwMCwgMTEyMjA3LCAxMTIyMTMsIDExMjIxOSwgMTEyMjI2LCAxMTIyMzMsIDExMjIzOSwgMTEyMjQ2LCAKKyAgICAxMTIyNTMsIDExMjI2MCwgMTEyMjY3LCAxMTIyNzQsIDAsIDExMjI4MSwgMTEyMjg3LCAxMTIyOTQsIDExMjMwMCwgCisgICAgMTEyMzA3LCAxMTIzMTQsIDExMjMyMCwgMTEyMzI2LCAxMTIzMzIsIDExMjMzNywgMTEyMzQyLCAxMTIzNDcsIDExMjM1MiwgCisgICAgMTEyMzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMDkyOTIsIDEwOTMwMCwgMTA5MzA4LCAxMDkzMTcsIDEwOTMyNSwgMTA5MzM0LCAxMDkzNDMsIDEwOTM1MiwgCi0gICAgMTA5MzYxLCAxMDkzNjksIDEwOTM3OCwgMTA5Mzg3LCAxMDkzOTYsIDEwOTQwNSwgMTA5NDE0LCAxMDk0MjMsIDEwOTQzMiwgCi0gICAgMTA5NDQxLCAxMDk0NTAsIDEwOTQ1OSwgMTA5NDY4LCAxMDk0NzcsIDEwOTQ4NSwgMTA5NDkzLCAxMDk1MDEsIDEwOTUwOSwgCi0gICAgMTA5NTE3LCAxMDk1MjYsIDEwOTUzNSwgMTA5NTQ1LCAxMDk1NTUsIDEwOTU2NSwgMTA5NTc1LCAxMDk1ODUsIDEwOTU5NCwgCi0gICAgMTA5NjA0LCAxMDk2MTQsIDEwOTYyNCwgMTA5NjM1LCAxMDk2NDUsIDEwOTY1NywgMTA5NjY5LCAxMDk2ODAsIDEwOTY5NCwgCi0gICAgMTA5NzA1LCAxMDk3MTUsIDEwOTcyNywgMTA5NzM4LCAxMDk3NDgsIDEwOTc2MCwgMTA5NzcyLCAxMDk3ODMsIDEwOTc5NCwgCi0gICAgMTA5ODA0LCAxMDk4MTQsIDEwOTgyNiwgMTA5ODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk4NDksIDEwOTg1MiwgCi0gICAgMTA5ODU3LCAxMDk4NjMsIDEwOTg3MSwgMTA5ODc2LCAxMDk4ODIsIDEwOTg5MCwgMTA5ODk2LCAxMDk5MDIsIDEwOTkwNiwgCi0gICAgMTA5OTEwLCAxMDk5MTcsIDEwOTkyNiwgMTA5OTMzLCAxMDk5NDIsIDEwOTk0OCwgMTA5OTU3LCAxMDk5NjQsIDEwOTk3MSwgCi0gICAgMTA5OTc4LCAxMDk5ODgsIDEwOTk5NCwgMTA5OTk4LCAxMTAwMDUsIDExMDAxNCwgMTEwMDI0LCAxMTAwMzEsIDExMDAzOCwgCi0gICAgMTEwMDQyLCAxMTAwNDYsIDExMDA1MywgMTEwMDYzLCAxMTAwNjcsIDExMDA3NCwgMTEwMDgxLCAxMTAwODgsIDExMDA5NCwgCi0gICAgMTEwMTAxLCAxMTAxMDgsIDExMDExNSwgMTEwMTIyLCAxMTAxMjYsIDExMDEzMCwgMTEwMTM0LCAxMTAxNDEsIDExMDE0NSwgCi0gICAgMTEwMTUyLCAxMTAxNTksIDExMDE3MywgMTEwMTgyLCAxMTAxODYsIDExMDE5MCwgMTEwMTk0LCAxMTAyMDEsIDExMDIwNSwgCi0gICAgMTEwMjA5LCAxMTAyMTMsIDExMDIyMSwgMTEwMjI5LCAxMTAyNDgsIDExMDI1OCwgMTEwMjc4LCAxMTAyODIsIDExMDI4NiwgCi0gICAgMTEwMjkwLCAxMTAyOTQsIDExMDI5OCwgMTEwMzAyLCAxMTAzMDYsIDExMDMxMywgMTEwMzE3LCAxMTAzMjAsIDExMDMyNCwgCi0gICAgMTEwMzI4LCAxMTAzMzQsIDExMDM0MSwgMTEwMzUwLCAxMTAzNTQsIDExMDM2MywgMTEwMzcyLCAxMTAzODAsIDExMDM4NCwgCi0gICAgMTEwMzkxLCAxMTAzOTUsIDExMDM5OSwgMTEwNDAzLCAxMTA0MDcsIDExMDQxOCwgMTEwNDI3LCAxMTA0MzYsIDExMDQ0NSwgCi0gICAgMTEwNDU0LCAxMTA0NjYsIDExMDQ3NSwgMTEwNDg0LCAxMTA0OTMsIDExMDUwMSwgMTEwNTEwLCAxMTA1MjIsIDExMDUzMSwgCi0gICAgMTEwNTQwLCAxMTA1NDksIDExMDU2MSwgMTEwNTcwLCAxMTA1NzksIDExMDU5MSwgMTEwNjAwLCAxMTA2MDksIDExMDYyMSwgCi0gICAgMTEwNjMwLCAxMTA2MzQsIDExMDYzOCwgMTEwNjQyLCAxMTA2NDYsIDExMDY1MCwgMTEwNjU0LCAxMTA2NTgsIDExMDY2NSwgCi0gICAgMTEwNjY5LCAxMTA2NzMsIDExMDY4NCwgMTEwNjg4LCAxMTA2OTIsIDExMDY5OSwgMTEwNzA1LCAxMTA3MTEsIDExMDcxNSwgCi0gICAgMTEwNzIyLCAxMTA3MjYsIDExMDczMCwgMTEwNzM0LCAxMTA3MzgsIDExMDc0MiwgMTEwNzQ2LCAxMTA3NTIsIDExMDc2MCwgCi0gICAgMTEwNzY0LCAxMTA3NjgsIDExMDc3MSwgMTEwNzc3LCAxMTA3ODcsIDExMDc5MSwgMTEwODAzLCAxMTA4MTAsIDExMDgxNywgCi0gICAgMTEwODI0LCAxMTA4MzEsIDExMDgzNywgMTEwODQxLCAxMTA4NDUsIDExMDg0OSwgMTEwODUzLCAxMTA4NjAsIDExMDg2OSwgCi0gICAgMTEwODc2LCAxMTA4ODQsIDExMDg5MiwgMTEwODk4LCAxMTA5MDIsIDExMDkwNiwgMTEwOTEwLCAxMTA5MTQsIDExMDkyMCwgCi0gICAgMTEwOTI5LCAxMTA5NDEsIDExMDk0OCwgMTEwOTU1LCAxMTA5NjQsIDExMDk3NSwgMTEwOTgxLCAxMTA5OTAsIDExMDk5OSwgCi0gICAgMTExMDA2LCAxMTEwMTUsIDExMTAyMiwgMTExMDI5LCAxMTEwMzksIDExMTA0NiwgMTExMDUzLCAxMTEwNjAsIDExMTA2NywgCi0gICAgMTExMDcxLCAxMTEwNzcsIDExMTA4MSwgMTExMDkyLCAxMTExMDAsIDExMTEwOSwgMTExMTIxLCAxMTExMjgsIDExMTEzNSwgCi0gICAgMTExMTQ1LCAxMTExNTIsIDExMTE2MiwgMTExMTY5LCAxMTExNzksIDExMTE4NiwgMTExMTkzLCAxMTEyMDMsIDExMTIxMCwgCi0gICAgMTExMjE3LCAxMTEyMjcsIDExMTIzNCwgMTExMjQ2LCAxMTEyNTUsIDExMTI2MiwgMTExMjY5LCAxMTEyNzYsIDExMTI4NSwgCi0gICAgMTExMjk1LCAxMTEzMDgsIDExMTMxNSwgMTExMzI1LCAxMTEzMzUsIDExMTM0MiwgMTExMzUxLCAxMTEzNjQsIDExMTM3MSwgCi0gICAgMTExMzc4LCAxMTEzODUsIDExMTM5NSwgMTExNDA1LCAxMTE0MTIsIDExMTQyMiwgMTExNDI5LCAxMTE0MzYsIDExMTQ0NiwgCi0gICAgMTExNDUyLCAxMTE0NTksIDExMTQ2NiwgMTExNDczLCAxMTE0ODMsIDExMTQ5MCwgMTExNDk3LCAxMTE1MDQsIDExMTUxMCwgCi0gICAgMTExNTE3LCAxMTE1MjcsIDExMTUzNCwgMTExNTM4LCAxMTE1NDYsIDExMTU1MCwgMTExNTYyLCAxMTE1NjYsIDExMTU4MCwgCi0gICAgMTExNTg0LCAxMTE1ODgsIDExMTU5MiwgMTExNTk2LCAxMTE2MDIsIDExMTYwOSwgMTExNjE3LCAxMTE2MjEsIDExMTYyNSwgCi0gICAgMTExNjI5LCAxMTE2MzMsIDExMTY0MCwgMTExNjQ0LCAxMTE2NTAsIDExMTY1NiwgMTExNjY0LCAxMTE2NjgsIDExMTY3NSwgCi0gICAgMTExNjgzLCAxMTE2ODcsIDExMTY5MSwgMTExNjk3LCAxMTE3MDEsIDExMTcxMCwgMTExNzE5LCAxMTE3MjYsIDExMTczNiwgCi0gICAgMTExNzQyLCAxMTE3NDYsIDExMTc1MCwgMTExNzU4LCAxMTE3NjUsIDExMTc3MiwgMTExNzc4LCAxMTE3ODIsIDExMTc5MCwgCi0gICAgMTExNzk0LCAxMTE4MDEsIDExMTgxMywgMTExODIwLCAxMTE4MzAsIDExMTgzNiwgMTExODQwLCAxMTE4NDksIDExMTg1NiwgCi0gICAgMTExODY1LCAxMTE4NjksIDExMTg3MywgMTExODgwLCAxMTE4ODQsIDExMTg4OCwgMTExODkyLCAxMTE4OTYsIDExMTg5OSwgCi0gICAgMTExOTA1LCAxMTE5MTEsIDExMTkxNSwgMTExOTE5LCAxMTE5MjYsIDExMTkzMywgMTExOTQwLCAxMTE5NDcsIDExMTk1NCwgCi0gICAgMTExOTYxLCAxMTE5NjgsIDExMTk3NSwgMTExOTgxLCAxMTE5ODUsIDExMTk4OSwgMTExOTk2LCAxMTIwMDMsIDExMjAxMCwgCi0gICAgMTEyMDE3LCAxMTIwMjQsIDExMjAyOCwgMTEyMDMxLCAxMTIwMzYsIDExMjA0MCwgMTEyMDQ0LCAxMTIwNTMsIDExMjA2MiwgCi0gICAgMTEyMDY2LCAxMTIwNzAsIDExMjA3NiwgMTEyMDgyLCAxMTIwOTksIDExMjEwNSwgMTEyMTA5LCAxMTIxMTgsIDExMjEyMiwgCi0gICAgMTEyMTI2LCAxMTIxMzMsIDExMjE0MSwgMTEyMTQ5LCAxMTIxNTUsIDExMjE1OSwgMTEyMTYzLCAxMTIxNjcsIDExMjE3MSwgCi0gICAgMTEyMTc0LCAxMTIxODAsIDExMjE4NywgMTEyMTk3LCAxMTIyMDQsIDExMjIxMSwgMTEyMjE4LCAxMTIyMjQsIDExMjIzMSwgCi0gICAgMTEyMjM4LCAxMTIyNDUsIDExMjI1MiwgMTEyMjU5LCAxMTIyNjgsIDExMjI3NSwgMTEyMjg3LCAxMTIyOTQsIDExMjMwMSwgCi0gICAgMTEyMzExLCAxMTIzMjIsIDExMjMyOSwgMTEyMzM2LCAxMTIzNDMsIDExMjM1MCwgMTEyMzU3LCAxMTIzNjQsIDExMjM3MSwgCi0gICAgMTEyMzc4LCAxMTIzODUsIDExMjM5MiwgMTEyNDAyLCAxMTI0MTIsIDExMjQyMiwgMTEyNDI5LCAxMTI0MzksIDExMjQ0NiwgCi0gICAgMTEyNDUzLCAxMTI0NjAsIDExMjQ2NywgMTEyNDc0LCAxMTI0ODEsIDExMjQ4OCwgMTEyNDk1LCAxMTI1MDIsIDExMjUwOSwgCi0gICAgMTEyNTE2LCAxMTI1MjMsIDExMjUzMCwgMTEyNTM2LCAxMTI1NDMsIDExMjU1MCwgMTEyNTU5LCAxMTI1NjYsIDExMjU3MywgCi0gICAgMTEyNTc3LCAxMTI1ODUsIDExMjU4OSwgMTEyNTkzLCAxMTI1OTcsIDExMjYwMSwgMTEyNjA1LCAxMTI2MTIsIDExMjYxNiwgCi0gICAgMTEyNjI1LCAxMTI2MjksIDExMjYzNiwgMTEyNjQ0LCAxMTI2NDgsIDExMjY1MiwgMTEyNjU2LCAxMTI2NjksIDExMjY4NSwgCi0gICAgMTEyNjg5LCAxMTI2OTMsIDExMjcwMCwgMTEyNzA2LCAxMTI3MTMsIDExMjcxNywgMTEyNzIxLCAxMTI3MjUsIDExMjcyOSwgCi0gICAgMTEyNzMzLCAxMTI3NDAsIDExMjc0NCwgMTEyNzYyLCAxMTI3NjYsIDExMjc3MCwgMTEyNzc3LCAxMTI3ODEsIDExMjc4NSwgCi0gICAgMTEyNzkxLCAxMTI3OTUsIDExMjc5OSwgMTEyODA3LCAxMTI4MTEsIDExMjgxNSwgMTEyODE5LCAxMTI4MjMsIDExMjgyOSwgCi0gICAgMTEyODQwLCAxMTI4NDksIDExMjg1OCwgMTEyODY1LCAxMTI4NzIsIDExMjg4MywgMTEyODkwLCAxMTI4OTcsIDExMjkwNCwgCi0gICAgMTEyOTExLCAxMTI5MTgsIDExMjkyNSwgMTEyOTMyLCAxMTI5NDIsIDExMjk0OCwgMTEyOTU1LCAxMTI5NjUsIDExMjk3NCwgCi0gICAgMTEyOTgxLCAxMTI5OTAsIDExMzAwMCwgMTEzMDA3LCAxMTMwMTQsIDExMzAyMSwgMTEzMDI4LCAxMTMwNDAsIDExMzA0NywgCi0gICAgMTEzMDU0LCAxMTMwNjEsIDExMzA2OCwgMTEzMDc1LCAxMTMwODUsIDExMzA5MiwgMTEzMDk5LCAxMTMxMDksIDExMzEyMiwgCi0gICAgMTEzMTM0LCAxMTMxNDEsIDExMzE1MSwgMTEzMTU4LCAxMTMxNjUsIDExMzE3MiwgMTEzMTg3LCAxMTMxOTMsIDExMzIwMSwgCi0gICAgMTEzMjExLCAxMTMyMjEsIDExMzIyOCwgMTEzMjM1LCAxMTMyNDEsIDExMzI0NSwgMTEzMjUyLCAxMTMyNjIsIDExMzI2OCwgCi0gICAgMTEzMjgxLCAxMTMyODUsIDExMzI4OSwgMTEzMjk2LCAxMTMzMDAsIDExMzMwNywgMTEzMzE3LCAxMTMzMjEsIDExMzMyNSwgCi0gICAgMTEzMzI5LCAxMTMzMzMsIDExMzMzNywgMTEzMzQ0LCAxMTMzNDgsIDExMzM1NSwgMTEzMzYyLCAxMTMzNjksIDExMzM3OCwgCi0gICAgMTEzMzg3LCAxMTMzOTcsIDExMzQwNCwgMTEzNDExLCAxMTM0MTgsIDExMzQyOCwgMTEzNDM1LCAxMTM0NDUsIDExMzQ1MiwgCi0gICAgMTEzNDYyLCAxMTM0NjksIDExMzQ3NiwgMTEzNDg2LCAxMTM0OTYsIDExMzUwMywgMTEzNTA5LCAxMTM1MTcsIDExMzUyNSwgCi0gICAgMTEzNTMxLCAxMTM1MzcsIDExMzU0MSwgMTEzNTQ1LCAxMTM1NTIsIDExMzU2MCwgMTEzNTY2LCAxMTM1NzAsIDExMzU3NCwgCi0gICAgMTEzNTc4LCAxMTM1ODUsIDExMzU5NywgMTEzNjAwLCAxMTM2MDcsIDExMzYxMywgMTEzNjE3LCAxMTM2MjEsIDExMzYyNSwgCi0gICAgMTEzNjI5LCAxMTM2MzMsIDExMzYzNywgMTEzNjQxLCAxMTM2NDUsIDExMzY0OSwgMTEzNjUzLCAxMTM2NjAsIDExMzY2NCwgCi0gICAgMTEzNjcwLCAxMTM2NzQsIDExMzY3OCwgMTEzNjgyLCAxMTM2ODgsIDExMzY5NSwgMTEzNzAyLCAxMTM3MDksIDExMzcyMSwgCi0gICAgMTEzNzI5LCAxMTM3MzMsIDExMzczOSwgMTEzNzQ4LCAxMTM3NTUsIDExMzc2MSwgMTEzNzY1LCAxMTM3NjksIDExMzc3MywgCi0gICAgMTEzNzc5LCAxMTM3ODgsIDExMzc5NiwgMTEzODAwLCAxMTM4MDYsIDExMzgxMCwgMTEzODE0LCAxMTM4MTgsIDExMzgyNCwgCi0gICAgMTEzODMxLCAxMTM4MzcsIDExMzg0MSwgMTEzODQ3LCAxMTM4NTEsIDExMzg1NSwgMTEzODY0LCAxMTM4NzYsIDExMzg4MCwgCi0gICAgMTEzODg3LCAxMTM4OTQsIDExMzkwNCwgMTEzOTExLCAxMTM5MjMsIDExMzkzMCwgMTEzOTM3LCAxMTM5NDQsIDExMzk1NSwgCi0gICAgMTEzOTY1LCAxMTM5NzgsIDExMzk4OCwgMTEzOTk1LCAxMTM5OTksIDExNDAwMywgMTE0MDA3LCAxMTQwMTEsIDExNDAyMCwgCi0gICAgMTE0MDI5LCAxMTQwMzgsIDExNDA1NSwgMTE0MDY0LCAxMTQwNzAsIDExNDA3NywgMTE0MDg1LCAxMTQwOTgsIDExNDEwMiwgCi0gICAgMTE0MTExLCAxMTQxMjAsIDExNDEyOSwgMTE0MTM4LCAxMTQxNDksIDExNDE1OCwgMTE0MTY3LCAxMTQxNzYsIDExNDE4NSwgCi0gICAgMTE0MTk0LCAxMTQyMDMsIDExNDIxMywgMTE0MjE2LCAxMTQyMjAsIDExNDIyNCwgMTE0MjI4LCAxMTQyMzIsIDExNDIzNiwgCi0gICAgMTE0MjQyLCAxMTQyNDksIDExNDI1NiwgMTE0MjYzLCAxMTQyNjksIDExNDI3NSwgMTE0MjgyLCAxMTQyODgsIDExNDI5NSwgCi0gICAgMTE0MzAzLCAxMTQzMDcsIDExNDMxNCwgMTE0MzIxLCAxMTQzMjgsIDExNDMzNiwgMTE0MzQwLCAxMTQzNDQsIDExNDM0OCwgCi0gICAgMTE0MzUyLCAxMTQzNTYsIDExNDM2MiwgMTE0MzY2LCAxMTQzNzIsIDExNDM3OSwgMTE0Mzg2LCAxMTQzOTIsIDExNDM5OSwgCi0gICAgMTE0NDA2LCAxMTQ0MTMsIDExNDQyMCwgMTE0NDI3LCAxMTQ0MzQsIDExNDQ0MSwgMTE0NDQ4LCAxMTQ0NTUsIDExNDQ2MiwgCi0gICAgMTE0NDY5LCAxMTQ0NzYsIDExNDQ4MywgMTE0NDkwLCAxMTQ0OTYsIDExNDUwMCwgMTE0NTA5LCAxMTQ1MTMsIDExNDUxNywgCi0gICAgMTE0NTIxLCAxMTQ1MjUsIDExNDUzMSwgMTE0NTM4LCAxMTQ1NDUsIDExNDU1MiwgMTE0NTU5LCAxMTQ1NjYsIDExNDU3MiwgCi0gICAgMTE0NTgwLCAxMTQ1ODQsIDExNDU4OCwgMTE0NTkyLCAxMTQ1OTYsIDExNDYwMiwgMTE0NjE5LCAxMTQ2MzYsIDExNDY0MCwgCi0gICAgMTE0NjQ0LCAxMTQ2NDgsIDExNDY1MiwgMTE0NjU2LCAxMTQ2NjAsIDExNDY2NiwgMTE0NjczLCAxMTQ2NzcsIDExNDY4MywgCi0gICAgMTE0NjkwLCAxMTQ2OTcsIDExNDcwNCwgMTE0NzExLCAxMTQ3MTgsIDExNDcyNywgMTE0NzM0LCAxMTQ3NDEsIDExNDc0OCwgCi0gICAgMTE0NzU1LCAxMTQ3NTksIDExNDc2MywgMTE0NzY5LCAxMTQ3ODEsIDExNDc4NSwgMTE0Nzg5LCAxMTQ3OTgsIDExNDgwMiwgCi0gICAgMTE0ODA2LCAxMTQ4MTAsIDExNDgxNiwgMTE0ODIwLCAxMTQ4MjQsIDExNDgzMywgMTE0ODM3LCAxMTQ4NDEsIDExNDg0NSwgCi0gICAgMTE0ODUyLCAxMTQ4NTYsIDExNDg2MCwgMTE0ODY0LCAxMTQ4NjgsIDExNDg3MiwgMTE0ODc2LCAxMTQ4ODAsIDExNDg4NCwgCi0gICAgMTE0ODkwLCAxMTQ4OTcsIDExNDkwNCwgMTE0OTEwLCAxMTQ5MTQsIDExNDkzMSwgMTE0OTM3LCAxMTQ5NDEsIDExNDk0NywgCi0gICAgMTE0OTUzLCAxMTQ5NTksIDExNDk2NSwgMTE0OTcxLCAxMTQ5NzcsIDExNDk4MSwgMTE0OTg1LCAxMTQ5ODksIDExNDk5NSwgCi0gICAgMTE0OTk5LCAxMTUwMDUsIDExNTAwOSwgMTE1MDEzLCAxMTUwMjAsIDExNTAyNywgMTE1MDQ0LCAxMTUwNDgsIDExNTA1MiwgCi0gICAgMTE1MDU2LCAxMTUwNjAsIDExNTA2NCwgMTE1MDc2LCAxMTUwNzksIDExNTA4NCwgMTE1MDg5LCAxMTUxMDQsIDExNTExNCwgCi0gICAgMTE1MTI2LCAxMTUxMzAsIDExNTEzNCwgMTE1MTM4LCAxMTUxNDQsIDExNTE1MSwgMTE1MTU4LCAxMTUxNjgsIDExNTE4MCwgCi0gICAgMTE1MTg2LCAxMTUxOTIsIDExNTIwMSwgMTE1MjA1LCAxMTUyMDksIDExNTIxNiwgMTE1MjI2LCAxMTUyMzMsIDExNTIzOSwgCi0gICAgMTE1MjQzLCAxMTUyNDcsIDExNTI1NCwgMTE1MjYwLCAxMTUyNjQsIDExNTI3MCwgMTE1Mjc0LCAxMTUyODIsIDExNTI4OCwgCi0gICAgMTE1MjkyLCAxMTUzMDAsIDExNTMwOSwgMTE1MzE2LCAxMTUzMjIsIDExNTMyOSwgMTE1MzM2LCAxMTUzNDYsIDExNTM1NiwgCi0gICAgMTE1MzYwLCAxMTUzNjQsIDExNTM2OCwgMTE1MzcyLCAxMTUzNzgsIDExNTM4NSwgMTE1MzkxLCAxMTUzOTgsIDExNTQwNSwgCi0gICAgMTE1NDEyLCAxMTU0MjEsIDExNTQyOCwgMTE1NDM1LCAxMTU0NDEsIDExNTQ0OCwgMTE1NDU1LCAxMTU0NjIsIDExNTQ2OSwgCi0gICAgMTE1NDc2LCAxMTU0ODMsIDExNTQ4OSwgMTE1NDk2LCAxMTU1MDMsIDExNTUxMCwgMTE1NTE5LCAxMTU1MjYsIDExNTUzMywgCi0gICAgMTE1NTM3LCAxMTU1NDMsIDExNTU0NywgMTE1NTUzLCAxMTU1NjAsIDExNTU2NywgMTE1NTc0LCAxMTU1NzgsIDExNTU4MiwgCi0gICAgMTE1NTg2LCAxMTU1OTAsIDExNTU5NCwgMTE1NjAxLCAxMTU2MDUsIDExNTYwOSwgMTE1NjE1LCAxMTU2MjMsIDExNTYyNywgCi0gICAgMTE1NjMxLCAxMTU2MzUsIDExNTYzOSwgMTE1NjQ2LCAxMTU2NTAsIDExNTY1NCwgMTE1NjYyLCAxMTU2NjYsIDExNTY3MCwgCi0gICAgMTE1Njc0LCAxMTU2NzgsIDExNTY4NCwgMTE1Njg4LCAxMTU2OTIsIDExNTY5OCwgMTE1NzA1LCAxMTU3MTEsIDExNTcxOCwgCi0gICAgMTE1NzMwLCAxMTU3MzQsIDExNTc0MSwgMTE1NzQ4LCAxMTU3NTUsIDExNTc2MiwgMTE1Nzc0LCAxMTU3ODEsIDExNTc4NSwgCi0gICAgMTE1Nzg5LCAxMTU3OTMsIDExNTgwMCwgMTE1ODA3LCAxMTU4MTQsIDExNTgyMSwgMTE1ODMxLCAxMTU4MzgsIDExNTg0NCwgCi0gICAgMTE1ODUxLCAxMTU4NTgsIDExNTg2NSwgMTE1ODcyLCAxMTU4ODEsIDExNTg5MSwgMTE1ODk4LCAxMTU5MDIsIDExNTkwOSwgCi0gICAgMTE1OTEzLCAxMTU5MTcsIDExNTkyMSwgMTE1OTI4LCAxMTU5MzUsIDExNTk0NSwgMTE1OTUxLCAxMTU5NTUsIDExNTk2NCwgCi0gICAgMTE1OTY4LCAxMTU5NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDExMjM2MiwgMTEyMzY1LCAxMTIzNzAsIDExMjM3NiwgMTEyMzg0LCAxMTIzODksIDExMjM5NSwgMTEyNDAzLCAKKyAgICAxMTI0MDksIDExMjQxNSwgMTEyNDE5LCAxMTI0MjMsIDExMjQzMCwgMTEyNDM5LCAxMTI0NDYsIDExMjQ1NSwgMTEyNDYxLCAKKyAgICAxMTI0NzAsIDExMjQ3NywgMTEyNDg0LCAxMTI0OTEsIDExMjUwMSwgMTEyNTA3LCAxMTI1MTEsIDExMjUxOCwgMTEyNTI3LCAKKyAgICAxMTI1MzcsIDExMjU0NCwgMTEyNTUxLCAxMTI1NTUsIDExMjU1OSwgMTEyNTY2LCAxMTI1NzYsIDExMjU4MCwgMTEyNTg3LCAKKyAgICAxMTI1OTQsIDExMjYwMSwgMTEyNjA3LCAxMTI2MTQsIDExMjYyMSwgMTEyNjI4LCAxMTI2MzUsIDExMjYzOSwgMTEyNjQzLCAKKyAgICAxMTI2NDcsIDExMjY1NCwgMTEyNjU4LCAxMTI2NjUsIDExMjY3MiwgMTEyNjg2LCAxMTI2OTUsIDExMjY5OSwgMTEyNzAzLCAKKyAgICAxMTI3MDcsIDExMjcxNCwgMTEyNzE4LCAxMTI3MjIsIDExMjcyNiwgMTEyNzM0LCAxMTI3NDIsIDExMjc2MSwgMTEyNzcxLCAKKyAgICAxMTI3OTEsIDExMjc5NSwgMTEyNzk5LCAxMTI4MDMsIDExMjgwNywgMTEyODExLCAxMTI4MTUsIDExMjgxOSwgMTEyODI2LCAKKyAgICAxMTI4MzAsIDExMjgzMywgMTEyODM3LCAxMTI4NDEsIDExMjg0NywgMTEyODU0LCAxMTI4NjMsIDExMjg2NywgMTEyODc2LCAKKyAgICAxMTI4ODUsIDExMjg5MywgMTEyODk3LCAxMTI5MDQsIDExMjkwOCwgMTEyOTEyLCAxMTI5MTYsIDExMjkyMCwgMTEyOTMxLCAKKyAgICAxMTI5NDAsIDExMjk0OSwgMTEyOTU4LCAxMTI5NjcsIDExMjk3OSwgMTEyOTg4LCAxMTI5OTcsIDExMzAwNiwgMTEzMDE0LCAKKyAgICAxMTMwMjMsIDExMzAzNSwgMTEzMDQ0LCAxMTMwNTIsIDExMzA2MSwgMTEzMDczLCAxMTMwODIsIDExMzA5MSwgMTEzMTAzLCAKKyAgICAxMTMxMTIsIDExMzEyMSwgMTEzMTMzLCAxMTMxNDIsIDExMzE0NiwgMTEzMTUwLCAxMTMxNTQsIDExMzE1OCwgMTEzMTYyLCAKKyAgICAxMTMxNjYsIDExMzE3MCwgMTEzMTc3LCAxMTMxODEsIDExMzE4NSwgMTEzMTk2LCAxMTMyMDAsIDExMzIwNCwgMTEzMjExLCAKKyAgICAxMTMyMTcsIDExMzIyMywgMTEzMjI3LCAxMTMyMzQsIDExMzIzOCwgMTEzMjQyLCAxMTMyNDYsIDExMzI1MCwgMTEzMjU0LCAKKyAgICAxMTMyNTgsIDExMzI2NCwgMTEzMjcyLCAxMTMyNzYsIDExMzI4MCwgMTEzMjgzLCAxMTMyODksIDExMzI5OSwgMTEzMzAzLCAKKyAgICAxMTMzMTUsIDExMzMyMiwgMTEzMzI5LCAxMTMzMzYsIDExMzM0MywgMTEzMzQ5LCAxMTMzNTMsIDExMzM1NywgMTEzMzYxLCAKKyAgICAxMTMzNjUsIDExMzM3MiwgMTEzMzgxLCAxMTMzODgsIDExMzM5NiwgMTEzNDA0LCAxMTM0MTAsIDExMzQxNCwgMTEzNDE4LCAKKyAgICAxMTM0MjIsIDExMzQyNiwgMTEzNDMyLCAxMTM0NDEsIDExMzQ1MywgMTEzNDYwLCAxMTM0NjcsIDExMzQ3NiwgMTEzNDg3LCAKKyAgICAxMTM0OTMsIDExMzUwMiwgMTEzNTExLCAxMTM1MTgsIDExMzUyNywgMTEzNTM0LCAxMTM1NDAsIDExMzU1MCwgMTEzNTU3LCAKKyAgICAxMTM1NjQsIDExMzU3MSwgMTEzNTc4LCAxMTM1ODIsIDExMzU4OCwgMTEzNTkyLCAxMTM2MDMsIDExMzYxMSwgMTEzNjIwLCAKKyAgICAxMTM2MzIsIDExMzYzOSwgMTEzNjQ2LCAxMTM2NTYsIDExMzY2MywgMTEzNjczLCAxMTM2ODAsIDExMzY5MCwgMTEzNjk3LCAKKyAgICAxMTM3MDQsIDExMzcxNCwgMTEzNzIxLCAxMTM3MjgsIDExMzczNywgMTEzNzQ0LCAxMTM3NTYsIDExMzc2NSwgMTEzNzcyLCAKKyAgICAxMTM3NzksIDExMzc4NiwgMTEzNzk1LCAxMTM4MDUsIDExMzgxOCwgMTEzODI1LCAxMTM4MzQsIDExMzg0NCwgMTEzODUxLCAKKyAgICAxMTM4NjAsIDExMzg3MywgMTEzODgwLCAxMTM4ODcsIDExMzg5NCwgMTEzOTA0LCAxMTM5MTQsIDExMzkyMCwgMTEzOTMwLCAKKyAgICAxMTM5MzcsIDExMzk0NCwgMTEzOTU0LCAxMTM5NjAsIDExMzk2NywgMTEzOTc0LCAxMTM5ODEsIDExMzk5MSwgMTEzOTk4LCAKKyAgICAxMTQwMDUsIDExNDAxMiwgMTE0MDE4LCAxMTQwMjUsIDExNDAzNSwgMTE0MDQyLCAxMTQwNDYsIDExNDA1NCwgMTE0MDU4LCAKKyAgICAxMTQwNzAsIDExNDA3NCwgMTE0MDg4LCAxMTQwOTIsIDExNDA5NiwgMTE0MTAwLCAxMTQxMDQsIDExNDExMCwgMTE0MTE3LCAKKyAgICAxMTQxMjUsIDExNDEyOSwgMTE0MTMzLCAxMTQxMzcsIDExNDE0MSwgMTE0MTQ4LCAxMTQxNTIsIDExNDE1OCwgMTE0MTY0LCAKKyAgICAxMTQxNzIsIDExNDE3NiwgMTE0MTgzLCAxMTQxOTEsIDExNDE5NSwgMTE0MTk5LCAxMTQyMDUsIDExNDIwOSwgMTE0MjE4LCAKKyAgICAxMTQyMjcsIDExNDIzNCwgMTE0MjQ0LCAxMTQyNTAsIDExNDI1NCwgMTE0MjU4LCAxMTQyNjYsIDExNDI3MywgMTE0MjgwLCAKKyAgICAxMTQyODYsIDExNDI5MCwgMTE0Mjk4LCAxMTQzMDIsIDExNDMwOSwgMTE0MzIxLCAxMTQzMjgsIDExNDMzOCwgMTE0MzQ0LCAKKyAgICAxMTQzNDgsIDExNDM1NywgMTE0MzY0LCAxMTQzNzMsIDExNDM3NywgMTE0MzgxLCAxMTQzODgsIDExNDM5MiwgMTE0Mzk2LCAKKyAgICAxMTQ0MDAsIDExNDQwNCwgMTE0NDA3LCAxMTQ0MTMsIDExNDQxOSwgMTE0NDIzLCAxMTQ0MjcsIDExNDQzNCwgMTE0NDQxLCAKKyAgICAxMTQ0NDgsIDExNDQ1NSwgMTE0NDYyLCAxMTQ0NjksIDExNDQ3NiwgMTE0NDgzLCAxMTQ0ODksIDExNDQ5MywgMTE0NDk3LCAKKyAgICAxMTQ1MDQsIDExNDUxMSwgMTE0NTE4LCAxMTQ1MjUsIDExNDUzMiwgMTE0NTM2LCAxMTQ1MzksIDExNDU0NCwgMTE0NTQ4LCAKKyAgICAxMTQ1NTIsIDExNDU2MSwgMTE0NTcwLCAxMTQ1NzQsIDExNDU3OCwgMTE0NTg0LCAxMTQ1OTAsIDExNDYwNywgMTE0NjEzLCAKKyAgICAxMTQ2MTcsIDExNDYyNiwgMTE0NjMwLCAxMTQ2MzQsIDExNDY0MSwgMTE0NjQ5LCAxMTQ2NTcsIDExNDY2MywgMTE0NjY3LCAKKyAgICAxMTQ2NzEsIDExNDY3NSwgMTE0Njc5LCAxMTQ2ODIsIDExNDY4OCwgMTE0Njk1LCAxMTQ3MDUsIDExNDcxMiwgMTE0NzE5LCAKKyAgICAxMTQ3MjYsIDExNDczMiwgMTE0NzM5LCAxMTQ3NDYsIDExNDc1MywgMTE0NzYwLCAxMTQ3NjcsIDExNDc3NiwgMTE0NzgzLCAKKyAgICAxMTQ3OTUsIDExNDgwMiwgMTE0ODA5LCAxMTQ4MTksIDExNDgzMCwgMTE0ODM3LCAxMTQ4NDQsIDExNDg1MSwgMTE0ODU4LCAKKyAgICAxMTQ4NjUsIDExNDg3MiwgMTE0ODc5LCAxMTQ4ODYsIDExNDg5MywgMTE0OTAwLCAxMTQ5MTAsIDExNDkyMCwgMTE0OTMwLCAKKyAgICAxMTQ5MzcsIDExNDk0NywgMTE0OTU0LCAxMTQ5NjEsIDExNDk2OCwgMTE0OTc1LCAxMTQ5ODIsIDExNDk4OSwgMTE0OTk2LCAKKyAgICAxMTUwMDMsIDExNTAxMCwgMTE1MDE3LCAxMTUwMjQsIDExNTAzMSwgMTE1MDM4LCAxMTUwNDQsIDExNTA1MSwgMTE1MDU4LCAKKyAgICAxMTUwNjcsIDExNTA3NCwgMTE1MDgxLCAxMTUwODUsIDExNTA5MywgMTE1MDk3LCAxMTUxMDEsIDExNTEwNSwgMTE1MTA5LCAKKyAgICAxMTUxMTMsIDExNTEyMCwgMTE1MTI0LCAxMTUxMzMsIDExNTEzNywgMTE1MTQ0LCAxMTUxNTIsIDExNTE1NiwgMTE1MTYwLCAKKyAgICAxMTUxNjQsIDExNTE3NywgMTE1MTkzLCAxMTUxOTcsIDExNTIwMSwgMTE1MjA4LCAxMTUyMTQsIDExNTIyMSwgMTE1MjI1LCAKKyAgICAxMTUyMjksIDExNTIzMywgMTE1MjM3LCAxMTUyNDEsIDExNTI0OCwgMTE1MjUyLCAxMTUyNzAsIDExNTI3NCwgMTE1Mjc4LCAKKyAgICAxMTUyODUsIDExNTI4OSwgMTE1MjkzLCAxMTUyOTksIDExNTMwMywgMTE1MzA3LCAxMTUzMTUsIDExNTMxOSwgMTE1MzIzLCAKKyAgICAxMTUzMjYsIDExNTMzMCwgMTE1MzM2LCAxMTUzNDcsIDExNTM1NiwgMTE1MzY1LCAxMTUzNzIsIDExNTM3OSwgMTE1MzkwLCAKKyAgICAxMTUzOTcsIDExNTQwNCwgMTE1NDExLCAxMTU0MTgsIDExNTQyNSwgMTE1NDMyLCAxMTU0MzksIDExNTQ0OSwgMTE1NDU1LCAKKyAgICAxMTU0NjIsIDExNTQ3MiwgMTE1NDgxLCAxMTU0ODgsIDExNTQ5NywgMTE1NTA3LCAxMTU1MTQsIDExNTUyMSwgMTE1NTI4LCAKKyAgICAxMTU1MzUsIDExNTU0NywgMTE1NTU0LCAxMTU1NjEsIDExNTU2OCwgMTE1NTc1LCAxMTU1ODIsIDExNTU5MiwgMTE1NTk5LCAKKyAgICAxMTU2MDYsIDExNTYxNiwgMTE1NjI5LCAxMTU2NDEsIDExNTY0OCwgMTE1NjU4LCAxMTU2NjUsIDExNTY3MiwgMTE1Njc5LCAKKyAgICAxMTU2OTMsIDExNTY5OSwgMTE1NzA3LCAxMTU3MTcsIDExNTcyNywgMTE1NzM0LCAxMTU3NDEsIDExNTc0NywgMTE1NzUxLCAKKyAgICAxMTU3NTgsIDExNTc2OCwgMTE1Nzc0LCAxMTU3ODcsIDExNTc5MSwgMTE1Nzk1LCAxMTU4MDIsIDExNTgwNiwgMTE1ODEzLCAKKyAgICAxMTU4MjMsIDExNTgyNywgMTE1ODMxLCAxMTU4MzUsIDExNTgzOSwgMTE1ODQzLCAxMTU4NTAsIDExNTg1NCwgMTE1ODYxLCAKKyAgICAxMTU4NjgsIDExNTg3NSwgMTE1ODg0LCAxMTU4OTMsIDExNTkwMywgMTE1OTEwLCAxMTU5MTcsIDExNTkyNCwgMTE1OTM0LCAKKyAgICAxMTU5NDEsIDExNTk1MSwgMTE1OTU4LCAxMTU5NjgsIDExNTk3NSwgMTE1OTgyLCAxMTU5OTIsIDExNjAwMiwgMTE2MDA5LCAKKyAgICAxMTYwMTUsIDExNjAyMywgMTE2MDMxLCAxMTYwMzcsIDExNjA0MywgMTE2MDQ3LCAxMTYwNTEsIDExNjA1OCwgMTE2MDY2LCAKKyAgICAxMTYwNzIsIDExNjA3NiwgMTE2MDgwLCAxMTYwODQsIDExNjA5MSwgMTE2MTAzLCAxMTYxMDYsIDExNjExMywgMTE2MTE5LCAKKyAgICAxMTYxMjMsIDExNjEyNywgMTE2MTMxLCAxMTYxMzUsIDExNjEzOSwgMTE2MTQzLCAxMTYxNDcsIDExNjE1MSwgMTE2MTU1LCAKKyAgICAxMTYxNTksIDExNjE2NiwgMTE2MTcwLCAxMTYxNzYsIDExNjE4MCwgMTE2MTg0LCAxMTYxODgsIDExNjE5NCwgMTE2MjAxLCAKKyAgICAxMTYyMDgsIDExNjIxNSwgMTE2MjI2LCAxMTYyMzQsIDExNjIzOCwgMTE2MjQ0LCAxMTYyNTMsIDExNjI2MCwgMTE2MjY2LCAKKyAgICAxMTYyNjksIDExNjI3MywgMTE2Mjc3LCAxMTYyODMsIDExNjI5MiwgMTE2MzAwLCAxMTYzMDQsIDExNjMxMCwgMTE2MzE0LCAKKyAgICAxMTYzMTgsIDExNjMyMiwgMTE2MzI4LCAxMTYzMzUsIDExNjM0MSwgMTE2MzQ1LCAxMTYzNTEsIDExNjM1NSwgMTE2MzU5LCAKKyAgICAxMTYzNjgsIDExNjM4MCwgMTE2Mzg0LCAxMTYzOTEsIDExNjM5OCwgMTE2NDA4LCAxMTY0MTUsIDExNjQyNywgMTE2NDM0LCAKKyAgICAxMTY0NDEsIDExNjQ0OCwgMTE2NDU5LCAxMTY0NjksIDExNjQ4MiwgMTE2NDkyLCAxMTY0OTksIDExNjUwMywgMTE2NTA3LCAKKyAgICAxMTY1MTEsIDExNjUxNSwgMTE2NTI0LCAxMTY1MzMsIDExNjU0MiwgMTE2NTU5LCAxMTY1NjgsIDExNjU3NCwgMTE2NTgxLCAKKyAgICAxMTY1ODksIDExNjYwMiwgMTE2NjA2LCAxMTY2MTUsIDExNjYyNCwgMTE2NjMzLCAxMTY2NDIsIDExNjY1MywgMTE2NjYyLCAKKyAgICAxMTY2NzAsIDExNjY3OSwgMTE2Njg4LCAxMTY2OTcsIDExNjcwNiwgMTE2NzE2LCAxMTY3MTksIDExNjcyMywgMTE2NzI3LCAKKyAgICAxMTY3MzEsIDExNjczNSwgMTE2NzM5LCAxMTY3NDUsIDExNjc1MiwgMTE2NzU5LCAxMTY3NjYsIDExNjc3MiwgMTE2Nzc4LCAKKyAgICAxMTY3ODUsIDExNjc5MSwgMTE2Nzk4LCAxMTY4MDYsIDExNjgxMCwgMTE2ODE3LCAxMTY4MjQsIDExNjgzMSwgMTE2ODM5LCAKKyAgICAxMTY4NDMsIDExNjg0NywgMTE2ODUxLCAxMTY4NTUsIDExNjg1OSwgMTE2ODY1LCAxMTY4NjksIDExNjg3NSwgMTE2ODgyLCAKKyAgICAxMTY4ODksIDExNjg5NSwgMTE2OTAyLCAxMTY5MDksIDExNjkxNiwgMTE2OTIzLCAxMTY5MzAsIDExNjkzNywgMTE2OTQ0LCAKKyAgICAxMTY5NTEsIDExNjk1OCwgMTE2OTY1LCAxMTY5NzIsIDExNjk3OSwgMTE2OTg2LCAxMTY5OTMsIDExNjk5OSwgMTE3MDAzLCAKKyAgICAxMTcwMTIsIDExNzAxNiwgMTE3MDIwLCAxMTcwMjQsIDExNzAyOCwgMTE3MDM0LCAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAKKyAgICAxMTcwNjIsIDExNzA2OSwgMTE3MDc1LCAxMTcwODMsIDExNzA4NywgMTE3MDkxLCAxMTcwOTUsIDExNzA5OSwgMTE3MTA1LCAKKyAgICAxMTcxMjIsIDExNzEzOSwgMTE3MTQzLCAxMTcxNDcsIDExNzE1MSwgMTE3MTU1LCAxMTcxNTksIDExNzE2MywgMTE3MTY5LCAKKyAgICAxMTcxNzYsIDExNzE4MCwgMTE3MTg2LCAxMTcxOTMsIDExNzIwMCwgMTE3MjA3LCAxMTcyMTQsIDExNzIyMSwgMTE3MjMwLCAKKyAgICAxMTcyMzcsIDExNzI0NCwgMTE3MjUxLCAxMTcyNTgsIDExNzI2MiwgMTE3MjY2LCAxMTcyNzIsIDExNzI4NCwgMTE3Mjg4LCAKKyAgICAxMTcyOTIsIDExNzMwMSwgMTE3MzA1LCAxMTczMDksIDExNzMxMywgMTE3MzE5LCAxMTczMjMsIDExNzMyNywgMTE3MzM2LCAKKyAgICAxMTczNDAsIDExNzM0NCwgMTE3MzQ4LCAxMTczNTUsIDExNzM1OSwgMTE3MzYzLCAxMTczNjcsIDExNzM3MSwgMTE3Mzc1LCAKKyAgICAxMTczNzksIDExNzM4MywgMTE3Mzg3LCAxMTczOTMsIDExNzQwMCwgMTE3NDA3LCAxMTc0MTMsIDExNzQxNywgMTE3NDM0LCAKKyAgICAxMTc0NDAsIDExNzQ0NCwgMTE3NDUwLCAxMTc0NTYsIDExNzQ2MiwgMTE3NDY4LCAxMTc0NzQsIDExNzQ4MCwgMTE3NDg0LCAKKyAgICAxMTc0ODgsIDExNzQ5MiwgMTE3NDk4LCAxMTc1MDIsIDExNzUwOCwgMTE3NTEyLCAxMTc1MTYsIDExNzUyMywgMTE3NTMwLCAKKyAgICAxMTc1NDcsIDExNzU1MSwgMTE3NTU1LCAxMTc1NTksIDExNzU2MywgMTE3NTY3LCAxMTc1NzksIDExNzU4MiwgMTE3NTg3LCAKKyAgICAxMTc1OTIsIDExNzYwNywgMTE3NjE3LCAxMTc2MjksIDExNzYzMywgMTE3NjM3LCAxMTc2NDEsIDExNzY0NywgMTE3NjU0LCAKKyAgICAxMTc2NjEsIDExNzY3MSwgMTE3NjgzLCAxMTc2ODksIDExNzY5NSwgMTE3NzA0LCAxMTc3MDgsIDExNzcxMiwgMTE3NzE5LCAKKyAgICAxMTc3MjksIDExNzczNiwgMTE3NzQyLCAxMTc3NDYsIDExNzc1MCwgMTE3NzU3LCAxMTc3NjMsIDExNzc2NywgMTE3NzczLCAKKyAgICAxMTc3NzcsIDExNzc4NSwgMTE3NzkxLCAxMTc3OTUsIDExNzgwMywgMTE3ODExLCAxMTc4MTgsIDExNzgyNCwgMTE3ODMxLCAKKyAgICAxMTc4MzgsIDExNzg0OCwgMTE3ODU4LCAxMTc4NjIsIDExNzg2NiwgMTE3ODcwLCAxMTc4NzQsIDExNzg4MCwgMTE3ODg3LCAKKyAgICAxMTc4OTMsIDExNzkwMCwgMTE3OTA3LCAxMTc5MTQsIDExNzkyMywgMTE3OTMwLCAxMTc5MzcsIDExNzk0MywgMTE3OTUwLCAKKyAgICAxMTc5NTcsIDExNzk2NCwgMTE3OTcxLCAxMTc5NzgsIDExNzk4NSwgMTE3OTkxLCAxMTc5OTgsIDExODAwNSwgMTE4MDEyLCAKKyAgICAxMTgwMjEsIDExODAyOCwgMTE4MDM1LCAxMTgwMzksIDExODA0NSwgMTE4MDQ5LCAxMTgwNTUsIDExODA2MiwgMTE4MDY5LCAKKyAgICAxMTgwNzYsIDExODA4MCwgMTE4MDg0LCAxMTgwODgsIDExODA5MiwgMTE4MDk2LCAxMTgxMDMsIDExODEwNywgMTE4MTExLCAKKyAgICAxMTgxMTcsIDExODEyNSwgMTE4MTI5LCAxMTgxMzMsIDExODEzNywgMTE4MTQxLCAxMTgxNDgsIDExODE1MiwgMTE4MTU2LCAKKyAgICAxMTgxNjQsIDExODE2OCwgMTE4MTcyLCAxMTgxNzYsIDExODE4MCwgMTE4MTg2LCAxMTgxOTAsIDExODE5NCwgMTE4MjAwLCAKKyAgICAxMTgyMDcsIDExODIxMywgMTE4MjIwLCAxMTgyMzIsIDExODIzNiwgMTE4MjQzLCAxMTgyNTAsIDExODI1NywgMTE4MjY0LCAKKyAgICAxMTgyNzYsIDExODI4MywgMTE4Mjg3LCAxMTgyOTEsIDExODI5NSwgMTE4MzAyLCAxMTgzMDksIDExODMxNiwgMTE4MzIzLCAKKyAgICAxMTgzMzMsIDExODM0MCwgMTE4MzQ2LCAxMTgzNTMsIDExODM2MCwgMTE4MzY3LCAxMTgzNzQsIDExODM4MywgMTE4MzkzLCAKKyAgICAxMTg0MDAsIDExODQwNCwgMTE4NDExLCAxMTg0MTUsIDExODQxOSwgMTE4NDIzLCAxMTg0MzAsIDExODQzNywgMTE4NDQ3LCAKKyAgICAxMTg0NTMsIDExODQ1NywgMTE4NDY2LCAxMTg0NzAsIDExODQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE1OTc5LCAxMTU5ODUsIDExNTk5MSwgMTE1OTk4LCAxMTYwMDUsIAotICAgIDExNjAxMiwgMTE2MDE5LCAxMTYwMjYsIDExNjAzMywgMTE2MDM5LCAxMTYwNDYsIDExNjA1MywgMTE2MDYwLCAxMTYwNjcsIAotICAgIDExNjA3NCwgMTE2MDgxLCAxMTYwODcsIDExNjA5MywgMTE2MDk5LCAxMTYxMDUsIDExNjExMSwgMTE2MTE3LCAxMTYxMjMsIAotICAgIDExNjEyOSwgMTE2MTM1LCAxMTYxNDIsIDExNjE0OSwgMTE2MTU2LCAxMTYxNjMsIDExNjE3MCwgMTE2MTc3LCAxMTYxODMsIAotICAgIDExNjE4OSwgMTE2MTk1LCAxMTYyMDIsIDExNjIwOSwgMTE2MjE1LCAxMTYyMjEsIDExNjIzMCwgMTE2MjM3LCAxMTYyNDQsIAotICAgIDExNjI1MSwgMTE2MjU4LCAxMTYyNjUsIDExNjI3MiwgMTE2Mjc4LCAxMTYyODQsIDExNjI5MCwgMTE2Mjk5LCAxMTYzMDYsIAotICAgIDExNjMxMywgMTE2MzI0LCAxMTYzMzUsIDExNjM0MSwgMTE2MzQ3LCAxMTYzNTMsIDExNjM2MiwgMTE2MzY5LCAxMTYzNzYsIAotICAgIDExNjM4NiwgMTE2Mzk2LCAxMTY0MDcsIDExNjQxOCwgMTE2NDMwLCAxMTY0NDMsIDExNjQ1NCwgMTE2NDY1LCAxMTY0NzcsIAotICAgIDExNjQ5MCwgMTE2NTAxLCAxMTY1MTIsIDExNjUyMywgMTE2NTM0LCAxMTY1NDUsIDExNjU1NywgMTE2NTY1LCAxMTY1NzMsIAotICAgIDExNjU4MiwgMTE2NTkxLCAxMTY2MDAsIDExNjYwNiwgMTE2NjEyLCAxMTY2MTgsIDExNjYyNSwgMTE2NjM1LCAxMTY2NDIsIAotICAgIDExNjY1MiwgMTE2NjU3LCAxMTY2NjIsIDExNjY2OCwgMTE2Njc0LCAxMTY2ODIsIDExNjY5MCwgMTE2Njk5LCAxMTY3MTAsIAotICAgIDExNjcyMSwgMTE2NzI5LCAxMTY3MzcsIDExNjc0NiwgMTE2NzU1LCAxMTY3NjMsIDExNjc3MCwgMTE2Nzc4LCAxMTY3ODYsIAotICAgIDExNjc5MywgMTE2ODAwLCAxMTY4MDksIDExNjgxOCwgMTE2ODI3LCAxMTY4MzYsIDExNjg0NSwgMCwgMTE2ODU0LCAKLSAgICAxMTY4NjUsIDExNjg3MiwgMTE2ODgwLCAxMTY4ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNjg5NiwgCi0gICAgMTE2OTA1LCAxMTY5MTIsIDExNjkxOSwgMTE2OTI4LCAxMTY5MzUsIDExNjk0MiwgMTE2OTQ5LCAxMTY5NTksIDExNjk2NiwgCi0gICAgMTE2OTczLCAxMTY5ODAsIDExNjk4OCwgMTE2OTk1LCAxMTcwMDIsIDExNzAwOSwgMTE3MDIwLCAxMTcwMjcsIDExNzAzNCwgCi0gICAgMTE3MDQxLCAxMTcwNDgsIDExNzA1NSwgMTE3MDY0LCAxMTcwNzEsIDExNzA3NywgMTE3MDg0LCAxMTcwOTMsIDExNzEwMCwgCi0gICAgMTE3MTA3LCAxMTcxMTQsIDExNzEyNCwgMTE3MTMxLCAxMTcxMzgsIDExNzE0OCwgMTE3MTU4LCAxMTcxNjUsIDExNzE3MiwgCi0gICAgMTE3MTc5LCAxMTcxODYsIDExNzE5MywgMTE3MjAwLCAxMTcyMDksIDExNzIxNiwgMTE3MjIzLCAxMTcyMjksIDExNzIzNywgCi0gICAgMTE3MjQ2LCAxMTcyNTUsIDExNzI2NiwgMTE3Mjc1LCAxMTcyODQsIDExNzI5MywgMTE3MzAyLCAxMTczMTEsIDExNzMxOCwgCi0gICAgMTE3MzI1LCAxMTczMzQsIDExNzM0NiwgMTE3MzU2LCAxMTczNjMsIDExNzM3MCwgMTE3MzgwLCAxMTczOTAsIDExNzM5OSwgCi0gICAgMTE3NDA5LCAxMTc0MTYsIDExNzQyNiwgMTE3NDMzLCAxMTc0NDAsIDExNzQ0NywgMTE3NDU3LCAxMTc0NjcsIDExNzQ3NCwgCi0gICAgMTE3NDgxLCAxMTc0OTEsIDExNzQ5NywgMTE3NTA4LCAxMTc1MTcsIDExNzUyNywgMTE3NTM1LCAxMTc1NDgsIDExNzU1NSwgCi0gICAgMTE3NTYxLCAxMTc1NjksIDExNzU3NiwgMTE3NTg2LCAxMTc1OTAsIDExNzU5NCwgMTE3NTk4LCAxMTc2MDIsIDExNzYwNiwgCi0gICAgMTE3NjEwLCAxMTc2MTQsIDExNzYyMywgMTE3NjI3LCAxMTc2MzQsIDExNzYzOCwgMTE3NjQyLCAxMTc2NDYsIDExNzY1MCwgCi0gICAgMTE3NjU0LCAxMTc2NTgsIDExNzY2MiwgMTE3NjY2LCAxMTc2NzAsIDExNzY3NCwgMTE3Njc4LCAxMTc2ODIsIDExNzY4NiwgCi0gICAgMTE3NjkwLCAxMTc2OTQsIDExNzY5OCwgMTE3NzAyLCAxMTc3MDYsIDExNzcxMCwgMTE3NzE3LCAxMTc3MjQsIDExNzczNCwgCi0gICAgMTE3NzQ3LCAxMTc3NTcsIDExNzc2MSwgMTE3NzY1LCAxMTc3NjksIDExNzc3MywgMTE3Nzc3LCAxMTc3ODEsIDExNzc4NSwgCi0gICAgMTE3Nzg5LCAxMTc3OTMsIDExNzc5NywgMTE3ODAxLCAxMTc4MDgsIDExNzgxNSwgMTE3ODI2LCAxMTc4MzMsIDExNzg0MCwgCi0gICAgMTE3ODQ3LCAxMTc4NTQsIDExNzg2MSwgMTE3ODY4LCAxMTc4NzUsIDExNzg3OSwgMTE3ODgzLCAxMTc4OTAsIDExNzg5NywgCi0gICAgMTE3OTA0LCAxMTc5MTMsIDExNzkyMCwgMTE3OTMzLCAxMTc5NDMsIDExNzk1MCwgMTE3OTU3LCAxMTc5NjEsIDExNzk2NSwgCi0gICAgMTE3OTc0LCAxMTc5ODEsIDExNzk4OCwgMTE3OTk1LCAxMTgwMDgsIDExODAxNSwgMTE4MDIyLCAxMTgwMzIsIDExODA0MiwgCi0gICAgMTE4MDUxLCAxMTgwNTgsIDExODA2NSwgMTE4MDcyLCAxMTgwNzksIDExODA4NiwgMTE4MDkzLCAxMTgxMDMsIDExODEwOSwgCi0gICAgMTE4MTE3LCAxMTgxMjQsIDExODEzMiwgMTE4MTM5LCAxMTgxNTAsIDExODE1NywgMTE4MTYzLCAxMTgxNzAsIDExODE3NywgCi0gICAgMTE4MTg0LCAxMTgxOTEsIDExODIwMSwgMTE4MjExLCAxMTgyMTgsIDExODIyNSwgMTE4MjM0LCAxMTgyNDIsIDExODI0OCwgCi0gICAgMTE4MjU1LCAxMTgyNjIsIDExODI2OSwgMTE4Mjc2LCAxMTgyODAsIDExODI5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4NDgxLCAxMTg0ODcsIAorICAgIDExODQ5MywgMTE4NTAwLCAxMTg1MDcsIDExODUxNCwgMTE4NTIxLCAxMTg1MjgsIDExODUzNSwgMTE4NTQxLCAxMTg1NDgsIAorICAgIDExODU1NSwgMTE4NTYyLCAxMTg1NjksIDExODU3NiwgMTE4NTgzLCAxMTg1ODksIDExODU5NSwgMTE4NjAxLCAxMTg2MDcsIAorICAgIDExODYxMywgMTE4NjE5LCAxMTg2MjUsIDExODYzMSwgMTE4NjM3LCAxMTg2NDQsIDExODY1MSwgMTE4NjU4LCAxMTg2NjUsIAorICAgIDExODY3MiwgMTE4Njc5LCAxMTg2ODUsIDExODY5MSwgMTE4Njk3LCAxMTg3MDQsIDExODcxMSwgMTE4NzE3LCAxMTg3MjMsIAorICAgIDExODczMiwgMTE4NzM5LCAxMTg3NDYsIDExODc1MywgMTE4NzYwLCAxMTg3NjcsIDExODc3NCwgMTE4NzgwLCAxMTg3ODYsIAorICAgIDExODc5MiwgMTE4ODAxLCAxMTg4MDgsIDExODgxNSwgMTE4ODI2LCAxMTg4MzcsIDExODg0MywgMTE4ODQ5LCAxMTg4NTUsIAorICAgIDExODg2NCwgMTE4ODcxLCAxMTg4NzgsIDExODg4OCwgMTE4ODk4LCAxMTg5MDksIDExODkyMCwgMTE4OTMyLCAxMTg5NDUsIAorICAgIDExODk1NiwgMTE4OTY3LCAxMTg5NzksIDExODk5MiwgMTE5MDAzLCAxMTkwMTQsIDExOTAyNSwgMTE5MDM2LCAxMTkwNDcsIAorICAgIDExOTA1OSwgMTE5MDY3LCAxMTkwNzUsIDExOTA4NCwgMTE5MDkzLCAxMTkxMDIsIDExOTEwOCwgMTE5MTE0LCAxMTkxMjAsIAorICAgIDExOTEyNywgMTE5MTM3LCAxMTkxNDQsIDExOTE1NCwgMTE5MTU5LCAxMTkxNjQsIDExOTE3MCwgMTE5MTc2LCAxMTkxODQsIAorICAgIDExOTE5MiwgMTE5MjAxLCAxMTkyMTIsIDExOTIyMywgMTE5MjMxLCAxMTkyMzksIDExOTI0OCwgMTE5MjU3LCAxMTkyNjUsIAorICAgIDExOTI3MiwgMTE5MjgwLCAxMTkyODgsIDExOTI5NSwgMTE5MzAyLCAxMTkzMTEsIDExOTMyMCwgMTE5MzI5LCAxMTkzMzgsIAorICAgIDExOTM0NywgMCwgMTE5MzU2LCAxMTkzNjcsIDExOTM3NCwgMTE5MzgyLCAxMTkzOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDExOTM5OCwgMTE5NDA3LCAxMTk0MTQsIDExOTQyMSwgMTE5NDMwLCAxMTk0MzcsIDExOTQ0NCwgCisgICAgMTE5NDUxLCAxMTk0NjEsIDExOTQ2OCwgMTE5NDc1LCAxMTk0ODIsIDExOTQ5MCwgMTE5NDk3LCAxMTk1MDQsIDExOTUxMSwgCisgICAgMTE5NTIyLCAxMTk1MjksIDExOTUzNiwgMTE5NTQzLCAxMTk1NTAsIDExOTU1NywgMTE5NTY2LCAxMTk1NzMsIDExOTU3OSwgCisgICAgMTE5NTg2LCAxMTk1OTUsIDExOTYwMiwgMTE5NjA5LCAxMTk2MTYsIDExOTYyNiwgMTE5NjMzLCAxMTk2NDAsIDExOTY1MCwgCisgICAgMTE5NjYwLCAxMTk2NjcsIDExOTY3NCwgMTE5NjgxLCAxMTk2ODgsIDExOTY5NSwgMTE5NzAyLCAxMTk3MTEsIDExOTcxOCwgCisgICAgMTE5NzI1LCAxMTk3MzEsIDExOTczOSwgMTE5NzQ4LCAxMTk3NTcsIDExOTc2OCwgMTE5Nzc2LCAxMTk3ODUsIDExOTc5NCwgCisgICAgMTE5ODAzLCAxMTk4MTIsIDExOTgxOSwgMTE5ODI2LCAxMTk4MzUsIDExOTg0NywgMTE5ODU3LCAxMTk4NjQsIDExOTg3MSwgCisgICAgMTE5ODgxLCAxMTk4OTEsIDExOTkwMCwgMTE5OTEwLCAxMTk5MTcsIDExOTkyNywgMTE5OTM0LCAxMTk5NDEsIDExOTk0OCwgCisgICAgMTE5OTU4LCAxMTk5NjgsIDExOTk3NSwgMTE5OTgyLCAxMTk5OTIsIDExOTk5OCwgMTIwMDA5LCAxMjAwMTgsIDEyMDAyOCwgCisgICAgMTIwMDM2LCAxMjAwNDksIDEyMDA1NiwgMTIwMDYyLCAxMjAwNzAsIDEyMDA3NywgMTIwMDg3LCAxMjAwOTEsIDEyMDA5NSwgCisgICAgMTIwMDk5LCAxMjAxMDMsIDEyMDEwNywgMTIwMTExLCAxMjAxMTUsIDEyMDEyNCwgMTIwMTI4LCAxMjAxMzUsIDEyMDEzOSwgCisgICAgMTIwMTQzLCAxMjAxNDcsIDEyMDE1MSwgMTIwMTU1LCAxMjAxNTksIDEyMDE2MywgMTIwMTY3LCAxMjAxNzEsIDEyMDE3NSwgCisgICAgMTIwMTc5LCAxMjAxODMsIDEyMDE4NywgMTIwMTkxLCAxMjAxOTUsIDEyMDE5OSwgMTIwMjAzLCAxMjAyMDcsIDEyMDIxMSwgCisgICAgMTIwMjE4LCAxMjAyMjUsIDEyMDIzNSwgMTIwMjQ4LCAxMjAyNTgsIDEyMDI2MiwgMTIwMjY2LCAxMjAyNzAsIDEyMDI3NCwgCisgICAgMTIwMjc4LCAxMjAyODIsIDEyMDI4NiwgMTIwMjkwLCAxMjAyOTQsIDEyMDI5OCwgMTIwMzAyLCAxMjAzMDksIDEyMDMxNiwgCisgICAgMTIwMzI3LCAxMjAzMzQsIDEyMDM0MCwgMTIwMzQ3LCAxMjAzNTQsIDEyMDM2MSwgMTIwMzY4LCAxMjAzNzUsIDEyMDM3OSwgCisgICAgMTIwMzgzLCAxMjAzOTAsIDEyMDM5NywgMTIwNDA0LCAxMjA0MTMsIDEyMDQyMCwgMTIwNDMzLCAxMjA0NDMsIDEyMDQ1MCwgCisgICAgMTIwNDU3LCAxMjA0NjEsIDEyMDQ2NSwgMTIwNDc0LCAxMjA0ODEsIDEyMDQ4OCwgMTIwNDk1LCAxMjA1MDgsIDEyMDUxNSwgCisgICAgMTIwNTIyLCAxMjA1MzIsIDEyMDU0MiwgMTIwNTUxLCAxMjA1NTgsIDEyMDU2NSwgMTIwNTcyLCAxMjA1NzksIDEyMDU4NiwgCisgICAgMTIwNTkzLCAxMjA2MDMsIDEyMDYwOSwgMTIwNjE3LCAxMjA2MjQsIDEyMDYzMiwgMTIwNjM5LCAxMjA2NTAsIDEyMDY1NywgCisgICAgMTIwNjYzLCAxMjA2NzAsIDEyMDY3NywgMTIwNjg0LCAxMjA2OTEsIDEyMDcwMSwgMTIwNzExLCAxMjA3MTgsIDEyMDcyNSwgCisgICAgMTIwNzM0LCAxMjA3NDIsIDEyMDc0OCwgMTIwNzU1LCAxMjA3NjIsIDEyMDc2OSwgMTIwNzc2LCAxMjA3ODAsIDEyMDc5MCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTEwMCwxMjYgKzIwMjU1LDEyNiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODMwMCwgMTE4MzA0LCAxMTgzMDgsIDExODMxMiwgCi0gICAgMTE4MzE2LCAxMTgzMjAsIDExODMyNCwgMTE4MzI4LCAxMTgzMzIsIDExODMzNiwgMTE4MzQwLCAxMTgzNDQsIDExODM0OCwgCi0gICAgMTE4MzUyLCAxMTgzNTYsIDExODM2MCwgMTE4MzY0LCAxMTgzNjgsIDExODM3MiwgMTE4Mzc2LCAxMTgzODAsIDExODM4NCwgCi0gICAgMTE4Mzg4LCAxMTgzOTIsIDExODM5NiwgMTE4NDAwLCAxMTg0MDQsIDExODQwOCwgMTE4NDEyLCAxMTg0MTYsIDExODQyMCwgCi0gICAgMTE4NDI0LCAxMTg0MjgsIDExODQzMiwgMTE4NDM2LCAxMTg0NDAsIDExODQ0NCwgMTE4NDQ4LCAxMTg0NTIsIDExODQ1NiwgCi0gICAgMTE4NDYwLCAxMTg0NjQsIDExODQ2OCwgMTE4NDcyLCAxMTg0NzYsIDExODQ4MCwgMTE4NDg0LCAxMTg0ODgsIDExODQ5MiwgCi0gICAgMTE4NDk2LCAxMTg1MDAsIDExODUwNCwgMTE4NTA4LCAxMTg1MTIsIDExODUxNiwgMTE4NTIwLCAxMTg1MjQsIDExODUyOCwgCi0gICAgMTE4NTMyLCAxMTg1MzYsIDExODU0MCwgMTE4NTQ0LCAxMTg1NDgsIDExODU1MiwgMTE4NTU2LCAxMTg1NjAsIDExODU2NCwgCi0gICAgMTE4NTY4LCAxMTg1NzIsIDExODU3NiwgMTE4NTgwLCAxMTg1ODQsIDExODU4OCwgMTE4NTkyLCAxMTg1OTYsIDExODYwMCwgCi0gICAgMTE4NjA0LCAxMTg2MDgsIDExODYxMiwgMTE4NjE2LCAxMTg2MjAsIDExODYyNCwgMTE4NjI4LCAxMTg2MzIsIDExODYzNiwgCi0gICAgMTE4NjQwLCAxMTg2NDQsIDExODY0OCwgMTE4NjUyLCAxMTg2NTYsIDExODY2MCwgMTE4NjY0LCAxMTg2NjgsIDExODY3MiwgCi0gICAgMTE4Njc2LCAxMTg2ODAsIDExODY4NCwgMTE4Njg4LCAxMTg2OTIsIDExODY5NiwgMTE4NzAwLCAxMTg3MDQsIDExODcwOCwgCi0gICAgMTE4NzEyLCAxMTg3MTYsIDExODcyMCwgMTE4NzI0LCAxMTg3MjgsIDExODczMiwgMTE4NzM2LCAxMTg3NDAsIDExODc0NCwgCi0gICAgMTE4NzQ4LCAxMTg3NTIsIDExODc1NiwgMTE4NzYwLCAxMTg3NjQsIDExODc2OCwgMTE4NzcyLCAxMTg3NzYsIDExODc4MCwgCi0gICAgMTE4Nzg0LCAxMTg3ODgsIDExODc5MiwgMTE4Nzk2LCAxMTg4MDAsIDExODgwNCwgMTE4ODA4LCAxMTg4MTIsIDExODgxNiwgCi0gICAgMTE4ODIwLCAxMTg4MjQsIDExODgyOCwgMTE4ODMyLCAxMTg4MzYsIDExODg0MCwgMTE4ODQ0LCAxMTg4NDgsIDExODg1MiwgCi0gICAgMTE4ODU2LCAxMTg4NjAsIDExODg2NCwgMTE4ODY4LCAxMTg4NzIsIDExODg3NiwgMTE4ODgwLCAxMTg4ODQsIDExODg4OCwgCi0gICAgMTE4ODkyLCAxMTg4OTYsIDExODkwMCwgMTE4OTA0LCAxMTg5MDgsIDExODkxMiwgMTE4OTE2LCAxMTg5MjAsIDExODkyNCwgCi0gICAgMTE4OTI4LCAxMTg5MzIsIDExODkzNiwgMTE4OTQwLCAxMTg5NDQsIDExODk0OCwgMTE4OTUyLCAxMTg5NTYsIDExODk2MCwgCi0gICAgMTE4OTY0LCAxMTg5NjgsIDExODk3MiwgMTE4OTc2LCAxMTg5ODAsIDExODk4NCwgMTE4OTg4LCAxMTg5OTIsIDExODk5NiwgCi0gICAgMTE5MDAwLCAxMTkwMDQsIDExOTAwOCwgMTE5MDEyLCAxMTkwMTYsIDExOTAyMCwgMTE5MDI0LCAxMTkwMjgsIDExOTAzMiwgCi0gICAgMTE5MDM2LCAxMTkwNDAsIDExOTA0NCwgMTE5MDQ4LCAxMTkwNTIsIDExOTA1NiwgMTE5MDYwLCAxMTkwNjQsIDExOTA2OCwgCi0gICAgMTE5MDcyLCAxMTkwNzYsIDExOTA4MCwgMTE5MDg0LCAxMTkwODgsIDExOTA5MiwgMTE5MDk2LCAxMTkxMDAsIDExOTEwNCwgCi0gICAgMTE5MTA4LCAxMTkxMTIsIDExOTExNiwgMTE5MTIwLCAxMTkxMjQsIDExOTEyOCwgMTE5MTMyLCAxMTkxMzYsIDExOTE0MCwgCi0gICAgMTE5MTQ0LCAxMTkxNDgsIDExOTE1MiwgMTE5MTU2LCAxMTkxNjAsIDExOTE2NCwgMTE5MTY4LCAxMTkxNzIsIDExOTE3NiwgCi0gICAgMTE5MTgwLCAxMTkxODQsIDExOTE4OCwgMTE5MTkyLCAxMTkxOTYsIDExOTIwMCwgMTE5MjA0LCAxMTkyMDgsIDExOTIxMiwgCi0gICAgMTE5MjE2LCAxMTkyMjAsIDExOTIyNCwgMTE5MjI4LCAxMTkyMzIsIDExOTIzNiwgMTE5MjQwLCAxMTkyNDQsIDExOTI0OCwgCi0gICAgMTE5MjUyLCAxMTkyNTYsIDExOTI2MCwgMTE5MjY0LCAxMTkyNjgsIDExOTI3MiwgMTE5Mjc2LCAxMTkyODAsIDExOTI4NCwgCi0gICAgMTE5Mjg4LCAxMTkyOTIsIDExOTI5NiwgMTE5MzAwLCAxMTkzMDQsIDExOTMwOCwgMTE5MzEyLCAxMTkzMTYsIDExOTMyMCwgCi0gICAgMTE5MzI0LCAxMTkzMjgsIDExOTMzMiwgMTE5MzM2LCAxMTkzNDAsIDExOTM0NCwgMTE5MzQ4LCAxMTkzNTIsIDExOTM1NiwgCi0gICAgMTE5MzYwLCAxMTkzNjQsIDExOTM2OCwgMTE5MzcyLCAxMTkzNzYsIDExOTM4MCwgMTE5Mzg0LCAxMTkzODgsIDExOTM5MiwgCi0gICAgMTE5Mzk2LCAxMTk0MDAsIDExOTQwNCwgMTE5NDA4LCAxMTk0MTIsIDExOTQxNiwgMTE5NDIwLCAxMTk0MjQsIDExOTQyOCwgCi0gICAgMTE5NDMyLCAxMTk0MzYsIDExOTQ0MCwgMTE5NDQ0LCAxMTk0NDgsIDExOTQ1MiwgMTE5NDU2LCAxMTk0NjAsIDExOTQ2NCwgCi0gICAgMTE5NDY4LCAxMTk0NzIsIDExOTQ3NiwgMTE5NDgwLCAxMTk0ODQsIDExOTQ4OCwgMTE5NDkyLCAxMTk0OTYsIDExOTUwMCwgCi0gICAgMTE5NTA0LCAxMTk1MDgsIDExOTUxMiwgMTE5NTE2LCAxMTk1MjAsIDExOTUyNCwgMTE5NTI4LCAxMTk1MzIsIDExOTUzNiwgCi0gICAgMTE5NTQwLCAxMTk1NDQsIDExOTU0OCwgMTE5NTUyLCAxMTk1NTYsIDExOTU2MCwgMTE5NTY0LCAxMTk1NjgsIDExOTU3MiwgCi0gICAgMTE5NTc2LCAxMTk1ODAsIDExOTU4NCwgMTE5NTg4LCAxMTk1OTIsIDExOTU5NiwgMTE5NjAwLCAxMTk2MDQsIDExOTYwOCwgCi0gICAgMTE5NjEyLCAxMTk2MTYsIDExOTYyMCwgMTE5NjI0LCAxMTk2MjgsIDExOTYzMiwgMTE5NjM2LCAxMTk2NDAsIDExOTY0NCwgCi0gICAgMTE5NjQ4LCAxMTk2NTIsIDExOTY1NiwgMTE5NjYwLCAxMTk2NjQsIDExOTY2OCwgMTE5NjcyLCAxMTk2NzYsIDExOTY4MCwgCi0gICAgMTE5Njg0LCAxMTk2ODgsIDExOTY5MiwgMTE5Njk2LCAxMTk3MDAsIDExOTcwNCwgMTE5NzA4LCAxMTk3MTIsIDExOTcxNiwgCi0gICAgMTE5NzIwLCAxMTk3MjQsIDExOTcyOCwgMTE5NzMyLCAxMTk3MzYsIDExOTc0MCwgMTE5NzQ0LCAxMTk3NDgsIDExOTc1MiwgCi0gICAgMTE5NzU2LCAxMTk3NjAsIDExOTc2NCwgMTE5NzY4LCAxMTk3NzIsIDExOTc3NiwgMTE5NzgwLCAxMTk3ODQsIDExOTc4OCwgCi0gICAgMTE5NzkyLCAxMTk3OTYsIDExOTgwMCwgMTE5ODA0LCAxMTk4MDgsIDExOTgxMiwgMTE5ODE2LCAxMTk4MjAsIDExOTgyNCwgCi0gICAgMTE5ODI4LCAxMTk4MzIsIDExOTgzNiwgMTE5ODQwLCAxMTk4NDQsIDExOTg0OCwgMTE5ODUyLCAxMTk4NTYsIDExOTg2MCwgCi0gICAgMTE5ODY0LCAxMTk4NjgsIDExOTg3MiwgMTE5ODc2LCAxMTk4ODAsIDExOTg4NCwgMTE5ODg4LCAxMTk4OTIsIDExOTg5NiwgCi0gICAgMTE5OTAwLCAxMTk5MDQsIDExOTkwOCwgMTE5OTEyLCAxMTk5MTYsIDExOTkyMCwgMTE5OTI0LCAxMTk5MjgsIDExOTkzMiwgCi0gICAgMTE5OTM2LCAxMTk5NDAsIDExOTk0NCwgMTE5OTQ4LCAxMTk5NTIsIDExOTk1NiwgMTE5OTYwLCAxMTk5NjQsIDExOTk2OCwgCi0gICAgMTE5OTcyLCAxMTk5NzYsIDExOTk4MCwgMTE5OTg0LCAxMTk5ODgsIDExOTk5MiwgMTE5OTk2LCAxMjAwMDAsIDEyMDAwNCwgCi0gICAgMTIwMDA4LCAxMjAwMTIsIDEyMDAxNiwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMyLCAxMjAwMzYsIDEyMDA0MCwgCi0gICAgMTIwMDQ0LCAxMjAwNDgsIDEyMDA1MiwgMTIwMDU2LCAxMjAwNjAsIDEyMDA2NCwgMTIwMDY4LCAxMjAwNzIsIDEyMDA3NiwgCi0gICAgMTIwMDgwLCAxMjAwODQsIDEyMDA4OCwgMTIwMDkyLCAxMjAwOTYsIDEyMDEwMCwgMTIwMTA0LCAxMjAxMDgsIDEyMDExMiwgCi0gICAgMTIwMTE2LCAxMjAxMjAsIDEyMDEyNCwgMTIwMTI4LCAxMjAxMzIsIDEyMDEzNiwgMTIwMTQwLCAxMjAxNDQsIDEyMDE0OCwgCi0gICAgMTIwMTUyLCAxMjAxNTYsIDEyMDE2MCwgMTIwMTY0LCAxMjAxNjgsIDEyMDE3MiwgMTIwMTc2LCAxMjAxODAsIDEyMDE4NCwgCi0gICAgMTIwMTg4LCAxMjAxOTIsIDEyMDE5NiwgMTIwMjAwLCAxMjAyMDQsIDEyMDIwOCwgMTIwMjEyLCAxMjAyMTYsIDEyMDIyMCwgCi0gICAgMTIwMjI0LCAxMjAyMjgsIDEyMDIzMiwgMTIwMjM2LCAxMjAyNDAsIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDEyMDI1NiwgCi0gICAgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgCi0gICAgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjQsIDEyMDMyOCwgCi0gICAgMTIwMzMyLCAxMjAzMzYsIDEyMDM0MCwgMTIwMzQ0LCAxMjAzNDgsIDEyMDM1MiwgMTIwMzU2LCAxMjAzNjAsIDEyMDM2NCwgCi0gICAgMTIwMzY4LCAxMjAzNzIsIDEyMDM3NiwgMTIwMzgwLCAxMjAzODQsIDEyMDM4OCwgMTIwMzkyLCAxMjAzOTYsIDEyMDQwMCwgCi0gICAgMTIwNDA0LCAxMjA0MDgsIDEyMDQxMiwgMTIwNDE2LCAxMjA0MjAsIDEyMDQyNCwgMTIwNDI4LCAxMjA0MzIsIDEyMDQzNiwgCi0gICAgMTIwNDQwLCAxMjA0NDQsIDEyMDQ0OCwgMTIwNDUyLCAxMjA0NTYsIDEyMDQ2MCwgMTIwNDY0LCAxMjA0NjgsIDEyMDQ3MiwgCi0gICAgMTIwNDc2LCAxMjA0ODAsIDEyMDQ4NCwgMTIwNDg4LCAxMjA0OTIsIDEyMDQ5NiwgMTIwNTAwLCAxMjA1MDQsIDEyMDUwOCwgCi0gICAgMTIwNTEyLCAxMjA1MTYsIDEyMDUyMCwgMTIwNTI0LCAxMjA1MjgsIDEyMDUzMiwgMTIwNTM2LCAxMjA1NDAsIDEyMDU0NCwgCi0gICAgMTIwNTQ4LCAxMjA1NTIsIDEyMDU1NiwgMTIwNTYwLCAxMjA1NjQsIDEyMDU2OCwgMTIwNTcyLCAxMjA1NzYsIDEyMDU4MCwgCi0gICAgMTIwNTg0LCAxMjA1ODgsIDEyMDU5MiwgMTIwNTk2LCAxMjA2MDAsIDEyMDYwNCwgMTIwNjA4LCAxMjA2MTIsIDEyMDYxNiwgCi0gICAgMTIwNjIwLCAxMjA2MjQsIDEyMDYyOCwgMTIwNjMyLCAxMjA2MzYsIDEyMDY0MCwgMTIwNjQ0LCAxMjA2NDgsIDEyMDY1MiwgCi0gICAgMTIwNjU2LCAxMjA2NjAsIDEyMDY2NCwgMTIwNjY4LCAxMjA2NzIsIDEyMDY3NiwgMTIwNjgwLCAxMjA2ODQsIDEyMDY4OCwgCi0gICAgMTIwNjkyLCAxMjA2OTYsIDEyMDcwMCwgMTIwNzA0LCAxMjA3MDgsIDEyMDcxMiwgMTIwNzE2LCAxMjA3MjAsIDEyMDcyNCwgCi0gICAgMTIwNzI4LCAxMjA3MzIsIDEyMDczNiwgMTIwNzQwLCAxMjA3NDQsIDEyMDc0OCwgMTIwNzUyLCAxMjA3NTYsIDEyMDc2MCwgCi0gICAgMTIwNzY0LCAxMjA3NjgsIDEyMDc3MiwgMTIwNzc2LCAxMjA3ODAsIDEyMDc4NCwgMTIwNzg4LCAxMjA3OTIsIDEyMDc5NiwgCi0gICAgMTIwODAwLCAxMjA4MDQsIDEyMDgwOCwgMTIwODEyLCAxMjA4MTYsIDEyMDgyMCwgMTIwODI0LCAxMjA4MjgsIDEyMDgzMiwgCi0gICAgMTIwODM2LCAxMjA4NDAsIDEyMDg0NCwgMTIwODQ4LCAxMjA4NTIsIDEyMDg1NiwgMTIwODYwLCAxMjA4NjQsIDEyMDg2OCwgCi0gICAgMTIwODcyLCAxMjA4NzYsIDEyMDg4MCwgMTIwODg0LCAxMjA4ODgsIDEyMDg5MiwgMTIwODk2LCAxMjA5MDAsIDEyMDkwNCwgCi0gICAgMTIwOTA4LCAxMjA5MTIsIDEyMDkxNiwgMTIwOTIwLCAxMjA5MjQsIDEyMDkyOCwgMTIwOTMyLCAxMjA5MzYsIDEyMDk0MCwgCi0gICAgMTIwOTQ0LCAxMjA5NDgsIDEyMDk1MiwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgMTIwOTY4LCAxMjA5NzIsIDEyMDk3NiwgCi0gICAgMTIwOTgwLCAxMjA5ODQsIDEyMDk4OCwgMTIwOTkyLCAxMjA5OTYsIDEyMTAwMCwgMTIxMDA0LCAxMjEwMDgsIDEyMTAxMiwgCi0gICAgMTIxMDE2LCAxMjEwMjAsIDEyMTAyNCwgMTIxMDI4LCAxMjEwMzIsIDEyMTAzNiwgMTIxMDQwLCAxMjEwNDQsIDEyMTA0OCwgCi0gICAgMTIxMDUyLCAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MiwgMTIxMDc2LCAxMjEwODAsIDEyMTA4NCwgCi0gICAgMTIxMDg4LCAxMjEwOTIsIDEyMTA5NiwgMTIxMTAwLCAxMjExMDQsIDEyMTEwOCwgMTIxMTEyLCAxMjExMTYsIDEyMTEyMCwgCi0gICAgMTIxMTI0LCAxMjExMjgsIDEyMTEzMiwgMTIxMTM2LCAxMjExNDAsIDEyMTE0NCwgMTIxMTQ4LCAxMjExNTIsIDEyMTE1NiwgCi0gICAgMTIxMTYwLCAxMjExNjQsIDEyMTE2OCwgMTIxMTcyLCAxMjExNzYsIDEyMTE4MCwgMTIxMTg0LCAxMjExODgsIDEyMTE5MiwgCi0gICAgMTIxMTk2LCAxMjEyMDAsIDEyMTIwNCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNiwgMTIxMjIwLCAxMjEyMjQsIDEyMTIyOCwgCi0gICAgMTIxMjMyLCAxMjEyMzYsIDEyMTI0MCwgMTIxMjQ0LCAxMjEyNDgsIDEyMTI1MiwgMTIxMjU2LCAxMjEyNjAsIDEyMTI2NCwgCi0gICAgMTIxMjY4LCAxMjEyNzIsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI4OCwgMTIxMjkyLCAxMjEyOTYsIDEyMTMwMCwgCi0gICAgMTIxMzA0LCAxMjEzMDgsIDEyMTMxMiwgMTIxMzE2LCAxMjEzMjAsIDEyMTMyNCwgMTIxMzI4LCAxMjEzMzIsIDEyMTMzNiwgCi0gICAgMTIxMzQwLCAxMjEzNDQsIDEyMTM0OCwgMTIxMzUyLCAxMjEzNTYsIDEyMTM2MCwgMTIxMzY0LCAxMjEzNjgsIDEyMTM3MiwgCi0gICAgMTIxMzc2LCAxMjEzODAsIDEyMTM4NCwgMTIxMzg4LCAxMjEzOTIsIDEyMTM5NiwgMTIxNDAwLCAxMjE0MDQsIDEyMTQwOCwgCi0gICAgMTIxNDEyLCAxMjE0MTYsIDEyMTQyMCwgMTIxNDI0LCAxMjE0MjgsIDEyMTQzMiwgMTIxNDM2LCAxMjE0NDAsIDEyMTQ0NCwgCi0gICAgMTIxNDQ4LCAxMjE0NTIsIDEyMTQ1NiwgMTIxNDYwLCAxMjE0NjQsIDEyMTQ2OCwgMTIxNDcyLCAxMjE0NzYsIDEyMTQ4MCwgCi0gICAgMTIxNDg0LCAxMjE0ODgsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgCi0gICAgMTIxNTIwLCAxMjE1MjQsIDEyMTUyOCwgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgCi0gICAgMTIxNTU2LCAxMjE1NjAsIDEyMTU2NCwgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgCi0gICAgMTIxNTkyLCAxMjE1OTYsIDEyMTYwMCwgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgCi0gICAgMTIxNjI4LCAxMjE2MzIsIDEyMTYzNiwgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgCi0gICAgMTIxNjY0LCAxMjE2NjgsIDEyMTY3MiwgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAxMjE2OTIsIDEyMTY5NiwgCi0gICAgMTIxNzAwLCAxMjE3MDQsIDEyMTcwOCwgMTIxNzEyLCAxMjE3MTYsIDEyMTcyMCwgMTIxNzI0LCAxMjE3MjgsIDEyMTczMiwgCi0gICAgMTIxNzM2LCAxMjE3NDAsIDEyMTc0NCwgMTIxNzQ4LCAxMjE3NTIsIDEyMTc1NiwgMTIxNzYwLCAxMjE3NjQsIDEyMTc2OCwgCi0gICAgMTIxNzcyLCAxMjE3NzYsIDEyMTc4MCwgMTIxNzg0LCAxMjE3ODgsIDEyMTc5MiwgMTIxNzk2LCAxMjE4MDAsIDEyMTgwNCwgCi0gICAgMTIxODA4LCAxMjE4MTIsIDEyMTgxNiwgMTIxODIwLCAxMjE4MjQsIDEyMTgyOCwgMTIxODMyLCAxMjE4MzYsIDEyMTg0MCwgCi0gICAgMTIxODQ0LCAxMjE4NDgsIDEyMTg1MiwgMTIxODU2LCAxMjE4NjAsIDEyMTg2NCwgMTIxODY4LCAxMjE4NzIsIDEyMTg3NiwgCi0gICAgMTIxODgwLCAxMjE4ODQsIDEyMTg4OCwgMTIxODkyLCAxMjE4OTYsIDEyMTkwMCwgMTIxOTA0LCAxMjE5MDgsIDEyMTkxMiwgCi0gICAgMTIxOTE2LCAxMjE5MjAsIDEyMTkyNCwgMTIxOTI4LCAxMjE5MzIsIDEyMTkzNiwgMTIxOTQwLCAxMjE5NDQsIDEyMTk0OCwgCi0gICAgMTIxOTUyLCAxMjE5NTYsIDEyMTk2MCwgMTIxOTY0LCAxMjE5NjgsIDEyMTk3MiwgMTIxOTc2LCAxMjE5ODAsIDEyMTk4NCwgCi0gICAgMTIxOTg4LCAxMjE5OTIsIDEyMTk5NiwgMTIyMDAwLCAxMjIwMDQsIDEyMjAwOCwgMTIyMDEyLCAxMjIwMTYsIDEyMjAyMCwgCi0gICAgMTIyMDI0LCAxMjIwMjgsIDEyMjAzMiwgMTIyMDM2LCAxMjIwNDAsIDEyMjA0NCwgMTIyMDQ4LCAxMjIwNTIsIDEyMjA1NiwgCi0gICAgMTIyMDYwLCAxMjIwNjQsIDEyMjA2OCwgMTIyMDcyLCAxMjIwNzYsIDEyMjA4MCwgMTIyMDg0LCAxMjIwODgsIDEyMjA5MiwgCi0gICAgMTIyMDk2LCAxMjIxMDAsIDEyMjEwNCwgMTIyMTA4LCAxMjIxMTIsIDEyMjExNiwgMTIyMTIwLCAxMjIxMjQsIDEyMjEyOCwgCi0gICAgMTIyMTMyLCAxMjIxMzYsIDEyMjE0MCwgMTIyMTQ0LCAxMjIxNDgsIDEyMjE1MiwgMTIyMTU2LCAxMjIxNjAsIDEyMjE2NCwgCi0gICAgMTIyMTY4LCAxMjIxNzIsIDEyMjE3NiwgMTIyMTgwLCAxMjIxODQsIDEyMjE4OCwgMTIyMTkyLCAxMjIxOTYsIDEyMjIwMCwgCi0gICAgMTIyMjA0LCAxMjIyMDgsIDEyMjIxMiwgMTIyMjE2LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNiwgCi0gICAgMTIyMjQwLCAxMjIyNDQsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY0LCAxMjIyNjgsIDEyMjI3MiwgCi0gICAgMTIyMjc2LCAxMjIyODAsIDEyMjI4NCwgMTIyMjg4LCAxMjIyOTIsIDEyMjI5NiwgMTIyMzAwLCAxMjIzMDQsIDEyMjMwOCwgCi0gICAgMTIyMzEyLCAxMjIzMTYsIDEyMjMyMCwgMTIyMzI0LCAxMjIzMjgsIDEyMjMzMiwgMTIyMzM2LCAxMjIzNDAsIDEyMjM0NCwgCi0gICAgMTIyMzQ4LCAxMjIzNTIsIDEyMjM1NiwgMTIyMzYwLCAxMjIzNjQsIDEyMjM2OCwgMTIyMzcyLCAxMjIzNzYsIDEyMjM4MCwgCi0gICAgMTIyMzg0LCAxMjIzODgsIDEyMjM5MiwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwNCwgMTIyNDA4LCAxMjI0MTIsIDEyMjQxNiwgCi0gICAgMTIyNDIwLCAxMjI0MjQsIDEyMjQyOCwgMTIyNDMyLCAxMjI0MzYsIDEyMjQ0MCwgMTIyNDQ0LCAxMjI0NDgsIDEyMjQ1MiwgCi0gICAgMTIyNDU2LCAxMjI0NjAsIDEyMjQ2NCwgMTIyNDY4LCAxMjI0NzIsIDEyMjQ3NiwgMTIyNDgwLCAxMjI0ODQsIDEyMjQ4OCwgCi0gICAgMTIyNDkyLCAxMjI0OTYsIDEyMjUwMCwgMTIyNTA0LCAxMjI1MDgsIDEyMjUxMiwgMTIyNTE2LCAxMjI1MjAsIDEyMjUyNCwgCi0gICAgMTIyNTI4LCAxMjI1MzIsIDEyMjUzNiwgMTIyNTQwLCAxMjI1NDQsIDEyMjU0OCwgMTIyNTUyLCAxMjI1NTYsIDEyMjU2MCwgCi0gICAgMTIyNTY0LCAxMjI1NjgsIDEyMjU3MiwgMTIyNTc2LCAxMjI1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDgwMCwgCisgICAgMTIwODA0LCAxMjA4MDgsIDEyMDgxMiwgMTIwODE2LCAxMjA4MjAsIDEyMDgyNCwgMTIwODI4LCAxMjA4MzIsIDEyMDgzNiwgCisgICAgMTIwODQwLCAxMjA4NDQsIDEyMDg0OCwgMTIwODUyLCAxMjA4NTYsIDEyMDg2MCwgMTIwODY0LCAxMjA4NjgsIDEyMDg3MiwgCisgICAgMTIwODc2LCAxMjA4ODAsIDEyMDg4NCwgMTIwODg4LCAxMjA4OTIsIDEyMDg5NiwgMTIwOTAwLCAxMjA5MDQsIDEyMDkwOCwgCisgICAgMTIwOTEyLCAxMjA5MTYsIDEyMDkyMCwgMTIwOTI0LCAxMjA5MjgsIDEyMDkzMiwgMTIwOTM2LCAxMjA5NDAsIDEyMDk0NCwgCisgICAgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIDEyMDk2OCwgMTIwOTcyLCAxMjA5NzYsIDEyMDk4MCwgCisgICAgMTIwOTg0LCAxMjA5ODgsIDEyMDk5MiwgMTIwOTk2LCAxMjEwMDAsIDEyMTAwNCwgMTIxMDA4LCAxMjEwMTIsIDEyMTAxNiwgCisgICAgMTIxMDIwLCAxMjEwMjQsIDEyMTAyOCwgMTIxMDMyLCAxMjEwMzYsIDEyMTA0MCwgMTIxMDQ0LCAxMjEwNDgsIDEyMTA1MiwgCisgICAgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzIsIDEyMTA3NiwgMTIxMDgwLCAxMjEwODQsIDEyMTA4OCwgCisgICAgMTIxMDkyLCAxMjEwOTYsIDEyMTEwMCwgMTIxMTA0LCAxMjExMDgsIDEyMTExMiwgMTIxMTE2LCAxMjExMjAsIDEyMTEyNCwgCisgICAgMTIxMTI4LCAxMjExMzIsIDEyMTEzNiwgMTIxMTQwLCAxMjExNDQsIDEyMTE0OCwgMTIxMTUyLCAxMjExNTYsIDEyMTE2MCwgCisgICAgMTIxMTY0LCAxMjExNjgsIDEyMTE3MiwgMTIxMTc2LCAxMjExODAsIDEyMTE4NCwgMTIxMTg4LCAxMjExOTIsIDEyMTE5NiwgCisgICAgMTIxMjAwLCAxMjEyMDQsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTYsIDEyMTIyMCwgMTIxMjI0LCAxMjEyMjgsIDEyMTIzMiwgCisgICAgMTIxMjM2LCAxMjEyNDAsIDEyMTI0NCwgMTIxMjQ4LCAxMjEyNTIsIDEyMTI1NiwgMTIxMjYwLCAxMjEyNjQsIDEyMTI2OCwgCisgICAgMTIxMjcyLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyODgsIDEyMTI5MiwgMTIxMjk2LCAxMjEzMDAsIDEyMTMwNCwgCisgICAgMTIxMzA4LCAxMjEzMTIsIDEyMTMxNiwgMTIxMzIwLCAxMjEzMjQsIDEyMTMyOCwgMTIxMzMyLCAxMjEzMzYsIDEyMTM0MCwgCisgICAgMTIxMzQ0LCAxMjEzNDgsIDEyMTM1MiwgMTIxMzU2LCAxMjEzNjAsIDEyMTM2NCwgMTIxMzY4LCAxMjEzNzIsIDEyMTM3NiwgCisgICAgMTIxMzgwLCAxMjEzODQsIDEyMTM4OCwgMTIxMzkyLCAxMjEzOTYsIDEyMTQwMCwgMTIxNDA0LCAxMjE0MDgsIDEyMTQxMiwgCisgICAgMTIxNDE2LCAxMjE0MjAsIDEyMTQyNCwgMTIxNDI4LCAxMjE0MzIsIDEyMTQzNiwgMTIxNDQwLCAxMjE0NDQsIDEyMTQ0OCwgCisgICAgMTIxNDUyLCAxMjE0NTYsIDEyMTQ2MCwgMTIxNDY0LCAxMjE0NjgsIDEyMTQ3MiwgMTIxNDc2LCAxMjE0ODAsIDEyMTQ4NCwgCisgICAgMTIxNDg4LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIDEyMTUyMCwgCisgICAgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIDEyMTU1NiwgCisgICAgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIDEyMTU5MiwgCisgICAgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIDEyMTYyOCwgCisgICAgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIDEyMTY2NCwgCisgICAgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIDEyMTcwMCwgCisgICAgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgMTIxNzE2LCAxMjE3MjAsIDEyMTcyNCwgMTIxNzI4LCAxMjE3MzIsIDEyMTczNiwgCisgICAgMTIxNzQwLCAxMjE3NDQsIDEyMTc0OCwgMTIxNzUyLCAxMjE3NTYsIDEyMTc2MCwgMTIxNzY0LCAxMjE3NjgsIDEyMTc3MiwgCisgICAgMTIxNzc2LCAxMjE3ODAsIDEyMTc4NCwgMTIxNzg4LCAxMjE3OTIsIDEyMTc5NiwgMTIxODAwLCAxMjE4MDQsIDEyMTgwOCwgCisgICAgMTIxODEyLCAxMjE4MTYsIDEyMTgyMCwgMTIxODI0LCAxMjE4MjgsIDEyMTgzMiwgMTIxODM2LCAxMjE4NDAsIDEyMTg0NCwgCisgICAgMTIxODQ4LCAxMjE4NTIsIDEyMTg1NiwgMTIxODYwLCAxMjE4NjQsIDEyMTg2OCwgMTIxODcyLCAxMjE4NzYsIDEyMTg4MCwgCisgICAgMTIxODg0LCAxMjE4ODgsIDEyMTg5MiwgMTIxODk2LCAxMjE5MDAsIDEyMTkwNCwgMTIxOTA4LCAxMjE5MTIsIDEyMTkxNiwgCisgICAgMTIxOTIwLCAxMjE5MjQsIDEyMTkyOCwgMTIxOTMyLCAxMjE5MzYsIDEyMTk0MCwgMTIxOTQ0LCAxMjE5NDgsIDEyMTk1MiwgCisgICAgMTIxOTU2LCAxMjE5NjAsIDEyMTk2NCwgMTIxOTY4LCAxMjE5NzIsIDEyMTk3NiwgMTIxOTgwLCAxMjE5ODQsIDEyMTk4OCwgCisgICAgMTIxOTkyLCAxMjE5OTYsIDEyMjAwMCwgMTIyMDA0LCAxMjIwMDgsIDEyMjAxMiwgMTIyMDE2LCAxMjIwMjAsIDEyMjAyNCwgCisgICAgMTIyMDI4LCAxMjIwMzIsIDEyMjAzNiwgMTIyMDQwLCAxMjIwNDQsIDEyMjA0OCwgMTIyMDUyLCAxMjIwNTYsIDEyMjA2MCwgCisgICAgMTIyMDY0LCAxMjIwNjgsIDEyMjA3MiwgMTIyMDc2LCAxMjIwODAsIDEyMjA4NCwgMTIyMDg4LCAxMjIwOTIsIDEyMjA5NiwgCisgICAgMTIyMTAwLCAxMjIxMDQsIDEyMjEwOCwgMTIyMTEyLCAxMjIxMTYsIDEyMjEyMCwgMTIyMTI0LCAxMjIxMjgsIDEyMjEzMiwgCisgICAgMTIyMTM2LCAxMjIxNDAsIDEyMjE0NCwgMTIyMTQ4LCAxMjIxNTIsIDEyMjE1NiwgMTIyMTYwLCAxMjIxNjQsIDEyMjE2OCwgCisgICAgMTIyMTcyLCAxMjIxNzYsIDEyMjE4MCwgMTIyMTg0LCAxMjIxODgsIDEyMjE5MiwgMTIyMTk2LCAxMjIyMDAsIDEyMjIwNCwgCisgICAgMTIyMjA4LCAxMjIyMTIsIDEyMjIxNiwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzYsIDEyMjI0MCwgCisgICAgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NCwgMTIyMjY4LCAxMjIyNzIsIDEyMjI3NiwgCisgICAgMTIyMjgwLCAxMjIyODQsIDEyMjI4OCwgMTIyMjkyLCAxMjIyOTYsIDEyMjMwMCwgMTIyMzA0LCAxMjIzMDgsIDEyMjMxMiwgCisgICAgMTIyMzE2LCAxMjIzMjAsIDEyMjMyNCwgMTIyMzI4LCAxMjIzMzIsIDEyMjMzNiwgMTIyMzQwLCAxMjIzNDQsIDEyMjM0OCwgCisgICAgMTIyMzUyLCAxMjIzNTYsIDEyMjM2MCwgMTIyMzY0LCAxMjIzNjgsIDEyMjM3MiwgMTIyMzc2LCAxMjIzODAsIDEyMjM4NCwgCisgICAgMTIyMzg4LCAxMjIzOTIsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDQsIDEyMjQwOCwgMTIyNDEyLCAxMjI0MTYsIDEyMjQyMCwgCisgICAgMTIyNDI0LCAxMjI0MjgsIDEyMjQzMiwgMTIyNDM2LCAxMjI0NDAsIDEyMjQ0NCwgMTIyNDQ4LCAxMjI0NTIsIDEyMjQ1NiwgCisgICAgMTIyNDYwLCAxMjI0NjQsIDEyMjQ2OCwgMTIyNDcyLCAxMjI0NzYsIDEyMjQ4MCwgMTIyNDg0LCAxMjI0ODgsIDEyMjQ5MiwgCisgICAgMTIyNDk2LCAxMjI1MDAsIDEyMjUwNCwgMTIyNTA4LCAxMjI1MTIsIDEyMjUxNiwgMTIyNTIwLCAxMjI1MjQsIDEyMjUyOCwgCisgICAgMTIyNTMyLCAxMjI1MzYsIDEyMjU0MCwgMTIyNTQ0LCAxMjI1NDgsIDEyMjU1MiwgMTIyNTU2LCAxMjI1NjAsIDEyMjU2NCwgCisgICAgMTIyNTY4LCAxMjI1NzIsIDEyMjU3NiwgMTIyNTgwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgCisgICAgMTIyNjA0LCAxMjI2MDgsIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgCisgICAgMTIyNjQwLCAxMjI2NDQsIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgCisgICAgMTIyNjc2LCAxMjI2ODAsIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgCisgICAgMTIyNzEyLCAxMjI3MTYsIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgCisgICAgMTIyNzQ4LCAxMjI3NTIsIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgCisgICAgMTIyNzg0LCAxMjI3ODgsIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgCisgICAgMTIyODIwLCAxMjI4MjQsIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgCisgICAgMTIyODU2LCAxMjI4NjAsIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgCisgICAgMTIyODkyLCAxMjI4OTYsIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgCisgICAgMTIyOTI4LCAxMjI5MzIsIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgCisgICAgMTIyOTY0LCAxMjI5NjgsIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgCisgICAgMTIzMDAwLCAxMjMwMDQsIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgCisgICAgMTIzMDM2LCAxMjMwNDAsIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgCisgICAgMTIzMDcyLCAxMjMwNzYsIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgCisgICAgMTIzMTA4LCAxMjMxMTIsIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgCisgICAgMTIzMTQ0LCAxMjMxNDgsIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgCisgICAgMTIzMTgwLCAxMjMxODQsIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgCisgICAgMTIzMjE2LCAxMjMyMjAsIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgCisgICAgMTIzMjUyLCAxMjMyNTYsIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgCisgICAgMTIzMjg4LCAxMjMyOTIsIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgCisgICAgMTIzMzI0LCAxMjMzMjgsIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgCisgICAgMTIzMzYwLCAxMjMzNjQsIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgCisgICAgMTIzMzk2LCAxMjM0MDAsIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgCisgICAgMTIzNDMyLCAxMjM0MzYsIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgCisgICAgMTIzNDY4LCAxMjM0NzIsIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgCisgICAgMTIzNTA0LCAxMjM1MDgsIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgCisgICAgMTIzNTQwLCAxMjM1NDQsIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgCisgICAgMTIzNTc2LCAxMjM1ODAsIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgCisgICAgMTIzNjEyLCAxMjM2MTYsIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgCisgICAgMTIzNjQ4LCAxMjM2NTIsIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgCisgICAgMTIzNjg0LCAxMjM2ODgsIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgCisgICAgMTIzNzIwLCAxMjM3MjQsIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgCisgICAgMTIzNzU2LCAxMjM3NjAsIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgCisgICAgMTIzNzkyLCAxMjM3OTYsIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgCisgICAgMTIzODI4LCAxMjM4MzIsIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgCisgICAgMTIzODY0LCAxMjM4NjgsIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgCisgICAgMTIzOTAwLCAxMjM5MDQsIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgCisgICAgMTIzOTM2LCAxMjM5NDAsIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgCisgICAgMTIzOTcyLCAxMjM5NzYsIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgCisgICAgMTI0MDA4LCAxMjQwMTIsIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgCisgICAgMTI0MDQ0LCAxMjQwNDgsIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgCisgICAgMTI0MDgwLCAxMjQwODQsIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgCisgICAgMTI0MTE2LCAxMjQxMjAsIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgCisgICAgMTI0MTUyLCAxMjQxNTYsIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgCisgICAgMTI0MTg4LCAxMjQxOTIsIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgCisgICAgMTI0MjI0LCAxMjQyMjgsIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgCisgICAgMTI0MjYwLCAxMjQyNjQsIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgCisgICAgMTI0Mjk2LCAxMjQzMDAsIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzIwLCAxMjQzMjQsIDEyNDMyOCwgCisgICAgMTI0MzMyLCAxMjQzMzYsIDEyNDM0MCwgMTI0MzQ0LCAxMjQzNDgsIDEyNDM1MiwgMTI0MzU2LCAxMjQzNjAsIDEyNDM2NCwgCisgICAgMTI0MzY4LCAxMjQzNzIsIDEyNDM3NiwgMTI0MzgwLCAxMjQzODQsIDEyNDM4OCwgMTI0MzkyLCAxMjQzOTYsIDEyNDQwMCwgCisgICAgMTI0NDA0LCAxMjQ0MDgsIDEyNDQxMiwgMTI0NDE2LCAxMjQ0MjAsIDEyNDQyNCwgMTI0NDI4LCAxMjQ0MzIsIDEyNDQzNiwgCisgICAgMTI0NDQwLCAxMjQ0NDQsIDEyNDQ0OCwgMTI0NDUyLCAxMjQ0NTYsIDEyNDQ2MCwgMTI0NDY0LCAxMjQ0NjgsIDEyNDQ3MiwgCisgICAgMTI0NDc2LCAxMjQ0ODAsIDEyNDQ4NCwgMTI0NDg4LCAxMjQ0OTIsIDEyNDQ5NiwgMTI0NTAwLCAxMjQ1MDQsIDEyNDUwOCwgCisgICAgMTI0NTEyLCAxMjQ1MTYsIDEyNDUyMCwgMTI0NTI0LCAxMjQ1MjgsIDEyNDUzMiwgMTI0NTM2LCAxMjQ1NDAsIDEyNDU0NCwgCisgICAgMTI0NTQ4LCAxMjQ1NTIsIDEyNDU1NiwgMTI0NTYwLCAxMjQ1NjQsIDEyNDU2OCwgMTI0NTcyLCAxMjQ1NzYsIDEyNDU4MCwgCisgICAgMTI0NTg0LCAxMjQ1ODgsIDEyNDU5MiwgMTI0NTk2LCAxMjQ2MDAsIDEyNDYwNCwgMTI0NjA4LCAxMjQ2MTIsIDEyNDYxNiwgCisgICAgMTI0NjIwLCAxMjQ2MjQsIDEyNDYyOCwgMTI0NjMyLCAxMjQ2MzYsIDEyNDY0MCwgMTI0NjQ0LCAxMjQ2NDgsIDEyNDY1MiwgCisgICAgMTI0NjU2LCAxMjQ2NjAsIDEyNDY2NCwgMTI0NjY4LCAxMjQ2NzIsIDEyNDY3NiwgMTI0NjgwLCAxMjQ2ODQsIDEyNDY4OCwgCisgICAgMTI0NjkyLCAxMjQ2OTYsIDEyNDcwMCwgMTI0NzA0LCAxMjQ3MDgsIDEyNDcxMiwgMTI0NzE2LCAxMjQ3MjAsIDEyNDcyNCwgCisgICAgMTI0NzI4LCAxMjQ3MzIsIDEyNDczNiwgMTI0NzQwLCAxMjQ3NDQsIDEyNDc0OCwgMTI0NzUyLCAxMjQ3NTYsIDEyNDc2MCwgCisgICAgMTI0NzY0LCAxMjQ3NjgsIDEyNDc3MiwgMTI0Nzc2LCAxMjQ3ODAsIDEyNDc4NCwgMTI0Nzg4LCAxMjQ3OTIsIDEyNDc5NiwgCisgICAgMTI0ODAwLCAxMjQ4MDQsIDEyNDgwOCwgMTI0ODEyLCAxMjQ4MTYsIDEyNDgyMCwgMTI0ODI0LCAxMjQ4MjgsIDEyNDgzMiwgCisgICAgMTI0ODM2LCAxMjQ4NDAsIDEyNDg0NCwgMTI0ODQ4LCAxMjQ4NTIsIDEyNDg1NiwgMTI0ODYwLCAxMjQ4NjQsIDEyNDg2OCwgCisgICAgMTI0ODcyLCAxMjQ4NzYsIDEyNDg4MCwgMTI0ODg0LCAxMjQ4ODgsIDEyNDg5MiwgMTI0ODk2LCAxMjQ5MDAsIDEyNDkwNCwgCisgICAgMTI0OTA4LCAxMjQ5MTIsIDEyNDkxNiwgMTI0OTIwLCAxMjQ5MjQsIDEyNDkyOCwgMTI0OTMyLCAxMjQ5MzYsIDEyNDk0MCwgCisgICAgMTI0OTQ0LCAxMjQ5NDgsIDEyNDk1MiwgMTI0OTU2LCAxMjQ5NjAsIDEyNDk2NCwgMTI0OTY4LCAxMjQ5NzIsIDEyNDk3NiwgCisgICAgMTI0OTgwLCAxMjQ5ODQsIDEyNDk4OCwgMTI0OTkyLCAxMjQ5OTYsIDEyNTAwMCwgMTI1MDA0LCAxMjUwMDgsIDEyNTAxMiwgCisgICAgMTI1MDE2LCAxMjUwMjAsIDEyNTAyNCwgMTI1MDI4LCAxMjUwMzIsIDEyNTAzNiwgMTI1MDQwLCAxMjUwNDQsIDEyNTA0OCwgCisgICAgMTI1MDUyLCAxMjUwNTYsIDEyNTA2MCwgMTI1MDY0LCAxMjUwNjgsIDEyNTA3MiwgMTI1MDc2LCAxMjUwODAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkyMjgsNzEgKzIwMzgzLDcyIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNTg0LCAxMjI1ODgsIDEyMjU5MiwgMTIyNTk2LCAxMjI2MDAsIDEyMjYwNCwgMTIyNjA4LCAKLSAgICAxMjI2MTIsIDEyMjYxNiwgMTIyNjIwLCAxMjI2MjQsIDEyMjYyOCwgMTIyNjMyLCAxMjI2MzYsIDEyMjY0MCwgMTIyNjQ0LCAKLSAgICAxMjI2NDgsIDEyMjY1MiwgMTIyNjU2LCAxMjI2NjAsIDEyMjY2NCwgMTIyNjY4LCAxMjI2NzIsIDEyMjY3NiwgMTIyNjgwLCAKLSAgICAxMjI2ODQsIDEyMjY4OCwgMTIyNjkyLCAxMjI2OTYsIDEyMjcwMCwgMTIyNzA0LCAxMjI3MDgsIDEyMjcxMiwgMTIyNzE2LCAKLSAgICAxMjI3MjAsIDEyMjcyNCwgMTIyNzI4LCAxMjI3MzIsIDEyMjczNiwgMTIyNzQwLCAxMjI3NDQsIDEyMjc0OCwgMTIyNzUyLCAKLSAgICAxMjI3NTYsIDEyMjc2MCwgMTIyNzY0LCAxMjI3NjgsIDEyMjc3MiwgMTIyNzc2LCAxMjI3ODAsIDEyMjc4NCwgMTIyNzg4LCAKLSAgICAxMjI3OTIsIDEyMjc5NiwgMTIyODAwLCAxMjI4MDQsIDEyMjgwOCwgMTIyODEyLCAxMjI4MTYsIDEyMjgyMCwgMTIyODI0LCAKLSAgICAxMjI4MjgsIDEyMjgzMiwgMTIyODM2LCAxMjI4NDAsIDEyMjg0NCwgMTIyODQ4LCAxMjI4NTIsIDEyMjg1NiwgMTIyODYwLCAKLSAgICAxMjI4NjQsIDEyMjg2OCwgMTIyODcyLCAxMjI4NzYsIDEyMjg4MCwgMTIyODg0LCAxMjI4ODgsIDEyMjg5MiwgMTIyODk2LCAKLSAgICAxMjI5MDAsIDEyMjkwNCwgMTIyOTA4LCAxMjI5MTIsIDEyMjkxNiwgMTIyOTIwLCAxMjI5MjQsIDEyMjkyOCwgMTIyOTMyLCAKLSAgICAxMjI5MzYsIDEyMjk0MCwgMTIyOTQ0LCAxMjI5NDgsIDEyMjk1MiwgMTIyOTU2LCAxMjI5NjAsIDEyMjk2NCwgMTIyOTY4LCAKLSAgICAxMjI5NzIsIDEyMjk3NiwgMTIyOTgwLCAxMjI5ODQsIDEyMjk4OCwgMTIyOTkyLCAxMjI5OTYsIDEyMzAwMCwgMTIzMDA0LCAKLSAgICAxMjMwMDgsIDEyMzAxMiwgMTIzMDE2LCAxMjMwMjAsIDEyMzAyNCwgMTIzMDI4LCAxMjMwMzIsIDEyMzAzNiwgMTIzMDQwLCAKLSAgICAxMjMwNDQsIDEyMzA0OCwgMTIzMDUyLCAxMjMwNTYsIDEyMzA2MCwgMTIzMDY0LCAxMjMwNjgsIDEyMzA3MiwgMTIzMDc2LCAKLSAgICAxMjMwODAsIDEyMzA4NCwgMTIzMDg4LCAxMjMwOTIsIDEyMzA5NiwgMTIzMTAwLCAxMjMxMDQsIDEyMzEwOCwgMTIzMTEyLCAKLSAgICAxMjMxMTYsIDEyMzEyMCwgMTIzMTI0LCAxMjMxMjgsIDEyMzEzMiwgMTIzMTM2LCAxMjMxNDAsIDEyMzE0NCwgMTIzMTQ4LCAKLSAgICAxMjMxNTIsIDEyMzE1NiwgMTIzMTYwLCAxMjMxNjQsIDEyMzE2OCwgMTIzMTcyLCAxMjMxNzYsIDEyMzE4MCwgMTIzMTg0LCAKLSAgICAxMjMxODgsIDEyMzE5MiwgMTIzMTk2LCAxMjMyMDAsIDEyMzIwNCwgMTIzMjA4LCAxMjMyMTIsIDEyMzIxNiwgMTIzMjIwLCAKLSAgICAxMjMyMjQsIDEyMzIyOCwgMTIzMjMyLCAxMjMyMzYsIDEyMzI0MCwgMTIzMjQ0LCAxMjMyNDgsIDEyMzI1MiwgMTIzMjU2LCAKLSAgICAxMjMyNjAsIDEyMzI2NCwgMTIzMjY4LCAxMjMyNzIsIDEyMzI3NiwgMTIzMjgwLCAxMjMyODQsIDEyMzI4OCwgMTIzMjkyLCAKLSAgICAxMjMyOTYsIDEyMzMwMCwgMTIzMzA0LCAxMjMzMDgsIDEyMzMxMiwgMTIzMzE2LCAxMjMzMjAsIDEyMzMyNCwgMTIzMzI4LCAKLSAgICAxMjMzMzIsIDEyMzMzNiwgMTIzMzQwLCAxMjMzNDQsIDEyMzM0OCwgMTIzMzUyLCAxMjMzNTYsIDEyMzM2MCwgMTIzMzY0LCAKLSAgICAxMjMzNjgsIDEyMzM3MiwgMTIzMzc2LCAxMjMzODAsIDEyMzM4NCwgMTIzMzg4LCAxMjMzOTIsIDEyMzM5NiwgMTIzNDAwLCAKLSAgICAxMjM0MDQsIDEyMzQwOCwgMTIzNDEyLCAxMjM0MTYsIDEyMzQyMCwgMTIzNDI0LCAxMjM0MjgsIDEyMzQzMiwgMTIzNDM2LCAKLSAgICAxMjM0NDAsIDEyMzQ0NCwgMTIzNDQ4LCAxMjM0NTIsIDEyMzQ1NiwgMTIzNDYwLCAxMjM0NjQsIDEyMzQ2OCwgMTIzNDcyLCAKLSAgICAxMjM0NzYsIDEyMzQ4MCwgMTIzNDg0LCAxMjM0ODgsIDEyMzQ5MiwgMTIzNDk2LCAxMjM1MDAsIDEyMzUwNCwgMTIzNTA4LCAKLSAgICAxMjM1MTIsIDEyMzUxNiwgMTIzNTIwLCAxMjM1MjQsIDEyMzUyOCwgMTIzNTMyLCAxMjM1MzYsIDEyMzU0MCwgMTIzNTQ0LCAKLSAgICAxMjM1NDgsIDEyMzU1MiwgMTIzNTU2LCAxMjM1NjAsIDEyMzU2NCwgMTIzNTY4LCAxMjM1NzIsIDEyMzU3NiwgMTIzNTgwLCAKLSAgICAxMjM1ODQsIDEyMzU4OCwgMTIzNTkyLCAxMjM1OTYsIDEyMzYwMCwgMTIzNjA0LCAxMjM2MDgsIDEyMzYxMiwgMTIzNjE2LCAKLSAgICAxMjM2MjAsIDEyMzYyNCwgMTIzNjI4LCAxMjM2MzIsIDEyMzYzNiwgMTIzNjQwLCAxMjM2NDQsIDEyMzY0OCwgMTIzNjUyLCAKLSAgICAxMjM2NTYsIDEyMzY2MCwgMTIzNjY0LCAxMjM2NjgsIDEyMzY3MiwgMTIzNjc2LCAxMjM2ODAsIDEyMzY4NCwgMTIzNjg4LCAKLSAgICAxMjM2OTIsIDEyMzY5NiwgMTIzNzAwLCAxMjM3MDQsIDEyMzcwOCwgMTIzNzEyLCAxMjM3MTYsIDEyMzcyMCwgMTIzNzI0LCAKLSAgICAxMjM3MjgsIDEyMzczMiwgMTIzNzM2LCAxMjM3NDAsIDEyMzc0NCwgMTIzNzQ4LCAxMjM3NTIsIDEyMzc1NiwgMTIzNzYwLCAKLSAgICAxMjM3NjQsIDEyMzc2OCwgMTIzNzcyLCAxMjM3NzYsIDEyMzc4MCwgMTIzNzg0LCAxMjM3ODgsIDEyMzc5MiwgMTIzNzk2LCAKLSAgICAxMjM4MDAsIDEyMzgwNCwgMTIzODA4LCAxMjM4MTIsIDEyMzgxNiwgMTIzODIwLCAxMjM4MjQsIDEyMzgyOCwgMTIzODMyLCAKLSAgICAxMjM4MzYsIDEyMzg0MCwgMTIzODQ0LCAxMjM4NDgsIDEyMzg1MiwgMTIzODU2LCAxMjM4NjAsIDEyMzg2NCwgMTIzODY4LCAKLSAgICAxMjM4NzIsIDEyMzg3NiwgMTIzODgwLCAxMjM4ODQsIDEyMzg4OCwgMTIzODkyLCAxMjM4OTYsIDEyMzkwMCwgMTIzOTA0LCAKLSAgICAxMjM5MDgsIDEyMzkxMiwgMTIzOTE2LCAxMjM5MjAsIDEyMzkyNCwgMTIzOTI4LCAxMjM5MzIsIDEyMzkzNiwgMTIzOTQwLCAKLSAgICAxMjM5NDQsIDEyMzk0OCwgMTIzOTUyLCAxMjM5NTYsIDEyMzk2MCwgMTIzOTY0LCAxMjM5NjgsIDEyMzk3MiwgMTIzOTc2LCAKLSAgICAxMjM5ODAsIDEyMzk4NCwgMTIzOTg4LCAxMjM5OTIsIDEyMzk5NiwgMTI0MDAwLCAxMjQwMDQsIDEyNDAwOCwgMTI0MDEyLCAKLSAgICAxMjQwMTYsIDEyNDAyMCwgMTI0MDI0LCAxMjQwMjgsIDEyNDAzMiwgMTI0MDM2LCAxMjQwNDAsIDEyNDA0NCwgMTI0MDQ4LCAKLSAgICAxMjQwNTIsIDEyNDA1NiwgMTI0MDYwLCAxMjQwNjQsIDEyNDA2OCwgMTI0MDcyLCAxMjQwNzYsIDEyNDA4MCwgMTI0MDg0LCAKLSAgICAxMjQwODgsIDEyNDA5MiwgMTI0MDk2LCAxMjQxMDAsIDEyNDEwNCwgMTI0MTA4LCAxMjQxMTIsIDEyNDExNiwgMTI0MTIwLCAKLSAgICAxMjQxMjQsIDEyNDEyOCwgMTI0MTMyLCAxMjQxMzYsIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIDEyNDE1MiwgMTI0MTU2LCAKLSAgICAxMjQxNjAsIDEyNDE2NCwgMTI0MTY4LCAxMjQxNzIsIDEyNDE3NiwgMTI0MTgwLCAxMjQxODQsIDEyNDE4OCwgMTI0MTkyLCAKLSAgICAxMjQxOTYsIDEyNDIwMCwgMTI0MjA0LCAxMjQyMDgsIDEyNDIxMiwgMTI0MjE2LCAxMjQyMjAsIDEyNDIyNCwgMTI0MjI4LCAKLSAgICAxMjQyMzIsIDEyNDIzNiwgMTI0MjQwLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIDEyNDI2MCwgMTI0MjY0LCAKLSAgICAxMjQyNjgsIDEyNDI3MiwgMTI0Mjc2LCAxMjQyODAsIDEyNDI4NCwgMTI0Mjg4LCAxMjQyOTIsIDEyNDI5NiwgMTI0MzAwLCAKLSAgICAxMjQzMDQsIDEyNDMwOCwgMTI0MzEyLCAxMjQzMTYsIDEyNDMyNiwgMTI0MzMwLCAxMjQzMzQsIDEyNDMzOCwgMTI0MzQyLCAKLSAgICAxMjQzNDYsIDEyNDM1MCwgMTI0MzU0LCAxMjQzNTgsIDEyNDM2MiwgMTI0MzY2LCAxMjQzNzAsIDEyNDM3NSwgMTI0Mzc5LCAKLSAgICAxMjQzODMsIDEyNDM4NywgMTI0MzkxLCAxMjQzOTUsIDEyNDM5OSwgMTI0NDAzLCAxMjQ0MDcsIDEyNDQxMSwgMTI0NDE1LCAKLSAgICAxMjQ0MTksIDEyNDQyMywgMTI0NDI3LCAxMjQ0MzEsIDEyNDQzNSwgMTI0NDM5LCAxMjQ0NDgsIDEyNDQ1NywgMTI0NDYxLCAKLSAgICAxMjQ0NjUsIDEyNDQ2OSwgMTI0NDczLCAxMjQ0NzcsIDEyNDQ4MSwgMTI0NDg1LCAxMjQ0ODksIDEyNDQ5MywgMTI0NDk3LCAKLSAgICAxMjQ1MDEsIDEyNDUwNSwgMTI0NTA5LCAxMjQ1MTMsIDEyNDUxNywgMTI0NTIxLCAxMjQ1MjUsIDEyNDUyOSwgMTI0NTMzLCAKLSAgICAxMjQ1MzcsIDEyNDU0MSwgMTI0NTQ1LCAxMjQ1NDksIDEyNDU1MywgMTI0NTU3LCAxMjQ1NjEsIDEyNDU2NSwgMTI0NTY5LCAKLSAgICAxMjQ1NzMsIDEyNDU3NywgMTI0NTgxLCAxMjQ1ODUsIDEyNDU4OSwgMTI0NTkzLCAxMjQ1OTcsIDEyNDYwMSwgMTI0NjA1LCAKLSAgICAxMjQ2MDksIDEyNDYxMywgMTI0NjE3LCAxMjQ2MjEsIDEyNDYyNSwgMTI0NjI5LCAxMjQ2MzMsIDEyNDYzNywgMTI0NjQxLCAKLSAgICAxMjQ2NDUsIDEyNDY0OSwgMTI0NjUzLCAxMjQ2NTcsIDEyNDY2MSwgMTI0NjY1LCAxMjQ2NjksIDEyNDY3MywgMTI0Njc3LCAKLSAgICAxMjQ2ODEsIDEyNDY4NSwgMTI0Njg5LCAxMjQ2OTMsIDEyNDY5NywgMTI0NzAxLCAxMjQ3MDUsIDEyNDcwOSwgMTI0NzEzLCAKLSAgICAxMjQ3MTcsIDEyNDcyMSwgMTI0NzI1LCAxMjQ3MjksIDEyNDczMywgMTI0NzM3LCAxMjQ3NDEsIDEyNDc0NSwgMTI0NzQ5LCAKLSAgICAxMjQ3NTMsIDEyNDc1NywgMTI0NzYxLCAxMjQ3NjUsIDEyNDc2OSwgMTI0NzczLCAxMjQ3NzcsIDEyNDc4MSwgMTI0Nzg1LCAKLSAgICAxMjQ3ODksIDEyNDc5MywgMTI0Nzk3LCAxMjQ4MDEsIDEyNDgwNSwgMTI0ODA5LCAxMjQ4MTMsIDEyNDgxNywgMTI0ODIxLCAKLSAgICAxMjQ4MjUsIDEyNDgyOSwgMTI0ODMzLCAxMjQ4MzcsIDEyNDg0MSwgMTI0ODQ1LCAxMjQ4NDksIDEyNDg1MywgMTI0ODU3LCAKLSAgICAxMjQ4NjEsIDEyNDg2NSwgMTI0ODY5LCAxMjQ4NzMsIDEyNDg3NywgMTI0ODgxLCAxMjQ4ODUsIDEyNDg4OSwgMTI0ODkzLCAKLSAgICAxMjQ4OTcsIDEyNDkwMSwgMTI0OTA1LCAxMjQ5MDksIDEyNDkxMywgMTI0OTE3LCAxMjQ5MjEsIDEyNDkyNSwgMTI0OTI5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUwODQsIDEyNTA4OCwgMTI1MDkyLCAxMjUwOTYsIAorICAgIDEyNTEwMCwgMTI1MTA0LCAxMjUxMDgsIDEyNTExMiwgMTI1MTE2LCAxMjUxMjAsIDEyNTEyNCwgMTI1MTI4LCAxMjUxMzIsIAorICAgIDEyNTEzNiwgMTI1MTQwLCAxMjUxNDQsIDEyNTE0OCwgMTI1MTUyLCAxMjUxNTYsIDEyNTE2MCwgMTI1MTY0LCAxMjUxNjgsIAorICAgIDEyNTE3MiwgMTI1MTc2LCAxMjUxODAsIDEyNTE4NCwgMTI1MTg4LCAxMjUxOTIsIDEyNTE5NiwgMTI1MjAwLCAxMjUyMDQsIAorICAgIDEyNTIwOCwgMTI1MjEyLCAxMjUyMTYsIDEyNTIyMCwgMTI1MjI0LCAxMjUyMjgsIDEyNTIzMiwgMTI1MjM2LCAxMjUyNDAsIAorICAgIDEyNTI0NCwgMTI1MjQ4LCAxMjUyNTIsIDEyNTI1NiwgMTI1MjYwLCAxMjUyNjQsIDEyNTI2OCwgMTI1MjcyLCAxMjUyNzYsIAorICAgIDEyNTI4MCwgMTI1Mjg0LCAxMjUyODgsIDEyNTI5MiwgMTI1Mjk2LCAxMjUzMDAsIDEyNTMwNCwgMTI1MzA4LCAxMjUzMTIsIAorICAgIDEyNTMxNiwgMTI1MzIwLCAxMjUzMjQsIDEyNTMyOCwgMTI1MzMyLCAxMjUzMzYsIDEyNTM0MCwgMTI1MzQ0LCAxMjUzNDgsIAorICAgIDEyNTM1MiwgMTI1MzU2LCAxMjUzNjAsIDEyNTM2NCwgMTI1MzY4LCAxMjUzNzIsIDEyNTM3NiwgMTI1MzgwLCAxMjUzODQsIAorICAgIDEyNTM4OCwgMTI1MzkyLCAxMjUzOTYsIDEyNTQwMCwgMTI1NDA0LCAxMjU0MDgsIDEyNTQxMiwgMTI1NDE2LCAxMjU0MjAsIAorICAgIDEyNTQyNCwgMTI1NDI4LCAxMjU0MzIsIDEyNTQzNiwgMTI1NDQwLCAxMjU0NDQsIDEyNTQ0OCwgMTI1NDUyLCAxMjU0NTYsIAorICAgIDEyNTQ2MCwgMTI1NDY0LCAxMjU0NjgsIDEyNTQ3MiwgMTI1NDc2LCAxMjU0ODAsIDEyNTQ4NCwgMTI1NDg4LCAxMjU0OTIsIAorICAgIDEyNTQ5NiwgMTI1NTAwLCAxMjU1MDQsIDEyNTUwOCwgMTI1NTEyLCAxMjU1MTYsIDEyNTUyMCwgMTI1NTI0LCAxMjU1MjgsIAorICAgIDEyNTUzMiwgMTI1NTM2LCAxMjU1NDAsIDEyNTU0NCwgMTI1NTQ4LCAxMjU1NTIsIDEyNTU1NiwgMTI1NTYwLCAxMjU1NjQsIAorICAgIDEyNTU2OCwgMTI1NTcyLCAxMjU1NzYsIDEyNTU4MCwgMTI1NTg0LCAxMjU1ODgsIDEyNTU5MiwgMTI1NTk2LCAxMjU2MDAsIAorICAgIDEyNTYwNCwgMTI1NjA4LCAxMjU2MTIsIDEyNTYxNiwgMTI1NjIwLCAxMjU2MjQsIDEyNTYyOCwgMTI1NjMyLCAxMjU2MzYsIAorICAgIDEyNTY0MCwgMTI1NjQ0LCAxMjU2NDgsIDEyNTY1MiwgMTI1NjU2LCAxMjU2NjAsIDEyNTY2NCwgMTI1NjY4LCAxMjU2NzIsIAorICAgIDEyNTY3NiwgMTI1NjgwLCAxMjU2ODQsIDEyNTY4OCwgMTI1NjkyLCAxMjU2OTYsIDEyNTcwMCwgMTI1NzA0LCAxMjU3MDgsIAorICAgIDEyNTcxMiwgMTI1NzE2LCAxMjU3MjAsIDEyNTcyNCwgMTI1NzI4LCAxMjU3MzIsIDEyNTczNiwgMTI1NzQwLCAxMjU3NDQsIAorICAgIDEyNTc0OCwgMTI1NzUyLCAxMjU3NTYsIDEyNTc2MCwgMTI1NzY0LCAxMjU3NjgsIDEyNTc3MiwgMTI1Nzc2LCAxMjU3ODAsIAorICAgIDEyNTc4NCwgMTI1Nzg4LCAxMjU3OTIsIDEyNTc5NiwgMTI1ODAwLCAxMjU4MDQsIDEyNTgwOCwgMTI1ODEyLCAxMjU4MTYsIAorICAgIDEyNTgyMCwgMTI1ODI0LCAxMjU4MjgsIDEyNTgzMiwgMTI1ODM2LCAxMjU4NDAsIDEyNTg0NCwgMTI1ODQ4LCAxMjU4NTIsIAorICAgIDEyNTg1NiwgMTI1ODYwLCAxMjU4NjQsIDEyNTg2OCwgMTI1ODcyLCAxMjU4NzYsIDEyNTg4MCwgMTI1ODg0LCAxMjU4ODgsIAorICAgIDEyNTg5MiwgMTI1ODk2LCAxMjU5MDAsIDEyNTkwNCwgMTI1OTA4LCAxMjU5MTIsIDEyNTkxNiwgMTI1OTIwLCAxMjU5MjQsIAorICAgIDEyNTkyOCwgMTI1OTMyLCAxMjU5MzYsIDEyNTk0MCwgMTI1OTQ0LCAxMjU5NDgsIDEyNTk1MiwgMTI1OTU2LCAxMjU5NjAsIAorICAgIDEyNTk2NCwgMTI1OTY4LCAxMjU5NzIsIDEyNTk3NiwgMTI1OTgwLCAxMjU5ODQsIDEyNTk4OCwgMTI1OTkyLCAxMjU5OTYsIAorICAgIDEyNjAwMCwgMTI2MDA0LCAxMjYwMDgsIDEyNjAxMiwgMTI2MDE2LCAxMjYwMjAsIDEyNjAyNCwgMTI2MDI4LCAxMjYwMzIsIAorICAgIDEyNjAzNiwgMTI2MDQwLCAxMjYwNDQsIDEyNjA0OCwgMTI2MDUyLCAxMjYwNTYsIDEyNjA2MCwgMTI2MDY0LCAxMjYwNjgsIAorICAgIDEyNjA3MiwgMTI2MDc2LCAxMjYwODAsIDEyNjA4NCwgMTI2MDg4LCAxMjYwOTIsIDEyNjA5NiwgMTI2MTAwLCAxMjYxMDQsIAorICAgIDEyNjEwOCwgMTI2MTEyLCAxMjYxMTYsIDEyNjEyMCwgMTI2MTI0LCAxMjYxMjgsIDEyNjEzMiwgMTI2MTM2LCAxMjYxNDAsIAorICAgIDEyNjE0NCwgMTI2MTQ4LCAxMjYxNTIsIDEyNjE1NiwgMTI2MTYwLCAxMjYxNjQsIDEyNjE2OCwgMTI2MTcyLCAxMjYxNzYsIAorICAgIDEyNjE4MCwgMTI2MTg0LCAxMjYxODgsIDEyNjE5MiwgMTI2MTk2LCAxMjYyMDAsIDEyNjIwNCwgMTI2MjA4LCAxMjYyMTIsIAorICAgIDEyNjIxNiwgMTI2MjIwLCAxMjYyMjQsIDEyNjIyOCwgMTI2MjMyLCAxMjYyMzYsIDEyNjI0MCwgMTI2MjQ0LCAxMjYyNDgsIAorICAgIDEyNjI1MiwgMTI2MjU2LCAxMjYyNjAsIDEyNjI2NCwgMTI2MjY4LCAxMjYyNzIsIDEyNjI3NiwgMTI2MjgwLCAxMjYyODQsIAorICAgIDEyNjI4OCwgMTI2MjkyLCAxMjYyOTYsIDEyNjMwMCwgMTI2MzA0LCAxMjYzMDgsIDEyNjMxMiwgMTI2MzE2LCAxMjYzMjAsIAorICAgIDEyNjMyNCwgMTI2MzI4LCAxMjYzMzIsIDEyNjMzNiwgMTI2MzQwLCAxMjYzNDQsIDEyNjM0OCwgMTI2MzUyLCAxMjYzNTYsIAorICAgIDEyNjM2MCwgMTI2MzY0LCAxMjYzNjgsIDEyNjM3MiwgMTI2Mzc2LCAxMjYzODAsIDEyNjM4NCwgMTI2Mzg4LCAxMjYzOTIsIAorICAgIDEyNjM5NiwgMTI2NDAwLCAxMjY0MDQsIDEyNjQwOCwgMTI2NDEyLCAxMjY0MTYsIDEyNjQyMCwgMTI2NDI0LCAxMjY0MjgsIAorICAgIDEyNjQzMiwgMTI2NDM2LCAxMjY0NDAsIDEyNjQ0NCwgMTI2NDQ4LCAxMjY0NTIsIDEyNjQ1NiwgMTI2NDYwLCAxMjY0NjQsIAorICAgIDEyNjQ2OCwgMTI2NDcyLCAxMjY0NzYsIDEyNjQ4MCwgMTI2NDg0LCAxMjY0ODgsIDEyNjQ5MiwgMTI2NDk2LCAxMjY1MDAsIAorICAgIDEyNjUwNCwgMTI2NTA4LCAxMjY1MTIsIDEyNjUxNiwgMTI2NTIwLCAxMjY1MjQsIDEyNjUyOCwgMTI2NTMyLCAxMjY1MzYsIAorICAgIDEyNjU0MCwgMTI2NTQ0LCAxMjY1NDgsIDEyNjU1MiwgMTI2NTU2LCAxMjY1NjAsIDEyNjU2NCwgMTI2NTY4LCAxMjY1NzIsIAorICAgIDEyNjU3NiwgMTI2NTgwLCAxMjY1ODQsIDEyNjU4OCwgMTI2NTkyLCAxMjY1OTYsIDEyNjYwMCwgMTI2NjA0LCAxMjY2MDgsIAorICAgIDEyNjYxMiwgMTI2NjE2LCAxMjY2MjAsIDEyNjYyNCwgMTI2NjI4LCAxMjY2MzIsIDEyNjYzNiwgMTI2NjQwLCAxMjY2NDQsIAorICAgIDEyNjY0OCwgMTI2NjUyLCAxMjY2NTYsIDEyNjY2MCwgMTI2NjY0LCAxMjY2NjgsIDEyNjY3MiwgMTI2Njc2LCAxMjY2ODAsIAorICAgIDEyNjY4NCwgMTI2Njg4LCAxMjY2OTIsIDEyNjY5NiwgMTI2NzAwLCAxMjY3MDQsIDEyNjcwOCwgMTI2NzEyLCAxMjY3MTYsIAorICAgIDEyNjcyMCwgMTI2NzI0LCAxMjY3MjgsIDEyNjczMiwgMTI2NzM2LCAxMjY3NDAsIDEyNjc0NCwgMTI2NzQ4LCAxMjY3NTIsIAorICAgIDEyNjc1NiwgMTI2NzYwLCAxMjY3NjQsIDEyNjc2OCwgMTI2NzcyLCAxMjY3NzYsIDEyNjc4MCwgMTI2Nzg0LCAxMjY3ODgsIAorICAgIDEyNjc5MiwgMTI2Nzk2LCAxMjY4MDAsIDEyNjgwNCwgMTI2ODA4LCAxMjY4MTIsIDEyNjgxNiwgMTI2ODI2LCAxMjY4MzAsIAorICAgIDEyNjgzNCwgMTI2ODM4LCAxMjY4NDIsIDEyNjg0NiwgMTI2ODUwLCAxMjY4NTQsIDEyNjg1OCwgMTI2ODYyLCAxMjY4NjYsIAorICAgIDEyNjg3MCwgMTI2ODc1LCAxMjY4NzksIDEyNjg4MywgMTI2ODg3LCAxMjY4OTEsIDEyNjg5NSwgMTI2ODk5LCAxMjY5MDMsIAorICAgIDEyNjkwNywgMTI2OTExLCAxMjY5MTUsIDEyNjkxOSwgMTI2OTIzLCAxMjY5MjcsIDEyNjkzMSwgMTI2OTM1LCAxMjY5MzksIAorICAgIDEyNjk0OCwgMTI2OTU3LCAxMjY5NjEsIDEyNjk2NSwgMTI2OTY5LCAxMjY5NzMsIDEyNjk3NywgMTI2OTgxLCAxMjY5ODUsIAorICAgIDEyNjk4OSwgMTI2OTkzLCAxMjY5OTcsIDEyNzAwMSwgMTI3MDA1LCAxMjcwMDksIDEyNzAxMywgMTI3MDE3LCAxMjcwMjEsIAorICAgIDEyNzAyNSwgMTI3MDI5LCAxMjcwMzMsIDEyNzAzNywgMTI3MDQxLCAxMjcwNDUsIDEyNzA0OSwgMTI3MDUzLCAxMjcwNTcsIAorICAgIDEyNzA2MSwgMTI3MDY1LCAxMjcwNjksIDEyNzA3MywgMTI3MDc3LCAxMjcwODEsIDEyNzA4NSwgMTI3MDg5LCAxMjcwOTMsIAorICAgIDEyNzA5NywgMTI3MTAxLCAxMjcxMDUsIDEyNzEwOSwgMTI3MTEzLCAxMjcxMTcsIDEyNzEyMSwgMTI3MTI1LCAxMjcxMjksIAorICAgIDEyNzEzMywgMTI3MTM3LCAxMjcxNDEsIDEyNzE0NSwgMTI3MTQ5LCAxMjcxNTMsIDEyNzE1NywgMTI3MTYxLCAxMjcxNjUsIAorICAgIDEyNzE2OSwgMTI3MTczLCAxMjcxNzcsIDEyNzE4MSwgMTI3MTg1LCAxMjcxODksIDEyNzE5MywgMTI3MTk3LCAxMjcyMDEsIAorICAgIDEyNzIwNSwgMTI3MjA5LCAxMjcyMTMsIDEyNzIxNywgMTI3MjIxLCAxMjcyMjUsIDEyNzIyOSwgMTI3MjMzLCAxMjcyMzcsIAorICAgIDEyNzI0MSwgMTI3MjQ1LCAxMjcyNDksIDEyNzI1MywgMTI3MjU3LCAxMjcyNjEsIDEyNzI2NSwgMTI3MjY5LCAxMjcyNzMsIAorICAgIDEyNzI3NywgMTI3MjgxLCAxMjcyODUsIDEyNzI4OSwgMTI3MjkzLCAxMjcyOTcsIDEyNzMwMSwgMTI3MzA1LCAxMjczMDksIAorICAgIDEyNzMxMywgMTI3MzE3LCAxMjczMjEsIDEyNzMyNSwgMTI3MzI5LCAxMjczMzMsIDEyNzMzNywgMTI3MzQxLCAxMjczNDUsIAorICAgIDEyNzM0OSwgMTI3MzUzLCAxMjczNTcsIDEyNzM2MSwgMTI3MzY1LCAxMjczNjksIDEyNzM3MywgMTI3Mzc3LCAxMjczODEsIAorICAgIDEyNzM4NSwgMTI3Mzg5LCAxMjczOTMsIDEyNzM5NywgMTI3NDAxLCAxMjc0MDUsIDEyNzQwOSwgMTI3NDEzLCAxMjc0MTcsIAorICAgIDEyNzQyMSwgMTI3NDI1LCAxMjc0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkzMDAsMTI0ICsyMDQ1NiwyMTAgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ5MzMsIDEyNDk0MSwgCi0gICAgMTI0OTQ5LCAxMjQ5NTksIDEyNDk2OSwgMTI0OTc3LCAxMjQ5ODMsIDEyNDk5MSwgMTI0OTk5LCAxMjUwMDksIDEyNTAyMSwgCi0gICAgMTI1MDMzLCAxMjUwMzksIDEyNTA0NywgMTI1MDUzLCAxMjUwNTksIDEyNTA2NSwgMTI1MDcxLCAxMjUwNzcsIDEyNTA4MywgCi0gICAgMTI1MDg5LCAxMjUwOTUsIDEyNTEwMSwgMTI1MTA3LCAxMjUxMTMsIDEyNTEyMSwgMTI1MTI5LCAxMjUxMzUsIDEyNTE0MSwgCi0gICAgMTI1MTQ3LCAxMjUxNTMsIDEyNTE2MSwgMTI1MTY5LCAxMjUxNzgsIDEyNTE4NCwgMTI1MTkyLCAxMjUxOTgsIDEyNTIwNCwgCi0gICAgMTI1MjEwLCAxMjUyMTYsIDEyNTIyMiwgMTI1MjMwLCAxMjUyMzgsIDEyNTI0NCwgMTI1MjUwLCAxMjUyNTYsIDEyNTI2MiwgCi0gICAgMTI1MjY4LCAxMjUyNzQsIDEyNTI4MCwgMTI1Mjg2LCAxMjUyOTIsIDEyNTI5OCwgMTI1MzA0LCAxMjUzMTAsIDEyNTMxNiwgCi0gICAgMTI1MzIyLCAxMjUzMjgsIDEyNTMzNCwgMTI1MzQwLCAxMjUzNDYsIDEyNTM1MiwgMTI1MzYwLCAxMjUzNjYsIDEyNTM3MiwgCi0gICAgMTI1MzgyLCAxMjUzOTAsIDEyNTM5NiwgMTI1NDAyLCAxMjU0MDgsIDEyNTQxNCwgMTI1NDIwLCAxMjU0MjYsIDEyNTQzMiwgCi0gICAgMTI1NDM4LCAxMjU0NDQsIDEyNTQ1MCwgMTI1NDU2LCAxMjU0NjIsIDEyNTQ2OCwgMTI1NDc0LCAxMjU0ODAsIDEyNTQ4NiwgCi0gICAgMTI1NDkyLCAxMjU0OTgsIDEyNTUwNCwgMTI1NTEwLCAxMjU1MTYsIDEyNTUyMiwgMTI1NTMwLCAxMjU1MzYsIDEyNTU0NCwgCi0gICAgMTI1NTUyLCAxMjU1NjAsIDEyNTU2NiwgMTI1NTcyLCAxMjU1NzgsIDEyNTU4NCwgMTI1NTkwLCAxMjU1OTgsIDEyNTYwOCwgCi0gICAgMTI1NjE2LCAxMjU2MjQsIDEyNTYzMCwgMTI1NjM2LCAxMjU2NDQsIDEyNTY1MiwgMTI1NjU4LCAxMjU2NjYsIDEyNTY3NCwgCi0gICAgMTI1NjgyLCAxMjU2ODgsIDEyNTY5NCwgMTI1NzAwLCAxMjU3MDYsIDEyNTcxMiwgMTI1NzE4LCAxMjU3MjYsIDEyNTczNCwgCi0gICAgMTI1NzQwLCAxMjU3NDYsIDEyNTc1MiwgMTI1NzU4LCAxMjU3NjQsIDEyNTc3MiwgMTI1Nzc4LCAxMjU3ODQsIDEyNTc5MCwgCi0gICAgMTI1Nzk2LCAxMjU4MDIsIDEyNTgwOCwgMTI1ODE2LCAxMjU4MjIsIDEyNTgyOCwgMTI1ODM0LCAxMjU4NDAsIDEyNTg0OCwgCi0gICAgMTI1ODU2LCAxMjU4NjIsIDEyNTg2OCwgMTI1ODc0LCAxMjU4NzksIDEyNTg4NSwgMTI1ODkxLCAxMjU4OTgsIDEyNTkwMywgCi0gICAgMTI1OTA4LCAxMjU5MTMsIDEyNTkxOCwgMTI1OTIzLCAxMjU5MjgsIDEyNTkzMywgMTI1OTM4LCAxMjU5NDMsIDEyNTk1MiwgCi0gICAgMTI1OTU5LCAxMjU5NjQsIDEyNTk2OSwgMTI1OTc0LCAxMjU5ODEsIDEyNTk4NiwgMTI1OTkxLCAxMjU5OTYsIDEyNjAwMywgCi0gICAgMTI2MDA4LCAxMjYwMTMsIDEyNjAxOCwgMTI2MDIzLCAxMjYwMjgsIDEyNjAzMywgMTI2MDM4LCAxMjYwNDMsIDEyNjA0OCwgCi0gICAgMTI2MDUzLCAxMjYwNTgsIDEyNjA2NSwgMTI2MDcwLCAxMjYwNzcsIDEyNjA4MiwgMTI2MDg3LCAxMjYwOTQsIDEyNjA5OSwgCi0gICAgMTI2MTA0LCAxMjYxMDksIDEyNjExNCwgMTI2MTE5LCAxMjYxMjQsIDEyNjEyOSwgMTI2MTM0LCAxMjYxMzksIDEyNjE0NCwgCi0gICAgMTI2MTQ5LCAxMjYxNTQsIDEyNjE1OSwgMTI2MTY0LCAxMjYxNjksIDEyNjE3NCwgMTI2MTc5LCAxMjYxODQsIDEyNjE4OSwgCi0gICAgMTI2MTk2LCAxMjYyMDEsIDEyNjIwNiwgMTI2MjExLCAxMjYyMTYsIDEyNjIyMSwgMTI2MjI2LCAxMjYyMzEsIDEyNjIzNiwgCi0gICAgMTI2MjQxLCAxMjYyNDYsIDEyNjI1MSwgMTI2MjU2LCAxMjYyNjEsIDEyNjI2OCwgMTI2MjczLCAxMjYyNzgsIDEyNjI4NSwgCi0gICAgMTI2MjkwLCAxMjYyOTUsIDEyNjMwMCwgMTI2MzA1LCAxMjYzMTAsIDEyNjMxNSwgMTI2MzIwLCAxMjYzMjUsIDEyNjMzMCwgCi0gICAgMTI2MzM1LCAxMjYzNDIsIDEyNjM0NywgMTI2MzUyLCAxMjYzNTcsIDEyNjM2MiwgMTI2MzY3LCAxMjYzNzQsIDEyNjM4MSwgCi0gICAgMTI2Mzg2LCAxMjYzOTEsIDEyNjM5NiwgMTI2NDAxLCAxMjY0MDYsIDEyNjQxMSwgMTI2NDE2LCAxMjY0MjEsIDEyNjQyNiwgCi0gICAgMTI2NDMxLCAxMjY0MzYsIDEyNjQ0MSwgMTI2NDQ2LCAxMjY0NTEsIDEyNjQ1NiwgMTI2NDYxLCAxMjY0NjYsIDEyNjQ3MSwgCi0gICAgMTI2NDc2LCAxMjY0ODEsIDEyNjQ4NiwgMTI2NDkxLCAxMjY0OTYsIDEyNjUwMSwgMTI2NTA2LCAxMjY1MTEsIDEyNjUxNiwgCi0gICAgMTI2NTIxLCAxMjY1MjYsIDEyNjUzMSwgMTI2NTM2LCAxMjY1NDEsIDEyNjU0NiwgMTI2NTUxLCAxMjY1NTYsIDEyNjU2MSwgCi0gICAgMTI2NTY4LCAxMjY1NzMsIDEyNjU3OCwgMTI2NTgzLCAxMjY1ODgsIDEyNjU5MywgMTI2NTk4LCAxMjY2MDMsIDEyNjYwOCwgCi0gICAgMTI2NjEzLCAxMjY2MTgsIDEyNjYyMywgMTI2NjI4LCAxMjY2MzMsIDEyNjYzOCwgMTI2NjQzLCAxMjY2NDgsIDEyNjY1MywgCi0gICAgMTI2NjU4LCAxMjY2NjMsIDEyNjY2OCwgMTI2NjczLCAxMjY2NzgsIDEyNjY4MywgMTI2Njg4LCAxMjY2OTMsIDEyNjY5OCwgCi0gICAgMTI2NzAzLCAxMjY3MDgsIDEyNjcxMywgMTI2NzE4LCAxMjY3MjMsIDEyNjcyOCwgMTI2NzMzLCAxMjY3MzgsIDEyNjc0MywgCi0gICAgMTI2NzQ4LCAxMjY3NTMsIDEyNjc1OCwgMTI2NzYzLCAxMjY3NjgsIDEyNjc3MywgMTI2Nzc4LCAxMjY3ODMsIDEyNjc4OCwgCi0gICAgMTI2NzkzLCAxMjY3OTgsIDEyNjgwMywgMTI2ODA4LCAxMjY4MTMsIDEyNjgxOCwgMTI2ODIzLCAxMjY4MjgsIDEyNjgzMywgCi0gICAgMTI2ODM4LCAxMjY4NDMsIDEyNjg0OCwgMTI2ODUzLCAxMjY4NTgsIDEyNjg2NSwgMTI2ODcwLCAxMjY4NzUsIDEyNjg4MCwgCi0gICAgMTI2ODg1LCAxMjY4OTAsIDEyNjg5NSwgMTI2OTAwLCAxMjY5MDUsIDEyNjkxMCwgMTI2OTE1LCAxMjY5MjAsIDEyNjkyNSwgCi0gICAgMTI2OTMwLCAxMjY5MzUsIDEyNjk0MCwgMTI2OTQ1LCAxMjY5NTAsIDEyNjk1NSwgMTI2OTYwLCAxMjY5NjUsIDEyNjk3MCwgCi0gICAgMTI2OTc3LCAxMjY5ODIsIDEyNjk4NywgMTI2OTk0LCAxMjY5OTksIDEyNzAwNCwgMTI3MDA5LCAxMjcwMTQsIDEyNzAxOSwgCi0gICAgMTI3MDI0LCAxMjcwMjksIDEyNzAzNCwgMTI3MDM5LCAxMjcwNDQsIDEyNzA0OSwgMTI3MDU0LCAxMjcwNTksIDEyNzA2NCwgCi0gICAgMTI3MDY5LCAxMjcwNzQsIDEyNzA3OSwgMTI3MDg0LCAxMjcwODksIDEyNzA5NCwgMTI3MDk5LCAxMjcxMDQsIDEyNzEwOSwgCi0gICAgMTI3MTE0LCAxMjcxMTksIDEyNzEyNCwgMTI3MTI5LCAxMjcxMzQsIDEyNzEzOSwgMTI3MTQ0LCAxMjcxNDksIDEyNzE1NCwgCi0gICAgMTI3MTU5LCAxMjcxNjQsIDEyNzE2OSwgMTI3MTc0LCAxMjcxNzksIDEyNzE4NCwgMTI3MTg5LCAxMjcxOTQsIDEyNzE5OSwgCi0gICAgMTI3MjA0LCAxMjcyMDksIDEyNzIxNiwgMTI3MjIxLCAxMjcyMjYsIDEyNzIzMywgMTI3MjQwLCAxMjcyNDUsIDEyNzI1MCwgCi0gICAgMTI3MjU1LCAxMjcyNjAsIDEyNzI2NSwgMTI3MjcwLCAxMjcyNzUsIDEyNzI4MCwgMTI3Mjg1LCAxMjcyOTAsIDEyNzI5NSwgCi0gICAgMTI3MzAwLCAxMjczMDUsIDEyNzMxMCwgMTI3MzE1LCAxMjczMjAsIDEyNzMyNSwgMTI3MzMwLCAxMjczMzUsIDEyNzM0MCwgCi0gICAgMTI3MzQ1LCAxMjczNTAsIDEyNzM1NSwgMTI3MzYwLCAxMjczNjUsIDEyNzM3MiwgMTI3Mzc3LCAxMjczODIsIDEyNzM4NywgCi0gICAgMTI3MzkyLCAxMjczOTcsIDEyNzQwMiwgMTI3NDA3LCAxMjc0MTIsIDEyNzQxNywgMTI3NDIyLCAxMjc0MjcsIDEyNzQzMiwgCi0gICAgMTI3NDM3LCAxMjc0NDIsIDEyNzQ0NywgMTI3NDUyLCAxMjc0NTcsIDEyNzQ2MiwgMTI3NDY5LCAxMjc0NzQsIDEyNzQ3OSwgCi0gICAgMTI3NDg0LCAxMjc0ODksIDEyNzQ5NCwgMTI3NDk5LCAxMjc1MDQsIDEyNzUxMCwgMTI3NTE1LCAxMjc1MjAsIDEyNzUyNSwgCi0gICAgMTI3NTMwLCAxMjc1MzUsIDEyNzU0MCwgMTI3NTQ1LCAxMjc1NTAsIDEyNzU1NywgMTI3NTY0LCAxMjc1NjksIDEyNzU3NCwgCi0gICAgMTI3NTc4LCAxMjc1ODMsIDEyNzU4NywgMTI3NTkxLCAxMjc1OTYsIDEyNzYwMywgMTI3NjA4LCAxMjc2MTMsIDEyNzYyMiwgCi0gICAgMTI3NjI3LCAxMjc2MzIsIDEyNzYzNywgMTI3NjQyLCAxMjc2NDksIDEyNzY1NiwgMTI3NjYxLCAxMjc2NjYsIDEyNzY3MSwgCi0gICAgMTI3Njc2LCAxMjc2ODMsIDEyNzY4OCwgMTI3NjkzLCAxMjc2OTgsIDEyNzcwMywgMTI3NzA4LCAxMjc3MTMsIDEyNzcxOCwgCi0gICAgMTI3NzIzLCAxMjc3MjgsIDEyNzczMywgMTI3NzM4LCAxMjc3NDMsIDEyNzc1MCwgMTI3NzU1LCAxMjc3NjAsIDEyNzc2NSwgCi0gICAgMTI3NzcwLCAxMjc3NzUsIDEyNzc3OSwgMTI3Nzg0LCAxMjc3ODksIDEyNzc5NCwgMTI3Nzk5LCAxMjc4MDQsIDEyNzgwOSwgCi0gICAgMTI3ODE0LCAxMjc4MTksIDEyNzgyNCwgMTI3ODMwLCAxMjc4MzYsIDEyNzg0MiwgMTI3ODQ4LCAxMjc4NTQsIDEyNzg2MCwgCi0gICAgMTI3ODY2LCAxMjc4NzIsIDEyNzg3OCwgMTI3ODg0LCAxMjc4OTAsIDEyNzg5NiwgMTI3OTAyLCAxMjc5MDgsIDEyNzkxNCwgCisgICAgMCwgMTI3NDMzLCAxMjc0NDEsIDEyNzQ0OSwgMTI3NDU5LCAxMjc0NjksIDEyNzQ3NywgMTI3NDgzLCAxMjc0OTEsIAorICAgIDEyNzQ5OSwgMTI3NTA5LCAxMjc1MjEsIDEyNzUzMywgMTI3NTM5LCAxMjc1NDcsIDEyNzU1MywgMTI3NTU5LCAxMjc1NjUsIAorICAgIDEyNzU3MSwgMTI3NTc3LCAxMjc1ODMsIDEyNzU4OSwgMTI3NTk1LCAxMjc2MDEsIDEyNzYwNywgMTI3NjEzLCAxMjc2MjEsIAorICAgIDEyNzYyOSwgMTI3NjM1LCAxMjc2NDEsIDEyNzY0NywgMTI3NjUzLCAxMjc2NjEsIDEyNzY2OSwgMTI3Njc4LCAxMjc2ODQsIAorICAgIDEyNzY5MiwgMTI3Njk4LCAxMjc3MDQsIDEyNzcxMCwgMTI3NzE2LCAxMjc3MjIsIDEyNzczMCwgMTI3NzM4LCAxMjc3NDQsIAorICAgIDEyNzc1MCwgMTI3NzU2LCAxMjc3NjIsIDEyNzc2OCwgMTI3Nzc0LCAxMjc3ODAsIDEyNzc4NiwgMTI3NzkyLCAxMjc3OTgsIAorICAgIDEyNzgwNCwgMTI3ODEwLCAxMjc4MTYsIDEyNzgyMiwgMTI3ODI4LCAxMjc4MzQsIDEyNzg0MCwgMTI3ODQ2LCAxMjc4NTIsIAorICAgIDEyNzg2MCwgMTI3ODY2LCAxMjc4NzIsIDEyNzg4MiwgMTI3ODkwLCAxMjc4OTYsIDEyNzkwMiwgMTI3OTA4LCAxMjc5MTQsIAogICAgIDEyNzkyMCwgMTI3OTI2LCAxMjc5MzIsIDEyNzkzOCwgMTI3OTQ0LCAxMjc5NTAsIDEyNzk1NiwgMTI3OTYyLCAxMjc5NjgsIAotICAgIDEyNzk3MywgMTI3OTc5LCAxMjc5ODUsIDEyNzk5MSwgMTI3OTk3LCAxMjgwMDMsIDEyODAwOSwgMTI4MDE1LCAxMjgwMjEsIAotICAgIDEyODAyNywgMTI4MDMzLCAxMjgwMzksIDEyODA0NSwgMTI4MDUxLCAxMjgwNTcsIDEyODA2MywgMTI4MDY5LCAxMjgwNzUsIAotICAgIDEyODA4MSwgMTI4MDg3LCAxMjgwOTMsIDEyODA5OCwgMTI4MTA0LCAxMjgxMTAsIDEyODExNiwgMTI4MTIyLCAxMjgxMjgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODEzNCwgMTI4MTM5LCAxMjgxNDQsIDEyODE0OSwgMTI4MTU0LCAxMjgxNTksIAotICAgIDEyODE2NCwgMTI4MTY4LCAxMjgxNzMsIDEyODE3OCwgMTI4MTgzLCAxMjgxODgsIDEyODE5MywgMTI4MTk4LCAxMjgyMDMsIAotICAgIDEyODIwOCwgMTI4MjEzLCAxMjgyMTcsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzEsIDEyODIzNiwgMTI4MjQxLCAxMjgyNDYsIAotICAgIDEyODI1MSwgMTI4MjU1LCAxMjgyNjAsIDEyODI2NSwgMTI4MjcwLCAxMjgyNzUsIDEyODI4MCwgMCwgMTI4Mjg1LCAKLSAgICAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOSwgMTI4MzIzLCAKLSAgICAwLCAwLCAwLCAwLCAxMjgzMjgsIDEyODMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI3OTc0LCAxMjc5ODAsIDEyNzk4NiwgMTI3OTkyLCAxMjc5OTgsIDEyODAwNCwgMTI4MDEwLCAxMjgwMTYsIDEyODAyMiwgCisgICAgMTI4MDMwLCAxMjgwMzYsIDEyODA0NCwgMTI4MDUyLCAxMjgwNjAsIDEyODA2NiwgMTI4MDcyLCAxMjgwNzgsIDEyODA4NCwgCisgICAgMTI4MDkwLCAxMjgwOTgsIDEyODEwOCwgMTI4MTE2LCAxMjgxMjQsIDEyODEzMCwgMTI4MTM2LCAxMjgxNDQsIDEyODE1MiwgCisgICAgMTI4MTU4LCAxMjgxNjYsIDEyODE3NCwgMTI4MTgyLCAxMjgxODgsIDEyODE5NCwgMTI4MjAwLCAxMjgyMDYsIDEyODIxMiwgCisgICAgMTI4MjE4LCAxMjgyMjYsIDEyODIzNCwgMTI4MjQwLCAxMjgyNDYsIDEyODI1MiwgMTI4MjU4LCAxMjgyNjQsIDEyODI3MiwgCisgICAgMTI4Mjc4LCAxMjgyODQsIDEyODI5MCwgMTI4Mjk2LCAxMjgzMDIsIDEyODMwOCwgMTI4MzE2LCAxMjgzMjIsIDEyODMyOCwgCisgICAgMTI4MzM0LCAxMjgzNDAsIDEyODM0OCwgMTI4MzU2LCAxMjgzNjIsIDEyODM2OCwgMTI4Mzc0LCAxMjgzNzksIDEyODM4NSwgCisgICAgMTI4MzkxLCAxMjgzOTgsIDEyODQwMywgMTI4NDA4LCAxMjg0MTMsIDEyODQxOCwgMTI4NDIzLCAxMjg0MjgsIDEyODQzMywgCisgICAgMTI4NDM4LCAxMjg0NDMsIDEyODQ1MiwgMTI4NDU5LCAxMjg0NjQsIDEyODQ2OSwgMTI4NDc0LCAxMjg0ODEsIDEyODQ4NiwgCisgICAgMTI4NDkxLCAxMjg0OTYsIDEyODUwMywgMTI4NTA4LCAxMjg1MTMsIDEyODUxOCwgMTI4NTIzLCAxMjg1MjgsIDEyODUzMywgCisgICAgMTI4NTM4LCAxMjg1NDMsIDEyODU0OCwgMTI4NTUzLCAxMjg1NTgsIDEyODU2NSwgMTI4NTcwLCAxMjg1NzcsIDEyODU4MiwgCisgICAgMTI4NTg3LCAxMjg1OTQsIDEyODU5OSwgMTI4NjA0LCAxMjg2MDksIDEyODYxNCwgMTI4NjE5LCAxMjg2MjQsIDEyODYyOSwgCisgICAgMTI4NjM0LCAxMjg2MzksIDEyODY0NCwgMTI4NjQ5LCAxMjg2NTQsIDEyODY1OSwgMTI4NjY0LCAxMjg2NjksIDEyODY3NCwgCisgICAgMTI4Njc5LCAxMjg2ODQsIDEyODY4OSwgMTI4Njk2LCAxMjg3MDEsIDEyODcwNiwgMTI4NzExLCAxMjg3MTYsIDEyODcyMSwgCisgICAgMTI4NzI2LCAxMjg3MzEsIDEyODczNiwgMTI4NzQxLCAxMjg3NDYsIDEyODc1MSwgMTI4NzU2LCAxMjg3NjEsIDEyODc2OCwgCisgICAgMTI4NzczLCAxMjg3NzgsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIDEyODgxNSwgCisgICAgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM1LCAxMjg4NDIsIDEyODg0NywgMTI4ODUyLCAxMjg4NTcsIDEyODg2MiwgCisgICAgMTI4ODY3LCAxMjg4NzQsIDEyODg4MSwgMTI4ODg2LCAxMjg4OTEsIDEyODg5NiwgMTI4OTAxLCAxMjg5MDYsIDEyODkxMSwgCisgICAgMTI4OTE2LCAxMjg5MjEsIDEyODkyNiwgMTI4OTMxLCAxMjg5MzYsIDEyODk0MSwgMTI4OTQ2LCAxMjg5NTEsIDEyODk1NiwgCisgICAgMTI4OTYxLCAxMjg5NjYsIDEyODk3MSwgMTI4OTc2LCAxMjg5ODEsIDEyODk4NiwgMTI4OTkxLCAxMjg5OTYsIDEyOTAwMSwgCisgICAgMTI5MDA2LCAxMjkwMTEsIDEyOTAxNiwgMTI5MDIxLCAxMjkwMjYsIDEyOTAzMSwgMTI5MDM2LCAxMjkwNDEsIDEyOTA0NiwgCisgICAgMTI5MDUxLCAxMjkwNTYsIDEyOTA2MSwgMTI5MDY4LCAxMjkwNzMsIDEyOTA3OCwgMTI5MDgzLCAxMjkwODgsIDEyOTA5MywgCisgICAgMTI5MDk4LCAxMjkxMDMsIDEyOTEwOCwgMTI5MTEzLCAxMjkxMTgsIDEyOTEyMywgMTI5MTI4LCAxMjkxMzMsIDEyOTEzOCwgCisgICAgMTI5MTQzLCAxMjkxNDgsIDEyOTE1MywgMTI5MTU4LCAxMjkxNjMsIDEyOTE2OCwgMTI5MTczLCAxMjkxNzgsIDEyOTE4MywgCisgICAgMTI5MTg4LCAxMjkxOTMsIDEyOTE5OCwgMTI5MjAzLCAxMjkyMDgsIDEyOTIxMywgMTI5MjE4LCAxMjkyMjMsIDEyOTIyOCwgCisgICAgMTI5MjMzLCAxMjkyMzgsIDEyOTI0MywgMTI5MjQ4LCAxMjkyNTMsIDEyOTI1OCwgMTI5MjYzLCAxMjkyNjgsIDEyOTI3MywgCisgICAgMTI5Mjc4LCAxMjkyODMsIDEyOTI4OCwgMTI5MjkzLCAxMjkyOTgsIDEyOTMwMywgMTI5MzA4LCAxMjkzMTMsIDEyOTMxOCwgCisgICAgMTI5MzIzLCAxMjkzMjgsIDEyOTMzMywgMTI5MzM4LCAxMjkzNDMsIDEyOTM0OCwgMTI5MzUzLCAxMjkzNTgsIDEyOTM2NSwgCisgICAgMTI5MzcwLCAxMjkzNzUsIDEyOTM4MCwgMTI5Mzg1LCAxMjkzOTAsIDEyOTM5NSwgMTI5NDAwLCAxMjk0MDUsIDEyOTQxMCwgCisgICAgMTI5NDE1LCAxMjk0MjAsIDEyOTQyNSwgMTI5NDMwLCAxMjk0MzUsIDEyOTQ0MCwgMTI5NDQ1LCAxMjk0NTAsIDEyOTQ1NSwgCisgICAgMTI5NDYwLCAxMjk0NjUsIDEyOTQ3MCwgMTI5NDc3LCAxMjk0ODIsIDEyOTQ4NywgMTI5NDk0LCAxMjk0OTksIDEyOTUwNCwgCisgICAgMTI5NTA5LCAxMjk1MTQsIDEyOTUxOSwgMTI5NTI0LCAxMjk1MjksIDEyOTUzNCwgMTI5NTM5LCAxMjk1NDQsIDEyOTU0OSwgCisgICAgMTI5NTU0LCAxMjk1NTksIDEyOTU2NCwgMTI5NTY5LCAxMjk1NzQsIDEyOTU3OSwgMTI5NTg0LCAxMjk1ODksIDEyOTU5NCwgCisgICAgMTI5NTk5LCAxMjk2MDQsIDEyOTYwOSwgMTI5NjE0LCAxMjk2MTksIDEyOTYyNCwgMTI5NjI5LCAxMjk2MzQsIDEyOTYzOSwgCisgICAgMTI5NjQ0LCAxMjk2NDksIDEyOTY1NCwgMTI5NjU5LCAxMjk2NjQsIDEyOTY2OSwgMTI5Njc0LCAxMjk2NzksIDEyOTY4NCwgCisgICAgMTI5Njg5LCAxMjk2OTQsIDEyOTY5OSwgMTI5NzA0LCAxMjk3MDksIDEyOTcxNiwgMTI5NzIxLCAxMjk3MjYsIDEyOTczMywgCisgICAgMTI5NzQwLCAxMjk3NDUsIDEyOTc1MCwgMTI5NzU1LCAxMjk3NjAsIDEyOTc2NSwgMTI5NzcwLCAxMjk3NzUsIDEyOTc4MCwgCisgICAgMTI5Nzg1LCAxMjk3OTAsIDEyOTc5NSwgMTI5ODAwLCAxMjk4MDUsIDEyOTgxMCwgMTI5ODE1LCAxMjk4MjAsIDEyOTgyNSwgCisgICAgMTI5ODMwLCAxMjk4MzUsIDEyOTg0MCwgMTI5ODQ1LCAxMjk4NTAsIDEyOTg1NSwgMTI5ODYwLCAxMjk4NjUsIDEyOTg3MiwgCisgICAgMTI5ODc3LCAxMjk4ODIsIDEyOTg4NywgMTI5ODkyLCAxMjk4OTcsIDEyOTkwMiwgMTI5OTA3LCAxMjk5MTIsIDEyOTkxNywgCisgICAgMTI5OTIyLCAxMjk5MjcsIDEyOTkzMiwgMTI5OTM3LCAxMjk5NDIsIDEyOTk0NywgMTI5OTUyLCAxMjk5NTcsIDEyOTk2MiwgCisgICAgMTI5OTY5LCAxMjk5NzQsIDEyOTk3OSwgMTI5OTg0LCAxMjk5ODksIDEyOTk5NCwgMTI5OTk5LCAxMzAwMDQsIDEzMDAxMCwgCisgICAgMTMwMDE1LCAxMzAwMjAsIDEzMDAyNSwgMTMwMDMwLCAxMzAwMzUsIDEzMDA0MCwgMTMwMDQ1LCAxMzAwNTAsIDEzMDA1NywgCisgICAgMTMwMDY0LCAxMzAwNjksIDEzMDA3NCwgMTMwMDc4LCAxMzAwODMsIDEzMDA4NywgMTMwMDkxLCAxMzAwOTYsIDEzMDEwMywgCisgICAgMTMwMTA4LCAxMzAxMTMsIDEzMDEyMiwgMTMwMTI3LCAxMzAxMzIsIDEzMDEzNywgMTMwMTQyLCAxMzAxNDksIDEzMDE1NiwgCisgICAgMTMwMTYxLCAxMzAxNjYsIDEzMDE3MSwgMTMwMTc2LCAxMzAxODMsIDEzMDE4OCwgMTMwMTkzLCAxMzAxOTgsIDEzMDIwMywgCisgICAgMTMwMjA4LCAxMzAyMTMsIDEzMDIxOCwgMTMwMjIzLCAxMzAyMjgsIDEzMDIzMywgMTMwMjM4LCAxMzAyNDMsIDEzMDI1MCwgCisgICAgMTMwMjU0LCAxMzAyNTksIDEzMDI2NCwgMTMwMjY5LCAxMzAyNzQsIDEzMDI3OCwgMTMwMjgzLCAxMzAyODgsIDEzMDI5MywgCisgICAgMTMwMjk4LCAxMzAzMDMsIDEzMDMwOCwgMTMwMzEzLCAxMzAzMTgsIDEzMDMyMywgMTMwMzI5LCAxMzAzMzUsIDEzMDM0MSwgCisgICAgMTMwMzQ3LCAxMzAzNTMsIDEzMDM1OCwgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NiwgMTMwMzgyLCAxMzAzODgsIDEzMDM5NCwgCisgICAgMTMwNDAwLCAxMzA0MDYsIDEzMDQxMiwgMTMwNDE4LCAxMzA0MjQsIDEzMDQzMCwgMTMwNDM2LCAxMzA0NDIsIDEzMDQ0OCwgCisgICAgMTMwNDU0LCAxMzA0NjAsIDEzMDQ2NiwgMTMwNDcxLCAxMzA0NzcsIDEzMDQ4MywgMTMwNDg5LCAxMzA0OTUsIDEzMDUwMSwgCisgICAgMTMwNTA3LCAxMzA1MTMsIDEzMDUxOSwgMTMwNTI1LCAxMzA1MzEsIDEzMDUzNywgMTMwNTQzLCAxMzA1NDksIDEzMDU1NSwgCisgICAgMTMwNTYxLCAxMzA1NjcsIDEzMDU3MywgMTMwNTc5LCAxMzA1ODUsIDEzMDU5MSwgMTMwNTk2LCAxMzA2MDIsIDEzMDYwOCwgCisgICAgMTMwNjE0LCAxMzA2MjAsIDEzMDYyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjMyLCAxMzA2MzcsIDEzMDY0MiwgCisgICAgMTMwNjQ3LCAxMzA2NTIsIDEzMDY1NywgMTMwNjYyLCAxMzA2NjYsIDEzMDY3MSwgMTMwNjc2LCAxMzA2ODEsIDEzMDY4NiwgCisgICAgMTMwNjkxLCAxMzA2OTYsIDEzMDcwMSwgMTMwNzA2LCAxMzA3MTEsIDEzMDcxNSwgMTMwNzIwLCAxMzA3MjQsIDEzMDcyOSwgCisgICAgMTMwNzM0LCAxMzA3MzksIDEzMDc0NCwgMTMwNzQ5LCAxMzA3NTMsIDEzMDc1OCwgMTMwNzYzLCAxMzA3NjcsIDEzMDc3MiwgCisgICAgMTMwNzc3LCAwLCAxMzA3ODIsIDEzMDc4NywgMTMwNzkxLCAxMzA3OTUsIDEzMDc5OSwgMTMwODAzLCAxMzA4MDcsIAorICAgIDEzMDgxMSwgMTMwODE2LCAxMzA4MjAsIDAsIDAsIDAsIDAsIDEzMDgyNSwgMTMwODI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgzMzcsIDEyODM0NCwgMTI4MzUwLCAxMjgzNTcsIDEyODM2NCwgCi0gICAgMTI4MzcxLCAxMjgzNzgsIDEyODM4NSwgMTI4MzkyLCAxMjgzOTksIDEyODQwNiwgMTI4NDEzLCAxMjg0MjAsIDEyODQyNywgCi0gICAgMTI4NDM0LCAxMjg0NDEsIDEyODQ0OCwgMTI4NDU1LCAxMjg0NjEsIDEyODQ2OCwgMTI4NDc1LCAxMjg0ODIsIDEyODQ4OCwgCi0gICAgMTI4NDk1LCAxMjg1MDEsIDEyODUwNywgMTI4NTE0LCAxMjg1MjAsIDEyODUyNywgMTI4NTMzLCAwLCAwLCAxMjg1MzksIAotICAgIDEyODU0NywgMTI4NTU1LCAxMjg1NjQsIDEyODU3MywgMTI4NTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjg1OTAsIDEyODU5NSwgMTI4NjAwLCAxMjg2MDUsIDEyODYxMCwgMTI4NjE1LCAxMjg2MjAsIDEyODYyNSwgMTI4NjMwLCAKLSAgICAxMjg2MzUsIDEyODY0MCwgMTI4NjQ1LCAxMjg2NTAsIDEyODY1NSwgMTI4NjYwLCAxMjg2NjUsIDEyODY3MCwgMTI4Njc1LCAKLSAgICAxMjg2ODAsIDEyODY4NSwgMTI4NjkwLCAxMjg2OTUsIDEyODcwMCwgMTI4NzA1LCAxMjg3MTAsIDEyODcxNSwgMTI4NzIwLCAKLSAgICAxMjg3MjUsIDEyODczMCwgMTI4NzM1LCAxMjg3NDAsIDEyODc0NSwgMTI4NzUwLCAxMjg3NTUsIDEyODc2MCwgMTI4NzY1LCAKLSAgICAxMjg3NzAsIDEyODc3NSwgMTI4NzgwLCAxMjg3ODUsIDEyODc5MCwgMTI4Nzk1LCAxMjg4MDAsIDEyODgwNSwgMTI4ODEwLCAKLSAgICAxMjg4MTUsIDEyODgyMCwgMTI4ODI1LCAxMjg4MzAsIDEyODgzNywgMTI4ODQ0LCAxMjg4NTEsIDEyODg1OCwgMTI4ODY1LCAKLSAgICAxMjg4NzIsIDEyODg3OSwgMTI4ODg2LCAxMjg4OTUsIDEyODkwMiwgMTI4OTA5LCAxMjg5MTYsIDEyODkyMywgMTI4OTMwLCAKLSAgICAxMjg5MzcsIDEyODk0NCwgMTI4OTUxLCAxMjg5NTgsIDEyODk2NSwgMTI4OTcyLCAxMjg5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEyODk4NiwgMTI4OTkxLCAxMjg5OTUsIDEyODk5OSwgMTI5MDAzLCAxMjkwMDcsIDEyOTAxMSwgCi0gICAgMTI5MDE1LCAxMjkwMjAsIDEyOTAyNCwgMCwgMTI5MDI5LCAxMjkwMzQsIDEyOTAzOSwgMTI5MDQ2LCAxMjkwNTEsIAotICAgIDEyOTA1OCwgMTI5MDY1LCAwLCAxMjkwNzAsIDEyOTA3NywgMTI5MDgyLCAxMjkwODcsIDEyOTA5NCwgMTI5MTAxLCAKLSAgICAxMjkxMDYsIDEyOTExMSwgMTI5MTE2LCAxMjkxMjEsIDEyOTEyNiwgMTI5MTMzLCAxMjkxNDAsIDEyOTE0NSwgMTI5MTUwLCAKLSAgICAxMjkxNTUsIDEyOTE2OCwgMTI5MTc3LCAxMjkxODQsIDEyOTE5MywgMTI5MjAyLCAwLCAwLCAwLCAwLCAwLCAxMjkyMTEsIAotICAgIDEyOTIxOCwgMTI5MjI1LCAxMjkyMzIsIDEyOTIzOSwgMTI5MjQ2LCAxMjkyNTMsIDEyOTI2MCwgMTI5MjY3LCAxMjkyNzQsIAotICAgIDEyOTI4MSwgMTI5Mjg4LCAxMjkyOTUsIDEyOTMwMiwgMTI5MzA5LCAxMjkzMTYsIDEyOTMyMywgMTI5MzMwLCAxMjkzMzcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDgzNCwgMTMwODQxLCAKKyAgICAxMzA4NDcsIDEzMDg1NCwgMTMwODYxLCAxMzA4NjgsIDEzMDg3NSwgMTMwODgyLCAxMzA4ODksIDEzMDg5NiwgMTMwOTAzLCAKKyAgICAxMzA5MTAsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQ1LCAxMzA5NTIsIDEzMDk1OCwgMTMwOTY1LCAKKyAgICAxMzA5NzIsIDEzMDk3OSwgMTMwOTg1LCAxMzA5OTIsIDEzMDk5OCwgMTMxMDA0LCAxMzEwMTEsIDEzMTAxNywgMTMxMDI0LCAKKyAgICAxMzEwMzAsIDAsIDAsIDEzMTAzNiwgMTMxMDQ0LCAxMzEwNTIsIDEzMTA2MSwgMTMxMDcwLCAxMzEwNzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTA4NywgMTMxMDkyLCAxMzEwOTcsIDEzMTEwMiwgMTMxMTA3LCAxMzExMTIsIDEzMTExNywgCisgICAgMTMxMTIyLCAxMzExMjcsIDEzMTEzMiwgMTMxMTM3LCAxMzExNDIsIDEzMTE0NywgMTMxMTUyLCAxMzExNTcsIDEzMTE2MiwgCisgICAgMTMxMTY3LCAxMzExNzIsIDEzMTE3NywgMTMxMTgyLCAxMzExODcsIDEzMTE5MiwgMTMxMTk3LCAxMzEyMDIsIDEzMTIwNywgCisgICAgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI3LCAxMzEyMzIsIDEzMTIzNywgMTMxMjQyLCAxMzEyNDcsIDEzMTI1MiwgCisgICAgMTMxMjU3LCAxMzEyNjIsIDEzMTI2NywgMTMxMjcyLCAxMzEyNzcsIDEzMTI4MiwgMTMxMjg3LCAxMzEyOTIsIDEzMTI5NywgCisgICAgMTMxMzAyLCAxMzEzMDcsIDEzMTMxMiwgMTMxMzE3LCAxMzEzMjIsIDEzMTMyNywgMTMxMzM0LCAxMzEzNDEsIDEzMTM0OCwgCisgICAgMTMxMzU1LCAxMzEzNjIsIDEzMTM2OSwgMTMxMzc2LCAxMzEzODMsIDEzMTM5MiwgMTMxMzk5LCAxMzE0MDYsIDEzMTQxMywgCisgICAgMTMxNDIwLCAxMzE0MjcsIDEzMTQzNCwgMTMxNDQxLCAxMzE0NDgsIDEzMTQ1NSwgMTMxNDYyLCAxMzE0NjksIDEzMTQ3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNDgzLCAxMzE0ODgsIDEzMTQ5MiwgMTMxNDk2LCAxMzE1MDAsIAorICAgIDEzMTUwNCwgMTMxNTA4LCAxMzE1MTIsIDEzMTUxNywgMTMxNTIxLCAwLCAxMzE1MjYsIDEzMTUzMSwgMTMxNTM2LCAKKyAgICAxMzE1NDMsIDEzMTU0OCwgMTMxNTU1LCAxMzE1NjIsIDAsIDEzMTU2NywgMTMxNTc0LCAxMzE1NzksIDEzMTU4NCwgCisgICAgMTMxNTkxLCAxMzE1OTgsIDEzMTYwMywgMTMxNjA4LCAxMzE2MTMsIDEzMTYxOCwgMTMxNjIzLCAxMzE2MzAsIDEzMTYzNywgCisgICAgMTMxNjQyLCAxMzE2NDcsIDEzMTY1MiwgMTMxNjY1LCAxMzE2NzQsIDEzMTY4MSwgMTMxNjkwLCAxMzE2OTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMTcwOCwgMTMxNzE1LCAxMzE3MjIsIDEzMTcyOSwgMTMxNzM2LCAxMzE3NDMsIDEzMTc1MCwgMTMxNzU3LCAKKyAgICAxMzE3NjQsIDEzMTc3MSwgMTMxNzc4LCAxMzE3ODUsIDEzMTc5MiwgMTMxNzk5LCAxMzE4MDYsIDEzMTgxMywgMTMxODIwLCAKKyAgICAxMzE4MjcsIDEzMTgzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxODQxLCAKKyAgICAxMzE4NDQsIDEzMTg0OCwgMTMxODUyLCAxMzE4NTYsIDEzMTg1OSwgMTMxODYzLCAxMzE4NjgsIDEzMTg3MiwgMTMxODc2LCAKKyAgICAxMzE4ODAsIDEzMTg4NCwgMTMxODg4LCAxMzE4OTMsIDEzMTg5OCwgMTMxOTAyLCAxMzE5MDYsIDEzMTkwOSwgMTMxOTEzLCAKKyAgICAxMzE5MTgsIDEzMTkyMywgMTMxOTI3LCAxMzE5MzEsIDEzMTkzNCwgMTMxOTM4LCAxMzE5NDIsIDEzMTk0NiwgMTMxOTUwLCAKKyAgICAxMzE5NTQsIDEzMTk1OCwgMTMxOTYyLCAxMzE5NjUsIDEzMTk2OSwgMTMxOTczLCAxMzE5NzcsIDEzMTk4MSwgMTMxOTg1LCAKKyAgICAxMzE5ODksIDEzMTk5NSwgMTMxOTk4LCAxMzIwMDIsIDEzMjAwNiwgMTMyMDEwLCAxMzIwMTQsIDEzMjAxOCwgMTMyMDIyLCAKKyAgICAxMzIwMjYsIDEzMjAzMCwgMTMyMDM0LCAxMzIwMzksIDEzMjA0NCwgMTMyMDUwLCAxMzIwNTQsIDEzMjA1OCwgMTMyMDYyLCAKKyAgICAxMzIwNjYsIDEzMjA3MCwgMTMyMDc0LCAxMzIwNzksIDEzMjA4MywgMTMyMDg3LCAxMzIwOTEsIDEzMjA5NSwgMTMyMDk5LCAKKyAgICAxMzIxMDUsIDEzMjEwOSwgMTMyMTEzLCAxMzIxMTcsIDEzMjEyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMyMTI1LCAxMzIxMjksIDEzMjEzMywgMTMyMTM5LCAxMzIxNDUsIDEzMjE0OSwgMTMyMTU0LCAxMzIxNTksIDEzMjE2NCwgCisgICAgMTMyMTY5LCAxMzIxNzMsIDEzMjE3OCwgMTMyMTgzLCAxMzIxODgsIDEzMjE5MiwgMTMyMTk3LCAxMzIyMDIsIDEzMjIwNywgCisgICAgMTMyMjExLCAxMzIyMTYsIDEzMjIyMSwgMTMyMjI2LCAxMzIyMzEsIDEzMjIzNiwgMTMyMjQxLCAxMzIyNDYsIDEzMjI1MSwgCisgICAgMTMyMjU1LCAxMzIyNjAsIDEzMjI2NSwgMTMyMjcwLCAxMzIyNzUsIDEzMjI4MCwgMTMyMjg1LCAxMzIyOTAsIDEzMjI5NSwgCisgICAgMTMyMzAwLCAxMzIzMDUsIDEzMjMxMCwgMTMyMzE3LCAxMzIzMjIsIDEzMjMyOSwgMTMyMzM0LCAxMzIzMzksIDEzMjM0NCwgCisgICAgMTMyMzQ5LCAxMzIzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjM1OSwgCisgICAgMTMyMzYzLCAxMzIzNjksIDEzMjM3MiwgMTMyMzc1LCAxMzIzNzksIDEzMjM4MywgMTMyMzg3LCAxMzIzOTEsIDEzMjM5NSwgCisgICAgMTMyMzk5LCAxMzI0MDMsIDEzMjQwOSwgMTMyNDE1LCAxMzI0MjEsIDEzMjQyNywgMTMyNDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjkzNDQsIDEyOTM0NywgMTI5MzUxLCAKLSAgICAxMjkzNTUsIDEyOTM1OSwgMTI5MzYyLCAxMjkzNjYsIDEyOTM3MSwgMTI5Mzc1LCAxMjkzNzksIDEyOTM4MywgMTI5Mzg3LCAKLSAgICAxMjkzOTEsIDEyOTM5NiwgMTI5NDAxLCAxMjk0MDUsIDEyOTQwOSwgMTI5NDEzLCAxMjk0MTcsIDEyOTQyMiwgMTI5NDI4LCAKLSAgICAxMjk0MzIsIDEyOTQzNiwgMTI5NDQwLCAxMjk0NDQsIDEyOTQ0OCwgMTI5NDUyLCAxMjk0NTYsIDEyOTQ2MCwgMTI5NDY0LCAKLSAgICAxMjk0NjgsIDEyOTQ3MSwgMTI5NDc1LCAxMjk0NzksIDEyOTQ4MywgMTI5NDg3LCAxMjk0OTEsIDEyOTQ5NSwgMTI5NTAxLCAKLSAgICAxMjk1MDQsIDEyOTUwOCwgMTI5NTEyLCAxMjk1MTYsIDEyOTUyMCwgMTI5NTI0LCAxMjk1MjgsIDEyOTUzMiwgMTI5NTM2LCAKLSAgICAxMjk1NDAsIDEyOTU0NSwgMTI5NTUwLCAxMjk1NTYsIDEyOTU2MCwgMTI5NTY0LCAxMjk1NjgsIDEyOTU3MiwgMTI5NTc2LCAKLSAgICAxMjk1ODAsIDEyOTU4NSwgMTI5NTg5LCAxMjk1OTMsIDEyOTU5NywgMTI5NjAxLCAxMjk2MDUsIDEyOTYxMSwgMTI5NjE1LCAKLSAgICAxMjk2MTksIDEyOTYyMywgMTI5NjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk2MzEsIDEyOTYzNSwgCi0gICAgMTI5NjM5LCAxMjk2NDUsIDEyOTY1MSwgMTI5NjU1LCAxMjk2NjAsIDEyOTY2NSwgMTI5NjcwLCAxMjk2NzUsIDEyOTY3OSwgCi0gICAgMTI5Njg0LCAxMjk2ODksIDEyOTY5NCwgMTI5Njk4LCAxMjk3MDMsIDEyOTcwOCwgMTI5NzEzLCAxMjk3MTcsIDEyOTcyMiwgCi0gICAgMTI5NzI3LCAxMjk3MzIsIDEyOTczNywgMTI5NzQyLCAxMjk3NDcsIDEyOTc1MiwgMTI5NzU3LCAxMjk3NjEsIDEyOTc2NiwgCi0gICAgMTI5NzcxLCAxMjk3NzYsIDEyOTc4MSwgMTI5Nzg2LCAxMjk3OTEsIDEyOTc5NiwgMTI5ODAxLCAxMjk4MDYsIDEyOTgxMSwgCi0gICAgMTI5ODE2LCAxMjk4MjMsIDEyOTgyOCwgMTI5ODM1LCAxMjk4NDAsIDEyOTg0NSwgMTI5ODUwLCAxMjk4NTUsIDEyOTg2MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5ODY1LCAxMjk4NjksIDEyOTg3NSwgCi0gICAgMTI5ODc4LCAxMjk4ODEsIDEyOTg4NSwgMTI5ODg5LCAxMjk4OTMsIDEyOTg5NywgMTI5OTAxLCAxMjk5MDUsIDEyOTkwOSwgCi0gICAgMTI5OTE1LCAxMjk5MjEsIDEyOTkyNywgMTI5OTMzLCAxMjk5MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyNDQzLCAxMzI0NDYsIAorICAgIDEzMjQ0OSwgMTMyNDUyLCAxMzI0NTUsIDEzMjQ1OCwgMTMyNDYxLCAxMzI0NjQsIDEzMjQ2NywgMTMyNDcwLCAxMzI0NzMsIAorICAgIDEzMjQ3NiwgMTMyNDc5LCAxMzI0ODIsIDEzMjQ4NSwgMTMyNDg4LCAxMzI0OTEsIDEzMjQ5NCwgMTMyNDk3LCAxMzI1MDAsIAorICAgIDEzMjUwMywgMTMyNTA2LCAxMzI1MDksIDEzMjUxMiwgMTMyNTE1LCAxMzI1MTgsIDEzMjUyMSwgMTMyNTI0LCAxMzI1MjcsIAorICAgIDEzMjUzMCwgMTMyNTMzLCAxMzI1MzYsIDEzMjUzOSwgMTMyNTQyLCAxMzI1NDUsIDEzMjU0OCwgMTMyNTUxLCAxMzI1NTQsIAorICAgIDEzMjU1NywgMTMyNTYwLCAxMzI1NjMsIDEzMjU2NiwgMTMyNTY5LCAxMzI1NzIsIDEzMjU3NSwgMTMyNTc4LCAxMzI1ODEsIAorICAgIDEzMjU4NCwgMTMyNTg3LCAxMzI1OTAsIDEzMjU5MywgMTMyNTk2LCAxMzI1OTksIDEzMjYwMiwgMTMyNjA1LCAxMzI2MDgsIAorICAgIDEzMjYxMSwgMTMyNjE0LCAxMzI2MTcsIDEzMjYyMCwgMTMyNjIzLCAxMzI2MjYsIDEzMjYyOSwgMTMyNjMyLCAxMzI2MzUsIAorICAgIDEzMjYzOCwgMTMyNjQxLCAxMzI2NDQsIDEzMjY0NywgMTMyNjUwLCAxMzI2NTMsIDEzMjY1NiwgMTMyNjU5LCAxMzI2NjIsIAorICAgIDEzMjY2NSwgMTMyNjY4LCAxMzI2NzEsIDEzMjY3NCwgMTMyNjc3LCAxMzI2ODAsIDEzMjY4MywgMTMyNjg2LCAxMzI2ODksIAorICAgIDEzMjY5MiwgMTMyNjk1LCAxMzI2OTgsIDEzMjcwMSwgMTMyNzA0LCAxMzI3MDcsIDEzMjcxMCwgMTMyNzEzLCAxMzI3MTYsIAorICAgIDEzMjcxOSwgMTMyNzIyLCAxMzI3MjUsIDEzMjcyOCwgMTMyNzMxLCAxMzI3MzQsIDEzMjczNywgMTMyNzQwLCAxMzI3NDMsIAorICAgIDEzMjc0NiwgMTMyNzQ5LCAxMzI3NTIsIDEzMjc1NSwgMTMyNzU4LCAxMzI3NjEsIDEzMjc2NCwgMTMyNzY3LCAxMzI3NzAsIAorICAgIDEzMjc3MywgMTMyNzc2LCAxMzI3NzksIDEzMjc4MiwgMTMyNzg1LCAxMzI3ODgsIDEzMjc5MSwgMTMyNzk0LCAxMzI3OTcsIAorICAgIDEzMjgwMCwgMTMyODAzLCAxMzI4MDYsIDEzMjgwOSwgMTMyODEyLCAxMzI4MTUsIDEzMjgxOCwgMTMyODIxLCAxMzI4MjQsIAorICAgIDEzMjgyNywgMTMyODMwLCAxMzI4MzMsIDEzMjgzNiwgMTMyODM5LCAxMzI4NDIsIDEzMjg0NSwgMTMyODQ4LCAxMzI4NTEsIAorICAgIDEzMjg1NCwgMTMyODU3LCAxMzI4NjAsIDEzMjg2MywgMTMyODY2LCAxMzI4NjksIDEzMjg3MiwgMTMyODc1LCAxMzI4NzgsIAorICAgIDEzMjg4MSwgMTMyODg0LCAxMzI4ODcsIDEzMjg5MCwgMTMyODkzLCAxMzI4OTYsIDEzMjg5OSwgMTMyOTAyLCAxMzI5MDUsIAorICAgIDEzMjkwOCwgMTMyOTExLCAxMzI5MTQsIDEzMjkxNywgMTMyOTIwLCAxMzI5MjMsIDEzMjkyNiwgMTMyOTI5LCAxMzI5MzIsIAorICAgIDEzMjkzNSwgMTMyOTM4LCAxMzI5NDEsIDEzMjk0NCwgMTMyOTQ3LCAxMzI5NTAsIDEzMjk1MywgMTMyOTU2LCAxMzI5NTksIAorICAgIDEzMjk2MiwgMTMyOTY1LCAxMzI5NjgsIDEzMjk3MSwgMTMyOTc0LCAxMzI5NzcsIDEzMjk4MCwgMTMyOTgzLCAxMzI5ODYsIAorICAgIDEzMjk4OSwgMTMyOTkyLCAxMzI5OTUsIDEzMjk5OCwgMTMzMDAxLCAxMzMwMDQsIDEzMzAwNywgMTMzMDEwLCAxMzMwMTMsIAorICAgIDEzMzAxNiwgMTMzMDE5LCAxMzMwMjIsIDEzMzAyNSwgMTMzMDI4LCAxMzMwMzEsIDEzMzAzNCwgMTMzMDM3LCAxMzMwNDAsIAorICAgIDEzMzA0MywgMTMzMDQ2LCAxMzMwNDksIDEzMzA1MiwgMTMzMDU1LCAxMzMwNTgsIDEzMzA2MSwgMTMzMDY0LCAxMzMwNjcsIAorICAgIDEzMzA3MCwgMTMzMDczLCAxMzMwNzYsIDEzMzA3OSwgMTMzMDgyLCAxMzMwODUsIDEzMzA4OCwgMTMzMDkxLCAxMzMwOTQsIAorICAgIDEzMzA5NywgMTMzMTAwLCAxMzMxMDMsIDEzMzEwNiwgMTMzMTA5LCAxMzMxMTIsIDEzMzExNSwgMTMzMTE4LCAxMzMxMjEsIAorICAgIDEzMzEyNCwgMTMzMTI3LCAxMzMxMzAsIDEzMzEzMywgMTMzMTM2LCAxMzMxMzksIDEzMzE0MiwgMTMzMTQ1LCAxMzMxNDgsIAorICAgIDEzMzE1MSwgMTMzMTU0LCAxMzMxNTcsIDEzMzE2MCwgMTMzMTYzLCAxMzMxNjYsIDEzMzE2OSwgMTMzMTcyLCAxMzMxNzUsIAorICAgIDEzMzE3OCwgMTMzMTgxLCAxMzMxODQsIDEzMzE4NywgMTMzMTkwLCAxMzMxOTMsIDEzMzE5NiwgMTMzMTk5LCAxMzMyMDIsIAorICAgIDEzMzIwNSwgMTMzMjA4LCAxMzMyMTEsIDEzMzIxNCwgMTMzMjE3LCAxMzMyMjAsIDEzMzIyMywgMTMzMjI2LCAxMzMyMjksIAorICAgIDEzMzIzMiwgMTMzMjM1LCAxMzMyMzgsIDEzMzI0MSwgMTMzMjQ0LCAxMzMyNDcsIDEzMzI1MCwgMTMzMjUzLCAxMzMyNTYsIAorICAgIDEzMzI1OSwgMTMzMjYyLCAxMzMyNjUsIDEzMzI2OCwgMTMzMjcxLCAxMzMyNzQsIDEzMzI3NywgMTMzMjgwLCAxMzMyODMsIAorICAgIDEzMzI4NiwgMTMzMjg5LCAxMzMyOTIsIDEzMzI5NSwgMTMzMjk4LCAxMzMzMDEsIDEzMzMwNCwgMTMzMzA3LCAxMzMzMTAsIAorICAgIDEzMzMxMywgMTMzMzE2LCAxMzMzMTksIDEzMzMyMiwgMTMzMzI1LCAxMzMzMjgsIDEzMzMzMSwgMTMzMzM0LCAxMzMzMzcsIAorICAgIDEzMzM0MCwgMTMzMzQzLCAxMzMzNDYsIDEzMzM0OSwgMTMzMzUyLCAxMzMzNTUsIDEzMzM1OCwgMTMzMzYxLCAxMzMzNjQsIAorICAgIDEzMzM2NywgMTMzMzcwLCAxMzMzNzMsIDEzMzM3NiwgMTMzMzc5LCAxMzMzODIsIDEzMzM4NSwgMTMzMzg4LCAxMzMzOTEsIAorICAgIDEzMzM5NCwgMTMzMzk3LCAxMzM0MDAsIDEzMzQwMywgMTMzNDA2LCAxMzM0MDksIDEzMzQxMiwgMTMzNDE1LCAxMzM0MTgsIAorICAgIDEzMzQyMSwgMTMzNDI0LCAxMzM0MjcsIDEzMzQzMCwgMTMzNDMzLCAxMzM0MzYsIDEzMzQzOSwgMTMzNDQyLCAxMzM0NDUsIAorICAgIDEzMzQ0OCwgMTMzNDUxLCAxMzM0NTQsIDEzMzQ1NywgMTMzNDYwLCAxMzM0NjMsIDEzMzQ2NiwgMTMzNDY5LCAxMzM0NzIsIAorICAgIDEzMzQ3NSwgMTMzNDc4LCAxMzM0ODEsIDEzMzQ4NCwgMTMzNDg3LCAxMzM0OTAsIDEzMzQ5MywgMTMzNDk2LCAxMzM0OTksIAorICAgIDEzMzUwMiwgMTMzNTA1LCAxMzM1MDgsIDEzMzUxMSwgMTMzNTE0LCAxMzM1MTcsIDEzMzUyMCwgMTMzNTIzLCAxMzM1MjYsIAorICAgIDEzMzUyOSwgMTMzNTMyLCAxMzM1MzUsIDEzMzUzOCwgMTMzNTQxLCAxMzM1NDQsIDEzMzU0NywgMTMzNTUwLCAxMzM1NTMsIAorICAgIDEzMzU1NiwgMTMzNTU5LCAxMzM1NjIsIDEzMzU2NSwgMTMzNTY4LCAxMzM1NzEsIDEzMzU3NCwgMTMzNTc3LCAxMzM1ODAsIAorICAgIDEzMzU4MywgMTMzNTg2LCAxMzM1ODksIDEzMzU5MiwgMTMzNTk1LCAxMzM1OTgsIDEzMzYwMSwgMTMzNjA0LCAxMzM2MDcsIAorICAgIDEzMzYxMCwgMTMzNjEzLCAxMzM2MTYsIDEzMzYxOSwgMTMzNjIyLCAxMzM2MjUsIDEzMzYyOCwgMTMzNjMxLCAxMzM2MzQsIAorICAgIDEzMzYzNywgMTMzNjQwLCAxMzM2NDMsIDEzMzY0NiwgMTMzNjQ5LCAxMzM2NTIsIDEzMzY1NSwgMTMzNjU4LCAxMzM2NjEsIAorICAgIDEzMzY2NCwgMTMzNjY3LCAxMzM2NzAsIDEzMzY3MywgMTMzNjc2LCAxMzM2NzksIDEzMzY4MiwgMTMzNjg1LCAxMzM2ODgsIAorICAgIDEzMzY5MSwgMTMzNjk0LCAxMzM2OTcsIDEzMzcwMCwgMTMzNzAzLCAxMzM3MDYsIDEzMzcwOSwgMTMzNzEyLCAxMzM3MTUsIAorICAgIDEzMzcxOCwgMTMzNzIxLCAxMzM3MjQsIDEzMzcyNywgMTMzNzMwLCAxMzM3MzMsIDEzMzczNiwgMTMzNzM5LCAxMzM3NDIsIAorICAgIDEzMzc0NSwgMTMzNzQ4LCAxMzM3NTEsIDEzMzc1NCwgMTMzNzU3LCAxMzM3NjAsIDEzMzc2MywgMTMzNzY2LCAxMzM3NjksIAorICAgIDEzMzc3MiwgMTMzNzc1LCAxMzM3NzgsIDEzMzc4MSwgMTMzNzg0LCAxMzM3ODcsIDEzMzc5MCwgMTMzNzkzLCAxMzM3OTYsIAorICAgIDEzMzc5OSwgMTMzODAyLCAxMzM4MDUsIDEzMzgwOCwgMTMzODExLCAxMzM4MTQsIDEzMzgxNywgMTMzODIwLCAxMzM4MjMsIAorICAgIDEzMzgyNiwgMTMzODI5LCAxMzM4MzIsIDEzMzgzNSwgMTMzODM4LCAxMzM4NDEsIDEzMzg0NCwgMTMzODQ3LCAxMzM4NTAsIAorICAgIDEzMzg1MywgMTMzODU2LCAxMzM4NTksIDEzMzg2MiwgMTMzODY1LCAxMzM4NjgsIDEzMzg3MSwgMTMzODc0LCAxMzM4NzcsIAorICAgIDEzMzg4MCwgMTMzODgzLCAxMzM4ODYsIDEzMzg4OSwgMTMzODkyLCAxMzM4OTUsIDEzMzg5OCwgMTMzOTAxLCAxMzM5MDQsIAorICAgIDEzMzkwNywgMTMzOTEwLCAxMzM5MTMsIDEzMzkxNiwgMTMzOTE5LCAxMzM5MjIsIDEzMzkyNSwgMTMzOTI4LCAxMzM5MzEsIAorICAgIDEzMzkzNCwgMTMzOTM3LCAxMzM5NDAsIDEzMzk0MywgMTMzOTQ2LCAxMzM5NDksIDEzMzk1MiwgMTMzOTU1LCAxMzM5NTgsIAorICAgIDEzMzk2MSwgMTMzOTY0LCAxMzM5NjcsIDEzMzk3MCwgMTMzOTczLCAxMzM5NzYsIDEzMzk3OSwgMTMzOTgyLCAxMzM5ODUsIAorICAgIDEzMzk4OCwgMTMzOTkxLCAxMzM5OTQsIDEzMzk5NywgMTM0MDAwLCAxMzQwMDMsIDEzNDAwNiwgMTM0MDA5LCAxMzQwMTIsIAorICAgIDEzNDAxNSwgMTM0MDE4LCAxMzQwMjEsIDEzNDAyNCwgMTM0MDI3LCAxMzQwMzAsIDEzNDAzMywgMTM0MDM2LCAxMzQwMzksIAorICAgIDEzNDA0MiwgMTM0MDQ1LCAxMzQwNDgsIDEzNDA1MSwgMTM0MDU0LCAxMzQwNTcsIDEzNDA2MCwgMTM0MDYzLCAxMzQwNjYsIAorICAgIDEzNDA2OSwgMTM0MDcyLCAxMzQwNzUsIDEzNDA3OCwgMTM0MDgxLCAxMzQwODQsIDEzNDA4NywgMTM0MDkwLCAxMzQwOTMsIAorICAgIDEzNDA5NiwgMTM0MDk5LCAxMzQxMDIsIDEzNDEwNSwgMTM0MTA4LCAxMzQxMTEsIDEzNDExNCwgMTM0MTE3LCAxMzQxMjAsIAorICAgIDEzNDEyMywgMTM0MTI2LCAxMzQxMjksIDEzNDEzMiwgMTM0MTM1LCAxMzQxMzgsIDEzNDE0MSwgMTM0MTQ0LCAxMzQxNDcsIAorICAgIDEzNDE1MCwgMTM0MTUzLCAxMzQxNTYsIDEzNDE1OSwgMTM0MTYyLCAxMzQxNjUsIDEzNDE2OCwgMTM0MTcxLCAxMzQxNzQsIAorICAgIDEzNDE3NywgMTM0MTgwLCAxMzQxODMsIDEzNDE4NiwgMTM0MTg5LCAxMzQxOTIsIDEzNDE5NSwgMTM0MTk4LCAxMzQyMDEsIAorICAgIDEzNDIwNCwgMTM0MjA3LCAxMzQyMTAsIDEzNDIxMywgMTM0MjE2LCAxMzQyMTksIDEzNDIyMiwgMTM0MjI1LCAxMzQyMjgsIAorICAgIDEzNDIzMSwgMTM0MjM0LCAxMzQyMzcsIDEzNDI0MCwgMTM0MjQzLCAxMzQyNDYsIDEzNDI0OSwgMTM0MjUyLCAxMzQyNTUsIAorICAgIDEzNDI1OCwgMTM0MjYxLCAxMzQyNjQsIDEzNDI2NywgMTM0MjcwLCAxMzQyNzMsIDEzNDI3NiwgMTM0Mjc5LCAxMzQyODIsIAorICAgIDEzNDI4NSwgMTM0Mjg4LCAxMzQyOTEsIDEzNDI5NCwgMTM0Mjk3LCAxMzQzMDAsIDEzNDMwMywgMTM0MzA2LCAxMzQzMDksIAorICAgIDEzNDMxMiwgMTM0MzE1LCAxMzQzMTgsIDEzNDMyMSwgMTM0MzI0LCAxMzQzMjcsIDEzNDMzMCwgMTM0MzMzLCAxMzQzMzYsIAorICAgIDEzNDMzOSwgMTM0MzQyLCAxMzQzNDUsIDEzNDM0OCwgMTM0MzUxLCAxMzQzNTQsIDEzNDM1NywgMTM0MzYwLCAxMzQzNjMsIAorICAgIDEzNDM2NiwgMTM0MzY5LCAxMzQzNzIsIDEzNDM3NSwgMTM0Mzc4LCAxMzQzODEsIDEzNDM4NCwgMTM0Mzg3LCAxMzQzOTAsIAorICAgIDEzNDM5MywgMTM0Mzk2LCAxMzQzOTksIDEzNDQwMiwgMTM0NDA1LCAxMzQ0MDgsIDEzNDQxMSwgMTM0NDE0LCAxMzQ0MTcsIAorICAgIDEzNDQyMCwgMTM0NDIzLCAxMzQ0MjYsIDEzNDQyOSwgMTM0NDMyLCAxMzQ0MzUsIDEzNDQzOCwgMTM0NDQxLCAxMzQ0NDQsIAorICAgIDEzNDQ0NywgMTM0NDUwLCAxMzQ0NTMsIDEzNDQ1NiwgMTM0NDU5LCAxMzQ0NjIsIDEzNDQ2NSwgMTM0NDY4LCAxMzQ0NzEsIAorICAgIDEzNDQ3NCwgMTM0NDc3LCAxMzQ0ODAsIDEzNDQ4MywgMTM0NDg2LCAxMzQ0ODksIDEzNDQ5MiwgMTM0NDk1LCAxMzQ0OTgsIAorICAgIDEzNDUwMSwgMTM0NTA0LCAxMzQ1MDcsIDEzNDUxMCwgMTM0NTEzLCAxMzQ1MTYsIDEzNDUxOSwgMTM0NTIyLCAxMzQ1MjUsIAorICAgIDEzNDUyOCwgMTM0NTMxLCAxMzQ1MzQsIDEzNDUzNywgMTM0NTQwLCAxMzQ1NDMsIDEzNDU0NiwgMTM0NTQ5LCAxMzQ1NTIsIAorICAgIDEzNDU1NSwgMTM0NTU4LCAxMzQ1NjEsIDEzNDU2NCwgMTM0NTY3LCAxMzQ1NzAsIDEzNDU3MywgMTM0NTc2LCAxMzQ1NzksIAorICAgIDEzNDU4MiwgMTM0NTg1LCAxMzQ1ODgsIDEzNDU5MSwgMTM0NTk0LCAxMzQ1OTcsIDEzNDYwMCwgMTM0NjAzLCAxMzQ2MDYsIAorICAgIDEzNDYwOSwgMTM0NjEyLCAxMzQ2MTUsIDEzNDYxOCwgMTM0NjIxLCAxMzQ2MjQsIDEzNDYyNywgMTM0NjMwLCAxMzQ2MzMsIAorICAgIDEzNDYzNiwgMTM0NjM5LCAxMzQ2NDIsIDEzNDY0NSwgMTM0NjQ4LCAxMzQ2NTEsIDEzNDY1NCwgMTM0NjU3LCAxMzQ2NjAsIAorICAgIDEzNDY2MywgMTM0NjY2LCAxMzQ2NjksIDEzNDY3MiwgMTM0Njc1LCAxMzQ2NzgsIDEzNDY4MSwgMTM0Njg0LCAxMzQ2ODcsIAorICAgIDEzNDY5MCwgMTM0NjkzLCAxMzQ2OTYsIDEzNDY5OSwgMTM0NzAyLCAxMzQ3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzNDcwOCwgMTM0NzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NDUsIDEyOTk1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTQyNiw2NTAgKzIwNjY4LDY4MyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNDcxOSwgMTM0NzIzLCAxMzQ3MjcsIDEzNDczMSwgMTM0NzM1LCAxMzQ3MzksIDEzNDc0MywgMTM0NzQ2LCAxMzQ3NTAsIAorICAgIDEzNDc1NCwgMTM0NzU4LCAxMzQ3NjIsIDEzNDc2NSwgMTM0NzcxLCAxMzQ3NzcsIDEzNDc4MywgMTM0Nzg5LCAxMzQ3OTUsIAorICAgIDEzNDc5OSwgMTM0ODA1LCAxMzQ4MDksIDEzNDgxMywgMTM0ODE5LCAxMzQ4MjMsIDEzNDgyNywgMTM0ODMxLCAxMzQ4MzUsIAorICAgIDEzNDgzOSwgMTM0ODQzLCAxMzQ4NDcsIDEzNDg1MywgMTM0ODU5LCAxMzQ4NjUsIDEzNDg3MSwgMTM0ODc4LCAxMzQ4ODUsIAorICAgIDEzNDg5MiwgMTM0OTAyLCAxMzQ5MDksIDEzNDkxNiwgMTM0OTIyLCAxMzQ5MjgsIDEzNDkzNCwgMTM0OTQwLCAxMzQ5NDgsIAorICAgIDEzNDk1NiwgMTM0OTY0LCAxMzQ5NzIsIDEzNDk4MSwgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwMSwgMTM1MDA4LCAxMzUwMTQsIAorICAgIDEzNTAyMSwgMTM1MDI3LCAxMzUwMzUsIDEzNTAzOSwgMTM1MDQzLCAxMzUwNDgsIDEzNTA1NCwgMTM1MDYwLCAxMzUwNjgsIAorICAgIDEzNTA3NiwgMTM1MDgyLCAxMzUwODksIDEzNTA5MiwgMTM1MDk4LCAxMzUxMDIsIDEzNTEwNSwgMTM1MTA5LCAxMzUxMTIsIAorICAgIDEzNTExNSwgMTM1MTE5LCAxMzUxMjQsIDEzNTEyOCwgMTM1MTMyLCAxMzUxMzgsIDEzNTE0MywgMTM1MTQ5LCAxMzUxNTMsIAorICAgIDEzNTE1NywgMTM1MTYwLCAxMzUxNjQsIDEzNTE2OCwgMTM1MTczLCAxMzUxNzcsIDEzNTE4MiwgMTM1MTg2LCAxMzUxOTEsIAorICAgIDEzNTE5NSwgMTM1MTk5LCAxMzUyMDMsIDEzNTIwNywgMTM1MjExLCAxMzUyMTUsIDEzNTIxOSwgMTM1MjIzLCAxMzUyMjgsIAorICAgIDEzNTIzMywgMTM1MjM4LCAxMzUyNDMsIDEzNTI0OSwgMTM1MjU1LCAxMzUyNjEsIDEzNTI2NywgMTM1MjczLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzUyNzgsIDEzNTI4NiwgMTM1Mjk1LCAxMzUzMDMsIDEzNTMxMCwgMTM1MzE4LCAxMzUzMjUsIDEzNTMzMiwgCisgICAgMTM1MzQxLCAxMzUzNDgsIDEzNTM1NSwgMTM1MzYyLCAxMzUzNzAsIDAsIDAsIDAsIDEzNTM3OCwgMTM1MzgzLCAxMzUzOTAsIAorICAgIDEzNTM5NiwgMTM1NDAzLCAxMzU0MDksIDEzNTQxNSwgMTM1NDIxLCAxMzU0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNTQzMywgMTM1NDM4LCAxMzU0NDUsIDEzNTQ1MSwgMTM1NDU4LCAxMzU0NjQsIDEzNTQ3MCwgMTM1NDc2LCAxMzU0ODIsIAorICAgIDEzNTQ4OCwgMCwgMCwgMTM1NDkzLCAxMzU0OTksIDEzNTUwNSwgMTM1NTA4LCAxMzU1MTcsIDEzNTUyNCwgMTM1NTMyLCAKKyAgICAxMzU1MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTk1NiwgMTI5OTYwLCAxMjk5NjQsIDEyOTk2OCwgMTI5OTcyLCAxMjk5NzYsIAotICAgIDEyOTk4MCwgMTI5OTgzLCAxMjk5ODcsIDEyOTk5MSwgMTI5OTk1LCAxMjk5OTksIDEzMDAwMiwgMTMwMDA4LCAxMzAwMTMsIAotICAgIDEzMDAxOSwgMTMwMDI1LCAxMzAwMzAsIDEzMDAzNCwgMTMwMDQwLCAxMzAwNDQsIDEzMDA0OCwgMTMwMDU0LCAxMzAwNTgsIAotICAgIDEzMDA2MiwgMTMwMDY2LCAxMzAwNzAsIDEzMDA3NCwgMTMwMDc4LCAxMzAwODEsIDEzMDA4NywgMTMwMDkzLCAxMzAwOTksIAotICAgIDEzMDEwNSwgMTMwMTEyLCAxMzAxMTksIDEzMDEyNiwgMTMwMTM2LCAxMzAxNDMsIDEzMDE1MCwgMTMwMTU1LCAxMzAxNjAsIAotICAgIDEzMDE2NSwgMTMwMTcwLCAxMzAxNzcsIDEzMDE4NCwgMTMwMTkxLCAxMzAxOTgsIDEzMDIwNywgMTMwMjEzLCAxMzAyMjAsIAotICAgIDEzMDIyNiwgMTMwMjMzLCAxMzAyMzksIDEzMDI0NiwgMTMwMjUxLCAxMzAyNTgsIDEzMDI2MiwgMTMwMjY2LCAxMzAyNzEsIAotICAgIDEzMDI3NywgMTMwMjgzLCAxMzAyOTAsIDEzMDI5NywgMTMwMzAzLCAxMzAzMTAsIDEzMDMxMywgMTMwMzE5LCAxMzAzMjMsIAotICAgIDEzMDMyNiwgMTMwMzMwLCAxMzAzMzMsIDEzMDMzNiwgMTMwMzQwLCAxMzAzNDUsIDEzMDM0OSwgMTMwMzUzLCAxMzAzNTksIAotICAgIDEzMDM2NCwgMTMwMzcwLCAxMzAzNzQsIDEzMDM3OCwgMTMwMzgxLCAxMzAzODUsIDEzMDM4OSwgMTMwMzk0LCAxMzAzOTgsIAotICAgIDEzMDQwMywgMTMwNDA3LCAxMzA0MTIsIDEzMDQxNiwgMTMwNDIwLCAxMzA0MjQsIDEzMDQyOCwgMTMwNDMyLCAxMzA0MzYsIAotICAgIDEzMDQ0MCwgMTMwNDQ0LCAxMzA0NDksIDEzMDQ1NCwgMTMwNDU5LCAxMzA0NjQsIDEzMDQ3MCwgMTMwNDc2LCAxMzA0ODIsIAotICAgIDEzMDQ4OCwgMTMwNDk0LCAwLCAwLCAwLCAwLCAwLCAxMzA0OTksIDEzMDUwNywgMTMwNTE2LCAxMzA1MjQsIDEzMDUzMSwgCi0gICAgMTMwNTM5LCAxMzA1NDYsIDEzMDU1MywgMTMwNTYyLCAxMzA1NjksIDEzMDU3NiwgMTMwNTgzLCAxMzA1OTEsIDAsIDAsIDAsIAotICAgIDEzMDU5OSwgMTMwNjA0LCAxMzA2MTEsIDEzMDYxNywgMTMwNjI0LCAxMzA2MzAsIDEzMDYzNiwgMTMwNjQyLCAxMzA2NDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDY1NCwgMTMwNjU5LCAxMzA2NjYsIDEzMDY3MiwgMTMwNjc5LCAxMzA2ODUsIAotICAgIDEzMDY5MSwgMTMwNjk3LCAxMzA3MDMsIDEzMDcwOSwgMCwgMCwgMTMwNzE0LCAxMzA3MjAsIDEzMDcyNiwgMTMwNzI5LCAKLSAgICAxMzA3MzgsIDEzMDc0NSwgMTMwNzUzLCAxMzA3NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTU0NiwgCisgICAgMTM1NTUxLCAxMzU1NTYsIDEzNTU2MSwgMTM1NTY4LCAxMzU1NzUsIDEzNTU4MiwgMTM1NTg5LCAxMzU1OTQsIDEzNTU5OSwgCisgICAgMTM1NjA0LCAxMzU2MDksIDEzNTYxNiwgMTM1NjIxLCAxMzU2MjgsIDEzNTYzNSwgMTM1NjQwLCAxMzU2NDUsIDEzNTY1MCwgCisgICAgMTM1NjU3LCAxMzU2NjIsIDEzNTY2NywgMTM1Njc0LCAxMzU2ODEsIDEzNTY4NiwgMTM1NjkxLCAxMzU2OTYsIDEzNTcwMywgCisgICAgMTM1NzEwLCAxMzU3MTcsIDEzNTcyMiwgMTM1NzI3LCAxMzU3MzQsIDEzNTc0MSwgMTM1NzQ4LCAxMzU3NTUsIDEzNTc2MCwgCisgICAgMTM1NzY1LCAxMzU3NzAsIDEzNTc3NywgMTM1NzgyLCAxMzU3ODcsIDEzNTc5MiwgMTM1Nzk5LCAxMzU4MDgsIDEzNTgxNSwgCisgICAgMTM1ODIwLCAxMzU4MjUsIDEzNTgzMCwgMTM1ODM1LCAxMzU4NDAsIDEzNTg0NSwgMTM1ODU0LCAxMzU4NjEsIDEzNTg2NiwgCisgICAgMTM1ODczLCAxMzU4ODAsIDEzNTg4NSwgMTM1ODkwLCAxMzU4OTUsIDEzNTkwMiwgMTM1OTA3LCAxMzU5MTQsIDEzNTkyMSwgCisgICAgMTM1OTI2LCAxMzU5MzEsIDEzNTkzNiwgMTM1OTQzLCAxMzU5NTAsIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjcsIDEzNTk3NCwgCisgICAgMTM1OTgxLCAxMzU5ODYsIDEzNTk5MSwgMTM1OTk2LCAxMzYwMDEsIDEzNjAwOCwgMTM2MDE3LCAxMzYwMjYsIDEzNjAzMSwgCisgICAgMTM2MDM4LCAxMzYwNDcsIDEzNjA1MiwgMTM2MDU3LCAxMzYwNjIsIDEzNjA2NywgMTM2MDc0LCAxMzYwODEsIDEzNjA4OCwgCisgICAgMTM2MDk1LCAxMzYxMDAsIDEzNjEwNSwgMTM2MTEwLCAxMzYxMTcsIDEzNjEyNCwgMTM2MTMxLCAxMzYxMzYsIDEzNjE0MSwgCisgICAgMTM2MTQ4LCAxMzYxNTMsIDEzNjE2MCwgMTM2MTY1LCAxMzYxNzIsIDEzNjE3NywgMTM2MTg0LCAxMzYxOTEsIDEzNjE5NiwgCisgICAgMTM2MjAxLCAxMzYyMDYsIDEzNjIxMSwgMTM2MjE2LCAxMzYyMjEsIDEzNjIyNiwgMTM2MjMxLCAxMzYyMzYsIDEzNjI0MywgCisgICAgMTM2MjUwLCAxMzYyNTcsIDEzNjI2NCwgMTM2MjcxLCAxMzYyODAsIDEzNjI4NSwgMTM2MjkwLCAxMzYyOTcsIDEzNjMwNCwgCisgICAgMTM2MzA5LCAxMzYzMTYsIDEzNjMyMywgMTM2MzMwLCAxMzYzMzcsIDEzNjM0NCwgMTM2MzUxLCAxMzYzNTYsIDEzNjM2MSwgCisgICAgMTM2MzY2LCAxMzYzNzEsIDEzNjM3NiwgMTM2Mzg1LCAxMzYzOTQsIDEzNjQwMywgMTM2NDEyLCAxMzY0MjEsIDEzNjQzMCwgCisgICAgMTM2NDM5LCAxMzY0NDgsIDEzNjQ1MywgMTM2NDY0LCAxMzY0NzUsIDEzNjQ4NCwgMTM2NDg5LCAxMzY0OTQsIDEzNjQ5OSwgCisgICAgMTM2NTA0LCAxMzY1MTMsIDEzNjUyMCwgMTM2NTI3LCAxMzY1MzQsIDEzNjU0MSwgMTM2NTQ4LCAxMzY1NTUsIDEzNjU2NCwgCisgICAgMTM2NTczLCAxMzY1ODQsIDEzNjU5MywgMTM2NjA0LCAxMzY2MTMsIDEzNjYyMCwgMTM2NjI5LCAxMzY2NDAsIDEzNjY0OSwgCisgICAgMTM2NjU4LCAxMzY2NjcsIDEzNjY3NiwgMTM2NjgzLCAxMzY2OTAsIDEzNjY5NywgMTM2NzA2LCAxMzY3MTUsIDEzNjcyNiwgCisgICAgMTM2NzM1LCAxMzY3NDQsIDEzNjc1NSwgMTM2NzYwLCAxMzY3NjUsIDEzNjc3NiwgMTM2Nzg0LCAxMzY3OTMsIDEzNjgwMiwgCisgICAgMTM2ODExLCAxMzY4MjIsIDEzNjgzMSwgMTM2ODQwLCAxMzY4NTEsIDEzNjg2MiwgMTM2ODczLCAxMzY4ODQsIDEzNjg5NSwgCisgICAgMTM2OTA2LCAxMzY5MTMsIDEzNjkyMCwgMTM2OTI3LCAxMzY5MzQsIDEzNjk0NSwgMTM2OTU0LCAxMzY5NjEsIDEzNjk2OCwgCisgICAgMTM2OTc1LCAxMzY5ODYsIDEzNjk5NywgMTM3MDA4LCAxMzcwMTksIDEzNzAzMCwgMTM3MDQxLCAxMzcwNTIsIDEzNzA2MywgCisgICAgMTM3MDcwLCAxMzcwNzcsIDEzNzA4NiwgMTM3MDk1LCAxMzcxMDIsIDEzNzEwOSwgMTM3MTE2LCAxMzcxMjUsIDEzNzEzNCwgCisgICAgMTM3MTQzLCAxMzcxNTAsIDEzNzE1OSwgMTM3MTY4LCAxMzcxNzcsIDEzNzE4NCwgMTM3MTkxLCAxMzcxOTYsIDEzNzIwMiwgCisgICAgMTM3MjA5LCAxMzcyMTYsIDEzNzIyMywgMTM3MjMwLCAxMzcyMzcsIDEzNzI0NCwgMTM3MjUzLCAxMzcyNjIsIDEzNzI3MSwgCisgICAgMTM3MjgwLCAxMzcyODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNzI5NiwgMTM3MzAyLCAxMzczMDcsIAorICAgIDEzNzMxMiwgMTM3MzE5LCAxMzczMjUsIDEzNzMzMSwgMTM3MzM3LCAxMzczNDMsIDEzNzM0OSwgMTM3MzU1LCAxMzczNjEsIAorICAgIDEzNzM2NSwgMTM3MzY5LCAxMzczNzUsIDEzNzM4MSwgMTM3Mzg3LCAxMzczOTEsIDEzNzM5NiwgMTM3NDAxLCAxMzc0MDUsIAorICAgIDEzNzQwOSwgMTM3NDEyLCAxMzc0MTgsIDEzNzQyNCwgMTM3NDMwLCAxMzc0MzYsIDEzNzQ0MiwgMTM3NDQ4LCAxMzc0NTQsIAorICAgIDEzNzQ2MCwgMTM3NDY2LCAxMzc0NzYsIDEzNzQ4NiwgMTM3NDkyLCAxMzc0OTgsIDEzNzUwOCwgMTM3NTE4LCAxMzc1MjQsIAorICAgIDAsIDAsIDEzNzUzMCwgMTM3NTM4LCAxMzc1NDMsIDEzNzU0OCwgMTM3NTU0LCAxMzc1NjAsIDEzNzU2NiwgMTM3NTcyLCAKKyAgICAxMzc1NzgsIDEzNzU4NCwgMTM3NTkxLCAxMzc1OTgsIDEzNzYwNCwgMTM3NjEwLCAxMzc2MTYsIDEzNzYyMiwgMTM3NjI4LCAKKyAgICAxMzc2MzQsIDEzNzY0MCwgMTM3NjQ2LCAxMzc2NTEsIDEzNzY1NywgMTM3NjYzLCAxMzc2NjksIDEzNzY3NSwgMTM3NjgxLCAKKyAgICAxMzc2OTAsIDEzNzY5NiwgMTM3NzAxLCAxMzc3MDksIDEzNzcxNiwgMTM3NzIzLCAxMzc3MzIsIDEzNzc0MSwgMTM3NzUwLCAKKyAgICAxMzc3NTksIDEzNzc2OCwgMTM3Nzc3LCAxMzc3ODYsIDEzNzc5NSwgMTM3ODA1LCAxMzc4MTUsIDEzNzgyMywgMTM3ODMxLCAKKyAgICAxMzc4NDAsIDEzNzg0OSwgMTM3ODU1LCAxMzc4NjEsIDEzNzg2NywgMTM3ODczLCAxMzc4ODEsIDEzNzg4OSwgMTM3ODkzLCAKKyAgICAxMzc4OTksIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAxMzc5MzQsIDEzNzk0MywgMTM3OTQ4LCAKKyAgICAxMzc5NTUsIDEzNzk2MCwgMTM3OTY1LCAxMzc5NzAsIDEzNzk3NiwgMTM3OTgyLCAxMzc5ODgsIDEzNzk5NSwgMTM4MDAwLCAKKyAgICAxMzgwMDUsIDEzODAxMCwgMTM4MDE1LCAxMzgwMjAsIDEzODAyNiwgMTM4MDMyLCAxMzgwMzgsIDEzODA0NCwgMTM4MDUwLCAKKyAgICAxMzgwNTYsIDEzODA2MiwgMTM4MDY4LCAxMzgwNzMsIDEzODA3OCwgMTM4MDgzLCAxMzgwODgsIDEzODA5MywgMTM4MDk4LCAKKyAgICAxMzgxMDMsIDEzODEwOCwgMTM4MTE0LCAxMzgxMjAsIDEzODEyNSwgMTM4MTMwLCAxMzgxMzUsIDEzODE0MCwgMTM4MTQ1LCAKKyAgICAxMzgxNTEsIDEzODE1OCwgMTM4MTYyLCAxMzgxNjYsIDEzODE3MCwgMTM4MTc0LCAxMzgxNzgsIDEzODE4MiwgMTM4MTg2LCAKKyAgICAxMzgxOTAsIDEzODE5OCwgMTM4MjA4LCAxMzgyMTIsIDEzODIxNiwgMTM4MjIyLCAxMzgyMjgsIDEzODIzNCwgMTM4MjQwLCAKKyAgICAxMzgyNDYsIDEzODI1MiwgMTM4MjU4LCAxMzgyNjQsIDEzODI3MCwgMTM4Mjc2LCAxMzgyODIsIDEzODI4OCwgMTM4Mjk0LCAKKyAgICAxMzgzMDAsIDEzODMwNCwgMTM4MzA4LCAxMzgzMTUsIDEzODMyMSwgMTM4MzI3LCAxMzgzMzMsIDEzODMzOCwgMTM4MzQ1LCAKKyAgICAxMzgzNTAsIDEzODM1NiwgMTM4MzYyLCAxMzgzNjgsIDEzODM3NCwgMTM4Mzc5LCAxMzgzODMsIDEzODM4OSwgMTM4MzkzLCAKKyAgICAxMzgzOTcsIDEzODQwMSwgMTM4NDA3LCAxMzg0MTMsIDEzODQxNywgMTM4NDIzLCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKKyAgICAxMzg0NDcsIDEzODQ1NSwgMTM4NDYzLCAxMzg0NjksIDEzODQ3NSwgMTM4NDgxLCAxMzg0ODcsIDEzODQ5OSwgMTM4NTExLCAKKyAgICAxMzg1MjUsIDEzODUzNywgMTM4NTQ5LCAxMzg1NjMsIDEzODU3NywgMTM4NTkxLCAxMzg1OTUsIDEzODYwMywgMTM4NjExLCAKKyAgICAxMzg2MTYsIDEzODYyMCwgMTM4NjI0LCAxMzg2MjgsIDEzODYzMiwgMTM4NjM2LCAxMzg2NDAsIDEzODY0NCwgMTM4NjUwLCAKKyAgICAxMzg2NTYsIDEzODY2MiwgMTM4NjY4LCAxMzg2NzYsIDEzODY4NSwgMTM4NjkyLCAxMzg2OTksIDEzODcwNywgMTM4NzE0LCAKKyAgICAxMzg3MjYsIDEzODczOCwgMTM4NzUwLCAxMzg3NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODc2OSwgMTM4Nzc2LCAxMzg3ODMsIDEzODc5MCwgMTM4Nzk3LCAKKyAgICAxMzg4MDQsIDEzODgxMSwgMTM4ODE4LCAxMzg4MjUsIDEzODgzMiwgMTM4ODM5LCAxMzg4NDYsIDEzODg1MywgMTM4ODYwLCAKKyAgICAxMzg4NjcsIDEzODg3NCwgMTM4ODgxLCAxMzg4ODgsIDEzODg5NSwgMTM4OTAyLCAxMzg5MDksIDEzODkxNiwgMTM4OTIzLCAKKyAgICAxMzg5MzAsIDEzODkzNywgMTM4OTQ0LCAxMzg5NTEsIDEzODk1OCwgMTM4OTY1LCAxMzg5NzIsIDEzODk3OSwgMTM4OTg2LCAKKyAgICAxMzg5OTMsIDEzOTAwMCwgMTM5MDA3LCAxMzkwMTQsIDEzOTAyMSwgMTM5MDI4LCAxMzkwMzUsIDEzOTA0MiwgMTM5MDQ5LCAKKyAgICAxMzkwNTYsIDEzOTA2MywgMTM5MDcwLCAxMzkwNzcsIDEzOTA4NCwgMTM5MDkxLCAxMzkwOTgsIDEzOTEwNSwgMTM5MTEyLCAKKyAgICAxMzkxMTksIDEzOTEyNiwgMTM5MTMzLCAxMzkxNDAsIDEzOTE0NywgMTM5MTU0LCAxMzkxNjEsIDEzOTE2OCwgMTM5MTc1LCAKKyAgICAxMzkxODIsIDEzOTE4OSwgMTM5MTk2LCAxMzkyMDMsIDEzOTIxMCwgMTM5MjE3LCAxMzkyMjQsIDEzOTIzMSwgMTM5MjM2LCAKKyAgICAxMzkyNDEsIDEzOTI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNzY3LCAxMzA3NzIsIDEzMDc3NywgMTMwNzgyLCAxMzA3ODksIDEzMDc5NiwgMTMwODAzLCAKLSAgICAxMzA4MTAsIDEzMDgxNSwgMTMwODIwLCAxMzA4MjUsIDEzMDgzMCwgMTMwODM3LCAxMzA4NDIsIDEzMDg0OSwgMTMwODU2LCAKLSAgICAxMzA4NjEsIDEzMDg2NiwgMTMwODcxLCAxMzA4NzgsIDEzMDg4MywgMTMwODg4LCAxMzA4OTUsIDEzMDkwMiwgMTMwOTA3LCAKLSAgICAxMzA5MTIsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQzLCAxMzA5NDgsIDEzMDk1NSwgMTMwOTYyLCAKLSAgICAxMzA5NjksIDEzMDk3NiwgMTMwOTgxLCAxMzA5ODYsIDEzMDk5MSwgMTMwOTk4LCAxMzEwMDMsIDEzMTAwOCwgMTMxMDEzLCAKLSAgICAxMzEwMjAsIDEzMTAyOSwgMTMxMDM2LCAxMzEwNDEsIDEzMTA0NiwgMTMxMDUxLCAxMzEwNTYsIDEzMTA2MSwgMTMxMDY2LCAKLSAgICAxMzEwNzUsIDEzMTA4MiwgMTMxMDg3LCAxMzEwOTQsIDEzMTEwMSwgMTMxMTA2LCAxMzExMTEsIDEzMTExNiwgMTMxMTIzLCAKLSAgICAxMzExMjgsIDEzMTEzNSwgMTMxMTQyLCAxMzExNDcsIDEzMTE1MiwgMTMxMTU3LCAxMzExNjQsIDEzMTE3MSwgMTMxMTc2LCAKLSAgICAxMzExODEsIDEzMTE4OCwgMTMxMTk1LCAxMzEyMDIsIDEzMTIwNywgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI5LCAKLSAgICAxMzEyMzgsIDEzMTI0NywgMTMxMjUyLCAxMzEyNTksIDEzMTI2OCwgMTMxMjczLCAxMzEyNzgsIDEzMTI4MywgMTMxMjg4LCAKLSAgICAxMzEyOTUsIDEzMTMwMiwgMTMxMzA5LCAxMzEzMTYsIDEzMTMyMSwgMTMxMzI2LCAxMzEzMzEsIDEzMTMzOCwgMTMxMzQ1LCAKLSAgICAxMzEzNTIsIDEzMTM1NywgMTMxMzYyLCAxMzEzNjksIDEzMTM3NCwgMTMxMzgxLCAxMzEzODYsIDEzMTM5MywgMTMxMzk4LCAKLSAgICAxMzE0MDUsIDEzMTQxMiwgMTMxNDE3LCAxMzE0MjIsIDEzMTQyNywgMTMxNDMyLCAxMzE0MzcsIDEzMTQ0MiwgMTMxNDQ3LCAKLSAgICAxMzE0NTIsIDEzMTQ1NywgMTMxNDY0LCAxMzE0NzEsIDEzMTQ3OCwgMTMxNDg1LCAxMzE0OTIsIDEzMTUwMSwgMTMxNTA2LCAKLSAgICAxMzE1MTEsIDEzMTUxOCwgMTMxNTI1LCAxMzE1MzAsIDEzMTUzNywgMTMxNTQ0LCAxMzE1NTEsIDEzMTU1OCwgMTMxNTY1LCAKLSAgICAxMzE1NzIsIDEzMTU3NywgMTMxNTgyLCAxMzE1ODcsIDEzMTU5MiwgMTMxNTk3LCAxMzE2MDYsIDEzMTYxNSwgMTMxNjI0LCAKLSAgICAxMzE2MzMsIDEzMTY0MiwgMTMxNjUxLCAxMzE2NjAsIDEzMTY2OSwgMTMxNjc0LCAxMzE2ODUsIDEzMTY5NiwgMTMxNzA1LCAKLSAgICAxMzE3MTAsIDEzMTcxNSwgMTMxNzIwLCAxMzE3MjUsIDEzMTczNCwgMTMxNzQxLCAxMzE3NDgsIDEzMTc1NSwgMTMxNzYyLCAKLSAgICAxMzE3NjksIDEzMTc3NiwgMTMxNzg1LCAxMzE3OTQsIDEzMTgwNSwgMTMxODE0LCAxMzE4MjUsIDEzMTgzNCwgMTMxODQxLCAKLSAgICAxMzE4NTAsIDEzMTg2MSwgMTMxODcwLCAxMzE4NzksIDEzMTg4OCwgMTMxODk3LCAxMzE5MDQsIDEzMTkxMSwgMTMxOTE4LCAKLSAgICAxMzE5MjcsIDEzMTkzNiwgMTMxOTQ3LCAxMzE5NTYsIDEzMTk2NSwgMTMxOTc2LCAxMzE5ODEsIDEzMTk4NiwgMTMxOTk3LCAKLSAgICAxMzIwMDUsIDEzMjAxNCwgMTMyMDIzLCAxMzIwMzIsIDEzMjA0MywgMTMyMDUyLCAxMzIwNjEsIDEzMjA3MiwgMTMyMDgzLCAKLSAgICAxMzIwOTQsIDEzMjEwNSwgMTMyMTE2LCAxMzIxMjcsIDEzMjEzNCwgMTMyMTQxLCAxMzIxNDgsIDEzMjE1NSwgMTMyMTY2LCAKLSAgICAxMzIxNzUsIDEzMjE4MiwgMTMyMTg5LCAxMzIxOTYsIDEzMjIwNywgMTMyMjE4LCAxMzIyMjksIDEzMjI0MCwgMTMyMjUxLCAKLSAgICAxMzIyNjIsIDEzMjI3MywgMTMyMjg0LCAxMzIyOTEsIDEzMjI5OCwgMTMyMzA3LCAxMzIzMTYsIDEzMjMyMywgMTMyMzMwLCAKLSAgICAxMzIzMzcsIDEzMjM0NiwgMTMyMzU1LCAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA1LCAKLSAgICAxMzI0MTIsIDEzMjQxNywgMTMyNDIzLCAxMzI0MzAsIDEzMjQzNywgMTMyNDQ0LCAxMzI0NTEsIDEzMjQ1OCwgMTMyNDY1LCAKLSAgICAxMzI0NzQsIDEzMjQ4MywgMTMyNDkyLCAxMzI1MDEsIDEzMjUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTMyNTE3LCAxMzI1MjMsIDEzMjUyOCwgMTMyNTMzLCAxMzI1NDAsIDEzMjU0NiwgMTMyNTUyLCAxMzI1NTgsIDEzMjU2NCwgCi0gICAgMTMyNTcwLCAxMzI1NzYsIDEzMjU4MiwgMTMyNTg2LCAxMzI1OTAsIDEzMjU5NiwgMTMyNjAyLCAxMzI2MDgsIDEzMjYxMiwgCi0gICAgMTMyNjE3LCAxMzI2MjIsIDEzMjYyNiwgMTMyNjMwLCAxMzI2MzMsIDEzMjYzOSwgMTMyNjQ1LCAxMzI2NTEsIDEzMjY1NywgCi0gICAgMTMyNjYzLCAxMzI2NjksIDEzMjY3NSwgMTMyNjgxLCAxMzI2ODcsIDEzMjY5NywgMTMyNzA3LCAxMzI3MTMsIDEzMjcxOSwgCi0gICAgMTMyNzI5LCAxMzI3MzksIDEzMjc0NSwgMCwgMCwgMTMyNzUxLCAxMzI3NTksIDEzMjc2NCwgMTMyNzY5LCAxMzI3NzUsIAotICAgIDEzMjc4MSwgMTMyNzg3LCAxMzI3OTMsIDEzMjc5OSwgMTMyODA1LCAxMzI4MTIsIDEzMjgxOSwgMTMyODI1LCAxMzI4MzEsIAotICAgIDEzMjgzNywgMTMyODQzLCAxMzI4NDksIDEzMjg1NSwgMTMyODYxLCAxMzI4NjcsIDEzMjg3MiwgMTMyODc4LCAxMzI4ODQsIAotICAgIDEzMjg5MCwgMTMyODk2LCAxMzI5MDIsIDEzMjkxMSwgMTMyOTE3LCAxMzI5MjIsIDEzMjkzMCwgMTMyOTM3LCAxMzI5NDQsIAotICAgIDEzMjk1MywgMTMyOTYyLCAxMzI5NzEsIDEzMjk4MCwgMTMyOTg5LCAxMzI5OTgsIDEzMzAwNywgMTMzMDE2LCAxMzMwMjYsIAotICAgIDEzMzAzNiwgMTMzMDQ0LCAxMzMwNTIsIDEzMzA2MSwgMTMzMDcwLCAxMzMwNzYsIDEzMzA4MiwgMTMzMDg4LCAxMzMwOTQsIAotICAgIDEzMzEwMiwgMTMzMTEwLCAxMzMxMTQsIDEzMzEyMCwgMTMzMTI1LCAxMzMxMzEsIDEzMzEzNywgMTMzMTQzLCAxMzMxNDksIAotICAgIDEzMzE1NSwgMTMzMTY0LCAxMzMxNjksIDEzMzE3NiwgMTMzMTgxLCAxMzMxODYsIDEzMzE5MSwgMTMzMTk3LCAxMzMyMDMsIAotICAgIDEzMzIwOSwgMTMzMjE2LCAxMzMyMjEsIDEzMzIyNiwgMTMzMjMxLCAxMzMyMzYsIDEzMzI0MSwgMTMzMjQ3LCAxMzMyNTMsIAotICAgIDEzMzI1OSwgMTMzMjY1LCAxMzMyNzEsIDEzMzI3NywgMTMzMjgzLCAxMzMyODksIDEzMzI5NCwgMTMzMjk5LCAxMzMzMDQsIAotICAgIDEzMzMwOSwgMTMzMzE0LCAxMzMzMTksIDEzMzMyNCwgMTMzMzI5LCAxMzMzMzUsIDEzMzM0MSwgMTMzMzQ2LCAxMzMzNTEsIAotICAgIDEzMzM1NiwgMTMzMzYxLCAxMzMzNjYsIDEzMzM3MiwgMTMzMzc5LCAxMzMzODMsIDEzMzM4NywgMTMzMzkxLCAxMzMzOTUsIAotICAgIDEzMzM5OSwgMTMzNDAzLCAxMzM0MDcsIDEzMzQxMSwgMTMzNDE5LCAxMzM0MjksIDEzMzQzMywgMTMzNDM3LCAxMzM0NDMsIAotICAgIDEzMzQ0OSwgMTMzNDU1LCAxMzM0NjEsIDEzMzQ2NywgMTMzNDczLCAxMzM0NzksIDEzMzQ4NSwgMTMzNDkxLCAxMzM0OTcsIAotICAgIDEzMzUwMywgMTMzNTA5LCAxMzM1MTUsIDEzMzUyMSwgMTMzNTI1LCAxMzM1MjksIDEzMzUzNiwgMTMzNTQyLCAxMzM1NDgsIAotICAgIDEzMzU1NCwgMTMzNTU5LCAxMzM1NjYsIDEzMzU3MSwgMTMzNTc3LCAxMzM1ODMsIDEzMzU4OSwgMTMzNTk1LCAxMzM2MDAsIAotICAgIDEzMzYwNCwgMTMzNjEwLCAxMzM2MTQsIDEzMzYxOCwgMTMzNjIyLCAxMzM2MjgsIDEzMzYzNCwgMTMzNjM4LCAxMzM2NDQsIAotICAgIDEzMzY1MCwgMTMzNjU2LCAxMzM2NjIsIDEzMzY2OCwgMTMzNjc2LCAxMzM2ODQsIDEzMzY5MCwgMTMzNjk2LCAxMzM3MDIsIAotICAgIDEzMzcwOCwgMTMzNzIwLCAxMzM3MzIsIDEzMzc0NiwgMTMzNzU4LCAxMzM3NzAsIDEzMzc4NCwgMTMzNzk4LCAxMzM4MTIsIAotICAgIDEzMzgxNiwgMTMzODI0LCAxMzM4MzIsIDEzMzgzNywgMTMzODQxLCAxMzM4NDUsIDEzMzg0OSwgMTMzODUzLCAxMzM4NTcsIAotICAgIDEzMzg2MSwgMTMzODY1LCAxMzM4NzEsIDEzMzg3NywgMTMzODgzLCAxMzM4ODksIDEzMzg5NywgMTMzOTA2LCAxMzM5MTMsIAotICAgIDEzMzkyMCwgMTMzOTI4LCAxMzM5MzUsIDEzMzk0NywgMTMzOTU5LCAxMzM5NzEsIDEzMzk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzOTkwLCAxMzM5OTcsIAotICAgIDEzNDAwNCwgMTM0MDExLCAxMzQwMTgsIDEzNDAyNSwgMTM0MDMyLCAxMzQwMzksIDEzNDA0NiwgMTM0MDUzLCAxMzQwNjAsIAotICAgIDEzNDA2NywgMTM0MDc0LCAxMzQwODEsIDEzNDA4OCwgMTM0MDk1LCAxMzQxMDIsIDEzNDEwOSwgMTM0MTE2LCAxMzQxMjMsIAotICAgIDEzNDEzMCwgMTM0MTM3LCAxMzQxNDQsIDEzNDE1MSwgMTM0MTU4LCAxMzQxNjUsIDEzNDE3MiwgMTM0MTc5LCAxMzQxODYsIAotICAgIDEzNDE5MywgMTM0MjAwLCAxMzQyMDcsIDEzNDIxNCwgMTM0MjIxLCAxMzQyMjgsIDEzNDIzNSwgMTM0MjQyLCAxMzQyNDksIAotICAgIDEzNDI1NiwgMTM0MjYzLCAxMzQyNzAsIDEzNDI3NywgMTM0Mjg0LCAxMzQyOTEsIDEzNDI5OCwgMTM0MzA1LCAxMzQzMTIsIAotICAgIDEzNDMxOSwgMTM0MzI2LCAxMzQzMzMsIDEzNDM0MCwgMTM0MzQ3LCAxMzQzNTQsIDEzNDM2MSwgMTM0MzY4LCAxMzQzNzUsIAotICAgIDEzNDM4MiwgMTM0Mzg5LCAxMzQzOTYsIDEzNDQwMywgMTM0NDEwLCAxMzQ0MTcsIDEzNDQyNCwgMTM0NDMxLCAxMzQ0MzgsIAotICAgIDEzNDQ0NSwgMTM0NDUyLCAxMzQ0NTcsIDEzNDQ2MiwgMTM0NDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzkyNTAsIDEzOTI1NSwgMTM5MjYyLCAxMzkyNjksIDEzOTI3NiwgMTM5MjgzLCAxMzkyODgsIDEzOTI5MywgMTM5MzAwLCAKKyAgICAxMzkzMDUsIDEzOTMxMCwgMTM5MzE3LCAxMzkzMjIsIDEzOTMyNywgMTM5MzMyLCAxMzkzMzksIDEzOTM0OCwgMTM5MzUzLCAKKyAgICAxMzkzNTgsIDEzOTM2MywgMTM5MzY4LCAxMzkzNzMsIDEzOTM3OCwgMTM5Mzg1LCAxMzkzOTAsIDEzOTM5NSwgMTM5NDAwLCAKKyAgICAxMzk0MDUsIDEzOTQxMCwgMTM5NDE1LCAxMzk0MjAsIDEzOTQyNSwgMTM5NDMwLCAxMzk0MzUsIDEzOTQ0MCwgMTM5NDQ1LCAKKyAgICAxMzk0NTEsIDEzOTQ1NiwgMTM5NDYxLCAxMzk0NjYsIDEzOTQ3MSwgMTM5NDc2LCAxMzk0ODEsIDEzOTQ4NiwgMTM5NDkxLCAKKyAgICAxMzk0OTYsIDEzOTUwNSwgMTM5NTEwLCAxMzk1MTksIDEzOTUyNCwgMTM5NTI5LCAxMzk1MzQsIDEzOTUzOSwgMTM5NTQ0LCAKKyAgICAxMzk1NDksIDEzOTU1NCwgMTM5NTYzLCAxMzk1NjgsIDEzOTU3MywgMTM5NTc4LCAxMzk1ODMsIDEzOTU4OCwgMTM5NTk1LCAKKyAgICAxMzk2MDAsIDEzOTYwNywgMTM5NjEyLCAxMzk2MTcsIDEzOTYyMiwgMTM5NjI3LCAxMzk2MzIsIDEzOTYzNywgMTM5NjQyLCAKKyAgICAxMzk2NDcsIDEzOTY1MiwgMTM5NjU3LCAxMzk2NjIsIDEzOTY2NywgMTM5NjcyLCAxMzk2NzcsIDEzOTY4MiwgMTM5Njg3LCAKKyAgICAxMzk2OTIsIDEzOTY5NywgMTM5NzAyLCAxMzk3MTEsIDEzOTcxNiwgMTM5NzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzk3MjYsIDEzOTczNCwgMTM5NzQyLCAxMzk3NTAsIDEzOTc1OCwgMTM5NzY2LCAxMzk3NzQsIDEzOTc4MywgCisgICAgMTM5NzkxLCAxMzk4MDAsIDEzOTgwOCwgMTM5ODE2LCAxMzk4MjQsIDEzOTgzMiwgMTM5ODQwLCAxMzk4NDgsIDEzOTg1NywgCisgICAgMTM5ODY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ0NzEsIDEzNDQ3NiwgMTM0NDgzLCAxMzQ0OTAsIDEzNDQ5NywgMTM0NTA0LCAKLSAgICAxMzQ1MDksIDEzNDUxNCwgMTM0NTIxLCAxMzQ1MjYsIDEzNDUzMSwgMTM0NTM4LCAxMzQ1NDMsIDEzNDU0OCwgMTM0NTUzLCAKLSAgICAxMzQ1NjAsIDEzNDU2OSwgMTM0NTc0LCAxMzQ1NzksIDEzNDU4NCwgMTM0NTg5LCAxMzQ1OTQsIDEzNDU5OSwgMTM0NjA2LCAKLSAgICAxMzQ2MTEsIDEzNDYxNiwgMTM0NjIxLCAxMzQ2MjYsIDEzNDYzMSwgMTM0NjM2LCAxMzQ2NDEsIDEzNDY0NiwgMTM0NjUxLCAKLSAgICAxMzQ2NTYsIDEzNDY2MSwgMTM0NjY2LCAxMzQ2NzIsIDEzNDY3NywgMTM0NjgyLCAxMzQ2ODcsIDEzNDY5MiwgMTM0Njk3LCAKLSAgICAxMzQ3MDIsIDEzNDcwNywgMTM0NzEyLCAxMzQ3MTcsIDEzNDcyNiwgMTM0NzMxLCAxMzQ3NDAsIDEzNDc0NSwgMTM0NzUwLCAKLSAgICAxMzQ3NTUsIDEzNDc2MCwgMTM0NzY1LCAxMzQ3NzAsIDEzNDc3NSwgMTM0Nzg0LCAxMzQ3ODksIDEzNDc5NCwgMTM0Nzk5LCAKLSAgICAxMzQ4MDQsIDEzNDgwOSwgMTM0ODE2LCAxMzQ4MjEsIDEzNDgyOCwgMTM0ODMzLCAxMzQ4MzgsIDEzNDg0MywgMTM0ODQ4LCAKLSAgICAxMzQ4NTMsIDEzNDg1OCwgMTM0ODYzLCAxMzQ4NjgsIDEzNDg3MywgMTM0ODc4LCAxMzQ4ODMsIDEzNDg4OCwgMTM0ODkzLCAKLSAgICAxMzQ4OTgsIDEzNDkwMywgMTM0OTA4LCAxMzQ5MTMsIDEzNDkxOCwgMTM0OTIzLCAxMzQ5MzIsIDEzNDkzNywgMTM0OTQyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ5NDcsIDEzNDk1NSwgMTM0OTYzLCAxMzQ5NzEsIDEzNDk3OSwgCi0gICAgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwNCwgMTM1MDEyLCAxMzUwMjEsIDEzNTAyOSwgMTM1MDM3LCAxMzUwNDUsIDEzNTA1MywgCi0gICAgMTM1MDYxLCAxMzUwNjksIDEzNTA3OCwgMTM1MDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzk4NzQsIDEzOTg3OCwgMTM5ODgzLCAxMzk4ODgsIDEzOTg5MywgMTM5ODk3LCAxMzk5MDIsIDEzOTkwNywgMTM5OTEyLCAKKyAgICAxMzk5MTYsIDEzOTkyMSwgMTM5OTI2LCAxMzk5MzAsIDEzOTkzNSwgMTM5OTQwLCAxMzk5NDQsIDEzOTk0OSwgMTM5OTU0LCAKKyAgICAxMzk5NTgsIDEzOTk2MywgMTM5OTY4LCAxMzk5NzIsIDEzOTk3NywgMTM5OTgyLCAxMzk5ODcsIDEzOTk5MiwgMTM5OTk3LCAKKyAgICAxNDAwMDEsIDE0MDAwNiwgMTQwMDExLCAxNDAwMTYsIDE0MDAyMCwgMTQwMDI1LCAxNDAwMzAsIDE0MDAzNSwgMTQwMDM5LCAKKyAgICAxNDAwNDQsIDE0MDA0OSwgMTQwMDUzLCAxNDAwNTgsIDE0MDA2MywgMTQwMDY3LCAxNDAwNzIsIDE0MDA3NywgMTQwMDgxLCAKKyAgICAxNDAwODYsIDE0MDA5MSwgMTQwMDk1LCAxNDAxMDAsIDE0MDEwNSwgMTQwMTEwLCAxNDAxMTUsIDE0MDEyMCwgMTQwMTI0LCAKKyAgICAxNDAxMjksIDE0MDEzNCwgMTQwMTM5LCAxNDAxNDMsIDE0MDE0OCwgMTQwMTUzLCAxNDAxNTgsIDE0MDE2MiwgMTQwMTY3LCAKKyAgICAxNDAxNzIsIDE0MDE3NiwgMTQwMTgxLCAxNDAxODYsIDE0MDE5MCwgMTQwMTk1LCAxNDAyMDAsIDE0MDIwNCwgMTQwMjA5LCAKKyAgICAxNDAyMTQsIDE0MDIxOCwgMTQwMjIzLCAxNDAyMjgsIDE0MDIzMywgMTQwMjM4LCAxNDAyNDMsIDE0MDI0NywgMTQwMjUyLCAKKyAgICAxNDAyNTcsIDE0MDI2MiwgMTQwMjY2LCAxNDAyNzEsIDAsIDE0MDI3NiwgMTQwMjgwLCAxNDAyODUsIDE0MDI5MCwgCisgICAgMTQwMjk0LCAxNDAyOTksIDE0MDMwNCwgMTQwMzA4LCAxNDAzMTMsIDE0MDMxOCwgMTQwMzIyLCAxNDAzMjcsIDE0MDMzMiwgCisgICAgMTQwMzM2LCAxNDAzNDEsIDE0MDM0NiwgMTQwMzUxLCAxNDAzNTYsIDE0MDM2MSwgMTQwMzY2LCAxNDAzNzIsIDE0MDM3OCwgCisgICAgMTQwMzg0LCAxNDAzODksIDE0MDM5NSwgMTQwNDAxLCAxNDA0MDcsIDE0MDQxMiwgMTQwNDE4LCAxNDA0MjQsIDE0MDQyOSwgCisgICAgMTQwNDM1LCAxNDA0NDEsIDE0MDQ0NiwgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIDE0MDQ4MCwgCisgICAgMTQwNDg2LCAxNDA0OTIsIDE0MDQ5OCwgMTQwNTA0LCAxNDA1MTAsIDE0MDUxNSwgMTQwNTIxLCAxNDA1MjcsIDE0MDUzMywgCisgICAgMTQwNTM4LCAxNDA1NDQsIDE0MDU1MCwgMTQwNTU2LCAxNDA1NjEsIDE0MDU2NywgMTQwNTczLCAxNDA1NzgsIDE0MDU4NCwgCisgICAgMTQwNTkwLCAxNDA1OTUsIDE0MDYwMSwgMTQwNjA3LCAxNDA2MTIsIDE0MDYxOCwgMTQwNjI0LCAxNDA2MjksIDE0MDYzNSwgCisgICAgMTQwNjQxLCAxNDA2NDcsIDE0MDY1MywgMTQwNjU5LCAwLCAxNDA2NjMsIDE0MDY2OCwgMCwgMCwgMTQwNjczLCAwLCAwLCAKKyAgICAxNDA2NzgsIDE0MDY4MywgMCwgMCwgMTQwNjg4LCAxNDA2OTMsIDE0MDY5NywgMTQwNzAyLCAwLCAxNDA3MDcsIDE0MDcxMiwgCisgICAgMTQwNzE3LCAxNDA3MjEsIDE0MDcyNiwgMTQwNzMxLCAxNDA3MzYsIDE0MDc0MSwgMTQwNzQ2LCAxNDA3NTAsIDE0MDc1NSwgCisgICAgMTQwNzYwLCAwLCAxNDA3NjUsIDAsIDE0MDc3MCwgMTQwNzc1LCAxNDA3NzksIDE0MDc4NCwgMTQwNzg5LCAxNDA3OTMsIAorICAgIDE0MDc5OCwgMCwgMTQwODAzLCAxNDA4MDgsIDE0MDgxMywgMTQwODE3LCAxNDA4MjIsIDE0MDgyNywgMTQwODMxLCAKKyAgICAxNDA4MzYsIDE0MDg0MSwgMTQwODQ2LCAxNDA4NTEsIDE0MDg1NiwgMTQwODYxLCAxNDA4NjcsIDE0MDg3MywgMTQwODc5LCAKKyAgICAxNDA4ODQsIDE0MDg5MCwgMTQwODk2LCAxNDA5MDIsIDE0MDkwNywgMTQwOTEzLCAxNDA5MTksIDE0MDkyNCwgMTQwOTMwLCAKKyAgICAxNDA5MzYsIDE0MDk0MSwgMTQwOTQ3LCAxNDA5NTMsIDE0MDk1OCwgMTQwOTY0LCAxNDA5NzAsIDE0MDk3NSwgMTQwOTgxLCAKKyAgICAxNDA5ODcsIDE0MDk5MywgMTQwOTk5LCAxNDEwMDUsIDE0MTAxMCwgMTQxMDE2LCAxNDEwMjIsIDE0MTAyOCwgMTQxMDMzLCAKKyAgICAxNDEwMzksIDE0MTA0NSwgMTQxMDUxLCAxNDEwNTYsIDE0MTA2MiwgMTQxMDY4LCAxNDEwNzMsIDE0MTA3OSwgMTQxMDg1LCAKKyAgICAxNDEwOTAsIDE0MTA5NiwgMTQxMTAyLCAxNDExMDcsIDE0MTExMywgMTQxMTE5LCAxNDExMjQsIDE0MTEzMCwgMTQxMTM2LCAKKyAgICAxNDExNDIsIDE0MTE0OCwgMTQxMTU0LCAxNDExNTgsIDAsIDE0MTE2MywgMTQxMTY4LCAxNDExNzIsIDE0MTE3NywgMCwgMCwgCisgICAgMTQxMTgyLCAxNDExODcsIDE0MTE5MiwgMTQxMTk2LCAxNDEyMDEsIDE0MTIwNiwgMTQxMjEwLCAxNDEyMTUsIDAsIAorICAgIDE0MTIyMCwgMTQxMjI1LCAxNDEyMzAsIDE0MTIzNCwgMTQxMjM5LCAxNDEyNDQsIDE0MTI0OSwgMCwgMTQxMjU0LCAKKyAgICAxNDEyNTgsIDE0MTI2MywgMTQxMjY4LCAxNDEyNzMsIDE0MTI3NywgMTQxMjgyLCAxNDEyODcsIDE0MTI5MiwgMTQxMjk2LCAKKyAgICAxNDEzMDEsIDE0MTMwNiwgMTQxMzEwLCAxNDEzMTUsIDE0MTMyMCwgMTQxMzI0LCAxNDEzMjksIDE0MTMzNCwgMTQxMzM4LCAKKyAgICAxNDEzNDMsIDE0MTM0OCwgMTQxMzUyLCAxNDEzNTcsIDE0MTM2MiwgMTQxMzY3LCAxNDEzNzIsIDE0MTM3NywgMTQxMzgxLCAKKyAgICAwLCAxNDEzODYsIDE0MTM5MSwgMTQxMzk1LCAxNDE0MDAsIDAsIDE0MTQwNSwgMTQxNDA5LCAxNDE0MTQsIDE0MTQxOSwgCisgICAgMTQxNDIzLCAwLCAxNDE0MjgsIDAsIDAsIDAsIDE0MTQzMiwgMTQxNDM3LCAxNDE0NDIsIDE0MTQ0NiwgMTQxNDUxLCAKKyAgICAxNDE0NTYsIDE0MTQ2MSwgMCwgMTQxNDY2LCAxNDE0NzAsIDE0MTQ3NSwgMTQxNDgwLCAxNDE0ODUsIDE0MTQ4OSwgCisgICAgMTQxNDk0LCAxNDE0OTksIDE0MTUwNCwgMTQxNTA4LCAxNDE1MTMsIDE0MTUxOCwgMTQxNTIyLCAxNDE1MjcsIDE0MTUzMiwgCisgICAgMTQxNTM2LCAxNDE1NDEsIDE0MTU0NiwgMTQxNTUwLCAxNDE1NTUsIDE0MTU2MCwgMTQxNTY0LCAxNDE1NjksIDE0MTU3NCwgCisgICAgMTQxNTc5LCAxNDE1ODQsIDE0MTU4OSwgMTQxNTk0LCAxNDE2MDAsIDE0MTYwNiwgMTQxNjEyLCAxNDE2MTcsIDE0MTYyMywgCisgICAgMTQxNjI5LCAxNDE2MzUsIDE0MTY0MCwgMTQxNjQ2LCAxNDE2NTIsIDE0MTY1NywgMTQxNjYzLCAxNDE2NjksIDE0MTY3NCwgCisgICAgMTQxNjgwLCAxNDE2ODYsIDE0MTY5MSwgMTQxNjk3LCAxNDE3MDMsIDE0MTcwOCwgMTQxNzE0LCAxNDE3MjAsIDE0MTcyNiwgCisgICAgMTQxNzMyLCAxNDE3MzgsIDE0MTc0MywgMTQxNzQ5LCAxNDE3NTUsIDE0MTc2MSwgMTQxNzY2LCAxNDE3NzIsIDE0MTc3OCwgCisgICAgMTQxNzg0LCAxNDE3ODksIDE0MTc5NSwgMTQxODAxLCAxNDE4MDYsIDE0MTgxMiwgMTQxODE4LCAxNDE4MjMsIDE0MTgyOSwgCisgICAgMTQxODM1LCAxNDE4NDAsIDE0MTg0NiwgMTQxODUyLCAxNDE4NTcsIDE0MTg2MywgMTQxODY5LCAxNDE4NzUsIDE0MTg4MSwgCisgICAgMTQxODg3LCAxNDE4OTEsIDE0MTg5NiwgMTQxOTAxLCAxNDE5MDYsIDE0MTkxMCwgMTQxOTE1LCAxNDE5MjAsIDE0MTkyNSwgCisgICAgMTQxOTI5LCAxNDE5MzQsIDE0MTkzOSwgMTQxOTQzLCAxNDE5NDgsIDE0MTk1MywgMTQxOTU3LCAxNDE5NjIsIDE0MTk2NywgCisgICAgMTQxOTcxLCAxNDE5NzYsIDE0MTk4MSwgMTQxOTg1LCAxNDE5OTAsIDE0MTk5NSwgMTQyMDAwLCAxNDIwMDUsIDE0MjAxMCwgCisgICAgMTQyMDE0LCAxNDIwMTksIDE0MjAyNCwgMTQyMDI5LCAxNDIwMzMsIDE0MjAzOCwgMTQyMDQzLCAxNDIwNDgsIDE0MjA1MiwgCisgICAgMTQyMDU3LCAxNDIwNjIsIDE0MjA2NiwgMTQyMDcxLCAxNDIwNzYsIDE0MjA4MCwgMTQyMDg1LCAxNDIwOTAsIDE0MjA5NCwgCisgICAgMTQyMDk5LCAxNDIxMDQsIDE0MjEwOCwgMTQyMTEzLCAxNDIxMTgsIDE0MjEyMywgMTQyMTI4LCAxNDIxMzMsIDE0MjEzOCwgCisgICAgMTQyMTQ0LCAxNDIxNTAsIDE0MjE1NiwgMTQyMTYxLCAxNDIxNjcsIDE0MjE3MywgMTQyMTc5LCAxNDIxODQsIDE0MjE5MCwgCisgICAgMTQyMTk2LCAxNDIyMDEsIDE0MjIwNywgMTQyMjEzLCAxNDIyMTgsIDE0MjIyNCwgMTQyMjMwLCAxNDIyMzUsIDE0MjI0MSwgCisgICAgMTQyMjQ3LCAxNDIyNTIsIDE0MjI1OCwgMTQyMjY0LCAxNDIyNzAsIDE0MjI3NiwgMTQyMjgyLCAxNDIyODcsIDE0MjI5MywgCisgICAgMTQyMjk5LCAxNDIzMDUsIDE0MjMxMCwgMTQyMzE2LCAxNDIzMjIsIDE0MjMyOCwgMTQyMzMzLCAxNDIzMzksIDE0MjM0NSwgCisgICAgMTQyMzUwLCAxNDIzNTYsIDE0MjM2MiwgMTQyMzY3LCAxNDIzNzMsIDE0MjM3OSwgMTQyMzg0LCAxNDIzOTAsIDE0MjM5NiwgCisgICAgMTQyNDAxLCAxNDI0MDcsIDE0MjQxMywgMTQyNDE5LCAxNDI0MjUsIDE0MjQzMSwgMTQyNDM2LCAxNDI0NDIsIDE0MjQ0OCwgCisgICAgMTQyNDU0LCAxNDI0NTksIDE0MjQ2NSwgMTQyNDcxLCAxNDI0NzcsIDE0MjQ4MiwgMTQyNDg4LCAxNDI0OTQsIDE0MjQ5OSwgCisgICAgMTQyNTA1LCAxNDI1MTEsIDE0MjUxNiwgMTQyNTIyLCAxNDI1MjgsIDE0MjUzMywgMTQyNTM5LCAxNDI1NDUsIDE0MjU1MCwgCisgICAgMTQyNTU2LCAxNDI1NjIsIDE0MjU2OCwgMTQyNTc0LCAxNDI1ODAsIDE0MjU4NSwgMTQyNTkxLCAxNDI1OTcsIDE0MjYwMywgCisgICAgMTQyNjA4LCAxNDI2MTQsIDE0MjYyMCwgMTQyNjI2LCAxNDI2MzEsIDE0MjYzNywgMTQyNjQzLCAxNDI2NDgsIDE0MjY1NCwgCisgICAgMTQyNjYwLCAxNDI2NjUsIDE0MjY3MSwgMTQyNjc3LCAxNDI2ODIsIDE0MjY4OCwgMTQyNjk0LCAxNDI2OTksIDE0MjcwNSwgCisgICAgMTQyNzExLCAxNDI3MTcsIDE0MjcyMywgMTQyNzI5LCAxNDI3MzUsIDE0Mjc0MiwgMTQyNzQ5LCAxNDI3NTYsIDE0Mjc2MiwgCisgICAgMTQyNzY5LCAxNDI3NzYsIDE0Mjc4MywgMTQyNzg5LCAxNDI3OTYsIDE0MjgwMywgMTQyODA5LCAxNDI4MTYsIDE0MjgyMywgCisgICAgMTQyODI5LCAxNDI4MzYsIDE0Mjg0MywgMTQyODQ5LCAxNDI4NTYsIDE0Mjg2MywgMTQyODY5LCAxNDI4NzYsIDE0Mjg4MywgCisgICAgMTQyODkwLCAxNDI4OTcsIDE0MjkwNCwgMTQyOTEwLCAxNDI5MTcsIDE0MjkyNCwgMTQyOTMxLCAxNDI5MzcsIDE0Mjk0NCwgCisgICAgMTQyOTUxLCAxNDI5NTgsIDE0Mjk2NCwgMTQyOTcxLCAxNDI5NzgsIDE0Mjk4NCwgMTQyOTkxLCAxNDI5OTgsIDE0MzAwNCwgCisgICAgMTQzMDExLCAxNDMwMTgsIDE0MzAyNCwgMTQzMDMxLCAxNDMwMzgsIDE0MzA0NCwgMTQzMDUxLCAxNDMwNTgsIDE0MzA2NSwgCisgICAgMTQzMDcyLCAxNDMwNzksIDE0MzA4NCwgMTQzMDkwLCAxNDMwOTYsIDE0MzEwMiwgMTQzMTA3LCAxNDMxMTMsIDE0MzExOSwgCisgICAgMTQzMTI1LCAxNDMxMzAsIDE0MzEzNiwgMTQzMTQyLCAxNDMxNDcsIDE0MzE1MywgMTQzMTU5LCAxNDMxNjQsIDE0MzE3MCwgCisgICAgMTQzMTc2LCAxNDMxODEsIDE0MzE4NywgMTQzMTkzLCAxNDMxOTgsIDE0MzIwNCwgMTQzMjEwLCAxNDMyMTYsIDE0MzIyMiwgCisgICAgMTQzMjI4LCAxNDMyMzMsIDE0MzIzOSwgMTQzMjQ1LCAxNDMyNTEsIDE0MzI1NiwgMTQzMjYyLCAxNDMyNjgsIDE0MzI3NCwgCisgICAgMTQzMjc5LCAxNDMyODUsIDE0MzI5MSwgMTQzMjk2LCAxNDMzMDIsIDE0MzMwOCwgMTQzMzEzLCAxNDMzMTksIDE0MzMyNSwgCisgICAgMTQzMzMwLCAxNDMzMzYsIDE0MzM0MiwgMTQzMzQ3LCAxNDMzNTMsIDE0MzM1OSwgMTQzMzY1LCAxNDMzNzEsIDE0MzM3NywgCisgICAgMTQzMzgzLCAwLCAwLCAxNDMzOTAsIDE0MzM5NSwgMTQzNDAwLCAxNDM0MDUsIDE0MzQxMCwgMTQzNDE1LCAxNDM0MjAsIAorICAgIDE0MzQyNSwgMTQzNDMwLCAxNDM0MzUsIDE0MzQ0MCwgMTQzNDQ1LCAxNDM0NTAsIDE0MzQ1NSwgMTQzNDYwLCAxNDM0NjUsIAorICAgIDE0MzQ3MCwgMTQzNDc1LCAxNDM0ODEsIDE0MzQ4NiwgMTQzNDkxLCAxNDM0OTYsIDE0MzUwMSwgMTQzNTA2LCAxNDM1MTEsIAorICAgIDE0MzUxNiwgMTQzNTIwLCAxNDM1MjUsIDE0MzUzMCwgMTQzNTM1LCAxNDM1NDAsIDE0MzU0NSwgMTQzNTUwLCAxNDM1NTUsIAorICAgIDE0MzU2MCwgMTQzNTY1LCAxNDM1NzAsIDE0MzU3NSwgMTQzNTgwLCAxNDM1ODUsIDE0MzU5MCwgMTQzNTk1LCAxNDM2MDAsIAorICAgIDE0MzYwNSwgMTQzNjExLCAxNDM2MTYsIDE0MzYyMSwgMTQzNjI2LCAxNDM2MzEsIDE0MzYzNiwgMTQzNjQxLCAxNDM2NDYsIAorICAgIDE0MzY1MiwgMTQzNjU3LCAxNDM2NjIsIDE0MzY2NywgMTQzNjcyLCAxNDM2NzcsIDE0MzY4MiwgMTQzNjg3LCAxNDM2OTIsIAorICAgIDE0MzY5NywgMTQzNzAyLCAxNDM3MDcsIDE0MzcxMiwgMTQzNzE3LCAxNDM3MjIsIDE0MzcyNywgMTQzNzMyLCAxNDM3MzcsIAorICAgIDE0Mzc0MiwgMTQzNzQ3LCAxNDM3NTIsIDE0Mzc1NywgMTQzNzYyLCAxNDM3NjcsIDE0Mzc3MywgMTQzNzc4LCAxNDM3ODMsIAorICAgIDE0Mzc4OCwgMTQzNzkzLCAxNDM3OTgsIDE0MzgwMywgMTQzODA4LCAxNDM4MTIsIDE0MzgxNywgMTQzODIyLCAxNDM4MjcsIAorICAgIDE0MzgzMiwgMTQzODM3LCAxNDM4NDIsIDE0Mzg0NywgMTQzODUyLCAxNDM4NTcsIDE0Mzg2MiwgMTQzODY3LCAxNDM4NzIsIAorICAgIDE0Mzg3NywgMTQzODgyLCAxNDM4ODcsIDE0Mzg5MiwgMTQzODk3LCAxNDM5MDMsIDE0MzkwOCwgMTQzOTEzLCAxNDM5MTgsIAorICAgIDE0MzkyMywgMTQzOTI4LCAxNDM5MzMsIDE0MzkzOCwgMTQzOTQ0LCAxNDM5NDksIDE0Mzk1NCwgMTQzOTU5LCAxNDM5NjQsIAorICAgIDE0Mzk2OSwgMTQzOTc0LCAxNDM5ODAsIDE0Mzk4NiwgMTQzOTkyLCAxNDM5OTgsIDE0NDAwNCwgMTQ0MDEwLCAxNDQwMTYsIAorICAgIDE0NDAyMiwgMTQ0MDI4LCAxNDQwMzQsIDE0NDA0MCwgMTQ0MDQ2LCAxNDQwNTIsIDE0NDA1OCwgMTQ0MDY0LCAxNDQwNzAsIAorICAgIDE0NDA3NiwgMTQ0MDgzLCAxNDQwODksIDE0NDA5NSwgMTQ0MTAxLCAxNDQxMDcsIDE0NDExMywgMTQ0MTE5LCAxNDQxMjUsIAorICAgIDE0NDEzMCwgMTQ0MTM2LCAxNDQxNDIsIDE0NDE0OCwgMTQ0MTU0LCAxNDQxNjAsIDE0NDE2NiwgMTQ0MTcyLCAxNDQxNzgsIAorICAgIDE0NDE4NCwgMTQ0MTkwLCAxNDQxOTYsIDE0NDIwMiwgMTQ0MjA4LCAxNDQyMTQsIDE0NDIyMCwgMTQ0MjI2LCAxNDQyMzIsIAorICAgIDE0NDIzOSwgMTQ0MjQ1LCAxNDQyNTEsIDE0NDI1NywgMTQ0MjYzLCAxNDQyNjksIDE0NDI3NSwgMTQ0MjgxLCAxNDQyODgsIAorICAgIDE0NDI5NCwgMTQ0MzAwLCAxNDQzMDYsIDE0NDMxMiwgMTQ0MzE4LCAxNDQzMjQsIDE0NDMzMCwgMTQ0MzM2LCAxNDQzNDIsIAorICAgIDE0NDM0OCwgMTQ0MzU0LCAxNDQzNjAsIDE0NDM2NiwgMTQ0MzcyLCAxNDQzNzgsIDE0NDM4NCwgMTQ0MzkwLCAxNDQzOTYsIAorICAgIDE0NDQwMiwgMTQ0NDA4LCAxNDQ0MTQsIDE0NDQyMCwgMTQ0NDI2LCAxNDQ0MzMsIDE0NDQzOSwgMTQ0NDQ1LCAxNDQ0NTEsIAorICAgIDE0NDQ1NywgMTQ0NDYzLCAxNDQ0NjksIDE0NDQ3NSwgMTQ0NDgwLCAxNDQ0ODYsIDE0NDQ5MiwgMTQ0NDk4LCAxNDQ1MDQsIAorICAgIDE0NDUxMCwgMTQ0NTE2LCAxNDQ1MjIsIDE0NDUyOCwgMTQ0NTM0LCAxNDQ1NDAsIDE0NDU0NiwgMTQ0NTUyLCAxNDQ1NTgsIAorICAgIDE0NDU2NCwgMTQ0NTcwLCAxNDQ1NzYsIDE0NDU4MiwgMTQ0NTg5LCAxNDQ1OTUsIDE0NDYwMSwgMTQ0NjA3LCAxNDQ2MTMsIAorICAgIDE0NDYxOSwgMTQ0NjI1LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ0LCAxNDQ2NTAsIDE0NDY1NiwgMTQ0NjYyLCAxNDQ2NjgsIAorICAgIDE0NDY3NCwgMTQ0NjgxLCAxNDQ2ODgsIDE0NDY5NSwgMTQ0NzAyLCAxNDQ3MDksIDE0NDcxNiwgMTQ0NzIzLCAxNDQ3MzAsIAorICAgIDE0NDczNywgMTQ0NzQ0LCAxNDQ3NTEsIDE0NDc1OCwgMTQ0NzY1LCAxNDQ3NzIsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIAorICAgIDE0NDgwMSwgMTQ0ODA4LCAxNDQ4MTUsIDE0NDgyMiwgMTQ0ODI5LCAxNDQ4MzYsIDE0NDg0MywgMTQ0ODUwLCAxNDQ4NTYsIAorICAgIDE0NDg2MywgMTQ0ODcwLCAxNDQ4NzcsIDE0NDg4NCwgMTQ0ODkxLCAxNDQ4OTgsIDE0NDkwNSwgMTQ0OTEyLCAxNDQ5MTksIAorICAgIDE0NDkyNiwgMTQ0OTMzLCAxNDQ5NDAsIDE0NDk0NywgMTQ0OTU0LCAxNDQ5NjEsIDE0NDk2OCwgMTQ0OTc1LCAxNDQ5ODMsIAorICAgIDE0NDk5MCwgMTQ0OTk3LCAxNDUwMDQsIDE0NTAxMSwgMTQ1MDE4LCAxNDUwMjUsIDE0NTAzMiwgMTQ1MDQwLCAxNDUwNDcsIAorICAgIDE0NTA1NCwgMTQ1MDYxLCAxNDUwNjgsIDE0NTA3NSwgMTQ1MDgyLCAxNDUwODcsIDAsIDAsIDE0NTA5MiwgMTQ1MDk3LCAKKyAgICAxNDUxMDEsIDE0NTEwNSwgMTQ1MTA5LCAxNDUxMTMsIDE0NTExNywgMTQ1MTIxLCAxNDUxMjYsIDE0NTEzMCwgMTQ1MTM1LCAKKyAgICAxNDUxNDAsIDE0NTE0NCwgMTQ1MTQ4LCAxNDUxNTIsIDE0NTE1NiwgMTQ1MTYwLCAxNDUxNjQsIDE0NTE2OSwgMTQ1MTczLCAKKyAgICAxNDUxNzgsIDE0NTE4MywgMTQ1MTg3LCAxNDUxOTEsIDE0NTE5NSwgMTQ1MTk5LCAxNDUyMDMsIDE0NTIwNywgMTQ1MjEyLCAKKyAgICAxNDUyMTYsIDE0NTIyMSwgMTQ1MjI3LCAxNDUyMzIsIDE0NTIzNywgMTQ1MjQyLCAxNDUyNDcsIDE0NTI1MiwgMTQ1MjU3LCAKKyAgICAxNDUyNjMsIDE0NTI2OCwgMTQ1Mjc0LCAxNDUyODAsIDE0NTI4NSwgMTQ1MjkwLCAxNDUyOTUsIDE0NTMwMCwgMTQ1MzA1LCAKKyAgICAxNDUzMTAsIDE0NTMxNiwgMTQ1MzIxLCAxNDUzMjcsIDE0NTMzMSwgMTQ1MzM2LCAxNDUzNDEsIDE0NTM0NiwgMTQ1MzUxLCAKKyAgICAxNDUzNTYsIDE0NTM2MSwgMTQ1MzY3LCAxNDUzNzUsIDE0NTM4MiwgMTQ1Mzg3LCAxNDUzOTIsIDE0NTM5OSwgMTQ1NDA1LCAKKyAgICAxNDU0MTAsIDE0NTQxNiwgMTQ1NDIyLCAxNDU0MzAsIDE0NTQzNiwgMTQ1NDQzLCAxNDU0NTEsIDE0NTQ1NywgMTQ1NDY2LCAKKyAgICAxNDU0NzUsIDE0NTQ4MywgMTQ1NDkxLCAxNDU0OTcsIDE0NTUwNCwgMTQ1NTEyLCAxNDU1MjAsIDE0NTUyNiwgMTQ1NTMzLCAKKyAgICAxNDU1NDIsIDE0NTU1MSwgMTQ1NTU4LCAxNDU1NjksIDE0NTU3OSwgMTQ1NTg5LCAxNDU1OTksIDE0NTYwOSwgMTQ1NjE2LCAKKyAgICAxNDU2MjMsIDE0NTYzMCwgMTQ1NjM3LCAxNDU2NDYsIDE0NTY1NSwgMTQ1NjY2LCAxNDU2NzcsIDE0NTY4NiwgMTQ1Njk1LCAKKyAgICAxNDU3MDYsIDE0NTcxNSwgMTQ1NzI0LCAxNDU3MzUsIDE0NTc0NCwgMTQ1NzUzLCAxNDU3NjEsIDE0NTc2OSwgMTQ1NzgwLCAKKyAgICAxNDU3OTEsIDE0NTc5OSwgMTQ1ODA4LCAxNDU4MTcsIDE0NTgyNCwgMTQ1ODM1LCAxNDU4NDYsIDE0NTg1NSwgMTQ1ODY0LCAKKyAgICAxNDU4NzEsIDE0NTg4MCwgMTQ1ODg5LCAxNDU4OTgsIDE0NTkwOSwgMTQ1OTE4LCAxNDU5MjgsIDE0NTkzNywgMTQ1OTQ2LCAKKyAgICAxNDU5NTcsIDE0NTk3MCwgMTQ1OTg1LCAxNDU5OTYsIDE0NjAwOSwgMTQ2MDIxLCAxNDYwMzAsIDE0NjA0MSwgMTQ2MDUyLCAKKyAgICAxNDYwNjEsIDE0NjA3MiwgMTQ2MDg2LCAxNDYxMDEsIDE0NjEwNCwgMTQ2MTEzLCAxNDYxMTgsIDE0NjEyNCwgMTQ2MTMyLCAKKyAgICAxNDYxMzgsIDE0NjE0NCwgMTQ2MTUzLCAxNDYxNjAsIDE0NjE3MCwgMTQ2MTgyLCAxNDYxODksIDE0NjE5MiwgMTQ2MTk4LCAKKyAgICAxNDYyMDUsIDE0NjIxMSwgMTQ2MjE2LCAxNDYyMTksIDE0NjIyNCwgMTQ2MjI3LCAxNDYyMzQsIDE0NjI0MCwgMTQ2MjQ4LCAKKyAgICAxNDYyNTUsIDE0NjI2MiwgMTQ2MjY4LCAxNDYyNzMsIDE0NjI3NiwgMTQ2Mjc5LCAxNDYyODIsIDE0NjI4OCwgMTQ2Mjk1LCAKKyAgICAxNDYzMDEsIDE0NjMwNiwgMTQ2MzEzLCAxNDYzMTYsIDE0NjMyMSwgMTQ2MzI4LCAxNDYzMzQsIDE0NjM0MiwgMTQ2MzQ5LCAKKyAgICAxNDYzNTksIDE0NjM2OCwgMTQ2MzcxLCAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwMywgMTQ2NDExLCAKKyAgICAxNDY0MTksIDE0NjQyOCwgMTQ2NDM0LCAxNDY0NDMsIDE0NjQ1MiwgMTQ2NDYxLCAxNDY0NjcsIDE0NjQ3NiwgMTQ2NDgzLCAKKyAgICAxNDY0OTAsIDE0NjQ5NywgMTQ2NTA1LCAxNDY1MTEsIDE0NjUxOSwgMTQ2NTI1LCAxNDY1MzIsIDE0NjUzOSwgMTQ2NTQ3LCAKKyAgICAxNDY1NTgsIDE0NjU2OCwgMTQ2NTc0LCAxNDY1ODEsIDE0NjU4OCwgMTQ2NTk1LCAxNDY2MDEsIDE0NjYwOCwgMTQ2NjE1LCAKKyAgICAxNDY2MjAsIDE0NjYyNywgMTQ2NjM1LCAxNDY2NDQsIDE0NjY1MCwgMTQ2NjYyLCAxNDY2NzMsIDE0NjY3OSwgMTQ2Njg3LCAKKyAgICAxNDY2OTMsIDE0NjcwMCwgMTQ2NzA3LCAxNDY3MTQsIDE0NjcyMCwgMTQ2NzI3LCAxNDY3MzYsIDE0Njc0MiwgMTQ2NzQ4LCAKKyAgICAxNDY3NTUsIDE0Njc2MiwgMTQ2NzcwLCAxNDY3ODAsIDE0Njc5MCwgMTQ2ODAwLCAxNDY4MTAsIDE0NjgxOCwgMTQ2ODI2LCAKKyAgICAxNDY4MzYsIDE0Njg0NCwgMTQ2ODQ5LCAxNDY4NTQsIDE0Njg1OSwgMTQ2ODY1LCAxNDY4NzIsIDE0Njg3OSwgMTQ2ODg1LCAKKyAgICAxNDY4OTEsIDE0Njg5NiwgMTQ2OTAzLCAxNDY5MTEsIDE0NjkyMSwgMTQ2OTI5LCAxNDY5MzcsIDE0Njk0NywgMTQ2OTU3LCAKKyAgICAxNDY5NjUsIDE0Njk3NSwgMTQ2OTg1LCAxNDY5OTcsIDE0NzAwOSwgMTQ3MDIxLCAxNDcwMzEsIDE0NzAzNywgMTQ3MDQzLCAKKyAgICAxNDcwNTAsIDE0NzA1OSwgMTQ3MDY4LCAxNDcwNzcsIDE0NzA4NiwgMTQ3MDk2LCAxNDcxMDUsIDE0NzExNCwgMTQ3MTIzLCAKKyAgICAxNDcxMjgsIDE0NzEzNCwgMTQ3MTQzLCAxNDcxNTMsIDE0NzE2MiwgMTQ3MTY4LCAxNDcxNzQsIDE0NzE4MSwgMTQ3MTg4LCAKKyAgICAxNDcxOTUsIDE0NzIwMSwgMTQ3MjA4LCAxNDcyMTUsIDE0NzIyMiwgMTQ3MjI4LCAxNDcyMzIsIDE0NzIzNywgMTQ3MjQ0LCAKKyAgICAxNDcyNTEsIDE0NzI1OCwgMTQ3MjYzLCAxNDcyNzEsIDE0NzI3OSwgMTQ3Mjg4LCAxNDcyOTYsIDE0NzMwMywgMTQ3MzExLCAKKyAgICAxNDczMjAsIDE0NzMzMCwgMTQ3MzMzLCAxNDczMzcsIDE0NzM0MiwgMTQ3MzQ3LCAxNDczNTIsIDE0NzM1NywgMTQ3MzYyLCAKKyAgICAxNDczNjcsIDE0NzM3MiwgMTQ3Mzc3LCAxNDczODIsIDE0NzM4NywgMTQ3MzkyLCAxNDczOTcsIDE0NzQwMiwgMTQ3NDA3LCAKKyAgICAxNDc0MTIsIDE0NzQxNywgMTQ3NDIyLCAxNDc0MjksIDE0NzQzNSwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1MywgMTQ3NDYwLCAKKyAgICAxNDc0NjYsIDE0NzQ3MywgMTQ3NDc5LCAxNDc0ODQsIDE0NzQ5MSwgMTQ3NDk4LCAxNDc1MDUsIDE0NzUxMSwgMTQ3NTE3LCAKKyAgICAxNDc1MjYsIDE0NzUzNSwgMTQ3NTQ2LCAxNDc1NTMsIDE0NzU2MCwgMTQ3NTY5LCAxNDc1NzgsIDE0NzU4NywgMTQ3NTk2LCAKKyAgICAxNDc2MDUsIDE0NzYxMSwgMTQ3NjE5LCAxNDc2MjUsIDE0NzYzNSwgMTQ3NjQwLCAxNDc2NDksIDE0NzY1OCwgMTQ3NjY1LCAKKyAgICAxNDc2NzYsIDE0NzY4MywgMTQ3NjkwLCAxNDc2OTcsIDE0NzcwNCwgMTQ3NzExLCAxNDc3MTgsIDE0NzcyNSwgMTQ3NzMyLCAKKyAgICAxNDc3MzksIDE0Nzc0NiwgMTQ3NzUyLCAxNDc3NTgsIDE0Nzc2NCwgMTQ3NzcxLCAxNDc3NzgsIDE0Nzc4NSwgMTQ3NzkyLCAKKyAgICAxNDc3OTksIDE0NzgwNiwgMTQ3ODEzLCAxNDc4MjAsIDE0NzgyNywgMTQ3ODM0LCAxNDc4NDEsIDE0Nzg0OCwgMTQ3ODUzLCAKKyAgICAxNDc4NjIsIDE0Nzg3MSwgMTQ3ODgwLCAxNDc4ODcsIDE0Nzg5NCwgMTQ3OTAxLCAxNDc5MDgsIDE0NzkxNSwgMTQ3OTIyLCAKKyAgICAxNDc5MjksIDE0NzkzNiwgMTQ3OTQ1LCAxNDc5NTQsIDE0Nzk2MywgMTQ3OTcyLCAxNDc5ODEsIDE0Nzk5MCwgMTQ3OTk5LCAKKyAgICAxNDgwMDgsIDE0ODAxNywgMTQ4MDI2LCAxNDgwMzUsIDE0ODA0NCwgMTQ4MDUzLCAxNDgwNTksIDE0ODA2NywgMTQ4MDczLCAKKyAgICAxNDgwODMsIDE0ODA4OCwgMTQ4MDk3LCAxNDgxMDYsIDE0ODExNSwgMTQ4MTI2LCAxNDgxMzEsIDE0ODEzOCwgMTQ4MTQ1LCAKKyAgICAxNDgxNTIsIDE0ODE1NywgMTQ4MTYzLCAxNDgxNjksIDE0ODE3NSwgMTQ4MTgyLCAxNDgxODksIDE0ODE5NiwgMTQ4MjAzLCAKKyAgICAxNDgyMTAsIDE0ODIxNywgMTQ4MjI0LCAxNDgyMzEsIDE0ODIzOCwgMTQ4MjQ1LCAxNDgyNTIsIDE0ODI1OSwgMTQ4MjY0LCAKKyAgICAxNDgyNzMsIDE0ODI4MiwgMTQ4MjkxLCAxNDgzMDAsIDE0ODMwOSwgMTQ4MzE4LCAxNDgzMjcsIDE0ODMzNiwgMTQ4MzQ3LCAKKyAgICAxNDgzNTgsIDE0ODM2NSwgMTQ4MzcyLCAxNDgzNzksIDE0ODM4NiwgMTQ4MzkzLCAxNDg0MDAsIDE0ODQwOCwgMTQ4NDE4LCAKKyAgICAxNDg0MjgsIDE0ODQzOCwgMTQ4NDQ5LCAxNDg0NjAsIDE0ODQ3MSwgMTQ4NDgwLCAxNDg0ODksIDE0ODQ5OCwgMTQ4NTAzLCAKKyAgICAxNDg1MDgsIDE0ODUxMywgMTQ4NTE4LCAxNDg1MjksIDE0ODU0MCwgMTQ4NTUxLCAxNDg1NjIsIDE0ODU3MywgMTQ4NTgzLCAKKyAgICAxNDg1OTQsIDE0ODYwMywgMTQ4NjEyLCAxNDg2MjEsIDE0ODYzMCwgMTQ4NjM5LCAxNDg2NDcsIDE0ODY1NiwgMTQ4NjY3LCAKKyAgICAxNDg2NzgsIDE0ODY4OSwgMTQ4NzAwLCAxNDg3MTEsIDE0ODcyMywgMTQ4NzM2LCAxNDg3NDgsIDE0ODc2MSwgMTQ4NzczLCAKKyAgICAxNDg3ODYsIDE0ODc5OCwgMTQ4ODExLCAxNDg4MjIsIDE0ODgzMywgMTQ4ODQyLCAxNDg4NTAsIDE0ODg1OSwgMTQ4ODcwLCAKKyAgICAxNDg4ODEsIDE0ODg5MywgMTQ4OTA2LCAxNDg5MjAsIDE0ODkzNSwgMTQ4OTQ3LCAxNDg5NjAsIDE0ODk3MiwgMTQ4OTg1LCAKKyAgICAxNDg5OTYsIDE0OTAwNywgMTQ5MDE2LCAxNDkwMjQsIDE0OTAzMywgMTQ5MDQwLCAxNDkwNDcsIDE0OTA1NCwgMTQ5MDYxLCAKKyAgICAxNDkwNjgsIDE0OTA3NSwgMTQ5MDgyLCAxNDkwODksIDE0OTA5NiwgMTQ5MTAzLCAxNDkxMDgsIDE0OTExMywgMTQ5MTE4LCAKKyAgICAxNDkxMjUsIDE0OTEzNSwgMTQ5MTQ2LCAxNDkxNTYsIDE0OTE2NywgMTQ5MTgxLCAxNDkxOTYsIDE0OTIxMSwgMTQ5MjI1LCAKKyAgICAxNDkyNDAsIDE0OTI1NSwgMTQ5MjY2LCAxNDkyNzcsIDE0OTI5MCwgMTQ5MzAzLCAxNDkzMTIsIDE0OTMyMSwgMTQ5MzM0LCAKKyAgICAxNDkzNDcsIDE0OTM1NCwgMTQ5MzYxLCAxNDkzNjYsIDE0OTM3MSwgMTQ5Mzc2LCAxNDkzODEsIDE0OTM4NiwgMTQ5MzkzLCAKKyAgICAxNDk0MDIsIDE0OTQwNywgMTQ5NDEwLCAxNDk0MTUsIDE0OTQyMiwgMTQ5NDI5LCAxNDk0MzYsIDE0OTQ0MywgMTQ5NDUwLCAKKyAgICAxNDk0NTcsIDE0OTQ3MCwgMTQ5NDg0LCAxNDk0OTksIDE0OTUwNiwgMTQ5NTEzLCAxNDk1MjAsIDE0OTUyOSwgMTQ5NTM3LCAKKyAgICAxNDk1NDUsIDE0OTU1NCwgMTQ5NTU5LCAxNDk1NjQsIDE0OTU2OSwgMTQ5NTc0LCAxNDk1NzksIDE0OTU4NCwgMTQ5NTkxLCAKKyAgICAxNDk1OTgsIDE0OTYwNCwgMTQ5NjExLCAxNDk2MTcsIDE0OTYyNCwgMTQ5NjI5LCAxNDk2MzQsIDE0OTYzOSwgMTQ5NjQ0LCAKKyAgICAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NjgsIDE0OTY3NSwgMTQ5NjgyLCAxNDk2ODcsIDE0OTY5MiwgMTQ5Njk3LCAKKyAgICAxNDk3MDIsIDE0OTcwNywgMTQ5NzEyLCAxNDk3MTksIDE0OTcyNiwgMTQ5NzMzLCAxNDk3MzYsIDE0OTc0MSwgMTQ5NzQ2LCAKKyAgICAxNDk3NTEsIDE0OTc1NiwgMTQ5NzYzLCAxNDk3NzAsIDE0OTc3OCwgMTQ5Nzg2LCAxNDk3OTEsIDE0OTc5NiwgMTQ5ODAzLCAKKyAgICAxNDk4MTAsIDE0OTgxNywgMTQ5ODIyLCAxNDk4MjksIDE0OTgzNiwgMTQ5ODQxLCAxNDk4NDgsIDE0OTg1NSwgMTQ5ODYxLCAKKyAgICAxNDk4NjcsIDE0OTg3MywgMTQ5ODc5LCAxNDk4ODcsIDE0OTg5NSwgMTQ5OTAxLCAxNDk5MDksIDE0OTkxNywgMTQ5OTIyLCAKKyAgICAxNDk5MjksIDE0OTkzNiwgMTQ5OTQxLCAxNDk5NDgsIDE0OTk1NSwgMTQ5OTYyLCAxNDk5NzAsIDE0OTk3OCwgMTQ5OTgzLCAKKyAgICAxNDk5OTAsIDE0OTk5NywgMTUwMDA2LCAxNTAwMTMsIDE1MDAyMiwgMTUwMDMzLCAxNTAwNDIsIDE1MDA1MSwgMTUwMDYwLCAKKyAgICAxNTAwNjksIDE1MDA3MiwgMTUwMDc3LCAxNTAwODQsIDE1MDA5MywgMTUwMTAwLCAxNTAxMDksIDE1MDExNiwgMTUwMTIxLCAKKyAgICAxNTAxMjYsIDE1MDEyOSwgMTUwMTMyLCAxNTAxMzUsIDE1MDE0MiwgMTUwMTQ5LCAxNTAxNTgsIDE1MDE2NywgMTUwMTc2LCAKKyAgICAxNTAxODMsIDE1MDE5MCwgMTUwMTk1LCAxNTAyMDgsIDE1MDIxMywgMTUwMjE4LCAxNTAyMjMsIDE1MDIyOCwgMTUwMjMzLCAKKyAgICAxNTAyMzgsIDE1MDI0MywgMTUwMjQ4LCAxNTAyNTEsIDE1MDI1NiwgMTUwMjYxLCAxNTAyNjYsIDE1MDI3MSwgMTUwMjc2LCAKKyAgICAxNTAyODMsIDE1MDI4OCwgMTUwMjk1LCAxNTAyOTgsIDE1MDMwMywgMTUwMzA2LCAxNTAzMDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDMxMiwgMTUwMzE3LCAxNTAzMjIsIDE1MDMyNywgMTUwMzMyLCAwLCAKKyAgICAxNTAzMzcsIDE1MDM0MiwgMTUwMzQ3LCAxNTAzNTIsIDE1MDM1NywgMTUwMzYyLCAxNTAzNjcsIDE1MDM3MiwgMTUwMzc3LCAKKyAgICAxNTAzODIsIDE1MDM4NywgMTUwMzkyLCAxNTAzOTcsIDE1MDQwMiwgMTUwNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTA0MTIsIDE1MDQxNywgMTUwNDIyLCAxNTA0MjcsIDE1MDQzMiwgMTUwNDM3LCAxNTA0NDIsIDAsIDE1MDQ0NywgCisgICAgMTUwNDUyLCAxNTA0NTcsIDE1MDQ2MywgMTUwNDY3LCAxNTA0NzIsIDE1MDQ3NywgMTUwNDgyLCAxNTA0ODcsIDE1MDQ5MiwgCisgICAgMTUwNDk3LCAxNTA1MDIsIDE1MDUwNywgMTUwNTEyLCAxNTA1MTcsIDE1MDUyMiwgMTUwNTI3LCAwLCAwLCAxNTA1MzIsIAorICAgIDE1MDUzNywgMTUwNTQyLCAxNTA1NDcsIDE1MDU1MiwgMTUwNTU3LCAxNTA1NjIsIDAsIDE1MDU2NywgMTUwNTcyLCAwLCAKKyAgICAxNTA1NzgsIDE1MDU4MywgMTUwNTkxLCAxNTA1OTgsIDE1MDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1MDk1LCAxMzUwOTksIDEzNTEwNCwgMTM1MTA5LCAxMzUxMTQsIDEzNTExOCwgCi0gICAgMTM1MTIzLCAxMzUxMjgsIDEzNTEzMywgMTM1MTM3LCAxMzUxNDIsIDEzNTE0NywgMTM1MTUxLCAxMzUxNTYsIDEzNTE2MSwgCi0gICAgMTM1MTY1LCAxMzUxNzAsIDEzNTE3NSwgMTM1MTc5LCAxMzUxODMsIDEzNTE4OCwgMTM1MTkyLCAxMzUxOTcsIDEzNTIwMiwgCi0gICAgMTM1MjA3LCAxMzUyMTIsIDEzNTIxNywgMTM1MjIxLCAxMzUyMjYsIDEzNTIzMSwgMTM1MjM2LCAxMzUyNDAsIDEzNTI0NSwgCi0gICAgMTM1MjUwLCAxMzUyNTUsIDEzNTI1OSwgMTM1MjY0LCAxMzUyNjksIDEzNTI3MywgMTM1Mjc4LCAxMzUyODMsIDEzNTI4NywgCi0gICAgMTM1MjkyLCAxMzUyOTcsIDEzNTMwMSwgMTM1MzA1LCAxMzUzMTAsIDEzNTMxNCwgMTM1MzE5LCAxMzUzMjQsIDEzNTMyOSwgCi0gICAgMTM1MzM0LCAxMzUzMzksIDEzNTM0MywgMTM1MzQ4LCAxMzUzNTMsIDEzNTM1OCwgMTM1MzYyLCAxMzUzNjcsIDEzNTM3MiwgCi0gICAgMTM1Mzc3LCAxMzUzODEsIDEzNTM4NiwgMTM1MzkxLCAxMzUzOTUsIDEzNTQwMCwgMTM1NDA1LCAxMzU0MDksIDEzNTQxNCwgCi0gICAgMTM1NDE5LCAxMzU0MjMsIDEzNTQyNywgMTM1NDMyLCAxMzU0MzYsIDEzNTQ0MSwgMTM1NDQ2LCAxMzU0NTEsIDEzNTQ1NiwgCi0gICAgMTM1NDYxLCAxMzU0NjUsIDEzNTQ3MCwgMTM1NDc1LCAxMzU0ODAsIDEzNTQ4NCwgMTM1NDg5LCAwLCAxMzU0OTQsIAotICAgIDEzNTQ5OCwgMTM1NTAzLCAxMzU1MDgsIDEzNTUxMiwgMTM1NTE3LCAxMzU1MjIsIDEzNTUyNiwgMTM1NTMxLCAxMzU1MzYsIAotICAgIDEzNTU0MCwgMTM1NTQ0LCAxMzU1NDksIDEzNTU1MywgMTM1NTU4LCAxMzU1NjMsIDEzNTU2OCwgMTM1NTczLCAxMzU1NzgsIAotICAgIDEzNTU4MywgMTM1NTg5LCAxMzU1OTUsIDEzNTYwMSwgMTM1NjA2LCAxMzU2MTIsIDEzNTYxOCwgMTM1NjI0LCAxMzU2MjksIAotICAgIDEzNTYzNSwgMTM1NjQxLCAxMzU2NDYsIDEzNTY1MiwgMTM1NjU4LCAxMzU2NjMsIDEzNTY2OSwgMTM1Njc1LCAxMzU2ODAsIAotICAgIDEzNTY4NSwgMTM1NjkxLCAxMzU2OTYsIDEzNTcwMiwgMTM1NzA4LCAxMzU3MTQsIDEzNTcyMCwgMTM1NzI2LCAxMzU3MzEsIAotICAgIDEzNTczNywgMTM1NzQzLCAxMzU3NDksIDEzNTc1NCwgMTM1NzYwLCAxMzU3NjYsIDEzNTc3MiwgMTM1Nzc3LCAxMzU3ODMsIAotICAgIDEzNTc4OSwgMTM1Nzk0LCAxMzU4MDAsIDEzNTgwNiwgMTM1ODExLCAxMzU4MTcsIDEzNTgyMywgMTM1ODI4LCAxMzU4MzMsIAotICAgIDEzNTgzOSwgMTM1ODQ0LCAxMzU4NTAsIDEzNTg1NiwgMTM1ODYyLCAxMzU4NjgsIDEzNTg3NCwgMCwgMTM1ODc4LCAKLSAgICAxMzU4ODMsIDAsIDAsIDEzNTg4OCwgMCwgMCwgMTM1ODkzLCAxMzU4OTgsIDAsIDAsIDEzNTkwMywgMTM1OTA4LCAxMzU5MTIsIAotICAgIDEzNTkxNywgMCwgMTM1OTIyLCAxMzU5MjYsIDEzNTkzMSwgMTM1OTM1LCAxMzU5NDAsIDEzNTk0NSwgMTM1OTUwLCAKLSAgICAxMzU5NTUsIDEzNTk2MCwgMTM1OTY0LCAxMzU5NjksIDEzNTk3NCwgMCwgMTM1OTc5LCAwLCAxMzU5ODQsIDEzNTk4OSwgCi0gICAgMTM1OTkzLCAxMzU5OTgsIDEzNjAwMywgMTM2MDA3LCAxMzYwMTIsIDAsIDEzNjAxNywgMTM2MDIyLCAxMzYwMjcsIAotICAgIDEzNjAzMSwgMTM2MDM1LCAxMzYwNDAsIDEzNjA0NCwgMTM2MDQ5LCAxMzYwNTQsIDEzNjA1OSwgMTM2MDY0LCAxMzYwNjksIAotICAgIDEzNjA3NCwgMTM2MDgwLCAxMzYwODYsIDEzNjA5MiwgMTM2MDk3LCAxMzYxMDMsIDEzNjEwOSwgMTM2MTE1LCAxMzYxMjAsIAotICAgIDEzNjEyNiwgMTM2MTMyLCAxMzYxMzcsIDEzNjE0MywgMTM2MTQ5LCAxMzYxNTQsIDEzNjE2MCwgMTM2MTY2LCAxMzYxNzEsIAotICAgIDEzNjE3NiwgMTM2MTgyLCAxMzYxODcsIDEzNjE5MywgMTM2MTk5LCAxMzYyMDUsIDEzNjIxMSwgMTM2MjE3LCAxMzYyMjIsIAotICAgIDEzNjIyOCwgMTM2MjM0LCAxMzYyNDAsIDEzNjI0NSwgMTM2MjUxLCAxMzYyNTcsIDEzNjI2MywgMTM2MjY4LCAxMzYyNzQsIAotICAgIDEzNjI4MCwgMTM2Mjg1LCAxMzYyOTEsIDEzNjI5NywgMTM2MzAyLCAxMzYzMDgsIDEzNjMxNCwgMTM2MzE5LCAxMzYzMjQsIAotICAgIDEzNjMzMCwgMTM2MzM1LCAxMzYzNDEsIDEzNjM0NywgMTM2MzUzLCAxMzYzNTksIDEzNjM2NSwgMTM2MzY5LCAwLCAKLSAgICAxMzYzNzQsIDEzNjM3OSwgMTM2MzgzLCAxMzYzODgsIDAsIDAsIDEzNjM5MywgMTM2Mzk4LCAxMzY0MDMsIDEzNjQwNywgCi0gICAgMTM2NDEyLCAxMzY0MTcsIDEzNjQyMSwgMTM2NDI2LCAwLCAxMzY0MzEsIDEzNjQzNSwgMTM2NDQwLCAxMzY0NDQsIAotICAgIDEzNjQ0OSwgMTM2NDU0LCAxMzY0NTksIDAsIDEzNjQ2NCwgMTM2NDY4LCAxMzY0NzMsIDEzNjQ3OCwgMTM2NDgzLCAKLSAgICAxMzY0ODcsIDEzNjQ5MiwgMTM2NDk3LCAxMzY1MDIsIDEzNjUwNiwgMTM2NTExLCAxMzY1MTYsIDEzNjUyMCwgMTM2NTI1LCAKLSAgICAxMzY1MzAsIDEzNjUzNCwgMTM2NTM5LCAxMzY1NDQsIDEzNjU0OCwgMTM2NTUyLCAxMzY1NTcsIDEzNjU2MSwgMTM2NTY2LCAKLSAgICAxMzY1NzEsIDEzNjU3NiwgMTM2NTgxLCAxMzY1ODYsIDEzNjU5MCwgMCwgMTM2NTk1LCAxMzY2MDAsIDEzNjYwNCwgCi0gICAgMTM2NjA5LCAwLCAxMzY2MTQsIDEzNjYxOCwgMTM2NjIzLCAxMzY2MjgsIDEzNjYzMiwgMCwgMTM2NjM3LCAwLCAwLCAwLCAKLSAgICAxMzY2NDEsIDEzNjY0NSwgMTM2NjUwLCAxMzY2NTQsIDEzNjY1OSwgMTM2NjY0LCAxMzY2NjksIDAsIDEzNjY3NCwgCi0gICAgMTM2Njc4LCAxMzY2ODMsIDEzNjY4OCwgMTM2NjkzLCAxMzY2OTcsIDEzNjcwMiwgMTM2NzA3LCAxMzY3MTIsIDEzNjcxNiwgCi0gICAgMTM2NzIxLCAxMzY3MjYsIDEzNjczMCwgMTM2NzM1LCAxMzY3NDAsIDEzNjc0NCwgMTM2NzQ5LCAxMzY3NTQsIDEzNjc1OCwgCi0gICAgMTM2NzYyLCAxMzY3NjcsIDEzNjc3MSwgMTM2Nzc2LCAxMzY3ODEsIDEzNjc4NiwgMTM2NzkxLCAxMzY3OTYsIDEzNjgwMSwgCi0gICAgMTM2ODA3LCAxMzY4MTMsIDEzNjgxOSwgMTM2ODI0LCAxMzY4MzAsIDEzNjgzNiwgMTM2ODQyLCAxMzY4NDcsIDEzNjg1MywgCi0gICAgMTM2ODU5LCAxMzY4NjQsIDEzNjg3MCwgMTM2ODc2LCAxMzY4ODEsIDEzNjg4NywgMTM2ODkzLCAxMzY4OTgsIDEzNjkwMywgCi0gICAgMTM2OTA5LCAxMzY5MTQsIDEzNjkyMCwgMTM2OTI2LCAxMzY5MzIsIDEzNjkzOCwgMTM2OTQ0LCAxMzY5NDksIDEzNjk1NSwgCi0gICAgMTM2OTYxLCAxMzY5NjcsIDEzNjk3MiwgMTM2OTc4LCAxMzY5ODQsIDEzNjk5MCwgMTM2OTk1LCAxMzcwMDEsIDEzNzAwNywgCi0gICAgMTM3MDEyLCAxMzcwMTgsIDEzNzAyNCwgMTM3MDI5LCAxMzcwMzUsIDEzNzA0MSwgMTM3MDQ2LCAxMzcwNTEsIDEzNzA1NywgCi0gICAgMTM3MDYyLCAxMzcwNjgsIDEzNzA3NCwgMTM3MDgwLCAxMzcwODYsIDEzNzA5MiwgMTM3MDk2LCAxMzcxMDEsIDEzNzEwNiwgCi0gICAgMTM3MTExLCAxMzcxMTUsIDEzNzEyMCwgMTM3MTI1LCAxMzcxMzAsIDEzNzEzNCwgMTM3MTM5LCAxMzcxNDQsIDEzNzE0OCwgCi0gICAgMTM3MTUzLCAxMzcxNTgsIDEzNzE2MiwgMTM3MTY3LCAxMzcxNzIsIDEzNzE3NiwgMTM3MTgwLCAxMzcxODUsIDEzNzE4OSwgCi0gICAgMTM3MTk0LCAxMzcxOTksIDEzNzIwNCwgMTM3MjA5LCAxMzcyMTQsIDEzNzIxOCwgMTM3MjIzLCAxMzcyMjgsIDEzNzIzMywgCi0gICAgMTM3MjM3LCAxMzcyNDIsIDEzNzI0NywgMTM3MjUyLCAxMzcyNTYsIDEzNzI2MSwgMTM3MjY2LCAxMzcyNzAsIDEzNzI3NSwgCi0gICAgMTM3MjgwLCAxMzcyODQsIDEzNzI4OSwgMTM3Mjk0LCAxMzcyOTgsIDEzNzMwMiwgMTM3MzA3LCAxMzczMTEsIDEzNzMxNiwgCi0gICAgMTM3MzIxLCAxMzczMjYsIDEzNzMzMSwgMTM3MzM2LCAxMzczNDEsIDEzNzM0NywgMTM3MzUzLCAxMzczNTksIDEzNzM2NCwgCi0gICAgMTM3MzcwLCAxMzczNzYsIDEzNzM4MiwgMTM3Mzg3LCAxMzczOTMsIDEzNzM5OSwgMTM3NDA0LCAxMzc0MTAsIDEzNzQxNiwgCi0gICAgMTM3NDIxLCAxMzc0MjcsIDEzNzQzMywgMTM3NDM4LCAxMzc0NDMsIDEzNzQ0OSwgMTM3NDU0LCAxMzc0NjAsIDEzNzQ2NiwgCi0gICAgMTM3NDcyLCAxMzc0NzgsIDEzNzQ4NCwgMTM3NDg5LCAxMzc0OTUsIDEzNzUwMSwgMTM3NTA3LCAxMzc1MTIsIDEzNzUxOCwgCi0gICAgMTM3NTI0LCAxMzc1MzAsIDEzNzUzNSwgMTM3NTQxLCAxMzc1NDcsIDEzNzU1MiwgMTM3NTU4LCAxMzc1NjQsIDEzNzU2OSwgCi0gICAgMTM3NTc1LCAxMzc1ODEsIDEzNzU4NiwgMTM3NTkxLCAxMzc1OTcsIDEzNzYwMiwgMTM3NjA4LCAxMzc2MTQsIDEzNzYyMCwgCi0gICAgMTM3NjI2LCAxMzc2MzIsIDEzNzYzNywgMTM3NjQzLCAxMzc2NDksIDEzNzY1NSwgMTM3NjYwLCAxMzc2NjYsIDEzNzY3MiwgCi0gICAgMTM3Njc4LCAxMzc2ODMsIDEzNzY4OSwgMTM3Njk1LCAxMzc3MDAsIDEzNzcwNiwgMTM3NzEyLCAxMzc3MTcsIDEzNzcyMywgCi0gICAgMTM3NzI5LCAxMzc3MzQsIDEzNzczOSwgMTM3NzQ1LCAxMzc3NTAsIDEzNzc1NiwgMTM3NzYyLCAxMzc3NjgsIDEzNzc3NCwgCi0gICAgMTM3NzgwLCAxMzc3ODUsIDEzNzc5MSwgMTM3Nzk3LCAxMzc4MDMsIDEzNzgwOCwgMTM3ODE0LCAxMzc4MjAsIDEzNzgyNiwgCi0gICAgMTM3ODMxLCAxMzc4MzcsIDEzNzg0MywgMTM3ODQ4LCAxMzc4NTQsIDEzNzg2MCwgMTM3ODY1LCAxMzc4NzEsIDEzNzg3NywgCi0gICAgMTM3ODgyLCAxMzc4ODcsIDEzNzg5MywgMTM3ODk4LCAxMzc5MDQsIDEzNzkxMCwgMTM3OTE2LCAxMzc5MjIsIDEzNzkyOCwgCi0gICAgMTM3OTM0LCAxMzc5NDEsIDEzNzk0OCwgMTM3OTU1LCAxMzc5NjEsIDEzNzk2OCwgMTM3OTc1LCAxMzc5ODIsIDEzNzk4OCwgCi0gICAgMTM3OTk1LCAxMzgwMDIsIDEzODAwOCwgMTM4MDE1LCAxMzgwMjIsIDEzODAyOCwgMTM4MDM1LCAxMzgwNDIsIDEzODA0OCwgCi0gICAgMTM4MDU0LCAxMzgwNjEsIDEzODA2NywgMTM4MDc0LCAxMzgwODEsIDEzODA4OCwgMTM4MDk1LCAxMzgxMDIsIDEzODEwOCwgCi0gICAgMTM4MTE1LCAxMzgxMjIsIDEzODEyOSwgMTM4MTM1LCAxMzgxNDIsIDEzODE0OSwgMTM4MTU2LCAxMzgxNjIsIDEzODE2OSwgCi0gICAgMTM4MTc2LCAxMzgxODIsIDEzODE4OSwgMTM4MTk2LCAxMzgyMDIsIDEzODIwOSwgMTM4MjE2LCAxMzgyMjIsIDEzODIyOCwgCi0gICAgMTM4MjM1LCAxMzgyNDEsIDEzODI0OCwgMTM4MjU1LCAxMzgyNjIsIDEzODI2OSwgMTM4Mjc2LCAxMzgyODEsIDEzODI4NywgCi0gICAgMTM4MjkzLCAxMzgyOTksIDEzODMwNCwgMTM4MzEwLCAxMzgzMTYsIDEzODMyMiwgMTM4MzI3LCAxMzgzMzMsIDEzODMzOSwgCi0gICAgMTM4MzQ0LCAxMzgzNTAsIDEzODM1NiwgMTM4MzYxLCAxMzgzNjcsIDEzODM3MywgMTM4Mzc4LCAxMzgzODMsIDEzODM4OSwgCi0gICAgMTM4Mzk0LCAxMzg0MDAsIDEzODQwNiwgMTM4NDEyLCAxMzg0MTgsIDEzODQyNCwgMTM4NDI5LCAxMzg0MzUsIDEzODQ0MSwgCi0gICAgMTM4NDQ3LCAxMzg0NTIsIDEzODQ1OCwgMTM4NDY0LCAxMzg0NzAsIDEzODQ3NSwgMTM4NDgxLCAxMzg0ODcsIDEzODQ5MiwgCi0gICAgMTM4NDk4LCAxMzg1MDQsIDEzODUwOSwgMTM4NTE1LCAxMzg1MjEsIDEzODUyNiwgMTM4NTMxLCAxMzg1MzcsIDEzODU0MiwgCi0gICAgMTM4NTQ4LCAxMzg1NTQsIDEzODU2MCwgMTM4NTY2LCAxMzg1NzIsIDEzODU3OCwgMCwgMCwgMTM4NTg1LCAxMzg1OTAsIAotICAgIDEzODU5NSwgMTM4NjAwLCAxMzg2MDUsIDEzODYxMCwgMTM4NjE1LCAxMzg2MjAsIDEzODYyNSwgMTM4NjMwLCAxMzg2MzUsIAotICAgIDEzODY0MCwgMTM4NjQ1LCAxMzg2NTAsIDEzODY1NSwgMTM4NjYwLCAxMzg2NjUsIDEzODY3MCwgMTM4Njc2LCAxMzg2ODEsIAotICAgIDEzODY4NiwgMTM4NjkxLCAxMzg2OTYsIDEzODcwMSwgMTM4NzA2LCAxMzg3MTEsIDEzODcxNSwgMTM4NzIwLCAxMzg3MjUsIAotICAgIDEzODczMCwgMTM4NzM1LCAxMzg3NDAsIDEzODc0NSwgMTM4NzUwLCAxMzg3NTUsIDEzODc2MCwgMTM4NzY1LCAxMzg3NzAsIAotICAgIDEzODc3NSwgMTM4NzgwLCAxMzg3ODUsIDEzODc5MCwgMTM4Nzk1LCAxMzg4MDAsIDEzODgwNiwgMTM4ODExLCAxMzg4MTYsIAotICAgIDEzODgyMSwgMTM4ODI2LCAxMzg4MzEsIDEzODgzNiwgMTM4ODQxLCAxMzg4NDcsIDEzODg1MiwgMTM4ODU3LCAxMzg4NjIsIAotICAgIDEzODg2NywgMTM4ODcyLCAxMzg4NzcsIDEzODg4MiwgMTM4ODg3LCAxMzg4OTIsIDEzODg5NywgMTM4OTAyLCAxMzg5MDcsIAotICAgIDEzODkxMiwgMTM4OTE3LCAxMzg5MjIsIDEzODkyNywgMTM4OTMyLCAxMzg5MzcsIDEzODk0MiwgMTM4OTQ3LCAxMzg5NTIsIAotICAgIDEzODk1NywgMTM4OTYyLCAxMzg5NjgsIDEzODk3MywgMTM4OTc4LCAxMzg5ODMsIDEzODk4OCwgMTM4OTkzLCAxMzg5OTgsIAotICAgIDEzOTAwMywgMTM5MDA3LCAxMzkwMTIsIDEzOTAxNywgMTM5MDIyLCAxMzkwMjcsIDEzOTAzMiwgMTM5MDM3LCAxMzkwNDIsIAotICAgIDEzOTA0NywgMTM5MDUyLCAxMzkwNTcsIDEzOTA2MiwgMTM5MDY3LCAxMzkwNzIsIDEzOTA3NywgMTM5MDgyLCAxMzkwODcsIAotICAgIDEzOTA5MiwgMTM5MDk4LCAxMzkxMDMsIDEzOTEwOCwgMTM5MTEzLCAxMzkxMTgsIDEzOTEyMywgMTM5MTI4LCAxMzkxMzMsIAotICAgIDEzOTEzOSwgMTM5MTQ0LCAxMzkxNDksIDEzOTE1NCwgMTM5MTU5LCAxMzkxNjQsIDEzOTE2OSwgMTM5MTc1LCAxMzkxODEsIAotICAgIDEzOTE4NywgMTM5MTkzLCAxMzkxOTksIDEzOTIwNSwgMTM5MjExLCAxMzkyMTcsIDEzOTIyMywgMTM5MjI5LCAxMzkyMzUsIAotICAgIDEzOTI0MSwgMTM5MjQ3LCAxMzkyNTMsIDEzOTI1OSwgMTM5MjY1LCAxMzkyNzEsIDEzOTI3OCwgMTM5Mjg0LCAxMzkyOTAsIAotICAgIDEzOTI5NiwgMTM5MzAyLCAxMzkzMDgsIDEzOTMxNCwgMTM5MzIwLCAxMzkzMjUsIDEzOTMzMSwgMTM5MzM3LCAxMzkzNDMsIAotICAgIDEzOTM0OSwgMTM5MzU1LCAxMzkzNjEsIDEzOTM2NywgMTM5MzczLCAxMzkzNzksIDEzOTM4NSwgMTM5MzkxLCAxMzkzOTcsIAotICAgIDEzOTQwMywgMTM5NDA5LCAxMzk0MTUsIDEzOTQyMSwgMTM5NDI3LCAxMzk0MzQsIDEzOTQ0MCwgMTM5NDQ2LCAxMzk0NTIsIAotICAgIDEzOTQ1OCwgMTM5NDY0LCAxMzk0NzAsIDEzOTQ3NiwgMTM5NDgzLCAxMzk0ODksIDEzOTQ5NSwgMTM5NTAxLCAxMzk1MDcsIAotICAgIDEzOTUxMywgMTM5NTE5LCAxMzk1MjUsIDEzOTUzMSwgMTM5NTM3LCAxMzk1NDMsIDEzOTU0OSwgMTM5NTU1LCAxMzk1NjEsIAotICAgIDEzOTU2NywgMTM5NTczLCAxMzk1NzksIDEzOTU4NSwgMTM5NTkxLCAxMzk1OTcsIDEzOTYwMywgMTM5NjA5LCAxMzk2MTUsIAotICAgIDEzOTYyMSwgMTM5NjI4LCAxMzk2MzQsIDEzOTY0MCwgMTM5NjQ2LCAxMzk2NTIsIDEzOTY1OCwgMTM5NjY0LCAxMzk2NzAsIAotICAgIDEzOTY3NSwgMTM5NjgxLCAxMzk2ODcsIDEzOTY5MywgMTM5Njk5LCAxMzk3MDUsIDEzOTcxMSwgMTM5NzE3LCAxMzk3MjMsIAotICAgIDEzOTcyOSwgMTM5NzM1LCAxMzk3NDEsIDEzOTc0NywgMTM5NzUzLCAxMzk3NTksIDEzOTc2NSwgMTM5NzcxLCAxMzk3NzcsIAotICAgIDEzOTc4NCwgMTM5NzkwLCAxMzk3OTYsIDEzOTgwMiwgMTM5ODA4LCAxMzk4MTQsIDEzOTgyMCwgMTM5ODI2LCAxMzk4MzMsIAotICAgIDEzOTgzOSwgMTM5ODQ1LCAxMzk4NTEsIDEzOTg1NywgMTM5ODYzLCAxMzk4NjksIDEzOTg3NiwgMTM5ODgzLCAxMzk4OTAsIAotICAgIDEzOTg5NywgMTM5OTA0LCAxMzk5MTEsIDEzOTkxOCwgMTM5OTI1LCAxMzk5MzIsIDEzOTkzOSwgMTM5OTQ2LCAxMzk5NTMsIAotICAgIDEzOTk2MCwgMTM5OTY3LCAxMzk5NzQsIDEzOTk4MSwgMTM5OTg4LCAxMzk5OTYsIDE0MDAwMywgMTQwMDEwLCAxNDAwMTcsIAotICAgIDE0MDAyNCwgMTQwMDMxLCAxNDAwMzgsIDE0MDA0NSwgMTQwMDUxLCAxNDAwNTgsIDE0MDA2NSwgMTQwMDcyLCAxNDAwNzksIAotICAgIDE0MDA4NiwgMTQwMDkzLCAxNDAxMDAsIDE0MDEwNywgMTQwMTE0LCAxNDAxMjEsIDE0MDEyOCwgMTQwMTM1LCAxNDAxNDIsIAotICAgIDE0MDE0OSwgMTQwMTU2LCAxNDAxNjMsIDE0MDE3MCwgMTQwMTc4LCAxNDAxODUsIDE0MDE5MiwgMTQwMTk5LCAxNDAyMDYsIAotICAgIDE0MDIxMywgMTQwMjIwLCAxNDAyMjcsIDE0MDIzNSwgMTQwMjQyLCAxNDAyNDksIDE0MDI1NiwgMTQwMjYzLCAxNDAyNzAsIAotICAgIDE0MDI3NywgMTQwMjgyLCAwLCAwLCAxNDAyODcsIDE0MDI5MiwgMTQwMjk2LCAxNDAzMDAsIDE0MDMwNCwgMTQwMzA4LCAKLSAgICAxNDAzMTIsIDE0MDMxNiwgMTQwMzIxLCAxNDAzMjUsIDE0MDMzMCwgMTQwMzM1LCAxNDAzMzksIDE0MDM0MywgMTQwMzQ3LCAKLSAgICAxNDAzNTEsIDE0MDM1NSwgMTQwMzU5LCAxNDAzNjQsIDE0MDM2OCwgMTQwMzczLCAxNDAzNzgsIDE0MDM4MiwgMTQwMzg2LCAKLSAgICAxNDAzOTAsIDE0MDM5NCwgMTQwMzk4LCAxNDA0MDIsIDE0MDQwNywgMTQwNDExLCAxNDA0MTYsIDE0MDQyMiwgMTQwNDI3LCAKLSAgICAxNDA0MzIsIDE0MDQzNywgMTQwNDQyLCAxNDA0NDcsIDE0MDQ1MiwgMTQwNDU4LCAxNDA0NjMsIDE0MDQ2OSwgMTQwNDc1LCAKLSAgICAxNDA0ODAsIDE0MDQ4NSwgMTQwNDkwLCAxNDA0OTUsIDE0MDUwMCwgMTQwNTA1LCAxNDA1MTEsIDE0MDUxNiwgMTQwNTIyLCAKLSAgICAxNDA1MjYsIDE0MDUzMSwgMTQwNTM2LCAxNDA1NDEsIDE0MDU0NiwgMTQwNTUxLCAxNDA1NTYsIDE0MDU2MiwgMTQwNTcwLCAKLSAgICAxNDA1NzcsIDE0MDU4MiwgMTQwNTg3LCAxNDA1OTQsIDE0MDYwMCwgMTQwNjA1LCAxNDA2MTEsIDE0MDYxNywgMTQwNjI1LCAKLSAgICAxNDA2MzEsIDE0MDYzOCwgMTQwNjQ2LCAxNDA2NTIsIDE0MDY2MSwgMTQwNjcwLCAxNDA2NzgsIDE0MDY4NiwgMTQwNjkyLCAKLSAgICAxNDA2OTksIDE0MDcwNywgMTQwNzE1LCAxNDA3MjEsIDE0MDcyOCwgMTQwNzM3LCAxNDA3NDYsIDE0MDc1MywgMTQwNzY0LCAKLSAgICAxNDA3NzQsIDE0MDc4NCwgMTQwNzk0LCAxNDA4MDQsIDE0MDgxMSwgMTQwODE4LCAxNDA4MjUsIDE0MDgzMiwgMTQwODQxLCAKLSAgICAxNDA4NTAsIDE0MDg2MSwgMTQwODcyLCAxNDA4ODEsIDE0MDg5MCwgMTQwOTAxLCAxNDA5MTAsIDE0MDkxOSwgMTQwOTMwLCAKLSAgICAxNDA5MzksIDE0MDk0OCwgMTQwOTU2LCAxNDA5NjQsIDE0MDk3NSwgMTQwOTg2LCAxNDA5OTQsIDE0MTAwMywgMTQxMDEyLCAKLSAgICAxNDEwMTksIDE0MTAzMCwgMTQxMDQxLCAxNDEwNTAsIDE0MTA1OSwgMTQxMDY2LCAxNDEwNzUsIDE0MTA4NCwgMTQxMDkzLCAKLSAgICAxNDExMDQsIDE0MTExMywgMTQxMTIzLCAxNDExMzIsIDE0MTE0MSwgMTQxMTUyLCAxNDExNjUsIDE0MTE4MCwgMTQxMTkxLCAKLSAgICAxNDEyMDQsIDE0MTIxNiwgMTQxMjI1LCAxNDEyMzYsIDE0MTI0NywgMTQxMjU2LCAxNDEyNjcsIDE0MTI4MSwgMTQxMjk2LCAKLSAgICAxNDEyOTksIDE0MTMwOCwgMTQxMzEzLCAxNDEzMTksIDE0MTMyNywgMTQxMzMzLCAxNDEzMzksIDE0MTM0OCwgMTQxMzU1LCAKLSAgICAxNDEzNjUsIDE0MTM3NywgMTQxMzg0LCAxNDEzODcsIDE0MTM5MywgMTQxNDAwLCAxNDE0MDYsIDE0MTQxMSwgMTQxNDE0LCAKLSAgICAxNDE0MTksIDE0MTQyMiwgMTQxNDI5LCAxNDE0MzUsIDE0MTQ0MywgMTQxNDUwLCAxNDE0NTcsIDE0MTQ2MywgMTQxNDY4LCAKLSAgICAxNDE0NzEsIDE0MTQ3NCwgMTQxNDc3LCAxNDE0ODMsIDE0MTQ5MCwgMTQxNDk2LCAxNDE1MDEsIDE0MTUwOCwgMTQxNTExLCAKLSAgICAxNDE1MTYsIDE0MTUyMywgMTQxNTI5LCAxNDE1MzcsIDE0MTU0NCwgMTQxNTU0LCAxNDE1NjMsIDE0MTU2NiwgMTQxNTcyLCAKLSAgICAxNDE1NzksIDE0MTU4NiwgMTQxNTkzLCAxNDE1OTgsIDE0MTYwNiwgMTQxNjE0LCAxNDE2MjMsIDE0MTYyOSwgMTQxNjM4LCAKLSAgICAxNDE2NDcsIDE0MTY1NiwgMTQxNjYyLCAxNDE2NzEsIDE0MTY3OCwgMTQxNjg1LCAxNDE2OTIsIDE0MTcwMCwgMTQxNzA2LCAKLSAgICAxNDE3MTQsIDE0MTcyMCwgMTQxNzI3LCAxNDE3MzQsIDE0MTc0MiwgMTQxNzUzLCAxNDE3NjMsIDE0MTc2OSwgMTQxNzc2LCAKLSAgICAxNDE3ODMsIDE0MTc5MCwgMTQxNzk2LCAxNDE4MDMsIDE0MTgxMCwgMTQxODE1LCAxNDE4MjIsIDE0MTgzMCwgMTQxODM5LCAKLSAgICAxNDE4NDUsIDE0MTg1NywgMTQxODY4LCAxNDE4NzQsIDE0MTg4MiwgMTQxODg4LCAxNDE4OTUsIDE0MTkwMiwgMTQxOTA5LCAKLSAgICAxNDE5MTUsIDE0MTkyMiwgMTQxOTMxLCAxNDE5MzcsIDE0MTk0MywgMTQxOTUwLCAxNDE5NTcsIDE0MTk2NSwgMTQxOTc1LCAKLSAgICAxNDE5ODUsIDE0MTk5NSwgMTQyMDA1LCAxNDIwMTMsIDE0MjAyMSwgMTQyMDMxLCAxNDIwMzksIDE0MjA0NCwgMTQyMDQ5LCAKLSAgICAxNDIwNTQsIDE0MjA2MCwgMTQyMDY3LCAxNDIwNzQsIDE0MjA4MCwgMTQyMDg2LCAxNDIwOTEsIDE0MjA5OCwgMTQyMTA2LCAKLSAgICAxNDIxMTYsIDE0MjEyNCwgMTQyMTMyLCAxNDIxNDIsIDE0MjE1MiwgMTQyMTYwLCAxNDIxNzAsIDE0MjE4MCwgMTQyMTkyLCAKLSAgICAxNDIyMDQsIDE0MjIxNiwgMTQyMjI2LCAxNDIyMzIsIDE0MjIzOCwgMTQyMjQ1LCAxNDIyNTQsIDE0MjI2MywgMTQyMjcyLCAKLSAgICAxNDIyODEsIDE0MjI5MSwgMTQyMzAwLCAxNDIzMDksIDE0MjMxOCwgMTQyMzIzLCAxNDIzMjksIDE0MjMzOCwgMTQyMzQ4LCAKLSAgICAxNDIzNTcsIDE0MjM2MywgMTQyMzY5LCAxNDIzNzYsIDE0MjM4MywgMTQyMzkwLCAxNDIzOTYsIDE0MjQwMywgMTQyNDEwLCAKLSAgICAxNDI0MTcsIDE0MjQyMywgMTQyNDI3LCAxNDI0MzIsIDE0MjQzOSwgMTQyNDQ2LCAxNDI0NTMsIDE0MjQ1OCwgMTQyNDY2LCAKLSAgICAxNDI0NzQsIDE0MjQ4MywgMTQyNDkxLCAxNDI0OTgsIDE0MjUwNiwgMTQyNTE1LCAxNDI1MjUsIDE0MjUyOCwgMTQyNTMyLCAKLSAgICAxNDI1MzcsIDE0MjU0MiwgMTQyNTQ3LCAxNDI1NTIsIDE0MjU1NywgMTQyNTYyLCAxNDI1NjcsIDE0MjU3MiwgMTQyNTc3LCAKLSAgICAxNDI1ODIsIDE0MjU4NywgMTQyNTkyLCAxNDI1OTcsIDE0MjYwMiwgMTQyNjA3LCAxNDI2MTIsIDE0MjYxNywgMTQyNjI0LCAKLSAgICAxNDI2MzAsIDE0MjYzNywgMTQyNjQzLCAxNDI2NDgsIDE0MjY1NSwgMTQyNjYxLCAxNDI2NjgsIDE0MjY3NCwgMTQyNjc5LCAKLSAgICAxNDI2ODYsIDE0MjY5MywgMTQyNzAwLCAxNDI3MDYsIDE0MjcxMiwgMTQyNzIxLCAxNDI3MzAsIDE0Mjc0MSwgMTQyNzQ4LCAKLSAgICAxNDI3NTUsIDE0Mjc2NCwgMTQyNzczLCAxNDI3ODIsIDE0Mjc5MSwgMTQyODAwLCAxNDI4MDYsIDE0MjgxNCwgMTQyODIwLCAKLSAgICAxNDI4MzAsIDE0MjgzNSwgMTQyODQ0LCAxNDI4NTMsIDE0Mjg2MCwgMTQyODcxLCAxNDI4NzgsIDE0Mjg4NSwgMTQyODkyLCAKLSAgICAxNDI4OTksIDE0MjkwNiwgMTQyOTEzLCAxNDI5MjAsIDE0MjkyNywgMTQyOTM0LCAxNDI5NDEsIDE0Mjk0NywgMTQyOTUzLCAKLSAgICAxNDI5NTksIDE0Mjk2NiwgMTQyOTczLCAxNDI5ODAsIDE0Mjk4NywgMTQyOTk0LCAxNDMwMDEsIDE0MzAwOCwgMTQzMDE1LCAKLSAgICAxNDMwMjIsIDE0MzAyOSwgMTQzMDM2LCAxNDMwNDMsIDE0MzA0OCwgMTQzMDU3LCAxNDMwNjYsIDE0MzA3NSwgMTQzMDgyLCAKLSAgICAxNDMwODksIDE0MzA5NiwgMTQzMTAzLCAxNDMxMTAsIDE0MzExNywgMTQzMTI0LCAxNDMxMzEsIDE0MzE0MCwgMTQzMTQ5LCAKLSAgICAxNDMxNTgsIDE0MzE2NywgMTQzMTc2LCAxNDMxODUsIDE0MzE5NCwgMTQzMjAzLCAxNDMyMTIsIDE0MzIyMSwgMTQzMjMwLCAKLSAgICAxNDMyMzksIDE0MzI0OCwgMTQzMjU0LCAxNDMyNjIsIDE0MzI2OCwgMTQzMjc4LCAxNDMyODMsIDE0MzI5MiwgMTQzMzAxLCAKLSAgICAxNDMzMTAsIDE0MzMyMSwgMTQzMzI2LCAxNDMzMzMsIDE0MzM0MCwgMTQzMzQ3LCAxNDMzNTIsIDE0MzM1OCwgMTQzMzY0LCAKLSAgICAxNDMzNzAsIDE0MzM3NywgMTQzMzg0LCAxNDMzOTEsIDE0MzM5OCwgMTQzNDA1LCAxNDM0MTIsIDE0MzQxOSwgMTQzNDI2LCAKLSAgICAxNDM0MzMsIDE0MzQ0MCwgMTQzNDQ3LCAxNDM0NTQsIDE0MzQ1OSwgMTQzNDY4LCAxNDM0NzcsIDE0MzQ4NiwgMTQzNDk1LCAKLSAgICAxNDM1MDQsIDE0MzUxMywgMTQzNTIyLCAxNDM1MzEsIDE0MzU0MiwgMTQzNTUzLCAxNDM1NjAsIDE0MzU2NywgMTQzNTc0LCAKLSAgICAxNDM1ODEsIDE0MzU4OCwgMTQzNTk1LCAxNDM2MDMsIDE0MzYxMywgMTQzNjIzLCAxNDM2MzMsIDE0MzY0NCwgMTQzNjU1LCAKLSAgICAxNDM2NjYsIDE0MzY3NSwgMTQzNjg0LCAxNDM2OTMsIDE0MzY5OCwgMTQzNzAzLCAxNDM3MDgsIDE0MzcxMywgMTQzNzI0LCAKLSAgICAxNDM3MzUsIDE0Mzc0NiwgMTQzNzU3LCAxNDM3NjgsIDE0Mzc3OCwgMTQzNzg5LCAxNDM3OTgsIDE0MzgwNywgMTQzODE2LCAKLSAgICAxNDM4MjUsIDE0MzgzNCwgMTQzODQyLCAxNDM4NTEsIDE0Mzg2MiwgMTQzODczLCAxNDM4ODQsIDE0Mzg5NSwgMTQzOTA2LCAKLSAgICAxNDM5MTgsIDE0MzkzMSwgMTQzOTQzLCAxNDM5NTYsIDE0Mzk2OCwgMTQzOTgxLCAxNDM5OTMsIDE0NDAwNiwgMTQ0MDE3LCAKLSAgICAxNDQwMjgsIDE0NDAzNywgMTQ0MDQ1LCAxNDQwNTQsIDE0NDA2NSwgMTQ0MDc2LCAxNDQwODgsIDE0NDEwMSwgMTQ0MTE1LCAKLSAgICAxNDQxMzAsIDE0NDE0MiwgMTQ0MTU1LCAxNDQxNjcsIDE0NDE4MCwgMTQ0MTkxLCAxNDQyMDIsIDE0NDIxMSwgMTQ0MjE5LCAKLSAgICAxNDQyMjgsIDE0NDIzNSwgMTQ0MjQyLCAxNDQyNDksIDE0NDI1NiwgMTQ0MjYzLCAxNDQyNzAsIDE0NDI3NywgMTQ0Mjg0LCAKLSAgICAxNDQyOTEsIDE0NDI5OCwgMTQ0MzAzLCAxNDQzMDgsIDE0NDMxMywgMTQ0MzIwLCAxNDQzMzAsIDE0NDM0MSwgMTQ0MzUxLCAKLSAgICAxNDQzNjIsIDE0NDM3NiwgMTQ0MzkxLCAxNDQ0MDYsIDE0NDQyMCwgMTQ0NDM1LCAxNDQ0NTAsIDE0NDQ2MSwgMTQ0NDcyLCAKLSAgICAxNDQ0ODUsIDE0NDQ5OCwgMTQ0NTA3LCAxNDQ1MTYsIDE0NDUyOSwgMTQ0NTQyLCAxNDQ1NDksIDE0NDU1NiwgMTQ0NTYxLCAKLSAgICAxNDQ1NjYsIDE0NDU3MSwgMTQ0NTc2LCAxNDQ1ODEsIDE0NDU4OCwgMTQ0NTk3LCAxNDQ2MDIsIDE0NDYwNSwgMTQ0NjEwLCAKLSAgICAxNDQ2MTcsIDE0NDYyNCwgMTQ0NjMxLCAxNDQ2MzgsIDE0NDY0NSwgMTQ0NjUyLCAxNDQ2NjUsIDE0NDY3OSwgMTQ0Njk0LCAKLSAgICAxNDQ3MDEsIDE0NDcwOCwgMTQ0NzE1LCAxNDQ3MjQsIDE0NDczMiwgMTQ0NzQwLCAxNDQ3NDksIDE0NDc1NCwgMTQ0NzU5LCAKLSAgICAxNDQ3NjQsIDE0NDc2OSwgMTQ0Nzc0LCAxNDQ3NzksIDE0NDc4NiwgMTQ0NzkzLCAxNDQ3OTksIDE0NDgwNiwgMTQ0ODEyLCAKLSAgICAxNDQ4MTksIDE0NDgyNCwgMTQ0ODI5LCAxNDQ4MzQsIDE0NDgzOSwgMTQ0ODQ0LCAxNDQ4NTEsIDE0NDg1OCwgMTQ0ODYzLCAKLSAgICAxNDQ4NzAsIDE0NDg3NywgMTQ0ODgyLCAxNDQ4ODcsIDE0NDg5MiwgMTQ0ODk3LCAxNDQ5MDIsIDE0NDkwNywgMTQ0OTE0LCAKLSAgICAxNDQ5MjEsIDE0NDkyOCwgMTQ0OTMxLCAxNDQ5MzYsIDE0NDk0MSwgMTQ0OTQ2LCAxNDQ5NTEsIDE0NDk1OCwgMTQ0OTY1LCAKLSAgICAxNDQ5NzMsIDE0NDk4MSwgMTQ0OTg2LCAxNDQ5OTEsIDE0NDk5OCwgMTQ1MDA1LCAxNDUwMTIsIDE0NTAxNywgMTQ1MDI0LCAKLSAgICAxNDUwMzEsIDE0NTAzNiwgMTQ1MDQzLCAxNDUwNTAsIDE0NTA1NiwgMTQ1MDYyLCAxNDUwNjgsIDE0NTA3NCwgMTQ1MDgyLCAKLSAgICAxNDUwOTAsIDE0NTA5NiwgMTQ1MTA0LCAxNDUxMTIsIDE0NTExNywgMTQ1MTI0LCAxNDUxMzEsIDE0NTEzNiwgMTQ1MTQzLCAKLSAgICAxNDUxNTAsIDE0NTE1NywgMTQ1MTY1LCAxNDUxNzMsIDE0NTE3OCwgMTQ1MTg1LCAxNDUxOTIsIDE0NTIwMSwgMTQ1MjA4LCAKLSAgICAxNDUyMTcsIDE0NTIyOCwgMTQ1MjM3LCAxNDUyNDYsIDE0NTI1NSwgMTQ1MjY0LCAxNDUyNjcsIDE0NTI3MiwgMTQ1Mjc5LCAKLSAgICAxNDUyODgsIDE0NTI5NSwgMTQ1MzA0LCAxNDUzMTEsIDE0NTMxNiwgMTQ1MzIxLCAxNDUzMjQsIDE0NTMyNywgMTQ1MzMwLCAKLSAgICAxNDUzMzcsIDE0NTM0NCwgMTQ1MzUzLCAxNDUzNjIsIDE0NTM3MSwgMTQ1Mzc4LCAxNDUzODUsIDE0NTM5MCwgMTQ1NDAzLCAKLSAgICAxNDU0MDgsIDE0NTQxMywgMTQ1NDE4LCAxNDU0MjMsIDE0NTQyOCwgMTQ1NDMzLCAxNDU0MzgsIDE0NTQ0MywgMTQ1NDQ2LCAKLSAgICAxNDU0NTEsIDE0NTQ1NiwgMTQ1NDYxLCAxNDU0NjYsIDE0NTQ3MSwgMTQ1NDc4LCAxNDU0ODMsIDE0NTQ5MCwgMTQ1NDkzLCAKLSAgICAxNDU0OTgsIDE0NTUwMSwgMTQ1NTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDU1MDcsIDE0NTUxMiwgMTQ1NTE3LCAxNDU1MjIsIDE0NTUyNywgMCwgMTQ1NTMyLCAxNDU1MzcsIDE0NTU0MiwgCi0gICAgMTQ1NTQ3LCAxNDU1NTIsIDE0NTU1NywgMTQ1NTYyLCAxNDU1NjcsIDE0NTU3MiwgMTQ1NTc3LCAxNDU1ODIsIDE0NTU4NywgCi0gICAgMTQ1NTkyLCAxNDU1OTcsIDE0NTYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1NjA3LCAxNDU2MTQsIDE0NTYyMCwgCi0gICAgMTQ1NjI3LCAxNDU2MzQsIDE0NTY0MSwgMTQ1NjQ4LCAxNDU2NTUsIDE0NTY2MiwgMTQ1NjY5LCAxNDU2NzYsIDE0NTY4MywgCi0gICAgMTQ1NjkwLCAxNDU2OTcsIDE0NTcwNCwgMTQ1NzExLCAxNDU3MTgsIDE0NTcyNSwgMTQ1NzMyLCAxNDU3MzksIDE0NTc0NiwgCi0gICAgMTQ1NzUzLCAxNDU3NjAsIDE0NTc2NywgMTQ1Nzc0LCAxNDU3ODEsIDE0NTc4OCwgMTQ1Nzk1LCAxNDU4MDIsIDE0NTgwOSwgCi0gICAgMTQ1ODE2LCAxNDU4MjMsIDE0NTgzMCwgMTQ1ODM3LCAxNDU4NDQsIDE0NTg1MCwgMTQ1ODU2LCAxNDU4NjIsIDE0NTg2OSwgCi0gICAgMTQ1ODc1LCAxNDU4ODIsIDE0NTg4OCwgMTQ1ODk1LCAxNDU5MDIsIDE0NTkwOSwgMTQ1OTE2LCAxNDU5MjMsIDE0NTkzMCwgCi0gICAgMTQ1OTM3LCAxNDU5NDQsIDE0NTk1MSwgMTQ1OTU4LCAxNDU5NjUsIDE0NTk3MiwgMTQ1OTc5LCAxNDU5ODYsIDE0NTk5MywgCi0gICAgMTQ2MDAwLCAxNDYwMDcsIDE0NjAxNCwgMTQ2MDIxLCAxNDYwMjgsIDE0NjAzNiwgMTQ2MDQzLCAxNDYwNTAsIDE0NjA1NywgCi0gICAgMTQ2MDY0LCAxNDYwNzEsIDE0NjA3OCwgMTQ2MDg1LCAxNDYwOTIsIDE0NjA5OSwgMTQ2MTA2LCAxNDYxMTMsIDE0NjEyMCwgCi0gICAgMTQ2MTI2LCAxNDYxMzMsIDE0NjE0MCwgMTQ2MTQ3LCAxNDYxNTQsIDE0NjE2MSwgMTQ2MTY4LCAxNDYxNzUsIDE0NjE4MywgCi0gICAgMTQ2MTkwLCAxNDYxOTYsIDE0NjIwMywgMTQ2MjEwLCAxNDYyMTcsIDE0NjIyNCwgMTQ2MjMxLCAxNDYyMzgsIDE0NjI0NSwgCi0gICAgMTQ2MjUyLCAxNDYyNTksIDE0NjI2NiwgMTQ2MjczLCAxNDYyODAsIDE0NjI4NywgMTQ2Mjk0LCAxNDYzMDEsIDE0NjMwOCwgCi0gICAgMTQ2MzE1LCAxNDYzMjIsIDE0NjMyOSwgMTQ2MzM2LCAxNDYzNDIsIDE0NjM0OSwgMTQ2MzU2LCAxNDYzNjMsIDE0NjM3MCwgCi0gICAgMTQ2Mzc3LCAxNDYzODQsIDE0NjM5MSwgMTQ2Mzk4LCAxNDY0MDUsIDE0NjQxMiwgMTQ2NDE5LCAxNDY0MjYsIDE0NjQzMywgCi0gICAgMTQ2NDQwLCAxNDY0NDcsIDE0NjQ1NCwgMTQ2NDYxLCAxNDY0NjgsIDE0NjQ3NSwgMTQ2NDgyLCAxNDY0ODksIDE0NjQ5NiwgCi0gICAgMTQ2NTA0LCAxNDY1MTIsIDE0NjUyMCwgMTQ2NTI3LCAxNDY1MzQsIDE0NjU0MSwgMTQ2NTQ4LCAxNDY1NTUsIDE0NjU2MiwgCi0gICAgMTQ2NTY5LCAxNDY1NzYsIDE0NjU4MywgMTQ2NTkwLCAxNDY1OTYsIDE0NjYwMywgMTQ2NjEwLCAxNDY2MTcsIDE0NjYyNCwgCi0gICAgMTQ2NjMxLCAxNDY2MzgsIDE0NjY0NSwgMTQ2NjUyLCAxNDY2NTksIDE0NjY2NiwgMTQ2NjczLCAxNDY2ODAsIDE0NjY4NywgCi0gICAgMTQ2Njk0LCAxNDY3MDIsIDE0NjcxMCwgMTQ2NzE4LCAxNDY3MjUsIDE0NjczMiwgMTQ2NzM5LCAxNDY3NDYsIDE0Njc1MywgCi0gICAgMTQ2NzYwLCAxNDY3NjcsIDE0Njc3NCwgMTQ2NzgxLCAxNDY3ODgsIDE0Njc5NSwgMTQ2ODAyLCAxNDY4MDksIDE0NjgxNiwgCi0gICAgMTQ2ODIzLCAxNDY4MzAsIDE0NjgzNywgMTQ2ODQ0LCAxNDY4NTEsIDE0Njg1OCwgMTQ2ODY1LCAxNDY4NzIsIDE0Njg3OSwgCi0gICAgMTQ2ODg2LCAxNDY4OTMsIDE0NjkwMCwgMTQ2OTA3LCAxNDY5MTQsIDE0NjkyMSwgMTQ2OTI4LCAxNDY5MzUsIDE0Njk0MiwgCi0gICAgMTQ2OTQ5LCAxNDY5NTYsIDE0Njk2MywgMTQ2OTcwLCAxNDY5NzcsIDAsIDAsIDE0Njk4NCwgMTQ2OTg4LCAxNDY5OTIsIAotICAgIDE0Njk5NiwgMTQ3MDAwLCAxNDcwMDQsIDE0NzAwOCwgMTQ3MDEzLCAxNDcwMTcsIDE0NzAyMiwgMTQ3MDI4LCAxNDcwMzQsIAotICAgIDE0NzA0MCwgMTQ3MDQ2LCAxNDcwNTQsIDE0NzA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQ3MDY4LCAxNDcwNzIsIDE0NzA3NiwgMTQ3MDgwLCAwLCAxNDcwODQsIDE0NzA4OCwgMTQ3MDkyLCAKLSAgICAxNDcwOTYsIDE0NzEwMCwgMTQ3MTA0LCAxNDcxMDgsIDE0NzExMiwgMTQ3MTE2LCAxNDcxMjAsIDE0NzEyNCwgMTQ3MTI4LCAKLSAgICAxNDcxMzIsIDE0NzEzNiwgMTQ3MTQwLCAxNDcxNDQsIDE0NzE0OCwgMTQ3MTUyLCAxNDcxNTYsIDE0NzE2MCwgMTQ3MTY0LCAKLSAgICAxNDcxNjgsIDE0NzE3MiwgMTQ3MTc2LCAxNDcxODIsIDE0NzE4OCwgMTQ3MTk0LCAwLCAxNDcyMDAsIDE0NzIwNSwgMCwgCi0gICAgMTQ3MjEwLCAwLCAwLCAxNDcyMTUsIDAsIDE0NzIyMCwgMTQ3MjI1LCAxNDcyMzAsIDE0NzIzNSwgMTQ3MjQwLCAxNDcyNDUsIAotICAgIDE0NzI1MCwgMTQ3MjU1LCAxNDcyNjAsIDE0NzI2NSwgMCwgMTQ3MjcwLCAxNDcyNzUsIDE0NzI4MCwgMTQ3Mjg1LCAwLCAKLSAgICAxNDcyOTAsIDAsIDE0NzI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3MzAwLCAwLCAwLCAwLCAwLCAxNDczMDYsIDAsIAotICAgIDE0NzMxMiwgMCwgMTQ3MzE4LCAwLCAxNDczMjQsIDE0NzMzMCwgMTQ3MzM2LCAwLCAxNDczNDIsIDE0NzM0OCwgMCwgCi0gICAgMTQ3MzU0LCAwLCAwLCAxNDczNjAsIDAsIDE0NzM2NiwgMCwgMTQ3MzcyLCAwLCAxNDczNzgsIDAsIDE0NzM4NiwgMCwgCi0gICAgMTQ3Mzk0LCAxNDc0MDAsIDAsIDE0NzQwNiwgMCwgMCwgMTQ3NDEyLCAxNDc0MTgsIDE0NzQyNCwgMTQ3NDMwLCAwLCAKLSAgICAxNDc0MzYsIDE0NzQ0MiwgMTQ3NDQ4LCAxNDc0NTQsIDE0NzQ2MCwgMTQ3NDY2LCAxNDc0NzIsIDAsIDE0NzQ3OCwgCi0gICAgMTQ3NDg0LCAxNDc0OTAsIDE0NzQ5NiwgMCwgMTQ3NTAyLCAxNDc1MDgsIDE0NzUxNCwgMTQ3NTIwLCAwLCAxNDc1MjgsIDAsIAotICAgIDE0NzUzNiwgMTQ3NTQyLCAxNDc1NDgsIDE0NzU1NCwgMTQ3NTYwLCAxNDc1NjYsIDE0NzU3MiwgMTQ3NTc4LCAxNDc1ODQsIAotICAgIDE0NzU5MCwgMCwgMTQ3NTk2LCAxNDc2MDIsIDE0NzYwOCwgMTQ3NjE0LCAxNDc2MjAsIDE0NzYyNiwgMTQ3NjMyLCAKLSAgICAxNDc2MzgsIDE0NzY0NCwgMTQ3NjUwLCAxNDc2NTYsIDE0NzY2MiwgMTQ3NjY4LCAxNDc2NzQsIDE0NzY4MCwgMTQ3Njg2LCAKLSAgICAxNDc2OTIsIDAsIDAsIDAsIDAsIDAsIDE0NzY5OCwgMTQ3NzAzLCAxNDc3MDgsIDAsIDE0NzcxMywgMTQ3NzE4LCAxNDc3MjMsIAotICAgIDE0NzcyOCwgMTQ3NzMzLCAwLCAxNDc3MzgsIDE0Nzc0MywgMTQ3NzQ4LCAxNDc3NTMsIDE0Nzc1OCwgMTQ3NzYzLCAKLSAgICAxNDc3NjgsIDE0Nzc3MywgMTQ3Nzc4LCAxNDc3ODMsIDE0Nzc4OCwgMTQ3NzkzLCAxNDc3OTgsIDE0NzgwMywgMTQ3ODA4LCAKLSAgICAxNDc4MTMsIDE0NzgxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEyLCAxNTA2MTksIDE1MDYyNSwgMTUwNjMyLCAxNTA2MzksIAorICAgIDE1MDY0NiwgMTUwNjUzLCAxNTA2NjAsIDE1MDY2NywgMTUwNjc0LCAxNTA2ODEsIDE1MDY4OCwgMTUwNjk1LCAxNTA3MDIsIAorICAgIDE1MDcwOSwgMTUwNzE2LCAxNTA3MjMsIDE1MDczMCwgMTUwNzM3LCAxNTA3NDQsIDE1MDc1MSwgMTUwNzU4LCAxNTA3NjUsIAorICAgIDE1MDc3MiwgMTUwNzc5LCAxNTA3ODYsIDE1MDc5MywgMTUwODAwLCAxNTA4MDcsIDE1MDgxNCwgMTUwODIxLCAxNTA4MjgsIAorICAgIDE1MDgzNSwgMTUwODQyLCAxNTA4NDksIDE1MDg1NSwgMTUwODYxLCAxNTA4NjcsIDE1MDg3NCwgMTUwODgwLCAxNTA4ODcsIAorICAgIDE1MDg5MywgMTUwOTAwLCAxNTA5MDcsIDE1MDkxNCwgMTUwOTIxLCAxNTA5MjgsIDE1MDkzNSwgMTUwOTQyLCAxNTA5NDksIAorICAgIDE1MDk1NiwgMTUwOTYzLCAxNTA5NzAsIDE1MDk3NywgMTUwOTg0LCAxNTA5OTEsIDE1MDk5NywgMTUxMDA0LCAxNTEwMTEsIAorICAgIDE1MTAxOCwgMTUxMDI1LCAxNTEwMzIsIDE1MTA0MCwgMTUxMDQ3LCAxNTEwNTQsIDE1MTA2MSwgMTUxMDY4LCAxNTEwNzUsIAorICAgIDE1MTA4MiwgMTUxMDg5LCAxNTEwOTYsIDE1MTEwMywgMTUxMTEwLCAxNTExMTcsIDE1MTEyNCwgMTUxMTMwLCAxNTExMzcsIAorICAgIDE1MTE0NCwgMTUxMTUxLCAxNTExNTgsIDE1MTE2NSwgMTUxMTcyLCAxNTExNzksIDE1MTE4NywgMTUxMTk0LCAxNTEyMDAsIAorICAgIDE1MTIwNywgMTUxMjE0LCAxNTEyMjEsIDE1MTIyOCwgMTUxMjM1LCAxNTEyNDIsIDE1MTI0OSwgMTUxMjU2LCAxNTEyNjMsIAorICAgIDE1MTI3MCwgMTUxMjc3LCAxNTEyODQsIDE1MTI5MSwgMTUxMjk4LCAxNTEzMDUsIDE1MTMxMiwgMTUxMzE5LCAxNTEzMjYsIAorICAgIDE1MTMzMywgMTUxMzQwLCAxNTEzNDYsIDE1MTM1MywgMTUxMzYwLCAxNTEzNjcsIDE1MTM3NCwgMTUxMzgxLCAxNTEzODgsIAorICAgIDE1MTM5NSwgMTUxNDAyLCAxNTE0MDksIDE1MTQxNiwgMTUxNDIzLCAxNTE0MzAsIDE1MTQzNywgMTUxNDQ0LCAxNTE0NTEsIAorICAgIDE1MTQ1OCwgMTUxNDY1LCAxNTE0NzIsIDE1MTQ3OSwgMTUxNDg2LCAxNTE0OTMsIDE1MTUwMCwgMTUxNTA4LCAxNTE1MTYsIAorICAgIDE1MTUyNCwgMTUxNTMxLCAxNTE1MzgsIDE1MTU0NSwgMTUxNTUyLCAxNTE1NTksIDE1MTU2NiwgMTUxNTczLCAxNTE1ODAsIAorICAgIDE1MTU4NywgMTUxNTk0LCAxNTE2MDAsIDE1MTYwNywgMTUxNjE0LCAxNTE2MjEsIDE1MTYyOCwgMTUxNjM1LCAxNTE2NDIsIAorICAgIDE1MTY0OSwgMTUxNjU2LCAxNTE2NjMsIDE1MTY3MCwgMTUxNjc3LCAxNTE2ODQsIDE1MTY5MSwgMTUxNjk4LCAxNTE3MDYsIAorICAgIDE1MTcxNCwgMTUxNzIyLCAxNTE3MjksIDE1MTczNiwgMTUxNzQzLCAxNTE3NTAsIDE1MTc1NywgMTUxNzY0LCAxNTE3NzEsIAorICAgIDE1MTc3OCwgMTUxNzg1LCAxNTE3OTIsIDE1MTc5OSwgMTUxODA2LCAxNTE4MTMsIDE1MTgyMCwgMTUxODI3LCAxNTE4MzQsIAorICAgIDE1MTg0MSwgMTUxODQ4LCAxNTE4NTUsIDE1MTg2MiwgMTUxODY5LCAxNTE4NzYsIDE1MTg4MywgMTUxODkwLCAxNTE4OTcsIAorICAgIDE1MTkwNCwgMTUxOTExLCAxNTE5MTgsIDE1MTkyNSwgMTUxOTMyLCAxNTE5MzksIDE1MTk0NiwgMTUxOTUzLCAxNTE5NjAsIAorICAgIDE1MTk2NywgMTUxOTc0LCAxNTE5ODEsIDAsIDAsIDE1MTk4OCwgMTUxOTkyLCAxNTE5OTYsIDE1MjAwMCwgMTUyMDA0LCAKKyAgICAxNTIwMDgsIDE1MjAxMiwgMTUyMDE3LCAxNTIwMjEsIDE1MjAyNiwgMTUyMDMyLCAxNTIwMzgsIDE1MjA0NCwgMTUyMDUwLCAKKyAgICAxNTIwNTgsIDE1MjA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyMDcyLCAKKyAgICAxNTIwNzgsIDE1MjA4NCwgMTUyMDkwLCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA4LCAxNTIxMTQsIDE1MjEyMCwgMTUyMTI2LCAKKyAgICAxNTIxMzEsIDE1MjEzNywgMTUyMTQyLCAxNTIxNDcsIDE1MjE1MywgMTUyMTU5LCAxNTIxNjUsIDE1MjE3MSwgMTUyMTc3LCAKKyAgICAxNTIxODIsIDE1MjE4NywgMTUyMTkzLCAxNTIxOTksIDE1MjIwNCwgMTUyMjEwLCAxNTIyMTYsIDE1MjIyMiwgMTUyMjI4LCAKKyAgICAxNTIyMzQsIDE1MjI0MCwgMTUyMjQ2LCAxNTIyNTIsIDE1MjI1OCwgMTUyMjY0LCAxNTIyNzAsIDE1MjI3NiwgMTUyMjgyLCAKKyAgICAxNTIyODgsIDE1MjI5NCwgMTUyMzAwLCAxNTIzMDYsIDE1MjMxMiwgMTUyMzE4LCAxNTIzMjQsIDE1MjMyOSwgMTUyMzM1LCAKKyAgICAxNTIzNDAsIDE1MjM0NSwgMTUyMzUxLCAxNTIzNTcsIDE1MjM2MywgMTUyMzY5LCAxNTIzNzUsIDE1MjM4MCwgMTUyMzg1LCAKKyAgICAxNTIzOTEsIDE1MjM5NywgMTUyNDAyLCAxNTI0MDgsIDE1MjQxNCwgMTUyNDIwLCAxNTI0MjYsIDE1MjQzMiwgMTUyNDM4LCAKKyAgICAxNTI0NDQsIDE1MjQ1MCwgMTUyNDU2LCAxNTI0NjIsIDE1MjQ2OCwgMTUyNDc0LCAxNTI0NzksIDE1MjQ4NCwgMTUyNDg4LCAKKyAgICAxNTI0OTMsIDE1MjUwMCwgMCwgMCwgMCwgMCwgMCwgMTUyNTA0LCAxNTI1MDksIDE1MjUxMywgMTUyNTE3LCAxNTI1MjEsIAorICAgIDE1MjUyNSwgMTUyNTI5LCAxNTI1MzMsIDE1MjUzOCwgMTUyNTQyLCAwLCAwLCAwLCAwLCAxNTI1NDcsIDE1MjU1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3ODIzLCAxNDc4MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0Nzg0MSwgMTQ3ODQ4LCAxNDc4NTUsIDE0Nzg2MiwgMTQ3ODY4LCAxNDc4NzUsIDE0Nzg4MiwgCi0gICAgMTQ3ODg4LCAxNDc4OTUsIDE0NzkwMiwgMTQ3OTA5LCAxNDc5MTcsIDE0NzkyNSwgMTQ3OTMzLCAxNDc5NDEsIDE0Nzk0OSwgCi0gICAgMTQ3OTU3LCAxNDc5NjQsIDE0Nzk3MSwgMTQ3OTc4LCAxNDc5ODYsIDE0Nzk5NCwgMTQ4MDAyLCAxNDgwMTAsIDE0ODAxOCwgCi0gICAgMTQ4MDI2LCAxNDgwMzMsIDE0ODA0MCwgMTQ4MDQ3LCAxNDgwNTUsIDE0ODA2MywgMTQ4MDcxLCAxNDgwNzksIDE0ODA4NywgCi0gICAgMTQ4MDk1LCAxNDgxMDAsIDE0ODEwNSwgMTQ4MTEwLCAxNDgxMTUsIDE0ODEyMCwgMTQ4MTI1LCAxNDgxMzAsIDE0ODEzNSwgCi0gICAgMTQ4MTQwLCAwLCAwLCAwLCAwLCAxNDgxNDUsIDE0ODE1MSwgMTQ4MTU1LCAxNDgxNTksIDE0ODE2MywgMTQ4MTY3LCAKLSAgICAxNDgxNzEsIDE0ODE3NSwgMTQ4MTc5LCAxNDgxODMsIDE0ODE4NywgMTQ4MTkxLCAxNDgxOTUsIDE0ODE5OSwgMTQ4MjAzLCAKLSAgICAxNDgyMDcsIDE0ODIxMSwgMTQ4MjE1LCAxNDgyMTksIDE0ODIyMywgMTQ4MjI3LCAxNDgyMzEsIDE0ODIzNSwgMTQ4MjM5LCAKLSAgICAxNDgyNDMsIDE0ODI0NywgMTQ4MjUxLCAxNDgyNTUsIDE0ODI1OSwgMTQ4MjYzLCAxNDgyNjcsIDE0ODI3MSwgMTQ4Mjc1LCAKLSAgICAxNDgyNzksIDE0ODI4MywgMTQ4Mjg3LCAxNDgyOTEsIDE0ODI5NSwgMTQ4Mjk5LCAxNDgzMDMsIDE0ODMwNywgMTQ4MzExLCAKLSAgICAxNDgzMTUsIDE0ODMxOSwgMTQ4MzIzLCAxNDgzMjcsIDE0ODMzMSwgMTQ4MzM1LCAxNDgzMzksIDE0ODM0MywgMTQ4MzQ3LCAKLSAgICAxNDgzNTIsIDE0ODM1NiwgMTQ4MzYwLCAxNDgzNjQsIDE0ODM2OCwgMTQ4MzcyLCAxNDgzNzYsIDE0ODM4MCwgMTQ4Mzg0LCAKLSAgICAxNDgzODgsIDE0ODM5MiwgMTQ4Mzk2LCAxNDg0MDAsIDE0ODQwNCwgMTQ4NDA4LCAxNDg0MTIsIDE0ODQxNiwgMTQ4NDIwLCAKLSAgICAxNDg0MjQsIDE0ODQyOCwgMTQ4NDMyLCAxNDg0MzYsIDE0ODQ0MCwgMTQ4NDQ0LCAxNDg0NDgsIDE0ODQ1MiwgMTQ4NDU2LCAKLSAgICAxNDg0NjAsIDE0ODQ2NCwgMTQ4NDY4LCAxNDg0NzIsIDE0ODQ3NiwgMTQ4NDgwLCAxNDg0ODQsIDE0ODQ4OCwgMTQ4NDkyLCAKLSAgICAxNDg0OTYsIDE0ODUwMCwgMTQ4NTA0LCAxNDg1MDgsIDE0ODUxMiwgMTQ4NTE2LCAxNDg1MjAsIDE0ODUyNCwgMTQ4NTI4LCAKLSAgICAxNDg1MzIsIDE0ODUzNiwgMTQ4NTQwLCAxNDg1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0ODU0OCwgMTQ4NTU0LCAxNDg1NjMsIDE0ODU3MSwgMTQ4NTc5LCAxNDg1ODgsIDE0ODU5NywgMTQ4NjA2LCAxNDg2MTUsIAotICAgIDE0ODYyNCwgMTQ4NjMzLCAxNDg2NDIsIDE0ODY1MSwgMTQ4NjYwLCAxNDg2NjksIDAsIDAsIDE0ODY3OCwgMTQ4Njg3LCAKLSAgICAxNDg2OTUsIDE0ODcwMywgMTQ4NzEyLCAxNDg3MjEsIDE0ODczMCwgMTQ4NzM5LCAxNDg3NDgsIDE0ODc1NywgMTQ4NzY2LCAKLSAgICAxNDg3NzUsIDE0ODc4NCwgMTQ4NzkzLCAxNDg4MDIsIDAsIDE0ODgxMCwgMTQ4ODE5LCAxNDg4MjcsIDE0ODgzNSwgCi0gICAgMTQ4ODQ0LCAxNDg4NTMsIDE0ODg2MiwgMTQ4ODcxLCAxNDg4ODAsIDE0ODg4OSwgMTQ4ODk4LCAxNDg5MDcsIDE0ODkxNiwgCi0gICAgMTQ4OTI1LCAxNDg5MzQsIDAsIDE0ODk0MSwgMTQ4OTUwLCAxNDg5NTgsIDE0ODk2NiwgMTQ4OTc1LCAxNDg5ODQsIAotICAgIDE0ODk5MywgMTQ5MDAyLCAxNDkwMTEsIDE0OTAyMCwgMTQ5MDI5LCAxNDkwMzgsIDE0OTA0NywgMTQ5MDU2LCAxNDkwNjUsIAotICAgIDE0OTA3MiwgMTQ5MDc4LCAxNDkwODQsIDE0OTA5MCwgMTQ5MDk2LCAxNDkxMDIsIDE0OTEwOCwgMTQ5MTE0LCAxNDkxMjAsIAotICAgIDE0OTEyNiwgMTQ5MTMyLCAxNDkxMzgsIDE0OTE0NCwgMTQ5MTUwLCAxNDkxNTYsIDE0OTE2MiwgMTQ5MTY4LCAxNDkxNzQsIAotICAgIDE0OTE4MCwgMTQ5MTg2LCAxNDkxOTIsIDE0OTE5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5MjA0LCAKLSAgICAxNDkyMTEsIDE0OTIxNiwgMTQ5MjIwLCAxNDkyMjQsIDE0OTIyOCwgMTQ5MjMzLCAxNDkyMzgsIDE0OTI0MywgMTQ5MjQ4LCAKLSAgICAxNDkyNTMsIDE0OTI1OCwgMTQ5MjY1LCAwLCAwLCAwLCAxNDkyNzMsIDE0OTI3OCwgMTQ5Mjg0LCAxNDkyOTAsIDE0OTI5NiwgCi0gICAgMTQ5MzAxLCAxNDkzMDcsIDE0OTMxMywgMTQ5MzE5LCAxNDkzMjQsIDE0OTMzMCwgMTQ5MzM2LCAxNDkzNDEsIDE0OTM0NywgCi0gICAgMTQ5MzUzLCAxNDkzNTgsIDE0OTM2NCwgMTQ5MzcwLCAxNDkzNzUsIDE0OTM4MCwgMTQ5Mzg2LCAxNDkzOTEsIDE0OTM5NywgCi0gICAgMTQ5NDAzLCAxNDk0MDksIDE0OTQxNSwgMTQ5NDIxLCAxNDk0MzEsIDE0OTQzOCwgMTQ5NDQ0LCAxNDk0NDcsIDAsIAotICAgIDE0OTQ1MCwgMTQ5NDU1LCAxNDk0NjEsIDE0OTQ2NywgMTQ5NDczLCAxNDk0NzgsIDE0OTQ4NCwgMTQ5NDkwLCAxNDk0OTYsIAotICAgIDE0OTUwMSwgMTQ5NTA3LCAxNDk1MTMsIDE0OTUxOCwgMTQ5NTI0LCAxNDk1MzAsIDE0OTUzNSwgMTQ5NTQxLCAxNDk1NDcsIAotICAgIDE0OTU1MiwgMTQ5NTU3LCAxNDk1NjMsIDE0OTU2OCwgMTQ5NTc0LCAxNDk1ODAsIDE0OTU4NiwgMTQ5NTkyLCAxNDk1OTgsIAotICAgIDE0OTYwMSwgMTQ5NjA0LCAxNDk2MDcsIDE0OTYxMCwgMTQ5NjEzLCAxNDk2MTYsIDE0OTYyMiwgMTQ5NjI5LCAxNDk2MzYsIAotICAgIDE0OTY0MywgMTQ5NjQ5LCAxNDk2NTYsIDE0OTY2MywgMTQ5NjcwLCAxNDk2NzYsIDE0OTY4MywgMTQ5NjkwLCAxNDk2OTYsIAotICAgIDE0OTcwMywgMTQ5NzEwLCAxNDk3MTYsIDE0OTcyMywgMTQ5NzMwLCAxNDk3MzYsIDE0OTc0MiwgMTQ5NzQ5LCAxNDk3NTUsIAotICAgIDE0OTc2MiwgMTQ5NzY5LCAxNDk3NzYsIDE0OTc4MywgMTQ5NzkwLCAxNDk3OTUsIDAsIDAsIDAsIDAsIDE0OTgwMCwgCi0gICAgMTQ5ODA2LCAxNDk4MTMsIDE0OTgyMCwgMTQ5ODI3LCAxNDk4MzMsIDE0OTg0MCwgMTQ5ODQ3LCAxNDk4NTQsIDE0OTg2MCwgCi0gICAgMTQ5ODY3LCAxNDk4NzQsIDE0OTg4MCwgMTQ5ODg3LCAxNDk4OTQsIDE0OTkwMCwgMTQ5OTA3LCAxNDk5MTQsIDE0OTkyMCwgCi0gICAgMTQ5OTI2LCAxNDk5MzMsIDE0OTkzOSwgMTQ5OTQ2LCAxNDk5NTMsIDE0OTk2MCwgMTQ5OTY3LCAxNDk5NzQsIDE0OTk4MywgCi0gICAgMTQ5OTg3LCAxNDk5OTAsIDE0OTk5NCwgMTQ5OTk4LCAxNTAwMDIsIDE1MDAwNSwgMTUwMDA4LCAxNTAwMTEsIDE1MDAxNCwgCi0gICAgMTUwMDE3LCAxNTAwMjAsIDE1MDAyMywgMTUwMDI2LCAxNTAwMjksIDE1MDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMDM4LCAxNTAwNDUsIAotICAgIDE1MDA1MywgMTUwMDYxLCAxNTAwNjksIDE1MDA3NiwgMTUwMDg0LCAxNTAwOTIsIDE1MDEwMCwgMTUwMTA3LCAxNTAxMTUsIAotICAgIDE1MDEyMywgMTUwMTMwLCAxNTAxMzgsIDE1MDE0NiwgMTUwMTUzLCAxNTAxNjEsIDE1MDE2OSwgMTUwMTc2LCAxNTAxODMsIAotICAgIDE1MDE5MSwgMTUwMTk4LCAxNTAyMDYsIDE1MDIxNCwgMTUwMjIyLCAxNTAyMzAsIDE1MDIzOCwgMTUwMjQyLCAxNTAyNDYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDI1MCwgMTUwMjU2LCAxNTAyNjIsIDE1MDI2OCwgCi0gICAgMTUwMjcyLCAxNTAyNzgsIDE1MDI4NCwgMTUwMjkwLCAxNTAyOTYsIDE1MDMwMiwgMTUwMzA4LCAxNTAzMTQsIDE1MDMyMCwgCi0gICAgMTUwMzI2LCAxNTAzMzIsIDE1MDMzOCwgMTUwMzQ0LCAxNTAzNTAsIDE1MDM1NiwgMTUwMzYyLCAxNTAzNjgsIDE1MDM3NCwgCi0gICAgMTUwMzgwLCAxNTAzODYsIDE1MDM5MiwgMTUwMzk4LCAxNTA0MDQsIDE1MDQxMCwgMTUwNDE2LCAxNTA0MjIsIDE1MDQyOCwgCi0gICAgMTUwNDM0LCAxNTA0NDAsIDE1MDQ0NiwgMTUwNDUyLCAxNTA0NTgsIDE1MDQ2NCwgMTUwNDcwLCAxNTA0NzYsIDE1MDQ4MiwgCi0gICAgMTUwNDg4LCAxNTA0OTQsIDE1MDUwMCwgMCwgMCwgMCwgMCwgMCwgMTUwNTA2LCAxNTA1MTcsIDE1MDUyOCwgMTUwNTM5LCAKLSAgICAxNTA1NTAsIDE1MDU2MSwgMTUwNTcyLCAxNTA1ODMsIDE1MDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjA1LCAKLSAgICAxNTA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjU1OSwgMTUyNTYzLCAxNTI1NjcsIDE1MjU3MSwgCisgICAgMCwgMTUyNTc1LCAxNTI1NzksIDE1MjU4MywgMTUyNTg3LCAxNTI1OTEsIDE1MjU5NSwgMTUyNTk5LCAxNTI2MDMsIAorICAgIDE1MjYwNywgMTUyNjExLCAxNTI2MTUsIDE1MjYxOSwgMTUyNjIzLCAxNTI2MjcsIDE1MjYzMSwgMTUyNjM1LCAxNTI2MzksIAorICAgIDE1MjY0MywgMTUyNjQ3LCAxNTI2NTEsIDE1MjY1NSwgMTUyNjU5LCAxNTI2NjMsIDE1MjY2NywgMTUyNjczLCAxNTI2NzksIAorICAgIDE1MjY4NSwgMCwgMTUyNjkxLCAxNTI2OTYsIDAsIDE1MjcwMSwgMCwgMCwgMTUyNzA2LCAwLCAxNTI3MTEsIDE1MjcxNiwgCisgICAgMTUyNzIxLCAxNTI3MjYsIDE1MjczMSwgMTUyNzM2LCAxNTI3NDEsIDE1Mjc0NiwgMTUyNzUxLCAxNTI3NTYsIDAsIAorICAgIDE1Mjc2MSwgMTUyNzY2LCAxNTI3NzEsIDE1Mjc3NiwgMCwgMTUyNzgxLCAwLCAxNTI3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1Mjc5MSwgMCwgMCwgMCwgMCwgMTUyNzk3LCAwLCAxNTI4MDMsIDAsIDE1MjgwOSwgMCwgMTUyODE1LCAxNTI4MjEsIAorICAgIDE1MjgyNywgMCwgMTUyODMzLCAxNTI4MzksIDAsIDE1Mjg0NSwgMCwgMCwgMTUyODUxLCAwLCAxNTI4NTcsIDAsIDE1Mjg2MywgCisgICAgMCwgMTUyODY5LCAwLCAxNTI4NzcsIDAsIDE1Mjg4NSwgMTUyODkxLCAwLCAxNTI4OTcsIDAsIDAsIDE1MjkwMywgMTUyOTA5LCAKKyAgICAxNTI5MTUsIDE1MjkyMSwgMCwgMTUyOTI3LCAxNTI5MzMsIDE1MjkzOSwgMTUyOTQ1LCAxNTI5NTEsIDE1Mjk1NywgCisgICAgMTUyOTYzLCAwLCAxNTI5NjksIDE1Mjk3NSwgMTUyOTgxLCAxNTI5ODcsIDAsIDE1Mjk5MywgMTUyOTk5LCAxNTMwMDUsIAorICAgIDE1MzAxMSwgMCwgMTUzMDE5LCAwLCAxNTMwMjcsIDE1MzAzMywgMTUzMDM5LCAxNTMwNDUsIDE1MzA1MSwgMTUzMDU3LCAKKyAgICAxNTMwNjMsIDE1MzA2OSwgMTUzMDc1LCAxNTMwODEsIDAsIDE1MzA4NywgMTUzMDkzLCAxNTMwOTksIDE1MzEwNSwgCisgICAgMTUzMTExLCAxNTMxMTcsIDE1MzEyMywgMTUzMTI5LCAxNTMxMzUsIDE1MzE0MSwgMTUzMTQ3LCAxNTMxNTMsIDE1MzE1OSwgCisgICAgMTUzMTY1LCAxNTMxNzEsIDE1MzE3NywgMTUzMTgzLCAwLCAwLCAwLCAwLCAwLCAxNTMxODksIDE1MzE5NCwgMTUzMTk5LCAwLCAKKyAgICAxNTMyMDQsIDE1MzIwOSwgMTUzMjE0LCAxNTMyMTksIDE1MzIyNCwgMCwgMTUzMjI5LCAxNTMyMzQsIDE1MzIzOSwgCisgICAgMTUzMjQ0LCAxNTMyNDksIDE1MzI1NCwgMTUzMjU5LCAxNTMyNjQsIDE1MzI2OSwgMTUzMjc0LCAxNTMyNzksIDE1MzI4NCwgCisgICAgMTUzMjg5LCAxNTMyOTQsIDE1MzI5OSwgMTUzMzA0LCAxNTMzMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzMxNCwgMTUzMzI0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzMzIsIDE1MzMzOSwgMTUzMzQ2LCAxNTMzNTMsIAorICAgIDE1MzM1OSwgMTUzMzY2LCAxNTMzNzMsIDE1MzM3OSwgMTUzMzg2LCAxNTMzOTMsIDE1MzQwMCwgMTUzNDA4LCAxNTM0MTYsIAorICAgIDE1MzQyNCwgMTUzNDMyLCAxNTM0NDAsIDE1MzQ0OCwgMTUzNDU1LCAxNTM0NjIsIDE1MzQ2OSwgMTUzNDc3LCAxNTM0ODUsIAorICAgIDE1MzQ5MywgMTUzNTAxLCAxNTM1MDksIDE1MzUxNywgMTUzNTI0LCAxNTM1MzEsIDE1MzUzOCwgMTUzNTQ2LCAxNTM1NTQsIAorICAgIDE1MzU2MiwgMTUzNTcwLCAxNTM1NzgsIDE1MzU4NiwgMTUzNTkxLCAxNTM1OTYsIDE1MzYwMSwgMTUzNjA2LCAxNTM2MTEsIAorICAgIDE1MzYxNiwgMTUzNjIxLCAxNTM2MjYsIDE1MzYzMSwgMCwgMCwgMCwgMCwgMTUzNjM2LCAxNTM2NDIsIDE1MzY0NiwgCisgICAgMTUzNjUwLCAxNTM2NTQsIDE1MzY1OCwgMTUzNjYyLCAxNTM2NjYsIDE1MzY3MCwgMTUzNjc0LCAxNTM2NzgsIDE1MzY4MiwgCisgICAgMTUzNjg2LCAxNTM2OTAsIDE1MzY5NCwgMTUzNjk4LCAxNTM3MDIsIDE1MzcwNiwgMTUzNzEwLCAxNTM3MTQsIDE1MzcxOCwgCisgICAgMTUzNzIyLCAxNTM3MjYsIDE1MzczMCwgMTUzNzM0LCAxNTM3MzgsIDE1Mzc0MiwgMTUzNzQ2LCAxNTM3NTAsIDE1Mzc1NCwgCisgICAgMTUzNzU4LCAxNTM3NjIsIDE1Mzc2NiwgMTUzNzcwLCAxNTM3NzQsIDE1Mzc3OCwgMTUzNzgyLCAxNTM3ODYsIDE1Mzc5MCwgCisgICAgMTUzNzk0LCAxNTM3OTgsIDE1MzgwMiwgMTUzODA2LCAxNTM4MTAsIDE1MzgxNCwgMTUzODE4LCAxNTM4MjIsIDE1MzgyNiwgCisgICAgMTUzODMwLCAxNTM4MzQsIDE1MzgzOCwgMTUzODQzLCAxNTM4NDcsIDE1Mzg1MSwgMTUzODU1LCAxNTM4NTksIDE1Mzg2MywgCisgICAgMTUzODY3LCAxNTM4NzEsIDE1Mzg3NSwgMTUzODc5LCAxNTM4ODMsIDE1Mzg4NywgMTUzODkxLCAxNTM4OTUsIDE1Mzg5OSwgCisgICAgMTUzOTAzLCAxNTM5MDcsIDE1MzkxMSwgMTUzOTE1LCAxNTM5MTksIDE1MzkyMywgMTUzOTI3LCAxNTM5MzEsIDE1MzkzNSwgCisgICAgMTUzOTM5LCAxNTM5NDMsIDE1Mzk0NywgMTUzOTUxLCAxNTM5NTUsIDE1Mzk1OSwgMTUzOTYzLCAxNTM5NjcsIDE1Mzk3MSwgCisgICAgMTUzOTc1LCAxNTM5NzksIDE1Mzk4MywgMTUzOTg3LCAxNTM5OTEsIDE1Mzk5NSwgMTUzOTk5LCAxNTQwMDMsIDE1NDAwNywgCisgICAgMTU0MDExLCAxNTQwMTUsIDE1NDAxOSwgMTU0MDIzLCAxNTQwMjcsIDE1NDAzMSwgMTU0MDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTQwMzksIDE1NDA0NSwgMTU0MDU0LCAxNTQwNjIsIDE1NDA3MCwgMTU0MDc5LCAxNTQwODgsIAorICAgIDE1NDA5NywgMTU0MTA2LCAxNTQxMTUsIDE1NDEyNCwgMTU0MTMzLCAxNTQxNDIsIDE1NDE1MSwgMTU0MTYwLCAwLCAwLCAKKyAgICAxNTQxNjksIDE1NDE3OCwgMTU0MTg2LCAxNTQxOTQsIDE1NDIwMywgMTU0MjEyLCAxNTQyMjEsIDE1NDIzMCwgMTU0MjM5LCAKKyAgICAxNTQyNDgsIDE1NDI1NywgMTU0MjY2LCAxNTQyNzUsIDE1NDI4NCwgMTU0MjkzLCAwLCAxNTQzMDEsIDE1NDMxMCwgCisgICAgMTU0MzE4LCAxNTQzMjYsIDE1NDMzNSwgMTU0MzQ0LCAxNTQzNTMsIDE1NDM2MiwgMTU0MzcxLCAxNTQzODAsIDE1NDM4OSwgCisgICAgMTU0Mzk4LCAxNTQ0MDcsIDE1NDQxNiwgMTU0NDI1LCAwLCAxNTQ0MzIsIDE1NDQ0MSwgMTU0NDQ5LCAxNTQ0NTcsIAorICAgIDE1NDQ2NiwgMTU0NDc1LCAxNTQ0ODQsIDE1NDQ5MywgMTU0NTAyLCAxNTQ1MTEsIDE1NDUyMCwgMTU0NTI5LCAxNTQ1MzgsIAorICAgIDE1NDU0NywgMTU0NTU2LCAxNTQ1NjMsIDE1NDU2OSwgMTU0NTc1LCAxNTQ1ODEsIDE1NDU4NywgMTU0NTkzLCAxNTQ1OTksIAorICAgIDE1NDYwNSwgMTU0NjExLCAxNTQ2MTcsIDE1NDYyMywgMTU0NjI5LCAxNTQ2MzUsIDE1NDY0MSwgMTU0NjQ3LCAxNTQ2NTMsIAorICAgIDE1NDY1OSwgMTU0NjY1LCAxNTQ2NzEsIDE1NDY3NywgMTU0NjgzLCAxNTQ2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE1NDY5NSwgMTU0NzAyLCAxNTQ3MDcsIDE1NDcxMSwgMTU0NzE1LCAxNTQ3MTksIDE1NDcyNCwgMTU0NzI5LCAKKyAgICAxNTQ3MzQsIDE1NDczOSwgMTU0NzQ0LCAxNTQ3NDksIDE1NDc1NiwgMCwgMCwgMCwgMTU0NzY0LCAxNTQ3NjksIDE1NDc3NSwgCisgICAgMTU0NzgxLCAxNTQ3ODcsIDE1NDc5MiwgMTU0Nzk4LCAxNTQ4MDQsIDE1NDgxMCwgMTU0ODE1LCAxNTQ4MjEsIDE1NDgyNywgCisgICAgMTU0ODMyLCAxNTQ4MzgsIDE1NDg0NCwgMTU0ODQ5LCAxNTQ4NTUsIDE1NDg2MSwgMTU0ODY2LCAxNTQ4NzIsIDE1NDg3OCwgCisgICAgMTU0ODgzLCAxNTQ4ODksIDE1NDg5NSwgMTU0OTAxLCAxNTQ5MDcsIDE1NDkxMywgMTU0OTI0LCAxNTQ5MzEsIDE1NDkzNywgCisgICAgMTU0OTQwLCAwLCAxNTQ5NDMsIDE1NDk0OCwgMTU0OTU0LCAxNTQ5NjAsIDE1NDk2NiwgMTU0OTcxLCAxNTQ5NzcsIAorICAgIDE1NDk4MywgMTU0OTg5LCAxNTQ5OTQsIDE1NTAwMCwgMTU1MDA2LCAxNTUwMTEsIDE1NTAxNywgMTU1MDIzLCAxNTUwMjgsIAorICAgIDE1NTAzNCwgMTU1MDQwLCAxNTUwNDUsIDE1NTA1MSwgMTU1MDU3LCAxNTUwNjIsIDE1NTA2OCwgMTU1MDc0LCAxNTUwODAsIAorICAgIDE1NTA4NiwgMTU1MDkyLCAxNTUwOTUsIDE1NTA5OCwgMTU1MTAxLCAxNTUxMDQsIDE1NTEwNywgMTU1MTEwLCAxNTUxMTYsIAorICAgIDE1NTEyMywgMTU1MTMwLCAxNTUxMzcsIDE1NTE0MywgMTU1MTUwLCAxNTUxNTcsIDE1NTE2NCwgMTU1MTcwLCAxNTUxNzcsIAorICAgIDE1NTE4NCwgMTU1MTkwLCAxNTUxOTcsIDE1NTIwNCwgMTU1MjEwLCAxNTUyMTcsIDE1NTIyNCwgMTU1MjMwLCAxNTUyMzcsIAorICAgIDE1NTI0NCwgMTU1MjUwLCAxNTUyNTcsIDE1NTI2NCwgMTU1MjcxLCAxNTUyNzgsIDE1NTI4NSwgMTU1MjkwLCAwLCAwLCAwLCAKKyAgICAwLCAxNTUyOTUsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTUsIDE1NTMyMiwgMTU1MzI4LCAxNTUzMzUsIDE1NTM0MiwgCisgICAgMTU1MzQ5LCAxNTUzNTUsIDE1NTM2MiwgMTU1MzY5LCAxNTUzNzUsIDE1NTM4MiwgMTU1Mzg5LCAxNTUzOTUsIDE1NTQwMiwgCisgICAgMTU1NDA5LCAxNTU0MTUsIDE1NTQyMiwgMTU1NDI5LCAxNTU0MzUsIDE1NTQ0MiwgMTU1NDQ5LCAxNTU0NTYsIDE1NTQ2MywgCisgICAgMTU1NDcwLCAxNTU0NzksIDE1NTQ4MywgMTU1NDg2LCAxNTU0OTAsIDE1NTQ5NCwgMTU1NDk4LCAxNTU1MDEsIDE1NTUwNCwgCisgICAgMTU1NTA3LCAxNTU1MTAsIDE1NTUxMywgMTU1NTE2LCAxNTU1MTksIDE1NTUyMiwgMTU1NTI1LCAxNTU1MzEsIDE1NTUzNCwgCisgICAgMTU1NTM4LCAxNTU1NDMsIDE1NTU0NywgMTU1NTUyLCAxNTU1NTcsIDE1NTU2MywgMTU1NTY5LCAxNTU1NzUsIDE1NTU4MCwgCisgICAgMTU1NTg4LCAxNTU1OTQsIDE1NTU5NywgMTU1NjAwLCAxNTU2MDMsIDE1NTYwNiwgMTU1NjA5LCAxNTU2MTIsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTYxNSwgMTU1NjIyLCAxNTU2MzAsIDE1NTYzOCwgMTU1NjQ2LCAxNTU2NTMsIDE1NTY2MSwgCisgICAgMTU1NjY5LCAxNTU2NzcsIDE1NTY4NCwgMTU1NjkyLCAxNTU3MDAsIDE1NTcwNywgMTU1NzE1LCAxNTU3MjMsIDE1NTczMCwgCisgICAgMTU1NzM4LCAxNTU3NDYsIDE1NTc1MywgMTU1NzYxLCAxNTU3NjksIDE1NTc3NiwgMTU1Nzg0LCAxNTU3OTIsIDE1NTgwMCwgCisgICAgMTU1ODA4LCAxNTU4MTYsIDE1NTgyMCwgMTU1ODI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTU4MjgsIDE1NTgzNCwgMTU1ODQwLCAxNTU4NDYsIDE1NTg1MCwgMTU1ODU2LCAxNTU4NjIsIDE1NTg2OCwgMTU1ODc0LCAKKyAgICAxNTU4ODAsIDE1NTg4NiwgMTU1ODkyLCAxNTU4OTgsIDE1NTkwNCwgMTU1OTEwLCAxNTU5MTYsIDE1NTkyMiwgMTU1OTI4LCAKKyAgICAxNTU5MzQsIDE1NTk0MCwgMTU1OTQ2LCAxNTU5NTIsIDE1NTk1OCwgMTU1OTY0LCAxNTU5NzAsIDE1NTk3NiwgMTU1OTgyLCAKKyAgICAxNTU5ODgsIDE1NTk5NCwgMTU2MDAwLCAxNTYwMDYsIDE1NjAxMiwgMTU2MDE4LCAxNTYwMjQsIDE1NjAzMCwgMTU2MDM2LCAKKyAgICAxNTYwNDIsIDE1NjA0OCwgMTU2MDU0LCAxNTYwNjAsIDE1NjA2NiwgMTU2MDcyLCAxNTYwNzgsIDE1NjA4NCwgMCwgMCwgMCwgCisgICAgMCwgMTU2MDkwLCAxNTYxMDEsIDE1NjExMiwgMTU2MTIzLCAxNTYxMzQsIDE1NjE0NSwgMTU2MTU2LCAxNTYxNjcsIAorICAgIDE1NjE3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2MTg5LCAxNTYxOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYxMywgMTUwNjE1LCAxNTA2MTcsIDE1MDYyMSwgMTUwNjI2LCAxNTA2MzEsIAotICAgIDE1MDYzMywgMTUwNjM5LCAxNTA2NDQsIDE1MDY0NiwgMTUwNjUyLCAxNTA2NTYsIDE1MDY1OCwgMTUwNjYyLCAxNTA2NjgsIAotICAgIDE1MDY3NCwgMTUwNjgwLCAxNTA2ODUsIDE1MDY5MCwgMTUwNjk3LCAxNTA3MDQsIDE1MDcxMSwgMTUwNzE2LCAxNTA3MjMsIAotICAgIDE1MDczMCwgMTUwNzM3LCAxNTA3NDEsIDE1MDc0OCwgMTUwNzU3LCAxNTA3NjYsIDE1MDc3MywgMTUwNzc4LCAxNTA3ODIsIAotICAgIDE1MDc4NiwgMTUwNzg4LCAxNTA3OTEsIDE1MDc5NCwgMTUwODAxLCAxNTA4MDgsIDE1MDgxOCwgMTUwODIzLCAxNTA4MjgsIAotICAgIDE1MDgzMywgMTUwODM4LCAxNTA4NDAsIDE1MDg0NiwgMTUwODUwLCAxNTA4NTIsIDE1MDg1NCwgMTUwODU2LCAxNTA4NTgsIAotICAgIDE1MDg2MiwgMTUwODY2LCAxNTA4NzAsIDE1MDg3MiwgMTUwODc2LCAxNTA4NzgsIDE1MDg4MiwgMTUwODg0LCAxNTA4ODYsIAotICAgIDE1MDg4OCwgMTUwODkwLCAxNTA4OTUsIDE1MDkwMCwgMTUwOTAyLCAxNTA5MDgsIDE1MDkxMiwgMTUwOTE2LCAxNTA5MjQsIAotICAgIDE1MDkyNiwgMTUwOTI4LCAxNTA5MzAsIDE1MDkzMiwgMTUwOTM0LCAxNTA5MzYsIDE1MDkzOCwgMTUwOTQwLCAxNTA5NDIsIAotICAgIDE1MDk0NCwgMTUwOTQ4LCAxNTA5NTIsIDE1MDk1NCwgMTUwOTU2LCAxNTA5NTgsIDE1MDk2MCwgMTUwOTYyLCAxNTA5NjcsIAotICAgIDE1MDk3MywgMTUwOTc3LCAxNTA5ODEsIDE1MDk4NSwgMTUwOTg5LCAxNTA5OTQsIDE1MDk5OCwgMTUxMDAwLCAxNTEwMDIsIAotICAgIDE1MTAwNiwgMTUxMDEyLCAxNTEwMTQsIDE1MTAxNiwgMTUxMDE4LCAxNTEwMjIsIDE1MTAzMSwgMTUxMDM3LCAxNTEwNDEsIAotICAgIDE1MTA0NSwgMTUxMDQ3LCAxNTEwNDksIDE1MTA1MiwgMTUxMDU0LCAxNTEwNTYsIDE1MTA1OCwgMTUxMDYyLCAxNTEwNjQsIAotICAgIDE1MTA2OCwgMTUxMDczLCAxNTEwNzUsIDE1MTA4MCwgMTUxMDg2LCAxNTEwOTMsIDE1MTA5NywgMTUxMTAxLCAxNTExMDUsIAotICAgIDE1MTEwOSwgMTUxMTE1LCAxNTExMTksIDE1MTEyNywgMTUxMTM0LCAxNTExMzYsIDE1MTEzOCwgMTUxMTQyLCAxNTExNDYsIAotICAgIDE1MTE0OCwgMTUxMTUyLCAxNTExNTYsIDE1MTE1OCwgMTUxMTYyLCAxNTExNjQsIDE1MTE2OCwgMTUxMTcyLCAxNTExNzYsIAotICAgIDE1MTE4MCwgMTUxMTg0LCAxNTExODgsIDE1MTE5MiwgMTUxMTk2LCAxNTEyMDIsIDE1MTIwNiwgMTUxMjEwLCAxNTEyMjEsIAotICAgIDE1MTIyNiwgMTUxMjMwLCAxNTEyMzQsIDE1MTI0MCwgMTUxMjQ0LCAxNTEyNDgsIDE1MTI1MiwgMTUxMjU5LCAxNTEyNjYsIAotICAgIDE1MTI3MCwgMTUxMjc0LCAxNTEyNzgsIDE1MTI4MiwgMTUxMjg2LCAxNTEyOTMsIDE1MTI5NSwgMTUxMjk5LCAxNTEzMDEsIAotICAgIDE1MTMwMywgMTUxMzA3LCAxNTEzMTEsIDE1MTMxNSwgMTUxMzE3LCAxNTEzMjEsIDE1MTMyNSwgMTUxMzI5LCAxNTEzMzMsIAotICAgIDE1MTMzNywgMTUxMzM5LCAxNTEzNDMsIDE1MTM0NSwgMTUxMzUxLCAxNTEzNTQsIDE1MTM1OSwgMTUxMzYxLCAxNTEzNjMsIAotICAgIDE1MTM2NiwgMTUxMzY4LCAxNTEzNzAsIDE1MTM3MywgMTUxMzgwLCAxNTEzODcsIDE1MTM5NCwgMTUxMzk5LCAxNTE0MDMsIAotICAgIDE1MTQwNSwgMTUxNDA3LCAxNTE0MDksIDE1MTQxMywgMTUxNDE1LCAxNTE0MTksIDE1MTQyMywgMTUxNDI3LCAxNTE0MjksIAotICAgIDE1MTQzMywgMTUxNDM1LCAxNTE0MzksIDE1MTQ0MywgMTUxNDUwLCAxNTE0NTIsIDE1MTQ2MSwgMTUxNDcwLCAxNTE0NzksIAotICAgIDE1MTQ4NSwgMTUxNDg3LCAxNTE0OTIsIDE1MTQ5NiwgMTUxNTAwLCAxNTE1MDIsIDE1MTUwOCwgMTUxNTEyLCAxNTE1MTQsIAotICAgIDE1MTUxOCwgMTUxNTIyLCAxNTE1MjQsIDE1MTUyOCwgMTUxNTMzLCAxNTE1MzcsIDE1MTU0MywgMTUxNTQ5LCAxNTE1NTEsIAotICAgIDE1MTU1MywgMTUxNTU5LCAxNTE1NjEsIDE1MTU2NSwgMTUxNTY5LCAxNTE1NzEsIDE1MTU3NSwgMTUxNTc3LCAxNTE1ODEsIAotICAgIDE1MTU4NSwgMTUxNTg5LCAxNTE1OTIsIDE1MTU5NSwgMTUxNjAwLCAxNTE2MDUsIDE1MTYwNywgMTUxNjEwLCAxNTE2MTIsIAotICAgIDE1MTYxOSwgMTUxNjIzLCAxNTE2MjUsIDE1MTYzMiwgMTUxNjM5LCAxNTE2NDYsIDE1MTY1MywgMTUxNjYwLCAxNTE2NjIsIAotICAgIDE1MTY2NCwgMTUxNjY2LCAxNTE2NzAsIDE1MTY3MiwgMTUxNjc0LCAxNTE2NzYsIDE1MTY3OCwgMTUxNjgwLCAxNTE2ODIsIAotICAgIDE1MTY4NCwgMTUxNjg2LCAxNTE2ODgsIDE1MTY5MCwgMTUxNjkyLCAxNTE2OTQsIDE1MTY5NiwgMTUxNjk4LCAxNTE3MDAsIAotICAgIDE1MTcwMiwgMTUxNzA0LCAxNTE3MDYsIDE1MTcwOCwgMTUxNzEwLCAxNTE3MTIsIDE1MTcxNCwgMTUxNzE4LCAxNTE3MjAsIAotICAgIDE1MTcyMiwgMTUxNzI0LCAxNTE3MjgsIDE1MTczMCwgMTUxNzM0LCAxNTE3MzYsIDE1MTczOCwgMTUxNzQyLCAxNTE3NDYsIAotICAgIDE1MTc1MiwgMTUxNzU0LCAxNTE3NTYsIDE1MTc1OCwgMTUxNzYwLCAxNTE3NjQsIDE1MTc2OCwgMTUxNzcwLCAxNTE3NzQsIAotICAgIDE1MTc3OCwgMTUxNzgyLCAxNTE3ODYsIDE1MTc5MCwgMTUxNzk0LCAxNTE3OTgsIDE1MTgwMiwgMTUxODA2LCAxNTE4MTAsIAotICAgIDE1MTgxNCwgMTUxODE4LCAxNTE4MjIsIDE1MTgyNiwgMTUxODMwLCAxNTE4MzQsIDE1MTgzOCwgMTUxODQyLCAxNTE4NDQsIAotICAgIDE1MTg0NiwgMTUxODQ4LCAxNTE4NTAsIDE1MTg1MiwgMTUxODU0LCAxNTE4NTYsIDE1MTg2NCwgMTUxODcyLCAxNTE4ODAsIAotICAgIDE1MTg4OCwgMTUxODkzLCAxNTE4OTgsIDE1MTkwMywgMTUxOTA3LCAxNTE5MTEsIDE1MTkxNiwgMTUxOTIwLCAxNTE5MjIsIAotICAgIDE1MTkyNiwgMTUxOTI4LCAxNTE5MzAsIDE1MTkzMiwgMTUxOTM0LCAxNTE5MzYsIDE1MTkzOCwgMTUxOTQwLCAxNTE5NDQsIAotICAgIDE1MTk0NiwgMTUxOTQ4LCAxNTE5NTAsIDE1MTk1NCwgMTUxOTU4LCAxNTE5NjIsIDE1MTk2NiwgMTUxOTcwLCAxNTE5NzIsIAotICAgIDE1MTk3OCwgMTUxOTg0LCAxNTE5ODYsIDE1MTk4OCwgMTUxOTkwLCAxNTE5OTIsIDE1MTk5NCwgMTUyMDAzLCAxNTIwMTAsIAotICAgIDE1MjAxNywgMTUyMDIxLCAxNTIwMjgsIDE1MjAzMywgMTUyMDQwLCAxNTIwNDksIDE1MjA1NCwgMTUyMDU4LCAxNTIwNjIsIAotICAgIDE1MjA2NCwgMTUyMDY4LCAxNTIwNzAsIDE1MjA3NCwgMTUyMDc4LCAxNTIwODAsIDE1MjA4NCwgMTUyMDg4LCAxNTIwOTIsIAotICAgIDE1MjA5NCwgMTUyMDk2LCAxNTIxMDIsIDE1MjEwNCwgMTUyMTA2LCAxNTIxMDgsIDE1MjExMiwgMTUyMTE2LCAxNTIxMTgsIAotICAgIDE1MjEyMiwgMTUyMTI0LCAxNTIxMjYsIDE1MjEyOSwgMTUyMTMzLCAxNTIxMzUsIDE1MjEzOSwgMTUyMTQxLCAxNTIxNDMsIAotICAgIDE1MjE0OCwgMTUyMTUwLCAxNTIxNTQsIDE1MjE1OCwgMTUyMTYxLCAxNTIxNjUsIDE1MjE2OSwgMTUyMTczLCAxNTIxNzcsIAotICAgIDE1MjE4MSwgMTUyMTg1LCAxNTIxODksIDE1MjE5NCwgMTUyMTk4LCAxNTIyMDIsIDE1MjIxMSwgMTUyMjE2LCAxNTIyMTksIAotICAgIDE1MjIyMSwgMTUyMjI0LCAxNTIyMjcsIDE1MjIzMiwgMTUyMjM0LCAxNTIyMzcsIDE1MjI0MiwgMTUyMjQ2LCAxNTIyNDksIAotICAgIDE1MjI1MywgMTUyMjU3LCAxNTIyNjAsIDE1MjI2NSwgMTUyMjY5LCAxNTIyNzMsIDE1MjI3NywgMTUyMjgxLCAxNTIyODcsIAotICAgIDE1MjI5MywgMTUyMjk5LCAxNTIzMDUsIDE1MjMxMCwgMTUyMzIwLCAxNTIzMjIsIDE1MjMyNiwgMTUyMzI4LCAxNTIzMzAsIAotICAgIDE1MjMzNCwgMTUyMzM4LCAxNTIzNDAsIDE1MjM0NCwgMTUyMzQ5LCAxNTIzNTQsIDE1MjM2MCwgMTUyMzYyLCAxNTIzNjYsIAotICAgIDE1MjM3MCwgMTUyMzc2LCAxNTIzODIsIDE1MjM4NiwgMTUyMzg4LCAxNTIzOTAsIDE1MjM5NCwgMTUyMzk2LCAxNTI0MDAsIAotICAgIDE1MjQwNCwgMTUyNDA4LCAxNTI0MTAsIDE1MjQxMiwgMTUyNDE5LCAxNTI0MjMsIDE1MjQyNiwgMTUyNDMwLCAxNTI0MzQsIAotICAgIDE1MjQzOCwgMTUyNDQwLCAxNTI0NDQsIDE1MjQ0NiwgMTUyNDQ4LCAxNTI0NTIsIDE1MjQ1NCwgMTUyNDU4LCAxNTI0NjIsIAotICAgIDE1MjQ2OCwgMTUyNDcyLCAxNTI0NzYsIDE1MjQ4MCwgMTUyNDgyLCAxNTI0ODUsIDE1MjQ4OSwgMTUyNDk1LCAxNTI1MDQsIAotICAgIDE1MjUxMywgMTUyNTIxLCAxNTI1MjksIDE1MjUzMSwgMTUyNTM1LCAxNTI1MzcsIDE1MjU0MSwgMTUyNTUyLCAxNTI1NTYsIAotICAgIDE1MjU2MiwgMTUyNTY4LCAxNTI1NzMsIDE1MjU3NSwgMTUyNTgwLCAxNTI1ODQsIDE1MjU4NiwgMTUyNTg4LCAxNTI1OTAsIAotICAgIDE1MjU5NCwgMTUyNTk4LCAxNTI2MDIsIDE1MjYwNywgMTUyNjE3LCAxNTI2MzIsIDE1MjY0MiwgMTUyNjUyLCAxNTI2NTYsIAotICAgIDE1MjY2MCwgMTUyNjY2LCAxNTI2NjgsIDE1MjY3NiwgMTUyNjg0LCAxNTI2ODYsIDE1MjY5MCwgMTUyNjk2LCAxNTI3MDIsIAotICAgIDE1MjcwOSwgMTUyNzE2LCAxNTI3MTgsIDE1MjcyMCwgMTUyNzIzLCAxNTI3MjUsIDE1MjczMSwgMTUyNzMzLCAxNTI3MzYsIAotICAgIDE1Mjc0MCwgMTUyNzQ2LCAxNTI3NTIsIDE1Mjc2MywgMTUyNzY5LCAxNTI3NzUsIDE1Mjc4MywgMTUyNzg3LCAxNTI3OTUsIAotICAgIDE1MjgwMywgMTUyODA5LCAxNTI4MTUsIDE1MjgyMiwgMTUyODI0LCAxNTI4MjgsIDE1MjgzMCwgMTUyODMyLCAxNTI4MzcsIAotICAgIDE1MjgzOSwgMTUyODQxLCAxNTI4NDMsIDE1Mjg0NSwgMTUyODQ5LCAxNTI4NTksIDE1Mjg2NSwgMTUyODY5LCAxNTI4NzMsIAotICAgIDE1Mjg3NywgMTUyODgzLCAxNTI4ODksIDE1Mjg5NSwgMTUyOTAxLCAxNTI5MDYsIDE1MjkxMSwgMTUyOTE3LCAxNTI5MjMsIAotICAgIDE1MjkzMCwgMTUyOTM3LCAxNTI5NDUsIDE1Mjk1MywgMTUyOTU4LCAxNTI5NjYsIDE1Mjk3MCwgMTUyOTc5LCAxNTI5ODgsIAotICAgIDE1Mjk5NCwgMTUyOTk4LCAxNTMwMDIsIDE1MzAwNiwgMTUzMDA5LCAxNTMwMTQsIDE1MzAxNiwgMTUzMDE4LCAxNTMwMjAsIAotICAgIDE1MzAyNywgMTUzMDMyLCAxNTMwMzksIDE1MzA0NiwgMTUzMDUzLCAxNTMwNjEsIDE1MzA2OSwgMTUzMDc3LCAxNTMwODUsIAotICAgIDE1MzA5MywgMTUzMTAxLCAxNTMxMDksIDE1MzExNywgMTUzMTI1LCAxNTMxMzEsIDE1MzEzNywgMTUzMTQzLCAxNTMxNDksIAotICAgIDE1MzE1NSwgMTUzMTYxLCAxNTMxNjcsIDE1MzE3MywgMTUzMTc5LCAxNTMxODUsIDE1MzE5MSwgMTUzMTk3LCAxNTMyMDAsIAotICAgIDE1MzIwOSwgMTUzMjE4LCAxNTMyMjAsIDE1MzIyNywgMTUzMjMxLCAxNTMyMzMsIDE1MzIzNSwgMTUzMjM5LCAxNTMyNDUsIAotICAgIDE1MzI0OSwgMTUzMjUxLCAxNTMyNjEsIDE1MzI2NywgMTUzMjcxLCAxNTMyNzMsIDE1MzI3NywgMCwgMTUzMjc5LCAKLSAgICAxNTMyODYsIDE1MzI5MywgMTUzMzAwLCAxNTMzMDUsIDE1MzMxMCwgMTUzMzE5LCAxNTMzMjUsIDE1MzMzMCwgMTUzMzM0LCAKLSAgICAxNTMzMzksIDE1MzM0MywgMTUzMzUwLCAxNTMzNTQsIDE1MzM1NywgMTUzMzYyLCAxNTMzNjksIDE1MzM3NiwgMTUzMzgxLCAKLSAgICAxNTMzODYsIDE1MzM5MSwgMTUzMzk4LCAxNTM0MDcsIDE1MzQxOCwgMTUzNDI0LCAxNTM0MzAsIDE1MzQzNiwgMTUzNDQ2LCAKLSAgICAxNTM0NjEsIDE1MzQ3MCwgMTUzNDc4LCAxNTM0ODYsIDE1MzQ5NCwgMTUzNTAyLCAxNTM1MTAsIDE1MzUxOCwgMTUzNTI2LCAKLSAgICAxNTM1MzQsIDE1MzU0MiwgMTUzNTUwLCAxNTM1NTgsIDAsIDE1MzU2NiwgMTUzNTcwLCAxNTM1NzUsIDE1MzU4MCwgCi0gICAgMTUzNTgyLCAxNTM1ODYsIDE1MzU5NSwgMTUzNjA0LCAxNTM2MTIsIDE1MzYxNiwgMTUzNjIwLCAxNTM2MjUsIDE1MzYzMCwgCi0gICAgMTUzNjM1LCAxNTM2MzcsIDE1MzY0MiwgMTUzNjQ2LCAxNTM2NDgsIDE1MzY1MiwgMTUzNjU2LCAxNTM2NjIsIDE1MzY2NywgCi0gICAgMTUzNjc1LCAxNTM2ODAsIDE1MzY4NSwgMTUzNjkwLCAxNTM2OTcsIDE1MzcwMCwgMTUzNzAyLCAxNTM3MDUsIDE1MzcxMCwgCi0gICAgMTUzNzE2LCAxNTM3MjAsIDE1MzcyNCwgMTUzNzMwLCAxNTM3MzYsIDE1MzczOCwgMTUzNzQyLCAxNTM3NDYsIDE1Mzc1MCwgCi0gICAgMTUzNzU0LCAxNTM3NTgsIDE1Mzc2MCwgMTUzNzYyLCAxNTM3NjQsIDE1Mzc2NiwgMTUzNzcyLCAxNTM3NzgsIDE1Mzc4MiwgCi0gICAgMTUzNzg0LCAxNTM3ODYsIDE1Mzc4OCwgMTUzNzk3LCAxNTM4MDEsIDE1MzgwOCwgMTUzODE1LCAxNTM4MTcsIDE1MzgyMCwgCi0gICAgMTUzODI0LCAxNTM4MzAsIDE1MzgzNCwgMTUzODM4LCAxNTM4NDAsIDE1Mzg0OCwgMTUzODUyLCAxNTM4NTYsIDE1Mzg2MSwgCi0gICAgMTUzODY2LCAxNTM4NzEsIDE1Mzg3NiwgMTUzODgxLCAxNTM4ODYsIDE1Mzg5MSwgMTUzODk2LCAxNTM5MDEsIDE1MzkwNiwgCi0gICAgMTUzOTEwLCAxNTM5MTYsIDE1MzkyMCwgMTUzOTI2LCAxNTM5MzEsIDE1MzkzOCwgMTUzOTQ0LCAxNTM5NTIsIDE1Mzk1NiwgCi0gICAgMTUzOTYzLCAxNTM5NjcsIDE1Mzk3MSwgMTUzOTc1LCAxNTM5ODAsIDE1Mzk4NSwgMTUzOTg3LCAxNTM5OTEsIDE1NDAwMCwgCi0gICAgMTU0MDA4LCAxNTQwMTYsIDE1NDAyOSwgMTU0MDQyLCAxNTQwNTUsIDE1NDA2MiwgMTU0MDY5LCAxNTQwNzMsIDE1NDA4MiwgCi0gICAgMTU0MDkwLCAxNTQwOTQsIDE1NDEwMywgMTU0MTEwLCAxNTQxMTQsIDE1NDExOCwgMTU0MTIyLCAxNTQxMjYsIDE1NDEzMywgCi0gICAgMTU0MTM3LCAxNTQxNDEsIDE1NDE0NSwgMTU0MTQ5LCAxNTQxNTYsIDE1NDE2NSwgMTU0MTc0LCAxNTQxODEsIDE1NDE5MywgCi0gICAgMTU0MjA1LCAxNTQyMDksIDE1NDIxMywgMTU0MjE3LCAxNTQyMjEsIDE1NDIyNSwgMTU0MjI5LCAxNTQyMzcsIDE1NDI0NSwgCi0gICAgMTU0MjUzLCAxNTQyNTcsIDE1NDI2MSwgMTU0MjY1LCAxNTQyNjksIDE1NDI3MywgMTU0Mjc3LCAxNTQyODMsIDE1NDI4OSwgCi0gICAgMTU0MjkzLCAxNTQzMDQsIDE1NDMxMiwgMTU0MzE2LCAxNTQzMjAsIDE1NDMyNCwgMTU0MzI4LCAxNTQzMzQsIDE1NDM0MSwgCi0gICAgMTU0MzUyLCAxNTQzNjIsIDE1NDM3MiwgMTU0MzgzLCAxNTQzOTIsIDE1NDQwMywgMTU0NDA5LCAxNTQ0MTUsIDE1NDQyMSwgCi0gICAgMTU0NDI3LCAxNTQ0MzMsIDE1NDQzNywgMTU0NDQ0LCAxNTQ0NTMsIDE1NDQ2MCwgMTU0NDY2LCAxNTQ0NzAsIDE1NDQ3NCwgCi0gICAgMTU0NDc4LCAxNTQ0ODcsIDE1NDQ5OSwgMTU0NTAzLCAxNTQ1MTAsIDE1NDUxNywgMTU0NTI0LCAxNTQ1MzIsIDE1NDUzOSwgCi0gICAgMTU0NTQ3LCAxNTQ1NTYsIDE1NDU2NiwgMTU0NTc1LCAxNTQ1ODUsIDE1NDU5NCwgMTU0NjA0LCAxNTQ2MTMsIDE1NDYyMywgCi0gICAgMTU0NjMzLCAxNTQ2NDQsIDE1NDY1NCwgMTU0NjY1LCAxNTQ2NzIsIDE1NDY4MCwgMTU0Njg3LCAxNTQ2OTUsIDE1NDcwMywgCi0gICAgMTU0NzEyLCAxNTQ3MjAsIDE1NDcyOSwgMTU0NzM2LCAxNTQ3NDgsIDE1NDc1NSwgMTU0NzY3LCAxNTQ3NzAsIDE1NDc3MywgCi0gICAgMTU0Nzc2LCAxNTQ3NzksIDE1NDc4NSwgMTU0NzkyLCAxNTQ3OTgsIDE1NDgwNSwgMTU0ODEwLCAxNTQ4MTYsIDE1NDgyOCwgCi0gICAgMTU0ODM4LCAxNTQ4NDksIDE1NDg1NCwgMTU0ODU5LCAxNTQ4NjUsIDE1NDg3MCwgMTU0ODc3LCAxNTQ4ODEsIDE1NDg4NywgCi0gICAgMTU0ODg5LCAxNTQ4OTEsIDE1NDg5NSwgMTU0ODk5LCAxNTQ5MDMsIDE1NDkxMiwgMTU0OTE0LCAxNTQ5MTYsIDE1NDkxOSwgCi0gICAgMTU0OTIxLCAxNTQ5MjMsIDE1NDkyNywgMTU0OTI5LCAxNTQ5MzMsIDE1NDkzNSwgMTU0OTM5LCAxNTQ5NDEsIDE1NDk0MywgCi0gICAgMTU0OTQ3LCAxNTQ5NTEsIDE1NDk1NywgMTU0OTU5LCAxNTQ5NjMsIDE1NDk2NSwgMTU0OTY5LCAxNTQ5NzMsIDE1NDk3NywgCi0gICAgMTU0OTgxLCAxNTQ5ODMsIDE1NDk4NSwgMTU0OTg5LCAxNTQ5OTMsIDE1NDk5NywgMTU1MDAxLCAxNTUwMDMsIDE1NTAwNSwgCi0gICAgMTU1MDA3LCAxNTUwMTMsIDE1NTAxOCwgMTU1MDIxLCAxNTUwMjksIDE1NTAzNywgMTU1MDM5LCAxNTUwNDQsIDE1NTA0NywgCi0gICAgMTU1MDUyLCAxNTUwNjMsIDE1NTA3MCwgMTU1MDc1LCAxNTUwODAsIDE1NTA4MiwgMTU1MDg2LCAxNTUwODgsIDE1NTA5MiwgCi0gICAgMTU1MDk0LCAxNTUwOTgsIDE1NTEwMiwgMTU1MTA1LCAxNTUxMDgsIDE1NTExMCwgMTU1MTEzLCAxNTUxMTUsIDE1NTExOSwgCi0gICAgMTU1MTIxLCAxNTUxMjMsIDE1NTEyNSwgMTU1MTI5LCAxNTUxMzEsIDE1NTEzNSwgMTU1MTM4LCAxNTUxNDUsIDE1NTE0OCwgCi0gICAgMTU1MTUzLCAxNTUxNTYsIDE1NTE1OSwgMTU1MTY0LCAxNTUxNjgsIDE1NTE3MiwgMTU1MTc2LCAxNTUxNzgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTE4MywgMTU1MTg4LCAxNTUxOTAsIDE1NTE5NCwgCi0gICAgMTU1MTk2LCAxNTUyMDAsIDE1NTIwNCwgMTU1MjEwLCAxNTUyMTQsIDE1NTIxOSwgMTU1MjIyLCAxNTUyMjYsIDE1NTIzMCwgCi0gICAgMCwgMCwgMCwgMTU1MjM0LCAxNTUyMzYsIDE1NTI0MiwgMTU1MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNTUyNTAsIDE1NTI1NSwgMTU1MjYwLCAxNTUyNjUsIDE1NTI3MCwgMTU1Mjc1LCAxNTUyODAsIDE1NTI4NywgCi0gICAgMTU1Mjk0LCAxNTUzMDEsIDE1NTMwOCwgMTU1MzEzLCAxNTUzMTgsIDE1NTMyMywgMTU1MzI4LCAxNTUzMzUsIDE1NTM0MSwgCi0gICAgMTU1MzQ4LCAxNTUzNTUsIDE1NTM2MiwgMTU1MzY3LCAxNTUzNzIsIDE1NTM3NywgMTU1MzgyLCAxNTUzODcsIDE1NTM5NCwgCi0gICAgMTU1NDAxLCAxNTU0MDYsIDE1NTQxMSwgMTU1NDE4LCAxNTU0MjUsIDE1NTQzMywgMTU1NDQxLCAxNTU0NDgsIDE1NTQ1NSwgCi0gICAgMTU1NDYzLCAxNTU0NzEsIDE1NTQ3OSwgMTU1NDg2LCAxNTU0OTYsIDE1NTUwNywgMTU1NTEyLCAxNTU1MTksIDE1NTUyNiwgCi0gICAgMTU1NTMzLCAxNTU1NDEsIDE1NTU0OSwgMTU1NTYwLCAxNTU1NjgsIDE1NTU3NiwgMTU1NTg0LCAxNTU1ODksIDE1NTU5NCwgCi0gICAgMTU1NTk5LCAxNTU2MDQsIDE1NTYwOSwgMTU1NjE0LCAxNTU2MTksIDE1NTYyNCwgMTU1NjI5LCAxNTU2MzQsIDE1NTYzOSwgCi0gICAgMTU1NjQ0LCAxNTU2NTEsIDE1NTY1NiwgMTU1NjYxLCAxNTU2NjgsIDE1NTY3MywgMTU1Njc4LCAxNTU2ODMsIDE1NTY4OCwgCi0gICAgMTU1NjkzLCAxNTU2OTgsIDE1NTcwMywgMTU1NzA4LCAxNTU3MTMsIDE1NTcxOCwgMTU1NzIzLCAxNTU3MjgsIDE1NTczNSwgCi0gICAgMTU1NzQzLCAxNTU3NDgsIDE1NTc1MywgMTU1NzYwLCAxNTU3NjUsIDE1NTc3MCwgMTU1Nzc1LCAxNTU3ODIsIDE1NTc4NywgCi0gICAgMTU1Nzk0LCAxNTU3OTksIDE1NTgwNiwgMTU1ODExLCAxNTU4MjAsIDE1NTgyOSwgMTU1ODM0LCAxNTU4MzksIDE1NTg0NCwgCi0gICAgMTU1ODQ5LCAxNTU4NTQsIDE1NTg1OSwgMTU1ODY0LCAxNTU4NjksIDE1NTg3NCwgMTU1ODc5LCAxNTU4ODQsIDE1NTg4OSwgCi0gICAgMTU1ODk0LCAxNTU5MDIsIDE1NTkxMCwgMTU1OTE1LCAxNTU5MjAsIDE1NTkyNSwgMTU1OTMwLCAxNTU5MzUsIDE1NTk0MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1OTQ3LCAxNTU5NTUsIDE1NTk2MywgMTU1OTcxLCAKLSAgICAxNTU5NzksIDE1NTk4NSwgMTU1OTkxLCAxNTU5OTUsIDE1NTk5OSwgMTU2MDA1LCAxNTYwMTEsIDE1NjAyMCwgMTU2MDI0LCAKLSAgICAxNTYwMjksIDE1NjAzNSwgMTU2MDM5LCAxNTYwNDQsIDE1NjA0OCwgMTU2MDUyLCAxNTYwNTgsIDE1NjA2NCwgMTU2MDc0LCAKLSAgICAxNTYwODMsIDE1NjA4NiwgMTU2MDkxLCAxNTYwOTcsIDE1NjEwMywgMTU2MTE0LCAxNTYxMjQsIDE1NjEyOCwgMTU2MTMzLCAKLSAgICAxNTYxMzksIDE1NjE0NSwgMTU2MTU0LCAxNTYxNTksIDE1NjE2MywgMTU2MTY4LCAxNTYxNzIsIDE1NjE3OCwgMTU2MTg0LCAKLSAgICAxNTYxOTAsIDE1NjE5NCwgMTU2MTk3LCAxNTYyMDEsIDE1NjIwNCwgMTU2MjA3LCAxNTYyMTIsIDE1NjIxNywgMTU2MjI0LCAKLSAgICAxNTYyMzIsIDE1NjIzOSwgMTU2MjQ2LCAxNTYyNTUsIDE1NjI2NCwgMTU2MjcxLCAxNTYyNzksIDE1NjI4NiwgMTU2MjkzLCAKLSAgICAxNTYzMDIsIDE1NjMxMSwgMTU2MzE4LCAxNTYzMjYsIDE1NjMzMywgMTU2MzQwLCAxNTYzNDksIDE1NjM1NiwgMTU2MzY0LCAKLSAgICAxNTYzNzAsIDE1NjM3OSwgMTU2Mzg3LCAxNTYzOTYsIDE1NjQwMywgMTU2NDEzLCAxNTY0MjQsIDE1NjQzMiwgMTU2NDQwLCAKLSAgICAxNTY0NDksIDE1NjQ1NywgMTU2NDY1LCAxNTY0NzQsIDE1NjQ4MiwgMTU2NDkyLCAxNTY1MDEsIDE1NjUwOSwgMTU2NTE3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTY1MjYsIDE1NjUzNCwgCi0gICAgMTU2NTQyLCAxNTY1NTAsIDE1NjU1OCwgMTU2NTY3LCAxNTY1NzYsIDE1NjU4NSwgMTU2NTk0LCAxNTY2MDMsIDE1NjYxMiwgCi0gICAgMTU2NjIxLCAwLCAwLCAwLCAwLCAxNTY2MzAsIDE1NjYzOCwgMTU2NjQ2LCAxNTY2NTQsIDE1NjY2MiwgMTU2NjY5LCAKLSAgICAxNTY2NzYsIDE1NjY4MywgMTU2NjkwLCAxNTY2OTgsIDE1NjcwNiwgMTU2NzE0LCAxNTY3MjIsIDE1NjczMiwgMTU2NzQyLCAKLSAgICAxNTY3NTIsIDE1Njc2MiwgMTU2NzcxLCAxNTY3ODAsIDE1Njc4OSwgMTU2Nzk4LCAxNTY4MDcsIDE1NjgxNiwgMTU2ODI1LCAKLSAgICAxNTY4MzQsIDE1Njg0MiwgMTU2ODUwLCAxNTY4NTgsIDE1Njg2NiwgMTU2ODc0LCAxNTY4ODIsIDE1Njg5MCwgMTU2ODk4LCAKLSAgICAxNTY5MDgsIDE1NjkxOCwgMTU2OTI4LCAxNTY5MzgsIDE1Njk0MiwgMTU2OTQ2LCAxNTY5NTAsIDE1Njk1NCwgMTU2OTU3LCAKLSAgICAxNTY5NjAsIDE1Njk2MywgMTU2OTY2LCAxNTY5NzAsIDE1Njk3NCwgMTU2OTc4LCAxNTY5ODIsIDE1Njk4NywgMTU2OTkyLCAKLSAgICAxNTY5OTcsIDE1NzAwMiwgMTU3MDA1LCAxNTcwMDgsIDE1NzAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MDE0LCAKLSAgICAxNTcwMTcsIDE1NzAyMCwgMTU3MDIzLCAxNTcwMjYsIDE1NzAzMSwgMTU3MDM2LCAxNTcwNDIsIDE1NzA0OCwgMTU3MDUyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwNTYsIDE1NzA2MiwgMTU3MDY4LCAxNTcwNzQsIDE1NzA4MCwgMTU3MDg4LCAxNTcwOTYsIAotICAgIDE1NzEwNSwgMTU3MTE0LCAxNTcxMTksIDE1NzEyNCwgMTU3MTI5LCAxNTcxMzQsIDE1NzE0MSwgMTU3MTQ4LCAxNTcxNTYsIAotICAgIDE1NzE2NCwgMTU3MTcxLCAxNTcxNzgsIDE1NzE4NSwgMTU3MTkyLCAxNTcyMDEsIDE1NzIxMCwgMTU3MjIwLCAxNTcyMzAsIAotICAgIDE1NzIzNiwgMTU3MjQyLCAxNTcyNDgsIDE1NzI1NCwgMTU3MjYyLCAxNTcyNzAsIDE1NzI3OSwgMTU3Mjg4LCAxNTcyOTYsIAotICAgIDE1NzMwNCwgMTU3MzEyLCAxNTczMjAsIDE1NzMzMCwgMTU3MzQwLCAxNTczNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE1NzM2MiwgMTU3MzY3LCAxNTczNzIsIDE1NzM3NywgMTU3MzgyLCAxNTczOTEsIDE1NzQwMCwgMTU3NDA5LCAxNTc0MTgsIAotICAgIDE1NzQyNSwgMTU3NDMyLCAxNTc0MzksIDE1NzQ0NiwgMTU3NDUzLCAxNTc0NjIsIDE1NzQ3MSwgMTU3NDgwLCAxNTc0ODUsIAotICAgIDE1NzQ5MiwgMTU3NDk5LCAxNTc1MDYsIDE1NzUxMSwgMTU3NTE2LCAxNTc1MjEsIDE1NzUyNiwgMTU3NTMzLCAxNTc1NDAsIAotICAgIDE1NzU0NywgMTU3NTU0LCAxNTc1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzU3MCwgMTU3NTc0LCAxNTc1NzgsIDE1NzU4MywgMTU3NTg3LCAKLSAgICAxNTc1OTEsIDE1NzU5NiwgMTU3NjAwLCAxNTc2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjE5OSwgCisgICAgMTU2MjAxLCAxNTYyMDMsIDE1NjIwNywgMTU2MjEyLCAxNTYyMTcsIDE1NjIxOSwgMTU2MjI1LCAxNTYyMzAsIDE1NjIzMiwgCisgICAgMTU2MjM4LCAxNTYyNDIsIDE1NjI0NCwgMTU2MjQ4LCAxNTYyNTQsIDE1NjI2MCwgMTU2MjY2LCAxNTYyNzEsIDE1NjI3NiwgCisgICAgMTU2MjgzLCAxNTYyOTAsIDE1NjI5NywgMTU2MzAyLCAxNTYzMDksIDE1NjMxNiwgMTU2MzIzLCAxNTYzMjcsIDE1NjMzNCwgCisgICAgMTU2MzQzLCAxNTYzNTIsIDE1NjM1OSwgMTU2MzY0LCAxNTYzNjgsIDE1NjM3MiwgMTU2Mzc0LCAxNTYzNzcsIDE1NjM4MCwgCisgICAgMTU2Mzg3LCAxNTYzOTQsIDE1NjQwNCwgMTU2NDA5LCAxNTY0MTQsIDE1NjQxOSwgMTU2NDI0LCAxNTY0MjYsIDE1NjQzMiwgCisgICAgMTU2NDM2LCAxNTY0MzgsIDE1NjQ0MCwgMTU2NDQyLCAxNTY0NDQsIDE1NjQ0OCwgMTU2NDUyLCAxNTY0NTYsIDE1NjQ1OCwgCisgICAgMTU2NDYyLCAxNTY0NjQsIDE1NjQ2OCwgMTU2NDcwLCAxNTY0NzIsIDE1NjQ3NCwgMTU2NDc2LCAxNTY0ODEsIDE1NjQ4NiwgCisgICAgMTU2NDg4LCAxNTY0OTQsIDE1NjQ5OCwgMTU2NTAyLCAxNTY1MTAsIDE1NjUxMiwgMTU2NTE0LCAxNTY1MTYsIDE1NjUxOCwgCisgICAgMTU2NTIwLCAxNTY1MjIsIDE1NjUyNCwgMTU2NTI2LCAxNTY1MjgsIDE1NjUzMCwgMTU2NTM0LCAxNTY1MzgsIDE1NjU0MCwgCisgICAgMTU2NTQyLCAxNTY1NDQsIDE1NjU0NiwgMTU2NTQ4LCAxNTY1NTMsIDE1NjU1OSwgMTU2NTYzLCAxNTY1NjcsIDE1NjU3MSwgCisgICAgMTU2NTc1LCAxNTY1ODAsIDE1NjU4NCwgMTU2NTg2LCAxNTY1ODgsIDE1NjU5MiwgMTU2NTk4LCAxNTY2MDAsIDE1NjYwMiwgCisgICAgMTU2NjA0LCAxNTY2MDgsIDE1NjYxNywgMTU2NjIzLCAxNTY2MjcsIDE1NjYzMSwgMTU2NjMzLCAxNTY2MzUsIDE1NjYzOCwgCisgICAgMTU2NjQwLCAxNTY2NDIsIDE1NjY0NCwgMTU2NjQ4LCAxNTY2NTAsIDE1NjY1NCwgMTU2NjU5LCAxNTY2NjEsIDE1NjY2NiwgCisgICAgMTU2NjcyLCAxNTY2NzksIDE1NjY4MywgMTU2Njg3LCAxNTY2OTEsIDE1NjY5NSwgMTU2NzAxLCAxNTY3MDUsIDE1NjcxMywgCisgICAgMTU2NzIwLCAxNTY3MjIsIDE1NjcyNCwgMTU2NzI4LCAxNTY3MzIsIDE1NjczNCwgMTU2NzM4LCAxNTY3NDIsIDE1Njc0NCwgCisgICAgMTU2NzQ4LCAxNTY3NTAsIDE1Njc1NCwgMTU2NzU4LCAxNTY3NjIsIDE1Njc2NiwgMTU2NzcwLCAxNTY3NzQsIDE1Njc3OCwgCisgICAgMTU2NzgyLCAxNTY3ODgsIDE1Njc5MiwgMTU2Nzk2LCAxNTY4MDcsIDE1NjgxMiwgMTU2ODE2LCAxNTY4MjAsIDE1NjgyNiwgCisgICAgMTU2ODMwLCAxNTY4MzQsIDE1NjgzOCwgMTU2ODQ1LCAxNTY4NTIsIDE1Njg1NiwgMTU2ODYwLCAxNTY4NjQsIDE1Njg2OCwgCisgICAgMTU2ODcyLCAxNTY4NzksIDE1Njg4MSwgMTU2ODg1LCAxNTY4ODcsIDE1Njg4OSwgMTU2ODkzLCAxNTY4OTcsIDE1NjkwMSwgCisgICAgMTU2OTAzLCAxNTY5MDcsIDE1NjkxMSwgMTU2OTE1LCAxNTY5MTksIDE1NjkyMywgMTU2OTI1LCAxNTY5MjksIDE1NjkzMSwgCisgICAgMTU2OTM3LCAxNTY5NDAsIDE1Njk0NSwgMTU2OTQ3LCAxNTY5NDksIDE1Njk1MiwgMTU2OTU0LCAxNTY5NTYsIDE1Njk1OSwgCisgICAgMTU2OTY2LCAxNTY5NzMsIDE1Njk4MCwgMTU2OTg1LCAxNTY5ODksIDE1Njk5MSwgMTU2OTkzLCAxNTY5OTUsIDE1Njk5OSwgCisgICAgMTU3MDAxLCAxNTcwMDUsIDE1NzAwOSwgMTU3MDEzLCAxNTcwMTUsIDE1NzAxOSwgMTU3MDIxLCAxNTcwMjUsIDE1NzAyOSwgCisgICAgMTU3MDM2LCAxNTcwMzgsIDE1NzA0NywgMTU3MDU2LCAxNTcwNjUsIDE1NzA3MSwgMTU3MDczLCAxNTcwNzgsIDE1NzA4MiwgCisgICAgMTU3MDg2LCAxNTcwODgsIDE1NzA5NCwgMTU3MDk4LCAxNTcxMDAsIDE1NzEwNCwgMTU3MTA4LCAxNTcxMTAsIDE1NzExNCwgCisgICAgMTU3MTE5LCAxNTcxMjMsIDE1NzEyOSwgMTU3MTM1LCAxNTcxMzcsIDE1NzEzOSwgMTU3MTQ1LCAxNTcxNDcsIDE1NzE1MSwgCisgICAgMTU3MTU1LCAxNTcxNTcsIDE1NzE2MSwgMTU3MTYzLCAxNTcxNjcsIDE1NzE3MSwgMTU3MTc1LCAxNTcxNzgsIDE1NzE4MSwgCisgICAgMTU3MTg2LCAxNTcxOTEsIDE1NzE5MywgMTU3MTk2LCAxNTcxOTgsIDE1NzIwNSwgMTU3MjA5LCAxNTcyMTEsIDE1NzIxOCwgCisgICAgMTU3MjI1LCAxNTcyMzIsIDE1NzIzOSwgMTU3MjQ2LCAxNTcyNDgsIDE1NzI1MCwgMTU3MjUyLCAxNTcyNTYsIDE1NzI1OCwgCisgICAgMTU3MjYwLCAxNTcyNjIsIDE1NzI2NCwgMTU3MjY2LCAxNTcyNjgsIDE1NzI3MCwgMTU3MjcyLCAxNTcyNzQsIDE1NzI3NiwgCisgICAgMTU3Mjc4LCAxNTcyODAsIDE1NzI4MiwgMTU3Mjg0LCAxNTcyODYsIDE1NzI4OCwgMTU3MjkwLCAxNTcyOTIsIDE1NzI5NCwgCisgICAgMTU3Mjk2LCAxNTcyOTgsIDE1NzMwMCwgMTU3MzA0LCAxNTczMDYsIDE1NzMwOCwgMTU3MzEwLCAxNTczMTQsIDE1NzMxNiwgCisgICAgMTU3MzIwLCAxNTczMjIsIDE1NzMyNCwgMTU3MzI4LCAxNTczMzIsIDE1NzMzOCwgMTU3MzQwLCAxNTczNDIsIDE1NzM0NCwgCisgICAgMTU3MzQ2LCAxNTczNTAsIDE1NzM1NCwgMTU3MzU2LCAxNTczNjAsIDE1NzM2NCwgMTU3MzY4LCAxNTczNzIsIDE1NzM3NiwgCisgICAgMTU3MzgwLCAxNTczODQsIDE1NzM4OCwgMTU3MzkyLCAxNTczOTYsIDE1NzQwMCwgMTU3NDA0LCAxNTc0MDgsIDE1NzQxMiwgCisgICAgMTU3NDE2LCAxNTc0MjAsIDE1NzQyNCwgMTU3NDI4LCAxNTc0MzAsIDE1NzQzMiwgMTU3NDM0LCAxNTc0MzYsIDE1NzQzOCwgCisgICAgMTU3NDQwLCAxNTc0NDIsIDE1NzQ1MCwgMTU3NDU4LCAxNTc0NjYsIDE1NzQ3NCwgMTU3NDc5LCAxNTc0ODQsIDE1NzQ4OSwgCisgICAgMTU3NDkzLCAxNTc0OTcsIDE1NzUwMiwgMTU3NTA2LCAxNTc1MDgsIDE1NzUxMiwgMTU3NTE0LCAxNTc1MTYsIDE1NzUxOCwgCisgICAgMTU3NTIwLCAxNTc1MjIsIDE1NzUyNCwgMTU3NTI2LCAxNTc1MzAsIDE1NzUzMiwgMTU3NTM0LCAxNTc1MzYsIDE1NzU0MCwgCisgICAgMTU3NTQ0LCAxNTc1NDgsIDE1NzU1MiwgMTU3NTU2LCAxNTc1NTgsIDE1NzU2NCwgMTU3NTcwLCAxNTc1NzIsIDE1NzU3NCwgCisgICAgMTU3NTc2LCAxNTc1NzgsIDE1NzU4MCwgMTU3NTg5LCAxNTc1OTYsIDE1NzYwMywgMTU3NjA3LCAxNTc2MTQsIDE1NzYxOSwgCisgICAgMTU3NjI2LCAxNTc2MzUsIDE1NzY0MCwgMTU3NjQ0LCAxNTc2NDgsIDE1NzY1MCwgMTU3NjU0LCAxNTc2NTYsIDE1NzY2MCwgCisgICAgMTU3NjY0LCAxNTc2NjYsIDE1NzY3MCwgMTU3Njc0LCAxNTc2NzgsIDE1NzY4MCwgMTU3NjgyLCAxNTc2ODgsIDE1NzY5MCwgCisgICAgMTU3NjkyLCAxNTc2OTQsIDE1NzY5OCwgMTU3NzAyLCAxNTc3MDQsIDE1NzcwOCwgMTU3NzEwLCAxNTc3MTIsIDE1NzcxNSwgCisgICAgMTU3NzE5LCAxNTc3MjEsIDE1NzcyNSwgMTU3NzI3LCAxNTc3MjksIDE1NzczNCwgMTU3NzM2LCAxNTc3NDAsIDE1Nzc0NCwgCisgICAgMTU3NzQ3LCAxNTc3NTEsIDE1Nzc1NSwgMTU3NzU5LCAxNTc3NjMsIDE1Nzc2NywgMTU3NzcxLCAxNTc3NzUsIDE1Nzc4MCwgCisgICAgMTU3Nzg0LCAxNTc3ODgsIDE1Nzc5NywgMTU3ODAyLCAxNTc4MDUsIDE1NzgwNywgMTU3ODEwLCAxNTc4MTMsIDE1NzgxOCwgCisgICAgMTU3ODIwLCAxNTc4MjMsIDE1NzgyOCwgMTU3ODMyLCAxNTc4MzUsIDE1NzgzOSwgMTU3ODQzLCAxNTc4NDYsIDE1Nzg1MSwgCisgICAgMTU3ODU1LCAxNTc4NTksIDE1Nzg2MywgMTU3ODY3LCAxNTc4NzMsIDE1Nzg3OSwgMTU3ODg1LCAxNTc4OTEsIDE1Nzg5NiwgCisgICAgMTU3OTA2LCAxNTc5MDgsIDE1NzkxMiwgMTU3OTE0LCAxNTc5MTYsIDE1NzkyMCwgMTU3OTI0LCAxNTc5MjYsIDE1NzkzMCwgCisgICAgMTU3OTM1LCAxNTc5NDAsIDE1Nzk0NiwgMTU3OTQ4LCAxNTc5NTIsIDE1Nzk1NiwgMTU3OTYyLCAxNTc5NjgsIDE1Nzk3MiwgCisgICAgMTU3OTc0LCAxNTc5NzYsIDE1Nzk4MCwgMTU3OTgyLCAxNTc5ODYsIDE1Nzk5MCwgMTU3OTk0LCAxNTc5OTYsIDE1Nzk5OCwgCisgICAgMTU4MDA1LCAxNTgwMDksIDE1ODAxMiwgMTU4MDE2LCAxNTgwMjAsIDE1ODAyNCwgMTU4MDI2LCAxNTgwMzAsIDE1ODAzMiwgCisgICAgMTU4MDM0LCAxNTgwMzgsIDE1ODA0MCwgMTU4MDQ0LCAxNTgwNDgsIDE1ODA1NCwgMTU4MDU4LCAxNTgwNjIsIDE1ODA2NiwgCisgICAgMTU4MDY4LCAxNTgwNzEsIDE1ODA3NSwgMTU4MDgxLCAxNTgwOTAsIDE1ODA5OSwgMTU4MTA3LCAxNTgxMTUsIDE1ODExNywgCisgICAgMTU4MTIxLCAxNTgxMjMsIDE1ODEyNywgMTU4MTM4LCAxNTgxNDIsIDE1ODE0OCwgMTU4MTU0LCAxNTgxNTksIDE1ODE2MSwgCisgICAgMTU4MTY2LCAxNTgxNzAsIDE1ODE3MiwgMTU4MTc0LCAxNTgxNzYsIDE1ODE4MCwgMTU4MTg0LCAxNTgxODgsIDE1ODE5MywgCisgICAgMTU4MjAzLCAxNTgyMTgsIDE1ODIyOCwgMTU4MjM4LCAxNTgyNDIsIDE1ODI0NiwgMTU4MjUyLCAxNTgyNTQsIDE1ODI2MiwgCisgICAgMTU4MjcwLCAxNTgyNzIsIDE1ODI3NiwgMTU4MjgyLCAxNTgyODgsIDE1ODI5NSwgMTU4MzAyLCAxNTgzMDQsIDE1ODMwNiwgCisgICAgMTU4MzA5LCAxNTgzMTEsIDE1ODMxNywgMTU4MzE5LCAxNTgzMjIsIDE1ODMyNiwgMTU4MzMyLCAxNTgzMzgsIDE1ODM0OSwgCisgICAgMTU4MzU1LCAxNTgzNjEsIDE1ODM2OSwgMTU4MzczLCAxNTgzODEsIDE1ODM4OSwgMTU4Mzk1LCAxNTg0MDEsIDE1ODQwOCwgCisgICAgMTU4NDEwLCAxNTg0MTQsIDE1ODQxNiwgMTU4NDE4LCAxNTg0MjMsIDE1ODQyNSwgMTU4NDI3LCAxNTg0MjksIDE1ODQzMSwgCisgICAgMTU4NDM1LCAxNTg0NDUsIDE1ODQ1MSwgMTU4NDU1LCAxNTg0NTksIDE1ODQ2MywgMTU4NDY5LCAxNTg0NzUsIDE1ODQ4MSwgCisgICAgMTU4NDg3LCAxNTg0OTIsIDE1ODQ5NywgMTU4NTAzLCAxNTg1MDksIDE1ODUxNiwgMTU4NTIzLCAxNTg1MzEsIDE1ODUzOSwgCisgICAgMTU4NTQ0LCAxNTg1NTIsIDE1ODU1NiwgMTU4NTY1LCAxNTg1NzQsIDE1ODU4MCwgMTU4NTg0LCAxNTg1ODgsIDE1ODU5MiwgCisgICAgMTU4NTk1LCAxNTg2MDAsIDE1ODYwMiwgMTU4NjA0LCAxNTg2MDYsIDE1ODYxMywgMTU4NjE4LCAxNTg2MjUsIDE1ODYzMiwgCisgICAgMTU4NjM5LCAxNTg2NDcsIDE1ODY1NSwgMTU4NjYzLCAxNTg2NzEsIDE1ODY3OSwgMTU4Njg3LCAxNTg2OTUsIDE1ODcwMywgCisgICAgMTU4NzExLCAxNTg3MTcsIDE1ODcyMywgMTU4NzI5LCAxNTg3MzUsIDE1ODc0MSwgMTU4NzQ3LCAxNTg3NTMsIDE1ODc1OSwgCisgICAgMTU4NzY1LCAxNTg3NzEsIDE1ODc3NywgMTU4NzgzLCAxNTg3ODYsIDE1ODc5NSwgMTU4ODA0LCAxNTg4MDYsIDE1ODgxMywgCisgICAgMTU4ODE3LCAxNTg4MTksIDE1ODgyMSwgMTU4ODI1LCAxNTg4MzEsIDE1ODgzNSwgMTU4ODM3LCAxNTg4NDcsIDE1ODg1MywgCisgICAgMTU4ODU3LCAxNTg4NTksIDE1ODg2MywgMTU4ODY1LCAxNTg4NjksIDE1ODg3NiwgMTU4ODgzLCAxNTg4OTAsIDE1ODg5NSwgCisgICAgMTU4OTAwLCAxNTg5MDksIDE1ODkxNSwgMTU4OTIwLCAxNTg5MjQsIDE1ODkyOSwgMTU4OTMzLCAxNTg5NDAsIDE1ODk0NCwgCisgICAgMTU4OTQ3LCAxNTg5NTIsIDE1ODk1OSwgMTU4OTY2LCAxNTg5NzEsIDE1ODk3NiwgMTU4OTgxLCAxNTg5ODgsIDE1ODk5NywgCisgICAgMTU5MDA4LCAxNTkwMTQsIDE1OTAyMCwgMTU5MDI2LCAxNTkwMzYsIDE1OTA1MSwgMTU5MDYwLCAxNTkwNjgsIDE1OTA3NiwgCisgICAgMTU5MDg0LCAxNTkwOTIsIDE1OTEwMCwgMTU5MTA4LCAxNTkxMTYsIDE1OTEyNCwgMTU5MTMyLCAxNTkxNDAsIDE1OTE0OCwgCisgICAgMTU5MTU2LCAxNTkxNTksIDE1OTE2MywgMTU5MTY4LCAxNTkxNzMsIDE1OTE3NSwgMTU5MTc5LCAxNTkxODgsIDE1OTE5NywgCisgICAgMTU5MjA1LCAxNTkyMDksIDE1OTIxMywgMTU5MjE4LCAxNTkyMjMsIDE1OTIyOCwgMTU5MjMwLCAxNTkyMzUsIDE1OTIzOSwgCisgICAgMTU5MjQxLCAxNTkyNDUsIDE1OTI0OSwgMTU5MjU1LCAxNTkyNjAsIDE1OTI2OCwgMTU5MjczLCAxNTkyNzgsIDE1OTI4MywgCisgICAgMTU5MjkwLCAxNTkyOTMsIDE1OTI5NSwgMTU5Mjk4LCAxNTkzMDMsIDE1OTMwOSwgMTU5MzEzLCAxNTkzMTcsIDE1OTMyMywgCisgICAgMTU5MzI5LCAxNTkzMzEsIDE1OTMzNSwgMTU5MzM5LCAxNTkzNDMsIDE1OTM0NywgMTU5MzUxLCAxNTkzNTMsIDE1OTM1NSwgCisgICAgMTU5MzU3LCAxNTkzNTksIDE1OTM2NSwgMTU5MzcxLCAxNTkzNzUsIDE1OTM3NywgMTU5Mzc5LCAxNTkzODEsIDE1OTM5MCwgCisgICAgMTU5Mzk0LCAxNTk0MDEsIDE1OTQwOCwgMTU5NDEwLCAxNTk0MTMsIDE1OTQxNywgMTU5NDIzLCAxNTk0MjcsIDE1OTQzMSwgCisgICAgMTU5NDMzLCAxNTk0NDEsIDE1OTQ0NSwgMTU5NDQ5LCAxNTk0NTQsIDE1OTQ1OSwgMTU5NDY0LCAxNTk0NjksIDE1OTQ3NCwgCisgICAgMTU5NDc5LCAxNTk0ODQsIDE1OTQ4OSwgMTU5NDk0LCAxNTk0OTksIDE1OTUwMywgMTU5NTA5LCAxNTk1MTMsIDE1OTUxOSwgCisgICAgMTU5NTI0LCAxNTk1MzEsIDE1OTUzNywgMTU5NTQ1LCAxNTk1NDksIDE1OTU1NiwgMTU5NTYwLCAxNTk1NjQsIDE1OTU2OCwgCisgICAgMTU5NTczLCAxNTk1NzgsIDE1OTU4MCwgMTU5NTg0LCAxNTk1OTMsIDE1OTYwMSwgMTU5NjA5LCAxNTk2MjIsIDE1OTYzNSwgCisgICAgMTU5NjQ4LCAxNTk2NTUsIDE1OTY2MiwgMTU5NjY2LCAxNTk2NzUsIDE1OTY4MywgMTU5Njg3LCAxNTk2OTYsIDE1OTcwMywgCisgICAgMTU5NzA3LCAxNTk3MTEsIDE1OTcxNSwgMTU5NzE5LCAxNTk3MjYsIDE1OTczMCwgMTU5NzM0LCAxNTk3MzgsIDE1OTc0MiwgCisgICAgMTU5NzQ5LCAxNTk3NTgsIDE1OTc2NywgMTU5Nzc0LCAxNTk3ODYsIDE1OTc5OCwgMTU5ODAyLCAxNTk4MDYsIDE1OTgxMCwgCisgICAgMTU5ODE0LCAxNTk4MTgsIDE1OTgyMiwgMTU5ODMwLCAxNTk4MzgsIDE1OTg0NiwgMTU5ODUwLCAxNTk4NTQsIDE1OTg1OCwgCisgICAgMTU5ODYyLCAxNTk4NjYsIDE1OTg3MCwgMTU5ODc2LCAxNTk4ODIsIDE1OTg4NiwgMTU5ODk3LCAxNTk5MDUsIDE1OTkwOSwgCisgICAgMTU5OTEzLCAxNTk5MTcsIDE1OTkyMSwgMTU5OTI3LCAxNTk5MzQsIDE1OTk0NSwgMTU5OTU1LCAxNTk5NjUsIDE1OTk3NiwgCisgICAgMTU5OTg1LCAxNTk5OTYsIDE2MDAwMiwgMTYwMDA4LCAxNjAwMTQsIDE2MDAyMCwgMTYwMDI2LCAxNjAwMzAsIDE2MDAzNywgCisgICAgMTYwMDQ2LCAxNjAwNTMsIDE2MDA1OSwgMTYwMDYzLCAxNjAwNjcsIDE2MDA3MSwgMTYwMDgwLCAxNjAwOTIsIDE2MDA5NiwgCisgICAgMTYwMTAzLCAxNjAxMTAsIDE2MDExNywgMTYwMTI1LCAxNjAxMzIsIDE2MDE0MCwgMTYwMTQ5LCAxNjAxNTksIDE2MDE2OCwgCisgICAgMTYwMTc4LCAxNjAxODcsIDE2MDE5NywgMTYwMjA2LCAxNjAyMTYsIDE2MDIyNiwgMTYwMjM3LCAxNjAyNDcsIDE2MDI1OCwgCisgICAgMTYwMjY1LCAxNjAyNzMsIDE2MDI4MCwgMTYwMjg4LCAxNjAyOTYsIDE2MDMwNSwgMTYwMzEzLCAxNjAzMjIsIDE2MDMyOSwgCisgICAgMTYwMzQxLCAxNjAzNDgsIDE2MDM2MCwgMTYwMzYzLCAxNjAzNjYsIDE2MDM2OSwgMTYwMzcyLCAxNjAzNzgsIDE2MDM4NSwgCisgICAgMTYwMzkxLCAxNjAzOTgsIDE2MDQwMywgMTYwNDA5LCAxNjA0MjEsIDE2MDQzMSwgMTYwNDQyLCAxNjA0NDcsIDE2MDQ1MiwgCisgICAgMTYwNDU4LCAxNjA0NjMsIDE2MDQ3MCwgMTYwNDc0LCAxNjA0ODAsIDE2MDQ4MiwgMTYwNDg0LCAxNjA0ODgsIDE2MDQ5MiwgCisgICAgMTYwNDk2LCAxNjA1MDUsIDE2MDUwNywgMTYwNTA5LCAxNjA1MTIsIDE2MDUxNCwgMTYwNTE2LCAxNjA1MjAsIDE2MDUyMiwgCisgICAgMTYwNTI2LCAxNjA1MjgsIDE2MDUzMiwgMTYwNTM0LCAxNjA1MzYsIDE2MDU0MCwgMTYwNTQ0LCAxNjA1NTAsIDE2MDU1MiwgCisgICAgMTYwNTU2LCAxNjA1NTgsIDE2MDU2MiwgMTYwNTY2LCAxNjA1NzAsIDE2MDU3NCwgMTYwNTc2LCAxNjA1NzgsIDE2MDU4MiwgCisgICAgMTYwNTg2LCAxNjA1OTAsIDE2MDU5NCwgMTYwNTk2LCAxNjA1OTgsIDE2MDYwMCwgMTYwNjA2LCAxNjA2MTEsIDE2MDYxNCwgCisgICAgMTYwNjIyLCAxNjA2MzAsIDE2MDYzMiwgMTYwNjM3LCAxNjA2NDAsIDE2MDY0NSwgMTYwNjU2LCAxNjA2NjMsIDE2MDY2OCwgCisgICAgMTYwNjczLCAxNjA2NzUsIDE2MDY3OSwgMTYwNjgxLCAxNjA2ODUsIDE2MDY4NywgMTYwNjkxLCAxNjA2OTUsIDE2MDY5OCwgCisgICAgMTYwNzAxLCAxNjA3MDMsIDE2MDcwNiwgMTYwNzA4LCAxNjA3MTIsIDE2MDcxNCwgMTYwNzE2LCAxNjA3MTgsIDE2MDcyMiwgCisgICAgMTYwNzI0LCAxNjA3MjgsIDE2MDczMSwgMTYwNzM4LCAxNjA3NDEsIDE2MDc0NiwgMTYwNzQ5LCAxNjA3NTIsIDE2MDc1NywgCisgICAgMTYwNzYxLCAxNjA3NjUsIDE2MDc2OSwgMTYwNzcxLCAxNjA3NzYsIDE2MDc3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTYwNzgzLCAxNjA3ODgsIDE2MDc5MCwgMTYwNzk0LCAxNjA3OTYsIDE2MDgwMCwgMTYwODA0LCAKKyAgICAxNjA4MTAsIDE2MDgxNCwgMTYwODE5LCAxNjA4MjIsIDE2MDgyNiwgMTYwODMwLCAwLCAwLCAwLCAxNjA4MzQsIDE2MDgzNiwgCisgICAgMTYwODQyLCAxNjA4NDYsIDE2MDg1MCwgMTYwODUyLCAxNjA4NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE2MDg1OCwgMTYwODYzLCAxNjA4NjgsIDE2MDg3MywgMTYwODc4LCAxNjA4ODMsIDE2MDg4OCwgMTYwODk1LCAxNjA5MDIsIAorICAgIDE2MDkwOSwgMTYwOTE2LCAxNjA5MjEsIDE2MDkyNiwgMTYwOTMxLCAxNjA5MzYsIDE2MDk0MywgMTYwOTQ5LCAxNjA5NTYsIAorICAgIDE2MDk2MywgMTYwOTcwLCAxNjA5NzUsIDE2MDk4MCwgMTYwOTg1LCAxNjA5OTAsIDE2MDk5NSwgMTYxMDAyLCAxNjEwMDksIAorICAgIDE2MTAxNCwgMTYxMDE5LCAxNjEwMjYsIDE2MTAzMywgMTYxMDQxLCAxNjEwNDksIDE2MTA1NiwgMTYxMDYzLCAxNjEwNzEsIAorICAgIDE2MTA3OSwgMTYxMDg3LCAxNjEwOTQsIDE2MTEwNCwgMTYxMTE1LCAxNjExMjAsIDE2MTEyNywgMTYxMTM0LCAxNjExNDEsIAorICAgIDE2MTE0OSwgMTYxMTU3LCAxNjExNjgsIDE2MTE3NiwgMTYxMTg0LCAxNjExOTIsIDE2MTE5NywgMTYxMjAyLCAxNjEyMDcsIAorICAgIDE2MTIxMiwgMTYxMjE3LCAxNjEyMjIsIDE2MTIyNywgMTYxMjMyLCAxNjEyMzcsIDE2MTI0MiwgMTYxMjQ3LCAxNjEyNTIsIAorICAgIDE2MTI1OSwgMTYxMjY0LCAxNjEyNjksIDE2MTI3NiwgMTYxMjgxLCAxNjEyODYsIDE2MTI5MSwgMTYxMjk2LCAxNjEzMDEsIAorICAgIDE2MTMwNiwgMTYxMzExLCAxNjEzMTYsIDE2MTMyMSwgMTYxMzI2LCAxNjEzMzEsIDE2MTMzNiwgMTYxMzQzLCAxNjEzNTEsIAorICAgIDE2MTM1NiwgMTYxMzYxLCAxNjEzNjgsIDE2MTM3MywgMTYxMzc4LCAxNjEzODMsIDE2MTM5MCwgMTYxMzk1LCAxNjE0MDIsIAorICAgIDE2MTQwNywgMTYxNDE0LCAxNjE0MTksIDE2MTQyOCwgMTYxNDM3LCAxNjE0NDIsIDE2MTQ0NywgMTYxNDUyLCAxNjE0NTcsIAorICAgIDE2MTQ2MiwgMTYxNDY3LCAxNjE0NzIsIDE2MTQ3NywgMTYxNDgyLCAxNjE0ODcsIDE2MTQ5MiwgMTYxNDk3LCAxNjE1MDIsIAorICAgIDE2MTUxMCwgMTYxNTE4LCAxNjE1MjMsIDE2MTUyOCwgMTYxNTMzLCAxNjE1MzgsIDE2MTU0MywgMTYxNTQ5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjE1NTUsIDE2MTU2MywgMTYxNTcxLCAxNjE1NzksIDE2MTU4NywgCisgICAgMTYxNTkzLCAxNjE1OTksIDE2MTYwMywgMTYxNjA3LCAxNjE2MTMsIDE2MTYxOSwgMTYxNjI4LCAxNjE2MzIsIDE2MTYzNywgCisgICAgMTYxNjQzLCAxNjE2NDcsIDE2MTY1MiwgMTYxNjU2LCAxNjE2NjAsIDE2MTY2NiwgMTYxNjcyLCAxNjE2ODIsIDE2MTY5MSwgCisgICAgMTYxNjk0LCAxNjE2OTksIDE2MTcwNSwgMTYxNzExLCAxNjE3MjIsIDE2MTczMiwgMTYxNzM2LCAxNjE3NDEsIDE2MTc0NywgCisgICAgMTYxNzUzLCAxNjE3NjIsIDE2MTc2NywgMTYxNzcxLCAxNjE3NzYsIDE2MTc4MCwgMTYxNzg2LCAxNjE3OTIsIDE2MTc5OCwgCisgICAgMTYxODAyLCAxNjE4MDUsIDE2MTgwOSwgMTYxODEyLCAxNjE4MTUsIDE2MTgyMCwgMTYxODI1LCAxNjE4MzIsIDE2MTg0MCwgCisgICAgMTYxODQ3LCAxNjE4NTQsIDE2MTg2MywgMTYxODcyLCAxNjE4NzksIDE2MTg4NywgMTYxODk0LCAxNjE5MDEsIDE2MTkxMCwgCisgICAgMTYxOTE5LCAxNjE5MjYsIDE2MTkzNCwgMTYxOTQxLCAxNjE5NDgsIDE2MTk1NywgMTYxOTY0LCAxNjE5NzIsIDE2MTk3OCwgCisgICAgMTYxOTg3LCAxNjE5OTUsIDE2MjAwNCwgMTYyMDExLCAxNjIwMjEsIDE2MjAzMiwgMTYyMDQwLCAxNjIwNDgsIDE2MjA1NywgCisgICAgMTYyMDY1LCAxNjIwNzMsIDE2MjA4MiwgMTYyMDkwLCAxNjIxMDAsIDE2MjEwOSwgMTYyMTE3LCAxNjIxMjUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MjEzNCwgMTYyMTQyLCAxNjIxNTAsIAorICAgIDE2MjE1OCwgMTYyMTY2LCAxNjIxNzUsIDE2MjE4NCwgMTYyMTkzLCAxNjIyMDIsIDE2MjIxMSwgMTYyMjIwLCAxNjIyMjksIAorICAgIDAsIDAsIDAsIDAsIDE2MjIzOCwgMTYyMjQ2LCAxNjIyNTQsIDE2MjI2MiwgMTYyMjcwLCAxNjIyNzcsIDE2MjI4NCwgCisgICAgMTYyMjkxLCAxNjIyOTgsIDE2MjMwNiwgMTYyMzE0LCAxNjIzMjIsIDE2MjMzMCwgMTYyMzQwLCAxNjIzNTAsIDE2MjM2MCwgCisgICAgMTYyMzcwLCAxNjIzNzksIDE2MjM4OCwgMTYyMzk3LCAxNjI0MDYsIDE2MjQxNSwgMTYyNDI0LCAxNjI0MzMsIDE2MjQ0MiwgCisgICAgMTYyNDUwLCAxNjI0NTgsIDE2MjQ2NiwgMTYyNDc0LCAxNjI0ODIsIDE2MjQ5MCwgMTYyNDk4LCAxNjI1MDYsIDE2MjUxNiwgCisgICAgMTYyNTI2LCAxNjI1MzYsIDE2MjU0NiwgMTYyNTUwLCAxNjI1NTQsIDE2MjU1OCwgMTYyNTYyLCAxNjI1NjUsIDE2MjU2OCwgCisgICAgMTYyNTcxLCAxNjI1NzQsIDE2MjU3OCwgMTYyNTgyLCAxNjI1ODYsIDE2MjU5MCwgMTYyNTk1LCAxNjI2MDAsIDE2MjYwNSwgCisgICAgMTYyNjEwLCAxNjI2MTMsIDE2MjYxNiwgMTYyNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjI2MjIsIDE2MjYyNSwgCisgICAgMTYyNjI4LCAxNjI2MzEsIDE2MjYzNCwgMTYyNjM5LCAxNjI2NDQsIDE2MjY1MCwgMTYyNjU2LCAxNjI2NjAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2MjY2NCwgMTYyNjcwLCAxNjI2NzYsIDE2MjY4MiwgMTYyNjg4LCAxNjI2OTYsIDE2MjcwNCwgMTYyNzEzLCAKKyAgICAxNjI3MjIsIDE2MjcyNywgMTYyNzMyLCAxNjI3MzcsIDE2Mjc0MiwgMTYyNzQ5LCAxNjI3NTYsIDE2Mjc2NCwgMTYyNzcyLCAKKyAgICAxNjI3NzksIDE2Mjc4NiwgMTYyNzkzLCAxNjI4MDAsIDE2MjgwOSwgMTYyODE4LCAxNjI4MjgsIDE2MjgzOCwgMTYyODQ0LCAKKyAgICAxNjI4NTAsIDE2Mjg1NiwgMTYyODYyLCAxNjI4NzAsIDE2Mjg3OCwgMTYyODg3LCAxNjI4OTYsIDE2MjkwNCwgMTYyOTEyLCAKKyAgICAxNjI5MjAsIDE2MjkyOCwgMTYyOTM4LCAxNjI5NDgsIDE2Mjk1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyOTcwLCAKKyAgICAxNjI5NzUsIDE2Mjk4MCwgMTYyOTg1LCAxNjI5OTAsIDE2Mjk5OSwgMTYzMDA4LCAxNjMwMTcsIDE2MzAyNiwgMTYzMDMzLCAKKyAgICAxNjMwNDAsIDE2MzA0NywgMTYzMDU0LCAxNjMwNjEsIDE2MzA3MCwgMTYzMDc5LCAxNjMwODgsIDE2MzA5MywgMTYzMTAwLCAKKyAgICAxNjMxMDcsIDE2MzExNCwgMTYzMTE5LCAxNjMxMjQsIDE2MzEyOSwgMTYzMTM0LCAxNjMxNDEsIDE2MzE0OCwgMTYzMTU1LCAKKyAgICAxNjMxNjIsIDE2MzE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjEwLCAxNTc2MTIsIAotICAgIDE1NzYxNiwgMTU3NjE4LCAxNTc2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzMTc4LCAxNjMxODIsIDE2MzE4NiwgMTYzMTkxLCAxNjMxOTUsIDE2MzE5OSwgCisgICAgMTYzMjA0LCAxNjMyMDgsIDE2MzIxMiwgMTYzMjE4LCAxNjMyMjQsIDE2MzIzMSwgMTYzMjM1LCAxNjMyMzksIDE2MzI0MSwgCisgICAgMCwgMTYzMjUxLCAxNjMyNTgsIDE2MzI2MiwgMTYzMjY2LCAxNjMyNzYsIDE2MzI4MCwgMTYzMjg0LCAxNjMyODgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzI5MiwgMCwgMCwgMTYzMjk2LCAxNjMyOTgsIDE2MzMwMCwgMTYzMzA2LCAxNjMzMTAsIAorICAgIDE2MzMxMiwgMTYzMzE4LCAxNjMzMjAsIDE2MzMyMiwgMTYzMzI2LCAxNjMzMjgsIDE2MzMzMiwgMCwgMTYzMzM0LCAKKyAgICAxNjMzMzgsIDE2MzM0MywgMTYzMzQ3LCAxNjMzNTEsIDE2MzM1MywgMTYzMzU3LCAxNjMzNTksIDE2MzM2NSwgMTYzMzcxLCAKKyAgICAxNjMzNzcsIDE2MzM4MSwgMCwgMCwgMCwgMCwgMTYzMzg3LCAxNjMzODksIDE2MzM5MSwgMTYzMzkzLCAxNjMzOTUsIAorICAgIDE2MzM5NywgMTYzMzk5LCAxNjM0MDMsIDE2MzQwNywgMTYzNDE0LCAxNjM0MTgsIDE2MzQyMCwgMTYzNDI1LCAxNjM0MjcsIAorICAgIDE2MzQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzNDMxLCAxNjM0MzMsIDE2MzQzNywgMTYzNDM5LCAxNjM0NDEsIAorICAgIDE2MzQ0NSwgMTYzNDQ3LCAxNjM0NDksIDE2MzQ1MSwgMTYzNDUzLCAxNjM0NTUsIDE2MzQ1OSwgMTYzNDYxLCAxNjM0NjMsIAorICAgIDE2MzQ2NSwgMTYzNDY3LCAxNjM0NjksIDE2MzQ3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzNDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MjgsIDE1NzYzMiwgMTU3NjM2LCAxNTc2NDAsIAotICAgIDE1NzY0NCwgMTU3NjQ4LCAxNTc2NTIsIDE1NzY1NiwgMTU3NjYwLCAxNTc2NjQsIDE1NzY2OCwgMTU3NjcyLCAxNTc2NzYsIAotICAgIDE1NzY4MCwgMTU3Njg0LCAxNTc2ODgsIDE1NzY5MiwgMTU3Njk2LCAxNTc3MDAsIDE1NzcwNCwgMTU3NzA4LCAxNTc3MTIsIAotICAgIDE1NzcxNiwgMTU3NzIwLCAxNTc3MjQsIDE1NzcyOCwgMTU3NzMyLCAxNTc3MzYsIDE1Nzc0MCwgMTU3NzQ0LCAxNTc3NDgsIAotICAgIDE1Nzc1MiwgMTU3NzU2LCAxNTc3NjAsIDE1Nzc2NCwgMTU3NzY4LCAxNTc3NzIsIDE1Nzc3NiwgMTU3NzgwLCAxNTc3ODQsIAotICAgIDE1Nzc4OCwgMTU3NzkyLCAxNTc3OTYsIDE1NzgwMCwgMTU3ODA0LCAxNTc4MDgsIDE1NzgxMiwgMTU3ODE2LCAxNTc4MjAsIAotICAgIDE1NzgyNCwgMTU3ODI4LCAxNTc4MzIsIDE1NzgzNiwgMTU3ODQwLCAxNTc4NDQsIDE1Nzg0OCwgMTU3ODUyLCAxNTc4NTYsIAotICAgIDE1Nzg2MCwgMTU3ODY0LCAxNTc4NjgsIDE1Nzg3MiwgMTU3ODc2LCAxNTc4ODAsIDE1Nzg4NCwgMTU3ODg4LCAxNTc4OTIsIAotICAgIDE1Nzg5NiwgMTU3OTAwLCAxNTc5MDQsIDE1NzkwOCwgMTU3OTEyLCAxNTc5MTYsIDE1NzkyMCwgMTU3OTI0LCAxNTc5MjgsIAotICAgIDE1NzkzMiwgMTU3OTM2LCAxNTc5NDAsIDE1Nzk0NCwgMTU3OTQ4LCAxNTc5NTIsIDE1Nzk1NiwgMTU3OTYwLCAxNTc5NjQsIAotICAgIDE1Nzk2OCwgMTU3OTcyLCAxNTc5NzYsIDE1Nzk4MCwgMTU3OTg0LCAxNTc5ODgsIDE1Nzk5MiwgMTU3OTk2LCAxNTgwMDAsIAotICAgIDE1ODAwNCwgMTU4MDA4LCAxNTgwMTIsIDE1ODAxNiwgMTU4MDIwLCAxNTgwMjQsIDE1ODAyOCwgMTU4MDMyLCAxNTgwMzYsIAotICAgIDE1ODA0MCwgMTU4MDQ0LCAxNTgwNDgsIDE1ODA1MiwgMTU4MDU2LCAxNTgwNjAsIDE1ODA2NCwgMTU4MDY4LCAxNTgwNzIsIAotICAgIDE1ODA3NiwgMTU4MDgwLCAxNTgwODQsIDE1ODA4OCwgMTU4MDkyLCAxNTgwOTYsIDE1ODEwMCwgMTU4MTA0LCAxNTgxMDgsIAotICAgIDE1ODExMiwgMTU4MTE2LCAxNTgxMjAsIDE1ODEyNCwgMTU4MTI4LCAxNTgxMzIsIDE1ODEzNiwgMTU4MTQwLCAxNTgxNDQsIAotICAgIDE1ODE0OCwgMTU4MTUyLCAxNTgxNTYsIDE1ODE2MCwgMTU4MTY0LCAxNTgxNjgsIDE1ODE3MiwgMTU4MTc2LCAxNTgxODAsIAotICAgIDE1ODE4NCwgMTU4MTg4LCAxNTgxOTIsIDE1ODE5NiwgMTU4MjAwLCAxNTgyMDQsIDE1ODIwOCwgMTU4MjEyLCAxNTgyMTYsIAotICAgIDE1ODIyMCwgMTU4MjI0LCAxNTgyMjgsIDE1ODIzMiwgMTU4MjM2LCAxNTgyNDAsIDE1ODI0NCwgMTU4MjQ4LCAxNTgyNTIsIAotICAgIDE1ODI1NiwgMTU4MjYwLCAxNTgyNjQsIDE1ODI2OCwgMTU4MjcyLCAxNTgyNzYsIDE1ODI4MCwgMTU4Mjg0LCAxNTgyODgsIAotICAgIDE1ODI5MiwgMTU4Mjk2LCAxNTgzMDAsIDE1ODMwNCwgMTU4MzA4LCAxNTgzMTIsIDE1ODMxNiwgMTU4MzIwLCAxNTgzMjQsIAotICAgIDE1ODMyOCwgMTU4MzMyLCAxNTgzMzYsIDE1ODM0MCwgMTU4MzQ0LCAxNTgzNDgsIDE1ODM1MiwgMTU4MzU2LCAxNTgzNjAsIAotICAgIDE1ODM2NCwgMTU4MzY4LCAxNTgzNzIsIDE1ODM3NiwgMTU4MzgwLCAxNTgzODQsIDE1ODM4OCwgMTU4MzkyLCAxNTgzOTYsIAotICAgIDE1ODQwMCwgMTU4NDA0LCAxNTg0MDgsIDE1ODQxMiwgMTU4NDE2LCAxNTg0MjAsIDE1ODQyNCwgMTU4NDI4LCAxNTg0MzIsIAotICAgIDE1ODQzNiwgMTU4NDQwLCAxNTg0NDQsIDE1ODQ0OCwgMTU4NDUyLCAxNTg0NTYsIDE1ODQ2MCwgMTU4NDY0LCAxNTg0NjgsIAotICAgIDE1ODQ3MiwgMTU4NDc2LCAxNTg0ODAsIDE1ODQ4NCwgMTU4NDg4LCAxNTg0OTIsIDE1ODQ5NiwgMTU4NTAwLCAxNTg1MDQsIAotICAgIDE1ODUwOCwgMTU4NTEyLCAxNTg1MTYsIDE1ODUyMCwgMTU4NTI0LCAxNTg1MjgsIDE1ODUzMiwgMTU4NTM2LCAxNTg1NDAsIAotICAgIDE1ODU0NCwgMTU4NTQ4LCAxNTg1NTIsIDE1ODU1NiwgMTU4NTYwLCAxNTg1NjQsIDE1ODU2OCwgMTU4NTcyLCAxNTg1NzYsIAotICAgIDE1ODU4MCwgMTU4NTg0LCAxNTg1ODgsIDE1ODU5MiwgMTU4NTk2LCAxNTg2MDAsIDE1ODYwNCwgMTU4NjA4LCAxNTg2MTIsIAotICAgIDE1ODYxNiwgMTU4NjIwLCAxNTg2MjQsIDE1ODYyOCwgMTU4NjMyLCAxNTg2MzYsIDE1ODY0MCwgMTU4NjQ0LCAxNTg2NDgsIAotICAgIDE1ODY1MiwgMTU4NjU2LCAxNTg2NjAsIDE1ODY2NCwgMTU4NjY4LCAxNTg2NzIsIDE1ODY3NiwgMTU4NjgwLCAxNTg2ODQsIAotICAgIDE1ODY4OCwgMTU4NjkyLCAxNTg2OTYsIDE1ODcwMCwgMTU4NzA0LCAxNTg3MDgsIDE1ODcxMiwgMTU4NzE2LCAxNTg3MjAsIAotICAgIDE1ODcyNCwgMTU4NzI4LCAxNTg3MzIsIDE1ODczNiwgMTU4NzQwLCAxNTg3NDQsIDE1ODc0OCwgMTU4NzUyLCAxNTg3NTYsIAotICAgIDE1ODc2MCwgMTU4NzY0LCAxNTg3NjgsIDE1ODc3MiwgMTU4Nzc2LCAxNTg3ODAsIDE1ODc4NCwgMTU4Nzg4LCAxNTg3OTIsIAotICAgIDE1ODc5NiwgMTU4ODAwLCAxNTg4MDQsIDE1ODgwOCwgMTU4ODEyLCAxNTg4MTYsIDE1ODgyMCwgMTU4ODI0LCAxNTg4MjgsIAotICAgIDE1ODgzMiwgMTU4ODM2LCAxNTg4NDAsIDE1ODg0NCwgMTU4ODQ4LCAxNTg4NTIsIDE1ODg1NiwgMTU4ODYwLCAxNTg4NjQsIAotICAgIDE1ODg2OCwgMTU4ODcyLCAxNTg4NzYsIDE1ODg4MCwgMTU4ODg0LCAxNTg4ODgsIDE1ODg5MiwgMTU4ODk2LCAxNTg5MDAsIAotICAgIDE1ODkwNCwgMTU4OTA4LCAxNTg5MTIsIDE1ODkxNiwgMTU4OTIwLCAxNTg5MjQsIDE1ODkyOCwgMTU4OTMyLCAxNTg5MzYsIAotICAgIDE1ODk0MCwgMTU4OTQ0LCAxNTg5NDgsIDE1ODk1MiwgMTU4OTU2LCAxNTg5NjAsIDE1ODk2NCwgMTU4OTY4LCAxNTg5NzIsIAotICAgIDE1ODk3NiwgMTU4OTgwLCAxNTg5ODQsIDE1ODk4OCwgMTU4OTkyLCAxNTg5OTYsIDE1OTAwMCwgMTU5MDA0LCAxNTkwMDgsIAotICAgIDE1OTAxMiwgMTU5MDE2LCAxNTkwMjAsIDE1OTAyNCwgMTU5MDI4LCAxNTkwMzIsIDE1OTAzNiwgMTU5MDQwLCAxNTkwNDQsIAotICAgIDE1OTA0OCwgMTU5MDUyLCAxNTkwNTYsIDE1OTA2MCwgMTU5MDY0LCAxNTkwNjgsIDE1OTA3MiwgMTU5MDc2LCAxNTkwODAsIAotICAgIDE1OTA4NCwgMTU5MDg4LCAxNTkwOTIsIDE1OTA5NiwgMTU5MTAwLCAxNTkxMDQsIDE1OTEwOCwgMTU5MTEyLCAxNTkxMTYsIAotICAgIDE1OTEyMCwgMTU5MTI0LCAxNTkxMjgsIDE1OTEzMiwgMTU5MTM2LCAxNTkxNDAsIDE1OTE0NCwgMTU5MTQ4LCAxNTkxNTIsIAotICAgIDE1OTE1NiwgMTU5MTYwLCAxNTkxNjQsIDE1OTE2OCwgMTU5MTcyLCAxNTkxNzYsIDE1OTE4MCwgMTU5MTg0LCAxNTkxODgsIAotICAgIDE1OTE5MiwgMTU5MTk2LCAxNTkyMDAsIDE1OTIwNCwgMTU5MjA4LCAxNTkyMTIsIDE1OTIxNiwgMTU5MjIwLCAxNTkyMjQsIAotICAgIDE1OTIyOCwgMTU5MjMyLCAxNTkyMzYsIDE1OTI0MCwgMTU5MjQ0LCAxNTkyNDgsIDE1OTI1MiwgMTU5MjU2LCAxNTkyNjAsIAotICAgIDE1OTI2NCwgMTU5MjY4LCAxNTkyNzIsIDE1OTI3NiwgMTU5MjgwLCAxNTkyODQsIDE1OTI4OCwgMTU5MjkyLCAxNTkyOTYsIAotICAgIDE1OTMwMCwgMTU5MzA0LCAxNTkzMDgsIDE1OTMxMiwgMTU5MzE2LCAxNTkzMjAsIDE1OTMyNCwgMTU5MzI4LCAxNTkzMzIsIAotICAgIDE1OTMzNiwgMTU5MzQwLCAxNTkzNDQsIDE1OTM0OCwgMTU5MzUyLCAxNTkzNTYsIDE1OTM2MCwgMTU5MzY0LCAxNTkzNjgsIAotICAgIDE1OTM3MiwgMTU5Mzc2LCAxNTkzODAsIDE1OTM4NCwgMTU5Mzg4LCAxNTkzOTIsIDE1OTM5NiwgMTU5NDAwLCAxNTk0MDQsIAotICAgIDE1OTQwOCwgMTU5NDEyLCAxNTk0MTYsIDE1OTQyMCwgMTU5NDI0LCAxNTk0MjgsIDE1OTQzMiwgMTU5NDM2LCAxNTk0NDAsIAotICAgIDE1OTQ0NCwgMTU5NDQ4LCAxNTk0NTIsIDE1OTQ1NiwgMTU5NDYwLCAxNTk0NjQsIDE1OTQ2OCwgMTU5NDcyLCAxNTk0NzYsIAotICAgIDE1OTQ4MCwgMTU5NDg0LCAxNTk0ODgsIDE1OTQ5MiwgMTU5NDk2LCAxNTk1MDAsIDE1OTUwNCwgMTU5NTA4LCAxNTk1MTIsIAotICAgIDE1OTUxNiwgMTU5NTIwLCAxNTk1MjQsIDE1OTUyOCwgMTU5NTMyLCAxNTk1MzYsIDE1OTU0MCwgMTU5NTQ0LCAxNTk1NDgsIAotICAgIDE1OTU1MiwgMTU5NTU2LCAxNTk1NjAsIDE1OTU2NCwgMTU5NTY4LCAxNTk1NzIsIDE1OTU3NiwgMTU5NTgwLCAxNTk1ODQsIAotICAgIDE1OTU4OCwgMTU5NTkyLCAxNTk1OTYsIDE1OTYwMCwgMTU5NjA0LCAxNTk2MDgsIDE1OTYxMiwgMTU5NjE2LCAxNTk2MjAsIAotICAgIDE1OTYyNCwgMTU5NjI4LCAxNTk2MzIsIDE1OTYzNiwgMTU5NjQwLCAxNTk2NDQsIDE1OTY0OCwgMTU5NjUyLCAxNTk2NTYsIAotICAgIDE1OTY2MCwgMTU5NjY0LCAxNTk2NjgsIDE1OTY3MiwgMTU5Njc2LCAxNTk2ODAsIDE1OTY4NCwgMTU5Njg4LCAxNTk2OTIsIAotICAgIDE1OTY5NiwgMTU5NzAwLCAxNTk3MDQsIDE1OTcwOCwgMTU5NzEyLCAxNTk3MTYsIDE1OTcyMCwgMTU5NzI0LCAxNTk3MjgsIAotICAgIDE1OTczMiwgMTU5NzM2LCAxNTk3NDAsIDE1OTc0NCwgMTU5NzQ4LCAxNTk3NTIsIDE1OTc1NiwgMTU5NzYwLCAxNTk3NjQsIAotICAgIDE1OTc2OCwgMTU5NzcyLCAxNTk3NzYsIDE1OTc4MCwgMTU5Nzg0LCAxNTk3ODgsIDE1OTc5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTYzNDc3LCAxNjM0ODEsIDE2MzQ4NSwgMTYzNDg5LCAxNjM0OTMsIDE2MzQ5NywgMTYzNTAxLCAxNjM1MDUsIAorICAgIDE2MzUwOSwgMTYzNTEzLCAxNjM1MTcsIDE2MzUyMSwgMTYzNTI1LCAxNjM1MjksIDE2MzUzMywgMTYzNTM3LCAxNjM1NDEsIAorICAgIDE2MzU0NSwgMTYzNTQ5LCAxNjM1NTMsIDE2MzU1NywgMTYzNTYxLCAxNjM1NjUsIDE2MzU2OSwgMTYzNTczLCAxNjM1NzcsIAorICAgIDE2MzU4MSwgMTYzNTg1LCAxNjM1ODksIDE2MzU5MywgMTYzNTk3LCAxNjM2MDEsIDE2MzYwNSwgMTYzNjA5LCAxNjM2MTMsIAorICAgIDE2MzYxNywgMTYzNjIxLCAxNjM2MjUsIDE2MzYyOSwgMTYzNjMzLCAxNjM2MzcsIDE2MzY0MSwgMTYzNjQ1LCAxNjM2NDksIAorICAgIDE2MzY1MywgMTYzNjU3LCAxNjM2NjEsIDE2MzY2NSwgMTYzNjY5LCAxNjM2NzMsIDE2MzY3NywgMTYzNjgxLCAxNjM2ODUsIAorICAgIDE2MzY4OSwgMTYzNjkzLCAxNjM2OTcsIDE2MzcwMSwgMTYzNzA1LCAxNjM3MDksIDE2MzcxMywgMTYzNzE3LCAxNjM3MjEsIAorICAgIDE2MzcyNSwgMTYzNzI5LCAxNjM3MzMsIDE2MzczNywgMTYzNzQxLCAxNjM3NDUsIDE2Mzc0OSwgMTYzNzUzLCAxNjM3NTcsIAorICAgIDE2Mzc2MSwgMTYzNzY1LCAxNjM3NjksIDE2Mzc3MywgMTYzNzc3LCAxNjM3ODEsIDE2Mzc4NSwgMTYzNzg5LCAxNjM3OTMsIAorICAgIDE2Mzc5NywgMTYzODAxLCAxNjM4MDUsIDE2MzgwOSwgMTYzODEzLCAxNjM4MTcsIDE2MzgyMSwgMTYzODI1LCAxNjM4MjksIAorICAgIDE2MzgzMywgMTYzODM3LCAxNjM4NDEsIDE2Mzg0NSwgMTYzODQ5LCAxNjM4NTMsIDE2Mzg1NywgMTYzODYxLCAxNjM4NjUsIAorICAgIDE2Mzg2OSwgMTYzODczLCAxNjM4NzcsIDE2Mzg4MSwgMTYzODg1LCAxNjM4ODksIDE2Mzg5MywgMTYzODk3LCAxNjM5MDEsIAorICAgIDE2MzkwNSwgMTYzOTA5LCAxNjM5MTMsIDE2MzkxNywgMTYzOTIxLCAxNjM5MjUsIDE2MzkyOSwgMTYzOTMzLCAxNjM5MzcsIAorICAgIDE2Mzk0MSwgMTYzOTQ1LCAxNjM5NDksIDE2Mzk1MywgMTYzOTU3LCAxNjM5NjEsIDE2Mzk2NSwgMTYzOTY5LCAxNjM5NzMsIAorICAgIDE2Mzk3NywgMTYzOTgxLCAxNjM5ODUsIDE2Mzk4OSwgMTYzOTkzLCAxNjM5OTcsIDE2NDAwMSwgMTY0MDA1LCAxNjQwMDksIAorICAgIDE2NDAxMywgMTY0MDE3LCAxNjQwMjEsIDE2NDAyNSwgMTY0MDI5LCAxNjQwMzMsIDE2NDAzNywgMTY0MDQxLCAxNjQwNDUsIAorICAgIDE2NDA0OSwgMTY0MDUzLCAxNjQwNTcsIDE2NDA2MSwgMTY0MDY1LCAxNjQwNjksIDE2NDA3MywgMTY0MDc3LCAxNjQwODEsIAorICAgIDE2NDA4NSwgMTY0MDg5LCAxNjQwOTMsIDE2NDA5NywgMTY0MTAxLCAxNjQxMDUsIDE2NDEwOSwgMTY0MTEzLCAxNjQxMTcsIAorICAgIDE2NDEyMSwgMTY0MTI1LCAxNjQxMjksIDE2NDEzMywgMTY0MTM3LCAxNjQxNDEsIDE2NDE0NSwgMTY0MTQ5LCAxNjQxNTMsIAorICAgIDE2NDE1NywgMTY0MTYxLCAxNjQxNjUsIDE2NDE2OSwgMTY0MTczLCAxNjQxNzcsIDE2NDE4MSwgMTY0MTg1LCAxNjQxODksIAorICAgIDE2NDE5MywgMTY0MTk3LCAxNjQyMDEsIDE2NDIwNSwgMTY0MjA5LCAxNjQyMTMsIDE2NDIxNywgMTY0MjIxLCAxNjQyMjUsIAorICAgIDE2NDIyOSwgMTY0MjMzLCAxNjQyMzcsIDE2NDI0MSwgMTY0MjQ1LCAxNjQyNDksIDE2NDI1MywgMTY0MjU3LCAxNjQyNjEsIAorICAgIDE2NDI2NSwgMTY0MjY5LCAxNjQyNzMsIDE2NDI3NywgMTY0MjgxLCAxNjQyODUsIDE2NDI4OSwgMTY0MjkzLCAxNjQyOTcsIAorICAgIDE2NDMwMSwgMTY0MzA1LCAxNjQzMDksIDE2NDMxMywgMTY0MzE3LCAxNjQzMjEsIDE2NDMyNSwgMTY0MzI5LCAxNjQzMzMsIAorICAgIDE2NDMzNywgMTY0MzQxLCAxNjQzNDUsIDE2NDM0OSwgMTY0MzUzLCAxNjQzNTcsIDE2NDM2MSwgMTY0MzY1LCAxNjQzNjksIAorICAgIDE2NDM3MywgMTY0Mzc3LCAxNjQzODEsIDE2NDM4NSwgMTY0Mzg5LCAxNjQzOTMsIDE2NDM5NywgMTY0NDAxLCAxNjQ0MDUsIAorICAgIDE2NDQwOSwgMTY0NDEzLCAxNjQ0MTcsIDE2NDQyMSwgMTY0NDI1LCAxNjQ0MjksIDE2NDQzMywgMTY0NDM3LCAxNjQ0NDEsIAorICAgIDE2NDQ0NSwgMTY0NDQ5LCAxNjQ0NTMsIDE2NDQ1NywgMTY0NDYxLCAxNjQ0NjUsIDE2NDQ2OSwgMTY0NDczLCAxNjQ0NzcsIAorICAgIDE2NDQ4MSwgMTY0NDg1LCAxNjQ0ODksIDE2NDQ5MywgMTY0NDk3LCAxNjQ1MDEsIDE2NDUwNSwgMTY0NTA5LCAxNjQ1MTMsIAorICAgIDE2NDUxNywgMTY0NTIxLCAxNjQ1MjUsIDE2NDUyOSwgMTY0NTMzLCAxNjQ1MzcsIDE2NDU0MSwgMTY0NTQ1LCAxNjQ1NDksIAorICAgIDE2NDU1MywgMTY0NTU3LCAxNjQ1NjEsIDE2NDU2NSwgMTY0NTY5LCAxNjQ1NzMsIDE2NDU3NywgMTY0NTgxLCAxNjQ1ODUsIAorICAgIDE2NDU4OSwgMTY0NTkzLCAxNjQ1OTcsIDE2NDYwMSwgMTY0NjA1LCAxNjQ2MDksIDE2NDYxMywgMTY0NjE3LCAxNjQ2MjEsIAorICAgIDE2NDYyNSwgMTY0NjI5LCAxNjQ2MzMsIDE2NDYzNywgMTY0NjQxLCAxNjQ2NDUsIDE2NDY0OSwgMTY0NjUzLCAxNjQ2NTcsIAorICAgIDE2NDY2MSwgMTY0NjY1LCAxNjQ2NjksIDE2NDY3MywgMTY0Njc3LCAxNjQ2ODEsIDE2NDY4NSwgMTY0Njg5LCAxNjQ2OTMsIAorICAgIDE2NDY5NywgMTY0NzAxLCAxNjQ3MDUsIDE2NDcwOSwgMTY0NzEzLCAxNjQ3MTcsIDE2NDcyMSwgMTY0NzI1LCAxNjQ3MjksIAorICAgIDE2NDczMywgMTY0NzM3LCAxNjQ3NDEsIDE2NDc0NSwgMTY0NzQ5LCAxNjQ3NTMsIDE2NDc1NywgMTY0NzYxLCAxNjQ3NjUsIAorICAgIDE2NDc2OSwgMTY0NzczLCAxNjQ3NzcsIDE2NDc4MSwgMTY0Nzg1LCAxNjQ3ODksIDE2NDc5MywgMTY0Nzk3LCAxNjQ4MDEsIAorICAgIDE2NDgwNSwgMTY0ODA5LCAxNjQ4MTMsIDE2NDgxNywgMTY0ODIxLCAxNjQ4MjUsIDE2NDgyOSwgMTY0ODMzLCAxNjQ4MzcsIAorICAgIDE2NDg0MSwgMTY0ODQ1LCAxNjQ4NDksIDE2NDg1MywgMTY0ODU3LCAxNjQ4NjEsIDE2NDg2NSwgMTY0ODY5LCAxNjQ4NzMsIAorICAgIDE2NDg3NywgMTY0ODgxLCAxNjQ4ODUsIDE2NDg4OSwgMTY0ODkzLCAxNjQ4OTcsIDE2NDkwMSwgMTY0OTA1LCAxNjQ5MDksIAorICAgIDE2NDkxMywgMTY0OTE3LCAxNjQ5MjEsIDE2NDkyNSwgMTY0OTI5LCAxNjQ5MzMsIDE2NDkzNywgMTY0OTQxLCAxNjQ5NDUsIAorICAgIDE2NDk0OSwgMTY0OTUzLCAxNjQ5NTcsIDE2NDk2MSwgMTY0OTY1LCAxNjQ5NjksIDE2NDk3MywgMTY0OTc3LCAxNjQ5ODEsIAorICAgIDE2NDk4NSwgMTY0OTg5LCAxNjQ5OTMsIDE2NDk5NywgMTY1MDAxLCAxNjUwMDUsIDE2NTAwOSwgMTY1MDEzLCAxNjUwMTcsIAorICAgIDE2NTAyMSwgMTY1MDI1LCAxNjUwMjksIDE2NTAzMywgMTY1MDM3LCAxNjUwNDEsIDE2NTA0NSwgMTY1MDQ5LCAxNjUwNTMsIAorICAgIDE2NTA1NywgMTY1MDYxLCAxNjUwNjUsIDE2NTA2OSwgMTY1MDczLCAxNjUwNzcsIDE2NTA4MSwgMTY1MDg1LCAxNjUwODksIAorICAgIDE2NTA5MywgMTY1MDk3LCAxNjUxMDEsIDE2NTEwNSwgMTY1MTA5LCAxNjUxMTMsIDE2NTExNywgMTY1MTIxLCAxNjUxMjUsIAorICAgIDE2NTEyOSwgMTY1MTMzLCAxNjUxMzcsIDE2NTE0MSwgMTY1MTQ1LCAxNjUxNDksIDE2NTE1MywgMTY1MTU3LCAxNjUxNjEsIAorICAgIDE2NTE2NSwgMTY1MTY5LCAxNjUxNzMsIDE2NTE3NywgMTY1MTgxLCAxNjUxODUsIDE2NTE4OSwgMTY1MTkzLCAxNjUxOTcsIAorICAgIDE2NTIwMSwgMTY1MjA1LCAxNjUyMDksIDE2NTIxMywgMTY1MjE3LCAxNjUyMjEsIDE2NTIyNSwgMTY1MjI5LCAxNjUyMzMsIAorICAgIDE2NTIzNywgMTY1MjQxLCAxNjUyNDUsIDE2NTI0OSwgMTY1MjUzLCAxNjUyNTcsIDE2NTI2MSwgMTY1MjY1LCAxNjUyNjksIAorICAgIDE2NTI3MywgMTY1Mjc3LCAxNjUyODEsIDE2NTI4NSwgMTY1Mjg5LCAxNjUyOTMsIDE2NTI5NywgMTY1MzAxLCAxNjUzMDUsIAorICAgIDE2NTMwOSwgMTY1MzEzLCAxNjUzMTcsIDE2NTMyMSwgMTY1MzI1LCAxNjUzMjksIDE2NTMzMywgMTY1MzM3LCAxNjUzNDEsIAorICAgIDE2NTM0NSwgMTY1MzQ5LCAxNjUzNTMsIDE2NTM1NywgMTY1MzYxLCAxNjUzNjUsIDE2NTM2OSwgMTY1MzczLCAxNjUzNzcsIAorICAgIDE2NTM4MSwgMTY1Mzg1LCAxNjUzODksIDE2NTM5MywgMTY1Mzk3LCAxNjU0MDEsIDE2NTQwNSwgMTY1NDA5LCAxNjU0MTMsIAorICAgIDE2NTQxNywgMTY1NDIxLCAxNjU0MjUsIDE2NTQyOSwgMTY1NDMzLCAxNjU0MzcsIDE2NTQ0MSwgMTY1NDQ1LCAxNjU0NDksIAorICAgIDE2NTQ1MywgMTY1NDU3LCAxNjU0NjEsIDE2NTQ2NSwgMTY1NDY5LCAxNjU0NzMsIDE2NTQ3NywgMTY1NDgxLCAxNjU0ODUsIAorICAgIDE2NTQ4OSwgMTY1NDkzLCAxNjU0OTcsIDE2NTUwMSwgMTY1NTA1LCAxNjU1MDksIDE2NTUxMywgMTY1NTE3LCAxNjU1MjEsIAorICAgIDE2NTUyNSwgMTY1NTI5LCAxNjU1MzMsIDE2NTUzNywgMTY1NTQxLCAxNjU1NDUsIDE2NTU0OSwgMTY1NTUzLCAxNjU1NTcsIAorICAgIDE2NTU2MSwgMTY1NTY1LCAxNjU1NjksIDE2NTU3MywgMTY1NTc3LCAxNjU1ODEsIDE2NTU4NSwgMTY1NTg5LCAxNjU1OTMsIAorICAgIDE2NTU5NywgMTY1NjAxLCAxNjU2MDUsIDE2NTYwOSwgMTY1NjEzLCAxNjU2MTcsIDE2NTYyMSwgMTY1NjI1LCAxNjU2MjksIAorICAgIDE2NTYzMywgMTY1NjM3LCAxNjU2NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMjAwNzgsMzE4NiArMjEzNTMsMzI3OSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE1OTc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5ODAwLCAxNTk4MDMsIDE1OTgwNywgMTU5ODExLCAKLSAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MjUsIDE1OTgyOCwgMTU5ODMyLCAxNTk4MzYsIDE1OTgzOSwgMTU5ODQyLCAKLSAgICAxNTk4NDUsIDE1OTg0OCwgMTU5ODUzLCAxNTk4NTYsIDE1OTg2MCwgMTU5ODYzLCAxNTk4NjYsIDE1OTg2OSwgMTU5ODcyLCAKLSAgICAxNTk4NzUsIDE1OTg3OCwgMTU5ODgyLCAxNTk4ODUsIDE1OTg4OSwgMTU5ODkyLCAxNTk4OTUsIDE1OTg5OSwgMTU5OTAzLCAKLSAgICAxNTk5MDcsIDE1OTkxMSwgMTU5OTE2LCAxNTk5MjEsIDE1OTkyNywgMTU5OTMzLCAxNTk5MzksIDE1OTk0NCwgMTU5OTUwLCAKLSAgICAxNTk5NTYsIDE1OTk2MiwgMTU5OTY3LCAxNTk5NzMsIDE1OTk3OSwgMTU5OTg0LCAxNTk5OTAsIDE1OTk5NiwgMTYwMDAxLCAKLSAgICAxNjAwMDcsIDE2MDAxMywgMTYwMDE4LCAxNjAwMjMsIDE2MDAyOSwgMTYwMDM0LCAxNjAwNDAsIDE2MDA0NiwgMTYwMDUyLCAKLSAgICAxNjAwNTgsIDE2MDA2NCwgMTYwMDY4LCAxNjAwNzMsIDE2MDA3NywgMTYwMDgyLCAxNjAwODYsIDE2MDA5MSwgMTYwMDk2LCAKLSAgICAxNjAxMDIsIDE2MDEwOCwgMTYwMTE0LCAxNjAxMTksIDE2MDEyNSwgMTYwMTMxLCAxNjAxMzcsIDE2MDE0MiwgMTYwMTQ4LCAKLSAgICAxNjAxNTQsIDE2MDE1OSwgMTYwMTY1LCAxNjAxNzEsIDE2MDE3NiwgMTYwMTgyLCAxNjAxODgsIDE2MDE5MywgMTYwMTk4LCAKLSAgICAxNjAyMDQsIDE2MDIwOSwgMTYwMjE1LCAxNjAyMjEsIDE2MDIyNywgMTYwMjMzLCAxNjAyMzksIDE2MDI0NCwgMTYwMjQ4LCAKLSAgICAxNjAyNTMsIDE2MDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1NjQ1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjU2NDksIDE2NTY1MiwgMTY1NjU2LCAxNjU2NjAsIDE2NTY2MywgMTY1NjY3LCAxNjU2NzEsIDE2NTY3NCwgCisgICAgMTY1Njc3LCAxNjU2ODEsIDE2NTY4NSwgMTY1Njg4LCAxNjU2OTEsIDE2NTY5NCwgMTY1Njk3LCAxNjU3MDIsIDE2NTcwNSwgCisgICAgMTY1NzA5LCAxNjU3MTIsIDE2NTcxNSwgMTY1NzE4LCAxNjU3MjEsIDE2NTcyNCwgMTY1NzI3LCAxNjU3MzEsIDE2NTczNCwgCisgICAgMTY1NzM4LCAxNjU3NDEsIDE2NTc0NCwgMTY1NzQ4LCAxNjU3NTIsIDE2NTc1NiwgMTY1NzYwLCAxNjU3NjUsIDE2NTc3MCwgCisgICAgMTY1Nzc2LCAxNjU3ODIsIDE2NTc4OCwgMTY1NzkzLCAxNjU3OTksIDE2NTgwNSwgMTY1ODExLCAxNjU4MTYsIDE2NTgyMiwgCisgICAgMTY1ODI4LCAxNjU4MzMsIDE2NTgzOSwgMTY1ODQ1LCAxNjU4NTAsIDE2NTg1NiwgMTY1ODYyLCAxNjU4NjcsIDE2NTg3MywgCisgICAgMTY1ODc5LCAxNjU4ODQsIDE2NTg5MCwgMTY1ODk2LCAxNjU5MDIsIDE2NTkwOCwgMTY1OTE0LCAxNjU5MTgsIDE2NTkyMywgCisgICAgMTY1OTI3LCAxNjU5MzIsIDE2NTkzNiwgMTY1OTQxLCAxNjU5NDYsIDE2NTk1MiwgMTY1OTU4LCAxNjU5NjQsIDE2NTk2OSwgCisgICAgMTY1OTc1LCAxNjU5ODEsIDE2NTk4NywgMTY1OTkyLCAxNjU5OTgsIDE2NjAwNCwgMTY2MDA5LCAxNjYwMTUsIDE2NjAyMSwgCisgICAgMTY2MDI2LCAxNjYwMzIsIDE2NjAzOCwgMTY2MDQzLCAxNjYwNDksIDE2NjA1NSwgMTY2MDYwLCAxNjYwNjYsIDE2NjA3MiwgCisgICAgMTY2MDc4LCAxNjYwODQsIDE2NjA5MCwgMTY2MDk1LCAxNjYwOTksIDE2NjEwNCwgMTY2MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjAyNjAsIDE2MDI2MywgMTYwMjY2LCAxNjAyNjksIAotICAgIDE2MDI3MiwgMTYwMjc1LCAxNjAyNzgsIDE2MDI4MSwgMTYwMjg0LCAxNjAyODcsIDE2MDI5MCwgMTYwMjkzLCAxNjAyOTYsIAotICAgIDE2MDI5OSwgMTYwMzAyLCAxNjAzMDUsIDE2MDMwOCwgMTYwMzExLCAxNjAzMTQsIDE2MDMxNywgMTYwMzIwLCAxNjAzMjMsIAotICAgIDE2MDMyNiwgMTYwMzI5LCAxNjAzMzIsIDE2MDMzNSwgMTYwMzM4LCAxNjAzNDEsIDE2MDM0NCwgMTYwMzQ3LCAxNjAzNTAsIAotICAgIDE2MDM1MywgMTYwMzU2LCAxNjAzNTksIDE2MDM2MiwgMTYwMzY1LCAxNjAzNjgsIDE2MDM3MSwgMTYwMzc0LCAxNjAzNzcsIAotICAgIDE2MDM4MCwgMTYwMzgzLCAxNjAzODYsIDE2MDM4OSwgMTYwMzkyLCAxNjAzOTUsIDE2MDM5OCwgMTYwNDAxLCAxNjA0MDQsIAotICAgIDE2MDQwNywgMTYwNDEwLCAxNjA0MTMsIDE2MDQxNiwgMTYwNDE5LCAxNjA0MjIsIDE2MDQyNSwgMTYwNDI4LCAxNjA0MzEsIAotICAgIDE2MDQzNCwgMTYwNDM3LCAxNjA0NDAsIDE2MDQ0MywgMTYwNDQ2LCAxNjA0NDksIDE2MDQ1MiwgMTYwNDU1LCAxNjA0NTgsIAotICAgIDE2MDQ2MSwgMTYwNDY0LCAxNjA0NjcsIDE2MDQ3MCwgMTYwNDczLCAxNjA0NzYsIDE2MDQ3OSwgMTYwNDgyLCAxNjA0ODUsIAotICAgIDE2MDQ4OCwgMTYwNDkxLCAxNjA0OTQsIDE2MDQ5NywgMTYwNTAwLCAxNjA1MDMsIDE2MDUwNiwgMTYwNTA5LCAxNjA1MTIsIAotICAgIDE2MDUxNSwgMTYwNTE4LCAxNjA1MjEsIDE2MDUyNCwgMTYwNTI3LCAxNjA1MzAsIDE2MDUzMywgMTYwNTM2LCAxNjA1MzksIAotICAgIDE2MDU0MiwgMTYwNTQ1LCAxNjA1NDgsIDE2MDU1MSwgMTYwNTU0LCAxNjA1NTcsIDE2MDU2MCwgMTYwNTYzLCAxNjA1NjYsIAotICAgIDE2MDU2OSwgMTYwNTcyLCAxNjA1NzUsIDE2MDU3OCwgMTYwNTgxLCAxNjA1ODQsIDE2MDU4NywgMTYwNTkwLCAxNjA1OTMsIAotICAgIDE2MDU5NiwgMTYwNTk5LCAxNjA2MDIsIDE2MDYwNSwgMTYwNjA4LCAxNjA2MTEsIDE2MDYxNCwgMTYwNjE3LCAxNjA2MjAsIAotICAgIDE2MDYyMywgMTYwNjI2LCAxNjA2MjksIDE2MDYzMiwgMTYwNjM1LCAxNjA2MzgsIDE2MDY0MSwgMTYwNjQ0LCAxNjA2NDcsIAotICAgIDE2MDY1MCwgMTYwNjUzLCAxNjA2NTYsIDE2MDY1OSwgMTYwNjYyLCAxNjA2NjUsIDE2MDY2OCwgMTYwNjcxLCAxNjA2NzQsIAotICAgIDE2MDY3NywgMTYwNjgwLCAxNjA2ODMsIDE2MDY4NiwgMTYwNjg5LCAxNjA2OTIsIDE2MDY5NSwgMTYwNjk4LCAxNjA3MDEsIAotICAgIDE2MDcwNCwgMTYwNzA3LCAxNjA3MTAsIDE2MDcxMywgMTYwNzE2LCAxNjA3MTksIDE2MDcyMiwgMTYwNzI1LCAxNjA3MjgsIAotICAgIDE2MDczMSwgMTYwNzM0LCAxNjA3MzcsIDE2MDc0MCwgMTYwNzQzLCAxNjA3NDYsIDE2MDc0OSwgMTYwNzUyLCAxNjA3NTUsIAotICAgIDE2MDc1OCwgMTYwNzYxLCAxNjA3NjQsIDE2MDc2NywgMTYwNzcwLCAxNjA3NzMsIDE2MDc3NiwgMTYwNzc5LCAxNjA3ODIsIAotICAgIDE2MDc4NSwgMTYwNzg4LCAxNjA3OTEsIDE2MDc5NCwgMTYwNzk3LCAxNjA4MDAsIDE2MDgwMywgMTYwODA2LCAxNjA4MDksIAotICAgIDE2MDgxMiwgMTYwODE1LCAxNjA4MTgsIDE2MDgyMSwgMTYwODI0LCAxNjA4MjcsIDE2MDgzMCwgMTYwODMzLCAxNjA4MzYsIAotICAgIDE2MDgzOSwgMTYwODQyLCAxNjA4NDUsIDE2MDg0OCwgMTYwODUxLCAxNjA4NTQsIDE2MDg1NywgMTYwODYwLCAxNjA4NjMsIAotICAgIDE2MDg2NiwgMTYwODY5LCAxNjA4NzIsIDE2MDg3NSwgMTYwODc4LCAxNjA4ODEsIDE2MDg4NCwgMTYwODg3LCAxNjA4OTAsIAotICAgIDE2MDg5MywgMTYwODk2LCAxNjA4OTksIDE2MDkwMiwgMTYwOTA1LCAxNjA5MDgsIDE2MDkxMSwgMTYwOTE0LCAxNjA5MTcsIAotICAgIDE2MDkyMCwgMTYwOTIzLCAxNjA5MjYsIDE2MDkyOSwgMTYwOTMyLCAxNjA5MzUsIDE2MDkzOCwgMTYwOTQxLCAxNjA5NDQsIAotICAgIDE2MDk0NywgMTYwOTUwLCAxNjA5NTMsIDE2MDk1NiwgMTYwOTU5LCAxNjA5NjIsIDE2MDk2NSwgMTYwOTY4LCAxNjA5NzEsIAotICAgIDE2MDk3NCwgMTYwOTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA5ODAsIAotICAgIDE2MDk4MiwgMTYwOTg0LCAxNjA5ODksIDE2MDk5MSwgMTYwOTk2LCAxNjA5OTgsIDE2MTAwMywgMTYxMDA1LCAxNjEwMTAsIAotICAgIDE2MTAxMiwgMTYxMDE0LCAxNjEwMTYsIDE2MTAxOCwgMTYxMDIwLCAxNjEwMjIsIDE2MTAyNCwgMTYxMDI2LCAxNjEwMjgsIAotICAgIDE2MTAzMSwgMTYxMDM1LCAxNjEwMzcsIDE2MTAzOSwgMTYxMDQzLCAxNjEwNDcsIDE2MTA1MiwgMTYxMDU0LCAxNjEwNTYsIAotICAgIDE2MTA1OCwgMTYxMDYyLCAxNjEwNjUsIDE2MTA2NywgMTYxMDcxLCAxNjEwNzMsIDE2MTA3NywgMTYxMDc5LCAxNjEwODMsIAotICAgIDE2MTA4NiwgMTYxMDg4LCAxNjEwOTIsIDE2MTA5NiwgMTYxMDk4LCAxNjExMDQsIDE2MTEwNiwgMTYxMTExLCAxNjExMTMsIAotICAgIDE2MTExOCwgMTYxMTIwLCAxNjExMjUsIDE2MTEyNywgMTYxMTMyLCAxNjExMzQsIDE2MTEzNywgMTYxMTM5LCAxNjExNDMsIAotICAgIDE2MTE0NSwgMTYxMTUyLCAxNjExNTQsIDE2MTE1NiwgMTYxMTU4LCAxNjExNjMsIDE2MTE2NSwgMTYxMTY3LCAxNjExNjksIAotICAgIDE2MTE3MSwgMTYxMTczLCAxNjExNzgsIDE2MTE4MiwgMTYxMTg0LCAxNjExODksIDE2MTE5MywgMTYxMTk1LCAxNjEyMDAsIAotICAgIDE2MTIwNCwgMTYxMjA2LCAxNjEyMTEsIDE2MTIxNSwgMTYxMjE3LCAxNjEyMTksIDE2MTIyMSwgMTYxMjIzLCAxNjEyMjcsIAotICAgIDE2MTIyOSwgMTYxMjM0LCAxNjEyMzYsIDE2MTI0MiwgMTYxMjQ0LCAxNjEyNTAsIDE2MTI1MiwgMTYxMjU0LCAxNjEyNTYsIAotICAgIDE2MTI2MCwgMTYxMjYyLCAxNjEyNjksIDE2MTI3MSwgMTYxMjc4LCAxNjEyODAsIDE2MTI4NSwgMTYxMjkxLCAxNjEyOTMsIAotICAgIDE2MTI5OSwgMTYxMzA2LCAxNjEzMDgsIDE2MTMxNCwgMTYxMzE5LCAxNjEzMjEsIDE2MTMyNywgMTYxMzMzLCAxNjEzMzUsIAotICAgIDE2MTM0MSwgMTYxMzQ3LCAxNjEzNDksIDE2MTM1NSwgMTYxMzU5LCAxNjEzNjEsIDE2MTM2NiwgMTYxMzY4LCAxNjEzNzAsIAotICAgIDE2MTM3NSwgMTYxMzc3LCAxNjEzNzksIDE2MTM4NSwgMTYxMzg3LCAxNjEzOTIsIDE2MTM5NiwgMTYxMzk4LCAxNjE0MDMsIAotICAgIDE2MTQwNywgMTYxNDA5LCAxNjE0MTUsIDE2MTQxNywgMTYxNDIxLCAxNjE0MjMsIDE2MTQyNywgMTYxNDI5LCAxNjE0MzYsIAotICAgIDE2MTQ0MywgMTYxNDQ1LCAxNjE0NTIsIDE2MTQ1OSwgMTYxNDYxLCAxNjE0NjYsIDE2MTQ2OCwgMTYxNDc1LCAxNjE0NzcsIAotICAgIDE2MTQ4MiwgMTYxNDg0LCAxNjE0OTAsIDE2MTQ5MiwgMTYxNDk2LCAxNjE0OTgsIDE2MTUwNCwgMTYxNTA2LCAxNjE1MTAsIAotICAgIDE2MTUxMiwgMTYxNTE4LCAxNjE1MjAsIDE2MTUyMiwgMTYxNTI0LCAxNjE1MjksIDE2MTUzNCwgMTYxNTM2LCAxNjE1MzgsIAotICAgIDE2MTU0OCwgMTYxNTUyLCAxNjE1NTksIDE2MTU2NiwgMTYxNTcxLCAxNjE1NzYsIDE2MTU4OCwgMTYxNTkwLCAxNjE1OTIsIAotICAgIDE2MTU5NCwgMTYxNTk2LCAxNjE1OTgsIDE2MTYwMCwgMTYxNjAyLCAxNjE2MDQsIDE2MTYwNiwgMTYxNjA4LCAxNjE2MTAsIAotICAgIDE2MTYxMiwgMTYxNjE0LCAxNjE2MTYsIDE2MTYxOCwgMTYxNjIwLCAxNjE2MjIsIDE2MTYyNCwgMTYxNjI2LCAxNjE2MjgsIAotICAgIDE2MTYzMCwgMTYxNjM2LCAxNjE2NDMsIDE2MTY0OCwgMTYxNjU2LCAxNjE2NjQsIDE2MTY2OSwgMTYxNjgwLCAxNjE2ODIsIAotICAgIDE2MTY4NCwgMTYxNjg2LCAxNjE2ODgsIDE2MTY5MCwgMTYxNjkyLCAxNjE2OTQsIDE2MTY5NiwgMTYxNjk4LCAxNjE3MDAsIAotICAgIDE2MTcwMiwgMTYxNzA0LCAxNjE3MDYsIDE2MTcwOCwgMTYxNzEwLCAxNjE3MTIsIDE2MTcxNywgMTYxNzE5LCAxNjE3MjEsIAotICAgIDE2MTcyNywgMTYxNzM5LCAxNjE3NTAsIDE2MTc1MiwgMTYxNzU0LCAxNjE3NTYsIDE2MTc1OCwgMTYxNzYwLCAxNjE3NjIsIAotICAgIDE2MTc2NCwgMTYxNzY2LCAxNjE3NjgsIDE2MTc3MCwgMTYxNzcyLCAxNjE3NzQsIDE2MTc3NiwgMTYxNzc4LCAxNjE3ODAsIAotICAgIDE2MTc4MiwgMTYxNzg0LCAxNjE3ODYsIDE2MTc4OCwgMTYxNzkwLCAxNjE3OTIsIDE2MTc5NCwgMTYxNzk2LCAxNjE3OTgsIAotICAgIDE2MTgwMCwgMTYxODAyLCAxNjE4MDQsIDE2MTgwNiwgMTYxODA4LCAxNjE4MTAsIDE2MTgxMiwgMTYxODE0LCAxNjE4MTYsIAotICAgIDE2MTgxOCwgMTYxODIwLCAxNjE4MjIsIDE2MTgyNCwgMTYxODI2LCAxNjE4MjgsIDE2MTgzMCwgMTYxODMyLCAxNjE4MzQsIAotICAgIDE2MTgzNiwgMTYxODM4LCAxNjE4NDAsIDE2MTg0MiwgMTYxODQ0LCAxNjE4NDYsIDE2MTg0OCwgMTYxODUwLCAxNjE4NTIsIAotICAgIDE2MTg1NCwgMTYxODU2LCAxNjE4NTgsIDE2MTg2MCwgMTYxODYyLCAxNjE4NjQsIDE2MTg2NiwgMTYxODY4LCAxNjE4NzAsIAotICAgIDE2MTg3MiwgMTYxODc0LCAxNjE4NzYsIDE2MTg3OCwgMTYxODgwLCAxNjE4ODIsIDE2MTg4NCwgMTYxODg2LCAxNjE4ODgsIAotICAgIDE2MTg5MCwgMTYxODkyLCAxNjE4OTQsIDE2MTg5NiwgMTYxODk4LCAxNjE5MDAsIDE2MTkwMiwgMTYxOTA0LCAxNjE5MDYsIAotICAgIDE2MTkwOCwgMTYxOTEwLCAxNjE5MTIsIDE2MTkxNCwgMTYxOTE2LCAxNjE5MTgsIDE2MTkyMCwgMTYxOTIyLCAxNjE5MjQsIAotICAgIDE2MTkyNiwgMTYxOTI4LCAxNjE5MzAsIDE2MTkzMiwgMTYxOTM0LCAxNjE5MzYsIDE2MTkzOCwgMTYxOTQwLCAxNjE5NDIsIAotICAgIDE2MTk0NCwgMTYxOTQ2LCAxNjE5NDgsIDE2MTk1MCwgMTYxOTUyLCAxNjE5NTQsIDE2MTk1NiwgMTYxOTU4LCAxNjE5NjAsIAotICAgIDE2MTk2MiwgMTYxOTY0LCAxNjE5NjYsIDE2MTk2OCwgMTYxOTcwLCAxNjE5NzIsIDE2MTk3NCwgMTYxOTc2LCAxNjE5NzgsIAotICAgIDE2MTk4MCwgMTYxOTgyLCAxNjE5ODQsIDE2MTk4NiwgMTYxOTg4LCAxNjE5OTAsIDE2MTk5MiwgMTYxOTk0LCAxNjE5OTYsIAotICAgIDE2MTk5OCwgMTYyMDAwLCAxNjIwMDIsIDE2MjAwNCwgMTYyMDA2LCAxNjIwMDgsIDE2MjAxMCwgMTYyMDEyLCAxNjIwMTQsIAotICAgIDE2MjAxNiwgMTYyMDE4LCAxNjIwMjAsIDE2MjAyMiwgMTYyMDI0LCAxNjIwMjYsIDE2MjAyOCwgMTYyMDMwLCAxNjIwMzIsIAotICAgIDE2MjAzNCwgMTYyMDM2LCAxNjIwMzgsIDE2MjA0MCwgMTYyMDQyLCAxNjIwNDQsIDE2MjA0NiwgMTYyMDQ4LCAxNjIwNTAsIAotICAgIDE2MjA1MiwgMTYyMDU0LCAxNjIwNTYsIDE2MjA1OCwgMTYyMDYwLCAxNjIwNjIsIDE2MjA2NCwgMTYyMDY2LCAxNjIwNjgsIAotICAgIDE2MjA3MCwgMTYyMDcyLCAxNjIwNzQsIDE2MjA3NiwgMTYyMDc4LCAxNjIwODAsIDE2MjA4MiwgMTYyMDg0LCAxNjIwODYsIAotICAgIDE2MjA4OCwgMTYyMDkwLCAxNjIwOTIsIDE2MjA5NCwgMTYyMDk2LCAxNjIwOTgsIDE2MjEwMCwgMTYyMTAyLCAxNjIxMDQsIAotICAgIDE2MjEwNiwgMTYyMTA4LCAxNjIxMTAsIDE2MjExMiwgMTYyMTE0LCAxNjIxMTYsIDE2MjExOCwgMTYyMTIwLCAxNjIxMjIsIAotICAgIDE2MjEyNCwgMTYyMTI2LCAxNjIxMjgsIDE2MjEzMCwgMTYyMTMyLCAxNjIxMzQsIDE2MjEzNiwgMTYyMTM4LCAxNjIxNDAsIAotICAgIDE2MjE0MiwgMTYyMTQ0LCAxNjIxNDYsIDE2MjE0OCwgMTYyMTUwLCAxNjIxNTIsIDE2MjE1NCwgMTYyMTU2LCAxNjIxNTgsIAotICAgIDE2MjE2MCwgMTYyMTYyLCAxNjIxNjQsIDE2MjE2NiwgMTYyMTY4LCAxNjIxNzAsIDE2MjE3MiwgMTYyMTc0LCAxNjIxNzYsIAotICAgIDE2MjE3OCwgMTYyMTgwLCAxNjIxODIsIDE2MjE4NCwgMTYyMTg2LCAxNjIxODgsIDE2MjE5MCwgMTYyMTkyLCAxNjIxOTQsIAotICAgIDE2MjE5NiwgMTYyMTk4LCAxNjIyMDAsIDE2MjIwMiwgMTYyMjA0LCAxNjIyMDYsIDE2MjIwOCwgMTYyMjEwLCAxNjIyMTIsIAotICAgIDE2MjIxNCwgMTYyMjE2LCAxNjIyMTgsIDE2MjIyMCwgMTYyMjIyLCAxNjIyMjQsIDE2MjIyNiwgMTYyMjI4LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNjIyMzAsIDE2MjI0MCwgMTYyMjUwLCAxNjIyNTksIDE2MjI2OCwgMTYyMjgxLCAxNjIyOTQsIDE2MjMwNiwgCi0gICAgMTYyMzE4LCAxNjIzMjgsIDE2MjMzOCwgMTYyMzQ4LCAxNjIzNTgsIDE2MjM2OSwgMTYyMzgwLCAxNjIzOTAsIDE2MjM5OSwgCi0gICAgMTYyNDA4LCAxNjI0MTcsIDE2MjQzMCwgMTYyNDQzLCAxNjI0NTUsIDE2MjQ2NywgMTYyNDc3LCAxNjI0ODcsIDE2MjQ5NywgCi0gICAgMTYyNTA3LCAxNjI1MTYsIDE2MjUyNSwgMTYyNTM1LCAxNjI1NDUsIDE2MjU1NCwgMTYyNTYzLCAxNjI1NzMsIDE2MjU4MywgCi0gICAgMTYyNTkyLCAxNjI2MDEsIDE2MjYxMSwgMTYyNjIxLCAxNjI2MzIsIDE2MjY0MywgMTYyNjUzLCAxNjI2NjYsIDE2MjY3NywgCi0gICAgMTYyNjkxLCAxNjI2OTksIDE2MjcxMCwgMTYyNzE4LCAxNjI3MjYsIDE2MjczNCwgMTYyNzQyLCAxNjI3NTAsIDE2Mjc1OCwgCi0gICAgMTYyNzY3LCAxNjI3NzYsIDE2Mjc4NiwgMTYyNzk2LCAxNjI4MDUsIDE2MjgxNCwgMTYyODI0LCAxNjI4MzQsIDE2Mjg0MiwgCi0gICAgMTYyODUwLCAxNjI4NTcsIDE2Mjg2NywgMTYyODc2LCAxNjI4ODQsIDE2Mjg5MSwgMTYyOTAxLCAxNjI5MTAsIDE2MjkyMSwgCi0gICAgMTYyOTMyLCAxNjI5NDQsIDE2Mjk1NSwgMTYyOTY1LCAxNjI5NzYsIDE2Mjk4NiwgMTYyOTk3LCAxNjMwMDUsIDE2MzAwOSwgCi0gICAgMTYzMDEzLCAxNjMwMTcsIDE2MzAyMSwgMTYzMDI1LCAxNjMwMjksIDE2MzAzMywgMTYzMDM3LCAxNjMwNDEsIDE2MzA0NSwgCi0gICAgMTYzMDQ5LCAxNjMwNTMsIDE2MzA1NiwgMTYzMDU5LCAxNjMwNjMsIDE2MzA2NywgMTYzMDcxLCAxNjMwNzUsIDE2MzA3OSwgCi0gICAgMTYzMDgzLCAxNjMwODcsIDE2MzA5MSwgMTYzMDk0LCAxNjMwOTgsIDE2MzEwMiwgMTYzMTA2LCAxNjMxMTAsIDE2MzExNCwgCi0gICAgMTYzMTE4LCAxNjMxMjIsIDE2MzEyNiwgMTYzMTMwLCAxNjMxMzQsIDE2MzEzOCwgMTYzMTQyLCAxNjMxNDYsIDE2MzE1MCwgCi0gICAgMTYzMTU0LCAxNjMxNTgsIDE2MzE2MiwgMTYzMTY2LCAxNjMxNzAsIDE2MzE3NCwgMTYzMTc4LCAxNjMxODIsIDE2MzE4NiwgCi0gICAgMTYzMTkwLCAxNjMxOTQsIDE2MzE5OCwgMTYzMjAyLCAxNjMyMDYsIDE2MzIxMCwgMTYzMjE0LCAxNjMyMTgsIDE2MzIyMiwgCi0gICAgMTYzMjI2LCAxNjMyMzAsIDE2MzIzNCwgMTYzMjM4LCAxNjMyNDIsIDE2MzI0NiwgMTYzMjUwLCAxNjMyNTQsIDE2MzI1OCwgCi0gICAgMTYzMjYyLCAxNjMyNjYsIDE2MzI3MCwgMTYzMjc0LCAxNjMyNzgsIDE2MzI4MiwgMTYzMjg2LCAxNjMyOTAsIDE2MzI5NCwgCi0gICAgMTYzMjk4LCAxNjMzMDIsIDE2MzMwNiwgMTYzMzEwLCAxNjMzMTQsIDE2MzMxOCwgMTYzMzIyLCAxNjMzMjYsIDE2MzMzMCwgCi0gICAgMTYzMzM0LCAxNjMzMzgsIDE2MzM0MiwgMTYzMzQ2LCAxNjMzNTAsIDE2MzM1NCwgMTYzMzU4LCAxNjMzNjIsIDE2MzM2NiwgCi0gICAgMTYzMzcwLCAxNjMzNzQsIDE2MzM3OCwgMTYzMzgyLCAxNjMzODYsIDE2MzM5MCwgMTYzMzk0LCAxNjMzOTgsIDE2MzQwMSwgCi0gICAgMTYzNDA1LCAxNjM0MDksIDE2MzQxMywgMTYzNDE3LCAxNjM0MjEsIDE2MzQyNSwgMTYzNDI5LCAxNjM0MzMsIDE2MzQzNywgCi0gICAgMTYzNDQxLCAxNjM0NDUsIDE2MzQ0OSwgMTYzNDUzLCAxNjM0NTcsIDE2MzQ2MSwgMTYzNDY1LCAxNjM0NjksIDE2MzQ3MywgCi0gICAgMTYzNDc3LCAxNjM0ODEsIDE2MzQ4NSwgMTYzNDg5LCAxNjM0OTMsIDE2MzQ5NywgMTYzNTAxLCAxNjM1MDUsIDE2MzUwOSwgCi0gICAgMTYzNTEzLCAxNjM1MTcsIDE2MzUyMSwgMTYzNTI1LCAxNjM1MjksIDE2MzUzMywgMTYzNTM3LCAxNjM1NDEsIDE2MzU0NSwgCi0gICAgMTYzNTQ5LCAxNjM1NTMsIDE2MzU1NywgMTYzNTYxLCAxNjM1NjUsIDE2MzU2OSwgMTYzNTczLCAxNjM1NzcsIDE2MzU4MSwgCi0gICAgMTYzNTg1LCAxNjM1ODksIDE2MzU5MywgMTYzNTk3LCAxNjM2MDEsIDE2MzYwNSwgMTYzNjA5LCAxNjM2MTMsIDE2MzYxNywgCi0gICAgMTYzNjIxLCAxNjM2MjUsIDE2MzYyOSwgMTYzNjMzLCAxNjM2MzcsIDE2MzY0MSwgMTYzNjQ1LCAxNjM2NDksIDE2MzY1MywgCi0gICAgMTYzNjU3LCAxNjM2NjEsIDE2MzY2NSwgMTYzNjY5LCAxNjM2NzMsIDE2MzY3NywgMTYzNjgxLCAxNjM2ODUsIDE2MzY4OSwgCi0gICAgMTYzNjkzLCAxNjM2OTcsIDE2MzcwMSwgMTYzNzA1LCAxNjM3MDksIDE2MzcxMywgMTYzNzE3LCAxNjM3MjEsIDE2MzcyNSwgCi0gICAgMTYzNzI5LCAxNjM3MzMsIDE2MzczNywgMTYzNzQxLCAxNjM3NDUsIDE2Mzc0OSwgMTYzNzUzLCAxNjM3NTcsIDE2Mzc2MSwgCi0gICAgMTYzNzY1LCAxNjM3NjksIDE2Mzc3MywgMTYzNzc3LCAxNjM3ODEsIDE2Mzc4NSwgMTYzNzg5LCAxNjM3OTMsIDE2Mzc5NywgCi0gICAgMTYzODAxLCAxNjM4MDUsIDE2MzgwOSwgMTYzODEzLCAxNjM4MTcsIDE2MzgyMSwgMTYzODI1LCAxNjM4MjksIDE2MzgzMywgCi0gICAgMTYzODM3LCAxNjM4NDEsIDE2Mzg0NSwgMTYzODQ5LCAxNjM4NTMsIDE2Mzg1NywgMTYzODYxLCAxNjM4NjUsIDE2Mzg2OSwgCi0gICAgMTYzODczLCAxNjM4NzcsIDE2Mzg4MSwgMTYzODg1LCAxNjM4ODksIDE2Mzg5MywgMTYzODk3LCAxNjM5MDEsIDE2MzkwNSwgCi0gICAgMTYzOTA5LCAxNjM5MTMsIDE2MzkxNywgMTYzOTIxLCAxNjM5MjUsIDE2MzkyOSwgMTYzOTMzLCAxNjM5MzcsIDE2Mzk0MSwgCi0gICAgMTYzOTQ1LCAxNjM5NDksIDE2Mzk1MywgMTYzOTU3LCAxNjM5NjEsIDE2Mzk2NSwgMTYzOTY5LCAxNjM5NzMsIDE2Mzk3NywgCi0gICAgMTYzOTgxLCAxNjM5ODUsIDE2Mzk4OSwgMTYzOTkzLCAxNjM5OTcsIDE2NDAwMSwgMTY0MDA1LCAxNjQwMDksIDE2NDAxMywgCi0gICAgMTY0MDE3LCAxNjQwMjEsIDE2NDAyNSwgMTY0MDI5LCAxNjQwMzMsIDE2NDAzNywgMTY0MDQxLCAxNjQwNDUsIDE2NDA0OSwgCi0gICAgMTY0MDUzLCAxNjQwNTcsIDE2NDA2MSwgMTY0MDY1LCAxNjQwNjksIDE2NDA3MywgMTY0MDc3LCAxNjQwODEsIDE2NDA4NSwgCi0gICAgMTY0MDg5LCAxNjQwOTMsIDE2NDA5NywgMTY0MTAxLCAxNjQxMDUsIDE2NDEwOSwgMTY0MTEzLCAxNjQxMTcsIDE2NDEyMSwgCi0gICAgMTY0MTI1LCAxNjQxMjksIDE2NDEzMywgMTY0MTM3LCAxNjQxNDEsIDE2NDE0NSwgMTY0MTQ5LCAxNjQxNTMsIDE2NDE1NywgCi0gICAgMTY0MTYxLCAxNjQxNjUsIDE2NDE3MCwgMTY0MTc1LCAxNjQxODAsIDE2NDE4NCwgMTY0MTkwLCAxNjQxOTcsIDE2NDIwNCwgCi0gICAgMTY0MjExLCAxNjQyMTgsIDE2NDIyNSwgMTY0MjMyLCAxNjQyMzksIDE2NDI0NiwgMTY0MjUzLCAxNjQyNjAsIDE2NDI2NywgCi0gICAgMTY0Mjc0LCAxNjQyODEsIDE2NDI4OCwgMTY0Mjk1LCAxNjQzMDIsIDE2NDMwOCwgMTY0MzE1LCAxNjQzMjIsIDE2NDMyOSwgCi0gICAgMTY0MzM2LCAxNjQzNDMsIDE2NDM1MCwgMTY0MzU3LCAxNjQzNjQsIDE2NDM3MSwgMTY0Mzc4LCAxNjQzODUsIDE2NDM5MiwgCi0gICAgMTY0Mzk5LCAxNjQ0MDYsIDE2NDQxMiwgMTY0NDE5LCAxNjQ0MjYsIDE2NDQzNSwgMTY0NDQ0LCAxNjQ0NTMsIDE2NDQ2MiwgCi0gICAgMTY0NDY3LCAxNjQ0NzIsIDE2NDQ3OCwgMTY0NDg0LCAxNjQ0OTAsIDE2NDQ5NiwgMTY0NTAyLCAxNjQ1MDgsIDE2NDUxNCwgCi0gICAgMTY0NTIwLCAxNjQ1MjYsIDE2NDUzMiwgMTY0NTM4LCAxNjQ1NDQsIDE2NDU0OSwgMTY0NTU1LCAxNjQ1NjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE2NjExMSwgMTY2MTE0LCAxNjYxMTcsIDE2NjEyMCwgMTY2MTIzLCAxNjYxMjYsIDE2NjEyOSwgMTY2MTMyLCAKKyAgICAxNjYxMzUsIDE2NjEzOCwgMTY2MTQxLCAxNjYxNDQsIDE2NjE0NywgMTY2MTUwLCAxNjYxNTMsIDE2NjE1NiwgMTY2MTU5LCAKKyAgICAxNjYxNjIsIDE2NjE2NSwgMTY2MTY4LCAxNjYxNzEsIDE2NjE3NCwgMTY2MTc3LCAxNjYxODAsIDE2NjE4MywgMTY2MTg2LCAKKyAgICAxNjYxODksIDE2NjE5MiwgMTY2MTk1LCAxNjYxOTgsIDE2NjIwMSwgMTY2MjA0LCAxNjYyMDcsIDE2NjIxMCwgMTY2MjEzLCAKKyAgICAxNjYyMTYsIDE2NjIxOSwgMTY2MjIyLCAxNjYyMjUsIDE2NjIyOCwgMTY2MjMxLCAxNjYyMzQsIDE2NjIzNywgMTY2MjQwLCAKKyAgICAxNjYyNDMsIDE2NjI0NiwgMTY2MjQ5LCAxNjYyNTIsIDE2NjI1NSwgMTY2MjU4LCAxNjYyNjEsIDE2NjI2NCwgMTY2MjY3LCAKKyAgICAxNjYyNzAsIDE2NjI3MywgMTY2Mjc2LCAxNjYyNzksIDE2NjI4MiwgMTY2Mjg1LCAxNjYyODgsIDE2NjI5MSwgMTY2Mjk0LCAKKyAgICAxNjYyOTcsIDE2NjMwMCwgMTY2MzAzLCAxNjYzMDYsIDE2NjMwOSwgMTY2MzEyLCAxNjYzMTUsIDE2NjMxOCwgMTY2MzIxLCAKKyAgICAxNjYzMjQsIDE2NjMyNywgMTY2MzMwLCAxNjYzMzMsIDE2NjMzNiwgMTY2MzM5LCAxNjYzNDIsIDE2NjM0NSwgMTY2MzQ4LCAKKyAgICAxNjYzNTEsIDE2NjM1NCwgMTY2MzU3LCAxNjYzNjAsIDE2NjM2MywgMTY2MzY2LCAxNjYzNjksIDE2NjM3MiwgMTY2Mzc1LCAKKyAgICAxNjYzNzgsIDE2NjM4MSwgMTY2Mzg0LCAxNjYzODcsIDE2NjM5MCwgMTY2MzkzLCAxNjYzOTYsIDE2NjM5OSwgMTY2NDAyLCAKKyAgICAxNjY0MDUsIDE2NjQwOCwgMTY2NDExLCAxNjY0MTQsIDE2NjQxNywgMTY2NDIwLCAxNjY0MjMsIDE2NjQyNiwgMTY2NDI5LCAKKyAgICAxNjY0MzIsIDE2NjQzNSwgMTY2NDM4LCAxNjY0NDEsIDE2NjQ0NCwgMTY2NDQ3LCAxNjY0NTAsIDE2NjQ1MywgMTY2NDU2LCAKKyAgICAxNjY0NTksIDE2NjQ2MiwgMTY2NDY1LCAxNjY0NjgsIDE2NjQ3MSwgMTY2NDc0LCAxNjY0NzcsIDE2NjQ4MCwgMTY2NDgzLCAKKyAgICAxNjY0ODYsIDE2NjQ4OSwgMTY2NDkyLCAxNjY0OTUsIDE2NjQ5OCwgMTY2NTAxLCAxNjY1MDQsIDE2NjUwNywgMTY2NTEwLCAKKyAgICAxNjY1MTMsIDE2NjUxNiwgMTY2NTE5LCAxNjY1MjIsIDE2NjUyNSwgMTY2NTI4LCAxNjY1MzEsIDE2NjUzNCwgMTY2NTM3LCAKKyAgICAxNjY1NDAsIDE2NjU0MywgMTY2NTQ2LCAxNjY1NDksIDE2NjU1MiwgMTY2NTU1LCAxNjY1NTgsIDE2NjU2MSwgMTY2NTY0LCAKKyAgICAxNjY1NjcsIDE2NjU3MCwgMTY2NTczLCAxNjY1NzYsIDE2NjU3OSwgMTY2NTgyLCAxNjY1ODUsIDE2NjU4OCwgMTY2NTkxLCAKKyAgICAxNjY1OTQsIDE2NjU5NywgMTY2NjAwLCAxNjY2MDMsIDE2NjYwNiwgMTY2NjA5LCAxNjY2MTIsIDE2NjYxNSwgMTY2NjE4LCAKKyAgICAxNjY2MjEsIDE2NjYyNCwgMTY2NjI3LCAxNjY2MzAsIDE2NjYzMywgMTY2NjM2LCAxNjY2MzksIDE2NjY0MiwgMTY2NjQ1LCAKKyAgICAxNjY2NDgsIDE2NjY1MSwgMTY2NjU0LCAxNjY2NTcsIDE2NjY2MCwgMTY2NjYzLCAxNjY2NjYsIDE2NjY2OSwgMTY2NjcyLCAKKyAgICAxNjY2NzUsIDE2NjY3OCwgMTY2NjgxLCAxNjY2ODQsIDE2NjY4NywgMTY2NjkwLCAxNjY2OTMsIDE2NjY5NiwgMTY2Njk5LCAKKyAgICAxNjY3MDIsIDE2NjcwNSwgMTY2NzA4LCAxNjY3MTEsIDE2NjcxNCwgMTY2NzE3LCAxNjY3MjAsIDE2NjcyMywgMTY2NzI2LCAKKyAgICAxNjY3MjksIDE2NjczMiwgMTY2NzM1LCAxNjY3MzgsIDE2Njc0MSwgMTY2NzQ0LCAxNjY3NDcsIDE2Njc1MCwgMTY2NzUzLCAKKyAgICAxNjY3NTYsIDE2Njc1OSwgMTY2NzYyLCAxNjY3NjUsIDE2Njc2OCwgMTY2NzcxLCAxNjY3NzQsIDE2Njc3NywgMTY2NzgwLCAKKyAgICAxNjY3ODMsIDE2Njc4NiwgMTY2Nzg5LCAxNjY3OTIsIDE2Njc5NSwgMTY2Nzk4LCAxNjY4MDEsIDE2NjgwNCwgMTY2ODA3LCAKKyAgICAxNjY4MTAsIDE2NjgxMywgMTY2ODE2LCAxNjY4MTksIDE2NjgyMiwgMTY2ODI1LCAxNjY4MjgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NjgzMSwgMTY2ODMzLCAxNjY4MzUsIDE2Njg0MCwgMTY2ODQyLCAKKyAgICAxNjY4NDcsIDE2Njg0OSwgMTY2ODU0LCAxNjY4NTYsIDE2Njg2MSwgMTY2ODYzLCAxNjY4NjUsIDE2Njg2NywgMTY2ODY5LCAKKyAgICAxNjY4NzEsIDE2Njg3MywgMTY2ODc1LCAxNjY4NzcsIDE2Njg3OSwgMTY2ODgyLCAxNjY4ODYsIDE2Njg4OCwgMTY2ODkwLCAKKyAgICAxNjY4OTQsIDE2Njg5OCwgMTY2OTAzLCAxNjY5MDUsIDE2NjkwNywgMTY2OTA5LCAxNjY5MTMsIDE2NjkxNiwgMTY2OTE4LCAKKyAgICAxNjY5MjIsIDE2NjkyNCwgMTY2OTI4LCAxNjY5MzAsIDE2NjkzNCwgMTY2OTM3LCAxNjY5MzksIDE2Njk0MywgMTY2OTQ3LCAKKyAgICAxNjY5NDksIDE2Njk1NSwgMTY2OTU3LCAxNjY5NjIsIDE2Njk2NCwgMTY2OTY5LCAxNjY5NzEsIDE2Njk3NiwgMTY2OTc4LCAKKyAgICAxNjY5ODMsIDE2Njk4NSwgMTY2OTg4LCAxNjY5OTAsIDE2Njk5NCwgMTY2OTk2LCAxNjcwMDMsIDE2NzAwNSwgMTY3MDA3LCAKKyAgICAxNjcwMDksIDE2NzAxNCwgMTY3MDE2LCAxNjcwMTgsIDE2NzAyMCwgMTY3MDIyLCAxNjcwMjQsIDE2NzAyOSwgMTY3MDMzLCAKKyAgICAxNjcwMzUsIDE2NzA0MCwgMTY3MDQ0LCAxNjcwNDYsIDE2NzA1MSwgMTY3MDU1LCAxNjcwNTcsIDE2NzA2MiwgMTY3MDY2LCAKKyAgICAxNjcwNjgsIDE2NzA3MCwgMTY3MDcyLCAxNjcwNzQsIDE2NzA3OCwgMTY3MDgwLCAxNjcwODUsIDE2NzA4NywgMTY3MDkzLCAKKyAgICAxNjcwOTUsIDE2NzEwMSwgMTY3MTAzLCAxNjcxMDUsIDE2NzEwNywgMTY3MTExLCAxNjcxMTMsIDE2NzEyMCwgMTY3MTIyLCAKKyAgICAxNjcxMjksIDE2NzEzMSwgMTY3MTM2LCAxNjcxNDIsIDE2NzE0NCwgMTY3MTUwLCAxNjcxNTcsIDE2NzE1OSwgMTY3MTY1LCAKKyAgICAxNjcxNzAsIDE2NzE3MiwgMTY3MTc4LCAxNjcxODQsIDE2NzE4NiwgMTY3MTkyLCAxNjcxOTgsIDE2NzIwMCwgMTY3MjA2LCAKKyAgICAxNjcyMTAsIDE2NzIxMiwgMTY3MjE3LCAxNjcyMTksIDE2NzIyMSwgMTY3MjI2LCAxNjcyMjgsIDE2NzIzMCwgMTY3MjM2LCAKKyAgICAxNjcyMzgsIDE2NzI0MywgMTY3MjQ3LCAxNjcyNDksIDE2NzI1NCwgMTY3MjU4LCAxNjcyNjAsIDE2NzI2NiwgMTY3MjY4LCAKKyAgICAxNjcyNzIsIDE2NzI3NCwgMTY3Mjc4LCAxNjcyODAsIDE2NzI4NywgMTY3Mjk0LCAxNjcyOTYsIDE2NzMwMywgMTY3MzEwLCAKKyAgICAxNjczMTIsIDE2NzMxNywgMTY3MzE5LCAxNjczMjYsIDE2NzMyOCwgMTY3MzMzLCAxNjczMzUsIDE2NzM0MSwgMTY3MzQzLCAKKyAgICAxNjczNDcsIDE2NzM0OSwgMTY3MzU1LCAxNjczNTcsIDE2NzM2MSwgMTY3MzYzLCAxNjczNjksIDE2NzM3MSwgMTY3MzczLCAKKyAgICAxNjczNzUsIDE2NzM4MCwgMTY3Mzg1LCAxNjczODcsIDE2NzM4OSwgMTY3Mzk5LCAxNjc0MDQsIDE2NzQxMSwgMTY3NDE4LCAKKyAgICAxNjc0MjMsIDE2NzQyOCwgMTY3NDQwLCAxNjc0NDIsIDE2NzQ0NCwgMTY3NDQ2LCAxNjc0NDgsIDE2NzQ1MCwgMTY3NDUyLCAKKyAgICAxNjc0NTQsIDE2NzQ1NiwgMTY3NDU4LCAxNjc0NjAsIDE2NzQ2MiwgMTY3NDY0LCAxNjc0NjYsIDE2NzQ2OCwgMTY3NDcwLCAKKyAgICAxNjc0NzIsIDE2NzQ3NCwgMTY3NDc2LCAxNjc0NzgsIDE2NzQ4MCwgMTY3NDgyLCAxNjc0ODgsIDE2NzQ5NSwgMTY3NTAwLCAKKyAgICAxNjc1MDgsIDE2NzUxNiwgMTY3NTIxLCAxNjc1MzIsIDE2NzUzNCwgMTY3NTM2LCAxNjc1MzgsIDE2NzU0MCwgMTY3NTQyLCAKKyAgICAxNjc1NDQsIDE2NzU0NiwgMTY3NTQ4LCAxNjc1NTAsIDE2NzU1MiwgMTY3NTU0LCAxNjc1NTYsIDE2NzU1OCwgMTY3NTYwLCAKKyAgICAxNjc1NjIsIDE2NzU2NCwgMTY3NTY5LCAxNjc1NzEsIDE2NzU3MywgMTY3NTc5LCAxNjc1OTEsIDE2NzYwMiwgMTY3NjA0LCAKKyAgICAxNjc2MDYsIDE2NzYwOCwgMTY3NjEwLCAxNjc2MTIsIDE2NzYxNCwgMTY3NjE2LCAxNjc2MTgsIDE2NzYyMCwgMTY3NjIyLCAKKyAgICAxNjc2MjQsIDE2NzYyNiwgMTY3NjI4LCAxNjc2MzAsIDE2NzYzMiwgMTY3NjM0LCAxNjc2MzYsIDE2NzYzOCwgMTY3NjQwLCAKKyAgICAxNjc2NDIsIDE2NzY0NCwgMTY3NjQ2LCAxNjc2NDgsIDE2NzY1MCwgMTY3NjUyLCAxNjc2NTQsIDE2NzY1NiwgMTY3NjU4LCAKKyAgICAxNjc2NjAsIDE2NzY2MiwgMTY3NjY0LCAxNjc2NjYsIDE2NzY2OCwgMTY3NjcwLCAxNjc2NzIsIDE2NzY3NCwgMTY3Njc2LCAKKyAgICAxNjc2NzgsIDE2NzY4MCwgMTY3NjgyLCAxNjc2ODQsIDE2NzY4NiwgMTY3Njg4LCAxNjc2OTAsIDE2NzY5MiwgMTY3Njk0LCAKKyAgICAxNjc2OTYsIDE2NzY5OCwgMTY3NzAwLCAxNjc3MDIsIDE2NzcwNCwgMTY3NzA2LCAxNjc3MDgsIDE2NzcxMCwgMTY3NzEyLCAKKyAgICAxNjc3MTQsIDE2NzcxNiwgMTY3NzE4LCAxNjc3MjAsIDE2NzcyMiwgMTY3NzI0LCAxNjc3MjYsIDE2NzcyOCwgMTY3NzMwLCAKKyAgICAxNjc3MzIsIDE2NzczNCwgMTY3NzM2LCAxNjc3MzgsIDE2Nzc0MCwgMTY3NzQyLCAxNjc3NDQsIDE2Nzc0NiwgMTY3NzQ4LCAKKyAgICAxNjc3NTAsIDE2Nzc1MiwgMTY3NzU0LCAxNjc3NTYsIDE2Nzc1OCwgMTY3NzYwLCAxNjc3NjIsIDE2Nzc2NCwgMTY3NzY2LCAKKyAgICAxNjc3NjgsIDE2Nzc3MCwgMTY3NzcyLCAxNjc3NzQsIDE2Nzc3NiwgMTY3Nzc4LCAxNjc3ODAsIDE2Nzc4MiwgMTY3Nzg0LCAKKyAgICAxNjc3ODYsIDE2Nzc4OCwgMTY3NzkwLCAxNjc3OTIsIDE2Nzc5NCwgMTY3Nzk2LCAxNjc3OTgsIDE2NzgwMCwgMTY3ODAyLCAKKyAgICAxNjc4MDQsIDE2NzgwNiwgMTY3ODA4LCAxNjc4MTAsIDE2NzgxMiwgMTY3ODE0LCAxNjc4MTYsIDE2NzgxOCwgMTY3ODIwLCAKKyAgICAxNjc4MjIsIDE2NzgyNCwgMTY3ODI2LCAxNjc4MjgsIDE2NzgzMCwgMTY3ODMyLCAxNjc4MzQsIDE2NzgzNiwgMTY3ODM4LCAKKyAgICAxNjc4NDAsIDE2Nzg0MiwgMTY3ODQ0LCAxNjc4NDYsIDE2Nzg0OCwgMTY3ODUwLCAxNjc4NTIsIDE2Nzg1NCwgMTY3ODU2LCAKKyAgICAxNjc4NTgsIDE2Nzg2MCwgMTY3ODYyLCAxNjc4NjQsIDE2Nzg2NiwgMTY3ODY4LCAxNjc4NzAsIDE2Nzg3MiwgMTY3ODc0LCAKKyAgICAxNjc4NzYsIDE2Nzg3OCwgMTY3ODgwLCAxNjc4ODIsIDE2Nzg4NCwgMTY3ODg2LCAxNjc4ODgsIDE2Nzg5MCwgMTY3ODkyLCAKKyAgICAxNjc4OTQsIDE2Nzg5NiwgMTY3ODk4LCAxNjc5MDAsIDE2NzkwMiwgMTY3OTA0LCAxNjc5MDYsIDE2NzkwOCwgMTY3OTEwLCAKKyAgICAxNjc5MTIsIDE2NzkxNCwgMTY3OTE2LCAxNjc5MTgsIDE2NzkyMCwgMTY3OTIyLCAxNjc5MjQsIDE2NzkyNiwgMTY3OTI4LCAKKyAgICAxNjc5MzAsIDE2NzkzMiwgMTY3OTM0LCAxNjc5MzYsIDE2NzkzOCwgMTY3OTQwLCAxNjc5NDIsIDE2Nzk0NCwgMTY3OTQ2LCAKKyAgICAxNjc5NDgsIDE2Nzk1MCwgMTY3OTUyLCAxNjc5NTQsIDE2Nzk1NiwgMTY3OTU4LCAxNjc5NjAsIDE2Nzk2MiwgMTY3OTY0LCAKKyAgICAxNjc5NjYsIDE2Nzk2OCwgMTY3OTcwLCAxNjc5NzIsIDE2Nzk3NCwgMTY3OTc2LCAxNjc5NzgsIDE2Nzk4MCwgMTY3OTgyLCAKKyAgICAxNjc5ODQsIDE2Nzk4NiwgMTY3OTg4LCAxNjc5OTAsIDE2Nzk5MiwgMTY3OTk0LCAxNjc5OTYsIDE2Nzk5OCwgMTY4MDAwLCAKKyAgICAxNjgwMDIsIDE2ODAwNCwgMTY4MDA2LCAxNjgwMDgsIDE2ODAxMCwgMTY4MDEyLCAxNjgwMTQsIDE2ODAxNiwgMTY4MDE4LCAKKyAgICAxNjgwMjAsIDE2ODAyMiwgMTY4MDI0LCAxNjgwMjYsIDE2ODAyOCwgMTY4MDMwLCAxNjgwMzIsIDE2ODAzNCwgMTY4MDM2LCAKKyAgICAxNjgwMzgsIDE2ODA0MCwgMTY4MDQyLCAxNjgwNDQsIDE2ODA0NiwgMTY4MDQ4LCAxNjgwNTAsIDE2ODA1MiwgMTY4MDU0LCAKKyAgICAxNjgwNTYsIDE2ODA1OCwgMTY4MDYwLCAxNjgwNjIsIDE2ODA2NCwgMTY4MDY2LCAxNjgwNjgsIDE2ODA3MCwgMTY4MDcyLCAKKyAgICAxNjgwNzQsIDE2ODA3NiwgMTY4MDc4LCAxNjgwODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODA4MiwgMTY4MDkyLCAxNjgxMDIsIAorICAgIDE2ODExMSwgMTY4MTIwLCAxNjgxMzMsIDE2ODE0NiwgMTY4MTU4LCAxNjgxNzAsIDE2ODE4MCwgMTY4MTkwLCAxNjgyMDAsIAorICAgIDE2ODIxMCwgMTY4MjIxLCAxNjgyMzIsIDE2ODI0MiwgMTY4MjUxLCAxNjgyNjAsIDE2ODI2OSwgMTY4MjgyLCAxNjgyOTUsIAorICAgIDE2ODMwNywgMTY4MzE5LCAxNjgzMjksIDE2ODMzOSwgMTY4MzQ5LCAxNjgzNTksIDE2ODM2OCwgMTY4Mzc3LCAxNjgzODcsIAorICAgIDE2ODM5NywgMTY4NDA2LCAxNjg0MTUsIDE2ODQyNSwgMTY4NDM1LCAxNjg0NDQsIDE2ODQ1MywgMTY4NDYzLCAxNjg0NzMsIAorICAgIDE2ODQ4NCwgMTY4NDk1LCAxNjg1MDUsIDE2ODUxOCwgMTY4NTI5LCAxNjg1NDMsIDE2ODU1MSwgMTY4NTYyLCAxNjg1NzAsIAorICAgIDE2ODU3OCwgMTY4NTg2LCAxNjg1OTQsIDE2ODYwMiwgMTY4NjEwLCAxNjg2MTksIDE2ODYyOCwgMTY4NjM4LCAxNjg2NDgsIAorICAgIDE2ODY1NywgMTY4NjY2LCAxNjg2NzYsIDE2ODY4NiwgMTY4Njk0LCAxNjg3MDIsIDE2ODcwOSwgMTY4NzE5LCAxNjg3MjgsIAorICAgIDE2ODczNiwgMTY4NzQzLCAxNjg3NTMsIDE2ODc2MiwgMTY4NzczLCAxNjg3ODQsIDE2ODc5NiwgMTY4ODA3LCAxNjg4MTcsIAorICAgIDE2ODgyOCwgMTY4ODM4LCAxNjg4NDksIDE2ODg1NywgMTY4ODYxLCAxNjg4NjUsIDE2ODg2OSwgMTY4ODczLCAxNjg4NzcsIAorICAgIDE2ODg4MSwgMTY4ODg1LCAxNjg4ODksIDE2ODg5MywgMTY4ODk3LCAxNjg5MDEsIDE2ODkwNSwgMTY4OTA4LCAxNjg5MTEsIAorICAgIDE2ODkxNSwgMTY4OTE5LCAxNjg5MjMsIDE2ODkyNywgMTY4OTMxLCAxNjg5MzUsIDE2ODkzOSwgMTY4OTQzLCAxNjg5NDcsIAorICAgIDE2ODk1MSwgMTY4OTU1LCAxNjg5NTksIDE2ODk2MywgMTY4OTY3LCAxNjg5NzEsIDE2ODk3NSwgMTY4OTc5LCAxNjg5ODMsIAorICAgIDE2ODk4NywgMTY4OTkxLCAxNjg5OTUsIDE2ODk5OSwgMTY5MDAzLCAxNjkwMDcsIDE2OTAxMSwgMTY5MDE1LCAxNjkwMTksIAorICAgIDE2OTAyMywgMTY5MDI3LCAxNjkwMzEsIDE2OTAzNSwgMTY5MDM5LCAxNjkwNDMsIDE2OTA0NywgMTY5MDUxLCAxNjkwNTUsIAorICAgIDE2OTA1OSwgMTY5MDYzLCAxNjkwNjcsIDE2OTA3MSwgMTY5MDc1LCAxNjkwNzksIDE2OTA4MywgMTY5MDg3LCAxNjkwOTEsIAorICAgIDE2OTA5NSwgMTY5MDk5LCAxNjkxMDMsIDE2OTEwNywgMTY5MTExLCAxNjkxMTUsIDE2OTExOSwgMTY5MTIzLCAxNjkxMjcsIAorICAgIDE2OTEzMSwgMTY5MTM1LCAxNjkxMzksIDE2OTE0MywgMTY5MTQ3LCAxNjkxNTEsIDE2OTE1NSwgMTY5MTU5LCAxNjkxNjMsIAorICAgIDE2OTE2NywgMTY5MTcxLCAxNjkxNzUsIDE2OTE3OSwgMTY5MTgzLCAxNjkxODcsIDE2OTE5MSwgMTY5MTk1LCAxNjkxOTksIAorICAgIDE2OTIwMywgMTY5MjA3LCAxNjkyMTEsIDE2OTIxNSwgMTY5MjE5LCAxNjkyMjMsIDE2OTIyNywgMTY5MjMxLCAxNjkyMzUsIAorICAgIDE2OTIzOSwgMTY5MjQzLCAxNjkyNDcsIDE2OTI1MSwgMTY5MjU0LCAxNjkyNTgsIDE2OTI2MiwgMTY5MjY2LCAxNjkyNzAsIAorICAgIDE2OTI3NCwgMTY5Mjc4LCAxNjkyODIsIDE2OTI4NiwgMTY5MjkwLCAxNjkyOTQsIDE2OTI5OCwgMTY5MzAyLCAxNjkzMDYsIAorICAgIDE2OTMxMCwgMTY5MzE0LCAxNjkzMTgsIDE2OTMyMiwgMTY5MzI2LCAxNjkzMzAsIDE2OTMzNCwgMTY5MzM4LCAxNjkzNDIsIAorICAgIDE2OTM0NiwgMTY5MzUwLCAxNjkzNTQsIDE2OTM1OCwgMTY5MzYyLCAxNjkzNjYsIDE2OTM3MCwgMTY5Mzc0LCAxNjkzNzgsIAorICAgIDE2OTM4MiwgMTY5Mzg2LCAxNjkzOTAsIDE2OTM5NCwgMTY5Mzk4LCAxNjk0MDIsIDE2OTQwNiwgMTY5NDEwLCAxNjk0MTQsIAorICAgIDE2OTQxOCwgMTY5NDIyLCAxNjk0MjYsIDE2OTQzMCwgMTY5NDM0LCAxNjk0MzgsIDE2OTQ0MiwgMTY5NDQ2LCAxNjk0NTAsIAorICAgIDE2OTQ1NCwgMTY5NDU4LCAxNjk0NjIsIDE2OTQ2NiwgMTY5NDcwLCAxNjk0NzQsIDE2OTQ3OCwgMTY5NDgyLCAxNjk0ODYsIAorICAgIDE2OTQ5MCwgMTY5NDk0LCAxNjk0OTgsIDE2OTUwMiwgMTY5NTA2LCAxNjk1MTAsIDE2OTUxNCwgMTY5NTE4LCAxNjk1MjIsIAorICAgIDE2OTUyNiwgMTY5NTMwLCAxNjk1MzQsIDE2OTUzOCwgMTY5NTQyLCAxNjk1NDYsIDE2OTU1MCwgMTY5NTU0LCAxNjk1NTgsIAorICAgIDE2OTU2MiwgMTY5NTY2LCAxNjk1NzAsIDE2OTU3NCwgMTY5NTc4LCAxNjk1ODIsIDE2OTU4NiwgMTY5NTkwLCAxNjk1OTQsIAorICAgIDE2OTU5OCwgMTY5NjAyLCAxNjk2MDYsIDE2OTYxMCwgMTY5NjE0LCAxNjk2MTgsIDE2OTYyMiwgMTY5NjI2LCAxNjk2MzAsIAorICAgIDE2OTYzNCwgMTY5NjM4LCAxNjk2NDIsIDE2OTY0NiwgMTY5NjUwLCAxNjk2NTQsIDE2OTY1OCwgMTY5NjYyLCAxNjk2NjYsIAorICAgIDE2OTY3MCwgMTY5Njc0LCAxNjk2NzgsIDE2OTY4MiwgMTY5Njg2LCAxNjk2OTAsIDE2OTY5NCwgMTY5Njk4LCAxNjk3MDIsIAorICAgIDE2OTcwNiwgMTY5NzEwLCAxNjk3MTQsIDE2OTcxOCwgMTY5NzIyLCAxNjk3MjYsIDE2OTczMCwgMTY5NzM0LCAxNjk3MzgsIAorICAgIDE2OTc0MiwgMTY5NzQ2LCAxNjk3NTAsIDE2OTc1NCwgMTY5NzU4LCAxNjk3NjIsIDE2OTc2NiwgMTY5NzcwLCAxNjk3NzQsIAorICAgIDE2OTc3OCwgMTY5NzgyLCAxNjk3ODYsIDE2OTc5MCwgMTY5Nzk0LCAxNjk3OTgsIDE2OTgwMiwgMTY5ODA2LCAxNjk4MTAsIAorICAgIDE2OTgxNCwgMTY5ODE4LCAxNjk4MjIsIDE2OTgyNiwgMTY5ODMwLCAxNjk4MzQsIDE2OTgzOCwgMTY5ODQyLCAxNjk4NDYsIAorICAgIDE2OTg1MCwgMTY5ODU0LCAxNjk4NTgsIDE2OTg2MiwgMTY5ODY2LCAxNjk4NzAsIDE2OTg3NCwgMTY5ODc4LCAxNjk4ODIsIAorICAgIDE2OTg4NiwgMTY5ODkwLCAxNjk4OTQsIDE2OTg5OCwgMTY5OTAyLCAxNjk5MDYsIDE2OTkxMCwgMTY5OTE0LCAxNjk5MTgsIAorICAgIDE2OTkyMiwgMTY5OTI2LCAxNjk5MzAsIDE2OTkzNCwgMTY5OTM4LCAxNjk5NDIsIDE2OTk0NiwgMTY5OTUwLCAxNjk5NTQsIAorICAgIDE2OTk1OCwgMTY5OTYyLCAxNjk5NjYsIDE2OTk3MCwgMTY5OTc0LCAxNjk5NzgsIDE2OTk4MiwgMTY5OTg2LCAxNjk5OTAsIAorICAgIDE2OTk5NCwgMTY5OTk4LCAxNzAwMDIsIDE3MDAwNiwgMTcwMDEwLCAxNzAwMTQsIDE3MDAxOCwgMTcwMDIzLCAxNzAwMjgsIAorICAgIDE3MDAzMywgMTcwMDM3LCAxNzAwNDMsIDE3MDA1MCwgMTcwMDU3LCAxNzAwNjQsIDE3MDA3MSwgMTcwMDc4LCAxNzAwODUsIAorICAgIDE3MDA5MiwgMTcwMDk5LCAxNzAxMDYsIDE3MDExMywgMTcwMTIwLCAxNzAxMjcsIDE3MDEzNCwgMTcwMTQwLCAxNzAxNDcsIAorICAgIDE3MDE1NCwgMTcwMTYwLCAxNzAxNjcsIDE3MDE3NCwgMTcwMTgxLCAxNzAxODgsIDE3MDE5NSwgMTcwMjAyLCAxNzAyMDksIAorICAgIDE3MDIxNiwgMTcwMjIzLCAxNzAyMzAsIDE3MDIzNywgMTcwMjQ0LCAxNzAyNTEsIDE3MDI1OCwgMTcwMjY0LCAxNzAyNzAsIAorICAgIDE3MDI3NywgMTcwMjg2LCAxNzAyOTUsIDE3MDMwNCwgMTcwMzEzLCAxNzAzMTgsIDE3MDMyMywgMTcwMzI5LCAxNzAzMzUsIAorICAgIDE3MDM0MSwgMTcwMzQ3LCAxNzAzNTMsIDE3MDM1OSwgMTcwMzY1LCAxNzAzNzEsIDE3MDM3NywgMTcwMzgzLCAxNzAzODksIAorICAgIDE3MDM5NSwgMTcwNDAwLCAxNzA0MDYsIDE3MDQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29kZV9oYXNoW10gPSB7Ci0gICAgNzQyMjQsIDQ4NTEsIDEyNTEzOCwgNzgxNTYsIDc4NDk5LCA3MjM5MSwgNzkyOSwgNjY5MTAsIDE5NDY4MiwgMTI3NzY2LCAKKyAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA4OTk5LCAxOTQ2ODIsIDEyNzc2NiwgCiAgICAgNzg1MDAsIDY2NDgwLCA2NDAzOCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgNzIzODUsIDU5NiwgOTgzODIxLCA2OTg1MCwgCi0gICAgMTMxOTIsIDg2NTEsIDEyMDIxNywgMTI2NTQyLCAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgMTE5ODU2LCAxMTM3NTIsIAorICAgIDEzMTkyLCA4NjUxLCAxMjAyMTcsIDY2Nzg5LCAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgNzA3NDAsIDExMzc1MiwgCiAgICAgNTgxNiwgMTE5MDY3LCA2NDgxMCwgNDIzMSwgNjgyNSwgNDI4OTcsIDQyMzMsIDQyMzQsIDQyMzIsIDEyMDg4OSwgNzQ0MTUsIAotICAgIDEyMDIxMCwgNjM4NCwgNzAzNTEsIDc4MTA4LCA4ODUxLCA2NzY5OCwgMTI4NTUzLCA4Mjk1NCwgNDE2MDEsIDg4NzQsIAotICAgIDcyMzkyLCA3NzQ4LCAxMjUwODMsIDAsIDEyNzAyNiwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgNDE2MDAsIDAsIAotICAgIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAxMjg2MzUsIDYzODEsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgMzQwNCwgCi0gICAgOTgzMDc5LCA3MDQ4NywgNzI0MTEsIDE3NTksIDEyMDg1MywgNDEwNzYsIDY4MzgzLCA2OTk3MiwgMTE5MjA1LCA2NjU3NywgCi0gICAgOTQwMTQsIDEyNzc2NCwgNjU4NTksIDAsIDc0MDQsIDAsIDAsIDY5OTcwLCAxMjgzODcsIDY1OTA4LCA5ODM0LCAzMDU1LCAKLSAgICA5ODUyLCAxMjgzNjAsIDY1Mjg4LCAxMjEyOTEsIDExMzk4LCAwLCA5MjQxNywgOTMwMTYsIDEyODM4MCwgMTI3MzM3LCA2MDMsIAotICAgIDc0Mzk4LCA0MzU0OCwgMCwgNzE4NjUsIDkxNzgyNCwgMzM1MCwgMTIwODE3LCA2NDMxOCwgMTk0Njk4LCA3ODEyMSwgMzM5MCwgCi0gICAgNzQ0ODMsIDQzMjY1LCA5MjM5OSwgOTE3ODMwLCA3ODU3MywgMTE4ODAzLCAxOTE5LCAzNDAwLCAxMjA2NTEsIDgzMjk2LCAKLSAgICAxMTY0NywgODMyOTgsIDY2NDQ2LCA2NDE0MSwgODU2MiwgMjEyMSwgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgCi0gICAgMTEyOTcsIDk4MzY4OCwgOTgzMTUyLCAxMTk2NiwgNjQxMjgsIDY2Mjg2LCA5MzA0MiwgMTI4ODMwLCA2NDEzMiwgMTA4NjcsIAotICAgIDY0MTMwLCA2NDEyOSwgMTIxMjU1LCA0MzM3NCwgOTc3OSwgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCA4MzQ1OCwgCi0gICAgNjYwMjEsIDc0NTA5LCAwLCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgNjUyODIsIDI4NDMsIDUzNTUsIDY4ODU4LCAKLSAgICA5ODMzNDIsIDY5OTcxLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMTEzNzI0LCAxMjg4NzIsIDAsIDAsIDcyMzkzLCAKLSAgICAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgODMzMDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgCi0gICAgMCwgMCwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCA3NTAwOCwgNzc5MjgsIDQzOTI5LCAKLSAgICAxMDkwNiwgMTM1MywgNjk2MCwgODMwMzIsIDEyODc3OSwgNTgyOCwgODcyNCwgOTE3ODA2LCA4OTMzLCAxNjAxLCA0MjI0NCwgCi0gICAgODU4LCA3MDgwLCA2NDEwOSwgNjQxMDgsIDgwOTAsIDcwNDU1LCA3MjM4OCwgNzQ2MDYsIDU4NywgOTE3OTA3LCA4Mjk3MSwgCi0gICAgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgNzg3MDcsIDEyMjEzLCA4MzI5MCwgCi0gICAgMjc2MCwgODMyODQsIDgzMjg1LCA3ODcwOCwgODMyODcsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDgzMjgzLCA2NDE1MSwgCi0gICAgNjQxNTAsIDEyNjc5LCAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDEyNTAxNiwgMCwgNDgzOSwgNjg1MjcsIAotICAgIDAsIDE4NzQsIDExOTAxNiwgMTIwMDkxLCA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCAKLSAgICA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgNzg4NDcsIDY0MTIyLCA2NjM4OSwgNjY2MDksIDEyMTM0NywgNjQxMTcsIAotICAgIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgCi0gICAgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDkyODk1LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCAKLSAgICA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgOTgzMTYxLCA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgCi0gICAgMTI4NTQ1LCA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIDEyMDg2NCwgNzM4NDEsIDgzMzM5LCA4MzM0MCwgCi0gICAgOTA1NiwgNjQzMTMsIDYxODgsIDc0MzYwLCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIAotICAgIDYzLCA3MjMzLCA5MjIxMiwgNzI0MTQsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAxMjgzNDQsIDEyMTM4OCwgMTE3NiwgCi0gICAgMTE4OTU5LCAxMjc5MzAsIDgxNjIsIDEyNzAxOSwgMTI4MTk3LCA5Mjc0NywgMTIwNTE5LCA0MjkzMSwgNjYyNDIsIDExNDE1LCAKLSAgICA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDEyMTI3MSwgOTgzNjQ5LCA3NzE0LCA2NjIyMiwgNjk5MDIsIAorICAgIDEwMDQxMywgNjM4NCwgNzAzNTEsIDc4MTA4LCA4ODUxLCA2NzY5OCwgMTI4NTUzLCA4Mjk1NCwgNDE2MDEsIDg4NzQsIAorICAgIDcyMzkyLCA3NzQ4LCAxMjUwODMsIDAsIDEyNzAyNiwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgNDE2MDAsIAorICAgIDk4Mzk4MSwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMTAwODcyLCA2Njc5NywgNjUyNDAsIAorICAgIDExOTUxLCAwLCAzNDA0LCA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAKKyAgICAxMTkyMDUsIDY2NTc3LCA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMTI1MjUzLCA3NDA0LCAxMjUyNDgsIDEyODMwOCwgNjk5NzAsIAorICAgIDEyMDY0OCwgNjU5MDgsIDk4MzQsIDMwNTUsIDIyMzQsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCAKKyAgICA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgMTI5MzY2LCAzMzUwLCAxMjA4MTcsIAorICAgIDY0MzE4LCAxMjA2OTksIDc4MTIxLCAzMzkwLCA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIAorICAgIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgCisgICAgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIAorICAgIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCAKKyAgICA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCA2NjAyMSwgNzQ1MDksIDk4MzMwOCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIAorICAgIDY1MjgyLCAyODQzLCA1MzU1LCA2ODg1OCwgMTAwNTMwLCA2OTk3MSwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIAorICAgIDEwMDUyOSwgMTI4ODcyLCAwLCA5ODM5MDcsIDcyMzkzLCAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgCisgICAgODMzMDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgMCwgMTI4MTQ2LCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgCisgICAgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTAwNDIzLCAKKyAgICA1ODI4LCA4NzI0LCAxMjI5MTYsIDg5MzMsIDE2MDEsIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgCisgICAgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCAxOTQ2NDksIDgyOTcxLCA5ODM4MDgsIDEyOTM0NSwgMTk0Nzk1LCA3ODIxNCwgCisgICAgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAyNzYwLCA4MzI4NCwgODMyODUsIAorICAgIDc3OTM0LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCA2NDE1MCwgMTI2NzksIDEwMDUzLCAKKyAgICAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgMTI1MDkxLCAxODc0LCAxMTkwMTYsIAorICAgIDEyMDA5MSwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMTIwMTg4LCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCAKKyAgICA2NTQ0MywgOTAzNiwgNzg4NDcsIDY0MTIyLCA2NjM4OSwgNjY2MDksIDEyMTM0NywgNjQxMTcsIDY0MTE2LCA2Mjg3LCAKKyAgICA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgNjU2MDEsIDEyMzIyLCAKKyAgICA2NDEwNiwgNjk2NDAsIDkyODk1LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDk4MzQ4MiwgMTA0NTMsIDY0MTA0LCAKKyAgICA3MTg4LCA3OTk3LCAxMjg2MDAsIDczODksIDk4MzE2MSwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIDEyODU0NSwgCisgICAgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAxMjA4NjQsIDczODQxLCA4MzMzOSwgODMzNDAsIDkwNTYsIDY0MzEzLCAKKyAgICA2MTg4LCA3NDM2MCwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgCisgICAgNzQ5NTMsIDcyNDE0LCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc3NSwgMTI4MzQ0LCAxMjEzODgsIDExNzYsIDExODk1OSwgCisgICAgMTI3OTMwLCA4MTYyLCAxMjcwMTksIDEyODE5NywgOTI3NDcsIDEyMDUxOSwgNDI5MzEsIDY2MjQyLCAxMTQxNSwgNDMzMywgCisgICAgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCA5ODM0MDUsIDEyMTI3MSwgOTE3OTA3LCA3NzE0LCA2NjIyMiwgNjk5MDIsIAogICAgIDc3NjgsIDcyNDAzLCA0MTk5LCA2NDcwOCwgNjUwNjQsIDcwMTE3LCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAotICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCA3MTg3OCwgMTI2NTcwLCAxMjEyNTYsIAotICAgIDY0NjE1LCA0MTkxNSwgMCwgMTIwNzUsIDQyMDQxLCAxOTQ4MjUsIDUxNzQsIDk4MzIxNywgMCwgMTI3NTU3LCAzMTIzLCAKLSAgICAxMjUxMDAsIDEyNjg1LCAxMTkyMTYsIDg0MDgsIDY0NzA0LCA4MzMyOCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCAKLSAgICA3Mzc5NywgODMzMjcsIDExMTYsIDc1MDY3LCA0MzA0OSwgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgNzUwMzEsIAotICAgIDkxNzYyMiwgMTI4MTY4LCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCA4MzMzOCwgODMzMzEsIDY0MDk1LCA2NDA5NCwgCi0gICAgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDY3MjQ5LCA2NjM5OCwgMTE0MzQsIDY0MDgzLCAKLSAgICA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCA4MzAzMywgOTkyNywgNDEzMzUsIDQxMTgsIAotICAgIDE3OTcsIDgzMzEyLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCA4MzMwOSwgMjk4LCA4MzMwMywgODMzMDQsIDgzMzA1LCA0MjYyNywgCi0gICAgMTI1MDExLCAzMiwgNjE4NywgODMwMzcsIDExNDk1LCAxMTQ1OSwgMzY2NSwgODMwMzYsIDQyODcxLCAwLCAxOTkyMywgCi0gICAgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgODMzMTQsIDcxNDQ0LCA5ODM0NjgsIAotICAgIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgODM0NjEsIDY4MDUzLCA4MzQwNywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCi0gICAgNjUwMTQsIDk4MzQyMiwgMTI4NDg0LCA5ODMxOTYsIDM2MzksIDExOTU4OCwgMTE4ODUxLCA4MzAzOSwgMTE4OTA0LCAKLSAgICAxMDA3MywgMTIwMjA2LCA4MzAzOCwgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIAotICAgIDEyODkxNSwgMTAyMDcsIDg3ODksIDkzMDcwLCAxMjAzMzgsIDkyOTczLCAxMjgzMjUsIDkyMzQsIDkxNzg5NSwgNjE4MiwgCi0gICAgOTgzNDc1LCA2NTA1OCwgMTIwMzE5LCA5ODM0ODAsIDY4MDY0LCA5MTc4MzEsIDU0NzEsIDk0NjEsIDU1NzMsIDExODkzNiwgCi0gICAgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCA2Njg5NCwgMTYyMiwgNzc2NywgMTkwMCwgCi0gICAgNDEzMzksIDExNDU4LCAxMTkwNjEsIDAsIDY1ODEsIDU1NzYsIDEyODYxOCwgNDM4NTUsIDQxMzM3LCAwLCA0MTYzMSwgCi0gICAgODk0NywgNjgzOTAsIDY5NjgzLCA0MTY5NCwgOTgzODQ4LCA3MjM5NiwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDkxNzg3MiwgCi0gICAgNjQ2MTgsIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgNzAwMDUsIDEyMDUwNCwgMTk0ODI4LCAxMjg5NjEsIDUwNTgsIAotICAgIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDkxNzk0MSwgMCwgNzQ1MzgsIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgCi0gICAgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgMTI4NTA5LCA3NDg2LCA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIAotICAgIDEyODMyMiwgMTI4NTI5LCAxMjExMywgNDIzNiwgNDcyNywgMTI4NDg3LCAwLCA3NjkzLCAxMDc0OSwgMTIwMzMyLCA3NDg4LCAKLSAgICA1NzczLCA5NzgsIDEyODEzNCwgOTgzNjk5LCA0MTYxOSwgMTAyMzksIDY4NjExLCA3MTg2NCwgNjYyMDksIDEyNzIzMywgCi0gICAgNzQxMzUsIDk3NDgsIDk4Mzk1NiwgMTI3NTI0LCAwLCA5ODMzMTYsIDE5NDY3NiwgMTk0Njc1LCAxMjgwODEsIDAsIAotICAgIDk4MzMxMywgOTgzMzAyLCAwLCAxMjc4NjUsIDAsIDkyNzc2LCA5MzQxLCA3ODgyMSwgMjM3OSwgMTEzMjUsIDkxNzkwMiwgCi0gICAgNjQ2NjgsIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIDgzMTY0LCA5MTc5NDAsIDIzNjksIDgzNDA2LCA5ODMzMjMsIAotICAgIDEyNzk2NiwgMTE5MjM1LCA3MTg2OCwgNzM5MzYsIDcwMDgsIDQzNjYwLCAxMjAzNDYsIDAsIDQzODQxLCAyMzY3LCAKLSAgICAxMjc4MjcsIDk4Mzg1NywgMjY0LCAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMTI5MDQ5LCAKLSAgICA2MDE5LCAxMjg5NzUsIDAsIDY5NjEsIDAsIDcwNDM1LCA2NzE3MSwgODgwMCwgMTI3MzMyLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIAotICAgIDYxOTIsIDExOTYxMCwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIDY1MDQyLCA5MzAxNCwgMTIwODAwLCA3NDk0MiwgMTI4OTIsIAotICAgIDAsIDY3MTQ5LCA3NDg5OSwgNzM5MzEsIDAsIDEyMDQ5NSwgMTI3MjYxLCAxMjIyNCwgOTgzMTI4LCAxMjkwNjEsIDUwNzQsIAotICAgIDUwNzMsIDEyMTE2NCwgODk4MywgMTE4OTgxLCA3NDQ5MywgNzEyMzEsIDUwNzIsIDc0NTQ3LCA2MTk4LCAxMTYxNCwgMCwgCi0gICAgMTk2LCA5ODMxNTQsIDAsIDk4MzkzNiwgNDkyOSwgMTIwMzQyLCAxMjkxNDUsIDAsIDEyNzk4NywgMTIxNDU1LCA0Mjg0NywgCi0gICAgOTI5NTMsIDAsIDY3NzU0LCA0OTM0LCA5ODM5ODEsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgNzAxODEsIDQyNTg0LCAwLCAKLSAgICA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNjQ2NjcsIDEyODE5LCA5ODM4NzAsIDUwNzEsIAotICAgIDEyNzkxNSwgMzY0MiwgNjczMzQsIDUwNzAsIDEwMDQyLCAxMTM4MTMsIDM5ODcsIDUwNjgsIDk4MzQ2MCwgODkwOSwgCi0gICAgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIDEyNDUsIDkxMDUsIDY2NDYzLCAKLSAgICA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTIxMzU5LCAxMjgwMjgsIDAsIDY0NzA5LCA4MzI2OSwgCi0gICAgMTI4ODU0LCA3ODg4MCwgNDkyMiwgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgMTI3MjE4LCAwLCA5NTI2LCA0OTIwLCAKLSAgICAxMjg2MTcsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAxMjc4NTcsIDkyMTc1LCAxMjAyNzUsIDQ5MzMsIDExMzc3OSwgCi0gICAgMTIxMDQ5LCAxMTg5ODUsIDQ5MjgsIDk4MzE0OSwgODM1MTQsIDc0NzcwLCAxMjAxOTQsIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIAotICAgIDE5OTA4LCAxMjYzNywgMTI3NDg1LCA4Mjk5OSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgNDM0OTMsIDEyNzQ3NywgCi0gICAgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCA5MjY5NCwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIAotICAgIDEyNjU3NywgNjgzMzYsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCA5Mjc2MSwgMTI3NDYyLCA3MDA1LCAKLSAgICA0MTYwOSwgOTU4MCwgNzA0MzEsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDEyNzkwMCwgCi0gICAgODE0MywgMTI3MTE1LCAxMTk4MywgOTIyNDksIDYyNCwgNzQ1MDgsIDQwNTcsIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIAotICAgIDAsIDUwNzYsIDEyODcwMiwgODI5OTEsIDAsIDgyOTUsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDEyOTE4MiwgCi0gICAgOTI1MjMsIDcxNDM1LCA3MTM4LCAxMjA1NTIsIDQzNTA0LCAxOTQ2MTEsIDY2OTE0LCA2NTc5NCwgMTI1MjAsIDgwNTgsIAotICAgIDk3MzIsIDkyNDgwLCA1MDgwLCA2NDc3NSwgNTAzNiwgNTAzNSwgMTIwNTkwLCA0MjYwNCwgOTgzNjU2LCAwLCA4MDc0LCAKLSAgICAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgNDQzMiwgMTIxMzEzLCA1MDMzLCAxMjAzNDEsIDEyMDgxOCwgNDgzNiwgMzg4OCwgCi0gICAgNzM3OTIsIDEwNzI5LCA2NDU0NiwgMTI3MjYyLCA0MzcwNCwgMTI3MjY0LCA5Mjk1NywgNjc1ODgsIDY4MDYxLCAxMjQ5ODMsIAotICAgIDcwMzYwLCA4ODU4LCA2NDA5LCA3NjYzLCAxMjAyNTIsIDEyODEwMCwgMTE5MDA3LCAwLCA2NjMyMSwgOTQwNTIsIDEyODE0LCAKLSAgICAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCA2MDk0LCA3NjQxLCA0MjQ0NSwgMTI4NzkyLCA5MjQ4NywgNDI0MDYsIDE2NzYsIAotICAgIDY3MzYyLCA3NDg2MiwgNjczNjUsIDUwMzAsIDY3MzY0LCAxMTg4MTAsIDE5NTAwOCwgNzM4NjksIDk2MjIsIDExMzc2MywgCi0gICAgNjk5NDQsIDY3ODcsIDY3MzYxLCA5ODMyNzAsIDAsIDY4MzE5LCAxMDU0NCwgMTI5MTksIDcxNDg0LCA3MjM5NywgMCwgMCwgCi0gICAgNjk5MDYsIDEyMDc4OSwgOTgzMDQxLCA5NDcsIDY3Njk1LCA2NzM2NywgMTI4NTI4LCAxMDk2OSwgNjcyMjgsIDc2MTMsIAotICAgIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMCwgCi0gICAgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIAotICAgIDQzOTUsIDQzNTM4LCAxMTk5MjYsIDExOTgzNCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgCi0gICAgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCi0gICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCi0gICAgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIAotICAgIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAKLSAgICAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMTI4MjgwLCAKLSAgICA2NzcyNCwgMzIzOSwgNjY4OTMsIDEyODgxOCwgMCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIAotICAgIDczNzczLCA3MDE2OSwgNTA0MCwgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDAsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDAsIAotICAgIDUwMzgsIDAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCAxMjA5MzEsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgOTE3NjIzLCAKLSAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCAKLSAgICA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCA3MzgxMywgNzExLCAKLSAgICA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIDEwMDYsIDc0MjQwLCAKLSAgICA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgNjU3ODQsIDQzOTU3LCAKLSAgICA2NTI2NywgMzc1OCwgMCwgNjU3ODEsIDY0NzM0LCA2NzIyMiwgMjQ0MCwgNDM5NTUsIDcwNzg3LCA4NDQ5LCAwLCA1MDA4LCAKLSAgICA5ODM1NzIsIDIxMTgsIDEyNjUwOCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKLSAgICAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgCi0gICAgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgMTI4MTc3LCAxMjc5MDcsIDQzNzEzLCA1MDUyLCAKLSAgICA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgCi0gICAgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCAKLSAgICA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgCi0gICAgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAxOTQ4MzcsIDk4MzM4MCwgNzQyMDEsIDkyMzEzLCAKLSAgICAxOTQ4MDIsIDc0NDk3LCA4Mjk4MiwgODA4OSwgNjkyOSwgNjM5LCA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIAotICAgIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCAKLSAgICA2OTUxLCA5NDAxNywgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCAKLSAgICA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIAotICAgIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAKLSAgICAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCAKLSAgICA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NDY3LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAxMjEzMjYsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDE5NDg1NywgCi0gICAgMTk0NTkxLCAwLCAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAKLSAgICAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDkyNzM4LCA2NjIwMCwgMCwgMCwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCA5ODM0NzYsIAotICAgIDg3MTEsIDYxODMsIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgNjYzNzYsIDkyMzUsIAotICAgIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIAotICAgIDAsIDEyNjU5NywgMTIwNDM0LCAxOTQ4NTAsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIAotICAgIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCAKLSAgICA5MDUwLCAzMzk4LCAxMjg0MjQsIDk4MzM1MCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIAotICAgIDEyOTEwNiwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAxMjExOTgsIAotICAgIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIDEzMDE1LCAKLSAgICA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCA0MjIxMiwgCi0gICAgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY3MzQzLCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIDkyOTQxLCAKLSAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDEyODU5NSwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgMCwgCi0gICAgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgNDM5NTIsIDQyNTMzLCAKLSAgICAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgNTc4LCAzNjUzLCAKLSAgICAxMjg5NDYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAKLSAgICAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIDExOTE2NywgCi0gICAgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgCi0gICAgMTI4Mjc2LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIAotICAgIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNjU2NCwgNzEzMDIsIDQ0MDgsIDQxMjIsIAotICAgIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCA2NDg1NSwgCi0gICAgMTE5MzAwLCAxMTkyOTksIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAKLSAgICAxMjg2MzksIDAsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgCi0gICAgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAKLSAgICAxMTg4NzMsIDEyNzEsIDk4MzY0MCwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDkyMDQsIDAsIDM4NzksIDAsIAotICAgIDEyOTc4LCA0MTY2LCA0NTc0LCAxMjgxMTEsIDc1NjcsIDc0NTksIDc4MTI4LCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCAKLSAgICA3MDE1NCwgNTc1OSwgMTk0ODY5LCAxMjE0MTMsIDQxMzg4LCA2NDQ0NiwgNDEzOTIsIDY0Mjg4LCA0MTM4NywgNjcyMDEsIAotICAgIDg3MDYsIDU1NTIsIDY4ODM3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgCi0gICAgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMTExMTUsIDEyMTAzNSwgCi0gICAgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIAotICAgIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgNjcyODgsIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgCi0gICAgNjQ2MjQsIDAsIDAsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCAKLSAgICA5MjI3MywgNjY1ODAsIDc3OTkyLCA2NjY4MywgMTA1NTQsIDExOTAwOCwgMTE5MTIxLCA2ODMyLCA1MDk4LCA5MTc3NjgsIAotICAgIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIDEwMzgxLCAwLCA2NzI5NiwgOTI4OTYsIDM2NTEsIDAsIDY3Mjk0LCAKLSAgICA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgCi0gICAgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgCi0gICAgMCwgMTI4NjU1LCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgNzA4MjksIDc4NDI3LCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAKLSAgICAxOTQ5MjMsIDkxNTQsIDkxMTgsIDEyNjU0MywgMTE5NTg2LCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCAKLSAgICA4NTk5LCAxMjUxMTgsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIAotICAgIDEyNjY1MSwgODQ4MSwgODMwNjgsIDYyMDIsIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgCi0gICAgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAKLSAgICAyMDcsIDEyMTIwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgCi0gICAgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgCi0gICAgNjQ2NzQsIDAsIDcwMTU4LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIAotICAgIDUxMDUsIDY1MjY2LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAKLSAgICAxMTM2ODMsIDY1NjcsIDIzOCwgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgCi0gICAgNDEwNDQsIDY3NjQwLCA2NzMwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgCi0gICAgOTMwMzksIDg4MDMsIDMwOSwgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIAotICAgIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDAsIAotICAgIDY2NDY2LCAxMjQ5ODYsIDEyNzc4NCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMDAzNzcsIDEyMTI1NiwgCisgICAgNjQ2MTUsIDQxOTE1LCAxMDAzNzUsIDEyMDc1LCA0MjA0MSwgMTI1MDg0LCA1MTc0LCA5ODMyMTcsIDEwMDM3MiwgNzQxODYsIAorICAgIDMxMjMsIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAxMjI4OTEsIDkyMjMsIDAsIDQxNjE2LCAKKyAgICA2Nzk5OSwgNzM3OTcsIDgzMzI3LCAxMTE2LCA3NTA2NywgNDMwNDksIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIAorICAgIDk4Mzg3MSwgNzUwMzEsIDkxNzYyMiwgMTI4MTY4LCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCA4MzMzOCwgODMzMzEsIAorICAgIDY0MDk1LCA2NDA5NCwgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDY3MjQ5LCA2NjM5OCwgCisgICAgMTE0MzQsIDY0MDgzLCA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCA4MzAzMywgCisgICAgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDgzMzEyLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCA3ODU5MSwgMjk4LCA4MzMwMywgCisgICAgODMzMDQsIDgzMzA1LCA0MjYyNywgMTI1MDExLCAzMiwgNjE4NywgODMwMzcsIDExNDk1LCAxMTQ1OSwgMzY2NSwgODMwMzYsIAorICAgIDQyODcxLCAxMTg5MDIsIDE5OTIzLCA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCAKKyAgICA4MzMxNCwgNzE0NDQsIDExOTMyMSwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAKKyAgICAxMjAxOTgsIDY5ODA5LCA2MTgxLCA2NTAxNCwgMTAwNzUwLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIAorICAgIDgzMDM5LCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgCisgICAgOTI1NjUsIDEyMDIwNSwgOTE3NzczLCAxMjg5MTUsIDEwMjA3LCA4Nzg5LCA5MzA3MCwgMTIwMzM4LCA5Mjk3MywgMTI4MzI1LCAKKyAgICA5MjM0LCA5MTc4OTUsIDYxODIsIDk4MzQ3NSwgNjUwNTgsIDEyMDMxOSwgOTgzMjExLCA2ODA2NCwgOTE3ODMxLCA1NDcxLCAKKyAgICA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgNjY4OTQsIAorICAgIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMTE5MDYxLCA5ODMxODMsIDY1ODEsIDU1NzYsIDEyODYxOCwgCisgICAgNDM4NTUsIDQxMzM3LCA5ODM3NzIsIDQxNjMxLCA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5MTc3ODcsIDcyMzk2LCAKKyAgICA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgMTI3ODkwLCA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgCisgICAgMTIwNTA0LCAxOTQ4MjgsIDY2ODAyLCA1MDU4LCA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCA2OTg5MiwgMCwgNzQ1MzgsIAorICAgIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgNzEzNjUsIDc0ODYsIAorICAgIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIAorICAgIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAxMjg2OTMsIDQxNjE5LCAxMDIzOSwgCisgICAgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCA3NDEzNSwgOTc0OCwgMTAwMzgzLCAxMjc1MjQsIDEyNTIxOCwgOTgzMzE2LCAKKyAgICAxOTQ2NzYsIDE5NDY3NSwgMTI4MDgxLCA3MDY4MSwgMTAwMzg1LCA3MjgxMSwgODMzNTQsIDEyNzg2NSwgMTIwOTk5LCAKKyAgICA5Mjc3NiwgOTM0MSwgNzg4MjEsIDIzNzksIDExMzI1LCAxMDAzODYsIDY0NjY4LCA2Nzg1NCwgODEyNSwgMTIwNTQ1LCAKKyAgICA2NzQzLCA4MzE2NCwgOTE3OTQwLCAyMzY5LCA4MzQwNiwgOTgzMzIzLCAxMjc5NjYsIDEwMDU0MywgNzE4NjgsIDczOTM2LCAKKyAgICA3MDA4LCA0MzY2MCwgMTIwMzQ2LCAwLCA0Mzg0MSwgMjM2NywgMTI3ODI3LCAxMjgyNzUsIDI2NCwgMjM3NSwgODA2MCwgCisgICAgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDEyOTA0OSwgNjAxOSwgMTI4OTc1LCA5ODM1NTcsIDY5NjEsIDAsIDcwNDM1LCAKKyAgICA2NzE3MSwgODgwMCwgMTI3MzMyLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIDYxOTIsIDEwMDc0NCwgNDI3NzEsIDEyNzk4MywgCisgICAgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgMTI1MjEyLCA2NzE0OSwgNzQ4OTksIAorICAgIDczOTMxLCAwLCAxMjA0OTUsIDEyNzI2MSwgMTIyMjQsIDk4MzEyOCwgMTI5MDYxLCA1MDc0LCA1MDczLCAxMjExNjQsIAorICAgIDg5ODMsIDExODk4MSwgNzQ0OTMsIDcwNzIzLCA1MDcyLCA3NDU0NywgNjE5OCwgMTE2MTQsIDEyNTI1MSwgMTk2LCAKKyAgICA5ODMxNTQsIDEyODgwNSwgMTI4MjYzLCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMTAwNzk0LCAxMDA3NDcsIDEyMTQ1NSwgCisgICAgNDI4NDcsIDkyOTUzLCAwLCA2Nzc1NCwgNDkzNCwgMTI4MzM4LCA0MTMyMywgOTc1OCwgMTI4MjExLCA5MjI4OSwgNzAxODEsIAorICAgIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgNzc1MiwgNDEzMjAsIDkxNzk1MiwgNjQ2NjcsIDEyODE5LCAKKyAgICA5ODM1OTcsIDUwNzEsIDEyNzkxNSwgMzY0MiwgNjczMzQsIDUwNzAsIDEwMDQyLCAxMTM4MTMsIDM5ODcsIDUwNjgsIAorICAgIDk4MzQ2MCwgODkwOSwgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIAorICAgIDEyNDUsIDkxMDUsIDY2NDYzLCA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTIxMzU5LCAxMjEyNjcsIAorICAgIDEyNzk3MiwgNjQ3MDksIDgzMjY5LCAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAKKyAgICAxMjcyMTgsIDk4MzA1OSwgOTUyNiwgNDkyMCwgMTI4NjE3LCA5NDgsIDAsIDcwNzA2LCA0OTMwLCAxMjc4NTcsIDkyMTc1LCAKKyAgICAxMTk4ODYsIDQ5MzMsIDExMzc3OSwgMTIxMDQ5LCAxMTg5ODUsIDQ5MjgsIDk4MzE0OSwgODM1MTQsIDc0NzcwLCAxMjAxOTQsIAorICAgIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgMTI3NDg1LCA4Mjk5OSwgODc1MywgMTUwOSwgMTI1MjY0LCAKKyAgICA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIAorICAgIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDkyNjI3LCAxNjc5LCAxMjAxMTYsIAorICAgIDEyMDE4MCwgNzg4MzcsIDEyNzQ2MiwgNzAwNSwgNDE2MDksIDk1ODAsIDcwNDMxLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgCisgICAgNTc2MSwgMzQyLCA4NTUzLCA5MjI1NiwgODE0MywgMTIwOTc5LCAxMTk4MywgNzQyMDgsIDYyNCwgNzQ1MDgsIDQwNTcsIAorICAgIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIDEyMDI1MCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCAKKyAgICA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTAwOTA3LCA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIAorICAgIDEyNTE5NywgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAKKyAgICAxMDA0MjksIDQyNjA0LCAxMDA0MjgsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc0MzcwLCA0NDMyLCAxMjEzMTMsIAorICAgIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAKKyAgICAxMjcyNjQsIDkyOTU3LCAyMjc0LCA2ODA2MSwgMTAwNDIyLCA3MDM2MCwgODg1OCwgNjQwOSwgNzY2MywgNzgwNjksIAorICAgIDEyODEwMCwgMTE5MDA3LCAxMDA0MjQsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIAorICAgIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgCisgICAgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCA2OTk0NCwgNjc4NywgNjczNjEsIDE5NDkzMCwgCisgICAgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCA5ODM2NDEsIDAsIDY5OTA2LCAxMDA4NTcsIDk4MzA0MSwgCisgICAgOTQ3LCA2NzY5NSwgNjczNjcsIDEyODUyOCwgMTA5NjksIDY3MjI4LCA3NjEzLCA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAKKyAgICAxMDA0MzEsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDEyMDE4OSwgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIAorICAgIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIDQzOTUsIDQzNTM4LCAxMDA0MzMsIAorICAgIDEwMDg2MCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAKKyAgICAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCAKKyAgICA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAKKyAgICAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAKKyAgICAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIAorICAgIDEyMDgzOCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAxMjgyODAsIDY3NzI0LCAzMjM5LCA2Njg5MywgMTI4ODE4LCAKKyAgICAxOTQ2MjQsIDg0MzEsIDAsIDQyMTY0LCA3MTIyOSwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgNzAxNjksIDUwNDAsIAorICAgIDEyNzk2OSwgMCwgNjcwOTQsIDc4NDIwLCAxMjcwMzYsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDk4MzkzNiwgNTAzOCwgCisgICAgOTE3OTkwLCA5ODM4NjIsIDEzMTg0LCA0Mzk2MCwgNzA2OTUsIDY0NjQ4LCAxMjY2NDEsIDkzNTksIDc4NDE2LCA5MTc2MjMsIAorICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDEwMDYwNCwgNzAxODIsIDM4NjMsIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIAorICAgIDEyNzgyMiwgNDMwOSwgNzEyNywgMTE4ODQxLCAxMjkwNzQsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCAKKyAgICA3MzgxMywgNzExLCA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDEyODQzNiwgNDEzMzEsIAorICAgIDEwMDYsIDc0MjQwLCA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgCisgICAgNjU3ODQsIDQzOTU3LCA2NTI2NywgMzc1OCwgOTgzODQ0LCA2NTc4MSwgNjQ3MzQsIDY3MjIyLCAyNDQwLCA0Mzk1NSwgCisgICAgNzA3ODcsIDg0NDksIDk4MzY4NCwgNTAwOCwgOTgzNTcyLCAyMTE4LCAxMjI4OTYsIDEyMTIxLCA4MjU1LCA1NTEyLCAKKyAgICA3Mzg3NSwgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgMjEzMywgMTExOSwgMTIxMjUwLCAyMTE0LCAyMTE2LCAyNDU1LCAKKyAgICAxMTM3OTgsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIDEyNzQ4NiwgODcxNCwgOTgzODIwLCAyMTEzLCAxOTUwNDksIDIxMTUsIAorICAgIDEyODE3NywgMTI3NzQ4LCA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgCisgICAgNjU3NzMsIDE0MjksIDQyNjQ3LCA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIAorICAgIDEyNzI2LCA3NDU5NCwgOTExNywgOTgzMTgxLCAxMjAwMywgNTUxMywgNTEwOSwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAKKyAgICAwLCA3ODQ0NywgMjQ3MCwgNzg0MzcsIDAsIDE5MjUsIDcxMjUxLCA5MjIzNywgNzQ4MDcsIDk4MzA2MiwgNTA0OCwgNTA0NywgCisgICAgMTk0ODM3LCAxMjEyNzUsIDc0MjAxLCA3ODc0MywgMTk0ODAyLCA3NDQ5NywgNjU5MzMsIDgwODksIDY5MjksIDYzOSwgCisgICAgODI5ODEsIDY4MTc5LCA2NDQ0MiwgNzAxODAsIDgyOTg0LCA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCAKKyAgICA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgNzQzMDYsIDEyOTE5NywgMzUzMCwgOTc1MCwgMTI4MzE3LCAKKyAgICAxMjA5OTEsIDY2NTYsIDQyNjE4LCA3MDE3NSwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAxMDA1MTYsIDUwNDUsIAorICAgIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCAKKyAgICA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCAKKyAgICA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCA2Nzk4MywgMTMyOTYsIDUxNywgOTgzODc4LCAxMjUwMTcsIAorICAgIDEwMDU2NSwgNDE1MjgsIDEyMywgNjU0NTQsIDEyNzIxNSwgMTIxMzI2LCA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAKKyAgICAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAxMDA4MDMsIDE5NDU5MSwgOTgzMzc5LCAzOTI1LCA0MjUxLCAKKyAgICA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIAorICAgIDkyNzM4LCA2NjIwMCwgOTgzNjI2LCAxMjc5MDUsIDEyNTAyNiwgNzQyOTgsIDEyODg3OSwgMTI2NjI1LCA4NzExLCA2MTgzLCAKKyAgICA4MzQ0OCwgOTgzOTUyLCA3MjQwMiwgMTIwNDQ4LCA3NjIzLCAxMDA4MDksIDY2Mzc2LCA5MjM1LCAxMjc2MCwgNzQxNzYsIAorICAgIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCA5ODM3OTksIDEyNjU5NywgCisgICAgMTIwNDM0LCAxMTkwNTIsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIDEyMjkxOSwgCisgICAgNjkyMzMsIDI0NTgsIDEwMDQzNSwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIAorICAgIDkwNTAsIDMzOTgsIDEyODQyNCwgMTI3MDgzLCAxOTQ4OTQsIDMzOTEsIDQxMDc1LCAyNDc2LCAxMjkxMjksIDc0OTkwLCAwLCAKKyAgICAxMDYyNSwgNzA3MTUsIDEyNzY3LCAxMzAxNywgNzg3NDEsIDY0MjYxLCA2NDkzNCwgNzAxNTIsIDEzMDE0LCAxMzAxMywgCisgICAgMTIxMTk4LCA2NjczLCAwLCAwLCAxMjEzMjQsIDEyNDM4LCAwLCA5ODMzNDQsIDgzMTA2LCA3MTEyOCwgMTIwMDYyLCA5MDUzLCAKKyAgICAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDc0OTQ5LCA2NjYwLCA3ODc1OCwgOTE3NzYwLCA3NDg2MSwgCisgICAgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCA2NjgwOSwgMTIxNDM3LCAxMjkwODYsIDQzODc2LCAKKyAgICA5Mjk0MSwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxMTk5MjYsIDQzOTQ5LCAxMjAwNDgsIDc4MDk5LCAxMjcwODUsIAorICAgIDEyNzk2NCwgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgCisgICAgNDM5NTIsIDQyNTMzLCAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgCisgICAgNTc4LCAzNjUzLCAxMDA0NzYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIAorICAgIDQzNTkwLCAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIAorICAgIDExOTE2NywgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNjY4MDcsIDY3MywgMTk0ODY3LCAKKyAgICA2NDM5NywgMTE5MjM1LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTE5MzIyLCAyNDQ4LCA3ODA4NSwgMTAyNjcsIAorICAgIDg0MjQsIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNTExNywgNzEzMDIsIDQ0MDgsIAorICAgIDQxMjIsIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCAKKyAgICA2NDg1NSwgMTE5MzAwLCAxMTkyOTksIDExNzUsIDEyOTEzNiwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgCisgICAgMTE1MjEsIDc3MjMsIDEyODYzOSwgMTI1MjQyLCAwLCA0MTk1MiwgOTMwMjMsIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIAorICAgIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIDEyOTYzLCA3MDMyMCwgNjE4OSwgNDEyNSwgCisgICAgMTMxNCwgMTIxMzMsIDEyMDM0MCwgMTE4ODczLCAxMjcxLCA5ODM1NTYsIDEyOTExMiwgNjYwMjQsIDQxNDgyLCAyNDM0LCAKKyAgICA5MjA0LCA5MTc1NTgsIDM4NzksIDE5NDg2OCwgMTI5NzgsIDQxNjYsIDQ1NzQsIDEyODExMSwgNzU2NywgNzQ1OSwgNzgxMjgsIAorICAgIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIDcwMTU0LCA1NzU5LCAxOTQ4NjksIDEyMTQxMywgNDEzODgsIDY0NDQ2LCAKKyAgICA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgODcwNiwgNTU1MiwgNjg4MzcsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgCisgICAgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCA3NDA2NiwgNjcyNTEsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIAorICAgIDc4MTEzLCA2NjY1LCAxMTExNSwgMTIxMDM1LCA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgCisgICAgNzgwODgsIDY2ODEwLCA3ODA5MSwgMCwgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCA2NzI4OCwgNjc5OTUsIDE5NDk4NiwgCisgICAgNjU2LCAxMjg1NzQsIDY1MDM3LCA0NTc3LCA2NDYyNCwgMTI5MzU0LCAxMjAyNjQsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIAorICAgIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAxOTUwODUsIDkyMjczLCA2NjU4MCwgNzc5OTIsIDY2NjgzLCAKKyAgICAxMDU1NCwgMzQxNywgMTAxMDU3LCA2ODMyLCA1MDk4LCA5MTc3NjgsIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIAorICAgIDEwMzgxLCAwLCA2NzI5NiwgNzI3OTgsIDM2NTEsIDAsIDY3Mjk0LCA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCAKKyAgICA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIAorICAgIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgOTgzNjY5LCAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCAKKyAgICA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDE5NDkyMywgOTE1NCwgOTExOCwgCisgICAgMTI2NTQzLCAxMTk1ODYsIDI2NzYsIDIyNzcsIDEyODQyMiwgNjgyMzcsIDYxOTAsIDg1OTksIDEyNTExOCwgNjk5MTgsIAorICAgIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDcxOTAzLCAxMjEyOSwgMTI2NjUxLCA4NDgxLCA4MzA2OCwgNjIwMiwgCisgICAgNjc3MTEsIDEwOTIwLCAxMTM3MjYsIDUyMDMsIDE5NTAzOSwgMTI5MzI4LCA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIAorICAgIDk3NjIsIDExMjA1LCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIDIwNywgMTIxMjA2LCA0Mjc1LCA3NDgxOSwgCisgICAgODU0LCA2ODE0NywgNzQzODEsIDY2ODE2LCA3ODc4NiwgNTEwMywgMTI3ODYxLCA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIAorICAgIDY5ODExLCAxMDA5MTEsIDcxMzM5LCAxMDE1NywgMTk0NjEyLCA0MzAzNCwgMTE0MzgsIDY0Njc0LCAwLCA3MDE1OCwgCisgICAgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIDQxMzY3LCA1MTA1LCA2NTI2NiwgNjk3MjAsIAorICAgIDY0NzYsIDUxMDQsIDE5NDczNCwgMzA0LCAzMTc2LCA3ODg3MSwgNzAxNDksIDkzMiwgMTEzNjgzLCA2NTY3LCAyMzgsIAorICAgIDY5NjU2LCA3ODQzMiwgMTk0NTk1LCAxOTkwNSwgNDM4NTAsIDE5NTAxNSwgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgNjczMDIsIAorICAgIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgMTI1NTIsIDkzMDM5LCA4ODAzLCAzMDksIAorICAgIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDcwMTcxLCAxMjU2OCwgMTI3OTE3LCAxMjU1MywgMTA4MTQsIAorICAgIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDEyNjUzNSwgNjUxNjUsIDkyNzI1LCA5ODM4MjIsIDY2NDY2LCAKKyAgICAxMjQ5ODYsIDEyNzc4NCwgMTI4NTM0LCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAKICAgICAwLCA0MTc1NCwgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDYwMCwgNjg0NjIsIDgyMzIsIDExODgxNywgMTIxMDU2LCAzMjIyLCAKLSAgICAxMjE0MzksIDEyMTEzNywgMCwgNjY2NjMsIDk4MzA0NywgOTMwNjcsIDEwODM0LCA5ODMxMjcsIDAsIDY1NzMyLCA5NDA5NSwgCi0gICAgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDEyMDczNCwgNjczMDksIDc3ODEsIDQxMzgzLCA2NDU2OCwgNjczMTEsIDEyMDczOCwgCisgICAgMTIxNDM5LCAxMjExMzcsIDAsIDY2NjYzLCAxMjc5MjgsIDkzMDY3LCAxMDgzNCwgMTI3NTQ3LCAwLCA2NTczMiwgOTQwOTUsIAorICAgIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMDEwMjEsIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIAogICAgIDEyMDc3LCA3NDQzMywgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCA2NzI2MCwgMjQ3OSwgNjczMDYsIAogICAgIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDY3MjYzLCA3NDg0NCwgNjc2MzksIDM2MzYsIDY3ODk0LCAzNjUwLCAKLSAgICA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDY4ODI2LCAzNjQwLCAxMjcxOTAsIAotICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ5NTAsIDE5NDk0OSwgNzQxMTUsIDE5NDk1MSwgMTI2NjQ5LCAKLSAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCAwLCA5ODM3ODQsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAotICAgIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCi0gICAgMCwgNjc4MzUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgCi0gICAgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDEyMDk4OCwgNDE5ODQsIDkyMTcsIDEyODM3MiwgOTI1MTAsIDkyMjE4LCAKLSAgICA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCA5Mjk4NSwgNjk4ODAsIDUxODQsIAotICAgIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIAotICAgIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgCi0gICAgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgMTIwNjcwLCAyNDQyLCAKLSAgICAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgCi0gICAgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgMTMxNDUsIDE5NDk2MywgCi0gICAgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCA0MTExNywgMCwgOTI1ODAsIAotICAgIDEyODYyNCwgNzQ5MzksIDY3NjI0LCAxMjc5NzYsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgCi0gICAgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCAKLSAgICA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCAKLSAgICA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMTI0OTY5LCAKLSAgICAxMjExLCAwLCAxMjA5NzEsIDY3MjY5LCAxMTg4MzIsIDEyMzE4LCAxMjkwMjQsIDExMzc5NiwgNjgwMDUsIDEwNjIyLCAKLSAgICA5ODM3NzksIDAsIDY4ODIxLCA2NTY2LCA3MTE5NSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAwLCAKLSAgICA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIAotICAgIDc0MTg2LCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCAKLSAgICA5ODMzNzksIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIAotICAgIDExOTAxNCwgNjc3MjAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgOTE3NjA0LCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMTk1MDQ3LCAKLSAgICA0MDAsIDEyNTk3LCAxMjA1ODYsIDEyODA5NywgMTI5MDcxLCA2NjYxLCA5MTc5NjEsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAKLSAgICAwLCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIDY4ODE0LCAwLCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAKLSAgICAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCAxMTg5MDIsIAotICAgIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIAotICAgIDEyMDY4MiwgMCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgMTIyMDAsIDY2NDIzLCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAKLSAgICAxMTk1NjAsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCAKLSAgICA3NDg5LCAzMzc5LCAwLCA3NDg3LCAxOTQ2MjQsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgCi0gICAgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAKLSAgICAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCA5ODM3ODUsIDYwMTcsIDY1MzExLCA3NDkzNSwgCi0gICAgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAxOTQ4ODIsIDEyMDU0NCwgMCwgMTI3OTUwLCAKLSAgICA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAKLSAgICAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIAotICAgIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgCi0gICAgOTgzMzk2LCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCA2Njg0OSwgMTI1MTQxLCAwLCA4MzMwLCAwLCAwLCAKLSAgICA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTI1MDY3LCAxNTYwLCA0Mzk1OCwgCi0gICAgOTIxNjcsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDY3MDkyLCAxMTE4LCA3MTMzNCwgNzQ4ODgsIDAsIDEwODEsIAotICAgIDc0MzYsIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAKLSAgICAxMzMwLCAxMjg2MTMsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAotICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCA5ODM3NDEsIDEyNzE1LCA2ODAwMiwgMTk0NTc2LCA4MzI1NiwgCi0gICAgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgNzg0OTAsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIAotICAgIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA0MzQ5NCwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAKLSAgICAxMjEwMTAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMTI3ODkwLCA2ODE3OCwgCi0gICAgMzExNywgNTQ2MCwgMTIxNDIzLCAxMjg3MTcsIDk4MzM4OSwgMCwgNDIyNzksIDEyNzE0MiwgMTI2NTAzLCA3ODQxNSwgCi0gICAgOTgzMjI4LCA2ODUyNCwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDk4MzE1MywgCi0gICAgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIDAsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCAKLSAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAKLSAgICAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKLSAgICA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIDcxODc5LCA1MzksIDAsIDEyMDMwMiwgNzAxMjAsIDM4NTMsIAotICAgIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCA5MjMyNCwgMCwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAKLSAgICAxOTQ5NjksIDI0NzgsIDEyMDI0OCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCA4Mjk2NiwgMTI0NzAsIDkyNjQwLCAKLSAgICA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAxMTM2ODcsIDk4MzU3OSwgMTI4MTkwLCAKLSAgICA2OTY3MiwgODIxMywgNDM4MjQsIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCAxOTQ5NjcsIDc4ODg1LCAxMTkyNDMsIAotICAgIDY4MjM1LCAxMjA1ODIsIDc4NTQ3LCAxMTM3MDksIDEwMzAxLCAxMDMzMywgMTAzOTcsIDExOTA0NCwgMCwgNzM3OTEsIDAsIAotICAgIDgzMDMwLCAwLCAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCAKLSAgICA3NDkwMywgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMTg4NDEsIAotICAgIDEyODA4NiwgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgCi0gICAgNDE5NzMsIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgCi0gICAgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCAKLSAgICA5MzA1NSwgMTI5MDc0LCAwLCAxODQwLCAxMjc4MDksIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgCi0gICAgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCA0MjMyMywgNzQ2NDAsIAotICAgIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCAKLSAgICA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk1MDEzLCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIAotICAgIDkxMjUsIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTI0OTI5LCAKLSAgICA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIAotICAgIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI1MzMsIDQyNDQ4LCA0MjI5OSwgCi0gICAgNTgsIDEyMDA4NCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCA3MTI2LCAKLSAgICAxOTQ1NzUsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjg3OTcsIDkyOTc1LCA0MjQyLCA0MjY0LCAKLSAgICAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgOTgzMTk5LCAKLSAgICA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzI0MCwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIDQyNDMwLCAKLSAgICAwLCA5ODM0NTIsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgNjgzMTQsIDY2NjY3LCAxMTkzNTEsIAotICAgIDE5NDk4MiwgMTIxMTcyLCA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMjg5MjgsIDUwODgsIDY5NDgsIDAsIDg1MjQsIDEyNTA0MCwgCi0gICAgMCwgMTIzODUsIDAsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCA2NTAzOSwgNjUwMzgsIDEyMzkyLCAKLSAgICA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgCi0gICAgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDEyNzg5NywgNjM4OTYsIDEyMDYxLCAKLSAgICA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAxMTk5MzQsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIAotICAgIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIAotICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA2NjQxMywgCi0gICAgNDEyMjAsIDEzMDMyLCA5Mjk4MCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIAotICAgIDg2OTgsIDEyNjY1LCAwLCAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDAsIDYzOTAxLCAwLCAKLSAgICAzNjU3LCAxMTk2MTEsIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDExOTkzNSwgNDE3NDAsIDEyNDI4LCAKLSAgICA0MTI4MywgNDE5MTYsIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgOTgzOTQ4LCA3NTYyLCAxMjUxMjksIDUxNzAsIAotICAgIDk4MzkxNSwgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIAotICAgIDYxNjIsIDc4MzIwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgMTI0MjIsIDQxODMyLCA0MzksIDMwNzIsIAotICAgIDkxNzgyOCwgNDIyMDcsIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAxMjUwMjEsIDcwMTUxLCA4MzA4LCA5MTc3OTcsIAotICAgIDcwODA3LCAxMTkyNTgsIDY3ODY0LCAxMTM2OTYsIDkxNzgwMCwgMTIzMzYsIDQxMzUsIDY3MjMxLCAzNDEsIDI3MjcsIAotICAgIDQxMjksIDM1MzksIDAsIDYzODYxLCAwLCA3OTEzLCAwLCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEyOTA4NSwgNjM4NjcsIAorICAgIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgNjg4MjYsIDM2NDAsIDkyNDExLCAKKyAgICA0MjMyMSwgNzI4NCwgOTI4ODAsIDExODk4NywgMTk0NzgzLCAxMDA4OTcsIDc0MTE1LCAxOTQ5NTEsIDEyNTE5OSwgCisgICAgMTk0OTUzLCA0MjA4MCwgMjUyOSwgOTgzOTA5LCA5ODM0NzEsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAorICAgIDY3NjE5LCA2NjM2NywgMTAwODk5LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCisgICAgMCwgNjc4MzUsIDEwMDkwMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgCisgICAgOTI1LCAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMTIwOTg4LCA0MTk4NCwgOTIxNywgMTI4MzcyLCA5MjUxMCwgCisgICAgOTIyMTgsIDkxODYsIDIwNjcsIDQwMTYsIDEyODg0OCwgMTI5MTgyLCAzODEsIDEyOTM2LCA5ODM3MzYsIDQyMDc3LCAKKyAgICA5Mjk4NSwgNjk4ODAsIDUxODQsIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCAKKyAgICA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIAorICAgIDc0Mjg3LCA2NzYyOSwgMzYwNSwgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgCisgICAgMTIwNjcwLCAyNDQyLCAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIAorICAgIDczOTMzLCA2NzYyNiwgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgCisgICAgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCAKKyAgICA0MTExNywgMTAwODkzLCA5MjU4MCwgMTI4NjI0LCA3NDkzOSwgNjc2MjQsIDEyNzk3NiwgMTI5MCwgMTAwNTkxLCA2NTU4NSwgCisgICAgMjcxNSwgODA2LCA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDc4MDA0LCAwLCAwLCA2NjMyNSwgMzQ2NSwgCisgICAgMjQwNSwgOTI0MCwgOTgzODU4LCAxMjc1NiwgNjUyNTksIDAsIDk4Mzc4MSwgMTI3NTIsIDU4MzMsIDE0MzIsIDExMjQ2LCAKKyAgICA0MTg4MywgNzM5MTIsIDk3OTksIDkxNzg5MywgNDE4ODYsIDI0ODAsIDEyNzkwNiwgMjA2MiwgNjczMjYsIDY0OTQsIDU1MzcsIAorICAgIDc4NjU2LCA5ODMyNzUsIDcwNjYxLCAxMjQ5NjksIDEyMTEsIDAsIDEyMDk3MSwgNjcyNjksIDExODgzMiwgMTIzMTgsIAorICAgIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIDk4Mzc3OSwgMCwgNjg4MjEsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgCisgICAgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDEyOTA1MiwgODI4NCwgMTMwODEsIDExOTIwNiwgMzU4OSwgNDIwNTEsIDQwMzUsIAorICAgIDY0OTIsIDgzMDAzLCA0MjY1LCA2NjQyLCAzOTc3LCA3Mjc0MywgNDE3NzgsIDgzNiwgOTI5NDcsIDI0ODgsIDEyNTA5NiwgCisgICAgNDU4MiwgMCwgNzE0MjYsIDQxNzc3LCAxMjkyNiwgNzI3MDgsIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIAorICAgIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIDExOTAxNCwgNjc3MjAsIDQyMzg5LCAyMjczLCAyMjg2LCA5MTc2MDQsIAorICAgIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAxOTUwNDcsIDQwMCwgMTI1OTcsIDEwMDQ4MiwgMTI4MDk3LCAxMjkwNzEsIDY2NjEsIAorICAgIDkxNzk2MSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIDExOTYxNywgNzEzMDEsIDEyNzI5MiwgMzQ3MywgNzcxOCwgMTEzNzU1LCAKKyAgICA2Njc0MiwgMTI1MTM5LCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIAorICAgIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCA5Mjc2MywgNjc1NywgNjQzNTEsIDE1NDQsIDY3MTU2LCA2NzY2LCA2NDY3NywgCisgICAgMTIwNzE2LCA2NzA4OCwgNjE0NiwgNzQwMzEsIDc3MSwgMTIwNjgyLCAxOTQ2NTAsIDEyODEyLCAxMzE2OCwgNDIyNzIsIAorICAgIDEyMjAwLCA2NjQyMywgNzkwNCwgMTI4NzE1LCA5NTMsIDEyOTE3LCA3MjcwNCwgMTIzMDAsIDY3MDg5LCAxMTQ5MSwgOTcyNCwgCisgICAgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDEyODc3NSwgNzQ4NywgNzI3MTYsIDQ3MSwgCisgICAgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgCisgICAgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCAKKyAgICA5ODMzOTAsIDYwMTcsIDY1MzExLCA3NDkzNSwgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAKKyAgICAxMDA5MzYsIDEyMDU0NCwgMCwgMTI3OTUwLCA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCAKKyAgICA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgCisgICAgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCAKKyAgICA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgMTI3ODcyLCA3MTg2LCA3Mjc1MSwgMTIwNTU1LCA3Mjc2MywgNDQ1LCAKKyAgICAxMTkwMjgsIDY2ODQ5LCAxMjUwMzEsIDkxNzg0MCwgODMzMCwgMCwgMTI1MDE4LCA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIAorICAgIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTAxMDM5LCAxNTYwLCA0Mzk1OCwgOTIxNjcsIDQ1ODQsIDczODQzLCAKKyAgICAxMjI5MTEsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCA3NDg4OCwgOTgzNDc2LCAxMDgxLCA3NDM2LCAKKyAgICAxMTE0NywgNzI1MiwgNzAwOTMsIDU5OTYsIDY5OTIxLCA0OTAzLCA2ODE0MiwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgCisgICAgMTI2NjAwLCA3MTM5LCAwLCAxMjA0NywgNzY3NSwgOTgzODQ3LCAxMjg3OTcsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCAKKyAgICA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMTEzNzk1LCA3MjgwNywgMTI3MTUsIDY4MDAyLCAxOTQ1NzYsIAorICAgIDgzMjU2LCAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMTI5MTQwLCAxMjY5ODQsIAorICAgIDY4MDAxLCA5MzM0LCA5MjcwNSwgNzA4MDAsIDcwMTAxLCA3OTc1LCAxMDA5MTAsIDc3OTU3LCA5MjE0LCA0MzQ5NCwgNDg4NCwgCisgICAgNjY1OTcsIDY5NzMyLCAwLCA5Mjk1OCwgNjMxMywgNjU1MTMsIDY5ODU3LCAxMDA5MDgsIDEyNzc5OSwgMTI4NzU3LCAyMzQ1LCAKKyAgICA0MzY5NywgNDYzLCAwLCAxMjEyODEsIDY4MTc4LCAzMTE3LCA1NDYwLCAxMjE0MjMsIDEyNzk1NSwgOTgzMzg5LCAwLCAKKyAgICA0MjI3OSwgMTI3MTQyLCAxMjY1MDMsIDc4NDE1LCA5ODMyMjgsIDgyMjEsIDk4MzM4NiwgMTMyNDgsIDEyNTAyNywgCisgICAgOTgzODQzLCA0Mzk1NiwgMTI4NDE1LCAxMjkwOTMsIDEyMTAwOSwgNTY2MywgNzExMjAsIDEyODQ3MiwgMTI4OTU4LCAKKyAgICAxMjc4NTQsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIAorICAgIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgCisgICAgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIAorICAgIDcxODc5LCA1MzksIDEwMDkzMywgMTAwOTMyLCA3MDEyMCwgMzg1MywgNjUxODAsIDcyNzMwLCAxMDA5MzksIDEwMDkzOCwgCisgICAgOTIzMjQsIDk4Mzc0MiwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAxMDA5NDEsIDI0NzgsIDEwMDk0MywgNDE2MiwgCisgICAgMTAwOTQ1LCA0MjYwLCAxMjk1MywgNjk2MzMsIDgyOTY2LCAxMjQ3MCwgOTI2NDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgCisgICAgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDExMzY4NywgOTgzNTc5LCAxMjgxOTAsIDY5NjcyLCA4MjEzLCA0MzgyNCwgCisgICAgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDkyMjQ5LCA3ODg4NSwgMTE5MjQzLCA2ODIzNSwgODMzODgsIDc4NTQ3LCAKKyAgICAxMDA5MjEsIDEwMzAxLCAxMDMzMywgMTAzOTcsIDEwMDkyNSwgMTAwOTI4LCA3Mzc5MSwgMTIwMjM4LCA4MzAzMCwgMCwgCisgICAgMTIxNDgyLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgNzQ5MDMsIAorICAgIDEyMDkyNywgMTIyMTAsIDcyMjEsIDQyMTQ3LCA3NDg2OCwgNzQ1NTAsIDcxMjE1LCA2NDc0NywgMTAwOTE5LCAxMjgwODYsIAorICAgIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAKKyAgICAzNTkxLCA0MTk2OSwgODMwMDgsIDI0NTMsIDExODg5OSwgOTI2NjYsIDY0NzA1LCA3MTA2OCwgMCwgMTAzNDksIDEwNDEzLCAKKyAgICA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAxMjkxNzUsIDgzMTYsIDEyOTE3NCwgMCwgOTQwNjAsIDY4NywgOTMwNTUsIAorICAgIDEwMDcwNSwgMCwgMTg0MCwgMTIxMjI0LCA2ODY3MSwgMTExMjEsIDQ4ODMsIDI4NSwgNDcyMywgMTExNzUsIDkyNjkyLCAKKyAgICA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgOTE3NzcwLCA0MjMyMywgNzQ2NDAsIDk3NDMsIAorICAgIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCA0MzQzNywgCisgICAgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk0NTY3LCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIDkxMjUsIAorICAgIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTAwOTE1LCA2NTE5NCwgCisgICAgNjYyMDEsIDEwMDkxNiwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgNjM4NzksIAorICAgIDQ5NDMsIDUxNTAsIDczODg5LCA3Mzc2NCwgNDAzOSwgNjQzLCAzMDg2LCA5MjUzMywgNDI0NDgsIDQyMjk5LCA1OCwgCisgICAgMTIwMDg0LCAxMDAzNTUsIDEwMTAyNiwgNjM4NzMsIDg0OTEsIDE5NDY0MywgMTAwODkxLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCAKKyAgICA3MTI2LCAxMDA4OTQsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjczMjYsIDkyOTc1LCA0MjQyLCAKKyAgICA0MjY0LCAxMjAwNzcsIDEwMDkwMiwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgCisgICAgMTIwMjI1LCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDExOTE4NiwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIAorICAgIDQyNDMwLCAxMjc4MzUsIDk4MzQ1MiwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgCisgICAgNjY2NjcsIDExOTM1MSwgMTAwNjc3LCAxMjExNzIsIDQyMjAwLCA0MjU2NiwgNzAwMDAsIDEwMDg4MSwgNTA4OCwgNjk0OCwgCisgICAgMCwgODUyNCwgNzI3MzYsIDAsIDEyMzg1LCA5MTc4NTUsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCAKKyAgICA2NTAzOSwgNjUwMzgsIDEyMzkyLCA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIAorICAgIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDc0MDY3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgCisgICAgMTAwODg1LCA2Mzg5NiwgMTIwNjEsIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDExOTkzNCwgMTI4NTg2LCA2ODQ0OSwgCisgICAgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMTI4Nzc4LCA4MTEyLCAwLCA2NTg1MiwgCisgICAgNzQ2MjksIDEyMzc5LCAxMjcxMDcsIDkyOTMwLCA0MTk2NCwgNDIyMDgsIDYzODQzLCAyMDg0LCA0MTk2NSwgNzAwODksIAorICAgIDY1ODY2LCA0MzI3LCA2Mzg0OCwgNjM4NDAsIDY2NDEzLCA0MTIyMCwgMTMwMzIsIDkyOTgwLCA1ODQsIDEyOTMzLCA0MzE3NywgCisgICAgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDEwMDg3NywgMTkzMCwgMTAwODc5LCAKKyAgICA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDEwMDU3MSwgNjM5MDEsIDEwMDU4NywgMzY1NywgMTE5NjExLCAKKyAgICA2NTIwMiwgNjAwMCwgMTEzNzg2LCAxMjQyNiwgMTIxMDU4LCA3NDAxMywgNDE3NDAsIDEyNDI4LCA0MTI4MywgNDE5MTYsIAorICAgIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgMTAwODczLCA3NTYyLCAxMDA4NTMsIDUxNzAsIDc4MjQ5LCA0MTc1NSwgCisgICAgNjc2LCAxMDA4NTYsIDY2NzA0LCA2NjY2NCwgOTk3OCwgNjY0OTEsIDM1MzYsIDgzMDQ3LCA5NzUyLCA5MjM5NywgNjE2MiwgCisgICAgNzgzMjAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgOTE3ODI4LCAKKyAgICA0MjIwNywgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDEwMDY5NCwgNzA4MDcsIAorICAgIDExOTI1OCwgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgNDEyOSwgMzUzOSwgCisgICAgMTAwODYxLCA2Mzg2MSwgNzA2ODMsIDc5MTMsIDEwMDc2NiwgNjM4NTksIDQxMzEsIDYzODY4LCAxMDAzNjYsIDYzODY3LCAKICAgICA0MTMzLCAxMTM3MSwgMjEwLCA0NjAwLCA5ODM4OTcsIDc0NTYwLCA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCA3ODUwNCwgCiAgICAgNjcwNCwgNDU5MSwgMTI4MDI5LCA0Mzg3MywgMTIwNzUzLCA5NjgwLCAxMjkzNywgMTIwNjIzLCA1NjEsIDEyMTU5LCAxOTUsIAogICAgIDY4MzIxLCA0MTUwMSwgMTk0NTgxLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIDEyODMwNiwgNDE0OTksIAotICAgIDkzMDY4LCA3MTA0NywgNDIyNDIsIDQxNDk4LCA5MTc3OTQsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCA2NzE4MiwgCisgICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDEyODE3OCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKICAgICAyOTI0LCA2NzE4MywgMTIwNTEwLCAwLCA5ODM5NzIsIDkyNzY2LCA3Mzk0MSwgNjcxODYsIDQyMzMwLCA2NzE4NywgMzk2OSwgCi0gICAgMTIxNDA1LCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgMTIxMzQ5LCAwLCAKLSAgICAxMjg4MDEsIDY3MTgwLCAxMjc1NjksIDMyNywgMTIxMjc3LCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgNjUxNDgsIDEyNDMzLCAKLSAgICA5MTc3ODEsIDEyMDIyMiwgODMxMjksIDEyNDMxLCA4NjY4LCAxMjQzNCwgNjcxOTQsIDExMzgxMiwgNTk5OSwgNzUwMTMsIAotICAgIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCA3NDA3OSwgODIxMiwgMTI4MDY1LCAxMTM3NTQsIAotICAgIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIDY2NzA5LCAxMjEwNjEsIDg4MTEsIDkyNywgOTI1MzIsIDAsIDEyNDM2LCAKLSAgICAxMjAwODcsIDQyMDIxLCAwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAxMjc5NzIsIAotICAgIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDk4MzE4NCwgMCwgMTk5MTQsIDEyMTc5LCAxMjg3NDAsIDIyOTYsIAotICAgIDEyODkzMiwgNjM4MzYsIDYzODMyLCA5MTc3NzMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgMzQ0NCwgNjM4MTcsIDExMTc4LCAKLSAgICA5MTc1ODQsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxOTQ5MjIsIDY3Mjg1LCA1NjY0LCAzOTcyLCAKLSAgICAxMjA4OTEsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAxMDgxNiwgOTE3NzY5LCAKLSAgICAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIDExOTg0NywgNDU5NiwgNjYzMzksIAotICAgIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAxOTUwMTcsIDY4MTA4LCAxMTQzLCAKLSAgICAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIAotICAgIDExNzI0LCAxMjc3ODcsIDAsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAKLSAgICAxMTQwMCwgNDM5NDMsIDE5NDc5OSwgNjY4MzMsIDEyODIzOSwgOTgzNzA3LCA5MjU1NywgOTM5NzYsIDEyNzUyMywgCi0gICAgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgOTgzODczLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIAotICAgIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIAotICAgIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgODUxOSwgMTIxMjI2LCAzMDE0LCAKLSAgICA1MDgxLCA2NTg1MywgMTIwNzE1LCAxOTQ5OTIsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCAKLSAgICA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDExMTA1LCA4NDA3LCA2NzE2MywgMTA4MDUsIDg1MTgsIDEwNzc5LCAKLSAgICAxMjAxODgsIDcxMzAzLCAxMjEyNDAsIDEyMzY3LCA0MjE3MCwgMCwgNjcyOTAsIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgCi0gICAgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIDEyMDgxNSwgMTIzNjksIDEwNjQ5LCAKLSAgICA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIAotICAgIDcwODUxLCA2NjY1OSwgOTI2MDcsIDkxNzkzMywgNjY2ODQsIDEyODA2MywgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIAotICAgIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIAotICAgIDE5NDkyNiwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAKLSAgICAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDk4MzczMiwgCi0gICAgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCAKLSAgICA3MTMxMSwgMCwgMTE5MTg1LCA0MjIyOSwgNzQ5NjMsIDEyMTAxNCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgCi0gICAgOTQxMDQsIDc4NTcxLCA3NDg4OSwgNzEzMjgsIDEyODk1NSwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgNzQwMzcsIDAsIDg1NzgsIAotICAgIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgCi0gICAgMTE3MjMsIDAsIDc0MTIwLCAxMjY2NDIsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDAsIDY3MTc5LCAKLSAgICA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIAotICAgIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIAotICAgIDQyMDAyLCAxMjQwNCwgNjgwOTIsIDc0OTI4LCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgCi0gICAgODYxLCA2NzY5OSwgNzQ4ODAsIDY4Mjk3LCA5ODM4MDcsIDQzNzU3LCA0MzM3MCwgMTI5Mjk4LCAwLCAxMTk1NiwgMTI0OTY3LCAKLSAgICAxMjEyNjMsIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAKLSAgICAxMjcyMSwgNDEwMSwgNjYxODUsIDAsIDU5OTIsIDc2MTYsIDE5NTA0NCwgMCwgMTI1NzcsIDkzMDE3LCAxMjgyODksIDg1MywgCisgICAgMTAxMDcyLCA5ODM5NjEsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAKKyAgICAxMjEzNDksIDAsIDEyODgwMSwgNjcxODAsIDEyNzU2OSwgMzI3LCAxMjEyNzcsIDkwNDIsIDEyMDg0MywgOTE3Nzc2LCAKKyAgICA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTIwMjIyLCA3NDIwNiwgMTI0MzEsIDg2NjgsIDEyNDM0LCA2NzE5NCwgMTEzODEyLCAKKyAgICA1OTk5LCA3NTAxMywgNzcxMiwgMTI0MzIsIDEyMDg4NSwgNDM2NTMsIDE3MjYsIDEwMTUsIDc0MDc5LCA4MjEyLCAxMjgwNjUsIAorICAgIDExMzc1NCwgNDI0MjMsIDExOTA2NiwgMTk0NjEzLCA3MjM5OCwgNjY3MDksIDEyMTA2MSwgODgxMSwgOTI3LCA5MjUzMiwgCisgICAgOTgzNjM3LCAxMjQzNiwgMTAxMDU2LCA0MjAyMSwgMTk0NjEwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgCisgICAgMTAxMDU4LCAxOTUwMTYsIDEwMDU2NiwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgMTAwODcwLCAwLCAxOTkxNCwgCisgICAgMTIxNzksIDEwMDU2OSwgMjI5NiwgMTAwNTk2LCA2MzgzNiwgNjM4MzIsIDcyNzkzLCAxMDk2NywgNjM4MTYsIDI1OTQsIAorICAgIDM0NDQsIDYzODE3LCAxMTE3OCwgOTE3NTg0LCA0MTUwMywgMTIwMDg3LCAxMTI2NSwgNjgyOTUsIDEyMDc1NiwgMTAwNjAwLCAKKyAgICA2NzI4NSwgNTY2NCwgMzk3MiwgMTAwOTg1LCAxMjg1ODMsIDEyOTQwOCwgNjcyODQsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgCisgICAgMTA4MTYsIDEyNzI4OSwgMTEyMTAsIDEyNDE4LCA4NTg2LCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDY4MDgxLCAKKyAgICAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgCisgICAgMTk1MDE3LCA2ODEwOCwgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgOTE3NTk0LCAxMTg4ODQsIAorICAgIDkwMjEsIDEyMDc4MywgMTE5OTMxLCAxMTcyNCwgMTI3Nzg3LCAxMjAxOTEsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgCisgICAgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAxMTQwMCwgNDM5NDMsIDEwMDY3NCwgNjY4MzMsIDEwMDgwNSwgMTI3Nzc5LCAKKyAgICA5MjU1NywgOTM5NzYsIDExOTg0NCwgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgMTAxMDYyLCA3NzE1LCAKKyAgICAyMjcxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgCisgICAgNjk4MjUsIDMwMDcsIDE0NDgsIDMwMTgsIDE5NDgwNywgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgCisgICAgODUxOSwgNzI3MTEsIDMwMTQsIDUwODEsIDY1ODUzLCAxMjA3MTUsIDE5NDk5MiwgNjgwMTQsIDY5OTUxLCA1MDc5LCAKKyAgICA2NDgwMiwgNDIyMTAsIDQ1OTcsIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMTExMDUsIDg0MDcsIDY3MTYzLCAKKyAgICAxMDgwNSwgODUxOCwgMTA3NzksIDEwMDgwMSwgNzEzMDMsIDEyMTI0MCwgMTIzNjcsIDQyMTcwLCAxMjgyMTUsIDY3MjkwLCAKKyAgICA2MjksIDE5MjQsIDEyNzA5OCwgMTIwMzcsIDY3MTU4LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAKKyAgICAxMDA4ODgsIDEyMzY5LCAxMDY0OSwgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCA1MDc1LCAxMjExMDksIAorICAgIDEyNzMwMCwgNjUwNzUsIDAsIDExMDA3LCA3MDg1MSwgNjY2NTksIDkyNjA3LCAxMDA2MDcsIDY2Njg0LCAxMjgwNjMsIAorICAgIDM0MzQsIDQ5NTQsIDE5MDQsIDkyNjc5LCA1MjY2LCAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgCisgICAgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxMjA1ODksIDQ2MSwgOTgwMywgNDIyODIsIDQ1MDQsIDE1MDUsIDEyNzg5MywgCisgICAgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDkyNjU5LCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCAKKyAgICA4NzIyLCAxMjA4MDUsIDQxMzI3LCAxMjkzMzIsIDY2Njk1LCA0MTE0LCA0MDksIDQzODMsIDg5MDAsIDg5NDgsIDQxMzI1LCAKKyAgICA3NDkzMCwgNzIxLCAxMDE4MiwgOTEwOCwgNzEzMTEsIDAsIDM0MTksIDQyMjI5LCA3NDk2MywgMTAwNjI3LCA1OTk4LCAwLCAKKyAgICA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCA5NDEwNCwgNzg1NzEsIDc0ODg5LCA3MTMyOCwgMTAwNjI5LCA0MTU3NiwgNDIyMTUsIAorICAgIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCAKKyAgICA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAxMTcyMywgOTgzNDM5LCA3NDEyMCwgMTE5MDAwLCA2NTA3NiwgOTM4LCAKKyAgICA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCA5ODMyNjIsIDY3MTc5LCA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAKKyAgICAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgCisgICAgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDEyMjkyMiwgNDIwMDIsIDEyNDA0LCA2ODA5MiwgCisgICAgNzQ5MjgsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCA4NjEsIDY3Njk5LCA3NDg4MCwgCisgICAgNjgyOTcsIDk4MzgwNywgNDM3NTcsIDQzMzcwLCAxMjkyOTgsIDEyODMwNywgMTE5NTYsIDEyNDk2NywgMTIxMjYzLCAKKyAgICA3MDgxNSwgOTYxNiwgNjYzMSwgOTIzMzgsIDEyODE2LCA0Mzc1OSwgNDIyMTgsIDEyNzEwLCA2ODY3NCwgMTI3MjEsIDQxMDEsIAorICAgIDY2MTg1LCA5ODMyNjksIDU5OTIsIDc2MTYsIDE5NTA0NCwgOTgzMzkyLCAxMjU3NywgOTMwMTcsIDEwMDg4MCwgODUzLCAKICAgICA0MjY5MywgMTk0NjQ3LCAxMTkwMjcsIDk4MzI4NCwgNTAxNiwgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAKLSAgICAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCA2Njg3NSwgOTkwMCwgNzc1MCwgOTE3OTQ2LCAKKyAgICAxMDA4NzUsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDY2ODc1LCA5OTAwLCA3NzUwLCA5MTc5NDYsIAogICAgIDEyNzg5NiwgNzQ2MTksIDExOTI2NSwgOTgzNTg3LCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAxMjgxNTEsIDEyMTc3LCAKLSAgICAxMTk4NDMsIDk4MzI2MCwgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCAKKyAgICAxMTk4NDMsIDExODg5MSwgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNTI0NSwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCAKICAgICA3NDc2OCwgODk3MSwgNzg1OTMsIDQzMTEzLCA5NzAyLCA2Njg1MiwgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCAKLSAgICA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDExOTA0MCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAxOTQ5NTQsIAotICAgIDEzMDUzLCAxMTg5NzQsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIDc4NTgzLCAKLSAgICA5MjQzMSwgMTIxMDM3LCAxMjY2NDQsIDE5NDkxNSwgNzI2NywgMTI3NDc5LCA3NDgzMywgMTI4MTgxLCA1OTkzLCAyODE5LCAKLSAgICAxMjg3ODgsIDEyNzA2LCA3MTA2MywgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDk4MzU4MCwgCi0gICAgNDI5MjMsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMTIwMDE4LCAwLCAxNTEyLCA2OTkyOSwgMTI1ODksIDQxNDc5LCAxMjgzMTMsIAotICAgIDcxMDQ4LCA0MzMzOSwgNzM3NzYsIDk4MzYsIDEyMDcyNywgOTgzOTA5LCA0MTQ4MSwgNDMzMzUsIDc4MzIsIDQyMzQzLCAKLSAgICAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCA4MzE3NywgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgNzQ5MzIsIAotICAgIDc0MDQ0LCA0MjMwNywgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDgzNDI4LCAxMjM4OSwgMTIxMDc5LCA5MjM2NiwgNDE5OTYsIAotICAgIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNDM4NDksIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgMTE2NTMsIAotICAgIDQxMTYsIDEyMzkxLCA2NjE5MywgMTIxMzgzLCA0OTM5LCAxMjM4NCwgMCwgMTI3Nzc4LCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgCi0gICAgNzAyODUsIDY3Mzk4LCAxMjg4MjAsIDEyNjQ5LCAxMjAwMjIsIDAsIDgyNDcsIDUwNywgOTEsIDIwNDIsIDEyMDc3NSwgCi0gICAgNDM2NDMsIDEyMTQ0NSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgMTE5ODEzLCA3NzQsIDExOTgyOSwgNzc4NDAsIDExOTgxNSwgCi0gICAgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCA3ODM3NywgOTgzMjM3LCA5MTc2MjgsIAotICAgIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgOTY4NywgNDE2ODEsIAotICAgIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgMCwgNzUzNCwgCi0gICAgMTIyMTksIDIyMjYsIDcwNDk5LCA0MjgxMCwgMTA0OTIsIDEyMTUxMCwgMTIxMTQ4LCAxMjE1MDksIDQzMTE5LCAwLCAKLSAgICA3ODUzNywgMTI0MDMsIDI1MDAsIDcwMTQ1LCA4MzI0NiwgNDg5OSwgMTI3MjksIDk4MzM5OSwgMTk0NjE5LCA3NDExMywgCisgICAgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAxMTkwNDAsIDEzMDU0LCAxMjM5NCwgNjYxODIsIDAsIAorICAgIDE5NDkzNywgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgCisgICAgNzg1ODMsIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIAorICAgIDI4MTksIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgOTgzNjczLCAxMzYzLCAKKyAgICA5ODM1ODAsIDQyOTIzLCAxMzEwOSwgNjM5OTYsIDMwNzcsIDEyMDAxOCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgCisgICAgMTAxMDMxLCA3MTA0OCwgNDMzMzksIDczNzc2LCA5ODM2LCAxMTk2MDcsIDkxNzgxNywgNDE0ODEsIDQzMzM1LCA3ODMyLCAKKyAgICA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgODMxNzcsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIAorICAgIDc0OTMyLCA3NDA0NCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCA4MzQyOCwgMTIzODksIDEyMTA3OSwgOTIzNjYsIAorICAgIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDQzODQ5LCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIAorICAgIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDEyMTM4MywgNDkzOSwgMTIzODQsIDEyMDE4NCwgMTI3Nzc4LCA0MTY4NiwgCisgICAgNjM5MDUsIDExOTYwMSwgNzAyODUsIDY3Mzk4LCAxMDA4ODQsIDEyNjQ5LCAxMjAwMjIsIDAsIDgyNDcsIDUwNywgOTEsIAorICAgIDIwNDIsIDEyMDc3NSwgNDM2NDMsIDEyMTQ0NSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgNzA2ODAsIDc3NCwgMTE5ODI5LCAKKyAgICA3Nzg0MCwgMTE5ODE1LCA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCAKKyAgICA5MTc4MjMsIDkxNzYyOCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTAxMDE5LCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCAKKyAgICA5Njg3LCA0MTY4MSwgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTE5MDg5LCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAKKyAgICAwLCA3NTM0LCAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIAorICAgIDAsIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKICAgICAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMTI5MDQ2LCA3NDgzNCwgMTI4NTksIDcwMDg3LCAKICAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgNDM2NDEsIDEyODE4MywgMTI2NDUsIDUxNDYsIAogICAgIDExMzIwLCA2ODQxMCwgNjc0OCwgNjUwNDAsIDE5NDc4NiwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgCi0gICAgNTE0NywgMTI1MDE5LCAwLCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIDQ5NzYsIAotICAgIDY0MTc2LCAwLCA2NzYxMCwgODI0MSwgMCwgNzc4NjgsIDQyMDYsIDAsIDc4NjYyLCAxMjkwMjksIDEyODI5OCwgNjcyNzcsIAotICAgIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgCi0gICAgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAxMjA5MzAsIDExMjMsIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCAKLSAgICA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKLSAgICA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIDEyODU2MywgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIAotICAgIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgNzAxMTksIDkwOTMsIDEyODUzNSwgNjgzMywgOTI1NzQsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgCi0gICAgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAxMjA5MzgsIDQzNTI3LCAxMjExOTIsIDcyNywgCi0gICAgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAKLSAgICA5ODMyMzQsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgNzEyMDksIDkyMzQzLCA5ODM4NzIsIDEyMzY2LCAxMDk2MywgNjA2NiwgCi0gICAgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMTIxMDQ1LCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgCi0gICAgOTI0NzMsIDk4MzI0NywgMTIwNzEyLCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgNjM5NjUsIAotICAgIDEyMDMwNSwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgCi0gICAgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgCi0gICAgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAwLCAxMjEyNDEsIDI0ODcsIDY3NjE0LCAzMTIxLCAKLSAgICAxODA0LCAzMzExLCA2NzYxNSwgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDkyNzY5LCAxMjAwMjAsIDE5NDU5NCwgCi0gICAgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCAKLSAgICA1MTAsIDY0NjYzLCAwLCAxMjE1MDAsIDQ1NjEsIDIxMDEsIDEzOTgsIDkxNzk3MiwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgCi0gICAgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIAotICAgIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIDY5ODkxLCAwLCA4MTQ0LCAyMTE3LCAwLCAxMjExNTUsIDEyNDA2LCAKLSAgICA5MTc5NzAsIDE5OTMxLCA2NjM4OCwgNjY3OCwgNzc2OSwgOTgzMTI0LCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgCi0gICAgNDMxMDEsIDk5ODEsIDAsIDQwOTg2LCA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAKLSAgICAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDExMTg0LCAKLSAgICA0NTMzLCAxMjcyMTIsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgCi0gICAgMTI4OTEyLCAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgCi0gICAgMTIwMzEzLCAwLCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCA5ODMzNDEsIDAsIDM0MzYsIAotICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgMCwgMCwgMCwgCi0gICAgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMTk0OTkzLCAxMjE0NTgsIDEyNzg1OSwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCi0gICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMTI3ODMzLCA2NzYwNiwgMTE5MDgzLCAKLSAgICAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgNjM4NDEsIDk2MTMsIAotICAgIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgCi0gICAgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIAotICAgIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3ODMxLCAKLSAgICAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAKLSAgICAxMjcwODEsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAKLSAgICAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIAotICAgIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIAotICAgIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDcwMjc2LCA5MjY2OSwgNzEzMzIsIDEyMDE1OCwgNDI1ODcsIAotICAgIDQyMjE0LCA0MTM5NCwgMTExODgsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIAotICAgIDEyMDEzMSwgNjg0MjMsIDExOTIxOCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTI4NDYwLCA0MTM5OCwgNzM4MiwgCi0gICAgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgMTMxNTksIDEyMTQwLCA5NTcyLCA5ODMxMzIsIAotICAgIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIAotICAgIDk5NzcsIDAsIDEyMTI4MywgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCAKLSAgICA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDkyOTY4LCAxOTQ2MTAsIDY0NTE0LCAKLSAgICAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgOTgzNTU1LCA1ODUwLCA3NTgsIDc1MzYsIDEyMDUzOCwgOTIyMzQsIAotICAgIDQxNDQxLCAxMDY5MywgNjQwMDYsIDc1MDQ0LCA2NDAwNSwgNDA1OCwgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAxMjgxNzYsIAotICAgIDExOTA1MCwgMCwgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAxMjg2ODUsIAotICAgIDEwNzc0LCA2NzEwNCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDEyNzAwNiwgMTg1MiwgMzA1NywgNjQwNDYsIDczNzQ0LCAKLSAgICA2NDAzNCwgNjQwMzksIDY4MDY1LCAwLCA5ODM2OTAsIDkyOTEzLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAKLSAgICAwLCAxMjEzMjMsIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAotICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIAotICAgIDE2ODIsIDQzODYzLCAxOTQ4OTYsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCAKLSAgICA2NzY4LCAxMDcyOCwgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDEyNzgzMiwgNDMwNDAsIAotICAgIDE4MzMsIDExNTc2LCA3MDA1NCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCAKLSAgICA4MDg1LCA0MjUyNSwgMTE5OTQ0LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjA5OTcsIAotICAgIDY0NDgzLCA2NTY5MywgOTgzNzExLCA5ODM0OTUsIDEyODYxNSwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgCi0gICAgNDI4NjQsIDEyNjQ5OCwgNDMxNjgsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAotICAgIDAsIDY2MTk3LCA5ODM0NzQsIDEwOTg2LCA2NDY4MywgMTI4NTQ5LCAxMjg0NTQsIDM0NTUsIDEyNjUzMCwgMCwgOTg3OSwgMCwgCi0gICAgMCwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgODMzNjgsIDUxNDIsIAotICAgIDI0MDcsIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCA4MzM3MiwgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIAotICAgIDAsIDAsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMTIwMzg3LCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgNzAzODUsIAotICAgIDg2NjIsIDEyMDMyNCwgMCwgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgODMzNTksIAotICAgIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgCi0gICAgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAKLSAgICAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIAotICAgIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAxMjUwNSwgODI5NjAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgCi0gICAgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIAotICAgIDEyNjk2LCAxMjgyNTYsIDkxNzYwMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgNDI4MTgsIAotICAgIDEyNjYzMiwgNzAzMDYsIDEyMDQ5MCwgNzAzMzMsIDExOTEzNywgMTUwNiwgNDM1NjIsIDExOTkxMywgOTI0OTEsIDY4MDc2LCAKLSAgICAxMjY1MSwgMTIwOTE3LCA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgMTk0NjMzLCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgCi0gICAgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMTIxMDc3LCA5ODMyOTcsIAotICAgIDEyMDMzLCA0MjE3OCwgMTk0NzU0LCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAxMTQzMCwgMCwgNzAyOTksIDEyMTUwOCwgCi0gICAgMTI0OTUxLCA2ODMyNCwgMzE3OCwgMTI2NDg4LCAxMjg2MzMsIDkyNzA0LCA5MTc1NjYsIDkwODAsIDEyMDk0MywgNjc2OTcsIAotICAgIDE5NTEwMSwgNjgyMDksIDcyNDE4LCAxMTA4MiwgNzE0ODUsIDU2OTksIDgzMzczLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIAotICAgIDExOTExMiwgNzA0NzcsIDExMTcwLCA2ODY2MiwgMTI4MTIwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDgzMzg0LCAxMTQ4NywgCi0gICAgNjc4NTgsIDEyNDY0LCA5ODMzNjUsIDQzMDQ1LCA5ODM4MzEsIDcwMzQ1LCA0MzM0NSwgOTgzMjc2LCAxMDc3MCwgMTE4OTk0LCAKLSAgICA2ODA3LCA0NjUsIDk4MjksIDY5OTk3LCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIAotICAgIDEwOTMwLCAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDgzMDQ3LCA5ODM5MzMsIDEyNDY4LCAKLSAgICA4NjA3LCAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjUxMjIsIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgCi0gICAgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAorICAgIDUxNDcsIDEyNTAxOSwgOTE3NjI0LCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIAorICAgIDQ5NzYsIDY0MTc2LCA3NDk2NiwgNjc2MTAsIDgyNDEsIDk4MzkwMCwgNzc4NjgsIDQyMDYsIDEyNzM1MiwgNzg2NjIsIAorICAgIDEyOTAyOSwgMTI4Mjk4LCA2NzI3NywgMTAxMzgsIDY3MjM4LCAxMjg3ODUsIDg4OTcsIDEyMDIzNCwgMTQyMiwgODM1NywgCisgICAgNDEyNCwgNzc4NjIsIDY1ODM2LCAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDEwMDkxMiwgMTIwOTMwLCAxMTIzLCA5NjMsIAorICAgIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgCisgICAgMTI5MTI2LCA0NDAyLCA5OTcwLCAxMjQwMiwgOTMwNjIsIDQyMzkyLCAxMzA1LCAxMjQwOCwgOTIzODQsIDQ0MDA3LCAKKyAgICAxMjg0NjUsIDEyNzIxNiwgNDE0NjQsIDEyNDExLCAxMjk2OSwgNjcyNjgsIDQxNDY1LCAxMjEwOTIsIDg1MjgsIDE1NzUsIDAsIAorICAgIDYzOTU1LCAxNjUsIDMwMjQsIDQxNDY3LCAxMTkxNjMsIDcwMTE5LCA5MDkzLCAxMDA2MjAsIDY4MzMsIDkyNTc0LCA2Mzk1OCwgCisgICAgMTIwOTMxLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAKKyAgICAxMjA5MzgsIDQzNTI3LCAxMDA2MTEsIDcyNywgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAxMjczODcsIDQyMTc2LCAKKyAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDk4MzIzNCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCA3MTIwOSwgCisgICAgOTIzNDMsIDk4Mzg3MiwgMTIzNjYsIDEwOTYzLCA2MDY2LCAxMzI5LCAwLCAzMDUyLCA5MjIwLCAxMjEwNDUsIDY0NDc4LCAKKyAgICAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMTAwODc2LCAxMTg5MjMsIDc0ODM3LCAxMjAxNTUsIAorICAgIDE0OTksIDEyMTI5OSwgODA1NSwgNDI3NDAsIDYzOTY1LCA3NDMzOCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgCisgICAgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIAorICAgIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAKKyAgICA5ODM5MzIsIDEyMTI0MSwgMjQ4NywgNjc2MTQsIDMxMjEsIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIAorICAgIDEyMjIwLCA2NzYxNiwgOTI3NjksIDEyMDAyMCwgMTk0NTk0LCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCA5ODMyODIsIDY3NTkyLCAKKyAgICAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCA5ODM3MDksIDY0NjE5LCA1MTAsIDY0NjYzLCA5NDAzMywgMTIxNTAwLCAKKyAgICA0NTYxLCAyMTAxLCAxMzk4LCAxOTUwNTEsIDkyNTU0LCA3NDAzNCwgNDE1NjksIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIAorICAgIDEyMDUwNSwgODQwLCA5ODMyODMsIDY5OTkyLCA3MTAxLCA2OTY3LCAwLCAxOTQ4OTgsIDk3OTYsIDEyNzAwMCwgMzMzLCAKKyAgICA2OTg5MSwgMTI3MTQ1LCA4MTQ0LCAyMTE3LCAwLCA3MDcxMiwgMTI0MDYsIDkxNzk3MCwgMTk5MzEsIDY2Mzg4LCA2Njc4LCAKKyAgICA3NzY5LCA5ODMxMjQsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCA0MzEwMSwgOTk4MSwgNzQxNTcsIDQwOTg2LCAKKyAgICA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAxMDA2MjgsIDk0MDk3LCA2NzU5NCwgCisgICAgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIDQ1MzMsIDEyNzIxMiwgCisgICAgNzQwMDMsIDY0OTAsIDk4Mzg1NywgMTIwMzgsIDAsIDAsIDY4MjI1LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDEyODkxMiwgCisgICAgMTk0OCwgNjk4NDEsIDAsIDk1MiwgMTI4MjM1LCAxMjUxMDcsIDk4MzM1NCwgNzAyOTYsIDY0NDksIDk0OTQsIDEyMDMxMywgCisgICAgNzA3MzgsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDEyODg3MSwgOTE3NjIxLCAzNDM2LCAKKyAgICA2Njc4MCwgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgOTgzMzM2LCAKKyAgICAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAxMjExODksIDEyMTQ1OCwgMTI3ODU5LCA4NTAwLCA0MjIyMiwgCisgICAgMTAxMDQ3LCA3Mzc0MywgMTIwMTQzLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAxMDA2OTcsIDEyNzgzMywgNjc2MDYsIAorICAgIDExOTA4MywgMTIxMDgzLCA0MjIxNywgMTMxMDIsIDEyODczNiwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgCisgICAgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIAorICAgIDEwMjI4LCA2NDk1NywgMTEyODEsIDEyODMxMiwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgCisgICAgNDIzNzIsIDcyNzg2LCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCAKKyAgICA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3NTY4LCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI1MjM1LCAxMjg0NiwgCisgICAgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAxMDA2OTUsIDQzNzM5LCAxMDEwNDEsIDg1MTEsIDk0NjAsIDgyMywgCisgICAgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCAKKyAgICA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgCisgICAgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDEyNzg1MiwgCisgICAgNDMyMywgNzAyNzYsIDkyNjY5LCA3MTMzMiwgMTIwMTU4LCA0MjU4NywgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgCisgICAgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgMTIwMTMxLCA2ODQyMywgMTE5MjE4LCAxMDc3MSwgCisgICAgMjg3NiwgNzQwNzQsIDkyNTMwLCAxMjg0NjAsIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCAKKyAgICA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgMTIxNDAsIDk1NzIsIDEyOTA4NSwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgCisgICAgMTI1MDY5LCAxMjUwMjAsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMTIxMjgzLCA2NTc1OSwgMTA3NjUsIAorICAgIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIDk1MjEsIDk1ODksIDY0NzU1LCAxMjUyMDAsIAorICAgIDY0MDIwLCAxMjY2MDQsIDEwNDY0LCAxOTQ5ODAsIDkyOTY4LCA3Mjg0NywgNjQ1MTQsIDExNTI4LCA2NDAyNCwgMTI4MDcyLCAKKyAgICA2NzksIDY0MDEzLCAxMjkzMTQsIDU4NTAsIDc1OCwgNzUzNiwgMTIwNTM4LCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgCisgICAgNzUwNDQsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDEyODE3NiwgMTE5MDUwLCAwLCAxOTUwMjMsIAorICAgIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDEyODY4NSwgMTA3NzQsIDY3MTA0LCA0MjIwMSwgCisgICAgMTI0MjEsIDExOTEwOSwgMTI1MjcwLCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgNjgwNjUsIAorICAgIDEyNzA3NSwgOTgzNjkwLCA3Mjc3MywgOTIzMjIsIDc2NDUsIDEyODU0LCA3Mjc3MiwgMzQ5NiwgMCwgMTIxMzIzLCAKKyAgICAxMTM3MTAsIDkxMDIsIDYyNywgMTI3Nzk1LCA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAxMzMwOSwgMTE1NzAsIAorICAgIDEyNzgxMSwgMTk5NjAsIDExNjk2LCA5MjkxMywgMTAxOCwgMTE4OTcwLCAxMjkwNzUsIDE5NDg5NywgMTY4MiwgNDM4NjMsIAorICAgIDE5NDg5NiwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgNjc3MTcsIDc0MzU4LCA3MzgxNCwgMTE0MTIsIDY3NjgsIDEwNzI4LCAKKyAgICAxMTk5ODIsIDcxMzE2LCA3MTA5OSwgNDMzMTEsIDY0OTY2LCAxMTU3NywgMTI3ODMyLCA0MzA0MCwgMTgzMywgMTE1NzYsIAorICAgIDcwMDU0LCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxMTkzMzQsIDc1MzUsIDgwODUsIDQyNTI1LCAKKyAgICAxMTk5NDQsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDEyMDk5NywgNjQ0ODMsIAorICAgIDY1NjkzLCA5ODM3MTEsIDEyNzEyMCwgNzQyODgsIDY5Njk1LCA0MjI0MCwgMTI4NTg3LCAxMjEzNTIsIDQyODY0LCAKKyAgICAxMDEwMzcsIDQzMTY4LCA0MTg2OCwgMTE4NCwgMTIxMjg1LCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAorICAgIDEyOTM0MCwgNjYxOTcsIDk4MzQ3NCwgMTA5ODYsIDY0NjgzLCAxMjg1NDksIDEyODQ1NCwgMzQ1NSwgMTI2NTMwLCAKKyAgICAxMTk2NjQsIDk4NzksIDAsIDk4MzIxNSwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDE5NDk4MiwgMCwgNjY3OTksIAorICAgIDMzMiwgMTE4ODA4LCA4MzM2OCwgNTE0MiwgMjQwNywgNjk2NDMsIDQyMTk5LCA5MjM4NiwgOTI0MDQsIDc0MzczLCA4MzM3MiwgCisgICAgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIDAsIDkxNzc2MywgMTI5ODUsIDQyODY3LCAxODM0LCAxMjAzODcsIDkyNDYxLCAKKyAgICA2OTgxNywgMTA5NDAsIDY1MjQ5LCA3MDM4NSwgODY2MiwgMTIwMzI0LCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAKKyAgICAxOTUwOTMsIDY3Njc0LCA5MTc5NDIsIDgzMzU5LCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgOTE3NTA1LCAxODI4LCA3NDQ3NCwgCisgICAgMTIwMDE5LCA2ODA3OCwgODUzMSwgMTI0OTksIDYyODAsIDEyMzI0LCA3MjQzNCwgNjUyMzgsIDY4Mzc0LCA0ODMyLCAKKyAgICA2NTU3MywgNDM4NTEsIDYyNzksIDEyNTA4LCAxMjkwNCwgMTI1MDIsIDkxNjEsIDEyODU1NSwgMTYyMCwgMTEyNDcsIDM2MDEsIAorICAgIDEyMTMwMSwgODMzNTMsIDY3MjQ2LCA2MDksIDExNTU1LCA4MzQ1NiwgMTI0OTYsIDExOTgwLCA3NDE4MSwgNDM0MywgCisgICAgMTI1MDUsIDgyOTYwLCAxMjc4NjMsIDEyNTI1OCwgMTEzNzcsIDIzOSwgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIAorICAgIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIDcyOTgsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgCisgICAgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgMTI2NjMyLCA3MDMwNiwgMTIwNDkwLCA3MDMzMywgCisgICAgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMTE5OTEzLCA5MjQ5MSwgNjgwNzYsIDEyNjUxLCAxMjA5MTcsIDY0NjI4LCA3NDUxNywgCisgICAgMTIwNTgsIDc0MDg0LCAxOTQ2MzMsIDc0OTQsIDEyODc4MCwgNDkyNCwgNjU1OTIsIDExODg0NCwgMTk0ODIzLCAxMjcwODgsIAorICAgIDM1NSwgOTcxOSwgNjY3NjIsIDEzMDY2LCA2NDc5NiwgNzg2NjMsIDk4MzI5NywgMTIwMzMsIDQyMTc4LCAxOTQ3NTQsIAorICAgIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCA3MDI5OSwgMTIxNTA4LCAxMjQ5NTEsIDY4MzI0LCAzMTc4LCAKKyAgICAxMjY0ODgsIDEyODYzMywgOTI3MDQsIDkxNzU2NiwgOTA4MCwgMTIwOTQzLCA2NzY5NywgMTk1MTAxLCA2ODIwOSwgNzI0MTgsIAorICAgIDExMDgyLCA3MTQ4NSwgNTY5OSwgODMzNzMsIDY2MDAwLCA5NDg4LCA2NTE2NiwgMTE5MTEyLCA3MDQ3NywgMTExNzAsIAorICAgIDY4NjYyLCAxMDA1MDUsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgODMzODQsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIDk4MzM2NSwgCisgICAgNDMwNDUsIDk4MzIwMSwgNzAzNDUsIDQzMzQ1LCAxMjA2NTcsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgCisgICAgNjk5OTcsIDc0MzQ4LCAxMjE0MDMsIDQzMzQ2LCA4MTE2LCA3OTUsIDEyMDM1MiwgNzI0MTIsIDEyNDYyLCAxMDkzMCwgCisgICAgMTA4MzEsIDEyMTMyMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDkzMDU2LCAxMDExMiwgOTgzOTMzLCAxMjQ2OCwgODYwNywgCisgICAgMTAwOCwgMTE4OTQ4LCAxMDA5MiwgMTIwNTM5LCAxMjg4NTEsIDY3ODU1LCA1NTI1NywgNzM3NzEsIDE3NjYsIDExMjgyLCAKKyAgICAxMTk5NiwgMTgyMCwgNDU0NywgMTAwNzA5LCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAogICAgIDEyNzI5NCwgODMzNzQsIDY4NDg5LCA0MzQ1LCAxMjYxNiwgOTE3Nzg0LCAxMjg5NDcsIDk4MzE1NSwgNzQ0NjcsIDAsIAotICAgIDk4MzgxOSwgMTI4MjkxLCA1MzgyLCAxMjc3NzksIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgCi0gICAgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDkxNzc2NiwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAKLSAgICAxMjEwMDIsIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgCi0gICAgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgCi0gICAgNzM4MTYsIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDEzMjYsIDEyMDYzMSwgODMzOTMsIDQzMDYzLCAKKyAgICA3Mzk1NSwgMTI4MjkxLCA1MzgyLCAxMjEzOTAsIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgNjk4OTcsIAorICAgIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDEyODY4OSwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAxMjEwMDIsIAorICAgIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgNzg1ODQsIAorICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgNzM4MTYsIAorICAgIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAxMjc1MzksIDExNjIxLCAxMjQ2MCwgMTMyNiwgMTIwNjMxLCA4MzM5MywgNDMwNjMsIAogICAgIDQzMjM5LCA2NTY3OCwgMTk0ODQwLCA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgCiAgICAgNTQwMCwgMTE1OTQsIDEyMDQwNSwgNjgzMzMsIDgzMzkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAxMjgwMTIsIDU1ODcsIAogICAgIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgCi0gICAgNzAyOTQsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDgzMzg4LCA0Mjc2NiwgODMzODcsIDIyMTAsIDk5ODMsIAotICAgIDEyODY4OSwgOTQwMDksIDAsIDAsIDAsIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgMTQ2MSwgOTEwLCAxMTkxMzMsIAotICAgIDAsIDY3NDksIDM2NTgsIDkzOTY0LCAxMjA1MjUsIDAsIDc2MTcsIDE5NDg0MSwgMTI4ODgsIDEyNzk4MywgNjc2NjgsIAotICAgIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgNTcwMywgMTI4MjQ3LCA0MTUxNywgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIAotICAgIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIAotICAgIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgMTIxMTkxLCA2NTQsIDExMzQ1LCA2NTMsIAotICAgIDY1MiwgMCwgNjQ3LCA4MzI2NiwgNjMzLCAxMjA3NDQsIDk4MzgwOSwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDE5NDkwOSwgCi0gICAgMzksIDEyNDg3LCAxMjEyNDcsIDEyMDUyOSwgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMTE5NjA3LCAzMTk1LCA1NTUwLCAKLSAgICAxMjkxMjEsIDc4OTcsIDEyNzA4OSwgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDk4MzYzNCwgCi0gICAgMjg3NywgMTIxNTE4LCA3MDQ5NiwgMTY3NSwgNjk4NDAsIDAsIDAsIDExOTA3OCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIAotICAgIDE5NDc3NywgMTIxMTYyLCA2NzE3MCwgMTIwNzkwLCAxMTg3ODcsIDQzMjQ0LCA5MjIzMywgOTE3ODM1LCA5ODM5MTYsIAotICAgIDExOTU2MSwgOTgzMDc4LCAxOTQ5MTQsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAwLCA5ODMxNTEsIDc3ODYwLCAxMjg5NDgsIAotICAgIDgzNDQwLCAyNzAsIDAsIDEwNzE0LCAxMTg5ODMsIDcyNDM3LCAwLCAxMTk5NDIsIDExOTMzOCwgNjUzNzIsIDczODAzLCAKLSAgICA3NDAzOCwgNjgyNTEsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDcxNDQwLCAwLCAwLCA3MDcsIDE5NDgzOSwgMTI4NDA5LCAKLSAgICA5MjgyLCAxMTE2MywgMjI0LCAxMjg1ODgsIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgMTk0NTg2LCA2ODY0NCwgCi0gICAgOTgzMTMxLCAzODQxLCA2NzM1NywgNjczNDEsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAxMjcxODEsIDEyODkwLCAyOTA5LCAKLSAgICA2ODYxOSwgNDQwMDgsIDY4NjI3LCAxMjA2OTksIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgOTE3OTQzLCAxMTk2MiwgCi0gICAgMTIxMzk3LCAxMjUwNywgMTE5NiwgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAKLSAgICAxMjE5OCwgOTE3ODg3LCA2NDgyNCwgMTE5MzQzLCAxMjcyNDMsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgNzAwNzMsIAotICAgIDI3MDUsIDEyODY4MCwgNDE1MjAsIDE5NTA5OCwgMTIwMzc5LCAxMTk4NiwgNzc2NSwgNDI1MDIsIDgyODAsIDc0NTIwLCAKLSAgICAyNzAxLCAwLCAxMjAyNDAsIDU3NjcsIDAsIDE5NTAxOCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgCi0gICAgMTIxMjMzLCA2Mzc0NSwgMTc0OCwgNjM3NzAsIDEyMTQxOSwgMTIxMDc4LCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCAKLSAgICA3ODYwOSwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIAotICAgIDEyNzc4MSwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCA2Mzg2LCA2Mzc4MywgMTIwOTkwLCAxMjUwNDEsIAotICAgIDkyNTM1LCAwLCAwLCA2ODI0OSwgNzQ1NzUsIDEyNzAxMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDEyMTQ1MiwgCisgICAgNzAyOTQsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDcwNzAxLCA0Mjc2NiwgODMzODcsIDIyMTAsIDk5ODMsIAorICAgIDExOTk2MywgOTQwMDksIDEyOTI5OSwgMCwgMTI4ODEwLCA3Mzk4LCA0MTUxNSwgOTgzODgwLCAxMTgwMiwgODA0MSwgMTQ2MSwgCisgICAgOTEwLCAxMTkxMzMsIDk4MzMyNywgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMTI3MzYzLCA3NjE3LCAxOTQ4NDEsIAorICAgIDEyODg4LCAxMDA1MDEsIDY3NjY4LCAxMzE0MywgMTI3OTc1LCA5MTkzLCAxMTA5NywgNTcwMywgMTI4MjQ3LCA0MTUxNywgCisgICAgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIDk4MzU5MywgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCAKKyAgICA2MTMsIDc1NDMsIDEwMDc4NywgNDc3LCA0MTA4MywgOTI1MjEsIDE5NDU5MywgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIAorICAgIDEyODYyOCwgMCwgODIyNSwgMTIxMTkxLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCA4MzI2NiwgNjMzLCAKKyAgICAxMjA3NDQsIDcyNzg4LCAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMTk0OTA5LCAzOSwgMTI0ODcsIDEyMTI0NywgMTIwNTI5LCAKKyAgICA3NDE5OSwgMTI0ODIsIDk4Mzc3MCwgMTI0ODksIDEwMDkxNywgMzE5NSwgNTU1MCwgMTI4MTcyLCA3ODk3LCAxMjcwODksIAorICAgIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCA5ODM2MzQsIDI4NzcsIDEyMTUxOCwgNzA0OTYsIAorICAgIDE2NzUsIDY5ODQwLCAwLCAwLCAxMTkwNzgsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAxOTQ3NzcsIDEyMTE2MiwgCisgICAgNjcxNzAsIDEyMDc5MCwgMTE4Nzg3LCA0MzI0NCwgOTIyMzMsIDkxNzgzNSwgMTI1MTkzLCAxMTk1NjEsIDk4MzA3OCwgCisgICAgMTk0OTE0LCAxOTQ5MjEsIDEyODE2MCwgOTkzOSwgMTIxNTExLCAxMjUxOTUsIDc3ODYwLCAxMjg5NDgsIDgzNDQwLCAyNzAsIAorICAgIDk4MzMwOSwgMTA3MTQsIDExODk4MywgNzI0MzcsIDAsIDExOTk0MiwgMTE5MzM4LCA2NTM3MiwgNzM4MDMsIDc0MDM4LCAKKyAgICA2ODI1MSwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgNzE0NDAsIDAsIDAsIDcwNywgMTE5NjQ5LCAxMDA0MDAsIDkyODIsIAorICAgIDExMTYzLCAyMjQsIDcyNzk5LCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDcwNjc0LCA2ODY0NCwgMTI3MjE0LCAzODQxLCAKKyAgICA2NzM1NywgNjczNDEsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAxMjcxODEsIDEyODkwLCAyOTA5LCA2ODYxOSwgNDQwMDgsIAorICAgIDY4NjI3LCAxMDEwMjMsIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgOTE3OTQzLCAxMTk2MiwgMTIxMzk3LCAxMjUwNywgMTE5NiwgCisgICAgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAxMDEwMjQsIDEyMTk4LCA5MTc4ODcsIAorICAgIDY0ODI0LCAxMTkzNDMsIDEyNjYwOCwgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3MDA3MywgMjcwNSwgMTI4NjgwLCAKKyAgICA0MTUyMCwgMTk1MDk4LCAxMjAzNzksIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIDI3MDEsIDk4MzMzMywgCisgICAgMTIwMjQwLCA1NzY3LCAwLCAxOTUwMTgsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIDEyMTIzMywgNjM3NDUsIAorICAgIDE3NDgsIDYzNzcwLCAxMjE0MTksIDEyMTA3OCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgNzg2MDksIDYzNzY0LCAKKyAgICA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgOTgzNzc2LCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIDEyNzc4MSwgCisgICAgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAxMjcxNDAsIDYzODYsIDYzNzgzLCAxMjA5OTAsIDEyNTA0MSwgOTI1MzUsIAorICAgIDEyMjg4NCwgMCwgNjgyNDksIDc0NTc1LCAxMDA5OTcsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAxMjE0NTIsIAogICAgIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDExMTcxLCAxOTIyLCAxMjcyNzUsIDEyNDk4LCAxMDk4NywgCi0gICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyODExMiwgNDkzLCAwLCA0MzE5NywgMTcxNywgCi0gICAgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAKLSAgICA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIDgzNTIxLCAKLSAgICAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgNjM4NjQsIAotICAgIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIAotICAgIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgNjM3NTksIAotICAgIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIAotICAgIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCi0gICAgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgCi0gICAgMTI5MDY2LCA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCAKLSAgICA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAwLCAxMjUxMSwgCi0gICAgNzQ0NTMsIDEyNTE0LCAwLCA3MTEzMCwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgMTI4MDQ4LCA3Mzc4LCAKLSAgICAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIDEyMDkwMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAKLSAgICAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAKLSAgICAxMjgzNTQsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgCi0gICAgMTI3MjgwLCA5ODMzMTEsIDgzMDIwLCAyMzA5LCAxMzEyLCA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgCi0gICAgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCAKLSAgICA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIAotICAgIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCA3OTQ4LCAKLSAgICA5MjM2LCA3Nzk0MiwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIAotICAgIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCAKLSAgICA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgCi0gICAgMTMwMTYsIDgyMTAsIDEyMTA2MiwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIAotICAgIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgCi0gICAgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDk4MzQ3MywgMTIwMTYsIDY1NzcwLCA5NTQ4LCAKLSAgICA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDE5NDY4OSwgMTI3MTkxLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgCi0gICAgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgOTgzODM4LCAKLSAgICAxMTE0NiwgNzE0NzcsIDEyNTAwLCA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIAotICAgIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAKLSAgICAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIAotICAgIDc0MTY1LCA3NDc4MiwgNDM0OTksIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCAKLSAgICA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgCi0gICAgNjk3MTksIDMyMzEsIDkxNzgzNiwgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAKLSAgICAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCAKLSAgICA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIAotICAgIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCAKLSAgICA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgOTgzNDY3LCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCAKLSAgICA3MDQ1NCwgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCAKLSAgICA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDAsIAotICAgIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgzMywgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgCi0gICAgNjUwODMsIDY4MzksIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgCi0gICAgMTIwMzUxLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgMTI5MTAsIDY3NzEwLCA2NjY0NCwgMTMwMjgsIDY3MzcsIAotICAgIDEyNTM3LCAwLCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCAKLSAgICA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIDEyODgxMCwgOTgzNjQ1LCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCAKLSAgICA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAxMjYyMywgMCwgNjIwNywgOTgzMjI1LCA2MTE3LCA2NTkzMCwgODQxMiwgCi0gICAgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDEyMDIzMywgMTI0ODEsIAotICAgIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCAKLSAgICAxMTkyNDQsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIAotICAgIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCAKLSAgICA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgCi0gICAgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCAKLSAgICA4MDk5LCAxMjc5ODQsIDAsIDEzNDMsIDkxNzk5OSwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgNzI0MzYsIAotICAgIDExMzcxMywgMTE3NDEsIDkxNzk4NiwgNzUwNDMsIDkyMTYsIDgyNjMsIDExMjc5LCA4MzAyMywgODMwMjQsIDgzMDI1LCAKLSAgICAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgNDM5NTQsIAotICAgIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgCi0gICAgNjk2ODEsIDAsIDQzMDAxLCA4MDI5LCAwLCAwLCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAKLSAgICAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIAotICAgIDc4NTgxLCA0MTU2LCAwLCAxMjczMjksIDY0MjEsIDc4MDM5LCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgCi0gICAgNzQ1NDIsIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgCi0gICAgNDM5MjUsIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDkyNzQ1LCAwLCAKLSAgICA2ODE5LCAxMzA0OSwgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNjU4MjcsIDEzMDUwLCA5OTI0LCAxOTQ3NDUsIDY1MDcsIAorICAgIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDEyOTE4MywgMTk0ODQyLCAxMjA3OTMsIDQ5MywgMTE4OTI1LCA0MzE5NywgCisgICAgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIAorICAgIDY0MzE1LCA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIAorICAgIDgzNTIxLCAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgCisgICAgNjM4NjQsIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgCisgICAgNjYyMTgsIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgCisgICAgNjM3NTksIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgCisgICAgNzM3NjEsIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyNjUxMywgMTIwNDcyLCA0ODgyLCAKKyAgICAxMzA0MCwgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIAorICAgIDI0OCwgMTAxMDE4LCA2Mzc5MywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAxMDEwMTcsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIAorICAgIDkxNzU5OCwgMTg3MCwgNzgwNDAsIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgNzAwMjgsIDc4MDM0LCA0NTc5LCA2OTIzMiwgCisgICAgMCwgMTI1MTEsIDc0NDUzLCAxMjUxNCwgOTgzOTQ3LCA3MDY1NiwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgCisgICAgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgMTE2MTUsIDYxMDQsIDEwMTAxMSwgMTIwOTAwLCA2NTksIDYwOTgsIDEwMDk0OCwgCisgICAgMTIyMzQsIDgzNTExLCA2NzM1OCwgODMxMSwgMTI1MTAsIDc2NjksIDEzMDM5LCA4MzUwOSwgMTI1MTMsIDEwMjAyLCAKKyAgICAxMjQ3MSwgMCwgODc0NywgMTIxMzg1LCA3MDE5MywgMTAwOTQ2LCAyMzIzLCAxMjgxNDcsIDIzMTksIDc3OTE3LCAxMjQ3NywgCisgICAgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAxMDA5NDAsIDgzMDIwLCAyMzA5LCAxMzEyLCAKKyAgICA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIAorICAgIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCAKKyAgICA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIAorICAgIDQzMzM2LCA2NzY1OSwgMjMxMywgNzQ0NDYsIDc5NDgsIDkyMzYsIDc3OTQyLCAxMjg4OTksIDAsIDEwNTcwLCA0MzQ3MywgCisgICAgNjI4OSwgMTA0ODQsIDgzMDA2LCA4MzAwNywgMTE5OTgsIDEyMDgyLCAxMDkyNCwgMzE0NywgODMwMDQsIDY2NDA2LCAKKyAgICAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgCisgICAgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzc4LCA5MzcyLCAxMjQ0NCwgNzQyNTYsIDAsIDEzMDE2LCA4MjEwLCAxMjEwNjIsIAorICAgIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCAxMjA2MzAsIDQxNTUsIDEyMTA5MCwgCisgICAgMTIwNzA0LCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMTM4MjYsIDEyNzIxNywgOTgzMjAyLCA5OTIyLCAKKyAgICA0MzMwOSwgMTEyMTEsIDEyNTI1LCAxOTUwMzUsIDEyMDE2LCA2NTc3MCwgOTU0OCwgNjc2NjUsIDQwMywgNzgyMzAsIAorICAgIDExMDIxLCAxOTQ2ODksIDEyNTI1MCwgMTEwMzAsIDQzOTE2LCA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgCisgICAgMTk0NjU3LCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgMTk0NjA1LCAxMTE0NiwgNzE0NzcsIDEyNTAwLCAKKyAgICA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCAKKyAgICA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIAorICAgIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIDc0MTY1LCA3NDc4MiwgNDM0OTksIAorICAgIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAKKyAgICAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgNjk3MTksIDMyMzEsIDE5NDU2OSwgCisgICAgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCAKKyAgICA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIAorICAgIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIAorICAgIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgCisgICAgMTI1MjMyLCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCA3MDQ1NCwgMTk0ODM4LCAxMjEwMTQsIDY1MDI2LCAKKyAgICA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIAorICAgIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDEyNzM5OCwgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEwMDQxOSwgCisgICAgNzY5MiwgMTIwNjgwLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNjgzOSwgOTgxNiwgMTI2NTE3LCAxMjUzMiwgCisgICAgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAxMjAzNTEsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAKKyAgICAxMjkxMCwgNjc3MTAsIDY2NjQ0LCAxMzAyOCwgNjczNywgMTI1MzcsIDEwMDQxNywgNDM1MDYsIDY0MTM2LCAxMjUzNiwgCisgICAgMjM1MCwgMTMwMjksIDc4MjMzLCAxMjA5MTQsIDQzODk3LCAxMzAzMCwgNjcwMiwgNDUyNywgNzEyNTAsIDEyNTM4LCAKKyAgICAxMDA0MTYsIDEyOTM1MiwgNjU1OTksIDY1NzE3LCA5OTY2LCA5MzA0NiwgNDk0OCwgMTI0ODQsIDQwMzIsIDEyMTE3NywgCisgICAgMTI2MjMsIDEyMDIwNywgNjIwNywgMTk0NzI2LCA2MTE3LCA2NTkzMCwgODQxMiwgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCAKKyAgICA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDExOTYyNSwgMTI0ODEsIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCAKKyAgICA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCA3Mjc1NywgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgCisgICAgOTgzNDY1LCA2NTAzMiwgNDE1MTMsIDEyMDIwOSwgMTE5MjcsIDY2NTg0LCA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3MTQ1OSwgCisgICAgODMwMzQsIDY3NjAzLCA4NDgsIDk4NjgsIDY3MjIwLCA2NDI0LCA3ODU2OCwgNjcyMjYsIDY5OTIyLCA3MDE5MCwgNzg1NjMsIAorICAgIDc4NTY0LCAyMzUyLCA2NzIxOSwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDY3OTczLCA5ODMxOTMsIDEzMDI2LCA2NzYyLCAKKyAgICA3ODU3OSwgNzAxOTIsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMTI3OTg0LCAxMjkzNjcsIDEzNDMsIAorICAgIDEyODQzOCwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMTIwMjEwLCA3MjQzNiwgMTEzNzEzLCAxMTc0MSwgCisgICAgMTI5MTk2LCA3NTA0MywgOTIxNiwgODI2MywgMTEyNzksIDgzMDIzLCA4MzAyNCwgODMwMjUsIDEzMDIxLCA2NDQ5NCwgCisgICAgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAxMDA3NDYsIDQzOTU0LCA3NDU1MiwgCisgICAgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgNzQzNDAsIDY5NjgxLCAwLCAKKyAgICA0MzAwMSwgODAyOSwgMCwgOTgzNjM5LCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAxMjg0MDQsIAorICAgIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIDc4NTgxLCAKKyAgICA0MTU2LCAwLCAxMjczMjksIDY0MjEsIDc4MDM5LCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIAorICAgIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgOTgzNzg5LCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCA0MzkyNSwgCisgICAgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDEyNTA0MCwgCisgICAgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDY1ODI3LCAxMzA1MCwgOTkyNCwgMTI4Mzc4LCA2NTA3LCAKICAgICAxMjc5MTksIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIDE5NDcyMSwgCiAgICAgMTk0NzI0LCAxMzA0NSwgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDEyMTAzNiwgMzk5NywgMTI4MDYsIAogICAgIDg3NjgsIDEzMDQ0LCAwLCAxMjQyMCwgNDAyNCwgMTI4MDAwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIDQxMDU3LCAKLSAgICA2ODMwNywgOTE3ODQyLCAwLCAwLCA5ODM3OTEsIDkyMjEwLCA5MjQxMSwgMTI5MzAzLCA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgCi0gICAgMTE5MTEsIDEyNDk5MCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIAotICAgIDU4MzEsIDAsIDEyMDg2NSwgMTMwNDMsIDgwNTYsIDcwMTA4LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAKLSAgICAxMjEwNDgsIDk4Mzg4NCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCA4Mjk3MiwgODI5NzMsIDM2MDMsIAotICAgIDQxMTA5LCAyMzk4LCAzNTQ4LCA4Mjk2OSwgODI5NzAsIDExOTkzMywgODI5NjQsIDMxMTUsIDk5MTgsIDEyNzgyMywgODI5NCwgCi0gICAgNDI5MTIsIDAsIDEyNzI4NywgMTk0NzI2LCA0ODc2LCA2NTgwNCwgMCwgMCwgNDM0NjgsIDEyMTIyMSwgNDE1NTgsIDQxNDcxLCAKLSAgICA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIAotICAgIDQxNTU5LCAxODk2LCA2NTIxNSwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgNzg1OTQsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIAotICAgIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIAotICAgIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDk4MzU3OCwgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDc4MTQyLCAKLSAgICA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCA2NDc3MiwgNDIwMjQsIDY0MjAsIDQyMDI4LCA5MjI5NCwgMTA1MDksIDI3OTUsIAotICAgIDQ5MTAsIDEyOTE5MywgNjkyMzEsIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIAotICAgIDY0MjMsIDQyNzc0LCAwLCAwLCA2ODUyNiwgMTI4MjMsIDIzMzEsIDEyNzc4OCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgCi0gICAgMTIwNzIxLCA5MTc4MDksIDgzNDYsIDEyODQzOCwgODMzOCwgMTI4MzE1LCA2NTA0MywgNzc5ODIsIDgyMiwgNzA0MTIsIAotICAgIDk5MDMsIDY0NzIxLCA0MjcyMiwgNjk4NzcsIDgyOTU2LCA3ODY1NSwgNjY4ODIsIDgyOTU5LCA3ODQ4NCwgNDEyNjUsIAotICAgIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNDM5NjIsIDExMjc4LCA3ODYzMiwgNzQxMTEsIDEyODA5NSwgCi0gICAgMTI5NDYsIDEyMTA3NiwgNzE5MjEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTEzNzA2LCAxMjc5NjcsIDY1MDE5LCA3NDA3OCwgCi0gICAgNzM5OTAsIDY1MTExLCA5ODM5NjAsIDc0OCwgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIAotICAgIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgNjc4NjMsIDM1OTMsIDc0MDc2LCA4Mjk0OSwgMjM0MiwgODI5NTEsIAotICAgIDgyOTQ0LCA2NTIwNiwgNDg5NCwgODI5NDcsIDQ4OTAsIDEyMTA1OSwgNjQ0MzMsIDU4MSwgNDg5MywgNDI5MjksIDY1NzEsIAotICAgIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzgwNDksIDY0NjUxLCA3ODA0NywgMCwgMTAxMTksIDY0MTUsIDQyODkzLCAwLCAKLSAgICA2OTcwMiwgOTgzOTM3LCAwLCAxMTM3NSwgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA0MjkyOCwgNDI4ODAsIAotICAgIDQzNTg3LCAxMjEwOTgsIDAsIDAsIDcwNDYxLCA2NTE5NywgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIAotICAgIDY1ODU0LCA0ODc1LCA2NTgxMSwgNzUwMjQsIDEyMDM4OSwgNzE4NTQsIDkzNDQsIDg4MjYsIDkyOTE2LCAxMjAzOTUsIAotICAgIDEzMTA0LCA2NzgyOCwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDgzMDk2LCA2NTY5NiwgNzI0MzIsIDEyMTQxMiwgCi0gICAgNjYyMTcsIDEyMTE5MCwgODMzNCwgOTI3NTUsIDgzMjA3LCAzNDQ5LCAxMjEyNjQsIDEzMTAwLCA3ODQxNCwgNzg0MTMsIAotICAgIDgzMjE2LCA2NjQwNSwgNzA0MzAsIDgzMDg5LCA4MzIwMywgMTI3MjUwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAKLSAgICAxMjcwMTQsIDgzMTk4LCA2NzgyNSwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIAotICAgIDgzNTEwLCA3ODA1NCwgNDkxNywgNzQ1MTYsIDc0MjA4LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCA4MzEwMCwgMjM2MSwgCi0gICAgNzk3MSwgNzgwNzIsIDc4MDczLCA1NTI0MywgNzgwNzEsIDk4MzU3NSwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIAotICAgIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCA3MTEzMSwgNDA5ODAsIDk4Mzk2NCwgMTMyMDIsIDEyNzgxNiwgCi0gICAgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIAotICAgIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgNzA0MDEsIDcwMDM5LCAwLCA3MDQ2MCwgNDkxMywgNzEwNjAsIDEyODU2MiwgCi0gICAgNzEzMzMsIDQyMzI2LCAxMjExMTksIDEyNzI4LCA5MjY4NSwgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIAotICAgIDEyMDgyOSwgODMwODEsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCA4MzA4NSwgNjYzMTIsIDY5OCwgODMwNzYsIDgzMDg3LCAKLSAgICAxMDM1NiwgNzAwMTcsIDEyODU3MCwgNjUxLCAxMjY0MSwgODMxMzgsIDEyNTA5OCwgMTIwNzEwLCAxMjkwNjQsIDQxNTUyLCAKLSAgICA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzQ5MDUsIDEyNzUxNiwgNzg0NjEsIDkyOTYwLCA2NjkyNywgNjQ5NDUsIAotICAgIDQ3MTYsIDQzMjc3LCAxMjA5MzIsIDc4NDc0LCAxMjM0MCwgMTIwNTY4LCAxMjA5MjgsIDE5NDcwMCwgNTUyNjQsIDQxMjExLCAKLSAgICAxMjA2NzYsIDg3MDMsIDU0NjIsIDgzMTk1LCA4MzE4NSwgMTAxMDEsIDAsIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgCi0gICAgODMxODksIDAsIDY2MjU0LCAxMjA4MjEsIDY4NDk3LCAwLCAxMjg2NTQsIDExMzc5OSwgODMxNTksIDc0MDUwLCA0MjY1MSwgCi0gICAgMTI3MzcxLCAwLCAwLCA4MzIyNSwgODMyMTgsIDEyMjc4LCA3NTAxMSwgMTI4NDA1LCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgCi0gICAgMTI4OTksIDgzMTU1LCAwLCAyNjk5LCAxMjkzMDQsIDczODQ1LCAyOTg1LCA4MzE0OSwgNjg2NDgsIDgzMTQ2LCAxMjE5MiwgCi0gICAgMTE5MzE0LCAwLCA2NjQ4OSwgOTgyNywgMTE5MzEwLCA4NjA5LCAxMTkzMDgsIDY3NDI2LCAxMTkzMDYsIDExNDgxLCAKLSAgICA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzA4MzgsIDY3NDMxLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA2NzQyOCwgNDM1OTYsIAotICAgIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgNzgzMjEsIDQwOTY3LCAKLSAgICA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIAotICAgIDY4MjE2LCAxOTQ4NzEsIDEyMTM5MCwgNTI0NCwgNDE4OSwgOTI2OTcsIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIAotICAgIDcwNDYzLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAxMjcxMDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAKLSAgICA5Mjc0OSwgOTI3NTMsIDc0NDkwLCAxMjcwOTksIDExODM4LCA3NTAwMSwgMCwgMCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgMCwgCi0gICAgNDEyMjcsIDAsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCA2OTk1MCwgOTE3OTUwLCA3MjUxLCAwLCAxMjAzODIsIDExODg1MCwgCisgICAgNjgzMDcsIDkxNzg0MiwgMTI3ODk3LCAwLCA5ODM3OTEsIDkyMjEwLCA3MjczNSwgMTI5MzAzLCA0MTQ5NiwgMTk0NTc0LCAKKyAgICA5MTY1LCAxNTcyLCAxMTkxMSwgMTI0OTkwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCA5ODM0MTYsIDk2NDYsIDM3NzMsIAorICAgIDQzMTgzLCA2NDAxLCA1ODMxLCAxOTQ3MjMsIDEyMDg2NSwgMTMwNDMsIDgwNTYsIDcwMTA4LCA2NTY4MSwgMjA4LCAKKyAgICAxMjczODIsIDQxNTE0LCAxMjExMjQsIDEyMTA0OCwgOTgzODg0LCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIAorICAgIDgyOTcyLCA4Mjk3MywgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDgyOTY5LCA4Mjk3MCwgMTE5OTMzLCA4Mjk2NCwgMzExNSwgCisgICAgOTkxOCwgNzI3MjMsIDgyOTQsIDQyOTEyLCAxOTQ3NDUsIDEyNTE4NSwgMTI2NDgzLCA0ODc2LCA2NTgwNCwgMCwgMTAwNTgzLCAKKyAgICA0MzQ2OCwgMTIxMjIxLCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgCisgICAgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY1MjE1LCAxMzA1MiwgMTE5OTMwLCA1NjY1LCAKKyAgICA3ODU5NCwgODMxMjksIDcwMjUsIDYzOTc0LCAxMDA0NjQsIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIAorICAgIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIDc4MzE5LCA2Mzk1OSwgOTgzMTg0LCA5OTQyLCAxMzIzMSwgCisgICAgOTgzMjUwLCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIAorICAgIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgNDkxMCwgMTI5MTkzLCA2OTIzMSwgCisgICAgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgNjQyMywgNDI3NzQsIDEwMDQ1NSwgMCwgCisgICAgNjg1MjYsIDEyODIzLCAyMzMxLCAxMjc3ODgsIDcwODUsIDYxMzcsIDAsIDc1MjQsIDEyMDcyMSwgMTEzNzAzLCA4MzQ2LCAKKyAgICA3ODgwMiwgODMzOCwgMTI4MzE1LCA2NTA0MywgNzc5ODIsIDgyMiwgNzA0MTIsIDk5MDMsIDY0NzIxLCA0MjcyMiwgNjk4NzcsIAorICAgIDgyOTU2LCA3ODY1NSwgNjY4ODIsIDgyOTU5LCA3ODQ4NCwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgCisgICAgNDM5NjIsIDExMjc4LCA3ODYzMiwgNzQxMTEsIDEyODA5NSwgMTI5NDYsIDEyMTA3NiwgNzE5MjEsIDEyMDM0OSwgNjI5NCwgCisgICAgMzE0NCwgMTEzNzA2LCAxMjc5NjcsIDY1MDE5LCA3NDA3OCwgNzM5OTAsIDY1MTExLCA5MTc5NTQsIDc0OCwgNDEwNjcsIAorICAgIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxMjkzMTMsIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgCisgICAgNjc4NjMsIDM1OTMsIDc0MDc2LCA3Mjc1MCwgMjM0MiwgODI5NTEsIDgyOTQ0LCA2NTIwNiwgNDg5NCwgODI5NDcsIDQ4OTAsIAorICAgIDEyMTA1OSwgNjQ0MzMsIDU4MSwgNDg5MywgNDI5MjksIDY1NzEsIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzA3MzUsIAorICAgIDY0NjUxLCA3ODA0NywgOTE3ODA2LCAxMDExOSwgNjQxNSwgNDI4OTMsIDk4MzA2OCwgNjk3MDIsIDk4MzkzNywgMCwgCisgICAgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNDI5MjgsIDQyODgwLCA0MzU4NywgMTIxMDk4LCAwLCAwLCAKKyAgICA3MDQ2MSwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCA2NTg1NCwgNDg3NSwgNjU4MTEsIAorICAgIDc1MDI0LCAxMjAzODksIDcxODU0LCA5MzQ0LCA4ODI2LCA5MjkxNiwgMTIwMzk1LCAxMzEwNCwgNjc4MjgsIDExOTk3LCAKKyAgICAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCA4MzA5NiwgNjU2OTYsIDcyNDMyLCAxMDA2MzEsIDY2MjE3LCAxMjExOTAsIDgzMzQsIAorICAgIDkyNzU1LCA4MzIwNywgMzQ0OSwgODMyMTQsIDEzMTAwLCA3ODQxNCwgNzg0MTMsIDgzMjE2LCA2NjQwNSwgNzA0MzAsIAorICAgIDgzMDg5LCA4MzIwMywgMTI3MjUwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAxMjcwMTQsIDcwNzA5LCA2NzgyNSwgCisgICAgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDgzNTEwLCA3ODA1NCwgNDkxNywgNzA2ODYsIAorICAgIDcyODE2LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCA4MzEwMCwgMjM2MSwgNzk3MSwgNzgwNzIsIDc4MDczLCA1NTI0MywgCisgICAgNzgwNzEsIDE5NDY5MywgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIAorICAgIDEyNTczLCA3MTEzMSwgNDA5ODAsIDk4Mzk2NCwgMTMyMDIsIDEyNzgxNiwgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIDY5ODU2LCAKKyAgICA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgNzA0MDEsIAorICAgIDcwMDM5LCAwLCA3MDQ2MCwgNDkxMywgNzEwNjAsIDEyODU2MiwgNzEzMzMsIDQyMzI2LCAxMjExMTksIDEyNzI4LCA5MjY4NSwgCisgICAgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDEwMDQ4MywgODMwODEsIDEyNTg4LCA4ODIxLCA2MTUzLCAKKyAgICAyODY3LCA4MzA4NSwgNjYzMTIsIDY5OCwgODMwNzYsIDgzMDg3LCAxMDM1NiwgNzAwMTcsIDEyODU3MCwgNjUxLCAxMjY0MSwgCisgICAgNzI4MDksIDEyNTA5OCwgMTAwNjM5LCAxMjkwNjQsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzQ5MDUsIAorICAgIDEyNzUxNiwgNzg0NjEsIDkyOTYwLCA2NjkyNywgNjQ5NDUsIDQ3MTYsIDQzMjc3LCA3Mjc0NSwgNzg0NzQsIDEyMzQwLCAKKyAgICAxMjA1NjgsIDcwNzIxLCA3MDcxOSwgNTUyNjQsIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDgzMTk1LCA4MzE4NSwgCisgICAgMTAxMDEsIDEyMDQ0MSwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIAorICAgIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgCisgICAgMTIyNzgsIDcwNzE2LCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgODMxNTUsIDAsIDI2OTksIAorICAgIDEyOTMwNCwgNzI3MTgsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAxMTkzMTQsIDEyOTA2MiwgNjY0ODksIAorICAgIDk4MjcsIDExOTMxMCwgODYwOSwgMTE5MzA4LCA2NzQyNiwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMTI1MjA3LCAKKyAgICAzNSwgNzA4MzgsIDY3NDMxLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA2NzQyOCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAKKyAgICAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgNzgzMjEsIDQwOTY3LCA0MDk2NCwgMTI0OTgzLCAxMjcwNCwgCisgICAgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAxOTQ4NzEsIDcyNzM3LCA1MjQ0LCAKKyAgICA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDk4MzY4NSwgCisgICAgODg3MywgMjI3OSwgMTI3MTAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMTIxMTAzLCA5Mjc0OSwgOTI3NTMsIDc0NDkwLCAKKyAgICAxMjcwOTksIDExODM4LCA2Njc4NywgMCwgMTIwNjY0LCA0MjY4MiwgMTI1NzgsIDEyNzIwLCA5ODM2OTgsIDQxMjI3LCAKKyAgICA3Mjc2NSwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDExMzc5MiwgMTIwMzgyLCAxMTg4NTAsIAogICAgIDExOTE0MSwgMTI4NDYxLCA2NjAxNSwgNjczMzIsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgOTYzMiwgCi0gICAgOTIyMzEsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAxMjg4NDIsIDAsIDExMTMyLCAzMTAsIDEyMDkyNCwgNDEyODEsIDEwOTc2LCAKLSAgICAwLCA3MTMyNSwgMTI4MzY0LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDkxNzgyMywgOTAxMiwgMTk5NTgsIDc0NDIwLCAKLSAgICA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNjQyNjAsIDM3NCwgNDMxOTUsIDgxNiwgOTI3ODMsIDAsIDgzMTkxLCAKLSAgICA0MTkzNCwgNzQ2NSwgNzQ2MTUsIDkyNzUyLCAxMjc4OTUsIDQ3MTUsIDYxMDEsIDcxMDg5LCA0MTkzNiwgODI5NjcsIDQ4NzksIAotICAgIDQzOTY1LCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIDk1ODUsIDUzNzQsIDEyNzk2MiwgMTI4MDU5LCAwLCAxMjkxODksIAotICAgIDEyNjYxOCwgMTIwMzkwLCA3NDk1MywgNjU1NjcsIDEyMDYxNCwgMTkyOSwgMTIwOTg0LCAxMjE0MiwgMTk0Njk2LCAxMjIzNiwgCi0gICAgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgNzUwMDMsIDUzNzgsIDc1MDA0LCAxMjA5NTcsIDQxNDIxLCA3NTAwNSwgCi0gICAgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgNTgwMCwgMTIwMTU3LCA2Nzc1OCwgMTc2MCwgMjQyMSwgCi0gICAgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgCi0gICAgNjg4NDksIDc5OTksIDQzOTcxLCAxMTIxNywgMTIxMjI0LCAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCAKLSAgICA0MzgwLCAxMjgyODQsIDgzMDYxLCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjQ0NjgsIDc4NDYyLCAxODEwLCAzNjczLCAKLSAgICA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCA2NTA2OSwgNzU2NiwgNjQ2ODgsIDY3MTQzLCAxOTQ1OTIsIDc0OTU3LCAKLSAgICA0MzkxMiwgMTI4Mzg1LCA0NzQ4LCA5MjIyOCwgMTI5MTg1LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDEyMTI3OCwgCi0gICAgNzQ1NzYsIDQ0MDE5LCAxOTQ3MjAsIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDkxNzc4NSwgODQxMCwgNDQ1NCwgNzIzLCA4MzA4NCwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDc1MDIyLCA3ODE5LCAKLSAgICAyMzIwLCAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCA4MzA1NywgODA0NywgMCwgCi0gICAgNzg4MjcsIDEyNjM0LCA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMTI0OTM0LCA3NDQ1MiwgCi0gICAgOTgzNzYzLCAxNTg0LCA2NjY0NSwgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDE5NDk4MywgNzgwNjIsIAotICAgIDc1MzcsIDEyNDk5MSwgMTEzNzAsIDEyNTA5MywgMTAzMzAsIDc4Nzk4LCAxMDM5NCwgOTIyMzYsIDc0MTk0LCAwLCAKLSAgICAxMjc5MjksIDk3ODAsIDAsIDExMTE3LCA3NDk5MywgNzc5NTAsIDY3MDkxLCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIAotICAgIDExNDE0LCA2ODc4MSwgMjUzMSwgMTMwMzQsIDEyOTE1OSwgMCwgNDIxMSwgMTI1OSwgNzUxNywgNzA4NjYsIDcwMTk4LCAKLSAgICA4MzEyMiwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDgzMTI1LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgCi0gICAgMTIxMjUzLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCA3NDI5MywgNzQ1MzAsIDY0MDk4LCA2NTc5MywgCi0gICAgNDUzNSwgMTIxMjY3LCA0MjcxLCA3ODQxNywgMTI3MDU5LCA2NzY5LCA0MTQxMCwgMTI3MjU3LCA2NDI2MiwgNjc2NywgCi0gICAgNDE0MDcsIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTIwODg2LCAxMjY2MDgsIDcwODMwLCAwLCAKLSAgICA4MzIzMiwgMCwgNjc2NzUsIDk4MzY5NCwgODMyMzQsIDEyMTI1NCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAyNDcsIDgzMjI5LCAKLSAgICAwLCAxMjMzOCwgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDcwMTA3LCAwLCA0MTkwMywgNDM0NDcsIAotICAgIDExMDAxLCA3MzgyNywgNDIyNTUsIDgzMjQzLCA4MzIzOCwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMCwgMTA3NzUsIDk3OTMsIAotICAgIDUwMDksIDEyODc3NCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCA0Mjg1MywgCi0gICAgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIAotICAgIDc4NzY5LCA3ODA2MCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDgzMjUxLCA2OTg0NCwgNDMyMDAsIDU4MzIsIAotICAgIDcxMjA4LCA4MzI1MCwgNTE0MSwgNDI2MDAsIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMjAxMjksIDQzMjg2LCAwLCAKLSAgICAxMjgyMTEsIDQzNzc4LCA3NjU3LCA0MTMwNSwgNzExMzIsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDEyODYwOSwgNzAzMSwgCi0gICAgODU5LCAxMjg0ODgsIDgzMjYyLCA4MzIzNywgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMTk0ODE3LCA4NTM1LCAxMjg2MzgsIAotICAgIDY1MTk2LCAxMjUwODQsIDY2MDMyLCAxMTQ4OCwgMTIwNDgxLCAxMjA3ODYsIDQyMjMzLCA2NDE0MCwgOTk0NiwgNzY2NywgCi0gICAgMTk0NzkyLCAxMTgyMiwgMTI4NTkxLCAxMTEzNSwgOTgzNjAwLCAwLCAxNzg4LCAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAKLSAgICA5ODM0NjEsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDcxMDYxLCA5MjU0NSwgMTI4NSwgNjQ4ODIsIDQxMjQyLCA3MDA4NiwgCi0gICAgODMxMTEsIDEyNjQwLCA4MzExMiwgNzQwMSwgMCwgMTI2MjUsIDY4MTk4LCAwLCA3MDA4MiwgMzk0MCwgNDE1OTcsIDQzNzU0LCAKLSAgICAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCA5ODM2MDksIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAKLSAgICA3MDgyNSwgMTE4OTg5LCAxMjk0MDksIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTExODAsIAotICAgIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAxMjA0NzgsIAotICAgIDkyNjQzLCAxMjExMTgsIDE5NDY3MywgMTIwMzIsIDAsIDk3MjUsIDk4MzQ5MSwgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgCi0gICAgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIDQyNzc3LCAxMDEzOSwgOTgwLCA0MzY5OCwgNjUzODYsIDIyMDgsIDY4ODQ4LCAKLSAgICA0MzcwMSwgNDMxOTgsIDcxODQsIDkyNTQyLCAxMjg0MjMsIDEyODg3NSwgMTAwODUsIDc0OTc5LCAwLCA2NzM5NCwgNjYzNCwgCi0gICAgOTIzNzMsIDEyNTA4NSwgODM0MTMsIDgwNzIsIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIAotICAgIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAxMjY5NzcsIDc0ODkxLCA5OTE0LCAyMjE3LCA5MjMyMywgNzM5NzUsIDYzNjcsIAotICAgIDYzNTEsIDY2Njg4LCA5Mjc0MCwgNjg3NjYsIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDEyNjU0MSwgCi0gICAgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCAKLSAgICA2NzIzNCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgCi0gICAgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgNzgwMTMsIDc4NDQ1LCAKLSAgICAxMjUxMjQsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIAotICAgIDcwODI0LCA5ODg2LCA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgNzEwODIsIDEyNjMyLCAxMDg2LCAxODY5LCAKLSAgICA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCAKLSAgICA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDEyMDE0MSwgOTI3NTgsIDE0OTQsIDExMzcxNiwgMTI2NjEzLCAwLCAxMTY5MywgCi0gICAgNzEyNTUsIDEwNDk0LCA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMTEzNzI3LCAwLCAwLCA3ODc3MSwgNjQ1ODIsIDAsIAotICAgIDczNzk0LCA2NzM5NSwgODAyMiwgMTIwOTg5LCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgNjY4ODMsIDkxNzk5NCwgOTMwMzUsIAotICAgIDc1MDA3LCA1NTcwLCAxODgxLCA3MjEwLCAxMjA0MjUsIDEwMTIsIDQzNzUyLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCAKKyAgICA5MjIzMSwgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDc0MTAyLCAyMjY2LCAxMTEzMiwgMzEwLCAxMjA5MjQsIDQxMjgxLCAKKyAgICAxMDk3NiwgMTAxMDY5LCA3MTMyNSwgMTI1Mjc5LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDEwMTA4NywgOTAxMiwgCisgICAgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNjQyNjAsIDM3NCwgNDMxOTUsIDgxNiwgOTI3ODMsIAorICAgIDAsIDgzMTkxLCA0MTkzNCwgNzQ2NSwgNzQ2MTUsIDkyNzUyLCA3MDY2NiwgNDcxNSwgNjEwMSwgNzEwODksIDQxOTM2LCAKKyAgICA4Mjk2NywgNDg3OSwgNDM5NjUsIDY1NDQ2LCAwLCAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMTI3OTYyLCAxMjgwNTksIAorICAgIDEwMDQ3MiwgMTI5MTg5LCAxMDA0NzEsIDEyMDM5MCwgNzA3MjcsIDY1NTY3LCAxMDA5NjQsIDE5MjksIDEyMDk4NCwgCisgICAgMTIxNDIsIDE5NDY5NiwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDc1MDAzLCA1Mzc4LCA3NTAwNCwgCisgICAgMTIwOTU3LCA0MTQyMSwgNzUwMDUsIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDEyNTAzMCwgMjQ5OCwgNTgwMCwgCisgICAgMTAwODM0LCA2Nzc1OCwgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAKKyAgICAxMjgyNzQsIDc4NzcwLCA0MzU5NywgMTA2MjgsIDc0ODA4LCA2ODg0OSwgNzk5OSwgNDM5NzEsIDExMjE3LCAxMDA4NDksIAorICAgIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIDQzODAsIDEyODI4NCwgODMwNjEsIDk5ODIsIDY0MzI0LCAKKyAgICA0MTI0MCwgODYyLCA2NDQ2OCwgNzg0NjIsIDE4MTAsIDM2NzMsIDUxMzcsIDE5NDYxNywgMTIwNDgxLCA3Mjc3LCA2NTYyMiwgCisgICAgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3NDk1NywgNDM5MTIsIDEwMDgyNSwgNDc0OCwgOTIyMjgsIAorICAgIDEwMDgyNiwgMTAwODI5LCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAxMjEyNzgsIDc0NTc2LCA0NDAxOSwgMTk0NzIwLCAKKyAgICAxMjgxODksIDM5NjcsIDcxMDk4LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCA5MTc3ODUsIDg0MTAsIDQ0NTQsIAorICAgIDcyMywgODMwODQsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCA3NTAyMiwgNzgxOSwgMjMyMCwgMTI5MzEyLCAzMzksIAorICAgIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgODMwNTcsIDgwNDcsIDE5NTA1MCwgNzg4MjcsIDEyNjM0LCAKKyAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMTI0OTM0LCA3NDQ1MiwgMTIwNDgyLCAxNTg0LCAKKyAgICA2NjY0NSwgNjA0NSwgNjcyOSwgNzg0MTcsIDY1MjE4LCAxMTU1OSwgMTk0OTgzLCA3ODA2MiwgNzUzNywgMTI0OTkxLCAKKyAgICAxMTM3MCwgMTI1MDkzLCAxMDMzMCwgNzg3OTgsIDEwMzk0LCA5MjIzNiwgNzQxOTQsIDEwMDgwOCwgMTI3OTI5LCA5NzgwLCAKKyAgICAwLCAxMTExNywgNzQ5OTMsIDc3OTUwLCA2NzA5MSwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTAwNDk1LCAxMTQxNCwgNjg3ODEsIAorICAgIDI1MzEsIDEzMDM0LCAxMDA4MTksIDEyODUyMywgNDIxMSwgMTI1OSwgNzUxNywgNzA4NjYsIDcwMTk4LCA4MzEyMiwgCisgICAgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDgzMTI1LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgMTAwNDk2LCAKKyAgICA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCA3NDI5MywgNzQ1MzAsIDY0MDk4LCA2NTc5MywgNDUzNSwgCisgICAgMTAwNDkxLCA0MjcxLCA3Mjg4MSwgMTAwNzk4LCA2NzY5LCA0MTQxMCwgMTAwNzk5LCA2NDI2MiwgNjc2NywgNDE0MDcsIAorICAgIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTAxMDg2LCA3MjgwMywgNzA4MzAsIDAsIDgzMjMyLCAwLCAKKyAgICA2NzY3NSwgOTgzNjk0LCA4MzIzNCwgMTAwNTM0LCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgODMyMjksIDEwMDc5MSwgCisgICAgMTIzMzgsIDQ2NTEsIDY3MzU1LCAxMTI3MCwgMCwgNzQ2MzAsIDExOTMzLCA3MDEwNywgMCwgNDE5MDMsIDQzNDQ3LCAKKyAgICAxMTAwMSwgNzM4MjcsIDQyMjU1LCA4MzI0MywgODMyMzgsIDY5ODIxLCA0MTkwNSwgNjczNTAsIDEwMDgwNiwgMTA3NzUsIAorICAgIDk3OTMsIDUwMDksIDEyODc3NCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCAKKyAgICA0Mjg1MywgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgCisgICAgNDM3ODIsIDc4NzY5LCA3ODA2MCwgNjQ1MDYsIDY5NjUyLCAxMDA3ODEsIDQ3NDcsIDgzMjUxLCA2OTg0NCwgNDMyMDAsIAorICAgIDU4MzIsIDcxMjA4LCA4MzI1MCwgNTE0MSwgNDI2MDAsIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMDA1NDEsIDQzMjg2LCAKKyAgICAxMjY0OTQsIDEyMDc4OSwgNDM3NzgsIDc2NTcsIDQxMzA1LCA3MTEzMiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMTI4NjA5LCAKKyAgICA3MDMxLCA4NTksIDkyMzEzLCA4MzI2MiwgODMyMzcsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgCisgICAgMTI4NjM4LCA2NTE5NiwgMTIyOTEwLCA2NjAzMiwgMTE0ODgsIDcyODM4LCAxMDA3ODgsIDQyMjMzLCA2NDE0MCwgOTk0NiwgCisgICAgNzY2NywgMTAwNTQ5LCAxMTgyMiwgMTI4MzQ5LCAxMTEzNSwgOTgzNjAwLCAwLCAxNzg4LCAxNTc5LCAxMDA1MDcsIDcxMjk4LCAKKyAgICAwLCA5MTc1MzcsIDk4MzgzOSwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgNzEwNjEsIDkyNTQ1LCAxMjg1LCA2NDg4MiwgNDEyNDIsIAorICAgIDcwMDg2LCA4MzExMSwgMTI2NDAsIDgzMTEyLCA3NDAxLCAxMDA3NjcsIDEyNjI1LCA2ODE5OCwgODMxODQsIDcwMDgyLCAKKyAgICAzOTQwLCA0MTU5NywgNzI5NiwgMzM5NiwgMTI2NDIsIDg2NjUsIDk4MzYxMCwgMTIwMjA4LCAxMjYzMCwgMTY1MywgCisgICAgMTAwNTY3LCAxMDE1MywgMTAwNzc3LCA2MTY2LCA3MDgyNSwgMTE4OTg5LCAxMjk0MDksIDg4MTUsIDY2NjczLCA2NTA0NiwgCisgICAgOTI4NSwgOTEzLCA0MjI1OSwgMTExODAsIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgCisgICAgNDIyOTMsIDY0Mzc3LCAxMjA0NzgsIDkyNjQzLCAxMjExMTgsIDE5NDY3MywgMTIwMzIsIDEwMDc3MSwgOTcyNSwgMTAwNzczLCAKKyAgICA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgNDI3NzcsIDEwMTM5LCA5ODAsIAorICAgIDQzNjk4LCA2NTM4NiwgMjIwOCwgNjg4NDgsIDQzNzAxLCA0MzE5OCwgNzE4NCwgOTI1NDIsIDEyODQyMywgMTAwNTI3LCAKKyAgICAxMDA4NSwgNzQ5NzksIDAsIDY3Mzk0LCA2NjM0LCA5MjM3MywgMTI1MDg1LCA4MzQxMywgODA3MiwgMTAwNzUyLCA0MzcwMCwgCisgICAgMTI4MjAyLCA3MzA0LCA3NzgzLCA5MTc5OTEsIDEyMzk4LCA4MjM3LCAxOTQ4OTMsIDAsIDEyMzk1LCAxMjAyNzksIAorICAgIDEyNjk3NywgNzQ4OTEsIDk5MTQsIDIyMTcsIDkyMzIzLCA3Mzk3NSwgNjM2NywgNjM1MSwgNjY2ODgsIDkyNzQwLCA2ODc2NiwgCisgICAgOTgzODQ4LCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAxMjY1NDEsIDQxOTM3LCA0MzU4LCA0MzI3MiwgCisgICAgNjM1MywgMCwgMCwgMTIwNDIyLCA5MzA0NSwgMTcxMCwgMTIwMTQwLCAwLCA2NTYwNywgNjcyMzQsIDQ5LCA2NjI3LCAKKyAgICA5ODMxMjAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIDE2NDMsIAorICAgIDY1MjEzLCA4NDA1LCAzNDcwLCA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgNzgwMTMsIDc4NDQ1LCAxMjUxMjQsIAorICAgIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIDcwODI0LCA5ODg2LCAKKyAgICA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgNzEwODIsIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgCisgICAgMTAxMDkzLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgMTI2MzgsIDc5NzcsIDQ1MDEsIDQxMDk5LCAKKyAgICAwLCA2NjMwOSwgMTIwMTQxLCA5Mjc1OCwgMTQ5NCwgMTEzNzE2LCAxMjY2MTMsIDAsIDExNjkzLCA3MTI1NSwgMTA0OTQsIAorICAgIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAxMTM3MjcsIDEyODc4OSwgMCwgNzg3NzEsIDY0NTgyLCAxMDEwOTgsIAorICAgIDczNzk0LCA2NzM5NSwgODAyMiwgMTAxMDk5LCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgNjY4ODMsIDkxNzk5NCwgOTMwMzUsIAorICAgIDc1MDA3LCA1NTcwLCAxODgxLCA3MjEwLCAxMjA0MjUsIDEwMTIsIDQzNzUyLCAwLCAxMDEwOTQsIDcyMDgsIDY2NDQyLCAKICAgICA1NTY5LCAxOTUwMDcsIDQyMzM5LCA5Mjk5NywgNjA2MywgNjc4ODgsIDY5OTgxLCAxMTk1OTQsIDYwNTMsIDY1NjAyLCAwLCAKLSAgICA5MjIwMSwgNjQ3MjcsIDkxNjAsIDcwMzAxLCAwLCA5MjkwNSwgOTIxODAsIDEwNTAzLCA3MDM4NywgMzQyMywgMzg3MCwgCi0gICAgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgCi0gICAgNzQ5NjEsIDc4MzMzLCAxMjAxMTcsIDEyMDExOCwgMTIwMDk5LCA5MjM4NSwgNjUwODcsIDU1NzEsIDM2NzQsIDk3NDAsIAotICAgIDkxMjEsIDU1NjgsIDcxNDY0LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAxMTM3MDAsIDU4OSwgNzA1MCwgCi0gICAgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgCi0gICAgOTIzMzEsIDEyMTM1OCwgODU4MywgMTIxMTIzLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIDY2NTkyLCAKLSAgICAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDEyOTE3MCwgNjY4NTQsIDgxMjAsIDcwMzExLCAKLSAgICAxOTQ1ODUsIDAsIDcwMzA4LCA0MTA2MywgMTIwNDE3LCAxMDY2NCwgMCwgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAKLSAgICA3NDk3MSwgMTIxMDk0LCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIAotICAgIDEyMDM0LCA2ODQ5NiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCA3NDkzNywgNzQwOTQsIDkxNzg4OCwgMTI1MDYwLCA3Nzk3MCwgCi0gICAgOTIxNzEsIDEyNzIxOSwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCAKLSAgICA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgCi0gICAgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgMTI2NjM2LCA1ODUzLCAxMzA2MywgMTAzNjMsIDk4Mzg5OCwgMTI5NTYsIAotICAgIDExMzY2NiwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMTI4NjQ4LCA3ODM5MiwgMTI4MjYsIDYzMjksIDAsIAotICAgIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgCi0gICAgNzgzOTYsIDY4MjQ3LCAyNjk1LCA0MjE3MSwgNzA4MDksIDY4MzM0LCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAKLSAgICAxMjEyNSwgMTI3NjYsIDEyMDQwOSwgMTE2NCwgMTEzNzI5LCA3MDI4MywgNDE5MTgsIDc3ODQ5LCA2NzE1MCwgODY4NywgCi0gICAgNjYwMDksIDEyMTc4LCA3MDUzLCA5MjU0MCwgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDY5OTg4LCA2NDI3LCA0Mjg4NCwgCi0gICAgNDExMjMsIDExMTc2LCAwLCA0Mjg3MywgNDExMjYsIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCA5ODM5MzIsIDk4NzMsIAotICAgIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDEyODg0MSwgMTU4OSwgMTI4NjkxLCAKLSAgICAyOTYsIDY3NzEyLCA3ODg1MiwgMTIxNDA5LCA2Nzg0MSwgNzQzNzAsIDEyODUwNCwgODkyMiwgMTI4MDY4LCA0MzgyOSwgCi0gICAgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgCi0gICAgNzg4MzcsIDExNDczLCA1NDQ5LCAxMjUyLCAxMjczMjgsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCAKLSAgICA5MTc1NjksIDY4MzIwLCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIAotICAgIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDc0NTk4LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIAotICAgIDYxNTAsIDY2MzYsIDQzNzAsIDEyODYxOSwgMTI5MTU4LCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAxOTUwOTQsIDAsIDExMzc0OCwgCi0gICAgNDk4NiwgMTIxODksIDEyNzUxMiwgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3MTE3NiwgNjIyMCwgCi0gICAgOTAwNCwgNjU1NjEsIDk4Mzg4MSwgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCA4MzQ1MywgNjk2NzksIDY5Njg0LCAKLSAgICA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgNzE4OTcsIDgzNDUxLCAwLCAKLSAgICA5NjM1LCAxMjYwMCwgODg3MSwgNjczNjYsIDY4NDkxLCAwLCA2NDY5LCA3NDIyNywgMTE4OTAwLCA2NTMwNCwgNDY3OSwgCi0gICAgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgNjczNzYsIDY3Mzc1LCA2NzM3NCwgNjczNzMsIDQyOTE2LCAKLSAgICAxMjkxNTUsIDEyODI3OSwgNjczNzcsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgNjczNzIsIDY3MzcxLCAzNDk0LCAKLSAgICA2NzM2OSwgNjU1NSwgMTI5MTQ4LCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzI0NiwgNjUzMTIsIAotICAgIDU0NDcsIDAsIDEyODk1LCA2NTU5MywgNDAxMCwgODMxNTQsIDQxMTA2LCA3NDM1NywgNjQ0NDgsIDkzOTk0LCA0MTEwNSwgCi0gICAgNzQxMTQsIDY1ODIwLCA2MjMyLCA2ODIzMywgMTI2NjI1LCAwLCA0MzYwOCwgMTE5MDkxLCA3ODExOCwgNjUzOCwgNDMzNSwgCisgICAgOTIyMDEsIDY0NzI3LCA5MTYwLCA3MDMwMSwgMTk1MDcxLCA5MjkwNSwgOTIxODAsIDEwNTAzLCA3MDM4NywgMzQyMywgCisgICAgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIAorICAgIDk4MzExNiwgMTIxMDg0LCA3NDk2MSwgNzgzMzMsIDExOTEzMiwgMTIwMTE4LCAxMjAwOTksIDkyMzg1LCA2NTA4NywgNTU3MSwgCisgICAgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgNzE0NjQsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIAorICAgIDExMzcwMCwgNTg5LCA3MDUwLCA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIAorICAgIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCA5MjMzMSwgMTIxMzU4LCA4NTgzLCAxMjExMjMsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgCisgICAgMCwgMCwgMCwgNjY1OTIsIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgMTI5MTcwLCAKKyAgICA2Njg1NCwgODEyMCwgNzAzMTEsIDEyOTE1NCwgMCwgNzAzMDgsIDQxMDYzLCAxMjA0MTcsIDEwNjY0LCAwLCA4MzY5LCAKKyAgICAxMjgyNzgsIDQ1NTEsIDEyMjkxMiwgMzM2OSwgNzQ5NzEsIDEyMTA5NCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgCisgICAgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgNzQ5MzcsIAorICAgIDc0MDk0LCAxMjQ5NDgsIDEwMDQ3OCwgNzc5NzAsIDkyMTcxLCAxMjcyMTksIDEyNTI1NCwgMTIxMTEsIDM5MjcsIDExOTg4MCwgCisgICAgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCA5MjI4MSwgMTA0NDEsIDY2Nzk4LCA5ODM4MzEsIDQzOTkwLCA1NDkzLCAKKyAgICA5ODM2MTgsIDcxMTMwLCA5MTc3NjYsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgCisgICAgMTI2NjM2LCA1ODUzLCAxMzA2MywgMTAzNjMsIDk4Mzg5OCwgMTI5NTYsIDExMzY2NiwgMTIwNzI5LCAxMTMxNCwgMTI1MjcxLCAKKyAgICAxMjA2MCwgMTI4NjQ4LCA3ODM5MiwgMTI4MjYsIDYzMjksIDE5NTA5NywgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgCisgICAgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgNjgyNDcsIDI2OTUsIDQyMTcxLCAKKyAgICA3MDgwOSwgNjgzMzQsIDk4MzQ0NCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAxMjA0MDksIDExNjQsIAorICAgIDExMzcyOSwgNzAyODMsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgOTI1NDAsIAorICAgIDc0NjksIDcyNzk1LCA1MjQ4LCAxMjIxOCwgNjk5ODgsIDY0MjcsIDQyODg0LCA0MTEyMywgMTExNzYsIDAsIDQyODczLCAKKyAgICA0MTEyNiwgOTk5MSwgNDExMjgsIDcwNzAzLCAxMjcwMzEsIDEyNjUwOCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAKKyAgICAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMTI4ODQxLCAxNTg5LCAxMjg2OTEsIDI5NiwgNjc3MTIsIDc4ODUyLCAxMjE0MDksIAorICAgIDY3ODQxLCA3MTMxNCwgMTI4NTA0LCA4OTIyLCAxMjgwNjgsIDQzODI5LCAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAKKyAgICAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCA3MDczMiwgMTE0NzMsIDU0NDksIDEyNTIsIAorICAgIDEyNzMyOCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIDkxNzU2OSwgNjgzMjAsIDEyMjMsIDE2NDIsIDE3NCwgCisgICAgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgCisgICAgNzQ1OTgsIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMTI4NjE5LCAxMjkxNTgsIAorICAgIDc0MTc4LCA3NDU4NywgNzQxMTcsIDE5NTA5NCwgMCwgMTEzNzQ4LCA0OTg2LCAxMjE4OSwgMTE5NTk5LCA2NzY0OCwgCisgICAgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDcxMTc2LCA2MjIwLCA5MDA0LCA2NTU2MSwgOTgzODgxLCA3Nzk0OSwgMCwgCisgICAgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDgzNDUzLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIAorICAgIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDcwMDUxLCA3MTg5NywgODM0NTEsIDEyNzE4NywgOTYzNSwgMTI2MDAsIDg4NzEsIAorICAgIDY3MzY2LCA2ODQ5MSwgMCwgNjQ2OSwgNzQyMjcsIDExODkwMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIAorICAgIDM0MjcsIDQyNDAsIDY3Mzc2LCA2NzM3NSwgNjczNzQsIDY3MzczLCA0MjkxNiwgMTI5MTU1LCAxMjc0ODksIDY3Mzc3LCAKKyAgICA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDY3MzcyLCA2NzM3MSwgMzQ5NCwgNjczNjksIDM0MTYsIDEyOTE0OCwgNzc5NzYsIAorICAgIDE5NTAxMCwgOTgzMTkyLCA3ODU2NiwgMCwgMTI3MDQ3LCA2NTg5OCwgOTgzMjQ2LCA2NTMxMiwgNTQ0NywgMTAwODk1LCAKKyAgICAxMjg5NSwgNjQzODIsIDQwMTAsIDgzMTU0LCA0MTEwNiwgNzQzNTcsIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIDcwNjc3LCAKKyAgICA2NTgyMCwgNjIzMiwgNjgyMzMsIDEwMTEwNCwgMTAxMTAzLCA0MzYwOCwgMTAxMTA1LCA3ODExOCwgNjUzOCwgNDMzNSwgCiAgICAgNzgzNjQsIDM5NDEsIDQxMTIyLCAxMTA2MSwgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAxMjE1NSwgOTgzNjc0LCAKLSAgICA0Mjg3OCwgMTE1MDAsIDY3NDA1LCAxMjgxNTIsIDc0NTc4LCAwLCA2NTgzMiwgMTI4NjY3LCAwLCA3MDc4OSwgNjczMzMsIAotICAgIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCA2NzMzNiwgOTgzODc5LCA5MjMwNywgMCwgMCwgNTEzMywgCi0gICAgNjczODIsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDY3MzgxLCA2NzM4MCwgMjQ5NiwgCi0gICAgMTE1MTYsIDk0NCwgNjc4MTcsIDM4OTAsIDEyMTY4LCAxNDM4LCA2NzgxMywgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgCi0gICAgMTIwODI4LCA3NDk0NiwgNzA4NTQsIDc0MDU4LCAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgCi0gICAgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAxMjgyOTUsIDcwNzk3LCA4ODc3LCAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIAotICAgIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCA2MDYwLCA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCAKLSAgICA4Mjk0OCwgMCwgMTkwNiwgMTIxMTY5LCAxMTUzMiwgNzQwNzMsIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgNzUwNzEsIAotICAgIDY0Mjg3LCAxMjg0MDYsIDc4MTE1LCAxMTQyOCwgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDY4MDg4LCAKLSAgICA3NzAzLCA4ODQwLCA4MDM1LCAxMjA3MTEsIDAsIDkyMjMwLCA5ODMzNTcsIDYxMjksIDEyODQzNywgNzg1ODYsIDEyODI2OCwgCi0gICAgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAxMTIwNiwgMTMxMzYsIDAsIDAsIDcwMTAyLCA2Mzg4NiwgNzA0NTAsIDk2MDUsIAotICAgIDcxMzA4LCAxMzIyMCwgNjczNDgsIDY3MzU0LCA1NTE0LCA3NDk2MCwgOTIyOCwgNjczNDksIDY3MzU2LCA2NzM0NiwgNTI0MCwgCi0gICAgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDc0NTI2LCA2NjY3NiwgNjU4NzMsIDAsIDEyODE3OSwgMCwgOTUwMSwgMTIwODMyLCAKLSAgICAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIDY4NzU5LCAKLSAgICA3MDMxMiwgMTk1MDg1LCA2ODgyMCwgMTIxOTMsIDcwNDAwLCAxMjcyNDAsIDEyMTM3MywgMCwgOTgzMzU1LCAxOTkzNSwgCi0gICAgMTIwNzMzLCA5MjE2MiwgNjg4MDEsIDEyNzk1NSwgODMxMzMsIDkzMDU3LCA1Mjc1LCAxMjAxOTUsIDEyODYzMiwgODYzNywgCi0gICAgNDM2ODIsIDAsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCA2ODc4NCwgCi0gICAgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MTEsIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIAotICAgIDU1MjI0LCA0OTgxLCA3NDY0NCwgMCwgNDE2NDYsIDExNjY3LCA0MjY4NiwgNzQ5OTEsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgCi0gICAgNDE2NDksIDc1ODksIDEyODc3NiwgMCwgMzIzNywgMCwgNjY4OTUsIDY4Mjk2LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAKLSAgICAwLCA5ODM4MTQsIDk0MDU2LCAxMTE3NCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIAotICAgIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMTI4Njc5LCA0MTY5OSwgCi0gICAgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMTE5MjQ1LCAxMjg0OTQsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDk4MzA4MiwgCi0gICAgNDAxMiwgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCA3ODI2MCwgMTIwOTczLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgCi0gICAgNzYxMSwgMTIxMDczLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgCi0gICAgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgMTI3MzUzLCAKLSAgICAxMjAxNjYsIDEyODY4OCwgMzk4NSwgNjY0MjUsIDY1ODYwLCA0MTg1MSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDcxODczLCAKLSAgICAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIAotICAgIDExOTI2MywgMTIwODU1LCAxMjc5NDgsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMTk0ODU1LCAwLCA0MjY1NywgNzEwNzUsIAotICAgIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIAotICAgIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDEyNjQ3NSwgMzg5MSwgMTI3MjA1LCAwLCAyMzM3LCAKKyAgICA0Mjg3OCwgMTE1MDAsIDY3NDA1LCAxMjgxNTIsIDc0NTc4LCAwLCA2NTgzMiwgMTI2OTc4LCAwLCA3MDc4OSwgNjczMzMsIAorICAgIDExOTIzMCwgNDU4NiwgMTk0OTIyLCAzNTAsIDEwOTUxLCAxMDEwODEsIDUwOSwgNjczMzYsIDEwMDkwNCwgOTIzMDcsIAorICAgIDEwMDkwMywgMCwgNTEzMywgNjczODIsIDEyODgyNywgOTUwMCwgMTAwOTA2LCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgCisgICAgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIDExNTE2LCA5NDQsIDY3ODE3LCAzODkwLCAxMjE2OCwgMTQzOCwgNjc4MTMsIAorICAgIDY4MzM1LCA3MDAwMywgNDE5NDcsIDEyMjAsIDEyMDgyOCwgNzQ5NDYsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIAorICAgIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMTI4Mjk1LCA3MDc5NywgODg3NywgCisgICAgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgNjA2MCwgCisgICAgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgODI5NDgsIDAsIDE5MDYsIDEyMTE2OSwgMTE1MzIsIDc0MDczLCAKKyAgICAxMDEwNjgsIDEwMTA2NywgMTk4NSwgNjI5NiwgOTU4MiwgNzUwNzEsIDY0Mjg3LCAxMjg0MDYsIDcwNzE3LCAxMTQyOCwgCisgICAgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDEwMTA3NiwgNjgwODgsIDc3MDMsIDg4NDAsIDgwMzUsIAorICAgIDEyMDcxMSwgMTk0NjAyLCA5MjIzMCwgOTgzMzU3LCA2MTI5LCAxMjcwNjUsIDc4NTg2LCAxMjgyNjgsIDE5NDk2NSwgNzg3NCwgCisgICAgODY4MSwgNzI4MDAsIDExMjA2LCAxMzEzNiwgMCwgMTI5MzA1LCA3MDEwMiwgNjM4ODYsIDcwNDUwLCA5NjA1LCA3MTMwOCwgCisgICAgMTMyMjAsIDY3MzQ4LCA2NzM1NCwgNTUxNCwgNzQ5NjAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIDk4MTEsIAorICAgIDEwMDEyLCAzMDk2LCA5MTc4MDksIDAsIDc0NTI2LCA2NjY3NiwgNjU4NzMsIDE5NDYwOCwgMTI4MTc5LCAxMDA5MTgsIAorICAgIDk1MDEsIDEyMDI3NSwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMTAwOTIwLCAxNDY3LCAxMDE1OCwgCisgICAgMTAwNDAsIDc0MDk2LCA5NTE5LCA2ODc1OSwgNzAzMTIsIDEwMTA1MiwgNjg4MjAsIDEyMTkzLCA3MDQwMCwgMTI3MjQwLCAKKyAgICAxMjEzNzMsIDcyODE3LCA5ODMzNTUsIDE5OTM1LCAxMjA3MzMsIDkyMTYyLCA2ODgwMSwgMTAwNjgyLCA4MzEzMywgOTMwNTcsIAorICAgIDUyNzUsIDEwMTA2MywgMTI4NjMyLCA4NjM3LCA0MzY4MiwgMTI4NTc2LCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCAKKyAgICA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgNjg3ODQsIDI0MjYsIDEyMDQyLCA5MjE5NCwgMTIxMTg3LCA5NTM3LCAKKyAgICAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCA1NTIyNCwgNDk4MSwgNzQ2NDQsIDAsIDQxNjQ2LCAKKyAgICAxMTY2NywgNDI2ODYsIDc0OTkxLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIDQxNjQ5LCA3NTg5LCAxMjg3NzYsIDEyODI3MSwgCisgICAgMzIzNywgMCwgNjY4OTUsIDY4Mjk2LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAwLCAxMjc1MDksIDk0MDU2LCAKKyAgICAxMTE3NCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgCisgICAgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMTI4Njc5LCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAKKyAgICAxMjk5OSwgMTE5MjQ1LCA3MDY4OSwgODEwNiwgNDEyOCwgOTgzNzUxLCA2Mjc0LCA0NDk0LCA5ODMwODIsIDQwMTIsIAorICAgIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgNzgyNjAsIDEyMDk3MywgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIAorICAgIDEyMTA3MywgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIAorICAgIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDEyNzM1MywgMTIwMTY2LCAKKyAgICAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA3MTg3MywgMTI4MDksIDY0MDYsIAorICAgIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDEyNTIxNywgMzg1MSwgODEzMiwgNzQzMjUsIDExOTI2MywgCisgICAgMTIwODU1LCAxMjc5NDgsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMTk0ODU1LCAwLCA0MjY1NywgNzEwNzUsIDc2NDMsIAorICAgIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIDc2NDcsIAorICAgIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDEyNjQ3NSwgMzg5MSwgMTI3MjA1LCA5ODM4MDMsIDIzMzcsIAogICAgIDE3MzUsIDc0MzI0LCAxMTEzNCwgMjM2MywgMTIxMDA4LCA5MjQ0MywgNDM1NjEsIDY3NzA2LCAxMjgwMzIsIDc0MTQ2LCAKICAgICAxODYwLCA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgNzg3NTMsIDEyMDM0NywgNzcyNywgCi0gICAgMCwgODQ5OCwgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCA3NjkwLCAKLSAgICAwLCAxMjUzMywgOTgzNzk2LCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMTI4NDQ0LCA3NDgwMCwgNzEwNTEsIDY3OTc0LCAKLSAgICAxMDg1OSwgMTI4NjUwLCA5ODM4MDEsIDYzODk0LCAxMjA3NjAsIDEyMjgyLCA2NjE5MiwgOTgzNTgzLCA3NDU5MiwgODg1MCwgCi0gICAgNzQyNzUsIDkyMzgsIDEwNjE3LCA2ODA2MywgOTE3OTA5LCA5MjYyNSwgOTE3ODAxLCAxMjc5MSwgMCwgOTQwNjksIAotICAgIDEyNzg0MywgNDQ0NywgNzEwNjUsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCA5ODM0NDksIDc0NjM5LCAxMjc5MCwgCi0gICAgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTE5MjM5LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCAKLSAgICA0MTMxMCwgMTIwNzMwLCA0MTM5OSwgMCwgMCwgNTUyNTgsIDAsIDEyNjkwLCAxMjc3NjMsIDAsIDQzNjcyLCAxMjc4NDAsIAotICAgIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgOTgzODA4LCAyNzgsIDEyMTIwNCwgNDE0MDUsIDQzODcxLCAwLCAxMDA3NywgCi0gICAgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgMCwgNjAwMiwgNjczMzUsIDQzNTUzLCAxMTE4OSwgNjczMzgsIDY3MzM3LCAKLSAgICAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAxMjAyNjMsIDEyMDk0MCwgOTQwNDIsIDg2NDYsIDEyODI1NywgNzc4MjksIAotICAgIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAxMTM3NTksIDE5NDAsIDI4MDksIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgCi0gICAgMTA2NzgsIDEwMDQ0LCA2ODg0MSwgMTI4MTIxLCA5ODM4MTYsIDY4MjkwLCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCAKLSAgICA2NjYxNCwgMCwgMCwgMCwgMTAyOTcsIDAsIDM3NDIsIDY3MzMxLCAzOTU5LCAwLCAxMjA0NjYsIDAsIDI0NjcsIDY4ODA2LCAKLSAgICA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgOTgzMjIwLCA0Mzc1OCwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgOTIxMCwgCi0gICAgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgMTE1NDAsIDQzNTQ2LCA2NjkyLCA2ODM3LCA0MTA2MCwgMTI4MDE4LCAKLSAgICA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDY3MzQwLCA2NzM0NywgNjUyNTYsIDY3MzQ1LCAKLSAgICA2NzM0NCwgOTgzMzUyLCA5ODMyNjYsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAxMjgyMzYsIDY3MzUyLCAKLSAgICA2NzM1MSwgNTUxNiwgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDY3MzUzLCA1NDQsIDEyMDQ1LCA2Mjc4LCA3NDYzMiwgCi0gICAgNTUxNSwgMTI5MTg2LCAxMjA4ODQsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAwLCA1NTE3LCA3MDExNiwgNzQyMjUsIAotICAgIDc0ODQxLCA2Nzg4NCwgMTI4NDE0LCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAxMjAxOTksIAotICAgIDExODg4MywgNjc4NzksIDEyNzE4OCwgMTkwMiwgNjc4ODcsIDk2MzgsIDEyOTc2LCAxMjY1NDYsIDEyNDgzLCAxMjM2OCwgCi0gICAgNDE3NjksIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgCi0gICAgNDI2NzcsIDY3ODg5LCA5MzA0MCwgMTMxMSwgMTI4OTQ5LCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgCi0gICAgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMTIwODM3LCA5NDksIDc3ODgyLCA5MTc5NjgsIDYxNDgsIDg2MDUsIDQyMjUzLCAKLSAgICA3ODE3NywgNjY5MDYsIDAsIDQyNzE1LCA3MTQzMiwgNzAyODIsIDk4MzM3MywgNjM4NzEsIDAsIDQxNzk2LCAxMjY5LCAKLSAgICA2NTMwLCAxMjE0MTQsIDY1MDU3LCA3MDQ5MywgNTE0NCwgMTIyMjEsIDQyNzE2LCA2ODI5OSwgNDQzMSwgNDMzMSwgCi0gICAgOTgzNzI5LCAxMjg2NzUsIDQxODM0LCA1Mjc5LCAxMjEzNjIsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgOTI5NTksIDAsIAotICAgIDc4MTY1LCA2NjAzNiwgNzAxNjYsIDEyMDkzNywgNjQyOCwgNDIyNzAsIDk4MzcyNiwgOTgzNTk2LCA0MzA1OSwgNDI2NjYsIAotICAgIDUyNTYsIDEwNjcsIDI1NSwgMTIxMzEsIDEyODc0MiwgOTQ5MywgNzQ5OTAsIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAKLSAgICAxMjExOTUsIDc0Mzk0LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCA5ODM4NTQsIDExOTYzMiwgNzA0MjcsIDY1NjAsIDcwMTYsIAotICAgIDc0Mjc0LCA2OTk4NiwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIAotICAgIDEyNzk2LCAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCisgICAgOTgzNjU4LCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIAorICAgIDc2OTAsIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgCisgICAgNjc5NzQsIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCAKKyAgICA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAxMjg5NzYsIAorICAgIDk0MDY5LCAxMjc4NDMsIDQ0NDcsIDcxMDY1LCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMTAwODc4LCA3NDYzOSwgCisgICAgMTI3OTAsIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIDExOTIzOSwgMTc0NCwgMTI3ODksIDEwMzY2LCAKKyAgICAxMjMxNywgNDEzMTAsIDEwMDg2NSwgNDEzOTksIDEwMDgyMiwgMTI2NjQ5LCA1NTI1OCwgMCwgMTI2OTAsIDEyMDA4MywgMCwgCisgICAgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCAxMTk2NTgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgCisgICAgNDM4NzEsIDEwMDg2NywgMTAwNzcsIDYzODUzLCA3MDY2NywgNDI1ODYsIDkxNzg4NiwgNzQxMTQsIDYwMDIsIDY3MzM1LCAKKyAgICA0MzU1MywgMTExODksIDY3MzM4LCA2NzMzNywgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMTIwMjYzLCAxMjA5NDAsIAorICAgIDk0MDQyLCA4NjQ2LCAxMjgyNTcsIDc3ODI5LCA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMTEzNzU5LCAxOTQwLCAyODA5LCAKKyAgICA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAxMDA0NCwgNjg4NDEsIDEyODEyMSwgOTgzMzUwLCA2ODI5MCwgCisgICAgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDEyMjkyMSwgMTI3OTEyLCAxMDI5NywgMTk1MDU3LCAKKyAgICAzNzQyLCA2NzMzMSwgMzk1OSwgMCwgMTIwNDY2LCAwLCAyNDY3LCA2ODgwNiwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIAorICAgIDk4MzIyMCwgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDkyMTAsIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgCisgICAgOTIzNjEsIDExNTQwLCA0MzU0NiwgNjY5MiwgNjgzNywgNDEwNjAsIDEwMTA5NywgNDY2OCwgOTA4MywgOTgzMjQ0LCAwLCAKKyAgICA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDY3MzQwLCA2NzM0NywgNjUyNTYsIDY3MzQ1LCA2NzM0NCwgOTgzMzUyLCAKKyAgICA5ODMyNjYsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAxMjAyNTgsIDY3MzUyLCA2NzM1MSwgNTUxNiwgCisgICAgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDY3MzUzLCA1NDQsIDEyMDQ1LCA2Mjc4LCA3NDYzMiwgNTUxNSwgMTI5MTg2LCAKKyAgICAxMjA4ODQsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAxMjA1NDEsIDU1MTcsIDcwMTE2LCA3NDIyNSwgNzQ4NDEsIAorICAgIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgMTE4ODgzLCAKKyAgICA2Nzg3OSwgMTIxNDQ4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDc0Mzk0LCAxMjQ4MywgMTIzNjgsIDQxNzY5LCAKKyAgICA0MjcyNiwgNDE3NjUsIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCAKKyAgICA2Nzg4OSwgOTMwNDAsIDEzMTEsIDEwMDg4MiwgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEwMDY0MywgCisgICAgNjkxNywgNzgxNTUsIDEyMDgzNywgOTQ5LCA3Nzg4MiwgOTE3OTY4LCA2MTQ4LCA4NjA1LCA0MjI1MywgNzgxNzcsIDY2OTA2LCAKKyAgICAxMDA2NDQsIDQyNzE1LCA3MTQzMiwgNzAyODIsIDEwMDY0NywgNjM4NzEsIDEyODI5NiwgNDE3OTYsIDEyNjksIDY1MzAsIAorICAgIDEwMTA0OSwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAxMDEwNDUsIAorICAgIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgNzgxNjUsIAorICAgIDY2MDM2LCA3MDE2NiwgMTAwMzg3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODMxNjMsIDQzMDU5LCA0MjY2NiwgNTI1NiwgCisgICAgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3Mzg5NCwgNDEwMTQsIDExNzkzLCAxMjY0NjcsIDc4NzQwLCAKKyAgICA3MDcyOCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgMTI1MjE2LCAxMDA2NTgsIDcwNDI3LCA2NTYwLCA3MDE2LCA3NDI3NCwgCisgICAgNjk5ODYsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgCisgICAgMTE5NTMsIDEyNzM4MCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCiAgICAgNDM4NDUsIDc0MzE1LCA3NDM2MSwgODI1MywgODgxNywgMTEzNiwgOTE3OTMxLCA0MzU2MywgOTIyMzIsIDEyODkxNCwgCi0gICAgNjY0MTAsIDczOTIsIDgyMzAsIDkzNjUsIDcxMTk0LCAxMjcxMDksIDk4MzYwNywgNjY5MTUsIDEyODQwMiwgNDA0MSwgMCwgCisgICAgNjY0MTAsIDczOTIsIDgyMzAsIDkzNjUsIDcxMTk0LCAxMjcxMDksIDE5NDg3OCwgNjY5MTUsIDEyODQwMiwgNDA0MSwgMCwgCiAgICAgMjM1NywgNDMyNDAsIDEyNzg2LCAyMjksIDQzODM0LCAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAxMTk4ODEsIDEyMzUwLCAKICAgICA2NTU1NCwgMTE5ODgyLCA3MTMwNSwgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCA3NzcwLCAxMDcxMiwgNjQ4NTMsIAogICAgIDEyNjg2LCA0MzgzMSwgNDIzNzUsIDY1NzgwLCAxMjQ5NDQsIDY2MzUyLCAxMDQ3MCwgNzExMTksIDExMDU5LCAxMDc5MSwgCi0gICAgOTE3OTQ0LCA0NTAsIDExOTMyOCwgMTI3MjU0LCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgCisgICAgNzI3MjQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKICAgICA3ODI4NCwgNjYzMzgsIDY2Mzk1LCA5MTc4MzIsIDE4MzksIDExODc5OSwgOTgzMjE5LCAxMDkyNywgMTcwMSwgOTgzNjY0LCAKICAgICAyMzg4LCA0MTc0OSwgNDE3NjEsIDU0NTMsIDgzNjEsIDExOTg2NSwgODk1LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIAotICAgIDkyNDkzLCA3ODY3NywgOTgzMTM3LCA5MjQyOSwgNjk5ODMsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIAotICAgIDEyODAxMywgNjU4MTIsIDEyMDY3NSwgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgCi0gICAgMTk0ODA1LCAxMjc5ODAsIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgCi0gICAgMTI5MTcxLCAyMzE0LCA0MzYwMiwgNzg4MjYsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgCisgICAgOTI0OTMsIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDE5NDg0OSwgCisgICAgMTI1MTg5LCA2NTgxMiwgMTAwNjMzLCA3MDAwMSwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDkyNjAwLCAxMjcwNTMsIDQyNzAwLCAKKyAgICAxOTQ4MDUsIDEyNzQwMywgMTI4MDQwLCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMTI3ODQ0LCAwLCA0NDkzLCA0MzM2LCAKKyAgICAxMjkxNzEsIDIzMTQsIDQzNjAyLCA0MTgwOCwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCAKICAgICA0NDg5LCA2ODc1MCwgMTI1MTE2LCAxOTQ3OTMsIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDE5NDc2MSwgODg2NywgCiAgICAgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3MTA2NCwgMTQxMCwgNzg3NjMsIDk4MzI1MiwgMTE4ODc4LCA5ODM1NjcsIAotICAgIDEyODcxNSwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyMTI3NCwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAKKyAgICAxMDA5ODgsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjEyNzQsIDc0NjQxLCA0ODkyLCA3NDAxNiwgCiAgICAgMTIxNTAyLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAxMjcxNjcsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAKLSAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMjEyNzksIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCisgICAgMTI3ODgsIDY0NDg3LCA2NDU1MiwgOTMwNjMsIDEwMjIzLCA0MjA2MiwgMTAwNjQwLCAwLCA3NDI0NiwgMzY2OCwgNjU3NTQsIAogICAgIDQzNTYwLCAxMjIyNiwgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgNzE0NjMsIDE5NDc4NSwgMTk0Nzg4LCA0MzYxOCwgCi0gICAgNjU3NDcsIDEwOTM3LCAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgNjcyMzYsIDg5MjEsIDk5NTIsIDEyODk0MSwgMCwgCi0gICAgNDI3MTQsIDk5NTEsIDQzNDA5LCAxOTQ3NzAsIDI5NDksIDY2MDEyLCAxOTQ3NzUsIDE5NDc3NCwgMjk1OCwgNjgzNTksIAotICAgIDQxODIwLCAyMzAwLCAyMzk1LCAxMjAwNjEsIDk5NzYsIDEyMDA0MywgMTIwMDUwLCA3MTg5NiwgNjgyMjAsIDEyODE0MywgCisgICAgNjU3NDcsIDEwOTM3LCAyOTYyLCAxMjExNzEsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAKKyAgICAwLCA0MjcxNCwgOTk1MSwgNDM0MDksIDEwMDY2OCwgMjk0OSwgNjYwMTIsIDE5NDU4MiwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTAwOTc1LCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKICAgICA0MjgwOSwgNDI4MDcsIDcwNzk4LCA2NjI5MCwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIAotICAgIDQxODk4LCAyMzYwLCA0MTc5NCwgOTE3OTQyLCA3MDc5NiwgOTIxNjMsIDkzMDMzLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIAotICAgIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgCisgICAgNDE4OTgsIDIzNjAsIDQxNzk0LCAxMDA2NjMsIDcwNzk2LCA5MjE2MywgOTMwMzMsIDk4MzY0OCwgMjQxOCwgOTgzMDk4LCAKKyAgICAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgMTk0NjA0LCA0MTc3MiwgNDI4MTMsIDIzMTcsIAogICAgIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCA3ODY4NiwgMTI3MTc3LCAxMDM4NCwgMTk0Nzk0LCAxMjExNDcsIDEyOTExMSwgNzc1MywgCi0gICAgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCA3MDE5OSwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDY4MDY3LCAKKyAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMTI3MDE1LCA2ODA2NywgCiAgICAgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCAKICAgICA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgOTE3Nzc5LCA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIAotICAgIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgOTE3NTU0LCA5MjI2MCwgNDE4ODcsIDAsIDQ4NjIsIDk3MzUsIAorICAgIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgOTE3NTU0LCA5MjI2MCwgNDE4ODcsIDEwMTAyNSwgNDg2MiwgOTczNSwgCiAgICAgNjUzNywgMTIwNTkxLCA3NDI4NiwgMzkxNCwgOTIxNzgsIDY4ODIzLCA5MDY1LCAxMjk2MSwgMCwgMTIwNDU2LCA5MjI1MywgCi0gICAgMTI4MjA0LCAyODksIDEyODcxNCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCA3Mzg5MywgCi0gICAgNDI3MjQsIDY5OTc3LCA0Njg4LCAxMjA0NTQsIDEyODUwNywgMCwgNjc5OTQsIDgyMzgsIDMxMTAsIDEyMDE2MiwgMzU2NSwgCi0gICAgMTIwMTYzLCA2NTI4LCA3ODM4NywgNDMwMzUsIDY5ODk4LCAyMTgsIDk4Mzg1MCwgMTUyMCwgMCwgNDc4NiwgOTgzMTY4LCAKLSAgICA0MzIyNSwgNDYwMiwgOTI0MDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMTIxMTU3LCAxMjAxNTYsIDQzOTc4LCA4OTg4LCAKLSAgICA4ODg4LCA5MjcyNCwgNzQ4MTIsIDY5NzA5LCA5ODM5NjcsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIDEyMTQzNiwgMCwgCi0gICAgOTk3NSwgMTEzNzA0LCAxMTk5MDIsIDQ2ODksIDg5MzIsIDAsIDY1NTYwLCAxMTkyMDksIDc0NDQxLCA3ODgxMCwgMCwgMCwgCi0gICAgNjc5ODcsIDAsIDEyODgyOCwgMCwgNjc5ODksIDExOTAyOSwgMTAwNjUsIDgyMDcsIDcxOTAwLCA5MjYxMywgMTI4MDExLCAKLSAgICAxMjEwMjgsIDY2MiwgMTI4NzIwLCA5MjQ0LCAxOTQ4NjMsIDgzMTgzLCAxMTkyNjEsIDk4MzQzMCwgMCwgMTIwOTAxLCAKLSAgICA5MTc4MzgsIDQxOTI5LCAwLCA3MTA4NCwgNjY2NzQsIDQxOTI2LCA2OTk5NCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIAotICAgIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMTk1MDA0LCA4MzQ3OSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgCi0gICAgMTI4NDg2LCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDEyODQyNSwgOTE3OTQ1LCA3NDAxNSwgMTE1ODIsIDkyNzY4LCAKLSAgICAxMjI4MSwgMTI3MDQzLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAxMjUwMTQsIDE5NDg2MCwgMTE3NjUsIDY1MjU4LCAKLSAgICAxMDM2OSwgMCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgMTUwMCwgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCAKLSAgICA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCA3NDAyMSwgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDgzNDQ0LCAKLSAgICA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgNzE5MDcsIDEyMDQxMCwgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgCi0gICAgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgNjU1MTQsIDEyMTE3MCwgNjM5NDAsIDEyMTM2MywgCi0gICAgNjQ1MzMsIDcxODgzLCAxMjA0NDYsIDY3ODQyLCAxMTk5MCwgOTI0MDUsIDYzOTM5LCA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIAotICAgIDc4NjcxLCA2NDgyOSwgOTMwMjAsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgOTgzMzYzLCA3NDI5NCwgOTgzOTE0LCAKLSAgICA2OTIzOSwgMCwgNjc4NzEsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgNjc3MDEsIDI3NTEsIDEyNjYyLCAyNzYzLCAKLSAgICA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDY2NDI0LCA2Mzk5MiwgMCwgNjM5MjAsIDc0MTI4LCAKLSAgICAyODU2LCAxMTk5MTAsIDQ3LCA2OTkwOCwgNzEwNTMsIDY1ODU4LCAxOTQ4MDYsIDAsIDY3ODI5LCA3ODk5LCAwLCA4NDE3LCAKLSAgICA0Mzc5OCwgNzA3MiwgNzQxOTUsIDAsIDQwMzMsIDEyMTI4OSwgNDM5OTIsIDEyMTA4MSwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCi0gICAgMTIzMjAsIDgzNDg0LCAxMjA4OTQsIDE5NDU2MywgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCA5MzA2NCwgMCwgMCwgCi0gICAgMTE4Nzk4LCAxMjkxLCA3NDgyOCwgMCwgMTIwNDM1LCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAxMjgxOTgsIAotICAgIDEyMTIxNiwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCA4MjQ2LCAxMjg4NzQsIDkzMDY2LCAwLCAxMjA0MzMsIDAsIAotICAgIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDAsIDY0NDI2LCA5ODMwOTIsIDE5NDk0OCwgOTE3ODY2LCAKLSAgICA5MTc3ODgsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMTk4ODcsIDEyODgxMiwgOTI3MTUsIDcwNzg4LCAxMzIwLCAKLSAgICAxMjE0NjEsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIAotICAgIDk4MjAsIDExOTg5MiwgMTIxODcsIDk4Mzg0MSwgNzEwNDEsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgOTgzMjI3LCAKLSAgICAwLCA3NDgyMiwgMCwgNzQ4MjYsIDY0NzMzLCA5ODMyMTQsIDEyNzg5OCwgMzQ5MSwgNjcxNDYsIDEyMTE0MiwgMTI4MjE5LCAKLSAgICAzNTE0LCA2NTQ4NSwgNzI0MjgsIDc0OTIsIDEyODg2MCwgNzQ2MDUsIDkyNDgzLCA3NTE0LCA5ODMzNjksIDEyNjU4NSwgCi0gICAgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgNjM5MjEsIDEyMTE3OCwgNjM5MjUsIDEyMDE2MSwgNzYxMCwgMjE5LCAKLSAgICAxMjgxNTgsIDc4NzIyLCA2OTIsIDQzNTg4LCA2ODQ4NSwgNDE2MzUsIDQzMjQxLCA5Njg4LCA3MTQ3LCA5NTM1LCAwLCAKLSAgICA5Mzk5MSwgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgNjYzOTYsIDkyMzAxLCAKLSAgICAwLCA4ODk1LCA1MjUzLCA3MDAyNSwgNTQ1OCwgOTE3NjI5LCAyODY2LCAxMjkwNDUsIDEyNzg2MCwgMTEwOTgsIDY4NDMzLCAKLSAgICA2NzAwLCAxMjA0ODQsIDAsIDEyMDU4MywgMTk0ODI0LCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgCi0gICAgNjM5OTcsIDk2MDQsIDc4NzAwLCA3NDQxLCA2MzgyNiwgNjc5NzAsIDgzNDM1LCA2NDM5MiwgOTI2MjYsIDk4MzY4NywgCi0gICAgMjg0NCwgNzQ2MTAsIDQxOTc0LCA2NzM5NywgMTIxMzksIDY3OTcxLCAwLCAwLCAzMzU4LCA2NTI5NSwgOTgzODk5LCAzMTA0LCAKLSAgICAxOTQ3MzQsIDAsIDEyMTMwNCwgOTgzMjM1LCA1MzA4LCA4MzQzNCwgMjkwLCAwLCAxMjEzMzgsIDI4NjIsIDI3OTIsIAotICAgIDE5NTA4OCwgOTI5NjMsIDc3OTg0LCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgCi0gICAgMTgxNCwgNzg0NjQsIDEwMjQwLCA2NjI4NSwgNzQzMDUsIDEyODM4MiwgNzQ1MjgsIDY1OTAzLCA3MTQ1NCwgNDI2NDYsIAotICAgIDc2MDYsIDI1OTEsIDI4MzcsIDQzNDEsIDQzNTEzLCA2NDQ4MiwgOTI1MjQsIDgxNjMsIDY1MjcwLCAwLCA3NzkzMiwgMCwgCi0gICAgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgNzUwMzcsIDEyODM0OSwgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCA5MDcxLCAKKyAgICAxMjgyMDQsIDI4OSwgMTAxMDI5LCA0Njk0LCAxMTQyMCwgNDY5MCwgMTIyODk5LCAxMDA3ODksIDkxNzk3OCwgNDY5MywgCisgICAgNzM4OTMsIDQyNzI0LCA2OTk3NywgNDY4OCwgMTIwNDU0LCAxMjg1MDcsIDk4MzgxMywgNjc5OTQsIDgyMzgsIDMxMTAsIAorICAgIDEyMDE2MiwgMzU2NSwgMTIwMTYzLCA2NTI4LCA3ODM4NywgNDMwMzUsIDY5ODk4LCAyMTgsIDk4Mzg1MCwgMTUyMCwgMCwgCisgICAgNDc4NiwgOTgzMTY4LCA0MzIyNSwgNDYwMiwgOTI0MDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMTIxMTU3LCAxMjAxNTYsIAorICAgIDQzOTc4LCA4OTg4LCA4ODg4LCA2NTcyNywgNzQ4MTIsIDY5NzA5LCA5ODM5NjcsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIAorICAgIDEyMTQzNiwgMCwgOTk3NSwgMTEzNzA0LCAxMTk5MDIsIDQ2ODksIDg5MzIsIDEyNTIzOCwgNjU1NjAsIDExOTIwOSwgCisgICAgNzQ0NDEsIDc4ODEwLCAxMjI4ODEsIDEyODcwNywgNjc5ODcsIDAsIDEyMTAyMSwgMCwgNjc5ODksIDExOTAyOSwgMTAwNjUsIAorICAgIDgyMDcsIDcxOTAwLCA5MjYxMywgMTI4MDExLCAxMDEwOTAsIDY2MiwgMTI1MjIxLCA5MjQ0LCAxOTQ4NjMsIDgzMTgzLCAKKyAgICAxMTkyNjEsIDk4MzQzMCwgOTE3ODg5LCAxMjA5MDEsIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIAorICAgIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIAorICAgIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCAKKyAgICA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIAorICAgIDEyNTAxNCwgMTI4ODA4LCAxMTc2NSwgNjUyNTgsIDEwMzY5LCA5ODM0OTgsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIAorICAgIDE1MDAsIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgCisgICAgNzQwMjEsIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA3Mjg3MSwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIAorICAgIDcxOTA3LCAxMjA0MTAsIDEwMDY3MSwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCAKKyAgICA3NDEzMSwgMTI0MiwgNjU1MTQsIDEyMTE3MCwgNjM5NDAsIDEyMTM2MywgNjQ1MzMsIDcxODgzLCAxMjA0NDYsIDY3ODQyLCAKKyAgICAxMTk5MCwgOTI0MDUsIDYzOTM5LCA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgOTMwMjAsIDY5NDMsIAorICAgIDkxNzkzNCwgNTg1OSwgOTgzOTgwLCAyODU4LCA5ODMzNjMsIDY2NzgxLCA5ODM5MTQsIDY5MjM5LCA5ODMzODAsIDY3ODcxLCAKKyAgICAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDY3NzAxLCAyNzUxLCAxMjY2MiwgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAKKyAgICAxMjkyMiwgNzA1MiwgOTE3ODM5LCA2NjQyNCwgNjM5OTIsIDAsIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgCisgICAgNjk5MDgsIDcxMDUzLCA2NTg1OCwgMTAwODYzLCAxMjkwMzMsIDY3ODI5LCA3ODk5LCA5ODM1NzUsIDg0MTcsIDQzNzk4LCAKKyAgICA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCA5ODMzMTUsIDIxMiwgNjQ2MDAsIDE5MDMsIAorICAgIDEyMzIwLCA4MzQ4NCwgMTIwODk0LCAxOTQ1NjMsIDEwMDk3OSwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCA5MzA2NCwgMCwgCisgICAgOTgzNzU2LCAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIAorICAgIDEyMTI1MywgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDEwMDY4MCwgCisgICAgMTIwNDMzLCAxOTQ1NzAsIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDEyMTQzMSwgNjQ0MjYsIAorICAgIDk4MzA5MiwgMTk0OTQ4LCAyMjMwLCA5MTc3ODgsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMDA4NjksIDEyMDg1OCwgCisgICAgOTI3MTUsIDcwNzg4LCAxMzIwLCAxMjE0NjEsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgCisgICAgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIDk4MjAsIDExOTg5MiwgMTIxODcsIDk4Mzg0MSwgNzEwNDEsIDU5ODQsIDAsIDQzMzA4LCAKKyAgICA0MzkzLCA2NzY1MCwgMTEzNzg3LCAxMjcwMTMsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAKKyAgICAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgCisgICAgNzI3NjgsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCAKKyAgICA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIAorICAgIDk2ODgsIDcxNDcsIDk1MzUsIDE5NDk4OSwgOTM5OTEsIDk4Mzk0NSwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgOTE3OTE4LCAKKyAgICA3MTQ5LCA3NDUzLCAxMTk1NjAsIDgwMTMsIDY2Mzk2LCA5MjMwMSwgMCwgODg5NSwgNTI1MywgNzAwMjUsIDU0NTgsIAorICAgIDE5NDY1MSwgMjg2NiwgMTE4ODA1LCAxMjc4NjAsIDExMDk4LCA2ODQzMywgNjcwMCwgMTIwNDg0LCAxMjkzMDgsIDEyMDU4MywgCisgICAgMTk0ODI0LCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgNjM5OTcsIDk2MDQsIDc4NzAwLCA3NDQxLCAKKyAgICA2MzgyNiwgNjc5NzAsIDgzNDM1LCA2NDM5MiwgOTI2MjYsIDk4MzY4NywgMjg0NCwgNzQ2MTAsIDQxOTc0LCA2NzM5NywgCisgICAgMTIxMzksIDY3OTcxLCAxMjcxNjYsIDk4MzgzNCwgMzM1OCwgNjUyOTUsIDk4MzI5MiwgMzEwNCwgMTAwNzc5LCAwLCAKKyAgICAxMjEzMDQsIDk4MzIzNSwgNTMwOCwgODM0MzQsIDI5MCwgMCwgMTIxMzM4LCAyODYyLCAyNzkyLCA5MjQ4MywgOTI5NjMsIAorICAgIDc3OTg0LCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMTAxMDA4LCA5MTc5NzEsIDE4MTQsIAorICAgIDc4NDY0LCAxMDI0MCwgNjYyODUsIDc0MzA1LCAxMjgzODIsIDc0NTI4LCA2NTkwMywgNzE0NTQsIDQyNjQ2LCA3NjA2LCAKKyAgICAyNTkxLCAyODM3LCA0MzQxLCA0MzUxMywgNjQ0ODIsIDkyNTI0LCA4MTYzLCA2NTI3MCwgMTk0ODI1LCA3NzkzMiwgMCwgCisgICAgOTExMiwgNzI3MjEsIDg2MywgOTQ5MCwgNzUwMzcsIDEyODAzNywgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCA5MDcxLCAKICAgICA2ODA1NCwgMCwgMzY1NCwgNzc4OSwgOTYzNywgMTIxMTM2LCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDkyNDE1LCAKICAgICA2NjU4NywgMTI0OTg3LCAwLCA5MjQwMSwgNDM5MjcsIDExMDA2LCAxMjkyNywgNzgwNywgODA3MywgMTIwOTgwLCAxMDYyOSwgCi0gICAgMTI3ODY5LCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyNzI2NywgOTIzOTEsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIAotICAgIDQzOTY5LCA0MzE5MywgMTA3MzcsIDM0NjMsIDEyMDk3NSwgOTgzMzUxLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIAotICAgIDU4MTEsIDEyMzQ1LCA3MDQ5LCAxMTg4MTEsIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDkyOTM5LCAwLCAwLCAxMjgwNDEsIAotICAgIDY3OTAzLCA2NzczOSwgMTI2MiwgMTIwMTY1LCA2NTYxLCAxOTkzOSwgMTI4NjczLCAwLCAxMjczMTgsIDExOTkwNiwgCi0gICAgNzAzMDAsIDAsIDk4MzA5NywgMCwgOTgzNjY3LCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMTIwNjU0LCAwLCA5Mjk0MywgCi0gICAgMTUwMiwgOTE3NTY4LCAxMjc5ODgsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIDg0MzAsIDAsIDcxMjIzLCAKLSAgICAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAxMjgwNzksIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIDY4Mzc1LCAxMDc5NiwgCi0gICAgNTEyOSwgMCwgNzA4MTYsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgMTE3MjEsIDcwODA0LCAKLSAgICA0Nzk4LCAxMjE0NjgsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIAotICAgIDY4ODI0LCA2ODYyNiwgODk0LCAzMDAsIDEyMDg3NSwgMTIzMDYsIDY2MjM1LCA4MDA0LCAwLCAxMTk1NzQsIDI1NjIsIAotICAgIDcwMTU2LCAxMjA4NTYsIDQyNTAzLCA5MjkwMCwgMTE2NTIsIDkxNzgxMywgOTE3Nzk5LCAxMTkyNDEsIDY0Njk5LCAKLSAgICAxMjY1NjksIDUwOTYsIDUwOTUsIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDcwODczLCAwLCAKLSAgICAxMzE1NiwgMTI5MDU3LCAxMDgzMiwgNTA5MywgMCwgNjk4NTIsIDcyNDMwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIAotICAgIDE3NiwgMCwgOTE1MywgNDEwNCwgNzg1OTksIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCAKLSAgICA3MTI5OSwgNjY4MTcsIDQyODgxLCAwLCA4OTgwLCAxMTg5ODgsIDY3ODYxLCA4ODQ0LCA3MjA5LCAwLCAwLCA0Mjc4LCAKLSAgICAxMjg4MDksIDAsIDExOTE2MCwgNzA4MjEsIDkwNzQsIDQzNDgsIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgCi0gICAgMTc4NiwgNjYxLCAxMjgxMTYsIDAsIDkxNzkyNSwgNzQ0MjMsIDcxMzQ1LCA1ODYsIDc0NDE0LCA2NDM1OSwgMTI2NywgCi0gICAgMTI4MjY5LCA2NTQ2OCwgMTk0OTY2LCA2NTczMSwgMCwgNzI0MDUsIDM2MjEsIDkyOTMyLCA2NjY2NiwgNjQyMTEsIDAsIAotICAgIDY1NjIsIDEyOTI4LCAxOTQ5MDQsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMTI3OTUzLCA3MDM0MywgMTcxNCwgNzQ0MDYsIAotICAgIDEyMDc1MSwgMCwgMTIxMTEzLCA5ODM5NzYsIDY2MjI1LCA3MDExMCwgNzA4NjcsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIAotICAgIDEyMDY5NCwgMTIxMDI1LCAxMDI5MSwgMTAzMjMsIDI4MjYsIDExMzgwOSwgMTI2NTEwLCAwLCA0MjAwOCwgOTcwOCwgCi0gICAgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgCi0gICAgOTY4OSwgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDAsIDEyODYyMiwgNjU1ODgsIDkyMzUwLCA5ODMyODEsIDAsIAotICAgIDg0MDEsIDk4MzkyNCwgNDIwMTQsIDEyNzMwNywgNzAzMCwgMTIwOTY5LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDAsIDEyMTIyNSwgCi0gICAgMCwgNzA4MTksIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAxMjY3MDQsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIDEwMTQ3LCAKLSAgICAxMjkzNSwgMTI3NTY4LCAxMjY0ODMsIDEyMTI4MSwgMCwgMCwgNzg3NTcsIDAsIDExMzgxNSwgMTIxMzAyLCAwLCA5OTk0LCAKLSAgICAxMjQ2NywgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIDcwODQsIDI3NjUsIDc4NDY2LCA0MzM4MiwgCi0gICAgMCwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDEyNzc5NywgCi0gICAgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODUsIDk4Mzc0MiwgNzAzMTMsIDEyOTE0MCwgCi0gICAgNjkzMSwgNjk3MjIsIDQzMjYxLCA3MTc3LCA3MDEwNSwgOTI2NTIsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIAotICAgIDEyNjU3NSwgNjgwNiwgNjk5MiwgNDIwMTksIDAsIDQxMjkwLCA5ODM3MTYsIDc1MCwgMCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgCi0gICAgNzEzMDAsIDcwMzIsIDU5NTQsIDY0OTMxLCA0MzE0LCAxMjg2MDAsIDE5OCwgNjg0NTMsIDczMCwgMTIwMDk0LCA2MzkwNywgCi0gICAgNzc5OTMsIDcwODE4LCAxMzE2NSwgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjUwMDUsIDQxMzc4LCAKLSAgICAxMTAwOCwgNjkzOCwgNzAwMjYsIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCA3MDgyMywgMTk0OTkwLCA5ODM2MDQsIAotICAgIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgOTgzMjEzLCAxMjY1MTEsIDY0ODAxLCAKLSAgICAxMjc4MTgsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgCi0gICAgNTk1MiwgMTI4MSwgNDM3NDcsIDAsIDEyMTM5OSwgMTA2NzcsIDYwNCwgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAKLSAgICAzNDI1LCAxMjc0ODgsIDEyNjUyMywgMjgzNiwgOTgzNzM4LCAwLCA5NzA3LCAxMTM3MTgsIDQzMjAyLCAwLCAwLCA2NTE5OSwgCi0gICAgMTczOCwgMTI4MzExLCA2NzcwNywgMjgzMiwgOTI3MDIsIDk2NzAsIDExMTAxLCAwLCA2NjM3NCwgOTE3OTU2LCAxMTk1NTIsIAotICAgIDI4MjIsIDY4MTIyLCA0NDM2LCA5MjUxOSwgOTgzMDgxLCA3Mzc1MiwgNzAzMDUsIDY0ODcyLCA5MjM0MCwgMTMzMSwgMCwgMCwgCi0gICAgMTIxMzc3LCAxMjcwOCwgOTE3OTU0LCA1MDkwLCA1MDg5LCAxMjc5NzcsIDkxNzk1MywgMTE5MTA5LCAwLCA3MDgyNiwgMzE5LCAKLSAgICAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAwLCA1MDg3LCA3NDg4NiwgNzY0MCwgOTYsIDUwODYsIDk4MzU5NywgOTIzNzksIDAsIAotICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMTEzNzE3LCA0MTQyMiwgMTE5NjE3LCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAxMTkwNDIsIAotICAgIDAsIDUwMTEsIDAsIDk4MzMyOSwgMTI2NTg3LCAwLCAxMjA2OTgsIDExODg3NCwgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgCi0gICAgMTE4OTUzLCA5MjI2MiwgMTE4ODk1LCA3MDc5OSwgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgCi0gICAgNzEzNDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDY3MTM4LCA2NTU3NCwgMTk0OTQ3LCA5MjI0LCA2NzE0MCwgMzY3MSwgCi0gICAgODk3NiwgNjcxMzksIDAsIDQxMjc1LCA2MzcyLCA4Mjk5NywgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgOTIzNjgsIAotICAgIDQxMjczLCAxMjE0NDgsIDc0NTMxLCA2NzI4LCAwLCA5NzE1LCAxMjkyOTcsIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgCi0gICAgMTE4OTE5LCA0MiwgMTExOTEsIDQzNjg4LCA2ODI0MywgMCwgNzQ1OCwgMCwgMCwgNjUzODUsIDY3MTM1LCA2NzEzNCwgCi0gICAgMTE5NTgsIDExMTY1LCA5MTc4MjIsIDEyNTA4NywgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMTk1MDY0LCAKLSAgICA2NzEzMiwgNjcxMzEsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCi0gICAgNTU1OCwgODg3OCwgNDM4NDQsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIDkwODYsIDY0NTY2LCA5ODMxODUsIAotICAgIDY0NTg0LCA3NDM3LCA3NDU0LCAxMjU5NCwgNzM3NDksIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIAotICAgIDEyNTA5MiwgMzgwNSwgMCwgNjcxMjgsIDQ0MDAxLCA0MTAwOCwgMTI4MDUyLCA2MzA3LCAxOTk0OSwgNjcxMjksIDc1NDQsIAotICAgIDEyNDk4OSwgNDM0NjksIDEyMTA5NSwgOTgzNzM1LCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCA2NzEyNCwgNzYwMiwgNjQ3MjksIAotICAgIDAsIDQzNTIxLCAwLCA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgNjg0ODMsIDg3MDQsIDIzOTcsIDU1NTYsIAotICAgIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDExMTY2LCAwLCA5Mzk5OCwgNTUwNiwgOTI0OTgsIDE5MTEsIDY2NjUyLCA2NzY4NiwgCisgICAgMTAxMDA0LCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyNzI2NywgOTIzOTEsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIAorICAgIDQzOTY5LCA0MzE5MywgMTA3MzcsIDM0NjMsIDcyODU4LCAxOTQ3OTAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgCisgICAgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAxOTQ5NTgsIDY2NjM5LCA5MjkzOSwgODMxOTMsIDEyMTAxMCwgCisgICAgMTI4MDQxLCA2NzkwMywgNjc3MzksIDEyNjIsIDEyMDE2NSwgNjU2MSwgMTk5MzksIDEyODY3MywgMCwgMTI3MzE4LCAKKyAgICAxMTk5MDYsIDcwMzAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDEyMDY1NCwgCisgICAgOTE3ODY2LCA5Mjk0MywgMTUwMiwgOTE3NTY4LCAxMjc5ODgsIDkxMDcsIDEyMjkwNCwgNTcwMiwgMzY1NSwgNjc2NjEsIAorICAgIDg0MzAsIDAsIDcxMjIzLCAxMjA3NTgsIDExODk2MywgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCAKKyAgICA3NDM4OCwgNjgzNzUsIDEwNzk2LCA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIAorICAgIDkyNDk2LCAxMTcyMSwgNzA4MDQsIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAKKyAgICAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIAorICAgIDEyNzE4OSwgMTE5NTc0LCAyNTYyLCA3MDE1NiwgMTIwODU2LCA0MjUwMywgOTI5MDAsIDExNjUyLCA5MTc4MTMsIDkxNzc5OSwgCisgICAgMTE5MjQxLCA2NDY5OSwgMTI2NTY5LCA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCAKKyAgICA3MDg3MywgMCwgMTMxNTYsIDEyOTA1NywgMTA4MzIsIDUwOTMsIDE5NDgzOSwgNjk4NTIsIDcyNDMwLCA1MDkyLCAxMDcwOCwgCisgICAgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMTEzODEwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAKKyAgICAxMjI3MiwgOTgzMiwgMTE3NzcsIDcxMjk5LCA2NjgxNywgNDI4ODEsIDk4Mzc4NSwgODk4MCwgMTE4OTg4LCA2Nzg2MSwgCisgICAgODg0NCwgNzIwOSwgOTgzNzQxLCAwLCA0Mjc4LCAxMjg4MDksIDAsIDExOTE2MCwgNzA4MjEsIDkwNzQsIDQzNDgsIAorICAgIDkxNzg3MiwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDEyODExNiwgOTE3ODU3LCAKKyAgICA5MTc5MjUsIDc0NDIzLCA3MTM0NSwgNTg2LCA3NDQxNCwgNjQzNTksIDEyNjcsIDEyODI2OSwgNjU0NjgsIDEyNTIzNCwgCisgICAgNjU3MzEsIDk4Mzg5OSwgNzI0MDUsIDM2MjEsIDkyOTMyLCA2NjY2NiwgNjQyMTEsIDEyOTM1MSwgNjU2MiwgMTI5MjgsIAorICAgIDEyMTMwNiwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgMTIwNzUxLCAwLCAKKyAgICAxMjExMTMsIDEyNzM4OSwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAKKyAgICAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTAwNTI2LCAxMjY1MTAsIDEyNzU1NywgNDIwMDgsIDk3MDgsIDQyNzEwLCAKKyAgICAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIDk2ODksIAorICAgIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCA5ODMzMDEsIDEyODYyMiwgNjU1ODgsIDkyMzUwLCA5ODMyODEsIDAsIAorICAgIDg0MDEsIDk4MzkyNCwgNDIwMTQsIDEyNTIzMCwgNzAzMCwgMTIwOTY5LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDcyNzI4LCAKKyAgICAxMjEyMjUsIDAsIDcwODE5LCAxMTk4ODcsIDEyNTIyNywgNjk2MywgMTI2NzA0LCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKKyAgICAxMDE0NywgMTI5MzUsIDEyNzQwMSwgMTE5MTg1LCA3MjgxMiwgNzEyNjUsIDEyODc3OSwgNzg3NTcsIDAsIDExMzgxNSwgCisgICAgMTIxMzAyLCAxMjI4OTIsIDk5OTQsIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgCisgICAgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCA5ODM4MTUsIDEyMDcxOSwgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCAKKyAgICA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAxMjc3OTcsIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIAorICAgIDc4Mzg1LCAxMDA2OTMsIDcwMzEzLCAxMjc0NzYsIDY5MzEsIDY5NzIyLCA0MzI2MSwgNzE3NywgNzAxMDUsIDkyNjUyLCAKKyAgICAxMTk4OTUsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIDEyNjU3NSwgNjgwNiwgNjk5MiwgNDIwMTksIDE5NTA1NiwgCisgICAgNDEyOTAsIDk4MzcxNiwgNzUwLCAxMjEwODgsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKKyAgICA2NDkzMSwgNDMxNCwgMTAwNjM2LCAxOTgsIDY4NDUzLCA3MzAsIDEwMDYzNSwgNjM5MDcsIDc3OTkzLCA3MDgxOCwgMTMxNjUsIAorICAgIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI1MDA1LCA0MTM3OCwgMTEwMDgsIDY5MzgsIDcwMDI2LCAKKyAgICA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgNzA4MjMsIDE5NDk5MCwgOTgzNjA0LCAzODkyLCA2ODYzMiwgNjk2NDIsIAorICAgIDY3MTIsIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDk4MzIxMywgMTI2NTExLCA2NDgwMSwgMTI3ODE4LCA0OTcsIDEyMTAwLCAKKyAgICA1OTUzLCA5MjY2NywgNzc5NiwgNjk2NjksIDQzMjU0LCA3MzgzMSwgMTI4MjQzLCAxMDI5MywgNTk1MiwgMTI4MSwgNDM3NDcsIAorICAgIDAsIDEyMTM5OSwgMTA2NzcsIDYwNCwgNDEwOTcsIDkxODIsIDE4NTksIDAsIDcyODU2LCAzNDI1LCAxMjc0ODgsIDcyNzI1LCAKKyAgICAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDcwNzQyLCA0MzIwMiwgMCwgMCwgNjUxOTksIDE3MzgsIDExOTg5MSwgNjc3MDcsIAorICAgIDI4MzIsIDkyNzAyLCA5NjcwLCAxMTEwMSwgOTgzNzk1LCA2NjM3NCwgMTAwNzA0LCAxMTk1NTIsIDI4MjIsIDY4MTIyLCAKKyAgICA0NDM2LCA5MjUxOSwgOTgzMDgxLCA3Mzc1MiwgNzAzMDUsIDY0ODcyLCA5MjM0MCwgMTMzMSwgOTE3OTU1LCA5ODM3MDYsIAorICAgIDEyMTM3NywgMTI3MDgsIDEyOTMzMywgNTA5MCwgNTA4OSwgMTI3OTc3LCAzMjAwLCAxMDA5ODQsIDAsIDcwODI2LCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDE5NDg4MSwgNTA4NywgNzQ4ODYsIDc2NDAsIDk2LCA1MDg2LCAxMjc3NjMsIAorICAgIDkyMzc5LCAwLCA1MDg1LCA2NDI4NiwgOTI2NjUsIDExMzcxNywgNDE0MjIsIDEwMDcxMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgCisgICAgMTE5MDQyLCAxMTk5MDksIDUwMTEsIDE5NDg4MiwgMTk0NzQyLCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCAKKyAgICA3NjAxLCAxOTQ3MjUsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDExODg5NSwgNzA3OTksIDcwMDg0LCAxMjUxMTEsIAorICAgIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDY3MTM4LCA2NTU3NCwgCisgICAgMTk0OTQ3LCA5MjI0LCA2NzE0MCwgMzY3MSwgODk3NiwgNjcxMzksIDAsIDQxMjc1LCA2MzcyLCA4Mjk5NywgNTUyNjEsIAorICAgIDc5NjMsIDYzNzEsIDAsIDU2OCwgOTIzNjgsIDQxMjczLCAxMjAzMjIsIDc0NTMxLCA2NzI4LCA5ODM2MDksIDk3MTUsIAorICAgIDEyMDk3NSwgODI1OCwgMTE3NTMsIDc0ODIwLCA5ODM5NjUsIDk2MDIsIDExODkxOSwgNDIsIDExMTkxLCA0MzY4OCwgCisgICAgNjgyNDMsIDAsIDc0NTgsIDczOTcyLCA5ODM5NjAsIDY1Mzg1LCA2NzEzNSwgNjcxMzQsIDExOTU4LCAxMTE2NSwgMTk0Njk4LCAKKyAgICAxMjUwODcsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDE5NTA2NCwgNjcxMzIsIDEyNjk2LCA0Mjg1OCwgCisgICAgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgNzMwMCwgMCwgOTQ2NywgNTU1OCwgODg3OCwgNDM4NDQsIAorICAgIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDEwMDc2MiwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgNjQ1ODQsIDc0MzcsIAorICAgIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgMTI1MDkyLCAzODA1LCAwLCAKKyAgICA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgMTI0OTg5LCA0MzQ2OSwgCisgICAgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgMCwgNDM1MjEsIAorICAgIDEyMDc3MiwgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDY4NDgzLCA4NzA0LCAyMzk3LCA1NTU2LCAwLCAwLCAKKyAgICA2NjgwMSwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKICAgICA5OTYxLCA4ODQ1LCA2NjY5OCwgNjgzMjUsIDEwNzkyLCA4ODg5LCAxMjE0MDIsIDIwOTgsIDAsIDY0NzUxLCA3MDMwOSwgCi0gICAgNjY2MjIsIDEyNjYyNiwgMCwgNzQzNjQsIDY4ODE2LCAxMjkxNTIsIDk4MzgwNSwgNDI5MDksIDc1NTIsIDcwMDkyLCAKLSAgICAxOTQ1NjcsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCi0gICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgOTgzMjMzLCAxMjUwNDUsIDM4LCA4NTMzLCA2NjY2OSwgCi0gICAgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCAKLSAgICA0Mjg2MCwgMTE5ODM4LCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAxMjAxMjYsIAotICAgIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIDExNjUwLCAKLSAgICA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgOTgzNzcwLCAwLCAKLSAgICA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIAotICAgIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIDY5NTcsIDAsIAotICAgIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMTI4MDI2LCAKLSAgICA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgMCwgCi0gICAgNjM5NjgsIDEyNzgzNSwgMzQ4MywgMTE5NTkzLCAxOTg5LCA5ODMxNzYsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgCi0gICAgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDEyMTQzNCwgNzQwNjQsIAorICAgIDY2NjIyLCAxMjY2MjYsIDAsIDcwNzI0LCA2ODgxNiwgMTI5MTUyLCAxMjQ5NTMsIDQyOTA5LCA3NTUyLCA3MDA5MiwgCisgICAgMTI3NDkwLCA2NTM4NCwgNzIyMywgNDU1OSwgOTMwMTUsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNDM0OTAsIDEyMTAsIAorICAgIDE5NTA3NywgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDkxNzkwMiwgMTI4NTU4LCAxMjUwNDUsIDM4LCA4NTMzLCAKKyAgICA2NjY2OSwgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIAorICAgIDc4ODg0LCA0Mjg2MCwgMTE5MzIzLCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAKKyAgICAxMjAxMjYsIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIAorICAgIDExNjUwLCA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgMTk0Njc3LCAKKyAgICA3Mjc1NCwgNjQ3MTQsIDcxNDc5LCA3MDgwMiwgMTIxNjIsIDEyMTIwLCA0MzQ3NiwgOTgzNzY2LCAxMTAyNCwgNzQ4MTEsIAorICAgIDY2MjI4LCAxMDU2MywgOTI5NTQsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIDkyOTU1LCAxODM3LCAxMjUwODYsIDYzOTcyLCAKKyAgICA2OTU3LCAwLCAxMTM4MjAsIDQ5NTIsIDY1NzE4LCA2NDQwNSwgNTUwNCwgNjU3MjAsIDY1NzE0LCA2NTcxNSwgNjU3MTYsIAorICAgIDcyODc3LCA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgCisgICAgMCwgNjM5NjgsIDcyODYwLCAzNDgzLCAxMTk1OTMsIDE5ODksIDk4MzE3NiwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCAKKyAgICA2ODMwMCwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDcyODEwLCA0MTQ0NiwgMjU0MCwgNzczNiwgMTIxNDM0LCA3NDA2NCwgCiAgICAgMTI4NjAxLCAxMDUyMSwgNzA3ODYsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKICAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI1MDUzLCAxMzQ3LCA5NjMxLCAKLSAgICA3NDQ0NCwgOTgzNzUzLCAxMjc5OTcsIDkyOTUxLCA3NDg5NywgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCA5ODM0NzksIAotICAgIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgMTA4NjEsIDEyMTA1MywgCi0gICAgNjM5NzYsIDcwMzc3LCA2ODYyMywgNjcwODIsIDY3MDgxLCA0MTM5MSwgNjcwODQsIDgzNDY1LCAzNzYsIDY5ODcsIDkyMjEsIAotICAgIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIDEyODA2NywgMTAxNTQsIDk4MzA0MywgCi0gICAgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAxMjA2MjAsIDgyOTUwLCA2OTc5MSwgCi0gICAgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgMTIxMDU3LCAxMjI4OCwgNzgwNTcsIDY3MDgwLCAxNDkzLCAKLSAgICA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIAotICAgIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDEyODUwNiwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgNzUwNzMsIDQxMjc3LCAKLSAgICA2NDY1OCwgOTgzNDU2LCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAxMjEzMDUsIDcxMTkzLCA2NTM3MSwgNzA3OCwgCi0gICAgMTI4Njk5LCA4MzMsIDEyODIyOCwgNjM2OSwgMTk0ODE1LCAxMDk3OSwgNDE5NTMsIDk4MzM3MCwgNDE0MzQsIDYwNjIsIDAsIAotICAgIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCA3MTIwMCwgOTgzNTkyLCAxMjEyMjMsIAotICAgIDEyNjU2NywgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIDkyODkwLCA0MTYyMiwgMCwgMCwgCi0gICAgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDExOTYzOCwgMCwgCi0gICAgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIAotICAgIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCA4MzIyMiwgODMyMjMsIDY5NTYsIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgCi0gICAgMTIxMDA1LCAxOTQ5MzksIDExOTEyNywgOTAwMiwgMCwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCA1NDYsIDQyNDY5LCAKLSAgICA2NTU2OSwgMTkxOCwgOTU0MiwgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDQzMDc3LCA2Mzk1MiwgODQyNSwgCi0gICAgMzYwMiwgODMyOCwgMTE3NjQsIDgzMTk5LCA4MzIwMCwgNjUwNjUsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCA2ODQsIAotICAgIDQzNTI1LCAxMjc5OTYsIDI4NTQsIDgzMjE0LCA0NTkyLCA2NTc1NSwgODMyMTcsIDY3MTIwLCAxMTk2MywgNDM2MjAsIAotICAgIDY3MTE3LCA3ODI0OSwgNjcxMjMsIDY3MTIyLCA2NzEyMSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCA2OTY3NywgCi0gICAgNjcxMTYsIDg2NDgsIDEyODM3NywgNjc0MSwgNDMwNDcsIDExOTkwMCwgMTMxODAsIDc4MDc3LCA0MTgsIDEyMDY1MywgCi0gICAgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIDQxNzUyLCA2Njg0NiwgODY0MSwgNDE0NDksIDgzMTk0LCA3NDEwMCwgCi0gICAgODMxODYsIDEwOTExLCA2OTQyLCAxMjA4NzksIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIDk4MzU1NiwgCi0gICAgNDU1NCwgNjY4OTIsIDkwMjMsIDExNjg1LCAxMjE0NzYsIDk5MjgsIDY3MTA5LCA2Njg2NSwgMTE0MzcsIDQzNzQxLCAKLSAgICA2NzExMywgNjcxMTIsIDYzOTY3LCAxMjkwNTYsIDQxMjA2LCAxMjYyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAxMjEyNzUsIAotICAgIDgxNTksIDkyNjE5LCAxMTY4NiwgNzE0NzgsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDEyOTA5MCwgOTIxODMsIAotICAgIDY0NTIzLCAxMDM0MywgMTA0MDcsIDkyNzY0LCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDc0MDEzLCAxMjA1MCwgCi0gICAgNjgyMDEsIDI4NjAsIDAsIDEyNzkzNCwgNzA4MjgsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAxMjE0MDEsIAotICAgIDQzODc1LCA2NzEwMywgODg3NSwgMCwgNjcxMDIsIDY3MTA1LCA3NTMxLCAxMjg0NywgMjQxMywgMTE4OTE3LCA2NzQwNCwgCi0gICAgOTYyLCAwLCAxMjg1NSwgNDExOTYsIDQyNTY0LCAxMjc5NzUsIDE1ODIsIDk4MzcxNSwgNTUwOCwgMCwgMTIwOTA0LCAKLSAgICA3NDU4OCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMTE5MjA3LCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIAotICAgIDc4NjAsIDEyODA0OSwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgCi0gICAgODQwNiwgMTE1MywgODMyNjMsIDY0Nzg4LCA4MzI2NSwgODA1NCwgOTE3NCwgNjcwODcsIDY3MDg2LCA5OTY0LCA2NzA5NiwgCi0gICAgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgNDI1MTIsIDAsIDc4ODU3LCA0MjA4OSwgNzQ2MTMsIDkwMDgsIDAsIAotICAgIDEyNjU5MiwgMTk1MDk2LCA0MjA3OSwgODMyNDgsIDc3OTI0LCA0MjUxMywgNzc5MjcsIDQyODQyLCA3Mzk4NSwgNjUyODUsIAotICAgIDY4MzM4LCA4MzIzOSwgODMyNDAsIDgzMjQxLCA4MzI0MiwgOTgzNTkwLCAxMTMzNSwgNjQwNjksIDQyMDkzLCAzOTIwLCAKLSAgICA5MTc4NjksIDAsIDExMTEwLCA4MzI1NSwgNDU4MCwgNDE5NjcsIDgzMjU4LCA2NDM4NCwgODMyNTIsIDgzMjUzLCAzMDIxLCAKLSAgICA0MjAwNCwgOTgzMDk2LCA4MzI0OSwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAxOTQ3NTUsIDkyOTY3LCAxMjg0NTUsIAorICAgIDc0NDQ0LCAxOTQ5NDYsIDEyNzk5NywgOTI5NTEsIDc0ODk3LCA4NjQwLCAxMDA5NzYsIDI1OCwgMTY1NCwgMCwgMCwgCisgICAgOTgzNDc5LCA0MzMxNCwgMTI3OTg3LCA3MDY5OSwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIAorICAgIDg1NDksIDEwODYxLCAxMjEwNTMsIDYzOTc2LCA3MDM3NywgNjg2MjMsIDY3MDgyLCA2NzA4MSwgNDEzOTEsIDY3MDg0LCAKKyAgICA2NzU4OCwgMzc2LCA2OTg3LCA5MjIxLCAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAKKyAgICAxMjgwNjcsIDEwMTU0LCA5MTc5MjEsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgCisgICAgNzI4MzEsIDgyOTUwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgMTIxMDU3LCAKKyAgICAxMjI4OCwgNzgwNTcsIDY3MDgwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIAorICAgIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDEyODUwNiwgODc5NCwgNDEyNzgsIDQxNjI5LCAKKyAgICAxMjE1NCwgNzUwNzMsIDQxMjc3LCA2NDY1OCwgMTI4MTEyLCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAxMjEzMDUsIAorICAgIDcxMTkzLCA2NTM3MSwgNzA3OCwgMTI4Njk5LCA4MzMsIDEyODIyOCwgNjM2OSwgMTk0ODE1LCAxMDk3OSwgNDE5NTMsIAorICAgIDE5NDkzNSwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCAKKyAgICA3MTIwMCwgMTI4NjQ1LCAxMjEyMjMsIDEyMTI0NSwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIAorICAgIDkyODkwLCA0MTYyMiwgNzA3MDQsIDAsIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCA1OTkwLCAKKyAgICA5MDAsIDEwMDc1NywgNjM5NTcsIDExOTYzOCwgOTgzOTc3LCAzNjEyLCA3MDY4NywgNjQzNzYsIDkzOTg3LCA1Mzg5LCAKKyAgICA5MjU5NywgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAKKyAgICA4MzIyMiwgODMyMjMsIDY5NTYsIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgNjU2ODYsIDEyODU2MSwgMTE5MTI3LCAKKyAgICA5MDAyLCA5ODM0MjIsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIAorICAgIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCA0MzA3NywgNjM5NTIsIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAKKyAgICA4MzE5OSwgODMyMDAsIDY1MDY1LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCA0MzUyNSwgMTAwNTMxLCAKKyAgICAyODU0LCA2Njc0NywgNDU5MiwgNjU3NTUsIDgzMjE3LCA2NzEyMCwgMTE5NjMsIDQzNjIwLCA2NzExNywgNjY3MzYsIAorICAgIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgNjk2NzcsIDY3MTE2LCA4NjQ4LCAKKyAgICAxMDA5OTUsIDY3NDEsIDQzMDQ3LCAxMDA0NjAsIDEzMTgwLCA3ODA3NywgNDE4LCA2Njc1NCwgNjQ0OTUsIDEwMjk1LCAKKyAgICAxMDMyNywgMTAzOTEsIDQxNzUyLCA2Njg0NiwgODY0MSwgNDE0NDksIDgzMTk0LCA3NDEwMCwgODMxODYsIDEwOTExLCAKKyAgICA2OTQyLCAxMjA4NzksIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIDEwMTAzMiwgNDU1NCwgNjY4OTIsIDkwMjMsIAorICAgIDExNjg1LCAxMjE0NzYsIDk5MjgsIDY3MTA5LCA2Njg2NSwgMTE0MzcsIDQzNzQxLCA2NzExMywgNjcxMTIsIDYzOTY3LCAKKyAgICAxMjkwNTYsIDQxMjA2LCAxMjYyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAxMDA4NDAsIDgxNTksIDkyNjE5LCAxMTY4NiwgCisgICAgNzE0NzgsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDEyOTA5MCwgOTIxODMsIDY0NTIzLCAxMDM0MywgMTA0MDcsIAorICAgIDkyNzY0LCA2NjY3MSwgMTE0NjYsIDAsIDEwMDgzNywgNDI4OTAsIDcyODQ0LCAyMjYxLCA2ODIwMSwgMjg2MCwgMCwgCisgICAgMTI3OTM0LCA3MDgyOCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDEyMTQwMSwgNDM4NzUsIDY3MTAzLCAKKyAgICA4ODc1LCAwLCA2NzEwMiwgNjcxMDUsIDc1MzEsIDEyODQ3LCAyNDEzLCAxMDA1MjIsIDY3NDA0LCA5NjIsIDkxNzgxNCwgCisgICAgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMTAxMDA5LCAxNTgyLCAxMDA4NDIsIDU1MDgsIDEwMDQ5MiwgMTIwOTA0LCA3NDU4OCwgCisgICAgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMTE5MjA3LCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIAorICAgIDEyODA0OSwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgODQwNiwgCisgICAgMTE1MywgODMyNjMsIDY0Nzg4LCA4MzI2NSwgODA1NCwgOTE3NCwgNjcwODcsIDY3MDg2LCA5OTY0LCA2NzA5NiwgNDE2MTEsIAorICAgIDQ2NDIsIDY2NTc0LCAxMTU1NiwgNDI1MTIsIDAsIDc4ODU3LCA0MjA4OSwgNzQ2MTMsIDkwMDgsIDAsIDEwMTAyOCwgCisgICAgMTAwNDY4LCA0MjA3OSwgODMyNDgsIDc3OTI0LCA0MjUxMywgNzc5MjcsIDQyODQyLCA3Mzk4NSwgNjUyODUsIDY4MzM4LCAKKyAgICA4MzIzOSwgODMyNDAsIDgzMjQxLCA4MzI0MiwgOTgzNTkwLCAxMTMzNSwgNjQwNjksIDQyMDkzLCAzOTIwLCAxMDA1MDQsIAorICAgIDEwMDg1MCwgMTExMTAsIDgzMjU1LCA0NTgwLCA0MTk2NywgODMyNTgsIDY0Mzg0LCA4MzI1MiwgODMyNTMsIDMwMjEsIAorICAgIDQyMDA0LCA5ODMwOTYsIDgzMjQ5LCA0MjMxNywgNDE5OTgsIDEyODc1NiwgNjk0NiwgMTk0NzU1LCA5Mjk2NywgMTI4NDU1LCAKICAgICAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgCi0gICAgMTI3ODgwLCA2ODAzNSwgNDM5OTgsIDExMzYwLCA4MzIzMywgNzQxODIsIDgzMjM1LCA4MzIyOCwgNDIxNDksIDgzMjMwLCAKKyAgICAxMjc4ODAsIDY4MDM1LCA0Mzk5OCwgMTEzNjAsIDgzMjMzLCA3NDE4MiwgNzA2OTEsIDgzMjI4LCA0MjE0OSwgODMyMzAsIAogICAgIDY4NTA4LCA5MTc5OTMsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAxMjgwNzcsIDc0ODg1LCA1NTI0NywgNDExMCwgNjYwMDUsIAogICAgIDY5NTksIDEwOTI5LCA0MjkwNywgMTI4MDgwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCA2MDI1LCA2OTI0MiwgCi0gICAgMTIxMDY4LCAxOTQ4NTQsIDEyNTEzOSwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNzgsIDEwMTE3LCA5ODMxNjksIAotICAgIDkyMjk3LCA0MTYzNiwgMTk0ODg5LCA3MzczOCwgMTIwNjgxLCA4MzAxLCAwLCAwLCAxODcsIDEyODIzNywgNjU2NjksIAotICAgIDEyODMzOSwgNDk2MywgMCwgNjg3NjUsIDAsIDg5NjQsIDY1Njc2LCA3Nzc1LCA5ODM4NDksIDQxOTQ4LCAxMjUwMDMsIDAsIAotICAgIDgzMjM2LCA0MTk0MiwgNjU0NDksIDMxNjAsIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTIwNjE2LCAKLSAgICA0MTc2NiwgNzQ5NDgsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCAKLSAgICA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDgzNDA1LCAzOTgwLCA3MDM3MywgNDI2NTYsIDQxNTA3LCAKLSAgICA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIDc4NjcsIDY5MjE4LCA2MjM2LCAxMjcxNjIsIDAsIDEwNTA1LCAKLSAgICAxMjY2MzgsIDEyODUxLCA4MzQ4OSwgMzQ4LCA1NDc0LCAxMjEzODIsIDMxMDMsIDAsIDQxNzUzLCA3MTEwOSwgMTI4NjA0LCAKLSAgICAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCAKLSAgICA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA2ODc1MiwgNjU1NTMsIDc5MzMsIDU1NjIsIAotICAgIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIDEyNzI0MiwgMCwgMzk3OSwgCi0gICAgNzEyNDgsIDE5NDg5OSwgNjgzMzEsIDkxNzkxMiwgNjg4NDcsIDk4MzY5NywgODMzODIsIDc0NjMzLCA0MTI2NiwgNjg4MzYsIAotICAgIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDIyNzUsIDI2NjYsIDEyMTIzMiwgNDE3MzgsIDgzMSwgNDE5LCAKLSAgICAxMzEyNiwgMTA3MTYsIDgzNDAwLCA0MjgyMiwgMCwgNjQzNCwgNzQ4NTcsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgCi0gICAgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIAotICAgIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCA4MzA3MiwgODMxMDUsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAKLSAgICAxNTk1LCA0MTYxNSwgMTIxMDAxLCAwLCA3NDI2MCwgNzQ4NjAsIDQyODU0LCA0MzIxOSwgODMzMTEsIDEyMTEwNywgMTIxODUsIAotICAgIDExMzgxMCwgNzAwNzIsIDY4MzU1LCA2ODM1NywgNjg0MjEsIDQyODU2LCA4NjM0LCAwLCAxMTk5ODgsIDQyMDksIDc1MDU3LCAKLSAgICA2ODgzMiwgNjU4NzksIDQxNTM4LCA2NTYxMiwgNjg4MjIsIDY2OSwgNTY3OSwgNjg4MTMsIDY4ODE1LCA2ODgxMSwgNjg4MTIsIAotICAgIDY4ODA0LCA1Njc4LCAxMTgyMSwgNjg4MDIsIDY3MTEsIDQ2MCwgMTIxNTEzLCAwLCA5ODM0NjMsIDcwMTE0LCAxMjA3NDcsIAotICAgIDE5NDcxOCwgMTIxNTE5LCA3ODA1MCwgMTE5MDIyLCAwLCAxMjE1MTUsIDEyMTUxNCwgNzc4MiwgOTA0NCwgNDk3NCwgCi0gICAgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyNzAxNywgNTc5MiwgMTI2NjQzLCAxMjgzMTksIAotICAgIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgOTgzNzAyLCA1NjgzLCA5MTc4OTYsIDEyMDg5NSwgNzgxMTksIDE1NDksIDAsIAotICAgIDk4MzIyMywgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgCi0gICAgNjk3NjgsIDE0NDksIDEwMjQxLCA3ODI5MCwgMTE5NTg3LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCAKLSAgICA4NTg0LCA2ODAzMCwgNTU2NywgMjcxNywgODMxNzksIDcxNDQ4LCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCAKLSAgICA5MTc2MTEsIDEyMDg4MSwgMCwgNjU3MDgsIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIAotICAgIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIAotICAgIDY4MDUyLCA2NjU5OCwgMTEwNTkyLCA2NDY2NCwgMTA2NDcsIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIAotICAgIDY1NzAxLCAxOTM0LCA0MzAwNiwgODMyODAsIDg4MDIsIDc4NzEwLCA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgCi0gICAgNzg3MTYsIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDAsIDExOTYxLCAKLSAgICA3ODcyNSwgNjY4NTAsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDEyNzg5OSwgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgCisgICAgMTIxMDY4LCAxMjg5NzksIDEyMTM5OCwgOTE3OTc5LCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3OCwgMTAxMTcsIDcwNzMzLCAKKyAgICA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDkyNzI0LCA4MzAxLCAwLCAwLCAxODcsIDEyODIzNywgNjU2NjksIAorICAgIDEyODMzOSwgNDk2MywgMTI3OTk2LCA2ODc2NSwgMTI4MTk4LCA4OTY0LCA2NTY3NiwgNzc3NSwgMTk0NzYzLCA0MTk0OCwgCisgICAgMTI1MDAzLCAwLCA4MzIzNiwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIAorICAgIDEyMDYxNiwgNDE3NjYsIDc0OTQ4LCA2NTg4MiwgNzg4NDksIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCAKKyAgICA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCA3ODg4LCA4MzQwNSwgMzk4MCwgNzAzNzMsIDQyNjU2LCAKKyAgICA0MTUwNywgODgwNiwgNzAyMywgNzI3MzQsIDc0Mjc5LCA5NDQ3LCA3MDcwMiwgNzg2NywgNjkyMTgsIDYyMzYsIDEyNzE2MiwgCisgICAgOTgzNjA4LCAxMDUwNSwgMTI2NjM4LCAxMjg1MSwgODM0ODksIDM0OCwgNTQ3NCwgMTIxMzgyLCAzMTAzLCAwLCA0MTc1MywgCisgICAgNzExMDksIDEyODYwNCwgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIDQzMzQ3LCAKKyAgICA0MjU2MCwgNTM5MSwgNDE3NDYsIDEwMDk2NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgMjY5MSwgNjg3NTIsIAorICAgIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTAwODIzLCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAKKyAgICAxMjcyNDIsIDAsIDM5NzksIDcxMjQ4LCAxMjk0MTUsIDY4MzMxLCA5MTc5MTIsIDY4ODQ3LCA5ODM2OTcsIDgzMzgyLCAKKyAgICA3NDYzMywgNDEyNjYsIDY4ODM2LCA2NjU2NiwgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCAyMjc1LCAyNjY2LCAKKyAgICAxMjEyMzIsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIDEwNzE2LCA4MzQwMCwgNDI4MjIsIDAsIDY0MzQsIDc0ODU3LCAKKyAgICA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIDY5OTMyLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgCisgICAgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIDEyNjUzNywgNDQ5NywgMzc1NCwgODMwNzIsIDgzMTA1LCAKKyAgICA5MDM5LCA3MDY3OCwgNDE3NzYsIDEyNzM5MSwgODcxNiwgMTU5NSwgNDE2MTUsIDc0NDMxLCAxMjg5MDIsIDc0MjYwLCAKKyAgICA3NDg2MCwgNDI4NTQsIDQzMjE5LCA4MzMxMSwgMTIxMTA3LCAxMjE4NSwgMTEzNzI0LCA3MDA3MiwgNjgzNTUsIDY4MzU3LCAKKyAgICA2ODQyMSwgNDI4NTYsIDg2MzQsIDAsIDExOTk4OCwgNDIwOSwgNzUwNTcsIDY4ODMyLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCAKKyAgICA2ODgyMiwgNjY5LCA1Njc5LCA2ODgxMywgNjg4MTUsIDY4ODExLCA2ODgxMiwgNjg4MDQsIDU2NzgsIDExODIxLCA2ODgwMiwgCisgICAgNjcxMSwgNDYwLCAxMjE1MTMsIDAsIDk4MzQ2MywgNzAxMTQsIDEyMDc0NywgMTk0NzE4LCAxMjE1MTksIDc4MDUwLCAKKyAgICAxMTkwMjIsIDk4MzgyOSwgMTIxNTE1LCAxMjE1MTQsIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgCisgICAgNjU3MTEsIDQxOTEyLCAxMjE2LCAxMjUwODgsIDEwMDQxMSwgNTc5MiwgMTIxMzY0LCAxMDAzOTMsIDc4NTAxLCAwLCAyOTMzLCAKKyAgICAxMjI0NCwgOTgzNzAyLCA1NjgzLCAxMDAzOTIsIDEwMDM5NywgNzgxMTksIDE1NDksIDcwNjcwLCAxMDA0MTUsIDEyMDM5OCwgCisgICAgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgNjcyMzcsIDY5NzY4LCAxNDQ5LCAxMDI0MSwgCisgICAgNzgyOTAsIDcwNzA4LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCA4NTg0LCA2ODAzMCwgNTU2NywgCisgICAgMjcxNywgNjg4MTQsIDcxNDQ4LCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5MTc2MTEsIDEyMDg4MSwgMCwgCisgICAgNjU3MDgsIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgCisgICAgNTk0MiwgODQ2OCwgMTAwNzI5LCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDY4MDUyLCA2NjU5OCwgCisgICAgMTAwNjg2LCA2NDY2NCwgMTA2NDcsIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCAKKyAgICA0MzAwNiwgODMyODAsIDg4MDIsIDc4NzEwLCA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgNzg3MTYsIAorICAgIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDEyODU1MiwgMTE5NjEsIAorICAgIDc4NzI1LCA2Njg1MCwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMTE5ODk4LCA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAKICAgICA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAxMjUwNjEsIDcyNTYsIDAsIDY4MDk0LCAxNjY3LCA0MjE2MSwgCi0gICAgMTIwOTgxLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgMzYxMCwgCisgICAgMTAwOTU4LCA0MjQyOCwgMCwgNjkzNCwgMTAwNzAyLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKICAgICA2ODQyMCwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgMTA4NzUsIAotICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAwLCAzODc0LCAwLCAKLSAgICAwLCA5ODM2MTksIDEyMDMzMSwgMTI4NzczLCAxMTM2NjUsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgCi0gICAgOTIwNywgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAxNDU1LCA3ODc0OSwgCi0gICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCA3NTAyMSwgNDM1MjAsIAotICAgIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAKLSAgICAxOTAsIDExOTg5OSwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCAxMjEzMDMsIDkyMjYxLCA2MzcwLCAxMjUxMjgsIAotICAgIDc4MjcsIDY4NDQxLCA2OTY1LCAxMjg1ODEsIDEyODg2OCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDc4ODY4LCA3NDM4MiwgCi0gICAgMTE4NDEsIDc5MTgsIDczOTg4LCAwLCAxMTM2NjgsIDkxNzg4NCwgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgCi0gICAgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgCi0gICAgNzExMDcsIDExOTA1NCwgMTk0OTY4LCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAxMjEzMjcsIDc0MDcwLCAKLSAgICAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKLSAgICA3MTA0NCwgMTIxMzEyLCA4MzMzLCAxMjEzMjksIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMTcsIAotICAgIDY5OTExLCAxMTkxMCwgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCAKLSAgICA0MTc0NywgMCwgMTI4MTEwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAotICAgIDEyNzQ3LCA4MzAwLCAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgCi0gICAgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgCi0gICAgMTIwMjM4LCA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIAotICAgIDY4NDk0LCAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCA2ODM4LCAzNTYxLCAxMTk4NjcsIDAsIDEwNjEzLCAKLSAgICA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCAKKyAgICAxMjUwNTIsIDU0NzcsIDY1NjkyLCA5ODMyNzYsIDExOTA5MiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAxMjExOTUsIAorICAgIDM4NzQsIDAsIDEyNTIwNCwgMTAwOTk0LCAxMjAzMzEsIDEwMDk5MywgMTAwNjczLCA2NTYwMywgODMyNzIsIDY1Njg3LCAwLCAKKyAgICA0MTAzOCwgNzQwMDksIDkyMDcsIDQyMjM5LCA4NTM2LCA3MDY3MSwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCA4MzA1OCwgCisgICAgMTQ1NSwgNzg3NDksIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4MzIzLCA0MzYxNCwgNjk4MDEsIDkzOSwgCisgICAgNzUwMjEsIDQzNTIwLCA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMTk0NjU4LCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgCisgICAgNjA4OCwgNzg3NTksIDc4NzU1LCAxOTAsIDExOTg5OSwgMTI1OTMsIDEwMDczNSwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIAorICAgIDEyMTMwMywgOTIyNjEsIDYzNzAsIDEwMDQzNiwgNzgyNywgNjg0NDEsIDY5NjUsIDEyODU4MSwgMTI4ODY4LCAxMzIwMSwgCisgICAgMTAwNDMwLCA2OTg5NiwgNzg4NjgsIDc0MzgyLCAxMTg0MSwgNzkxOCwgNzI3NDIsIDEwMTAwNiwgMTEzNjY4LCA5MTc4ODQsIAorICAgIDE3MjgsIDk4MzcwNSwgNDM3NjQsIDE3OCwgMTI5NzIsIDc0NjIwLCAxMTM2NzEsIDcxMTAzLCAxMTE2OCwgOTgzMzgzLCAKKyAgICAxMTM2NzIsIDc4MzI3LCA3NTA0MiwgNjU2OTAsIDgzODIsIDcxMTA3LCAxMTkwNTQsIDEwMDM4MSwgOTI1MiwgMTAwMzc5LCAKKyAgICA0NjUyLCA2ODM3MSwgMTAwMzgyLCAxMjEzMjcsIDc0MDcwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIAorICAgIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAxMDAzODgsIDY5OTMsIDcxMDQ0LCAxMjEzMTIsIDgzMzMsIDEyMTMyOSwgMCwgCisgICAgMTEzOTAsIDk4MzEzNiwgNzQ0NjQsIDEyNzkxMCwgOTIzMjAsIDc0MDgwLCAxMDA0NDIsIDY5OTExLCAxMTkxMCwgOTI1NTksIAorICAgIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCA0MTc0NywgMTI4MzQyLCAxMjgxMTAsIAorICAgIDg2NzcsIDEyMDU2NCwgMTI3MDcsIDkzNTAsIDY2MDM3LCAxMjgxODAsIDg4MzYsIDEyMzE1LCAxMjc0NywgODMwMCwgCisgICAgMTk0NTYyLCAxMjQ5ODQsIDc0OTEsIDg4NTYsIDcxMzYxLCAxMjc5MTMsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIAorICAgIDY2Nzc5LCA2Njc3NywgMTA4MTMsIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgODMzMDgsIDY1MzYsIDEwMDk2MiwgCisgICAgNzE4OTEsIDY1NTE2LCAxMjMyMSwgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAyMjM3LCAxMjAyNDYsIDk1ODgsIDY4NDk0LCAKKyAgICAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTAwODc0LCA2ODM4LCAzNTYxLCA3Mjc1MywgMCwgMTA2MTMsIDY2OTcsIAorICAgIDEyODA1LCA0MTkyOCwgNDA5ODEsIDEwODA0LCA3ODQwOSwgNTAwNiwgNjQzMjgsIDEwMDk2NiwgOTkzMSwgMCwgODgyNSwgCiAgICAgNzQ1NTUsIDY1OTQwLCA0MzI1OSwgMTI2NTg2LCA2MTA3LCA4MzQ1NSwgMTE5MTc3LCA3Nzk0MSwgNzg0MDEsIDExOTI3MCwgCiAgICAgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgNDM4LCA0NTEwLCA1NzY1LCA4NzIxLCAxMTk1NzAsIDExOTIyNywgNjA5MiwgCi0gICAgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAxMjA5MzUsIDAsIDAsIDEwMzgwLCA4NzMzLCAKLSAgICAxMDMxNiwgNzAxMjEsIDQxNjAyLCA5MTc1NzUsIDkyMzA4LCA3NDgzMSwgOTM5ODQsIDAsIDY4NDgyLCA2NTM5OSwgCi0gICAgOTE3ODIwLCA2NDU5MSwgNDI0MDUsIDgzNDY2LCAxMjA4MjAsIDg0MywgMTE1NDEsIDEyODMyNiwgNzAzMjEsIDIwNjUsIAotICAgIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDk4MzMwNiwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAxOTUzLCA5NTc5LCAKLSAgICA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgODM0NjQsIDQxMjU3LCA0MTkwMCwgODY3NSwgMTA3MDAsIDg4MDUsIAotICAgIDE3NDIsIDExMzcyMiwgOTMzMywgODIwMiwgNzIzOTksIDAsIDk4MzE5NywgMTI3MjUyLCAwLCA3Mzg4MiwgNDk5LCAKLSAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgODM0ODIsIDE3MTIsIDU5MzIsIDc3ODQ1LCA0MTc2MiwgOTgzMTAzLCAwLCAKLSAgICAxMTk2NywgMTc3NSwgMTI1MDA2LCA3NTAwOSwgMTExMTgsIDEyMTM5MSwgMTI4MDA5LCA5NDU4LCA5MjkzNSwgNjQ3MCwgCi0gICAgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMTI4MzA3LCAwLCA0Mjc4MiwgMCwgMTI0OTk5LCA5ODMxMzUsIDEyODMwOSwgNzM4NDksIAotICAgIDEyMDY2OSwgOTQxNCwgNzQ2NDcsIDczNzgyLCA3Mzk2OSwgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgCi0gICAgMTk0ODcwLCA4MjU0LCAwLCAxMDk3NSwgNDM1MTgsIDEyMDYyNSwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIDc0MjQ3LCAKLSAgICAxMjcxNTMsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDk4MzExOCwgNDMxNDksIDcxMDU5LCA2NTAzMSwgNzk2MSwgMTYzNiwgCi0gICAgMCwgNjUwMjksIDY1MDI0LCAxMTkwOTksIDEyNDczLCA2NTM0LCAxMjA2MzMsIDk5LCA5OCwgOTcsIDY4MjI2LCA2NzU4NCwgCi0gICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgODMyNzQsIDc4OTIsIDEyNzA2NCwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIAotICAgIDY1NTYyLCA2NjU5OSwgNjY3MjIsIDE5NDk1NSwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAxMjcwNjIsIDcxMTkxLCAKLSAgICAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA1MzQsIDkyNDI1LCAxMDEwMCwgNjA2MSwgCi0gICAgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAKLSAgICAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgCi0gICAgNDEyMTIsIDY3NzEzLCAxNTM2LCA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjEwOTMsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIAotICAgIDEyNzQ0LCA0NzUsIDEyMDM5NCwgMTMyNjYsIDEyNzgxMywgMTI3MTExLCA3ODg0MiwgNzM5MjYsIDY2MjkxLCAxMDY0NSwgCi0gICAgMTIxMiwgNjU0MywgOTgzMzA5LCA4MTM0LCA0MjkzNSwgMjkxMywgNzM4NzAsIDEyNzExMywgMTg2NiwgOTgzMjI5LCAKLSAgICA3MTg5MiwgMTIwOTk2LCA4OTIzLCAxNjQ1LCAxMjA1OSwgNjY1ODUsIDcxMjk3LCAzMTk2LCA3MjQwNCwgMTk0ODI3LCAKLSAgICA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIAotICAgIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMTEzNzg3LCA3MzgxOSwgNDExNjksIDg5MzksIDQxMjQ1LCAKLSAgICAxMjg3NzUsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDEyMDg2MSwgMCwgMCwgNDExNzIsIDc4NTUsIDAsIAotICAgIDcxNDcyLCAxMDQ4MCwgNDMyNTgsIDEyNjU5NiwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMTAsIDY0NSwgMTI2NjE2LCAKLSAgICA3NjA5LCA0MDk3MywgNjk5NDMsIDczODMzLCA2OTk0OCwgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDAsIDc3MjksIAotICAgIDczOTgyLCAxMjA1MTgsIDgzNDczLCAxOTUwODYsIDQzMzY5LCA5ODMxNzcsIDEyODE0MCwgNjg0MTUsIDc3ODYxLCA0NTM4LCAKLSAgICA5Mzk3OCwgNDMxNDEsIDk4Mzc2OSwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCAKLSAgICA3MTExNCwgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAwLCAxMjg4OTcsIDE5NTAzMCwgMjM4MSwgCi0gICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDc0NjE4LCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCAKLSAgICA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIDExOTE2MiwgMTk1MiwgCi0gICAgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTI4NDUwLCAxMTk1NjYsIDEyODA5MywgMTI4MDgsIDEyMTgzLCA2MTQ1LCAKLSAgICA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgODMyNzcsIAotICAgIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCA5ODM0NjIsIDcxMzY2LCA2NjY4MCwgMTIwMDkwLCAKLSAgICA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTIwMDQ3LCA5ODMwNTYsIDgzNDcwLCAxMjAwODEsIDExOTA1MiwgCi0gICAgNDEwMjcsIDEyMDA4NiwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKLSAgICA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEyMDA2OCwgMCwgOTgzNzg5LCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAKLSAgICAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIAotICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDEyNzk0OSwgNDI1MjQsIDY4NDE5LCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgCi0gICAgNzM4NDIsIDk4Mzg2NCwgMTk0OTI5LCA4MDg4LCAxMjg5MzcsIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIAotICAgIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIAotICAgIDEyNzQ3NiwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCA2NTgyNSwgOTU3NywgNjgxOTksIDk4MzM5MywgNjQ2NzAsIAotICAgIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgNzgwNTMsIDczODcyLCA3ODA1NSwgMTE5OTkzLCAxMDkwMiwgMCwgCi0gICAgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgMTIxNDM4LCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3ODA2OSwgMTE4ODkzLCAKLSAgICAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCA2NDQwLCAxOTQ3NDEsIDExMzc1NywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgCi0gICAgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgMTk0NzI4LCAxMjkxMjAsIDAsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCAKLSAgICA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCA4MzQzOSwgCi0gICAgNDE0OTIsIDEyMDA1LCA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDAsIDgzNDQzLCAwLCA3MjkzLCA3OTkxLCAKLSAgICA3NDA1MiwgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCAKLSAgICA2NDQ0NSwgNDI2NjgsIDY2MzUsIDEyODMwOCwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAwLCAKLSAgICA5MzAyNSwgNjk3MDcsIDkzMDIyLCAxMTg4MTIsIDAsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgOTA4OCwgCi0gICAgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwNjY0LCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCA2NzIsIAotICAgIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAxMTc3MiwgCi0gICAgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAxMjYyMiwgCi0gICAgMTI3MjM0LCAxMjQ5NDgsIDAsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgNzQ5NjksIAotICAgIDQyNzMxLCA2Nzk3MiwgNzQ5NzAsIDcxMDY2LCA5ODMyMDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCA5Mjc0NiwgCi0gICAgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgOTgzMzA0LCAwLCA0MTA2NiwgNjQ2NzMsIAotICAgIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgCi0gICAgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgNzQ2MDgsIAotICAgIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgOTE3OTk2LCA0NDMzLCA0MTE1NiwgCi0gICAgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCA5ODM2NDIsIDEwOTI2LCAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIAotICAgIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MjY0NCwgNDE0MTgsIDEyODkzMywgCi0gICAgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDEyMTA4MiwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCAKLSAgICA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAxMjg5MDQsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgCi0gICAgNzQ0NDYsIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgOTgzNDU4LCAKLSAgICAxMjA4MTMsIDQzOTcsIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIAotICAgIDQxMjgyLCA1OTIzLCAxMDQwMCwgMCwgMTIwNDkzLCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDExOTg2OSwgCi0gICAgNjcxNDUsIDQxNywgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCAKLSAgICA2NDg3NywgMjI4NCwgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAwLCAKLSAgICA0MjI3MywgNTgxOSwgMCwgMTI4MDU2LCAwLCAxMTkxMjksIDk4MzEwMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgCi0gICAgNjU3ODUsIDEyMzcsIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDEyODI4NywgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgCi0gICAgMzMyOSwgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDExOTI0MiwgCi0gICAgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMTk1MDUxLCAxMTk4ODAsIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIAotICAgIDkyNzYyLCA4OTQ0LCA5ODMxNjQsIDAsIDEwNDczLCA5ODM4MjMsIDEyMDQ3MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAKLSAgICAxMjg0MzYsIDY4ODQ1LCAxMjA2MDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgMTIwOTM1LCAxMDA5NzAsIDcwNzEzLCAxMDM4MCwgCisgICAgODczMywgMTAzMTYsIDcwMTIxLCA0MTYwMiwgOTE3NTc1LCA5MjMwOCwgNzQ4MzEsIDkzOTg0LCA5ODM4MzAsIDY4NDgyLCAKKyAgICA2NTM5OSwgOTE3ODIwLCA2NDU5MSwgNDI0MDUsIDgzNDY2LCAxMjA4MjAsIDg0MywgMTE1NDEsIDEwMDgxMCwgNzAzMjEsIAorICAgIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDEyNTA2MCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIAorICAgIDE5NTMsIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKKyAgICAxMDcwMCwgODgwNSwgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMTIxMDI3LCA5ODMxOTcsIDExMzgwOSwgCisgICAgMTAwOTg5LCA3Mzg4MiwgNDk5LCA5ODMwNDksIDQzNDY3LCAxOTQ5MjcsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgCisgICAgNzc4NDUsIDQxNzYyLCAxMjkzNzIsIDAsIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAKKyAgICAxMDA5ODIsIDk0NTgsIDkyOTM1LCA2NDcwLCA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMDA0MTQsIDEwMDk4NiwgNDI3ODIsIAorICAgIDEwMDQ0MCwgMTAxMDM2LCAxMDEwMzUsIDEwMDU4MSwgNzM4NDksIDEwMTA0MCwgOTQxNCwgNzQ2NDcsIDczNzgyLCA3Mzk2OSwgCisgICAgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgMTAxMDQ0LCA4MjU0LCAxMDEwNDYsIDEwOTc1LCA0MzUxOCwgCisgICAgMTAwOTU0LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIDEwMDk1MSwgMTAwOTkxLCA5MjI2MywgOTE3OTgwLCAKKyAgICA3NTA3LCAxMDA2MzgsIDQzMTQ5LCA3MTA1OSwgNjUwMzEsIDc5NjEsIDE2MzYsIDAsIDY1MDI5LCA2NTAyNCwgMTE5MDk5LCAKKyAgICAxMjQ3MywgNjUzNCwgMTIwNjMzLCA5OSwgOTgsIDk3LCA2ODIyNiwgNjc1ODQsIDQwNDksIDc0MTYzLCAxMDA5NTUsIDcwOTAsIAorICAgIDgzMjc0LCA3ODkyLCAxMDEwMzAsIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgNjY1OTksIDY2NzIyLCAxOTQ5NTUsIAorICAgIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMTAwOTYwLCA3MTE5MSwgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIAorICAgIDU1OTMsIDExOTE0OCwgMTIwNTM0LCA5MjQyNSwgMTAxMDAsIDYwNjEsIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIAorICAgIDEyOTk4LCAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIAorICAgIDEwMSwgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIDQxMjEyLCA2NzcxMywgMTUzNiwgCisgICAgNjQwOTMsIDczOTcwLCA3NzkzMCwgMTIxMDkzLCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAxMjc0NCwgNDc1LCAxMjAzOTQsIAorICAgIDEzMjY2LCAxMjc4MTMsIDEwMTA3MywgNzg4NDIsIDcwNTAzLCA2NjI5MSwgMTA2NDUsIDEyMTIsIDY1NDMsIDEyNTIyMCwgCisgICAgODEzNCwgNDI5MzUsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgNzE4OTIsIDEyMDk5NiwgODkyMywgCisgICAgMTY0NSwgMTIwNTksIDY2NTg1LCA3MTI5NywgMzE5NiwgNzI0MDQsIDE5NDczMywgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCAKKyAgICA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAKKyAgICAxMTQ1NCwgNzM5MTEsIDEwMTAyMCwgNzM4MTksIDQxMTY5LCA4OTM5LCA0MTI0NSwgODM0NjUsIDQxMTcwLCAxNDU0LCAKKyAgICAxMTM2OSwgNjQ3NywgMTIxNTcsIDEyMDg2MSwgMCwgMCwgNDExNzIsIDc4NTUsIDEwMDk2MSwgNzE0NzIsIDEwNDgwLCAKKyAgICA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMDA5OTIsIDc2MDksIDQwOTczLCAKKyAgICA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMTAwODM2LCA3NzI5LCA3Mzk4MiwgCisgICAgMTAxMDAxLCA4MzQ3MywgMTAxMDAzLCA0MzM2OSwgMTAxMDA1LCAxMDA5NzMsIDY4NDE1LCA3Nzg2MSwgNDUzOCwgOTM5NzgsIAorICAgIDQzMTQxLCAxMDA5NzIsIDgyOTc2LCA3NDIxNCwgNzM4ODYsIDY3NzA5LCA5MTc1OTksIDcxOTE4LCA0MzAwNSwgNzExMTQsIAorICAgIDk1NTIsIDAsIDcwMTI5LCAxMjkxNzMsIDEyOTk3LCA4MzQ3NywgMTk0OTQzLCAxMjg4OTcsIDEwMDczNywgMjM4MSwgCisgICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDEwMDk4MSwgNzQ2MTgsIDEwMDk4MywgMTI0MjUsIDEwNjYxLCAxMDg1NiwgCisgICAgOTYxNCwgMjQyOCwgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgODI5NzcsIDcwNDM3LCAxMjEyNTEsIDY0ODk2LCAKKyAgICAxMDA5NTYsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDEwMDk1NywgMTE5NTY2LCAxMDA4MTcsIDEyODA4LCAKKyAgICAxMjE4MywgNjE0NSwgNzUwMjAsIDY0OTI5LCA3NDk4NSwgNzE5MTYsIDc0OTg0LCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAorICAgIDkxODcsIDgzMjc3LCA4MzI3OCwgMTAxOTEsIDgzMjcxLCAxMTc1MiwgMzM1MywgOTM1OCwgMTI4OTgwLCA3MTM2NiwgCisgICAgNjY2ODAsIDEwMDgxMywgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDEwMDgxMiwgMTAwOTc3LCA4MzQ3MCwgCisgICAgMTIwMDgxLCAxMDA5NzEsIDQxMDI3LCAxMDA4MTEsIDcxNDQ5LCAxMjAwODgsIDczNjYsIDcwMTksIDcwMzc4LCAwLCAKKyAgICAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgNjQ2NTcsIDg2NTcsIDgzNDcyLCA4NTk0LCAxMDA5NjksIDEwMDk2OCwgMTAwOTc4LCAKKyAgICAxMDA4MjAsIDEwMDkxNCwgMTIwMDcxLCAwLCAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIAorICAgIDc3MjgsIDk0MDc3LCAxMTI5NCwgMTAwOTgwLCA2NjY2NSwgNzg1MSwgMCwgODM3NSwgODY5OSwgMTIxMDk3LCA0MjUyNCwgCisgICAgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCA3Mzg0MiwgOTgzODY0LCAxOTQ5MjksIDgwODgsIDcwNjk4LCAKKyAgICA3NDAxMiwgNjY1NjIsIDAsIDQ0MzksIDY5MjYsIDcyNDIzLCAxMjkyNCwgMTAwOTc0LCA0MjM2OSwgNDM1MCwgNjU0OTEsIAorICAgIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAxMDA5NTksIDExMjk2LCA5ODMyODUsIDk4MzQwOSwgMCwgCisgICAgNjU4MjUsIDk1NzcsIDY4MTk5LCA4Mjk4MiwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgCisgICAgNzgwNTMsIDczODcyLCA3ODA1NSwgMTAwODE1LCAxMDkwMiwgMCwgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgCisgICAgMTAwOTUzLCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3MjcyMCwgMTE4ODkzLCAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCAKKyAgICA2NDQwLCAxMjUyNDcsIDEwMDk2MywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgCisgICAgMTk0NzI4LCA3MzAxLCA5ODM2OTMsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgCisgICAgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDE5NDg5NSwgOTQwNDksIDY3MzYsIDgzNDM5LCA0MTQ5MiwgMTIwMDUsIAorICAgIDY5OTI3LCAxMjcwNjgsIDE4OTAsIDEyMDA1NiwgOTgzMzAyLCA4MzQ0MywgOTgzMDQ0LCA3MjkzLCA3OTkxLCA3NDA1MiwgCisgICAgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgCisgICAgNDI2NjgsIDY2MzUsIDEwMDc5MiwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAxMjg2ODQsIAorICAgIDkzMDI1LCA2OTcwNywgOTMwMjIsIDExODgxMiwgOTgzMjMzLCA3MTA5NiwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgNzgwNDUsIAorICAgIDkwODgsIDExOTE0NSwgNjQ1NDUsIDEzOTYsIDEyMDIyMCwgNzU0NiwgMzg0NywgNzEwODgsIDkzMDM3LCA0OTg1LCAxMzI4OCwgCisgICAgNjcyLCA4MDk4LCA0MzE5NiwgMTAwNzk2LCAxMjA3MjMsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgCisgICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAxOTQ3MTEsIDEyODM3MSwgCisgICAgMTI2MjIsIDEyNzIzNCwgMTIwNTY2LCAxOTQ3OTgsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgCisgICAgOTgzMzUxLCA3NDk2OSwgNDI3MzEsIDY3OTcyLCA3NDk3MCwgNzEwNjYsIDk4MzIwMCwgMzA1MSwgNTg2MiwgNzgyMywgCisgICAgOTI0NzgsIDkyNzQ2LCAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCA5ODMzMDQsIAorICAgIDE5NDc0OCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkyMzgxLCAxMjg2MzYsIDM1MDUsIDg3MDcsIDc0OTI1LCA2NzI1LCAKKyAgICAxMjA4MDIsIDEyMTI5NiwgNzUwNDEsIDM0NzEsIDY2MzkxLCA1NDc5LCA4ODIsIDY2ODYsIDExOTU4NCwgMTE2MTMsIAorICAgIDEwMTEwNiwgNDI3NTQsIDc0NjA4LCAxMjUwMjksIDgzNDMzLCAxMjEyMzcsIDEyMDg0NSwgMCwgODM0MzEsIDMyMjUsIAorICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMTI3OTQ5LCA5ODM2NDIsIDEwOTI2LCAKKyAgICAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAKKyAgICAxMzg3LCA5ODM3MzAsIDkyNjQ0LCA0MTQxOCwgNjY3NDksIDY1OTE0LCA2NzIxLCAyMTcsIDcyODI5LCA5MTc5NjAsIAorICAgIDEwMDk2NSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAKKyAgICAxMjg1NjMsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgNzA2NzYsIDQxMjUyLCA2NjY4MiwgOTgzNjgwLCAKKyAgICAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCA3NDMxOSwgMTIwODEzLCA0Mzk3LCAxMDA0NDUsIAorICAgIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjA4OTMsIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgMTA0MDAsIAorICAgIDAsIDEyMDQ5MywgNzYwLCAxMjcxODgsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDEwMDQ0NiwgNjcxNDUsIDQxNywgCisgICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCA2NDg3NywgMjI4NCwgCisgICAgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAxMjcxNTMsIDQyMjczLCA1ODE5LCAKKyAgICAwLCAxMjgwNTYsIDAsIDExOTEyOSwgOTgzMTAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCA2NTc4NSwgMTIzNywgCisgICAgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMTI4Mjg3LCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAzMzI5LCAwLCAKKyAgICA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAxMjgxMDQsIAorICAgIDQzMTg1LCAwLCA0Mzk2LCAxMDA1MzIsIDEwMDUzNSwgMTA3NjksIDk2NzYsIDEwMDUzNiwgMTAwNTM5LCA5NzUzLCA5Mjc2MiwgCisgICAgODk0NCwgOTgzMTY0LCAxMjE0NTAsIDEwNDczLCA5ODM4MjMsIDEwMDU0MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAxMDA1NDYsIAorICAgIDY4ODQ1LCAxMDA1NDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDcyODA4LCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKICAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCAxMjc5MDIsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAKICAgICA3NDkzOCwgNDMzMjQsIDAsIDAsIDc1NjUsIDY2MzYzLCAxMjk1MiwgNjQ4MDYsIDQzMTgwLCA3NDk2NywgNzQxNCwgNzc5MjksIAotICAgIDQzOTgyLCA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgOTgzNzMxLCA4NTIsIDAsIDEyMTYwLCAKLSAgICA4MzQ5MSwgMTAyMTIsIDY1NDM1LCAxMjkwOTIsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAKKyAgICA0Mzk4MiwgNzA3NDEsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDcxMjY3LCA4NTIsIDAsIDEyMTYwLCAKKyAgICA4MzQ5MSwgMTAyMTIsIDY1NDM1LCAxMjY2MDMsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAKICAgICAxMTAzNSwgMTA0MTEsIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAxMDM3NSwgNDM4NTMsIDEyODU5OSwgCiAgICAgNDMxNSwgMTI2NDQsIDgzNDkwLCA3NzkzNywgNDM2MzksIDQzMzQzLCA2NzQwOCwgMTI4OTQ1LCAxMTUwMSwgNDExNzcsIAotICAgIDEyMTE4MCwgMTI4ODY2LCA0MzQzMSwgMTI3MDk3LCA5MjQxMywgODcxNSwgMCwgNDExNzksIDk4MzM1OCwgNDMzMTMsIAotICAgIDEyMDIzMCwgNDExNzYsIDEyODc4MCwgOTk0LCA5ODMwNDUsIDg0NTIsIDc3OTczLCA3Mzk2NiwgNjY4OTAsIDcwODEyLCAKLSAgICA1OTIxLCAwLCAyNTk3LCA5MjQyMywgNTkyMiwgMTE4OTAzLCA2Njg3MywgNDE4NiwgOTI1MzEsIDExOTk2NywgMTI3MTA1LCAKLSAgICA2NzE4LCAxMjcwMjksIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjEwNDAsIDQ0MTMsIDkyMTk2LCA0MjI2OCwgCi0gICAgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCA0MzE2OSwgCi0gICAgMTAxNzYsIDAsIDc0MiwgNzQ4ODEsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIDY3NTYsIAotICAgIDEyNTEwNCwgMTIxMTI2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMjA0OTQsIDExNDEsIDQyNDA3LCAKLSAgICA3NDE3LCA3MTgsIDc1NzIsIDk3MywgMTE5NTk5LCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCA0MjMzMywgCi0gICAgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIDY1MzkwLCAxMDA2NywgMTIwODQ5LCAxMjAyLCAwLCA5ODM5MTAsIAotICAgIDY1ODYzLCAwLCA2ODQ4NCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCAKLSAgICA3ODA0MiwgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCA5MjQyMiwgMCwgNTUyMzcsIDE0MzEsIDExOTE5NCwgNjY1NjUsIAotICAgIDEwODIxLCAwLCAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCAKLSAgICA3MTIyOCwgOTE3OTgyLCAxMjkxODgsIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIAotICAgIDEyMDY4LCA3ODEwMiwgNzEyMjYsIDEwMTQxLCA3NDkyMiwgNjM3NjEsIDg3ODUsIDQ0NzYsIDY1MDcxLCA2Mzc2MywgCi0gICAgMTI2NTUsIDg5MDcsIDkxNDcsIDc4MTA2LCA3ODEwMywgNzgxMDQsIDEyMDg5OCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIAotICAgIDQxNTcyLCAxMjc5NzksIDEyNzE2MCwgOTgzNTU0LCA0MTU3MywgODMxNjAsIDM5MzEsIDEyMDI5NSwgNzQxNDMsIDgzMTU2LCAKLSAgICA4MzE1NywgODMxNTgsIDc4NDYwLCAxMTk4MiwgMCwgODMwNjcsIDEyODM4MSwgOTI3MTIsIDY0NDg0LCAxMTkyNjYsIAotICAgIDQxMTY3LCAwLCA0MTczNSwgOTQwMTksIDcxNywgMTA3NTQsIDgzMTY4LCA4MzE2OSwgNzI0MTMsIDgzMTYzLCA2Mzc2NywgCi0gICAgODMxNjUsIDE3ODAsIDY5MzYsIDAsIDgzMTYxLCA4MTksIDEwNjExLCA5Njk0LCAxMjY5NzgsIDcxNDc0LCAwLCAxMjc4NzEsIAotICAgIDEyOTA2OSwgODM0MywgODM0MiwgODM0NSwgODM0NCwgNjU3OCwgNzAwOSwgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgCi0gICAgMzM0NiwgODMzOSwgMTI4MTY1LCAxMjgyMDgsIDU3NSwgMjY4LCA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgCi0gICAgNjU1NjUsIDgzMzYsIDU5MzYsIDcyOTAsIDc4MTE3LCA4MzM3LCA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCA4MzE1MSwgCi0gICAgNzgxMjMsIDY1NDY2LCAxMTA5MCwgNjk1MywgMCwgODMzNzUsIDc0OTczLCA3ODEzMiwgNTkyNiwgNjgyNTAsIDc4MTMwLCAKLSAgICA3ODEyNiwgNzgxMjcsIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIAotICAgIDk4MzU1OSwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgNjczNzksIDg1OTUsIDk4MzUsIDkxNzk0NywgCi0gICAgNDM3MDMsIDEzMDk3LCAwLCA2NDY0MywgMTMyODMsIDEyNjk3LCA3NDk3NSwgMTIzODEsIDM0ODgsIDU5MzMsIDEwMDMzLCAKLSAgICA3MTEwMSwgNjYyNDEsIDY1NTcwLCAxMTkxNTQsIDEyMjk3LCA3MTIxMiwgMTk1NSwgMTI3OTcwLCA1MzQ5LCA0MjUzOCwgMCwgCi0gICAgMTI0OTMyLCA3NDExLCA5NDYyLCAxMjgxNTAsIDAsIDEyODQ2NSwgNDM5MjAsIDQyNzM2LCAxMjEwMTcsIDU3NTYsIAotICAgIDEyODMyNCwgNzYzOCwgNDE2NDIsIDQyNzY0LCA5ODM3MTcsIDQzMTA5LCA3NjM3LCA1NzUyLCAxMTIxMywgODM0ODEsIAotICAgIDczODMyLCAxMjg4MjcsIDgzNDg2LCAxMjgyMzEsIDc4MzM0LCA5MTc5NTcsIDc2MzYsIDY1MTcxLCA5MTI0LCA5ODMyMTAsIAotICAgIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgOTgzMjIxLCAyMDI3LCA2NjIzMCwgMTAwODAsIDc4MTM2LCAxMDQwMywgNzA4NjksIAotICAgIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCAxMTE4MywgMTIwNDMxLCAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAKLSAgICAxMjcxMzgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAxOTQ2NDgsIDQxMjc0LCA1Nzc4LCA2MzAyLCAKLSAgICAxMjE0MzIsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDY3MjQyLCA5MzA0MSwgOTQ1MiwgMTI4MTUzLCA3NDM5MywgMTE1NTIsIAotICAgIDAsIDEyNzg1NSwgMTI4MjE3LCA2NTM5MSwgMTI4NjE0LCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgNzg2NTgsIAotICAgIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIDEyMDQxMiwgCi0gICAgNDEyNjcsIDQ2NDYsIDY3NzU5LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCA3ODI3MCwgMTI3OTgyLCAKLSAgICA5ODMxNzIsIDQzOTQ4LCAxOTUxMDAsIDY4ODQwLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgMTI3ODkyLCAKLSAgICA2MDY5LCA5MjE5LCAxMjg1NTgsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAxMTkxNDMsIDAsIAotICAgIDcxNDYyLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCA2NzcwNSwgCi0gICAgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCA5ODM2MjksIDEyODYxMSwgODM0NzQsIDEwMjI5LCAKLSAgICAxMDYzNSwgODI2LCA4MzQ3NSwgMTk1MDgyLCAxMjcwMDMsIDE5NTA4NCwgNzE0NTUsIDY0ODMsIDkyMjExLCAxODA4LCAKLSAgICA3ODQ4LCAxMTM3ODgsIDgxMDAsIDc4MjI3LCA3MTE5OCwgNzg2NzAsIDEzMzAxLCA3ODY2NywgOTY2NywgNzg2NjUsIAotICAgIDY3NzA0LCA5ODM5MjEsIDExMDAzLCA5OTA0LCA4MzQxMCwgOTgzOTE5LCAxMjA2OTAsIDkxNDQsIDEwOTIxLCA5Mjk5MiwgCi0gICAgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgNzEwOTIsIDEwMzEzLCA4MzQwOCwgODM1MDAsIDY0MzIwLCAxMDI2NSwgCi0gICAgNjcyNTIsIDEwOTYyLCA2NjkwNCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAxMjA5OTUsIDQxLCAxOTUwNzIsIDE3OTIsIAotICAgIDEyMDUxNSwgMTk1MDczLCA4NjU1LCA2ODI1NCwgOTI1NDQsIDc3OTUxLCAxMjA2NiwgNjcyNTgsIDM4NSwgNDE1MiwgMjU4NSwgCi0gICAgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDkxNzg1MiwgNzM5ODMsIDEwOTU3LCAxMjcwMzcsIDExMTYwLCAxMTkxMTYsIAotICAgIDEyNzg3MywgMTMxNTcsIDAsIDEyODAyNCwgMzU3MCwgMTI5MTg3LCA3NDQzLCAxMTg4MDQsIDQ0MDA2LCA2OTk3LCA2ODAwNCwgCi0gICAgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgOTE3OTcxLCA2NTIxNiwgNzAxOTYsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKLSAgICAxMjg1NDMsIDc4MzksIDkyNjEyLCA3ODgwNiwgNzUwNjQsIDk2OTEsIDQ0MTEsIDc4ODAyLCAxMjEyMTksIDEyMDg1NCwgCi0gICAgNDM0NDIsIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDk4Mzg4OSwgNzI0MTksIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgCi0gICAgMTk5MzIsIDY0ODMxLCAwLCAxMTM2ODQsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCA2NTA3MCwgMTEwNTYsIAotICAgIDk4MzU3NCwgMTE5OTI1LCA5ODMwOTksIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDk4MzgxMSwgNDExNjYsIDAsIDEyNDU2LCAKLSAgICAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIDE5NDcwOSwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCAKLSAgICA3NDE2MiwgMTE5MzIwLCAxMjA0ODMsIDk5NjksIDEyMDc2NywgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCAKLSAgICA3ODQyNCwgMzIzMCwgNjg3NzMsIDk4MzQ5NywgNzUwMjUsIDUyMDksIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCAKLSAgICA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAKLSAgICA3ODg5MywgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIDEyNzUwNSwgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCAKLSAgICA2OTc5NCwgMjQ5NSwgNzQ5MTEsIDU4NDQsIDY4MDMxLCAxMTg4MzgsIDEyNzk0NywgMTI2NTQsIDQ2NjMsIDE4OTksIAotICAgIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDkyOTcyLCAwLCAxMTkwMDAsIDg4OTIsIDc4ODcyLCA5MjMzOSwgCi0gICAgNzEyMzIsIDk4MzA3MywgNTc4MiwgNDIwLCAxMjczNDgsIDkxNzg3MSwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMTI4NTMzLCAKLSAgICA2NDgxNCwgNjM3OTYsIDQzODYxLCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMTI4NDc5LCAxMjExNDQsIDYzNzkyLCAKLSAgICA0NjU5LCAxMjA3ODgsIDc3OTcxLCA0MzY3NiwgNzQ5NDQsIDY5NjczLCAxMjEwMjksIDExMTI5LCA5MjkyOSwgMzI5LCAKLSAgICA3Nzk2OCwgOTI3MDcsIDgzNDk2LCA3Mzk5LCAwLCA0MTE4OCwgMTMyNDQsIDY3NjkyLCA0MjE2NywgNzQzNSwgNzgxOTMsIAotICAgIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIDExMzY1LCA0MzEyNiwgNzc5NzIsIDAsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgCi0gICAgNDI3NjUsIDYzNzUyLCAwLCA3OTg3LCA2OTY3NiwgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCAKLSAgICA1NjAzLCAwLCA0NDczLCAxMjEwODUsIDcyNDI2LCAxMjQ5NDcsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDEyODU0OCwgCi0gICAgMTE5MjEzLCA1MzQ3LCA2OTgwMiwgOTE3OTczLCA3Mzg2OCwgNzA4NTIsIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMTI4MjcxLCAKLSAgICA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCA4MzQ1OSwgNzAwNzEsIDc0OTE2LCA1MzUxLCA3ODY3NSwgNDMxMDQsIAotICAgIDY1MjQ0LCAxMjEzNjUsIDY0NTQxLCA0MjUxOSwgNjgxMzQsIDEyODkxNiwgMTI2OTg2LCA3NDc2NSwgMTI4OTc5LCAKLSAgICAxMjc1MTAsIDY2MzgsIDAsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCA2NTM2NiwgCi0gICAgNDIxNzIsIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgMTE4MDAsIAotICAgIDY1MzU1LCA1MzQ1LCAxMTEwMywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAKLSAgICAxMjY2MzUsIDI0MjMsIDc0NTE4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAxMjY1NzMsIDEyODY3MCwgOTgzNzg3LCAKLSAgICAwLCA2NDYwNSwgMCwgNjgwNzQsIDk4Mzk3NywgNDkxNiwgMTI4NTY4LCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIAotICAgIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA4MzQ1MCwgMTA2ODQsIDAsIAotICAgIDEyNTA2MywgOTI5MDYsIDc5NDYsIDEyNTQxLCA4MTgyLCA2NzU4NiwgNjk3ODAsIDAsIDEyODIwNywgMCwgOTgzNjU0LCAKLSAgICA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAxMTg4NTQsIDY4MDExLCA4ODQ3LCA5MjM3MSwgNjU4NzYsIDU1MzUsIDgzMjksIAotICAgIDc0NTkwLCAxMjUwMzYsIDkyNjA5LCAwLCA2Njg3NCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAxMjEyMTEsIDU2MDcsIAotICAgIDQxMDg5LCAxMjg2MjYsIDAsIDcwMjkyLCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCA4NzY0LCAxMjA0NTksIAotICAgIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgNjcyNzEsIDY1MDExLCA0MTA5MCwgMCwgODM0MTcsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDY3MjcwLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY3MjgyLCA2NzI4MSwgNjcyODAsIDM1NzIsIDEwMDIzLCAKLSAgICA0OTU5LCAxMzA3OSwgMCwgNjcyNzUsIDk3MjksIDEyNTExMCwgMTIxMDQyLCA2NzI3OCwgNDMzNjEsIDEyNzM1NSwgNjcyNzYsIAotICAgIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgMTMzMDQsIDgzMzkyLCA4MzM2OSwgNDE0NTEsIDgzMzcwLCAxMTA5NSwgODI3MywgCi0gICAgNzQzMjIsIDM0NTEsIDcwMjkxLCA5NzIsIDQxNDUzLCA2ODE2NCwgMTE5MzI3LCA3Mzg4MywgNjgwMjIsIDczOTQ1LCAKLSAgICA4MzM2MywgMjI4OCwgMTk5NTUsIDk1MzgsIDgzMzY2LCA2OTgwNywgMCwgMTI5MDk1LCAwLCA4MzM4MSwgMTEzOTYsIAotICAgIDgzMzg1LCAxMTAxOSwgMCwgMTI4NDE2LCAxMjEyMDUsIDY4MDIwLCA0MTA3OCwgNzEzNjUsIDI2MSwgNTkyNywgNzc5MSwgCi0gICAgMTI4NjgxLCA3MzYyLCAwLCAxMDY5NiwgNzAxMjQsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgOTM5OTUsIDI4MiwgCi0gICAgMTE5MTc4LCA2NDM3LCA2ODgzMCwgMTIxNDU5LCA5ODAxLCA2NjM5OSwgNzQxNzcsIDAsIDkxNzk1OSwgMzQ3NCwgNjcyODcsIAotICAgIDAsIDY3Mjg2LCA2MDgxLCA4MzQ2OSwgNzg4NzQsIDY3Mjg5LCA2NzI4MywgODM0NzEsIDcwMDAyLCA0MjkzMCwgMCwgCi0gICAgOTMwMTMsIDg3NTEsIDExNDk5LCA2NzI5NywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA2NzI5OCwgMTIwMjcyLCAKLSAgICA2ODAxNywgOTY0MiwgMTA5MTIsIDk1OCwgNjcyOTMsIDExMzg3LCA2NzI5MSwgNDY2NiwgNzA3OTIsIDQ5MTUsIDY3NzE1LCAKLSAgICA0NjY5LCAwLCA2ODA5OSwgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDc1MDUzLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIAotICAgIDAsIDkxNzg3NSwgODY2NCwgOTY5NywgMzYwNiwgODM0NDYsIDk4Mzk3OCwgOTE3ODc0LCA2NDgxNSwgMTA2MywgMTIwMjUwLCAKLSAgICA2NzMxMiwgOTc3MiwgNzI1NSwgODg4NiwgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgCi0gICAgNDI2NjEsIDgzNDM4LCAxMjAyNTUsIDEyMDI1NiwgMTIzMDEsIDY3ODM2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIAotICAgIDY2NjAyLCAxMjAyNjQsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDcwMzQwLCA4MzQzNywgODYwOCwgCi0gICAgNDI3ODksIDEyMDYxMywgODM0MzYsIDAsIDcxOTA2LCAxMTMwNywgNjY3MDcsIDY3MzAxLCA2NzMwMCwgMTE3NDUsIDc5MTksIAotICAgIDY3MzA0LCAxNjQxLCAwLCAwLCA4OTY2LCAxMjg5MDAsIDc0OTE5LCA1OTA4LCA3MTg3MCwgNjc4NTMsIDY3NDQsIDY3MzEwLCAKLSAgICAxNjk5LCA2NzMwOCwgNjczMDcsIDY3MzE0LCA2NzMxMywgNjMwNiwgMTAxNjksIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAKLSAgICAzNzY2LCAyMzg5LCA2NzMwNSwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIDk4MzgxNSwgCi0gICAgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgMTA1NDEsIDU2MjIsIAotICAgIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDkxNzgzNywgNDE0MzUsIDQzNTIsIDY3MzI0LCAKLSAgICAyNDM1LCA3MTIxMSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAxMjA0NDcsIAotICAgIDM3NjgsIDQxNzc0LCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCA0NTY0LCAKLSAgICAxMTkwNDksIDc0NjIzLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDEyNzIwMSwgMCwgNjgyOSwgNTIyNSwgNjY5MDEsIDEyNzM4NSwgCi0gICAgMCwgMCwgMTE5NjE1LCA2NzMxOSwgNjczMTgsIDMxNjIsIDQzNTA3LCAxMTc3MSwgNjczMjIsIDY3MzIxLCA2NzMyMCwgCi0gICAgNDI2MTQsIDUzNTMsIDU2MjUsIDc0MTc5LCA2NzMxNSwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIAotICAgIDY5OTQyLCA2OTUyLCA2NzMyOSwgNjczMjgsIDY3MzI3LCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIAotICAgIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIAotICAgIDI0MDAsIDU2MjcsIDEyMDAxNywgNjczMzAsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMTEzNjkzLCAyMDMsIAotICAgIDc0MzY1LCAwLCAwLCA2OTk4NSwgNzgzNTAsIDExMzcwMywgNjQzNzgsIDQyMDU0LCAxMjg1NzUsIDAsIDU1NCwgMTE5NjQ5LCAKLSAgICAxMTM1OCwgNzExNzIsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIDEyNTExNCwgNzM4OTEsIDgzNDIzLCA4MzAxOSwgNTY5NCwgCi0gICAgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDEyMDk2MiwgOTMwMjksIDY5NzY0LCAwLCAwLCAKLSAgICAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgOTE3NTYxLCA2Nzc1MywgNDM2NTEsIDEyOTEyOSwgNjgxMTgsIDY4MDkzLCAKLSAgICAxMTI5LCAxMjY1NzQsIDAsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgNzUwNTgsIDY1MjU1LCA5Mzk5MiwgCi0gICAgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDEzNiwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIDAsIDc3NTYsIAotICAgIDEyMzQyLCAxMjA2OTcsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgNzEzMTgsIDQ1NiwgNzAyNiwgODE0NSwgMTE2OCwgCi0gICAgOTI1MSwgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIDY4MTIxLCAKLSAgICA5MTc4NTAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgNjcxMTQsIDEwNDA1LCAxMjcxOTUsIDc4ODAzLCAwLCAxMjkxNzYsIAotICAgIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgCi0gICAgNzg4NjcsIDgyMTQsIDgzNDIxLCAxMTM3ODQsIDEyMDAzNywgNDE0NTcsIDk4Mzk3MCwgMTE5NTg5LCAxOTY5LCAyMzg0LCAKLSAgICA4MDk3LCAxMjgwMTksIDc0MTMsIDY4MDEyLCA3ODAyOSwgODc2NiwgNDM4NjQsIDc4MDc5LCA1ODU0LCAxMjUwMDAsIAotICAgIDEwNTgzLCAwLCAxMTk5ODksIDEyNzU1NiwgMTA0MTYsIDY4MDcwLCAzODcyLCA4MzQyNCwgOTgzODM5LCA4NDI5LCAKLSAgICAxMjEyMzAsIDExODgwNiwgMjgzOCwgNjQyOSwgMCwgODM0MjYsIDAsIDEyODQ3OCwgMCwgMTk0NjIwLCA5NDAwNSwgMTEwOTYsIAotICAgIDgzNDIyLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDY3ODE5LCA3Mzc0MiwgNjYsIAotICAgIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIDgyLCA4MSwgODQsIAotICAgIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCA4NTU2LCAKLSAgICA5MTc5NzUsIDk2NTksIDAsIDAsIDAsIDk1NTYsIDAsIDQ1MDMsIDExMzUzLCA5NjQ3LCAxMjUwMTUsIDc4MTg1LCAxMjg5NTksIAotICAgIDAsIDcxNDM3LCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCA2NDM4LCA4MzM2NCwgOTEwOSwgNzg4ODIsIDEyODksIAotICAgIDY0NTk5LCAxMTg5MTUsIDY4MDA5LCAxMjgzMDIsIDY1NTA3LCAyNDQ3LCAxMTk5MTEsIDEyODY5NCwgMTI4MDQyLCAKLSAgICAxMjY1NDUsIDY2NTg5LCAwLCA2MzM0LCAxMjgzNjksIDAsIDE5OTM3LCA5MTc3OTMsIDEzMjIsIDkyMzU5LCA1Njc1LCAyNTQsIAotICAgIDAsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIDQyMzEyLCAwLCAxOTQ2OTIsIDY5NzIsIDQyODI2LCAKLSAgICA3NDQwOSwgNDI0NjQsIDEyMDU2NywgNjY4OTksIDY3MTU1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAxMjg4MDUsIDY3Njg3LCAKLSAgICA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgNDM4NjcsIDQxOTc4LCAxNDEyLCAKLSAgICA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCA3MTQyOCwgMTIwNzQ4LCAzMTQwLCAKLSAgICAxMjcyNzYsIDc5NjAsIDQzMjcxLCAxMjEwOTksIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgNjcyNTQsIAotICAgIDY3MjUzLCA3Njk5LCAxMjM5MywgNjcyNTcsIDAsIDY3MjU2LCA2NzI1NSwgODIyMywgMCwgNDI2MSwgMTIxNDYwLCAKLSAgICAxMjA5MTAsIDc0MzA4LCA5ODM4MjcsIDExMzcxMiwgNjcxNTMsIDk4MzU3MSwgMTI4MDQ2LCA0MzQxOSwgOTgzNDcxLCAKLSAgICA2NDU1NCwgMTA1NzQsIDM4NzgsIDY3NjkxLCA0MjM1MiwgMTc1MiwgNzM3ODUsIDEyODE3MSwgNDI1MDYsIDEyODU0MSwgCi0gICAgMTAxOTksIDkxNzg2NSwgMTI1MTQyLCA2ODAyMSwgNjU5MTksIDAsIDY2OTUsIDcyMCwgMzI0LCAwLCAxMjkwMzUsIDQzNDA2LCAKLSAgICA5ODM3MzYsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgNjgwODIsIDY0NDg4LCAxMjg5NzcsIDEyMDk1MSwgCi0gICAgNjQwNDEsIDc0Nzg3LCAwLCA3ODg2NSwgOTIyNTgsIDY1NTk3LCAxMjE0MTYsIDc4ODYzLCAwLCAxMzAyLCA2NjI4OCwgCi0gICAgNzg4NjEsIDExOTEzNCwgMCwgNjcxNTIsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDEyMDkyMywgMzk5NSwgNjgzNjAsIAotICAgIDY1NjA4LCAzNzE0LCA5MjE5MCwgMTIwMDI2LCA2NzI2MiwgMTA5OTksIDExNzUwLCA2NzI1OSwgNDMyNTEsIDY3MjY0LCAKLSAgICA0MzMwMSwgMCwgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgMTE5NjQsIDEyMTI2OCwgMTI4MDE0LCA5MjE3MywgMCwgCi0gICAgNjg0NTUsIDQyODYzLCA3MzgzOSwgMTI3NTI5LCAwLCA2NzcwMCwgOTE3ODEyLCAxMTM3MDEsIDQzNjQ1LCA0NjgsIDYxMiwgCi0gICAgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgMTI4NjI1LCAxMjI4MCwgNzAzNjcsIDU0MCwgCi0gICAgNzQ1NjQsIDExOTAxNywgNjY0MjIsIDg0MzIsIDc4ODczLCAxMTA3MywgMCwgNjQzMTYsIDAsIDEyMTA3MCwgODIwLCAKKyAgICAxMjExODAsIDEyODg2NiwgNDM0MzEsIDEyNzA5NywgOTI0MTMsIDg3MTUsIDk4MzM5OCwgNDExNzksIDk4MzM1OCwgNDMzMTMsIAorICAgIDEyMDIzMCwgNDExNzYsIDEwMTAwNywgOTk0LCAxMDA0NDgsIDg0NTIsIDc3OTczLCA3Mzk2NiwgNjY4OTAsIDcwODEyLCAKKyAgICA1OTIxLCAxMDA4MDQsIDI1OTcsIDY2Nzc2LCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgNzM3NDEsIAorICAgIDEyNzEwNSwgNjcxOCwgMTI3MDI5LCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTIxMDQwLCA0NDEzLCA5MjE5NiwgCisgICAgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgCisgICAgNDMxNjksIDEwMTc2LCA5ODM2NDAsIDc0MiwgNzQ4ODEsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgCisgICAgMTE2ODIsIDY3NTYsIDEyNTEwNCwgMTIxMTI2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMDA1MTcsIAorICAgIDExNDEsIDQyNDA3LCA3NDE3LCA3MTgsIDc1NzIsIDk3MywgMTAwNTAwLCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAKKyAgICAxMjUwOTksIDgwMTgsIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAKKyAgICAxMDA4NjgsIDEyMDIsIDEwMDU1NywgMTI4MzY0LCA2NTg2MywgMTE5MjUwLCA2ODQ4NCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgCisgICAgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgNjczOCwgMTIyODgyLCA0MzY4MSwgNjk3MjgsIDIwNTksIAorICAgIDkyNDIyLCAxMDA1MDIsIDU1MjM3LCAxNDMxLCAxMDA1MDMsIDY2NTY1LCAxMDgyMSwgMTAwNTA4LCAxMjgwNCwgMTAwNTEwLCAKKyAgICA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCA3MTIyOCwgMTk0NjI2LCAxMjkxODgsIDE3NDAsIAorICAgIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgNzEyMjYsIDEwMTQxLCA3NDkyMiwgCisgICAgNjM3NjEsIDg3ODUsIDQ0NzYsIDY1MDcxLCA2Mzc2MywgMTI2NTUsIDg5MDcsIDkxNDcsIDc4MTA2LCA3ODEwMywgNzgxMDQsIAorICAgIDEyMDg5OCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAxMjc5NzksIDEyNzE2MCwgOTgzMTI3LCA0MTU3MywgCisgICAgODMxNjAsIDM5MzEsIDEyMDI5NSwgNzQxNDMsIDgzMTU2LCA4MzE1NywgODMxNTgsIDc4NDYwLCAxMTk4MiwgOTgzNDgzLCAKKyAgICA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgNDExNjcsIDk4MzM2NiwgNDE3MzUsIDk0MDE5LCA3MTcsIAorICAgIDEwNzU0LCA3Mjc0MCwgODMxNjksIDcyNDEzLCA4MzE2MywgNjM3NjcsIDgzMTY1LCAxNzgwLCA2OTM2LCAwLCA4MzE2MSwgCisgICAgODE5LCAxMDYxMSwgOTY5NCwgMTI1MjI4LCA3MTQ3NCwgMCwgMTI3ODcxLCAxMjkwNjksIDgzNDMsIDgzNDIsIDgzNDUsIAorICAgIDgzNDQsIDY1NzgsIDcwMDksIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIDMzNDYsIDgzMzksIDEyODE2NSwgCisgICAgNzI3MDUsIDU3NSwgMjY4LCA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgNjU1NjUsIDgzMzYsIDU5MzYsIAorICAgIDcyOTAsIDc4MTE3LCA4MzM3LCA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCA4MzE1MSwgNzgxMjMsIDY1NDY2LCAxMTA5MCwgCisgICAgNjk1MywgMTI1MjQwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIDc4MTI2LCA3ODEyNywgCisgICAgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgOTgzNTU5LCAKKyAgICA2NTc0MiwgMTI4NzQsIDEwMDQ3MywgMTE1OTAsIDEwMDQ3NSwgNzQwNDgsIDY3Mzc5LCA4NTk1LCA5ODM1LCAxMDA0NTYsIAorICAgIDQzNzAzLCAxMzA5NywgMTI3MTk3LCA2NDY0MywgMTMyODMsIDEyNjk3LCA3NDk3NSwgMTIzODEsIDM0ODgsIDU5MzMsIAorICAgIDEwMDMzLCA3MTEwMSwgNjYyNDEsIDY1NTcwLCA3ODMzNiwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIAorICAgIDQyNTM4LCAwLCAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMTAwNDUzLCAxMDA0NTIsIDQzOTIwLCA0MjczNiwgCisgICAgNzA3NDcsIDU3NTYsIDEyODMyNCwgNzYzOCwgNDE2NDIsIDQyNzY0LCAxMjA0NDQsIDQzMTA5LCA3NjM3LCA1NzUyLCAKKyAgICAxMTIxMywgODM0ODEsIDczODMyLCAxMDA0NjMsIDgzNDg2LCAxMDA0NjUsIDc4MzM0LCAxMjEwMzQsIDc2MzYsIDY1MTcxLCAKKyAgICA5MTI0LCA5MTc5NTcsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgODM0ODgsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIAorICAgIDEwNDAzLCA3MDg2OSwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgOTgzMjIzLCAKKyAgICAxMjgzNTEsIDcyODQ1LCAxMjcxMzgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAxOTQ2NDgsIAorICAgIDQxMjc0LCA1Nzc4LCA2MzAyLCAxMDAzNjcsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDY3MjQyLCA5MzA0MSwgOTQ1MiwgCisgICAgMTI4MTUzLCA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMTIxMzgwLCA2NTM5MSwgMTI4NjE0LCAxMDE3MiwgNjU0NTMsIAorICAgIDYzNzg5LCA0MTI2NCwgNzg2NTgsIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgCisgICAgNDEyNjksIDEyMDQxMiwgNDEyNjcsIDQ2NDYsIDY3NzU5LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCAKKyAgICA3ODI3MCwgMTI3OTgyLCA5ODMxNzIsIDQzOTQ4LCAxOTUxMDAsIDY4ODQwLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgCisgICAgMTY3MSwgMTI3ODkyLCA2MDY5LCA5MjE5LCAxMDA0NjEsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAKKyAgICAxMTkxNDMsIDk4MzM1OSwgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAKKyAgICAxMTk1NjcsIDY3NzA1LCA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgCisgICAgMTI3NzcwLCA4MzQ3NCwgMTAyMjksIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDkyNjAzLCAxMjExNDksIDcxNDU1LCAKKyAgICA2NDgzLCA5MjIxMSwgMTgwOCwgNzg0OCwgMTEzNzg4LCA4MTAwLCA3ODIyNywgNzExOTgsIDc4NjcwLCAxMzMwMSwgNzg2NjcsIAorICAgIDk2NjcsIDc4NjY1LCA2NzcwNCwgOTgzOTIxLCAxMTAwMywgOTkwNCwgODM0MTAsIDk4MzkxOSwgMTIwNjkwLCA5MTQ0LCAKKyAgICAxMDkyMSwgOTI5OTIsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDcxMDkyLCAxMDMxMywgODM0MDgsIDgzNTAwLCAKKyAgICA2NDMyMCwgMTAyNjUsIDY3MjUyLCAxMDk2MiwgNjY5MDQsIDQzMDA4LCA4OTQ1LCA3ODY4MywgMTIwOTk1LCA0MSwgCisgICAgMTk0ODY2LCAxNzkyLCAxMjA1MTUsIDE5NTA3MywgODY1NSwgNjgyNTQsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDY3MjU4LCAKKyAgICAzODUsIDQxNTIsIDI1ODUsIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCA5MTc4NTIsIDczOTgzLCAxMDk1NywgMTI3MDM3LCAKKyAgICAxMTE2MCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCA5ODM2NDUsIDEyODAyNCwgMzU3MCwgMTI5MTg3LCA3NDQzLCAxMTg4MDQsIAorICAgIDQ0MDA2LCA2OTk3LCA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMTk1MDQ2LCA2NTIxNiwgNzAxOTYsIAorICAgIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAxMjg1NDMsIDc4MzksIDkyNjEyLCA3ODgwNiwgNzUwNjQsIDk2OTEsIDQ0MTEsIAorICAgIDcxMjc2LCA3MjgzNywgMTIwODU0LCA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgMTIyODk3LCA3MjQxOSwgMTIxNDExLCAKKyAgICAxMjA4ODYsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAxOTQ5NzUsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgCisgICAgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgCisgICAgOTgzODExLCA0MTE2NiwgOTM5NzEsIDEyNDU2LCAxMTkxOTQsIDE3MSwgNTk0MSwgMTI0NTIsIDE5NDcwOSwgMTI0NTgsIAorICAgIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTE5MzIwLCAxMjA0ODMsIDk5NjksIDEyMDc2NywgMTI0NTQsIAorICAgIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgNjg3NzMsIDEyODU5NSwgNzUwMjUsIDUyMDksIDI5NywgCisgICAgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgCisgICAgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCA3ODg5MywgNzQ4MTUsIDEwNTEyLCAwLCA3Mjg2NiwgNzg4NzUsIDc4MDQ5LCAKKyAgICA3Mjg0MSwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgCisgICAgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIAorICAgIDEyMDQyNCwgNzEyNzIsIDg4OTIsIDc4ODcyLCA5MjMzOSwgNzEyMzIsIDk4MzA3MywgNTc4MiwgNDIwLCAxMjczNDgsIAorICAgIDkxNzg3MSwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMTk0OTY3LCAxMjUyMjMsIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIAorICAgIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCAKKyAgICA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIAorICAgIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgCisgICAgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMTIwODYyLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgCisgICAgNzk4NywgNjk2NzYsIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgNTYwMywgMCwgNDQ3MywgCisgICAgMTIxMDg1LCA3MjQyNiwgMTI0OTQ3LCA2NTM0NywgNjUzNDYsIDY1MzQ1LCAxMjg1NDgsIDY2NzQxLCA1MzQ3LCA2OTgwMiwgCisgICAgOTE3OTczLCA3Mzg2OCwgNzA4NTIsIDEwNTg4LCAwLCAxMjg0MjAsIDYzNzU1LCAxMjY2NDMsIDUzNDMsIDc4NDIyLCAKKyAgICAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgNjUyNDQsIAorICAgIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCA2Njc4NSwgMTI3NTEwLCA2NjM4LCAKKyAgICAxMjkzNjMsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCA2NTM2NiwgNDIxNzIsIAorICAgIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgMTE4MDAsIDY1MzU1LCAKKyAgICA1MzQ1LCAxMTEwMywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAxMjY2MzUsIDI0MjMsIAorICAgIDc0NTE4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAxMjY1NzMsIDEyODY3MCwgOTgzNzg3LCAwLCA2NDYwNSwgMCwgCisgICAgNjgwNzQsIDEyNzMwNywgNDkxNiwgMTI4NTY4LCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAKKyAgICAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA2NjczNywgMTA2ODQsIDEyMjkxMywgMTI1MDYzLCAKKyAgICA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMTI5NDIyLCAxMjgyMDcsIDk4MzY0NCwgMTI4NjEzLCAKKyAgICA5MDA1LCAxMjI1LCA2NjMwLCAwLCA5ODM0OTEsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgCisgICAgODMyOSwgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgCisgICAgNTYwNywgNDEwODksIDEyODYyNiwgOTgzMzk2LCA3MDI5MiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgCisgICAgODc2NCwgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDY3MjcxLCA2NTAxMSwgNDEwOTAsIDAsIDgzNDE3LCAKKyAgICAxMTg4LCA3MjU0LCAxMTAwLCAxMjkxODAsIDY3MjcwLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY3MjgyLCA2NzI4MSwgNjcyODAsIAorICAgIDM1NzIsIDEwMDIzLCA0OTU5LCAxMzA3OSwgMTI0OTc4LCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCAKKyAgICA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCAKKyAgICA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIAorICAgIDczODgzLCA2ODAyMiwgNzM5NDUsIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAxMjUyNDYsIAorICAgIDEyOTA5NSwgMCwgODMzODEsIDExMzk2LCA4MzM4NSwgMTEwMTksIDEyMTIxOCwgMTI4NDE2LCAxMjEyMDUsIDY4MDIwLCAKKyAgICA0MTA3OCwgNjY3NTgsIDI2MSwgNTkyNywgNzc5MSwgMTI4NjgxLCA3MzYyLCAxMjUyNTYsIDEwNjk2LCA3MDEyNCwgNjA3MywgCisgICAgOTgzOCwgMTE4OTIwLCA5MTc4NzgsIDYwNzUsIDkzOTk1LCAyODIsIDExOTE3OCwgNjQzNywgNjg4MzAsIDEyMTQ1OSwgCisgICAgOTgwMSwgNjYzOTksIDc0MTc3LCA2Njc5MSwgOTE3OTU5LCAzNDc0LCA2NzI4NywgMCwgNjcyODYsIDYwODEsIDgzNDY5LCAKKyAgICA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAxMjk0MTMsIDkzMDEzLCA4NzUxLCAxMTQ5OSwgCisgICAgNjcyOTcsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgNjcyOTgsIDEyMDI3MiwgNjgwMTcsIDk2NDIsIDEwOTEyLCAKKyAgICA5NTgsIDY3MjkzLCAxMTM4NywgNjcyOTEsIDQ2NjYsIDcwNzkyLCA0OTE1LCA2NzcxNSwgNDY2OSwgMCwgNjgwOTksIAorICAgIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCA3NTA1MywgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCA3NDE3MywgOTE3ODc1LCAKKyAgICA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMTkwODgsIDY3MzEyLCAKKyAgICA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMDA4MzMsIDEyMDI1NywgMTE5MjAyLCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgCisgICAgODM0MzgsIDEyMDI1NSwgMTAxMTAxLCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgNjY2MDIsIAorICAgIDY2Nzg4LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCA3MDM0MCwgNjY3OTMsIDg2MDgsIDQyNzg5LCAKKyAgICA3MDg2OCwgODM0MzYsIDk4MzQ4MCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCisgICAgNjczMDQsIDE2NDEsIDEyNjUyMywgMCwgODk2NiwgMTI4OTAwLCA3NDkxOSwgNTkwOCwgNzE4NzAsIDY3ODUzLCA2NzQ0LCAKKyAgICA2NzMxMCwgMTY5OSwgNjczMDgsIDY3MzA3LCA2NzMxNCwgNjczMTMsIDYzMDYsIDEwMTY5LCA3MTMyNCwgMTE5MjUxLCAKKyAgICAxMDA2OCwgMzc2NiwgMjM4OSwgNjczMDUsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCAKKyAgICA5MTc5NzQsIDk0MzYsIDI1OTksIDk4Mzc0NywgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgMTA1NDEsIAorICAgIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDkxNzgzNywgNDE0MzUsIDQzNTIsIAorICAgIDY3MzI0LCAyNDM1LCA3MTIxMSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAKKyAgICAxMjA0NDcsIDM3NjgsIDQxNzc0LCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCAKKyAgICA0NTY0LCAxMDA0NzAsIDc0NjIzLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDEyNzIwMSwgMCwgNjgyOSwgNTIyNSwgNjY5MDEsIAorICAgIDEyNzM4NSwgMCwgMCwgMTE5NjE1LCA2NzMxOSwgNjczMTgsIDMxNjIsIDQzNTA3LCAxMTc3MSwgNjczMjIsIDY3MzIxLCAKKyAgICA2NzMyMCwgNDI2MTQsIDUzNTMsIDU2MjUsIDc0MTc5LCA2NzMxNSwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgCisgICAgNjQyNzcsIDY5OTQyLCA2OTUyLCA2NzMyOSwgNjczMjgsIDY3MzI3LCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIAorICAgIDU2MzIsIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIAorICAgIDQ3NzIsIDI0MDAsIDU2MjcsIDc0MzY0LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCisgICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTAxMDY1LCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMTk0OTkzLCA1NTQsIAorICAgIDgzNDIyLCAxMTM1OCwgNzExNzIsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIDEyNTExNCwgNzM4OTEsIDgzNDIzLCA4MzAxOSwgCisgICAgNTY5NCwgNzY4OSwgNjY3ODQsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDEyMDk2MiwgOTMwMjksIDY5NzY0LCAwLCAKKyAgICAxMjA2MjUsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI3ODAxLCA2ODExOCwgCisgICAgNjgwOTMsIDExMjksIDcyODQ2LCAxMDA3MDcsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgNzUwNTgsIDY1MjU1LCAKKyAgICA5Mzk5MiwgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDEzNiwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIAorICAgIDk4MzYxMiwgNzc1NiwgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCAKKyAgICA4MTQ1LCAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgCisgICAgNjgxMjEsIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDEwMDQzOSwgCisgICAgMTI5MTc2LCA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgCisgICAgNjQwNTEsIDc4ODY3LCA4MjE0LCA4MzQyMSwgMTEzNzg0LCAxMjAwMzcsIDQxNDU3LCA5ODM0ODEsIDExOTU4OSwgMTk2OSwgCisgICAgMjM4NCwgODA5NywgMTI4MDE5LCA3NDEzLCA2ODAxMiwgNzI4MjAsIDg3NjYsIDQzODY0LCA3MjgyNCwgNTg1NCwgMTI1MDAwLCAKKyAgICAxMDU4MywgMCwgMTE5OTg5LCA3MjgxOSwgMTA0MTYsIDY4MDcwLCAzODcyLCA4MzQyNCwgMTI3Mzk5LCA4NDI5LCAxMjEyMzAsIAorICAgIDExODgwNiwgMjgzOCwgNjQyOSwgMTIxMDc3LCA4MzQyNiwgNzI4MzUsIDEwMDQyMCwgMCwgMTk0NjIwLCA5NDAwNSwgCisgICAgMTEwOTYsIDgzNDIwLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDY3ODE5LCAKKyAgICA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIAorICAgIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCAKKyAgICA4NTU2LCA5MTc5NzUsIDk2NTksIDAsIDEwMDczNiwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgCisgICAgNjgyODgsIDEyODk1OSwgOTE3OTc2LCA3MTQzNywgNzg4ODYsIDk4MzI4OCwgOTgzNDk2LCA3NDIyOSwgNjY1OTMsIDY0MzgsIAorICAgIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIAorICAgIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIDEyNjU0NSwgNjY1ODksIDk4Mzg3NSwgNjMzNCwgMTI4MzY5LCA5MTc5MTksIAorICAgIDE5OTM3LCA5MTc3OTMsIDEzMjIsIDkyMzU5LCA1Njc1LCAyNTQsIDEyNDk2NCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCAKKyAgICA2NDAwMywgNTcxNiwgNDIzMTIsIDEyMDA5MCwgMTAwNTUyLCA2OTcyLCA0MjgyNiwgNzQ0MDksIDQyNDY0LCAxMjA1NjcsIAorICAgIDY2ODk5LCA2NzE1NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMTI4NDM3LCA2NzY4NywgNjU0MjksIDk1MTUsIDQ0MzUsIAorICAgIDk4MzM2NywgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgNDM4NjcsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAKKyAgICAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCA3MTQyOCwgMTIwNzQ4LCAzMTQwLCAxMjcyNzYsIDc5NjAsIAorICAgIDQzMjcxLCAxMjEwOTksIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgNjcyNTQsIDY3MjUzLCA3Njk5LCAKKyAgICAxMjM5MywgNjcyNTcsIDAsIDY3MjU2LCA2NzI1NSwgODIyMywgMCwgNDI2MSwgNzg3ODQsIDEyMDkxMCwgNzQzMDgsIAorICAgIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgMTI1MjUyLCA3Mjc0NCwgNDM0MTksIDcyNzQ4LCA2NDU1NCwgMTA1NzQsIDM4NzgsIAorICAgIDY3NjkxLCA0MjM1MiwgMTc1MiwgNzM3ODUsIDEyODE3MSwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDkxNzg2NSwgMTI1MTQyLCAKKyAgICA2ODAyMSwgNjU5MTksIDEyNzEwMiwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIDEyNTI2OSwgMTQ2NCwgCisgICAgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAzNDIwLCA3NDc4NywgMCwgCisgICAgNzg4NjUsIDkyMjU4LCA2NTU5NywgMTIxNDE2LCA3ODg2MywgMCwgMTMwMiwgNjYyODgsIDc4ODYxLCAxMTkxMzQsIAorICAgIDEyMDI3NCwgNjcxNTIsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDEyMDkyMywgMzk5NSwgNjgzNjAsIDY1NjA4LCAKKyAgICAzNzE0LCA5MjE5MCwgMTIwMDI2LCA2NzI2MiwgMTA5OTksIDExNzUwLCA2NzI1OSwgNDMyNTEsIDY3MjY0LCA0MzMwMSwgMCwgCisgICAgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgMTE5NjQsIDEyMTI2OCwgMTI4MDE0LCA5MjE3MywgMTIwNzEwLCA2ODQ1NSwgCisgICAgNDI4NjMsIDczODM5LCAxMTk5MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAwLCAKKyAgICA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAxMjgyMDgsIDE2NzQsIDkxNzU4MSwgNTgyMywgMTI4NjI1LCAxMjI4MCwgNzAzNjcsIAorICAgIDU0MCwgNzQ1NjQsIDExOTAxNywgNjY0MjIsIDg0MzIsIDc4ODczLCAxMTA3MywgMCwgNjQzMTYsIDAsIDEyMTAwMSwgODIwLCAKICAgICA0MTc0MSwgOTgzNDc3LCAxMjA2NjcsIDEyNDk4MSwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCAKICAgICA2MjI2LCAzNTMsIDEyMzk2LCAxMjExNzYsIDExOTYxMiwgNjQ3NDIsIDEyODY4MiwgNzg4NzksIDk4MzQ3OCwgMTI3OTM4LCAKLSAgICAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzAzNTIsIDE4ODQsIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDk4MzE0MiwgCi0gICAgMTE5NSwgNjQ4OTgsIDc5MjQsIDExOTg3MCwgNDExNTEsIDIwMTAsIDcxNDMwLCA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAwLCAKLSAgICA0MzYwLCAxMjEwMjMsIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCA5MTc2MzEsIDQyNTIxLCA4NTM5LCAxMjg2MDYsIDAsIAotICAgIDExODk4NiwgMTI3MTQ4LCA0Nzg4LCAxMjEzNDUsIDY4MDIzLCA2NTczNCwgOTgzNDU3LCA0Mzc5MCwgMTIwMjc0LCAxMzA3NSwgCi0gICAgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCAxMjcxOTcsIDExODkwMSwgNjg2MzcsIDQxMTM2LCAKLSAgICA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTM3MzEsIDUxMjgsIDQwMzgsIDQxMTQzLCA2NTYwNCwgNjQ4NTksIAotICAgIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA2NzI5NSwgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIDEyNzA5LCA2OTg2LCAKLSAgICA5MjM2NCwgNjgwMTUsIDEyMDUzMywgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIDczODA2LCAxMDI1NCwgCi0gICAgMTEzNjgxLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMTIwODcwLCA2MDcsIDAsIDY4MTgyLCAxMjg4NDYsIDEyOTIzLCAKLSAgICAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgMTI5MTQ5LCA3ODYzOSwgNDA5NzUsIAotICAgIDU4NDAsIDQyODM4LCA3NDk4NywgNDA5NzgsIDEyMTM4NiwgOTI5NDUsIDEyODAyMCwgMTE5ODA5LCAwLCA2NjQ0NCwgCi0gICAgMTA1MzgsIDEyMDgxMCwgMjU1MCwgMTE5ODM2LCA2Nzc5LCAxMjkxMzAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgOTgzNTgyLCAKLSAgICAwLCA1NjE5LCA2NTgyMiwgMTEzNzUxLCAxMTM3MzgsIDc0NTUsIDcxNDI0LCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgCi0gICAgMTA3MjcsIDU2MTUsIDEyMDg3MywgMTIwNTUxLCA0MjM4MCwgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAKLSAgICAxMTM0NywgMCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAxMTM1MCwgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgCi0gICAgOTE0NSwgMTI4MDYwLCAxMzM4LCAxMjA1ODEsIDk4MzE1OCwgMTI3MzksIDQ2MDMsIDMwODQsIDcwNDA4LCA5MjQ4NCwgCi0gICAgOTg1OCwgNjAzNywgOTgzNDY1LCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzcwNCwgMzA4MywgMTAzMjIsIDEyOTA0OCwgCi0gICAgMTI5MDMwLCA3NTAzOCwgNDEwMzYsIDY2ODk3LCAwLCA0MzMyMSwgNjU2MDYsIDEyNzA3MSwgNDEwMzIsIDQyMzg4LCAwLCAKLSAgICA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAxMTkxMDUsIDAsIDQwOTYwLCAxOTQ5MDcsIDY3NzI3LCAxMjUxMDYsIAotICAgIDIyMjMsIDY0OTUyLCAxMDQwMiwgMTI4MzU4LCAxMjUwNDksIDkyMzA0LCAxMDYwMywgMCwgOTgzNDAzLCA3MTQzOCwgMCwgCi0gICAgNjcxNCwgMTAwODMsIDEyNzA2OSwgMTIxMDE5LCA3ODM2NywgNjk5NzYsIDAsIDQzODcyLCA5MDczLCA0MjU4NSwgNjQzMDIsIAotICAgIDEwNzA0LCA2NTAzMCwgNDc4NywgMTI5MDMxLCA3NDgyOSwgMCwgNjU0MjMsIDEyMTMwNiwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgCi0gICAgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMTk0ODcyLCA5MTc2MjQsIDQzNzQwLCAxMjExNjMsIDQwOTY2LCAxMjAwMDksIAotICAgIDEzMjg2LCAzOTk4LCA0MjU5OCwgNDI1OTYsIDUwMywgNzE0MzMsIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCAKLSAgICA0MTk1NCwgOTE3NjE1LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIAotICAgIDQzMzIwLCAxMTkxNTksIDczOTU1LCA5MjMxNSwgNjQ2OCwgNDE5NzYsIDk3MjAsIDc0OTY0LCAxMTE3OSwgNDE5NzAsIAotICAgIDY2MjU1LCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCAKLSAgICA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgCi0gICAgODYxNiwgNDE0NjYsIDQyOTI0LCAyMjI3LCAxMTQ1MCwgOTgzNjkxLCAzNjM4LCAxMjM1NCwgNjcyOTksIDMyMTYsIDgzMDk5LCAKLSAgICAyMzU4LCA4MzA5MiwgODYzMywgNzEyMDEsIDk4Mzc0NSwgMTE5MTgyLCA2OTI0NCwgODMwOTAsIDcwMzc1LCAxMTc1OSwgCi0gICAgMTk0OTAzLCA2MzY4LCA3NDgyMywgNjczMDMsIDQxNDIzLCA4MDc4LCAxMDUwNCwgODMxMDQsIDQxNjk4LCA0MjIzNywgCi0gICAgOTgzNDU0LCA3MDAyLCA4MzEwMSwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDAsIDcxNDY3LCA0MTA1MCwgNDE0NzMsIAorICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgMTk1MDU4LCAKKyAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIAorICAgIDEyMDcxMiwgNDM2MCwgMTIxMDIzLCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgOTE3NjMxLCA0MjUyMSwgODUzOSwgCisgICAgMTI4NjA2LCAwLCAxMTg5ODYsIDEyNzE0OCwgNDc4OCwgMTIxMzQ1LCA2ODAyMywgNjU3MzQsIDk4MzQ1NywgNDM3OTAsIAorICAgIDExOTg2OSwgMTMwNzUsIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgNzI3NjIsIDExODkwMSwgCisgICAgNjg2MzcsIDQxMTM2LCA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTM3MzEsIDUxMjgsIDQwMzgsIDQxMTQzLCAKKyAgICA2NTYwNCwgNjQ4NTksIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA2NzI5NSwgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAorICAgIDEyNzA5LCA2OTg2LCA2Njc2MSwgNjgwMTUsIDEyMDUzMywgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIAorICAgIDczODA2LCAxMDI1NCwgMTEzNjgxLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMTIwODcwLCA2MDcsIDk4MzYyMSwgCisgICAgNjgxODIsIDEyODg0NiwgMTI5MjMsIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAKKyAgICAxMjkxNDksIDc4NjM5LCA0MDk3NSwgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgNzgxNzQsIDkyOTQ1LCAxMjgwMjAsIAorICAgIDExOTgwOSwgMTIwODkxLCA2NjQ0NCwgMTA1MzgsIDEyMDgxMCwgMjU1MCwgMTE5ODM2LCA2Nzc5LCAxMjkwOTEsIDkxNzgxNSwgCisgICAgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIDExOTgzOCwgNTYxOSwgNjU4MjIsIDExMzc1MSwgMTEzNzM4LCA3NDU1LCAKKyAgICA3MTQyNCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAxMjA4NzMsIDEyMDU1MSwgNDIzODAsIAorICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDcyNzYwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIAorICAgIDExMzUwLCA1NjE3LCA3Mjk5LCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCA0MTM0NCwgMTMzOCwgMTIwNTgxLCAKKyAgICA5ODMxNTgsIDEyNzM5LCA0NjAzLCAzMDg0LCA3MDQwOCwgOTI0ODQsIDk4NTgsIDYwMzcsIDEwMDM3NiwgMzk3NCwgNzgyMTMsIAorICAgIDEwMjkwLCA5ODM3MDQsIDMwODMsIDEwMzIyLCAxMjkwNDgsIDEyOTAzMCwgNzUwMzgsIDQxMDM2LCA2Njg5NywgMTAwMzc0LCAKKyAgICA0MzMyMSwgNjU2MDYsIDEyNzA3MSwgNDEwMzIsIDQyMzg4LCAxMDA2MTksIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIAorICAgIDExOTEwNSwgOTE3OTY5LCA0MDk2MCwgMTk0OTA3LCA2NzcyNywgMTI1MTA2LCAyMjIzLCA2NDk1MiwgMTA0MDIsIDExOTIxMywgCisgICAgMTI1MDQ5LCA5MjMwNCwgMTA2MDMsIDAsIDk4MzQwMywgNzE0MzgsIDEyODUwMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCisgICAgMTIxMDE5LCA3ODM2NywgNjk5NzYsIDk4MzY1NSwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCAKKyAgICA0Nzg3LCAxMjEyNzksIDc0ODI5LCAwLCA2NTQyMywgNzQ5ODgsIDEyODExOCwgOTU3MCwgNTUyNjAsIDk1MjUsIDI2ODksIAorICAgIDkxNzYyNiwgNjU0MjYsIDE5NDg3MiwgNjY3NDAsIDQzNzQwLCAxMjExNjMsIDQwOTY2LCAxMjAwMDksIDEzMjg2LCAzOTk4LCAKKyAgICA0MjU5OCwgNDI1OTYsIDUwMywgNzE0MzMsIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCA0MTk1NCwgCisgICAgOTE3NjE1LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIDQzMzIwLCAKKyAgICA3Mjc1NiwgNjY3NTcsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgNjYyNTUsIDU4MzYsIAorICAgIDEyMzU4LCAxMjk0MjEsIDQzNTUsIDkwNDgsIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIAorICAgIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIAorICAgIDQxNDY2LCA0MjkyNCwgMjIyNywgMTE0NTAsIDEyMDczNCwgMzYzOCwgMTIzNTQsIDY3Mjk5LCAzMjE2LCA4MzA5OSwgMjM1OCwgCisgICAgODMwOTIsIDg2MzMsIDcxMjAxLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDgzMDkwLCA3MDM3NSwgMTE3NTksIDE5NDkwMywgCisgICAgNjM2OCwgNzI4MzQsIDY3MzAzLCA0MTQyMywgODA3OCwgMTA1MDQsIDgzMTA0LCA0MTY5OCwgNDIyMzcsIDk4MzQ1NCwgCisgICAgNzAwMiwgODMxMDEsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAxMjkzNjIsIDcxNDY3LCA0MTA1MCwgODg3MiwgCiAgICAgMTA0NjYsIDEzMDk5LCA3MTQ0NSwgNzAzNzEsIDEyMDg5NywgNjQzNSwgNzQzMzEsIDExMzYyLCAxMjg5NzMsIDgzMDg4LCAKICAgICA2NTM4MiwgOTI3NzAsIDQxNDIwLCA4MzA4MywgMzYyNSwgNzQ5MTUsIDQxNDA5LCA3MTQ0MSwgNjk2MzksIDIwNDEsIDkxNzgsIAotICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCAwLCAxMjg1NTcsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCi0gICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAotICAgIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNjg4NTAsIDc0OTAxLCAwLCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgCi0gICAgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIAotICAgIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCA5ODMxMTksIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCA0MTQ2MSwgCi0gICAgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCi0gICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIDEyMTAwNywgOTA5NCwgOTgzOTI2LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAKLSAgICAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgCi0gICAgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDcxNDM0LCAyOTExLCA4MzA3NCwgCi0gICAgNDExNzgsIDU0MjcsIDY0ODIzLCA4MzA2MiwgODMwNjYsIDM3ODcsIDQxMTc0LCA4MzA1NSwgNDE0NTgsIDY3MTQ3LCAKLSAgICA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgNjgwNTYsIAotICAgIDEyMTQ4MCwgNDM0NDAsIDc0NTM5LCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCA5MTc4MDUsIDEyMDYwMCwgNDE0NTYsIDY3Njk0LCAKLSAgICAxNTk5LCAxMTMzMywgODMxMzksIDY3MDMsIDg1MTMsIDgzMTM0LCAxNjEzLCA4MzEzNiwgNjg0NTYsIDEyNTk4LCA4MzEzMSwgCi0gICAgODMxMzIsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDY3MTQ0LCA5OTA1LCAKLSAgICA4MzE0NSwgNjU3MzAsIDgzMTQ3LCAxMjAzNzQsIDg0MjcsIDgzMTQyLCA1NTI0NiwgMTIwMzc2LCA0Mjg5NSwgMTE0OTcsIAotICAgIDY0Njg3LCA3NDAwOCwgNDI1OTIsIDM4NzEsIDk4MzU4NCwgMTI4MzA1LCA5MTExLCA1NzQxLCA4MzMyNSwgMTIwOTg3LCAKLSAgICAxMjAzNjYsIDExOTExMSwgMTExNTAsIDAsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgCi0gICAgNDE1ODcsIDcwMzkxLCA4MzEyMywgNzExMDgsIDQyMTEzLCA5ODM1ODgsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgCi0gICAgNjUyOTgsIDY1NzIzLCA2ODI4OSwgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAKLSAgICA2NDY3MSwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIDk4MzExMCwgNzg3NSwgOTgzNjY5LCA0MTU5OCwgMzk5MywgCi0gICAgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjcwNzUsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMCwgCi0gICAgNzAzMzEsIDE5NTAxMiwgMCwgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCA4MzAzNSwgMTI4MTkyLCAxNjg3LCAxMjA1MDMsIAotICAgIDkxNzgxNywgMCwgNzgxOTQsIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDczNzQ3LCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIAotICAgIDc4NzU2LCAxMjcxMDgsIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDkxNzg2NywgMCwgODI2NiwgCi0gICAgNDEwMDYsIDY1NzIyLCA4MzA0MSwgMTA3MTAsIDc0MDQ1LCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCA4MzMxMywgCi0gICAgMTI4Nzc4LCA3MTg4OSwgNjc4NTcsIDEyMDY4NywgMCwgOTI5NTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCAKLSAgICA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIAotICAgIDgzMTIwLCAxMTQxMywgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgCi0gICAgOTIyOTMsIDQwOTg0LCA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDk4MzA5MywgMCwgCi0gICAgNjgzMTMsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCi0gICAgNDEyODcsIDkyNjEwLCAwLCA3MTkxNywgNDIyMTksIDY4MDg2LCAxMjAzMjcsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAKLSAgICAxMjA4MjMsIDEyNjU1MywgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgCi0gICAgMTE0NTEsIDgyOTk1LCA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAKLSAgICAxMzEzMywgNjQzNjgsIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIAotICAgIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIAotICAgIDc4MTEyLCAxMDk4MiwgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgMCwgCi0gICAgNTgwNCwgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgCi0gICAgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjg1MTIsIAotICAgIDEyODYyOSwgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAKLSAgICAxMjY3NSwgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgCi0gICAgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIAotICAgIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCi0gICAgNjQ3OTksIDQyMDQ3LCAwLCAxOTQ4MjAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCA5ODM3NjAsIDc0MzAwLCAwLCAKLSAgICA2ODA4NywgNzQ4NDAsIDEyNjQ3NCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIDQzNDg2LCAKLSAgICA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCAwLCAwLCAwLCAwLCAwLCAxOTQ4MzAsIDY2MzE3LCAKLSAgICA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgODI5ODgsIDAsIDk2MSwgCi0gICAgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI1MDgwLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDk4MzEzMCwgODkxLCAKLSAgICAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAxMjA4NzgsIDAsIDAsIAotICAgIDE5NDgyNiwgOTI2ODgsIDM1NjYsIDIzMjIsIDEyMDM3MSwgNzA4MzEsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgCi0gICAgMzU0NywgMCwgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgCi0gICAgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIDc0NCwgOTI4ODMsIDExMzczOSwgMCwgNjU4MjMsIAotICAgIDEyNzgyNiwgMTExODIsIDM1NTEsIDkyOTM4LCA5ODM4OTEsIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgCi0gICAgNjUxMzYsIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgMTIwODc2LCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIAotICAgIDc0NTc5LCA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAKLSAgICAxMjA1ODAsIDk4MzY5NiwgMTI1MTM1LCA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAKLSAgICAxMjgwMjcsIDY3NjczLCAyMjE0LCA4NzU0LCAxMjcwNTEsIDEyMDIzNywgMjEzNywgNDMwODEsIDE5NDY2MywgMTE5MTE0LCAKLSAgICA5MTM2LCA2Njg4OSwgNDQwMSwgNDEyODAsIDcwODAxLCA4OTc0LCAyMzA4LCAxOTQ3NTAsIDc0MTQ5LCAxMjgzMjcsIDIzMTgsIAotICAgIDk4MzE4MywgNjYzNjEsIDgxOTgsIDY1NjI2LCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA0MzkzMSwgMTIwODI3LCA0MzkzMCwgCi0gICAgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIAotICAgIDEyODQwMywgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyMDAwMiwgMTI5MTUxLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCAKLSAgICA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDAsIAotICAgIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIAotICAgIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCAKLSAgICA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIAotICAgIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDcxMzE0LCAwLCA3ODEwOSwgCi0gICAgMTI5MTc3LCAxOTk0MiwgOTgzMjQ0LCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAKLSAgICA5NDA2NCwgOTgzMDcxLCAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIDAsIDM1OTksIAotICAgIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgNjY2OTcsIDAsIDExNjg0LCAwLCA5MjQ4NiwgCi0gICAgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCA3NDkyNywgNDIwNDYsIDc0MTU3LCA0MDM2LCAxMjY0ODEsIDAsIAotICAgIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAKLSAgICAwLCAwLCAxMjUxMTcsIDAsIDkxNzU0MiwgNzM4MTIsIDgzMDUzLCA2NTM5LCA5Mjk0OCwgMTI2NjA3LCAxMjA3MDIsIAotICAgIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDkxNzk3OSwgCi0gICAgNzg4OTEsIDAsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDEyODk3MCwgCi0gICAgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCAKLSAgICA2NTEyNiwgNjgyNTMsIDEyNzAwNCwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAKLSAgICAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIAotICAgIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAwLCA2ODIyNCwgMTIwODcyLCA0MTc2NCwgNzk1NywgCi0gICAgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgOTgzOTE4LCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCAKLSAgICA3MDg1MywgMTE5MDI4LCAwLCAxMjgxMjIsIDEyODQ0MiwgMjM0MSwgODQ1MCwgODQ4NCwgODQ3NCwgMTk0ODg0LCA2ODMyMiwgCi0gICAgNzAwNzksIDg0NjEsIDY3NzIxLCAxMjE1MywgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIAotICAgIDQzODQ3LCAwLCA2ODEsIDk4MzI1NCwgNzAzLCAxMjc1MTgsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIAotICAgIDkyMjg4LCA3MDUxNCwgOTgzOTAwLCA4MzE3NSwgNzE0MzYsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDEyODk2OCwgOTE3OTg5LCAKLSAgICA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCAKLSAgICA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgCi0gICAgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIAotICAgIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI4MTI4LCA5ODM1OTUsIAotICAgIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgOTgzMzM2LCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIDEwNDEyLCAKLSAgICA4NzU1LCAxMTkxNTIsIDAsIDU3MTgsIDEzMjIxLCAwLCAwLCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIAotICAgIDY4NiwgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKLSAgICA2NTExOCwgNjgwMjksIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjg5MDIsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2NDgsIAotICAgIDY4MDQ0LCA2NTQ1NSwgMCwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIDY2NjI0LCAxMjY1NzgsIAotICAgIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDExODk0NSwgOTk4NCwgNzM4NTEsIDMwMTAsIAotICAgIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMjc5MTAsIDExNDc5LCAxMjEzNTUsIDEyMDM1NiwgCi0gICAgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgMTI0OTQ2LCA0MDUyLCAKLSAgICAxMTM2NzMsIDc2MjYsIDAsIDEyMDkwNywgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDEyNzU0NCwgMCwgNDM3MDcsIDc0MTI3LCAKLSAgICAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIAotICAgIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCAKLSAgICA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCAwLCAKLSAgICA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDEyMTI3MiwgMCwgNDM0NDYsIDAsIDY2NTEzLCA2MjU2LCAKLSAgICA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgCi0gICAgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIAotICAgIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIAotICAgIDEyNzIxNSwgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI4MzY2LCAKLSAgICA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAKLSAgICAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgCi0gICAgMTI3MzEyLCAxMjgyMzAsIDczODczLCA5ODM3MTAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCAKLSAgICA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMTI3Nzg1LCA5OTU3LCAxMjgyODUsIAotICAgIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMjA0MjQsIDE1MjEsIAotICAgIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDAsIDY1NzY5LCAKLSAgICA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCAKLSAgICA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIDIyODMsIDkyOTMxLCAwLCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCAKLSAgICAwLCA1NTIzMSwgNDExMDMsIDkyMjU2LCA2NDU2NSwgNDc3MywgMTIwODQ2LCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCAKLSAgICA5MTc1NjcsIDg3MzEsIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDEyNjYwMCwgNDc3NCwgMzAxOSwgCi0gICAgOTk5NywgMTI4MzQsIDAsIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDc4NTU2LCAwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCAKLSAgICA0NzY4LCAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIAotICAgIDExODk0NiwgMTIxMDk3LCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMCwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMCwgCi0gICAgMTAxMTYsIDk4NzcsIDkyMzI5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAwLCA3ODA5MCwgODI0MywgCi0gICAgMjQyNywgMTI4MTQxLCA3MDkzLCAwLCAxMTU4NSwgMTk1MDAzLCA5OTYyLCA4Mjk5MCwgMTIyMjMsIDEyODQ4NSwgOTI0MzAsIAotICAgIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCA4MzM4OSwgNzQ0MTksIDAsIDE5NDY4NiwgCi0gICAgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgCi0gICAgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCA5MTc5NjYsIDY1NTM2LCA4MzI5NCwgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIAotICAgIDExODgyNCwgMTI4OTc2LCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgCi0gICAgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgNzUwMTgsIDEyODU3NiwgNzQ5MjMsIDQyMjU3LCA1Njk2LCA5MjY3NywgCi0gICAgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAKLSAgICAxMjg3MTksIDE0MjYsIDY4MjE3LCA5ODM2MTQsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgCi0gICAgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCAKLSAgICA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIAotICAgIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAxOTQ5ODksIDc4ODgzLCAwLCA3ODIxMiwgCi0gICAgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgNjQ3NDgsIDEyMDkyMCwgNzg3MzMsIDEwMjA1LCAKLSAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDEyODAwOCwgNzQwNTEsIDEyODkwMSwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAKLSAgICAxMjUwMzcsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIAotICAgIDc4MjA4LCAxMTQwLCA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDEyODY0NCwgNjgzMjYsIDE5NDkxMSwgMTgxNSwgCi0gICAgMTk5MTAsIDg5MCwgMTI0OTM1LCAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDEyMTM5OCwgNDQxMCwgMTA0MSwgMTA1NzYsIAotICAgIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIDEyODM0NywgMCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIAotICAgIDEyNzgxOSwgOTE3ODExLCAwLCAzMjk4LCA1Mzc1LCAxMDE0MiwgMCwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgCi0gICAgOTgzMTQ3LCA2OTg5OSwgMTk0OTM4LCAwLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjcsIDEyODY1MywgNTE3MywgNjUzNDgsIAotICAgIDUyNywgMTIxMTc0LCAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAKLSAgICAyMzI5LCA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDgzNDYwLCAwLCAxMTM3MDUsIAotICAgIDkxNzkxMCwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMCwgMTE5ODQwLCA3MzgyMiwgCi0gICAgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCA2MzY0LCA5NTYsIAotICAgIDExMzc5MiwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDAsIDAsIDk4MzczOSwgNjY0NDksIDEzMjYzLCA3NDI4MSwgCi0gICAgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDEyMDU2NCwgMCwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgNDEyNzYsIDEyODM2MywgMCwgCi0gICAgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAxMTgyOSwgCi0gICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgNzAzMjksIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgMTIwNzYxLCA3MDk4LCAKLSAgICAxMjUwNzEsIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDEyNzIzOSwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIAotICAgIDY2NTcxLCA3ODQ3MiwgNzEyMDcsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzMzMwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCAKLSAgICA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIAotICAgIDAsIDY0NDc3LCA5MTc4NTMsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgMCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgCi0gICAgNzQzNDksIDY2NDc5LCA2NzY4OSwgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCAKLSAgICA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgNDM1MTQsIDEyMTMwLCA5ODMzMDgsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAKLSAgICAxMjc4NTAsIDk4MzE0NCwgMTI3ODI4LCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCA4MzM0NSwgNzUwNjUsIDAsIDYzNTgsIAotICAgIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEyNzc3MywgCi0gICAgNDM2ODUsIDc0MzA3LCAwLCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTIwNDEzLCAKLSAgICA5MjE5MiwgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODM2NDQsIDE5NDk1OSwgMTE5MTg3LCAKLSAgICAyMTM1LCAxMTgzNiwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgNDM4NTQsIAotICAgIDcxOTEzLCA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDc4NjIwLCAxMjExNzEsIAotICAgIDY4ODMzLCA5MjI1NCwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCAKLSAgICA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDY4Nzc0LCA2NTcwMiwgNjg3NzAsIDEyMDgwMSwgNjUyNTEsIAotICAgIDY4MjI4LCA2NTcxMCwgMTI4Mzk5LCAxMjg0MjksIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIAotICAgIDEwOTY2LCAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAKLSAgICAxMDg0NCwgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAxMTk5OTgsIDEyMTA3NSwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCi0gICAgMTE5OTk5LCAwLCA3Mzk1LCAxMjc3ODMsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMTk0NjQwLCAzMDE1LCAKKyAgICA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCA3NDkyNCwgOTE3Nzc3LCAxMjg1NTcsIDQxNDI0LCAxMTk1NjMsIDEyMDU0NiwgCisgICAgOTgzODg4LCAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAxMjgyNjEsIDEyMTAyLCAxMTk2NjIsIDQxNDAxLCAxMjg5MzIsIAorICAgIDEyNzUzOCwgMTEzNzY3LCA3ODI1MSwgMTI0OTQzLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA2ODg1MCwgNzQ5MDEsIAorICAgIDEyMTAwNSwgMTI3OTUxLCA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgMTEzNzgxLCAxMDU5OCwgNzQxMCwgMjY2OSwgCisgICAgOTAzLCAxOTUwOTEsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCAKKyAgICA3ODE4NSwgMTE3MzIsIDEyODUxMiwgNzI3OTcsIDQxNDQ4LCA0MTQ2MSwgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgCisgICAgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIAorICAgIDEyMTAwNywgOTA5NCwgOTE3Nzk0LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgCisgICAgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCAKKyAgICA3ODYxOCwgNjk3OTMsIDE4NzgsIDEyODY0MSwgNzE0MzQsIDI5MTEsIDcyNzU4LCA0MTE3OCwgNTQyNywgNjQ4MjMsIAorICAgIDc4NjE1LCA4MzA2NiwgMzc4NywgNDExNzQsIDgzMDU1LCA0MTQ1OCwgNjcxNDcsIDQxNDYzLCA0MjQxMywgMTEyOTIsIAorICAgIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDY5OTIzLCA2MDc0LCA5NjE4LCA2ODA1NiwgMTIxNDgwLCA0MzQ0MCwgNzQ1MzksIAorICAgIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDkxNzgwNSwgMTIwNjAwLCA0MTQ1NiwgNjc2OTQsIDE1OTksIDExMzMzLCA4MzEzOSwgCisgICAgNjcwMywgODUxMywgODMxMzQsIDE2MTMsIDgzMTM2LCA2ODQ1NiwgMTI1OTgsIDgzMTMxLCA4MzEzMiwgNzg3NDUsIDc0NTAwLCAKKyAgICA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIDgzMTQ1LCA2NTczMCwgODMxNDcsIAorICAgIDEyMDM3NCwgODQyNywgODMxNDIsIDU1MjQ2LCAxMjAzNzYsIDQyODk1LCAxMTQ5NywgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgCisgICAgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDgzMzI1LCAxMjA5ODcsIDEyMDM2NiwgMTE5MTExLCAxMTE1MCwgCisgICAgMTk0ODc2LCAxMjAzNjgsIDEyODg1NSwgMTE2NDgsIDgzMTI2LCA4MzEyNywgODMxMjgsIDQxNTg3LCA3MDM5MSwgODMxMjMsIAorICAgIDcxMTA4LCA0MjExMywgOTE3OTU2LCAxMjcxNTUsIDEyMTcyLCA4MzEyMSwgNzE0NDMsIDY1Mjk4LCA2NTcyMywgNjgyODksIAorICAgIDczODcxLCA2NTcyNCwgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgNjQ2NzEsIDQyMTE4LCA3MzgzMCwgCisgICAgNjYwNDIsIDEwMzU1LCAxMjE1MDEsIDc4NzUsIDEwMDM5MCwgNDE1OTgsIDM5OTMsIDEyMTI2OSwgMTU0NSwgNDA5NzEsIAorICAgIDUzNiwgNzI4NzQsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMTIxMjU0LCA3MDMzMSwgMTk1MDEyLCAwLCAKKyAgICA5NDA2NSwgMCwgNDEzNzUsIDU0MDIsIDgzMDM1LCAxMjgxOTIsIDE2ODcsIDEyMDUwMywgMTI4NTU5LCAwLCA3ODE5NCwgCisgICAgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDEyNzEwOCwgCisgICAgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgOTE3ODY3LCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIAorICAgIDgzMDQxLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDgzMzEzLCA3MDcyOSwgNzE4ODksIAorICAgIDY3ODU3LCAxMDA1ODIsIDAsIDkyNDE4LCAxMTc1NSwgNjYzMDUsIDY4MzMyLCAwLCAxMDkxNywgOTM5NzksIDAsIDExMjcyLCAKKyAgICAyMDQwLCA0MTI0NywgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDgzMTE5LCA4MzEyMCwgMTE0MTMsIAorICAgIDEyNjU4MywgODMxMTUsIDUyODMsIDE1ODYsIDQ5NzgsIDY4MDUwLCAxOTg0LCAxMTgzMCwgNDM4MTksIDkyMjkzLCA0MDk4NCwgCisgICAgNDI5MDQsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAxOTQ4ODgsIDQxNjYzLCAxMjc4OTUsIDk4MzA0NSwgNjgzMTMsIDkyMzcsIAorICAgIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgNDEyODcsIDkyNjEwLCAKKyAgICA5ODMyOTksIDcxOTE3LCA0MjIxOSwgNjgwODYsIDEyMDMyNywgNDE5ODcsIDQxNjc2LCAxMjUyMTksIDcyODQwLCAxMjY1NTMsIAorICAgIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCA4Mjk5NSwgCisgICAgNzg4NTUsIDQyNjMxLCAyMzU5LCA3MTg5MCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgMTMxMzMsIDY0MzY4LCAKKyAgICAxMjcyNzAsIDEyMDkyNSwgNjYyNzIsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAorICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDEyMDg3MSwgNDI4LCA5NjIwLCAxNDY2LCA3ODExMiwgMTA5ODIsIAorICAgIDExMzc4NSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAxMjc5OTMsIDAsIDk4MzE1MSwgNTgwNCwgCisgICAgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgNzgxMzcsIAorICAgIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjgzMTksIDEyODYyOSwgCisgICAgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAxMjY3NSwgCisgICAgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIAorICAgIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIDQxNjQsIAorICAgIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCisgICAgNjQ3OTksIDQyMDQ3LCAxMjk0MTQsIDE5NDgyMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIDEyNjYxNiwgNzQzMDAsIAorICAgIDAsIDY4MDg3LCA3NDg0MCwgMTI2NDc0LCA5MTc1MzksIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCA5NjgzLCAKKyAgICA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDk4Mzk0MSwgNjYzMzAsIDEyMTIzOCwgNzI4NjksIDEyMDU2MiwgMTE5NTU4LCAwLCAKKyAgICAwLCAxMjc4MzEsIDY2MzE3LCA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgCisgICAgODI5ODgsIDE5NDczOCwgOTYxLCA2NDMwNywgNjYzMjQsIDY0OTA2LCAxMjUwODAsIDMxMDYsIDY1OTE3LCA0MTI4NCwgCisgICAgMTY5NiwgOTgzMTMwLCA4OTEsIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgCisgICAgMTA5MzYsIDExOTI1NSwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIAorICAgIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCA5ODM3MTcsIDAsIDExMzc0NiwgOTgzNDAwLCA0MzIxNiwgNjA4OSwgCisgICAgNzg2ODIsIDY4NDkwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTAwMzg0LCAxMTkyMjQsIDQyMzc0LCA5ODM1NzEsIAorICAgIDc0NCwgOTI4ODMsIDExMzczOSwgMTk0OTI0LCA2NTgyMywgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDk4Mzg5MSwgCisgICAgNDYyMywgNTUyNjgsIDEyODczOCwgNDU5OCwgOTgzMTYyLCA2NTEzNiwgMTI3MTM2LCAwLCAxMjgxNjksIDEwODUxLCAKKyAgICAxMjA4NzYsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgNzQ1NzksIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCAKKyAgICA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgOTgzNjk2LCAxMjUxMzUsIDYxNzcsIDkwMjAsIAorICAgIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDIyMTQsIDg3NTQsIDEyMjg5NCwgCisgICAgMTAwNjg5LCAyMTM3LCA0MzA4MSwgMTk0NjYzLCAxMTkxMTQsIDkxMzYsIDY2ODg5LCA0NDAxLCA0MTI4MCwgNzA4MDEsIAorICAgIDg5NzQsIDIzMDgsIDE5NDc1MCwgNzQxNDksIDEwMTA1MCwgMjMxOCwgMTIwNjkzLCA2NjM2MSwgODE5OCwgNjU2MjYsIAorICAgIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDQzOTMxLCAxMjA4MjcsIDQzOTMwLCA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIAorICAgIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDEyODQ4MiwgMTI4NDAzLCA3Mjg2MSwgMTA4NzQsIDY1NTA1LCAKKyAgICAxMjAwMDIsIDcyNzg1LCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIAorICAgIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDEyODkzNywgNzAwODgsIDc0MTQ4LCAwLCA3MDQxOSwgCisgICAgNzI4NjgsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDY2NDA0LCA5NDA5NiwgNzQ0MjIsIDQxMTQ4LCA4NjgzLCAKKyAgICA3NTk0LCAxMTM2ODYsIDc1MDMzLCAxMTkwOTAsIDEwODY5LCA0MzQ1OCwgNDExNDYsIDkyNDA3LCAxMTQ0MSwgMTIxNDU2LCAKKyAgICAzNTEyLCAxMTk2MzMsIDkyOTY1LCA4MTAzLCA3ODE0MCwgMTIwODQ3LCA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgCisgICAgMTI5MDU1LCA2OTc0MiwgNDE1NDQsIDY1MTQ2LCA2NjgwMywgMCwgNzgxMDksIDEyOTE3NywgMTk5NDIsIDEyNjYxOCwgCisgICAgMTE4OTA4LCA3OTg4LCAxMDQzNiwgNzQyNzMsIDMyNzEsIDczODA0LCA2NDcxMSwgMTIwODI0LCA5NDA2NCwgOTgzMDcxLCAKKyAgICAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDEyMDg1OSwgMTA5NSwgMCwgMzU5OSwgMTI3Nzc0LCAwLCAKKyAgICAxMjg4NjEsIDg1MTQsIDAsIDkxNzU3OSwgMCwgNzQzNDYsIDY2Njk3LCAxMjgzODUsIDExNjg0LCA5ODMxNDgsIDkyNDg2LCAKKyAgICA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDc0OTI3LCA0MjA0NiwgNzI4NjIsIDQwMzYsIDEyNjQ4MSwgCisgICAgMTI5MzczLCAxMjgyMTMsIDE5NDg2MSwgODMzNTUsIDExOTU0LCA3MDM0OCwgMTQ1MCwgMTI5ODYsIDEzNDAsIDAsIDY1NDQxLCAKKyAgICA5MjcyMiwgMCwgMTI3MDYyLCA3Mjg2NSwgMTAwODE4LCA5MTc1NDIsIDczODEyLCA3Mjg3NSwgNjUzOSwgNzM4MzYsIAorICAgIDEyNjYwNywgMTIwNzAyLCA5MjM5MCwgMCwgMTIwNDkyLCA0MTE5MCwgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgCisgICAgNDI5LCAxMjI5MDMsIDc4ODkxLCAxMjc4NzQsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgCisgICAgNzgxNzgsIDAsIDEyODk3MCwgNjY3ODYsIDAsIDQ5MTksIDEwNTkwLCAxMjgwOTMsIDc3NTUsIDAsIDkyOTQyLCA2NDU0OCwgCisgICAgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDY4MjUzLCAxMjA2ODksIDk4MzYxNiwgMTIxODgsIDk4MzY2OCwgMTYxNywgCisgICAgODA1MCwgMTk1MDMxLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDk4MzkxMCwgNjU3NjgsIAorICAgIDYzNTIsIDQxODkyLCAxMjUxODYsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDEyMTIwOCwgCisgICAgMCwgNDI5MjYsIDEyMDg3MiwgNDE3NjQsIDc5NTcsIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDM1NTksIAorICAgIDExOTE2MiwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgNzA4NTMsIDExMzcyMCwgMCwgMTI4MTIyLCA3Mjc2MSwgMjM0MSwgCisgICAgODQ1MCwgODQ4NCwgODQ3NCwgNzI4ODUsIDY4MzIyLCA3MDA3OSwgODQ2MSwgNjc3MjEsIDEyMTUzLCAxMjc5OSwgMCwgCisgICAgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgNDM4NDcsIDAsIDY4MSwgOTgzMjU0LCA3MDMsIDEyNzUxOCwgCisgICAgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgOTIyODgsIDcwNTE0LCAxMjcwNTksIDgzMTc1LCA3MTQzNiwgCisgICAgMTEzMzgsIDcyNzkwLCAzMjc2LCAxMjg5NjgsIDEyMDIzMywgNjU5MjgsIDAsIDEyMTM2NywgNjUwMjEsIDY0Nzk1LCAKKyAgICA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIDAsIDk4MzQ5MCwgNjg0NzgsIDE2MywgNTc2LCAKKyAgICA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgCisgICAgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCAKKyAgICA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI3MzA5LCA5ODM1OTUsIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAKKyAgICAxMTAzMSwgMTI1MjU1LCA0MzE1NywgMTAwNDUxLCA4OTQ2LCAxMDM0OCwgMTA0MTIsIDg3NTUsIDExOTE1MiwgNjczNDMsIAorICAgIDU3MTgsIDEzMjIxLCA5ODMzNDEsIDk4MzI3OCwgNzgxMzUsIDcwNTE1LCA5MTc2MTYsIDg4MTAsIDc0NDk5LCA2ODYsIAorICAgIDE5NDc3NiwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAxMjc1MjMsIDEyMDQwLCA2NTY4OSwgCisgICAgMTAxMjgsIDY1MTE4LCA2ODAyOSwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDEyODEzOCwgMjQwMSwgNjgxNDQsIDg3OTIsIAorICAgIDk4MzE3OSwgNjgwNDQsIDY1NDU1LCAxMjkzMTUsIDc0MzI4LCAwLCA3NDU2MSwgMTIwNzYzLCAxMjg4NiwgMTIwOTUyLCAKKyAgICA2NjYyNCwgMTI2NTc4LCA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzEyMTAsIDc4NjAyLCA3ODc3NCwgOTk4NCwgCisgICAgNzM4NTEsIDMwMTAsIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMDA4MTQsIDExNDc5LCAKKyAgICAxMjEzNTUsIDEyMDM1NiwgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCAKKyAgICA1NTIzMCwgMTAwNDU0LCA0MDUyLCAxMTM2NzMsIDc2MjYsIDk4Mzg5MCwgMTIwOTA3LCAxMDQ1LCAxOTUwODYsIDU2MzEsIAorICAgIDQxMTEzLCAxMjA0OTQsIDAsIDQzNzA3LCA3NDEyNywgMCwgOTgzNzE4LCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgCisgICAgOTgzMTk1LCAxMjY1NjEsIDY5MjIxLCAxMDI1LCAxMjcyNzcsIDQyNjI1LCA3MDMyNSwgNzgwODQsIDQxNDQzLCAxMjkxMzAsIAorICAgIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIAorICAgIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCA5ODMwNjcsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgCisgICAgMTIxMjcyLCAwLCA0MzQ0NiwgOTgzMzQ2LCA2NjUxMywgNjI1NiwgOTE3ODA3LCA1NzksIDU1MjE4LCAxMDIwNiwgNzgxOTUsIAorICAgIDYzNzUsIDI2NzMsIDk4Mzg4NiwgMTE4MTQsIDAsIDQ0ODgsIDEyODcxNiwgMTIwNTU0LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgCisgICAgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCAKKyAgICA3ODI1NywgNzIwMywgMTI0OTk4LCA2MTQsIDcwMzYxLCAxMjY2MzMsIDEyMDYxNSwgMTE5NjIyLCA3ODI2MiwgMTI3MjcxLCAKKyAgICAxMjczMjMsIDAsIDQzMTIxLCAxMjcyMTEsIDEyNzAwMywgOTI1MTMsIDEwNTAsIDc1NDksIDEyMTI2MCwgODI5OTQsIDkzMTQsIAorICAgIDcwMzY1LCA5Mjg5OCwgNjgwMzksIDEyNzA2MSwgMTAwNTcsIDcwNDM0LCAxMjczMTMsIDEyODU3NywgNjY1MDQsIDEyMDk2MywgCisgICAgODI5OTIsIDIzMDcsIDEyODQ1NiwgNjQzMzMsIDEyNzMxMiwgMTE5OTAwLCA3Mzg3MywgOTgzMTI2LCA5NDAzNSwgOTgzMDgzLCAKKyAgICAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDEyODgyNiwgMTMwODUsIAorICAgIDkyMzMsIDc0MjE2LCA5ODM1NjYsIDEwMTA4OSwgOTk1NywgMTI1MjEzLCA2NjQ0NywgODA0NiwgNjQ5NjMsIDY1Nzc3LCAKKyAgICAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMTAwNDY2LCAxNTIxLCA5ODk2LCA5Mzk2NSwgMTA0ODcsIDY5ODc4LCAKKyAgICAxMjUyNywgNjg3MzcsIDc5NzAsIDEyNTA3MywgMTI4NjYwLCA3MzAzLCA2NTc2OSwgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIAorICAgIDEyMTQyOSwgMCwgNTIzNywgNjk3MTQsIDY4NzU2LCAxMDEwMywgNTI0NywgNDc2OSwgMTI5MzAyLCAxMTg5NzcsIDEyODczLCAKKyAgICAyMjgzLCA5MjkzMSwgMTAwNTI1LCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCA5ODMyNDAsIDU1MjMxLCA0MTEwMywgCisgICAgNzUwMTEsIDY0NTY1LCA0NzczLCAxMjA4NDYsIDc4NTQ5LCA3MDA3NCwgNDc3MCwgNjY4OTEsIDkxNzU2NywgODczMSwgCisgICAgNjUzNzgsIDY2OTExLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMTE5MDcxLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgCisgICAgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMTIwNDEzLCA3ODU1NiwgMTI2OTkwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCA0NzY4LCAKKyAgICAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIDExODk0NiwgCisgICAgMTIwMjUyLCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMTI4OTI2LCAxMTM3NjQsIDY2ODcwLCAyMTM0LCAxMjczODgsIAorICAgIDEwMTE2LCA5ODc3LCA3MDY3OSwgMTI4OTYwLCAwLCA3MDk1LCA4Mzc5LCA3NDExNiwgNjc3OCwgMTIxMTU1LCA3ODA5MCwgCisgICAgODI0MywgMjQyNywgMTI4MTQxLCA3MDkzLCA5ODM4NzksIDExNTg1LCAxOTUwMDMsIDk5NjIsIDgyOTkwLCAxMjIyMywgCisgICAgMTI4NDg1LCA5MjQzMCwgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDgzMzg5LCA3NDQxOSwgCisgICAgMTI4NTMwLCAxOTQ2ODYsIDU1MjgzLCAwLCA3MDM2MywgNzQ0MzcsIDExNTYsIDg3NDAsIDgzMjk1LCAzNzgyLCA2NDMzMSwgCisgICAgMCwgNDEzNzAsIDEwMTQsIDgyNjEsIDEyMDk1NiwgOTE3NTk2LCAxMDgzNSwgMTI1MjM5LCA2NTUzNiwgODMyOTQsIAorICAgIDEyMDQ2MywgMTI1MDUxLCA3NzAyLCAxMTg4MjQsIDczMDIsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCAKKyAgICA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCA3NTAxOCwgMTIwNDcxLCA3NDkyMywgCisgICAgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDkxNzk1MSwgNzAxODMsIDc2MzQsIDY1MTY3LCA5ODQ1LCAKKyAgICAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgMTI4NzE5LCAxNDI2LCA2ODIxNywgMTI4NjY4LCA2ODQ0NywgNDIyMDQsIAorICAgIDU1MjcwLCA4NTcxLCA2NzQwMywgNzgwNjcsIDQzODU5LCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgMCwgNDIwMjIsIAorICAgIDAsIDEwMjgxLCA5MTc3OTgsIDU2NTAsIDQzMTk0LCA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIAorICAgIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAKKyAgICA3MDY2NCwgNzg4ODMsIDEyODEyOCwgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDk4MzgzNSwgNzg3MzEsIDU2NDgsIAorICAgIDY0NzQ4LCAxMjA5MjAsIDQyMjM2LCAxMDIwNSwgMzU0NSwgMTI5MTIxLCA2OTg0LCAxMjc3NzEsIDc0MDUxLCAxMjg5MDEsIAorICAgIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDEyODE3MywgMTI1MDM3LCAxOTQ3NDYsIDk5MTEsIDEyMDU5MCwgNjUwMjAsIDEwMDk3LCAKKyAgICAxMTkxNjYsIDc4Njk2LCA5ODM2NjIsIDExODgzNiwgOTgzNzQ4LCA3ODIwOCwgMTE0MCwgNzg0MjYsIDEyODIwNSwgMTAxNTksIAorICAgIDAsIDAsIDgxMjgsIDcyODU3LCA2ODMyNiwgMTk0OTExLCAxODE1LCAxOTkxMCwgODkwLCAxMjQ5MzUsIDMyNjcsIDkyMjkxLCAKKyAgICA5MTc2MjksIDEwMTIzLCA3Mjg4MiwgNDQxMCwgMTA0MSwgMTA1NzYsIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIAorICAgIDEyODM0NywgNzI4ODQsIDAsIDEyODA5OCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDcyODgzLCAxMjg4NTgsIDMyOTgsIAorICAgIDUzNzUsIDEwMTQyLCAxMDA0MjEsIDgyMTUsIDkyNjMzLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDk4MzE0NywgNjk4OTksIAorICAgIDE5NDkzOCwgOTgzNjAyLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjYsIDEyODY1MywgNTE3MywgNjUzNDgsIDUyNywgMTIxMTc0LCAKKyAgICAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMTIxMzg2LCAwLCAxMDA3MiwgMCwgNDI2OTUsIDIzMjksIAorICAgIDQyMjUwLCAwLCAxMTE4NywgNjk2NjcsIDEyMjQ1LCAxNTY4LCA2NjgwNiwgODM0NjAsIDk4MzE4OSwgMTEzNzA1LCAKKyAgICAxMjg1MzIsIDExMjAxLCA5MjcwOCwgNzQ3NjksIDEyNjQ3MCwgNjc2ODAsIDkwNjksIDYxNDQsIDEyMTI0NiwgMTE5ODQwLCAKKyAgICA3MDcwMCwgMTIxNDM4LCA2Njc4MywgNjQ5MTcsIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDkyMjUwLCA2NTA5OCwgCisgICAgNjM2NCwgOTU2LCA2Njc5NCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDEyOTEwOSwgMCwgOTgzNzM5LCA2NjQ0OSwgCisgICAgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgNzA3MTQsIDEwMDk0MiwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgCisgICAgNDEyNzYsIDEyODM2MywgMCwgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIAorICAgIDEyNDk5NSwgNjQ1MjYsIDExODI5LCA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCA3MDMyOSwgMzAyMCwgMTE1MzcsIDAsIAorICAgIDY2NDQxLCAxMjA3NjEsIDcwOTgsIDEyNTA3MSwgMCwgMTA1NywgNTY2LCA0MjY5NiwgMTI3MjM5LCAzMDE2LCA0MjI3NCwgCisgICAgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODMzMzAsIAorICAgIDEyMDEwNywgMTI5MzUwLCA2NDY1OSwgOTE3OTE3LCAxMjc3NDksIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgCisgICAgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDkxNzg1MywgNDM4MTMsIDEwNTMsIAorICAgIDEwMDQzMiwgNzgyNjksIDEwMDQzNCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCA2NzY4OSwgCisgICAgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgCisgICAgMTAwNDQ5LCA0MzUxNCwgMTIxMzAsIDEwMDQ1MCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIDEyNzg1MCwgOTgzMTQ0LCAKKyAgICAxMjc4MjgsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIDgzMzQ1LCA3NTA2NSwgOTE3OTUzLCA2MzU4LCA2MzYxLCAKKyAgICAxOTI2LCA2MzU2LCA3Mjg1NSwgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCA1ODMwLCAxMDA0MjUsIDQzNjg1LCAKKyAgICA3NDMwNywgMTAwNDI2LCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTE5NTg3LCA5MjE5MiwgCisgICAgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODMzOTQsIDE5NDk1OSwgMTE5MTg3LCAyMTM1LCAKKyAgICAxMTgzNiwgMCwgMTI5MzYxLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCA3MDM4NCwgMTI5MTEzLCA0Mzg1NCwgNzE5MTMsIAorICAgIDU1NzgsIDExODQwLCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgNzg2MjAsIDEwMTAzOCwgNjg4MzMsIAorICAgIDkyMjU0LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCAKKyAgICA0MTMzMCwgMTk0OTQ1LCA1Nzk1LCA2NTUxMiwgNjg3NzQsIDY1NzAyLCA2ODc3MCwgMTIwODAxLCA2NTI1MSwgNjgyMjgsIAorICAgIDY1NzEwLCAxMjgzOTksIDk0MTc2LCA2NzY3MiwgNjg3ODMsIDUzNzAsIDcwNDY1LCAyOTMxLCAxNjM4LCAxMDk2NiwgCisgICAgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgNzQ1ODUsIDgxNzIsIDQyMDE3LCA5Mjc1NiwgMTA4NDQsIAorICAgIDEyMTAxNiwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgOTI2MzYsIDEwMDQzOCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgMTE5OTk5LCAKKyAgICAxMDA0MzcsIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAxMjg5MjgsIDMwMTUsIAogICAgIDY4NzQzLCA2ODc0MCwgNTIxMSwgNjg4MDUsIDY0MDAsIDY4NzQ5LCA2ODc0OCwgNjg3NjAsIDgxODksIDExMjc2LCA2ODc1NCwgCiAgICAgNzAyODQsIDM3MiwgMTI4ODI5LCA2ODc2MSwgMTEzNzgzLCA0MjEwMiwgNDE1ODUsIDEyNzc1MSwgMCwgNDIxMDEsIDI3NiwgCiAgICAgNzg0MDIsIDY3NDI3LCAzMywgNjc0MjUsIDY3NDI0LCA5MDA3LCA2NzQzMCwgNDE1ODgsIDY2MDMzLCA0MjcsIDEwNzYzLCAKLSAgICAxMTg4MTksIDcwODcyLCAxMjc4ODQsIDk4Mzk0MywgMTAzMSwgNjI1NywgOTI0ODksIDQyMTA0LCAwLCA5ODM5ODAsIDIzMjgsIAotICAgIDY2ODM3LCAxMDcxLCA0Mjg5OSwgMTI1MDg4LCA3NDg0OCwgMTIwODU3LCAxMTM3OTMsIDE5NDk4MSwgMTA0NywgMCwgCi0gICAgMTk0OTQzLCA0MjkwOCwgMTI4NDgwLCA2OTcyMywgMTA2NTEsIDcwMzU2LCAwLCAxMjUxMTMsIDcyNDMzLCA2NjgyOSwgCi0gICAgNzA4MTcsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDEyODU1MSwgNjc5MCwgNjUxNjgsIAotICAgIDEzMjE2LCA5ODMxNTAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIDU3MTUsIDY5NjU0LCA3MTkxNSwgCi0gICAgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAwLCA4NjQzLCA2ODUyNSwgMCwgMTE4OTA2LCAyNzU3LCAKLSAgICAxMTA2NywgOTcxOCwgNjY0MTksIDg5MTAsIDEwNjg5LCA2NDc5LCAwLCAwLCA3MTE3MywgNzg2MDcsIDkxOTYsIDY5NjcwLCAKLSAgICAxMjUwNzAsIDAsIDEyODMzOCwgMTIwMzM1LCAxMTg5MTEsIDAsIDk0MDQzLCAxMjkxOTQsIDAsIDAsIDEyMDAxMCwgNzM3OTUsIAotICAgIDg3MDEsIDY4MTMwLCAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAKLSAgICAxMjkyOTYsIDAsIDY0OTQ2LCAxMDk5MiwgMCwgNzQ1NjYsIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgCi0gICAgNDI5MDIsIDczODA4LCAwLCA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIAotICAgIDcwMzY2LCAxMjAwMDUsIDExOTU4NSwgMTIxMjEyLCA1MDg0LCAxMjExODksIDEyMTEzNCwgNzUwNjIsIDAsIDczMywgCi0gICAgNzQ2NDYsIDc4MDE0LCA2ODc2NywgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAwLCA5MjkzNywgNzEwNzAsIDY3OTkwLCAKLSAgICA5ODMxMjUsIDAsIDAsIDcwMzIzLCAxMjEzNzEsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIDUzNTgsIDk4Mzc0NCwgMCwgCi0gICAgOTE3NzY3LCA2NDQyNCwgNzEyMzYsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMTIxMzE2LCA3ODMxNSwgNjg0MzAsIDY3OTgwLCAKLSAgICA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAxMjc5NjAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIDExNTgwLCAKLSAgICA0MzY1NywgNjQ2MDEsIDEyMjA1LCA5Mjc4MiwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgNjc5NzgsIDc0ODQyLCA5ODMyODYsIAotICAgIDEyMTMzNiwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIDEwMTU2LCAxMjExOSwgOTI1NzIsIDExODkxNiwgMjU0NCwgNjUwNzQsIAotICAgIDExOTIxMSwgOTgzMjk4LCAwLCA3ODAxMSwgMzUxLCA2ODc2NCwgMCwgMTI4NzEzLCA1NTIyOSwgMCwgNzQyNjgsIDc4MDA4LCAKLSAgICAxMjgwOTQsIDAsIDQyMzc3LCAwLCAwLCAwLCAxMTM3NjcsIDc0MzIwLCA5MDEzLCA0MDU0LCAwLCAxOTQ1ODAsIDExMzc0MCwgCi0gICAgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgNzQ0NTcsIDExMTA0LCA1NTg0LCA4MzU4LCAxMjY0NzMsIAotICAgIDY0MjE1LCA2Njg2NCwgMTA5MTksIDcwNDgwLCA3OTgwLCAxMjY2MDEsIDExMzY5OCwgMjIxOCwgNDE4MDAsIDU1ODksIAotICAgIDgyOTgzLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMTIxMTIwLCAxOTQ4MzMsIDQzNDUyLCA2NzI0NSwgCisgICAgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCAxMDA5OTAsIDEwMzEsIDYyNTcsIDkyNDg5LCA0MjEwNCwgMTAwMzk2LCAxMDAzOTUsIAorICAgIDIzMjgsIDY2ODM3LCAxMDcxLCA0Mjg5OSwgNzQ0MTgsIDc0ODQ4LCAxMjA4NTcsIDExMzc5MywgMTAwNDAxLCAxMDQ3LCAKKyAgICAxMDA0MDMsIDEwMDQwMiwgNDI5MDgsIDEwMDQwNCwgNjk3MjMsIDEwNjUxLCA3MDM1NiwgMTAwNDA4LCAxMjUxMTMsIAorICAgIDcyNDMzLCA2NjgyOSwgNzA4MTcsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDEyODU1MSwgCisgICAgNjc5MCwgNjUxNjgsIDEzMjE2LCAxMDA5MzUsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIDU3MTUsIAorICAgIDY5NjU0LCA3MTkxNSwgOTgzNzIwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDEwMDM4OSwgODY0MywgCisgICAgNjg1MjUsIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDY2NDE5LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMTI1MTk2LCAKKyAgICAxMjkxNzgsIDcxMTczLCA3ODYwNywgOTE5NiwgNjk2NzAsIDEyNTA3MCwgMCwgMTI1MTg0LCAxMjAzMzUsIDExODkxMSwgCisgICAgNDE2NDUsIDk0MDQzLCAxMjkxOTQsIDEyNzA4NywgMTI4NDgwLCAxMTM3NzAsIDczNzk1LCA4NzAxLCA2ODEzMCwgMTE5NjE2LCAKKyAgICAxMjA1MjIsIDQzNzU0LCA0MjQ3NywgMTAwNDU5LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDEyOTI5NiwgNzQ1NTcsIAorICAgIDY0OTQ2LCAxMDk5MiwgMCwgNzQ1NjYsIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgNDI5MDIsIDczODA4LCAKKyAgICA5ODMzMzUsIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgNzAzNjYsIAorICAgIDEyMDAwNSwgMTAwMzY5LCAxMDAzNjgsIDUwODQsIDEwMDM3MCwgMTIxMTM0LCA3NTA2MiwgOTgzNDYyLCA3MzMsIDc0NjQ2LCAKKyAgICA3ODAxNCwgNjg3NjcsIDc4NDM1LCAxMTIwNCwgMCwgOTIxOCwgMTczMSwgMTAwMzgwLCA5MjkzNywgNzEwNzAsIDY3OTkwLCAKKyAgICA5ODMxMjUsIDk4MzM3MCwgMCwgNzAzMjMsIDEyMTM3MSwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgNTM1OCwgMTI4NTE1LCAKKyAgICAxMjkzMTYsIDE5NDk4MSwgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDEyMTMxNiwgNzgzMTUsIDY4NDMwLCAKKyAgICA2Nzk4MCwgNDMyNTMsIDY1OTQzLCAxMDAzNzMsIDMzNzEsIDEwOTg4LCAxMDAzNzgsIDg3NzEsIDE0NzksIDEwMDM1NywgCisgICAgMTAwMzYwLCAxMTA5LCAxMTU4MCwgNDM2NTcsIDY0NjAxLCAxMjIwNSwgOTI3ODIsIDAsIDY0NTA3LCA4ODY4LCAzOTksIAorICAgIDY3OTc4LCA3NDg0MiwgOTgzMjg2LCAxMjEzMzYsIDEyMTQ5LCAxMzA4OCwgNTUxLCAxOTQ5NzIsIDEwMTU2LCAxMjExOSwgCisgICAgOTI1NzIsIDExODkxNiwgMjU0NCwgNjUwNzQsIDExOTIxMSwgMTAwMzU0LCAxMDAzNTMsIDc4MDExLCAzNTEsIDY4NzY0LCAKKyAgICA5MTc5ODEsIDEyODcxMywgNTUyMjksIDAsIDc0MjY4LCA2Njc5MCwgMTI3MzI3LCAxMDAzNjEsIDQyMzc3LCAxMDAzNjMsIAorICAgIDEwMDM2MiwgMTAwMzY1LCAxMDAzNjQsIDc0MzIwLCA5MDEzLCA0MDU0LCAwLCAxOTQ1ODAsIDExMzc0MCwgMzQ0NywgCisgICAgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgNzQ0NTcsIDExMTA0LCA1NTg0LCA4MzU4LCAxMjY0NzMsIDY0MjE1LCAKKyAgICA2Njg2NCwgMTA5MTksIDcwNDgwLCA3OTgwLCAxMDA3MjMsIDExMzY5OCwgMjIxOCwgNDE4MDAsIDU1ODksIDgyOTgzLCAKKyAgICAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCA3NDUyMiwgMTEzNTYsIDEyMTEyMCwgMTI4MTc1LCA0MzQ1MiwgNjcyNDUsIAogICAgIDkyOTkzLCA0MjU3MywgNjY4NzksIDgzMzI5LCA2NzgxMCwgNjk3NjcsIDc4NzUyLCA3NDM5MiwgODEzNSwgNjQ1MCwgCi0gICAgMTAwNTUsIDc3OTk2LCAxMTk5NDgsIDk4MzE3MywgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKLSAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCAwLCA1NjUyLCAxMDk0NSwgMTk0NTk5LCA2NjQ4NiwgCi0gICAgMCwgMzY2MSwgNzg2MywgMCwgNjgwNjksIDk4MzY3NSwgNzAzMzIsIDEyNzE5NCwgNTY1OSwgMTk0NjA2LCA3ODY5MiwgCi0gICAgNjY3MjksIDU2NTUsIDk4MzYyNiwgNDIxNjgsIDEyMTEzMSwgMTA1NSwgNzExNzEsIDcxODg4LCA2NjMxMCwgNzQwMzAsIAotICAgIDcwNTE2LCAxMjE0NiwgNzAzNjIsIDczOTU2LCAxMTYxOCwgMCwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgMTAzMDQsIDEwMzY4LCAKLSAgICA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIDcxMDczLCA3ODgxLCAKLSAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCA3MDAzNiwgCi0gICAgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTE3OTk1LCAwLCA5MjQwOSwgNzAwNTYsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgCi0gICAgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgOTgzMjY1LCA3NzMyLCA5ODM3MjQsIDY0NTU2LCAwLCAKLSAgICA5ODM5NzksIDU2NjgsIDc0NDQ1LCA3NDk4MiwgNzQ2NDUsIDU2NzAsIDExMzc5NSwgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgCi0gICAgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgNzQ5ODEsIDEyNzQ5LCA3NDU1MSwgNjc3NTcsIDAsIDY2NDk2LCA0MzYxLCAKLSAgICAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDEyODI4NiwgOTQwMDQsIDcwMzU5LCAwLCAzNTcxLCAxMzI0NywgNTg3NCwgCi0gICAgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCA3NDYyMSwgNzgyNjUsIDU1MywgMTEzNzY4LCAKLSAgICAxMjcwMTIsIDkzMDUzLCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDE5NDkxOSwgMTI3NDYsIDEyODY3MSwgNzAzMzgsIAotICAgIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAKLSAgICAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIAotICAgIDk4Mzg1MSwgMTk0ODc3LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgCi0gICAgMTI4OTAzLCAxMjQ5MzYsIDEyODM5MCwgODMyMTUsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgCi0gICAgMzI4LCAxMjEwMzEsIDY4NzM2LCA2OTgxNSwgNTYzNiwgMTE5OTE3LCA1MzI5LCAxMjEyOTMsIDU2MzgsIDgzMTY2LCA3OTQwLCAKLSAgICA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDY4NzYzLCA2MjAzLCAKLSAgICA0MjQ3LCA3MTE2OSwgMTE5MjAsIDgyNzQsIDY4MjQwLCA5ODM2NTgsIDE2NTcsIDQxNTYxLCA2ODc3OCwgNzgyOTUsIDU2MzksIAotICAgIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCA5ODM2ODUsIDcxMTc5LCA0MjIyNywgNjgzMDEsIDgzMzIyLCA0MTYzNywgCi0gICAgNjc4NzIsIDEyMTEwNSwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIDU0ODYsIAotICAgIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIAotICAgIDAsIDEyODkyNywgMTE0NCwgNzg3NTAsIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTI3MzUyLCAKLSAgICAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgCi0gICAgNDM4MDgsIDE5NDk3MiwgNjc2MjEsIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIAotICAgIDU2MTMsIDY2NDAxLCAxMjExNDUsIDAsIDU2MTAsIDk4MzIyNiwgNzExOTksIDY1ODI2LCAyMDY5LCAwLCAxMDc4NywgCi0gICAgNDM5OTksIDI5OTcsIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCAKLSAgICA4MTg2LCA5ODA3LCA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIAotICAgIDEyMzY0LCAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIAotICAgIDExNzA2LCA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCi0gICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgMTIxMjY2LCAKKyAgICAxMDA1NSwgNzc5OTYsIDEwMTAzMywgOTgzMTczLCAxMTkyMjUsIDU2NTcsIDEwMDQ0MywgOTYyNiwgMTIxNDUzLCA3Nzk5NCwgCisgICAgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgMTIwNzk5LCA3MTg2MCwgOTE3OTM5LCA1NjUyLCAxMDk0NSwgMTk0NTk5LCAKKyAgICA2NjQ4NiwgOTgzMzYwLCAzNjYxLCA3ODYzLCAwLCA2ODA2OSwgMTAxMDg0LCA3MDMzMiwgMTI3MTk0LCA1NjU5LCAxOTQ2MDYsIAorICAgIDc4NjkyLCA2NjcyOSwgNTY1NSwgMTIxMDEyLCA0MjE2OCwgMTIxMTMxLCAxMDU1LCA3MTE3MSwgNzE4ODgsIDY2MzEwLCAKKyAgICA3NDAzMCwgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCA3MjcwOSwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgCisgICAgMTAzMDQsIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIAorICAgIDcxMDczLCA3ODgxLCAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAKKyAgICAxOTQ5NzgsIDcwMDM2LCA2OTY5NiwgNjk3NjksIDY0NjU2LCA5MTc5OTUsIDAsIDkyNDA5LCA3MDA1NiwgNTY2NiwgNjUyMjcsIAorICAgIDUzMTgsIDYzOTk0LCAxMTk1OTYsIDkwOTEsIDEwNzk4LCA3ODY2NCwgNzg1MDgsIDEwMTg2LCA5ODMyNjUsIDc3MzIsIAorICAgIDk4MzcyNCwgNjQ1NTYsIDAsIDk4Mzk3OSwgNTY2OCwgNzQ0NDUsIDc0OTgyLCA3NDY0NSwgNTY3MCwgMTAwODMwLCAKKyAgICAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCA3NDk4MSwgMTI3NDksIDc0NTUxLCAKKyAgICA2Nzc1NywgMjI2MywgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgNzAzNTksIAorICAgIDAsIDM1NzEsIDEzMjQ3LCA1ODc0LCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDc0NjIxLCAKKyAgICA3ODI2NSwgNTUzLCAxMTM3NjgsIDEyNzAxMiwgOTMwNTMsIDU4MjksIDk4MzI0NywgNDU4NywgNzgyODUsIDY1OTEyLCAKKyAgICAxOTQ5MTksIDEyNzQ2LCA3MjgwNiwgNzAzMzgsIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCAKKyAgICA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAKKyAgICAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIDk4Mzg1MSwgMTI4MDI2LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAxMTk5MTQsIAorICAgIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAxMjg5MDMsIDEyNDkzNiwgMTI4MzkwLCA4MzIxNSwgMjQyNSwgNjUxODIsIDEyODc2OSwgCisgICAgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDEyMTAzMSwgNjg3MzYsIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIAorICAgIDEyMTI5MywgNTYzOCwgODMxNjYsIDc5NDAsIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCAKKyAgICA3NDIyMywgMzQzNywgNjg3NjMsIDYyMDMsIDQyNDcsIDcxMTY5LCAxMTkyMCwgODI3NCwgNjgyNDAsIDE5NDc0MSwgMTY1NywgCisgICAgNDE1NjEsIDY4Nzc4LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDEyMTQyMCwgNzExNzksIDQyMjI3LCAKKyAgICA2ODMwMSwgODMxNjgsIDQxNjM3LCA2Nzg3MiwgMTIxMTA1LCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTAwNzMxLCAKKyAgICAxMTcwNSwgNTY0MiwgMTAwNzMyLCA1NDg2LCAxMDA3MzQsIDQzNTYsIDExNzEwLCAxMDA3MzksIDEyMDUxLCA2OTkzOCwgCisgICAgMTAwNzQwLCA1NjQxLCA4MjU5LCAxMjY5OTQsIDEwNTgsIDAsIDY3NjMwLCAxMDEwMTYsIDEyODkyNywgMTE0NCwgNzg3NTAsIAorICAgIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTAwNTUwLCAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIAorICAgIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgNDM4MDgsIDEyODMzNSwgNjc2MjEsIAorICAgIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIDU2MTMsIDY2NDAxLCAxMDA3MjEsIAorICAgIDEwMDcyNCwgNTYxMCwgMTAwNzI2LCA3MTE5OSwgNjU4MjYsIDIwNjksIDEwMDczMCwgMTA3ODcsIDQzOTk5LCAyOTk3LCAKKyAgICAxMTk5MzIsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA1ODc1LCAyNDEyLCA4MzIwNiwgODE4NiwgOTgwNywgCisgICAgNzQyNjksIDY2Mjk0LCAxMzEzMCwgNjU4NzQsIDcxODU1LCA1ODA3LCAxMTM2NzgsIDEwMDMwLCA1MzA2LCAxMjM2NCwgCisgICAgMTE4ODYzLCA5Mjk3MCwgMTE3MDQsIDgzMjAyLCA5MjU4MywgMTAyMTEsIDAsIDEyMDU3OSwgMCwgMTIxMDYzLCAxMTcwNiwgCisgICAgOTcxMCwgMTI1MDIyLCA4Mjk4NSwgMTIwNjU1LCA0MTMsIDY1NjIzLCA3MTE4LCA4MzE2NywgOTEzMywgNzQyNjIsIAorICAgIDkxNzk2NCwgMTA0MiwgMTI1MDY4LCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIDQ5ODQsIDgzMTk4LCAKICAgICA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDgzMzk5LCAxMzA4LCAxMjEyNTgsIDI1MzQsIDgxMCwgMTI1MDg5LCAKLSAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDEyMDE4NCwgMTIwNzM5LCAyMzY0LCAKKyAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDcwNjk0LCAxMjA3MzksIDIzNjQsIAogICAgIDY2Mzg3LCA3NDQ3MCwgNjY2MTgsIDY1NjgwLCA2NjQxMSwgMTAwMjcsIDcxODQxLCAxMjgxNTQsIDEyMzM3LCA3NDI4MywgCiAgICAgMTI3MzY4LCA5ODMxNjcsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MDY4LCA2MzYzLCAyNzQ4LCAxMjEwMjIsIAotICAgIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIDg3MzAsIDE5NDk5NywgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCA5Mjk4OCwgCi0gICAgNzI3NSwgNzgzMDQsIDkzNSwgMTI3MDUyLCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAKKyAgICAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCA4NzMwLCAxOTQ5OTcsIDEwMDcxMSwgNzgzMTIsIDcyNzQsIDEwMDcxMiwgOTI5ODgsIAorICAgIDcyNzUsIDc4MzA0LCA5MzUsIDEwMDcxOSwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMDA0ODksIDY1MjUzLCA2NDMwMSwgCiAgICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCA3ODMwMCwgCi0gICAgMTk0OTk4LCAxOTQ5MTIsIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCi0gICAgMTY0OSwgNjc4NzYsIDk2NCwgMTIxMDM0LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAwLCAKLSAgICA4MzM5OCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDY5OTA5LCA0MzU0NywgCi0gICAgODMwMjgsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgNjk3NTksIDExMzQxLCA0MjQ5NCwgCi0gICAgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCAKLSAgICA3MTA2LCA0ODc3LCAxMjkxMDgsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIDQ0MDksIDAsIDAsIDY0Nzk4LCA3MDgwNSwgCi0gICAgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCAKLSAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCAKLSAgICA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAKLSAgICAxMjA1NTksIDEyNzgyMCwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAKLSAgICAxMjEzOTQsIDkxNDIsIDAsIDY4NTA2LCAwLCAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAxMjY2NDgsIAotICAgIDcyNDM4LCA1MjksIDg1ODAsIDEyNzQ5MCwgMCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgCi0gICAgNjg3NDQsIDk4MzgyNSwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDY3ODIxLCAxMjEyMDAsIDExMzc2LCA3NDM3OSwgMTA3MjEsIAotICAgIDY3NjY0LCAzNDM4LCA0MjA5NywgNjg4NjIsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgMTIwMTgzLCA0MTg3MywgCi0gICAgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAotICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTI3OTM3LCA5ODMyMTYsIDUxNjEsIDEwNTcyLCAKLSAgICA5MTc1NTgsIDQyOTA2LCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyMDQwNiwgOTgzNjQzLCAxMjY2MDUsIDExMTY3LCAKLSAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAotICAgIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCA5MTc4NTUsIDExOTM4LCAxMjEzMDgsIDcyODUsIDk4MzU1NywgCi0gICAgMTE5NTc3LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAxMjkxNjgsIDEyODI2NywgCi0gICAgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgCi0gICAgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIAotICAgIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDEyMDE2MCwgCi0gICAgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAwLCA5MTc4NDQsIDQyODUsIAotICAgIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCA5ODMyNzEsIAotICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAxMjgzODYsIAotICAgIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCA3MDE1NSwgNzg2MjIsIDcwMDQ3LCAxMjcyNzMsIDYwMjIsIDE5NTAyMywgCi0gICAgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAxOTUwMjAsIDEyNjgyLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCAKLSAgICA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCA3MDg1NSwgMjA3NCwgMTEzNzQyLCA3ODI4MywgMCwgMTI0NTMsIDcwODQ3LCAKLSAgICA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgMCwgNjYyNzgsIDAsIDc4Mjc5LCAwLCAwLCAKLSAgICA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgNzEyMjQsIDQzODY4LCAKLSAgICA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMTEzNzY1LCAxMTkyNDksIDExMzcxNSwgMTE1OTUsIDY0ODkzLCAxMTg5MDUsIAotICAgIDQzNDM1LCAxMjQ5NjQsIDEyNTAzMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCAKLSAgICA0NjM5LCAxMjc1NTksIDE5OTAsIDExMTA3LCA0NDk4LCA3NDE2OSwgNjc3MzYsIDgzMjczLCAxMjcyNzIsIDY5NzM0LCAKLSAgICAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCAKLSAgICA2NTc1MywgMzcwLCAxMjEzNjAsIDAsIDAsIDQ5NTMsIDE5NTAwOSwgMTIxMDU0LCAxMTM3MDgsIDAsIDY5MjMwLCAwLCAKLSAgICAxOTUwMTAsIDY1Njg4LCA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIAotICAgIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDEyMDU3MSwgCi0gICAgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCA5MTc3NzQsIDc0OTE0LCAzNzYxLCAwLCAKLSAgICAwLCA3MDA2OCwgMTIwNDA4LCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDk4MzI1NiwgMTI4Mzg5LCAwLCAwLCA5MDgsIAotICAgIDAsIDg2MTEsIDEyMTM4NCwgMCwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIDQxNTg2LCAKLSAgICAxMDUyNywgNzA0MjYsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDc0OTE3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCA3NDg4MywgCi0gICAgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjU5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIDAsIAotICAgIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAxMjE0MywgCi0gICAgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAKLSAgICAxMDY4MSwgMCwgMTIwOTc5LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgCi0gICAgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIDEyODk2NCwgOTE3NTY0LCA0MTczMCwgCi0gICAgMTI5MTgxLCAxMjE1MDEsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMTk0NzgwLCAxOTQ3NjksIAotICAgIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxOTQ4NTYsIDY3MDc3LCAxMDAwLCA2OTY1MSwgMTI3NTA5LCAKLSAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgOTgzOTY4LCAKLSAgICA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKLSAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIAotICAgIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDExOTk3MCwgMTIzMTEsIDExOTE4MSwgNzg3OTYsIDY4NzY4LCA3ODc5NCwgCi0gICAgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDExMzc5NywgMTI4NTc5LCAxMjI5MCwgMTIwMTY5LCAxMjkwOTMsIAotICAgIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCA3ODUzNSwgCi0gICAgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgCi0gICAgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgCi0gICAgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAKLSAgICAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4OCwgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgOTgzNTcwLCAKLSAgICA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA2ODI0NiwgNzI3OSwgCi0gICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTIxMTUyLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgMTMwMTIsIDQ1NzEsIAotICAgIDkxNzU4OCwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIDEyMTI0MywgNzc4NDEsIAotICAgIDAsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMjA4ODUsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgOTgzOTczLCA3ODMxMSwgNDIzOSwgCi0gICAgMTI4MDczLCAxMjc3OTksIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDAsIAotICAgIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIAotICAgIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAKLSAgICAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgCi0gICAgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCAKLSAgICA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIAotICAgIDYzODc2LCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAxOTQ3MTksIDkyNzE0LCAwLCAxMjc3ODIsIAotICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDEyNDk3MiwgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAKLSAgICAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgCi0gICAgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCAKLSAgICA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgCi0gICAgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCAKLSAgICA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTk1MDM1LCA0MTcyMywgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgCi0gICAgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgCi0gICAgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgCi0gICAgNjM4NDgsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIAotICAgIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMCwgCi0gICAgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAKLSAgICAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCAKLSAgICA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIDk1NzQsIDEzODgsIAotICAgIDcxOTAyLCAwLCAxMDc3LCAxOTUwMDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgOTE3Nzg5LCAwLCA0Mjc3MywgCi0gICAgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCAKLSAgICA1MzM0LCA2NTA4MSwgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAxMjUwMTcsIDY1MDksIDAsIDUzMjcsIDc4Nzc2LCAKLSAgICAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgCi0gICAgNjM4NjYsIDc4NjI2LCAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCAKLSAgICA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgCi0gICAgNjM4MzUsIDYzODM0LCA5ODM5NDcsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCA5ODM4NTMsIDcwMTczLCA2MzgzMywgCi0gICAgNjA0MiwgNjYzNjAsIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzOTA0LCAKLSAgICA1MjI3LCA5MDQ3LCA2MzgyMiwgNzQ3OTcsIDYwOTEsIDAsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIAotICAgIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAKLSAgICAyMDYsIDcwMTI2LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCAKLSAgICA2MzkzMiwgNzUwNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgCi0gICAgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIAotICAgIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCAKLSAgICA3MjgzLCAwLCA2Mzk3MCwgMTIxMTY1LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgCi0gICAgMTI4OTIwLCA3NDA4LCAxMTgwOSwgODMyMjAsIDEyMTE4MSwgMCwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIDEwODksIAotICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgNzQ0OTQsIAotICAgIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCAKLSAgICA3NDM0MywgNjczNzAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDEyNTgwLCA3ODUwNywgCi0gICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzM5NCwgNzQxNTEsIDgzMjI3LCA2NTAyLCA5ODM4NTUsIDExMDg1LCAxMjEyNjEsIAotICAgIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgCi0gICAgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCAKLSAgICA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCAKLSAgICA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIAotICAgIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMCwgCi0gICAgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCA2ODA1NywgMjUzLCAwLCA2ODIwOCwgMTIwNDM5LCA5MjAzLCAKLSAgICA3NDIzMSwgMCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgCi0gICAgNDIzNTQsIDEyODA5OSwgOTgzNjk4LCA3MDA0NCwgMTk1MDY1LCAwLCA4NDEzLCA2Njg0MSwgMCwgNTY5MywgNzI3MiwgMCwgCi0gICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIDE5NTA2MywgMCwgMCwgMCwgMTI2NjM5LCAxMjAwOTcsIDAsIDk0MDc4LCAKLSAgICA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIAotICAgIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCAKLSAgICA2MzkwNiwgMTU5OCwgNjM5MDQsIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIAotICAgIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEyNjUxMywgMTIwNjA2LCA3ODc1NCwgNTQxMywgCi0gICAgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIDQ1MTgsIAotICAgIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDk4MzU5MywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgCi0gICAgNDMwNzMsIDQxNjkwLCAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAKLSAgICAxMjg4MTcsIDEyOTA2NywgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgCi0gICAgMCwgNTMzOSwgNzQzMjMsIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAwLCAxMjc3NTYsIDE5NDgxOCwgMTI3MTE2LCAKLSAgICA1Njg0LCA4Njc4LCAxMDkxNCwgNDM2MzIsIDU2ODksIDY1ODA3LCA3MDgxNCwgNjg0NjQsIDEyNjMzLCAxMjg3MCwgNjk3MDUsIAotICAgIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMTE5MDc2LCA3NDI1MSwgMCwgMTIwNjQ3LCAxMjg5MzAsIAotICAgIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCi0gICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAxMjExODYsIAotICAgIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMjc4NTIsIDAsIDAsIDk4MzA3NSwgMTI1MDEsIDY0NjA0LCAKLSAgICAxMjg2NTcsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDk4MzcwNiwgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIAotICAgIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMTI3MTM3LCAxMjc4NTYsIDY5OTk1LCA0NjM2LCA1NTI2MiwgCi0gICAgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgOTgzNjk1LCAxMTM3ODAsIDAsIDExODk2OCwgMTIyNzcsIDEyMTIzOSwgCi0gICAgMTE5OTUsIDkyNTUzLCAxMjEwMDYsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCA5MjQyNiwgMTIxMjg1LCAKLSAgICA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgOTgzNjUwLCAxODczLCAxMDg3LCAxMjQ5NjYsIDAsIAotICAgIDc0MjgwLCA3ODUyNywgNjY0MzksIDQzMjE4LCA5ODMxMjMsIDE5NDcxNiwgNzIzNywgMTI1MDQsIDcxMTEzLCAxMjY1NTksIAotICAgIDEyODc0OCwgMTIwODg3LCA5NDg5LCAwLCA3MDg0MywgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIAotICAgIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgCi0gICAgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIAotICAgIDkzOTk3LCA5ODMzMzIsIDYzNDcsIDc4NzE1LCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgNDM3LCA0MTcwOSwgNzM3NzIsIAotICAgIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIAotICAgIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTIwNjAyLCAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTk0NjQzLCA0MTc4OSwgCi0gICAgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAKLSAgICAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDE5NDU3NywgCi0gICAgMCwgNDE3OTEsIDExMDQsIDAsIDk4MzcyNSwgMTA2NTUsIDk4MzMzNCwgOTgzNTYxLCAxMjAxNjQsIDAsIDEwODIsIAotICAgIDEyMTAyNCwgODQyOCwgNjU2OSwgMCwgMCwgNzg1MzQsIDY5ODQ5LCA2NzgzLCAxOTQ2NzEsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgCi0gICAgNDQwMjEsIDY0NTgsIDY0NzI4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIAotICAgIDEyMDY3NywgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCAxMjg2MjcsIDQxNTQ1LCAxMjY0NjUsIAotICAgIDkyNDQ5LCAwLCAxMTIxNiwgMTIxMzA3LCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIDUxMjIsIDQxNTI3LCAKLSAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA3NDkwNywgMCwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIAotICAgIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAKLSAgICAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIDY3NzI1LCA2NTkyNiwgCi0gICAgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIAotICAgIDE2MzMsIDAsIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTQsIDEzMDc4LCAwLCA0NzYwLCAKLSAgICA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDQyMjM2LCAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIAotICAgIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAwLCA3NTA0NywgNDcwNywgNjgyMDYsIAotICAgIDEwMTQzLCA3ODgzLCAxMjE0NDQsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIDEzMDEwLCA2OTc5NiwgODMwNCwgOTI5ODIsIAotICAgIDE5NDY4OCwgMTE5NTc1LCAyMjkzLCA3MDE5NSwgNjY2NTQsIDEyOTA3NywgOTI2NzYsIDAsIDEzMDA4LCAxMjExOTQsIAotICAgIDQzODUsIDEyODczNiwgMTMwMTEsIDEyNTAwNCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgNzAzODgsIAotICAgIDk4MzI4MiwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgNzA3OTAsIDQxNzkyLCA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIAotICAgIDQzODIxLCA1NzA5LCAxMjgyOTYsIDcxMDc2LCA0MzgxNiwgOTgzMDg3LCA5ODM4OTYsIDEwNzksIDM4NjcsIDU3MDgsIDAsIAotICAgIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgMTIxMDkxLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgCi0gICAgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIDEyOTE3OCwgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCAKLSAgICA2ODY0NywgOTE3NTcyLCAxMDA1OCwgNjgwNTgsIDc0ODY3LCA2NzczMCwgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgCi0gICAgOTE3NTkxLCA5MTc1NDAsIDkxNzU5MywgMzM0MCwgNzQwMTcsIDkxNzU4NiwgMTIwOTk0LCAxMjkxNDEsIDEyMDU0MSwgCi0gICAgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCA5ODMxNzEsIDExODkyNiwgCi0gICAgODk3MiwgMTE5OTE4LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgCi0gICAgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgCi0gICAgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCAKLSAgICA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIDEyOTEwNywgNzEwNzEsIAotICAgIDQxNTIyLCA0MTUyMywgNjg1MjMsIDk4Mzc3MiwgMTE4OTIzLCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIAotICAgIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCA0NDc5LCAxMTc4LCA2NTU4NiwgCi0gICAgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDEyNzg4NSwgOTgzNzY1LCA2NjgyOCwgMTI4OTcyLCAxMjc4MzksIAotICAgIDc0NTgwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgNjc0MDIsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCAKLSAgICA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgNjQ3MTAsIDEwNzQ3LCAxMjUsIAotICAgIDEyMDgwMywgNjQ4OTAsIDk4MzA2NCwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCAKLSAgICA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIAotICAgIDYzNzQ5LCAxMjkwMjUsIDAsIDEyNzkyOCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIAotICAgIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIDYyNjAsIDAsIDEyODM5MSwgOTQwNzQsIAotICAgIDYzNzkzLCAxMTk4OCwgMzg5OCwgOTIyNDYsIDEwMjAxLCAxMjIzOCwgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIAotICAgIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgOTgzMzMxLCA0MjIwMywgNzk1MCwgMzEyNCwgCi0gICAgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMTE0OCwgNjk3MywgMjc5MywgMTI0NzUsIDEyOTE4MCwgNzUwNTYsIDYzNzY5LCA5NTMwLCAKLSAgICAxMjEyNDgsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCA3OTIsIDExMzY3NCwgNjQ4MDMsIAotICAgIDAsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgCi0gICAgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgCi0gICAgNDU1OCwgNjU2ODUsIDk1MjMsIDk4MzQ1MywgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCAKLSAgICA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIAotICAgIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIAotICAgIDAsIDQyMDY1LCAxMjgzNjgsIDQzODg5LCA5NDAzOSwgMTI5Mjk5LCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAKLSAgICAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIAotICAgIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAKLSAgICAxMjA1OTIsIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgCi0gICAgOTgzMjM4LCA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMCwgMTA4ODgsIAotICAgIDEyMDkzNCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDY4MzQwLCAwLCAwLCA3MTIwMiwgMzMwNCwgNDI3NTMsIDkyNTg4LCAKLSAgICA3MDI5OCwgNzQ2NDMsIDE2MjcsIDAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAwLCAKLSAgICA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgNjgzMTcsIDkwMzUsIDExMTQxLCA5MTc5NzcsIDEyODAwNSwgMCwgOTIyMDcsIAotICAgIDY4MTI1LCA3NDg5OCwgMTY0LCA2ODMwOSwgOTQwNjcsIDk0MDAwLCA2OTU4LCAwLCA0MzExNiwgNjc3MTksIDcwMDE5LCAKLSAgICAxMzI0NSwgMCwgNjg4MDgsIDY2ODE4LCAwLCA3MDAzMSwgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgCi0gICAgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAKLSAgICAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIAotICAgIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCA3MDIwNCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIAotICAgIDkxNzk3NiwgMTMyNzYsIDEyNTEzMywgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDEyMTIwMywgCi0gICAgMTIyMjksIDExNjgwLCA5Mjk1NiwgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCAwLCAxMDQ3NiwgMzg1OCwgCi0gICAgNjQxNzUsIDM5MzIsIDY0OTU4LCAxMjA0MzIsIDk4MzY3OCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCA3NDkwOCwgCi0gICAgNDE3ODQsIDExOTE3NSwgNjQxNjMsIDc3OTk3LCAwLCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAKLSAgICAxMjg2MzEsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgCi0gICAgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMTk0OTEzLCA3NDYsIAotICAgIDExODgyNiwgNzQ3ODMsIDAsIDEyMDE4LCA2NTI5NCwgMTI3NTQ1LCAxOTQ5MjUsIDY4ODM1LCA5ODM0ODgsIDQ0MjIsIAotICAgIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDEyMTE0NiwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAxMjAzNzcsIDEyMTE1MSwgCi0gICAgMTM2NCwgMCwgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCisgICAgMTk0OTk4LCAxMDA5MjksIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCisgICAgMTY0OSwgNjc4NzYsIDk2NCwgMTAwNjk2LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAKKyAgICA5ODM0ODQsIDgzMzk4LCA0MzY4OSwgMTAwNzAxLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNjk5MDksIAorICAgIDQzNTQ3LCA4MzAyOCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAxMjc1NDUsIDY5NzU5LCAKKyAgICAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgNzA4MTAsIDY0NzgsIDk4OTgsIAorICAgIDQxMDM5LCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgMTAwNjgxLCA2MjM4LCAxMDA2ODMsIDEwNTQ4LCAxMDA2ODUsIAorICAgIDQ0MDksIDEwMDY4NywgMTAwNjkwLCA2NDc5OCwgNzA4MDUsIDUzNDYsIDEyODI0MCwgOTQwNDcsIDYyMzcsIDQ4NzQsIAorICAgIDY2ODUxLCA5MTc2LCA5Mjg4MiwgMTIxMTUzLCA2NTIzMSwgNjU4ODQsIDEyNjc4LCA3ODc0OCwgMTE4OTEyLCAxMTM3OCwgCisgICAgNDQwMTgsIDQyNzg1LCAyNDA4LCAzMjUxLCAxMTIwMywgOTgzMTU5LCA1Njg1LCAwLCAyNDYxLCAxMTA1MiwgNzA5MSwgCisgICAgNTM0MiwgODMxNywgMTIxNDQ2LCA2ODE2MywgNTM0MCwgMTIwNTU5LCAxMjUyMDYsIDQzNjM1LCA3MzkyOCwgMTI1MDAxLCAKKyAgICA3MTA2OSwgODMzMTgsIDAsIDgzMzE3LCA2NTQ4MiwgMTIxMzk0LCA5MTQyLCA5ODMxNzcsIDY4NTA2LCAxOTUwODQsIAorICAgIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDEyNjY0OCwgNzI0MzgsIDUyOSwgODU4MCwgNjY3NjksIAorICAgIDEyNTA1OCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgNjg3NDQsIDEyMDYyMCwgNDE1OTQsIAorICAgIDIyNSwgNDI4MjgsIDk4MzYzMiwgNjc4MjEsIDEyMTIwMCwgMTEzNzYsIDcyNzI5LCAxMDcyMSwgNjc2NjQsIDM0MzgsIAorICAgIDQyMDk3LCA2ODg2MiwgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAxMjAxODMsIDQxODczLCA3MTI3MSwgCisgICAgMTEzMjQsIDEyMDUzMSwgOTgzOTc2LCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAorICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTAwNjcyLCAxMDA2NzUsIDUxNjEsIDEwNTcyLCAKKyAgICAxMDA2NzYsIDQyOTA2LCAxMDA2NzgsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTAwNjYwLCA5ODM2MTMsIDEyNjYwNSwgMTExNjcsIAorICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDE5NDY5NSwgNjg2MzUsIAorICAgIDEwMDMxLCAxMTM3NjYsIDk4NzAsIDY3NzI2LCA4NjIwLCA2NTgyNCwgMTAwNjUxLCAxMTkzOCwgMTAwNjUzLCA3Mjg1LCAKKyAgICAxMDA2NTUsIDEwMDY1NCwgNDI2NzgsIDY2ODQyLCA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgNzA2OTMsIAorICAgIDEyODEzMSwgMTI4MjY3LCA3ODE2OSwgNjYxOTksIDEwMDY2NCwgMzYwOSwgNjg2MjQsIDcwMjgwLCA4MzIsIDEwMDY2NywgCisgICAgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgNzEyNTYsIDEyODUxNywgNDI3MzIsIDUxODAsIDkyNjk5LCAKKyAgICA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAxMjc3OTAsIDEyMDU0OCwgMTI4NDc4LCA2MzQ4LCAKKyAgICAyNDMsIDEzMjAwLCAxMjAxNjAsIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCA0MzY4NywgCisgICAgMTIwODgwLCA5MTc4NDQsIDQyODUsIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIAorICAgIDc1NjMsIDQyMzc2LCA5ODMyNzEsIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIAorICAgIDEyMjA4LCA5OTczLCAxMjgzODYsIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAxMjUyMDUsIDcwMTU1LCA3ODYyMiwgCisgICAgNzAwNDcsIDEyNzI3MywgNjAyMiwgMTAwNDg1LCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDE5NTAyMCwgMTI2ODIsIDEwMTYsIAorICAgIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDcwODU1LCAyMDc0LCAxMTM3NDIsIAorICAgIDc4MjgzLCAxMjg3MzcsIDEyNDUzLCA3MDg0NywgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgNzgyNjgsIAorICAgIDAsIDY2Mjc4LCA5ODM2MzMsIDc4Mjc5LCAwLCAxMjc5MzIsIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIAorICAgIDc4Mjc3LCAxMjQ0OSwgMTIyOTA4LCA3MTIyNCwgNDM4NjgsIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAxMTM3NjUsIAorICAgIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIDExODkwNSwgNDM0MzUsIDgzMzA5LCAxMjE0MTQsIDQ5OTMsIDEyOTM2MCwgCisgICAgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCA0NjM5LCA3MDY2OCwgMTk5MCwgMTExMDcsIDQ0OTgsIAorICAgIDc0MTY5LCA2NzczNiwgNzA2NTgsIDEyNzI3MiwgNjk3MzQsIDI5NjAsIDczNzc5LCAxOTUwNzYsIDg5NjksIDEyODExNywgCisgICAgNDM0MjQsIDczOTU5LCAxMjY0NjQsIDI5NTAsIDExOTU3OSwgNjIxMCwgNjU3NTMsIDM3MCwgMTIxMzYwLCA5ODM2NTQsIAorICAgIDEyMDkyOCwgNDk1MywgMTk1MDA5LCAxMjEwNTQsIDExMzcwOCwgMTIyODg4LCA2OTIzMCwgMCwgMTIyOTAwLCA2NTY4OCwgCisgICAgNzQ5NTEsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCAKKyAgICA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgNzEzMTcsIDY0OTIzLCA2Njc0NCwgNDM2NjksIDkwMzIsIDc4MjYzLCAKKyAgICA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCA5ODM4NzMsIDkxNzc3NCwgNzQ5MTQsIDM3NjEsIDAsIDAsIDcwMDY4LCAKKyAgICAxMjA0MDgsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMTI3MjgyLCAxMjgzODksIDAsIDk4MzM0MiwgOTA4LCAwLCAKKyAgICA4NjExLCAxMDEwNzQsIDk4MzY5OSwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMTI4ODEyLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgCisgICAgNDE1ODYsIDEwNTI3LCA3MDQyNiwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgNzQ5MTcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIAorICAgIDc0ODgzLCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDEyODM5NSwgMCwgNzg3NjcsIDExOTYyNiwgMTAwOTIyLCA2ODE5MywgCisgICAgMzQ3LCAwLCA5MTc1NDQsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDcyNzkyLCA3ODc0NCwgNjU1NzksIDEyOTgwLCA2ODA0NiwgCisgICAgMTIxNDMsIDY5NjU3LCA3ODUxMiwgMTI4NDkzLCAxMTE1MywgNDE4MDQsIDc4NTIzLCAxMTkxNjgsIDc4NTI1LCAwLCAKKyAgICAxMjg4NTksIDQxNTg0LCAxMDY4MSwgMCwgMTIwMDk0LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIAorICAgIDEyNTAzOCwgNjYzMDYsIDY0NzE1LCA2NjM4NCwgOTUxOCwgNjYwOSwgMTA0MzQsIDcwODQ1LCAxMTMxOSwgMTA5NywgCisgICAgMTI4OTY0LCA5MTc1NjQsIDQxNzMwLCAxMjkxODEsIDkyNTEyLCA3Mzg0NywgNzQ4NDUsIDY1MTcyLCA0MTcyOCwgNDE3MjEsIAorICAgIDE5NDc4MCwgMTk0NzY5LCAxMjE0OTksIDQxMjAzLCAxMjcwNTYsIDEzMTEwLCA0MTcyNiwgMTI5MDcyLCA2NzA3NywgMTAwMCwgCisgICAgNjk2NTEsIDgzNTIwLCA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCAKKyAgICA0MTEzOCwgOTgzOTY4LCA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgCisgICAgNTUyNDgsIDEyMjM3LCA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIAorICAgIDc5MjYsIDAsIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDcxMjc0LCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgCisgICAgNjg3NjgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAxMjg1NzksIDEyMjkwLCAxMjAxNjksIAorICAgIDEyODIzMywgMTE5ODczLCAzOTM3LCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAxMTM2OTQsIDk2MjcsIDQzNjQ2LCA3ODU0MiwgCisgICAgNzg1MzUsIDk4MzIxMiwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgCisgICAgMTEzMDgsIDExOTk5NSwgOTgzNDkzLCAxMTM3MDIsIDY2ODM2LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIAorICAgIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIAorICAgIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAxMjA1MjAsIDQxODk5LCA5ODMyODcsIDgwMDIsIDEyODM2NywgNDM2NCwgNzM3MzIsIAorICAgIDk4MzU3MCwgNjQzMzIsIDEyMDk3NiwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgCisgICAgNjgyNDYsIDcyNzksIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDEwMTA4MCwgMTIxMzgxLCA5NjYwLCA5MTc5MjksIAorICAgIDEzMDEyLCA0NTcxLCAxMjgzMzEsIDAsIDExODk0MCwgMTIwNzgsIDI5NzAsIDEyOTEyMiwgMTA5MzMsIDAsIDc3ODcwLCAKKyAgICAxMjEyNDMsIDc3ODQxLCAxMDAzNTgsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMDA3MDYsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgCisgICAgOTgzOTczLCA2Njc4MiwgNDIzOSwgMTI4MDczLCAxMjY1OTIsIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIAorICAgIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDkxNzk4OSwgNjgzMTIsIDc4NDg5LCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIAorICAgIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDkyNzc3LCA3Mzg2NCwgOTgzMjAzLCAKKyAgICA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgCisgICAgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgCisgICAgNjY4NTMsIDczOTYzLCA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIAorICAgIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgNjM4NzYsIDQxNTM2LCA5MTc1ODcsIDY2NzM4LCA5MjU4NywgMzQ1OSwgODk5NywgCisgICAgMTk0NzE5LCA5MjcxNCwgMTI3MjM4LCAxMzA2MCwgNzgzMDEsIDAsIDY2Mzc3LCA2OTc4MSwgMTIwMTU5LCAxMjQ5NzIsIAorICAgIDc4NTExLCAzMTYxLCAyOTUsIDcxMjU3LCAwLCA5MjIyMywgMTIxMzI4LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCAKKyAgICA2MzkwMiwgNDM1MDEsIDY4MjEwLCAzOTcxLCA5ODM5NTksIDcwMDYzLCAyOTUyLCA3ODc2NSwgMTEwMzgsIDEwOTAxLCAKKyAgICA2MzkwMCwgNjM4OTksIDYzODk4LCA2ODA5NSwgNjY3LCAxMjMzMiwgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCAKKyAgICA5ODMyODAsIDQxNTksIDk4MzU2MiwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIDYzODc4LCAKKyAgICA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDEyMDk0MSwgNDI0MjEsIDEyOTMzNSwgNDE3MjMsIAorICAgIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIDQxOTEzLCA2Mzg1MiwgNjY4NjksIDEyODk3MSwgNDIzNDgsIAorICAgIDczODkyLCA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDEsIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDEyODYzNywgNjM4NDYsIAorICAgIDI5NzIsIDEyOTMyLCA3MjYyLCA2OTk2OCwgNjM4NDksIDQxMzg0LCA2Mzg0NywgMTEzNzQ5LCA2NTcwLCA4MzAyLCA3MjU5LCAKKyAgICA2Mzg0MiwgNDE3OCwgMTA3NDYsIDcyNTAsIDEzMjE0LCAxMDA0MSwgODEwNSwgNjM4OTIsIDEyNzc4MCwgNjk5NjksIDExMDUsIAorICAgIDQxODAsIDEyNzc4NiwgMTIwOTQsIDk0OTcsIDEyODM5NiwgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIAorICAgIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIAorICAgIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCAKKyAgICA3NDE1NCwgMTI4Mzg3LCA1NTM2LCA2NTU2OCwgOTU3NCwgMTM4OCwgNzE5MDIsIDk4MzkxNSwgMTA3NywgMTk1MDAwLCAKKyAgICA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDkxNzU0OSwgOTE3Nzg5LCAwLCA0Mjc3MywgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIAorICAgIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCA1MzM0LCA2NTA4MSwgNDMyNDksIAorICAgIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCA5MjUxNSwgNjUwOSwgMTIwMTE3LCA1MzI3LCA3ODc3NiwgMTk5MDcsIDYzODY5LCAKKyAgICAzNDc4LCA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIDYzODY2LCA3ODYyNiwgCisgICAgMTkxNSwgNDg0NiwgNjc3NTUsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAKKyAgICAxMjA3MCwgODc2MCwgMTExNywgMTEzNzUwLCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgCisgICAgOTgzNTkyLCA3ODI0MCwgMTIyMjUsIDYzODM4LCA2MzgzNywgMTAwNDU4LCA3MDE3MywgNjM4MzMsIDYwNDIsIDY2MzYwLCAKKyAgICA4MDgzLCAxMjgxNjYsIDk4MzczMywgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4MzMzMiwgNTIyNywgOTA0NywgCisgICAgNjM4MjIsIDc0Nzk3LCA2MDkxLCA5ODMzMjIsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCAKKyAgICA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDc4ODc2LCA3ODAsIDIwNiwgCisgICAgNzAxMjYsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAKKyAgICA3NTA1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDY2ODExLCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAKKyAgICAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgNzI3OTEsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIDIwODksIAorICAgIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAKKyAgICAxMjAxMDksIDYzOTcwLCAxMjExNjUsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAKKyAgICAxMjg5MjAsIDc0MDgsIDExODA5LCA4MzIyMCwgMTIxMTgxLCAxOTQ3MTYsIDI5NjUsIDcyNTgsIDg4MDgsIDY2NTcyLCAKKyAgICAxMDg5LCA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAxMTEwNiwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDk4Mzg0OSwgCisgICAgNzQ0OTQsIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIAorICAgIDc3OTM4LCA3NDM0MywgNjczNzAsIDcyNzE0LCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCAKKyAgICAxMjU4MCwgNzg1MDcsIDYxMTgsIDIyMiwgOTc5LCAzODg0LCA5ODMzMTksIDcyNzA2LCA4MzIyNywgNjUwMiwgOTgzNzYyLCAKKyAgICAxMTA4NSwgMTIxMjYxLCA2Mzk1MSwgMTI0NjUsIDkxNzg2MiwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIAorICAgIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIAorICAgIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgOTQwNzYsIDEyMTA4NiwgOTI0NjQsIDY2NzkyLCA2OTczMCwgODAxLCA0MzE2NSwgCisgICAgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCAKKyAgICA2NjgwMCwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgCisgICAgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMTk0ODczLCA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDY4MDU3LCAyNTMsIAorICAgIDAsIDY4MjA4LCAxMjA0MzksIDkyMDMsIDc0MjMxLCAxMDA3MDgsIDExNTMwLCA2ODYzNCwgNjg2NjgsIDEyMTI0MiwgCisgICAgMTExMjcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDEyMDEwNiwgNzAwNDQsIDEyNzExMCwgCisgICAgNjY4MDgsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAxMjkzMDcsIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAKKyAgICAxOTUwNjMsIDAsIDAsIDAsIDExMzY2NSwgMTIwMDk3LCAxMjc5NjAsIDk0MDc4LCA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgCisgICAgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIAorICAgIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgNjM5MDQsIAorICAgIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgCisgICAgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEwMDcwMCwgMTIwNjA2LCA3ODc1NCwgNTQxMywgNzYxOSwgMzI1NSwgMzQ5MywgCisgICAgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCAxMDA3NDMsIDQ1MTgsIDEwOTkwLCA2NTA3MywgCisgICAgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDkxNzg0NywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgNDMwNzMsIDQxNjkwLCAKKyAgICAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAxMjg4MTcsIDEyOTA2NywgCisgICAgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgMCwgNTMzOSwgNzQzMjMsIAorICAgIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAxMDA5MDEsIDEyNzc1NiwgMTk0ODE4LCAxMjcxMTYsIDU2ODQsIDg2NzgsIAorICAgIDEwOTE0LCA0MzYzMiwgNTY4OSwgNjU4MDcsIDcwODE0LCA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgNjUxODMsIAorICAgIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAxMTkwNzYsIDc0MjUxLCAxMjg5MDgsIDEyMDY0NywgMTI4OTMwLCA1MCwgCisgICAgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgNzQ0MDMsIDk4MzgxOCwgNzQyODQsIDY2NDY4LCA2NjkwNSwgMTMyNTksIAorICAgIDQ0NDgsIDExOTE1MCwgMTIxNDA2LCA4MzM0OSwgNzAwNDMsIDEzMjEsIDEwMDk4NywgMTA2NDAsIDExNTM5LCAxMTUxLCAKKyAgICAxMjExODYsIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMTg5NDksIDAsIDk4MzkyMCwgOTgzMDc1LCAxMjUwMSwgCisgICAgNjQ2MDQsIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgMTI1MTQxLCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCAKKyAgICA2NjQ2NywgMjEwNSwgODA4NywgNzI3MTIsIDY5NjMyLCA5ODk0LCAxMjcxMzcsIDEyNzg1NiwgNjk5OTUsIDQ2MzYsIAorICAgIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCA5ODM2OTUsIDExMzc4MCwgOTgzNDU2LCAxMTg5NjgsIAorICAgIDEyMjc3LCAxMjEyMzksIDExOTk1LCA5MjU1MywgMTIwNjc1LCAxMjE1OCwgNzAxNzAsIDg3NDEsIDEwMTk3LCA2ODc4MCwgCisgICAgOTI0MjYsIDExOTYxMCwgNjUzMSwgODMwNTEsIDEyNzg0NiwgNDczLCA0MzQxNSwgOTI5MzYsIDEyNDk0OSwgMTg3MywgCisgICAgMTA4NywgMTI0OTY2LCA3MTI3NSwgNzQyODAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTI3NzkyLCA3MjM3LCAKKyAgICAxMjUwNCwgNzExMTMsIDEyNjU1OSwgMTI4NzQ4LCAxMjA4ODcsIDk0ODksIDEyMDA2OSwgNzA4NDMsIDQzODQsIDc0MjIwLCAKKyAgICA2Mzg0NSwgMjA1OCwgNjk3NDEsIDEzMjk1LCA0MzE5MSwgMTI4MDMwLCAxMjg1NzEsIDExNTQsIDM4NTcsIDEyMDUsIAorICAgIDEyODk1NSwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCAKKyAgICA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIDkzOTk3LCA3MDY5NiwgNjM0NywgNzg3MTUsIDc2NTQsIDQxNzEwLCAKKyAgICA0MTk2LCAxOTQ3MDQsIDQzNywgNDE3MDksIDczNzcyLCA3MDgzMiwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgCisgICAgNjQzMDYsIDEyMTMwOSwgMCwgNDk5OSwgMTk0NjQyLCA2NzQwMSwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDEwMDQ2OSwgCisgICAgMjczOSwgMCwgODA0NCwgNzQzMTMsIDEyODIzMCwgNDE3ODksIDEyODE0MiwgMTA4MDksIDY2Mjc5LCAxMjg3NDAsIDAsIAorICAgIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCAKKyAgICA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDEwMDQ2NywgMCwgNDE3OTEsIDExMDQsIDEyNzkyMiwgCisgICAgOTgzNzI1LCAxMDY1NSwgOTgzMzM0LCA5ODM1NjEsIDEyMDE2NCwgNjM5NjAsIDEwODIsIDEyMTAyNCwgODQyOCwgNjU2OSwgCisgICAgMTI4NDI5LCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDE5NDY3MSwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgCisgICAgNjQ3MjgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgMTIwNjc3LCAxMTg4NzYsIAorICAgIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDEyODYyNywgNDE1NDUsIDEyNjQ2NSwgOTI0NDksIDEyNTIwOSwgCisgICAgMTEyMTYsIDEyMTMwNywgMTk0ODUxLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDk4MzIyNSwgODUwMywgNTEyMiwgNDE1MjcsIAorICAgIDcxOTEwLCA2NjMyMCwgNzAxNjEsIDc0OTA3LCAxOTQ4NTYsIDAsIDQxNTM3LCA2NjQ1MywgODMwMywgODI4MiwgMTE4MTcsIAorICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAxMjI5MjAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgCisgICAgNjU5MjEsIDY0Mjk5LCAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIAorICAgIDY3NzI1LCA2NTkyNiwgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgCisgICAgMCwgNjU2MDAsIDE2MzMsIDEyODMwMSwgMTI2NjE0LCA0NzYyLCAxMTAzLCA3MDgyNywgNzAxNTcsIDQ3NjUsIDk4MzQ5NCwgCisgICAgMTMwNzgsIDk4MzI3MCwgNDc2MCwgNjM4MjcsIDIwNTAsIDEwODcxLCA0MzE5OSwgMTEwMiwgMTk0NjUyLCA2NTU1LCAKKyAgICAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAKKyAgICA5ODM4NTYsIDc1MDQ3LCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyMTQ0NCwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgCisgICAgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgMTk0Njg4LCAxMTk1NzUsIDIyOTMsIDcwMTk1LCA2NjY1NCwgMTI5MDc3LCAKKyAgICA5MjY3NiwgMCwgMTMwMDgsIDEyMTE5NCwgNDM4NSwgMTAwNDYyLCAxMzAxMSwgMTI1MDA0LCA5MjU2OSwgMTE5MTYxLCAKKyAgICAxMzAwOSwgMTYwLCAyNjc3LCA3MDM4OCwgMTI3Nzg1LCA0MTc5MywgNjU3NjMsIDc0MjIxLCA3MDc5MCwgNDE3OTIsIAorICAgIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIDU3MDksIDEyNTIyMiwgNzEwNzYsIDQzODE2LCA5ODMwODcsIAorICAgIDE5NTAwNSwgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAKKyAgICAxMjEwOTEsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgMTIxMTUyLCAxMjEyMTksIDEzMTcwLCAxMjU0MCwgCisgICAgMTI1MjMzLCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCA2ODA1OCwgNzQ4NjcsIDY3NzMwLCAKKyAgICAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU0MCwgMTI4MzExLCAzMzQwLCA3NDAxNywgOTE3NTg2LCAKKyAgICAxMjA5OTQsIDEyOTE0MSwgOTI5NzksIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIAorICAgIDg2NCwgOTE3NTgyLCAxMTg5MjYsIDg5NzIsIDEwMDQ0NCwgNzg0OSwgMTIwMDkyLCA4MzEzMCwgMTMyNDAsIDE5NTA2OCwgCisgICAgNTE5MiwgNDMzOCwgNjc5ODIsIDEwOTQ4LCA2NjgyNSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgMTMyNjEsIDEzMTg5LCAKKyAgICAxMzE4OCwgOTM5OTMsIDcxODQ3LCA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIAorICAgIDYzNzgyLCA2Mzc4MSwgNjM3ODAsIDYzNzc5LCAxNTgzLCAxMTk5MjMsIDEzMjYwLCA0NTUwLCAxMjA1OTgsIDY0MjA1LCAKKyAgICAxMjkxMDcsIDcxMDcxLCA0MTUyMiwgNDE1MjMsIDY4NTIzLCAxMjkxMDgsIDY2NzU5LCAxMTM1NCwgOTQwNzEsIDAsIAorICAgIDQyNzk1LCAxMjgwNjEsIDExOTE5NSwgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIAorICAgIDQ0NzksIDExNzgsIDY1NTg2LCA2ODMxMSwgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMTI3ODg1LCAxOTUwMzgsIDY2ODI4LCAKKyAgICAxMjg5NzIsIDEyNzgzOSwgNzQ1ODAsIDY4MDksIDYzNzg2LCA2MDMxLCA2NzQwMiwgNjM3OTEsIDYzNzkwLCAxMTQ1LCAKKyAgICA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAxMjUxMjIsIAorICAgIDY0NzEwLCAxMDc0NywgMTI1LCAxMjA4MDMsIDY0ODkwLCA2NjgwNSwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIAorICAgIDEwNzQsIDEzMjU4LCA5NTM2LCA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCAKKyAgICA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAxMjkwMjUsIDEyODc3MywgMTAxMDE0LCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAKKyAgICA3Mjc4NCwgNjgxMzMsIDQxOTMwLCA2MzgwNSwgNjM4MDQsIDExMTQwLCA2MzgwMSwgNDEwODIsIDgxNDAsIDYzNzk4LCAKKyAgICA2MjYwLCA3ODgyNiwgMTI4MzkxLCA2Njc2NSwgMTE0MzksIDExOTg4LCAzODk4LCA5MjI0NiwgMTAyMDEsIDEyMjM4LCAKKyAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKKyAgICA5ODMzMzEsIDQyMjAzLCA3OTUwLCAzMTI0LCA2Mzc3MSwgNDI3ODcsIDQzODYsIDExMTQ4LCA2OTczLCAyNzkzLCAxMjQ3NSwgCisgICAgMTI1MjQxLCA3NTA1NiwgNjM3NjksIDk1MzAsIDEyMTI0OCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgCisgICAgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgMTAwNTEyLCA4NzQyLCAxOTUwMjksIDExMDUzLCAxMjg3OTYsIAorICAgIDYzNzQ0LCAxMjgxMDcsIDEyODk0MiwgNzU4OCwgNjM3NDgsIDE2OTMsIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIAorICAgIDQyMDYzLCAxMDkwLCA2ODgwMywgMTIwNzc4LCAxMTY2NSwgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAxOTUwNTMsIAorICAgIDYzODU3LCA3MTIxNiwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgCisgICAgMzEzOSwgNjgwNzEsIDMxNzAsIDEyNDg1LCA0Mzg5MSwgMTA4NzIsIDQzODkyLCAxMzAwNiwgNDM5MzMsIDEyMDA3NCwgCisgICAgMTAwNjUwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDk4MzE5OCwgODIyOCwgNzM5ODgsIDQyMDY1LCAKKyAgICAxMjI4OTMsIDQzODg5LCA5NDAzOSwgMTI3MDQxLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAxMTk4NjMsIAorICAgIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIDY1MzAwLCAKKyAgICAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAxMjA1OTIsIAorICAgIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMTI4MTQ5LCAKKyAgICA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMTIwMTU3LCAxMDg4OCwgMTIwOTM0LCAKKyAgICA2NTI0MiwgMCwgMzMzMCwgMTI5NDE3LCAwLCA2ODM0MCwgMTI0OTMxLCA5ODM2MDUsIDcxMjAyLCAzMzA0LCA0Mjc1MywgCisgICAgOTI1ODgsIDcwMjk4LCA3NDY0MywgMTYyNywgMTI5MTIwLCAxMjc3NjUsIDE5NDczNSwgNTM3MSwgMTMxMTYsIDk4Mzc3NywgCisgICAgMTgyNiwgMTE4Nzk0LCA5ODM0OTcsIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIAorICAgIDkxNzk3NywgMTI4MDA1LCAwLCA3MjczMywgNjgxMjUsIDc0ODk4LCAxNjQsIDY4MzA5LCA5NDA2NywgOTQwMDAsIDY5NTgsIAorICAgIDEwMDYzNCwgNDMxMTYsIDY3NzE5LCA3MDAxOSwgMTMyNDUsIDEwMDYzNywgNjg4MDgsIDY2ODE4LCAxMjgwMDksIDcwMDMxLCAKKyAgICAxMTA5OSwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCA5ODM0NzMsIAorICAgIDY1NTA5LCAxMjkxOTIsIDc0NDksIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMTI1MTAyLCA2MzgwOCwgOTA1NCwgOTcxLCAKKyAgICAxMzA2MiwgNzEwOTAsIDAsIDY1MTk1LCAxMDE2NCwgOTIyNTIsIDc0NDI4LCA5ODMzMjEsIDc4MTQ2LCA5MjYxMSwgMCwgCisgICAgNzAyMDQsIDEyNTEyOSwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIDEyNDk5NCwgMTMyNzYsIDEyNTEzMywgCisgICAgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDExOTA5MSwgMTIyMjksIDExNjgwLCA5Mjk1NiwgCisgICAgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCA5ODM0OTUsIDEwNDc2LCAzODU4LCA2NDE3NSwgMzkzMiwgNjQ5NTgsIAorICAgIDEyMDQzMiwgOTgzNjc4LCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDc0OTA4LCA0MTc4NCwgMTE5MTc1LCA2NDE2MywgCisgICAgNzc5OTcsIDcyNzA3LCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAxMjg2MzEsIDQxNzgxLCAKKyAgICAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgOTgzODcwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCAKKyAgICA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAxOTQ5MTMsIDc0NiwgMTE4ODI2LCAKKyAgICA3NDc4MywgMCwgMTIwMTgsIDY1Mjk0LCAxMjQ5NDYsIDE5NDkyNSwgNjg4MzUsIDk4MzQ4OCwgNDQyMiwgNDcwOCwgMzc5OSwgCisgICAgNzQyOTIsIDExOTM1NywgMTIxMTQ2LCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDEyMDM3NywgMTIxMTUxLCAxMzY0LCAKKyAgICA5ODMzMTcsIDgwMzgsIDEyMDg4MywgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDcwNDI1LCA2NzM1LCA3Mzk3OSwgMTMxNzQsIAogICAgIDczOTY4LCAxMzIyNSwgMTk0OTAyLCA2OTgwOCwgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDcxNDc2LCA0Mjg1NSwgMTE4ODU2LCAKLSAgICA0Mjg2NiwgMCwgMCwgMTI3OTg2LCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgCi0gICAgOTgzOTIwLCA5ODM1NjgsIDEyODg3MSwgMTI3ODIxLCA2NzY4NSwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIAotICAgIDEwMzQwLCAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgOTgzMjQ1LCAKLSAgICAxMjExNDksIDQxMzczLCA2ODQ4NiwgMTIzMDMsIDEyODQ3NiwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIDQxMzcxLCAKLSAgICAxMTY1NiwgMCwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgOTI3MzcsIDEwOTYsIDQzODUyLCAKLSAgICAxMjE0MzMsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgOTI5MDIsIDgwMzIsIAotICAgIDEzMjQzLCAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAxMjExNTYsIDY0ODg0LCA5MjkwOSwgMTE5MzQ1LCA4NTk3LCAKLSAgICA3MTEwMCwgMTI5MDYyLCA5ODY0LCAwLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIAotICAgIDAsIDEwNDU5LCAxMTk4NzgsIDEyNDk0OSwgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCA0MTUzMywgNjYzMzcsIDEyODY2MywgCi0gICAgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDY3ODU2LCAwLCA0MzYzOCwgNzg1MzYsIDEyMTE4NywgNjI2MSwgCi0gICAgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAxMzIwNiwgMTI1MDY0LCAKLSAgICA5MTc3OTUsIDI5MjUsIDczODA5LCAxMzA1NiwgOTI5MTQsIDEzMjEyLCA0MzIzOCwgMTIxMzk2LCAxMzE5MCwgMTMxODcsIAotICAgIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAxMjEwODksIDUyNDIsIDExOTE3OSwgNjQ0NzYsIDE2OTQsIDgyMTYsIDcxMzY5LCAKLSAgICA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcyOCwgNDM1NDQsIDEyNjQ2NiwgMCwgNDE0NDQsIDY1NjIxLCA2OTk1NSwgCi0gICAgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIDEyMzE0LCA2NTYxNiwgNTIzOCwgCi0gICAgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCA4Mjg2LCAxMjg1MzcsIDM5MzYsIAotICAgIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIAotICAgIDc5NjksIDEyNzI2NiwgNzIxOSwgNzE4NzUsIDEyODI1MSwgMTIwNTA5LCA5MjkwNywgNjYyMjQsIDczNCwgMjk3OSwgCi0gICAgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDcxMTkyLCAKLSAgICA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAKLSAgICAxMTEzNiwgNzE4NzYsIDExNTA2LCAxMjgzOTUsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAwLCA0MTc3NSwgMCwgNzEzMCwgCi0gICAgNDE3NzMsIDAsIDEwNjYzLCA3MDEzMCwgMCwgOTgzOTc0LCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgCi0gICAgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDEyNzk2NCwgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgCi0gICAgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgCi0gICAgMTk0OTMwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgCi0gICAgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIDY2NDE4LCA2NjYyMSwgNzQyMTksIDY2NDEyLCAKLSAgICAxMjg4MjIsIDExODk5NywgODAxMiwgNTY3NCwgMTIzNTMsIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIAotICAgIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIAotICAgIDEyOTQsIDAsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAxMjA3MjUsIDQyNDM2LCAxMjE0MDAsIDEyMTE4MywgMCwgCi0gICAgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgCi0gICAgMTI5MDMyLCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDAsIAotICAgIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIDU4NjUsIDkzMDA5LCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKLSAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDgzMTg0LCAwLCA4NDcsIAotICAgIDEyODI0MiwgOTUyOSwgODMwMTgsIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIAotICAgIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAxMjAwMzksIDQyNjgzLCA3MTg0OCwgOTgzMDU1LCA3MTE0LCAxMjY1MjEsIDAsIAotICAgIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIAotICAgIDE5OTYzLCA1Njk4LCAxOTQ3NjgsIDk4MzI3MiwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKLSAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDcwMzA0LCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIAotICAgIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgCi0gICAgNDE4MDIsIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIAotICAgIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIAotICAgIDU4MTgsIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAwLCAKLSAgICA4MDcsIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDk4MzMxOSwgNDEzNTYsIAotICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDk4MzI5MywgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAorICAgIDQyODY2LCAxMDEwNzcsIDAsIDEyNzk4NiwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAKKyAgICAxMTkzNTQsIDE5NDk0MCwgOTgzNTY4LCAxMjcyNTMsIDEyNzgyMSwgNjc2ODUsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIAorICAgIDEwNDA0LCAxMDM0MCwgNDE0NzMsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgCisgICAgOTgzMjQ1LCA3MDY4NCwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgCisgICAgNDEzNzEsIDExNjU2LCA5ODM2OTEsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDkyNzM3LCAKKyAgICAxMDk2LCA0Mzg1MiwgMTIxNDMzLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIAorICAgIDkyOTAyLCA4MDMyLCAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMTIxMTU2LCA2NDg4NCwgOTI5MDksIAorICAgIDExOTM0NSwgODU5NywgNzExMDAsIDEyNzU1OSwgOTg2NCwgOTgzOTQzLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCAKKyAgICA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDcyODMwLCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIAorICAgIDQxNTMzLCA2NjMzNywgMTI4NjYzLCA5MjE4NCwgOTgzODYwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCA2Nzg1NiwgMCwgCisgICAgNDM2MzgsIDc4NTM2LCA3MjcxOSwgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIAorICAgIDEzMjkyLCAxMzIwNiwgMTI1MDY0LCA5MTc3OTUsIDI5MjUsIDczODA5LCAxMzA1NiwgOTI5MTQsIDEzMjEyLCA0MzIzOCwgCisgICAgMTIxMzk2LCAxMzE5MCwgMTMxODcsIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAxMjEwODksIDUyNDIsIDExOTE3OSwgNjQ0NzYsIAorICAgIDE2OTQsIDgyMTYsIDcxMzY5LCA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDE5NDYyOSwgNDM1NDQsIDEwMDQ0MSwgMCwgCisgICAgNDE0NDQsIDY1NjIxLCA2OTk1NSwgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMDA5MjQsIAorICAgIDEyMzE0LCA2NTYxNiwgNTIzOCwgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCAKKyAgICA4Mjg2LCAxMjEyOTIsIDM5MzYsIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAKKyAgICAxMDA0OTAsIDQzNzksIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCA3MTg3NSwgMTI4MjUxLCAxMjA1MDksIAorICAgIDkyOTA3LCA2NjIyNCwgNzM0LCAyOTc5LCAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgCisgICAgNDE0NzcsIDExOTI1NiwgNzExOTIsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgCisgICAgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDExMTM2LCA3MTg3NiwgMTE1MDYsIDY1OTM0LCA0Mjg0MSwgMTMyNjcsIDEyODQyMSwgCisgICAgMTI0OTg4LCA0MTc3NSwgMCwgNzEzMCwgNDE3NzMsIDkxNzg4OCwgMTA2NjMsIDcwMTMwLCAxMjUyMjUsIDk4Mzk3NCwgCisgICAgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAKKyAgICAxMDA0OTMsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgNjc4MTQsIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgNzAwMDQsIAorICAgIDQzMzg2LCA2ODA5NywgNjQ1NzUsIDEyNjYzNywgMTE5NjUsIDcwNzIwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgCisgICAgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgMTE5NjUxLCAxMjg1MTQsIDkxNzkxNSwgNDE5MjEsIDExODg1OCwgCisgICAgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIDEyODgyMiwgNzA3MTgsIDgwMTIsIDU2NzQsIDEyMzUzLCAKKyAgICA2NjQyMSwgMTIzNjEsIDU2NzcsIDU1ODgsIDkyMzQ4LCA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgNTY3MywgODMxMTMsIDU2NzYsIAorICAgIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAxMjA4NzgsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAKKyAgICAxMjA3MjUsIDQyNDM2LCAxMDA0OTcsIDEyMTE4MywgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIAorICAgIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgMTIwMDg2LCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgCisgICAgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDk4Mzg0MCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgCisgICAgNTg2NSwgOTMwMDksIDc5NTYsIDU5OCwgOTgzMjYwLCA2NDY0OSwgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIDU2NzEsIAorICAgIDEyMDA0MSwgOTgzMjU3LCA4MzQ3OCwgOTgzOTI5LCA3MTI2NiwgOTE3NjE4LCA4NDcsIDEyNTA2NSwgOTUyOSwgODMwMTgsIAorICAgIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAKKyAgICAxMjAwMzksIDQyNjgzLCA3MTg0OCwgMTAxMDk1LCA3MTE0LCAxMjY1MjEsIDAsIDQzMTkwLCA2NTQ2MywgMTU1NCwgNzA2NTcsIAorICAgIDQyNjExLCA0MjU2MywgMTAxMDcxLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIDE5OTYzLCA1Njk4LCAKKyAgICAxOTQ3NjgsIDEyMDczMCwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCA2ODE0MSwgODM3MiwgCisgICAgMTAwODAwLCA2NTExNiwgMCwgNzAzMDQsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgMTA1NjgsIAorICAgIDkxNzU2NSwgMTI3NDAwLCAyODY5LCA5MTc4NDMsIDQxMDE1LCA3NDQ3MywgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAKKyAgICA5ODM2NTIsIDQyNjA4LCA3ODQ2OCwgOTg4NCwgNDc1OSwgNzM3NjgsIDEyMDI5NiwgMTAyNjYsIDQxMzU5LCAxMTcwLCAKKyAgICA0MzM2NSwgNjk4MTAsIDczOTA4LCAxNjA5LCA5MDIsIDkyNzczLCA2MzkzNiwgODMyNDcsIDExNjYxLCA4MTIyLCA1ODE4LCAKKyAgICA4MzI0NSwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDk4Mzk2NiwgMTIxMDI4LCA4MDcsIAorICAgIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDEyODk1MSwgNDEzNTYsIAorICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDEwMDUxOSwgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAogICAgIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDEyODUyMSwgNzg2ODEsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAotICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDYzNiwgMTIwMDc5LCAKLSAgICAxMjg3OTMsIDAsIDQzMzkzLCAxMDA5NCwgNzAxNjQsIDExNTI5LCAxMDg1NywgOTI5NDQsIDY2NDM2LCA2NTQ2LCA5MywgCi0gICAgODEwMiwgNjczMjMsIDY4NDA1LCAwLCAxOTQ3MTQsIDgxNzEsIDExODg4OCwgMTE5MDk3LCA4Mjk5NiwgOTE3NTQzLCAzODMsIAotICAgIDcxNTQsIDQxNjU2LCA0MzQ5NSwgOTQwNDAsIDY3MTYyLCA1MTg3LCA3MTI5NiwgNzEwODYsIDExMjg2LCA2ODYyMCwgCi0gICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAxMjczNzcsIDQxMDA1LCA5ODM4MTAsIDAsIDEyODQ3MSwgODI5MiwgMTI1MTA4LCAKLSAgICA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgMTI3OTc0LCAKLSAgICAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgNDE5OCwgCi0gICAgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKLSAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAxMjgzNiwgMCwgCi0gICAgMTEzODAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAxMjEzMzMsIDEyODg0MywgNzQ2NCwgMCwgNjU4NjUsIAotICAgIDAsIDE5NDY1MCwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCi0gICAgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCAKLSAgICA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgCi0gICAgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIAotICAgIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgCi0gICAgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCAKLSAgICA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgCi0gICAgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIAotICAgIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIAotICAgIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCAKLSAgICA5MTEsIDc1MzksIDAsIDQwOTYzLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgCi0gICAgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDk4MzIxNSwgMCwgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIAotICAgIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgOTgzMTQ4LCAKLSAgICA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgCi0gICAgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgCi0gICAgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAxMDc3MywgNzA4NjgsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgCi0gICAgODUyMCwgMTMxNDYsIDEyNzA5NiwgNjM5MzEsIDgzMjc1LCA2NTkwMiwgMjg4MiwgODMzMzQsIDAsIDEyODQzLCA0NTIwLCAKLSAgICAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NjAsIDAsIDczODYwLCA4MzMzNSwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgCi0gICAgNzA4NzEsIDAsIDkxNzg2NCwgNDM2NzksIDEyMTAyNiwgNjUxMTcsIDkyMjcwLCAwLCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKLSAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEyODc4OSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxOTQ5MzUsIAorICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDU4NiwgMTIwMDc5LCAKKyAgICAxMjcyNDksIDEyMDc5NywgNDMzOTMsIDEwMDk0LCA3MDE2NCwgMTE1MjksIDEwODU3LCA5Mjk0NCwgNjY0MzYsIDY1NDYsIAorICAgIDkzLCA4MTAyLCA2NzMyMywgNjg0MDUsIDAsIDE5NDcxNCwgODE3MSwgMTE4ODg4LCAxMTkwOTcsIDgyOTk2LCA5MTc1NDMsIAorICAgIDM4MywgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCAKKyAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgNDEwMDUsIDk4MzgxMCwgNDMyMDUsIDEyMDgyOSwgODI5MiwgCisgICAgMTI1MTA4LCA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgCisgICAgMTI3OTc0LCAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgCisgICAgNDE5OCwgNDI3MjUsIDk4MzMxMSwgNjc2NTYsIDk5OTUsIDEyMDA3MiwgOTI1NTIsIDAsIDEyOTMxLCAxMjExMTAsIDQyNjg0LCAKKyAgICA3NDI4NSwgMjA4OCwgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAxMjc5MjAsIDE5NDcxMywgCisgICAgMTI4MzYsIDEyNTIxNCwgMTEzODAwLCA3NDM0MiwgODU5MywgMTIwNjQwLCAwLCA2ODQ0NSwgMTMyNTUsIDEyMTMzMywgCisgICAgMTI4ODQzLCA3NDY0LCAxMDEwNjYsIDY1ODY1LCAwLCAxMjg1MzUsIDEyNzE0NCwgOTIzOTUsIDkzNDIsIDEyMDQ2NCwgCisgICAgNzAzNzYsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIDQxMDA3LCA3NDM3NSwgOTgzNzAxLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAKKyAgICA4MzUwMSwgMCwgODMyNTcsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIDExOTEzNiwgNjg2NTMsIDQzNTU4LCA1NTIyLCA3NTAyNiwgCisgICAgNjEsIDEyMDk1OSwgNzQxMDUsIDM2MzMsIDEyMDA4MiwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDgzMjgxLCAKKyAgICAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgNzEwNzgsIDgxMjYsIDY2NDgzLCAwLCAxOTQ2NjIsIDQ0MSwgCisgICAgNDI2MjEsIDcwNjYwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCAKKyAgICA2NTgzNCwgODMyNCwgMTE4OTQ0LCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDc0ODUzLCA5ODM2NTksIDg5MzAsIAorICAgIDY2Njc4LCA2NzIxNiwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMTIwOTkyLCAxMjExNzUsIAorICAgIDc3NDMsIDgzNTAyLCAxMjQ5OTYsIDc3OTA0LCA3NzkxMywgNzc5MDUsIDkwMzQsIDYwMzksIDEyOTEzOSwgMTAwNzUsIAorICAgIDk4Mzc2NSwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgCisgICAgMTI3NDcxLCAxMjUxODgsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgOTgzNDg3LCA0MDk2MywgMTAwNDQ3LCAKKyAgICA2NTE1OSwgNjQzOTAsIDAsIDk4MzE2MCwgNTUyMCwgMTE2NjIsIDEyNzQ3MywgNjUzMzAsIDQyODEyLCAxMTk5MTIsIAorICAgIDEyNjY0NywgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgCisgICAgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgMTAwODA3LCA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgCisgICAgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgCisgICAgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAKKyAgICAxMDc3MywgNzAyMDYsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgMTMxNDYsIDcyODA1LCA2MzkzMSwgCisgICAgODMyNzUsIDY1OTAyLCAyODgyLCA4MzMzNCwgMTI4Mjg1LCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgMTI5MDkyLCAKKyAgICA5ODM2NjAsIDEyMDA2OCwgNzM4NjAsIDgzMzM1LCAxMjgyODksIDY0MzQ1LCA5ODM1NTQsIDkyMDEsIDEyODMxNCwgNzA4NzEsIAorICAgIDk4MzgwOSwgOTE3ODY0LCA0MzY3OSwgMTIxMDI2LCA2NTExNywgOTIyNzAsIDk4MzYzNiwgMTA0MjcsIDEyMTUwNiwgMzg0NCwgCisgICAgNjg0MiwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDkzMDMwLCAxMDEwNTEsIDk4MzYzOCwgOTI5MjgsIDc4MywgMTE5NTc3LCAKICAgICA5MjE4NSwgMTI3MjIxLCA3Mzg1NSwgNjgwMzIsIDY1MDU2LCAzNjIwLCA0MTE4MCwgNjgzNzgsIDQ1NTYsIDY3ODM5LCAKICAgICA2ODQ4MCwgMTk0OTMzLCA3NDI1MCwgMCwgNjc2NTcsIDEwNTEwLCA0MzgyLCA2NjQ4MiwgNjc4MjMsIDAsIDEyNzUyNywgCi0gICAgOTE3NywgODkwMiwgOTM5NTgsIDk4MzksIDEyMDcwMCwgMTI4OTEsIDk4Mzc1NSwgOTgzNjM2LCA2Mzk5OSwgMjAxNiwgCisgICAgOTE3NywgODkwMiwgOTM5NTgsIDk4MzksIDEyMDcwMCwgMTI4OTEsIDk4Mzc1NSwgOTgzMjM5LCA2Mzk5OSwgMjAxNiwgCiAgICAgNDE5MTcsIDk3ODgsIDYzOTI4LCA2NzY5NiwgMTg2MiwgNjU4MDAsIDkxNTUsIDY2NjIzLCA5Nzg2LCA2NTA4MiwgNDE5MTksIAogICAgIDg1NzksIDQxOTE0LCA3OTgxLCAwLCA2NjAxNywgNDUwOCwgNjQ4ODMsIDkyNDU2LCA5MjUyMiwgMTI3ODE0LCAxMjA4MzQsIAogICAgIDY0NTkyLCA3NDI3NiwgNjc2ODgsIDY3ODQsIDc4Nzg4LCA2ODE4MSwgMCwgNzEyMTgsIDExMzgyMSwgNjYzNjYsIDEyMTQ3LCAKICAgICA5MDI0LCA2NjM3OCwgNjY0NzIsIDEyNDk3NiwgNjQyODksIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIDcxOTM1LCA2NDUwOSwgCiAgICAgNzgxNTIsIDExMzY5NywgMTI2NTA1LCAxMTA1MSwgMTk0OTI4LCAwLCAxMTM1NSwgNjU4ODUsIDEyMTMxOSwgMTI3OTQxLCAKLSAgICA0MTIxNCwgMCwgMTIyOTksIDAsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAxMjY2MDksIDQwNDAsIAotICAgIDEyMDU3MCwgNjE2NywgNzQ1MTksIDYzOTIyLCA2NTk0LCA5ODM3NDAsIDAsIDAsIDM2MjQsIDQzMDM2LCAxMjk0NzIsIAotICAgIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAxMjY5OTAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgNjU2MDUsIAotICAgIDY4MDMsIDEyMDk2OCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgCi0gICAgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIDExNTE4LCA4MzI5MiwgCi0gICAgNzg3OTAsIDk4MzM4MSwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCA2Mzk2MCwgOTU5MSwgNDUxNiwgCi0gICAgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDkyMzI1LCAwLCA2ODA3OSwgCi0gICAgMTIxMzQ0LCAxMTM5NywgMjg4MCwgNzA4MDYsIDkxNzgyOSwgMjg3MiwgMCwgODMzMjEsIDM0OTgsIDQzNzgsIDkxNzUzOSwgCi0gICAgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMTk0OTkxLCAwLCA5ODMwNDAsIDE5NDkxMCwgCi0gICAgMTIxMzkyLCA4MTYxLCAzOTMsIDEyMDEzLCAwLCA5ODMxOTgsIDExOTEwMywgNDE1LCA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCAKLSAgICA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDcxMDU4LCA2Mzk2MSwgNDQ3MiwgOTgzMjk5LCAwLCA3ODE1OSwgCi0gICAgNjk2OTksIDEyNzMwMSwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIDEwMzMxLCA2MzgzMCwgCi0gICAgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDc4NjU0LCA0MjQ1MywgMTYwNCwgOTU2NSwgMTA1MzksIDY5NzAxLCAKLSAgICA2NTc2NCwgNDE0MTUsIDY1NzY3LCAxMjkxOTYsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAwLCAwLCAKLSAgICA2Mzk4MCwgMTE4MDEsIDM2MjIsIDE5NTA5MiwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAKLSAgICAxOTY2LCA0MzYyOCwgOTgzOTA4LCA5ODMyOTQsIDgzMjY3LCAxMjEwNTIsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgCi0gICAgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCA5MjIxMywgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgCi0gICAgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgOTgzMTU3LCAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDgzMzIzLCAxOTQ2NzAsIAotICAgIDEyMDgzNiwgOTIzNTEsIDc0ODEzLCA3NDQyNSwgMTEyOTksIDE1NjEsIDExODg4MSwgOTIzMTgsIDY0OTQyLCA5MzAyMSwgCi0gICAgMTk0NzMzLCA3MDQxMSwgNzg3MTgsIDEyMTE0MCwgNzQzMDEsIDY4ODI1LCAxMTI4MCwgMTI4NDg5LCA2OTc4NCwgNzQwNjAsIAotICAgIDEyODM5MiwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIDEyNDk4OCwgNzQwMiwgCi0gICAgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2NjgzMiwgOTI5NjYsIDEyMDg1MiwgNTQwNSwgCi0gICAgMTI3ODc1LCA2NDg2NiwgMTIwOTY1LCAxMTk1ODMsIDExOTEyMiwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCAKLSAgICA2NDY5MCwgMzI1NCwgOTgzMTY2LCAxMjg5NDQsIDkyNjk2LCA0MjM5MCwgNDM2NzgsIDE5NDcyNSwgMTI5MTI3LCA2NTA3NywgCi0gICAgMTI5MDU5LCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAxMTUyMCwgNTYxMSwgODMwMjEsIDMzNzcsIDAsIDAsIAotICAgIDc0MzU0LCAxOTQ1NzgsIDc4MjI4LCA5ODM3MjIsIDk4Mzc2MiwgNDI2OTEsIDEyNzg4NiwgMTIwOTQ4LCA2ODA5MSwgCi0gICAgMTI4NDA0LCA3NTAyMywgMTM3OSwgMjQ2LCA3NDY0OSwgOTgzNzYxLCAzNzg4LCA5MjUyMCwgMTEwNDEsIDY3MjAyLCAKLSAgICA2NjMwNCwgMCwgMTIxMjEzLCA4OTE3LCA0MjQwMywgMzAxLCAwLCAxMjg1MDAsIDEyNzA0NiwgMCwgMCwgMTEzODIyLCAKLSAgICAxMDY1NiwgMTI1MDQyLCA2NTIxNCwgOTI5ODcsIDQyNTY3LCA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgCi0gICAgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDE5NDU3NCwgMTE0NDMsIDk4MzYwMywgCi0gICAgNjYzMTksIDY4NDEsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAxMTkxMTcsIDc0NDg1LCAKLSAgICA0MjQ0MiwgNjU0NzAsIDk4MzkwNywgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCA2OTk4MiwgNzA1MDUsIDk4MjgsIAotICAgIDAsIDQzNTA1LCA0MjI4MCwgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAKLSAgICAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgMCwgNjgzMTUsIDAsIDAsIDc0MDQxLCA4MzE0NCwgNzAwNDUsIDQzNTM5LCA1NDExLCAKLSAgICA0MjE5NiwgMCwgMCwgMCwgOTE1MCwgNjY4MzEsIDQyMzkzLCAxMzA4NiwgMTMxMCwgNjY4NDgsIDkzMzcsIDEyMDUyLCAKLSAgICAxMDY0MywgNTUyNzEsIDEyODk1MSwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCA4MzMxNiwgCi0gICAgMTk0ODIyLCAxOTQ3NTYsIDc0MzEwLCA2NTU0LCA5NDA1OSwgMTE5MTQsIDU0NTIsIDAsIDAsIDkyNzcyLCAwLCA5MTc4ODAsIAotICAgIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDExOTU2NCwgOTY1MCwgNDMzMzAsIDEyMTAzMywgMTI4NTA1LCAxNDA2LCAxMjUwMDcsIAotICAgIDQyOTI1LCA3NDYzOCwgMTk0NTkzLCA2NjI1NiwgNDE0MywgMTI4MTM2LCAxOTQ3NjIsIDY1NzQ4LCA0MTQxLCA5NjgyLCAKLSAgICA2NTI4NywgMTUwOCwgMTI3MDEzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIDQxNDUsIAotICAgIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgNDI5MzIsIDQzNDAzLCAwLCAwLCAKLSAgICAxOTQ3ODMsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA5ODMyMDUsIDEyOTU1LCAxMDU5NiwgMjg4OCwgODMxOTAsIDAsIAotICAgIDEyMTM1NCwgOTY1NywgOTAxOSwgMTIxMTU0LCAwLCAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDY3MzI1LCA2ODY3OSwgCi0gICAgNDM1NTIsIDc1MDEsIDYzMjgsIDE5NDk2MCwgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCAKLSAgICA2ODM4MSwgMCwgMCwgODk4NiwgNDM4MzgsIDEwNjMyLCAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDE5NDk3MCwgMTI2NjQ3LCAKLSAgICAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCA4MzE5MiwgNDMzOTQsIDU1NSwgMCwgMCwgNjY2NDYsIAotICAgIDEyODk4MCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIAotICAgIDQxOTI3LCAxMDU4MiwgMTIwNDU3LCAxNzg0LCAxMzYxLCAxMjA5MjEsIDEyMTUxNiwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgCi0gICAgMTMxNTgsIDkyMTY2LCA3MjExLCA3MTg4NCwgOTM3MSwgNzM5NzMsIDEyODQ0MSwgNjgyOCwgMTYyNSwgNzY2NCwgMTI4NzY4LCAKLSAgICAxMzQyLCA2ODQ0MCwgNjQxNzEsIDkyNjQyLCAxMDkwMywgOTgzNDk2LCAwLCA5MjUyNywgMCwgNzA0MzgsIDQ0ODIsIAotICAgIDQxNjA2LCAxMjg5MzQsIDEyNTAzMywgMTIxNDc1LCAwLCA2NDM4MSwgOTgzOTQwLCAxOTQ5NzQsIDE5NTA5MCwgNDIyNDUsIAotICAgIDEyNjQ2NywgNDE5NzIsIDAsIDQ0NCwgOTgzNDM5LCA5MTI3LCA2NjY4NywgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIDAsIAotICAgIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAwLCA3MDE3NywgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIDY4MzE2LCAwLCAKLSAgICA5ODMyNTgsIDQwOTkwLCA0Mzc2NSwgMTIxMjYyLCAzNDkyLCA5MTc5MDYsIDExODc4NCwgMTI5MDI2LCAwLCA5ODM1NjYsIAotICAgIDEyODM4LCA2NzIwOCwgMTk5NDgsIDQxNjc3LCAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgOTgzMjYxLCAxMTkwNTksIAotICAgIDEyMDM2LCA0MTMwOSwgMTI4MTYxLCAwLCA4MTUyLCAwLCA0MTU1MCwgMTIyMjcsIDk4MzYxMywgMCwgMTI4MjgsIDEyNzUxMSwgCi0gICAgNzUwMTUsIDEyMDk2NCwgMTIwNzA4LCAwLCAwLCAxMDM4NiwgNzUwNjgsIDExOTk1NSwgMTI3MzAzLCA5MjY4MCwgOTgzMTM0LCAKLSAgICA2ODE1NCwgMTI3ODc2LCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgNzAwNTIsIAotICAgIDY0NDM5LCAxMjg4NjQsIDY4MDYyLCA5MjY4NiwgOTgzODc1LCAwLCA0Mzg2NiwgMTI4ODgxLCAwLCAzMzk1LCA5MzYyLCAKLSAgICAxMDg3OCwgNDMyNjAsIDAsIDc4MzYyLCA2NDgzMCwgMCwgMTI1MDQ2LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgCi0gICAgMTIxMTAwLCA3MTM0NCwgNDczNSwgMTExMTEsIDYxMTksIDEyODIyLCA0MjY5OSwgMCwgOTgzODI0LCA3NDgxOCwgMTQyMywgCi0gICAgMTI4OTIzLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgMTI4NjM0LCAxMTg4OTIsIDAsIDk0NzIsIDY3NzM0LCAKLSAgICAxMTkyOSwgMTI2NTU3LCA3MTcwLCA5NTk2LCA2MTMwLCAxMjg4MjYsIDQzNjI5LCAxMTU3OSwgNzE0NzUsIDAsIDkyNTAxLCAKLSAgICAxMjUwODEsIDc4MDQ2LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzYsIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIAotICAgIDY4NDE0LCA3NDYxNCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIDExNzc2LCA3NTU4LCA3MDEwOSwgCi0gICAgNjU2MjcsIDAsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgOTgzMDk0LCAwLCAxMTkwMjMsIDY1MzY1LCA3Mzg3NywgCi0gICAgNjU2MjgsIDc4MDE5LCAxMTkyNzIsIDgzMTE4LCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgCi0gICAgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDEyNTA1NywgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgCi0gICAgNDMwNzgsIDEyNzc4OSwgMTE4ODA5LCA2NzIzMiwgMTA4OTksIDY1NDY5LCA3MDEyNSwgMCwgMCwgMjQxMCwgOTkzLCAKLSAgICA4MzExNywgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAwLCAxMTkyNTMsIDEyNDk2MywgNzExMCwgNzQ0NjIsIAotICAgIDIwNjYsIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCA2ODg2MywgNDIyNCwgMTMzNiwgNDE1MTgsIDEyMTMxMSwgCi0gICAgMCwgMCwgMCwgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAxMTkxNTMsIDEyMDQ0MSwgMjcyLCAKLSAgICA0MjYzLCA4NzkzLCA5ODM4NTYsIDAsIDQxNTAyLCAxMjgxMzMsIDk4MywgMTI1NDksIDEyNDk0MCwgMCwgMTE5MCwgNDEwOSwgCi0gICAgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxMjA5MjYsIDcwMDI3LCAyMDk5LCA1MTIwLCAKLSAgICAyNDA5LCA3Nzk5LCAwLCA3NDQyNCwgMCwgMTIxMDQxLCA0NzMxLCA5MjI3OSwgNjY2MjksIDEyODEyNywgOTI1MjUsIDEyNTUsIAotICAgIDQxNDksIDkyNDcsIDc0OTc3LCA5OTEzLCA5ODM4MjgsIDEyMTEwMSwgNjQ5MTQsIDkxNzc4NywgNjUxMDEsIDExMzcxNCwgCi0gICAgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgMTA4NDIsIDQxMzU0LCA0MjEyMywgNDMwOTcsIAotICAgIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgOTE3OTAwLCA4MTgwLCAxMjUwNTUsIDAsIDk5NzIsIDczODY1LCAKLSAgICA0NTE5LCA2MTE0LCAxMDg5OCwgNDMwNzIsIDkyNDY1LCAwLCA5Mzk2MCwgOTgzMzI0LCAxMjY1ODEsIDEwNjk1LCAwLCAKLSAgICA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCA5MTc4OTcsIDEyOTEzNCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgCi0gICAgNjQzMjEsIDgzNTksIDgzMjg2LCAxMjY4OSwgOTgzMzEyLCAxMTI0NSwgMTI4MTA1LCA5ODMzMTQsIDcxODU5LCA2ODE4MywgCi0gICAgOTgzNDE1LCAxOTQ4MjksIDEyODcsIDU0MzYsIDAsIDcxMDk3LCA3NDE0MiwgOTIzMjgsIDc0MTUyLCA3MDIwNSwgNjA1MSwgCi0gICAgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgODI5NjIsIDEyODkwOCwgOTMwNDMsIDEyMTAxMywgMCwgMzY1MiwgMTA1MzcsIAotICAgIDEyMDI4MiwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAxMjg2NjQsIDgzMjQ0LCAxNDg5LCAwLCAwLCAwLCAKLSAgICAzODk5LCAxMDA3LCA0MjEyNCwgNDM4MjgsIDQyMTIyLCA5MjMzNywgOTIzNjcsIDAsIDExOTg1LCAxMzQ1LCA3ODYwMCwgCi0gICAgMTE5ODMyLCA5MTc1NjMsIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAxMjkxMzEsIDY0MzAsIDc4NjA4LCAKLSAgICA3ODYwNCwgNzg2MDUsIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDEyODQ4MSwgCi0gICAgMTIxMjcwLCAwLCA3NTAyNywgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCAyMjk3LCAwLCAKLSAgICA3MzgzNywgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCA4MzE1MiwgOTkzMywgNzQwMTEsIAotICAgIDY2NTE1LCA3NjcsIDU1MjQsIDcwMjgsIDAsIDkyMTY4LCAxMTk4MjcsIDExOTgxNywgOTI5NTAsIDc4NjMzLCAxMDg5NiwgMCwgCi0gICAgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjQzNCwgOTQwMTgsIAotICAgIDExODgyMywgNjUzNTMsIDAsIDQ2MzEsIDExODk5NiwgMCwgNjQwNywgMTEzNzM3LCA2MzM4LCA0MzIxNCwgMCwgNzU3MCwgMCwgCi0gICAgMzE5MiwgMTIwMzMwLCA4NDE0LCA5ODMzOTIsIDkzOTgzLCAxOTUwNDMsIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgCi0gICAgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIAotICAgIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgCi0gICAgMTA5NDQsIDQxMjA4LCA5ODM3MTMsIDQxMTY4LCA4MTc4LCA3NDg1OSwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgCi0gICAgNzg2MzYsIDY4MDQsIDcwNDc1LCAxOTQ3LCA5MTc1NzksIDAsIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIAotICAgIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMTI1MDY1LCA4MDE3LCAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgNjgyMjMsIDQzNDc1LCAKLSAgICA5MTc1NDgsIDQ5MDksIDEyMTI2LCAxMjc1NDAsIDEyMDY5NiwgNDkwNCwgOTI5NjEsIDQzNTAzLCAxMzY1LCA5MjUzLCAKLSAgICA0Mjc1NywgNDM0MzYsIDc0NjIsIDEyNzc3MiwgMCwgMCwgODMxNzMsIDY2ODQ1LCA2NDQxNSwgMTIwNTAwLCA4MzE3MiwgCi0gICAgNTM5OCwgMTI1MDM1LCAxMjczODYsIDkzOTUzLCAxMjczNjIsIDk4Mzc4MiwgMTE5MDE1LCA4MzE3MSwgMTI3MDA3LCA5NDc2LCAKLSAgICA5ODM4ODcsIDEyMDY5NSwgMTI3NjMsIDEyNjYwMywgMzYyOSwgMTIwODQ0LCAxMzAwNSwgMTExODEsIDM2MjgsIDAsIDAsIAotICAgIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgCi0gICAgMTIwMzcyLCA2NDY2NSwgNDMwODYsIDkxMTQsIDQzODcwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgCi0gICAgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAKLSAgICAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgNzUwNDYsIDYwMTgsIDY4MjkzLCAxMjUwMTAsIDEyMjc2LCAxMTkxMTAsIAotICAgIDY4MzcyLCAxMjgyNTUsIDkyMjU5LCA3MTg5MywgMCwgMTE5ODI4LCAxMDQ2NywgMCwgMjQ0MywgMTA5MTgsIDc4MjE3LCAKLSAgICA3Nzk0NywgMTAwMSwgOTI0MSwgMTkyNywgMCwgMTI0OTQyLCA3Mzk4NywgMTI3ODgyLCA3MTg5NSwgOTMwMTIsIDc5OTIsIAotICAgIDc3OTQzLCA0MzkzOSwgMTI4NjcsIDEyODY0OSwgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgNTE4LCAKLSAgICA2NTg1NywgMTI4MzYxLCAxMjg2NzQsIDEzMjA0LCA0Mzg3LCA4NTcsIDEyMTI1MiwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCi0gICAgMTE4NDIsIDAsIDcxMDcyLCAxMjE0NjIsIDAsIDUxMzYsIDE5NjgsIDEyODkwNiwgMTI2NjI3LCAxMzM3LCA2NDk2NywgCi0gICAgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgNDM4MjYsIDQzOTQ0LCAKLSAgICA2MTIwLCA0NzgsIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDcxODk0LCA0Mjc2LCAKLSAgICAxMjA2LCAzNjE5LCA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAwLCA0OTAsIDEwNzE1LCA3NTc4LCAKLSAgICA2ODM4NCwgOTI3NTQsIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDY4MjQ1LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIAotICAgIDc4NTIyLCA3ODQsIDQyMzk3LCAzMzQsIDEyMTA4NCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNDM5MzcsIDY5NjY2LCA0NDQyLCAKLSAgICAxMDM2NCwgNDM5MzUsIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDQzOTMyLCAxMTEwMiwgCi0gICAgMjkxNSwgMTE1MDIsIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzUwMzIsIDEyMDI3MywgNjk3NSwgMCwgNTQxNSwgCi0gICAgMTIxNzYsIDk4MzcwOSwgNzQxOTMsIDM0NjIsIDQzOTQwLCA0MjYyOSwgNzg2OTEsIDcxMTc1LCA0Mzk0MiwgMTI3MjU2LCAKLSAgICA5NzU5LCAxMjcyNTUsIDcwMDU3LCAxMjE0NDIsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCAKLSAgICA0MjQ5NSwgMTE4OTU2LCA3MDE4OSwgNDA1MSwgMTA0NjAsIDQzMzY0LCA3MTIwNiwgMTM1NiwgMTIxNjEsIDQyNzEzLCAKLSAgICAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCA0MjExMiwgNjQ0MzYsIDE4NzUsIDEwODA4LCAKLSAgICA0MjEwOSwgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgNTI4OSwgMTMxNDQsIDEyODY1OCwgOTgzMjI0LCAKLSAgICA1NTc1LCA5Njc1LCA3MTEyOSwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNzksIDkyOTc5LCA0MzIzNiwgMzM4MiwgCi0gICAgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMTEzODE0LCAxMTI2OSwgMTAxNTEsIDczNzU5LCA0MzEwMCwgCi0gICAgNjk4ODgsIDY1NTA4LCA5ODMxNDMsIDAsIDEyMTQ1MSwgODkzNSwgNzgyMzQsIDAsIDk4Mzc1NywgMCwgNjE2LCA3NDc1MywgCi0gICAgNjUxNzgsIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDc0NjMxLCAxMjY1NTEsIDEyNDk5MiwgNjA0OCwgNzQ0NjAsIDQyMTEwLCAKKyAgICA0MTIxNCwgMTI5MzMxLCAxMjI5OSwgMTAxMDc1LCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgCisgICAgMTI2NjA5LCA0MDQwLCAxMjA1NzAsIDYxNjcsIDc0NTE5LCA2MzkyMiwgNjU5NCwgOTgzNzQwLCAxMTM3MzQsIDEyNzg5OSwgCisgICAgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDExMDU5MiwgNjM5OTMsIAorICAgIDEwNDQwLCA5NjExLCA2NTYwNSwgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgCisgICAgNzgxNjQsIDQzODE0LCA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgCisgICAgMTE1MTgsIDgzMjkyLCA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDEyNTAzLCAKKyAgICA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIAorICAgIDEyNTA2NywgNjgwNzksIDEyMTM0NCwgMTEzOTcsIDI4ODAsIDcwODA2LCA5MTc4MjksIDI4NzIsIDAsIDgzMzIxLCAzNDk4LCAKKyAgICA0Mzc4LCAxMjg3NDMsIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDE5NDk5MSwgMCwgCisgICAgODMzMjIsIDEyNjYxMiwgMTIxMzkyLCA4MTYxLCAzOTMsIDEyMDEzLCA5ODMyMjEsIDEwMDUwOSwgMTE5MTAzLCA0MTUsIAorICAgIDYzOTY0LCA2Mzk2MywgNDIzNDUsIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCAKKyAgICA0NDcyLCAxMDEwNTQsIDAsIDc4MTU5LCA2OTY5OSwgMTAxMDU1LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgCisgICAgNzY5MSwgMTAzMzEsIDYzODMwLCA4MzQ1MCwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCA3ODY1NCwgNDI0NTMsIDE2MDQsIAorICAgIDk1NjUsIDEwNTM5LCA2OTcwMSwgNjU3NjQsIDQxNDE1LCA2NTc2NywgMTAwNTA2LCA4NDU3LCA0MjMwMSwgMTEzNzIsIAorICAgIDY0ODczLCAxMTk5MiwgMTk0ODc0LCAxMjkzMDYsIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTI4OTA0LCA2NDMzNiwgMTIwMTcsIAorICAgIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIDE5NjYsIDQzNjI4LCA3Mjc5NCwgMTAxMDYwLCA4MzI2NywgMTIxMDUyLCAKKyAgICA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIDQwMiwgOTIyMTMsIDEzMTQ3LCAxMjg2OTIsIAorICAgIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDk4MzE1NywgMTEzMDIsIDYyNTksIAorICAgIDQzMzk1LCA5ODMzNzMsIDgzMzIzLCAxMjgzNTgsIDEyMDgzNiwgOTIzNTEsIDc0ODEzLCA3NDQyNSwgMTEyOTksIDE1NjEsIAorICAgIDExODg4MSwgOTIzMTgsIDY0OTQyLCA5MzAyMSwgMTI3MDQ5LCA3MDQxMSwgNzg3MTgsIDEwMDkzMCwgNzQzMDEsIDY4ODI1LCAKKyAgICAxMTI4MCwgMTI4NDg5LCA2OTc4NCwgNzQwNjAsIDEyODM5MiwgMTk0OTg4LCA3Mjc1MiwgNTE0NSwgMTI0ODYsIDY1MDE4LCAKKyAgICA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxMTkwNTcsIDc0MDIsIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAxMDEwNTMsIAorICAgIDY2NjE2LCA2NjgzMiwgOTI5NjYsIDEyMDg1MiwgNTQwNSwgMTI3ODc1LCA2NDg2NiwgMTIwOTY1LCAxMTk1ODMsIDExOTEyMiwgCisgICAgMjIzNSwgNzQyNDgsIDExMzMwLCAxMjkxMjMsIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCAKKyAgICA0MzY3OCwgMTAxMDAwLCAxMjkxMjcsIDY1MDc3LCAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIAorICAgIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgOTgzODQ1LCA3NDM1NCwgMTk0NTc4LCA3ODIyOCwgOTgzNzIyLCAKKyAgICAxMjgzNjgsIDQyNjkxLCAxMjc4ODYsIDEyMDk0OCwgNjgwOTEsIDEyMTE2NiwgNzUwMjMsIDEzNzksIDI0NiwgNzQ2NDksIAorICAgIDk4Mzc2MSwgMzc4OCwgOTI1MjAsIDExMDQxLCA2NzIwMiwgNjYzMDQsIDAsIDEyMTIxMywgODkxNywgNDI0MDMsIDMwMSwgCisgICAgMTE5OTM1LCAxMTk4MjYsIDEyNzA0NiwgMCwgMCwgMTEzODIyLCAxMDY1NiwgMTI1MDQyLCA2NTIxNCwgOTI5ODcsIDQyNTY3LCAKKyAgICA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgMzE4MiwgOTgzNjA3LCA5ODM5MjYsIDAsIDY1MDM0LCAKKyAgICA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCA3NDYzMSwgMTE0NDMsIDk4MzYwMywgNjYzMTksIDY4NDEsIDYwOCwgNjAwLCAKKyAgICAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAxMTkxMTcsIDc0NDg1LCA0MjQ0MiwgNjU0NzAsIDEwMDUzOCwgCisgICAgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCA2OTk4MiwgNzA1MDUsIDk4MjgsIDc4MzExLCA0MzUwNSwgNDIyODAsIAorICAgIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIAorICAgIDEyODkxMywgNjgzMTUsIDk4MzgzOCwgMTIxMTU5LCA3NDA0MSwgODMxNDQsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIAorICAgIDAsIDAsIDEyODk0OSwgOTE1MCwgNjY4MzEsIDQyMzkzLCAxMzA4NiwgMTMxMCwgNjY4NDgsIDkzMzcsIDEyMDUyLCAxMDY0MywgCisgICAgNTUyNzEsIDcyNzI3LCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAxOTQ4MjIsIAorICAgIDEwMDczMywgNzQzMTAsIDY1NTQsIDgzMDUzLCAxMTkxNCwgNTQ1MiwgOTgzNjQ5LCAwLCA5Mjc3MiwgMTI3NTQ0LCAKKyAgICA5MTc4ODAsIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDExOTU2NCwgOTY1MCwgNDMzMzAsIDEyMTAzMywgMTI4NTA1LCAxNDA2LCAKKyAgICAxMjUwMDcsIDQyOTI1LCA3NDYzOCwgMTI1MTkwLCA2NjI1NiwgNDE0MywgMTI4MTM2LCAxOTQ3NjIsIDY1NzQ4LCA0MTQxLCAKKyAgICA5NjgyLCA2NTI4NywgMTUwOCwgMTAwNTMzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIAorICAgIDQxNDUsIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgNDI5MzIsIDQzNDAzLCAKKyAgICAxMDA2MjMsIDEwMDYyMiwgMTAwNjI1LCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgNzI3MzEsIDEyOTU1LCAxMDU5NiwgCisgICAgMjg4OCwgODMxOTAsIDAsIDEyMTM1NCwgOTY1NywgOTAxOSwgMTIxMTU0LCAwLCAyODc4LCA1MzkwLCAxMDA2OTgsIAorICAgIDE5NDk2MSwgNjczMjUsIDY4Njc5LCA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDk4MzYzMSwgCisgICAgMTI4MjE2LCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMTAwNTc1LCA4OTg2LCA0MzgzOCwgMTA2MzIsIAorICAgIDExOTM0LCAxMTQ1MiwgMTMzMiwgMTIwNzA5LCAxOTQ5NzAsIDEyMDYwMiwgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCAKKyAgICA2NDgyMiwgMjg5MiwgODMxOTIsIDQzMzk0LCA1NTUsIDEyOTQxOCwgMTI4NDc0LCA2NjY0NiwgMTI4MzI3LCAxMTkwMDIsIAorICAgIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzI3MzksIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAKKyAgICAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAxMzE1OCwgOTIxNjYsIAorICAgIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjc4MDksIDEzNDIsIDY4NDQwLCAKKyAgICA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0NDksIDkxNzgxOCwgOTI1MjcsIDEyOTM3NCwgNzA0MzgsIDQ0ODIsIDQxNjA2LCAKKyAgICAxMjg5MzQsIDEyNTAzMywgMTIxNDc1LCA5ODM4NTQsIDY0MzgxLCAxMDA1NDAsIDE5NDk3NCwgMTAwNjEyLCA0MjI0NSwgCisgICAgMTAwNjE0LCA0MTk3MiwgMTAwNjE2LCA0NDQsIDEwMDYxOCwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAKKyAgICAxMjY2MDYsIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAxMjkxMzIsIDcwMTc3LCAxMjA4MzAsIDk4MzQ1MCwgMTE5NywgCisgICAgMTI4MjgyLCAxMTQ5LCA2ODMxNiwgMTI4MDEwLCA5ODMyNTgsIDQwOTkwLCA0Mzc2NSwgMTIxMjYyLCAzNDkyLCA5MTc5MDYsIAorICAgIDExODc4NCwgMTI5MDI2LCAxMjkzNDYsIDEwMDU5MiwgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDEwMDU5OCwgCisgICAgMTAwNTk3LCA0MTA4NywgMTAwNTk5LCAwLCA5ODMyNjEsIDExOTA1OSwgMTIwMzYsIDQxMzA5LCAxMjUyMTAsIDEwMDYwMywgCisgICAgODE1MiwgMTAwNjA1LCA0MTU1MCwgMTIyMjcsIDEwMDU0NSwgMTAwNjA5LCAxMjgyOCwgMTI3NTExLCA3NTAxNSwgMTIwOTY0LCAKKyAgICAxMjA3MDgsIDAsIDE5NDYxMSwgMTAzODYsIDc1MDY4LCAxMTk5NTUsIDEyNzMwMywgOTI2ODAsIDk4MzEzNCwgNjgxNTQsIAorICAgIDEyNzg3NiwgMTc0MywgMTk0ODYwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgNzAwNTIsIDY0NDM5LCAKKyAgICAxMjg4NjQsIDY4MDYyLCA5MjY4NiwgMTAwNTg1LCAxMDA1ODQsIDQzODY2LCAxMDA1ODYsIDEwMDU4OSwgMzM5NSwgOTM2MiwgCisgICAgMTA4NzgsIDQzMjYwLCAwLCA3ODM2MiwgNjQ4MzAsIDEwMDg2NiwgMTI1MDQ2LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgCisgICAgMTIxMTAwLCA3MTM0NCwgNDczNSwgMTExMTEsIDYxMTksIDEyODIyLCA0MjY5OSwgMTIwNzQ1LCA5ODM4MjQsIDc0ODE4LCAKKyAgICAxNDIzLCAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgOTgzMjEwLCAxMjAzOSwgMTA1NTksIDEyODYzNCwgMTE4ODkyLCAxOTQ5MTAsIAorICAgIDk0NzIsIDY3NzM0LCAxMTkyOSwgMTI2NTU3LCA3MTcwLCA5NTk2LCA2MTMwLCAxMjUyNjgsIDQzNjI5LCAxMTU3OSwgCisgICAgNzE0NzUsIDAsIDkyNTAxLCAxMjUwODEsIDc4MDQ2LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzYsIDQzMjM0LCAKKyAgICA2NjAwOCwgMTI2MjcsIDAsIDY4NDE0LCA3NDYxNCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIAorICAgIDExNzc2LCA3NTU4LCA3MDEwOSwgNjU2MjcsIDcyODc2LCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDc0OTQ3LCAKKyAgICA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAKKyAgICAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCAKKyAgICA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgCisgICAgNjU0NjksIDcwMTI1LCAxMDA1NzQsIDEwMDU3MywgMjQxMCwgOTkzLCA4MzExNywgMTAwNTc3LCAxMDA1ODAsIDc4NjkzLCAKKyAgICAxMDA1NjAsIDEwMDU1OSwgNzIzMiwgMCwgMTE5MjUzLCAxMjQ5NjMsIDcxMTAsIDc0NDYyLCAyMDY2LCAxMDQ4OSwgNDIxNjYsIAorICAgIDQzNDYzLCAxMDY1OSwgMzYwMCwgNjg4NjMsIDQyMjQsIDEzMzYsIDQxNTE4LCAxMjEzMTEsIDAsIDkxNzU4OSwgOTgzNzk0LCAKKyAgICA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDEwMDU1MywgMTAwNTU2LCAxMDA1NTUsIDEwMDU1OCwgMjcyLCAKKyAgICA0MjYzLCA4NzkzLCA5ODMzODUsIDAsIDQxNTAyLCAxMjgxMzMsIDk4MywgMTI1NDksIDEwMDU2MywgMTAwNTYyLCAxMTkwLCAKKyAgICA0MTA5LCAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIAorICAgIDUxMjAsIDI0MDksIDc3OTksIDk4Mzk1NCwgNzQ0MjQsIDk4Mzg5NiwgMTIxMDQxLCA0NzMxLCA5MjI3OSwgNjY2MjksIAorICAgIDEyODEyNywgOTI1MjUsIDEyNTUsIDQxNDksIDkyNDcsIDc0OTc3LCA5OTEzLCA5ODM4MjgsIDEwMTAyNywgNjQ5MTQsIAorICAgIDEyNTAwMiwgNjUxMDEsIDExMzcxNCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MDk2LCA2NjYyNSwgMTA4NDIsIAorICAgIDQxMzU0LCA0MjEyMywgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgOTE3OTAwLCA4MTgwLCAKKyAgICAxMjUwNTUsIDk4MzkxMiwgOTk3MiwgNzM4NjUsIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCAKKyAgICA5ODMzMjQsIDc0MDU1LCAxMDY5NSwgMTI5MDU4LCA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCA5MTc5NDksIAorICAgIDkxNzg5NywgMTI4MzI2LCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIAorICAgIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgOTgzMDY1LCAKKyAgICA3MTA5NywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgNzAyMDUsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIAorICAgIDgyOTYyLCAxMjczOTcsIDkzMDQzLCAxMjEwMTMsIDAsIDM2NTIsIDEwNTM3LCAxMjAyODIsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgCisgICAgMjc5LCA3Mzc0NSwgMTI3ODIzLCAxMjg2NjQsIDgzMjQ0LCAxNDg5LCAxMjA2MjIsIDAsIDAsIDM4OTksIDEwMDcsIDQyMTI0LCAKKyAgICA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMTI1MTg3LCAxMTk4NSwgMTM0NSwgNzg2MDAsIDExOTgzMiwgOTE3NTYzLCAKKyAgICA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMTI5MTMxLCA2NDMwLCA3ODYwOCwgNzg2MDQsIDc4NjA1LCAKKyAgICA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAxMjg0ODEsIDEyMTI3MCwgMCwgNzUwMjcsIAorICAgIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDcyODYzLCA3ODYxNiwgMjI5NywgMTI5MzQxLCA3MzgzNywgCisgICAgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCA4MzE1MiwgOTkzMywgNzQwMTEsIDY2NTE1LCAKKyAgICA3NjcsIDU1MjQsIDcwMjgsIDE5NTA2NSwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAKKyAgICA2MzkxMCwgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgNzA3MzEsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyMjYyLCAKKyAgICA5NDAxOCwgMTE4ODIzLCA2NTM1MywgMTAwNDc5LCA0NjMxLCAxMTg5OTYsIDE5NTAyNywgNjQwNywgMTEzNzM3LCA2MzM4LCAKKyAgICA0MzIxNCwgMTI3MTYzLCA3NTcwLCAxMjEwMTcsIDMxOTIsIDEyMDMzMCwgODQxNCwgOTgzMzg4LCA5Mzk4MywgMTk1MDQzLCAKKyAgICAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCAKKyAgICA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIAorICAgIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCA0MTIwOCwgOTgzNzEzLCA0MTE2OCwgODE3OCwgCisgICAgNzQ4NTksIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCA3MDQ3NSwgMTk0NywgNzI3NzAsIDAsIAorICAgIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgNzI3MjIsIDgwMTcsIAorICAgIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTAxMDE1LCAKKyAgICA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgCisgICAgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAKKyAgICAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIDk4MzA2NiwgMTIwNjk1LCAxMjc2MywgMTAwNTIzLCAzNjI5LCAxMjA4NDQsIAorICAgIDEzMDA1LCAxMTE4MSwgMzYyOCwgMTE5ODM0LCAwLCA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIDY0ODA5LCAKKyAgICAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIDEyMDM3MiwgNjQ2NjUsIDQzMDg2LCA5MTE0LCA0Mzg3MCwgNDI1ODMsIAorICAgIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAKKyAgICAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDc1MDQ2LCA2MDE4LCAKKyAgICA2ODI5MywgMTI1MDEwLCAxMjI3NiwgMTE5MTEwLCA2ODM3MiwgMTI4MjU1LCA5MjI1OSwgNzE4OTMsIDExOTgxMywgCisgICAgMTE5ODI4LCAxMDQ2NywgOTgzODE0LCAyNDQzLCAxMDkxOCwgNzgyMTcsIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAKKyAgICAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCAKKyAgICA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIAorICAgIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgCisgICAgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAxNjI5LCAwLCA3OTYsIDY2NTA2LCAxMjg0NDIsIAorICAgIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDQzODI2LCA0Mzk0NCwgNjEyMCwgNDc4LCA2NTE1MSwgCisgICAgNjgxMjgsIDExOTA0NCwgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCA3MTg5NCwgNDI3NiwgMTIwNiwgMzYxOSwgNDE2MzgsIAorICAgIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgODMxNzksIDQ5MCwgMTA3MTUsIDc1NzgsIDY4Mzg0LCA5Mjc1NCwgCisgICAgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgCisgICAgNDIzOTcsIDMzNCwgNzI3MzIsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDQzOTM3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDQzOTM1LCAKKyAgICA3NzgsIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDY5OTA3LCA0MzkzMiwgMTExMDIsIDI5MTUsIDExNTAyLCAKKyAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc1MDMyLCAxMjAyNzMsIDY5NzUsIDEyODc5MywgNTQxNSwgMTIxNzYsIAorICAgIDEyMDY1MywgNzQxOTMsIDM0NjIsIDQzOTQwLCA0MjYyOSwgNzg2OTEsIDcxMTc1LCA0Mzk0MiwgMTI3MjU2LCA5NzU5LCAKKyAgICAxMjcyNTUsIDcwMDU3LCAxMjE0NDIsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzQ4MjMsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgCisgICAgMTE4OTU2LCA3MDE4OSwgNDA1MSwgMTA0NjAsIDQzMzY0LCA3MTIwNiwgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIAorICAgIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCA0MjExMiwgNjQ0MzYsIDE4NzUsIDEwODA4LCA0MjEwOSwgCisgICAgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgNTI4OSwgMTMxNDQsIDEyODY1OCwgOTgzMjI0LCA1NTc1LCAKKyAgICA5Njc1LCA3MTEyOSwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNzksIDY1NTkzLCA0MzIzNiwgMzM4MiwgNDI0NDksIAorICAgIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMTAwNDA5LCAxMTI2OSwgMTAxNTEsIDczNzU5LCA0MzEwMCwgNjk4ODgsIAorICAgIDY1NTA4LCAxMjk0MTEsIDAsIDEyMTQ1MSwgODkzNSwgNzgyMzQsIDEyOTMzNywgMTIwNDUxLCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMjIzNiwgMTI2NTUxLCAxMjQ5OTIsIDYwNDgsIDc0NDYwLCA0MjExMCwgCiAgICAgNzM5NjUsIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDc1MDUxLCA5NjgxLCA0NDc1LCA2NzQyOSwgNDExNDIsIDIxMDAsIAotICAgIDEyNTAyNCwgMTIwNzMxLCA2MDM1LCA3Mzc5NiwgNzY1MSwgNjg0NiwgNjQ0NDMsIDk4Mzk1NywgOTgzMjk2LCA5MTc5ODcsIAorICAgIDEyNTAyNCwgMTIwNzMxLCA2MDM1LCA3Mzc5NiwgNzY1MSwgNjg0NiwgNjQ0NDMsIDk4Mzk1NywgMTk0OTQxLCA5MTc5ODcsIAogICAgIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCA2ODQ4OCwgMTAzOTIsIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCA3MTE4MiwgCi0gICAgOTgwMCwgODk3OSwgMCwgMTMzMDcsIDQxMDAwLCAwLCA1MTE0LCA2NDg3LCAzMzg2LCAxMjkwOTQsIDEwMzQ0LCAwLCA1MTE1LCAKLSAgICA1Mzk0LCA0MzI0NiwgNzgyNDMsIDUxMTMsIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAxOTQ2NjksIDAsIDAsIAotICAgIDQzMDc0LCA3Mzc5OSwgMTI5MDc2LCA3ODE0NywgNTExMiwgMTIxNzMsIDc4NTQ1LCAxMjg3NzEsIDY2ODI0LCA2NTMzOCwgCi0gICAgOTgzNjc2LCAwLCAxMTk1ODIsIDQ0NzQsIDEyODkzNiwgNDMwOTMsIDQzOTY0LCAxNTg3LCAwLCAxMjczNzIsIDY0NDc1LCAKLSAgICAxMTkyMTcsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgNDM5NjMsIDQ1NjAsIDEyMDc5MywgNjc4MTEsIDkyMjc3LCAKLSAgICA5ODM2MjEsIDY0OTQ4LCA0NDMwLCA0Mzk2MSwgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIAotICAgIDEwNjI2LCAxMDk2NSwgMTIwOTA1LCA4ODkzLCA5ODMzMDMsIDEyNTQyLCAwLCA2NTM0MSwgNjc3MDMsIDY1ODI5LCA3OTI1LCAKLSAgICAxMTk4MjIsIDEwNDc1LCAxMTM4MjUsIDEyNzAxMSwgMTM1MiwgMTEwNjksIDc3MDcsIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgCi0gICAgMTI3MTAyLCA2ODIwNywgNzQ5NTYsIDcwOTksIDYwNDAsIDY3NjgxLCAxMDA3MSwgNzg1NTQsIDkzMzYsIDQzNzUwLCAKLSAgICAxMjEwNzQsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAKLSAgICAxMjg4OTgsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgNzUwNzUsIDY2ODY2LCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIAotICAgIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgCi0gICAgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgNzUwMjgsIDEyODYwMywgNjMyMywgMTI5MDY1LCA4MjI0LCAxMjg0MTcsIDg5MzgsIAotICAgIDYwNDMsIDEyNzM4LCAxMjA2NzEsIDk4MzA3NiwgNTMyMSwgNjg2NDUsIDE5NDc5OCwgMTIwMjUxLCAyNTg5LCA3NDMzMiwgCi0gICAgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCA5Mjk0MCwgMTE5MDUsIDk4MzYxNSwgMCwgMTI4NTE2LCAxMjgxNjMsIAotICAgIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgOTgzODIyLCAxNTAzLCA3ODMzNiwgMTI3MTczLCAKLSAgICA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgMTI2NjEwLCA3MDgwOCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgCi0gICAgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgNTcyOSwgMTI5MTEwLCA3MTIzMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIAotICAgIDkzNjEsIDEyNzA5MSwgMjg4NywgNzAzODksIDM1MjYsIDYyOTgsIDExOTg1MSwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIAotICAgIDExODk2NCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzExNzQsIDQzMTU1LCAwLCA3MTE5NywgMzE0NiwgMTA5NTksIAotICAgIDk0ODMsIDgzMjE5LCA3Nzg5MywgMTA5ODEsIDE2NiwgOTE3ODQxLCA4NjM1LCA5MTc4NDAsIDEwNjIzLCA0MDgsIDExOTA1OCwgCi0gICAgMTI3NTA3LCAxMzI5OCwgMTI3MjUzLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDk4Mzc5NSwgNzYwNywgMTA2MzksIDQzMzk2LCAKLSAgICAxMjkzMDAsIDExOTA4OSwgNDE2NDMsIDc0MTM0LCA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgNDE2NDUsIDY2MjkzLCAKLSAgICA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDY4MjU1LCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMTIwOTM2LCAKLSAgICAxMjEwNjksIDAsIDExODg1OSwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNjgzMzksIDEyODk0MywgNDIxMzYsIAotICAgIDEyMTQ0MCwgMCwgMCwgMCwgMzI0NywgOTI0MDIsIDY1MDE3LCAxMjg3OTQsIDY4NDI4LCA2NjY2OCwgMCwgMTIxMTEyLCAKLSAgICAxMDk4MywgMCwgMTI4Nzg3LCAwLCA0MTU2NywgMTE5ODUyLCAwLCAwLCA3ODQ0NiwgMTE5ODUzLCAxMjc5MjIsIDAsIDgyODUsIAotICAgIDEyNjUxNiwgNDUwOSwgMTIxMDQzLCA2NjQ3MSwgMTIyMTYsIDEyODgwNiwgNDA5ODgsIDgzMjIxLCA3NDgwOSwgNDE3MjcsIAotICAgIDAsIDQyODQ4LCAyMzk2LCAxMjgwODMsIDE5NDg5MiwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIAorICAgIDk4MDAsIDg5NzksIDExOTE1NiwgMTMzMDcsIDQxMDAwLCAwLCA1MTE0LCA2NDg3LCAzMzg2LCA3MDczMCwgMTAzNDQsIAorICAgIDEyNTAzMiwgNTExNSwgNTM5NCwgNDMyNDYsIDc4MjQzLCA1MTEzLCA2NjUwNSwgNDEyMDAsIDEyODU4MiwgNDQyNSwgCisgICAgMTk0NjY5LCAxMDA0MDUsIDAsIDQzMDc0LCA3Mzc5OSwgMTI5MDc2LCA3ODE0NywgNTExMiwgMTIxNzMsIDM0NDYsIAorICAgIDEyODc3MSwgNjY4MjQsIDY1MzM4LCAxMjg5NjksIDAsIDExOTU4MiwgNDQ3NCwgMTI4OTM2LCA0MzA5MywgNjI4MiwgMTU4NywgCisgICAgMCwgMTAwNTU0LCA2NDQ3NSwgMTE5MjE3LCAxMzY5LCA5ODM2NzIsIDk5NTksIDc5MjcsIDQzOTYzLCA0NTYwLCA2NjkxMCwgCisgICAgNjc4MTEsIDkyMjc3LCAxMjA2MTQsIDY0OTQ4LCA0NDMwLCA0Mzk2MSwgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgCisgICAgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgMTIwOTA1LCA4ODkzLCA5ODMzMDMsIDEyNTQyLCAxOTQ4NTcsIDY1MzQxLCAKKyAgICA2NzcwMywgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDExMzgyNSwgMTI3MDExLCAxMzUyLCAxMTA2OSwgNzcwNywgCisgICAgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAxMDA0MDcsIDY4MjA3LCA3NDk1NiwgNzA5OSwgNjA0MCwgNjc2ODEsIDEwMDcxLCAKKyAgICA3ODU1NCwgOTMzNiwgNDM3NTAsIDEyMTA3NCwgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIAorICAgIDQzMDE4LCAxMDA0MTAsIDEyODg5OCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3NTA3NSwgNjY4NjYsIDUxMjcsIAorICAgIDExMjg1LCA0MjUwMSwgNTQ5NSwgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIAorICAgIDc0MzA0LCAzNzEsIDY0MzczLCA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCA3NTAyOCwgMTI4NjAzLCA2MzIzLCAxMjkwNjUsIAorICAgIDgyMjQsIDEyODQxNywgODkzOCwgNjA0MywgMTI3MzgsIDEyMDY3MSwgOTgzMDc2LCA1MzIxLCA2ODY0NSwgNjU1MywgCisgICAgMTIwMjUxLCAyNTg5LCA3NDMzMiwgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCA5Mjk0MCwgMTE5MDUsIAorICAgIDk4MzYxNSwgMCwgMTI4NTE2LCAxMjcwMTcsIDc0NTEzLCA2MDQ5LCAxMjgyMzksIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAKKyAgICAxMjgxMjAsIDE1MDMsIDcyNzY5LCAxMjcxNzMsIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAxMjY2MTAsIDcwODA4LCAKKyAgICA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCA1NzI5LCAKKyAgICAxMjkxMTAsIDcxMjMwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAyODg3LCA3MDM4OSwgMzUyNiwgNjI5OCwgCisgICAgMTE5ODUxLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMTE4OTY0LCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3MTE3NCwgCisgICAgNDMxNTUsIDk4MzgxNiwgNzExOTcsIDMxNDYsIDEwOTU5LCA5NDgzLCA4MzIxOSwgNzc4OTMsIDEwOTgxLCAxNjYsIAorICAgIDkxNzg0MSwgODYzNSwgMTI4NzE0LCAxMDYyMywgNDA4LCAxMDA0ODAsIDEyNzUwNywgMTMyOTgsIDEyNjUxOCwgNzQyNiwgCisgICAgNDE2NDEsIDEyNzE3LCAxMjA2NTgsIDc2MDcsIDEwNjM5LCA0MzM5NiwgMTI5MzAwLCAxMTkwNTMsIDQxNjQzLCA3NDEzNCwgCisgICAgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDk4NTIsIDY2MjkzLCA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIAorICAgIDY4MjU1LCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMTIwOTM2LCAxMjEwNjksIDEyOTE2OCwgMTE4ODU5LCAxMjUyMDMsIAorICAgIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDY4MzM5LCAxMjg5NDMsIDQyMTM2LCAxMjE0NDAsIDAsIDAsIDAsIDMyNDcsIAorICAgIDkyNDAyLCA2NTAxNywgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDE5NDg4NCwgMTIxMTEyLCAxMDk4MywgOTE3NzY3LCAKKyAgICAxMjg3MDAsIDAsIDQxNTY3LCAxMTk4NTIsIDAsIDAsIDc4NDQ2LCAxMTk4NTMsIDEyNzkwNywgMCwgODI4NSwgMTI2NTE2LCAKKyAgICA0NTA5LCAxMjEwNDMsIDY2NDcxLCAxMjIxNiwgMTI4ODA2LCA0MDk4OCwgODMyMjEsIDc0ODA5LCA0MTcyNywgOTE3ODI1LCAKKyAgICA0Mjg0OCwgMjM5NiwgMTI4MDgzLCAxOTQ4OTIsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCA5ODMyNTksIAogICAgIDQyNDU3LCA5Mjg4OCwgODMyOTksIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCA5MjQxMCwgNjk2NTAsIDExNzA3LCA4MjIyLCAKLSAgICA3MzgyNSwgNzkzOSwgNzEyMTMsIDkyNDYwLCAxMjc4MDEsIDEyMTQwOCwgMTI4MzU5LCA4NTM0LCA2OTg1MywgNDA5ODMsIDAsIAotICAgIDEyMTQyMSwgMCwgNzIwMSwgMTI1NjEsIDEyMDg2NiwgNDIzNzEsIDEyNTU4LCAxNTQwLCA5MTc1NDksIDEwMDUyLCA0MDk4MiwgCi0gICAgMTE5ODQxLCAwLCAxNDg4LCA3MTE3NywgMCwgMTk0ODMxLCA5MTc1NTksIDEyODQwMSwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKLSAgICAxMjA4NDAsIDkxNzkwNSwgMTIwOTU0LCAxMjc4NzIsIDcxMzYzLCAzNTYwLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMTI4OTIyLCAKLSAgICAyOTIyLCA2MDgyLCA3MDE0NywgNjUwMDksIDk4Mzk0MiwgMTI1NjcsIDY2NzEyLCAwLCA0MTQxMiwgMTI4MTMxLCAxMTk1OTEsIAotICAgIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDgzNDYyLCAKLSAgICAxMTkxMzEsIDAsIDAsIDY3ODI2LCA0MzA4NSwgNjA1NywgNTA4LCA5Mzk2OCwgOTI5ODksIDY3OTY4LCAwLCA5MjE5OCwgMCwgCi0gICAgMTI4ODMxLCA2MzgsIDYwODMsIDExOTA3MiwgMTI0OTUwLCAwLCAyMzA1LCA3ODM0OCwgNjgwOTYsIDkxNzc3MiwgNjA1NiwgCi0gICAgNjY1OSwgNjc5NjksIDk4MzI5MCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIAotICAgIDk4Mzc4MywgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIAotICAgIDkzOTg1LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDY2NDE2LCA2NTA1LCA3NDAxMCwgOTgzMjUwLCAKLSAgICAxMzA2NCwgNTUyNjcsIDExOTExMywgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDEyOTkwLCAwLCA5MjM3NiwgMTI3NDUsIDk2NzgsIAotICAgIDEyMTEwOCwgMTIwNTg3LCA5ODY5LCA4MzE1MCwgMTc3MSwgMTI4OTY1LCA4OTM2LCA5Mjk2NCwgMCwgNDIwOCwgNzgzNDEsIAotICAgIDc4NTY3LCA3ODM0MiwgNjc3NDIsIDk4MzIwOCwgNzQxMDEsIDEyODYwNSwgMTE3NjIsIDAsIDcwMDk2LCA2ODM1LCA2ODAxMCwgCi0gICAgNjY0NzUsIDEyMDI2MCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMTE5ODMwLCA1MDY5LCA3MzczNiwgNTAyOCwgOTg5NywgCi0gICAgOTI3NzQsIDczNzM5LCA1MDI2LCA5ODMyNTUsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgCi0gICAgNDE5MDEsIDc0NzkwLCA3ODEzOCwgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgCi0gICAgNjg0MjQsIDQxMDcwLCA3NzkwMywgNzY1OCwgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIAotICAgIDE3MTYsIDk4MzY3OSwgMTA2MDAsIDc4NTU4LCA2MjAsIDQxMDAxLCA2MDI4LCA3MDQ0NSwgNDI4OTIsIDAsIDcxMTE2LCAKLSAgICA1MDI0LCA3NDk0NSwgNDEwMDMsIDY4MTM3LCA1MDI1LCA2OTg5MiwgOTgzMjA5LCA3NTAzOSwgMTE4ODg1LCAxMjc5NTYsIAorICAgIDczODI1LCA3OTM5LCA3MTIxMywgOTI0NjAsIDcyNzQ3LCA2NzEzMSwgMTI4MzU5LCA4NTM0LCA2OTg1MywgNDA5ODMsIDAsIAorICAgIDEyMTQyMSwgMCwgNzIwMSwgMTI1NjEsIDEyMDg2NiwgNDIzNzEsIDExODQ0LCAxNTQwLCAxOTQ4MjcsIDEwMDUyLCA0MDk4MiwgCisgICAgMTE5ODQxLCAwLCAxNDg4LCA3MTE3NywgMCwgMTk0ODMxLCA5MTc1NTksIDEyODQwMSwgMTk0OTIwLCAxNTYzLCAxMjgwMzQsIAorICAgIDk2MTksIDEyMDg0MCwgMTI5NDE2LCAxMjA5NTQsIDEyMTQ2MCwgNzEzNjMsIDM1NjAsIDc3OTcsIDYwNzAsIDEwMDA2LCAKKyAgICAxMjg5MjIsIDI5MjIsIDYwODIsIDcwMTQ3LCA2NTAwOSwgOTgzOTQyLCAxMjU2NywgNjY3MTIsIDAsIDQxNDEyLCA3ODY1MSwgCisgICAgMTE5NTkxLCAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDY2NzY0LCAyMDMyLCA3ODM1NCwgCisgICAgODM0NjIsIDExOTEzMSwgMCwgMCwgNjc4MjYsIDQzMDg1LCA2MDU3LCA1MDgsIDkzOTY4LCA5Mjk4OSwgNjc5NjgsIAorICAgIDkxNzk0MSwgOTIxOTgsIDAsIDEyODgzMSwgNjM4LCA2MDgzLCAxMTkwNzIsIDEyNDk1MCwgNzAxNDQsIDIzMDUsIDc4MzQ4LCAKKyAgICA2ODA5NiwgOTE3NzcyLCA2MDU2LCA2NjU5LCA2Nzk2OSwgOTgzMjkwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgCisgICAgMTI4MjI3LCA0MTYzOSwgNjM5MTIsIDExOTQxLCA5ODM3ODMsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIAorICAgIDMyNDksIDE3NjgsIDkzOTgyLCAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDk4MzI5NCwgNTgzLCAxMTkzNTIsIDQxOTc3LCAKKyAgICAwLCA2NjAwNCwgNjY0MTYsIDY1MDUsIDc0MDEwLCA5MTc4MzMsIDEzMDY0LCA1NTI2NywgMTE5MTEzLCA2NTAwLCA1NTI2LCAKKyAgICA2NTA0OSwgMTI4MDI4LCAxMjk5MCwgOTgzOTAxLCA5MjM3NiwgMTI3NDUsIDk2NzgsIDEyMTEwOCwgMTIwNTg3LCA5ODY5LCAKKyAgICA4MzE1MCwgMTc3MSwgMTI4OTY1LCA4OTM2LCA5Mjk2NCwgMTI1MjczLCA0MjA4LCA3ODM0MSwgNzg1NjcsIDc4MzQyLCAKKyAgICA2Nzc0MiwgOTgzMjA4LCA3NDEwMSwgMTI4NjA1LCAxMTc2MiwgMTI5MzE3LCA3MDA5NiwgNjgzNSwgNjgwMTAsIDY2NDc1LCAKKyAgICAxMjAyNjAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDExOTgzMCwgNTA2OSwgNzM3MzYsIDUwMjgsIDk4OTcsIDkyNzc0LCAKKyAgICA3MzczOSwgNTAyNiwgOTgzMjU1LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCAKKyAgICA3NDc5MCwgNzgxMzgsIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCAKKyAgICA0MTA3MCwgNzc5MDMsIDc2NTgsIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCAKKyAgICA5ODM2NzksIDEwNjAwLCA3ODU1OCwgNjIwLCA0MTAwMSwgNjAyOCwgNzA0NDUsIDQyODkyLCA5ODMzMTMsIDcxMTE2LCAKKyAgICA1MDI0LCA3NDk0NSwgNDEwMDMsIDY4MTM3LCA1MDI1LCA3Mjk3LCA5MTc4MjQsIDc1MDM5LCAxMTg4ODUsIDEyNzk1NiwgCiAgICAgNjU1NTcsIDAsIDc0NTQxLCAxMjg5MjQsIDExNTk5LCAxMjgyMDksIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAKICAgICAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDcwMjczLCAxMTU2OSwgNjUyNzUsIDg5MDYsIDQzOTQ1LCA1NzU1LCAyNjM2LCAKICAgICA3MTIwMywgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgCi0gICAgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgOTE3NzYzLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgNjY4ODYsIAotICAgIDY0MTMxLCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgCi0gICAgNDM2MDYsIDcxMTg1LCA2ODM5NywgNjYzNzAsIDc0MjgyLCA0MjMzNSwgNjk3ODYsIDcyNDIxLCA4Mjk5OCwgNzUzOCwgCi0gICAgNTMxNSwgODMzNjcsIDQyNDkxLCA5MjkwMSwgNDIwNjEsIDEyODAwMiwgNDU3NiwgMCwgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCAKLSAgICAzNTYzLCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgNzgyMDksIDEyMDI0NCwgNjM5ODksIAotICAgIDM5NTgsIDEyMTMyLCAxODQ5LCAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIAotICAgIDQxMTYwLCAxMjE0ODEsIDM2MTgsIDc4MzM4LCAxOTQ5MjQsIDQzMzAwLCA1MTU2LCA5MjYyOSwgNzAzNTAsIDkyOSwgNjgyNywgCi0gICAgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCA4NjkxLCA2NjQzNSwgMjIxNSwgNDE2NjIsIDk0MDEwLCAxMTkyNjIsIDAsIAotICAgIDEyODgyNCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzM0LCA0MjU3OCwgNzEwNDksIDQxNjYxLCA3ODM1MSwgCi0gICAgNDMyNjcsIDkzNTYsIDAsIDE5NDg4MCwgOTgzNDAxLCAxMjg2LCAxMDE2NiwgOTgzMTE3LCAwLCA2NDcwNywgMTI4OTI1LCAKLSAgICA0MjQ3NiwgNzczMCwgMTExNTYsIDEyODUyMiwgNDI0ODMsIDEyOTA4MywgNzQ5NDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIAotICAgIDQzMzU5LCAwLCA2NjQxLCA1MjUsIDQxNjI3LCA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIAotICAgIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAxMjgzMjEsIDg1ODcsIAotICAgIDEyMTMxOCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgCi0gICAgODMxNTMsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIAotICAgIDI3MTgsIDQxNjgsIDQzOTA0LCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCA0MzkwMiwgNzc5NDgsIDM2MywgCi0gICAgMTEwMTUsIDQzOTAzLCA3Nzk0NCwgNDM4NTcsIDgzMDQ5LCA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgNjU5MywgNjQ2MjUsIAotICAgIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgNjQ0MzQsIDc1MDEwLCAxMjcwOTUsIDk0OTIsIDExNzgyLCA2NDM4MiwgCi0gICAgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgNjMwLCAxMjA5NjAsIDk4MzkyMywgMTIwNzc0LCA3MDE2NSwgMTA0MywgCi0gICAgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMCwgMTI0OTQ1LCAzMTMsIDEyMTQ4MywgNDE4ODEsIDE5NDY1OCwgNDIzMTEsIDc0NDUsIAotICAgIDQzOTA2LCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIDk0MDUsIDExMjY4LCA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgCi0gICAgOTQyMiwgNDM4OTQsIDY2NDk1LCA2OTk5MCwgOTgzODg1LCA5Mjk5MCwgNDE3MTgsIDEwNzA3LCAxNjAzLCA5ODM3MDMsIAotICAgIDExOTAwMywgMCwgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgNzEwNjcsIDEwNTQ2LCA3NDIxMCwgNzgxMDEsIAotICAgIDExNjAwLCA3Nzk2MSwgMjc5NywgNDM5MjQsIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAxMjcwODAsIAotICAgIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIDEyNzUyOCwgMTExOTgsIDY2ODIxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCAKLSAgICA0MjQzMywgNzc5NjQsIDc2MDMsIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgCi0gICAgMzYyLCA5MjQzOSwgNDM4OTAsIDgwMzcsIDQzNzc3LCAxMTUzNSwgMTI2NTM5LCA0Mzg5MywgNTE4NSwgNzE2NSwgNTUyMSwgCi0gICAgMTAzMzQsIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI1MTMxLCAxMDEwNCwgMTAyNywgNTE4MSwgMTI4NDM1LCA1MTE3LCAKLSAgICAxMDUyMywgMTQ0NiwgNDIzMjAsIDY4NDUsIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIAotICAgIDQyODk4LCAzNDA1LCAwLCAxOTQ2NDQsIDU1MjMsIDQzOTE1LCA0MjYyMCwgOTI0NDcsIDc0OTQzLCA5NTQ5LCAwLCAxMDU0OSwgCi0gICAgNDM5MjMsIDk2NjEsIDQyOTMzLCA3NDg4NCwgNzc5MTAsIDc4MDY4LCA0MzkyMSwgMCwgNzExODQsIDk4MzA3MCwgNDE5OTEsIAotICAgIDk4Mzg5MywgMCwgNzYzMCwgOTg0NiwgNzY4NCwgMTAzNTAsIDEyODQ1MywgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgCi0gICAgNzc5ODAsIDY2NDg1LCA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNDM5MDksIDc0NDM4LCAxMjMzMCwgMTI4MjcyLCAwLCAKLSAgICA0MjQxNywgNDIzODMsIDY2NjMwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDQzOTA4LCA3NDQ0MywgMTI3ODk0LCAxMDIwOSwgCi0gICAgODMxMywgNDE5NSwgNzQ0MzUsIDEzMTYsIDY2NjkwLCA3NTA3MiwgNjMzMiwgNjQ4OTQsIDk4MzE1NiwgNjU4NzEsIDY3MjUwLCAKLSAgICAxNzM2LCA5ODM2ODQsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzgyNDEsIDY5MywgOTEzMCwgCi0gICAgMzE0LCA2NDE0OSwgNDI0MjAsIDExOTQ5LCAxMjcyMDAsIDEyMDE1MiwgMTEwMjYsIDEyMDUxNiwgNTMzMiwgNjk0MCwgCi0gICAgNjQxNTQsIDEyNjM1LCAxMjQ5ODAsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCA4MzMwNywgNzg4NDAsIDcxMzY4LCAKLSAgICAxMjgyNCwgNDM5MTEsIDQ1MjgsIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIAotICAgIDY0NTYwLCAzNzU3LCAwLCAwLCA3NDMwMiwgNjU4NjksIDczNzYwLCAyNTY5LCA3NDk3NiwgMjMyNiwgNjU3NDAsIDI1NjUsIAotICAgIDQyNDU5LCA3NTk2LCA3OTIxLCA5ODM4NjgsIDczODYyLCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgOTI2MjIsIAotICAgIDQwNDQsIDkyNjQ2LCA0Mzk1MywgMTIyMzMsIDk4Mzg3MSwgMTAyMywgNDc0LCAxOTQ5NDAsIDExOTgxOCwgMCwgMCwgCisgICAgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgMTI2NDY2LCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgNjY4ODYsIAorICAgIDY0MTMxLCA2NjE2LCAxMjA3OTYsIDExODg3NSwgMTA5NTMsIDM5MSwgOTgzMTAzLCA2OTc4NSwgNDgyLCA0MjI5NiwgCisgICAgMTE1ODgsIDEyODU5MSwgNDM2MDYsIDcxMTg1LCA2ODM5NywgNjYzNzAsIDc0MjgyLCA0MjMzNSwgNjk3ODYsIDEyMDUwLCAKKyAgICA4Mjk5OCwgNzUzOCwgNTMxNSwgODMzNjcsIDQyNDkxLCA5MjkwMSwgNDIwNjEsIDEyODAwMiwgNDU3NiwgMCwgNjg0MTcsIAorICAgIDQzODA5LCA0Mjc3LCAwLCAzNTYzLCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgCisgICAgNzgyMDksIDEyMDI0NCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAxMjczMzgsIDk5MjEsIDQyNDUxLCA0MjUzLCAKKyAgICA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDkzOTU2LCA0MzMwMCwgCisgICAgNTE1NiwgOTI2MjksIDcwMzUwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgNjc4NDcsIDg2OTEsIDY2NDM1LCAKKyAgICAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIAorICAgIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCAKKyAgICA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCAKKyAgICA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDcyODI3LCA2NjQxLCA1MjUsIDQxNjI3LCA5MTc5MjMsIDg3NjMsIAorICAgIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCAKKyAgICA0Mzc3LCA4NTU5LCAxMjgzMjEsIDg1ODcsIDEyMTMxOCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIDE1NzYsIAorICAgIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgODMxNTMsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgCisgICAgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDQzOTA0LCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAKKyAgICA0MzkwMiwgNzc5NDgsIDM2MywgMTEwMTUsIDQzOTAzLCA3Nzk0NCwgNDM4NTcsIDgzMDQ5LCA2NjY5MiwgMTIwODI2LCAwLCAKKyAgICA2NjQ5MiwgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAxMTM3OTQsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIAorICAgIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDkyMTIsIDEyODMzLCA3NzgzMCwgNzA2OTIsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgCisgICAgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAxMjUyNDksIDEyNDk0NSwgMzEzLCAKKyAgICAxMjE0ODMsIDQxODgxLCAxOTQ1NzUsIDQyMzExLCA3NDQ1LCA0MzkwNiwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCAKKyAgICA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIDk0MjIsIDQzODk0LCA2NjQ5NSwgNjk5OTAsIDk4Mzg4NSwgCisgICAgOTI5OTAsIDQxNzE4LCAxMDcwNywgMTYwMywgOTgzNzAzLCAxMTkwMDMsIDEwMTA2MSwgNjMxLCA3Nzk1MiwgNjk3MDMsIAorICAgIDEzMTYxLCA2NTI3MiwgNzEwNjcsIDEwNTQ2LCA3NDIxMCwgNzgxMDEsIDExNjAwLCA3Nzk2MSwgMjc5NywgNDM5MjQsIAorICAgIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAxMjcwODAsIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIAorICAgIDEyNzUyOCwgMTExOTgsIDY2ODIxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIAorICAgIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgMzYyLCA5MjQzOSwgNDM4OTAsIAorICAgIDgwMzcsIDQzNzc3LCAxMTUzNSwgMTI2NTM5LCA0Mzg5MywgNTE4NSwgNzE2NSwgNTUyMSwgMTAzMzQsIDIwOTMsIDcxMzI5LCAKKyAgICAxMDMwMiwgMTI1MTMxLCAxMDEwNCwgMTAyNywgNTE4MSwgMTI4NDM1LCA1MTE3LCAxMDUyMywgMTQ0NiwgNDIzMjAsIDY4NDUsIAorICAgIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDQyODk4LCAzNDA1LCAwLCAxOTQ2NDQsIAorICAgIDU1MjMsIDQzOTE1LCA0MjYyMCwgOTI0NDcsIDc0OTQzLCA5NTQ5LCAwLCAxMDU0OSwgNDM5MjMsIDk2NjEsIDQyOTMzLCAKKyAgICA3NDg4NCwgNzc5MTAsIDc4MDY4LCA0MzkyMSwgMCwgNzExODQsIDk4MzA3MCwgNDE5OTEsIDEyOTM2OSwgMCwgNzYzMCwgCisgICAgOTg0NiwgNzY4NCwgMTAzNTAsIDEyODQ1MywgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgNzc5ODAsIDY2NDg1LCAKKyAgICA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNDM5MDksIDc0NDM4LCAxMjMzMCwgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIAorICAgIDY2NjMwLCAzNDA3LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCA4MzEzLCA0MTk1LCAKKyAgICA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIDE3MzYsIAorICAgIDEyMTAwNiwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAzMTQsIAorICAgIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCA2NDE1NCwgCisgICAgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIDEyODI0LCAKKyAgICA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIAorICAgIDM3NTcsIDAsIDk0MDU5LCA3NDMwMiwgNjU4NjksIDczNzYwLCAyNTY5LCA3NDk3NiwgMjMyNiwgNjU3NDAsIDI1NjUsIAorICAgIDQyNDU5LCA3NTk2LCA3OTIxLCAxMjY1NjcsIDczODYyLCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgOTI2MjIsIAorICAgIDQwNDQsIDkyNjQ2LCA0Mzk1MywgMTIyMzMsIDExMzgxNCwgMTAyMywgNDc0LCAxMjUyNzIsIDExOTgxOCwgOTgzNzQ0LCAwLCAKICAgICA0MjQ4NywgNjU1NTYsIDEyMTE2OCwgMTI3ODY2LCA0MjI5NSwgMTI4MjAzLCAxMjE0NzQsIDcxMzIyLCA5MjUxOCwgMjIyMiwgCi0gICAgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCA5ODM0NTUsIDAsIDU1MjUxLCAxMDExOCwgCi0gICAgMzEzMywgMTI3NzcxLCA3MTg1NywgMTIxMjAxLCA5NjEwLCA4MDY4LCA4MTk3LCA5MTc1NDUsIDY5OSwgMCwgNDE2NjUsIAotICAgIDU4NjgsIDEyODcxMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIAotICAgIDY1NTgzLCA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgNzgxMjksIDY4NzUxLCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAKLSAgICAxOTM3LCA5ODM3NTEsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgMTE5ODM3LCAxMTAxNywgCi0gICAgMTIwNjAxLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCAKLSAgICA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgCi0gICAgMTIxMjkyLCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTIwNTY1LCA0MjQ4MSwgCi0gICAgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMTI1MDk1LCA2NDEwMywgOTY5LCAwLCA5MzUyLCA3MTQ4MSwgNjE2NSwgCi0gICAgNjQxMDAsIDkxNzgxOSwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMTEzNzYyLCA4OTE0LCA2NjkwOCwgCi0gICAgMTI0OTU0LCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIDY3ODQ5LCA1NzQ2LCA2NjQwOCwgCi0gICAgMCwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCAKLSAgICA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAotICAgIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgMTI2OTg3LCA0NDg2LCAxMjgwODIsIDkxNzc5NiwgCi0gICAgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgCi0gICAgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgCi0gICAgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAKLSAgICAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIAotICAgIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCAKLSAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAxMjgzMzUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAotICAgIDQyNDgwLCA5MTc5NDksIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCAKLSAgICA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAKLSAgICAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgMCwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCAKLSAgICA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIAotICAgIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgMTI4NDkyLCAxMTg5MzAsIDY0NTI3LCAxMjEzOTUsIDc4NzcsIDEyNzIzLCAKLSAgICA5ODM3OTgsIDY4Nzc2LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIAotICAgIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgCi0gICAgOTczNCwgNjU0MjUsIDAsIDEyMTQzMSwgMTI3MzU3LCA3NDg5MCwgNzg4MzYsIDEwMTEyLCAxMDgyNywgMTk0NjM1LCA5ODY2LCAKLSAgICA3NDUyNywgNjY2NzUsIDExODg2NywgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgNjc3MzgsIDg2MzYsIDk4MzkyNywgCi0gICAgODMxNSwgNjU0NDQsIDk4Mzc5MywgMTk1MDExLCA3NDU5NSwgNjE1MiwgNzg4MjAsIDczOTQ3LCA2NjI5LCAxMjUwNTYsIAotICAgIDEyMDE3MSwgMCwgNzQ1ODksIDQzOTkzLCAxMjgzNDYsIDY5NzkwLCA2NDQzNSwgNjQ5NTUsIDQzNjkwLCAxMTA0NiwgCi0gICAgMTE0OTAsIDQyNzMwLCA0NDg1LCA3MTEyNiwgMTI4MTk0LCA2NDkyNiwgMCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIAotICAgIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAxMjgyNSwgMTIxMTU4LCAwLCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAorICAgIDY2NDk5LCAxMjkzMzYsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCA5ODMyMjYsIDE4NTgsIDk4MzQ1NSwgMCwgCisgICAgNTUyNTEsIDEwMTE4LCAzMTMzLCAxMjY0OTgsIDcxODU3LCAxMjEyMDEsIDk2MTAsIDgwNjgsIDgxOTcsIDkxNzU0NSwgNjk5LCAKKyAgICAwLCA0MTY2NSwgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgCisgICAgMCwgMTkyMywgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCA3ODEyOSwgNjg3NTEsIDkxNzgzNiwgNjQ2NCwgCisgICAgNzAzNiwgMjk5NiwgMTkzNywgMTI3MDUwLCA2ODQ4MSwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgNzc5NjUsIAorICAgIDExOTgzNywgMTEwMTcsIDEyMDYwMSwgOTgzMTY5LCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgCisgICAgNDM0MjIsIDEwNTc5LCA4NTYwLCA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgCisgICAgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgOTQwMTcsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIAorICAgIDY0MTA1LCAxMjA1NjUsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAxMjUwOTUsIDY0MTAzLCA5NjksIDAsIAorICAgIDkzNTIsIDcxNDgxLCA2MTY1LCA2NDEwMCwgOTE3ODE5LCA2NjMyLCA3MjgyOCwgNDI0MDIsIDc0MzI3LCA3ODA2LCAKKyAgICAxMTM3NjIsIDg5MTQsIDY2OTA4LCAxMjQ5NTQsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgCisgICAgNjc4NDksIDU3NDYsIDY2NDA4LCAxMjc0MDIsIDY0NDE2LCA0MjQyMiwgODM1MDYsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIAorICAgIDMzOCwgNTA1OSwgMTIxMzY5LCA4MzUyNCwgNDIzMjgsIDEwNzY3LCAxMjg4NjIsIDgxMTUsIDgzNDU0LCA3NDc1OCwgMCwgCisgICAgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCA5ODMyMzAsIDY1ODQ4LCA5Mjg4NCwgODM1MTcsIDY5ODYzLCAxMjgzMjgsIAorICAgIDEyNjk4NywgNDQ4NiwgMTE5OTczLCA5MTc3OTYsIDAsIDEwOTI1LCAwLCA4MzUxNSwgODM1MDcsIDEyNDk1MiwgNDIzMDksIAorICAgIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDc2NjgsIDEwMzA1LCA0MjQ2MSwgNzQ4ODIsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgCisgICAgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMTE5MjE0LCAKKyAgICA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMTI4MTcwLCAKKyAgICA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIAorICAgIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAKKyAgICAxMjExNDUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIDQyNDgwLCAxMjkwMzEsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIAorICAgIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgCisgICAgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgCisgICAgOTgzODgyLCAxMjg5MzgsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIAorICAgIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCA3Mzg4OCwgNzQzNzcsIDExMDI5LCA2NjY1MSwgMTI3MzQ2LCAKKyAgICAxMjg0OTIsIDExODkzMCwgNjQ1MjcsIDEyMTM5NSwgNzg3NywgMTI3MjMsIDk4Mzc5OCwgNjg3NzYsIDEyMDA5NiwgNzM5NTQsIAorICAgIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgNzEyNzAsIAorICAgIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgOTczNCwgNjU0MjUsIDkyMjA3LCAKKyAgICA3ODgzNCwgMTI3MzU3LCA3NDg5MCwgNzI4MjIsIDM0NDgsIDEwODI3LCAxOTQ2MzUsIDk4NjYsIDc0NTI3LCA2NjY3NSwgCisgICAgMTE4ODY3LCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCA4MzE1LCA2NTQ0NCwgCisgICAgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCA2MTUyLCA3ODgyMCwgNzM5NDcsIDY2MjksIDEyNTA1NiwgMTIwMTcxLCAwLCAKKyAgICA3NDU4OSwgNDM5OTMsIDEyODM0NiwgNjk3OTAsIDY0NDM1LCA2NDk1NSwgNDM2OTAsIDExMDQ2LCAxMTQ5MCwgNDI3MzAsIAorICAgIDQ0ODUsIDcxMTI2LCAxMjY1ODgsIDY0OTI2LCAxMjAxNjgsIDk4MzEzMywgNDM4MzAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgCisgICAgNzA0MCwgMzU4OCwgNjM3OTcsIDEyODI1LCAxMjExNTgsIDcyODY0LCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAogICAgIDIyMywgNzg2MzUsIDY5Njc1LCAxMjAxMTksIDQyNDQ0LCAxMjg0NDksIDY0NDk5LCA2NTI0NSwgMTI5MTA0LCAxMTcxLCAKICAgICAxMjg4MDIsIDY5NzE3LCAxMjAxMTMsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgNzg2MTksIDc0OTU0LCAKICAgICAyMzM4LCAxMjAwMzIsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCAxMzA5MiwgMTExODUsIDY4MTI2LCAxMjEzLCAKICAgICAxMjg0MTksIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCA4MzAwNSwgNjQzODcsIDQxMTUsIDcxMzMxLCA1MDA1LCAKICAgICA2NDA3MCwgNjQwNzMsIDEwNjc5LCA4MzAwMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDgzMzU4LCA4MzAxMCwgODI1MSwgCi0gICAgMTAxMzYsIDY1NDM2LCAwLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgMzEwMSwgCi0gICAgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAxMjAxMDEsIDExMzczLCA2Mzc4LCA3MTA5MywgMTIwMTAzLCA4NjYzLCA5MzEyLCAKLSAgICA0MTY0NCwgNDUzOSwgMjEyOSwgNzA3ODUsIDkyMjIsIDEyMTQ3OSwgMTE4OTA3LCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIAotICAgIDEyODUxNSwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc2NywgCi0gICAgNzE4NTgsIDcyNDQwLCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCA3MTExNywgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAKLSAgICAxMDg0MCwgMCwgMTA2NjgsIDExMzcyMywgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgMCwgMTE1NywgCi0gICAgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgOTE3ODg2LCAxMjc5MDUsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAKLSAgICAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIDY4MTcsIDEwNzY0LCAxMjAzMTQsIAotICAgIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgCi0gICAgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAotICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCAKLSAgICA2NjM3MywgOTgzMjQ5LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCAKLSAgICA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgCi0gICAgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCAKLSAgICA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIDkzMDU5LCA4MzExNCwgMjMzNiwgCi0gICAgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgNzAzOTAsIDY1NDA2LCAKLSAgICA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAKLSAgICAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCA2NTQwMywgOTgzMDg5LCAKLSAgICAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIAotICAgIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgCi0gICAgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAKLSAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxMjE0MDMsIDEyMTI5NCwgODQyMSwgMTI3NDcyLCAKLSAgICA2OTY4MiwgNDM3MDUsIDUwMiwgNzUwMjksIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCA3MzY0LCAKLSAgICAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCA3MDM3MiwgMTI3ODc3LCAKLSAgICA0MjQ4OCwgNzAzMzksIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDk4Mzg0MCwgMTI0OTYwLCAxMjA4MzksIAotICAgIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzUwMzQsIDYzNzUxLCAxMjEzNywgNTU0OCwgNzc5ODUsIDAsIAotICAgIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDAsIDExMzAxLCAxMTIxNCwgNjU5NTIsIDc4MDEwLCAKLSAgICA5ODc0LCA3ODAwNywgOTgzMTE1LCAxMzE5LCAzMDUwLCA2NTQxMCwgNjczOTksIDkyNjA2LCA3ODAxNiwgNzgwMTcsIAotICAgIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDgzMDUwLCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCA4MzUxMiwgMTI4MjIyLCAwLCAKLSAgICA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgMTE5MTE4LCAxMDg4NywgCi0gICAgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCA3MTA0MiwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIDg1MDgsIDEyNzc5NCwgCi0gICAgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCA5ODMzNzQsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIDQxMzc5LCAKLSAgICAxMDA1MCwgMTI3MTgsIDY5ODU0LCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMTI4OTc4LCA1NTI4MiwgCi0gICAgOTExOSwgMjc4NywgNzkyMCwgNzAwOTEsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgOTE3NzkyLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgNzQ4OTUsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgCi0gICAgNjQzOTYsIDEwMTI2LCAxMjExNiwgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDcxODQ2LCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgCi0gICAgNjg0MTIsIDQxMzQ1LCAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAKLSAgICAyMTA0LCA2NDg1OCwgMzYxLCAxMjAzNTcsIDg0NSwgOTIxNzQsIDQxNTYwLCAxMTk3MCwgNDU2MiwgMTI4NDczLCAyOTI2LCAKLSAgICA2ODQ5NSwgNDU2OSwgNzQxMzAsIDEyODY1OSwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgCi0gICAgNjU2MjksIDAsIDE5NDg1OCwgNzQ4NTQsIDAsIDcwNDY2LCA2NzM5MiwgNjYzODUsIDcxNDM5LCA2MjkxLCAwLCA2ODQ4NywgCi0gICAgNDE2NjksIDcwOTQsIDEyMTA1MSwgMCwgMTIwOTk5LCA3NDA1NCwgMTI3NzU0LCAxMjg5MTcsIDAsIDgzOSwgMTIxMzE1LCAKLSAgICA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgNjc3NTYsIDQ4NTksIDY0NDY3LCAwLCA4MzUyNSwgMTE4OTk4LCA3MjA2LCAKLSAgICAxMTk2MzYsIDY2NDcsIDQzOTg2LCA4MzUxOCwgNjk3NjYsIDE5NDY2NCwgNjQ3NjQsIDQyMTAsIDEyODMwMCwgMTI3OTM2LCAKLSAgICA4MDQsIDgzNTIwLCAwLCAxMjI5OCwgNzAzNDQsIDY2NjUzLCAxMjY5ODMsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIAorICAgIDEwMTM2LCA2NTQzNiwgMTAwODYyLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgCisgICAgMzEwMSwgMTI1MTkyLCAxMjg1OCwgNzQ3NjcsIDEyMDEwMSwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIAorICAgIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCA3MDc4NSwgOTIyMiwgMTIxNDc5LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCAKKyAgICA0MTk2MSwgMTIxMzYxLCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgNzI4NjcsIDEyMDU4MiwgMTI5MywgNzk0NywgCisgICAgMjEzMiwgOTgzNzY3LCA3MTg1OCwgNzI0NDAsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDcxMTE3LCAwLCA2NTg4OCwgCisgICAgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgNzI4MjYsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCA5ODMxMTQsIDg4MjIsIAorICAgIDAsIDExNTcsIDY0OTAzLCA4NjM4LCAxMjcyNjUsIDEyOTEwNiwgMTIwNjY5LCAxMDAzOTksIDY5ODQ4LCA4MjM1LCAKKyAgICAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIAorICAgIDY4MTcsIDEwNzY0LCAxMjAzMTQsIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIAorICAgIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgCisgICAgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIAorICAgIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCA2NjM3MywgMTI5MDY2LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgCisgICAgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAKKyAgICAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgCisgICAgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIAorICAgIDkzMDU5LCA4MzExNCwgMjMzNiwgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgCisgICAgNzAzOTAsIDY1NDA2LCA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgCisgICAgNDIyODUsIDQxNjc0LCAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCAKKyAgICA2NTQwMywgOTgzMDg5LCAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgCisgICAgNDM0NCwgMTI5MDUsIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAKKyAgICAxMjkzNCwgNDE2ODIsIDY1NDMyLCA0MTY5MywgOTgzNDM0LCA2MDcxLCA2NTQzNCwgMTE5MDA4LCA0ODA0LCA0MDUzLCAKKyAgICAxMjAyMzcsIDEyNzQ2OSwgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTIwMDQzLCAxMjEyOTQsIAorICAgIDg0MjEsIDEyNzQ3MiwgNjk2ODIsIDQzNzA1LCA1MDIsIDc1MDI5LCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIAorICAgIDEzMDMsIDMxNiwgNzM2NCwgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgCisgICAgNzAzNzIsIDEyNzg3NywgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAxMjgxOTQsIAorICAgIDEyNDk2MCwgMTIwODM5LCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc1MDM0LCA2Mzc1MSwgMTIxMzcsIAorICAgIDU1NDgsIDc3OTg1LCA5ODM1NTUsIDEwMDA3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDEwMDM5MSwgCisgICAgMTEzMDEsIDExMjE0LCA2NTk1MiwgNzgwMTAsIDk4NzQsIDc4MDA3LCAxOTQ3MzIsIDEzMTksIDMwNTAsIDY1NDEwLCAKKyAgICA2NzM5OSwgOTI2MDYsIDc4MDE2LCA3ODAxNywgNDI4MzAsIDQzOTk2LCA2NjcxNiwgODMwNTAsIDQ2OTEsIDkyMjQyLCAKKyAgICA5MzQ1LCA2MjEsIDgzNTEyLCAxMjgyMjIsIDEyMjg4OSwgNjU0MTEsIDkxNzU0MSwgNDExODIsIDczODgxLCA2NTQwOCwgCisgICAgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgMTE5MTE4LCAxMDg4NywgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCAKKyAgICA3MTA0MiwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIDg1MDgsIDEyNzc5NCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAKKyAgICAxMTk4NjcsIDM3MjIsIDk4MzM3NCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgNjk4NTQsIAorICAgIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAxMjg5NzgsIDU1MjgyLCA5MTE5LCAyNzg3LCA3OTIwLCA3MDA5MSwgCisgICAgNDAyMSwgMjAxMiwgNzk4NSwgNzgwOTMsIDExOTY2MywgOTE3NzkyLCA5ODM5NTEsIDc4MDIxLCA3ODAyMiwgNDEwLCAKKyAgICA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCA3NDg5NSwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgMTAxMjYsIAorICAgIDEyMTE2LCA0MTY3MywgNjg1MjQsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCA0MTM0NSwgCisgICAgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgNjQ4NTgsIAorICAgIDM2MSwgMTIwMzU3LCA4NDUsIDkyMTc0LCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDEyODQ3MywgMjkyNiwgNjg0OTUsIDQ1NjksIAorICAgIDc0MTMwLCAxMjg2NTksIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMDA5MDksIDY1NjI5LCAwLCAKKyAgICAxOTQ4NTgsIDc0ODU0LCA2Njc1MCwgNzA0NjYsIDY3MzkyLCA2NjM4NSwgNzE0MzksIDYyOTEsIDAsIDY4NDg3LCA0MTY2OSwgCisgICAgNzA5NCwgMTIxMDUxLCAxMjE0MDgsIDExOTA0MSwgNzQwNTQsIDEyNzc1NCwgMTI4OTE3LCAwLCA4MzksIDEyMTMxNSwgCisgICAgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDY3NzU2LCA0ODU5LCA2NDQ2NywgOTgzNDYxLCA4MzUyNSwgMTE4OTk4LCA3MjA2LCAKKyAgICAxMTk2MzYsIDY2NDcsIDQzOTg2LCA3MjczOCwgNjk3NjYsIDE5NDY2NCwgNjQ3NjQsIDQyMTAsIDEyODMwMCwgMTI3OTM2LCAKKyAgICA4MDQsIDY2NzQ2LCAwLCAxMjI5OCwgNzAzNDQsIDY2NjUzLCAxMjY5ODMsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIAogICAgIDY3MjA2LCA2NzIwNSwgNjcyMDQsIDY3MjAzLCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgNzE4NTEsIDEyNzksIAotICAgIDE0MjUsIDYyMjQsIDExOTIyOSwgMTEwNDksIDEyNzEyMywgNzE0ODAsIDQyNjQ5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgCi0gICAgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDkyNDk1LCA3MDIwMCwgMTI3NTI1LCA0MjcwMiwgCi0gICAgNzAxOTQsIDkzMDYxLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCA2NzIxOCwgOTExNSwgNzQzMCwgNzc4MzcsIDcwMTkxLCAKLSAgICAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIAotICAgIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCA2Nzc0MSwgCi0gICAgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAwLCAxNjYzLCAxMDQxOSwgNDI5MDEsIAotICAgIDQyNjM2LCA2NzIxMSwgNjcyMTAsIDEyOTE0NywgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIDY3MjEzLCA2NzIxMiwgMCwgCi0gICAgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDE5NDczMiwgMCwgMTA4NTUsIAotICAgIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgOTgzODc0LCAxMTkyMzgsIDgwMTAsIAotICAgIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgCi0gICAgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIAotICAgIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCAKLSAgICA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIAotICAgIDEwMjM1LCAwLCAwLCA5ODMzMjUsIDQzNDQxLCAxMjc5MjQsIDEyNzc3NywgNDI1OTUsIDEyNjY0MSwgNzQ0MDIsIDExODg2MCwgCi0gICAgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIAotICAgIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgMTIwNjYyLCA2OTkyMCwgMTk0NzAyLCA2MjE2LCA2NzIzMCwgCi0gICAgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyMTEyNSwgMCwgNjk2ODAsIDI4MjgsIDAsIAotICAgIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAKLSAgICAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgCi0gICAgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAwLCA4NTM3LCAxMjczMDYsIDAsIDkzNTQsIDEyMTI0NCwgMTIxMzQ4LCAKLSAgICA0MTE5OSwgMTAxMjEsIDIwMjgsIDc0OTUwLCAxMjAyNTMsIDY5NzE1LCAxMjg1MjUsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgCi0gICAgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCAKLSAgICA3NDA3MSwgMCwgOTgzNDU5LCAxMjcxMywgMTI3NTE5LCA3MDQwMiwgMCwgNzg3NzIsIDExMzc3MCwgMTczNCwgMCwgNzgxNDEsIAotICAgIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgNjgyMjcsIDc0MTY3LCA1NDIsIDkxNzk4MSwgMTE4Nzg2LCA5ODM4NTksIAotICAgIDE5NDc5NywgMTIzMCwgMTI1MDE4LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAotICAgIDY3NzM3LCA4MzUyLCA3ODQzNiwgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgCi0gICAgNzg0MzQsIDk3MDQsIDAsIDE5NDU3MywgNzAwODAsIDcxMzM4LCAwLCA4NjYwLCAxMjY0NzgsIDAsIDEyODU2OSwgNzg3NzMsIAotICAgIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTk0ODUxLCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIAotICAgIDk4MzEwMSwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgCi0gICAgNjc5NzksIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDAsIDEyMTQ3OCwgCisgICAgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMTI3MTIzLCA3MTQ4MCwgNDI2NDksIDg0ODIsIDkyNDQwLCA5ODM3MTAsIAorICAgIDUwMzIsIDY3MjA5LCAxMTk0MCwgNjcyMDcsIDY2NCwgMTIwNDM3LCA1MDM0LCA5MjQ5NSwgNzAyMDAsIDEyMjkwMSwgCisgICAgNDI3MDIsIDcwMTk0LCA5MzA2MSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgNjcyMTgsIDkxMTUsIDc0MzAsIDc3ODM3LCAKKyAgICA3MDE5MSwgMTIwODE5LCA2ODM4NywgMTAwNjQ1LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIAorICAgIDQxMTYyLCA3NzgzNiwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgCisgICAgNjc3NDEsIDEyODgwMCwgNTI0LCAxMjg2NjcsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAxMjAzNzAsIAorICAgIDE2NjMsIDEwNDE5LCA0MjkwMSwgNDI2MzYsIDY3MjExLCA2NzIxMCwgMTI5MTQ3LCAxMjA2NTYsIDY3MjE1LCA2NzIxNCwgCisgICAgNjcyMTMsIDY3MjEyLCAxMjg4MjgsIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDE5NDkwNCwgMTE5MTA3LCA0MzYxMiwgCisgICAgNjQzNDQsIDEyOTM3MCwgMCwgMTA4NTUsIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCAKKyAgICA0MzY3MywgOTgzODc0LCAxMTkyMzgsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIAorICAgIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIAorICAgIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAKKyAgICAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCAKKyAgICA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCA5ODM5MTgsIDAsIDk4MzMyNSwgNDM0NDEsIAorICAgIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgNzI4MDQsIDc0NDAyLCAxMTg4NjAsIDc4NjYxLCAxMjA0MTksIDkyNDk3LCA2NjI4NywgCisgICAgMTIwNDIwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgODMyMTAsIAorICAgIDEyMDY2MiwgNjk5MjAsIDEyNTI3OCwgNjIxNiwgNjcyMzAsIDEwNzU1LCA5NDU1LCAxMTE1NSwgODEyNCwgMTI3MDQyLCAKKyAgICA5NDcwLCA2OTQ0LCAxMjExMjUsIDkxNzk4MiwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAKKyAgICAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCAKKyAgICA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAKKyAgICAwLCA4NTM3LCAxMjczMDYsIDk4MzcyOSwgOTM1NCwgMTIxMjQ0LCAxMjEzNDgsIDQxMTk5LCAxMDEyMSwgMjAyOCwgNzQ5NTAsIAorICAgIDEyMDI1MywgNjk3MTUsIDEyODUyNSwgMzA2MiwgOTgzNjYzLCA3NDQ0NywgMTI2MDgsIDk4MzY1NywgNjY0NDAsIDc1NDUsIAorICAgIDk3MDAsIDExOTQ4LCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCA2ODMwNiwgNzQwNzEsIDEyODcyMiwgOTIzNzIsIAorICAgIDEyNzEzLCAxMjc1MTksIDcwNDAyLCAwLCA3ODc3MiwgMTEzNzA5LCAxNzM0LCAwLCA3ODE0MSwgMTI3MDQwLCA2NDU5NCwgCisgICAgMjQ1NiwgMjMxLCA2ODIyNywgNzQxNjcsIDU0MiwgMTIwNTg2LCAxMDA4NTEsIDk4Mzg1OSwgMTk0Nzk3LCAxMjMwLCAKKyAgICA3Mzg0NSwgMTIxMzQzLCAzNTk3LCA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCA2NzczNywgODM1MiwgNzg0MzYsIAorICAgIDU2ODcsIDEyNzAxOCwgNjQ1MTUsIDEyMTM3OCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCA5ODM1ODUsIAorICAgIDE5NDU3MywgNzAwODAsIDcxMzM4LCAxMjA1NzUsIDg2NjAsIDEyNjQ3OCwgMTI3MDEwLCAxMjg0NjcsIDc4NzczLCA3NDQ4MiwgCisgICAgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIDYwODAsIDEyODE2NywgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCA5ODMxMDEsIAorICAgIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDExODc4NiwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgNjc5NzksIAorICAgIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDEyMDg0OSwgMTIxNDc4LCAKICAgICA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA2NzY4MiwgMTA4NzcsIDExODg2OCwgNjQ4ODUsIAotICAgIDc0MjcyLCAwLCAxOTQ2NzIsIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAxMjQ5MzMsIDc0NDU2LCA2NDYwNiwgOTkxNywgCi0gICAgMCwgNzQ4NTUsIDUwMzcsIDExOTkxMiwgMTc3NiwgODQyMiwgMTI4OTM1LCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCAKLSAgICA0MzMyOCwgMCwgNDI2OTgsIDEyOTUsIDE5NDg1MywgNDYyNSwgNzc4NTUsIDQ2MzAsIDEzMTE3LCA4MzAwMiwgMTI4NzcyLCAKLSAgICA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIAotICAgIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDk4Mzk0OSwgNjU0MTksIDAsIAotICAgIDEyODQ5NiwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDk4MzcyMSwgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIAotICAgIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIDkxNzgyNiwgODE1NywgOTczNiwgNjQ1MDMsIAotICAgIDY1NDE4LCAxMjkwNTAsIDk4Mzg3OCwgNzQwMzUsIDE5NDkxOCwgMTE5MTMsIDczODc0LCA2Njk2LCAxMjA5MTYsIDg5MjAsIAotICAgIDExOTI5OCwgMTI4NDI2LCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDExOTgyNSwgMTI4NTk4LCAKLSAgICAxMDE3NywgNzM3NzcsIDE4NTcsIDE5NDY1NywgNDYyNiwgODQ2NCwgODQ3MiwgNjg4NDQsIDQ2MjksIDg0OTksIDc0NjI3LCAKLSAgICA3ODMyMiwgNDYyNCwgNzgxOCwgMTE4ODYxLCAxMjgxMDgsIDAsIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCAKLSAgICA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgNDM5ODksIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgCi0gICAgODQ5NiwgODM0OTksIDc0NTgyLCA3NTA1MiwgNzgzMzksIDk1NDMsIDY3ODYwLCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCAKLSAgICA3NzgzMSwgOTgzOTYxLCAxOTQ2NDksIDEyNDUxLCA3NDM3NiwgODY4NCwgMTI4MzAxLCA2MTAyLCAwLCA1Mjk4LCA5MTc4NDcsIAotICAgIDUyOTQsIDAsIDgzMDE2LCA2ODA0MywgMTk1MDYyLCA5OTQ5LCA4MzAxNCwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIAotICAgIDEyODY0NiwgNzc4NjMsIDEzMTA4LCAxMjA2MTcsIDExNDM5LCA0MTQ2OCwgODMwMTIsIDAsIDUyOTIsIDU1MjcyLCAKLSAgICA5ODM4ODMsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3NywgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgNzUwMzYsIDY2NDMsIAotICAgIDkyNDc3LCA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDc4ODM1LCAxMzIxOSwgOTU2OSwgMTI5MDQxLCAKLSAgICA3NDM4MywgMCwgNzQxOTcsIDEyOTA4OSwgNTUwMCwgODgxMywgMCwgMTI4NjEyLCA2ODg2MCwgNTMyMiwgMTIwOTQ0LCAKLSAgICA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgMTMyODIsIAotICAgIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIDk5MjYsIDcxOTcsIDEyODI0OCwgNjg0MjksIDQyODk0LCA0MTgyMSwgCi0gICAgMTI0OSwgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgCi0gICAgNDMxNjIsIDQxODE1LCA0MTE1MCwgMTI4OTExLCAxMDU3MSwgMTAwOTYsIDY3MTYxLCA2NzE2MCwgNjcxNTksIDY5NDcsIAotICAgIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA2NzE1NywgOTM5NjYsIDY2NzAsIAotICAgIDY3MTc1LCA2NzE3NCwgMCwgNDMwOTIsIDQzMzI1LCA2NzE3OCwgMTAxNjgsIDY3MTc2LCA5NzgxLCA2ODI0OCwgOTE5MCwgCi0gICAgMTI4NDk3LCA5NjY2LCA4MjY5LCA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIAotICAgIDEyOTEzMiwgNzI0MDksIDc4MjU2LCA3MjQwOCwgNzgzNTIsIDAsIDc1MDYzLCAwLCAwLCAxMzc4LCA5NTA5LCAxOTQ2MzQsIAotICAgIDkyOTk2LCA3MjQwNywgMzA2NiwgOTIyMjAsIDY3ODQ3LCA3MjQwNiwgOTIzNTUsIDkxNzg5MCwgNzgzNjUsIDg3ODcsIAotICAgIDY3MTg5LCAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxMjczODQsIDAsIDY0NjUyLCAxMjEyMjIsIDEyMTAxMiwgMCwgCi0gICAgNzgzNjYsIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgCi0gICAgNzEwNTAsIDgxMTksIDY0ODc0LCA3MTA1MiwgNzgxNzQsIDEyODY5MCwgMTI4NjMwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIAorICAgIDc0MjcyLCAxMjgwNzYsIDE5NDY3MiwgMTIxMjAyLCAxMDA2NTIsIDc0MzEyLCAzNDUsIDEyNDkzMywgNzQ0NTYsIDY0NjA2LCAKKyAgICA5OTE3LCAxMjUyNDQsIDc0ODU1LCA1MDM3LCAxMDA5OTgsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgCisgICAgNDEyMDEsIDMyMywgNDMzMjgsIDkxNzg0OSwgNDI2OTgsIDEyOTUsIDE5NDg1MywgNDYyNSwgNzc4NTUsIDQ2MzAsIDEzMTE3LCAKKyAgICA4MzAwMiwgMTI4NzcyLCA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCAKKyAgICA2NTQyMCwgOTI0NzksIDEyNzE5MSwgNDI1MiwgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgCisgICAgMTI5MzE4LCA2NTQxOSwgMCwgMTI4NDk2LCA2NDksIDY1NDIxLCAxMjI4ODAsIDY2NzAyLCA5ODM3MjEsIDEyNjcwLCAxMDEzLCAKKyAgICA3MDcwNywgNjQ5MTksIDcwNSwgNzI4MjUsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIAorICAgIDkxNzgyNiwgODE1NywgOTczNiwgNjQ1MDMsIDY1NDE4LCAxMjkwNTAsIDEyODA5MCwgNzQwMzUsIDc4ODM2LCAxMTkxMywgCisgICAgNzM4NzQsIDY2OTYsIDEyMDkxNiwgODkyMCwgMTE5Mjk4LCAxMjg0MjYsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCAKKyAgICA2NjIyNywgOTgzMjcyLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgMTAxNzcsIDczNzc3LCAxODU3LCAxMjc3NzMsIDQ2MjYsIAorICAgIDg0NjQsIDg0NzIsIDY4ODQ0LCA0NjI5LCA4NDk5LCA3NDYyNywgNzgzMjIsIDQ2MjQsIDc4MTgsIDExODg2MSwgMTI4MTA4LCAKKyAgICAwLCA3ODA1LCAxMjg3NTQsIDk0MDA3LCA2OTM1LCA5MjI5MiwgNzgzMjUsIDc4MzI2LCA3ODA3OSwgNDMzMjcsIDQzOTg5LCAKKyAgICAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDgzNDk5LCA3NDU4MiwgNzA2OTAsIDc4MzM5LCAKKyAgICA5NTQzLCA2Nzg2MCwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgNzc4MzEsIDEyODYxNSwgMTAwNDEyLCAxMjQ1MSwgNzQzNzYsIAorICAgIDg2ODQsIDEwMDUxNSwgNjEwMiwgMTI4MDQ2LCA1Mjk4LCAxMjg3MjEsIDUyOTQsIDgzMjM1LCA4MzAxNiwgNjgwNDMsIAorICAgIDE5NDg5OSwgOTk0OSwgODMwMTQsIDQzNjE3LCAxMTkyMTUsIDEyNzAzMCwgMTIwNzMsIDEyMDczNiwgMTI4MDE3LCA3Nzg2MywgCisgICAgMTMxMDgsIDcxMjMxLCAyMjYwLCA0MTQ2OCwgODMwMTIsIDAsIDUyOTIsIDU1MjcyLCA5ODM4ODMsIDE5MzksIDUzMDIsIAorICAgIDM5NzAsIDEyOTM0OCwgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgNzUwMzYsIDY2NDMsIDkyNDc3LCA2NTI2MywgMCwgCisgICAgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDc4ODM1LCAxMzIxOSwgOTU2OSwgMTI5MDQxLCA3NDM4MywgMCwgNzQxOTcsIAorICAgIDEyOTA4OSwgNTUwMCwgODgxMywgOTgzNDE0LCAxMjg2MTIsIDY4ODYwLCA1MzIyLCAxMjA5NDQsIDc4MzQwLCA0MzYzMSwgCisgICAgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCAxMzI4MiwgMzM2MCwgNzgzNDQsIAorICAgIDIyMzEsIDcyNzI2LCA5MjQ4OCwgOTkyNiwgNzE5NywgMTI4MjQ4LCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCA3ODM2MCwgCisgICAgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgNDE4MTUsIAorICAgIDQxMTUwLCAxMjg5MTEsIDEwNTcxLCAxMDA5NiwgNjcxNjEsIDY3MTYwLCA2NzE1OSwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgCisgICAgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDY3MTU3LCA5Mzk2NiwgNjY3MCwgNjcxNzUsIDY3MTc0LCAwLCAKKyAgICA0MzA5MiwgNDMzMjUsIDY3MTc4LCAxMDE2OCwgNjcxNzYsIDk3ODEsIDY4MjQ4LCA5MTkwLCAxMjA5ODEsIDk2NjYsIDgyNjksIAorICAgIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgMTI4NTU2LCA3MjQwOSwgNzgyNTYsIAorICAgIDcyNDA4LCA3ODM1MiwgOTIyMTIsIDc1MDYzLCA3MjgzOSwgMCwgMTM3OCwgOTUwOSwgMTk0NjM0LCA5Mjk5NiwgNzI0MDcsIAorICAgIDMwNjYsIDkyMjIwLCAyMjcwLCA3MjQwNiwgOTIzNTUsIDkxNzg5MCwgNzgzNjUsIDg3ODcsIDY3MTg5LCA3MjgxOCwgCisgICAgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDEyNzM4NCwgMCwgNjQ2NTIsIDEyMTIyMiwgNzI4MzMsIDEyNTIyNiwgNzgzNjYsIAorICAgIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzEwNTAsIAorICAgIDgxMTksIDY0ODc0LCA3MTA1MiwgNDM5NjQsIDEyODY5MCwgMTI4NjMwLCA3NDUyNSwgNzI4NDMsIDEwMDc4MywgMTI5MzAsIAogICAgIDEzOTQsIDc0NTE0LCAxMjg0MTMsIDc0NTE1LCA5ODM3MjcsIDY3MTg0LCAyOTk4LCA5NTI3LCA2NzE4MSwgNjUxOTAsIAogICAgIDEyOTc3LCA0MjA5MCwgNjcxODUsIDk4MzY0NywgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIAogICAgIDU4NDgsIDY3MTkzLCA2NzE5MiwgMzY3MCwgNjcxOTAsIDY3MTk3LCA2NzE5NiwgNjcxOTUsIDc4OTAsIDEyODA3MCwgCi0gICAgMTEyOTgsIDQzMzE1LCA5ODMzMTUsIDYyMjksIDE1OTMsIDAsIDEyNTEyMCwgNjE5LCA0NjM1LCA2NTA4MCwgMTI3MTU4LCAKKyAgICAxMTI5OCwgNDMzMTUsIDc3ODcxLCA2MjI5LCAxNTkzLCAwLCAxMjUxMjAsIDYxOSwgNDYzNSwgNjUwODAsIDEyNzE1OCwgCiAgICAgMTIxOTQsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMTI4NDA3LCAxMTgwOCwgNjcxOTksIDY3MTk4LCA5MzY2LCA0Mjc5MCwgCiAgICAgNDIwMDYsIDExOTExNSwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIAogICAgIDQzOTQ3LCA2NTMzNCwgNDM5NDYsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIAotICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzgzMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKLSAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMjA4NjIsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAotICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMCwgMCwgNDM5NDEsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDY2MjkyLCAKLSAgICA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDEyMTM1MSwgNTYyLCAxMjE2OSwgCi0gICAgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIAotICAgIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCA0MzgzOSwgMjgzNSwgODMwNTIsIAotICAgIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjg1MjMsIDgzMDQ2LCAxMjYwNiwgNzg0MzMsIDI4MjUsIDgzMDQ4LCAKLSAgICAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAxMzA3MSwgMTIxMjg4LCA0NTIsIAotICAgIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCA5MTc5MTcsIDY0NzAzLCAKLSAgICAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAxMTk4NDksIDEyMTE1MCwgCi0gICAgMTI4Mjc1LCAxMTg3LCA5ODMzODcsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgMzI0MCwgMTI4NTE4LCAKLSAgICAxMjE1MSwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCAwLCAxMTg5MzIsIDAsIDY2ODI3LCAxNjIzLCA2NTI5NywgCi0gICAgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgMTU0MSwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDY2NDAyLCAKLSAgICAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCA3MDQ3NiwgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgNjgwODMsIAotICAgIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDEyMDg5OSwgNzA0NjIsIDcwMTcyLCAxMTQwMywgMCwgMCwgODI5ODYsIDM3OTYsIAotICAgIDY4MDAsIDcwNDcyLCAzOTk0LCAxMTQyMSwgNzQ2MTEsIDE5NTA3NiwgMTk1MDc4LCA2ODAzNiwgMCwgMCwgNjQ4NTcsIAotICAgIDgzNTA4LCAyODU1LCA3NDQxOCwgNjYzMDgsIDQxNjIxLCA2ODIxNCwgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAKLSAgICAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIAotICAgIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCA4MzAzMSwgODQ2NiwgCi0gICAgODMwNzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCA3NDYzNywgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAKLSAgICAxMjY1MDAsIDY0NjM0LCA5MjM2MiwgNzAyMDIsIDExNjEyLCA5MzAwOCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAKLSAgICAxMTYwOSwgNjYzMTMsIDkyNTY4LCAwLCA1Mjg2LCAxMTkyOTcsIDgzMDU5LCA5ODMyNTMsIDY0OTI1LCAxMjAyODMsIAotICAgIDEyNzIwNCwgMTE4OTgyLCA3MTkwNSwgNzcwNSwgMTE5NDIsIDExMzA1LCAxMjcyMDMsIDMzMDksIDgyOTc5LCA5MjA2LCAKLSAgICA4Mjk4MCwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgCi0gICAgNDI1NjUsIDQxNjUxLCAwLCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCAKLSAgICA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIAotICAgIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCAKLSAgICA2NTg3NSwgMCwgMCwgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAxMjA5MDYsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCAKLSAgICA5MDE1LCA3MTM1MSwgMCwgMzYzNSwgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgCi0gICAgMTk1MDc1LCAwLCA5MjE5NywgMTI3MDkwLCA2MzUsIDAsIDEyOTA4MiwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIAotICAgIDEyODUxMCwgMTIxNDU3LCA0MzkwNSwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgNzAwNTAsIDIwMzQsIAotICAgIDc4NDIzLCAxMTE1NCwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg1NDQsIDc4NTk2LCAxOTQ2MDIsIDM2NDksIAotICAgIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgNzE4ODUsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDc1MDQ1LCAKLSAgICAxMTQwMiwgNDIxNDYsIDk0MDMyLCA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIAotICAgIDExODEyLCA2NTM3OSwgNjgzODYsIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCAxMjA3OTcsIDcxNzgsIDEyMDg1MSwgCi0gICAgOTgzODM2LCA0MTY4MCwgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgCi0gICAgMTI4NDkwLCA2Nzg3NywgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIAotICAgIDEwODE4LCA4MzA5MSwgOTk1MywgMTk0ODk1LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCAKLSAgICA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIAotICAgIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDEyNTA3OSwgODMzNTQsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDAsIDEwNjQxLCAwLCAKLSAgICA3Mzc0NiwgMTIwOTQ1LCA2ODM1MiwgMCwgNzM3ODcsIDEyODg1OCwgMTI3MDk0LCA3MTk5LCAxMTEzMSwgMCwgMCwgMCwgCi0gICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDAsIDUyNzEsIDY4MzIzLCAKLSAgICA5MjUxNywgODMzNTYsIDEzNjIsIDEzMjk3LCAwLCA3MTg4MCwgMCwgOTgzMzMzLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgCi0gICAgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIAotICAgIDQyNzAzLCA4MzEwNywgMzc5LCAwLCA0Mzc1NSwgNzA1MDQsIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKLSAgICA0NTQ5LCAxOTQ3MzgsIDAsIDcxMjUzLCA3MDc4NCwgMTA4MDcsIDk1NTgsIDkzMDI3LCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCi0gICAgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgODMxNDgsIDkyNDU4LCAKLSAgICA3Mzc1NywgNjY0NTYsIDQyMzU5LCAxMjg0MzksIDIwMzEsIDk4Mzg5MCwgNzIwMiwgMTI4MjMyLCAxMjY3NiwgNDI3MjksIAotICAgIDc0Nzc3LCAzMjE1LCAxMjA5ODIsIDc3MTAsIDE2MTAsIDczODAxLCAxMjg4MDcsIDAsIDY1NjgyLCAwLCA0MzkxNywgCi0gICAgNjU5MjQsIDk5NzQsIDIyOCwgNDM5MjIsIDE1MDEsIDEyNzk5NCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDExODkyNywgCi0gICAgNDI5OTksIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgNjY4NjgsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIAotICAgIDc0ODMsIDQzODk4LCAwLCA4MTA0LCA3MDEyOCwgNzQ3NCwgNDM5MTQsIDgzMDgwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgCi0gICAgODE0MSwgOTgzMjM5LCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNDI5MzQsIAotICAgIDEyNzE2NiwgMCwgNzQxOTAsIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgCi0gICAgMTYzNywgMTI4NTAyLCA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDAsIDEyMDIxMSwgNjUxNTgsIDEwODYwLCA3NDk1OSwgCi0gICAgNDM2NTgsIDc1MjcsIDgzMDg2LCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAotICAgIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMTI4Njg0LCA5MDg0LCAxMjEwMzksIDg3MzcsIDk4MzE2NSwgMTI4ODEsIAotICAgIDc1MDY2LCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgOTgzODgyLCAzNTY0LCAwLCA2OTk3OCwgMTc5LCA0MzY0NCwgCi0gICAgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIDgwODQsIAotICAgIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCA5MjczNiwgCi0gICAgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAotICAgIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCi0gICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzYzMiwgMTE5NjE0LCAKKyAgICA5NDA0NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODMxMzUsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgCisgICAgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMTAwMzU5LCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCAKKyAgICA0MzUzMywgNzg0NTksIDcxODksIDEwMDQxOCwgOTgzMjI3LCA0Mzk0MSwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgCisgICAgOTEzMSwgNjYyOTIsIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgOTgzODg3LCAKKyAgICAxMjEzNTEsIDU2MiwgMTIxNjksIDY1OTAsIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCAxMjEwOTYsIAorICAgIDEyODI4MSwgMTAzNywgMTI4Njc3LCAyMDI1LCAxMTkxNTksIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIDU0OSwgMTU3MCwgCisgICAgNDM4MzksIDI4MzUsIDgzMDUyLCAxMDYyNCwgNDM2MjMsIDExMDcyLCA4MzA0NSwgMTIwNTYxLCA4MzA0NiwgMTI2MDYsIAorICAgIDc4NDMzLCAyODI1LCA4MzA0OCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgNzM2NSwgODMwNDMsIDEyMDU5MywgCisgICAgMTMwNzEsIDEyMTI4OCwgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgCisgICAgMTE4OTQ1LCA2NDcwMywgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMTI4Mjc2LCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAKKyAgICAxMTk4NDksIDEyMTE1MCwgMTI3Mjk1LCAxMTg3LCAxMjg4NzUsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgCisgICAgMzI0MCwgMTI4NTE4LCA5MjEzLCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDcwNzM5LCAxMTg5MzIsIDEyNzExMSwgCisgICAgNjY4MjcsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3MDgxLCAxNTQxLCA2NTA0OCwgCisgICAgMTkwOSwgODg2NCwgMCwgNjY0MDIsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgNDIzNywgCisgICAgOTI1NzYsIDEwMzUsIDY1ODE1LCA2ODA4MywgMzU2NywgNzAxLCA2NTkzNiwgMzQ4OSwgMTIwODk5LCA3MDQ2MiwgNzAxNzIsIAorICAgIDExNDAzLCAwLCAwLCA4Mjk4NiwgMzc5NiwgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgMTI3OTExLCAKKyAgICAxOTUwNzgsIDY4MDM2LCA3MDY1OSwgMCwgNjQ4NTcsIDgzNTA4LCAyODU1LCA3MDY5NywgNjYzMDgsIDQxNjIxLCA2ODIxNCwgCisgICAgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIAorICAgIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAKKyAgICA5MTc5OTksIDk0MiwgMjM3OCwgNDMxMzYsIDgzMDMxLCA4NDY2LCA4MzA3NCwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgCisgICAgMTE2MTcsIDc0NjM3LCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIDEyNjUwMCwgNjQ2MzQsIDkyMzYyLCA3MDIwMiwgMTE2MTIsIAorICAgIDkzMDA4LCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIDExNjA5LCA2NjMxMywgOTI1NjgsIDAsIDUyODYsIDExOTI5NywgCisgICAgODMwNTksIDk4MzI1MywgNjQ5MjUsIDEyMDI4MywgMTI3MjA0LCAxMTg5ODIsIDcxOTA1LCA3NzA1LCAxMTk0MiwgMTEzMDUsIAorICAgIDEyNzIwMywgMzMwOSwgODI5NzksIDkyMDYsIDgyOTgwLCAxMTM4MjQsIDY4MDIsIDcwMzUzLCA0MTY1MywgMTI4MCwgMTI0MSwgCisgICAgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCA0MjU2NSwgNDE2NTEsIDk4Mzg2OSwgOTE3NjI3LCA4MzA0MiwgNDE2NTAsIDY2NTA3LCAKKyAgICA2NjQ3MCwgNzQ0NzIsIDEyOTE0LCA0MTQ5MSwgNDM5MDEsIDk0MTA2LCA2MDc4LCA5OTU0LCA3ODgyMiwgMTQ3NSwgCisgICAgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCA0MTA2MiwgMCwgMTEzNjgwLCAzMjU2LCAxMDE4OSwgNDIwNzYsIAorICAgIDQzMjUyLCA3ODgyMywgNjgwODksIDg3MjcsIDEyMDkyMiwgNjU4NzUsIDkxNzkxNiwgMTI5MzQ5LCAxMjc3NjIsIDEwNTYyLCAKKyAgICA3NDIxNSwgNDMwNjUsIDEyMDkwNiwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDcxMzUxLCAxMTM3MTgsIDM2MzUsIAorICAgIDY0MzM3LCA5Mjc1OSwgMTI1MDU0LCAwLCA3MTk1LCA4MzM0NiwgMjAwNywgNjQ0MzEsIDE5NTA3NSwgMTk0NjcwLCA5MjE5NywgCisgICAgMTI3MDkwLCA2MzUsIDk4MzExOCwgMTI5MDgyLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgMTI3OTgwLCAxMjE0NTcsIAorICAgIDQzOTA1LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTIxMDQ3LCA0MTc2LCA3MDA1MCwgMjAzNCwgNzg0MjMsIDExMTU0LCA2NTg5MSwgCisgICAgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODU0NCwgNzg1OTYsIDEyOTA5NCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgCisgICAgMzYzNCwgMTIwMjkxLCA3MTg4NSwgNjc2NzcsIDEyMDEyNCwgNzg2NiwgNzUwNDUsIDExNDAyLCA0MjE0NiwgOTQwMzIsIAorICAgIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgCisgICAgMTI4MTg1LCAxMTU5LCA3MTE4MywgNjk3MjksIDAsIDY2NzY4LCA3MTc4LCAxMjA4NTEsIDk4MzgzNiwgNDE2ODAsIAorICAgIDEyODQ2OSwgODMwOTgsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDEyODQ5MCwgNjc4NzcsIAorICAgIDE5NDU2MSwgMTI5ODksIDY2NDc0LCA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDc0Mjc4LCAxMDgxOCwgODMwOTEsIAorICAgIDk5NTMsIDEyODAwOCwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIAorICAgIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCA5MTc5MjQsIDY3ODc1LCAxMjAzMDEsIDM0OTUsIAorICAgIDY2NjQ4LCAxMjUwNzksIDc4NzA4LCA2ODM2NCwgMTIwNzc5LCA0ODkxLCA5MTc5MzMsIDEwNjQxLCAxMjUyNjUsIDczNzQ2LCAKKyAgICAxMjA5NDUsIDY4MzUyLCAwLCA3Mzc4NywgMTIwMTk1LCAxMjcwOTQsIDcxOTksIDExMTMxLCAxMjA2MTcsIDE5NDcwMCwgMCwgCisgICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDk4Mzg2OCwgNTI3MSwgCisgICAgNjgzMjMsIDkyNTE3LCA4MzM1NiwgMTM2MiwgMTMyOTcsIDExODg2MiwgNzE4ODAsIDE5NTA5MCwgMTk0OTY5LCA3Mzc4OSwgCisgICAgMTIwOTg5LCA2NjU4LCA0NDI2LCAxMjcwOTMsIDY2ODMwLCA5ODM4NDIsIDgzMTAzLCA3Mjc2LCA0MjE2MywgNTIyMCwgCisgICAgMTAwNjcwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIDQyNzAzLCA4MzEwNywgMzc5LCAxMjkxNTksIDQzNzU1LCAKKyAgICA3MDUwNCwgNDM2NDcsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIDQ1NDksIDExNTIzLCAwLCA3MTI1MywgNzA3ODQsIAorICAgIDEwODA3LCA5NTU4LCA5MzAyNywgMTI4MDAzLCA4NTE1LCA4Njg4LCAxMjg2NiwgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAKKyAgICAxMjgxMDEsIDQzMzg1LCA3NTY0LCA5MTc5ODYsIDQzMzI5LCA4MzE0OCwgOTI0NTgsIDczNzU3LCA2NjQ1NiwgNDIzNTksIAorICAgIDEyODQzOSwgMjAzMSwgMTI3Mzk0LCA3MjAyLCAxMjgyMzIsIDEyNjc2LCA0MjcyOSwgNzQ3NzcsIDMyMTUsIDEyMDk4MiwgCisgICAgNzcxMCwgMTYxMCwgNzM4MDEsIDEyODgwNywgMCwgNjU2ODIsIDAsIDQzOTE3LCA2NTkyNCwgOTk3NCwgMjI4LCA0MzkyMiwgCisgICAgMTUwMSwgMTI3NTEyLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMTE4OTI3LCA0Mjk5OSwgMTcyNSwgNjU1MzMsIDgxOTYsIAorICAgIDc0NzYsIDc0Mzk5LCAwLCA2Njg2OCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgNDM4OTgsIDAsIDgxMDQsIAorICAgIDcwMTI4LCA3NDc0LCA0MzkxNCwgODMwODAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCA4MTQxLCAxOTQ5NDksIDQyNTM3LCAKKyAgICAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA0MjkzNCwgOTIyMDMsIDEyNTIxMSwgNzQxOTAsIAorICAgIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgMTYzNywgMTI4NTAyLCAKKyAgICA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDk4Mzc2MywgMTIwMjExLCA2NTE1OCwgMTA4NjAsIDc0OTU5LCA0MzY1OCwgCisgICAgNzUyNywgODMwODYsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMTI4MDYwLCA2NDU4OCwgOTM5ODksIDEyNzc1MywgMTE5ODEwLCAKKyAgICA3MTk0LCA1MjkxLCAxMDAzOTgsIDQzNjY2LCAxMzEyOSwgMTI2NjM5LCA5MDg0LCA3MjcxNywgODczNywgOTgzMTY1LCAKKyAgICAxMjg4MSwgNzUwNjYsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCAxOTQ4MzAsIDM1NjQsIDEyNzM5MywgNjk5NzgsIDE3OSwgCisgICAgNDM2NDQsIDc1MDQ5LCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgMTI5MDQyLCA3MDM0NywgMTE5MDA5LCAyODUwLCAKKyAgICA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDgzNTIyLCA0MjA3MiwgCisgICAgOTI3MzYsIDExOTg0MiwgMTAzOTgsIDgzMzg2LCA4MzUyMywgODM3NywgMTE5MzEyLCA4MjQ1LCA2ODQwMSwgMzE1OCwgCisgICAgOTIzOTYsIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgOTI0NzAsIDI5MiwgMTExMTksIDExOTg0NSwgNzI3MTUsIDMyMjEsIAorICAgIDE3NjMsIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCisgICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzA5MywgMTE5NjE0LCAKICAgICAyNzMxLCAwLCAxMjA4MzMsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMTIxNDE3LCAxMjgxMzIsIDcwODEzLCA0MzMxNiwgCiAgICAgNDE3NywgMTEyODMsIDkwODksIDEyMDkxOCwgNzM5OTYsIDEyMTExMSwgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgCi0gICAgMCwgMCwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDEyNzM4MCwgOTgzOTMxLCAKLSAgICA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzY4MywgMjAzMywgNzg1NzcsIDc4NTc2LCA4Mjk2NSwgNTUyNTQsIAotICAgIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgNjU2NzQsIDEyODI0NCwgCi0gICAgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgMTI4NTIwLCAxMjgwNjYsIAotICAgIDEyODAzMSwgODU2MSwgNDU3MywgMTIxMzc1LCA1MzI2LCA5MjU3MSwgMTIwNjA1LCA3MjMwLCA4MjU3LCAxMjE0MTUsIAotICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgNDM1MTEsIDc2MjgsIDY1MDkyLCA3MzkwMywgCi0gICAgNjQzNTUsIDExMzQyLCAxMjg1NjEsIDAsIDk4MzQzNCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIAotICAgIDk2NywgOTgzMzM1LCAxMjA5ODUsIDExOTQ2LCA5ODM2MDIsIDMyNTcsIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEyOTA3MiwgCi0gICAgNDM1MjYsIDAsIDExOTU3MywgMTg4NiwgNDIzNDIsIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDc2NjIsIDc2NTIsIDg3NiwgCi0gICAgODcxLCA4NzcsIDc2NjUsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIDQ1NjMsIDAsIDkxNzg5MiwgNzU5MSwgNjU4ODcsIAotICAgIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCAKLSAgICA3OTAsIDEyODMwMywgMTE4OTM4LCAxOTUwNTMsIDkzMDM4LCA2NjE4MiwgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAKLSAgICAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjkxLCAxMjcyMTQsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgCi0gICAgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgCi0gICAgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKLSAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgMTg1MSwgMTI0OTk1LCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIAotICAgIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCAxMTExMiwgMCwgOTIzMjEsIDQzMzE4LCAKLSAgICA5MjMwMiwgODgwOSwgNjk4ODEsIDAsIDEyNjUxOCwgMTIwNjA0LCA5ODMwNTIsIDk4MzI3NywgOTgzNDMzLCAxMjg0MTIsIDAsIAotICAgIDEyMDU3NywgNzQyNywgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIAotICAgIDMzNTIsIDc0MzYzLCAxMjg2NjgsIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAKLSAgICA2OTk3OSwgODIwOCwgNjgzMDgsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgCi0gICAgMTk0NjI4LCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIAotICAgIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgOTE3NjA1LCAxOTQ2NTQsIAotICAgIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMTI2NjEyLCA2NzcyMywgMjg0MCwgOTgzOTA1LCA3ODgyOSwgOTgzOTM5LCAKLSAgICA2Njg4NywgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgCi0gICAgNjgwMTYsIDk4MzI2NywgMTI3MzI2LCAxMjUwMzgsIDcwODM1LCAwLCA3MDg0NCwgNDM2NDgsIDEyMDgxMiwgOTE3ODMzLCAKLSAgICA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIAotICAgIDc0ODk0LCAxMTE1MiwgOTI5MDMsIDY1NjEwLCAyMzkxLCA5MjkwOCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgCi0gICAgNjEwLCA0MjgwMCwgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAKLSAgICAxMjgzNDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAxMjgyOTAsIDc0MjQ5LCA0NjA1LCAxMjgxNzQsIDk4MzE5MiwgCi0gICAgNDMzNzIsIDY1OTQ1LCAxMjcyNDksIDExMTEzLCAxMTk1OTAsIDAsIDAsIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCAKLSAgICA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDk4Mzk1MSwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAotICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAwLCAKLSAgICA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCAKLSAgICA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAxMjAyODEsIDAsIAotICAgIDk4Mzc3NywgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAotICAgIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIDY4NjcyLCAzMjIwLCAKLSAgICA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCAKLSAgICA1ODUyLCAwLCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIDEyODcwMCwgNjkyMjYsIAotICAgIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NzYsIDEyMDI4NSwgNzA0NDcsIDk0MTExLCAKLSAgICA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTI3NTUyLCAyNjI1LCA5ODM2NDEsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAKLSAgICAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCA5ODMwNjUsIDAsIDQzMzg0LCAxMjY2MCwgMTI4NjkzLCAxMjgyNzAsIDAsIAotICAgIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgCi0gICAgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgCi0gICAgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3NDk4OCwgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCAKLSAgICA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjg3MDcsIAotICAgIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAwLCAxNzU3LCAKLSAgICA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgCi0gICAgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIAotICAgIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCAwLCAKLSAgICAxMjkxMywgNzQyMDYsIDc1MjksIDEyODc0NSwgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIAotICAgIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgNjgyLCA3NjU1LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKLSAgICA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDAsIDQyMzUxLCAKLSAgICAxMDEwOSwgNzQ1MzUsIDc0MDY4LCA3NDkyMSwgMCwgOTI2OTAsIDAsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIAotICAgIDAsIDczODg3LCAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgCi0gICAgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgCi0gICAgMTA0OTgsIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIAotICAgIDQxNjUsIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDE5NDY5MywgNzA0MTUsIDEyODEzNSwgCi0gICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgNDEwMzksIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgCi0gICAgMTE4MSwgNzA1NiwgMzE3NCwgNjcyNDgsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMTM3NzYsIDY5MjAsIDAsIDkyMjk1LCAKLSAgICAxMjY2MDYsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKKyAgICAxMDA1NzIsIDEyNzgxMiwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDExOTEyMSwgCisgICAgOTgzOTMxLCA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzMyOSwgMjAzMywgNzg1NzcsIDc4NTc2LCAKKyAgICA4Mjk2NSwgNTUyNTQsIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgCisgICAgNjU2NzQsIDEyNzU1MiwgOTQxMTAsIDQxNjg5LCA5ODM0MTAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAKKyAgICAxMjg1MjAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAxMjEzNzUsIDUzMjYsIDkyNTcxLCAxMjA2MDUsIDcyMzAsIAorICAgIDgyNTcsIDEyMTQxNSwgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCA0MzUxMSwgNzYyOCwgCisgICAgNjUwOTIsIDczOTAzLCA2NDM1NSwgMTEzNDIsIDEwMDU3OSwgOTgzNzMyLCAxOTQ5MzksIDEyODIyNiwgMTI3MDAxLCAKKyAgICAxMjc5NDQsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgMTAwNDgxLCAxMjA5ODUsIDExOTQ2LCAxMjkwMzIsIDMyNTcsIAorICAgIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEwMDU3OCwgNDM1MjYsIDk4MzA4NCwgMTE5NTczLCAxODg2LCA0MjM0MiwgMTAwODksIAorICAgIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgODc2LCA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgCisgICAgNDU2MywgOTgzMjQ5LCA5MTc4OTIsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgNzY1NiwgODY4LCA4NzMsIDc2NDIsIAorICAgIDc2NTksIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgNzkwLCAxMjEwODIsIDExODkzOCwgMTAwNDI3LCA5MzAzOCwgCisgICAgNjYxNzcsIDE5NDYyMywgNTQyOSwgMTk1MDU1LCA2NjE4MCwgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDE5NDk2NiwgMTE5MjQ0LCAKKyAgICA0MjA2NywgMTE5OTkzLCA1NDMzLCAxMDY1NywgNzkxMSwgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgCisgICAgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgCisgICAgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgCisgICAgMTg1MSwgMTIwODIzLCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCAKKyAgICA4ODI5LCA3NzExLCAxMTExMiwgMTI4Nzg3LCA5MjMyMSwgNDMzMTgsIDkyMzAyLCA4ODA5LCA2OTg4MSwgMTI4NTY0LCAKKyAgICAxMjUyMjksIDEyMDYwNCwgOTgzMDUyLCA5ODMyMzgsIDk4MzQzMywgMTI4NDEyLCAwLCAxMjA1NzcsIDc0MjcsIDk5NTgsIAorICAgIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTI3MTg1LCAyNDMzLCAxMjg2MDIsIDY5OTczLCAzMzUyLCA3NDM2MywgMTI2NjAxLCAKKyAgICAxMjEzNDEsIDc5MywgNzQ0MDQsIDExMTk3LCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgNjk5NzksIDgyMDgsIDY4MzA4LCAKKyAgICA0MTY5NSwgMTY0NywgMTE4ODc3LCA3MDg0MSwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIDEyODM3NywgMTI3OTg5LCAKKyAgICA0MTM3NiwgMTE5OTc4LCA2ODc0MiwgMTIwNTk0LCA3NDA4NiwgNjg3NzcsIDcwMTc5LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgCisgICAgMTM3MiwgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDE5NTAwNiwgMTk0NjU0LCA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgCisgICAgNzgyMjEsIDcyNzQ2LCA2NzcyMywgMjg0MCwgMTI4ODQyLCA3ODgyOSwgOTgzOTM5LCA2Njg4NywgMzI0NSwgOTA2OCwgCisgICAgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgNjgwMTYsIDk4MzI2NywgNzI4NzMsIAorICAgIDEwMDYwMSwgNzA4MzUsIDAsIDcwODQ0LCA0MzY0OCwgMTIwODEyLCAxOTQ4NTQsIDQzMzIyLCA5MjY2MiwgMCwgMCwgCisgICAgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgNzQ4OTQsIDExMTUyLCAKKyAgICA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKKyAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDEyODM0MCwgCisgICAgMTAwNzQxLCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODI5MCwgNzQyNDksIDQ2MDUsIDEyODE3NCwgMTAwNzQ1LCA0MzM3MiwgCisgICAgNjU5NDUsIDcyNzEwLCAxMTExMywgMTE5NTkwLCAwLCAxMDA3NDksIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCA0MjI2MSwgCisgICAgMTE0NjQsIDMzNjUsIDk5NzEsIDcwNjczLCAxMjc5NDIsIDEyODI5NywgMCwgNzg3NjIsIDEyNzg2NywgMTIxMzY4LCAKKyAgICAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIDQ2MjcsIDExOTI2OSwgNTIwOCwgCisgICAgMTEzNjkwLCA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA0MjE0MiwgCisgICAgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAKKyAgICAxMjAyODEsIDAsIDE5NTA4OCwgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAKKyAgICAzMjA2LCAxMjAyNzgsIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIAorICAgIDY4NjcyLCAzMjIwLCA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgOTgzODMzLCA3MDQ4LCAKKyAgICA0NTkwLCAxMjcyNTgsIDU4NTIsIDk4MzgxOSwgNzg0ODIsIDEyNzI1OSwgMTcwOCwgMCwgNzg0ODEsIDI2MjMsIDExOTQzLCAKKyAgICAxMjExNDAsIDY5MjI2LCA2OTk3NCwgNDY5OCwgNjY1MDksIDEwNjYsIDExOTkyMSwgNDcwMSwgMTAwNTY0LCAxMjAyODUsIAorICAgIDcwNDQ3LCA5NDExMSwgODI2NywgMCwgMTQyMSwgNjY0MjYsIDc1MTYsIDEyMDQwNiwgMjYyNSwgMTI4MjQyLCA4MDM0LCAKKyAgICA3NDMwOSwgMTk0NzE1LCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAxMjcwMzIsIDEyMDYxMywgOTgzNTc4LCAKKyAgICA0MzM4NCwgMTI2NjAsIDEyMjg4MywgMTI4MjcwLCAwLCA3NDg1MCwgNDEwNjksIDcwMTg1LCAxMjgxNTYsIDEyMDk5LCAKKyAgICA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCA5ODM0ODksIDM5OTAsIDEyNTA1MCwgOTgzMjY0LCA2NjM2OCwgNTAxNywgCisgICAgNjQ5NTYsIDcwNzEsIDAsIDcwNDU3LCAxMDMwLCAxMTg4MDAsIDkyNTYzLCA5NTEzLCA0MTA1OSwgOTM1NywgNzA2NzUsIAorICAgIDE3NzMsIDc3OTM5LCAxMjAzNTAsIDEyNDk2MSwgNjMzOSwgNzc0NSwgOTg0NCwgMTI3MjIwLCA2NDY1MCwgOTQsIDE4ODAsIAorICAgIDc0NzY2LCAxMTM3MTksIDg5MDgsIDk4MzIyMiwgMTI4MjM2LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgNjg3NjksIAorICAgIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzNiwgMTAwNjY5LCAxNzU3LCA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCAKKyAgICA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgCisgICAgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgCisgICAgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCA3MjQyMSwgMTI5MTMsIDcwNzIyLCA3NTI5LCAxMjA2MDgsIAorICAgIDEyNzg2OCwgNzAyMDMsIDEyMDc4MiwgNDExMywgMTIwOTI5LCAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAxOTQ4ODUsIAorICAgIDY4MiwgNzY1NSwgNDE1MDUsIDk4Mzc1MywgNjQ3NDMsIDEwNTkzLCAxNzAzLCA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAKKyAgICAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDk4MzIwNSwgNDIzNTEsIDEwMTA5LCA3NDUzNSwgNzQwNjgsIAorICAgIDc0OTIxLCAwLCA5MjY5MCwgMTIyODg2LCA2NTA2OCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgCisgICAgMTExMzAsIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgMTExNDUsIDEyMTExNywgNzQyMzksIDQxMzE3LCAKKyAgICA5MjYxNCwgMjA5MSwgNzQ1NDUsIDIwOTAsIDY5OTEyLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMTExNjEsIDEwNDk4LCAKKyAgICAyMDgzLCA3Nzg4OCwgNzExOTYsIDAsIDExOTIzNiwgNjM0LCAxMjQ5NzAsIDkyMjkwLCAxOTQ4ODYsIDY5Nzc5LCA0MTY1LCAKKyAgICA4NzQ2LCAxOTUwNDgsIDk2NTQsIDEyODU2LCA2OTI0LCA3NjYwLCA3MDY2LCAxMjcwNTEsIDcwNDE1LCAxMjgxMzUsIAorICAgIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDIyMzMsIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgMTE4MSwgCisgICAgNzA1NiwgMzE3NCwgNjcyNDgsIDk4MzE3MSwgOTI2NjgsIDY1NjY1LCAxMDA1OTQsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAorICAgIDcwNjcyLCAxMTg5NjUsIDY4MzE4LCA2NDY0NCwgMTI2OTgxLCA3NDExOSwgNjgyMzgsIDQxMDI4LCA3NDAyNSwgNjIzMSwgCiAgICAgMjYxMywgNjUzMDIsIDQwOTg5LCA2ODIzOSwgNjgyMzAsIDY4MjM0LCA0Mjc2MCwgMCwgNDM4OTYsIDAsIDQwOTg3LCA0NjY3LCAKLSAgICAwLCA3MTg0MywgODgyOCwgNzc5OTUsIDcwNTA2LCAxMjQ2LCA0NzQ2LCAxMjg1MDEsIDEyODUwOCwgMTEwMjEsIDQ3NDksIAotICAgIDkyNjc1LCA5MTc4ODIsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMCwgMTU2NiwgODIxNywgMTI3MjEwLCA2NDY1MywgCi0gICAgNzgzODYsIDc0NjE3LCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCA5NTEsIDc0NTY4LCA5Mjk4MywgOTgzODY3LCA3NjA0LCAKLSAgICA5ODMyOTIsIDQwMDksIDcwMjc3LCA3MTg0NCwgMTIwNTYyLCAwLCA5ODM3MjAsIDY0ODYwLCAxMTkxMzgsIDExOTA2OSwgMCwgCi0gICAgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDgzMDA5LCA3MDAyNCwgMTY0NiwgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAKLSAgICAxMjkwNDcsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAKLSAgICAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTM1LCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIDkxNzU2MiwgNzgyOTksIAotICAgIDMzOTksIDk4NTEsIDkxNzYwOSwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDEyNzc2NywgMCwgNzE4NDIsIAotICAgIDcwMTc4LCA5MjMxNCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjY4NjcsIDc0OSwgNDIzNjYsIDcwNDQ0LCA1Mzg1LCA3MDc5MSwgCi0gICAgNzI0MzUsIDcwMTI3LCA4MzM3NywgNTk4OSwgMTI4OTA1LCA3NDYzNiwgMTIwODQ4LCAwLCA0MTY4NSwgNjkyMjMsIDAsIAotICAgIDk3NjksIDQxNjg0LCAxOTQ3MzcsIDUxOSwgMTE5MjMxLCAxMTc0MCwgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgNzA0MTYsIAotICAgIDQxMjk3LCAwLCAzNjY2LCA3MDQyMCwgNDEzMDAsIDc0NDY4LCA2NTE2MCwgMCwgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgCi0gICAgNjU1OCwgMTI3MTQ5LCAxMjgwNjQsIDY5NzY1LCA5Mjc3NSwgMjUyLCAwLCA0MTMwMiwgMTE5MzUwLCA4MzUwNCwgMTE4ODM5LCAKLSAgICA2OTc2MywgNjg3NjIsIDExNzI5LCA4NzE5LCA5MDYwLCAxMjkwOTEsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDEyOTQxMCwgCi0gICAgMTE4NzkyLCAxMTczNCwgOTMwMTEsIDExNzMwLCAxMTM3NDEsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgCi0gICAgMTE3MjgsIDQzNTcyLCA5ODMxMzksIDAsIDc3NjQsIDY4NzQxLCAxMTA5NCwgMTIwODI1LCAwLCA0MzQ4OSwgNDI4MiwgCi0gICAgODI5OCwgMCwgMCwgNzAzMjgsIDE5NDk4NiwgNzAzMjQsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCA2NTU4NywgCi0gICAgNzA0NDIsIDY1NjcwLCA5ODM5NjMsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgOTgzODY5LCA3MDMyNiwgMCwgCi0gICAgNzE0NjAsIDEyMDc2NCwgNzAzMjIsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgCi0gICAgMTIwMjA3LCAyNjAyLCAxMjgzNDEsIDEyMTEwMywgMTI1MDQzLCA0MTEzNSwgODM0OTgsIDAsIDEyMTMyNSwgNjQ2MzEsIAotICAgIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDc3OTI2LCA3NTk3LCAxMDUyOCwgCi0gICAgNzUwNTQsIDAsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDk4Mzk3MSwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIAorICAgIDEyMTIxMiwgNzE4NDMsIDg4MjgsIDc3OTk1LCA3MDUwNiwgMTI0NiwgNDc0NiwgMTI4NTAxLCAxMjg1MDgsIDIyNjksIAorICAgIDQ3NDksIDkyNjc1LCA5MTc4ODIsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMTAwNTk1LCAxNTY2LCA4MjE3LCAKKyAgICAxMjcyMTAsIDY0NjUzLCA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIAorICAgIDkyOTgzLCA5ODM4NjcsIDc2MDQsIDEyODI2NiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjAxMTUsIDEyNjY0MiwgOTQwNzQsIAorICAgIDY0ODYwLCAxMDA1NTEsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDgzMDA5LCA3MDAyNCwgMTY0NiwgCisgICAgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAxMjkwNDcsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgCisgICAgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTM1LCA1NTIyMCwgMTAwODQsIDczOTQzLCAKKyAgICAxMTg4NDAsIDk4MzcyOCwgOTE3NTYyLCA3ODI5OSwgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgCisgICAgMTI3MDUyLCA2Nzg5LCAxMjc3NjcsIDAsIDcxODQyLCA3MDE3OCwgOTIzMTQsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY2ODY3LCAKKyAgICA3NDksIDQyMzY2LCA3MDQ0NCwgNTM4NSwgNzA3OTEsIDcyNDM1LCA3MDEyNywgODMzNzcsIDU5ODksIDEyODkwNSwgNzQ2MzYsIAorICAgIDEyMDg0OCwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgMTk0NzM3LCA1MTksIDExOTIzMSwgMTE3NDAsIAorICAgIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDcwNDE2LCA0MTI5NywgMCwgMzY2NiwgNzA0MjAsIDQxMzAwLCA3NDQ2OCwgCisgICAgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDEyNzE0OSwgMTI4MDY0LCA2OTc2NSwgOTI3NzUsIAorICAgIDI1MiwgOTgzMTQyLCA0MTMwMiwgMTAwMzcxLCA4MzUwNCwgMTE4ODM5LCA2OTc2MywgNjg3NjIsIDExNzI5LCA4NzE5LCAKKyAgICA5MDYwLCAxMjUwNzcsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDEyOTQxMCwgMTE4NzkyLCAxMTczNCwgOTMwMTEsIDExNzMwLCAKKyAgICAxMTM3NDEsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCA5ODMxMzksIDEyOTQxMiwgCisgICAgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDk4Mzc1OCwgNDM0ODksIDQyODIsIDgyOTgsIDAsIDAsIDcwMzI4LCAKKyAgICAxMTM2OTEsIDcwMzI0LCA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgNjU1ODcsIDcwNDQyLCA2NTY3MCwgCisgICAgOTgzMTgwLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDEwMTEwMiwgNzAzMjYsIDAsIDcxNDYwLCAxMjA3NjQsIAorICAgIDcwMzIyLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MTIsIDM2NDcsIDgzNDM3LCAyNjAyLCAKKyAgICAxMjgzNDEsIDEwMDcxNywgMTI1MDQzLCA0MTEzNSwgODM0OTgsIDEyMDgxNSwgMTIxMzI1LCA2NDYzMSwgMTcyLCA0OTcxLCAKKyAgICA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCA3NTA1NCwgCisgICAgMTIxNDA1LCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCA5ODM5NzEsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAKICAgICAxMjE0NDEsIDkyNTI4LCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIDgzMzMwLCAxMTM3MDcsIDE5NDcxMiwgMTA5MDAsIAogICAgIDQxNTMxLCAxMjYzLCAzNzIwLCAxMjA0OCwgNzQwNzUsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgCi0gICAgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgODMwMjIsIDg1MjUsIDEyNzM0NywgMzUyNCwgOTE3NTY1LCA4ODMxLCAxMjczNDksIAotICAgIDkyNTY0LCAzMDc1LCA2Nzg2NywgOTQwNTMsIDAsIDY2MzYyLCAwLCA2NDM1MywgNzA0NDAsIDAsIDU4NDUsIDEyMTMxMCwgMCwgCi0gICAgMTIxMTg1LCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDk4MzY5MywgNDMyODMsIDU1NTEsIDAsIDEyMDczNSwgOTgzMjAxLCAKLSAgICA2MzQwLCAxMTg4NTUsIDEyMTAyNywgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgCi0gICAgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIDczNzc0LCAxMDkxMywgODMxMTYsIDk4MzA4NiwgODY2NiwgCi0gICAgNjc1LCA0MjQ5MywgMTIxMjk3LCA0MzU3MSwgMCwgNjIxOSwgMTI4NTg0LCA5OTgwLCA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCAKLSAgICA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgOTgzMjQzLCAxMjcxMSwgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgCi0gICAgNDI4NTcsIDgyNjIsIDkzMDM2LCAwLCA3NDQ3NiwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgOTgzMDg4LCAKLSAgICAxMjgxMzcsIDQzNzQ0LCAwLCAwLCA3Mzg0NiwgMjkzNCwgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIAotICAgIDk4MzEyNiwgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIAotICAgIDExOTMyLCA3MzcyOCwgMzIxNCwgMTEyMTIsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgCi0gICAgNzg3MjcsIDY1NjY3LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgCi0gICAgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDEyOTA0MywgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIAotICAgIDAsIDAsIDgzMTc4LCAxMjA3MzcsIDEyMDk1MywgMTk0NzczLCA5ODMzMjIsIDM3OCwgMjYxMCwgOTgzMzI4LCA2NTA3OSwgCi0gICAgOTgzMzI3LCA2NTY5NSwgMTIxMjIwLCAzNywgNzA2OCwgMCwgMTIwNDgwLCA2ODIzNiwgMzIwOSwgMTIwNDc3LCAxMjA4MzUsIAotICAgIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA3MTQ4NiwgOTIyMjUsIDk4Mzk1MywgOTgzMzQwLCAwLCA0Mzg0MCwgMCwgMCwgCi0gICAgNTIzMywgOTgzMzM3LCA2NDc5MiwgNzEyMzMsIDEyODIyMywgMTI2NjMzLCAxMjg5MTksIDcwNjAsIDk4NDcsIDEyMDE0NCwgCi0gICAgMTY4NSwgNTk1LCA4MzE5NywgNzA0MjgsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAwLCAKLSAgICA2NTQxLCA0MzgzNywgNzE0NjUsIDEyMTAzMCwgMzI0MywgOTAxNCwgNTYwNiwgMTI1MDMyLCA1MzgsIDY0NjIwLCA1NjAyLCAKLSAgICA4NDY3LCA3NDM5MSwgNjU0NywgNzE0NjYsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgNjUyMTEsIDg0OTUsIDkyMzExLCAKLSAgICAxMjc0ODEsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgCi0gICAgMTIwOTEzLCA3MDY1LCA3NDE1NSwgNDM0NiwgMTEzNjkwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCA4OTgyLCAwLCAKLSAgICAxMjE0NzEsIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjExODgsIAotICAgIDE1NDgsIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgOTgzMzcyLCAxMTc4NywgCi0gICAgMzc0NSwgOTE3ODY4LCAxMTk4ODUsIDQyODg4LCA2NTcxMiwgMTI3OTEzLCAzODY5LCAxMTkzNywgNTcyNSwgMTI3NTM5LCAKLSAgICAxNzgzLCA3NDE2LCA1NzI4LCAwLCAxMjg0NTcsIDExOTU1NCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAxMjc5NjUsIDU3MjcsIAotICAgIDc4NTIxLCAxMjExMjEsIDAsIDc2NCwgMCwgMTIxMDExLCA0MzUzMSwgMTEzNjcwLCA5MDMzLCAxMjcxODIsIDQyNTMyLCAKLSAgICA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAxMTQyMywgNzQ4NTIsIDExOTg2MSwgNjgzMDMsIDQzNDY1LCAwLCA3NDc2NywgNjU1OSwgCi0gICAgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgMTIwNjQ4LCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgMTI4NzExLCA0MzM3NywgCi0gICAgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgNzczOSwgNzQ1NDMsIAotICAgIDkxNzc2NSwgNjczOTMsIDAsIDYxMzIsIDAsIDYzNzY1LCAxMjgzOTYsIDcwMDU4LCA0MTE0NCwgNzE4OTksIDkyNDM4LCAKLSAgICA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgMTI4Mzk0LCAxOTQ3NzYsIDg4MjAsIDM5NDcsIDAsIDY1Mjk5LCAKLSAgICAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDEyNTAwMiwgMTk0OTMyLCAxMTM2OTEsIDc2ODgsIDkxNzc4NiwgCi0gICAgNzY4NiwgODI4OCwgMTE4MTUsIDk4MzE4OCwgMTIxNDExLCA5ODMzODQsIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgCi0gICAgNDIyODEsIDc4NTQ0LCA3NDAyNCwgMTIyOTMsIDk4MzY4MCwgNjQzNTcsIDExNzk0LCA0MjA4MiwgMTI4MTI1LCAxNzM3LCAKLSAgICA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgODMyNjQsIDkzMzUsIDEyODUwLCAxMTkxNzMsIDY1NTMsIDcwNTUsIDY4MDQxLCAKLSAgICA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAxMTYwLCA0MjA4NCwgOTM5NjMsIAotICAgIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDEyOTA3MCwgOTgzODY1LCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgCi0gICAgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgNzAxOTcsIDY4NDYxLCA2NTIzNCwgNjgzNDEsIDEzMDc2LCAzMTM1LCAKLSAgICA5ODMyODksIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDc0NjM1LCAKLSAgICAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDEyMTI1NywgODMyNjgsIDY1MjM2LCA5MTc4NzgsIDYxNjMsIAotICAgIDk4MzU1OCwgMTEzNzI4LCAxMjczMTQsIDEyODEzOCwgOTgzMjM2LCA4NjAzLCAxMjc5NTksIDExOTg2NiwgMzMwNiwgCi0gICAgMTA4NzYsIDQzMzkyLCA4MzE4NywgMTI3OTMxLCA1NzUxLCAxMjc1MTcsIDYyMjIsIDAsIDEyNzQ2NiwgMTIwODYsIDc0MDMsIAotICAgIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMTE5OTAzLCAwLCAyNTcwLCAKLSAgICA3MDIxLCA3NDkwMiwgMTk0NzQyLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgOTI3NTAsIDAsIDk4MzIxMSwgNTAwMiwgCi0gICAgOTgzNTYzLCA0MTI4NiwgNjk5NDYsIDc0NDY1LCA3MTA3NCwgNDM1ODUsIDExMzcyMCwgNjU1MSwgOTgzMzc1LCAxMjgyMjksIAotICAgIDk4MzI3NCwgNDEyODksIDEyNTEzMCwgNzEwODAsIDEyNzk1OCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODM1MCwgCi0gICAgMTI4NjYxLCAxOTQ4OTAsIDk4MzM3NywgNDEyNzksIDAsIDAsIDk0MTA4LCAxMTA4MSwgNDM2MTUsIDAsIDAsIDEyNzg4OCwgCi0gICAgOTgzNjEyLCAxMjcyNywgNDM4OTUsIDAsIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCAKLSAgICA3ODMxLCA5ODM4MjksIDE5NDU3MSwgMCwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIAotICAgIDI1OTYsIDQzNTg0LCAxMjA5ODMsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgCi0gICAgNDE1NzQsIDc4MzM3LCA3MDQ5OCwgNDI5MDAsIDYzNzYsIDAsIDAsIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDczODc5LCAKLSAgICAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgNjUyOSwgNzA2MywgOTgzMTc5LCAzNzUxLCA5MTIwLCAKLSAgICA5ODM0ODcsIDY4MDM4LCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAxMjQzMCwgODEzNywgOTQwOTgsIAotICAgIDY3NzUyLCA3MDg1MCwgMTE5MDU3LCAyNDUsIDEyMTA2NiwgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgNjEzNiwgCi0gICAgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCA5ODA0LCAxMTg5NjMsIDQzMiwgMzU5NSwgMTI3MDE1LCAKLSAgICA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCA5ODMxMzYsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAxMjgxODQsIDAsIDAsIAotICAgIDc3ODk0LCA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIAotICAgIDcxMTIzLCA2NDY0MCwgNjk5OTksIDk0MTA5LCAxMjA4NzcsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgCi0gICAgNzQ2MjIsIDQzNDkyLCAyNTY2LCAxMTk3MSwgOTgzNzM3LCAxMjA4ODIsIDEwNjUsIDAsIDEyNzAwNSwgNDM0MDAsIDI1NzYsIAotICAgIDY2Njk2LCA2NjgxOSwgODMzMzMsIDQzNjA0LCAxMjc4OTEsIDAsIDMyMDEsIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCAKLSAgICA0MzIxNSwgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3MDMxMCwgNDMzOTgsIDI1ODAsIDE5NTAyNSwgCi0gICAgNDEzNDEsIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMCwgNTI5MywgNzAwMjAsIDEyNzg3MCwgMzczMywgMTEzNDYsIDAsIAotICAgIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDEyODU4MCwgMCwgOTE3OTE1LCAxMjc5NjEsIAotICAgIDEyNzAyNSwgMTI4MzM0LCA3NDgyMSwgNzExMDQsIDY2Mjk1LCA2ODAzNywgMCwgMTIxMTE2LCAxMzA5MCwgNjY2NDMsIDAsIAotICAgIDEyNzAsIDExMzIsIDQyMzYwLCAwLCA3NDA5NiwgNjY2NTUsIDQyNTY5LCAxMjc4MjQsIDY2ODk4LCA2NDc2MSwgMCwgCi0gICAgNDEwMjEsIDg1MTAsIDQyNDMyLCAxMTk4OTgsIDExOTMxNywgMTk0NzgyLCAxOTQ2NDEsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIAotICAgIDk5MTUsIDk4MzA4MywgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIAotICAgIDQyMzE5LCAxMzA4MiwgNzgxMTQsIDcwNjcsIDY4MjIxLCAxMjc4ODEsIDEyNzM4MywgMTI3MTcxLCAwLCAxMjA3NDUsIAotICAgIDc0MjA5LCA5MDI5LCA0MzU0MywgNzA4MzYsIDIzNTMsIDYzMDgsIDEyOTE1NCwgNzQ3OTIsIDI2MTEsIDExOTE4NiwgCi0gICAgNjY4ODEsIDEyNzI0MSwgNjUwNjMsIDQzNjY0LCA5MjMxOSwgNjY2MjcsIDkyOTEyLCA0NDg0LCA4NTA5LCAxMTg5NzYsIAotICAgIDExMDY2LCA2NTIzMywgMTI3MTQ2LCA0MTIyNCwgNDEwMTcsIDEyODE0OSwgMzc0NywgMTA1MjIsIDAsIDE5NDg3NiwgMTY5MSwgCi0gICAgNDEyMjYsIDc0OTYyLCAxMjEwNywgNzEwMCwgMTA5MDUsIDY1MDEwLCAxMjEyOTksIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIAotICAgIDk4MzM0MywgOTMwNTgsIDc0NzgxLCAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDEyMDk0OSwgCi0gICAgMTIxMDMyLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgMTE4OTUwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgCi0gICAgMzU2MiwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCAKLSAgICA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgMCwgMCwgNjgzNjUsIDEyODI1OCwgMTk1MDI3LCAwLCAwLCAKLSAgICAxMzEyMiwgMCwgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgCi0gICAgNDE1NzgsIDk4MzEwNCwgNDE1NzcsIDAsIDEwMDAyLCAxMjEzNjQsIDY1MzMsIDczODAyLCA0MTU3MCwgOTE3OTE5LCA2ODMsIAotICAgIDM5NiwgNDE1ODAsIDY4MTQ2LCA5ODMwNjcsIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIAotICAgIDc4MTU0LCA5ODMzOTcsIDQ3NDMsIDY5OTg3LCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgCi0gICAgMTI4NjY1LCAzNzM5LCA2MjYzLCA3MTM0OSwgMTI4ODExLCAzOTY0LCA2NTkyLCAxMjE0MjQsIDY4Mjg4LCA2NjA0MCwgCisgICAgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgODMwMjIsIDg1MjUsIDEyNzM0NywgMzUyNCwgMTI4NzE3LCA4ODMxLCAxMjczNDksIAorICAgIDkyNTY0LCAzMDc1LCA2Nzg2NywgOTQwNTMsIDAsIDY2MzYyLCAwLCA2NDM1MywgNzA0NDAsIDk4Mzk3MCwgNTg0NSwgCisgICAgMTIxMzEwLCAxMjc5MzcsIDEyMTE4NSwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA3NDg1OCwgNDMyODMsIDU1NTEsIDAsIAorICAgIDEyMDczNSwgMTI5NDIzLCA2MzQwLCAxMTg4NTUsIDEwMDYwMiwgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAKKyAgICAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMDA4NTIsIDczNzc0LCAxMDkxMywgCisgICAgODMxMTYsIDk4MzA4NiwgODY2NiwgNjc1LCA0MjQ5MywgMTIxMjk3LCA0MzU3MSwgMCwgNjIxOSwgMTI4NTg0LCA5OTgwLCAKKyAgICA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgOTgzMjQzLCAxMjcxMSwgCisgICAgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgNDI4NTcsIDgyNjIsIDkzMDM2LCA5ODM2NzYsIDc0NDc2LCAwLCA0MjM0NywgCisgICAgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCAxMjg3NjgsIDEyODEzNywgNDM3NDQsIDEwMDYxMCwgMCwgNzM4NDYsIDI5MzQsIAorICAgIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCA5ODMxMTAsIDc0NDYxLCAzMjE4LCAxMDEwMDIsIDc0MjkwLCAKKyAgICAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIDExMjEyLCAxMjA0NjgsIAorICAgIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIDc4NzI3LCA2NTY2NywgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgCisgICAgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAxMjkwNDMsIAorICAgIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCA5ODM4NTMsIDk4Mzg5MywgODMxNzgsIDEwMDcyOCwgMTIwOTUzLCAKKyAgICAxOTQ3NzMsIDE5NDYwMSwgMzc4LCAyNjEwLCA5ODMzMjgsIDY1MDc5LCAxOTQ4NzksIDY1Njk1LCAxMjEyMjAsIDM3LCAKKyAgICA3MDY4LCAwLCAxMjA0ODAsIDY4MjM2LCAzMjA5LCAxMjA0NzcsIDEyMDgzNSwgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMDA2MjEsIAorICAgIDcxNDg2LCA5MjIyNSwgMTI4NDk0LCA5ODMzNDAsIDEwMDkwNSwgNDM4NDAsIDAsIDEwMTA5NiwgNTIzMywgMTAwNjI0LCAKKyAgICA2NDc5MiwgNzEyMzMsIDEyODIyMywgMTAwNjI2LCAxMjg5MTksIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAKKyAgICA4MzE5NywgNzA0MjgsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCA5Mjk0OCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgCisgICAgNDM4MzcsIDcxNDY1LCAxMjEwMzAsIDMyNDMsIDkwMTQsIDU2MDYsIDExOTU4NSwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgCisgICAgNzQzOTEsIDY1NDcsIDcxNDY2LCA4MjAzLCA2NjQyMCwgNjgyNDEsIDg0NTgsIDY1MjExLCA4NDk1LCA5MjMxMSwgMTI3NDgxLCAKKyAgICA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIDEyMDkxMywgCisgICAgNzA2NSwgNzQxNTUsIDQzNDYsIDEwMDU3MCwgNzM3OTgsIDUwNCwgMTI1MTE1LCA5MjQxNCwgODk4MiwgMCwgMTIxNDcxLCAKKyAgICAxMTkxNzAsIDc4MiwgMTI5MDI4LCAxMDg4MywgMTI4NDQ2LCAxOTQ4NTIsIDczMiwgMzczNywgMTIxMTg4LCAxNTQ4LCAKKyAgICA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDk4MzM3MiwgMTE3ODcsIDM3NDUsIAorICAgIDkxNzg2OCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEwMDYwNiwgMzg2OSwgMTE5MzcsIDU3MjUsIDEwMDYwOCwgMTc4MywgCisgICAgNzQxNiwgNTcyOCwgMTI4NTY5LCAxMjg0NTcsIDExOTU1NCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAxMjc5NjUsIDU3MjcsIAorICAgIDc4NTIxLCAxMjExMjEsIDEyODQ4OCwgNzY0LCAwLCAxMjEwMTEsIDQzNTMxLCAxMTM2NzAsIDkwMzMsIDEyNzE4MiwgCisgICAgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCA3NDg1MiwgMTE5ODYxLCA2ODMwMywgNDM0NjUsIDE5NDgxOSwgCisgICAgNzI4NTQsIDY1NTksIDY0NTU3LCA3MTM0OCwgOTI2NDksIDY2NzYzLCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgCisgICAgMTI4NzExLCA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgCisgICAgNzczOSwgNzQ1NDMsIDkxNzc2NSwgNjczOTMsIDEwMDU4OCwgNjEzMiwgMCwgNjM3NjUsIDEwMDU5MCwgNzAwNTgsIDQxMTQ0LCAKKyAgICA3MTg5OSwgOTI0MzgsIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCA3MDY4MiwgMTAwNTYxLCA4ODIwLCAKKyAgICAzOTQ3LCAxMjI4OTgsIDY1Mjk5LCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDEwMDkzMSwgMTk0OTMyLCAKKyAgICA3ODM5MywgNzY4OCwgOTE3Nzg2LCA3Njg2LCA4Mjg4LCAxMTgxNSwgOTgzMTg4LCAxMDA5MzQsIDk4MzM4NCwgMTU0MywgCisgICAgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgNzg1NDQsIDc0MDI0LCAxMjI5MywgMTk0NTg5LCA2NDM1NywgMTE3OTQsIAorICAgIDQyMDgyLCA3MDc0NCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDgzMjY0LCA5MzM1LCAxMjg1MCwgMTE5MTczLCAKKyAgICAyMjcyLCA3MDU1LCA2ODA0MSwgODI3NywgMCwgNjc3NTEsIDU0NzUsIDc0Nzk1LCA2NzgwLCA2NTA2NywgMCwgMTMyNywgCisgICAgMTE2MCwgNDIwODQsIDkzOTYzLCA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDEwMDYxNywgNjgxNzYsIAorICAgIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIAorICAgIDY4MzQxLCAxMzA3NiwgMzEzNSwgOTgzMjg5LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAKKyAgICAxMTk1ODAsIDEwMTgzLCA3NDYzNSwgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAxMjEyNTcsIDgzMjY4LCAKKyAgICA2NTIzNiwgMTIwMjU2LCA2MTYzLCAxMjkyOTcsIDExMzcyOCwgMTI3MzE0LCA3MzgyMiwgOTgzMjM2LCA4NjAzLCAxMjc5NTksIAorICAgIDExOTg2NiwgMzMwNiwgMTA4NzYsIDQzMzkyLCA4MzE4NywgMTI3OTMxLCA1NzUxLCAxMjc1MTcsIDYyMjIsIDEwMDcxNiwgCisgICAgMTI3NDY2LCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCA5ODMzMDcsIAorICAgIDg4ODIsIDExOTkwMywgNzg1MTgsIDI1NzAsIDcwMjEsIDc0OTAyLCAxMjg4ODAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCAKKyAgICA2OTc0LCA5Mjc1MCwgMTI3Mzk2LCAxMDA5MjMsIDUwMDIsIDk4MzU2MywgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIAorICAgIDQzNTg1LCAxMDA5MjcsIDY1NTEsIDk4MzM3NSwgMTI4MjI5LCA5ODMwNDcsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAKKyAgICAxMDA1MjEsIDg5NzcsIDYwMiwgMTIwODE0LCAxMDA2MzAsIDEyODM1MCwgMTI4NjYxLCAxOTQ4OTAsIDk4MzM3NywgNDEyNzksIAorICAgIDAsIDAsIDk0MTA4LCAxMTA4MSwgNDM2MTUsIDAsIDEwMTAyMiwgMTI3ODg4LCAxOTQ5OTQsIDEyNzI3LCA0Mzg5NSwgMCwgCisgICAgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAxMjc1NTYsIDk2MzMsIDEwODg2LCA0MzU5MiwgNzgzMSwgNjY3NTEsIAorICAgIDE5NDU3MSwgMTIyODg1LCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgOTgzODk1LCAKKyAgICAyNTk2LCA0MzU4NCwgMTIwOTgzLCAxMzExMywgOTgzNzMxLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDQxMzYsIAorICAgIDY4NjczLCA0MTU3NCwgNzgzMzcsIDcwNDk4LCA0MjkwMCwgNjM3NiwgMCwgMTk0OTEyLCAxMjc4MjAsIDAsIDk4NTQsIAorICAgIDEwMTA4OCwgNjQ2OTYsIDczODc5LCAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgOTE3Nzk3LCAwLCAwLCA2NTI5LCAKKyAgICA3MDYzLCAxMTg5MTcsIDM3NTEsIDkxMjAsIDE5NDYyOCwgNjgwMzgsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIAorICAgIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgNjc3NTIsIDcwODUwLCAxMDA4MzIsIDI0NSwgMTAwODMxLCAxMTQ1NiwgCisgICAgNDEyMzMsIDcwNzAsIDcxMjY0LCA5NDA0NiwgNjEzNiwgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCAKKyAgICA5ODA0LCAxMDA2NDIsIDQzMiwgMzU5NSwgMTAwNzg0LCA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCAxMDA2NDYsIDEwMDY0MSwgCisgICAgMTAwNjQ5LCA5ODM5NDksIDEwMDY0OCwgMTI4MTg0LCAxMDA3ODYsIDE5NDU4NywgNzc4OTQsIDg3OTcsIDk4Mzk1NiwgCisgICAgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDEwMDg0NSwgNDIyODYsIDcxMTIzLCA2NDY0MCwgCisgICAgNjk5OTksIDk0MTA5LCAxMjA4NzcsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgNzQ2MjIsIDQzNDkyLCAKKyAgICAyNTY2LCAxMTk3MSwgOTgzNzM3LCAxMjA4ODIsIDEwNjUsIDEyMDc2OCwgMTI3MDA1LCA0MzQwMCwgMjU3NiwgNjY2OTYsIAorICAgIDY2ODE5LCA4MzMzMywgNDM2MDQsIDEyNzg5MSwgMCwgMzIwMSwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCAKKyAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDcwMzEwLCA0MzM5OCwgMjU4MCwgMTI4NDk3LCA0MTM0MSwgCisgICAgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAxOTUwOTIsIDUyOTMsIDcwMDIwLCAxMjc4NzAsIDM3MzMsIDExMzQ2LCAwLCAKKyAgICAxMjA1NCwgMTAwODI0LCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDEyODU4MCwgMTAwODIxLCAxMDA4MjgsIAorICAgIDEyNzk2MSwgMTI3MDI1LCAxMjgzMzQsIDc0ODIxLCA3MTEwNCwgNjYyOTUsIDY4MDM3LCA5ODM5MDUsIDEyMTExNiwgCisgICAgMTMwOTAsIDY2NjQzLCAxMjg4MjAsIDEyNzAsIDExMzIsIDQyMzYwLCAxOTQ5NjgsIDY2NzUyLCA2NjY1NSwgNDI1NjksIAorICAgIDEyMDU3MSwgNjY4OTgsIDY0NzYxLCAxMDA3NzYsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMTAwNzc4LCAxMTkzMTcsIDE5NDc4MiwgCisgICAgMTk0NjQxLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCA5OTE1LCA2OTc5OCwgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgCisgICAgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIDQyMzE5LCAxMzA4MiwgNzgxMTQsIDcwNjcsIDY4MjIxLCAxMjc4ODEsIAorICAgIDEyNzM4MywgMTI3MTcxLCAxMjEyMDcsIDEwMDc2NSwgNzQyMDksIDkwMjksIDQzNTQzLCA3MDgzNiwgMjM1MywgNjMwOCwgCisgICAgNzA2NjIsIDc0NzkyLCAyNjExLCAxMDA3NjgsIDY2ODgxLCAxMjcyNDEsIDY1MDYzLCA0MzY2NCwgOTIzMTksIDY2NjI3LCAKKyAgICA5MjkxMiwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgNjUyMzMsIDEyNzE0NiwgNDEyMjQsIDQxMDE3LCAxMjA1MTQsIAorICAgIDM3NDcsIDEwNTIyLCA5MTc4MTEsIDExOTk3MCwgMTY5MSwgNDEyMjYsIDc0OTYyLCAxMjEwNywgNzEwMCwgMTA5MDUsIAorICAgIDY1MDEwLCA3NDYwMiwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgOTgzMzQzLCA5MzA1OCwgNzQ3ODEsIDEzMTIxLCAKKyAgICAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMTIwOTQ5LCAxMjEwMzIsIDk4MzEzMiwgMTI3MTkzLCA2NTgxNiwgCisgICAgNjgxMTEsIDExODk1MCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIAorICAgIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIAorICAgIDAsIDk4MzE1MCwgNjgzNjUsIDEyODI1OCwgMTk1MDI2LCA5ODM0MDIsIDAsIDEzMTIyLCAxMjc1NDYsIDE5MSwgNzAwNjAsIAorICAgIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIDQxNTc4LCA5ODMxMDQsIDQxNTc3LCAKKyAgICA5ODMzNzEsIDEwMDAyLCAxMDA3NTQsIDY1MzMsIDczODAyLCA0MTU3MCwgMTAwNzU2LCA2ODMsIDM5NiwgNDE1ODAsIAorICAgIDY4MTQ2LCAxMjc4MTUsIDEyOTAxLCA0MzA1OCwgMTAwNzYwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgNzgxNTQsIAorICAgIDEyNzA4MiwgNDc0MywgNjk5ODcsIDEwMDc2MSwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMDA3NTEsIAorICAgIDEyODY2NSwgMzczOSwgNjI2MywgNzEzNDksIDEyODgxMSwgMzk2NCwgNjU5MiwgMTIwNzAxLCA2NTEwOCwgNjYwNDAsIAogICAgIDgyOTQ2LCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMTI4NDQzLCA0MjA3MCwgNjU2MywgNDMwNzUsIAotICAgIDkwMTgsIDk0MDA2LCA5ODMzOTgsIDEyMDY3LCA0MTMxMiwgOTI3NjMsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKKyAgICA5MDE4LCA5NDAwNiwgMTIxNDI0LCAxMjA2NywgNDEzMTIsIDkyNzYxLCA1NTQ3LCA4OTE2LCAxMjA4NjksIDEyODk1MCwgCiAgICAgODE3NSwgOTQwMzQsIDI4NCwgODEwOCwgOTM0LCAxMjgwMzksIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgCi0gICAgMTE4ODIyLCAxNzUwLCAxMjg2ODYsIDQzOTQsIDY4MzY4LCAxODA3LCA5ODM4ODgsIDkyMjk4LCAwLCA1ODg5LCAxMjg3OTUsIAotICAgIDcxODAsIDAsIDY3MTI3LCAwLCA2NzEyNiwgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCA3ODkxLCA0MjI0MywgNDIxNjAsIAotICAgIDI1ODMsIDQ1MTIsIDExOTM2MCwgNjUyMzAsIDEyODEwOSwgMCwgOTE3NjMwLCAzODU1LCAxOTQ4MTAsIDExNzY3LCAKLSAgICAxMjc5OTgsIDAsIDc0Mjk1LCAxOTQ2NTEsIDAsIDkyNDE2LCAzOTc1LCA2NzEyNSwgNzQwODcsIDc0OTg5LCAxMjY3MiwgCi0gICAgMzc5OCwgMjcwMywgMTk0NjA4LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCA5ODM3NTAsIDQxMDk1LCAzOTYyLCA2ODI0MiwgCi0gICAgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDc0NTM2LCAxMjcxODksIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMTIwMDMzLCAKLSAgICA5ODMwNTcsIDQxODAzLCAxMjc5OTksIDQxODQ2LCAxMjcyNDQsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIAotICAgIDMyMjQsIDExMzczNCwgOTI3NDEsIDY2MjgxLCA0MjUzMSwgNzQ1OTMsIDE1MTAsIDEyODM4NCwgODI1NiwgMCwgMTEzOTMsIAotICAgIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIDcyNDE2LCAxMjA4MTEsIDcyNDE1LCAxOTEwLCA4NjcxLCA3ODM3NCwgCi0gICAgNDI4MywgNjg4NDIsIDEyMDgyNCwgNjgzNjEsIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDYsIDEyODI0MSwgMCwgNzIzOTQsIAotICAgIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgCi0gICAgNzQ0NzUsIDk4MzQ0NCwgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgCi0gICAgNzM5NiwgNzExNiwgMCwgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDExOTE0NCwgMTI4NDQ3LCA5MjM0NywgMTk1MDY2LCAKLSAgICA0MTM1MCwgOTEyOSwgOTgzNDQ4LCAwLCAyMjk0LCA2NDUwMSwgNjgwMzQsIDgzMzI2LCAxMDQ4MSwgMCwgNzAwMjIsIDcxNzEsIAotICAgIDAsIDM0MCwgNzExMDUsIDkzOTcyLCA2NzM2MCwgMCwgOTIyMDAsIDEyODI0OSwgMTI0OTc5LCA2NzY0LCAxMjc0ODcsIAotICAgIDEyODM5MywgMCwgOTI1MDksIDEyODk2MiwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMTE5MDczLCAzMjEwLCAwLCAKLSAgICAwLCAxMTg3OTUsIDgyOTU4LCA5NDEwMSwgMTI3NDg0LCA5MTc2MTksIDExOTE0OSwgMCwgMTAwNDMsIDEyMTIxNSwgMTE4NiwgCisgICAgMTE4ODIyLCAxNzUwLCAxMjg2ODYsIDQzOTQsIDY4MzY4LCAxODA3LCA3ODU0NSwgOTIyOTgsIDEwMTA4MiwgNTg4OSwgCisgICAgMTI4Nzk1LCA3MTgwLCAxMDEwODMsIDY3MTI3LCAxMDEwOTEsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIAorICAgIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCA5ODM0NjcsIDkxNzYzMCwgCisgICAgMzg1NSwgMTk0ODEwLCAxMTc2NywgMTI3OTk4LCA5ODM1ODksIDc0Mjk1LCAxOTQ1NzcsIDEwMDc5NywgOTI0MTYsIDM5NzUsIAorICAgIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAzNzk4LCAyNzAzLCAxMDA3OTMsIDAsIDIxMDksIDk3NzQsIDEyNzUsIAorICAgIDE5NDk2NCwgOTgzNzUwLCA0MTA5NSwgMzk2MiwgNjgyNDIsIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCA3NDUzNiwgCisgICAgMTAwOTQ3LCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDEyMDAzMywgOTgzMDU3LCA0MTgwMywgMTI3OTk5LCA0MTg0NiwgMTI3MjQ0LCAKKyAgICA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAzMjI0LCAxMDA3NTUsIDkyNzQxLCA2NjI4MSwgNDI1MzEsIAorICAgIDc0NTkzLCAxNTEwLCAxMjgzODQsIDgyNTYsIDk4MzA0MywgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIAorICAgIDcyNDE2LCAxMjA4MTEsIDcyNDE1LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgNjg4NDIsIDcyNzg3LCA2ODM2MSwgCisgICAgNzgzMTgsIDI2NTQsIDc4OTMsIDEyOTE1MSwgMTI4MjQxLCAxMDA4MDIsIDcyMzk0LCA2NTEwNiwgNDI3NjEsIDEyODU3LCAKKyAgICA0NTgxLCA4NDExLCA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIDc0NDc1LCA5ODMxNDMsIDAsIDE3MzMsIAorICAgIDQzOTIsIDI1NjgsIDEwNzg2LCA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDEyODY0NCwgNzM5NiwgNzExNiwgMCwgNjk3ODgsIAorICAgIDEwMDc5MCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIDQxMzUwLCA5MTI5LCA5ODM0NDgsIAorICAgIDk4MzYxOSwgMjI5NCwgNjQ1MDEsIDY4MDM0LCA4MzMyNiwgMTA0ODEsIDAsIDcwMDIyLCA3MTcxLCAwLCAzNDAsIDcxMTA1LCAKKyAgICA5Mzk3MiwgNjczNjAsIDE5NDk0MiwgOTIyMDAsIDEyODI0OSwgMTI0OTc5LCA2NzY0LCAxMjA4MDQsIDEyODM5MywgMCwgCisgICAgOTI1MDksIDEyODk2MiwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMTE5MDczLCAzMjEwLCAwLCAxMDA2MzIsIAorICAgIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCA3MzkyNiwgMTAwNDMsIDEyMTIxNSwgMTE4NiwgCiAgICAgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI1MTIzLCAzNjc1LCA1MjA3LCA2NTA2MiwgNTIxMywgNzQ2MTYsIDI2MTcsIAotICAgIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIDEyMTIwOSwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgCi0gICAgMjU4NiwgNjQ4ODcsIDExOTgyNiwgNTIxNywgNzEzMzYsIDEyODY4NywgOTE3NjE0LCAxMjEwMzgsIDY0MjkzLCA2ODA5OCwgCi0gICAgMjYzNSwgOTI3NjAsIDgzMTM3LCA5ODM4NDYsIDAsIDkyNzQyLCA3ODM1LCA3MDA0MCwgMTIwNzA3LCAxOTQ5ODgsIDkyMjg1LCAKLSAgICA2NDU1OCwgMTI3MTIyLCAxMjE0MjUsIDY3MDgzLCA2NzA4NSwgNzAwOTksIDcxMTE4LCA1Nzg0LCA5ODMxMDIsIDE5NTA1MCwgCi0gICAgOTgzODEyLCA3MDAzMywgNDAxMSwgMTk0NTY1LCA2ODEwMSwgMTI0OTc4LCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDk4LCAKLSAgICA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIAotICAgIDEyOTA1NCwgMTI3MTAzLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDg2LCA3NTA0MCwgOTgzNDg0LCAKLSAgICA2NzQwMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCA5NjcxLCAxMTI1LCA0Mzk5LCA2ODc3NSwgNjYyNzQsIDk4MzQ5MCwgNzYzMSwgCi0gICAgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCA1NDkxLCAxMTg3OTcsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgCi0gICAgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMTI3MTIxLCA3MTIyLCA5ODMwOTAsIDQzOTAsIDQ1NCwgCi0gICAgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIAotICAgIDExOTE4NCwgMzc0NiwgMTEwMTYsIDY1NzUyLCA5Mjc1NywgMCwgNDM0MjMsIDEyODY4MywgMTE5ODksIDExODg4OSwgCi0gICAgMTI3NzkxLCAxMjc5OTUsIDc4Mjk2LCAwLCA4MjQ5LCAxMjgxNzIsIDExMTA5LCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAotICAgIDUxMywgMTI3MTE4LCA2NTg2LCA4NjU2LCAxMjkzMDEsIDY5NzkyLCA2NTAwOCwgMTk0NTk3LCA3MTExMSwgNzgzODMsIAotICAgIDE5NDc5NSwgMTI3NDc0LCA5MjUxNSwgNjg0NzUsIDkzOTczLCAxOTQ1ODQsIDYzNzk5LCA3ODYzNywgMTI2NDcsIDkxNzYwNiwgCi0gICAgMTI4MDQzLCA2OTg5MywgMTAzNiwgNjgwOTAsIDkyNDE5LCAxNzIzLCA2ODIxNSwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAKLSAgICAxMjA3MjIsIDEwNzA1LCA3Mzg3NiwgMTk1MDU0LCA3NDQ4NiwgOTgzNDY5LCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIAotICAgIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA0MzkzNiwgNDM5MzgsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgCi0gICAgNDI1NzQsIDEzMjg1LCA0Mzk2NywgMTE5MDcsIDQzOTI4LCA1NjkwLCA5MjI1NSwgNTExNiwgMCwgNDMxODEsIDEzMDk1LCAKLSAgICA3NzkyNSwgNDM5MjYsIDY0NDk4LCAwLCA5NTA2LCA2OTc4LCA3MDE3NiwgNzQ5MzEsIDAsIDExMzc0MywgNzgzNzksIAotICAgIDQzOTM0LCAxMjc4NDUsIDExMjIsIDMxNywgMCwgNzEwNTUsIDEyMDYyMSwgMCwgMTkyMCwgMCwgMTAxNzMsIDgyNywgMCwgMCwgCi0gICAgNzgzNzgsIDExOTYwMCwgNTIyMywgMTMwNCwgMCwgODM1MjYsIDUyMjYsIDEyNjAyLCA5NDA0NCwgNTg4MCwgOTMyOSwgCi0gICAgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCA2OTIyOSwgOTY3NCwgNTY5NSwgCi0gICAgNDE3MTEsIDY0NjI3LCAxOTkwOSwgNzEwNzcsIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCA2ODEzOCwgOTgzNDQzLCAKLSAgICA0MjgxNiwgOTQwMzYsIDY1MTQwLCA2ODAyOCwgODMwOTMsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIAotICAgIDgzMDk0LCA5ODM0NDcsIDY4ODI3LCA1Mjk2LCA5ODM0NDYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIDAsIDc0ODU4LCAKLSAgICA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCA5ODM2ODYsIDcwODcwLCAxMjEyMiwgCi0gICAgMTE5NjAyLCA0Mzk3NiwgMTk0OTM3LCAxNzg1LCA2OTkyNSwgNjg2MjIsIDY1MTUzLCA2ODgwOSwgNTEzOCwgOTgzNjM3LCAKLSAgICA3MTkyMiwgMTE4ODY5LCAwLCA0NTQwLCA0MTE4MSwgOTE3OTIwLCA2MjAwLCAwLCA1MTM0LCA2OTk4MCwgMzIyLCA0NjQzLCAKLSAgICA1MTMyLCAxMjExODQsIDYzODksIDEyMDk5OCwgNTE0MywgODMyMDUsIDg3OTAsIDEyMDkxMSwgMTIwMTIxLCAxMjg2OTUsIAotICAgIDcxMTY4LCA4ODY5LCA2OTkxNiwgOTMwNjksIDQyMDYwLCA3MTMyNiwgOTY0OCwgODMxMDksIDcxMTcwLCAxMDI3MCwgCi0gICAgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAxOTQ4MDAsIDEyODUzNCwgNzQxNzAsIDAsIDMyMzQsIDQzODM1LCAKLSAgICA5MTc4MTgsIDcwMTExLCA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgNjgyMzEsIDc0NDg5LCA5Njk1LCAKLSAgICA3MjQzOSwgNTIwMSwgNzUwNjEsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMCwgMTk0OTk5LCA2NTI2OCwgNzY2MSwgMCwgCisgICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAxOTQ3NzAsIDU1OTYsIDU1NDUsIAorICAgIDcyODgsIDI1ODYsIDY0ODg3LCAxMDA4OTYsIDUyMTcsIDcxMzM2LCAxMjg2ODcsIDEwMDg5OCwgMTIxMDM4LCA2NDI5MywgCisgICAgNjgwOTgsIDI2MzUsIDkyNzYwLCA4MzEzNywgOTgzODQ2LCAwLCA5Mjc0MiwgNzgzNSwgNzAwNDAsIDEyMDcwNywgMTk0OTUwLCAKKyAgICA5MjI4NSwgNjQ1NTgsIDEyNzEyMiwgMTIxNDI1LCA2NzA4MywgNjcwODUsIDcwMDk5LCA3MTExOCwgNTc4NCwgOTgzMTAyLCAKKyAgICAxMDA4NTQsIDk4MzgxMiwgNzAwMzMsIDQwMTEsIDE5NDU2NSwgNjgxMDEsIDEwMDg1OSwgNzg2NCwgNDI1NCwgNjUwOTUsIAorICAgIDEyMDAxNywgNTYwMCwgMzkwMywgMTAwODkyLCAxMDQ0NywgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgCisgICAgNDI1ODIsIDQzNjAwLCAxMjkwNTQsIDEwMDkxMywgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NiwgCisgICAgNzUwNDAsIDkxNzk3MiwgNjc0MDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgNjg3NzUsIDY2Mjc0LCAKKyAgICA5MjE2NSwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAxMjAzMzksIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIAorICAgIDc0MTg3LCA1NDkwLCA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgCisgICAgNDM5MCwgNDU0LCA0MTM5NywgOTgzMDU1LCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIAorICAgIDEyNTA2MiwgNjU5MDEsIDIzOTQsIDI1NzUsIDExOTE4NCwgMzc0NiwgMTEwMTYsIDY1NzUyLCA5Mjc1NywgMCwgNDM0MjMsIAorICAgIDEyODY4MywgMTE5ODksIDExODg4OSwgMTI3NzkxLCAxMjc5OTUsIDc4Mjk2LCA2ODIyNCwgODI0OSwgMjIzMiwgMTExMDksIAorICAgIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgNTEzLCAxMDA3MTQsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAKKyAgICAxOTQ1OTcsIDcxMTExLCA3ODM4MywgMTI3MjUyLCAxMjc0NzQsIDY2NzU1LCA2ODQ3NSwgOTM5NzMsIDcyODU5LCA2Mzc5OSwgCisgICAgNzg2MzcsIDEyNjQ3LCA5MTc2MDYsIDEyODA0MywgNjk4OTMsIDEwMzYsIDY4MDkwLCA5MjQxOSwgMTcyMywgNjgyMTUsIAorICAgIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgMTIwNzIyLCAxMDcwNSwgNzM4NzYsIDE5NTA1NCwgNzQ0ODYsIDk4MzQ2OSwgNzQwLCAKKyAgICAxMTkyMjIsIDEyMDMwNSwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNDM5MzYsIDQzOTM4LCA3ODEzOSwgCisgICAgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNDM5NjcsIDExOTA3LCA0MzkyOCwgNTY5MCwgCisgICAgOTIyNTUsIDUxMTYsIDEyODAxMywgNDMxODEsIDEzMDk1LCA3NzkyNSwgNDM5MjYsIDY0NDk4LCAwLCA5NTA2LCA2OTc4LCAKKyAgICA3MDE3NiwgNzQ5MzEsIDAsIDExMzc0MywgNzgzNzksIDQzOTM0LCAxMjc4NDUsIDExMjIsIDMxNywgMTk0ODcwLCA3MTA1NSwgCisgICAgMTIwNjIxLCAwLCAxOTIwLCAxMjkzMzksIDEwMTczLCA4MjcsIDEyNTIzNiwgMCwgNzgzNzgsIDExOTYwMCwgNTIyMywgCisgICAgMTMwNCwgMCwgODM1MjYsIDUyMjYsIDEyNjAyLCA5NDA0NCwgNTg4MCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIAorICAgIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgNzEwNzcsIAorICAgIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCA2ODEzOCwgOTgzNDQzLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA2ODAyOCwgCisgICAgODMwOTMsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIDgzMDk0LCA5ODM0NDcsIDY4ODI3LCA1Mjk2LCAKKyAgICA5ODM0NDYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIDAsIDcyODQyLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCAKKyAgICA2NTEyLCAwLCA3ODU2LCA4NjkwLCA5ODM2ODYsIDcwODcwLCAxMjEyMiwgMTE5NjAyLCA0Mzk3NiwgMTI1MTk0LCAxNzg1LCAKKyAgICA2OTkyNSwgNjg2MjIsIDY1MTUzLCA2ODgwOSwgNTEzOCwgMTI5NDIwLCA3MTkyMiwgMTE4ODY5LCAxMDA4ODMsIDQ1NDAsIAorICAgIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDgyOTQ5LCA1MTM0LCA2OTk4MCwgMzIyLCA0NjQzLCA1MTMyLCAxMjExODQsIDYzODksIAorICAgIDEyMDk5OCwgNTE0MywgODMyMDUsIDg3OTAsIDEyMDkxMSwgMTIwMTIxLCAxMjg2OTUsIDcxMTY4LCA4ODY5LCA2OTkxNiwgCisgICAgOTMwNjksIDQyMDYwLCA3MTMyNiwgOTY0OCwgODMxMDksIDcxMTcwLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgCisgICAgNDM1MjksIDY2NDc3LCAxOTQ4MDAsIDEyNTIzMSwgNzQxNzAsIDAsIDMyMzQsIDQzODM1LCAxMDA4ODYsIDcwMTExLCAKKyAgICA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgNjgyMzEsIDc0NDg5LCA5Njk1LCA3MjQzOSwgNTIwMSwgCisgICAgNzUwNjEsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMTI3ODY5LCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAxMjEzMDgsIAogICAgIDEyMDkwOSwgMTEwMjcsIDEyODU5NiwgMTAwNTksIDEwNTExLCA0MjA3NSwgOTc2NywgNzg5LCAxNzQ5LCA3ODg5MCwgCi0gICAgNjcxMTUsIDk4MzY3MCwgMzIwLCAwLCA4NjQ3LCA4MzA1NCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAKLSAgICAxMjczNTYsIDExODg5NCwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCA1NDE4LCAKKyAgICA2Njc2NiwgOTgzNjcwLCAzMjAsIDAsIDg2NDcsIDgzMDU0LCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIAorICAgIDEyNzM1NiwgMTE4ODk0LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMDA5OTYsIDg0ODUsIDQ2NzEsIDU0MTgsIAogICAgIDEyNzM1MCwgMzM1MSwgMTIwODkyLCAxMjczNTEsIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAKICAgICAxMjczNDQsIDk1NTQsIDY4MDUxLCA5NDA0OCwgNjY4OTYsIDY2NTMsIDgzMDQ0LCA4MzEwMiwgNjQ1MTAsIDYyMTMsIAotICAgIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCA5MTc4NzMsIDEyMDc1OSwgNzM3NDEsIDEyNjAzLCA3MTMxLCAxMTEwOCwgNDU2NiwgCi0gICAgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAxMjQ5MzgsIDExOTI1OSwgNDI1NzYsIDAsIDUyMDAsIDkyOTQ2LCAKLSAgICAxMjE0MzUsIDk4Mzg5NSwgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNjYyODIsIDM5NSwgNTQ4MiwgNTE5OCwgNDM0OSwgMTAzOTAsIAotICAgIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDEyODM4MywgNDMzMDcsIDcwMjk3LCAxMTg5NzMsIAotICAgIDcwNDY3LCAxMjEzNCwgMTIxMTY3LCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAxMjAxNCwgMTAzNzcsIDgwOTMsIAotICAgIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDEyNTA3NSwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgMTI3MzA5LCAKLSAgICA1NzM4LCAxMjAwODksIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgODMzNzgsIDY4MTEyLCA3ODcyLCA4NTgxLCAKLSAgICAwLCAxMjYwLCAzMTQ5LCA1MzU5LCAxMjAxMzQsIDc0OTU1LCA3OTE0LCA1MzU3LCA3MTE5MCwgNzQzMzksIDI2MjQsIDUzNjQsIAotICAgIDk4MzYwOCwgMTE0MzEsIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCA2NzEwNywgNzgyOTMsIDQyMjcxLCA3ODI4OSwgCi0gICAgNDI5MTcsIDY3MTExLCAxMjkxNzksIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4MjkxLCA3ODM4NCwgMTE4MzIsIAotICAgIDc4MzgyLCA3ODM4MSwgNzgzODAsIDY5ODYxLCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgCi0gICAgNzQ1ODEsIDc4MDg3LCAwLCA3MTIwNSwgNDE4ODksIDkyNDUzLCAxMjkxNDQsIDExNjEsIDQxODk1LCA3NDEwMywgOTcwMSwgCi0gICAgODYyMiwgMTI1MDI1LCAwLCA2ODc3MiwgMTIwNTg4LCA1MDEyLCA3MTQ1MywgNDEzNjIsIDY5ODYyLCA2ODUwNywgMTE5MjEsIAotICAgIDAsIDExNzY5LCA2ODc4MiwgNjg2MDksIDQxMzY0LCAxMjA5NDcsIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDkxNzkwMywgCi0gICAgNDEzNjYsIDAsIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIDgxOTksIDc4Mzg5LCAxMTk2MTgsIAotICAgIDY3NywgMTE5OTE2LCA5MTc4NzYsIDcxNDgyLCAxMjcxNjksIDY4NzQ3LCAwLCA2ODczOCwgMzM0OSwgNzQxMjUsIDcwMjIsIAotICAgIDg5MjcsIDQ3MzksIDkyNTk5LCA1ODAyLCAxOTQ4NzQsIDg2MTUsIDAsIDEyODA1OCwgNDkxLCA3NDQwMSwgMTAxOTAsIAotICAgIDY4NzU1LCA2NTgzNywgNjg4MDAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIAotICAgIDEwODUyLCAwLCA0MjY0OCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgCi0gICAgMTI4NjEwLCA2ODc1MywgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCAKLSAgICA3NDg0OSwgNzQ5NDcsIDcyNDI0LCA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIAotICAgIDg5MDUsIDQxMzYsIDQ4NzEsIDc4Mjg3LCAxMjA2NjMsIDk4MzMsIDAsIDExMzczMCwgMTEyOCwgNjU5MjAsIDkxNzg3OSwgCi0gICAgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgCi0gICAgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgNTE2NSwgNTEyNiwgNDEzODUsIDk4MzkzOCwgNDEzODksIAotICAgIDEyNzk2MywgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgMzUwNywgOTQwNiwgNzYyOSwgCi0gICAgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCA3MDgxMSwgMTA2MjcsIDQxMTMwLCAKLSAgICA3MTA3OSwgMzk5NiwgMCwgNzE0NDIsIDEyODkxMywgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCA0MzMyLCA2NDgyNSwgCi0gICAgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCAxMjcyMDYsIDEyMDg1LCA2NjkwMiwgNTc0LCAKLSAgICAxMjY3MDUsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY1OTMyLCA0MTMyMiwgNDIyMTEsIDU0NDIsIDQxOTAsIAotICAgIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA2ODgxNywgNzc4MzgsIDc3MDgsIDc0NzU5LCAyMjI4LCAKLSAgICA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAxMjAzNzgsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIDc3ODQzLCA3NzgzOSwgCi0gICAgMjA2MCwgMTIxMTkzLCA3MTExLCAxMTc4OCwgNjUzNzYsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDk4MzYyNSwgMjA1LCAKLSAgICA4MzA0MCwgMTAzNTEsIDY3MTUxLCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgCi0gICAgNzQ5NjYsIDU1MDMsIDgwMjEsIDEyODAzNSwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgCi0gICAgOTI2MzYsIDAsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCAKLSAgICA2OTc3OCwgMTExMzMsIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMTI5MDUyLCAyNjc1LCA1NTk1LCA3ODQxMSwgCi0gICAgNDM3NjIsIDQzNjcsIDEyNzkxMiwgOTE3NzgyLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgCi0gICAgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDc1MDY5LCA5ODMxMDgsIDk3MzEsIDY5NzMxLCA2NDYzMywgNzc4NTcsIDc3ODU0LCAKLSAgICA3MTIxNywgNzc4NTIsIDcxMjI3LCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgNjY5MDksIDEyODg3LCAKLSAgICAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIDc3ODY0LCA3Nzg2NSwgOTkyOSwgNTE5OSwgOTkzNiwgMTEyMCwgNDIzODcsIAotICAgIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCA1NTI1MiwgNzM5NzIsIDE0NDIsIDEyOTA4MCwgNTg5NCwgNzAwNjksIAotICAgIDEyODY3MiwgNDExNzEsIDkyNTExLCA3MDM1OCwgMTMyMywgMTMxNjIsIDEyMDU5OSwgMzMzNCwgMTI4NzA0LCA5MjcwOSwgCi0gICAgNzc4ODEsIDY2MDIyLCAwLCA2OTc3MCwgMTY1MSwgMTIwMzY0LCA4ODYxLCAwLCAwLCAxMTQyLCA5ODMxMTIsIDgyNzEsIDAsIAotICAgIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgNzg0MDYsIDQwMDIsIDQzNjI2LCAxMDQ0MiwgMTA2NzYsIDMzNDQsIDEyODkxMCwgCi0gICAgMTk0Nzg3LCAxMjkyMCwgMTk0NTYwLCA3MDQ5NywgMTk0Njg3LCA2NjY0MiwgMTI3NywgNjY4NzYsIDc4NzEsIDY3MTA2LCAKLSAgICA3MTQ4NywgNzg4NTMsIDEyOTA2OCwgNzg4NTQsIDEyMDM2MCwgOTgzNDkyLCAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIAotICAgIDQzODU2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgOTgzNjI3LCA3ODg1NiwgNzg0NDgsIDc3ODc5LCA0OTczLCA4Nzg0LCAKLSAgICA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCA3MTIyNSwgNDMxMTgsIDExOTg3NSwgNDIzNjQsIAotICAgIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgCi0gICAgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDcwMzY0LCA3MTIxLCA3NDE2NiwgMTI0OTczLCAxMjAzNTUsIDkyNTM3LCAxOTQ4NDYsIAotICAgIDExOTg3NywgMTk1MDM0LCA3MDM1NywgMTE5OTIyLCAwLCA2NzExOSwgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAKLSAgICAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgOTgzOTY1LCAKLSAgICA5ODM3NTgsIDExNjAzLCA5ODM5NTQsIDc1MDc0LCA2NTg5LCAxMjg1NjQsIDgyOTc1LCAxMjA5OTMsIDY3ODEyLCA5ODM3MDAsIAotICAgIDAsIDEyOTA4NywgNDI1NzIsIDEyODI2NCwgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTE4ODgyLCAxMTY1NCwgCi0gICAgMTIxMjg3LCA3NTUwLCAxMDY4NiwgNTkwMywgNjcwOTgsIDc4MDA5LCA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgCi0gICAgMzM2NiwgMTAzOTksIDkxNzkzOCwgNTU0MiwgMTEwMTMsIDEyNzkyNywgNzEwNjIsIDE5NDY3NywgNzE0NjEsIDY3MDkwLCAKLSAgICA2OTI1LCAwLCAwLCA5Mjg5MiwgNzE4NTYsIDExNTY4LCA5ODM2NzMsIDQzMzY3LCA2NDU3OSwgOTE3OTMwLCA3ODUyLCAKLSAgICAxMTEzOCwgMCwgNjc1NCwgNjMxMiwgNzc5NTYsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIDEyMjk2LCAKLSAgICA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMTI5MTQ2LCA5ODM2MDUsIAotICAgIDk1MzIsIDY2MzU1LCAxMTkyNjQsIDY4MDczLCAxMTM2OTUsIDY0MzQzLCAxOTUwMzIsIDkyNzQ0LCAxOTUwMzEsIDAsIAotICAgIDE5NDg0NywgMTk1MDU3LCAxMTQ0NSwgNjgyOTQsIDIxMTIsIDEyODc0MSwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCAKLSAgICA5NTA3LCAxMDIxMCwgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAKLSAgICAwLCAxMjAyNzYsIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIAotICAgIDc4OTQsIDQzOTEsIDY4MTM5LCAxMjEwNjQsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAKLSAgICA5MjQzMywgMzU1OCwgMTI5MTkwLCAzOTEzLCA3MDQyOSwgMTIxMzc2LCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgCi0gICAgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIDExNzkxLCA5ODMxMjIsIDkxNzU4NywgODIyMSwgNzgzMDcsIDQxODY0LCAwLCAwLCAKLSAgICA2NzA3NSwgNzEyMTksIDE2NywgOTgzOTA2LCA3ODMwMSwgOTgzNjUzLCA3NDIxMSwgNDE4OTcsIDY3MDcyLCAwLCA5MTc1ODMsIAotICAgIDEyNzE0MCwgNjcwNzYsIDI0OTMsIDAsIDExMzc3OCwgMTIxMjQ1LCA3ODEwNywgNjQzNTQsIDAsIDg3NzcsIDEyNzk0MCwgCi0gICAgNDA2LCA4ODg0LCAyMzg1LCA3ODIxMCwgOTI0NTAsIDkxNzU5MCwgOTE3NTczLCA0MzAzMCwgNDIwMjcsIDEyMTE0LCAwLCAKLSAgICAxMjg1OTcsIDY0OTM2LCAxOTQ2OTUsIDExOTI2NywgMTIwNjI5LCAxMDU2MSwgMTI4OTQwLCA4MzY1LCAxMjA1MzksIAotICAgIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAxMjg4OTYsIDgzMTc2LCA3ODM0LCA3NDE1OSwgMCwgCi0gICAgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTc3LCAxNjM5LCAxMjA4NDIsIDAsIDcwODAzLCA2MzI3LCA2NzI0LCAKLSAgICAxMjQ5NTMsIDY2MzU0LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDExMDg3LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCA5NjAwLCAKLSAgICAxMTAyMiwgMCwgMCwgMCwgOTgzNTk5LCAwLCA3Mzk1NCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIAotICAgIDEyODc4MSwgMTIzNDMsIDY1NywgNjcxMTAsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgCi0gICAgOTI4OTEsIDE5NDk0NSwgODMwNTYsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCA5MzA0NCwgCi0gICAgMTI5NDExLCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgMTA2ODcsIDAsIDQ4MjEsIDQ0NjYsIDAsIDgzMTgyLCA0ODE4LCAKLSAgICAxMjkwNTgsIDQxNDAzLCAxMTk5NzcsIDcyNDIyLCAxMjg0NTgsIDQxNDA2LCA0MzI3MywgNzQxNjAsIDY5ODA1LCA3MzkzOSwgCi0gICAgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIAotICAgIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgNzAwNzAsIDMzNzUsIDEyODQ0OCwgNTkwMCwgCi0gICAgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCA5ODM0ODEsIDAsIDY3MDc4LCAxMjg0NTEsIDIyODIsIDEyMTQyMiwgMTI3ODEwLCAKLSAgICAxMTQwMSwgNjcwNzksIDAsIDY4NDU5LCAxMjUwMjgsIDk4MzE0MSwgMCwgNzAxNTAsIDY1NDM4LCAwLCA3MjgwLCAxMjc4ODcsIAotICAgIDY4MDU1LCA3MDE0NiwgNDg2OCwgODI5NywgMTE5OTY2LCA3MDE0OCwgMTI1MDA4LCAxMjg3NDQsIDQzMTYxLCA3MDE0NCwgCi0gICAgOTIzNjAsIDAsIDUxODIsIDAsIDEyMDU0MiwgMCwgMCwgNDIyNiwgNzAxODYsIDEyMTM1LCA1NzMyLCA0NDY0LCAxOTUwODMsIAotICAgIDcxMzMwLCA5NzcsIDQ0NTgsIDQzODI3LCA5Mjk3MSwgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDAsIDEyMTIyOCwgMTM5NSwgCi0gICAgNjQyNzksIDAsIDkyMjQwLCAxMjExNzksIDc4NiwgMTI2OTk1LCA0MzE3NCwgNjQzNDAsIDgzMDc3LCAxOTQ3NjcsIDczOTcxLCAKLSAgICA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCA2NTAyNSwgMCwgMCwgMCwgOTM5NTYsIDk4MzkxNywgNjg0NDQsIDAsIAotICAgIDkyNDM3LCAxMjQ5MjgsIDkyNTQ5LCAxMDIwNCwgOTI2NTYsIDgzMDc4LCAxMTkyNzEsIDEyODQzMSwgMTM5OSwgMTIxNDYzLCAKLSAgICA2NTIxNywgMTIxNDY1LCA4ODUyLCAxMjA4MDgsIDI0MSwgMTIxNDY5LCA0OTA3LCAxMjg0MjcsIDk4MzYzOSwgNzkzMiwgCi0gICAgOTcyNywgMTI4NDYzLCA3NDI1NSwgODc0OCwgMCwgMTI4NDI4LCA5ODM2MzEsIDAsIDQyNzgwLCA1NTI2MywgMTEzNjc3LCAKLSAgICA5ODM1NjAsIDQyMTcsIDkzMDM0LCA4NjUwLCAxMjc5OTEsIDEyMDY3MywgMTI4MjE1LCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgCi0gICAgMzk2NSwgMTE5MTE5LCA2NzE5LCAxMjgwMDcsIDEzMzAwLCA3ODQzOSwgOTM5NzEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAKLSAgICA2NjI4OSwgMTIwOTAyLCA3MzgxNSwgNDQyMCwgOTgzMTIwLCA2NDEwLCA3NzYwLCAwLCA3MDQ2OCwgMTI4NzUyLCAxMjA2ODQsIAotICAgIDEyMTI0NiwgNzI5NCwgMTI4MjE4LCA0Mzg2OSwgMTIwODU5LCA5MDY2LCAxMjEzMjEsIDExOTkzLCA0MzE4OCwgMjYyNiwgCi0gICAgNzc2MiwgOTgzODY2LCAxMTg4MzEsIDkyODk5LCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCA3MDI5MCwgNzg1MTYsIAotICAgIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTIwNTM3LCAxNTQyLCA5MjMwMywgCi0gICAgMTI4ODE5LCAwLCAxMjczMjcsIDEyMTE5OSwgNzQzMTEsIDc4NDk3LCAwLCAxMDE4MSwgMTI0OTM3LCA0MzYyNCwgMTI5MDYwLCAKLSAgICA3Nzc5LCA5MTc1NTEsIDEwMTk1LCA5NDc5LCA2MDI5LCAxMjgzNzQsIDkyMjY4LCAyMjI0LCAwLCA2NTU3NywgODk5MywgCi0gICAgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDEyNzAzMCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCA3MDEwNiwgCi0gICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDcwMzg2LCAxMjc5MDMsIDk4MzMzOSwgOTgzMzM4LCAyNzM1LCAKLSAgICA0MjgzMSwgNzc5MzUsIDcwNDM5LCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAwLCA3MDQzMywgNzM5NDYsIDAsIDE5NDcwMywgMCwgCisgICAgMTI4ODUsIDEyNzM3NSwgMTE5MDQ1LCA2NDcyMCwgOTE3ODczLCAxMjA3NTksIDcwNzM3LCAxMjYwMywgNzEzMSwgMTExMDgsIAorICAgIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMTI0OTM4LCAxMTkyNTksIDQyNTc2LCAxMjUyMzcsIAorICAgIDUyMDAsIDkyOTQ2LCAxMjE0MzUsIDk4MzY4MywgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNjYyODIsIDM5NSwgNTQ4MiwgNTE5OCwgCisgICAgNDM0OSwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDEyODM4MywgNDMzMDcsIDcwMjk3LCAKKyAgICAxMTg5NzMsIDcwNDY3LCAxMjEzNCwgMTIxMTY3LCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAxMjAxNCwgMTAzNzcsIAorICAgIDgwOTMsIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDEyNTA3NSwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgCisgICAgMTIwOTMyLCA1NzM4LCAxMjAwODksIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgODMzNzgsIDY4MTEyLCA3ODcyLCAKKyAgICA4NTgxLCA5ODM3NzEsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgCisgICAgMjYyNCwgNTM2NCwgMTI4ODgxLCAxMTQzMSwgMTAwNjU5LCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgCisgICAgNDIyNzEsIDc4Mjg5LCA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIAorICAgIDc4Mzg0LCAxMTgzMiwgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIAorICAgIDMyMzIsIDczODI0LCA3NDU4MSwgNzgwODcsIDk4MzgxNywgNzEyMDUsIDQxODg5LCA5MjQ1MywgMTI5MTQ0LCAxMTYxLCAKKyAgICA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDEyNTAyNSwgMCwgNjg3NzIsIDEyMDU4OCwgNTAxMiwgNzE0NTMsIDQxMzYyLCAKKyAgICA2OTg2MiwgNjg1MDcsIDExOTIxLCAwLCAxMTc2OSwgNjg3ODIsIDY4NjA5LCA0MTM2NCwgMTIwOTQ3LCA3NDIyOCwgNDEzNTIsIAorICAgIDQxMzYxLCA5MTc5MDMsIDQxMzY2LCAxOTQ4MDksIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAorICAgIDgxOTksIDc4Mzg5LCAxMTk2MTgsIDY3NywgMTE5OTE2LCA5MTc4NzYsIDcxNDgyLCAxMjcxNjksIDY4NzQ3LCAwLCA2ODczOCwgCisgICAgMzM0OSwgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDkyNTk5LCA1ODAyLCAxMjAwNDcsIDg2MTUsIDAsIDEyODA1OCwgNDkxLCAKKyAgICA3NDQwMSwgMTAxOTAsIDY4NzU1LCA2NTgzNywgNjg4MDAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgCisgICAgNzU4NiwgNDIzMDUsIDEwODUyLCA5MTc1ODAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAKKyAgICAxMDQ2LCA3MTI0LCAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgCisgICAgNDE4NzgsIDc0ODQ5LCA3Mjc4OSwgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIAorICAgIDExOTA0OSwgNTE3NiwgODkwNSwgMjI2NywgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMTk0ODUwLCAxMTM3MzAsIAorICAgIDExMjgsIDY1OTIwLCA5MTc4NzksIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIAorICAgIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIAorICAgIDQxMzg1LCAxOTQ4NDQsIDQxMzg5LCAxMjc5NjMsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIDk0MDQsIAorICAgIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgNzA4MTEsIAorICAgIDEwNjI3LCA0MTEzMCwgNzEwNzksIDM5OTYsIDAsIDcxNDQyLCAxMDA4NjQsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCisgICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgMTI3MjA2LCAxMjA4NSwgCisgICAgNjY5MDIsIDU3NCwgMTI2NzA1LCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2NTkzMiwgNDEzMjIsIDQyMjExLCAKKyAgICA1NDQyLCA0MTkwLCA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNjg4MTcsIDc3ODM4LCA3NzA4LCAKKyAgICA3NDc1OSwgMjIyOCwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMTIwMzc4LCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCAKKyAgICA3Nzg0MywgNzc4MzksIDIwNjAsIDEyMTE5MywgNzExMSwgMTE3ODgsIDY1Mzc2LCA2ODEyOSwgMTA0MTUsIDcyNzQxLCAKKyAgICAxOTUwMjUsIDIwNSwgODMwNDAsIDEwMzUxLCA2NzE1MSwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgCisgICAgNDEzNTUsIDU1MDUsIDcwNzM2LCA1NTAzLCA4MDIxLCAxMjgwMzUsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgCisgICAgNTUwNywgMTIwNDQsIDkyMzY0LCAxMDA3NDIsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIAorICAgIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgMTExMzMsIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgNzQ1MTYsIAorICAgIDI2NzUsIDU1OTUsIDc4NDExLCA0Mzc2MiwgNDM2NywgODM1MTgsIDkxNzc4MiwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgCisgICAgNzQxNTAsIDcyOTEsIDU1OTAsIDQzNzYxLCAxMzA2NywgMTE4OTA5LCA3NTA2OSwgOTgzMTA4LCA5NzMxLCA2OTczMSwgCisgICAgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzEyMTcsIDc3ODUyLCA3MTIyNywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIAorICAgIDcxMzcsIDAsIDY2OTA5LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIAorICAgIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDcyODMyLCAxNDQyLCAKKyAgICAxMjkwODAsIDU4OTQsIDcwMDY5LCAxMjg2NzIsIDQxMTcxLCA5MjUxMSwgNzAzNTgsIDEzMjMsIDEzMTYyLCAxMjA1OTksIAorICAgIDMzMzQsIDEyODcwNCwgOTI3MDksIDc3ODgxLCA2NjAyMiwgNzA3MDUsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIAorICAgIDkxNzU4OCwgMTE0MiwgOTgzMTEyLCA4MjcxLCAwLCA5ODMwNTgsIDEyNjY0NSwgMTI5MDMsIDc4NDA2LCA0MDAyLCA0MzYyNiwgCisgICAgMTA0NDIsIDEwNjc2LCAzMzQ0LCAxMjg5MTAsIDE5NDc4NywgMTI5MjAsIDE5NDU2MCwgNzA0OTcsIDE5NDY4NywgNjY2NDIsIAorICAgIDEyNzcsIDY2ODc2LCA3ODcxLCA2NzEwNiwgNzE0ODcsIDc4ODUzLCAxMjkwNjgsIDc4ODU0LCAxMjAzNjAsIDk4MzQ5MiwgCisgICAgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCA0Mzg1NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDk4MzYyNywgNzg4NTYsIDc4NDQ4LCAKKyAgICA3Nzg3OSwgNDk3MywgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDY2NzQzLCA0MjQ0MCwgNzEyMjUsIAorICAgIDQzMTE4LCAxMTk4NzUsIDQyMzY0LCA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgCisgICAgOTI0MywgMjQ2NCwgNzQyNjMsIDYxMDgsIDMzNzIsIDEyMjg5MCwgNjI0NywgNDMxMTcsIDcwMzY0LCA3MTIxLCA3NDE2NiwgCisgICAgMTI0OTczLCAxMjAzNTUsIDkyNTM3LCAxOTQ4NDYsIDExOTg3NywgMTk1MDM0LCA3MDM1NywgMTE5OTIyLCAwLCA2NzExOSwgCisgICAgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgCisgICAgNDMzODAsIDk4MzYyNSwgOTgzMDkxLCAxMjkzNDIsIDEyODQ1MCwgMTE2MDMsIDEyOTM0NywgNzUwNzQsIDY1ODksIAorICAgIDEyNzM2MCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDEyNzE5MCwgMTk0NjgwLCAxMjkwODcsIDQyNTcyLCAxMjgyNjQsIAorICAgIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDExODg4MiwgMTE2NTQsIDEyMTI4NywgNzU1MCwgMTA2ODYsIDU5MDMsIAorICAgIDY3MDk4LCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCA5MTc5MzgsIDU1NDIsIAorICAgIDExMDEzLCAxMjc5MjcsIDcxMDYyLCAxMjUyMjQsIDcxNDYxLCA2NzA5MCwgNjkyNSwgOTgzMjc0LCAwLCA5Mjg5MiwgCisgICAgNzE4NTYsIDExNTY4LCA5ODMxMzEsIDQzMzY3LCA2NDU3OSwgOTE3OTMwLCA3ODUyLCAxMTEzOCwgMCwgNjc1NCwgNjMxMiwgCisgICAgNzc5NTYsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAKKyAgICAxMTA1MCwgMTA5ODQsIDkyMjA4LCA5ODMyMTYsIDkxNzgyMiwgOTIxODIsIDEyOTE0NiwgMTk0NjM2LCA5NTMyLCA2NjM1NSwgCisgICAgMTE5MjY0LCA2ODA3MywgMTEzNjk1LCA2NDM0MywgMTk1MDMyLCA5Mjc0NCwgMTI3MjQzLCAwLCAxOTQ4NDcsIDc4ODM4LCAKKyAgICAxMTQ0NSwgNjgyOTQsIDIxMTIsIDEyODc0MSwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgCisgICAgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzI4NTAsIDk2MjQsIDExNTQ1LCAwLCAxMjAyNzYsIAorICAgIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIAorICAgIDQzOTEsIDY4MTM5LCAxMjEwNjQsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCA5MjQzMywgCisgICAgMzU1OCwgMTI5MTkwLCAzOTEzLCA3MDQyOSwgMTIxMzc2LCA3ODIzNSwgNzA0NCwgMTI2NSwgMTk0NjYwLCA2MzA5LCA3MDQ1LCAKKyAgICA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgMTk0NTg0LCAzODgxLCA3ODMwNywgNDE4NjQsIDEyNzM5NSwgCisgICAgMTI1MjA4LCA2NzA3NSwgNzEyMTksIDE2NywgMTIxMTAxLCA3Mjc1NSwgOTgzNjUzLCA3NDIxMSwgNDE4OTcsIDY3MDcyLCAwLCAKKyAgICA5MTc1ODMsIDY2NzQ1LCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjA1MzAsIDc4MTA3LCA2NDM1NCwgOTE3NTkzLCAKKyAgICA4Nzc3LCAxMjc5NDAsIDQwNiwgODg4NCwgMjM4NSwgNzgyMTAsIDkyNDUwLCA5MTc1OTAsIDkxNzU3MywgNDMwMzAsIAorICAgIDQyMDI3LCAxMjExNCwgMCwgMTI4NTk3LCA2NDkzNiwgMTAwNzYzLCAxMTkyNjcsIDM0MjEsIDEwNTYxLCAxMjg5NDAsIAorICAgIDgzNjUsIDc0Mjk0LCA5ODM3NzQsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMTI4ODk2LCA4MzE3NiwgNzgzNCwgCisgICAgNzQxNTksIDAsIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU3NywgMTYzOSwgMTIwODQyLCA5ODM1ODYsIDcwODAzLCAKKyAgICA2MzI3LCA2NzI0LCA3MTI2OSwgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIAorICAgIDk2MDAsIDExMDIyLCAxMjg0MjcsIDEyOTM0NCwgMTI4MzU0LCA5ODM1OTksIDk4MzIwOSwgNjY3NzEsIDc1NDgsIDY0Nzk0LCAKKyAgICA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAxMjg3ODEsIDEyMzQzLCA2NTcsIDY3MTEwLCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgCisgICAgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDkyODkxLCAxMjczNzIsIDgzMDU2LCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIAorICAgIDEyNzUyMCwgMCwgOTMwNDQsIDEyODQzMCwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIDEwNjg3LCAxMjkzMTksIDQ4MjEsIAorICAgIDQ0NjYsIDAsIDgzMTgyLCA0ODE4LCAxMjUyNTcsIDQxNDAzLCAxMTk5NzcsIDcyNDIyLCAxMjg0NTgsIDQxNDA2LCA0MzI3MywgCisgICAgNzQxNjAsIDY5ODA1LCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgMTE5OTgwLCA0NDUxLCAKKyAgICAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgNzAwNzAsIDMzNzUsIAorICAgIDEyODQ0OCwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAxMjgzMTMsIDAsIDY3MDc4LCAxMjg0NTEsIDIyODIsIAorICAgIDEyMTQyMiwgMTI3ODEwLCAxMTQwMSwgNjcwNzksIDAsIDY4NDU5LCAxMjUwMjgsIDk4MzE0MSwgMCwgNzAxNTAsIDY1NDM4LCAKKyAgICA5ODM3NjAsIDcyODAsIDEyNzg4NywgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIAorICAgIDEyODc0NCwgNDMxNjEsIDY2NzM5LCA5MjM2MCwgMTk1MDcwLCA1MTgyLCAxOTQ2OTIsIDEyMDU0MiwgNzI3NjQsIDEyODU4OCwgCisgICAgNDIyNiwgNzAxODYsIDEyMTM1LCA1NzMyLCA0NDY0LCAxOTUwODMsIDcxMzMwLCA5NzcsIDQ0NTgsIDQzODI3LCA5Mjk3MSwgCisgICAgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDEyMTQ2NiwgMTIxMjI4LCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAKKyAgICAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIAorICAgIDY1MDI1LCAwLCA5ODM0NjgsIDEyODMwMywgNzQxNTEsIDk4MzkxNywgNjg0NDQsIDAsIDkyNDM3LCAxMjQ5MjgsIDkyNTQ5LCAKKyAgICAxMDIwNCwgOTI2NTYsIDgzMDc4LCAxMTkyNzEsIDEyODQzMSwgMTM5OSwgMTIxNDYzLCA2NTIxNywgMTIxNDY1LCA4ODUyLCAKKyAgICAxMjA4MDgsIDI0MSwgMTIxNDY5LCA0OTA3LCAxMjgxNjEsIDkxNzkyNywgNzkzMiwgOTcyNywgMTI4NDYzLCA3NDI1NSwgCisgICAgODc0OCwgMCwgMTI4NDI4LCAxMjg2NDYsIDAsIDQyNzgwLCA1NTI2MywgMTEzNjc3LCAxMTk4NTYsIDQyMTcsIDkzMDM0LCAKKyAgICA4NjUwLCAxMjc5OTEsIDEyMDY3MywgNzI4NzgsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAzOTY1LCAxMTkxMTksIDY3MTksIAorICAgIDEyODAwNywgMTMzMDAsIDc4NDM5LCA3MjgzNiwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIDY2Mjg5LCAxMjA5MDIsIDczODE1LCAKKyAgICA0NDIwLCAxMjg1MzMsIDY0MTAsIDc3NjAsIDEwMDk5OSwgNzA0NjgsIDEyODc1MiwgMTIwNjg0LCAxMDA1MjgsIDcyOTQsIAorICAgIDEyODIxOCwgNDM4NjksIDY4MjA0LCA5MDY2LCAxMjEzMjEsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgOTgzODY2LCAKKyAgICAxMTg4MzEsIDkyODk5LCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCA3MDI5MCwgNzg1MTYsIDY5MTksIDg2MTksIAorICAgIDExOTY1NSwgMTAwMzgsIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTIwNTM3LCAxNTQyLCA5MjMwMywgMTI4ODE5LCAwLCAKKyAgICAxMjQ5NDAsIDEyMTE5OSwgNzQzMTEsIDc4NDk3LCAxMjE0MTIsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIDc3NzksIAorICAgIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDEwMTA3OSwgNjU1NzcsIDg5OTMsIAorICAgIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCA2NjgwNCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCA3MDEwNiwgNjAyNywgCisgICAgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDEyMDYyOSwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIDQyODMxLCAKKyAgICA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDEyOTM2NCwgNzA0MzMsIDczOTQ2LCAwLCAxOTQ3MDMsIDAsIAogICAgIDY4MTQwLCA5ODM5MjgsIDk1NzYsIDcwMjg4LCAzMzQ3LCA0MTYwLCA1MTU0LCA1NTI4OCwgMzc5NCwgNjY1NjQsIDg1MzAsIAogICAgIDEyNzA2MywgNzcwOSwgNDExMTIsIDExOTg2OCwgNjY1NjAsIDgzODEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgMTI4OTIxLCAKLSAgICA2NzU4LCA2NjAzMSwgMTYxNSwgNTg1NSwgODA5LCAxMjcxMTcsIDkyMjgzLCAxMjgzMTYsIDEyODAwNCwgNTc5OSwgCi0gICAgMTI4OTI5LCA3MDEwMCwgMTI4NjA3LCA3MjYwLCA5ODMzMjYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgCi0gICAgNjUyNTcsIDc0OTA5LCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCA4MzM2MCwgNjUzMiwgMCwgOTE3OTE4LCAxMjA4NjAsIAotICAgIDEyNzA2MCwgNjU4MjgsIDEyMDAwNiwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NjMsIDc4ODE3LCAxMjgwMjEsIAotICAgIDEyMDYwOSwgMCwgMzM3MCwgOTE3ODgxLCAxMTM2MSwgNTQ0MywgNzE0MzEsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgCi0gICAgMTIxNTAzLCAyMjk4LCAwLCAxMjUwMzksIDY1NDk1LCA2NDcwNiwgOTgzMzIwLCA0MzM0NCwgOTgzMzE4LCA3MTQ0LCA5NDY2LCAKLSAgICA3ODg2NiwgOTgyNCwgNjcxNDIsIDEyODk2MywgNjcxMzMsIDY3MTMwLCA5MTUsIDQzNDI1LCA2NzI5MiwgNDM4NjUsIAotICAgIDY4MjMyLCA5ODMxMTEsIDEyMDg4OCwgNDMyNjQsIDY3MTM2LCA2NzEzNywgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgCi0gICAgNjgxNjEsIDY0NTUwLCA1MTg2LCA3MzYwLCAxMjc4MzcsIDcwNDUxLCAxMjEwOCwgMTIwNjQ0LCA2NTEyNCwgNDMxMjcsIAotICAgIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyODE3OCwgMTIwOTE5LCAxMTQ4NSwgCi0gICAgNjEwMywgOTI0NjgsIDk4MzMwNywgMTE3MTgsIDk4MzMwNSwgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDEyMDYzNSwgMTI3MTU3LCAKLSAgICAxMjExMjgsIDU1MjQ1LCAxMjg3MDksIDE2MzAsIDgzMDI3LCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIAotICAgIDcwMzY5LCA5ODMwNzIsIDgzMDI5LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAKLSAgICAzMzc2LCA2ODA4MCwgMCwgMTI4MjUzLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMTk0NjA0LCAKLSAgICA1OTU3LCAxMTA1OTMsIDg5MjYsIDk4MzMwMSwgOTgzMzAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIAotICAgIDUzODYsIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgMTIwNzczLCA5NDA1NSwgOTgxMiwgMCwgCi0gICAgNDQ2MCwgNzg3OTEsIDEyNDk1NiwgNzEzMDcsIDEyODAzOCwgMCwgMTIxMTM1LCAxMjcxNzQsIDY0Mjc4LCA5MjM3MCwgCi0gICAgNDM0NjYsIDAsIDAsIDY0Mzg5LCAyOTUzLCA3MDEyMiwgMTgwMSwgMTI4MzUsIDc0ODQ3LCAxMjA4NjcsIDczODIzLCAKLSAgICA4MzExMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgCi0gICAgOTgzMjg3LCA3MTQ0NywgMTIxMDYsIDEyMDk3MiwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIAotICAgIDI5NTEsIDk1MjIsIDY3ODE2LCA3ODI2NiwgNjY2MDQsIDk4Mzg2MCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCAKLSAgICA3Nzg5OSwgNzc5MDAsIDg0NTEsIDgzMzI0LCAwLCAwLCA2NjQ1OCwgMTI4OTU3LCAxMjg4NzAsIDc0ODk2LCAwLCAyOTA4LCAKLSAgICAwLCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgMTIxMDAzLCAxMjQ5NTksIDQ0NDEsIDAsIDgyOTY4LCAKLSAgICA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMTI1MDMxLCA0MTEsIDk4MzI3NSwgOTE5OSwgOTgzMjczLCA0MDU2LCAxMTg5OTIsIAotICAgIDQxODkwLCAxMjg1OTIsIDI3MzAsIDQxNjA0LCAxMjgzNTUsIDU0MjgsIDE5NDc0MywgMzM2NCwgNDIyNjUsIDY0NDM3LCAKLSAgICAxMjc5MzUsIDExODgxNiwgNzE0NTgsIDk2ODQsIDIxNiwgNzEzNjcsIDE0MDEsIDEyODA1MywgNDQwMTIsIDkyNjI4LCAKLSAgICA3MTQ1NiwgOTI1ODUsIDkxNTgsIDY2ODc4LCAxMTEyNiwgNTc2OCwgMCwgOTgzNzU5LCAwLCA0ODQsIDE5NDczOSwgMCwgMCwgCi0gICAgNjU4OTUsIDEyNTA3NiwgMTIxMzgwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgMTI3NTQzLCAKLSAgICA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgCi0gICAgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMTI5MTA5LCAxMjkwNDAsIDAsIDM0MzAsIDAsIDQyOTA1LCAKLSAgICA3ODcxNywgNzQ5MjksIDk4MSwgMTI5MTg0LCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAxMDkwOCwgMTI2NTA2LCAKLSAgICA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIDEyODI1OSwgNjc0LCA2Mzk5MSwgCi0gICAgOTgzMjUxLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgODM2NCwgNTEyMywgMTE5NjI4LCAKLSAgICA1MjgxLCA1NDY5LCA1MTIxLCA3Nzk4OSwgMTE4OTkzLCAwLCA1MTMwLCA4MzE4MCwgMTI4MzU3LCA3Nzk5MCwgMCwgCi0gICAgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDExOTI2OCwgMCwgMTI4NDc1LCA5MjE4NywgMzQ2OCwgCi0gICAgNzAzMywgOTIzMCwgNTkzOSwgMTI4Mzk3LCAwLCA1ODAzLCA3MTg2NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgCi0gICAgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTE3OTM5LCAwLCAxMTczOSwgNzc5ODYsIDQxOTgxLCA5Mjc0MywgNTkzOCwgCi0gICAgMCwgNDM3NjYsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAxMjQ5OTQsIDEzMDU3LCAwLCAxMjY5NzYsIAotICAgIDEyOTA4MSwgMTAwMDksIDAsIDQxNzAzLCAxMjA5NTAsIDEyMTY1LCAxMjkxOTEsIDAsIDk4ODUsIDAsIDgwNzcsIDkyNjIwLCAKLSAgICAxMjc5MDgsIDEyMTA0NCwgMTk0OTk1LCAwLCA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCAKLSAgICA0OTg3LCA2NDUxOSwgMTIxMjY1LCAxMjUwNzgsIDAsIDE5NDgxMywgMTI4NTc0LCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgCi0gICAgMTI2NDkwLCAxOTk0NCwgNzQzNTYsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIAotICAgIDEyODg5OSwgMCwgMTIzMTMsIDExMTUxLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAKLSAgICAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgOTE3OTA0LCAKLSAgICA3ODg1MCwgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDEyMDg0MSwgMCwgMTI1MDYyLCA5ODM0NDEsIDEyMDg0MywgCi0gICAgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIAotICAgIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAwLCA0NDc3LCA3ODI2NywgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgCi0gICAgMTE5OTYxLCA2NjE5OCwgNDE4ODAsIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCAKLSAgICA2NjE4OSwgNzM3ODgsIDc3ODgsIDQ4NDcsIDk4MzQyOCwgMTI3NzU5LCAwLCAxMjg0MzMsIDIyMjEsIDE1ODEsIDY1MzUsIAorICAgIDY3NTgsIDY2MDMxLCAxNjE1LCA1ODU1LCA4MDksIDEyNzExNywgOTIyODMsIDcyODUzLCAxMjgwMDQsIDU3OTksIDEyODkyOSwgCisgICAgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIDY1MjU3LCAKKyAgICA3NDkwOSwgNjg2MTYsIDEyMDYwNywgOTM0NywgODMzNjAsIDY1MzIsIDAsIDE5NTA2MiwgMTIwODYwLCAxMjcwNjAsIAorICAgIDY1ODI4LCAxMjAwMDYsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjQyLCA3ODgxNywgMTI4MDIxLCAxMjA2MDksIDAsIAorICAgIDMzNzAsIDkxNzg4MSwgMTEzNjEsIDU0NDMsIDcxNDMxLCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIDEyMTUwMywgMjI5OCwgMCwgCisgICAgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMyMCwgNDMzNDQsIDk4MzMxOCwgNzE0NCwgOTQ2NiwgNzg4NjYsIDk4MjQsIAorICAgIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCA2ODIzMiwgOTgzMTExLCAKKyAgICAxMjA4ODgsIDQzMjY0LCA2NzEzNiwgNjcxMzcsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgCisgICAgNTE4NiwgNzM2MCwgMTI3ODM3LCA3MDQ1MSwgMTIxMDgsIDEyMDY0NCwgNjUxMjQsIDQzMTI3LCA2NjA0MywgMCwgNjMyNiwgCisgICAgNDMxMDcsIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAxMjAzMjgsIDEyMDkxOSwgMTE0ODUsIDYxMDMsIDkyNDY4LCAKKyAgICAxMjEwNzUsIDExNzE4LCA5ODMzMDUsIDEyODg5LCA5MjY1NywgMTI1MDM0LCAxMjA2MzUsIDEwMTA3MCwgMTIxMTI4LCAKKyAgICA1NTI0NSwgMTI4NzA5LCAxNjMwLCA4MzAyNywgNjU0ODMsIDEyMDYzNCwgMTI1NjUsIDAsIDY1NDc2LCA3MDM2OSwgCisgICAgOTgzMDcyLCA4MzAyOSwgOTI4MywgNzcwMCwgMTIxMTkyLCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgCisgICAgNjgwODAsIDAsIDEyODI1MywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDEwMTA3OCwgNTk1NywgCisgICAgMTEwNTkzLCA4OTI2LCAxOTUwNzIsIDk4MzMwMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAKKyAgICAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDEwMDY3OSwgMTI3ODI0LCAxMjE1MSwgMTIwNzczLCA5NDA1NSwgCisgICAgOTgxMiwgMCwgNDQ2MCwgNzg3OTEsIDEyNDk1NiwgNzEzMDcsIDEyODAzOCwgMCwgMTIxMTM1LCAxMjcxNzQsIDY0Mjc4LCAKKyAgICA5MjM3MCwgNDM0NjYsIDAsIDY2NzYwLCA2NDM4OSwgMjk1MywgNzAxMjIsIDE4MDEsIDEyODM1LCA3NDg0NywgMTIwODY3LCAKKyAgICA3MzgyMywgODMxMTAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgNjYyOTksIAorICAgIDE5NDc3NSwgNzE0NDcsIDEyMTA2LCAxMjA5NzIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAKKyAgICAyOTUxLCA5NTIyLCA2NzgxNiwgNzgyNjYsIDY2NjA0LCAxMDEwNTksIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgCisgICAgNzc4OTksIDc3OTAwLCA4NDUxLCA4MzMyNCwgMCwgMCwgNjY0NTgsIDEyODk1NywgMTI3MzAxLCA3NDg5NiwgMCwgMjkwOCwgCisgICAgOTgzNTU4LCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgMTIxMDAzLCAxMjQ5NTksIDQ0NDEsIDEyNDkyOSwgCisgICAgODI5NjgsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAxMjEwNjYsIDQxMSwgMTI3NTI1LCA5MTk5LCA5ODMyNzMsIDQwNTYsIAorICAgIDExODk5MiwgNDE4OTAsIDEyODU5MiwgMjczMCwgNDE2MDQsIDEyODM1NSwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgCisgICAgNjQ0MzcsIDEyNzkzNSwgMTE4ODE2LCA3MTQ1OCwgOTY4NCwgMjE2LCA3MTM2NywgMTQwMSwgMTI4MDUzLCA0NDAxMiwgCisgICAgOTI2MjgsIDcxNDU2LCA5MjU4NSwgOTE1OCwgNjY4NzgsIDExMTI2LCA1NzY4LCAxMDEwNjQsIDk4Mzc1OSwgMCwgNDg0LCAKKyAgICAxOTQ3MzksIDAsIDAsIDY1ODk1LCAxMjUwNzYsIDEwMDUyNCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIAorICAgIDEyNzU0MywgOTM5NjIsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDEyODcwNSwgCisgICAgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgNjY3NjcsIDEyOTA0MCwgMTE5OTY3LCAzNDMwLCAKKyAgICA5ODMzOTcsIDQyOTA1LCA3ODcxNywgNzQ5MjksIDk4MSwgMTI5MTg0LCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAKKyAgICAxMDkwOCwgMTI2NTA2LCA3MDM0LCA0MTY4MywgNjQ2MTcsIDExOTEzOCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgCisgICAgMTI4MjU5LCA2NzQsIDYzOTkxLCA5ODMyNTEsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCAKKyAgICA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIDUxMjEsIDc3OTg5LCAxMTg5OTMsIDAsIDUxMzAsIDgzMTgwLCAKKyAgICAxMjgzNTcsIDc3OTkwLCAwLCAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMTE5MjY4LCAwLCAKKyAgICAxMjg0NzUsIDkyMTg3LCAzNDY4LCA3MDMzLCA5MjMwLCA1OTM5LCAxMjgzOTcsIDEyMDAxMCwgNTgwMywgNzE4NjcsIAorICAgIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDY3MTE1LCA2Njc1MywgCisgICAgMTE3MzksIDc3OTg2LCA0MTk4MSwgOTI3NDMsIDU5MzgsIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCAKKyAgICA3Mzg1MiwgMTAwNjg0LCAxMzA1NywgOTgzMjc3LCAxMjY5NzYsIDEyOTA4MSwgMTAwMDksIDkxNzkwNSwgNDE3MDMsIAorICAgIDEyMDk1MCwgMTIxNjUsIDEyOTE5MSwgOTgzNzU3LCA5ODg1LCAxOTQ4MTQsIDgwNzcsIDkyNjIwLCAxMjc5MDgsIDEyMTA0NCwgCisgICAgMTk0OTk1LCAwLCA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgCisgICAgMTIxMjY1LCAxMjUwNzgsIDEyOTE4NSwgMTk0ODEzLCAxMjQ5OTksIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAxMjY0OTAsIAorICAgIDE5OTQ0LCA3NDM1NiwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgMTAwODg5LCAKKyAgICAxMjczOTAsIDEyMzEzLCAxMTE1MSwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgMTE5OTQwLCAKKyAgICAxMTk5NDEsIDEwMDg5MCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDkxNzkwNCwgNzg4NTAsIDI3NDEsIAorICAgIDY0Mzk5LCA2MTk3LCAxMzcwLCA5ODM5NDgsIDEyMDg0MSwgMCwgMTAwODg3LCA5ODM0NDEsIDcxMjczLCA2MTg0LCA4NjA2LCAKKyAgICAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCAzNDIyLCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCA0NDc4LCA2NjE3OCwgCisgICAgMCwgMCwgMjc0NCwgMCwgNDQ3NywgNzgyNjcsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgCisgICAgNjYxOTgsIDQxODgwLCA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIAorICAgIDczNzg4LCA3Nzg4LCA0ODQ3LCAxMjgzNjYsIDEyNzc1OSwgNzA3MjUsIDEyODQzMywgMjIyMSwgMTU4MSwgNjUzNSwgCiAgICAgNzgxNjEsIDEyOTU0LCA0MzAsIDc4MTYwLCA1NTI1OSwgNzM5NDQsIDEyODAzNiwgNTI3OCwgNDk0NSwgNDI4ODMsIDQ5NTAsIAogICAgIDk4MzQ0MCwgNjg2MjUsIDk4MzQzOCwgNzI2OSwgMTI4NDk5LCA1OTY0LCAxMjkwOCwgMTI0OTk3LCAwLCA3NDc2NCwgCi0gICAgNDM1MTIsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MzEsIDQ0MywgOTgzNDI5LCA0OTQ0LCA1NDY3LCAxMTk2MDMsIAotICAgIDcwODY1LCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIDQxMzAzLCA5MTc1NTYsIDE5NDkzMSwgMTE5OTYyLCAKLSAgICA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCA4MjQsIDEyODY3NiwgMTIwOTEsIAotICAgIDY3MTE4LCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAxMTk4MTksIDY1MDU5LCA0Mzg2MCwgCi0gICAgNjczOSwgNjY4NDQsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDY3NzAyLCA0Njc3LCAxMjY4OCwgCi0gICAgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCA3ODE2NiwgNDY3NCwgCi0gICAgNDU0OCwgNDQwMDUsIDcxMDg3LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAxODU1LCAxMjc0NzUsIAotICAgIDY4NjY5LCAxMTg5OTAsIDkyNDQ1LCAxMjc1NTQsIDEyNjYzMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIDExNzk3LCAKLSAgICA5ODM0MTksIDEyODE1OSwgOTIwMiwgNDY1NCwgNjg0MCwgOTgzNDE2LCA2ODYzOCwgNzM5OTMsIDEwNTI1LCA0NjQ5LCAKLSAgICA2NTIwOSwgMTIxNTEyLCAxMjE1MTEsIDQ2NDgsIDQzMDgwLCA3NTA3MCwgMTIxNTA3LCA5ODM0MDYsIDYyNDYsIDY0OTUwLCAKLSAgICA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3MDI4NywgNzQ2MjQsIDQzMTg3LCA4NjY5LCAKLSAgICAxMjA2NTksIDY4MjEsIDY1MDkzLCA5ODM1NjUsIDc4ODgxLCAyNzE2LCA5ODM0MTIsIDk4MzA2MCwgNzA1MDMsIDE5NDk1MiwgCi0gICAgNjgzNjksIDEyMDA1NCwgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDY4MzYsIDk4MzQyMywgMCwgCi0gICAgNDY2MiwgNzgwMzMsIDc4MDMyLCA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgMTk0OTYyLCA0NjU2LCAKLSAgICAxMDEzMCwgNjg0NTAsIDc4MTEsIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIAotICAgIDQ2NjEsIDQyNDM0LCA5ODM0MTMsIDEyODczNywgMTExOTAsIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIAotICAgIDQ4NjcsIDExMTAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgCi0gICAgNDM4ODgsIDcwMzAzLCA5ODMzOTUsIDY5OTA1LCA2NzE4OCwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCA2ODgzMSwgCi0gICAgMTI4ODAsIDY1MzA3LCA0NjE3LCA2ODc1NywgOTgzMzg4LCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgCi0gICAgOTgzMzgyLCA1OTU4LCAwLCA5ODM0MzUsIDQyMTUsIDk3ODksIDExOTYxOSwgNDMyMSwgNDYyMSwgMTk1MDI4LCA0MTMxMywgCi0gICAgNTIyLCA1MzY4LCAxMTEzOSwgNjU4MDMsIDEyODU0NiwgNTM2NiwgMTIyMDEsIDUzNzIsIDEyMTA2MCwgMTE5OTQ5LCAKLSAgICAxOTQ5NzUsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzQwMiwgMCwgNDYzOCwgOTgzNDA3LCAxNzkwLCA3ODI0MiwgNTk2NSwgCi0gICAgNjQzNjMsIDY2NTY5LCA2ODY0NiwgNjg0NzcsIDUzNzYsIDE4MzUsIDUzMzUsIDEyMTUwNSwgMTI4MDg5LCA0NjMzLCAwLCAKLSAgICA2ODExOSwgMTE4MCwgNDYzMiwgNjcxOTEsIDUzODcsIDUzMzMsIDAsIDEyNTEzMiwgNDIwOTQsIDUzMzEsIDQ2MzQsIAotICAgIDExOTI4LCA5ODM1OTQsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDQzNTAwLCAxMjY4LCA2NTA5NywgCi0gICAgNDIzNjEsIDAsIDAsIDczODUzLCAxNDI3LCAxMjg0NDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgNDc1OCwgCi0gICAgOTgzMzc2LCAxNjA4LCAyNzM4LCAxMjUwNjYsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAotICAgIDc0Mzg0LCA2NjYxMSwgNjgzNzcsIDYyNDgsIDk4MzM2NCwgNjc4MTUsIDc4ODc4LCA0MjMxOCwgOTI1ODIsIDUyMjksIAotICAgIDQ3NTcsIDAsIDEyNjU3NiwgMjcyOCwgNDc1MiwgNjQ1NjMsIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDEyODkyNiwgCi0gICAgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDgzMTI0LCA2NzEwMSwgMTI2NDk1LCA4OTU0LCA3NDc2MCwgNjUxODksIAotICAgIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIDU1NzcsIDEyODk2NiwgMCwgCi0gICAgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAKLSAgICAwLCA1NTI1LCA1MzMwLCA1MzE5LCA2ODI5MiwgMTI3MzExLCA2NTA2NiwgNDQwMDMsIDY4NDM3LCA5ODM0ODIsIDQzODQzLCAKLSAgICAxMjA0OTgsIDEyNzg1MSwgNDM5MTgsIDc0ODUxLCA3NDAyMiwgOTgzNDI0LCA2NDYwOSwgNjg2NDMsIDY3NDEwLCAxMjg1OTMsIAotICAgIDU3MjEsIDc0ODkyLCA1NTE5LCA4NjMyLCA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgNzg3NzgsIDE2OTIsIAotICAgIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzI0MiwgNTI4NywgNTMwOSwgCi0gICAgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMTIwNDc5LCAKLSAgICA5ODMzNDgsIDkyMDgsIDQ2MDgsIDQzOTY2LCA0MTEyNCwgNTE5MCwgNjc2MjgsIDY2ODI2LCA2ODE0NSwgNzA4NiwgMCwgCi0gICAgNjc5OTgsIDY3NjIwLCA5MzA0NywgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgMCwgNjc2MjUsIDU5NjAsIDY3NzIyLCAKLSAgICA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgCi0gICAgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgNjIzOSwgNDM5MDAsIDQxMjU2LCA3NDEzMiwgNjc3NDAsIAotICAgIDAsIDcxMTc4LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgMCwgNDg2NSwgCi0gICAgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgNzE5MywgNjcwOTcsIDEyODg0NCwgNTczOSwgNDEwMjQsIAotICAgIDQ4NjYsIDk4Mzg4MCwgNzM5MDQsIDEyMTQyMCwgNDg2OSwgMTIwNTYzLCAxMjkxNzIsIDQyMjMsIDEyODIwMSwgNjY1MCwgCi0gICAgMTI2NTA5LCAwLCAxMjAyMTIsIDExOTg3MiwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgNzgxNzYsIDY4NjY3LCAKLSAgICA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCA4MzE5MywgNjI0NSwgNjg2NTIsIAotICAgIDI3MzIsIDQyNzM0LCA3NDUsIDY4MDQ1LCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAxMjkxMzYsIDY4NjMxLCA0Mjc3NSwgCisgICAgNDM1MTIsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MzEsIDQ0MywgMTIyOTAyLCA0OTQ0LCA1NDY3LCAxMTk2MDMsIAorICAgIDcwODY1LCA2NTEzNywgNjA0NCwgNjUzOTIsIDk4MzExOSwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAKKyAgICAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgCisgICAgMTI4Njc2LCAxMjA5MSwgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgCisgICAgNjUwNTksIDQzODYwLCA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIAorICAgIDQ2NzcsIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIAorICAgIDc4MTY2LCA0Njc0LCA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIAorICAgIDE4NTUsIDEyNzQ3NSwgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgCisgICAgMTE3OTcsIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCAxMjI5MDksIDY4NjM4LCA3Mzk5MywgMTA1MjUsIAorICAgIDQ2NDksIDY1MjA5LCAxMjE1MTIsIDEyMDI0NSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgCisgICAgNjQ5NTAsIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIAorICAgIDg2NjksIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA2Njc1NiwgCisgICAgMTk0OTUyLCA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgCisgICAgOTgzNDIzLCA5ODM0MjEsIDQ2NjIsIDc4MDMzLCA3ODAzMiwgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIAorICAgIDE5NDk2MiwgNDY1NiwgMTAxMzAsIDY4NDUwLCA3ODExLCA0MDk5NCwgMTk0NzAyLCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCAKKyAgICA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgOTgzNDEzLCAxMTg5OTcsIDExMTkwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIAorICAgIDc0ODY0LCA3NTQ3LCA0ODY3LCAxMTEwMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCAKKyAgICA0NjIyLCAxMTk2NTYsIDQzODg4LCA3MDMwMywgOTgzMzk1LCA2OTkwNSwgNjcxODgsIDkwNDUsIDc4ODg4LCA0MjI1LCAKKyAgICAxOTkyNiwgNjg4MzEsIDEyODgwLCA2NTMwNywgNDYxNywgNjg3NTcsIDc4MDA4LCA0MTczMiwgNDYxNiwgMTA1MTgsIAorICAgIDEwNDIzLCAxMDM1OSwgOTgzMzgyLCA1OTU4LCAwLCA5ODM0MzUsIDQyMTUsIDk3ODksIDExOTYxOSwgNDMyMSwgNDYyMSwgCisgICAgMTk1MDI4LCA0MTMxMywgNTIyLCA1MzY4LCAxMTEzOSwgNjU4MDMsIDEyODU0NiwgNTM2NiwgMTIyMDEsIDUzNzIsIAorICAgIDEyMTA2MCwgMTE5OTQ4LCAxMjcwNjQsIDc3MjAsIDczOTAsIDI2OTYsIDExOTY1NywgOTgzMTE1LCA0NjM4LCA5ODM0MDcsIAorICAgIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAKKyAgICAxMjgwODksIDQ2MzMsIDk4MzQxOCwgNjgxMTksIDExODAsIDQ2MzIsIDY3MTkxLCA1Mzg3LCA1MzMzLCAwLCAxMjUxMzIsIAorICAgIDQyMDk0LCA1MzMxLCA0NjM0LCAxMTkyOCwgMTAwOTUyLCA1MzM4LCA0NjM3LCAxMjEwNzAsIDU5NzEsIDQyNDE0LCA0MzUwMCwgCisgICAgMTI2OCwgNjUwOTcsIDQyMzYxLCAxMjg1MTAsIDkxNzYwNSwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgCisgICAgOTgzNDE3LCAxMDM1OCwgMTA0MjIsIDQ3NTgsIDk4MzM3NiwgMTYwOCwgMjczOCwgMTI1MDY2LCAxMDQ1NSwgNDc1MywgCisgICAgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCA3NDM4NCwgNjY2MTEsIDY4Mzc3LCA2MjQ4LCA5ODMzNjQsIDY3ODE1LCAKKyAgICA3ODg3OCwgNDIzMTgsIDkyNTgyLCA1MjI5LCA0NzU3LCAxMjUyMTUsIDEyNjU3NiwgMjcyOCwgNDc1MiwgNjQ1NjMsIAorICAgIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDEyNzQ4NywgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDgzMTI0LCA2NzEwMSwgCisgICAgMTI2NDk1LCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgCisgICAgNjUxMzksIDU1NzcsIDEyODk2NiwgOTgzMDg4LCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgCisgICAgOTE3ODc3LCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgMTI3MDA2LCA1NTI1LCA1MzMwLCA1MzE5LCA2ODI5MiwgCisgICAgMTI3MzExLCA2NTA2NiwgNDQwMDMsIDY4NDM3LCAxMjcyOTksIDQzODQzLCAxMjA0OTgsIDEyNzg1MSwgNDM5MTgsIDc0ODUxLCAKKyAgICA3NDAyMiwgOTgzNDI0LCA2NDYwOSwgNjg2NDMsIDY3NDEwLCAxMjg1OTMsIDU3MjEsIDc0ODkyLCA1NTE5LCA4NjMyLCAKKyAgICA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgNzg3NzgsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAorICAgIDc1MDUyLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMyNDIsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCAKKyAgICA0NjQ3LCA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDEyMDQ3OSwgOTgzMzQ4LCA5MjA4LCA0NjA4LCAKKyAgICA0Mzk2NiwgNDExMjQsIDUxOTAsIDY3NjI4LCA2NjgyNiwgNjgxNDUsIDcwODYsIDIyNjUsIDY3OTk4LCA2NzYyMCwgOTMwNDcsIAorICAgIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgNDM1OTMsIDEyODc1OCwgNjc2MjUsIDU5NjAsIDY3NzIyLCA4OTkyLCA0MjU5MywgCisgICAgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIAorICAgIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgNjIzOSwgNDM5MDAsIDQxMjU2LCA3NDEzMiwgNjc3NDAsIDEyOTMwOSwgCisgICAgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCA5MTc4OTYsIAorICAgIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY3MDk3LCAxMjg4NDQsIDU3MzksIAorICAgIDQxMDI0LCA0ODY2LCA5ODM4NTUsIDczOTA0LCA3MDcyNiwgNDg2OSwgMTIwNTYzLCAxMjkxNzIsIDQyMjMsIDEyODIwMSwgCisgICAgNjY1MCwgMTI2NTA5LCAwLCAxMjAyMTIsIDExOTg3MiwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgNzgxNzYsIDY4NjY3LCAKKyAgICA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCA3MjgyMSwgNjI0NSwgNjg2NTIsIAorICAgIDI3MzIsIDQyNzM0LCA3NDUsIDY4MDQ1LCAxMjg5MzMsIDkyMTk1LCA0Nzc3LCA3ODIxLCAxMjg4NzAsIDY4NjMxLCA0Mjc3NSwgCiAgICAgMTk0NjYxLCAxMjg0NDUsIDEyMDY3OSwgMzA5NywgMTIwOTA4LCA1OTY2LCAxMjExOTcsIDQ3NzgsIDEyNjQ2OSwgMTA4NjMsIAogICAgIDEyNzUwNiwgNDc4MSwgOTI5ODYsIDY0NDA3LCAxMjg1MDMsIDEyODMyMywgODU3NywgNzEyMjEsIDY4MTk2LCA0MzI4NSwgCi0gICAgMTAyMTYsIDQ3ODIsIDk4MzQ4NSwgOTgzNDExLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIAotICAgIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMTI5MTI4LCAxMzE3NiwgNjgzNjMsIDEwNDI2LCA2NzI0NywgNzEwOTEsIAorICAgIDEwMjE2LCA0NzgyLCA5ODM0ODUsIDk4MzQxMSwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAxMjcxMTgsIAorICAgIDAsIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMTI5MTI4LCAxMzE3NiwgNjgzNjMsIDEwNDI2LCA2NzI0NywgNzEwOTEsIAogICAgIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCA0MzI3OCwgNDI2MzUsIDAsIDEyNzIwNywgCi0gICAgNTk2MywgOTE3OTI2LCA5ODM0ODMsIDAsIDQ4NTAsIDczOTAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgCisgICAgNTk2MywgMTIwNzg2LCAxMjUyMDEsIDAsIDQ4NTAsIDczOTAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgCiAgICAgMTI3OTE4LCA1MTY0LCA3MzgwNywgMTM1MCwgNTEyNCwgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIDkyNDcxLCAKLSAgICAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAxMjEyNzMsIDQxMjY4LCA0ODQ4LCAyNTMwLCA3NDk0MSwgMjA2OCwgMTk2NCwgMCwgCi0gICAgNzM3NjIsIDEwNDU4LCA5ODM0MTcsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAxMjExMDIsIDY4MjExLCA4MzIyLCAKLSAgICA0Nzk3LCA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNiwgMzAzLCA3NDYyNSwgCi0gICAgNjgyMjksIDk4MzQyNywgMjQzNywgNzg2NTksIDQyMjEsIDQ4NDQsIDkyMjE2LCAwLCAwLCAwLCA3MDA0MiwgNzQwOTUsIAotICAgIDQzMjkyLCAwLCAyNDQxLCAxMDczOSwgNjUwOTAsIDE5NDYyMiwgNzA0MzYsIDExODkyOSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAKLSAgICAwLCA0MzM3OSwgNDkzNywgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIAotICAgIDQyODc5LCAxMTcyNSwgOTE3OTY5LCAwLCAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgNjQ5MzcsIDExOTIzMywgOTE0MCwgCi0gICAgMTQwOCwgNTI2MSwgNDYwNywgMTk0NzE1LCAxODEsIDk4MzQzMiwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIAotICAgIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCA5ODM2MDEsIDY4NDQsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIAotICAgIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAKLSAgICAxMjc5ODksIDEyNzU4LCAzODY1LCAxOTQ2NjAsIDEyMTEyOSwgMTA1MDAsIDAsIDExOTAyNCwgNzgwMjgsIDkyNDA4LCAKLSAgICA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAxMjgxMTksIDMxMjUsIDk1NjcsIDAsIAotICAgIDQ4NzgsIDU0NTksIDQ2MDQsIDExOTY1MCwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIDExNDk0LCAxMjY0OTIsIDk1NjMsIAotICAgIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA2ODUyMSwgNzg3MTQsIDY0MTkxLCA2NDE5MCwgODg5OCwgNjQxODgsIAotICAgIDEyOTE1MywgNDEwMzAsIDc0MjI2LCA3ODcxMywgNzQ2MDAsIDc0OTk0LCA5MTc4MzQsIDAsIDc4ODA1LCA0MTAzMSwgCi0gICAgNzg4MDEsIDExOTYwLCA2NzQ1LCAzMDgyLCA5ODMyNjksIDc4NTM5LCA3MzkxOSwgMTA1NzMsIDQxNzQ0LCA3MDc5LCA1ODU2LCAKLSAgICA2NzgzOCwgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAxMTkwMTAsIDEwNTY0LCA3NzYzLCAKLSAgICAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIDQyNDgsIAotICAgIDc3OTc5LCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAotICAgIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIAotICAgIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgNzQ0OTUsIDgzNDkyLCA4MzQ5MywgCi0gICAgODM0OTQsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIAotICAgIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCAKLSAgICA1MzQ4LCAxMDk0MywgNjYzOTAsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNTEyNywgMCwgNjY1NzksIDExNTUxLCAxMjg0NjQsIAotICAgIDE5NTA4MCwgOTUwNCwgNzE4NywgODI5NTcsIDEwMzczLCA5ODM0MTgsIDEyMDM3NSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAKLSAgICAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgNjk5OCwgNzgxODAsIDcxNDI5LCAzMTI4LCA0Nzg5LCA1MDY3LCAKLSAgICA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCAKLSAgICA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgCi0gICAgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMTI1MDIzLCAKLSAgICA0MjYwOSwgMTE5ODU1LCA3NDE3NSwgNjY5MTIsIDEyNzAxNiwgMCwgMTIxMzAwLCA0MjEzMCwgMTIxMDQ2LCA1MTUxLCAKLSAgICAxMjEzNDYsIDgzNDg4LCAwLCA5Mzk4MCwgOTE3ODAyLCA3NjIwLCAzODAwLCA2NTEyMiwgODM0ODcsIDgzNDgwLCA4MzU1LCAKKyAgICAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAxMjEyNzMsIDQxMjY4LCA0ODQ4LCAyNTMwLCA3NDk0MSwgMjA2OCwgMTk2NCwgCisgICAgMTI4MjE3LCA3Mzc2MiwgMTA0NTgsIDEyODEyNSwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIAorICAgIDgzMjIsIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDEyODE2MywgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MjYsIDMwMywgCisgICAgNzQ2MjUsIDY4MjI5LCA5ODM0MjAsIDI0MzcsIDc4NjU5LCA0MjIxLCA0ODQ0LCA5MjIxNiwgOTgzODA1LCAwLCAwLCAKKyAgICA3MDA0MiwgNzQwOTUsIDQzMjkyLCA5ODM2NTYsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAKKyAgICAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIAorICAgIDExNzIyLCA5MjQ4LCA5MjU1NSwgNDI4NzksIDExNzI1LCAxMjA2ODcsIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCAKKyAgICA2NDkzNywgMTE5MjMzLCA5MTQwLCAxNDA4LCA1MjYxLCA0NjA3LCAxMjkzNTMsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCAKKyAgICA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgCisgICAgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCAKKyAgICA0MTIzMSwgMTgyMiwgNDI1MjYsIDkyMzQ0LCAxMjc1OCwgMzg2NSwgMTIyOTE4LCAxMjExMjksIDEwNTAwLCAwLCAxMTkwMjQsIAorICAgIDc4MDI4LCA3ODAwMywgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgNTQ2MywgMTI4MTE5LCAKKyAgICAzMTI1LCA5NTY3LCA5ODMyOTEsIDQ4NzgsIDU0NTksIDQ2MDQsIDExOTY1MCwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAorICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA2ODUyMSwgNzg3MTQsIDY0MTkxLCAKKyAgICA2NDE5MCwgODg5OCwgNjQxODgsIDEyOTE1MywgNDEwMzAsIDc0MjI2LCA3ODcxMywgNzQ2MDAsIDc0OTk0LCA5MTc4MzQsIDAsIAorICAgIDc4ODA1LCA0MTAzMSwgNzg4MDEsIDExOTYwLCA2NzQ1LCAzMDgyLCAxMjY1ODEsIDc4NTM5LCA3MzkxOSwgMTA1NzMsIAorICAgIDQxNzQ0LCA3MDc5LCA1ODU2LCA2NzgzOCwgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAKKyAgICAxMTkwMTAsIDEwNTY0LCA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIAorICAgIDEwMzcxLCAxMDMwNywgNDE4MTQsIDQyNDgsIDc3OTc5LCA3MjgwMiwgNDU0MSwgNjI5OSwgNjQyMDQsIDY0MjAzLCA2NDIwMSwgCisgICAgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMTI2NDcxLCA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgNjUyMjMsIDk5NDMsIAorICAgIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAxMjIzMSwgNDI2NTIsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgCisgICAgNzgxODYsIDk5NjUsIDc0NDk1LCA4MzQ5MiwgODM0OTMsIDgzNDk0LCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIAorICAgIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIAorICAgIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIDY2MzkwLCAwLCAxMTM1MiwgNTUwLCAKKyAgICA5OTEwLCAxMjUxMjcsIDAsIDY2NTc5LCAxMTU1MSwgMTI4NDY0LCAxOTUwODAsIDk1MDQsIDcxODcsIDgyOTU3LCAxMDM3MywgCisgICAgOTgzMTUzLCAxMjAzNzUsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIAorICAgIDY5OTgsIDc4MTgwLCA3MTQyOSwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAxMjgzOTQsIDg4MjcsIAorICAgIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMTk0OTI2LCA5NDUwLCAKKyAgICAxODA5LCA5ODM1ODgsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMTI2NTk4LCAKKyAgICA5Nzg1LCA2NDcxNiwgMTI4Mjc5LCAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMTI4NzM5LCAxMDExMDAsIDQyNjA5LCAKKyAgICAxMTk4NTUsIDc0MTc1LCA2NjkxMiwgMTI3MDE2LCAwLCAxMjEzMDAsIDQyMTMwLCAxMjEwNDYsIDUxNTEsIDEyMTM0NiwgCisgICAgNzA3NDMsIDk4MzcxNSwgOTM5ODAsIDkxNzgwMiwgNzYyMCwgMzgwMCwgNjUxMjIsIDgzNDg3LCA4MzQ4MCwgODM1NSwgCiAgICAgNzg1NCwgODM0ODMsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIDEwNzExLCAKLSAgICA0NTkzLCA4Mjk5MywgMTIwNTg0LCA5ODM0MTAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDk4MzQxNCwgMCwgNzg2NDIsIAotICAgIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKLSAgICA3ODIwNCwgNDM5MTMsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgNjM2LCAKLSAgICAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgCi0gICAgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCA3NDk3MiwgMCwgCi0gICAgMCwgMzkzNywgMTIzMTIsIDAsIDk4MzQwNSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAKLSAgICAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjg5NjksIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgCi0gICAgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgCi0gICAgMzU0LCA2ODYxNSwgNzc4NTMsIDc0MzY2LCAxMjE0MDQsIDAsIDQyMDM5LCAxMTM4MTcsIDAsIDY0MTQyLCA2MjYsIDAsIAotICAgIDU4OTUsIDAsIDQzOTEwLCA1NzgwLCAwLCAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgCi0gICAgNDY0NCwgODgxOCwgNzgxNTgsIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIAotICAgIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIAotICAgIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCA5NDAyMCwgNjI0OSwgNDIxMTcsIDY4ODI4LCA5MjIwNiwgMTI4MDIzLCAxMTkyNTUsIAotICAgIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA3MTE4MCwgMCwgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDk4Mzg0NywgCi0gICAgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCAKLSAgICA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAwLCA0MTg1OSwgCi0gICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCA3MDUwNywgMTI1MDkxLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCAKLSAgICA0MjEwNiwgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjcxMjAsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgCi0gICAgNjg3NTgsIDY4MzQyLCA4MzQyMCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCAKLSAgICA1MzAwLCA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgCi0gICAgNDMyODgsIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgCi0gICAgNzg3NiwgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAKLSAgICAxMjA1MywgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDgzNDExLCAKLSAgICA4MzQxMiwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgNzA3OTQsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIAotICAgIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgCi0gICAgNjg2NTUsIDAsIDk4MzM5MCwgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgCi0gICAgNjY4NywgMTI3NCwgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIAotICAgIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCAKLSAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIAotICAgIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCAKLSAgICA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgCi0gICAgOTgzNzA4LCAxMTkwNTMsIDAsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgCi0gICAgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAorICAgIDQ1OTMsIDgyOTkzLCAxMjA1ODQsIDEyODY2OSwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMTI3NTA1LCA5ODM1OTQsIAorICAgIDY2Nzk1LCA2NDc1OSwgMTMyNSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCAKKyAgICA0Mzc4NywgNzgyMDQsIDQzOTEzLCAzMTE5LCAxMjcyNTcsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCA3NDk5NiwgNzc4NzYsIAorICAgIDYzNiwgMTE2OTgsIDgzNDc2LCA4Mjk2MSwgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIAorICAgIDg4NjMsIDcwMjAxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCA2ODQ5MiwgNjcxNjQsIDg2MTgsIDk4MzQwNCwgOTkwOCwgCisgICAgNzQ5NzIsIDAsIDExOTE0NywgMzQxNCwgMTIzMTIsIDEyMDgzMiwgMTIwNzI3LCAxMjEyNjQsIDY0NzgxLCA5MTIsIDYzNDksIAorICAgIDQ1MzYsIDkzOTU0LCA3NDUzMiwgMTI2NTk0LCA2MjQ0LCA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgMTI4MzE2LCAwLCAKKyAgICAxMTk1MCwgNTM5MiwgNDIyNDgsIDY1MTI5LCA2ODY1NiwgNTM5NywgMTI4MzEwLCAxMjA0NiwgMTI1OTksIDY3NDA3LCAKKyAgICAxMjY1NDIsIDUzOTUsIDcyODcwLCA1MzkzLCAzNTQsIDY4NjE1LCA3Nzg1MywgNzQzNjYsIDEyMTQwNCwgMTIxMjY2LCAKKyAgICA0MjAzOSwgMTEzODE3LCAxMjg2NzEsIDY0MTQyLCA2MjYsIDEyODI0NCwgNTg5NSwgOTgzNTczLCA0MzkxMCwgNTc4MCwgMCwgCisgICAgMTAyMjAsIDEyMTMzNywgNDM5MDcsIDcxMTIxLCA0MzI5NywgNzAxODgsIDQzMTEsIDQ2NDQsIDg4MTgsIDc4MTU4LCAKKyAgICAxMjgxODYsIDEyODg2OSwgNzE0NSwgMzkxOCwgNjY0NTIsIDM3OTcsIDE2NDQsIDkyMzQ2LCA5NjU4LCA0MTQwLCAxMTM4NSwgCisgICAgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgMTE5OTQ1LCA2ODEzMSwgNDE0NiwgMTE5OTU3LCA1MzYwLCAyNDY2LCA3MDY2OSwgCisgICAgNjc2NjksIDk0MDIwLCA2MjQ5LCA0MjExNywgNjg4MjgsIDkyMjA2LCAxMjgwMjMsIDEwMTA0OCwgNzQwNDYsIDQzNzQ1LCAKKyAgICA0OTExLCA5ODgsIDcxMTgwLCA5ODMzMzcsIDk4MzQ3MCwgNDMwNjEsIDcwNTQsIDY0MTQ3LCAxMDEwNDIsIDY0OTIwLCAKKyAgICA2ODE5NSwgNjY5OCwgMTE4OTMzLCA5MjUwNiwgMCwgNzA4NDksIDExOTgxLCAxMjIwMiwgMTk1MDg3LCAxMTAzMiwgNjc2NTQsIAorICAgIDYwOTMsIDExNjA4LCA5NzUsIDY2NDE1LCA2NTg0MywgMTcwLCAwLCA2NzIzOSwgNDE2OSwgMTE5OTM4LCA0MTg1OSwgNjA1OCwgCisgICAgMTIwNDAxLCAxMzIwMywgMTIwNDAyLCA3MDUwNywgMTIwNDAzLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCisgICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjAxNDIsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgNjg3NTgsIAorICAgIDY4MzQyLCA0MTM3NCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCA1MzAwLCAKKyAgICA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgNDMyODgsIAorICAgIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgNzg3NiwgCisgICAgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAxMjA1MywgCisgICAgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMTI5MzM0LCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgODM0MTEsIDgzNDEyLCAKKyAgICAxMjY1MTIsIDQwOTcyLCA1MjQ1LCA3MDc5NCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIAorICAgIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgNzI4NTEsIDQ4MjUsIDY5MjQwLCAxMjE0NDMsIDY4NjU1LCAwLCAKKyAgICAxMjg1MzcsIDAsIDAsIDY4NjI4LCA5ODMzNDksIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIAorICAgIDE5NTAyMiwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIDExMDIzLCAxMTk1NTksIDQ4MzAsIAorICAgIDkxMzQsIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDgzMjk3LCA3ODY2OSwgNjQxMDEsIDAsIDEyODQzNCwgNDgyNCwgMTA2MTQsIAorICAgIDExOTY1OSwgMTI2OTkzLCAxODg4LCAxOTYwLCA3ODYxLCA4MzQxNiwgNzg1MjQsIDQxODM2LCA0MzAxMiwgNjA1MiwgNjA2NCwgCisgICAgNTQsIDQzMDA5LCAxMjIxNCwgODMyNjAsIDYyMTEsIDEyMDM4NiwgMzU4LCA0MTk5NywgNDE4MzMsIDExNDQyLCAxMDc1OCwgCisgICAgNjU3NzQsIDExMzgyMywgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCA5ODM2MTEsIDk4MzcwOCwgOTI0MDgsIAorICAgIDEyODA4MiwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAxMTk2MzIsIDEyNjU4MCwgNDAxNywgMTI4MjcsIDUyNDEsIAorICAgIDEyMDM5MiwgMTI3OTAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAogICAgIDgzNDAzLCA4MzQwNCwgODMzOTcsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCA4MzM5NiwgCi0gICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAwLCA5ODMwNzQsIDAsIDAsIDEyNzQwLCAxMjE0NzAsIDQ3MjIsIDY4MTYsIAotICAgIDEyNDk3NCwgMTI3NTksIDQ3MjUsIDY3MDk5LCA0NzI2LCA4MzQ2NywgODM0NjgsIDk4MzYyMiwgNzAwMjksIDgzNDYzLCAKLSAgICA3NDkxMywgMTI3NTUsIDEyNzYyLCA0MDE1LCA2NzY5MCwgODA1MiwgNDc2LCAwLCA3NDg5MywgMTI4Mjk0LCA2NDIxMiwgCi0gICAgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMTI3NTUzLCAxMjUxMjEsIAotICAgIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgOTgzNDIxLCA2NDA2NywgOTIyODcsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCi0gICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDgzMzAyLCAKLSAgICA5MTc2MTAsIDc5MzUsIDI0MjAsIDAsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIAotICAgIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgNjY4ODQsIDYyOTIsIDY1MzAzLCAKLSAgICA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgMTI5MDczLCA2NTE1MiwgNzE5LCAKLSAgICAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIAotICAgIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIAotICAgIDAsIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMTk0Nzg5LCAwLCAxMTM3NTYsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAKLSAgICA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgCi0gICAgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCAKLSAgICA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgCi0gICAgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCAKLSAgICA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIDAsIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIAotICAgIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIAotICAgIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgMCwgNjUwNjEsIDk4Mzk0NSwgOTE3ODk0LCAxMjkxNDIsIDEyMjM1LCAKLSAgICAxMjg1NzIsIDkyNzAxLCAxMjEwODcsIDY0MDkyLCA2ODczOSwgNjQwODAsIDEyOTA2MywgNjQwOTAsIDk4MzU4NiwgNjk5MTMsIAotICAgIDEwMTYyLCAxMDMxMCwgMTIxMjEwLCA4NDU0LCAxMjEzODcsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgCi0gICAgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgNzgxMTYsIDAsIDEyMTI5NSwgMTk1MDI0LCA5MjE5MywgODg5NiwgMCwgCi0gICAgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA3NDk5NywgMTI3MzI1LCA5ODM0MzYsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgCi0gICAgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMTI4NDUyLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAKLSAgICAxMTkxOTksIDY5NjkyLCAxMjkxMjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDEyODk3NCwgNzg3NjEsIDIyOTEsIDEyOTAyLCAKLSAgICAwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEyODYyOCwgNDE5MywgCi0gICAgNjY4MjMsIDQyNDEsIDEyOTE5NSwgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIAotICAgIDk4MzkzNCwgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgCi0gICAgMTAwMTUsIDEyMDY3MiwgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgOTE3ODk4LCAKLSAgICA0MjAzNywgMCwgMzkwNiwgMTIzNDksIDc0NzkzLCA4MzI2LCAxMjczMzMsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAKLSAgICAzNzc5LCA5ODMxOTQsIDQzNjEzLCA3MDEzMiwgMCwgODMyODgsIDc4MzM1LCA4MzI4OSwgMCwgMjgwLCA3NDU1OCwgCi0gICAgMTIxMzUzLCA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgCi0gICAgMCwgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIAotICAgIDcxODc3LCAxMjg2NjksIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgOTgzMDY2LCAKLSAgICA1MzY3LCA4NzU2LCAxMjcxNDMsIDExOTE4MywgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDUyMTgsIAotICAgIDY5Njg1LCA5ODM3NTYsIDAsIDExMzc5NCwgNDQwMjAsIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAKLSAgICAyMjkwLCA3MTA1NywgMTE5NjI0LCAxNDY1LCAxMDg1MCwgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgCi0gICAgNjcxNDgsIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCAKLSAgICA2OTYzNywgOTIyNDEsIDQzNjA3LCA3MTI1NCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDEyMDM4MSwgNzQ0MTcsIDQwMTgsIAotICAgIDcxNTAsIDY4MTI3LCA3MTQyNSwgMCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAorICAgIDY2MjAyLCA4OTU3LCA0MTM5LCA3MDUxMiwgMTI3MTE1LCA5ODMwNzQsIDAsIDEyMjkwNywgMTI3NDAsIDEyMTQ3MCwgNDcyMiwgCisgICAgNjgxNiwgMTI0OTc0LCAxMjc1OSwgNDcyNSwgNjcwOTksIDQ3MjYsIDgzNDY3LCA4MzQ2OCwgOTgzNjIyLCA3MDAyOSwgCisgICAgODM0NjMsIDc0OTEzLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDc0ODkzLCAxMjgyOTQsIAorICAgIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAxMjc1NTMsIAorICAgIDEyNTEyMSwgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCAxOTUwOTYsIDY0MDY3LCA5MjI4NywgODU1MiwgCisgICAgNjQxMTMsIDQxODQ1LCAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIAorICAgIDExOTA4NSwgODMzMDIsIDkxNzYxMCwgNzkzNSwgMjQyMCwgNzM4NjEsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIAorICAgIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgCisgICAgNjY4ODQsIDYyOTIsIDY1MzAzLCA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgCisgICAgMTI5MDczLCA2NTE1MiwgNzE5LCAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgCisgICAgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIAorICAgIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIDk4MzI5MywgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAxOTQ3ODksIAorICAgIDEyMTIyNiwgMTEzNzU2LCA5ODM0NTgsIDY1NDE0LCA2NDU0LCAxMjI5LCA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgCisgICAgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIAorICAgIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAKKyAgICAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgCisgICAgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIAorICAgIDkyMzI5LCA4MzQ0MiwgNjQ1NiwgNzM4MjAsIDgzNDQ1LCA2NjkxLCA0MjE5MywgNjYyODQsIDgzNDQxLCAwLCA2ODMzNywgMCwgCisgICAgNDM4NTgsIDQzODMyLCAxMTg4MjAsIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAxMjA3MjQsIDk4MzU5NiwgCisgICAgNjUwNjEsIDc4MTE1LCA5MTc4OTQsIDEyOTE0MiwgMTIyMzUsIDEyODU3MiwgOTI3MDEsIDEyMTA4NywgNjQwOTIsIDY4NzM5LCAKKyAgICA2NDA4MCwgMTI5MDYzLCA2NDA5MCwgMTI1MjY3LCA2OTkxMywgMTAxNjIsIDEwMzEwLCAxMjEyMTAsIDg0NTQsIDEyMTM4NywgCisgICAgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCA3ODExNiwgCisgICAgMCwgMTIxMjk1LCAxOTUwMjQsIDkyMTkzLCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDc0OTk3LCAKKyAgICAxMjczMjUsIDk4MzQzNiwgMTEzNzU3LCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAKKyAgICAxMjg0NTIsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIAorICAgIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCA3ODc2MSwgMjI5MSwgMTI5MDIsIDEyODE0MCwgNDI4OTEsIDY2MzI3LCA3MDUwMiwgCisgICAgMTI5NDI1LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAxMDA1NzYsIDQxOTMsIDY2ODIzLCA0MjQxLCAxMjkxOTUsIAorICAgIDc5OTgsIDgzMjc2LCAwLCAxMjcwMDksIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCA5ODM5MzQsIDEyNzQ3OCwgNjQyOTcsIAorICAgIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgMTAwMTUsIDEyMDY3MiwgCisgICAgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCA5ODM4NjUsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCA5MTc4OTgsIDQyMDM3LCAwLCAKKyAgICAzOTA2LCAxMjM0OSwgNzQ3OTMsIDgzMjYsIDEyNzMzMywgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIAorICAgIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCA4MzI4OCwgNzgzMzUsIDgzMjg5LCAxMjk0MTksIDI4MCwgNzQ1NTgsIDEyMTM1MywgCisgICAgNjczOTYsIDEzMDcyLCAxODk0LCA4MzI5MSwgNjc3MzUsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgMTE3NzMsIDEyMTMxNCwgCisgICAgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIDcxODc3LCAKKyAgICA3Mjg4NiwgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAxMTk5NDksIDUzNjcsIDg3NTYsIAorICAgIDEyNzE0MywgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgNjk2ODUsIDE5NDkxOCwgMCwgCisgICAgMTAwNzgwLCA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDIyOTAsIDcxMDU3LCAKKyAgICAxMTk2MjQsIDE0NjUsIDEwODUwLCAzOTQzLCAxMjc1MzcsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAxMTkzMzMsIDY3MTQ4LCAKKyAgICA1MzUyLCAxMTM3NTMsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgNjk2MzcsIAorICAgIDkyMjQxLCA0MzYwNywgNzEyNTQsIDgzNDQ0LCA1NDIwLCAzODk3LCAxMDEzNCwgMTIwMzgxLCA3NDQxNywgNDAxOCwgNzE1MCwgCisgICAgNjgxMjcsIDcxNDI1LCA3MDY4OCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAogICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAxMjA3NTAsIDc4NzUxLCA3MTQ2LCAKLSAgICA5ODM2ODIsIDY1MTUwLCA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgCi0gICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgMCwgCi0gICAgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAwLCAxMjEyMzEsIDY3OTk2LCAyMDIwLCAxMjg3OTAsIDQwMjIsIAotICAgIDEyODc4MywgMTIwNzAxLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgNzUwNjAsIDc0MzI5LCAwLCA2NDYyMiwgOTA3MCwgMCwgCi0gICAgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDk4MzgxMywgNzAwMCwgMzkwNCwgOTgzNjI4LCAKLSAgICA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCi0gICAgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAxMTM3MjUsIDk2MzYsIDAsIDEwNzM4LCAKLSAgICA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgOTgzNzIzLCA2NDQwOSwgMzU5NiwgCi0gICAgMTI5MDQ0LCAxMjgwOTAsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgCi0gICAgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgMTc2OSwgNDE3MTUsIDI0NjMsIAotICAgIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIDE5NDYxNCwgMTk1MDU4LCA3Nzk1LCAKLSAgICAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAxMjExMzAsIDk0OTgsIDEyNzAzMiwgCi0gICAgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAxMjAyODcsIDEyMDI4NiwgMjY1MCwgCi0gICAgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgNTUyMjgsIDExNzc0LCA0MTAxNiwgCi0gICAgOTgzMjYyLCA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgCi0gICAgNDEwMTksIDEyNzk0NCwgMCwgNjUyOTIsIDY4MjIsIDEyODYyLCAwLCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgCi0gICAgNzA4NjQsIDExODg3OSwgNTUyMjMsIDAsIDEyODA3MSwgNDE4MjYsIDg4NjUsIDY0MDIsIDExMzgyNywgMTMyNzksIDc5MTcsIAotICAgIDc0NzU1LCA5MTc5NDgsIDc3MzMsIDk4MzQwOCwgNDk5OCwgNjg0OTMsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMTk0NzkwLCAKLSAgICAxOTUwNTYsIDcwMDYxLCA0MDEzLCAxMjg3MTgsIDEwODgxLCAwLCA5ODMxNjMsIDAsIDc0Nzg4LCAyMDE0LCAyNDMyLCAKLSAgICA3MTkwMSwgOTc2NSwgMTk1MDUyLCAwLCA5MTc4NTQsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAKLSAgICAwLCAxMTkzMTUsIDIwMTUsIDEyMTA4OCwgOTI3NjUsIDcxODQwLCA2NjMxOCwgNDMyMzMsIDkxNzk5MiwgNDI1MTcsIAotICAgIDY4MDYwLCAwLCAwLCAxMjY5OCwgODA5NCwgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDQzNDk3LCAxMjY1NiwgNjYzMzUsIAotICAgIDExOTM1MywgNjcyNzksIDE2NjUsIDcxODUzLCA0ODMzLCA5MTc5ODUsIDcxMTg4LCAxMjczNjcsIDEyMTQ2NCwgMTg5LCAKLSAgICAxMjYxMSwgMCwgOTgzNDIwLCAyODU5LCA0ODM4LCA5ODM5MzAsIDQ4MzQsIDY1MDc4LCAwLCA5Mjk5MSwgNDgzNywgNjc0MTMsIAotICAgIDc3MCwgOTI2NzEsIDgxMSwgNzAwNjIsIDQxMDQyLCA4MzA3MywgNDEzMTgsIDY0NDI3LCA3Mzk5OSwgNjc2OTMsIDc4ODQ4LCAKLSAgICAzODk1LCA5MjYxNSwgNzQzNDEsIDM5NzYsIDEyODQ2NiwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCA3ODQ4OCwgMCwgCi0gICAgNDM0OTYsIDAsIDEyMTAxNSwgNDM2ODYsIDc4ODQ2LCA0MTg3NywgOTgzNzQzLCAyODcxLCA2NDYxNCwgNjg4NDMsIDk5OSwgCi0gICAgOTgzODQ0LCA2MzQ1LCA0MTg3NiwgMjY2MywgMjAxNywgMTIxMjM0LCA2NzgyNCwgMTEwNDAsIDEwMTUwLCAxMjA2NzgsIAotICAgIDY0MzA4LCAxNTIyLCA1OTcsIDQ3NzUsIDEyNTU1LCAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIAotICAgIDEyNTg0LCAzMDkyLCAwLCAxMjU2MiwgNDc4MywgMTI1NjYsIDEyNTY5LCAxMjU1NCwgODMzNDQsIDEwODEyLCA3ODg1MSwgMCwgCi0gICAgODMzNDIsIDMwNzgsIDE0MDIsIDAsIDgzMzQ4LCAwLCAxMjUwNzIsIDExOTI0OCwgMzk0LCAzMDg4LCA4MzM0NywgOTIxNzIsIAorICAgIDk4MzY4MiwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDEyNzI4NywgMTA1MDYsIAorICAgIDk4MzQzNywgNjk2NDEsIDEwNzUzLCAxMDgzMCwgMTE5MzM5LCA2MTUsIDY0NDkwLCA3NTc0LCA3NDA4MiwgNzc5MjIsIAorICAgIDk4MzI5OCwgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAxMjgzMDksIDEyMTIzMSwgNjc5OTYsIDIwMjAsIDEyODc5MCwgCisgICAgNDAyMiwgMTI4NzgzLCAxMDA3NDgsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCA3NTA2MCwgNzQzMjksIDAsIDY0NjIyLCAKKyAgICA5MDcwLCA5ODM4NzYsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAxMjUxOTEsIDcwMDAsIDM5MDQsIAorICAgIDk4MzYyOCwgNzM3MzcsIDEyNTEwNSwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTIwNTE4LCA3Mzk3LCAKKyAgICAxMTg4MDcsIDkxNzg5MSwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAxMjg1MDksIDM3NzcsIDY4NDU4LCAxMTM3MjUsIAorICAgIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgCisgICAgOTgzNzIzLCA2NDQwOSwgMzU5NiwgMTI5MDQ0LCAxMjA4OTUsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIAorICAgIDEyOTgxLCA0MTEyNywgMjA5MiwgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgCisgICAgMTc2OSwgNDE3MTUsIDI0NjMsIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIAorICAgIDE5NDYxNCwgMTk0NTg1LCA3Nzk1LCAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAxMDEwMzQsIAorICAgIDEyMTEzMCwgOTQ5OCwgMTAwNDk0LCAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIAorICAgIDEyMDI4NywgMTIwMjg2LCAyNjUwLCA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCAKKyAgICA1NTIyOCwgMTE3NzQsIDQxMDE2LCA5MTc5NDQsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgCisgICAgNjYzMzEsIDM0NTQsIDE5OTMwLCA3ODE2MywgNDEwMTksIDEyNjU0NiwgOTgzNjcxLCA2NTI5MiwgNjgyMiwgMTI4NjIsIAorICAgIDk4MzcwNywgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDcwODY0LCAxMTg4NzksIDU1MjIzLCAwLCAxMjgwNzEsIAorICAgIDQxODI2LCA4ODY1LCA2NDAyLCAxMTM4MjcsIDEzMjc5LCA3OTE3LCA3NDc1NSwgOTE3OTQ4LCA3NzMzLCA5ODM0MDgsIAorICAgIDQ5OTgsIDY4NDkzLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDEyNzkyMywgODMwNzUsIDcwMDYxLCA0MDEzLCAxMjg3MTgsIAorICAgIDEwODgxLCAwLCAxMjkwNDUsIDEyNTI2NiwgNzQ3ODgsIDIwMTQsIDI0MzIsIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIAorICAgIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIDAsIDExOTMxNSwgMjAxNSwgMTAwODcxLCAKKyAgICA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgNjgwNjAsIDk4MzYxNCwgOTgzOTA0LCAxMjY5OCwgCisgICAgODA5NCwgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDQzNDk3LCAxMjY1NiwgNjYzMzUsIDExOTM1MywgNjcyNzksIDE2NjUsIAorICAgIDcxODUzLCA0ODMzLCA5MTc5ODUsIDcxMTg4LCAxMjczNjcsIDEyMTQ2NCwgMTg5LCAxMjYxMSwgMCwgMTI4MDk0LCAyODU5LCAKKyAgICA0ODM4LCA5ODM5MzAsIDQ4MzQsIDY1MDc4LCAwLCA5Mjk5MSwgNDgzNywgNjc0MTMsIDc3MCwgOTI2NzEsIDgxMSwgNzAwNjIsIAorICAgIDQxMDQyLCA4MzA3MywgNDEzMTgsIDY0NDI3LCA3Mzk5OSwgNjc2OTMsIDc4ODQ4LCAzODk1LCA5MjYxNSwgNzQzNDEsIAorICAgIDM5NzYsIDEyODQ2NiwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCA3ODQ4OCwgMCwgNDM0OTYsIDk4MzA2OSwgMTIxMDE1LCAKKyAgICA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAxMjUxOTgsIDYzNDUsIAorICAgIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgNjQzMDgsIDE1MjIsIDU5NywgCisgICAgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIAorICAgIDk4MzgzMiwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDgzMzQ0LCAxMDgxMiwgNzg4NTEsIDEyNjU3NCwgCisgICAgODMzNDIsIDMwNzgsIDE0MDIsIDAsIDgzMzQ4LCAwLCAxMjUwNzIsIDc0MzcxLCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCiAgICAgOTE3OTY1LCAzOTkxLCA2NDM5MSwgODMzNDEsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAKLSAgICAxMjc1MzQsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCisgICAgMTI1MTI4LCA2NjkwMywgMTI4NDY4LCA0MjIzMSwgMjIwOSwgMTI1MTAzLCAwLCAwLCA0MTg0MCwgNjY5MTMsIDIzNzcsIAogICAgIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAxMjU1OSwgMTI1NzAsIDc0NzksIDEwMDMsIDIzNzMsIDk0NDYsIAotICAgIDc0ODEsIDk0NDgsIDQ4LCA5ODMwODQsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCi0gICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMTI5MTM1LCAKKyAgICA3NDgxLCA5NDQ4LCA0OCwgNzgwMjksIDk0ODAsIDQ4MSwgMTAwNjE1LCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCAKKyAgICA5NDQzLCA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAxMjkxMzUsIAogICAgIDkyOTM0LCA5NDI0LCA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgMjM2MiwgOTY1NSwgMTI4MDUwLCAKICAgICAyMDA0LCA5MDk2LCA5NzgyLCA3MDg0MiwgOTE3MiwgODMwNzEsIDE5OTY1LCAwLCA1OTU1LCA2NzY2NiwgMTEwOCwgMCwgCi0gICAgNzQ3NzMsIDc4MjcxLCAxMjg5MDksIDY0NzgyLCAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAxMzkyLCAKLSAgICA5ODM4MTcsIDEyMDgzOCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDEyNzIzOCwgCi0gICAgMTI4NzM5LCA2NDUyNCwgOTI0MTgsIDQwMTksIDAsIDEyNTA4MiwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAxMTk5NjMsIAotICAgIDEyMTA2NywgMTI4NDMwLCAxMjA5MzksIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAxMDY5NywgMzE2OSwgNDIyOTcsIAotICAgIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMTI4ODQ4LCAxMjgxMzksIDk4MzI2MywgNjg2NzgsIDc0OTg2LCA5ODM3OTAsIAotICAgIDEwNDksIDQzNTE3LCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKLSAgICAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgMzYsIDAsIAotICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgMTI3OTg1LCA3NDI0NSwgCi0gICAgOTY0MCwgMTE5OTUxLCAwLCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAKLSAgICAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIAotICAgIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgCi0gICAgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIAotICAgIDExMzgxMSwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMTI1MDU4LCA2NTUwNiwgOTgzOTEyLCA2NTg2MSwgNzQwODMsIDY2ODcyLCAKLSAgICA5OTMyLCA0MzUxNiwgODMwNjMsIDgzMDY1LCA4MzA2NCwgOTgxNywgMCwgNzEyMzQsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgCi0gICAgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDEyODU0NywgMTE5OTU0LCAxMTM2ODUsIDEyODk3LCAzNzkyLCAyMDExLCAKLSAgICAxMjE0MTgsIDYwNjUsIDQzMTYwLCAxMjgzNzksIDEyMDU5NSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIAotICAgIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIDc4MDAyLCAxMjAwMzUsIDc1MTMsIDE4NjMsIDQ3MTAsIAotICAgIDAsIDU5NTYsIDc2MjEsIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgMCwgNDcwNCwgMTIwMDQwLCA5MzAyNCwgCi0gICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIAotICAgIDExOTA2NSwgNDMyOTMsIDY4NzcxLCA5ODMxOTAsIDExOTE2NCwgMTIwMzI4LCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgCi0gICAgODMzMTUsIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgMTI4MzMxLCA4NTA2LCAxMTM3NDQsIAotICAgIDE5NDgxMiwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAxMjEzNTAsIDc4MjE4LCA5ODMxMDksIAotICAgIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAKLSAgICAxMjg2MjMsIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgCi0gICAgNDM0MjcsIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAKLSAgICAxMjA0MTYsIDI2NzQsIDEzMjM4LCAxMTkyMiwgMCwgOTI1MjksIDM1MTAsIDEzMjM0LCA5ODM4MzIsIDEyMDQwNywgNTYwNSwgCisgICAgNzQ3NzMsIDc4MjcxLCAxMjg5MDksIDY0NzgyLCAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDEyOTM2NSwgODMwNjIsIAorICAgIDEzOTIsIDEyNzc4MiwgMTIwNjk2LCAxMjczNjQsIDEwNjA2LCA4MDY1LCA3MDcxMCwgMTAzNTMsIDEwNDE3LCAxMDA2MTMsIAorICAgIDEyNTAyMywgNjQ1MjQsIDcwNzExLCA0MDE5LCAxMDA5NTAsIDEyNTA4MiwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAKKyAgICAxMDA5NDksIDEyMTA2NywgMTAwOTQ0LCAxMjA5MzksIDQyNDEwLCA3NDQ0OCwgMTAxMDg1LCA2MDU0LCAxMDY5NywgMzE2OSwgCisgICAgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMTI4MjMxLCAxMjgxMzksIDk4MzI2MywgNjg2NzgsIDc0OTg2LCAKKyAgICA5ODM3OTAsIDEwNDksIDQzNTE3LCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIAorICAgIDY0NzYwLCAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgCisgICAgMzYsIDAsIDUxNTMsIDQxODA1LCAxMTkxNTMsIDczNzM1LCA3NjMsIDkyMTEsIDY0OTEwLCAxMjEzODksIDIwMDksIDAsIAorICAgIDEyNzk4NSwgNzQyNDUsIDk2NDAsIDExOTk1MSwgMTI3MzE2LCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgCisgICAgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIAorICAgIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgCisgICAgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIAorICAgIDk4Mzk2MywgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAxMDEwOTIsIAorICAgIDY1NTA2LCAxMTkyNDgsIDY1ODYxLCA3NDA4MywgNjY4NzIsIDk5MzIsIDQzNTE2LCA4MzA2MywgODMwNjUsIDgzMDY0LCAKKyAgICA5ODE3LCAxMDA5MzcsIDcxMjM0LCA3MDc0OSwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIDkwNjMsIAorICAgIDEyNzA0NSwgMTI4NTQ3LCAxMTk5NTQsIDExMzY4NSwgMTI4OTcsIDM3OTIsIDIwMTEsIDEyMTQxOCwgNjA2NSwgNDMxNjAsIAorICAgIDEyODM3OSwgMTIwNTk1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgNDExODcsIDExNjU5LCA3OTIyLCAKKyAgICAxMjYxNCwgMjAwNSwgODUyMywgNzI4NTIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgMTIwMDMwLCA1OTU2LCA3NjIxLCAKKyAgICA3ODAwNSwgOTI2MjQsIDQ3MDUsIDcxNiwgNzQ5MTgsIDk4MzQ1MywgNDcwNCwgMTIwMDQwLCA5MzAyNCwgNDIyNDEsIDE2MSwgCisgICAgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIDExOTA2NSwgCisgICAgNDMyOTMsIDY4NzcxLCAxOTUwMzAsIDExOTE2NCwgMTAwNzcwLCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgODMzMTUsIAorICAgIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgNzI4MjMsIDg1MDYsIDExMzc0NCwgMTk0ODEyLCAKKyAgICAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDEyMTM1MCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgNDcyOSwgCisgICAgOTgzMzkzLCAyMzUsIDEzODQsIDQ3MjgsIDc0ODg3LCA3MDQ5NCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgMTI4NjIzLCAKKyAgICA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDkyNTQ4LCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAKKyAgICAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAKKyAgICAyNjc0LCAxMzIzOCwgMTE5MjIsIDEyODQwOSwgOTI1MjksIDM1MTAsIDEzMjM0LCAxMjkzNjgsIDEyMDQwNywgNTYwNSwgCiAgICAgNDIwOTUsIDExMzY0LCA5MjI4NiwgMTM4MCwgNjU2MTcsIDExMTYyLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAKICAgICA2NzcwOCwgOTQ5NSwgMTE5MzQ2LCAxMjcxNTQsIDU5NTksIDY3OTg0LCA3Mzk3NiwgNjYyNzUsIDQzMzcxLCA2OTQxLCAKICAgICAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgODI5NTIsIDQ3NzksIAogICAgIDk4MzkyMiwgMzcxOSwgNDAwNiwgOTgzNTY5LCAxOTk1NywgNzExODYsIDIwMjEsIDExOTMzMiwgNDM4NzcsIDgzMTQwLCAKICAgICA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCAKLSAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIAotICAgIDEyODc1MywgOTgzOTU4LCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3OTQsIDk3NDIsIDUyMSwgMCwgMTA4MDAsIAotICAgIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgCi0gICAgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCA2NzI2MSwgMTAwNzQsIDc4NTQ4LCAKLSAgICA5Mzk5OSwgMzc2OSwgMCwgMCwgMTI4NzAzLCA5ODMxMDcsIDk1NzMsIDkxNzk5OCwgNjUyOTAsIDg4NDksIDExOTI1NCwgCi0gICAgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgCi0gICAgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCA5MjIwMywgOTI5MTUsIDEyNjYxLCA3NjA4LCAKLSAgICAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgCi0gICAgMTM5MCwgNzAxODQsIDE5NDcwNCwgNDIxLCA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCAKLSAgICA3NjAwLCA3NDQwMCwgNjYwMzUsIDE5NTA5MSwgMCwgNjU4NTEsIDQyNjA3LCAxMjQ5NTUsIDkyNDAzLCAzMTY4LCA2NzczMywgCi0gICAgNDIxMzQsIDExODMxLCAyMzcwLCAyODQ2LCA5MjYwNSwgMTI4MDg0LCAwLCAxMjAxMzIsIDEyNzc0NSwgMTgzNiwgMCwgCi0gICAgMTIxMjA3LCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAKLSAgICAxMTkwMDYsIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgMCwgODEyNywgODk3NSwgNjQ3MzksIAotICAgIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAKLSAgICAxMjc3NTAsIDQzNTA4LCA2MjA0LCAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAKLSAgICAxMjAxMzAsIDQyNjcsIDE2MzEsIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTUwNDYsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIAotICAgIDAsIDkyODg3LCAxMjY1ODgsIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAKLSAgICA5ODM3OTcsIDc3OTMsIDc4Mjc1LCA5MzI4LCAxMTkxMDQsIDc4MzkzLCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIAotICAgIDkyMzQ0LCAzOTg2LCA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMzNjAsIDk1NDEsIDc4Mjc2LCAKLSAgICAxMTM2NjksIDExMjc1LCA4NTQwLCAxMTQ5OCwgMTIwODY4LCA5ODMzNTksIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEzMDYwLCAKLSAgICA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIAotICAgIDM3NjUsIDkyODgxLCA5MTc2MTIsIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMjgwNDAsIDk4MzA2MSwgCi0gICAgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCAKLSAgICA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIAotICAgIDY2NjYwLCAyNDk5LCA2NzE2NywgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCAKLSAgICA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgCi0gICAgMzEyMCwgOTc5NywgMCwgMCwgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgCi0gICAgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDEyMTE2MCwgOTgzMTA2LCAKLSAgICA3MDA0LCAxMTM2NjcsIDY1ODgwLCAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIAotICAgIDc4ODQxLCA4MzQwMiwgMCwgNTE5NywgNzA4MzksIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDExOTYwNCwgCi0gICAgNzA4MzcsIDEyMDA0NSwgMCwgMTI4NTU0LCAwLCA5MTc4NDYsIDAsIDAsIDAsIDc0MTg4LCA3MTM0MiwgNzg0NTUsIDc1MDQ4LCAKLSAgICAxMTM2NzUsIDc0OTAwLCAxMjAwNDYsIDEyNzU0MiwgMTIwMDQ5LCA5ODMzNjYsIDE4NDcsIDEyMDk3OCwgMTAzMzksIAotICAgIDk4MzM2NywgNDIzODQsIDEyMTM3OSwgNDIyNywgNzQxNTgsIDAsIDc0NDk4LCA0MzAzMiwgMTIxMTI0LCA0MjM2NSwgMCwgCi0gICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDk4MzM0NiwgMTIwMDUyLCAKKyAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCA3Mjg3OSwgCisgICAgMTI4NzUzLCA5ODM5NTgsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDgzMTM4LCA5NzQyLCA1MjEsIDk4MzkxMSwgCisgICAgMTA4MDAsIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgOTgzOTA4LCA2NDA0MSwgCisgICAgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCAKKyAgICA2NzI2MSwgMTAwNzQsIDc4NTQ4LCA5Mzk5OSwgMzc2OSwgMTI3OTU4LCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgCisgICAgOTE3OTk4LCA2NTI5MCwgODg0OSwgMTE5MjU0LCA2NTg1NSwgNjUxMTIsIDE3OTYsIDcxMDQ2LCA5ODM0MjgsIDY5NjY1LCAKKyAgICA4MTY0LCA0MTMwMSwgMzUwMiwgODMxMzUsIDczODgsIDEwNjIxLCA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgCisgICAgNzI3NDksIDkyOTE1LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCA0MjQxMSwgMjAyMiwgOTgzNDI5LCAxNDA5LCAKKyAgICAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgMTM5MCwgNzAxODQsIDc4NTE1LCA0MjEsIDQzNTM2LCA1ODQ2LCAKKyAgICAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIDc0NDAwLCA2NjAzNSwgMTk0Nzk5LCAwLCA2NTg1MSwgCisgICAgNDI2MDcsIDEyNDk1NSwgOTI0MDMsIDMxNjgsIDY3NzMzLCA0MjEzNCwgMTE4MzEsIDIzNzAsIDI4NDYsIDkyNjA1LCAKKyAgICAxMjgwODQsIDAsIDEyMDEzMiwgMTI3NzQ1LCAxODM2LCAwLCAxMDA3ODIsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgCisgICAgNjUzNzQsIDEwMDc4NSwgMjM5MCwgMzk0NCwgNjY2MjgsIDExOTAwNiwgOTgzOTE2LCA2MTM1LCAzMTE4LCA3NDI2NSwgCisgICAgMTE5MDkzLCA4MzMxMCwgNzc5NzUsIDk4Mzg4OSwgODEyNywgODk3NSwgNjQ3MzksIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAKKyAgICAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAxMjc3NTAsIDQzNTA4LCA2MjA0LCAKKyAgICAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAxMjAxMzAsIDQyNjcsIDE2MzEsIAorICAgIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTQ3NTMsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIDAsIDkyODg3LCAxMTkxNTQsIAorICAgIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCA5ODM3OTcsIDc3OTMsIDc4Mjc1LCAKKyAgICA5MzI4LCAxMTkxMDQsIDcwNjg1LCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIDY2Nzk2LCAzOTg2LCA0NDAyNSwgMCwgCisgICAgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMxOTAsIDk1NDEsIDc4Mjc2LCAxMTM2NjksIDExMjc1LCA4NTQwLCAKKyAgICAxMTQ5OCwgMTIwODY4LCAxMjg1NDAsIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEyNTU4LCA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgCisgICAgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDkyODgxLCA5MTc2MTIsIAorICAgIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMDA3MTgsIDk4MzA2MSwgMTE5NjEzLCA5ODM5MzgsIDE5NDc1NiwgCisgICAgNDMxMiwgNzQwOTEsIDEyMDMzNywgNzQ5ODMsIDExOTIzLCA0MDIzLCA2ODM5OSwgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAKKyAgICAxMjgxMCwgNjQ0MDYsIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgNjcxNjcsIAorICAgIDY3MTY2LCAxMTg4MzcsIDExOTczLCAxMzA4OSwgNDI5MywgMTIwMzI5LCA0MjIyNCwgNDI3NTgsIDEyMTk2LCA0MjgzNywgCisgICAgNDIyMjYsIDExOTMxOSwgMTI3OTkyLCAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIAorICAgIDExMDg2LCAxMDM4OSwgMTI2NDg1LCAxMjg3ODQsIDQ4OTUsIDY1MzU4LCAxMjQ5NDEsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgCisgICAgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTAwNzc1LCAxMjExNjAsIDk4MzEwNiwgNzAwNCwgMTEzNjY3LCA2NTg4MCwgCisgICAgMTI2NTE0LCAxMTkwNDgsIDIzODAsIDExMzgwLCA5ODM4NjMsIDkzOTk2LCAyMzc2LCA3ODg0MSwgODM0MDIsIDk4MzI1NiwgCisgICAgNTE5NywgNzA4MzksIDEyMDI0OCwgMTI3MDQ4LCAyMzY2LCAxMDA3MTMsIDExOTYwNCwgNzA4MzcsIDEyMDA0NSwgMCwgCisgICAgMTI4NTU0LCAwLCA5MTc4NDYsIDEwMDcxNSwgMCwgMCwgNzQxODgsIDcxMzQyLCA3ODQ1NSwgNzUwNDgsIDExMzY3NSwgCisgICAgNzQ5MDAsIDEyMDA0NiwgMTI3NTQyLCAxMjAwNDksIDEwMDc3NCwgMTg0NywgMTIwOTc4LCAxMDMzOSwgMTAwNzcyLCAKKyAgICA0MjM4NCwgMTIxMzc5LCA0MjI3LCA3NDE1OCwgMCwgNzQ0OTgsIDQzMDMyLCAxMDA5MjYsIDQyMzY1LCAxOTQ4MzMsIAorICAgIDEyNjcxLCAxMTM4NCwgMTIwMDU5LCA3NDI2NCwgMTIwMDU4LCA2NDc5NywgOTgzMzQ3LCA1ODIwLCAxMjgwMTgsIDEyMDA1MiwgCiAgICAgMTIwMDY1LCAxMjg4MjUsIDEyMDA2NCwgMTIwMDUzLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIDEyMDA2MywgMTIxMjg2LCAKICAgICA3Mzc3LCAxMjAwNTEsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAxMjExMzIsIAotICAgIDY4NjYwLCAwLCAxMDg1MywgOTI2LCA5ODMzNzEsIDc0MTg0LCAxMjA5MTUsIDEyMDA1NSwgMTE5MzAxLCA0MzE3NSwgMCwgCi0gICAgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgMTE5NjA1LCA1MjAsIDQyMDAsIAotICAgIDEyNjk5LCA4MzMxLCA3MDExOCwgMzA5MSwgNDEwMzQsIDY2Mjk4LCA3MDI5MywgODM2MCwgOTgzNDQ1LCA3ODA0NCwgMzIxLCAKLSAgICA0MjI5LCA2NDU0MywgMTI4NDcwLCA2NTU2MywgMTk0ODczLCA5MTc5NzQsIDI4NjEsIDQzNzkzLCAxMDA5NSwgMTIxNDI4LCAKLSAgICA5MTk1LCA5MjM4NiwgMTg2MSwgMCwgNzM3MzMsIDkxNzc4MCwgNjg4MzksIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAKLSAgICAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIDcwNzkzLCA3Mzg2NywgMTI5NzMsIDc1MDE0LCA3NDc1NywgMTI3NTE0LCAKLSAgICA0MTY1OCwgMTI4Mzc2LCAxMjEyMzUsIDU3NjAsIDExMzY5OSwgNzQzLCA0NDE0LCAxMjA3NjYsIDAsIDQyNjMyLCAxMjcyMzYsIAotICAgIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAwLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCA0MzM0MSwgMCwgMTk5MTksIDcwMjc4LCAKLSAgICA2NDUzMiwgNjUzNjcsIDQzNzEwLCAxMTE5OSwgMTI1MDc3LCAzNTEzLCA3MTExNSwgNzAzNDEsIDQzMzQyLCAxMTkwNjQsIAotICAgIDY1NTI5LCA2NTM2NCwgODMyMDgsIDgzMTcwLCA2NDg1LCAxMzk3LCAxOTQ3ODEsIDQxOTg2LCA5MjY3OCwgODMyMDQsIAotICAgIDgzMjEyLCA3NDA5NywgODMyMTMsIDc0NzEsIDEyMDc5LCA2Nzk5NywgNjg0MywgNDMyODcsIDkyMzE3LCAwLCA2NzQwNiwgCi0gICAgMTIwMjM5LCAxOTQ2NzgsIDcxOTE0LCAxMDk5LCAxMDQ5MCwgODMyMDEsIDEwNTAxLCA2NTE4MSwgNzQ0NjMsIDEyODk1MiwgCi0gICAgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgMTk0NjA5LCA2NTY3OSwgNjQ1NzMsIDY0ODk3LCA0MjMsIAotICAgIDE4MTgsIDY1MTQ0LCA4Mjk2MywgODI3MiwgMTI3ODEyLCAxOTkxMSwgNDIxOCwgMzA4NywgNjQ5NjAsIDEyMTQ0NywgCi0gICAgNDM1NjQsIDAsIDk4MzE4MiwgOTU4NCwgMTA0NjUsIDk4MzkwMiwgNzQzNTksIDEyNjI2LCA5MTA2LCAwLCA0MjY0MiwgCi0gICAgNzEyMzUsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMTk0NzMwLCAxMjgzMzMsIDI2NSwgNDE3OTUsIDY0NjY2LCA3NDYyOCwgCi0gICAgNDM1MzAsIDI3NTIsIDEyNzM2NSwgMTI4NDU5LCAxMjY0ODIsIDU5LCA5ODM2NzEsIDEyMTQxMCwgMTExNDksIDc4MDc0LCAKLSAgICA3Nzg3MywgNDE4MTAsIDgzMTYyLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIDExOTM2NCwgNTg3NywgNDIyNTIsIDQyMjEzLCAKLSAgICA4MDA5LCAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNDM4NDgsIDEzMTI3LCAxMjAwNjcsIDk4Mzk0NiwgNzQzOTcsIAotICAgIDEyMDIzNSwgMTI4NjQxLCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCA3NTAxNywgMjEwMywgMTAzODcsIDQ0NTMsIAotICAgIDQzMjc2LCA5MTc3ODMsIDExMTY5LCAxMjg5MzksIDY0ODEsIDQxMjEzLCAwLCAwLCAxMjkxMzMsIDExOTkyOSwgNDE5ODMsIAotICAgIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDkyOTk1LCA0NjIsIDY4MTEwLCAxMDQ5MywgMTIxNDQ5LCA4MTI5LCA5Mjk5NCwgCi0gICAgMTI4MzY1LCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIAotICAgIDExOTAxMywgNDMzNDAsIDExMTIzLCA0MTAzMywgNjQ5MywgNDI2MjYsIDAsIDEyOTA1MSwgMTE0MjYsIDc3ODg3LCAxNjgxLCAKLSAgICAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgMCwgNDE4NDEsIDQzMzM4LCAwLCAKLSAgICAxMTkzMjMsIDU3MjYsIDY0OTE1LCA0MjE3NSwgOTgzOTEzLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgMjg1MSwgNDMwMTcsIAotICAgIDk4MzU4OSwgMTIwODk2LCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAwLCA2NTM2MCwgCi0gICAgOTE3NTg5LCA5MjM2NSwgMTI4MjAyLCA2NDkyMiwgMCwgODE5MCwgMTIwODMsIDAsIDgzMTQxLCA2NTA2LCA2NDMxMiwgCi0gICAgNzQzNzQsIDIzNjgsIDk4MzE4NywgNDQxOSwgMTIxMjU5LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEyMDEwNiwgCi0gICAgODg5MSwgMzA4MCwgMTIwMjI4LCAyMzQ3LCA1NDMwLCAxMjAxMDcsIDg5OTAsIDI4NDgsIDkyOTgxLCAxMjEzNzIsIDczOTQyLCAKLSAgICAyNDksIDAsIDAsIDAsIDEyMDY1OCwgMTE5MzI0LCAxMjg3MTIsIDg4ODMsIDExOTg2MCwgNzI4LCAxMTE3MywgOTk1LCAwLCAKLSAgICAxMjEwNDcsIDY0ODI2LCAxMjQ5MzEsIDkxNzc5OCwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgCi0gICAgMTk0ODE0LCA2NzcxNCwgMTIxMTIsIDY3MjcyLCA2NzI2NSwgNjcyNzMsIDY3Mjc0LCAxMjMzNSwgMTIwMTA0LCA2ODAxOSwgCi0gICAgMzQ0MywgMzEyOSwgNjcyNjcsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCAxMTEyMCwgCi0gICAgOTIwNSwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMTI4NTE5LCA0MTg5NCwgMCwgNjI3NywgNDE2NzIsIDQxODkzLCAKLSAgICAxMDAxMCwgMTI3MzgxLCAzNTQwLCAxMjE0NTAsIDgzNSwgNzEzNDAsIDY5ODE2LCAxMTk4NTQsIDc0NDA4LCAwLCA2NzEwOCwgCi0gICAgNTQyNiwgNDI1OCwgODMxODgsIDEyMDg1OCwgNTQyNCwgOTIzMDYsIDgyODMsIDEyNzk3OCwgNTQzNCwgODMxOTYsIAotICAgIDEyOTAyNywgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMTI4MzMwLCAxNDA0LCAzMDk1LCAxMTQzMiwgMTIxMTIyLCAzNDY0LCAKLSAgICA2NDg2LCA0ODE5LCAxMjgyMzMsIDEyOTEyMywgNTcwLCA4MDk1LCAzNjcyLCAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAKLSAgICAxMjg1MzksIDQzMSwgNjc4MjAsIDAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgOTgzNjYzLCAxMzA5NiwgMTI4NjQzLCAKLSAgICAxMjEwMTgsIDQzNDA4LCA5NTE2LCAxMjg1MzgsIDUyNjgsIDQyMjMwLCA0MjIyMCwgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgCi0gICAgNDM0MTcsIDEyODU0MiwgMzU2LCAzNDc3LCAyMjcsIDEwNDg4LCA2ODIwMywgMzgyLCAxMTQxOCwgMCwgNTg3OCwgOTgzNzk5LCAKLSAgICAwLCAwLCAwLCA2NDg0LCAyNTQxLCA2NjAzOSwgMTEzNzc3LCA3ODE1NywgOTI3MjMsIDM1NDksIDE5NTA2NywgOTExMCwgCi0gICAgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTI4NTg1LCA5MDk3LCAxOTUwMjYsIDQzMDE1LCA4NzgyLCAwLCA3NzYsIDI1MjQsIAotICAgIDQyNzA3LCA4NTczLCAxMjA5MDMsIDEyNjQ5NCwgMCwgNzExMDIsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgMTE4ODE4LCAKLSAgICAxMjUxMTEsIDU4NzIsIDY0OTUsIDEyOTEyNSwgMCwgMCwgOTI1NDMsIDY3MTczLCA2NzE3MiwgMTI4NDksIDM5NTMsIDE4OTcsIAotICAgIDkzMDcxLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDExOTA4NywgNjg0NzMsIAotICAgIDc0MTA0LCA1MjI4LCAxMTk4MzUsIDc4NjgsIDQzMTg0LCAwLCAxMjA5NTUsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIAotICAgIDkxNzU1MywgMTE2MiwgNzQ5OTUsIDI2NzEsIDEyODU2NywgMTI3MTk4LCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgCi0gICAgNzM4MTEsIDk4MzU3MywgMTk1MDA1LCAxMTg5MjgsIDY4MDg1LCAxOTkyMSwgNzM4MjEsIDExNDI0LCAxOTUwMDIsIDQ1NjcsIAotICAgIDQxODkxLCAwLCA5ODM3ODgsIDU1MjQ5LCA0ODIwLCA2NTIzOSwgMTk0NjYyLCAwLCAxOTQ2NjUsIDQzMDQyLCAxMTkyMTIsIAotICAgIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgNzAyNzIsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgCi0gICAgMTk0OTQxLCA0MzI4MiwgODgzMywgNjk5OTgsIDAsIDY1MDQsIDc4NDA4LCAxMjExNjYsIDEwNzE5LCA3MDI3NSwgMTg5OCwgCi0gICAgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDEyMTEzOCwgODMwOTcsIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgCi0gICAgOTE2OSwgODM4LCA2ODgxOSwgNjg4MDcsIDg0NCwgNTAxNCwgNjYyOTcsIDI1NiwgNjg4MTgsIDk5OTAsIDEyODM5OCwgCi0gICAgNDI3MzksIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDgzMjI0LCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCAKLSAgICA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTIxMzE0LCA4MzIyNiwgNDEwOTQsIDAsIDc3OTU4LCAxOTQ4OTMsIAotICAgIDc4NDAzLCA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDEyMDk0MiwgNjcwOTUsIDEyMDQ5MSwgMTE4MTYsIDY4ODQ2LCAKLSAgICA1NzMzLCAyOTMwLCA3MDI3NCwgMTI3MTc5LCA0MTA5OCwgOTI3NzEsIDQxMDkzLCA2ODgzNCwgNjY2MjYsIDU4OCwgOTc2MCwgCi0gICAgMTI1MDk5LCAxOTQ3MTcsIDEyMzgsIDIwMCwgOTgzMjA3LCAxNjYwLCA3MzkxNiwgMCwgNjcxNDEsIDc0MzYyLCAwLCAKLSAgICA5MjQ4NSwgMTI0OTMwLCAwLCA3NDk5OSwgMzM5NCwgMTk0ODk0LCAxMjA2NjgsIDAsIDY5OTk2LCAxMjczNTgsIDY2MjE5LCAKKyAgICA2ODY2MCwgMCwgMTA4NTMsIDkyNiwgOTgzMjk2LCA3NDE4NCwgMTIwOTE1LCAxMjAwNTUsIDExOTMwMSwgNDMxNzUsIAorICAgIDEyNzEwMywgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDEwMDQ5OCwgMTE5NjA1LCA1MjAsIAorICAgIDQyMDAsIDEyNjk5LCA4MzMxLCA3MDExOCwgMzA5MSwgNDEwMzQsIDY2Mjk4LCA3MDI5MywgODM2MCwgOTgzNDQ1LCA3ODA0NCwgCisgICAgMzIxLCA0MjI5LCA2NDU0MywgMTI4NDcwLCA2NTU2MywgMTAwNzY0LCAxMjkzMTAsIDI4NjEsIDQzNzkzLCAxMDA5NSwgCisgICAgMTIxNDI4LCA5MTk1LCA3Mjc2NywgMTg2MSwgOTgzMDU2LCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAKKyAgICAxMDA3NjksIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAKKyAgICAxMjc1MTQsIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIAorICAgIDEyNzIzNiwgNjUxNjEsIDczODk2LCAxMjg1ODksIDEwMDU5MywgMTQwNSwgMTE5MDYzLCA0MzIyMCwgNDMzNDEsIDE5NDc5MiwgCisgICAgMTk5MTksIDcwMjc4LCA2NDUzMiwgNjUzNjcsIDQzNzEwLCAxMTE5OSwgMTIxNDAwLCAzNTEzLCA3MTExNSwgNzAzNDEsIAorICAgIDQzMzQyLCAxMTkwNjQsIDY1NTI5LCA2NTM2NCwgODMyMDgsIDgzMTcwLCA2NDg1LCAxMzk3LCAxOTQ3ODEsIDQxOTg2LCAKKyAgICA5MjY3OCwgODMyMDQsIDgzMjEyLCA3NDA5NywgODMyMTMsIDc0NzEsIDEyMDc5LCA2Nzk5NywgNjg0MywgNDMyODcsIAorICAgIDkyMzE3LCAwLCA2NzQwNiwgMTIwMjM5LCAxOTQ2NzgsIDcxOTE0LCAxMDk5LCAxMDQ5MCwgODMyMDEsIDEwNTAxLCA2NTE4MSwgCisgICAgNzQ0NjMsIDEyODk1MiwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgMTk0NjA5LCA2NTY3OSwgCisgICAgNjQ1NzMsIDY0ODk3LCA0MjMsIDE4MTgsIDY1MTQ0LCA4Mjk2MywgODI3MiwgMTIxMjAzLCAxOTkxMSwgNDIxOCwgMzA4NywgCisgICAgNjQ5NjAsIDEyMTQ0NywgNDM1NjQsIDk4Mzc0OSwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIAorICAgIDkxMDYsIDk4MzA2NCwgNDI2NDIsIDcxMjM1LCA2NDc1MCwgOTM5MCwgMTIwNzM3LCA0MTc5NywgMTk0NzMwLCAxMjgzMzMsIAorICAgIDI2NSwgNDE3OTUsIDY0NjY2LCA3NDYyOCwgNDM1MzAsIDI3NTIsIDEyNzM2NSwgMTI4NDU5LCAxMjY0ODIsIDU5LCAKKyAgICA5ODM0MjcsIDEyMTQxMCwgMTExNDksIDc4MDc0LCA3Nzg3MywgNDE4MTAsIDgzMTYyLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIAorICAgIDExOTM2NCwgNTg3NywgNDIyNTIsIDQyMjEzLCA4MDA5LCAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNDM4NDgsIDEzMTI3LCAKKyAgICAxMjAwNjcsIDk4Mzk0NiwgNzQzOTcsIDEyMDIzNSwgMTAwODM1LCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCA3NTAxNywgCisgICAgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIDExMTY5LCAxMjg5MzksIDY0ODEsIDQxMjEzLCAwLCAxMDA4MzksIAorICAgIDEyOTEzMywgMTAwODM4LCA0MTk4MywgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIAorICAgIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAKKyAgICAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMTAwNDU3LCAxMTkwMTMsIDQzMzQwLCAxMTEyMywgNDEwMzMsIDY0OTMsIAorICAgIDQyNjI2LCAwLCAxMjkwNTEsIDExNDI2LCA3Nzg4NywgMTY4MSwgMTE4Nzg5LCAxMjA0LCAzNzU1LCA2NDY2MSwgNzIzNSwgCisgICAgMTAxNzAsIDM5NjYsIDg5MTEsIDEwMTAxMywgNDE4NDEsIDQzMzM4LCAxOTQ5NTQsIDEwMDg0OCwgNTcyNiwgNjQ5MTUsIAorICAgIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTAwODQ0LCAyODUxLCA0MzAxNywgMTAwNDg0LCAxMjA4OTYsIAorICAgIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAxMDEwMTIsIDkyMzY1LCAKKyAgICAxMjA5MzcsIDY0OTIyLCAxMDA0ODYsIDgxOTAsIDEyMDgzLCAwLCA4MzE0MSwgNjUwNiwgNjQzMTIsIDc0Mzc0LCAyMzY4LCAKKyAgICA5ODMxODcsIDQ0MTksIDEyMTI1OSwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMDA0ODgsIDg4OTEsIDMwODAsIAorICAgIDEyMDIyOCwgMjM0NywgNTQzMCwgMTAwNDg3LCA4OTkwLCAyODQ4LCA5Mjk4MSwgMTIxMzcyLCA3Mzk0MiwgMjQ5LCAKKyAgICA5ODMwNDAsIDkxNzg2OSwgOTgzODI1LCA3NDgxNCwgMTE5MzI0LCAxMjg3MTIsIDg4ODMsIDExOTg2MCwgNzI4LCAxMTE3MywgCisgICAgOTk1LCAwLCAxMDA2NTcsIDY0ODI2LCAxMDA2NTYsIDEyOTM3MSwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAKKyAgICAxMjkxMzQsIDEyMjczLCAxMjkxNTYsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAKKyAgICAxMjAxMDQsIDY4MDE5LCAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMTk1MDY5LCAKKyAgICA3NzI1LCAxMTg0MywgMTExMjAsIDkyMDUsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDEyODUxOSwgNDE4OTQsIDAsIAorICAgIDYyNzcsIDQxNjcyLCA0MTg5MywgMTAwMTAsIDEyNzM4MSwgMzU0MCwgMTAwODI3LCA4MzUsIDcxMzQwLCA2OTgxNiwgCisgICAgMTE5ODU0LCA3NDQwOCwgMCwgNjcxMDgsIDU0MjYsIDQyNTgsIDgzMTg4LCAxMDA3NTgsIDU0MjQsIDkyMzA2LCA4MjgzLCAKKyAgICAxMjc5NzgsIDU0MzQsIDgzMTk2LCAxMjkwMjcsIDE5OTE3LCAxMTQwOCwgMTI3MzkyLCAxMTk0NywgMTI4MzMwLCAxNDA0LCAKKyAgICAzMDk1LCAxMTQzMiwgMTIxMTIyLCAzNDY0LCA2NDg2LCA0ODE5LCAxMDA3NTksIDEyNzQwNCwgNTcwLCA4MDk1LCAzNjcyLCAKKyAgICAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAxMjg1MzksIDQzMSwgNjc4MjAsIDc4MDgwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIAorICAgIDk4MzQ1OSwgMTMwOTYsIDEyODY0MywgMTIxMDE4LCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIAorICAgIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgCisgICAgMTE0MTgsIDEyMDY4MSwgNTg3OCwgOTE3ODYwLCAwLCAwLCAxOTQ4NzcsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIAorICAgIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAxMTk2NjUsIDI3NDMsIDEyMTQzMiwgNDMyOTAsIDEyODU4NSwgCisgICAgOTA5NywgNzQzNzksIDQzMDE1LCA4NzgyLCAwLCA3NzYsIDI1MjQsIDQyNzA3LCA4NTczLCAxMjA5MDMsIDEwMDY2NiwgMCwgCisgICAgNzExMDIsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgMTE4ODE4LCAxMDA2NjIsIDU4NzIsIDY0OTUsIDEyOTEyNSwgCisgICAgMTI3NDY3LCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgOTMwNzEsIDY1MDk0LCAxMTk5NCwgCisgICAgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMTI4OTQ2LCAwLCAxMTkwODcsIDY4NDczLCA2Njc3OCwgNTIyOCwgMTE5ODM1LCAKKyAgICA3ODY4LCA0MzE4NCwgMCwgMTIwOTU1LCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCA5MTc1NTMsIDExNjIsIDc0OTk1LCAKKyAgICAyNjcxLCAxMjg1NjcsIDEyNzE5OCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIDczODExLCA5MTc5NDcsIDExMzcyMywgCisgICAgMTE4OTI4LCA2ODA4NSwgMTk5MjEsIDczODIxLCAxMTQyNCwgMTk1MDAyLCA0NTY3LCA0MTg5MSwgMTI3MDA0LCA5ODM3ODgsIAorICAgIDU1MjQ5LCA0ODIwLCA2NTIzOSwgMTI5MzM4LCAwLCAxMDEwNDMsIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCAKKyAgICA0MjgyMSwgOTI1MCwgNzAyNzIsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTI4NjExLCA0MzI4MiwgCisgICAgODgzMywgNjk5OTgsIDAsIDY1MDQsIDc4NDA4LCAxMDA2ODgsIDEwNzE5LCA3MDI3NSwgMTg5OCwgMTQxMywgNDI0NDMsIAorICAgIDk4MzM4NywgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDcyODgwLCA2NDc4OSwgOTE2OSwgCisgICAgODM4LCA2ODgxOSwgNjg4MDcsIDg0NCwgNTAxNCwgNjYyOTcsIDI1NiwgNjg4MTgsIDk5OTAsIDEyODM5OCwgNDI3MzksIAorICAgIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDgzMjI0LCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCA2NjU3MywgMCwgCisgICAgNzg3MjQsIDc4NzEyLCAxMTc2MSwgNzA2NjUsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDExOTkxOCwgNzg0MDMsIDkyNjg5LCAKKyAgICA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIDU3MzMsIDI5MzAsIAorICAgIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAxMDA1NjgsIAorICAgIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDk4Mzc4NCwgOTI0ODUsIAorICAgIDEyNDkzMCwgMCwgNzQ5OTksIDMzOTQsIDcwNzM0LCAxMjA2NjgsIDEwMDQ3NywgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAogICAgIDcyNDI1LCA0MzI4NCwgNjgwNzIsIDc4MTcsIDE4NDEsIDExMDU1LCA2NjgzNSwgMTk0OTc5LCA3NDYwNywgMTY2OSwgCi0gICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5ODAsIDk4MzQ1MCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCi0gICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgOTgzODQ1LCAKLSAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgNzE5MDgsIDEyMDA5LCAxMjM5OSwgMTIxMjE3LCAKLSAgICA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDcwMTIzLCAKLSAgICA2NTMxNywgNzc4ODAsIDAsIDU4NzYsIDcwMzc0LCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIDcxODYyLCAKLSAgICAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgMTI2NTYyLCA5ODMxMjksIDAsIAotICAgIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCA2ODAzMywgMTE5NzUsIDE5NDg3OCwgCi0gICAgMCwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCA4MzEwOCwgCi0gICAgMTIwMjQxLCAxMjgxNjQsIDAsIDAsIDk4MzU1MywgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCAKLSAgICA2NTU5NiwgNjc4MzcsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAxMTE1NywgCi0gICAgNzQzODYsIDEyNzI3NCwgODIzMywgMTI4MjAsIDk4MzczMCwgNjY4MywgMTI1MTEyLCAzNDQyLCAxMjE0NCwgMjg0MSwgCi0gICAgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCA2NDMyOSwgMTIwODgwLCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgCi0gICAgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgOTgzMzg1LCA0NDM0LCAKLSAgICAxMDY5LCAxOTQ3ODQsIDExODg2MiwgNjU3MzcsIDEyMTIwMiwgMTI4NzA1LCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIAotICAgIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgCi0gICAgOTE3NzcwLCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgMTIxMTU5LCAxMTg4MzMsIDkyMzcyLCA3MDQyNCwgNzQ4MzAsIAotICAgIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgCi0gICAgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCAKLSAgICA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgCi0gICAgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgCi0gICAgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDk4MzU3NywgNDQyOCwgMTI3OTQsIDczNzU1LCAxMjgwNjEsIDc4NTc0LCAwLCAKLSAgICAxMTExNiwgNDM4NDIsIDU3NDcsIDc4ODI1LCA3MDQ3MSwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIAotICAgIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAxMjk0MTIsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgOTE3ODYwLCAKLSAgICAxMTkwNDMsIDkxNzYxOCwgOTQwNTEsIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3MDM5MiwgCi0gICAgNjQ1MzcsIDEyNzkxNCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgCi0gICAgODc1NywgNzg4MjQsIDc4MTg4LCAxNTc0LCA3MzgxLCAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAKLSAgICAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTI5MTU2LCA2OTcyNSwgOTA1NSwgCi0gICAgNDE4NTMsIDQ4NTgsIDc1MDAwLCA5MTc5OTAsIDQzNiwgNDc3MSwgOTE3OTM2LCAyNzg2LCA5MzAyOCwgNDg1NiwgODA1MSwgCi0gICAgOTI1MDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDcxMTMzLCAxMjUwMDksIDEyODg3MywgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCAKLSAgICA2ODA4NCwgOTgzMzYxLCA3MzkwNiwgNjc0MDksIDEyNzExNCwgOTE3OTE2LCAxMDIzNCwgNTg0MywgMTE5MzksIDcwMzQ2LCAKLSAgICA0MjE1NywgMCwgMzE1NywgMTk0NjU5LCA2ODM5MywgNzUwMzUsIDM1MDQsIDcwNDIyLCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAotICAgIDEwMjI2LCA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAKLSAgICAxMjE0NjcsIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMjc3OTIsIDcwMTEzLCA3MjIwLCAKLSAgICAxMTgzOSwgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxOTQ3NTMsIAotICAgIDEyMTI3NiwgMCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgCi0gICAgMTI4NDc0LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgMTI3MTEwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKLSAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgNjg3NDUsIDI2NzIsIAotICAgIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAKLSAgICAxMjgzNzMsIDk0ODcsIDExOTk1OSwgNjg3ODUsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIAotICAgIDExOTM0NCwgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKLSAgICA3MDAwNiwgMTk0NjkwLCAxMjc1MzcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAotICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMjEwMjEsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgCi0gICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgOTgzNzc2LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIAotICAgIDEyNzk0MiwgNzUwMDYsIDE5NDcxMCwgNjc4MTgsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0NzgsIDE5NTA3MCwgCi0gICAgNjQ3MiwgNjU4MTQsIDcxOTE5LCAxMjEyMTgsIDQ3MjQsIDEyODQ5MSwgMTk1MDQxLCA5MTkxLCAxOTQ2NDUsIDY0NDMyLCAKLSAgICAxMjAyNzAsIDgyOTg3LCAxMTkxOTAsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgCi0gICAgNzE4NzIsIDY2NzksIDc0NDEyLCA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc4NTkxLCAKLSAgICAxMTM3MzMsIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgCi0gICAgMTI4MjUyLCA0Mzg3NCwgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAKLSAgICAxMjg4NDUsIDEyMDgwOSwgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCAKLSAgICA5MjQ0NCwgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgCi0gICAgMTY3NywgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIAotICAgIDEwMTYwLCAwLCAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgCi0gICAgNjQ5MTYsIDY0NzM2LCAxMTg4MzUsIDAsIDY0NjU1LCA5ODMwNTMsIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIAotICAgIDk4MzIzMSwgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyNzA0MSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAKLSAgICAxMjk5NCwgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIAotICAgIDgzMDc5LCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCAKLSAgICA4ODQxLCA5ODM3NDcsIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgCi0gICAgNzQzMzMsIDEyMDE4MiwgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIAotICAgIDY1ODQsIDc3NDksIDExMDM3LCAxMjg3NDMsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAKLSAgICAxOTM1LCAxMTUxNywgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIAotICAgIDY0NzAyLCAxMjY0MywgODI1LCAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIAotICAgIDc4ODMzLCAxMjYzMSwgNzE4NzEsIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDEyNzE5OSwgMTEzMTMsIAotICAgIDE5NDgwMywgMzQwMywgOTgzNjU1LCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTIxMjgyLCA3MjQzMSwgODk5OCwgMTI5ODgsIAotICAgIDExOTk4MywgOTE1MiwgOTIxNjEsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgOTIzOTMsIDEyNjE1LCAKLSAgICAxNTk0LCA0MjE5MiwgNjkxNCwgNjYzOTIsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIAotICAgIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIAotICAgIDI0NzcsIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MiwgCi0gICAgMTIwNTQzLCAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMCwgCi0gICAgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc3OTA3LCAxMTU4OSwgCisgICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5NzYsIDEwMDQ3NCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCisgICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgMTk1MDEzLCAKKyAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCA5ODM5NTMsIDExODE5LCA3MTkwOCwgMTIwMDksIDEyMzk5LCAKKyAgICAxMjEyMTcsIDY3ODUyLCA2NTUzNywgNzgwMDIsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIAorICAgIDcwMTIzLCA2NTMxNywgNzc4ODAsIDk4MzE5OSwgNTg3NiwgNzAzNzQsIDEyMzA0LCAxMjkzNTUsIDAsIDY1MzE1LCA5MjY3MCwgCisgICAgMTI4NTExLCA3MTg2MiwgMCwgMTI3OTU3LCAxMTk2MjEsIDExMTE0LCA3MTkwOSwgMTI0NDcsIDY0NDg2LCAxMjEyMzYsIAorICAgIDEyNjU2MiwgOTgzMTI5LCAwLCAxMjEzOTMsIDk4MzgwMiwgNDI3NjcsIDEwOTE1LCA5ODMxNzQsIDEyMDA3LCA0MzY5NSwgCisgICAgNjgwMzMsIDExOTc1LCAxMDEwMTAsIDEyODc0NSwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCAKKyAgICA0MzcwNiwgNDQ5NiwgMTAwNjkyLCA4MzEwOCwgMTIwMjQxLCAxMjgxNjQsIDEwMDY5MSwgMCwgOTgzNTUzLCA2NDczMCwgCisgICAgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIDY1NTk2LCA2NzgzNywgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAKKyAgICAxMjc4NCwgNzc5MiwgMTM5MywgNzgxOTEsIDExMTU3LCA3NDM4NiwgMTI3Mjc0LCA4MjMzLCAxMjgyMCwgMTAwODQ3LCAKKyAgICA2NjgzLCAxMjUxMTIsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgMTAwNjk5LCAxNDczLCA0MjgyMCwgNjQzMjksIAorICAgIDEwMDgxNiwgNjcyNDMsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCA3MjQxNywgNDExMDQsIDk0MDAzLCAzNDA2LCAKKyAgICAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDExMzc2OSwgNDQzNCwgMTA2OSwgMTk0Nzg0LCAxMDA3MDMsIDY1NzM3LCAKKyAgICAxMjAxMjksIDEyMDMwMiwgMCwgODMyMTEsIDk2OTMsIDQxOTQzLCA2ODMwNSwgNDE5MzEsIDQxNzU5LCAxMjc1NywgNDM1MywgCisgICAgOTgzMzUzLCAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDkxNzc2OSwgNjU5MzcsIDc4NTcyLCA0MTc1OCwgMTA2NDYsIAorICAgIDEwMDY2NSwgMTE4ODMzLCAyMjY4LCA3MDQyNCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIAorICAgIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIAorICAgIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCAKKyAgICA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIAorICAgIDQxNzgzLCA0MTc4NiwgNzA2NjMsIDEyNzk3LCAyNzU1LCA2NDU3MSwgNzg1NzgsIDEyNzk5NCwgNDg1NywgOTgzNTc3LCAKKyAgICA0NDI4LCAxMjc5NCwgNzM3NTUsIDEwMDcyMiwgNzg1NzQsIDAsIDExMTE2LCA0Mzg0MiwgNTc0NywgNzg4MjUsIDcwNDcxLCAKKyAgICA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgNDIxNDQsIDY1MDE1LCAxMDA3MjUsIDU2MywgMCwgCisgICAgMTAwNzk1LCAxMjc5OCwgMTEyNzEsIDU3LCA5MjcxNywgODM0OTUsIDEwMDcyNywgMTE5MDQzLCA3MTI2OCwgOTQwNTEsIAorICAgIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMTI4NzIwLCA4MzI3MywgMCwgNzAzOTIsIDY0NTM3LCAxMjc5MTQsIDI3NywgCisgICAgNzQzODUsIDcyMjksIDEyNzYxLCA5ODMxNDUsIDc0NDY2LCAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCA3ODE4OCwgCisgICAgMTU3NCwgNzM4MSwgMTk0NjE2LCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAxMjA1NzQsIDEwMzksIAorICAgIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTAwNjYxLCA2OTcyNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIAorICAgIDc1MDAwLCA5Mjg5NiwgNDM2LCA0NzcxLCA5MTc5MzYsIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCA5MjUwMCwgMTE5NjA5LCAKKyAgICA3MTMyNywgOTY0NCwgNzExMzMsIDEyNTAwOSwgMTI4ODczLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDY4MDg0LCA5ODMzNjEsIAorICAgIDczOTA2LCA2NzQwOSwgMTI3MTE0LCA5MTc2MTQsIDEwMjM0LCA1ODQzLCAxMTkzOSwgNzAzNDYsIDQyMTU3LCAwLCAzMTU3LCAKKyAgICAxOTQ2NTksIDY4MzkzLCA3NTAzNSwgMzUwNCwgNzA0MjIsIDk4MzA0MiwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgCisgICAgNjUxNDIsIDEyODAyNSwgMzU5NCwgNDI0MjQsIDEyNDk5MywgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgMTIxNDY3LCAKKyAgICA4ODM0LCAxMjA5NzQsIDEyODE1LCA0MzU3NCwgMTIxNDMwLCA3MzkwNywgMTAwNTEzLCA3MDExMywgNzIyMCwgMTE4MzksIAorICAgIDEyMTE0MywgNzQzMTYsIDE5NDc1MiwgNjUzMjIsIDQzMDQsIDc0NTAzLCA4MTYwLCA3NDMxNCwgMTAwNTExLCAxMjEyNzYsIAorICAgIDk4Mzk0MCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgMTIxMzg0LCAKKyAgICA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgOTI0MjMsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIDc0NDkyLCAKKyAgICA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxMDA3MjAsIDc4NTkyLCA2ODc0NSwgMjY3MiwgMzczNSwgCisgICAgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDEyODM3MCwgNDM3NDIsIDEyODM3MywgCisgICAgOTQ4NywgMTE5OTU5LCA2ODc4NSwgMzg0MiwgNzE5MTEsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgMTE5MzQ0LCAKKyAgICAxMDA1MjAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNjY3MjEsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCisgICAgNzAwMDYsIDE5NDY5MCwgMTAwNTE4LCAzNjA0LCAxMjA2ODMsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIDQyNTA3LCAKKyAgICAxOTYyLCA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMTE5NTk3LCAyMDcyLCA5MjMxMiwgNjk5NSwgNzI4MDEsIDU0MzcsIAorICAgIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDEwMDUxNCwgMTk5LCA2ODA3NSwgNDEwNSwgMTk0ODQ1LCAzODY0LCAKKyAgICA3NTAwNiwgMTk0NzEwLCA2NzgxOCwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ3OCwgMTI4NDcxLCA2NDcyLCAKKyAgICA2NTgxNCwgNzE5MTksIDEwMDg1NSwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDE5NDY0NSwgNjQ0MzIsIDEyMDI3MCwgCisgICAgODI5ODcsIDExOTE5MCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDE5NDY0MCwgNjY4MCwgMTk1MDQyLCA5ODM0MjUsIDcxODcyLCAKKyAgICA2Njc5LCA3NDQxMiwgOTIyNTEsIDExOTM1MCwgNzQ0MjEsIDExMzgyLCAxMjgyNTQsIDQzODYyLCA3NTAwMSwgMTEzNzMzLCAKKyAgICAxOTQ2NzksIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIDEyODI1MiwgNDM4NzQsIAorICAgIDY1NDQyLCA2ODA0NywgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAxMjc1MzQsIDExMzIxLCAxMjg4NDUsIAorICAgIDEyMDgwOSwgMTIyODk1LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCA5MjQ0NCwgCisgICAgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgMTY3NywgCisgICAgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIDEwMTYwLCAwLCAKKyAgICAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAKKyAgICAxMTg4MzUsIDE5NDY2NSwgNjQ2NTUsIDk4MzA1MywgMTE4OTIyLCAyMDY0LCA5MTc5NjYsIDQzMTU4LCA3OTAyLCA5ODMyMzEsIAorICAgIDY1MjY1LCAxOTQ2MzksIDEyMTA4MCwgMTI3MTcwLCAxMjI5MTUsIDEyODAwNiwgOTI1NTAsIDk4MzE4NiwgMTI5OTQsIAorICAgIDkyNzI4LCAxMDgyOCwgNzQzNzgsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgODMyMzEsIDcyMzg5LCA4MzA3OSwgNTA2LCAKKyAgICA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDEyMTQwNywgODg0MSwgNjY3NzAsIAorICAgIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCisgICAgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIDY1ODQsIDc3NDksIAorICAgIDExMDM3LCAxMjcxNTcsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAxOTM1LCAxMTUxNywgCisgICAgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMDA0OTksIDc0ODM5LCA3NDEwNCwgMTIxNywgNjQ3MDIsIDEyNjQzLCAKKyAgICA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDY2NzQ4LCA5MTM4LCA3ODgzMSwgNzg4MzMsIDEyNjMxLCAKKyAgICA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAxMTMxMywgMTk0ODAzLCAzNDAzLCAKKyAgICAxMjY1NjQsIDEyMDI3MSwgNjQzNjQsIDkyMjY5LCAxMjEyODIsIDcyNDMxLCA4OTk4LCAxMjk4OCwgMTE5OTgzLCA5MTUyLCAKKyAgICA5MjE2MSwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCA5MjM5MywgMTI2MTUsIDE1OTQsIDQyMTkyLCAKKyAgICA2OTE0LCA2NjM5MiwgMTI1MjAyLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIAorICAgIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgMTI2NjgsIDcyMzk1LCAyNDc3LCAKKyAgICAxMjcyODUsIDEyMTI0OSwgMTE4ODgwLCAwLCA2NzYwNCwgNjc2ODMsIDEyNzIzNSwgNTczLCAxMjcyODEsIDEyMDU0MywgCisgICAgMTE0MTcsIDkyNjYxLCAxMTk4MTQsIDExOTMwOSwgNjc1OTksIDAsIDcyNDEwLCA2NzYwNywgMTE0ODIsIDEyODk2MSwgCisgICAgMzk4MSwgMzM1NywgMTI3MTY0LCA0MjIyMywgNDIwNywgMTI4OCwgNzg1MDMsIDc4ODM5LCA2NzcyOCwgNzc5MDcsIDExNTg5LCAKICAgICA0MjE5NSwgNzQ0NzcsIDExOTk5NywgMTI3MTc4LCA2NDYwMiwgNjc2MTgsIDkyNTM5LCAxMjEzNjYsIDQyNzg4LCA2ODQxNiwgCi0gICAgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2NjkwNywgOTcxNywgMTE5MzExLCAwLCA5OTcsIDAsIDAsIDkyNTc3LCAKLSAgICAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgNzIzOTAsIDAsIAotICAgIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgOTgzMjc4LCA0MTcyLCA3MTI1MiwgMTE5OTkyLCAKLSAgICA4MzczLCAxMDg3MywgMTIxOTcsIDEyNTA3NCwgMTk1MDE0LCA5MjI2NSwgNjk3MDYsIDEyODU0MCwgNjgzNCwgNzQzNDcsIAotICAgIDc0OTU4LCAxMjkwMzMsIDEyNjk4MiwgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDE5NDU5OCwgCi0gICAgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIDMyNzQsIDEyNjYyOSwgODMyNTQsIDcxODYxLCA5ODM5NTAsIDc0NTIyLCAKLSAgICA0MTk4OSwgMTIxMzE3LCAwLCAxMTM3NjksIDMyNjMsIDkxNzkyMiwgNjU2NzIsIDY5MjQzLCAzMjcwLCA2NDUzOSwgMTE0ODksIAotICAgIDkxNzkxMSwgMCwgMCwgNzExMjcsIDk1MDUsIDY1NTE4LCAxMjg0OTgsIDc1NiwgMTk0NjA1LCAwLCAwLCAxOTQ2MjEsIAotICAgIDcyNjEsIDkyNTQ3LCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAKLSAgICAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCA3ODY3MywgOTI0MzQsIDc0NjI2LCAxMTM3NjAsIDExNTc4LCAKLSAgICA5ODM4MzcsIDExOTI5NiwgMTIwOTcwLCAxMjExMjcsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAxNzk0LCAKLSAgICA2ODMxMCwgNjQ1MjEsIDU2MjQsIDEyMDIyMCwgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCAKLSAgICA5NDA2MSwgNjg2NTksIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIAotICAgIDExOTMzMCwgNDQ1MiwgMTI4MDg4LCA5ODM3NzEsIDkyNTI2LCA0NTExLCAxMjA5NTgsIDk4Mzg3NywgNjQ2NzgsIDExNDI1LCAKLSAgICAwLCA0MzI0NSwgMTIzMSwgNjg4NjEsIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgCi0gICAgOTU0NiwgMCwgMTI4MzMyLCA3MDQyMSwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIAotICAgIDExOTYyNiwgNzgyMDIsIDY0MDU4LCA4Nzk5LCA0MjEzMSwgMTI4NjYyLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCAKLSAgICA4MzcsIDEwNTY3LCA3MjM4NCwgNDMxMDMsIDAsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNDM3NDksIAotICAgIDEwNzU2LCA2NDA0NywgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgCi0gICAgMTAzNCwgMzM5MiwgODMzMzYsIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA0MzQ5OCwgNjQwMzcsIDY0MDM2LCAKLSAgICA2NDAzNSwgNDI5MSwgMTI5MTU3LCA2NDAxNSwgNjQwMTQsIDY0NjgxLCA4MzM5NCwgODMzOTUsIDc4MTQ1LCA3MTg5OCwgCi0gICAgNDMwOTAsIDgzMzkxLCAzNDc2LCA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIAotICAgIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIDIwNCwgMCwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIAotICAgIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgOTgzMjY4LCAwLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgCi0gICAgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIDgzMjYxLCAxMDAwNSwgMTIzMjksIAotICAgIDQxMzMzLCA4MzI1OSwgODQ4OSwgMTk0MiwgOTE3OTIxLCAxOTQ4MzQsIDQyNTIwLCA2NTUxMCwgMTI1MDQ0LCA2ODI5MSwgCi0gICAgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAxMjc3OTgsIDY0MDI1LCA5MTY3LCA0MjE1MSwgCi0gICAgNzgyNDQsIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAxMjEzNjEsIDc1ODIsIAotICAgIDc4MjUyLCA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMTIwNzkxLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCAKLSAgICA3NzkyMCwgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIAotICAgIDc0NDU0LCAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMTE4OTU1LCA2ODIxOCwgNTUyNzQsIDIwMDgsIAotICAgIDY0MDMxLCA2NDAzMCwgMjk0LCA0MTg3NCwgODMzODMsIDY0NzkwLCA2NTkyOSwgODMzNzYsIDgzMzM3LCA4MzM3OSwgCi0gICAgODMzODAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDE5NDg0NCwgMCwgNDM1MSwgNjM0MywgNDMyNDcsIDExOTg4OCwgCi0gICAgNzAxNTMsIDExOTg4NiwgMTE5ODkxLCA3MjM4NywgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAxMTk4OTYsIDE5NDY1NSwgCi0gICAgNzgwMSwgNjU1NzgsIDgzMzYxLCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDgzMzU3LCAxMTM1LCA4MzM1MCwgODMzNTEsIAotICAgIDgzMzUyLCAxOTk1LCA2NzIyLCA5ODM5MjUsIDEyODgxNSwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAotICAgIDc4NDk2LCA3MjM4NiwgODMzNzEsIDY2ODIsIDgzMzY1LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIAotICAgIDgzMzYyLCA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAKLSAgICAxMTk5MDgsIDkxMzcsIDcxNTUsIDg5OTksIDkxNzkwMSwgNzg1MzMsIDM0NjYsIDAsIDEyMTQ2NiwgMTk5NiwgMCwgMzQ1MywgCi0gICAgNjI4MiwgMCwgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDkyOTc2LCA0MTc5LCA2NTExOSwgMTk5OCwgMTIwNzQ2LCAxODQyLCAKLSAgICAwLCA5MjY3NCwgOTYyOCwgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgOTgzMjQ4LCAxMjAwMDEsIAotICAgIDEyMDIwMSwgOTgzNjQ2LCAxMjQ5NzUsIDEyNzk1MiwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgNDM0OTEsIDkyNjkzLCAwLCAKLSAgICAxMjE0NzIsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDQzMTg5LCAwLCAzNTkyLCAxMDA3OCwgMCwgNzgxNjIsIAotICAgIDExOTU1OCwgODU5MiwgNjU4NzAsIDY2NDE3LCA3NDUwNCwgMTA3NDIsIDcyNDAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgMzI5NiwgCi0gICAgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjY5MDcsIDk3MTcsIDExOTMxMSwgMTAwNzM4LCA5OTcsIDExOTk5OCwgCisgICAgOTE3OTEwLCA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAKKyAgICAxMjc3NjAsIDcyMzkwLCAxMjA3MTMsIDExOTIyOCwgMTIwMzUsIDk4MzkwNiwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCAKKyAgICAxMjk0MjQsIDQxNzIsIDcxMjUyLCAxMTk5OTIsIDgzNzMsIDEwODczLCAxMjE5NywgMTI1MDc0LCAxOTUwMTQsIDkyMjY1LCAKKyAgICA2OTcwNiwgMTAwODU4LCA2ODM0LCA3NDM0NywgNzQ5NTgsIDY5NjQ1LCAxMjY5ODIsIDc0NTYzLCA2NDgyOCwgMTE0MTksIAorICAgIDEyNjU3MCwgNzY2LCAxMjU3LCAxOTQ1OTgsIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAzMjc0LCAxMjY2MjksIAorICAgIDgzMjU0LCA3MTg2MSwgOTgzOTUwLCA3Mjc5NiwgNDE5ODksIDEyMTMxNywgMTk0ODA2LCAzNDE4LCAzMjYzLCA5MTc5MjIsIAorICAgIDY1NjcyLCA2OTI0MywgMzI3MCwgNjQ1MzksIDExNDg5LCA5MTc5MTEsIDAsIDAsIDcxMTI3LCA5NTA1LCA2NTUxOCwgCisgICAgMTI4NDk4LCA3NTYsIDEyMDQwMCwgMTI1MjQzLCA5ODM3MDAsIDE5NDYyMSwgNzI2MSwgOTI1NDcsIDE4NiwgOTgzNzY5LCAKKyAgICA3Mjc3MSwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAxMjgwMCwgMTI3NTI5LCA3NDIwMywgCisgICAgNjQ3MTgsIDExNTA3LCA3ODY3MywgOTI0MzQsIDc0NjI2LCAxMTM3NjAsIDExNTc4LCA5ODM4MzcsIDExOTI5NiwgMTIwOTcwLCAKKyAgICAxMjExMjcsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAxNzk0LCA2ODMxMCwgNjQ1MjEsIDU2MjQsIDcyNzY2LCAKKyAgICAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCA2ODY1OSwgMTIwMjEzLCAxMjAyMTQsIAorICAgIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgMTE5MzMwLCA0NDUyLCAxMjgwODgsIDk4MzU2MCwgCisgICAgOTI1MjYsIDQ1MTEsIDEyMDk1OCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCA2ODg2MSwgNjk5MDMsIAorICAgIDk4MzY0MywgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIDk1NDYsIDk4MzIzNywgMTI4MzMyLCAKKyAgICA3MDQyMSwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIDExOTA1OCwgNzgyMDIsIDY0MDU4LCAKKyAgICA4Nzk5LCA0MjEzMSwgMTI4NjYyLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCA3MjM4NCwgNDMxMDMsIAorICAgIDEwMDM1MiwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgCisgICAgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTAwMzU2LCAxMDM0LCAzMzkyLCA4MzMzNiwgCisgICAgNDMwOTEsIDY0MDMzLCA2NDAzMiwgNDI3MzUsIDQzNDk4LCA2NDAzNywgNjQwMzYsIDY0MDM1LCA0MjkxLCAxMjkxNTcsIAorICAgIDY0MDE1LCA2NDAxNCwgNjQ2ODEsIDgzMzk0LCA4MzM5NSwgNzgxNDUsIDcxODk4LCA0MzA5MCwgODMzOTEsIDM0NzYsIAorICAgIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCAKKyAgICA2NDAwOSwgMjA0LCAxMDA4NDEsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgCisgICAgNzI0NywgNjQwNTQsIDk4MzI2OCwgMTE4OTIxLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgCisgICAgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIDgzMjYxLCAxMDAwNSwgMTIzMjksIDQxMzMzLCAKKyAgICA4MzI1OSwgODQ4OSwgMTk0MiwgMTAwODQzLCAxOTQ4MzQsIDQyNTIwLCA2NTUxMCwgMTI1MDQ0LCA2ODI5MSwgMTA3NjAsIAorICAgIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAxMjc3OTgsIDY0MDI1LCA5MTY3LCA0MjE1MSwgNzgyNDQsIAorICAgIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAxMDA1MzcsIDc1ODIsIDc4MjUyLCAKKyAgICA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMTIwNzkxLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgCisgICAgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3MDc0NSwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAKKyAgICAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMTE4OTU1LCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCAKKyAgICA2NDAzMCwgMjk0LCA0MTg3NCwgODMzODMsIDY0NzkwLCA2NTkyOSwgODMzNzYsIDgzMzM3LCA4MzM3OSwgODMzODAsIAorICAgIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDEwMDQwNiwgOTgzNjUwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAKKyAgICA3MDE1MywgMTAwNzUzLCA3ODczMywgNzIzODcsIDExOTg4OSwgMTE0MzMsIDEwMDU0NCwgMTE5ODk2LCAxOTQ2NTUsIDc4MDEsIAorICAgIDY1NTc4LCA4MzM2MSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCA4MzM1NywgMTEzNSwgODMzNTAsIDgzMzUxLCA4MzM1MiwgCisgICAgMTk5NSwgNjcyMiwgOTgzOTI1LCAxMjg4MTUsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCA3ODQ5NiwgCisgICAgNzIzODYsIDgzMzcxLCA2NjgyLCA4MzM2NSwgNzg2NzksIDQzODMzLCA0MTU0NywgOTgzNjMwLCAyMDEzLCA4MzM2MiwgCisgICAgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgMTE5OTA4LCA5MTM3LCAKKyAgICA3MTU1LCAyMjY0LCA5MTc5MDEsIDc4NTMzLCAzNDY2LCAxOTQ5ODcsIDEyMTAzOSwgMTk5NiwgOTgzNjc1LCAzNDUzLCAKKyAgICAzNDEyLCAwLCAyMDAyLCAyMDAwLCAxMjAxNzUsIDUzNywgOTI5NzYsIDQxNzksIDY1MTE5LCAxOTk4LCAxMjA3NDYsIDE4NDIsIAorICAgIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIDk4MjYsIDY0NTAyLCAxNzY3LCAzNDEzLCA5ODMyNDgsIDEyMDAwMSwgCisgICAgMTIwMjAxLCA5ODM2NDYsIDEyNDk3NSwgMTI3OTUyLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCA0MzQ5MSwgOTI2OTMsIAorICAgIDEwMDU0NywgMTIxNDcyLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCA0MzE4OSwgMCwgMzU5MiwgMTAwNzgsIAorICAgIDEwMDM5NCwgNzgxNjIsIDEwMDg0NiwgODU5MiwgNjU4NzAsIDY2NDE3LCA3NDUwNCwgMTA3NDIsIDcyNDAwLCA0MjkxOCwgCisgICAgMTk5NCwgOTI4MSwgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAogfTsKIAogI2RlZmluZSBjb2RlX21hZ2ljIDQ3CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3dpbnJlcGFyc2UuaCBiL01vZHVsZXMvd2lucmVwYXJzZS5oCmluZGV4IDY2Zjc3NzUuLjI4MDQ5YzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvd2lucmVwYXJzZS5oCisrKyBiL01vZHVsZXMvd2lucmVwYXJzZS5oCkBAIC0yLDcgKzIsNyBAQAogI2RlZmluZSBQeV9XSU5SRVBBUlNFX0gKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTAsOSArMTAsMTAgQEAKIAogLyogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgd2FzIGNvcGllZCBmcm9tCiAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZmY1NTIwMTIuYXNweCBhcyB0aGUgcmVxdWlyZWQKLSAgIGluY2x1ZGUgZG9lc24ndCBzZWVtIHRvIGJlIHByZXNlbnQgaW4gdGhlIFdpbmRvd3MgU0RLIChhdCBsZWFzdCBhcyBpbmNsdWRlZAotICAgd2l0aCBWaXN1YWwgU3R1ZGlvIEV4cHJlc3MpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgX1JFUEFSU0VfREFUQV9CVUZGRVIgeworICAgaW5jbHVkZSBrbVxudGlmcy5oIGlzbid0IHByZXNlbnQgaW4gdGhlIFdpbmRvd3MgU0RLIChhdCBsZWFzdCBhcyBpbmNsdWRlZAorICAgd2l0aCBWaXN1YWwgU3R1ZGlvIEV4cHJlc3MpLiBVc2UgdW5pcXVlIG5hbWVzIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGgKKyAgIHRoZSBzdHJ1Y3R1cmUgYXMgZGVmaW5lZCBieSBNaW4gR1cuICovCit0eXBlZGVmIHN0cnVjdCB7CiAgICAgVUxPTkcgUmVwYXJzZVRhZzsKICAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7CiAgICAgVVNIT1JUIFJlc2VydmVkOwpAQCAtMzgsMTEgKzM5LDExIEBACiAgICAgICAgICAgICBVQ0hBUiAgRGF0YUJ1ZmZlclsxXTsKICAgICAgICAgfSBHZW5lcmljUmVwYXJzZUJ1ZmZlcjsKICAgICB9OwotfSBSRVBBUlNFX0RBVEFfQlVGRkVSLCAqUFJFUEFSU0VfREFUQV9CVUZGRVI7Cit9IF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSLCAqX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSOwogCi0jZGVmaW5lIFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgIEZJRUxEX09GRlNFVChSRVBBUlNFX0RBVEFfQlVGRkVSLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQotI2RlZmluZSBNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRSAgKCAxNiAqIDEwMjQgKQorI2RlZmluZSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSBcCisgICAgRklFTERfT0ZGU0VUKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSLCBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKKyNkZWZpbmUgX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFICAoIDE2ICogMTAyNCApCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eGxpbWl0ZWQuYyBiL01vZHVsZXMveHhsaW1pdGVkLmMKaW5kZXggNDBjMTc2MC4uYzFhOWJlOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eGxpbWl0ZWQuYworKysgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCkBAIC04OSw3ICs4OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLVh4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCitYeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bW9kdWxlLmMgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKaW5kZXggODUyMzBkOS4uMDc2NDQwNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eG1vZHVsZS5jCisrKyBiL01vZHVsZXMveHhtb2R1bGUuYwpAQCAtNzYsNyArNzYsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1YeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKICAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96aXBpbXBvcnQuYyBiL01vZHVsZXMvemlwaW1wb3J0LmMKaW5kZXggNzQ3M2E4Zi4uNTkwNDZhYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy96aXBpbXBvcnQuYworKysgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCkBAIC05MDcsMTAgKzkwNyw4IEBACiAgICAgZnAgPSBfUHlfZm9wZW5fb2JqKGFyY2hpdmUsICJyYiIpOwogICAgIGlmIChmcCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX09TRXJyb3IpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKLSAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoWmlwSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBvcGVuIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYm1vZHVsZS5jIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKaW5kZXggZmNjYjYxNi4uY2ZlN2Y4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGlibW9kdWxlLmMKKysrIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKQEAgLTU3LDcgKzU3LDcgQEAKIH0gY29tcG9iamVjdDsKIAogc3RhdGljIHZvaWQKLXpsaWJfZXJyb3Ioel9zdHJlYW0genN0LCBpbnQgZXJyLCBjaGFyICptc2cpCit6bGliX2Vycm9yKHpfc3RyZWFtIHpzdCwgaW50IGVyciwgY29uc3QgY2hhciAqbXNnKQogewogICAgIGNvbnN0IGNoYXIgKnptc2cgPSBaX05VTEw7CiAgICAgLyogSW4gY2FzZSBvZiBhIHZlcnNpb24gbWlzbWF0Y2gsIHpzdC5tc2cgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuCkBAIC0xOTksMTggKzE5OSwxOCBAQAogLypbY2xpbmljIGlucHV0XQogemxpYi5jb21wcmVzcwogCi0gICAgYnl0ZXM6IFB5X2J1ZmZlcgorICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgICAgICBCaW5hcnkgZGF0YSB0byBiZSBjb21wcmVzc2VkLgotICAgIGxldmVsOiBpbnQoY19kZWZhdWx0PSJaX0RFRkFVTFRfQ09NUFJFU1NJT04iKSA9IFpfREVGQVVMVF9DT01QUkVTU0lPTgotICAgICAgICBDb21wcmVzc2lvbiBsZXZlbCwgaW4gMC05LgogICAgIC8KKyAgICBsZXZlbDogaW50KGNfZGVmYXVsdD0iWl9ERUZBVUxUX0NPTVBSRVNTSU9OIikgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT04KKyAgICAgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOSBvciAtMS4KIAogUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmJ5dGVzLCBpbnQgbGV2ZWwpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWU2NGMyYzMwNzYzMjFhMCBpbnB1dD1iZTNhYmU5OTM0YmRhNGIzXSovCit6bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgbGV2ZWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDgwOTA2ZDczZjYyOTRjOCBpbnB1dD02MzhkNTRiNjMxNWRiZWQzXSovCiB7CiAgICAgUHlPYmplY3QgKlJldFZhbCA9IE5VTEw7CiAgICAgQnl0ZSAqaWJ1ZjsKQEAgLTIxOCw4ICsyMTgsOCBAQAogICAgIGludCBlcnIsIGZsdXNoOwogICAgIHpfc3RyZWFtIHpzdDsKIAotICAgIGlidWYgPSBieXRlcy0+YnVmOwotICAgIGlidWZsZW4gPSBieXRlcy0+bGVuOworICAgIGlidWYgPSBkYXRhLT5idWY7CisgICAgaWJ1ZmxlbiA9IGRhdGEtPmxlbjsKIAogICAgIHpzdC5vcGFxdWUgPSBOVUxMOwogICAgIHpzdC56YWxsb2MgPSBQeVpsaWJfTWFsbG9jOwpAQCAtMzE4LDExICszMTgsMTEgQEAKIAogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgICAgICBDb21wcmVzc2VkIGRhdGEuCisgICAgLwogICAgIHdiaXRzOiBpbnQoY19kZWZhdWx0PSJNQVhfV0JJVFMiKSA9IE1BWF9XQklUUwogICAgICAgICBUaGUgd2luZG93IGJ1ZmZlciBzaXplIGFuZCBjb250YWluZXIgZm9ybWF0LgogICAgIGJ1ZnNpemU6IHNzaXplX3QoY19kZWZhdWx0PSJERUZfQlVGX1NJWkUiKSA9IERFRl9CVUZfU0laRQogICAgICAgICBUaGUgaW5pdGlhbCBvdXRwdXQgYnVmZmVyIHNpemUuCi0gICAgLwogCiBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtMzMwLDcgKzMzMCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzdjN2UzNTExMWRjOGM0MiBpbnB1dD1jMTNkZDJjNTY5NmNkMTdmXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzdjN2UzNTExMWRjOGM0MiBpbnB1dD0yMTk2MDkzNjIwOGU5YTViXSovCiB7CiAgICAgUHlPYmplY3QgKlJldFZhbCA9IE5VTEw7CiAgICAgQnl0ZSAqaWJ1ZjsKQEAgLTcyMSw5ICs3MjEsOSBAQAogICAgICAgICAgICAgbmV3X2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5ld19zaXplKTsKICAgICAgICAgICAgIGlmIChuZXdfZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSksCisgICAgICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpLAogICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPnVudXNlZF9kYXRhKSwgb2xkX3NpemUpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSArIG9sZF9zaXplLAorICAgICAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSArIG9sZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnpzdC5uZXh0X2luLCBsZWZ0X3NpemUpOwogICAgICAgICAgICAgUHlfU0VUUkVGKHNlbGYtPnVudXNlZF9kYXRhLCBuZXdfZGF0YSk7CiAgICAgICAgICAgICBzZWxmLT56c3QuYXZhaWxfaW4gPSAwOwpAQCAtNzUwLDExICs3NTAsMTEgQEAKIAogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgICAgICBUaGUgYmluYXJ5IGRhdGEgdG8gZGVjb21wcmVzcy4KKyAgICAvCiAgICAgbWF4X2xlbmd0aDogc3NpemVfdCA9IDAKICAgICAgICAgVGhlIG1heGltdW0gYWxsb3dhYmxlIGxlbmd0aCBvZiB0aGUgZGVjb21wcmVzc2VkIGRhdGEuCiAgICAgICAgIFVuY29uc3VtZWQgaW5wdXQgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbgogICAgICAgICB0aGUgdW5jb25zdW1lZF90YWlsIGF0dHJpYnV0ZS4KLSAgICAvCiAKIFJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgZGF0YS4KIApAQCAtNzY2LDcgKzc2Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTUxNzNjNzRlNzEwMzUyIGlucHV0PWQ2ZGU5YjUzYzQ1NjZiOGFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTUxNzNjNzRlNzEwMzUyIGlucHV0PWI4NWEyMTJhMDEyYjc3MGFdKi8KIHsKICAgICBpbnQgZXJyID0gWl9PSzsKICAgICBQeV9zc2l6ZV90IGlidWZsZW4sIG9idWZsZW4gPSBERUZfQlVGX1NJWkUsIGhhcmRfbGltaXQ7CkBAIC0xMzMzLDcgKzEzMzMsNyBAQAogInpsaWIgbGlicmFyeSwgd2hpY2ggaXMgYmFzZWQgb24gR05VIHppcC5cbiIKICJcbiIKICJhZGxlcjMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhbiBBZGxlci0zMiBjaGVja3N1bS5cbiIKLSJjb21wcmVzcyhzdHJpbmdbLCBsZXZlbF0pIC0tIENvbXByZXNzIHN0cmluZywgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCBpbiAwLTkuXG4iCisiY29tcHJlc3MoZGF0YVssIGxldmVsXSkgLS0gQ29tcHJlc3MgZGF0YSwgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCAwLTkgb3IgLTEuXG4iCiAiY29tcHJlc3NvYmooW2xldmVsWywgLi4uXV0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogImNyYzMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhIENSQy0zMiBjaGVja3N1bS5cbiIKICJkZWNvbXByZXNzKHN0cmluZyxbd2JpdHNdLFtidWZzaXplXSkgLS0gRGVjb21wcmVzc2VzIGEgY29tcHJlc3NlZCBzdHJpbmcuXG4iCmRpZmYgLS1naXQgYS9PYmplY3RzL2Fic3RyYWN0LmMgYi9PYmplY3RzL2Fic3RyYWN0LmMKaW5kZXggODgyMDViZC4uZjlhZmVjZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9hYnN0cmFjdC5jCisrKyBiL09iamVjdHMvYWJzdHJhY3QuYwpAQCAtMzIsOCArMzIsMTAgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIHYgPSAoUHlPYmplY3QgKilvLT5vYl90eXBlOwogICAgIFB5X0lOQ1JFRih2KTsKICAgICByZXR1cm4gdjsKQEAgLTEzNywxMiArMTM5LDE2IEBACiB7CiAgICAgUHlNYXBwaW5nTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwgfHwga2V5ID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBrZXkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19tYXBwaW5nOwotICAgIGlmIChtICYmIG0tPm1wX3N1YnNjcmlwdCkKLSAgICAgICAgcmV0dXJuIG0tPm1wX3N1YnNjcmlwdChvLCBrZXkpOworICAgIGlmIChtICYmIG0tPm1wX3N1YnNjcmlwdCkgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IG0tPm1wX3N1YnNjcmlwdChvLCBrZXkpOworICAgICAgICBhc3NlcnQoKGl0ZW0gIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KIAogICAgIGlmIChvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZSkgewogICAgICAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7CkBAIC02NjksMTMgKzY3NSwzMSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKF9fZm9ybWF0X18pOwogCisgICAgaWYgKGZvcm1hdF9zcGVjICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVjayhmb3JtYXRfc3BlYykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkZvcm1hdCBzcGVjaWZpZXIgbXVzdCBiZSBhIHN0cmluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZvcm1hdF9zcGVjKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEZhc3QgcGF0aCBmb3IgY29tbW9uIHR5cGVzLiAqLworICAgIGlmIChmb3JtYXRfc3BlYyA9PSBOVUxMIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSA9PSAwKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgICAgIHJldHVybiBQeU9iamVjdF9TdHIob2JqKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIElmIG5vIGZvcm1hdF9zcGVjIGlzIHByb3ZpZGVkLCB1c2UgYW4gZW1wdHkgc3RyaW5nICovCiAgICAgaWYgKGZvcm1hdF9zcGVjID09IE5VTEwpIHsKICAgICAgICAgZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICBmb3JtYXRfc3BlYyA9IGVtcHR5OwogICAgIH0KIAotICAgIC8qIEZpbmQgdGhlICh1bmJvdW5kISkgX19mb3JtYXRfXyBtZXRob2QgKGEgYm9ycm93ZWQgcmVmZXJlbmNlKSAqLworICAgIC8qIEZpbmQgdGhlICh1bmJvdW5kISkgX19mb3JtYXRfXyBtZXRob2QgKi8KICAgICBtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAmUHlJZF9fX2Zvcm1hdF9fKTsKICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTExMjIsOCArMTE0NiwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfbmVnYXRpdmUpCiAgICAgICAgIHJldHVybiAoKm0tPm5iX25lZ2F0aXZlKShvKTsKQEAgLTExMzYsOCArMTE2MiwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfcG9zaXRpdmUpCiAgICAgICAgIHJldHVybiAoKm0tPm5iX3Bvc2l0aXZlKShvKTsKQEAgLTExNTAsOCArMTE3OCwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfaW52ZXJ0KQogICAgICAgICByZXR1cm4gKCptLT5uYl9pbnZlcnQpKG8pOwpAQCAtMTE2NCw4ICsxMTk0LDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9hYnNvbHV0ZSkKICAgICAgICAgcmV0dXJuIG0tPm5iX2Fic29sdXRlKG8pOwpAQCAtMTE4MSw4ICsxMjEzLDEwIEBACiBQeU51bWJlcl9JbmRleChQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBpZiAoUHlMb25nX0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICAgICAgcmV0dXJuIGl0ZW07CkBAIC0xMjY1LDQyICsxMjk5LDU1IEBACiBQeU9iamVjdCAqCiBQeU51bWJlcl9Mb25nKFB5T2JqZWN0ICpvKQogeworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogICAgIFB5T2JqZWN0ICp0cnVuY19mdW5jOwogICAgIFB5X2J1ZmZlciB2aWV3OwogICAgIF9QeV9JREVOVElGSUVSKF9fdHJ1bmNfXyk7CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QobykpIHsKICAgICAgICAgUHlfSU5DUkVGKG8pOwogICAgICAgICByZXR1cm4gbzsKICAgICB9CiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9pbnQpIHsgLyogVGhpcyBzaG91bGQgaW5jbHVkZSBzdWJjbGFzc2VzIG9mIGludCAqLwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQobyk7CisgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KG8pOworICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgIVB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopcmVzdWx0KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgdHJ1bmNfZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jX2Z1bmMpIHsKLSAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwotICAgICAgICBQeU9iamVjdCAqaW50X2luc3RhbmNlOworICAgICAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdCh0cnVuY19mdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHRydW5jX2Z1bmMpOwotICAgICAgICBpZiAodHJ1bmNhdGVkID09IE5VTEwgfHwgUHlMb25nX0NoZWNrKHRydW5jYXRlZCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1bmNhdGVkOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgUHlMb25nX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlMb25nX0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopcmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAgICAgICAgIC8qIF9fdHJ1bmNfXyBpcyBzcGVjaWZpZWQgdG8gcmV0dXJuIGFuIEludGVncmFsIHR5cGUsCiAgICAgICAgICAgIGJ1dCBpbnQoKSBuZWVkcyB0byByZXR1cm4gYW4gaW50LiAqLwotICAgICAgICBtID0gdHJ1bmNhdGVkLT5vYl90eXBlLT50cF9hc19udW1iZXI7CisgICAgICAgIG0gPSByZXN1bHQtPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICAgICAgaWYgKG0gPT0gTlVMTCB8fCBtLT5uYl9pbnQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAogICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAiX190cnVuY19fIHJldHVybmVkIG5vbi1JbnRlZ3JhbCAodHlwZSAlLjIwMHMpIiwKLSAgICAgICAgICAgICAgICB0cnVuY2F0ZWQtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHRydW5jYXRlZCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaW50X2luc3RhbmNlID0gKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQodHJ1bmNhdGVkKTsKLSAgICAgICAgUHlfREVDUkVGKHRydW5jYXRlZCk7Ci0gICAgICAgIHJldHVybiBpbnRfaW5zdGFuY2U7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KHJlc3VsdCkpOworICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgIVB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopcmVzdWx0KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMyMiw3ICsxMzY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKG8pLCAxMCk7CiAKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG8sICZ2aWV3LCBQeUJVRl9TSU1QTEUpID09IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdCwgKmJ5dGVzOworICAgICAgICBQeU9iamVjdCAqYnl0ZXM7CiAKICAgICAgICAgLyogQ29weSB0byBOVUwtdGVybWluYXRlZCBidWZmZXIuICovCiAgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKXZpZXcuYnVmLCB2aWV3Lmxlbik7CkBAIC0xMzQ2LDIzICsxMzkzLDQzIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCisgICAgaWYgKFB5RmxvYXRfQ2hlY2tFeGFjdChvKSkgeworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2Zsb2F0KSB7IC8qIFRoaXMgc2hvdWxkIGluY2x1ZGUgc3ViY2xhc3NlcyBvZiBmbG9hdCAqLwogICAgICAgICBQeU9iamVjdCAqcmVzID0gbS0+bmJfZmxvYXQobyk7Ci0gICAgICAgIGlmIChyZXMgJiYgIVB5RmxvYXRfQ2hlY2socmVzKSkgeworICAgICAgICBkb3VibGUgdmFsOworICAgICAgICBpZiAoIXJlcyB8fCBQeUZsb2F0X0NoZWNrRXhhY3QocmVzKSkgeworICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2socmVzKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgIl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS4yMDBzKSIsCi0gICAgICAgICAgICAgIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAvKiBJc3N1ZSAjMjY5ODM6IHdhcm4gaWYgJ3Jlcycgbm90IG9mIGV4YWN0IHR5cGUgZmxvYXQuICovCisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykuICAiCisgICAgICAgICAgICAgICAgIlRoZSBhYmlsaXR5IHRvIHJldHVybiBhbiBpbnN0YW5jZSBvZiBhIHN0cmljdCBzdWJjbGFzcyBvZiBmbG9hdCAiCisgICAgICAgICAgICAgICAgImlzIGRlcHJlY2F0ZWQsIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4iLAorICAgICAgICAgICAgICAgIG8tPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdmFsID0gUHlGbG9hdF9BU19ET1VCTEUocmVzKTsKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodmFsKTsKICAgICB9CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sobykpIHsgLyogQSBmbG9hdCBzdWJjbGFzcyB3aXRoIG5iX2Zsb2F0ID09IE5VTEwgKi8KLSAgICAgICAgUHlGbG9hdE9iamVjdCAqcG8gPSAoUHlGbG9hdE9iamVjdCAqKW87Ci0gICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUocG8tPm9iX2Z2YWwpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKFB5RmxvYXRfQVNfRE9VQkxFKG8pKTsKICAgICB9CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbVN0cmluZyhvKTsKIH0KQEAgLTE0MzAsOCArMTQ5Nyw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBzLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9jb25jYXQpCkBAIC0xNDU0LDggKzE1MjIsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX3JlcGVhdCkKQEAgLTE0ODMsOCArMTU1Miw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBzLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9pbnBsYWNlX2NvbmNhdCkKQEAgLTE1MDcsOCArMTU3Nyw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaW5wbGFjZV9yZXBlYXQpCkBAIC0xNTM2LDE2ICsxNjA3LDE5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaXRlbSkgewogICAgICAgICBpZiAoaSA8IDApIHsKICAgICAgICAgICAgIGlmIChtLT5zcV9sZW5ndGgpIHsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGwgPSAoKm0tPnNxX2xlbmd0aCkocyk7Ci0gICAgICAgICAgICAgICAgaWYgKGwgPCAwKQorICAgICAgICAgICAgICAgIGlmIChsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpICs9IGw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1NjAsNyArMTYzNCw5IEBACiB7CiAgICAgUHlNYXBwaW5nTWV0aG9kcyAqbXA7CiAKLSAgICBpZiAoIXMpIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgaWYgKCFzKSB7CisgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbXAgPSBzLT5vYl90eXBlLT50cF9hc19tYXBwaW5nOwogICAgIGlmIChtcCAmJiBtcC0+bXBfc3Vic2NyaXB0KSB7CkBAIC0xNjg3LDggKzE3NjMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgajsKIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwtY2FzZSB0aGUgY29tbW9uIHR1cGxlIGFuZCBsaXN0IGNhc2VzLCBmb3IgZWZmaWNpZW5jeS4gKi8KICAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHYpKSB7CkBAIC0xNzY4LDggKzE4NDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAvKiByZXN1bHQgbGlzdCAqLwogICAgIFB5T2JqZWN0ICpydjsgICAgICAgICAgLyogcmV0dXJuIHZhbHVlIGZyb20gUHlMaXN0X0V4dGVuZCAqLwogCi0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCkBAIC0xNzg5LDggKzE4NjcsOSBAQAogewogICAgIFB5T2JqZWN0ICppdDsKIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGlmIChQeUxpc3RfQ2hlY2tFeGFjdCh2KSB8fCBQeVR1cGxlX0NoZWNrRXhhY3QodikpIHsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMTk3Myw4ICsyMDUyLDkgQEAKIHsKICAgICBQeU9iamVjdCAqb2tleSwgKnI7CiAKLSAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgb2tleSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGtleSk7CiAgICAgaWYgKG9rZXkgPT0gTlVMTCkKQEAgLTIxMTgsMjAgKzIxOTgsMTggQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChlcnJfb2NjdXJyZWQpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKLSAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0KICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogCi0gICAgICAgICAgICBpZiAoZnVuYykKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOwotICAgICAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworICAgICAgICAgICAgaWYgKGZ1bmMpIHsKKyAgICAgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIiVSIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSk7CisgICAgICAgICAgICB9CiAjaWZkZWYgUHlfREVCVUcKICAgICAgICAgICAgIC8qIEVuc3VyZSB0aGF0IHRoZSBidWcgaXMgY2F1Z2h0IGluIGRlYnVnIG1vZGUgKi8KICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImEgZnVuY3Rpb24gcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiKTsKQEAgLTIxNDMsNyArMjIyMSw3IEBACiB9CiAKIFB5T2JqZWN0ICoKLVB5T2JqZWN0X0NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmcsIFB5T2JqZWN0ICprdykKK1B5T2JqZWN0X0NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHRlcm5hcnlmdW5jIGNhbGw7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKQEAgLTIxNTIsNiArMjIzMCw4IEBACiAgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKICAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLwogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CiAKICAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKICAgICBpZiAoY2FsbCA9PSBOVUxMKSB7CkBAIC0yMTYzLDEwOCArMjI0MywzNDMgQEAKICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZywga3cpOworICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgYXJncywga3dhcmdzKTsKIAogICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogCiAgICAgcmV0dXJuIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlc3VsdCwgTlVMTCk7CiB9CiAKK1B5T2JqZWN0KgorX1B5U3RhY2tfQXNUdXBsZShQeU9iamVjdCAqKnN0YWNrLCBQeV9zc2l6ZV90IG5hcmdzKQoreworICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldyhuYXJncyk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IG5hcmdzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBzdGFja1tpXTsKKyAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIGksIGl0ZW0pOworICAgIH0KKworICAgIHJldHVybiBhcmdzOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgdGVybmFyeWZ1bmMgY2FsbDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIC8qIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LAorICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCisgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChuYXJncyA9PSAwIHx8IGFyZ3MgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKKworICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBjYWxsaW5nIGEgUHl0aG9uIG9iamVjdCIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJlc3VsdCA9IF9QeUZ1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBhcmdzLCBuYXJncywga3dhcmdzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmVzdWx0ID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBhcmdzLCBuYXJncywga3dhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp0dXBsZTsKKworICAgICAgICAvKiBTbG93LXBhdGg6IGJ1aWxkIGEgdGVtcG9yYXJ5IHR1cGxlICovCisgICAgICAgIGNhbGwgPSBmdW5jLT5vYl90eXBlLT50cF9jYWxsOworICAgICAgICBpZiAoY2FsbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICB0dXBsZSA9IF9QeVN0YWNrX0FzVHVwbGUoYXJncywgbmFyZ3MpOworICAgICAgICBpZiAodHVwbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCB0dXBsZSwga3dhcmdzKTsKKyAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKworICAgICAgICByZXN1bHQgPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOworICAgIH0KKworZXhpdDoKKyAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZSBvYmogZm9sbG93ZWQgYXJncy4gKi8KK1B5T2JqZWN0ICoKK19QeU9iamVjdF9DYWxsX1ByZXBlbmQoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s4XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgYXJnY291bnQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKworICAgIGFyZ2NvdW50ID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICBpZiAoYXJnY291bnQgKyAxIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjaykpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKChhcmdjb3VudCArIDEpICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHVzZSBib3Jyb3dlZCByZWZlcmVuY2VzICovCisgICAgc3RhY2tbMF0gPSBvYmo7CisgICAgbWVtY3B5KCZzdGFja1sxXSwKKyAgICAgICAgICAgICAgJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMCksCisgICAgICAgICAgICAgIGFyZ2NvdW50ICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLCBhcmdjb3VudCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QgKgorX1B5U3RhY2tfQXNEaWN0KFB5T2JqZWN0ICoqdmFsdWVzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5T2JqZWN0ICprd2RpY3Q7CisgICAgUHlfc3NpemVfdCBpOworCisgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmt3YXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGkpOworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSAqdmFsdWVzKys7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKTsKKyAgICAgICAgYXNzZXJ0KFB5RGljdF9HZXRJdGVtKGt3ZGljdCwga2V5KSA9PSBOVUxMKTsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5LCB2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGt3ZGljdDsKK30KKworUHlPYmplY3QgKioKK19QeVN0YWNrX1VucGFja0RpY3QoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3dhcmdzLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfa3duYW1lcywgUHlPYmplY3QgKmZ1bmMpCit7CisgICAgUHlPYmplY3QgKipzdGFjaywgKiprd3N0YWNrOworICAgIFB5X3NzaXplX3Qgbmt3YXJnczsKKyAgICBQeV9zc2l6ZV90IHBvcywgaTsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgUHlPYmplY3QgKmt3bmFtZXM7CisKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpOworCisgICAgbmt3YXJncyA9IChrd2FyZ3MgIT0gTlVMTCkgPyBQeURpY3RfU2l6ZShrd2FyZ3MpIDogMDsKKyAgICBpZiAoIW5rd2FyZ3MpIHsKKyAgICAgICAgKnBfa3duYW1lcyA9IE5VTEw7CisgICAgICAgIHJldHVybiBhcmdzOworICAgIH0KKworICAgIGlmICgoc2l6ZV90KW5hcmdzID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yoc3RhY2tbMF0pIC0gKHNpemVfdClua3dhcmdzKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKChuYXJncyArIG5rd2FyZ3MpICogc2l6ZW9mKHN0YWNrWzBdKSk7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAga3duYW1lcyA9IFB5VHVwbGVfTmV3KG5rd2FyZ3MpOworICAgIGlmIChrd25hbWVzID09IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENvcHkgcG9zaXRpb24gYXJndW1lbnRzIChib3Jyb3dlZCByZWZlcmVuY2VzKSAqLworICAgIG1lbWNweShzdGFjaywgYXJncywgbmFyZ3MgKiBzaXplb2Yoc3RhY2tbMF0pKTsKKworICAgIGt3c3RhY2sgPSBzdGFjayArIG5hcmdzOworICAgIHBvcyA9IGkgPSAwOworICAgIC8qIFRoaXMgbG9vcCBkb2Vzbid0IHN1cHBvcnQgbG9va3VwIGZ1bmN0aW9uIG11dGF0aW5nIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgdG8gY2hhbmdlIGl0cyBzaXplLiBJdCdzIGEgZGVsaWJlcmF0ZSBjaG9pY2UgZm9yIHNwZWVkLCB0aGlzIGZ1bmN0aW9uIGlzCisgICAgICAgY2FsbGVkIGluIHRoZSBwZXJmb3JtYW5jZSBjcml0aWNhbCBob3QgY29kZS4gKi8KKyAgICB3aGlsZSAoUHlEaWN0X05leHQoa3dhcmdzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGt3bmFtZXMsIGksIGtleSk7CisgICAgICAgIC8qIFRoZSBzdGFjayBjb250YWlucyBib3Jyb3dlZCByZWZlcmVuY2VzICovCisgICAgICAgIGt3c3RhY2tbaV0gPSB2YWx1ZTsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgICpwX2t3bmFtZXMgPSBrd25hbWVzOworICAgIHJldHVybiBzdGFjazsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqa3dkaWN0LCAqcmVzdWx0OworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IChrd25hbWVzID09IE5VTEwpID8gMCA6IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWU6IHRoZXNlIGFyZSBpbXBsZW1lbnRlZCBpbiBQeXRob24vY2V2YWwuYyBhbmQKKyAgICAgICBfUHlBcmdfUGFyc2VTdGFjaygpLiAqLworCisgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICB9CisKKyAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmV0dXJuIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgfQorCisgICAgaWYgKG5rd2FyZ3MgPiAwKSB7CisgICAgICAgIGt3ZGljdCA9IF9QeVN0YWNrX0FzRGljdChzdGFjayArIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga3dkaWN0ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBuYXJncywga3dkaWN0KTsKKyAgICBQeV9YREVDUkVGKGt3ZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0KgogY2FsbF9mdW5jdGlvbl90YWlsKFB5T2JqZWN0ICpjYWxsYWJsZSwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCk7CiAKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKLSAgICAgICAgUHlPYmplY3QgKmE7Ci0KLSAgICAgICAgYSA9IFB5VHVwbGVfTmV3KDEpOwotICAgICAgICBpZiAoYSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGEsIDAsIGFyZ3MpOwotICAgICAgICBhcmdzID0gYTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKGNhbGxhYmxlLCBhcmdzKTsKICAgICB9Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOworICAgIH0KIAotICAgIFB5X0RFQ1JFRihhcmdzKTsKLQotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5T2JqZWN0ICpjYWxsYWJsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7Ci0gICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgaWYgKCFmb3JtYXQgfHwgISpmb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoY2FsbGFibGUpOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgdmFfZW5kKHZhKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQoUHlPYmplY3QgKmNhbGxhYmxlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKLQotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogCi0gICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgaWYgKCFmb3JtYXQgfHwgISpmb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoY2FsbGFibGUpOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgIHZhX2VuZCh2YSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QqCiBjYWxsbWV0aG9kKFB5T2JqZWN0KiBmdW5jLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEsIGludCBpc19zaXplX3QpCiB7Ci0gICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKIAogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICB0eXBlX2Vycm9yKCJhdHRyaWJ1dGUgb2YgdHlwZSAnJS4yMDBzJyBpcyBub3QgY2FsbGFibGUiLCBmdW5jKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgaWYgKGlzX3NpemVfdCkKLSAgICAgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKIAotICAgIHJldHZhbCA9IGNhbGxfZnVuY3Rpb25fdGFpbChmdW5jLCBhcmdzKTsKKyAgICBpZiAoaXNfc2l6ZV90KSB7CisgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICB9CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgZXhpdDoKLSAgICAvKiBhcmdzIGdldHMgY29uc3VtZWQgaW4gY2FsbF9mdW5jdGlvbl90YWlsICovCi0gICAgUHlfWERFQ1JFRihmdW5jKTsKLQotICAgIHJldHVybiByZXR2YWw7CisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGZ1bmMsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCkBAIC0yMjc0LDggKzI1ODksOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIyODQsNiArMjYwMCw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMjk1LDggKzI2MTIsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIzMDUsNiArMjYyMyw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMzE2LDggKzI2MzUsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQpAQCAtMjMyNSw2ICsyNjQ1LDcgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDEpOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTIzMzYsOCArMjY1Nyw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKQEAgLTIzNDYsMzkgKzI2NjgsNjMgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDEpOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1vYmphcmdzX21rdHVwbGUodmFfbGlzdCB2YSkKK3N0YXRpYyBQeU9iamVjdCAqKgorb2JqYXJnc19ta3N0YWNrKFB5T2JqZWN0ICoqc21hbGxfc3RhY2ssIFB5X3NzaXplX3Qgc21hbGxfc3RhY2tfc2l6ZSwKKyAgICAgICAgICAgICAgICB2YV9saXN0IHZhLCBQeV9zc2l6ZV90ICpwX25hcmdzKQogewotICAgIGludCBpLCBuID0gMDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgdmFfbGlzdCBjb3VudHZhOwotICAgIFB5T2JqZWN0ICpyZXN1bHQsICp0bXA7CisgICAgUHlPYmplY3QgKipzdGFjazsKIAotICAgICAgICBQeV9WQV9DT1BZKGNvdW50dmEsIHZhKTsKKyAgICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyAqLworICAgIHZhX2NvcHkoY291bnR2YSwgdmEpOwogCi0gICAgd2hpbGUgKCgoUHlPYmplY3QgKil2YV9hcmcoY291bnR2YSwgUHlPYmplY3QgKikpICE9IE5VTEwpCi0gICAgICAgICsrbjsKLSAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhuKTsKLSAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgbiA+IDApIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgdG1wID0gKFB5T2JqZWN0ICopdmFfYXJnKHZhLCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCB0bXApOwotICAgICAgICAgICAgUHlfSU5DUkVGKHRtcCk7CisgICAgbiA9IDA7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZyA9IHZhX2FyZyhjb3VudHZhLCBQeU9iamVjdCAqKTsKKyAgICAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBuKys7CisgICAgfQorICAgICpwX25hcmdzID0gbjsKKworICAgIC8qIENvcHkgYXJndW1lbnRzICovCisgICAgaWYgKG4gPD0gc21hbGxfc3RhY2tfc2l6ZSkgeworICAgICAgICBzdGFjayA9IHNtYWxsX3N0YWNrOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBQeU1lbV9NYWxsb2MobiAqIHNpemVvZihzdGFja1swXSkpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFfZW5kKGNvdW50dmEpOworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHN0YWNrW2ldID0gdmFfYXJnKHZhLCBQeU9iamVjdCAqKTsKKyAgICB9CisgICAgdmFfZW5kKGNvdW50dmEpOworICAgIHJldHVybiBzdGFjazsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLCBQeU9iamVjdCAqbmFtZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGNhbGxhYmxlID0gUHlPYmplY3RfR2V0QXR0cihjYWxsYWJsZSwgbmFtZSk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCkBAIC0yMzg2LDI4ICsyNzMyLDM2IEBACiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBuYW1lKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGNhbGxhYmxlID0gX1B5T2JqZWN0X0dldEF0dHJJZChjYWxsYWJsZSwgbmFtZSk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCkBAIC0yNDE1LDM4ICsyNzY5LDUxIEBACiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBuYW1lKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBjYWxsYWJsZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwppbmRleCA2ZDRjNmExLi5jNmQwNzA3IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKQEAgLTI3OCwzMSArMjc4LDYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zvcm1hdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmJ5dGVzX2luLCAqYnl0ZXNfb3V0LCAqcmVzOwotICAgIGNoYXIgKmJ5dGVzdHJpbmc7Ci0KLSAgICBpZiAoc2VsZiA9PSBOVUxMIHx8ICFQeUJ5dGVBcnJheV9DaGVjayhzZWxmKSB8fCBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBieXRlc3RyaW5nID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIGJ5dGVzX2luID0gUHlCeXRlc19Gcm9tU3RyaW5nKGJ5dGVzdHJpbmcpOwotICAgIGlmIChieXRlc19pbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBieXRlc19vdXQgPSBfUHlCeXRlc19Gb3JtYXQoYnl0ZXNfaW4sIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihieXRlc19pbik7Ci0gICAgaWYgKGJ5dGVzX291dCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KGJ5dGVzX291dCk7Ci0gICAgUHlfREVDUkVGKGJ5dGVzX291dCk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVzOwotfQotCiAvKiBGdW5jdGlvbnMgc3R1ZmZlZCBpbnRvIHRoZSB0eXBlIG9iamVjdCAqLwogCiBzdGF0aWMgUHlfc3NpemVfdApAQCAtODIwLDE3ICs3OTUsMTUgQEAKICAgICB9CiAKICAgICAvKiBJcyBpdCBhbiBpbnQ/ICovCi0gICAgY291bnQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKLSAgICBpZiAoY291bnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICBpZiAoUHlJbmRleF9DaGVjayhhcmcpKSB7CisgICAgICAgIGNvdW50ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChjb3VudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNvdW50IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50IDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgY291bnQpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTExMTksMTYxICsxMDkyLDI3IEBACiAjaW5jbHVkZSAic3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIgogCiAKLS8qIFRoZSBmb2xsb3dpbmcgUHlfTE9DQUxfSU5MSU5FIGFuZCBQeV9MT0NBTCBmdW5jdGlvbnMKLXdlcmUgY29waWVkIGZyb20gdGhlIG9sZCBjaGFyKiBzdHlsZSBzdHJpbmcgb2JqZWN0LiAqLwotCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1ieXRlYXJyYXlfZmluZF9pbnRlcm5hbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCi17Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfYnVmZmVyIHN1YmJ1ZjsKLSAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47Ci0gICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiAtMjsKLQotICAgIGlmIChzdWJvYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMjsKLQotICAgICAgICBzdWIgPSBzdWJidWYuYnVmOwotICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0gICAgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOwotICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCi0gICAgICAgIHJlcyA9IC0xOwotICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMQotI2lmbmRlZiBIQVZFX01FTVJDSFIKLSAgICAgICAgICAgICYmIGRpciA+IDAKLSNlbmRpZgotICAgICkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9ICpzdWI7Ci0gICAgICAgIGludCBtb2RlID0gKGRpciA+IDApID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7Ci0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9mYXN0c2VhcmNoX21lbWNocl8xY2hhcigKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgIG5lZWRsZSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgaWYgKHJlcyA+PSAwKQotICAgICAgICAgICAgcmVzICs9IHN0YXJ0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGRpciA+IDApCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICB9Ci0KLSAgICBpZiAoc3Vib2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotUHlEb2NfU1RSVkFSKGZpbmRfX2RvY19fLAotIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9maW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19maW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi1QeURvY19TVFJWQVIoY291bnRfX2RvY19fLAotIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uIHN1YiBpblxuXAotYnl0ZXMgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCi1hcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jb3VudChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotCi0gICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmNvdW50X29iajsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHN1Yl9vYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgc3ViID0gdnN1Yi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7Ci0KLSAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCi0gICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCi0gICAgICAgICk7Ci0KLSAgICBpZiAoc3ViX29iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7Ci0KLSAgICByZXR1cm4gY291bnRfb2JqOworICAgIHJldHVybiBfUHlfYnl0ZXNfY291bnQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5jbGVhcgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY2xlYXJfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWU1MjRmZDMzMGFiY2RjMThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWVkNmVkYWU5ZGU0NDdhYzRdKi8KIHsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjgzLDI1MyArMTEyMiw3MiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmNvcHkKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybiBhIGNvcHkgb2YgQi4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jb3B5X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjhjZmJjZmVkNDg0YzEzMiBpbnB1dD02ZDVkMjk3NWFhMGYzM2YzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjhjZmJjZmVkNDg0YzEzMiBpbnB1dD02NTk3YjBjMDFiY2NhYTllXSovCiB7CiAgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORygoUHlPYmplY3QgKilzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwogfQogCi1QeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAotIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfaW5kZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2luZGV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihyZmluZF9fZG9jX18sCi0iQi5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmZpbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JmaW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihyaW5kZXhfX2RvY19fLAotIkIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yaW5kZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCiBzdGF0aWMgaW50CiBieXRlYXJyYXlfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9idWZmZXIgdmFyZzsKLSAgICAgICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5X1NJWkUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmcuYnVmLCB2YXJnLmxlbiwgMCk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOwotICAgICAgICByZXR1cm4gcG9zID49IDA7Ci0gICAgfQotICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID49IDI1NikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWVtY2hyKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKGludCkgaXZhbCwgUHlfU0laRShzZWxmKSkgIT0gTlVMTDsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvbnRhaW5zKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZyk7CiB9CiAKLQotLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHNlbGYKLSAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKLSAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KLSAqLwotUHlfTE9DQUwoaW50KQotX2J5dGVhcnJheV90YWlsbWF0Y2goUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgY29uc3QgY2hhciogc3RyOwotICAgIFB5X2J1ZmZlciB2c3Vic3RyOwotICAgIGludCBydiA9IDA7Ci0KLSAgICBzdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1YnN0ciwgJnZzdWJzdHIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLQotICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7Ci0gICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KLSAgICAgICAgaWYgKHN0YXJ0K3ZzdWJzdHIubGVuID4gbGVuKSB7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKiBlbmRzd2l0aCAqLwotICAgICAgICBpZiAoZW5kLXN0YXJ0IDwgdnN1YnN0ci5sZW4gfHwgc3RhcnQgPiBsZW4pIHsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlbmQtdnN1YnN0ci5sZW4gPiBzdGFydCkKLSAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gdnN1YnN0ci5sZW47Ci0gICAgfQotICAgIGlmIChlbmQtc3RhcnQgPj0gdnN1YnN0ci5sZW4pCi0gICAgICAgIHJ2ID0gISBtZW1jbXAoc3RyK3N0YXJ0LCB2c3Vic3RyLmJ1ZiwgdnN1YnN0ci5sZW4pOwotCi1kb25lOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWJzdHIpOwotICAgIHJldHVybiBydjsKLX0KLQotCi1QeURvY19TVFJWQVIoc3RhcnRzd2l0aF9fZG9jX18sCi0iQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zdGFydHN3aXRoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoInN0YXJ0c3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGVuZHN3aXRoX19kb2NfXywKLSJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1zdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZW5kc3dpdGgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZW5kc3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS50cmFuc2xhdGUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgdGFibGU6IG9iamVjdAogICAgICAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LgotICAgIFsKLSAgICBkZWxldGVjaGFyczogb2JqZWN0Ci0gICAgXQogICAgIC8KKyAgICBkZWxldGUgYXMgZGVsZXRlY2hhcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogCiBSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIAotQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgogVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfcmlnaHRfMSwgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiZWJjODZhOWExZmYwODMgaW5wdXQ9Yjc0OWFkODVmNDg2MDgyNF0qLworICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNmE4ZjAxYzJhNzRlNDQ2IGlucHV0PWNmZmY5NTZkNGQxMjdhOWJdKi8KIHsKICAgICBjaGFyICppbnB1dCwgKm91dHB1dDsKICAgICBjb25zdCBjaGFyICp0YWJsZV9jaGFyczsKQEAgLTE1NzIsNyArMTIzMCw3IEBACiAgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBpbmxlbik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhpbnB1dF9vYmopOwogCiAgICAgaWYgKHZkZWwubGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewpAQCAtMTU5OCw4ICsxMjU2LDcgQEAKICAgICBmb3IgKGkgPSBpbmxlbjsgLS1pID49IDA7ICkgewogICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmlucHV0KyspOwogICAgICAgICBpZiAodHJhbnNfdGFibGVbY10gIT0gLTEpCi0gICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKm91dHB1dCsrID0gKGNoYXIpdHJhbnNfdGFibGVbY10pID09IGMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgKm91dHB1dCsrID0gKGNoYXIpdHJhbnNfdGFibGVbY107CiAgICAgfQogICAgIC8qIEZpeCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLwogICAgIGlmIChpbmxlbiA+IDApCkBAIC0xNjQyLDQ5MyArMTI5OSw2IEBACiB9CiAKIAotLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLwotCi0jZGVmaW5lIGZpbmRjaGFyKHRhcmdldCwgdGFyZ2V0X2xlbiwgYykgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKGNoYXIgKiltZW1jaHIoKGNvbnN0IHZvaWQgKikodGFyZ2V0KSwgYywgdGFyZ2V0X2xlbikpCi0KLQotLyogQnl0ZXMgb3BzIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBjcmVhdGUgYSBjb3B5ICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmV0dXJuX3NlbGYoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi17Ci0gICAgLyogYWx3YXlzIHJldHVybiBhIG5ldyBieXRlYXJyYXkgKi8KLSAgICByZXR1cm4gKFB5Qnl0ZUFycmF5T2JqZWN0ICopUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7Ci19Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotY291bnRjaGFyKGNvbnN0IGNoYXIgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRfbGVuLCBjaGFyIGMsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgUHlfc3NpemVfdCBjb3VudD0wOwotICAgIGNvbnN0IGNoYXIgKnN0YXJ0PXRhcmdldDsKLSAgICBjb25zdCBjaGFyICplbmQ9dGFyZ2V0K3RhcmdldF9sZW47Ci0KLSAgICB3aGlsZSAoIChzdGFydD1maW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBjKSkgIT0gTlVMTCApIHsKLSAgICAgICAgY291bnQrKzsKLSAgICAgICAgaWYgKGNvdW50ID49IG1heGNvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN0YXJ0ICs9IDE7Ci0gICAgfQotICAgIHJldHVybiBjb3VudDsKLX0KLQotCi0vKiBBbGdvcml0aG1zIGZvciBkaWZmZXJlbnQgY2FzZXMgb2Ygc3RyaW5nIHJlcGxhY2VtZW50ICovCi0KLS8qIGxlbihzZWxmKT49MSwgZnJvbT0iIiwgbGVuKHRvKT49MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2ludGVybGVhdmUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGk7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKLSAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLwotICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikKLSAgICAgICAgY291bnQgPSBtYXhjb3VudDsKLSAgICBlbHNlCi0gICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCi0gICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOwotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOwotCi0gICAgaWYgKCEgKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIC8qIFRPRE86IHNwZWNpYWwgY2FzZSBzaW5nbGUgY2hhcmFjdGVyLCB3aGljaCBkb2Vzbid0IG5lZWQgbWVtY3B5ICovCi0KLSAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIGNvdW50IC09IDE7Ci0KLSAgICBmb3IgKGk9MDsgaTxjb3VudDsgaSsrKSB7Ci0gICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICB9Ci0KLSAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4taSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLwotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIGNvdW50OyAgLyogZnJvbV9sZW4gPT0gMSAqLwotICAgIGFzc2VydChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLQotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIChjb3VudCAqIGZyb21fbGVuKTsKLSAgICBhc3NlcnQgKHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMICkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7Ci0KLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0KLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kLCAqbmV4dDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOwotCi0gICAgaWYgKG5leHQgPT0gTlVMTCkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0LXNlbGZfcyk7Ci0gICAgKnN0YXJ0ID0gdG9fYzsKLSAgICBzdGFydCsrOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKm5leHQgPSB0b19jOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kOwotICAgIGNoYXIgKnNlbGZfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgYnl0ZXMgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICBpZiAob2Zmc2V0ID09IC0xKSB7Ci0gICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmX2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OwotICAgIFB5X01FTUNQWShzdGFydCwgdG9fcywgZnJvbV9sZW4pOwotICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0PT0tMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkoc3RhcnQrb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgICAgIHN0YXJ0ICs9IG9mZnNldCtmcm9tX2xlbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIHVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIG5ldywgaGVuY2UgdGhlICItMSIgKi8KLSAgICAvKiAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi0xKSAgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gMSA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gMSk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLWZyb21fbGVuKSAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gZnJvbV9sZW4pOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0K29mZnNldDsKLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgaWYgKG1heGNvdW50IDwgMCkgewotICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIH0gZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmIChtYXhjb3VudCA9PSAwIHx8Ci0gICAgICAgIChmcm9tX2xlbiA9PSAwICYmIHRvX2xlbiA9PSAwKSkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IDApIHsKLSAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIGJ5dGVzIGV2ZXJ5d2hlcmUuICAgKi8KLSAgICAgICAgLyogICAgPj4+ICJQeXRob24iLnJlcGxhY2UoIiIsICIuIikgICAgICovCi0gICAgICAgIC8qICAgICcuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLQotICAgIC8qIEV4Y2VwdCBmb3IgIiIucmVwbGFjZSgiIiwgIkEiKSA9PSAiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCi0gICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgYnl0ZXMgdG8gZ2VuZXJhdGUgYSBub24tZW1wdHkgYnl0ZXMgKi8KLSAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IGJ5dGVzICovCi0gICAgaWYgKFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmICh0b19sZW4gPT0gMCkgewotICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBieXRlcyAqLwotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggYnl0ZXMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSB0b19sZW4pIHsKLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgdG9fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KLSAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKHNlbGYsIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci19Ci0KLQogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJlcGxhY2UKIApAQCAtMjE1MCw5ICsxMzIwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDM5ODg0YzRkYzU5NDEyYSBpbnB1dD1hYTM3OWQ5ODg2MzdjN2ZiXSovCiB7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZUFycmF5T2JqZWN0ICopIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLT5idWYsIG9sZC0+bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOworICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZSgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMjIwMCw3ICsxMzcwLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5wYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgc2VwOiBvYmplY3QKICAgICAvCiAKQEAgLTIyMTYsNyArMTM4NSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9N2Q3ZmUzN2IxNjk2ZDUwNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9ODZmODkyMjM4OTJiNzBiNV0qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCkBAIC0yMjM4LDcgKzE0MDcsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJwYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgc2VwOiBvYmplY3QKICAgICAvCiAKQEAgLTIyNTQsNyArMTQyMiw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnBhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDBkZTNjOTQyNjExNWU4IGlucHV0PTliOGNkNTQwYzFiNzU4NTNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDBkZTNjOTQyNjExNWU4IGlucHV0PTVmNDA5NGYyZGU4N2M4ZjNdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIApAQCAtMjMxMiwxNCArMTQ4MCwxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJldmVyc2UKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZXZlcnNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD03OTMzYTQ5OWI4NTk3YmQxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD01NDMzNTYzMTlmYzc4NTU3XSovCiB7CiAgICAgY2hhciBzd2FwLCAqaGVhZCwgKnRhaWw7CiAgICAgUHlfc3NpemVfdCBpLCBqLCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTIzNDgsNyArMTUxNCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuaW5zZXJ0CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGluZGV4OiBQeV9zc2l6ZV90CiAgICAgICAgIFRoZSBpbmRleCB3aGVyZSB0aGUgdmFsdWUgaXMgdG8gYmUgaW5zZXJ0ZWQuCiAgICAgaXRlbTogYnl0ZXN2YWx1ZQpAQCAtMjM2MCw3ICsxNTI1LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9pbnNlcnRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgaW50IGl0ZW0pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD04MzM3NjY4MzZiYTMwZTFlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD1iMmI1ZDA3ZTlkZTZjMDcwXSovCiB7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWY7CkBAIC0yMzkwLDcgKzE1NTUsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmFwcGVuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpdGVtOiBieXRlc3ZhbHVlCiAgICAgICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLgogICAgIC8KQEAgLTI0MDAsNyArMTU2NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfYXBwZW5kX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBpdGVtKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9YWU1NmVhODczODA0MDdjY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9MjBkNmJlYzNkMTM0MDU5M10qLwogewogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAKQEAgLTI0MjAsNyArMTU4NCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuZXh0ZW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGl0ZXJhYmxlX29mX2ludHM6IG9iamVjdAogICAgICAgICBUaGUgaXRlcmFibGUgb2YgaXRlbXMgdG8gYXBwZW5kLgogICAgIC8KQEAgLTI0MzAsNyArMTU5Myw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZXh0ZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfaW50cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWNlODNhNWQ3NWI3MGQ4NTBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWM2MTdiM2E5MzI0OWJhMjhdKi8KIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtLCAqYnl0ZWFycmF5X29iajsKICAgICBQeV9zc2l6ZV90IGJ1Zl9zaXplID0gMCwgbGVuID0gMDsKQEAgLTI1MTUsNyArMTY3OCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucG9wCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGluZGV4OiBQeV9zc2l6ZV90ID0gLTEKICAgICAgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLgogICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLgpAQCAtMjUyOCw3ICsxNjkwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTA3OTdlNmMwY2E5ZDVhODVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTM1OTFkZjJkMDZjMGQyMzddKi8KIHsKICAgICBpbnQgdmFsdWU7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTI1NjAsNyArMTcyMiw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucmVtb3ZlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHZhbHVlOiBieXRlc3ZhbHVlCiAgICAgICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuCiAgICAgLwpAQCAtMjU3MCwyMCArMTczMSwyMCBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD00NzU2MGIxMWZkODU2YzI0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD0xMjE4MzEyNDBjZDUxZGRmXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKKyAgICBQeV9zc2l6ZV90IHdoZXJlLCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgY2hhciAqd2hlcmUgPSBtZW1jaHIoYnVmLCB2YWx1ZSwgbik7CiAKLSAgICBpZiAoIXdoZXJlKSB7CisgICAgd2hlcmUgPSBzdHJpbmdsaWJfZmluZF9jaGFyKGJ1ZiwgbiwgdmFsdWUpOworICAgIGlmICh3aGVyZSA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ2YWx1ZSBub3QgZm91bmQgaW4gYnl0ZWFycmF5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIV9jYW5yZXNpemUoc2VsZikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWVtbW92ZSh3aGVyZSwgd2hlcmUgKyAxLCBidWYgKyBuIC0gd2hlcmUpOworICAgIG1lbW1vdmUoYnVmICsgd2hlcmUsIGJ1ZiArIHdoZXJlICsgMSwgbiAtIHdoZXJlKTsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIG4gLSAxKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yNTkzLDggKzE3NTQsOCBAQAogLyogWFhYIFRoZXNlIHR3byBoZWxwZXJzIGNvdWxkIGJlIG9wdGltaXplZCBpZiBhcmdzaXplID09IDEgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKLWxzdHJpcF9oZWxwZXIoY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAotICAgICAgICAgICAgICB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKK2xzdHJpcF9oZWxwZXIoY29uc3QgY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAorICAgICAgICAgICAgICBjb25zdCB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKIHsKICAgICBQeV9zc2l6ZV90IGkgPSAwOwogICAgIHdoaWxlIChpIDwgbXlzaXplICYmIG1lbWNocihhcmdwdHIsICh1bnNpZ25lZCBjaGFyKSBteXB0cltpXSwgYXJnc2l6ZSkpCkBAIC0yNjAzLDggKzE3NjQsOCBAQAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotcnN0cmlwX2hlbHBlcihjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCi0gICAgICAgICAgICAgIHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQorcnN0cmlwX2hlbHBlcihjb25zdCBjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCisgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQogewogICAgIFB5X3NzaXplX3QgaSA9IG15c2l6ZSAtIDE7CiAgICAgd2hpbGUgKGkgPj0gMCAmJiBtZW1jaHIoYXJncHRyLCAodW5zaWduZWQgY2hhcikgbXlwdHJbaV0sIGFyZ3NpemUpKQpAQCAtMjgwNSwyNyArMTk2NiwxMCBAQAogICAgICAgICApOwogfQogCi1zdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKLXsKLSAgICBpZiAoYyA+PSAxMjgpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKGMpKQotICAgICAgICAgICAgYyA9IFB5X1RPTE9XRVIoYyk7Ci0gICAgICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBieXRlYXJyYXkuZnJvbWhleAogCi0gICAgY2xzOiBzZWxmKHR5cGU9IlB5T2JqZWN0KiIpCiAgICAgc3RyaW5nOiB1bmljb2RlCiAgICAgLwogCkBAIC0yODM2LDUxICsxOTgwLDE1IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5T2JqZWN0KmNscywgUHlPYmplY3QgKnN0cmluZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZjNkYTYwMTI5YjM3MDBjIGlucHV0PTkwN2JiZDJkMzRkOTM2N2FdKi8KK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmMGYwYjZkMzBmYjNiYTAgaW5wdXQ9ZjAzM2ExNmQxZmIyMWY0OF0qLwogewotICAgIFB5T2JqZWN0ICpuZXdieXRlczsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwotICAgIGludCB0b3AsIGJvdDsKLSAgICB2b2lkICpkYXRhOwotICAgIHVuc2lnbmVkIGludCBraW5kOwotCi0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7Ci0KLSAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwotICAgIG5ld2J5dGVzID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwotICAgIGlmICghbmV3Ynl0ZXMpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhuZXdieXRlcyk7Ci0gICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgewotICAgICAgICAvKiBza2lwIG92ZXIgc3BhY2VzIGluIHRoZSBpbnB1dCAqLwotICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQotICAgICAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7Ci0gICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaSk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZltqKytdID0gKHRvcCA8PCA0KSArIGJvdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUhleChzdHJpbmcsIHR5cGUgPT0gJlB5Qnl0ZUFycmF5X1R5cGUpOworICAgIGlmICh0eXBlICE9ICZQeUJ5dGVBcnJheV9UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIE5VTEwpKTsKICAgICB9Ci0gICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZShuZXdieXRlcywgaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldHVybiBuZXdieXRlczsKLQotICBlcnJvcjoKLSAgICBQeV9ERUNSRUYobmV3Ynl0ZXMpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihoZXhfX2RvY19fLApAQCAtMjkzNSwxNCArMjA0MywxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fcmVkdWNlX18gYXMgYnl0ZWFycmF5X3JlZHVjZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZWR1Y2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PWZiYjA3ZGU0ZDEwMmEwM2FdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PTQ0YjU3MzdhZGE2MmRkM2ZdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgMik7CiB9CkBAIC0yOTUwLDcgKzIwNTYsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fcmVkdWNlX2V4X18gYXMgYnl0ZWFycmF5X3JlZHVjZV9leAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBwcm90bzogaW50ID0gMAogICAgIC8KIApAQCAtMjk1OSw3ICsyMDY0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9MGUwOTFhNDJjYTZkYmQ5MV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9ZjEyOWJjMWExYWExNTFlZV0qLwogewogICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCBwcm90byk7CiB9CkBAIC0yOTY3LDE0ICsyMDcyLDEyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuX19zaXplb2ZfXyBhcyBieXRlYXJyYXlfc2l6ZW9mCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBieXRlYXJyYXkgb2JqZWN0IGluIG1lbW9yeSwgaW4gYnl0ZXMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD02YjIzZDMwNTM2MmI0NjJiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD1lMjczMjBmZDk4YTRiYzVhXSovCiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKQEAgLTMwMTUsMTkgKzIxMTgsMjIgQEAKICAgICBCWVRFQVJSQVlfQVBQRU5EX01FVEhPRERFRgogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCi0gICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKKyAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIF9QeV9jZW50ZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfQ0xFQVJfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX0NPUFlfTUVUSE9EREVGCi0gICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKKyAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3VudCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY291bnRfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRgotICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2VuZHN3aXRoLCBNRVRIX1ZBUkFSR1MsIGVuZHN3aXRoX19kb2NfX30sCisgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCiAgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBleHBhbmR0YWJzX19kb2NfX30sCisgICAgIF9QeV9leHBhbmR0YWJzX19kb2NfX30sCiAgICAgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZmluZCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfZmluZF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9GUk9NSEVYX01FVEhPRERFRgogICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKLSAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbmRleCwgTUVUSF9WQVJBUkdTLCBpbmRleF9fZG9jX199LAorICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9pbmRleF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9JTlNFUlRfTUVUSE9EREVGCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKQEAgLTMwNDQsNyArMjE1MCw3IEBACiAgICAgeyJpc3VwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3VwcGVyLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzdXBwZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfSk9JTl9NRVRIT0RERUYKLSAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBsanVzdF9fZG9jX199LAorICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9sanVzdF9fZG9jX199LAogICAgIHsibG93ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xvd2VyLCBNRVRIX05PQVJHUywgX1B5X2xvd2VyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRgpAQCAtMzA1MywyMyArMjE1OSwyMyBAQAogICAgIEJZVEVBUlJBWV9SRU1PVkVfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JFUExBQ0VfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JFVkVSU0VfTUVUSE9EREVGCi0gICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKLSAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAotICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCisgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgX1B5X3JmaW5kX19kb2NfX30sCisgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfcmluZGV4X19kb2NfX30sCisgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X3JqdXN0X19kb2NfX30sCiAgICAgQllURUFSUkFZX1JQQVJUSVRJT05fTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JTUExJVF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUlNUUklQX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUyAsCi0gICAgIHN0YXJ0c3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X3N0YXJ0c3dpdGhfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAogICAgIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKLSAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzA3OCw3ICsyMTg0LDcgQEAKIHsKICAgICBpZiAoIVB5Qnl0ZUFycmF5X0NoZWNrKHYpKQogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgcmV0dXJuIGJ5dGVhcnJheV9mb3JtYXQoKFB5Qnl0ZUFycmF5T2JqZWN0ICopdiwgdyk7CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdEV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyh2KSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUodiksIHcsIDEpOwogfQogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVhcnJheV9hc19udW1iZXIgPSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCmluZGV4IGEyOTk5MTUuLmQ1YzRmZTYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCisrKyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCkBAIC0xLDMgKzEsNCBAQAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgogCkBAIC0yNzcsNyArMjc4LDcgQEAKIGNoYXJhY3RlcnMsIGFsbCByZW1haW5pbmcgY2FzZWQgY2hhcmFjdGVycyBoYXZlIGxvd2VyY2FzZS4iKTsKIAogdm9pZAotX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKQEAgLTMwNiw3ICszMDcsNyBAQAogYW5kIHRoZSByZXN0IGxvd2VyLWNhc2VkLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTMzNiw3ICszMzcsNyBAQAogdG8gbG93ZXJjYXNlIEFTQ0lJIGFuZCB2aWNlIHZlcnNhLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKIApAQCAtMzg3LDMgKzM4OCw0MjcgQEAKIAogICAgIHJldHVybiByZXM7CiB9CisKKyNkZWZpbmUgRkFTVFNFQVJDSCBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSBzdHJpbmdsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9DSEFSIGNoYXIKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSIDEKKworI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKworLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2hldGhlciB0aGUKK2ZpcnN0IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgaW4gcmFuZ2UoMCwgMjU2KS4KKworSWYgdGhpcyBpcyB0aGUgY2FzZSwgd3JpdGVzIHRoZSBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBieXRlIHBhcmFtZXRlcgorYW5kIHNldHMgc3Vib2JqIHRvIE5VTEwuIE90aGVyd2lzZSwgc2V0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc3Vib2JqCithbmQgZG9lc24ndCB0b3VjaCBieXRlLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZgorc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKS4KKyovCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosIGNoYXIgKmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wX3N1Ym9iajsKKyAgICBQeV9zc2l6ZV90IGl2YWw7CisgICAgUHlPYmplY3QgKmVycjsKKworICAgIGlmKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1Ym9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFQeU51bWJlcl9DaGVjayh0bXBfc3Vib2JqKSkgeworICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdCh0bXBfc3Vib2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICBpZiAoaXZhbCA9PSAtMSkgeworICAgICAgICBlcnIgPSBQeUVycl9PY2N1cnJlZCgpOworICAgICAgICBpZiAoZXJyICYmICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXJyLCBQeUV4Y19PdmVyZmxvd0Vycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpzdWJvYmogPSBOVUxMOworICAgICpieXRlID0gKGNoYXIpaXZhbDsKKyAgICByZXR1cm4gMTsKK30KKworLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KKyNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKKyAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitmaW5kX2ludGVybmFsKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQoreworICAgIFB5T2JqZWN0ICpzdWJvYmo7CisgICAgY2hhciBieXRlOworICAgIFB5X2J1ZmZlciBzdWJidWY7CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlfc3NpemVfdCByZXM7CisKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfYnl0ZShmdW5jdGlvbl9uYW1lLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICBpZiAoc3Vib2JqKSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmc3ViYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTI7CisKKyAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQorICAgICAgICByZXMgPSAtMTsKKyAgICBlbHNlIGlmIChzdWJfbGVuID09IDEpIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9jaGFyKAorICAgICAgICAgICAgICAgIHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAqc3ViKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX2NoYXIoCisgICAgICAgICAgICAgICAgc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICpzdWIpOworICAgICAgICBpZiAocmVzID49IDApCisgICAgICAgICAgICByZXMgKz0gc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIHN0ciwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIGlmIChzdWJvYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9maW5kX19kb2NfXywKKyJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCitzdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKK2FyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKK1xuXAorUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19maW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgImZpbmQiLCBhcmdzLCArMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9pbmRleF9fZG9jX18sCisiQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2luZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgImluZGV4IiwgYXJncywgKzEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmZpbmRfX2RvY19fLAorIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAorc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCithcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCitcblwKK1JldHVybiAtMSBvbiBmYWlsdXJlLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfcmZpbmQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAicmZpbmQiLCBhcmdzLCAtMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9yaW5kZXhfX2RvY19fLAorIkIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitMaWtlIEIucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3JpbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJyaW5kZXgiLCBhcmdzLCAtMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9jb3VudF9fZG9jX18sCisiQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb24gc3ViIGluXG5cCitieXRlcyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKK2FzIGluIHNsaWNlIG5vdGF0aW9uLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfY291bnQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnN1Yl9vYmo7CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBjaGFyIGJ5dGU7CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOworCisgICAgUHlfYnVmZmVyIHZzdWI7CisgICAgUHlPYmplY3QgKmNvdW50X29iajsKKworICAgIGlmICghcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1Yl9vYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzdWJfb2JqKSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3ViX29iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKworICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKKyAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKKyAgICAgICAgKTsKKworICAgIGlmIChzdWJfb2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKworICAgIHJldHVybiBjb3VudF9vYmo7Cit9CisKK2ludAorX1B5X2J5dGVzX2NvbnRhaW5zKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgTlVMTCk7CisgICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9idWZmZXIgdmFyZzsKKyAgICAgICAgUHlfc3NpemVfdCBwb3M7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7CisgICAgICAgIHJldHVybiBwb3MgPj0gMDsKKyAgICB9CisgICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBtZW1jaHIoc3RyLCAoaW50KSBpdmFsLCBsZW4pICE9IE5VTEw7Cit9CisKKworLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHRoZSBidWZmZXIKKyAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKKyAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KKyAqLworc3RhdGljIGludAordGFpbG1hdGNoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCit7CisgICAgUHlfYnVmZmVyIHN1Yl92aWV3ID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHNsZW47CisKKyAgICBpZiAoUHlCeXRlc19DaGVjayhzdWJzdHIpKSB7CisgICAgICAgIHN1YiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHN1YnN0cik7CisgICAgICAgIHNsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHN1YnN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1YnN0ciwgJnN1Yl92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHN1YiA9IHN1Yl92aWV3LmJ1ZjsKKyAgICAgICAgc2xlbiA9IHN1Yl92aWV3LmxlbjsKKyAgICB9CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworCisgICAgaWYgKGRpcmVjdGlvbiA8IDApIHsKKyAgICAgICAgLyogc3RhcnRzd2l0aCAqLworICAgICAgICBpZiAoc3RhcnQgKyBzbGVuID4gbGVuKQorICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBlbmRzd2l0aCAqLworICAgICAgICBpZiAoZW5kIC0gc3RhcnQgPCBzbGVuIHx8IHN0YXJ0ID4gbGVuKQorICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKKworICAgICAgICBpZiAoZW5kIC0gc2xlbiA+IHN0YXJ0KQorICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSBzbGVuOworICAgIH0KKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzbGVuKQorICAgICAgICBnb3RvIG5vdGZvdW5kOworICAgIGlmIChtZW1jbXAoc3RyICsgc3RhcnQsIHN1Yiwgc2xlbikgIT0gMCkKKyAgICAgICAgZ290byBub3Rmb3VuZDsKKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKKyAgICByZXR1cm4gMTsKKworbm90Zm91bmQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorX1B5X2J5dGVzX3RhaWxtYXRjaChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK3sKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpzdWJvYmo7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgbGVuLCBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIGxlbiwgc3Vib2JqLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yIGEgdHVwbGUgb2YgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3N0YXJ0c3dpdGhfX2RvY19fLAorIkIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCitcblwKK1JldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKK1dpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKK1dpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCitwcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19zdGFydHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfdGFpbG1hdGNoKHN0ciwgbGVuLCAic3RhcnRzd2l0aCIsIGFyZ3MsIC0xKTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZW5kc3dpdGhfX2RvY19fLAorIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAorXG5cCitSZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAorV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKK3N1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2VuZHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfdGFpbG1hdGNoKHN0ciwgbGVuLCAiZW5kc3dpdGgiLCBhcmdzLCArMSk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2V4cGFuZHRhYnNfX2RvY19fLAorIkIuZXhwYW5kdGFicyh0YWJzaXplPTgpIC0+IGNvcHkgb2YgQlxuXAorXG5cCitSZXR1cm4gYSBjb3B5IG9mIEIgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSBleHBhbmRlZCB1c2luZyBzcGFjZXMuXG5cCitJZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfbGp1c3RfX2RvY19fLAorIkIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmp1c3RfX2RvY19fLAorIkIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkiKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfY2VudGVyX19kb2NfXywKKyJCLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUmV0dXJuIEIgY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiAgUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfemZpbGxfX2RvY19fLAorIkIuemZpbGwod2lkdGgpIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlBhZCBhIG51bWVyaWMgc3RyaW5nIEIgd2l0aCB6ZXJvcyBvbiB0aGUgbGVmdCwgdG8gZmlsbCBhIGZpZWxkXG4iCisib2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gIEIgaXMgbmV2ZXIgdHJ1bmNhdGVkLiIpOworCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKaW5kZXggMzkzNDMyOC4uNTk4ZjZhMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc29iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpAQCAtOSw5ICs5LDkgQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogLypbY2xpbmljIGlucHV0XQotY2xhc3MgYnl0ZXMgIlB5Qnl0ZXNPYmplY3QqIiAiJlB5Qnl0ZXNfVHlwZSIKK2NsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0ICoiICImUHlCeXRlc19UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MWExZDkxMDJhZmMxYjAwY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2EyMzhmOTY1ZDY0ODkyYl0qLwogCiAjaW5jbHVkZSAiY2xpbmljL2J5dGVzb2JqZWN0LmMuaCIKIApAQCAtMzAsNiArMzAsMTAgQEAKICovCiAjZGVmaW5lIFB5Qnl0ZXNPYmplY3RfU0laRSAob2Zmc2V0b2YoUHlCeXRlc09iamVjdCwgb2Jfc3ZhbCkgKyAxKQogCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqc3RyKTsKKwogLyoKICAgIEZvciBQeUJ5dGVzX0Zyb21TdHJpbmcoKSwgdGhlIHBhcmFtZXRlciBgc3RyJyBwb2ludHMgdG8gYSBudWxsLXRlcm1pbmF0ZWQKICAgIHN0cmluZyBjb250YWluaW5nIGV4YWN0bHkgYHNpemUnIGJ5dGVzLgpAQCAtMTE2LDcgKzEyMCw3IEBACiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwogCi0gICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOworICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCiAgICAgaWYgKHNpemUgPT0gMSkgewogICAgICAgICBjaGFyYWN0ZXJzWypzdHIgJiBVQ0hBUl9NQVhdID0gb3A7CkBAIC0xNTksNyArMTYzLDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOwogICAgIG9wLT5vYl9zaGFzaCA9IC0xOwotICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKzEpOworICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKzEpOwogICAgIC8qIHNoYXJlIHNob3J0IHN0cmluZ3MgKi8KICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIG51bGxzdHJpbmcgPSBvcDsKQEAgLTE3NCwxOTAgKzE3OCwxODQgQEAKIFB5T2JqZWN0ICoKIFB5Qnl0ZXNfRnJvbUZvcm1hdFYoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQogewotICAgIHZhX2xpc3QgY291bnQ7Ci0gICAgUHlfc3NpemVfdCBuID0gMDsKLSAgICBjb25zdCBjaGFyKiBmOwogICAgIGNoYXIgKnM7Ci0gICAgUHlPYmplY3QqIHN0cmluZzsKKyAgICBjb25zdCBjaGFyICpmOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgUHlfc3NpemVfdCBwcmVjOworICAgIGludCBsb25nZmxhZzsKKyAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICAvKiBMb25nZXN0IDY0LWJpdCBmb3JtYXR0ZWQgbnVtYmVyczoKKyAgICAgICAtICIxODQ0Njc0NDA3MzcwOTU1MTYxNVwwIiAoMjEgYnl0ZXMpCisgICAgICAgLSAiLTkyMjMzNzIwMzY4NTQ3NzU4MDhcMCIgKDIxIGJ5dGVzKQorICAgICAgIERlY2ltYWwgdGFrZXMgdGhlIG1vc3Qgc3BhY2UgKGl0IGlzbid0IGVub3VnaCBmb3Igb2N0YWwuKQogCi0gICAgUHlfVkFfQ09QWShjb3VudCwgdmFyZ3MpOwotICAgIC8qIHN0ZXAgMTogZmlndXJlIG91dCBob3cgbGFyZ2UgYSBidWZmZXIgd2UgbmVlZCAqLwotICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZjsKLSAgICAgICAgICAgIHdoaWxlICgqKytmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCi0gICAgICAgICAgICAgICAgOworICAgICAgIExvbmdlc3QgNjQtYml0IHBvaW50ZXIgcmVwcmVzZW50YXRpb246CisgICAgICAgIjB4ZmZmZmZmZmZmZmZmZmZmZlwwIiAoMTkgYnl0ZXMpLiAqLworICAgIGNoYXIgYnVmZmVyWzIxXTsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKLSAgICAgICAgICAgIC8qIHNraXAgdGhlICdsJyBvciAneicgaW4geyVsZCwgJXpkLCAlbHUsICV6dX0gc2luY2UKLSAgICAgICAgICAgICAqIHRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBhbW91bnQgb2Ygc3BhY2Ugd2UgcmVzZXJ2ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCgqZiA9PSAnbCcgfHwgKmYgPT0gJ3onKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpCi0gICAgICAgICAgICAgICAgKytmOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBjID0gdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIGlmIChjIDwgMCB8fCBjID4gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5Qnl0ZXNfRnJvbUZvcm1hdFYoKTogJWMgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RzIGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDI1NV0iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICd1JzogY2FzZSAnaSc6IGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogMjAgYnl0ZXMgaXMgZW5vdWdoIHRvIGhvbGQgYSA2NC1iaXQKLSAgICAgICAgICAgICAgICAgICBpbnRlZ2VyLiAgRGVjaW1hbCB0YWtlcyB0aGUgbW9zdCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICBUaGlzIGlzbid0IGVub3VnaCBmb3Igb2N0YWwuICovCi0gICAgICAgICAgICAgICAgbiArPSAyMDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHMgPSB2YV9hcmcoY291bnQsIGNoYXIqKTsKLSAgICAgICAgICAgICAgICBuICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogbWF4aW11bSA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgKiAweGZmZmZmZmZmZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgKiBzbyAxOSBjaGFyYWN0ZXJzIGlzIGVub3VnaC4KLSAgICAgICAgICAgICAgICAgKiBYWFggSSBjb3VudCAxOCAtLSB3aGF0J3MgdGhlIGV4dHJhIGZvcj8KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuICs9IDE5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBpZiB3ZSBzdHVtYmxlIHVwb24gYW4gdW5rbm93bgotICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdCBvZgotICAgICAgICAgICAgICAgICAgIHRoZSBmb3JtYXQgc3RyaW5nIHRvIHRoZSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICBzdHJpbmcuICh3ZSBjYW5ub3QganVzdCBza2lwIHRoZQotICAgICAgICAgICAgICAgICAgIGNvZGUsIHNpbmNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cKLSAgICAgICAgICAgICAgICAgICB3aGF0J3MgaW4gdGhlIGFyZ3VtZW50IGxpc3QpICovCi0gICAgICAgICAgICAgICAgbiArPSBzdHJsZW4ocCk7Ci0gICAgICAgICAgICAgICAgZ290byBleHBhbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbisrOwotICAgIH0KLSBleHBhbmQ6Ci0gICAgLyogc3RlcCAyOiBmaWxsIHRoZSBidWZmZXIgKi8KLSAgICAvKiBTaW5jZSB3ZSd2ZSBhbmFseXplZCBob3cgbXVjaCBzcGFjZSB3ZSBuZWVkIGZvciB0aGUgd29yc3QgY2FzZSwKLSAgICAgICB1c2Ugc3ByaW50ZiBkaXJlY3RseSBpbnN0ZWFkIG9mIHRoZSBzbG93ZXIgUHlPU19zbnByaW50Zi4gKi8KLSAgICBzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG4pOwotICAgIGlmICghc3RyaW5nKQorICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzdHJsZW4oZm9ybWF0KSk7CisgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKLSAgICBzID0gUHlCeXRlc19Bc1N0cmluZyhzdHJpbmcpOworI2RlZmluZSBXUklURV9CWVRFUyhzdHIpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcywgKHN0ciksIHN0cmxlbihzdHIpKTsgXAorICAgICAgICBpZiAocyA9PSBOVUxMKSBcCisgICAgICAgICAgICBnb3RvIGVycm9yOyBcCisgICAgfSB3aGlsZSAoMCkKIAogICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZisrOworICAgICAgICBpZiAoKmYgIT0gJyUnKSB7CisgICAgICAgICAgICAqcysrID0gKmY7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHAgPSBmKys7CisKKyAgICAgICAgLyogaWdub3JlIHRoZSB3aWR0aCAoZXg6IDEwIGluICIlMTBzIikgKi8KKyAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQorICAgICAgICAgICAgZisrOworCisgICAgICAgIC8qIHBhcnNlIHRoZSBwcmVjaXNpb24gKGV4OiAxMCBpbiAiJS4xMHMiKSAqLworICAgICAgICBwcmVjID0gMDsKKyAgICAgICAgaWYgKCpmID09ICcuJykgeworICAgICAgICAgICAgZisrOworICAgICAgICAgICAgZm9yICg7IFB5X0lTRElHSVQoKmYpOyBmKyspIHsKKyAgICAgICAgICAgICAgICBwcmVjID0gKHByZWMgKiAxMCkgKyAoKmYgLSAnMCcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKCpmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCisgICAgICAgICAgICBmKys7CisKKyAgICAgICAgLyogaGFuZGxlIHRoZSBsb25nIGZsYWcgKCdsJyksIGJ1dCBvbmx5IGZvciAlbGQgYW5kICVsdS4KKyAgICAgICAgICAgb3RoZXJzIGNhbiBiZSBhZGRlZCB3aGVuIG5lY2Vzc2FyeS4gKi8KKyAgICAgICAgbG9uZ2ZsYWcgPSAwOworICAgICAgICBpZiAoKmYgPT0gJ2wnICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKKyAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcgKCd6JykuICovCisgICAgICAgIHNpemVfdGZsYWcgPSAwOworICAgICAgICBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKKyAgICAgICAgICAgIHNpemVfdGZsYWcgPSAxOworICAgICAgICAgICAgKytmOworICAgICAgICB9CisKKyAgICAgICAgLyogc3VidHJhY3QgYnl0ZXMgcHJlYWxsb2NhdGVkIGZvciB0aGUgZm9ybWF0IHN0cmluZworICAgICAgICAgICAoZXg6IDIgZm9yICIlcyIpICovCisgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoZiAtIHAgKyAxKTsKKworICAgICAgICBzd2l0Y2ggKCpmKSB7CisgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICB7CisgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgIGlmIChjIDwgMCB8fCBjID4gMjU1KSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUJ5dGVzX0Zyb21Gb3JtYXRWKCk6ICVjIGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RzIGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDI1NV0iKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CisgICAgICAgICAgICAqcysrID0gKHVuc2lnbmVkIGNoYXIpYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlbGQiLCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlZCIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlbHUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiV1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWkiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIleCIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAncyc6CisgICAgICAgIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgIGludCBsb25nZmxhZyA9IDA7Ci0gICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZyA9IDA7Ci0gICAgICAgICAgICAvKiBwYXJzZSB0aGUgd2lkdGgucHJlY2lzaW9uIHBhcnQgKHdlJ3JlIG9ubHkKLSAgICAgICAgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIHByZWNpc2lvbiB2YWx1ZSwgaWYgYW55KSAqLwotICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCi0gICAgICAgICAgICAgICAgbiA9IChuKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICBpZiAoKmYgPT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgICAgIG4gPSAwOwotICAgICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IChuKjEwKSArICpmKysgLSAnMCc7CisKKyAgICAgICAgICAgIHAgPSB2YV9hcmcodmFyZ3MsIGNvbnN0IGNoYXIqKTsKKyAgICAgICAgICAgIGkgPSBzdHJsZW4ocCk7CisgICAgICAgICAgICBpZiAocHJlYyA+IDAgJiYgaSA+IHByZWMpCisgICAgICAgICAgICAgICAgaSA9IHByZWM7CisgICAgICAgICAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzLCBwLCBpKTsKKyAgICAgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KKyAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ1gnKQorICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlclsxXSAhPSAneCcpIHsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlcisyLCBidWZmZXIsIHN0cmxlbihidWZmZXIpKzEpOworICAgICAgICAgICAgICAgIGJ1ZmZlclswXSA9ICcwJzsKKyAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSAoKmYgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKLSAgICAgICAgICAgICAgICBmKys7Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIGxvbmcgZmxhZywgYnV0IG9ubHkgZm9yICVsZCBhbmQgJWx1LgotICAgICAgICAgICAgICAgb3RoZXJzIGNhbiBiZSBhZGRlZCB3aGVuIG5lY2Vzc2FyeS4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CisgICAgICAgICAgICAqcysrID0gJyUnOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICgqZiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZml4IG1pbl9zaXplIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZm9ybWF0IHN0cmluZyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyh2YXJncywgaW50KTsKLSAgICAgICAgICAgICAgICAvKiBjIGhhcyBiZWVuIGNoZWNrZWQgZm9yIG92ZXJmbG93IGluIHRoZSBmaXJzdCBzdGVwICovCi0gICAgICAgICAgICAgICAgKnMrKyA9ICh1bnNpZ25lZCBjaGFyKWM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVsZCIsIHZhX2FyZyh2YXJncywgbG9uZykpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlZCIsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVsdSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIldSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWkiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXgiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgcCA9IHZhX2FyZyh2YXJncywgY2hhciopOwotICAgICAgICAgICAgICAgIGkgPSBzdHJsZW4ocCk7Ci0gICAgICAgICAgICAgICAgaWYgKG4gPiAwICYmIGkgPiBuKQotICAgICAgICAgICAgICAgICAgICBpID0gbjsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocywgcCwgaSk7Ci0gICAgICAgICAgICAgICAgcyArPSBpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXAiLCB2YV9hcmcodmFyZ3MsIHZvaWQqKSk7Ci0gICAgICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KLSAgICAgICAgICAgICAgICBpZiAoc1sxXSA9PSAnWCcpCi0gICAgICAgICAgICAgICAgICAgIHNbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSAhPSAneCcpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShzKzIsIHMsIHN0cmxlbihzKSsxKTsKLSAgICAgICAgICAgICAgICAgICAgc1swXSA9ICcwJzsKLSAgICAgICAgICAgICAgICAgICAgc1sxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICAqcysrID0gJyUnOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBzdHJjcHkocywgcCk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICAgICAgLyogaW52YWxpZCBmb3JtYXQgc3RyaW5nOiBjb3B5IHVuZm9ybWF0dGVkIHN0cmluZyBhbmQgZXhpdCAqLworICAgICAgICAgICAgV1JJVEVfQllURVMocCk7CisgICAgICAgICAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHMpOworICAgICAgICB9CiAgICAgfQogCi0gZW5kOgotICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmc3RyaW5nLCBzIC0gUHlCeXRlc19BU19TVFJJTkcoc3RyaW5nKSk7Ci0gICAgcmV0dXJuIHN0cmluZzsKKyN1bmRlZiBXUklURV9CWVRFUworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzKTsKKworIGVycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTQwOSwxMiArNDA3LDE0IEBACiAKIC8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlCeXRlcyBvYmplY3QsIG9yIE5VTEwgb24gZmFpbHVyZS4gKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3N0YXRpYyBjaGFyKgorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlLAorICAgICAgICAgICAgUHlPYmplY3QgKipwX3Jlc3VsdCwgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQogewogICAgIGNoYXIgKnA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKKyAgICBzaXplX3QgbGVuOwogCiAgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CiAgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC00MzEsOSArNDMxLDIyIEBACiAKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHAsIHN0cmxlbihwKSk7CisKKyAgICBsZW4gPSBzdHJsZW4ocCk7CisgICAgaWYgKHdyaXRlciAhPSBOVUxMKSB7CisgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIGxlbik7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtZW1jcHkoc3RyLCBwLCBsZW4pOworICAgICAgICBQeU1lbV9GcmVlKHApOworICAgICAgICBzdHIgKz0gbGVuOworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocCwgbGVuKTsKICAgICBQeU1lbV9GcmVlKHApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgKnBfcmVzdWx0ID0gcmVzdWx0OworICAgIHJldHVybiBzdHI7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NzMsMTEgKzQ4NiwxMSBAQAogc3RhdGljIGludAogYnl0ZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgY2hhciAqcCkKIHsKLSAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfU2l6ZShhcmcpID09IDEpIHsKKyAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKSA9PSAxKSB7CiAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKGFyZykgJiYgUHlCeXRlQXJyYXlfU2l6ZShhcmcpID09IDEpIHsKKyAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKGFyZykgPT0gMSkgewogICAgICAgICAqcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhhcmcpWzBdOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC01NTcsMzYgKzU3MCwzNiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0vKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikKLQotICAgRk9STUFUQlVGTEVOIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB3aGljaCB0aGUgaW50cyAmCi0gICBjaGFycyBhcmUgZm9ybWF0dGVkLiBYWFggVGhpcyBpcyBhIG1hZ2ljIG51bWJlci4gRWFjaCBmb3JtYXR0aW5nCi0gICByb3V0aW5lIGRvZXMgYm91bmRzIGNoZWNraW5nIHRvIGVuc3VyZSBubyBvdmVyZmxvdywgYnV0IGEgYmV0dGVyCi0gICBzb2x1dGlvbiBtYXkgYmUgdG8gbWFsbG9jIGEgYnVmZmVyIG9mIGFwcHJvcHJpYXRlIHNpemUgZm9yIGVhY2gKLSAgIGZvcm1hdC4gRm9yIG5vdywgdGhlIGN1cnJlbnQgc29sdXRpb24gaXMgc3VmZmljaWVudC4KLSovCi0jZGVmaW5lIEZPUk1BVEJVRkxFTiAoc2l6ZV90KTEyMAorLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pICovCiAKIFB5T2JqZWN0ICoKLV9QeUJ5dGVzX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LCBQeU9iamVjdCAqYXJncykKK19QeUJ5dGVzX0Zvcm1hdEV4KGNvbnN0IGNoYXIgKmZvcm1hdCwgUHlfc3NpemVfdCBmb3JtYXRfbGVuLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIGludCB1c2VfYnl0ZWFycmF5KQogewotICAgIGNoYXIgKmZtdCwgKnJlczsKKyAgICBjb25zdCBjaGFyICpmbXQ7CisgICAgY2hhciAqcmVzOwogICAgIFB5X3NzaXplX3QgYXJnbGVuLCBhcmdpZHg7Ci0gICAgUHlfc3NpemVfdCByZXNsZW4sIHJlc2NudCwgZm10Y250OworICAgIFB5X3NzaXplX3QgZm10Y250OwogICAgIGludCBhcmdzX293bmVkID0gMDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKLSAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgIVB5Qnl0ZXNfQ2hlY2soZm9ybWF0KSB8fCBhcmdzID09IE5VTEwpIHsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoZm9ybWF0KTsKLSAgICBmbXRjbnQgPSBQeUJ5dGVzX0dFVF9TSVpFKGZvcm1hdCk7Ci0gICAgcmVzbGVuID0gcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCByZXNsZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICBmbXQgPSBmb3JtYXQ7CisgICAgZm10Y250ID0gZm9ybWF0X2xlbjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLnVzZV9ieXRlYXJyYXkgPSB1c2VfYnl0ZWFycmF5OworCisgICAgcmVzID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgZm10Y250KTsKKyAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBpZiAoIXVzZV9ieXRlYXJyYXkpCisgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKICAgICAgICAgYXJnaWR4ID0gMDsKQEAgLTYwMCwxOCArNjEzLDIzIEBACiAgICAgICAgICFQeUJ5dGVBcnJheV9DaGVjayhhcmdzKSkgewogICAgICAgICAgICAgZGljdCA9IGFyZ3M7CiAgICAgfQorCiAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKICAgICAgICAgaWYgKCpmbXQgIT0gJyUnKSB7Ci0gICAgICAgICAgICBpZiAoLS1yZXNjbnQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OwotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnJlcysrID0gKmZtdCsrOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBjaGFyICpwb3M7CisKKyAgICAgICAgICAgIHBvcyA9IHN0cmNocihmbXQgKyAxLCAnJScpOworICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGxlbiA9IHBvcyAtIGZtdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsZW4gPSBmb3JtYXRfbGVuIC0gKGZtdCAtIGZvcm1hdCk7CisgICAgICAgICAgICBhc3NlcnQobGVuICE9IDApOworCisgICAgICAgICAgICBtZW1jcHkocmVzLCBmbXQsIGxlbik7CisgICAgICAgICAgICByZXMgKz0gbGVuOworICAgICAgICAgICAgZm10ICs9IGxlbjsKKyAgICAgICAgICAgIGZtdGNudCAtPSAobGVuIC0gMSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCkBAIC02MjYsMTAgKzY0NCwxNCBAQAogICAgICAgICAgICAgaW50IHNpZ247CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAgICAgICAgICAgICBjaGFyIG9uZWNoYXI7IC8qIEZvciBieXRlX2NvbnZlcnRlcigpICovCisgICAgICAgICAgICBQeV9zc2l6ZV90IGFsbG9jOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICBjaGFyICpiZWZvcmU7CisjZW5kaWYKIAogICAgICAgICAgICAgZm10Kys7CiAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKCcpIHsKLSAgICAgICAgICAgICAgICBjaGFyICprZXlzdGFydDsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXlzdGFydDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOwpAQCAtNjczLDYgKzY5NSw4IEBACiAgICAgICAgICAgICAgICAgYXJnbGVuID0gLTE7CiAgICAgICAgICAgICAgICAgYXJnaWR4ID0gLTI7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIGZsYWdzLiBFeGFtcGxlOiAiJStpIiA9PiBmbGFncz1GX1NJR04uICovCiAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAoYyA9ICpmbXQrKykgewogICAgICAgICAgICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBGX0xKVVNUOyBjb250aW51ZTsKQEAgLTY4Myw2ICs3MDcsOCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2Ugd2lkdGguIEV4YW1wbGU6ICIlMTBzIiA9PiB3aWR0aD0xMCAqLwogICAgICAgICAgICAgaWYgKGMgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQpAQCAtNzE3LDYgKzc0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gd2lkdGgqMTAgKyAoYyAtICcwJyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSBwcmVjaXNpb24uIEV4YW1wbGU6ICIlLjNmIiA9PiBwcmVjPTMgKi8KICAgICAgICAgICAgIGlmIChjID09ICcuJykgewogICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQpAQCAtNzcxLDEzICs3OTksMTkgQEAKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZm10Y250IDwgMCkgeworICAgICAgICAgICAgICAgIC8qIGxhc3Qgd3JpdGVyOiBkaXNhYmxlIHdyaXRlciBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAwOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBzaWduID0gMDsKICAgICAgICAgICAgIGZpbGwgPSAnICc7CiAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIHBidWYgPSAiJSI7Ci0gICAgICAgICAgICAgICAgbGVuID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAqcmVzKysgPSAnJSc7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgICAgIC8vICVyIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICVhCiAgICAgICAgICAgICBjYXNlICdhJzoKQEAgLTc5MCw2ICs4MjQsNyBAQAogICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKICAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgLy8gJXMgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWIKICAgICAgICAgICAgIGNhc2UgJ2InOgpAQCAtNzk5LDEyICs4MzQsNDkgQEAKICAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCiAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikKKyAgICAgICAgICAgICAgICAgICAgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKQorICAgICAgICAgICAgICAgICAgICAmJiBjICE9ICdYJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpbnQgYWx0ZXJuYXRlID0gZmxhZ3MgJiBGX0FMVDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U7CisKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIid0eXBlJyBub3QgaW4gW2RpdW94WF0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAyOyAvKiBzaXplIHByZWFsbG9jYXRlZCBmb3IgIiVkIiAqLworICAgICAgICAgICAgICAgICAgICByZXMgPSBfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKCZ3cml0ZXIsIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCBiYXNlLCBhbHRlcm5hdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0bG9uZyh2LCBmbGFncywgcHJlYywgYyk7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtODE1LDE0ICs4ODcsMjUgQEAKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOwotICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDI7IC8qIHNpemUgcHJlYWxsb2NhdGVkIGZvciAiJWYiICovCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyLCByZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCAmdGVtcCwgTlVMTCwgcmVzKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICBwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodGVtcCk7CiAgICAgICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRSh0ZW1wKTsKQEAgLTgzMCwyMSArOTEzLDI4IEBACiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgICAgICBwYnVmID0gJm9uZWNoYXI7CiAgICAgICAgICAgICAgICAgbGVuID0gYnl0ZV9jb252ZXJ0ZXIodiwgJm9uZWNoYXIpOwogICAgICAgICAgICAgICAgIGlmICghbGVuKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gb25lY2hhcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgJyVjJyAoMHgleCkgIgogICAgICAgICAgICAgICAgICAgImF0IGluZGV4ICV6ZCIsCiAgICAgICAgICAgICAgICAgICBjLCBjLAotICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcoZm9ybWF0KSkpOworICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLSBmb3JtYXQpKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoc2lnbikgewogICAgICAgICAgICAgICAgIGlmICgqcGJ1ZiA9PSAnLScgfHwgKnBidWYgPT0gJysnKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAqcGJ1ZisrOwpAQCAtODU5LDI5ICs5NDksMzEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKICAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKLSAgICAgICAgICAgIGlmIChyZXNjbnQgLSAoc2lnbiAhPSAwKSA8IHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgcmVzbGVuIC09IHJlc2NudDsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSB3aWR0aCArIGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChyZXNsZW4gPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OworCisgICAgICAgICAgICBhbGxvYyA9IHdpZHRoOworICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCAmJiBsZW4gPT0gd2lkdGgpCisgICAgICAgICAgICAgICAgYWxsb2MrKzsKKyAgICAgICAgICAgIC8qIDI6IHNpemUgcHJlYWxsb2NhdGVkIGZvciAlcyAqLworICAgICAgICAgICAgaWYgKGFsbG9jID4gMikgeworICAgICAgICAgICAgICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcmVzLCBhbGxvYyAtIDIpOworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgYmVmb3JlID0gcmVzOworI2VuZGlmCisKKyAgICAgICAgICAgIC8qIFdyaXRlIHRoZSBzaWduIGlmIG5lZWRlZCAqLwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpCiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247Ci0gICAgICAgICAgICAgICAgcmVzY250LS07CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQogICAgICAgICAgICAgICAgICAgICB3aWR0aC0tOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBXcml0ZSB0aGUgbnVtZXJpYyBwcmVmaXggZm9yICJ4IiwgIlgiIGFuZCAibyIgZm9ybWF0cworICAgICAgICAgICAgICAgaWYgdGhlIGFsdGVybmF0ZSBmb3JtIGlzIHVzZWQuCisgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgd3JpdGUgIjB4IiBmb3IgdGhlICIlI3giIGZvcm1hdC4gKi8KICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSkgewogICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7CkBAIC04ODksMTggKzk4MSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXNjbnQgLT0gMjsKICAgICAgICAgICAgICAgICB3aWR0aCAtPSAyOwogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKICAgICAgICAgICAgICAgICBsZW4gLT0gMjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFkIGxlZnQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCiAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7Ci0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gZmlsbDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLXdpZHRoID4gbGVuKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQocmVzLCBmaWxsLCB3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgcmVzICs9ICh3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHBhZGRpbmcgd2l0aCBzcGFjZXM6IHdyaXRlIHNpZ24gaWYgbmVlZGVkIGFuZC9vciBudW1lcmljCisgICAgICAgICAgICAgICBwcmVmaXggaWYgdGhlIGFsdGVybmF0ZSBmb3JtIGlzIHVzZWQgKi8KICAgICAgICAgICAgIGlmIChmaWxsID09ICcgJykgewogICAgICAgICAgICAgICAgIGlmIChzaWduKQogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwpAQCAtOTEyLDEzICsxMDA3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlcywgcGJ1ZiwgbGVuKTsKKworICAgICAgICAgICAgLyogQ29weSBieXRlcyAqLworICAgICAgICAgICAgbWVtY3B5KHJlcywgcGJ1ZiwgbGVuKTsKICAgICAgICAgICAgIHJlcyArPSBsZW47Ci0gICAgICAgICAgICByZXNjbnQgLT0gbGVuOwotICAgICAgICAgICAgd2hpbGUgKC0td2lkdGggPj0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgKnJlcysrID0gJyAnOworCisgICAgICAgICAgICAvKiBQYWQgcmlnaHQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pIHsKKyAgICAgICAgICAgICAgICBtZW1zZXQocmVzLCAnICcsIHdpZHRoIC0gbGVuKTsKKyAgICAgICAgICAgICAgICByZXMgKz0gKHdpZHRoIC0gbGVuKTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGRpY3QgJiYgKGFyZ2lkeCA8IGFyZ2xlbikgJiYgYyAhPSAnJScpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOwpAQCAtOTI2LDIyICsxMDI1LDMxIEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgLyogY2hlY2sgdGhhdCB3ZSBjb21wdXRlZCB0aGUgZXhhY3Qgc2l6ZSBmb3IgdGhpcyB3cml0ZSAqLworICAgICAgICAgICAgYXNzZXJ0KChyZXMgLSBiZWZvcmUpID09IGFsbG9jKTsKKyNlbmRpZgogICAgICAgICB9IC8qICclJyAqLworCisgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgIHdyaXRlLiBPdGhlcndpc2UsIHdlIG1pc3NlZCBhbiBvcHRpbWl6YXRpb24gKi8KKyAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgZm10Y250IDwgMCB8fCB1c2VfYnl0ZWFycmF5KTsKICAgICB9IC8qIHVudGlsIGVuZCAqLworCiAgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4gLSByZXNjbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcmVzKTsKIAogIGVycm9yOgotICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KQEAgLTk2MSw2ICsxMDY5LDQyIEBACiAgICB0aGUgc3RyaW5nIGlzIFVURi04IGVuY29kZWQgYW5kIHNob3VsZCBiZSByZS1lbmNvZGVkIGluIHRoZQogICAgc3BlY2lmaWVkIGVuY29kaW5nLiAgKi8KIAorc3RhdGljIGNoYXIgKgorX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlUmVjb2RlKGNvbnN0IGNoYXIgKipzLCBjb25zdCBjaGFyICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqcCkKK3sKKyAgICBQeU9iamVjdCAqdSwgKnc7CisgICAgY29uc3QgY2hhciogdDsKKworICAgIHQgPSAqczsKKyAgICAvKiBEZWNvZGUgbm9uLUFTQ0lJIGJ5dGVzIGFzIFVURi04LiAqLworICAgIHdoaWxlICh0IDwgZW5kICYmICgqdCAmIDB4ODApKQorICAgICAgICB0Kys7CisgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KCpzLCB0IC0gKnMsIGVycm9ycyk7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBSZWNvZGUgdGhlbSBpbiB0YXJnZXQgZW5jb2RpbmcuICovCisgICAgdyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwgcmVjb2RlX2VuY29kaW5nLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih1KTsKKyAgICBpZiAgKHcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sodykpOworCisgICAgLyogQXBwZW5kIGJ5dGVzIHRvIG91dHB1dCBidWZmZXIuICovCisgICAgd3JpdGVyLT5taW5fc2l6ZS0tOyAgIC8qIHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcyh3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRSh3KSk7CisgICAgUHlfREVDUkVGKHcpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgKnMgPSB0OworICAgIHJldHVybiBwOworfQorCiBQeU9iamVjdCAqUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKQEAgLTk2OCw1NCArMTExMiw0MiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcpCiB7CiAgICAgaW50IGM7Ci0gICAgY2hhciAqcCwgKmJ1ZjsKKyAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBQeV9zc2l6ZV90IG5ld2xlbiA9IHJlY29kZV9lbmNvZGluZyA/IDQqbGVuOmxlbjsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIG5ld2xlbik7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodik7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisKICAgICBlbmQgPSBzICsgbGVuOwogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIGlmICgqcyAhPSAnXFwnKSB7CiAgICAgICAgICAgbm9uX2VzYzoKLSAgICAgICAgICAgIGlmIChyZWNvZGVfZW5jb2RpbmcgJiYgKCpzICYgMHg4MCkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdSwgKnc7Ci0gICAgICAgICAgICAgICAgY2hhciAqcjsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0OwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgcm47Ci0gICAgICAgICAgICAgICAgdCA9IHM7Ci0gICAgICAgICAgICAgICAgLyogRGVjb2RlIG5vbi1BU0NJSSBieXRlcyBhcyBVVEYtOC4gKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAodCA8IGVuZCAmJiAoKnQgJiAweDgwKSkgdCsrOwotICAgICAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCB0IC0gcywgZXJyb3JzKTsKLSAgICAgICAgICAgICAgICBpZighdSkgZ290byBmYWlsZWQ7Ci0KLSAgICAgICAgICAgICAgICAvKiBSZWNvZGUgdGhlbSBpbiB0YXJnZXQgZW5jb2RpbmcuICovCi0gICAgICAgICAgICAgICAgdyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIHUsIHJlY29kZV9lbmNvZGluZywgZXJyb3JzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF3KSAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0KLSAgICAgICAgICAgICAgICAvKiBBcHBlbmQgYnl0ZXMgdG8gb3V0cHV0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayh3KSk7Ci0gICAgICAgICAgICAgICAgciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHcpOwotICAgICAgICAgICAgICAgIHJuID0gUHlCeXRlc19HRVRfU0laRSh3KTsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocCwgciwgcm4pOwotICAgICAgICAgICAgICAgIHAgKz0gcm47Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgICAgIHMgPSB0OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghKHJlY29kZV9lbmNvZGluZyAmJiAoKnMgJiAweDgwKSkpIHsKICAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG5vbi1BU0NJSSBjaGFyYWN0ZXIgYW5kIG5lZWQgdG8gcmVjb2RlICovCisgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCByZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVyLCBwKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisKICAgICAgICAgcysrOwotICAgICAgICBpZiAocz09ZW5kKSB7CisgICAgICAgIGlmIChzID09IGVuZCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyYWlsaW5nIFxcIGluIHN0cmluZyIpOwogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKCpzKyspIHsKICAgICAgICAgLyogWFhYIFRoaXMgYXNzdW1lcyBBU0NJSSEgKi8KICAgICAgICAgY2FzZSAnXG4nOiBicmVhazsKQEAgLTEwNDAsMjggKzExNzIsMTggQEAKICAgICAgICAgICAgICpwKysgPSBjOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgaWYgKHMrMSA8IGVuZCAmJiBQeV9JU1hESUdJVChzWzBdKSAmJiBQeV9JU1hESUdJVChzWzFdKSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB4ID0gMDsKLSAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKnMpOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgeCA9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlfSVNMT1dFUihjKSkKLSAgICAgICAgICAgICAgICAgICAgeCA9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHggPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgICAgICAgICAgeCA9IHggPDwgNDsKLSAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKnMpOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgeCArPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IHg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAocysxIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgaW50IGRpZ2l0MSwgZGlnaXQyOworICAgICAgICAgICAgICAgIGRpZ2l0MSA9IF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSyhzWzBdKV07CisgICAgICAgICAgICAgICAgZGlnaXQyID0gX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKHNbMV0pXTsKKyAgICAgICAgICAgICAgICBpZiAoZGlnaXQxIDwgMTYgJiYgZGlnaXQyIDwgMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSgoZGlnaXQxIDw8IDQpICsgZGlnaXQyKTsKKyAgICAgICAgICAgICAgICAgICAgcyArPSAyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBpbnZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0cyAqLworCiAgICAgICAgICAgICBpZiAoIWVycm9ycyB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBcXHggZXNjYXBlIGF0IHBvc2l0aW9uICVkIiwKQEAgLTEwODMsMTggKzEyMDUsMjAgQEAKICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmIFB5X0lTWERJR0lUKHNbMF0pKQogICAgICAgICAgICAgICAgIHMrKzsgLyogYW5kIGEgaGV4ZGlnaXQgKi8KICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAnXFwlYyciLCAqKC0tcykpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgcy0tOwogICAgICAgICAgICAgZ290byBub25fZXNjOyAvKiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHVuZXNjYXBlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYtOCBieXRlcyBtYXkgZm9sbG93LiAqLwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwLWJ1ZiA8IG5ld2xlbikKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZ2LCBwIC0gYnVmKTsKLSAgICByZXR1cm4gdjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CisKICAgZmFpbGVkOgotICAgIFB5X0RFQ1JFRih2KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xMzQ5LDEyICsxNDczLDEyIEBACiAgICAgfQogICAgIGkgPSAwOwogICAgIGlmIChpIDwgc2l6ZSkgewotICAgICAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOworICAgICAgICBtZW1jcHkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOwogICAgICAgICBpID0gUHlfU0laRShhKTsKICAgICB9CiAgICAgd2hpbGUgKGkgPCBzaXplKSB7CiAgICAgICAgIGogPSAoaSA8PSBzaXplLWkpICA/ICBpICA6ICBzaXplLWk7Ci0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CiAgICAgICAgIGkgKz0gajsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKQEAgLTEzNjMsMjQgKzE0ODcsNyBAQAogc3RhdGljIGludAogYnl0ZXNfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9idWZmZXIgdmFyZzsKLSAgICAgICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlfU0laRShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7Ci0gICAgICAgIHJldHVybiBwb3MgPj0gMDsKLSAgICB9Ci0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHJldHVybiBtZW1jaHIoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIChpbnQpIGl2YWwsIFB5X1NJWkUoc2VsZikpICE9IE5VTEw7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb250YWlucyhQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJnKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzOTMsNyArMTUwMCw3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygodW5zaWduZWQgY2hhcilhLT5vYl9zdmFsW2ldKTsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogYnl0ZXNfY29tcGFyZV9lcShQeUJ5dGVzT2JqZWN0ICphLCBQeUJ5dGVzT2JqZWN0ICpiKQogewogICAgIGludCBjbXA7CkBAIC0xNjI3LDggKzE3MzQsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJkZTQ0ZGFjYjM2ZWYyZSBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTIxMjZiNTg0NGMxZDhlZiBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKQEAgLTE2NTIsNyArMTc1OSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5wYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY2OCw3ICsxNzc0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3BhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9YmM4NTVkYzYzY2E5NDlkZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9NjFjY2E5NTUxOTQwNjA5OV0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfcGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLApAQCAtMTY4MCw3ICsxNzg2LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJwYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY5Niw3ICsxODAxLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JwYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY1ODhmZmYyNjJhOTE3MGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY3ZjY4OWU2M2E2MmQ0NzhdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX3JwYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCkBAIC0xNzE0LDggKzE4MTksOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiNjU3MGI5Nzc5MTFkODggaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYTY5OGQ5ZWEwMWUxYzhmIGlucHV0PTBmODZjOWYyOGY3ZDdiN2JdKi8KIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwpAQCAtMTc1Myw4ICsxODU4LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2pvaW4oUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0YWZmMTQ3NjRmZjk5NyBpbnB1dD03ZmUzNzdiOTViZDU0OWQyXSovCitieXRlc19qb2luKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDQ2ZjM3OWY2MjZmNmY4IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CkBAIC0xNzY3LDE1OCArMTg3MiwzMCBAQAogICAgIHJldHVybiBieXRlc19qb2luKChQeUJ5dGVzT2JqZWN0KilzZXAsIHgpOwogfQogCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWJ5dGVzX2ZpbmRfaW50ZXJuYWwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCi17Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfYnVmZmVyIHN1YmJ1ZjsKLSAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47Ci0gICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiAtMjsKLQotICAgIGlmIChzdWJvYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMjsKLQotICAgICAgICBzdWIgPSBzdWJidWYuYnVmOwotICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0gICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKLSAgICAgICAgcmVzID0gLTE7Ci0gICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxCi0jaWZuZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgJiYgZGlyID4gMAotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gKnN1YjsKLSAgICAgICAgaW50IG1vZGUgPSAoZGlyID4gMCkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2Zhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKAotICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIGlmIChyZXMgPj0gMCkKLSAgICAgICAgICAgIHJlcyArPSBzdGFydDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChkaXIgPiAwKQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIH0KLQotICAgIGlmIChzdWJvYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLVB5RG9jX1NUUlZBUihmaW5kX19kb2NfXywKLSJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2ZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19maW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAotIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2luZGV4KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZXNfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdHJpbmcgbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19pbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJmaW5kX19kb2NfXywKLSJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcmZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJpbmRleF9fZG9jX18sCi0iQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yaW5kZXgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0cmluZyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIApAQCAtMjAwNSw3ICsxOTgyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMTYsNyArMTk5Miw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19zdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PTM3ZGFhNWZhZDEzOTVkOTVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PThhMzU0NjQwZTRlMGIzZWZdKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBieXRlcyk7CiB9CkBAIC0yMDI0LDcgKzIwMDAsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMubHN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMzUsNyArMjAxMCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD04ODgxMWIwOWRmYmMyOTg4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD05YmFmZjQzOThjM2Y2ODU3XSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYnl0ZXMpOwogfQpAQCAtMjA0Myw3ICsyMDE4LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJzdHJpcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCiAgICAgLwogCkBAIC0yMDU0LDgxICsyMDI4LDM3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD04ZjkzYzljZDM2MWYwMTQwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD1iNzhhZjQ0NWM3MjdlMzJiXSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIFJJR0hUU1RSSVAsIGJ5dGVzKTsKIH0KIAogCi1QeURvY19TVFJWQVIoY291bnRfX2RvY19fLAotIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgc3ViIGluXG5cCi1zdHJpbmcgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCi1hcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2NvdW50KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotCi0gICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmNvdW50X29iajsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHN1Yl9vYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgc3ViID0gdnN1Yi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLQotICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKLQotICAgIGlmIChzdWJfb2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKLQotICAgIHJldHVybiBjb3VudF9vYmo7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb3VudChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMudHJhbnNsYXRlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgdGFibGU6IG9iamVjdAogICAgICAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LgotICAgIFsKLSAgICBkZWxldGVjaGFyczogb2JqZWN0Ci0gICAgXQogICAgIC8KKyAgICBkZWxldGUgYXMgZGVsZXRlY2hhcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogCiBSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIAotQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgogVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzM2RmODUwZWI1MGJmOGQgaW5wdXQ9ZDhmYTU1MTlkN2NjNGJlN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzYmUzNDM3ZjE5NTYyMTEgaW5wdXQ9MGVjZGYxNTlmNjU0MjMzY10qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIFB5X2J1ZmZlciB0YWJsZV92aWV3ID0ge05VTEwsIE5VTEx9OwpAQCAtMjE4OSw3ICsyMTE5LDcgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKICAgICBpZiAoZGVsbGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewpAQCAtMjI2NSw0OTggKzIxOTUsNiBAQAogICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGZybSwgdG8pOwogfQogCi0vKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCi0KLSNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKLQotLyogU3RyaW5nIG9wcyBtdXN0IHJldHVybiBhIHN0cmluZy4gICovCi0vKiBJZiB0aGUgb2JqZWN0IGlzIHN1YmNsYXNzIG9mIHN0cmluZywgY3JlYXRlIGEgY29weSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmV0dXJuX3NlbGYoUHlCeXRlc09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfQotICAgIHJldHVybiAoUHlCeXRlc09iamVjdCAqKVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLAotICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLX0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1jb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBQeV9zc2l6ZV90IGNvdW50PTA7Ci0gICAgY29uc3QgY2hhciAqc3RhcnQ9dGFyZ2V0OwotICAgIGNvbnN0IGNoYXIgKmVuZD10YXJnZXQrdGFyZ2V0X2xlbjsKLQotICAgIHdoaWxlICggKHN0YXJ0PWZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGMpKSAhPSBOVUxMICkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RhcnQgKz0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGNvdW50OwotfQotCi0KLS8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KLQotLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9pbnRlcmxlYXZlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGk7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7Ci0gICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KLSAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pCi0gICAgICAgIGNvdW50ID0gbWF4Y291bnQ7Ci0gICAgZWxzZQotICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLwotICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IGJ5dGVzIGFyZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47Ci0KLSAgICBpZiAoISAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAvKiBUT0RPOiBzcGVjaWFsIGNhc2Ugc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggZG9lc24ndCBuZWVkIG1lbWNweSAqLwotCi0gICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICBjb3VudCAtPSAxOwotCi0gICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuLWkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCi0gICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkgewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOwotICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7Ci0KLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0KLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3MsICpzdGFydCwgKmVuZCwgKm5leHQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKLQotICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0LXNlbGZfcyk7Ci0gICAgKnN0YXJ0ID0gdG9fYzsKLSAgICBzdGFydCsrOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKm5leHQgPSB0b19jOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKmVuZDsKLSAgICBjaGFyICpzZWxmX3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKLSAgICBQeV9NRU1DUFkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldD09LTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHN0YXJ0K29mZnNldCwgdG9fcywgZnJvbV9sZW4pOwotICAgICAgICBzdGFydCArPSBvZmZzZXQrZnJvbV9sZW47Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZyhQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KSB7Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0K29mZnNldDsKLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBpZiAobWF4Y291bnQgPCAwKSB7Ci0gICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKG1heGNvdW50ID09IDAgfHwKLSAgICAgICAgKGZyb21fbGVuID09IDAgJiYgdG9fbGVuID09IDApKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IDApIHsKLSAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIHN0cmluZyBldmVyeXdoZXJlLiAgICovCi0gICAgICAgIC8qICAgID4+PiAiUHl0aG9uIi5yZXBsYWNlKCIiLCAiLiIpICAgICAqLwotICAgICAgICAvKiAgICAnLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci0KLSAgICAvKiBFeGNlcHQgZm9yICIiLnJlcGxhY2UoIiIsICJBIikgPT0gIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLwotICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIHN0cmluZyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBzdHJpbmcgKi8KLSAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IHN0cmluZyAqLwotICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmICh0b19sZW4gPT0gMCkgewotICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBzdHJpbmcgKi8KLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgewotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICB0b19zWzBdLAotICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KLSAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKHNlbGYsIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgfQotfQotCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJlcGxhY2UKQEAgLTI3NzUsMTU2ICsyMjEzLDI4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAogICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDAzZGM5ZDdhODNjNWExZCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk0ZmE1ODhiNmI5YzEwNCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCiB7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOworICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZSgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLyoqIEVuZCBEQUxLRSAqKi8KIAotLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHNlbGYKLSAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKLSAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KLSAqLwotUHlfTE9DQUwoaW50KQotX2J5dGVzX3RhaWxtYXRjaChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotICAgIFB5X3NzaXplX3Qgc2xlbjsKLSAgICBQeV9idWZmZXIgc3ViX3ZpZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgY29uc3QgY2hhciogc3ViOwotICAgIGNvbnN0IGNoYXIqIHN0cjsKLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1YnN0cikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vic3RyKTsKLSAgICAgICAgc2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vic3RyKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmc3ViX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc3ViID0gc3ViX3ZpZXcuYnVmOwotICAgICAgICBzbGVuID0gc3ViX3ZpZXcubGVuOwotICAgIH0KLSAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0KLSAgICBpZiAoZGlyZWN0aW9uIDwgMCkgewotICAgICAgICAvKiBzdGFydHN3aXRoICovCi0gICAgICAgIGlmIChzdGFydCtzbGVuID4gbGVuKQotICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBlbmRzd2l0aCAqLwotICAgICAgICBpZiAoZW5kLXN0YXJ0IDwgc2xlbiB8fCBzdGFydCA+IGxlbikKLSAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICAgICAgaWYgKGVuZC1zbGVuID4gc3RhcnQpCi0gICAgICAgICAgICBzdGFydCA9IGVuZCAtIHNsZW47Ci0gICAgfQotICAgIGlmIChlbmQtc3RhcnQgPCBzbGVuKQotICAgICAgICBnb3RvIG5vdGZvdW5kOwotICAgIGlmIChtZW1jbXAoc3RyK3N0YXJ0LCBzdWIsIHNsZW4pICE9IDApCi0gICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7Ci0gICAgcmV0dXJuIDE7Ci0KLW5vdGZvdW5kOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi1QeURvY19TVFJWQVIoc3RhcnRzd2l0aF9fZG9jX18sCi0iQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJzdGFydHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGVuZHN3aXRoX19kb2NfXywKLSJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1zdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19lbmRzd2l0aChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImVuZHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCkBAIC0yOTQ0LDkgKzIyNTQsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkMjAxNmZmOGUwYmIxNzYgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NDlhNTNkZGUyN2IzMTQgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLwogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKFB5T2JqZWN0KilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KQEAgLTI5NjQsOCArMjI3NCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk1YzM1OThmNzgzM2NhZCBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0ODQxNDlhNWQ4ODBmZmIgaW5wdXQ9N2Y0YWFjNjcxNDRmOTk0NF0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCkBAIC0yOTczLDIyICsyMjgzLDYgQEAKICAgICAgICAgKTsKIH0KIAotc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCi17Ci0gICAgaWYgKGMgPj0gMTI4KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlfSVNVUFBFUihjKSkKLSAgICAgICAgICAgIGMgPSBQeV9UT0xPV0VSKGMpOwotICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogYnl0ZXMuZnJvbWhleApAQCAtMzAwNiw0NyArMjMwMCw4OCBAQAogYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOTczYWNjNjM2NjFiYjJlIGlucHV0PWJmNGQxYzM2MTY3MGFjZDNdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3c3RyaW5nOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlCeXRlc19Gcm9tSGV4KHN0cmluZywgMCk7CisgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZXNfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBOVUxMKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUhleChQeU9iamVjdCAqc3RyaW5nLCBpbnQgdXNlX2J5dGVhcnJheSkKK3sKICAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwotICAgIGludCB0b3AsIGJvdDsKLSAgICB2b2lkICpkYXRhOwotICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIFB5X3NzaXplX3QgaGV4bGVuLCBpbnZhbGlkX2NoYXI7CisgICAgdW5zaWduZWQgaW50IHRvcCwgYm90OworICAgIFB5X1VDUzEgKnN0ciwgKmVuZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKIAogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKICAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwogCi0gICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KLSAgICBuZXdzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKLSAgICBpZiAoIW5ld3N0cmluZykKKyAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShzdHJpbmcpKSB7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBub24tQVNDSUkgY2hhcmFjdGVyICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoZXhsZW47IGkrKykgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID49IDEyOCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX2NoYXIgPSBpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChzdHJpbmcpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICBzdHIgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworCisgICAgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KKyAgICBidWYgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBoZXhsZW4gLyAyKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld3N0cmluZyk7Ci0gICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgeworCisgICAgZW5kID0gc3RyICsgaGV4bGVuOworICAgIHdoaWxlIChzdHIgPCBlbmQpIHsKICAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwotICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGkpOworICAgICAgICBpZiAoKnN0ciA9PSAnICcpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBzdHIrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCpzdHIgPT0gJyAnKTsKKyAgICAgICAgICAgIGlmIChzdHIgPj0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG9wID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAodG9wID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBidWZbaisrXSA9ICh0b3AgPDwgNCkgKyBib3Q7CisgICAgICAgIHN0cisrOworCisgICAgICAgIGJvdCA9IF9QeUxvbmdfRGlnaXRWYWx1ZVsqc3RyXTsKKyAgICAgICAgaWYgKGJvdCA+PSAxNikgeworICAgICAgICAgICAgaW52YWxpZF9jaGFyID0gc3RyIC0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc3RyKys7CisKKyAgICAgICAgKmJ1ZisrID0gKHVuc2lnbmVkIGNoYXIpKCh0b3AgPDwgNCkgKyBib3QpOwogICAgIH0KLSAgICBpZiAoaiAhPSBieXRlc2xlbiAmJiBfUHlCeXRlc19SZXNpemUoJm5ld3N0cmluZywgaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldHVybiBuZXdzdHJpbmc7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJ1Zik7CiAKICAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihuZXdzdHJpbmcpOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGludmFsaWRfY2hhcik7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMzA3NiwxNyArMjQxMSwyMCBAQAogICAgIHsiX19nZXRuZXdhcmdzX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNfZ2V0bmV3YXJncywgIE1FVEhfTk9BUkdTfSwKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAotICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCi0gICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAorICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NlbnRlcl9fZG9jX199LAorICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCiAgICAgQllURVNfREVDT0RFX01FVEhPRERFRgogICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgZW5kc3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCiAgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBleHBhbmR0YWJzX19kb2NfX30sCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9maW5kX19kb2NfX30sCiAgICAgQllURVNfRlJPTUhFWF9NRVRIT0RERUYKICAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlc19oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKLSAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCisgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19pbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfaW5kZXhfX2RvY19ffSwKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LAogICAgIHsiaXNhbHBoYSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbHBoYSwgTUVUSF9OT0FSR1MsCkBAIC0zMTAyLDM4ICsyNDQwLDQwIEBACiAgICAgeyJpc3VwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3VwcGVyLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzdXBwZXJfX2RvY19ffSwKICAgICBCWVRFU19KT0lOX01FVEhPRERFRgotICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCisgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X2xqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKICAgICBCWVRFU19MU1RSSVBfTUVUSE9EREVGCiAgICAgQllURVNfTUFLRVRSQU5TX01FVEhPRERFRgogICAgIEJZVEVTX1BBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SRVBMQUNFX01FVEhPRERFRgotICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKLSAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCi0gICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKKyAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JmaW5kLCBNRVRIX1ZBUkFSR1MsIF9QeV9yZmluZF9fZG9jX199LAorICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfcmluZGV4X19kb2NfX30sCisgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X3JqdXN0X19kb2NfX30sCiAgICAgQllURVNfUlBBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SU1BMSVRfTUVUSE9EREVGCiAgICAgQllURVNfUlNUUklQX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgc3RhcnRzd2l0aF9fZG9jX199LAorICAgICBfUHlfc3RhcnRzd2l0aF9fZG9jX199LAogICAgIEJZVEVTX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKICAgICBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKLSAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAogICAgIHtOVUxMLCAgICAgTlVMTH0gICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQorYnl0ZXNfbW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIGlmICghUHlCeXRlc19DaGVjayh2KSkKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soc2VsZikpIHsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXQodiwgdyk7CisgICAgfQorICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXRFeChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCAwKTsKIH0KIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlc19hc19udW1iZXIgPSB7CkBAIC0zMjIyLDE3ICsyNTYyLDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiBJcyBpdCBhbiBpbnRlZ2VyPyAqLwotICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICBpZiAoUHlJbmRleF9DaGVjayh4KSkgeworICAgICAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBuZXcgPSBfUHlCeXRlc19Gcm9tU2l6ZShzaXplLCAxKTsKICAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjQyLDEwOCArMjU4MCw5MyBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21PYmplY3QoeCk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21CdWZmZXIoUHlPYmplY3QgKngpCiB7Ci0gICAgUHlPYmplY3QgKm5ldywgKml0OworICAgIFB5T2JqZWN0ICpuZXc7CisgICAgUHlfYnVmZmVyIHZpZXc7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHgsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7CisgICAgaWYgKCFuZXcpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCisgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBuZXc7CisKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihuZXcpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIEdFVF9JVEVNKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2hhciAqc3RyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICppdGVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RyID0gKChQeUJ5dGVzT2JqZWN0ICopYnl0ZXMpLT5vYl9zdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRSh4KTsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGl0ZW0gPSBHRVRfSVRFTSgoeCksIGkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBOVUxMKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21MaXN0KFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5TGlzdF9HRVRfSVRFTSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21UdXBsZShQeU9iamVjdCAqeCkKK3sKKyAgICBfUHlCeXRlc19GUk9NX0xJU1RfQk9EWSh4LCBQeVR1cGxlX0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeUJ5dGVzX0Zyb21JdGVyYXRvcihQeU9iamVjdCAqaXQsIFB5T2JqZWN0ICp4KQoreworICAgIGNoYXIgKnN0cjsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0KLSAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0gICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLwotICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkgewotICAgICAgICBQeV9idWZmZXIgdmlldzsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih4LCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOwotICAgICAgICBpZiAoIW5ldykKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cygoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCB2aWV3LmxlbiwgJ0MnKSA8IDApCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gbmV3OwotICAgICAgZmFpbDoKLSAgICAgICAgUHlfWERFQ1JFRihuZXcpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCB1bmljb2RlIG9iamVjdCB0byBieXRlcyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKHgsIGkpLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgfQotICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTSh4LCBpKSwgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3OwotICAgIH0KKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICAvKiBGb3IgaXRlcmF0b3IgdmVyc2lvbiwgY3JlYXRlIGEgc3RyaW5nIG9iamVjdCBhbmQgcmVzaXplIGFzIG5lZWRlZCAqLwogICAgIHNpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KHgsIDY0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAvKiBBbGxvY2F0ZSBhbiBleHRyYSBieXRlIHRvIHByZXZlbnQgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgpIGZyb20KLSAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKLSAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCi0gICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBzaXplID0gMTsKLSAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChuZXcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5X1JFRkNOVChuZXcpID09IDEpOwogCi0gICAgLyogR2V0IHRoZSBpdGVyYXRvciAqLwotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih4KTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAKICAgICAvKiBSdW4gdGhlIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24gKi8KICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewpAQCAtMzM1OSw3ICsyNjgyLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIEludGVycHJldCBpdCBhcyBhbiBpbnQgKF9faW5kZXhfXykgKi8KLSAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMzNzMsMjEgKzI2OTYsNTggQEAKIAogICAgICAgICAvKiBBcHBlbmQgdGhlIGJ5dGUgKi8KICAgICAgICAgaWYgKGkgPj0gc2l6ZSkgewotICAgICAgICAgICAgc2l6ZSA9IDIgKiBzaXplICsgMTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJm5ldywgc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUoJndyaXRlciwgc3RyLCBzaXplKzEpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKKyAgICAgICAgKnN0cisrID0gKGNoYXIpIHZhbHVlOwogICAgIH0KLSAgICBfUHlCeXRlc19SZXNpemUoJm5ldywgaSk7CiAKLSAgICAvKiBDbGVhbiB1cCBhbmQgcmV0dXJuIHN1Y2Nlc3MgKi8KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBuZXc7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIGVycm9yOgotICAgIFB5X1hERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYobmV3KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitQeUJ5dGVzX0Zyb21PYmplY3QoUHlPYmplY3QgKngpCit7CisgICAgUHlPYmplY3QgKml0LCAqcmVzdWx0OworCisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tQnVmZmVyKHgpOworCisgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbUxpc3QoeCk7CisKKyAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbVR1cGxlKHgpOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soeCkpIHsKKyAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHgpOworICAgICAgICBpZiAoaXQgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKGl0LCB4KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0ICclLjIwMHMnIG9iamVjdCB0byBieXRlcyIsCisgICAgICAgICAgICAgICAgIHgtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zNDA1LDcgKzI3NjUsNyBAQAogICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRtcCk7CiAgICAgcG5ldyA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIG4pOwogICAgIGlmIChwbmV3ICE9IE5VTEwpIHsKLSAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHBuZXcpLAorICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh0bXApLCBuKzEpOwogICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKilwbmV3KS0+b2Jfc2hhc2ggPQogICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopdG1wKS0+b2Jfc2hhc2g7CkBAIC0zNzQ3LDMgKzMxMDcsMjgyIEBACiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGl0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CisKKworLyogX1B5Qnl0ZXNXcml0ZXIgQVBJICovCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKK3ZvaWQKK19QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICAvKiBTZXQgYWxsIGF0dHJpYnV0ZXMgYmVmb3JlIHNtYWxsX2J1ZmZlciB0byAwICovCisgICAgbWVtc2V0KHdyaXRlciwgMCwgb2Zmc2V0b2YoX1B5Qnl0ZXNXcml0ZXIsIHNtYWxsX2J1ZmZlcikpOworI2lmZGVmIFB5X0RFQlVHCisgICAgbWVtc2V0KHdyaXRlci0+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+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKHNpemUgIT0gd3JpdGVyLT5hbGxvY2F0ZWQpIHsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKHJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnl0ZXMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyICpzdHIgPSAoY2hhciAqKXB0cjsKKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtZW1jcHkoc3RyLCBieXRlcywgc2l6ZSk7CisgICAgc3RyICs9IHNpemU7CisKKyAgICByZXR1cm4gc3RyOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGFzc29iamVjdC5jIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCmluZGV4IDVlOGFjNTkuLmIwZWQwMjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xhc3NvYmplY3QuYworKysgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKQEAgLTMwMiwzNCArMzAyLDE5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tZXRob2RfY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorbWV0aG9kX2NhbGwoUHlPYmplY3QgKm1ldGhvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYzsKIAotICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKG1ldGhvZCk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlUdXBsZV9TaXplKGFyZyk7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdhcmcgPSBQeVR1cGxlX05ldyhhcmdjb3VudCArIDEpOwotICAgICAgICBpbnQgaTsKLSAgICAgICAgaWYgKG5ld2FyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIDAsIHNlbGYpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnY291bnQ7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7Ci0gICAgICAgICAgICBQeV9YSU5DUkVGKHYpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIGkrMSwgdik7Ci0gICAgICAgIH0KLSAgICAgICAgYXJnID0gbmV3YXJnOwotICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKWZ1bmMsIGFyZywga3cpOwotICAgIFB5X0RFQ1JFRihhcmcpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKG1ldGhvZCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCBzZWxmLCBhcmdzLCBrd2FyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKaW5kZXggZTg3YTIyMS4uYzc1YWNiNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCkBAIC0zOSw0NSArMzksMzggQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV90cmFuc2xhdGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAiZGVsZXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOnRyYW5zbGF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhYmxlOwotICAgIGludCBncm91cF9yaWdodF8xID0gMDsKICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOwogCi0gICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGRlbGV0ZWNoYXJzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtMTA4LDE3ICsxMDEsMjAgQEAKICAgICBQeV9idWZmZXIgdG8gPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwKLSAgICAgICAgJmZybSwgJnRvKSkKKyAgICAgICAgJmZybSwgJnRvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1MiwxNyArMTQ4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVwbGFjZV9pbXBsKHNlbGYsICZvbGQsICZuZXcsIGNvdW50KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBvbGQgKi8KLSAgICBpZiAob2xkLm9iaikKKyAgICBpZiAob2xkLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIG5ldyAqLwotICAgIGlmIChuZXcub2JqKQorICAgIGlmIChuZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTgyLDIzICsxODEsMjUgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTI1NCwyMyArMjU1LDI1IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5IGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9yc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246cnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMzIwLDggKzMyMyw5IEBACiAgICAgaW50IGl0ZW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5PJjppbnNlcnQiLAotICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOwogCiBleGl0OgpAQCAtMzQ5LDggKzM1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGl0ZW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9hcHBlbmRfaW1wbChzZWxmLCBpdGVtKTsKIAogZXhpdDoKQEAgLTM5NCw4ICszOTksOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKLSAgICAgICAgJmluZGV4KSkKKyAgICAgICAgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9wb3BfaW1wbChzZWxmLCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00MjMsOCArNDI5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpyZW1vdmUiLCBfZ2V0Ynl0ZXZhbHVlLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlbW92ZV9pbXBsKHNlbGYsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTUxMyw4ICs1MjIsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC01MzcsMjMgKzU0NywyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2RlY29kZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfZGVjb2RlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTgzLDIxICs1OTUsMjMgQEAKICJ0cnVlLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKIAogZXhpdDoKQEAgLTYxNywxNyArNjMxLDE4IEBACiAgICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZWFycmF5X2Zyb21oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlPYmplY3QqY2xzLCBQeU9iamVjdCAqc3RyaW5nKTsKK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4KFB5VHlwZU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwoKFB5T2JqZWN0KiljbHMsIHN0cmluZyk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwodHlwZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtNjcwLDggKzY4NSw5IEBACiAgICAgaW50IHByb3RvID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsCi0gICAgICAgICZwcm90bykpCisgICAgICAgICZwcm90bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoc2VsZiwgcHJvdG8pOwogCiBleGl0OgpAQCAtNjk1LDQgKzcxMSw0IEBACiB7CiAgICAgcmV0dXJuIGJ5dGVhcnJheV9zaXplb2ZfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NjZjMTVmZjIyYzVlMjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMjUzNDJhNjgwMzkxYjljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaAppbmRleCA1YTFhNWU5Li5hMTFlYmQyIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCkBAIC0xNywyMiArMTcsMjQgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFU19TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3NwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3NwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC02NCwxNCArNjYsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCi0gICAgaWYgKHNlcC5vYmopCisgICAgaWYgKHNlcC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMDEsMTQgKzEwNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JwYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KLSAgICBpZiAoc2VwLm9iaikKKyAgICBpZiAoc2VwLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEzMCwyMiArMTM2LDI0IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOwogCiAjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5Nyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTIxOSw4ICsyMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibHN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI0OSw4ICsyNTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI1OCw0NSArMjY5LDM4IEBACiB9CiAKIFB5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgImRlbGV0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98Tzp0cmFuc2xhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWJsZTsKLSAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7CiAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzID0gTlVMTDsKIAotICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dHJhbnNsYXRlIiwgJnRhYmxlKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp0cmFuc2xhdGUiLCAmdGFibGUsICZkZWxldGVjaGFycykpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlcy50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlc190cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBkZWxldGVjaGFycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKQEAgLTMyNywxNyArMzMxLDIwIEBACiAgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCi0gICAgICAgICZmcm0sICZ0bykpCisgICAgICAgICZmcm0sICZ0bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1OSwxMSArMzY2LDExIEBACiAgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKQEAgLTM3MSwxNyArMzc4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLwotICAgIGlmIChvbGQub2JqKQorICAgIGlmIChvbGQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCi0gICAgaWYgKG5ldy5vYmopCisgICAgaWYgKG5ldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDIsMjMgKzQxMiwyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURVNfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCitieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00MzUsMjEgKzQ0NywyMyBAQAogInRydWUuIik7CiAKICNkZWZpbmUgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpOworYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOwogCiBleGl0OgpAQCAtNDc3LDExICs0OTEsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZnJvbWhleF9pbXBsKHR5cGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDBjZThmMjVkN2UxOGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGMzYzkzY2ZkMmRjNDQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKaW5kZXggNTI4OGI5YS4uZDBjZGZjMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKQEAgLTIzLDggKzIzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkaWN0X2Zyb21rZXlzX2ltcGwodHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5LDQgKzQwLDQgQEAKIAogI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAogICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyNjMyNjEwOWUzZDk4MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAppbmRleCBkNDJhNzAwLi44OTFlOTBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApAQCAtMzEsMTEgKzMxLDEyIEBACiAgICAgUHlPYmplY3QgKnogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTg2ZGQxMDhkOTJkMTA0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggOWRmODdiMC4uYjZlNWJkMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTEsMyArMSw1IEBACisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtNSw2ICs3LDEyIEBACiAjZGVmaW5lIE5BTUVfQ0hBUlMgXAogICAgICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCiAKKy8qIEhvbGRlciBmb3IgY29fZXh0cmEgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9zc2l6ZV90IGNlX3NpemU7CisgICAgdm9pZCAqKmNlX2V4dHJhczsKK30gX1B5Q29kZU9iamVjdEV4dHJhOworCiAvKiBhbGxfbmFtZV9jaGFycyhzKTogdHJ1ZSBpZmYgYWxsIGNoYXJzIGluIHMgYXJlIHZhbGlkIE5BTUVfQ0hBUlMgKi8KIAogc3RhdGljIGludApAQCAtMTM0LDcgKzE0Miw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgdG90YWxfYXJncyA9IGFyZ2NvdW50ICsga3dvbmx5YXJnY291bnQgKwogICAgICAgICAgICAgKChmbGFncyAmIENPX1ZBUkFSR1MpICE9IDApICsgKChmbGFncyAmIENPX1ZBUktFWVdPUkRTKSAhPSAwKTsKICAgICAgICAgUHlfc3NpemVfdCBhbGxvY19zaXplID0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogbl9jZWxsdmFyczsKLSAgICAgICAgaW50IHVzZWRfY2VsbDJhcmcgPSAwOworICAgICAgICBib29sIHVzZWRfY2VsbDJhcmcgPSBmYWxzZTsKICAgICAgICAgY2VsbDJhcmcgPSBQeU1lbV9NQUxMT0MoYWxsb2Nfc2l6ZSk7CiAgICAgICAgIGlmIChjZWxsMmFyZyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDcsNyArMTU1LDcgQEAKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUHlUdXBsZV9HRVRfSVRFTSh2YXJuYW1lcywgaik7CiAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjZWxsLCBhcmcpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNlbGwyYXJnW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIHVzZWRfY2VsbDJhcmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xOTAsNiArMTk4LDcgQEAKICAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOwogICAgIGNvLT5jb196b21iaWVmcmFtZSA9IE5VTEw7CiAgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICBjby0+Y29fZXh0cmEgPSBOVUxMOwogICAgIHJldHVybiBjbzsKIH0KIApAQCAtMzk5LDYgKzQwOCwyMSBAQAogc3RhdGljIHZvaWQKIGNvZGVfZGVhbGxvYyhQeUNvZGVPYmplY3QgKmNvKQogeworICAgIGlmIChjby0+Y29fZXh0cmEgIT0gTlVMTCkgeworICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgICAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gY28tPmNvX2V4dHJhOworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gMDsgaSA8IGNvX2V4dHJhLT5jZV9zaXplOyBpKyspIHsKKyAgICAgICAgICAgIGZyZWVmdW5jIGZyZWVfZXh0cmEgPSB0c3RhdGUtPmNvX2V4dHJhX2ZyZWVmdW5jc1tpXTsKKworICAgICAgICAgICAgaWYgKGZyZWVfZXh0cmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWVfZXh0cmEoY29fZXh0cmEtPmNlX2V4dHJhc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQeU1lbV9GUkVFKGNvLT5jb19leHRyYSk7CisgICAgfQorCiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29kZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29uc3RzKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19uYW1lcyk7CkBAIC03MzIsNyArNzU2LDggQEAKICAgICAgICAgYWRkciArPSAqcCsrOwogICAgICAgICBpZiAoYWRkciA+IGFkZHJxKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGxpbmUgKz0gKnArKzsKKyAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpKnA7CisgICAgICAgIHArKzsKICAgICB9CiAgICAgcmV0dXJuIGxpbmU7CiB9CkBAIC03NjcsMTcgKzc5MiwxOSBAQAogICAgICAgICBpZiAoYWRkciArICpwID4gbGFzdGkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICBpZiAoKnApCisgICAgICAgIGlmICgoc2lnbmVkIGNoYXIpKnApCiAgICAgICAgICAgICBib3VuZHMtPmFwX2xvd2VyID0gYWRkcjsKLSAgICAgICAgbGluZSArPSAqcCsrOworICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcikqcDsKKyAgICAgICAgcCsrOwogICAgICAgICAtLXNpemU7CiAgICAgfQogCiAgICAgaWYgKHNpemUgPiAwKSB7CiAgICAgICAgIHdoaWxlICgtLXNpemUgPj0gMCkgewogICAgICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICAgICAgaWYgKCpwKyspCisgICAgICAgICAgICBpZiAoKHNpZ25lZCBjaGFyKSpwKQogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcCsrOwogICAgICAgICB9CiAgICAgICAgIGJvdW5kcy0+YXBfdXBwZXIgPSBhZGRyOwogICAgIH0KQEAgLTc4NywzICs4MTQsODAgQEAKIAogICAgIHJldHVybiBsaW5lOwogfQorCisKK2ludAorX1B5Q29kZV9HZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqKmV4dHJhKQoreworICAgIGFzc2VydCgqZXh0cmEgPT0gTlVMTCk7CisKKyAgICBpZiAoIVB5Q29kZV9DaGVjayhjb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5Q29kZU9iamVjdCAqbyA9IChQeUNvZGVPYmplY3QqKSBjb2RlOworICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhKikgby0+Y29fZXh0cmE7CisKKworICAgIGlmIChjb19leHRyYSA9PSBOVUxMIHx8IGNvX2V4dHJhLT5jZV9zaXplIDw9IGluZGV4KSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpleHRyYSA9IGNvX2V4dHJhLT5jZV9leHRyYXNbaW5kZXhdOworICAgIHJldHVybiAwOworfQorCisKK2ludAorX1B5Q29kZV9TZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqZXh0cmEpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpIHx8IGluZGV4IDwgMCB8fAorICAgICAgICAgICAgaW5kZXggPj0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50KSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlDb2RlT2JqZWN0ICpvID0gKFB5Q29kZU9iamVjdCopIGNvZGU7CisgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEgKikgby0+Y29fZXh0cmE7CisKKyAgICBpZiAoY29fZXh0cmEgPT0gTlVMTCkgeworICAgICAgICBvLT5jb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEqKSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICBzaXplb2YoX1B5Q29kZU9iamVjdEV4dHJhKSk7CisgICAgICAgIGlmIChvLT5jb19leHRyYSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhICopIG8tPmNvX2V4dHJhOworCisgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMgPSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKyAgICAgICAgaWYgKGNvX2V4dHJhLT5jZV9leHRyYXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgY29fZXh0cmEtPmNlX3NpemUgPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQ7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSAwOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoY29fZXh0cmEtPmNlX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcyA9IFB5TWVtX1JlYWxsb2MoCisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzLCB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKworICAgICAgICBpZiAoY29fZXh0cmEtPmNlX2V4dHJhcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb19leHRyYS0+Y2Vfc2l6ZSA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudDsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IGNvX2V4dHJhLT5jZV9zaXplOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2luZGV4XSA9IGV4dHJhOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwppbmRleCBkODJjNWViLi4zMWUxMjc4IDEwMDY0NAotLS0gYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYworKysgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwpAQCAtNzU5LDI5ICs3NTksMTIgQEAKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jb21wbGV4X3N1YnR5cGVfZnJvbV9zdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdikKK2NvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4sIHZvaWQgKnR5cGUpCiB7Ci0gICAgY29uc3QgY2hhciAqcywgKnN0YXJ0OwotICAgIGNoYXIgKmVuZDsKICAgICBkb3VibGUgeD0wLjAsIHk9MC4wLCB6OwogICAgIGludCBnb3RfYnJhY2tldD0wOwotICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwotICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOwotICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCi0gICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGNvbnN0IGNoYXIgKnN0YXJ0OworICAgIGNoYXIgKmVuZDsKIAogICAgIC8qIHBvc2l0aW9uIG9uIGZpcnN0IG5vbmJsYW5rICovCiAgICAgc3RhcnQgPSBzOwpAQCAtODIyLDcgKzgwNSw3IEBACiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1ZhbHVlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZW5kICE9IHMpIHsKICAgICAgICAgLyogYWxsIDQgZm9ybXMgc3RhcnRpbmcgd2l0aCA8ZmxvYXQ+IGxhbmQgaGVyZSAqLwpAQCAtODM1LDcgKzgxOCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmQgIT0gcykKICAgICAgICAgICAgICAgICAvKiA8ZmxvYXQ+PHNpZ25lZC1mbG9hdD5qICovCkBAIC04OTAsMTggKzg3Myw0NiBAQAogICAgIGlmIChzLXN0YXJ0ICE9IGxlbikKICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKIAotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwotICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKHR5cGUsIHgsIHkpOworICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKChQeVR5cGVPYmplY3QgKil0eXBlLCB4LCB5KTsKIAogICBwYXJzZV9lcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImNvbXBsZXgoKSBhcmcgaXMgYSBtYWxmb3JtZWQgc3RyaW5nIik7Ci0gIGVycm9yOgotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorY29tcGxleF9zdWJ0eXBlX2Zyb21fc3RyaW5nKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYpCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBQeU9iamVjdCAqc19idWZmZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7CisgICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOworICAgICAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCisgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcyhzLCBsZW4sICJjb21wbGV4IiwgdiwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIpOworICBleGl0OgorICAgIFB5X0RFQ1JFRihzX2J1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvbXBsZXhfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpyLCAqaSwgKnRtcDsKZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCBkYTY4ZTNiLi4wNzZlNzQxIDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC0yMiw3ICsyMiw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjaGFyICpmb3JtYXQpCitkZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjb25zdCBjaGFyICpmb3JtYXQpCiB7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOwogICAgIGlmIChkZXNjci0+ZF9uYW1lICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGRlc2NyLT5kX25hbWUpKQpAQCAtMjEzLDcgKzIxMyw3IEBACiBtZXRob2RkZXNjcl9jYWxsKFB5TWV0aG9kRGVzY3JPYmplY3QgKmRlc2NyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlfc3NpemVfdCBhcmdjOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQsICoqc3RhY2s7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWNjZXB0YWJsZSBhcyAnc2VsZicgKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CkBAIC0yNDIsMTMgKzI0Miw4IEBACiAgICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ld0V4KGRlc2NyLT5kX21ldGhvZCwgc2VsZiwgTlVMTCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNTgsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTI5NSwxNCArMjkwLDkgQEAKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMwMCw3IEBACiB3cmFwcGVyZGVzY3JfY2FsbChQeVdyYXBwZXJEZXNjck9iamVjdCAqZGVzY3IsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTMzOSwxMyArMzI5LDkgQEAKICAgICBmdW5jID0gUHlXcmFwcGVyX05ldygoUHlPYmplY3QgKilkZXNjciwgc2VsZik7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwMzMsNyArMTAxOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd3JhcHBlcl9yaWNoY29tcGFyZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQ7CisgICAgaW50cHRyX3QgcmVzdWx0OwogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5V3JhcHBlckRlc2NyT2JqZWN0ICphX2Rlc2NyLCAqYl9kZXNjcjsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCmluZGV4IDI5MTJlYjkuLmNlOWVkYWIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdC1jb21tb24uaAorKysgYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKQEAgLTgsMTUgKzgsNjkgQEAKICAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KIH0gUHlEaWN0S2V5RW50cnk7CiAKLXR5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKLShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisvKiBkaWN0X2xvb2t1cF9mdW5jKCkgcmV0dXJucyBpbmRleCBvZiBlbnRyeSB3aGljaCBjYW4gYmUgdXNlZCBsaWtlIERLX0VOVFJJRVMoZGspW2luZGV4XS4KKyAqIC0xIHdoZW4gbm8gZW50cnkgZm91bmQsIC0zIHdoZW4gY29tcGFyZSByYWlzZXMgZXJyb3IuCisgKi8KK3R5cGVkZWYgUHlfc3NpemVfdCAoKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKKyNkZWZpbmUgREtJWF9FTVBUWSAoLTEpCisjZGVmaW5lIERLSVhfRFVNTVkgKC0yKSAgLyogVXNlZCBpbnRlcm5hbGx5ICovCisjZGVmaW5lIERLSVhfRVJST1IgKC0zKQorCisvKiBTZWUgZGljdG9iamVjdC5jIGZvciBhY3R1YWwgbGF5b3V0IG9mIERpY3RLZXlzT2JqZWN0ICovCiBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKICAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKworICAgIC8qIFNpemUgb2YgdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpLiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMi4gKi8KICAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisKKyAgICAvKiBGdW5jdGlvbiB0byBsb29rdXAgaW4gdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpOgorCisgICAgICAgLSBsb29rZGljdCgpOiBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZAorICAgICAgICAgb25seSBpZikgYSBjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKyAgICAgICAtIGxvb2tkaWN0X3VuaWNvZGUoKTogc3BlY2lhbGl6ZWQgdG8gVW5pY29kZSBzdHJpbmcga2V5cywgY29tcGFyaXNvbiBvZgorICAgICAgICAgd2hpY2ggY2FuIG5ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuCisgICAgICAgICBES0lYX0VSUk9SLgorCisgICAgICAgLSBsb29rZGljdF91bmljb2RlX25vZHVtbXkoKTogc2ltaWxhciB0byBsb29rZGljdF91bmljb2RlKCkgYnV0IGZ1cnRoZXIKKyAgICAgICAgIHNwZWNpYWxpemVkIGZvciBVbmljb2RlIHN0cmluZyBrZXlzIHRoYXQgY2Fubm90IGJlIHRoZSA8ZHVtbXk+IHZhbHVlLgorCisgICAgICAgLSBsb29rZGljdF9zcGxpdCgpOiBWZXJzaW9uIG9mIGxvb2tkaWN0KCkgZm9yIHNwbGl0IHRhYmxlcy4gKi8KICAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKKworICAgIC8qIE51bWJlciBvZiB1c2FibGUgZW50cmllcyBpbiBka19lbnRyaWVzLiAqLwogICAgIFB5X3NzaXplX3QgZGtfdXNhYmxlOwotICAgIFB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbMV07CisKKyAgICAvKiBOdW1iZXIgb2YgdXNlZCBlbnRyaWVzIGluIGRrX2VudHJpZXMuICovCisgICAgUHlfc3NpemVfdCBka19uZW50cmllczsKKworICAgIC8qIEFjdHVhbCBoYXNoIHRhYmxlIG9mIGRrX3NpemUgZW50cmllcy4gSXQgaG9sZHMgaW5kaWNlcyBpbiBka19lbnRyaWVzLAorICAgICAgIG9yIERLSVhfRU1QVFkoLTEpIG9yIERLSVhfRFVNTVkoLTIpLgorCisgICAgICAgSW5kaWNlcyBtdXN0IGJlOiAwIDw9IGluZGljZSA8IFVTQUJMRV9GUkFDVElPTihka19zaXplKS4KKworICAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGFuIGluZGljZSBkZXBlbmRzIG9uIGRrX3NpemU6CisKKyAgICAgICAtIDEgYnl0ZSBpZiBka19zaXplIDw9IDB4ZmYgKGNoYXIqKQorICAgICAgIC0gMiBieXRlcyBpZiBka19zaXplIDw9IDB4ZmZmZiAoaW50MTZfdCopCisgICAgICAgLSA0IGJ5dGVzIGlmIGRrX3NpemUgPD0gMHhmZmZmZmZmZiAoaW50MzJfdCopCisgICAgICAgLSA4IGJ5dGVzIG90aGVyd2lzZSAoaW50NjRfdCopCisKKyAgICAgICBEeW5hbWljYWxseSBzaXplZCwgOCBpcyBtaW5pbXVtLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAgaW50OF90IGFzXzFbOF07CisgICAgICAgIGludDE2X3QgYXNfMls0XTsKKyAgICAgICAgaW50MzJfdCBhc180WzJdOworI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgICAgIGludDY0X3QgYXNfOFsxXTsKKyNlbmRpZgorICAgIH0gZGtfaW5kaWNlczsKKworICAgIC8qICJQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzW2RrX3VzYWJsZV07IiBhcnJheSBmb2xsb3dzOgorICAgICAgIHNlZSB0aGUgREtfRU5UUklFUygpIG1hY3JvICovCiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG9iamVjdC5jIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKaW5kZXggZTc5YWIzNi4uMDNjOTczYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKQEAgLTEsNCArMSwzIEBACi0KIC8qIERpY3Rpb25hcnkgb2JqZWN0IGltcGxlbWVudGF0aW9uIHVzaW5nIGEgaGFzaCB0YWJsZSAqLwogCiAvKiBUaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIGEgc2VwYXJhdGUgZmlsZSwgT2JqZWN0cy9kaWN0bm90ZXMudHh0LApAQCAtNyw2OCArNiwxMTIgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAorLyogUHlEaWN0S2V5c09iamVjdAorCitUaGlzIGltcGxlbWVudHMgdGhlIGRpY3Rpb25hcnkncyBoYXNodGFibGUuCisKK0FzIG9mIFB5dGhvbiAzLjYsIHRoaXMgaXMgY29tcGFjdCBhbmQgb3JkZXJlZC4gQmFzaWMgaWRlYSBpcyBkZXNjcmliZWQgaGVyZS4KK2h0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sCisKK2xheW91dDoKKworKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfcmVmY250ICAgICB8Cit8IGRrX3NpemUgICAgICAgfAorfCBka19sb29rdXAgICAgIHwKK3wgZGtfdXNhYmxlICAgICB8Cit8IGRrX25lbnRyaWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfaW5kaWNlcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfZW50cmllcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKKworZGtfaW5kaWNlcyBpcyBhY3R1YWwgaGFzaHRhYmxlLiAgSXQgaG9sZHMgaW5kZXggaW4gZW50cmllcywgb3IgREtJWF9FTVBUWSgtMSkKK29yIERLSVhfRFVNTVkoLTIpLgorU2l6ZSBvZiBpbmRpY2VzIGlzIGRrX3NpemUuICBUeXBlIG9mIGVhY2ggaW5kZXggaW4gaW5kaWNlcyBpcyB2YXJ5IG9uIGRrX3NpemU6CisKKyogaW50OCAgZm9yICAgICAgICAgIGRrX3NpemUgPD0gMTI4CisqIGludDE2IGZvciAyNTYgICA8PSBka19zaXplIDw9IDIqKjE1CisqIGludDMyIGZvciAyKioxNiA8PSBka19zaXplIDw9IDIqKjMxCisqIGludDY0IGZvciAyKiozMiA8PSBka19zaXplCisKK2RrX2VudHJpZXMgaXMgYXJyYXkgb2YgUHlEaWN0S2V5RW50cnkuICBJdCdzIHNpemUgaXMgVVNBQkxFX0ZSQUNUSU9OKGRrX3NpemUpLgorREtfRU5UUklFUyhkaykgY2FuIGJlIHVzZWQgdG8gZ2V0IHBvaW50ZXIgdG8gZW50cmllcy4KKworTk9URTogU2luY2UgbmVnYXRpdmUgdmFsdWUgaXMgdXNlZCBmb3IgREtJWF9FTVBUWSBhbmQgREtJWF9EVU1NWSwgdHlwZSBvZgorZGtfaW5kaWNlcyBlbnRyeSBpcyBzaWduZWQgaW50ZWdlciBhbmQgaW50MTYgaXMgdXNlZCBmb3IgdGFibGUgd2hpY2gKK2RrX3NpemUgPT0gMjU2LgorKi8KKwogCiAvKgotVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgotCi0xLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAotICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCi0gICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKLSAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KLQotMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAotICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCi0gICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgotICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCi0KLTMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCi0gICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KLSAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KLSAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KLSAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCi0gICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCi0KLTQuIFBlbmRpbmcuIE5vdCB5ZXQgaW5zZXJ0ZWQgb3IgZGVsZXRlZCBmcm9tIGEgc3BsaXQtdGFibGUuCi0gICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMCi0KIFRoZSBEaWN0T2JqZWN0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIGZvcm1zLgorCiBFaXRoZXI6CiAgIEEgY29tYmluZWQgdGFibGU6CiAgICAgbWFfdmFsdWVzID09IE5VTEwsIGRrX3JlZmNudCA9PSAxLgogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtZV92YWx1ZSBmaWVsZCBvZiB0aGUgUHlEaWN0S2V5c09iamVjdC4KLSAgICBTbG90IGtpbmQgNCBpcyBub3QgYWxsb3dlZCBpLmUuCi0gICAgICAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwgaXMgaWxsZWdhbC4KIE9yOgogICBBIHNwbGl0IHRhYmxlOgogICAgIG1hX3ZhbHVlcyAhPSBOVUxMLCBka19yZWZjbnQgPj0gMQogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtYV92YWx1ZXMgYXJyYXkuCi0gICAgT25seSBzdHJpbmcgKHVuaWNvZGUpIGtleXMgYXJlIGFsbG93ZWQsIG5vIDxkdW1teT4ga2V5cyBhcmUgcHJlc2VudC4KKyAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZC4KKyAgICBBbGwgZGljdHMgc2hhcmluZyBzYW1lIGtleSBtdXN0IGhhdmUgc2FtZSBpbnNlcnRpb24gb3JkZXIuCiAKLU5vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCi1ob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KLW1lYW5pbmcgb3RoZXJ3aXNlLiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMgcG9waXRlbSBhbHdheXMgY29udmVydHMgdGhlIGRpY3QKLXRvIHRoZSBjb21iaW5lZC10YWJsZSBmb3JtLgorVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlIChzbG90IGlzIGluZGV4LCBhbmQKK0RLX0VOVFJJRVMoa2V5cylbaW5kZXhdIGlmIGluZGV4ID49IDApOgorCisxLiBVbnVzZWQuICBpbmRleCA9PSBES0lYX0VNUFRZCisgICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KKyAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KKworMi4gQWN0aXZlLiAgaW5kZXggPj0gMCwgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX3ZhbHVlICE9IE5VTEwKKyAgIEhvbGRzIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpci4gIEFjdGl2ZSBjYW4gdHJhbnNpdGlvbiB0byBEdW1teSBvcgorICAgUGVuZGluZyB1cG9uIGtleSBkZWxldGlvbiAoZm9yIGNvbWJpbmVkIGFuZCBzcGxpdCB0YWJsZXMgcmVzcGVjdGl2ZWx5KS4KKyAgIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgorCiszLiBEdW1teS4gIGluZGV4ID09IERLSVhfRFVNTVkgIChjb21iaW5lZCBvbmx5KQorICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCisgICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCisgICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCisgICBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93CisgICB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCisKKzQuIFBlbmRpbmcuIGluZGV4ID49IDAsIGtleSAhPSBOVUxMLCBhbmQgdmFsdWUgPT0gTlVMTCAgKHNwbGl0IG9ubHkpCisgICBOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlLgogKi8KIAotLyogUHlEaWN0X01JTlNJWkVfU1BMSVQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIHNwbGl0IGRpY3Rpb25hcnkuCi0gKiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMiwgYW5kIGF0IGxlYXN0IDQuCi0gKiBSZXNpemluZyBvZiBzcGxpdCBkaWN0aW9uYXJpZXMgaXMgdmVyeSByYXJlLCBzbyB0aGUgc2F2aW5nIG1lbW9yeSBpcyBtb3JlCi0gKiBpbXBvcnRhbnQgdGhhbiB0aGUgY29zdCBvZiByZXNpemluZy4KLSAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9TUExJVCA0CisvKgorUHJlc2VydmluZyBpbnNlcnRpb24gb3JkZXIKIAotLyogUHlEaWN0X01JTlNJWkVfQ09NQklORUQgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcsIG5vbi1zcGxpdCBkaWN0LgorSXQncyBzaW1wbGUgZm9yIGNvbWJpbmVkIHRhYmxlLiAgU2luY2UgZGtfZW50cmllcyBpcyBtb3N0bHkgYXBwZW5kIG9ubHksIHdlIGNhbgorZ2V0IGluc2VydGlvbiBvcmRlciBieSBqdXN0IGl0ZXJhdGluZyBka19lbnRyaWVzLgorCitPbmUgZXhjZXB0aW9uIGlzIC5wb3BpdGVtKCkuICBJdCByZW1vdmVzIGxhc3QgaXRlbSBpbiBka19lbnRyaWVzIGFuZCBkZWNyZW1lbnQKK2RrX25lbnRyaWVzIHRvIGFjaGlldmUgYW1vcnRpemVkIE8oMSkuICBTaW5jZSB0aGVyZSBhcmUgREtJWF9EVU1NWSByZW1haW5zIGluCitka19pbmRpY2VzLCB3ZSBjYW4ndCBpbmNyZW1lbnQgZGtfdXNhYmxlIGV2ZW4gdGhvdWdoIGRrX25lbnRyaWVzIGlzCitkZWNyZW1lbnRlZC4KKworSW4gc3BsaXQgdGFibGUsIGluc2VydGluZyBpbnRvIHBlbmRpbmcgZW50cnkgaXMgYWxsb3dlZCBvbmx5IGZvciBka19lbnRyaWVzW2l4XQord2hlcmUgaXggPT0gbXAtPm1hX3VzZWQuIEluc2VydGluZyBpbnRvIG90aGVyIGluZGV4IGFuZCBkZWxldGluZyBpdGVtIGNhdXNlCitjb252ZXJ0aW5nIHRoZSBkaWN0IHRvIHRoZSBjb21iaW5lZCB0YWJsZS4KKyovCisKKy8qIFB5RGljdF9NSU5TSVpFIGlzIHRoZSBzdGFydGluZyBzaXplIGZvciBhbnkgbmV3IGRpY3QuCiAgKiA4IGFsbG93cyBkaWN0cyB3aXRoIG5vIG1vcmUgdGhhbiA1IGFjdGl2ZSBlbnRyaWVzOyBleHBlcmltZW50cyBzdWdnZXN0ZWQKICAqIHRoaXMgc3VmZmljZXMgZm9yIHRoZSBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbAogICogZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KICAqIE1ha2luZyB0aGlzIDgsIHJhdGhlciB0aGFuIDQgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMgZm9yIG1vc3QKICAqIGRpY3Rpb25hcmllcywgd2l0aG91dCBhbnkgc2lnbmlmaWNhbnQgZXh0cmEgbWVtb3J5IHVzZS4KICAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CisjZGVmaW5lIFB5RGljdF9NSU5TSVpFIDgKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImRpY3QtY29tbW9uLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiICAgIC8qIHRvIGdldCB1bmljb2RlX2VxKCkgKi8KIAogLypbY2xpbmljIGlucHV0XQogY2xhc3MgZGljdCAiUHlEaWN0T2JqZWN0ICoiICImUHlEaWN0X1R5cGUiCkBAIC0xNDEsOCArMTg0LDggQEAKIGludG8gcGxheS4gIFRoaXMgaXMgZG9uZSBieSBpbml0aWFsaXppbmcgYSAodW5zaWduZWQpIHZyYmwgInBlcnR1cmIiIHRvIHRoZQogZnVsbCBoYXNoIGNvZGUsIGFuZCBjaGFuZ2luZyB0aGUgcmVjdXJyZW5jZSB0bzoKIAotICAgIGogPSAoNSpqKSArIDEgKyBwZXJ0dXJiOwogICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgaiA9ICg1KmopICsgMSArIHBlcnR1cmI7CiAgICAgdXNlIGogJSAyKippIGFzIHRoZSBuZXh0IHRhYmxlIGluZGV4OwogCiBOb3cgdGhlIHByb2JlIHNlcXVlbmNlIGRlcGVuZHMgKGV2ZW50dWFsbHkpIG9uIGV2ZXJ5IGJpdCBpbiB0aGUgaGFzaCBjb2RlLApAQCAtMTc3LDQxICsyMjAsMzggQEAKIAogKi8KIAotLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzCi0gKiBUaGlzIGNvdWxkIGJlIGFueSB1bmlxdWUgb2JqZWN0LAotICogdXNlIGEgY3VzdG9tIHR5cGUgaW4gb3JkZXIgdG8gbWluaW1pc2UgY291cGxpbmcuCi0qLwotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7Ci0KLSNkZWZpbmUgZHVtbXkgKCZfZHVtbXlfc3RydWN0KQotCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1QeU9iamVjdCAqCi1fUHlEaWN0X0R1bW15KHZvaWQpCi17Ci0gICAgcmV0dXJuIGR1bW15OwotfQotI2VuZGlmCi0KIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKIHN0YXRpYyBpbnQgZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpOwogCi0vKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYywgZnJlZSwgYW5kIG1lbXNldCAqLworLypHbG9iYWwgY291bnRlciB1c2VkIHRvIHNldCBtYV92ZXJzaW9uX3RhZyBmaWVsZCBvZiBkaWN0aW9uYXJ5LgorICogSXQgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHRoYXQgYSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgYW5kIGVhY2gKKyAqIHRpbWUgdGhhdCBhIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQuICovCitzdGF0aWMgdWludDY0X3QgcHlkaWN0X2dsb2JhbF92ZXJzaW9uID0gMDsKKworI2RlZmluZSBESUNUX05FWFRfVkVSU0lPTigpICgrK3B5ZGljdF9nbG9iYWxfdmVyc2lvbikKKworLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MgYW5kIGZyZWUgKi8KICNpZm5kZWYgUHlEaWN0X01BWEZSRUVMSVNUCiAjZGVmaW5lIFB5RGljdF9NQVhGUkVFTElTVCA4MAogI2VuZGlmCiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqa2V5c19mcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgbnVtZnJlZWtleXMgPSAwOwogCiAjaW5jbHVkZSAiY2xpbmljL2RpY3RvYmplY3QuYy5oIgogCkBAIC0yMTksMTIgKzI1OSwxNSBAQAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeURpY3RPYmplY3QgKm9wOwotICAgIGludCByZXQgPSBudW1mcmVlOworICAgIGludCByZXQgPSBudW1mcmVlICsgbnVtZnJlZWtleXM7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHdoaWxlIChudW1mcmVla2V5cykgeworICAgICAgICBQeU9iamVjdF9GUkVFKGtleXNfZnJlZV9saXN0Wy0tbnVtZnJlZWtleXNdKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMjQzLDQwICsyODYsMTE2IEBACiAgICAgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorI2RlZmluZSBES19TSVpFKGRrKSAoKGRrKS0+ZGtfc2l6ZSkKKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorI2RlZmluZSBES19JWFNJWkUoZGspICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKERLX1NJWkUoZGspIDw9IDB4ZmYgPyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgMSA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZiA/ICAgICAgICAgICAgXAorICAgICAgICAgICAgMiA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZmZmZmYgPyAgICBcCisgICAgICAgICAgICAgICAgNCA6IHNpemVvZihpbnQ2NF90KSkKKyNlbHNlCisjZGVmaW5lIERLX0lYU0laRShkaykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoREtfU0laRShkaykgPD0gMHhmZiA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAxIDogREtfU0laRShkaykgPD0gMHhmZmZmID8gICAgICAgICAgICBcCisgICAgICAgICAgICAyIDogc2l6ZW9mKGludDMyX3QpKQorI2VuZGlmCisjZGVmaW5lIERLX0VOVFJJRVMoZGspIFwKKyAgICAoKFB5RGljdEtleUVudHJ5KikoJihkayktPmRrX2luZGljZXMuYXNfMVtES19TSVpFKGRrKSAqIERLX0lYU0laRShkayldKSkKKwogI2RlZmluZSBES19ERUJVR19JTkNSRUYgX1B5X0lOQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCiAjZGVmaW5lIERLX0RFQlVHX0RFQ1JFRiBfUHlfREVDX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKIAogI2RlZmluZSBES19JTkNSRUYoZGspIChES19ERUJVR19JTkNSRUYgKysoZGspLT5ka19yZWZjbnQpCiAjZGVmaW5lIERLX0RFQ1JFRihkaykgaWYgKERLX0RFQlVHX0RFQ1JFRiAoLS0oZGspLT5ka19yZWZjbnQpID09IDApIGZyZWVfa2V5c19vYmplY3QoZGspCi0jZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQogI2RlZmluZSBES19NQVNLKGRrKSAoKChkayktPmRrX3NpemUpLTEpCiAjZGVmaW5lIElTX1BPV0VSX09GXzIoeCkgKCgoeCkgJiAoeC0xKSkgPT0gMCkKIAorLyogbG9va3VwIGluZGljZXMuICByZXR1cm5zIERLSVhfRU1QVFksIERLSVhfRFVNTVksIG9yIGl4ID49MCAqLworc3RhdGljIGlubGluZSBQeV9zc2l6ZV90Citka19nZXRfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgcyA9IERLX1NJWkUoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpeDsKKworICAgIGlmIChzIDw9IDB4ZmYpIHsKKyAgICAgICAgaW50OF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18xOworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorICAgIGVsc2UgaWYgKHMgPD0gMHhmZmZmKSB7CisgICAgICAgIGludDE2X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzI7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzID4gMHhmZmZmZmZmZikgeworICAgICAgICBpbnQ2NF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc184OworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGludDMyX3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzQ7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworICAgIHJldHVybiBpeDsKK30KKworLyogd3JpdGUgdG8gaW5kaWNlcy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGtfc2V0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBpeCkKK3sKKyAgICBQeV9zc2l6ZV90IHMgPSBES19TSVpFKGtleXMpOworCisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworCisgICAgaWYgKHMgPD0gMHhmZikgeworICAgICAgICBpbnQ4X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzE7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKWl4OworICAgIH0KKyAgICBlbHNlIGlmIChzIDw9IDB4ZmZmZikgeworICAgICAgICBpbnQxNl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18yOworICAgICAgICBhc3NlcnQoaXggPD0gMHg3ZmZmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChpbnQxNl90KWl4OworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHMgPiAweGZmZmZmZmZmKSB7CisgICAgICAgIGludDY0X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzg7CisgICAgICAgIGluZGljZXNbaV0gPSBpeDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgaW50MzJfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfNDsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2ZmZmZmZmYpOworICAgICAgICBpbmRpY2VzW2ldID0gKGludDMyX3QpaXg7CisgICAgfQorfQorCisKIC8qIFVTQUJMRV9GUkFDVElPTiBpcyB0aGUgbWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQuCi0gKiBDdXJyZW50bHkgc2V0IHRvICgybisxKS8zLiBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUKLSAqIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MKLSAqIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZyBlbnRyaWVzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlCi0gKiBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KKyAqIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZSBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZQorICogY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcyBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcKKyAqIGluZGljZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUgY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCiAgKgogICogVVNBQkxFX0ZSQUNUSU9OIG11c3Qgb2JleSB0aGUgZm9sbG93aW5nOgogICogICAgICgwIDwgVVNBQkxFX0ZSQUNUSU9OKG4pIDwgbikgZm9yIGFsbCBuID49IDIKICAqCi0gKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHZlcnkgcXVpY2sgdG8gY2FsY3VsYXRlLgotICogRnJhY3Rpb25zIGFyb3VuZCA1LzggdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgorICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSBxdWljayB0byBjYWxjdWxhdGUuCisgKiBGcmFjdGlvbnMgYXJvdW5kIDEvMiB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCiAgKi8KKyNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pIDw8IDEpLzMpCiAKLS8qIFVzZSAoMm4rMSkvMyByYXRoZXIgdGhhbiAybiszIGJlY2F1c2U6IGl0IG1ha2VzIG5vIGRpZmZlcmVuY2UgZm9yCi0gKiBjb21iaW5lZCB0YWJsZXMgKHRoZSB0d28gZnJhY3Rpb25zIHJvdW5kIHRvIHRoZSBzYW1lIG51bWJlciBuIDwgKSwKLSAqIGJ1dCAyKjQvMyBpcyAyIHdoZXJlYXMgKDIqNCsxKS8zIGlzIDMgd2hpY2ggcG90ZW50aWFsbHkgc2F2ZXMgcXVpdGUKLSAqIGEgbG90IG9mIHNwYWNlIGZvciBzbWFsbCwgc3BsaXQgdGFibGVzICovCi0jZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKCgobikgPDwgMSkrMSkvMykKKy8qIEVTVElNQVRFX1NJWkUgaXMgcmV2ZXJzZSBmdW5jdGlvbiBvZiBVU0FCTEVfRlJBQ1RJT04uCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlc2VydmUgZW5vdWdoIHNpemUgdG8gaW5zZXJ0IG4gZW50cmllcyB3aXRob3V0CisgKiByZXNpemluZy4KKyAqLworI2RlZmluZSBFU1RJTUFURV9TSVpFKG4pICAoKChuKSozKSA+PiAxKQogCi0vKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gKDJuKzEpLzMgdG8gbWFrZQorLyogQWx0ZXJuYXRpdmUgZnJhY3Rpb24gdGhhdCBpcyBvdGhlcndpc2UgY2xvc2UgZW5vdWdoIHRvIDJuLzMgdG8gbWFrZQogICogbGl0dGxlIGRpZmZlcmVuY2UuIDggKiAyLzMgPT0gOCAqIDUvOCA9PSA1LiAxNiAqIDIvMyA9PSAxNiAqIDUvOCA9PSAxMC4KICAqIDMyICogMi8zID0gMjEsIDMyICogNS84ID0gMjAuCiAgKiBJdHMgYWR2YW50YWdlIGlzIHRoYXQgaXQgaXMgZmFzdGVyIHRvIGNvbXB1dGUgb24gbWFjaGluZXMgd2l0aCBzbG93IGRpdmlzaW9uLgogICogI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgobikgPj4gMSkgKyAoKG4pID4+IDIpIC0gKChuKSA+PiAzKSkKLSovCisgKi8KIAogLyogR1JPV1RIX1JBVEUuIEdyb3d0aCByYXRlIHVwb24gaGl0dGluZyBtYXhpbXVtIGxvYWQuCiAgKiBDdXJyZW50bHkgc2V0IHRvIHVzZWQqMiArIGNhcGFjaXR5LzIuCkBAIC0zMDAsNjEgKzQxOSwxNTUgQEAKICAqICh3aGljaCBjYW5ub3QgZmFpbCBhbmQgdGh1cyBjYW4gZG8gbm8gYWxsb2NhdGlvbikuCiAgKi8KIHN0YXRpYyBQeURpY3RLZXlzT2JqZWN0IGVtcHR5X2tleXNfc3RydWN0ID0gewotICAgICAgICAyLCAvKiBka19yZWZjbnQgMSBmb3IgdGhpcyBzdHJ1Y3QsIDEgZm9yIGR1bW15X3N0cnVjdCAqLworICAgICAgICAxLCAvKiBka19yZWZjbnQgKi8KICAgICAgICAgMSwgLyogZGtfc2l6ZSAqLwogICAgICAgICBsb29rZGljdF9zcGxpdCwgLyogZGtfbG9va3VwICovCiAgICAgICAgIDAsIC8qIGRrX3VzYWJsZSAoaW1tdXRhYmxlKSAqLwotICAgICAgICB7Ci0gICAgICAgICAgICB7IDAsIDAsIDAgfSAvKiBka19lbnRyaWVzIChlbXB0eSkgKi8KLSAgICAgICAgfQorICAgICAgICAwLCAvKiBka19uZW50cmllcyAqLworICAgICAgICAuZGtfaW5kaWNlcyA9IHsgLmFzXzEgPSB7REtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFl9fSwKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqZW1wdHlfdmFsdWVzWzFdID0geyBOVUxMIH07CiAKICNkZWZpbmUgUHlfRU1QVFlfS0VZUyAmZW1wdHlfa2V5c19zdHJ1Y3QKIAorLyogVW5jb21tZW50IHRvIGNoZWNrIHRoZSBkaWN0IGNvbnRlbnQgaW4gX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KCkgKi8KKy8qICNkZWZpbmUgREVCVUdfUFlESUNUICovCisKKworI2lmZGVmIFB5X0RFQlVHCitzdGF0aWMgaW50CitfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koUHlEaWN0T2JqZWN0ICptcCkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgaW50IHNwbGl0dGVkID0gX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKTsKKyAgICBQeV9zc2l6ZV90IHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihrZXlzLT5ka19zaXplKTsKKyNpZmRlZiBERUJVR19QWURJQ1QKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9IERLX0VOVFJJRVMoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpOworI2VuZGlmCisKKyAgICBhc3NlcnQoMCA8PSBtcC0+bWFfdXNlZCAmJiBtcC0+bWFfdXNlZCA8PSB1c2FibGUpOworICAgIGFzc2VydChJU19QT1dFUl9PRl8yKGtleXMtPmRrX3NpemUpKTsKKyAgICBhc3NlcnQoMCA8PSBrZXlzLT5ka191c2FibGUKKyAgICAgICAgICAgJiYga2V5cy0+ZGtfdXNhYmxlIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KDAgPD0ga2V5cy0+ZGtfbmVudHJpZXMKKyAgICAgICAgICAgJiYga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoa2V5cy0+ZGtfdXNhYmxlICsga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlKTsKKworICAgIGlmICghc3BsaXR0ZWQpIHsKKyAgICAgICAgLyogY29tYmluZWQgdGFibGUgKi8KKyAgICAgICAgYXNzZXJ0KGtleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICB9CisKKyNpZmRlZiBERUJVR19QWURJQ1QKKyAgICBmb3IgKGk9MDsgaSA8IGtleXMtPmRrX3NpemU7IGkrKykgeworICAgICAgICBQeV9zc2l6ZV90IGl4ID0gZGtfZ2V0X2luZGV4KGtleXMsIGkpOworICAgICAgICBhc3NlcnQoREtJWF9EVU1NWSA8PSBpeCAmJiBpeCA8PSB1c2FibGUpOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgdXNhYmxlOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5ID0gJmVudHJpZXNbaV07CisgICAgICAgIFB5T2JqZWN0ICprZXkgPSBlbnRyeS0+bWVfa2V5OworCisgICAgICAgIGlmIChrZXkgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKWtleSktPmhhc2g7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGhhc2ggIT0gLTEpOworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfaGFzaCA9PSBoYXNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIHRlc3RfZGljdCBmYWlscyBpZiBQeU9iamVjdF9IYXNoKCkgaXMgY2FsbGVkIGFnYWluICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV9oYXNoICE9IC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc3BsaXR0ZWQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX3ZhbHVlICE9IE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNwbGl0dGVkKSB7CisgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX3ZhbHVlID09IE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwbGl0dGVkKSB7CisgICAgICAgIC8qIHNwbGl0dGVkIHRhYmxlICovCisgICAgICAgIGZvciAoaT0wOyBpIDwgbXAtPm1hX3VzZWQ7IGkrKykgeworICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV92YWx1ZXNbaV0gIT0gTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKKwogc3RhdGljIFB5RGljdEtleXNPYmplY3QgKm5ld19rZXlzX29iamVjdChQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisgICAgUHlfc3NpemVfdCBlcywgdXNhYmxlOwogCi0gICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkVfU1BMSVQpOworICAgIGFzc2VydChzaXplID49IFB5RGljdF9NSU5TSVpFKTsKICAgICBhc3NlcnQoSVNfUE9XRVJfT0ZfMihzaXplKSk7Ci0gICAgZGsgPSBQeU1lbV9NQUxMT0Moc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsKLSAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogKHNpemUtMSkpOwotICAgIGlmIChkayA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisgICAgdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOworICAgIGlmIChzaXplIDw9IDB4ZmYpIHsKKyAgICAgICAgZXMgPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZikgeworICAgICAgICBlcyA9IDI7CisgICAgfQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgZWxzZSBpZiAoc2l6ZSA8PSAweGZmZmZmZmZmKSB7CisgICAgICAgIGVzID0gNDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgZXMgPSBzaXplb2YoUHlfc3NpemVfdCk7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYgbnVtZnJlZWtleXMgPiAwKSB7CisgICAgICAgIGRrID0ga2V5c19mcmVlX2xpc3RbLS1udW1mcmVla2V5c107CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkayA9IFB5T2JqZWN0X01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBQeV9NRU1CRVJfU0laRShQeURpY3RLZXlzT2JqZWN0LCBka19pbmRpY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGVzICogc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOworICAgICAgICBpZiAoZGsgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogICAgIERLX0RFQlVHX0lOQ1JFRiBkay0+ZGtfcmVmY250ID0gMTsKICAgICBkay0+ZGtfc2l6ZSA9IHNpemU7Ci0gICAgZGstPmRrX3VzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKLSAgICBlcDAgPSAmZGstPmRrX2VudHJpZXNbMF07Ci0gICAgLyogSGFzaCB2YWx1ZSBvZiBzbG90IDAgaXMgdXNlZCBieSBwb3BpdGVtLCBzbyBpdCBtdXN0IGJlIGluaXRpYWxpemVkICovCi0gICAgZXAwLT5tZV9oYXNoID0gMDsKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGVwMFtpXS5tZV9rZXkgPSBOVUxMOwotICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOwotICAgIH0KKyAgICBkay0+ZGtfdXNhYmxlID0gdXNhYmxlOwogICAgIGRrLT5ka19sb29rdXAgPSBsb29rZGljdF91bmljb2RlX25vZHVtbXk7CisgICAgZGstPmRrX25lbnRyaWVzID0gMDsKKyAgICBtZW1zZXQoJmRrLT5ka19pbmRpY2VzLmFzXzFbMF0sIDB4ZmYsIGVzICogc2l6ZSk7CisgICAgbWVtc2V0KERLX0VOVFJJRVMoZGspLCAwLCBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogdXNhYmxlKTsKICAgICByZXR1cm4gZGs7CiB9CiAKIHN0YXRpYyB2b2lkCiBmcmVlX2tleXNfb2JqZWN0KFB5RGljdEtleXNPYmplY3QgKmtleXMpCiB7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSAma2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9IERLX0VOVFJJRVMoa2V5cyk7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKGtleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgZm9yIChpID0gMCwgbiA9IGtleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV9rZXkpOwogICAgICAgICBQeV9YREVDUkVGKGVudHJpZXNbaV0ubWVfdmFsdWUpOwogICAgIH0KLSAgICBQeU1lbV9GUkVFKGtleXMpOworICAgIGlmIChrZXlzLT5ka19zaXplID09IFB5RGljdF9NSU5TSVpFICYmIG51bWZyZWVrZXlzIDwgUHlEaWN0X01BWEZSRUVMSVNUKSB7CisgICAgICAgIGtleXNfZnJlZV9saXN0W251bWZyZWVrZXlzKytdID0ga2V5czsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGtleXMpOwogfQogCiAjZGVmaW5lIG5ld192YWx1ZXMoc2l6ZSkgUHlNZW1fTkVXKFB5T2JqZWN0ICosIHNpemUpCi0KICNkZWZpbmUgZnJlZV92YWx1ZXModmFsdWVzKSBQeU1lbV9GUkVFKHZhbHVlcykKIAogLyogQ29uc3VtZXMgYSByZWZlcmVuY2UgdG8gdGhlIGtleXMgb2JqZWN0ICovCkBAIC0zODAsNiArNTkzLDggQEAKICAgICBtcC0+bWFfa2V5cyA9IGtleXM7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IHZhbHVlczsKICAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1wOwogfQogCkBAIC0zOTAsNyArNjA1LDcgQEAKICAgICBQeU9iamVjdCAqKnZhbHVlczsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAKLSAgICBzaXplID0gREtfU0laRShrZXlzKTsKKyAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUoa2V5cykpOwogICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKQEAgLTQwNSwxMiArNjIwLDQ0IEBACiBQeU9iamVjdCAqCiBQeURpY3RfTmV3KHZvaWQpCiB7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIG5ld19kaWN0KGtleXMsIE5VTEwpOwogfQogCisvKiBTZWFyY2ggaW5kZXggb2YgaGFzaCB0YWJsZSBmcm9tIG9mZnNldCBvZiBlbnRyeSB0YWJsZSAqLworc3RhdGljIFB5X3NzaXplX3QKK2xvb2tkaWN0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmssIFB5X2hhc2hfdCBoYXNoLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIHNpemVfdCBpOworICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhrKTsKKyAgICBQeV9zc2l6ZV90IGl4OworCisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisgICAgaXggPSBka19nZXRfaW5kZXgoaywgaSk7CisgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgoaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBpbmRleCkgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KKyAgICByZXR1cm4gREtJWF9FUlJPUjsKK30KKwogLyoKIFRoZSBiYXNpYyBsb29rdXAgZnVuY3Rpb24gdXNlZCBieSBhbGwgb3BlcmF0aW9ucy4KIFRoaXMgaXMgYmFzZWQgb24gQWxnb3JpdGhtIEQgZnJvbSBLbnV0aCBWb2wuIDMsIFNlYy4gNi40LgpAQCAtNDI2LDUyICs2NzMsNjQgQEAKIGNvbnRyaWJ1dGlvbnMgYnkgUmVpbWVyIEJlaHJlbmRzLCBKeXJraSBBbGFrdWlqYWxhLCBWbGFkaW1pciBNYXJhbmdvem92IGFuZAogQ2hyaXN0aWFuIFRpc21lci4KIAotbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIE5VTEwgaWYgKGFuZCBvbmx5IGlmKSBhCi1jb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24gKHRoaXMgd2FzIG5ldyBpbiBQeXRob24gMi41KS4KK2xvb2tkaWN0KCkgaXMgZ2VuZXJhbC1wdXJwb3NlLCBhbmQgbWF5IHJldHVybiBES0lYX0VSUk9SIGlmIChhbmQgb25seSBpZikgYQorY29tcGFyaXNvbiByYWlzZXMgYW4gZXhjZXB0aW9uLgogbG9va2RpY3RfdW5pY29kZSgpIGJlbG93IGlzIHNwZWNpYWxpemVkIHRvIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mIHdoaWNoIGNhbgotbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gTlVMTC4KK25ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuIERLSVhfRVJST1IuCiBsb29rZGljdF91bmljb2RlX25vZHVtbXkgaXMgZnVydGhlciBzcGVjaWFsaXplZCBmb3Igc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUKIHRoZSA8ZHVtbXk+IHZhbHVlLgotRm9yIGJvdGgsIHdoZW4gdGhlIGtleSBpc24ndCBmb3VuZCBhIFB5RGljdEVudHJ5KiBpcyByZXR1cm5lZAotd2hlcmUgdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gZm91bmQsICp2YWx1ZV9hZGRyIHBvaW50cyB0byB0aGUgbWF0Y2hpbmcgdmFsdWUKLXNsb3QuCitGb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgREtJWF9FTVBUWSBpcyByZXR1cm5lZC4gaGFzaHBvcyByZXR1cm5zCit3aGVyZSB0aGUga2V5IGluZGV4IHNob3VsZCBiZSBpbnNlcnRlZC4KICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwotICAgIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKLSAgICBzaXplX3QgbWFzazsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBzaXplX3QgaSwgbWFzazsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKICAgICBpbnQgY21wOworICAgIFB5RGljdEtleXNPYmplY3QgKmRrOworICAgIFB5RGljdEtleUVudHJ5ICplcDAsICplcDsKICAgICBQeU9iamVjdCAqc3RhcnRrZXk7CiAKIHRvcDoKLSAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIGRrID0gbXAtPm1hX2tleXM7CisgICAgbWFzayA9IERLX01BU0soZGspOworICAgIGVwMCA9IERLX0VOVFJJRVMoZGspOwogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworCisgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgcmV0dXJuIGl4OworICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICBzdGFydGtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIHJldHVybiBES0lYX0VSUk9SOworICAgICAgICAgICAgaWYgKGRrID09IG1wLT5tYV9rZXlzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewpAQCAtNDc5LDQwICs3MzgsNTAgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmVlc2xvdCA9IE5VTEw7CisgICAgICAgIGZyZWVzbG90ID0gLTE7CiAgICAgfQogCi0gICAgLyogSW4gdGhlIGxvb3AsIG1lX2tleSA9PSBkdW1teSBpcyBieSBmYXIgKGZhY3RvciBvZiAxMDBzKSB0aGUKLSAgICAgICBsZWFzdCBsaWtlbHkgb3V0Y29tZSwgc28gdGVzdCBmb3IgdGhhdCBsYXN0LiAqLwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBlcDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZnJlZXNsb3QtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdDsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpICYgbWFzazsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gKGZyZWVzbG90ID09IC0xKSA/IChQeV9zc2l6ZV90KWkgOiBmcmVlc2xvdDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgZXAtPm1lX2tleSAhPSBkdW1teSkgeworICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OwogICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIERLSVhfRVJST1I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKKyAgICAgICAgICAgIGlmIChkayA9PSBtcC0+bWFfa2V5cyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CiAgICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC01MjAsNzIgKzc4OSw4MCBAQAogICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KICAgICByZXR1cm4gMDsKIH0KIAogLyogU3BlY2lhbGl6ZWQgdmVyc2lvbiBmb3Igc3RyaW5nLW9ubHkga2V5cyAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZnJlZXNsb3Q7CiAgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydChtcC0+bWFfdmFsdWVzID09IE5VTEwpOwogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CiAgICAgfQogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgIH0KLSAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgZnJlZXNsb3QgPSBlcDsKKyAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICBmcmVlc2xvdCA9IGk7CisgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpIHsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQorICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZXNsb3QgPSBOVUxMOworICAgICAgICBmcmVlc2xvdCA9IC0xOwogICAgIH0KIAotICAgIC8qIEluIHRoZSBsb29wLCBtZV9rZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCi0gICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgZm9yIChzaXplX3QgcGVydHVyYiA9IGhhc2g7OykgeworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOworICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IChmcmVlc2xvdCA9PSAtMSkgPyAoUHlfc3NpemVfdClpIDogZnJlZXNsb3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKLSAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAmJiBlcC0+bWVfa2V5ICE9IGR1bW15Ci0gICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCiAgICAgcmV0dXJuIDA7CkBAIC01OTMsNDAgKzg3MCw2MyBAQAogCiAvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKICAqIHdpbGwgYmUgcHJlc2VudC4gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyA9PSBOVUxMKTsKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOwogICAgIH0KICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC02MzgsMzkgKzkzOCw2MiBAQAogICogU3BsaXQgdGFibGVzIG9ubHkgY29udGFpbiB1bmljb2RlIGtleXMgYW5kIG5vIGR1bW15IGtleXMsCiAgKiBzbyBhbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgbG9va2RpY3RfdW5pY29kZV9ub2R1bW15LgogICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIC8qIG1wIG11c3Qgc3BsaXQgdGFibGUgKi8KKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgZXAgPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKLSAgICAgICAgLyogbG9va2RpY3QgZXhwZWN0cyBhIGNvbWJpbmVkLXRhYmxlLCBzbyBmaXggdmFsdWVfYWRkciAqLwotICAgICAgICBpID0gZXAgLSBlcDA7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgaXggPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKKyAgICAgICAgaWYgKGl4ID49IDApIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpeDsKICAgICB9CisKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC03MDcsMjcgKzEwMzAsMjcgQEAKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBudW1lbnRyaWVzOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSB8fCAhX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob3ApKQogICAgICAgICByZXR1cm47CiAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKikgb3A7Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIG51bWVudHJpZXMgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKHZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoCi0gICAgICAgICAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSkpOworICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwMFtpXS5tZV9rZXkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IGVwMFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8CkBAIC03MzksMzMgKzEwNjIsMzUgQEAKIH0KIAogLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZmluZCBzbG90IGZvciBhbiBpdGVtIGZyb20gaXRzIGhhc2gKLSAqIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkaWN0LgotICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorICAgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCisKKyAgIFRoZSBkaWN0IG11c3QgYmUgY29tYmluZWQuICovCitzdGF0aWMgdm9pZAogZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChoYXNocG9zICE9IE5VTEwpOwogICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKICAgICBpID0gaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgaXggIT0gREtJWF9FTVBUWTspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSAmIG1hc2spOwogICAgIH0KKyAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAqaGFzaHBvcyA9IGkgJiBtYXNrOwogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgIGVsc2UKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgIHJldHVybiBlcDsKKyAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTc4NCw1OCArMTEwOSw4OCBAQAogewogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDA7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKIAogICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgaXggPSBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOwotICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOwotICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAoc2VlIGlzc3VlICMyMjY1MykgKi8KKworICAgIC8qIFdoZW4gaW5zZXJ0aW9uIG9yZGVyIGlzIGRpZmZlcmVudCBmcm9tIHNoYXJlZCBrZXksIHdlIGNhbid0IHNoYXJlCisgICAgICogdGhlIGtleSBhbnltb3JlLiAgQ29udmVydCB0aGlzIGluc3RhbmNlIHRvIGNvbWJpbmUgdGFibGUuCisgICAgICovCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkgJiYKKyAgICAgICAgKChpeCA+PSAwICYmICp2YWx1ZV9hZGRyID09IE5VTEwgJiYgbXAtPm1hX3VzZWQgIT0gaXgpIHx8CisgICAgICAgICAoaXggPT0gREtJWF9FTVBUWSAmJiBtcC0+bWFfdXNlZCAhPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpKSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBpeCA9IERLSVhfRU1QVFk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKLSAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIC8qIEluc2VydCBpbnRvIG5ldyBzbG90LiAqLworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKLSAgICAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOwotICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICB9CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpOworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICAgICAgYXNzZXJ0IChtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPT0gTlVMTCk7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgbXAtPm1hX3VzZWQrKzsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMrKzsKKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7CisgICAgICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgYXNzZXJ0KHZhbHVlX2FkZHIgIT0gTlVMTCk7CisKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOworCisgICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyIChzZWUgaXNzdWUgIzIyNjUzKSAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBwZW5kaW5nIHN0YXRlICovCisgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChpeCA9PSBtcC0+bWFfdXNlZCk7CisgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICBtcC0+bWFfdXNlZCsrOworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04NTQsMjQgKzEyMDksMjQgQEAKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIFB5RGljdEtleXNPYmplY3QgKmsgPSBtcC0+bWFfa2V5czsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3QpREtfU0laRShrKS0xOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmay0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCiAgICAgYXNzZXJ0KGstPmRrX2xvb2t1cCAhPSBOVUxMKTsKICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBrLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIGkgPSBoYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgZGtfZ2V0X2luZGV4KGssIGkpICE9IERLSVhfRU1QVFk7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKICAgICB9CisgICAgZXAgPSAmZXAwW2stPmRrX25lbnRyaWVzXTsKICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOworICAgIGRrX3NldF9pbmRleChrLCBpLCBrLT5ka19uZW50cmllcyk7CisgICAgay0+ZGtfbmVudHJpZXMrKzsKICAgICBlcC0+bWVfa2V5ID0ga2V5OwogICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKQEAgLTg5MCwxMyArMTI0NSwxMyBAQAogc3RhdGljIGludAogZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpCiB7Ci0gICAgUHlfc3NpemVfdCBuZXdzaXplOworICAgIFB5X3NzaXplX3QgaSwgbmV3c2l6ZTsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpvbGRrZXlzOwogICAgIFB5T2JqZWN0ICoqb2xkdmFsdWVzOwotICAgIFB5X3NzaXplX3QgaSwgb2xkc2l6ZTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwOwogCi0vKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KLSAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKKyAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKQEAgLTkxNCw1NCArMTI2OSw0MSBAQAogICAgIH0KICAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KQogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgb2xkc2l6ZSA9IERLX1NJWkUob2xka2V5cyk7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IE5VTEw7Ci0gICAgLyogSWYgZW1wdHkgdGhlbiBub3RoaW5nIHRvIGNvcHkgc28ganVzdCByZXR1cm4gKi8KLSAgICBpZiAob2xkc2l6ZSA9PSAxKSB7Ci0gICAgICAgIGFzc2VydChvbGRrZXlzID09IFB5X0VNUFRZX0tFWVMpOwotICAgICAgICBES19ERUNSRUYob2xka2V5cyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBlcDAgPSBES19FTlRSSUVTKG9sZGtleXMpOwogICAgIC8qIE1haW4gbG9vcCBiZWxvdyBhc3N1bWVzIHdlIGNhbiB0cmFuc2ZlciByZWZjb3VudCB0byBuZXcga2V5cwogICAgICAqIGFuZCB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiBtZV92YWx1ZS4KICAgICAgKiBJbmNyZW1lbnQgcmVmLWNvdW50cyBhbmQgY29weSB2YWx1ZXMgaGVyZSB0byBjb21wZW5zYXRlCiAgICAgICogVGhpcyAocmVzaXppbmcgYSBzcGxpdCB0YWJsZSkgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcmFyZSAqLwogICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRrZXlzLT5ka19uZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAob2xkdmFsdWVzW2ldICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYob2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpOwotICAgICAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBvbGR2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVwMFtpXS5tZV9rZXkpOworICAgICAgICAgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IG9sZHZhbHVlc1tpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAvKiBNYWluIGxvb3AgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzW2ldOworICAgIGZvciAoaSA9IDA7IGkgPCBvbGRrZXlzLT5ka19uZW50cmllczsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZlcDBbaV07CiAgICAgICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gZHVtbXkpOwogICAgICAgICAgICAgaW5zZXJ0ZGljdF9jbGVhbihtcCwgZXAtPm1lX2tleSwgZXAtPm1lX2hhc2gsIGVwLT5tZV92YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZSAtPSBtcC0+bWFfdXNlZDsKICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKICAgICAgICAgLyogTlVMTCBvdXQgbWVfdmFsdWUgc2xvdCBpbiBvbGRrZXlzLCBpbiBjYXNlIGl0IHdhcyBzaGFyZWQgKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykKLSAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBOVUxMOwotICAgICAgICBhc3NlcnQob2xkdmFsdWVzICE9IGVtcHR5X3ZhbHVlcyk7Ci0gICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRrZXlzLT5ka19uZW50cmllczsgaSsrKQorICAgICAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gTlVMTDsKICAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOworICAgICAgICBpZiAob2xkdmFsdWVzICE9IGVtcHR5X3ZhbHVlcykgeworICAgICAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF9zcGxpdCk7Ci0gICAgICAgIGlmIChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KSB7Ci0gICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm9sZGtleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVwMFtpXS5tZV9rZXkgPT0gZHVtbXkpCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKLSAgICAgICAgREtfREVCVUdfREVDUkVGIFB5TWVtX0ZSRUUob2xka2V5cyk7CisgICAgICAgIERLX0RFQlVHX0RFQ1JFRiBQeU9iamVjdF9GUkVFKG9sZGtleXMpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTk5MSw4ICsxMzMzLDggQEAKICAgICAgICAgfQogICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpOwogICAgICAgICAvKiBDb3B5IHZhbHVlcyBpbnRvIGEgbmV3IGFycmF5ICovCi0gICAgICAgIGVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICAgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgICAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgc2l6ZSA9IFVTQUJMRV9GUkFDVElPTihES19TSVpFKG1wLT5tYV9rZXlzKSk7CiAgICAgICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLApAQCAtMTAxNSw3ICsxMzU3LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXM7Ci0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CiAgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CiAgICAgICAgICBuZXdzaXplIDw8PSAxKQogICAgICAgICA7CkBAIC0xMDM5LDggKzEzODEsOCBAQAogUHlEaWN0X0dldEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIApAQCAtMTA2NiwxNSArMTQwOCwxNSBAQAogICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCiAgICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CiAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKGl4IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgICAgIGlmIChpeCA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTA4NSw4ICsxNDI3LDggQEAKIFB5T2JqZWN0ICoKIF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKQEAgLTExMDMsMTUgKzE0NDUsMTUgQEAKICAgICAgICAgLyogcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiAqLwogICAgICAgICBQeU9iamVjdCAqZXJyX3R5cGUsICplcnJfdmFsdWUsICplcnJfdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJfdHlwZSwgJmVycl92YWx1ZSwgJmVycl90Yik7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOwogICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCiAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXJyX3R5cGUsIGVycl92YWx1ZSwgZXJyX3RiKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpCisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTEyNiw5ICsxNDY4LDkgQEAKIFB5T2JqZWN0ICoKIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5RGljdE9iamVjdCptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CkBAIC0xMTQ0LDggKzE0ODYsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CkBAIC0xMTYwLDM5ICsxNTAyLDQwIEBACiAgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKGRwLCBrdik7CiB9CiAKLS8qIEZhc3QgdmVyc2lvbiBvZiBnbG9iYWwgdmFsdWUgbG9va3VwLgorLyogRmFzdCB2ZXJzaW9uIG9mIGdsb2JhbCB2YWx1ZSBsb29rdXAgKExPQURfR0xPQkFMKS4KICAqIExvb2t1cCBpbiBnbG9iYWxzLCB0aGVuIGJ1aWx0aW5zLgorICoKKyAqIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQgKGV4OiBjb21wdXRpbmcgdGhlCisgKiBrZXkgaGFzaCBmYWlsZWQsIGtleSBjb21wYXJpc29uIGZhaWxlZCwgLi4uKS4gUmV0dXJuIE5VTEwgaWYgdGhlIGtleSBkb2Vzbid0CisgKiBleGlzdC4gUmV0dXJuIHRoZSB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cy4KICAqLwogUHlPYmplY3QgKgogX1B5RGljdF9Mb2FkR2xvYmFsKFB5RGljdE9iamVjdCAqZ2xvYmFscywgUHlEaWN0T2JqZWN0ICpidWlsdGlucywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBQeU9iamVjdCAqeDsKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7Ci0gICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKLSAgICAgICAgaWYgKGhhc2ggIT0gLTEpIHsKLSAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplOwotICAgICAgICAgICAgZSA9IGdsb2JhbHMtPm1hX2tleXMtPmRrX2xvb2t1cChnbG9iYWxzLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICBlID0gYnVpbHRpbnMtPm1hX2tleXMtPmRrX2xvb2t1cChidWlsdGlucywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQorICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgeCA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWdsb2JhbHMsIGtleSk7Ci0gICAgaWYgKHggIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisKKyAgICAvKiBuYW1lc3BhY2UgMTogZ2xvYmFscyAqLworICAgIGl4ID0gZ2xvYmFscy0+bWFfa2V5cy0+ZGtfbG9va3VwKGdsb2JhbHMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopYnVpbHRpbnMsIGtleSk7CisgICAgaWYgKGl4ICE9IERLSVhfRU1QVFkgJiYgKnZhbHVlX2FkZHIgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICp2YWx1ZV9hZGRyOworCisgICAgLyogbmFtZXNwYWNlIDI6IGJ1aWx0aW5zICovCisgICAgaXggPSBidWlsdGlucy0+bWFfa2V5cy0+ZGtfbG9va3VwKGJ1aWx0aW5zLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CiAKIC8qIENBVVRJT046IFB5RGljdF9TZXRJdGVtKCkgbXVzdCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCByZXNpemUgdGhlCkBAIC0xMjQ3LDE2ICsxNTkwLDggQEAKIGludAogUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewotICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwotICAgIFB5T2JqZWN0ICpvbGRfa2V5LCAqb2xkX3ZhbHVlOwotICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAotICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBhc3NlcnQoa2V5KTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKQEAgLTEyNjQsMzEgKzE1OTksMTQgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7Ci0gICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKLSAgICBtcC0+bWFfdXNlZC0tOwotICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7Ci0gICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7Ci0gICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gX1B5RGljdF9EZWxJdGVtX0tub3duSGFzaChvcCwga2V5LCBoYXNoKTsKIH0KIAogaW50CiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqb2xkX2tleSwgKm9sZF92YWx1ZTsKQEAgLTEzMDEsMjQgKzE2MTksMzggQEAKICAgICBhc3NlcnQoa2V5KTsKICAgICBhc3NlcnQoaGFzaCAhPSAtMSk7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcykgPT0gaXgpOworCisgICAgLy8gU3BsaXQgdGFibGUgZG9lc24ndCBhbGxvdyBkZWxldGlvbi4gIENvbWJpbmUgaXQuCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICB9CisKICAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBhc3NlcnQob2xkX3ZhbHVlICE9IE5VTEwpOwogICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7Ci0gICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKLSAgICB9CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBlcCA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpeF07CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBES0lYX0RVTU1ZKTsKKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CisgICAgUHlfREVDUkVGKG9sZF9rZXkpOwogICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOworCisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzQyLDkgKzE2NzQsMTAgQEAKICAgICBtcC0+bWFfa2V5cyA9IFB5X0VNUFRZX0tFWVM7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IGVtcHR5X3ZhbHVlczsKICAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKICAgICAvKiAuLi50aGVuIGNsZWFyIHRoZSBrZXlzIGFuZCB2YWx1ZXMgKi8KICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgbiA9IERLX1NJWkUob2xka2V5cyk7CisgICAgICAgIG4gPSBvbGRrZXlzLT5ka19uZW50cmllczsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgIFB5X0NMRUFSKG9sZHZhbHVlc1tpXSk7CiAgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CkBAIC0xMzU0LDQyICsxNjg3LDU5IEBACiAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CiAgICAgfQorICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKIH0KIAotLyogUmV0dXJucyAtMSBpZiBubyBtb3JlIGl0ZW1zIChvciBvcCBpcyBub3QgYSBkaWN0KSwKLSAqIGluZGV4IG9mIGl0ZW0gb3RoZXJ3aXNlLiBTdG9yZXMgdmFsdWUgaW4gcHZhbHVlCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24KKyAqIHRvIHRoZSBrZXkgYW5kIHZhbHVlLgorICogUmV0dXJuIDEgb24gc3VjY2VzcywgcmV0dXJuIDAgd2hlbiB0aGUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5CisgKiAob3IgaWYgb3AgaXMgbm90IGEgZGljdGlvbmFyeSkKICAqLwotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1kaWN0X25leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICoqcHZhbHVlKQoraW50CitfUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksCisgICAgICAgICAgICAgUHlPYmplY3QgKipwdmFsdWUsIFB5X2hhc2hfdCAqcGhhc2gpCiB7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7Ci0KKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnlfcHRyOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBpID0gKnBwb3M7CisgICAgbiA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKKyAgICBpZiAoKHNpemVfdClpID49IChzaXplX3QpbikKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFsdWVfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbnRyeV9wdHIgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaV07CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICAgICAgZW50cnlfcHRyID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHZhbHVlID0gZW50cnlfcHRyLT5tZV92YWx1ZTsKICAgICB9Ci0gICAgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKLSAgICB9Ci0gICAgaWYgKGkgPiBtYXNrKQotICAgICAgICByZXR1cm4gLTE7CisgICAgKnBwb3MgPSBpKzE7CisgICAgaWYgKHBrZXkpCisgICAgICAgICpwa2V5ID0gZW50cnlfcHRyLT5tZV9rZXk7CisgICAgaWYgKHBoYXNoKQorICAgICAgICAqcGhhc2ggPSBlbnRyeV9wdHItPm1lX2hhc2g7CiAgICAgaWYgKHB2YWx1ZSkKLSAgICAgICAgKnB2YWx1ZSA9ICp2YWx1ZV9wdHI7Ci0gICAgcmV0dXJuIGk7CisgICAgICAgICpwdmFsdWUgPSB2YWx1ZTsKKyAgICByZXR1cm4gMTsKIH0KIAogLyoKQEAgLTEzOTksOSArMTc0OSwxMiBAQAogICogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAqICAgICBpID0gMDsgICAjIGltcG9ydGFudCEgIGkgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgY2hhbmdlZCBieSB5b3UKICAqICAgICB3aGlsZSAoUHlEaWN0X05leHQoeW91cmRpY3QsICZpLCAma2V5LCAmdmFsdWUpKSB7Ci0gKiAgICAgICAgICAgICAgUmVmZXIgdG8gYm9ycm93ZWQgcmVmZXJlbmNlcyBpbiBrZXkgYW5kIHZhbHVlLgorICogICAgICAgICBSZWZlciB0byBib3Jyb3dlZCByZWZlcmVuY2VzIGluIGtleSBhbmQgdmFsdWUuCiAgKiAgICAgfQogICoKKyAqIFJldHVybiAxIG9uIHN1Y2Nlc3MsIHJldHVybiAwIHdoZW4gdGhlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeQorICogKG9yIGlmIG9wIGlzIG5vdCBhIGRpY3Rpb25hcnkpCisgKgogICogQ0FVVElPTjogIEluIGdlbmVyYWwsIGl0IGlzbid0IHNhZmUgdG8gdXNlIFB5RGljdF9OZXh0IGluIGEgbG9vcCB0aGF0CiAgKiBtdXRhdGVzIHRoZSBkaWN0LiAgT25lIGV4Y2VwdGlvbjogIGl0IGlzIHNhZmUgaWYgdGhlIGxvb3AgbWVyZWx5IGNoYW5nZXMKICAqIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzIChidXQgZG9lc24ndCBpbnNlcnQgbmV3IGtleXMgb3IKQEAgLTE0MTAsMzQgKzE3NjMsNyBAQAogaW50CiBQeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwgUHlPYmplY3QgKipwdmFsdWUpCiB7Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgKnBwb3MgPSBpKzE7Ci0gICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwotICAgIHJldHVybiAxOwotfQotCi0vKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24KLSAqIHRvIHRoZSBrZXkgYW5kIHZhbHVlLgotICovCi1pbnQKLV9QeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwKLSAgICAgICAgICAgICBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKLXsKLSAgICBQeURpY3RPYmplY3QgKm1wOwotICAgIFB5X3NzaXplX3QgaSA9IGRpY3RfbmV4dChvcCwgKnBwb3MsIHB2YWx1ZSk7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICAqcHBvcyA9IGkrMTsKLSAgICAqcGhhc2ggPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9oYXNoOwotICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gX1B5RGljdF9OZXh0KG9wLCBwcG9zLCBwa2V5LCBwdmFsdWUsIE5VTEwpOwogfQogCiAvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIGRpY3QucG9wKCkuICovCkBAIC0xNDQ1LDYgKzE3NzEsNyBAQAogX1B5RGljdF9Qb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmx0KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXgsIGhhc2hwb3M7CiAgICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKQEAgLTE0NjMsMTEgKzE3OTAsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgaWYgKGRlZmx0KSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOwogICAgICAgICAgICAgcmV0dXJuIGRlZmx0OwpAQCAtMTQ3NSwxNSArMTgwMSwyOSBAQAogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgLy8gU3BsaXQgdGFibGUgZG9lc24ndCBhbGxvdyBkZWxldGlvbi4gIENvbWJpbmUgaXQuCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgIH0KKworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGFzc2VydChvbGRfdmFsdWUgIT0gTlVMTCk7CiAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgREtJWF9EVU1NWSk7CisgICAgZXAgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaXhdOworICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKKyAgICBQeV9ERUNSRUYob2xkX2tleSk7CisKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIApAQCAtMTUwOCw3ICsxODQ4LDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5X1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIEVTVElNQVRFX1NJWkUoUHlfU0laRShpdGVyYWJsZSkpKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE1MjcsNyArMTg2Nyw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAKLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgRVNUSU1BVEVfU0laRShQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE1ODcsNyArMTkyNyw3IEBACiAgICAgUHlfVFJBU0hDQU5fU0FGRV9CRUdJTihtcCkKICAgICBpZiAodmFsdWVzICE9IE5VTEwpIHsKICAgICAgICAgaWYgKHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsdWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyZWVfdmFsdWVzKHZhbHVlcyk7CkBAIC0xNjk5LDggKzIwMzksOCBAQAogZGljdF9zdWJzY3JpcHQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeU9iamVjdCAqdjsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKQEAgLTE3MDksMTEgKzIwNDksMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9ICp2YWx1ZV9hZGRyOwotICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3QobXApKSB7CiAgICAgICAgICAgICAvKiBMb29rIHVwIF9fbWlzc2luZ19fIG1ldGhvZCBpZiB3ZSdyZSBhIHN1YmNsYXNzLiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1pc3NpbmcsICpyZXM7CkBAIC0xNzMxLDggKzIwNzAsOCBAQAogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKHYpOworICAgIHYgPSAqdmFsdWVfYWRkcjsKKyAgICBQeV9JTkNSRUYodik7CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAgLTE3NzIsOCArMjExMSw4IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9Ci0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgc2l6ZSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CkBAIC0xODAwLDYgKzIxMzksNyBAQAogewogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuLCBvZmZzZXQ7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKQEAgLTE4MTUsMTMgKzIxNTUsMTQgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXS5tZV92YWx1ZTsKKyAgICAgICAgdmFsdWVfcHRyID0gJmVwWzBdLm1lX3ZhbHVlOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIH0KICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgewpAQCAtMTg3Miw4ICsyMjEzLDggQEAKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9CiAgICAgLyogTm90aGluZyB3ZSBkbyBiZWxvdyBtYWtlcyBhbnkgZnVuY3Rpb24gY2FsbHMuICovCi0gICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllczsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKQEAgLTE5MTcsNyArMjI1OCw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpY3RfdXBkYXRlX2NvbW1vbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBjaGFyICptZXRobmFtZSkKK2RpY3RfdXBkYXRlX2NvbW1vbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhuYW1lKQogewogICAgIFB5T2JqZWN0ICphcmcgPSBOVUxMOwogICAgIGludCByZXN1bHQgPSAwOwpAQCAtMjAxOSw2ICsyMzYxLDcgQEAKICAgICB9CiAKICAgICBpID0gMDsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KChQeURpY3RPYmplY3QgKilkKSk7CiAgICAgZ290byBSZXR1cm47CiBGYWlsOgogICAgIFB5X1hERUNSRUYoaXRlbSk7CkBAIC0yMDI5LDE4ICsyMzcyLDE0IEBACiAgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QoaSwgUHlfc3NpemVfdCwgaW50KTsKIH0KIAotaW50Ci1QeURpY3RfVXBkYXRlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYikKLXsKLSAgICByZXR1cm4gUHlEaWN0X01lcmdlKGEsIGIsIDEpOwotfQotCi1pbnQKLVB5RGljdF9NZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKK3N0YXRpYyBpbnQKK2RpY3RfbWVyZ2UoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcCwgKm90aGVyOwogICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cnk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5LCAqZXAwOworCisgICAgYXNzZXJ0KDAgPD0gb3ZlcnJpZGUgJiYgb3ZlcnJpZGUgPD0gMik7CiAKICAgICAvKiBXZSBhY2NlcHQgZm9yIHRoZSBhcmd1bWVudCBlaXRoZXIgYSBjb25jcmV0ZSBkaWN0aW9uYXJ5IG9iamVjdCwKICAgICAgKiBvciBhbiBhYnN0cmFjdCAibWFwcGluZyIgb2JqZWN0LiAgRm9yIHRoZSBmb3JtZXIsIHdlIGNhbiBkbwpAQCAtMjA3MCwxMCArMjQwOSwxMSBAQAogICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSAqIDMgPCBvdGhlci0+bWFfdXNlZCAqIDIpCiAgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKjIpICE9IDApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG90aGVyLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICBlcDAgPSBES19FTlRSSUVTKG90aGVyLT5tYV9rZXlzKTsKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IG90aGVyLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgICAgIGVudHJ5ID0gJmVwMFtpXTsKICAgICAgICAgICAgIGtleSA9IGVudHJ5LT5tZV9rZXk7CiAgICAgICAgICAgICBoYXNoID0gZW50cnktPm1lX2hhc2g7CiAgICAgICAgICAgICBpZiAob3RoZXItPm1hX3ZhbHVlcykKQEAgLTIwODUsMTQgKzI0MjUsMjAgQEAKICAgICAgICAgICAgICAgICBpbnQgZXJyID0gMDsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZSB8fCBQeURpY3RfR2V0SXRlbShhLCBrZXkpID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlID09IDEgfHwgX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChhLCBrZXksIGhhc2gpID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGVyciA9IGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG92ZXJyaWRlICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAgICAgICAgICBpZiAobiAhPSBES19TSVpFKG90aGVyLT5tYV9rZXlzKSkgeworICAgICAgICAgICAgICAgIGlmIChuICE9IG90aGVyLT5tYV9rZXlzLT5ka19uZW50cmllcykgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3QgbXV0YXRlZCBkdXJpbmcgdXBkYXRlIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTIxMjEsNyArMjQ2NywxMyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIGZvciAoa2V5ID0gUHlJdGVyX05leHQoaXRlcik7IGtleTsga2V5ID0gUHlJdGVyX05leHQoaXRlcikpIHsKLSAgICAgICAgICAgIGlmICghb3ZlcnJpZGUgJiYgUHlEaWN0X0dldEl0ZW0oYSwga2V5KSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAob3ZlcnJpZGUgIT0gMSAmJiBQeURpY3RfR2V0SXRlbShhLCBrZXkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTIxNDQsOSArMjQ5NiwyOSBAQAogICAgICAgICAgICAgLyogSXRlcmF0b3IgY29tcGxldGVkLCB2aWEgZXJyb3IgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeSgoUHlEaWN0T2JqZWN0ICopYSkpOwogICAgIHJldHVybiAwOwogfQogCitpbnQKK1B5RGljdF9VcGRhdGUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQoreworICAgIHJldHVybiBkaWN0X21lcmdlKGEsIGIsIDEpOworfQorCitpbnQKK1B5RGljdF9NZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKK3sKKyAgICAvKiBYWFggRGVwcmVjYXRlIG92ZXJyaWRlIG5vdCBpbiAoMCwgMSkuICovCisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgb3ZlcnJpZGUgIT0gMCk7Cit9CisKK2ludAorX1B5RGljdF9NZXJnZUV4KFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQoreworICAgIHJldHVybiBkaWN0X21lcmdlKGEsIGIsIG92ZXJyaWRlKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfY29weShQeURpY3RPYmplY3QgKm1wKQogewpAQCAtMjE2Nyw3ICsyNTM5LDkgQEAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvOwogICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CiAgICAgICAgIFB5RGljdE9iamVjdCAqc3BsaXRfY29weTsKLSAgICAgICAgUHlPYmplY3QgKipuZXd2YWx1ZXMgPSBuZXdfdmFsdWVzKERLX1NJWkUobXAtPm1hX2tleXMpKTsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKKyAgICAgICAgUHlPYmplY3QgKipuZXd2YWx1ZXM7CisgICAgICAgIG5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgICAgIGlmIChuZXd2YWx1ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBzcGxpdF9jb3B5ID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKQEAgLTIxNzksNyArMjU1Myw3IEBACiAgICAgICAgIHNwbGl0X2NvcHktPm1hX2tleXMgPSBtcC0+bWFfa2V5czsKICAgICAgICAgc3BsaXRfY29weS0+bWFfdXNlZCA9IG1wLT5tYV91c2VkOwogICAgICAgICBES19JTkNSRUYobXAtPm1hX2tleXMpOwotICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IHNpemU7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IG1wLT5tYV92YWx1ZXNbaV07CiAgICAgICAgICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIHNwbGl0X2NvcHktPm1hX3ZhbHVlc1tpXSA9IHZhbHVlOwpAQCAtMjI1MCw4ICsyNjI0LDggQEAKICAgICAgICAgLyogY2FuJ3QgYmUgZXF1YWwgaWYgIyBvZiBlbnRyaWVzIGRpZmZlciAqLwogICAgICAgICByZXR1cm4gMDsKICAgICAvKiBTYW1lICMgb2YgZW50cmllcyAtLSBjaGVjayBhbGwgb2YgJ2VtLiAgRXhpdCBlYXJseSBvbiBhbnkgZGlmZi4gKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShhLT5tYV9rZXlzKTsgaSsrKSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZhLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgIGZvciAoaSA9IDA7IGkgPCBhLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZES19FTlRSSUVTKGEtPm1hX2tleXMpW2ldOwogICAgICAgICBQeU9iamVjdCAqYXZhbDsKICAgICAgICAgaWYgKGEtPm1hX3ZhbHVlcykKICAgICAgICAgICAgIGF2YWwgPSBhLT5tYV92YWx1ZXNbaV07CkBAIC0yMjY4LDcgKzI2NDIsNyBAQAogICAgICAgICAgICAgLyogZGl0dG8gZm9yIGtleSAqLwogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgICAgICAvKiByZXVzZSB0aGUga25vd24gaGFzaCB2YWx1ZSAqLwotICAgICAgICAgICAgaWYgKChiLT5tYV9rZXlzLT5ka19sb29rdXApKGIsIGtleSwgZXAtPm1lX2hhc2gsICZ2YWRkcikgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmICgoYi0+bWFfa2V5cy0+ZGtfbG9va3VwKShiLCBrZXksIGVwLT5tZV9oYXNoLCAmdmFkZHIsIE5VTEwpIDwgMCkKICAgICAgICAgICAgICAgICBidmFsID0gTlVMTDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBidmFsID0gKnZhZGRyOwpAQCAtMjMyNiw3ICsyNzAwLDcgQEAKIHsKICAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wID0gc2VsZjsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKQEAgLTIzMzUsMTAgKzI3MDksMTIgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygqdmFsdWVfYWRkciAhPSBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMzQ4LDcgKzI3MjQsNyBAQAogICAgIFB5T2JqZWN0ICpmYWlsb2JqID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZmFpbG9iaikpCkBAIC0yMzYwLDEyICsyNzM2LDEzIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwotICAgIGlmICh2YWwgPT0gTlVMTCkKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKQogICAgICAgICB2YWwgPSBmYWlsb2JqOworICAgIGVsc2UKKyAgICAgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgUHlfSU5DUkVGKHZhbCk7CiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTIzNzYsNiArMjc1Myw3IEBACiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilkOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaGFzaHBvcywgaXg7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIApAQCAtMjM4OSwyNiArMjc2Nyw0MCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHZhbCA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgeworICAgICAgICB2YWwgPSBkZWZhdWx0b2JqOwogICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CiAgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KLSAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApCisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlcCA9IGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKICAgICAgICAgfQorICAgICAgICBpeCA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRvYmopOwogICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgZGVmYXVsdG9iaik7CisgICAgICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgaXgpOworICAgICAgICBlcCA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpeF07CiAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSBkZWZhdWx0b2JqOwotICAgICAgICB2YWwgPSBkZWZhdWx0b2JqOworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICAgICAgbXAtPm1hX3ZhbHVlc1tpeF0gPSB2YWw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWw7CisgICAgICAgIH0KICAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMrKzsKICAgICAgICAgbXAtPm1hX3VzZWQrKzsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgfQogICAgIHJldHVybiB2YWw7CiB9CkBAIC0yNDQ4LDExICsyODQwLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9wb3BpdGVtKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfaGFzaF90IGkgPSAwOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKLQogICAgIC8qIEFsbG9jYXRlIHRoZSByZXN1bHQgdHVwbGUgYmVmb3JlIGNoZWNraW5nIHRoZSBzaXplLiAgQmVsaWV2ZSBpdAogICAgICAqIG9yIG5vdCwgdGhpcyBhbGxvY2F0aW9uIGNvdWxkIHRyaWdnZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpY2gKICAgICAgKiBjb3VsZCBlbXB0eSB0aGUgZGljdCwgc28gaWYgd2UgY2hlY2tlZCB0aGUgc2l6ZSBmaXJzdCBhbmQgdGhhdApAQCAtMjQ3OSw2MSArMjg3MCw1OCBAQAogICAgICAgICB9CiAgICAgfQogICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAvKiBTZXQgZXAgdG8gInRoZSBmaXJzdCIgZGljdCBlbnRyeSB3aXRoIGEgdmFsdWUuICBXZSBhYnVzZSB0aGUgaGFzaAotICAgICAqIGZpZWxkIG9mIHNsb3QgMCB0byBob2xkIGEgc2VhcmNoIGZpbmdlcjoKLSAgICAgKiBJZiBzbG90IDAgaGFzIGEgdmFsdWUsIHVzZSBzbG90IDAuCi0gICAgICogRWxzZSBzbG90IDAgaXMgYmVpbmcgdXNlZCB0byBob2xkIGEgc2VhcmNoIGZpbmdlciwKLSAgICAgKiBhbmQgd2UgdXNlIGl0cyBoYXNoIHZhbHVlIGFzIHRoZSBmaXJzdCBpbmRleCB0byBsb29rLgotICAgICAqLwotICAgIGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeV9zc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICAgICAgaSA9IGVwLT5tZV9oYXNoOwotICAgICAgICAvKiBUaGUgaGFzaCBmaWVsZCBtYXkgYmUgYSByZWFsIGhhc2ggdmFsdWUsIG9yIGl0IG1heSBiZSBhCi0gICAgICAgICAqIGxlZ2l0IHNlYXJjaCBmaW5nZXIsIG9yIGl0IG1heSBiZSBhIG9uY2UtbGVnaXQgc2VhcmNoCi0gICAgICAgICAqIGZpbmdlciB0aGF0J3Mgb3V0IG9mIGJvdW5kcyBub3cgYmVjYXVzZSBpdCB3cmFwcGVkIGFyb3VuZAotICAgICAgICAgKiBvciB0aGUgdGFibGUgc2hydW5rIC0tIHNpbXBseSBtYWtlIHN1cmUgaXQncyBpbiBib3VuZHMgbm93LgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKGkgPiBtYXNrIHx8IGkgPCAxKQotICAgICAgICAgICAgaSA9IDE7ICAgICAgICAgICAgICAvKiBza2lwIHNsb3QgMCAqLwotICAgICAgICB3aGlsZSAoKGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgaWYgKGkgPiBtYXNrKQotICAgICAgICAgICAgICAgIGkgPSAxOwotICAgICAgICB9CisKKyAgICAvKiBQb3AgbGFzdCBpdGVtICovCisgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgaSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyAtIDE7CisgICAgd2hpbGUgKGkgPj0gMCAmJiBlcDBbaV0ubWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBpLS07CiAgICAgfQorICAgIGFzc2VydChpID49IDApOworCisgICAgZXAgPSAmZXAwW2ldOworICAgIGogPSBsb29rZGljdF9pbmRleChtcC0+bWFfa2V5cywgZXAtPm1lX2hhc2gsIGkpOworICAgIGFzc2VydChqID49IDApOworICAgIGFzc2VydChka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGopID09IGkpOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaiwgREtJWF9EVU1NWSk7CisKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMCwgZXAtPm1lX2tleSk7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDEsIGVwLT5tZV92YWx1ZSk7Ci0gICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CiAgICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKKyAgICAvKiBXZSBjYW4ndCBka191c2FibGUrKyBzaW5jZSB0aGVyZSBpcyBES0lYX0RVTU1ZIGluIGluZGljZXMgKi8KKyAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMgPSBpOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlID09IE5VTEwpOwotICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX2hhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgaW50CiBkaWN0X3RyYXZlcnNlKFB5T2JqZWN0ICpvcCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUobXAtPm1hX2tleXMpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOwotICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG1wLT5tYV9rZXlzOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBrZXlzLT5ka19uZW50cmllczsKKworICAgIGlmIChrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0ubWVfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfa2V5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfdmFsdWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChlbnRyaWVzW2ldLm1lX3ZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI1NTIsMjMgKzI5NDAsMzEgQEAKIFB5X3NzaXplX3QKIF9QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplLCByZXM7CisgICAgUHlfc3NpemVfdCBzaXplLCB1c2FibGUsIHJlczsKIAogICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisKICAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKG1wKSk7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgIHJlcyArPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0Kik7CisgICAgICAgIHJlcyArPSB1c2FibGUgKiBzaXplb2YoUHlPYmplY3QqKTsKICAgICAvKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBzcGxpdCwgdGhlIGtleXMgcG9ydGlvbiBpcyBhY2NvdW50ZWQtZm9yCiAgICAgICAgaW4gdGhlIHR5cGUgb2JqZWN0LiAqLwogICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpCi0gICAgICAgIHJlcyArPSBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoc2l6ZS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgICAgIHJlcyArPSAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAgICAgLSBQeV9NRU1CRVJfU0laRShQeURpY3RLZXlzT2JqZWN0LCBka19pbmRpY2VzKQorICAgICAgICAgICAgICAgICsgREtfSVhTSVpFKG1wLT5tYV9rZXlzKSAqIHNpemUKKyAgICAgICAgICAgICAgICArIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiByZXM7CiB9CiAKIFB5X3NzaXplX3QKIF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICByZXR1cm4gc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsgKERLX1NJWkUoa2V5cyktMSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIHJldHVybiAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICArIERLX0lYU0laRShrZXlzKSAqIERLX1NJWkUoa2V5cykKKyAgICAgICAgICAgICsgVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUoa2V5cykpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNjU1LDggKzMwNTEsOCBAQAogUHlEaWN0X0NvbnRhaW5zKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjY2NSw4ICszMDYxLDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgcmV0dXJuIChlcCA9PSBOVUxMKSA/IC0xIDogKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAoaXggIT0gREtJWF9FTVBUWSAmJiAqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfQ29udGFpbnMgdXNlZCB3aGVuIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkga25vd24gKi8KQEAgLTI2NzQsMTEgKzMwNzIsMTMgQEAKIF9QeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlfc3NpemVfdCBpeDsKIAotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBIYWNrIHRvIGltcGxlbWVudCAia2V5IGluIGRpY3QiICovCkBAIC0yNzEyLDExICszMTEyLDEzIEBACiAgICAgICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGQpOwogCiAgICAgZC0+bWFfdXNlZCA9IDA7Ci0gICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgZC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkUpOwogICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShkKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTI5MzcsMTMgKzMzMzksMTMgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGtleShkaWN0aXRlcm9iamVjdCAqZGkpCitzdGF0aWMgUHlPYmplY3QqCitkaWN0aXRlcl9pdGVybmV4dGtleShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleTsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0S2V5c09iamVjdCAqazsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjk1NywyNyArMzM1OSwzMCBAQAogICAgIH0KIAogICAgIGkgPSBkaS0+ZGlfcG9zOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgZ290byBmYWlsOwogICAgIGsgPSBkLT5tYV9rZXlzOworICAgIG4gPSBrLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBES19FTlRSSUVTKGspW2ldLm1lX2tleTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZrLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICBtYXNrID0gREtfU0laRShrKS0xOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGspW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIGdvdG8gZmFpbDsKICAgICBkaS0+bGVuLS07Ci0gICAga2V5ID0gay0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgcmV0dXJuIGtleTsKIApAQCAtMzAyMCwxMiArMzQyNSwxMiBAQAogICAgIDAsCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoZGljdGl0ZXJvYmplY3QgKmRpKQorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMwMzksMjYgKzM0NDQsMjkgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOwotICAgIGlmIChpIDwgMCB8fCBpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOworICAgIG4gPSBkLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKLSAgICB9Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+IG1hc2spCisgICAgICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHIgPSAmREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmIGVudHJ5X3B0ci0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZW50cnlfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGRpLT5sZW4tLTsKLSAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTMwODksNyArMzQ5Nyw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZGljdGl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0zMTAxLDEyICszNTA5LDEyIEBACiAgICAgMCwKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRpdGVtKGRpY3RpdGVyb2JqZWN0ICpkaSkKK3N0YXRpYyBQeU9iamVjdCAqCitkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKnJlc3VsdCA9IGRpLT5kaV9yZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwotICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMTIwLDM3ICszNTI4LDQxIEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKKyAgICBuID0gZC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKGQtPm1hX3ZhbHVlcykgewotICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFsdWVfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAga2V5ID0gREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXS5tZV9rZXk7CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHIgPSAmREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmIGVudHJ5X3B0ci0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZW50cnlfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAga2V5ID0gZW50cnlfcHRyLT5tZV9rZXk7CisgICAgICAgIHZhbHVlID0gZW50cnlfcHRyLT5tZV92YWx1ZTsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIGdvdG8gZmFpbDsKLQorICAgIGRpLT5sZW4tLTsKICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkgewogICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAwKSk7CiAgICAgICAgIFB5X0RFQ1JFRihQeVR1cGxlX0dFVF9JVEVNKHJlc3VsdCwgMSkpOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXN1bHQgPSBQeVR1cGxlX05ldygyKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKLSAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KQEAgLTM3ODksNyArNDIwMSw3IEBACiBQeURpY3RLZXlzT2JqZWN0ICoKIF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpCiB7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0zODI1LDcgKzQyMzcsNyBAQAogCiBpbnQKIF9QeU9iamVjdERpY3RfU2V0SXRlbShQeVR5cGVPYmplY3QgKnRwLCBQeU9iamVjdCAqKmRpY3RwdHIsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIGludCByZXM7CkBAIC0zODU0LDcgKzQyNjYsOCBAQAogICAgICAgICAgICAgICAgIC8qIEVpdGhlciB1cGRhdGUgdHAtPmh0X2NhY2hlZF9rZXlzIG9yIGRlbGV0ZSBpdCAqLwogICAgICAgICAgICAgICAgIGlmIChjYWNoZWQtPmRrX3JlZmNudCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IG1ha2Vfa2V5c19zaGFyZWQoZGljdCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIERLX0RFQ1JFRihjYWNoZWQpOwpAQCAtMzg4NCw1MCArNDI5NywzIEBACiB7CiAgICAgREtfREVDUkVGKGtleXMpOwogfQotCi0KLS8qIEFSR1NVU0VEICovCi1zdGF0aWMgUHlPYmplY3QgKgotZHVtbXlfcmVwcihQeU9iamVjdCAqb3ApCi17Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZHVtbXkga2V5PiIpOwotfQotCi0vKiBBUkdVU0VEICovCi1zdGF0aWMgdm9pZAotZHVtbXlfZGVhbGxvYyhQeU9iamVjdCogaWdub3JlKQotewotICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gU0VHViBpZgotICAgICAqIHdlIGFjY2lkZW50YWxseSBkZWNyZWYgZHVtbXkta2V5IG91dCBvZiBleGlzdGVuY2UuCi0gICAgICovCi0gICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIDxkdW1teSBrZXk+Iik7Ci19Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgUHlEaWN0RHVtbXlfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICI8ZHVtbXkga2V5PiB0eXBlIiwKLSAgICAwLAotICAgIDAsCi0gICAgZHVtbXlfZGVhbGxvYywgICAgICAvKnRwX2RlYWxsb2MqLyAvKm5ldmVyIGNhbGxlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgZHVtbXlfcmVwciwgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLwotfTsKLQotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3QgPSB7Ci0gIF9QeU9iamVjdF9FWFRSQV9JTklUCi0gIDIsICZQeURpY3REdW1teV9UeXBlCi19OwotCmRpZmYgLS1naXQgYS9PYmplY3RzL2VudW1vYmplY3QuYyBiL09iamVjdHMvZW51bW9iamVjdC5jCmluZGV4IGM0NThjZmUuLmRhZTE2NmQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZW51bW9iamVjdC5jCisrKyBiL09iamVjdHMvZW51bW9iamVjdC5jCkBAIC0yNTAsNiArMjUwLDEzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgJlB5SWRfX19yZXZlcnNlZF9fKTsKKyAgICBpZiAocmV2ZXJzZWRfbWV0aCA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXZlcnNlZF9tZXRoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IHJldmVyc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZXEpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChyZXZlcnNlZF9tZXRoICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocmV2ZXJzZWRfbWV0aCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXZlcnNlZF9tZXRoKTsKQEAgLTI1OSw4ICsyNjYsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgdG8gcmV2ZXJzZWQoKSBtdXN0IGJlIGEgc2VxdWVuY2UiKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IHJldmVyc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZXEpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDk4MWVhZDIuLmY2M2YwNmEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC01OSwxNSArNTksMTEgQEAKIHN0YXRpYyBpbnQKIEJhc2VFeGNlcHRpb25faW5pdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgdG1wID0gc2VsZi0+YXJnczsKLSAgICBzZWxmLT5hcmdzID0gYXJnczsKLSAgICBQeV9JTkNSRUYoc2VsZi0+YXJncyk7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICBQeV9YU0VUUkVGKHNlbGYtPmFyZ3MsIGFyZ3MpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMzQsNyArMjMwLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIFB5X1hJTkNSRUYodGIpOworICAgIFB5X0lOQ1JFRih0Yik7CiAgICAgUHlfWFNFVFJFRihzZWxmLT50cmFjZWJhY2ssIHRiKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTMyOCwxMSArMzI0LDEwIEBACiAKIC8qIFN0ZWFscyBhIHJlZmVyZW5jZSB0byBjYXVzZSAqLwogdm9pZAotUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkgewotICAgIFB5T2JqZWN0ICpvbGRfY2F1c2UgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZTsKLSAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSA9IGNhdXNlOworUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkKK3sKICAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5zdXBwcmVzc19jb250ZXh0ID0gMTsKLSAgICBQeV9YREVDUkVGKG9sZF9jYXVzZSk7CisgICAgUHlfWFNFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSwgY2F1c2UpOwogfQogCiBQeU9iamVjdCAqCkBAIC0zNDQsMTAgKzMzOSw5IEBACiAKIC8qIFN0ZWFscyBhIHJlZmVyZW5jZSB0byBjb250ZXh0ICovCiB2b2lkCi1QeUV4Y2VwdGlvbl9TZXRDb250ZXh0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY29udGV4dCkgewotICAgIFB5T2JqZWN0ICpvbGRfY29udGV4dCA9ICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQ7Ci0gICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dCA9IGNvbnRleHQ7Ci0gICAgUHlfWERFQ1JFRihvbGRfY29udGV4dCk7CitQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeV9YU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQsIGNvbnRleHQpOwogfQogCiAKQEAgLTcxNCw2ICs3MDgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUuIik7CiAKIC8qCisgKiAgICBNb2R1bGVOb3RGb3VuZEVycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3IKKyAqLworCitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfSW1wb3J0RXJyb3IsIE1vZHVsZU5vdEZvdW5kRXJyb3IsIEltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbm90IGZvdW5kLiIpOworCisvKgogICogICAgT1NFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKQEAgLTk5Myw3ICs5OTQsNyBAQAogICAgIHJldHVybiAwOwogCiBlcnJvcjoKLSAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTEwNzMsOCArMTA3NCw3IEBACiAgICAgfQogICAgIGlmIChzZWxmLT5teWVycm5vICYmIHNlbGYtPnN0cmVycm9yKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltFcnJubyAlU10gJVMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubyA/IHNlbGYtPm15ZXJybm86IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm15ZXJybm8sIHNlbGYtPnN0cmVycm9yKTsKICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwogfQogCkBAIC0yNDc4LDYgKzI0NzgsNyBAQAogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCiAgICAgUFJFX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUFJFX0lOSVQoSW1wb3J0RXJyb3IpCisgICAgUFJFX0lOSVQoTW9kdWxlTm90Rm91bmRFcnJvcikKICAgICBQUkVfSU5JVChPU0Vycm9yKQogICAgIFBSRV9JTklUKEVPRkVycm9yKQogICAgIFBSRV9JTklUKFJ1bnRpbWVFcnJvcikKQEAgLTI1NTAsNiArMjU1MSw3IEBACiAgICAgUE9TVF9JTklUKFN5c3RlbUV4aXQpCiAgICAgUE9TVF9JTklUKEtleWJvYXJkSW50ZXJydXB0KQogICAgIFBPU1RfSU5JVChJbXBvcnRFcnJvcikKKyAgICBQT1NUX0lOSVQoTW9kdWxlTm90Rm91bmRFcnJvcikKICAgICBQT1NUX0lOSVQoT1NFcnJvcikKICAgICBJTklUX0FMSUFTKEVudmlyb25tZW50RXJyb3IsIE9TRXJyb3IpCiAgICAgSU5JVF9BTElBUyhJT0Vycm9yLCBPU0Vycm9yKQpAQCAtMjYxMiw3ICsyNjE0LDkgQEAKICAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFV09VTERCTE9DSyk7CiAgICAgUE9TVF9JTklUKEJyb2tlblBpcGVFcnJvcik7CiAgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVBJUEUpOworI2lmZGVmIEVTSFVURE9XTgogICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVTSFVURE9XTik7CisjZW5kaWYKICAgICBQT1NUX0lOSVQoQ2hpbGRQcm9jZXNzRXJyb3IpOwogICAgIEFERF9FUlJOTyhDaGlsZFByb2Nlc3NFcnJvciwgRUNISUxEKTsKICAgICBQT1NUX0lOSVQoQ29ubmVjdGlvbkFib3J0ZWRFcnJvcik7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZpbGVvYmplY3QuYyBiL09iamVjdHMvZmlsZW9iamVjdC5jCmluZGV4IDIzNGQwN2UuLmY0NDI0MTggMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmlsZW9iamVjdC5jCisrKyBiL09iamVjdHMvZmlsZW9iamVjdC5jCkBAIC0xMjcsNyArMTI3LDcgQEAKIGludAogUHlGaWxlX1dyaXRlT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZiwgaW50IGZsYWdzKQogewotICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKmFyZ3MsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKndyaXRlciwgKnZhbHVlLCAqcmVzdWx0OwogICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIGlmIChmID09IE5VTEwpIHsKQEAgLTE0NiwxNCArMTQ2LDcgQEAKICAgICAgICAgUHlfREVDUkVGKHdyaXRlcik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICBQeV9ERUNSRUYod3JpdGVyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdCh3cml0ZXIsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEod3JpdGVyLCB2YWx1ZSk7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICBQeV9ERUNSRUYod3JpdGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCmRpZmYgLS1naXQgYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKaW5kZXggZDkyYmVjMy4uMGYzNzYxOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jCisrKyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwpAQCAtMTI0LDExICsxMjQsNDMgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZmxvYXRfZnJvbV9zdHJpbmdfaW5uZXIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4sIHZvaWQgKm9iaikKK3sKKyAgICBkb3VibGUgeDsKKyAgICBjb25zdCBjaGFyICplbmQ7CisgICAgY29uc3QgY2hhciAqbGFzdCA9IHMgKyBsZW47CisgICAgLyogc3RyaXAgc3BhY2UgKi8KKyAgICB3aGlsZSAocyA8IGxhc3QgJiYgUHlfSVNTUEFDRSgqcykpIHsKKyAgICAgICAgcysrOworICAgIH0KKworICAgIHdoaWxlIChzIDwgbGFzdCAtIDEgJiYgUHlfSVNTUEFDRShsYXN0Wy0xXSkpIHsKKyAgICAgICAgbGFzdC0tOworICAgIH0KKworICAgIC8qIFdlIGRvbid0IGNhcmUgYWJvdXQgb3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgSWYgdGhlIHBsYXRmb3JtCisgICAgICogc3VwcG9ydHMgdGhlbSwgaW5maW5pdGllcyBhbmQgc2lnbmVkIHplcm9lcyAob24gdW5kZXJmbG93KSBhcmUKKyAgICAgKiBmaW5lLiAqLworICAgIHggPSBQeU9TX3N0cmluZ190b19kb3VibGUocywgKGNoYXIgKiopJmVuZCwgTlVMTCk7CisgICAgaWYgKGVuZCAhPSBsYXN0KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBmbG9hdDogIgorICAgICAgICAgICAgICAgICAgICAgIiVSIiwgb2JqKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh4KTsKKyAgICB9Cit9CisKIFB5T2JqZWN0ICoKIFB5RmxvYXRfRnJvbVN0cmluZyhQeU9iamVjdCAqdikKIHsKLSAgICBjb25zdCBjaGFyICpzLCAqbGFzdCwgKmVuZDsKLSAgICBkb3VibGUgeDsKKyAgICBjb25zdCBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CkBAIC0xNjksMjcgKzIwMSw4IEBACiAgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGxhc3QgPSBzICsgbGVuOwotICAgIC8qIHN0cmlwIHNwYWNlICovCi0gICAgd2hpbGUgKHMgPCBsYXN0ICYmIFB5X0lTU1BBQ0UoKnMpKQotICAgICAgICBzKys7Ci0gICAgd2hpbGUgKHMgPCBsYXN0IC0gMSAmJiBQeV9JU1NQQUNFKGxhc3RbLTFdKSkKLSAgICAgICAgbGFzdC0tOwotICAgIC8qIFdlIGRvbid0IGNhcmUgYWJvdXQgb3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgSWYgdGhlIHBsYXRmb3JtCi0gICAgICogc3VwcG9ydHMgdGhlbSwgaW5maW5pdGllcyBhbmQgc2lnbmVkIHplcm9lcyAob24gdW5kZXJmbG93KSBhcmUKLSAgICAgKiBmaW5lLiAqLwotICAgIHggPSBQeU9TX3N0cmluZ190b19kb3VibGUocywgKGNoYXIgKiopJmVuZCwgTlVMTCk7Ci0gICAgaWYgKGVuZCAhPSBsYXN0KSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBmbG9hdDogIgotICAgICAgICAgICAgICAgICAgICAgIiVSIiwgdik7Ci0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgfQotICAgIGVsc2UgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOwotCisgICAgcmVzdWx0ID0gX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcyhzLCBsZW4sICJmbG9hdCIsIHYsIHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9mcm9tX3N0cmluZ19pbm5lcik7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIxNSwzNSArMjI4LDQ5IEBACiBQeUZsb2F0X0FzRG91YmxlKFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm5iOwotICAgIFB5RmxvYXRPYmplY3QgKmZvOworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgZG91YmxlIHZhbDsKIAotICAgIGlmIChvcCAmJiBQeUZsb2F0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfQVNfRE9VQkxFKChQeUZsb2F0T2JqZWN0Kikgb3ApOwotCiAgICAgaWYgKG9wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmICgobmIgPSBQeV9UWVBFKG9wKS0+dHBfYXNfbnVtYmVyKSA9PSBOVUxMIHx8IG5iLT5uYl9mbG9hdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhIGZsb2F0IGlzIHJlcXVpcmVkIik7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob3ApKSB7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0FTX0RPVUJMRShvcCk7CisgICAgfQorCisgICAgbmIgPSBQeV9UWVBFKG9wKS0+dHBfYXNfbnVtYmVyOworICAgIGlmIChuYiA9PSBOVUxMIHx8IG5iLT5uYl9mbG9hdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJtdXN0IGJlIHJlYWwgbnVtYmVyLCBub3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgZm8gPSAoUHlGbG9hdE9iamVjdCopICgqbmItPm5iX2Zsb2F0KSAob3ApOwotICAgIGlmIChmbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCFQeUZsb2F0X0NoZWNrKGZvKSkgewotICAgICAgICBQeV9ERUNSRUYoZm8pOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm5iX2Zsb2F0IHNob3VsZCByZXR1cm4gZmxvYXQgb2JqZWN0Iik7CisgICAgcmVzID0gKCpuYi0+bmJfZmxvYXQpIChvcCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgaWYgKCFQeUZsb2F0X0NoZWNrRXhhY3QocmVzKSkgeworICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2socmVzKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKS4gICIKKyAgICAgICAgICAgICAgICAiVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGZsb2F0ICIKKyAgICAgICAgICAgICAgICAiaXMgZGVwcmVjYXRlZCwgYW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLiIsCisgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQogCi0gICAgdmFsID0gUHlGbG9hdF9BU19ET1VCTEUoZm8pOwotICAgIFB5X0RFQ1JFRihmbyk7Ci0KKyAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShyZXMpOworICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTExOTUsNyArMTIyMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmxvYXRfZnJvbWhleChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHRfYXNfZmxvYXQsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKICAgICBsb25nIGV4cCwgdG9wX2V4cCwgbHNiLCBrZXlfZGlnaXQ7CiAgICAgY2hhciAqcywgKmNvZWZmX3N0YXJ0LCAqc19zdG9yZSwgKmNvZWZmX2VuZCwgKmV4cF9zdGFydCwgKnNfZW5kOwpAQCAtMTQxMCwxMSArMTQzNywxMCBAQAogICAgICAgICBzKys7CiAgICAgaWYgKHMgIT0gc19lbmQpCiAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgcmVzdWx0X2FzX2Zsb2F0ID0gUHlfQnVpbGRWYWx1ZSgiKGQpIiwgbmVnYXRlID8gLXggOiB4KTsKLSAgICBpZiAocmVzdWx0X2FzX2Zsb2F0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCByZXN1bHRfYXNfZmxvYXQpOwotICAgIFB5X0RFQ1JFRihyZXN1bHRfYXNfZmxvYXQpOworICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShuZWdhdGUgPyAteCA6IHgpOworICAgIGlmIChjbHMgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGNscywgcmVzdWx0LCBOVUxMKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiAKICAgb3ZlcmZsb3dfZXJyb3I6CkBAIC0xNDUxLDI5ICsxNDc3LDIzIEBACiAgICAgaW50IGV4cG9uZW50OwogICAgIGludCBpOwogCi0gICAgUHlPYmplY3QgKnByZXY7CiAgICAgUHlPYmplY3QgKnB5X2V4cG9uZW50ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbnVtZXJhdG9yID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVub21pbmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHRfcGFpciA9IE5VTEw7CiAgICAgUHlOdW1iZXJNZXRob2RzICpsb25nX21ldGhvZHMgPSBQeUxvbmdfVHlwZS50cF9hc19udW1iZXI7CiAKLSNkZWZpbmUgSU5QTEFDRV9VUERBVEUob2JqLCBjYWxsKSBcCi0gICAgcHJldiA9IG9iajsgXAotICAgIG9iaiA9IGNhbGw7IFwKLSAgICBQeV9ERUNSRUYocHJldik7IFwKLQogICAgIENPTlZFUlRfVE9fRE9VQkxFKHYsIHNlbGYpOwogCiAgICAgaWYgKFB5X0lTX0lORklOSVRZKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgaW5maW5pdHkgdG8gZmxvYXQuYXNfaW50ZWdlcl9yYXRpby4iKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlfSVNfTkFOKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgTmFOIHRvIGZsb2F0LmFzX2ludGVnZXJfcmF0aW8uIik7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiYXNfaW50ZWdlcl9yYXRpbyIsIGdvdG8gZXJyb3IpOwpAQCAtMTQ4OSwyOSArMTUwOSwzMSBAQAogICAgICAgIHRvIGJlIHRydW5jYXRlZCBieSBQeUxvbmdfRnJvbURvdWJsZSgpLiAqLwogCiAgICAgbnVtZXJhdG9yID0gUHlMb25nX0Zyb21Eb3VibGUoZmxvYXRfcGFydCk7Ci0gICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSBnb3RvIGVycm9yOworICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhQeV9BQlMoZXhwb25lbnQpKTsKKyAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIGZvbGQgaW4gMioqZXhwb25lbnQgKi8KLSAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKLSAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhsYWJzKChsb25nKWV4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7Ci0gICAgSU5QTEFDRV9VUERBVEUocHlfZXhwb25lbnQsCi0gICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQoZGVub21pbmF0b3IsIHB5X2V4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAgICAgaWYgKGV4cG9uZW50ID4gMCkgewotICAgICAgICBJTlBMQUNFX1VQREFURShudW1lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbXVsdGlwbHkobnVtZXJhdG9yLCBweV9leHBvbmVudCkpOwotICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChudW1lcmF0b3IsIHB5X2V4cG9uZW50KSk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYoZGVub21pbmF0b3IpOwotICAgICAgICBkZW5vbWluYXRvciA9IHB5X2V4cG9uZW50OwotICAgICAgICBweV9leHBvbmVudCA9IE5VTEw7CisgICAgICAgIFB5X1NFVFJFRihkZW5vbWluYXRvciwKKyAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KGRlbm9taW5hdG9yLCBweV9leHBvbmVudCkpOworICAgICAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgcmVzdWx0X3BhaXIgPSBQeVR1cGxlX1BhY2soMiwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CiAKLSN1bmRlZiBJTlBMQUNFX1VQREFURQogZXJyb3I6CiAgICAgUHlfWERFQ1JFRihweV9leHBvbmVudCk7CiAgICAgUHlfWERFQ1JFRihkZW5vbWluYXRvcik7CkBAIC0xOTY2LDggKzE5ODgsMTIwIEBACiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBfUHlGbG9hdF97UGFjayxVbnBhY2t9ezQsOH0uICBTZWUgZmxvYXRvYmplY3QuaC4KKyAqIF9QeUZsb2F0X3tQYWNrLFVucGFja317Miw0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCisgKiBUbyBtYXRjaCB0aGUgTlBZX0hBTEZfUk9VTkRfVElFU19UT19FVkVOIGJlaGF2aW9yIGluOgorICogaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L2Jsb2IvbWFzdGVyL251bXB5L2NvcmUvc3JjL25weW1hdGgvaGFsZmZsb2F0LmMKKyAqIFdlIHVzZToKKyAqICAgICAgIGJpdHMgPSAodW5zaWduZWQgc2hvcnQpZjsgICAgTm90ZSB0aGUgdHJ1bmNhdGlvbgorICogICAgICAgaWYgKChmIC0gYml0cyA+IDAuNSkgfHwgKGYgLSBiaXRzID09IDAuNSAmJiBiaXRzICUgMikpIHsKKyAqICAgICAgICAgICBiaXRzKys7CisgKiAgICAgICB9CiAgKi8KKworaW50CitfUHlGbG9hdF9QYWNrMihkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc2lnbjsKKyAgICBpbnQgZTsKKyAgICBkb3VibGUgZjsKKyAgICB1bnNpZ25lZCBzaG9ydCBiaXRzOworICAgIGludCBpbmNyID0gMTsKKworICAgIGlmICh4ID09IDAuMCkgeworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAwOworICAgICAgICBiaXRzID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfSVNfSU5GSU5JVFkoeCkpIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgZSA9IDB4MWY7CisgICAgICAgIGJpdHMgPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9JU19OQU4oeCkpIHsKKyAgICAgICAgLyogVGhlcmUgYXJlIDIwNDYgZGlzdGluY3QgaGFsZi1wcmVjaXNpb24gTmFOcyAoMTAyMiBzaWduYWxpbmcgYW5kCisgICAgICAgICAgIDEwMjQgcXVpZXQpLCBidXQgdGhlcmUgYXJlIG9ubHkgdHdvIHF1aWV0IE5hTnMgdGhhdCBkb24ndCBhcmlzZSBieQorICAgICAgICAgICBxdWlldGluZyBhIHNpZ25hbGluZyBOYU47IHdlIGdldCB0aG9zZSBieSBzZXR0aW5nIHRoZSB0b3Btb3N0IGJpdAorICAgICAgICAgICBvZiB0aGUgZnJhY3Rpb24gZmllbGQgYW5kIGNsZWFyaW5nIGFsbCBvdGhlciBmcmFjdGlvbiBiaXRzLiBXZQorICAgICAgICAgICBjaG9vc2UgdGhlIG9uZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzaWduLiAqLworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAweDFmOworICAgICAgICBiaXRzID0gNTEyOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgIHggPSAteDsKKyAgICAgICAgfQorCisgICAgICAgIGYgPSBmcmV4cCh4LCAmZSk7CisgICAgICAgIGlmIChmIDwgMC41IHx8IGYgPj0gMS4wKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZXhwKCkgcmVzdWx0IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgLyogTm9ybWFsaXplIGYgdG8gYmUgaW4gdGhlIHJhbmdlIFsxLjAsIDIuMCkgKi8KKyAgICAgICAgZiAqPSAyLjA7CisgICAgICAgIGUtLTsKKworICAgICAgICBpZiAoZSA+PSAxNikgeworICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlIDwgLTI1KSB7CisgICAgICAgICAgICAvKiB8eHwgPCAyKiotMjUuIFVuZGVyZmxvdyB0byB6ZXJvLiAqLworICAgICAgICAgICAgZiA9IDAuMDsKKyAgICAgICAgICAgIGUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGUgPCAtMTQpIHsKKyAgICAgICAgICAgIC8qIHx4fCA8IDIqKi0xNC4gR3JhZHVhbCB1bmRlcmZsb3cgKi8KKyAgICAgICAgICAgIGYgPSBsZGV4cChmLCAxNCArIGUpOworICAgICAgICAgICAgZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBpZiAoIShlID09IDAgJiYgZiA9PSAwLjApKSAqLyB7CisgICAgICAgICAgICBlICs9IDE1OworICAgICAgICAgICAgZiAtPSAxLjA7IC8qIEdldCByaWQgb2YgbGVhZGluZyAxICovCisgICAgICAgIH0KKworICAgICAgICBmICo9IDEwMjQuMDsgLyogMioqMTAgKi8KKyAgICAgICAgLyogUm91bmQgdG8gZXZlbiAqLworICAgICAgICBiaXRzID0gKHVuc2lnbmVkIHNob3J0KWY7IC8qIE5vdGUgdGhlIHRydW5jYXRpb24gKi8KKyAgICAgICAgYXNzZXJ0KGJpdHMgPCAxMDI0KTsKKyAgICAgICAgYXNzZXJ0KGUgPCAzMSk7CisgICAgICAgIGlmICgoZiAtIGJpdHMgPiAwLjUpIHx8ICgoZiAtIGJpdHMgPT0gMC41KSAmJiAoYml0cyAlIDIgPT0gMSkpKSB7CisgICAgICAgICAgICArK2JpdHM7CisgICAgICAgICAgICBpZiAoYml0cyA9PSAxMDI0KSB7CisgICAgICAgICAgICAgICAgLyogVGhlIGNhcnJ5IHByb3BhZ2F0ZWQgb3V0IG9mIGEgc3RyaW5nIG9mIDEwIDEgYml0cy4gKi8KKyAgICAgICAgICAgICAgICBiaXRzID0gMDsKKyAgICAgICAgICAgICAgICArK2U7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gMzEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBiaXRzIHw9IChlIDw8IDEwKSB8IChzaWduIDw8IDE1KTsKKworICAgIC8qIFdyaXRlIG91dCByZXN1bHQuICovCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICAqcCA9ICh1bnNpZ25lZCBjaGFyKSgoYml0cyA+PiA4KSAmIDB4RkYpOworICAgIHAgKz0gaW5jcjsKKworICAgIC8qIFNlY29uZCBieXRlICovCisgICAgKnAgPSAodW5zaWduZWQgY2hhcikoYml0cyAmIDB4RkYpOworCisgICAgcmV0dXJuIDA7CisKKyAgT3ZlcmZsb3c6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJmbG9hdCB0b28gbGFyZ2UgdG8gcGFjayB3aXRoIGUgZm9ybWF0Iik7CisgICAgcmV0dXJuIC0xOworfQorCiBpbnQKIF9QeUZsb2F0X1BhY2s0KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCiB7CkBAIC0yMjAzLDYgKzIzMzcsNzYgQEAKIH0KIAogZG91YmxlCitfUHlGbG9hdF9VbnBhY2syKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHNpZ247CisgICAgaW50IGU7CisgICAgdW5zaWduZWQgaW50IGY7CisgICAgZG91YmxlIHg7CisgICAgaW50IGluY3IgPSAxOworCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICBzaWduID0gKCpwID4+IDcpICYgMTsKKyAgICBlID0gKCpwICYgMHg3QykgPj4gMjsKKyAgICBmID0gKCpwICYgMHgwMykgPDwgODsKKyAgICBwICs9IGluY3I7CisKKyAgICAvKiBTZWNvbmQgYnl0ZSAqLworICAgIGYgfD0gKnA7CisKKyAgICBpZiAoZSA9PSAweDFmKSB7CisjaWZkZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfSFVHRV9WQUwgOiBQeV9IVUdFX1ZBTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworI2lmZGVmIFB5X05BTgorICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfTkFOIDogUHlfTkFOOworI2Vsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW4ndCB1bnBhY2sgSUVFRSA3NTQgTmFOICIKKyAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IE5hTnMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyNlbmRpZiAgLyogI2lmZGVmIFB5X05BTiAqLworICAgICAgICB9CisjZWxzZQorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19pbmZpbml0eShzaWduKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oc2lnbik7CisgICAgICAgIH0KKyNlbmRpZiAgLyogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIgKi8KKyAgICB9CisKKyAgICB4ID0gKGRvdWJsZSlmIC8gMTAyNC4wOworCisgICAgaWYgKGUgPT0gMCkgeworICAgICAgICBlID0gLTE0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgeCArPSAxLjA7CisgICAgICAgIGUgLT0gMTU7CisgICAgfQorICAgIHggPSBsZGV4cCh4LCBlKTsKKworICAgIGlmIChzaWduKQorICAgICAgICB4ID0gLXg7CisKKyAgICByZXR1cm4geDsKK30KKworZG91YmxlCiBfUHlGbG9hdF9VbnBhY2s0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKIHsKICAgICBpZiAoZmxvYXRfZm9ybWF0ID09IHVua25vd25fZm9ybWF0KSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggOWFhZGQ2MS4uNjJmOWYzNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAgICAgICAgIG5ld19sYXN0aSA9IC0xOwogICAgICAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IGxub3RhYl9sZW47IG9mZnNldCArPSAyKSB7CiAgICAgICAgICAgICBhZGRyICs9IGxub3RhYltvZmZzZXRdOwotICAgICAgICAgICAgbGluZSArPSBsbm90YWJbb2Zmc2V0KzFdOworICAgICAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpbG5vdGFiW29mZnNldCsxXTsKICAgICAgICAgICAgIGlmIChsaW5lID49IG5ld19saW5lbm8pIHsKICAgICAgICAgICAgICAgICBuZXdfbGFzdGkgPSBhZGRyOwogICAgICAgICAgICAgICAgIG5ld19saW5lbm8gPSBsaW5lOwpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgbWVtc2V0KGJsb2Nrc3RhY2ssICdcMCcsIHNpemVvZihibG9ja3N0YWNrKSk7CiAgICAgbWVtc2V0KGluX2ZpbmFsbHksICdcMCcsIHNpemVvZihpbl9maW5hbGx5KSk7CiAgICAgYmxvY2tzdGFja190b3AgPSAwOwotICAgIGZvciAoYWRkciA9IDA7IGFkZHIgPCBjb2RlX2xlbjsgYWRkcisrKSB7CisgICAgZm9yIChhZGRyID0gMDsgYWRkciA8IGNvZGVfbGVuOyBhZGRyICs9IHNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgb3AgPSBjb2RlW2FkZHJdOwogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU0VUVVBfTE9PUDoKQEAgLTI1MSwxMCArMjUxLDYgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBpZiAob3AgPj0gSEFWRV9BUkdVTUVOVCkgewotICAgICAgICAgICAgYWRkciArPSAyOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogVmVyaWZ5IHRoYXQgdGhlIGJsb2Nrc3RhY2sgdHJhY2tpbmcgY29kZSBkaWRuJ3QgZ2V0IGxvc3QuICovCkBAIC0yNzcsNyArMjczLDcgQEAKICAgICAgKiBjYW4gdGVsbCB3aGV0aGVyIHRoZSBqdW1wIGdvZXMgaW50byBhbnkgYmxvY2tzIHdpdGhvdXQgY29taW5nIG91dAogICAgICAqIGFnYWluIC0gaW4gdGhhdCBjYXNlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBiZWxvdy4gKi8KICAgICBkZWx0YV9pYmxvY2sgPSAwOwotICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIrKykgeworICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBvcCA9IGNvZGVbYWRkcl07CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTRVRVUF9MT09QOgpAQCAtMjk0LDEwICsyOTAsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgbWluX2RlbHRhX2libG9jayA9IFB5X01JTihtaW5fZGVsdGFfaWJsb2NrLCBkZWx0YV9pYmxvY2spOwotCi0gICAgICAgIGlmIChvcCA+PSBIQVZFX0FSR1VNRU5UKSB7Ci0gICAgICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBEZXJpdmUgdGhlIGFic29sdXRlIGlibG9jayB2YWx1ZXMgZnJvbSB0aGUgZGVsdGFzLiAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwppbmRleCA0Y2Q2NTkwLi42OWNkOTczIDEwMDY0NAotLS0gYS9PYmplY3RzL2Z1bmNvYmplY3QuYworKysgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwpAQCAtMjQ5LDcgKzI0OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9jb2RlKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKICAgICBQeV9zc2l6ZV90IG5mcmVlLCBuY2xvc3VyZTsKIAogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5mdW5jX2NvZGUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCkBAIC0yNzAsMTAgKzI2OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICBuY2xvc3VyZSwgbmZyZWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2NvZGU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19jb2RlID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19jb2RlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI4Nyw4ICsyODQsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuZnVuY19uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0yOTYsMTAgKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX25hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzEzLDggKzMwNiw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0zMjIsMTAgKzMxMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX3F1YWxuYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM0Myw4ICszMzIsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19kZWZhdWx0cy4KICAgICAgKiBDYW4gb25seSBzZXQgZnVuY19kZWZhdWx0cyB0byBOVUxMIG9yIGEgdHVwbGUuICovCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCkBAIC0zNTQsMTAgKzM0MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kZWZhdWx0c19fIG11c3QgYmUgc2V0IHRvIGEgdHVwbGUgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfZGVmYXVsdHMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19kZWZhdWx0cywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzUsOCArMzYwLDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2t3ZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gTlVMTDsKICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2t3ZGVmYXVsdHMuCkBAIC0zODYsMTAgKzM2OSw4IEBACiAgICAgICAgICAgICAiX19rd2RlZmF1bHRzX18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0IG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2t3ZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfa3dkZWZhdWx0cyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2t3ZGVmYXVsdHMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDA4LDggKzM4OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9hbm5vdGF0aW9ucyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgdmFsdWUgPSBOVUxMOwogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfYW5ub3RhdGlvbnMuCkBAIC00MjAsMTAgKzM5OSw4IEBACiAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19hbm5vdGF0aW9uczsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19hbm5vdGF0aW9ucyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDkxNzJlNmEuLjdiY2YwMTYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw3ICs1LDE1IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCiAKLXN0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKTsKK3N0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICphc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jX2dlbl9hdGhyb3dfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CisKK3N0YXRpYyBjaGFyICpOT05fSU5JVF9DT1JPX01TRyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworCitzdGF0aWMgY2hhciAqQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0cgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzeW5jIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOwogCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCkBAIC0yOCw2ICszNiwyNiBAQAogICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgUHlBc3luY0dlbk9iamVjdCAqYWdlbiA9IChQeUFzeW5jR2VuT2JqZWN0KilzZWxmOworICAgICAgICBQeU9iamVjdCAqZmluYWxpemVyID0gYWdlbi0+YWdfZmluYWxpemVyOworICAgICAgICBpZiAoZmluYWxpemVyICYmICFhZ2VuLT5hZ19jbG9zZWQpIHsKKyAgICAgICAgICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmaW5hbGl6ZXIsIHNlbGYsIE5VTEwpOworCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoc2VsZik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKQEAgLTc0LDYgKzEwMiwxMiBAQAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgLyogcmVzdXJyZWN0ZWQuICA6KCAqLwogCiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgIC8qIFdlIGhhdmUgdG8gaGFuZGxlIHRoaXMgY2FzZSBmb3IgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMKKyAgICAgICAgICAgcmlnaHQgaGVyZSwgYmVjYXVzZSB0aGlzIGNvZGUgaGFzIHRvIGJlIGJldHdlZW4gVU5UUkFDSworICAgICAgICAgICBhbmQgR0NfRGVsLiAqLworICAgICAgICBQeV9DTEVBUigoKFB5QXN5bmNHZW5PYmplY3QqKWdlbiktPmFnX2ZpbmFsaXplcik7CisgICAgfQogICAgIGlmIChnZW4tPmdpX2ZyYW1lICE9IE5VTEwpIHsKICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9nZW4gPSBOVUxMOwogICAgICAgICBQeV9DTEVBUihnZW4tPmdpX2ZyYW1lKTsKQEAgLTkzLDggKzEyNywxMiBAQAogCiAgICAgaWYgKGdlbi0+Z2lfcnVubmluZykgewogICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIjsKLSAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgbXNnID0gImFzeW5jIGdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNiwxMCArMTQ0LDE2IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICJjYW5ub3QgcmV1c2UgYWxyZWFkeSBhd2FpdGVkIGNvcm91dGluZSIpOwotICAgICAgICB9IGVsc2UgaWYgKGFyZyAmJiAhZXhjKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXJnICYmICFleGMpIHsKICAgICAgICAgICAgIC8qIGBnZW5gIGlzIGFuIGV4aGF1c3RlZCBnZW5lcmF0b3I6CiAgICAgICAgICAgICAgICBvbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpLiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTE4LDkgKzE2MiwxMyBAQAogICAgICAgICBpZiAoYXJnICYmIGFyZyAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBjaGFyICptc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKICAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgZ2VuZXJhdG9yIjsKLSAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgICAgICBtc2cgPSBOT05fSU5JVF9DT1JPX01TRzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICAgICAgbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgYXN5bmMgZ2VuZXJhdG9yIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTUyLDEwICsyMDAsMjAgQEAKICAgICBpZiAocmVzdWx0ICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIERlbGF5IGV4Y2VwdGlvbiBpbnN0YW50aWF0aW9uIGlmIHdlIGNhbiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwgcmVzdWx0LCBOVUxMKTsKKworICAgICAgICAgICAgLyogQXN5bmMgZ2VuZXJhdG9ycyBjYW5ub3QgcmV0dXJuIGFueXRoaW5nIGJ1dCBOb25lICovCisgICAgICAgICAgICBhc3NlcnQoIVB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKTsKKwogICAgICAgICAgICAgaWYgKGUgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZSk7CkBAIC0xNjcsMzQgKzIyNSw0MyBAQAogICAgICAgICAvKiBDaGVjayBmb3IgX19mdXR1cmVfXyBnZW5lcmF0b3Jfc3RvcCBhbmQgY29uZGl0aW9uYWxseSB0dXJuCiAgICAgICAgICAqIGEgbGVha2luZyBTdG9wSXRlcmF0aW9uIGludG8gUnVudGltZUVycm9yICh3aXRoIGl0cyBjYXVzZQogICAgICAgICAgKiBzZXQgYXBwcm9wcmlhdGVseSkuICovCi0gICAgICAgIGlmICgoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYKLSAgICAgICAgICAgICAgKENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCB8IENPX0NPUk9VVElORSB8IENPX0lURVJBQkxFX0NPUk9VVElORSkpCisKKyAgICAgICAgY29uc3QgaW50IGNoZWNrX3N0b3BfaXRlcl9lcnJvcl9mbGFncyA9IENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19DT1JPVVRJTkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fSVRFUkFCTEVfQ09ST1VUSU5FIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0FTWU5DX0dFTkVSQVRPUjsKKworICAgICAgICBpZiAoZ2VuLT5naV9jb2RlICE9IE5VTEwgJiYKKyAgICAgICAgICAgICgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgorICAgICAgICAgICAgICAgIGNoZWNrX3N0b3BfaXRlcl9lcnJvcl9mbGFncykKICAgICAgICAgewotICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnZhbDIsICp0YjsKLSAgICAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOwotICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICAvKiBgZ2VuYCBpcyBlaXRoZXI6CisgICAgICAgICAgICAgICAgICAqIGEgZ2VuZXJhdG9yIHdpdGggQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIGZsYWc7CisgICAgICAgICAgICAgICAgICAqIGEgY29yb3V0aW5lOworICAgICAgICAgICAgICAgICAgKiBhIGdlbmVyYXRvciB3aXRoIENPX0lURVJBQkxFX0NPUk9VVElORSBmbGFnCisgICAgICAgICAgICAgICAgICAgIChkZWNvcmF0ZWQgd2l0aCB0eXBlcy5jb3JvdXRpbmUgZGVjb3JhdG9yKTsKKyAgICAgICAgICAgICAgICAgICogYW4gYXN5bmMgZ2VuZXJhdG9yLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOworICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKLSAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIGlmICh0YiAhPSBOVUxMKQotICAgICAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOwotICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7Ci0gICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsKTsKLSAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7Ci0gICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7Ci0gICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsMiwgdGIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiBQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSB7CisgICAgICAgICAgICAgICAgbXNnID0gImFzeW5jIGdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzIiwgbXNnKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGBnZW5gIGlzIGFuIG9yZGluYXJ5IGdlbmVyYXRvciB3aXRob3V0CisgICAgICAgICAgICAgICBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgZmxhZy4KKyAgICAgICAgICAgICovCisKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKIAogICAgICAgICAgICAgLyogUG9wIHRoZSBleGNlcHRpb24gYmVmb3JlIGlzc3VpbmcgYSB3YXJuaW5nLiAqLwogICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKIAotICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0b3IgJyUuNTBTJyByYWlzZWQgU3RvcEl0ZXJhdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW4tPmdpX3F1YWxuYW1lKSkgewogICAgICAgICAgICAgICAgIC8qIFdhcm5pbmcgd2FzIGNvbnZlcnRlZCB0byBhbiBlcnJvci4gKi8KQEAgLTIwNyw2ICsyNzQsMTUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSAmJiAhcmVzdWx0ICYmCisgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pKQorICAgIHsKKyAgICAgICAgLyogY29kZSBpbiBgZ2VuYCByYWlzZWQgYSBTdG9wQXN5bmNJdGVyYXRpb24gZXJyb3I6CisgICAgICAgICAgIHJhaXNlIGEgUnVudGltZUVycm9yLgorICAgICAgICAqLworICAgICAgICBjb25zdCBjaGFyICptc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wQXN5bmNJdGVyYXRpb24iOworICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzIiwgbXNnKTsKKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKICAgICAgICAgLyogZ2VuZXJhdG9yIGNhbid0IGJlIHJlcnVuLCBzbyByZWxlYXNlIHRoZSBmcmFtZSAqLwpAQCAtMjUzLDE4ICszMjksMjAgQEAKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAKLSAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikgfHwgUHlDb3JvX0NoZWNrRXhhY3QoeWYpKSB7CiAgICAgICAgIHJldHZhbCA9IGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKil5ZiwgTlVMTCk7CiAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKm1ldGggPSBfUHlPYmplY3RfR2V0QXR0cklkKHlmLCAmUHlJZF9jbG9zZSk7CiAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHlmKTsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24obWV0aCwgIiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhtZXRoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKICAgICAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yODQsNyArMzYyLDcgQEAKICAgICAgICAgUHlPYmplY3QgKmJ5dGVjb2RlID0gZi0+Zl9jb2RlLT5jb19jb2RlOwogICAgICAgICB1bnNpZ25lZCBjaGFyICpjb2RlID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhieXRlY29kZSk7CiAKLSAgICAgICAgaWYgKGNvZGVbZi0+Zl9sYXN0aSArIDFdICE9IFlJRUxEX0ZST00pCisgICAgICAgIGlmIChjb2RlW2YtPmZfbGFzdGkgKyBzaXplb2YoX1B5X0NPREVVTklUKV0gIT0gWUlFTERfRlJPTSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB5ZiA9IGYtPmZfc3RhY2t0b3BbLTFdOwogICAgICAgICBQeV9JTkNSRUYoeWYpOwpAQCAtMzExLDggKzM4OSwxMSBAQAogICAgIHJldHZhbCA9IGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSwgMSk7CiAgICAgaWYgKHJldHZhbCkgewogICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7Ci0gICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOworICAgICAgICB9IGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICBtc2cgPSBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRzsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzIsMjEgKzQxMywyMiBAQAogcmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2VuX3Rocm93KFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQorX2dlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBpbnQgY2xvc2Vfb25fZ2VuZXhpdCwKKyAgICAgICAgICAgUHlPYmplY3QgKnR5cCwgUHlPYmplY3QgKnZhbCwgUHlPYmplY3QgKnRiKQogewotICAgIFB5T2JqZWN0ICp0eXA7Ci0gICAgUHlPYmplY3QgKnRiID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqeWYgPSBfUHlHZW5feWYoZ2VuKTsKICAgICBfUHlfSURFTlRJRklFUih0aHJvdyk7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKHlmKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXQ7CiAgICAgICAgIGludCBlcnI7Ci0gICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSkgeworICAgICAgICBpZiAoUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHR5cCwgUHlFeGNfR2VuZXJhdG9yRXhpdCkgJiYKKyAgICAgICAgICAgIGNsb3NlX29uX2dlbmV4aXQKKyAgICAgICAgKSB7CisgICAgICAgICAgICAvKiBBc3luY2hyb25vdXMgZ2VuZXJhdG9ycyAqc2hvdWxkIG5vdCogYmUgY2xvc2VkIHJpZ2h0IGF3YXkuCisgICAgICAgICAgICAgICBXZSBoYXZlIHRvIGFsbG93IHNvbWUgYXdhaXRzIHRvIHdvcmsgaXQgdGhyb3VnaCwgaGVuY2UgdGhlCisgICAgICAgICAgICAgICBgY2xvc2Vfb25fZ2VuZXhpdGAgcGFyYW1ldGVyIGhlcmUuCisgICAgICAgICAgICAqLwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKICAgICAgICAgICAgIGVyciA9IGdlbl9jbG9zZV9pdGVyKHlmKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CkBAIC0zNTUsMTEgKzQzNywxNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEsIDApOwogICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSkgeworICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikgfHwgUHlDb3JvX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgICAgICAvKiBgeWZgIGlzIGEgZ2VuZXJhdG9yIG9yIGEgY29yb3V0aW5lLiAqLwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKLSAgICAgICAgICAgIHJldCA9IGdlbl90aHJvdygoUHlHZW5PYmplY3QgKil5ZiwgYXJncyk7CisgICAgICAgICAgICAvKiBDbG9zZSB0aGUgZ2VuZXJhdG9yIHRoYXQgd2UgYXJlIGN1cnJlbnRseSBpdGVyYXRpbmcgd2l0aAorICAgICAgICAgICAgICAgJ3lpZWxkIGZyb20nIG9yIGF3YWl0aW5nIG9uIHdpdGggJ2F3YWl0Jy4gKi8KKyAgICAgICAgICAgIHJldCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopeWYsIGNsb3NlX29uX2dlbmV4aXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cCwgdmFsLCB0Yik7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogYHlmYCBpcyBhbiBpdGVyYXRvciBvciBhIGNvcm91dGluZS1saWtlIG9iamVjdC4gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZCh5ZiwgJlB5SWRfdGhyb3cpOwogICAgICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKQEAgLTM3MSw3ICs0NTgsNyBAQAogICAgICAgICAgICAgICAgIGdvdG8gdGhyb3dfaGVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7Ci0gICAgICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KG1ldGgsIGFyZ3MpOworICAgICAgICAgICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhtZXRoLCB0eXAsIHZhbCwgdGIsIE5VTEwpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKICAgICAgICAgfQpAQCAtMzgzLDcgKzQ3MCw3IEBACiAgICAgICAgICAgICBhc3NlcnQocmV0ID09IHlmKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwogICAgICAgICAgICAgLyogVGVybWluYXRpb24gcmVwZXRpdGlvbiBvZiBZSUVMRF9GUk9NICovCi0gICAgICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpKys7CisgICAgICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpICs9IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgaWYgKF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCB2YWwsIDAsIDApOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWwpOwpAQCAtNDU0LDYgKzU0MSwyMSBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCitnZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnR5cDsKKyAgICBQeU9iamVjdCAqdGIgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGhyb3ciLCAxLCAzLCAmdHlwLCAmdmFsLCAmdGIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBfZ2VuX3Rocm93KGdlbiwgMSwgdHlwLCB2YWwsIHRiKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgogZ2VuX2l0ZXJuZXh0KFB5R2VuT2JqZWN0ICpnZW4pCiB7CiAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgTlVMTCwgMCwgMCk7CkBAIC01MjYsOCArNjI4LDYgQEAKIHN0YXRpYyBpbnQKIGdlbl9zZXRfbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uZ2lfbmFtZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtNTM1LDEwICs2MzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5naV9uYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmdpX25hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5naV9uYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTU1Miw4ICs2NTAsNiBAQAogc3RhdGljIGludAogZ2VuX3NldF9xdWFsbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC01NjEsMTAgKzY1Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5naV9xdWFsbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5naV9xdWFsbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmdpX3F1YWxuYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMDUsMjEgKzEwOTksMjEgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqYXdfYWl0ZXI7CisgICAgUHlPYmplY3QgKmFnc19haXRlcjsKIH0gUHlBSXRlcldyYXBwZXI7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGFpdGVyX3dyYXBwZXJfaXRlcm5leHQoUHlBSXRlcldyYXBwZXIgKmF3KQogewotICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBhdy0+YXdfYWl0ZXIpOworICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBhdy0+YWdzX2FpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGludAogYWl0ZXJfd3JhcHBlcl90cmF2ZXJzZShQeUFJdGVyV3JhcHBlciAqYXcsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWF3LT5hd19haXRlcik7CisgICAgUHlfVklTSVQoKFB5T2JqZWN0ICopYXctPmFnc19haXRlcik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMjcsNyArMTEyMSw3IEBACiBhaXRlcl93cmFwcGVyX2RlYWxsb2MoUHlBSXRlcldyYXBwZXIgKmF3KQogewogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKChQeU9iamVjdCAqKWF3KTsKLSAgICBQeV9DTEVBUihhdy0+YXdfYWl0ZXIpOworICAgIFB5X0NMRUFSKGF3LT5hZ3NfYWl0ZXIpOwogICAgIFB5T2JqZWN0X0dDX0RlbChhdyk7CiB9CiAKQEAgLTEwODksNyArMTE4Myw4MTcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRihhaXRlcik7Ci0gICAgYXctPmF3X2FpdGVyID0gYWl0ZXI7CisgICAgYXctPmFnc19haXRlciA9IGFpdGVyOwogICAgIF9QeU9iamVjdF9HQ19UUkFDSyhhdyk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWF3OwogfQorCisKKy8qID09PT09PT09PSBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyA9PT09PT09PT0gKi8KKworCit0eXBlZGVmIGVudW0geworICAgIEFXQUlUQUJMRV9TVEFURV9JTklULCAgIC8qIG5ldyBhd2FpdGFibGUsIGhhcyBub3QgeWV0IGJlZW4gaXRlcmF0ZWQgKi8KKyAgICBBV0FJVEFCTEVfU1RBVEVfSVRFUiwgICAvKiBiZWluZyBpdGVyYXRlZCAqLworICAgIEFXQUlUQUJMRV9TVEFURV9DTE9TRUQsIC8qIGNsb3NlZCAqLworfSBBd2FpdGFibGVTdGF0ZTsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5QXN5bmNHZW5PYmplY3QgKmFnc19nZW47CisKKyAgICAvKiBDYW4gYmUgTlVMTCwgd2hlbiBpbiB0aGUgX19hbmV4dF9fKCkgbW9kZQorICAgICAgIChlcXVpdmFsZW50IG9mICJhc2VuZChOb25lKSIpICovCisgICAgUHlPYmplY3QgKmFnc19zZW5kdmFsOworCisgICAgQXdhaXRhYmxlU3RhdGUgYWdzX3N0YXRlOworfSBQeUFzeW5jR2VuQVNlbmQ7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICphZ3RfZ2VuOworCisgICAgLyogQ2FuIGJlIE5VTEwsIHdoZW4gaW4gdGhlICJhY2xvc2UoKSIgbW9kZQorICAgICAgIChlcXVpdmFsZW50IG9mICJhdGhyb3coR2VuZXJhdG9yRXhpdCkiKSAqLworICAgIFB5T2JqZWN0ICphZ3RfYXJnczsKKworICAgIEF3YWl0YWJsZVN0YXRlIGFndF9zdGF0ZTsKK30gUHlBc3luY0dlbkFUaHJvdzsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICphZ3dfdmFsOworfSBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZTsKKworCisjaWZuZGVmIF9QeUFzeW5jR2VuX01BWEZSRUVMSVNUCisjZGVmaW5lIF9QeUFzeW5jR2VuX01BWEZSRUVMSVNUIDgwCisjZW5kaWYKKworLyogRnJlZWxpc3RzIGJvb3N0IHBlcmZvcm1hbmNlIDYtMTAlOyB0aGV5IGFsc28gcmVkdWNlIG1lbW9yeQorICAgZnJhZ21lbnRhdGlvbiwgYXMgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgYW5kIFB5QXN5bmNHZW5BU2VuZAorICAgYXJlIHNob3J0LWxpdmluZyBvYmplY3RzIHRoYXQgYXJlIGluc3RhbnRpYXRlZCBmb3IgZXZlcnkKKyAgIF9fYW5leHRfXyBjYWxsLgorKi8KKworc3RhdGljIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICphZ192YWx1ZV9mcmVlbGlzdFtfUHlBc3luY0dlbl9NQVhGUkVFTElTVF07CitzdGF0aWMgaW50IGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgPSAwOworCitzdGF0aWMgUHlBc3luY0dlbkFTZW5kICphZ19hc2VuZF9mcmVlbGlzdFtfUHlBc3luY0dlbl9NQVhGUkVFTElTVF07CitzdGF0aWMgaW50IGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUgPSAwOworCisjZGVmaW5lIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QobykgXAorICAgICAgICAgICAgICAgICAgICAoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZSkKKworI2RlZmluZSBQeUFzeW5jR2VuQVNlbmRfQ2hlY2tFeGFjdChvKSBcCisgICAgICAgICAgICAgICAgICAgIChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbkFTZW5kX1R5cGUpCisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX3RyYXZlcnNlKFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoZ2VuLT5hZ19maW5hbGl6ZXIpOworICAgIHJldHVybiBnZW5fdHJhdmVyc2UoKFB5R2VuT2JqZWN0KilnZW4sIHZpc2l0LCBhcmcpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fcmVwcihQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGFzeW5jX2dlbmVyYXRvciBvYmplY3QgJVMgYXQgJXA+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgby0+YWdfcXVhbG5hbWUsIG8pOworfQorCisKK3N0YXRpYyBpbnQKK2FzeW5jX2dlbl9pbml0X2hvb2tzKFB5QXN5bmNHZW5PYmplY3QgKm8pCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXI7CisgICAgUHlPYmplY3QgKmZpcnN0aXRlcjsKKworICAgIGlmIChvLT5hZ19ob29rc19pbml0ZWQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgby0+YWdfaG9va3NfaW5pdGVkID0gMTsKKworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBmaW5hbGl6ZXIgPSB0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXI7CisgICAgaWYgKGZpbmFsaXplcikgeworICAgICAgICBQeV9JTkNSRUYoZmluYWxpemVyKTsKKyAgICAgICAgby0+YWdfZmluYWxpemVyID0gZmluYWxpemVyOworICAgIH0KKworICAgIGZpcnN0aXRlciA9IHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlcjsKKyAgICBpZiAoZmlyc3RpdGVyKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICAgICAgUHlfSU5DUkVGKGZpcnN0aXRlcik7CisgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihmaXJzdGl0ZXIsICJPIiwgbyk7CisgICAgICAgIFB5X0RFQ1JFRihmaXJzdGl0ZXIpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYW5leHQoUHlBc3luY0dlbk9iamVjdCAqbykKK3sKKyAgICBpZiAoYXN5bmNfZ2VuX2luaXRfaG9va3MobykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc3luY19nZW5fYXNlbmRfbmV3KG8sIE5VTEwpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmQoUHlBc3luY0dlbk9iamVjdCAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoYXN5bmNfZ2VuX2luaXRfaG9va3MobykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc3luY19nZW5fYXNlbmRfbmV3KG8sIGFyZyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hY2xvc2UoUHlBc3luY0dlbk9iamVjdCAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoYXN5bmNfZ2VuX2luaXRfaG9va3MobykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc3luY19nZW5fYXRocm93X25ldyhvLCBOVUxMKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3coUHlBc3luY0dlbk9iamVjdCAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2F0aHJvd19uZXcobywgYXJncyk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIGFzeW5jX2dlbl9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJfX25hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9uYW1lLCAoc2V0dGVyKWdlbl9zZXRfbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJuYW1lIG9mIHRoZSBhc3luYyBnZW5lcmF0b3IiKX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfcXVhbG5hbWUsIChzZXR0ZXIpZ2VuX3NldF9xdWFsbmFtZSwKKyAgICAgUHlEb2NfU1RSKCJxdWFsaWZpZWQgbmFtZSBvZiB0aGUgYXN5bmMgZ2VuZXJhdG9yIil9LAorICAgIHsiYWdfYXdhaXQiLCAoZ2V0dGVyKWNvcm9fZ2V0X2NyX2F3YWl0LCBOVUxMLAorICAgICBQeURvY19TVFIoIm9iamVjdCBiZWluZyBhd2FpdGVkIG9uLCBvciBOb25lIil9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIGFzeW5jX2dlbl9tZW1iZXJsaXN0W10gPSB7CisgICAgeyJhZ19mcmFtZSIsICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5QXN5bmNHZW5PYmplY3QsIGFnX2ZyYW1lKSwgICBSRUFET05MWX0sCisgICAgeyJhZ19ydW5uaW5nIiwgVF9CT09MLCAgIG9mZnNldG9mKFB5QXN5bmNHZW5PYmplY3QsIGFnX3J1bm5pbmcpLCBSRUFET05MWX0sCisgICAgeyJhZ19jb2RlIiwgICAgVF9PQkpFQ1QsIG9mZnNldG9mKFB5QXN5bmNHZW5PYmplY3QsIGFnX2NvZGUpLCAgICBSRUFET05MWX0sCisgICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KK307CisKK1B5RG9jX1NUUlZBUihhc3luY19hY2xvc2VfZG9jLAorImFjbG9zZSgpIC0+IHJhaXNlIEdlbmVyYXRvckV4aXQgaW5zaWRlIGdlbmVyYXRvci4iKTsKKworUHlEb2NfU1RSVkFSKGFzeW5jX2FzZW5kX2RvYywKKyJhc2VuZCh2KSAtPiBzZW5kICd2JyBpbiBnZW5lcmF0b3IuIik7CisKK1B5RG9jX1NUUlZBUihhc3luY19hdGhyb3dfZG9jLAorImF0aHJvdyh0eXBbLHZhbFssdGJdXSkgLT4gcmFpc2UgZXhjZXB0aW9uIGluIGdlbmVyYXRvci4iKTsKKworc3RhdGljIFB5TWV0aG9kRGVmIGFzeW5jX2dlbl9tZXRob2RzW10gPSB7CisgICAgeyJhc2VuZCIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXNlbmQsIE1FVEhfTywgYXN5bmNfYXNlbmRfZG9jfSwKKyAgICB7ImF0aHJvdyIsKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3csIE1FVEhfVkFSQVJHUywgYXN5bmNfYXRocm93X2RvY30sCisgICAgeyJhY2xvc2UiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FjbG9zZSwgTUVUSF9OT0FSR1MsIGFzeW5jX2FjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hc19hc3luYyA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgICh1bmFyeWZ1bmMpYXN5bmNfZ2VuX2FuZXh0ICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworUHlUeXBlT2JqZWN0IFB5QXN5bmNHZW5fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuT2JqZWN0KSwgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilnZW5fZGVhbGxvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hc19hc3luYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIChyZXByZnVuYylhc3luY19nZW5fcmVwciwgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CisgICAgICAgIFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylhc3luY19nZW5fdHJhdmVyc2UsICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfd2Vha3JlZmxpc3QpLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBhc3luY19nZW5fbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBhc3luY19nZW5fbWVtYmVybGlzdCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBhc3luY19nZW5fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2lzX2djICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWNoZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3ViY2xhc3NlcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdmVyc2lvbl90YWcgKi8KKyAgICBfUHlHZW5fRmluYWxpemUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZpbmFsaXplICovCit9OworCisKK1B5T2JqZWN0ICoKK1B5QXN5bmNHZW5fTmV3KFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCit7CisgICAgUHlBc3luY0dlbk9iamVjdCAqbzsKKyAgICBvID0gKFB5QXN5bmNHZW5PYmplY3QgKilnZW5fbmV3X3dpdGhfcXVhbG5hbWUoCisgICAgICAgICZQeUFzeW5jR2VuX1R5cGUsIGYsIG5hbWUsIHF1YWxuYW1lKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBvLT5hZ19maW5hbGl6ZXIgPSBOVUxMOworICAgIG8tPmFnX2Nsb3NlZCA9IDA7CisgICAgby0+YWdfaG9va3NfaW5pdGVkID0gMDsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQorCisKK2ludAorUHlBc3luY0dlbl9DbGVhckZyZWVMaXN0cyh2b2lkKQoreworICAgIGludCByZXQgPSBhZ192YWx1ZV9mcmVlbGlzdF9mcmVlICsgYWdfYXNlbmRfZnJlZWxpc3RfZnJlZTsKKworICAgIHdoaWxlIChhZ192YWx1ZV9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvOworICAgICAgICBvID0gYWdfdmFsdWVfZnJlZWxpc3RbLS1hZ192YWx1ZV9mcmVlbGlzdF9mcmVlXTsKKyAgICAgICAgYXNzZXJ0KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QobykpOworICAgICAgICBQeU9iamVjdF9EZWwobyk7CisgICAgfQorCisgICAgd2hpbGUgKGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgUHlBc3luY0dlbkFTZW5kICpvOworICAgICAgICBvID0gYWdfYXNlbmRfZnJlZWxpc3RbLS1hZ19hc2VuZF9mcmVlbGlzdF9mcmVlXTsKKyAgICAgICAgYXNzZXJ0KFB5X1RZUEUobykgPT0gJl9QeUFzeW5jR2VuQVNlbmRfVHlwZSk7CisgICAgICAgIFB5T2JqZWN0X0RlbChvKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCit2b2lkCitQeUFzeW5jR2VuX0Zpbmkodm9pZCkKK3sKKyAgICBQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl91bndyYXBfdmFsdWUoUHlBc3luY0dlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqcmVzdWx0KQoreworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbikKKyAgICAgICAgICAgIHx8IFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgKSB7CisgICAgICAgICAgICBnZW4tPmFnX2Nsb3NlZCA9IDE7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgIC8qIGFzeW5jIHlpZWxkICovCisgICAgICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgICAgIFB5RXhjX1N0b3BJdGVyYXRpb24sCisgICAgICAgICAgICAoKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlKilyZXN1bHQpLT5hZ3dfdmFsLAorICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CisgICAgICAgIFB5X0RFQ1JFRihlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiAtLS0tLS0tLS0tIEFzeW5jIEdlbmVyYXRvciBBU2VuZCBBd2FpdGFibGUgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl9hc2VuZF9kZWFsbG9jKFB5QXN5bmNHZW5BU2VuZCAqbykKK3sKKyAgICBQeV9DTEVBUihvLT5hZ3NfZ2VuKTsKKyAgICBQeV9DTEVBUihvLT5hZ3Nfc2VuZHZhbCk7CisgICAgaWYgKGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUgPCBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCkgeworICAgICAgICBhc3NlcnQoUHlBc3luY0dlbkFTZW5kX0NoZWNrRXhhY3QobykpOworICAgICAgICBhZ19hc2VuZF9mcmVlbGlzdFthZ19hc2VuZF9mcmVlbGlzdF9mcmVlKytdID0gbzsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdF9EZWwobyk7CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfc2VuZChQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChvLT5hZ3Nfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoby0+YWdzX3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9JTklUKSB7CisgICAgICAgIGlmIChhcmcgPT0gTlVMTCB8fCBhcmcgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgYXJnID0gby0+YWdzX3NlbmR2YWw7CisgICAgICAgIH0KKyAgICAgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lURVI7CisgICAgfQorCisgICAgcmVzdWx0ID0gZ2VuX3NlbmRfZXgoKFB5R2VuT2JqZWN0KilvLT5hZ3NfZ2VuLCBhcmcsIDAsIDApOworICAgIHJlc3VsdCA9IGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWdzX2dlbiwgcmVzdWx0KTsKKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9pdGVybmV4dChQeUFzeW5jR2VuQVNlbmQgKm8pCit7CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9zZW5kKG8sIE5VTEwpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfdGhyb3coUHlBc3luY0dlbkFTZW5kICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKG8tPmFnc19zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IGdlbl90aHJvdygoUHlHZW5PYmplY3QqKW8tPmFnc19nZW4sIGFyZ3MpOworICAgIHJlc3VsdCA9IGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWdzX2dlbiwgcmVzdWx0KTsKKworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9jbG9zZShQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIGFzeW5jX2dlbl9hc2VuZF9tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZF9zZW5kLCBNRVRIX08sIHNlbmRfZG9jfSwKKyAgICB7InRocm93IiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZF90aHJvdywgTUVUSF9WQVJBUkdTLCB0aHJvd19kb2N9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXNlbmRfYXNfYXN5bmMgPSB7CisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbkFTZW5kX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYXN5bmNfZ2VuZXJhdG9yX2FzZW5kIiwgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlBc3luY0dlbkFTZW5kKSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpYXN5bmNfZ2VuX2FzZW5kX2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICZhc3luY19nZW5fYXNlbmRfYXNfYXN5bmMsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylhc3luY19nZW5fYXNlbmRfaXRlcm5leHQsICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGFzeW5jX2dlbl9hc2VuZF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX25ldyhQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICpzZW5kdmFsKQoreworICAgIFB5QXN5bmNHZW5BU2VuZCAqbzsKKyAgICBpZiAoYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlLS07CisgICAgICAgIG8gPSBhZ19hc2VuZF9mcmVlbGlzdFthZ19hc2VuZF9mcmVlbGlzdF9mcmVlXTsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKilvKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvID0gUHlPYmplY3RfTmV3KFB5QXN5bmNHZW5BU2VuZCwgJl9QeUFzeW5jR2VuQVNlbmRfVHlwZSk7CisgICAgICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfSU5DUkVGKGdlbik7CisgICAgby0+YWdzX2dlbiA9IGdlbjsKKworICAgIFB5X1hJTkNSRUYoc2VuZHZhbCk7CisgICAgby0+YWdzX3NlbmR2YWwgPSBzZW5kdmFsOworCisgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lOSVQ7CisgICAgcmV0dXJuIChQeU9iamVjdCopbzsKK30KKworCisvKiAtLS0tLS0tLS0tIEFzeW5jIEdlbmVyYXRvciBWYWx1ZSBXcmFwcGVyIC0tLS0tLS0tLS0tLSAqLworCisKK3N0YXRpYyB2b2lkCithc3luY19nZW5fd3JhcHBlZF92YWxfZGVhbGxvYyhfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbykKK3sKKyAgICBQeV9DTEVBUihvLT5hZ3dfdmFsKTsKKyAgICBpZiAoYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSA8IF9QeUFzeW5jR2VuX01BWEZSRUVMSVNUKSB7CisgICAgICAgIGFzc2VydChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgYWdfdmFsdWVfZnJlZWxpc3RbYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSsrXSA9IG87CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3RfRGVsKG8pOworICAgIH0KK30KKworCitQeVR5cGVPYmplY3QgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3Jfd3JhcHBlZF92YWx1ZSIsICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSksICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fd3JhcHBlZF92YWxfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK1B5T2JqZWN0ICoKK19QeUFzeW5jR2VuVmFsdWVXcmFwcGVyTmV3KFB5T2JqZWN0ICp2YWwpCit7CisgICAgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKm87CisgICAgYXNzZXJ0KHZhbCk7CisKKyAgICBpZiAoYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBhZ192YWx1ZV9mcmVlbGlzdF9mcmVlLS07CisgICAgICAgIG8gPSBhZ192YWx1ZV9mcmVlbGlzdFthZ192YWx1ZV9mcmVlbGlzdF9mcmVlXTsKKyAgICAgICAgYXNzZXJ0KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QobykpOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCopbyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbyA9IFB5T2JqZWN0X05ldyhfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSwgJl9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGUpOworICAgICAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBvLT5hZ3dfdmFsID0gdmFsOworICAgIFB5X0lOQ1JFRih2YWwpOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgQVRocm93IGF3YWl0YWJsZSAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX2F0aHJvd19kZWFsbG9jKFB5QXN5bmNHZW5BVGhyb3cgKm8pCit7CisgICAgUHlfQ0xFQVIoby0+YWd0X2dlbik7CisgICAgUHlfQ0xFQVIoby0+YWd0X2FyZ3MpOworICAgIFB5T2JqZWN0X0RlbChvKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19zZW5kKFB5QXN5bmNHZW5BVGhyb3cgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlHZW5PYmplY3QgKmdlbiA9IChQeUdlbk9iamVjdCopby0+YWd0X2dlbjsKKyAgICBQeUZyYW1lT2JqZWN0ICpmID0gZ2VuLT5naV9mcmFtZTsKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwgfHwKKyAgICAgICAgICAgIG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgaWYgKG8tPmFndF9nZW4tPmFnX2Nsb3NlZCkgeworICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFyZyAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBOT05fSU5JVF9DT1JPX01TRyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9JVEVSOworCisgICAgICAgIGlmIChvLT5hZ3RfYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgICAgICBvLT5hZ3RfZ2VuLT5hZ19jbG9zZWQgPSAxOworCisgICAgICAgICAgICByZXR2YWwgPSBfZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKWdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8qIERvIG5vdCBjbG9zZSBnZW5lcmF0b3Igd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCBpcyBwYXNzZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCwgTlVMTCwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmIChyZXR2YWwgJiYgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgZ290byB5aWVsZF9jbG9zZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0eXA7CisgICAgICAgICAgICBQeU9iamVjdCAqdGIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisKKyAgICAgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoby0+YWd0X2FyZ3MsICJhdGhyb3ciLCAxLCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwLCAmdmFsLCAmdGIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHZhbCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgLyogRG8gbm90IGNsb3NlIGdlbmVyYXRvciB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19HZW5lcmF0b3JFeGl0IGlzIHBhc3NlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXAsIHZhbCwgdGIpOworICAgICAgICAgICAgcmV0dmFsID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3RfZ2VuLCByZXR2YWwpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBjaGVja19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KKworICAgIGFzc2VydChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lURVIpOworCisgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoKFB5R2VuT2JqZWN0ICopZ2VuLCBhcmcsIDAsIDApOworICAgIGlmIChvLT5hZ3RfYXJncykgeworICAgICAgICByZXR1cm4gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3RfZ2VuLCByZXR2YWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGFjbG9zZSgpIG1vZGUgKi8KKyAgICAgICAgaWYgKHJldHZhbCkgeworICAgICAgICAgICAgaWYgKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGdvdG8geWllbGRfY2xvc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZ290byBjaGVja19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworeWllbGRfY2xvc2U6CisgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsIEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHKTsKKyAgICByZXR1cm4gTlVMTDsKKworY2hlY2tfZXJyb3I6CisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKQorICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpCisgICAgKSB7CisgICAgICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7ICAgICAgICAgIC8qIGlnbm9yZSB0aGVzZSBlcnJvcnMgKi8KKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfdGhyb3coUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgTk9OX0lOSVRfQ09ST19NU0cpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dmFsID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCopby0+YWd0X2dlbiwgYXJncyk7CisgICAgaWYgKG8tPmFndF9hcmdzKSB7CisgICAgICAgIHJldHVybiBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFndF9nZW4sIHJldHZhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogYWNsb3NlKCkgbW9kZSAqLworICAgICAgICBpZiAocmV0dmFsICYmIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19pdGVybmV4dChQeUFzeW5jR2VuQVRocm93ICpvKQoreworICAgIHJldHVybiBhc3luY19nZW5fYXRocm93X3NlbmQobywgUHlfTm9uZSk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfY2xvc2UoUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX2F0aHJvd19tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93X3Rocm93LCBNRVRIX1ZBUkFSR1MsIHRocm93X2RvY30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93X2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXRocm93X2FzX2FzeW5jID0geworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitQeVR5cGVPYmplY3QgX1B5QXN5bmNHZW5BVGhyb3dfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3JfYXRocm93IiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuQVRocm93KSwgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fYXRocm93X2RlYWxsb2MsICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hdGhyb3dfYXNfYXN5bmMsICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWFzeW5jX2dlbl9hdGhyb3dfaXRlcm5leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX2F0aHJvd19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X25ldyhQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5QXN5bmNHZW5BVGhyb3cgKm87CisgICAgbyA9IFB5T2JqZWN0X05ldyhQeUFzeW5jR2VuQVRocm93LCAmX1B5QXN5bmNHZW5BVGhyb3dfVHlwZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgby0+YWd0X2dlbiA9IGdlbjsKKyAgICBvLT5hZ3RfYXJncyA9IGFyZ3M7CisgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lOSVQ7CisgICAgUHlfSU5DUkVGKGdlbik7CisgICAgUHlfWElOQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwppbmRleCBhYjI5ZmY4Li43NWIyZmNiIDEwMDY0NAotLS0gYS9PYmplY3RzL2l0ZXJvYmplY3QuYworKysgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwpAQCAtMjA4LDMwICsyMDgsMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjYWxsaXRlcl9pdGVybmV4dChjYWxsaXRlcm9iamVjdCAqaXQpCiB7Ci0gICAgaWYgKGl0LT5pdF9jYWxsYWJsZSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChpdC0+aXRfY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IG9rOwotICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKLSAgICAgICAgICAgIGlmIChvayA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgaWYgKG9rID4gMCkgewotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9jYWxsYWJsZSk7Ci0gICAgICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X3NlbnRpbmVsKTsKLSAgICAgICAgICAgIH0KKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKGl0LT5pdF9jYWxsYWJsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoaXQtPml0X2NhbGxhYmxlKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IG9rOworCisgICAgICAgIG9rID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0LT5pdF9zZW50aW5lbCwgcmVzdWx0LCBQeV9FUSk7CisgICAgICAgIGlmIChvayA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvKiBDb21tb24gY2FzZSwgZmFzdCBwYXRoICovCiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgaWYgKG9rID4gMCkgewogICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X2NhbGxhYmxlKTsKICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9zZW50aW5lbCk7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBQeV9DTEVBUihpdC0+aXRfY2FsbGFibGUpOworICAgICAgICBQeV9DTEVBUihpdC0+aXRfc2VudGluZWwpOworICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9saXN0b2JqZWN0LmMgYi9PYmplY3RzL2xpc3RvYmplY3QuYwppbmRleCA4MTVhMWI5Li5kY2Q3YjVlIDEwMDY0NAotLS0gYS9PYmplY3RzL2xpc3RvYmplY3QuYworKysgYi9PYmplY3RzL2xpc3RvYmplY3QuYwpAQCAtNDksNyArNDksNyBAQAogICAgIG5ld19hbGxvY2F0ZWQgPSAobmV3c2l6ZSA+PiAzKSArIChuZXdzaXplIDwgOSA/IDMgOiA2KTsKIAogICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgaWYgKG5ld19hbGxvY2F0ZWQgPiBQWV9TSVpFX01BWCAtIG5ld3NpemUpIHsKKyAgICBpZiAobmV3X2FsbG9jYXRlZCA+IFNJWkVfTUFYIC0gbmV3c2l6ZSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKQEAgLTU5LDcgKzU5LDcgQEAKICAgICBpZiAobmV3c2l6ZSA9PSAwKQogICAgICAgICBuZXdfYWxsb2NhdGVkID0gMDsKICAgICBpdGVtcyA9IHNlbGYtPm9iX2l0ZW07Ci0gICAgaWYgKG5ld19hbGxvY2F0ZWQgPD0gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSkKKyAgICBpZiAobmV3X2FsbG9jYXRlZCA8PSAoU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpKQogICAgICAgICBQeU1lbV9SRVNJWkUoaXRlbXMsIFB5T2JqZWN0ICosIG5ld19hbGxvY2F0ZWQpOwogICAgIGVsc2UKICAgICAgICAgaXRlbXMgPSBOVUxMOwpAQCAtODIsNiArODIsMTYgQEAKIHN0YXRpYyB2b2lkCiBzaG93X2FsbG9jKHZvaWQpCiB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CisKICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpc3QgYWxsb2NhdGlvbnM6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCiAgICAgICAgIGNvdW50X2FsbG9jKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpc3QgcmV1c2UgdGhyb3VnaCBmcmVlbGlzdDogJSIgUFlfRk9STUFUX1NJWkVfVApAQCAtMTMwLDcgKzE0MCw2IEBACiBQeUxpc3RfTmV3KFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBQeUxpc3RPYmplY3QgKm9wOwotICAgIHNpemVfdCBuYnl0ZXM7CiAjaWZkZWYgU0hPV19BTExPQ19DT1VOVAogICAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKQEAgLTE0MywxMSArMTUyLDYgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgd2l0aG91dCBhbiBhY3R1YWwgb3ZlcmZsb3csCi0gICAgICogIHdoaWNoIGNhbiBjYXVzZSBjb21waWxlciB0byBvcHRpbWlzZSBvdXQgKi8KLSAgICBpZiAoKHNpemVfdClzaXplID4gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIG5ieXRlcyA9IHNpemUgKiBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgaWYgKG51bWZyZWUpIHsKICAgICAgICAgbnVtZnJlZS0tOwogICAgICAgICBvcCA9IGZyZWVfbGlzdFtudW1mcmVlXTsKQEAgLTE2NiwxMiArMTcwLDExIEBACiAgICAgaWYgKHNpemUgPD0gMCkKICAgICAgICAgb3AtPm9iX2l0ZW0gPSBOVUxMOwogICAgIGVsc2UgewotICAgICAgICBvcC0+b2JfaXRlbSA9IChQeU9iamVjdCAqKikgUHlNZW1fTUFMTE9DKG5ieXRlcyk7CisgICAgICAgIG9wLT5vYl9pdGVtID0gKFB5T2JqZWN0ICoqKSBQeU1lbV9DYWxsb2Moc2l6ZSwgc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgaWYgKG9wLT5vYl9pdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvcCk7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQotICAgICAgICBtZW1zZXQob3AtPm9iX2l0ZW0sIDAsIG5ieXRlcyk7CiAgICAgfQogICAgIFB5X1NJWkUob3ApID0gc2l6ZTsKICAgICBvcC0+YWxsb2NhdGVkID0gc2l6ZTsKQEAgLTIxNiw3ICsyMTksNiBAQAogUHlMaXN0X1NldEl0ZW0oUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksCiAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmV3aXRlbSkKIHsKLSAgICBQeU9iamVjdCAqb2xkaXRlbTsKICAgICBQeU9iamVjdCAqKnA7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5X1hERUNSRUYobmV3aXRlbSk7CkBAIC0yMzAsOSArMjMyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBwID0gKChQeUxpc3RPYmplY3QgKilvcCkgLT4gb2JfaXRlbSArIGk7Ci0gICAgb2xkaXRlbSA9ICpwOwotICAgICpwID0gbmV3aXRlbTsKLSAgICBQeV9YREVDUkVGKG9sZGl0ZW0pOworICAgIFB5X1hTRVRSRUYoKnAsIG5ld2l0ZW0pOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpID09IC0xKQorICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHdoZXJlIDwgMCkgewpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA9PSAtMSkKKyAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIFB5X0lOQ1JFRih2KTsKQEAgLTQ4MSw5ICs0ODEsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZGVmaW5lIGIgKChQeUxpc3RPYmplY3QgKiliYikKLSAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7Ci0gICAgaWYgKHNpemUgPCAwKQorICAgIGlmIChQeV9TSVpFKGEpID4gUFlfU1NJWkVfVF9NQVggLSBQeV9TSVpFKGIpKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7CiAgICAgbnAgPSAoUHlMaXN0T2JqZWN0ICopIFB5TGlzdF9OZXcoc2l6ZSk7CiAgICAgaWYgKG5wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03MTQsNyArNzE0LDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogCi0gICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIHNpemUqbikgPT0gLTEpCisgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIHNpemUqbikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSBzaXplOwpAQCAtNzMzLDcgKzczMyw2IEBACiBzdGF0aWMgaW50CiBsaXN0X2Fzc19pdGVtKFB5TGlzdE9iamVjdCAqYSwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKIHsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOwogICAgIGlmIChpIDwgMCB8fCBpID49IFB5X1NJWkUoYSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBhc3NpZ25tZW50IGluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtNzQyLDkgKzc0MSw3IEBACiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGxpc3RfYXNzX3NsaWNlKGEsIGksIGkrMSwgdik7CiAgICAgUHlfSU5DUkVGKHYpOwotICAgIG9sZF92YWx1ZSA9IGEtPm9iX2l0ZW1baV07Ci0gICAgYS0+b2JfaXRlbVtpXSA9IHY7Ci0gICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7CisgICAgUHlfU0VUUkVGKGEtPm9iX2l0ZW1baV0sIHYpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04MDcsNyArODA0LDcgQEAKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgICAgICB9CiAgICAgICAgIG0gPSBQeV9TSVpFKHNlbGYpOwotICAgICAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbSArIG4pID09IC0xKSB7CisgICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtICsgbikgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODM1LDIzICs4MzIsMjUgQEAKIAogICAgIC8qIEd1ZXNzIGEgcmVzdWx0IGxpc3Qgc2l6ZS4gKi8KICAgICBuID0gUHlPYmplY3RfTGVuZ3RoSGludChiLCA4KTsKLSAgICBpZiAobiA9PSAtMSkgeworICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgbW4gPSBtICsgbjsKLSAgICBpZiAobW4gPj0gbSkgeworICAgIGlmIChtID4gUFlfU1NJWkVfVF9NQVggLSBuKSB7CisgICAgICAgIC8qIG0gKyBuIG92ZXJmbG93ZWQ7IG9uIHRoZSBjaGFuY2UgdGhhdCBuIGxpZWQsIGFuZCB0aGVyZSByZWFsbHkKKyAgICAgICAgICogaXMgZW5vdWdoIHJvb20sIGlnbm9yZSBpdC4gIElmIG4gd2FzIHRlbGxpbmcgdGhlIHRydXRoLCB3ZSdsbAorICAgICAgICAgKiBldmVudHVhbGx5IHJ1biBvdXQgb2YgbWVtb3J5IGR1cmluZyB0aGUgbG9vcC4KKyAgICAgICAgICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtbiA9IG0gKyBuOwogICAgICAgICAvKiBNYWtlIHJvb20uICovCi0gICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtbikgPT0gLTEpCisgICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtbikgPCAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgLyogTWFrZSB0aGUgbGlzdCBzYW5lIGFnYWluLiAqLwogICAgICAgICBQeV9TSVpFKHNlbGYpID0gbTsKICAgICB9Ci0gICAgLyogRWxzZSBtICsgbiBvdmVyZmxvd2VkOyBvbiB0aGUgY2hhbmNlIHRoYXQgbiBsaWVkLCBhbmQgdGhlcmUgcmVhbGx5Ci0gICAgICogaXMgZW5vdWdoIHJvb20sIGlnbm9yZSBpdC4gIElmIG4gd2FzIHRlbGxpbmcgdGhlIHRydXRoLCB3ZSdsbAotICAgICAqIGV2ZW50dWFsbHkgcnVuIG91dCBvZiBtZW1vcnkgZHVyaW5nIHRoZSBsb29wLgotICAgICAqLwogCiAgICAgLyogUnVuIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24uICovCiAgICAgZm9yICg7OykgewpAQCAtMjUwMCw5ICsyNDk5LDYgQEAKICAgICAgICAgICAgICAgICBzdGVwID0gLXN0ZXA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuZ3RoIDw9Ci0gICAgICAgICAgICAgICAgICAgUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QqKSk7Ci0KICAgICAgICAgICAgIGdhcmJhZ2UgPSAoUHlPYmplY3QqKikKICAgICAgICAgICAgICAgICBQeU1lbV9NQUxMT0Moc2xpY2VsZW5ndGgqc2l6ZW9mKFB5T2JqZWN0KikpOwogICAgICAgICAgICAgaWYgKCFnYXJiYWdlKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3Rzb3J0LnR4dCBiL09iamVjdHMvbGlzdHNvcnQudHh0CmluZGV4IDE1MmEyNzAuLjE3ZDI3OTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdHNvcnQudHh0CisrKyBiL09iamVjdHMvbGlzdHNvcnQudHh0CkBAIC00ODYsNyArNDg2LDcgQEAKIEkgZmlyc3QgbGVhcm5lZCBhYm91dCB0aGUgZ2FsbG9waW5nIHN0cmF0ZWd5IGluIGEgcmVsYXRlZCBjb250ZXh0OyBzZWU6CiAKICAgICAiQWRhcHRpdmUgU2V0IEludGVyc2VjdGlvbnMsIFVuaW9ucywgYW5kIERpZmZlcmVuY2VzIiAoMjAwMCkKLSAgICBFcmlrIEQuIERlbWFpbmUsIEFsZWphbmRybyBM83Blei1PcnRpeiwgSi4gSWFuIE11bnJvCisgICAgRXJpayBELiBEZW1haW5lLCBBbGVqYW5kcm8gTMOzcGV6LU9ydGl6LCBKLiBJYW4gTXVucm8KIAogYW5kIGl0cyBmb2xsb3d1cChzKS4gIEFuIGVhcmxpZXIgcGFwZXIgY2FsbGVkIHRoZSBzYW1lIHN0cmF0ZWd5CiAiZXhwb25lbnRpYWwgc2VhcmNoIjoKZGlmZiAtLWdpdCBhL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dCBiL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dAppbmRleCBkMjQ3ZWRkLi41MTUzNzU3IDEwMDY0NAotLS0gYS9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQKKysrIGIvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0CkBAIC0xMiw0MiArMTIsNDcgQEAKICAgICAgICAgMAkJICAgIDEKICAgICAgICAgNgkJICAgIDIKICAgICAgICA1MAkJICAgIDcKLSAgICAgIDM1MCAgICAgICAgICAgICAgICAgMzA3Ci0gICAgICAzNjEgICAgICAgICAgICAgICAgIDMwOAorICAgICAgMzUwICAgICAgICAgICAgICAgICAyMDcKKyAgICAgIDM2MSAgICAgICAgICAgICAgICAgMjA4CiAKIEluc3RlYWQgb2Ygc3RvcmluZyB0aGVzZSBudW1iZXJzIGxpdGVyYWxseSwgd2UgY29tcHJlc3MgdGhlIGxpc3QgYnkgc3RvcmluZyBvbmx5Ci10aGUgaW5jcmVtZW50cyBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQuICBDb25jZXB0dWFsbHksIHRoZSBzdG9yZWQgbGlzdCBtaWdodAordGhlIGRpZmZlcmVuY2UgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LiAgQ29uY2VwdHVhbGx5LCB0aGUgc3RvcmVkIGxpc3QgbWlnaHQKIGxvb2sgbGlrZToKIAotICAgIDAsIDEsICA2LCAxLCAgNDQsIDUsICAzMDAsIDMwMCwgIDExLCAxCisgICAgMCwgMSwgIDYsIDEsICA0NCwgNSwgIDMwMCwgMjAwLCAgMTEsIDEKIAotVGhlIGFib3ZlIGRvZXNuJ3QgcmVhbGx5IHdvcmssIGJ1dCBpdCdzIGEgc3RhcnQuIE5vdGUgdGhhdCBhbiB1bnNpZ25lZCBieXRlCi1jYW4ndCBob2xkIG5lZ2F0aXZlIHZhbHVlcywgb3IgdmFsdWVzIGxhcmdlciB0aGFuIDI1NSwgYW5kIHRoZSBhYm92ZSBleGFtcGxlCi1jb250YWlucyB0d28gc3VjaCB2YWx1ZXMuIFNvIHdlIG1ha2UgdHdvIHR3ZWFrczoKK1RoZSBhYm92ZSBkb2Vzbid0IHJlYWxseSB3b3JrLCBidXQgaXQncyBhIHN0YXJ0LiBBbiB1bnNpZ25lZCBieXRlIChieXRlIGNvZGUKK29mZnNldCkgY2FuJ3QgaG9sZCBuZWdhdGl2ZSB2YWx1ZXMsIG9yIHZhbHVlcyBsYXJnZXIgdGhhbiAyNTUsIGEgc2lnbmVkIGJ5dGUKKyhsaW5lIG51bWJlcikgY2FuJ3QgaG9sZCB2YWx1ZXMgbGFyZ2VyIHRoYW4gMTI3IG9yIGxlc3MgdGhhbiAtMTI4LCBhbmQgdGhlCithYm92ZSBleGFtcGxlIGNvbnRhaW5zIHR3byBzdWNoIHZhbHVlcy4gU28gd2UgbWFrZSB0d28gdHdlYWtzOgogCi0gKGEpIHRoZXJlJ3MgYSBkZWVwIGFzc3VtcHRpb24gdGhhdCBieXRlIGNvZGUgb2Zmc2V0cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZwotIGxpbmUgI3MgYm90aCBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LCBhbmQKLSAoYikgaWYgYXQgbGVhc3Qgb25lIGNvbHVtbiBqdW1wcyBieSBtb3JlIHRoYW4gMjU1IGZyb20gb25lIHJvdyB0byB0aGUgbmV4dCwKLSBtb3JlIHRoYW4gb25lIHBhaXIgaXMgd3JpdHRlbiB0byB0aGUgdGFibGUuIEluIGNhc2UgI2IsIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cKLSBmcm9tIGxvb2tpbmcgYXQgdGhlIHRhYmxlIGxhdGVyIGhvdyBtYW55IHdlcmUgd3JpdHRlbi4gIFRoYXQncyB0aGUgZGVsaWNhdGUKLSBwYXJ0LiAgQSB1c2VyIG9mIGNvX2xub3RhYiBkZXNpcmluZyB0byBmaW5kIHRoZSBzb3VyY2UgbGluZSBudW1iZXIKLSBjb3JyZXNwb25kaW5nIHRvIGEgYnl0ZWNvZGUgYWRkcmVzcyBBIHNob3VsZCBkbyBzb21ldGhpbmcgbGlrZSB0aGlzCisgKGEpIHRoZXJlJ3MgYSBkZWVwIGFzc3VtcHRpb24gdGhhdCBieXRlIGNvZGUgb2Zmc2V0cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LAorIGFuZAorIChiKSBpZiBieXRlIGNvZGUgb2Zmc2V0IGp1bXBzIGJ5IG1vcmUgdGhhbiAyNTUgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LCBvciBpZgorIHNvdXJjZSBjb2RlIGxpbmUgbnVtYmVyIGp1bXBzIGJ5IG1vcmUgdGhhbiAxMjcgb3IgbGVzcyB0aGFuIC0xMjggZnJvbSBvbmUgcm93CisgdG8gdGhlIG5leHQsIG1vcmUgdGhhbiBvbmUgcGFpciBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZS4gSW4gY2FzZSAjYiwKKyB0aGVyZSdzIG5vIHdheSB0byBrbm93IGZyb20gbG9va2luZyBhdCB0aGUgdGFibGUgbGF0ZXIgaG93IG1hbnkgd2VyZSB3cml0dGVuLgorIFRoYXQncyB0aGUgZGVsaWNhdGUgcGFydC4gIEEgdXNlciBvZiBjb19sbm90YWIgZGVzaXJpbmcgdG8gZmluZCB0aGUgc291cmNlCisgbGluZSBudW1iZXIgY29ycmVzcG9uZGluZyB0byBhIGJ5dGVjb2RlIGFkZHJlc3MgQSBzaG91bGQgZG8gc29tZXRoaW5nIGxpa2UKKyB0aGlzOgogCiAgICAgbGluZW5vID0gYWRkciA9IDAKICAgICBmb3IgYWRkcl9pbmNyLCBsaW5lX2luY3IgaW4gY29fbG5vdGFiOgogICAgICAgICBhZGRyICs9IGFkZHJfaW5jcgogICAgICAgICBpZiBhZGRyID4gQToKICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KKyAgICAgICAgaWYgbGluZV9pbmNyID49IDB4ODA6CisgICAgICAgICAgICBsaW5lX2luY3IgLT0gMHgxMDAKICAgICAgICAgbGluZW5vICs9IGxpbmVfaW5jcgogCiAoSW4gQywgdGhpcyBpcyBpbXBsZW1lbnRlZCBieSBQeUNvZGVfQWRkcjJMaW5lKCkuKSAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yaywKIHdoZW4gdGhlIGFkZHIgZmllbGQgaW5jcmVtZW50cyBieSBtb3JlIHRoYW4gMjU1LCB0aGUgbGluZSAjIGluY3JlbWVudCBpbiBlYWNoCiBwYWlyIGdlbmVyYXRlZCBtdXN0IGJlIDAgdW50aWwgdGhlIHJlbWFpbmluZyBhZGRyIGluY3JlbWVudCBpcyA8IDI1Ni4gIFNvLCBpbgogdGhlIGV4YW1wbGUgYWJvdmUsIGFzc2VtYmxlX2xub3RhYiBpbiBjb21waWxlLmMgc2hvdWxkIG5vdCAoYXMgd2FzIGFjdHVhbGx5IGRvbmUKLXVudGlsIDIuMikgZXhwYW5kIDMwMCwgMzAwIHRvCit1bnRpbCAyLjIpIGV4cGFuZCAzMDAsIDIwMCB0bwogICAgIDI1NSwgMjU1LCA0NSwgNDUsCiBidXQgdG8KLSAgICAyNTUsIDAsIDQ1LCAyNTUsIDAsIDQ1LgorICAgIDI1NSwgMCwgNDUsIDEyOCwgMCwgNzIuCiAKIFRoZSBhYm92ZSBpcyBzdWZmaWNpZW50IHRvIHJlY29uc3RydWN0IGxpbmUgbnVtYmVycyBmb3IgdHJhY2ViYWNrcywgYnV0IG5vdCBmb3IKIGxpbmUgdHJhY2luZy4gIFRyYWNpbmcgaXMgaGFuZGxlZCBieSBQeUNvZGVfQ2hlY2tMaW5lTnVtYmVyKCkgaW4gY29kZW9iamVjdC5jCkBAIC05MCwxNiArOTUsMTYgQEAKICAgICAgICAgICAgICAgNiBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICAxNwogCiAgIDMgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgMTIgUFJJTlRfSVRFTSAgICAgICAgICAKKyAgICAgICAgICAgICAxMiBQUklOVF9JVEVNCiAKLSAgNCAgICAgICAgICAxMyBCUkVBS19MT09QICAgICAgICAgIAorICA0ICAgICAgICAgIDEzIEJSRUFLX0xPT1AKICAgICAgICAgICAgICAxNCBKVU1QX0FCU09MVVRFICAgICAgICAgICAgMwotICAgICAgICA+PiAgIDE3IFBPUF9CTE9DSyAgICAgICAgICAgCisgICAgICAgID4+ICAgMTcgUE9QX0JMT0NLCiAKICAgNiAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMikKLSAgICAgICAgICAgICAyMSBQUklOVF9JVEVNICAgICAgICAgIAorICAgICAgICAgICAgIDIxIFBSSU5UX0lURU0KICAgICAgICAgPj4gICAyMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAyNSBSRVRVUk5fVkFMVUUgICAgICAgIAorICAgICAgICAgICAgIDI1IFJFVFVSTl9WQUxVRQogCiBJZiAnYScgaXMgZmFsc2UsIGV4ZWN1dGlvbiB3aWxsIGp1bXAgdG8gdGhlIFBPUF9CTE9DSyBpbnN0cnVjdGlvbiBhdCBvZmZzZXQgMTcKIGFuZCB0aGUgY29fbG5vdGFiIHdpbGwgY2xhaW0gdGhhdCBleGVjdXRpb24gaGFzIG1vdmVkIHRvIGxpbmUgNCwgd2hpY2ggaXMgd3JvbmcuCmRpZmYgLS1naXQgYS9PYmplY3RzL2xvbmdvYmplY3QuYyBiL09iamVjdHMvbG9uZ29iamVjdC5jCmluZGV4IDBjYzg1MGUuLmE0NTMyNDEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG9uZ29iamVjdC5jCisrKyBiL09iamVjdHMvbG9uZ29iamVjdC5jCkBAIC03MjIsNyArNzIyLDcgQEAKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwotICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gUFlfU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKKyAgICAgICAgaWYgKChzaXplX3QpKG5kaWdpdHMgLSAxKSA+IFNJWkVfTUFYIC8gKHNpemVfdClQeUxvbmdfU0hJRlQpCiAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OwogICAgICAgICByZXN1bHQgPSAoc2l6ZV90KShuZGlnaXRzIC0gMSkgKiAoc2l6ZV90KVB5TG9uZ19TSElGVDsKICAgICAgICAgZG8gewpAQCAtOTkwLDE2ICs5OTAsMTMgQEAKIFB5TG9uZ19Gcm9tVm9pZFB0cih2b2lkICpwKQogewogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpKFB5X3VpbnRwdHJfdClwKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpKHVpbnRwdHJfdClwKTsKICNlbHNlCiAKLSNpZm5kZWYgSEFWRV9MT05HX0xPTkcKLSMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VuZGlmCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjICAgZXJyb3IgIlB5TG9uZ19Gcm9tVm9pZFB0cjogc2l6ZW9mKGxvbmcgbG9uZykgPCBzaXplb2Yodm9pZCopIgogI2VuZGlmCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgUFlfTE9OR19MT05HKShQeV91aW50cHRyX3QpcCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgbG9uZyBsb25nKSh1aW50cHRyX3QpcCk7CiAjZW5kaWYgLyogU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORyAqLwogCiB9CkBAIC0xMDE4LDEzICsxMDE1LDEwIEBACiAgICAgICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcodnYpOwogI2Vsc2UKIAotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VuZGlmCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKFBZX0xPTkdfTE9ORykgPCBzaXplb2Yodm9pZCopIgorIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2sodnYpICYmIF9QeUxvbmdfU2lnbih2dikgPCAwKQogICAgICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcodnYpOwpAQCAtMTAzOCwyMiArMTAzMiwyMCBAQAogICAgIHJldHVybiAodm9pZCAqKXg7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCi0vKiBJbml0aWFsIFBZX0xPTkdfTE9ORyBzdXBwb3J0IGJ5IENocmlzIEhlcmJvcnRoIChjaHJpc2hAcW54LmNvbSksIGxhdGVyCisvKiBJbml0aWFsIGxvbmcgbG9uZyBzdXBwb3J0IGJ5IENocmlzIEhlcmJvcnRoIChjaHJpc2hAcW54LmNvbSksIGxhdGVyCiAgKiByZXdyaXR0ZW4gdG8gdXNlIHRoZSBuZXdlciBQeUxvbmdfe0FzLEZyb219Qnl0ZUFycmF5IEFQSS4KICAqLwogCi0jZGVmaW5lIFBZX0FCU19MTE9OR19NSU4gKDAtKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylQWV9MTE9OR19NSU4pCisjZGVmaW5lIFBZX0FCU19MTE9OR19NSU4gKDAtKHVuc2lnbmVkIGxvbmcgbG9uZylQWV9MTE9OR19NSU4pCiAKLS8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIFBZX0xPTkdfTE9ORyBpbnQuICovCisvKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyBsb25nIGxvbmcgaW50LiAqLwogCiBQeU9iamVjdCAqCi1QeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyBpdmFsKQorUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgaXZhbCkKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGFic19pdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB0OyAgLyogdW5zaWduZWQgc28gPj4gZG9lc24ndCBwcm9wYWdhdGUgc2lnbiBiaXQgKi8KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWJzX2l2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHQ7ICAvKiB1bnNpZ25lZCBzbyA+PiBkb2Vzbid0IHByb3BhZ2F0ZSBzaWduIGJpdCAqLwogICAgIGludCBuZGlnaXRzID0gMDsKICAgICBpbnQgbmVnYXRpdmUgPSAwOwogCkBAIC0xMDYxLDExICsxMDUzLDExIEBACiAgICAgaWYgKGl2YWwgPCAwKSB7CiAgICAgICAgIC8qIGF2b2lkIHNpZ25lZCBvdmVyZmxvdyBvbiBuZWdhdGlvbjsgIHNlZSBjb21tZW50cwogICAgICAgICAgICBpbiBQeUxvbmdfRnJvbUxvbmcgYWJvdmUuICovCi0gICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoLTEtaXZhbCkgKyAxOworICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKC0xLWl2YWwpICsgMTsKICAgICAgICAgbmVnYXRpdmUgPSAxOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKWl2YWw7CisgICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZylpdmFsOwogICAgIH0KIAogICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgUHl0aG9uIGRpZ2l0cy4KQEAgLTEwOTAsMTkgKzEwODIsMTkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKIH0KIAotLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgdW5zaWduZWQgUFlfTE9OR19MT05HIGludC4gKi8KKy8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQuICovCiAKIFB5T2JqZWN0ICoKLVB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBQWV9MT05HX0xPTkcgaXZhbCkKK1B5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBsb25nIGxvbmcgaXZhbCkKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHQ7CiAgICAgaW50IG5kaWdpdHMgPSAwOwogCiAgICAgaWYgKGl2YWwgPCBQeUxvbmdfQkFTRSkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpdmFsKTsKICAgICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIFB5dGhvbiBkaWdpdHMuICovCi0gICAgdCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpaXZhbDsKKyAgICB0ID0gKHVuc2lnbmVkIGxvbmcgbG9uZylpdmFsOwogICAgIHdoaWxlICh0KSB7CiAgICAgICAgICsrbmRpZ2l0czsKICAgICAgICAgdCA+Pj0gUHlMb25nX1NISUZUOwpAQCAtMTE5MSwxMSArMTE4MywxMSBAQAogLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdCBvciBhbnkgb2JqZWN0IHRoYXQgaGFzIGFuCiAgICBfX2ludF9fIG1ldGhvZC4gIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KIAotUFlfTE9OR19MT05HCitsb25nIGxvbmcKIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICp2dikKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgUFlfTE9OR19MT05HIGJ5dGVzOworICAgIGxvbmcgbG9uZyBieXRlczsKICAgICBpbnQgcmVzOwogICAgIGludCBkb19kZWNyZWYgPSAwOyAvKiBpZiBuYl9pbnQgd2FzIGNhbGxlZCAqLwogCkBAIC0xMjMzLDMwICsxMjI1LDMwIEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9CiAKLSAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIFBZX0xPTkdfTE9ORyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KKyAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIGxvbmcgbG9uZyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIChQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAobG9uZyBsb25nKS0xOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi0vKiBHZXQgYSBDIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LgorLyogR2V0IGEgQyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdC4KICAgIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KIAotdW5zaWduZWQgUFlfTE9OR19MT05HCit1bnNpZ25lZCBsb25nIGxvbmcKIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYnl0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzOwogICAgIGludCByZXM7CiAKICAgICBpZiAodnYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogICAgIH0KICAgICBpZiAoIVB5TG9uZ19DaGVjayh2dikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKQEAgLTEyNjgsOSArMTI2MCw5IEBACiAgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopdnYsICh1bnNpZ25lZCBjaGFyICopJmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRU9GX0xPTkdfTE9ORywgUFlfTElUVExFX0VORElBTiwgMCk7CiAKLSAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIFBZX0xPTkdfTE9ORyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KKyAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIGxvbmcgbG9uZyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpcmVzOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZylyZXM7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gYnl0ZXM7CiB9CkBAIC0xMjc4LDExICsxMjcwLDExIEBACiAvKiBHZXQgYSBDIHVuc2lnbmVkIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdCwgaWdub3JpbmcgdGhlIGhpZ2ggYml0cy4KICAgIFJldHVybnMgLTEgYW5kIHNldHMgYW4gZXJyb3IgY29uZGl0aW9uIGlmIGFuIGVycm9yIG9jY3Vycy4gKi8KIAotc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZwogX1B5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICp2dikKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGludCBzaWduOwogCkBAIC0xMzA4LDExICsxMzAwLDExIEBACiAgICAgcmV0dXJuIHggKiBzaWduOwogfQogCi11bnNpZ25lZCBQWV9MT05HX0xPTkcKK3Vuc2lnbmVkIGxvbmcgbG9uZwogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKm9wKQogewogICAgIFB5TG9uZ09iamVjdCAqbG87Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogCiAgICAgaWYgKG9wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC0xMzI1LDcgKzEzMTcsNyBAQAogCiAgICAgbG8gPSBfUHlMb25nX0Zyb21OYkludChvcCk7CiAgICAgaWYgKGxvID09IE5VTEwpCi0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKIAogICAgIHZhbCA9IF9QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaygoUHlPYmplY3QgKilsbyk7CiAgICAgUHlfREVDUkVGKGxvKTsKQEAgLTEzNDIsMTMgKzEzMzQsMTMgQEAKICAgIEluIHRoaXMgY2FzZSAqb3ZlcmZsb3cgd2lsbCBiZSAwLgogKi8KIAotUFlfTE9OR19MT05HCitsb25nIGxvbmcKIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKnZ2LCBpbnQgKm92ZXJmbG93KQogewogICAgIC8qIFRoaXMgdmVyc2lvbiBieSBUaW0gUGV0ZXJzICovCiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4LCBwcmV2OwotICAgIFBZX0xPTkdfTE9ORyByZXM7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHgsIHByZXY7CisgICAgbG9uZyBsb25nIHJlczsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ247CiAgICAgaW50IGRvX2RlY3JlZiA9IDA7IC8qIGlmIG5iX2ludCB3YXMgY2FsbGVkICovCkBAIC0xNDAwLDggKzEzOTIsOCBAQAogICAgICAgICAvKiBIYXZlbid0IGxvc3QgYW55IGJpdHMsIGJ1dCBjYXN0aW5nIHRvIGxvbmcgcmVxdWlyZXMgZXh0cmEKICAgICAgICAgICogY2FyZSAoc2VlIGNvbW1lbnQgYWJvdmUpLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKHggPD0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylQWV9MTE9OR19NQVgpIHsKLSAgICAgICAgICAgIHJlcyA9IChQWV9MT05HX0xPTkcpeCAqIHNpZ247CisgICAgICAgIGlmICh4IDw9ICh1bnNpZ25lZCBsb25nIGxvbmcpUFlfTExPTkdfTUFYKSB7CisgICAgICAgICAgICByZXMgPSAobG9uZyBsb25nKXggKiBzaWduOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHNpZ24gPCAwICYmIHggPT0gUFlfQUJTX0xMT05HX01JTikgewogICAgICAgICAgICAgcmVzID0gUFlfTExPTkdfTUlOOwpAQCAtMTQxOCw4ICsxNDEwLDYgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KLQogI2RlZmluZSBDSEVDS19CSU5PUCh2LHcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikgfHwgIVB5TG9uZ19DaGVjayh3KSkgICAgICAgXApAQCAtMTU4MywxMyArMTU3MywxNiBAQAogc3RhdGljIGludAogbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqYWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqYnl0ZXNfd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqYnl0ZXNfc3RyKQogewogICAgIFB5TG9uZ09iamVjdCAqc2NyYXRjaCwgKmE7Ci0gICAgUHlPYmplY3QgKnN0cjsKKyAgICBQeU9iamVjdCAqc3RyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemUsIHN0cmxlbiwgc2l6ZV9hLCBpLCBqOwogICAgIGRpZ2l0ICpwb3V0LCAqcGluLCByZW0sIHRlbnBvdzsKICAgICBpbnQgbmVnYXRpdmU7CisgICAgaW50IGQ7CiAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwogCiAgICAgYSA9IChQeUxvbmdPYmplY3QgKilhYTsKQEAgLTE2MDcsMTUgKzE2MDAsMTcgQEAKIAogICAgICAgIEJ1dCBsb2cyKGEpIDwgc2l6ZV9hICogUHlMb25nX1NISUZULCBhbmQKICAgICAgICBsb2cyKF9QeUxvbmdfREVDSU1BTF9CQVNFKSA9IGxvZzIoMTApICogX1B5TG9uZ19ERUNJTUFMX1NISUZUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKKworICAgICAgICAgc2l6ZV9hICogUHlMb25nX1NISUZUIC8gKDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkgPQorICAgICAgICAgICAgIHNpemVfYSArIHNpemVfYSAvIGQgPCBzaXplX2EgKyBzaXplX2EgLyBmbG9vcihkKSwKKyAgICAgICB3aGVyZSBkID0gKDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkgLworICAgICAgICAgICAgICAgICAoUHlMb25nX1NISUZUIC0gMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKQogICAgICovCi0gICAgaWYgKHNpemVfYSA+IFBZX1NTSVpFX1RfTUFYIC8gUHlMb25nX1NISUZUKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludCB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogdGhlIGV4cHJlc3Npb24gc2l6ZV9hICogUHlMb25nX1NISUZUIGlzIG5vdyBzYWZlIGZyb20gb3ZlcmZsb3cgKi8KLSAgICBzaXplID0gMSArIHNpemVfYSAqIFB5TG9uZ19TSElGVCAvICgzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKTsKKyAgICBkID0gKDMzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSAvCisgICAgICAgICgxMCAqIFB5TG9uZ19TSElGVCAtIDMzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKTsKKyAgICBhc3NlcnQoc2l6ZV9hIDwgUFlfU1NJWkVfVF9NQVgvMik7CisgICAgc2l6ZSA9IDEgKyBzaXplX2EgKyBzaXplX2EgLyBkOwogICAgIHNjcmF0Y2ggPSBfUHlMb25nX05ldyhzaXplKTsKICAgICBpZiAoc2NyYXRjaCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNjYzLDcgKzE2NTgsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOwotICAgICAgICBzdHIgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKmJ5dGVzX3N0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoYnl0ZXNfd3JpdGVyLCAqYnl0ZXNfc3RyLCBzdHJsZW4pOworICAgICAgICBpZiAoKmJ5dGVzX3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9OZXcoc3RybGVuLCAnOScpOwpAQCAtMTY3NCwxMyArMTY3NSw4IEBACiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIH0KIAotI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgV1JJVEVfRElHSVRTKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzdHJsZW47IFwKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHN0cikgKyBzdHJsZW47ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgLyogcG91dFswXSB0aHJvdWdoIHBvdXRbc2l6ZS0yXSBjb250cmlidXRlIGV4YWN0bHkgICAgICAgICAgICBcCiAgICAgICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemUgLSAxOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3MDAsNiArMTY5NiwxNiBAQAogICAgICAgICAvKiBhbmQgc2lnbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJy0nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgV1JJVEVfVU5JQ09ERV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzdHJsZW47IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHN0cikgKyBzdHJsZW47ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgV1JJVEVfRElHSVRTKHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNzA5LDI1ICsxNzE1LDM0IEBACiAgICAgfSB3aGlsZSAoMCkKIAogICAgIC8qIGZpbGwgdGhlIHN0cmluZyByaWdodC10by1sZWZ0ICovCi0gICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgIGNoYXIgKnAgPSAqYnl0ZXNfc3RyICsgc3RybGVuOworICAgICAgICBXUklURV9ESUdJVFMocCk7CisgICAgICAgIGFzc2VydChwID09ICpieXRlc19zdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzEgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMiAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MyKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X1VDUzQgKnA7CiAgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTNCk7CiAgICAgfQogI3VuZGVmIFdSSVRFX0RJR0lUUworI3VuZGVmIFdSSVRFX1VOSUNPREVfRElHSVRTCiAKICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CiAgICAgaWYgKHdyaXRlcikgewogICAgICAgICB3cml0ZXItPnBvcyArPSBzdHJsZW47CiAgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAoKmJ5dGVzX3N0cikgKz0gc3RybGVuOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKICAgICAgICAgKnBfb3V0cHV0ID0gKFB5T2JqZWN0ICopc3RyOwpAQCAtMTczOSw3ICsxNzU0LDcgQEAKIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQogewogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCkgPT0gLTEpCisgICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMLCBOVUxMLCBOVUxMKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC0xNzUxLDEwICsxNzY2LDExIEBACiAKIHN0YXRpYyBpbnQKIGxvbmdfZm9ybWF0X2JpbmFyeShQeU9iamVjdCAqYWEsIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlLAotICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXIgKmJ5dGVzX3dyaXRlciwgY2hhciAqKmJ5dGVzX3N0cikKIHsKICAgICBQeUxvbmdPYmplY3QgKmEgPSAoUHlMb25nT2JqZWN0ICopYWE7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgUHlPYmplY3QgKnYgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3o7CiAgICAgUHlfc3NpemVfdCBzaXplX2E7CiAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwpAQCAtMTgxMSw3ICsxODI3LDExIEBACiAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzeiwgJ3gnKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKLSAgICAgICAgdiA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAqYnl0ZXNfc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShieXRlc193cml0ZXIsICpieXRlc19zdHIsIHN6KTsKKyAgICAgICAgaWYgKCpieXRlc19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHN6LCAneCcpOwpAQCAtMTgyMCwxMyArMTg0MCw4IEBACiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKICAgICB9CiAKLSNkZWZpbmUgV1JJVEVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgV1JJVEVfRElHSVRTKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoc2l6ZV9hID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKi0tcCA9ICcwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTg2MSwzMCArMTg3Niw1MCBAQAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgV1JJVEVfVU5JQ09ERV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUklURV9ESUdJVFMocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcykpOyBcCiAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICBjaGFyICpwID0gKmJ5dGVzX3N0ciArIHN6OworICAgICAgICBXUklURV9ESUdJVFMocCk7CisgICAgICAgIGFzc2VydChwID09ICpieXRlc19zdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzEgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMiAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MyKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X1VDUzQgKnA7CiAgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTNCk7CiAgICAgfQogI3VuZGVmIFdSSVRFX0RJR0lUUworI3VuZGVmIFdSSVRFX1VOSUNPREVfRElHSVRTCiAKICAgICBpZiAod3JpdGVyKSB7CiAgICAgICAgIHdyaXRlci0+cG9zICs9IHN6OwogICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKCpieXRlc19zdHIpICs9IHN6OworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CiAgICAgICAgICpwX291dHB1dCA9IHY7CkBAIC0xODk4LDkgKzE5MzMsOSBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgaW50IGVycjsKICAgICBpZiAoYmFzZSA9PSAxMCkKLSAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwpOworICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMKTsKKyAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKGVyciA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHN0cjsKQEAgLTE5MTIsOSArMTk0NywzMSBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCiB7CiAgICAgaWYgKGJhc2UgPT0gMTApCi0gICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworfQorCitjaGFyKgorX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcihfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlKQoreworICAgIGNoYXIgKnN0cjI7CisgICAgaW50IHJlczsKKyAgICBzdHIyID0gc3RyOworICAgIGlmIChiYXNlID09IDEwKQorICAgICAgICByZXMgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIsICZzdHIyKTsKKyAgICBlbHNlCisgICAgICAgIHJlcyA9IGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwgJnN0cjIpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoc3RyMiAhPSBOVUxMKTsKKyAgICByZXR1cm4gc3RyMjsKIH0KIAogLyogVGFibGUgb2YgZGlnaXQgdmFsdWVzIGZvciA4LWJpdCBzdHJpbmcgLT4gaW50ZWdlciBjb252ZXJzaW9uLgpAQCAtMTk0OCwxMiArMjAwNSwxOCBAQAogICogbm9uLWRpZ2l0ICh3aGljaCBtYXkgYmUgKnN0ciEpLiAgQSBub3JtYWxpemVkIGludCBpcyByZXR1cm5lZC4KICAqIFRoZSBwb2ludCB0byB0aGlzIHJvdXRpbmUgaXMgdGhhdCBpdCB0YWtlcyB0aW1lIGxpbmVhciBpbiB0aGUgbnVtYmVyIG9mCiAgKiBzdHJpbmcgY2hhcmFjdGVycy4KKyAqCisgKiBSZXR1cm4gdmFsdWVzOgorICogICAtMSBvbiBzeW50YXggZXJyb3IgKGV4Y2VwdGlvbiBuZWVkcyB0byBiZSBzZXQsICpyZXMgaXMgdW50b3VjaGVkKQorICogICAwIGVsc2UgKGV4Y2VwdGlvbiBtYXkgYmUgc2V0LCBpbiB0aGF0IGNhc2UgKnJlcyBpcyBzZXQgdG8gTlVMTCkKICAqLwotc3RhdGljIFB5TG9uZ09iamVjdCAqCi1sb25nX2Zyb21fYmluYXJ5X2Jhc2UoY29uc3QgY2hhciAqKnN0ciwgaW50IGJhc2UpCitzdGF0aWMgaW50Citsb25nX2Zyb21fYmluYXJ5X2Jhc2UoY29uc3QgY2hhciAqKnN0ciwgaW50IGJhc2UsIFB5TG9uZ09iamVjdCAqKnJlcykKIHsKICAgICBjb25zdCBjaGFyICpwID0gKnN0cjsKICAgICBjb25zdCBjaGFyICpzdGFydCA9IHA7CisgICAgY2hhciBwcmV2ID0gMDsKKyAgICBpbnQgZGlnaXRzID0gMDsKICAgICBpbnQgYml0c19wZXJfY2hhcjsKICAgICBQeV9zc2l6ZV90IG47CiAgICAgUHlMb25nT2JqZWN0ICp6OwpAQCAtMTk2MywyMyArMjAyNiw0MyBAQAogCiAgICAgYXNzZXJ0KGJhc2UgPj0gMiAmJiBiYXNlIDw9IDMyICYmIChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCk7CiAgICAgbiA9IGJhc2U7Ci0gICAgZm9yIChiaXRzX3Blcl9jaGFyID0gLTE7IG47ICsrYml0c19wZXJfY2hhcikKKyAgICBmb3IgKGJpdHNfcGVyX2NoYXIgPSAtMTsgbjsgKytiaXRzX3Blcl9jaGFyKSB7CiAgICAgICAgIG4gPj49IDE7Ci0gICAgLyogbiA8LSB0b3RhbCAjIG9mIGJpdHMgbmVlZGVkLCB3aGlsZSBzZXR0aW5nIHAgdG8gZW5kLW9mLXN0cmluZyAqLwotICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXSA8IGJhc2UpCisgICAgfQorICAgIC8qIGNvdW50IGRpZ2l0cyBhbmQgc2V0IHAgdG8gZW5kLW9mLXN0cmluZyAqLworICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXSA8IGJhc2UgfHwgKnAgPT0gJ18nKSB7CisgICAgICAgIGlmICgqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICAgICAgICAgICpzdHIgPSBwIC0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICArK2RpZ2l0czsKKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gKnA7CiAgICAgICAgICsrcDsKKyAgICB9CisgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgIC8qIFRyYWlsaW5nIHVuZGVyc2NvcmUgbm90IGFsbG93ZWQuICovCisgICAgICAgICpzdHIgPSBwIC0gMTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgICpzdHIgPSBwOwogICAgIC8qIG4gPC0gIyBvZiBQeXRob24gZGlnaXRzIG5lZWRlZCwgPSBjZWlsaW5nKG4vUHlMb25nX1NISUZUKS4gKi8KLSAgICBuID0gKHAgLSBzdGFydCkgKiBiaXRzX3Blcl9jaGFyICsgUHlMb25nX1NISUZUIC0gMTsKKyAgICBuID0gZGlnaXRzICogYml0c19wZXJfY2hhciArIFB5TG9uZ19TSElGVCAtIDE7CiAgICAgaWYgKG4gLyBiaXRzX3Blcl9jaGFyIDwgcCAtIHN0YXJ0KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCBzdHJpbmcgdG9vIGxhcmdlIHRvIGNvbnZlcnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICpyZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbiA9IG4gLyBQeUxvbmdfU0hJRlQ7CiAgICAgeiA9IF9QeUxvbmdfTmV3KG4pOwotICAgIGlmICh6ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh6ID09IE5VTEwpIHsKKyAgICAgICAgKnJlcyA9IE5VTEw7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICAvKiBSZWFkIHN0cmluZyBmcm9tIHJpZ2h0LCBhbmQgZmlsbCBpbiBpbnQgZnJvbSBsZWZ0OyBpLmUuLAogICAgICAqIGZyb20gbGVhc3QgdG8gbW9zdCBzaWduaWZpY2FudCBpbiBib3RoLgogICAgICAqLwpAQCAtMTk4Nyw3ICsyMDcwLDExIEBACiAgICAgYml0c19pbl9hY2N1bSA9IDA7CiAgICAgcGRpZ2l0ID0gei0+b2JfZGlnaXQ7CiAgICAgd2hpbGUgKC0tcCA+PSBzdGFydCkgewotICAgICAgICBpbnQgayA9IChpbnQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpwKV07CisgICAgICAgIGludCBrOworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBrID0gKGludClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXTsKICAgICAgICAgYXNzZXJ0KGsgPj0gMCAmJiBrIDwgYmFzZSk7CiAgICAgICAgIGFjY3VtIHw9ICh0d29kaWdpdHMpayA8PCBiaXRzX2luX2FjY3VtOwogICAgICAgICBiaXRzX2luX2FjY3VtICs9IGJpdHNfcGVyX2NoYXI7CkBAIC0yMDA2LDcgKzIwOTMsOCBAQAogICAgIH0KICAgICB3aGlsZSAocGRpZ2l0IC0gei0+b2JfZGlnaXQgPCBuKQogICAgICAgICAqcGRpZ2l0KysgPSAwOwotICAgIHJldHVybiBsb25nX25vcm1hbGl6ZSh6KTsKKyAgICAqcmVzID0gbG9uZ19ub3JtYWxpemUoeik7CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIFBhcnNlcyBhbiBpbnQgZnJvbSBhIGJ5dGVzdHJpbmcuIExlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2lsbCBiZQpAQCAtMjAzMSwyMyArMjExOSwyOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImludCgpIGFyZyAyIG11c3QgYmUgPj0gMiBhbmQgPD0gMzYiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHdoaWxlICgqc3RyICE9ICdcMCcgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpCisgICAgd2hpbGUgKCpzdHIgIT0gJ1wwJyAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkgewogICAgICAgICBzdHIrKzsKLSAgICBpZiAoKnN0ciA9PSAnKycpCisgICAgfQorICAgIGlmICgqc3RyID09ICcrJykgewogICAgICAgICArK3N0cjsKKyAgICB9CiAgICAgZWxzZSBpZiAoKnN0ciA9PSAnLScpIHsKICAgICAgICAgKytzdHI7CiAgICAgICAgIHNpZ24gPSAtMTsKICAgICB9CiAgICAgaWYgKGJhc2UgPT0gMCkgewotICAgICAgICBpZiAoc3RyWzBdICE9ICcwJykKKyAgICAgICAgaWYgKHN0clswXSAhPSAnMCcpIHsKICAgICAgICAgICAgIGJhc2UgPSAxMDsKLSAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAneCcgfHwgc3RyWzFdID09ICdYJykgewogICAgICAgICAgICAgYmFzZSA9IDE2OwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdvJyB8fCBzdHJbMV0gPT0gJ08nKSB7CiAgICAgICAgICAgICBiYXNlID0gODsKLSAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykgewogICAgICAgICAgICAgYmFzZSA9IDI7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiAib2xkIiAoQy1zdHlsZSkgb2N0YWwgbGl0ZXJhbCwgbm93IGludmFsaWQuCiAgICAgICAgICAgICAgICBpdCBtaWdodCBzdGlsbCBiZSB6ZXJvIHRob3VnaCAqLwpAQCAtMjA1OCwxMiArMjE1MiwyNiBAQAogICAgIGlmIChzdHJbMF0gPT0gJzAnICYmCiAgICAgICAgICgoYmFzZSA9PSAxNiAmJiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKSkgfHwKICAgICAgICAgIChiYXNlID09IDggICYmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpKSB8fAotICAgICAgICAgKGJhc2UgPT0gMiAgJiYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykpKSkKKyAgICAgICAgIChiYXNlID09IDIgICYmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpKSkpIHsKICAgICAgICAgc3RyICs9IDI7CisgICAgICAgIC8qIE9uZSB1bmRlcnNjb3JlIGFsbG93ZWQgaGVyZS4gKi8KKyAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICArK3N0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RyWzBdID09ICdfJykgeworCSAgICAvKiBNYXkgbm90IHN0YXJ0IHdpdGggdW5kZXJzY29yZXMuICovCisJICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKICAgICBzdGFydCA9IHN0cjsKLSAgICBpZiAoKGJhc2UgJiAoYmFzZSAtIDEpKSA9PSAwKQotICAgICAgICB6ID0gbG9uZ19mcm9tX2JpbmFyeV9iYXNlKCZzdHIsIGJhc2UpOworICAgIGlmICgoYmFzZSAmIChiYXNlIC0gMSkpID09IDApIHsKKyAgICAgICAgaW50IHJlcyA9IGxvbmdfZnJvbV9iaW5hcnlfYmFzZSgmc3RyLCBiYXNlLCAmeik7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICAvKiBTeW50YXggZXJyb3IuICovCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICB9CiAgICAgZWxzZSB7CiAvKioqCiBCaW5hcnkgYmFzZXMgY2FuIGJlIGNvbnZlcnRlZCBpbiB0aW1lIGxpbmVhciBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cywgYmVjYXVzZQpAQCAtMjE1MiwxMSArMjI2MCwxMyBAQAogKioqLwogICAgICAgICB0d29kaWdpdHMgYzsgICAgICAgICAgIC8qIGN1cnJlbnQgaW5wdXQgY2hhcmFjdGVyICovCiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZV96OworICAgICAgICBpbnQgZGlnaXRzID0gMDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGludCBjb252d2lkdGg7CiAgICAgICAgIHR3b2RpZ2l0cyBjb252bXVsdG1heCwgY29udm11bHQ7CiAgICAgICAgIGRpZ2l0ICpweiwgKnB6c3RvcDsKLSAgICAgICAgY29uc3QgY2hhciogc2NhbjsKKyAgICAgICAgY29uc3QgY2hhciAqc2NhbiwgKmxhc3RkaWdpdDsKKyAgICAgICAgY2hhciBwcmV2ID0gMDsKIAogICAgICAgICBzdGF0aWMgZG91YmxlIGxvZ19iYXNlX0JBU0VbMzddID0gezAuMGUwLH07CiAgICAgICAgIHN0YXRpYyBpbnQgY29udndpZHRoX2Jhc2VbMzddID0gezAsfTsKQEAgLTIxNzAsOCArMjI4MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZygoZG91YmxlKVB5TG9uZ19CQVNFKSk7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgdHdvZGlnaXRzIG5leHQgPSBjb252bWF4ICogYmFzZTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dCA+IFB5TG9uZ19CQVNFKQorICAgICAgICAgICAgICAgIGlmIChuZXh0ID4gUHlMb25nX0JBU0UpIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnZtYXggPSBuZXh0OwogICAgICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIH0KQEAgLTIxODIsMjEgKzIyOTMsNDMgQEAKIAogICAgICAgICAvKiBGaW5kIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG9mIG51bWVyaWMgY2hhcmFjdGVycy4gKi8KICAgICAgICAgc2NhbiA9IHN0cjsKLSAgICAgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc2NhbildIDwgYmFzZSkKKyAgICAgICAgbGFzdGRpZ2l0ID0gc3RyOworCisgICAgICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnNjYW4pXSA8IGJhc2UgfHwgKnNjYW4gPT0gJ18nKSB7CisgICAgICAgICAgICBpZiAoKnNjYW4gPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9ubHkgb25lIHVuZGVyc2NvcmUgYWxsb3dlZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgc3RyID0gbGFzdGRpZ2l0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICsrZGlnaXRzOworICAgICAgICAgICAgICAgIGxhc3RkaWdpdCA9IHNjYW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2ID0gKnNjYW47CiAgICAgICAgICAgICArK3NjYW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAvKiBUcmFpbGluZyB1bmRlcnNjb3JlIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAgICAgLyogU2V0IGVycm9yIHBvaW50ZXIgdG8gZmlyc3QgdW5kZXJzY29yZS4gKi8KKyAgICAgICAgICAgIHN0ciA9IGxhc3RkaWdpdCArIDE7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KIAogICAgICAgICAvKiBDcmVhdGUgYW4gaW50IG9iamVjdCB0aGF0IGNhbiBjb250YWluIHRoZSBsYXJnZXN0IHBvc3NpYmxlCiAgICAgICAgICAqIGludGVnZXIgd2l0aCB0aGlzIGJhc2UgYW5kIGxlbmd0aC4gIE5vdGUgdGhhdCB0aGVyZSdzIG5vCiAgICAgICAgICAqIG5lZWQgdG8gaW5pdGlhbGl6ZSB6LT5vYl9kaWdpdCAtLSBubyBzbG90IGlzIHJlYWQgdXAgYmVmb3JlCiAgICAgICAgICAqIGJlaW5nIHN0b3JlZCBpbnRvLgogICAgICAgICAgKi8KLSAgICAgICAgc2l6ZV96ID0gKFB5X3NzaXplX3QpKChzY2FuIC0gc3RyKSAqIGxvZ19iYXNlX0JBU0VbYmFzZV0pICsgMTsKKyAgICAgICAgc2l6ZV96ID0gKFB5X3NzaXplX3QpKGRpZ2l0cyAqIGxvZ19iYXNlX0JBU0VbYmFzZV0pICsgMTsKICAgICAgICAgLyogVW5jb21tZW50IG5leHQgbGluZSB0byB0ZXN0IGV4Y2VlZGluZ2x5IHJhcmUgY29weSBjb2RlICovCiAgICAgICAgIC8qIHNpemVfeiA9IDE7ICovCiAgICAgICAgIGFzc2VydChzaXplX3ogPiAwKTsKICAgICAgICAgeiA9IF9QeUxvbmdfTmV3KHNpemVfeik7Ci0gICAgICAgIGlmICh6ID09IE5VTEwpCisgICAgICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIFB5X1NJWkUoeikgPSAwOwogCiAgICAgICAgIC8qIGBjb252d2lkdGhgIGNvbnNlY3V0aXZlIGlucHV0IGRpZ2l0cyBhcmUgdHJlYXRlZCBhcyBhIHNpbmdsZQpAQCAtMjIwNyw5ICsyMzQwLDE3IEBACiAKICAgICAgICAgLyogV29yayA7LSkgKi8KICAgICAgICAgd2hpbGUgKHN0ciA8IHNjYW4pIHsKKyAgICAgICAgICAgIGlmICgqc3RyID09ICdfJykgeworICAgICAgICAgICAgICAgIHN0cisrOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogZ3JhYiB1cCB0byBjb252d2lkdGggZGlnaXRzIGZyb20gdGhlIGlucHV0IHN0cmluZyAqLwogICAgICAgICAgICAgYyA9IChkaWdpdClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnN0cisrKV07Ci0gICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgY29udndpZHRoICYmIHN0ciAhPSBzY2FuOyArK2ksICsrc3RyKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgY29udndpZHRoICYmIHN0ciAhPSBzY2FuOyArK3N0cikgeworICAgICAgICAgICAgICAgIGlmICgqc3RyID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIGMgPSAodHdvZGlnaXRzKShjICogIGJhc2UgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc3RyKV0pOwogICAgICAgICAgICAgICAgIGFzc2VydChjIDwgUHlMb25nX0JBU0UpOwpAQCAtMjIyMSw4ICsyMzYyLDkgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKGkgIT0gY29udndpZHRoKSB7CiAgICAgICAgICAgICAgICAgY29udm11bHQgPSBiYXNlOwotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA+IDE7IC0taSkKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPiAxOyAtLWkpIHsKICAgICAgICAgICAgICAgICAgICAgY29udm11bHQgKj0gYmFzZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIE11bHRpcGx5IHogYnkgY29udm11bHQsIGFuZCBhZGQgYy4gKi8KQEAgLTIyNjAsNDEgKzI0MDIsNTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoeiA9PSBOVUxMKQorICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChlcnJvcl9pZl9ub256ZXJvKSB7CiAgICAgICAgIC8qIHJlc2V0IHRoZSBiYXNlIHRvIDAsIGVsc2UgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlCiAgICAgICAgICAgIGRvZXNuJ3QgbWFrZSB0b28gbXVjaCBzZW5zZSAqLwogICAgICAgICBiYXNlID0gMDsKLSAgICAgICAgaWYgKFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgaWYgKFB5X1NJWkUoeikgIT0gMCkgewogICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CiAgICAgICAgIC8qIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIG90aGVyIHByb2JsZW1zLCB0aGVyZWZvcmUgYmFzZQogICAgICAgICAgICByZW1haW5zIHplcm8gaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uICovCiAgICAgfQotICAgIGlmIChzdHIgPT0gc3RhcnQpCisgICAgaWYgKHN0ciA9PSBzdGFydCkgewogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpZ24gPCAwKQorICAgIH0KKyAgICBpZiAoc2lnbiA8IDApIHsKICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7Ci0gICAgd2hpbGUgKCpzdHIgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpCisgICAgfQorICAgIHdoaWxlICgqc3RyICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKSB7CiAgICAgICAgIHN0cisrOwotICAgIGlmICgqc3RyICE9ICdcMCcpCisgICAgfQorICAgIGlmICgqc3RyICE9ICdcMCcpIHsKICAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KICAgICBsb25nX25vcm1hbGl6ZSh6KTsKICAgICB6ID0gbWF5YmVfc21hbGxfbG9uZyh6KTsKLSAgICBpZiAoeiA9PSBOVUxMKQorICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHBlbmQgIT0gTlVMTCkKKyAgICB9CisgICAgaWYgKHBlbmQgIT0gTlVMTCkgewogICAgICAgICAqcGVuZCA9IChjaGFyICopc3RyOworICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHo7CiAKICAgb25FcnJvcjoKLSAgICBpZiAocGVuZCAhPSBOVUxMKQorICAgIGlmIChwZW5kICE9IE5VTEwpIHsKICAgICAgICAgKnBlbmQgPSAoY2hhciAqKXN0cjsKKyAgICB9CiAgICAgUHlfWERFQ1JFRih6KTsKICAgICBzbGVuID0gc3RybGVuKG9yaWdfc3RyKSA8IDIwMCA/IHN0cmxlbihvcmlnX3N0cikgOiAyMDA7CiAgICAgc3Ryb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKG9yaWdfc3RyLCBzbGVuKTsKLSAgICBpZiAoc3Ryb2JqID09IE5VTEwpCisgICAgaWYgKHN0cm9iaiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgImludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlICVkOiAlLjIwMFIiLAogICAgICAgICAgICAgICAgICBiYXNlLCBzdHJvYmopOwpAQCAtMjM5NSw4ICsyNTQ3LDExIEBACiAgICAgICAgICpwZGl2ID0gKFB5TG9uZ09iamVjdCopUHlMb25nX0Zyb21Mb25nKDApOwogICAgICAgICBpZiAoKnBkaXYgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfSU5DUkVGKGEpOwotICAgICAgICAqcHJlbSA9IChQeUxvbmdPYmplY3QgKikgYTsKKyAgICAgICAgKnByZW0gPSAoUHlMb25nT2JqZWN0ICopbG9uZ19sb25nKChQeU9iamVjdCAqKWEpOworICAgICAgICBpZiAoKnByZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoKnBkaXYpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoc2l6ZV9iID09IDEpIHsKQEAgLTI3MDYsNiArMjg2MSwxMyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYW4gaW50ZWdlciBpcyByZXF1aXJlZCIpOwogICAgICAgICByZXR1cm4gLTEuMDsKICAgICB9CisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA8PSAxKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aDsgc2luZ2xlIGRpZ2l0IGxvbmcgKDMxIGJpdHMpIHdpbGwgY2FzdCBzYWZlbHkKKyAgICAgICAgICAgdG8gZG91YmxlLiAgVGhpcyBpbXByb3ZlcyBwZXJmb3JtYW5jZSBvZiBGUC9sb25nIG9wZXJhdGlvbnMKKyAgICAgICAgICAgYnkgMjAlLgorICAgICAgICAqLworICAgICAgICByZXR1cm4gKGRvdWJsZSlNRURJVU1fVkFMVUUoKFB5TG9uZ09iamVjdCAqKXYpOworICAgIH0KICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMjkzMCw5ICszMDkyLDcgQEAKICAgICB9CiAgICAgYXNzZXJ0KGJvcnJvdyA9PSAwKTsKICAgICBpZiAoc2lnbiA8IDApIHsKLSAgICAgICAgX1B5TG9uZ19OZWdhdGUoJnopOwotICAgICAgICBpZiAoeiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X1NJWkUoeikgPSAtUHlfU0laRSh6KTsKICAgICB9CiAgICAgcmV0dXJuIGxvbmdfbm9ybWFsaXplKHopOwogfQpAQCAtMjk1Miw4ICszMTEyLDE0IEBACiAgICAgaWYgKFB5X1NJWkUoYSkgPCAwKSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgewogICAgICAgICAgICAgeiA9IHhfYWRkKGEsIGIpOwotICAgICAgICAgICAgaWYgKHogIT0gTlVMTCAmJiBQeV9TSVpFKHopICE9IDApCisgICAgICAgICAgICBpZiAoeiAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogeF9hZGQgcmVjZWl2ZWQgYXQgbGVhc3Qgb25lIG11bHRpcGxlLWRpZ2l0IGludCwKKyAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyB6IG11c3QgYmUgYSBtdWx0aXBsZS1kaWdpdCBpbnQuCisgICAgICAgICAgICAgICAgICAgVGhhdCBhbHNvIG1lYW5zIHogaXMgbm90IGFuIGVsZW1lbnQgb2YKKyAgICAgICAgICAgICAgICAgICBzbWFsbF9pbnRzLCBzbyBuZWdhdGluZyBpdCBpbi1wbGFjZSBpcyBzYWZlLiAqLworICAgICAgICAgICAgICAgIGFzc2VydChQeV9SRUZDTlQoeikgPT0gMSk7CiAgICAgICAgICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfc3ViKGIsIGEpOwpAQCAtMjk4NCw4ICszMTUwLDEwIEBACiAgICAgICAgICAgICB6ID0geF9zdWIoYSwgYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHogPSB4X2FkZChhLCBiKTsKLSAgICAgICAgaWYgKHogIT0gTlVMTCAmJiBQeV9TSVpFKHopICE9IDApCisgICAgICAgIGlmICh6ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChQeV9TSVpFKHopID09IDAgfHwgUHlfUkVGQ05UKHopID09IDEpOwogICAgICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGIpIDwgMCkKQEAgLTM0MDksMTcgKzM1NzcsNyBAQAogICAgIC8qIGZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IG11bHRpcGxpY2F0aW9uICovCiAgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA8PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CiAgICAgICAgIHN0d29kaWdpdHMgdiA9IChzdHdvZGlnaXRzKShNRURJVU1fVkFMVUUoYSkpICogTUVESVVNX1ZBTFVFKGIpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdik7Ci0jZWxzZQotICAgICAgICAvKiBpZiB3ZSBkb24ndCBoYXZlIGxvbmcgbG9uZyB0aGVuIHdlJ3JlIGFsbW9zdCBjZXJ0YWlubHkKLSAgICAgICAgICAgdXNpbmcgMTUtYml0IGRpZ2l0cywgc28gdiB3aWxsIGZpdCBpbiBhIGxvbmcuICBJbiB0aGUKLSAgICAgICAgICAgdW5saWtlbHkgZXZlbnQgdGhhdCB3ZSdyZSB1c2luZyAzMC1iaXQgZGlnaXRzIG9uIGEgcGxhdGZvcm0KLSAgICAgICAgICAgd2l0aG91dCBsb25nIGxvbmcsIGEgbGFyZ2UgdiB3aWxsIGp1c3QgY2F1c2UgdXMgdG8gZmFsbAotICAgICAgICAgICB0aHJvdWdoIHRvIHRoZSBnZW5lcmFsIG11bHRpcGxpY2F0aW9uIGNvZGUgYmVsb3cuICovCi0gICAgICAgIGlmICh2ID49IExPTkdfTUlOICYmIHYgPD0gTE9OR19NQVgpCi0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXYpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpdik7CiAgICAgfQogCiAgICAgeiA9IGtfbXVsKGEsIGIpOwpAQCAtMzQzMiw2ICszNTkwLDUyIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXo7CiB9CiAKKy8qIEZhc3QgbW9kdWxvIGRpdmlzaW9uIGZvciBzaW5nbGUtZGlnaXQgbG9uZ3MuICovCitzdGF0aWMgUHlPYmplY3QgKgorZmFzdF9tb2QoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCit7CisgICAgc2RpZ2l0IGxlZnQgPSBhLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgcmlnaHQgPSBiLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgbW9kOworCisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxKTsKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYikpID09IDEpOworCisgICAgaWYgKFB5X1NJWkUoYSkgPT0gUHlfU0laRShiKSkgeworICAgICAgICAvKiAnYScgYW5kICdiJyBoYXZlIHRoZSBzYW1lIHNpZ24uICovCisgICAgICAgIG1vZCA9IGxlZnQgJSByaWdodDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEVpdGhlciAnYScgb3IgJ2InIGlzIG5lZ2F0aXZlLiAqLworICAgICAgICBtb2QgPSByaWdodCAtIDEgLSAobGVmdCAtIDEpICUgcmlnaHQ7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtb2QgKiAoc2RpZ2l0KVB5X1NJWkUoYikpOworfQorCisvKiBGYXN0IGZsb29yIGRpdmlzaW9uIGZvciBzaW5nbGUtZGlnaXQgbG9uZ3MuICovCitzdGF0aWMgUHlPYmplY3QgKgorZmFzdF9mbG9vcl9kaXYoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCit7CisgICAgc2RpZ2l0IGxlZnQgPSBhLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgcmlnaHQgPSBiLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgZGl2OworCisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxKTsKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYikpID09IDEpOworCisgICAgaWYgKFB5X1NJWkUoYSkgPT0gUHlfU0laRShiKSkgeworICAgICAgICAvKiAnYScgYW5kICdiJyBoYXZlIHRoZSBzYW1lIHNpZ24uICovCisgICAgICAgIGRpdiA9IGxlZnQgLyByaWdodDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEVpdGhlciAnYScgb3IgJ2InIGlzIG5lZ2F0aXZlLiAqLworICAgICAgICBkaXYgPSAtMSAtIChsZWZ0IC0gMSkgLyByaWdodDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGRpdik7Cit9CisKIC8qIFRoZSAvIGFuZCAlIG9wZXJhdG9ycyBhcmUgbm93IGRlZmluZWQgaW4gdGVybXMgb2YgZGl2bW9kKCkuCiAgICBUaGUgZXhwcmVzc2lvbiBhIG1vZCBiIGhhcyB0aGUgdmFsdWUgYSAtIGIqZmxvb3IoYS9iKS4KICAgIFRoZSBsb25nX2RpdnJlbSBmdW5jdGlvbiBnaXZlcyB0aGUgcmVtYWluZGVyIGFmdGVyIGRpdmlzaW9uIG9mCkBAIC0zNDU5LDYgKzM2NjMsMzAgQEAKIHsKICAgICBQeUxvbmdPYmplY3QgKmRpdiwgKm1vZDsKIAorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRSh3KSkgPT0gMSkgeworICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHNpbmdsZS1kaWdpdCBsb25ncyAqLworICAgICAgICBkaXYgPSBOVUxMOworICAgICAgICBpZiAocGRpdiAhPSBOVUxMKSB7CisgICAgICAgICAgICBkaXYgPSAoUHlMb25nT2JqZWN0ICopZmFzdF9mbG9vcl9kaXYodiwgdyk7CisgICAgICAgICAgICBpZiAoZGl2ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBtb2QgIT0gTlVMTCkgeworICAgICAgICAgICAgbW9kID0gKFB5TG9uZ09iamVjdCAqKWZhc3RfbW9kKHYsIHcpOworICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihkaXYpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpwbW9kID0gbW9kOworICAgICAgICB9CisgICAgICAgIGlmIChwZGl2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFdlIG9ubHkgd2FudCB0byBzZXQgYCpwZGl2YCB3aGVuIGAqcG1vZGAgaXMKKyAgICAgICAgICAgICAgIHNldCBzdWNjZXNzZnVsbHkuICovCisgICAgICAgICAgICAqcGRpdiA9IGRpdjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKGxvbmdfZGl2cmVtKHYsIHcsICZkaXYsICZtb2QpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICgoUHlfU0laRShtb2QpIDwgMCAmJiBQeV9TSVpFKHcpID4gMCkgfHwKQEAgLTM1MDMsNiArMzczMSwxMSBAQAogICAgIFB5TG9uZ09iamVjdCAqZGl2OwogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CisKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpID09IDEpIHsKKyAgICAgICAgcmV0dXJuIGZhc3RfZmxvb3JfZGl2KChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIpOworICAgIH0KKwogICAgIGlmIChsX2Rpdm1vZCgoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliLCAmZGl2LCBOVUxMKSA8IDApCiAgICAgICAgIGRpdiA9IE5VTEw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRpdjsKQEAgLTM3NDIsOSArMzk3NSw5IEBACiAgICAgLyogUm91bmQgYnkgZGlyZWN0bHkgbW9kaWZ5aW5nIHRoZSBsb3cgZGlnaXQgb2YgeC4gKi8KICAgICBtYXNrID0gKGRpZ2l0KTEgPDwgKGV4dHJhX2JpdHMgLSAxKTsKICAgICBsb3cgPSB4LT5vYl9kaWdpdFswXSB8IGluZXhhY3Q7Ci0gICAgaWYgKGxvdyAmIG1hc2sgJiYgbG93ICYgKDMqbWFzay0xKSkKKyAgICBpZiAoKGxvdyAmIG1hc2spICYmIChsb3cgJiAoM1UqbWFzay0xVSkpKQogICAgICAgICBsb3cgKz0gbWFzazsKLSAgICB4LT5vYl9kaWdpdFswXSA9IGxvdyAmIH4obWFzay0xVSk7CisgICAgeC0+b2JfZGlnaXRbMF0gPSBsb3cgJiB+KDJVKm1hc2stMVUpOwogCiAgICAgLyogQ29udmVydCB4IHRvIGEgZG91YmxlIGR4OyB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKi8KICAgICBkeCA9IHgtPm9iX2RpZ2l0Wy0teF9zaXplXTsKQEAgLTM3NzgsNiArNDAxMSwxMCBAQAogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpID09IDEpIHsKKyAgICAgICAgcmV0dXJuIGZhc3RfbW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIpOworICAgIH0KKwogICAgIGlmIChsX2Rpdm1vZCgoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliLCBOVUxMLCAmbW9kKSA8IDApCiAgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1vZDsKQEAgLTQwMTIsOCArNDI0OSwxMCBAQAogICAgIFB5X0RFQ1JFRih3KTsKICAgICBpZiAoeCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9TSVpFKHgpID0gLShQeV9TSVpFKHgpKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbWF5YmVfc21hbGxfbG9uZyh4KTsKKyAgICBfUHlMb25nX05lZ2F0ZSgmeCk7CisgICAgLyogTm8gbmVlZCBmb3IgbWF5YmVfc21hbGxfbG9uZyBoZXJlLCBzaW5jZSBhbnkgc21hbGwKKyAgICAgICBsb25ncyB3aWxsIGhhdmUgYmVlbiBjYXVnaHQgaW4gdGhlIFB5X1NJWkUgPD0gMSBmYXN0IHBhdGguICovCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXg7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00MTE4LDYgKzQzNTcsMTEgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBzaGlmdCBjb3VudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgfQorCiAgICAgLyogd29yZHNoaWZ0LCByZW1zaGlmdCA9IGRpdm1vZChzaGlmdGJ5LCBQeUxvbmdfU0hJRlQpICovCiAgICAgd29yZHNoaWZ0ID0gc2hpZnRieSAvIFB5TG9uZ19TSElGVDsKICAgICByZW1zaGlmdCAgPSBzaGlmdGJ5IC0gd29yZHNoaWZ0ICogUHlMb25nX1NISUZUOwpAQCAtNDUwMiw3ICs0NzQ2LDcgQEAKICAgICAvKiBhIGZpdHMgaW50byBhIGxvbmcsIHNvIGIgbXVzdCB0b28gKi8KICAgICB4ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKilhKTsKICAgICB5ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKiliKTsKLSNlbGlmIGRlZmluZWQoUFlfTE9OR19MT05HKSAmJiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAorI2VsaWYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYSk7CiAgICAgeSA9IFB5TG9uZ19Bc0xvbmdMb25nKChQeU9iamVjdCAqKWIpOwogI2Vsc2UKQEAgLTQ1MjEsNyArNDc2NSw3IEBACiAgICAgfQogI2lmIExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHgpOwotI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisjZWxpZiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwogI2Vsc2UKICMgZXJyb3IgIl9QeUxvbmdfR0NEIgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggMTAxNjJjYi4uNDI4ZDgzYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgfQogCiAKLVB5X0xPQ0FMX0lOTElORShfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopCitzdGF0aWMgaW5saW5lIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKgogbWJ1Zl9hbGxvYyh2b2lkKQogewogICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CkBAIC0yNDMsNyArMjQzLDcgQEAKICNkZWZpbmUgSEFWRV9TVUJPRkZTRVRTX0lOX0xBU1RfRElNKHZpZXcpIFwKICAgICAodmlldy0+c3Vib2Zmc2V0cyAmJiB2aWV3LT5zdWJvZmZzZXRzW2Rlc3QtPm5kaW0tMV0gPj0gMCkKIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBsYXN0X2RpbV9pc19jb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPiAwICYmIHNyYy0+bmRpbSA+IDApOwpAQCAtMjU5LDcgKzI1OSw3IEBACiAgICBhc3NpZ25tZW50cywgd2hlcmUgdGhlIGx2YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGhhdmUgYSBzaW5nbGUgY2hhcmFjdGVyCiAgICBmb3JtYXQuIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRoYXQgY291bGQgYmUgcmV3cml0dGVuIChpZiBwcm9wZXJseQogICAgYmVuY2htYXJrZWQpLiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBlcXVpdl9mb3JtYXQoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBjb25zdCBjaGFyICpkZm10LCAqc2ZtdDsKQEAgLTI3OSw3ICsyNzksNyBAQAogLyogVHdvIHNoYXBlcyBhcmUgZXF1aXZhbGVudCBpZiB0aGV5IGFyZSBlaXRoZXIgZXF1YWwgb3IgaWRlbnRpY2FsIHVwCiAgICB0byBhIHplcm8gZWxlbWVudCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4gRm9yIGV4YW1wbGUsIGluIE51bVB5IGFycmF5cwogICAgdGhlIHNoYXBlcyBbMSwgMCwgNV0gYW5kIFsxLCAwLCA3XSBhcmUgZXF1aXZhbGVudC4gKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogZXF1aXZfc2hhcGUoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBpbnQgaTsKQEAgLTQzOCw3ICs0MzgsNyBAQAogfQogCiAvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgQy1jb250aWd1b3VzIGFycmF5LiAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC00NTEsNyArNDUxLDcgQEAKIH0KIAogLyogSW5pdGlhbGl6ZSBzdHJpZGVzIGZvciBhIEZvcnRyYW4tY29udGlndW91cyBhcnJheS4gKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC01MTMsNyArNTEzLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBJbml0aWFsaXplIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgd2l0aCB0aGUgbWFuYWdlZCBidWZmZXIuICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9zaGFyZWRfdmFsdWVzKFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgZGVzdC0+b2JqID0gc3JjLT5vYmo7CkBAIC01NTMsNyArNTUzLDcgQEAKICAgICB9CiB9CiAKLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X3N1Ym9mZnNldHMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC01NjcsNyArNTY3LDcgQEAKIH0KIAogLyogbGVuID0gcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfbGVuKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKQEAgLTYxNCw3ICs2MTQsNyBAQAogCiAvKiBBbGxvY2F0ZSBhIG5ldyBtZW1vcnl2aWV3IGFuZCBwZXJmb3JtIGJhc2ljIGluaXRpYWxpemF0aW9uLiBOZXcgbWVtb3J5dmlld3MKICAgIGFyZSBleGNsdXNpdmVseSBjcmVhdGVkIHRocm91Z2ggdGhlIG1idWZfYWRkIGZ1bmN0aW9ucy4gKi8KLVB5X0xPQ0FMX0lOTElORShQeU1lbW9yeVZpZXdPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlNZW1vcnlWaWV3T2JqZWN0ICoKIG1lbW9yeV9hbGxvYyhpbnQgbmRpbSkKIHsKICAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAKIAogI2RlZmluZSBJU19CWVRFX0ZPUk1BVChmKSAoZiA9PSAnYicgfHwgZiA9PSAnQicgfHwgZiA9PSAnYycpCiAKLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorc3RhdGljIGlubGluZSBQeV9zc2l6ZV90CiBnZXRfbmF0aXZlX2ZtdGNoYXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpmbXQpCiB7CiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CkBAIC0xMTExLDE3ICsxMTExLDExIEBACiAgICAgY2FzZSAnaCc6IGNhc2UgJ0gnOiBzaXplID0gc2l6ZW9mKHNob3J0KTsgYnJlYWs7CiAgICAgY2FzZSAnaSc6IGNhc2UgJ0knOiBzaXplID0gc2l6ZW9mKGludCk7IGJyZWFrOwogICAgIGNhc2UgJ2wnOiBjYXNlICdMJzogc2l6ZSA9IHNpemVvZihsb25nKTsgYnJlYWs7Ci0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7IGJyZWFrOwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogc2l6ZSA9IHNpemVvZihsb25nIGxvbmcpOyBicmVhazsKICAgICBjYXNlICduJzogY2FzZSAnTic6IHNpemUgPSBzaXplb2YoUHlfc3NpemVfdCk7IGJyZWFrOwogICAgIGNhc2UgJ2YnOiBzaXplID0gc2l6ZW9mKGZsb2F0KTsgYnJlYWs7CiAgICAgY2FzZSAnZCc6IHNpemUgPSBzaXplb2YoZG91YmxlKTsgYnJlYWs7Ci0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihfQm9vbCk7IGJyZWFrOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IHNpemUgPSBzaXplb2YoY2hhcik7IGJyZWFrOwotICAgICNlbmRpZgogICAgIGNhc2UgJ1AnOiBzaXplID0gc2l6ZW9mKHZvaWQgKik7IGJyZWFrOwogICAgIH0KIApAQCAtMTEzMyw3ICsxMTI3LDcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShjaGFyICopCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgogZ2V0X25hdGl2ZV9mbXRzdHIoY29uc3QgY2hhciAqZm10KQogewogICAgIGludCBhdCA9IDA7CkBAIC0xMTU4LDE5ICsxMTUyLDEzIEBACiAgICAgY2FzZSAnSSc6IFJFVFVSTigiSSIpOwogICAgIGNhc2UgJ2wnOiBSRVRVUk4oImwiKTsKICAgICBjYXNlICdMJzogUkVUVVJOKCJMIik7Ci0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6IFJFVFVSTigicSIpOwogICAgIGNhc2UgJ1EnOiBSRVRVUk4oIlEiKTsKLSAgICAjZW5kaWYKICAgICBjYXNlICduJzogUkVUVVJOKCJuIik7CiAgICAgY2FzZSAnTic6IFJFVFVSTigiTiIpOwogICAgIGNhc2UgJ2YnOiBSRVRVUk4oImYiKTsKICAgICBjYXNlICdkJzogUkVUVVJOKCJkIik7Ci0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogUkVUVVJOKCI/Iik7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/JzogUkVUVVJOKCI/Iik7Ci0gICAgI2VuZGlmCiAgICAgY2FzZSAnUCc6IFJFVFVSTigiUCIpOwogICAgIH0KIApAQCAtMTIyMSw3ICsxMjA5LDcgQEAKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgdmlldy0+Zm9ybWF0ID0gZ2V0X25hdGl2ZV9mbXRzdHIoUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpKTsKKyAgICB2aWV3LT5mb3JtYXQgPSAoY2hhciAqKWdldF9uYXRpdmVfZm10c3RyKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpZm10KSk7CiAgICAgaWYgKHZpZXctPmZvcm1hdCA9PSBOVUxMKSB7CiAgICAgICAgIC8qIE5PVF9SRUFDSEVEOiBnZXRfbmF0aXZlX2ZtdGNoYXIoKSBhbHJlYWR5IHZhbGlkYXRlcyB0aGUgZm9ybWF0LiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtMTU4MSwxMiArMTU2OSwxMSBAQAogICAgIHJldHVybiBsdTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1zdGF0aWMgUFlfTE9OR19MT05HCitzdGF0aWMgbG9uZyBsb25nCiBweWxvbmdfYXNfbGxkKFB5T2JqZWN0ICppdGVtKQogewogICAgIFB5T2JqZWN0ICp0bXA7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogCiAgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQpAQCAtMTU5NywyMSArMTU4NCwyMCBAQAogICAgIHJldHVybiBsbGQ7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBQWV9MT05HX0xPTkcKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcKIHB5bG9uZ19hc19sbHUoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAKICAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKIAogICAgIGxsdSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodG1wKTsKICAgICBQeV9ERUNSRUYodG1wKTsKICAgICByZXR1cm4gbGx1OwogfQotI2VuZGlmCiAKIHN0YXRpYyBQeV9zc2l6ZV90CiBweWxvbmdfYXNfemQoUHlPYmplY3QgKml0ZW0pCkBAIC0xNjU2LDEzICsxNjQyLDEzIEBACiAvKiBVbnBhY2sgYSBzaW5nbGUgaXRlbS4gJ2ZtdCcgY2FuIGJlIGFueSBuYXRpdmUgZm9ybWF0IGNoYXJhY3RlciBpbiBzdHJ1Y3QKICAgIG1vZHVsZSBzeW50YXguIFRoaXMgZnVuY3Rpb24gaXMgdmVyeSBzZW5zaXRpdmUgdG8gc21hbGwgY2hhbmdlcy4gV2l0aCB0aGlzCiAgICBsYXlvdXQgZ2NjIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGEgZmFzdCBqdW1wIHRhYmxlLiAqLwotUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKIHVucGFja19zaW5nbGUoY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICpmbXQpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGx1OwogICAgIHVuc2lnbmVkIGxvbmcgbHU7CiAgICAgc2l6ZV90IHp1OwotICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsb25nIGxsZDsKICAgICBsb25nIGxkOwogICAgIFB5X3NzaXplX3QgemQ7CiAgICAgZG91YmxlIGQ7CkBAIC0xNjc5LDExICsxNjY1LDcgQEAKICAgICBjYXNlICdsJzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBsb25nKTsgZ290byBjb252ZXJ0X2xkOwogCiAgICAgLyogYm9vbGVhbiAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgX0Jvb2wpOyBnb3RvIGNvbnZlcnRfYm9vbDsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGNoYXIpOyBnb3RvIGNvbnZlcnRfYm9vbDsKLSAgICAjZW5kaWYKIAogICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCiAgICAgY2FzZSAnSCc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgc2hvcnQpOyBnb3RvIGNvbnZlcnRfbHU7CkBAIC0xNjkxLDEwICsxNjczLDggQEAKICAgICBjYXNlICdMJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBsb25nKTsgZ290byBjb252ZXJ0X2x1OwogCiAgICAgLyogbmF0aXZlIDY0LWJpdCAqLwotICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ3EnOiBVTlBBQ0tfU0lOR0xFKGxsZCwgcHRyLCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGxkOwotICAgIGNhc2UgJ1EnOiBVTlBBQ0tfU0lOR0xFKGxsdSwgcHRyLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGx1OwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBVTlBBQ0tfU0lOR0xFKGxsZCwgcHRyLCBsb25nIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGxkOworICAgIGNhc2UgJ1EnOiBVTlBBQ0tfU0lOR0xFKGxsdSwgcHRyLCB1bnNpZ25lZCBsb25nIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGx1OwogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6IFVOUEFDS19TSU5HTEUoemQsIHB0ciwgUHlfc3NpemVfdCk7IGdvdG8gY29udmVydF96ZDsKQEAgLTE3NTUsMTAgKzE3MzUsMTAgQEAKIHN0YXRpYyBpbnQKIHBhY2tfc2luZ2xlKGNoYXIgKnB0ciwgUHlPYmplY3QgKml0ZW0sIGNvbnN0IGNoYXIgKmZtdCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAgICAgdW5zaWduZWQgbG9uZyBsdTsKICAgICBzaXplX3QgenU7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogICAgIGxvbmcgbGQ7CiAgICAgUHlfc3NpemVfdCB6ZDsKICAgICBkb3VibGUgZDsKQEAgLTE4MDYsMjAgKzE3ODYsMTggQEAKICAgICAgICAgYnJlYWs7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6CiAgICAgICAgIGxsZCA9IHB5bG9uZ19hc19sbGQoaXRlbSk7CiAgICAgICAgIGlmIChsbGQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOwotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsZCwgUFlfTE9OR19MT05HKTsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbGQsIGxvbmcgbG9uZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ1EnOgogICAgICAgICBsbHUgPSBweWxvbmdfYXNfbGx1KGl0ZW0pOwotICAgICAgICBpZiAobGx1ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgaWYgKGxsdSA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKLSAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGx1LCB1bnNpZ25lZCBsb25nIGxvbmcpOwogICAgICAgICBicmVhazsKLSAgICAjZW5kaWYKIAogICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLwogICAgIGNhc2UgJ24nOgpAQCAtMTg1MywxMSArMTgzMSw3IEBACiAgICAgICAgIGxkID0gUHlPYmplY3RfSXNUcnVlKGl0ZW0pOwogICAgICAgICBpZiAobGQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBwcmVzZXJ2ZSBvcmlnaW5hbCBlcnJvciAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIF9Cb29sKTsKLSAgICAjZWxzZQotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBjaGFyKTsKLSAgICAjZW5kaWYKICAgICAgICAgIGJyZWFrOwogCiAgICAgLyogYnl0ZXMgb2JqZWN0ICovCkBAIC0yMDI0LDcgKzE5OTgsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIGFsbG93IGV4cGxpY2l0IGZvcm0gb2YgbmF0aXZlIGZvcm1hdCAqLwotUHlfTE9DQUxfSU5MSU5FKGNvbnN0IGNoYXIgKikKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBhZGp1c3RfZm10KGNvbnN0IFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBjb25zdCBjaGFyICpmbXQ7CkBAIC0yMzA2LDcgKzIyODAsNyBAQAogICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHB0ciwgZm10KTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBpbml0X3NsaWNlKFB5X2J1ZmZlciAqYmFzZSwgUHlPYmplY3QgKmtleSwgaW50IGRpbSkKIHsKICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKQEAgLTI2MjgsNyArMjYwMiw3IEBACiAgICAgICAgIGVxdWFsID0gKHggPT0geSk7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIHVucGFja19jbXAoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwgY2hhciBmbXQsCiAgICAgICAgICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCiB7CkBAIC0yNjQ0LDExICsyNjE4LDcgQEAKICAgICBjYXNlICdsJzogQ01QX1NJTkdMRShwLCBxLCBsb25nKTsgcmV0dXJuIGVxdWFsOwogCiAgICAgLyogYm9vbGVhbiAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IENNUF9TSU5HTEUocCwgcSwgX0Jvb2wpOyByZXR1cm4gZXF1YWw7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBjaGFyKTsgcmV0dXJuIGVxdWFsOwotICAgICNlbmRpZgogCiAgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KICAgICBjYXNlICdIJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBzaG9ydCk7IHJldHVybiBlcXVhbDsKQEAgLTI2NTYsMTAgKzI2MjYsOCBAQAogICAgIGNhc2UgJ0wnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IENNUF9TSU5HTEUocCwgcSwgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOwotICAgIGNhc2UgJ1EnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IHJldHVybiBlcXVhbDsKLSAgICAjZW5kaWYKKyAgICBjYXNlICdxJzogQ01QX1NJTkdMRShwLCBxLCBsb25nIGxvbmcpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnUSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgbG9uZyBsb25nKTsgcmV0dXJuIGVxdWFsOwogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6IENNUF9TSU5HTEUocCwgcSwgUHlfc3NpemVfdCk7IHJldHVybiBlcXVhbDsKZGlmZiAtLWdpdCBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCmluZGV4IDk0NjM1N2YuLmMyMDAxZjAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwpAQCAtOTcsNiArOTcsMTEgQEAKICAgICBpZiAoZmxhZ3MgPT0gKE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMpKSB7CiAgICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZ3MsIGt3ZHMpOwogICAgIH0KKyAgICBlbHNlIGlmIChmbGFncyA9PSBNRVRIX0ZBU1RDQUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICoqc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgIHJlcyA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RzKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKQEAgLTE0NSw2ICsxNTAsMTUzIEBACiAgICAgcmV0dXJuIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlcywgTlVMTCk7CiB9CiAKK1B5T2JqZWN0ICoKK19QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmNfb2JqLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlDRnVuY3Rpb25PYmplY3QgKmZ1bmMgPSAoUHlDRnVuY3Rpb25PYmplY3QqKWZ1bmNfb2JqOworICAgIFB5Q0Z1bmN0aW9uIG1ldGggPSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgUHlPYmplY3QgKnNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCBmbGFnczsKKworICAgIGFzc2VydChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChuYXJncyA9PSAwIHx8IGFyZ3MgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKKworICAgIC8qIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LAorICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCisgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCk7CisKKyAgICBzd2l0Y2ggKGZsYWdzKQorICAgIHsKKyAgICBjYXNlIE1FVEhfTk9BUkdTOgorICAgICAgICBpZiAoa3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmFyZ3MgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lLCBuYXJncyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqbWV0aCkgKHNlbGYsIE5VTEwpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTUVUSF9POgorICAgICAgICBpZiAoa3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmFyZ3MgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUsIG5hcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgYXJnc1swXSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNRVRIX1ZBUkFSR1M6CisgICAgY2FzZSBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTOgorICAgIHsKKyAgICAgICAgLyogU2xvdy1wYXRoOiBjcmVhdGUgYSB0ZW1wb3JhcnkgdHVwbGUgKi8KKyAgICAgICAgUHlPYmplY3QgKnR1cGxlOworCisgICAgICAgIGlmICghKGZsYWdzICYgTUVUSF9LRVlXT1JEUykgJiYga3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHR1cGxlID0gX1B5U3RhY2tfQXNUdXBsZShhcmdzLCBuYXJncyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmbGFncyAmIE1FVEhfS0VZV09SRFMpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpIChzZWxmLCB0dXBsZSwga3dhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICgqbWV0aCkgKHNlbGYsIHR1cGxlKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIE1FVEhfRkFTVENBTEw6CisgICAgeworICAgICAgICBQeU9iamVjdCAqKnN0YWNrOworICAgICAgICBQeU9iamVjdCAqa3duYW1lczsKKyAgICAgICAgX1B5Q0Z1bmN0aW9uRmFzdCBmYXN0bWV0aCA9IChfUHlDRnVuY3Rpb25GYXN0KW1ldGg7CisKKyAgICAgICAgc3RhY2sgPSBfUHlTdGFja19VbnBhY2tEaWN0KGFyZ3MsIG5hcmdzLCBrd2FyZ3MsICZrd25hbWVzLCBmdW5jX29iaik7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqZmFzdG1ldGgpIChzZWxmLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoc3RhY2sgIT0gYXJncykgeworICAgICAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihrd25hbWVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBjYWxsIGZsYWdzIGluIFB5Q0Z1bmN0aW9uX0NhbGwuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJNRVRIX09MREFSR1MgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuY19vYmosIHJlc3VsdCwgTlVMTCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICprd2RpY3QsICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKworICAgIGFzc2VydChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlICovCisKKyAgICBpZiAobmt3YXJncyA+IDApIHsKKyAgICAgICAga3dkaWN0ID0gX1B5U3RhY2tfQXNEaWN0KHN0YWNrICsgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RpY3QpOworICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAvKiBNZXRob2RzICh0aGUgc3RhbmRhcmQgYnVpbHQtaW4gbWV0aG9kcywgdGhhdCBpcykgKi8KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCmluZGV4IGFjMDc2NDIuLmRjYWUxYzQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwpAQCAtMzgwLDcgKzM4MCw3IEBACiAgICAgZm9yIChjdXJfc2xvdCA9IGRlZi0+bV9zbG90czsgY3VyX3Nsb3QgJiYgY3VyX3Nsb3QtPnNsb3Q7IGN1cl9zbG90KyspIHsKICAgICAgICAgc3dpdGNoIChjdXJfc2xvdC0+c2xvdCkgewogICAgICAgICAgICAgY2FzZSBQeV9tb2RfY3JlYXRlOgotICAgICAgICAgICAgICAgIC8qIGhhbmRsZWQgaW4gUHlNb2R1bGVfQ3JlYXRlRnJvbVNsb3RzICovCisgICAgICAgICAgICAgICAgLyogaGFuZGxlZCBpbiBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIgKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUHlfbW9kX2V4ZWM6CiAgICAgICAgICAgICAgICAgcmV0ID0gKChpbnQgKCopKFB5T2JqZWN0ICopKWN1cl9zbG90LT52YWx1ZSkobW9kdWxlKTsKQEAgLTQ1MCw4ICs0NTAsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKSAtPiBtZF9kaWN0OwotICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgICgoUHlNb2R1bGVPYmplY3QgKiltKSAtPiBtZF9kaWN0ID0gZCA9IFB5RGljdF9OZXcoKTsKKyAgICBhc3NlcnQoZCAhPSBOVUxMKTsKICAgICByZXR1cm4gZDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKaW5kZXggM2QyN2E5NS4uMGJiMzA2MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYworKysgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCkBAIC0xLDQgKzEsNCBAQAotLyogbmFtZXNwYWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLworLy8gbmFtZXNwYWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCkBAIC0xNiw3ICsxNiw3IEBACiB9OwogCiAKLS8qIE1ldGhvZHMgKi8KKy8vIE1ldGhvZHMKIAogc3RhdGljIFB5T2JqZWN0ICoKIG5hbWVzcGFjZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCkBAIC00MCw3ICs0MCw3IEBACiBzdGF0aWMgaW50CiBuYW1lc3BhY2VfaW5pdChfUHlOYW1lc3BhY2VPYmplY3QgKm5zLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgLyogaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5ICovCisgICAgLy8gaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5CiAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlPYmplY3RfU2l6ZShhcmdzKTsKICAgICAgICAgaWYgKGFyZ2NvdW50IDwgMCkKQEAgLTE5MSw3ICsxOTEsNyBAQAogc3RhdGljIFB5TWV0aG9kRGVmIG5hbWVzcGFjZV9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKW5hbWVzcGFjZV9yZWR1Y2UsIE1FVEhfTk9BUkdTLAogICAgICBuYW1lc3BhY2VfcmVkdWNlX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgTlVMTH0gIC8qIHNlbnRpbmVsICovCisgICAge05VTEwsICAgICAgICAgTlVMTH0gIC8vIHNlbnRpbmVsCiB9OwogCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvb2JqZWN0LmMgYi9PYmplY3RzL29iamVjdC5jCmluZGV4IDgwMjQ4ODkuLmUwOGY5YTkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9vYmplY3QuYwpAQCAtMjIsMTIgKzIyLDYgQEAKIHsKICAgICBQeU9iamVjdCAqbzsKICAgICBQeV9zc2l6ZV90IHRvdGFsID0gX1B5X1JlZlRvdGFsOwotICAgIC8qIGlnbm9yZSB0aGUgcmVmZXJlbmNlcyB0byB0aGUgZHVtbXkgb2JqZWN0IG9mIHRoZSBkaWN0cyBhbmQgc2V0cwotICAgICAgIGJlY2F1c2UgdGhleSBhcmUgbm90IHJlbGlhYmxlIGFuZCBub3QgdXNlZnVsIChub3cgdGhhdCB0aGUKLSAgICAgICBoYXNoIHRhYmxlIGNvZGUgaXMgd2VsbC10ZXN0ZWQpICovCi0gICAgbyA9IF9QeURpY3RfRHVtbXkoKTsKLSAgICBpZiAobyAhPSBOVUxMKQotICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CiAgICAgbyA9IF9QeVNldF9EdW1teTsKICAgICBpZiAobyAhPSBOVUxMKQogICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CkBAIC0xMDksNiArMTAzLDE1IEBACiBkdW1wX2NvdW50cyhGSUxFKiBmKQogewogICAgIFB5VHlwZU9iamVjdCAqdHA7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHRwID0gdHlwZV9saXN0OyB0cDsgdHAgPSB0cC0+dHBfbmV4dCkKICAgICAgICAgZnByaW50ZihmLCAiJXMgYWxsb2MnZDogJSIgUFlfRk9STUFUX1NJWkVfVCAiZCwgIgpAQCAtNjQ0LDcgKzY0Nyw3IEBACiAvKiBNYXAgcmljaCBjb21wYXJpc29uIG9wZXJhdG9ycyB0byB0aGVpciBzd2FwcGVkIHZlcnNpb24sIGUuZy4gTFQgPC0tPiBHVCAqLwogaW50IF9QeV9Td2FwcGVkT3BbXSA9IHtQeV9HVCwgUHlfR0UsIFB5X0VRLCBQeV9ORSwgUHlfTFQsIFB5X0xFfTsKIAotc3RhdGljIGNoYXIgKm9wc3RyaW5nc1tdID0geyI8IiwgIjw9IiwgIj09IiwgIiE9IiwgIj4iLCAiPj0ifTsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgb3BzdHJpbmdzW10gPSB7IjwiLCAiPD0iLCAiPT0iLCAiIT0iLCAiPiIsICI+PSJ9OwogCiAvKiBQZXJmb3JtIGEgcmljaCBjb21wYXJpc29uLCByYWlzaW5nIFR5cGVFcnJvciB3aGVuIHRoZSByZXF1ZXN0ZWQgY29tcGFyaXNvbgogICAgb3BlcmF0b3IgaXMgbm90IHN1cHBvcnRlZC4gKi8KQEAgLTY4NiwxMSArNjg5LDEwIEBACiAgICAgICAgIHJlcyA9ICh2ICE9IHcpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvKiBYWFggU3BlY2lhbC1jYXNlIE5vbmUgc28gaXQgZG9lc24ndCBzaG93IGFzIE5vbmVUeXBlKCkgKi8KICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ1bm9yZGVyYWJsZSB0eXBlczogJS4xMDBzKCkgJXMgJS4xMDBzKCkiLAotICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICInJXMnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJyUuMTAwcycgYW5kICclLjEwMHMnIiwKICAgICAgICAgICAgICAgICAgICAgIG9wc3RyaW5nc1tvcF0sCisgICAgICAgICAgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgdy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNDEsOCArMTA0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICBuYW1lLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIFB5X0lOQ1JFRihuYW1lKTsKIAogICAgIGlmICh0cC0+dHBfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHApIDwgMCkKQEAgLTEwNTAsMTAgKzEwNTEsMTAgQEAKICAgICB9CiAKICAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHRwLCBuYW1lKTsKLSAgICBQeV9YSU5DUkVGKGRlc2NyKTsKIAogICAgIGYgPSBOVUxMOwogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihkZXNjcik7CiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3JfZ2V0OwogICAgICAgICBpZiAoZiAhPSBOVUxMICYmIFB5RGVzY3JfSXNEYXRhKGRlc2NyKSkgewogICAgICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCAoUHlPYmplY3QgKilvYmotPm9iX3R5cGUpOwpAQCAtMTA3Myw4ICsxMDc0LDkgQEAKICAgICAgICAgICAgICAgICBpZiAodHNpemUgPCAwKQogICAgICAgICAgICAgICAgICAgICB0c2l6ZSA9IC10c2l6ZTsKICAgICAgICAgICAgICAgICBzaXplID0gX1B5T2JqZWN0X1ZBUl9TSVpFKHRwLCB0c2l6ZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHNpemUgPD0gUFlfU1NJWkVfVF9NQVgpOwogCi0gICAgICAgICAgICAgICAgZGljdG9mZnNldCArPSAobG9uZylzaXplOworICAgICAgICAgICAgICAgIGRpY3RvZmZzZXQgKz0gKFB5X3NzaXplX3Qpc2l6ZTsKICAgICAgICAgICAgICAgICBhc3NlcnQoZGljdG9mZnNldCA+IDApOwogICAgICAgICAgICAgICAgIGFzc2VydChkaWN0b2Zmc2V0ICUgU0laRU9GX1ZPSURfUCA9PSAwKTsKICAgICAgICAgICAgIH0KQEAgLTExNDIsMTIgKzExNDQsMTEgQEAKICAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHRwLCBuYW1lKTsKLSAgICBQeV9YSU5DUkVGKGRlc2NyKTsKIAotICAgIGYgPSBOVUxMOwogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihkZXNjcik7CiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3Jfc2V0OwotICAgICAgICBpZiAoZiAhPSBOVUxMICYmIFB5RGVzY3JfSXNEYXRhKGRlc2NyKSkgeworICAgICAgICBpZiAoZiAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIHZhbHVlKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQpAQCAtMTE1NSw0MCArMTE1NiwzMiBAQAogCiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKLSAgICAgICAgaWYgKGRpY3RwdHIgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzID0gX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5X1RZUEUob2JqKSwgZGljdHB0ciwgbmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKKyAgICAgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGRlc2NyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgYXR0cmlidXRlICclVScgaXMgcmVhZC1vbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbSh0cCwgZGljdHB0ciwgbmFtZSwgdmFsdWUpOwogICAgIH0KLSAgICBpZiAoZGljdCAhPSBOVUxMKSB7CisgICAgZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihkaWN0KTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCiAgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBuYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwgbmFtZSwgdmFsdWUpOwogICAgICAgICBQeV9ERUNSRUYoZGljdCk7Ci0gICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKLSAgICAgICAgZ290byBkb25lOwogICAgIH0KKyAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKIAotICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCB2YWx1ZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3IgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsCi0gICAgICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkiLAotICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CiAgIGRvbmU6CiAgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgUHlfREVDUkVGKG5hbWUpOwpAQCAtMTIwNCw3ICsxMTk3LDcgQEAKIGludAogUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQogewotICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgIFB5T2JqZWN0ICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CiAgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fIik7CkBAIC0xMjIwLDEwICsxMjEzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICJub3QgYSAnJS4yMDBzJyIsIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBkaWN0ID0gKmRpY3RwdHI7Ci0gICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgKmRpY3RwdHIgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfWFNFVFJFRigqZGljdHB0ciwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL29ibWFsbG9jLmMgYi9PYmplY3RzL29ibWFsbG9jLmMKaW5kZXggN2NjODg5Zi4uYTExNDJmMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYm1hbGxvYy5jCisrKyBiL09iamVjdHMvb2JtYWxsb2MuYwpAQCAtMSwzMSArMSw0MiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCisKKy8qIERlZmluZWQgaW4gdHJhY2VtYWxsb2MuYyAqLworZXh0ZXJuIHZvaWQgX1B5TWVtX0R1bXBUcmFjZWJhY2soaW50IGZkLCBjb25zdCB2b2lkICpwdHIpOworCisKIC8qIFB5dGhvbidzIG1hbGxvYyB3cmFwcGVycyAoc2VlIHB5bWVtLmgpICovCiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRyAgIC8qIFdJVEhfUFlNQUxMT0MgJiYgUFlNQUxMT0NfREVCVUcgKi8KKyN1bmRlZiAgdWludAorI2RlZmluZSB1aW50ICAgIHVuc2lnbmVkIGludCAgICAvKiBhc3N1bWluZyA+PSAxNiBiaXRzICovCisKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK3N0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSYXdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3Q2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKK3N0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdSYXdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CisKIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKLXN0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiAKIHN0YXRpYyB2b2lkIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzKGNvbnN0IHZvaWQgKnApOwogc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnQ2hlY2tBZGRyZXNzKGNoYXIgYXBpX2lkLCBjb25zdCB2b2lkICpwKTsKLSNlbmRpZgogCiAjaWYgZGVmaW5lZChfX2hhc19mZWF0dXJlKSAgLyogQ2xhbmcgKi8KICAjaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikgIC8qIGlzIEFTQU4gZW5hYmxlZD8gKi8KICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKKyAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKQogICNlbHNlCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiAgI2VuZGlmCiAjZWxzZQogICNpZiBkZWZpbmVkKF9fU0FOSVRJWkVfQUREUkVTU19fKSAgLyogR0NDIDQuOC54LCBpcyBBU0FOIGVuYWJsZWQ/ICovCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKSBcCi0gICAgICAgIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCisgICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkKICAjZWxzZQogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogICNlbmRpZgpAQCAtMTQ1LDkgKzE1Niw4IEBACiAjZWxzZQogIyAgZGVmaW5lIFBZT0JKX0ZVTkNTIFBZUkFXX0ZVTkNTCiAjZW5kaWYKLSNkZWZpbmUgUFlNRU1fRlVOQ1MgUFlSQVdfRlVOQ1MKKyNkZWZpbmUgUFlNRU1fRlVOQ1MgUFlPQkpfRlVOQ1MKIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLyogV2UgdGFnIGVhY2ggYmxvY2sgd2l0aCBhbiBBUEkgSUQgaW4gb3JkZXIgdG8gdGFnIEFQSSB2aW9sYXRpb25zICovCiAgICAgY2hhciBhcGlfaWQ7CkBAIC0xNjMsMTkgKzE3MywyMSBAQAogICAgIHsnbycsIHtOVUxMLCBQWU9CSl9GVU5DU319CiAgICAgfTsKIAotI2RlZmluZSBQWURCR19GVU5DUyBfUHlNZW1fRGVidWdNYWxsb2MsIF9QeU1lbV9EZWJ1Z0NhbGxvYywgX1B5TWVtX0RlYnVnUmVhbGxvYywgX1B5TWVtX0RlYnVnRnJlZQotI2VuZGlmCisjZGVmaW5lIFBZUkFXREJHX0ZVTkNTIFwKKyAgICBfUHlNZW1fRGVidWdSYXdNYWxsb2MsIF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYywgX1B5TWVtX0RlYnVnUmF3UmVhbGxvYywgX1B5TWVtX0RlYnVnUmF3RnJlZQorI2RlZmluZSBQWURCR19GVU5DUyBcCisgICAgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdDYWxsb2MsIF9QeU1lbV9EZWJ1Z1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z0ZyZWUKIAogc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5TWVtX1JhdyA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgICZfUHlNZW1fRGVidWcucmF3LCBQWURCR19GVU5DUworI2lmZGVmIFB5X0RFQlVHCisgICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZUkFXREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZUkFXX0ZVTkNTCiAjZW5kaWYKICAgICB9OwogCiBzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW0gPSB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKKyNpZmRlZiBQeV9ERUJVRwogICAgICZfUHlNZW1fRGVidWcubWVtLCBQWURCR19GVU5DUwogI2Vsc2UKICAgICBOVUxMLCBQWU1FTV9GVU5DUwpAQCAtMTgzLDE2ICsxOTUsNzYgQEAKICAgICB9OwogCiBzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlPYmplY3QgPSB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKKyNpZmRlZiBQeV9ERUJVRwogICAgICZfUHlNZW1fRGVidWcub2JqLCBQWURCR19GVU5DUwogI2Vsc2UKICAgICBOVUxMLCBQWU9CSl9GVU5DUwogI2VuZGlmCiAgICAgfTsKIAoraW50CitfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKGNvbnN0IGNoYXIgKm9wdCkKK3sKKyAgICBpZiAob3B0ID09IE5VTEwgfHwgKm9wdCA9PSAnXDAnKSB7CisgICAgICAgIC8qIFBZVEhPTk1BTExPQyBpcyBlbXB0eSBvciBpcyBub3Qgc2V0IG9yIGlnbm9yZWQgKC1FLy1JIGNvbW1hbmQgbGluZQorICAgICAgICAgICBvcHRpb25zKTogdXNlIGRlZmF1bHQgYWxsb2NhdG9ycyAqLworI2lmZGVmIFB5X0RFQlVHCisjICBpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgICAgIG9wdCA9ICJweW1hbGxvY19kZWJ1ZyI7CisjICBlbHNlCisgICAgICAgIG9wdCA9ICJtYWxsb2NfZGVidWciOworIyAgZW5kaWYKKyNlbHNlCisgICAvKiAhUHlfREVCVUcgKi8KKyMgIGlmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICAgICAgb3B0ID0gInB5bWFsbG9jIjsKKyMgIGVsc2UKKyAgICAgICAgb3B0ID0gIm1hbGxvYyI7CisjICBlbmRpZgorI2VuZGlmCisgICAgfQorCisgICAgaWYgKHN0cmNtcChvcHQsICJkZWJ1ZyIpID09IDApIHsKKyAgICAgICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCk7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChvcHQsICJtYWxsb2MiKSA9PSAwIHx8IHN0cmNtcChvcHQsICJtYWxsb2NfZGVidWciKSA9PSAwKQorICAgIHsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYyA9IHtOVUxMLCBQWVJBV19GVU5DU307CisKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fTUVNLCAmYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jKTsKKworICAgICAgICBpZiAoc3RyY21wKG9wdCwgIm1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisjaWZkZWYgV0lUSF9QWU1BTExPQworICAgIGVsc2UgaWYgKHN0cmNtcChvcHQsICJweW1hbGxvYyIpID09IDAKKyAgICAgICAgICAgICB8fCBzdHJjbXAob3B0LCAicHltYWxsb2NfZGVidWciKSA9PSAwKQorICAgIHsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCByYXdfYWxsb2MgPSB7TlVMTCwgUFlSQVdfRlVOQ1N9OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IG1lbV9hbGxvYyA9IHtOVUxMLCBQWU1FTV9GVU5DU307CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggb2JqX2FsbG9jID0ge05VTEwsIFBZT0JKX0ZVTkNTfTsKKworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJnJhd19hbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fTUVNLCAmbWVtX2FsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZvYmpfYWxsb2MpOworCisgICAgICAgIGlmIChzdHJjbXAob3B0LCAicHltYWxsb2NfZGVidWciKSA9PSAwKQorICAgICAgICAgICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCk7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIC8qIHVua25vd24gYWxsb2NhdG9yICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKICN1bmRlZiBQWVJBV19GVU5DUwogI3VuZGVmIFBZTUVNX0ZVTkNTCiAjdW5kZWYgUFlPQkpfRlVOQ1MKKyN1bmRlZiBQWVJBV0RCR19GVU5DUwogI3VuZGVmIFBZREJHX0ZVTkNTCiAKIHN0YXRpYyBQeU9iamVjdEFyZW5hQWxsb2NhdG9yIF9QeU9iamVjdF9BcmVuYSA9IHtOVUxMLApAQCAtMjA1LDIzICsyNzcsNDYgQEAKICNlbmRpZgogICAgIH07CiAKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCitzdGF0aWMgaW50CitfUHlNZW1fRGVidWdFbmFibGVkKHZvaWQpCit7CisgICAgcmV0dXJuIChfUHlPYmplY3QubWFsbG9jID09IF9QeU1lbV9EZWJ1Z01hbGxvYyk7Cit9CisKK2ludAorX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCh2b2lkKQoreworICAgIGlmIChfUHlNZW1fRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAgcmV0dXJuIChfUHlNZW1fRGVidWcub2JqLmFsbG9jLm1hbGxvYyA9PSBfUHlPYmplY3RfTWFsbG9jKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAoX1B5T2JqZWN0Lm1hbGxvYyA9PSBfUHlPYmplY3RfTWFsbG9jKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZAogUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKHZvaWQpCiB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogCisgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnUmF3TWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYzsKKyAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmF3UmVhbGxvYzsKKyAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnUmF3RnJlZTsKKworICAgIGlmIChfUHlNZW1fUmF3Lm1hbGxvYyAhPSBfUHlNZW1fRGVidWdSYXdNYWxsb2MpIHsKKyAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5yYXc7CisgICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmX1B5TWVtX0RlYnVnLnJhdy5hbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmYWxsb2MpOworICAgIH0KKwogICAgIGFsbG9jLm1hbGxvYyA9IF9QeU1lbV9EZWJ1Z01hbGxvYzsKICAgICBhbGxvYy5jYWxsb2MgPSBfUHlNZW1fRGVidWdDYWxsb2M7CiAgICAgYWxsb2MucmVhbGxvYyA9IF9QeU1lbV9EZWJ1Z1JlYWxsb2M7CiAgICAgYWxsb2MuZnJlZSA9IF9QeU1lbV9EZWJ1Z0ZyZWU7CiAKLSAgICBpZiAoX1B5TWVtX1Jhdy5tYWxsb2MgIT0gX1B5TWVtX0RlYnVnTWFsbG9jKSB7Ci0gICAgICAgIGFsbG9jLmN0eCA9ICZfUHlNZW1fRGVidWcucmF3OwotICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJl9QeU1lbV9EZWJ1Zy5yYXcuYWxsb2MpOwotICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJmFsbG9jKTsKLSAgICB9Ci0KICAgICBpZiAoX1B5TWVtLm1hbGxvYyAhPSBfUHlNZW1fRGVidWdNYWxsb2MpIHsKICAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5tZW07CiAgICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fTUVNLCAmX1B5TWVtX0RlYnVnLm1lbS5hbGxvYyk7CkBAIC0yMzMsNyArMzI4LDYgQEAKICAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZfUHlNZW1fRGVidWcub2JqLmFsbG9jKTsKICAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZhbGxvYyk7CiAgICAgfQotI2VuZGlmCiB9CiAKIHZvaWQKQEAgLTI2NCw3ICszNTgsNiBAQAogICAgIGNhc2UgUFlNRU1fRE9NQUlOX09CSjogX1B5T2JqZWN0ID0gKmFsbG9jYXRvcjsgYnJlYWs7CiAgICAgLyogaWdub3JlIHVua25vd24gZG9tYWluICovCiAgICAgfQotCiB9CiAKIHZvaWQKQEAgLTY0MiwyNCArNzM1LDggQEAKICNkZWZpbmUgU0lNUExFTE9DS19MT0NLKGxvY2spICAgLyogYWNxdWlyZSByZWxlYXNlZCBsb2NrICovCiAjZGVmaW5lIFNJTVBMRUxPQ0tfVU5MT0NLKGxvY2spIC8qIHJlbGVhc2UgYWNxdWlyZWQgbG9jayAqLwogCi0vKgotICogQmFzaWMgdHlwZXMKLSAqIEkgZG9uJ3QgY2FyZSBpZiB0aGVzZSBhcmUgZGVmaW5lZCBpbiA8c3lzL3R5cGVzLmg+IG9yIGVsc2V3aGVyZS4gQXhpb20uCi0gKi8KLSN1bmRlZiAgdWNoYXIKLSNkZWZpbmUgdWNoYXIgICB1bnNpZ25lZCBjaGFyICAgLyogYXNzdW1pbmcgPT0gOCBiaXRzICAqLwotCi0jdW5kZWYgIHVpbnQKLSNkZWZpbmUgdWludCAgICB1bnNpZ25lZCBpbnQgICAgLyogYXNzdW1pbmcgPj0gMTYgYml0cyAqLwotCi0jdW5kZWYgIHVsb25nCi0jZGVmaW5lIHVsb25nICAgdW5zaWduZWQgbG9uZyAgIC8qIGFzc3VtaW5nID49IDMyIGJpdHMgKi8KLQotI3VuZGVmIHVwdHIKLSNkZWZpbmUgdXB0ciAgICBQeV91aW50cHRyX3QKLQogLyogV2hlbiB5b3Ugc2F5IG1lbW9yeSwgbXkgbWluZCByZWFzb25zIGluIHRlcm1zIG9mIChwb2ludGVycyB0bykgYmxvY2tzICovCi10eXBlZGVmIHVjaGFyIGJsb2NrOwordHlwZWRlZiB1aW50OF90IGJsb2NrOwogCiAvKiBQb29sIGZvciBzbWFsbCBibG9ja3MuICovCiBzdHJ1Y3QgcG9vbF9oZWFkZXIgewpAQCAtNjgzLDcgKzc2MCw3IEBACiAgICAgICogaGVyZSB0byBtYXJrIGFuIGFyZW5hX29iamVjdCB0aGF0IGRvZXNuJ3QgY29ycmVzcG9uZCB0byBhbgogICAgICAqIGFsbG9jYXRlZCBhcmVuYS4KICAgICAgKi8KLSAgICB1cHRyIGFkZHJlc3M7CisgICAgdWludHB0cl90IGFkZHJlc3M7CiAKICAgICAvKiBQb29sLWFsaWduZWQgcG9pbnRlciB0byB0aGUgbmV4dCBwb29sIHRvIGJlIGNhcnZlZCBvZmYuICovCiAgICAgYmxvY2sqIHBvb2xfYWRkcmVzczsKQEAgLTgzNCw3ICs5MTEsNyBAQAogdGhlIHByZXZwb29sIG1lbWJlci4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KIAotI2RlZmluZSBQVEEoeCkgICgocG9vbHAgKSgodWNoYXIgKikmKHVzZWRwb29sc1syKih4KV0pIC0gMipzaXplb2YoYmxvY2sgKikpKQorI2RlZmluZSBQVEEoeCkgICgocG9vbHAgKSgodWludDhfdCAqKSYodXNlZHBvb2xzWzIqKHgpXSkgLSAyKnNpemVvZihibG9jayAqKSkpCiAjZGVmaW5lIFBUKHgpICAgUFRBKHgpLCBQVEEoeCkKIAogc3RhdGljIHBvb2xwIHVzZWRwb29sc1syICogKChOQl9TTUFMTF9TSVpFX0NMQVNTRVMgKyA3KSAvIDgpICogOF0gPSB7CkBAIC05NDksMTEgKzEwMjYsMTUgQEAKICAgICBzdHJ1Y3QgYXJlbmFfb2JqZWN0KiBhcmVuYW9iajsKICAgICB1aW50IGV4Y2VzczsgICAgICAgIC8qIG51bWJlciBvZiBieXRlcyBhYm92ZSBwb29sIGFsaWdubWVudCAqLwogICAgIHZvaWQgKmFkZHJlc3M7CisgICAgc3RhdGljIGludCBkZWJ1Z19zdGF0cyA9IC0xOwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQorICAgIGlmIChkZWJ1Z19zdGF0cyA9PSAtMSkgeworICAgICAgICBjaGFyICpvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIik7CisgICAgICAgIGRlYnVnX3N0YXRzID0gKG9wdCAhPSBOVUxMICYmICpvcHQgIT0gJ1wwJyk7CisgICAgfQorICAgIGlmIChkZWJ1Z19zdGF0cykKICAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKLSNlbmRpZgorCiAgICAgaWYgKHVudXNlZF9hcmVuYV9vYmplY3RzID09IE5VTEwpIHsKICAgICAgICAgdWludCBpOwogICAgICAgICB1aW50IG51bWFyZW5hczsKQEAgLTk2Niw3ICsxMDQ3LDcgQEAKICAgICAgICAgaWYgKG51bWFyZW5hcyA8PSBtYXhhcmVuYXMpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogb3ZlcmZsb3cgKi8KICNpZiBTSVpFT0ZfU0laRV9UIDw9IFNJWkVPRl9JTlQKLSAgICAgICAgaWYgKG51bWFyZW5hcyA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKCphcmVuYXMpKQorICAgICAgICBpZiAobnVtYXJlbmFzID4gU0laRV9NQVggLyBzaXplb2YoKmFyZW5hcykpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogb3ZlcmZsb3cgKi8KICNlbmRpZgogICAgICAgICBuYnl0ZXMgPSBudW1hcmVuYXMgKiBzaXplb2YoKmFyZW5hcyk7CkBAIC0xMDEwLDcgKzEwOTEsNyBAQAogICAgICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFyZW5hb2JqOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodXB0cilhZGRyZXNzOworICAgIGFyZW5hb2JqLT5hZGRyZXNzID0gKHVpbnRwdHJfdClhZGRyZXNzOwogCiAgICAgKytuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7CiAgICAgKytudGltZXNfYXJlbmFfYWxsb2NhdGVkOwpAQCAtMTAzMywxMyArMTExNCwxMyBAQAogfQogCiAvKgotUHlfQUREUkVTU19JTl9SQU5HRShQLCBQT09MKQorYWRkcmVzc19pbl9yYW5nZShQLCBQT09MKQogCiBSZXR1cm4gdHJ1ZSBpZiBhbmQgb25seSBpZiBQIGlzIGFuIGFkZHJlc3MgdGhhdCB3YXMgYWxsb2NhdGVkIGJ5IHB5bWFsbG9jLgogUE9PTCBtdXN0IGJlIHRoZSBwb29sIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIFAsIGkuZS4sIFBPT0wgPSBQT09MX0FERFIoUCkKICh0aGUgY2FsbGVyIGlzIGFza2VkIHRvIGNvbXB1dGUgdGhpcyBiZWNhdXNlIHRoZSBtYWNybyBleHBhbmRzIFBPT0wgbW9yZSB0aGFuCiBvbmNlLCBhbmQgZm9yIGVmZmljaWVuY3kgaXQncyBiZXN0IGZvciB0aGUgY2FsbGVyIHRvIGFzc2lnbiBQT09MX0FERFIoUCkgdG8gYQotdmFyaWFibGUgYW5kIHBhc3MgdGhlIGxhdHRlciB0byB0aGUgbWFjcm87IGJlY2F1c2UgUHlfQUREUkVTU19JTl9SQU5HRSBpcwordmFyaWFibGUgYW5kIHBhc3MgdGhlIGxhdHRlciB0byB0aGUgbWFjcm87IGJlY2F1c2UgYWRkcmVzc19pbl9yYW5nZSBpcwogY2FsbGVkIG9uIGV2ZXJ5IGFsbG9jL3JlYWxsb2MvZnJlZSwgbWljcm8tZWZmaWNpZW5jeSBpcyBpbXBvcnRhbnQgaGVyZSkuCiAKIFRyaWNreTogIExldCBCIGJlIHRoZSBhcmVuYSBiYXNlIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sLCBCID0KQEAgLTEwNjQsNyArMTE0NSw3IEBACiBzdG9yZXMsIGV0YyksIFBPT0wgaXMgdGhlIGNvcnJlY3QgYWRkcmVzcyBvZiBQJ3MgcG9vbCwgQU8uYWRkcmVzcyBpcyB0aGUKIGNvcnJlY3QgYmFzZSBhZGRyZXNzIG9mIHRoZSBwb29sJ3MgYXJlbmEsIGFuZCBQIG11c3QgYmUgd2l0aGluIEFSRU5BX1NJWkUgb2YKIEFPLmFkZHJlc3MuICBJbiBhZGRpdGlvbiwgQU8uYWRkcmVzcyBpcyBub3QgMCAobm8gYXJlbmEgY2FuIHN0YXJ0IGF0IGFkZHJlc3MgMAotKE5VTEwpKS4gIFRoZXJlZm9yZSBQeV9BRERSRVNTX0lOX1JBTkdFIGNvcnJlY3RseSByZXBvcnRzIHRoYXQgb2JtYWxsb2MKKyhOVUxMKSkuICBUaGVyZWZvcmUgYWRkcmVzc19pbl9yYW5nZSBjb3JyZWN0bHkgcmVwb3J0cyB0aGF0IG9ibWFsbG9jCiBjb250cm9scyBQLgogCiBOb3cgc3VwcG9zZSBvYm1hbGxvYyBkb2VzIG5vdCBjb250cm9sIFAgKGUuZy4sIFAgd2FzIG9idGFpbmVkIHZpYSBhIGRpcmVjdApAQCAtMTEwNSw1MSArMTE4NiwyMSBAQAogb2JtYWxsb2MgaW4gYSBzbWFsbCBjb25zdGFudCB0aW1lLCBpbmRlcGVuZGVudCBvZiB0aGUgbnVtYmVyIG9mIGFyZW5hcwogb2JtYWxsb2MgY29udHJvbHMuICBTaW5jZSB0aGlzIHRlc3QgaXMgbmVlZGVkIGF0IGV2ZXJ5IGVudHJ5IHBvaW50LCBpdCdzCiBleHRyZW1lbHkgZGVzaXJhYmxlIHRoYXQgaXQgYmUgdGhpcyBmYXN0LgotCi1TaW5jZSBQeV9BRERSRVNTX0lOX1JBTkdFIG1heSBiZSByZWFkaW5nIGZyb20gbWVtb3J5IHdoaWNoIHdhcyBub3QgYWxsb2NhdGVkCi1ieSBQeXRob24sIGl0IGlzIGltcG9ydGFudCB0aGF0IChQT09MKS0+YXJlbmFpbmRleCBpcyByZWFkIG9ubHkgb25jZSwgYXMKLWFub3RoZXIgdGhyZWFkIG1heSBiZSBjb25jdXJyZW50bHkgbW9kaWZ5aW5nIHRoZSB2YWx1ZSB3aXRob3V0IGhvbGRpbmcgdGhlCi1HSUwuICBUbyBhY2NvbXBsaXNoIHRoaXMsIHRoZSBhcmVuYWluZGV4X3RlbXAgdmFyaWFibGUgaXMgdXNlZCB0byBzdG9yZQotKFBPT0wpLT5hcmVuYWluZGV4IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIFB5X0FERFJFU1NfSU5fUkFOR0UgbWFjcm8ncwotZXhlY3V0aW9uLiAgVGhlIGNhbGxlciBvZiB0aGUgbWFjcm8gaXMgcmVzcG9uc2libGUgZm9yIGRlY2xhcmluZyB0aGlzCi12YXJpYWJsZS4KICovCi0jZGVmaW5lIFB5X0FERFJFU1NfSU5fUkFOR0UoUCwgUE9PTCkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKGFyZW5haW5kZXhfdGVtcCA9IChQT09MKS0+YXJlbmFpbmRleCkgPCBtYXhhcmVuYXMgJiYgICAgICAgICAgICAgIFwKLSAgICAgKHVwdHIpKFApIC0gYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyA8ICh1cHRyKUFSRU5BX1NJWkUgJiYgXAotICAgICBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzICE9IDApCiAKLQotLyogVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgbWVtb3J5IGRlYnVnZ2VycyBzdWNoIGFzCi0gKiBQdXJpZnkgb3IgVmFsZ3JpbmQuICBVbmNvbW1lbnQgdG8gdXNlLgotICoKLSNkZWZpbmUgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0gKi8KLQotI2lmZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotCi0vKiBQeV9BRERSRVNTX0lOX1JBTkdFIG1heSBhY2Nlc3MgdW5pbml0aWFsaXplZCBtZW1vcnkgYnkgZGVzaWduCi0gKiBUaGlzIGxlYWRzIHRvIHRob3VzYW5kcyBvZiBzcHVyaW91cyB3YXJuaW5ncyB3aGVuIHVzaW5nCi0gKiBQdXJpZnkgb3IgVmFsZ3JpbmQuICBCeSBtYWtpbmcgYSBmdW5jdGlvbiwgd2UgY2FuIGVhc2lseQotICogc3VwcHJlc3MgdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGluIHRoaXMgb25lIGZ1bmN0aW9uLgotICogU28gd2Ugd29uJ3QgaWdub3JlIHJlYWwgZXJyb3JzIGVsc2V3aGVyZS4KLSAqCi0gKiBEaXNhYmxlIHRoZSBtYWNybyBhbmQgdXNlIGEgZnVuY3Rpb24uCi0gKi8KLQotI3VuZGVmIFB5X0FERFJFU1NfSU5fUkFOR0UKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDEpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fR05VQ19fID49IDQpKQotI2RlZmluZSBQeV9OT19JTkxJTkUgX19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9fKSkKLSNlbHNlCi0jZGVmaW5lIFB5X05PX0lOTElORQotI2VuZGlmCi0KLS8qIERvbid0IG1ha2Ugc3RhdGljLCB0byB0cnkgdG8gZW5zdXJlIHRoaXMgaXNuJ3QgaW5saW5lZC4gKi8KLWludCBQeV9BRERSRVNTX0lOX1JBTkdFKHZvaWQgKlAsIHBvb2xwIHBvb2wpIFB5X05PX0lOTElORTsKLSN1bmRlZiBQeV9OT19JTkxJTkUKLSNlbmRpZgorc3RhdGljIGJvb2wgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCithZGRyZXNzX2luX3JhbmdlKHZvaWQgKnAsIHBvb2xwIHBvb2wpCit7CisgICAgLy8gU2luY2UgYWRkcmVzc19pbl9yYW5nZSBtYXkgYmUgcmVhZGluZyBmcm9tIG1lbW9yeSB3aGljaCB3YXMgbm90IGFsbG9jYXRlZAorICAgIC8vIGJ5IFB5dGhvbiwgaXQgaXMgaW1wb3J0YW50IHRoYXQgcG9vbC0+YXJlbmFpbmRleCBpcyByZWFkIG9ubHkgb25jZSwgYXMKKyAgICAvLyBhbm90aGVyIHRocmVhZCBtYXkgYmUgY29uY3VycmVudGx5IG1vZGlmeWluZyB0aGUgdmFsdWUgd2l0aG91dCBob2xkaW5nCisgICAgLy8gdGhlIEdJTC4gVGhlIGZvbGxvd2luZyBkYW5jZSBmb3JjZXMgdGhlIGNvbXBpbGVyIHRvIHJlYWQgcG9vbC0+YXJlbmFpbmRleAorICAgIC8vIG9ubHkgb25jZS4KKyAgICB1aW50IGFyZW5haW5kZXggPSAqKCh2b2xhdGlsZSB1aW50ICopJnBvb2wtPmFyZW5haW5kZXgpOworICAgIHJldHVybiBhcmVuYWluZGV4IDwgbWF4YXJlbmFzICYmCisgICAgICAgICh1aW50cHRyX3QpcCAtIGFyZW5hc1thcmVuYWluZGV4XS5hZGRyZXNzIDwgQVJFTkFfU0laRSAmJgorICAgICAgICBhcmVuYXNbYXJlbmFpbmRleF0uYWRkcmVzcyAhPSAwOworfQogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIApAQCAtMTM5NCw3ICsxNDQ1LDYgQEAKIAogLyogZnJlZSAqLwogCi1BVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKIHN0YXRpYyB2b2lkCiBfUHlPYmplY3RfRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApCiB7CkBAIC0xNDAyLDkgKzE0NTIsNiBAQAogICAgIGJsb2NrICpsYXN0ZnJlZTsKICAgICBwb29scCBuZXh0LCBwcmV2OwogICAgIHVpbnQgc2l6ZTsKLSNpZm5kZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0gICAgdWludCBhcmVuYWluZGV4X3RlbXA7Ci0jZW5kaWYKIAogICAgIGlmIChwID09IE5VTEwpICAgICAgLyogZnJlZShOVUxMKSBoYXMgbm8gZWZmZWN0ICovCiAgICAgICAgIHJldHVybjsKQEAgLTE0MTcsNyArMTQ2NCw3IEBACiAjZW5kaWYKIAogICAgIHBvb2wgPSBQT09MX0FERFIocCk7Ci0gICAgaWYgKFB5X0FERFJFU1NfSU5fUkFOR0UocCwgcG9vbCkpIHsKKyAgICBpZiAoYWRkcmVzc19pbl9yYW5nZShwLCBwb29sKSkgewogICAgICAgICAvKiBXZSBhbGxvY2F0ZWQgdGhpcyBhZGRyZXNzLiAqLwogICAgICAgICBMT0NLKCk7CiAgICAgICAgIC8qIExpbmsgcCB0byB0aGUgc3RhcnQgb2YgdGhlIHBvb2wncyBmcmVlYmxvY2sgbGlzdC4gIFNpbmNlCkBAIC0xNjIzLDE2ICsxNjcwLDEyIEBACiAgKiByZXR1cm4gYSBub24tTlVMTCByZXN1bHQuCiAgKi8KIAotQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiBzdGF0aWMgdm9pZCAqCiBfUHlPYmplY3RfUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgdm9pZCAqYnA7CiAgICAgcG9vbHAgcG9vbDsKICAgICBzaXplX3Qgc2l6ZTsKLSNpZm5kZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0gICAgdWludCBhcmVuYWluZGV4X3RlbXA7Ci0jZW5kaWYKIAogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwpAQCAtMTY0NCw3ICsxNjg3LDcgQEAKICNlbmRpZgogCiAgICAgcG9vbCA9IFBPT0xfQUREUihwKTsKLSAgICBpZiAoUHlfQUREUkVTU19JTl9SQU5HRShwLCBwb29sKSkgeworICAgIGlmIChhZGRyZXNzX2luX3JhbmdlKHAsIHBvb2wpKSB7CiAgICAgICAgIC8qIFdlJ3JlIGluIGNoYXJnZSBvZiB0aGlzIGJsb2NrICovCiAgICAgICAgIHNpemUgPSBJTkRFWDJTSVpFKHBvb2wtPnN6aWR4KTsKICAgICAgICAgaWYgKG5ieXRlcyA8PSBzaXplKSB7CkBAIC0xNzA5LDcgKzE3NTIsNyBAQAogCiAjZW5kaWYgLyogV0lUSF9QWU1BTExPQyAqLwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKKwogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAvKiBBIHgtcGxhdGZvcm0gZGVidWdnaW5nIGFsbG9jYXRvci4gIFRoaXMgZG9lc24ndCBtYW5hZ2UgbWVtb3J5IGRpcmVjdGx5LAogICogaXQgd3JhcHMgYSByZWFsIGFsbG9jYXRvciwgYWRkaW5nIGV4dHJhIGRlYnVnZ2luZyBpbmZvIHRvIHRoZSBtZW1vcnkgYmxvY2tzLgpAQCAtMTc0Myw3ICsxNzg2LDcgQEAKIHN0YXRpYyBzaXplX3QKIHJlYWRfc2l6ZV90KGNvbnN0IHZvaWQgKnApCiB7Ci0gICAgY29uc3QgdWNoYXIgKnEgPSAoY29uc3QgdWNoYXIgKilwOworICAgIGNvbnN0IHVpbnQ4X3QgKnEgPSAoY29uc3QgdWludDhfdCAqKXA7CiAgICAgc2l6ZV90IHJlc3VsdCA9ICpxKys7CiAgICAgaW50IGk7CiAKQEAgLTE3NTgsNDAgKzE4MDEsMTUgQEAKIHN0YXRpYyB2b2lkCiB3cml0ZV9zaXplX3Qodm9pZCAqcCwgc2l6ZV90IG4pCiB7Ci0gICAgdWNoYXIgKnEgPSAodWNoYXIgKilwICsgU1NUIC0gMTsKKyAgICB1aW50OF90ICpxID0gKHVpbnQ4X3QgKilwICsgU1NUIC0gMTsKICAgICBpbnQgaTsKIAogICAgIGZvciAoaSA9IFNTVDsgLS1pID49IDA7IC0tcSkgewotICAgICAgICAqcSA9ICh1Y2hhcikobiAmIDB4ZmYpOworICAgICAgICAqcSA9ICh1aW50OF90KShuICYgMHhmZik7CiAgICAgICAgIG4gPj49IDg7CiAgICAgfQogfQogCi0jaWZkZWYgUHlfREVCVUcKLS8qIElzIHRhcmdldCBpbiB0aGUgbGlzdD8gIFRoZSBsaXN0IGlzIHRyYXZlcnNlZCB2aWEgdGhlIG5leHRwb29sIHBvaW50ZXJzLgotICogVGhlIGxpc3QgbWF5IGJlIE5VTEwtdGVybWluYXRlZCwgb3IgY2lyY3VsYXIuICBSZXR1cm4gMSBpZiB0YXJnZXQgaXMgaW4KLSAqIGxpc3QsIGVsc2UgMC4KLSAqLwotc3RhdGljIGludAotcG9vbF9pc19pbl9saXN0KGNvbnN0IHBvb2xwIHRhcmdldCwgcG9vbHAgbGlzdCkKLXsKLSAgICBwb29scCBvcmlnbGlzdCA9IGxpc3Q7Ci0gICAgYXNzZXJ0KHRhcmdldCAhPSBOVUxMKTsKLSAgICBpZiAobGlzdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBkbyB7Ci0gICAgICAgIGlmICh0YXJnZXQgPT0gbGlzdCkKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBsaXN0ID0gbGlzdC0+bmV4dHBvb2w7Ci0gICAgfSB3aGlsZSAobGlzdCAhPSBOVUxMICYmIGxpc3QgIT0gb3JpZ2xpc3QpOwotICAgIHJldHVybiAwOwotfQotCi0jZWxzZQotI2RlZmluZSBwb29sX2lzX2luX2xpc3QoWCwgWSkgMQotCi0jZW5kaWYgIC8qIFB5X0RFQlVHICovCi0KIC8qIExldCBTID0gc2l6ZW9mKHNpemVfdCkuICBUaGUgZGVidWcgbWFsbG9jIGFza3MgZm9yIDQqUyBleHRyYSBieXRlcyBhbmQKICAgIGZpbGxzIHRoZW0gd2l0aCB1c2VmdWwgc3R1ZmYsIGhlcmUgY2FsbGluZyB0aGUgdW5kZXJseWluZyBtYWxsb2MncyByZXN1bHQgcDoKIApAQCAtMTgxOSwxMSArMTgzNywxMSBAQAogKi8KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnQWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKLSAgICB1Y2hhciAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KLSAgICB1Y2hhciAqdGFpbDsgICAgICAgIC8qIHAgKyAyKlNTVCArIG5ieXRlcyA9PSBwb2ludGVyIHRvIHRhaWwgcGFkIGJ5dGVzICovCisgICAgdWludDhfdCAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KKyAgICB1aW50OF90ICp0YWlsOyAgICAgICAgLyogcCArIDIqU1NUICsgbmJ5dGVzID09IHBvaW50ZXIgdG8gdGFpbCBwYWQgYnl0ZXMgKi8KICAgICBzaXplX3QgdG90YWw7ICAgICAgIC8qIG5ieXRlcyArIDQqU1NUICovCiAKICAgICBidW1wc2VyaWFsbm8oKTsKQEAgLTE4MzMsMTUgKzE4NTEsMTUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlX2NhbGxvYykKLSAgICAgICAgcCA9ICh1Y2hhciAqKWFwaS0+YWxsb2MuY2FsbG9jKGFwaS0+YWxsb2MuY3R4LCAxLCB0b3RhbCk7CisgICAgICAgIHAgPSAodWludDhfdCAqKWFwaS0+YWxsb2MuY2FsbG9jKGFwaS0+YWxsb2MuY3R4LCAxLCB0b3RhbCk7CiAgICAgZWxzZQotICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKKyAgICAgICAgcCA9ICh1aW50OF90ICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGF0IHAsIHdyaXRlIHNpemUgKFNTVCBieXRlcyksIGlkICgxIGJ5dGUpLCBwYWQgKFNTVC0xIGJ5dGVzKSAqLwogICAgIHdyaXRlX3NpemVfdChwLCBuYnl0ZXMpOwotICAgIHBbU1NUXSA9ICh1Y2hhcilhcGktPmFwaV9pZDsKKyAgICBwW1NTVF0gPSAodWludDhfdClhcGktPmFwaV9pZDsKICAgICBtZW1zZXQocCArIFNTVCArIDEsIEZPUkJJRERFTkJZVEUsIFNTVC0xKTsKIAogICAgIGlmIChuYnl0ZXMgPiAwICYmICF1c2VfY2FsbG9jKQpAQCAtMTg1NiwxOCArMTg3NCwxOCBAQAogfQogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQorX1B5TWVtX0RlYnVnUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKIHsKLSAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMCwgY3R4LCBuYnl0ZXMpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CiB9CiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK19QeU1lbV9EZWJ1Z1Jhd0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICBzaXplX3QgbmJ5dGVzOwogICAgIGFzc2VydChlbHNpemUgPT0gMCB8fCBuZWxlbSA8PSBQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSk7CiAgICAgbmJ5dGVzID0gbmVsZW0gKiBlbHNpemU7Ci0gICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDEsIGN0eCwgbmJ5dGVzKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3QWxsb2MoMSwgY3R4LCBuYnl0ZXMpOwogfQogCiAvKiBUaGUgZGVidWcgZnJlZSBmaXJzdCBjaGVja3MgdGhlIDIqU1NUIGJ5dGVzIG9uIGVhY2ggZW5kIGZvciBzYW5pdHkgKGluCkBAIC0xODc2LDEwICsxODk0LDEwIEBACiAgICBUaGVuIGNhbGxzIHRoZSB1bmRlcmx5aW5nIGZyZWUuCiAqLwogc3RhdGljIHZvaWQKLV9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQorX1B5TWVtX0RlYnVnUmF3RnJlZSh2b2lkICpjdHgsIHZvaWQgKnApCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKLSAgICB1Y2hhciAqcSA9ICh1Y2hhciAqKXAgLSAyKlNTVDsgIC8qIGFkZHJlc3MgcmV0dXJuZWQgZnJvbSBtYWxsb2MgKi8KKyAgICB1aW50OF90ICpxID0gKHVpbnQ4X3QgKilwIC0gMipTU1Q7ICAvKiBhZGRyZXNzIHJldHVybmVkIGZyb20gbWFsbG9jICovCiAgICAgc2l6ZV90IG5ieXRlczsKIAogICAgIGlmIChwID09IE5VTEwpCkBAIC0xODkzLDE3ICsxOTExLDE3IEBACiB9CiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQorX1B5TWVtX0RlYnVnUmF3UmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKLSAgICB1Y2hhciAqcSA9ICh1Y2hhciAqKXAsICpvbGRxOwotICAgIHVjaGFyICp0YWlsOworICAgIHVpbnQ4X3QgKnEgPSAodWludDhfdCAqKXAsICpvbGRxOworICAgIHVpbnQ4X3QgKnRhaWw7CiAgICAgc2l6ZV90IHRvdGFsOyAgICAgICAvKiBuYnl0ZXMgKyA0KlNTVCAqLwogICAgIHNpemVfdCBvcmlnaW5hbF9uYnl0ZXM7CiAgICAgaW50IGk7CiAKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMCwgY3R4LCBuYnl0ZXMpOworICAgICAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3QWxsb2MoMCwgY3R4LCBuYnl0ZXMpOwogCiAgICAgX1B5TWVtX0RlYnVnQ2hlY2tBZGRyZXNzKGFwaS0+YXBpX2lkLCBwKTsKICAgICBidW1wc2VyaWFsbm8oKTsKQEAgLTE5MTgsNyArMTkzNiw3IEBACiAgICAgICogYnV0IHdlIGxpdmUgd2l0aCB0aGF0LgogICAgICAqLwogICAgIG9sZHEgPSBxOwotICAgIHEgPSAodWNoYXIgKilhcGktPmFsbG9jLnJlYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHEgLSAyKlNTVCwgdG90YWwpOworICAgIHEgPSAodWludDhfdCAqKWFwaS0+YWxsb2MucmVhbGxvYyhhcGktPmFsbG9jLmN0eCwgcSAtIDIqU1NULCB0b3RhbCk7CiAgICAgaWYgKHEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE5MjgsNyArMTk0Niw3IEBACiAgICAgfQogCiAgICAgd3JpdGVfc2l6ZV90KHEsIG5ieXRlcyk7Ci0gICAgYXNzZXJ0KHFbU1NUXSA9PSAodWNoYXIpYXBpLT5hcGlfaWQpOworICAgIGFzc2VydChxW1NTVF0gPT0gKHVpbnQ4X3QpYXBpLT5hcGlfaWQpOwogICAgIGZvciAoaSA9IDE7IGkgPCBTU1Q7ICsraSkKICAgICAgICAgYXNzZXJ0KHFbU1NUICsgaV0gPT0gRk9SQklEREVOQllURSk7CiAgICAgcSArPSAyKlNTVDsKQEAgLTE5NDYsNiArMTk2NCw0NCBAQAogICAgIHJldHVybiBxOwogfQogCitzdGF0aWMgdm9pZAorX1B5TWVtX0RlYnVnQ2hlY2tHSUwodm9pZCkKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmICghUHlHSUxTdGF0ZV9DaGVjaygpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeXRob24gbWVtb3J5IGFsbG9jYXRvciBjYWxsZWQgIgorICAgICAgICAgICAgICAgICAgICAgICJ3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCIpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3TWFsbG9jKGN0eCwgbmJ5dGVzKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYyhjdHgsIG5lbGVtLCBlbHNpemUpOworfQorCitzdGF0aWMgdm9pZAorX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnB0cikKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIF9QeU1lbV9EZWJ1Z1Jhd0ZyZWUoY3R4LCBwdHIpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmJ5dGVzKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2MoY3R4LCBwdHIsIG5ieXRlcyk7Cit9CisKIC8qIENoZWNrIHRoZSBmb3JiaWRkZW4gYnl0ZXMgb24gYm90aCBlbmRzIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBwLgogICogSWYgYW55dGhpbmcgaXMgd3JvbmcsIHByaW50IGluZm8gdG8gc3RkZXJyIHZpYSBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcywKICAqIGFuZCBjYWxsIFB5X0ZhdGFsRXJyb3IgdG8ga2lsbCB0aGUgcHJvZ3JhbS4KQEAgLTE5NTQsMTEgKzIwMTAsMTEgQEAKIHN0YXRpYyB2b2lkCiBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoY2hhciBhcGksIGNvbnN0IHZvaWQgKnApCiB7Ci0gICAgY29uc3QgdWNoYXIgKnEgPSAoY29uc3QgdWNoYXIgKilwOworICAgIGNvbnN0IHVpbnQ4X3QgKnEgPSAoY29uc3QgdWludDhfdCAqKXA7CiAgICAgY2hhciBtc2didWZbNjRdOwogICAgIGNoYXIgKm1zZzsKICAgICBzaXplX3QgbmJ5dGVzOwotICAgIGNvbnN0IHVjaGFyICp0YWlsOworICAgIGNvbnN0IHVpbnQ4X3QgKnRhaWw7CiAgICAgaW50IGk7CiAgICAgY2hhciBpZDsKIApAQCAtMjAwNyw4ICsyMDYzLDggQEAKIHN0YXRpYyB2b2lkCiBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKQogewotICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKLSAgICBjb25zdCB1Y2hhciAqdGFpbDsKKyAgICBjb25zdCB1aW50OF90ICpxID0gKGNvbnN0IHVpbnQ4X3QgKilwOworICAgIGNvbnN0IHVpbnQ4X3QgKnRhaWw7CiAgICAgc2l6ZV90IG5ieXRlcywgc2VyaWFsOwogICAgIGludCBpOwogICAgIGludCBvazsKQEAgLTIwNDEsNyArMjA5Nyw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAibm90IGFsbCBGT1JCSURERU5CWVRFICgweCUwMngpOlxuIiwKICAgICAgICAgICAgIEZPUkJJRERFTkJZVEUpOwogICAgICAgICBmb3IgKGkgPSBTU1QtMTsgaSA+PSAxOyAtLWkpIHsKLSAgICAgICAgICAgIGNvbnN0IHVjaGFyIGJ5dGUgPSAqKHEtaSk7CisgICAgICAgICAgICBjb25zdCB1aW50OF90IGJ5dGUgPSAqKHEtaSk7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgYXQgcC0lZDogMHglMDJ4IiwgaSwgYnl0ZSk7CiAgICAgICAgICAgICBpZiAoYnl0ZSAhPSBGT1JCSURERU5CWVRFKQogICAgICAgICAgICAgICAgIGZwdXRzKCIgKioqIE9VQ0giLCBzdGRlcnIpOwpAQCAtMjA2OSw3ICsyMTI1LDcgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJub3QgYWxsIEZPUkJJRERFTkJZVEUgKDB4JTAyeCk6XG4iLAogICAgICAgICAgICAgICAgIEZPUkJJRERFTkJZVEUpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgU1NUOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IHVjaGFyIGJ5dGUgPSB0YWlsW2ldOworICAgICAgICAgICAgY29uc3QgdWludDhfdCBieXRlID0gdGFpbFtpXTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgICBhdCB0YWlsKyVkOiAweCUwMngiLAogICAgICAgICAgICAgICAgICAgICBpLCBieXRlKTsKICAgICAgICAgICAgIGlmIChieXRlICE9IEZPUkJJRERFTkJZVEUpCkBAIC0yMTA0LDkgKzIxNjAsMTIgQEAKICAgICAgICAgfQogICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwogICAgIH0KKyAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworCisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgX1B5TWVtX0R1bXBUcmFjZWJhY2soZmlsZW5vKHN0ZGVyciksIHApOwogfQogCi0jZW5kaWYgIC8qIFBZTUFMTE9DX0RFQlVHICovCiAKIHN0YXRpYyBzaXplX3QKIHByaW50b25lKEZJTEUgKm91dCwgY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCkBAIC0yMTU4LDggKzIyMTcsMzAgQEAKICAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZjIsIG51bV9ibG9ja3MgKiBzaXplb2ZfYmxvY2spOwogfQogCisKICNpZmRlZiBXSVRIX1BZTUFMTE9DCiAKKyNpZmRlZiBQeV9ERUJVRworLyogSXMgdGFyZ2V0IGluIHRoZSBsaXN0PyAgVGhlIGxpc3QgaXMgdHJhdmVyc2VkIHZpYSB0aGUgbmV4dHBvb2wgcG9pbnRlcnMuCisgKiBUaGUgbGlzdCBtYXkgYmUgTlVMTC10ZXJtaW5hdGVkLCBvciBjaXJjdWxhci4gIFJldHVybiAxIGlmIHRhcmdldCBpcyBpbgorICogbGlzdCwgZWxzZSAwLgorICovCitzdGF0aWMgaW50Citwb29sX2lzX2luX2xpc3QoY29uc3QgcG9vbHAgdGFyZ2V0LCBwb29scCBsaXN0KQoreworICAgIHBvb2xwIG9yaWdsaXN0ID0gbGlzdDsKKyAgICBhc3NlcnQodGFyZ2V0ICE9IE5VTEwpOworICAgIGlmIChsaXN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIGRvIHsKKyAgICAgICAgaWYgKHRhcmdldCA9PSBsaXN0KQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGxpc3QgPSBsaXN0LT5uZXh0cG9vbDsKKyAgICB9IHdoaWxlIChsaXN0ICE9IE5VTEwgJiYgbGlzdCAhPSBvcmlnbGlzdCk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogLyogUHJpbnQgc3VtbWFyeSBpbmZvIHRvICJvdXQiIGFib3V0IHRoZSBzdGF0ZSBvZiBweW1hbGxvYydzIHN0cnVjdHVyZXMuCiAgKiBJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3kKICAqIGNoZWNrcy4KQEAgLTIyMDYsMzQgKzIyODcsMzUgQEAKICAgICAgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4YXJlbmFzOyArK2kpIHsKICAgICAgICAgdWludCBqOwotICAgICAgICB1cHRyIGJhc2UgPSBhcmVuYXNbaV0uYWRkcmVzczsKKyAgICAgICAgdWludHB0cl90IGJhc2UgPSBhcmVuYXNbaV0uYWRkcmVzczsKIAogICAgICAgICAvKiBTa2lwIGFyZW5hcyB3aGljaCBhcmUgbm90IGFsbG9jYXRlZC4gKi8KLSAgICAgICAgaWYgKGFyZW5hc1tpXS5hZGRyZXNzID09ICh1cHRyKU5VTEwpCisgICAgICAgIGlmIChhcmVuYXNbaV0uYWRkcmVzcyA9PSAodWludHB0cl90KU5VTEwpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbmFyZW5hcyArPSAxOwogCiAgICAgICAgIG51bWZyZWVwb29scyArPSBhcmVuYXNbaV0ubmZyZWVwb29sczsKIAogICAgICAgICAvKiByb3VuZCB1cCB0byBwb29sIGFsaWdubWVudCAqLwotICAgICAgICBpZiAoYmFzZSAmICh1cHRyKVBPT0xfU0laRV9NQVNLKSB7CisgICAgICAgIGlmIChiYXNlICYgKHVpbnRwdHJfdClQT09MX1NJWkVfTUFTSykgewogICAgICAgICAgICAgYXJlbmFfYWxpZ25tZW50ICs9IFBPT0xfU0laRTsKLSAgICAgICAgICAgIGJhc2UgJj0gfih1cHRyKVBPT0xfU0laRV9NQVNLOworICAgICAgICAgICAgYmFzZSAmPSB+KHVpbnRwdHJfdClQT09MX1NJWkVfTUFTSzsKICAgICAgICAgICAgIGJhc2UgKz0gUE9PTF9TSVpFOwogICAgICAgICB9CiAKICAgICAgICAgLyogdmlzaXQgZXZlcnkgcG9vbCBpbiB0aGUgYXJlbmEgKi8KLSAgICAgICAgYXNzZXJ0KGJhc2UgPD0gKHVwdHIpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3MpOwotICAgICAgICBmb3IgKGogPSAwOwotICAgICAgICAgICAgICAgICAgICBiYXNlIDwgKHVwdHIpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3M7Ci0gICAgICAgICAgICAgICAgICAgICsraiwgYmFzZSArPSBQT09MX1NJWkUpIHsKKyAgICAgICAgYXNzZXJ0KGJhc2UgPD0gKHVpbnRwdHJfdCkgYXJlbmFzW2ldLnBvb2xfYWRkcmVzcyk7CisgICAgICAgIGZvciAoaiA9IDA7IGJhc2UgPCAodWludHB0cl90KSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzOworICAgICAgICAgICAgICsraiwgYmFzZSArPSBQT09MX1NJWkUpIHsKICAgICAgICAgICAgIHBvb2xwIHAgPSAocG9vbHApYmFzZTsKICAgICAgICAgICAgIGNvbnN0IHVpbnQgc3ogPSBwLT5zemlkeDsKICAgICAgICAgICAgIHVpbnQgZnJlZWJsb2NrczsKIAogICAgICAgICAgICAgaWYgKHAtPnJlZi5jb3VudCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgLyogY3VycmVudGx5IHVudXNlZCAqLworI2lmZGVmIFB5X0RFQlVHCiAgICAgICAgICAgICAgICAgYXNzZXJ0KHBvb2xfaXNfaW5fbGlzdChwLCBhcmVuYXNbaV0uZnJlZXBvb2xzKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICsrbnVtcG9vbHNbc3pdOwpAQCAtMjI3Myw5ICsyMzU1LDggQEAKICAgICAgICAgcXVhbnRpemF0aW9uICs9IHAgKiAoKFBPT0xfU0laRSAtIFBPT0xfT1ZFUkhFQUQpICUgc2l6ZSk7CiAgICAgfQogICAgIGZwdXRjKCdcbicsIG91dCk7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICAodm9pZClwcmludG9uZShvdXQsICIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOwotI2VuZGlmCisgICAgaWYgKF9QeU1lbV9EZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyB0aW1lcyBvYmplY3QgbWFsbG9jIGNhbGxlZCIsIHNlcmlhbG5vKTsKICAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBhbGxvY2F0ZWQgdG90YWwiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkKTsKICAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyByZWNsYWltZWQiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkIC0gbmFyZW5hcyk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgaGlnaHdhdGVyIG1hcmsiLCBuYXJlbmFzX2hpZ2h3YXRlcik7CkBAIC0yMzAyLDE4ICsyMzgzLDMgQEAKIH0KIAogI2VuZGlmIC8qICNpZmRlZiBXSVRIX1BZTUFMTE9DICovCi0KLSNpZmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLS8qIE1ha2UgdGhpcyBmdW5jdGlvbiBsYXN0IHNvIGdjYyB3b24ndCBpbmxpbmUgaXQgc2luY2UgdGhlIGRlZmluaXRpb24gaXMKLSAqIGFmdGVyIHRoZSByZWZlcmVuY2UuCi0gKi8KLWludAotUHlfQUREUkVTU19JTl9SQU5HRSh2b2lkICpQLCBwb29scCBwb29sKQotewotICAgIHVpbnQgYXJlbmFpbmRleF90ZW1wID0gcG9vbC0+YXJlbmFpbmRleDsKLQotICAgIHJldHVybiBhcmVuYWluZGV4X3RlbXAgPCBtYXhhcmVuYXMgJiYKLSAgICAgICAgICAgKHVwdHIpUCAtIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgPCAodXB0cilBUkVOQV9TSVpFICYmCi0gICAgICAgICAgIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgIT0gMDsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vZGljdG9iamVjdC5jIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCmluZGV4IGE2OTYzZDcuLjIyYjFmMWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKQEAgLTM5LDcgKzM5LDcgQEAKICAgIF9fZ2V0aXRlbV9fKCksIGdldCgpLCBldGMuIGFjY29yZGluZ2x5LgogCiBUaGUgYXBwcm9hY2ggd2l0aCB0aGUgbGVhc3QgcGVyZm9ybWFuY2UgaW1wYWN0ICh0aW1lIGFuZCBzcGFjZSkgaXMgIzIsCi1taXJyb3JpbmcgdGhlIGtleSBvcmRlciBvZiBkaWN0J3MgZGtfZW50aWVzIHdpdGggYW4gYXJyYXkgb2Ygbm9kZSBwb2ludGVycy4KK21pcnJvcmluZyB0aGUga2V5IG9yZGVyIG9mIGRpY3QncyBka19lbnRyaWVzIHdpdGggYW4gYXJyYXkgb2Ygbm9kZSBwb2ludGVycy4KIFdoaWxlIGxvb2tkaWN0KCkgYW5kIGZyaWVuZHMgKGRrX2xvb2t1cCkgZG9uJ3QgZ2l2ZSB1cyB0aGUgaW5kZXggaW50byB0aGUKIGFycmF5LCB3ZSBtYWtlIHVzZSBvZiBwb2ludGVyIGFyaXRobWV0aWMgdG8gZ2V0IHRoYXQgaW5kZXguICBBbiBhbHRlcm5hdGl2ZQogd291bGQgYmUgdG8gcmVmYWN0b3IgbG9va2RpY3QoKSB0byBwcm92aWRlIHRoZSBpbmRleCwgZXhwbGljaXRseSBleHBvc2luZwpAQCAtNTM2LDE0ICs1MzYsMTcgQEAKIF9vZGljdF9nZXRfaW5kZXhfcmF3KFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gKChQeURpY3RPYmplY3QgKilvZCktPm1hX2tleXM7CisgICAgUHlfc3NpemVfdCBpeDsKIAotICAgIGVwID0gKGtleXMtPmRrX2xvb2t1cCkoKFB5RGljdE9iamVjdCAqKW9kLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChrZXlzLT5ka19sb29rdXApKChQeURpY3RPYmplY3QgKilvZCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgcmV0dXJuIGtleXMtPmRrX25lbnRyaWVzOyAgLyogaW5kZXggb2YgbmV3IGVudHJ5ICovCisgICAgfQorICAgIGlmIChpeCA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICAvKiBXZSB1c2UgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGUgZW50cnkncyBpbmRleCBpbnRvIHRoZSB0YWJsZS4gKi8KLSAgICByZXR1cm4gZXAgLSBrZXlzLT5ka19lbnRyaWVzOworICAgIHJldHVybiBpeDsKIH0KIAogLyogUmVwbGFjZSBvZC0+b2RfZmFzdF9ub2RlcyB3aXRoIGEgbmV3IHRhYmxlIG1hdGNoaW5nIHRoZSBzaXplIG9mIGRpY3Qncy4gKi8KQEAgLTU2NSw3ICs1NjgsNyBAQAogICAgIC8qIENvcHkgdGhlIGN1cnJlbnQgbm9kZXMgaW50byB0aGUgdGFibGUuICovCiAgICAgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIHsKICAgICAgICAgaSA9IF9vZGljdF9nZXRfaW5kZXhfcmF3KG9kLCBfb2RpY3Rub2RlX0tFWShub2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2RpY3Rub2RlX0hBU0gobm9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9IQVNIKG5vZGUpKTsKICAgICAgICAgaWYgKGkgPCAwKSB7CiAgICAgICAgICAgICBQeU1lbV9GUkVFKGZhc3Rfbm9kZXMpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQyNCwxNCArMTQyNywxMyBAQAogICogT3JkZXJlZERpY3QgbWVtYmVycwogICovCiAKLS8qIHRwX21lbWJlcnMgKi8KKy8qIHRwX2dldHNldCAqLwogCi1zdGF0aWMgUHlNZW1iZXJEZWYgb2RpY3RfbWVtYmVyc1tdID0gewotICAgIHsiX19kaWN0X18iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPRGljdE9iamVjdCwgb2RfaW5zdF9kaWN0KSwgUkVBRE9OTFl9LAotICAgIHswfQorc3RhdGljIFB5R2V0U2V0RGVmIG9kaWN0X2dldHNldFtdID0geworICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAorICAgIHtOVUxMfQogfTsKIAotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBPcmRlcmVkRGljdCB0eXBlIHNsb3QgbWV0aG9kcwogICovCkBAIC0xNDYzLDcgKzE0NjUsNyBAQAogICAgICsrdHN0YXRlLT50cmFzaF9kZWxldGVfbmVzdGluZzsKIAogICAgIFB5X1RSQVNIQ0FOX1NBRkVfRU5EKHNlbGYpCi19OworfQogCiAvKiB0cF9yZXByICovCiAKQEAgLTE1NDAsNyArMTU0Miw3IEBACiAgICAgUHlfWERFQ1JFRihwaWVjZXMpOwogICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QgKilzZWxmKTsKICAgICByZXR1cm4gcmVzdWx0OwotfTsKK30KIAogLyogdHBfZG9jICovCiAKQEAgLTE2MTIsNyArMTYxNCw3IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KLX07Cit9CiAKIC8qIHRwX2l0ZXIgKi8KIApAQCAtMTYyMCw3ICsxNjIyLDcgQEAKIG9kaWN0X2l0ZXIoUHlPRGljdE9iamVjdCAqb2QpCiB7CiAgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcob2QsIF9vZGljdF9JVEVSX0tFWVMpOwotfTsKK30KIAogLyogdHBfaW5pdCAqLwogCkBAIC0xNjQ2LDI3ICsxNjQ4LDE5IEBACiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci19OworfQogCiAvKiB0cF9uZXcgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9kaWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9EaWN0T2JqZWN0ICpvZDsKIAotICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBvZCA9IChQeU9EaWN0T2JqZWN0ICopUHlEaWN0X1R5cGUudHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOwotICAgIGlmIChvZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICBpZiAob2QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgb2QtPm9kX2luc3RfZGljdCA9IGRpY3Q7CiAgICAgLyogdHlwZSBjb25zdHJ1Y3RvciBmaWxscyB0aGUgbWVtb3J5IHdpdGggemVyb3MgKHNlZQogICAgICAgIFB5VHlwZV9HZW5lcmljQWxsb2MoKSksIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IHRoZW0gdG8gemVybyBhZ2FpbiAqLwogICAgIGlmIChfb2RpY3RfcmVzaXplKG9kKSA8IDApIHsKQEAgLTE3MDgsOCArMTcwMiw4IEBACiAgICAgKGdldGl0ZXJmdW5jKW9kaWN0X2l0ZXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIG9kaWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIG9kaWN0X21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgb2RpY3RfZ2V0c2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAmUHlEaWN0X1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwpAQCAtMTcyOSw3ICsxNzIzLDcgQEAKIFB5T2JqZWN0ICoKIFB5T0RpY3RfTmV3KHZvaWQpIHsKICAgICByZXR1cm4gb2RpY3RfbmV3KCZQeU9EaWN0X1R5cGUsIE5VTEwsIE5VTEwpOwotfTsKK30KIAogc3RhdGljIGludAogX1B5T0RpY3RfU2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUsCkBAIC0xNzQ3LDcgKzE3NDEsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXM7Ci19OworfQogCiBpbnQKIFB5T0RpY3RfU2V0SXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKQEAgLTE3NTYsNyArMTc1MCw3IEBACiAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gX1B5T0RpY3RfU2V0SXRlbV9Lbm93bkhhc2gob2QsIGtleSwgdmFsdWUsIGhhc2gpOwotfTsKK30KIAogaW50CiBQeU9EaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQpAQCAtMTc2OSw3ICsxNzYzLDcgQEAKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIGhhc2gpOwotfTsKK30KIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzYyLDggKzIzNTYsNyBAQAogICAgICAgICBQeU9iamVjdCAqb3RoZXIgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOyAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCiAgICAgICAgIGFzc2VydChvdGhlciAhPSBOVUxMKTsKICAgICAgICAgUHlfSU5DUkVGKG90aGVyKTsKLSAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSB8fAotICAgICAgICAgICAgX1B5T2JqZWN0X0hhc0F0dHJJZChvdGhlciwgJlB5SWRfaXRlbXMpKSB7ICAvKiBuZXZlciBmYWlscyAqLworICAgICAgICBpZiBQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikgewogICAgICAgICAgICAgUHlPYmplY3QgKml0ZW1zOwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkKICAgICAgICAgICAgICAgICBpdGVtcyA9IFB5RGljdF9JdGVtcyhvdGhlcik7CkBAIC0yNDA2LDYgKzIzOTksMjAgQEAKICAgICAgICAgICAgIGlmIChyZXMgIT0gMCB8fCBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob3RoZXIsICZQeUlkX2l0ZW1zKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtczsKKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpCisgICAgICAgICAgICAgICAgaXRlbXMgPSBQeURpY3RfSXRlbXMob3RoZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvdGhlciwgJlB5SWRfaXRlbXMsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyKTsKKyAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmVzID0gbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKHNlbGYsIGl0ZW1zKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgICAgICBpZiAocmVzID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcmVzID0gbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKHNlbGYsIG90aGVyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CmRpZmYgLS1naXQgYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKaW5kZXggODk5Njk3YS4uODQ0OWZjNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jCisrKyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwpAQCAtNiw3ICs2LDcgQEAKIC8qIFN1cHBvcnQgb2JqZWN0cyB3aG9zZSBsZW5ndGggaXMgPiBQWV9TU0laRV9UX01BWC4KIAogICAgVGhpcyBjb3VsZCBiZSBzcGVkIHVwIGZvciBzbWFsbCBQeUxvbmdzIGlmIHRoZXkgZml0IGluIGEgUHlfc3NpemVfdC4KLSAgIFRoaXMgb25seSBtYXR0ZXJzIG9uIFdpbjY0LiAgVGhvdWdoIHdlIGNvdWxkIHVzZSBQWV9MT05HX0xPTkcgd2hpY2gKKyAgIFRoaXMgb25seSBtYXR0ZXJzIG9uIFdpbjY0LiAgVGhvdWdoIHdlIGNvdWxkIHVzZSBsb25nIGxvbmcgd2hpY2gKICAgIHdvdWxkIHByZXN1bWFibHkgaGVscCBwZXJmLgogKi8KIApAQCAtMjksMTcgKzI5LDEwIEBACiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMSk7CiAKICAgICBzdGVwID0gUHlOdW1iZXJfSW5kZXgoc3RlcCk7Ci0gICAgaWYgKHN0ZXApIHsKLSAgICAgICAgUHlfc3NpemVfdCBpc3RlcCA9IFB5TnVtYmVyX0FzU3NpemVfdChzdGVwLCBOVUxMKTsKLSAgICAgICAgaWYgKGlzdGVwID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIC8qIElnbm9yZSBPdmVyZmxvd0Vycm9yLCB3ZSBrbm93IHRoZSB2YWx1ZSBpc24ndCAwLiAqLwotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc3RlcCA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmFuZ2UoKSBhcmcgMyBtdXN0IG5vdCBiZSB6ZXJvIik7Ci0gICAgICAgICAgICBQeV9DTEVBUihzdGVwKTsKLSAgICAgICAgfQorICAgIGlmIChzdGVwICYmIF9QeUxvbmdfU2lnbihzdGVwKSA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJhbmdlKCkgYXJnIDMgbXVzdCBub3QgYmUgemVybyIpOworICAgICAgICBQeV9DTEVBUihzdGVwKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RlcDsKQEAgLTEyOSw5ICsxMjIsOSBAQAogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9iajsKIAogICAgIC8qIEZhaWxlZCB0byBjcmVhdGUgb2JqZWN0LCByZWxlYXNlIGF0dHJpYnV0ZXMgKi8KLSAgICBQeV9YREVDUkVGKHN0YXJ0KTsKLSAgICBQeV9YREVDUkVGKHN0b3ApOwotICAgIFB5X1hERUNSRUYoc3RlcCk7CisgICAgUHlfREVDUkVGKHN0YXJ0KTsKKyAgICBQeV9ERUNSRUYoc3RvcCk7CisgICAgUHlfREVDUkVGKHN0ZXApOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xOTYsNyArMTg5LDcgQEAKICAgICAvKiBpZiAobG8gPj0gaGkpLCByZXR1cm4gbGVuZ3RoIG9mIDAuICovCiAgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChsbywgaGksIFB5X0dFKTsKICAgICBpZiAoY21wX3Jlc3VsdCAhPSAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RlcCk7CisgICAgICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICAgICAgaWYgKGNtcF9yZXN1bHQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CkBAIC0yMjUsOSArMjE4LDkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogCiAgIEZhaWw6CisgICAgUHlfREVDUkVGKHN0ZXApOwogICAgIFB5X1hERUNSRUYodG1wMik7CiAgICAgUHlfWERFQ1JFRihkaWZmKTsKLSAgICBQeV9YREVDUkVGKHN0ZXApOwogICAgIFB5X1hERUNSRUYodG1wMSk7CiAgICAgUHlfWERFQ1JFRihvbmUpOwogICAgIHJldHVybiBOVUxMOwpAQCAtOTM3LDYgKzkzMCwxMyBAQAogewogICAgIGxvbmcgc3RhcnQsIHN0b3AsIHN0ZXA7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJyYW5nZV9pdGVyYXRvcigpOiBjcmVhdGluZyBpbnN0YW5jZXMgb2YgcmFuZ2VfaXRlcmF0b3IgIgorICAgICAgICAgICAgICAgICAgICAgImJ5IGNhbGxpbmcgcmFuZ2VfaXRlcmF0b3IgdHlwZSBpcyBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoInJhbmdlX2l0ZXJhdG9yKCkiLCBrdykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zZXRvYmplY3QuYyBiL09iamVjdHMvc2V0b2JqZWN0LmMKaW5kZXggNGVmNjkyZC4uNTg0NjA0NSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zZXRvYmplY3QuYworKysgYi9PYmplY3RzL3NldG9iamVjdC5jCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKIAogLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzICovCiBzdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdDsKQEAgLTQ4LDE5ICs0NywyMCBAQAogc3RhdGljIHNldGVudHJ5ICoKIHNldF9sb29ra2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwotICAgIHNldGVudHJ5ICpmcmVlc2xvdCA9IE5VTEw7CisgICAgc2V0ZW50cnkgKnRhYmxlOwogICAgIHNldGVudHJ5ICplbnRyeTsKLSAgICBzaXplX3QgcGVydHVyYiA9IGhhc2g7CisgICAgc2l6ZV90IHBlcnR1cmI7CiAgICAgc2l6ZV90IG1hc2sgPSBzby0+bWFzazsKICAgICBzaXplX3QgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7IC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yICovCiAgICAgc2l6ZV90IGo7CiAgICAgaW50IGNtcDsKIAotICAgIGVudHJ5ID0gJnRhYmxlW2ldOworICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gZW50cnk7CiAKKyAgICBwZXJ0dXJiID0gaGFzaDsKKwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OwpAQCAtNzAsOCArNzAsOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKICAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCi0gICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwpAQCAtODMsMTQgKzg0LDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOyAgICAgICAgICAgICAgICAgLyogaGVscCBhdm9pZCBhIHJlZ2lzdGVyIHNwaWxsICovCiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OwogCiAgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CiAgICAgICAgICAgICBmb3IgKGogPSAwIDsgaiA8IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKICAgICAgICAgICAgICAgICBlbnRyeSsrOwotICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gMCAmJiBlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoc3RhcnRrZXkgIT0gZHVtbXkpOwpAQCAtOTgsOCArOTcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiB1bmljb2RlX2VxKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CiAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CkBAIC0xMTEsNyArMTExLDEwNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IChpICogNSArIDEgKyBwZXJ0dXJiKSAmIG1hc2s7CisKKyAgICAgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOworICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0KK30KKworc3RhdGljIGludCBzZXRfdGFibGVfcmVzaXplKFB5U2V0T2JqZWN0ICosIFB5X3NzaXplX3QpOworCitzdGF0aWMgaW50CitzZXRfYWRkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgc2V0ZW50cnkgKnRhYmxlOworICAgIHNldGVudHJ5ICpmcmVlc2xvdDsKKyAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgc2l6ZV90IHBlcnR1cmI7CisgICAgc2l6ZV90IG1hc2s7CisgICAgc2l6ZV90IGk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBVbnNpZ25lZCBmb3IgZGVmaW5lZCBvdmVyZmxvdyBiZWhhdmlvciAqLworICAgIHNpemVfdCBqOworICAgIGludCBjbXA7CisKKyAgICAvKiBQcmUtaW5jcmVtZW50IGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IGFyYml0cmFyeSBjb2RlIGluIHRoZSByaWNoCisgICAgICAgY29tcGFyaXNvbiBmcm9tIGRlYWxsb2NhdGluZyB0aGUga2V5IGp1c3QgYmVmb3JlIHRoZSBpbnNlcnRpb24uICovCisgICAgUHlfSU5DUkVGKGtleSk7CisKKyAgcmVzdGFydDoKKworICAgIG1hc2sgPSBzby0+bWFzazsKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKworICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKKyAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICBnb3RvIGZvdW5kX3VudXNlZDsKKworICAgIGZyZWVzbG90ID0gTlVMTDsKKyAgICBwZXJ0dXJiID0gaGFzaDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgLyogc3RhcnRrZXkgY2Fubm90IGJlIGEgZHVtbXkgYmVjYXVzZSB0aGUgZHVtbXkgaGFzaCBmaWVsZCBpcyAtMSAqLworICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgIGlmIChzdGFydGtleSA9PSBrZXkpCisgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQorICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOworICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpa2VseSAqLworICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgZ290byBjb21wYXJpc29uX2Vycm9yOworICAgICAgICAgICAgLyogQ29udGludWluZyB0aGUgc2VhcmNoIGZyb20gdGhlIGN1cnJlbnQgZW50cnkgb25seSBtYWtlcworICAgICAgICAgICAgICAgc2Vuc2UgaWYgdGhlIHRhYmxlIGFuZCBlbnRyeSBhcmUgdW5jaGFuZ2VkOyBvdGhlcndpc2UsCisgICAgICAgICAgICAgICB3ZSBoYXZlIHRvIHJlc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nICovCisgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OworICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOyAgICAgICAgICAgICAgICAgLyogaGVscCBhdm9pZCBhIHJlZ2lzdGVyIHNwaWxsICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7CisKKyAgICAgICAgaWYgKGkgKyBMSU5FQVJfUFJPQkVTIDw9IG1hc2spIHsKKyAgICAgICAgICAgIGZvciAoaiA9IDAgOyBqIDwgTElORUFSX1BST0JFUyA7IGorKykgeworICAgICAgICAgICAgICAgIGVudHJ5Kys7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IDAgJiYgZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX3VudXNlZF9vcl9kdW1teTsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoc3RhcnRrZXkgIT0gZHVtbXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjb21wYXJpc29uX2Vycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE5LDI5ICsyMTYsNTEgQEAKICAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKICAgICAgICAgaSA9IChpICogNSArIDEgKyBwZXJ0dXJiKSAmIG1hc2s7CiAKLSAgICAgICAgZW50cnkgPSAmdGFibGVbaV07CisgICAgICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKKyAgICAgICAgICAgIGdvdG8gZm91bmRfdW51c2VkX29yX2R1bW15OwogICAgIH0KLSAgZm91bmRfbnVsbDoKLSAgICByZXR1cm4gZnJlZXNsb3QgPT0gTlVMTCA/IGVudHJ5IDogZnJlZXNsb3Q7CisKKyAgZm91bmRfdW51c2VkX29yX2R1bW15OgorICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKQorICAgICAgICBnb3RvIGZvdW5kX3VudXNlZDsKKyAgICBzby0+dXNlZCsrOworICAgIGZyZWVzbG90LT5rZXkgPSBrZXk7CisgICAgZnJlZXNsb3QtPmhhc2ggPSBoYXNoOworICAgIHJldHVybiAwOworCisgIGZvdW5kX3VudXNlZDoKKyAgICBzby0+ZmlsbCsrOworICAgIHNvLT51c2VkKys7CisgICAgZW50cnktPmtleSA9IGtleTsKKyAgICBlbnRyeS0+aGFzaCA9IGhhc2g7CisgICAgaWYgKChzaXplX3Qpc28tPmZpbGwqMyA8IG1hc2sqMikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkKTsKKworICBmb3VuZF9hY3RpdmU6CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgcmV0dXJuIDA7CisKKyAgY29tcGFyaXNvbl9lcnJvcjoKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICByZXR1cm4gLTE7CiB9CiAKIC8qCiBJbnRlcm5hbCByb3V0aW5lIHVzZWQgYnkgc2V0X3RhYmxlX3Jlc2l6ZSgpIHRvIGluc2VydCBhbiBpdGVtIHdoaWNoIGlzCiBrbm93biB0byBiZSBhYnNlbnQgZnJvbSB0aGUgc2V0LiAgVGhpcyByb3V0aW5lIGFsc28gYXNzdW1lcyB0aGF0CiB0aGUgc2V0IGNvbnRhaW5zIG5vIGRlbGV0ZWQgZW50cmllcy4gIEJlc2lkZXMgdGhlIHBlcmZvcm1hbmNlIGJlbmVmaXQsCi11c2luZyBzZXRfaW5zZXJ0X2NsZWFuKCkgaW4gc2V0X3RhYmxlX3Jlc2l6ZSgpIGlzIGRhbmdlcm91cyAoU0YgYnVnICMxNDU2MjA5KS4KLU5vdGUgdGhhdCBubyByZWZjb3VudHMgYXJlIGNoYW5nZWQgYnkgdGhpcyByb3V0aW5lOyBpZiBuZWVkZWQsIHRoZSBjYWxsZXIKLWlzIHJlc3BvbnNpYmxlIGZvciBpbmNyZWYnaW5nIGBrZXlgLgordGhlcmUgaXMgYWxzbyBzYWZldHkgYmVuZWZpdCBzaW5jZSB1c2luZyBzZXRfYWRkX2VudHJ5KCkgcmlza3MgbWFraW5nCithIGNhbGxiYWNrIGluIHRoZSBtaWRkbGUgb2YgYSBzZXRfdGFibGVfcmVzaXplKCksIHNlZSBpc3N1ZSAxNDU2MjA5LgorVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlIGtleSdzIHJlZmVyZW5jZSBjb3VudCBhbmQKK3RoZSBzZXRvYmplY3QncyBmaWxsIGFuZCB1c2VkIGZpZWxkcy4KICovCiBzdGF0aWMgdm9pZAotc2V0X2luc2VydF9jbGVhbihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQorc2V0X2luc2VydF9jbGVhbihzZXRlbnRyeSAqdGFibGUsIHNpemVfdCBtYXNrLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICBzZXRlbnRyeSAqdGFibGUgPSBzby0+dGFibGU7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKLSAgICBzaXplX3QgbWFzayA9IChzaXplX3Qpc28tPm1hc2s7CiAgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIHNpemVfdCBqOwogCkBAIC0xNjIsNDUgKzI4MSwxMSBAQAogICBmb3VuZF9udWxsOgogICAgIGVudHJ5LT5rZXkgPSBrZXk7CiAgICAgZW50cnktPmhhc2ggPSBoYXNoOwotICAgIHNvLT5maWxsKys7Ci0gICAgc28tPnVzZWQrKzsKIH0KIAogLyogPT09PT09PT0gRW5kIGxvZ2ljIGZvciBwcm9iaW5nIHRoZSBoYXNoIHRhYmxlID09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAotCi0vKgotSW50ZXJuYWwgcm91dGluZSB0byBpbnNlcnQgYSBuZXcga2V5IGludG8gdGhlIHRhYmxlLgotVXNlZCBieSB0aGUgcHVibGljIGluc2VydCByb3V0aW5lLgotRWF0cyBhIHJlZmVyZW5jZSB0byBrZXkuCi0qLwotc3RhdGljIGludAotc2V0X2luc2VydF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKLXsKLSAgICBzZXRlbnRyeSAqZW50cnk7Ci0KLSAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOwotICAgIGlmIChlbnRyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkgewotICAgICAgICAvKiBVTlVTRUQgKi8KLSAgICAgICAgZW50cnktPmtleSA9IGtleTsKLSAgICAgICAgZW50cnktPmhhc2ggPSBoYXNoOwotICAgICAgICBzby0+ZmlsbCsrOwotICAgICAgICBzby0+dXNlZCsrOwotICAgIH0gZWxzZSBpZiAoZW50cnktPmtleSA9PSBkdW1teSkgewotICAgICAgICAvKiBEVU1NWSAqLwotICAgICAgICBlbnRyeS0+a2V5ID0ga2V5OwotICAgICAgICBlbnRyeS0+aGFzaCA9IGhhc2g7Ci0gICAgICAgIHNvLT51c2VkKys7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogQUNUSVZFICovCi0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogLyoKIFJlc3RydWN0dXJlIHRoZSB0YWJsZSBieSBhbGxvY2F0aW5nIGEgbmV3IHRhYmxlIGFuZCByZWluc2VydGluZyBhbGwKIGtleXMgYWdhaW4uICBXaGVuIGVudHJpZXMgaGF2ZSBiZWVuIGRlbGV0ZWQsIHRoZSBuZXcgdGFibGUgbWF5CkBAIC0yMTMsMTAgKzI5OCwxMyBAQAogICAgIHNldGVudHJ5ICpvbGR0YWJsZSwgKm5ld3RhYmxlLCAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBvbGRmaWxsID0gc28tPmZpbGw7CiAgICAgUHlfc3NpemVfdCBvbGR1c2VkID0gc28tPnVzZWQ7CisgICAgUHlfc3NpemVfdCBvbGRtYXNrID0gc28tPm1hc2s7CisgICAgc2l6ZV90IG5ld21hc2s7CiAgICAgaW50IGlzX29sZHRhYmxlX21hbGxvY2VkOwogICAgIHNldGVudHJ5IHNtYWxsX2NvcHlbUHlTZXRfTUlOU0laRV07CiAKICAgICBhc3NlcnQobWludXNlZCA+PSAwKTsKKyAgICBtaW51c2VkID0gKG1pbnVzZWQgPiA1MDAwMCkgPyBtaW51c2VkICogMiA6IG1pbnVzZWQgKiA0OwogCiAgICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCiAgICAgLyogWFhYIHNwZWVkLXVwIHdpdGggaW50cmluc2ljcyAqLwpAQCAtMjY0LDI1ICszNTIsMjQgQEAKICAgICAvKiBNYWtlIHRoZSBzZXQgZW1wdHksIHVzaW5nIHRoZSBuZXcgdGFibGUuICovCiAgICAgYXNzZXJ0KG5ld3RhYmxlICE9IG9sZHRhYmxlKTsKICAgICBtZW1zZXQobmV3dGFibGUsIDAsIHNpemVvZihzZXRlbnRyeSkgKiBuZXdzaXplKTsKLSAgICBzby0+ZmlsbCA9IDA7Ci0gICAgc28tPnVzZWQgPSAwOworICAgIHNvLT5maWxsID0gb2xkdXNlZDsKKyAgICBzby0+dXNlZCA9IG9sZHVzZWQ7CiAgICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKICAgICBzby0+dGFibGUgPSBuZXd0YWJsZTsKIAogICAgIC8qIENvcHkgdGhlIGRhdGEgb3ZlcjsgdGhpcyBpcyByZWZjb3VudC1uZXV0cmFsIGZvciBhY3RpdmUgZW50cmllczsKICAgICAgICBkdW1teSBlbnRyaWVzIGFyZW4ndCBjb3BpZWQgb3Zlciwgb2YgY291cnNlICovCisgICAgbmV3bWFzayA9IChzaXplX3Qpc28tPm1hc2s7CiAgICAgaWYgKG9sZGZpbGwgPT0gb2xkdXNlZCkgewotICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IG9sZHVzZWQgPiAwOyBlbnRyeSsrKSB7CisgICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgZW50cnkgPD0gb2xkdGFibGUgKyBvbGRtYXNrOyBlbnRyeSsrKSB7CiAgICAgICAgICAgICBpZiAoZW50cnktPmtleSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgb2xkdXNlZC0tOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKG5ld3RhYmxlLCBuZXdtYXNrLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IG9sZHVzZWQgPiAwOyBlbnRyeSsrKSB7CisgICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgZW50cnkgPD0gb2xkdGFibGUgKyBvbGRtYXNrOyBlbnRyeSsrKSB7CiAgICAgICAgICAgICBpZiAoZW50cnktPmtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgICAgICBvbGR1c2VkLS07Ci0gICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4obmV3dGFibGUsIG5ld21hc2ssIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI5Miw1NyArMzc5LDMwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENBVVRJT046IHNldF9hZGRfa2V5L2VudHJ5KCkgbXVzdCBndWFyYW50ZWUgaXQgd29uJ3QgcmVzaXplIHRoZSB0YWJsZSAqLwotCiBzdGF0aWMgaW50Ci1zZXRfYWRkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKmVudHJ5KQorc2V0X2NvbnRhaW5zX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgUHlfc3NpemVfdCBuX3VzZWQ7Ci0gICAgUHlPYmplY3QgKmtleSA9IGVudHJ5LT5rZXk7Ci0gICAgUHlfaGFzaF90IGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBhc3NlcnQoc28tPmZpbGwgPD0gc28tPm1hc2spOyAgLyogYXQgbGVhc3Qgb25lIGVtcHR5IHNsb3QgKi8KLSAgICBuX3VzZWQgPSBzby0+dXNlZDsKLSAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICBpZiAoc2V0X2luc2VydF9rZXkoc28sIGtleSwgaGFzaCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCEoc28tPnVzZWQgPiBuX3VzZWQgJiYgc28tPmZpbGwqMyA+PSAoc28tPm1hc2srMSkqMikpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZD41MDAwMCA/IHNvLT51c2VkKjIgOiBzby0+dXNlZCo0KTsKLX0KLQotc3RhdGljIGludAotc2V0X2FkZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQotewotICAgIHNldGVudHJ5IGVudHJ5OwotICAgIFB5X2hhc2hfdCBoYXNoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7Ci0gICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7Ci0gICAgICAgIGlmIChoYXNoID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgcmV0dXJuIHNldF9hZGRfZW50cnkoc28sICZlbnRyeSk7CisgICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKKyAgICBpZiAoZW50cnkgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGVudHJ5LT5rZXkgIT0gTlVMTDsKKyAgICByZXR1cm4gLTE7CiB9CiAKICNkZWZpbmUgRElTQ0FSRF9OT1RGT1VORCAwCiAjZGVmaW5lIERJU0NBUkRfRk9VTkQgMQogCiBzdGF0aWMgaW50Ci1zZXRfZGlzY2FyZF9lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICpvbGRlbnRyeSkKK3NldF9kaXNjYXJkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCi0gICAgZW50cnkgPSBzZXRfbG9va2tleShzbywgb2xkZW50cnktPmtleSwgb2xkZW50cnktPmhhc2gpOworICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7CiAgICAgaWYgKGVudHJ5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMICB8fCAgZW50cnktPmtleSA9PSBkdW1teSkKKyAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gRElTQ0FSRF9OT1RGT1VORDsKICAgICBvbGRfa2V5ID0gZW50cnktPmtleTsKICAgICBlbnRyeS0+a2V5ID0gZHVtbXk7CkBAIC0zNTMsMjIgKzQxMyw0NSBAQAogfQogCiBzdGF0aWMgaW50Ci1zZXRfZGlzY2FyZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQorc2V0X2FkZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQogewotICAgIHNldGVudHJ5IGVudHJ5OwogICAgIFB5X2hhc2hfdCBoYXNoOwogCi0gICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwotCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgcmV0dXJuIHNldF9kaXNjYXJkX2VudHJ5KHNvLCAmZW50cnkpOworICAgIHJldHVybiBzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpOworfQorCitzdGF0aWMgaW50CitzZXRfY29udGFpbnNfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKK30KKworc3RhdGljIGludAorc2V0X2Rpc2NhcmRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHNldF9kaXNjYXJkX2VudHJ5KHNvLCBrZXksIGhhc2gpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDQ5LDIwICs1MzIsMjIgQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBtYXNrOwotICAgIHNldGVudHJ5ICp0YWJsZTsKKyAgICBzZXRlbnRyeSAqZW50cnk7CiAKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKHNvKSk7CiAgICAgaSA9ICpwb3NfcHRyOwogICAgIGFzc2VydChpID49IDApOwotICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgIG1hc2sgPSBzby0+bWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICh0YWJsZVtpXS5rZXkgPT0gTlVMTCB8fCB0YWJsZVtpXS5rZXkgPT0gZHVtbXkpKQorICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBkdW1teSkpIHsKICAgICAgICAgaSsrOworICAgICAgICBlbnRyeSsrOworICAgIH0KICAgICAqcG9zX3B0ciA9IGkrMTsKICAgICBpZiAoaSA+IG1hc2spCiAgICAgICAgIHJldHVybiAwOwotICAgIGFzc2VydCh0YWJsZVtpXS5rZXkgIT0gTlVMTCk7Ci0gICAgKmVudHJ5X3B0ciA9ICZ0YWJsZVtpXTsKKyAgICBhc3NlcnQoZW50cnkgIT0gTlVMTCk7CisgICAgKmVudHJ5X3B0ciA9IGVudHJ5OwogICAgIHJldHVybiAxOwogfQogCkBAIC01NjAsOCArNjQ1LDggQEAKICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcga2V5cy4gIEV4cGVjdAogICAgICAqIHRoYXQgdGhlcmUgd2lsbCBiZSBubyAob3IgZmV3KSBvdmVybGFwcGluZyBrZXlzLgogICAgICAqLwotICAgIGlmICgoc28tPmZpbGwgKyBvdGhlci0+dXNlZCkqMyA+PSAoc28tPm1hc2srMSkqMikgewotICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBvdGhlci0+dXNlZCkqMikgIT0gMCkKKyAgICBpZiAoKHNvLT5maWxsICsgb3RoZXItPnVzZWQpKjMgPj0gc28tPm1hc2sqMikgeworICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCArIG90aGVyLT51c2VkKSAhPSAwKQogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNvX2VudHJ5ID0gc28tPnRhYmxlOwpAQCAtNTg2LDExICs2NzEsMTUgQEAKIAogICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgd2UgY2FuIHVzZSBzZXRfaW5zZXJ0X2NsZWFuKCkgKi8KICAgICBpZiAoc28tPmZpbGwgPT0gMCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYXNrOyBpKyssIG90aGVyX2VudHJ5KyspIHsKKyAgICAgICAgc2V0ZW50cnkgKm5ld3RhYmxlID0gc28tPnRhYmxlOworICAgICAgICBzaXplX3QgbmV3bWFzayA9IChzaXplX3Qpc28tPm1hc2s7CisgICAgICAgIHNvLT5maWxsID0gb3RoZXItPnVzZWQ7CisgICAgICAgIHNvLT51c2VkID0gb3RoZXItPnVzZWQ7CisgICAgICAgIGZvciAoaSA9IG90aGVyLT5tYXNrICsgMTsgaSA+IDAgOyBpLS0sIG90aGVyX2VudHJ5KyspIHsKICAgICAgICAgICAgIGtleSA9IG90aGVyX2VudHJ5LT5rZXk7CiAgICAgICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihuZXd0YWJsZSwgbmV3bWFzaywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC02MDEsNDYgKzY5MCwxMyBAQAogICAgICAgICBvdGhlcl9lbnRyeSA9ICZvdGhlci0+dGFibGVbaV07CiAgICAgICAgIGtleSA9IG90aGVyX2VudHJ5LT5rZXk7CiAgICAgICAgIGlmIChrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludAotc2V0X2NvbnRhaW5zX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKmVudHJ5KQotewotICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgc2V0ZW50cnkgKmx1X2VudHJ5OwotCi0gICAgbHVfZW50cnkgPSBzZXRfbG9va2tleShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwotICAgIGlmIChsdV9lbnRyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAga2V5ID0gbHVfZW50cnktPmtleTsKLSAgICByZXR1cm4ga2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15OwotfQotCi1zdGF0aWMgaW50Ci1zZXRfY29udGFpbnNfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKLXsKLSAgICBzZXRlbnRyeSBlbnRyeTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewotICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcG9wKFB5U2V0T2JqZWN0ICpzbykKIHsKQEAgLTY4Miw0MyArNzM4LDY0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIFdvcmsgdG8gaW5jcmVhc2UgdGhlIGJpdCBkaXNwZXJzaW9uIGZvciBjbG9zZWx5IHNwYWNlZCBoYXNoIHZhbHVlcy4KKyAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55IGNvbWJpbmF0aW9ucyBvZiBhCisgICBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMgd2l0aCBuZWFyYnkgaGFzaGVzIHNvIHRoYXQgbWFueSBkaXN0aW5jdAorICAgY29tYmluYXRpb25zIGNvbGxhcHNlIHRvIG9ubHkgYSBoYW5kZnVsIG9mIGRpc3RpbmN0IGhhc2ggdmFsdWVzLiAqLworCitzdGF0aWMgUHlfdWhhc2hfdAorX3NodWZmbGVfYml0cyhQeV91aGFzaF90IGgpCit7CisgICAgcmV0dXJuICgoaCBeIDg5ODY5NzQ3VUwpIF4gKGggPDwgMTYpKSAqIDM2NDQ3OTgxNjdVTDsKK30KKworLyogTW9zdCBvZiB0aGUgY29uc3RhbnRzIGluIHRoaXMgaGFzaCBhbGdvcml0aG0gYXJlIHJhbmRvbWx5IGNob3NlbgorICAgbGFyZ2UgcHJpbWVzIHdpdGggImludGVyZXN0aW5nIGJpdCBwYXR0ZXJucyIgYW5kIHRoYXQgcGFzc2VkIHRlc3RzCisgICBmb3IgZ29vZCBjb2xsaXNpb24gc3RhdGlzdGljcyBvbiBhIHZhcmlldHkgb2YgcHJvYmxlbWF0aWMgZGF0YXNldHMKKyAgIGluY2x1ZGluZyBwb3dlcnNldHMgYW5kIGdyYXBoIHN0cnVjdHVyZXMgKHN1Y2ggYXMgRGF2aWQgRXBwc3RlaW4ncworICAgZ3JhcGggcmVjaXBlcyBpbiBMaWIvdGVzdC90ZXN0X3NldC5weSkgKi8KKwogc3RhdGljIFB5X2hhc2hfdAogZnJvemVuc2V0X2hhc2goUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgLyogTW9zdCBvZiB0aGUgY29uc3RhbnRzIGluIHRoaXMgaGFzaCBhbGdvcml0aG0gYXJlIHJhbmRvbWx5IGNob29zZW4KLSAgICAgICBsYXJnZSBwcmltZXMgd2l0aCAiaW50ZXJlc3RpbmcgYml0IHBhdHRlcm5zIiBhbmQgdGhhdCBwYXNzZWQKLSAgICAgICB0ZXN0cyBmb3IgZ29vZCBjb2xsaXNpb24gc3RhdGlzdGljcyBvbiBhIHZhcmlldHkgb2YgcHJvYmxlbWF0aWMKLSAgICAgICBkYXRhc2V0cyBzdWNoIGFzOgotCi0gICAgICAgICAgcHMgPSBbXQotICAgICAgICAgIGZvciByIGluIHJhbmdlKDIxKToKLSAgICAgICAgICAgICAgcHMgKz0gaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhyYW5nZSgyMCksIHIpCi0gICAgICAgICAgbnVtX2Rpc3RpbmN0X2hhc2hlcyA9IGxlbih7aGFzaChmcm96ZW5zZXQocykpIGZvciBzIGluIHBzfSkKLQotICAgICovCiAgICAgUHlTZXRPYmplY3QgKnNvID0gKFB5U2V0T2JqZWN0ICopc2VsZjsKLSAgICBQeV91aGFzaF90IGgsIGhhc2ggPSAxOTI3ODY4MjM3VUw7CisgICAgUHlfdWhhc2hfdCBoYXNoID0gMDsKICAgICBzZXRlbnRyeSAqZW50cnk7Ci0gICAgUHlfc3NpemVfdCBwb3MgPSAwOwogCiAgICAgaWYgKHNvLT5oYXNoICE9IC0xKQogICAgICAgICByZXR1cm4gc28tPmhhc2g7CiAKLSAgICBoYXNoICo9IChQeV91aGFzaF90KVB5U2V0X0dFVF9TSVpFKHNlbGYpICsgMTsKLSAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgLyogV29yayB0byBpbmNyZWFzZSB0aGUgYml0IGRpc3BlcnNpb24gZm9yIGNsb3NlbHkgc3BhY2VkIGhhc2gKLSAgICAgICAgICAgdmFsdWVzLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHVzZSBjYXNlcyBoYXZlIG1hbnkKLSAgICAgICAgICAgY29tYmluYXRpb25zIG9mIGEgc21hbGwgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggbmVhcmJ5Ci0gICAgICAgICAgIGhhc2hlcyBzbyB0aGF0IG1hbnkgZGlzdGluY3QgY29tYmluYXRpb25zIGNvbGxhcHNlIHRvIG9ubHkKLSAgICAgICAgICAgYSBoYW5kZnVsIG9mIGRpc3RpbmN0IGhhc2ggdmFsdWVzLiAqLwotICAgICAgICBoID0gZW50cnktPmhhc2g7Ci0gICAgICAgIGhhc2ggXj0gKChoIF4gODk4Njk3NDdVTCkgXiAoaCA8PCAxNikpICogMzY0NDc5ODE2N1VMOwotICAgIH0KLSAgICAvKiBNYWtlIHRoZSBmaW5hbCByZXN1bHQgc3ByZWFkLW91dCBpbiBhIGRpZmZlcmVudCBwYXR0ZXJuCi0gICAgICAgdGhhbiB0aGUgYWxnb3JpdGhtIGZvciB0dXBsZXMgb3Igb3RoZXIgcHl0aG9uIG9iamVjdHMuICovCisgICAgLyogWG9yLWluIHNodWZmbGVkIGJpdHMgZnJvbSBldmVyeSBlbnRyeSdzIGhhc2ggZmllbGQgYmVjYXVzZSB4b3IgaXMKKyAgICAgICBjb21tdXRhdGl2ZSBhbmQgYSBmcm96ZW5zZXQgaGFzaCBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygb3JkZXIuCisKKyAgICAgICBGb3Igc3BlZWQsIGluY2x1ZGUgbnVsbCBlbnRyaWVzIGFuZCBkdW1teSBlbnRyaWVzIGFuZCB0aGVuCisgICAgICAgc3VidHJhY3Qgb3V0IHRoZWlyIGVmZmVjdCBhZnRlcndhcmRzIHNvIHRoYXQgdGhlIGZpbmFsIGhhc2gKKyAgICAgICBkZXBlbmRzIG9ubHkgb24gYWN0aXZlIGVudHJpZXMuICBUaGlzIGFsbG93cyB0aGUgY29kZSB0byBiZQorICAgICAgIHZlY3Rvcml6ZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBpdCBzYXZlcyB0aGUgdW5wcmVkaWN0YWJsZQorICAgICAgIGJyYW5jaGVzIHRoYXQgd291bGQgYXJpc2Ugd2hlbiB0cnlpbmcgdG8gZXhjbHVkZSBudWxsIGFuZCBkdW1teQorICAgICAgIGVudHJpZXMgb24gZXZlcnkgaXRlcmF0aW9uLiAqLworCisgICAgZm9yIChlbnRyeSA9IHNvLT50YWJsZTsgZW50cnkgPD0gJnNvLT50YWJsZVtzby0+bWFza107IGVudHJ5KyspCisgICAgICAgIGhhc2ggXj0gX3NodWZmbGVfYml0cyhlbnRyeS0+aGFzaCk7CisKKyAgICAvKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiBhbiBvZGQgbnVtYmVyIG9mIE5VTEwgZW50cmllcyAqLworICAgIGlmICgoc28tPm1hc2sgKyAxIC0gc28tPmZpbGwpICYgMSkKKyAgICAgICAgaGFzaCBePSBfc2h1ZmZsZV9iaXRzKDApOworCisgICAgLyogUmVtb3ZlIHRoZSBlZmZlY3Qgb2YgYW4gb2RkIG51bWJlciBvZiBkdW1teSBlbnRyaWVzICovCisgICAgaWYgKChzby0+ZmlsbCAtIHNvLT51c2VkKSAmIDEpCisgICAgICAgIGhhc2ggXj0gX3NodWZmbGVfYml0cygtMSk7CisKKyAgICAvKiBGYWN0b3IgaW4gdGhlIG51bWJlciBvZiBhY3RpdmUgZW50cmllcyAqLworICAgIGhhc2ggXj0gKChQeV91aGFzaF90KVB5U2V0X0dFVF9TSVpFKHNlbGYpICsgMSkgKiAxOTI3ODY4MjM3VUw7CisKKyAgICAvKiBEaXNwZXJzZSBwYXR0ZXJucyBhcmlzaW5nIGluIG5lc3RlZCBmcm96ZW5zZXRzICovCiAgICAgaGFzaCA9IGhhc2ggKiA2OTA2OVUgKyA5MDcxMzM5MjNVTDsKKworICAgIC8qIC0xIGlzIHJlc2VydmVkIGFzIGFuIGVycm9yIGNvZGUgKi8KICAgICBpZiAoaGFzaCA9PSAoUHlfdWhhc2hfdCktMSkKICAgICAgICAgaGFzaCA9IDU5MDkyMzcxM1VMOworCiAgICAgc28tPmhhc2ggPSBoYXNoOwogICAgIHJldHVybiBoYXNoOwogfQpAQCAtODY1LDcgKzk0Miw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2Mpc2V0aXRlcl90cmF2ZXJzZSwgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC05MTAsMTggKzk4NywxNCBAQAogICAgICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CiAgICAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICAgICovCi0gICAgICAgIGlmIChkaWN0c2l6ZSA9PSAtMSkKKyAgICAgICAgaWYgKGRpY3RzaXplIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKChzby0+ZmlsbCArIGRpY3RzaXplKSozID49IChzby0+bWFzaysxKSoyKSB7Ci0gICAgICAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgKHNvLT51c2VkICsgZGljdHNpemUpKjIpICE9IDApCisgICAgICAgIGlmICgoc28tPmZpbGwgKyBkaWN0c2l6ZSkqMyA+PSBzby0+bWFzayoyKSB7CisgICAgICAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQgKyBkaWN0c2l6ZSkgIT0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChvdGhlciwgJnBvcywgJmtleSwgJnZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgIHNldGVudHJ5IGFuX2VudHJ5OwotCi0gICAgICAgICAgICBhbl9lbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgICAgIGFuX2VudHJ5LmtleSA9IGtleTsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpKQorICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcwLDkgKzEwNDMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1ha2VfbmV3X3NldChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSkKIHsKLSAgICBQeVNldE9iamVjdCAqc28gPSBOVUxMOworICAgIFB5U2V0T2JqZWN0ICpzbzsKIAotICAgIC8qIGNyZWF0ZSBQeVNldE9iamVjdCBzdHJ1Y3R1cmUgKi8KICAgICBzbyA9IChQeVNldE9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwMTUsNyArMTA4Nyw4IEBACiB7CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gTlVMTCwgKnJlc3VsdDsKIAotICAgIGlmICh0eXBlID09ICZQeUZyb3plblNldF9UeXBlICYmICFfUHlBcmdfTm9LZXl3b3JkcygiZnJvemVuc2V0KCkiLCBrd2RzKSkKKyAgICBpZiAoa3dkcyAhPSBOVUxMICYmIHR5cGUgPT0gJlB5RnJvemVuU2V0X1R5cGUKKyAgICAgICAgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJmcm96ZW5zZXQoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgdHlwZS0+dHBfbmFtZSwgMCwgMSwgJml0ZXJhYmxlKSkKQEAgLTEwNDIsMjQgKzExMTUsOSBAQAogICAgIHJldHVybiBlbXB0eWZyb3plbnNldDsKIH0KIAotaW50Ci1QeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQKLVB5U2V0X0Zpbmkodm9pZCkKLXsKLSAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGlmICh0eXBlID09ICZQeVNldF9UeXBlICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gbWFrZV9uZXdfc2V0KHR5cGUsIE5VTEwpOwogfQogCkBAIC0xMjAxLDYgKzEyNTksOCBAQAogewogICAgIFB5U2V0T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKmtleSwgKml0LCAqdG1wOworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIGludCBydjsKIAogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIHNldF9jb3B5KHNvKTsKQEAgLTEyMjAsMTMgKzEyODAsMTUgQEAKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlIChzZXRfbmV4dCgoUHlTZXRPYmplY3QgKilvdGhlciwgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBlbnRyeSk7Ci0gICAgICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwgZW50cnkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xMjQyLDMyICsxMzA0LDE1IEBACiAgICAgfQogCiAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgaW50IHJ2OwotICAgICAgICBzZXRlbnRyeSBlbnRyeTsKLSAgICAgICAgUHlfaGFzaF90IGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7Ci0KLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocnYgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgaWYgKHJ2KSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsICZlbnRyeSkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBrZXksIGhhc2gpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgfQpAQCAtMTI3Nyw2ICsxMzIyLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYoaXQpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM2Myw2ICsxNDEzLDcgQEAKIHNldF9pc2Rpc2pvaW50KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewogICAgIFB5T2JqZWN0ICprZXksICppdCwgKnRtcDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpIHsKICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHNvKSA9PSAwKQpAQCAtMTM4MSw4ICsxNDMyLDggQEAKICAgICAgICAgICAgIG90aGVyID0gdG1wOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChzZXRfbmV4dCgoUHlTZXRPYmplY3QgKilvdGhlciwgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBlbnRyeSk7Ci0gICAgICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChydikKICAgICAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CkBAIC0xMzk1LDggKzE0NDYsNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogCiAgICAgICAgIGlmIChoYXNoID09IC0xKSB7CkBAIC0xNDA0LDExICsxNDUzLDkgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgZW50cnkua2V5ID0ga2V5OwotICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgJmVudHJ5KTsKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNDI5LDYgKzE0NzYsMTAgQEAKIHN0YXRpYyBpbnQKIHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKKyAgICBpZiAoUHlTZXRfR0VUX1NJWkUoc28pID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gc2V0X2NsZWFyX2ludGVybmFsKHNvKTsKIApAQCAtMTQzNyw3ICsxNDg4LDcgQEAKICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogCiAgICAgICAgIHdoaWxlIChzZXRfbmV4dCgoUHlTZXRPYmplY3QgKilvdGhlciwgJnBvcywgJmVudHJ5KSkKLSAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnkpID09IC0xKQorICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2VudHJ5KHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9IGVsc2UgewogICAgICAgICBQeU9iamVjdCAqa2V5LCAqaXQ7CkBAIC0xNDQ2LDcgKzE0OTcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQ1NywxMCArMTUwOCwxMCBAQAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgLyogSWYgbW9yZSB0aGFuIDEvNSBhcmUgZHVtbWllcywgdGhlbiByZXNpemUgdGhlbSBhd2F5LiAqLwotICAgIGlmICgoc28tPmZpbGwgLSBzby0+dXNlZCkgKiA1IDwgc28tPm1hc2spCisgICAgLyogSWYgbW9yZSB0aGFuIDEvNHRoIGFyZSBkdW1taWVzLCB0aGVuIHJlc2l6ZSB0aGVtIGF3YXkuICovCisgICAgaWYgKChzaXplX3QpKHNvLT5maWxsIC0gc28tPnVzZWQpIDw9IChzaXplX3Qpc28tPm1hc2sgLyA0KQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQ+NTAwMDAgPyBzby0+dXNlZCoyIDogc28tPnVzZWQqNCk7CisgICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0ODcsNyArMTUzOCw3IEBACiAgICAgcmVzdWx0ID0gc2V0X2NvcHkoc28pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKikgcmVzdWx0LCBvdGhlcikgIT0gLTEpCisgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKikgcmVzdWx0LCBvdGhlcikgPT0gMCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTE0OTcsOCArMTU0OCwxNSBAQAogc2V0X2RpZmZlcmVuY2UoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqa2V5OworICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgaW50IHJ2OworCisgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHNvKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBzZXRfY29weShzbyk7CisgICAgfQogCiAgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikgICYmICFQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpIHsKICAgICAgICAgcmV0dXJuIHNldF9jb3B5X2FuZF9kaWZmZXJlbmNlKHNvLCBvdGhlcik7CkBAIC0xNTE2LDE3ICsxNTc0LDE1IEBACiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKSB7CiAgICAgICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAgICAgc2V0ZW50cnkgZW50cnljb3B5OwotICAgICAgICAgICAgaW50IHJ2OwotICAgICAgICAgICAgZW50cnljb3B5Lmhhc2ggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgICAgIGVudHJ5Y29weS5rZXkgPSBlbnRyeS0+a2V5OwotICAgICAgICAgICAgcnYgPSBfUHlEaWN0X0NvbnRhaW5zKG90aGVyLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICAgICAgcnYgPSBfUHlEaWN0X0NvbnRhaW5zKG90aGVyLCBrZXksIGhhc2gpOwogICAgICAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFydikgewotICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgJmVudHJ5Y29weSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1MzcsMTMgKzE1OTMsMTUgQEAKIAogICAgIC8qIEl0ZXJhdGUgb3ZlciBzbywgY2hlY2tpbmcgZm9yIGNvbW1vbiBlbGVtZW50cyBpbiBvdGhlci4gKi8KICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgZW50cnkpKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE2MDUsMjkgKzE2NjMsMjQgQEAKICAgICBQeVNldE9iamVjdCAqb3RoZXJzZXQ7CiAgICAgUHlPYmplY3QgKmtleTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIGludCBydjsKIAogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIHNldF9jbGVhcihzbyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICAgICAgaW50IHJ2OwotICAgICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChvdGhlciwgJnBvcywgJmtleSwgJnZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgIHNldGVudHJ5IGFuX2VudHJ5OwotCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGFuX2VudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICAgICAgYW5fZW50cnkua2V5ID0ga2V5OwotCi0gICAgICAgICAgICBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCAmYW5fZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgICAgICBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjQ3LDEzICsxNzAwLDE1IEBACiAgICAgfQogCiAgICAgd2hpbGUgKHNldF9uZXh0KG90aGVyc2V0LCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCBlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcnNldCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAocnYgPT0gRElTQ0FSRF9OT1RGT1VORCkgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGVudHJ5KSkgeworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTcxNSw2ICsxNzcwLDcgQEAKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIGludCBydjsKIAogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp0bXAsICpyZXN1bHQ7CkBAIC0xNzI5LDggKzE3ODUsOCBAQAogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAKICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIXJ2KQogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMTgyMSw3ICsxODc3LDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBydiA9IHNldF9jb250YWluc19rZXkoc28sIGtleSk7Ci0gICAgaWYgKHJ2ID09IC0xKSB7CisgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICBpZiAoIVB5U2V0X0NoZWNrKGtleSkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE4NDAsNyArMTg5Niw3IEBACiAgICAgbG9uZyByZXN1bHQ7CiAKICAgICByZXN1bHQgPSBzZXRfY29udGFpbnMoc28sIGtleSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwogfQpAQCAtMTg1NCw3ICsxOTEwLDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywga2V5KTsKLSAgICBpZiAocnYgPT0gLTEpIHsKKyAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgIGlmICghUHlTZXRfQ2hlY2soa2V5KSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODYzLDcgKzE5MTksNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCB0bXBrZXkpOwogICAgICAgICBQeV9ERUNSRUYodG1wa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xODg2LDcgKzE5NDIsNyBAQAogICAgIGludCBydjsKIAogICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpOwotICAgIGlmIChydiA9PSAtMSkgeworICAgIGlmIChydiA8IDApIHsKICAgICAgICAgaWYgKCFQeVNldF9DaGVjayhrZXkpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE4OTUsNyArMTk1MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIHRtcGtleSk7CiAgICAgICAgIFB5X0RFQ1JFRih0bXBrZXkpOwotICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xOTQ5LDEzICsyMDA1LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gTlVMTDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc2VsZikpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlTZXRfQ2hlY2soc2VsZikgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJzZXQoKSIsIGt3ZHMpKQorICAgIGlmIChrd2RzICE9IE5VTEwgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJzZXQoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCAwLCAxLCAmaXRlcmFibGUpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc2V0X2NsZWFyX2ludGVybmFsKHNlbGYpOworICAgIGlmIChzZWxmLT5maWxsKQorICAgICAgICBzZXRfY2xlYXJfaW50ZXJuYWwoc2VsZik7CiAgICAgc2VsZi0+aGFzaCA9IC0xOwogICAgIGlmIChpdGVyYWJsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMjIsNyArMjE3Nyw3IEBACiAgICAgIGNvcHlfZG9jfSwKICAgICB7ImRpZmZlcmVuY2UiLCAgICAgIChQeUNGdW5jdGlvbilzZXRfZGlmZmVyZW5jZV9tdWx0aSwgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIGRpZmZlcmVuY2VfZG9jfSwKLSAgICB7ImludGVyc2VjdGlvbiIsKFB5Q0Z1bmN0aW9uKXNldF9pbnRlcnNlY3Rpb25fbXVsdGksICAgICAgICBNRVRIX1ZBUkFSR1MsCisgICAgeyJpbnRlcnNlY3Rpb24iLCAgICAoUHlDRnVuY3Rpb24pc2V0X2ludGVyc2VjdGlvbl9tdWx0aSwgICAgTUVUSF9WQVJBUkdTLAogICAgICBpbnRlcnNlY3Rpb25fZG9jfSwKICAgICB7ImlzZGlzam9pbnQiLCAgICAgIChQeUNGdW5jdGlvbilzZXRfaXNkaXNqb2ludCwgICAgTUVUSF9PLAogICAgICBpc2Rpc2pvaW50X2RvY30sCkBAIC0yMTkzLDcgKzIyNDgsNyBAQAogICAgICh0cmF2ZXJzZXByb2Mpc2V0X3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpc2V0X2NsZWFyX2ludGVybmFsLCAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAocmljaGNtcGZ1bmMpc2V0X3JpY2hjb21wYXJlLCAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIG9mZnNldG9mKFB5U2V0T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihQeVNldE9iamVjdCwgd2Vha3JlZmxpc3QpLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIChnZXRpdGVyZnVuYylzZXRfaXRlciwgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGZyb3plbnNldF9tZXRob2RzLCAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KQEAgLTIyNzcsNiArMjMzMiwxOCBAQAogfQogCiBpbnQKK1B5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorUHlTZXRfRmluaSh2b2lkKQoreworICAgIFB5X0NMRUFSKGVtcHR5ZnJvemVuc2V0KTsKK30KKworaW50CiBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCkKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCmluZGV4IDBmYzZiNTguLmE5ZDBhMzQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCkBAIC0xLDYgKzEsOCBAQAogLyogc3RyaW5nbGliOiBjb2RlYyBpbXBsZW1lbnRhdGlvbnMgKi8KIAotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjaWYgIVNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJjb2RlY3MuaCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2VuZGlmCiAKIC8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQogICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KQEAgLTI2Myw0OSArMjY1LDMzIEBACiAjZGVmaW5lIE1BWF9TSE9SVF9VTklDSEFSUyAzMDAgIC8qIGxhcmdlc3Qgc2l6ZSB3ZSdsbCBkbyBvbiB0aGUgc3RhY2sgKi8KIAogICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBzIG9mIG5leHQgaW5wdXQgYnl0ZSAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgLyogcmVzdWx0IHN0cmluZyBvYmplY3QgKi8KICAgICBjaGFyICpwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgZnJlZSBieXRlIGluIG91dHB1dCBidWZmZXIgKi8KLSAgICBQeV9zc2l6ZV90IG5hbGxvY2F0ZWQ7ICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBhbGxvY2F0ZWQgKi8KLSAgICBQeV9zc2l6ZV90IG5uZWVkZWQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBuZWVkZWQgKi8KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCi0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAjZW5kaWYKICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDI7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAyXTsKICNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAyCiAgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gMzsKLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDNdOwogI2Vsc2UgLyogIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSA0ICovCiAgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gNDsKLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDRdOwogI2VuZGlmCisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAotICAgIGlmIChzaXplIDw9IE1BWF9TSE9SVF9VTklDSEFSUykgewotICAgICAgICAvKiBXcml0ZSBpbnRvIHRoZSBzdGFjayBidWZmZXI7IG5hbGxvY2F0ZWQgY2FuJ3Qgb3ZlcmZsb3cuCi0gICAgICAgICAqIEF0IHRoZSBlbmQsIHdlJ2xsIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBoZWFwIHNwYWNlIGFzIGl0Ci0gICAgICAgICAqIHR1cm5zIG91dCB3ZSBuZWVkLgotICAgICAgICAgKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IFB5X1NBRkVfRE9XTkNBU1Qoc2l6ZW9mKHN0YWNrYnVmKSwgc2l6ZV90LCBpbnQpOwotICAgICAgICByZXN1bHQgPSBOVUxMOyAgIC8qIHdpbGwgYWxsb2NhdGUgYWZ0ZXIgd2UncmUgZG9uZSAqLwotICAgICAgICBwID0gc3RhY2tidWY7CisgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIG1heF9jaGFyX3NpemUpIHsKKyAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7Ci0gICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgfQotICAgICAgICAvKiBPdmVyYWxsb2NhdGUgb24gdGhlIGhlYXAsIGFuZCBnaXZlIHRoZSBleGNlc3MgYmFjayBhdCB0aGUgZW5kLiAqLwotICAgICAgICBuYWxsb2NhdGVkID0gc2l6ZSAqIG1heF9jaGFyX3NpemU7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICB9CisKKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSAqIG1heF9jaGFyX3NpemUpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7KSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBkYXRhW2krK107CkBAIC0zMjYsNzIgKzMxMiwxMTkgQEAKICAgICAgICAgfQogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKICAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgaywgc3RhcnRwb3M7Ci0gICAgICAgICAgICBzdGFydHBvcyA9IGktMTsKLSAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAotICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCi0gICAgICAgICAgICAgICAgICB1bmljb2RlLCAmZXhjLCBzdGFydHBvcywgc3RhcnRwb3MrMSwgJm5ld3Bvcyk7Ci0gICAgICAgICAgICBpZiAoIXJlcCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKQotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7Ci0KLSAgICAgICAgICAgIGlmIChyZXBzaXplID4gbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0OwotCi0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgICAgICAgICAgICAgIGlmIChuYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplICsgbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbGxvY2F0ZWQgKz0gcmVwc2l6ZSAtIG1heF9jaGFyX3NpemU7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbmFsbG9jYXRlZCkgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwgc3RhY2tidWYsIG9mZnNldCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgb2Zmc2V0OworICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgZW5kcG9zLCBuZXdwb3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGs7CisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikgeworICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqcHJlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCk7Ci0gICAgICAgICAgICAgICAgZm9yKGsgPSByZXBzaXplOyBrID4gMDsgay0tKQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnByZXArKzsKLSAgICAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7Ci0gICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCByZXBraW5kOwotICAgICAgICAgICAgICAgIHZvaWQgKnJlcGRhdGE7CisgICAgICAgICAgICBzdGFydHBvcyA9IGktMTsKKyAgICAgICAgICAgIGVuZHBvcyA9IHN0YXJ0cG9zKzE7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcCkgPCAwKQorICAgICAgICAgICAgd2hpbGUgKChlbmRwb3MgPCBzaXplKSAmJiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURShkYXRhW2VuZHBvc10pKQorICAgICAgICAgICAgICAgIGVuZHBvcysrOworCisgICAgICAgICAgICAvKiBPbmx5IG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGlmIGl0J3Mgbm90IHRoZSBsYXN0IHdyaXRlICovCisgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gKGVuZHBvcyA8IHNpemUpOworCisgICAgICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICAgICAgICAgIG1lbXNldChwLCAnPycsIGVuZHBvcyAtIHN0YXJ0cG9zKTsKKyAgICAgICAgICAgICAgICBwICs9IChlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoIHRoZSBpZ25vcmUgaGFuZGxlciAqLworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgorICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURVBBU1M6CisgICAgICAgICAgICAgICAgZm9yIChrPXN0YXJ0cG9zOyBrPGVuZHBvczsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gZGF0YVtrXTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGUwIHwgKGNoID4+IDEyKSk7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gNikgJiAweDNmKSk7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gbWF4X2NoYXJfc2l6ZSAqIChlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgcCA9IGJhY2tzbGFzaHJlcGxhY2UoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIHJlcGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXApOwotICAgICAgICAgICAgICAgIHJlcGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXApOworICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICBmb3Ioaz0wOyBrPHJlcHNpemU7IGsrKykgewotICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChyZXBraW5kLCByZXBkYXRhLCBrKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKDB4ODAgPD0gYykgeworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgPSB4bWxjaGFycmVmcmVwbGFjZSgmd3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgICAgICBmb3IgKGs9c3RhcnRwb3M7IGs8ZW5kcG9zOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBkYXRhW2tdOworICAgICAgICAgICAgICAgICAgICBpZiAoISgweERDODAgPD0gY2ggJiYgY2ggPD0gMHhEQ0ZGKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKGNoICYgMHhmZik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChrID49IGVuZHBvcykgeworICAgICAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhcnRwb3MgPSBrOworICAgICAgICAgICAgICAgIGFzc2VydChzdGFydHBvcyA8IGVuZHBvcyk7CisgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoIHRoZSBkZWZhdWx0IGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosICJ1dGYtOCIsICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCAmZXhjLCBzdGFydHBvcywgZW5kcG9zLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSBtYXhfY2hhcl9zaXplOworCisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgICAgICAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlcCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogcmVwIGlzIHVuaWNvZGUgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkocmVwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAidXRmLTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLTEsIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhciljOworCisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKSk7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihyZXApOworCisgICAgICAgICAgICAgICAgaSA9IG5ld3BvczsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CisKKyAgICAgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBpID09IHNpemUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyCkBAIC00MTYsMzEgKzQ0OSwxOCBAQAogI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEgKi8KICAgICB9CiAKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKLSAgICAgICAgLyogVGhpcyB3YXMgc3RhY2sgYWxsb2NhdGVkLiAqLwotICAgICAgICBubmVlZGVkID0gcCAtIHN0YWNrYnVmOwotICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKLSAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzdGFja2J1Ziwgbm5lZWRlZCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBDdXQgYmFjayB0byBzaXplIGFjdHVhbGx5IG5lZWRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5uZWVkZWQpOwotICAgIH0KLQogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHApOwogCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQogIGVycm9yOgogICAgIFB5X1hERUNSRUYocmVwKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogI2VuZGlmCiAKQEAgLTgwNiw1ICs4MjYsMyBAQAogI3VuZGVmIFNXQUI0CiAKICNlbmRpZgotCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oCmluZGV4IDczOWNmM2QuLmYwNTQ2MjUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaApAQCAtMSw1ICsxLDYgQEAKLS8qIE5PVEU6IHRoaXMgQVBJIGlzIC1PTkxZLSBmb3IgdXNlIHdpdGggc2luZ2xlIGJ5dGUgY2hhcmFjdGVyIHN0cmluZ3MuICovCi0vKiBEbyBub3QgdXNlIGl0IHdpdGggVW5pY29kZS4gKi8KKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAiY3R5cGUuaCBvbmx5IGNvbXBhdGlibGUgd2l0aCBieXRlLXdpc2Ugc3RyaW5ncyIKKyNlbmRpZgogCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgogCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKaW5kZXggY2RhNjhlNy4uOTgxNjVhZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaApAQCAtMzIsNTIgKzMyLDk4IEBACiAjZGVmaW5lIFNUUklOR0xJQl9CTE9PTShtYXNrLCBjaCkgICAgIFwKICAgICAoKG1hc2sgJiAgKDFVTCA8PCAoKGNoKSAmIChTVFJJTkdMSUJfQkxPT01fV0lEVEggLTEpKSkpKQogCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK1NUUklOR0xJQihmaW5kX2NoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sIFNUUklOR0xJQl9DSEFSIGNoKQoreworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwLCAqZTsKKworICAgIHAgPSBzOworICAgIGUgPSBzICsgbjsKKyAgICBpZiAobiA+IDEwKSB7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyAgICAgICAgcCA9IG1lbWNocihzLCBjaCwgbik7CisgICAgICAgIGlmIChwICE9IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICAgICAgLyogdXNlIG1lbWNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5CisgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9IGNoICYgMHhmZjsKKyAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KKyAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCisgICAgICAgICAgIGFuZCBVQ1M0IHJlcHJlc2VudGF0aW9ucy4gKi8KKyAgICAgICAgaWYgKG5lZWRsZSAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAocCA8IGUpIHsKKyAgICAgICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1jaHIocCwgbmVlZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSAtIHApICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgcCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgd2hpbGUgKHAgPCBlKSB7CisgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICBwKys7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1TVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIGNoLCB1bnNpZ25lZCBjaGFyIG5lZWRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUpCitTVFJJTkdMSUIocmZpbmRfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwgU1RSSU5HTElCX0NIQVIgY2gpCiB7Ci0gICAgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpIHsKLSAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnB0ciA9IHM7Ci0gICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICplID0gcyArIG47Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlKSB7Ci0gICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1jaHIoKGNvbnN0IHZvaWQgKikgcHRyLCBuZWVkbGUsIChlIC0gcHRyKSAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIHB0ciA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgaWYgKHNpemVvZihTVFJJTkdMSUJfQ0hBUikgPT0gMSB8fCAqcHRyID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiAocHRyIC0gcyk7Ci0gICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLwotICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcDsKICNpZmRlZiBIQVZFX01FTVJDSFIKICAgICAvKiBtZW1yY2hyKCkgaXMgYSBHTlUgZXh0ZW5zaW9uLCBhdmFpbGFibGUgc2luY2UgZ2xpYmMgMi4xLjkxLgogICAgICAgIGl0IGRvZXNuJ3Qgc2VlbSBhcyBvcHRpbWl6ZWQgYXMgbWVtY2hyKCksIGJ1dCBpcyBzdGlsbCBxdWl0ZQotICAgICAgIGZhc3RlciB0aGFuIG91ciBoYW5kLXdyaXR0ZW4gbG9vcCBpbiBGQVNUU0VBUkNIIGJlbG93ICovCi0gICAgZWxzZSBpZiAobW9kZSA9PSBGQVNUX1JTRUFSQ0gpIHsKLSAgICAgICAgd2hpbGUgKG4gPiAwKSB7Ci0gICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZm91bmQ7Ci0gICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1yY2hyKChjb25zdCB2b2lkICopIHMsIG5lZWRsZSwgbiAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGZvdW5kID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBuID0gZm91bmQgLSBzOwotICAgICAgICAgICAgaWYgKHNpemVvZihTVFJJTkdMSUJfQ0hBUikgPT0gMSB8fCAqZm91bmQgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKLSAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KDApOyAvKiBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgICAgIGZhc3RlciB0aGFuIG91ciBoYW5kLXdyaXR0ZW4gbG9vcCBiZWxvdyAqLwogCi0jdW5kZWYgRE9fTUVNQ0hSCisgICAgaWYgKG4gPiAxMCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgIHAgPSBtZW1yY2hyKHMsIGNoLCBuKTsKKyAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICByZXR1cm4gLTE7CisjZWxzZQorICAgICAgICAvKiB1c2UgbWVtcmNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5CisgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9IGNoICYgMHhmZjsKKyAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KKyAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCisgICAgICAgICAgIGFuZCBVQ1M0IHJlcHJlc2VudGF0aW9ucy4gKi8KKyAgICAgICAgaWYgKG5lZWRsZSAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAobiA+IDApIHsKKyAgICAgICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1yY2hyKHMsIG5lZWRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICBwID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIG4gPSBwIC0gczsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyNlbmRpZiAgLyogSEFWRV9NRU1SQ0hSICovCisgICAgcCA9IHMgKyBuOworICAgIHdoaWxlIChwID4gcykgeworICAgICAgICBwLS07CisgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgIH0KKyAgICByZXR1cm4gLTE7CiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQpAQCAtOTksMjUgKzE0NSwxMSBAQAogICAgICAgICBpZiAobSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAvKiB1c2Ugc3BlY2lhbCBjYXNlIGZvciAxLWNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgICAgIGlmIChuID4gMTAgJiYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gKLSNpZmRlZiBIQVZFX01FTVJDSFIKLSAgICAgICAgICAgICAgICAgICAgfHwgbW9kZSA9PSBGQVNUX1JTRUFSQ0gKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICApKSB7Ci0gICAgICAgICAgICAvKiB1c2UgbWVtY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKLSAgICAgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGU7Ci0gICAgICAgICAgICBuZWVkbGUgPSBwWzBdICYgMHhmZjsKLSNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCi0gICAgICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbwotICAgICAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCi0gICAgICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCi0gICAgICAgICAgICBpZiAobmVlZGxlICE9IDApCi0jZW5kaWYKLSAgICAgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKQotICAgICAgICAgICAgICAgICAgICAgICAocywgbiwgcFswXSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobW9kZSA9PSBGQVNUX0NPVU5UKSB7CisgICAgICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKQorICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmaW5kX2NoYXIpKHMsIG4sIHBbMF0pOworICAgICAgICBlbHNlIGlmIChtb2RlID09IEZBU1RfUlNFQVJDSCkKKyAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIocmZpbmRfY2hhcikocywgbiwgcFswXSk7CisgICAgICAgIGVsc2UgeyAgLyogRkFTVF9DT1VOVCAqLwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CkBAIC0xMjUsMTQgKzE1Nyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF4Y291bnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCi0gICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0gZWxzZSB7ICAgIC8qIEZBU1RfUlNFQVJDSCAqLwotICAgICAgICAgICAgZm9yIChpID0gbiAtIDE7IGkgPiAtMTsgaS0tKQotICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKaW5kZXggMTQ4MTVmNi4uNTA5YjkyOSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaApAQCAtMTE3LDg1ICsxMTcsMyBAQAogfQogCiAjdW5kZWYgRk9STUFUX0JVRkZFUl9TSVpFCi0KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotCi0vKgotV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGVuc3VyZXMgdGhhdCB0aGUKLWZpcnN0IGFyZ3VtZW50IGlzIGEgdW5pY29kZSBvYmplY3QuCi0KLU5vdGUgdGhhdCB3ZSByZWNlaXZlIGEgcG9pbnRlciB0byB0aGUgcG9pbnRlciBvZiB0aGUgc3Vic3RyaW5nIG9iamVjdCwKLXNvIHdoZW4gd2UgY3JlYXRlIHRoYXQgb2JqZWN0IGluIHRoaXMgZnVuY3Rpb24gd2UgZG9uJ3QgREVDUkVGIGl0LAotYmVjYXVzZSBpdCBjb250aW51ZXMgbGl2aW5nIGluIHRoZSBjYWxsZXIgZnVuY3Rpb25zICh0aG9zZSBmdW5jdGlvbnMsCi1hZnRlciBmaW5pc2hpbmcgdXNpbmcgdGhlIHN1YnN0cmluZywgbXVzdCBERUNSRUYgaXQpLgotKi8KLQotUHlfTE9DQUxfSU5MSU5FKGludCkKLVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUpKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCi17Ci0gICAgUHlPYmplY3QgKnRtcF9zdWJzdHJpbmc7Ci0KLSAgICBpZihTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpIHsKLSAgICAgICAgdG1wX3N1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHRtcF9zdWJzdHJpbmcpOwotICAgICAgICBpZiAoIXRtcF9zdWJzdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgKnN1YnN0cmluZyA9IHRtcF9zdWJzdHJpbmc7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotI2Vsc2UgLyogIVNUUklOR0xJQl9JU19VTklDT0RFICovCi0KLS8qCi1XcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdoZXRoZXIgdGhlCi1maXJzdCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDAsIDI1NikuCi0KLUlmIHRoaXMgaXMgdGhlIGNhc2UsIHdyaXRlcyB0aGUgaW50ZWdlciB2YWx1ZSB0byB0aGUgYnl0ZSBwYXJhbWV0ZXIKLWFuZCBzZXRzIHN1Ym9iaiB0byBOVUxMLiBPdGhlcndpc2UsIHNldHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHN1Ym9iagotYW5kIGRvZXNuJ3QgdG91Y2ggYnl0ZS4gVGhlIG90aGVyIHBhcmFtZXRlcnMgYXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YKLXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkuCi0qLwotCi1QeV9MT0NBTF9JTkxJTkUoaW50KQotU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHNfYnl0ZSkoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1Ym9iaiwgY2hhciAqYnl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCi17Ci0gICAgUHlPYmplY3QgKnRtcF9zdWJvYmo7Ci0gICAgUHlfc3NpemVfdCBpdmFsOwotICAgIFB5T2JqZWN0ICplcnI7Ci0KLSAgICBpZighU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vib2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKCFQeU51bWJlcl9DaGVjayh0bXBfc3Vib2JqKSkgewotICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdCh0bXBfc3Vib2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKLSAgICBpZiAoaXZhbCA9PSAtMSkgewotICAgICAgICBlcnIgPSBQeUVycl9PY2N1cnJlZCgpOwotICAgICAgICBpZiAoZXJyICYmICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXJyLCBQeUV4Y19PdmVyZmxvd0Vycm9yKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+IDI1NSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgICpzdWJvYmogPSBOVUxMOwotICAgICpieXRlID0gKGNoYXIpaXZhbDsKLSAgICByZXR1cm4gMTsKLX0KLQotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKaW5kZXggZWIzZmU4OC4uOGNjYmMzMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaApAQCAtMSw2ICsxLDggQEAKIC8qIEZpbmRpbmcgdGhlIG9wdGltYWwgd2lkdGggb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGluIGEgYnVmZmVyICovCiAKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAiZmluZF9tYXhfY2hhci5oIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjZW5kaWYKIAogLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCiAgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLwpAQCAtMTI5LDUgKzEzMSw0IEBACiAjdW5kZWYgTUFYX0NIQVJfVUNTNAogCiAjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEgKi8KLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwogCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmggYi9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmgKaW5kZXggY2JmODFiZS4uNmYzMTRlMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaApAQCAtMSw2ICsxLDYgQEAKIC8qIHN0cmluZ2xpYjogYnl0ZXMgam9pbmluZyBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSICE9IDEKKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQogI2Vycm9yIGpvaW4uaCBvbmx5IGNvbXBhdGlibGUgd2l0aCBieXRlLXdpc2Ugc3RyaW5ncwogI2VuZGlmCiAKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmJ1ZnM7IGkrKykgewogICAgICAgICAgICAgUHlfc3NpemVfdCBuID0gYnVmZmVyc1tpXS5sZW47CiAgICAgICAgICAgICBjaGFyICpxID0gYnVmZmVyc1tpXS5idWY7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocCwgcSwgbik7CisgICAgICAgICAgICBtZW1jcHkocCwgcSwgbik7CiAgICAgICAgICAgICBwICs9IG47CiAgICAgICAgIH0KICAgICAgICAgZ290byBkb25lOwpAQCAtMTE2LDEyICsxMTYsMTIgQEAKICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICBjaGFyICpxOwogICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHNlcHN0ciwgc2VwbGVuKTsKKyAgICAgICAgICAgIG1lbWNweShwLCBzZXBzdHIsIHNlcGxlbik7CiAgICAgICAgICAgICBwICs9IHNlcGxlbjsKICAgICAgICAgfQogICAgICAgICBuID0gYnVmZmVyc1tpXS5sZW47CiAgICAgICAgIHEgPSBidWZmZXJzW2ldLmJ1ZjsKLSAgICAgICAgUHlfTUVNQ1BZKHAsIHEsIG4pOworICAgICAgICBtZW1jcHkocCwgcSwgbik7CiAgICAgICAgIHAgKz0gbjsKICAgICB9CiAgICAgZ290byBkb25lOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCmluZGV4IDZlMmYwNzMuLmRmNTAxZWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKQEAgLTIsOCArMiw4IEBACiAKICNpbmNsdWRlIDxsb2NhbGUuaD4KIAotI2lmbmRlZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotIyAgIGVycm9yICJsb2NhbGV1dGlsIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjaWYgIVNUUklOR0xJQl9JU19VTklDT0RFCisjICAgZXJyb3IgImxvY2FsZXV0aWwuaCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKaW5kZXggYjU1OWI1My4uYTMxNDU3MiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKQEAgLTEsMTQgKzEsMjEgQEAKLS8qIE5PVEU6IHRoaXMgQVBJIGlzIC1PTkxZLSBmb3IgdXNlIHdpdGggc2luZ2xlIGJ5dGUgY2hhcmFjdGVyIHN0cmluZ3MuICovCi0vKiBEbyBub3QgdXNlIGl0IHdpdGggVW5pY29kZS4gKi8KKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAidHJhbnNtb2dyaWZ5Lmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MiCisjZW5kaWYKIAogLyogdGhlIG1vcmUgY29tcGxpY2F0ZWQgbWV0aG9kcy4gIHBhcnRzIG9mIHRoZXNlIHNob3VsZCBiZSBwdWxsZWQgb3V0IGludG8gdGhlCiAgICBzaGFyZWQgY29kZSBpbiBieXRlc19tZXRob2RzLmMgdG8gY3V0IGRvd24gb24gZHVwbGljYXRlIGNvZGUgYmxvYXQuICAqLwogCi1QeURvY19TVFJWQVIoZXhwYW5kdGFic19fZG9jX18sCi0iQi5leHBhbmR0YWJzKHRhYnNpemU9OCkgLT4gY29weSBvZiBCXG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIGV4cGFuZGVkIHVzaW5nIHNwYWNlcy5cblwKLUlmIHRhYnNpemUgaXMgbm90IGdpdmVuLCBhIHRhYiBzaXplIG9mIDggY2hhcmFjdGVycyBpcyBhc3N1bWVkLiIpOworc3RhdGljIGlubGluZSBQeU9iamVjdCAqCityZXR1cm5fc2VsZihQeU9iamVjdCAqc2VsZikKK3sKKyNpZiAhU1RSSU5HTElCX01VVEFCTEUKKyAgICBpZiAoU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCoKIHN0cmluZ2xpYl9leHBhbmR0YWJzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCkBAIC04Myw3ICs5MCw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorc3RhdGljIGlubGluZSBQeU9iamVjdCAqCiBwYWQoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgbGVmdCwgUHlfc3NpemVfdCByaWdodCwgY2hhciBmaWxsKQogewogICAgIFB5T2JqZWN0ICp1OwpAQCAtOTMsMzkgKzEwMCwyNSBAQAogICAgIGlmIChyaWdodCA8IDApCiAgICAgICAgIHJpZ2h0ID0gMDsKIAotICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKLSNlbmRpZiAvKiBTVFJJTkdMSUJfTVVUQUJMRSAqLworICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCi0gICAgdSA9IFNUUklOR0xJQl9ORVcoTlVMTCwKLQkJCQkgICBsZWZ0ICsgU1RSSU5HTElCX0xFTihzZWxmKSArIHJpZ2h0KTsKKyAgICB1ID0gU1RSSU5HTElCX05FVyhOVUxMLCBsZWZ0ICsgU1RSSU5HTElCX0xFTihzZWxmKSArIHJpZ2h0KTsKICAgICBpZiAodSkgewogICAgICAgICBpZiAobGVmdCkKICAgICAgICAgICAgIG1lbXNldChTVFJJTkdMSUJfU1RSKHUpLCBmaWxsLCBsZWZ0KTsKLSAgICAgICAgUHlfTUVNQ1BZKFNUUklOR0xJQl9TVFIodSkgKyBsZWZ0LAotCSAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotCSAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKKyAgICAgICAgbWVtY3B5KFNUUklOR0xJQl9TVFIodSkgKyBsZWZ0LAorICAgICAgICAgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKKyAgICAgICAgICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikpOwogICAgICAgICBpZiAocmlnaHQpCiAgICAgICAgICAgICBtZW1zZXQoU1RSSU5HTElCX1NUUih1KSArIGxlZnQgKyBTVFJJTkdMSUJfTEVOKHNlbGYpLAotCQkgICBmaWxsLCByaWdodCk7CisgICAgICAgICAgICAgICAgICAgZmlsbCwgcmlnaHQpOwogICAgIH0KIAogICAgIHJldHVybiB1OwogfQogCi1QeURvY19TVFJWQVIobGp1c3RfX2RvY19fLAotIkIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlJldHVybiBCIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl9sanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xMzUsMjcgKzEyOCwxNCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxjOmxqdXN0IiwgJndpZHRoLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIHJldHVybiBwYWQoc2VsZiwgMCwgd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpLCBmaWxsY2hhcik7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJqdXN0X19kb2NfXywKLSJCLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJSZXR1cm4gQiByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCi0iZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfcmp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTY1LDI3ICsxNDUsMTQgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58YzpyanVzdCIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICByZXR1cm4gcGFkKHNlbGYsIHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKSwgMCwgZmlsbGNoYXIpOwogfQogCiAKLVB5RG9jX1NUUlZBUihjZW50ZXJfX2RvY19fLAotIkIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJSZXR1cm4gQiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguICBQYWRkaW5nIGlzXG4iCi0iZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX2NlbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTYsMTUgKzE2Myw4IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGM6Y2VudGVyIiwgJndpZHRoLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIG1hcmcgPSB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZik7CkBAIC0yMTMsMTIgKzE3Myw2IEBACiAgICAgcmV0dXJuIHBhZChzZWxmLCBsZWZ0LCBtYXJnIC0gbGVmdCwgZmlsbGNoYXIpOwogfQogCi1QeURvY19TVFJWQVIoemZpbGxfX2RvY19fLAotIkIuemZpbGwod2lkdGgpIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlBhZCBhIG51bWVyaWMgc3RyaW5nIEIgd2l0aCB6ZXJvcyBvbiB0aGUgbGVmdCwgdG8gZmlsbCBhIGZpZWxkXG4iCi0ib2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gIEIgaXMgbmV2ZXIgdHJ1bmNhdGVkLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX3pmaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTIzMSwyMSArMTg1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgewotICAgICAgICBpZiAoU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKAotICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCi0gICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKQotICAgICAgICAgICAgKTsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIGZpbGwgPSB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZik7CkBAIC0yNjIsNSArMjAyLDUwMCBAQAogICAgICAgICBwW2ZpbGxdID0gJzAnOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBzOworICAgIHJldHVybiBzOwogfQorCisKKy8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KKworI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQorCisKK3N0YXRpYyBQeV9zc2l6ZV90Citjb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywKKyAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIFB5X3NzaXplX3QgY291bnQgPSAwOworICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gdGFyZ2V0OworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHRhcmdldCArIHRhcmdldF9sZW47CisKKyAgICB3aGlsZSAoKHN0YXJ0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBjKSkgIT0gTlVMTCkgeworICAgICAgICBjb3VudCsrOworICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RhcnQgKz0gMTsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCisKKy8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KKworLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2ludGVybGVhdmUoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfczsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQsIGk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIC8qIDEgYXQgdGhlIGVuZCBwbHVzIDEgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyOworICAgICAgIGNvdW50ID0gbWluKG1heGNvdW50LCBzZWxmX2xlbiArIDEpICovCisgICAgaWYgKG1heGNvdW50IDw9IHNlbGZfbGVuKSB7CisgICAgICAgIGNvdW50ID0gbWF4Y291bnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLworICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgICAvKiAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOyAqLworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIGJ5dGVzIGFyZSB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47CisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIGlmICh0b19sZW4gPiAxKSB7CisgICAgICAgIC8qIExheSB0aGUgZmlyc3Qgb25lIGRvd24gKGd1YXJhbnRlZWQgdGhpcyB3aWxsIG9jY3VyKSAqLworICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgY291bnQgLT0gMTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgKnJlc3VsdF9zKysgPSAqc2VsZl9zKys7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdF9zWzBdID0gdG9fc1swXTsKKyAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICBjb3VudCAtPSAxOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgKnJlc3VsdF9zKysgPSAqc2VsZl9zKys7CisgICAgICAgICAgICByZXN1bHRfc1swXSA9IHRvX3NbMF07CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KKyAgICBtZW1jcHkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4gLSBpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFNwZWNpYWwgY2FzZSBmb3IgZGVsZXRpbmcgYSBzaW5nbGUgY2hhcmFjdGVyICovCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgdG89IiIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKworICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KKyAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgZnJvbV9jKTsKKyAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgc3RhcnQgPSBuZXh0ICsgMTsKKyAgICB9CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisKKyAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgLyogbm8gbWF0Y2hlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOworICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7CisKKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKworICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgc3RhcnQgPSBuZXh0ICsgZnJvbV9sZW47CisgICAgfQorICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT09MSwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqbmV4dDsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOworCisgICAgaWYgKG5leHQgPT0gTlVMTCkgeworICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNlbGZfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworICAgIG1lbWNweShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7CisKKyAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLworICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgKG5leHQgLSBzZWxmX3MpOworICAgICpzdGFydCA9IHRvX2M7CisgICAgc3RhcnQrKzsKKyAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOworCisgICAgd2hpbGUgKC0tbWF4Y291bnQgPiAwKSB7CisgICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGZyb21fYyk7CisgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgKm5leHQgPSB0b19jOworICAgICAgICBzdGFydCA9IG5leHQgKyAxOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3MsICpzdGFydDsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIC8qIFRoZSByZXN1bHQgYnl0ZXMgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHNlbGZfcywgc2VsZl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICBpZiAob2Zmc2V0ID09IC0xKSB7CisgICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgc2VsZl9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKKworICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCisgICAgc3RhcnQgPSAgcmVzdWx0X3MgKyBvZmZzZXQ7CisgICAgbWVtY3B5KHN0YXJ0LCB0b19zLCBmcm9tX2xlbik7CisgICAgc3RhcnQgKz0gZnJvbV9sZW47CisgICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKKworICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtZW1jcHkoc3RhcnQgKyBvZmZzZXQsIHRvX3MsIGZyb21fbGVuKTsKKyAgICAgICAgc3RhcnQgKz0gb2Zmc2V0ICsgZnJvbV9sZW47CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7CisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLworICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBmcm9tX2MpOworICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKKyAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgKz0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgPSBuZXh0ICsgMTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLworICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZyhQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLworICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIGZyb21fbGVuKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKKyAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKKyAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCArIGZyb21fbGVuOworICAgICAgICB9CisgICAgfQorICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2UoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgaWYgKG1heGNvdW50IDwgMCkgeworICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOworICAgIH0gZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBTVFJJTkdMSUJfTEVOKHNlbGYpID09IDApIHsKKyAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogSGFuZGxlIHplcm8tbGVuZ3RoIHNwZWNpYWwgY2FzZXMgKi8KKyAgICBpZiAoZnJvbV9sZW4gPT0gMCkgeworICAgICAgICBpZiAodG9fbGVuID09IDApIHsKKyAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICAgICAgfQorICAgICAgICAvKiBpbnNlcnQgdGhlICd0bycgYnl0ZXMgZXZlcnl3aGVyZS4gICAgKi8KKyAgICAgICAgLyogICAgPj4+IGIiUHl0aG9uIi5yZXBsYWNlKGIiIiwgYiIuIikgICovCisgICAgICAgIC8qICAgIGInLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAqLworICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICB9CisKKyAgICAvKiBFeGNlcHQgZm9yIGIiIi5yZXBsYWNlKGIiIiwgYiJBIikgPT0gYiJBIiB0aGVyZSBpcyBubyB3YXkgYmV5b25kIHRoaXMgKi8KKyAgICAvKiBwb2ludCBmb3IgYW4gZW1wdHkgc2VsZiBieXRlcyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBieXRlcyAqLworICAgIC8qIFNwZWNpYWwgY2FzZSBzbyB0aGUgcmVtYWluaW5nIGNvZGUgYWx3YXlzIGdldHMgYSBub24tZW1wdHkgYnl0ZXMgKi8KKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA9PSAwKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICBpZiAodG9fbGVuID09IDApIHsKKyAgICAgICAgLyogZGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiAnZnJvbScgYnl0ZXMgKi8KKyAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcigKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIG1heGNvdW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIG1heGNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYm90aCBieXRlcyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLworCisgICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgeworICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCB0b19zWzBdLCBtYXhjb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KKyAgICBpZiAoZnJvbV9sZW4gPT0gMSkgeworICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcigKKyAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbGVuKCdmcm9tJyk+PTIsIGxlbigndG8nKT49MSAqLworICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nKAorICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgfQorfQorCisjdW5kZWYgZmluZGNoYXIKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCmluZGV4IGJlMDliNWYuLjE0ZmEyOGUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaApAQCAtNjcsNyArNjcsNyBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHN0ci0+c3RyLCBzdHItPnN0YXJ0LCBzdHItPmVuZCk7CiB9CiAKLS8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnN0ciBpcyBOVUxMLCByZXR1cm4gTm9uZSAqLworLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+c3RyIGlzIE5VTEwsIHJldHVybiBhIG5ldyBlbXB0eSBzdHJpbmcgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3Rfb3JfZW1wdHkoU3ViU3RyaW5nICpzdHIpCiB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cnVjdHNlcS5jIGIvT2JqZWN0cy9zdHJ1Y3RzZXEuYwppbmRleCA2NjQzNDRiLi5lMzE1Y2JhIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cnVjdHNlcS5jCisrKyBiL09iamVjdHMvc3RydWN0c2VxLmMKQEAgLTQsOSArNCw5IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKLXN0YXRpYyBjaGFyIHZpc2libGVfbGVuZ3RoX2tleVtdID0gIm5fc2VxdWVuY2VfZmllbGRzIjsKLXN0YXRpYyBjaGFyIHJlYWxfbGVuZ3RoX2tleVtdID0gIm5fZmllbGRzIjsKLXN0YXRpYyBjaGFyIHVubmFtZWRfZmllbGRzX2tleVtdID0gIm5fdW5uYW1lZF9maWVsZHMiOworc3RhdGljIGNvbnN0IGNoYXIgdmlzaWJsZV9sZW5ndGhfa2V5W10gPSAibl9zZXF1ZW5jZV9maWVsZHMiOworc3RhdGljIGNvbnN0IGNoYXIgcmVhbF9sZW5ndGhfa2V5W10gPSAibl9maWVsZHMiOworc3RhdGljIGNvbnN0IGNoYXIgdW5uYW1lZF9maWVsZHNfa2V5W10gPSAibl91bm5hbWVkX2ZpZWxkcyI7CiAKIC8qIEZpZWxkcyB3aXRoIHRoaXMgbmFtZSBoYXZlIG9ubHkgYSBmaWVsZCBpbmRleCwgbm90IGEgZmllbGQgbmFtZS4KICAgIFRoZXkgYXJlIG9ubHkgYWxsb3dlZCBmb3IgaW5kaWNlcyA8IG5fdmlzaWJsZV9maWVsZHMuICovCkBAIC0xNiwxNCArMTYsMTQgQEAKIF9QeV9JREVOVElGSUVSKG5fdW5uYW1lZF9maWVsZHMpOwogCiAjZGVmaW5lIFZJU0lCTEVfU0laRShvcCkgUHlfU0laRShvcCkKLSNkZWZpbmUgVklTSUJMRV9TSVpFX1RQKHRwKSBQeUxvbmdfQXNMb25nKCBcCisjZGVmaW5lIFZJU0lCTEVfU0laRV9UUCh0cCkgUHlMb25nX0FzU3NpemVfdCggXAogICAgICAgICAgICAgICAgICAgICAgIF9QeURpY3RfR2V0SXRlbUlkKCh0cCktPnRwX2RpY3QsICZQeUlkX25fc2VxdWVuY2VfZmllbGRzKSkKIAotI2RlZmluZSBSRUFMX1NJWkVfVFAodHApIFB5TG9uZ19Bc0xvbmcoIFwKKyNkZWZpbmUgUkVBTF9TSVpFX1RQKHRwKSBQeUxvbmdfQXNTc2l6ZV90KCBcCiAgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl9maWVsZHMpKQogI2RlZmluZSBSRUFMX1NJWkUob3ApIFJFQUxfU0laRV9UUChQeV9UWVBFKG9wKSkKIAotI2RlZmluZSBVTk5BTUVEX0ZJRUxEU19UUCh0cCkgUHlMb25nX0FzTG9uZyggXAorI2RlZmluZSBVTk5BTUVEX0ZJRUxEU19UUCh0cCkgUHlMb25nX0FzU3NpemVfdCggXAogICAgICAgICAgICAgICAgICAgICAgIF9QeURpY3RfR2V0SXRlbUlkKCh0cCktPnRwX2RpY3QsICZQeUlkX25fdW5uYW1lZF9maWVsZHMpKQogI2RlZmluZSBVTk5BTUVEX0ZJRUxEUyhvcCkgVU5OQU1FRF9GSUVMRFNfVFAoUHlfVFlQRShvcCkpCiAKQEAgLTE2NCw3ICsxNjQsOCBAQAogI2RlZmluZSBUWVBFX01BWFNJWkUgMTAwCiAKICAgICBQeVR5cGVPYmplY3QgKnR5cCA9IFB5X1RZUEUob2JqKTsKLSAgICBpbnQgaSwgcmVtb3ZlbGFzdCA9IDA7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCByZW1vdmVsYXN0ID0gMDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBjaGFyIGJ1ZltSRVBSX0JVRkZFUl9TSVpFXTsKICAgICBjaGFyICplbmRvZmJ1ZiwgKnBidWYgPSBidWY7CkBAIC0yMzYsOCArMjM3LDcgQEAKICAgICBQeU9iamVjdCogdHVwID0gTlVMTDsKICAgICBQeU9iamVjdCogZGljdCA9IE5VTEw7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG5fZmllbGRzLCBuX3Zpc2libGVfZmllbGRzLCBuX3VubmFtZWRfZmllbGRzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3Qgbl9maWVsZHMsIG5fdmlzaWJsZV9maWVsZHMsIG5fdW5uYW1lZF9maWVsZHMsIGk7CiAKICAgICBuX2ZpZWxkcyA9IFJFQUxfU0laRShzZWxmKTsKICAgICBuX3Zpc2libGVfZmllbGRzID0gVklTSUJMRV9TSVpFKHNlbGYpOwpAQCAtMzI1LDcgKzMyNSw3IEBACiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlNZW1iZXJEZWYqIG1lbWJlcnM7Ci0gICAgaW50IG5fbWVtYmVycywgbl91bm5hbWVkX21lbWJlcnMsIGksIGs7CisgICAgUHlfc3NpemVfdCBuX21lbWJlcnMsIG5fdW5uYW1lZF9tZW1iZXJzLCBpLCBrOwogICAgIFB5T2JqZWN0ICp2OwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwpAQCAtMzczLDkgKzM3Myw5IEBACiAgICAgUHlfSU5DUkVGKHR5cGUpOwogCiAgICAgZGljdCA9IHR5cGUtPnRwX2RpY3Q7Ci0jZGVmaW5lIFNFVF9ESUNUX0ZST01fSU5UKGtleSwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBTRVRfRElDVF9GUk9NX1NJWkUoa2V5LCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHYgPT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwga2V5LCB2KSA8IDApIHsgICAgICAgICAgIFwKQEAgLTM4NSw5ICszODUsOSBAQAogICAgICAgICBQeV9ERUNSRUYodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi0gICAgU0VUX0RJQ1RfRlJPTV9JTlQodmlzaWJsZV9sZW5ndGhfa2V5LCBkZXNjLT5uX2luX3NlcXVlbmNlKTsKLSAgICBTRVRfRElDVF9GUk9NX0lOVChyZWFsX2xlbmd0aF9rZXksIG5fbWVtYmVycyk7Ci0gICAgU0VUX0RJQ1RfRlJPTV9JTlQodW5uYW1lZF9maWVsZHNfa2V5LCBuX3VubmFtZWRfbWVtYmVycyk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHZpc2libGVfbGVuZ3RoX2tleSwgZGVzYy0+bl9pbl9zZXF1ZW5jZSk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHJlYWxfbGVuZ3RoX2tleSwgbl9tZW1iZXJzKTsKKyAgICBTRVRfRElDVF9GUk9NX1NJWkUodW5uYW1lZF9maWVsZHNfa2V5LCBuX3VubmFtZWRfbWVtYmVycyk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvdHVwbGVvYmplY3QuYyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwppbmRleCA3OTIwZmVjLi5jMGZmNDk5IDEwMDY0NAotLS0gYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCkBAIC0zNiw2ICszNiwxNiBAQAogc3RhdGljIHZvaWQKIHNob3dfdHJhY2sodm9pZCkKIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93YWxsb2Njb3VudCk7CisKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93YWxsb2Njb3VudCk7CisgICAgaWYgKHZhbHVlICE9IFB5X1RydWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZwcmludGYoc3RkZXJyLCAiVHVwbGVzIGNyZWF0ZWQ6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCiAgICAgICAgIGNvdW50X3RyYWNrZWQgKyBjb3VudF91bnRyYWNrZWQpOwogICAgIGZwcmludGYoc3RkZXJyLCAiVHVwbGVzIHRyYWNrZWQgYnkgdGhlIEdDOiAlIiBQWV9GT1JNQVRfU0laRV9UCkBAIC0xNDksNyArMTU5LDYgQEAKIGludAogUHlUdXBsZV9TZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqbmV3aXRlbSkKIHsKLSAgICBQeU9iamVjdCAqb2xkaXRlbTsKICAgICBQeU9iamVjdCAqKnA7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKG9wKSB8fCBvcC0+b2JfcmVmY250ICE9IDEpIHsKICAgICAgICAgUHlfWERFQ1JFRihuZXdpdGVtKTsKQEAgLTE2Myw5ICsxNzIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHAgPSAoKFB5VHVwbGVPYmplY3QgKilvcCkgLT4gb2JfaXRlbSArIGk7Ci0gICAgb2xkaXRlbSA9ICpwOwotICAgICpwID0gbmV3aXRlbTsKLSAgICBQeV9YREVDUkVGKG9sZGl0ZW0pOworICAgIFB5X1hTRVRSRUYoKnAsIG5ld2l0ZW0pOwogICAgIHJldHVybiAwOwogfQogCkBAIC00NDYsOSArNDUzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2RlZmluZSBiICgoUHlUdXBsZU9iamVjdCAqKWJiKQotICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKLSAgICBpZiAoc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPiBQWV9TU0laRV9UX01BWCAtIFB5X1NJWkUoYikpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKICAgICBucCA9IChQeVR1cGxlT2JqZWN0ICopIFB5VHVwbGVfTmV3KHNpemUpOwogICAgIGlmIChucCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCBlOTM4NGFiLi5iZmJlYjQwIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtNTMsMTAgKzUzLDEyIEBACiBfUHlfSURFTlRJRklFUihfX2dldGF0dHJpYnV0ZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fZ2V0aXRlbV9fKTsKIF9QeV9JREVOVElGSUVSKF9faGFzaF9fKTsKK19QeV9JREVOVElGSUVSKF9faW5pdF9zdWJjbGFzc19fKTsKIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOwogX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX25ld19fKTsKK19QeV9JREVOVElGSUVSKF9fc2V0X25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiBfUHlfSURFTlRJRklFUihidWlsdGlucyk7CiAKQEAgLTQ1MiwyNyArNDU0LDMwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewotICAgIGNoYXIgKnM7CisgICAgUHlPYmplY3QgKm1vZDsKIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKLSAgICAgICAgUHlPYmplY3QgKm1vZCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18pOwotICAgICAgICBpZiAoIW1vZCkgeworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJfX21vZHVsZV9fIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5X1hJTkNSRUYobW9kKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKKyAgICAgICAgUHlfSU5DUkVGKG1vZCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqbmFtZTsKLSAgICAgICAgcyA9IHN0cnJjaHIodHlwZS0+dHBfbmFtZSwgJy4nKTsKLSAgICAgICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdHJyY2hyKHR5cGUtPnRwX25hbWUsICcuJyk7CisgICAgICAgIGlmIChzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1vZCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCAoUHlfc3NpemVfdCkocyAtIHR5cGUtPnRwX25hbWUpKTsKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2J1aWx0aW5zKTsKLSAgICAgICAgUHlfWElOQ1JFRihuYW1lKTsKLSAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICBpZiAobW9kICE9IE5VTEwpCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJm1vZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb2QgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9idWlsdGlucyk7CisgICAgICAgICAgICBQeV9YSU5DUkVGKG1vZCk7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIG1vZDsKIH0KIAogc3RhdGljIGludApAQCAtNTAwLDcgKzUwNSw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWElOQ1JFRihtb2QpOworICAgIFB5X0lOQ1JFRihtb2QpOwogICAgIHJldHVybiBtb2Q7CiB9CiAKQEAgLTU0Nyw4ICs1NTIsOCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpiZXN0X2Jhc2UoUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IG1yb19pbnRlcm5hbChQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKiopOwotUHlfTE9DQUxfSU5MSU5FKGludCkgdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKLXN0YXRpYyBpbnQgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICosIGNoYXIgKik7CitzdGF0aWMgaW50IHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBhZGRfc3ViY2xhc3MoUHlUeXBlT2JqZWN0KiwgUHlUeXBlT2JqZWN0Kik7CiBzdGF0aWMgaW50IGFkZF9hbGxfc3ViY2xhc3NlcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpiYXNlcyk7CiBzdGF0aWMgdm9pZCByZW1vdmVfc3ViY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKQEAgLTg4OCwyNSArODkzLDMzIEBACiAjZW5kaWYKIAogICAgIG9iaiA9IHR5cGUtPnRwX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAob2JqICE9IE5VTEwpIHsKLSAgICAgICAgLyogVWdseSBleGNlcHRpb246IHdoZW4gdGhlIGNhbGwgd2FzIHR5cGUoc29tZXRoaW5nKSwKLSAgICAgICAgICAgZG9uJ3QgY2FsbCB0cF9pbml0IG9uIHRoZSByZXN1bHQuICovCi0gICAgICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgotICAgICAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKLSAgICAgICAgICAgIChrd2RzID09IE5VTEwgfHwKLSAgICAgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCi0gICAgICAgICAgIGl0IHdvbid0IGJlIGluaXRpYWxpemVkLiAqLwotICAgICAgICBpZiAoIVB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYmopLCB0eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7Ci0gICAgICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGludCByZXMgPSB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcyk7Ci0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICAgICAgICAgIG9iaiA9IE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgb2JqID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKFB5T2JqZWN0Kil0eXBlLCBvYmosIE5VTEwpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBVZ2x5IGV4Y2VwdGlvbjogd2hlbiB0aGUgY2FsbCB3YXMgdHlwZShzb21ldGhpbmcpLAorICAgICAgIGRvbid0IGNhbGwgdHBfaW5pdCBvbiB0aGUgcmVzdWx0LiAqLworICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgorICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgorICAgICAgICAoa3dkcyA9PSBOVUxMIHx8CisgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKKyAgICAgICAgcmV0dXJuIG9iajsKKworICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCisgICAgICAgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuICovCisgICAgaWYgKCFQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2JqKSwgdHlwZSkpCisgICAgICAgIHJldHVybiBvYmo7CisKKyAgICB0eXBlID0gUHlfVFlQRShvYmopOworICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IHJlcyA9IHR5cGUtPnRwX2luaXQob2JqLCBhcmdzLCBrd2RzKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgb2JqID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG9iajsKQEAgLTEzMjQsNyArMTMzNyw3IEBACiAKIC8qIHR5cGUgdGVzdCB3aXRoIHN1YmNsYXNzaW5nIHN1cHBvcnQgKi8KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbnQKIHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqYSwgUHlUeXBlT2JqZWN0ICpiKQogewogICAgIGRvIHsKQEAgLTE0MTIsMzYgKzE0MjUsMzggQEAKICAgIGFzIGxvb2t1cF9tZXRob2QgdG8gY2FjaGUgdGhlIGludGVybmVkIG5hbWUgc3RyaW5nIG9iamVjdC4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7Ci0gICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMLCAqcmV0dmFsOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1laWQtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkKKyAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZ3M7CisKKyAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIHZhX2VuZCh2YSk7CiAKLSAgICB2YV9lbmQodmEpOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQogCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogCiAgICAgcmV0dXJuIHJldHZhbDsKQEAgLTE0NTAsMzYgKzE0NjUsMzggQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tYXliZShQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwotICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTCwgKnJldHZhbDsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KQorICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgeworICAgICAgICBQeU9iamVjdCAqYXJnczsKKworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgdmFfZW5kKHZhKTsKIAotICAgIHZhX2VuZCh2YSk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKIAotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9CiAKLSAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTUzMSw3ICsxNTQ4LDYgQEAKICAgICBQeU9iamVjdCAqbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2xzLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgICAgICBuYW1lID0gUHlPYmplY3RfUmVwcihjbHMpOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMKQpAQCAtMjAyNSw2ICsyMDQxLDggQEAKIHN0YXRpYyBpbnQgb2JqZWN0X2luaXQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IHVwZGF0ZV9zbG90KFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGZpeHVwX3Nsb3RfZGlzcGF0Y2hlcnMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBzZXRfbmFtZXMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogLyoKICAqIEhlbHBlcnMgZm9yICBfX2RpY3RfXyBkZXNjcmlwdG9yLiAgV2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgdGhlIGRpY3RzCkBAIC0yMDg5LDcgKzIxMDcsNyBAQAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyOworICAgIFB5T2JqZWN0ICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTIxMjAsMTAgKzIxMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICAqZGljdHB0ciA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfWFNFVFJFRigqZGljdHB0ciwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yMjAyLDcgKzIyMTgsOCBAQAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGt3ZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dkcykpOwogCi0gICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgeworICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKKyAgICAgICAgUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlLl9faW5pdF9fKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjI2OSw4ICsyMjg2LDcgQEAKIHR5cGVfbmV3KFB5VHlwZU9iamVjdCAqbWV0YXR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqbmFtZSwgKmJhc2VzID0gTlVMTCwgKm9yaWdfZGljdCwgKmRpY3QgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibmFtZSIsICJiYXNlcyIsICJkaWN0IiwgMH07Ci0gICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHM7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHMsICpjZWxsOwogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CkBAIC0yMjc4LDE2ICsyMjk0LDE5IEBACiAgICAgaW50IGosIG1heV9hZGRfZGljdCwgbWF5X2FkZF93ZWFrLCBhZGRfZGljdCwgYWRkX3dlYWs7CiAgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX3Nsb3RzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NjZWxsX18pOwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa3dkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2RzKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2U6IHR5cGUoeCkgc2hvdWxkIHJldHVybiB4LT5vYl90eXBlICovCi0gICAgeworICAgIC8qIFdlIG9ubHkgd2FudCB0eXBlIGl0c2VsZiB0byBhY2NlcHQgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgTm90ZTogV2UgZG9uJ3QgY2FsbCBQeVR5cGVfQ2hlY2tFeGFjdCBhcyB0aGF0IGFsc28gYWxsb3dzIHN1YmNsYXNzZXMgKi8KKyAgICBpZiAobWV0YXR5cGUgPT0gJlB5VHlwZV9UeXBlKSB7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG5rd2RzID0ga3dkcyA9PSBOVUxMID8gMCA6IFB5RGljdF9TaXplKGt3ZHMpOwogCi0gICAgICAgIGlmIChQeVR5cGVfQ2hlY2tFeGFjdChtZXRhdHlwZSkgJiYgbmFyZ3MgPT0gMSAmJiBua3dkcyA9PSAwKSB7CisgICAgICAgIGlmIChuYXJncyA9PSAxICYmIG5rd2RzID09IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKHgpKTsKICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgUHlfVFlQRSh4KTsKQEAgLTIyOTYsNyArMjMxNSw3IEBACiAgICAgICAgIC8qIFNGIGJ1ZyA0NzUzMjcgLS0gaWYgdGhhdCBkaWRuJ3QgdHJpZ2dlciwgd2UgbmVlZCAzCiAgICAgICAgICAgIGFyZ3VtZW50cy4gYnV0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBiZWxvdyBtYXkgZ2l2ZQogICAgICAgICAgICBhIG1zZyBzYXlpbmcgdHlwZSgpIG5lZWRzIGV4YWN0bHkgMy4gKi8KLSAgICAgICAgaWYgKG5hcmdzICsgbmt3ZHMgIT0gMykgeworICAgICAgICBpZiAobmFyZ3MgIT0gMykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSgpIHRha2VzIDEgb3IgMyBhcmd1bWVudHMiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMwNCwxMCArMjMyMyw4IEBACiAgICAgfQogCiAgICAgLyogQ2hlY2sgYXJndW1lbnRzOiAobmFtZSwgYmFzZXMsIGRpY3QpICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyFPITp0eXBlLl9fbmV3X18iLCAmbmFtZSwgJlB5VHVwbGVfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJhc2VzLCAmUHlEaWN0X1R5cGUsICZvcmlnX2RpY3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIERldGVybWluZSB0aGUgcHJvcGVyIG1ldGF0eXBlIHRvIGRlYWwgd2l0aCB0aGlzOiAqLwpAQCAtMjU0NCw3ICsyNTYxLDcgQEAKICAgICB9CiAgICAgZXQtPmh0X3F1YWxuYW1lID0gcXVhbG5hbWUgPyBxdWFsbmFtZSA6IGV0LT5odF9uYW1lOwogICAgIFB5X0lOQ1JFRihldC0+aHRfcXVhbG5hbWUpOwotICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIFB5RGljdF9EZWxJdGVtKGRpY3QsIFB5SWRfX19xdWFsbmFtZV9fLm9iamVjdCkgPCAwKQorICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIF9QeURpY3RfRGVsSXRlbUlkKGRpY3QsICZQeUlkX19fcXVhbG5hbWVfXykgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2RvYyB0byBhIGNvcHkgb2YgZGljdFsnX19kb2NfXyddLCBpZiB0aGUgbGF0dGVyIGlzIHRoZXJlCkBAIC0yNTg3LDYgKzI2MDQsMjAgQEAKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCisgICAgLyogU3BlY2lhbC1jYXNlIF9faW5pdF9zdWJjbGFzc19fOiBpZiBpdCdzIGEgcGxhaW4gZnVuY3Rpb24sCisgICAgICAgbWFrZSBpdCBhIGNsYXNzbWV0aG9kICovCisgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIGlmICh0bXAgIT0gTlVMTCAmJiBQeUZ1bmN0aW9uX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgdG1wID0gUHlDbGFzc01ldGhvZF9OZXcodG1wKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19faW5pdF9zdWJjbGFzc19fLCB0bXApIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKwogICAgIC8qIEFkZCBkZXNjcmlwdG9ycyBmb3IgY3VzdG9tIHNsb3RzIGZyb20gX19zbG90c19fLCBvciBmb3IgX19kaWN0X18gKi8KICAgICBtcCA9IFB5SGVhcFR5cGVfR0VUX01FTUJFUlMoZXQpOwogICAgIHNsb3RvZmZzZXQgPSBiYXNlLT50cF9iYXNpY3NpemU7CkBAIC0yNjU2LDYgKzI2ODcsMTQgQEAKICAgICBlbHNlCiAgICAgICAgIHR5cGUtPnRwX2ZyZWUgPSBQeU9iamVjdF9EZWw7CiAKKyAgICAvKiBzdG9yZSB0eXBlIGluIGNsYXNzJyBjZWxsICovCisgICAgY2VsbCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fY2xhc3NjZWxsX18pOworICAgIGlmIChjZWxsICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKSB7CisgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgKFB5T2JqZWN0ICopIHR5cGUpOworICAgICAgICBfUHlEaWN0X0RlbEl0ZW1JZChkaWN0LCAmUHlJZF9fX2NsYXNzY2VsbF9fKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisKICAgICAvKiBJbml0aWFsaXplIHRoZSByZXN0ICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjY3LDYgKzI3MDYsMTIgQEAKICAgICAgICAgZXQtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKICAgICB9CiAKKyAgICBpZiAoc2V0X25hbWVzKHR5cGUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChpbml0X3N1YmNsYXNzKHR5cGUsIGt3ZHMpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdHlwZTsKIApAQCAtMjY3OCw3ICsyNzIzLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CitzdGF0aWMgY29uc3Qgc2hvcnQgc2xvdG9mZnNldHNbXSA9IHsKICAgICAtMSwgLyogaW52YWxpZCBzbG90ICovCiAjaW5jbHVkZSAidHlwZXNsb3RzLmluYyIKIH07CkBAIC0yODAzLDEzICsyODQ4LDE2IEBACiAgICAgLyogU2V0IHR5cGUuX19tb2R1bGVfXyAqLwogICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CiAgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICBpbnQgZXJyOwogICAgICAgICBtb2RuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpOwogICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgbW9kbmFtZSk7CisgICAgICAgIGVyciA9IF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIG1vZG5hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CisgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCiAgICAgICAgICAgICAgICAgImJ1aWx0aW4gdHlwZSAlLjIwMHMgaGFzIG5vIF9fbW9kdWxlX18gYXR0cmlidXRlIiwKQEAgLTM2MTEsNyArMzY1OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY2hhciogYXR0cikKK2NvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY29uc3QgY2hhciogYXR0cikKIHsKICAgICBQeVR5cGVPYmplY3QgKm5ld2Jhc2UsICpvbGRiYXNlOwogCkBAIC0zNzg3LDcgKzM4MzUsNyBAQAogICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeVR5cGVfR2V0U2xvdE5hbWVzKFB5VHlwZU9iamVjdCAqY2xzKQogewogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtMzg0MCw3ICszODg4LDcgQEAKICAgICByZXR1cm4gc2xvdG5hbWVzOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9HZXRTdGF0ZShQeU9iamVjdCAqb2JqLCBpbnQgcmVxdWlyZWQpCiB7CiAgICAgUHlPYmplY3QgKnN0YXRlOwpAQCAtMzg4Nyw2ICszOTM1LDI0IEBACiAgICAgICAgIH0KIAogICAgICAgICBhc3NlcnQoc2xvdG5hbWVzID09IFB5X05vbmUgfHwgUHlMaXN0X0NoZWNrKHNsb3RuYW1lcykpOworICAgICAgICBpZiAocmVxdWlyZWQpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgYmFzaWNzaXplID0gUHlCYXNlT2JqZWN0X1R5cGUudHBfYmFzaWNzaXplOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfZGljdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfd2Vha2xpc3RvZmZzZXQpCisgICAgICAgICAgICAgICAgYmFzaWNzaXplICs9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopICogUHlfU0laRShzbG90bmFtZXMpOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfYmFzaWNzaXplID4gYmFzaWNzaXplKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RuYW1lcyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcGlja2xlICUuMjAwcyBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSAmJiBQeV9TSVpFKHNsb3RuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2xvdHM7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHNsb3RuYW1lc19zaXplLCBpOwpAQCAtMzk0MSw3ICs0MDA3LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogSWYgd2UgZm91bmQgc29tZSBzbG90IGF0dHJpYnV0ZXMsIHBhY2sgdGhlbSBpbiBhIHR1cGxlIGFsb25nCi0gICAgICAgICAgICAgICB0aGUgb3JnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KKyAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KICAgICAgICAgICAgIGlmIChQeURpY3RfU2l6ZShzbG90cykgPiAwKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlMjsKIApAQCAtMzk2OCw3ICs0MDM0LDcgQEAKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIF9QeU9iamVjdF9HZXROZXdBcmd1bWVudHMoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKiphcmdzLCBQeU9iamVjdCAqKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqZ2V0bmV3YXJncywgKmdldG5ld2FyZ3NfZXg7CkBAIC00MDY0LDcgKzQxMzAsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBfUHlPYmplY3RfR2V0SXRlbXNJdGVyKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICoqbGlzdGl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmRpY3RpdGVtcykKIHsKQEAgLTQxMTAsNyArNDE3Niw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1yZWR1Y2VfbmV3b2JqKFB5T2JqZWN0ICpvYmosIGludCBwcm90bykKK3JlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtNDE2Myw3ICs0MjI5LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0KLSAgICBlbHNlIGlmIChwcm90byA+PSA0KSB7CisgICAgZWxzZSBpZiAoYXJncyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwogCiAgICAgICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfZXhfXyk7CkBAIC00MTgyLDEzICs0MjQ4LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVzdCB1c2UgcHJvdG9jb2wgNCBvciBncmVhdGVyIHRvIGNvcHkgdGhpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0OyBzaW5jZSBfX2dldG5ld2FyZ3NfZXhfXyByZXR1cm5lZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudHMuIik7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgLyogYXJncyA9PSBOVUxMICovCiAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwotICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQyMzYsNyArNDI5OCw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcsICpyZXM7CiAKICAgICBpZiAocHJvdG8gPj0gMikKLSAgICAgICAgcmV0dXJuIHJlZHVjZV9uZXdvYmooc2VsZiwgcHJvdG8pOworICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmKTsKIAogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmICghY29weXJlZykKQEAgLTQzMTgsNiArNDM4MCwxOCBAQAogIk5vdEltcGxlbWVudGVkLCB0aGUgbm9ybWFsIGFsZ29yaXRobSBpcyB1c2VkLiAgT3RoZXJ3aXNlLCBpdFxuIgogIm92ZXJyaWRlcyB0aGUgbm9ybWFsIGFsZ29yaXRobSAoYW5kIHRoZSBvdXRjb21lIGlzIGNhY2hlZCkuXG4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK29iamVjdF9pbml0X3N1YmNsYXNzKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihvYmplY3RfaW5pdF9zdWJjbGFzc19kb2MsCisiVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBjbGFzcyBpcyBzdWJjbGFzc2VkLlxuIgorIlxuIgorIlRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy4gSXQgbWF5IGJlXG4iCisib3ZlcnJpZGRlbiB0byBleHRlbmQgc3ViY2xhc3Nlcy5cbiIpOworCiAvKgogICAgZnJvbSBQRVAgMzEwMSwgdGhpcyBjb2RlIGltcGxlbWVudHM6CiAKQEAgLTQ0MjIsNiArNDQ5Niw4IEBACiAgICAgIFB5RG9jX1NUUigiaGVscGVyIGZvciBwaWNrbGUiKX0sCiAgICAgeyJfX3N1YmNsYXNzaG9va19fIiwgb2JqZWN0X3N1YmNsYXNzaG9vaywgTUVUSF9DTEFTUyB8IE1FVEhfVkFSQVJHUywKICAgICAgb2JqZWN0X3N1YmNsYXNzaG9va19kb2N9LAorICAgIHsiX19pbml0X3N1YmNsYXNzX18iLCBvYmplY3RfaW5pdF9zdWJjbGFzcywgTUVUSF9DTEFTUyB8IE1FVEhfTk9BUkdTLAorICAgICBvYmplY3RfaW5pdF9zdWJjbGFzc19kb2N9LAogICAgIHsiX19mb3JtYXRfXyIsIG9iamVjdF9mb3JtYXQsIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJkZWZhdWx0IG9iamVjdCBmb3JtYXR0ZXIiKX0sCiAgICAgeyJfX3NpemVvZl9fIiwgb2JqZWN0X3NpemVvZiwgTUVUSF9OT0FSR1MsCkBAIC01MzczLDcgKzU0NDksNyBAQAogLyogSGVscGVyIHRvIGNoZWNrIGZvciBvYmplY3QuX19zZXRhdHRyX18gb3IgX19kZWxhdHRyX18gYXBwbGllZCB0byBhIHR5cGUuCiAgICBUaGlzIGlzIGNhbGxlZCB0aGUgQ2FybG8gVmVycmUgaGFjayBhZnRlciBpdHMgZGlzY292ZXJlci4gKi8KIHN0YXRpYyBpbnQKLWhhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNoYXIgKndoYXQpCitoYWNrY2hlY2soUHlPYmplY3QgKnNlbGYsIHNldGF0dHJvZnVuYyBmdW5jLCBjb25zdCBjaGFyICp3aGF0KQogewogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoc2VsZik7CiAgICAgd2hpbGUgKHR5cGUgJiYgdHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKQpAQCAtNTY2MCw3ICs1NzM2LDcgQEAKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmKSBcCiB7IFwKICAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigpIik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCBOVUxMKTsgXAogfQogCiAjZGVmaW5lIFNMT1QxKEZVTkNOQU1FLCBPUFNUUiwgQVJHMVRZUEUsIEFSR0NPREVTKSBcCkBAIC01NzUzLDcgKzU4MjksNyBAQAogc3RhdGljIFB5X3NzaXplX3QKIHNsb3Rfc3FfbGVuZ3RoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCAiKCkiKTsKKyAgICBQeU9iamVjdCAqcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19sZW5fXywgTlVMTCk7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC01Nzc0LDM4ICs1ODUwLDM5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9zcV9pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmMsICphcmdzID0gTlVMTCwgKml2YWwgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuYywgKml2YWwgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKICAgICBkZXNjcmdldGZ1bmMgZjsKIAogICAgIGZ1bmMgPSBfUHlUeXBlX0xvb2t1cElkKFB5X1RZUEUoc2VsZiksICZQeUlkX19fZ2V0aXRlbV9fKTsKLSAgICBpZiAoZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIGlmICgoZiA9IFB5X1RZUEUoZnVuYyktPnRwX2Rlc2NyX2dldCkgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOwotICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7Ci0gICAgICAgIGlmIChpdmFsICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICAgICAgICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIGl2YWwpOwotICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZ2V0aXRlbV9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgZ2V0aXRlbV9zdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICBQeV9YREVDUkVGKGl2YWwpOwotICAgIFB5X1hERUNSRUYoZnVuYyk7CisKKyAgICBmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0OworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnVuYyA9IGYoZnVuYywgc2VsZiwgKFB5T2JqZWN0ICopKFB5X1RZUEUoc2VsZikpKTsKKyAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpdmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOworICAgIGlmIChpdmFsID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgaXZhbCk7CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIFB5X0RFQ1JFRihpdmFsKTsKKyAgICByZXR1cm4gcmV0dmFsOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTU4MjcsMTkgKzU5MDQsMjAgQEAKIHN0YXRpYyBpbnQKIHNsb3Rfc3FfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKnJlcywgKmFyZ3M7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CiAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgIF9QeV9JREVOVElGSUVSKF9fY29udGFpbnNfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fY29udGFpbnNfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIGNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwotICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICAgcmVzID0gTlVMTDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCB2YWx1ZSk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTU5MTAsNDQgKzU5ODgsNTQgQEAKIHN0YXRpYyBpbnQKIHNsb3RfbmJfYm9vbChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3M7Ci0gICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5T2JqZWN0ICpmdW5jLCAqdmFsdWU7CisgICAgaW50IHJlc3VsdDsKICAgICBpbnQgdXNpbmdfbGVuID0gMDsKICAgICBfUHlfSURFTlRJRklFUihfX2Jvb2xfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fYm9vbF9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKICAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2xlbl9fKTsKLSAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAxOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CiAgICAgICAgIHVzaW5nX2xlbiA9IDE7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICBpZiAodGVtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAodXNpbmdfbGVuKSB7Ci0gICAgICAgICAgICAgICAgLyogZW5mb3JjZWQgYnkgc2xvdF9uYl9sZW4gKi8KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodGVtcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChQeUJvb2xfQ2hlY2sodGVtcCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodGVtcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib29sLCByZXR1cm5lZCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodGVtcCktPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwotICAgICAgICB9CisKKyAgICB2YWx1ZSA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKKyAgICBpZiAodXNpbmdfbGVuKSB7CisgICAgICAgIC8qIGJvb2wgdHlwZSBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodmFsdWUpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJvb2xfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIl9fYm9vbF9fIHNob3VsZCByZXR1cm4gIgorICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIHJldHVybiAtMTsKIH0KIAogCkBAIC01OTU1LDcgKzYwNDMsNyBAQAogc2xvdF9uYl9pbmRleChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX2luZGV4X18pOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sICIoKSIpOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sIE5VTEwpOwogfQogCiAKQEAgLTYxOTIsMjAgKzYyODAsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MsICpyZXM7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmbmFtZV9vcFtvcF0pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG90aGVyKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXMgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgfQorICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBvdGhlcik7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC02MjE3LDE2ICs2Mjk5LDIwIEBACiAgICAgX1B5X0lERU5USUZJRVIoX19pdGVyX18pOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pdGVyX18pOworICAgIGlmIChmdW5jID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgICAgIGFyZ3MgPSByZXMgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgfQorICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQorCiAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewpAQCAtNjI0Myw3ICs2MzI5LDcgQEAKIHNsb3RfdHBfaXRlcm5leHQoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgX1B5X0lERU5USUZJRVIoX19uZXh0X18pOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX25leHRfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYzMTIsMjkgKzYzOTgsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqZnVuYzsKLSAgICBQeU9iamVjdCAqbmV3YXJncywgKng7Ci0gICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzdWx0OwogCiAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopdHlwZSwgJlB5SWRfX19uZXdfXyk7Ci0gICAgaWYgKGZ1bmMgPT0gTlVMTCkKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLSAgICBuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKLSAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcobisxKTsKLSAgICBpZiAobmV3YXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYodHlwZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAoUHlPYmplY3QgKil0eXBlKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHggPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwotICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSsxLCB4KTsKICAgICB9Ci0gICAgeCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgbmV3YXJncywga3dkcyk7Ci0gICAgUHlfREVDUkVGKG5ld2FyZ3MpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCAoUHlPYmplY3QgKil0eXBlLCBhcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTY5MzcsNiArNzAxMCw2NCBAQAogICAgIH0KIH0KIAorLyogQ2FsbCBfX3NldF9uYW1lX18gb24gYWxsIGRlc2NyaXB0b3JzIGluIGEgbmV3bHkgZ2VuZXJhdGVkIHR5cGUgKi8KK3N0YXRpYyBpbnQKK3NldF9uYW1lcyhQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqc2V0X25hbWUsICp0bXA7CisgICAgUHlfc3NpemVfdCBpID0gMDsKKworICAgIHdoaWxlIChQeURpY3RfTmV4dCh0eXBlLT50cF9kaWN0LCAmaSwgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBzZXRfbmFtZSA9IGxvb2t1cF9tYXliZSh2YWx1ZSwgJlB5SWRfX19zZXRfbmFtZV9fKTsKKyAgICAgICAgaWYgKHNldF9uYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2V0X25hbWUsIHR5cGUsIGtleSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2V0X25hbWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJFcnJvciBjYWxsaW5nIF9fc2V0X25hbWVfXyBvbiAnJS4xMDBzJyBpbnN0YW5jZSAlUiAiCisgICAgICAgICAgICAgICAgICAgICJpbiAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5vYl90eXBlLT50cF9uYW1lLCBrZXksIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDYWxsIF9faW5pdF9zdWJjbGFzc19fIG9uIHRoZSBwYXJlbnQgb2YgYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAoraW5pdF9zdWJjbGFzcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpzdXBlciwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmFyZ3NbMl0gPSB7KFB5T2JqZWN0ICopdHlwZSwgKFB5T2JqZWN0ICopdHlwZX07CisKKyAgICBzdXBlciA9IF9QeU9iamVjdF9GYXN0Q2FsbCgoUHlPYmplY3QgKikmUHlTdXBlcl9UeXBlLCBhcmdzLCAyKTsKKyAgICBpZiAoc3VwZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3VwZXIsICZQeUlkX19faW5pdF9zdWJjbGFzc19fKTsKKyAgICBQeV9ERUNSRUYoc3VwZXIpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBOVUxMLCAwLCBrd2RzKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gMDsKK30KKwogLyogcmVjdXJzZV9kb3duX3N1YmNsYXNzZXMoKSBhbmQgdXBkYXRlX3N1YmNsYXNzZXMoKSBhcmUgbXV0dWFsbHkKICAgIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdG8gY2FsbCBhIGNhbGxiYWNrIGZvciBhbGwgc3ViY2xhc3NlcywKICAgIGJ1dCByZWZyYWluaW5nIGZyb20gcmVjdXJzaW5nIGludG8gc3ViY2xhc3NlcyB0aGF0IGRlZmluZSAnbmFtZScuICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCmluZGV4IDI3MzUzNmUuLjRjOTUxMTEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAidWNuaGFzaC5oIgogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKIAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0xNjIsNiArMTYzLDE0IEBACiAgICAgICAgICAgICAqX3RvKysgPSAodG9fdHlwZSkgKl9pdGVyKys7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCisjaWZkZWYgTVNfV0lORE9XUworICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKKyNlbHNlCisgICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKKyNlbmRpZgorCiAvKiBUaGlzIGRpY3Rpb25hcnkgaG9sZHMgYWxsIGludGVybmVkIHVuaWNvZGUgc3RyaW5ncy4gIE5vdGUgdGhhdCByZWZlcmVuY2VzCiAgICB0byBzdHJpbmdzIGluIHRoaXMgZGljdGlvbmFyeSBhcmUgKm5vdCogY291bnRlZCBpbiB0aGUgc3RyaW5nJ3Mgb2JfcmVmY250LgogICAgV2hlbiB0aGUgaW50ZXJuZWQgc3RyaW5nIHJlYWNoZXMgYSByZWZjbnQgb2YgMCB0aGUgc3RyaW5nIGRlYWxsb2NhdGlvbgpAQCAtMTk1LDcgKzIwNCw3IEBACiAgICAgfSB3aGlsZSAoMCkKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpOwogCiAvKiBMaXN0IG9mIHN0YXRpYyBzdHJpbmdzLiAqLwpAQCAtMjYzLDcgKzI3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAKIC8qIFNhbWUgZm9yIGxpbmVicmVha3MgKi8KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGFzY2lpX2xpbmVicmVha1tdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKIC8qICAgICAgICAgMHgwMDBBLCAqIExJTkUgRkVFRCAqLwogLyogICAgICAgICAweDAwMEIsICogTElORSBUQUJVTEFUSU9OICovCkBAIC0yOTIsNiArMzAxLDQ1IEBACiAKICNpbmNsdWRlICJjbGluaWMvdW5pY29kZW9iamVjdC5jLmgiCiAKK3R5cGVkZWYgZW51bSB7CisgICAgX1B5X0VSUk9SX1VOS05PV049MCwKKyAgICBfUHlfRVJST1JfU1RSSUNULAorICAgIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEUsCisgICAgX1B5X0VSUk9SX1JFUExBQ0UsCisgICAgX1B5X0VSUk9SX0lHTk9SRSwKKyAgICBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfU1VSUk9HQVRFUEFTUywKKyAgICBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0UsCisgICAgX1B5X0VSUk9SX09USEVSCit9IF9QeV9lcnJvcl9oYW5kbGVyOworCitzdGF0aWMgX1B5X2Vycm9yX2hhbmRsZXIKK2dldF9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9TVFJJQ1Q7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlZXNjYXBlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1JFUExBQ0U7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX0lHTk9SRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJiYWNrc2xhc2hyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlcGFzcyIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOworICAgIH0KKyAgICByZXR1cm4gX1B5X0VSUk9SX09USEVSOworfQorCiAvKiBUaGUgbWF4IHVuaWNvZGUgdmFsdWUgaXMgYWx3YXlzIDB4MTBGRkZGIHdoaWxlIHVzaW5nIHRoZSBQRVAtMzkzIEFQSS4KICAgIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgQVBJLiAqLwogUHlfVU5JQ09ERQpAQCAtNTIxLDYgKzU2OSwxMjkgQEAKICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weSh1bmljb2RlKTsKIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvciBoYW5kbGVyIGZvciA4LWJpdCBlbmNvZGluZ3M6CisgICBBU0NJSSwgTGF0aW4xLCBVVEYtOCwgZXRjLiAqLworc3RhdGljIGNoYXIqCitiYWNrc2xhc2hyZXBsYWNlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgY29sbHN0YXJ0LCBQeV9zc2l6ZV90IGNvbGxlbmQpCit7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIFB5X1VDUzQgY2g7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgc2l6ZSA9IDA7CisgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmNyOworCisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA8IDB4MTAwKQorICAgICAgICAgICAgaW5jciA9IDIrMjsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgaW5jciA9IDIrODsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNpemUgKz0gaW5jcjsKKyAgICB9CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgKnN0cisrID0gJ1xcJzsKKyAgICAgICAgaWYgKGNoID49IDB4MDAwMTAwMDApIHsKKyAgICAgICAgICAgICpzdHIrKyA9ICdVJzsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjI4KSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjQpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yMCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjE2KSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTIpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj44KSYweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwKSB7CisgICAgICAgICAgICAqc3RyKysgPSAndSc7CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnN0cisrID0gJ3gnOworICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj40KSYweGZdOworICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbY2gmMHhmXTsKKyAgICB9CisgICAgcmV0dXJuIHN0cjsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgdGhlICJ4bWxjaGFycmVmcmVwbGFjZSIgZXJyb3IgaGFuZGxlciBmb3IgOC1iaXQgZW5jb2RpbmdzOgorICAgQVNDSUksIExhdGluMSwgVVRGLTgsIGV0Yy4gKi8KK3N0YXRpYyBjaGFyKgoreG1sY2hhcnJlZnJlcGxhY2UoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgY29sbHN0YXJ0LCBQeV9zc2l6ZV90IGNvbGxlbmQpCit7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIFB5X1VDUzQgY2g7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgc2l6ZSA9IDA7CisgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmNyOworCisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA8IDEwKQorICAgICAgICAgICAgaW5jciA9IDIrMSsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzIrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrMysxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNCsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzUrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNisxOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICBpbmNyID0gMis3KzE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzaXplICs9IGluY3I7CisgICAgfQorCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCisgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCiAvKiAtLS0gQmxvb20gRmlsdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBzdHVmZiB0byBpbXBsZW1lbnQgc2ltcGxlICJibG9vbSBmaWx0ZXJzIiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLgpAQCAtNTQ5LDcgKzcyMCw3IEBACiAgICAgKChjaCkgPCAxMjhVID8gYXNjaWlfbGluZWJyZWFrWyhjaCldIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChCTE9PTShibG9vbV9saW5lYnJlYWssIChjaCkpICYmIFB5X1VOSUNPREVfSVNMSU5FQlJFQUsoY2gpKSkKIAotUHlfTE9DQUxfSU5MSU5FKEJMT09NX01BU0spCitzdGF0aWMgaW5saW5lIEJMT09NX01BU0sKIG1ha2VfYmxvb21fbWFzayhpbnQga2luZCwgdm9pZCogcHRyLCBQeV9zc2l6ZV90IGxlbikKIHsKICNkZWZpbmUgQkxPT01fVVBEQVRFKFRZUEUsIE1BU0ssIFBUUiwgTEVOKSAgICAgICAgICAgICBcCkBAIC01ODcsNiArNzU4LDE4IEBACiAjdW5kZWYgQkxPT01fVVBEQVRFCiB9CiAKK3N0YXRpYyBpbnQKK2Vuc3VyZV91bmljb2RlKFB5T2JqZWN0ICpvYmopCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEWShvYmopOworfQorCiAvKiBDb21waWxhdGlvbiBvZiB0ZW1wbGF0ZWQgcm91dGluZXMgKi8KIAogI2luY2x1ZGUgInN0cmluZ2xpYi9hc2NpaWxpYi5oIgpAQCAtNjQzLDMxICs4MjYsMzEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaXh1cChQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKTsKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQorc3RhdGljIGlubGluZSBQeV9zc2l6ZV90CitmaW5kY2hhcihjb25zdCB2b2lkICpzLCBpbnQga2luZCwKKyAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKKyAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgaW50IG1vZGUgPSAoZGlyZWN0aW9uID09IDEpID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7Ci0KICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgotICAgICAgICB7Ci0gICAgICAgICAgICBQeV9VQ1MxIGNoMSA9IChQeV9VQ1MxKSBjaDsKLSAgICAgICAgICAgIGlmIChjaDEgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMSAqKSBzLCBzaXplLCAmY2gxLCAxLCAwLCBtb2RlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKChQeV9VQ1MxKSBjaCAhPSBjaCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9maW5kX2NoYXIoKFB5X1VDUzEgKikgcywgc2l6ZSwgKFB5X1VDUzEpIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfcmZpbmRfY2hhcigoUHlfVUNTMSAqKSBzLCBzaXplLCAoUHlfVUNTMSkgY2gpOwogICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFB5X1VDUzIgY2gyID0gKFB5X1VDUzIpIGNoOwotICAgICAgICAgICAgaWYgKGNoMiA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9mYXN0c2VhcmNoKChQeV9VQ1MyICopIHMsIHNpemUsICZjaDIsIDEsIDAsIG1vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKFB5X1VDUzIpIGNoICE9IGNoKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2ZpbmRfY2hhcigoUHlfVUNTMiAqKSBzLCBzaXplLCAoUHlfVUNTMikgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9yZmluZF9jaGFyKChQeV9VQ1MyICopIHMsIHNpemUsIChQeV9VQ1MyKSBjaCk7CiAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKLSAgICAgICAgcmV0dXJuIHVjczRsaWJfZmFzdHNlYXJjaCgoUHlfVUNTNCAqKSBzLCBzaXplLCAmY2gsIDEsIDAsIG1vZGUpOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmRfY2hhcigoUHlfVUNTNCAqKSBzLCBzaXplLCBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3JmaW5kX2NoYXIoKFB5X1VDUzQgKikgcywgc2l6ZSwgY2gpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtODY1LDcgKzEwNDgsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGNvcHlfbGVuZ3RoID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKICAgICAgICAgY29weV9sZW5ndGggPSBQeV9NSU4oY29weV9sZW5ndGgsIGxlbmd0aCk7Ci0gICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1dTVFIodyksIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwKKyAgICAgICAgbWVtY3B5KF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAogICAgICAgICAgICAgICAgICAgY29weV9sZW5ndGggKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gdzsKICAgICB9CkBAIC0xMjUyLDcgKzE0MzUsNyBAQAogICAgICAgICAgICAgaWYgKG1heF9jaGFyID49IDEyOCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgUHlfTUVNQ1BZKChjaGFyKil0b19kYXRhICsgdG9fa2luZCAqIHRvX3N0YXJ0LAorICAgICAgICBtZW1jcHkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCiAgICAgICAgICAgICAgICAgICAoY2hhciopZnJvbV9kYXRhICsgZnJvbV9raW5kICogZnJvbV9zdGFydCwKICAgICAgICAgICAgICAgICAgIHRvX2tpbmQgKiBob3dfbWFueSk7CiAgICAgfQpAQCAtMTg0NSw3ICsyMDI4LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKICNpZiBQeV9VTklDT0RFX1NJWkUgPT0gMgotICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogMik7CiAjZWxzZQogICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgUHlfVUNTMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKQEAgLTE4NTgsNyArMjA0MSw3IEBACiAgICAgICAgIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KHUsIHUgKyBzaXplLCB1bmljb2RlKTsKICNlbHNlCiAgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwKTsKLSAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CisgICAgICAgIG1lbWNweShQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDQpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xOTYwLDcgKzIxNDMsNyBAQAogICAgIH0KIH0KIAotUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitzdGF0aWMgaW5saW5lIFB5X1VDUzQKIGFsaWduX21heGNoYXIoUHlfVUNTNCBtYXhjaGFyKQogewogICAgIGlmIChtYXhjaGFyIDw9IDEyNykKQEAgLTIxNjksNyArMjM1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChjb3B5KSA9PSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CiAKLSAgICBQeV9NRU1DUFkoUHlVbmljb2RlX0RBVEEoY29weSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgIG1lbWNweShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCiAgICAgICAgICAgICAgIGxlbmd0aCAqIFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KGNvcHksIDEpKTsKICAgICByZXR1cm4gY29weTsKQEAgLTIyNzUsNyArMjQ1OCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFB5X01FTUNQWSh0YXJnZXQsIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIG1lbWNweSh0YXJnZXQsIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CiAgICAgfQogICAgIGlmIChjb3B5X251bGwpCiAgICAgICAgIHRhcmdldFtsZW5dID0gMDsKQEAgLTI0NTgsMTMgKzI2NDEsMTEgQEAKICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKICAgICAgICAgICAgICsrZjsKICAgICAgICAgfQotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCiAgICAgICAgICAgICAgICAgIChmWzJdID09ICdkJyB8fCBmWzJdID09ICd1JyB8fCBmWzJdID09ICdpJykpIHsKICAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7CiAgICAgICAgICAgICBmICs9IDI7CiAgICAgICAgIH0KLSNlbmRpZgogICAgIH0KICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwogICAgIGVsc2UgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScgfHwgZlsxXSA9PSAnaScpKSB7CkBAIC0yNTAyLDExICsyNjgzLDkgQEAKICAgICAgICAgICAgIGlmIChsb25nZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgInUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgbG9uZyBsb25nKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBzaXplX3QpKTsKQEAgLTI1MjEsMTEgKzI3MDAsOSBAQAogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAiaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxsaSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBsb25nIGxvbmcpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFB5X3NzaXplX3QpKTsKQEAgLTI3MDEsOSArMjg3OCw4IEBACiAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzdHJsZW4oZm9ybWF0KSArIDEwMDsKICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAotICAgIC8qIHZhX2xpc3QgbWF5IGJlIGFuIGFycmF5IChvZiAxIGl0ZW0pIG9uIHNvbWUgcGxhdGZvcm1zIChleDogQU1ENjQpLgotICAgICAgIENvcHkgaXQgdG8gYmUgYWJsZSB0byBwYXNzIGEgcmVmZXJlbmNlIHRvIGEgc3ViZnVuY3Rpb24uICovCi0gICAgUHlfVkFfQ09QWSh2YXJnczIsIHZhcmdzKTsKKyAgICAvLyBDb3B5IHZhcmFncyB0byBiZSBhYmxlIHRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYSBzdWJmdW5jdGlvbi4KKyAgICB2YV9jb3B5KHZhcmdzMiwgdmFyZ3MpOwogCiAgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgKSB7CiAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKQEAgLTI3MzksOSArMjkxNSwxMSBAQAogICAgICAgICAgICAgZiA9IHA7CiAgICAgICAgIH0KICAgICB9CisgICAgdmFfZW5kKHZhcmdzMik7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIGZhaWw6CisgICAgdmFfZW5kKHZhcmdzMik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMjc5MCw3ICsyOTY4LDcgQEAKICAgICAgICAgICAgIHNpemUgPSByZXMgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBzaXplOwotICAgICAgICBQeV9NRU1DUFkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIG1lbWNweSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZQpAQCAtMjkwNyw3ICszMDg1LDcgQEAKICAgICAvKiBSZXRyaWV2ZSBhIGJ5dGVzIGJ1ZmZlciB2aWV3IHRocm91Z2ggdGhlIFBFUCAzMTE4IGJ1ZmZlciBpbnRlcmZhY2UgKi8KICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJmJ1ZmZlciwgUHlCVUZfU0lNUExFKSA8IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjb2VyY2luZyB0byBzdHI6IG5lZWQgYSBieXRlcy1saWtlIG9iamVjdCwgJS44MHMgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgImRlY29kaW5nIHRvIHN0cjogbmVlZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAlLjgwcyBmb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yOTIyLDkgKzMxMDAsOSBAQAogICAgIHJldHVybiB2OwogfQogCi0vKiBDb252ZXJ0IGVuY29kaW5nIHRvIGxvd2VyIGNhc2UgYW5kIHJlcGxhY2UgJ18nIHdpdGggJy0nIGluIG9yZGVyIHRvCi0gICBjYXRjaCBlLmcuIFVURl84LiBSZXR1cm4gMCBvbiBlcnJvciAoZW5jb2RpbmcgaXMgbG9uZ2VyIHRoYW4gbG93ZXJfbGVuLTEpLAotICAgMSBvbiBzdWNjZXNzLiAqLworLyogTm9ybWFsaXplIGFuIGVuY29kaW5nIG5hbWU6IHNpbWlsYXIgdG8gZW5jb2RpbmdzLm5vcm1hbGl6ZV9lbmNvZGluZygpLCBidXQKKyAgIGFsc28gY29udmVydCB0byBsb3dlcmNhc2UuIFJldHVybiAxIG9uIHN1Y2Nlc3MsIG9yIDAgb24gZXJyb3IgKGVuY29kaW5nIGlzCisgICBsb25nZXIgdGhhbiBsb3dlcl9sZW4tMSkuICovCiBpbnQKIF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmxvd2VyLApAQCAtMjkzMywzMCArMzExMSwzOSBAQAogICAgIGNvbnN0IGNoYXIgKmU7CiAgICAgY2hhciAqbDsKICAgICBjaGFyICpsX2VuZDsKKyAgICBpbnQgcHVuY3Q7CiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICAvKiA2ID09IHN0cmxlbigidXRmLTgiKSArIDEgKi8KLSAgICAgICAgaWYgKGxvd2VyX2xlbiA8IDYpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgc3RyY3B5KGxvd2VyLCAidXRmLTgiKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGFzc2VydChlbmNvZGluZyAhPSBOVUxMKTsKKwogICAgIGUgPSBlbmNvZGluZzsKICAgICBsID0gbG93ZXI7CiAgICAgbF9lbmQgPSAmbG93ZXJbbG93ZXJfbGVuIC0gMV07Ci0gICAgd2hpbGUgKCplKSB7Ci0gICAgICAgIGlmIChsID09IGxfZW5kKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKCplKSkgewotICAgICAgICAgICAgKmwrKyA9IFB5X1RPTE9XRVIoKmUrKyk7CisgICAgcHVuY3QgPSAwOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGNoYXIgYyA9ICplOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgqZSA9PSAnXycpIHsKLSAgICAgICAgICAgICpsKysgPSAnLSc7Ci0gICAgICAgICAgICBlKys7CisKKyAgICAgICAgaWYgKFB5X0lTQUxOVU0oYykgfHwgYyA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChwdW5jdCAmJiBsICE9IGxvd2VyKSB7CisgICAgICAgICAgICAgICAgaWYgKGwgPT0gbF9lbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpsKysgPSAnXyc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdW5jdCA9IDA7CisKKyAgICAgICAgICAgIGlmIChsID09IGxfZW5kKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqbCsrID0gUHlfVE9MT1dFUihjKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICpsKysgPSAqZSsrOworICAgICAgICAgICAgcHVuY3QgPSAxOwogICAgICAgICB9CisKKyAgICAgICAgZSsrOwogICAgIH0KICAgICAqbCA9ICdcMCc7CiAgICAgcmV0dXJuIDE7CkBAIC0yOTcwLDI4ICszMTU3LDUxIEBACiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEwsICp1bmljb2RlOwogICAgIFB5X2J1ZmZlciBpbmZvOwotICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KKyAgICBjaGFyIGJ1Zmxvd2VyWzExXTsgICAvKiBzdHJsZW4oImlzby04ODU5LTFcMCIpID09IDExLCBsb25nZXN0IHNob3J0Y3V0ICovCisKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOworICAgIH0KIAogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCi0gICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKLSAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwotICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc284ODU5LTEiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7Ci0jZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVBU0NJSShzLCBzaXplLCBlcnJvcnMpOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtMTYiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNihzLCBzaXplLCBlcnJvcnMsIDApOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtMzIiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYzMihzLCBzaXplLCBlcnJvcnMsIDApOworICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBidWZsb3dlciwgc2l6ZW9mKGJ1Zmxvd2VyKSkpIHsKKyAgICAgICAgY2hhciAqbG93ZXIgPSBidWZsb3dlcjsKKworICAgICAgICAvKiBGYXN0IHBhdGhzICovCisgICAgICAgIGlmIChsb3dlclswXSA9PSAndScgJiYgbG93ZXJbMV0gPT0gJ3QnICYmIGxvd2VyWzJdID09ICdmJykgeworICAgICAgICAgICAgbG93ZXIgKz0gMzsKKyAgICAgICAgICAgIGlmICgqbG93ZXIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgLyogTWF0Y2ggInV0ZjgiIGFuZCAidXRmXzgiICovCisgICAgICAgICAgICAgICAgbG93ZXIrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxvd2VyWzBdID09ICc4JyAmJiBsb3dlclsxXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICcxJyAmJiBsb3dlclsxXSA9PSAnNicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICczJyAmJiBsb3dlclsxXSA9PSAnMicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMzIocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDAKKyAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJ1c19hc2NpaSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgI2VuZGlmCisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJsYXRpbl8xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAiaXNvXzg4NTlfMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImlzbzg4NTlfMSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRGVjb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KQEAgLTMxNjMsMjQgKzMzNzMsMjIgQEAKIHN0YXRpYyBpbnQKIGxvY2FsZV9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpzdXJyb2dhdGVlc2NhcGUpCiB7Ci0gICAgaWYgKGVycm9ycyA9PSBOVUxMKSB7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOwogICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKLSAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZWVzY2FwZSIpID09IDApIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CiAgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAxOwogICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJvbmx5ICdzdHJpY3QnIGFuZCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVycyAiCisgICAgICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKLSAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKLSAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSAgICByZXR1cm4gLTE7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTMyOTYsMTAgKzM1MDQsOCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIHsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMzMxNCwxMCArMzUyMCwxMCBAQAogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMzMyOCwzNCArMzUzNCw1NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLworICAgIGNoYXIgYnVmbG93ZXJbMTFdOyAgIC8qIHN0cmxlbigiaXNvXzg4NTlfMVwwIikgPT0gMTEsIGxvbmdlc3Qgc2hvcnRjdXQgKi8KIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgIH0KKwogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCi0gICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKLSAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgICAgICAgICBlbHNlCisgICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGJ1Zmxvd2VyLCBzaXplb2YoYnVmbG93ZXIpKSkgeworICAgICAgICBjaGFyICpsb3dlciA9IGJ1Zmxvd2VyOworCisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGxvd2VyWzBdID09ICd1JyAmJiBsb3dlclsxXSA9PSAndCcgJiYgbG93ZXJbMl0gPT0gJ2YnKSB7CisgICAgICAgICAgICBsb3dlciArPSAzOworICAgICAgICAgICAgaWYgKCpsb3dlciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAvKiBNYXRjaCAidXRmOCIgYW5kICJ1dGZfOCIgKi8KKyAgICAgICAgICAgICAgICBsb3dlcisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobG93ZXJbMF0gPT0gJzgnICYmIGxvd2VyWzFdID09IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICcxJyAmJiBsb3dlclsxXSA9PSAnNicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHVuaWNvZGUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMycgJiYgbG93ZXJbMV0gPT0gJzInICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih1bmljb2RlLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzbzg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwCisgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAidXNfYXNjaWkiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAibGF0aW5fMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImlzb184ODU5XzEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJpc284ODU5XzEiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEVuY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCkBAIC0zNTgwLDEwICszODA4LDggQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotI2lmZGVmIEhBVkVfTUJDUwotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBOVUxMKTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiLCBOVUxMKTsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycywgTlVMTCk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMzU5NiwxMiArMzgyMiwyMSBAQAogICAgICAgIGNhbm5vdCBvbmx5IHJlbHkgb24gaXQ6IGNoZWNrIGFsc28gaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkIGZvcgogICAgICAgIHN1YmludGVycHJldGVycy4gKi8KICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJiBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGUocywgc2l6ZSwKKyAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5VW5pY29kZV9EZWNvZGUocywgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAoIXJlcyAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKKyAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJmaWxlc3lzdGVtIHBhdGggYnl0ZXMgd2VyZSBub3QgY29ycmVjdGx5IGVuY29kZWQgd2l0aCAnJXMnLiAiCisgICAgICAgICAgICAgICAgIlBsZWFzZSByZXBvcnQgdGhpcyBhdCBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjc3ODEiLAorICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzLCBzaXplLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0zNjEwLDYgKzM4NDUsNyBAQAogaW50CiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKIHsKKyAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm91dHB1dCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIHZvaWQgKmRhdGE7CkBAIC0zNjE4LDI0ICszODU0LDIyIEBACiAgICAgICAgICooUHlPYmplY3QqKilhZGRyID0gTlVMTDsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykpIHsKLSAgICAgICAgb3V0cHV0ID0gYXJnOwotICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKKyAgICBwYXRoID0gUHlPU19GU1BhdGgoYXJnKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYXJnID0gUHlVbmljb2RlX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgaWYgKCFhcmcpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChhcmcpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICAgICAgaWYgKCFvdXRwdXQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKG91dHB1dCkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kZXIgZmFpbGVkIHRvIHJldHVybiBieXRlcyIpOworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIG91dHB1dCA9IHBhdGg7CisgICAgfQorICAgIGVsc2UgeyAgLy8gUHlPU19GU1BhdGgoKSBndWFyYW50ZWVzIGl0cyByZXR1cm5lZCB2YWx1ZSBpcyBieXRlcyBvciBzdHIuCisgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aCk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgaWYgKCFvdXRwdXQpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG91dHB1dCkpOwogICAgIH0KKwogICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKG91dHB1dCk7CiAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG91dHB1dCk7CiAgICAgaWYgKChzaXplX3Qpc2l6ZSAhPSBzdHJsZW4oZGF0YSkpIHsKQEAgLTM2NTEsMzYgKzM4ODUsNjAgQEAKIGludAogUHlVbmljb2RlX0ZTRGVjb2RlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogeworICAgIGludCBpc19idWZmZXIgPSAwOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKICAgICBpZiAoYXJnID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKCooUHlPYmplY3QqKilhZGRyKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPT0gLTEpCisKKyAgICBpc19idWZmZXIgPSBQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpOworICAgIGlmICghaXNfYnVmZmVyKSB7CisgICAgICAgIHBhdGggPSBQeU9TX0ZTUGF0aChhcmcpOworICAgICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gYXJnOwotICAgICAgICBQeV9JTkNSRUYob3V0cHV0KTsKKyAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcihhcmcpKSB7Ci0gICAgICAgIGFyZyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChhcmcpOwotICAgICAgICBpZiAoIWFyZykKKyAgICBlbHNlIHsKKyAgICAgICAgcGF0aCA9IGFyZzsKKyAgICAgICAgUHlfSU5DUkVGKGFyZyk7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXRoKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhdGgpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoUHlCeXRlc19BU19TVFJJTkcoYXJnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShhcmcpKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgICAgIGlmICghb3V0cHV0KQorICAgICAgICB9CisgICAgICAgIG91dHB1dCA9IHBhdGg7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2socGF0aCkgfHwgaXNfYnVmZmVyKSB7CisgICAgICAgIFB5T2JqZWN0ICpwYXRoX2J5dGVzID0gTlVMTDsKKworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2socGF0aCkgJiYKKyAgICAgICAgICAgIFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIFB5X1RZUEUoYXJnKS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob3V0cHV0KSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZGVjb2RlciBmYWlsZWQgdG8gcmV0dXJuIHVuaWNvZGUiKTsKKyAgICAgICAgfQorICAgICAgICBwYXRoX2J5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KHBhdGgpOworICAgICAgICBQeV9ERUNSRUYocGF0aCk7CisgICAgICAgIGlmICghcGF0aF9ieXRlcykgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoUHlCeXRlc19BU19TVFJJTkcocGF0aF9ieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocGF0aF9ieXRlcykpOworICAgICAgICBQeV9ERUNSRUYocGF0aF9ieXRlcyk7CisgICAgICAgIGlmICghb3V0cHV0KSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJwYXRoIHNob3VsZCBiZSBzdHJpbmcgb3IgYnl0ZXMsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBub3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoYXJnKS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob3V0cHV0KSA9PSAtMSkgewpAQCAtMzcxMiw3ICszOTcwLDcgQEAKIAogICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKSB7CiAgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpOwotICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdHJpY3QiKTsKKyAgICAgICAgYnl0ZXMgPSBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKICAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpICsgMSk7CkBAIC0zNzIyLDcgKzM5ODAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpOwotICAgICAgICBQeV9NRU1DUFkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICBtZW1jcHkoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAogICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAogICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSArIDEpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwpAQCAtMzk2Miw3ICs0MjIwLDcgQEAKICAgICBQeV9DTEVBUigqZXhjZXB0aW9uT2JqZWN0KTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIC8qIGVycm9yIGhhbmRsaW5nIGNhbGxiYWNrIGhlbHBlcjoKICAgIGJ1aWxkIGFyZ3VtZW50cywgY2FsbCB0aGUgY2FsbGJhY2sgYW5kIGNoZWNrIHRoZSBhcmd1bWVudHMsCiAgICBpZiBubyBleGNlcHRpb24gb2NjdXJyZWQsIGNvcHkgdGhlIHJlcGxhY2VtZW50IHRvIHRoZSBvdXRwdXQKQEAgLTM5NzgsNyArNDIzNiw3IEBACiAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCiAgICAgUHlPYmplY3QgKipvdXRwdXQsIFB5X3NzaXplX3QgKm91dHBvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlPYmplY3QgKnJlc3R1cGxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7CkBAIC00MDc2LDcgKzQzMzQsNyBAQAogICAgIFB5X1hERUNSRUYocmVzdHVwbGUpOwogICAgIHJldHVybiAtMTsKIH0KLSNlbmRpZiAgIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmICAgLyogTVNfV0lORE9XUyAqLwogCiBzdGF0aWMgaW50CiB1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCkBAIC00MDg2LDcgKzQzNDQsNyBAQAogICAgIFB5X3NzaXplX3QgKmVuZGlucG9zLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwgY29uc3QgY2hhciAqKmlucHRyLAogICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciAvKiBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zICovKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKQEAgLTQ2OTIsOCArNDk1MCw5IEBACiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKQEAgLTQ3MTgsNiArNDk3Nyw3IEBACiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGtpbmQgPSB3cml0ZXIua2luZDsKKwogICAgICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh3cml0ZXIuYnVmZmVyKSkKICAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjhfZGVjb2RlKCZzLCBlbmQsIHdyaXRlci5kYXRhLCAmd3JpdGVyLnBvcyk7CkBAIC00NzU2LDI0ICs1MDE2LDU2IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKLSAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpIHsKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgorICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgMHhmZmZkKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcyArPSAoZW5kaW5wb3MgLSBzdGFydGlucG9zKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgmd3JpdGVyLCBQeVVuaWNvZGVfMkJZVEVfS0lORCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGZvciAoaT1zdGFydGlucG9zOyBpPGVuZGlucG9zOyBpKyspIHsKKyAgICAgICAgICAgICAgICBjaCA9IChQeV9VQ1M0KSh1bnNpZ25lZCBjaGFyKShzdGFydHNbaV0pOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoICsgMHhkYzAwKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCisgICAgICAgICAgICAgICAgICAgICJ1dGYtOCIsIGVycm1zZywKKyAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQogICAgIH0KIAogRW5kOgogICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgKmNvbnN1bWVkID0gcyAtIHN0YXJ0czsKIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwpAQCAtNTA2NSw3ICs1MzU3LDcgQEAKICAgICBjb25zdCB2b2lkICpkYXRhOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICp2OwotICAgIFBZX1VJTlQzMl9UICpvdXQ7CisgICAgdWludDMyX3QgKm91dDsKICNpZiBQWV9MSVRUTEVfRU5ESUFOCiAgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA8PSAwOwogI2Vsc2UKQEAgLTUwOTYsNyArNTM4OCw3IEBACiAKICAgICAvKiBvdXRwdXQgYnVmZmVyIGlzIDQtYnl0ZXMgYWxpZ25lZCAqLwogICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyh2KSwgNCkpOwotICAgIG91dCA9IChQWV9VSU5UMzJfVCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgIG91dCA9ICh1aW50MzJfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgIGlmIChieXRlb3JkZXIgPT0gMCkKICAgICAgICAgKm91dCsrID0gMHhGRUZGOwogICAgIGlmIChsZW4gPT0gMCkKQEAgLTUxNjIsNyArNTQ1NCw3IEBACiAKICAgICAgICAgLyogZm91ciBieXRlcyBhcmUgcmVzZXJ2ZWQgZm9yIGVhY2ggc3Vycm9nYXRlICovCiAgICAgICAgIGlmIChtb3JldW5pdHMgPiAxKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IG91dCAtIChQWV9VSU5UMzJfVCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOworICAgICAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSBvdXQgLSAodWludDMyX3QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbW9yZWJ5dGVzID0gNCAqIChtb3JldW5pdHMgLSAxKTsKICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHYpID4gUFlfU1NJWkVfVF9NQVggLSBtb3JlYnl0ZXMpIHsKICAgICAgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCkBAIC01MTcxLDExICs1NDYzLDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ2LCBQeUJ5dGVzX0dFVF9TSVpFKHYpICsgbW9yZWJ5dGVzKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIG91dCA9IChQWV9VSU5UMzJfVCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpICsgb3V0cG9zOworICAgICAgICAgICAgb3V0ID0gKHVpbnQzMl90KikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKKyAgICAgICAgICAgIG1lbWNweShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOwogICAgICAgICAgICAgb3V0ICs9IG1vcmV1bml0czsKICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKQEAgLTU0MjYsMzYgKzU3MTgsNDUgQEAKICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkgewogICAgICAgICBjb25zdCBQeV9VQ1M0ICppbiA9IChjb25zdCBQeV9VQ1M0ICopZGF0YTsKICAgICAgICAgY29uc3QgUHlfVUNTNCAqZW5kID0gaW4gKyBsZW47Ci0gICAgICAgIHdoaWxlIChpbiA8IGVuZCkKLSAgICAgICAgICAgIGlmICgqaW4rKyA+PSAweDEwMDAwKQorICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIGlmICgqaW4rKyA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgcGFpcnMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyIC0gcGFpcnMgLSAoYnl0ZW9yZGVyID09IDApKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQogICAgIG5zaXplID0gbGVuICsgcGFpcnMgKyAoYnl0ZW9yZGVyID09IDApOwogICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5zaXplICogMik7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIC8qIG91dHB1dCBidWZmZXIgaXMgMi1ieXRlcyBhbGlnbmVkICovCiAgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCAyKSk7CiAgICAgb3V0ID0gKHVuc2lnbmVkIHNob3J0ICopUHlCeXRlc19BU19TVFJJTkcodik7Ci0gICAgaWYgKGJ5dGVvcmRlciA9PSAwKQorICAgIGlmIChieXRlb3JkZXIgPT0gMCkgewogICAgICAgICAqb3V0KysgPSAweEZFRkY7Ci0gICAgaWYgKGxlbiA9PSAwKQorICAgIH0KKyAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgZ290byBkb25lOworICAgIH0KIAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIHVjczFsaWJfdXRmMTZfZW5jb2RlKChjb25zdCBQeV9VQ1MxICopZGF0YSwgbGVuLCAmb3V0LCBuYXRpdmVfb3JkZXJpbmcpOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCi0gICAgaWYgKGJ5dGVvcmRlciA8IDApCisgICAgaWYgKGJ5dGVvcmRlciA8IDApIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWxlIjsKLSAgICBlbHNlIGlmIChieXRlb3JkZXIgPiAwKQorICAgIH0KKyAgICBlbHNlIGlmIChieXRlb3JkZXIgPiAwKSB7CiAgICAgICAgIGVuY29kaW5nID0gInV0Zi0xNi1iZSI7Ci0gICAgZWxzZQorICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2IjsKKyAgICB9CiAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChwb3MgPCBsZW4pIHsKQEAgLTU1MTgsNyArNTgxOSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkob3V0LCBQeUJ5dGVzX0FTX1NUUklORyhyZXApLCByZXBzaXplKTsKKyAgICAgICAgICAgIG1lbWNweShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOwogICAgICAgICAgICAgb3V0ICs9IG1vcmV1bml0czsKICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKQEAgLTU1NzEsNjEgKzU4NzIsNiBAQAogCiAvKiAtLS0gVW5pY29kZSBFc2NhcGUgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotLyogSGVscGVyIGZ1bmN0aW9uIGZvciBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZSwgZGV0ZXJtaW5lcwotICAgaWYgYWxsIHRoZSBlc2NhcGVzIGluIHRoZSBzdHJpbmcgbWFrZSBpdCBzdGlsbCBhIHZhbGlkIEFTQ0lJIHN0cmluZy4KLSAgIFJldHVybnMgLTEgaWYgYW55IGVzY2FwZXMgd2VyZSBmb3VuZCB3aGljaCBjYXVzZSB0aGUgc3RyaW5nIHRvCi0gICBwb3Agb3V0IG9mIEFTQ0lJIHJhbmdlLiAgT3RoZXJ3aXNlIHJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUKLSAgIHJlcXVpcmVkIGJ1ZmZlciB0byBob2xkIHRoZSBzdHJpbmcuCi0gICAqLwotc3RhdGljIFB5X3NzaXplX3QKLWxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCi17Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopczsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICplbmQgPSBwICsgc2l6ZTsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IDA7Ci0KLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGZvciAoOyBwIDwgZW5kOyArK3ApIHsKLSAgICAgICAgaWYgKCpwID4gMTI3KSB7Ci0gICAgICAgICAgICAvKiBOb24tQVNDSUkgKi8KLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgqcCAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAvKiBOb3JtYWwgY2hhcmFjdGVyICovCi0gICAgICAgICAgICArK2xlbmd0aDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIEJhY2tzbGFzaC1lc2NhcGUsIGNoZWNrIG5leHQgY2hhciAqLwotICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgLyogRXNjYXBlIHNlcXVlbmNlIHJlYWNoZXMgdGlsbCBlbmQgb2Ygc3RyaW5nIG9yCi0gICAgICAgICAgICAgICBub24tQVNDSUkgZm9sbG93LXVwLiAqLwotICAgICAgICAgICAgaWYgKHAgPj0gZW5kIHx8ICpwID4gMTI3KQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIHN3aXRjaCAoKnApIHsKLSAgICAgICAgICAgIGNhc2UgJ1xuJzoKLSAgICAgICAgICAgICAgICAvKiBiYWNrc2xhc2ggKyBcbiByZXN1bHQgaW4gemVybyBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1wnJzogY2FzZSAnXCInOgotICAgICAgICAgICAgY2FzZSAnYic6IGNhc2UgJ2YnOiBjYXNlICd0JzoKLSAgICAgICAgICAgIGNhc2UgJ24nOiBjYXNlICdyJzogY2FzZSAndic6IGNhc2UgJ2EnOgotICAgICAgICAgICAgICAgICsrbGVuZ3RoOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6Ci0gICAgICAgICAgICBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzoKLSAgICAgICAgICAgIGNhc2UgJ3gnOiBjYXNlICd1JzogY2FzZSAnVSc6IGNhc2UgJ04nOgotICAgICAgICAgICAgICAgIC8qIHRoZXNlIGRvIG5vdCBndWFyYW50ZWUgQVNDSUkgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgLyogY291bnQgdGhlIGJhY2tzbGFzaCArIHRoZSBvdGhlciBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICAgICBsZW5ndGggKz0gMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCiBzdGF0aWMgX1B5VW5pY29kZV9OYW1lX0NBUEkgKnVjbmhhc2hfQ0FQSSA9IE5VTEw7CiAKIFB5T2JqZWN0ICoKQEAgLTU2MzQsMjE4ICs1ODgwLDIxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwotICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqZW5kOwotICAgIGNoYXIqIG1lc3NhZ2U7Ci0gICAgUHlfVUNTNCBjaHIgPSAweGZmZmZmZmZmOyAvKiBpbiBjYXNlICdnZXRjb2RlJyBtZXNzZXMgdXAgKi8KICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKIAotICAgIGxlbiA9IGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhzLCBzaXplKTsKLSAgICBpZiAobGVuID09IDApCisgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKLQotICAgIC8qIEFmdGVyIGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZygpIHRoZXJlIGFyZSB0d28gYWx0ZXJuYXRpdmVzLAotICAgICAgIGVpdGhlciB0aGUgc3RyaW5nIGlzIHB1cmUgQVNDSUkgd2l0aCBuYW1lZCBlc2NhcGVzIGxpa2UgXG4sIGV0Yy4KLSAgICAgICBhbmQgd2UgZGV0ZXJtaW5lZCBpdCdzIGV4YWN0IHNpemUgKGNvbW1vbiBjYXNlKQotICAgICAgIG9yIGl0IGNvbnRhaW5zIFx4LCBcdSwgLi4uIGVzY2FwZSBzZXF1ZW5jZXMuICB0aGVuIHdlIGNyZWF0ZSBhCi0gICAgICAgbGVnYWN5IHdjaGFyIHN0cmluZyBhbmQgcmVzaXplIGl0IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4gKi8KKyAgICB9CisgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKKyAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQorICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgorICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZworICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7Ci0gICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBsZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwotICAgICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQotICAgICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KLSAgICAgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCi0gICAgICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPCAwKSB7CisgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAgICAgZW5kID0gcyArIHNpemU7Ci0KICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VDUzQgeDsKLSAgICAgICAgaW50IGRpZ2l0czsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOworICAgICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOworICAgICAgICBjb25zdCBjaGFyICptZXNzYWdlOworCisjZGVmaW5lIFdSSVRFX0FTQ0lJX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IDEyNyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7ICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgV1JJVEVfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gd3JpdGVyLm1heGNoYXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7IFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCBjaCkgPCAwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoYyAhPSAnXFwnKSB7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzIC0gMTsKICAgICAgICAgLyogXCAtIEVzY2FwZXMgKi8KLSAgICAgICAgcysrOwotICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgaWYgKHMgPiBlbmQpCi0gICAgICAgICAgICBjID0gJ1wwJzsgLyogSW52YWxpZCBhZnRlciBcICovCisgICAgICAgIGlmIChzID49IGVuZCkgeworICAgICAgICAgICAgbWVzc2FnZSA9ICJcXCBhdCBlbmQgb2Ygc3RyaW5nIjsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOwogCisgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOwogICAgICAgICBzd2l0Y2ggKGMpIHsKIAogICAgICAgICAgICAgLyogXHggZXNjYXBlcyAqLwotI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAoY2gpKSA8IDApICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gd2hpbGUoMCkKLQotICAgICAgICBjYXNlICdcbic6IGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6IFdSSVRFQ0hBUignXFwnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wnJzogV1JJVEVDSEFSKCdcJycpOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCInOiBXUklURUNIQVIoJ1wiJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdiJzogV1JJVEVDSEFSKCdcYicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnXG4nOiBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXFwnOiBXUklURV9BU0NJSV9DSEFSKCdcXCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCcnOiBXUklURV9BU0NJSV9DSEFSKCdcJycpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCInOiBXUklURV9BU0NJSV9DSEFSKCdcIicpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnYic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xiJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBGRiAqLwotICAgICAgICBjYXNlICdmJzogV1JJVEVDSEFSKCdcMDE0Jyk7IGJyZWFrOwotICAgICAgICBjYXNlICd0JzogV1JJVEVDSEFSKCdcdCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAnbic6IFdSSVRFQ0hBUignXG4nKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3InOiBXUklURUNIQVIoJ1xyJyk7IGJyZWFrOworICAgICAgICBjYXNlICdmJzogV1JJVEVfQVNDSUlfQ0hBUignXDAxNCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAndCc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1x0Jyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICduJzogV1JJVEVfQVNDSUlfQ0hBUignXG4nKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ3InOiBXUklURV9BU0NJSV9DSEFSKCdccicpOyBjb250aW51ZTsKICAgICAgICAgLyogVlQgKi8KLSAgICAgICAgY2FzZSAndic6IFdSSVRFQ0hBUignXDAxMycpOyBicmVhazsKKyAgICAgICAgY2FzZSAndic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wwMTMnKTsgY29udGludWU7CiAgICAgICAgIC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLwotICAgICAgICBjYXNlICdhJzogV1JJVEVDSEFSKCdcMDA3Jyk7IGJyZWFrOworICAgICAgICBjYXNlICdhJzogV1JJVEVfQVNDSUlfQ0hBUignXDAwNycpOyBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogXE9PTyAob2N0YWwpIGVzY2FwZXMgKi8KICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CiAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgeCA9IHNbLTFdIC0gJzAnOworICAgICAgICAgICAgY2ggPSBjIC0gJzAnOwogICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgewotICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOwotICAgICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmICcwJyA8PSAqcyAmJiAqcyA8PSAnNycpCi0gICAgICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIGNoID0gKGNoPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IChjaDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdSSVRFQ0hBUih4KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogaGV4IGVzY2FwZXMgKi8KICAgICAgICAgICAgIC8qIFx4WFggKi8KICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBkaWdpdHMgPSAyOworICAgICAgICAgICAgY291bnQgPSAyOwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx4WFggZXNjYXBlIjsKICAgICAgICAgICAgIGdvdG8gaGV4ZXNjYXBlOwogCiAgICAgICAgICAgICAvKiBcdVhYWFggKi8KICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA0OworICAgICAgICAgICAgY291bnQgPSA0OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx1WFhYWCBlc2NhcGUiOwogICAgICAgICAgICAgZ290byBoZXhlc2NhcGU7CiAKICAgICAgICAgICAgIC8qIFxVWFhYWFhYWFggKi8KICAgICAgICAgY2FzZSAnVSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA4OworICAgICAgICAgICAgY291bnQgPSA4OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgaGV4ZXNjYXBlOgotICAgICAgICAgICAgY2hyID0gMDsKLSAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgZGlnaXRzKSB7Ci0gICAgICAgICAgICAgICAgLyogY291bnQgb25seSBoZXggZGlnaXRzICovCi0gICAgICAgICAgICAgICAgZm9yICg7IHMgPCBlbmQ7ICsrcykgewotICAgICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICg7IGRpZ2l0cy0tOyArK3MpIHsKKyAgICAgICAgICAgIGZvciAoY2ggPSAwOyBjb3VudCAmJiBzIDwgZW5kOyArK3MsIC0tY291bnQpIHsKICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBjaHIgPSAoY2hyPDw0KSAmIH4weEY7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNociArPSAxMCArIGMgLSAnQSc7CisgICAgICAgICAgICAgICAgY2ggPDw9IDQ7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAnMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ2EnIC0gMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdBJyAtIDEwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaHIgPT0gMHhmZmZmZmZmZiAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIC8qIF9kZWNvZGluZ19lcnJvciB3aWxsIGhhdmUgYWxyZWFkeSB3cml0dGVuIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RvcmU6Ci0gICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaHIgaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciI7Ci0gICAgICAgICAgICBpZiAoY2hyID4gTUFYX1VOSUNPREUpCisgICAgICAgICAgICBpZiAoY291bnQpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgV1JJVEVDSEFSKGNocik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogd2hlbiB3ZSBnZXQgaGVyZSwgY2ggaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIGlmIChjaCA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIjsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBcTntuYW1lfSAqLwogICAgICAgICBjYXNlICdOJzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOwotICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byB1Y25oYXNoRXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkiCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZXNzYWdlID0gIm1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSI7CiAgICAgICAgICAgICBpZiAoKnMgPT0gJ3snKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSBzKzE7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSArK3M7CisgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVsZW47CiAgICAgICAgICAgICAgICAgLyogbG9vayBmb3IgdGhlIGNsb3NpbmcgYnJhY2UgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKnMgIT0gJ30nICYmIHMgPCBlbmQpCisgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlbmQgJiYgKnMgIT0gJ30nKQogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPiBzdGFydCAmJiBzIDwgZW5kICYmICpzID09ICd9JykgeworICAgICAgICAgICAgICAgIG5hbWVsZW4gPSBzIC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKG5hbWVsZW4gJiYgcyA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIG5hbWUuICBsb29rIGl0IHVwIGluIHRoZSB1bmljb2RlIGRhdGFiYXNlICovCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAocyAtIHN0YXJ0IC0gMSA8PSBJTlRfTUFYICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpKHMtc3RhcnQtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNociwgMCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0b3JlOworICAgICAgICAgICAgICAgICAgICBjaCA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLworICAgICAgICAgICAgICAgICAgICBpZiAobmFtZWxlbiA8PSBJTlRfTUFYICYmCisgICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpbmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2gsIDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gInVua25vd24gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKHMgPiBlbmQpIHsKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgV1JJVEVDSEFSKCdcXCcpOwotICAgICAgICAgICAgICAgIFdSSVRFQ0hBUigodW5zaWduZWQgY2hhcilzWy0xXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAnXFwlYyciLCBjKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgV1JJVEVfQVNDSUlfQ0hBUignXFwnKTsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBjb250aW51ZTsKIAogICAgICAgZXJyb3I6CiAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gZW5kIC0gcyArIHdyaXRlci5wb3M7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAmd3JpdGVyKSkKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkgewogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpIDwgMCkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisKKyN1bmRlZiBXUklURV9BU0NJSV9DSEFSCisjdW5kZWYgV1JJVEVfQ0hBUgogICAgIH0KLSN1bmRlZiBXUklURUNIQVIKIAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCi0gIHVjbmhhc2hFcnJvcjoKLSAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgIFB5RXhjX1VuaWNvZGVFcnJvciwKLSAgICAgICAgIlxcTiBlc2NhcGVzIG5vdCBzdXBwb3J0ZWQgKGNhbid0IGxvYWQgdW5pY29kZWRhdGEgbW9kdWxlKSIKLSAgICAgICAgKTsKLSAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gTlVMTDsKLQogICBvbkVycm9yOgogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CkBAIC01ODY2LDkgKzYxMDksOSBAQAogICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7Ci0gICAgaW50IGtpbmQ7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwogICAgIHZvaWQgKmRhdGE7Ci0gICAgUHlfc3NpemVfdCBleHBhbmRzaXplID0gMDsKKyAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemU7CiAKICAgICAvKiBJbml0aWFsIGFsbG9jYXRpb24gaXMgYmFzZWQgb24gdGhlIGxvbmdlc3QtcG9zc2libGUgY2hhcmFjdGVyCiAgICAgICAgZXNjYXBlLgpAQCAtNTg4Miw2MCArNjEyNSw3MSBAQAogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDQ7IGJyZWFrOwotICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA2OyBicmVhazsKLSAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiBleHBhbmRzaXplID0gMTA7IGJyZWFrOwogICAgIH0KIAotICAgIGlmIChsZW4gPT0gMCkKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgfQogCi0gICAgaWYgKGxlbiA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICAvKiA0IGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCAxMCBieXRlcywgMiBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgNgorICAgICAgIGJ5dGVzLCBhbmQgMSBieXRlIGNoYXJhY3RlcnMgNC4gKi8KKyAgICBleHBhbmRzaXplID0ga2luZCAqIDIgKyAyOworICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKmxlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICB9CisgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMiArIGV4cGFuZHNpemUgKiBsZW4gKyAxKTsKKyAgICBpZiAocmVwciA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKLQogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKLSAgICAgICAgLyogRXNjYXBlIGJhY2tzbGFzaGVzICovCi0gICAgICAgIGlmIChjaCA9PSAnXFwnKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlICovCisgICAgICAgIGlmIChjaCA8IDB4MTAwKSB7CisgICAgICAgICAgICBpZiAoY2ggPj0gJyAnICYmIGNoIDwgMTI3KSB7CisgICAgICAgICAgICAgICAgaWYgKGNoICE9ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogQ29weSBwcmludGFibGUgVVMgQVNDSUkgYXMtaXMgKi8KKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogRXNjYXBlIGJhY2tzbGFzaGVzICovCisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAKLSAgICAgICAgLyogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAweHh4eHh4JyAqLwotICAgICAgICBlbHNlIGlmIChjaCA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHQnKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICd0JzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ24nOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAncic7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYpIHsKKyAgICAgICAgICAgIC8qIE1hcCBub24tcHJpbnRhYmxlIFVTIEFTQ0lJIGFuZCA4LWJpdCBjaGFyYWN0ZXJzIHRvICdceEhIJyAqLworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZTogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdUhISEgnICovCisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgeworICAgICAgICAgICAgLyogVSswMTAwLVUrZmZmZiAqLwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDBGXTsKQEAgLTU5NDMsMzcgKzYxOTcsMjggQEAKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwogICAgICAgICB9CisgICAgICAgIC8qIFUrMDEwMDAwLVUrMTBmZmZmIHJhbmdlOiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDBISEhISEgnICovCisgICAgICAgIGVsc2UgewogCi0gICAgICAgIC8qIE1hcCBzcGVjaWFsIHdoaXRlc3BhY2UgdG8gJ1x0JywgXG4nLCAnXHInICovCi0gICAgICAgIGVsc2UgaWYgKGNoID09ICdcdCcpIHsKKyAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCB0d28gZGlnaXRzIGFyZSB6ZXJvICovCisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUgJiYgTUFYX1VOSUNPREUgPD0gMHgxMGZmZmYpOwogICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3QnOworICAgICAgICAgICAgKnArKyA9ICdVJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xuJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ24nOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdyJzsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIE1hcCBub24tcHJpbnRhYmxlIFVTIEFTQ0lJIHRvICdceGhoJyAqLwotICAgICAgICBlbHNlIGlmIChjaCA8ICcgJyB8fCBjaCA+PSAweDdGKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAneCc7Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQogCiAgICAgYXNzZXJ0KHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSA+IDApOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSkgPCAwKQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gcmVwcjsKIH0KIApAQCAtNTk4Myw4ICs2MjI4LDEwIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqdG1wID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIHNpemUpOwotICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyh0bXApOwogICAgIFB5X0RFQ1JFRih0bXApOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01OTk4LDk1ICs2MjQ1LDEwNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwotICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqZW5kOwotICAgIGNvbnN0IGNoYXIgKmJzOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgaWYgKHNpemUgPT0gMCkKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOworICAgIH0KIAogICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCiAgICAgICAgVW5pY29kZSBzdHJpbmcsIHNvIHdlIHN0YXJ0IHdpdGggc2l6ZSBoZXJlIGFuZCB0aGVuIHJlZHVjZSB0aGUKICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4gKEJ1dCBkZWNvZGluZyBlcnJvcgogICAgICAgIGhhbmRsZXIgbWlnaHQgaGF2ZSB0byByZXNpemUgdGhlIHN0cmluZykgKi8KICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7Ci0gICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzaXplLCAxMjcpIDwgMCkgeworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogCiAgICAgZW5kID0gcyArIHNpemU7CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjOwotICAgICAgICBQeV9VQ1M0IHg7Ci0gICAgICAgIGludCBpOworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGNvdW50OworICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CisgICAgICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CisgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2U7CisKKyNkZWZpbmUgV1JJVEVfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gd3JpdGVyLm1heGNoYXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7IFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCBjaCkgPCAwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqcysrOwotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGlmIChjICE9ICdcXCcgfHwgcyA+PSBlbmQpIHsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAKLSAgICAgICAgLyogXHUtZXNjYXBlcyBhcmUgb25seSBpbnRlcnByZXRlZCBpZmYgdGhlIG51bWJlciBvZiBsZWFkaW5nCi0gICAgICAgICAgIGJhY2tzbGFzaGVzIGlmIG9kZCAqLwotICAgICAgICBicyA9IHM7Ci0gICAgICAgIGZvciAoO3MgPCBlbmQ7KSB7Ci0gICAgICAgICAgICBpZiAoKnMgIT0gJ1xcJykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqcysrOwotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgaWYgKGMgPT0gJ3UnKSB7CisgICAgICAgICAgICBjb3VudCA9IDQ7CisgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHVYWFhYIGVzY2FwZSI7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCgocyAtIGJzKSAmIDEpID09IDAgfHwKLSAgICAgICAgICAgIHMgPj0gZW5kIHx8Ci0gICAgICAgICAgICAoKnMgIT0gJ3UnICYmICpzICE9ICdVJykpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIHdyaXRlci5wb3MtLTsKLSAgICAgICAgY291bnQgPSAqcz09J3UnID8gNCA6IDg7Ci0gICAgICAgIHMrKzsKLQotICAgICAgICAvKiBcdVhYWFggd2l0aCA0IGhleCBkaWdpdHMsIFxVeHh4eHh4eHggd2l0aCA4ICovCi0gICAgICAgIGZvciAoeCA9IDAsIGkgPSAwOyBpIDwgY291bnQ7ICsraSwgKytzKSB7Ci0gICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICBpZiAoIVB5X0lTWERJR0lUKGMpKSB7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCAidHJ1bmNhdGVkIFxcdVhYWFgiLAotICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gKHg8PDQpICYgfjB4RjsKLSAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykKLSAgICAgICAgICAgICAgICB4ICs9IGMgLSAnMCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdBJzsKLSAgICAgICAgfQotICAgICAgICBpZiAoeCA8PSBNQVhfVU5JQ09ERSkgewotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1UnKSB7CisgICAgICAgICAgICBjb3VudCA9IDg7CisgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXFVYWFhYWFhYWCBlc2NhcGUiOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCAiXFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlIiwKLSAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCAnXFwnKTsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgbmV4dEJ5dGU6Ci0gICAgICAgIDsKKyAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHMgLSAyOworCisgICAgICAgIC8qIFx1SEhISCB3aXRoIDQgaGV4IGRpZ2l0cywgXFUwMEhISEhISCB3aXRoIDggKi8KKyAgICAgICAgZm9yIChjaCA9IDA7IGNvdW50ICYmIHMgPCBlbmQ7ICsrcywgLS1jb3VudCkgeworICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOworICAgICAgICAgICAgY2ggPDw9IDQ7CisgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBjaCArPSBjIC0gJzAnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHsKKyAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdhJyAtIDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnQScgLSAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWNvdW50KSB7CisgICAgICAgICAgICBpZiAoY2ggPD0gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlIjsKKyAgICAgICAgfQorCisgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gZW5kIC0gcyArIHdyaXRlci5wb3M7CisgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCisgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAmd3JpdGVyKSkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgd3JpdGVyLm1pbl9sZW5ndGgsIDEyNykgPCAwKSB7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKworI3VuZGVmIFdSSVRFX0NIQVIKICAgICB9CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKQEAgLTYwOTcsNiArNjM1Niw3IEBACiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKKwogfQogCiAKQEAgLTYxMDUsNyArNjM2NSw2IEBACiB7CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKLSAgICBjaGFyICpxOwogICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSwgcG9zOwogICAgIGludCBraW5kOwogICAgIHZvaWQgKmRhdGE7CkBAIC02MTE1LDQzICs2Mzc0LDQxIEBACiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CiAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZGF0YSwgbGVuKTsKKyAgICB9CisKICAgICAvKiA0IGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCAxMCBieXRlcywgMiBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgNgogICAgICAgIGJ5dGVzLCBhbmQgMSBieXRlIGNoYXJhY3RlcnMgNC4gKi8KICAgICBleHBhbmRzaXplID0ga2luZCAqIDIgKyAyOwogCi0gICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCisgICAgfQogICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBsZW4pOwotICAgIGlmIChyZXByID09IE5VTEwpCisgICAgaWYgKHJlcHIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAobGVuID09IDApCisgICAgfQorICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4gcmVwcjsKKyAgICB9CiAKLSAgICBwID0gcSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOworICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKICAgICBmb3IgKHBvcyA9IDA7IHBvcyA8IGxlbjsgcG9zKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7Ci0gICAgICAgIC8qIE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFV4eHh4eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CisKKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZTogQ29weSA4LWJpdCBjaGFyYWN0ZXJzIGFzLWlzICovCisgICAgICAgIGlmIChjaCA8IDB4MTAwKSB7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgICAgICB9Ci0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwotICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYpIHsKKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZTogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdUhISEgnICovCisgICAgICAgIGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgewogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKQEAgLTYxNTksMTQgKzY0MTYsMjYgQEAKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KLSAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKKyAgICAgICAgLyogVSswMTAwMDAtVSsxMGZmZmYgcmFuZ2U6IE1hcCAzMi1iaXQgY2hhcmFjdGVycyB0byAnXFUwMEhISEhISCcgKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUgJiYgTUFYX1VOSUNPREUgPD0gMHgxMGZmZmYpOworICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAqcCsrID0gJ1UnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOworICAgICAgICB9CiAgICAgfQogCi0gICAgYXNzZXJ0KHAgPiBxKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gcSkgPCAwKQorICAgIGFzc2VydChwID4gUHlCeXRlc19BU19TVFJJTkcocmVwcikpOworICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gcmVwcjsKIH0KIApAQCAtNjM0NCw3ICs2NjEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPbjtlbmNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIvYnl0ZXMsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPbjtlbmNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIvYnl0ZXMsIGludCkgdHVwbGUiOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqcmVzdW5pY29kZTsKQEAgLTYzOTgsMjUgKzY2NjcsMjIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX2VuY29kZV91Y3MxKFB5T2JqZWN0ICp1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsaW1pdCkKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVUNTNCBsaW1pdCkKIHsKICAgICAvKiBpbnB1dCBzdGF0ZSAqLwogICAgIFB5X3NzaXplX3QgcG9zPTAsIHNpemU7CiAgICAgaW50IGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKLSAgICAvKiBvdXRwdXQgb2JqZWN0ICovCi0gICAgUHlPYmplY3QgKnJlczsKICAgICAvKiBwb2ludGVyIGludG8gdGhlIG91dHB1dCAqLwogICAgIGNoYXIgKnN0cjsKLSAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwotICAgIFB5X3NzaXplX3QgcmVzc2l6ZTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IChsaW1pdCA9PSAyNTYpID8gImxhdGluLTEiIDogImFzY2lpIjsKICAgICBjb25zdCBjaGFyICpyZWFzb24gPSAobGltaXQgPT0gMjU2KSA/ICJvcmRpbmFsIG5vdCBpbiByYW5nZSgyNTYpIiA6ICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIjsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwgMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOworICAgIFB5T2JqZWN0ICpyZXAgPSBOVUxMOworICAgIC8qIG91dHB1dCBvYmplY3QgKi8KKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY0MjcsMTg2ICs2NjkzLDE1NyBAQAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KICAgICBpZiAoc2l6ZSA9PSAwKQogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKLSAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgIHJlc3NpemUgPSBzaXplOwogCiAgICAgd2hpbGUgKHBvcyA8IHNpemUpIHsKLSAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CiAKICAgICAgICAgLyogY2FuIHdlIGVuY29kZSB0aGlzPyAqLwotICAgICAgICBpZiAoYzxsaW1pdCkgeworICAgICAgICBpZiAoY2ggPCBsaW1pdCkgewogICAgICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KLSAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKWM7CisgICAgICAgICAgICAqc3RyKysgPSAoY2hhciljaDsKICAgICAgICAgICAgICsrcG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemU7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgbmV3cG9zLCByZXNwb3MsIGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvcywgaTsKICAgICAgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVuZW5jb2RhYmxlIGNoYXJzICovCiAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydCA9IHBvczsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IHBvczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IGNvbGxzdGFydCArIDE7CiAgICAgICAgICAgICAvKiBmaW5kIGFsbCB1bmVjb2RhYmxlIGNoYXJhY3RlcnMgKi8KKwogICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgc2l6ZSkgJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGNvbGxlbmQpID49IGxpbWl0KSkKICAgICAgICAgICAgICAgICArK2NvbGxlbmQ7CisKKyAgICAgICAgICAgIC8qIE9ubHkgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgaWYgaXQncyBub3QgdGhlIGxhc3Qgd3JpdGUgKi8KKyAgICAgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAoY29sbGVuZCA8IHNpemUpOworCiAgICAgICAgICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cCAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgICAgICAgICAgaWYgKGtub3duX2Vycm9ySGFuZGxlcj09LTEpIHsKLSAgICAgICAgICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDM7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN3aXRjaCAoa25vd25fZXJyb3JIYW5kbGVyKSB7Ci0gICAgICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikgeworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfU1RSSUNUOgogICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCwgcmVhc29uKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoY29sbHN0YXJ0KysgPCBjb2xsZW5kKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAnPyc7IC8qIGZhbGwgdGhyb3VnaCAqLwotICAgICAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgICAgICBtZW1zZXQoc3RyLCAnPycsIGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciArPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoIGlnbm9yZSBlcnJvciBoYW5kbGVyICovCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CiAgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvczsKLSAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5jcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgMTApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMisxKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMiszKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis0KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis2KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzcrMTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IGluY3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIChzaXplIC0gY29sbGVuZCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IHNpemUgLSBjb2xsZW5kOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXNzaXplIDw9IFBZX1NTSVpFX1RfTUFYLzIgJiYgcmVxdWlyZWRzaXplIDwgMipyZXNzaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHJlcXVpcmVkc2l6ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgPSByZXF1aXJlZHNpemU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOwotICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwgfHwgKFB5VW5pY29kZV9DaGVjayhyZXB1bmljb2RlKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkpCisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IChjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdHIgPSBiYWNrc2xhc2hyZXBsYWNlKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwdW5pY29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogRGlyZWN0bHkgY29weSBieXRlcyByZXN1bHQgdG8gb3V0cHV0LiAqLwotICAgICAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19TaXplKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVwc2l6ZSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1ha2Ugcm9vbSBmb3IgYWxsIGFkZGl0aW9uYWwgYnl0ZXMuICovCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUgLSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHJlc3NpemUrcmVwc2l6ZS0xKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSByZXBzaXplLTE7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IChjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdHIgPSB4bWxjaGFycmVmcmVwbGFjZSgmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaCA8IDB4ZGM4MCB8fCAweGRjZmYgPCBjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogTm90IGEgVVRGLThiIHN1cnJvZ2F0ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHN0ciwgUHlCeXRlc19Bc1N0cmluZyhyZXB1bmljb2RlKSwgcmVwc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHN0ciArPSByZXBzaXplOwotICAgICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpKGNoIC0gMHhkYzAwKTsKKyAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpID49IGNvbGxlbmQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKLSAgICAgICAgICAgICAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBzbwotICAgICAgICAgICAgICAgICAgIHdlIHdvbid0IGhhdmUgdG8gY2hlY2sgc3BhY2UgZm9yIGVuY29kYWJsZSBjaGFyYWN0ZXJzKSAqLwotICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvczsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSByZXBzaXplOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIChzaXplIC0gY29sbGVuZCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IHNpemUgLSBjb2xsZW5kOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXNzaXplIDw9IFBZX1NTSVpFX1RfTUFYLzIgJiYgcmVxdWlyZWRzaXplIDwgMipyZXNzaXplKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHJlcXVpcmVkc2l6ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBjb2xsc3RhcnQgPSBwb3M7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGNvbGxzdGFydCAhPSBjb2xsZW5kKTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsYmFjayB0byBnZW5lcmFsIGVycm9yIGhhbmRsaW5nICovCisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOworICAgICAgICAgICAgICAgIGlmIChyZXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KKyAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlcCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgdGhlcmUgaXMgYW55dGhpbmcgdW5lbmNvZGFibGUgaW4gdGhlIHJlcGxhY2VtZW50Ci0gICAgICAgICAgICAgICAgICAgYW5kIGNvcHkgaXQgdG8gdGhlIG91dHB1dCAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IHJlcHNpemUtLT4wOyArK2ksICsrc3RyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHVuaWNvZGUsIGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYyA+PSBsaW1pdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBwb3MrMSwgcmVhc29uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhyZXApKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkocmVwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoOiBhbGwgY2hhcmFjdGVycyBhcmUgc21hbGxlciB0aGFuIGxpbWl0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQobGltaXQgPj0gMTI4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChyZXApID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAqc3RyID0gKGNoYXIpYzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOworCisgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHN0ciwgcmVwc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyB1bmVuY29kYWJsZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50IGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IHJlcHNpemUtLT4wOyArK2ksICsrc3RyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcCwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBwb3MrMSwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3RyID0gKGNoYXIpY2g7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihyZXApOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICAgICAgd3JpdGUuIE90aGVyd2lzZSwgd2UgbWlzc2VkIGFuIG9wdGltaXphdGlvbiAqLworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgcG9zID09IHNpemUpOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIFJlc2l6ZSBpZiB3ZSBhbGxvY2F0ZWQgdG8gbXVjaCAqLwotICAgIHNpemUgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgIGlmIChzaXplIDwgcmVzc2l6ZSkgeyAvKiBJZiB0aGlzIGZhbGxzIHJlcyB3aWxsIGJlIE5VTEwgKi8KLSAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgc2l6ZSkgPCAwKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgIH0KIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIHJlczsKLQotICBvdmVyZmxvdzoKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHN0cik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYocmVwKTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTY2NjYsOCArNjkwMyw5IEBACiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKICAgICBjb25zdCBjaGFyICplOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogCiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CkBAIC02Njk2LDEyICs2OTM0LDQyIEBACiAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgYyk7CiAgICAgICAgICAgICB3cml0ZXIucG9zKys7CiAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKKworICAgICAgICAvKiBieXRlIG91dHNpemUgcmFuZ2UgMHgwMC4uMHg3ZjogY2FsbCB0aGUgZXJyb3IgaGFuZGxlciAqLworCisgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgICAgICB7CisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgIC8qIEZhc3QtcGF0aDogdGhlIGVycm9yIGhhbmRsZXIgb25seSB3cml0ZXMgb25lIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgIGJ1dCB3ZSBtYXkgc3dpdGNoIHRvIFVDUzIgYXQgdGhlIGZpcnN0IHdyaXRlICovCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgmd3JpdGVyLCBQeVVuaWNvZGVfMkJZVEVfS0lORCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIGtpbmQgPSB3cml0ZXIua2luZDsKKyAgICAgICAgICAgIGRhdGEgPSB3cml0ZXIuZGF0YTsKKworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1JFUExBQ0UpCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci5wb3MsIDB4ZmZmZCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci5wb3MsIGMgKyAweGRjMDApOworICAgICAgICAgICAgd3JpdGVyLnBvcysrOworICAgICAgICAgICAgKytzOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgorICAgICAgICAgICAgKytzOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLAogICAgICAgICAgICAgICAgICAgICAiYXNjaWkiLCAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMTI4KSIsCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKICAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCkBAIC02NzEwLDEzICs2OTc4LDEzIEBACiAgICAgICAgICAgICBkYXRhID0gd3JpdGVyLmRhdGE7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgb25FcnJvcjoKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTY3NTksNyArNzAyNyw3IEBACiAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAotI2lmZGVmIEhBVkVfTUJDUworI2lmZGVmIE1TX1dJTkRPV1MKIAogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTY3NzEsNyArNzAzOSw3IEBACiAjICBkZWZpbmUgV0NfRVJSX0lOVkFMSURfQ0hBUlMgMHgwMDgwCiAjZW5kaWYKIAotc3RhdGljIGNoYXIqCitzdGF0aWMgY29uc3QgY2hhcioKIGNvZGVfcGFnZV9uYW1lKFVJTlQgY29kZV9wYWdlLCBQeU9iamVjdCAqKm9iaikKIHsKICAgICAqb2JqID0gTlVMTDsKQEAgLTY4NzksNyArNzE0Nyw3IEBACiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqZW5jb2Rpbmc7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAgICAgRFdPUkQgZXJyOwogICAgIGludCByZXQgPSAtMTsKIApAQCAtNzExNSw3ICs3MzgzLDYgQEAKICAgICBCT09MIHVzZWREZWZhdWx0Q2hhciA9IEZBTFNFOwogICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXIgPSAmdXNlZERlZmF1bHRDaGFyOwogICAgIGludCBvdXRzaXplOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIHdjaGFyX3QgKnA7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UsIE5VTEwpOwpAQCAtNzIyNCw3ICs3NDkxLDcgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZzsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZzsKICAgICBQeV9zc2l6ZV90IG5ld3BvcywgbmV3b3V0c2l6ZTsKICAgICBQeU9iamVjdCAqcmVwOwogICAgIGludCByZXQgPSAtMTsKQEAgLTc0NzksNyArNzc0Niw3IEBACiAKICN1bmRlZiBORUVEX1JFVFJZCiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC04MDgyLDcgKzgzNDksNyBAQAogY2hhcm1hcF9lbmNvZGluZ19lcnJvcigKICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqaW5wb3MsIFB5T2JqZWN0ICptYXBwaW5nLAogICAgIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgIGludCAqa25vd25fZXJyb3JIYW5kbGVyLCBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwgY29uc3QgY2hhciAqZXJyb3JzLAorICAgIF9QeV9lcnJvcl9oYW5kbGVyICplcnJvcl9oYW5kbGVyLCBQeU9iamVjdCAqKmVycm9yX2hhbmRsZXJfb2JqLCBjb25zdCBjaGFyICplcnJvcnMsCiAgICAgUHlPYmplY3QgKipyZXMsIFB5X3NzaXplX3QgKnJlc3BvcykKIHsKICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7IC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwpAQCAtODEyOSwyMyArODM5NiwxNSBAQAogICAgIH0KICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cAogICAgICAqIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgaWYgKCprbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgIGlmICgoZXJyb3JzPT1OVUxMKSB8fCAoIXN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSkpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMTsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gNDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgfQotICAgIHN3aXRjaCAoKmtub3duX2Vycm9ySGFuZGxlcikgewotICAgIGNhc2UgMTogLyogc3RyaWN0ICovCisgICAgaWYgKCplcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAqZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisKKyAgICBzd2l0Y2ggKCplcnJvcl9oYW5kbGVyKSB7CisgICAgY2FzZSBfUHlfRVJST1JfU1RSSUNUOgogICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLworCisgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKICAgICAgICAgZm9yIChjb2xscG9zID0gY29sbHN0YXJ0cG9zOyBjb2xscG9zPGNvbGxlbmRwb3M7ICsrY29sbHBvcykgewogICAgICAgICAgICAgeCA9IGNoYXJtYXBlbmNvZGVfb3V0cHV0KCc/JywgbWFwcGluZywgcmVzLCByZXNwb3MpOwogICAgICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pIHsKQEAgLTgxNTcsMTAgKzg0MTYsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLworICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKICAgICAgICAgKmlucG9zID0gY29sbGVuZHBvczsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLworCisgICAgY2FzZSBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U6CiAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICh0ZW1wb3JhcmlseSAobWlzKXVzZXMgcCkgKi8KICAgICAgICAgZm9yIChjb2xscG9zID0gY29sbHN0YXJ0cG9zOyBjb2xscG9zIDwgY29sbGVuZHBvczsgKytjb2xscG9zKSB7CiAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyKzI5KzErMV07CkBAIC04MTc4LDggKzg0MzgsOSBAQAogICAgICAgICB9CiAgICAgICAgICppbnBvcyA9IGNvbGxlbmRwb3M7CiAgICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKLSAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JIYW5kbGVyLAorICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCBlcnJvcl9oYW5kbGVyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsIGV4Y2VwdGlvbk9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgJm5ld3Bvcyk7CiAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCkBAIC04MjQyLDEyICs4NTAzLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KICAgICBQeV9zc2l6ZV90IHJlc3BvcyA9IDA7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGNhY2hpbmcgc3RyaW5nIGNvbXBhcmlzb25zCi0gICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsCi0gICAgICogMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogICAgIHZvaWQgKmRhdGE7CiAgICAgaW50IGtpbmQ7CiAKQEAgLTgyNzgsNyArODUzNiw3IEBACiAgICAgICAgIGlmICh4PT1lbmNfRkFJTEVEKSB7IC8qIHVuZW5jb2RhYmxlIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgaWYgKGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IodW5pY29kZSwgJmlucG9zLCBtYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZrbm93bl9lcnJvckhhbmRsZXIsICZlcnJvckhhbmRsZXIsIGVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcl9oYW5kbGVyLCAmZXJyb3JfaGFuZGxlcl9vYmosIGVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXMsICZyZXNwb3MpKSB7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQpAQCAtODI5NCwxMyArODU1MiwxMyBAQAogICAgICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICByZXR1cm4gcmVzOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihyZXMpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTgzNjcsNyArODYyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk8hbjt0cmFuc2xhdGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCiAgICAgUHlfc3NpemVfdCBpX25ld3BvczsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CkBAIC04NjI0LDcgKzg4ODIsNyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLVB5T2JqZWN0ICoKK3N0YXRpYyBQeU9iamVjdCAqCiBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoUHlPYmplY3QgKmlucHV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKQEAgLTg2NTMsMTAgKzg5MTEsOCBAQAogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpbnB1dCk7CiAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKIAotICAgIGlmIChzaXplID09IDApIHsKLSAgICAgICAgUHlfSU5DUkVGKGlucHV0KTsKLSAgICAgICAgcmV0dXJuIGlucHV0OwotICAgIH0KKyAgICBpZiAoc2l6ZSA9PSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QoaW5wdXQpOwogCiAgICAgLyogYWxsb2NhdGUgZW5vdWdoIGZvciBhIHNpbXBsZSAxOjEgdHJhbnNsYXRpb24gd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KQEAgLTg3NjcsMTQgKzkwMjMsOSBAQAogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKIH0KIAogc3RhdGljIFB5X1VDUzQKQEAgLTg5NTYsOSArOTIwNywxMCBAQAogICAgIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLWFueV9maW5kX3NsaWNlKGludCBkaXJlY3Rpb24sIFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAorYW55X2ZpbmRfc2xpY2UoUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKQEAgLTkxMjcsNTQgKzkzNzksMzUgQEAKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKIHsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc3ViX29iajsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEgPSBOVUxMLCAqYnVmMiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1Yl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJzdHIpOwotICAgIGlmICghc3ViX29iaikgewotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKLSAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwotICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViX29iaik7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogCi0gICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwotICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJfb2JqKTsKKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyKTsKICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAotICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViX29iaik7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7Ci0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJfb2JqLCBraW5kMSk7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHIsIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgotICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJfb2JqKSkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHIpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHIpKQogICAgICAgICAgICAgcmVzdWx0ID0gYXNjaWlsaWJfY291bnQoCiAgICAgICAgICAgICAgICAgKChQeV9VQ1MxKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKICAgICAgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWApAQCAtOTIwMSwxNiArOTQzNCwxMSBAQAogICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLQogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKICAgICByZXR1cm4gLTE7CkBAIC05MjE4LDM1ICs5NDQ2LDE1IEBACiAKIFB5X3NzaXplX3QKIFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICBQeU9iamVjdCAqc3ViLAorICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmICghc3RyKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIC0yOwotICAgIHN1YiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Yik7Ci0gICAgaWYgKCFzdWIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMjsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWIpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKGRpcmVjdGlvbiwKLSAgICAgICAgc3RyLCBzdWIsIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKLQotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWIpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gYW55X2ZpbmRfc2xpY2Uoc3RyLCBzdWJzdHIsIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiB9CiAKIFB5X3NzaXplX3QKQEAgLTkzNDksMjIgKzk1NTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJzdHIpOwotICAgIGlmIChzdWJzdHIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAotICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIHN1YnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICBQeV9ERUNSRUYoc3Vic3RyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CiB9CiAKIC8qIEFwcGx5IGZpeGZjdCBmaWx0ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0IHNlbGYgYW5kIHJldHVybiBhCkBAIC05NjY2LDIwICs5ODYyLDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfSm9pbihQeU9iamVjdCAqc2VwYXJhdG9yLCBQeU9iamVjdCAqc2VxKQogewotICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc2VwbGVuOwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCi0gICAgUHlPYmplY3QgKmZzZXE7ICAgICAgICAgIC8qIFB5U2VxdWVuY2VfRmFzdChzZXEpICovCi0gICAgUHlfc3NpemVfdCBzZXFsZW47ICAgICAgIC8qIGxlbihmc2VxKSAtLSBudW1iZXIgb2YgaXRlbXMgaW4gc2VxdWVuY2UgKi8KKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpmc2VxOworICAgIFB5X3NzaXplX3Qgc2VxbGVuOwogICAgIFB5T2JqZWN0ICoqaXRlbXM7Ci0gICAgUHlPYmplY3QgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKLSAgICBQeV9VQ1M0IG1heGNoYXI7Ci0gICAgUHlfVUNTNCBpdGVtX21heGNoYXI7Ci0gICAgaW50IHVzZV9tZW1jcHk7Ci0gICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpsYXN0X29iajsKLSAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CiAKICAgICBmc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHNlcSwgImNhbiBvbmx5IGpvaW4gYW4gaXRlcmFibGUiKTsKICAgICBpZiAoZnNlcSA9PSBOVUxMKSB7CkBAIC05NjkwLDIxICs5ODc2LDM5IEBACiAgICAgICogc28gd2UgYXJlIHN1cmUgdGhhdCBmc2VxIHdvbid0IGJlIG11dGF0ZWQuCiAgICAgICovCiAKKyAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKICAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZnNlcSk7CisgICAgcmVzID0gX1B5VW5pY29kZV9Kb2luQXJyYXkoc2VwYXJhdG9yLCBpdGVtcywgc2VxbGVuKTsKKyAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QgKgorX1B5VW5pY29kZV9Kb2luQXJyYXkoUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKippdGVtcywgUHlfc3NpemVfdCBzZXFsZW4pCit7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KKyAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IHNlcGxlbjsKKyAgICBQeU9iamVjdCAqaXRlbTsKKyAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKKyAgICBpbnQgdXNlX21lbWNweTsKKyAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmxhc3Rfb2JqOworICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKKwogICAgIC8qIElmIGVtcHR5IHNlcXVlbmNlLCByZXR1cm4gdSIiLiAqLwogICAgIGlmIChzZXFsZW4gPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgIH0KIAogICAgIC8qIElmIHNpbmdsZXRvbiBzZXF1ZW5jZSB3aXRoIGFuIGV4YWN0IFVuaWNvZGUsIHJldHVybiB0aGF0LiAqLwogICAgIGxhc3Rfb2JqID0gTlVMTDsKLSAgICBpdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9JVEVNUyhmc2VxKTsKICAgICBpZiAoc2VxbGVuID09IDEpIHsKICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW1zWzBdKSkgewogICAgICAgICAgICAgcmVzID0gaXRlbXNbMF07CiAgICAgICAgICAgICBQeV9JTkNSRUYocmVzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KICAgICAgICAgc2VwbGVuID0gMDsKQEAgLTk4MDIsNyArMTAwMDYsNyBAQAogCiAgICAgICAgICAgICAvKiBDb3B5IGl0ZW0sIGFuZCBtYXliZSB0aGUgc2VwYXJhdG9yLiAqLwogICAgICAgICAgICAgaWYgKGkgJiYgc2VwbGVuICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocmVzX2RhdGEsCisgICAgICAgICAgICAgICAgbWVtY3B5KHJlc19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIHNlcGxlbik7CiAgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIHNlcGxlbjsKQEAgLTk4MTAsNyArMTAwMTQsNyBAQAogCiAgICAgICAgICAgICBpdGVtbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CiAgICAgICAgICAgICBpZiAoaXRlbWxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgIG1lbWNweShyZXNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoaXRlbSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBpdGVtbGVuKTsKICAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogaXRlbWxlbjsKQEAgLTk4MzksMTMgKzEwMDQzLDExIEBACiAgICAgICAgIGFzc2VydChyZXNfb2Zmc2V0ID09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcykpOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKICAgICByZXR1cm4gcmVzOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKGZzZXEpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKICAgICBQeV9YREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC05OTcwLDEzICsxMDE3Miw4IEBACiB7CiAgICAgUHlPYmplY3QgKmxpc3Q7CiAKLSAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJpbmcpOwotICAgIGlmIChzdHJpbmcgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyaW5nKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzdHJpbmcpKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKQEAgLTEwMDAzLDcgKzEwMjAwLDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICBsaXN0ID0gMDsKICAgICB9Ci0gICAgUHlfREVDUkVGKHN0cmluZyk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKQEAgLTEwNTY0LDI4ICsxMDc2MCwyNyBAQAogfQogCiAKLS8qIEFyZ3VtZW50IGNvbnZlcnRlci4gIENvZXJjZXMgdG8gYSBzaW5nbGUgdW5pY29kZSBjaGFyYWN0ZXIgKi8KKy8qIEFyZ3VtZW50IGNvbnZlcnRlci4gQWNjZXB0cyBhIHNpbmdsZSBVbmljb2RlIGNoYXJhY3Rlci4gKi8KIAogc3RhdGljIGludAogY29udmVydF91YyhQeU9iamVjdCAqb2JqLCB2b2lkICphZGRyKQogewogICAgIFB5X1VDUzQgKmZpbGxjaGFybG9jID0gKFB5X1VDUzQgKilhZGRyOwotICAgIFB5T2JqZWN0ICp1bmlvYmo7CiAKLSAgICB1bmlvYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgIGlmICh1bmlvYmogPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIFVuaWNvZGUiKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgYSB1bmljb2RlIGNoYXJhY3RlciwgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLCBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaW9iaikgIT0gMSkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopICE9IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBleGFjdGx5IG9uZSBjaGFyYWN0ZXIgbG9uZyIpOwotICAgICAgICBQeV9ERUNSRUYodW5pb2JqKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgICpmaWxsY2hhcmxvYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIodW5pb2JqLCAwKTsKLSAgICBQeV9ERUNSRUYodW5pb2JqKTsKKyAgICAqZmlsbGNoYXJsb2MgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTEwNzM1LDcgKzEwOTMwLDcgQEAKICN1bmRlZiBDT01QQVJFCiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIHVuaWNvZGVfY29tcGFyZV9lcShQeU9iamVjdCAqc3RyMSwgUHlPYmplY3QgKnN0cjIpCiB7CiAgICAgaW50IGtpbmQ7CkBAIC0xMDkwMSw1OSArMTEwOTYsNDkgQEAKIH0KIAogaW50Ci1QeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKmNvbnRhaW5lciwgUHlPYmplY3QgKmVsZW1lbnQpCitfUHlVbmljb2RlX0VRKFB5T2JqZWN0ICphYSwgUHlPYmplY3QgKmJiKQogewotICAgIFB5T2JqZWN0ICpzdHIsICpzdWI7CisgICAgcmV0dXJuIHVuaWNvZGVfZXEoYWEsIGJiKTsKK30KKworaW50CitQeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0cikKK3sKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBpbnQgcmVzdWx0OwogCi0gICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgc3ViID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZWxlbWVudCk7Ci0gICAgaWYgKCFzdWIpIHsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHIpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJ2luIDxzdHJpbmc+JyByZXF1aXJlcyBzdHJpbmcgYXMgbGVmdCBvcGVyYW5kLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAiJ2luIDxzdHJpbmc+JyByZXF1aXJlcyBzdHJpbmcgYXMgbGVmdCBvcGVyYW5kLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChjb250YWluZXIpOwotICAgIGlmICghc3RyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKLSAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yik7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwotICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWIpOwotICAgIGlmIChsZW4xIDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cik7CisgICAgaWYgKGxlbjEgPCBsZW4yKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cik7CiAgICAgaWYgKGxlbjIgPT0gMSkgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGJ1ZjIsIDApOwogICAgICAgICByZXN1bHQgPSBmaW5kY2hhcigoY29uc3QgY2hhciAqKWJ1ZjEsIGtpbmQxLCBsZW4xLCBjaCwgMSkgIT0gLTE7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7Ci0gICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWIsIGtpbmQxKTsKLSAgICAgICAgaWYgKCFidWYyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyLCBraW5kMSk7CisgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKQEAgLTEwOTcxLDkgKzExMTU2LDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWIpOwotCiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCkBAIC0xMDk4NSw1NiArMTExNjcsNDAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Db25jYXQoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCkKIHsKLSAgICBQeU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTCwgKnc7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9VQ1M0IG1heGNoYXIsIG1heGNoYXIyOwotICAgIFB5X3NzaXplX3QgdV9sZW4sIHZfbGVuLCBuZXdfbGVuOworICAgIFB5X3NzaXplX3QgbGVmdF9sZW4sIHJpZ2h0X2xlbiwgbmV3X2xlbjsKIAotICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwotICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKLSAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgdiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKLSAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKGVuc3VyZV91bmljb2RlKGxlZnQpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShyaWdodCkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIFNob3J0Y3V0cyAqLwotICAgIGlmICh2ID09IHVuaWNvZGVfZW1wdHkpIHsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gdTsKLSAgICB9Ci0gICAgaWYgKHUgPT0gdW5pY29kZV9lbXB0eSkgewotICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KKyAgICBpZiAobGVmdCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOworICAgIGlmIChyaWdodCA9PSB1bmljb2RlX2VtcHR5KQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7CiAKLSAgICB1X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpOwotICAgIHZfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodik7Ci0gICAgaWYgKHVfbGVuID4gUFlfU1NJWkVfVF9NQVggLSB2X2xlbikgeworICAgIGxlZnRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGVmdCk7CisgICAgcmlnaHRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmlnaHQpOworICAgIGlmIChsZWZ0X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gcmlnaHRfbGVuKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKLSAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3X2xlbiA9IHVfbGVuICsgdl9sZW47CisgICAgbmV3X2xlbiA9IGxlZnRfbGVuICsgcmlnaHRfbGVuOwogCi0gICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKLSAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGxlZnQpOworICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHJpZ2h0KTsKICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIG1heGNoYXIyKTsKIAogICAgIC8qIENvbmNhdCB0aGUgdHdvIFVuaWNvZGUgc3RyaW5ncyAqLwotICAgIHcgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOwotICAgIGlmICh3ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCAwLCB1LCAwLCB1X2xlbik7Ci0gICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgdV9sZW4sIHYsIDAsIHZfbGVuKTsKLSAgICBQeV9ERUNSRUYodSk7Ci0gICAgUHlfREVDUkVGKHYpOwotICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodywgMSkpOwotICAgIHJldHVybiB3OwotCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih1KTsKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXN1bHQsIDAsIGxlZnQsIDAsIGxlZnRfbGVuKTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXN1bHQsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlc3VsdCwgMSkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHZvaWQKQEAgLTExMTI1LDYgKzExMjkxLDI1IEBACiAgICAgUHlfWERFQ1JFRihyaWdodCk7CiB9CiAKKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgZW5zdXJlcyB0aGF0IHRoZQorZmlyc3QgYXJndW1lbnQgaXMgYSB1bmljb2RlIG9iamVjdC4KKyovCisKK3N0YXRpYyBpbmxpbmUgaW50CitwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgaWYoc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgc3Vic3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7CisgICAgICAgIGlmIChlbnN1cmVfdW5pY29kZSgqc3Vic3RyaW5nKSA8IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBQeURvY19TVFJWQVIoY291bnRfX2RvY19fLAogICAgICAgICAgICAgICJTLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAogXG5cCkBAIC0xMTE0MywzMSArMTEzMjgsMjYgQEAKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGlyZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImNvdW50IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiY291bnQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwotICAgIH0KKwogICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7Ci0gICAgfQorCiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHJpbmcpOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kMSk7Ci0gICAgICAgIGlmICghYnVmMikgewotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgfQogICAgIHN3aXRjaCAoa2luZDEpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTExOTcsOCArMTEzNzcsNiBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTEzMzIsMjIgKzExNTEwLDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJmaW5kIiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAxKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE0MjAsMjIgKzExNTg5LDEzIEBACiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImluZGV4IiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIDEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTk0OSw3ICsxMjEwOSw3IEBACiAjZGVmaW5lIEJPVEhTVFJJUCAyCiAKIC8qIEFycmF5cyBpbmRleGVkIGJ5IGFib3ZlICovCi1zdGF0aWMgY29uc3QgY2hhciAqc3RyaXBmb3JtYXRbXSA9IHsifE86bHN0cmlwIiwgInxPOnJzdHJpcCIsICJ8TzpzdHJpcCJ9Oworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CiAKICNkZWZpbmUgU1RSSVBOQU1FKGkpIChzdHJpcGZvcm1hdFtpXSszKQogCkBAIC0xMjIzMCwxMSArMTIzOTAsMTEgQEAKICAgICAgICAgUHlfc3NpemVfdCBkb25lID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgICAgICBjaGFyICp0byA9IChjaGFyICopIFB5VW5pY29kZV9EQVRBKHUpOwotICAgICAgICBQeV9NRU1DUFkodG8sIFB5VW5pY29kZV9EQVRBKHN0ciksCisgICAgICAgIG1lbWNweSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgKiBjaGFyX3NpemUpOwogICAgICAgICB3aGlsZSAoZG9uZSA8IG5jaGFycykgewogICAgICAgICAgICAgbiA9IChkb25lIDw9IG5jaGFycy1kb25lKSA/IGRvbmUgOiBuY2hhcnMtZG9uZTsKLSAgICAgICAgICAgIFB5X01FTUNQWSh0byArIChkb25lICogY2hhcl9zaXplKSwgdG8sIG4gKiBjaGFyX3NpemUpOworICAgICAgICAgICAgbWVtY3B5KHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CiAgICAgICAgICAgICBkb25lICs9IG47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjI0NCw0MCArMTI0MDQsMTUgQEAKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJvYmosCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbG9iaiwKK1B5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxzdHIsCiAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewotICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIFB5T2JqZWN0ICpzdHIxOwotICAgIFB5T2JqZWN0ICpzdHIyOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAoc2VsZiA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCB8fAorICAgICAgICAgICAgZW5zdXJlX3VuaWNvZGUocmVwbHN0cikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3RyMSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cjIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChyZXBsb2JqKTsKLSAgICBpZiAoc3RyMiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAotICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwKLSAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7Ci0gICAgUHlfREVDUkVGKHNlbGYpOwotICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICBQeV9ERUNSRUYoc3RyMik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVwbGFjZShzdHIsIHN1YnN0ciwgcmVwbHN0ciwgbWF4Y291bnQpOwogfQogCiBQeURvY19TVFJWQVIocmVwbGFjZV9fZG9jX18sCkBAIC0xMjI5MywyOCArMTI0MjgsMTIgQEAKICAgICBQeU9iamVjdCAqc3RyMTsKICAgICBQeU9iamVjdCAqc3RyMjsKICAgICBQeV9zc2l6ZV90IG1heGNvdW50ID0gLTE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVVV8bjpyZXBsYWNlIiwgJnN0cjEsICZzdHIyLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIxID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMSk7Ci0gICAgaWYgKHN0cjEgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjIpOwotICAgIGlmIChzdHIyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cjEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKLQotICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICBQeV9ERUNSRUYoc3RyMik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjQ5OSwyMiArMTI2MTgsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJmaW5kIiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI1MzYsMjIgKzEyNjQ2LDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoLTEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI1OTEsMjQgKzEyNjkyLDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHMgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzKTsKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzKSA8IDAgfHwgKHNlcCAhPSBOVUxMICYmIGVuc3VyZV91bmljb2RlKHNlcCkgPCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICByZXN1bHQgPSBzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKLQotICAgIFB5X0RFQ1JFRihzKTsKLSAgICBQeV9YREVDUkVGKHNlcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCkBAIC0xMjYzMywzNSArMTI3MjAsMjYgQEAKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1BhcnRpdGlvbihQeU9iamVjdCAqc3RyX2luLCBQeU9iamVjdCAqc2VwX2luKQorUHlVbmljb2RlX1BhcnRpdGlvbihQeU9iamVjdCAqc3RyX29iaiwgUHlPYmplY3QgKnNlcF9vYmopCiB7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyX29iaikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHNlcF9vYmopIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VwX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcF9pbik7Ci0gICAgaWYgKCFzZXBfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CkBAIC0xMjY3NSw4ICsxMjc1Myw2IEBACiAgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgc3RyX29iaiwgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKQEAgLTEyNjg0LDcgKzEyNzYwLDcgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTI3MDUsMzkgKzEyNzgxLDIzIEBACiAgICAgICAgIG91dCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIAogUHlPYmplY3QgKgotUHlVbmljb2RlX1JQYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9pbiwgUHlPYmplY3QgKnNlcF9pbikKK1B5VW5pY29kZV9SUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfb2JqLCBQeU9iamVjdCAqc2VwX29iaikKIHsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJfb2JqKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc2VwX29iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXBfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwX2luKTsKLSAgICBpZiAoIXNlcF9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cl9vYmopOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CkBAIC0xMjc1MSw4ICsxMjgxMSw2IEBACiAgICAgICAgICAgICBvdXQgPSBQeVR1cGxlX1BhY2soMywgdW5pY29kZV9lbXB0eSwgdW5pY29kZV9lbXB0eSwgc3RyX29iaik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodW5pY29kZV9lbXB0eSk7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfb2JqKTsKQEAgLTEyNzYwLDcgKzEyODE4LDcgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlcF9vYmosIGtpbmQxKTsKICAgICAgICAgaWYgKCFidWYyKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTI3ODEsMTggKzEyODM5LDEwIEBACiAgICAgICAgIG91dCA9IDA7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OwotICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCi0gICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLApAQCAtMTI4MjQsMjQgKzEyODc0LDEwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfUlNwbGl0KFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzID0gUHlVbmljb2RlX0Zyb21PYmplY3Qocyk7Ci0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUocykgPCAwIHx8IChzZXAgIT0gTlVMTCAmJiBlbnN1cmVfdW5pY29kZShzZXApIDwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXAgIT0gTlVMTCkgewotICAgICAgICBzZXAgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXApOwotICAgICAgICBpZiAoc2VwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gcnNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwotCi0gICAgUHlfREVDUkVGKHMpOwotICAgIFB5X1hERUNSRUYoc2VwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLApAQCAtMTI4NjYsMTAgKzEyOTAyLDE0IEBACiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQogICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihzcGxpdGxpbmVzX19kb2NfXywKQEAgLTEzMTUwLDExICsxMzE5MCwxNSBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGZvciBzdGFydHN3aXRoIG11c3Qgb25seSBjb250YWluIHN0ciwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CkBAIC0xMzE2NCwxNSArMTMyMDgsMTMgQEAKICAgICAgICAgLyogbm90aGluZyBtYXRjaGVkICovCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCisgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlLjEwMHMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsIC0xKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CkBAIC0xMzIwMiwxMiArMTMyNDQsMTUgQEAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwotICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpOworICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXBsZSBmb3IgZW5kc3dpdGggbXVzdCBvbmx5IGNvbnRhaW4gc3RyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKQEAgLTEzMjE2LDYxICsxMzI2MSw2NyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKLSAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICUuMTAwcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKLSAgICBpZiAoIXdyaXRlci0+cmVhZG9ubHkpCisgICAgd3JpdGVyLT5tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPmRhdGEgPSBQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcik7CisKKyAgICBpZiAoIXdyaXRlci0+cmVhZG9ubHkpIHsKKyAgICAgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX0tJTkQod3JpdGVyLT5idWZmZXIpOwogICAgICAgICB3cml0ZXItPnNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcik7CisgICAgfQogICAgIGVsc2UgeworICAgICAgICAvKiB1c2UgYSB2YWx1ZSBzbWFsbGVyIHRoYW4gUHlVbmljb2RlXzFCWVRFX0tJTkQoKSBzbworICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCkgd2lsbCBjb3B5IHRoZSBidWZmZXIuICovCisgICAgICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9XQ0hBUl9LSU5EOworICAgICAgICBhc3NlcnQod3JpdGVyLT5raW5kIDw9IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKwogICAgICAgICAvKiBDb3B5LW9uLXdyaXRlIG1vZGU6IHNldCBidWZmZXIgc2l6ZSB0byAwIHNvCiAgICAgICAgICAqIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgpIHdpbGwgY29weSAoYW5kIGVubGFyZ2UpIHRoZSBidWZmZXIgb24KICAgICAgICAgICogbmV4dCB3cml0ZS4gKi8KICAgICAgICAgd3JpdGVyLT5zaXplID0gMDsKICAgICB9Ci0gICAgd3JpdGVyLT5tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHdyaXRlci0+YnVmZmVyKTsKLSAgICB3cml0ZXItPmRhdGEgPSBQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcik7Ci0gICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX0tJTkQod3JpdGVyLT5idWZmZXIpOwogfQogCiB2b2lkCiBfUHlVbmljb2RlV3JpdGVyX0luaXQoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIG1lbXNldCh3cml0ZXIsIDAsIHNpemVvZigqd3JpdGVyKSk7Ci0jaWZkZWYgUHlfREVCVUcKLSAgICB3cml0ZXItPmtpbmQgPSA1OyAgICAvKiBpbnZhbGlkIGtpbmQgKi8KLSNlbmRpZgorCisgICAgLyogQVNDSUkgaXMgdGhlIGJhcmUgbWluaW11bSAqLwogICAgIHdyaXRlci0+bWluX2NoYXIgPSAxMjc7CisKKyAgICAvKiB1c2UgYSB2YWx1ZSBzbWFsbGVyIHRoYW4gUHlVbmljb2RlXzFCWVRFX0tJTkQoKSBzbworICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKSB3aWxsIGNvcHkgdGhlIGJ1ZmZlci4gKi8KKyAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORDsKKyAgICBhc3NlcnQod3JpdGVyLT5raW5kIDw9IFB5VW5pY29kZV8xQllURV9LSU5EKTsKIH0KIAogaW50CiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgIC8qIE9uIFdpbmRvd3MsIG92ZXJhbGxvY2F0ZSBieSA1MCUgaXMgdGhlIGJlc3QgZmFjdG9yICovCi0jICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiAyCi0jZWxzZQotICAgLyogT24gTGludXgsIG92ZXJhbGxvY2F0ZSBieSAyNSUgaXMgdGhlIGJlc3QgZmFjdG9yICovCi0jICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiA0Ci0jZW5kaWYKICAgICBQeV9zc2l6ZV90IG5ld2xlbjsKICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOwogCi0gICAgYXNzZXJ0KGxlbmd0aCA+IDApOworICAgIGFzc2VydChtYXhjaGFyIDw9IE1BWF9VTklDT0RFKTsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUgbWFjcm8gd2FzIHVzZWQgKi8KKyAgICBhc3NlcnQoKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgJiYgbGVuZ3RoID49IDApCisgICAgICAgICAgIHx8IGxlbmd0aCA+IDApOwogCiAgICAgaWYgKGxlbmd0aCA+IFBZX1NTSVpFX1RfTUFYIC0gd3JpdGVyLT5wb3MpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTEzMzM2LDkgKzEzMzg3LDMyIEBACiAjdW5kZWYgT1ZFUkFMTE9DQVRFX0ZBQ1RPUgogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQoraW50CitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCkKK3sKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCBtYWNybyB3YXMgdXNlZCAqLworICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPCBraW5kKTsKKworICAgIHN3aXRjaCAoa2luZCkKKyAgICB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDogbWF4Y2hhciA9IDB4ZmY7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6IG1heGNoYXIgPSAweGZmZmY7IGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IG1heGNoYXIgPSAweDEwZmZmZjsgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDAgJiYgImludmFsaWQga2luZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKHdyaXRlciwgMCwgbWF4Y2hhcik7Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpCiB7CisgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgMSwgY2gpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXItPmtpbmQsIHdyaXRlci0+ZGF0YSwgd3JpdGVyLT5wb3MsIGNoKTsKQEAgLTEzNDUxLDcgKzEzNTI1LDcgQEAKICAgICAgICAgY29uc3QgUHlfVUNTMSAqc3RyID0gKGNvbnN0IFB5X1VDUzEgKilhc2NpaTsKICAgICAgICAgUHlfVUNTMSAqZGF0YSA9IHdyaXRlci0+ZGF0YTsKIAotICAgICAgICBQeV9NRU1DUFkoZGF0YSArIHdyaXRlci0+cG9zLCBzdHIsIGxlbik7CisgICAgICAgIG1lbWNweShkYXRhICsgd3JpdGVyLT5wb3MsIHN0ciwgbGVuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CkBAIC0xMzUwNiwxNyArMTM1ODAsMjYgQEAKICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gd3JpdGVyLT5wb3MpOwogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpICE9IHdyaXRlci0+cG9zKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7Ci0gICAgICAgIG5ld2J1ZmZlciA9IHJlc2l6ZV9jb21wYWN0KHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcyk7Ci0gICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7CisgICAgaWYgKHdyaXRlci0+cG9zID09IDApIHsKKyAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworCisgICAgICAgIC8qIEdldCB0aGUgZW1wdHkgVW5pY29kZSBzdHJpbmcgc2luZ2xldG9uICgnJykgKi8KKyAgICAgICAgX1B5X0lOQ1JFRl9VTklDT0RFX0VNUFRZKCk7CisgICAgICAgIHN0ciAgPSB1bmljb2RlX2VtcHR5OwogICAgIH0KLSAgICBzdHIgPSB3cml0ZXItPmJ1ZmZlcjsKLSAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisgICAgZWxzZSB7CisgICAgICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgIT0gd3JpdGVyLT5wb3MpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIyOworICAgICAgICAgICAgc3RyMiA9IHJlc2l6ZV9jb21wYWN0KHN0ciwgd3JpdGVyLT5wb3MpOworICAgICAgICAgICAgaWYgKHN0cjIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHN0ciA9IHN0cjI7CisgICAgICAgIH0KKyAgICB9CisKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF9yZWFkeShzdHIpOwogfQpAQCAtMTQ2NTcsMTMgKzE0NzQwLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGN0eC5mbXRzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChmb3JtYXQpOwotICAgIGlmIChjdHguZm10c3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKGZvcm1hdCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKGN0eC5mbXRzdHIpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorCisgICAgY3R4LmZtdHN0ciA9IGZvcm1hdDsKICAgICBjdHguZm10ZGF0YSA9IFB5VW5pY29kZV9EQVRBKGN0eC5mbXRzdHIpOwogICAgIGN0eC5mbXRraW5kID0gUHlVbmljb2RlX0tJTkQoY3R4LmZtdHN0cik7CiAgICAgY3R4LmZtdGNudCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGN0eC5mbXRzdHIpOwpAQCAtMTQ3MjMsMTEgKzE0ODAzLDkgQEAKICAgICBpZiAoY3R4LmFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGN0eC5hcmdzKTsKICAgICB9Ci0gICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmY3R4LndyaXRlcik7CiAKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZjdHgud3JpdGVyKTsKICAgICBpZiAoY3R4LmFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGN0eC5hcmdzKTsKQEAgLTE0ODQ0LDcgKzE0OTIyLDcgQEAKICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHNlbGYpID0gKHdjaGFyX3QgKilkYXRhOwogICAgIH0KIAotICAgIFB5X01FTUNQWShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICBtZW1jcHkoZGF0YSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCiAgICAgICAgICAgICAgIGtpbmQgKiAobGVuZ3RoICsgMSkpOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc2VsZiwgMSkpOwogI2lmZGVmIFB5X0RFQlVHCkBAIC0xNTAwNSwyNiArMTUwODMsMTggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBJdCBtaWdodCBiZSB0aGF0IHRoZSBHZXRJdGVtIGNhbGwgZmFpbHMgZXZlbgotICAgICAgIHRob3VnaCB0aGUga2V5IGlzIHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksCi0gICAgICAgbmFtZWx5IHdoZW4gdGhpcyBoYXBwZW5zIGR1cmluZyBhIHN0YWNrIG92ZXJmbG93LiAqLwogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgIHQgPSBQeURpY3RfR2V0SXRlbShpbnRlcm5lZCwgcyk7CisgICAgdCA9IFB5RGljdF9TZXREZWZhdWx0KGludGVybmVkLCBzLCBzKTsKICAgICBQeV9FTkRfQUxMT1dfUkVDVVJTSU9OCi0KLSAgICBpZiAodCkgeworICAgIGlmICh0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAodCAhPSBzKSB7CiAgICAgICAgIFB5X0lOQ1JFRih0KTsKICAgICAgICAgUHlfU0VUUkVGKCpwLCB0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGludGVybmVkLCBzLCBzKSA8IDApIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwogICAgIC8qIFRoZSB0d28gcmVmZXJlbmNlcyBpbiBpbnRlcm5lZCBhcmUgbm90IGNvdW50ZWQgYnkgcmVmY250LgogICAgICAgIFRoZSBkZWFsbG9jYXRvciB3aWxsIHRha2UgY2FyZSBvZiB0aGlzICovCiAgICAgUHlfUkVGQ05UKHMpIC09IDI7CmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmggYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKaW5kZXggN2M3ODBiNi4uMzlhZjkyMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCisrKyBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaApAQCAtMjQ0LDEwOSArMjQ0LDExOSBAQAogICAgIHsxNjc3NzU2MiwgMTc4MjYxMzYsIDE2Nzc3NTYyLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc3NTY1LCAxNzgyNjEzOSwgMTY3Nzc1NjUsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMzg0MH0sCisgICAgezAsIDAsIDAsIDAsIDAsIDU4ODh9LAorICAgIHsxNjc3NzU2OCwgMTc4MjYxNDIsIDE2Nzc3NTY4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTcxLCAxNzgyNjE0NSwgMTY3Nzc1NzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzQsIDE3ODI2MTQ4LCAxNjc3NzU3NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3NywgMTc4MjYxNTEsIDE2Nzc3NTc3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTgwLCAxNzgyNjE1NCwgMTY3Nzc1ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODMsIDE3ODI2MTU3LCAxNjc3NzU4MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4NiwgMTc4MjYxNjAsIDE2Nzc3NTg2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTg5LCAxNzgyNjE2MywgMTY3Nzc1ODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1OTIsIDE3ODI2MTY2LCAxNjc3NzU5MiwgMCwgMCwgMjYzNzd9LAogICAgIHszNTMzMiwgMCwgMzUzMzIsIDAsIDAsIDk5OTN9LAogICAgIHszODE0LCAwLCAzODE0LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ3ODUsIDE4ODc0NzE4LCAzMzU1NDc4NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc5MCwgMTg4NzQ3MjMsIDMzNTU0NzkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0Nzk1LCAxODg3NDcyOCwgMzM1NTQ3OTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4MDAsIDE4ODc0NzMzLCAzMzU1NDgwMCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwNSwgMTg4NzQ3MzgsIDMzNTU0ODA1LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3NTkzLCAxNzgyNjE2NywgMTY3Nzc1OTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3Nzc1OTcsIDE4ODc0NzQ2LCAxNjc3NzU5NywgMCwgMCwgMjY0OTd9LAorICAgIHszMzU1NDgxMiwgMTg4NzQ3NDUsIDMzNTU0ODEyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MjIsIDE4ODc0NzU1LCAzMzU1NDgyMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgyNywgMTg4NzQ3NjAsIDMzNTU0ODI3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODMyLCAxODg3NDc2NSwgMzM1NTQ4MzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc2MjAsIDE3ODI2MTk0LCAxNjc3NzYyMCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzYyNCwgMTg4NzQ3NzMsIDE2Nzc3NjI0LCAwLCAwLCAyNjQ5N30sCiAgICAgezgsIDAsIDgsIDAsIDAsIDk5OTN9LAogICAgIHswLCAtOCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NDgxNywgMTg4NzQ3NTAsIDMzNTU0ODE3LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDM5LCAxOTkyMzMzMSwgNTAzMzIwMzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwNDYsIDE5OTIzMzM4LCA1MDMzMjA0NiwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjA1MywgMTk5MjMzNDUsIDUwMzMyMDUzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODQ0LCAxODg3NDc3NywgMzM1NTQ4NDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwNjYsIDE5OTIzMzU4LCA1MDMzMjA2NiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA3MywgMTk5MjMzNjUsIDUwMzMyMDczLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDgwLCAxOTkyMzM3MiwgNTAzMzIwODAsIDAsIDAsIDI2Mzc3fSwKICAgICB7NzQsIDAsIDc0LCAwLCAwLCA5OTkzfSwKICAgICB7ODYsIDAsIDg2LCAwLCAwLCA5OTkzfSwKICAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDk5OTN9LAogICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgOTk5M30sCiAgICAgezExMiwgMCwgMTEyLCAwLCAwLCA5OTkzfSwKICAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDg0MywgMTg4NzQ3NzYsIDE2Nzc3NjI5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODQ5LCAxODg3NDc4MiwgMTY3Nzc2MzUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NTUsIDE4ODc0Nzg4LCAxNjc3NzY0MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg2MSwgMTg4NzQ3OTQsIDE2Nzc3NjQ3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODY3LCAxODg3NDgwMCwgMTY3Nzc2NTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NzMsIDE4ODc0ODA2LCAxNjc3NzY1OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3OSwgMTg4NzQ4MTIsIDE2Nzc3NjY1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODg1LCAxODg3NDgxOCwgMTY3Nzc2NzEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4OTEsIDE4ODc0ODI0LCAxNjc3NzY3NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDg5NywgMTg4NzQ4MzAsIDE2Nzc3NjgzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTAzLCAxODg3NDgzNiwgMTY3Nzc2ODksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MDksIDE4ODc0ODQyLCAxNjc3NzY5NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkxNSwgMTg4NzQ4NDgsIDE2Nzc3NzAxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTIxLCAxODg3NDg1NCwgMTY3Nzc3MDcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MjcsIDE4ODc0ODYwLCAxNjc3NzcxMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkzMywgMTg4NzQ4NjYsIDE2Nzc3NzE5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTM5LCAxODg3NDg3MiwgMTY3Nzc3MjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NDUsIDE4ODc0ODc4LCAxNjc3NzczMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk1MSwgMTg4NzQ4ODQsIDE2Nzc3NzM3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTU3LCAxODg3NDg5MCwgMTY3Nzc3NDMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NjMsIDE4ODc0ODk2LCAxNjc3Nzc0OSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk2OSwgMTg4NzQ5MDIsIDE2Nzc3NzU1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTc1LCAxODg3NDkwOCwgMTY3Nzc3NjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODEsIDE4ODc0OTE0LCAxNjc3Nzc2NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4NywgMTg4NzQ5MjAsIDE2Nzc3NzczLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTkzLCAxODg3NDkyNiwgMTY3Nzc3NzksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5OTksIDE4ODc0OTMyLCAxNjc3Nzc4NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAwNSwgMTg4NzQ5MzgsIDE2Nzc3NzkxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDExLCAxODg3NDk0NCwgMTY3Nzc3OTcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMTcsIDE4ODc0OTUwLCAxNjc3NzgwMywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAyMywgMTg4NzQ5NTYsIDE2Nzc3ODA5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDI5LCAxODg3NDk2MiwgMTY3Nzc4MTUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMzUsIDE4ODc0OTY4LCAxNjc3NzgyMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA0MSwgMTg4NzQ5NzQsIDE2Nzc3ODI3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDQ3LCAxODg3NDk4MCwgMTY3Nzc4MzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNTMsIDE4ODc0OTg2LCAxNjc3NzgzOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA1OSwgMTg4NzQ5OTIsIDE2Nzc3ODQ1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDY1LCAxODg3NDk5OCwgMTY3Nzc4NTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNzEsIDE4ODc1MDA0LCAxNjc3Nzg1NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA3NywgMTg4NzUwMTAsIDE2Nzc3ODYzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDgzLCAxODg3NTAxNiwgMTY3Nzc4NjksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwODksIDE4ODc1MDIyLCAxNjc3Nzg3NSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTA5NSwgMTg4NzUwMjgsIDE2Nzc3ODgxLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTAxLCAxODg3NTAzNCwgMTY3Nzc4ODcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMDcsIDE4ODc1MDQwLCAxNjc3Nzg5MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTExMywgMTg4NzUwNDYsIDE2Nzc3ODk5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTE5LCAxODg3NTA1MiwgMTY3Nzc5MDUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMjUsIDE4ODc1MDU4LCAxNjc3NzkxMSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEzMSwgMTg4NzUwNjQsIDMzNTU1MTMzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTM4LCAxODg3NTA3MSwgMTY3Nzc5MjQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNDQsIDE4ODc1MDc3LCAzMzU1NTE0NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE1MSwgMTg4NzUwODQsIDMzNTU1MTUxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMzczLCAxOTkyMzY2NSwgNTAzMzIzNzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzAsIDE4ODc0ODAzLCAxNjc3NzY1NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3NiwgMTg4NzQ4MDksIDE2Nzc3NjYyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODgyLCAxODg3NDgxNSwgMTY3Nzc2NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4ODgsIDE4ODc0ODIxLCAxNjc3NzY3NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg5NCwgMTg4NzQ4MjcsIDE2Nzc3NjgwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTAwLCAxODg3NDgzMywgMTY3Nzc2ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDYsIDE4ODc0ODM5LCAxNjc3NzY5MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxMiwgMTg4NzQ4NDUsIDE2Nzc3Njk4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTE4LCAxODg3NDg1MSwgMTY3Nzc3MDQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MjQsIDE4ODc0ODU3LCAxNjc3NzcxMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkzMCwgMTg4NzQ4NjMsIDE2Nzc3NzE2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTM2LCAxODg3NDg2OSwgMTY3Nzc3MjIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NDIsIDE4ODc0ODc1LCAxNjc3NzcyOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk0OCwgMTg4NzQ4ODEsIDE2Nzc3NzM0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTU0LCAxODg3NDg4NywgMTY3Nzc3NDAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NjAsIDE4ODc0ODkzLCAxNjc3Nzc0NiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk2NiwgMTg4NzQ4OTksIDE2Nzc3NzUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTcyLCAxODg3NDkwNSwgMTY3Nzc3NTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NzgsIDE4ODc0OTExLCAxNjc3Nzc2NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk4NCwgMTg4NzQ5MTcsIDE2Nzc3NzcwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTkwLCAxODg3NDkyMywgMTY3Nzc3NzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5OTYsIDE4ODc0OTI5LCAxNjc3Nzc4MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAwMiwgMTg4NzQ5MzUsIDE2Nzc3Nzg4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDA4LCAxODg3NDk0MSwgMTY3Nzc3OTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMTQsIDE4ODc0OTQ3LCAxNjc3NzgwMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAyMCwgMTg4NzQ5NTMsIDE2Nzc3ODA2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDI2LCAxODg3NDk1OSwgMTY3Nzc4MTIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMzIsIDE4ODc0OTY1LCAxNjc3NzgxOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAzOCwgMTg4NzQ5NzEsIDE2Nzc3ODI0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDQ0LCAxODg3NDk3NywgMTY3Nzc4MzAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNTAsIDE4ODc0OTgzLCAxNjc3NzgzNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA1NiwgMTg4NzQ5ODksIDE2Nzc3ODQyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDYyLCAxODg3NDk5NSwgMTY3Nzc4NDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNjgsIDE4ODc1MDAxLCAxNjc3Nzg1NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA3NCwgMTg4NzUwMDcsIDE2Nzc3ODYwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDgwLCAxODg3NTAxMywgMTY3Nzc4NjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODYsIDE4ODc1MDE5LCAxNjc3Nzg3MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA5MiwgMTg4NzUwMjUsIDE2Nzc3ODc4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDk4LCAxODg3NTAzMSwgMTY3Nzc4ODQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMDQsIDE4ODc1MDM3LCAxNjc3Nzg5MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTExMCwgMTg4NzUwNDMsIDE2Nzc3ODk2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTE2LCAxODg3NTA0OSwgMTY3Nzc5MDIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMjIsIDE4ODc1MDU1LCAxNjc3NzkwOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEyOCwgMTg4NzUwNjEsIDE2Nzc3OTE0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTM0LCAxODg3NTA2NywgMTY3Nzc5MjAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNDAsIDE4ODc1MDczLCAxNjc3NzkyNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE0NiwgMTg4NzUwNzksIDE2Nzc3OTMyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTUyLCAxODg3NTA4NSwgMTY3Nzc5MzgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNTgsIDE4ODc1MDkxLCAzMzU1NTE2MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE2NSwgMTg4NzUwOTgsIDE2Nzc3OTUxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTcxLCAxODg3NTEwNCwgMzM1NTUxNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNzgsIDE4ODc1MTExLCAzMzU1NTE3OCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQwMCwgMTk5MjM2OTIsIDUwMzMyNDAzLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC03NCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTE2NiwgMTg4NzUwOTksIDE2Nzc3OTUyLCAwLCAwLCAyNjQzM30sCi0gICAgezE2Nzc3OTU1LCAxNzgyNjUyOSwgMTY3Nzc5NTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNzUsIDE4ODc1MTA4LCAzMzU1NTE3NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE4MiwgMTg4NzUxMTUsIDE2Nzc3OTY4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTg4LCAxODg3NTEyMSwgMzM1NTUxOTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxOTUsIDE4ODc1MTI4LCAzMzU1NTE5NSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQxNywgMTk5MjM3MDksIDUwMzMyNDIwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTkzLCAxODg3NTEyNiwgMTY3Nzc5NzksIDAsIDAsIDI2NDMzfSwKKyAgICB7MTY3Nzc5ODIsIDE3ODI2NTU2LCAxNjc3Nzk4MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIwMiwgMTg4NzUxMzUsIDMzNTU1MjA0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjA5LCAxODg3NTE0MiwgMTY3Nzc5OTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMTUsIDE4ODc1MTQ4LCAzMzU1NTIxNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIyMiwgMTg4NzUxNTUsIDMzNTU1MjIyLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDQ0LCAxOTkyMzczNiwgNTAzMzI0NDcsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTg2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MjEwLCAxODg3NTE0MywgMTY3Nzc5OTYsIDAsIDAsIDI2NDMzfSwKLSAgICB7NTAzMzI0MzMsIDE5OTIzNzI1LCA1MDMzMjQzMywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ0MCwgMTk5MjM3MzIsIDUwMzMyNDQwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjMwLCAxODg3NTE2MywgMzM1NTUyMzAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NTIsIDE5OTIzNzQ0LCA1MDMzMjQ1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIzNywgMTg4NzUxNzAsIDE2Nzc4MDIzLCAwLCAwLCAyNjQzM30sCisgICAgezUwMzMyNDYwLCAxOTkyMzc1MiwgNTAzMzI0NjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NjcsIDE5OTIzNzU5LCA1MDMzMjQ2NywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI1NywgMTg4NzUxOTAsIDMzNTU1MjU3LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDc5LCAxOTkyMzc3MSwgNTAzMzI0NzksIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEwMCwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHs1MDMzMjQ1OSwgMTk5MjM3NTEsIDUwMzMyNDU5LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDY2LCAxOTkyMzc1OCwgNTAzMzI0NjYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyNTYsIDE4ODc1MTg5LCAzMzU1NTI1NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI2MSwgMTg4NzUxOTQsIDMzNTU1MjYxLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDgzLCAxOTkyMzc3NSwgNTAzMzI0ODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0ODYsIDE5OTIzNzc4LCA1MDMzMjQ4NiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ5MywgMTk5MjM3ODUsIDUwMzMyNDkzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjgzLCAxODg3NTIxNiwgMzM1NTUyODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODgsIDE4ODc1MjIxLCAzMzU1NTI4OCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjUxMCwgMTk5MjM4MDIsIDUwMzMyNTEwLCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMTIsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUyNzMsIDE4ODc1MjA2LCAzMzU1NTI3NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI4MCwgMTg4NzUyMTMsIDE2Nzc4MDY2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1Mjg2LCAxODg3NTIxOSwgMzM1NTUyODgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyOTMsIDE4ODc1MjI2LCAzMzU1NTI5MywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjUxNSwgMTk5MjM4MDcsIDUwMzMyNTE4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzAwLCAxODg3NTIzMywgMzM1NTUzMDIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMDcsIDE4ODc1MjQwLCAxNjc3ODA5MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMxMywgMTg4NzUyNDYsIDMzNTU1MzE1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzIwLCAxODg3NTI1MywgMzM1NTUzMjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI1NDIsIDE5OTIzODM0LCA1MDMzMjU0NSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTI4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIC0xMjYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUzMDgsIDE4ODc1MjQxLCAxNjc3ODA5NCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTMzNSwgMTg4NzUyNjgsIDE2Nzc4MTIxLCAwLCAwLCAyNjQzM30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA0LCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNSwgMzA3Nn0sCkBAIC0zODgsMTUgKzM5OCw2IEBACiAgICAgezAsIC00MjI2MSwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCA5MjgsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7LTkyOCwgMCwgLTkyOCwgMCwgMCwgOTk5M30sCi0gICAgezE2Nzc4MDk3LCAxNzgyNjY3MSwgMTY3NzgwOTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDAsIDE3ODI2Njc0LCAxNjc3ODEwMCwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwMywgMTc4MjY2NzcsIDE2Nzc4MTAzLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTA2LCAxNzgyNjY4MCwgMTY3NzgxMDYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDksIDE3ODI2NjgzLCAxNjc3ODEwOSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExMiwgMTc4MjY2ODYsIDE2Nzc4MTEyLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTE1LCAxNzgyNjY4OSwgMTY3NzgxMTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTgsIDE3ODI2NjkyLCAxNjc3ODExOCwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEyMSwgMTc4MjY2OTUsIDE2Nzc4MTIxLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTI0LCAxNzgyNjY5OCwgMTY3NzgxMjQsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMjcsIDE3ODI2NzAxLCAxNjc3ODEyNywgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEzMCwgMTc4MjY3MDQsIDE2Nzc4MTMwLCAwLCAwLCAyNjM3N30sCkBAIC00NjgsMjIgKzQ2OSwzMyBAQAogICAgIHsxNjc3ODMyOCwgMTc4MjY5MDIsIDE2Nzc4MzI4LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MzMxLCAxNzgyNjkwNSwgMTY3NzgzMzEsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgzMzQsIDE3ODI2OTA4LCAxNjc3ODMzNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU1NCwgMTg4NzU0ODcsIDMzNTU1NTU2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTYxLCAxODg3NTQ5NCwgMzM1NTU1NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NjgsIDE4ODc1NTAxLCAzMzU1NTU3MCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjc5MiwgMTk5MjQwODQsIDUwMzMyNzk1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyODAyLCAxOTkyNDA5NCwgNTAzMzI4MDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzMzcsIDE3ODI2OTExLCAxNjc3ODMzNywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0MCwgMTc4MjY5MTQsIDE2Nzc4MzQwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQzLCAxNzgyNjkxNywgMTY3NzgzNDMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDYsIDE3ODI2OTIwLCAxNjc3ODM0NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0OSwgMTc4MjY5MjMsIDE2Nzc4MzQ5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzUyLCAxNzgyNjkyNiwgMTY3NzgzNTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTUsIDE3ODI2OTI5LCAxNjc3ODM1NSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1OCwgMTc4MjY5MzIsIDE2Nzc4MzU4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzYxLCAxNzgyNjkzNSwgMTY3NzgzNjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1ODEsIDE4ODc1NTE0LCAzMzU1NTU4MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU4OCwgMTg4NzU1MjEsIDMzNTU1NTkwLCAwLCAwLCAyNjM3N30sCiAgICAgezMzNTU1NTk1LCAxODg3NTUyOCwgMzM1NTU1OTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MDIsIDE4ODc1NTM1LCAzMzU1NTYwNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYwOSwgMTg4NzU1NDIsIDMzNTU1NjExLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjE2LCAxODg3NTU0OSwgMzM1NTU2MTgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MjMsIDE4ODc1NTU2LCAzMzU1NTYyNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYzMCwgMTg4NzU1NjMsIDMzNTU1NjMyLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjM3LCAxODg3NTU3MCwgMzM1NTU2MzksIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI4MTksIDE5OTI0MTExLCA1MDMzMjgyMiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgyOSwgMTk5MjQxMjEsIDUwMzMyODMyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjIyLCAxODg3NTU1NSwgMzM1NTU2MjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjksIDE4ODc1NTYyLCAzMzU1NTYzMSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYzNiwgMTg4NzU1NjksIDMzNTU1NjM4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjQzLCAxODg3NTU3NiwgMzM1NTU2NDUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NTAsIDE4ODc1NTgzLCAzMzU1NTY1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY1NywgMTg4NzU1OTAsIDMzNTU1NjU5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjY0LCAxODg3NTU5NywgMzM1NTU2NjYsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDU2MzN9LAogICAgIHswLCA0MCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstNDAsIDAsIC00MCwgMCwgMCwgOTk5M30sCisgICAgezAsIDM0LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0zNCwgMCwgLTM0LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgOTM0NH0sCiB9OwogCkBAIC04NDAsNiArODUyLDMzIEBACiAgICAgNTExNywKICAgICA1MTA5LAogICAgIDUxMDksCisgICAgNzI5NiwKKyAgICAxMDc0LAorICAgIDEwNDIsCisgICAgNzI5NywKKyAgICAxMDc2LAorICAgIDEwNDQsCisgICAgNzI5OCwKKyAgICAxMDg2LAorICAgIDEwNTQsCisgICAgNzI5OSwKKyAgICAxMDg5LAorICAgIDEwNTcsCisgICAgNzMwMCwKKyAgICAxMDkwLAorICAgIDEwNTgsCisgICAgNzMwMSwKKyAgICAxMDkwLAorICAgIDEwNTgsCisgICAgNzMwMiwKKyAgICAxMDk4LAorICAgIDEwNjYsCisgICAgNzMwMywKKyAgICAxMTIzLAorICAgIDExMjIsCisgICAgNzMwNCwKKyAgICA0MjU3MSwKKyAgICA0MjU3MCwKICAgICA3ODMwLAogICAgIDEwNCwKICAgICA4MTcsCkBAIC0xNzM2LDY5ICsxNzc1LDY4IEBACiAgICAgMTMxLCAxMzIsIDEzMywgMTM0LCAzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAKICAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE0NSwgMzQsIDM0LCAxNTIsIDE0NSwgMTUzLCAxNTQsIDE1NSwgCiAgICAgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNDUsIDE0NSwgMTYzLCAxNDUsIDE0NSwgMTQ1LCAxNjQsIAotICAgIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE0NSwgMTQ1LCAxNzEsIDE0NSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAKLSAgICAxNDUsIDE0NSwgMTc2LCAxNDUsIDE0NSwgMTQ1LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE3OCwgMTc5LCAzNCwgMTgwLCAxNDUsIDE0NSwgCisgICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNzEsIDE3MiwgMTQ1LCAxNzMsIDE3NCwgMTc1LCAxNzYsIAorICAgIDE0NSwgMTQ1LCAxNzcsIDE0NSwgMTQ1LCAxNDUsIDE3OCwgMTQ1LCAxNDUsIDE3OSwgMTgwLCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxODIsIDM0LCAxODMsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTgxLCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTg0LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTgzLCAxODQsIDE4NSwgMTg2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxODcsIDE4OCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTg2LCAxODcsIDE4OCwgMTg5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxOTAsIDE5MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTIsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMTkzLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTk0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTk1LCAxOTYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTg5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTkwLCAxOTEsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCA2NCwgMTkyLCAKLSAgICAxOTMsIDE5NCwgMTk1LCAxNDUsIDE5NiwgMTQ1LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgNjQsIAotICAgIDY0LCA2NCwgNjQsIDIwNSwgMjA2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMzQsIDIwNywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMDgsIAotICAgIDIwOSwgMTQ1LCAxNDUsIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAxNDUsIDY0LCAyMTUsIDY0LCA2NCwgMjE2LCAyMTcsIAotICAgIDY0LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIyNSwgMjI2LCAyMjcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMjgsIDM0LCAyMjksIDIzMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAxNDUsIDY0LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDE0NSwgMjAxLCAxNDUsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIAorICAgIDIwOCwgMjA5LCA2NCwgNjQsIDY0LCA2NCwgMjEwLCAyMTEsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMjEyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjEzLCAyMTQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDIxNSwgMjE2LCAxNDUsIDE0NSwgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDE0NSwgNjQsIDIyMiwgNjQsIAorICAgIDY0LCA2NCwgNjQsIDY0LCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIzMCwgMjMxLCAyMzIsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAyMzMsIDM0LCAyMzQsIDIzNSwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMjMyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAyMzMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDIzOCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzUsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM2LCAzNCwgMjM3LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMjQwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDI0MSwgMzQsIDI0MiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzOCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQzLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMzEsIDM0LCAzNCwgMjM5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMzYsIDM0LCAzNCwgMjQ0LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKQEAgLTIyMDEsOCArMjIzOSw4IEBACiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjQwLCAxNDUsIDI0MSwgMjQyLCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyNDUsIDE0NSwgCisgICAgMjQ2LCAyNDcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIApAQCAtMjIzOCw3ICsyMjc2LDcgQEAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMjI3NCw3ICsyMzEyLDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDgsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIApAQCAtMjMxMSw3ICsyMzQ5LDcgQEAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKLSAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDI0MywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMjM0Nyw3ICsyMzg1LDcgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDY1LCAKICAgICAzMCwgMzEsIDY2LCA2NywgNjgsIDY4LCAzMCwgMzEsIDY5LCA3MCwgNzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDIwLCA3NywgNzcsIDIwLCA3OCwgMjAsIDc5LCA4MCwgMjAsIDIwLCAKLSAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDIwLCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKKyAgICAyMCwgNzcsIDgxLCAyMCwgODIsIDIwLCA4MywgODQsIDIwLCA4NSwgODYsIDg0LCA4NywgODgsIDIwLCAyMCwgODYsIDIwLCAKICAgICA4OSwgOTAsIDIwLCAyMCwgOTEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5MiwgMjAsIDIwLCA5MywgMjAsIDIwLCAKICAgICA5MywgMjAsIDIwLCAyMCwgOTQsIDkzLCA5NSwgOTYsIDk2LCA5NywgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OCwgMjAsIDU1LCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk5LCAxMDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCkBAIC0yNDM1LDE1MiArMjQ3MywxNTIgQEAKICAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgCi0gICAgMjUsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAotICAgIDI1LCAyNSwgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIAotICAgIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgCi0gICAgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMCwgMjUsIDE4LCAxOCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMTgsIDAsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDI1LCA1NSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgCi0gICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAKKyAgICAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIAorICAgIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAKKyAgICAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIAotICAgIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgNTUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDE4LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDI1LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAyNSwgMCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDE4LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAxMDIsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMTAyLCAwLCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMTgsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzOSwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1NSwgMTgsIAotICAgIDE4LCAxOCwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMTgsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAxOCwgMTgsIDE4LCAyNSwgNSwgNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIAotICAgIDEzOSwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMTAyLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIAotICAgIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAKLSAgICAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgCi0gICAgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIAotICAgIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAKLSAgICAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgCi0gICAgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIAotICAgIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgCi0gICAgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE0OSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIAorICAgIDE2MSwgMTYyLCAxNjMsIDE2NCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAKKyAgICAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgCisgICAgMTg5LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIAorICAgIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMjE2LCAKKyAgICAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgCisgICAgMjMxLCAyMzIsIDIzMywgMjM0LCAwLCAwLCAyMzUsIDIzNiwgMjM3LCAyMzgsIDIzOSwgMjQwLCAwLCAwLCA1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjU5MywxMDkgKzI2MzEsMTEwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDI0MSwgMjQxLCAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAyNSwgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAKKyAgICAyNDEsIDI0MSwgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgCi0gICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI0MiwgMjQyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIAorICAgIDE4LCAxOCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMCwgCisgICAgMCwgMCwgNSwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCAxNDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAwLCAwLCA1LCA1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKKyAgICAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDAsIDAsIDI1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDEwMiwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMjQzLCAyNDQsIAorICAgIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCi0gICAgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNDIsIDIwLCAKLSAgICAyMCwgMjAsIDI0MywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAyNTIsIDIwLCAyMCwgMjAsIDI1MywgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCkBAIC0yNzA0LDQ5ICsyNzQzLDQ5IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMjQ0LCAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjAsIDIwLCAyNTAsIDIwLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjAsIDIwLCAyNjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgMCwgMjUyLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIAotICAgIDAsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MywgMjUxLCAyNTQsIDI1MSwgMjU1LCAyNTEsIDI1NiwgCi0gICAgMjUxLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgCi0gICAgMjUxLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjU3LCAyNTcsIDI1OCwgMjU4LCAyNTgsIAotICAgIDI1OCwgMjU5LCAyNTksIDI2MCwgMjYwLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjY0LCAyNjUsIDI2NiwgCi0gICAgMjY3LCAyNjgsIDI2OSwgMjcwLCAyNzEsIDI3MiwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgMjc5LCAyODAsIAotICAgIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIDI5MywgMjk0LCAKLSAgICAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAzMDcsIDMwOCwgCi0gICAgMzA5LCAzMTAsIDI1MSwgMjUxLCAzMTEsIDMxMiwgMzEzLCAwLCAzMTQsIDMxNSwgMjUyLCAyNTIsIDMxNiwgMzE2LCAzMTcsIAotICAgIDYsIDMxOCwgNiwgNiwgNiwgMzE5LCAzMjAsIDMyMSwgMCwgMzIyLCAzMjMsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCA2LCAKLSAgICA2LCA2LCAyNTEsIDI1MSwgMzI2LCAzMjcsIDAsIDAsIDMyOCwgMzI5LCAyNTIsIDI1MiwgMzMwLCAzMzAsIDAsIDYsIDYsIDYsIAotICAgIDI1MSwgMjUxLCAzMzEsIDMzMiwgMzMzLCAxMjYsIDMzNCwgMzM1LCAyNTIsIDI1MiwgMzM2LCAzMzYsIDEzMCwgNiwgNiwgNiwgCi0gICAgMCwgMCwgMzM3LCAzMzgsIDMzOSwgMCwgMzQwLCAzNDEsIDM0MiwgMzQyLCAzNDMsIDM0MywgMzQ0LCA2LCA2LCAwLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIAotICAgIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzQ1LCAxMDEsIAotICAgIDAsIDAsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzQ1LCAyNiwgMjIsIDIzLCAKLSAgICAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMzEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMCwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDAsIDAsIDI2MywgMjYxLCAyNjQsIDI2MSwgMjY1LCAyNjEsIDI2NiwgMjYxLCAwLCAKKyAgICAyNjIsIDAsIDI2MiwgMCwgMjYyLCAwLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI3MCwgMjcwLCAyNzEsIDI3MSwgMjcyLCAyNzIsIDAsIDAsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIAorICAgIDI3OSwgMjgwLCAyODEsIDI4MiwgMjgzLCAyODQsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAKKyAgICAyOTMsIDI5NCwgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsIDMwNiwgCisgICAgMzA3LCAzMDgsIDMwOSwgMzEwLCAzMTEsIDMxMiwgMzEzLCAzMTQsIDMxNSwgMzE2LCAzMTcsIDMxOCwgMzE5LCAzMjAsIAorICAgIDI2MSwgMjYxLCAzMjEsIDMyMiwgMzIzLCAwLCAzMjQsIDMyNSwgMjYyLCAyNjIsIDMyNiwgMzI2LCAzMjcsIDYsIDMyOCwgNiwgCisgICAgNiwgNiwgMzI5LCAzMzAsIDMzMSwgMCwgMzMyLCAzMzMsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM1LCA2LCA2LCA2LCAyNjEsIAorICAgIDI2MSwgMzM2LCAzMzcsIDAsIDAsIDMzOCwgMzM5LCAyNjIsIDI2MiwgMzQwLCAzNDAsIDAsIDYsIDYsIDYsIDI2MSwgMjYxLCAKKyAgICAzNDEsIDM0MiwgMzQzLCAxMjYsIDM0NCwgMzQ1LCAyNjIsIDI2MiwgMzQ2LCAzNDYsIDEzMCwgNiwgNiwgNiwgMCwgMCwgCisgICAgMzQ3LCAzNDgsIDM0OSwgMCwgMzUwLCAzNTEsIDM1MiwgMzUyLCAzNTMsIDM1MywgMzU0LCA2LCA2LCAwLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMzU1LCAxMDEsIDAsIAorICAgIDAsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDUsIDUsIDUsIDUsIDUsIDEwMSwgMzU1LCAyNiwgMjIsIDIzLCAKKyAgICAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCA1LCA1LCA1LCA1LCA1LCAwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA2LCA2LCA2LCA2LCAyNSwgNiwgNiwgNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNSwgNSwgMTIwLCA1LCA1LCA1LCA1LCAxMjAsIDUsIDUsIDIwLCAxMjAsIDEyMCwgMTIwLCAyMCwgMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM1MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDEyMCwgNSwgMzUzLCA1LCAxMjAsIDUsIDM1NCwgMzU1LCAxMjAsIDEyMCwgMzUyLCAyMCwgMTIwLCAxMjAsIDM1NiwgMTIwLCAKKyAgICAxMjAsIDIwLCA1LCAxMjAsIDUsIDUsIDM2MiwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDEyMCwgNSwgMzYzLCA1LCAxMjAsIDUsIDM2NCwgMzY1LCAxMjAsIDEyMCwgMzYyLCAyMCwgMTIwLCAxMjAsIDM2NiwgMTIwLCAKICAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDIwLCA1LCA1LCAyMCwgMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCAxMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNTcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIAotICAgIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAKLSAgICAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCisgICAgMjAsIDIwLCAyMCwgNSwgNSwgNSwgNSwgMzY3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAKKyAgICAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgCisgICAgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDI0MSwgMjQxLCAyNDEsIDMwLCAzMSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yNzYyLDI4ICsyODAxLDI4IEBACiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAKLSAgICAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgCi0gICAgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgCisgICAgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIAorICAgIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCi0gICAgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAotICAgIDM2MCwgMzYwLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKLSAgICAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCi0gICAgMzQ1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgCi0gICAgMzQ5LCAzNTAsIDM1MSwgMjcsIDM0NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAKKyAgICAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgCisgICAgMzcwLCAzNzAsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIAorICAgIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAKKyAgICAzNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAKKyAgICAzNTksIDM2MCwgMzYxLCAyNywgMzU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAKLSAgICAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgCi0gICAgMzUwLCAzNTEsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjYsIDIyLCAKKyAgICAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgCisgICAgMzYwLCAzNjEsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI4MDUsMTggKzI4NDQsMTggQEAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAwLCAKLSAgICAzMCwgMzEsIDM2MiwgMzYzLCAzNjQsIDM2NSwgMzY2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNjcsIDM2OCwgMzY5LCAKLSAgICAzNzAsIDIwLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDM3MSwgMzcxLCAzMCwgCisgICAgMzAsIDMxLCAzNzIsIDM3MywgMzc0LCAzNzUsIDM3NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzc3LCAzNzgsIDM3OSwgCisgICAgMzgwLCAyMCwgMzAsIDMxLCAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAzODEsIDM4MSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDIwLCA1LCA1LCA1LCA1LCA1LCA1LCAzMCwgMzEsIDMwLCAzMSwgCi0gICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgMzcyLCAwLCAwLCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAyNywgNSwgNSwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODI5LDggKzI4NjgsOCBAQAogICAgIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzMsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM4MywgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yODgyLDE0ICsyOTIxLDE0IEBACiAgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yODk4LDcgKzI5MzcsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTA4LDcgKzI5NDcsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTE2LDQ3ICsyOTU1LDQ3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzc0LCAKLSAgICA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM4NCwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5NjQsNyArMzAwMyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5NzMsMTQgKzMwMTIsMTQgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5ODgsOCArMzAyNyw4IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgMzc0LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDM4NCwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMDIsMTEgKzMwNDEsMTEgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDE0LDEwICszMDUzLDEwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAyNSw3ICszMDY0LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAzMyw0MCArMzA3Miw0MCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzEwNiwyNiArMzE0NSwyNiBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzc1LCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAyLCA2LCA2LCAzMCwgMzEsIDM3NiwgMjAsIDU1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzODUsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzg2LCAyMCwgNTUsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzc3LCAzNzgsIDM3OSwgMzgwLCAwLCAwLCAzODEsIDM4MiwgMzgzLCAzODQsIAotICAgIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzg3LCAzODgsIDM4OSwgMzkwLCAzODcsIDAsIDM5MSwgMzkyLCAzOTMsIAorICAgIDM5NCwgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxMDEsIDEwMSwgCi0gICAgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgMTAxLCAxMDEsIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgNSwgNTUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCiAgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgCkBAIC0zMTU4LDE0ICszMTk3LDE0IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKICAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDM4NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDYsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAzODcsIDM4OCwgMzg5LCAzOTAsIAotICAgIDM5MSwgMzkyLCAzOTMsIDM5NCwgMzk1LCAzOTYsIDM5NywgMzk4LCAzOTksIDQwMCwgNDAxLCA0MDIsIDQwMywgNDA0LCAKLSAgICA0MDUsIDQwNiwgNDA3LCA0MDgsIDQwOSwgNDEwLCA0MTEsIDQxMiwgNDEzLCA0MTQsIDQxNSwgNDE2LCA0MTcsIDQxOCwgCi0gICAgNDE5LCA0MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LCA0MjYsIDQyNywgNDI4LCA0MjksIDQzMCwgNDMxLCA0MzIsIAotICAgIDQzMywgNDM0LCA0MzUsIDQzNiwgNDM3LCA0MzgsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgNDQzLCA0NDQsIDQ0NSwgNDQ2LCAKLSAgICA0NDcsIDQ0OCwgNDQ5LCA0NTAsIDQ1MSwgNDUyLCA0NTMsIDQ1NCwgNDU1LCA0NTYsIDQ1NywgNDU4LCA0NTksIDQ2MCwgCi0gICAgNDYxLCA0NjIsIDQ2MywgNDY0LCA0NjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIwLCAyMCwgMzk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTYsIDM5NywgMzk4LCAzOTksIDQwMCwgCisgICAgNDAxLCA0MDIsIDQwMywgNDA0LCA0MDUsIDQwNiwgNDA3LCA0MDgsIDQwOSwgNDEwLCA0MTEsIDQxMiwgNDEzLCA0MTQsIAorICAgIDQxNSwgNDE2LCA0MTcsIDQxOCwgNDE5LCA0MjAsIDQyMSwgNDIyLCA0MjMsIDQyNCwgNDI1LCA0MjYsIDQyNywgNDI4LCAKKyAgICA0MjksIDQzMCwgNDMxLCA0MzIsIDQzMywgNDM0LCA0MzUsIDQzNiwgNDM3LCA0MzgsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgCisgICAgNDQzLCA0NDQsIDQ0NSwgNDQ2LCA0NDcsIDQ0OCwgNDQ5LCA0NTAsIDQ1MSwgNDUyLCA0NTMsIDQ1NCwgNDU1LCA0NTYsIAorICAgIDQ1NywgNDU4LCA0NTksIDQ2MCwgNDYxLCA0NjIsIDQ2MywgNDY0LCA0NjUsIDQ2NiwgNDY3LCA0NjgsIDQ2OSwgNDcwLCAKKyAgICA0NzEsIDQ3MiwgNDczLCA0NzQsIDQ3NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDUsIDE4LCAyNSwgMCwgMCwgNywgCiAgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMTg2LDE1ICszMjI1LDE1IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyMDgsOSArMzI0Nyw5IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY2LCA0NjcsIDQ2OCwgNDY5LCAKLSAgICA0NzAsIDQ3MSwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDQ3NCwgNDc1LCA0NzYsIAotICAgIDQ3NywgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc2LCA0NzcsIDQ3OCwgNDc5LCAKKyAgICA0ODAsIDQ4MSwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDQ4NCwgNDg1LCA0ODYsIAorICAgIDQ4NywgMCwgMCwgMCwgMCwgMCwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyMjcsNyArMzI2Niw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzI0MiwxMyArMzI4MSwxMyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0NzgsIDQ3OCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ4OCwgNDg4LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAxOCwgNSwgNSwgNiwgMCwgNSwgNiwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCAwLCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDU1LCAKKyAgICA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDAsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzI2NCw3ICszMzAzLDcgQEAKICAgICA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA0NzksIDQ3OSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDQ4OSwgNDg5LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgMCwgNSwgCkBAIC0zMjkwLDcgKzMzMjksNyBAQAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTMzMjAsMjk3ICszMzU5LDMzMiBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCAwLCAwLCAwLCAwLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI3LCAyNywgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI2LCAyMiwgMjMsIDM0NiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgCi0gICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIAotICAgIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCi0gICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNSwgCi0gICAgNTUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAotICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIAotICAgIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDU1LCA1NSwgCi0gICAgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI3LCAyNywgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNiwgMjIsIDIzLCAzNTYsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAKKyAgICAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDU1LCA1LCA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAxOCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI1LCA1NSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAxOCwgMCwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMCwgCisgICAgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDUsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNTUsIDU1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA3LCA4LCA5LCAxMCwgMTEsIAorICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgNTUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDEwMiwgCisgICAgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAogICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCisgICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1LCAyNSwgMjUsIDUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMzcwMCwyMTggKzM3NzQsMjIxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDM0NSwgMzQ1LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDAsIDAsIDAsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NSwgMzU1LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgCisgICAgMzYxLCAyNywgMjcsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCA1LCA1LCA1LCA1LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgMCwgMCwgMCwgMCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA1LCA1LCA1LCA1LCA1LCA1LCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNSwgNSwgMCwgMCwgMCwgMCwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDYsIDYsIDYsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDM3NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKKyAgICAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAogICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIApAQCAtMzkyNCwxMyArNDAwMSwxMyBAQAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIAogfTsKIAogLyogUmV0dXJucyB0aGUgbnVtZXJpYyB2YWx1ZSBhcyBkb3VibGUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycwpAQCAtMzk5NiwxMSArNDA3MywxMyBAQAogICAgIGNhc2UgMHgxMTEzNjoKICAgICBjYXNlIDB4MTExRDA6CiAgICAgY2FzZSAweDExMkYwOgorICAgIGNhc2UgMHgxMTQ1MDoKICAgICBjYXNlIDB4MTE0RDA6CiAgICAgY2FzZSAweDExNjUwOgogICAgIGNhc2UgMHgxMTZDMDoKICAgICBjYXNlIDB4MTE3MzA6CiAgICAgY2FzZSAweDExOEUwOgorICAgIGNhc2UgMHgxMUM1MDoKICAgICBjYXNlIDB4MTZBNjA6CiAgICAgY2FzZSAweDE2QjUwOgogICAgIGNhc2UgMHgxRDdDRToKQEAgLTQwMDgsNiArNDA4Nyw3IEBACiAgICAgY2FzZSAweDFEN0UyOgogICAgIGNhc2UgMHgxRDdFQzoKICAgICBjYXNlIDB4MUQ3RjY6CisgICAgY2FzZSAweDFFOTUwOgogICAgIGNhc2UgMHgxRjEwMDoKICAgICBjYXNlIDB4MUYxMDE6CiAgICAgY2FzZSAweDFGMTBCOgpAQCAtNDEwOCwxMSArNDE4OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEMToKICAgICBjYXNlIDB4MTExRTE6CiAgICAgY2FzZSAweDExMkYxOgorICAgIGNhc2UgMHgxMTQ1MToKICAgICBjYXNlIDB4MTE0RDE6CiAgICAgY2FzZSAweDExNjUxOgogICAgIGNhc2UgMHgxMTZDMToKICAgICBjYXNlIDB4MTE3MzE6CiAgICAgY2FzZSAweDExOEUxOgorICAgIGNhc2UgMHgxMUM1MToKKyAgICBjYXNlIDB4MTFDNUE6CiAgICAgY2FzZSAweDEyNDE1OgogICAgIGNhc2UgMHgxMjQxRToKICAgICBjYXNlIDB4MTI0MkM6CkBAIC00MTI4LDE3ICs0MjExLDIyIEBACiAgICAgY2FzZSAweDFEN0VEOgogICAgIGNhc2UgMHgxRDdGNzoKICAgICBjYXNlIDB4MUU4Qzc6CisgICAgY2FzZSAweDFFOTUxOgogICAgIGNhc2UgMHgxRjEwMjoKICAgICBjYXNlIDB4MjA5MkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjA7CisgICAgY2FzZSAweDBENUM6CiAgICAgY2FzZSAweDIxNTI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTAuMDsKICAgICBjYXNlIDB4MTA5RjY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTIuMDsKICAgICBjYXNlIDB4MDlGNDoKICAgICBjYXNlIDB4MEI3NToKKyAgICBjYXNlIDB4MEQ3NjoKICAgICBjYXNlIDB4QTgzMzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xNi4wOworICAgIGNhc2UgMHgwRDU4OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzE2MC4wOwogICAgIGNhc2UgMHgwMEJEOgogICAgIGNhc2UgMHgwQjczOgogICAgIGNhc2UgMHgwRDc0OgpAQCAtNDE1Miw2ICs0MjQwLDggQEAKICAgICBjYXNlIDB4MTBFN0I6CiAgICAgY2FzZSAweDEyNDY0OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzIuMDsKKyAgICBjYXNlIDB4MEQ1QjoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yMC4wOwogICAgIGNhc2UgMHgyMTUzOgogICAgIGNhc2UgMHgxMEU3RDoKICAgICBjYXNlIDB4MTI0NUE6CkBAIC00MTcwLDYgKzQyNjAsOSBAQAogICAgIGNhc2UgMHgxMjQ2MjoKICAgICBjYXNlIDB4MTI0NjM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNC4wOworICAgIGNhc2UgMHgwRDU5OgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQwLjA7CisgICAgY2FzZSAweDBENUU6CiAgICAgY2FzZSAweDIxNTU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNS4wOwogICAgIGNhc2UgMHgyMTU5OgpAQCAtNDE3OSw2ICs0MjcyLDcgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC83LjA7CiAgICAgY2FzZSAweDA5RjU6CiAgICAgY2FzZSAweDBCNzY6CisgICAgY2FzZSAweDBENzc6CiAgICAgY2FzZSAweDIxNUI6CiAgICAgY2FzZSAweEE4MzQ6CiAgICAgY2FzZSAweDEyNDVGOgpAQCAtNDIzNiw2ICs0MzMwLDcgQEAKICAgICBjYXNlIDB4MTExRUE6CiAgICAgY2FzZSAweDExNzNBOgogICAgIGNhc2UgMHgxMThFQToKKyAgICBjYXNlIDB4MTFDNjM6CiAgICAgY2FzZSAweDE2QjVCOgogICAgIGNhc2UgMHgxRDM2OToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwLjA7CkBAIC00MjY5LDYgKzQzNjQsNyBAQAogICAgIGNhc2UgMHgxMEU3MjoKICAgICBjYXNlIDB4MTEwNjQ6CiAgICAgY2FzZSAweDExMUYzOgorICAgIGNhc2UgMHgxMUM2QzoKICAgICBjYXNlIDB4MTZCNUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMDAuMDsKICAgICBjYXNlIDB4MEJGMjoKQEAgLTQ0NzAsMTEgKzQ1NjYsMTQgQEAKICAgICBjYXNlIDB4MTExRDI6CiAgICAgY2FzZSAweDExMUUyOgogICAgIGNhc2UgMHgxMTJGMjoKKyAgICBjYXNlIDB4MTE0NTI6CiAgICAgY2FzZSAweDExNEQyOgogICAgIGNhc2UgMHgxMTY1MjoKICAgICBjYXNlIDB4MTE2QzI6CiAgICAgY2FzZSAweDExNzMyOgogICAgIGNhc2UgMHgxMThFMjoKKyAgICBjYXNlIDB4MTFDNTI6CisgICAgY2FzZSAweDExQzVCOgogICAgIGNhc2UgMHgxMjQwMDoKICAgICBjYXNlIDB4MTI0MTY6CiAgICAgY2FzZSAweDEyNDFGOgpAQCAtNDQ5NCw2ICs0NTkzLDcgQEAKICAgICBjYXNlIDB4MUQ3RUU6CiAgICAgY2FzZSAweDFEN0Y4OgogICAgIGNhc2UgMHgxRThDODoKKyAgICBjYXNlIDB4MUU5NTI6CiAgICAgY2FzZSAweDFGMTAzOgogICAgIGNhc2UgMHgyMjM5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIuMDsKQEAgLTQ1MzcsNiArNDYzNyw3IEBACiAgICAgY2FzZSAweDExMUVCOgogICAgIGNhc2UgMHgxMTczQjoKICAgICBjYXNlIDB4MTE4RUI6CisgICAgY2FzZSAweDExQzY0OgogICAgIGNhc2UgMHgxRDM2QToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDIwLjA7CiAgICAgY2FzZSAweDEwMTFBOgpAQCAtNDY1NywxMSArNDc1OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEMzoKICAgICBjYXNlIDB4MTExRTM6CiAgICAgY2FzZSAweDExMkYzOgorICAgIGNhc2UgMHgxMTQ1MzoKICAgICBjYXNlIDB4MTE0RDM6CiAgICAgY2FzZSAweDExNjUzOgogICAgIGNhc2UgMHgxMTZDMzoKICAgICBjYXNlIDB4MTE3MzM6CiAgICAgY2FzZSAweDExOEUzOgorICAgIGNhc2UgMHgxMUM1MzoKKyAgICBjYXNlIDB4MTFDNUM6CiAgICAgY2FzZSAweDEyNDAxOgogICAgIGNhc2UgMHgxMjQwODoKICAgICBjYXNlIDB4MTI0MTc6CkBAIC00Njg2LDYgKzQ3OTAsNyBAQAogICAgIGNhc2UgMHgxRDdFRjoKICAgICBjYXNlIDB4MUQ3Rjk6CiAgICAgY2FzZSAweDFFOEM5OgorICAgIGNhc2UgMHgxRTk1MzoKICAgICBjYXNlIDB4MUYxMDQ6CiAgICAgY2FzZSAweDIwQUZEOgogICAgIGNhc2UgMHgyMEIxOToKQEAgLTQ2OTYsMTAgKzQ4MDEsMTMgQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8xMi4wOwogICAgIGNhc2UgMHgwOUY2OgogICAgIGNhc2UgMHgwQjc3OgorICAgIGNhc2UgMHgwRDc4OgogICAgIGNhc2UgMHhBODM1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzE2LjA7CiAgICAgY2FzZSAweDBGMkI6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMi4wOworICAgIGNhc2UgMHgwRDVEOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzIwLjA7CiAgICAgY2FzZSAweDAwQkU6CiAgICAgY2FzZSAweDA5Rjg6CiAgICAgY2FzZSAweDBCNzQ6CkBAIC00NzExLDYgKzQ4MTksOCBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzUuMDsKICAgICBjYXNlIDB4MjE1QzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84LjA7CisgICAgY2FzZSAweDBENUE6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvODAuMDsKICAgICBjYXNlIDB4MTM3NDoKICAgICBjYXNlIDB4MzAzQToKICAgICBjYXNlIDB4MzI0QToKQEAgLTQ3MjQsNiArNDgzNCw3IEBACiAgICAgY2FzZSAweDExMDVEOgogICAgIGNhc2UgMHgxMTFFQzoKICAgICBjYXNlIDB4MTE4RUM6CisgICAgY2FzZSAweDExQzY1OgogICAgIGNhc2UgMHgxRDM2QjoKICAgICBjYXNlIDB4MjA5ODM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzMC4wOwpAQCAtNDgzNiwxMSArNDk0NywxNCBAQAogICAgIGNhc2UgMHgxMTFENDoKICAgICBjYXNlIDB4MTExRTQ6CiAgICAgY2FzZSAweDExMkY0OgorICAgIGNhc2UgMHgxMTQ1NDoKICAgICBjYXNlIDB4MTE0RDQ6CiAgICAgY2FzZSAweDExNjU0OgogICAgIGNhc2UgMHgxMTZDNDoKICAgICBjYXNlIDB4MTE3MzQ6CiAgICAgY2FzZSAweDExOEU0OgorICAgIGNhc2UgMHgxMUM1NDoKKyAgICBjYXNlIDB4MTFDNUQ6CiAgICAgY2FzZSAweDEyNDAyOgogICAgIGNhc2UgMHgxMjQwOToKICAgICBjYXNlIDB4MTI0MEY6CkBAIC00ODY2LDYgKzQ5ODAsNyBAQAogICAgIGNhc2UgMHgxRDdGMDoKICAgICBjYXNlIDB4MUQ3RkE6CiAgICAgY2FzZSAweDFFOENBOgorICAgIGNhc2UgMHgxRTk1NDoKICAgICBjYXNlIDB4MUYxMDU6CiAgICAgY2FzZSAweDIwMDY0OgogICAgIGNhc2UgMHgyMDBFMjoKQEAgLTQ4ODYsNiArNTAwMSw3IEBACiAgICAgY2FzZSAweDExMDVFOgogICAgIGNhc2UgMHgxMTFFRDoKICAgICBjYXNlIDB4MTE4RUQ6CisgICAgY2FzZSAweDExQzY2OgogICAgIGNhc2UgMHgxMjQ2NzoKICAgICBjYXNlIDB4MUQzNkM6CiAgICAgY2FzZSAweDIwOThDOgpAQCAtNTAwNSwxMSArNTEyMSwxNCBAQAogICAgIGNhc2UgMHgxMTFENToKICAgICBjYXNlIDB4MTExRTU6CiAgICAgY2FzZSAweDExMkY1OgorICAgIGNhc2UgMHgxMTQ1NToKICAgICBjYXNlIDB4MTE0RDU6CiAgICAgY2FzZSAweDExNjU1OgogICAgIGNhc2UgMHgxMTZDNToKICAgICBjYXNlIDB4MTE3MzU6CiAgICAgY2FzZSAweDExOEU1OgorICAgIGNhc2UgMHgxMUM1NToKKyAgICBjYXNlIDB4MTFDNUU6CiAgICAgY2FzZSAweDEyNDAzOgogICAgIGNhc2UgMHgxMjQwQToKICAgICBjYXNlIDB4MTI0MTA6CkBAIC01MDMxLDYgKzUxNTAsNyBAQAogICAgIGNhc2UgMHgxRDdGMToKICAgICBjYXNlIDB4MUQ3RkI6CiAgICAgY2FzZSAweDFFOENCOgorICAgIGNhc2UgMHgxRTk1NToKICAgICBjYXNlIDB4MUYxMDY6CiAgICAgY2FzZSAweDIwMTIxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNS4wOwpAQCAtNTA2Nyw2ICs1MTg3LDcgQEAKICAgICBjYXNlIDB4MTEwNUY6CiAgICAgY2FzZSAweDExMUVFOgogICAgIGNhc2UgMHgxMThFRToKKyAgICBjYXNlIDB4MTFDNjc6CiAgICAgY2FzZSAweDEyNDY4OgogICAgIGNhc2UgMHgxRDM2RDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUwLjA7CkBAIC01MTcyLDExICs1MjkzLDE0IEBACiAgICAgY2FzZSAweDExMUQ2OgogICAgIGNhc2UgMHgxMTFFNjoKICAgICBjYXNlIDB4MTEyRjY6CisgICAgY2FzZSAweDExNDU2OgogICAgIGNhc2UgMHgxMTRENjoKICAgICBjYXNlIDB4MTE2NTY6CiAgICAgY2FzZSAweDExNkM2OgogICAgIGNhc2UgMHgxMTczNjoKICAgICBjYXNlIDB4MTE4RTY6CisgICAgY2FzZSAweDExQzU2OgorICAgIGNhc2UgMHgxMUM1RjoKICAgICBjYXNlIDB4MTI0MDQ6CiAgICAgY2FzZSAweDEyNDBCOgogICAgIGNhc2UgMHgxMjQxMToKQEAgLTUxOTQsNiArNTMxOCw3IEBACiAgICAgY2FzZSAweDFEN0YyOgogICAgIGNhc2UgMHgxRDdGQzoKICAgICBjYXNlIDB4MUU4Q0M6CisgICAgY2FzZSAweDFFOTU2OgogICAgIGNhc2UgMHgxRjEwNzoKICAgICBjYXNlIDB4MjBBRUE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2LjA7CkBAIC01MjA4LDYgKzUzMzMsNyBAQAogICAgIGNhc2UgMHgxMTA2MDoKICAgICBjYXNlIDB4MTExRUY6CiAgICAgY2FzZSAweDExOEVGOgorICAgIGNhc2UgMHgxMUM2ODoKICAgICBjYXNlIDB4MUQzNkU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA2MC4wOwogICAgIGNhc2UgMHgxMDExRToKQEAgLTUyOTMsMTEgKzU0MTksMTQgQEAKICAgICBjYXNlIDB4MTExRDc6CiAgICAgY2FzZSAweDExMUU3OgogICAgIGNhc2UgMHgxMTJGNzoKKyAgICBjYXNlIDB4MTE0NTc6CiAgICAgY2FzZSAweDExNEQ3OgogICAgIGNhc2UgMHgxMTY1NzoKICAgICBjYXNlIDB4MTE2Qzc6CiAgICAgY2FzZSAweDExNzM3OgogICAgIGNhc2UgMHgxMThFNzoKKyAgICBjYXNlIDB4MTFDNTc6CisgICAgY2FzZSAweDExQzYwOgogICAgIGNhc2UgMHgxMjQwNToKICAgICBjYXNlIDB4MTI0MEM6CiAgICAgY2FzZSAweDEyNDEyOgpAQCAtNTMxNiw2ICs1NDQ1LDcgQEAKICAgICBjYXNlIDB4MUQ3RjM6CiAgICAgY2FzZSAweDFEN0ZEOgogICAgIGNhc2UgMHgxRThDRDoKKyAgICBjYXNlIDB4MUU5NTc6CiAgICAgY2FzZSAweDFGMTA4OgogICAgIGNhc2UgMHgyMDAwMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMDsKQEAgLTUzMzQsNiArNTQ2NCw3IEBACiAgICAgY2FzZSAweDExMDYxOgogICAgIGNhc2UgMHgxMTFGMDoKICAgICBjYXNlIDB4MTE4RjA6CisgICAgY2FzZSAweDExQzY5OgogICAgIGNhc2UgMHgxRDM2RjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcwLjA7CiAgICAgY2FzZSAweDEwMTFGOgpAQCAtNTQxNywxMSArNTU0OCwxNCBAQAogICAgIGNhc2UgMHgxMTFEODoKICAgICBjYXNlIDB4MTExRTg6CiAgICAgY2FzZSAweDExMkY4OgorICAgIGNhc2UgMHgxMTQ1ODoKICAgICBjYXNlIDB4MTE0RDg6CiAgICAgY2FzZSAweDExNjU4OgogICAgIGNhc2UgMHgxMTZDODoKICAgICBjYXNlIDB4MTE3Mzg6CiAgICAgY2FzZSAweDExOEU4OgorICAgIGNhc2UgMHgxMUM1ODoKKyAgICBjYXNlIDB4MTFDNjE6CiAgICAgY2FzZSAweDEyNDA2OgogICAgIGNhc2UgMHgxMjQwRDoKICAgICBjYXNlIDB4MTI0MTM6CkBAIC01NDM5LDYgKzU1NzMsNyBAQAogICAgIGNhc2UgMHgxRDdGNDoKICAgICBjYXNlIDB4MUQ3RkU6CiAgICAgY2FzZSAweDFFOENFOgorICAgIGNhc2UgMHgxRTk1ODoKICAgICBjYXNlIDB4MUYxMDk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4LjA7CiAgICAgY2FzZSAweDEwOUZEOgpAQCAtNTQ1MSw2ICs1NTg2LDcgQEAKICAgICBjYXNlIDB4MTEwNjI6CiAgICAgY2FzZSAweDExMUYxOgogICAgIGNhc2UgMHgxMThGMToKKyAgICBjYXNlIDB4MTFDNkE6CiAgICAgY2FzZSAweDFEMzcwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgODAuMDsKICAgICBjYXNlIDB4MTAxMjA6CkBAIC01NTM1LDExICs1NjcxLDE0IEBACiAgICAgY2FzZSAweDExMUQ5OgogICAgIGNhc2UgMHgxMTFFOToKICAgICBjYXNlIDB4MTEyRjk6CisgICAgY2FzZSAweDExNDU5OgogICAgIGNhc2UgMHgxMTREOToKICAgICBjYXNlIDB4MTE2NTk6CiAgICAgY2FzZSAweDExNkM5OgogICAgIGNhc2UgMHgxMTczOToKICAgICBjYXNlIDB4MTE4RTk6CisgICAgY2FzZSAweDExQzU5OgorICAgIGNhc2UgMHgxMUM2MjoKICAgICBjYXNlIDB4MTI0MDc6CiAgICAgY2FzZSAweDEyNDBFOgogICAgIGNhc2UgMHgxMjQxNDoKQEAgLTU1NTksNiArNTY5OCw3IEBACiAgICAgY2FzZSAweDFEN0Y1OgogICAgIGNhc2UgMHgxRDdGRjoKICAgICBjYXNlIDB4MUU4Q0Y6CisgICAgY2FzZSAweDFFOTU5OgogICAgIGNhc2UgMHgxRjEwQToKICAgICBjYXNlIDB4MkY4OTA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5LjA7CkBAIC01NTc0LDYgKzU3MTQsNyBAQAogICAgIGNhc2UgMHgxMTA2MzoKICAgICBjYXNlIDB4MTExRjI6CiAgICAgY2FzZSAweDExOEYyOgorICAgIGNhc2UgMHgxMUM2QjoKICAgICBjYXNlIDB4MUQzNzE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA5MC4wOwogICAgIGNhc2UgMHgxMDEyMToKZGlmZiAtLWdpdCBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKaW5kZXggN2U2ZjM2NC4uYWI2YjIzNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKKysrIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKQEAgLTI2NSw3ICsyNjUsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV93ZWFrcmVmX2luaXRfYXJncyhjaGFyICpmdW5jbmFtZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCitwYXJzZV93ZWFrcmVmX2luaXRfYXJncyhjb25zdCBjaGFyICpmdW5jbmFtZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm9icCwgUHlPYmplY3QgKipjYWxsYmFja3ApCiB7CiAgICAgcmV0dXJuIFB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIGZ1bmNuYW1lLCAxLCAyLCBvYnAsIGNhbGxiYWNrcCk7CkBAIC00NTMsNyArNDUzLDcgQEAKICAgICBtZXRob2QoUHlPYmplY3QgKnByb3h5KSB7IFwKICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNwZWNpYWwpOyBcCiAgICAgICAgICAgICBVTldSQVAocHJveHkpOyBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgIiIpOyBcCisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJveHksICZQeUlkXyMjc3BlY2lhbCwgTlVMTCk7IFwKICAgICAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1BDL19tc2kuYyBiL1BDL19tc2kuYwppbmRleCA5ZTdlMzZkLi43ODliMDRmIDEwMDY0NAotLS0gYS9QQy9fbXNpLmMKKysrIGIvUEMvX21zaS5jCkBAIC0xMDQ2LDEyICsxMDQ2LDEyIEBACiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURURJUkVDVCIsIChpbnQpTVNJREJPUEVOX0NSRUFURURJUkVDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEUiLCAoaW50KU1TSURCT1BFTl9DUkVBVEUpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fRElSRUNUIiwgKGludClNU0lEQk9QRU5fRElSRUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1JFQURPTkxZIiwgKGludClNU0lEQk9QRU5fUkVBRE9OTFkpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fVFJBTlNBQ1QiLCAoaW50KU1TSURCT1BFTl9UUkFOU0FDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9QQVRDSEZJTEUiLCAoaW50KU1TSURCT1BFTl9QQVRDSEZJTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFRElSRUNUIiwgKGxvbmcpTVNJREJPUEVOX0NSRUFURURJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEUiLCAobG9uZylNU0lEQk9QRU5fQ1JFQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0RJUkVDVCIsIChsb25nKU1TSURCT1BFTl9ESVJFQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUkVBRE9OTFkiLCAobG9uZylNU0lEQk9QRU5fUkVBRE9OTFkpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fVFJBTlNBQ1QiLCAobG9uZylNU0lEQk9QRU5fVFJBTlNBQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUEFUQ0hGSUxFIiwgKGxvbmcpTVNJREJPUEVOX1BBVENIRklMRSk7CiAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lDT0xJTkZPX05BTUVTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBNU0lDT0xJTkZPX1RZUEVTKTsKZGlmZiAtLWdpdCBhL1BDL190ZXN0Y29uc29sZS5jIGIvUEMvX3Rlc3Rjb25zb2xlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM5MzY3OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL190ZXN0Y29uc29sZS5jCkBAIC0wLDAgKzEsMTMxIEBACisKKy8qIFRlc3RpbmcgbW9kdWxlIGZvciBtdWx0aS1waGFzZSBpbml0aWFsaXphdGlvbiBvZiBleHRlbnNpb24gbW9kdWxlcyAoUEVQIDQ4OSkKKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZmRlZiBNU19XSU5ET1dTCisKKyNpbmNsdWRlICIuLlxtb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCIKKworI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyAvKiBUaGUgZnVsbCBkZWZpbml0aW9uIGlzIGluIGlvbW9kdWxlLiBXZSByZXByb2R1Y2UKKyBlbm91Z2ggaGVyZSB0byBnZXQgdGhlIGhhbmRsZSwgd2hpY2ggaXMgYWxsIHdlIHdhbnQuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEhBTkRMRSBoYW5kbGU7Cit9IHdpbmNvbnNvbGVpbzsKKworCitzdGF0aWMgaW50IGV4ZWNmdW5jKFB5T2JqZWN0ICptKQoreworICAgIHJldHVybiAwOworfQorCitQeU1vZHVsZURlZl9TbG90IHRlc3Rjb25zb2xlX3Nsb3RzW10gPSB7CisgICAge1B5X21vZF9leGVjLCBleGVjZnVuY30sCisgICAgezAsIE5VTEx9LAorfTsKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF90ZXN0Y29uc29sZQorCitfdGVzdGNvbnNvbGUud3JpdGVfaW5wdXQKKyAgICBmaWxlOiBvYmplY3QKKyAgICBzOiBQeUJ5dGVzT2JqZWN0CisKK1dyaXRlcyBVVEYtMTYtTEUgZW5jb2RlZCBieXRlcyB0byB0aGUgY29uc29sZSBhcyBpZiB0eXBlZCBieSBhIHVzZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNPYmplY3QgKnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDhmOTU2M2RiMzRhZWRiMyBpbnB1dD00Yzc3NGYyZDA1NzcwYmM2XSovCit7CisgICAgSU5QVVRfUkVDT1JEICpyZWMgPSBOVUxMOworICAgIAorICAgIGlmICghUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKGZpbGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCByYXcgY29uc29sZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY29uc3Qgd2NoYXJfdCAqcCA9IChjb25zdCB3Y2hhcl90ICopUHlCeXRlc19BU19TVFJJTkcocyk7CisgICAgRFdPUkQgc2l6ZSA9IChEV09SRClQeUJ5dGVzX0dFVF9TSVpFKHMpIC8gc2l6ZW9mKHdjaGFyX3QpOworCisgICAgcmVjID0gKElOUFVUX1JFQ09SRCopUHlNZW1fTWFsbG9jKHNpemVvZihJTlBVVF9SRUNPUkQpICogc2l6ZSk7CisgICAgaWYgKCFyZWMpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbWVtc2V0KHJlYywgMCwgc2l6ZW9mKElOUFVUX1JFQ09SRCkgKiBzaXplKTsKKyAgICAKKyAgICBJTlBVVF9SRUNPUkQgKnByZWMgPSByZWM7CisgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IHNpemU7ICsraSwgKytwLCArK3ByZWMpIHsKKyAgICAgICAgcHJlYy0+RXZlbnRUeXBlID0gS0VZX0VWRU5UOworICAgICAgICBwcmVjLT5FdmVudC5LZXlFdmVudC5iS2V5RG93biA9IFRSVUU7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LndSZXBlYXRDb3VudCA9IDEwOworICAgICAgICBwcmVjLT5FdmVudC5LZXlFdmVudC51Q2hhci5Vbmljb2RlQ2hhciA9ICpwOworICAgIH0KKworICAgIEhBTkRMRSBoSW5wdXQgPSAoKHdpbmNvbnNvbGVpbyopZmlsZSktPmhhbmRsZTsKKyAgICBEV09SRCB0b3RhbCA9IDA7CisgICAgd2hpbGUgKHRvdGFsIDwgc2l6ZSkgeworICAgICAgICBEV09SRCB3cm90ZTsKKyAgICAgICAgaWYgKCFXcml0ZUNvbnNvbGVJbnB1dFcoaElucHV0LCAmcmVjW3RvdGFsXSwgKHNpemUgLSB0b3RhbCksICZ3cm90ZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICB0b3RhbCArPSB3cm90ZTsKKyAgICB9CisKKyAgICBQeU1lbV9GcmVlKCh2b2lkKilyZWMpOworICAgIAorICAgIFB5X1JFVFVSTl9OT05FOworZXJyb3I6CisgICAgaWYgKHJlYykKKyAgICAgICAgUHlNZW1fRnJlZSgodm9pZCopcmVjKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX3Rlc3Rjb25zb2xlLnJlYWRfb3V0cHV0CisgICAgZmlsZTogb2JqZWN0CisKK1JlYWRzIGEgc3RyIGZyb20gdGhlIGNvbnNvbGUgYXMgd3JpdHRlbiB0byBzdGRvdXQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NzYzMTBkODFhNzNlNmQyIGlucHV0PWIzNTIxZjY0YjFiNTU4ZTNdKi8KK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2luY2x1ZGUgImNsaW5pY1xfdGVzdGNvbnNvbGUuYy5oIgorCitQeU1ldGhvZERlZiB0ZXN0Y29uc29sZV9tZXRob2RzW10gPSB7CisgICAgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorICAgIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBQeU1vZHVsZURlZiB0ZXN0Y29uc29sZV9kZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgICAgICAgICAgICAgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiX3Rlc3Rjb25zb2xlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbmFtZSAqLworICAgIFB5RG9jX1NUUigiVGVzdCBtb2R1bGUgZm9yIHRoZSBXaW5kb3dzIGNvbnNvbGUiKSwgLyogbV9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIHRlc3Rjb25zb2xlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9tZXRob2RzICovCisgICAgdGVzdGNvbnNvbGVfc2xvdHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2NsZWFyICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX3Rlc3Rjb25zb2xlKFB5T2JqZWN0ICpzcGVjKQoreworICAgIHJldHVybiBQeU1vZHVsZURlZl9Jbml0KCZ0ZXN0Y29uc29sZV9kZWYpOworfQorCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYwppbmRleCA2MGJlZTMwLi5mZDk3N2Y1IDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYworKysgYi9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYwpAQCAtNzE4LDcgKzcxOCw3IEBACiAgKiAxIGlmIHRoZSBQeXRob24tZGxsIGRvZXMgbm90IGV4cG9ydCB0aGUgZnVuY3Rpb25zIHdlIG5lZWQKICAqIDIgaWYgbm8gaW5zdGFsbC1zY3JpcHQgaXMgc3BlY2lmaWVkIGluIHBhdGhuYW1lCiAgKiAzIGlmIHRoZSBpbnN0YWxsLXNjcmlwdCBmaWxlIGNvdWxkIG5vdCBiZSBvcGVuZWQKLSAqIHRoZSByZXR1cm4gdmFsdWUgb2YgUHlSdW5fU2ltcGxlU3RyaW5nKCkgb3RoZXJ3aXNlLAorICogdGhlIHJldHVybiB2YWx1ZSBvZiBQeVJ1bl9TaW1wbGVTdHJpbmcoKSBvciBQeV9GaW5hbGl6ZUV4KCkgb3RoZXJ3aXNlLAogICogd2hpY2ggaXMgMCBpZiBldmVyeXRoaW5nIGlzIG9rLCAtMSBpZiBhbiBleGNlcHRpb24gaGFkIG9jY3VycmVkCiAgKiBpbiB0aGUgaW5zdGFsbC1zY3JpcHQuCiAgKi8KQEAgLTczMSw3ICs3MzEsNyBAQAogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0luaXRpYWxpemUsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVN5c19TZXRBcmd2LCAoaW50LCB3Y2hhcl90ICoqKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVJ1bl9TaW1wbGVTdHJpbmcsIChjaGFyICopKTsKLSAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9GaW5hbGl6ZSwgKHZvaWQpKTsKKyAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5X0ZpbmFsaXplRXgsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgUHlPYmplY3QgKiwgUHlfQnVpbGRWYWx1ZSwgKGNoYXIgKiwgLi4uKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgUHlPYmplY3QgKiwgUHlDRnVuY3Rpb25fTmV3LAogICAgICAgICAgICAgIChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqKSk7CkBAIC03MzksNyArNzM5LDcgQEAKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeUVycl9Gb3JtYXQsIChQeU9iamVjdCAqLCBjaGFyICopKTsKIAogICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlTeXNfU2V0QXJndgotICAgICAgICB8fCAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeV9GaW5hbGl6ZSkKKyAgICAgICAgfHwgIVB5UnVuX1NpbXBsZVN0cmluZyB8fCAhUHlfRmluYWxpemVFeCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBpZiAoIVB5X0J1aWxkVmFsdWUgfHwgIVB5QXJnX1BhcnNlVHVwbGUgfHwgIVB5RXJyX0Zvcm1hdCkKQEAgLTc4Niw3ICs3ODYsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQogCiAgICAgY2xvc2UoZmgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC04NDgsMTEgKzg1MCwxMSBAQAogICAgIGludCByYzsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9Jbml0aWFsaXplLCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X1NldFByb2dyYW1OYW1lLCAod2NoYXJfdCAqKSk7Ci0gICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfRmluYWxpemUsICh2b2lkKSk7CisgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeV9GaW5hbGl6ZUV4LCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlSdW5fU2ltcGxlU3RyaW5nLCAoY2hhciAqKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlFcnJfUHJpbnQsICh2b2lkKSk7CiAKLSAgICBpZiAoIVB5X0luaXRpYWxpemUgfHwgIVB5X1NldFByb2dyYW1OYW1lIHx8ICFQeV9GaW5hbGl6ZSB8fAorICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlfU2V0UHJvZ3JhbU5hbWUgfHwgIVB5X0ZpbmFsaXplRXggfHwKICAgICAgICAgIVB5UnVuX1NpbXBsZVN0cmluZyB8fCAhUHlFcnJfUHJpbnQpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtODYyLDcgKzg2NCw5IEBACiAgICAgcmMgPSBQeVJ1bl9TaW1wbGVTdHJpbmcoc2NyaXB0KTsKICAgICBpZiAocmMpCiAgICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByYyA9IC0xOworICAgIH0KICAgICByZXR1cm4gcmM7CiB9CiAKZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy9fdGVzdGNvbnNvbGUuYy5oIGIvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM4NjBjZgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2NsaW5pYy9fdGVzdGNvbnNvbGUuYy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfX2RvY19fLAorIndyaXRlX2lucHV0KCRtb2R1bGUsIC8sIGZpbGUsIHMpXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZXMgVVRGLTE2LUxFIGVuY29kZWQgYnl0ZXMgdG8gdGhlIGNvbnNvbGUgYXMgaWYgdHlwZWQgYnkgYSB1c2VyLiIpOworCisjZGVmaW5lIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGVfaW5wdXQiLCAoUHlDRnVuY3Rpb24pX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0LCBNRVRIX0ZBU1RDQUxMLCBfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc09iamVjdCAqcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPUzp3cml0ZV9pbnB1dCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmZpbGU7CisgICAgUHlCeXRlc09iamVjdCAqczsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJnMpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X2ltcGwobW9kdWxlLCBmaWxlLCBzKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X19kb2NfXywKKyJyZWFkX291dHB1dCgkbW9kdWxlLCAvLCBmaWxlKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZHMgYSBzdHIgZnJvbSB0aGUgY29uc29sZSBhcyB3cml0dGVuIHRvIHN0ZG91dC4iKTsKKworI2RlZmluZSBfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRfb3V0cHV0IiwgKFB5Q0Z1bmN0aW9uKV90ZXN0Y29uc29sZV9yZWFkX291dHB1dCwgTUVUSF9GQVNUQ0FMTCwgX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpyZWFkX291dHB1dCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmZpbGU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X2ltcGwobW9kdWxlLCBmaWxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWZuZGVmIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGKSAqLworCisjaWZuZGVmIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNhOGRjMGM0MjE4MDdjNDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmggYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAppbmRleCBlN2E3MmM0Li42OTM1Y2FkIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaAorKysgYi9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaApAQCAtNTEsOCArNTEsOSBAQAogICAgIGxvbmcgbmJ5dGVzOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWw6bG9ja2luZyIsCi0gICAgICAgICZmZCwgJm1vZGUsICZuYnl0ZXMpKQorICAgICAgICAmZmQsICZtb2RlLCAmbmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9sb2NraW5nX2ltcGwobW9kdWxlLCBmZCwgbW9kZSwgbmJ5dGVzKTsKIAogZXhpdDoKQEAgLTg1LDExICs4NiwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6c2V0bW9kZSIsCi0gICAgICAgICZmZCwgJmZsYWdzKSkKKyAgICAgICAgJmZkLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRtb2RlX2ltcGwobW9kdWxlLCBmZCwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMTAsMjIgKzExMywyNCBAQAogICAgIHsib3Blbl9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X29wZW5fb3NmaGFuZGxlLCBNRVRIX1ZBUkFSR1MsIG1zdmNydF9vcGVuX29zZmhhbmRsZV9fZG9jX199LAogCiBzdGF0aWMgbG9uZwotbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogbXN2Y3J0X29wZW5fb3NmaGFuZGxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGZsYWdzOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIl9QeV9QQVJTRV9JTlRQVFIiaTpvcGVuX29zZmhhbmRsZSIsCi0gICAgICAgICZoYW5kbGUsICZmbGFncykpCisgICAgICAgICZoYW5kbGUsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTQzLDcgKzE0OCw3IEBACiAjZGVmaW5lIE1TVkNSVF9HRVRfT1NGSEFORExFX01FVEhPRERFRiAgICBcCiAgICAgeyJnZXRfb3NmaGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9nZXRfb3NmaGFuZGxlLCBNRVRIX08sIG1zdmNydF9nZXRfb3NmaGFuZGxlX19kb2NfX30sCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTEsMTMgKzE1NiwxNSBAQAogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKLSAgICBQeV9pbnRwdHJfdCBfcmV0dXJuX3ZhbHVlOworICAgIGludHB0cl90IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9vc2ZoYW5kbGUiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVm9pZFB0cigodm9pZCAqKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTgzLDggKzE5MCw5IEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9rYmhpdF9pbXBsKG1vZHVsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMxMSw4ICszMTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNoYXIgY2hhcl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6cHV0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0Y2hfaW1wbChtb2R1bGUsIGNoYXJfdmFsdWUpOwogCiBleGl0OgpAQCAtMzM3LDggKzM0Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHVuaWNvZGVfY2hhcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6cHV0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfcHV0d2NoX2ltcGwobW9kdWxlLCB1bmljb2RlX2NoYXIpOwogCiBleGl0OgpAQCAtMzY3LDggKzM3Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY2hhciBjaGFyX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnVuZ2V0Y2giLCAmY2hhcl92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTMsOCArNDA0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdW5pY29kZV9jaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnVuZ2V0d2NoIiwgJnVuaWNvZGVfY2hhcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfdW5nZXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CiAKIGV4aXQ6CkBAIC00MjYsMTEgKzQzOCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0RmlsZSIsCi0gICAgICAgICZ0eXBlLCAmZmlsZSkpCisgICAgICAgICZ0eXBlLCAmZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydEZpbGVfaW1wbChtb2R1bGUsIHR5cGUsIGZpbGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NjQsMTEgKzQ3OCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0TW9kZSIsCi0gICAgICAgICZ0eXBlLCAmbW9kZSkpCisgICAgICAgICZ0eXBlLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X0NydFNldFJlcG9ydE1vZGVfaW1wbChtb2R1bGUsIHR5cGUsIG1vZGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MDAsMTEgKzUxNiwxMyBAQAogICAgIGludCBtb2RlOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0X2Vycm9yX21vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3NldF9lcnJvcl9tb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTMxLDggKzU0OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdW5zaWduZWQgaW50IG1vZGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6U2V0RXJyb3JNb2RlIiwgJm1vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpTZXRFcnJvck1vZGUiLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfU2V0RXJyb3JNb2RlX2ltcGwobW9kdWxlLCBtb2RlKTsKIAogZXhpdDoKQEAgLTU1MCw0ICs1NjksNCBAQAogI2lmbmRlZiBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYTc5NGM1MjBkNmFlODg3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTA0ZTJiNTBlZWY4YjYzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5yZWcuYy5oIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKaW5kZXggZjZhZTJjMC4uYzdkNWI5ZSAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnJlZy5jLmgKKysrIGIvUEMvY2xpbmljL3dpbnJlZy5jLmgKQEAgLTc3LDI0ICs3NywyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgV0lOUkVHX0hLRVlUWVBFX19fRVhJVF9fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbil3aW5yZWdfSEtFWVR5cGVfX19leGl0X18sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19ffSwKKyAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpleGNfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNfdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfSEtFWVR5cGVfX19leGl0X18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImV4Y190eXBlIiwgImV4Y192YWx1ZSIsICJ0cmFjZWJhY2siLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPT086X19leGl0X18iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpleGNfdHlwZTsKICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlOwogICAgIFB5T2JqZWN0ICp0cmFjZWJhY2s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT086X19leGl0X18iLCBfa2V5d29yZHMsCi0gICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZleGNfdHlwZSwgJmV4Y192YWx1ZSwgJnRyYWNlYmFjaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19faW1wbChzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOwogCiBleGl0OgpAQCAtMTQ3LDExICsxNDksMTMgQEAKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpPJjpDb25uZWN0UmVnaXN0cnkiLAotICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICAgICAgJmNvbXB1dGVyX25hbWUsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Nvbm5lY3RSZWdpc3RyeV9pbXBsKG1vZHVsZSwgY29tcHV0ZXJfbmFtZSwga2V5KTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xOTIsMTEgKzE5NiwxMyBAQAogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkNyZWF0ZUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIyOSwyOSArMjM1LDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0NSRUFURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJDcmVhdGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ3JlYXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0NyZWF0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBIS0VZCiB3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfQ3JlYXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpDcmVhdGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV1JJVEU7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yOTAsOCArMjk5LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6RGVsZXRlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKIAogZXhpdDoKQEAgLTMyNCwyNSArMzM0LDI3IEBACiAiT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgTm90SW1wbGVtZW50ZWRFcnJvciBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX0RFTEVURUtFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJEZWxldGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKKyAgICB7IkRlbGV0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX0RlbGV0ZUtleUV4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJFR1NBTSBhY2Nlc3MsIGludCByZXNlcnZlZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfRGVsZXRlS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgImFjY2VzcyIsICJyZXNlcnZlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dPVzY0XzY0S0VZOwogICAgIGludCByZXNlcnZlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnV8aWk6RGVsZXRlS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZhY2Nlc3MsICZyZXNlcnZlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgYWNjZXNzLCByZXNlcnZlZCk7CiAKIGV4aXQ6CkBAIC0zNzQsOCArMzg2LDkgQEAKICAgICBQeV9VTklDT0RFICp2YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOkRlbGV0ZVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDExLDggKzQyNCw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VudW1LZXlfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDU3LDggKzQ3MSw5IEBACiAgICAgaW50IGluZGV4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6RW51bVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKIAogZXhpdDoKQEAgLTQ4Myw4ICs0OTgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X1VOSUNPREUgKnN0cmluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInU6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzX2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgpAQCAtNTIyLDggKzUzOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkZsdXNoS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19GbHVzaEtleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTU3NCw4ICs1OTEsOSBAQAogICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1dTpMb2FkS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZmaWxlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0xvYWRLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgZmlsZV9uYW1lKTsKIAogZXhpdDoKQEAgLTYwMiwyOSArNjIwLDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX09QRU5LRVlfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAorICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX09wZW5LZXlfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCiAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfT3BlbktleShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleSIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02NTEsMjkgKzY3MiwzMiBAQAogIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiAjZGVmaW5lIFdJTlJFR19PUEVOS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7Ik9wZW5LZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX09wZW5LZXlFeF9fZG9jX199LAorICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19PcGVuS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19PcGVuS2V5RXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX09wZW5LZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19PcGVuS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpPcGVuS2V5RXgiLCBfa2V5d29yZHMsIDB9OwogICAgIEhLRVkga2V5OwogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfT3BlbktleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTcwNyw4ICs3MzEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlJbmZvS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeUluZm9LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC03NDksOCArNzc0LDkgQEAKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwogCiBleGl0OgpAQCAtNzg3LDggKzgxMyw5IEBACiAgICAgUHlfVU5JQ09ERSAqbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVZhbHVlRXhfaW1wbChtb2R1bGUsIGtleSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC04MzAsOCArODU3LDkgQEAKICAgICBQeV9VTklDT0RFICpmaWxlX25hbWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdTpTYXZlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmZmlsZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TYXZlS2V5X2ltcGwobW9kdWxlLCBrZXksIGZpbGVfbmFtZSk7CiAKIGV4aXQ6CkBAIC04ODMsOCArOTExLDkgQEAKICAgICBQeV9zc2l6ZV9jbGVhbl90IHZhbHVlX2xlbmd0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaa3UjOlNldFZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZ0eXBlLCAmdmFsdWUsICZ2YWx1ZV9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NldFZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHR5cGUsIHZhbHVlLCB2YWx1ZV9sZW5ndGgpOwogCiBleGl0OgpAQCAtOTA3LDcgKzkzNiw3IEBACiAiICAgIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgdGhlIGRhdGEsIG9uZSBvZjpcbiIKICIgICAgUkVHX0JJTkFSWSAtLSBCaW5hcnkgZGF0YSBpbiBhbnkgZm9ybS5cbiIKICIgICAgUkVHX0RXT1JEIC0tIEEgMzItYml0IG51bWJlci5cbiIKLSIgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LlxuIgorIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX0RXT1JEXG4iCiAiICAgIFJFR19EV09SRF9CSUdfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBiaWctZW5kaWFuIGZvcm1hdC5cbiIKICIgICAgUkVHX0VYUEFORF9TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdGhhdCBjb250YWlucyB1bmV4cGFuZGVkXG4iCiAiICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlcyB0byBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKGZvciBleGFtcGxlLFxuIgpAQCAtOTE3LDYgKzk0Niw4IEBACiAiICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzXG4iCiAiICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4iCiAiICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS5cbiIKKyIgICAgUkVHX1FXT1JEIC0tIEEgNjQtYml0IG51bWJlci5cbiIKKyIgICAgUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19RV09SRC5cbiIKICIgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuXG4iCiAiICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuXG4iCiAiICB2YWx1ZVxuIgpAQCAtOTUwLDggKzk4MSw5IEBACiAgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlpPa086U2V0VmFsdWVFeCIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlX25hbWUsICZyZXNlcnZlZCwgJnR5cGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZV9uYW1lLCByZXNlcnZlZCwgdHlwZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtOTg1LDggKzEwMTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpEaXNhYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGlzYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDE4LDggKzEwNTEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpFbmFibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VuYWJsZVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC0xMDQ5LDExICsxMDgzLDEyIEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5UmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdiODk0MGEyM2Y2MDVkZGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE2ZGQwNmJlNmUxNGI4NmUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaCBiL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKaW5kZXggYjAwYjQ0Mi4uNTJkMjViMiAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL3dpbnNvdW5kLmMuaAorKysgYi9QQy9jbGluaWMvd2luc291bmQuYy5oCkBAIC0zLDcgKzMsNyBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBQeURvY19TVFJWQVIod2luc291bmRfUGxheVNvdW5kX19kb2NfXywKLSJQbGF5U291bmQoJG1vZHVsZSwgc291bmQsIGZsYWdzLCAvKVxuIgorIlBsYXlTb3VuZCgkbW9kdWxlLCAvLCBzb3VuZCwgZmxhZ3MpXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIFBsYXlTb3VuZCBBUEkuXG4iCkBAIC0xNCwyMSArMTQsMjQgQEAKICIgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uIik7CiAKICNkZWZpbmUgV0lOU09VTkRfUExBWVNPVU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX199LAorICAgIHsiUGxheVNvdW5kIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX1BsYXlTb3VuZCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKTsKK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX1BsYXlTb3VuZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKnNvdW5kOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNvdW5kIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT2k6UGxheVNvdW5kIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqc291bmQ7CiAgICAgaW50IGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaaTpQbGF5U291bmQiLAotICAgICAgICAmc291bmQsICZmbGFncykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzb3VuZCwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKG1vZHVsZSwgc291bmQsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTM2LDcgKzM5LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX0JlZXBfX2RvY19fLAotIkJlZXAoJG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbiwgLylcbiIKKyJCZWVwKCRtb2R1bGUsIC8sIGZyZXF1ZW5jeSwgZHVyYXRpb24pXG4iCiAiLS1cbiIKICJcbiIKICJBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLlxuIgpAQCAtNDgsMjEgKzUxLDI0IEBACiAiICAgIEhvdyBsb25nIHRoZSBzb3VuZCBzaG91bGQgcGxheSwgaW4gbWlsbGlzZWNvbmRzLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX0JFRVBfTUVUSE9EREVGICAgIFwKLSAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9CZWVwX19kb2NfX30sCisgICAgeyJCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX0JlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX0JlZXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnNvdW5kX0JlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZnJlcXVlbmN5LCBpbnQgZHVyYXRpb24pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX0JlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmcmVxdWVuY3kiLCAiZHVyYXRpb24iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaTpCZWVwIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZnJlcXVlbmN5OwogICAgIGludCBkdXJhdGlvbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6QmVlcCIsCi0gICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmcmVxdWVuY3ksICZkdXJhdGlvbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9CZWVwX2ltcGwobW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uKTsKIAogZXhpdDoKQEAgLTcwLDcgKzc2LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfXywKLSJNZXNzYWdlQmVlcCgkbW9kdWxlLCB4PU1CX09LLCAvKVxuIgorIk1lc3NhZ2VCZWVwKCRtb2R1bGUsIC8sIHR5cGU9TUJfT0spXG4iCiAiLS1cbiIKICJcbiIKICJDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAoeCkuXG4iCkBAIC03OCwyMyArODQsMjYgQEAKICJ4IGRlZmF1bHRzIHRvIE1CX09LLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX01FU1NBR0VCRUVQX01FVEhPRERFRiAgICBcCi0gICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX199LAorICAgIHsiTWVzc2FnZUJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfTWVzc2FnZUJlZXAsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB4KTsKK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHR5cGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfTWVzc2FnZUJlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9NZXNzYWdlQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIGludCB4ID0gTUJfT0s7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHlwZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxpOk1lc3NhZ2VCZWVwIiwgX2tleXdvcmRzLCAwfTsKKyAgICBpbnQgdHlwZSA9IE1CX09LOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpNZXNzYWdlQmVlcCIsCi0gICAgICAgICZ4KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnR5cGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKG1vZHVsZSwgeCk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB0eXBlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWMwYjI5MGRhZjIzMzBkYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmZTE2YjJiOGI0OTBjYjEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY29uZmlnLmMgYi9QQy9jb25maWcuYwppbmRleCA2NmJmNDU4Li40M2Q5ZTIwIDEwMDY0NAotLS0gYS9QQy9jb25maWcuYworKysgYi9QQy9jb25maWcuYwpAQCAtMjMsNiArMjMsOCBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTEodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMjU2KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTUxMih2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEzKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2JsYWtlMih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X3RpbWUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fdGhyZWFkKHZvaWQpOwogI2lmZGVmIFdJTjMyCkBAIC05Niw2ICs5OCw4IEBACiAgICAgeyJfc2hhMSIsIFB5SW5pdF9fc2hhMX0sCiAgICAgeyJfc2hhMjU2IiwgUHlJbml0X19zaGEyNTZ9LAogICAgIHsiX3NoYTUxMiIsIFB5SW5pdF9fc2hhNTEyfSwKKyAgICB7Il9zaGEzIiwgUHlJbml0X19zaGEzfSwKKyAgICB7Il9ibGFrZTIiLCBQeUluaXRfX2JsYWtlMn0sCiAgICAgeyJ0aW1lIiwgUHlJbml0X3RpbWV9LAogI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgeyJfdGhyZWFkIiwgUHlJbml0X190aHJlYWR9LApkaWZmIC0tZ2l0IGEvUEMvZ2V0cGF0aHAuYyBiL1BDL2dldHBhdGhwLmMKaW5kZXggYzdkZGYxZS4uMzFmOTczZSAxMDA2NDQKLS0tIGEvUEMvZ2V0cGF0aHAuYworKysgYi9QQy9nZXRwYXRocC5jCkBAIC02LDcgKzYsOSBAQAogICAgUEFUSCBSVUxFUyBGT1IgV0lORE9XUzoKICAgIFRoaXMgZGVzY3JpYmVzIGhvdyBzeXMucGF0aCBpcyBmb3JtZWQgb24gV2luZG93cy4gIEl0IGRlc2NyaWJlcyB0aGUKICAgIGZ1bmN0aW9uYWxpdHksIG5vdCB0aGUgaW1wbGVtZW50YXRpb24gKGllLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlc2UKLSAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkKKyAgIGFyZSBhY3R1YWxseSBmZXRjaGVkIGlzIGRpZmZlcmVudCkuIFRoZSBwcmVzZW5jZSBvZiBhIHB5dGhvbi5fcHRoIG9yCisgICBweXRob25YWS5fcHRoIGZpbGUgYWxvbmdzaWRlIHRoZSBwcm9ncmFtIG92ZXJyaWRlcyB0aGVzZSBydWxlcyAtIHNlZQorICAgYmVsb3cuCiAKICAgICogUHl0aG9uIGFsd2F5cyBhZGRzIGFuIGVtcHR5IGVudHJ5IGF0IHRoZSBzdGFydCwgd2hpY2ggY29ycmVzcG9uZHMKICAgICAgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgpAQCAtMjMsOSArMjUsOSBAQAogCiAgICAqIFdlIGF0dGVtcHQgdG8gbG9jYXRlIHRoZSAiUHl0aG9uIEhvbWUiIC0gaWYgdGhlIFBZVEhPTkhPTUUgZW52IHZhcgogICAgICBpcyBzZXQsIHdlIGJlbGlldmUgaXQuICBPdGhlcndpc2UsIHdlIHVzZSB0aGUgcGF0aCBvZiBvdXIgaG9zdCAuRVhFJ3MKLSAgICAgdG8gdHJ5IGFuZCBsb2NhdGUgb3VyICJsYW5kbWFyayIgKGxpYlxcb3MucHkpIGFuZCBkZWR1Y2Ugb3VyIGhvbWUuCisgICAgIHRvIHRyeSBhbmQgbG9jYXRlIG9uZSBvZiBvdXIgImxhbmRtYXJrcyIgYW5kIGRlZHVjZSBvdXIgaG9tZS4KICAgICAgLSBJZiB3ZSBETyBoYXZlIGEgUHl0aG9uIEhvbWU6IFRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgKExpYiwKLSAgICAgICBwbGF0LXdpbiwgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCisgICAgICAgRExMcywgZXRjKSBhcmUgYmFzZWQgb24gdGhlIFB5dGhvbiBIb21lCiAgICAgIC0gSWYgd2UgRE8gTk9UIGhhdmUgYSBQeXRob24gSG9tZSwgdGhlIGNvcmUgUHl0aG9uIFBhdGggaXMKICAgICAgICBsb2FkZWQgZnJvbSB0aGUgcmVnaXN0cnkuICBUaGlzIGlzIHRoZSBtYWluIFB5dGhvblBhdGgga2V5LAogICAgICAgIGFuZCBib3RoIEhLTE0gYW5kIEhLQ1UgYXJlIGNvbWJpbmVkIHRvIGZvcm0gdGhlIHBhdGgpCkBAIC0zMyw3ICszNSwyMyBAQAogICAgKiBJZmYgLSB3ZSBjYW4gbm90IGxvY2F0ZSB0aGUgUHl0aG9uIEhvbWUsIGhhdmUgbm90IGhhZCBhIFBZVEhPTlBBVEgKICAgICAgc3BlY2lmaWVkLCBhbmQgY2FuJ3QgbG9jYXRlIGFueSBSZWdpc3RyeSBlbnRyaWVzIChpZSwgd2UgaGF2ZSBfbm90aGluZ18KICAgICAgd2UgY2FuIGFzc3VtZSBpcyBhIGdvb2QgcGF0aCksIGEgZGVmYXVsdCBwYXRoIHdpdGggcmVsYXRpdmUgZW50cmllcyBpcwotICAgICB1c2VkIChlZy4gLlxMaWI7LlxwbGF0LXdpbiwgZXRjKQorICAgICB1c2VkIChlZy4gLlxMaWI7LlxETExzLCBldGMpCisKKworICAgSWYgYSAnLl9wdGgnIGZpbGUgZXhpc3RzIGFkamFjZW50IHRvIHRoZSBleGVjdXRhYmxlIHdpdGggdGhlIHNhbWUgYmFzZSBuYW1lCisgICAoZS5nLiBweXRob24uX3B0aCBhZGphY2VudCB0byBweXRob24uZXhlKSBvciBhZGphY2VudCB0byB0aGUgc2hhcmVkIGxpYnJhcnkKKyAgIChlLmcuIHB5dGhvbjM2Ll9wdGggYWRqYWNlbnQgdG8gcHl0aG9uMzYuZGxsKSwgaXQgaXMgdXNlZCBpbiBwcmVmZXJlbmNlIHRvCisgICB0aGUgYWJvdmUgcHJvY2Vzcy4gVGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHRoZQorICAgZXhlY3V0YWJsZS4gVGhlIHBhdGggZmlsZSBtdXN0IGNvbnRhaW4gYSBsaXN0IG9mIHBhdGhzIHRvIGFkZCB0byBzeXMucGF0aCwKKyAgIG9uZSBwZXIgbGluZS4gRWFjaCBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgIEJsYW5rIGxpbmVzIGFuZCBjb21tZW50cyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIHBlcm1pdHRlZC4KKworICAgSW4gdGhlIHByZXNlbmNlIG9mIHRoaXMgLl9wdGggZmlsZSwgbm8gb3RoZXIgcGF0aHMgYXJlIGFkZGVkIHRvIHRoZSBzZWFyY2gKKyAgIHBhdGgsIHRoZSByZWdpc3RyeSBmaW5kZXIgaXMgbm90IGVuYWJsZWQsIHNpdGUucHkgaXMgbm90IGltcG9ydGVkIGFuZAorICAgaXNvbGF0ZWQgbW9kZSBpcyBlbmFibGVkLiBUaGUgc2l0ZSBwYWNrYWdlIGNhbiBiZSBlbmFibGVkIGJ5IGluY2x1ZGluZyBhCisgICBsaW5lIHJlYWRpbmcgImltcG9ydCBzaXRlIjsgbm8gb3RoZXIgaW1wb3J0cyBhcmUgcmVjb2duaXplZC4gQW55IGludmFsaWQKKyAgIGVudHJ5IChvdGhlciB0aGFuIGRpcmVjdG9yaWVzIHRoYXQgZG8gbm90IGV4aXN0KSB3aWxsIHJlc3VsdCBpbiBpbW1lZGlhdGUKKyAgIHRlcm1pbmF0aW9uIG9mIHRoZSBwcm9ncmFtLgogCiAKICAgVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CkBAIC01Miw3ICs3MCwxMSBAQAogICAgIHNvbWUgZGVmYXVsdCwgYnV0IHJlbGF0aXZlLCBwYXRocy4KIAogICAqIEFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiBjYW4gdXNlIFB5X1NldFBhdGgoKSB0byBvdmVycmlkZSBhbGwgb2YKLSAgICB0aGVzZSBhdXRob21hdGljIHBhdGggY29tcHV0YXRpb25zLgorICAgIHRoZXNlIGF1dG9tYXRpYyBwYXRoIGNvbXB1dGF0aW9ucy4KKworICAqIEFuIGluc3RhbGwgb2YgUHl0aG9uIGNhbiBmdWxseSBzcGVjaWZ5IHRoZSBjb250ZW50cyBvZiBzeXMucGF0aCB1c2luZworICAgIGVpdGhlciBhICdFWEVOQU1FLl9wdGgnIG9yICdETExOQU1FLl9wdGgnIGZpbGUsIG9wdGlvbmFsbHkgaW5jbHVkaW5nCisgICAgImltcG9ydCBzaXRlIiB0byBlbmFibGUgdGhlIHNpdGUgbW9kdWxlLgogCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTYxLDEwICs4MywxMyBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogI2luY2x1ZGUgPHdjaGFyLmg+CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSA8d2luZG93cy5oPgorI2lmbmRlZiBNU19XSU5ET1dTCisjZXJyb3IgZ2V0cGF0aHAuYyBzaG91bGQgb25seSBiZSBidWlsdCBvbiBXaW5kb3dzCiAjZW5kaWYKIAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxTaGx3YXBpLmg+CisKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYgLyogSEFWRV9TWVNfVFlQRVNfSCAqLwpAQCAtMTIyLDYgKzE0NywzMyBAQAogICAgIGRpcltpXSA9ICdcMCc7CiB9CiAKK3N0YXRpYyBpbnQKK2NoYW5nZV9leHQod2NoYXJfdCAqZGVzdCwgY29uc3Qgd2NoYXJfdCAqc3JjLCBjb25zdCB3Y2hhcl90ICpleHQpCit7CisgICAgc2l6ZV90IHNyY19sZW4gPSB3Y3NubGVuX3Moc3JjLCBNQVhQQVRITEVOKzEpOworICAgIHNpemVfdCBpID0gc3JjX2xlbjsKKyAgICBpZiAoaSA+PSBNQVhQQVRITEVOKzEpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgcmVkdWNlKCkiKTsKKworICAgIHdoaWxlIChpID4gMCAmJiBzcmNbaV0gIT0gJy4nICYmICFpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgLS1pOworCisgICAgaWYgKGkgPT0gMCkgeworICAgICAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChpc19zZXAoc3JjW2ldKSkKKyAgICAgICAgaSA9IHNyY19sZW47CisKKyAgICBpZiAod2NzbmNweV9zKGRlc3QsIE1BWFBBVEhMRU4rMSwgc3JjLCBpKSB8fAorICAgICAgICB3Y3NjYXRfcyhkZXN0LCBNQVhQQVRITEVOKzEsIGV4dCkpIHsKKyAgICAgICAgZGVzdFswXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAogc3RhdGljIGludAogZXhpc3RzKHdjaGFyX3QgKmZpbGVuYW1lKQpAQCAtMTM1LDcgKzE4Nyw3IEBACiBzdGF0aWMgaW50CiBpc21vZHVsZSh3Y2hhcl90ICpmaWxlbmFtZSwgaW50IHVwZGF0ZV9maWxlbmFtZSkgLyogSXMgbW9kdWxlIC0tIGNoZWNrIGZvciAucHljLy5weW8gdG9vICovCiB7Ci0gICAgaW50IG47CisgICAgc2l6ZV90IG47CiAKICAgICBpZiAoZXhpc3RzKGZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNjMsMjQgKzIxNSwzMCBAQAogICAgdGhhbiBNQVhQQVRITEVOIGNoYXJhY3RlcnMgYXQgZXhpdC4gIElmIHN0dWZmIGlzIHRvbyBsb25nLCBvbmx5IGFzIG11Y2ggb2YKICAgIHN0dWZmIGFzIGZpdHMgd2lsbCBiZSBhcHBlbmRlZC4KICovCisKK3N0YXRpYyBpbnQgX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPSAwOwordHlwZWRlZiBIUkVTVUxUKF9fc3RkY2FsbCAqUFBhdGhDY2hDb21iaW5lRXgpKFBXU1RSIHBzelBhdGhPdXQsIHNpemVfdCBjY2hQYXRoT3V0LCBQQ1dTVFIgcHN6UGF0aEluLCBQQ1dTVFIgcHN6TW9yZSwgdW5zaWduZWQgbG9uZyBkd0ZsYWdzKTsKK3N0YXRpYyBQUGF0aENjaENvbWJpbmVFeCBfUGF0aENjaENvbWJpbmVFeDsKKwogc3RhdGljIHZvaWQKIGpvaW4od2NoYXJfdCAqYnVmZmVyLCBjb25zdCB3Y2hhcl90ICpzdHVmZikKIHsKLSAgICBzaXplX3QgbjsKLSAgICBpZiAoaXNfc2VwKHN0dWZmWzBdKSB8fAotICAgICAgICAod2Nzbmxlbl9zKHN0dWZmLCA0KSA+PSAzICYmIHN0dWZmWzFdID09ICc6JyAmJiBpc19zZXAoc3R1ZmZbMl0pKSkgewotICAgICAgICBpZiAod2NzY3B5X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9PSAwKSB7CisgICAgICAgIEhNT0RVTEUgcGF0aGFwaSA9IExvYWRMaWJyYXJ5VyhMImFwaS1tcy13aW4tY29yZS1wYXRoLWwxLTEtMC5kbGwiKTsKKyAgICAgICAgaWYgKHBhdGhhcGkpCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IChQUGF0aENjaENvbWJpbmVFeClHZXRQcm9jQWRkcmVzcyhwYXRoYXBpLCAiUGF0aENjaENvbWJpbmVFeCIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBfUGF0aENjaENvbWJpbmVFeCA9IE5VTEw7CisgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID0gMTsKICAgICB9CiAKLSAgICBuID0gd2Nzbmxlbl9zKGJ1ZmZlciwgTUFYUEFUSExFTisxKTsKLSAgICBpZiAobiA+IDAgJiYgIWlzX3NlcChidWZmZXJbbiAtIDFdKSAmJiBuIDwgTUFYUEFUSExFTikgewotICAgICAgICBidWZmZXJbbl0gPSBTRVA7Ci0gICAgICAgIGJ1ZmZlcltuICsgMV0gPSAnXDAnOworICAgIGlmIChfUGF0aENjaENvbWJpbmVFeCkgeworICAgICAgICBpZiAoRkFJTEVEKF9QYXRoQ2NoQ29tYmluZUV4KGJ1ZmZlciwgTUFYUEFUSExFTisxLCBidWZmZXIsIHN0dWZmLCAwKSkpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghUGF0aENvbWJpbmVXKGJ1ZmZlciwgYnVmZmVyLCBzdHVmZikpCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogICAgIH0KLSAgICBpZiAod2NzY2F0X3MoYnVmZmVyLCBNQVhQQVRITEVOKzEsIHN0dWZmKSAhPSAwKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwogfQogCiAvKiBnb3RsYW5kbWFyayBvbmx5IGNhbGxlZCBieSBzZWFyY2hfZm9yX3ByZWZpeCwgd2hpY2ggZW5zdXJlcwpAQCAtMTg4LDcgKzI0Niw3IEBACiAgICAnbGFuZG1hcmsnIGNhbiBub3Qgb3ZlcmZsb3cgcHJlZml4IGlmIHRvbyBsb25nLgogKi8KIHN0YXRpYyBpbnQKLWdvdGxhbmRtYXJrKHdjaGFyX3QgKmxhbmRtYXJrKQorZ290bGFuZG1hcmsoY29uc3Qgd2NoYXJfdCAqbGFuZG1hcmspCiB7CiAgICAgaW50IG9rOwogICAgIFB5X3NzaXplX3QgbiA9IHdjc25sZW5fcyhwcmVmaXgsIE1BWFBBVEhMRU4pOwpAQCAtMjAyLDcgKzI2MCw3IEBACiAvKiBhc3N1bWVzIGFyZ3YwX3BhdGggaXMgTUFYUEFUSExFTisxIGJ5dGVzIGxvbmcsIGFscmVhZHkgXDAgdGVybSdkLgogICAgYXNzdW1wdGlvbiBwcm92aWRlZCBieSBvbmx5IGNhbGxlciwgY2FsY3VsYXRlX3BhdGgoKSAqLwogc3RhdGljIGludAotc2VhcmNoX2Zvcl9wcmVmaXgod2NoYXJfdCAqYXJndjBfcGF0aCwgd2NoYXJfdCAqbGFuZG1hcmspCitzZWFyY2hfZm9yX3ByZWZpeCh3Y2hhcl90ICphcmd2MF9wYXRoLCBjb25zdCB3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICAvKiBTZWFyY2ggZnJvbSBhcmd2MF9wYXRoLCB1bnRpbCBsYW5kbWFyayBpcyBmb3VuZCAqLwogICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTiArIDEsIGFyZ3YwX3BhdGgpOwpAQCAtMjE0LDcgKzI3Miw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAogCiAvKiBhIHN0cmluZyBsb2FkZWQgZnJvbSB0aGUgRExMIGF0IHN0YXJ0dXAuKi8KQEAgLTM2OSw3ICs0MjYsNiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAjZW5kaWYgLyogUHlfRU5BQkxFX1NIQVJFRCAqLwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogc3RhdGljIHZvaWQKIGdldF9wcm9ncGF0aCh2b2lkKQpAQCAtMzc4LDcgKzQzNCw2IEBACiAgICAgd2NoYXJfdCAqcGF0aCA9IF93Z2V0ZW52KEwiUEFUSCIpOwogICAgIHdjaGFyX3QgKnByb2cgPSBQeV9HZXRQcm9ncmFtTmFtZSgpOwogCi0jaWZkZWYgTVNfV0lORE9XUwogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKICAgICBleHRlcm4gSEFORExFIFB5V2luX0RMTGhNb2R1bGU7CiAgICAgLyogc3RhdGljIGluaXQgb2YgcHJvZ3BhdGggZW5zdXJlcyBmaW5hbCBjaGFyIHJlbWFpbnMgXDAgKi8KQEAgLTM5MCw3ICs0NDUsNiBAQAogI2VuZGlmCiAgICAgaWYgKEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCBwcm9ncGF0aCwgTUFYUEFUSExFTikpCiAgICAgICAgIHJldHVybjsKLSNlbmRpZgogICAgIGlmIChwcm9nID09IE5VTEwgfHwgKnByb2cgPT0gJ1wwJykKICAgICAgICAgcHJvZyA9IEwicHl0aG9uIjsKIApAQCAtNDgzLDYgKzUzNyw4MSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbnQKK3JlYWRfcHRoX2ZpbGUoY29uc3Qgd2NoYXJfdCAqcGF0aCwgd2NoYXJfdCAqcHJlZml4LCBpbnQgKmlzb2xhdGVkLCBpbnQgKm5vc2l0ZSkKK3sKKyAgICBGSUxFICpzcF9maWxlID0gX1B5X3dmb3BlbihwYXRoLCBMInIiKTsKKyAgICBpZiAoc3BfZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4rMSwgcGF0aCk7CisgICAgcmVkdWNlKHByZWZpeCk7CisgICAgKmlzb2xhdGVkID0gMTsKKyAgICAqbm9zaXRlID0gMTsKKworICAgIHNpemVfdCBidWZzaXogPSBNQVhQQVRITEVOOworICAgIHNpemVfdCBwcmVmaXhsZW4gPSB3Y3NsZW4ocHJlZml4KTsKKworICAgIHdjaGFyX3QgKmJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoYnVmc2l6ICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBidWZbMF0gPSAnXDAnOworCisgICAgd2hpbGUgKCFmZW9mKHNwX2ZpbGUpKSB7CisgICAgICAgIGNoYXIgbGluZVtNQVhQQVRITEVOICsgMV07CisgICAgICAgIGNoYXIgKnAgPSBmZ2V0cyhsaW5lLCBNQVhQQVRITEVOICsgMSwgc3BfZmlsZSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoKnAgPT0gJ1wwJyB8fCAqcCA9PSAnIycpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgd2hpbGUgKCorK3ApIHsKKyAgICAgICAgICAgIGlmICgqcCA9PSAnXHInIHx8ICpwID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAqcCA9ICdcMCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RyY21wKGxpbmUsICJpbXBvcnQgc2l0ZSIpID09IDApIHsKKyAgICAgICAgICAgICpub3NpdGUgPSAwOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0gZWxzZSBpZiAoc3RybmNtcChsaW5lLCAiaW1wb3J0ICIsIDcpID09IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIm9ubHkgJ2ltcG9ydCBzaXRlJyBpcyBzdXBwb3J0ZWQgaW4gLl9wdGggZmlsZSIpOworICAgICAgICB9CisKKyAgICAgICAgRFdPUkQgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCBOVUxMLCAwKTsKKyAgICAgICAgd2NoYXJfdCAqd2xpbmUgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKCh3biArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgd24gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGxpbmUsIC0xLCB3bGluZSwgd24gKyAxKTsKKyAgICAgICAgd2xpbmVbd25dID0gJ1wwJzsKKworICAgICAgICB3aGlsZSAod24gKyBwcmVmaXhsZW4gKyA0ID4gYnVmc2l6KSB7CisgICAgICAgICAgICBidWZzaXogKz0gTUFYUEFUSExFTjsKKyAgICAgICAgICAgIGJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKGJ1ZiwgKGJ1ZnNpeiArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghYnVmKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChidWZbMF0pCisgICAgICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgTCI7Iik7CisKKyAgICAgICAgd2NoYXJfdCAqYiA9ICZidWZbd2NzbGVuKGJ1ZildOworICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgcHJlZml4KTsKKyAgICAgICAgam9pbihiLCB3bGluZSk7CisKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgfQorCisgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gYnVmOworCisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAtMTsKK30KKworCiBzdGF0aWMgdm9pZAogY2FsY3VsYXRlX3BhdGgodm9pZCkKIHsKQEAgLTQ5MiwzMiArNjIxLDMzIEBACiAgICAgd2NoYXJfdCAqcHl0aG9uaG9tZSA9IFB5X0dldFB5dGhvbkhvbWUoKTsKICAgICB3Y2hhcl90ICplbnZwYXRoID0gTlVMTDsKIAotI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgc2tpcGhvbWUsIHNraXBkZWZhdWx0OwogICAgIHdjaGFyX3QgKm1hY2hpbmVwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICp1c2VycGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCB6aXBfcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBhcHBsb2NhbCA9IDA7CiAKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZykgewogICAgICAgICBlbnZwYXRoID0gX3dnZXRlbnYoTCJQWVRIT05QQVRIIik7CiAgICAgfQotI2Vsc2UKLSAgICBjaGFyICpfZW52cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOwotICAgIHdjaGFyX3Qgd2VudnBhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpZiAoX2VudnBhdGgpIHsKLSAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyh3ZW52cGF0aCwgX2VudnBhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgICAgIGVudnBhdGggPSB3ZW52cGF0aDsKLSAgICAgICAgaWYgKHIgPT0gKHNpemVfdCktMSB8fCByID49IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKIAogICAgIGdldF9wcm9ncGF0aCgpOwogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCiAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogCisgICAgLyogU2VhcmNoIGZvciBhIHN5cy5wYXRoIGZpbGUgKi8KKyAgICB7CisgICAgICAgIHdjaGFyX3Qgc3BidWZmZXJbTUFYUEFUSExFTisxXTsKKworICAgICAgICBpZiAoKGRsbHBhdGhbMF0gJiYgIWNoYW5nZV9leHQoc3BidWZmZXIsIGRsbHBhdGgsIEwiLl9wdGgiKSAmJiBleGlzdHMoc3BidWZmZXIpKSB8fAorICAgICAgICAgICAgKHByb2dwYXRoWzBdICYmICFjaGFuZ2VfZXh0KHNwYnVmZmVyLCBwcm9ncGF0aCwgTCIuX3B0aCIpICYmIGV4aXN0cyhzcGJ1ZmZlcikpKSB7CisKKyAgICAgICAgICAgIGlmICghcmVhZF9wdGhfZmlsZShzcGJ1ZmZlciwgcHJlZml4LCAmUHlfSXNvbGF0ZWRGbGFnLCAmUHlfTm9TaXRlRmxhZykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCiAgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KICAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KQEAgLTU0MywxNyArNjczLDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogTG9vayBmb3IgYW4gJ2FwcGxvY2FsJyB2YXJpYWJsZSBhbmQsIGlmIHRydWUsIGlnbm9yZSBhbGwgcmVnaXN0cnkKLSAgICAgICAgICAgICAqIGtleXMgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcywgYnV0IHJldGFpbiB0aGUgZGVmYXVsdCBwYXRocwotICAgICAgICAgICAgICogKERMTHMsIExpYikgYW5kIHRoZSB6aXAgZmlsZS4gU2V0dGluZyBweXRob25ob21lIGhlcmUgc3VwcHJlc3NlcwotICAgICAgICAgICAgICogdGhlIHNlYXJjaCBmb3IgTEFORE1BUksgYmVsb3cgYW5kIG92ZXJyaWRlcyAlUFlUSE9OSE9NRSUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiYXBwbG9jYWwiLCB0bXBidWZmZXIpICYmCi0gICAgICAgICAgICAgICAgKGFwcGxvY2FsID0gKHdjc2ljbXAodG1wYnVmZmVyLCBMInRydWUiKSA9PSAwKSkpIHsKLSAgICAgICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICAgICAgICAgICAgICBweXRob25ob21lID0gYXJndjBfcGF0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLwogICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgdG1wYnVmZmVyKTsKQEAgLTU2Myw4ICs2ODIsMTUgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCisgICAgY2hhbmdlX2V4dCh6aXBfcGF0aCwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCwgTCIuemlwIik7CisKICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMIHx8ICpweXRob25ob21lID09ICdcMCcpIHsKLSAgICAgICAgaWYgKHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIExBTkRNQVJLKSkKKyAgICAgICAgaWYgKHppcF9wYXRoWzBdICYmIGV4aXN0cyh6aXBfcGF0aCkpIHsKKyAgICAgICAgICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCB6aXBfcGF0aCk7CisgICAgICAgICAgICByZWR1Y2UocHJlZml4KTsKKyAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBwcmVmaXg7CisgICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IE5VTEw7CkBAIC01NzYsMzAgKzcwMiwxNSBAQAogICAgICAgICBlbnZwYXRoID0gTlVMTDsKIAogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCi0gICAgaWYgKHdjc2NweV9zKHppcF9wYXRoLCBNQVhQQVRITEVOKzEsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgpKQotICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCi0gICAgICAgIHppcF9wYXRoWzBdID0gJ1wwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgd2NoYXJfdCAqZG90ID0gd2NzcmNocih6aXBfcGF0aCwgJy4nKTsKLSAgICAgICAgaWYgKCFkb3QgfHwgd2NzY3B5X3MoZG90LCBNQVhQQVRITEVOKzEgLSAoZG90IC0gemlwX3BhdGgpLCBMIi56aXAiKSkKLSAgICAgICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KLSAgICAgICAgICAgIHppcF9wYXRoWzBdID0gTCdcMCc7Ci0gICAgfQotCiAgICAgc2tpcGhvbWUgPSBweXRob25ob21lPT1OVUxMID8gMCA6IDE7CiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAotICAgIGlmICghYXBwbG9jYWwpIHsKLSAgICAgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOwotICAgICAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKLSAgICB9CisgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOworICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOwogI2VuZGlmCiAgICAgLyogV2Ugb25seSB1c2UgdGhlIGRlZmF1bHQgcmVsYXRpdmUgUFlUSE9OUEFUSCBpZiB3ZSBoYXZlbnQKICAgICAgICBhbnl0aGluZyBiZXR0ZXIgdG8gdXNlISAqLwogICAgIHNraXBkZWZhdWx0ID0gZW52cGF0aCE9TlVMTCB8fCBweXRob25ob21lIT1OVUxMIHx8IFwKICAgICAgICAgICAgICAgICAgIG1hY2hpbmVwYXRoIT1OVUxMIHx8IHVzZXJwYXRoIT1OVUxMOwotI2VuZGlmCiAKICAgICAvKiBXZSBuZWVkIHRvIGNvbnN0cnVjdCBhIHBhdGggZnJvbSB0aGUgZm9sbG93aW5nIHBhcnRzLgogICAgICAgICgxKSB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaWYgc2V0OwpAQCAtNjEyLDcgKzcyMyw2IEBACiAgICAgICAgRXh0cmEgcnVsZXM6CiAgICAgICAgLSBJZiBQWVRIT05IT01FIGlzIHNldCAoaW4gYW55IHdheSkgaXRlbSAoMykgaXMgaWdub3JlZC4KICAgICAgICAtIElmIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgdXNlZCwgKDQpIGFuZCAoNSkgYXJlIGlnbm9yZWQuCi0gICAgICAgLSBJZiBhcHBsb2NhbCBpcyBzZXQsICgxKSwgKDMpLCBhbmQgcmVnaXN0cnkgdmFsdWVzIGFyZSBpZ25vcmVkCiAgICAgKi8KIAogICAgIC8qIENhbGN1bGF0ZSBzaXplIG9mIHJldHVybiBidWZmZXIgKi8KQEAgLTYyOSwxMyArNzM5LDExIEBACiAgICAgICAgIGJ1ZnN6ID0gMDsKICAgICBidWZzeiArPSB3Y3NsZW4oUFlUSE9OUEFUSCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihhcmd2MF9wYXRoKSArIDE7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghYXBwbG9jYWwgJiYgdXNlcnBhdGgpCisgICAgaWYgKHVzZXJwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4odXNlcnBhdGgpICsgMTsKLSAgICBpZiAoIWFwcGxvY2FsICYmIG1hY2hpbmVwYXRoKQorICAgIGlmIChtYWNoaW5lcGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKG1hY2hpbmVwYXRoKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKHppcF9wYXRoKSArIDE7Ci0jZW5kaWYKICAgICBpZiAoZW52cGF0aCAhPSBOVUxMKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4oZW52cGF0aCkgKyAxOwogCkBAIC02NTEsMTAgKzc1OSw4IEBACiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIGRlZmF1bHQgc3RhdGljIHBhdGguXG4iKTsKICAgICAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IFBZVEhPTlBBVEg7CiAgICAgICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobWFjaGluZXBhdGgpOwogICAgICAgICBQeU1lbV9SYXdGcmVlKHVzZXJwYXRoKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2NCw3ICs3NzAsNiBAQAogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHppcF9wYXRoWzBdKSB7CiAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHppcF9wYXRoKSkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwpAQCAtNjkyLDE1ICs3OTcsNyBAQAogICAgICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7Ci0gICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICB3Y2hhcl90ICpwID0gUFlUSE9OUEFUSDsKICAgICAgICAgd2NoYXJfdCAqcTsKICAgICAgICAgc2l6ZV90IG47CmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY25zIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWE5MTdmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY28gYi9QQy9pY29ucy9sYXVuY2hlci5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRlM2M2OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5zdmcgYi9QQy9pY29ucy9sYXVuY2hlci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU5MGIwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+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+CmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IDg4YzA3NDIuLmU4ZDJkOGMgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0yLDcxMiArMiw3MTMgQEAKIDsgSXQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHB5dGhvbjNkbGwudmN4cHJvagogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzUuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzUuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zNS5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNS5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzUuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjM1LlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzUuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzUuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzUuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zNS5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNS5QeUNGdW5jdGlvbl9OZXcKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNS5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzUuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM1LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzUuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzUuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zNS5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM1LlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzUuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXIKLSAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19SZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtUmVhZGVyCi0gIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtV3JpdGVyCi0gIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfU3RyaWN0RXJyb3JzCi0gIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzUuUHlDb21wbGV4X0Zyb21Eb3VibGVzCi0gIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzUuUHlDb21wbGV4X1R5cGUgREFUQQotICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLSAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzUuUHlEZXNjcl9OZXdHZXRTZXQKLSAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZW1iZXIKLSAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZXRob2QKLSAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeURpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNS5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKLSAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5RGljdEtleXNfVHlwZSBEQVRBCi0gIFB5RGljdFByb3h5X05ldz1weXRob24zNS5QeURpY3RQcm94eV9OZXcKLSAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNS5QeURpY3RQcm94eV9UeXBlIERBVEEKLSAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeURpY3RfQ2xlYXI9cHl0aG9uMzUuUHlEaWN0X0NsZWFyCi0gIFB5RGljdF9Db250YWlucz1weXRob24zNS5QeURpY3RfQ29udGFpbnMKLSAgUHlEaWN0X0NvcHk9cHl0aG9uMzUuUHlEaWN0X0NvcHkKLSAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW0KLSAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW0KLSAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLSAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM1LlB5RGljdF9JdGVtcwotICBQeURpY3RfS2V5cz1weXRob24zNS5QeURpY3RfS2V5cwotICBQeURpY3RfTWVyZ2U9cHl0aG9uMzUuUHlEaWN0X01lcmdlCi0gIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM1LlB5RGljdF9NZXJnZUZyb21TZXEyCi0gIFB5RGljdF9OZXc9cHl0aG9uMzUuUHlEaWN0X05ldwotICBQeURpY3RfTmV4dD1weXRob24zNS5QeURpY3RfTmV4dAotICBQeURpY3RfU2V0SXRlbT1weXRob24zNS5QeURpY3RfU2V0SXRlbQotICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfU2V0SXRlbVN0cmluZwotICBQeURpY3RfU2l6ZT1weXRob24zNS5QeURpY3RfU2l6ZQotICBQeURpY3RfVHlwZT1weXRob24zNS5QeURpY3RfVHlwZSBEQVRBCi0gIFB5RGljdF9VcGRhdGU9cHl0aG9uMzUuUHlEaWN0X1VwZGF0ZQotICBQeURpY3RfVmFsdWVzPXB5dGhvbjM1LlB5RGljdF9WYWx1ZXMKLSAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM1LlB5RWxsaXBzaXNfVHlwZSBEQVRBCi0gIFB5RW51bV9UeXBlPXB5dGhvbjM1LlB5RW51bV9UeXBlIERBVEEKLSAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzUuUHlFcnJfQmFkQXJndW1lbnQKLSAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1LlB5RXJyX0JhZEludGVybmFsQ2FsbAotICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzUuUHlFcnJfQ2hlY2tTaWduYWxzCi0gIFB5RXJyX0NsZWFyPXB5dGhvbjM1LlB5RXJyX0NsZWFyCi0gIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzUuUHlFcnJfRGlzcGxheQotICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfRmV0Y2g9cHl0aG9uMzUuUHlFcnJfRmV0Y2gKLSAgUHlFcnJfRm9ybWF0PXB5dGhvbjM1LlB5RXJyX0Zvcm1hdAotICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM1LlB5RXJyX0Zvcm1hdFYKLSAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uCi0gIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotICBQeUVycl9Ob01lbW9yeT1weXRob24zNS5QeUVycl9Ob01lbW9yeQotICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi0gIFB5RXJyX09jY3VycmVkPXB5dGhvbjM1LlB5RXJyX09jY3VycmVkCi0gIFB5RXJyX1ByaW50PXB5dGhvbjM1LlB5RXJyX1ByaW50Ci0gIFB5RXJyX1ByaW50RXg9cHl0aG9uMzUuUHlFcnJfUHJpbnRFeAotICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNS5QeUVycl9Qcm9ncmFtVGV4dAotICBQeUVycl9SZXN0b3JlPXB5dGhvbjM1LlB5RXJyX1Jlc3RvcmUKLSAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJubwotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM1LlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjM1LlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzUuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM1LlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1dhcm5FeD1weXRob24zNS5QeUVycl9XYXJuRXgKLSAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM1LlB5RXJyX1dhcm5FeHBsaWNpdAotICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM1LlB5RXJyX1dhcm5Gb3JtYXQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM1LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQotICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVMb2NrCi0gIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlVGhyZWFkCi0gIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlFdmFsX0NhbGxGdW5jdGlvbgotICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNS5QeUV2YWxfQ2FsbE1ldGhvZAotICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNS5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlCi0gIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZUV4Ci0gIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZQotICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZUV4Ci0gIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNS5QeUV2YWxfR2V0QnVpbHRpbnMKLSAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNS5QeUV2YWxfR2V0Q2FsbFN0YXRzCi0gIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnJhbWUKLSAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jRGVzYwotICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNOYW1lCi0gIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRHbG9iYWxzCi0gIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzUuUHlFdmFsX0dldExvY2FscwotICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX0luaXRUaHJlYWRzCi0gIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9SZUluaXRUaHJlYWRzCi0gIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNS5QeUV2YWxfUmVsZWFzZUxvY2sKLSAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLSAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1NhdmVUaHJlYWQKLSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNS5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi0gIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNS5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQotICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNS5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKLSAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM1LlB5RXhjX0VPRkVycm9yIERBVEEKLSAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNS5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKLSAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNS5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQotICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQotICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM1LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQotICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM1LlB5RXhjX0lPRXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNS5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCi0gIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZXhFcnJvciBEQVRBCi0gIFB5RXhjX0tleUVycm9yPXB5dGhvbjM1LlB5RXhjX0tleUVycm9yIERBVEEKLSAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQotICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNS5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zNS5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM1LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQotICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM1LlB5RXhjX09TRXJyb3IgREFUQQotICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM1LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQotICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzUuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM1LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQotICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNS5QeUV4Y19TeW50YXhFcnJvciBEQVRBCi0gIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCi0gIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM1LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKLSAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNS5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKLSAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzUuUHlFeGNfVGFiRXJyb3IgREFUQQotICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVHlwZUVycm9yIERBVEEKLSAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQotICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNS5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCi0gIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVmFsdWVFcnJvciBEQVRBCi0gIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfV2FybmluZyBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zNS5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM1LlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNS5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM1LlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM1LlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNS5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzUuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzUuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjM1LlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zNS5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNS5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjM1LlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNS5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNS5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzUuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNS5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzUuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM1LlB5SW1wb3J0X0NsZWFudXAKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLSAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNUYWcKLSAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNS5QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci0gIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNS5QeUltcG9ydF9JbXBvcnQKLSAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLSAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX05ldwotICBQeUl0ZXJfTmV4dD1weXRob24zNS5QeUl0ZXJfTmV4dAotICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzUuUHlMaXN0X0FwcGVuZAotICBQeUxpc3RfQXNUdXBsZT1weXRob24zNS5QeUxpc3RfQXNUdXBsZQotICBQeUxpc3RfR2V0SXRlbT1weXRob24zNS5QeUxpc3RfR2V0SXRlbQotICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X0dldFNsaWNlCi0gIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzUuUHlMaXN0X0luc2VydAotICBQeUxpc3RfTmV3PXB5dGhvbjM1LlB5TGlzdF9OZXcKLSAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzUuUHlMaXN0X1JldmVyc2UKLSAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzUuUHlMaXN0X1NldEl0ZW0KLSAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9TZXRTbGljZQotICBQeUxpc3RfU2l6ZT1weXRob24zNS5QeUxpc3RfU2l6ZQotICBQeUxpc3RfU29ydD1weXRob24zNS5QeUxpc3RfU29ydAotICBQeUxpc3RfVHlwZT1weXRob24zNS5QeUxpc3RfVHlwZSBEQVRBCi0gIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Bc0RvdWJsZQotICBQeUxvbmdfQXNMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmcKLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZwotICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NpemVfdAotICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NzaXplX3QKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi0gIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0FzVm9pZFB0cgotICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNS5QeUxvbmdfRnJvbURvdWJsZQotICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nCi0gIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nTG9uZwotICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNpemVfdAotICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21Tc2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3RyaW5nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVm9pZFB0cgotICBQeUxvbmdfR2V0SW5mbz1weXRob24zNS5QeUxvbmdfR2V0SW5mbwotICBQeUxvbmdfVHlwZT1weXRob24zNS5QeUxvbmdfVHlwZSBEQVRBCi0gIFB5TWFwX1R5cGU9cHl0aG9uMzUuUHlNYXBfVHlwZSBEQVRBCi0gIFB5TWFwcGluZ19DaGVjaz1weXRob24zNS5QeU1hcHBpbmdfQ2hlY2sKLSAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5Ci0gIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzUuUHlNYXBwaW5nX0l0ZW1zCi0gIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM1LlB5TWFwcGluZ19LZXlzCi0gIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzUuUHlNYXBwaW5nX0xlbmd0aAotICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNS5QeU1hcHBpbmdfU2l6ZQotICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM1LlB5TWFwcGluZ19WYWx1ZXMKLSAgUHlNZW1fRnJlZT1weXRob24zNS5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zNS5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zNS5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNS5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNS5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNS5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzUuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0U3RhdGUKLSAgUHlNb2R1bGVfTmV3PXB5dGhvbjM1LlB5TW9kdWxlX05ldwotICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlX1R5cGUgREFUQQotICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM1LlB5TW9kdWxlRGVmX0luaXQKLSAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNS5QeU1vZHVsZURlZl9UeXBlIERBVEEKLSAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNS5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKLSAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzUuUHlOdW1iZXJfQWJzb2x1dGUKLSAgUHlOdW1iZXJfQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0FkZAotICBQeU51bWJlcl9BbmQ9cHl0aG9uMzUuUHlOdW1iZXJfQW5kCi0gIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNS5QeU51bWJlcl9Bc1NzaXplX3QKLSAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzUuUHlOdW1iZXJfQ2hlY2sKLSAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM1LlB5TnVtYmVyX0Rpdm1vZAotICBQeU51bWJlcl9GbG9hdD1weXRob24zNS5QeU51bWJlcl9GbG9hdAotICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9GbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBZGQKLSAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQW5kCi0gIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzUuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM1LlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjM1LlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNS5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zNS5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNS5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zNS5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNS5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM1LlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjM1LlB5TnVtYmVyX1hvcgotICBQeU9TX0FmdGVyRm9yaz1weXRob24zNS5QeU9TX0FmdGVyRm9yawotICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM1LlB5T1NfSW5pdEludGVycnVwdHMKLSAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzUuUHlPU19JbnB1dEhvb2sgREFUQQotICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM1LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLSAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNS5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKLSAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM1LlB5T1NfZG91YmxlX3RvX3N0cmluZwotICBQeU9TX2dldHNpZz1weXRob24zNS5QeU9TX2dldHNpZwotICBQeU9TX215c3RyaWNtcD1weXRob24zNS5QeU9TX215c3RyaWNtcAotICBQeU9TX215c3RybmljbXA9cHl0aG9uMzUuUHlPU19teXN0cm5pY21wCi0gIFB5T1Nfc2V0c2lnPXB5dGhvbjM1LlB5T1Nfc2V0c2lnCi0gIFB5T1Nfc25wcmludGY9cHl0aG9uMzUuUHlPU19zbnByaW50ZgotICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzUuUHlPU19zdHJpbmdfdG9fZG91YmxlCi0gIFB5T1Nfc3RydG9sPXB5dGhvbjM1LlB5T1Nfc3RydG9sCi0gIFB5T1Nfc3RydG91bD1weXRob24zNS5QeU9TX3N0cnRvdWwKLSAgUHlPU192c25wcmludGY9cHl0aG9uMzUuUHlPU192c25wcmludGYKLSAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzUuUHlPYmplY3RfQVNDSUkKLSAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM1LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLSAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLSAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzUuUHlPYmplY3RfQnl0ZXMKLSAgUHlPYmplY3RfQ2FsbD1weXRob24zNS5QeU9iamVjdF9DYWxsCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb24KLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZAotICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxPYmplY3QKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM1LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzUuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNS5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zNS5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNS5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzUuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzUuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzUuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM1LlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNS5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzUuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzUuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNS5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzUuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjM1LlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNS5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjM1LlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjM1LlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5T2JqZWN0X1R5cGUgREFUQQotICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPRGljdF9EZWxJdGVtCi0gIFB5T0RpY3RfTmV3PXB5dGhvbjM1LlB5T0RpY3RfTmV3Ci0gIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNS5QeU9EaWN0X1NldEl0ZW0KLSAgUHlPRGljdF9UeXBlPXB5dGhvbjM1LlB5T0RpY3RfVHlwZSBEQVRBCi0gIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlcl9UeXBlIERBVEEKLSAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNS5QeU9EaWN0S2V5c19UeXBlIERBVEEKLSAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzUuUHlQcm9wZXJ0eV9UeXBlIERBVEEKLSAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeVJhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlSYW5nZV9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VfVHlwZSBEQVRBCi0gIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNS5QeVJldmVyc2VkX1R5cGUgREFUQQotICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM1LlB5U2VxSXRlcl9OZXcKLSAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXFJdGVyX1R5cGUgREFUQQotICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ2hlY2sKLSAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db25jYXQKLSAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNS5QeVNlcXVlbmNlX0NvbnRhaW5zCi0gIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db3VudAotICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxJdGVtCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxTbGljZQotICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9GYXN0Ci0gIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0dldFNsaWNlCi0gIFB5U2VxdWVuY2VfSW49cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbgotICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci0gIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLSAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNS5QeVNlcXVlbmNlX0luZGV4Ci0gIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM1LlB5U2VxdWVuY2VfTGVuZ3RoCi0gIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNS5QeVNlcXVlbmNlX0xpc3QKLSAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9SZXBlYXQKLSAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0SXRlbQotICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2l6ZQotICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM1LlB5U2VxdWVuY2VfVHVwbGUKLSAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXRJdGVyX1R5cGUgREFUQQotICBQeVNldF9BZGQ9cHl0aG9uMzUuUHlTZXRfQWRkCi0gIFB5U2V0X0NsZWFyPXB5dGhvbjM1LlB5U2V0X0NsZWFyCi0gIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM1LlB5U2V0X0NvbnRhaW5zCi0gIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzUuUHlTZXRfRGlzY2FyZAotICBQeVNldF9OZXc9cHl0aG9uMzUuUHlTZXRfTmV3Ci0gIFB5U2V0X1BvcD1weXRob24zNS5QeVNldF9Qb3AKLSAgUHlTZXRfU2l6ZT1weXRob24zNS5QeVNldF9TaXplCi0gIFB5U2V0X1R5cGU9cHl0aG9uMzUuUHlTZXRfVHlwZSBEQVRBCi0gIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXMKLSAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzRXgKLSAgUHlTbGljZV9OZXc9cHl0aG9uMzUuUHlTbGljZV9OZXcKLSAgUHlTbGljZV9UeXBlPXB5dGhvbjM1LlB5U2xpY2VfVHlwZSBEQVRBCi0gIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNS5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQotICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9GaW5kTW9kdWxlCi0gIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfQWRkTW9kdWxlCi0gIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCi0gIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U3VwZXJfVHlwZT1weXRob24zNS5QeVN1cGVyX1R5cGUgREFUQQotICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb24KLSAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLSAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZGVycgotICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3Rkb3V0Ci0gIFB5U3lzX0dldE9iamVjdD1weXRob24zNS5QeVN5c19HZXRPYmplY3QKLSAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfSGFzV2Fybk9wdGlvbnMKLSAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19SZXNldFdhcm5PcHRpb25zCi0gIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzUuUHlTeXNfU2V0QXJndgotICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzUuUHlTeXNfU2V0QXJndkV4Ci0gIFB5U3lzX1NldE9iamVjdD1weXRob24zNS5QeVN5c19TZXRPYmplY3QKLSAgUHlTeXNfU2V0UGF0aD1weXRob24zNS5QeVN5c19TZXRQYXRoCi0gIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM1LlB5U3lzX1dyaXRlU3RkZXJyCi0gIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM1LlB5U3lzX1dyaXRlU3Rkb3V0Ci0gIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9DbGVhcgotICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZQotICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci0gIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0Ci0gIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldERpY3QKLSAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9OZXcKLSAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNS5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi0gIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNS5QeVRocmVhZFN0YXRlX1N3YXAKLSAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNS5QeVRyYWNlQmFja19IZXJlCi0gIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM1LlB5VHJhY2VCYWNrX1ByaW50Ci0gIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCi0gIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLSAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfR2V0SXRlbQotICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM1LlB5VHVwbGVfR2V0U2xpY2UKLSAgUHlUdXBsZV9OZXc9cHl0aG9uMzUuUHlUdXBsZV9OZXcKLSAgUHlUdXBsZV9QYWNrPXB5dGhvbjM1LlB5VHVwbGVfUGFjawotICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9TZXRJdGVtCi0gIFB5VHVwbGVfU2l6ZT1weXRob24zNS5QeVR1cGxlX1NpemUKLSAgUHlUdXBsZV9UeXBlPXB5dGhvbjM1LlB5VHVwbGVfVHlwZSBEQVRBCi0gIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM1LlB5VHlwZV9DbGVhckNhY2hlCi0gIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWMKLSAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwotICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljQWxsb2MKLSAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNOZXcKLSAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM1LlB5VHlwZV9HZXRGbGFncwotICBQeVR5cGVfR2V0U2xvdD1weXRob24zNS5QeVR5cGVfR2V0U2xvdAotICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM1LlB5VHlwZV9Jc1N1YnR5cGUKLSAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM1LlB5VHlwZV9Nb2RpZmllZAotICBQeVR5cGVfUmVhZHk9cHl0aG9uMzUuUHlUeXBlX1JlYWR5Ci0gIFB5VHlwZV9UeXBlPXB5dGhvbjM1LlB5VHlwZV9UeXBlIERBVEEKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNS5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kCi0gIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKLSAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZwotICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfQXNXaWRlQ2hhcgotICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNS5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZQotICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM1LlB5VW5pY29kZV9Db25jYXQKLSAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM1LlB5VW5pY29kZV9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvdW50Ci0gIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZQotICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCi0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKLSAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTQ29udmVydGVyCi0gIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTRGVjb2RlcgotICBQeVVuaWNvZGVfRmluZD1weXRob24zNS5QeVVuaWNvZGVfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCi0gIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmcKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9HZXRTaXplCi0gIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzUuUHlVbmljb2RlX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zNS5QeVVuaWNvZGVfSm9pbgotICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9QYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNS5QeVVuaWNvZGVfUlNwbGl0Ci0gIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9SZXBsYWNlCi0gIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzUuUHlVbmljb2RlX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX1JpY2hDb21wYXJlCi0gIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdGxpbmVzCi0gIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzUuUHlVbmljb2RlX1RhaWxtYXRjaAotICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM1LlB5VW5pY29kZV9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzUuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNS5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNS5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zNS5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzUuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM1LlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zNS5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zNS5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzUuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzUuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM1LlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzUuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjM1LlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzUuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM1LlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zNS5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzUuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzUuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjM1LlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzUuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjM1LlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM1LlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjM1LlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjM1LlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM1LlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zNS5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzUuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNS5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzUuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zNS5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM1LlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNS5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zNS5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNS5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM1Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzUuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM1Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNS5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zNS5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNS5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM1Ll9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNS5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAotICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZV9TaXplVAotICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIFB5QXJnX1BhcnNlPXB5dGhvbjM2LlB5QXJnX1BhcnNlCisgIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZQorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM2LlB5QXJnX1VucGFja1R1cGxlCisgIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzYuUHlBcmdfVmFQYXJzZQorICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNi5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzYuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCisgIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM2LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKKyAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM2LlB5Qm9vbF9Gcm9tTG9uZworICBQeUJvb2xfVHlwZT1weXRob24zNi5QeUJvb2xfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM2LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzYuUHlCeXRlQXJyYXlfQXNTdHJpbmcKKyAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0NvbmNhdAorICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKKyAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1Jlc2l6ZQorICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1NpemUKKyAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNi5QeUJ5dGVBcnJheV9UeXBlIERBVEEKKyAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNi5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNi5QeUJ5dGVzX0FzU3RyaW5nCisgIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0CisgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCisgIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM2LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCisgIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXQKKyAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXRWCisgIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNi5QeUJ5dGVzX0Zyb21PYmplY3QKKyAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZworICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19SZXByPXB5dGhvbjM2LlB5Qnl0ZXNfUmVwcgorICBQeUJ5dGVzX1NpemU9cHl0aG9uMzYuUHlCeXRlc19TaXplCisgIFB5Qnl0ZXNfVHlwZT1weXRob24zNi5QeUJ5dGVzX1R5cGUgREFUQQorICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0NhbGwKKyAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNi5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0CisgIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCisgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCisgIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0U2VsZgorICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzYuUHlDRnVuY3Rpb25fTmV3CisgIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX05ld0V4CisgIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzYuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCisgIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM2LlB5Q2FsbEl0ZXJfTmV3CisgIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNi5QeUNhbGxJdGVyX1R5cGUgREFUQQorICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM2LlB5Q2FsbGFibGVfQ2hlY2sKKyAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzYuUHlDYXBzdWxlX0dldENvbnRleHQKKyAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzYuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzYuUHlDYXBzdWxlX0dldE5hbWUKKyAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzYuUHlDYXBzdWxlX0dldFBvaW50ZXIKKyAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNi5QeUNhcHN1bGVfSW1wb3J0CisgIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM2LlB5Q2Fwc3VsZV9Jc1ZhbGlkCisgIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzYuUHlDYXBzdWxlX05ldworICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNi5QeUNhcHN1bGVfU2V0Q29udGV4dAorICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNi5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNi5QeUNhcHN1bGVfU2V0TmFtZQorICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNi5QeUNhcHN1bGVfU2V0UG9pbnRlcgorICBQeUNhcHN1bGVfVHlwZT1weXRob24zNi5QeUNhcHN1bGVfVHlwZSBEQVRBCisgIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM2LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycworICBQeUNvZGVjX0RlY29kZT1weXRob24zNi5QeUNvZGVjX0RlY29kZQorICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19EZWNvZGVyCisgIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM2LlB5Q29kZWNfRW5jb2RlCisgIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNi5QeUNvZGVjX0VuY29kZXIKKyAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19JZ25vcmVFcnJvcnMKKyAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKKyAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKKyAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM2LlB5Q29kZWNfS25vd25FbmNvZGluZworICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM2LlB5Q29kZWNfTG9va3VwRXJyb3IKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNi5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM2LlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM2LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNi5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM2LlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNi5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM2LlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNi5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNi5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zNi5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzYuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzYuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM2LlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjM2LlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzYuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjM2LlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zNi5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzYuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjM2LlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNi5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjM2LlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzYuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzYuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzYuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjM2LlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zNi5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNi5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zNi5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM2LlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNi5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM2LlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zNi5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjM2LlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjM2LlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zNi5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfRm9ybWF0Vj1weXRob24zNi5QeUVycl9Gb3JtYXRWCisgIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbgorICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKKyAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzYuUHlFcnJfTm9NZW1vcnkKKyAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgorICBQeUVycl9PY2N1cnJlZD1weXRob24zNi5QeUVycl9PY2N1cnJlZAorICBQeUVycl9QcmludD1weXRob24zNi5QeUVycl9QcmludAorICBQeUVycl9QcmludEV4PXB5dGhvbjM2LlB5RXJyX1ByaW50RXgKKyAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzYuUHlFcnJfUHJvZ3JhbVRleHQKKyAgUHlFcnJfUmVzdG9yZT1weXRob24zNi5QeUVycl9SZXN0b3JlCisgIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm8KKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQorICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEludGVycnVwdD1weXRob24zNi5QeUVycl9TZXRJbnRlcnJ1cHQKKyAgUHlFcnJfU2V0Tm9uZT1weXRob24zNi5QeUVycl9TZXROb25lCisgIFB5RXJyX1NldE9iamVjdD1weXRob24zNi5QeUVycl9TZXRPYmplY3QKKyAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjM2LlB5RXJyX1NldFN0cmluZworICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zNi5QeUVycl9TeW50YXhMb2NhdGlvbgorICBQeUVycl9XYXJuRXg9cHl0aG9uMzYuUHlFcnJfV2FybkV4CisgIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNi5QeUVycl9XYXJuRXhwbGljaXQKKyAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNi5QeUVycl9XYXJuRm9ybWF0CisgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNi5QeUVycl9Xcml0ZVVucmFpc2FibGUKKyAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM2LlB5RXZhbF9BY3F1aXJlTG9jaworICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNi5QeUV2YWxfQWNxdWlyZVRocmVhZAorICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM2LlB5RXZhbF9DYWxsRnVuY3Rpb24KKyAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzYuUHlFdmFsX0NhbGxNZXRob2QKKyAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzYuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKKyAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM2LlB5RXZhbF9FdmFsQ29kZQorICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNi5QeUV2YWxfRXZhbENvZGVFeAorICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWUKKyAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWVFeAorICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzYuUHlFdmFsX0dldEJ1aWx0aW5zCisgIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzYuUHlFdmFsX0dldENhbGxTdGF0cworICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzYuUHlFdmFsX0dldEZyYW1lCisgIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNi5QeUV2YWxfR2V0RnVuY0Rlc2MKKyAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM2LlB5RXZhbF9HZXRGdW5jTmFtZQorICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNi5QeUV2YWxfR2V0R2xvYmFscworICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM2LlB5RXZhbF9HZXRMb2NhbHMKKyAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM2LlB5RXZhbF9Jbml0VGhyZWFkcworICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNi5QeUV2YWxfUmVJbml0VGhyZWFkcworICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzYuUHlFdmFsX1JlbGVhc2VMb2NrCisgIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZWxlYXNlVGhyZWFkCisgIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZXN0b3JlVGhyZWFkCisgIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9TYXZlVGhyZWFkCisgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAorICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKKyAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQorICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNi5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCisgIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzYuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjM2LlB5RXhjX0J1ZmZlckVycm9yIERBVEEKKyAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCisgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19FT0ZFcnJvcj1weXRob24zNi5QeUV4Y19FT0ZFcnJvciBEQVRBCisgIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCisgIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zNi5QeUV4Y19FeGNlcHRpb24gREFUQQorICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKKyAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zNi5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKKyAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zNi5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKKyAgUHlFeGNfSU9FcnJvcj1weXRob24zNi5QeUV4Y19JT0Vycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzYuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQorICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQorICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGV4RXJyb3IgREFUQQorICBQeUV4Y19LZXlFcnJvcj1weXRob24zNi5QeUV4Y19LZXlFcnJvciBEQVRBCisgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM2LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKKyAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlFeGNfTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQorICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzYuUHlFeGNfTmFtZUVycm9yIERBVEEKKyAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNi5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKKyAgUHlFeGNfT1NFcnJvcj1weXRob24zNi5QeUV4Y19PU0Vycm9yIERBVEEKKyAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNi5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKKyAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjM2LlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCisgIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjM2LlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNi5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzYuUHlFeGNfU3ludGF4RXJyb3IgREFUQQorICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQorICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNi5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCisgIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzYuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCisgIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM2LlB5RXhjX1RhYkVycm9yIERBVEEKKyAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjM2LlB5RXhjX1R5cGVFcnJvciBEQVRBCisgIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjM2LlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKKyAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzYuUHlFeGNfVXNlcldhcm5pbmcgREFUQQorICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1ZhbHVlRXJyb3IgREFUQQorICBQeUV4Y19XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1dhcm5pbmcgREFUQQorICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zNi5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCisgIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX0dldENhdXNlCisgIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCisgIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX1NldENhdXNlCisgIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCisgIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzYuUHlGaWxlX0Zyb21GZAorICBQeUZpbGVfR2V0TGluZT1weXRob24zNi5QeUZpbGVfR2V0TGluZQorICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzYuUHlGaWxlX1dyaXRlT2JqZWN0CisgIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zNi5QeUZpbGVfV3JpdGVTdHJpbmcKKyAgUHlGaWx0ZXJfVHlwZT1weXRob24zNi5QeUZpbHRlcl9UeXBlIERBVEEKKyAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zNi5QeUZsb2F0X0FzRG91YmxlCisgIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zNi5QeUZsb2F0X0Zyb21Eb3VibGUKKyAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5RmxvYXRfRnJvbVN0cmluZworICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzYuUHlGbG9hdF9HZXRJbmZvCisgIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjM2LlB5RmxvYXRfR2V0TWF4CisgIFB5RmxvYXRfR2V0TWluPXB5dGhvbjM2LlB5RmxvYXRfR2V0TWluCisgIFB5RmxvYXRfVHlwZT1weXRob24zNi5QeUZsb2F0X1R5cGUgREFUQQorICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzYuUHlGcm96ZW5TZXRfTmV3CisgIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzYuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCisgIFB5R0NfQ29sbGVjdD1weXRob24zNi5QeUdDX0NvbGxlY3QKKyAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9FbnN1cmUKKyAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKKyAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjM2LlB5R0lMU3RhdGVfUmVsZWFzZQorICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzYuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKKyAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0FkZE1vZHVsZQorICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjM2LlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKKyAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zNi5QeUltcG9ydF9DbGVhbnVwCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCisgIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldEltcG9ydGVyCisgIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCisgIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljVGFnCisgIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAorICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0CisgIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zNi5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKKyAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQorICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQorICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM2LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKKyAgUHlJdGVyX05leHQ9cHl0aG9uMzYuUHlJdGVyX05leHQKKyAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM2LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNi5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQorICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM2LlB5TGlzdF9BcHBlbmQKKyAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzYuUHlMaXN0X0FzVHVwbGUKKyAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzYuUHlMaXN0X0dldEl0ZW0KKyAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM2LlB5TGlzdF9HZXRTbGljZQorICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM2LlB5TGlzdF9JbnNlcnQKKyAgUHlMaXN0X05ldz1weXRob24zNi5QeUxpc3RfTmV3CisgIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM2LlB5TGlzdF9SZXZlcnNlCisgIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM2LlB5TGlzdF9TZXRJdGVtCisgIFB5TGlzdF9TZXRTbGljZT1weXRob24zNi5QeUxpc3RfU2V0U2xpY2UKKyAgUHlMaXN0X1NpemU9cHl0aG9uMzYuUHlMaXN0X1NpemUKKyAgUHlMaXN0X1NvcnQ9cHl0aG9uMzYuUHlMaXN0X1NvcnQKKyAgUHlMaXN0X1R5cGU9cHl0aG9uMzYuUHlMaXN0X1R5cGUgREFUQQorICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNi5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNi5QeUxvbmdfQXNEb3VibGUKKyAgUHlMb25nX0FzTG9uZz1weXRob24zNi5QeUxvbmdfQXNMb25nCisgIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0FzTG9uZ0xvbmcKKyAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTaXplX3QKKyAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTc2l6ZV90CisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaworICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM2LlB5TG9uZ19Bc1ZvaWRQdHIKKyAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzYuUHlMb25nX0Zyb21Eb3VibGUKKyAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZworICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzYuUHlMb25nX0Zyb21TaXplX3QKKyAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Gcm9tU3NpemVfdAorICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNi5QeUxvbmdfRnJvbVN0cmluZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNi5QeUxvbmdfRnJvbVZvaWRQdHIKKyAgUHlMb25nX0dldEluZm89cHl0aG9uMzYuUHlMb25nX0dldEluZm8KKyAgUHlMb25nX1R5cGU9cHl0aG9uMzYuUHlMb25nX1R5cGUgREFUQQorICBQeU1hcF9UeXBlPXB5dGhvbjM2LlB5TWFwX1R5cGUgREFUQQorICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzYuUHlNYXBwaW5nX0NoZWNrCisgIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzYuUHlNYXBwaW5nX0hhc0tleQorICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKKyAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM2LlB5TWFwcGluZ19JdGVtcworICBQeU1hcHBpbmdfS2V5cz1weXRob24zNi5QeU1hcHBpbmdfS2V5cworICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM2LlB5TWFwcGluZ19MZW5ndGgKKyAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzYuUHlNYXBwaW5nX1NpemUKKyAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNi5QeU1hcHBpbmdfVmFsdWVzCisgIFB5TWVtX0ZyZWU9cHl0aG9uMzYuUHlNZW1fRnJlZQorICBQeU1lbV9NYWxsb2M9cHl0aG9uMzYuUHlNZW1fTWFsbG9jCisgIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzYuUHlNZW1fUmVhbGxvYworICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKKyAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKKyAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQorICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzYuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjM2LlB5TW9kdWxlX0FkZE9iamVjdAorICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zNi5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAorICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjM2LlB5TW9kdWxlX0NyZWF0ZTIKKyAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjM2LlB5TW9kdWxlX0dldERlZgorICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjM2LlB5TW9kdWxlX0dldERpY3QKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWUKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKKyAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zNi5QeU1vZHVsZV9HZXROYW1lCisgIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM2LlB5TW9kdWxlX0dldFN0YXRlCisgIFB5TW9kdWxlX05ldz1weXRob24zNi5QeU1vZHVsZV9OZXcKKyAgUHlNb2R1bGVfVHlwZT1weXRob24zNi5QeU1vZHVsZV9UeXBlIERBVEEKKyAgUHlNb2R1bGVEZWZfSW5pdD1weXRob24zNi5QeU1vZHVsZURlZl9Jbml0CisgIFB5TW9kdWxlRGVmX1R5cGU9cHl0aG9uMzYuUHlNb2R1bGVEZWZfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzYuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM2LlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zNi5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjM2LlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzYuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM2LlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNi5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzYuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlT3IKKyAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VQb3dlcgorICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlUnNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKKyAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlWG9yCisgIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM2LlB5TnVtYmVyX0luZGV4CisgIFB5TnVtYmVyX0ludmVydD1weXRob24zNi5QeU51bWJlcl9JbnZlcnQKKyAgUHlOdW1iZXJfTG9uZz1weXRob24zNi5QeU51bWJlcl9Mb25nCisgIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNi5QeU51bWJlcl9Mc2hpZnQKKyAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfTXVsdGlwbHkKKyAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfTmVnYXRpdmUKKyAgUHlOdW1iZXJfT3I9cHl0aG9uMzYuUHlOdW1iZXJfT3IKKyAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfUG9zaXRpdmUKKyAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzYuUHlOdW1iZXJfUG93ZXIKKyAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX1JlbWFpbmRlcgorICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfUnNoaWZ0CisgIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM2LlB5TnVtYmVyX1N1YnRyYWN0CisgIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNi5QeU51bWJlcl9Ub0Jhc2UKKyAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNi5QeU51bWJlcl9UcnVlRGl2aWRlCisgIFB5TnVtYmVyX1hvcj1weXRob24zNi5QeU51bWJlcl9Yb3IKKyAgUHlPU19BZnRlckZvcms9cHl0aG9uMzYuUHlPU19BZnRlckZvcmsKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNi5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM2LlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNi5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzYuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNi5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzYuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzYuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM2LlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zNi5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjM2LlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM2LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zNi5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzYuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM2LlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM2LlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNi5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM2LlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNi5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNi5QeU9iamVjdF9DbGVhcldlYWtSZWZzCisgIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfRGVsSXRlbQorICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlPYmplY3RfRGlyPXB5dGhvbjM2LlB5T2JqZWN0X0RpcgorICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzYuUHlPYmplY3RfRm9ybWF0CisgIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzYuUHlPYmplY3RfRnJlZQorICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzYuUHlPYmplY3RfR0NfRGVsCisgIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM2LlB5T2JqZWN0X0dDX1RyYWNrCisgIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzYuUHlPYmplY3RfR0NfVW5UcmFjaworICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgorICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfR2V0SXRlbQorICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEl0ZXIKKyAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNi5QeU9iamVjdF9IYXNBdHRyCisgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfSGFzQXR0clN0cmluZworICBQeU9iamVjdF9IYXNoPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2gKKyAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAorICBQeU9iamVjdF9Jbml0PXB5dGhvbjM2LlB5T2JqZWN0X0luaXQKKyAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNi5QeU9iamVjdF9Jbml0VmFyCisgIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzYuUHlPYmplY3RfSXNJbnN0YW5jZQorICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM2LlB5T2JqZWN0X0lzU3ViY2xhc3MKKyAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM2LlB5T2JqZWN0X0lzVHJ1ZQorICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzYuUHlPYmplY3RfTGVuZ3RoCisgIFB5T2JqZWN0X01hbGxvYz1weXRob24zNi5QeU9iamVjdF9NYWxsb2MKKyAgUHlPYmplY3RfTm90PXB5dGhvbjM2LlB5T2JqZWN0X05vdAorICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM2LlB5T2JqZWN0X1JlYWxsb2MKKyAgUHlPYmplY3RfUmVwcj1weXRob24zNi5QeU9iamVjdF9SZXByCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5T2JqZWN0X1JpY2hDb21wYXJlCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNi5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKKyAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzYuUHlPYmplY3RfU2VsZkl0ZXIKKyAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9TZXRBdHRyCisgIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfU2V0QXR0clN0cmluZworICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM2LlB5T2JqZWN0X1NldEl0ZW0KKyAgUHlPYmplY3RfU2l6ZT1weXRob24zNi5QeU9iamVjdF9TaXplCisgIFB5T2JqZWN0X1N0cj1weXRob24zNi5QeU9iamVjdF9TdHIKKyAgUHlPYmplY3RfVHlwZT1weXRob24zNi5QeU9iamVjdF9UeXBlIERBVEEKKyAgUHlPRGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5T0RpY3RfRGVsSXRlbQorICBQeU9EaWN0X05ldz1weXRob24zNi5QeU9EaWN0X05ldworICBQeU9EaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlPRGljdF9TZXRJdGVtCisgIFB5T0RpY3RfVHlwZT1weXRob24zNi5QeU9EaWN0X1R5cGUgREFUQQorICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNi5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzYuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCisgIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzYuUHlPRGljdEtleXNfVHlwZSBEQVRBCisgIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNi5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zNi5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncworICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjM2LlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKKyAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM2LlB5UHJvcGVydHlfVHlwZSBEQVRBCisgIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzYuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5UmFuZ2VfVHlwZT1weXRob24zNi5QeVJhbmdlX1R5cGUgREFUQQorICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzYuUHlSZXZlcnNlZF9UeXBlIERBVEEKKyAgUHlTZXFJdGVyX05ldz1weXRob24zNi5QeVNlcUl0ZXJfTmV3CisgIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM2LlB5U2VxSXRlcl9UeXBlIERBVEEKKyAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNi5QeVNlcXVlbmNlX0NoZWNrCisgIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ29uY2F0CisgIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db250YWlucworICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ291bnQKKyAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsSXRlbQorICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsU2xpY2UKKyAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM2LlB5U2VxdWVuY2VfRmFzdAorICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRTbGljZQorICBQeVNlcXVlbmNlX0luPXB5dGhvbjM2LlB5U2VxdWVuY2VfSW4KKyAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAorICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0CisgIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JbmRleAorICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNi5QeVNlcXVlbmNlX0xlbmd0aAorICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzYuUHlTZXF1ZW5jZV9MaXN0CisgIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM2LlB5U2VxdWVuY2VfUmVwZWF0CisgIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNi5QeVNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX1NldFNsaWNlCisgIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNi5QeVNlcXVlbmNlX1NpemUKKyAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNi5QeVNlcXVlbmNlX1R1cGxlCisgIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM2LlB5U2V0SXRlcl9UeXBlIERBVEEKKyAgUHlTZXRfQWRkPXB5dGhvbjM2LlB5U2V0X0FkZAorICBQeVNldF9DbGVhcj1weXRob24zNi5QeVNldF9DbGVhcgorICBQeVNldF9Db250YWlucz1weXRob24zNi5QeVNldF9Db250YWlucworICBQeVNldF9EaXNjYXJkPXB5dGhvbjM2LlB5U2V0X0Rpc2NhcmQKKyAgUHlTZXRfTmV3PXB5dGhvbjM2LlB5U2V0X05ldworICBQeVNldF9Qb3A9cHl0aG9uMzYuUHlTZXRfUG9wCisgIFB5U2V0X1NpemU9cHl0aG9uMzYuUHlTZXRfU2l6ZQorICBQeVNldF9UeXBlPXB5dGhvbjM2LlB5U2V0X1R5cGUgREFUQQorICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzYuUHlTbGljZV9HZXRJbmRpY2VzCisgIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM2LlB5U2xpY2VfR2V0SW5kaWNlc0V4CisgIFB5U2xpY2VfTmV3PXB5dGhvbjM2LlB5U2xpY2VfTmV3CisgIFB5U2xpY2VfVHlwZT1weXRob24zNi5QeVNsaWNlX1R5cGUgREFUQQorICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzYuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKKyAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfRmluZE1vZHVsZQorICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5QeVN0YXRlX0FkZE1vZHVsZQorICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNi5QeVN0YXRlX1JlbW92ZU1vZHVsZQorICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfTmV3CisgIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQorICBQeVN1cGVyX1R5cGU9cHl0aG9uMzYuUHlTdXBlcl9UeXBlIERBVEEKKyAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNi5QeVN5c19BZGRXYXJuT3B0aW9uCisgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM2LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCisgIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zNi5QeVN5c19Gb3JtYXRTdGRlcnIKKyAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjM2LlB5U3lzX0Zvcm1hdFN0ZG91dAorICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfR2V0T2JqZWN0CisgIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjM2LlB5U3lzX0hhc1dhcm5PcHRpb25zCisgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzYuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucworICBQeVN5c19TZXRBcmd2PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3YKKyAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3ZFeAorICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfU2V0T2JqZWN0CisgIFB5U3lzX1NldFBhdGg9cHl0aG9uMzYuUHlTeXNfU2V0UGF0aAorICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zNi5QeVN5c19Xcml0ZVN0ZGVycgorICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zNi5QeVN5c19Xcml0ZVN0ZG91dAorICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfQ2xlYXIKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9EZWxldGUKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAorICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zNi5QeVRocmVhZFN0YXRlX0dldAorICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9HZXREaWN0CisgIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfTmV3CisgIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YworICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9Td2FwCisgIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzYuUHlUcmFjZUJhY2tfSGVyZQorICBQeVRyYWNlQmFja19QcmludD1weXRob24zNi5QeVRyYWNlQmFja19QcmludAorICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjM2LlB5VHJhY2VCYWNrX1R5cGUgREFUQQorICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjM2LlB5VHVwbGVJdGVyX1R5cGUgREFUQQorICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzYuUHlUdXBsZV9DbGVhckZyZWVMaXN0CisgIFB5VHVwbGVfR2V0SXRlbT1weXRob24zNi5QeVR1cGxlX0dldEl0ZW0KKyAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zNi5QeVR1cGxlX0dldFNsaWNlCisgIFB5VHVwbGVfTmV3PXB5dGhvbjM2LlB5VHVwbGVfTmV3CisgIFB5VHVwbGVfUGFjaz1weXRob24zNi5QeVR1cGxlX1BhY2sKKyAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjM2LlB5VHVwbGVfU2V0SXRlbQorICBQeVR1cGxlX1NpemU9cHl0aG9uMzYuUHlUdXBsZV9TaXplCisgIFB5VHVwbGVfVHlwZT1weXRob24zNi5QeVR1cGxlX1R5cGUgREFUQQorICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zNi5QeVR5cGVfQ2xlYXJDYWNoZQorICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzYuUHlUeXBlX0Zyb21TcGVjCisgIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zNi5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKKyAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zNi5QeVR5cGVfR2VuZXJpY0FsbG9jCisgIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjM2LlB5VHlwZV9HZW5lcmljTmV3CisgIFB5VHlwZV9HZXRGbGFncz1weXRob24zNi5QeVR5cGVfR2V0RmxhZ3MKKyAgUHlUeXBlX0dldFNsb3Q9cHl0aG9uMzYuUHlUeXBlX0dldFNsb3QKKyAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zNi5QeVR5cGVfSXNTdWJ0eXBlCisgIFB5VHlwZV9Nb2RpZmllZD1weXRob24zNi5QeVR5cGVfTW9kaWZpZWQKKyAgUHlUeXBlX1JlYWR5PXB5dGhvbjM2LlB5VHlwZV9SZWFkeQorICBQeVR5cGVfVHlwZT1weXRob24zNi5QeVR5cGVfVHlwZSBEQVRBCisgIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzYuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0FwcGVuZAorICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM2LlB5VW5pY29kZV9BcHBlbmRBbmREZWwKKyAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zNi5QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKKyAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzYuUHlVbmljb2RlX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzYuUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmUKKyAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNi5QeVVuaWNvZGVfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNi5QeVVuaWNvZGVfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM2LlB5VW5pY29kZV9Db3VudAorICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCisgIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMTYKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYzMgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGOAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0NvbnZlcnRlcgorICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0RlY29kZXIKKyAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0ZpbmQKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNi5QeVVuaWNvZGVfRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgorICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zNi5QeVVuaWNvZGVfR2V0U2l6ZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM2LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzYuUHlVbmljb2RlX0pvaW4KKyAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNi5QeVVuaWNvZGVfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM2LlB5VW5pY29kZV9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzYuUHlVbmljb2RlX1JTcGxpdAorICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zNi5QeVVuaWNvZGVfUmVwbGFjZQorICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM2LlB5VW5pY29kZV9SZXNpemUKKyAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5VW5pY29kZV9SaWNoQ29tcGFyZQorICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM2LlB5VW5pY29kZV9TcGxpdAorICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zNi5QeVVuaWNvZGVfU3BsaXRsaW5lcworICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjM2LlB5VW5pY29kZV9UYWlsbWF0Y2gKKyAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNi5QeVVuaWNvZGVfVHJhbnNsYXRlCisgIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjM2LlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCisgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfVHlwZT1weXRob24zNi5QeVVuaWNvZGVfVHlwZSBEQVRBCisgIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNi5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNi5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzYuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjM2LlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNi5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzYuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzYuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM2LlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjM2LlB5X0RlY1JlZgorICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zNi5QeV9FbmRJbnRlcnByZXRlcgorICBQeV9FeGl0PXB5dGhvbjM2LlB5X0V4aXQKKyAgUHlfRmF0YWxFcnJvcj1weXRob24zNi5QeV9GYXRhbEVycm9yCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjM2LlB5X0ZpbmFsaXplCisgIFB5X0ZpbmFsaXplRXg9cHl0aG9uMzYuUHlfRmluYWxpemVFeAorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzYuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjM2LlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zNi5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNi5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzYuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNi5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzYuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNi5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzYuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNi5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2LlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzYuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzYuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjM2LlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNi5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM2LlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zNi5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjM2LlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNi5QeV9TZXRQcm9ncmFtTmFtZQorICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM2LlB5X1NldFB5dGhvbkhvbWUKKyAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzYuUHlfU2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzYuUHlfU3ltdGFibGVTdHJpbmcKKyAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM2LlB5X1ZhQnVpbGRWYWx1ZQorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM2Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNi5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM2Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNi5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM2Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM2Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzYuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNi5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCisgIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzYuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAorICBfUHlfRGVhbGxvYz1weXRob24zNi5fUHlfRGVhbGxvYworICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzYuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKKyAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM2Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCisgIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob25lU3RydWN0IERBVEEKKyAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCisgIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzYuX1B5X1N3YXBwZWRPcCBEQVRBCisgIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM2Ll9QeV9UcnVlU3RydWN0IERBVEEKKyAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19WYVBhcnNlX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzYuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9leGUucmMgYi9QQy9weXRob25fZXhlLnJjCmluZGV4IDkxNzg1YTEuLmFlMGIwMjkgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9leGUucmMKKysrIGIvUEMvcHl0aG9uX2V4ZS5yYwpAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAicHljb24uaWNvIiAKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIgCiAKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbndfZXhlLnJjIGIvUEMvcHl0aG9ud19leGUucmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiZjM1OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5dGhvbndfZXhlLnJjCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvbnNvbGUgRVhFcy4KKworI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKKworLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKKworMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob253LmljbyIgCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBWZXJzaW9uCisvLworCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAorIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CisgRklMRUZMQUdTTUFTSyAweDNmTAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyBWU19GRl9ERUJVRworI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIFZPU19fV0lORE9XUzMyCisgRklMRVRZUEUgVkZUX0FQUAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsIFBZVEhPTl9DT01QQU5ZICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gQXBwbGljYXRpb25cMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHl0aG9udyIgUFlUSE9OX0RFQlVHX0VYVCAiLmV4ZVwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAorICAgIEVORAorRU5ECmRpZmYgLS1naXQgYS9QQy90ZXN0cHkucHkgYi9QQy90ZXN0cHkucHkKaW5kZXggNGVmM2Q0Zi4uNzA5ZjM1YyAxMDA2NDQKLS0tIGEvUEMvdGVzdHB5LnB5CisrKyBiL1BDL3Rlc3RweS5weQpAQCAtMjYsNSArMjYsNSBAQAogICAgICAgICAgICAgIyBBZGQgdGhlICJ0ZXN0IiBkaXJlY3RvcnkgdG8gUFlUSE9OUEFUSC4KICAgICAgICAgICAgIHN5cy5wYXRoID0gc3lzLnBhdGggKyBbdGVzdF0KIAotaW1wb3J0IHJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KLXJlZ3J0ZXN0Lm1haW4oKQoraW1wb3J0IGxpYnJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KK2xpYnJlZ3J0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCBmMDhkOWE0Li45NTI0ODM4IDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtNTQ5LDcgKzU0OSw3IEBACiAgICAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JELCAxKTsKLSAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICB9CkBAIC01NjMsNiArNTYzLDI0IEBACiAgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JEKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgIVB5TG9uZ19DaGVjayh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRDY0LCAxKTsKKyAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IHNpemVvZihEV09SRDY0KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCB6ZXJvID0gMDsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZ6ZXJvLCBzaXplb2YoRFdPUkQ2NCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCBkID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JENjQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgogICAgICAgICAgICAgewpAQCAtNjE5LDcgKzYzNyw3IEBACiAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gc2l6ZSArIDI7CiAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgIH0KQEAgLTY2NSw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKGNoYXIsIHZpZXcubGVuKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTY5MCw3ICs3MDgsMTMgQEAKICAgICAgICAgICAgIGlmIChyZXREYXRhU2l6ZSA9PSAwKQogICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKDApOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCooaW50ICopcmV0RGF0YUJ1Zik7CisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKihEV09SRCAqKXJldERhdGFCdWYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVHX1FXT1JEOgorICAgICAgICAgICAgaWYgKHJldERhdGFTaXplID09IDApCisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKDApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKERXT1JENjQgKilyZXREYXRhQnVmKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgpAQCAtMTU5OSw3ICsxNjIzLDcgQEAKICAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOgogICAgICAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLgogICAgICAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLgotICAgICAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkQKICAgICAgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LgogICAgICAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsCkBAIC0xNjA5LDYgKzE2MzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlcwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LgogICAgICAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCisgICAgICAgIFJFR19RV09SRCAtLSBBIDY0LWJpdCBudW1iZXIuCisgICAgICAgIFJFR19RV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfUVdPUkQuCiAgICAgICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgogICAgICAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgogICAgIHZhbHVlOiBvYmplY3QKQEAgLTE2MzEsNyArMTY1Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2lucmVnX1NldFZhbHVlRXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc2VydmVkLCBEV09SRCB0eXBlLCBQeU9iamVjdCAqdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD1mMWIxNmNiY2MzZWQ0MTAxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD05MDBhOWUzOTkwYmZiMTk2XSovCiB7CiAgICAgQllURSAqZGF0YTsKICAgICBEV09SRCBsZW47CkBAIC0xOTE4LDYgKzE5NDQsOCBAQAogICAgIEFERF9JTlQoUkVHX0RXT1JEKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9MSVRUTEVfRU5ESUFOKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9CSUdfRU5ESUFOKTsKKyAgICBBRERfSU5UKFJFR19RV09SRCk7CisgICAgQUREX0lOVChSRUdfUVdPUkRfTElUVExFX0VORElBTik7CiAgICAgQUREX0lOVChSRUdfTElOSyk7CiAgICAgQUREX0lOVChSRUdfTVVMVElfU1opOwogICAgIEFERF9JTlQoUkVHX1JFU09VUkNFX0xJU1QpOwpkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggNmI3OWQyMy4uN2ZlZWJjYiAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC01Miw3ICs1Miw3IEBACiAiU05EX05PV0FJVCAtIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgc291bmQgZHJpdmVyIGlzIGJ1c3lcbiIgLy8gV2l0aG91dCBhbnkgZXJyb3JzCiAiXG4iCiAiQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIE1ha2UgYSBiZWVwIHRocm91Z2ggdGhlIFBDIHNwZWFrZXIuXG4iCi0iTWVzc2FnZUJlZXAoeCkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CisiTWVzc2FnZUJlZXAodHlwZSkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CiAKIC8qW2NsaW5pYyBpbnB1dF0KIG1vZHVsZSB3aW5zb3VuZApAQCAtNjQsMzIgKzY0LDU4IEBACiAvKltjbGluaWMgaW5wdXRdCiB3aW5zb3VuZC5QbGF5U291bmQKIAotICAgIHNvdW5kOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgc291bmQ6IG9iamVjdAogICAgICAgICBUaGUgc291bmQgdG8gcGxheTsgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS4KICAgICBmbGFnczogaW50CiAgICAgICAgIEZsYWcgdmFsdWVzLCBvcmVkIHRvZ2V0aGVyLiAgU2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLgotICAgIC8KIAogQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzI0YjNhMmI0MzY4Mzc4IGlucHV0PTM0MTFiMWI3YzFmMzZkOTNdKi8KK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ5YTBmZDE2YTM3MmViZWIgaW5wdXQ9YzYzZTFmMmQ4NDhkYTJmMl0qLwogewogICAgIGludCBvazsKKyAgICB3Y2hhcl90ICp3c291bmQ7CisgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7Ci0gICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KLSAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvdW5kID09IFB5X05vbmUpIHsKKyAgICAgICAgd3NvdW5kID0gTlVMTDsKKyAgICB9IGVsc2UgaWYgKGZsYWdzICYgU05EX01FTU9SWSkgeworICAgICAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMpIHsKKyAgICAgICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KKyAgICAgICAgICAgICAgICBwcmV2ZW50IFNORF9MT09QIGZyb20gbWVtb3J5LiAqLworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc291bmQsICZ2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3NvdW5kID0gKHdjaGFyX3QgKil2aWV3LmJ1ZjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzb3VuZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIidzb3VuZCcgbXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc291bmQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdzb3VuZCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHNvdW5kLCBOVUxMKTsKKyAgICAgICAgaWYgKHdzb3VuZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG9rID0gUGxheVNvdW5kVyhzb3VuZCwgTlVMTCwgZmxhZ3MpOworICAgIG9rID0gUGxheVNvdW5kVyh3c291bmQsIE5VTEwsIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmICh2aWV3Lm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9IGVsc2UgaWYgKHNvdW5kICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c291bmQpOworICAgIH0KICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArMTMxLDEzIEBACiAgICAgICAgIE11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LgogICAgIGR1cmF0aW9uOiBpbnQKICAgICAgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuCi0gICAgLwogCiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTYyOGE5OWQyZGRmNzM3OThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTQwZTM2MGNmYTAwYTVjZjBdKi8KIHsKICAgICBCT09MIG9rOwogCkBAIC0xMzYsOCArMTYxLDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHdpbnNvdW5kLk1lc3NhZ2VCZWVwCiAKLSAgICB4OiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKLSAgICAvCisgICAgdHlwZTogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCiAKIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS4KIApAQCAtMTQ1LDEwICsxNjksMjAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWFkODllNGQ4ZDMwYTk1NyBpbnB1dD1hNzc2YzhhODVjOTg1M2Y2XSovCit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB0eXBlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEyMDg3NTQ1NTEyMTEyMWYgaW5wdXQ9ZGIxODVmNzQxYWUyMTQwMV0qLwogewotICAgIE1lc3NhZ2VCZWVwKHgpOworICAgIEJPT0wgb2s7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgb2sgPSBNZXNzYWdlQmVlcCh0eXBlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFvaykgeworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19SdW50aW1lRXJyb3IsIDApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qIGIvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjY2EwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2oKQEAgLTAsMCArMSw3NyBAQAor77u/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+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2x6bWEudmN4cHJvaiBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagppbmRleCAxZjA2OTZkYS4uN2VjMjY5MiAxMDA2NDQKLS0tIGEvUENidWlsZC9fbHptYS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagpAQCAtNjEsMTMgKzYxLDExIEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpc3JjL2xpYmx6bWEvYXBpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnV2luMzInIj4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+ZmFsc2U8L0ltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChPdXREaXIpL2xpYmx6bWEkKFB5RGVidWdFeHQpLmxpYjwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTgxLDggKzc5LDEyIEBACiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImxpYmx6bWEudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MTI3MjgyNTAtMTZlQy00ZGM2LTk0ZDctZTIxZGQ4ODk0N2Y4fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzUxY2VkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvagpAQCAtMCwwICsxLDgzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxSb290TmFtZXNwYWNlPl90ZXN0Y29uc29sZTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xfdGVzdGNvbnNvbGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMyNTEwMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDIyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RtdWx0aXBoYXNlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9wZ28uYmF0IGIvUENidWlsZC9idWlsZF9wZ28uYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzJjMzgyLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQGVjaG8gb2ZmDQotZWNoby5EZXByZWNhdGlvbldhcm5pbmc6DQotZWNoby4gICAgVGhpcyBzY3JpcHQgaXMgZGVwcmVjYXRlZCwgdXNlIGBidWlsZC5iYXQgLS1wZ29gIGluc3RlYWQuDQotZWNoby4NCi0NCi1jYWxsICIlfmRwMGJ1aWxkLmJhdCIgLS1wZ28gJSoNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0IGIvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAppbmRleCAxYzNjZGVlLi5hNTE4NWJlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CisrKyBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKQEAgLTU1LDExICs1NSwxMSBAQAogc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ6aXAyLTEuMC42DQogaWYgTk9UICIlSW5jbHVkZVNTTCUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgIG5hc20tMi4xMS4wNg0KIGlmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBvcGVuc3NsLTEuMC4yag0KLXNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGUtMy44LjExLjANCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGNsLWNvcmUtOC42LjQuMg0KLWlmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0ay04LjYuNC4yDQorc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZS0zLjE0LjIuMA0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0Y2wtY29yZS04LjYuNi4wDQoraWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRrLTguNi42LjANCiBpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGl4LTguNC4zLjYNCi1zZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHotNS4wLjUNCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHotNS4yLjINCiANCiBmb3IgJSVlIGluICglbGlicmFyaWVzJSkgZG8gKA0KICAgICBpZiBleGlzdCAlJWUgKA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qIGIvUENidWlsZC9saWJsem1hLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExZjliZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qCkBAIC0wLDAgKzEsMjE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTI3MjgyNTAtMTZFQy00REM2LTk0RDctRTIxREQ4ODk0N0Y4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+bGlibHptYTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz50cnVlPC9TdXBwb3J0UEdPPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO0hBVkVfQ09ORklHX0g7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcil3aW5kb3dzOyQobHptYURpcilzcmMvbGlibHptYS9jb21tb247JChsem1hRGlyKXNyYy9jb21tb247JChsem1hRGlyKXNyYy9saWJsem1hL2FwaTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvY2hlY2s7JChsem1hRGlyKXNyYy9saWJsem1hL2RlbHRhOyQobHptYURpcilzcmMvbGlibHptYS9sejskKGx6bWFEaXIpc3JjL2xpYmx6bWEvbHptYTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvcmFuZ2Vjb2RlcjskKGx6bWFEaXIpc3JjL2xpYmx6bWEvc2ltcGxlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY3B1Y29yZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9waHlzbWVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY2hlY2suYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl9mYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF9mYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xzaGEyNTYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhbG9uZV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGF1dG9fZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19idWZmZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfaGVhZGVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfaGVhZGVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfdXRpbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxjb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2RlY29kZXJfbWVtdXNhZ2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZW5jb2Rlcl9tZW11c2FnZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X3ByZXNldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2ZsYWdzX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2ZsYWdzX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caGFyZHdhcmVfY3B1dGhyZWFkcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxoYXJkd2FyZV9waHlzbWVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9oYXNoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG91dHF1ZXVlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9idWZmZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2VuY29kZXJfbXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2NvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblx2bGlfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblx2bGlfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblx2bGlfc2l6ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2NvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxmYXN0cG9zX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX29wdGltdW1fZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX29wdGltdW1fbm9ybWFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfcHJlc2V0cy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlcl9tZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccHJpY2VfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcYXJtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGFybXRodW1iLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGlhNjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVccG93ZXJwYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc3BhcmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVceDg2LmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cbXl0aHJlYWQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHN5c2RlZnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jcHVjb3Jlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2ludGVnZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9waHlzbWVtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxiYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmNqLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmxvY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxjaGVjay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGNvbnRhaW5lci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGRlbHRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcZmlsdGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaGFyZHdhcmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxpbmRleC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGluZGV4X2hhc2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxsem1hMTIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxzdHJlYW1fZmxhZ3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVx2ZXJzaW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcdmxpLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY2hlY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZV9iZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlX2xlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGVfYmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF90YWJsZV9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyY19tYWNyb3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19idWZmZXJfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfcHJlc2V0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxtZW1jbXBsZW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cb3V0cXVldWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfcHJpdmF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcZmFzdHBvcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfcHJpdmF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlcl9oYXNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlcl9oYXNoX3RhYmxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxwcmljZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxyYW5nZV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxyYW5nZV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfcHJpdmF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXdpbmRvd3NcY29uZmlnLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9vcGVuc3NsLnByb3BzIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCmluZGV4IGUzNWMwZDkuLjBkZTRlNDMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvb3BlbnNzbC5wcm9wcworKysgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKQEAgLTE5LDYgKzE5LDcgQEAKICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9USFJFQURTIiAvPgogICAgIDwhLS0gPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfU1lTTkFNRV9XSU4zMiIgLz4gLS0+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfSUEzMl9TU0UyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9HRjJtIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEExX0FTTSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMjU2X0FTTSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBNTEyX0FTTSIgLz4KQEAgLTM4LDcgKzM5LDYgQEAKICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORSIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj4KLSAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fR0YybSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fUEFSVF9XT1JEUyIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fTU9OVCIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iUk1EMTYwX0FTTSIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5wcm9qIGIvUENidWlsZC9wY2J1aWxkLnByb2oKaW5kZXggYzMyMDQzNC4uZTBlNmU5MyAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnByb2oKKysrIGIvUENidWlsZC9wY2J1aWxkLnByb2oKQEAgLTUxLDcgKzUxLDcgQEAKICAgICA8IS0tIF9mcmVlemVfaW1wb3J0bGliIC0tPgogICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiAvPgogICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgLS0+Ci0gICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlcztfZGVjaW1hbDtfZWxlbWVudHRyZWU7X21zaTtfbXVsdGlwcm9jZXNzaW5nO19vdmVybGFwcGVkO3B5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kIiAvPgorICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9Il9hc3luY2lvO19jdHlwZXM7X2RlY2ltYWw7X2VsZW1lbnR0cmVlO19tc2k7X211bHRpcHJvY2Vzc2luZztfb3ZlcmxhcHBlZDtweWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZCIgLz4KICAgICA8IS0tIEV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgcmVxdWlyZSBleHRlcm5hbCBzb3VyY2VzIC0tPgogICAgIDxFeHRlcm5hbE1vZHVsZXMgSW5jbHVkZT0iX2J6MjtfbHptYTtfc3FsaXRlMyIgLz4KICAgICA8IS0tIF9zc2wgd2lsbCBidWlsZCBfc29ja2V0IGFzIHdlbGwsIHdoaWNoIG1heSBjYXVzZSBjb25mbGljdHMgaW4gcGFyYWxsZWwgYnVpbGRzIC0tPgpAQCAtNjEsNyArNjEsNyBAQAogICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9IkAoRXh0ZXJuYWxNb2R1bGVzLT4nJShJZGVudGl0eSknKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVFeHRlcm5hbHMpIiAvPgogICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKEV4dGVuc2lvbk1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZW5zaW9ucykiIC8+CiAgICAgPCEtLSBUZXN0IG1vZHVsZXMgLS0+Ci0gICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Il9jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGNhcGk7X3Rlc3RlbWJlZDtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZSIgLz4KKyAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlc190ZXN0O190ZXN0YnVmZmVyO190ZXN0Y2FwaTtfdGVzdGVtYmVkO190ZXN0aW1wb3J0bXVsdGlwbGU7X3Rlc3RtdWx0aXBoYXNlO190ZXN0Y29uc29sZSIgLz4KICAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0ieHhsaW1pdGVkIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnUmVsZWFzZSciIC8+CiAgICAgPFByb2plY3RzIEluY2x1ZGU9IkAoVGVzdE1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlVGVzdHMpIj4KICAgICAgIDwhLS0gRGlzYWJsZSBwYXJhbGxlbCBidWlsZCBmb3IgdGVzdCBtb2R1bGVzIC0tPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggNDJhNGQyYi4uMGU2NTgxMSAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC05Miw2ICs5MiwxMCBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlzaGVsbGV4dCIsICJweXNoZWxsZXh0LnZjeHByb2oiLCAiezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0iDQogRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3Rjb25zb2xlIiwgIl90ZXN0Y29uc29sZS52Y3hwcm9qIiwgIntCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9hc3luY2lvIiwgIl9hc3luY2lvLnZjeHByb2oiLCAiezM4NEMyMjRBLTc0NzQtNDc2RS1BMDFCLTc1MEVBN0RFOTE4Q30iDQorRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KIAkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KQEAgLTcwOCw2ICs3MTIsMjIgQEAKIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAppbmRleCAxYmU3M2U2Li4yZjQxYWU4IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAorKysgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdApAQCAtMywxMCArMywxMCBAQAogICBpZiAiJTEiIEVRVSAiRGVidWciICgNCiAgICAgc2hpZnQNCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzVfZC5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNl9kLmRsbCBleGl0IDENCiAgICkgRUxTRSAoDQogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlDQotICAgIGlmIG5vdCBleGlzdCBweXRob24zNS5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNi5kbGwgZXhpdCAxDQogICApDQogKQ0KICVIT1NUX1BZVEhPTiUgIiV+ZHAwcHJlcGFyZV9zc2wucHkiICUxDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwppbmRleCBkMWFjOTk4Li43MDEyMTcwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcworKysgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpAQCAtNyw3ICs3LDYgQEAKICAgICA8T3V0RGlyIENvbmRpdGlvbj0iIUhhc1RyYWlsaW5nU2xhc2goJChPdXREaXIpKSI+JChPdXREaXIpXDwvT3V0RGlyPgogICAgIDxQeV9JbnREaXIgQ29uZGl0aW9uPSInJChQeV9JbnREaXIpJyA9PSAnJyI+JChNU0J1aWxkVGhpc0ZpbGVEaXJlY3Rvcnkpb2JqXDwvUHlfSW50RGlyPgogICAgIDxJbnREaXI+JChQeV9JbnREaXIpXCQoQXJjaE5hbWUpXyQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfUEdPXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoVGFyZ2V0TmFtZSknID09ICcnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZT4kKFRhcmdldE5hbWUpJChQeURlYnVnRXh0KTwvVGFyZ2V0TmFtZT4KICAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KQEAgLTE0OCwxMSArMTQ3LDEzIEBACiAgICAgICAgICAgICAgVGFyZ2V0cz0iQ2xlYW5BbGwiIC8+CiAgIDwvVGFyZ2V0PgogCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4KLSAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iJyQoU2lnblRvb2xQYXRoKScgPT0gJycgb3IgIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDgxKVxiaW5ceDg2XHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290KVxiaW5ceDg2XHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxNaWNyb3NvZnQgU0RLc1xXaW5kb3dzXHY3LjFBQEluc3RhbGxhdGlvbkZvbGRlcilcQmluXHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxfU2lnbkNvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+IiQoU2lnblRvb2xQYXRoKSIgc2lnbiAvcSAvbiAiJChTaWduaW5nQ2VydGlmaWNhdGUpIiAvZmQgc2hhMjU2IC90IGh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltZXN0YW1wLmRsbCAvZCAiUHl0aG9uICQoUHl0aG9uVmVyc2lvbikiPC9fU2lnbkNvbW1hbmQ+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iJyQoU2RrQmluUGF0aCknID09ICcnIG9yICFFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290MTApXGJpblx4ODY8L1Nka0JpblBhdGg+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDgxKVxiaW5ceDg2PC9TZGtCaW5QYXRoPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3QpXGJpblx4ODY8L1Nka0JpblBhdGg+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcTWljcm9zb2Z0IFNES3NcV2luZG93c1x2Ny4xQUBJbnN0YWxsYXRpb25Gb2xkZXIpXEJpblw8L1Nka0JpblBhdGg+CisgICAgPF9TaWduQ29tbWFuZCBDb25kaXRpb249IkV4aXN0cygkKFNka0JpblBhdGgpKSBhbmQgJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4iJChTZGtCaW5QYXRoKVxzaWdudG9vbC5leGUiIHNpZ24gL3EgL24gIiQoU2lnbmluZ0NlcnRpZmljYXRlKSIgL2ZkIHNoYTI1NiAvdCBodHRwOi8vdGltZXN0YW1wLnZlcmlzaWduLmNvbS9zY3JpcHRzL3RpbWVzdGFtcC5kbGwgL2QgIlB5dGhvbiAkKFB5dGhvblZlcnNpb24pIjwvX1NpZ25Db21tYW5kPgorICAgIDxfTWFrZUNhdENvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiIkKFNka0JpblBhdGgpXG1ha2VjYXQuZXhlIjwvX01ha2VDYXRDb21tYW5kPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIAogICA8VGFyZ2V0IE5hbWU9Il9TaWduQnVpbGQiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCIgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyBhbmQgJChTdXBwb3J0U2lnbmluZykiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24ucHJvcHMgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwppbmRleCAxNTUzNzMxLi5kZGU5NGY3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcworKysgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwpAQCAtMjUsNyArMjUsNiBAQAogICAgIC0tPgogICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJycgYW5kICQoUGxhdGZvcm0pID09ICd4NjQnIj5hbWQ2NDwvQXJjaE5hbWU+CiAgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyI+d2luMzI8L0FyY2hOYW1lPgotICAgIDxBcmNoTmFtZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKEFyY2hOYW1lKS1wZ288L0FyY2hOYW1lPgogICAgIAogICAgIDwhLS0gUm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkgLS0+CiAgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IickKFB5U291cmNlUGF0aCknID09ICcnIj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKCQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwuLlwpKTwvUHlTb3VyY2VQYXRoPgpAQCAtNDMsOSArNDIsOSBAQAogICAgIAogICAgIDwhLS0gRGlyZWN0b3JpZXMgb2YgZXh0ZXJuYWwgcHJvamVjdHMuIHRjbHRrIGlzIGhhbmRsZWQgaW4gdGNsdGsucHJvcHMgLS0+CiAgICAgPEV4dGVybmFsc0Rpcj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKGAkKFB5U291cmNlUGF0aClleHRlcm5hbHNcYCkpPC9FeHRlcm5hbHNEaXI+Ci0gICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuOC4xMS4wXDwvc3FsaXRlM0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy4xNC4yLjBcPC9zcWxpdGUzRGlyPgogICAgIDxiejJEaXI+JChFeHRlcm5hbHNEaXIpYnppcDItMS4wLjZcPC9iejJEaXI+Ci0gICAgPGx6bWFEaXI+JChFeHRlcm5hbHNEaXIpeHotNS4wLjVcPC9sem1hRGlyPgorICAgIDxsem1hRGlyPiQoRXh0ZXJuYWxzRGlyKXh6LTUuMi4yXDwvbHptYURpcj4KICAgICA8b3BlbnNzbERpcj4kKEV4dGVybmFsc0RpcilvcGVuc3NsLTEuMC4yalw8L29wZW5zc2xEaXI+CiAgICAgPG9wZW5zc2xJbmNsdWRlRGlyPiQob3BlbnNzbERpcilpbmNsdWRlMzI8L29wZW5zc2xJbmNsdWRlRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpciBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJ2FtZDY0JyI+JChvcGVuc3NsRGlyKWluY2x1ZGU2NDwvb3BlbnNzbEluY2x1ZGVEaXI+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCmluZGV4IGU1ZTk2YWQuLjk2M2RhODkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCkBAIC0xLDQgKzEsNCBAQAot77u/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+CkBAIC00MTYsNCArNDIzLDQgQEAKICAgPFRhcmdldCBOYW1lPSJfV2FybkFib3V0VG9vbHNldCIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSAhPSAndjE0MCciPgogICAgIDxXYXJuaW5nIFRleHQ9IlRvb2xzZXQgJChQbGF0Zm9ybVRvb2xzZXQpIGlzIG5vdCB1c2VkIGZvciBvZmZpY2lhbCBidWlsZHMuIFlvdXIgYnVpbGQgbWF5IGhhdmUgZXJyb3JzIG9yIGluY29tcGF0aWJpbGl0aWVzLiIgLz4KICAgPC9UYXJnZXQ+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODM3YjczNi4uNzYyMjEwZCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJJbmNsdWRlIj4KQEAgLTE3Nyw2ICsxNzcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Ntb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQyMCw2ICs0MjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cd29yZGNvZGVfaGVscGVycy5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00NDAsOSArNDQ2LDIxIEBACiAgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYXN5bmNpb21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UybW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UyYl9pbXBsLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2Uyc19pbXBsLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ3Niw2ICs0OTQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zaGEzXHNoYTNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTg3LDYgKzYwOCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x3aW5jb25zb2xlaW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05ODAsNCArMTAwNCw0IEBACiAgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qIGIvUENidWlsZC9weXRob253LnZjeHByb2oKaW5kZXggY2FlZDFlOC4uZTQwZjY2YyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob253LnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2oKQEAgLTYyLDcgKzYyLDcgQEAKICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob253X2V4ZS5yYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xXaW5NYWluLmMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3JlYWRtZS50eHQgYi9QQ2J1aWxkL3JlYWRtZS50eHQKaW5kZXggMjQ2MjAxMi4uYzA0YmE0ZSAxMDA2NDQKLS0tIGEvUENidWlsZC9yZWFkbWUudHh0CisrKyBiL1BDYnVpbGQvcmVhZG1lLnR4dApAQCAtNDgsNyArNDgsNyBAQAogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIHdpdGggZXh0cmEgZGVidWdnaW5nIGNhcGFiaWxpdGllcywgZXF1aXZhbGVudA0KICAgICB0byB1c2luZyAuL2NvbmZpZ3VyZSAtLXdpdGgtcHlkZWJ1ZyBvbiBVTklYLiAgQWxsIGJpbmFyaWVzIGJ1aWx0DQogICAgIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiBoYXZlICJfZCIgYWRkZWQgdG8gdGhlaXIgbmFtZToNCi0gICAgcHl0aG9uMzVfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uICBCb3RoIHRoZQ0KKyAgICBweXRob24zNl9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQogICAgIGJ1aWxkIGFuZCBydCAocnVuIHRlc3QpIGJhdGNoIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFjY2VwdCBhIC1kDQogICAgIG9wdGlvbiBmb3IgZGVidWcgYnVpbGRzLiAgSWYgeW91IGFyZSBidWlsZGluZyBQeXRob24gdG8gaGVscCB3aXRoDQogICAgIGRldmVsb3BtZW50IG9mIENQeXRob24sIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHVzZSB0aGlzIGNvbmZpZ3VyYXRpb24uDQpAQCAtMjA0LDExICsyMDQsMTEgQEAKICAgICBmdW5jdGlvbmFsaXR5IHRvIF9zc2wgb3IgX2hhc2hsaWIuIFRoZXkgd2lsbCBub3QgY2xlYW4gdXAgdGhlaXIgb3V0cHV0DQogICAgIHdpdGggdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IENsZWFuQWxsIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuDQogX3NxbGl0ZTMNCi0gICAgV3JhcHMgU1FMaXRlIDMuOC4xMS4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQorICAgIFdyYXBzIFNRTGl0ZSAzLjE0LjIuMCwgd2hpY2ggaXMgaXRzZWxmIGJ1aWx0IGJ5IHNxbGl0ZTMudmN4cHJvag0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8NCiBfdGtpbnRlcg0KLSAgICBXcmFwcyB2ZXJzaW9uIDguNi40IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KKyAgICBXcmFwcyB2ZXJzaW9uIDguNi42IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cudGNsLnRrLw0KIA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcnQuYmF0IGIvUENidWlsZC9ydC5iYXQKaW5kZXggMmQ5M2I4MC4uN2Q0ZDA3MSAxMDA2NDQKLS0tIGEvUENidWlsZC9ydC5iYXQKKysrIGIvUENidWlsZC9ydC5iYXQKQEAgLTQyLDcgKzQyLDcgQEAKIGlmIE5PVCAiJTEiPT0iIiAoc2V0IHJlZ3J0ZXN0YXJncz0lcmVncnRlc3RhcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQogc2V0IGV4ZT0lcHJlZml4JXB5dGhvbiVzdWZmaXglLmV4ZQ0KLXNldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtRSAtYmIgIiVwY2J1aWxkJS4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5IiAlcmVncnRlc3RhcmdzJQ0KK3NldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtRSAtYmIgLW0gdGVzdCAlcmVncnRlc3RhcmdzJQ0KIGlmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQ0KIA0KIGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKaW5kZXggYzg0MWM1YS4uNGY1YjE5NiAxMDA2NDQKLS0tIGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKKysrIGIvUENidWlsZC9zcWxpdGUzLnZjeHByb2oKQEAgLTY2LDcgKzY2LDcgQEAKICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0VOQUJMRV9GVFM0O1NRTElURV9FTkFCTEVfRlRTNTtTUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgICA8V2FybmluZ0xldmVsPkxldmVsMTwvV2FybmluZ0xldmVsPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxSZXNvdXJjZUNvbXBpbGU+CkBAIC04Niw0ICs4Niw0IEBACiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC90Y2x0ay5wcm9wcyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKaW5kZXggMTFkYmZmYi4uNTdiYjk4YSAxMDA2NDQKLS0tIGEvUENidWlsZC90Y2x0ay5wcm9wcworKysgYi9QQ2J1aWxkL3RjbHRrLnByb3BzCkBAIC00LDggKzQsOCBAQAogICA8UHJvcGVydHlHcm91cD4KICAgICA8VGNsTWFqb3JWZXJzaW9uPjg8L1RjbE1ham9yVmVyc2lvbj4KICAgICA8VGNsTWlub3JWZXJzaW9uPjY8L1RjbE1pbm9yVmVyc2lvbj4KLSAgICA8VGNsUGF0Y2hMZXZlbD40PC9UY2xQYXRjaExldmVsPgotICAgIDxUY2xSZXZpc2lvbj4yPC9UY2xSZXZpc2lvbj4KKyAgICA8VGNsUGF0Y2hMZXZlbD42PC9UY2xQYXRjaExldmVsPgorICAgIDxUY2xSZXZpc2lvbj4wPC9UY2xSZXZpc2lvbj4KICAgICA8VGtNYWpvclZlcnNpb24+JChUY2xNYWpvclZlcnNpb24pPC9Ua01ham9yVmVyc2lvbj4KICAgICA8VGtNaW5vclZlcnNpb24+JChUY2xNaW5vclZlcnNpb24pPC9Ua01pbm9yVmVyc2lvbj4KICAgICA8VGtQYXRjaExldmVsPiQoVGNsUGF0Y2hMZXZlbCk8L1RrUGF0Y2hMZXZlbD4KQEAgLTQyLDQgKzQyLDQgQEAKICAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgPT0gJ3YxMTAnIj4kKEJ1aWxkRGlyVG9wKV9WQzExPC9CdWlsZERpclRvcD4KICAgICA8QnVpbGREaXJUb3AgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgPT0gJ3YxMDAnIj4kKEJ1aWxkRGlyVG9wKV9WQzEwPC9CdWlsZERpclRvcD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ogYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCmluZGV4IDAxNDRmYTkuLjlkYmRjNzcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagpAQCAtNjIsNyArNjIsNyBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA1MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk7UHlfTElNSVRFRF9BUEk9MHgwMzA2MDAwMDwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgpkaWZmIC0tZ2l0IGEvUGFyc2VyL1B5dGhvbi5hc2RsIGIvUGFyc2VyL1B5dGhvbi5hc2RsCmluZGV4IGNkMDgzMmQuLmY0NzBhZDEgMTAwNjQ0Ci0tLSBhL1BhcnNlci9QeXRob24uYXNkbAorKysgYi9QYXJzZXIvUHl0aG9uLmFzZGwKQEAgLTEsNCArMSw4IEBACi0tLSBBU0RMJ3Mgc2l4IGJ1aWx0aW4gdHlwZXMgYXJlIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0LCBzaW5nbGV0b24KKy0tIEFTREwncyA3IGJ1aWx0aW4gdHlwZXMgYXJlOgorLS0gaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QsIHNpbmdsZXRvbiwgY29uc3RhbnQKKy0tCistLSBzaW5nbGV0b246IE5vbmUsIFRydWUgb3IgRmFsc2UKKy0tIGNvbnN0YW50IGNhbiBiZSBOb25lLCB3aGVyZWFzIE5vbmUgbWVhbnMgIm5vIHZhbHVlIiBmb3Igb2JqZWN0LgogCiBtb2R1bGUgUHl0aG9uCiB7CkBAIC0yNCw2ICsyOCw4IEBACiAgICAgICAgICAgfCBEZWxldGUoZXhwciogdGFyZ2V0cykKICAgICAgICAgICB8IEFzc2lnbihleHByKiB0YXJnZXRzLCBleHByIHZhbHVlKQogICAgICAgICAgIHwgQXVnQXNzaWduKGV4cHIgdGFyZ2V0LCBvcGVyYXRvciBvcCwgZXhwciB2YWx1ZSkKKyAgICAgICAgICAtLSAnc2ltcGxlJyBpbmRpY2F0ZXMgdGhhdCB3ZSBhbm5vdGF0ZSBzaW1wbGUgbmFtZSB3aXRob3V0IHBhcmVucworICAgICAgICAgIHwgQW5uQXNzaWduKGV4cHIgdGFyZ2V0LCBleHByIGFubm90YXRpb24sIGV4cHI/IHZhbHVlLCBpbnQgc2ltcGxlKQogCiAgICAgICAgICAgLS0gdXNlICdvcmVsc2UnIGJlY2F1c2UgZWxzZSBpcyBhIGtleXdvcmQgaW4gdGFyZ2V0IGxhbmd1YWdlcwogICAgICAgICAgIHwgRm9yKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKQEAgLTcxLDkgKzc3LDEyIEBACiAgICAgICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcykKICAgICAgICAgIHwgTnVtKG9iamVjdCBuKSAtLSBhIG51bWJlciBhcyBhIFB5T2JqZWN0LgogICAgICAgICAgfCBTdHIoc3RyaW5nIHMpIC0tIG5lZWQgdG8gc3BlY2lmeSByYXcsIHVuaWNvZGUsIGV0Yz8KKyAgICAgICAgIHwgRm9ybWF0dGVkVmFsdWUoZXhwciB2YWx1ZSwgaW50PyBjb252ZXJzaW9uLCBleHByPyBmb3JtYXRfc3BlYykKKyAgICAgICAgIHwgSm9pbmVkU3RyKGV4cHIqIHZhbHVlcykKICAgICAgICAgIHwgQnl0ZXMoYnl0ZXMgcykKICAgICAgICAgIHwgTmFtZUNvbnN0YW50KHNpbmdsZXRvbiB2YWx1ZSkKICAgICAgICAgIHwgRWxsaXBzaXMKKyAgICAgICAgIHwgQ29uc3RhbnQoY29uc3RhbnQgdmFsdWUpCiAKICAgICAgICAgIC0tIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYW4gYXBwZWFyIGluIGFzc2lnbm1lbnQgY29udGV4dAogICAgICAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQpAQCAtMTAxLDcgKzExMCw3IEBACiAKICAgICBjbXBvcCA9IEVxIHwgTm90RXEgfCBMdCB8IEx0RSB8IEd0IHwgR3RFIHwgSXMgfCBJc05vdCB8IEluIHwgTm90SW4KIAotICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzKQorICAgIGNvbXByZWhlbnNpb24gPSAoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgZXhwciogaWZzLCBpbnQgaXNfYXN5bmMpCiAKICAgICBleGNlcHRoYW5kbGVyID0gRXhjZXB0SGFuZGxlcihleHByPyB0eXBlLCBpZGVudGlmaWVyPyBuYW1lLCBzdG10KiBib2R5KQogICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsLnB5IGIvUGFyc2VyL2FzZGwucHkKaW5kZXggMTIxY2RhYi4uNjJmNWMxOSAxMDA2NDQKLS0tIGEvUGFyc2VyL2FzZGwucHkKKysrIGIvUGFyc2VyL2FzZGwucHkKQEAgLTMzLDcgKzMzLDggQEAKICMgU2VlIHRoZSBFQk5GIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWNhbCBjb25uZWN0aW9uCiAjIGJldHdlZW4gdGhlIHZhcmlvdXMgbm9kZSB0eXBlcy4KIAotYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nfQorYnVpbHRpbl90eXBlcyA9IHsnaWRlbnRpZmllcicsICdzdHJpbmcnLCAnYnl0ZXMnLCAnaW50JywgJ29iamVjdCcsICdzaW5nbGV0b24nLAorICAgICAgICAgICAgICAgICAnY29uc3RhbnQnfQogCiBjbGFzcyBBU1Q6CiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGxfYy5weSBiL1BhcnNlci9hc2RsX2MucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCBhYzlkMmI2Li43MjVkNzNiCi0tLSBhL1BhcnNlci9hc2RsX2MucHkKKysrIGIvUGFyc2VyL2FzZGxfYy5weQpAQCAtODQxLDYgKzg0MSw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopbzsKIH0KICNkZWZpbmUgYXN0Mm9ial9zaW5nbGV0b24gYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9jb25zdGFudCBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdApAQCAtODc4LDYgKzg3OSwxOSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfY29uc3RhbnQoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmIChvYmopIHsKKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIG9iaikgPCAwKSB7CisgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICB9CisgICAgKm91dCA9IG9iajsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2lkZW50aWZpZXIoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSAmJiBvYmogIT0gUHlfTm9uZSkgewpAQCAtOTEzLDcgKzkyNyw3IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGkgPSAoaW50KVB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICBpID0gX1B5TG9uZ19Bc0ludChvYmopOwogICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgICpvdXQgPSBpOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL2dyYW1tYXIuYyBiL1BhcnNlci9ncmFtbWFyLmMKaW5kZXggYjU5ODI5NC4uNzVmZDViOSAxMDA2NDQKLS0tIGEvUGFyc2VyL2dyYW1tYXIuYworKysgYi9QYXJzZXIvZ3JhbW1hci5jCkBAIC0yOCw2ICsyOCwyMyBAQAogICAgIHJldHVybiBnOwogfQogCit2b2lkCitmcmVlZ3JhbW1hcihncmFtbWFyICpnKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBnLT5nX25kZmFzOyBpKyspIHsKKyAgICAgICAgZnJlZShnLT5nX2RmYVtpXS5kX25hbWUpOworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGctPmdfZGZhW2ldLmRfbnN0YXRlczsgaisrKQorICAgICAgICAgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYVtpXS5kX3N0YXRlW2pdLnNfYXJjKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYVtpXS5kX3N0YXRlKTsKKyAgICB9CisgICAgUHlPYmplY3RfRlJFRShnLT5nX2RmYSk7CisgICAgZm9yIChpID0gMDsgaSA8IGctPmdfbGwubGxfbmxhYmVsczsgaSsrKQorICAgICAgICBmcmVlKGctPmdfbGwubGxfbGFiZWxbaV0ubGJfc3RyKTsKKyAgICBQeU9iamVjdF9GUkVFKGctPmdfbGwubGxfbGFiZWwpOworICAgIFB5T2JqZWN0X0ZSRUUoZyk7Cit9CisKIGRmYSAqCiBhZGRkZmEoZ3JhbW1hciAqZywgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC02Myw3ICs4MCw3IEBACiAgICAgcy0+c191cHBlciA9IDA7CiAgICAgcy0+c19hY2NlbCA9IE5VTEw7CiAgICAgcy0+c19hY2NlcHQgPSAwOwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKHMgLSBkLT5kX3N0YXRlLCBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChzIC0gZC0+ZF9zdGF0ZSwgaW50cHRyX3QsIGludCk7CiB9CiAKIHZvaWQKQEAgLTEwNSw3ICsxMjIsNyBAQAogICAgIGlmIChQeV9EZWJ1Z0ZsYWcpCiAgICAgICAgIHByaW50ZigiTGFiZWwgQCAlOHAsICVkOiAlc1xuIiwgbGwsIGxsLT5sbF9ubGFiZWxzLAogICAgICAgICAgICAgICAgUHlHcmFtbWFyX0xhYmVsUmVwcihsYikpOwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxiIC0gbGwtPmxsX2xhYmVsLCBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChsYiAtIGxsLT5sbF9sYWJlbCwgaW50cHRyX3QsIGludCk7CiB9CiAKIC8qIFNhbWUsIGJ1dCByYXRoZXIgZGllcyB0aGFuIGFkZHMgKi8KQEAgLTEyMiw3ICsxMzksMTMgQEAKICAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJMYWJlbCAlZC8nJXMnIG5vdCBmb3VuZFxuIiwgdHlwZSwgc3RyKTsKICAgICBQeV9GYXRhbEVycm9yKCJncmFtbWFyLmM6ZmluZGxhYmVsKCkiKTsKKworICAgIC8qIFB5X0ZhdGFsRXJyb3IoKSBpcyBkZWNsYXJlZCB3aXRoIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpLgorICAgICAgIEdDQyBlbWl0cyBhIHdhcm5pbmcgd2l0aG91dCAicmV0dXJuIDA7IiAoY29tcGlsZXIgYnVnISksIGJ1dCBDbGFuZyBpcworICAgICAgIHNtYXJ0ZXIgYW5kIGVtaXRzIGEgd2FybmluZyBvbiB0aGUgcmV0dXJuLi4uICovCisjaWZuZGVmIF9fY2xhbmdfXwogICAgIHJldHVybiAwOyAvKiBNYWtlIGdjYyAtV2FsbCBoYXBweSAqLworI2VuZGlmCiB9CiAKIC8qIEZvcndhcmQgKi8KZGlmZiAtLWdpdCBhL1BhcnNlci9teXJlYWRsaW5lLmMgYi9QYXJzZXIvbXlyZWFkbGluZS5jCmluZGV4IDI4YzdiNmQuLmU0MDk1MWMgMTAwNjQ0Ci0tLSBhL1BhcnNlci9teXJlYWRsaW5lLmMKKysrIGIvUGFyc2VyL215cmVhZGxpbmUuYwpAQCAtNDEsMTAgKzQxLDcgQEAKICAgICAgICAgICAgICh2b2lkKShQeU9TX0lucHV0SG9vaykoKTsKICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICBjbGVhcmVycihmcCk7Ci0gICAgICAgIGlmIChfUHlWZXJpZnlfZmQoZmlsZW5vKGZwKSkpCi0gICAgICAgICAgICBwID0gZmdldHMoYnVmLCBsZW4sIGZwKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcCA9IE5VTEw7CisgICAgICAgIHAgPSBmZ2V0cyhidWYsIGxlbiwgZnApOwogICAgICAgICBpZiAocCAhPSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIDA7IC8qIE5vIGVycm9yICovCiAgICAgICAgIGVyciA9IGVycm5vOwpAQCAtMTAxLDYgKzk4LDEwMCBAQAogICAgIC8qIE5PVFJFQUNIRUQgKi8KIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKy8qIFJlYWRsaW5lIGltcGxlbWVudGF0aW9uIHVzaW5nIFJlYWRDb25zb2xlVyAqLworCitleHRlcm4gY2hhciBfZ2V0X2NvbnNvbGVfdHlwZShIQU5ETEUgaGFuZGxlKTsKKworY2hhciAqCitfUHlPU19XaW5kb3dzQ29uc29sZVJlYWRsaW5lKEhBTkRMRSBoU3RkSW4pCit7CisgICAgc3RhdGljIHdjaGFyX3Qgd2J1Zl9sb2NhbFsxMDI0ICogMTZdOworICAgIGNvbnN0IERXT1JEIGNodW5rX3NpemUgPSAxMDI0OworCisgICAgRFdPUkQgbl9yZWFkLCB0b3RhbF9yZWFkLCB3YnVmbGVuLCB1OGxlbjsKKyAgICB3Y2hhcl90ICp3YnVmOworICAgIGNoYXIgKmJ1ZiA9IE5VTEw7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBuX3JlYWQgPSAwOworICAgIHRvdGFsX3JlYWQgPSAwOworICAgIHdidWYgPSB3YnVmX2xvY2FsOworICAgIHdidWZsZW4gPSBzaXplb2Yod2J1Zl9sb2NhbCkgLyBzaXplb2Yod2J1Zl9sb2NhbFswXSkgLSAxOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmICghUmVhZENvbnNvbGVXKGhTdGRJbiwgJndidWZbdG90YWxfcmVhZF0sIHdidWZsZW4gLSB0b3RhbF9yZWFkLCAmbl9yZWFkLCBOVUxMKSkgeworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5fcmVhZCA9PSAwKSB7CisgICAgICAgICAgICBpbnQgczsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBlcnIgPSAwOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdEV4KGhJbnRlcnJ1cHRFdmVudCwgMTAwLCBGQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgPT0gV0FJVF9PQkpFQ1RfMCkgeworICAgICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICAgICAgICAgIFB5RXZhbF9SZXN0b3JlVGhyZWFkKF9QeU9TX1JlYWRsaW5lVFN0YXRlKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHMgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICAgICAgICAgIFB5RXZhbF9TYXZlVGhyZWFkKCk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAocyA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG90YWxfcmVhZCArPSBuX3JlYWQ7CisgICAgICAgIGlmICh0b3RhbF9yZWFkID09IDAgfHwgd2J1Zlt0b3RhbF9yZWFkIC0gMV0gPT0gTCdcbicpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHdidWZsZW4gKz0gY2h1bmtfc2l6ZTsKKyAgICAgICAgaWYgKHdidWYgPT0gd2J1Zl9sb2NhbCkgeworICAgICAgICAgICAgd2J1Zlt0b3RhbF9yZWFkXSA9ICdcMCc7CisgICAgICAgICAgICB3YnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd01hbGxvYyh3YnVmbGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICh3YnVmKQorICAgICAgICAgICAgICAgIHdjc2NweV9zKHdidWYsIHdidWZsZW4sIHdidWZfbG9jYWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3UmVhbGxvYyh3YnVmLCB3YnVmbGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICB9CisKKyAgICBpZiAod2J1ZlswXSA9PSAnXHgxYScpIHsKKyAgICAgICAgYnVmID0gUHlNZW1fUmF3TWFsbG9jKDEpOworICAgICAgICBpZiAoYnVmKQorICAgICAgICAgICAgYnVmWzBdID0gJ1wwJzsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHU4bGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB0b3RhbF9yZWFkLCBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICBidWYgPSBQeU1lbV9SYXdNYWxsb2ModThsZW4gKyAxKTsKKyAgICB1OGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgdG90YWxfcmVhZCwgYnVmLCB1OGxlbiwgTlVMTCwgTlVMTCk7CisgICAgYnVmW3U4bGVuXSA9ICdcMCc7CisKK2V4aXQ6CisgICAgaWYgKHdidWYgIT0gd2J1Zl9sb2NhbCkKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKKworICAgIGlmIChlcnIpIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZChfUHlPU19SZWFkbGluZVRTdGF0ZSk7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBQeUV2YWxfU2F2ZVRocmVhZCgpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKK30KKworI2VuZGlmCisKIAogLyogUmVhZGxpbmUgaW1wbGVtZW50YXRpb24gdXNpbmcgZmdldHMoKSAqLwogCkBAIC0xMTAsNiArMjAxLDQ1IEBACiAgICAgc2l6ZV90IG47CiAgICAgY2hhciAqcCwgKnByOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICghUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyAmJiBzeXNfc3RkaW4gPT0gc3RkaW4pIHsKKyAgICAgICAgSEFORExFIGhTdGRJbiwgaFN0ZEVycjsKKworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGhTdGRJbiA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKHN5c19zdGRpbikpOworICAgICAgICBoU3RkRXJyID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8oc3RkZXJyKSk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisKKyAgICAgICAgaWYgKF9nZXRfY29uc29sZV90eXBlKGhTdGRJbikgPT0gJ3InKSB7CisgICAgICAgICAgICBmZmx1c2goc3lzX3N0ZG91dCk7CisgICAgICAgICAgICBpZiAocHJvbXB0KSB7CisgICAgICAgICAgICAgICAgaWYgKF9nZXRfY29uc29sZV90eXBlKGhTdGRFcnIpID09ICd3JykgeworICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICp3YnVmOworICAgICAgICAgICAgICAgICAgICBpbnQgd2xlbjsKKyAgICAgICAgICAgICAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgcHJvbXB0LCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdsZW4gJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICh3YnVmID0gUHlNZW1fUmF3TWFsbG9jKHdsZW4gKiBzaXplb2Yod2NoYXJfdCkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgcHJvbXB0LCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2J1Ziwgd2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2xlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIG47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb25zb2xlVyhoU3RkRXJyLCB3YnVmLCB3bGVuLCAmbiwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdidWYpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcyIsIHByb21wdCk7CisgICAgICAgICAgICAgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsZWFyZXJyKHN5c19zdGRpbik7CisgICAgICAgICAgICByZXR1cm4gX1B5T1NfV2luZG93c0NvbnNvbGVSZWFkbGluZShoU3RkSW4pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBuID0gMTAwOwogICAgIHAgPSAoY2hhciAqKVB5TWVtX1Jhd01hbGxvYyhuKTsKICAgICBpZiAocCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL25vZGUuYyBiL1BhcnNlci9ub2RlLmMKaW5kZXggMDAxMDMyNC4uMjQwZDI5MCAxMDA2NDQKLS0tIGEvUGFyc2VyL25vZGUuYworKysgYi9QYXJzZXIvbm9kZS5jCkBAIC05MSw3ICs5MSw3IEBACiAgICAgaWYgKGN1cnJlbnRfY2FwYWNpdHkgPCAwIHx8IHJlcXVpcmVkX2NhcGFjaXR5IDwgMCkKICAgICAgICAgcmV0dXJuIEVfT1ZFUkZMT1c7CiAgICAgaWYgKGN1cnJlbnRfY2FwYWNpdHkgPCByZXF1aXJlZF9jYXBhY2l0eSkgewotICAgICAgICBpZiAoKHNpemVfdClyZXF1aXJlZF9jYXBhY2l0eSA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKG5vZGUpKSB7CisgICAgICAgIGlmICgoc2l6ZV90KXJlcXVpcmVkX2NhcGFjaXR5ID4gU0laRV9NQVggLyBzaXplb2Yobm9kZSkpIHsKICAgICAgICAgICAgIHJldHVybiBFX05PTUVNOwogICAgICAgICB9CiAgICAgICAgIG4gPSBuMS0+bl9jaGlsZDsKZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXIuYyBiL1BhcnNlci9wYXJzZXIuYwppbmRleCA1NmVjNTE0Li40MTA3MmM0IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2VyLmMKKysrIGIvUGFyc2VyL3BhcnNlci5jCkBAIC0xNDAsMjEgKzE0MCwyMCBAQAogICAgIGludCBuID0gZy0+Z19sbC5sbF9ubGFiZWxzOwogCiAgICAgaWYgKHR5cGUgPT0gTkFNRSkgewotICAgICAgICBjb25zdCBjaGFyICpzID0gc3RyOwogICAgICAgICBsYWJlbCAqbCA9IGctPmdfbGwubGxfbGFiZWw7CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IgKGkgPSBuOyBpID4gMDsgaS0tLCBsKyspIHsKICAgICAgICAgICAgIGlmIChsLT5sYl90eXBlICE9IE5BTUUgfHwgbC0+bGJfc3RyID09IE5VTEwgfHwKLSAgICAgICAgICAgICAgICBsLT5sYl9zdHJbMF0gIT0gc1swXSB8fAotICAgICAgICAgICAgICAgIHN0cmNtcChsLT5sYl9zdHIsIHMpICE9IDApCisgICAgICAgICAgICAgICAgbC0+bGJfc3RyWzBdICE9IHN0clswXSB8fAorICAgICAgICAgICAgICAgIHN0cmNtcChsLT5sYl9zdHIsIHN0cikgIT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICNpZmRlZiBQWV9QQVJTRVJfUkVRVUlSRVNfRlVUVVJFX0tFWVdPUkQKICNpZiAwCiAgICAgICAgICAgICAvKiBMZWF2aW5nIHRoaXMgaW4gYXMgYW4gZXhhbXBsZSAqLwogICAgICAgICAgICAgaWYgKCEocHMtPnBfZmxhZ3MgJiBDT19GVVRVUkVfV0lUSF9TVEFURU1FTlQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNbMF0gPT0gJ3cnICYmIHN0cmNtcChzLCAid2l0aCIpID09IDApCisgICAgICAgICAgICAgICAgaWYgKHN0clswXSA9PSAndycgJiYgc3RyY21wKHN0ciwgIndpdGgiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogbm90IGEga2V5d29yZCB5ZXQgKi8KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzBdID09ICdhJyAmJiBzdHJjbXAocywgImFzIikgPT0gMCkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzdHJbMF0gPT0gJ2EnICYmIHN0cmNtcChzdHIsICJhcyIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBub3QgYSBrZXl3b3JkIHlldCAqLwogICAgICAgICAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2V0b2suYyBiL1BhcnNlci9wYXJzZXRvay5jCmluZGV4IDYyOWRlZTUuLjFmNDY3ZDYgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXRvay5jCisrKyBiL1BhcnNlci9wYXJzZXRvay5jCkBAIC0xNjEsMTAgKzE2MSwxMCBAQAogCiAjaWZkZWYgUFlfUEFSU0VSX1JFUVVJUkVTX0ZVVFVSRV9LRVlXT1JECiAjaWYgMAotc3RhdGljIGNoYXIgd2l0aF9tc2dbXSA9CitzdGF0aWMgY29uc3QgY2hhciB3aXRoX21zZ1tdID0KICIlczolZDogV2FybmluZzogJ3dpdGgnIHdpbGwgYmVjb21lIGEgcmVzZXJ2ZWQga2V5d29yZCBpbiBQeXRob24gMi42XG4iOwogCi1zdGF0aWMgY2hhciBhc19tc2dbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhc19tc2dbXSA9CiAiJXM6JWQ6IFdhcm5pbmc6ICdhcycgd2lsbCBiZWNvbWUgYSByZXNlcnZlZCBrZXl3b3JkIGluIFB5dGhvbiAyLjZcbiI7CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTUsNyArMjU1LDcgQEAKICNlbmRpZgogICAgICAgICBpZiAoYSA+PSB0b2stPmxpbmVfc3RhcnQpCiAgICAgICAgICAgICBjb2xfb2Zmc2V0ID0gUHlfU0FGRV9ET1dOQ0FTVChhIC0gdG9rLT5saW5lX3N0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaW50cHRyX3QsIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRwdHJfdCwgaW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY29sX29mZnNldCA9IC0xOwogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbi5jIGIvUGFyc2VyL3BnZW4uYwppbmRleCBmMzAzMWFlLi42NDUxYTFkIDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbi5jCisrKyBiL1BhcnNlci9wZ2VuLmMKQEAgLTExNyw2ICsxMTcsMTYgQEAKICAgICByZXR1cm4gZ3I7CiB9CiAKK3N0YXRpYyB2b2lkCitmcmVlbmZhZ3JhbW1hcihuZmFncmFtbWFyICpncikKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyLT5ncl9ubmZhczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoZ3ItPmdyX25mYVtpXS0+bmZfc3RhdGUpOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGdyLT5ncl9uZmEpOworICAgIFB5T2JqZWN0X0ZSRUUoZ3IpOworfQorCiBzdGF0aWMgbmZhICoKIGFkZG5mYShuZmFncmFtbWFyICpnciwgY2hhciAqbmFtZSkKIHsKQEAgLTEzNCw3ICsxNDQsNyBAQAogCiAjaWZkZWYgUHlfREVCVUcKIAotc3RhdGljIGNoYXIgUkVRTkZNVFtdID0gIm1ldGFjb21waWxlOiBsZXNzIHRoYW4gJWQgY2hpbGRyZW5cbiI7CitzdGF0aWMgY29uc3QgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKIAogI2RlZmluZSBSRVFOKGksIGNvdW50KSBkbyB7IFwKICAgICBpZiAoaSA8IGNvdW50KSB7IFwKQEAgLTM3OSw3ICszODksNyBAQAogCiAvKiBGb3J3YXJkICovCiBzdGF0aWMgdm9pZCBwcmludHNzZGZhKGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUsIGludCBuYml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY2hhciAqbXNnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY29uc3QgY2hhciAqbXNnKTsKIHN0YXRpYyB2b2lkIHNpbXBsaWZ5KGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUpOwogc3RhdGljIHZvaWQgY29udmVydChkZmEgKmQsIGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUpOwogCkBAIC00ODgsMTMgKzQ5OCwxNyBAQAogCiAgICAgY29udmVydChkLCB4eF9uc3RhdGVzLCB4eF9zdGF0ZSk7CiAKLSAgICAvKiBYWFggY2xlYW51cCAqLworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgeHhfbnN0YXRlczsgaSsrKSB7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgeHhfc3RhdGVbaV0uc3NfbmFyY3M7IGorKykKKyAgICAgICAgICAgIGRlbGJpdHNldCh4eF9zdGF0ZVtpXS5zc19hcmNbal0uc2FfYml0c2V0KTsKKyAgICAgICAgUHlPYmplY3RfRlJFRSh4eF9zdGF0ZVtpXS5zc19hcmMpOworICAgIH0KICAgICBQeU9iamVjdF9GUkVFKHh4X3N0YXRlKTsKIH0KIAogc3RhdGljIHZvaWQKIHByaW50c3NkZmEoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSwgaW50IG5iaXRzLAotICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjaGFyICptc2cpCisgICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBpbnQgaSwgaWJpdCwgaWFyYzsKICAgICBzc19zdGF0ZSAqeXk7CkBAIC02NjksNyArNjgzLDcgQEAKICAgICBnID0gbWFrZXRhYmxlcyhncik7CiAgICAgdHJhbnNsYXRlbGFiZWxzKGcpOwogICAgIGFkZGZpcnN0c2V0cyhnKTsKLSAgICBQeU9iamVjdF9GUkVFKGdyKTsKKyAgICBmcmVlbmZhZ3JhbW1hcihncik7CiAgICAgcmV0dXJuIGc7CiB9CiAKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VubWFpbi5jIGIvUGFyc2VyL3BnZW5tYWluLmMKaW5kZXggMGYwNTVkNi4uZTM4NjI0OCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW5tYWluLmMKKysrIGIvUGFyc2VyL3BnZW5tYWluLmMKQEAgLTI3LDcgKzI3LDcgQEAKIGludCBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWc7CiAKIC8qIEZvcndhcmQgKi8KLWdyYW1tYXIgKmdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpOworZ3JhbW1hciAqZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSk7CiAKIHZvaWQgUHlfRXhpdChpbnQpIF9QeV9OT19SRVRVUk47CiAKQEAgLTM3LDYgKzM3LDE1IEBACiAgICAgZXhpdChzdHMpOwogfQogCisjaWZkZWYgV0lUSF9USFJFQUQKKy8qIE5lZWRlZCBieSBvYm1hbGxvYy5jICovCitpbnQgUHlHSUxTdGF0ZV9DaGVjayh2b2lkKQoreyByZXR1cm4gMTsgfQorI2VuZGlmCisKK3ZvaWQgX1B5TWVtX0R1bXBUcmFjZWJhY2soaW50IGZkLCBjb25zdCB2b2lkICpwdHIpCit7fQorCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewpAQCAtNzEsMTIgKzgwLDEzIEBACiAgICAgICAgIHByaW50ZigiV3JpdGluZyAlcyAuLi5cbiIsIGdyYW1pbml0X2gpOwogICAgIHByaW50bm9udGVybWluYWxzKGcsIGZwKTsKICAgICBmY2xvc2UoZnApOworICAgIGZyZWVncmFtbWFyKGcpOwogICAgIFB5X0V4aXQoMCk7CiAgICAgcmV0dXJuIDA7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKIGdyYW1tYXIgKgotZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSkKK2dldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCiB7CiAgICAgRklMRSAqZnA7CiAgICAgbm9kZSAqbjsKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuYyBiL1BhcnNlci90b2tlbml6ZXIuYwppbmRleCA2MTJjYjIzLi44MzE3MjkzIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmMKKysrIGIvUGFyc2VyL3Rva2VuaXplci5jCkBAIC0yMDIsOCArMjAyLDggQEAKIH0KIAogCi1zdGF0aWMgY2hhciAqCi1nZXRfbm9ybWFsX25hbWUoY2hhciAqcykgICAgICAgIC8qIGZvciB1dGYtOCBhbmQgbGF0aW4tMSAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X25vcm1hbF9uYW1lKGNvbnN0IGNoYXIgKnMpICAvKiBmb3IgdXRmLTggYW5kIGxhdGluLTEgKi8KIHsKICAgICBjaGFyIGJ1ZlsxM107CiAgICAgaW50IGk7CkBAIC0yNjQsNyArMjY0LDcgQEAKIAogICAgICAgICAgICAgaWYgKGJlZ2luIDwgdCkgewogICAgICAgICAgICAgICAgIGNoYXIqIHIgPSBuZXdfc3RyaW5nKGJlZ2luLCB0IC0gYmVnaW4sIHRvayk7Ci0gICAgICAgICAgICAgICAgY2hhciogcTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBxOwogICAgICAgICAgICAgICAgIGlmICghcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgcSA9IGdldF9ub3JtYWxfbmFtZShyKTsKQEAgLTEzMzUsNiArMTMzNSwyOCBAQAogfQogI2VuZGlmCiAKK3N0YXRpYyBpbnQKK3Rva19kZWNpbWFsX3RhaWwoc3RydWN0IHRva19zdGF0ZSAqdG9rKQoreworICAgIGludCBjOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgaWYgKGMgIT0gJ18nKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIGlmICghaXNkaWdpdChjKSkgeworICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjOworfQorCiAvKiBHZXQgbmV4dCB0b2tlbiwgYWZ0ZXIgc3BhY2Ugc3RyaXBwaW5nIGV0Yy4gKi8KIAogc3RhdGljIGludApAQCAtMTM1NSwxNyArMTM3NywyMCBAQAogICAgICAgICB0b2stPmF0Ym9sID0gMDsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gJyAnKQorICAgICAgICAgICAgaWYgKGMgPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgY29sKyssIGFsdGNvbCsrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKSB7CiAgICAgICAgICAgICAgICAgY29sID0gKGNvbC90b2stPnRhYnNpemUgKyAxKSAqIHRvay0+dGFic2l6ZTsKICAgICAgICAgICAgICAgICBhbHRjb2wgPSAoYWx0Y29sL3Rvay0+YWx0dGFic2l6ZSArIDEpCiAgICAgICAgICAgICAgICAgICAgICogdG9rLT5hbHR0YWJzaXplOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXDAxNCcpIC8qIENvbnRyb2wtTCAoZm9ybWZlZWQpICovCisgICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMDE0JykgIHsvKiBDb250cm9sLUwgKGZvcm1mZWVkKSAqLwogICAgICAgICAgICAgICAgIGNvbCA9IGFsdGNvbCA9IDA7IC8qIEZvciBFbWFjcyB1c2VycyAqLwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICBpZiAoYyA9PSAnIycgfHwgYyA9PSAnXG4nKSB7CkBAIC0xMzc0LDEwICsxMzk5LDEyIEBACiAgICAgICAgICAgICAgICBub3QgcGFzc2VkIHRvIHRoZSBwYXJzZXIgYXMgTkVXTElORSB0b2tlbnMsCiAgICAgICAgICAgICAgICBleGNlcHQgKnRvdGFsbHkqIGVtcHR5IGxpbmVzIGluIGludGVyYWN0aXZlCiAgICAgICAgICAgICAgICBtb2RlLCB3aGljaCBzaWduYWwgdGhlIGVuZCBvZiBhIGNvbW1hbmQgZ3JvdXAuICovCi0gICAgICAgICAgICBpZiAoY29sID09IDAgJiYgYyA9PSAnXG4nICYmIHRvay0+cHJvbXB0ICE9IE5VTEwpCisgICAgICAgICAgICBpZiAoY29sID09IDAgJiYgYyA9PSAnXG4nICYmIHRvay0+cHJvbXB0ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBibGFua2xpbmUgPSAwOyAvKiBMZXQgaXQgdGhyb3VnaCAqLwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYmxhbmtsaW5lID0gMTsgLyogSWdub3JlIGNvbXBsZXRlbHkgKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIFdlIGNhbid0IGp1bXAgYmFjayByaWdodCBoZXJlIHNpbmNlIHdlIHN0aWxsCiAgICAgICAgICAgICAgICBtYXkgbmVlZCB0byBza2lwIHRvIHRoZSBlbmQgb2YgYSBjb21tZW50ICovCiAgICAgICAgIH0KQEAgLTEzODUsOCArMTQxMiw5IEBACiAgICAgICAgICAgICBpZiAoY29sID09IHRvay0+aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7CiAgICAgICAgICAgICAgICAgLyogTm8gY2hhbmdlICovCiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCAhPSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoY29sID4gdG9rLT5pbmRzdGFja1t0b2stPmluZGVudF0pIHsKQEAgLTEzOTcsOCArMTQyNSw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sIDw9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdG9rLT5wZW5kaW4rKzsKICAgICAgICAgICAgICAgICB0b2stPmluZHN0YWNrWysrdG9rLT5pbmRlbnRdID0gY29sOwpAQCAtMTQxNyw4ICsxNDQ2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgIT0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQ2NCw5ICsxNDk0LDExIEBACiAgICAgdG9rLT5zdGFydCA9IHRvay0+Y3VyIC0gMTsKIAogICAgIC8qIFNraXAgY29tbWVudCAqLwotICAgIGlmIChjID09ICcjJykKLSAgICAgICAgd2hpbGUgKGMgIT0gRU9GICYmIGMgIT0gJ1xuJykKKyAgICBpZiAoYyA9PSAnIycpIHsKKyAgICAgICAgd2hpbGUgKGMgIT0gRU9GICYmIGMgIT0gJ1xuJykgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICB9CisgICAgfQogCiAgICAgLyogQ2hlY2sgZm9yIEVPRiBhbmQgZXJyb3JzIG5vdyAqLwogICAgIGlmIChjID09IEVPRikgewpAQCAtMTQ3NywzMSArMTUwOSw0MSBAQAogICAgIG5vbmFzY2lpID0gMDsKICAgICBpZiAoaXNfcG90ZW50aWFsX2lkZW50aWZpZXJfc3RhcnQoYykpIHsKICAgICAgICAgLyogUHJvY2VzcyBiIiIsIHIiIiwgdSIiLCBiciIiIGFuZCByYiIiICovCi0gICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwOworICAgICAgICBpbnQgc2F3X2IgPSAwLCBzYXdfciA9IDAsIHNhd191ID0gMCwgc2F3X2YgPSAwOwogICAgICAgICB3aGlsZSAoMSkgewotICAgICAgICAgICAgaWYgKCEoc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdiJyB8fCBjID09ICdCJykpCisgICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfZikgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKICAgICAgICAgICAgICAgICBzYXdfYiA9IDE7CiAgICAgICAgICAgICAvKiBTaW5jZSB0aGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBsaXRlcmFsIHdlIGRvbid0CiAgICAgICAgICAgICAgICB3YW50IHRvIHN1cHBvcnQgaXQgaW4gYXJiaXRyYXJ5IG9yZGVyIGxpa2UgYnl0ZSBsaXRlcmFscy4gKi8KLSAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IpICYmIChjID09ICd1JyB8fCBjID09ICdVJykpCisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19yIHx8IHNhd19mKQorICAgICAgICAgICAgICAgICAgICAgJiYgKGMgPT0gJ3UnfHwgYyA9PSAnVScpKSB7CiAgICAgICAgICAgICAgICAgc2F3X3UgPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogdXIiIiBhbmQgcnUiIiBhcmUgbm90IHN1cHBvcnRlZCAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X3IgfHwgc2F3X3UpICYmIChjID09ICdyJyB8fCBjID09ICdSJykpIHsKICAgICAgICAgICAgICAgICBzYXdfciA9IDE7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19mIHx8IHNhd19iIHx8IHNhd191KSAmJiAoYyA9PSAnZicgfHwgYyA9PSAnRicpKSB7CisgICAgICAgICAgICAgICAgc2F3X2YgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKQorICAgICAgICAgICAgaWYgKGMgPT0gJyInIHx8IGMgPT0gJ1wnJykgewogICAgICAgICAgICAgICAgIGdvdG8gbGV0dGVyX3F1b3RlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9jaGFyKGMpKSB7Ci0gICAgICAgICAgICBpZiAoYyA+PSAxMjgpCisgICAgICAgICAgICBpZiAoYyA+PSAxMjgpIHsKICAgICAgICAgICAgICAgICBub25hc2NpaSA9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwotICAgICAgICBpZiAobm9uYXNjaWkgJiYgIXZlcmlmeV9pZGVudGlmaWVyKHRvaykpCisgICAgICAgIGlmIChub25hc2NpaSAmJiAhdmVyaWZ5X2lkZW50aWZpZXIodG9rKSkgewogICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgIH0KICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKIApAQCAtMTUxMCwxMCArMTU1MiwxMiBAQAogICAgICAgICAgICAgLyogQ3VycmVudCB0b2tlbiBsZW5ndGggaXMgNS4gKi8KICAgICAgICAgICAgIGlmICh0b2stPmFzeW5jX2RlZikgewogICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGluc2lkZSBhbiAnYXN5bmMgZGVmJyBmdW5jdGlvbi4gKi8KLSAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApCisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXN5bmMiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBU1lOQzsKLSAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhd2FpdCIsIDUpID09IDApCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImF3YWl0IiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVdBSVQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAvKiBUaGUgY3VycmVudCB0b2tlbiBpcyAnYXN5bmMnLgpAQCAtMTU0Niw4ICsxNTkwLDkgQEAKICAgICAvKiBOZXdsaW5lICovCiAgICAgaWYgKGMgPT0gJ1xuJykgewogICAgICAgICB0b2stPmF0Ym9sID0gMTsKLSAgICAgICAgaWYgKGJsYW5rbGluZSB8fCB0b2stPmxldmVsID4gMCkKKyAgICAgICAgaWYgKGJsYW5rbGluZSB8fCB0b2stPmxldmVsID4gMCkgewogICAgICAgICAgICAgZ290byBuZXh0bGluZTsKKyAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyIC0gMTsgLyogTGVhdmUgJ1xuJyBvdXQgb2YgdGhlIHN0cmluZyAqLwogICAgICAgICB0b2stPmNvbnRfbGluZSA9IDA7CkBAIC0xNTcwLDExICsxNjE1LDEzIEBACiAgICAgICAgICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogICAgICAgICAgICAgICAgIHJldHVybiBFTExJUFNJUzsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgJy4nKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CkBAIC0xNTg3LDY0ICsxNjM0LDk0IEBACiAgICAgICAgIGlmIChjID09ICcwJykgewogICAgICAgICAgICAgLyogSGV4LCBvY3RhbCBvciBiaW5hcnkgLS0gbWF5YmUuICovCiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnLicpCi0gICAgICAgICAgICAgICAgZ290byBmcmFjdGlvbjsKLSAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykKLSAgICAgICAgICAgICAgICBnb3RvIGltYWdpbmFyeTsKICAgICAgICAgICAgIGlmIChjID09ICd4JyB8fCBjID09ICdYJykgewotCiAgICAgICAgICAgICAgICAgLyogSGV4ICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKLSAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoaXN4ZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc3hkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnbycgfHwgYyA9PSAnTycpIHsKICAgICAgICAgICAgICAgICAvKiBPY3RhbCAqLwogICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID49ICc4JykgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgnMCcgPD0gYyAmJiBjIDwgJzgnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPCAnMCcgfHwgYyA+PSAnOCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCcwJyA8PSBjICYmIGMgPCAnOCcpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJ18nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSB7CiAgICAgICAgICAgICAgICAgLyogQmluYXJ5ICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJyAmJiBjICE9ICcxJykgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICcwJyB8fCBjID09ICcxJyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJyAmJiBjICE9ICcxJykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnMCcgfHwgYyA9PSAnMScpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJ18nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGludCBub256ZXJvID0gMDsKICAgICAgICAgICAgICAgICAvKiBtYXliZSBvbGQtc3R5bGUgb2N0YWw7IGMgaXMgZmlyc3QgY2hhciBvZiBpdCAqLwogICAgICAgICAgICAgICAgIC8qIGluIGFueSBjYXNlLCBhbGxvdyAnMCcgYXMgYSBsaXRlcmFsICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKGMgPT0gJzAnKQotICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGlzZGlnaXQoYykpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9uemVybyA9IDE7CisgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJy4nKQorICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vbnplcm8gPSAxOworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGZyYWN0aW9uOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdlJyB8fCBjID09ICdFJykgewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4cG9uZW50OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdqJyB8fCBjID09ICdKJykgewogICAgICAgICAgICAgICAgICAgICBnb3RvIGltYWdpbmFyeTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobm9uemVybykgeworICAgICAgICAgICAgICAgICAgICAvKiBPbGQtc3R5bGUgb2N0YWw6IG5vdyBkaXNhbGxvd2VkLiAqLwogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwogICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwpAQCAtMTY1MywxNyArMTczMCwyMiBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogRGVjaW1hbCAqLwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBBY2NlcHQgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gKi8KICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICBmcmFjdGlvbjoKICAgICAgICAgICAgICAgICAgICAgLyogRnJhY3Rpb24gKi8KLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGludCBlOwpAQCAtMTY4NSwxNCArMTc2NywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVNQkVSOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpIHsKICAgICAgICAgICAgICAgICAgICAgLyogSW1hZ2luYXJ5IHBhcnQgKi8KICAgICAgICAgaW1hZ2luYXJ5OgogICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKQEAgLTE3MTIsMjIgKzE3OTYsMjcgQEAKICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICBpZiAoYyA9PSBxdW90ZSkgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpCisgICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkgewogICAgICAgICAgICAgICAgIHF1b3RlX3NpemUgPSAzOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgPSAxOyAgICAgLyogZW1wdHkgc3RyaW5nIGZvdW5kICovCisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGMgIT0gcXVvdGUpCisgICAgICAgIGlmIChjICE9IHF1b3RlKSB7CiAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgIH0KIAogICAgICAgICAvKiBHZXQgcmVzdCBvZiBzdHJpbmcgKi8KICAgICAgICAgd2hpbGUgKGVuZF9xdW90ZV9zaXplICE9IHF1b3RlX3NpemUpIHsKICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgICAgIGlmIChjID09IEVPRikgewotICAgICAgICAgICAgICAgIGlmIChxdW90ZV9zaXplID09IDMpCisgICAgICAgICAgICAgICAgaWYgKHF1b3RlX3NpemUgPT0gMykgewogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0VPRlM7Ci0gICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9FT0xTOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b2stPmN1ciA9IHRvay0+aW5wOwogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAgICAgfQpAQCAtMTczNiwxMiArMTgyNSwxNCBAQAogICAgICAgICAgICAgICAgIHRvay0+Y3VyID0gdG9rLT5pbnA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkKKyAgICAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgKz0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVuZF9xdW90ZV9zaXplID0gMDsKLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsgIC8qIHNraXAgZXNjYXBlZCBjaGFyICovCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICB0b2tfbmV4dGModG9rKTsgIC8qIHNraXAgZXNjYXBlZCBjaGFyICovCisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTE3NzEsNyArMTg2Miw4IEBACiAgICAgICAgICAgICBpbnQgdG9rZW4zID0gUHlUb2tlbl9UaHJlZUNoYXJzKGMsIGMyLCBjMyk7CiAgICAgICAgICAgICBpZiAodG9rZW4zICE9IE9QKSB7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSB0b2tlbjM7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKZGlmZiAtLWdpdCBhL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCmluZGV4IDA3OTM5ODQuLjEwNjk5NjYgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKKysrIGIvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBmc3RhdCAnJXMnXG4iLCBpbnBhdGgpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICB0ZXh0X3NpemUgPSBzdGF0dXMuc3Rfc2l6ZTsKKyAgICB0ZXh0X3NpemUgPSAoc2l6ZV90KXN0YXR1cy5zdF9zaXplOwogICAgIHRleHQgPSAoY2hhciAqKSBtYWxsb2ModGV4dF9zaXplICsgMSk7CiAgICAgaWYgKHRleHQgPT0gTlVMTCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCBhbGxvY2F0ZSAlbGQgYnl0ZXNcbiIsIChsb25nKSB0ZXh0X3NpemUpOwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jIGIvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCmluZGV4IGFiNmE4YzcuLjM5NjgzOTkgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL190ZXN0ZW1iZWQuYworKysgYi9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKQEAgLTQxLDcgKzQxLDcgQEAKICNlbmRpZgogICAgIGludCBpLCBqOwogCi0gICAgZm9yIChpPTA7IGk8MzsgaSsrKSB7CisgICAgZm9yIChpPTA7IGk8MTU7IGkrKykgewogICAgICAgICBwcmludGYoIi0tLSBQYXNzICVkIC0tLVxuIiwgaSk7CiAgICAgICAgIF90ZXN0ZW1iZWRfUHlfSW5pdGlhbGl6ZSgpOwogICAgICAgICBtYWluc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvcHl0aG9uLmMgYi9Qcm9ncmFtcy9weXRob24uYwppbmRleCAzN2IxMGI4Li5hN2FmYmM3IDEwMDY0NAotLS0gYS9Qcm9ncmFtcy9weXRob24uYworKysgYi9Qcm9ncmFtcy9weXRob24uYwpAQCAtMjQsNiArMjQsOSBAQAogICAgIGludCBpLCByZXM7CiAgICAgY2hhciAqb2xkbG9jOwogCisgICAgLyogRm9yY2UgbWFsbG9jKCkgYWxsb2NhdG9yIHRvIGJvb3RzdHJhcCBQeXRob24gKi8KKyAgICAodm9pZClfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKCJtYWxsb2MiKTsKKwogICAgIGFyZ3ZfY29weSA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGFyZ3ZfY29weTIgPSAod2NoYXJfdCAqKilQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKHdjaGFyX3QqKSAqIChhcmdjKzEpKTsKICAgICBpZiAoIWFyZ3ZfY29weSB8fCAhYXJndl9jb3B5MikgewpAQCAtNjIsNyArNjUsMTMgQEAKIAogICAgIHNldGxvY2FsZShMQ19BTEwsIG9sZGxvYyk7CiAgICAgUHlNZW1fUmF3RnJlZShvbGRsb2MpOworCiAgICAgcmVzID0gUHlfTWFpbihhcmdjLCBhcmd2X2NvcHkpOworCisgICAgLyogRm9yY2UgYWdhaW4gbWFsbG9jKCkgYWxsb2NhdG9yIHRvIHJlbGVhc2UgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKKyAgICAgICBiZWZvcmUgUHlfTWFpbigpICovCisgICAgKHZvaWQpX1B5TWVtX1NldHVwQWxsb2NhdG9ycygibWFsbG9jIik7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5MltpXSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL1B5dGhvbi1hc3QuYyBiL1B5dGhvbi9QeXRob24tYXN0LmMKaW5kZXggYWQ1M2JhMzUuLmUwNjA3YmEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9QeXRob24tYXN0LmMKKysrIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwpAQCAtODYsNiArODYsMTUgQEAKICAgICAib3AiLAogICAgICJ2YWx1ZSIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqQW5uQXNzaWduX3R5cGU7CitfUHlfSURFTlRJRklFUihhbm5vdGF0aW9uKTsKK19QeV9JREVOVElGSUVSKHNpbXBsZSk7CitzdGF0aWMgY2hhciAqQW5uQXNzaWduX2ZpZWxkc1tdPXsKKyAgICAidGFyZ2V0IiwKKyAgICAiYW5ub3RhdGlvbiIsCisgICAgInZhbHVlIiwKKyAgICAic2ltcGxlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpGb3JfdHlwZTsKIF9QeV9JREVOVElGSUVSKGl0ZXIpOwogX1B5X0lERU5USUZJRVIob3JlbHNlKTsKQEAgLTI4NSw2ICsyOTQsMTggQEAKIHN0YXRpYyBjaGFyICpTdHJfZmllbGRzW109ewogICAgICJzIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpGb3JtYXR0ZWRWYWx1ZV90eXBlOworX1B5X0lERU5USUZJRVIoY29udmVyc2lvbik7CitfUHlfSURFTlRJRklFUihmb3JtYXRfc3BlYyk7CitzdGF0aWMgY2hhciAqRm9ybWF0dGVkVmFsdWVfZmllbGRzW109eworICAgICJ2YWx1ZSIsCisgICAgImNvbnZlcnNpb24iLAorICAgICJmb3JtYXRfc3BlYyIsCit9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqSm9pbmVkU3RyX3R5cGU7CitzdGF0aWMgY2hhciAqSm9pbmVkU3RyX2ZpZWxkc1tdPXsKKyAgICAidmFsdWVzIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpCeXRlc190eXBlOwogc3RhdGljIGNoYXIgKkJ5dGVzX2ZpZWxkc1tdPXsKICAgICAicyIsCkBAIC0yOTQsNiArMzE1LDEwIEBACiAgICAgInZhbHVlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpFbGxpcHNpc190eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCAqQ29uc3RhbnRfdHlwZTsKK3N0YXRpYyBjaGFyICpDb25zdGFudF9maWVsZHNbXT17CisgICAgInZhbHVlIiwKK307CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpBdHRyaWJ1dGVfdHlwZTsKIF9QeV9JREVOVElGSUVSKGF0dHIpOwogX1B5X0lERU5USUZJRVIoY3R4KTsKQEAgLTQxMCwxMCArNDM1LDEyIEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpjb21wcmVoZW5zaW9uX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfY29tcHJlaGVuc2lvbih2b2lkKik7CiBfUHlfSURFTlRJRklFUihpZnMpOworX1B5X0lERU5USUZJRVIoaXNfYXN5bmMpOwogc3RhdGljIGNoYXIgKmNvbXByZWhlbnNpb25fZmllbGRzW109ewogICAgICJ0YXJnZXQiLAogICAgICJpdGVyIiwKICAgICAiaWZzIiwKKyAgICAiaXNfYXN5bmMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmV4Y2VwdGhhbmRsZXJfdHlwZTsKIHN0YXRpYyBjaGFyICpleGNlcHRoYW5kbGVyX2F0dHJpYnV0ZXNbXSA9IHsKQEAgLTQ1MCw3ICs0NzcsNiBAQAogICAgICJjb2xfb2Zmc2V0IiwKIH07CiBfUHlfSURFTlRJRklFUihhcmcpOwotX1B5X0lERU5USUZJRVIoYW5ub3RhdGlvbik7CiBzdGF0aWMgY2hhciAqYXJnX2ZpZWxkc1tdPXsKICAgICAiYXJnIiwKICAgICAiYW5ub3RhdGlvbiIsCkBAIC02OTcsNiArNzIzLDcgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KilvOwogfQogI2RlZmluZSBhc3Qyb2JqX3NpbmdsZXRvbiBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2NvbnN0YW50IGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CkBAIC03MzQsNiArNzYxLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9jb25zdGFudChQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKG9iaikgeworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChhcmVuYSwgb2JqKSA8IDApIHsKKyAgICAgICAgICAgICpvdXQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgIH0KKyAgICAqb3V0ID0gb2JqOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaWRlbnRpZmllcihQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopICYmIG9iaiAhPSBQeV9Ob25lKSB7CkBAIC03NjksNyArODA5LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgaSA9IChpbnQpUHlMb25nX0FzTG9uZyhvYmopOworICAgIGkgPSBfUHlMb25nX0FzSW50KG9iaik7CiAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgKm91dCA9IGk7CkBAIC04NDMsNiArODgzLDggQEAKICAgICBpZiAoIUFzc2lnbl90eXBlKSByZXR1cm4gMDsKICAgICBBdWdBc3NpZ25fdHlwZSA9IG1ha2VfdHlwZSgiQXVnQXNzaWduIiwgc3RtdF90eXBlLCBBdWdBc3NpZ25fZmllbGRzLCAzKTsKICAgICBpZiAoIUF1Z0Fzc2lnbl90eXBlKSByZXR1cm4gMDsKKyAgICBBbm5Bc3NpZ25fdHlwZSA9IG1ha2VfdHlwZSgiQW5uQXNzaWduIiwgc3RtdF90eXBlLCBBbm5Bc3NpZ25fZmllbGRzLCA0KTsKKyAgICBpZiAoIUFubkFzc2lnbl90eXBlKSByZXR1cm4gMDsKICAgICBGb3JfdHlwZSA9IG1ha2VfdHlwZSgiRm9yIiwgc3RtdF90eXBlLCBGb3JfZmllbGRzLCA0KTsKICAgICBpZiAoIUZvcl90eXBlKSByZXR1cm4gMDsKICAgICBBc3luY0Zvcl90eXBlID0gbWFrZV90eXBlKCJBc3luY0ZvciIsIHN0bXRfdHlwZSwgQXN5bmNGb3JfZmllbGRzLCA0KTsKQEAgLTkxNyw2ICs5NTksMTEgQEAKICAgICBpZiAoIU51bV90eXBlKSByZXR1cm4gMDsKICAgICBTdHJfdHlwZSA9IG1ha2VfdHlwZSgiU3RyIiwgZXhwcl90eXBlLCBTdHJfZmllbGRzLCAxKTsKICAgICBpZiAoIVN0cl90eXBlKSByZXR1cm4gMDsKKyAgICBGb3JtYXR0ZWRWYWx1ZV90eXBlID0gbWFrZV90eXBlKCJGb3JtYXR0ZWRWYWx1ZSIsIGV4cHJfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlZFZhbHVlX2ZpZWxkcywgMyk7CisgICAgaWYgKCFGb3JtYXR0ZWRWYWx1ZV90eXBlKSByZXR1cm4gMDsKKyAgICBKb2luZWRTdHJfdHlwZSA9IG1ha2VfdHlwZSgiSm9pbmVkU3RyIiwgZXhwcl90eXBlLCBKb2luZWRTdHJfZmllbGRzLCAxKTsKKyAgICBpZiAoIUpvaW5lZFN0cl90eXBlKSByZXR1cm4gMDsKICAgICBCeXRlc190eXBlID0gbWFrZV90eXBlKCJCeXRlcyIsIGV4cHJfdHlwZSwgQnl0ZXNfZmllbGRzLCAxKTsKICAgICBpZiAoIUJ5dGVzX3R5cGUpIHJldHVybiAwOwogICAgIE5hbWVDb25zdGFudF90eXBlID0gbWFrZV90eXBlKCJOYW1lQ29uc3RhbnQiLCBleHByX3R5cGUsCkBAIC05MjQsNiArOTcxLDggQEAKICAgICBpZiAoIU5hbWVDb25zdGFudF90eXBlKSByZXR1cm4gMDsKICAgICBFbGxpcHNpc190eXBlID0gbWFrZV90eXBlKCJFbGxpcHNpcyIsIGV4cHJfdHlwZSwgTlVMTCwgMCk7CiAgICAgaWYgKCFFbGxpcHNpc190eXBlKSByZXR1cm4gMDsKKyAgICBDb25zdGFudF90eXBlID0gbWFrZV90eXBlKCJDb25zdGFudCIsIGV4cHJfdHlwZSwgQ29uc3RhbnRfZmllbGRzLCAxKTsKKyAgICBpZiAoIUNvbnN0YW50X3R5cGUpIHJldHVybiAwOwogICAgIEF0dHJpYnV0ZV90eXBlID0gbWFrZV90eXBlKCJBdHRyaWJ1dGUiLCBleHByX3R5cGUsIEF0dHJpYnV0ZV9maWVsZHMsIDMpOwogICAgIGlmICghQXR0cmlidXRlX3R5cGUpIHJldHVybiAwOwogICAgIFN1YnNjcmlwdF90eXBlID0gbWFrZV90eXBlKCJTdWJzY3JpcHQiLCBleHByX3R5cGUsIFN1YnNjcmlwdF9maWVsZHMsIDMpOwpAQCAtMTEwMSw3ICsxMTUwLDcgQEAKICAgICBOb3RJbl9zaW5nbGV0b24gPSBQeVR5cGVfR2VuZXJpY05ldyhOb3RJbl90eXBlLCBOVUxMLCBOVUxMKTsKICAgICBpZiAoIU5vdEluX3NpbmdsZXRvbikgcmV0dXJuIDA7CiAgICAgY29tcHJlaGVuc2lvbl90eXBlID0gbWFrZV90eXBlKCJjb21wcmVoZW5zaW9uIiwgJkFTVF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX2ZpZWxkcywgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25fZmllbGRzLCA0KTsKICAgICBpZiAoIWNvbXByZWhlbnNpb25fdHlwZSkgcmV0dXJuIDA7CiAgICAgaWYgKCFhZGRfYXR0cmlidXRlcyhjb21wcmVoZW5zaW9uX3R5cGUsIE5VTEwsIDApKSByZXR1cm4gMDsKICAgICBleGNlcHRoYW5kbGVyX3R5cGUgPSBtYWtlX3R5cGUoImV4Y2VwdGhhbmRsZXIiLCAmQVNUX3R5cGUsIE5VTEwsIDApOwpAQCAtMTM3MCw2ICsxNDE5LDM0IEBACiB9CiAKIHN0bXRfdHkKK0FubkFzc2lnbihleHByX3R5IHRhcmdldCwgZXhwcl90eSBhbm5vdGF0aW9uLCBleHByX3R5IHZhbHVlLCBpbnQgc2ltcGxlLCBpbnQKKyAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBzdG10X3R5IHA7CisgICAgaWYgKCF0YXJnZXQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdGFyZ2V0IGlzIHJlcXVpcmVkIGZvciBBbm5Bc3NpZ24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICghYW5ub3RhdGlvbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCBhbm5vdGF0aW9uIGlzIHJlcXVpcmVkIGZvciBBbm5Bc3NpZ24iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQW5uQXNzaWduX2tpbmQ7CisgICAgcC0+di5Bbm5Bc3NpZ24udGFyZ2V0ID0gdGFyZ2V0OworICAgIHAtPnYuQW5uQXNzaWduLmFubm90YXRpb24gPSBhbm5vdGF0aW9uOworICAgIHAtPnYuQW5uQXNzaWduLnZhbHVlID0gdmFsdWU7CisgICAgcC0+di5Bbm5Bc3NpZ24uc2ltcGxlID0gc2ltcGxlOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworc3RtdF90eQogRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludAogICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewpAQCAtMjA2Myw2ICsyMTQwLDQyIEBACiB9CiAKIGV4cHJfdHkKK0Zvcm1hdHRlZFZhbHVlKGV4cHJfdHkgdmFsdWUsIGludCBjb252ZXJzaW9uLCBleHByX3R5IGZvcm1hdF9zcGVjLCBpbnQgbGluZW5vLAorICAgICAgICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBGb3JtYXR0ZWRWYWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBGb3JtYXR0ZWRWYWx1ZV9raW5kOworICAgIHAtPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLmNvbnZlcnNpb24gPSBjb252ZXJzaW9uOworICAgIHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMgPSBmb3JtYXRfc3BlYzsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKK0pvaW5lZFN0cihhc2RsX3NlcSAqIHZhbHVlcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEpvaW5lZFN0cl9raW5kOworICAgIHAtPnYuSm9pbmVkU3RyLnZhbHVlcyA9IHZhbHVlczsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIEJ5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBleHByX3R5IHA7CkBAIC0yMTE0LDYgKzIyMjcsMjUgQEAKIH0KIAogZXhwcl90eQorQ29uc3RhbnQoY29uc3RhbnQgdmFsdWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgQ29uc3RhbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gQ29uc3RhbnRfa2luZDsKKyAgICBwLT52LkNvbnN0YW50LnZhbHVlID0gdmFsdWU7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBBdHRyaWJ1dGUoZXhwcl90eSB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQgbGluZW5vLCBpbnQKICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTIzMTUsNyArMjQ0Nyw4IEBACiB9CiAKIGNvbXByZWhlbnNpb25fdHkKLWNvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBpZnMsIFB5QXJlbmEgKmFyZW5hKQorY29tcHJlaGVuc2lvbihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGlmcywgaW50IGlzX2FzeW5jLAorICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKIHsKICAgICBjb21wcmVoZW5zaW9uX3R5IHA7CiAgICAgaWYgKCF0YXJnZXQpIHsKQEAgLTIzMzQsNiArMjQ2Nyw3IEBACiAgICAgcC0+dGFyZ2V0ID0gdGFyZ2V0OwogICAgIHAtPml0ZXIgPSBpdGVyOwogICAgIHAtPmlmcyA9IGlmczsKKyAgICBwLT5pc19hc3luYyA9IGlzX2FzeW5jOwogICAgIHJldHVybiBwOwogfQogCkBAIC0yNjQ4LDYgKzI3ODIsMzAgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBbm5Bc3NpZ25fdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bbm5Bc3NpZ24udGFyZ2V0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT52LkFubkFzc2lnbi5zaW1wbGUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zaW1wbGUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEZvcl9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhGb3JfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTMxNjQsNiArMzMyMiwzNCBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRm9ybWF0dGVkVmFsdWVfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT52LkZvcm1hdHRlZFZhbHVlLmNvbnZlcnNpb24pOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb252ZXJzaW9uLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Zvcm1hdF9zcGVjLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoSm9pbmVkU3RyX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSm9pbmVkU3RyLnZhbHVlcywgYXN0Mm9ial9leHByKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWVzLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCeXRlc19raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhCeXRlc190eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMzE4Niw2ICszMzcyLDE1IEBACiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEVsbGlwc2lzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQ29uc3RhbnRfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2NvbnN0YW50KG8tPnYuQ29uc3RhbnQudmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEF0dHJpYnV0ZV90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMzUzMSw2ICszNzI2LDExIEBACiAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pZnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmlzX2FzeW5jKTsKKyAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2lzX2FzeW5jLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGdvdG8gZmFpbGVkOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIGZhaWxlZDoKICAgICBQeV9YREVDUkVGKHZhbHVlKTsKQEAgLTQ0NTgsNiArNDY1OCw2NCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBbm5Bc3NpZ25fdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGV4cHJfdHkgdGFyZ2V0OworICAgICAgICBleHByX3R5IGFubm90YXRpb247CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIGludCBzaW1wbGU7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldCk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRhcmdldCwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRcIiBtaXNzaW5nIGZyb20gQW5uQXNzaWduIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2Fubm90YXRpb24pKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Fubm90YXRpb24pOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZhbm5vdGF0aW9uLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFubm90YXRpb25cIiBtaXNzaW5nIGZyb20gQW5uQXNzaWduIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFsdWUgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc2ltcGxlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9zaW1wbGUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJnNpbXBsZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJzaW1wbGVcIiBtaXNzaW5nIGZyb20gQW5uQXNzaWduIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQW5uQXNzaWduKHRhcmdldCwgYW5ub3RhdGlvbiwgdmFsdWUsIHNpbXBsZSwgbGluZW5vLCBjb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopRm9yX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNjIwNSw2ICs2NDYzLDkwIEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUZvcm1hdHRlZFZhbHVlX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICBpbnQgY29udmVyc2lvbjsKKyAgICAgICAgZXhwcl90eSBmb3JtYXRfc3BlYzsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIEZvcm1hdHRlZFZhbHVlIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfY29udmVyc2lvbikpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29udmVyc2lvbik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29udmVyc2lvbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb252ZXJzaW9uID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzX25vdF9ub25lKG9iaiwgJlB5SWRfZm9ybWF0X3NwZWMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Zvcm1hdF9zcGVjKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZm9ybWF0X3NwZWMsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9ybWF0X3NwZWMgPSBOVUxMOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBGb3JtYXR0ZWRWYWx1ZSh2YWx1ZSwgY29udmVyc2lvbiwgZm9ybWF0X3NwZWMsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopSm9pbmVkU3RyX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBhc2RsX3NlcSogdmFsdWVzOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlcyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJKb2luZWRTdHIgZmllbGQgXCJ2YWx1ZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgdmFsdWVzID0gX1B5X2FzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJKb2luZWRTdHIgZmllbGQgXCJ2YWx1ZXNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaSwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlc1wiIG1pc3NpbmcgZnJvbSBKb2luZWRTdHIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBKb2luZWRTdHIodmFsdWVzLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQnl0ZXNfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MjU5LDYgKzY2MDEsMjggQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQ29uc3RhbnRfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGNvbnN0YW50IHZhbHVlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NvbnN0YW50KHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInZhbHVlXCIgbWlzc2luZyBmcm9tIENvbnN0YW50Iik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gQ29uc3RhbnQodmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02OTg3LDYgKzczNTEsNyBAQAogICAgIGV4cHJfdHkgdGFyZ2V0OwogICAgIGV4cHJfdHkgaXRlcjsKICAgICBhc2RsX3NlcSogaWZzOworICAgIGludCBpc19hc3luYzsKIAogICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICBpbnQgcmVzOwpAQCAtNzAzOCw3ICs3NDAzLDE4IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImlmc1wiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICAqb3V0ID0gY29tcHJlaGVuc2lvbih0YXJnZXQsIGl0ZXIsIGlmcywgYXJlbmEpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaXNfYXN5bmMpKSB7CisgICAgICAgIGludCByZXM7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9pc19hc3luYyk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmlzX2FzeW5jLCBhcmVuYSk7CisgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXNfYXN5bmNcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgKm91dCA9IGNvbXByZWhlbnNpb24odGFyZ2V0LCBpdGVyLCBpZnMsIGlzX2FzeW5jLCBhcmVuYSk7CiAgICAgcmV0dXJuIDA7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih0bXApOwpAQCAtNzUwMiw2ICs3ODc4LDggQEAKICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF1Z0Fzc2lnbiIsIChQeU9iamVjdCopQXVnQXNzaWduX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBbm5Bc3NpZ24iLCAoUHlPYmplY3QqKUFubkFzc2lnbl90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRm9yIiwgKFB5T2JqZWN0KilGb3JfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFzeW5jRm9yIiwgKFB5T2JqZWN0KilBc3luY0Zvcl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzU2MiwxMiArNzk0MCwxOCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ2FsbCIsIChQeU9iamVjdCopQ2FsbF90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTnVtIiwgKFB5T2JqZWN0KilOdW1fdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN0ciIsIChQeU9iamVjdCopU3RyX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3JtYXR0ZWRWYWx1ZSIsCisgICAgICAgIChQeU9iamVjdCopRm9ybWF0dGVkVmFsdWVfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkpvaW5lZFN0ciIsIChQeU9iamVjdCopSm9pbmVkU3RyX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJCeXRlcyIsIChQeU9iamVjdCopQnl0ZXNfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk5hbWVDb25zdGFudCIsIChQeU9iamVjdCopTmFtZUNvbnN0YW50X3R5cGUpIDwKICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJFbGxpcHNpcyIsIChQeU9iamVjdCopRWxsaXBzaXNfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNvbnN0YW50IiwgKFB5T2JqZWN0KilDb25zdGFudF90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXR0cmlidXRlIiwgKFB5T2JqZWN0KilBdHRyaWJ1dGVfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlN1YnNjcmlwdCIsIChQeU9iamVjdCopU3Vic2NyaXB0X3R5cGUpIDwgMCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9fd2FybmluZ3MuYyBiL1B5dGhvbi9fd2FybmluZ3MuYwppbmRleCA5NzhiYWQxLi40MGY1YzhlIDEwMDY0NAotLS0gYS9QeXRob24vX3dhcm5pbmdzLmMKKysrIGIvUHl0aG9uL193YXJuaW5ncy5jCkBAIC00MCwxMiArNDAsMTEgQEAKICAgIEEgTlVMTCByZXR1cm4gdmFsdWUgY2FuIG1lYW4gZmFsc2Ugb3IgYW4gZXJyb3IuCiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWdldF93YXJuaW5nc19hdHRyKGNvbnN0IGNoYXIgKmF0dHIpCitnZXRfd2FybmluZ3NfYXR0cihjb25zdCBjaGFyICphdHRyLCBpbnQgdHJ5X2ltcG9ydCkKIHsKICAgICBzdGF0aWMgUHlPYmplY3QgKndhcm5pbmdzX3N0ciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmFsbF9tb2R1bGVzOwotICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGU7Ci0gICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlLCAqb2JqOwogCiAgICAgaWYgKHdhcm5pbmdzX3N0ciA9PSBOVUxMKSB7CiAgICAgICAgIHdhcm5pbmdzX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJ3YXJuaW5ncyIpOwpAQCAtNTMsMTUgKzUyLDM0IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICByZXN1bHQgPSBQeURpY3RfQ29udGFpbnMoYWxsX21vZHVsZXMsIHdhcm5pbmdzX3N0cik7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSB8fCByZXN1bHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKLSAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKSkKKyAgICAvKiBkb24ndCB0cnkgdG8gaW1wb3J0IGFmdGVyIHRoZSBzdGFydCBvZiB0aGUgUHl0aG9uIGZpbmFsbGl6YXRpb24gKi8KKyAgICBpZiAodHJ5X2ltcG9ydCAmJiBfUHlfRmluYWxpemluZyA9PSBOVUxMKSB7CisgICAgICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydCh3YXJuaW5nc19zdHIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIEZhbGxiYWNrIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uIGlmIHdlIGNhbm5vdCBnZXQKKyAgICAgICAgICAgICAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gKi8KKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhbGxfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKworICAgICAgICB3YXJuaW5nc19tb2R1bGUgPSBQeURpY3RfR2V0SXRlbShhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKKyAgICAgICAgaWYgKHdhcm5pbmdzX21vZHVsZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfSU5DUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgfQorCisgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cikpIHsKKyAgICAgICAgUHlfREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKTsKKyAgICBQeV9ERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICByZXR1cm4gb2JqOwogfQogCiAKQEAgLTcwLDcgKzg4LDcgQEAKIHsKICAgICBQeU9iamVjdCAqcmVnaXN0cnk7CiAKLSAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiKTsKKyAgICByZWdpc3RyeSA9IGdldF93YXJuaW5nc19hdHRyKCJvbmNlcmVnaXN0cnkiLCAwKTsKICAgICBpZiAocmVnaXN0cnkgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODcsNyArMTA1LDcgQEAKIHsKICAgICBQeU9iamVjdCAqZGVmYXVsdF9hY3Rpb247CiAKLSAgICBkZWZhdWx0X2FjdGlvbiA9IGdldF93YXJuaW5nc19hdHRyKCJkZWZhdWx0YWN0aW9uIik7CisgICAgZGVmYXVsdF9hY3Rpb24gPSBnZXRfd2FybmluZ3NfYXR0cigiZGVmYXVsdGFjdGlvbiIsIDApOwogICAgIGlmIChkZWZhdWx0X2FjdGlvbiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMCw3ICsxMjgsNyBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqd2FybmluZ3NfZmlsdGVyczsKIAotICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIpOworICAgIHdhcm5pbmdzX2ZpbHRlcnMgPSBnZXRfd2FybmluZ3NfYXR0cigiZmlsdGVycyIsIDApOwogICAgIGlmICh3YXJuaW5nc19maWx0ZXJzID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4Nyw4ICszMDUsOCBAQAogfQogCiBzdGF0aWMgdm9pZAotc2hvd193YXJuaW5nKFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKnRleHQsIFB5T2JqZWN0Ci0gICAgICAgICAgICAgICAgKmNhdGVnb3J5LCBQeU9iamVjdCAqc291cmNlbGluZSkKK3Nob3dfd2FybmluZyhQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0ICp0ZXh0LAorICAgICAgICAgICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCiB7CiAgICAgUHlPYmplY3QgKmZfc3RkZXJyOwogICAgIFB5T2JqZWN0ICpuYW1lOwpAQCAtMzU5LDEwICszNzcsNjQgQEAKICAgICBQeUVycl9DbGVhcigpOwogfQogCitzdGF0aWMgaW50CitjYWxsX3Nob3dfd2FybmluZyhQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICp0ZXh0LCBQeU9iamVjdCAqbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKmxpbmVub19vYmosCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlbGluZSwgUHlPYmplY3QgKnNvdXJjZSkKK3sKKyAgICBQeU9iamVjdCAqc2hvd19mbiwgKm1zZywgKnJlcywgKndhcm5tc2dfY2xzID0gTlVMTDsKKworICAgIC8qIElmIHRoZSBzb3VyY2UgcGFyYW1ldGVyIGlzIHNldCwgdHJ5IHRvIGdldCB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorICAgICAgIFRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gaXMgYWJsZSB0byBsb2cgdGhlIHRyYWNlYmFjayB3aGVyZSB0aGUgc291cmNlCisgICAgICAgd2FzIGFsbG9jYXRlZCwgd2hlcmVhcyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBkb2VzbnQuICovCisgICAgc2hvd19mbiA9IGdldF93YXJuaW5nc19hdHRyKCJfc2hvd3dhcm5tc2ciLCBzb3VyY2UgIT0gTlVMTCk7CisgICAgaWYgKHNob3dfZm4gPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZm4pKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIndhcm5pbmdzLl9zaG93d2Fybm1zZygpIG11c3QgYmUgc2V0IHRvIGEgY2FsbGFibGUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB3YXJubXNnX2NscyA9IGdldF93YXJuaW5nc19hdHRyKCJXYXJuaW5nTWVzc2FnZSIsIDApOworICAgIGlmICh3YXJubXNnX2NscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgd2FybmluZ3MuV2FybmluZ01lc3NhZ2UiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBtc2cgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHdhcm5tc2dfY2xzLCBtZXNzYWdlLCBjYXRlZ29yeSwKKyAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm9fb2JqLCBQeV9Ob25lLCBQeV9Ob25lLCBzb3VyY2UsCisgICAgICAgICAgICBOVUxMKTsKKyAgICBQeV9ERUNSRUYod2Fybm1zZ19jbHMpOworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19mbiwgbXNnLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoc2hvd19mbik7CisgICAgUHlfREVDUkVGKG1zZyk7CisKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKHNob3dfZm4pOworICAgIHJldHVybiAtMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5fZXhwbGljaXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLAotICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQorICAgICAgICAgICAgICBQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcmVnaXN0cnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lLAorICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKQogewogICAgIFB5T2JqZWN0ICprZXkgPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyZXN1bHQgPSBOVUxMLCAqbGluZW5vX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKml0ZW0gPSBOVUxMOwpAQCAtNDcwLDMxICs1NDIsOSBAQAogICAgIGlmIChyYyA9PSAxKSAgLyogQWxyZWFkeSB3YXJuZWQgZm9yIHRoaXMgbW9kdWxlLiAqLwogICAgICAgICBnb3RvIHJldHVybl9ub25lOwogICAgIGlmIChyYyA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpzaG93X2Z4biA9IGdldF93YXJuaW5nc19hdHRyKCJzaG93d2FybmluZyIpOwotICAgICAgICBpZiAoc2hvd19meG4gPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICAgICAgc2hvd193YXJuaW5nKGZpbGVuYW1lLCBsaW5lbm8sIHRleHQsIGNhdGVnb3J5LCBzb3VyY2VsaW5lKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0KLSAgICAgICAgICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhzaG93X2Z4bikpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2hvd19meG4sIG1lc3NhZ2UsIGNhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVub19vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzaG93X2Z4bik7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9CisgICAgICAgIGlmIChjYWxsX3Nob3dfd2FybmluZyhjYXRlZ29yeSwgdGV4dCwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVub19vYmosIHNvdXJjZWxpbmUsIHNvdXJjZSkgPCAwKQorICAgICAgICAgICAgZ290byBjbGVhbnVwOwogICAgIH0KICAgICBlbHNlIC8qIGlmIChyYyA9PSAtMSkgKi8KICAgICAgICAgZ290byBjbGVhbnVwOwpAQCAtNzM4LDcgKzc4OCw4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCitkb193YXJuKFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCAqbW9kdWxlLCAqcmVnaXN0cnksICpyZXM7CiAgICAgaW50IGxpbmVubzsKQEAgLTc0Nyw3ICs3OTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwgcmVnaXN0cnksCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHNvdXJjZSk7CiAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKICAgICBQeV9ERUNSRUYocmVnaXN0cnkpOwogICAgIFB5X0RFQ1JFRihtb2R1bGUpOwpAQCAtNzU3LDI1ICs4MDgsMjcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3YXJuaW5nc193YXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3X2xpc3RbXSA9IHsgIm1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAic3RhY2tsZXZlbCIsIDAgfTsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSwgKmNhdGVnb3J5ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dfbGlzdFtdID0geyJtZXNzYWdlIiwgImNhdGVnb3J5IiwgInN0YWNrbGV2ZWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptZXNzYWdlLCAqY2F0ZWdvcnkgPSBOVUxMLCAqc291cmNlID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9uOndhcm4iLCBrd19saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T25POndhcm4iLCBrd19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZXNzYWdlLCAmY2F0ZWdvcnksICZzdGFja19sZXZlbCwgJnNvdXJjZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgY2F0ZWdvcnkgPSBnZXRfY2F0ZWdvcnkobWVzc2FnZSwgY2F0ZWdvcnkpOwogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJldHVybiBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgc291cmNlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5pbmdzX3dhcm5fZXhwbGljaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBzdGF0aWMgY2hhciAqa3dkX2xpc3RbXSA9IHsibWVzc2FnZSIsICJjYXRlZ29yeSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgInJlZ2lzdHJ5IiwgIm1vZHVsZV9nbG9iYWxzIiwgMH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCAicmVnaXN0cnkiLCAibW9kdWxlX2dsb2JhbHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiwgMH07CiAgICAgUHlPYmplY3QgKm1lc3NhZ2U7CiAgICAgUHlPYmplY3QgKmNhdGVnb3J5OwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKQEAgLTc4MywxMCArODM2LDExIEBACiAgICAgUHlPYmplY3QgKm1vZHVsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlZ2lzdHJ5ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kdWxlX2dsb2JhbHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzb3VyY2VvYmogPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PVWl8T09POndhcm5fZXhwbGljaXQiLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT1VpfE9PT086d2Fybl9leHBsaWNpdCIsCiAgICAgICAgICAgICAgICAga3dkX2xpc3QsICZtZXNzYWdlLCAmY2F0ZWdvcnksICZmaWxlbmFtZSwgJmxpbmVubywgJm1vZHVsZSwKLSAgICAgICAgICAgICAgICAmcmVnaXN0cnksICZtb2R1bGVfZ2xvYmFscykpCisgICAgICAgICAgICAgICAgJnJlZ2lzdHJ5LCAmbW9kdWxlX2dsb2JhbHMsICZzb3VyY2VvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGVfZ2xvYmFscykgewpAQCAtODQyLDE0ICs4OTYsMTQgQEAKIAogICAgICAgICAvKiBIYW5kbGUgdGhlIHdhcm5pbmcuICovCiAgICAgICAgIHJldHVybmVkID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIHNvdXJjZV9saW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBzb3VyY2VfbGluZSwgc291cmNlb2JqKTsKICAgICAgICAgUHlfREVDUkVGKHNvdXJjZV9saXN0KTsKICAgICAgICAgcmV0dXJuIHJldHVybmVkOwogICAgIH0KIAogIHN0YW5kYXJkX2NhbGw6CiAgICAgcmV0dXJuIHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIE5VTEwsIHNvdXJjZW9iaik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04NjQsMTQgKzkxOCwxNCBAQAogCiBzdGF0aWMgaW50CiB3YXJuX3VuaWNvZGUoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqbWVzc2FnZSwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQorICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogCi0gICAgcmVzID0gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwpOworICAgIHJlcyA9IGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBzb3VyY2UpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtODc5LDEyICs5MzMsMjggQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorX1B5RXJyX1dhcm5Gb3JtYXRWKFB5T2JqZWN0ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCAqbWVzc2FnZTsKKyAgICBpbnQgcmVzOworCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKyAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXMgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsLCBzb3VyY2UpOworICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKKyAgICByZXR1cm4gcmVzOworfQorCiBpbnQKIFB5RXJyX1dhcm5Gb3JtYXQoUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKLSAgICBpbnQgcmV0OwotICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIGludCByZXM7CiAgICAgdmFfbGlzdCB2YXJnczsKIAogI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKQEAgLTg5MiwyNSArOTYyLDM4IEBACiAjZWxzZQogICAgIHZhX3N0YXJ0KHZhcmdzKTsKICNlbmRpZgotICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7Ci0gICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewotICAgICAgICByZXQgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsKTsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldCA9IC0xOworICAgIHJlcyA9IF9QeUVycl9XYXJuRm9ybWF0VihOVUxMLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIGZvcm1hdCwgdmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzOwogfQogCiBpbnQKK1B5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIGludCByZXM7CisgICAgdmFfbGlzdCB2YXJnczsKKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgcmVzID0gX1B5RXJyX1dhcm5Gb3JtYXRWKHNvdXJjZSwgUHlFeGNfUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja19sZXZlbCwgZm9ybWF0LCB2YXJncyk7CisgICAgdmFfZW5kKHZhcmdzKTsKKyAgICByZXR1cm4gcmVzOworfQorCisKK2ludAogUHlFcnJfV2FybkV4KFB5T2JqZWN0ICpjYXRlZ29yeSwgY29uc3QgY2hhciAqdGV4dCwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKIHsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcodGV4dCk7CiAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwpOworICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwsIE5VTEwpOwogICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtOTIxLDcgKzEwMDQsNyBAQAogI3VuZGVmIFB5RXJyX1dhcm4KIAogUHlBUElfRlVOQyhpbnQpCi1QeUVycl9XYXJuKFB5T2JqZWN0ICpjYXRlZ29yeSwgY2hhciAqdGV4dCkKK1B5RXJyX1dhcm4oUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICp0ZXh0KQogewogICAgIHJldHVybiBQeUVycl9XYXJuRXgoY2F0ZWdvcnksIHRleHQsIDEpOwogfQpAQCAtOTM2LDcgKzEwMTksNyBAQAogICAgIGlmIChjYXRlZ29yeSA9PSBOVUxMKQogICAgICAgICBjYXRlZ29yeSA9IFB5RXhjX1J1bnRpbWVXYXJuaW5nOwogICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMTAwMCw3ICsxMDgzLDcgQEAKICAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgICAgIHJlcyA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc2RsLmMgYi9QeXRob24vYXNkbC5jCmluZGV4IGRmMzg3YjIuLmMyMTEwNzggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtOSwxNCArOSwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KLSAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgeworICAgIGlmIChuID4gU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQwLDE0ICs0MCwxNCBAQAogCiAgICAgLyogY2hlY2sgc2l6ZSBpcyBzYW5lICovCiAgICAgaWYgKHNpemUgPCAwIHx8Ci0gICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoUFlfU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgeworICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFNJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwotICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CisgICAgaWYgKG4gPiBTSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzdC5jIGIvUHl0aG9uL2FzdC5jCmluZGV4IDZkYTMzZjcuLjc2ZGFmNmYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc3QuYworKysgYi9QeXRob24vYXN0LmMKQEAgLTEzMiw2ICsxMzIsNTIgQEAKIH0KIAogc3RhdGljIGludAordmFsaWRhdGVfY29uc3RhbnQoUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lIHx8IHZhbHVlID09IFB5X0VsbGlwc2lzKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5RmxvYXRfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Q29tcGxleF9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlCb29sX0NoZWNrKHZhbHVlKQorICAgICAgICAgICAgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUJ5dGVzX0NoZWNrRXhhY3QodmFsdWUpKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QodmFsdWUpIHx8IFB5RnJvemVuU2V0X0NoZWNrRXhhY3QodmFsdWUpKSB7CisgICAgICAgIFB5T2JqZWN0ICppdDsKKworICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIodmFsdWUpOworICAgICAgICBpZiAoaXQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5SXRlcl9OZXh0KGl0KTsKKyAgICAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoaXRlbSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CiB2YWxpZGF0ZV9leHByKGV4cHJfdHkgZXhwLCBleHByX2NvbnRleHRfdHkgY3R4KQogewogICAgIGludCBjaGVja19jdHggPSAxOwpAQCAtMjQwLDYgKzI4NiwxNCBAQAogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5mdW5jLCBMb2FkKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNhbGwuYXJncywgTG9hZCwgMCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIGlmICghdmFsaWRhdGVfY29uc3RhbnQoZXhwLT52LkNvbnN0YW50LnZhbHVlKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGFuIGludmFsaWQgdHlwZSBpbiBDb25zdGFudDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZXhwLT52LkNvbnN0YW50LnZhbHVlKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIE51bV9raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpuID0gZXhwLT52Lk51bS5uOwogICAgICAgICBpZiAoIVB5TG9uZ19DaGVja0V4YWN0KG4pICYmICFQeUZsb2F0X0NoZWNrRXhhY3QobikgJiYKQEAgLTI1Nyw2ICszMTEsMTQgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMTsKICAgICB9CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5Kb2luZWRTdHIudmFsdWVzLCBMb2FkLCAwKTsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIGlmICh2YWxpZGF0ZV9leHByKGV4cC0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSwgTG9hZCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjLCBMb2FkKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBCeXRlc19raW5kOiB7CiAgICAgICAgIFB5T2JqZWN0ICpiID0gZXhwLT52LkJ5dGVzLnM7CiAgICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGIpKSB7CkBAIC0zMzUsNiArMzk3LDE3IEBACiAgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5BdWdBc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LkFubkFzc2lnbi50YXJnZXQtPmtpbmQgIT0gTmFtZV9raW5kICYmCisgICAgICAgICAgICBzdG10LT52LkFubkFzc2lnbi5zaW1wbGUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFubkFzc2lnbiB3aXRoIHNpbXBsZSBub24tTmFtZSB0YXJnZXQiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICAgICAoIXN0bXQtPnYuQW5uQXNzaWduLnZhbHVlIHx8CisgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFubkFzc2lnbi52YWx1ZSwgTG9hZCkpICYmCisgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLmFubm90YXRpb24sIExvYWQpOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLnRhcmdldCwgU3RvcmUpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuRm9yLml0ZXIsIExvYWQpICYmCkBAIC00MTMsOCArNDg2LDggQEAKICAgICBjYXNlIEltcG9ydF9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0Lm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0Iik7CiAgICAgY2FzZSBJbXBvcnRGcm9tX2tpbmQ6Ci0gICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAtMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbXBvcnRGcm9tIGxldmVsIGxlc3MgdGhhbiAtMSIpOworICAgICAgICBpZiAoc3RtdC0+di5JbXBvcnRGcm9tLmxldmVsIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJOZWdhdGl2ZSBJbXBvcnRGcm9tIGxldmVsIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0RnJvbS5uYW1lcywgIm5hbWVzIiwgIkltcG9ydEZyb20iKTsKQEAgLTUxMiw4ICs1ODUsNyBAQAogCiAvKiBEYXRhIHN0cnVjdHVyZSB1c2VkIGludGVybmFsbHkgKi8KIHN0cnVjdCBjb21waWxpbmcgewotICAgIGNoYXIgKmNfZW5jb2Rpbmc7IC8qIHNvdXJjZSBlbmNvZGluZyAqLwotICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIGFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbWVvcnkgKi8KKyAgICBQeUFyZW5hICpjX2FyZW5hOyAvKiBBcmVuYSBmb3IgYWxsb2NhdGluZyBtZW1vcnkuICovCiAgICAgUHlPYmplY3QgKmNfZmlsZW5hbWU7IC8qIGZpbGVuYW1lICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplOyAvKiBOb3JtYWxpemF0aW9uIGZ1bmN0aW9uIGZyb20gdW5pY29kZWRhdGEuICovCiAgICAgUHlPYmplY3QgKmNfbm9ybWFsaXplX2FyZ3M7IC8qIE5vcm1hbGl6YXRpb24gYXJndW1lbnQgdHVwbGUuICovCkBAIC01MzUsOSArNjA3LDcgQEAKIHN0YXRpYyBleHByX3R5IGFzdF9mb3JfY2FsbChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKiwgZXhwcl90eSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqcGFyc2VudW1iZXIoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBjaGFyICopOwotc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKTsKLXN0YXRpYyBQeU9iamVjdCAqcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqYnl0ZXNtb2RlKTsKK3N0YXRpYyBleHByX3R5IHBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4pOwogCiAjZGVmaW5lIENPTVBfR0VORVhQICAgMAogI2RlZmluZSBDT01QX0xJU1RDT01QIDEKQEAgLTcwMSwyMyArNzcxLDExIEBACiAgICAgYy5jX2FyZW5hID0gYXJlbmE7CiAgICAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCiAgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgYy5jX25vcm1hbGl6ZSA9IGMuY19ub3JtYWxpemVfYXJncyA9IE5VTEw7Ci0gICAgaWYgKGZsYWdzICYmIGZsYWdzLT5jZl9mbGFncyAmIFB5Q0ZfU09VUkNFX0lTX1VURjgpIHsKLSAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKLSAgICAgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotI2lmIDAKLSAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKLSAgICAgICAgICAgIGdvdG8gb3V0OwotI2VuZGlmCi0gICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewotICAgICAgICBjLmNfZW5jb2RpbmcgPSBTVFIobik7CisgICAgYy5jX25vcm1hbGl6ZSA9IE5VTEw7CisgICAgYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKKworICAgIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpCiAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBQRVAgMzEyMCAqLwotICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwotICAgIH0KIAogICAgIGsgPSAwOwogICAgIHN3aXRjaCAoVFlQRShuKSkgewpAQCAtODY0LDcgKzkyMiw3IEBACiAgICAgfQogfQogCi1zdGF0aWMgY29uc3QgY2hhciogRk9SQklEREVOW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IEZPUkJJRERFTltdID0gewogICAgICJOb25lIiwKICAgICAiVHJ1ZSIsCiAgICAgIkZhbHNlIiwKQEAgLTg4MCw4ICs5MzgsMjggQEAKICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiYXN5bmMiKSA9PSAwIHx8CisgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJhd2FpdCIpID09IDApCisgICAgeworICAgICAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKAorICAgICAgICAgICAgIidhc3luYycgYW5kICdhd2FpdCcgd2lsbCBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHMiCisgICAgICAgICAgICAiIGluIFB5dGhvbiAzLjciKTsKKyAgICAgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICBjLT5jX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgIE5VTEwpIDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGZ1bGxfY2hlY2tzKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKipwOworICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKnA7CiAgICAgICAgIGZvciAocCA9IEZPUkJJRERFTjsgKnA7IHArKykgewogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICpwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKQEAgLTk0MywxMyArMTAyMSw4IEBACiAgICAgICAgICAgICBzID0gZS0+di5MaXN0LmVsdHM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUdXBsZV9raW5kOgotICAgICAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpKSAgewotICAgICAgICAgICAgICAgIGUtPnYuVHVwbGUuY3R4ID0gY3R4OwotICAgICAgICAgICAgICAgIHMgPSBlLT52LlR1cGxlLmVsdHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHByX25hbWUgPSAiKCkiOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZS0+di5UdXBsZS5jdHggPSBjdHg7CisgICAgICAgICAgICBzID0gZS0+di5UdXBsZS5lbHRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGFtYmRhX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGFtYmRhIjsKQEAgLTk4Niw2ICsxMDU5LDggQEAKICAgICAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgY2FzZSBTdHJfa2luZDoKICAgICAgICAgY2FzZSBCeXRlc19raW5kOgorICAgICAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGl0ZXJhbCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKQEAgLTEyNTksMTYgKzEzMzQsMjAgQEAKICAgICAgICBhbmQgdmFyYXJnc2xpc3QgKGxhbWJkYSBkZWZpbml0aW9uKS4KIAogICAgICAgIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi0gICAgICAgdHlwZWRhcmdzbGlzdDogKCh0ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICAgICAgICAgICAoJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXQotICAgICAgICAgICB8ICcqKicgdGZwZGVmKQotICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXSkKICAgICAgICB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICAgICAgIHZhcmFyZ3NsaXN0OiAoKHZmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gICAgICAgICAgICgnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqICBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgICB8ICcqKicgdmZwZGVmKQotICAgICAgICAgICB8IHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB2YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKyAgICAgICApCiAgICAgICAgdmZwZGVmOiBOQU1FCisKICAgICAqLwogICAgIGludCBpLCBqLCBrLCBucG9zYXJncyA9IDAsIG5rd29ubHlhcmdzID0gMDsKICAgICBpbnQgbnBvc2RlZmF1bHRzID0gMCwgZm91bmRfZGVmYXVsdCA9IDA7CkBAIC0xMzcwLDcgKzE0NDksOCBAQAogICAgICAgICAgICAgICAgIGkgKz0gMjsgLyogdGhlIG5hbWUgYW5kIHRoZSBjb21tYSAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVEFSOgotICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pKSB7CisgICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikgfHwKKyAgICAgICAgICAgICAgICAgICAgKGkrMiA9PSBOQ0gobikgJiYgVFlQRShDSElMRChuLCBpKzEpKSA9PSBDT01NQSkpIHsKICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNjg3LDE0ICsxNzY3LDIxIEBACiBjb3VudF9jb21wX2ZvcnMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBpbnQgbl9mb3JzID0gMDsKKyAgICBpbnQgaXNfYXN5bmM7CiAKICAgY291bnRfY29tcF9mb3I6CisgICAgaXNfYXN5bmMgPSAwOwogICAgIG5fZm9ycysrOwogICAgIFJFUShuLCBjb21wX2Zvcik7Ci0gICAgaWYgKE5DSChuKSA9PSA1KQotICAgICAgICBuID0gQ0hJTEQobiwgNCk7Ci0gICAgZWxzZQorICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBBU1lOQykgeworICAgICAgICBpc19hc3luYyA9IDE7CisgICAgfQorICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKKyAgICAgICAgbiA9IENISUxEKG4sIDQgKyBpc19hc3luYyk7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXR1cm4gbl9mb3JzOworICAgIH0KICAgY291bnRfY29tcF9pdGVyOgogICAgIFJFUShuLCBjb21wX2l0ZXIpOwogICAgIG4gPSBDSElMRChuLCAwKTsKQEAgLTE3NTcsMTQgKzE4NDQsMTkgQEAKICAgICAgICAgYXNkbF9zZXEgKnQ7CiAgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbiwgZmlyc3Q7CiAgICAgICAgIG5vZGUgKmZvcl9jaDsKKyAgICAgICAgaW50IGlzX2FzeW5jID0gMDsKIAogICAgICAgICBSRVEobiwgY29tcF9mb3IpOwogCi0gICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEpOworICAgICAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVNZTkMpIHsKKyAgICAgICAgICAgIGlzX2FzeW5jID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEgKyBpc19hc3luYyk7CiAgICAgICAgIHQgPSBhc3RfZm9yX2V4cHJsaXN0KGMsIGZvcl9jaCwgU3RvcmUpOwogICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAzKSk7CisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMyArIGlzX2FzeW5jKSk7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzcyLDE5ICsxODY0LDIwIEBACiAgICAgICAgICAgICh4IGZvciB4LCBpbiAuLi4pIGhhcyAxIGVsZW1lbnQgaW4gdCwgYnV0IHN0aWxsIHJlcXVpcmVzIGEgVHVwbGUuICovCiAgICAgICAgIGZpcnN0ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHQsIDApOwogICAgICAgICBpZiAoTkNIKGZvcl9jaCkgPT0gMSkKLSAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXN5bmMsIGMtPmNfYXJlbmEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywgZmlyc3QtPmNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiwgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LT5jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIE5VTEwsIGlzX2FzeW5jLCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKCFjb21wKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKE5DSChuKSA9PSA1KSB7CisgICAgICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKICAgICAgICAgICAgIGludCBqLCBuX2lmczsKICAgICAgICAgICAgIGFzZGxfc2VxICppZnM7CiAKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCA0KTsKKyAgICAgICAgICAgIG4gPSBDSElMRChuLCA0ICsgaXNfYXN5bmMpOwogICAgICAgICAgICAgbl9pZnMgPSBjb3VudF9jb21wX2lmcyhjLCBuKTsKICAgICAgICAgICAgIGlmIChuX2lmcyA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE5OTMsNyArMjA4Niw2IEBACiAgICAgICAgfCAnLi4uJyB8ICdOb25lJyB8ICdUcnVlJyB8ICdGYWxzZScKICAgICAqLwogICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7Ci0gICAgaW50IGJ5dGVzbW9kZSA9IDA7CiAKICAgICBzd2l0Y2ggKFRZUEUoY2gpKSB7CiAgICAgY2FzZSBOQU1FOiB7CkBAIC0yMDE1LDcgKzIxMDcsNyBAQAogICAgICAgICByZXR1cm4gTmFtZShuYW1lLCBMb2FkLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdHIgPSBwYXJzZXN0cnBsdXMoYywgbiwgJmJ5dGVzbW9kZSk7CisgICAgICAgIGV4cHJfdHkgc3RyID0gcGFyc2VzdHJwbHVzKGMsIG4pOwogICAgICAgICBpZiAoIXN0cikgewogICAgICAgICAgICAgY29uc3QgY2hhciAqZXJydHlwZSA9IE5VTEw7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRXJyb3IpKQpAQCAtMjAzMiw2ICsyMTI0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKCVzKSAlcyIsIGVycnR5cGUsIHMpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIoJXMpIHVua25vd24gZXJyb3IiLCBlcnJ0eXBlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CkBAIC0yMDQxLDE0ICsyMTM0LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChieXRlc21vZGUpCi0gICAgICAgICAgICByZXR1cm4gQnl0ZXMoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTdHIoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIFB5T2JqZWN0ICpweW51bSA9IHBhcnNlbnVtYmVyKGMsIFNUUihjaCkpOwpAQCAtMjgwNSw4ICsyODkxLDkgQEAKIGFzdF9mb3JfZXhwcl9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgUkVRKG4sIGV4cHJfc3RtdCk7Ci0gICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkKLSAgICAgICAgICAgICAgICB8ICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3QpKSopCisgICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorICAgICAgIGFubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KICAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JwogICAgICAgICAgICAgICAgIHwgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScKQEAgLTI4NTgsNiArMjk0NSw3NiBAQAogCiAgICAgICAgIHJldHVybiBBdWdBc3NpZ24oZXhwcjEsIG5ld29wZXJhdG9yLCBleHByMiwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KKyAgICBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBhbm5hc3NpZ24pIHsKKyAgICAgICAgZXhwcl90eSBleHByMSwgZXhwcjIsIGV4cHIzOworICAgICAgICBub2RlICpjaCA9IENISUxEKG4sIDApOworICAgICAgICBub2RlICpkZWVwLCAqYW5uID0gQ0hJTEQobiwgMSk7CisgICAgICAgIGludCBzaW1wbGUgPSAxOworCisgICAgICAgIC8qIHdlIGtlZXAgdHJhY2sgb2YgcGFyZW5zIHRvIHF1YWxpZnkgKHgpIGFzIGV4cHJlc3Npb24gbm90IG5hbWUgKi8KKyAgICAgICAgZGVlcCA9IGNoOworICAgICAgICB3aGlsZSAoTkNIKGRlZXApID09IDEpIHsKKyAgICAgICAgICAgIGRlZXAgPSBDSElMRChkZWVwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTkNIKGRlZXApID4gMCAmJiBUWVBFKENISUxEKGRlZXAsIDApKSA9PSBMUEFSKSB7CisgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICB9CisgICAgICAgIGV4cHIxID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZXhwcjEtPmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBleHByMS0+di5OYW1lLmlkLCBuLCAwKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuTmFtZS5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGV4cHIxLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuQXR0cmlidXRlLmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgICAgICAgICBleHByMS0+di5TdWJzY3JpcHQuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHNpbmdsZSB0YXJnZXQgKG5vdCBsaXN0KSBjYW4gYmUgYW5ub3RhdGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBzaW5nbGUgdGFyZ2V0IChub3QgdHVwbGUpIGNhbiBiZSBhbm5vdGF0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB0YXJnZXQgZm9yIGFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHByMS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKKyAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY2ggPSBDSElMRChhbm4sIDEpOworICAgICAgICBleHByMiA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjIpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChOQ0goYW5uKSA9PSAyKSB7CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgTlVMTCwgc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCA9IENISUxEKGFubiwgMyk7CisgICAgICAgICAgICBleHByMyA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgICAgICBpZiAoIWV4cHIzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgZXhwcjMsIHNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICB9CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBpbnQgaTsKICAgICAgICAgYXNkbF9zZXEgKnRhcmdldHM7CkBAIC0yOTkyLDkgKzMxNDksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGZsb3dfc3RtdDogJWQiLCBUWVBFKGNoKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmhhbmRsZWQgZmxvdyBzdGF0ZW1lbnQiKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGFsaWFzX3R5CkBAIC0zMjA4LDE0ICszMzYyLDE0IEBACiAgICAgICAgICAgICBhbGlhc190eSBpbXBvcnRfYWxpYXMgPSBhbGlhc19mb3JfaW1wb3J0X25hbWUoYywgbiwgMSk7CiAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgMCwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCAwLCBpbXBvcnRfYWxpYXMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICAgYWxpYXNfdHkgaW1wb3J0X2FsaWFzID0gYWxpYXNfZm9yX2ltcG9ydF9uYW1lKGMsIENISUxEKG4sIGkpLCAxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCBpIC8gMiwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgaSAvIDIsIGltcG9ydF9hbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1vZCAhPSBOVUxMKQpAQCAtMzg4MSw3ICs0MDM1LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCitwYXJzZW51bWJlcl9yYXcoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKIHsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgbG9uZyB4OwpAQCAtMzkyNCw2ICs0MDc4LDMxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQoreworICAgIGNoYXIgKmR1cCwgKmVuZDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGFzc2VydChzICE9IE5VTEwpOworCisgICAgaWYgKHN0cmNocihzLCAnXycpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlbnVtYmVyX3JhdyhjLCBzKTsKKyAgICB9CisgICAgLyogQ3JlYXRlIGEgZHVwbGljYXRlIHdpdGhvdXQgdW5kZXJzY29yZXMuICovCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKHN0cmxlbihzKSArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBmb3IgKDsgKnM7IHMrKykgeworICAgICAgICBpZiAoKnMgIT0gJ18nKSB7CisgICAgICAgICAgICAqZW5kKysgPSAqczsKKyAgICAgICAgfQorICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXMgPSBwYXJzZW51bWJlcl9yYXcoYywgZHVwKTsKKyAgICBQeU1lbV9GcmVlKGR1cCk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQpCiB7CiAgICAgY29uc3QgY2hhciAqcywgKnQ7CkBAIC0zOTM1LDg0ICs0MTE0LDg2MiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZGVjb2RlX3VuaWNvZGUoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbiwgaW50IHJhd21vZGUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQorZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiB7CiAgICAgUHlPYmplY3QgKnYsICp1OwogICAgIGNoYXIgKmJ1ZjsKICAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIHUgPSBOVUxMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgICAgIGlmIChsZW4gPiBQWV9TSVpFX01BWCAvIDYpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogIsOkIiAoMiBieXRlcykgbWF5IGJlY29tZSAiXFUwMDAwMDBFNCIgKDEwIGJ5dGVzKSwgb3IgMTo1Ci0gICAgICAgICAgICJcw6QiICgzIGJ5dGVzKSBtYXkgYmVjb21lICJcdTAwNWNcVTAwMDAwMEU0IiAoMTYgYnl0ZXMpLCBvciB+MTo2ICovCi0gICAgICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7Ci0gICAgICAgIGVuZCA9IHMgKyBsZW47Ci0gICAgICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgICAgICBpZiAoKnMgPT0gJ1xcJykgewotICAgICAgICAgICAgICAgICpwKysgPSAqcysrOwotICAgICAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdzsKLSAgICAgICAgICAgICAgICBpbnQga2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpkYXRhOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBpOwotICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKLSAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh3KTsKLSAgICAgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOwotICAgICAgICAgICAgICAgICAgICBwICs9IDEwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgIGFzc2VydChwIC0gYnVmIDw9IFB5X1NJWkUodSkpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICBpZiAobGVuID4gU0laRV9NQVggLyA2KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiAiw6QiICgyIGJ5dGVzKSBtYXkgYmVjb21lICJcVTAwMDAwMEU0IiAoMTAgYnl0ZXMpLCBvciAxOjUKKyAgICAgICAiXMOkIiAoMyBieXRlcykgbWF5IGJlY29tZSAiXHUwMDVjXFUwMDAwMDBFNCIgKDE2IGJ5dGVzKSwgb3IgfjE6NiAqLworICAgIHUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuICogNik7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodSk7CisgICAgZW5kID0gcyArIGxlbjsKKyAgICB3aGlsZSAocyA8IGVuZCkgeworICAgICAgICBpZiAoKnMgPT0gJ1xcJykgeworICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7CisgICAgICAgICAgICAgICAgc3RyY3B5KHAsICJ1MDA1YyIpOworICAgICAgICAgICAgICAgIHAgKz0gNTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBsZW4gPSBwIC0gYnVmOwotICAgICAgICBzID0gYnVmOworICAgICAgICBpZiAoKnMgJiAweDgwKSB7IC8qIFhYWCBpbmVmZmljaWVudCAqLworICAgICAgICAgICAgUHlPYmplY3QgKnc7CisgICAgICAgICAgICBpbnQga2luZDsKKyAgICAgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kKTsKKyAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7CisgICAgICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodyk7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3KTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTA4eCIsIGNocik7CisgICAgICAgICAgICAgICAgcCArPSAxMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIG92ZXJmbG93ICovCisgICAgICAgICAgICBhc3NlcnQocCAtIGJ1ZiA8PSBQeV9TSVpFKHUpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICpwKysgPSAqcysrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChyYXdtb2RlKQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOworICAgIGxlbiA9IHAgLSBidWY7CisgICAgcyA9IGJ1ZjsKKworICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOwogICAgIFB5X1hERUNSRUYodSk7CiAgICAgcmV0dXJuIHY7CiB9CiAKLS8qIHMgaXMgYSBQeXRob24gc3RyaW5nIGxpdGVyYWwsIGluY2x1ZGluZyB0aGUgYnJhY2tldGluZyBxdW90ZSBjaGFyYWN0ZXJzLAotICogYW5kIHIgJi9vciBiIHByZWZpeGVzIChpZiBhbnkpLCBhbmQgZW1iZWRkZWQgZXNjYXBlIHNlcXVlbmNlcyAoaWYgYW55KS4KLSAqIHBhcnNlc3RyIHBhcnNlcyBpdCwgYW5kIHJldHVybnMgdGhlIGRlY29kZWQgUHl0aG9uIHN0cmluZyBvYmplY3QuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSkKKy8qIENvbXBpbGUgdGhpcyBleHByZXNzaW9uIGluIHRvIGFuIGV4cHJfdHkuICBBZGQgcGFyZW5zIGFyb3VuZCB0aGUKKyAgIGV4cHJlc3Npb24sIGluIG9yZGVyIHRvIGFsbG93IGxlYWRpbmcgc3BhY2VzIGluIHRoZSBleHByZXNzaW9uLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfY29tcGlsZV9leHByKGNvbnN0IGNoYXIgKmV4cHJfc3RhcnQsIGNvbnN0IGNoYXIgKmV4cHJfZW5kLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKKworeworICAgIGludCBhbGxfd2hpdGVzcGFjZSA9IDE7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeUNvbXBpbGVyRmxhZ3MgY2Y7CisgICAgbW9kX3R5IG1vZDsKKyAgICBjaGFyICpzdHI7CisgICAgUHlPYmplY3QgKm87CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KGV4cHJfZW5kID49IGV4cHJfc3RhcnQpOworICAgIGFzc2VydCgqKGV4cHJfc3RhcnQtMSkgPT0gJ3snKTsKKyAgICBhc3NlcnQoKmV4cHJfZW5kID09ICd9JyB8fCAqZXhwcl9lbmQgPT0gJyEnIHx8ICpleHByX2VuZCA9PSAnOicpOworCisgICAgLyogV2Uga25vdyB0aGVyZSBhcmUgbm8gZXNjYXBlcyBoZXJlLCBiZWNhdXNlIGJhY2tzbGFzaGVzIGFyZSBub3QgYWxsb3dlZCwKKyAgICAgICBhbmQgd2Uga25vdyBpdCdzIHV0Zi04IGVuY29kZWQgKHBlciBQRVAgMjYzKS4gIEJ1dCwgaW4gb3JkZXIgdG8gY2hlY2sKKyAgICAgICB0aGF0IGVhY2ggY2hhciBpcyBub3Qgd2hpdGVzcGFjZSwgd2UgbmVlZCB0byBkZWNvZGUgaXQgdG8gdW5pY29kZS4KKyAgICAgICBXaGljaCBpcyB1bmZvcnR1bmF0ZSwgYnV0IHN1Y2ggaXMgbGlmZS4gKi8KKworICAgIC8qIElmIHRoZSBzdWJzdHJpbmcgaXMgYWxsIHdoaXRlc3BhY2UsIGl0J3MgYW4gZXJyb3IuICBXZSBuZWVkIHRvIGNhdGNoCisgICAgICAgdGhpcyBoZXJlLCBhbmQgbm90IHdoZW4gd2UgY2FsbCBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nLCBiZWNhdXNlIHR1cm5pbmcKKyAgICAgICB0aGUgZXhwcmVzc2lvbiAnJyBpbiB0byAnKCknIHdvdWxkIGdvIGZyb20gYmVpbmcgaW52YWxpZCB0byB2YWxpZC4gKi8KKyAgICAvKiBOb3RlIHRoYXQgdGhpcyBjb2RlIHNheXMgYW4gZW1wdHkgc3RyaW5nIGlzIGFsbCB3aGl0ZXNwYWNlLiAgVGhhdCdzCisgICAgICAgaW1wb3J0YW50LiAgVGhlcmUncyBhIHRlc3QgZm9yIGl0OiBmJ3t9Jy4gKi8KKyAgICBvID0gUHlVbmljb2RlX0RlY29kZVVURjgoZXhwcl9zdGFydCwgZXhwcl9lbmQtZXhwcl9zdGFydCwgTlVMTCk7CisgICAgaWYgKG8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobyk7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG8pOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTU1BBQ0UoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKSB7CisgICAgICAgICAgICBhbGxfd2hpdGVzcGFjZSA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9ERUNSRUYobyk7CisgICAgaWYgKGFsbF93aGl0ZXNwYWNlKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGVtcHR5IGV4cHJlc3Npb24gbm90IGFsbG93ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogUmV1c2UgbGVuIHRvIGJlIHRoZSBsZW5ndGggb2YgdGhlIHV0Zi04IGlucHV0IHN0cmluZy4gKi8KKyAgICBsZW4gPSBleHByX2VuZCAtIGV4cHJfc3RhcnQ7CisgICAgLyogQWxsb2NhdGUgMyBleHRyYSBieXRlczogb3BlbiBwYXJlbiwgY2xvc2UgcGFyZW4sIG51bGwgYnl0ZS4gKi8KKyAgICBzdHIgPSBQeU1lbV9SYXdNYWxsb2MobGVuICsgMyk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0clswXSA9ICcoJzsKKyAgICBtZW1jcHkoc3RyKzEsIGV4cHJfc3RhcnQsIGxlbik7CisgICAgc3RyW2xlbisxXSA9ICcpJzsKKyAgICBzdHJbbGVuKzJdID0gMDsKKworICAgIGNmLmNmX2ZsYWdzID0gUHlDRl9PTkxZX0FTVDsKKyAgICBtb2QgPSBQeVBhcnNlcl9BU1RGcm9tU3RyaW5nKHN0ciwgIjxmc3RyaW5nPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ldmFsX2lucHV0LCAmY2YsIGMtPmNfYXJlbmEpOworICAgIFB5TWVtX1Jhd0ZyZWUoc3RyKTsKKyAgICBpZiAoIW1vZCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG1vZC0+di5FeHByZXNzaW9uLmJvZHk7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXRlcmFsLgorCisgICBSZXR1cm4gMSBpZiB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGl0ZXJhbCwgYnV0IHdlIHdhbnQKKyAgIHRoZSBjYWxsZXIgdG8gcHJvY2VzcyB0aGUgbGl0ZXJhbCB1cCB0byB0aGlzIHBvaW50LiBVc2VkIGZvcgorICAgZG91YmxlZCBicmFjZXMuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWwoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipsaXRlcmFsLCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIEdldCBhbnkgbGl0ZXJhbCBzdHJpbmcuIEl0IGVuZHMgd2hlbiB3ZSBoaXQgYW4gdW4tZG91YmxlZCBsZWZ0CisgICAgICAgYnJhY2UgKHdoaWNoIGlzbid0IHBhcnQgb2YgYSB1bmljb2RlIG5hbWUgZXNjYXBlIHN1Y2ggYXMKKyAgICAgICAiXE57RVVMRVIgQ09OU1RBTlR9IiksIG9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KKworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfc3RhcnQgPSAqc3RyOworICAgIGNvbnN0IGNoYXIgKmxpdGVyYWxfZW5kOworICAgIGludCBpbl9uYW1lZF9lc2NhcGUgPSAwOworICAgIGludCByZXN1bHQgPSAwOworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwpOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoID0gKipzdHI7CisgICAgICAgIGlmICghaW5fbmFtZWRfZXNjYXBlICYmIGNoID09ICd7JyAmJiAoKnN0ciktbGl0ZXJhbF9zdGFydCA+PSAyICYmCisgICAgICAgICAgICAqKCpzdHItMikgPT0gJ1xcJyAmJiAqKCpzdHItMSkgPT0gJ04nKSB7CisgICAgICAgICAgICBpbl9uYW1lZF9lc2NhcGUgPSAxOworICAgICAgICB9IGVsc2UgaWYgKGluX25hbWVkX2VzY2FwZSAmJiBjaCA9PSAnfScpIHsKKyAgICAgICAgICAgIGluX25hbWVkX2VzY2FwZSA9IDA7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ3snIHx8IGNoID09ICd9JykgeworICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGRvdWJsZWQgYnJhY2VzLCBidXQgb25seSBhdCB0aGUgdG9wIGxldmVsLiBJZgorICAgICAgICAgICAgICAgd2UgY2hlY2tlZCBhdCBldmVyeSBsZXZlbCwgdGhlbiBmJ3swOnszfX0nIHdvdWxkIGZhaWwKKyAgICAgICAgICAgICAgIHdpdGggdGhlIHR3byBjbG9zaW5nIGJyYWNlcy4gKi8KKyAgICAgICAgICAgIGlmIChyZWN1cnNlX2x2bCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzdHIrMSA8IGVuZCAmJiAqKCpzdHIrMSkgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgZ29pbmcgdG8gdGVsbCB0aGUgY2FsbGVyIHRoYXQgdGhlIGxpdGVyYWwgZW5kcworICAgICAgICAgICAgICAgICAgICAgICBoZXJlLCBidXQgdGhhdCB0aGV5IHNob3VsZCBjb250aW51ZSBzY2FubmluZy4gQnV0IGFsc28KKyAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyIHRoZSBzZWNvbmQgYnJhY2Ugd2hlbiB3ZSByZXN1bWUgc2Nhbm5pbmcuICovCisgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kID0gKnN0cisxOworICAgICAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBXaGVyZSBhIHNpbmdsZSAneycgaXMgdGhlIHN0YXJ0IG9mIGEgbmV3IGV4cHJlc3Npb24sIGEKKyAgICAgICAgICAgICAgICAgICBzaW5nbGUgJ30nIGlzIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnfScpIHsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogV2UncmUgZWl0aGVyIGF0IGEgJ3snLCB3aGljaCBtZWFucyB3ZSdyZSBzdGFydGluZyBhbm90aGVyCisgICAgICAgICAgICAgICBleHByZXNzaW9uOyBvciBhICd9Jywgd2hpY2ggbWVhbnMgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGlzCisgICAgICAgICAgICAgICBmLXN0cmluZyAoZm9yIGEgbmVzdGVkIGZvcm1hdF9zcGVjKS4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGxpdGVyYWxfZW5kID0gKnN0cjsKKyAgICBhc3NlcnQoKnN0ciA8PSBlbmQpOworICAgIGFzc2VydCgqc3RyID09IGVuZCB8fCAqKnN0ciA9PSAneycgfHwgKipzdHIgPT0gJ30nKTsKK2RvbmU6CisgICAgaWYgKGxpdGVyYWxfc3RhcnQgIT0gbGl0ZXJhbF9lbmQpIHsKKyAgICAgICAgaWYgKHJhdykKKyAgICAgICAgICAgICpsaXRlcmFsID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChsaXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kLWxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpsaXRlcmFsID0gZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKGMsIGxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZC1saXRlcmFsX3N0YXJ0KTsKKyAgICAgICAgaWYgKCEqbGl0ZXJhbCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBiZWNhdXNlIHBhcnNpbmcgaXMgcmVjdXJzaXZlLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pOworCisvKiBQYXJzZSB0aGUgZi1zdHJpbmcgYXQgKnN0ciwgZW5kaW5nIGF0IGVuZC4gIFdlIGtub3cgKnN0ciBzdGFydHMgYW4KKyAgIGV4cHJlc3Npb24gKHNvIGl0IG11c3QgYmUgYSAneycpLiBSZXR1cm5zIHRoZSBGb3JtYXR0ZWRWYWx1ZSBub2RlLAorICAgd2hpY2ggaW5jbHVkZXMgdGhlIGV4cHJlc3Npb24sIGNvbnZlcnNpb24gY2hhcmFjdGVyLCBhbmQKKyAgIGZvcm1hdF9zcGVjIGV4cHJlc3Npb24uCisKKyAgIE5vdGUgdGhhdCBJIGRvbid0IGRvIGEgcGVyZmVjdCBqb2IgaGVyZTogSSBkb24ndCBtYWtlIHN1cmUgdGhhdCBhCisgICBjbG9zaW5nIGJyYWNlIGRvZXNuJ3QgbWF0Y2ggYW4gb3BlbmluZyBwYXJlbiwgZm9yIGV4YW1wbGUuIEl0CisgICBkb2Vzbid0IG5lZWQgdG8gZXJyb3Igb24gYWxsIGludmFsaWQgZXhwcmVzc2lvbnMsIGp1c3QgY29ycmVjdGx5CisgICBmaW5kIHRoZSBlbmQgb2YgYWxsIHZhbGlkIG9uZXMuIEFueSBlcnJvcnMgaW5zaWRlIHRoZSBleHByZXNzaW9uCisgICB3aWxsIGJlIGNhdWdodCB3aGVuIHdlIHBhcnNlIGl0IGxhdGVyLiAqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLCBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIC8qIFJldHVybiAtMSBvbiBlcnJvciwgZWxzZSAwLiAqLworCisgICAgY29uc3QgY2hhciAqZXhwcl9zdGFydDsKKyAgICBjb25zdCBjaGFyICpleHByX2VuZDsKKyAgICBleHByX3R5IHNpbXBsZV9leHByZXNzaW9uOworICAgIGV4cHJfdHkgZm9ybWF0X3NwZWMgPSBOVUxMOyAvKiBPcHRpb25hbCBmb3JtYXQgc3BlY2lmaWVyLiAqLworICAgIGludCBjb252ZXJzaW9uID0gLTE7IC8qIFRoZSBjb252ZXJzaW9uIGNoYXIuIC0xIGlmIG5vdCBzcGVjaWZpZWQuICovCisKKyAgICAvKiAwIGlmIHdlJ3JlIG5vdCBpbiBhIHN0cmluZywgZWxzZSB0aGUgcXVvdGUgY2hhciB3ZSdyZSB0cnlpbmcgdG8KKyAgICAgICBtYXRjaCAoc2luZ2xlIG9yIGRvdWJsZSBxdW90ZSkuICovCisgICAgY2hhciBxdW90ZV9jaGFyID0gMDsKKworICAgIC8qIElmIHdlJ3JlIGluc2lkZSBhIHN0cmluZywgMT1ub3JtYWwsIDM9dHJpcGxlLXF1b3RlZC4gKi8KKyAgICBpbnQgc3RyaW5nX3R5cGUgPSAwOworCisgICAgLyogS2VlcCB0cmFjayBvZiBuZXN0aW5nIGxldmVsIGZvciBicmFjZXMvcGFyZW5zL2JyYWNrZXRzIGluCisgICAgICAgZXhwcmVzc2lvbnMuICovCisgICAgUHlfc3NpemVfdCBuZXN0ZWRfZGVwdGggPSAwOworCisgICAgLyogQ2FuIG9ubHkgbmVzdCBvbmUgbGV2ZWwgZGVlcC4gKi8KKyAgICBpZiAocmVjdXJzZV9sdmwgPj0gMikgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogVGhlIGZpcnN0IGNoYXIgbXVzdCBiZSBhIGxlZnQgYnJhY2UsIG9yIHdlIHdvdWxkbid0IGhhdmUgZ290dGVuCisgICAgICAgaGVyZS4gU2tpcCBvdmVyIGl0LiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworICAgICpzdHIgKz0gMTsKKworICAgIGV4cHJfc3RhcnQgPSAqc3RyOworICAgIGZvciAoOyAqc3RyIDwgZW5kOyAoKnN0cikrKykgeworICAgICAgICBjaGFyIGNoOworCisgICAgICAgIC8qIExvb3AgaW52YXJpYW50cy4gKi8KKyAgICAgICAgYXNzZXJ0KG5lc3RlZF9kZXB0aCA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KCpzdHIgPj0gZXhwcl9zdGFydCAmJiAqc3RyIDwgZW5kKTsKKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpCisgICAgICAgICAgICBhc3NlcnQoc3RyaW5nX3R5cGUgPT0gMSB8fCBzdHJpbmdfdHlwZSA9PSAzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KHN0cmluZ190eXBlID09IDApOworCisgICAgICAgIGNoID0gKipzdHI7CisgICAgICAgIC8qIE5vd2hlcmUgaW5zaWRlIGFuIGV4cHJlc3Npb24gaXMgYSBiYWNrc2xhc2ggYWxsb3dlZC4gKi8KKyAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKKyAgICAgICAgICAgIC8qIEVycm9yOiBjYW4ndCBpbmNsdWRlIGEgYmFja3NsYXNoIGNoYXJhY3RlciwgaW5zaWRlCisgICAgICAgICAgICAgICBwYXJlbnMgb3Igc3RyaW5ncyBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgICAgIC8qIFdlJ3JlIGluc2lkZSBhIHN0cmluZy4gU2VlIGlmIHdlJ3JlIGF0IHRoZSBlbmQuICovCisgICAgICAgICAgICAvKiBUaGlzIGNvZGUgbmVlZHMgdG8gaW1wbGVtZW50IHRoZSBzYW1lIG5vbi1lcnJvciBsb2dpYworICAgICAgICAgICAgICAgYXMgdG9rX2dldCBmcm9tIHRva2VuaXplci5jLCBhdCB0aGUgbGV0dGVyX3F1b3RlCisgICAgICAgICAgICAgICBsYWJlbC4gVG8gYWN0dWFsbHkgc2hhcmUgdGhhdCBjb2RlIHdvdWxkIGJlIGEKKyAgICAgICAgICAgICAgIG5pZ2h0bWFyZS4gQnV0LCBpdCdzIHVubGlrZWx5IHRvIGNoYW5nZSBhbmQgaXMgc21hbGwsCisgICAgICAgICAgICAgICBzbyBkdXBsaWNhdGUgaXQgaGVyZS4gTm90ZSB3ZSBkb24ndCBuZWVkIHRvIGNhdGNoIGFsbAorICAgICAgICAgICAgICAgb2YgdGhlIGVycm9ycywgc2luY2UgdGhleSdsbCBiZSBjYXVnaHQgd2hlbiBwYXJzaW5nIHRoZQorICAgICAgICAgICAgICAgZXhwcmVzc2lvbi4gV2UganVzdCBuZWVkIHRvIG1hdGNoIHRoZSBub24tZXJyb3IKKyAgICAgICAgICAgICAgIGNhc2VzLiBUaHVzIHdlIGNhbiBpZ25vcmUgXG4gaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmdzLAorICAgICAgICAgICAgICAgZm9yIGV4YW1wbGUuIE9yIG5vbi10ZXJtaW5hdGVkIHN0cmluZ3MuICovCisgICAgICAgICAgICBpZiAoY2ggPT0gcXVvdGVfY2hhcikgeworICAgICAgICAgICAgICAgIC8qIERvZXMgdGhpcyBtYXRjaCB0aGUgc3RyaW5nX3R5cGUgKHNpbmdsZSBvciB0cmlwbGUKKyAgICAgICAgICAgICAgICAgICBxdW90ZWQpPyAqLworICAgICAgICAgICAgICAgIGlmIChzdHJpbmdfdHlwZSA9PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgYXQgdGhlIGVuZCBvZiBhIHRyaXBsZSBxdW90ZWQgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfY2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgYSBub3JtYWwgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgICAgICBxdW90ZV9jaGFyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAwOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1wnJyB8fCBjaCA9PSAnIicpIHsKKyAgICAgICAgICAgIC8qIElzIHRoaXMgYSB0cmlwbGUgcXVvdGVkIHN0cmluZz8gKi8KKyAgICAgICAgICAgIGlmICgqc3RyKzIgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoICYmICooKnN0cisyKSA9PSBjaCkgeworICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMzsKKyAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIFN0YXJ0IG9mIGEgbm9ybWFsIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBTdGFydCBsb29raW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisgICAgICAgICAgICBxdW90ZV9jaGFyID0gY2g7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJ1snIHx8IGNoID09ICd7JyB8fCBjaCA9PSAnKCcpIHsKKyAgICAgICAgICAgIG5lc3RlZF9kZXB0aCsrOworICAgICAgICB9IGVsc2UgaWYgKG5lc3RlZF9kZXB0aCAhPSAwICYmCisgICAgICAgICAgICAgICAgICAgKGNoID09ICddJyB8fCBjaCA9PSAnfScgfHwgY2ggPT0gJyknKSkgeworICAgICAgICAgICAgbmVzdGVkX2RlcHRoLS07CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJyMnKSB7CisgICAgICAgICAgICAvKiBFcnJvcjogY2FuJ3QgaW5jbHVkZSBhIGNvbW1lbnQgY2hhcmFjdGVyLCBpbnNpZGUgcGFyZW5zCisgICAgICAgICAgICAgICBvciBub3QuICovCisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSAnIyciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXN0ZWRfZGVwdGggPT0gMCAmJgorICAgICAgICAgICAgICAgICAgIChjaCA9PSAnIScgfHwgY2ggPT0gJzonIHx8IGNoID09ICd9JykpIHsKKyAgICAgICAgICAgIC8qIEZpcnN0LCB0ZXN0IGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mICIhPSIuIFNpbmNlICc9JyBpcworICAgICAgICAgICAgICAgbm90IGFuIGFsbG93ZWQgY29udmVyc2lvbiBjaGFyYWN0ZXIsIG5vdGhpbmcgaXMgbG9zdCBpbgorICAgICAgICAgICAgICAgdGhpcyB0ZXN0LiAqLworICAgICAgICAgICAgaWYgKGNoID09ICchJyAmJiAqc3RyKzEgPCBlbmQgJiYgKigqc3RyKzEpID09ICc9JykgeworICAgICAgICAgICAgICAgIC8qIFRoaXMgaXNuJ3QgYSBjb252ZXJzaW9uIGNoYXJhY3RlciwganVzdCBjb250aW51ZS4gKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIE5vcm1hbCB3YXkgb3V0IG9mIHRoaXMgbG9vcC4gKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCBjb25zdW1lIHRoaXMgY2hhciBhbmQgbG9vcCBhcm91bmQuICovCisgICAgICAgIH0KKyAgICB9CisgICAgZXhwcl9lbmQgPSAqc3RyOworICAgIC8qIElmIHdlIGxlYXZlIHRoaXMgbG9vcCBpbiBhIHN0cmluZyBvciB3aXRoIG1pc21hdGNoZWQgcGFyZW5zLCB3ZQorICAgICAgIGRvbid0IGNhcmUuIFdlJ2xsIGdldCBhIHN5bnRheCBlcnJvciB3aGVuIGNvbXBpbGluZyB0aGUKKyAgICAgICBleHByZXNzaW9uLiBCdXQsIHdlIGNhbiBwcm9kdWNlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2UsIHNvCisgICAgICAgbGV0J3MganVzdCBkbyB0aGF0LiovCisgICAgaWYgKHF1b3RlX2NoYXIpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChuZXN0ZWRfZGVwdGgpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogbWlzbWF0Y2hlZCAnKCcsICd7Jywgb3IgJ1snIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgLyogQ29tcGlsZSB0aGUgZXhwcmVzc2lvbiBhcyBzb29uIGFzIHBvc3NpYmxlLCBzbyB3ZSBzaG93IGVycm9ycworICAgICAgIHJlbGF0ZWQgdG8gdGhlIGV4cHJlc3Npb24gYmVmb3JlIGVycm9ycyByZWxhdGVkIHRvIHRoZQorICAgICAgIGNvbnZlcnNpb24gb3IgZm9ybWF0X3NwZWMuICovCisgICAgc2ltcGxlX2V4cHJlc3Npb24gPSBmc3RyaW5nX2NvbXBpbGVfZXhwcihleHByX3N0YXJ0LCBleHByX2VuZCwgYywgbik7CisgICAgaWYgKCFzaW1wbGVfZXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogQ2hlY2sgZm9yIGEgY29udmVyc2lvbiBjaGFyLCBpZiBwcmVzZW50LiAqLworICAgIGlmICgqKnN0ciA9PSAnIScpIHsKKyAgICAgICAgKnN0ciArPSAxOworICAgICAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgICAgICBjb252ZXJzaW9uID0gKipzdHI7CisgICAgICAgICpzdHIgKz0gMTsKKworICAgICAgICAvKiBWYWxpZGF0ZSB0aGUgY29udmVyc2lvbi4gKi8KKyAgICAgICAgaWYgKCEoY29udmVyc2lvbiA9PSAncycgfHwgY29udmVyc2lvbiA9PSAncicKKyAgICAgICAgICAgICAgfHwgY29udmVyc2lvbiA9PSAnYScpKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICdzJywgJ3InLCBvciAnYSciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIGZvciB0aGUgZm9ybWF0IHNwZWMsIGlmIHByZXNlbnQuICovCisgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKyAgICBpZiAoKipzdHIgPT0gJzonKSB7CisgICAgICAgICpzdHIgKz0gMTsKKyAgICAgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAgICAgLyogUGFyc2UgdGhlIGZvcm1hdCBzcGVjLiAqLworICAgICAgICBmb3JtYXRfc3BlYyA9IGZzdHJpbmdfcGFyc2Uoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwrMSwgYywgbik7CisgICAgICAgIGlmICghZm9ybWF0X3NwZWMpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCpzdHIgPj0gZW5kIHx8ICoqc3RyICE9ICd9JykKKyAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAvKiBXZSdyZSBhdCBhIHJpZ2h0IGJyYWNlLiBDb25zdW1lIGl0LiAqLworICAgIGFzc2VydCgqc3RyIDwgZW5kKTsKKyAgICBhc3NlcnQoKipzdHIgPT0gJ30nKTsKKyAgICAqc3RyICs9IDE7CisKKyAgICAvKiBBbmQgbm93IGNyZWF0ZSB0aGUgRm9ybWF0dGVkVmFsdWUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhpcworICAgICAgIGVudGlyZSBleHByZXNzaW9uIHdpdGggdGhlIGNvbnZlcnNpb24gYW5kIGZvcm1hdCBzcGVjLiAqLworICAgICpleHByZXNzaW9uID0gRm9ybWF0dGVkVmFsdWUoc2ltcGxlX2V4cHJlc3Npb24sIGNvbnZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKTsKKyAgICBpZiAoISpleHByZXNzaW9uKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKKwordW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOgorICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKy8qIFJldHVybiAtMSBvbiBlcnJvci4KKworICAgUmV0dXJuIDAgaWYgd2UgaGF2ZSBhIGxpdGVyYWwgKHBvc3NpYmxlIHplcm8gbGVuZ3RoKSBhbmQgYW4KKyAgIGV4cHJlc3Npb24gKHplcm8gbGVuZ3RoIGlmIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KKworICAgUmV0dXJuIDEgaWYgd2UgaGF2ZSBhIGxpdGVyYWwsIGJ1dCBubyBleHByZXNzaW9uLCBhbmQgd2Ugd2FudCB0aGUKKyAgIGNhbGxlciB0byBjYWxsIHVzIGFnYWluLiBUaGlzIGlzIHVzZWQgdG8gZGVhbCB3aXRoIGRvdWJsZWQKKyAgIGJyYWNlcy4KKworICAgV2hlbiBjYWxsZWQgbXVsdGlwbGUgdGltZXMgb24gdGhlIHN0cmluZyAnYXt7YnswfWMnLCB0aGlzIGZ1bmN0aW9uCisgICB3aWxsIHJldHVybjoKKworICAgMS4gdGhlIGxpdGVyYWwgJ2F7JyB3aXRoIG5vIGV4cHJlc3Npb24sIGFuZCBhIHJldHVybiB2YWx1ZQorICAgICAgb2YgMS4gRGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHRoZXJlJ3Mgbm8gZXhwcmVzc2lvbiwgdGhlIHJldHVybgorICAgICAgdmFsdWUgb2YgMSBtZWFucyB3ZSdyZSBub3QgZmluaXNoZWQgeWV0LgorCisgICAyLiB0aGUgbGl0ZXJhbCAnYicgYW5kIHRoZSBleHByZXNzaW9uICcwJywgd2l0aCBhIHJldHVybiB2YWx1ZSBvZgorICAgICAgMC4gVGhlIGZhY3QgdGhhdCB0aGVyZSdzIGFuIGV4cHJlc3Npb24gbWVhbnMgd2UncmUgbm90IGZpbmlzaGVkLgorCisgICAzLiBsaXRlcmFsICdjJyB3aXRoIG5vIGV4cHJlc3Npb24gYW5kIGEgcmV0dXJuIHZhbHVlIG9mIDAuIFRoZQorICAgICAgY29tYmluYXRpb24gb2YgdGhlIHJldHVybiB2YWx1ZSBvZiAwIHdpdGggbm8gZXhwcmVzc2lvbiBtZWFucworICAgICAgd2UncmUgZmluaXNoZWQuCisqLworc3RhdGljIGludAorZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlY3Vyc2VfbHZsLCBQeU9iamVjdCAqKmxpdGVyYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5ICpleHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBpbnQgcmVzdWx0OworCisgICAgYXNzZXJ0KCpsaXRlcmFsID09IE5VTEwgJiYgKmV4cHJlc3Npb24gPT0gTlVMTCk7CisKKyAgICAvKiBHZXQgYW55IGxpdGVyYWwgc3RyaW5nLiAqLworICAgIHJlc3VsdCA9IGZzdHJpbmdfZmluZF9saXRlcmFsKHN0ciwgZW5kLCByYXcsIGxpdGVyYWwsIHJlY3Vyc2VfbHZsLCBjLCBuKTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGFzc2VydChyZXN1bHQgPT0gMCB8fCByZXN1bHQgPT0gMSk7CisKKyAgICBpZiAocmVzdWx0ID09IDEpCisgICAgICAgIC8qIFdlIGhhdmUgYSBsaXRlcmFsLCBidXQgZG9uJ3QgbG9vayBhdCB0aGUgZXhwcmVzc2lvbi4gKi8KKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoKnN0ciA+PSBlbmQgfHwgKipzdHIgPT0gJ30nKQorICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgdGhlIGVuZCBvZiBhIG5lc3RlZAorICAgICAgICAgICBmLXN0cmluZzogbm8gZXhwcmVzc2lvbi4gVGhlIHRvcC1sZXZlbCBlcnJvciBjYXNlIHdoZXJlIHdlCisgICAgICAgICAgIGV4cGVjdCB0byBiZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYnV0IHdlJ3JlIGF0IGEgJ30nIGlzCisgICAgICAgICAgIGhhbmRsZWQgbGF0ZXIuICovCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogV2UgbXVzdCBub3cgYmUgdGhlIHN0YXJ0IG9mIGFuIGV4cHJlc3Npb24sIG9uIGEgJ3snLiAqLworICAgIGFzc2VydCgqKnN0ciA9PSAneycpOworCisgICAgaWYgKGZzdHJpbmdfZmluZF9leHByKHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsLCBleHByZXNzaW9uLCBjLCBuKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfQ0xFQVIoKmxpdGVyYWwpOworICAgIHJldHVybiAtMTsKK30KKworI2RlZmluZSBFWFBSTElTVF9OX0NBQ0hFRCAgNjQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIC8qIEluY3JlbWVudGFsbHkgYnVpbGQgYW4gYXJyYXkgb2YgZXhwcl90eSwgc28gYmUgdXNlZCBpbiBhbgorICAgICAgIGFzZGxfc2VxLiBDYWNoZSBzb21lIHNtYWxsIGJ1dCByZWFzb25hYmx5IHNpemVkIG51bWJlciBvZgorICAgICAgIGV4cHJfdHkncywgYW5kIHRoZW4gYWZ0ZXIgdGhhdCBzdGFydCBkeW5hbWljYWxseSBhbGxvY2F0aW5nLAorICAgICAgIGRvdWJsaW5nIHRoZSBudW1iZXIgYWxsb2NhdGVkIGVhY2ggdGltZS4gTm90ZSB0aGF0IHRoZSBmLXN0cmluZworICAgICAgIGYnezB9YXsxfScgY29udGFpbnMgMyBleHByX3R5J3M6IDIgRm9ybWF0dGVkVmFsdWUncywgYW5kIG9uZQorICAgICAgIFN0ciBmb3IgdGhlIGxpdGVyYWwgJ2EnLiBTbyB5b3UgYWRkIGV4cHJfdHkncyBhYm91dCB0d2ljZSBhcworICAgICAgIGZhc3QgYXMgeW91IGFkZCBleHJlc3Npb25zIGluIGFuIGYtc3RyaW5nLiAqLworCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7ICAvKiBOdW1iZXIgd2UndmUgYWxsb2NhdGVkLiAqLworICAgIFB5X3NzaXplX3Qgc2l6ZTsgICAgICAgLyogTnVtYmVyIHdlJ3ZlIHVzZWQuICovCisgICAgZXhwcl90eSAgICAqcDsgICAgICAgICAvKiBQb2ludGVyIHRvIHRoZSBtZW1vcnkgd2UncmUgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nLiBXaWxsIHBvaW50IHRvICdkYXRhJyB1bnRpbCB3ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgZHluYW1pY2FsbHkgYWxsb2NhdGluZy4gKi8KKyAgICBleHByX3R5ICAgIGRhdGFbRVhQUkxJU1RfTl9DQUNIRURdOworfSBFeHByTGlzdDsKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpCisjZWxzZQorc3RhdGljIHZvaWQKK0V4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMoRXhwckxpc3QgKmwpCit7CisgICAgLyogQ2hlY2sgb3VyIGludmFyaWFudHMuIE1ha2Ugc3VyZSB0aGlzIG9iamVjdCBpcyAibGl2ZSIsIGFuZAorICAgICAgIGhhc24ndCBiZWVuIGRlYWxsb2NhdGVkLiAqLworICAgIGFzc2VydChsLT5zaXplID49IDApOworICAgIGFzc2VydChsLT5wICE9IE5VTEwpOworICAgIGlmIChsLT5zaXplIDw9IEVYUFJMSVNUX05fQ0FDSEVEKQorICAgICAgICBhc3NlcnQobC0+ZGF0YSA9PSBsLT5wKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfSW5pdChFeHByTGlzdCAqbCkKK3sKKyAgICBsLT5hbGxvY2F0ZWQgPSBFWFBSTElTVF9OX0NBQ0hFRDsKKyAgICBsLT5zaXplID0gMDsKKworICAgIC8qIFVudGlsIHdlIHN0YXJ0IGFsbG9jYXRpbmcgZHluYW1pY2FsbHksIHAgcG9pbnRzIHRvIGRhdGEuICovCisgICAgbC0+cCA9IGwtPmRhdGE7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworfQorCitzdGF0aWMgaW50CitFeHByTGlzdF9BcHBlbmQoRXhwckxpc3QgKmwsIGV4cHJfdHkgZXhwKQoreworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisgICAgaWYgKGwtPnNpemUgPj0gbC0+YWxsb2NhdGVkKSB7CisgICAgICAgIC8qIFdlIG5lZWQgdG8gYWxsb2MgKG9yIHJlYWxsb2MpIHRoZSBtZW1vcnkuICovCisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemUgPSBsLT5hbGxvY2F0ZWQgKiAyOworCisgICAgICAgIC8qIFNlZSBpZiB3ZSd2ZSBldmVyIGFsbG9jYXRlZCBhbnl0aGluZyBkeW5hbWljYWxseS4gKi8KKyAgICAgICAgaWYgKGwtPnAgPT0gbC0+ZGF0YSkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgLyogV2UncmUgc3RpbGwgdXNpbmcgdGhlIGNhY2hlZCBkYXRhLiBTd2l0Y2ggdG8KKyAgICAgICAgICAgICAgIGFsbG9jLWluZy4gKi8KKyAgICAgICAgICAgIGwtPnAgPSBQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKGV4cHJfdHkpICogbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKCFsLT5wKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIC8qIENvcHkgdGhlIGNhY2hlZCBkYXRhIGludG8gdGhlIG5ldyBidWZmZXIuICovCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbC0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIGwtPnBbaV0gPSBsLT5kYXRhW2ldOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogSnVzdCByZWFsbG9jLiAqLworICAgICAgICAgICAgZXhwcl90eSAqdG1wID0gUHlNZW1fUmF3UmVhbGxvYyhsLT5wLCBzaXplb2YoZXhwcl90eSkgKiBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAoIXRtcCkgeworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobC0+cCk7CisgICAgICAgICAgICAgICAgbC0+cCA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbC0+cCA9IHRtcDsKKyAgICAgICAgfQorCisgICAgICAgIGwtPmFsbG9jYXRlZCA9IG5ld19zaXplOworICAgICAgICBhc3NlcnQobC0+YWxsb2NhdGVkID09IDIgKiBsLT5zaXplKTsKKyAgICB9CisKKyAgICBsLT5wW2wtPnNpemUrK10gPSBleHA7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorRXhwckxpc3RfRGVhbGxvYyhFeHByTGlzdCAqbCkKK3sKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworCisgICAgLyogSWYgdGhlcmUncyBiZWVuIGFuIGVycm9yLCBvciB3ZSd2ZSBuZXZlciBkeW5hbWljYWxseSBhbGxvY2F0ZWQsCisgICAgICAgZG8gbm90aGluZy4gKi8KKyAgICBpZiAoIWwtPnAgfHwgbC0+cCA9PSBsLT5kYXRhKSB7CisgICAgICAgIC8qIERvIG5vdGhpbmcuICovCisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2UgaGF2ZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQuIEZyZWUgdGhlIG1lbW9yeS4gKi8KKyAgICAgICAgUHlNZW1fUmF3RnJlZShsLT5wKTsKKyAgICB9CisgICAgbC0+cCA9IE5VTEw7CisgICAgbC0+c2l6ZSA9IC0xOworfQorCitzdGF0aWMgYXNkbF9zZXEgKgorRXhwckxpc3RfRmluaXNoKEV4cHJMaXN0ICpsLCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKworICAgIC8qIEFsbG9jYXRlIHRoZSBhc2RsX3NlcSBhbmQgY29weSB0aGUgZXhwcmVzc2lvbnMgaW4gdG8gaXQuICovCisgICAgc2VxID0gX1B5X2FzZGxfc2VxX25ldyhsLT5zaXplLCBhcmVuYSk7CisgICAgaWYgKHNlcSkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsLT5zaXplOyBpKyspCisgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc2VxLCBpLCBsLT5wW2ldKTsKKyAgICB9CisgICAgRXhwckxpc3RfRGVhbGxvYyhsKTsKKyAgICByZXR1cm4gc2VxOworfQorCisvKiBUaGUgRnN0cmluZ1BhcnNlciBpcyBkZXNpZ25lZCB0byBhZGQgYSBtaXggb2Ygc3RyaW5ncyBhbmQKKyAgIGYtc3RyaW5ncywgYW5kIGNvbmNhdCB0aGVtIHRvZ2V0aGVyIGFzIG5lZWRlZC4gVWx0aW1hdGVseSwgaXQKKyAgIGdlbmVyYXRlcyBhbiBleHByX3R5LiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpsYXN0X3N0cjsKKyAgICBFeHByTGlzdCBleHByX2xpc3Q7Cit9IEZzdHJpbmdQYXJzZXI7CisKKyNpZmRlZiBOREVCVUcKKyNkZWZpbmUgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKQorI2Vsc2UKK3N0YXRpYyB2b2lkCitGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoRnN0cmluZ1BhcnNlciAqc3RhdGUpCit7CisgICAgaWYgKHN0YXRlLT5sYXN0X3N0cikKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXRlLT5sYXN0X3N0cikpOworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMoJnN0YXRlLT5leHByX2xpc3QpOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitGc3RyaW5nUGFyc2VyX0luaXQoRnN0cmluZ1BhcnNlciAqc3RhdGUpCit7CisgICAgc3RhdGUtPmxhc3Rfc3RyID0gTlVMTDsKKyAgICBFeHByTGlzdF9Jbml0KCZzdGF0ZS0+ZXhwcl9saXN0KTsKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9EZWFsbG9jKEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisKKyAgICBQeV9YREVDUkVGKHN0YXRlLT5sYXN0X3N0cik7CisgICAgRXhwckxpc3RfRGVhbGxvYygmc3RhdGUtPmV4cHJfbGlzdCk7Cit9CisKKy8qIE1ha2UgYSBTdHIgbm9kZSwgYnV0IGRlY3JlZiB0aGUgUHlVbmljb2RlIG9iamVjdCBiZWluZyBhZGRlZC4gKi8KK3N0YXRpYyBleHByX3R5CittYWtlX3N0cl9ub2RlX2FuZF9kZWwoUHlPYmplY3QgKipzdHIsIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUqIG4pCit7CisgICAgUHlPYmplY3QgKnMgPSAqc3RyOworICAgICpzdHIgPSBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgcykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBTdHIocywgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworfQorCisvKiBBZGQgYSBub24tZi1zdHJpbmcgKHRoYXQgaXMsIGEgcmVndWxhciBsaXRlcmFsIHN0cmluZykuIHN0ciBpcworICAgZGVjcmVmJ2QuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEFuZERlbChGc3RyaW5nUGFyc2VyICpzdGF0ZSwgUHlPYmplY3QgKnN0cikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHN0cikpOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gMCkgeworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgLyogV2UgZGlkbid0IGhhdmUgYSBzdHJpbmcgYmVmb3JlLCBzbyBqdXN0IHJlbWVtYmVyIHRoaXMgb25lLiAqLworICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBzdHI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhpcyB3aXRoIHRoZSBwcmV2aW91cyBzdHJpbmcuICovCisgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnN0YXRlLT5sYXN0X3N0ciwgc3RyKTsKKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFBhcnNlIGFuIGYtc3RyaW5nLiBUaGUgZi1zdHJpbmcgaXMgaW4gKnN0ciB0byBlbmQsIHdpdGggbm8KKyAgICdmJyBvciBxdW90ZXMuICovCitzdGF0aWMgaW50CitGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoRnN0cmluZ1BhcnNlciAqc3RhdGUsIGNvbnN0IGNoYXIgKipzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgLyogUGFyc2UgdGhlIGYtc3RyaW5nLiAqLworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICpsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgZXhwcl90eSBleHByZXNzaW9uID0gTlVMTDsKKworICAgICAgICAvKiBJZiB0aGVyZSdzIGEgemVybyBsZW5ndGggbGl0ZXJhbCBpbiBmcm9udCBvZiB0aGUKKyAgICAgICAgICAgZXhwcmVzc2lvbiwgbGl0ZXJhbCB3aWxsIGJlIE5VTEwuIElmIHdlJ3JlIGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgdGhlIGYtc3RyaW5nLCBleHByZXNzaW9uIHdpbGwgYmUgTlVMTCAodW5sZXNzIHJlc3VsdCA9PSAxLAorICAgICAgICAgICBzZWUgYmVsb3cpLiAqLworICAgICAgICBpbnQgcmVzdWx0ID0gZnN0cmluZ19maW5kX2xpdGVyYWxfYW5kX2V4cHIoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGl0ZXJhbCwgJmV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBuKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgLyogQWRkIHRoZSBsaXRlcmFsLCBpZiBhbnkuICovCisgICAgICAgIGlmICghbGl0ZXJhbCkgeworICAgICAgICAgICAgLyogRG8gbm90aGluZy4gSnVzdCBsZWF2ZSBsYXN0X3N0ciBhbG9uZSAoYW5kIHBvc3NpYmx5CisgICAgICAgICAgICAgICBOVUxMKS4gKi8KKyAgICAgICAgfSBlbHNlIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBsaXRlcmFsOworICAgICAgICAgICAgbGl0ZXJhbCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBXZSBoYXZlIGEgbGl0ZXJhbCwgY29uY2F0ZW5hdGUgaXQuICovCisgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgobGl0ZXJhbCkgIT0gMCk7CisgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoc3RhdGUsIGxpdGVyYWwpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIXN0YXRlLT5sYXN0X3N0ciB8fAorICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RhdGUtPmxhc3Rfc3RyKSAhPSAwKTsKKworICAgICAgICAvKiBXZSd2ZSBkZWFsdCB3aXRoIHRoZSBsaXRlcmFsIG5vdy4gSXQgY2FuJ3QgYmUgbGVha2VkIG9uIGZ1cnRoZXIKKyAgICAgICAgICAgZXJyb3JzLiAqLworICAgICAgICBhc3NlcnQobGl0ZXJhbCA9PSBOVUxMKTsKKworICAgICAgICAvKiBTZWUgaWYgd2Ugc2hvdWxkIGp1c3QgbG9vcCBhcm91bmQgdG8gZ2V0IHRoZSBuZXh0IGxpdGVyYWwKKyAgICAgICAgICAgYW5kIGV4cHJlc3Npb24sIHdoaWxlIGlnbm9yaW5nIHRoZSBleHByZXNzaW9uIHRoaXMKKyAgICAgICAgICAgdGltZS4gVGhpcyBpcyB1c2VkIGZvciB1bi1kb3VibGluZyBicmFjZXMsIGFzIGFuCisgICAgICAgICAgIG9wdGltaXphdGlvbi4gKi8KKyAgICAgICAgaWYgKHJlc3VsdCA9PSAxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFleHByZXNzaW9uKQorICAgICAgICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoaXMgZi1zdHJpbmcuICovCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBXZSBrbm93IHdlIGhhdmUgYW4gZXhwcmVzc2lvbi4gQ29udmVydCBhbnkgZXhpc3Rpbmcgc3RyaW5nCisgICAgICAgICAgIHRvIGEgU3RyIG5vZGUuICovCisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiBObyBwcmV2aW91cyBsaXRlcmFsLiAqLworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogQ29udmVydCB0aGUgZXhpc3RpbmcgbGFzdF9zdHIgbGl0ZXJhbCB0byBhIFN0ciBub2RlLiAqLworICAgICAgICAgICAgZXhwcl90eSBzdHIgPSBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgICAgICAgICBpZiAoIXN0ciB8fCBFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIHN0cikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIGV4cHJlc3Npb24pIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBJZiByZWN1cnNlX2x2bCBpcyB6ZXJvLCB0aGVuIHdlIG11c3QgYmUgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgICBzdHJpbmcuIE90aGVyd2lzZSwgd2UgbXVzdCBiZSBhdCBhIHJpZ2h0IGJyYWNlLiAqLworCisgICAgaWYgKHJlY3Vyc2VfbHZsID09IDAgJiYgKnN0ciA8IGVuZC0xKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHVuZXhwZWN0ZWQgZW5kIG9mIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyZWN1cnNlX2x2bCAhPSAwICYmICoqc3RyICE9ICd9JykgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworICAgIHJldHVybiAwOworfQorCisvKiBDb252ZXJ0IHRoZSBwYXJ0aWFsIHN0YXRlIHJlZmxlY3RlZCBpbiBsYXN0X3N0ciBhbmQgZXhwcl9saXN0IHRvIGFuCisgICBleHByX3R5LiBUaGUgZXhwcl90eSBjYW4gYmUgYSBTdHIsIG9yIGEgSm9pbmVkU3RyLiAqLworc3RhdGljIGV4cHJfdHkKK0ZzdHJpbmdQYXJzZXJfRmluaXNoKEZzdHJpbmdQYXJzZXIgKnN0YXRlLCBzdHJ1Y3QgY29tcGlsaW5nICpjLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBhc2RsX3NlcSAqc2VxOworCisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIC8qIElmIHdlJ3JlIGp1c3QgYSBjb25zdGFudCBzdHJpbmcgd2l0aCBubyBleHByZXNzaW9ucywgcmV0dXJuCisgICAgICAgdGhhdC4gKi8KKyAgICBpZihzdGF0ZS0+ZXhwcl9saXN0LnNpemUgPT0gMCkgeworICAgICAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICAgICAgLyogQ3JlYXRlIGEgemVybyBsZW5ndGggc3RyaW5nLiAqLworICAgICAgICAgICAgc3RhdGUtPmxhc3Rfc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgICAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFrZV9zdHJfbm9kZV9hbmRfZGVsKCZzdGF0ZS0+bGFzdF9zdHIsIGMsIG4pOworICAgIH0KKworICAgIC8qIENyZWF0ZSBhIFN0ciBub2RlIG91dCBvZiBsYXN0X3N0ciwgaWYgbmVlZGVkLiBJdCB3aWxsIGJlIHRoZQorICAgICAgIGxhc3Qgbm9kZSBpbiBvdXIgZXhwcmVzc2lvbiBsaXN0LiAqLworICAgIGlmIChzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgZXhwcl90eSBzdHIgPSBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgICAgIGlmICghc3RyIHx8IEV4cHJMaXN0X0FwcGVuZCgmc3RhdGUtPmV4cHJfbGlzdCwgc3RyKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBUaGlzIGhhcyBhbHJlYWR5IGJlZW4gZnJlZWQuICovCisgICAgYXNzZXJ0KHN0YXRlLT5sYXN0X3N0ciA9PSBOVUxMKTsKKworICAgIHNlcSA9IEV4cHJMaXN0X0ZpbmlzaCgmc3RhdGUtPmV4cHJfbGlzdCwgYy0+Y19hcmVuYSk7CisgICAgaWYgKCFzZXEpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBJZiB0aGVyZSdzIG9ubHkgb25lIGV4cHJlc3Npb24sIHJldHVybiBpdC4gT3RoZXJ3aXNlLCB3ZSBuZWVkCisgICAgICAgdG8gam9pbiB0aGVtIHRvZ2V0aGVyLiAqLworICAgIGlmIChzZXEtPnNpemUgPT0gMSkKKyAgICAgICAgcmV0dXJuIHNlcS0+ZWxlbWVudHNbMF07CisKKyAgICByZXR1cm4gSm9pbmVkU3RyKHNlcSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworCitlcnJvcjoKKyAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2Moc3RhdGUpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBHaXZlbiBhbiBmLXN0cmluZyAod2l0aCBubyAnZicgb3IgcXVvdGVzKSB0aGF0J3MgaW4gKnN0ciBhbmQgZW5kcworICAgYXQgZW5kLCBwYXJzZSBpdCBpbnRvIGFuIGV4cHJfdHkuICBSZXR1cm4gTlVMTCBvbiBlcnJvci4gIEFkanVzdAorICAgc3RyIHRvIHBvaW50IHBhc3QgdGhlIHBhcnNlZCBwb3J0aW9uLiAqLworc3RhdGljIGV4cHJfdHkKK2ZzdHJpbmdfcGFyc2UoY29uc3QgY2hhciAqKnN0ciwgY29uc3QgY2hhciAqZW5kLCBpbnQgcmF3LCBpbnQgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgRnN0cmluZ1BhcnNlciBzdGF0ZTsKKworICAgIEZzdHJpbmdQYXJzZXJfSW5pdCgmc3RhdGUpOworICAgIGlmIChGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoJnN0YXRlLCBzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMsIG4pIDwgMCkgeworICAgICAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2MoJnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIEZzdHJpbmdQYXJzZXJfRmluaXNoKCZzdGF0ZSwgYywgbik7Cit9CisKKy8qIG4gaXMgYSBQeXRob24gc3RyaW5nIGxpdGVyYWwsIGluY2x1ZGluZyB0aGUgYnJhY2tldGluZyBxdW90ZQorICAgY2hhcmFjdGVycywgYW5kIHIsIGIsIHUsICYvb3IgZiBwcmVmaXhlcyAoaWYgYW55KSwgYW5kIGVtYmVkZGVkCisgICBlc2NhcGUgc2VxdWVuY2VzIChpZiBhbnkpLiBwYXJzZXN0ciBwYXJzZXMgaXQsIGFuZCBzZXRzICpyZXN1bHQgdG8KKyAgIGRlY29kZWQgUHl0aG9uIHN0cmluZyBvYmplY3QuICBJZiB0aGUgc3RyaW5nIGlzIGFuIGYtc3RyaW5nLCBzZXQKKyAgICpmc3RyIGFuZCAqZnN0cmxlbiB0byB0aGUgdW5wYXJzZWQgc3RyaW5nIG9iamVjdC4gIFJldHVybiAwIGlmIG5vCisgICBlcnJvcnMgb2NjdXJyZWQuCisqLworc3RhdGljIGludAorcGFyc2VzdHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUsIGludCAqcmF3bW9kZSwKKyAgICAgICAgIFB5T2JqZWN0ICoqcmVzdWx0LCBjb25zdCBjaGFyICoqZnN0ciwgUHlfc3NpemVfdCAqZnN0cmxlbikKIHsKICAgICBzaXplX3QgbGVuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBTVFIobik7CiAgICAgaW50IHF1b3RlID0gUHlfQ0hBUk1BU0soKnMpOwotICAgIGludCByYXdtb2RlID0gMDsKLSAgICBpbnQgbmVlZF9lbmNvZGluZzsKKyAgICBpbnQgZm1vZGUgPSAwOworICAgICpieXRlc21vZGUgPSAwOworICAgICpyYXdtb2RlID0gMDsKKyAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAqZnN0ciA9IE5VTEw7CiAgICAgaWYgKFB5X0lTQUxQSEEocXVvdGUpKSB7Ci0gICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhcmF3bW9kZSkgeworICAgICAgICB3aGlsZSAoISpieXRlc21vZGUgfHwgISpyYXdtb2RlKSB7CiAgICAgICAgICAgICBpZiAocXVvdGUgPT0gJ2InIHx8IHF1b3RlID09ICdCJykgewogICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKICAgICAgICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKQEAgLTQwMjIsMTE0ICs0OTc5LDE2OSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgewogICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKLSAgICAgICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgICAgICAgICAqcmF3bW9kZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAnZicgfHwgcXVvdGUgPT0gJ0YnKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgICAgIGZtb2RlID0gMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGlmIChmbW9kZSAmJiAqYnl0ZXNtb2RlKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChxdW90ZSAhPSAnXCcnICYmIHF1b3RlICE9ICdcIicpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgcXVvdGUgY2hhci4gKi8KICAgICBzKys7CiAgICAgbGVuID0gc3RybGVuKHMpOwogICAgIGlmIChsZW4gPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0byBwYXJzZSBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoc1stLWxlbl0gIT0gcXVvdGUpIHsKKyAgICAgICAgLyogTGFzdCBxdW90ZSBjaGFyIG11c3QgbWF0Y2ggdGhlIGZpcnN0LiAqLwogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKGxlbiA+PSA0ICYmIHNbMF0gPT0gcXVvdGUgJiYgc1sxXSA9PSBxdW90ZSkgeworICAgICAgICAvKiBBIHRyaXBsZSBxdW90ZWQgc3RyaW5nLiBXZSd2ZSBhbHJlYWR5IHNraXBwZWQgb25lIHF1b3RlIGF0CisgICAgICAgICAgIHRoZSBzdGFydCBhbmQgb25lIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gTm93IHNraXAgdGhlCisgICAgICAgICAgIHR3byBhdCB0aGUgc3RhcnQuICovCiAgICAgICAgIHMgKz0gMjsKICAgICAgICAgbGVuIC09IDI7CisgICAgICAgIC8qIEFuZCBjaGVjayB0aGF0IHRoZSBsYXN0IHR3byBtYXRjaC4gKi8KICAgICAgICAgaWYgKHNbLS1sZW5dICE9IHF1b3RlIHx8IHNbLS1sZW5dICE9IHF1b3RlKSB7CiAgICAgICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghKmJ5dGVzbW9kZSAmJiAhcmF3bW9kZSkgewotICAgICAgICByZXR1cm4gZGVjb2RlX3VuaWNvZGUoYywgcywgbGVuLCByYXdtb2RlLCBjLT5jX2VuY29kaW5nKTsKKworICAgIGlmIChmbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMuIFRoZSBjYWxsZXIgd2lsbCBwYXJzZSB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgIHN0cmluZy4gKi8KKyAgICAgICAgKmZzdHIgPSBzOworICAgICAgICAqZnN0cmxlbiA9IGxlbjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgLyogTm90IGFuIGYtc3RyaW5nLiAqLworICAgIC8qIEF2b2lkIGludm9raW5nIGVzY2FwZSBkZWNvZGluZyByb3V0aW5lcyBpZiBwb3NzaWJsZS4gKi8KKyAgICAqcmF3bW9kZSA9ICpyYXdtb2RlIHx8IHN0cmNocihzLCAnXFwnKSA9PSBOVUxMOwogICAgIGlmICgqYnl0ZXNtb2RlKSB7Ci0gICAgICAgIC8qIERpc2FsbG93IG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChidXQgbm90IGVzY2FwZXMpICovCisgICAgICAgIC8qIERpc2FsbG93IG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiAqLwogICAgICAgICBjb25zdCBjaGFyICpjaDsKICAgICAgICAgZm9yIChjaCA9IHM7ICpjaDsgY2grKykgewogICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpjaCkgPj0gMHg4MCkgewogICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYnl0ZXMgY2FuIG9ubHkgY29udGFpbiBBU0NJSSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXRlcmFsIGNoYXJhY3RlcnMuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICgqcmF3bW9kZSkKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIE5VTEwsIC8qIGlnbm9yZWQgKi8gMCwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCpyYXdtb2RlKQorICAgICAgICAgICAgKnJlc3VsdCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgbGVuLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnJlc3VsdCA9IGRlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhjLCBzLCBsZW4pOwogICAgIH0KLSAgICBuZWVkX2VuY29kaW5nID0gKCEqYnl0ZXNtb2RlICYmIGMtPmNfZW5jb2RpbmcgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGMtPmNfZW5jb2RpbmcsICJ1dGYtOCIpICE9IDApOwotICAgIGlmIChyYXdtb2RlIHx8IHN0cmNocihzLCAnXFwnKSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChuZWVkX2VuY29kaW5nKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiwgKnUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBsZW4sIE5VTEwpOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCB8fCAhKmJ5dGVzbW9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdTsKLSAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIGMtPmNfZW5jb2RpbmcsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgcmV0dXJuIHY7Ci0gICAgICAgIH0gZWxzZSBpZiAoKmJ5dGVzbW9kZSkgewotICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoYy0+Y19lbmNvZGluZywgInV0Zi04IikgPT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgbGVuLCBOVUxMKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gUHlCeXRlc19EZWNvZGVFc2NhcGUocywgbGVuLCBOVUxMLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVlZF9lbmNvZGluZyA/IGMtPmNfZW5jb2RpbmcgOiBOVUxMKTsKKyAgICByZXR1cm4gKnJlc3VsdCA9PSBOVUxMID8gLTEgOiAwOwogfQogCi0vKiBCdWlsZCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0IG91dCBvZiBhIFNUUklORysgYXRvbS4gIFRoaXMgdGFrZXMgY2FyZSBvZgotICogY29tcGlsZS10aW1lIGxpdGVyYWwgY2F0ZW5hdGlvbiwgY2FsbGluZyBwYXJzZXN0cigpIG9uIGVhY2ggcGllY2UsIGFuZAotICogcGFzdGluZyB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdHMgdG9nZXRoZXIuCi0gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpCisvKiBBY2NlcHRzIGEgU1RSSU5HKyBhdG9tLCBhbmQgcHJvZHVjZXMgYW4gZXhwcl90eSBub2RlLiBSdW4gdGhyb3VnaAorICAgZWFjaCBTVFJJTkcgYXRvbSwgYW5kIHByb2Nlc3MgaXQgYXMgbmVlZGVkLiBGb3IgYnl0ZXMsIGp1c3QKKyAgIGNvbmNhdGVuYXRlIHRoZW0gdG9nZXRoZXIsIGFuZCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBCeXRlcyBub2RlLiBGb3IKKyAgIG5vcm1hbCBzdHJpbmdzIGFuZCBmLXN0cmluZ3MsIGNvbmNhdGVuYXRlIHRoZW0gdG9nZXRoZXIuIFRoZSByZXN1bHQKKyAgIHdpbGwgYmUgYSBTdHIgbm9kZSBpZiB0aGVyZSB3ZXJlIG5vIGYtc3RyaW5nczsgYSBGb3JtYXR0ZWRWYWx1ZQorICAgbm9kZSBpZiB0aGVyZSdzIGp1c3QgYW4gZi1zdHJpbmcgKHdpdGggbm8gbGVhZGluZyBvciB0cmFpbGluZworICAgbGl0ZXJhbHMpLCBvciBhIEpvaW5lZFN0ciBub2RlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBmLXN0cmluZ3Mgb3IKKyAgIGFueSBsaXRlcmFscyBpbnZvbHZlZC4gKi8KK3N0YXRpYyBleHByX3R5CitwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBpbnQgYnl0ZXNtb2RlID0gMDsKKyAgICBQeU9iamVjdCAqYnl0ZXNfc3RyID0gTlVMTDsKICAgICBpbnQgaTsKLSAgICBSRVEoQ0hJTEQobiwgMCksIFNUUklORyk7Ci0gICAgdiA9IHBhcnNlc3RyKGMsIENISUxEKG4sIDApLCBieXRlc21vZGUpOwotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgLyogU3RyaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbiAqLwotICAgICAgICBmb3IgKGkgPSAxOyBpIDwgTkNIKG4pOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzOwotICAgICAgICAgICAgaW50IHN1YmJtID0gMDsKLSAgICAgICAgICAgIHMgPSBwYXJzZXN0cihjLCBDSElMRChuLCBpKSwgJnN1YmJtKTsKLSAgICAgICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgaWYgKCpieXRlc21vZGUgIT0gc3ViYm0pIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHYpICYmIFB5Qnl0ZXNfQ2hlY2socykpIHsKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdEFuZERlbCgmdiwgcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeVVuaWNvZGVfQ29uY2F0KHYsIHMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgdiA9IHRlbXA7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgRnN0cmluZ1BhcnNlciBzdGF0ZTsKKyAgICBGc3RyaW5nUGFyc2VyX0luaXQoJnN0YXRlKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobik7IGkrKykgeworICAgICAgICBpbnQgdGhpc19ieXRlc21vZGU7CisgICAgICAgIGludCB0aGlzX3Jhd21vZGU7CisgICAgICAgIFB5T2JqZWN0ICpzOworICAgICAgICBjb25zdCBjaGFyICpmc3RyOworICAgICAgICBQeV9zc2l6ZV90IGZzdHJsZW4gPSAtMTsgIC8qIFNpbGVuY2UgYSBjb21waWxlciB3YXJuaW5nLiAqLworCisgICAgICAgIFJFUShDSElMRChuLCBpKSwgU1RSSU5HKTsKKyAgICAgICAgaWYgKHBhcnNlc3RyKGMsIENISUxEKG4sIGkpLCAmdGhpc19ieXRlc21vZGUsICZ0aGlzX3Jhd21vZGUsICZzLAorICAgICAgICAgICAgICAgICAgICAgJmZzdHIsICZmc3RybGVuKSAhPSAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAvKiBDaGVjayB0aGF0IHdlJ3JlIG5vdCBtaXhpbmcgYnl0ZXMgd2l0aCB1bmljb2RlLiAqLworICAgICAgICBpZiAoaSAhPSAwICYmIGJ5dGVzbW9kZSAhPSB0aGlzX2J5dGVzbW9kZSkgeworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOworICAgICAgICAgICAgUHlfREVDUkVGKHMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBieXRlc21vZGUgPSB0aGlzX2J5dGVzbW9kZTsKKworICAgICAgICBpZiAoZnN0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0KHMgPT0gTlVMTCAmJiAhYnl0ZXNtb2RlKTsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgYW4gZi1zdHJpbmcuIFBhcnNlIGFuZCBjb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IEZzdHJpbmdQYXJzZXJfQ29uY2F0RnN0cmluZygmc3RhdGUsICZmc3RyLCBmc3RyK2ZzdHJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19yYXdtb2RlLCAwLCBjLCBuKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoYnl0ZXNtb2RlID8gUHlCeXRlc19DaGVja0V4YWN0KHMpIDoKKyAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisKKyAgICAgICAgICAgIC8qIEEgc3RyaW5nIG9yIGJ5dGUgc3RyaW5nLiAqLworICAgICAgICAgICAgYXNzZXJ0KHMgIT0gTlVMTCAmJiBmc3RyID09IE5VTEwpOworICAgICAgICAgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAgICAgICAgIC8qIEZvciBieXRlcywgY29uY2F0IGFzIHdlIGdvLiAqLworICAgICAgICAgICAgICAgIGlmIChpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmlyc3QgdGltZSwganVzdCByZW1lbWJlciB0aGlzIHZhbHVlLiAqLworICAgICAgICAgICAgICAgICAgICBieXRlc19zdHIgPSBzOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKCZieXRlc19zdHIsIHMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWJ5dGVzX3N0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQocyAhPSBOVUxMICYmIGZzdHIgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhIHJlZ3VsYXIgc3RyaW5nLiBDb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoJnN0YXRlLCBzKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMgb2JqZWN0IGFuZCB3ZSdyZSBkb25lLiAqLworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBieXRlc19zdHIpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJldHVybiBCeXRlcyhieXRlc19zdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICB9CiAKLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIC8qIFdlJ3JlIG5vdCBhIGJ5dGVzIHN0cmluZywgYnl0ZXNfc3RyIHNob3VsZCBuZXZlciBoYXZlIGJlZW4gc2V0LiAqLworICAgIGFzc2VydChieXRlc19zdHIgPT0gTlVMTCk7CisKKyAgICByZXR1cm4gRnN0cmluZ1BhcnNlcl9GaW5pc2goJnN0YXRlLCBjLCBuKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihieXRlc19zdHIpOworICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYygmc3RhdGUpOwogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2JsdGlubW9kdWxlLmMgYi9QeXRob24vYmx0aW5tb2R1bGUuYwppbmRleCA5ZjVkYjJhLi5jZWUwMTNmIDEwMDY0NAotLS0gYS9QeXRob24vYmx0aW5tb2R1bGUuYworKysgYi9QeXRob24vYmx0aW5tb2R1bGUuYwpAQCAtMjEsMTYgKzIxLDE4IEBACiAgICBEb24ndCBmb3JnZXQgdG8gbW9kaWZ5IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpZiB5b3UgdG91Y2ggYW55IG9mIHRoZQogICAgdmFsdWVzIGZvciBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIQogKi8KLSNpZmRlZiBIQVZFX01CQ1MKLWNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCitjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorLyogbWF5IGJlIGNoYW5nZWQgYnkgaW5pdGZzZW5jb2RpbmcoKSwgYnV0IHNob3VsZCBuZXZlciBiZSBmcmVlKClkICovCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbHNlCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsgLyogc2V0IGJ5IGluaXRmc2VuY29kaW5nKCkgKi8KIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKICNlbmRpZgorY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAic3Vycm9nYXRlZXNjYXBlIjsKIAogX1B5X0lERU5USUZJRVIoX19idWlsdGluc19fKTsKIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKQEAgLTUyLDcgKzU0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX19fYnVpbGRfY2xhc3NfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqbmFtZSwgKmJhc2VzLCAqbWt3LCAqbWV0YSwgKndpbm5lciwgKnByZXAsICpucywgKmNlbGw7CisgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqbm9uZTsKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwogICAgIGludCBpc2NsYXNzID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KQEAgLTE1NSwxNiArMTU3LDggQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG5hbWUsIGJhc2VzKTsKLSAgICAgICAgaWYgKHBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobWt3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBucyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKHByZXAsIHBhcmdzLCBta3cpOwotICAgICAgICBQeV9ERUNSRUYocGFyZ3MpOworICAgICAgICBQeU9iamVjdCAqcGFyZ3NbMl0gPSB7bmFtZSwgYmFzZXN9OworICAgICAgICBucyA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QocHJlcCwgcGFyZ3MsIDIsIG1rdyk7CiAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKICAgICB9CiAgICAgaWYgKG5zID09IE5VTEwpIHsKQEAgLTE3MywxOSArMTY3LDEzIEBACiAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjZWxsID0gUHlFdmFsX0V2YWxDb2RlRXgoUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSwgUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKSwgbnMsCisgICAgbm9uZSA9IFB5RXZhbF9FdmFsQ29kZUV4KFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyksIFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyksIG5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpKTsKLSAgICBpZiAoY2VsbCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptYXJnczsKLSAgICAgICAgbWFyZ3MgPSBQeVR1cGxlX1BhY2soMywgbmFtZSwgYmFzZXMsIG5zKTsKLSAgICAgICAgaWYgKG1hcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNscyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKG1ldGEsIG1hcmdzLCBta3cpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1hcmdzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2xzICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKQotICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCBjbHMpOwotICAgICAgICBQeV9ERUNSRUYoY2VsbCk7CisgICAgaWYgKG5vbmUgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbWFyZ3NbM10gPSB7bmFtZSwgYmFzZXMsIG5zfTsKKyAgICAgICAgY2xzID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChtZXRhLCBtYXJncywgMywgbWt3KTsKKyAgICAgICAgUHlfREVDUkVGKG5vbmUpOwogICAgIH0KICAgICBQeV9ERUNSRUYobnMpOwogICAgIFB5X0RFQ1JFRihtZXRhKTsKQEAgLTMzMSw3ICszMTksNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjbXAgPT0gMSkgeworICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICB9CkBAIC00NjksNiArNDU3LDcgQEAKICAgICBQeU9iamVjdCAqaXQgPSBsei0+aXQ7CiAgICAgbG9uZyBvazsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgaW50IGNoZWNrdHJ1ZSA9IGx6LT5mdW5jID09IFB5X05vbmUgfHwgbHotPmZ1bmMgPT0gKFB5T2JqZWN0ICopJlB5Qm9vbF9UeXBlOwogCiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwogICAgIGZvciAoOzspIHsKQEAgLTQ3NiwxMiArNDY1LDExIEBACiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAobHotPmZ1bmMgPT0gUHlfTm9uZSB8fCBsei0+ZnVuYyA9PSAoUHlPYmplY3QgKikmUHlCb29sX1R5cGUpIHsKKyAgICAgICAgaWYgKGNoZWNrdHJ1ZSkgewogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2OCwyNiArMTE1Niw0MyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1hcF9uZXh0KG1hcG9iamVjdCAqbHopCiB7Ci0gICAgUHlPYmplY3QgKnZhbDsKLSAgICBQeU9iamVjdCAqYXJndHVwbGU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG51bWFyZ3MsIGk7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuaXRlcnMsIG5hcmdzLCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgbnVtYXJncyA9IFB5VHVwbGVfU2l6ZShsei0+aXRlcnMpOwotICAgIGFyZ3R1cGxlID0gUHlUdXBsZV9OZXcobnVtYXJncyk7Ci0gICAgaWYgKGFyZ3R1cGxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yIChpPTAgOyBpPG51bWFyZ3MgOyBpKyspIHsKLSAgICAgICAgdmFsID0gUHlJdGVyX05leHQoUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpKTsKLSAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworICAgIG5pdGVycyA9IFB5VHVwbGVfR0VUX1NJWkUobHotPml0ZXJzKTsKKyAgICBpZiAobml0ZXJzIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjaykpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG5pdGVycyAqIHNpemVvZihzdGFja1swXSkpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJndHVwbGUsIGksIHZhbCk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwobHotPmZ1bmMsIGFyZ3R1cGxlLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworCisgICAgbmFyZ3MgPSAwOworICAgIGZvciAoaT0wOyBpIDwgbml0ZXJzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpOworICAgICAgICBQeU9iamVjdCAqdmFsID0gUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0KGl0KTsKKyAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2tbaV0gPSB2YWw7CisgICAgICAgIG5hcmdzKys7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGx6LT5mdW5jLCBzdGFjaywgbmFyZ3MpOworCitleGl0OgorICAgIGZvciAoaT0wOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9ERUNSRUYoc3RhY2tbaV0pOworICAgIH0KKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3NzksNyArMTc4NCw3IEBACiAgICAgICAgIGlmIChkb19mbHVzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmIChkb19mbHVzaCkgewotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlCkBAIC0xODQ1LDcgKzE4NTAsNyBAQAogICAgIH0KIAogICAgIC8qIEZpcnN0IG9mIGFsbCwgZmx1c2ggc3RkZXJyICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xODU0LDcgKzE4NTksNyBAQAogICAgIC8qIFdlIHNob3VsZCBvbmx5IHVzZSAoR05VKSByZWFkbGluZSBpZiBQeXRob24ncyBzeXMuc3RkaW4gYW5kCiAgICAgICAgc3lzLnN0ZG91dCBhcmUgdGhlIHNhbWUgYXMgQydzIHN0ZGluIGFuZCBzdGRvdXQsIGJlY2F1c2Ugd2UKICAgICAgICBuZWVkIHRvIHBhc3MgaXQgdGhvc2UuICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaW4sICZQeUlkX2ZpbGVubywgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB0dHkgPSAwOwpAQCAtMTg2Nyw3ICsxODcyLDcgQEAKICAgICAgICAgdHR5ID0gZmQgPT0gZmlsZW5vKHN0ZGluKSAmJiBpc2F0dHkoZmQpOwogICAgIH0KICAgICBpZiAodHR5KSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgdHR5ID0gMDsKQEAgLTE5MDIsNyArMTkwNyw3IEBACiAgICAgICAgIHN0ZGluX2Vycm9yc19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZGluX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2Rpbmdfc3RyIHx8ICFzdGRpbl9lcnJvcnNfc3RyKQogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC0xOTI5LDkgKzE5MzQsOCBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0c3RyID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0c3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOworICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socG8pKTsKKyAgICAgICAgICAgIHByb21wdHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBvKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBvID0gTlVMTDsKQEAgLTE5ODMsNyArMTk4Nyw3IEBACiAgICAgICAgIGlmIChQeUZpbGVfV3JpdGVPYmplY3QocHJvbXB0LCBmb3V0LCBQeV9QUklOVF9SQVcpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0yMDg3LDEwICsyMDkxLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9zb3J0ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqbmV3bGlzdCwgKnYsICpzZXEsICprZXlmdW5jPU5VTEwsICpuZXdhcmdzOworICAgIFB5T2JqZWN0ICpuZXdsaXN0LCAqdiwgKnNlcSwgKmtleWZ1bmM9TlVMTCwgKipuZXdhcmdzOwogICAgIFB5T2JqZWN0ICpjYWxsYWJsZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgImtleSIsICJyZXZlcnNlIiwgMH07CiAgICAgaW50IHJldmVyc2U7CisgICAgUHlfc3NpemVfdCBuYXJnczsKIAogICAgIC8qIGFyZ3MgMS0zIHNob3VsZCBtYXRjaCBsaXN0c29ydCBpbiBPYmplY3RzL2xpc3RvYmplY3QuYyAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9pOnNvcnRlZCIsCkBAIC0yMTA3LDE1ICsyMTEyLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbmV3YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgNCk7Ci0gICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobmV3bGlzdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHYgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgbmV3YXJncyA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKSAtIDE7CisgICAgdiA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoY2FsbGFibGUsIG5ld2FyZ3MsIG5hcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwpAQCAtMjcxMCwxMCArMjcwOSwxMCBAQAogICAgIFNFVEJVSUxUSU4oInppcCIsICAgICAgICAgICAgICAgICAgICZQeVppcF9UeXBlKTsKICAgICBkZWJ1ZyA9IFB5Qm9vbF9Gcm9tTG9uZyhQeV9PcHRpbWl6ZUZsYWcgPT0gMCk7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX2RlYnVnX18iLCBkZWJ1ZykgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoZGVidWcpOworICAgICAgICBQeV9ERUNSRUYoZGVidWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihkZWJ1Zyk7CisgICAgUHlfREVDUkVGKGRlYnVnKTsKIAogICAgIHJldHVybiBtb2Q7CiAjdW5kZWYgQUREX1RPX0FMTApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCBlOWQwY2JiLi44MmNjOWEyIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTUsODcgKzE1LDEyIEBACiAjaW5jbHVkZSAiZGljdG9iamVjdC5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAicHlkdHJhY2UuaCIKICNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLSNpZm5kZWYgV0lUSF9UU0MKLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YXIpCi0KLSNlbHNlCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NDsKLQotLyogUG93ZXJQQyBzdXBwb3J0LgotICAgIl9fcHBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIHByZXByb2Nlc3NvciBkZWZpbml0aW9uIHRvIGRldGVjdCBvbiBPUyBYLCB3aGVyZWFzCi0gICAiX19wb3dlcnBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIGNvcnJlY3Qgb25lIGZvciBMaW51eCB3aXRoIEdDQwotKi8KLSNpZiBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKQotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhcikgcHBjX2dldGNvdW50ZXIoJnZhcikKLQotc3RhdGljIHZvaWQKLXBwY19nZXRjb3VudGVyKHVpbnQ2NCAqdikKLXsKLSAgICB1bnNpZ25lZCBsb25nIHRidSwgdGIsIHRidTI7Ci0KLSAgbG9vcDoKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRidSAlMCIgOiAiPXIiICh0YnUpICk7Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YiAgJTAiIDogIj1yIiAodGIpICApOwotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGJ1ICUwIiA6ICI9ciIgKHRidTIpKTsKLSAgICBpZiAoX19idWlsdGluX2V4cGVjdCh0YnUgIT0gdGJ1MiwgMCkpIGdvdG8gbG9vcDsKLQotICAgIC8qIFRoZSBzbGlnaHRseSBwZWN1bGlhciB3YXkgb2Ygd3JpdGluZyB0aGUgbmV4dCBsaW5lcyBpcwotICAgICAgIGNvbXBpbGVkIGJldHRlciBieSBHQ0MgdGhhbiBhbnkgb3RoZXIgd2F5IEkgdHJpZWQuICovCi0gICAgKChsb25nKikodikpWzBdID0gdGJ1OwotICAgICgobG9uZyopKHYpKVsxXSA9IHRiOwotfQotCi0jZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQotCi0vKiB0aGlzIGlzIGZvciBsaW51eC94ODYgKGFuZCBwcm9iYWJseSBhbnkgb3RoZXIgR0NDL3g4NiBjb21ibykgKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIFwKLSAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHZhbCkpCi0KLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLQotLyogZm9yIGdjYy94ODZfNjQsIHRoZSAiQSIgY29uc3RyYWludCBpbiBESSBtb2RlIG1lYW5zICplaXRoZXIqIHJheCAqb3IqIHJkeDsKLSAgIG5vdCBlZHg6ZWF4IGFzIGl0IGRvZXMgZm9yIGkzODYuICBTaW5jZSByZHRzYyBwdXRzIGl0cyByZXN1bHQgaW4gZWR4OmVheAotICAgZXZlbiBpbiA2NC1iaXQgbW9kZSwgd2UgbmVlZCB0byB1c2UgImEiIGFuZCAiZCIgZm9yIHRoZSBsb3dlciBhbmQgdXBwZXIKLSAgIDMyLWJpdCBwaWVjZXMgb2YgdGhlIHJlc3VsdC4gKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdW5zaWduZWQgaW50IGgsIGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1hIiAobCksICI9ZCIgKGgpKTsgXAotICAgICh2YWwpID0gKCh1aW50NjQpbCkgfCAoKCh1aW50NjQpaCkgPDwgMzIpOyAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0KLSNlbHNlCi0KLSNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gaW1wbGVtZW50IHRpbWVzdGFtcCBjb3VudGVyIGZvciB0aGlzIGFyY2hpdGVjdHVyZSIKLQotI2VuZGlmCi0KLXZvaWQgZHVtcF90c2MoaW50IG9wY29kZSwgaW50IHRpY2tlZCwgdWludDY0IGluc3QwLCB1aW50NjQgaW5zdDEsCi0gICAgICAgICAgICAgIHVpbnQ2NCBsb29wMCwgdWludDY0IGxvb3AxLCB1aW50NjQgaW50cjAsIHVpbnQ2NCBpbnRyMSkKLXsKLSAgICB1aW50NjQgaW50ciwgaW5zdCwgbG9vcDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotICAgIGlmICghdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXApCi0gICAgICAgIHJldHVybjsKLSAgICBpbnRyID0gaW50cjEgLSBpbnRyMDsKLSAgICBpbnN0ID0gaW5zdDEgLSBpbnN0MCAtIGludHI7Ci0gICAgbG9vcCA9IGxvb3AxIC0gbG9vcDAgLSBpbnRyOwotICAgIGZwcmludGYoc3RkZXJyLCAib3Bjb2RlPSUwM2QgdD0lZCBpbnN0PSUwNmxsZCBsb29wPSUwNmxsZFxuIiwKLSAgICAgICAgICAgIG9wY29kZSwgdGlja2VkLCBpbnN0LCBsb29wKTsKLX0KLQotI2VuZGlmCi0KIC8qIFR1cm4gdGhpcyBvbiBpZiB5b3VyIGNvbXBpbGVyIGNob2tlcyBvbiB0aGUgYmlnIHN3aXRjaDogKi8KIC8qICNkZWZpbmUgQ0FTRV9UT09fQklHIDEgKi8KIApAQCAtMTA4LDI0ICszMywxMyBAQAogdHlwZWRlZiBQeU9iamVjdCAqKCpjYWxscHJvYykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi0jaWZkZWYgV0lUSF9UU0MKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQsIHVpbnQ2NCosIHVpbnQ2NCopOwotI2Vsc2UKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQpOwotI2VuZGlmCi1zdGF0aWMgUHlPYmplY3QgKiBmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogZXh0X2RvX2NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKioqLCBpbnQsIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIHVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKiwgaW50LCBQeU9iamVjdCAqKiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwotc3RhdGljIFB5T2JqZWN0ICogdXBkYXRlX3N0YXJfYXJncyhpbnQsIGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKioqKTsKLXN0YXRpYyBQeU9iamVjdCAqIGxvYWRfYXJncyhQeU9iamVjdCAqKiosIGludCk7Ci0jZGVmaW5lIENBTExfRkxBR19WQVIgMQotI2RlZmluZSBDQUxMX0ZMQUdfS1cgMgorc3RhdGljIFB5T2JqZWN0ICogY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKiosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqLCBQeU9iamVjdCAqKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsX2NvcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50IGxsdHJhY2U7Ci1zdGF0aWMgaW50IHBydHJhY2UoUHlPYmplY3QgKiwgY2hhciAqKTsKK3N0YXRpYyBpbnQgcHJ0cmFjZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogI2VuZGlmCiBzdGF0aWMgaW50IGNhbGxfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqLApAQCAtMTM3LDE0ICs1MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOwogc3RhdGljIGludCBtYXliZV9jYWxsX2xpbmVfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICosIGludCAqLCBpbnQgKiwgaW50ICopOworc3RhdGljIHZvaWQgbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqLCBpbnQgKiwgaW50ICosIGludCAqKTsKK3N0YXRpYyB2b2lkIGR0cmFjZV9mdW5jdGlvbl9lbnRyeShQeUZyYW1lT2JqZWN0ICopOworc3RhdGljIHZvaWQgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihQeUZyYW1lT2JqZWN0ICopOwogCiBzdGF0aWMgUHlPYmplY3QgKiBjbXBfb3V0Y29tZShpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBQeU9iamVjdCAqIGltcG9ydF9mcm9tKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBpbXBvcnRfYWxsX2Zyb20oUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y191bmJvdW5kKFB5Q29kZU9iamVjdCAqY28sIGludCBvcGFyZyk7CiBzdGF0aWMgUHlPYmplY3QgKiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgdW5zaWduZWQgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqLCBjb25zdCBfUHlfQ09ERVVOSVQgKik7CiBzdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBfUHlfSWRlbnRpZmllciAqKTsKIAogI2RlZmluZSBOQU1FX0VSUk9SX01TRyBcCkBAIC03OTYsMTEgKzcxNCwxOCBAQAogUHlPYmplY3QgKgogUHlFdmFsX0V2YWxGcmFtZUV4KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCiB7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5pbnRlcnAtPmV2YWxfZnJhbWUoZiwgdGhyb3dmbGFnKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCit7CiAjaWZkZWYgRFhQQUlSUwogICAgIGludCBsYXN0b3Bjb2RlID0gMDsKICNlbmRpZgogICAgIFB5T2JqZWN0ICoqc3RhY2tfcG9pbnRlcjsgIC8qIE5leHQgZnJlZSBzbG90IGluIHZhbHVlIHN0YWNrICovCi0gICAgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cjsKKyAgICBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHI7CiAgICAgaW50IG9wY29kZTsgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlICovCiAgICAgaW50IG9wYXJnOyAgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlIGFyZ3VtZW50LCBpZiBhbnkgKi8KICAgICBlbnVtIHdoeV9jb2RlIHdoeTsgLyogUmVhc29uIGZvciBibG9jayBzdGFjayB1bndpbmQgKi8KQEAgLTgxOCw3ICs3NDMsNyBAQAogICAgICAgIHRpbWUgaXQgaXMgdGVzdGVkLiAqLwogICAgIGludCBpbnN0cl91YiA9IC0xLCBpbnN0cl9sYiA9IDAsIGluc3RyX3ByZXYgPSAtMTsKIAotICAgIHVuc2lnbmVkIGNoYXIgKmZpcnN0X2luc3RyOworICAgIGNvbnN0IF9QeV9DT0RFVU5JVCAqZmlyc3RfaW5zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwogICAgIFB5T2JqZWN0ICpjb25zdHM7CiAKQEAgLTg4NiwyNCArODExLDEwIEBACiAvKiBJbXBvcnQgdGhlIHN0YXRpYyBqdW1wIHRhYmxlICovCiAjaW5jbHVkZSAib3Bjb2RlX3RhcmdldHMuaCIKIAotLyogVGhpcyBtYWNybyBpcyB1c2VkIHdoZW4gc2V2ZXJhbCBvcGNvZGVzIGRlZmVyIHRvIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uCi0gICAoZS5nLiBTRVRVUF9MT09QLCBTRVRVUF9GSU5BTExZKSAqLwotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAotICAgIGNhc2Ugb3A6IFwKLSAgICAgICAgZ290byBpbXBsOyBcCi0KICNkZWZpbmUgVEFSR0VUKG9wKSBcCiAgICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAogICAgIGNhc2Ugb3A6CiAKLQogI2RlZmluZSBESVNQQVRDSCgpIFwKICAgICB7IFwKICAgICAgICAgaWYgKCFfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZXZhbF9icmVha2VyKSkgeyAgICAgIFwKQEAgLTkxNSwxOCArODI2LDIwIEBACiAjaWZkZWYgTExUUkFDRQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CiAjZWxzZQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CkBAIC05MzUsMTAgKzg0OCw3IEBACiAjZWxzZQogI2RlZmluZSBUQVJHRVQob3ApIFwKICAgICBjYXNlIG9wOgotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyBhYm91dCBgaW1wbGAgdW51c2VkICovIFwKLSAgICBpZiAoMCkgZ290byBpbXBsOyBcCi0gICAgY2FzZSBvcDoKKwogI2RlZmluZSBESVNQQVRDSCgpIGNvbnRpbnVlCiAjZGVmaW5lIEZBU1RfRElTUEFUQ0goKSBnb3RvIGZhc3RfbmV4dF9vcGNvZGUKICNlbmRpZgpAQCAtOTUyLDcwICs4NjIsMzMgQEAKICNkZWZpbmUgR0VUSVRFTSh2LCBpKSBQeVR1cGxlX0dldEl0ZW0oKHYpLCAoaSkpCiAjZW5kaWYKIAotI2lmZGVmIFdJVEhfVFNDCi0vKiBVc2UgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciB0byBtYXJrIGNlcnRhaW4gZXZlbnRzOgotICAgaW5zdDAgLS0gYmVnaW5uaW5nIG9mIHN3aXRjaCBzdGF0ZW1lbnQgZm9yIG9wY29kZSBkaXNwYXRjaAotICAgaW5zdDEgLS0gZW5kIG9mIHN3aXRjaCBzdGF0ZW1lbnQgKG1heSBiZSBza2lwcGVkKQotICAgbG9vcDAgLS0gdGhlIHRvcCBvZiB0aGUgbWFpbmxvb3AKLSAgIGxvb3AxIC0tIHBsYWNlIHdoZXJlIGNvbnRyb2wgcmV0dXJucyBhZ2FpbiB0byB0b3Agb2YgbWFpbmxvb3AKLSAgICAgICAgICAgIChtYXkgYmUgc2tpcHBlZCkKLSAgIGludHIxIC0tIGJlZ2lubmluZyBvZiBsb25nIGludGVycnVwdGlvbgotICAgaW50cjIgLS0gZW5kIG9mIGxvbmcgaW50ZXJydXB0aW9uCi0KLSAgIE1hbnkgb3Bjb2RlcyBjYWxsIG91dCB0byBoZWxwZXIgQyBmdW5jdGlvbnMuICBJbiBzb21lIGNhc2VzLCB0aGUKLSAgIHRpbWUgaW4gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBjb3VudGVkIHRvd2FyZHMgdGhlIHRpbWUgZm9yIHRoZQotICAgb3Bjb2RlLCBidXQgbm90IGluIGFsbCBjYXNlcy4gIEZvciBleGFtcGxlLCBhIENBTExfRlVOQ1RJT04gb3Bjb2RlCi0gICBjYWxscyBhbm90aGVyIFB5dGhvbiBmdW5jdGlvbjsgdGhlcmUncyBubyBwb2ludCBpbiBjaGFyZ2UgYWxsIHRoZQotICAgYnl0ZWNvZGUgZXhlY3V0ZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbiB0byB0aGUgY2FsbGVyLgotCi0gICBJdCdzIGhhcmQgdG8gbWFrZSBhIHVzZWZ1bCBqdWRnZW1lbnQgc3RhdGljYWxseS4gIEluIHRoZSBwcmVzZW5jZQotICAgb2Ygb3BlcmF0b3Igb3ZlcmxvYWRpbmcsIGl0J3MgaW1wb3NzaWJsZSB0byB0ZWxsIGlmIGEgY2FsbCB3aWxsCi0gICBleGVjdXRlIG5ldyBQeXRob24gY29kZSBvciBub3QuCi0KLSAgIEl0J3MgYSBjYXNlLWJ5LWNhc2UganVkZ2VtZW50LiAgSSdsbCB1c2UgaW50cjEgZm9yIHRoZSBmb2xsb3dpbmcKLSAgIGNhc2VzOgotCi0gICBJTVBPUlRfU1RBUgotICAgSU1QT1JUX0ZST00KLSAgIENBTExfRlVOQ1RJT04gKGFuZCBmcmllbmRzKQotCi0gKi8KLSAgICB1aW50NjQgaW5zdDAsIGluc3QxLCBsb29wMCwgbG9vcDEsIGludHIwID0gMCwgaW50cjEgPSAwOwotICAgIGludCB0aWNrZWQgPSAwOwotCi0gICAgUkVBRF9USU1FU1RBTVAoaW5zdDApOwotICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0gICAgUkVBRF9USU1FU1RBTVAobG9vcDEpOwotCi0gICAgLyogc2h1dCB1cCB0aGUgY29tcGlsZXIgKi8KLSAgICBvcGNvZGUgPSAwOwotI2VuZGlmCi0KIC8qIENvZGUgYWNjZXNzIG1hY3JvcyAqLwogCi0jZGVmaW5lIElOU1RSX09GRlNFVCgpICAoKGludCkobmV4dF9pbnN0ciAtIGZpcnN0X2luc3RyKSkKLSNkZWZpbmUgTkVYVE9QKCkgICAgICAgICgqbmV4dF9pbnN0cisrKQotI2RlZmluZSBORVhUQVJHKCkgICAgICAgKG5leHRfaW5zdHIgKz0gMiwgKG5leHRfaW5zdHJbLTFdPDw4KSArIG5leHRfaW5zdHJbLTJdKQotI2RlZmluZSBQRUVLQVJHKCkgICAgICAgKChuZXh0X2luc3RyWzJdPDw4KSArIG5leHRfaW5zdHJbMV0pCi0jZGVmaW5lIEpVTVBUTyh4KSAgICAgICAobmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgKHgpKQotI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpKQorLyogVGhlIGludGVnZXIgb3ZlcmZsb3cgaXMgY2hlY2tlZCBieSBhbiBhc3NlcnRpb24gYmVsb3cuICovCisjZGVmaW5lIElOU1RSX09GRlNFVCgpICAoc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKiAoaW50KShuZXh0X2luc3RyIC0gZmlyc3RfaW5zdHIpKQorI2RlZmluZSBORVhUT1BBUkcoKSAgZG8geyBcCisgICAgICAgIF9QeV9DT0RFVU5JVCB3b3JkID0gKm5leHRfaW5zdHI7IFwKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERSh3b3JkKTsgXAorICAgICAgICBvcGFyZyA9IF9QeV9PUEFSRyh3b3JkKTsgXAorICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBKVU1QVE8oeCkgICAgICAgKG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArICh4KSAvIHNpemVvZihfUHlfQ09ERVVOSVQpKQorI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpCiAKIC8qIE9wQ29kZSBwcmVkaWN0aW9uIG1hY3JvcwogICAgIFNvbWUgb3Bjb2RlcyB0ZW5kIHRvIGNvbWUgaW4gcGFpcnMgdGh1cyBtYWtpbmcgaXQgcG9zc2libGUgdG8KICAgICBwcmVkaWN0IHRoZSBzZWNvbmQgY29kZSB3aGVuIHRoZSBmaXJzdCBpcyBydW4uICBGb3IgZXhhbXBsZSwKLSAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IEpVTVBfSUZfRkFMU0Ugb3IgSlVNUF9JRl9UUlVFLiAgQW5kLAotICAgIHRob3NlIG9wY29kZXMgYXJlIG9mdGVuIGZvbGxvd2VkIGJ5IGEgUE9QX1RPUC4KKyAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IFBPUF9KVU1QX0lGX0ZBTFNFIG9yIFBPUF9KVU1QX0lGX1RSVUUuCiAKICAgICBWZXJpZnlpbmcgdGhlIHByZWRpY3Rpb24gY29zdHMgYSBzaW5nbGUgaGlnaC1zcGVlZCB0ZXN0IG9mIGEgcmVnaXN0ZXIKICAgICB2YXJpYWJsZSBhZ2FpbnN0IGEgY29uc3RhbnQuICBJZiB0aGUgcGFpcmluZyB3YXMgZ29vZCwgdGhlbiB0aGUKICAgICBwcm9jZXNzb3IncyBvd24gaW50ZXJuYWwgYnJhbmNoIHByZWRpY2F0aW9uIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZCBvZgogICAgIHN1Y2Nlc3MsIHJlc3VsdGluZyBpbiBhIG5lYXJseSB6ZXJvLW92ZXJoZWFkIHRyYW5zaXRpb24gdG8gdGhlCiAgICAgbmV4dCBvcGNvZGUuICBBIHN1Y2Nlc3NmdWwgcHJlZGljdGlvbiBzYXZlcyBhIHRyaXAgdGhyb3VnaCB0aGUgZXZhbC1sb29wCi0gICAgaW5jbHVkaW5nIGl0cyB0d28gdW5wcmVkaWN0YWJsZSBicmFuY2hlcywgdGhlIEhBU19BUkcgdGVzdCBhbmQgdGhlCi0gICAgc3dpdGNoLWNhc2UuICBDb21iaW5lZCB3aXRoIHRoZSBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwKLSAgICBhIHN1Y2Nlc3NmdWwgUFJFRElDVCBoYXMgdGhlIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZgotICAgIHRoZXkgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KKyAgICBpbmNsdWRpbmcgaXRzIHVucHJlZGljdGFibGUgc3dpdGNoLWNhc2UgYnJhbmNoLiAgQ29tYmluZWQgd2l0aCB0aGUKKyAgICBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwgYSBzdWNjZXNzZnVsIFBSRURJQ1QgaGFzIHRoZQorICAgIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZiB0aGV5IHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZQorICAgIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KIAogICAgIElmIGNvbGxlY3Rpbmcgb3Bjb2RlIHN0YXRpc3RpY3MsIHlvdXIgY2hvaWNlcyBhcmUgdG8gZWl0aGVyIGtlZXAgdGhlCiAgICAgcHJlZGljdGlvbnMgdHVybmVkLW9uIGFuZCBpbnRlcnByZXQgdGhlIHJlc3VsdHMgYXMgaWYgc29tZSBvcGNvZGVzCkBAIC0xMDMwLDEzICs5MDMsMTkgQEAKIAogI2lmIGRlZmluZWQoRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRSkgfHwgVVNFX0NPTVBVVEVEX0dPVE9TCiAjZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgwKSBnb3RvIFBSRURfIyNvcAotI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6Ci0jZGVmaW5lIFBSRURJQ1RFRF9XSVRIX0FSRyhvcCkgIFBSRURfIyNvcDoKICNlbHNlCi0jZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBvcCkgZ290byBQUkVEXyMjb3AKLSNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOiBuZXh0X2luc3RyKysKLSNkZWZpbmUgUFJFRElDVEVEX1dJVEhfQVJHKG9wKSAgUFJFRF8jI29wOiBvcGFyZyA9IFBFRUtBUkcoKTsgbmV4dF9pbnN0ciArPSAzCisjZGVmaW5lIFBSRURJQ1Qob3ApIFwKKyAgICBkb3sgXAorICAgICAgICBfUHlfQ09ERVVOSVQgd29yZCA9ICpuZXh0X2luc3RyOyBcCisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUod29yZCk7IFwKKyAgICAgICAgaWYgKG9wY29kZSA9PSBvcCl7IFwKKyAgICAgICAgICAgIG9wYXJnID0gX1B5X09QQVJHKHdvcmQpOyBcCisgICAgICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICAgICAgICAgIGdvdG8gUFJFRF8jI29wOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUoMCkKICNlbmRpZgorI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6CiAKIAogLyogU3RhY2sgbWFuaXB1bGF0aW9uIG1hY3JvcyAqLwpAQCAtMTEwMCw3ICs5NzksNyBAQAogICAgIH0KIAogI2RlZmluZSBVTldJTkRfRVhDRVBUX0hBTkRMRVIoYikgXAotICAgIHsgXAorICAgIGRvIHsgXAogICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOyBcCiAgICAgICAgIGFzc2VydChTVEFDS19MRVZFTCgpID49IChiKS0+Yl9sZXZlbCArIDMpOyBcCiAgICAgICAgIHdoaWxlIChTVEFDS19MRVZFTCgpID4gKGIpLT5iX2xldmVsICsgMykgeyBcCkBAIC0xMTE2LDcgKzk5NSw3IEBACiAgICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCi0gICAgfQorICAgIH0gd2hpbGUoMCkKIAogLyogU3RhcnQgb2YgY29kZSAqLwogCkBAIC0xMTYwLDIxICsxMDM5LDI0IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fZW50cnkoZik7CisKICAgICBjbyA9IGYtPmZfY29kZTsKICAgICBuYW1lcyA9IGNvLT5jb19uYW1lczsKICAgICBjb25zdHMgPSBjby0+Y29fY29uc3RzOwogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKLSAgICBmaXJzdF9pbnN0ciA9ICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpOwotICAgIC8qIEFuIGV4cGxhbmF0aW9uIGlzIGluIG9yZGVyIGZvciB0aGUgbmV4dCBsaW5lLgorICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvLT5jb19jb2RlKSk7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfR0VUX1NJWkUoY28tPmNvX2NvZGUpIDw9IElOVF9NQVgpOworICAgIGFzc2VydChQeUJ5dGVzX0dFVF9TSVpFKGNvLT5jb19jb2RlKSAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSksIHNpemVvZihfUHlfQ09ERVVOSVQpKSk7CisgICAgZmlyc3RfaW5zdHIgPSAoX1B5X0NPREVVTklUICopIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKTsKKyAgICAvKgorICAgICAgIGYtPmZfbGFzdGkgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiwKKyAgICAgICB1bmxlc3MgaXQncyAtMSBpbiB3aGljaCBjYXNlIG5leHRfaW5zdHIgc2hvdWxkIGJlIGZpcnN0X2luc3RyLgogCi0gICAgICAgZi0+Zl9sYXN0aSBub3cgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbgotICAgICAgIGV4ZWN1dGVkLiAgWW91IG1pZ2h0IHRoaW5rIHRoaXMgd2FzIG9idmlvdXMgZnJvbSB0aGUgbmFtZSwgYnV0Ci0gICAgICAgdGhpcyB3YXNuJ3QgYWx3YXlzIHRydWUgYmVmb3JlIDIuMyEgIFB5RnJhbWVfTmV3IG5vdyBzZXRzCi0gICAgICAgZi0+Zl9sYXN0aSB0byAtMSAoaS5lLiB0aGUgaW5kZXggKmJlZm9yZSogdGhlIGZpcnN0IGluc3RydWN0aW9uKQotICAgICAgIGFuZCBZSUVMRF9WQUxVRSBkb2Vzbid0IGZpZGRsZSB3aXRoIGZfbGFzdGkgYW55IG1vcmUuICBTbyB0aGlzCi0gICAgICAgZG9lcyB3b3JrLiAgUHJvbWlzZS4KLSAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkIHlpZWxkCisgICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZGx5IHlpZWxkCiAgICAgICAgbXVsdGlwbGUgdmFsdWVzLgogCiAgICAgICAgV2hlbiB0aGUgUFJFRElDVCgpIG1hY3JvcyBhcmUgZW5hYmxlZCwgc29tZSBvcGNvZGUgcGFpcnMgZm9sbG93IGluCkBAIC0xMTgzLDE1ICsxMDY1LDIwIEBACiAgICAgICAgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlOyBhY2NvcmRpbmdseSxmLT5mX2xhc3RpIHdpbGwgcG9pbnQgdG8KICAgICAgICB0aGUgZmlyc3QgY29kZSBpbiB0aGUgcGFpciAoZm9yIGluc3RhbmNlLCBHRVRfSVRFUiBmb2xsb3dlZCBieQogICAgICAgIEZPUl9JVEVSIGlzIGVmZmVjdGl2ZWx5IGEgc2luZ2xlIG9wY29kZSBhbmQgZi0+Zl9sYXN0aSB3aWxsIHBvaW50Ci0gICAgICAgYXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCisgICAgICAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCiAgICAgKi8KLSAgICBuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyBmLT5mX2xhc3RpICsgMTsKKyAgICBhc3NlcnQoZi0+Zl9sYXN0aSA+PSAtMSk7CisgICAgbmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyOworICAgIGlmIChmLT5mX2xhc3RpID49IDApIHsKKyAgICAgICAgYXNzZXJ0KGYtPmZfbGFzdGkgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV4dF9pbnN0ciArPSBmLT5mX2xhc3RpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyAxOworICAgIH0KICAgICBzdGFja19wb2ludGVyID0gZi0+Zl9zdGFja3RvcDsKICAgICBhc3NlcnQoc3RhY2tfcG9pbnRlciAhPSBOVUxMKTsKICAgICBmLT5mX3N0YWNrdG9wID0gTlVMTDsgICAgICAgLyogcmVtYWlucyBOVUxMIHVubGVzcyB5aWVsZCBzdXNwZW5kcyBmcmFtZSAqLwogICAgIGYtPmZfZXhlY3V0aW5nID0gMTsKIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xMjE5LDIzICsxMTA2LDYgQEAKICNlbmRpZgogCiAgICAgZm9yICg7OykgewotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGlmIChpbnN0MSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBBbG1vc3Qgc3VyZWx5LCB0aGUgb3Bjb2RlIGV4ZWN1dGVkIGEgYnJlYWsKLSAgICAgICAgICAgICAgIG9yIGEgY29udGludWUsIHByZXZlbnRpbmcgaW5zdDEgZnJvbSBiZWluZyBzZXQKLSAgICAgICAgICAgICAgIG9uIHRoZSB3YXkgb3V0IG9mIHRoZSBsb29wLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICAgICAgICAgIGxvb3AxID0gaW5zdDE7Ci0gICAgICAgIH0KLSAgICAgICAgZHVtcF90c2Mob3Bjb2RlLCB0aWNrZWQsIGluc3QwLCBpbnN0MSwgbG9vcDAsIGxvb3AxLAotICAgICAgICAgICAgICAgICBpbnRyMCwgaW50cjEpOwotICAgICAgICB0aWNrZWQgPSAwOwotICAgICAgICBpbnN0MSA9IDA7Ci0gICAgICAgIGludHIwID0gMDsKLSAgICAgICAgaW50cjEgPSAwOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0jZW5kaWYKICAgICAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgPj0gZi0+Zl92YWx1ZXN0YWNrKTsgLyogZWxzZSB1bmRlcmZsb3cgKi8KICAgICAgICAgYXNzZXJ0KFNUQUNLX0xFVkVMKCkgPD0gY28tPmNvX3N0YWNrc2l6ZSk7ICAvKiBlbHNlIG92ZXJmbG93ICovCiAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CkBAIC0xMjQ5LDE0ICsxMTE5LDExIEBACiAgICAgICAgICAgIFB5X01ha2VQZW5kaW5nQ2FsbHMoKSBhYm92ZS4gKi8KIAogICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmV2YWxfYnJlYWtlcikpIHsKLSAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBTRVRVUF9GSU5BTExZKSB7CisgICAgICAgICAgICBpZiAoX1B5X09QQ09ERSgqbmV4dF9pbnN0cikgPT0gU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgICAgIC8qIE1ha2UgdGhlIGxhc3Qgb3Bjb2RlIGJlZm9yZQogICAgICAgICAgICAgICAgICAgIGEgdHJ5OiBmaW5hbGx5OiBibG9jayB1bmludGVycnVwdGlibGUuICovCiAgICAgICAgICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOwogICAgICAgICAgICAgfQotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICB0aWNrZWQgPSAxOwotI2VuZGlmCiAgICAgICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJnBlbmRpbmdjYWxsc190b19kbykpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfTWFrZVBlbmRpbmdDYWxscygpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTEyOTYsNiArMTE2Myw5IEBACiAgICAgZmFzdF9uZXh0X29wY29kZToKICAgICAgICAgZi0+Zl9sYXN0aSA9IElOU1RSX09GRlNFVCgpOwogCisgICAgICAgIGlmIChQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkKKyAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lKGYsICZpbnN0cl9sYiwgJmluc3RyX3ViLCAmaW5zdHJfcHJldik7CisKICAgICAgICAgLyogbGluZS1ieS1saW5lIHRyYWNpbmcgc3VwcG9ydCAqLwogCiAgICAgICAgIGlmIChfUHlfVHJhY2luZ1Bvc3NpYmxlICYmCkBAIC0xMzIyLDExICsxMTkyLDcgQEAKIAogICAgICAgICAvKiBFeHRyYWN0IG9wY29kZSBhbmQgYXJndW1lbnQgKi8KIAotICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgb3BhcmcgPSAwOyAgIC8qIGFsbG93cyBvcGFyZyB0byBiZSBzdG9yZWQgaW4gYSByZWdpc3RlciBiZWNhdXNlCi0gICAgICAgICAgICBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgcmVtZW1iZXJlZCBhY3Jvc3MgYSBmdWxsIGxvb3AgKi8KLSAgICAgICAgaWYgKEhBU19BUkcob3Bjb2RlKSkKLSAgICAgICAgICAgIG9wYXJnID0gTkVYVEFSRygpOworICAgICAgICBORVhUT1BBUkcoKTsKICAgICBkaXNwYXRjaF9vcGNvZGU6CiAjaWZkZWYgRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRQogI2lmZGVmIERYUEFJUlMKQEAgLTEzNTEsOSArMTIxNyw2IEBACiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIC8qIE1haW4gc3dpdGNoIG9uIG9wY29kZSAqLwotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MCk7Ci0KICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKIAogICAgICAgICAvKiBCRVdBUkUhCkBAIC0xMzc3LDYgKzEyNDAsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKExPQURfQ09OU1QpOwogICAgICAgICBUQVJHRVQoTE9BRF9DT05TVCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gR0VUSVRFTShjb25zdHMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CkBAIC0xMzg0LDcgKzEyNDgsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFNUT1JFX0ZBU1QpOworICAgICAgICBQUkVESUNURUQoU1RPUkVfRkFTVCk7CiAgICAgICAgIFRBUkdFVChTVE9SRV9GQVNUKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQT1AoKTsKICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCB2YWx1ZSk7CkBAIC0xODYzLDYgKzE3MjcsNjEgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoU1RPUkVfQU5OT1RBVElPTikgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fZGljdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm4gPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGlmIChmLT5mX2xvY2FscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIHdoZW4gc3RvcmluZyBhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGZpcnN0IHRyeSB0byBnZXQgX19hbm5vdGF0aW9uc19fIGZyb20gbG9jYWxzLi4uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9sb2NhbHMpKSB7CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogLi4uaWYgc3VjY2VlZGVkLCBfX2Fubm90YXRpb25zX19bbmFtZV0gPSBhbm4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChhbm5fZGljdCkpIHsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShhbm5fZGljdCwgbmFtZSwgYW5uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oYW5uX2RpY3QsIG5hbWUsIGFubik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChERUxFVEVfU1VCU0NSKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3ViID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29udGFpbmVyID0gU0VDT05EKCk7CkBAIC0yMDA2LDYgKzE5MjUsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBTRVRfVE9QKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0yMDE2LDQxICsxOTM2LDUyIEBACiAgICAgICAgICAgICBQeU9iamVjdCAqYWl0ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoYWl0ZXIpOwogCi0gICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnZXR0ZXIgPSB0eXBlLT50cF9hc19hc3luYy0+YW1fYW5leHQ7Ci0KLSAgICAgICAgICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG5leHRfaXRlciA9ICgqZ2V0dGVyKShhaXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGFpdGVyKSkgeworICAgICAgICAgICAgICAgIGF3YWl0YWJsZSA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dChhaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoICIKLSAgICAgICAgICAgICAgICAgICAgIl9fYW5leHRfXyBtZXRob2QsIGdvdCAlLjEwMHMiLAotICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodHlwZS0+dHBfYXNfYXN5bmMgIT0gTlVMTCl7CisgICAgICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOwotICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCi0gICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoZ2V0dGVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRfaXRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gaXRlcmF0b3Igd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgaWYgKGF3YWl0YWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBfX2FuZXh0X186ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaXRlciktPnRwX25hbWUpOworCisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUFVTSChhd2FpdGFibGUpOworICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgIFRBUkdFVChHRVRfQVdBSVRBQkxFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBUT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKGl0ZXJhYmxlKTsKQEAgLTIwNzgsMjEgKzIwMDksMjIgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChZSUVMRF9GUk9NKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFBPUCgpOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlY2lldmVyID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVjZWl2ZXIgPSBUT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7Ci0gICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChyZWNpZXZlcikgfHwgUHlDb3JvX0NoZWNrRXhhY3QocmVjaWV2ZXIpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopcmVjaWV2ZXIsIHYpOworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjZWl2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2VpdmVyKSkgeworICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2VpdmVyLCB2KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNpZXZlciktPnRwX2l0ZXJuZXh0KHJlY2lldmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRShyZWNlaXZlciktPnRwX2l0ZXJuZXh0KHJlY2VpdmVyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKHJlY2lldmVyLCAmUHlJZF9zZW5kLCB2LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVjZWl2ZXIsICZQeUlkX3NlbmQsIHYsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKSB7CkBAIC0yMTAzLDcgKzIwMzUsNyBAQAogICAgICAgICAgICAgICAgIGVyciA9IF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVjaWV2ZXIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWNlaXZlcik7CiAgICAgICAgICAgICAgICAgU0VUX1RPUCh2YWwpOwogICAgICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgICAgICB9CkBAIC0yMTExLDEyICsyMDQzLDIzIEBACiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKICAgICAgICAgICAgIC8qIGFuZCByZXBlYXQuLi4gKi8KLSAgICAgICAgICAgIGYtPmZfbGFzdGktLTsKKyAgICAgICAgICAgIGYtPmZfbGFzdGkgLT0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoWUlFTERfVkFMVUUpIHsKICAgICAgICAgICAgIHJldHZhbCA9IFBPUCgpOworCisgICAgICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKncgPSBfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhyZXR2YWwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dmFsID0gdzsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CiAgICAgICAgICAgICB3aHkgPSBXSFlfWUlFTEQ7CiAgICAgICAgICAgICBnb3RvIGZhc3RfeWllbGQ7CkBAIC0yMTMzLDYgKzIwNzYsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChQT1BfQkxPQ0spOwogICAgICAgICBUQVJHRVQoUE9QX0JMT0NLKSB7CiAgICAgICAgICAgICBQeVRyeUJsb2NrICpiID0gUHlGcmFtZV9CbG9ja1BvcChmKTsKICAgICAgICAgICAgIFVOV0lORF9CTE9DSyhiKTsKQEAgLTIyNDksNyArMjE5Myw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFVOUEFDS19TRVFVRU5DRSk7CisgICAgICAgIFBSRURJQ1RFRChVTlBBQ0tfU0VRVUVOQ0UpOwogICAgICAgICBUQVJHRVQoVU5QQUNLX1NFUVVFTkNFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2VxID0gUE9QKCksICppdGVtLCAqKml0ZW1zOwogICAgICAgICAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdChzZXEpICYmCkBAIC0yMzU4LDcgKzIzMDIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMICYmIF9QeUVycl9PQ0NVUlJFRCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTIzOTgsMjYgKzIzNDIsMzMgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwogICAgICAgICAgICAgUHlPYmplY3QgKnY7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9nbG9iYWxzKQotICAgICAgICAgICAgICAgICYmIFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKSB7CisgICAgICAgICAgICAgICAgJiYgUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdiA9IF9QeURpY3RfTG9hZEdsb2JhbCgoUHlEaWN0T2JqZWN0ICopZi0+Zl9nbG9iYWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGljdE9iamVjdCAqKWYtPmZfYnVpbHRpbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghX1B5RXJyX09DQ1VSUkVEKCkpCisgICAgICAgICAgICAgICAgICAgIGlmICghX1B5RXJyX09DQ1VSUkVEKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9QeURpY3RfTG9hZEdsb2JhbCgpIHJldHVybnMgTlVMTCB3aXRob3V0IHJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGFuIGV4Y2VwdGlvbiBpZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5RXhjX05hbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBTbG93LXBhdGggaWYgZ2xvYmFscyBvciBidWlsdGlucyBpcyBub3QgYSBkaWN0ICovCisKKyAgICAgICAgICAgICAgICAvKiBuYW1lc3BhY2UgMTogZ2xvYmFscyAqLwogICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIAorICAgICAgICAgICAgICAgICAgICAvKiBuYW1lc3BhY2UgMjogYnVpbHRpbnMgKi8KICAgICAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKQEAgLTI0NzcsNyArMjQyOCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yNTE2LDYgKzI0NjcsMjQgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoQlVJTERfU1RSSU5HKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RyOworICAgICAgICAgICAgUHlPYmplY3QgKmVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKKyAgICAgICAgICAgIGlmIChlbXB0eSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0ciA9IF9QeVVuaWNvZGVfSm9pbkFycmF5KGVtcHR5LCBzdGFja19wb2ludGVyIC0gb3BhcmcsIG9wYXJnKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbXB0eSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHdoaWxlICgtLW9wYXJnID49IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFBPUCgpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0goc3RyKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0dXAgPSBQeVR1cGxlX05ldyhvcGFyZyk7CiAgICAgICAgICAgICBpZiAodHVwID09IE5VTEwpCkBAIC0yNTQwLDEzICsyNTA5LDE0IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9UVVBMRV9VTlBBQ0ssIF9idWlsZF9saXN0X3VucGFjaykKLSAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1RfVU5QQUNLKQotICAgICAgICBfYnVpbGRfbGlzdF91bnBhY2s6IHsKLSAgICAgICAgICAgIGludCBjb252ZXJ0X3RvX3R1cGxlID0gb3Bjb2RlID09IEJVSUxEX1RVUExFX1VOUEFDSzsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCkKKyAgICAgICAgVEFSR0VUKEJVSUxEX1RVUExFX1VOUEFDSykKKyAgICAgICAgVEFSR0VUKEJVSUxEX0xJU1RfVU5QQUNLKSB7CisgICAgICAgICAgICBpbnQgY29udmVydF90b190dXBsZSA9IG9wY29kZSAhPSBCVUlMRF9MSVNUX1VOUEFDSzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeUxpc3RfTmV3KDApOwogICAgICAgICAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTI1NTUsNiArMjUyNSwxNiBAQAogCiAgICAgICAgICAgICAgICAgbm9uZV92YWwgPSBfUHlMaXN0X0V4dGVuZCgoUHlMaXN0T2JqZWN0ICopc3VtLCBQRUVLKGkpKTsKICAgICAgICAgICAgICAgICBpZiAobm9uZV92YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKDEgKyBvcGFyZyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRUVLKGkpLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CkBAIC0yNTk5LDcgKzI1NzksNyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKEJVSUxEX1NFVF9VTlBBQ0spIHsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5U2V0X05ldyhOVUxMKTsKICAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjYxOCw3ICsyNTk4LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChCVUlMRF9NQVApIHsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKm1hcCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOwogICAgICAgICAgICAgaWYgKG1hcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjQxLDg3ICsyNjIxLDE2MiBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIF9idWlsZF9tYXBfdW5wYWNrKQotICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDSykKLSAgICAgICAgX2J1aWxkX21hcF91bnBhY2s6IHsKLSAgICAgICAgICAgIGludCB3aXRoX2NhbGwgPSBvcGNvZGUgPT0gQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEw7Ci0gICAgICAgICAgICBpbnQgbnVtX21hcHM7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgVEFSR0VUKFNFVFVQX0FOTk9UQVRJT05TKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fZGljdDsKKyAgICAgICAgICAgIGlmIChmLT5mX2xvY2FscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIHdoZW4gc2V0dGluZyB1cCBhbm5vdGF0aW9ucyIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBjaGVjayBpZiBfX2Fubm90YXRpb25zX18gaW4gbG9jYWxzKCkuLi4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2xvY2FscykpIHsKKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAvKiAuLi5pZiBub3QsIGNyZWF0ZSBhIG5ldyBvbmUgKi8KKyAgICAgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVyciA9IF9QeURpY3RfU2V0SXRlbUlkKGYtPmZfbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18sIGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogZG8gdGhlIHNhbWUgaWYgbG9jYWxzKCkgaXMgbm90IGEgZGljdCAqLworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIpOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIsIGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfQ09OU1RfS0VZX01BUCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgUHlPYmplY3QgKm1hcDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXlzID0gVE9QKCk7CisgICAgICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdChrZXlzKSB8fAorICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoa2V5cykgIT0gKFB5X3NzaXplX3Qpb3BhcmcpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgQlVJTERfQ09OU1RfS0VZX01BUCBrZXlzIGFyZ3VtZW50Iik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hcCA9IF9QeURpY3RfTmV3UHJlc2l6ZWQoKFB5X3NzaXplX3Qpb3BhcmcpOworICAgICAgICAgICAgaWYgKG1hcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrZXlzLCBvcGFyZyAtIGkpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFBFRUsoaSArIDEpOworICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKG1hcCwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXApOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBVU0gobWFwKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDSykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbnVtX21hcHMgPSBvcGFyZzsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZm9yIChpID0gbnVtX21hcHM7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IFBFRUsoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW50ZXJzZWN0aW9uID0gX1B5RGljdFZpZXdfSW50ZXJzZWN0KHN1bSwgYXJnKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJzZWN0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICFQeU1hcHBpbmdfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUoaW50ZXJzZWN0aW9uKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpZHggPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKGZ1bmN0aW9uX2xvY2F0aW9uICsgbnVtX21hcHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICBfUHlTZXRfTmV4dEVudHJ5KGludGVyc2VjdGlvbiwgJmlkeCwgJmtleSwgJmhhc2gpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYykpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShzdW0sIGFyZykgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpdGhfY2FsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbl9sb2NhdGlvbiA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgbWFwcGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgUFVTSChzdW0pOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOworICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X01lcmdlRXgoc3VtLCBhcmcsIDIpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoMiArIG9wYXJnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsICYmIFB5VHVwbGVfQ2hlY2sodmFsKSAmJiBQeVR1cGxlX0dFVF9TSVpFKHZhbCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKHZhbCwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgZ290IG11bHRpcGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CkBAIC0yNzI5LDcgKzI3ODQsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgd2hpbGUgKG51bV9tYXBzLS0pCisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOwogICAgICAgICAgICAgUFVTSChzdW0pOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKQEAgLTI3NzgsNDUgKzI4MzMsMTMgQEAKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChJTVBPUlRfTkFNRSkgewotICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnJvbSwgKmxldmVsLCAqYXJncywgKnJlczsKLSAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgICAgICBmcm9tID0gUE9QKCk7Ci0gICAgICAgICAgICBsZXZlbCA9IFRPUCgpOwotICAgICAgICAgICAgaWYgKFB5TG9uZ19Bc0xvbmcobGV2ZWwpICE9IC0xIHx8IFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjayg1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUgOiBmLT5mX2xvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSA6IGYtPmZfbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20pOworICAgICAgICAgICAgUHlPYmplY3QgKmZyb21saXN0ID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbGV2ZWwgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgICAgICByZXMgPSBpbXBvcnRfbmFtZShmLCBuYW1lLCBmcm9tbGlzdCwgbGV2ZWwpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxldmVsKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tKTsKLSAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgU1RBQ0tBREooLTEpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7Ci0gICAgICAgICAgICByZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBhcmdzKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tbGlzdCk7CiAgICAgICAgICAgICBTRVRfVE9QKHJlcyk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI4MzUsOSArMjg1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgZHVyaW5nICdpbXBvcnQgKiciKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwogICAgICAgICAgICAgZXJyID0gaW1wb3J0X2FsbF9mcm9tKGxvY2FscywgZnJvbSk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CiAgICAgICAgICAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmLCAwKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9tKTsKICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkKQEAgLTI4NDksOSArMjg3MCw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwogICAgICAgICAgICAgcmVzID0gaW1wb3J0X2Zyb20oZnJvbSwgbmFtZSk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CiAgICAgICAgICAgICBQVVNIKHJlcyk7CiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI4NjMsNyArMjg4Miw3IEBACiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfRkFMU0UpOworICAgICAgICBQUkVESUNURUQoUE9QX0pVTVBfSUZfRkFMU0UpOwogICAgICAgICBUQVJHRVQoUE9QX0pVTVBfSUZfRkFMU0UpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25kID0gUE9QKCk7CiAgICAgICAgICAgICBpbnQgZXJyOwpAQCAtMjg4Nyw3ICsyOTA2LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoUE9QX0pVTVBfSUZfVFJVRSk7CisgICAgICAgIFBSRURJQ1RFRChQT1BfSlVNUF9JRl9UUlVFKTsKICAgICAgICAgVEFSR0VUKFBPUF9KVU1QX0lGX1RSVUUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25kID0gUE9QKCk7CiAgICAgICAgICAgICBpbnQgZXJyOwpAQCAtMjk2NCw3ICsyOTgzLDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoSlVNUF9BQlNPTFVURSk7CisgICAgICAgIFBSRURJQ1RFRChKVU1QX0FCU09MVVRFKTsKICAgICAgICAgVEFSR0VUKEpVTVBfQUJTT0xVVEUpIHsKICAgICAgICAgICAgIEpVTVBUTyhvcGFyZyk7CiAjaWYgRkFTVF9MT09QUwpAQCAtMjk5MCw2ICszMDA5LDcgQEAKICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIFBSRURJQ1QoRk9SX0lURVIpOworICAgICAgICAgICAgUFJFRElDVChDQUxMX0ZVTkNUSU9OKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzAxOCwxMCArMzAzOCwxMSBAQAogICAgICAgICAgICAgICAgIGlmIChpdGVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhGT1JfSVRFUik7CisgICAgICAgIFBSRURJQ1RFRChGT1JfSVRFUik7CiAgICAgICAgIFRBUkdFVChGT1JfSVRFUikgewogICAgICAgICAgICAgLyogYmVmb3JlOiBbaXRlcl07IGFmdGVyOiBbaXRlciwgaXRlcigpXSAqb3IqIFtdICovCiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlciA9IFRPUCgpOwpAQCAtMzA0Myw2ICszMDY0LDcgQEAKICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIEpVTVBCWShvcGFyZyk7CisgICAgICAgICAgICBQUkVESUNUKFBPUF9CTE9DSyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMwNTksMTAgKzMwODEsOSBAQAogICAgICAgICAgICAgZ290byBmYXN0X2Jsb2NrX2VuZDsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoU0VUVVBfTE9PUCwgX3NldHVwX2ZpbmFsbHkpCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoU0VUVVBfRVhDRVBULCBfc2V0dXBfZmluYWxseSkKLSAgICAgICAgVEFSR0VUKFNFVFVQX0ZJTkFMTFkpCi0gICAgICAgIF9zZXR1cF9maW5hbGx5OiB7CisgICAgICAgIFRBUkdFVChTRVRVUF9MT09QKQorICAgICAgICBUQVJHRVQoU0VUVVBfRVhDRVBUKQorICAgICAgICBUQVJHRVQoU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgLyogTk9URTogSWYgeW91IGFkZCBhbnkgbmV3IGJsb2NrLXNldHVwIG9wY29kZXMgdGhhdAogICAgICAgICAgICAgICAgYXJlIG5vdCB0cnkvZXhjZXB0L2ZpbmFsbHkgaGFuZGxlcnMsIHlvdSBtYXkgbmVlZAogICAgICAgICAgICAgICAgdG8gdXBkYXRlIHRoZSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoKSBmdW5jdGlvbi4KQEAgLTMwOTMsNiArMzExNCw3IEBACiAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIFBVU0gocmVzKTsKKyAgICAgICAgICAgIFBSRURJQ1QoR0VUX0FXQUlUQUJMRSk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMyNDEsMTc4ICszMjYzLDEzNSBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChDQUxMX0ZVTkNUSU9OKTsKICAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT04pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3AsICpyZXM7CiAgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOwogICAgICAgICAgICAgc3AgPSBzdGFja19wb2ludGVyOwotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsICZpbnRyMCwgJmludHIxKTsKLSNlbHNlCi0gICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcpOwotI2VuZGlmCisgICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsIE5VTEwpOwogICAgICAgICAgICAgc3RhY2tfcG9pbnRlciA9IHNwOwogICAgICAgICAgICAgUFVTSChyZXMpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKENBTExfRlVOQ1RJT05fVkFSLCBfY2FsbF9mdW5jdGlvbl92YXJfa3cpCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQ0FMTF9GVU5DVElPTl9LVywgX2NhbGxfZnVuY3Rpb25fdmFyX2t3KQotICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTl9WQVJfS1cpCi0gICAgICAgIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdzogewotICAgICAgICAgICAgaW50IG5hID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgaW50IG5rID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgZmxhZ3MgPSAob3Bjb2RlIC0gQ0FMTF9GVU5DVElPTikgJiAzOwotICAgICAgICAgICAgaW50IG4gPSBuYSArIDIgKiBuazsKLSAgICAgICAgICAgIFB5T2JqZWN0ICoqcGZ1bmMsICpmdW5jLCAqKnNwLCAqcmVzOworICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTl9LVykgeworICAgICAgICAgICAgUHlPYmplY3QgKipzcCwgKnJlcywgKm5hbWVzOworCisgICAgICAgICAgICBuYW1lcyA9IFBPUCgpOworICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChuYW1lcykgJiYgUHlUdXBsZV9HRVRfU0laRShuYW1lcykgPD0gb3BhcmcpOwogICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIENBTExfRkxBR19WQVIpCi0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX0tXKQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgIHBmdW5jID0gc3RhY2tfcG9pbnRlciAtIG4gLSAxOwotICAgICAgICAgICAgZnVuYyA9ICpwZnVuYzsKLQotICAgICAgICAgICAgaWYgKFB5TWV0aG9kX0NoZWNrKGZ1bmMpCi0gICAgICAgICAgICAgICAgJiYgUHlNZXRob2RfR0VUX1NFTEYoZnVuYykgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzZWxmID0gUHlNZXRob2RfR0VUX1NFTEYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICAgICAgICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X1NFVFJFRigqcGZ1bmMsIHNlbGYpOwotICAgICAgICAgICAgICAgIG5hKys7Ci0gICAgICAgICAgICAgICAgLyogbisrOyAqLwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwogICAgICAgICAgICAgc3AgPSBzdGFja19wb2ludGVyOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwotICAgICAgICAgICAgcmVzID0gZXh0X2RvX2NhbGwoZnVuYywgJnNwLCBmbGFncywgbmEsIG5rKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKKyAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgbmFtZXMpOwogICAgICAgICAgICAgc3RhY2tfcG9pbnRlciA9IHNwOwotICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotCi0gICAgICAgICAgICB3aGlsZSAoc3RhY2tfcG9pbnRlciA+IHBmdW5jKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm8gPSBQT1AoKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobyk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBQVVNIKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOworCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoTUFLRV9DTE9TVVJFLCBfbWFrZV9mdW5jdGlvbikKLSAgICAgICAgVEFSR0VUKE1BS0VfRlVOQ1RJT04pCi0gICAgICAgIF9tYWtlX2Z1bmN0aW9uOiB7Ci0gICAgICAgICAgICBpbnQgcG9zZGVmYXVsdHMgPSBvcGFyZyAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQga3dkZWZhdWx0cyA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgaW50IG51bV9hbm5vdGF0aW9ucyA9IChvcGFyZyA+PiAxNikgJiAweDdmZmY7CisgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX0VYKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZnVuYywgKmNhbGxhcmdzLCAqa3dhcmdzID0gTlVMTCwgKnJlc3VsdDsKKyAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDAxKSB7CisgICAgICAgICAgICAgICAga3dhcmdzID0gUE9QKCk7CisgICAgICAgICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgICAgICBpZiAoZCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoZCwga3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBQeURpY3RfVXBkYXRlIHJhaXNlcyBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGVycm9yIChwZXJjb2xhdGVkIGZyb20gYW4gYXR0ZW1wdAorICAgICAgICAgICAgICAgICAgICAgICAgICogdG8gZ2V0ICdrZXlzJyBhdHRyaWJ1dGUpIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGEgdHlwZSBlcnJvciBpZiBpdHMgc2Vjb25kIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBpcyBub3QgYSBtYXBwaW5nLgorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jID0gU0VDT05EKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3Qoa3dhcmdzKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWxsYXJncyA9IFBPUCgpOworICAgICAgICAgICAgZnVuYyA9IFRPUCgpOworICAgICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3QoY2FsbGFyZ3MpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5X1RZUEUoY2FsbGFyZ3MpLT50cF9pdGVyID09IE5VTEwgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICFQeVNlcXVlbmNlX0NoZWNrKGNhbGxhcmdzKSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhcmdzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKGNhbGxhcmdzLCBQeVNlcXVlbmNlX1R1cGxlKGNhbGxhcmdzKSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbGxhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KGNhbGxhcmdzKSk7CiAKLSAgICAgICAgICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IFBPUCgpOyAvKiBxdWFsbmFtZSAqLwotICAgICAgICAgICAgUHlPYmplY3QgKmNvZGUgPSBQT1AoKTsgLyogY29kZSBvYmplY3QgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoY29kZSwgZi0+Zl9nbG9iYWxzLCBxdWFsbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoY29kZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOworICAgICAgICAgICAgcmVzdWx0ID0gZG9fY2FsbF9jb3JlKGZ1bmMsIGNhbGxhcmdzLCBrd2FyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhcmdzKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoa3dhcmdzKTsKIAotICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKKyAgICAgICAgICAgIFNFVF9UT1AocmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gTUFLRV9DTE9TVVJFKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmNsb3N1cmUgPSBQT1AoKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRDbG9zdXJlKGZ1bmMsIGNsb3N1cmUpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcyBieXRlY29kZSBpcyBjb3JydXB0LiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjbG9zdXJlKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGNsb3N1cmUpOworICAgICAgICBUQVJHRVQoTUFLRV9GVU5DVElPTikgeworICAgICAgICAgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqY29kZW9iaiA9IFBPUCgpOworICAgICAgICAgICAgUHlGdW5jdGlvbk9iamVjdCAqZnVuYyA9IChQeUZ1bmN0aW9uT2JqZWN0ICopCisgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoY29kZW9iaiwgZi0+Zl9nbG9iYWxzLCBxdWFsbmFtZSk7CisKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjb2Rlb2JqKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CisgICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG51bV9hbm5vdGF0aW9ucyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hbWVfaXg7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzID0gUE9QKCk7IC8qIG5hbWVzIG9mIGFyZ3Mgd2l0aCBhbm5vdGF0aW9ucyAqLwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphbm5zID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmIChhbm5zID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYW1lX2l4ID0gUHlUdXBsZV9TaXplKG5hbWVzKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQobnVtX2Fubm90YXRpb25zID09IG5hbWVfaXgrMSk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG5hbWVfaXggPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCAqdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGludCBlcnI7Ci0gICAgICAgICAgICAgICAgICAgIC0tbmFtZV9peDsKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0obmFtZXMsIG5hbWVfaXgpOwotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFBPUCgpOwotICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShhbm5zLCBuYW1lLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKLQotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldEFubm90YXRpb25zKGZ1bmMsIGFubnMpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldEFubm90YXRpb25zIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDA4KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMgLT5mdW5jX2Nsb3N1cmUgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2Fubm90YXRpb25zID0gUE9QKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDAyKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19rd2RlZmF1bHRzID0gUE9QKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDAxKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfZGVmYXVsdHMgPSBQT1AoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLyogWFhYIE1heWJlIHRoaXMgc2hvdWxkIGJlIGEgc2VwYXJhdGUgb3Bjb2RlPyAqLwotICAgICAgICAgICAgaWYgKGt3ZGVmYXVsdHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZnMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlZnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHdoaWxlICgtLWt3ZGVmYXVsdHMgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdiA9IFBPUCgpOyAvKiBkZWZhdWx0IHZhbHVlICovCi0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQT1AoKTsgLyoga3cgb25seSBhcmcgbmFtZSAqLwotICAgICAgICAgICAgICAgICAgICBpbnQgZXJyID0gUHlEaWN0X1NldEl0ZW0oZGVmcywga2V5LCB2KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldEt3RGVmYXVsdHMoZnVuYywgZGVmcykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHBvc2RlZmF1bHRzID4gMCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZzID0gUHlUdXBsZV9OZXcocG9zZGVmYXVsdHMpOwotICAgICAgICAgICAgICAgIGlmIChkZWZzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3aGlsZSAoLS1wb3NkZWZhdWx0cyA+PSAwKQotICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGRlZnMsIHBvc2RlZmF1bHRzLCBQT1AoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMoZnVuYywgZGVmcykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0RGVmYXVsdHMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFBVU0goZnVuYyk7CisgICAgICAgICAgICBQVVNIKChQeU9iamVjdCAqKWZ1bmMpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zNDM0LDkgKzM0MTMsNjggQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoRk9STUFUX1ZBTFVFKSB7CisgICAgICAgICAgICAvKiBIYW5kbGVzIGYtc3RyaW5nIHZhbHVlIGZvcm1hdHRpbmcuICovCisgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICAgICAgUHlPYmplY3QgKmZtdF9zcGVjOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlOworICAgICAgICAgICAgUHlPYmplY3QgKigqY29udl9mbikoUHlPYmplY3QgKik7CisgICAgICAgICAgICBpbnQgd2hpY2hfY29udmVyc2lvbiA9IG9wYXJnICYgRlZDX01BU0s7CisgICAgICAgICAgICBpbnQgaGF2ZV9mbXRfc3BlYyA9IChvcGFyZyAmIEZWU19NQVNLKSA9PSBGVlNfSEFWRV9TUEVDOworCisgICAgICAgICAgICBmbXRfc3BlYyA9IGhhdmVfZm10X3NwZWMgPyBQT1AoKSA6IE5VTEw7CisgICAgICAgICAgICB2YWx1ZSA9IFBPUCgpOworCisgICAgICAgICAgICAvKiBTZWUgaWYgYW55IGNvbnZlcnNpb24gaXMgc3BlY2lmaWVkLiAqLworICAgICAgICAgICAgc3dpdGNoICh3aGljaF9jb252ZXJzaW9uKSB7CisgICAgICAgICAgICBjYXNlIEZWQ19TVFI6ICAgY29udl9mbiA9IFB5T2JqZWN0X1N0cjsgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRlZDX1JFUFI6ICBjb252X2ZuID0gUHlPYmplY3RfUmVwcjsgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGVkNfQVNDSUk6IGNvbnZfZm4gPSBQeU9iamVjdF9BU0NJSTsgYnJlYWs7CisKKyAgICAgICAgICAgIC8qIE11c3QgYmUgMCAobWVhbmluZyBubyBjb252ZXJzaW9uKSwgc2luY2Ugb25seSBmb3VyCisgICAgICAgICAgICAgICB2YWx1ZXMgYXJlIGFsbG93ZWQgYnkgKG9wYXJnICYgRlZDX01BU0spLiAqLworICAgICAgICAgICAgZGVmYXVsdDogICAgICAgIGNvbnZfZm4gPSBOVUxMOyAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHRoZXJlJ3MgYSBjb252ZXJzaW9uIGZ1bmN0aW9uLCBjYWxsIGl0IGFuZCByZXBsYWNlCisgICAgICAgICAgICAgICB2YWx1ZSB3aXRoIHRoYXQgcmVzdWx0LiBPdGhlcndpc2UsIGp1c3QgdXNlIHZhbHVlLAorICAgICAgICAgICAgICAgd2l0aG91dCBjb252ZXJzaW9uLiAqLworICAgICAgICAgICAgaWYgKGNvbnZfZm4gIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnZfZm4odmFsdWUpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZm10X3NwZWMpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHJlc3VsdDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgdmFsdWUgaXMgYSB1bmljb2RlIG9iamVjdCwgYW5kIHRoZXJlJ3Mgbm8gZm10X3NwZWMsCisgICAgICAgICAgICAgICB0aGVuIHdlIGtub3cgdGhlIHJlc3VsdCBvZiBmb3JtYXQodmFsdWUpIGlzIHZhbHVlCisgICAgICAgICAgICAgICBpdHNlbGYuIEluIHRoYXQgY2FzZSwgc2tpcCBjYWxsaW5nIGZvcm1hdCgpLiBJIHBsYW4gdG8KKyAgICAgICAgICAgICAgIG1vdmUgdGhpcyBvcHRpbWl6YXRpb24gaW4gdG8gUHlPYmplY3RfRm9ybWF0KCkKKyAgICAgICAgICAgICAgIGl0c2VsZi4gKi8KKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2YWx1ZSkgJiYgZm10X3NwZWMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIERvIG5vdGhpbmcsIGp1c3QgdHJhbnNmZXIgb3duZXJzaGlwIHRvIHJlc3VsdC4gKi8KKyAgICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogQWN0dWFsbHkgY2FsbCBmb3JtYXQoKS4gKi8KKyAgICAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Gb3JtYXQodmFsdWUsIGZtdF9zcGVjKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZm10X3NwZWMpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgUFVTSChyZXN1bHQpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChFWFRFTkRFRF9BUkcpIHsKLSAgICAgICAgICAgIG9wY29kZSA9IE5FWFRPUCgpOwotICAgICAgICAgICAgb3BhcmcgPSBvcGFyZzw8MTYgfCBORVhUQVJHKCk7CisgICAgICAgICAgICBpbnQgb2xkb3BhcmcgPSBvcGFyZzsKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOworICAgICAgICAgICAgb3BhcmcgfD0gb2xkb3BhcmcgPDwgODsKICAgICAgICAgICAgIGdvdG8gZGlzcGF0Y2hfb3Bjb2RlOwogICAgICAgICB9CiAKQEAgLTM0NjMsNyArMzUwMSw2IEBACiAgICAgICAgIGFzc2VydCgwKTsKIAogZXJyb3I6Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKIAogICAgICAgICBhc3NlcnQod2h5ID09IFdIWV9OT1QpOwogICAgICAgICB3aHkgPSBXSFlfRVhDRVBUSU9OOwpAQCAtMzU2Nyw3ICszNjA0LDYgQEAKIAogICAgICAgICBpZiAod2h5ICE9IFdIWV9OT1QpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgUkVBRF9USU1FU1RBTVAobG9vcDEpOwogCiAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAKQEAgLTM1ODYsNyArMzYyMiw3IEBACiAgICAgYXNzZXJ0KChyZXR2YWwgIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAKIGZhc3RfeWllbGQ6Ci0gICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUgfCBDT19BU1lOQ19HRU5FUkFUT1IpKSB7CiAKICAgICAgICAgLyogVGhlIHB1cnBvc2Ugb2YgdGhpcyBibG9jayBpcyB0byBwdXQgYXNpZGUgdGhlIGdlbmVyYXRvcidzIGV4Y2VwdGlvbgogICAgICAgICAgICBzdGF0ZSBhbmQgcmVzdG9yZSB0aGF0IG9mIHRoZSBjYWxsaW5nIGZyYW1lLiBJZiB0aGUgY3VycmVudApAQCAtMzU5Nyw5ICszNjMzLDExIEBACiAgICAgICAgICAgIHN0YXRlIGNhbWUgaW50byBleGlzdGVuY2UgaW4gdGhpcyBmcmFtZS4gKEFuIHVuY2F1Z2h0IGV4Y2VwdGlvbgogICAgICAgICAgICB3b3VsZCBoYXZlIHdoeSA9PSBXSFlfRVhDRVBUSU9OLCBhbmQgd2Ugd291bGRuJ3QgYmUgaGVyZSkuICovCiAgICAgICAgIGludCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZi0+Zl9pYmxvY2s7IGkrKykKLSAgICAgICAgICAgIGlmIChmLT5mX2Jsb2Nrc3RhY2tbaV0uYl90eXBlID09IEVYQ0VQVF9IQU5ETEVSKQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZi0+Zl9pYmxvY2s7IGkrKykgeworICAgICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgPT0gRVhDRVBUX0hBTkRMRVIpIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAoaSA9PSBmLT5mX2libG9jaykKICAgICAgICAgICAgIC8qIFdlIGRpZCBub3QgY3JlYXRlIHRoaXMgZXhjZXB0aW9uLiAqLwogICAgICAgICAgICAgcmVzdG9yZV9hbmRfY2xlYXJfZXhjX3N0YXRlKHRzdGF0ZSwgZik7CkBAIC0zNjQwLDYgKzM2NzgsOCBAQAogCiAgICAgLyogcG9wIGZyYW1lICovCiBleGl0X2V2YWxfZnJhbWU6CisgICAgaWYgKFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTl9FTkFCTEVEKCkpCisgICAgICAgIGR0cmFjZV9mdW5jdGlvbl9yZXR1cm4oZik7CiAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAgICAgZi0+Zl9leGVjdXRpbmcgPSAwOwogICAgIHRzdGF0ZS0+ZnJhbWUgPSBmLT5mX2JhY2s7CkBAIC0zNzEwLDEyICszNzUwLDEyIEBACiB9CiAKIHN0YXRpYyB2b2lkCi1taXNzaW5nX2FyZ3VtZW50cyhQeUNvZGVPYmplY3QgKmNvLCBpbnQgbWlzc2luZywgaW50IGRlZmNvdW50LAorbWlzc2luZ19hcmd1bWVudHMoUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBtaXNzaW5nLCBQeV9zc2l6ZV90IGRlZmNvdW50LAogICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzKQogewotICAgIGludCBpLCBqID0gMDsKLSAgICBpbnQgc3RhcnQsIGVuZDsKLSAgICBpbnQgcG9zaXRpb25hbCA9IGRlZmNvdW50ICE9IC0xOworICAgIFB5X3NzaXplX3QgaSwgaiA9IDA7CisgICAgUHlfc3NpemVfdCBzdGFydCwgZW5kOworICAgIGludCBwb3NpdGlvbmFsID0gKGRlZmNvdW50ICE9IC0xKTsKICAgICBjb25zdCBjaGFyICpraW5kID0gcG9zaXRpb25hbCA/ICJwb3NpdGlvbmFsIiA6ICJrZXl3b3JkLW9ubHkiOwogICAgIFB5T2JqZWN0ICptaXNzaW5nX25hbWVzOwogCkBAIC0zNzQ4LDMzICszNzg4LDM5IEBACiB9CiAKIHN0YXRpYyB2b2lkCi10b29fbWFueV9wb3NpdGlvbmFsKFB5Q29kZU9iamVjdCAqY28sIGludCBnaXZlbiwgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCit0b29fbWFueV9wb3NpdGlvbmFsKFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgZ2l2ZW4sIFB5X3NzaXplX3QgZGVmY291bnQsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKIHsKICAgICBpbnQgcGx1cmFsOwotICAgIGludCBrd29ubHlfZ2l2ZW4gPSAwOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3Qga3dvbmx5X2dpdmVuID0gMDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlPYmplY3QgKnNpZywgKmt3b25seV9zaWc7CisgICAgUHlfc3NpemVfdCBjb19hcmdjb3VudCA9IGNvLT5jb19hcmdjb3VudDsKIAogICAgIGFzc2VydCgoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgPT0gMCk7CiAgICAgLyogQ291bnQgbWlzc2luZyBrZXl3b3JkLW9ubHkgYXJncy4gKi8KLSAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7IGkrKykKLSAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCisgICAgZm9yIChpID0gY29fYXJnY291bnQ7IGkgPCBjb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4rKzsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAoZGVmY291bnQpIHsKLSAgICAgICAgaW50IGF0bGVhc3QgPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBhdGxlYXN0ID0gY29fYXJnY291bnQgLSBkZWZjb3VudDsKICAgICAgICAgcGx1cmFsID0gMTsKLSAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImZyb20gJWQgdG8gJWQiLCBhdGxlYXN0LCBjby0+Y29fYXJnY291bnQpOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZnJvbSAlemQgdG8gJXpkIiwgYXRsZWFzdCwgY29fYXJnY291bnQpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcGx1cmFsID0gY28tPmNvX2FyZ2NvdW50ICE9IDE7Ci0gICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlZCIsIGNvLT5jb19hcmdjb3VudCk7CisgICAgICAgIHBsdXJhbCA9IChjb19hcmdjb3VudCAhPSAxKTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiV6ZCIsIGNvX2FyZ2NvdW50KTsKICAgICB9CiAgICAgaWYgKHNpZyA9PSBOVUxMKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGt3b25seV9naXZlbikgewotICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICVkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSI7Ci0gICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChmb3JtYXQsIGdpdmVuICE9IDEgPyAicyIgOiAiIiwga3dvbmx5X2dpdmVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiAhPSAxID8gInMiIDogIiIpOworICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAiIHBvc2l0aW9uYWwgYXJndW1lbnQlcyAoYW5kICV6ZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiOworICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dvbmx5X2dpdmVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dvbmx5X2dpdmVuICE9IDEgPyAicyIgOiAiIik7CiAgICAgICAgIGlmIChrd29ubHlfc2lnID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzaWcpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzc4Niw3ICszODMyLDcgQEAKICAgICAgICAgYXNzZXJ0KGt3b25seV9zaWcgIT0gTlVMTCk7CiAgICAgfQogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICIlVSgpIHRha2VzICVVIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJWQlVSAlcyBnaXZlbiIsCisgICAgICAgICAgICAgICAgICIlVSgpIHRha2VzICVVIHBvc2l0aW9uYWwgYXJndW1lbnQlcyBidXQgJXpkJVUgJXMgZ2l2ZW4iLAogICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKICAgICAgICAgICAgICAgICAgc2lnLAogICAgICAgICAgICAgICAgICBwbHVyYWwgPyAicyIgOiAiIiwKQEAgLTM4MDMsMjAgKzM4NDksMjIgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShQeU9iamVjdCAqX2NvLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKLSAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBpbnQgYXJnY291bnQsIFB5T2JqZWN0ICoqa3dzLCBpbnQga3djb3VudCwKLSAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlLAorICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgYXJnY291bnQsCisgICAgICAgICAgIFB5T2JqZWN0ICoqa3duYW1lcywgUHlPYmplY3QgKiprd2FyZ3MsCisgICAgICAgICAgIFB5X3NzaXplX3Qga3djb3VudCwgaW50IGt3c3RlcCwKKyAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBQeV9zc2l6ZV90IGRlZmNvdW50LAorICAgICAgICAgICBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSwKICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeUNvZGVPYmplY3QqIGNvID0gKFB5Q29kZU9iamVjdCopX2NvOwogICAgIFB5RnJhbWVPYmplY3QgKmY7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzLCAqKmZyZWV2YXJzOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIFB5T2JqZWN0ICp4LCAqdTsKLSAgICBpbnQgdG90YWxfYXJncyA9IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsKLSAgICBpbnQgaTsKLSAgICBpbnQgbiA9IGFyZ2NvdW50OwotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOworICAgIGNvbnN0IFB5X3NzaXplX3QgdG90YWxfYXJncyA9IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsKKyAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKmt3ZGljdDsKIAogICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLApAQCAtMzgyNCwzNiArMzg3Miw1MCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICAvKiBDcmVhdGUgdGhlIGZyYW1lICovCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOwotICAgIGFzc2VydChnbG9iYWxzICE9IE5VTEwpOwogICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBsb2NhbHMpOwotICAgIGlmIChmID09IE5VTEwpCisgICAgaWYgKGYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLQorICAgIH0KICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwogICAgIGZyZWV2YXJzID0gZi0+Zl9sb2NhbHNwbHVzICsgY28tPmNvX25sb2NhbHM7CiAKLSAgICAvKiBQYXJzZSBhcmd1bWVudHMuICovCisgICAgLyogQ3JlYXRlIGEgZGljdGlvbmFyeSBmb3Iga2V5d29yZCBwYXJhbWV0ZXJzICgqKmt3YWdzKSAqLwogICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykgewogICAgICAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7CiAgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgaSA9IHRvdGFsX2FyZ3M7Ci0gICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKQorICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgewogICAgICAgICAgICAgaSsrOworICAgICAgICB9CiAgICAgICAgIFNFVExPQ0FMKGksIGt3ZGljdCk7CiAgICAgfQotICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCkKKyAgICBlbHNlIHsKKyAgICAgICAga3dkaWN0ID0gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDb3B5IHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gbG9jYWwgdmFyaWFibGVzICovCisgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KSB7CiAgICAgICAgIG4gPSBjby0+Y29fYXJnY291bnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBuID0gYXJnY291bnQ7CisgICAgfQogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgeCA9IGFyZ3NbaV07CiAgICAgICAgIFB5X0lOQ1JFRih4KTsKICAgICAgICAgU0VUTE9DQUwoaSwgeCk7CiAgICAgfQorCisgICAgLyogUGFjayBvdGhlciBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIHRoZSAqYXJncyBhcmd1bWVudCAqLwogICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7CiAgICAgICAgIHUgPSBQeVR1cGxlX05ldyhhcmdjb3VudCAtIG4pOwotICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICBpZiAodSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KICAgICAgICAgU0VUTE9DQUwodG90YWxfYXJncywgdSk7CiAgICAgICAgIGZvciAoaSA9IG47IGkgPCBhcmdjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICB4ID0gYXJnc1tpXTsKQEAgLTM4NjEsNjkgKzM5MjMsODIgQEAKICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odSwgaS1uLCB4KTsKICAgICAgICAgfQogICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSsrKSB7CisKKyAgICAvKiBIYW5kbGUga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGFzIHR3byBzdHJpZGVkIGFycmF5cyAqLworICAgIGt3Y291bnQgKj0ga3dzdGVwOworICAgIGZvciAoaSA9IDA7IGkgPCBrd2NvdW50OyBpICs9IGt3c3RlcCkgewogICAgICAgICBQeU9iamVjdCAqKmNvX3Zhcm5hbWVzOwotICAgICAgICBQeU9iamVjdCAqa2V5d29yZCA9IGt3c1syKmldOwotICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd3NbMippICsgMV07Ci0gICAgICAgIGludCBqOworICAgICAgICBQeU9iamVjdCAqa2V5d29yZCA9IGt3bmFtZXNbaV07CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3YXJnc1tpXTsKKyAgICAgICAgUHlfc3NpemVfdCBqOworCiAgICAgICAgIGlmIChrZXl3b3JkID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhrZXl3b3JkKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQorCiAgICAgICAgIC8qIFNwZWVkIGhhY2s6IGRvIHJhdyBwb2ludGVyIGNvbXBhcmVzLiBBcyBuYW1lcyBhcmUKICAgICAgICAgICAgbm9ybWFsbHkgaW50ZXJuZWQgdGhpcyBzaG91bGQgYWxtb3N0IGFsd2F5cyBoaXQuICovCiAgICAgICAgIGNvX3Zhcm5hbWVzID0gKChQeVR1cGxlT2JqZWN0ICopKGNvLT5jb192YXJuYW1lcykpLT5vYl9pdGVtOwogICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKLSAgICAgICAgICAgIGlmIChubSA9PSBrZXl3b3JkKQorICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBjb192YXJuYW1lc1tqXTsKKyAgICAgICAgICAgIGlmIChuYW1lID09IGtleXdvcmQpIHsKICAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOworICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgLyogU2xvdyBmYWxsYmFjaywganVzdCBpbiBjYXNlICovCiAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgaW50IGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKLSAgICAgICAgICAgICAgICBrZXl3b3JkLCBubSwgUHlfRVEpOwotICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaW50IGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgga2V5d29yZCwgbmFtZSwgUHlfRVEpOworICAgICAgICAgICAgaWYgKGNtcCA+IDApIHsKICAgICAgICAgICAgICAgICBnb3RvIGt3X2ZvdW5kOwotICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApIHsKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoaiA+PSB0b3RhbF9hcmdzICYmIGt3ZGljdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCAnJVMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICclUyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLCBrZXl3b3JkKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQorCiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleXdvcmQsIHZhbHVlKSA9PSAtMSkgewogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICBrd19mb3VuZDoKICAgICAgICAgaWYgKEdFVExPQ0FMKGopICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBhcmd1bWVudCAnJVMnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwga2V5d29yZCk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgU0VUTE9DQUwoaiwgdmFsdWUpOwogICAgIH0KKworICAgIC8qIENoZWNrIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKi8KICAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQgJiYgIShjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSkgewogICAgICAgICB0b29fbWFueV9wb3NpdGlvbmFsKGNvLCBhcmdjb3VudCwgZGVmY291bnQsIGZhc3Rsb2NhbHMpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQorCisgICAgLyogQWRkIG1pc3NpbmcgcG9zaXRpb25hbCBhcmd1bWVudHMgKGNvcHkgZGVmYXVsdCB2YWx1ZXMgZnJvbSBkZWZzKSAqLwogICAgIGlmIChhcmdjb3VudCA8IGNvLT5jb19hcmdjb3VudCkgewotICAgICAgICBpbnQgbSA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OwotICAgICAgICBpbnQgbWlzc2luZyA9IDA7Ci0gICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKQotICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpCisgICAgICAgIFB5X3NzaXplX3QgbSA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBQeV9zc2l6ZV90IG1pc3NpbmcgPSAwOworICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykgeworICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBtaXNzaW5nKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKG1pc3NpbmcpIHsKICAgICAgICAgICAgIG1pc3NpbmdfYXJndW1lbnRzKGNvLCBtaXNzaW5nLCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CkBAIC0zOTQwLDggKzQwMTUsMTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKworICAgIC8qIEFkZCBtaXNzaW5nIGtleXdvcmQgYXJndW1lbnRzIChjb3B5IGRlZmF1bHQgdmFsdWVzIGZyb20ga3dkZWZzKSAqLwogICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPiAwKSB7Ci0gICAgICAgIGludCBtaXNzaW5nID0gMDsKKyAgICAgICAgUHlfc3NpemVfdCBtaXNzaW5nID0gMDsKICAgICAgICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgdG90YWxfYXJnczsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZTsKICAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQpAQCAtMzk4MiwxMyArNDA1OSwxNiBAQAogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBTRVRMT0NBTChjby0+Y29fbmxvY2FscyArIGksIGMpOwogICAgIH0KKworICAgIC8qIENvcHkgY2xvc3VyZSB2YXJpYWJsZXMgdG8gZnJlZSB2YXJpYWJsZXMgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fZnJlZXZhcnMpOyArK2kpIHsKICAgICAgICAgUHlPYmplY3QgKm8gPSBQeVR1cGxlX0dFVF9JVEVNKGNsb3N1cmUsIGkpOwogICAgICAgICBQeV9JTkNSRUYobyk7CiAgICAgICAgIGZyZWV2YXJzW1B5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGldID0gbzsKICAgICB9CiAKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSkpIHsKKyAgICAvKiBIYW5kbGUgZ2VuZXJhdG9yL2Nvcm91dGluZS9hc3luY2hyb25vdXMgZ2VuZXJhdG9yICovCisgICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUgfCBDT19BU1lOQ19HRU5FUkFUT1IpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpnZW47CiAgICAgICAgIFB5T2JqZWN0ICpjb3JvX3dyYXBwZXIgPSB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOwogICAgICAgICBpbnQgaXNfY29ybyA9IGNvLT5jb19mbGFncyAmIENPX0NPUk9VVElORTsKQEAgLTQwMTMsNiArNDA5Myw4IEBACiAgICAgICAgICAqIGFuZCByZXR1cm4gdGhhdCBhcyB0aGUgdmFsdWUuICovCiAgICAgICAgIGlmIChpc19jb3JvKSB7CiAgICAgICAgICAgICBnZW4gPSBQeUNvcm9fTmV3KGYsIG5hbWUsIHF1YWxuYW1lKTsKKyAgICAgICAgfSBlbHNlIGlmIChjby0+Y29fZmxhZ3MgJiBDT19BU1lOQ19HRU5FUkFUT1IpIHsKKyAgICAgICAgICAgIGdlbiA9IFB5QXN5bmNHZW5fTmV3KGYsIG5hbWUsIHF1YWxuYW1lKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGdlbiA9IFB5R2VuX05ld1dpdGhRdWFsTmFtZShmLCBuYW1lLCBxdWFsbmFtZSk7CiAgICAgICAgIH0KQEAgLTQwNTIsOCArNDEzNCwxMCBAQAogICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUpCiB7CiAgICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZShfY28sIGdsb2JhbHMsIGxvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFyZ2NvdW50LCBrd3MsIGt3Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZzLCBkZWZjb3VudCwga3dkZWZzLCBjbG9zdXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgYXJnY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd3MsIGt3cyArIDEsIGt3Y291bnQsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZzLCBkZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3ZGVmcywgY2xvc3VyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogfQogCkBAIC00MzEyLDcgKzQzOTYsNyBAQAogCiAjaWZkZWYgTExUUkFDRQogc3RhdGljIGludAotcHJ0cmFjZShQeU9iamVjdCAqdiwgY2hhciAqc3RyKQorcHJ0cmFjZShQeU9iamVjdCAqdiwgY29uc3QgY2hhciAqc3RyKQogewogICAgIHByaW50ZigiJXMgIiwgc3RyKTsKICAgICBpZiAoUHlPYmplY3RfUHJpbnQodiwgc3Rkb3V0LCAwKSAhPSAwKQpAQCAtNDQ4OSw2ICs0NTczLDM4IEBACiAgICAgcmV0dXJuIHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXI7CiB9CiAKK3ZvaWQKK19QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoUHlPYmplY3QgKmZpcnN0aXRlcikKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgUHlfWElOQ1JFRihmaXJzdGl0ZXIpOworICAgIFB5X1hTRVRSRUYodHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyLCBmaXJzdGl0ZXIpOworfQorCitQeU9iamVjdCAqCitfUHlFdmFsX0dldEFzeW5jR2VuRmlyc3RpdGVyKHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyOworfQorCit2b2lkCitfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKFB5T2JqZWN0ICpmaW5hbGl6ZXIpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIFB5X1hJTkNSRUYoZmluYWxpemVyKTsKKyAgICBQeV9YU0VUUkVGKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplciwgZmluYWxpemVyKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9HZXRBc3luY0dlbkZpbmFsaXplcih2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcjsKK30KKwogUHlPYmplY3QgKgogUHlFdmFsX0dldEJ1aWx0aW5zKHZvaWQpCiB7CkBAIC00NTYxLDEwICs0Njc3LDggQEAKICAgIFRoZSBhcmcgbXVzdCBiZSBhIHR1cGxlIG9yIE5VTEwuICBUaGUga3cgbXVzdCBiZSBhIGRpY3Qgb3IgTlVMTC4gKi8KIAogUHlPYmplY3QgKgotUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmcsIFB5T2JqZWN0ICprdykKK1B5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCiAjaWZkZWYgUHlfREVCVUcKICAgICAvKiBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcygpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbgogICAgICAgIHNldC4gSXQgcmFpc2VzIGEgbmV3IGV4Y2VwdGlvbiBpZiBwYXJhbWV0ZXJzIGFyZSBpbnZhbGlkIG9yIGlmCkBAIC00NTcyLDMwICs0Njg2LDIzIEBACiAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKICNlbmRpZgogCi0gICAgaWYgKGFyZyA9PSBOVUxMKSB7Ci0gICAgICAgIGFyZyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJnID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIE5VTEwsIDAsIGt3YXJncyk7CiAgICAgfQotICAgIGVsc2UgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZykpIHsKKworICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGxpc3QgbXVzdCBiZSBhIHR1cGxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihhcmcpOwogCi0gICAgaWYgKGt3ICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrdykpIHsKKyAgICBpZiAoa3dhcmdzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrd2FyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBsaXN0IG11c3QgYmUgYSBkaWN0aW9uYXJ5Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZywga3cpOwotICAgIFB5X0RFQ1JFRihhcmcpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBrd2FyZ3MpOwogfQogCiBjb25zdCBjaGFyICoKQEAgLTQ2MjQsMjEgKzQ3MzEsNiBAQAogICAgICAgICByZXR1cm4gIiBvYmplY3QiOwogfQogCi1zdGF0aWMgdm9pZAotZXJyX2FyZ3MoUHlPYmplY3QgKmZ1bmMsIGludCBmbGFncywgaW50IG5hcmdzKQotewotICAgIGlmIChmbGFncyAmIE1FVEhfTk9BUkdTKQotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIG5vIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKS0+bV9tbC0+bWxfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIG5hcmdzKTsKLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYyktPm1fbWwtPm1sX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICBuYXJncyk7Ci19Ci0KICNkZWZpbmUgQ19UUkFDRSh4LCBjYWxsKSBcCiBpZiAodHN0YXRlLT51c2VfdHJhY2luZyAmJiB0c3RhdGUtPmNfcHJvZmlsZWZ1bmMpIHsgXAogICAgIGlmIChjYWxsX3RyYWNlKHRzdGF0ZS0+Y19wcm9maWxlZnVuYywgdHN0YXRlLT5jX3Byb2ZpbGVvYmosIFwKQEAgLTQ2NzEsNjAgKzQ3NjMsMjUgQEAKICAgICB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX2Z1bmN0aW9uKFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgb3BhcmcKLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICAgICAgICAgICwgdWludDY0KiBwaW50cjAsIHVpbnQ2NCogcGludHIxCi0jZW5kaWYKLSAgICAgICAgICAgICAgICApCitjYWxsX2Z1bmN0aW9uKFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBQeV9zc2l6ZV90IG9wYXJnLCBQeU9iamVjdCAqa3duYW1lcykKIHsKLSAgICBpbnQgbmEgPSBvcGFyZyAmIDB4ZmY7Ci0gICAgaW50IG5rID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgaW50IG4gPSBuYSArIDIgKiBuazsKLSAgICBQeU9iamVjdCAqKnBmdW5jID0gKCpwcF9zdGFjaykgLSBuIC0gMTsKKyAgICBQeU9iamVjdCAqKnBmdW5jID0gKCpwcF9zdGFjaykgLSBvcGFyZyAtIDE7CiAgICAgUHlPYmplY3QgKmZ1bmMgPSAqcGZ1bmM7CiAgICAgUHlPYmplY3QgKngsICp3OworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IChrd25hbWVzID09IE5VTEwpID8gMCA6IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgUHlfc3NpemVfdCBuYXJncyA9IG9wYXJnIC0gbmt3YXJnczsKKyAgICBQeU9iamVjdCAqKnN0YWNrOwogCiAgICAgLyogQWx3YXlzIGRpc3BhdGNoIFB5Q0Z1bmN0aW9uIGZpcnN0LCBiZWNhdXNlIHRoZXNlIGFyZQogICAgICAgIHByZXN1bWVkIHRvIGJlIHRoZSBtb3N0IGZyZXF1ZW50IGNhbGxhYmxlIG9iamVjdC4KICAgICAqLwotICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSAmJiBuayA9PSAwKSB7Ci0gICAgICAgIGludCBmbGFncyA9IFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKTsKKyAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKIAogICAgICAgICBQQ0FMTChQQ0FMTF9DRlVOQ1RJT04pOwotICAgICAgICBpZiAoZmxhZ3MgJiAoTUVUSF9OT0FSR1MgfCBNRVRIX08pKSB7Ci0gICAgICAgICAgICBQeUNGdW5jdGlvbiBtZXRoID0gUHlDRnVuY3Rpb25fR0VUX0ZVTkNUSU9OKGZ1bmMpOwotICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKTsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIE1FVEhfTk9BUkdTICYmIG5hID09IDApIHsKLSAgICAgICAgICAgICAgICBDX1RSQUNFKHgsICgqbWV0aCkoc2VsZixOVUxMKSk7CiAKLSAgICAgICAgICAgICAgICB4ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgeCwgTlVMTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIE1FVEhfTyAmJiBuYSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgICAgICAgICBDX1RSQUNFKHgsICgqbWV0aCkoc2VsZixhcmcpKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnKTsKLQotICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGVycl9hcmdzKGZ1bmMsIGZsYWdzLCBuYSk7Ci0gICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqY2FsbGFyZ3M7Ci0gICAgICAgICAgICBjYWxsYXJncyA9IGxvYWRfYXJncyhwcF9zdGFjaywgbmEpOwotICAgICAgICAgICAgaWYgKGNhbGxhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIwKTsKLSAgICAgICAgICAgICAgICBDX1RSQUNFKHgsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYyxjYWxsYXJncyxOVUxMKSk7Ci0gICAgICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMSk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBzdGFjayA9ICgqcHBfc3RhY2spIC0gbmFyZ3MgLSBua3dhcmdzOworICAgICAgICBDX1RSQUNFKHgsIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcykpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5TWV0aG9kX0NoZWNrKGZ1bmMpICYmIFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpICE9IE5VTEwpIHsKQEAgLTQ3MzYsMjEgKzQ3OTMsMjYgQEAKICAgICAgICAgICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CiAgICAgICAgICAgICBQeV9TRVRSRUYoKnBmdW5jLCBzZWxmKTsKLSAgICAgICAgICAgIG5hKys7Ci0gICAgICAgICAgICBuKys7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbmFyZ3MrKzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMCk7Ci0gICAgICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICAgICAgeCA9IGZhc3RfZnVuY3Rpb24oZnVuYywgcHBfc3RhY2ssIG4sIG5hLCBuayk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHggPSBkb19jYWxsKGZ1bmMsIHBwX3N0YWNrLCBuYSwgbmspOwotICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICB9CiAKLSAgICAgICAgYXNzZXJ0KCh4ICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOworICAgICAgICBzdGFjayA9ICgqcHBfc3RhY2spIC0gbmFyZ3MgLSBua3dhcmdzOworCisgICAgICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgICAgICB4ID0gZmFzdF9mdW5jdGlvbihmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgeCA9IF9QeU9iamVjdF9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgfQogCisgICAgYXNzZXJ0KCh4ICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOworCiAgICAgLyogQ2xlYXIgdGhlIHN0YWNrIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBBbHNvIHJlbW92ZXMKICAgICAgICB0aGUgYXJndW1lbnRzIGluIGNhc2UgdGhleSB3ZXJlbid0IGNvbnN1bWVkIGFscmVhZHkKICAgICAgICAoZmFzdF9mdW5jdGlvbigpIGFuZCBlcnJfYXJncygpIGxlYXZlIHRoZW0gb24gdGhlIHN0YWNrKS4KQEAgLTQ3NjEsNyArNDgyMyw2IEBACiAgICAgICAgIFBDQUxMKFBDQUxMX1BPUCk7CiAgICAgfQogCi0gICAgYXNzZXJ0KCh4ICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOwogICAgIHJldHVybiB4OwogfQogCkBAIC00Nzc0LDE1OSArNDgzNSwxOTcgQEAKICAgIGRvbmUgYmVmb3JlIGV2YWx1YXRpbmcgdGhlIGZyYW1lLgogKi8KIAorc3RhdGljIFB5T2JqZWN0KgorX1B5RnVuY3Rpb25fRmFzdENhbGwoUHlDb2RlT2JqZWN0ICpjbywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmdsb2JhbHMpCit7CisgICAgUHlGcmFtZU9iamVjdCAqZjsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FsczsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIFBDQUxMKFBDQUxMX0ZBU1RFUl9GVU5DVElPTik7CisgICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7CisgICAgLyogWFhYIFBlcmhhcHMgd2Ugc2hvdWxkIGNyZWF0ZSBhIHNwZWNpYWxpemVkCisgICAgICAgUHlGcmFtZV9OZXcoKSB0aGF0IGRvZXNuJ3QgdGFrZSBsb2NhbHMsIGJ1dCBkb2VzCisgICAgICAgdGFrZSBidWlsdGlucyB3aXRob3V0IHNhbml0eSBjaGVja2luZyB0aGVtLgorICAgICAgICovCisgICAgYXNzZXJ0KHRzdGF0ZSAhPSBOVUxMKTsKKyAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgTlVMTCk7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOworCisgICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspIHsKKyAgICAgICAgUHlfSU5DUkVGKCphcmdzKTsKKyAgICAgICAgZmFzdGxvY2Fsc1tpXSA9ICphcmdzKys7CisgICAgfQorICAgIHJlc3VsdCA9IFB5RXZhbF9FdmFsRnJhbWVFeChmLDApOworCisgICAgKyt0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKKyAgICBQeV9ERUNSRUYoZik7CisgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCi1mYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG4sIGludCBuYSwgaW50IG5rKQorZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IChQeUNvZGVPYmplY3QgKilQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpOwogICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKTsKICAgICBQeU9iamVjdCAqYXJnZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0RFRkFVTFRTKGZ1bmMpOwotICAgIFB5T2JqZWN0ICprd2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9LV19ERUZBVUxUUyhmdW5jKTsKLSAgICBQeU9iamVjdCAqbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKLSAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX3F1YWxuYW1lOwotICAgIFB5T2JqZWN0ICoqZCA9IE5VTEw7Ci0gICAgaW50IG5kID0gMDsKKyAgICBQeU9iamVjdCAqa3dkZWZzLCAqY2xvc3VyZSwgKm5hbWUsICpxdWFsbmFtZTsKKyAgICBQeU9iamVjdCAqKmQ7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeV9zc2l6ZV90IG5kOworCisgICAgYXNzZXJ0KFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQoa3duYW1lcyA9PSBOVUxMIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdChrd25hbWVzKSk7CisgICAgYXNzZXJ0KChuYXJncyA9PSAwICYmIG5rd2FyZ3MgPT0gMCkgfHwgc3RhY2sgIT0gTlVMTCk7CisgICAgLyoga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZSAqLwogCiAgICAgUENBTEwoUENBTExfRlVOQ1RJT04pOwogICAgIFBDQUxMKFBDQUxMX0ZBU1RfRlVOQ1RJT04pOwotICAgIGlmIChhcmdkZWZzID09IE5VTEwgJiYgY28tPmNvX2FyZ2NvdW50ID09IG4gJiYKLSAgICAgICAgY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYgbms9PTAgJiYKLSAgICAgICAgY28tPmNvX2ZsYWdzID09IChDT19PUFRJTUlaRUQgfCBDT19ORVdMT0NBTFMgfCBDT19OT0ZSRUUpKSB7Ci0gICAgICAgIFB5RnJhbWVPYmplY3QgKmY7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMsICoqc3RhY2s7Ci0gICAgICAgIGludCBpOwogCi0gICAgICAgIFBDQUxMKFBDQUxMX0ZBU1RFUl9GVU5DVElPTik7Ci0gICAgICAgIGFzc2VydChnbG9iYWxzICE9IE5VTEwpOwotICAgICAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgY3JlYXRlIGEgc3BlY2lhbGl6ZWQKLSAgICAgICAgICAgUHlGcmFtZV9OZXcoKSB0aGF0IGRvZXNuJ3QgdGFrZSBsb2NhbHMsIGJ1dCBkb2VzCi0gICAgICAgICAgIHRha2UgYnVpbHRpbnMgd2l0aG91dCBzYW5pdHkgY2hlY2tpbmcgdGhlbS4KLSAgICAgICAgKi8KLSAgICAgICAgYXNzZXJ0KHRzdGF0ZSAhPSBOVUxMKTsKLSAgICAgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIE5VTEwpOwotICAgICAgICBpZiAoZiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKLSAgICAgICAgc3RhY2sgPSAoKnBwX3N0YWNrKSAtIG47Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgUHlfSU5DUkVGKCpzdGFjayk7Ci0gICAgICAgICAgICBmYXN0bG9jYWxzW2ldID0gKnN0YWNrKys7CisgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmIG5rd2FyZ3MgPT0gMCAmJgorICAgICAgICBjby0+Y29fZmxhZ3MgPT0gKENPX09QVElNSVpFRCB8IENPX05FV0xPQ0FMUyB8IENPX05PRlJFRSkpCisgICAgeworICAgICAgICBpZiAoYXJnZGVmcyA9PSBOVUxMICYmIGNvLT5jb19hcmdjb3VudCA9PSBuYXJncykgeworICAgICAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsKGNvLCBzdGFjaywgbmFyZ3MsIGdsb2JhbHMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHZhbCA9IFB5RXZhbF9FdmFsRnJhbWVFeChmLDApOwotICAgICAgICArK3RzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOwotICAgICAgICBQeV9ERUNSRUYoZik7Ci0gICAgICAgIC0tdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7Ci0gICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgIGVsc2UgaWYgKG5hcmdzID09IDAgJiYgYXJnZGVmcyAhPSBOVUxMCisgICAgICAgICAgICAgICAgICYmIGNvLT5jb19hcmdjb3VudCA9PSBQeV9TSVpFKGFyZ2RlZnMpKSB7CisgICAgICAgICAgICAvKiBmdW5jdGlvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsIGJ1dCBhbGwgcGFyYW1ldGVycyBoYXZlCisgICAgICAgICAgICAgICBhIGRlZmF1bHQgdmFsdWU6IHVzZSBkZWZhdWx0IHZhbHVlcyBhcyBhcmd1bWVudHMgLiovCisgICAgICAgICAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOworICAgICAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsKGNvLCBzdGFjaywgUHlfU0laRShhcmdkZWZzKSwgZ2xvYmFscyk7CisgICAgICAgIH0KICAgICB9CisKKyAgICBrd2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9LV19ERUZBVUxUUyhmdW5jKTsKKyAgICBjbG9zdXJlID0gUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKTsKKyAgICBuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOworICAgIHF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKKwogICAgIGlmIChhcmdkZWZzICE9IE5VTEwpIHsKICAgICAgICAgZCA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOwogICAgICAgICBuZCA9IFB5X1NJWkUoYXJnZGVmcyk7CiAgICAgfQotICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKU5VTEwsICgqcHBfc3RhY2spLW4sIG5hLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpwcF9zdGFjayktMipuaywgbmssIGQsIG5kLCBrd2RlZnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgcXVhbG5hbWUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotdXBkYXRlX2tleXdvcmRfYXJncyhQeU9iamVjdCAqb3JpZ19rd2RpY3QsIGludCBuaywgUHlPYmplY3QgKioqcHBfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKQotewotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgIGlmIChvcmlnX2t3ZGljdCA9PSBOVUxMKQotICAgICAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGt3ZGljdCA9IFB5RGljdF9Db3B5KG9yaWdfa3dkaWN0KTsKLSAgICAgICAgUHlfREVDUkVGKG9yaWdfa3dkaWN0KTsKKyAgICAgICAgZCA9IE5VTEw7CisgICAgICAgIG5kID0gMDsKICAgICB9Ci0gICAgaWYgKGt3ZGljdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3aGlsZSAoLS1uayA+PSAwKSB7Ci0gICAgICAgIGludCBlcnI7Ci0gICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgUHlPYmplY3QgKmtleSA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtKGt3ZGljdCwga2V5KSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlcyBnb3QgbXVsdGlwbGUgdmFsdWVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGtleXdvcmQgYXJndW1lbnQgJyVVJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7CisgICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLCAoUHlPYmplY3QgKilOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2ssIG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmt3YXJncyA/ICZQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIDApIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrICsgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBua3dhcmdzLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwgKGludCluZCwga3dkZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc3VyZSwgbmFtZSwgcXVhbG5hbWUpOworfQorCitQeU9iamVjdCAqCitfUHlGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICByZXR1cm4gZmFzdF9mdW5jdGlvbihmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworfQorCitQeU9iamVjdCAqCitfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5Q29kZU9iamVjdCAqY28gPSAoUHlDb2RlT2JqZWN0ICopUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKTsKKyAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyk7CisgICAgUHlPYmplY3QgKmFyZ2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9ERUZBVUxUUyhmdW5jKTsKKyAgICBQeU9iamVjdCAqa3dkZWZzLCAqY2xvc3VyZSwgKm5hbWUsICpxdWFsbmFtZTsKKyAgICBQeU9iamVjdCAqa3d0dXBsZSwgKiprOworICAgIFB5T2JqZWN0ICoqZDsKKyAgICBQeV9zc2l6ZV90IG5kLCBuazsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChuYXJncyA9PSAwIHx8IGFyZ3MgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKKworICAgIFBDQUxMKFBDQUxMX0ZVTkNUSU9OKTsKKyAgICBQQ0FMTChQQ0FMTF9GQVNUX0ZVTkNUSU9OKTsKKworICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJgorICAgICAgICAoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X1NpemUoa3dhcmdzKSA9PSAwKSAmJgorICAgICAgICBjby0+Y29fZmxhZ3MgPT0gKENPX09QVElNSVpFRCB8IENPX05FV0xPQ0FMUyB8IENPX05PRlJFRSkpCisgICAgeworICAgICAgICAvKiBGYXN0IHBhdGhzICovCisgICAgICAgIGlmIChhcmdkZWZzID09IE5VTEwgJiYgY28tPmNvX2FyZ2NvdW50ID09IG5hcmdzKSB7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIGFyZ3MsIG5hcmdzLCBnbG9iYWxzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuYXJncyA9PSAwICYmIGFyZ2RlZnMgIT0gTlVMTAorICAgICAgICAgICAgICAgICAmJiBjby0+Y29fYXJnY291bnQgPT0gUHlfU0laRShhcmdkZWZzKSkgeworICAgICAgICAgICAgLyogZnVuY3Rpb24gY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLCBidXQgYWxsIHBhcmFtZXRlcnMgaGF2ZQorICAgICAgICAgICAgICAgYSBkZWZhdWx0IHZhbHVlOiB1c2UgZGVmYXVsdCB2YWx1ZXMgYXMgYXJndW1lbnRzIC4qLworICAgICAgICAgICAgYXJncyA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOworICAgICAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsKGNvLCBhcmdzLCBQeV9TSVpFKGFyZ2RlZnMpLCBnbG9iYWxzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChrd2FyZ3MgIT0gTlVMTCkgeworICAgICAgICBQeV9zc2l6ZV90IHBvcywgaTsKKyAgICAgICAgbmsgPSBQeURpY3RfU2l6ZShrd2FyZ3MpOworCisgICAgICAgIGt3dHVwbGUgPSBQeVR1cGxlX05ldygyICogbmspOworICAgICAgICBpZiAoa3d0dXBsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleSwgdmFsdWUpOwotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgaWYgKGVycikgewotICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBrID0gJlB5VHVwbGVfR0VUX0lURU0oa3d0dXBsZSwgMCk7CisgICAgICAgIHBvcyA9IGkgPSAwOworICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQoa3dhcmdzLCAmcG9zLCAma1tpXSwgJmtbaSsxXSkpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrW2ldKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrW2krMV0pOworICAgICAgICAgICAgaSArPSAyOwogICAgICAgICB9CisgICAgICAgIG5rID0gaSAvIDI7CiAgICAgfQotICAgIHJldHVybiBrd2RpY3Q7CisgICAgZWxzZSB7CisgICAgICAgIGt3dHVwbGUgPSBOVUxMOworICAgICAgICBrID0gTlVMTDsKKyAgICAgICAgbmsgPSAwOworICAgIH0KKworICAgIGt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOworICAgIGNsb3N1cmUgPSBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpOworICAgIG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7CisgICAgcXVhbG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX3F1YWxuYW1lOworCisgICAgaWYgKGFyZ2RlZnMgIT0gTlVMTCkgeworICAgICAgICBkID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgIG5kID0gUHlfU0laRShhcmdkZWZzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQgPSBOVUxMOworICAgICAgICBuZCA9IDA7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsIChQeU9iamVjdCAqKU5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrLCBrICsgMSwgbmssIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQsIG5kLCBrd2RlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUsIG5hbWUsIHF1YWxuYW1lKTsKKyAgICBQeV9YREVDUkVGKGt3dHVwbGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11cGRhdGVfc3Rhcl9hcmdzKGludCBuc3RhY2ssIGludCBuc3RhciwgUHlPYmplY3QgKnN0YXJhcmcsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnBwX3N0YWNrKQorZG9fY2FsbF9jb3JlKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqY2FsbGFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCiB7Ci0gICAgUHlPYmplY3QgKmNhbGxhcmdzLCAqdzsKLQotICAgIGNhbGxhcmdzID0gUHlUdXBsZV9OZXcobnN0YWNrICsgbnN0YXIpOwotICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAobnN0YXIpIHsKLSAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuc3RhcjsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYSA9IFB5VHVwbGVfR0VUX0lURU0oc3RhcmFyZywgaSk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoYSk7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGNhbGxhcmdzLCBuc3RhY2sgKyBpLCBhKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAoLS1uc3RhY2sgPj0gMCkgewotICAgICAgICB3ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGNhbGxhcmdzLCBuc3RhY2ssIHcpOwotICAgIH0KLSAgICByZXR1cm4gY2FsbGFyZ3M7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX2FyZ3MoUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBuYSkKLXsKLSAgICBQeU9iamVjdCAqYXJncyA9IFB5VHVwbGVfTmV3KG5hKTsKLSAgICBQeU9iamVjdCAqdzsKLQotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHdoaWxlICgtLW5hID49IDApIHsKLSAgICAgICAgdyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBuYSwgdyk7Ci0gICAgfQotICAgIHJldHVybiBhcmdzOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotZG9fY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBuYSwgaW50IG5rKQotewotICAgIFB5T2JqZWN0ICpjYWxsYXJncyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICBpZiAobmsgPiAwKSB7Ci0gICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3MoTlVMTCwgbmssIHBwX3N0YWNrLCBmdW5jKTsKLSAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBjYWxsX2ZhaWw7Ci0gICAgfQotICAgIGNhbGxhcmdzID0gbG9hZF9hcmdzKHBwX3N0YWNrLCBuYSk7Ci0gICAgaWYgKGNhbGxhcmdzID09IE5VTEwpCi0gICAgICAgIGdvdG8gY2FsbF9mYWlsOwogI2lmZGVmIENBTExfUFJPRklMRQogICAgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgdG8gbG9vayBhdCB0aGUgdHlwZSBvZiBmdW5jIHRvCiAgICAgICAgdXBkYXRlIHRoZSBjYWxsIHN0YXRzIHByb3Blcmx5LiAgRG8gaXQgaGVyZSBzbyBhcyB0byBhdm9pZApAQCAtNDk0MywxMTUgKzUwNDIsMTYgQEAKICAgICBlbHNlCiAgICAgICAgIFBDQUxMKFBDQUxMX09USEVSKTsKICNlbmRpZgorCiAgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgICAgIENfVFJBQ0UocmVzdWx0LCBQeUNGdW5jdGlvbl9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwotY2FsbF9mYWlsOgotICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOwotICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotZXh0X2RvX2NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgZmxhZ3MsIGludCBuYSwgaW50IG5rKQotewotICAgIGludCBuc3RhciA9IDA7Ci0gICAgUHlPYmplY3QgKmNhbGxhcmdzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqc3RhcmFyZyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfS1cpIHsKLSAgICAgICAga3dkaWN0ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoIVB5RGljdF9DaGVjayhrd2RpY3QpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZDsKLSAgICAgICAgICAgIGQgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICBpZiAoZCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGQsIGt3ZGljdCkgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICAvKiBQeURpY3RfVXBkYXRlIHJhaXNlcyBhdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICAgKiBlcnJvciAocGVyY29sYXRlZCBmcm9tIGFuIGF0dGVtcHQKLSAgICAgICAgICAgICAgICAgKiB0byBnZXQgJ2tleXMnIGF0dHJpYnV0ZSkgaW5zdGVhZCBvZgotICAgICAgICAgICAgICAgICAqIGEgdHlwZSBlcnJvciBpZiBpdHMgc2Vjb25kIGFyZ3VtZW50Ci0gICAgICAgICAgICAgICAgICogaXMgbm90IGEgbWFwcGluZy4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3ZGljdC0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOwotICAgICAgICAgICAga3dkaWN0ID0gZDsKLSAgICAgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKICAgICB9Ci0gICAgaWYgKG5rID4gMCkgewotICAgICAgICBrd2RpY3QgPSB1cGRhdGVfa2V5d29yZF9hcmdzKGt3ZGljdCwgbmssIHBwX3N0YWNrLCBmdW5jKTsKLSAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgIH0KLQotICAgIGlmIChmbGFncyAmIENBTExfRkxBR19WQVIpIHsKLSAgICAgICAgc3RhcmFyZyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXJhcmcpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdCA9IE5VTEw7Ci0gICAgICAgICAgICBpZiAoUHlfVFlQRShzdGFyYXJnKS0+dHBfaXRlciA9PSBOVUxMICYmCi0gICAgICAgICAgICAgICAgICAgICFQeVNlcXVlbmNlX0NoZWNrKHN0YXJhcmcpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcmFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdCA9IFB5U2VxdWVuY2VfVHVwbGUoc3RhcmFyZyk7Ci0gICAgICAgICAgICBpZiAodCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJhcmcpOwotICAgICAgICAgICAgc3RhcmFyZyA9IHQ7Ci0gICAgICAgIH0KLSAgICAgICAgbnN0YXIgPSBQeVR1cGxlX0dFVF9TSVpFKHN0YXJhcmcpOwotICAgIH0KLSAgICBjYWxsYXJncyA9IHVwZGF0ZV9zdGFyX2FyZ3MobmEsIG5zdGFyLCBzdGFyYXJnLCBwcF9zdGFjayk7Ci0gICAgaWYgKGNhbGxhcmdzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSNpZmRlZiBDQUxMX1BST0ZJTEUKLSAgICAvKiBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIHRvIGxvb2sgYXQgdGhlIHR5cGUgb2YgZnVuYyB0bwotICAgICAgIHVwZGF0ZSB0aGUgY2FsbCBzdGF0cyBwcm9wZXJseS4gIERvIGl0IGhlcmUgc28gYXMgdG8gYXZvaWQKLSAgICAgICBleHBvc2luZyB0aGUgY2FsbCBzdGF0cyBtYWNoaW5lcnkgb3V0c2lkZSBjZXZhbC5jCi0gICAgKi8KLSAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfRlVOQ1RJT04pOwotICAgIGVsc2UgaWYgKFB5TWV0aG9kX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9NRVRIT0QpOwotICAgIGVsc2UgaWYgKFB5VHlwZV9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfVFlQRSk7Ci0gICAgZWxzZSBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX0NGVU5DVElPTik7Ci0gICAgZWxzZQotICAgICAgICBQQ0FMTChQQ0FMTF9PVEhFUik7Ci0jZW5kaWYKLSAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKLSAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKLSAgICAgICAgQ19UUkFDRShyZXN1bHQsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCkpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7Ci1leHRfY2FsbF9mYWlsOgotICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOwotICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKLSAgICBQeV9YREVDUkVGKHN0YXJhcmcpOwotICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIEV4dHJhY3QgYSBzbGljZSBpbmRleCBmcm9tIGEgUHlMb25nIG9yIGFuIG9iamVjdCB3aXRoIHRoZQpAQCAtNTE0MSw2ICs1MTQxLDQ2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitpbXBvcnRfbmFtZShQeUZyYW1lT2JqZWN0ICpmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmZyb21saXN0LCBQeU9iamVjdCAqbGV2ZWwpCit7CisgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CisgICAgUHlPYmplY3QgKmltcG9ydF9mdW5jLCAqcmVzOworICAgIFB5T2JqZWN0KiBzdGFja1s1XTsKKworICAgIGltcG9ydF9mdW5jID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7CisgICAgaWYgKGltcG9ydF9mdW5jID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogRmFzdCBwYXRoIGZvciBub3Qgb3ZlcmxvYWRlZCBfX2ltcG9ydF9fLiAqLworICAgIGlmIChpbXBvcnRfZnVuYyA9PSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnAtPmltcG9ydF9mdW5jKSB7CisgICAgICAgIGludCBpbGV2ZWwgPSBfUHlMb25nX0FzSW50KGxldmVsKTsKKyAgICAgICAgaWYgKGlsZXZlbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXMgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8gUHlfTm9uZSA6IGYtPmZfbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBpbGV2ZWwpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIFB5X0lOQ1JFRihpbXBvcnRfZnVuYyk7CisKKyAgICBzdGFja1swXSA9IG5hbWU7CisgICAgc3RhY2tbMV0gPSBmLT5mX2dsb2JhbHM7CisgICAgc3RhY2tbMl0gPSBmLT5mX2xvY2FscyA9PSBOVUxMID8gUHlfTm9uZSA6IGYtPmZfbG9jYWxzOworICAgIHN0YWNrWzNdID0gZnJvbWxpc3Q7CisgICAgc3RhY2tbNF0gPSBsZXZlbDsKKyAgICByZXMgPSBfUHlPYmplY3RfRmFzdENhbGwoaW1wb3J0X2Z1bmMsIHN0YWNrLCA1KTsKKyAgICBQeV9ERUNSRUYoaW1wb3J0X2Z1bmMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBpbXBvcnRfZnJvbShQeU9iamVjdCAqdiwgUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKng7CkBAIC01Mjc2LDcgKzUzMTYsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsCi0gICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHIpCisgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmYsIGNvbnN0IF9QeV9DT0RFVU5JVCAqbmV4dF9pbnN0cikKIHsKICAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChQeV9SRUZDTlQodikgPT0gMikgewpAQCAtNTI4NiwxMCArNTMyNiwxMSBAQAogICAgICAgICAgKiAndmFyaWFibGUnLiAgV2UgdHJ5IHRvIGRlbGV0ZSB0aGUgdmFyaWFibGUgbm93IHRvIHJlZHVjZQogICAgICAgICAgKiB0aGUgcmVmY250IHRvIDEuCiAgICAgICAgICAqLwotICAgICAgICBzd2l0Y2ggKCpuZXh0X2luc3RyKSB7CisgICAgICAgIGludCBvcGNvZGUsIG9wYXJnOworICAgICAgICBORVhUT1BBUkcoKTsKKyAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgY2FzZSBTVE9SRV9GQVNUOgogICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgb3BhcmcgPSBQRUVLQVJHKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgICAgICAgICBpZiAoR0VUTE9DQUwob3BhcmcpID09IHYpCiAgICAgICAgICAgICAgICAgU0VUTE9DQUwob3BhcmcsIE5VTEwpOwpAQCAtNTI5OSw3ICs1MzQwLDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKipmcmVldmFycyA9IChmLT5mX2xvY2Fsc3BsdXMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2NvZGUtPmNvX25sb2NhbHMpOwotICAgICAgICAgICAgUHlPYmplY3QgKmMgPSBmcmVldmFyc1tQRUVLQVJHKCldOworICAgICAgICAgICAgUHlPYmplY3QgKmMgPSBmcmVldmFyc1tvcGFyZ107CiAgICAgICAgICAgICBpZiAoUHlDZWxsX0dFVChjKSA9PSB2KQogICAgICAgICAgICAgICAgIFB5Q2VsbF9TZXQoYywgTlVMTCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUzMDcsNyArNTM0OCw3IEBACiAgICAgICAgIGNhc2UgU1RPUkVfTkFNRToKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzID0gZi0+Zl9jb2RlLT5jb19uYW1lczsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgUEVFS0FSRygpKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwogICAgICAgICAgICAgUHlPYmplY3QgKmxvY2FscyA9IGYtPmZfbG9jYWxzOwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGxvY2FscykgJiYKICAgICAgICAgICAgICAgICBQeURpY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpID09IHYpIHsKQEAgLTUzNjcsMyArNTQwOCw3OSBAQAogfQogCiAjZW5kaWYKKworUHlfc3NpemVfdAorX1B5RXZhbF9SZXF1ZXN0Q29kZUV4dHJhSW5kZXgoZnJlZWZ1bmMgZnJlZSkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgIFB5X3NzaXplX3QgbmV3X2luZGV4OworCisgICAgaWYgKHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCA9PSBNQVhfQ09fRVhUUkFfVVNFUlMgLSAxKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbmV3X2luZGV4ID0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50Kys7CisgICAgdHN0YXRlLT5jb19leHRyYV9mcmVlZnVuY3NbbmV3X2luZGV4XSA9IGZyZWU7CisgICAgcmV0dXJuIG5ld19pbmRleDsKK30KKworc3RhdGljIHZvaWQKK2R0cmFjZV9mdW5jdGlvbl9lbnRyeShQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIGNoYXIqIGZpbGVuYW1lOworICAgIGNoYXIqIGZ1bmNuYW1lOworICAgIGludCBsaW5lbm87CisKKyAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19maWxlbmFtZSk7CisgICAgZnVuY25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShmLT5mX2NvZGUsIGYtPmZfbGFzdGkpOworCisgICAgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm8pOworfQorCitzdGF0aWMgdm9pZAorZHRyYWNlX2Z1bmN0aW9uX3JldHVybihQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIGNoYXIqIGZpbGVuYW1lOworICAgIGNoYXIqIGZ1bmNuYW1lOworICAgIGludCBsaW5lbm87CisKKyAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19maWxlbmFtZSk7CisgICAgZnVuY25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShmLT5mX2NvZGUsIGYtPmZfbGFzdGkpOworCisgICAgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOKGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vKTsKK30KKworLyogRFRyYWNlIGVxdWl2YWxlbnQgb2YgbWF5YmVfY2FsbF9saW5lX3RyYWNlLiAqLworc3RhdGljIHZvaWQKK21heWJlX2R0cmFjZV9saW5lKFB5RnJhbWVPYmplY3QgKmZyYW1lLAorICAgICAgICAgICAgICAgICAgaW50ICppbnN0cl9sYiwgaW50ICppbnN0cl91YiwgaW50ICppbnN0cl9wcmV2KQoreworICAgIGludCBsaW5lID0gZnJhbWUtPmZfbGluZW5vOworICAgIGNoYXIgKmNvX2ZpbGVuYW1lLCAqY29fbmFtZTsKKworICAgIC8qIElmIHRoZSBsYXN0IGluc3RydWN0aW9uIGV4ZWN1dGVkIGlzbid0IGluIHRoZSBjdXJyZW50CisgICAgICAgaW5zdHJ1Y3Rpb24gd2luZG93LCByZXNldCB0aGUgd2luZG93LgorICAgICovCisgICAgaWYgKGZyYW1lLT5mX2xhc3RpIDwgKmluc3RyX2xiIHx8IGZyYW1lLT5mX2xhc3RpID49ICppbnN0cl91YikgeworICAgICAgICBQeUFkZHJQYWlyIGJvdW5kczsKKyAgICAgICAgbGluZSA9IF9QeUNvZGVfQ2hlY2tMaW5lTnVtYmVyKGZyYW1lLT5mX2NvZGUsIGZyYW1lLT5mX2xhc3RpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJvdW5kcyk7CisgICAgICAgICppbnN0cl9sYiA9IGJvdW5kcy5hcF9sb3dlcjsKKyAgICAgICAgKmluc3RyX3ViID0gYm91bmRzLmFwX3VwcGVyOworICAgIH0KKyAgICAvKiBJZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiBmYWxscyBhdCB0aGUgc3RhcnQgb2YgYSBsaW5lIG9yIGlmCisgICAgICAgaXQgcmVwcmVzZW50cyBhIGp1bXAgYmFja3dhcmRzLCB1cGRhdGUgdGhlIGZyYW1lJ3MgbGluZQorICAgICAgIG51bWJlciBhbmQgY2FsbCB0aGUgdHJhY2UgZnVuY3Rpb24uICovCisgICAgaWYgKGZyYW1lLT5mX2xhc3RpID09ICppbnN0cl9sYiB8fCBmcmFtZS0+Zl9sYXN0aSA8ICppbnN0cl9wcmV2KSB7CisgICAgICAgIGZyYW1lLT5mX2xpbmVubyA9IGxpbmU7CisgICAgICAgIGNvX2ZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSk7CisgICAgICAgIGlmICghY29fZmlsZW5hbWUpCisgICAgICAgICAgICBjb19maWxlbmFtZSA9ICI/IjsKKyAgICAgICAgY29fbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgICAgIGlmICghY29fbmFtZSkKKyAgICAgICAgICAgIGNvX25hbWUgPSAiPyI7CisgICAgICAgIFB5RFRyYWNlX0xJTkUoY29fZmlsZW5hbWUsIGNvX25hbWUsIGxpbmUpOworICAgIH0KKyAgICAqaW5zdHJfcHJldiA9IGZyYW1lLT5mX2xhc3RpOworfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsX2dpbC5oIGIvUHl0aG9uL2NldmFsX2dpbC5oCmluZGV4IDhkMzhlZTkuLmEzYjQ1MGIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbF9naWwuaAorKysgYi9QeXRob24vY2V2YWxfZ2lsLmgKQEAgLTE3OCw3ICsxNzgsNyBAQAogICAgICAgICAvKiBTdWItaW50ZXJwcmV0ZXIgc3VwcG9ydDogdGhyZWFkcyBtaWdodCBoYXZlIGJlZW4gc3dpdGNoZWQKICAgICAgICAgICAgdW5kZXIgb3VyIGZlZXQgdXNpbmcgUHlUaHJlYWRTdGF0ZV9Td2FwKCkuIEZpeCB0aGUgR0lMIGxhc3QKICAgICAgICAgICAgaG9sZGVyIHZhcmlhYmxlIHNvIHRoYXQgb3VyIGhldXJpc3RpY3Mgd29yay4gKi8KLSAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsIChQeV91aW50cHRyX3QpdHN0YXRlKTsKKyAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsICh1aW50cHRyX3QpdHN0YXRlKTsKICAgICB9CiAKICAgICBNVVRFWF9MT0NLKGdpbF9tdXRleCk7CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgICBfUHlfQU5OT1RBVEVfUldMT0NLX0FDUVVJUkVEKCZnaWxfbG9ja2VkLCAvKmlzX3dyaXRlPSovMSk7CiAKICAgICBpZiAodHN0YXRlICE9IChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSkgewotICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKFB5X3VpbnRwdHJfdCl0c3RhdGUpOworICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKHVpbnRwdHJfdCl0c3RhdGUpOwogICAgICAgICArK2dpbF9zd2l0Y2hfbnVtYmVyOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmggYi9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaAppbmRleCA0ZTJiMWYxLi5jODhkZWVmIDEwMDY0NAotLS0gYS9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaAorKysgYi9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaApAQCAtOTMsOCArOTMsOSBAQAogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VTpmb3JtYXQiLAotICAgICAgICAmdmFsdWUsICZmb3JtYXRfc3BlYykpCisgICAgICAgICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZm9ybWF0X2ltcGwobW9kdWxlLCB2YWx1ZSwgZm9ybWF0X3NwZWMpOwogCiBleGl0OgpAQCAtMTE5LDggKzEyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Y2hyIiwgJmkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpjaHIiLCAmaSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Nocl9pbXBsKG1vZHVsZSwgaSk7CiAKIGV4aXQ6CkBAIC0xNDYsNyArMTQ4LDcgQEAKICJpbiBhZGRpdGlvbiB0byBhbnkgZmVhdHVyZXMgZXhwbGljaXRseSBzcGVjaWZpZWQuIik7CiAKICNkZWZpbmUgQlVJTFRJTl9DT01QSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY29tcGlsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ1aWx0aW5fY29tcGlsZV9fZG9jX199LAorICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NvbXBpbGUsIE1FVEhfRkFTVENBTEwsIGJ1aWx0aW5fY29tcGlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9jb21waWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnNvdXJjZSwgUHlPYmplY3QgKmZpbGVuYW1lLApAQCAtMTU0LDEwICsxNTYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgIGludCBvcHRpbWl6ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1idWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitidWlsdGluX2NvbXBpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNvdXJjZSIsICJmaWxlbmFtZSIsICJtb2RlIiwgImZsYWdzIiwgImRvbnRfaW5oZXJpdCIsICJvcHRpbWl6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PJnN8aWlpOmNvbXBpbGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzb3VyY2U7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwogICAgIGNvbnN0IGNoYXIgKm1vZGU7CkBAIC0xNjUsOSArMTY4LDEwIEBACiAgICAgaW50IGRvbnRfaW5oZXJpdCA9IDA7CiAgICAgaW50IG9wdGltaXplID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPTyZzfGlpaTpjb21waWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmc291cmNlLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmZmlsZW5hbWUsICZtb2RlLCAmZmxhZ3MsICZkb250X2luaGVyaXQsICZvcHRpbWl6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzb3VyY2UsIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwgJm1vZGUsICZmbGFncywgJmRvbnRfaW5oZXJpdCwgJm9wdGltaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY29tcGlsZV9pbXBsKG1vZHVsZSwgc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIGRvbnRfaW5oZXJpdCwgb3B0aW1pemUpOwogCiBleGl0OgpAQCAtMTk1LDggKzE5OSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkaXZtb2QiLAogICAgICAgICAyLCAyLAotICAgICAgICAmeCwgJnkpKQorICAgICAgICAmeCwgJnkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9kaXZtb2RfaW1wbChtb2R1bGUsIHgsIHkpOwogCiBleGl0OgpAQCAtMjMyLDggKzIzNyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJldmFsIiwKICAgICAgICAgMSwgMywKLSAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKQorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V2YWxfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKIAogZXhpdDoKQEAgLTI2OSw4ICsyNzUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXhlYyIsCiAgICAgICAgIDEsIDMsCi0gICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9leGVjX2ltcGwobW9kdWxlLCBzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CiAKIGV4aXQ6CkBAIC0zMjEsOCArMzI4LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImhhc2F0dHIiLAogICAgICAgICAyLCAyLAotICAgICAgICAmb2JqLCAmbmFtZSkpCisgICAgICAgICZvYmosICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faGFzYXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lKTsKIAogZXhpdDoKQEAgLTM2Niw4ICszNzQsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic2V0YXR0ciIsCiAgICAgICAgIDMsIDMsCi0gICAgICAgICZvYmosICZuYW1lLCAmdmFsdWUpKQorICAgICAgICAmb2JqLCAmbmFtZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fc2V0YXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zOTcsOCArNDA2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRlbGF0dHIiLAogICAgICAgICAyLCAyLAotICAgICAgICAmb2JqLCAmbmFtZSkpCisgICAgICAgICZvYmosICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGVsYXR0cl9pbXBsKG1vZHVsZSwgb2JqLCBuYW1lKTsKIAogZXhpdDoKQEAgLTUwNiw4ICs1MTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG93IiwKICAgICAgICAgMiwgMywKLSAgICAgICAgJngsICZ5LCAmeikpCisgICAgICAgICZ4LCAmeSwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9wb3dfaW1wbChtb2R1bGUsIHgsIHksIHopOwogCiBleGl0OgpAQCAtNTQwLDggKzU1MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpbnB1dCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwcm9tcHQpKQorICAgICAgICAmcHJvbXB0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faW5wdXRfaW1wbChtb2R1bGUsIHByb21wdCk7CiAKIGV4aXQ6CkBAIC01ODQsOCArNTk2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN1bSIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZpdGVyYWJsZSwgJnN0YXJ0KSkKKyAgICAgICAgJml0ZXJhYmxlLCAmc3RhcnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zdW1faW1wbChtb2R1bGUsIGl0ZXJhYmxlLCBzdGFydCk7CiAKIGV4aXQ6CkBAIC02MTgsOCArNjMxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlzaW5zdGFuY2UiLAogICAgICAgICAyLCAyLAotICAgICAgICAmb2JqLCAmY2xhc3Nfb3JfdHVwbGUpKQorICAgICAgICAmb2JqLCAmY2xhc3Nfb3JfdHVwbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pc2luc3RhbmNlX2ltcGwobW9kdWxlLCBvYmosIGNsYXNzX29yX3R1cGxlKTsKIAogZXhpdDoKQEAgLTY1MiwxMSArNjY2LDEyIEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc3N1YmNsYXNzIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJmNscywgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgJmNscywgJmNsYXNzX29yX3R1cGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNzdWJjbGFzc19pbXBsKG1vZHVsZSwgY2xzLCBjbGFzc19vcl90dXBsZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MDMxMjcwYjY0Yzc5NGI4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzQ4M2RlYjc1ODA1ZjdjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaCBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaAppbmRleCAwNWQ3OWFjLi5iMzQ2MGIwIDEwMDY0NAotLS0gYS9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKKysrIGIvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCkBAIC04OSw4ICs4OSw5IEBACiAgICAgUHlPYmplY3QgKnBhdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hVTpfZml4X2NvX2ZpbGVuYW1lIiwKLSAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKQorICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX19maXhfY29fZmlsZW5hbWVfaW1wbChtb2R1bGUsIGNvZGUsIHBhdGgpOwogCiBleGl0OgpAQCAtMTQyLDggKzE0Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aW5pdF9mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pbml0X2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0xNjgsOCArMTcwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2dldF9mcm96ZW5fb2JqZWN0X2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTE5NCw4ICsxOTcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX3BhY2thZ2VfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjIwLDggKzIyNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfYnVpbHRpbiIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yNDYsOCArMjUxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaXNfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTI3Nyw4ICsyODMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiY3JlYXRlX2R5bmFtaWMiLAogICAgICAgICAxLCAyLAotICAgICAgICAmc3BlYywgJmZpbGUpKQorICAgICAgICAmc3BlYywgJmZpbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9jcmVhdGVfZHluYW1pY19pbXBsKG1vZHVsZSwgc3BlYywgZmlsZSk7CiAKIGV4aXQ6CkBAIC0zMDgsOCArMzE1LDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfaW1wX2V4ZWNfZHluYW1pY19pbXBsKG1vZHVsZSwgbW9kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzM3LDggKzM0NSw5IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2J1aWx0aW5faW1wbChtb2R1bGUsIG1vZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM1Miw0ICszNjEsNCBAQAogI2lmbmRlZiBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKICAgICAjZGVmaW5lIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MGFkNmU1ODMzZTYxNzBkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMjRkN2Y3MzcwMmE5MDdmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jb21waWxlLmMgYi9QeXRob24vY29tcGlsZS5jCmluZGV4IDkzZjQ3ZTAuLmMwYzgxZTEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb21waWxlLmMKKysrIGIvUHl0aG9uL2NvbXBpbGUuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJzeW10YWJsZS5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgorI2luY2x1ZGUgIndvcmRjb2RlX2hlbHBlcnMuaCIKIAogI2RlZmluZSBERUZBVUxUX0JMT0NLX1NJWkUgMTYKICNkZWZpbmUgREVGQVVMVF9CTE9DS1MgOApAQCAtNDMsNyArNDQsNiBAQAogc3RydWN0IGluc3RyIHsKICAgICB1bnNpZ25lZCBpX2phYnMgOiAxOwogICAgIHVuc2lnbmVkIGlfanJlbCA6IDE7Ci0gICAgdW5zaWduZWQgaV9oYXNhcmcgOiAxOwogICAgIHVuc2lnbmVkIGNoYXIgaV9vcGNvZGU7CiAgICAgaW50IGlfb3Bhcmc7CiAgICAgc3RydWN0IGJhc2ljYmxvY2tfICppX3RhcmdldDsgLyogdGFyZ2V0IGJsb2NrIChpZiBqdW1wIGluc3RydWN0aW9uKSAqLwpAQCAtMTcxLDcgKzE3MSw2IEBACiBzdGF0aWMgaW50IGNvbXBpbGVyX2FkZG9wX28oc3RydWN0IGNvbXBpbGVyICosIGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FkZG9wX2koc3RydWN0IGNvbXBpbGVyICosIGludCwgUHlfc3NpemVfdCk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FkZG9wX2ooc3RydWN0IGNvbXBpbGVyICosIGludCwgYmFzaWNibG9jayAqLCBpbnQpOwotc3RhdGljIGJhc2ljYmxvY2sgKmNvbXBpbGVyX3VzZV9uZXdfYmxvY2soc3RydWN0IGNvbXBpbGVyICopOwogc3RhdGljIGludCBjb21waWxlcl9lcnJvcihzdHJ1Y3QgY29tcGlsZXIgKiwgY29uc3QgY2hhciAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfbmFtZW9wKHN0cnVjdCBjb21waWxlciAqLCBpZGVudGlmaWVyLCBleHByX2NvbnRleHRfdHkpOwogCkBAIC0xODAsNiArMTc5LDcgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfa2V5d29yZChzdHJ1Y3QgY29tcGlsZXIgKiwga2V5d29yZF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X2V4cHIoc3RydWN0IGNvbXBpbGVyICosIGV4cHJfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9hdWdhc3NpZ24oc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOworc3RhdGljIGludCBjb21waWxlcl9hbm5hc3NpZ24oc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9zbGljZShzdHJ1Y3QgY29tcGlsZXIgKiwgc2xpY2VfdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSk7CiAKQEAgLTE5NiwxMiArMTk2LDIyIEBACiBzdGF0aWMgaW50IGNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHksIGludCk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7Ci1zdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgUHlfc3NpemVfdCBuLAorc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdHJ5X2V4Y2VwdChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3NldF9xdWFsbmFtZShzdHJ1Y3QgY29tcGlsZXIgKik7CiAKK3N0YXRpYyBpbnQgY29tcGlsZXJfc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSk7CisKK3N0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpOworCiBzdGF0aWMgUHlDb2RlT2JqZWN0ICphc3NlbWJsZShzdHJ1Y3QgY29tcGlsZXIgKiwgaW50IGFkZE5vbmUpOwogc3RhdGljIFB5T2JqZWN0ICpfX2RvY19fOwogCkBAIC00NzcsOSArNDg3LDkgQEAKIHsKICAgICBiYXNpY2Jsb2NrICpibG9jazsKICAgICBmb3IgKGJsb2NrID0gdS0+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+di5FeHByLnZhbHVlLT52LkNvbnN0YW50LnZhbHVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmaXJzdF9jb25zdCA9IHN0LT52LkV4cHIudmFsdWUtPnYuU3RyLnM7CisgICAgfQogICAgIGlmIChjb21waWxlcl9hZGRfbyhjLCBjLT51LT51X2NvbnN0cywgZmlyc3RfY29uc3QpIDwgMCkgICAgICB7CiAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTcxMiwxMiArMTg5Myw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7Ci0gICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKLSAgICBhcmdsZW5ndGggfD0gbnVtX2Fubm90YXRpb25zIDw8IDE2OwotICAgIGlmIChpc19hc3luYykKLSAgICAgICAgY28tPmNvX2ZsYWdzIHw9IENPX0NPUk9VVElORTsKLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgZnVuY2ZsYWdzLCBxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCkBAIC0xNzkyLDcgKzE5NjgsNyBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSkgewotICAgICAgICAgICAgLyogcmV0dXJuIHRoZSAoZW1wdHkpIF9fY2xhc3NfXyBjZWxsICovCisgICAgICAgICAgICAvKiBzdG9yZSBfX2NsYXNzY2VsbF9fIGludG8gY2xhc3MgbmFtZXNwYWNlICovCiAgICAgICAgICAgICBzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19jbGFzc19fIik7CiAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwpAQCAtMTgwNSwxNSArMTk4MSwyMCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXNzZXJ0KGkgPT0gMCk7Ci0gICAgICAgICAgICAvKiBSZXR1cm4gdGhlIGNlbGwgd2hlcmUgdG8gc3RvcmUgX19jbGFzc19fICovCisKICAgICAgICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBpKTsKKyAgICAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzY2VsbF9fIik7CisgICAgICAgICAgICBpZiAoIXN0ciB8fCAhY29tcGlsZXJfbmFtZW9wKGMsIHN0ciwgU3RvcmUpKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihzdHIpOworICAgICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIFRoaXMgaGFwcGVucyB3aGVuIG5vYm9keSByZWZlcmVuY2VzIHRoZSBjZWxsLiAqLwogICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9TaXplKGMtPnUtPnVfY2VsbHZhcnMpID09IDApOwotICAgICAgICAgICAgLyogVGhpcyBoYXBwZW5zIHdoZW4gbm9ib2R5IHJlZmVyZW5jZXMgdGhlIGNlbGwuIFJldHVybiBOb25lLiAqLwotICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOwogICAgICAgICB9Ci0gICAgICAgIEFERE9QX0lOX1NDT1BFKGMsIFJFVFVSTl9WQUxVRSk7CiAgICAgICAgIC8qIGNyZWF0ZSB0aGUgY29kZSBvYmplY3QgKi8KICAgICAgICAgY28gPSBhc3NlbWJsZShjLCAxKTsKICAgICB9CkBAIC0xODc3LDggKzIwNTgsNyBAQAogICAgIFB5Q29kZU9iamVjdCAqY287CiAgICAgUHlPYmplY3QgKnF1YWxuYW1lOwogICAgIHN0YXRpYyBpZGVudGlmaWVyIG5hbWU7Ci0gICAgaW50IGt3X2RlZmF1bHRfY291bnQgPSAwOwotICAgIFB5X3NzaXplX3QgYXJnbGVuZ3RoOworICAgIFB5X3NzaXplX3QgZnVuY2ZsYWdzOwogICAgIGFyZ3VtZW50c190eSBhcmdzID0gZS0+di5MYW1iZGEuYXJnczsKICAgICBhc3NlcnQoZS0+a2luZCA9PSBMYW1iZGFfa2luZCk7CiAKQEAgLTE4ODgsMTQgKzIwNjgsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChhcmdzLT5kZWZhdWx0cykKLSAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBpZiAoYXJncy0+a3dvbmx5YXJncykgewotICAgICAgICBpbnQgcmVzID0gY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoYywgYXJncy0+a3dvbmx5YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3X2RlZmF1bHRzKTsKLSAgICAgICAgaWYgKHJlcyA9PSAwKSByZXR1cm4gMDsKLSAgICAgICAga3dfZGVmYXVsdF9jb3VudCA9IHJlcyAtIDE7CisgICAgZnVuY2ZsYWdzID0gY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoYywgYXJncyk7CisgICAgaWYgKGZ1bmNmbGFncyA9PSAtMSkgeworICAgICAgICByZXR1cm4gMDsKICAgICB9CisKICAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0xBTUJEQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopZSwgZS0+bGluZW5vKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xOTIxLDkgKzIwOTgsNyBAQAogICAgIGlmIChjbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7Ci0gICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKLSAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgZnVuY2ZsYWdzLCBxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCkBAIC0yMDAyLDE0ICsyMTc3LDE0IEBACiBzdGF0aWMgaW50CiBjb21waWxlcl9hc3luY19mb3Ioc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpzdG9waXRlcl9lcnJvciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoU3RvcEFzeW5jSXRlcmF0aW9uKTsKKwogICAgIGJhc2ljYmxvY2sgKnRyeSwgKmV4Y2VwdCwgKmVuZCwgKmFmdGVyX3RyeSwgKnRyeV9jbGVhbnVwLAogICAgICAgICAgICAgICAgKmFmdGVyX2xvb3AsICphZnRlcl9sb29wX2Vsc2U7CiAKLSAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkgewotICAgICAgICBzdG9waXRlcl9lcnJvciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJTdG9wQXN5bmNJdGVyYXRpb24iKTsKLSAgICAgICAgaWYgKHN0b3BpdGVyX2Vycm9yID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICBQeU9iamVjdCAqc3RvcF9haXRlcl9lcnJvciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgaWYgKHN0b3BfYWl0ZXJfZXJyb3IgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICB0cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CkBAIC0yMDUxLDcgKzIyMjYsNyBAQAogCiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZXhjZXB0KTsKICAgICBBRERPUChjLCBEVVBfVE9QKTsKLSAgICBBRERPUF9PKGMsIExPQURfR0xPQkFMLCBzdG9waXRlcl9lcnJvciwgbmFtZXMpOworICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BfYWl0ZXJfZXJyb3IsIG5hbWVzKTsKICAgICBBRERPUF9JKGMsIENPTVBBUkVfT1AsIFB5Q21wX0VYQ19NQVRDSCk7CiAgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgdHJ5X2NsZWFudXApOwogCkBAIC0yNTk5LDYgKzI3NzQsMjUgQEAKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfdmlzaXRfc3RtdF9leHByKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSB2YWx1ZSkKK3sKKyAgICBpZiAoYy0+Y19pbnRlcmFjdGl2ZSAmJiBjLT5jX25lc3RsZXZlbCA8PSAxKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIHZhbHVlKTsKKyAgICAgICAgQURET1AoYywgUFJJTlRfRVhQUik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmIChpc19jb25zdCh2YWx1ZSkpIHsKKyAgICAgICAgLyogaWdub3JlIGNvbnN0YW50IHN0YXRlbWVudCAqLworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBWSVNJVChjLCBleHByLCB2YWx1ZSk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX3Zpc2l0X3N0bXQoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCiB7CiAgICAgUHlfc3NpemVfdCBpLCBuOwpAQCAtMjYxNyw2ICsyODExLDkgQEAKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIncmV0dXJuJyBvdXRzaWRlIGZ1bmN0aW9uIik7CiAgICAgICAgIGlmIChzLT52LlJldHVybi52YWx1ZSkgeworICAgICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfY29yb3V0aW5lICYmIGMtPnUtPnVfc3RlLT5zdGVfZ2VuZXJhdG9yKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgYywgIidyZXR1cm4nIHdpdGggdmFsdWUgaW4gYXN5bmMgZ2VuZXJhdG9yIik7CiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LlJldHVybi52YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtMjYzOCw2ICsyODM1LDggQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdWdBc3NpZ25fa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2F1Z2Fzc2lnbihjLCBzKTsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfYW5uYXNzaWduKGMsIHMpOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9mb3IoYywgcyk7CiAgICAgY2FzZSBXaGlsZV9raW5kOgpAQCAtMjY2OCwxNiArMjg2Nyw3IEBACiAgICAgY2FzZSBOb25sb2NhbF9raW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEV4cHJfa2luZDoKLSAgICAgICAgaWYgKGMtPmNfaW50ZXJhY3RpdmUgJiYgYy0+Y19uZXN0bGV2ZWwgPD0gMSkgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5FeHByLnZhbHVlKTsKLSAgICAgICAgICAgIEFERE9QKGMsIFBSSU5UX0VYUFIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHMtPnYuRXhwci52YWx1ZS0+a2luZCAhPSBTdHJfa2luZCAmJgotICAgICAgICAgICAgICAgICBzLT52LkV4cHIudmFsdWUtPmtpbmQgIT0gTnVtX2tpbmQpIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuRXhwci52YWx1ZSk7Ci0gICAgICAgICAgICBBRERPUChjLCBQT1BfVE9QKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3Zpc2l0X3N0bXRfZXhwcihjLCBzLT52LkV4cHIudmFsdWUpOwogICAgIGNhc2UgUGFzc19raW5kOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEJyZWFrX2tpbmQ6CkBAIC0zMDc5LDkgKzMyNjksNTMgQEAKIH0KIAogc3RhdGljIGludAorYXJlX2FsbF9pdGVtc19jb25zdChhc2RsX3NlcSAqc2VxLCBQeV9zc2l6ZV90IGJlZ2luLCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICBleHByX3R5IGtleSA9IChleHByX3R5KWFzZGxfc2VxX0dFVChzZXEsIGkpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwgfHwgIWlzX2NvbnN0KGtleSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N1YmRpY3Qoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaSwgbiA9IGVuZCAtIGJlZ2luOworICAgIFB5T2JqZWN0ICprZXlzLCAqa2V5OworICAgIGlmIChuID4gMSAmJiBhcmVfYWxsX2l0ZW1zX2NvbnN0KGUtPnYuRGljdC5rZXlzLCBiZWdpbiwgZW5kKSkgeworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LnZhbHVlcywgaSkpOworICAgICAgICB9CisgICAgICAgIGtleXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gZ2V0X2NvbnN0X3ZhbHVlKChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOworICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleXMsIGkgLSBiZWdpbiwga2V5KTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXMsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG4pOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKIHsKLSAgICBQeV9zc2l6ZV90IGksIG4sIGNvbnRhaW5lcnMsIGVsZW1lbnRzOworICAgIFB5X3NzaXplX3QgaSwgbiwgZWxlbWVudHM7CisgICAgaW50IGNvbnRhaW5lcnM7CiAgICAgaW50IGlzX3VucGFja2luZyA9IDA7CiAgICAgbiA9IGFzZGxfc2VxX0xFTihlLT52LkRpY3QudmFsdWVzKTsKICAgICBjb250YWluZXJzID0gMDsKQEAgLTMwODksNyArMzMyMyw4IEBACiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICBpc191bnBhY2tpbmcgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpID09IE5VTEw7CiAgICAgICAgIGlmIChlbGVtZW50cyA9PSAweEZGRkYgfHwgKGVsZW1lbnRzICYmIGlzX3VucGFja2luZykpIHsKLSAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBlbGVtZW50cyk7CisgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3N1YmRpY3QoYywgZSwgaSAtIGVsZW1lbnRzLCBpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGNvbnRhaW5lcnMrKzsKICAgICAgICAgICAgIGVsZW1lbnRzID0gMDsKICAgICAgICAgfQpAQCAtMzA5OCwxMyArMzMzMywxMiBAQAogICAgICAgICAgICAgY29udGFpbmVycysrOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LnZhbHVlcywgaSkpOwogICAgICAgICAgICAgZWxlbWVudHMrKzsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoZWxlbWVudHMgfHwgY29udGFpbmVycyA9PSAwKSB7Ci0gICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBlbGVtZW50cyk7CisgICAgICAgIGlmICghY29tcGlsZXJfc3ViZGljdChjLCBlLCBuIC0gZWxlbWVudHMsIG4pKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNvbnRhaW5lcnMrKzsKICAgICB9CiAgICAgLyogSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBkaWN0LCB0aGV5IG5lZWQgdG8gYmUgbWVyZ2VkIGludG8gYSBuZXcKQEAgLTMxNzMsMjggKzM0MDcsMTI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnYuQ2FsbC5rZXl3b3Jkcyk7CiB9CiAKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2pvaW5lZF9zdHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgVklTSVRfU0VRKGMsIGV4cHIsIGUtPnYuSm9pbmVkU3RyLnZhbHVlcyk7CisgICAgQURET1BfSShjLCBCVUlMRF9TVFJJTkcsIGFzZGxfc2VxX0xFTihlLT52LkpvaW5lZFN0ci52YWx1ZXMpKTsKKyAgICByZXR1cm4gMTsKK30KKworLyogVXNlZCB0byBpbXBsZW1lbnQgZi1zdHJpbmdzLiBGb3JtYXQgYSBzaW5nbGUgdmFsdWUuICovCitzdGF0aWMgaW50Citjb21waWxlcl9mb3JtYXR0ZWRfdmFsdWUoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgLyogT3VyIG9wYXJnIGVuY29kZXMgMiBwaWVjZXMgb2YgaW5mb3JtYXRpb246IHRoZSBjb252ZXJzaW9uCisgICAgICAgY2hhcmFjdGVyLCBhbmQgd2hldGhlciBvciBub3QgYSBmb3JtYXRfc3BlYyB3YXMgcHJvdmlkZWQuCisKKyAgICAgICBDb252ZXJ0IHRoZSBjb252ZXJzaW9uIGNoYXIgdG8gMiBiaXRzOgorICAgICAgIE5vbmU6IDAwMCAgMHgwICBGVkNfTk9ORQorICAgICAgICFzICA6IDAwMSAgMHgxICBGVkNfU1RSCisgICAgICAgIXIgIDogMDEwICAweDIgIEZWQ19SRVBSCisgICAgICAgIWEgIDogMDExICAweDMgIEZWQ19BU0NJSQorCisgICAgICAgbmV4dCBiaXQgaXMgd2hldGhlciBvciBub3Qgd2UgaGF2ZSBhIGZvcm1hdCBzcGVjOgorICAgICAgIHllcyA6IDEwMCAgMHg0CisgICAgICAgbm8gIDogMDAwICAweDAKKyAgICAqLworCisgICAgaW50IG9wYXJnOworCisgICAgLyogRXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gdG8gYmUgZm9ybWF0dGVkLiAqLworICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUpOworCisgICAgc3dpdGNoIChlLT52LkZvcm1hdHRlZFZhbHVlLmNvbnZlcnNpb24pIHsKKyAgICBjYXNlICdzJzogb3BhcmcgPSBGVkNfU1RSOyAgIGJyZWFrOworICAgIGNhc2UgJ3InOiBvcGFyZyA9IEZWQ19SRVBSOyAgYnJlYWs7CisgICAgY2FzZSAnYSc6IG9wYXJnID0gRlZDX0FTQ0lJOyBicmVhazsKKyAgICBjYXNlIC0xOiAgb3BhcmcgPSBGVkNfTk9ORTsgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJVbnJlY29nbml6ZWQgY29udmVyc2lvbiBjaGFyYWN0ZXIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKSB7CisgICAgICAgIC8qIEV2YWx1YXRlIHRoZSBmb3JtYXQgc3BlYywgYW5kIHVwZGF0ZSBvdXIgb3Bjb2RlIGFyZy4gKi8KKyAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyk7CisgICAgICAgIG9wYXJnIHw9IEZWU19IQVZFX1NQRUM7CisgICAgfQorCisgICAgLyogQW5kIHB1c2ggb3VyIG9wY29kZSBhbmQgb3BhcmcgKi8KKyAgICBBRERPUF9JKGMsIEZPUk1BVF9WQUxVRSwgb3BhcmcpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zdWJrd2FyZ3Moc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSAqa2V5d29yZHMsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaSwgbiA9IGVuZCAtIGJlZ2luOworICAgIGtleXdvcmRfdHkga3c7CisgICAgUHlPYmplY3QgKmtleXMsICprZXk7CisgICAgYXNzZXJ0KG4gPiAwKTsKKyAgICBpZiAobiA+IDEpIHsKKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBrZXlzID0gUHlUdXBsZV9OZXcobik7CisgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGtleSA9ICgoa2V5d29yZF90eSkgYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKSktPmFyZzsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXlzLCBpIC0gYmVnaW4sIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBrZXlzLCBjb25zdHMpOworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0NPTlNUX0tFWV9NQVAsIG4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogYSBmb3IgbG9vcCBvbmx5IGV4ZWN1dGVzIG9uY2UgKi8KKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrdy0+YXJnLCBjb25zdHMpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCiAvKiBzaGFyZWQgY29kZSBiZXR3ZWVuIGNvbXBpbGVyX2NhbGwgYW5kIGNvbXBpbGVyX2NsYXNzICovCiBzdGF0aWMgaW50CiBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG4sIC8qIEFyZ3MgYWxyZWFkeSBwdXNoZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgIGludCBuLCAvKiBBcmdzIGFscmVhZHkgcHVzaGVkICovCiAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3JkcykKIHsKLSAgICBpbnQgY29kZSA9IDA7Ci0gICAgUHlfc3NpemVfdCBuZWx0cywgaSwgbnNlZW4sIG5rdzsKKyAgICBQeV9zc2l6ZV90IGksIG5zZWVuLCBuZWx0cywgbmt3ZWx0czsKKyAgICBpbnQgbXVzdGRpY3R1bnBhY2sgPSAwOwogCiAgICAgLyogdGhlIG51bWJlciBvZiB0dXBsZXMgYW5kIGRpY3Rpb25hcmllcyBvbiB0aGUgc3RhY2sgKi8KICAgICBQeV9zc2l6ZV90IG5zdWJhcmdzID0gMCwgbnN1Ymt3YXJncyA9IDA7CiAKLSAgICBua3cgPSAwOwotICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgb24gdGhlIHN0YWNrICovCiAgICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oYXJncyk7CisgICAgbmt3ZWx0cyA9IGFzZGxfc2VxX0xFTihrZXl3b3Jkcyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmt3ZWx0czsgaSsrKSB7CisgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBtdXN0ZGljdHVucGFjayA9IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIG5zZWVuID0gbjsgIC8qIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgb24gdGhlIHN0YWNrICovCiAgICAgZm9yIChpID0gMDsgaSA8IG5lbHRzOyBpKyspIHsKICAgICAgICAgZXhwcl90eSBlbHQgPSBhc2RsX3NlcV9HRVQoYXJncywgaSk7CiAgICAgICAgIGlmIChlbHQtPmtpbmQgPT0gU3RhcnJlZF9raW5kKSB7CiAgICAgICAgICAgICAvKiBBIHN0YXItYXJnLiBJZiB3ZSd2ZSBzZWVuIHBvc2l0aW9uYWwgYXJndW1lbnRzLAotICAgICAgICAgICAgICAgcGFjayB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBhCi0gICAgICAgICAgICAgICB0dXBsZS4gKi8KKyAgICAgICAgICAgICAgIHBhY2sgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gYSB0dXBsZS4gKi8KICAgICAgICAgICAgIGlmIChuc2VlbikgewogICAgICAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKICAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CkBAIC0zMjAzLDkyICszNTMzLDc4IEBACiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQtPnYuU3RhcnJlZC52YWx1ZSk7CiAgICAgICAgICAgICBuc3ViYXJncysrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzKSB7Ci0gICAgICAgICAgICAvKiBXZSd2ZSBzZWVuIHN0YXItYXJncyBhbHJlYWR5LCBzbyB3ZQotICAgICAgICAgICAgICAgY291bnQgdG93YXJkcyBpdGVtcy10by1wYWNrLWludG8tdHVwbGUuICovCisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKICAgICAgICAgICAgIG5zZWVuKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBiZWZvcmUgc3Rhci1hcmd1bWVudHMKLSAgICAgICAgICAgICAgIGFyZSBsZWZ0IG9uIHRoZSBzdGFjay4gKi8KLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7Ci0gICAgICAgICAgICBuKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5zZWVuKSB7Ci0gICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAqLwotICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7Ci0gICAgICAgIG5zdWJhcmdzKys7Ci0gICAgfQotICAgIGlmIChuc3ViYXJncykgewotICAgICAgICBjb2RlIHw9IDE7Ci0gICAgICAgIGlmIChuc3ViYXJncyA+IDEpIHsKLSAgICAgICAgICAgIC8qIElmIHdlIGVuZGVkIHVwIHdpdGggbW9yZSB0aGFuIG9uZSBzdGFyYXJnLCB3ZSBuZWVkCi0gICAgICAgICAgICAgICB0byBjb25jYXRlbmF0ZSB0aGVtIGludG8gYSBzaW5nbGUgc2VxdWVuY2UuICovCi0gICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0xJU1RfVU5QQUNLLCBuc3ViYXJncyk7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBTYW1lIGRhbmNlIGFnYWluIGZvciBrZXl3b3JkIGFyZ3VtZW50cyAqLwotICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2Yga2V5d29yZCBhcmd1bWVudHMgb24gdGhlIHN0YWNrIGZvbGxvd2luZyAqLwotICAgIG5lbHRzID0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdHM7IGkrKykgewotICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKLSAgICAgICAgaWYgKGt3LT5hcmcgPT0gTlVMTCkgewotICAgICAgICAgICAgLyogQSBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZy4gKi8KLSAgICAgICAgICAgIGlmIChuc2VlbikgewotICAgICAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuc2Vlbik7Ci0gICAgICAgICAgICAgICAgbnNlZW4gPSAwOworICAgIGlmIChuc3ViYXJncyB8fCBtdXN0ZGljdHVucGFjaykgeworICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAqLworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOworICAgICAgICAgICAgbnN1YmFyZ3MrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAobnN1YmFyZ3MgPiAxKSB7CisgICAgICAgICAgICAvKiBJZiB3ZSBlbmRlZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgc3RhcmFyZywgd2UgbmVlZAorICAgICAgICAgICAgICAgdG8gY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEgc2luZ2xlIHNlcXVlbmNlLiAqLworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLCBuc3ViYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobnN1YmFyZ3MgPT0gMCkgeworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgMCk7CisgICAgICAgIH0KKyAgICAgICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgaWYgKGt3LT5hcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmcuICovCisgICAgICAgICAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3Via3dhcmdzKGMsIGtleXdvcmRzLCBpIC0gbnNlZW4sIGkpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKKyAgICAgICAgICAgICAgICAgICAgbnNlZW4gPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOwogICAgICAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBuc2VlbisrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcga2V5d29yZCBhcmd1bWVudHMuICovCisgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3N1Ymt3YXJncyhjLCBrZXl3b3Jkcywgbmt3ZWx0cyAtIG5zZWVuLCBua3dlbHRzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIG5zdWJrd2FyZ3MrKzsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuc3Via3dhcmdzKSB7Ci0gICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgYW5kIHdlIGFscmVhZHkgaGF2ZSBhIGRpY3QuICovCi0gICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOwotICAgICAgICAgICAgbnNlZW4rKzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIGtleXdvcmQgYXJndW1lbnQgKi8KLSAgICAgICAgICAgIFZJU0lUKGMsIGtleXdvcmQsIGt3KQotICAgICAgICAgICAgbmt3Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG5zZWVuKSB7Ci0gICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLwotICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOwotICAgICAgICBuc3Via3dhcmdzKys7Ci0gICAgfQotICAgIGlmIChuc3Via3dhcmdzKSB7Ci0gICAgICAgIGNvZGUgfD0gMjsKICAgICAgICAgaWYgKG5zdWJrd2FyZ3MgPiAxKSB7CiAgICAgICAgICAgICAvKiBQYWNrIGl0IGFsbCB1cCAqLwotICAgICAgICAgICAgaW50IGZ1bmN0aW9uX3BvcyA9IG4gKyAoY29kZSAmIDEpICsgMiAqIG5rdyArIDE7Ci0gICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMLCBuc3Via3dhcmdzIHwgKGZ1bmN0aW9uX3BvcyA8PCA4KSk7CisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMLCBuc3Via3dhcmdzKTsKICAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fRVgsIG5zdWJrd2FyZ3MgPiAwKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGFzc2VydChuIDwgMTw8OCk7Ci0gICAgYXNzZXJ0KG5rdyA8IDE8PDI0KTsKLSAgICBuIHw9IG5rdyA8PCA4OwotCi0gICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIG4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDE6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9WQVIsIG4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9LVywgbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMzoKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX1ZBUl9LVywgbik7Ci0gICAgICAgIGJyZWFrOworICAgIGVsc2UgaWYgKG5rd2VsdHMpIHsKKyAgICAgICAgUHlPYmplY3QgKm5hbWVzOworICAgICAgICBWSVNJVF9TRVEoYywga2V5d29yZCwga2V5d29yZHMpOworICAgICAgICBuYW1lcyA9IFB5VHVwbGVfTmV3KG5rd2VsdHMpOworICAgICAgICBpZiAobmFtZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5rd2VsdHM7IGkrKykgeworICAgICAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa3ctPmFyZyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5hbWVzLCBpLCBrdy0+YXJnKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIG5hbWVzLCBjb25zdHMpOworICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fS1csIG4gKyBuZWx0cyArIG5rd2VsdHMpOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgcmV0dXJuIDE7CisgICAgZWxzZSB7CisgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgbiArIG5lbHRzKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQogfQogCiAKQEAgLTMzMDcsMTEgKzM2MjMsMjggQEAKICAgICAtIGl0ZXJhdGUgb3ZlciB0aGUgZ2VuZXJhdG9yIHNlcXVlbmNlIGluc3RlYWQgb2YgdXNpbmcgcmVjdXJzaW9uCiAqLwogCisKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKHN0cnVjdCBjb21waWxlciAqYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSkKIHsKKyAgICBjb21wcmVoZW5zaW9uX3R5IGdlbjsKKyAgICBnZW4gPSAoY29tcHJlaGVuc2lvbl90eSlhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgZ2VuX2luZGV4KTsKKyAgICBpZiAoZ2VuLT5pc19hc3luYykgeworICAgICAgICByZXR1cm4gY29tcGlsZXJfYXN5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICBjLCBnZW5lcmF0b3JzLCBnZW5faW5kZXgsIGVsdCwgdmFsLCB0eXBlKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gY29tcGlsZXJfc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgIGMsIGdlbmVyYXRvcnMsIGdlbl9pbmRleCwgZWx0LCB2YWwsIHR5cGUpOworICAgIH0KK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKQorewogICAgIC8qIGdlbmVyYXRlIGNvZGUgZm9yIHRoZSBpdGVyYXRvciwgdGhlbiBlYWNoIG9mIHRoZSBpZnMsCiAgICAgICAgYW5kIHRoZW4gd3JpdGUgdG8gdGhlIGVsZW1lbnQgKi8KIApAQCAtMzM5OCwyMCArMzczMSwxNjcgQEAKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfYXN5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3Ioc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSkKK3sKKyAgICBfUHlfSURFTlRJRklFUihTdG9wQXN5bmNJdGVyYXRpb24pOworCisgICAgY29tcHJlaGVuc2lvbl90eSBnZW47CisgICAgYmFzaWNibG9jayAqYW5jaG9yLCAqc2tpcCwgKmlmX2NsZWFudXAsICp0cnksCisgICAgICAgICAgICAgICAqYWZ0ZXJfdHJ5LCAqZXhjZXB0LCAqdHJ5X2NsZWFudXA7CisgICAgUHlfc3NpemVfdCBpLCBuOworCisgICAgUHlPYmplY3QgKnN0b3BfYWl0ZXJfZXJyb3IgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9TdG9wQXN5bmNJdGVyYXRpb24pOworICAgIGlmIChzdG9wX2FpdGVyX2Vycm9yID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdHJ5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGFmdGVyX3RyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICB0cnlfY2xlYW51cCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBleGNlcHQgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgc2tpcCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBpZl9jbGVhbnVwID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGFuY2hvciA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKworICAgIGlmIChza2lwID09IE5VTEwgfHwgaWZfY2xlYW51cCA9PSBOVUxMIHx8IGFuY2hvciA9PSBOVUxMIHx8CisgICAgICAgICAgICB0cnkgPT0gTlVMTCB8fCBhZnRlcl90cnkgPT0gTlVMTCB8fAorICAgICAgICAgICAgZXhjZXB0ID09IE5VTEwgfHwgYWZ0ZXJfdHJ5ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZ2VuID0gKGNvbXByZWhlbnNpb25fdHkpYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIGdlbl9pbmRleCk7CisKKyAgICBpZiAoZ2VuX2luZGV4ID09IDApIHsKKyAgICAgICAgLyogUmVjZWl2ZSBvdXRlcm1vc3QgaXRlciBhcyBhbiBpbXBsaWNpdCBhcmd1bWVudCAqLworICAgICAgICBjLT51LT51X2FyZ2NvdW50ID0gMTsKKyAgICAgICAgQURET1BfSShjLCBMT0FEX0ZBU1QsIDApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogU3ViLWl0ZXIgLSBjYWxjdWxhdGUgb24gdGhlIGZseSAqLworICAgICAgICBWSVNJVChjLCBleHByLCBnZW4tPml0ZXIpOworICAgICAgICBBRERPUChjLCBHRVRfQUlURVIpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIH0KKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeSk7CisKKworICAgIEFERE9QX0pSRUwoYywgU0VUVVBfRVhDRVBULCBleGNlcHQpOworICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRVhDRVBULCB0cnkpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFERE9QKGMsIEdFVF9BTkVYVCk7CisgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIFZJU0lUKGMsIGV4cHIsIGdlbi0+dGFyZ2V0KTsKKyAgICBBRERPUChjLCBQT1BfQkxPQ0spOworICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRVhDRVBULCB0cnkpOworICAgIEFERE9QX0pSRUwoYywgSlVNUF9GT1JXQVJELCBhZnRlcl90cnkpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOworICAgIEFERE9QKGMsIERVUF9UT1ApOworICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BfYWl0ZXJfZXJyb3IsIG5hbWVzKTsKKyAgICBBRERPUF9JKGMsIENPTVBBUkVfT1AsIFB5Q21wX0VYQ19NQVRDSCk7CisgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgdHJ5X2NsZWFudXApOworCisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgQURET1AoYywgUE9QX0VYQ0VQVCk7IC8qIGZvciBTRVRVUF9FWENFUFQgKi8KKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIGFuY2hvcik7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHRyeV9jbGVhbnVwKTsKKyAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhZnRlcl90cnkpOworCisgICAgbiA9IGFzZGxfc2VxX0xFTihnZW4tPmlmcyk7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBleHByX3R5IGUgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZ2VuLT5pZnMsIGkpOworICAgICAgICBWSVNJVChjLCBleHByLCBlKTsKKyAgICAgICAgQURET1BfSkFCUyhjLCBQT1BfSlVNUF9JRl9GQUxTRSwgaWZfY2xlYW51cCk7CisgICAgICAgIE5FWFRfQkxPQ0soYyk7CisgICAgfQorCisgICAgaWYgKCsrZ2VuX2luZGV4IDwgYXNkbF9zZXFfTEVOKGdlbmVyYXRvcnMpKQorICAgICAgICBpZiAoIWNvbXBpbGVyX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycywgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsdCwgdmFsLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBvbmx5IGFwcGVuZCBhZnRlciB0aGUgbGFzdCBmb3IgZ2VuZXJhdG9yICovCisgICAgaWYgKGdlbl9pbmRleCA+PSBhc2RsX3NlcV9MRU4oZ2VuZXJhdG9ycykpIHsKKyAgICAgICAgLyogY29tcHJlaGVuc2lvbiBzcGVjaWZpYyBjb2RlICovCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENPTVBfR0VORVhQOgorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QKGMsIFlJRUxEX1ZBTFVFKTsKKyAgICAgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ09NUF9MSVNUQ09NUDoKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUF9JKGMsIExJU1RfQVBQRU5ELCBnZW5faW5kZXggKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfU0VUQ09NUDoKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUF9JKGMsIFNFVF9BREQsIGdlbl9pbmRleCArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ09NUF9ESUNUQ09NUDoKKyAgICAgICAgICAgIC8qIFdpdGggJ2Rba10gPSB2JywgdiBpcyBldmFsdWF0ZWQgYmVmb3JlIGssIHNvIHdlIGRvCisgICAgICAgICAgICAgICB0aGUgc2FtZS4gKi8KKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHZhbCk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBNQVBfQURELCBnZW5faW5kZXggKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBza2lwKTsKKyAgICB9CisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgaWZfY2xlYW51cCk7CisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCB0cnkpOworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGFuY2hvcik7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfY29tcHJlaGVuc2lvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSwgaW50IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGV4cHJfdHkgZWx0LAogICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbCkKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKLSAgICBleHByX3R5IG91dGVybW9zdF9pdGVyOworICAgIGNvbXByZWhlbnNpb25fdHkgb3V0ZXJtb3N0OwogICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IE5VTEw7CisgICAgaW50IGlzX2FzeW5jX2Z1bmN0aW9uID0gYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmU7CisgICAgaW50IGlzX2FzeW5jX2dlbmVyYXRvciA9IDA7CiAKLSAgICBvdXRlcm1vc3RfaXRlciA9ICgoY29tcHJlaGVuc2lvbl90eSkKLSAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgMCkpLT5pdGVyOworICAgIG91dGVybW9zdCA9IChjb21wcmVoZW5zaW9uX3R5KSBhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgMCk7CiAKICAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWUsIGUtPmxpbmVubykpCisgICAgewogICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlzX2FzeW5jX2dlbmVyYXRvciA9IGMtPnUtPnVfc3RlLT5zdGVfY29yb3V0aW5lOworCisgICAgaWYgKGlzX2FzeW5jX2dlbmVyYXRvciAmJiAhaXNfYXN5bmNfZnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKGUtPmxpbmVubyA+IGMtPnUtPnVfbGluZW5vKSB7CisgICAgICAgICAgICBjLT51LT51X2xpbmVubyA9IGUtPmxpbmVubzsKKyAgICAgICAgICAgIGMtPnUtPnVfbGluZW5vX3NldCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY29tcGlsZXJfZXJyb3IoYywgImFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9uIG91dHNpZGUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIik7CisgICAgICAgIGdvdG8gZXJyb3JfaW5fc2NvcGU7CisgICAgfQogCiAgICAgaWYgKHR5cGUgIT0gQ09NUF9HRU5FWFApIHsKICAgICAgICAgaW50IG9wOwpAQCAtMzQ1NCw5ICszOTM0LDI0IEBACiAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCi0gICAgVklTSVQoYywgZXhwciwgb3V0ZXJtb3N0X2l0ZXIpOwotICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICBWSVNJVChjLCBleHByLCBvdXRlcm1vc3QtPml0ZXIpOworCisgICAgaWYgKG91dGVybW9zdC0+aXNfYXN5bmMpIHsKKyAgICAgICAgQURET1AoYywgR0VUX0FJVEVSKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICB9IGVsc2UgeworICAgICAgICBBRERPUChjLCBHRVRfSVRFUik7CisgICAgfQorCiAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCAxKTsKKworICAgIGlmIChpc19hc3luY19nZW5lcmF0b3IgJiYgdHlwZSAhPSBDT01QX0dFTkVYUCkgeworICAgICAgICBBRERPUChjLCBHRVRfQVdBSVRBQkxFKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICB9CisKICAgICByZXR1cm4gMTsKIGVycm9yX2luX3Njb3BlOgogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CkBAIC0zNTMxLDcgKzQwMjYsNiBAQAogc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfa2V5d29yZChzdHJ1Y3QgY29tcGlsZXIgKmMsIGtleXdvcmRfdHkgaykKIHsKLSAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGstPmFyZywgY29uc3RzKTsKICAgICBWSVNJVChjLCBleHByLCBrLT52YWx1ZSk7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0zNTQ5LDYgKzQwNDMsOCBAQAogICAgIHN3aXRjaCAoZS0+a2luZCkgewogICAgIGNhc2UgRWxsaXBzaXNfa2luZDoKICAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gUHlPYmplY3RfSXNUcnVlKGUtPnYuQ29uc3RhbnQudmFsdWUpOwogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgICAgIHJldHVybiBQeU9iamVjdF9Jc1RydWUoZS0+di5OdW0ubik7CiAgICAgY2FzZSBTdHJfa2luZDoKQEAgLTM1OTIsOSArNDA4OCw5IEBACiAgICAgICAgQkxPQ0sKICAgIGZpbmFsbHk6CiAgICAgICAgaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQ6Ci0gICAgICAgZXhjID0gY29weSBvZiAoZXhjZXB0aW9uLCBpbnN0YW5jZSwgdHJhY2ViYWNrKQorICAgICAgICAgICBleGMgPSBjb3B5IG9mIChleGNlcHRpb24sIGluc3RhbmNlLCB0cmFjZWJhY2spCiAgICAgICAgZWxzZToKLSAgICAgICBleGMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgICAgZXhjID0gKE5vbmUsIE5vbmUsIE5vbmUpCiAgICAgICAgaWYgbm90IChhd2FpdCBleGl0KCpleGMpKToKICAgICAgICAgICAgcmFpc2UKICAqLwpAQCAtMzc5NCw4ICs0MjkwLDYgQEAKICAgICBjYXNlIFlpZWxkX2tpbmQ6CiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBvdXRzaWRlIGZ1bmN0aW9uIik7Ci0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCi0gICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik7CiAgICAgICAgIGlmIChlLT52LllpZWxkLnZhbHVlKSB7CiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LllpZWxkLnZhbHVlKTsKICAgICAgICAgfQpAQCAtMzgyMCwxMSArNDMxNCw4IEBACiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ2F3YWl0JyBvdXRzaWRlIGZ1bmN0aW9uIik7CiAKLSAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKAotICAgICAgICAgICAgICAgIGMsICInYXdhaXQnIGV4cHJlc3Npb25zIGluIGNvbXByZWhlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIik7Ci0KLSAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKKyAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTiAmJgorICAgICAgICAgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKIAogICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKQEAgLTM4MzYsMTIgKzQzMjcsMTkgQEAKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NvbXBhcmUoYywgZSk7CiAgICAgY2FzZSBDYWxsX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9jYWxsKGMsIGUpOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52LkNvbnN0YW50LnZhbHVlLCBjb25zdHMpOworICAgICAgICBicmVhazsKICAgICBjYXNlIE51bV9raW5kOgogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuTnVtLm4sIGNvbnN0cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5TdHIucywgY29uc3RzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2pvaW5lZF9zdHIoYywgZSk7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfZm9ybWF0dGVkX3ZhbHVlKGMsIGUpOwogICAgIGNhc2UgQnl0ZXNfa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52LkJ5dGVzLnMsIGNvbnN0cyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzk3Niw2ICs0NDc0LDE0NCBAQAogfQogCiBzdGF0aWMgaW50CitjaGVja19hbm5fZXhwcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBWSVNJVChjLCBleHByLCBlKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY2hlY2tfYW5ub3RhdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK3sKKyAgICAvKiBBbm5vdGF0aW9ucyBhcmUgb25seSBldmFsdWF0ZWQgaW4gYSBtb2R1bGUgb3IgY2xhc3MuICovCisgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUgfHwKKyAgICAgICAgYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NMQVNTKSB7CisgICAgICAgIHJldHVybiBjaGVja19hbm5fZXhwcihjLCBzLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubl9zbGljZShzdHJ1Y3QgY29tcGlsZXIgKmMsIHNsaWNlX3R5IHNsKQoreworICAgIHN3aXRjaChzbC0+a2luZCkgeworICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICAgICAgcmV0dXJuIGNoZWNrX2Fubl9leHByKGMsIHNsLT52LkluZGV4LnZhbHVlKTsKKyAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgIGlmIChzbC0+di5TbGljZS5sb3dlciAmJiAhY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuU2xpY2UubG93ZXIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2wtPnYuU2xpY2UudXBwZXIgJiYgIWNoZWNrX2Fubl9leHByKGMsIHNsLT52LlNsaWNlLnVwcGVyKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNsLT52LlNsaWNlLnN0ZXAgJiYgIWNoZWNrX2Fubl9leHByKGMsIHNsLT52LlNsaWNlLnN0ZXApKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBzbGljZSBraW5kIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY2hlY2tfYW5uX3N1YnNjcihzdHJ1Y3QgY29tcGlsZXIgKmMsIHNsaWNlX3R5IHNsKQoreworICAgIC8qIFdlIGNoZWNrIHRoYXQgZXZlcnl0aGluZyBpbiBhIHN1YnNjcmlwdCBpcyBkZWZpbmVkIGF0IHJ1bnRpbWUuICovCisgICAgUHlfc3NpemVfdCBpLCBuOworCisgICAgc3dpdGNoIChzbC0+a2luZCkgeworICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgIGlmICghY2hlY2tfYW5uX3NsaWNlKGMsIHNsKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFeHRTbGljZV9raW5kOgorICAgICAgICBuID0gYXNkbF9zZXFfTEVOKHNsLT52LkV4dFNsaWNlLmRpbXMpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBzbGljZV90eSBzdWJzbCA9IChzbGljZV90eSlhc2RsX3NlcV9HRVQoc2wtPnYuRXh0U2xpY2UuZGltcywgaSk7CisgICAgICAgICAgICBzd2l0Y2ggKHN1YnNsLT5raW5kKSB7CisgICAgICAgICAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgICAgICAgICBjYXNlIFNsaWNlX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKCFjaGVja19hbm5fc2xpY2UoYywgc3Vic2wpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXh0U2xpY2Vfa2luZDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0ZW5kZWQgc2xpY2UgaW52YWxpZCBpbiBuZXN0ZWQgc2xpY2UiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBzdWJzY3JpcHQga2luZCAlZCIsIHNsLT5raW5kKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9hbm5hc3NpZ24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCit7CisgICAgZXhwcl90eSB0YXJnID0gcy0+di5Bbm5Bc3NpZ24udGFyZ2V0OworICAgIFB5T2JqZWN0KiBtYW5nbGVkOworCisgICAgYXNzZXJ0KHMtPmtpbmQgPT0gQW5uQXNzaWduX2tpbmQpOworCisgICAgLyogV2UgcGVyZm9ybSB0aGUgYWN0dWFsIGFzc2lnbm1lbnQgZmlyc3QuICovCisgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlKSB7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgVklTSVQoYywgZXhwciwgdGFyZyk7CisgICAgfQorICAgIHN3aXRjaCAodGFyZy0+a2luZCkgeworICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICAvKiBJZiB3ZSBoYXZlIGEgc2ltcGxlIG5hbWUgaW4gYSBtb2R1bGUgb3IgY2xhc3MsIHN0b3JlIGFubm90YXRpb24uICovCisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYKKyAgICAgICAgICAgIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFIHx8CisgICAgICAgICAgICAgYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NMQVNTKSkgeworICAgICAgICAgICAgbWFuZ2xlZCA9IF9QeV9NYW5nbGUoYy0+dS0+dV9wcml2YXRlLCB0YXJnLT52Lk5hbWUuaWQpOworICAgICAgICAgICAgaWYgKCFtYW5nbGVkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgICAgIC8qIEFERE9QX04gZGVjcmVmcyBpdHMgYXJndW1lbnQgKi8KKyAgICAgICAgICAgIEFERE9QX04oYywgU1RPUkVfQU5OT1RBVElPTiwgbWFuZ2xlZCwgbmFtZXMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgIGlmICghcy0+di5Bbm5Bc3NpZ24udmFsdWUgJiYKKyAgICAgICAgICAgICFjaGVja19hbm5fZXhwcihjLCB0YXJnLT52LkF0dHJpYnV0ZS52YWx1ZSkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CisgICAgICAgIGlmICghcy0+di5Bbm5Bc3NpZ24udmFsdWUgJiYKKyAgICAgICAgICAgICghY2hlY2tfYW5uX2V4cHIoYywgdGFyZy0+di5TdWJzY3JpcHQudmFsdWUpIHx8CisgICAgICAgICAgICAgIWNoZWNrX2Fubl9zdWJzY3IoYywgdGFyZy0+di5TdWJzY3JpcHQuc2xpY2UpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG5vZGUgdHlwZSAoJWQpIGZvciBhbm5vdGF0ZWQgYXNzaWdubWVudCIsCisgICAgICAgICAgICAgICAgICAgICB0YXJnLT5raW5kKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAvKiBBbm5vdGF0aW9uIGlzIGV2YWx1YXRlZCBsYXN0LiAqLworICAgIGlmICghcy0+di5Bbm5Bc3NpZ24uc2ltcGxlICYmICFjaGVja19hbm5vdGF0aW9uKGMsIHMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfcHVzaF9mYmxvY2soc3RydWN0IGNvbXBpbGVyICpjLCBlbnVtIGZibG9ja3R5cGUgdCwgYmFzaWNibG9jayAqYikKIHsKICAgICBzdHJ1Y3QgZmJsb2NraW5mbyAqZjsKQEAgLTQyNzMsNyArNDkwOSw3IEBACiAgICAgYS0+YV9sbm90YWIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIERFRkFVTFRfTE5PVEFCX1NJWkUpOwogICAgIGlmICghYS0+YV9sbm90YWIpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmICgoc2l6ZV90KW5ibG9ja3MgPiBQWV9TSVpFX01BWCAvIHNpemVvZihiYXNpY2Jsb2NrICopKSB7CisgICAgaWYgKChzaXplX3QpbmJsb2NrcyA+IFNJWkVfTUFYIC8gc2l6ZW9mKGJhc2ljYmxvY2sgKikpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtNDI5NSwxOCArNDkzMSw2IEBACiAgICAgICAgIFB5T2JqZWN0X0ZyZWUoYS0+YV9wb3N0b3JkZXIpOwogfQogCi0vKiBSZXR1cm4gdGhlIHNpemUgb2YgYSBiYXNpYyBibG9jayBpbiBieXRlcy4gKi8KLQotc3RhdGljIGludAotaW5zdHJzaXplKHN0cnVjdCBpbnN0ciAqaW5zdHIpCi17Ci0gICAgaWYgKCFpbnN0ci0+aV9oYXNhcmcpCi0gICAgICAgIHJldHVybiAxOyAgICAgICAgICAgICAgIC8qIDEgYnl0ZSBmb3IgdGhlIG9wY29kZSovCi0gICAgaWYgKGluc3RyLT5pX29wYXJnID4gMHhmZmZmKQotICAgICAgICByZXR1cm4gNjsgICAgICAgICAgICAgICAvKiAxIChvcGNvZGUpICsgMSAoRVhURU5ERURfQVJHIG9wY29kZSkgKyAyIChvcGFyZykgKyAyKG9wYXJnIGV4dGVuZGVkKSAqLwotICAgIHJldHVybiAzOyAgICAgICAgICAgICAgICAgICAvKiAxIChvcGNvZGUpICsgMiAob3BhcmcpICovCi19Ci0KIHN0YXRpYyBpbnQKIGJsb2Nrc2l6ZShiYXNpY2Jsb2NrICpiKQogewpAQCAtNDMxNCw3ICs0OTM4LDcgQEAKICAgICBpbnQgc2l6ZSA9IDA7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgYi0+Yl9pdXNlZDsgaSsrKQotICAgICAgICBzaXplICs9IGluc3Ryc2l6ZSgmYi0+Yl9pbnN0cltpXSk7CisgICAgICAgIHNpemUgKz0gaW5zdHJzaXplKGItPmJfaW5zdHJbaV0uaV9vcGFyZyk7CiAgICAgcmV0dXJuIHNpemU7CiB9CiAKQEAgLTQzMjksMTEgKzQ5NTMsMTAgQEAKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICB1bnNpZ25lZCBjaGFyICpsbm90YWI7CiAKLSAgICBkX2J5dGVjb2RlID0gYS0+YV9vZmZzZXQgLSBhLT5hX2xpbmVub19vZmY7CisgICAgZF9ieXRlY29kZSA9IChhLT5hX29mZnNldCAtIGEtPmFfbGluZW5vX29mZikgKiBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICBkX2xpbmVubyA9IGktPmlfbGluZW5vIC0gYS0+YV9saW5lbm87CiAKICAgICBhc3NlcnQoZF9ieXRlY29kZSA+PSAwKTsKLSAgICBhc3NlcnQoZF9saW5lbm8gPj0gMCk7CiAKICAgICBpZihkX2J5dGVjb2RlID09IDAgJiYgZF9saW5lbm8gPT0gMCkKICAgICAgICAgcmV0dXJuIDE7CkBAIC00MzYzLDkgKzQ5ODYsMjEgQEAKICAgICAgICAgZF9ieXRlY29kZSAtPSBuY29kZXMgKiAyNTU7CiAgICAgICAgIGEtPmFfbG5vdGFiX29mZiArPSBuY29kZXMgKiAyOwogICAgIH0KLSAgICBhc3NlcnQoZF9ieXRlY29kZSA8PSAyNTUpOwotICAgIGlmIChkX2xpbmVubyA+IDI1NSkgewotICAgICAgICBpbnQgaiwgbmJ5dGVzLCBuY29kZXMgPSBkX2xpbmVubyAvIDI1NTsKKyAgICBhc3NlcnQoMCA8PSBkX2J5dGVjb2RlICYmIGRfYnl0ZWNvZGUgPD0gMjU1KTsKKworICAgIGlmIChkX2xpbmVubyA8IC0xMjggfHwgMTI3IDwgZF9saW5lbm8pIHsKKyAgICAgICAgaW50IGosIG5ieXRlcywgbmNvZGVzLCBrOworICAgICAgICBpZiAoZF9saW5lbm8gPCAwKSB7CisgICAgICAgICAgICBrID0gLTEyODsKKyAgICAgICAgICAgIC8qIHVzZSBkaXZpc2lvbiBvbiBwb3NpdGl2ZSBudW1iZXJzICovCisgICAgICAgICAgICBuY29kZXMgPSAoLWRfbGluZW5vKSAvIDEyODsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGsgPSAxMjc7CisgICAgICAgICAgICBuY29kZXMgPSBkX2xpbmVubyAvIDEyNzsKKyAgICAgICAgfQorICAgICAgICBkX2xpbmVubyAtPSBuY29kZXMgKiBrOworICAgICAgICBhc3NlcnQobmNvZGVzID49IDEpOwogICAgICAgICBuYnl0ZXMgPSBhLT5hX2xub3RhYl9vZmYgKyAyICogbmNvZGVzOwogICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGEtPmFfbG5vdGFiKTsKICAgICAgICAgaWYgKG5ieXRlcyA+PSBsZW4pIHsKQEAgLTQzODMsMTUgKzUwMTgsMTUgQEAKICAgICAgICAgbG5vdGFiID0gKHVuc2lnbmVkIGNoYXIgKikKICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhhLT5hX2xub3RhYikgKyBhLT5hX2xub3RhYl9vZmY7CiAgICAgICAgICpsbm90YWIrKyA9IGRfYnl0ZWNvZGU7Ci0gICAgICAgICpsbm90YWIrKyA9IDI1NTsKKyAgICAgICAgKmxub3RhYisrID0gazsKICAgICAgICAgZF9ieXRlY29kZSA9IDA7CiAgICAgICAgIGZvciAoaiA9IDE7IGogPCBuY29kZXM7IGorKykgewogICAgICAgICAgICAgKmxub3RhYisrID0gMDsKLSAgICAgICAgICAgICpsbm90YWIrKyA9IDI1NTsKKyAgICAgICAgICAgICpsbm90YWIrKyA9IGs7CiAgICAgICAgIH0KLSAgICAgICAgZF9saW5lbm8gLT0gbmNvZGVzICogMjU1OwogICAgICAgICBhLT5hX2xub3RhYl9vZmYgKz0gbmNvZGVzICogMjsKICAgICB9CisgICAgYXNzZXJ0KC0xMjggPD0gZF9saW5lbm8gJiYgZF9saW5lbm8gPD0gMTI3KTsKIAogICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoYS0+YV9sbm90YWIpOwogICAgIGlmIChhLT5hX2xub3RhYl9vZmYgKyAyID49IGxlbikgewpAQCAtNDQyMywzOCArNTA1OCwyMyBAQAogc3RhdGljIGludAogYXNzZW1ibGVfZW1pdChzdHJ1Y3QgYXNzZW1ibGVyICphLCBzdHJ1Y3QgaW5zdHIgKmkpCiB7Ci0gICAgaW50IHNpemUsIGFyZyA9IDAsIGV4dCA9IDA7CisgICAgaW50IHNpemUsIGFyZyA9IDA7CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGEtPmFfYnl0ZWNvZGUpOwotICAgIGNoYXIgKmNvZGU7CisgICAgX1B5X0NPREVVTklUICpjb2RlOwogCi0gICAgc2l6ZSA9IGluc3Ryc2l6ZShpKTsKLSAgICBpZiAoaS0+aV9oYXNhcmcpIHsKLSAgICAgICAgYXJnID0gaS0+aV9vcGFyZzsKLSAgICAgICAgZXh0ID0gYXJnID4+IDE2OwotICAgIH0KKyAgICBhcmcgPSBpLT5pX29wYXJnOworICAgIHNpemUgPSBpbnN0cnNpemUoYXJnKTsKICAgICBpZiAoaS0+aV9saW5lbm8gJiYgIWFzc2VtYmxlX2xub3RhYihhLCBpKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKGEtPmFfb2Zmc2V0ICsgc2l6ZSA+PSBsZW4pIHsKKyAgICBpZiAoYS0+YV9vZmZzZXQgKyBzaXplID49IGxlbiAvIChpbnQpc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMikKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLT5hX2J5dGVjb2RlLCBsZW4gKiAyKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgY29kZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGEtPmFfYnl0ZWNvZGUpICsgYS0+YV9vZmZzZXQ7CisgICAgY29kZSA9IChfUHlfQ09ERVVOSVQgKilQeUJ5dGVzX0FTX1NUUklORyhhLT5hX2J5dGVjb2RlKSArIGEtPmFfb2Zmc2V0OwogICAgIGEtPmFfb2Zmc2V0ICs9IHNpemU7Ci0gICAgaWYgKHNpemUgPT0gNikgewotICAgICAgICBhc3NlcnQoaS0+aV9oYXNhcmcpOwotICAgICAgICAqY29kZSsrID0gKGNoYXIpRVhURU5ERURfQVJHOwotICAgICAgICAqY29kZSsrID0gZXh0ICYgMHhmZjsKLSAgICAgICAgKmNvZGUrKyA9IGV4dCA+PiA4OwotICAgICAgICBhcmcgJj0gMHhmZmZmOwotICAgIH0KLSAgICAqY29kZSsrID0gaS0+aV9vcGNvZGU7Ci0gICAgaWYgKGktPmlfaGFzYXJnKSB7Ci0gICAgICAgIGFzc2VydChzaXplID09IDMgfHwgc2l6ZSA9PSA2KTsKLSAgICAgICAgKmNvZGUrKyA9IGFyZyAmIDB4ZmY7Ci0gICAgICAgICpjb2RlKysgPSBhcmcgPj4gODsKLSAgICB9CisgICAgd3JpdGVfb3BfYXJnKGNvZGUsIGktPmlfb3Bjb2RlLCBhcmcsIHNpemUpOwogICAgIHJldHVybiAxOwogfQogCkBAIC00NDYyLDcgKzUwODIsNyBAQAogYXNzZW1ibGVfanVtcF9vZmZzZXRzKHN0cnVjdCBhc3NlbWJsZXIgKmEsIHN0cnVjdCBjb21waWxlciAqYykKIHsKICAgICBiYXNpY2Jsb2NrICpiOwotICAgIGludCBic2l6ZSwgdG90c2l6ZSwgZXh0ZW5kZWRfYXJnX2NvdW50ID0gMCwgbGFzdF9leHRlbmRlZF9hcmdfY291bnQ7CisgICAgaW50IGJzaXplLCB0b3RzaXplLCBleHRlbmRlZF9hcmdfcmVjb21waWxlOwogICAgIGludCBpOwogCiAgICAgLyogQ29tcHV0ZSB0aGUgc2l6ZSBvZiBlYWNoIGJsb2NrIGFuZCBmaXh1cCBqdW1wIGFyZ3MuCkBAIC00NDc1LDI3ICs1MDk1LDI3IEBACiAgICAgICAgICAgICBiLT5iX29mZnNldCA9IHRvdHNpemU7CiAgICAgICAgICAgICB0b3RzaXplICs9IGJzaXplOwogICAgICAgICB9Ci0gICAgICAgIGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50ID0gZXh0ZW5kZWRfYXJnX2NvdW50OwotICAgICAgICBleHRlbmRlZF9hcmdfY291bnQgPSAwOworICAgICAgICBleHRlbmRlZF9hcmdfcmVjb21waWxlID0gMDsKICAgICAgICAgZm9yIChiID0gYy0+dS0+dV9ibG9ja3M7IGIgIT0gTlVMTDsgYiA9IGItPmJfbGlzdCkgewogICAgICAgICAgICAgYnNpemUgPSBiLT5iX29mZnNldDsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiLT5iX2l1c2VkOyBpKyspIHsKICAgICAgICAgICAgICAgICBzdHJ1Y3QgaW5zdHIgKmluc3RyID0gJmItPmJfaW5zdHJbaV07CisgICAgICAgICAgICAgICAgaW50IGlzaXplID0gaW5zdHJzaXplKGluc3RyLT5pX29wYXJnKTsKICAgICAgICAgICAgICAgICAvKiBSZWxhdGl2ZSBqdW1wcyBhcmUgY29tcHV0ZWQgcmVsYXRpdmUgdG8KICAgICAgICAgICAgICAgICAgICB0aGUgaW5zdHJ1Y3Rpb24gcG9pbnRlciBhZnRlciBmZXRjaGluZwogICAgICAgICAgICAgICAgICAgIHRoZSBqdW1wIGluc3RydWN0aW9uLgogICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgYnNpemUgKz0gaW5zdHJzaXplKGluc3RyKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfamFicykKKyAgICAgICAgICAgICAgICBic2l6ZSArPSBpc2l6ZTsKKyAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfamFicyB8fCBpbnN0ci0+aV9qcmVsKSB7CiAgICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnID0gaW5zdHItPmlfdGFyZ2V0LT5iX29mZnNldDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpbnN0ci0+aV9qcmVsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBkZWx0YSA9IGluc3RyLT5pX3RhcmdldC0+Yl9vZmZzZXQgLSBic2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgPSBkZWx0YTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2pyZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnIC09IGJzaXplOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdHJzaXplKGluc3RyLT5pX29wYXJnKSAhPSBpc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfb3BhcmcgPiAweGZmZmYpCi0gICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZ19jb3VudCsrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQ1MDUsNyArNTEyNSw3IEBACiAKICAgICAgICAgVGhlIGlzc3VlIGlzIHRoYXQgaW4gdGhlIGZpcnN0IGxvb3AgYmxvY2tzaXplKCkgaXMgY2FsbGVkCiAgICAgICAgIHdoaWNoIGNhbGxzIGluc3Ryc2l6ZSgpIHdoaWNoIHJlcXVpcmVzIGlfb3BhcmcgYmUgc2V0Ci0gICAgICAgIGFwcHJvcHJpYXRlbHkuICAgICAgICAgIFRoZXJlIGlzIGEgYm9vdHN0cmFwIHByb2JsZW0gYmVjYXVzZQorICAgICAgICBhcHByb3ByaWF0ZWx5LiBUaGVyZSBpcyBhIGJvb3RzdHJhcCBwcm9ibGVtIGJlY2F1c2UKICAgICAgICAgaV9vcGFyZyBpcyBjYWxjdWxhdGVkIGluIHRoZSBzZWNvbmQgbG9vcCBhYm92ZS4KIAogICAgICAgICBTbyB3ZSBsb29wIHVudGlsIHdlIHN0b3Agc2VlaW5nIG5ldyBFWFRFTkRFRF9BUkdzLgpAQCAtNDUxMyw3ICs1MTMzLDcgQEAKICAgICAgICAgb25lcyBpbiBqdW1wIGluc3RydWN0aW9ucy4gIFNvIHRoaXMgc2hvdWxkIGNvbnZlcmdlCiAgICAgICAgIGZhaXJseSBxdWlja2x5LgogICAgICovCi0gICAgfSB3aGlsZSAobGFzdF9leHRlbmRlZF9hcmdfY291bnQgIT0gZXh0ZW5kZWRfYXJnX2NvdW50KTsKKyAgICB9IHdoaWxlIChleHRlbmRlZF9hcmdfcmVjb21waWxlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ1NDksOCArNTE2OSwxMiBAQAogICAgICAgICBmbGFncyB8PSBDT19ORVdMT0NBTFMgfCBDT19PUFRJTUlaRUQ7CiAgICAgICAgIGlmIChzdGUtPnN0ZV9uZXN0ZWQpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19ORVNURUQ7Ci0gICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IpCisgICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IgJiYgIXN0ZS0+c3RlX2Nvcm91dGluZSkKICAgICAgICAgICAgIGZsYWdzIHw9IENPX0dFTkVSQVRPUjsKKyAgICAgICAgaWYgKCFzdGUtPnN0ZV9nZW5lcmF0b3IgJiYgc3RlLT5zdGVfY29yb3V0aW5lKQorICAgICAgICAgICAgZmxhZ3MgfD0gQ09fQ09ST1VUSU5FOworICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yICYmIHN0ZS0+c3RlX2Nvcm91dGluZSkKKyAgICAgICAgICAgIGZsYWdzIHw9IENPX0FTWU5DX0dFTkVSQVRPUjsKICAgICAgICAgaWYgKHN0ZS0+c3RlX3ZhcmFyZ3MpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19WQVJBUkdTOwogICAgICAgICBpZiAoc3RlLT5zdGVfdmFya2V5d29yZHMpCkBAIC00NjU5LDkgKzUyODMsOSBAQAogICAgIGNoYXIgYXJnWzEyOF07CiAKICAgICAqYXJnID0gJ1wwJzsKLSAgICBpZiAoaS0+aV9oYXNhcmcpCisgICAgaWYgKEhBU19BUkcoaS0+aV9vcGNvZGUpKSB7CiAgICAgICAgIHNwcmludGYoYXJnLCAiYXJnOiAlZCAiLCBpLT5pX29wYXJnKTsKLQorICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgImxpbmU6ICVkLCBvcGNvZGU6ICVkICVzJXMlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgaS0+aV9saW5lbm8sIGktPmlfb3Bjb2RlLCBhcmcsIGphYnMsIGpyZWwpOwogfQpAQCAtNDcxMSw3ICs1MzM1LDcgQEAKIAogICAgIC8qIFNldCBmaXJzdGxpbmVubyBpZiBpdCB3YXNuJ3QgZXhwbGljaXRseSBzZXQuICovCiAgICAgaWYgKCFjLT51LT51X2ZpcnN0bGluZW5vKSB7Ci0gICAgICAgIGlmIChlbnRyeWJsb2NrICYmIGVudHJ5YmxvY2stPmJfaW5zdHIpCisgICAgICAgIGlmIChlbnRyeWJsb2NrICYmIGVudHJ5YmxvY2stPmJfaW5zdHIgJiYgZW50cnlibG9jay0+Yl9pbnN0ci0+aV9saW5lbm8pCiAgICAgICAgICAgICBjLT51LT51X2ZpcnN0bGluZW5vID0gZW50cnlibG9jay0+Yl9pbnN0ci0+aV9saW5lbm87CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGMtPnUtPnVfZmlyc3RsaW5lbm8gPSAxOwpAQCAtNDczMyw3ICs1MzU3LDcgQEAKIAogICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9sbm90YWIsIGEuYV9sbm90YWJfb2ZmKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS5hX2J5dGVjb2RlLCBhLmFfb2Zmc2V0KSA8IDApCisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS5hX2J5dGVjb2RlLCBhLmFfb2Zmc2V0ICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGNvID0gbWFrZWNvZGUoYywgJmEpOwpAQCAtNDc0OSw0ICs1MzczLDMgQEAKIHsKICAgICByZXR1cm4gUHlBU1RfQ29tcGlsZUV4KG1vZCwgZmlsZW5hbWUsIGZsYWdzLCAtMSwgYXJlbmEpOwogfQotCmRpZmYgLS1naXQgYS9QeXRob24vY29uZHZhci5oIGIvUHl0aG9uL2NvbmR2YXIuaAppbmRleCBjZWQ5MTBmLi45YTcxYjE3IDEwMDY0NAotLS0gYS9QeXRob24vY29uZHZhci5oCisrKyBiL1B5dGhvbi9jb25kdmFyLmgKQEAgLTg5LDcgKzg5LDcgQEAKIAogLyogcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIDEgb24gdGltZW91dCwgLTEgb24gZXJyb3IgKi8KIFB5X0xPQ0FMX0lOTElORShpbnQpCi1QeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjb25kLCBQeU1VVEVYX1QgKm11dCwgUFlfTE9OR19MT05HIHVzKQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY29uZCwgUHlNVVRFWF9UICptdXQsIGxvbmcgbG9uZyB1cykKIHsKICAgICBpbnQgcjsKICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CkBAIC0yNzAsNyArMjcwLDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKGludCkKLVB5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBQWV9MT05HX0xPTkcgdXMpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyBsb25nIHVzKQogewogICAgIHJldHVybiBfUHlDT05EX1dBSVRfTVMoY3YsIGNzLCAoRFdPUkQpKHVzLzEwMDApKTsKIH0KQEAgLTM2Myw3ICszNjMsNyBAQAogICogMiB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvbid0IGtub3cuCiAgKi8KIFB5X0xPQ0FMX0lOTElORShpbnQpCi1QeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgUFlfTE9OR19MT05HIHVzKQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgbG9uZyB1cykKIHsKICAgICByZXR1cm4gU2xlZXBDb25kaXRpb25WYXJpYWJsZVNSVyhjdiwgY3MsIChEV09SRCkodXMvMTAwMCksIDApID8gMiA6IC0xOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R0b2EuYyBiL1B5dGhvbi9kdG9hLmMKaW5kZXggM2RhNTQ2ZS4uZWZjYWRjMyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R0b2EuYworKysgYi9QeXRob24vZHRvYS5jCkBAIC0xNTEsMTggKzE1MSw5IEBACiAjZW5kaWYKIAogCi0jaWYgZGVmaW5lZChIQVZFX1VJTlQzMl9UKSAmJiBkZWZpbmVkKEhBVkVfSU5UMzJfVCkKLXR5cGVkZWYgUFlfVUlOVDMyX1QgVUxvbmc7Ci10eXBlZGVmIFBZX0lOVDMyX1QgTG9uZzsKLSNlbHNlCi0jZXJyb3IgIkZhaWxlZCB0byBmaW5kIGFuIGV4YWN0LXdpZHRoIDMyLWJpdCBpbnRlZ2VyIHR5cGUiCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoSEFWRV9VSU5UNjRfVCkKLSNkZWZpbmUgVUxMb25nIFBZX1VJTlQ2NF9UCi0jZWxzZQotI3VuZGVmIFVMTG9uZwotI2VuZGlmCit0eXBlZGVmIHVpbnQzMl90IFVMb25nOwordHlwZWRlZiBpbnQzMl90IExvbmc7Cit0eXBlZGVmIHVpbnQ2NF90IFVMTG9uZzsKIAogI3VuZGVmIERFQlVHCiAjaWZkZWYgUHlfREVCVUcKQEAgLTQ1NywxMyArNDQ4LDggQEAKIG11bHRhZGQoQmlnaW50ICpiLCBpbnQgbSwgaW50IGEpICAgICAgIC8qIG11bHRpcGx5IGJ5IG0gYW5kIGFkZCBhICovCiB7CiAgICAgaW50IGksIHdkczsKLSNpZmRlZiBVTExvbmcKICAgICBVTG9uZyAqeDsKICAgICBVTExvbmcgY2FycnksIHk7Ci0jZWxzZQotICAgIFVMb25nIGNhcnJ5LCAqeCwgeTsKLSAgICBVTG9uZyB4aSwgejsKLSNlbmRpZgogICAgIEJpZ2ludCAqYjE7CiAKICAgICB3ZHMgPSBiLT53ZHM7CkBAIC00NzEsMTcgKzQ1Nyw5IEBACiAgICAgaSA9IDA7CiAgICAgY2FycnkgPSBhOwogICAgIGRvIHsKLSNpZmRlZiBVTExvbmcKICAgICAgICAgeSA9ICp4ICogKFVMTG9uZyltICsgY2Fycnk7CiAgICAgICAgIGNhcnJ5ID0geSA+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+IDE2OwotICAgICAgICAgICAgU3RvcmVpbmMoYngsIHosIHkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoc3ggPD0gc3hlKTsKICAgICAgICAgYnggPSBiLT54OwpAQCAtMjMxNSw3ICsyMjAyLDcgQEAKIH0KIAogc3RhdGljIGNoYXIgKgotbnJ2X2FsbG9jKGNoYXIgKnMsIGNoYXIgKipydmUsIGludCBuKQorbnJ2X2FsbG9jKGNvbnN0IGNoYXIgKnMsIGNoYXIgKipydmUsIGludCBuKQogewogICAgIGNoYXIgKnJ2LCAqdDsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfd2luLmMgYi9QeXRob24vZHlubG9hZF93aW4uYwppbmRleCBmMmM3OTZlLi4wNTA1MGNmIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF93aW4uYworKysgYi9QeXRob24vZHlubG9hZF93aW4uYwpAQCAtMjQsMTIgKzI0LDEwIEBACiAjZGVmaW5lIFBZRF9ERUJVR19TVUZGSVggIiIKICNlbmRpZgogCi0jZGVmaW5lIFNUUklOR0laRTIoeCkgI3gKLSNkZWZpbmUgU1RSSU5HSVpFKHgpIFNUUklOR0laRTIoeCkKICNpZmRlZiBQWURfUExBVEZPUk1fVEFHCi0jZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgU1RSSU5HSVpFKFBZX01BSk9SX1ZFUlNJT04pIFNUUklOR0laRShQWV9NSU5PUl9WRVJTSU9OKSAiLSIgUFlEX1BMQVRGT1JNX1RBRyAiLnB5ZCIKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pICItIiBQWURfUExBVEZPUk1fVEFHICIucHlkIgogI2Vsc2UKLSNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgorI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFB5X1NUUklOR0lGWShQWV9NQUpPUl9WRVJTSU9OKSBQeV9TVFJJTkdJRlkoUFlfTUlOT1JfVkVSU0lPTikgIi5weWQiCiAjZW5kaWYKIAogI2RlZmluZSBQWURfVU5UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5weWQiCkBAIC00Myw3ICs0MSw3IEBACiAvKiBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJlLCB0byBhdm9pZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBhcnRpY3VsYXIKICAgIEMgUlRMIGltcGxlbWVudGF0aW9ucyAqLwogCi1zdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNoYXIgKnN0cmluZzEsIGNoYXIgKnN0cmluZzIpCitzdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIpCiB7CiAgICAgaW50IGZpcnN0LCBzZWNvbmQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCA2Y2MwYzIwLi45MThmNGRmIDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC01Miw2ICs1MiwyMCBAQAogICAgIFB5X1hERUNSRUYob2xkdHJhY2ViYWNrKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbihQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhleGNlcHRpb24pOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbChleGNlcHRpb24sIHZhbHVlLCBOVUxMKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbEFyZzEoZXhjZXB0aW9uLCB2YWx1ZSk7CisgICAgfQorfQorCiB2b2lkCiBQeUVycl9TZXRPYmplY3QoUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKnZhbHVlKQogewpAQCAtNjYsNiArODAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgIGV4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOwogICAgIGlmIChleGNfdmFsdWUgIT0gTlVMTCAmJiBleGNfdmFsdWUgIT0gUHlfTm9uZSkgewpAQCAtNzMsMjggKzg4LDIxIEBACiAgICAgICAgIFB5X0lOQ1JFRihleGNfdmFsdWUpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgICAgIC8qIFdlIG11c3Qgbm9ybWFsaXplIHRoZSB2YWx1ZSByaWdodCBub3cgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCAqZml4ZWRfdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIC8qIElzc3VlICMyMzU3MTogUHlFdmFsX0NhbGxPYmplY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbgorICAgICAgICAgICAgLyogSXNzdWUgIzIzNTcxOiBmdW5jdGlvbnMgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBzZXQgKi8KICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKLSAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gYXJncyA/Ci0gICAgICAgICAgICAgICAgUHlFdmFsX0NhbGxPYmplY3QoZXhjZXB0aW9uLCBhcmdzKSA6IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKGV4Y2VwdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YWx1ZSA9IGZpeGVkX3ZhbHVlOwogICAgICAgICB9CisKICAgICAgICAgLyogQXZvaWQgcmVmZXJlbmNlIGN5Y2xlcyB0aHJvdWdoIHRoZSBjb250ZXh0IGNoYWluLgogICAgICAgICAgICBUaGlzIGlzIE8oY2hhaW4gbGVuZ3RoKSBidXQgY29udGV4dCBjaGFpbnMgYXJlCiAgICAgICAgICAgIHVzdWFsbHkgdmVyeSBzaG9ydC4gU2Vuc2l0aXZlIHJlYWRlcnMgbWF5IHRyeQpAQCAtMTEwLDcgKzExOCw4IEBACiAgICAgICAgICAgICAgICAgbyA9IGNvbnRleHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbHVlLCBleGNfdmFsdWUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfREVDUkVGKGV4Y192YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTgsMjUgKzI2NywxNSBAQAogICAgICAgICAgICBjbGFzcy4KICAgICAgICAgKi8KICAgICAgICAgaWYgKCFpbmNsYXNzIHx8ICFpc19zdWJjbGFzcykgewotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsICpyZXM7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWU7CisgICAgICAgICAgICBmaXhlZF92YWx1ZSA9IF9QeUVycl9DcmVhdGVFeGNlcHRpb24odHlwZSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QodHlwZSwgYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIHZhbHVlID0gcmVzOworICAgICAgICAgICAgdmFsdWUgPSBmaXhlZF92YWx1ZTsKICAgICAgICAgfQogICAgICAgICAvKiBpZiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlIGRvZXNuJ3QgZXhhY3RseSBtYXRjaCB0aGUKICAgICAgICAgICAgY2xhc3Mgb2YgdGhlIHR5cGUsIGJlbGlldmUgdGhlIGluc3RhbmNlCkBAIC00MDIsNiArNDAxLDQ3IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX1B5RXJyX0Zvcm1hdFZGcm9tQ2F1c2UoUHlPYmplY3QgKmV4Y2VwdGlvbiwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp2YWwyLCAqdGI7CisKKyAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbCwgJnRiKTsKKyAgICBpZiAodGIgIT0gTlVMTCkgeworICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodmFsLCB0Yik7CisgICAgICAgIFB5X0RFQ1JFRih0Yik7CisgICAgfQorICAgIFB5X0RFQ1JFRihleGMpOworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBQeUVycl9Gb3JtYXRWKGV4Y2VwdGlvbiwgZm9ybWF0LCB2YXJncyk7CisKKyAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKKyAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV4YywgJnZhbDIsICZ0Yik7CisgICAgUHlfSU5DUkVGKHZhbCk7CisgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKKyAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7CisgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbDIsIHRiKTsKKworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgdmFyZ3M7CisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBmb3JtYXQpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKKyAgICBfUHlFcnJfRm9ybWF0VkZyb21DYXVzZShleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOworICAgIHZhX2VuZCh2YXJncyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIENvbnZlbmllbmNlIGZ1bmN0aW9ucyB0byBzZXQgYSB0eXBlIGVycm9yIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIDAgKi8KIAogaW50CkBAIC03MDEsNTEgKzc0MSw2MSBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlPYmplY3QgKgotUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqbXNnLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKmt3YXJncywgKmVycm9yOworICAgIGludCBpc3N1YmNsYXNzOworICAgIFB5T2JqZWN0ICprd2FyZ3MsICplcnJvcjsKIAotICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICBpc3N1YmNsYXNzID0gUHlPYmplY3RfSXNTdWJjbGFzcyhleGNlcHRpb24sIFB5RXhjX0ltcG9ydEVycm9yKTsKKyAgICBpZiAoaXNzdWJjbGFzcyA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICB9CisgICAgZWxzZSBpZiAoIWlzc3ViY2xhc3MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIGEgc3ViY2xhc3Mgb2YgSW1wb3J0RXJyb3IiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAga3dhcmdzID0gUHlEaWN0X05ldygpOwotICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBhIG1lc3NhZ2UgYXJndW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBuYW1lID0gUHlfTm9uZTsKICAgICB9Ci0KICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIHBhdGggPSBQeV9Ob25lOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihtc2cpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXNnKTsKLQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKQorICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpIDwgMCkKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKSA8IDApIHsKICAgICAgICAgZ290byBkb25lOworICAgIH0KIAotICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbChQeUV4Y19JbXBvcnRFcnJvciwgYXJncywga3dhcmdzKTsKKyAgICBlcnJvciA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZXhjZXB0aW9uLCAmbXNnLCAxLCBrd2FyZ3MpOwogICAgIGlmIChlcnJvciAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKilQeV9UWVBFKGVycm9yKSwgZXJyb3IpOwogICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOwogICAgIH0KIAogZG9uZToKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGt3YXJncyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK3sKKyAgICByZXR1cm4gUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19JbXBvcnRFcnJvciwgbXNnLCBuYW1lLCBwYXRoKTsKK30KKwogdm9pZAogX1B5RXJyX0JhZEludGVybmFsQ2FsbChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9maWxldXRpbHMuYyBiL1B5dGhvbi9maWxldXRpbHMuYwppbmRleCAyM2VlZDcxLi5lM2JmYjBjIDEwMDY0NAotLS0gYS9QeXRob24vZmlsZXV0aWxzLmMKKysrIGIvUHl0aG9uL2ZpbGV1dGlscy5jCkBAIC00NCw3ICs0NCw3IEBACiAjZW5kaWYKICAgICBpbnQgdmFsaWQ7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIHZhbGlkID0gX1B5VmVyaWZ5X2ZkKGZkKSAmJiBpc2F0dHkoZmQpOworICAgIHZhbGlkID0gaXNhdHR5KGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIGlmICghdmFsaWQpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTA0LDIzICsxMDQsMjQgQEAKICAgICBjaGFyICpsb2M7CiAjaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKICAgICBjaGFyICpjb2Rlc2V0LCAqKmFsaWFzOwotICAgIGNoYXIgZW5jb2RpbmdbMTAwXTsKKyAgICBjaGFyIGVuY29kaW5nWzIwXTsgICAvKiBsb25nZXN0IG5hbWU6ICJpc29fNjQ2Lmlydl8xOTkxXDAiICovCiAgICAgaW50IGlzX2FzY2lpOwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGNoYXIqIGFzY2lpX2FsaWFzZXNbXSA9IHsKICAgICAgICAgImFzY2lpIiwKKyAgICAgICAgLyogQWxpYXNlcyBmcm9tIExpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSAqLwogICAgICAgICAiNjQ2IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMtNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTg2IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTY4IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTg2IiwKKyAgICAgICAgImFuc2lfeDNfNF8xOTY4IiwKICAgICAgICAgImNwMzY3IiwKICAgICAgICAgImNzYXNjaWkiLAogICAgICAgICAiaWJtMzY3IiwKLSAgICAgICAgImlzbzY0Ni11cyIsCi0gICAgICAgICJpc28tNjQ2Lmlydi0xOTkxIiwKLSAgICAgICAgImlzby1pci02IiwKKyAgICAgICAgImlzbzY0Nl91cyIsCisgICAgICAgICJpc29fNjQ2Lmlydl8xOTkxIiwKKyAgICAgICAgImlzb19pcl82IiwKICAgICAgICAgInVzIiwKLSAgICAgICAgInVzLWFzY2lpIiwKKyAgICAgICAgInVzX2FzY2lpIiwKICAgICAgICAgTlVMTAogICAgIH07CiAjZW5kaWYKQEAgLTYxMywxMyArNjE0LDkgQEAKICAgICBIQU5ETEUgaDsKICAgICBpbnQgdHlwZTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgaCA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIGVsc2UgewotICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICi0gICAgICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKLSAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICB9CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCiAgICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgLyogZXJybm8gaXMgYWxyZWFkeSBzZXQgYnkgX2dldF9vc2ZoYW5kbGUsIGJ1dCB3ZSBhbHNvIHNldApAQCAtNjgzLDYgKzY4MCwxMCBAQAogewogICAgIGludCByZXM7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gX1B5X2ZzdGF0X25vcmFpc2UoZmQsIHN0YXR1cyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTczOCwxMiArNzM5LDYgQEAKICAgICBIQU5ETEUgaGFuZGxlOwogICAgIERXT1JEIGZsYWdzOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChyYWlzZSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzk0LDcgKzc4OSw3IEBACiAgICAgaW50IHJlcXVlc3Q7CiAgICAgaW50IGVycjsKICNlbmRpZgotICAgIGludCBmbGFnczsKKyAgICBpbnQgZmxhZ3MsIG5ld19mbGFnczsKICAgICBpbnQgcmVzOwogI2VuZGlmCiAKQEAgLTgxNSwxMiArODEwLDYgQEAKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChyYWlzZSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtODg1LDEwICs4NzQsMTggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChpbmhlcml0YWJsZSkKLSAgICAgICAgZmxhZ3MgJj0gfkZEX0NMT0VYRUM7Ci0gICAgZWxzZQotICAgICAgICBmbGFncyB8PSBGRF9DTE9FWEVDOworICAgIGlmIChpbmhlcml0YWJsZSkgeworICAgICAgICBuZXdfZmxhZ3MgPSBmbGFncyAmIH5GRF9DTE9FWEVDOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbmV3X2ZsYWdzID0gZmxhZ3MgfCBGRF9DTE9FWEVDOworICAgIH0KKworICAgIGlmIChuZXdfZmxhZ3MgPT0gZmxhZ3MpIHsKKyAgICAgICAgLyogRkRfQ0xPRVhFQyBmbGFnIGFscmVhZHkgc2V0L2NsZWFyZWQ6IG5vdGhpbmcgdG8gZG8gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmVzID0gZmNudGwoZmQsIEZfU0VURkQsIGZsYWdzKTsKICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICBpZiAocmFpc2UpCkBAIC0xMTY5LDE5ICsxMTY2LDE1IEBACiAgICAgaW50IGVycjsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIC8qIF9QeV9yZWFkKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwgb3RoZXJ3aXNlIHRoZQogICAgICAqIGNhbGxlciBtYXkgdGhpbmsgdGhhdCByZWFkKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCiAgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLwogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLwotICAgICAgICBlcnIgPSBlcnJubzsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoY291bnQgPiBJTlRfTUFYKSB7CiAgICAgICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBjb3VudCBwYXJhbWV0ZXIgb2YgcmVhZCgpIGlzIGFuIGludCAqLwpAQCAtMTIzNSwxNiArMTIyOCw2IEBACiAgICAgaW50IGVycjsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAoZ2lsX2hlbGQpIHsKLSAgICAgICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KLSAgICAgICAgICAgIGVyciA9IGVycm5vOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGNvdW50ID4gMzI3NjcgJiYgaXNhdHR5KGZkKSkgewpAQCAtMTMyNCw2ICsxMzA3LDEwIEBACiBQeV9zc2l6ZV90CiBfUHlfd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICAvKiBfUHlfd3JpdGUoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCiAgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHdyaXRlKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCiAgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLwpAQCAtMTQ3MywxMCArMTQ2MCw5IEBACiAgICAgRFdPUkQgZnR5cGU7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTE2MDAsODQgKzE1ODYsMyBAQAogICAgIHJldHVybiAtMTsKIH0KICNlbmRpZgotCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMAotLyogTGVnYWN5IGltcGxlbWVudGF0aW9uIG9mIF9QeVZlcmlmeV9mZCB3aGlsZSB0cmFuc2l0aW9uaW5nIHRvCi0gKiBNU1ZDIDE0LjAuIFRoaXMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4gKGlzc3VlMjM1MjQpCi0gKi8KLQotLyogTWljcm9zb2Z0IENSVCBpbiBWUzIwMDUgYW5kIGhpZ2hlciB3aWxsIHZlcmlmeSB0aGF0IGEgZmlsZWhhbmRsZSBpcwotICogdmFsaWQgYW5kIHJhaXNlIGFuIGFzc2VydGlvbiBpZiBpdCBpc24ndC4KLSAqIE5vcm1hbGx5LCBhbiBpbnZhbGlkIGZkIGlzIGxpa2VseSB0byBiZSBhIEMgcHJvZ3JhbSBlcnJvciBhbmQgdGhlcmVmb3JlCi0gKiBhbiBhc3NlcnRpb24gY2FuIGJlIHVzZWZ1bCwgYnV0IGl0IGRvZXMgY29udHJhZGljdCB0aGUgUE9TSVggc3RhbmRhcmQKLSAqIHdoaWNoIGZvciB3cml0ZSgyKSBzdGF0ZXM6Ci0gKiAgICAiT3RoZXJ3aXNlLCAtMSBzaGFsbCBiZSByZXR1cm5lZCBhbmQgZXJybm8gc2V0IHRvIGluZGljYXRlIHRoZSBlcnJvci4iCi0gKiAgICAiW0VCQURGXSBUaGUgZmlsZGVzIGFyZ3VtZW50IGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRvciBvcGVuIGZvcgotICogICAgIHdyaXRpbmcuIgotICogRnVydGhlcm1vcmUsIHB5dGhvbiBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW55IG9sZCBpbnRlZ2VyCi0gKiBhcyBhIGZkIGFuZCBzaG91bGQgbWVyZWx5IHJhaXNlIGEgcHl0aG9uIGV4Y2VwdGlvbiBvbiBlcnJvci4KLSAqIFRoZSBNaWNyb3NvZnQgQ1JUIGRvZXNuJ3QgcHJvdmlkZSBhbiBvZmZpY2lhbCB3YXkgdG8gY2hlY2sgZm9yIHRoZQotICogdmFsaWRpdHkgb2YgYSBmaWxlIGRlc2NyaXB0b3IsIGJ1dCB3ZSBjYW4gZW11bGF0ZSBpdHMgaW50ZXJuYWwgYmVoYXZpb3VyCi0gKiBieSB1c2luZyB0aGUgZXhwb3J0ZWQgX19waW5mbyBkYXRhIG1lbWJlciBhbmQga25vd2xlZGdlIG9mIHRoZQotICogaW50ZXJuYWwgc3RydWN0dXJlcyBpbnZvbHZlZC4KLSAqIFRoZSBzdHJ1Y3R1cmVzIGJlbG93IG11c3QgYmUgdXBkYXRlZCBmb3IgZWFjaCB2ZXJzaW9uIG9mIHZpc3VhbCBzdHVkaW8KLSAqIGFjY29yZGluZyB0byB0aGUgZmlsZSBpbnRlcm5hbC5oIGluIHRoZSBDUlQgc291cmNlLCB1bnRpbCBNUyBjb21lcwotICogdXAgd2l0aCBhIGxlc3MgaGFja3kgd2F5IHRvIGRvIHRoaXMuCi0gKiAoYWxsIG9mIHRoaXMgaXMgdG8gYXZvaWQgZ2xvYmFsbHkgbW9kaWZ5aW5nIHRoZSBDUlQgYmVoYXZpb3VyIHVzaW5nCi0gKiBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoKSBhbmQgX0NydFNldFJlcG9ydE1vZGUoKSkKLSAqLwotLyogVGhlIGFjdHVhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgaXMgZGV0ZXJtaW5lZCBhdCBydW50aW1lLgotICogT25seSB0aGUgZmlyc3QgaXRlbXMgbXVzdCBiZSBwcmVzZW50LgotICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50cHRyX3Qgb3NmaG5kOwotICAgIGNoYXIgb3NmaWxlOwotfSBteV9pb2luZm87Ci0KLWV4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciAqIF9fcGlvaW5mb1tdOwotI2RlZmluZSBJT0lORk9fTDJFIDUKLSNkZWZpbmUgSU9JTkZPX0FSUkFZUyA2NAotI2RlZmluZSBJT0lORk9fQVJSQVlfRUxUUyAgICgxIDw8IElPSU5GT19MMkUpCi0jZGVmaW5lIF9OSEFORExFXyAgICAgICAgICAgKElPSU5GT19BUlJBWVMgKiBJT0lORk9fQVJSQVlfRUxUUykKLSNkZWZpbmUgRk9QRU4gMHgwMQotI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCi0KLS8qIFRoaXMgZnVuY3Rpb24gZW11bGF0ZXMgd2hhdCB0aGUgd2luZG93cyBDUlQgZG9lcyB0byB2YWxpZGF0ZSBmaWxlIGhhbmRsZXMgKi8KLWludAotX1B5VmVyaWZ5X2ZkKGludCBmZCkKLXsKLSAgICBjb25zdCBpbnQgaTEgPSBmZCA+PiBJT0lORk9fTDJFOwotICAgIGNvbnN0IGludCBpMiA9IGZkICYgKCgxIDw8IElPSU5GT19MMkUpIC0gMSk7Ci0KLSAgICBzdGF0aWMgc2l6ZV90IHNpemVvZl9pb2luZm8gPSAwOwotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgaW9pbmZvIHN0cnVjdHVyZSwKLSAgICAgKiBhcyB1c2VkIGJ5IHRoZSBDUlQgbG9hZGVkIGluIG1lbW9yeQotICAgICAqLwotICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDAgJiYgX19waW9pbmZvWzBdICE9IE5VTEwpIHsKLSAgICAgICAgc2l6ZW9mX2lvaW5mbyA9IF9tc2l6ZShfX3Bpb2luZm9bMF0pIC8gSU9JTkZPX0FSUkFZX0VMVFM7Ci0gICAgfQotICAgIGlmIChzaXplb2ZfaW9pbmZvID09IDApIHsKLSAgICAgICAgLyogVGhpcyBzaG91bGQgbm90IGhhcHBlbi4uLiAqLwotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgfQotCi0gICAgLyogU2VlIHRoYXQgaXQgaXNuJ3QgYSBzcGVjaWFsIENMRUFSIGZpbGVubyAqLwotICAgIGlmIChmZCAhPSBfTk9fQ09OU09MRV9GSUxFTk8pIHsKLSAgICAgICAgLyogTWljcm9zb2Z0IENSVCB3b3VsZCBjaGVjayB0aGF0IDA8PWZkPF9uaGFuZGxlIGJ1dCB3ZSBjYW4ndCBkbyB0aGF0LiAgSW5zdGVhZAotICAgICAgICAgKiB3ZSBjaGVjayBwb2ludGVyIHZhbGlkaXR5IGFuZCBvdGhlciBpbmZvCi0gICAgICAgICAqLwotICAgICAgICBpZiAoMCA8PSBpMSAmJiBpMSA8IElPSU5GT19BUlJBWVMgJiYgX19waW9pbmZvW2kxXSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBmaW5hbGx5LCBjaGVjayB0aGF0IHRoZSBmaWxlIGlzIG9wZW4gKi8KLSAgICAgICAgICAgIG15X2lvaW5mbyogaW5mbyA9IChteV9pb2luZm8qKShfX3Bpb2luZm9baTFdICsgaTIgKiBzaXplb2ZfaW9pbmZvKTsKLSAgICAgICAgICAgIGlmIChpbmZvLT5vc2ZpbGUgJiBGT1BFTikgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICBmYWlsOgotICAgIGVycm5vID0gRUJBREY7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbmRpZiAvKiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwICovCmRpZmYgLS1naXQgYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCmluZGV4IDYxN2Q1OGIuLmEyYzJiMzYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCisrKyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCkBAIC0zMiwxNCArMzIsMjAgQEAKIHsKICAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJyVjJy4iLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyBvciAnXycgd2l0aCAnJWMnLiIsCiAgICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSk7CiAgICAgZWxzZQogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnXFx4JXgnLiIsCisgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIG9yICdfJyB3aXRoICdcXHgleCcuIiwKICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUpOwogfQogCitzdGF0aWMgdm9pZAoraW52YWxpZF9jb21tYV9hbmRfdW5kZXJzY29yZSh2b2lkKQoreworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm90IHNwZWNpZnkgYm90aCAnLCcgYW5kICdfJy4iKTsKK30KKwogLyoKICAgICBnZXRfaW50ZWdlciBjb25zdW1lcyAwIG9yIG1vcmUgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXJzIGZyb20gYW4KICAgICBpbnB1dCBzdHJpbmcsIHVwZGF0ZXMgKnJlc3VsdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aXZlCkBAIC00OCwxNiArNTQsMTcgQEAKICAgICByZXR1cm5zIC0xIG9uIGVycm9yLgogKi8KIHN0YXRpYyBpbnQKLWdldF9pbnRlZ2VyKFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgKnBvcywgUHlfc3NpemVfdCBlbmQsCitnZXRfaW50ZWdlcihQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90ICpwcG9zLCBQeV9zc2l6ZV90IGVuZCwKICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnJlc3VsdCkKIHsKLSAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbDsKKyAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yLCBkaWdpdHZhbCwgcG9zID0gKnBwb3M7CiAgICAgaW50IG51bWRpZ2l0czsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisKICAgICBhY2N1bXVsYXRvciA9IG51bWRpZ2l0cyA9IDA7Ci0gICAgZm9yICg7OygqcG9zKSsrLCBudW1kaWdpdHMrKykgewotICAgICAgICBpZiAoKnBvcyA+PSBlbmQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ciwgKnBvcykpOworICAgIGZvciAoOyBwb3MgPCBlbmQ7IHBvcysrLCBudW1kaWdpdHMrKykgeworICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcykpOwogICAgICAgICBpZiAoZGlnaXR2YWwgPCAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIC8qCkBAIC02OSwxMCArNzYsMTIgQEAKICAgICAgICAgaWYgKGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBkZWNpbWFsIGRpZ2l0cyBpbiBmb3JtYXQgc3RyaW5nIik7CisgICAgICAgICAgICAqcHBvcyA9IHBvczsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBhY2N1bXVsYXRvciA9IGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbDsKICAgICB9CisgICAgKnBwb3MgPSBwb3M7CiAgICAgKnJlc3VsdCA9IGFjY3VtdWxhdG9yOwogICAgIHJldHVybiBudW1kaWdpdHM7CiB9CkBAIC0xMDUsNiArMTE0LDE0IEBACiAgICAgfQogfQogCisvKiBMb2NhbGUgdHlwZSBjb2Rlcy4gTFRfTk9fTE9DQUxFIG11c3QgYmUgemVyby4gKi8KK2VudW0gTG9jYWxlVHlwZSB7CisgICAgTFRfTk9fTE9DQUxFID0gMCwKKyAgICBMVF9ERUZBVUxUX0xPQ0FMRSwKKyAgICBMVF9VTkRFUlNDT1JFX0xPQ0FMRSwKKyAgICBMVF9VTkRFUl9GT1VSX0xPQ0FMRSwKKyAgICBMVF9DVVJSRU5UX0xPQ0FMRQorfTsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5X1VDUzQgZmlsbF9jaGFyOwpAQCAtMTEyLDcgKzEyOSw3IEBACiAgICAgaW50IGFsdGVybmF0ZTsKICAgICBQeV9VQ1M0IHNpZ247CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBpbnQgdGhvdXNhbmRzX3NlcGFyYXRvcnM7CisgICAgZW51bSBMb2NhbGVUeXBlIHRob3VzYW5kc19zZXBhcmF0b3JzOwogICAgIFB5X3NzaXplX3QgcHJlY2lzaW9uOwogICAgIFB5X1VDUzQgdHlwZTsKIH0gSW50ZXJuYWxGb3JtYXRTcGVjOwpAQCAtMTUwLDkgKzE2NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGVmYXVsdF9hbGlnbikKIHsKICAgICBQeV9zc2l6ZV90IHBvcyA9IHN0YXJ0OworICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoZm9ybWF0X3NwZWMpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShmb3JtYXRfc3BlYyk7CiAgICAgLyogZW5kLXBvcyBpcyB1c2VkIHRocm91Z2hvdXQgdGhpcyBjb2RlIHRvIHNwZWNpZnkgdGhlIGxlbmd0aCBvZgogICAgICAgIHRoZSBpbnB1dCBzdHJpbmcgKi8KLSNkZWZpbmUgUkVBRF9zcGVjKGluZGV4KSBQeVVuaWNvZGVfUkVBRF9DSEFSKGZvcm1hdF9zcGVjLCBpbmRleCkKKyNkZWZpbmUgUkVBRF9zcGVjKGluZGV4KSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbmRleCkKIAogICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CiAgICAgaW50IGFsaWduX3NwZWNpZmllZCA9IDA7CkBAIC0xNjMsNyArMTgyLDcgQEAKICAgICBmb3JtYXQtPmFsdGVybmF0ZSA9IDA7CiAgICAgZm9ybWF0LT5zaWduID0gJ1wwJzsKICAgICBmb3JtYXQtPndpZHRoID0gLTE7Ci0gICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDA7CisgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX05PX0xPQ0FMRTsKICAgICBmb3JtYXQtPnByZWNpc2lvbiA9IC0xOwogICAgIGZvcm1hdC0+dHlwZSA9IGRlZmF1bHRfdHlwZTsKIApAQCAtMjE4LDkgKzIzNywyMiBAQAogCiAgICAgLyogQ29tbWEgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLwogICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcsJykgewotICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMTsKKyAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX0RFRkFVTFRfTE9DQUxFOwogICAgICAgICArK3BvczsKICAgICB9CisgICAgLyogVW5kZXJzY29yZSBzaWduaWZpZXMgYWRkIHRob3VzYW5kcyBzZXBhcmF0b3JzICovCisgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJ18nKSB7CisgICAgICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzICE9IExUX05PX0xPQ0FMRSkgeworICAgICAgICAgICAgaW52YWxpZF9jb21tYV9hbmRfdW5kZXJzY29yZSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX1VOREVSU0NPUkVfTE9DQUxFOworICAgICAgICArK3BvczsKKyAgICB9CisgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJywnKSB7CisgICAgICAgIGludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgLyogUGFyc2UgZmllbGQgcHJlY2lzaW9uICovCiAgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJy4nKSB7CkBAIC0yNzAsNiArMzAyLDE2IEBACiAgICAgICAgIGNhc2UgJ1wwJzoKICAgICAgICAgICAgIC8qIFRoZXNlIGFyZSBhbGxvd2VkLiBTZWUgUEVQIDM3OC4qLwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ2InOgorICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgLyogVW5kZXJzY29yZXMgYXJlIGFsbG93ZWQgaW4gYmluL29jdC9oZXguIFNlZSBQRVAgNTE1LiAqLworICAgICAgICAgICAgaWYgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPT0gTFRfVU5ERVJTQ09SRV9MT0NBTEUpIHsKKyAgICAgICAgICAgICAgICAvKiBFdmVyeSBmb3VyIGRpZ2l0cywgbm90IGV2ZXJ5IHRocmVlLCBpbiBiaW4vb2N0L2hleC4gKi8KKyAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gTFRfVU5ERVJfRk9VUl9MT0NBTEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpbnZhbGlkX2NvbW1hX3R5cGUoZm9ybWF0LT50eXBlKTsKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMzQ2LDEzICszODgsNiBAQAogLyoqKioqKioqKioqIGNvbW1vbiByb3V0aW5lcyBmb3IgbnVtZXJpYyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLS8qIExvY2FsZSB0eXBlIGNvZGVzLiAqLwotZW51bSBMb2NhbGVUeXBlIHsKLSAgICBMVF9DVVJSRU5UX0xPQ0FMRSwKLSAgICBMVF9ERUZBVUxUX0xPQ0FMRSwKLSAgICBMVF9OT19MT0NBTEUKLX07Ci0KIC8qIExvY2FsZSBpbmZvIG5lZWRlZCBmb3IgZm9ybWF0dGluZyBpbnRlZ2VycyBhbmQgdGhlIHBhcnQgb2YgZmxvYXRzCiAgICBiZWZvcmUgYW5kIGluY2x1ZGluZyB0aGUgZGVjaW1hbC4gTm90ZSB0aGF0IGxvY2FsZXMgb25seSBzdXBwb3J0CiAgICA4LWJpdCBjaGFycywgbm90IHVuaWNvZGUuICovCkBAIC00MDQsMTMgKzQzOSwxNSBAQAogICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fcmVtYWluZGVyLCBpbnQgKmhhc19kZWNpbWFsKQogewogICAgIFB5X3NzaXplX3QgcmVtYWluZGVyOworICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQocyk7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHMpOwogCi0gICAgd2hpbGUgKHBvczxlbmQgJiYgUHlfSVNESUdJVChQeVVuaWNvZGVfUkVBRF9DSEFSKHMsIHBvcykpKQorICAgIHdoaWxlIChwb3M8ZW5kICYmIFB5X0lTRElHSVQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKSkpCiAgICAgICAgICsrcG9zOwogICAgIHJlbWFpbmRlciA9IHBvczsKIAogICAgIC8qIERvZXMgcmVtYWluZGVyIHN0YXJ0IHdpdGggYSBkZWNpbWFsIHBvaW50PyAqLwotICAgICpoYXNfZGVjaW1hbCA9IHBvczxlbmQgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihzLCByZW1haW5kZXIpID09ICcuJzsKKyAgICAqaGFzX2RlY2ltYWwgPSBwb3M8ZW5kICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHJlbWFpbmRlcikgPT0gJy4nOwogCiAgICAgLyogU2tpcCB0aGUgZGVjaW1hbCBwb2ludC4gKi8KICAgICBpZiAoKmhhc19kZWNpbWFsKQpAQCAtNjU4LDEyICs2OTUsMTIgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9Oworc3RhdGljIGNvbnN0IGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9OwogCiAvKiBGaW5kIHRoZSBkZWNpbWFsIHBvaW50IGNoYXJhY3RlcihzPyksIHRob3VzYW5kc19zZXBhcmF0b3Iocz8pLCBhbmQKICAgIGdyb3VwaW5nIGRlc2NyaXB0aW9uLCBlaXRoZXIgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSBpZiB0eXBlIGlzCi0gICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSwgb3IKLSAgIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLworICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUgb3IKKyAgIExUX1VOREVSU0NPUkVfTE9DQUxFL0xUX1VOREVSX0ZPVVJfTE9DQUxFLCBvciBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KIHN0YXRpYyBpbnQKIGdldF9sb2NhbGVfaW5mbyhlbnVtIExvY2FsZVR5cGUgdHlwZSwgTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCiB7CkBAIC02ODQsMTMgKzcyMSwxOSBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBMVF9ERUZBVUxUX0xPQ0FMRToKKyAgICBjYXNlIExUX1VOREVSU0NPUkVfTE9DQUxFOgorICAgIGNhc2UgTFRfVU5ERVJfRk9VUl9MT0NBTEU6CiAgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcsJyk7CisgICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKAorICAgICAgICAgICAgdHlwZSA9PSBMVF9ERUZBVUxUX0xPQ0FMRSA/ICcsJyA6ICdfJyk7CiAgICAgICAgIGlmICghbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgfHwgIWxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKKyAgICAgICAgaWYgKHR5cGUgIT0gTFRfVU5ERVJfRk9VUl9MT0NBTEUpCisgICAgICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDMiOyAvKiBHcm91cCBldmVyeSAzIGNoYXJhY3RlcnMuICBUaGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGltcGxpY2l0KSB0cmFpbGluZyAwIG1lYW5zIHJlcGVhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZWx5LiAqLworICAgICAgICBlbHNlCisgICAgICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSAiXDQiOyAvKiBCaW4vb2N0L2hleCBncm91cCBldmVyeSBmb3VyLiAqLwogICAgICAgICBicmVhazsKICAgICBjYXNlIExUX05PX0xPQ0FMRToKICAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJy4nKTsKQEAgLTkzNyw5ICs5ODAsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwogICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMDg0LDkgKzExMjUsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwogICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMjYyLDkgKzEzMDEsNyBAQAogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwogICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKICAgICAgICAgZ290byBkb25lOwogCmRpZmYgLS1naXQgYS9QeXRob24vZnJvemVuLmMgYi9QeXRob24vZnJvemVuLmMKaW5kZXggNjc2ZjM5NS4uN2UwNGYzYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbi5jCisrKyBiL1B5dGhvbi9mcm96ZW4uYwpAQCAtMTQsMTcgKzE0LDE1IEBACiAgICB0aGUgYXBwcm9wcmlhdGUgYnl0ZXMgZnJvbSBNX19fbWFpbl9fLmMuICovCiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIE1fX19oZWxsb19fW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjAsMCwwLDAsMTAwLDIsMCw5MCwxLDAsCi0gICAgMTAxLDIsMCwxMDAsMCwwLDEzMSwxLDAsMSwxMDAsMSwwLDgzLDQwLDMsCi0gICAgMCwwLDAsMTE3LDEyLDAsMCwwLDcyLDEwMSwxMDgsMTA4LDExMSwzMiwxMTksMTExLAotICAgIDExNCwxMDgsMTAwLDMzLDc4LDg0LDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsCi0gICAgODQsMTE0LDExNywxMDEsMTE3LDExLDAsMCwwLDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAotICAgIDEwNSwxMjIsMTAxLDEwMCwxMTcsNSwwLDAsMCwxMTIsMTE0LDEwNSwxMTAsMTE2LDQwLDAsCi0gICAgMCwwLDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNyw3LDAsCi0gICAgMCwwLDEwMiwxMDgsOTcsMTAzLDQ2LDExMiwxMjEsMTE3LDgsMCwwLDAsNjAsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsMSwwLDAsMCwxMTUsMiwwLDAsMCw2LAotICAgIDEsCisgICAgMjI3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwwLDkwLDAsMTAxLDEsCisgICAgMTAwLDEsMTMxLDEsMSwwLDEwMCwyLDgzLDAsNDEsMyw4NCwxMjIsMTIsNzIsCisgICAgMTAxLDEwOCwxMDgsMTExLDMyLDExOSwxMTEsMTE0LDEwOCwxMDAsMzMsNzgsNDEsMiwyMTgsMTEsCisgICAgMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDIxOCw1LDExMiwxMTQsMTA1LAorICAgIDExMCwxMTYsMTY5LDAsMTE0LDMsMCwwLDAsMTE0LDMsMCwwLDAsMjUwLDIyLAorICAgIDQ2LDQ3LDg0LDExMSwxMTEsMTA4LDExNSw0NywxMDIsMTE0LDEwMSwxMDEsMTIyLDEwMSw0NywxMDIsCisgICAgMTA4LDk3LDEwMyw0NiwxMTIsMTIxLDIxOCw4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLAorICAgIDEsMCwwLDAsMTE1LDIsMCwwLDAsNCwxLAogfTsKIAogI2RlZmluZSBTSVpFIChpbnQpc2l6ZW9mKE1fX19oZWxsb19fKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbm1haW4uYyBiL1B5dGhvbi9mcm96ZW5tYWluLmMKaW5kZXggZGU4YmQzNS4uNzY5YjMzZCAxMDA2NDQKLS0tIGEvUHl0aG9uL2Zyb3plbm1haW4uYworKysgYi9QeXRob24vZnJvemVubWFpbi5jCkBAIC05OSw3ICs5OSw5IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5V2luRnJlZXplX0V4ZVRlcm0oKTsKICNlbmRpZgotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogZXJyb3I6CiAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Z1dHVyZS5jIGIvUHl0aG9uL2Z1dHVyZS5jCmluZGV4IDE2M2Y4N2YuLjc1ZjIxMDcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mdXR1cmUuYworKysgYi9QeXRob24vZnV0dXJlLmMKQEAgLTc5LDcgKzc5LDEwIEBACiAKICAgICBpID0gMDsKICAgICBmaXJzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChtb2QtPnYuTW9kdWxlLmJvZHksIGkpOwotICAgIGlmIChmaXJzdC0+a2luZCA9PSBFeHByX2tpbmQgJiYgZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZCkKKyAgICBpZiAoZmlyc3QtPmtpbmQgPT0gRXhwcl9raW5kCisgICAgICAgICYmIChmaXJzdC0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kCisgICAgICAgICAgICB8fCAoZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBDb25zdGFudF9raW5kCisgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZmlyc3QtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZSkpKSkKICAgICAgICAgaSsrOwogCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRhcmdzLmMgYi9QeXRob24vZ2V0YXJncy5jCmluZGV4IDhhYWIwNjcuLjQzNjU2ZWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRhcmdzLmMKKysrIGIvUHl0aG9uL2dldGFyZ3MuYwpAQCAtMTgsMTYgKzE4LDI4IEBACiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0KTsKIAoraW50IF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitpbnQgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0KTsKKwogI2lmZGVmIEhBVkVfREVDTFNQRUNfRExMCiAvKiBFeHBvcnQgZnVuY3Rpb25zICovCi1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNoYXIgKiwgLi4uKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVChQeU9iamVjdCAqLCBjaGFyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VTdGFja19TaXplVChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCAuLi4pOwogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCAuLi4pOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIC4uLik7Ci1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY2hhciAqLCB2YV9saXN0KTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZV9TaXplVChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwogUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7CiAjZW5kaWYKIAogI2RlZmluZSBGTEFHX0NPTVBBVCAxCkBAIC01NiwxOCArNjgsMjQgQEAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyBpbnQgdmdldGFyZ3MxKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCAqLCBpbnQpOwogc3RhdGljIHZvaWQgc2V0ZXJyb3IoUHlfc3NpemVfdCwgY29uc3QgY2hhciAqLCBpbnQgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotc3RhdGljIGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOwotc3RhdGljIGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBQeV9zc2l6ZV90IGNvbnZlcnRidWZmZXIoUHlPYmplY3QgKiwgdm9pZCAqKnAsIGNoYXIgKiopOwotc3RhdGljIGludCBnZXRidWZmZXIoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGNoYXIqKik7CitzdGF0aWMgY29uc3QgY2hhciAqY29udmVydGl0ZW0oUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGludCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnR0dXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICosIGNoYXIgKiwgc2l6ZV90LCBpbnQsIGZyZWVsaXN0X3QgKik7CitzdGF0aWMgY29uc3QgY2hhciAqY29udmVydHNpbXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBmcmVlbGlzdF90ICopOworc3RhdGljIFB5X3NzaXplX3QgY29udmVydGJ1ZmZlcihQeU9iamVjdCAqLCB2b2lkICoqcCwgY29uc3QgY2hhciAqKik7CitzdGF0aWMgaW50IGdldGJ1ZmZlcihQeU9iamVjdCAqLCBQeV9idWZmZXIgKiwgY29uc3QgY2hhcioqKTsKIAogc3RhdGljIGludCB2Z2V0YXJnc2tleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBjaGFyICoqLCB2YV9saXN0ICosIGludCk7Ci1zdGF0aWMgY2hhciAqc2tpcGl0ZW0oY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOworc3RhdGljIGludCB2Z2V0YXJnc2tleXdvcmRzZmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QgKiwgaW50KTsKK3N0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkcywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncyk7CitzdGF0aWMgY29uc3QgY2hhciAqc2tpcGl0ZW0oY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOwogCiBpbnQKIFB5QXJnX1BhcnNlKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKQEAgLTgyLDcgKzEwMCw3IEBACiB9CiAKIGludAotX1B5QXJnX1BhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIC4uLikKK19QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgaW50IHJldHZhbDsKICAgICB2YV9saXN0IHZhOwpAQCAtMTA3LDcgKzEyNSw3IEBACiB9CiAKIGludAotX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgLi4uKQorX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIGludCByZXR2YWw7CiAgICAgdmFfbGlzdCB2YTsKQEAgLTEyMywyMCArMTQxLDI2IEBACiBQeUFyZ19WYVBhcnNlKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEpCiB7CiAgICAgdmFfbGlzdCBsdmE7CisgICAgaW50IHJldHZhbDsKIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKLSAgICByZXR1cm4gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgMCk7CisgICAgcmV0dmFsID0gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKIH0KIAogaW50Ci1fUHlBcmdfVmFQYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhKQorX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKIHsKICAgICB2YV9saXN0IGx2YTsKKyAgICBpbnQgcmV0dmFsOwogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAotICAgIHJldHVybiB2Z2V0YXJnczEoYXJncywgZm9ybWF0LCAmbHZhLCBGTEFHX1NJWkVfVCk7CisgICAgcmV0dmFsID0gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIApAQCAtMjA4LDcgKzIzMiw3IEBACiAgICAgaW50IGVuZGZtdCA9IDA7CiAgICAgY29uc3QgY2hhciAqZm9ybWF0c2F2ZSA9IGZvcm1hdDsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKLSAgICBjaGFyICptc2c7CisgICAgY29uc3QgY2hhciAqbXNnOwogICAgIGludCBjb21wYXQgPSBmbGFncyAmIEZMQUdfQ09NUEFUOwogICAgIGZyZWVsaXN0ZW50cnlfdCBzdGF0aWNfZW50cmllc1tTVEFUSUNfRlJFRUxJU1RfRU5UUklFU107CiAgICAgZnJlZWxpc3RfdCBmcmVlbGlzdDsKQEAgLTM5NCw3ICs0MTgsMTIgQEAKICAgICAgICAgUHlPU19zbnByaW50ZihwLCBzaXplb2YoYnVmKSAtIChwIC0gYnVmKSwgIiAlLjI1NnMiLCBtc2cpOwogICAgICAgICBtZXNzYWdlID0gYnVmOwogICAgIH0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNzYWdlKTsKKyAgICBpZiAobXNnWzBdID09ICcoJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsIG1lc3NhZ2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgfQogfQogCiAKQEAgLTQxNiw3ICs0NDUsNyBAQAogICAgICAgYW5kIG1zZ2J1ZiBpcyByZXR1cm5lZC4KICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIGNvbnZlcnR0dXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgaW50IHRvcGxldmVsLAogICAgICAgICAgICAgIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQpAQCAtNDc0LDcgKzUwMyw3IEBACiAKICAgICBmb3JtYXQgPSAqcF9mb3JtYXQ7CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICBjaGFyICptc2c7CisgICAgICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgICAgIGl0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0oYXJnLCBpKTsKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewpAQCAtNTAxLDExICs1MzAsMTEgQEAKIAogLyogQ29udmVydCBhIHNpbmdsZSBpdGVtLiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0aXRlbShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgIGludCAqbGV2ZWxzLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplLCBmcmVlbGlzdF90ICpmcmVlbGlzdCkKIHsKLSAgICBjaGFyICptc2c7CisgICAgY29uc3QgY2hhciAqbXNnOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKIAogICAgIGlmICgqZm9ybWF0ID09ICcoJyAvKiAnKScgKi8pIHsKQEAgLTUzMCw3ICs1NTksNyBAQAogCiAvKiBGb3JtYXQgYW4gZXJyb3IgbWVzc2FnZSBnZW5lcmF0ZWQgYnkgY29udmVydHNpbXBsZSgpLiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0ZXJyKGNvbnN0IGNoYXIgKmV4cGVjdGVkLCBQeU9iamVjdCAqYXJnLCBjaGFyICptc2didWYsIHNpemVfdCBidWZzaXplKQogewogICAgIGFzc2VydChleHBlY3RlZCAhPSBOVUxMKTsKQEAgLTU3Miw3ICs2MDEsNyBAQAogICAgV2hlbiB5b3UgYWRkIG5ldyBmb3JtYXQgY29kZXMsIHBsZWFzZSBkb24ndCBmb3JnZXQgcG9vciBza2lwaXRlbSgpIGJlbG93LgogKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydHNpbXBsZShQeU9iamVjdCAqYXJnLCBjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncywKICAgICAgICAgICAgICAgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CkBAIC03NTIsMTQgKzc4MSwxMyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ0wnOiB7LyogUFlfTE9OR19MT05HICovCi0gICAgICAgIFBZX0xPTkdfTE9ORyAqcCA9IHZhX2FyZyggKnBfdmEsIFBZX0xPTkdfTE9ORyAqICk7Ci0gICAgICAgIFBZX0xPTkdfTE9ORyBpdmFsOworICAgIGNhc2UgJ0wnOiB7LyogbG9uZyBsb25nICovCisgICAgICAgIGxvbmcgbG9uZyAqcCA9IHZhX2FyZyggKnBfdmEsIGxvbmcgbG9uZyAqICk7CisgICAgICAgIGxvbmcgbG9uZyBpdmFsOwogICAgICAgICBpZiAoZmxvYXRfYXJndW1lbnRfZXJyb3IoYXJnKSkKICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhhcmcpOwotICAgICAgICBpZiAoaXZhbCA9PSAoUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChpdmFsID09IChsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwID0gaXZhbDsKQEAgLTc2Nyw4ICs3OTUsOCBAQAogICAgIH0KIAogICAgIGNhc2UgJ0snOiB7IC8qIGxvbmcgbG9uZyBzaXplZCBiaXRmaWVsZCAqLwotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnAgPSB2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKTsKLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGl2YWw7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqcCA9IHZhX2FyZygqcF92YSwgdW5zaWduZWQgbG9uZyBsb25nICopOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaXZhbDsKICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKQogICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKGFyZyk7CiAgICAgICAgIGVsc2UKQEAgLTc3Niw3ICs4MDQsNiBAQAogICAgICAgICAqcCA9IGl2YWw7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSNlbmRpZgogCiAgICAgY2FzZSAnZic6IHsvKiBmbG9hdCAqLwogICAgICAgICBmbG9hdCAqcCA9IHZhX2FyZygqcF92YSwgZmxvYXQgKik7CkBAIC04NTcsNyArODg0LDcgQEAKIAogICAgIGNhc2UgJ3knOiB7LyogYW55IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgIHZvaWQgKipwID0gKHZvaWQgKiopdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKLSAgICAgICAgY2hhciAqYnVmOworICAgICAgICBjb25zdCBjaGFyICpidWY7CiAgICAgICAgIFB5X3NzaXplX3QgY291bnQ7CiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcqJykgewogICAgICAgICAgICAgaWYgKGdldGJ1ZmZlcihhcmcsIChQeV9idWZmZXIqKXAsICZidWYpIDwgMCkKQEAgLTkwNCw3ICs5MzEsNyBAQAogICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIGFyZywgc2FyZywgbGVuLCAxLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBhbnkgYnl0ZXMtbGlrZSBvYmplY3QgKi8KLSAgICAgICAgICAgICAgICBjaGFyICpidWY7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCBwLCAmYnVmKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgfQpAQCAtOTM0LDcgKzk2MSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogcmVhZC1vbmx5IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAgICAgLyogWFhYIFJlYWxseT8gKi8KLSAgICAgICAgICAgICAgICBjaGFyICpidWY7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQgPSBjb252ZXJ0YnVmZmVyKGFyZywgcCwgJmJ1Zik7CiAgICAgICAgICAgICAgICAgaWYgKGNvdW50IDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYnVmLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC0xMDUxLDM1ICsxMDc4LDI1IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIihBc0NoYXJCdWZmZXIgZmFpbGVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnU7Ci0KLSAgICAgICAgICAgIC8qIENvbnZlcnQgb2JqZWN0IHRvIFVuaWNvZGUgKi8KLSAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChhcmcpOwotICAgICAgICAgICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgInN0cmluZyBvciB1bmljb2RlIG9yIHRleHQgYnVmZmVyIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotCisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CiAgICAgICAgICAgICAvKiBFbmNvZGUgb2JqZWN0OyB1c2UgZGVmYXVsdCBlcnJvciBoYW5kbGluZyAqLwotICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwKKyAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKGFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoZW5jb2RpbmcgZmFpbGVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHMpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAotICAgICAgICAgICAgICAgICAgICAiKGVuY29kZXIgZmFpbGVkIHRvIHJldHVybiBieXRlcykiLAotICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhzKSk7CiAgICAgICAgICAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShzKTsKICAgICAgICAgICAgIHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHMpOwogICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHB0ciA9ICIiOwogICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCisgICAgICAgICAgICAgICAgcmVjb2RlX3N0cmluZ3MgPyAic3RyIiA6ICJzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSIsCisgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOworICAgICAgICB9CiAKICAgICAgICAgLyogV3JpdGUgb3V0cHV0OyBvdXRwdXQgaXMgZ3VhcmFudGVlZCB0byBiZSAwLXRlcm1pbmF0ZWQgKi8KICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7CkBAIC0xMTI5LDcgKzExNDYsNyBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoc2l6ZSArIDEgPiBCVUZGRVJfTEVOKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCBzdHJpbmcgdG9vIGxvbmcgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiglemQsIG1heGltdW0gbGVuZ3RoICV6ZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3Qpc2l6ZSwgKFB5X3NzaXplX3QpKEJVRkZFUl9MRU4tMSkpOwpAQCAtMTI4Myw3ICsxMzAwLDcgQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLWNvbnZlcnRidWZmZXIoUHlPYmplY3QgKmFyZywgdm9pZCAqKnAsIGNoYXIgKiplcnJtc2cpCitjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKipwLCBjb25zdCBjaGFyICoqZXJybXNnKQogewogICAgIFB5QnVmZmVyUHJvY3MgKnBiID0gUHlfVFlQRShhcmcpLT50cF9hc19idWZmZXI7CiAgICAgUHlfc3NpemVfdCBjb3VudDsKQEAgLTEzMDUsNyArMTMyMiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWdldGJ1ZmZlcihQeU9iamVjdCAqYXJnLCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgKiplcnJtc2cpCitnZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjb25zdCBjaGFyICoqZXJybXNnKQogewogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCB2aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApIHsKICAgICAgICAgKmVycm1zZyA9ICJieXRlcy1saWtlIG9iamVjdCI7CkBAIC0xMzkxLDkgKzE0MDgsMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAogICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHMoYXJncywga2V5d29yZHMsIGZvcm1hdCwga3dsaXN0LCAmbHZhLCAwKTsKKyAgICB2YV9lbmQobHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xNDE1LDEwICsxNDMzLDEzOCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICB2YV9jb3B5KGx2YSwgdmEpOwogCiAgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3JkcyhhcmdzLCBrZXl3b3JkcywgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmbHZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZ2YSwgMCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJnZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVN0YWNrKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChrd25hbWVzICE9IE5VTEwgJiYgIVB5VHVwbGVfQ2hlY2soa3duYW1lcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsIHBhcnNlciwgJnZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGt3bmFtZXMgIT0gTlVMTCAmJiAhUHlUdXBsZV9DaGVjayhrd25hbWVzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIHBhcnNlcik7CisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChhcmdzLCBuYXJncywgTlVMTCwga3duYW1lcywgcGFyc2VyLCAmdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKKworaW50CitfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCB2YSkKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgbHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9jb3B5KGx2YSwgdmEpOworCisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCB2YSkKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgbHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9jb3B5KGx2YSwgdmEpOworCisgICAgcmV0dmFsID0gdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoYXJncywga2V5d29yZHMsIHBhcnNlciwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTE0NDgsNyArMTU5NCw4IEBACiAgICAgY29uc3QgY2hhciAqZm5hbWUsICptc2csICpjdXN0b21fbXNnLCAqa2V5d29yZDsKICAgICBpbnQgbWluID0gSU5UX01BWDsKICAgICBpbnQgbWF4ID0gSU5UX01BWDsKLSAgICBpbnQgaSwgbGVuOworICAgIGludCBpLCBwb3MsIGxlbjsKKyAgICBpbnQgc2tpcCA9IDA7CiAgICAgUHlfc3NpemVfdCBuYXJncywgbmtleXdvcmRzOwogICAgIFB5T2JqZWN0ICpjdXJyZW50X2FyZzsKICAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOwpAQCAtMTQ3Niw5ICsxNjIzLDE3IEBACiAgICAgICAgICAgICBjdXN0b21fbXNnKys7CiAgICAgfQogCisgICAgLyogc2NhbiBrd2xpc3QgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgKi8KKyAgICBmb3IgKHBvcyA9IDA7IGt3bGlzdFtwb3NdICYmICEqa3dsaXN0W3Bvc107IHBvcysrKSB7CisgICAgfQogICAgIC8qIHNjYW4ga3dsaXN0IGFuZCBnZXQgZ3JlYXRlc3QgcG9zc2libGUgbmJyIG9mIGFyZ3MgKi8KLSAgICBmb3IgKGxlbj0wOyBrd2xpc3RbbGVuXTsgbGVuKyspCi0gICAgICAgIGNvbnRpbnVlOworICAgIGZvciAobGVuID0gcG9zOyBrd2xpc3RbbGVuXTsgbGVuKyspIHsKKyAgICAgICAgaWYgKCEqa3dsaXN0W2xlbl0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkga2V5d29yZCBwYXJhbWV0ZXIgbmFtZSIpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAobGVuID4gU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMpIHsKICAgICAgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIGxlbik7CkBAIC0xNTA3LDcgKzE2NjIsNyBAQAogICAgICAgICBrZXl3b3JkID0ga3dsaXN0W2ldOwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKICAgICAgICAgICAgIGlmIChtaW4gIT0gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICh8IHNwZWNpZmllZCB0d2ljZSkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KQEAgLTE1MTYsMTQgKzE2NzEsMTQgQEAKICAgICAgICAgICAgIGZvcm1hdCsrOwogCiAgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKICAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KQEAgLTE1MzEsNiArMTY4NiwxNyBAQAogICAgICAgICAgICAgbWF4ID0gaTsKICAgICAgICAgICAgIGZvcm1hdCsrOwogCisgICAgICAgICAgICBpZiAobWF4IDwgcG9zKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgJCIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNraXApIHsKKyAgICAgICAgICAgICAgICAvKiBOb3cgd2Uga25vdyB0aGUgbWluaW1hbCBhbmQgdGhlIG1heGltYWwgbnVtYmVycyBvZgorICAgICAgICAgICAgICAgICAqIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFuZCBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGgKKyAgICAgICAgICAgICAgICAgKiBpbmZvcm1hdGl2ZSBtZXNzYWdlIChzZWUgYmVsb3cpLiAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1heCA8IG5hcmdzKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgpAQCAtMTU0MSw2NiArMTcwNyw5MCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIGtleXdvcmQgbGlzdCBlbnRyaWVzICglZCkgdGhhbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXJzICglZCkiLCBsZW4sIGkpOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOwotICAgICAgICBpZiAobmtleXdvcmRzKSB7Ci0gICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGtleXdvcmRzLCBrZXl3b3JkKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKLSAgICAgICAgICAgIC0tbmtleXdvcmRzOwotICAgICAgICAgICAgaWYgKGkgPCBuYXJncykgewotICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IGdpdmVuIGJ5IG5hbWUgKCclcycpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgaWYgKCFza2lwKSB7CisgICAgICAgICAgICBjdXJyZW50X2FyZyA9IE5VTEw7CisgICAgICAgICAgICBpZiAobmtleXdvcmRzICYmIGkgPj0gcG9zKSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrZXl3b3Jkcywga2V5d29yZCk7CisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X2FyZyAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgICAgIC0tbmtleXdvcmRzOworICAgICAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogYXJnIHByZXNlbnQgaW4gdHVwbGUgYW5kIGluIGRpY3QgKi8KKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHBvc2l0aW9uICglZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKQorICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKKworICAgICAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICAgICAgbXNnID0gY29udmVydGl0ZW0oY3VycmVudF9hcmcsICZmb3JtYXQsIHBfdmEsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBmbmFtZSwgY3VzdG9tX21zZyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGkgPCBtaW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IHBvcykgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKG1pbiA9PSBJTlRfTUFYKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChtYXggPT0gSU5UX01BWCk7CisgICAgICAgICAgICAgICAgICAgIHNraXAgPSAxOworICAgICAgICAgICAgICAgICAgICAvKiBBdCB0aGF0IG1vbWVudCB3ZSBzdGlsbCBkb24ndCBrbm93IHRoZSBtaW5pbWFsIGFuZAorICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbWF4aW1hbCBudW1iZXJzIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgUmFpc2luZworICAgICAgICAgICAgICAgICAgICAgKiBhbiBleGNlcHRpb24gaXMgZGVmZXJyZWQgdW50aWwgd2UgZW5jb3VudGVyIHwgYW5kICQKKyAgICAgICAgICAgICAgICAgICAgICogb3IgdGhlIGVuZCBvZiB0aGUgZm9ybWF0LiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCisgICAgICAgICAgICAgKiBmdWxmaWxsZWQgYW5kIG5vIGtleXdvcmQgYXJncyBsZWZ0LCB3aXRoIG5vIGZ1cnRoZXIKKyAgICAgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIW5rZXl3b3JkcyAmJiAhc2tpcCkgeworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5rZXl3b3JkcyAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7Ci0gICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKLSAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKLQotICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKLSAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKLSAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7Ci0gICAgICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaSA8IG1pbikgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyAocG9zICVkKSBub3QgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKLSAgICAgICAgfQotICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKLSAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCi0gICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFua2V5d29yZHMpCi0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKIAogICAgICAgICAvKiBXZSBhcmUgaW50byBvcHRpb25hbCBhcmdzLCBza2lwIHRocnUgdG8gYW55IHJlbWFpbmluZwogICAgICAgICAgKiBrZXl3b3JkIGFyZ3MgKi8KICAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgcF92YSwgZmxhZ3MpOwogICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLCAiJXM6ICclcyciLCBtc2csCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICIlczogJyVzJyIsIG1zZywKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOwogICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoc2tpcCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChQeV9NSU4ocG9zLCBtaW4pIDwgaSkgPyAiYXQgbGVhc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgUHlfTUlOKHBvcywgbWluKSwgbmFyZ3MpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisKICAgICBpZiAoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgJiYgKCpmb3JtYXQgIT0gJ3wnKSAmJiAoKmZvcm1hdCAhPSAnJCcpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJtb3JlIGFyZ3VtZW50IHNwZWNpZmllcnMgdGhhbiBrZXl3b3JkIGxpc3QgZW50cmllcyAiCiAgICAgICAgICAgICAiKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykiLCBmb3JtYXQpOwogICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKQEAgLTE2MTgsNyArMTgwOCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwga3dsaXN0W2ldKSkgeworICAgICAgICAgICAgICAgIGlmICgqa3dsaXN0W2ldICYmICFQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksIGt3bGlzdFtpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjM3LDcgKzE4MjcsMzg4IEBACiB9CiAKIAotc3RhdGljIGNoYXIgKgorLyogTGlzdCBvZiBzdGF0aWMgcGFyc2Vycy4gKi8KK3N0YXRpYyBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqc3RhdGljX2FyZ19wYXJzZXJzID0gTlVMTDsKKworc3RhdGljIGludAorcGFyc2VyX2luaXQoc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlcikKK3sKKyAgICBjb25zdCBjaGFyICogY29uc3QgKmtleXdvcmRzOworICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgKm1zZzsKKyAgICBpbnQgaSwgbGVuLCBtaW4sIG1heCwgbmt3OworICAgIFB5T2JqZWN0ICprd3R1cGxlOworCisgICAgYXNzZXJ0KHBhcnNlci0+Zm9ybWF0ICE9IE5VTEwpOworICAgIGFzc2VydChwYXJzZXItPmtleXdvcmRzICE9IE5VTEwpOworICAgIGlmIChwYXJzZXItPmt3dHVwbGUgIT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBncmFiIHRoZSBmdW5jdGlvbiBuYW1lIG9yIGN1c3RvbSBlcnJvciBtc2cgZmlyc3QgKG11dHVhbGx5IGV4Y2x1c2l2ZSkgKi8KKyAgICBwYXJzZXItPmZuYW1lID0gc3RyY2hyKHBhcnNlci0+Zm9ybWF0LCAnOicpOworICAgIGlmIChwYXJzZXItPmZuYW1lKSB7CisgICAgICAgIHBhcnNlci0+Zm5hbWUrKzsKKyAgICAgICAgcGFyc2VyLT5jdXN0b21fbXNnID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZyA9IHN0cmNocihwYXJzZXItPmZvcm1hdCwnOycpOworICAgICAgICBpZiAocGFyc2VyLT5jdXN0b21fbXNnKQorICAgICAgICAgICAgcGFyc2VyLT5jdXN0b21fbXNnKys7CisgICAgfQorCisgICAga2V5d29yZHMgPSBwYXJzZXItPmtleXdvcmRzOworICAgIC8qIHNjYW4ga2V5d29yZHMgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgKi8KKyAgICBmb3IgKGkgPSAwOyBrZXl3b3Jkc1tpXSAmJiAhKmtleXdvcmRzW2ldOyBpKyspIHsKKyAgICB9CisgICAgcGFyc2VyLT5wb3MgPSBpOworICAgIC8qIHNjYW4ga2V5d29yZHMgYW5kIGdldCBncmVhdGVzdCBwb3NzaWJsZSBuYnIgb2YgYXJncyAqLworICAgIGZvciAoOyBrZXl3b3Jkc1tpXTsgaSsrKSB7CisgICAgICAgIGlmICghKmtleXdvcmRzW2ldKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IGtleXdvcmQgcGFyYW1ldGVyIG5hbWUiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGxlbiA9IGk7CisKKyAgICBtaW4gPSBtYXggPSBJTlRfTUFYOworICAgIGZvcm1hdCA9IHBhcnNlci0+Zm9ybWF0OworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKKyAgICAgICAgICAgIGlmIChtaW4gIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtaW4gPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CisgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGkgPCBwYXJzZXItPnBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyICQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1heCA9IGk7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIGtleXdvcmQgbGlzdCBlbnRyaWVzICglZCkgdGhhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdCBzcGVjaWZpZXJzICglZCkiLCBsZW4sIGkpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBtc2cgPSBza2lwaXRlbSgmZm9ybWF0LCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAiJXM6ICclcyciLCBtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHBhcnNlci0+bWluID0gUHlfTUlOKG1pbiwgbGVuKTsKKyAgICBwYXJzZXItPm1heCA9IFB5X01JTihtYXgsIGxlbik7CisKKyAgICBpZiAoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgJiYgKCpmb3JtYXQgIT0gJ3wnKSAmJiAoKmZvcm1hdCAhPSAnJCcpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICJtb3JlIGFyZ3VtZW50IHNwZWNpZmllcnMgdGhhbiBrZXl3b3JkIGxpc3QgZW50cmllcyAiCisgICAgICAgICAgICAiKHJlbWFpbmluZyBmb3JtYXQ6JyVzJykiLCBmb3JtYXQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBua3cgPSBsZW4gLSBwYXJzZXItPnBvczsKKyAgICBrd3R1cGxlID0gUHlUdXBsZV9OZXcobmt3KTsKKyAgICBpZiAoa3d0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBrZXl3b3JkcyA9IHBhcnNlci0+a2V5d29yZHMgKyBwYXJzZXItPnBvczsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmt3OyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGtleXdvcmRzW2ldKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3d0dXBsZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmc3RyKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrd3R1cGxlLCBpLCBzdHIpOworICAgIH0KKyAgICBwYXJzZXItPmt3dHVwbGUgPSBrd3R1cGxlOworCisgICAgYXNzZXJ0KHBhcnNlci0+bmV4dCA9PSBOVUxMKTsKKyAgICBwYXJzZXItPm5leHQgPSBzdGF0aWNfYXJnX3BhcnNlcnM7CisgICAgc3RhdGljX2FyZ19wYXJzZXJzID0gcGFyc2VyOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgdm9pZAorcGFyc2VyX2NsZWFyKHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIpCit7CisgICAgUHlfQ0xFQVIocGFyc2VyLT5rd3R1cGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmluZF9rZXl3b3JkKFB5T2JqZWN0ICprd25hbWVzLCBQeU9iamVjdCAqKmt3c3RhY2ssIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfc3NpemVfdCBpLCBua3dhcmdzOworCisgICAgbmt3YXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgZm9yIChpPTA7IGkgPCBua3dhcmdzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgaSk7CisKKyAgICAgICAgLyogcHRyPT1wdHIgc2hvdWxkIG1hdGNoIGluIG1vc3QgY2FzZXMgc2luY2Uga2V5d29yZCBrZXlzCisgICAgICAgICAgIHNob3VsZCBiZSBpbnRlcm5lZCBzdHJpbmdzICovCisgICAgICAgIGlmIChrd25hbWUgPT0ga2V5KSB7CisgICAgICAgICAgICByZXR1cm4ga3dzdGFja1tpXTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrd25hbWUpKSB7CisgICAgICAgICAgICAvKiBpZ25vcmUgbm9uLXN0cmluZyBrZXl3b3JkIGtleXM6CisgICAgICAgICAgICAgICBhbiBlcnJvciB3aWxsIGJlIHJhaXNlZCBhYm92ZSAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVfRVEoa3duYW1lLCBrZXkpKSB7CisgICAgICAgICAgICByZXR1cm4ga3dzdGFja1tpXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAordmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkcywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqa3d0dXBsZTsKKyAgICBjaGFyIG1zZ2J1Zls1MTJdOworICAgIGludCBsZXZlbHNbMzJdOworICAgIGNvbnN0IGNoYXIgKmZvcm1hdDsKKyAgICBjb25zdCBjaGFyICptc2c7CisgICAgUHlPYmplY3QgKmtleXdvcmQ7CisgICAgaW50IGksIHBvcywgbGVuOworICAgIFB5X3NzaXplX3QgbmtleXdvcmRzOworICAgIFB5T2JqZWN0ICpjdXJyZW50X2FyZzsKKyAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOworICAgIGZyZWVsaXN0X3QgZnJlZWxpc3Q7CisgICAgUHlPYmplY3QgKiprd3N0YWNrID0gTlVMTDsKKworICAgIGZyZWVsaXN0LmVudHJpZXMgPSBzdGF0aWNfZW50cmllczsKKyAgICBmcmVlbGlzdC5maXJzdF9hdmFpbGFibGUgPSAwOworICAgIGZyZWVsaXN0LmVudHJpZXNfbWFsbG9jZWQgPSAwOworCisgICAgYXNzZXJ0KGtleXdvcmRzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGtleXdvcmRzKSk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrKGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKGtleXdvcmRzICE9IE5VTEwgfHwga3duYW1lcyAhPSBOVUxMKQorICAgICAgICAgICB8fCAoa2V5d29yZHMgPT0gTlVMTCAmJiBrd25hbWVzID09IE5VTEwpKTsKKyAgICBhc3NlcnQocGFyc2VyICE9IE5VTEwpOworICAgIGFzc2VydChwX3ZhICE9IE5VTEwpOworCisgICAgaWYgKCFwYXJzZXJfaW5pdChwYXJzZXIpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGt3dHVwbGUgPSBwYXJzZXItPmt3dHVwbGU7CisgICAgcG9zID0gcGFyc2VyLT5wb3M7CisgICAgbGVuID0gcG9zICsgUHlUdXBsZV9HRVRfU0laRShrd3R1cGxlKTsKKworICAgIGlmIChsZW4gPiBTVEFUSUNfRlJFRUxJU1RfRU5UUklFUykgeworICAgICAgICBmcmVlbGlzdC5lbnRyaWVzID0gUHlNZW1fTkVXKGZyZWVsaXN0ZW50cnlfdCwgbGVuKTsKKyAgICAgICAgaWYgKGZyZWVsaXN0LmVudHJpZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZyZWVsaXN0LmVudHJpZXNfbWFsbG9jZWQgPSAxOworICAgIH0KKworICAgIGlmIChrZXl3b3JkcyAhPSBOVUxMKSB7CisgICAgICAgIG5rZXl3b3JkcyA9IFB5RGljdF9TaXplKGtleXdvcmRzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoa3duYW1lcyAhPSBOVUxMKSB7CisgICAgICAgIG5rZXl3b3JkcyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgICAgIGt3c3RhY2sgPSBhcmdzICsgbmFyZ3M7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBua2V5d29yZHMgPSAwOworICAgIH0KKyAgICBpZiAobmFyZ3MgKyBua2V5d29yZHMgPiBsZW4pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlcyVzIHRha2VzIGF0IG1vc3QgJWQgYXJndW1lbnQlcyAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAocGFyc2VyLT5mbmFtZSA9PSBOVUxMKSA/ICJmdW5jdGlvbiIgOiBwYXJzZXItPmZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgKHBhcnNlci0+Zm5hbWUgPT0gTlVMTCkgPyAiIiA6ICIoKSIsCisgICAgICAgICAgICAgICAgICAgICBsZW4sCisgICAgICAgICAgICAgICAgICAgICAobGVuID09IDEpID8gIiIgOiAicyIsCisgICAgICAgICAgICAgICAgICAgICBuYXJncyArIG5rZXl3b3Jkcyk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgIH0KKyAgICBpZiAocGFyc2VyLT5tYXggPCBuYXJncykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzICglZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgKHBhcnNlci0+bWluICE9IElOVF9NQVgpID8gImF0IG1vc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tYXgsIG5hcmdzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorCisgICAgZm9ybWF0ID0gcGFyc2VyLT5mb3JtYXQ7CisgICAgLyogY29udmVydCB0dXBsZSBhcmdzIGFuZCBrZXl3b3JkIGFyZ3MgaW4gc2FtZSBsb29wLCB1c2luZyBrd3R1cGxlIHRvIGRyaXZlIHByb2Nlc3MgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAga2V5d29yZCA9IChpID49IHBvcykgPyBQeVR1cGxlX0dFVF9JVEVNKGt3dHVwbGUsIGkgLSBwb3MpIDogTlVMTDsKKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGFzc2VydCghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSk7CisKKyAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOworICAgICAgICBpZiAobmtleXdvcmRzICYmIGkgPj0gcG9zKSB7CisgICAgICAgICAgICBpZiAoa2V5d29yZHMgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlEaWN0X0dldEl0ZW0oa2V5d29yZHMsIGtleXdvcmQpOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9hcmcgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IGZpbmRfa2V5d29yZChrd25hbWVzLCBrd3N0YWNrLCBrZXl3b3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgIC0tbmtleXdvcmRzOworICAgICAgICAgICAgaWYgKGkgPCBuYXJncykgeworICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IGdpdmVuIGJ5IG5hbWUgKCclVScpICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gYXJnc1tpXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgbXNnID0gY29udmVydGl0ZW0oY3VycmVudF9hcmcsICZmb3JtYXQsIHBfdmEsIGZsYWdzLAorICAgICAgICAgICAgICAgIGxldmVscywgbXNnYnVmLCBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgICAgICBzZXRlcnJvcihpKzEsIG1zZywgbGV2ZWxzLCBwYXJzZXItPmZuYW1lLCBwYXJzZXItPmN1c3RvbV9tc2cpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaSA8IHBhcnNlci0+bWluKSB7CisgICAgICAgICAgICAvKiBMZXNzIGFyZ3VtZW50cyB0aGFuIHJlcXVpcmVkICovCisgICAgICAgICAgICBpZiAoaSA8IHBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X01JTihwb3MsIHBhcnNlci0+bWluKSA8IHBhcnNlci0+bWF4KSA/ICJhdCBsZWFzdCIgOiAiZXhhY3RseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X01JTihwb3MsIHBhcnNlci0+bWluKSwgbmFyZ3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlJlcXVpcmVkIGFyZ3VtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclVScgKHBvcyAlZCkgbm90IGZvdW5kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICB9CisgICAgICAgIC8qIGN1cnJlbnQgY29kZSByZXBvcnRzIHN1Y2Nlc3Mgd2hlbiBhbGwgcmVxdWlyZWQgYXJncworICAgICAgICAgKiBmdWxmaWxsZWQgYW5kIG5vIGtleXdvcmQgYXJncyBsZWZ0LCB3aXRoIG5vIGZ1cnRoZXIKKyAgICAgICAgICogdmFsaWRhdGlvbi4gWFhYIE1heWJlIHNraXAgdGhpcyBpbiBkZWJ1ZyBidWlsZCA/CisgICAgICAgICAqLworICAgICAgICBpZiAoIW5rZXl3b3JkcykgeworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBXZSBhcmUgaW50byBvcHRpb25hbCBhcmdzLCBza2lwIHRocnUgdG8gYW55IHJlbWFpbmluZworICAgICAgICAgKiBrZXl3b3JkIGFyZ3MgKi8KKyAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgcF92YSwgZmxhZ3MpOworICAgICAgICBhc3NlcnQobXNnID09IE5VTEwpOworICAgIH0KKworICAgIGFzc2VydChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpIHx8ICgqZm9ybWF0ID09ICd8JykgfHwgKCpmb3JtYXQgPT0gJyQnKSk7CisKKyAgICAvKiBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGV4dHJhbmVvdXMga2V5d29yZCBhcmd1bWVudHMgKi8KKyAgICBpZiAobmtleXdvcmRzID4gMCkgeworICAgICAgICBpZiAoa2V5d29yZHMgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGtleXdvcmRzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaW50IG1hdGNoOworICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1hdGNoID0gUHlTZXF1ZW5jZV9Db250YWlucyhrd3R1cGxlLCBrZXkpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaCA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclVScgaXMgYW4gaW52YWxpZCBrZXl3b3JkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfc3NpemVfdCBqLCBua3dhcmdzOworCisgICAgICAgICAgICBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICAgICAgICAgIGZvciAoaj0wOyBqIDwgbmt3YXJnczsgaisrKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgaik7CisgICAgICAgICAgICAgICAgaW50IG1hdGNoOworCisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtYXRjaCA9IFB5U2VxdWVuY2VfQ29udGFpbnMoa3d0dXBsZSwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPD0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOworfQorCitzdGF0aWMgaW50Cit2Z2V0YXJnc2tleXdvcmRzZmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzKQoreworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKworICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CisKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICByZXR1cm4gdmdldGFyZ3NrZXl3b3Jkc2Zhc3RfaW1wbChzdGFjaywgbmFyZ3MsIGtleXdvcmRzLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlciwgcF92YSwgZmxhZ3MpOworfQorCisKK3N0YXRpYyBjb25zdCBjaGFyICoKIHNraXBpdGVtKGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzKQogewogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKQEAgLTE2NTgsMTAgKzIyMjksOCBAQAogICAgIGNhc2UgJ0knOiAvKiBpbnQgc2l6ZWQgYml0ZmllbGQgKi8KICAgICBjYXNlICdsJzogLyogbG9uZyBpbnQgKi8KICAgICBjYXNlICdrJzogLyogbG9uZyBpbnQgc2l6ZWQgYml0ZmllbGQgKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ0wnOiAvKiBQWV9MT05HX0xPTkcgKi8KLSAgICBjYXNlICdLJzogLyogUFlfTE9OR19MT05HIHNpemVkIGJpdGZpZWxkICovCi0jZW5kaWYKKyAgICBjYXNlICdMJzogLyogbG9uZyBsb25nICovCisgICAgY2FzZSAnSyc6IC8qIGxvbmcgbG9uZyBzaXplZCBiaXRmaWVsZCAqLwogICAgIGNhc2UgJ24nOiAvKiBQeV9zc2l6ZV90ICovCiAgICAgY2FzZSAnZic6IC8qIGZsb2F0ICovCiAgICAgY2FzZSAnZCc6IC8qIGRvdWJsZSAqLwpAQCAtMTY3Myw3ICsyMjQyLDkgQEAKICAgICBjYXNlICdZJzogLyogc3RyaW5nIG9iamVjdCAqLwogICAgIGNhc2UgJ1UnOiAvKiB1bmljb2RlIHN0cmluZyBvYmplY3QgKi8KICAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMTY4MSw3ICsyMjUyLDkgQEAKIAogICAgIGNhc2UgJ2UnOiAvKiBzdHJpbmcgd2l0aCBlbmNvZGluZyAqLwogICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOworICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoISgqZm9ybWF0ID09ICdzJyB8fCAqZm9ybWF0ID09ICd0JykpCiAgICAgICAgICAgICAgICAgLyogYWZ0ZXIgJ2UnLCBvbmx5ICdzJyBhbmQgJ3QnIGlzIGFsbG93ZWQgKi8KICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTE2OTYsMTIgKzIyNjksMTYgQEAKICAgICBjYXNlICdaJzogLyogdW5pY29kZSBzdHJpbmcgb3IgTm9uZSAqLwogICAgIGNhc2UgJ3cnOiAvKiBidWZmZXIsIHJlYWQtd3JpdGUgKi8KICAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY2hhciAqKik7CisgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY2hhciAqKik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIycpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGTEFHX1NJWkVfVCkKLSAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlfc3NpemVfdCAqKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGludCAqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZMQUdfU0laRV9UKQorICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlfc3NpemVfdCAqKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgaW50ICopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGMgPT0gJ3MnIHx8IGMgPT0gJ3onIHx8IGMgPT0gJ3knKSAmJiAqZm9ybWF0ID09ICcqJykgewogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwpAQCAtMTcxMywyNCArMjI5MCwzMCBAQAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoKmZvcm1hdCA9PSAnIScpIHsKICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeVR5cGVPYmplY3QqKTsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeVR5cGVPYmplY3QqKTsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKCpmb3JtYXQgPT0gJyYnKSB7CiAgICAgICAgICAgICAgICAgdHlwZWRlZiBpbnQgKCpjb252ZXJ0ZXIpKFB5T2JqZWN0ICosIHZvaWQgKik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29udmVydGVyKTsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29udmVydGVyKTsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgIGNhc2UgJygnOiAgICAgICAgICAgLyogYnlwYXNzIHR1cGxlLCBub3QgaGFuZGxlZCBhdCBhbGwgcHJldmlvdXNseSAqLwogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICptc2c7CisgICAgICAgICAgICBjb25zdCBjaGFyICptc2c7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgaWYgKCpmb3JtYXQ9PScpJykKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzY2LDE2ICsyMzQ5LDkgQEAKICAgICBQeU9iamVjdCAqKm87CiAgICAgdmFfbGlzdCB2YXJnczsKIAotI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKLSAgICB2YV9zdGFydCh2YXJncywgbWF4KTsKLSNlbHNlCi0gICAgdmFfc3RhcnQodmFyZ3MpOwotI2VuZGlmCi0KICAgICBhc3NlcnQobWluID49IDApOwogICAgIGFzc2VydChtaW4gPD0gbWF4KTsKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKLSAgICAgICAgdmFfZW5kKHZhcmdzKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgIlB5QXJnX1VucGFja1R1cGxlKCkgYXJndW1lbnQgbGlzdCBpcyBub3QgYSB0dXBsZSIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE3OTMsOSArMjM2OSwxMCBAQAogICAgICAgICAgICAgICAgICJ1bnBhY2tlZCB0dXBsZSBzaG91bGQgaGF2ZSAlcyV6ZCBlbGVtZW50cywiCiAgICAgICAgICAgICAgICAgIiBidXQgaGFzICV6ZCIsCiAgICAgICAgICAgICAgICAgKG1pbiA9PSBtYXggPyAiIiA6ICJhdCBsZWFzdCAiKSwgbWluLCBsKTsKLSAgICAgICAgdmFfZW5kKHZhcmdzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlmIChsID09IDApCisgICAgICAgIHJldHVybiAxOwogICAgIGlmIChsID4gbWF4KSB7CiAgICAgICAgIGlmIChuYW1lICE9IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCkBAIC0xODA4LDkgKzIzODUsMTQgQEAKICAgICAgICAgICAgICAgICAidW5wYWNrZWQgdHVwbGUgc2hvdWxkIGhhdmUgJXMlemQgZWxlbWVudHMsIgogICAgICAgICAgICAgICAgICIgYnV0IGhhcyAlemQiLAogICAgICAgICAgICAgICAgIChtaW4gPT0gbWF4ID8gIiIgOiAiYXQgbW9zdCAiKSwgbWF4LCBsKTsKLSAgICAgICAgdmFfZW5kKHZhcmdzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBtYXgpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgIG8gPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICoqKTsKICAgICAgICAgKm8gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwpAQCAtMTg2MCw2ICsyNDQyLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQKK19QeUFyZ19GaW5pKHZvaWQpCit7CisgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnRtcCwgKnMgPSBzdGF0aWNfYXJnX3BhcnNlcnM7CisgICAgd2hpbGUgKHMpIHsKKyAgICAgICAgdG1wID0gcy0+bmV4dDsKKyAgICAgICAgcy0+bmV4dCA9IE5VTEw7CisgICAgICAgIHBhcnNlcl9jbGVhcihzKTsKKyAgICAgICAgcyA9IHRtcDsKKyAgICB9CisgICAgc3RhdGljX2FyZ19wYXJzZXJzID0gTlVMTDsKK30KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9OwogI2VuZGlmCmRpZmYgLS1naXQgYS9QeXRob24vZ3JhbWluaXQuYyBiL1B5dGhvbi9ncmFtaW5pdC5jCmluZGV4IDgyMTJiMmEuLmYyNTg0ZTAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ncmFtaW5pdC5jCisrKyBiL1B5dGhvbi9ncmFtaW5pdC5jCkBAIC0yMDQsMTEgKzIwNCwxMyBAQAogICAgIHszMiwgN30sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV83WzNdID0gewogICAgIHszMCwgMTJ9LAogICAgIHszNCwgM30sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzhbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV84WzJdID0geworICAgIHszMiwgMTN9LAogICAgIHswLCA4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV85WzJdID0gewpAQCAtMjIxLDM1ICsyMjMsMzkgQEAKICAgICB7MCwgMTB9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzExWzNdID0gewotICAgIHszMCwgMTN9LAotICAgIHszMiwgMTR9LAorICAgIHszMCwgMTR9LAorICAgIHszMiwgMTV9LAogICAgIHswLCAxMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfMTJbM10gPSB7CiAgICAgezMyLCA3fSwKLSAgICB7MzEsIDE1fSwKKyAgICB7MzEsIDE2fSwKICAgICB7MCwgMTJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzEzWzJdID0gewotICAgIHszMiwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzlfMTNbMV0gPSB7CiAgICAgezAsIDEzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV8xNFsyXSA9IHsKLSAgICB7MzAsIDE2fSwKLSAgICB7MzQsIDN9LAorICAgIHszMiwgMTV9LAorICAgIHswLCAxNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfOV8xNVszXSA9IHsKKyAgICB7MzAsIDE3fSwKKyAgICB7MzQsIDN9LAorICAgIHswLCAxNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzlfMTZbMV0gPSB7CiAgICAgezI2LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xNlszXSA9IHsKLSAgICB7MzIsIDE0fSwKLSAgICB7MzEsIDE3fSwKLSAgICB7MCwgMTZ9LAorc3RhdGljIGFyYyBhcmNzXzlfMTdbM10gPSB7CisgICAgezMyLCAxNX0sCisgICAgezMxLCAxOH0sCisgICAgezAsIDE3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xN1sxXSA9IHsKLSAgICB7MjYsIDEzfSwKK3N0YXRpYyBhcmMgYXJjc185XzE4WzFdID0geworICAgIHsyNiwgMTR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfOVsxOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzlbMTldID0gewogICAgIHszLCBhcmNzXzlfMH0sCiAgICAgezMsIGFyY3NfOV8xfSwKICAgICB7MywgYXJjc185XzJ9LApAQCAtMjU3LDE3ICsyNjMsMTggQEAKICAgICB7MSwgYXJjc185XzR9LAogICAgIHs0LCBhcmNzXzlfNX0sCiAgICAgezIsIGFyY3NfOV82fSwKLSAgICB7MiwgYXJjc185Xzd9LAotICAgIHsxLCBhcmNzXzlfOH0sCisgICAgezMsIGFyY3NfOV83fSwKKyAgICB7MiwgYXJjc185Xzh9LAogICAgIHsyLCBhcmNzXzlfOX0sCiAgICAgezMsIGFyY3NfOV8xMH0sCiAgICAgezMsIGFyY3NfOV8xMX0sCiAgICAgezMsIGFyY3NfOV8xMn0sCi0gICAgezIsIGFyY3NfOV8xM30sCisgICAgezEsIGFyY3NfOV8xM30sCiAgICAgezIsIGFyY3NfOV8xNH0sCi0gICAgezEsIGFyY3NfOV8xNX0sCi0gICAgezMsIGFyY3NfOV8xNn0sCi0gICAgezEsIGFyY3NfOV8xN30sCisgICAgezMsIGFyY3NfOV8xNX0sCisgICAgezEsIGFyY3NfOV8xNn0sCisgICAgezMsIGFyY3NfOV8xN30sCisgICAgezEsIGFyY3NfOV8xOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzEwXzBbMV0gPSB7CiAgICAgezIzLCAxfSwKQEAgLTMxOSwxMSArMzI2LDEzIEBACiAgICAgezMyLCA3fSwKICAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzdbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTFfN1szXSA9IHsKICAgICB7MzYsIDEyfSwKICAgICB7MzQsIDN9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfOFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMV84WzJdID0geworICAgIHszMiwgMTN9LAogICAgIHswLCA4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfOVsyXSA9IHsKQEAgLTMzNiwzNSArMzQ1LDM5IEBACiAgICAgezAsIDEwfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfMTFbM10gPSB7Ci0gICAgezM2LCAxM30sCi0gICAgezMyLCAxNH0sCisgICAgezM2LCAxNH0sCisgICAgezMyLCAxNX0sCiAgICAgezAsIDExfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfMTJbM10gPSB7CiAgICAgezMyLCA3fSwKLSAgICB7MzEsIDE1fSwKKyAgICB7MzEsIDE2fSwKICAgICB7MCwgMTJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xM1syXSA9IHsKLSAgICB7MzIsIDE0fSwKK3N0YXRpYyBhcmMgYXJjc18xMV8xM1sxXSA9IHsKICAgICB7MCwgMTN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV8xNFsyXSA9IHsKLSAgICB7MzYsIDE2fSwKLSAgICB7MzQsIDN9LAorICAgIHszMiwgMTV9LAorICAgIHswLCAxNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzE1WzFdID0geworc3RhdGljIGFyYyBhcmNzXzExXzE1WzNdID0geworICAgIHszNiwgMTd9LAorICAgIHszNCwgM30sCisgICAgezAsIDE1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTFfMTZbMV0gPSB7CiAgICAgezI2LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTZbM10gPSB7Ci0gICAgezMyLCAxNH0sCi0gICAgezMxLCAxN30sCi0gICAgezAsIDE2fSwKK3N0YXRpYyBhcmMgYXJjc18xMV8xN1szXSA9IHsKKyAgICB7MzIsIDE1fSwKKyAgICB7MzEsIDE4fSwKKyAgICB7MCwgMTd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xN1sxXSA9IHsKLSAgICB7MjYsIDEzfSwKK3N0YXRpYyBhcmMgYXJjc18xMV8xOFsxXSA9IHsKKyAgICB7MjYsIDE0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzExWzE4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMTldID0gewogICAgIHszLCBhcmNzXzExXzB9LAogICAgIHszLCBhcmNzXzExXzF9LAogICAgIHszLCBhcmNzXzExXzJ9LApAQCAtMzcyLDE3ICszODUsMTggQEAKICAgICB7MSwgYXJjc18xMV80fSwKICAgICB7NCwgYXJjc18xMV81fSwKICAgICB7MiwgYXJjc18xMV82fSwKLSAgICB7MiwgYXJjc18xMV83fSwKLSAgICB7MSwgYXJjc18xMV84fSwKKyAgICB7MywgYXJjc18xMV83fSwKKyAgICB7MiwgYXJjc18xMV84fSwKICAgICB7MiwgYXJjc18xMV85fSwKICAgICB7MywgYXJjc18xMV8xMH0sCiAgICAgezMsIGFyY3NfMTFfMTF9LAogICAgIHszLCBhcmNzXzExXzEyfSwKLSAgICB7MiwgYXJjc18xMV8xM30sCisgICAgezEsIGFyY3NfMTFfMTN9LAogICAgIHsyLCBhcmNzXzExXzE0fSwKLSAgICB7MSwgYXJjc18xMV8xNX0sCi0gICAgezMsIGFyY3NfMTFfMTZ9LAotICAgIHsxLCBhcmNzXzExXzE3fSwKKyAgICB7MywgYXJjc18xMV8xNX0sCisgICAgezEsIGFyY3NfMTFfMTZ9LAorICAgIHszLCBhcmNzXzExXzE3fSwKKyAgICB7MSwgYXJjc18xMV8xOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzEyXzBbMV0gPSB7CiAgICAgezIzLCAxfSwKQEAgLTQ0NSw1NCArNDU5LDc3IEBACiBzdGF0aWMgYXJjIGFyY3NfMTZfMFsxXSA9IHsKICAgICB7NDcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8xWzNdID0geworc3RhdGljIGFyYyBhcmNzXzE2XzFbNF0gPSB7CiAgICAgezQ4LCAyfSwKLSAgICB7MzEsIDN9LAorICAgIHs0OSwgM30sCisgICAgezMxLCA0fSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzJbMl0gPSB7Ci0gICAgezQ5LCA0fSwKLSAgICB7OSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfMTZfMlsxXSA9IHsKKyAgICB7MCwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzE2XzNbMl0gPSB7Ci0gICAgezQ5LCA1fSwKKyAgICB7NTAsIDJ9LAorICAgIHs5LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTZfNFsyXSA9IHsKKyAgICB7NTAsIDV9LAogICAgIHs0NywgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKIHN0YXRpYyBhcmMgYXJjc18xNl81WzJdID0gewotICAgIHszMSwgM30sCisgICAgezMxLCA0fSwKICAgICB7MCwgNX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18xNls2XSA9IHsKICAgICB7MSwgYXJjc18xNl8wfSwKLSAgICB7MywgYXJjc18xNl8xfSwKLSAgICB7MiwgYXJjc18xNl8yfSwKKyAgICB7NCwgYXJjc18xNl8xfSwKKyAgICB7MSwgYXJjc18xNl8yfSwKICAgICB7MiwgYXJjc18xNl8zfSwKLSAgICB7MSwgYXJjc18xNl80fSwKKyAgICB7MiwgYXJjc18xNl80fSwKICAgICB7MiwgYXJjc18xNl81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMFsyXSA9IHsKLSAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTdfMFsxXSA9IHsKKyAgICB7MjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzE3XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTdfMlsyXSA9IHsKKyAgICB7MzEsIDN9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTdfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xN180WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzVdID0geworICAgIHsxLCBhcmNzXzE3XzB9LAorICAgIHsxLCBhcmNzXzE3XzF9LAorICAgIHsyLCBhcmNzXzE3XzJ9LAorICAgIHsxLCBhcmNzXzE3XzN9LAorICAgIHsxLCBhcmNzXzE3XzR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOF8wWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezUxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMThfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMlszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xOF8yWzNdID0gewogICAgIHsyNiwgMX0sCi0gICAgezUwLCAxfSwKKyAgICB7NTEsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE3WzNdID0gewotICAgIHsyLCBhcmNzXzE3XzB9LAotICAgIHsyLCBhcmNzXzE3XzF9LAotICAgIHszLCBhcmNzXzE3XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc18xOFszXSA9IHsKKyAgICB7MiwgYXJjc18xOF8wfSwKKyAgICB7MiwgYXJjc18xOF8xfSwKKyAgICB7MywgYXJjc18xOF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMFsxM10gPSB7Ci0gICAgezUxLCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xOV8wWzEzXSA9IHsKICAgICB7NTIsIDF9LAogICAgIHs1MywgMX0sCiAgICAgezU0LCAxfSwKQEAgLTUwNSw2MCArNTQyLDUxIEBACiAgICAgezYxLCAxfSwKICAgICB7NjIsIDF9LAogICAgIHs2MywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE4XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMThbMl0gPSB7Ci0gICAgezEzLCBhcmNzXzE4XzB9LAotICAgIHsxLCBhcmNzXzE4XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8wWzFdID0gewogICAgIHs2NCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzE5XzFbMV0gPSB7Ci0gICAgezY1LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMTlfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18xOVszXSA9IHsKLSAgICB7MSwgYXJjc18xOV8wfSwKLSAgICB7MSwgYXJjc18xOV8xfSwKLSAgICB7MSwgYXJjc18xOV8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjBfMFsxXSA9IHsKLSAgICB7NjYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yMF8xWzFdID0gewogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzIwWzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18xOVsyXSA9IHsKKyAgICB7MTMsIGFyY3NfMTlfMH0sCisgICAgezEsIGFyY3NfMTlfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzIwXzBbMV0gPSB7CisgICAgezY1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjBfMVsxXSA9IHsKKyAgICB7NjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yMF8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzIwWzNdID0gewogICAgIHsxLCBhcmNzXzIwXzB9LAogICAgIHsxLCBhcmNzXzIwXzF9LAorICAgIHsxLCBhcmNzXzIwXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMV8wWzVdID0geworc3RhdGljIGFyYyBhcmNzXzIxXzBbMV0gPSB7CiAgICAgezY3LCAxfSwKLSAgICB7NjgsIDF9LAotICAgIHs2OSwgMX0sCi0gICAgezcwLCAxfSwKLSAgICB7NzEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMV8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIxWzJdID0gewotICAgIHs1LCBhcmNzXzIxXzB9LAorICAgIHsxLCBhcmNzXzIxXzB9LAogICAgIHsxLCBhcmNzXzIxXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yMl8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzIyXzBbNV0gPSB7CisgICAgezY4LCAxfSwKKyAgICB7NjksIDF9LAorICAgIHs3MCwgMX0sCisgICAgezcxLCAxfSwKICAgICB7NzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yMl8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzIyWzJdID0gewotICAgIHsxLCBhcmNzXzIyXzB9LAorICAgIHs1LCBhcmNzXzIyXzB9LAogICAgIHsxLCBhcmNzXzIyXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yM18wWzFdID0gewpAQCAtNTc0LDE0MiArNjAyLDEzMyBAQAogc3RhdGljIGFyYyBhcmNzXzI0XzBbMV0gPSB7CiAgICAgezc0LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNF8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI0WzJdID0geworICAgIHsxLCBhcmNzXzI0XzB9LAorICAgIHsxLCBhcmNzXzI0XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yNV8wWzFdID0geworICAgIHs3NSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI1XzFbMl0gPSB7CiAgICAgezksIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjRfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNV8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI0WzNdID0gewotICAgIHsxLCBhcmNzXzI0XzB9LAotICAgIHsyLCBhcmNzXzI0XzF9LAotICAgIHsxLCBhcmNzXzI0XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNV8wWzFdID0gewotICAgIHs0OSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI1XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjVbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI1WzNdID0gewogICAgIHsxLCBhcmNzXzI1XzB9LAotICAgIHsxLCBhcmNzXzI1XzF9LAorICAgIHsyLCBhcmNzXzI1XzF9LAorICAgIHsxLCBhcmNzXzI1XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yNl8wWzFdID0gewotICAgIHs3NSwgMX0sCisgICAgezUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yNl8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzJdID0geworICAgIHsxLCBhcmNzXzI2XzB9LAorICAgIHsxLCBhcmNzXzI2XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yN18wWzFdID0geworICAgIHs3NiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI3XzFbMl0gPSB7CiAgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzJbMl0gPSB7Ci0gICAgezc2LCAzfSwKK3N0YXRpYyBhcmMgYXJjc18yN18yWzJdID0geworICAgIHs3NywgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI3XzNbMV0gPSB7CiAgICAgezI2LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yN180WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI2WzVdID0gewotICAgIHsxLCBhcmNzXzI2XzB9LAotICAgIHsyLCBhcmNzXzI2XzF9LAotICAgIHsyLCBhcmNzXzI2XzJ9LAotICAgIHsxLCBhcmNzXzI2XzN9LAotICAgIHsxLCBhcmNzXzI2XzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc18yN1s1XSA9IHsKKyAgICB7MSwgYXJjc18yN18wfSwKKyAgICB7MiwgYXJjc18yN18xfSwKKyAgICB7MiwgYXJjc18yN18yfSwKKyAgICB7MSwgYXJjc18yN18zfSwKKyAgICB7MSwgYXJjc18yN180fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMFsyXSA9IHsKLSAgICB7NzcsIDF9LAorc3RhdGljIGFyYyBhcmNzXzI4XzBbMl0gPSB7CiAgICAgezc4LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yN1syXSA9IHsKLSAgICB7MiwgYXJjc18yN18wfSwKLSAgICB7MSwgYXJjc18yN18xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfMFsxXSA9IHsKICAgICB7NzksIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18yOF8xWzFdID0gewotICAgIHs4MCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI4XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjhbM10gPSB7Ci0gICAgezEsIGFyY3NfMjhfMH0sCi0gICAgezEsIGFyY3NfMjhfMX0sCi0gICAgezEsIGFyY3NfMjhfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzBbMV0gPSB7Ci0gICAgezc2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMVszXSA9IHsKLSAgICB7ODEsIDJ9LAotICAgIHs4MiwgMn0sCi0gICAgezEyLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMls0XSA9IHsKLSAgICB7ODEsIDJ9LAotICAgIHs4MiwgMn0sCi0gICAgezEyLCAzfSwKLSAgICB7NzksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8zWzFdID0gewotICAgIHs3OSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzRbM10gPSB7Ci0gICAgezMzLCA1fSwKLSAgICB7MTMsIDZ9LAotICAgIHs4MywgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzVbMV0gPSB7Ci0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV82WzFdID0gewotICAgIHs4MywgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzdbMV0gPSB7Ci0gICAgezE1LCA1fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzhdID0gewotICAgIHsxLCBhcmNzXzI5XzB9LAotICAgIHszLCBhcmNzXzI5XzF9LAotICAgIHs0LCBhcmNzXzI5XzJ9LAotICAgIHsxLCBhcmNzXzI5XzN9LAotICAgIHszLCBhcmNzXzI5XzR9LAotICAgIHsxLCBhcmNzXzI5XzV9LAotICAgIHsxLCBhcmNzXzI5XzZ9LAotICAgIHsxLCBhcmNzXzI5Xzd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8wWzFdID0gewotICAgIHsyMywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzMwXzFbMl0gPSB7Ci0gICAgezg1LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzMwXzJbMV0gPSB7Ci0gICAgezIzLCAzfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjhbMl0gPSB7CisgICAgezIsIGFyY3NfMjhfMH0sCisgICAgezEsIGFyY3NfMjhfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzBbMV0gPSB7CisgICAgezgwLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMVsxXSA9IHsKKyAgICB7ODEsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzI5WzNdID0geworICAgIHsxLCBhcmNzXzI5XzB9LAorICAgIHsxLCBhcmNzXzI5XzF9LAorICAgIHsxLCBhcmNzXzI5XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8wWzFdID0geworICAgIHs3NywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzFbM10gPSB7CisgICAgezgyLCAyfSwKKyAgICB7ODMsIDJ9LAorICAgIHsxMiwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzJbNF0gPSB7CisgICAgezgyLCAyfSwKKyAgICB7ODMsIDJ9LAorICAgIHsxMiwgM30sCisgICAgezgwLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzBfM1sxXSA9IHsKLSAgICB7MCwgM30sCisgICAgezgwLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMwWzRdID0geworc3RhdGljIGFyYyBhcmNzXzMwXzRbM10gPSB7CisgICAgezMzLCA1fSwKKyAgICB7MTMsIDZ9LAorICAgIHs4NCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzVbMV0gPSB7CisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF82WzFdID0geworICAgIHs4NCwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzdbMV0gPSB7CisgICAgezE1LCA1fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMwWzhdID0gewogICAgIHsxLCBhcmNzXzMwXzB9LAotICAgIHsyLCBhcmNzXzMwXzF9LAotICAgIHsxLCBhcmNzXzMwXzJ9LAorICAgIHszLCBhcmNzXzMwXzF9LAorICAgIHs0LCBhcmNzXzMwXzJ9LAogICAgIHsxLCBhcmNzXzMwXzN9LAorICAgIHszLCBhcmNzXzMwXzR9LAorICAgIHsxLCBhcmNzXzMwXzV9LAorICAgIHsxLCBhcmNzXzMwXzZ9LAorICAgIHsxLCBhcmNzXzMwXzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8wWzFdID0gewotICAgIHsxMiwgMX0sCisgICAgezIzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMVsyXSA9IHsKLSAgICB7ODUsIDJ9LAorICAgIHs4NiwgMn0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8yWzFdID0gewpAQCAtNzI1LDM3ICs3NDQsNDUgQEAKICAgICB7MSwgYXJjc18zMV8zfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzJfMFsxXSA9IHsKLSAgICB7ODQsIDF9LAorICAgIHsxMiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMyXzFbMl0gPSB7CisgICAgezg2LCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMyXzJbMV0gPSB7CisgICAgezIzLCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzJfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zMls0XSA9IHsKKyAgICB7MSwgYXJjc18zMl8wfSwKKyAgICB7MiwgYXJjc18zMl8xfSwKKyAgICB7MSwgYXJjc18zMl8yfSwKKyAgICB7MSwgYXJjc18zMl8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzNfMFsxXSA9IHsKKyAgICB7ODUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zM18xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zMl8yWzJdID0gewotICAgIHs4NCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMzNfMlsyXSA9IHsKKyAgICB7ODUsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMyWzNdID0gewotICAgIHsxLCBhcmNzXzMyXzB9LAotICAgIHsyLCBhcmNzXzMyXzF9LAotICAgIHsyLCBhcmNzXzMyXzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zM18wWzFdID0gewotICAgIHs4NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzMzXzFbMl0gPSB7Ci0gICAgezMyLCAwfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zM1syXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzNbM10gPSB7CiAgICAgezEsIGFyY3NfMzNfMH0sCiAgICAgezIsIGFyY3NfMzNfMX0sCisgICAgezIsIGFyY3NfMzNfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM0XzBbMV0gPSB7Ci0gICAgezIzLCAxfSwKKyAgICB7ODcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNF8xWzJdID0gewotICAgIHs4MSwgMH0sCisgICAgezMyLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18zNFsyXSA9IHsKQEAgLTc2MywxOSArNzkwLDE1IEBACiAgICAgezIsIGFyY3NfMzRfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM1XzBbMV0gPSB7Ci0gICAgezg3LCAxfSwKKyAgICB7MjMsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNV8xWzFdID0gewotICAgIHsyMywgMn0sCitzdGF0aWMgYXJjIGFyY3NfMzVfMVsyXSA9IHsKKyAgICB7ODIsIDB9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzVfMlsyXSA9IHsKLSAgICB7MzIsIDF9LAotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM1WzNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zNVsyXSA9IHsKICAgICB7MSwgYXJjc18zNV8wfSwKLSAgICB7MSwgYXJjc18zNV8xfSwKLSAgICB7MiwgYXJjc18zNV8yfSwKKyAgICB7MiwgYXJjc18zNV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzZfMFsxXSA9IHsKICAgICB7ODgsIDF9LApAQCAtNzk2LDk3ICs4MTksNzYgQEAKICAgICB7ODksIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zN18xWzFdID0gewotICAgIHsyNiwgMn0sCisgICAgezIzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzdfMlsyXSA9IHsKLSAgICB7MzIsIDN9LAorICAgIHszMiwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zN18zWzFdID0gewotICAgIHsyNiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM3XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzdbNV0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzNdID0gewogICAgIHsxLCBhcmNzXzM3XzB9LAogICAgIHsxLCBhcmNzXzM3XzF9LAogICAgIHsyLCBhcmNzXzM3XzJ9LAotICAgIHsxLCBhcmNzXzM3XzN9LAotICAgIHsxLCBhcmNzXzM3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8wWzldID0geworc3RhdGljIGFyYyBhcmNzXzM4XzBbMV0gPSB7CiAgICAgezkwLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8yWzJdID0geworICAgIHszMiwgM30sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbNV0gPSB7CisgICAgezEsIGFyY3NfMzhfMH0sCisgICAgezEsIGFyY3NfMzhfMX0sCisgICAgezIsIGFyY3NfMzhfMn0sCisgICAgezEsIGFyY3NfMzhfM30sCisgICAgezEsIGFyY3NfMzhfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM5XzBbOV0gPSB7CiAgICAgezkxLCAxfSwKICAgICB7OTIsIDF9LAogICAgIHs5MywgMX0sCiAgICAgezk0LCAxfSwKKyAgICB7OTUsIDF9LAogICAgIHsxOSwgMX0sCiAgICAgezE4LCAxfSwKICAgICB7MTcsIDF9LAotICAgIHs5NSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzhbMl0gPSB7Ci0gICAgezksIGFyY3NfMzhfMH0sCi0gICAgezEsIGFyY3NfMzhfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzBbMV0gPSB7Ci0gICAgezIxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMVszXSA9IHsKLSAgICB7MTksIDJ9LAotICAgIHs5NCwgMn0sCi0gICAgezkyLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zOVszXSA9IHsKLSAgICB7MSwgYXJjc18zOV8wfSwKLSAgICB7MywgYXJjc18zOV8xfSwKLSAgICB7MSwgYXJjc18zOV8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfMFsxXSA9IHsKICAgICB7OTYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF8xWzFdID0gewotICAgIHsyNiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfMzlfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zOVsyXSA9IHsKKyAgICB7OSwgYXJjc18zOV8wfSwKKyAgICB7MSwgYXJjc18zOV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDBfMFsxXSA9IHsKKyAgICB7MjEsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180MF8xWzNdID0geworICAgIHsxOSwgMn0sCisgICAgezk1LCAyfSwKKyAgICB7OTMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MF8yWzFdID0gewotICAgIHsyNywgM30sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MF8zWzFdID0gewotICAgIHsyOCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzRbM10gPSB7Ci0gICAgezk3LCAxfSwKLSAgICB7OTgsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNVsxXSA9IHsKLSAgICB7MjcsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF82WzFdID0gewotICAgIHsyOCwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDBbOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQwWzNdID0gewogICAgIHsxLCBhcmNzXzQwXzB9LAotICAgIHsxLCBhcmNzXzQwXzF9LAorICAgIHszLCBhcmNzXzQwXzF9LAogICAgIHsxLCBhcmNzXzQwXzJ9LAotICAgIHsxLCBhcmNzXzQwXzN9LAotICAgIHszLCBhcmNzXzQwXzR9LAotICAgIHsxLCBhcmNzXzQwXzV9LAotICAgIHsxLCBhcmNzXzQwXzZ9LAotICAgIHsxLCBhcmNzXzQwXzd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8wWzFdID0gewotICAgIHs5OSwgMX0sCisgICAgezk3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMVsxXSA9IHsKICAgICB7MjYsIDJ9LApAQCAtODk3LDggKzg5OSw5IEBACiBzdGF0aWMgYXJjIGFyY3NfNDFfM1sxXSA9IHsKICAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180MV80WzJdID0gewotICAgIHs5OCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDFfNFszXSA9IHsKKyAgICB7OTgsIDF9LAorICAgIHs5OSwgNX0sCiAgICAgezAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV81WzFdID0gewpAQCAtOTE1LDcgKzkxOCw3IEBACiAgICAgezEsIGFyY3NfNDFfMX0sCiAgICAgezEsIGFyY3NfNDFfMn0sCiAgICAgezEsIGFyY3NfNDFfM30sCi0gICAgezIsIGFyY3NfNDFfNH0sCisgICAgezMsIGFyY3NfNDFfNH0sCiAgICAgezEsIGFyY3NfNDFfNX0sCiAgICAgezEsIGFyY3NfNDFfNn0sCiAgICAgezEsIGFyY3NfNDFfN30sCkBAIC05MjQsMjU4ICs5MjcsMjcwIEBACiAgICAgezEwMCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzFbMV0gPSB7Ci0gICAgezY1LCAyfSwKKyAgICB7MjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8yWzFdID0gewotICAgIHsxMDEsIDN9LAorICAgIHsyNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzNbMV0gPSB7Ci0gICAgezksIDR9LAorICAgIHsyOCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQyXzRbMV0gPSB7Ci0gICAgezI3LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180Ml80WzJdID0geworICAgIHs5OSwgNX0sCisgICAgezAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml81WzFdID0gewotICAgIHsyOCwgNn0sCisgICAgezI3LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfNlsyXSA9IHsKLSAgICB7OTgsIDd9LAotICAgIHswLCA2fSwKK3N0YXRpYyBhcmMgYXJjc180Ml82WzFdID0geworICAgIHsyOCwgN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzdbMV0gPSB7Ci0gICAgezI3LCA4fSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQyXzhbMV0gPSB7Ci0gICAgezI4LCA5fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfOVsxXSA9IHsKLSAgICB7MCwgOX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180MlsxMF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQyWzhdID0gewogICAgIHsxLCBhcmNzXzQyXzB9LAogICAgIHsxLCBhcmNzXzQyXzF9LAogICAgIHsxLCBhcmNzXzQyXzJ9LAogICAgIHsxLCBhcmNzXzQyXzN9LAotICAgIHsxLCBhcmNzXzQyXzR9LAorICAgIHsyLCBhcmNzXzQyXzR9LAogICAgIHsxLCBhcmNzXzQyXzV9LAotICAgIHsyLCBhcmNzXzQyXzZ9LAorICAgIHsxLCBhcmNzXzQyXzZ9LAogICAgIHsxLCBhcmNzXzQyXzd9LAotICAgIHsxLCBhcmNzXzQyXzh9LAotICAgIHsxLCBhcmNzXzQyXzl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18wWzFdID0gewotICAgIHsxMDIsIDF9LAorICAgIHsxMDEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18xWzFdID0gewotICAgIHsyNywgMn0sCisgICAgezY2LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMlsxXSA9IHsKLSAgICB7MjgsIDN9LAorICAgIHsxMDIsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M18zWzJdID0gewotICAgIHsxMDMsIDR9LAotICAgIHsxMDQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQzXzNbMV0gPSB7CisgICAgezksIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M180WzFdID0gewotICAgIHsyNywgNn0sCisgICAgezI3LCA1fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfNVsxXSA9IHsKLSAgICB7MjcsIDd9LAorICAgIHsyOCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzZbMV0gPSB7Ci0gICAgezI4LCA4fSwKK3N0YXRpYyBhcmMgYXJjc180M182WzJdID0geworICAgIHs5OSwgN30sCisgICAgezAsIDZ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M183WzFdID0gewotICAgIHsyOCwgOX0sCisgICAgezI3LCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfOFs0XSA9IHsKLSAgICB7MTAzLCA0fSwKLSAgICB7OTgsIDEwfSwKLSAgICB7MTA0LCA1fSwKLSAgICB7MCwgOH0sCitzdGF0aWMgYXJjIGFyY3NfNDNfOFsxXSA9IHsKKyAgICB7MjgsIDl9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M185WzFdID0gewogICAgIHswLCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMTBbMV0gPSB7Ci0gICAgezI3LCAxMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQzXzExWzFdID0gewotICAgIHsyOCwgMTJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180M18xMlsyXSA9IHsKLSAgICB7MTA0LCA1fSwKLSAgICB7MCwgMTJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDNbMTNdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180M1sxMF0gPSB7CiAgICAgezEsIGFyY3NfNDNfMH0sCiAgICAgezEsIGFyY3NfNDNfMX0sCiAgICAgezEsIGFyY3NfNDNfMn0sCi0gICAgezIsIGFyY3NfNDNfM30sCisgICAgezEsIGFyY3NfNDNfM30sCiAgICAgezEsIGFyY3NfNDNfNH0sCiAgICAgezEsIGFyY3NfNDNfNX0sCi0gICAgezEsIGFyY3NfNDNfNn0sCisgICAgezIsIGFyY3NfNDNfNn0sCiAgICAgezEsIGFyY3NfNDNfN30sCi0gICAgezQsIGFyY3NfNDNfOH0sCisgICAgezEsIGFyY3NfNDNfOH0sCiAgICAgezEsIGFyY3NfNDNfOX0sCi0gICAgezEsIGFyY3NfNDNfMTB9LAotICAgIHsxLCBhcmNzXzQzXzExfSwKLSAgICB7MiwgYXJjc180M18xMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzBbMV0gPSB7Ci0gICAgezEwNSwgMX0sCisgICAgezEwMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ0XzFbMV0gPSB7Ci0gICAgezEwNiwgMn0sCisgICAgezI3LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDRfMlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NF8yWzFdID0geworICAgIHsyOCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzNbMl0gPSB7CisgICAgezEwNCwgNH0sCisgICAgezEwNSwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzRbMV0gPSB7CisgICAgezI3LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfNVsxXSA9IHsKKyAgICB7MjcsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF82WzFdID0geworICAgIHsyOCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzdbMV0gPSB7CisgICAgezI4LCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfOFs0XSA9IHsKKyAgICB7MTA0LCA0fSwKKyAgICB7OTksIDEwfSwKKyAgICB7MTA1LCA1fSwKKyAgICB7MCwgOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzlbMV0gPSB7CisgICAgezAsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8xMFsxXSA9IHsKKyAgICB7MjcsIDExfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfMTFbMV0gPSB7CisgICAgezI4LCAxMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzEyWzJdID0geworICAgIHsxMDUsIDV9LAorICAgIHswLCAxMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180NFsxM10gPSB7CisgICAgezEsIGFyY3NfNDRfMH0sCisgICAgezEsIGFyY3NfNDRfMX0sCisgICAgezEsIGFyY3NfNDRfMn0sCisgICAgezIsIGFyY3NfNDRfM30sCisgICAgezEsIGFyY3NfNDRfNH0sCisgICAgezEsIGFyY3NfNDRfNX0sCisgICAgezEsIGFyY3NfNDRfNn0sCisgICAgezEsIGFyY3NfNDRfN30sCisgICAgezQsIGFyY3NfNDRfOH0sCisgICAgezEsIGFyY3NfNDRfOX0sCisgICAgezEsIGFyY3NfNDRfMTB9LAorICAgIHsxLCBhcmNzXzQ0XzExfSwKKyAgICB7MiwgYXJjc180NF8xMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ1XzBbMV0gPSB7CisgICAgezEwNiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ1XzFbMV0gPSB7CisgICAgezEwNywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ1XzJbMl0gPSB7CiAgICAgezMyLCAxfSwKICAgICB7MjcsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ1XzNbMV0gPSB7CiAgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDRfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NV80WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ0WzVdID0gewotICAgIHsxLCBhcmNzXzQ0XzB9LAotICAgIHsxLCBhcmNzXzQ0XzF9LAotICAgIHsyLCBhcmNzXzQ0XzJ9LAotICAgIHsxLCBhcmNzXzQ0XzN9LAotICAgIHsxLCBhcmNzXzQ0XzR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8wWzFdID0gewotICAgIHsyNiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzFbMl0gPSB7Ci0gICAgezg1LCAyfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzJbMV0gPSB7Ci0gICAgezEwNywgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzNbMV0gPSB7Ci0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ1WzVdID0gewogICAgIHsxLCBhcmNzXzQ1XzB9LAotICAgIHsyLCBhcmNzXzQ1XzF9LAotICAgIHsxLCBhcmNzXzQ1XzJ9LAorICAgIHsxLCBhcmNzXzQ1XzF9LAorICAgIHsyLCBhcmNzXzQ1XzJ9LAogICAgIHsxLCBhcmNzXzQ1XzN9LAorICAgIHsxLCBhcmNzXzQ1XzR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Nl8wWzFdID0gewotICAgIHsxMDgsIDF9LAorICAgIHsyNiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzFbMl0gPSB7CisgICAgezg2LCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ2XzJbMV0gPSB7CisgICAgezEwOCwgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ2XzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDZbNF0gPSB7CisgICAgezEsIGFyY3NfNDZfMH0sCisgICAgezIsIGFyY3NfNDZfMX0sCisgICAgezEsIGFyY3NfNDZfMn0sCisgICAgezEsIGFyY3NfNDZfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzBbMV0gPSB7CisgICAgezEwOSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ3XzFbMl0gPSB7CiAgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzJbMl0gPSB7Ci0gICAgezg1LCAzfSwKK3N0YXRpYyBhcmMgYXJjc180N18yWzJdID0geworICAgIHs4NiwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ3XzNbMV0gPSB7CiAgICAgezIzLCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180N180WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzVdID0gewotICAgIHsxLCBhcmNzXzQ2XzB9LAotICAgIHsyLCBhcmNzXzQ2XzF9LAotICAgIHsyLCBhcmNzXzQ2XzJ9LAotICAgIHsxLCBhcmNzXzQ2XzN9LAotICAgIHsxLCBhcmNzXzQ2XzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc180N1s1XSA9IHsKKyAgICB7MSwgYXJjc180N18wfSwKKyAgICB7MiwgYXJjc180N18xfSwKKyAgICB7MiwgYXJjc180N18yfSwKKyAgICB7MSwgYXJjc180N18zfSwKKyAgICB7MSwgYXJjc180N180fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfMFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OF8wWzJdID0gewogICAgIHszLCAxfSwKICAgICB7MiwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ3XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180N18yWzFdID0gewotICAgIHsxMDksIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180N18zWzFdID0gewotICAgIHs2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfNFsyXSA9IHsKLSAgICB7NiwgNH0sCi0gICAgezExMCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180N1s1XSA9IHsKLSAgICB7MiwgYXJjc180N18wfSwKLSAgICB7MSwgYXJjc180N18xfSwKLSAgICB7MSwgYXJjc180N18yfSwKLSAgICB7MSwgYXJjc180N18zfSwKLSAgICB7MiwgYXJjc180N180fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfMFsyXSA9IHsKLSAgICB7MTExLCAxfSwKLSAgICB7MTEyLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfMVsyXSA9IHsKLSAgICB7OTYsIDN9LAorc3RhdGljIGFyYyBhcmNzXzQ4XzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8yWzFdID0gewotICAgIHswLCAyfSwKKyAgICB7MTEwLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfM1sxXSA9IHsKLSAgICB7MTExLCA0fSwKKyAgICB7NiwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ4XzRbMV0gPSB7Ci0gICAgezk4LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180OF80WzJdID0geworICAgIHs2LCA0fSwKKyAgICB7MTExLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfNVsxXSA9IHsKLSAgICB7MjYsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDhbNl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzVdID0gewogICAgIHsyLCBhcmNzXzQ4XzB9LAotICAgIHsyLCBhcmNzXzQ4XzF9LAorICAgIHsxLCBhcmNzXzQ4XzF9LAogICAgIHsxLCBhcmNzXzQ4XzJ9LAogICAgIHsxLCBhcmNzXzQ4XzN9LAotICAgIHsxLCBhcmNzXzQ4XzR9LAotICAgIHsxLCBhcmNzXzQ4XzV9LAorICAgIHsyLCBhcmNzXzQ4XzR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OV8wWzJdID0gewotICAgIHsxMTEsIDF9LAotICAgIHsxMTQsIDF9LAorICAgIHsxMTIsIDF9LAorICAgIHsxMTMsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OV8xWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ5XzFbMl0gPSB7CisgICAgezk3LCAzfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180OVsyXSA9IHsKLSAgICB7MiwgYXJjc180OV8wfSwKLSAgICB7MSwgYXJjc180OV8xfSwKK3N0YXRpYyBhcmMgYXJjc180OV8yWzFdID0geworICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OV8zWzFdID0geworICAgIHsxMTIsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180OV80WzFdID0geworICAgIHs5OSwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ5XzVbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzZdID0geworICAgIHsyLCBhcmNzXzQ5XzB9LAorICAgIHsyLCBhcmNzXzQ5XzF9LAorICAgIHsxLCBhcmNzXzQ5XzJ9LAorICAgIHsxLCBhcmNzXzQ5XzN9LAorICAgIHsxLCBhcmNzXzQ5XzR9LAorICAgIHsxLCBhcmNzXzQ5XzV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181MF8wWzJdID0geworICAgIHsxMTIsIDF9LAogICAgIHsxMTUsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MF8xWzJdID0gewotICAgIHszNSwgMn0sCi0gICAgezI3LCAzfSwKK3N0YXRpYyBhcmMgYXJjc181MF8xWzFdID0geworICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfMlsxXSA9IHsKLSAgICB7MjcsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF8zWzFdID0gewotICAgIHsyNiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbNV0gPSB7Ci0gICAgezEsIGFyY3NfNTBfMH0sCi0gICAgezIsIGFyY3NfNTBfMX0sCi0gICAgezEsIGFyY3NfNTBfMn0sCi0gICAgezEsIGFyY3NfNTBfM30sCi0gICAgezEsIGFyY3NfNTBfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzUwWzJdID0geworICAgIHsyLCBhcmNzXzUwXzB9LAorICAgIHsxLCBhcmNzXzUwXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV8wWzFdID0gewotICAgIHsxMTUsIDF9LAorICAgIHsxMTYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV8xWzJdID0gewogICAgIHszNSwgMn0sCkBAIC0xMTg1LDcgKzEyMDAsNyBAQAogICAgIHsyNywgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzNbMV0gPSB7Ci0gICAgezExMywgNH0sCisgICAgezI2LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfNFsxXSA9IHsKICAgICB7MCwgNH0sCkBAIC0xMjAxLDEwOCArMTIxNiwxMjAgQEAKICAgICB7MTE2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTJfMVsyXSA9IHsKLSAgICB7MTE3LCAwfSwKLSAgICB7MCwgMX0sCisgICAgezM1LCAyfSwKKyAgICB7MjcsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTJfMlsxXSA9IHsKKyAgICB7MjcsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Ml8zWzFdID0geworICAgIHsxMTQsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Ml80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzUyWzVdID0gewogICAgIHsxLCBhcmNzXzUyXzB9LAogICAgIHsyLCBhcmNzXzUyXzF9LAorICAgIHsxLCBhcmNzXzUyXzJ9LAorICAgIHsxLCBhcmNzXzUyXzN9LAorICAgIHsxLCBhcmNzXzUyXzR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181M18wWzFdID0gewotICAgIHsxMTgsIDF9LAorICAgIHsxMTcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181M18xWzJdID0gewotICAgIHsxMTksIDB9LAorICAgIHsxMTgsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzUzWzJdID0gewogICAgIHsxLCBhcmNzXzUzXzB9LAogICAgIHsyLCBhcmNzXzUzXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181NF8wWzJdID0gewotICAgIHsxMjAsIDF9LAotICAgIHsxMjEsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzU0XzBbMV0gPSB7CisgICAgezExOSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzFbMV0gPSB7Ci0gICAgezExOCwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU0XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbM10gPSB7Ci0gICAgezIsIGFyY3NfNTRfMH0sCi0gICAgezEsIGFyY3NfNTRfMX0sCi0gICAgezEsIGFyY3NfNTRfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzBbMV0gPSB7Ci0gICAgezEwNywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU1XzFbMl0gPSB7Ci0gICAgezEyMiwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNTRfMVsyXSA9IHsKKyAgICB7MTIwLCAwfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181NVsyXSA9IHsKLSAgICB7MSwgYXJjc181NV8wfSwKLSAgICB7MiwgYXJjc181NV8xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTRbMl0gPSB7CisgICAgezEsIGFyY3NfNTRfMH0sCisgICAgezIsIGFyY3NfNTRfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU2XzBbMTBdID0gewotICAgIHsxMjMsIDF9LAorc3RhdGljIGFyYyBhcmNzXzU1XzBbMl0gPSB7CisgICAgezEyMSwgMX0sCisgICAgezEyMiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzFbMV0gPSB7CisgICAgezExOSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU1XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbM10gPSB7CisgICAgezIsIGFyY3NfNTVfMH0sCisgICAgezEsIGFyY3NfNTVfMX0sCisgICAgezEsIGFyY3NfNTVfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU2XzBbMV0gPSB7CisgICAgezEwOCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU2XzFbMl0gPSB7CisgICAgezEyMywgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbMl0gPSB7CisgICAgezEsIGFyY3NfNTZfMH0sCisgICAgezIsIGFyY3NfNTZfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU3XzBbMTBdID0gewogICAgIHsxMjQsIDF9LAogICAgIHsxMjUsIDF9LAogICAgIHsxMjYsIDF9LAogICAgIHsxMjcsIDF9LAogICAgIHsxMjgsIDF9LAogICAgIHsxMjksIDF9LAotICAgIHsxMDEsIDF9LAotICAgIHsxMjAsIDJ9LAotICAgIHsxMzAsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMlsxXSA9IHsKLSAgICB7MTAxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfM1syXSA9IHsKLSAgICB7MTIwLCAxfSwKLSAgICB7MCwgM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181Nls0XSA9IHsKLSAgICB7MTAsIGFyY3NfNTZfMH0sCi0gICAgezEsIGFyY3NfNTZfMX0sCi0gICAgezEsIGFyY3NfNTZfMn0sCi0gICAgezIsIGFyY3NfNTZfM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzU3XzBbMV0gPSB7Ci0gICAgezMzLCAxfSwKKyAgICB7MTMwLCAxfSwKKyAgICB7MTAyLCAxfSwKKyAgICB7MTIxLCAyfSwKKyAgICB7MTMxLCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTdfMVsxXSA9IHsKLSAgICB7MTA3LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTdfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181N1szXSA9IHsKLSAgICB7MSwgYXJjc181N18wfSwKLSAgICB7MSwgYXJjc181N18xfSwKLSAgICB7MSwgYXJjc181N18yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNThfMFsxXSA9IHsKLSAgICB7MTMxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNThfMVsyXSA9IHsKLSAgICB7MTMyLCAwfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181OFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181N18yWzFdID0geworICAgIHsxMDIsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181N18zWzJdID0geworICAgIHsxMjEsIDF9LAorICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU3WzRdID0geworICAgIHsxMCwgYXJjc181N18wfSwKKyAgICB7MSwgYXJjc181N18xfSwKKyAgICB7MSwgYXJjc181N18yfSwKKyAgICB7MiwgYXJjc181N18zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMFsxXSA9IHsKKyAgICB7MzMsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181OF8xWzFdID0geworICAgIHsxMDgsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181OF8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU4WzNdID0gewogICAgIHsxLCBhcmNzXzU4XzB9LAotICAgIHsyLCBhcmNzXzU4XzF9LAorICAgIHsxLCBhcmNzXzU4XzF9LAorICAgIHsxLCBhcmNzXzU4XzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181OV8wWzFdID0gewotICAgIHsxMzMsIDF9LAorICAgIHsxMzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181OV8xWzJdID0gewotICAgIHsxMzQsIDB9LAorICAgIHsxMzMsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzU5WzJdID0gewpAQCAtMTMxMCwxMCArMTMzNywxMCBAQAogICAgIHsyLCBhcmNzXzU5XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MF8wWzFdID0gewotICAgIHsxMzUsIDF9LAorICAgIHsxMzQsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MF8xWzJdID0gewotICAgIHsxMzYsIDB9LAorICAgIHsxMzUsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYwWzJdID0gewpAQCAtMTMyMSwyMyArMTM0OCwyMiBAQAogICAgIHsyLCBhcmNzXzYwXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182MV8wWzFdID0gewotICAgIHsxMzcsIDF9LAorICAgIHsxMzYsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182MV8xWzNdID0gewotICAgIHsxMzgsIDB9LAotICAgIHsxMzksIDB9LAorc3RhdGljIGFyYyBhcmNzXzYxXzFbMl0gPSB7CisgICAgezEzNywgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjFbMl0gPSB7CiAgICAgezEsIGFyY3NfNjFfMH0sCi0gICAgezMsIGFyY3NfNjFfMX0sCisgICAgezIsIGFyY3NfNjFfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYyXzBbMV0gPSB7Ci0gICAgezE0MCwgMX0sCisgICAgezEzOCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYyXzFbM10gPSB7Ci0gICAgezE0MSwgMH0sCi0gICAgezE0MiwgMH0sCisgICAgezEzOSwgMH0sCisgICAgezE0MCwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjJbMl0gPSB7CkBAIC0xMzQ1LDUyOCArMTM3MSw1NDUgQEAKICAgICB7MywgYXJjc182Ml8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjNfMFsxXSA9IHsKLSAgICB7MTQzLCAxfSwKKyAgICB7MTQxLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjNfMVs2XSA9IHsKLSAgICB7MzMsIDB9LAotICAgIHsxMSwgMH0sCi0gICAgezE0NCwgMH0sCi0gICAgezE0NSwgMH0sCi0gICAgezE0NiwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNjNfMVszXSA9IHsKKyAgICB7MTQyLCAwfSwKKyAgICB7MTQzLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182M1syXSA9IHsKICAgICB7MSwgYXJjc182M18wfSwKLSAgICB7NiwgYXJjc182M18xfSwKKyAgICB7MywgYXJjc182M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMFs0XSA9IHsKLSAgICB7MTQxLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182NF8wWzFdID0geworICAgIHsxNDQsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182NF8xWzZdID0geworICAgIHszMywgMH0sCisgICAgezExLCAwfSwKKyAgICB7MTQ1LCAwfSwKKyAgICB7MTQ2LCAwfSwKKyAgICB7MTQ3LCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182NFsyXSA9IHsKKyAgICB7MSwgYXJjc182NF8wfSwKKyAgICB7NiwgYXJjc182NF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjVfMFs0XSA9IHsKICAgICB7MTQyLCAxfSwKLSAgICB7MTQ3LCAxfSwKLSAgICB7MTQ4LCAyfSwKKyAgICB7MTQzLCAxfSwKKyAgICB7MTQ4LCAxfSwKKyAgICB7MTQ5LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMVsxXSA9IHsKLSAgICB7MTQzLCAyfSwKK3N0YXRpYyBhcmMgYXJjc182NV8xWzFdID0geworICAgIHsxNDQsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzY1XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbM10gPSB7Ci0gICAgezQsIGFyY3NfNjRfMH0sCi0gICAgezEsIGFyY3NfNjRfMX0sCi0gICAgezEsIGFyY3NfNjRfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzNdID0geworICAgIHs0LCBhcmNzXzY1XzB9LAorICAgIHsxLCBhcmNzXzY1XzF9LAorICAgIHsxLCBhcmNzXzY1XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8wWzFdID0gewotICAgIHsxNDksIDF9LAorc3RhdGljIGFyYyBhcmNzXzY2XzBbMV0gPSB7CisgICAgezE1MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjZfMVsyXSA9IHsKICAgICB7MzQsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMlsxXSA9IHsKLSAgICB7MTQzLCAzfSwKK3N0YXRpYyBhcmMgYXJjc182Nl8yWzFdID0geworICAgIHsxNDQsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzY2XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjVbNF0gPSB7Ci0gICAgezEsIGFyY3NfNjVfMH0sCi0gICAgezIsIGFyY3NfNjVfMX0sCi0gICAgezEsIGFyY3NfNjVfMn0sCi0gICAgezEsIGFyY3NfNjVfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY2WzRdID0geworICAgIHsxLCBhcmNzXzY2XzB9LAorICAgIHsyLCBhcmNzXzY2XzF9LAorICAgIHsxLCBhcmNzXzY2XzJ9LAorICAgIHsxLCBhcmNzXzY2XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8wWzJdID0gewotICAgIHsxNTAsIDF9LAotICAgIHsxNTEsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8xWzFdID0gewotICAgIHsxNTEsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182Nl8yWzJdID0geworc3RhdGljIGFyYyBhcmNzXzY3XzBbMl0gPSB7CisgICAgezE1MSwgMX0sCiAgICAgezE1MiwgMn0sCi0gICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbM10gPSB7Ci0gICAgezIsIGFyY3NfNjZfMH0sCi0gICAgezEsIGFyY3NfNjZfMX0sCi0gICAgezIsIGFyY3NfNjZfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzBbMTBdID0gewotICAgIHsxMywgMX0sCi0gICAgezE1NCwgMn0sCi0gICAgezE1NiwgM30sCi0gICAgezIzLCA0fSwKLSAgICB7MTU5LCA0fSwKLSAgICB7MTYwLCA1fSwKLSAgICB7ODIsIDR9LAotICAgIHsxNjEsIDR9LAotICAgIHsxNjIsIDR9LAotICAgIHsxNjMsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N18xWzNdID0gewotICAgIHs0OSwgNn0sCi0gICAgezE1MywgNn0sCi0gICAgezE1LCA0fSwKK3N0YXRpYyBhcmMgYXJjc182N18xWzFdID0geworICAgIHsxNTIsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182N18yWzJdID0gewotICAgIHsxNTMsIDd9LAotICAgIHsxNTUsIDR9LAorICAgIHsxNTMsIDJ9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfM1syXSA9IHsKLSAgICB7MTU3LCA4fSwKLSAgICB7MTU4LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzVbMl0gPSB7Ci0gICAgezE2MCwgNX0sCi0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N182WzFdID0gewotICAgIHsxNSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzdbMV0gPSB7Ci0gICAgezE1NSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzhbMV0gPSB7Ci0gICAgezE1OCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc182N1s5XSA9IHsKLSAgICB7MTAsIGFyY3NfNjdfMH0sCi0gICAgezMsIGFyY3NfNjdfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY3WzNdID0geworICAgIHsyLCBhcmNzXzY3XzB9LAorICAgIHsxLCBhcmNzXzY3XzF9LAogICAgIHsyLCBhcmNzXzY3XzJ9LAotICAgIHsyLCBhcmNzXzY3XzN9LAotICAgIHsxLCBhcmNzXzY3XzR9LAotICAgIHsyLCBhcmNzXzY3XzV9LAotICAgIHsxLCBhcmNzXzY3XzZ9LAotICAgIHsxLCBhcmNzXzY3Xzd9LAotICAgIHsxLCBhcmNzXzY3Xzh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8wWzJdID0gewotICAgIHsyNiwgMX0sCi0gICAgezUwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc182OF8wWzEwXSA9IHsKKyAgICB7MTMsIDF9LAorICAgIHsxNTUsIDJ9LAorICAgIHsxNTcsIDN9LAorICAgIHsyMywgNH0sCisgICAgezE2MCwgNH0sCisgICAgezE2MSwgNX0sCisgICAgezgzLCA0fSwKKyAgICB7MTYyLCA0fSwKKyAgICB7MTYzLCA0fSwKKyAgICB7MTY0LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjhfMVszXSA9IHsKLSAgICB7MTY0LCAyfSwKKyAgICB7NTAsIDZ9LAorICAgIHsxNTQsIDZ9LAorICAgIHsxNSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzJbMl0gPSB7CisgICAgezE1NCwgN30sCisgICAgezE1NiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzNbMl0gPSB7CisgICAgezE1OCwgOH0sCisgICAgezE1OSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF81WzJdID0geworICAgIHsxNjEsIDV9LAorICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfNlsxXSA9IHsKKyAgICB7MTUsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF83WzFdID0geworICAgIHsxNTYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF84WzFdID0geworICAgIHsxNTksIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjhbOV0gPSB7CisgICAgezEwLCBhcmNzXzY4XzB9LAorICAgIHszLCBhcmNzXzY4XzF9LAorICAgIHsyLCBhcmNzXzY4XzJ9LAorICAgIHsyLCBhcmNzXzY4XzN9LAorICAgIHsxLCBhcmNzXzY4XzR9LAorICAgIHsyLCBhcmNzXzY4XzV9LAorICAgIHsxLCBhcmNzXzY4XzZ9LAorICAgIHsxLCBhcmNzXzY4Xzd9LAorICAgIHsxLCBhcmNzXzY4Xzh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV8wWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezUxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfMVszXSA9IHsKKyAgICB7MTY1LCAyfSwKICAgICB7MzIsIDN9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OV8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfM1szXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OV8zWzNdID0gewogICAgIHsyNiwgNH0sCi0gICAgezUwLCA0fSwKKyAgICB7NTEsIDR9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfNFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182OV80WzJdID0gewogICAgIHszMiwgM30sCiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjhbNV0gPSB7Ci0gICAgezIsIGFyY3NfNjhfMH0sCi0gICAgezMsIGFyY3NfNjhfMX0sCi0gICAgezEsIGFyY3NfNjhfMn0sCi0gICAgezMsIGFyY3NfNjhfM30sCi0gICAgezIsIGFyY3NfNjhfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzVdID0geworICAgIHsyLCBhcmNzXzY5XzB9LAorICAgIHszLCBhcmNzXzY5XzF9LAorICAgIHsxLCBhcmNzXzY5XzJ9LAorICAgIHszLCBhcmNzXzY5XzN9LAorICAgIHsyLCBhcmNzXzY5XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzBbM10gPSB7CiAgICAgezEzLCAxfSwKLSAgICB7MTU0LCAyfSwKLSAgICB7ODEsIDN9LAorICAgIHsxNTUsIDJ9LAorICAgIHs4MiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfMVsyXSA9IHsKICAgICB7MTQsIDR9LAogICAgIHsxNSwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzJbMV0gPSB7Ci0gICAgezE2NSwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNzBfMlsxXSA9IHsKKyAgICB7MTY2LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF8zWzFdID0gewogICAgIHsyMywgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfNFsxXSA9IHsKICAgICB7MTUsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV81WzFdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzVbMV0gPSB7CiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV82WzFdID0gewotICAgIHsxNTUsIDV9LAorc3RhdGljIGFyYyBhcmNzXzcwXzZbMV0gPSB7CisgICAgezE1NiwgNX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182OVs3XSA9IHsKLSAgICB7MywgYXJjc182OV8wfSwKLSAgICB7MiwgYXJjc182OV8xfSwKLSAgICB7MSwgYXJjc182OV8yfSwKLSAgICB7MSwgYXJjc182OV8zfSwKLSAgICB7MSwgYXJjc182OV80fSwKLSAgICB7MSwgYXJjc182OV81fSwKLSAgICB7MSwgYXJjc182OV82fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzBbN10gPSB7CisgICAgezMsIGFyY3NfNzBfMH0sCisgICAgezIsIGFyY3NfNzBfMX0sCisgICAgezEsIGFyY3NfNzBfMn0sCisgICAgezEsIGFyY3NfNzBfM30sCisgICAgezEsIGFyY3NfNzBfNH0sCisgICAgezEsIGFyY3NfNzBfNX0sCisgICAgezEsIGFyY3NfNzBfNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzBbMV0gPSB7Ci0gICAgezE2NiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzFfMFsxXSA9IHsKKyAgICB7MTY3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzBfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MV8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8yWzJdID0gewotICAgIHsxNjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzJbMl0gPSB7CisgICAgezE2NywgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzBbM10gPSB7Ci0gICAgezEsIGFyY3NfNzBfMH0sCi0gICAgezIsIGFyY3NfNzBfMX0sCi0gICAgezIsIGFyY3NfNzBfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzcxWzNdID0geworICAgIHsxLCBhcmNzXzcxXzB9LAorICAgIHsyLCBhcmNzXzcxXzF9LAorICAgIHsyLCBhcmNzXzcxXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8wWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzBbMl0gPSB7CiAgICAgezI2LCAxfSwKICAgICB7MjcsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzFbMl0gPSB7CiAgICAgezI3LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzJbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfMlszXSA9IHsKICAgICB7MjYsIDN9LAotICAgIHsxNjcsIDR9LAorICAgIHsxNjgsIDR9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfM1syXSA9IHsKLSAgICB7MTY3LCA0fSwKK3N0YXRpYyBhcmMgYXJjc183Ml8zWzJdID0geworICAgIHsxNjgsIDR9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml80WzFdID0gewogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcxWzVdID0gewotICAgIHsyLCBhcmNzXzcxXzB9LAotICAgIHsyLCBhcmNzXzcxXzF9LAotICAgIHszLCBhcmNzXzcxXzJ9LAotICAgIHsyLCBhcmNzXzcxXzN9LAotICAgIHsxLCBhcmNzXzcxXzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc183Mls1XSA9IHsKKyAgICB7MiwgYXJjc183Ml8wfSwKKyAgICB7MiwgYXJjc183Ml8xfSwKKyAgICB7MywgYXJjc183Ml8yfSwKKyAgICB7MiwgYXJjc183Ml8zfSwKKyAgICB7MSwgYXJjc183Ml80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183M18wWzFdID0gewogICAgIHsyNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzNfMVsyXSA9IHsKICAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183MlszXSA9IHsKLSAgICB7MSwgYXJjc183Ml8wfSwKLSAgICB7MiwgYXJjc183Ml8xfSwKLSAgICB7MSwgYXJjc183Ml8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMFsyXSA9IHsKLSAgICB7MTA3LCAxfSwKLSAgICB7NTAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18xWzJdID0gewotICAgIHszMiwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18yWzNdID0gewotICAgIHsxMDcsIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzNfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183M1szXSA9IHsKLSAgICB7MiwgYXJjc183M18wfSwKKyAgICB7MSwgYXJjc183M18wfSwKICAgICB7MiwgYXJjc183M18xfSwKLSAgICB7MywgYXJjc183M18yfSwKKyAgICB7MSwgYXJjc183M18yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMFsxXSA9IHsKLSAgICB7MjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc0XzBbMl0gPSB7CisgICAgezEwOCwgMX0sCisgICAgezUxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzRfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzRfMlsyXSA9IHsKLSAgICB7MjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzc0XzJbM10gPSB7CisgICAgezEwOCwgMX0sCisgICAgezUxLCAxfSwKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc183NFszXSA9IHsKLSAgICB7MSwgYXJjc183NF8wfSwKKyAgICB7MiwgYXJjc183NF8wfSwKICAgICB7MiwgYXJjc183NF8xfSwKLSAgICB7MiwgYXJjc183NF8yfSwKKyAgICB7MywgYXJjc183NF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183NV8wWzFdID0geworICAgIHsyNiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzFbMl0gPSB7CisgICAgezMyLCAyfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc1XzJbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183NVszXSA9IHsKKyAgICB7MSwgYXJjc183NV8wfSwKKyAgICB7MiwgYXJjc183NV8xfSwKKyAgICB7MiwgYXJjc183NV8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzZfMFszXSA9IHsKICAgICB7MjYsIDF9LAogICAgIHszNCwgMn0sCi0gICAgezUwLCAzfSwKKyAgICB7NTEsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xWzRdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzFbNF0gPSB7CiAgICAgezI3LCA0fSwKLSAgICB7MTY0LCA1fSwKKyAgICB7MTY1LCA1fSwKICAgICB7MzIsIDZ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMlsxXSA9IHsKLSAgICB7MTA3LCA3fSwKK3N0YXRpYyBhcmMgYXJjc183Nl8yWzFdID0geworICAgIHsxMDgsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8zWzNdID0gewotICAgIHsxNjQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzc2XzNbM10gPSB7CisgICAgezE2NSwgNX0sCiAgICAgezMyLCA2fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfNFsxXSA9IHsKICAgICB7MjYsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV81WzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzVbMV0gPSB7CiAgICAgezAsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV82WzNdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzZbM10gPSB7CiAgICAgezI2LCA4fSwKLSAgICB7NTAsIDh9LAorICAgIHs1MSwgOH0sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV83WzNdID0gewotICAgIHsxNjQsIDV9LAorc3RhdGljIGFyYyBhcmNzXzc2XzdbM10gPSB7CisgICAgezE2NSwgNX0sCiAgICAgezMyLCA5fSwKICAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzhbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfOFsyXSA9IHsKICAgICB7MzIsIDZ9LAogICAgIHswLCA4fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfOVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl85WzNdID0gewogICAgIHsyNiwgMTB9LAogICAgIHszNCwgMTF9LAogICAgIHswLCA5fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMTBbMV0gPSB7CiAgICAgezI3LCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzExWzFdID0gewotICAgIHsxMDcsIDEzfSwKK3N0YXRpYyBhcmMgYXJjc183Nl8xMVsxXSA9IHsKKyAgICB7MTA4LCAxM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzEyWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzEyWzFdID0gewogICAgIHsyNiwgMTN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xM1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xM1syXSA9IHsKICAgICB7MzIsIDl9LAogICAgIHswLCAxM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183NVsxNF0gPSB7Ci0gICAgezMsIGFyY3NfNzVfMH0sCi0gICAgezQsIGFyY3NfNzVfMX0sCi0gICAgezEsIGFyY3NfNzVfMn0sCi0gICAgezMsIGFyY3NfNzVfM30sCi0gICAgezEsIGFyY3NfNzVfNH0sCi0gICAgezEsIGFyY3NfNzVfNX0sCi0gICAgezMsIGFyY3NfNzVfNn0sCi0gICAgezMsIGFyY3NfNzVfN30sCi0gICAgezIsIGFyY3NfNzVfOH0sCi0gICAgezMsIGFyY3NfNzVfOX0sCi0gICAgezEsIGFyY3NfNzVfMTB9LAotICAgIHsxLCBhcmNzXzc1XzExfSwKLSAgICB7MSwgYXJjc183NV8xMn0sCi0gICAgezIsIGFyY3NfNzVfMTN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8wWzFdID0gewotICAgIHsxNjgsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8xWzFdID0gewotICAgIHsyMywgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzJbMl0gPSB7Ci0gICAgezEzLCAzfSwKLSAgICB7MjcsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8zWzJdID0gewotICAgIHsxNCwgNX0sCi0gICAgezE1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfNFsxXSA9IHsKLSAgICB7MjgsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl81WzFdID0gewotICAgIHsxNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzZbMV0gPSB7Ci0gICAgezI3LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183Nls4XSA9IHsKLSAgICB7MSwgYXJjc183Nl8wfSwKLSAgICB7MSwgYXJjc183Nl8xfSwKLSAgICB7MiwgYXJjc183Nl8yfSwKLSAgICB7MiwgYXJjc183Nl8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzZbMTRdID0geworICAgIHszLCBhcmNzXzc2XzB9LAorICAgIHs0LCBhcmNzXzc2XzF9LAorICAgIHsxLCBhcmNzXzc2XzJ9LAorICAgIHszLCBhcmNzXzc2XzN9LAogICAgIHsxLCBhcmNzXzc2XzR9LAogICAgIHsxLCBhcmNzXzc2XzV9LAotICAgIHsxLCBhcmNzXzc2XzZ9LAotICAgIHsxLCBhcmNzXzc2Xzd9LAorICAgIHszLCBhcmNzXzc2XzZ9LAorICAgIHszLCBhcmNzXzc2Xzd9LAorICAgIHsyLCBhcmNzXzc2Xzh9LAorICAgIHszLCBhcmNzXzc2Xzl9LAorICAgIHsxLCBhcmNzXzc2XzEwfSwKKyAgICB7MSwgYXJjc183Nl8xMX0sCisgICAgezEsIGFyY3NfNzZfMTJ9LAorICAgIHsyLCBhcmNzXzc2XzEzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNzdfMFsxXSA9IHsKICAgICB7MTY5LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183N18xWzFdID0geworICAgIHsyMywgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzJbMl0gPSB7CisgICAgezEzLCAzfSwKKyAgICB7MjcsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N18zWzJdID0geworICAgIHsxNCwgNX0sCisgICAgezE1LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfNFsxXSA9IHsKKyAgICB7MjgsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N181WzFdID0geworICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzZbMV0gPSB7CisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfN1sxXSA9IHsKKyAgICB7MCwgN30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc183N1s4XSA9IHsKKyAgICB7MSwgYXJjc183N18wfSwKKyAgICB7MSwgYXJjc183N18xfSwKKyAgICB7MiwgYXJjc183N18yfSwKKyAgICB7MiwgYXJjc183N18zfSwKKyAgICB7MSwgYXJjc183N180fSwKKyAgICB7MSwgYXJjc183N181fSwKKyAgICB7MSwgYXJjc183N182fSwKKyAgICB7MSwgYXJjc183N183fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMFsxXSA9IHsKKyAgICB7MTcwLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzhfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzdfMlsyXSA9IHsKLSAgICB7MTY5LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183OF8yWzJdID0geworICAgIHsxNzAsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc3WzNdID0gewotICAgIHsxLCBhcmNzXzc3XzB9LAotICAgIHsyLCBhcmNzXzc3XzF9LAotICAgIHsyLCBhcmNzXzc3XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc183OFszXSA9IHsKKyAgICB7MSwgYXJjc183OF8wfSwKKyAgICB7MiwgYXJjc183OF8xfSwKKyAgICB7MiwgYXJjc183OF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183OV8wWzNdID0gewogICAgIHsyNiwgMX0sCiAgICAgezM0LCAyfSwKICAgICB7MzMsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8xWzNdID0gewotICAgIHsxNjQsIDN9LAorc3RhdGljIGFyYyBhcmNzXzc5XzFbM10gPSB7CisgICAgezE2NSwgM30sCiAgICAgezMxLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzlfMlsxXSA9IHsKICAgICB7MjYsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc5XzNbMV0gPSB7CiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzhbNF0gPSB7Ci0gICAgezMsIGFyY3NfNzhfMH0sCi0gICAgezMsIGFyY3NfNzhfMX0sCi0gICAgezEsIGFyY3NfNzhfMn0sCi0gICAgezEsIGFyY3NfNzhfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc5WzRdID0geworICAgIHszLCBhcmNzXzc5XzB9LAorICAgIHszLCBhcmNzXzc5XzF9LAorICAgIHsxLCBhcmNzXzc5XzJ9LAorICAgIHsxLCBhcmNzXzc5XzN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OV8wWzJdID0gewotICAgIHsxNjQsIDF9LAotICAgIHsxNzEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183OV8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc5WzJdID0gewotICAgIHsyLCBhcmNzXzc5XzB9LAotICAgIHsxLCBhcmNzXzc5XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF8wWzFdID0gewotICAgIHsxMDAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzgwXzBbMl0gPSB7CisgICAgezE2NSwgMX0sCisgICAgezE3MiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzFbMV0gPSB7Ci0gICAgezY1LCAyfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgwXzJbMV0gPSB7Ci0gICAgezEwMSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzNbMV0gPSB7Ci0gICAgezExMSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzRbMl0gPSB7Ci0gICAgezE3MCwgNX0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF81WzFdID0gewotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzZdID0gewotICAgIHsxLCBhcmNzXzgwXzB9LAorc3RhdGljIHN0YXRlIHN0YXRlc184MFsyXSA9IHsKKyAgICB7MiwgYXJjc184MF8wfSwKICAgICB7MSwgYXJjc184MF8xfSwKLSAgICB7MSwgYXJjc184MF8yfSwKLSAgICB7MSwgYXJjc184MF8zfSwKLSAgICB7MiwgYXJjc184MF80fSwKLSAgICB7MSwgYXJjc184MF81fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMFsxXSA9IHsKLSAgICB7OTYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzgxXzBbMl0gPSB7CisgICAgezIxLCAxfSwKKyAgICB7MTAxLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODFfMVsxXSA9IHsKLSAgICB7MTEzLCAyfSwKKyAgICB7MTAxLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODFfMlsyXSA9IHsKLSAgICB7MTcwLCAzfSwKLSAgICB7MCwgMn0sCitzdGF0aWMgYXJjIGFyY3NfODFfMlsxXSA9IHsKKyAgICB7NjYsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MV8zWzFdID0gewotICAgIHswLCAzfSwKKyAgICB7MTAyLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzRdID0gewotICAgIHsxLCBhcmNzXzgxXzB9LAorc3RhdGljIGFyYyBhcmNzXzgxXzRbMV0gPSB7CisgICAgezExMiwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgxXzVbMl0gPSB7CisgICAgezE3MSwgNn0sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV82WzFdID0geworICAgIHswLCA2fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgxWzddID0geworICAgIHsyLCBhcmNzXzgxXzB9LAogICAgIHsxLCBhcmNzXzgxXzF9LAotICAgIHsyLCBhcmNzXzgxXzJ9LAorICAgIHsxLCBhcmNzXzgxXzJ9LAogICAgIHsxLCBhcmNzXzgxXzN9LAorICAgIHsxLCBhcmNzXzgxXzR9LAorICAgIHsyLCBhcmNzXzgxXzV9LAorICAgIHsxLCBhcmNzXzgxXzZ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184Ml8wWzFdID0gewotICAgIHsyMywgMX0sCisgICAgezk3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODJfMVsxXSA9IHsKLSAgICB7MCwgMX0sCisgICAgezExNCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184MlsyXSA9IHsKLSAgICB7MSwgYXJjc184Ml8wfSwKLSAgICB7MSwgYXJjc184Ml8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODNfMFsxXSA9IHsKLSAgICB7MTczLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODNfMVsyXSA9IHsKLSAgICB7MTc0LCAyfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfODJfMlsyXSA9IHsKKyAgICB7MTcxLCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184M1szXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184Ml8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgyWzRdID0geworICAgIHsxLCBhcmNzXzgyXzB9LAorICAgIHsxLCBhcmNzXzgyXzF9LAorICAgIHsyLCBhcmNzXzgyXzJ9LAorICAgIHsxLCBhcmNzXzgyXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184M18wWzFdID0geworICAgIHsyMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODNbMl0gPSB7CiAgICAgezEsIGFyY3NfODNfMH0sCi0gICAgezIsIGFyY3NfODNfMX0sCi0gICAgezEsIGFyY3NfODNfMn0sCisgICAgezEsIGFyY3NfODNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzg0XzBbMl0gPSB7Ci0gICAgezc2LCAxfSwKLSAgICB7OSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfODRfMFsxXSA9IHsKKyAgICB7MTc0LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODRfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzg0XzFbMl0gPSB7CisgICAgezE3NSwgMn0sCisgICAgezAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184NF8yWzFdID0gewogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzg0WzNdID0gewotICAgIHsyLCBhcmNzXzg0XzB9LAotICAgIHsxLCBhcmNzXzg0XzF9LAorICAgIHsxLCBhcmNzXzg0XzB9LAorICAgIHsyLCBhcmNzXzg0XzF9LAogICAgIHsxLCBhcmNzXzg0XzJ9LAogfTsKLXN0YXRpYyBkZmEgZGZhc1s4NV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfODVfMFsyXSA9IHsKKyAgICB7NzcsIDF9LAorICAgIHs5LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODVfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzg1WzNdID0geworICAgIHsyLCBhcmNzXzg1XzB9LAorICAgIHsxLCBhcmNzXzg1XzF9LAorICAgIHsxLCBhcmNzXzg1XzJ9LAorfTsKK3N0YXRpYyBkZmEgZGZhc1s4Nl0gPSB7CiAgICAgezI1NiwgInNpbmdsZV9pbnB1dCIsIDAsIDMsIHN0YXRlc18wLAotICAgICAiXDAwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAorICAgICAiXDAwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDI2MlwwMDRcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMiJ9LAogICAgIHsyNTcsICJmaWxlX2lucHV0IiwgMCwgMiwgc3RhdGVzXzEsCi0gICAgICJcMjA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgICJcMjA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMjYyXDAwNFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAyIn0sCiAgICAgezI1OCwgImV2YWxfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKICAgICB7MjU5LCAiZGVjb3JhdG9yIiwgMCwgNywgc3RhdGVzXzMsCiAgICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2MCwgImRlY29yYXRvcnMiLCAwLCAyLCBzdGF0ZXNfNCwKQEAgLTE4NzksMTc5ICsxOTIyLDE4MSBAQAogICAgICAiXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjQsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzgsCiAgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NSwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzksCisgICAgezI2NSwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOSwgc3RhdGVzXzksCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2NiwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc18xMCwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY3LCAidmFyYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzExLAorICAgIHsyNjcsICJ2YXJhcmdzbGlzdCIsIDAsIDE5LCBzdGF0ZXNfMTEsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2OCwgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMiwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY5LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMywKLSAgICAgIlwwMDBcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICAgIlwwMDBcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wyNjJcMDA0XDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDIifSwKICAgICB7MjcwLCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAwIn0sCiAgICAgezI3MSwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAwIn0sCiAgICAgezI3MiwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MjczLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE3LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHsyNzQsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzcwXDM3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NSwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzYsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NywgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKLSAgICB7Mjc4LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc5LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgwLCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MSwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCi0gICAgezI4MiwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MywgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODQsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg1LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NiwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMwLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODcsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMSwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg4LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMyLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODksICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzMsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MCwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzM0LAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTEsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkyLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkzLCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NCwgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzgsCi0gICAgICJcMDAwXDAxMFwxNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTMxXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxIn0sCi0gICAgezI5NSwgImFzeW5jX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NiwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NywgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OCwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk5LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQzLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDAsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDQsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzAyLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAzLCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDcsCi0gICAgICJcMDA0XDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQwIn0sCi0gICAgezMwNCwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwNSwgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ5LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDYsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzUwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDcsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc181MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA4LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzA5LCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTMsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxMCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzU0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTEsICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzU1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTIsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDM3MVwwMDdcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTMsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxNCwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxNSwgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzU5LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTYsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE3LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc182MSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE4LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE5LCAidGVybSIsIDAsIDIsIHN0YXRlc182MywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIwLCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzY0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjEsICJwb3dlciIsIDAsIDQsIHN0YXRlc182NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIyLCAiYXRvbV9leHByIiwgMCwgMywgc3RhdGVzXzY2LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjMsICJhdG9tIiwgMCwgOSwgc3RhdGVzXzY3LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjQsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjUsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzY5LAotICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMCJ9LAotICAgIHszMjYsICJzdWJzY3JpcHRsaXN0IiwgMCwgMywgc3RhdGVzXzcwLAotICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjcsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNzEsCi0gICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyOCwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezI3MywgImFubmFzc2lnbiIsIDAsIDUsIHN0YXRlc18xNywKICAgICAgIlwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzI5LCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzMsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzMCwgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzc0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzEsICJkaWN0b3JzZXRtYWtlciIsIDAsIDE0LCBzdGF0ZXNfNzUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzMiwgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzc2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAotICAgIHszMzMsICJhcmdsaXN0IiwgMCwgMywgc3RhdGVzXzc3LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzQsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzM1LCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzc5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzYsICJjb21wX2ZvciIsIDAsIDYsIHN0YXRlc184MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM3LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc184MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM4LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc184MiwKKyAgICB7Mjc0LCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHsyNzUsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzYwXDM3N1wwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NiwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzIwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzcsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3OCwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMzZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDAifSwKKyAgICB7Mjc5LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgwLCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yNCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgxLCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MiwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezI4MywgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NCwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODUsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg2LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMzAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NywgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMxLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzksICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgzLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAotICAgIHszNDAsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgezI4OCwgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMyLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODksICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzMsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MCwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zNCwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkxLCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzUsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MiwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTMsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTQsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk1LCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zOSwKKyAgICAgIlwwMDBcMDEwXDE0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyNjJcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDIifSwKKyAgICB7Mjk2LCAiYXN5bmNfc3RtdCIsIDAsIDMsIHN0YXRlc180MCwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk3LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc180MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk4LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc180MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk5LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDAsICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMSwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180NSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAyLCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQ2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMDMsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDQsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180OCwKKyAgICAgIlwwMDRcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDAifSwKKyAgICB7MzA1LCAidGVzdCIsIDAsIDYsIHN0YXRlc180OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzA2LCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNTAsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMwNywgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNTEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwOCwgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzUyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDksICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTAsICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzExLCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMiwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMywgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMzYyXDAxN1wwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxNCwgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181OCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzE1LCAiZXhwciIsIDAsIDIsIHN0YXRlc181OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE2LCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxNywgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzYxLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTgsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzYyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTksICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYzLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjAsICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzY0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjEsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMiwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzY2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjMsICJhdG9tX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNjcsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyNCwgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyNSwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyNiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNzAsCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwIn0sCisgICAgezMyNywgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCisgICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyOCwgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI5LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc183MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzMwLCAiZXhwcmxpc3QiLCAwLCAzLCBzdGF0ZXNfNzQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzMSwgInRlc3RsaXN0IiwgMCwgMywgc3RhdGVzXzc1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzIsICJkaWN0b3JzZXRtYWtlciIsIDAsIDE0LCBzdGF0ZXNfNzYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzMywgImNsYXNzZGVmIiwgMCwgOCwgc3RhdGVzXzc3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMiJ9LAorICAgIHszMzQsICJhcmdsaXN0IiwgMCwgMywgc3RhdGVzXzc4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzUsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzM2LCAiY29tcF9pdGVyIiwgMCwgMiwgc3RhdGVzXzgwLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzcsICJjb21wX2ZvciIsIDAsIDcsIHN0YXRlc184MSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM4LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc184MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM5LCAiZW5jb2RpbmdfZGVjbCIsIDAsIDIsIHN0YXRlc184MywKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzQwLCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDAifSwKKyAgICB7MzQxLCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzg1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAogfTsKLXN0YXRpYyBsYWJlbCBsYWJlbHNbMTc1XSA9IHsKK3N0YXRpYyBsYWJlbCBsYWJlbHNbMTc2XSA9IHsKICAgICB7MCwgIkVNUFRZIn0sCiAgICAgezI1NiwgMH0sCiAgICAgezQsIDB9LAogICAgIHsyNzAsIDB9LAotICAgIHsyOTQsIDB9LAorICAgIHsyOTUsIDB9LAogICAgIHsyNTcsIDB9LAogICAgIHsyNjksIDB9LAogICAgIHswLCAwfSwKICAgICB7MjU4LCAwfSwKLSAgICB7MzMwLCAwfSwKKyAgICB7MzMxLCAwfSwKICAgICB7MjU5LCAwfSwKICAgICB7NDksIDB9LAotICAgIHsyOTAsIDB9LAorICAgIHsyOTEsIDB9LAogICAgIHs3LCAwfSwKLSAgICB7MzMzLCAwfSwKKyAgICB7MzM0LCAwfSwKICAgICB7OCwgMH0sCiAgICAgezI2MCwgMH0sCiAgICAgezI2MSwgMH0sCi0gICAgezMzMiwgMH0sCisgICAgezMzMywgMH0sCiAgICAgezI2MywgMH0sCiAgICAgezI2MiwgMH0sCiAgICAgezU1LCAwfSwKQEAgLTIwNTksOSArMjEwNCw5IEBACiAgICAgezEsIDB9LAogICAgIHsyNjQsIDB9LAogICAgIHs1MSwgMH0sCi0gICAgezMwNCwgMH0sCisgICAgezMwNSwgMH0sCiAgICAgezExLCAwfSwKLSAgICB7MzAzLCAwfSwKKyAgICB7MzA0LCAwfSwKICAgICB7MjY1LCAwfSwKICAgICB7MjY2LCAwfSwKICAgICB7MjIsIDB9LApAQCAtMjA3MywxNyArMjExOCwxOCBAQAogICAgIHsyNzEsIDB9LAogICAgIHsxMywgMH0sCiAgICAgezI3MiwgMH0sCi0gICAgezI3NSwgMH0sCiAgICAgezI3NiwgMH0sCiAgICAgezI3NywgMH0sCi0gICAgezI4MywgMH0sCi0gICAgezI5MSwgMH0sCisgICAgezI3OCwgMH0sCisgICAgezI4NCwgMH0sCiAgICAgezI5MiwgMH0sCiAgICAgezI5MywgMH0sCi0gICAgezI3MywgMH0sCisgICAgezI5NCwgMH0sCiAgICAgezI3NCwgMH0sCi0gICAgezMzOSwgMH0sCi0gICAgezMxMywgMH0sCisgICAgezI3MywgMH0sCisgICAgezI3NSwgMH0sCisgICAgezM0MCwgMH0sCisgICAgezMxNCwgMH0sCiAgICAgezM2LCAwfSwKICAgICB7MzcsIDB9LAogICAgIHszOCwgMH0sCkBAIC0yMDk4LDM3ICsyMTQ0LDM3IEBACiAgICAgezQ2LCAwfSwKICAgICB7NDgsIDB9LAogICAgIHsxLCAiZGVsIn0sCi0gICAgezMyOSwgMH0sCisgICAgezMzMCwgMH0sCiAgICAgezEsICJwYXNzIn0sCi0gICAgezI3OCwgMH0sCiAgICAgezI3OSwgMH0sCiAgICAgezI4MCwgMH0sCi0gICAgezI4MiwgMH0sCiAgICAgezI4MSwgMH0sCisgICAgezI4MywgMH0sCisgICAgezI4MiwgMH0sCiAgICAgezEsICJicmVhayJ9LAogICAgIHsxLCAiY29udGludWUifSwKICAgICB7MSwgInJldHVybiJ9LAogICAgIHsxLCAicmFpc2UifSwKICAgICB7MSwgImZyb20ifSwKLSAgICB7Mjg0LCAwfSwKICAgICB7Mjg1LCAwfSwKKyAgICB7Mjg2LCAwfSwKICAgICB7MSwgImltcG9ydCJ9LAotICAgIHsyODksIDB9LAorICAgIHsyOTAsIDB9LAogICAgIHsyMywgMH0sCiAgICAgezUyLCAwfSwKLSAgICB7Mjg4LCAwfSwKLSAgICB7Mjg2LCAwfSwKLSAgICB7MSwgImFzIn0sCisgICAgezI4OSwgMH0sCiAgICAgezI4NywgMH0sCisgICAgezEsICJhcyJ9LAorICAgIHsyODgsIDB9LAogICAgIHsxLCAiZ2xvYmFsIn0sCiAgICAgezEsICJub25sb2NhbCJ9LAogICAgIHsxLCAiYXNzZXJ0In0sCi0gICAgezI5NiwgMH0sCiAgICAgezI5NywgMH0sCiAgICAgezI5OCwgMH0sCiAgICAgezI5OSwgMH0sCiAgICAgezMwMCwgMH0sCi0gICAgezI5NSwgMH0sCisgICAgezMwMSwgMH0sCisgICAgezI5NiwgMH0sCiAgICAgezEsICJpZiJ9LAogICAgIHsxLCAiZWxpZiJ9LAogICAgIHsxLCAiZWxzZSJ9LApAQCAtMjEzNiwyNiArMjE4MiwyNiBAQAogICAgIHsxLCAiZm9yIn0sCiAgICAgezEsICJpbiJ9LAogICAgIHsxLCAidHJ5In0sCi0gICAgezMwMiwgMH0sCisgICAgezMwMywgMH0sCiAgICAgezEsICJmaW5hbGx5In0sCiAgICAgezEsICJ3aXRoIn0sCi0gICAgezMwMSwgMH0sCi0gICAgezMxNCwgMH0sCisgICAgezMwMiwgMH0sCisgICAgezMxNSwgMH0sCiAgICAgezEsICJleGNlcHQifSwKICAgICB7NSwgMH0sCiAgICAgezYsIDB9LAotICAgIHszMDgsIDB9LAotICAgIHszMDYsIDB9LAotICAgIHszMDUsIDB9LAotICAgIHszMDcsIDB9LAotICAgIHsxLCAibGFtYmRhIn0sCiAgICAgezMwOSwgMH0sCi0gICAgezEsICJvciJ9LAorICAgIHszMDcsIDB9LAorICAgIHszMDYsIDB9LAorICAgIHszMDgsIDB9LAorICAgIHsxLCAibGFtYmRhIn0sCiAgICAgezMxMCwgMH0sCisgICAgezEsICJvciJ9LAorICAgIHszMTEsIDB9LAogICAgIHsxLCAiYW5kIn0sCiAgICAgezEsICJub3QifSwKLSAgICB7MzExLCAwfSwKICAgICB7MzEyLCAwfSwKKyAgICB7MzEzLCAwfSwKICAgICB7MjAsIDB9LAogICAgIHsyMSwgMH0sCiAgICAgezI3LCAwfSwKQEAgLTIxNjQsNTQgKzIyMTAsNTQgQEAKICAgICB7MjgsIDB9LAogICAgIHsyOCwgMH0sCiAgICAgezEsICJpcyJ9LAotICAgIHszMTUsIDB9LAotICAgIHsxOCwgMH0sCiAgICAgezMxNiwgMH0sCi0gICAgezMyLCAwfSwKKyAgICB7MTgsIDB9LAogICAgIHszMTcsIDB9LAotICAgIHsxOSwgMH0sCisgICAgezMyLCAwfSwKICAgICB7MzE4LCAwfSwKKyAgICB7MTksIDB9LAorICAgIHszMTksIDB9LAogICAgIHszMywgMH0sCiAgICAgezM0LCAwfSwKLSAgICB7MzE5LCAwfSwKKyAgICB7MzIwLCAwfSwKICAgICB7MTQsIDB9LAogICAgIHsxNSwgMH0sCi0gICAgezMyMCwgMH0sCisgICAgezMyMSwgMH0sCiAgICAgezE3LCAwfSwKICAgICB7MjQsIDB9LAogICAgIHs0NywgMH0sCiAgICAgezMxLCAwfSwKLSAgICB7MzIxLCAwfSwKICAgICB7MzIyLCAwfSwKLSAgICB7NTQsIDB9LAogICAgIHszMjMsIDB9LAotICAgIHszMjUsIDB9LAorICAgIHs1NCwgMH0sCiAgICAgezMyNCwgMH0sCisgICAgezMyNiwgMH0sCisgICAgezMyNSwgMH0sCiAgICAgezksIDB9LAogICAgIHsxMCwgMH0sCiAgICAgezI1LCAwfSwKLSAgICB7MzMxLCAwfSwKKyAgICB7MzMyLCAwfSwKICAgICB7MjYsIDB9LAogICAgIHsyLCAwfSwKICAgICB7MywgMH0sCiAgICAgezEsICJOb25lIn0sCiAgICAgezEsICJUcnVlIn0sCiAgICAgezEsICJGYWxzZSJ9LAotICAgIHszMzYsIDB9LAotICAgIHszMjYsIDB9LAorICAgIHszMzcsIDB9LAogICAgIHszMjcsIDB9LAogICAgIHszMjgsIDB9LAorICAgIHszMjksIDB9LAogICAgIHsxLCAiY2xhc3MifSwKLSAgICB7MzM0LCAwfSwKICAgICB7MzM1LCAwfSwKLSAgICB7MzM3LCAwfSwKKyAgICB7MzM2LCAwfSwKICAgICB7MzM4LCAwfSwKKyAgICB7MzM5LCAwfSwKICAgICB7MSwgInlpZWxkIn0sCi0gICAgezM0MCwgMH0sCisgICAgezM0MSwgMH0sCiB9OwogZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hciA9IHsKLSAgICA4NSwKKyAgICA4NiwKICAgICBkZmFzLAotICAgIHsxNzUsIGxhYmVsc30sCisgICAgezE3NiwgbGFiZWxzfSwKICAgICAyNTYKIH07CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0LmMgYi9QeXRob24vaW1wb3J0LmMKaW5kZXggN2U5NDdlYy4uZGZkZDk0MCAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydC5jCisrKyBiL1B5dGhvbi9pbXBvcnQuYwpAQCAtMzgsMTQgKzM4LDYgQEAKIAogI2luY2x1ZGUgImNsaW5pYy9pbXBvcnQuYy5oIgogCi0vKltweXRob24gaW5wdXRdCi1jbGFzcyBmc191bmljb2RlX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ1B5T2JqZWN0IConCi0gICAgY29udmVydGVyID0gJ1B5VW5pY29kZV9GU0RlY29kZXInCi0KLVtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTlkNjc4NjIzMDE2NjAwNmVdKi8KLQogLyogSW5pdGlhbGl6ZSB0aGluZ3MgKi8KIAogdm9pZApAQCAtMzIwLDcgKzMxMiw3IEBACiAKIAogLyogTGlzdCBvZiBuYW1lcyB0byBjbGVhciBpbiBzeXMgKi8KLXN0YXRpYyBjaGFyKiBzeXNfZGVsZXRlc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzeXNfZGVsZXRlc1tdID0gewogICAgICJwYXRoIiwgImFyZ3YiLCAicHMxIiwgInBzMiIsCiAgICAgImxhc3RfdHlwZSIsICJsYXN0X3ZhbHVlIiwgImxhc3RfdHJhY2ViYWNrIiwKICAgICAicGF0aF9ob29rcyIsICJwYXRoX2ltcG9ydGVyX2NhY2hlIiwgIm1ldGFfcGF0aCIsCkBAIC0zMzAsNyArMzIyLDcgQEAKICAgICBOVUxMCiB9OwogCi1zdGF0aWMgY2hhciogc3lzX2ZpbGVzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN5c19maWxlc1tdID0gewogICAgICJzdGRpbiIsICJfX3N0ZGluX18iLAogICAgICJzdGRvdXQiLCAiX19zdGRvdXRfXyIsCiAgICAgInN0ZGVyciIsICJfX3N0ZGVycl9fIiwKQEAgLTM0Nyw3ICszMzksNyBAQAogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gaW50ZXJwLT5tb2R1bGVzOwogICAgIFB5T2JqZWN0ICp3ZWFrbGlzdCA9IE5VTEw7Ci0gICAgY2hhciAqKnA7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICpwOwogCiAgICAgaWYgKG1vZHVsZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOyAvKiBBbHJlYWR5IGRvbmUgKi8KQEAgLTg4MywxMCArODc1LDggQEAKICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmUoY28tPmNvX2ZpbGVuYW1lLCBvbGRuYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdG1wID0gY28tPmNvX2ZpbGVuYW1lOwotICAgIGNvLT5jb19maWxlbmFtZSA9IG5ld25hbWU7Ci0gICAgUHlfSU5DUkVGKGNvLT5jb19maWxlbmFtZSk7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfSU5DUkVGKG5ld25hbWUpOworICAgIFB5X1hTRVRSRUYoY28tPmNvX2ZpbGVuYW1lLCBuZXduYW1lKTsKIAogICAgIGNvbnN0YW50cyA9IGNvLT5jb19jb25zdHM7CiAgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUoY29uc3RhbnRzKTsKQEAgLTEwODcsNiArMTA3NywxMCBAQAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciBwb2ludGVyIHRvIG1vZHVsZSBpbml0IGZ1bmN0aW9uLiAqLwogICAgICAgICAgICAgICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOworICAgICAgICAgICAgICAgIGlmIChkZWYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwLT5pbml0ZnVuYzsKICAgICAgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZSwgbmFtZSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKQEAgLTEzMzIsMTAgKzEzMjYsOCBAQAogICAgICAgICAgICAgKGFsd2F5c190cmltIHx8CiAgICAgICAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoY29kZS0+Y29fbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfZnJhbWVzKSA9PSAwKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpvdXRlcl9saW5rOwotICAgICAgICAgICAgKm91dGVyX2xpbmsgPSBuZXh0OwogICAgICAgICAgICAgUHlfWElOQ1JFRihuZXh0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICAgICAgUHlfWFNFVFJFRigqb3V0ZXJfbGluaywgbmV4dCk7CiAgICAgICAgICAgICBwcmV2X2xpbmsgPSBvdXRlcl9saW5rOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTM0OCw2MSArMTM0MCwxNzAgQEAKIH0KIAogCi1QeU9iamVjdCAqCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCitzdGF0aWMgUHlPYmplY3QgKgorcmVzb2x2ZV9uYW1lKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgaW50IGxldmVsKQogewotICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKLSAgICBfUHlfSURFTlRJRklFUihfaW5pdGlhbGl6aW5nKTsKICAgICBfUHlfSURFTlRJRklFUihfX3BhY2thZ2VfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19wYXRoX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihwYXJlbnQpOworICAgIFB5T2JqZWN0ICphYnNfbmFtZTsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNwZWM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgUHlfc3NpemVfdCBsYXN0X2RvdDsKKyAgICBQeU9iamVjdCAqYmFzZTsKKyAgICBpbnQgbGV2ZWxfdXA7CisKKyAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2soZ2xvYmFscykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICBpZiAocGFja2FnZSA9PSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBOVUxMOworICAgIH0KKyAgICBzcGVjID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19zcGVjX18pOworCisgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicGFja2FnZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwZWMgIT0gTlVMTCAmJiBzcGVjICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGludCBlcXVhbDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJlbnQgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgICAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlcXVhbCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChwYWNrYWdlLCBwYXJlbnQsIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnQpOworICAgICAgICAgICAgaWYgKGVxdWFsIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19JbXBvcnRXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCIsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChzcGVjICE9IE5VTEwgJiYgc3BlYyAhPSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIl9fc3BlY19fLnBhcmVudCBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0ltcG9ydFdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICJjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXyIsIDEpIDwgMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX25hbWVfXyk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBkb3Q7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGFja2FnZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKSwgLTEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkb3QgPj0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGRvdCk7CisgICAgICAgICAgICAgICAgaWYgKHN1YnN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihwYWNrYWdlLCBzdWJzdHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKKyAgICBpZiAobGFzdF9kb3QgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgcGFja2FnZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKKyAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfRmluZENoYXIocGFja2FnZSwgJy4nLCAwLCBsYXN0X2RvdCwgLTEpOworICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgYmFzZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGFja2FnZSwgMCwgbGFzdF9kb3QpOworICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKKyAgICBpZiAoYmFzZSA9PSBOVUxMIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKKyAgICAgICAgcmV0dXJuIGJhc2U7CisgICAgfQorCisgICAgYWJzX25hbWUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUuJVUiLCBiYXNlLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgcmV0dXJuIGFic19uYW1lOworCisgIGVycm9yOgorICAgIFB5X1hERUNSRUYocGFja2FnZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCkKK3sKICAgICBfUHlfSURFTlRJRklFUihfZmluZF9hbmRfbG9hZCk7CiAgICAgX1B5X0lERU5USUZJRVIoX2hhbmRsZV9mcm9tbGlzdCk7Ci0gICAgX1B5X0lERU5USUZJRVIoX2xvY2tfdW5sb2NrX21vZHVsZSk7Ci0gICAgX1B5X3N0YXRpY19zdHJpbmcoc2luZ2xlX2RvdCwgIi4iKTsKICAgICBQeU9iamVjdCAqYWJzX25hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpidWlsdGluc19pbXBvcnQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmaW5hbF9tb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYWNrYWdlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZ2xvYmFscyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZyb21saXN0ID0gTlVMTDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpbnQgaGFzX2Zyb207CiAKLSAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCi0gICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCi0gICAgICAgTlVMTCBhcmd1bWVudC4gKi8KLSAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7Ci0gICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKLSAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KLSAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKLSAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOwotICAgIH0KLQotICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7Ci0gICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7Ci0gICAgfQogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTQxNSwxNDAgKzE1MTYsNDQgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1vZHVsZSBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWUpIDwgMCkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlmIChsZXZlbCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZXZlbCBtdXN0IGJlID49IDAiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7Ci0gICAgICAgIGlmIChwYWNrYWdlICE9IE5VTEwgJiYgcGFja2FnZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fbmFtZV9fKTsKLSAgICAgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CiAKLSAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOwotICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgotICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgaWYgKGxldmVsID4gMCkgeworICAgICAgICBhYnNfbmFtZSA9IHJlc29sdmVfbmFtZShuYW1lLCBnbG9iYWxzLCBsZXZlbCk7CisgICAgICAgIGlmIChhYnNfbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsgIC8qIGxldmVsID09IDAgKi8KICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgcGFja2FnZSA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICB9Ci0KLSAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKLSAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBOVUxMOwotICAgICAgICBpbnQgbGV2ZWxfdXAgPSAxOwotCi0gICAgICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7Ci0gICAgICAgICAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsIDAsIGxhc3RfZG90LCAtMSk7Ci0gICAgICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKLSAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7Ci0KLSAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKLSAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKLSAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CiAgICAgICAgIGFic19uYW1lID0gbmFtZTsKICAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKICAgICB9CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotI2VuZGlmCi0gICAvKiBGcm9tIHRoaXMgcG9pbnQgZm9yd2FyZCwgZ290byBlcnJvcl93aXRoX3VubG9jayEgKi8KLSAgICAvKiBYWFggaW50ZXJwLT5idWlsdGluc19jb3B5IGlzIE5VTEwgaW4gc3ViaW50ZXJwcmV0ZXIhICovCi0gICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGluc19jb3B5ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zX2NvcHkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+YnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwotICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwotICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOwotICAgIH0KLSAgICBQeV9JTkNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKLQogICAgIG1vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgYWJzX25hbWUpOwogICAgIGlmIChtb2QgPT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImltcG9ydCBvZiAlUiBoYWx0ZWQ7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIiwgYWJzX25hbWUpOwogICAgICAgICBpZiAobXNnICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgYWJzX25hbWUsIE5VTEwpOworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19Nb2R1bGVOb3RGb3VuZEVycm9yLCBtc2csCisgICAgICAgICAgICAgICAgICAgIGFic19uYW1lLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtc2cpOwogICAgICAgICB9CiAgICAgICAgIG1vZCA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX2luaXRpYWxpemluZyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOwogICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqc3BlYzsKICAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CkBAIC0xNTcxLDkxICsxNTc2LDgzIEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA9PSAtMSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7Ci0gICAgICAgICAgICAvKiBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KLSAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKICNpZmRlZiBXSVRIX1RIUkVBRAotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgLyogX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCisgICAgICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKKyNlbmRpZgogICAgICAgICAvKiBfYm9vdHN0cmFwLl9maW5kX2FuZF9sb2FkKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCiAgICAgICAgIG1vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZmluZF9hbmRfbG9hZCwgYWJzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+aW1wb3J0X2Z1bmMsIE5VTEwpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogRnJvbSBub3cgb24gd2UgZG9uJ3QgaG9sZCB0aGUgaW1wb3J0IGxvY2sgYW55bW9yZS4gKi8KIAotICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICBpZiAoaGFzX2Zyb20gPCAwKQotICAgICAgICBnb3RvIGVycm9yOworICAgIGhhc19mcm9tID0gMDsKKyAgICBpZiAoZnJvbWxpc3QgIT0gTlVMTCAmJiBmcm9tbGlzdCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKKyAgICAgICAgaWYgKGhhc19mcm9tIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogICAgIGlmICghaGFzX2Zyb20pIHsKLSAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpOworICAgICAgICBpZiAobGV2ZWwgPT0gMCB8fCBsZW4gPiAwKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGRvdDsKIAotICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLCBsZW4sIDEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKLSAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CiAgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOwotCiAgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgewotICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCAwLCBkb3QpOworICAgICAgICAgICAgICAgIGlmIChmcm9udCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoZnJvbnQsIE5VTEwsIE5VTEwsIE5VTEwsIDApOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbnQpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IGxlbiAtIGRvdDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGFic19uYW1lX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGFic19uYW1lKTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdG9fcmV0dXJuID0gUHlVbmljb2RlX1N1YnN0cmluZyhhYnNfbmFtZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX25hbWVfbGVuIC0gY3V0X29mZik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKICAgICAgICAgICAgICAgICBpZiAodG9fcmV0dXJuID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CiAgICAgICAgICAgICAgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiBub3QgaW4gc3lzLm1vZHVsZXMgYXMgZXhwZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmaW5hbF9tb2QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NjYsMjQgKzE2NjMsMTQgQEAKICAgICBlbHNlIHsKICAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGludGVycC0+aW1wb3J0X2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0KLSAgICBnb3RvIGVycm9yOwogCi0gIGVycm9yX3dpdGhfdW5sb2NrOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7Ci0gICAgfQotI2VuZGlmCiAgIGVycm9yOgogICAgIFB5X1hERUNSRUYoYWJzX25hbWUpOwotICAgIFB5X1hERUNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKLSAgICBQeV9YREVDUkVGKGdsb2JhbHMpOwotICAgIFB5X1hERUNSRUYoZnJvbWxpc3QpOwogICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkKICAgICAgICAgcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMoKTsKICAgICByZXR1cm4gZmluYWxfbW9kOwpAQCAtMTk1OSwxOSArMTk0NiwxNSBAQAogCiAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CiAgICAgaWYgKGRlZiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgc3RhdGUgPSBQeU1vZHVsZV9HZXRTdGF0ZShtb2QpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgIC8qIEFscmVhZHkgaW5pdGlhbGl6ZWQ7IHNraXAgcmVsb2FkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIHJldHVybiBQeU1vZHVsZV9FeGVjRGVmKG1vZCwgZGVmKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmMgYi9QeXRob24vaW1wb3J0ZGwuYwppbmRleCAxYWE1ODVkLi5hYzAzMjg5IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuYworKysgYi9QeXRob24vaW1wb3J0ZGwuYwpAQCAtMjMsOCArMjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IGNoYXIgKmFzY2lpX29ubHlfcHJlZml4ID0gIlB5SW5pdCI7Ci1zdGF0aWMgY29uc3QgY2hhciAqbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBub25hc2NpaV9wcmVmaXggPSAiUHlJbml0VSI7CiAKIC8qIEdldCB0aGUgdmFyaWFibGUgcGFydCBvZiBhIG1vZHVsZSdzIGV4cG9ydCBzeW1ib2wgbmFtZS4KICAqIFJldHVybnMgYSBieXRlcyBpbnN0YW5jZS4gRm9yIG5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzLCB0aGUgbmFtZSBpcwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCmluZGV4IGE1ZmM5MzYuLjE5NWZiZmQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWIuaAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTEsMTIyNiArMSwxMjE5IEBACiAvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKLSAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAotICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAotICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCi0gICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAotICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKLSAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKLSAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAotICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCi0gICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAotICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAotICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAotICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCi0gICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCi0gICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCi0gICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKLSAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKLSAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCi0gICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCi0gICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKLSAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAotICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCi0gICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAotICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAotICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAotICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKLSAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAotICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKLSAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKLSAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCi0gICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAotICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCi0gICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCi0gICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAotICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCi0gICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAotICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCi0gICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAotICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAotICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCi0gICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKLSAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAotICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCi0gICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAotICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCi0gICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKLSAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAotICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKLSAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCi0gICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCi0gICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxNjksMCwxMTQsMTAsMCwwLDAsCi0gICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKLSAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKLSAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCi0gICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCi0gICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCi0gICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAotICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKLSAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAotICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAotICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCi0gICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAotICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAotICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCi0gICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKLSAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKLSAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCi0gICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKLSAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAotICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKLSAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKLSAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAotICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKLSAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCi0gICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAotICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCi0gICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAotICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKLSAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKLSAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKLSAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCi0gICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKLSAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAotICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKLSAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKLSAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAotICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAotICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKLSAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAotICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCi0gICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAotICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKLSAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCi0gICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKLSAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAotICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAotICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAotICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAotICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAotICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCi0gICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAotICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAotICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKLSAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKLSAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsNDYsMCwwLDAsOTQsMCwwLDAsMTE1LDMyLDAsMCwwLDAsCi0gICAgNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LAotICAgIDEsNCwxLDEyLDEsMTYsMSwxOCwxLDIyLDIsMTMsMSwyMSwyLDEyMiwKLSAgICAxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTU3LDAsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLAotICAgIDE0MywxMjksMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsCi0gICAgMTE0LDQ5LDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCi0gICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MCwwLDExNiw2LAotICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAotICAgIDE0NiwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsNywKLSAgICAwLDExNCwxNDYsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwKLSAgICA4NywxMDAsMCwwLDgxLDgyLDg4LDEwMCwwLDAsODMsNDEsNCw3OCwxMjIsMzEsCi0gICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywKLSAgICAxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LAotICAgIDMzLDAsMCwwLDExNCw0NSwwLDAsMCw0MSwxMCwxMTQsMzQsMCwwLDAsCi0gICAgMTE0LDQwLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LAotICAgIDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwKLSAgICAwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDExNCwzOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsMTE5LDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLAotICAgIDE1LDEsMTIsMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsCi0gICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsCi0gICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LAotICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsCi0gICAgMCwwLDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSwKLSAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTMyLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLAotICAgIDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwKLSAgICAyMCwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywKLSAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMiwwLDAsCi0gICAgMCw2OCwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsNCw2LDIsMTIsOCwKLSAgICAxMiwxMiwxMiwyNSwxMiwxMywxMTQsMzIsMCwwLDAsOTksMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKLSAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwKLSAgICA4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksCi0gICAgMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAotICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLAotICAgIDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDMzLDAsMCwwLDQxLAotICAgIDIsMTE0LDE1LDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE0MCwwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjAyLDEsMCwwLDEwMCwwLDkwLDAsMTAwLDEsCisgICAgOTcsMSwxMDAsMiwxMDAsMywxMzIsMCw5MCwyLDEwMCw0LDEwMCw1LDEzMiwwLAorICAgIDkwLDMsMTA1LDAsOTAsNCwxMDUsMCw5MCw1LDcxLDAsMTAwLDYsMTAwLDcsCisgICAgMTMyLDAsMTAwLDcsMTAxLDYsMTMxLDMsOTAsNyw3MSwwLDEwMCw4LDEwMCw5LAorICAgIDEzMiwwLDEwMCw5LDEzMSwyLDkwLDgsNzEsMCwxMDAsMTAsMTAwLDExLDEzMiwwLAorICAgIDEwMCwxMSwxMzEsMiw5MCw5LDcxLDAsMTAwLDEyLDEwMCwxMywxMzIsMCwxMDAsMTMsCisgICAgMTMxLDIsOTAsMTAsMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMSwxMDAsMTYsMTAwLDE3LAorICAgIDEzMiwwLDkwLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTMsMTAwLDIwLDEwMCwyMSwKKyAgICAxNTYsMSwxMDAsMjIsMTAwLDIzLDEzMiwyLDkwLDE0LDEwMCwyNCwxMDAsMjUsMTMyLDAsCisgICAgOTAsMTUsMTAwLDI2LDEwMCwyNywxMzIsMCw5MCwxNiwxMDAsMjgsMTAwLDI5LDEzMiwwLAorICAgIDkwLDE3LDEwMCwzMCwxMDAsMzEsMTMyLDAsOTAsMTgsNzEsMCwxMDAsMzIsMTAwLDMzLAorICAgIDEzMiwwLDEwMCwzMywxMzEsMiw5MCwxOSw3MSwwLDEwMCwzNCwxMDAsMzUsMTMyLDAsCisgICAgMTAwLDM1LDEzMSwyLDkwLDIwLDEwMCwxLDEwMCwxLDEwMCwzNiwxNTYsMiwxMDAsMzcsCisgICAgMTAwLDM4LDEzMiwyLDkwLDIxLDEwMSwyMiwxMzEsMCw5MCwyMywxMDAsOTIsMTAwLDM5LAorICAgIDEwMCw0MCwxMzIsMSw5MCwyNCwxMDAsNDEsMTAwLDQyLDE1NiwxLDEwMCw0MywxMDAsNDQsCisgICAgMTMyLDIsOTAsMjUsMTAwLDQ1LDEwMCw0NiwxMzIsMCw5MCwyNiwxMDAsNDcsMTAwLDQ4LAorICAgIDEzMiwwLDkwLDI3LDEwMCw0OSwxMDAsNTAsMTMyLDAsOTAsMjgsMTAwLDUxLDEwMCw1MiwKKyAgICAxMzIsMCw5MCwyOSwxMDAsNTMsMTAwLDU0LDEzMiwwLDkwLDMwLDEwMCw1NSwxMDAsNTYsCisgICAgMTMyLDAsOTAsMzEsNzEsMCwxMDAsNTcsMTAwLDU4LDEzMiwwLDEwMCw1OCwxMzEsMiwKKyAgICA5MCwzMiw3MSwwLDEwMCw1OSwxMDAsNjAsMTMyLDAsMTAwLDYwLDEzMSwyLDkwLDMzLAorICAgIDcxLDAsMTAwLDYxLDEwMCw2MiwxMzIsMCwxMDAsNjIsMTMxLDIsOTAsMzQsMTAwLDYzLAorICAgIDEwMCw2NCwxMzIsMCw5MCwzNSwxMDAsNjUsMTAwLDY2LDEzMiwwLDkwLDM2LDEwMCw5MywKKyAgICAxMDAsNjcsMTAwLDY4LDEzMiwxLDkwLDM3LDEwMCw2OSwxMDAsNzAsMTMyLDAsOTAsMzgsCisgICAgMTAwLDcxLDkwLDM5LDEwMSwzOSwxMDAsNzIsMjMsMCw5MCw0MCwxMDAsNzMsMTAwLDc0LAorICAgIDEzMiwwLDkwLDQxLDEwMCw3NSwxMDAsNzYsMTMyLDAsOTAsNDIsMTAwLDk0LDEwMCw3OCwKKyAgICAxMDAsNzksMTMyLDEsOTAsNDMsMTAwLDgwLDEwMCw4MSwxMzIsMCw5MCw0NCwxMDAsODIsCisgICAgMTAwLDgzLDEzMiwwLDkwLDQ1LDEwMCwxLDEwMCwxLDEwMiwwLDEwMCw3NywxMDIsNCwKKyAgICAxMDAsODQsMTAwLDg1LDEzMiwxLDkwLDQ2LDEwMCw4NiwxMDAsODcsMTMyLDAsOTAsNDcsCisgICAgMTAwLDg4LDEwMCw4OSwxMzIsMCw5MCw0OCwxMDAsOTAsMTAwLDkxLDEzMiwwLDkwLDQ5LAorICAgIDEwMCwxLDgzLDAsNDEsOTUsOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLAorICAgIDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLAorICAgIDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLAorICAgIDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LAorICAgIDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwKKyAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLAorICAgIDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsCisgICAgMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsCisgICAgOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDc4LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCw0MCwxMDAsNiw2OCwwLDkzLAorICAgIDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwyLDExNCw2LDExNiwxLDEyNCwKKyAgICAwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwyLDEzMSwzLDEsMCwxMTMsCisgICAgNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwxLDEwNiwzLDEzMSwxLDEsCisgICAgMCwxMDAsNSw4MywwLDQxLDcsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsCisgICAgMTE1LDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSw3OCw0MSw0LDExNCwwLDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDQxLDUsMjE4LDcsCisgICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKKyAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAorICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCisgICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsCisgICAgMTY5LDAsMTE0LDEwLDAsMCwwLDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwyNywwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDIsMTAsMSwxMCwxLDIyLDEsMTE0LDEyLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDExNiwKKyAgICAxLDEzMSwxLDEyNCwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LAorICAgIDExNiwxMjEsMTEyLDEwMSwyMTgsMywxMTUsMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksCisgICAgMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsCisgICAgMSw4MywwLDQxLDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwKKyAgICA0NywwLDAsMCwxMTUsMiwwLDAsMCw4LDEsMTE0LDE3LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDU2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwxMiwKKyAgICA4MywwLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKKyAgICAxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLAorICAgIDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywKKyAgICAxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQ4LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNCwwLDk1LDIsCisgICAgMTE2LDAsMTA2LDEsMTMxLDAsMTI0LDAsOTUsMywxMjQsMSwxMjQsMCw5NSw0LAorICAgIDEwMCwwLDEyNCwwLDk1LDUsMTAwLDEsMTI0LDAsOTUsNiwxMDAsMSwxMjQsMCwKKyAgICA5NSw3LDEwMCwwLDgzLDAsNDEsMiw3OCwyMzMsMCwwLDAsMCw0MSw4LAorICAgIDIxOCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwKKyAgICAxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNCwxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwKKyAgICAxMDEsMTE0LDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsCisgICAgMTE0LDExNSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDU3LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDEsMTAsMSwxMCwxLDYsMSw2LDEsNiwxLDEyMiwyMCw5NSwKICAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsCi0gICAgNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4MywKLSAgICA0MSwzLDc4LDExNCw0NSwwLDAsMCw4NCw0MSwxLDExNCwzOCwwLDAsMCwKLSAgICA0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsNDYsMCwwLDAsMTQ0LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LAotICAgIDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMSwwLDEwMCwyLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwzLAotICAgIDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4Myw0MSw0LDc4LDExNCwzMywwLAotICAgIDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywKLSAgICAxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMTE0LDQ1LDAsMCwwLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwKLSAgICA0OCwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLDAsMTQ4LAotICAgIDAsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDEyLDEsMTIyLDI0LAorICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMDYsMiwxMjUsMiwxMjAsNDQsMTE2LDMsMTA2LAorICAgIDQsMTI0LDIsMTMxLDEsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDM4LDEwMCwKKyAgICAxLDgzLDAsMTI0LDMsMTA2LDIsMTI1LDIsMTI0LDIsMTI0LDEsMTA3LDIsMTE0LAorICAgIDE2LDEwMCwyLDgzLDAsMTEzLDE2LDg3LDAsMTAwLDAsODMsMCw0MSwzLDc4LAorICAgIDcwLDg0LDQxLDUsMTE0LDIwLDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwKKyAgICAxMDAsMTAxLDExMCwxMTYsMTE0LDIzLDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LAorICAgIDEwNywxMDUsMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMjEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDEyLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjUsMCwKKyAgICAwLDAsMTE1LDE4LDAsMCwwLDAsMiw4LDEsNiwxLDIsMSwxMCwKKyAgICAxLDgsMSw0LDEsNiwxLDgsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDE2OCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMTYsMiwxMjQsMSw2MCwwLDEyMiwxMzgsMTIwLAorICAgIDEzMiwxMjQsMCwxMDYsMywxNDMsOTYsMSwwLDEyNCwwLDEwNiw0LDEwMCwxLDEwNywKKyAgICAyLDExNSw0OCwxMjQsMCwxMDYsNSwxMjQsMSwxMDcsMiwxMTQsNzIsMTI0LDEsMTI0LAorICAgIDAsOTUsNSwxMjQsMCw0LDAsMTA2LDQsMTAwLDIsNTUsMCwyLDAsOTUsCisgICAgNCwxMDAsMyw4MywwLDEyNCwwLDEwNiw2LDEzMSwwLDExNCw5MiwxMTYsNywxMDAsCisgICAgNCwxMjQsMCwyMiwwLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw4LDEwNiw5LDEwMCwKKyAgICA1LDEzMSwxLDExNCwxMTgsMTI0LDAsNCwwLDEwNiwxMCwxMDAsMiw1NSwwLDIsCisgICAgMCw5NSwxMCw4NywwLDEwMCw2LDgxLDAsODIsMCw4OCwwLDEyNCwwLDEwNiwKKyAgICA4LDEwNiw5LDEzMSwwLDEsMCwxMjQsMCwxMDYsOCwxMDYsMTEsMTMxLDAsMSwKKyAgICAwLDExMywyMCw4NywwLDg3LDAsMTAwLDYsMTE2LDIsMTI0LDEsNjEsMCw4OCwKKyAgICAwLDEwMCw2LDgzLDAsNDEsNywxMjIsMTg1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LAorICAgIDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwKKyAgICAxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LAorICAgIDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsCisgICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDE5LDAsMCwwLDIzMywxLDAsMCwwLDg0LDEyMiwyMywxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCw0MSwxMiwxMTQsMjAsMCwwLDAsMTE0LAorICAgIDI4LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDI0LAorICAgIDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwwLDAsMTE0LDE3LDAsCisgICAgMCwwLDExNCwyMiwwLDAsMCwyMTgsNyw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNCwyNSwwLDAsMCwyMTgsNywxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLAorICAgIDExNCwyNiwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDM0LDAsMCwwLDc3LDAsCisgICAgMCwwLDExNSwzMiwwLDAsMCwwLDYsOCwxLDgsMSwyLDEsMiwKKyAgICAxLDgsMSwyMCwxLDYsMSwxNCwxLDQsMSw4LDEsMTIsMSwxMiwKKyAgICAxLDI0LDIsMTAsMSwxOCwyLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIyLDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLDEyNCwwLAorICAgIDEwNiwyLDE0Myw5OCwxLDAsMTI0LDAsMTA2LDMsMTI0LDEsMTA3LDMsMTE0LDM0LAorICAgIDExNiw0LDEwMCwxLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw1LDEwMCwyLDEwNyw0LAorICAgIDExNSw0OCwxMTYsNiwxMzAsMSwxMjQsMCw0LDAsMTA2LDUsMTAwLDMsNTYsMCwKKyAgICAyLDAsOTUsNSwxMjQsMCwxMDYsNSwxMDAsMiwxMDcsMiwxMTQsMTA4LDEwMCwwLAorICAgIDEyNCwwLDk1LDMsMTI0LDAsMTA2LDcsMTE0LDEwOCwxMjQsMCw0LDAsMTA2LDcsCisgICAgMTAwLDMsNTYsMCwyLDAsOTUsNywxMjQsMCwxMDYsOCwxMDYsOSwxMzEsMCwKKyAgICAxLDAsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMDAsMCw4MywwLAorICAgIDQxLDQsNzgsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDExNCwxOSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsMTAsCisgICAgMTE0LDIwLDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LAorICAgIDIzLDAsMCwwLDIxOCwxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDI0LDAsMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjUsMCwwLDAsMTE0LDIyLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsMzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEwMiwwLDAsMCwxMTUsMjIsMCwwLDAsMCwKKyAgICAxLDgsMSw4LDEsMTAsMSw4LDEsMTQsMSwxNCwxLDEwLDEsNiwKKyAgICAxLDYsMSwxNCwxLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LDEsMTE2LDIsMTI0LDAsCisgICAgMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyMyw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLAorICAgIDEyMywxMjUsNDEsMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNCwxNSwwLDAsCisgICAgMCwyMTgsMiwxMDUsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSwxMTUsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksMTE0LDEsMCwwLDAsMTE0LDAsCisgICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDI3LDAsCisgICAgMCwwLDExNCwzMiwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDM1LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4LDAsMCwwLDUxLAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCw4LDQsNCwyLDgsOCw4LDEyLAorICAgIDgsMjUsOCwxMywxMTQsMTgsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDgsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLAorICAgIDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCwKKyAgICA2LDEwMCw3LDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsCisgICAgMTAsODMsMCw0MSwxMSwyMTgsMTYsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLAorICAgIDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwKKyAgICAxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwyLDc4LDExNCwxOSwwLDAsCisgICAgMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjQsMCwwLDAsNDEsMiwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxMjMsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LAorICAgIDAsNCwwLDEwNiwwLDEwMCwxLDU1LDAsMiwwLDk1LDAsMTAwLDIsODMsCisgICAgMCw0MSwzLDc4LDExNCwzMywwLDAsMCw4NCw0MSwxLDExNCwyNCwwLDAsCisgICAgMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMzQsMCwwLDAsMTI3LDAsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSwxNCwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwKKyAgICAxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwxLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwKKyAgICAwLDQsMCwxMDYsMCwxMDAsMyw1NiwwLDIsMCw5NSwwLDEwMCwwLDgzLAorICAgIDAsNDEsNCw3OCwxMTQsMTksMCwwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLAorICAgIDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwzMywwLDAsMCw0MSwKKyAgICAyLDExNCwyNCwwLDAsMCwxMTQsMzYsMCwwLDAsNDEsMSwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEzMSwwLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDEsMTAsMSw4LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LAorICAgIDEsMTE2LDIsMTI0LDAsMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyOCwKICAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCi0gICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKLSAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCi0gICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsMzgsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwzOSwwLDAsMCw0MSwxLDExNCwKKyAgICAyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsNDAsMCwwLDAsMTM2LDAsMCwwLDExNSwyLDAsMCwKICAgICAwLDAsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKICAgICAxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsCiAgICAgOCwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKLSAgICA0NywwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MywwLAotICAgIDAsMCwxMzYsMCwwLDAsMTE1LDEwLDAsMCwwLDEyLDIsNiwyLDEyLAotICAgIDQsMTIsNCwxMiw1LDExNCw1MywwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE5LDAsMCwwLDExNSwxMCwwLDAsMCw4LDIsNCwyLDgsCisgICAgNCw4LDQsOCw1LDExNCw0MSwwLDAsMCw5OSwwLDAsMCwwLDAsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsCi0gICAgNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsCisgICAgMzYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwyLAorICAgIDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsNiwKKyAgICAxMzIsMCw5MCw1LDEwMCw3LDgzLDAsNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLAogICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKLSAgICAwLDEwMCwwLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLAotICAgIDc4LDQxLDIsMTE0LDE4LDAsMCwwLDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTU5LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI3LDk1LDc3LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsCi0gICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKLSAgICAwLDAsMCwxMjIsMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsMiwwLDg3LDEwMCwwLDAsMTE2LDMsMCwxMDYsCi0gICAgNCwwLDEzMSwwLDAsMSw4OCwxMjQsMCwwLDEwNiwyLDAsMTA2LDUsMCwKLSAgICAxMzEsMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDE2LDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCwKLSAgICAxOCwwLDAsMCwxMTQsNTUsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsMjE4LAotICAgIDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0NiwwLAotICAgIDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsMTYzLDAsMCwKLSAgICAwLDExNSw4LDAsMCwwLDAsMSwzLDEsMjIsMiwxMSwxLDEyMiwyOCwKLSAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw3OSwwLDAsCi0gICAgMCwxMTUsMTcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNDcsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsMTE0LDI5LDAsCi0gICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTcwLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwKLSAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsCi0gICAgMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDU0LDAsMCwwLAotICAgIDE1NywwLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsCi0gICAgNTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTM5LDAsMCwwLDEwMCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsMCwwLDEzNiwwLDAsMjUsMTMxLDAsCi0gICAgMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsCi0gICAgNDMsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxMzUsMCwxMTYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCi0gICAgODMsMCwxMTYsMywwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwKLSAgICAwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwKLSAgICAxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwwLAotICAgIDAsMTM2LDAsMCw2MCwxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LAotICAgIDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICAxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsCi0gICAgMTE1LDExLDAsMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxOTAsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LAotICAgIDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTksMCwwLDAsMTE0LDI4LAotICAgIDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDIxOCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwKLSAgICAxMDIsNDEsMywxMTQsMTUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw2MSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxNzYsMCwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwKLSAgICAxLDE1LDIsMTIsMSwxOCwyLDIyLDEsMTE0LDU2LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsCi0gICAgODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLAotICAgIDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAorICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwwLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsMiwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxNDIsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDYsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDEyMiwKKyAgICAxNiwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMjQsMCw5NSwyLDg3LDAsMTAwLAorICAgIDAsMTE2LDMsMTA2LDQsMTMxLDAsMSwwLDg4LDAsMTI0LDAsMTA2LDIsMTA2LAorICAgIDUsMTMxLDAsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCwxNiwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywKKyAgICAxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDIxOCwxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsMzQsCisgICAgMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSwxNDYsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDIsCisgICAgMSwxNiwyLDEwLDEsMTIyLDI4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLAorICAgIDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICAxLDAsMCwwLDc5LDAsMCwwLDExNSwxNCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMDYsMSwxMzEsMCwxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsCisgICAgMTE0LDQ0LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCwyNiwwLDAsCisgICAgMCwyMTgsNCw5NywxMTQsMTAzLDExNSw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAorICAgIDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDI3LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw0MiwwLDAsMCwxNDAsMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDQyLDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDAsMSwxMjUsMSwxMjEsMTQsMTE2LDAsCisgICAgMTM2LDAsMjUsMCwxMzEsMCwxMjUsMSw4NywwLDExMCwyMCw0LDAsMTE2LDEsCisgICAgMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDEsMTAwLDEsMTA3LDgsMTE0LDEwMiwxMTYsMiwxMDAsMSwxMDcsOCwxMTQsNjYsCisgICAgMTE2LDMsMTM2LDAsMTMxLDEsMTI1LDEsMTEwLDgsMTE2LDQsMTM2LDAsMTMxLDEsCisgICAgMTI1LDEsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDgsMTI1LDIsMTE2LDUsCisgICAgMTA2LDYsMTI0LDEsMTI0LDIsMTMxLDIsMTE2LDAsMTM2LDAsNjAsMCwxMjQsMSwKKyAgICA4MywwLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwKICAgICAxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwKLSAgICAxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCw1NiwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCwxMTQsMzEsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDE1LAotICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTUsMCwwLDAsCi0gICAgMTE1LDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsCi0gICAgMyw1LDIsMTE0LDYzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsCi0gICAgMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsCi0gICAgMSw5Nyw0NiwxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsCi0gICAgMTA4LDExOSw5NywxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLAotICAgIDExNywxMDEsMTEwLDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksCi0gICAgMTE2LDEwNSwxMTEsMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwKLSAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsCi0gICAgMTE0LDEwOSw5NywxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsCi0gICAgOTksMTAxLDExNSwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCwxMCwzMiwzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LAotICAgIDExNCwxMTEsMTAwLDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwKLSAgICAzMiwxMTAsMTExLDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKLSAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTQsMTAsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LDI5LAotICAgIDAsMCwwLDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LDk1LAotICAgIDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwKLSAgICAxMTgsMTAxLDEwMCwyMTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCw2NSwKLSAgICAwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDExNCw0NSwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LDcxLDAsMTI0LAotICAgIDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsMCwxMDAsMywKLSAgICAwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsCi0gICAgMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsCi0gICAgMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsCi0gICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksCi0gICAgODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAotICAgIDQxLDIsMTE0LDY3LDAsMCwwLDExNCw2OCwwLDAsMCw0MSw3LDExNCwxNCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsCisgICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LAorICAgIDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMTM2LDAsNjEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsCisgICAgOTUsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMiw5OSw5OCwxNzMsMCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsCisgICAgNywxMTQsNTEsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDIwLDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsMTgsMCwwLDAsMjE4LAorICAgIDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLDEwMiw0MSwzLAorICAgIDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDQ1LDAsMCwwLDE1OSwwLDAsMCwxMTUsMjQsMCwwLDAsMCw0LAorICAgIDQsMSwyLDEsMTQsMSwxNCwxLDYsMSw4LDEsOCwxLDEwLDIsCisgICAgOCwxLDEyLDIsMTYsMSwxMTQsNDUsMCwwLDAsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEyNSwxLDExNiwxLDEwNiwKKyAgICAyLDEzMSwwLDEsMCwxMjEsMTIsMTI0LDEsMTA2LDMsMTMxLDAsMSwwLDg3LAorICAgIDAsMTEwLDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDQ4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDEwLDg4LDAsMTI0LDEsMTA2LDUsMTMxLDAsMSwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LAorICAgIDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsCisgICAgMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsCisgICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsCisgICAgNDEsNiwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywwLDAsCisgICAgMCwxMTQsMzQsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTc4LDAsMCwwLDExNSwxNCwwLDAsMCwwLDcsOCwxLDgsMSwyLAorICAgIDEsMTIsMSwxNCwzLDYsMiwxMTQsNTYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMTI0LDAsMTI0LDEsMTI0LDIsMTQyLDEsODMsMCwKKyAgICA0MSwxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwKKyAgICA5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwKKyAgICAxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsCisgICAgOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsCisgICAgMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLAorICAgIDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LAorICAgIDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKKyAgICAxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsCisgICAgMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsCisgICAgNDksMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDE5NywwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LAorICAgIDU4LDAsMCwwLDExNCwzMywwLDAsMCw0MSwxLDIxOCw5LDExOCwxMDEsMTE0LAorICAgIDk4LDExMSwxMTUsMTA1LDExNiwxMjEsOTksMSwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNSwwLDAsMCw3MSwwLDAsMCwxMTUsNTQsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTA2LDIsMTI0LDEsMTA3LDUsMTE0LDUwLDEyNCwwLDEwNiwzLAorICAgIDEwMCw2LDEzMSwxLDExNSwzMCwxMDAsMywxMjQsMCwyMywwLDEyNSwwLDExNiw0LAorICAgIDEyNCwwLDEwNiw1LDEyNCwyLDE0MiwwLDExNiwwLDEwNiw2LDEwMCw0LDE0MSwyLAorICAgIDEsMCwxMDAsNSw4MywwLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLDExNSwKKyAgICAxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LDcyLAorICAgIDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywxMTQsCisgICAgMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw0MSwxLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAorICAgIDQxLDIsMTE0LDYwLDAsMCwwLDExNCw2MSwwLDAsMCw0MSw3LDExNCwxNCwKICAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCiAgICAgMTExLDExNSwxMDEsMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKLSAgICA1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDUwLDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLAotICAgIDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDY2LAotICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwzOCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKKyAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw1OSwKKyAgICAwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAogICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCi0gICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIyNSwwLDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDc1LDAsMCwwLDk5LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMDgsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDEyLDEsMTAsMSw4LDEsMTE0LDY4LDAsMCwwLDk5LAogICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKLSAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsMywxMjIsNDksCi0gICAgNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwKLSAgICAxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKLSAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCi0gICAgMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsMCwxMjQsMSwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMDcsNywwLDExNCw0MiwwLDExNiwyLDAsMTAwLDEsMCwKLSAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsODMsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsMTQsMCwwLDAsCi0gICAgMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCwKLSAgICA4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjM1LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwKLSAgICAxNSwxLDE4LDEsOSwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCi0gICAgMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLAotICAgIDAsMCwwLDQxLDIsMTE0LDc5LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDIzMywwLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwKLSAgICAxMywxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKLSAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKLSAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCi0gICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsCi0gICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDIsMCwKLSAgICAxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LAotICAgIDU3LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LAotICAgIDc3LDAsMCwwLDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsNzgsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwyNiwwLDAsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsCisgICAgMiwxMzIsOCwxMjUsMSwxMTYsMCwxMjQsMSwxMzYsMCwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSwzLDEyMiw0OSw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM4LDAsCisgICAgMCwwLDEyNCwxLDExNiwwLDEwNiwxLDEwNyw3LDExNCwyOCwxMTYsMiwxMDAsMSwKKyAgICAxMDYsMywxMjQsMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsCisgICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsMTUsMCwwLAorICAgIDAsNDEsNCwxMTQsMTQsMCwwLDAsMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLAorICAgIDQxLDIsMTE0LDI2LDAsMCwwLDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjE4LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwxMCwxLDEwLDEsOCwxLDEyMiw1MiwKKyAgICA5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsCisgICAgMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDcyLDAsCisgICAgMCwwLDExNCw3MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsNzIsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDIxNiwwLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTIsNSwxMCwxLDExNCw3NCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDMsMCwwLDAsMTE1LDI2LDAsMCwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNSwxLDExNiwwLDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAorICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzgsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTE1LDI4LDExNiwyLDEwMCwxLDEwNiwzLAorICAgIDEyNCwxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLAorICAgIDEyNCwxLDEzMSwyLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKKyAgICA0NiwwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKKyAgICA3MCwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDQxLDEsMTE0LDcyLDAsMCwwLDExNCwxMCwwLDAsCiAgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKICAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCi0gICAgMjQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsOSwKKyAgICAyMjksMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSw4LAogICAgIDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsCiAgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzksCi0gICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKLSAgICA3OSwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExNCwxMDEsMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMjQ0LDAsMCwwLDExNSwKLSAgICA2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDg0LDAsMCwwLDk5LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3MiwKKyAgICAwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAorICAgIDcyLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyMjcsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDEyLDUsMTAsMSwxMTQsNzcsMCwwLDAsOTksCiAgICAgMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwxLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEwNyw2LDAsMTE0LDY3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMjUsMTI1LDMsMCwxMTYsMywwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMjUsODMsMTE2LDQsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLAotICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCi0gICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAotICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsCi0gICAgNSwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwyMTgsNSw5NSwKLSAgICAxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwxOSwwLAotICAgIDAsMCwxMTQsNzgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwwLDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDYsMTUsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCw5MCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNiwxLDAsMCwxMTYsMCwwLDEyNCwwLAotICAgIDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLAotICAgIDEyNCwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3MSwwLDEyMSwxNywwLDEyNCwKLSAgICAxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEwLDE4LDAsCi0gICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMCwxLAotICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwKLSAgICAxMTAsMjMsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTI3LDAsCi0gICAgMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsODMsMTIxLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsNywwLDEyNSwzLDAsODcsMTEwLDI0LDAsNCwxMTYsNSwwLDEwNywxMCwKLSAgICAwLDExNCwxNjYsMCwxLDEsMSwxMDAsMywwLDEyNSwzLDAsODksMTEwLDEsCi0gICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsCi0gICAgNTksMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDI0MSwwLDEsMSwxLDEyNCwKLSAgICAxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMDAsNCwwLDEwNiw5LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDEwMCw1LDAsMTA2LDksMCwxMjQsMywKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLAotICAgIDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwwLDEzMSwyLDAsODMsMTAwLDAsMCwKLSAgICA4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAotICAgIDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLAotICAgIDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw5MiwwLDAsMCwyMTgsCi0gICAgOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwKLSAgICAxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LDEsMCwwLAotICAgIDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCw1MCwwLDAsMCwKLSAgICA0MSw1LDExNCw4OSwwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgMTYsMSwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywKLSAgICAxLDE3LDEsMTMsMSw1LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSwxMCw0LDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywKLSAgICAxLDEyLDEsMTMsMiwyMSwyLDExNCwxMDEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAotICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKLSAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKLSAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKLSAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAotICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKLSAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCi0gICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKLSAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCi0gICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCi0gICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKLSAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKLSAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKLSAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAotICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMTA0LDAsMCwKLSAgICAwLDExNCwyNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAotICAgIDExNCwxNSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwKLSAgICA5OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLAotICAgIDExNCwyOSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDY1LDEsCi0gICAgMCwwLDExNSwxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsCi0gICAgMSwxNywxLDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLAotICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKLSAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw1MiwKLSAgICAxLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAyLAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDgsMCwwLDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsCi0gICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKLSAgICAwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsCi0gICAgMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwKLSAgICAxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LAotICAgIDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAxLDExLDAsMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsCi0gICAgMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LAotICAgIDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsCi0gICAgMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsCi0gICAgMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLAotICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwKLSAgICAxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLAotICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsCi0gICAgMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwKLSAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsCi0gICAgOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKLSAgICAxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwKLSAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwKLSAgICAxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCi0gICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsCi0gICAgMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywKLSAgICAxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwKLSAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LAotICAgIDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKLSAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiwKLSAgICA5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAotICAgIDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsCi0gICAgMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LAotICAgIDEwNSwxMDMsMTA1LDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDMsMCwwLDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICAwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLAotICAgIDAsOTUsMiwwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwKLSAgICAxMTQsNDgsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LAotICAgIDQsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsCi0gICAgMCw5NSw2LDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LAotICAgIDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwKLSAgICAwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSwKLSAgICA5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsCi0gICAgOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDYsMTE0LDE5LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwxMDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDExNiwxLDAsMCwxMTUsMTQsCi0gICAgMCwwLDAsMCwyLDksMSw5LDEsOSwxLDksMSwyMSwzLDksCi0gICAgMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDcsMCwwLDAsCi0gICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxMDMsMiwKLSAgICAwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCwwLDAsMTA3LDksMCwKLSAgICAxMTQsNzYsMCwxMjQsMSwwLDEwNiw0LDAsMTAwLDMsMCwxMDYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMTYsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTAwLDQsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwKLSAgICAxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAotICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywKLSAgICAxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNTAsMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDIxOCw2LDk3LDExMiwKLSAgICAxMTIsMTAxLDExMCwxMDAsMTE0LDExMCwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSw5NSw5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MiwwLDAsMCwxMjgsCi0gICAgMSwwLDAsMTE1LDE2LDAsMCwwLDAsMSwxNSwxLDIxLDEsMTUsMSwKLSAgICAyNSwxLDE1LDEsMTIsMSwxMywxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsCi0gICAgMTIxLDEwNywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LAotICAgIDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDIsCi0gICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwNywyLDAsMTExLDExNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiw0LDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEyNCwxLDAsMTA2LDUsMCwxMDcsMiwwLDgzLDg3LDExMCwyMiwwLDQsMTE2LAotICAgIDYsMCwxMDcsMTAsMCwxMTQsMTQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwKLSAgICAxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5NiwwLDAsMCw0MSwzLDExNCwKLSAgICAxOSwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsOTAsNCwxMTUsMTA5LDExNSwKLSAgICAxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMzgsMSwwLDAsMTE1LDIwLDAsMCwKLSAgICAwLDAsMSw5LDEsMywxLDE4LDEsMTgsMSwxOCwxLDE1LDEsMTgsCi0gICAgMSwyMCwxLDEzLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKLSAgICA5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDc4LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNzgsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTE0LDc4LDAsMTE2LDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDU3LDAsMTE2LDQsMCwxMzAsMSwwLDExNiwzLDAsMTA2LDUsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSw3OCw0MSw2LDExNCwxMTIsMCwwLAotICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTExLDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LAotICAgIDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExNiwwLDAsMCwxNTAsMSwwLAotICAgIDAsMTE1LDEyLDAsMCwwLDAsMiwxNSwxLDI0LDEsMTIsMSw2LDEsCi0gICAgMjEsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAotICAgIDEsMTE0LDExMiwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsMTE2LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTU5LDEsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNSwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDgzLDEyNCwwLAotICAgIDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0Niw3OCwyMTgsMSwKLSAgICA0NiwxMTQsMzMsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDEsMSwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxNjMsMSwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCwzLDE1LDEsMjAsMiwxMjIsMTcsNzcsMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSwxLDExNCwxMTEsMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwxLDEyNCwwLDEzMSwKKyAgICAyLDEyNSwyLDEyNCwxLDExNiwxLDEwNiwyLDEwNyw2LDExNCw1MCwxMTYsMSwxMDYsCisgICAgMiwxMjQsMSwyNSwwLDEyNSwzLDExNiwzLDEyNCwyLDEyNCwzLDEzMSwyLDEsCisgICAgMCwxMTYsMSwxMDYsMiwxMjQsMSwyNSwwLDgzLDAsMTE2LDQsMTI0LDIsMTMxLAorICAgIDEsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDEyOCw3NiwxMTEsOTcsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDMyLDEwNSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAorICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LDIxOCwxNiwKKyAgICAxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTQsMTQsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCw1LAorICAgIDk1LDEwMSwxMjAsMTAxLDk5LDIxOCw1LDk1LDEwOCwxMTEsOTcsMTAwLDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsNiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDIzOSwwLDAsMCwxMTUsMTIsMCwwLAorICAgIDAsMCw2LDEwLDEsMTAsMSwxMCwxLDEwLDEsMTAsMiwxMTQsODQsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMzUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIxNiwwLDAsMCwxMTYsMCwxMjQsMCwKKyAgICAxMDAsMSwxMDAsMCwxMzEsMywxMjUsMSwxMTYsMSwxMjQsMSwxMDAsMiwxMzEsMiwKKyAgICAxMTQsNTQsMTIxLDEwLDEyNCwxLDEwNiwyLDEyNCwwLDEzMSwxLDgzLDAsNCwwLAorICAgIDExNiwzLDEwNywxMCwxMTQsNTIsMSwwLDEsMCwxLDAsODksMCwxMTAsMiwKKyAgICA4OCwwLDEyMSwxMCwxMjQsMCwxMDYsNCwxMjUsMiw4NywwLDExMCwyMCw0LDAsCisgICAgMTE2LDUsMTA3LDEwLDExNCw4NCwxLDAsMSwwLDEsMCw4OSwwLDExMCwxOCwKKyAgICA4OCwwLDEyNCwyLDEwMCwwLDEwNyw5LDExNCwxMDIsMTE2LDYsMTI0LDIsMTMxLDEsCisgICAgODMsMCwxMjEsMTAsMTI0LDAsMTA2LDcsMTI1LDMsODcsMCwxMTAsMjQsNCwwLAorICAgIDExNiw1LDEwNywxMCwxMTQsMTM2LDEsMCwxLDAsMSwwLDEwMCwzLDEyNSwzLAorICAgIDg5LDAsMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDgsMTI1LDQsODcsMCwKKyAgICAxMTAsNTAsNCwwLDExNiw1LDEwNywxMCwxMTQsMTk4LDEsMCwxLDAsMSwwLAorICAgIDEyNCwxLDEwMCwwLDEwNyw4LDExNCwxODIsMTAwLDQsMTA2LDksMTI0LDMsMTMxLDEsCisgICAgODMsMCwxMDAsNSwxMDYsOSwxMjQsMywxMjQsMSwxMzEsMiw4MywwLDg5LDAsCisgICAgMTEwLDE0LDg4LDAsMTAwLDYsMTA2LDksMTI0LDMsMTI0LDQsMTMxLDIsODMsMCwKKyAgICAxMDAsMCw4MywwLDQxLDcsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsOTUsOTUsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICAyNTAsMSw2MywxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNjIsNDEsMTAsMTE0LDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDg2LDAsCisgICAgMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwyMTgsOCw5NSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSwyMTgsMTQsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKKyAgICAxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwyMTgsMjIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSwxMTQsCisgICAgMSwwLDAsMCwyMTgsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMTE0LDM4LAorICAgIDAsMCwwLDQxLDUsMTE0LDgzLDAsMCwwLDIxOCw2LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE0LDgyLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsOCwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCwyNTUsMCwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxMiwxLAorICAgIDEwLDQsMiwxLDEwLDEsMTQsMSw2LDEsMiwxLDEwLDEsMTQsMSwKKyAgICA2LDIsOCwxLDgsNCwyLDEsMTAsMSwxNCwxLDEwLDEsMiwxLAorICAgIDEwLDEsMTQsMSw4LDEsMTAsMiwxOCwyLDExNCw5NSwwLDAsMCw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDY0LDAsMCwwLDExNSwzNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLAorICAgIDIsMTAwLDEsMTAwLDIsMTMyLDAsOTAsMywxMDAsMywxMDAsNCwxMzIsMCw5MCwKKyAgICA0LDEwMCw1LDEwMCw2LDEzMiwwLDkwLDUsMTAwLDcsODMsMCw0MSw4LDIxOCwKKyAgICAxNyw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLAorICAgIDEwOCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgOTUsMCwxMjQsMSwxMDYsMSwxMjQsMCw5NSwyLDEwMCwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwzLDIxOCw3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw4OSwwLDAsCisgICAgMCwyMTgsNSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDExNCwyNiwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDI3LDAsMCwwLDM3LDEsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMSw2LDEsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwKKyAgICAxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCisgICAgOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjgsMCwwLDAsMTAwLDEsMTI0LDAsMTA2LAorICAgIDAsOTUsMSwxMjQsMCwxMDYsMiwxMTYsMywxMDYsNCwxMjQsMCwxMDYsMCwxMDYsCisgICAgNSw2MCwwLDEwMCwwLDgzLDAsNDEsMiw3OCw4NCw0MSw2LDExNCw5OCwwLAorICAgIDAsMCwyMTgsMTMsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDUsMTEwLAorICAgIDEwMywxMTQsOTcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwKKyAgICAxMTQsMTUsMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ4LDAsMCwwLAorICAgIDQxLDEsMCwwLDExNSw0LDAsMCwwLDAsNCw4LDEsMTIyLDI3LDk1LAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSwKKyAgICA0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDE3LDAsMCwwLDcxLDAsMCwwLDExNSwKKyAgICA5OCwwLDAsMCwxMjIsODIsMTI0LDAsMTA2LDAsMTI1LDIsMTE2LDEsMTAwLDEsCisgICAgMTAwLDIsMTMyLDAsMTI0LDEsNjgsMCwxMzEsMSwxMzEsMSwxMTQsNjQsMTIxLDE0LAorICAgIDExNiwyLDEwNiwzLDEyNCwyLDEwNiw0LDYxLDAsODcsMCwxMTMsODAsNCwwLAorICAgIDExNiw1LDEwNywxMCwxMTQsNjAsMSwwLDEsMCwxLDAsODksMCwxMTMsODAsCisgICAgODgsMCwxMTAsMTYsMTE2LDYsMTAwLDMsMTI0LDIsMTA2LDQsMTI0LDIsMTA2LDcsCisgICAgMTMxLDMsMSwwLDg3LDAsMTAwLDAsMTAwLDQsMTI0LDAsMTA2LDAsOTUsOCwKKyAgICA4OCwwLDEwMCwwLDgzLDAsNDEsNSw3OCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMjIsCisgICAgMCwwLDAsMTI0LDAsOTMsMTQsMTI1LDEsMTI0LDEsMTAwLDAsMTA3LDksODYsCisgICAgMCwxLDAsMTEzLDIsMTAwLDAsODMsMCw0MSwxLDc4LDExNCwxMCwwLDAsCisgICAgMCw0MSwyLDkwLDIsNDYsNDgsOTAsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsCisgICAgMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw1MSwxLDAsMCwxMTUsMiwwLDAsMCw0LAorICAgIDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LAorICAgIDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LAorICAgIDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwKKyAgICAxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwxMjUsMzIsMzUsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsOTgsMCwwLDAsMjE4LDMsOTcsMTEwLAorICAgIDEyMSwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsNTQsMCwwLDAsMTE0LDY4LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgOTksMCwwLDAsNDEsMywxMTQsMjYsMCwwLDAsMTE0LDQ5LDAsMCwwLAorICAgIDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsNTAsMCwwLDAsNDgsMSwwLDAsMTE1LDE4LDAsCisgICAgMCwwLDAsMSwyLDEsNiwxLDE4LDEsMiwxLDE0LDEsMTQsMSwKKyAgICA4LDIsMjAsMiwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCwKKyAgICA5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKKyAgICA3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCisgICAgMCwwLDExNCwyNywwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwxMTQsOTYsMCwwLDAsMzUsMSwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDk2LDAsMCwwLDk5LDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsCisgICAgMCwwLDAsMTE1LDExNCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsCisgICAgMTAwLDEsOTAsMywxMDAsMiwxMDAsMiwxMDAsMiwxMDAsMywxNTYsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMiw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDEsNywxMDAsMTAsMTAwLDExLDEzMiwwLDEzMSwxLAorICAgIDkwLDgsMTAxLDgsMTA2LDksMTAwLDEyLDEwMCwxMSwxMzIsMCwxMzEsMSw5MCw4LAorICAgIDEwMSw3LDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDcsMTAwLDE1LAorICAgIDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwxMSwxMDEsMTEsMTA2LDksMTAwLDE3LDEwMCwxNiwKKyAgICAxMzIsMCwxMzEsMSw5MCwxMSwxMDAsMiw4MywwLDQxLDE4LDIxOCwxMCw3NywxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLAorICAgIDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LAorICAgIDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsCisgICAgMTE3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTYsMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwKKyAgICAxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwKKyAgICAxMDEsMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsCisgICAgMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLAorICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsCisgICAgNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsCisgICAgMzIsMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwKKyAgICAxMDUsMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLAorICAgIDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLAorICAgIDMyLDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSwKKyAgICA5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLAorICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsCisgICAgMTAyLDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLAorICAgIDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLAorICAgIDEwNSwxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsCisgICAgMTE2LDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsCisgICAgMTA1LDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsCisgICAgOTYsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSwKKyAgICA5OCwxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTYsOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsCisgICAgMTE2LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLAorICAgIDExNSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTUsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCwKKyAgICA5OSwxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LAorICAgIDEwMSwxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCisgICAgMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwKKyAgICAxMTUsMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LAorICAgIDExNywxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LAorICAgIDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsCisgICAgMTA5LDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksCisgICAgMTAsMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwKKyAgICAxMTEsMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LAorICAgIDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksCisgICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLAorICAgIDEwOCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLAorICAgIDExNiw5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LAorICAgIDk4LDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwKKyAgICAxMjEsMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiw5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSwzLAorICAgIDIxOCw2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDEwMSwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTksMywwLDAsMCwzLDAsMCwwLDYsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNTQsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgOTUsMCwxMjQsMiwxMjQsMCw5NSwxLDEyNCwzLDEyNCwwLDk1LDIsMTI0LDQsCisgICAgMTI0LDAsOTUsMywxMjQsNSwxMTQsMzIsMTAzLDAsMTEwLDIsMTAwLDAsMTI0LDAsCisgICAgOTUsNCwxMDAsMSwxMjQsMCw5NSw1LDEwMCwwLDEyNCwwLDk1LDYsMTAwLDAsCisgICAgODMsMCw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LDAsMCwwLDExNCw5MywwLAorICAgIDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMDQsMCwwLDAsMjE4LDI2LDExNSwxMTcsCisgICAgOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDQxLDYsMTE0LDI2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTMsMCwwLAorICAgIDAsMTE0LDEwMywwLDAsMCwxMTQsMTA0LDAsMCwwLDExNCwxMDUsMCwwLDAsCiAgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAotICAgIDExNywwLDAsMCwxNzEsMSwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKLSAgICAyMyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSw5NSwKLSAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDEsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCw5OCwxMTEsMTExLDEwOCwKLSAgICAxMTQsMTExLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCw1LDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwxMTQsMTE3LDAsMCwwLDE3NSwxLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDIsNDEsMTIsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw1MiwwLAotICAgIDAsMCwxMTQsMTE4LDAsMCwwLDIxOCw4LDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDExNiwKLSAgICAxMjEsMTE0LDExNiwwLDAsMCwyMTgsNiwxMTUsMTAxLDExNiwxMTYsMTAxLDExNCwxMTQsMTIzLAotICAgIDAsMCwwLDExNCwxMTcsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMDYsMCwwLAotICAgIDAsNzksMSwwLDAsMTE1LDIwLDAsMCwwLDEyLDM1LDYsMiwxNSwxLAotICAgIDE1LDExLDEyLDEwLDEyLDEyLDE4LDksMjEsNCwxOCw4LDE4LDQsMTE0LDEwNiwKLSAgICAwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsOTksMiwwLAotICAgIDAsMCwyLDAsMCwwLDYsMCwwLDAsMTUsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIxNywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMzEsMiwwLDExNCwxMTAsMCwxMTYsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsCi0gICAgMzMsMCwxMTYsMiwwLDEzMCwxLDAsMTE2LDEsMCwxMDYsMywwLDEyNSw0LAotICAgIDAsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDcwLDAsMTI0LDQsMCwKLSAgICAxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMzEsMSwxLDgzLDEyNCwzLDAsCi0gICAgMTE0LDgyLDAsMTAzLDAsMCwxMTAsMywwLDEwMCwyLDAsMTI1LDUsMCwxMjQsCi0gICAgNCwwLDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEwMCw0LDAsMTI0LDUsCi0gICAgMCwxMzEsMSwyLDgzLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxOTIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMzEsMiwwLDExNCwxODYsMCwKLSAgICAxMjEsMTksMCwxMjQsMSwwLDEwNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwKLSAgICAzLDAsODcsMTEzLDE5MiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTgyLDAsCi0gICAgMSwxLDEsMTAwLDIsMCwxMjUsMywwLDg5LDExMywxOTIsMCw4OCwxMTAsNiwKLSAgICAwLDEwMCw2LDAsMTI1LDMsMCwxMTYsNiwwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICAxMDAsNywwLDEyNCwyLDAsMTAwLDUsMCwxMjQsMywwLDEzMSwyLDIsODMsCi0gICAgNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsCi0gICAgMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDkwLDEyLDEwMywxMDEsMTE2LDk1LDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCwxMTQsOTksMCwwLDAsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTA5LDAsMCwwLDcwLDExNCwxMDcsMCwwLDAsNDEsNywxMTQsCi0gICAgNCwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMjAsMCwwLDAsMjE4LDIzLAotICAgIDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwOSwwLDAsMCwxMTQsNzcsMCwwLAotICAgIDAsMTE0LDEwNiwwLDAsMCw0MSw2LDExNCwxNSwwLDAsMCwxMTQsOTksMCwKLSAgICAwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjgsMCwwLAotICAgIDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg1LDAsMCwwLDE4MCwxLDAsCi0gICAgMCwxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTIsMSw2LDEsOSwyLAotICAgIDEyLDEsMTYsMSwxOCwxLDE1LDEsNywyLDEyLDEsMTUsMSwzLDEsCi0gICAgMTksMSwxMywxLDE0LDMsNiwyLDExNCw4NSwwLDAsMCw5OSwzLDAsCi0gICAgMCwwLDAsMCwwLDAsOCwwLDAsMCw1MywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTE4LDEsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMjUsMywwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMzMsCi0gICAgMCwxLDEsMSw4OSwxMTAsMTcsMCw4OCwxMjQsMywwLDEwMCwwLDAsMTA3LAotICAgIDksMCwxMTQsNTAsMCwxMjQsMywwLDgzLDEyNCwwLDAsMTA2LDIsMCwxMjUsCi0gICAgNCwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDUsMCwxMjEsMTMsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwKLSAgICAxLDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LDExMCwxLDAsODgsCi0gICAgMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSw1LDAsODcsMTEwLDI0LDAsCi0gICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxNDQsMCwxLDEsMSwxMDAsMCwwLAotICAgIDEyNSw1LDAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDgsCi0gICAgMCwxMTQsMjE4LDAsMTI0LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIxMiwwLAotICAgIDEyMSwxMywwLDEyNCwxLDAsMTA2LDUsMCwxMjUsMiwwLDg3LDExMywyMTgsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDIwOCwwLDEsMSwxLDEwMCwwLDAsCi0gICAgMTI1LDIsMCw4OSwxMTMsMjE4LDAsODgsMTEwLDYsMCwxMjQsNSwwLDEyNSwyLAotICAgIDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNiwwLDEyNSw2LDAsODcsMTEwLDI0LAotICAgIDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxLDEsMSwxLDEsMTAwLDAsCi0gICAgMCwxMjUsNiwwLDg5LDExMCwxLDAsODgsMTIxLDE5LDAsMTE2LDcsMCwxMjQsCi0gICAgMCwwLDEwNiw4LDAsMTMxLDEsMCwxMjUsNywwLDg3LDExMCwyNCwwLDQsCi0gICAgMTE2LDEsMCwxMDcsMTAsMCwxMTQsNDcsMSwxLDEsMSwxMDAsMCwwLDEyNSwKLSAgICA3LDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLDEyNCw0LDAsMTI0LDEsMCwKLSAgICAxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMSwxMjUsMywwLDEyNCw1LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCw4NywxLDEwMCwyLDAsMTEwLDMsMCwxMDAsMywKLSAgICAwLDEyNCwzLDAsOTUsMTAsMCwxMjQsNiwwLDEyNCwzLDAsOTUsMTEsMCwKLSAgICAxMjQsNywwLDEyNCwzLDAsOTUsMTIsMCwxMjQsMywwLDgzLDQxLDQsNzgsCi0gICAgMTE0LDEwNywwLDAsMCw3MCw4NCw0MSwxMywxMTQsOTUsMCwwLDAsMTE0LDk2LAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTgsMCwKLSAgICAwLDAsOTAsNyw5NSw3OSw4Miw3Myw3MSw3Myw3OCwyMTgsMTAsOTUsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMjE4LDQsMTA4LDEwNSwxMTUsMTE2LDIxOCw4LDk1LAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxMDYsMCwwLDAsMTE0LDExMSwwLDAsCi0gICAgMCwxMTQsMTE2LDAsMCwwLDExNCwxMTAsMCwwLDAsNDEsOCwxMTQsODksMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDg4LDAsMCwKLSAgICAwLDExNCwxNSwwLDAsMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAotICAgIDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIwOSwxLDAsMCwKLSAgICAxMTUsNzIsMCwwLDAsMCwyLDMsMSwxMywxLDEzLDEsNSwyLDEyLAotICAgIDEsNCwyLDksMSwxMiwxLDMsMSwxMywxLDEzLDIsNSwxLDMsCi0gICAgMSwxMywxLDEzLDEsMTEsMSwxMiwxLDEyLDEsMywxLDEzLDEsMTMsCi0gICAgMSwxNCwyLDYsMSwzLDEsMTMsMSwxMywxLDExLDEsMywxLDE5LAotICAgIDEsMTMsMSwxMSwyLDIxLDEsMjcsMSw5LDEsOSwxLDExNCwxMzIsMCwKLSAgICAwLDAsMjE4LDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw3MCw5OSwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNTQsMiwwLDAsMTI0LDIsMCwxMTUsMzAsMCwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw2NywwLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwKLSAgICAwLDk1LDIsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LAotICAgIDY2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSw5NywwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDIyMSwwLDEyNCwwLDAsMTA2LDQsMCwxMjUsMywKLSAgICAwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxODcsMCwxMjQsMCwwLAotICAgIDEwNiw1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxODcsMCwxMTYsNiwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMTUxLDAsMTE2LDcsMCwxMzAsMSwwLDExNiw2LAotICAgIDAsMTA2LDgsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDksMCwxMjQsNCwwLAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDMsMCw5NSwKLSAgICAxMCwwLDEyMSwxMywwLDEyNCwzLDAsMTI0LDEsMCw5NSwxMSwwLDg3LDExMCwKLSAgICAxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIwLDAsMSwxLDEsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTEsMCwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTAwLDMsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAzMiwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEyLDAsMTI0LDEsMCw5NSwxMywKLSAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMzEsMSwxLAotICAgIDEsMSw4OSwxMTAsMSwwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICA5NSwxNCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjUsCi0gICAgMSwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk2LDEsMTE2LAotICAgIDAsMCwxMjQsMSwwLDEwMCw0LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMTQ4LDEsMTI0LDAsMCwxMDYsNSwwLDEwMCwwLDAsCi0gICAgMTA3LDksMCwxMTQsMTQ4LDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwKLSAgICAxLDAsOTUsMTUsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsCi0gICAgMTE0LDE0NywxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDAsMCwxMDYsMTYsCi0gICAgMCwxMTQsNTAsMiwxMjQsMiwwLDExNSwxODcsMSwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTAwLDUsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAyMjQsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxNywwLDEyNCwxLDAsOTUsMTgsCi0gICAgMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDIyMywxLDEsCi0gICAgMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsMjU0LDEsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsNTAsMiwxMjQsMCwwLDEwNiwxOSwwLDEwMCwwLDAsMTA3LDksCi0gICAgMCwxMTQsNTAsMiwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxOSwwLDEyNCwxLDAsCi0gICAgOTUsMjAsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDQ5LAotICAgIDIsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCi0gICAgMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwxMSw5NSw5NSwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE0LDEzMSwwLDAsMCwxMTQsOTgsMCwwLAotICAgIDAsMTE0LDEyOSwwLDAsMCw0MSwyMSwxMTQsNiwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMTE0LDEsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCw5OSwwLDAsCi0gICAgMCwxMTQsMTEwLDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwKLSAgICAyMTgsMTYsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMjE4LDcsOTUsOTUsMTEwLDEwMSwxMTksOTUsOTUsOTAsNSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwxMTQsOTEsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTM0LDAsMCwKLSAgICAwLDExNCw5NSwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwxMTcsMCwwLDAsCi0gICAgMTE0LDEwNywwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDQxLDUsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICAxMTQsMTMzLDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCwKLSAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwKLSAgICAxMTQsMTE1LDI1NCwxLDAsMCwxMTUsOTIsMCwwLDAsMCw0LDMwLDEsMywKLSAgICAxLDE2LDEsMTMsMSw1LDIsMzAsMSw5LDEsMTIsMiwxNSwxLDEyLAotICAgIDEsNiwxLDksMiwxNSwxLDEyLDEsMywxLDEzLDEsMTMsMSw1LAotICAgIDIsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzLDEsMTMsMSwxMywKLSAgICAxLDUsMiwzMCwxLDE1LDEsMywxLDE2LDEsMTMsMSw1LDIsOSwKLSAgICAxLDMwLDEsMywxLDE2LDEsMTMsMSw1LDIsMzAsMSwxNSwxLDMsCi0gICAgMSwxNiwxLDEzLDEsNSwxLDExNCwxMzcsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsNSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTI5LDAsMCwwLDEwMCwxLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDQ1LDAsMTI0LDAsCi0gICAgMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsCi0gICAgMTEwLDQwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDMsMCwxMzEsCi0gICAgMiwwLDExNCw4NSwwLDExNiwzLDAsMTA2LDQsMCwxMDAsNCwwLDExNiw1LAotICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwyLDEsMSwxMjQsMSwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMTEyLDAsMTE2LDYsMCwxMjQsMCwwLDEwNiw3LDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDExNiw4LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsMSwxMjQsMSwwLDgzLDQxLDcsMTIyLDQzLDY3LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTExLDExOCwxMDUsMTAwLDEwMSwxMDAsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksNDYsNzgsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTIyLDg3LDExNSwxMTYsOTcsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDUsMTEwLAotICAgIDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsNTEsNDYsNTQsNDQsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwxMTUsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMDEsMTIwLAotICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsCi0gICAgMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSwKLSAgICA5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDkwLDEwLDExNSwxMTYsCi0gICAgOTcsOTksMTA3LDEwOCwxMDEsMTE4LDEwMSwxMDgsMjMzLDIsMCwwLDAsNDEsOSwxMTQsCi0gICAgNCwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEzOCwwLDAsMCwyMTgsOSwKLSAgICA5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LDk3LDExNCwxMTAsMjE4LAotICAgIDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsODcsOTcsMTE0LDExMCwKLSAgICAxMDUsMTEwLDEwMywxMTQsMTYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzcsMCwKLSAgICAwLDAsNDEsMiwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksNTgsCi0gICAgMiwwLDAsMTE1LDIwLDAsMCwwLDAsMyw2LDEsMTgsMywyMSwxLAotICAgIDE4LDEsOSwyLDEzLDEsMTIsMSwxNSwxLDEzLDEsMTE0LDE0NCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNDksMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjEsMCwxMDAsMiwwLDExMCw2LDAsCi0gICAgMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTA3LDgsMCwxMTQsOTUsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCw3MywwLDEwMCwzLDAsMTA2LDMsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsODMsMTAwLDQsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICAxMDYsMiwwLDEzMSwyLDAsODMsMTEwLDUwLDAsMTI0LDAsMCwxMDYsNCwwLAotICAgIDExNCwxMjMsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTMxLDIsMCw4MywxMDAsNiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDgzLDEwMCwxLDAsODMsCi0gICAgNDEsNywxMjIsMzgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsCi0gICAgMTAxLDExMiwxMTQsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMTQsOTMsMCwwLDAsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwxOCwKLSAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMTI1LAotICAgIDQxLDYyLDQxLDUsMTE0LDE1LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDk5LAotICAgIDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTE3LDAsMCwwLDQxLDIsMTE0LAotICAgIDg4LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsOTcsMCwwLDAsNzYsMiwwLAotICAgIDAsMTE1LDE2LDAsMCwwLDAsMywzMCwxLDE1LDEsMTUsMSwxMywyLAotICAgIDIyLDIsOSwxLDE5LDIsMTE0LDk3LDAsMCwwLDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw0LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwyNTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsMTE2LDEsCi0gICAgMCwxMDYsMiwwLDEzMSwwLDAsMSwxMTYsMywwLDEyNCwyLDAsMTMxLDEsCi0gICAgMCwxNDMsMjA4LDAsMSwxMTYsNCwwLDEwNiw1LDAsMTA2LDYsMCwxMjQsMiwKLSAgICAwLDEzMSwxLDAsMTI0LDEsMCwxMDcsOSwwLDExNCw4OSwwLDEwMCwxLDAsCi0gICAgMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsOCwwLDEyNCwKLSAgICAzLDAsMTAwLDIsMCwxMjQsMiwwLDEzMSwxLDEsMTMwLDEsMCwxMjQsMCwKLSAgICAwLDEwNiw5LDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNjMsMCwxMjQsMCwwLAotICAgIDEwNiwxMCwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTQwLDAsMTE2LDgsMCwxMDAsCi0gICAgNCwwLDEwMCwyLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwxLDEsMTMwLDEsCi0gICAgMCwxMTYsMTEsMCwxMjQsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMDAsNiwwLAotICAgIDEzMSwyLDEsMSwxMjQsMSwwLDgzLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsCi0gICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDExNiwxMiwwLDEyNCwwLAotICAgIDAsMTA2LDksMCwxMDAsNywwLDEzMSwyLDAsMTE1LDIxOSwwLDEyNCwwLDAsCi0gICAgMTA2LDksMCwxMDYsMTMsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMTAsMTYsMCwKLSAgICAxMjQsMCwwLDEwNiw5LDAsMTA2LDE0LDAsMTI0LDEsMCwxMzEsMSwwLDEsCi0gICAgODcsMTAwLDMsMCw4MSw4Miw4OCwxMTYsNCwwLDEwNiw1LDAsMTI0LDIsMCwKLSAgICAyNSw4Myw0MSw4LDEyMiw1MSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTA1LAotICAgIDExNSwxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEyMiwzMCwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTQsMTUsMCwwLDAsNzgsMTIyLAotICAgIDE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICAxMzMsMCwwLDAsODQsMTE0LDEzOSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLAotICAgIDAsMTE0LDU3LDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LAotICAgIDEwOCwxMTEsOTksMTA3LDExNCw1NCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDc3LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMzcsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzksMCwwLDAsNDEsNCwxMTQsODgsMCwwLDAsMTE0LAotICAgIDg5LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwKLSAgICAwLDAsOTMsMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw5LDEsMTAsCi0gICAgMSwxMywxLDI0LDEsMTUsMSwxOCwxLDE1LDEsMTUsMSwyMSwyLDE5LAotICAgIDEsNCwxLDE5LDEsMTgsNCwxOSwyLDIzLDEsMTE0LDg2LDAsMCwwLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDI3LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwzLDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMDYsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDEsMTE2LDMsMCwKLSAgICAxMDYsNCwwLDEyNCwwLDAsMTA2LDIsMCwyNSwxMjUsMSwwLDExNiw1LDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDk2LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLAotICAgIDAsOTUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsCi0gICAgOTUsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiw1LDAsMTI0LDEsMCwKLSAgICAxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDE5NywwLDEyMSw1NiwwLDEyNCwxLDAsMTA2LDgsMCwxMjQsMSwwLDk1LDksCi0gICAgMCwxMTYsMTAsMCwxMjQsMSwwLDEwMCwzLDAsMTMxLDIsMCwxMTUsMTc1LDAsCi0gICAgMTI0LDAsMCwxMDYsMiwwLDEwNiwxMSwwLDEwMCw0LDAsMTMxLDEsMCwxMDAsCi0gICAgNSwwLDI1LDEyNCwxLDAsOTUsOSwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTk2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsCi0gICAgNSwwLDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyNTUsMCwxMjEsMTMsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgOTUsMTIsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDI1NCwKLSAgICAwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCw4Myw0MSw3LDc4LAotICAgIDExNCw5MSwwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LAotICAgIDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDEzLAotICAgIDExNCw5OSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsCi0gICAgMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCw2LDAsMCwwLDExNCw5MSwKLSAgICAwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDEzNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCw5NSwwLDAsCi0gICAgMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LAotICAgIDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTE4LDIsMCwwLDExNSw0MCwwLDAsMCwKLSAgICAwLDQsMTksMiwxNiwxLDI0LDEsMywxLDE2LDEsMTMsMSw1LDEsCi0gICAgMjQsMSwzLDQsMTIsMSwxNSwxLDI5LDEsMTMsMSw1LDEsMjQsMSwKLSAgICAzLDEsMTMsMSwxMywxLDUsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNTksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwwLDAsCi0gICAgMTA3LDksMCwxMTQsNDMsMCwxMTYsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsCi0gICAgMSwwLDEzMSwyLDAsMTE1LDQzLDAsMTE2LDIsMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMTYsNCwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxNDMsNzUsMCwxLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEyMiwwLDEyNCwwLDAsMTA2LDUsMCwKLSAgICAxMDAsMCwwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiw2LDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEyNCwwLDAsMTA2LDcsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDE2LAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEsODcsMTAwLDAsMCw4MSw4Miw4OCwxMTYsOSwwLDEwNiwxMCwwLDEyNCwwLAotICAgIDAsMTA2LDcsMCwyNSw4Myw0MSw0LDc4LDExNCwxMzksMCwwLDAsMTIyLDE0LAotICAgIDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwxNSwKLSAgICAwLDAsMCw0MSwxMSwxMTQsOTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDE0OCwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzksMCwKLSAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCw0MSwyLDExNCw4OCwKLSAgICAwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywKLSAgICAxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNDcsMiwwLDAsMTE1LDIwLDAsMCwwLAotICAgIDAsMiwxNSwyLDE4LDEsMTAsMiwxMiwxLDEzLDEsMTUsMSwxNSwxLAotICAgIDI0LDMsMjMsNSwxMTQsMTQ5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTE2LDIsMCwKLSAgICAxMjQsMCwwLDEwNiwzLDAsMTMxLDEsMCwxNDMsMTUsMCwxLDExNiw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDgzLDg3LDEwMCwxLDAsODEsODIsODgsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiwxOTEsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMTAsCi0gICAgMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgNDQsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCi0gICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwMCwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwKLSAgICAxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgNzMsMTAyLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsCi0gICAgMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTIwLDEwNSwxMTUsCi0gICAgMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMywxMDEsMTE2LDExNSwKLSAgICAxMCwzMiwzMiwzMiwzMiw5OSwxMDgsMTExLDk4LDk4LDEwMSwxMTQsMTAxLDEwMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsCi0gICAgMCwwLDExNCw1NCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE0OSwwLDAsCi0gICAgMCw0MSwxLDExNCw4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsODcsMCwwLDAsMTcwLDIsMCwwLAotICAgIDExNSw2LDAsMCwwLDAsOSwxMCwxLDE2LDEsMTE0LDg3LDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDIwNSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LAotICAgIDAsMTAwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLAotICAgIDEzMSwxLDAsOTAsNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCwKLSAgICA4LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LAotICAgIDAsMTAwLDEwLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNiwwLAotICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSwKLSAgICA2LDAsMTAxLDExLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNiwwLDEwMSwxMSwwLDEwMCwxNSwwLAotICAgIDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEzLDAsMTAxLAotICAgIDYsMCwxMDEsMTEsMCwxMDAsMTcsMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsMTAxLDE1LDAsMTMxLDEsMCwKLSAgICA5MCwxNiwwLDEwMCw0LDAsODMsNDEsMTksMjE4LDE1LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LDEwMSwxMTYsOTcsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMjcsMCwwLDAsOTksMSwwLDAsMTE1LDE0LDAsMCwwLDAsMiw2LAorICAgIDEsNiwxLDYsMSw2LDEsMTQsMyw2LDEsMTIyLDE5LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLAorICAgIDEwNiwxLDEzMSwxLDEwMCwyLDEwNiwwLDEyNCwwLDEwNiwyLDEzMSwxLDEwMywyLAorICAgIDEyNSwxLDEyNCwwLDEwNiwzLDEwMCwwLDEwNyw5LDExNCw1MiwxMjQsMSwxMDYsNCwKKyAgICAxMDAsMywxMDYsMCwxMjQsMCwxMDYsMywxMzEsMSwxMzEsMSwxLDAsMTI0LDAsCisgICAgMTA2LDUsMTAwLDAsMTA3LDksMTE0LDgwLDEyNCwxLDEwNiw0LDEwMCw0LDEwNiwwLAorICAgIDEyNCwwLDEwNiw1LDEzMSwxLDEzMSwxLDEsMCwxMDAsNSwxMDYsMCwxMjQsMCwKKyAgICAxMDYsNiwxMDYsNywxMDAsNiwxMDYsOCwxMjQsMSwxMzEsMSwxMzEsMiw4MywwLAorICAgIDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLDExMSwxMTQsMTA1LAorICAgIDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywxMjUsNDEsMTIyLAorICAgIDIsNDQsMzIsNDEsOSwxMTQsMzgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKKyAgICA5MywwLDAsMCwxMTQsMTAzLDAsMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsMTE0LDEwNiwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwKKyAgICA5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsMiwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw0MCwwLDAsMCwxMTEsMSwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDAsMSwxMCwxLDE0LDEsMTAsMSwxOCwxLDEwLAorICAgIDEsOCwxLDEwLDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKKyAgICA5OSw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDEwMiwwLDAsMCwxMjQsMCwxMDYsMCwxMjUsMiwxMjEsNzAsMTI0LDAsMTA2LDEsCisgICAgMTI0LDEsMTA2LDEsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiwyLDEyNCwxLDEwNiwyLAorICAgIDEwNywyLDExMSw3NiwxMjQsMCwxMDYsMywxMjQsMSwxMDYsMywxMDcsMiwxMTEsNzYsCisgICAgMTI0LDIsMTI0LDEsMTA2LDAsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiw0LDEyNCwxLAorICAgIDEwNiw0LDEwNywyLDExMSw3NiwxMjQsMCwxMDYsNSwxMjQsMSwxMDYsNSwxMDcsMiwKKyAgICA4MywwLDQsMCwxMTYsNiwxMDcsMTAsMTE0LDk2LDEsMCwxLDAsMSwwLAorICAgIDEwMCwxLDgzLDAsODgsMCwxMDAsMCw4MywwLDQxLDIsNzgsNzAsNDEsNywKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDEwMywwLDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LAorICAgIDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTAsMCwwLDAsNDEsCisgICAgMywxMTQsMjYsMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LAorICAgIDEwOSwxMTUsMTA4LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTIxLDEsMCwwLDExNSwyMCwKKyAgICAwLDAsMCwwLDEsNiwxLDIsMSwxMiwxLDEyLDEsMTIsMSwxMCwKKyAgICAxLDEyLDEsMTIsMSwxNCwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLAorICAgIDExMiwxMDEsOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA1OCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsNTIsMTI0LDAsCisgICAgMTA2LDEsMTAwLDAsMTA3LDksMTE0LDUyLDEyNCwwLDEwNiwyLDExNCw1MiwxMTYsMywKKyAgICAxMDAsMCwxMDcsOCwxMTQsMzgsMTE2LDQsMTMwLDEsMTE2LDMsMTA2LDUsMTI0LDAsCisgICAgMTA2LDEsMTMxLDEsMTI0LDAsOTUsMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsCisgICAgNzgsNDEsNiwxMTQsMTA4LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNywwLAorICAgIDAsMCwyMTgsMTksOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwKKyAgICAxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwKKyAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMTIsMCwwLDAsMTMzLDEsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTAsCisgICAgMSwxNiwxLDgsMSw0LDEsMTQsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEwLDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTAwLDAsODMsMCwKKyAgICA0MSwxLDc4LDQxLDEsMTE0LDEwOCwwLDAsMCw0MSwyLDExNCwyNiwwLDAsCisgICAgMCwxMTQsMTEyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCwxMTIsMCwwLDAsMTQyLDEsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMjYsMTI0LDAsMTA2LDEsMTA2LDIsMTAwLAorICAgIDIsMTMxLDEsMTAwLDMsMjUsMCw4MywwLDEyNCwwLDEwNiwxLDgzLDAsMTAwLAorICAgIDEsODMsMCw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLAorICAgIDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsNDYsMTE0LDE5LDAsMCwwLAorICAgIDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDEwLDExNCwxMTIsCisgICAgOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw2LAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTQ2LDEsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgMywxMCwxLDE2LDIsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKKyAgICA5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsODMsMCw0MSwxLDc4LDQxLDEsMTE0LDEwNywwLAorICAgIDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDE1NCwxLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDEyNCwxLDEzMSwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDQsCisgICAgOTgsMTExLDExMSwxMDgsMTE0LDEwNywwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwKKyAgICAyMTgsNSwxMTgsOTcsMTA4LDExNywxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxNTgsMSwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDQxLDEyLDExNCwxLDAsMCwwLDExNCwwLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwyNywwLDAsCisgICAgMCwxMTQsNDAsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwKKyAgICAxMTIsMTAxLDExNCwxMTYsMTIxLDExNCwxMTIsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LAorICAgIDEwMSwxMTQsMTE0LDExOSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAxMTQsMTAyLDAsMCwwLDYyLDEsMCwwLDExNSwyMCwwLDAsMCw4LDM1LAorICAgIDQsMiw0LDEsMTQsMTEsOCwxMCw4LDEyLDEyLDksMTQsNCwxMiw4LAorICAgIDEyLDQsMTE0LDEwMiwwLDAsMCw0MSwyLDExNCwxMDMsMCwwLDAsMTE0LDEwNSwKKyAgICAwLDAsMCw5OSwyLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCwKKyAgICAxNCwwLDAsMCw2NywwLDAsMCwxMTUsMTU0LDAsMCwwLDExNiwwLDEyNCwKKyAgICAxLDEwMCwxLDEzMSwyLDExNCw3NCwxMTYsMSwxMDAsMiwxMDcsOCwxMTQsMjIsMTE2LAorICAgIDIsMTMwLDEsMTE2LDEsMTA2LDMsMTI1LDQsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LAorICAgIDQ4LDEyNCw0LDEyNCwwLDEyNCwxLDEwMCwzLDE0MSwyLDgzLDAsMTI0LDMsMTE0LAorICAgIDU2LDEwMywwLDExMCwyLDEwMCwyLDEyNSw1LDEyNCw0LDEyNCwwLDEyNCwxLDEyNCwKKyAgICA1LDEwMCw0LDE0MSwzLDgzLDAsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LDEzOCwxMTYsCisgICAgMCwxMjQsMSwxMDAsNSwxMzEsMiwxMTQsMTM0LDEyMSwxNCwxMjQsMSwxMDYsNCwxMjQsCisgICAgMCwxMzEsMSwxMjUsMyw4NywwLDExMywxMzgsNCwwLDExNiw1LDEwNywxMCwxMTQsCisgICAgMTMwLDEsMCwxLDAsMSwwLDEwMCwyLDEyNSwzLDg5LDAsMTEzLDEzOCw4OCwKKyAgICAwLDExMCw0LDEwMCw2LDEyNSwzLDExNiw2LDEyNCwwLDEyNCwxLDEyNCwyLDEyNCwKKyAgICAzLDEwMCw3LDE0MSw0LDgzLDAsNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiwKKyAgICA5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LAorICAgIDkwLDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwKKyAgICAxLDExNCw5MywwLDAsMCw0MSwyLDExNCw5MywwLDAsMCwxMTQsMTA2LDAsCisgICAgMCwwLDExNCwxMDUsMCwwLDAsNzAsNDEsMiwxMTQsMTAzLDAsMCwwLDExNCwKKyAgICAxMDUsMCwwLDAsNDEsNywxMTQsNCwwLDAsMCwxMTQsMTE1LDAsMCwwLAorICAgIDExNCwxMTYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwNSwKKyAgICAwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDEwMiwwLDAsMCw0MSw2LDExNCwKKyAgICAxNSwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA1LAorICAgIDAsMCwwLDExNCwxMjQsMCwwLDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDc4LDAsMCwwLDE2MywxLDAsMCwxMTUsMzQsMCwwLDAsMCwyLDEwLAorICAgIDEsOCwxLDQsMSw2LDIsOCwxLDEyLDEsMTIsMSw2LDEsOCwKKyAgICAyLDgsMSwxMCwxLDIsMSwxNCwxLDE0LDEsMTIsMyw0LDIsMTE0LAorICAgIDc4LDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw4LDAsMCwKKyAgICAwLDUzLDAsMCwwLDY3LDAsMCwwLDExNSw1NiwxLDAsMCwxMjEsMTAsCisgICAgMTI0LDAsMTA2LDAsMTI1LDMsODcsMCwxMTAsMjAsNCwwLDExNiwxLDEwNywxMCwKKyAgICAxMTQsMzAsMSwwLDEsMCwxLDAsODksMCwxMTAsMTQsODgsMCwxMjQsMywKKyAgICAxMDAsMCwxMDcsOSwxMTQsNDQsMTI0LDMsODMsMCwxMjQsMCwxMDYsMiwxMjUsNCwKKyAgICAxMjQsMSwxMDAsMCwxMDcsOCwxMTQsOTAsMTIxLDEwLDEyNCwwLDEwNiwzLDEyNSwxLAorICAgIDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwxMDcsMTAsMTE0LDg4LDEsMCwxLDAsCisgICAgMSwwLDg5LDAsMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDQsMTI1LDUsCisgICAgODcsMCwxMTAsMjQsNCwwLDExNiwxLDEwNywxMCwxMTQsMTI0LDEsMCwxLDAsCisgICAgMSwwLDEwMCwwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMDAsMCwKKyAgICAxMDcsOCwxMTQsMTg0LDEyNCw1LDEwMCwwLDEwNyw4LDExNCwxODAsMTIxLDEwLDEyNCwxLAorICAgIDEwNiw1LDEyNSwyLDg3LDAsMTEzLDE4NCw0LDAsMTE2LDEsMTA3LDEwLDExNCwxNzYsCisgICAgMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDIsODksMCwxMTMsMTg0LDg4LDAsCisgICAgMTEwLDQsMTI0LDUsMTI1LDIsMTIxLDEwLDEyNCwwLDEwNiw2LDEyNSw2LDg3LDAsCisgICAgMTEwLDI0LDQsMCwxMTYsMSwxMDcsMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCwKKyAgICAxMDAsMCwxMjUsNiw4OSwwLDExMCwyLDg4LDAsMTIxLDE0LDExNiw3LDEyNCwwLAorICAgIDEwNiw4LDEzMSwxLDEyNSw3LDg3LDAsMTEwLDI2LDQsMCwxMTYsMSwxMDcsMTAsCisgICAgMTQ0LDEsMTE0LDQsMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDcsODksMCwKKyAgICAxMTAsMiw4OCwwLDExNiw5LDEyNCw0LDEyNCwxLDEyNCwyLDEwMCwxLDE0MSwzLAorICAgIDEyNSwzLDEyNCw1LDEwMCwwLDEwNyw4LDE0NCwxLDExNCwzNCwxMDAsMiwxMTAsMiwKKyAgICAxMDAsMywxMjQsMyw5NSwxMCwxMjQsNiwxMjQsMyw5NSwxMSwxMjQsNywxMjQsMywKKyAgICA5NSwxMiwxMjQsMyw4MywwLDQxLDQsNzgsNDEsMSwxMTQsMTAzLDAsMCwwLAorICAgIDcwLDg0LDQxLDEzLDExNCw4OSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEsCisgICAgMCwwLDAsMTE0LDg1LDAsMCwwLDExNCw5MiwwLDAsMCw5MCw3LDk1LAorICAgIDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwKKyAgICA5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsOTUsMTE0LDEwMiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMTIsMCwwLAorICAgIDAsMTE0LDEwNiwwLDAsMCw0MSw4LDExNCw4MywwLDAsMCwxMTQsOTMsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwKKyAgICAwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDExMiwwLDAsMCwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTkyLDEsMCwwLDExNSw3MiwwLDAsMCwKKyAgICAwLDIsMiwxLDEwLDEsMTQsMSw2LDIsOCwxLDQsMiw2LDEsCisgICAgOCwxLDIsMSwxMCwxLDE0LDIsNiwxLDIsMSwxMCwxLDE0LDEsCisgICAgMTAsMSw4LDEsOCwxLDIsMSwxMCwxLDE0LDEsMTIsMiw0LDEsCisgICAgMiwxLDEwLDEsMTQsMSwxMCwxLDIsMSwxNCwxLDE2LDEsMTAsMiwKKyAgICAxNCwxLDIwLDEsNiwxLDYsMSwxMTQsMTI4LDAsMCwwLDcwLDQxLDEsCisgICAgMjE4LDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw5OSwyLDAsMCwwLDEsCisgICAgMCwwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjEyLDEsMCwwLDEyNCwyLDExNSwyMCwxMTYsMCwxMjQsMSwxMDAsMSwxMDAsMCwKKyAgICAxMzEsMywxMDAsMCwxMDcsOCwxMTQsNTQsMTIxLDEyLDEyNCwwLDEwNiwxLDEyNCwxLAorICAgIDk1LDIsODcsMCwxMTAsMjAsNCwwLDExNiwzLDEwNywxMCwxMTQsNTIsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSw3NCwxMTYsMCwKKyAgICAxMjQsMSwxMDAsMiwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsMTY2LDEyNCwwLAorICAgIDEwNiw0LDEyNSwzLDEyNCwzLDEwMCwwLDEwNyw4LDExNCwxMzQsMTI0LDAsMTA2LDUsCisgICAgMTAwLDAsMTA3LDksMTE0LDEzNCwxMTYsNiwxMDAsMCwxMDcsOCwxMTQsMTEwLDExNiw3LAorICAgIDEzMCwxLDExNiw2LDEwNiw4LDEyNSw0LDEyNCw0LDEwNiw5LDEyNCw0LDEzMSwxLAorICAgIDEyNSwzLDEyNCwwLDEwNiw1LDEyNCwzLDk1LDEwLDEyMSwxMCwxMjQsMywxMjQsMSwKKyAgICA5NSwxMSw4NywwLDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwxNjQsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSwxODYsMTE2LDAsCisgICAgMTI0LDEsMTAwLDMsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDIyMCwxMjEsMTIsCisgICAgMTI0LDAsMTA2LDEyLDEyNCwxLDk1LDEzLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTIxLDEwLDEyNCwwLDEyNCwxLDk1LDE0LDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDI1MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDIsMTQ0LDEsMTE1LDIwLDExNiwwLDEyNCwxLDEwMCw0LDEwMCwwLDEzMSwzLAorICAgIDEwMCwwLDEwNyw4LDE0NCwxLDExNCw2OCwxMjQsMCwxMDYsNSwxMDAsMCwxMDcsOSwKKyAgICAxNDQsMSwxMTQsNjgsMTIxLDEyLDEyNCwwLDEwNiw1LDEyNCwxLDk1LDE1LDg3LDAsCisgICAgMTEwLDIyLDQsMCwxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDY2LDEsMCwxLDAsCisgICAgMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsMCwxMDYsMTYsMTQ0LDEsMTE0LDIwOCwKKyAgICAxMjQsMiwxNDQsMSwxMTUsMTAwLDExNiwwLDEyNCwxLDEwMCw1LDEwMCwwLDEzMSwzLAorICAgIDEwMCwwLDEwNyw4LDE0NCwxLDExNCwxMzYsMTIxLDEyLDEyNCwwLDEwNiwxNywxMjQsMSwKKyAgICA5NSwxOCw4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLDExNCwxMzQsCisgICAgMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDE0NCwxLAorICAgIDExNSwxNjAsMTE2LDAsMTI0LDEsMTAwLDYsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsCisgICAgMTQ0LDEsMTE0LDIwOCwxMjQsMCwxMDYsMTksMTAwLDAsMTA3LDksMTQ0LDEsMTE0LDIwOCwKKyAgICAxMjEsMTIsMTI0LDAsMTA2LDE5LDEyNCwxLDk1LDIwLDg3LDAsMTEwLDIyLDQsMCwKKyAgICAxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDIwNiwxLDAsMSwwLDEsMCw4OSwwLAorICAgIDExMCwyLDg4LDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCwxLDAsMCwwLAorICAgIDExNCw4NSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk1LDk1LDExNCwxMjcsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwxMjUsMCwwLAorICAgIDAsNDEsMjEsMTE0LDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCw5MCwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwNiwwLDAsCisgICAgMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMjE4LDE2LDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCw3LDk1LAorICAgIDk1LDExMCwxMDEsMTE5LDk1LDk1LDkwLDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDg1LDAsCisgICAgMCwwLDExNCwxMTksMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsODksMCwwLAorICAgIDAsMTE0LDEyNywwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMDMsMCwwLDAsCisgICAgMTE0LDkyLDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEyNSwwLDAsMCw0MSwKKyAgICA1LDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEyOSwwLDAsMCwKKyAgICAxMTQsOTMsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSwyMzcsMSwwLAorICAgIDAsMTE1LDkyLDAsMCwwLDAsNCwyMCwxLDIsMSwxMiwxLDE0LDEsCisgICAgNiwyLDIwLDEsNiwxLDgsMiwxMCwxLDgsMSw0LDEsNiwyLAorICAgIDEwLDEsOCwxLDIsMSwxMCwxLDE0LDEsNiwyLDIwLDEsMiwxLAorICAgIDEyLDEsMTQsMSw2LDIsMiwxLDEwLDEsMTQsMSw2LDIsMjQsMSwKKyAgICAxMiwxLDIsMSwxMiwxLDE2LDEsNiwyLDgsMSwyNCwxLDIsMSwKKyAgICAxMiwxLDE2LDEsNiwyLDI0LDEsMTIsMSwyLDEsMTIsMSwxNiwxLAorICAgIDYsMSwxMTQsMTMzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwKKyAgICAwLDEwMCwxLDEyNSwxLDExNiwwLDEyNCwwLDEwNiwxLDEwMCwyLDEzMSwyLDExNCwKKyAgICAzMCwxMjQsMCwxMDYsMSwxMDYsMiwxMjQsMCwxMzEsMSwxMjUsMSwxMTAsMjAsMTE2LAorICAgIDAsMTI0LDAsMTA2LDEsMTAwLDMsMTMxLDIsMTE0LDUwLDExNiwzLDEwMCw0LDEzMSwKKyAgICAxLDEzMCwxLDEyNCwxLDEwMCwxLDEwNyw4LDExNCw2OCwxMTYsNCwxMjQsMCwxMDYsCisgICAgNSwxMzEsMSwxMjUsMSwxMTYsNiwxMjQsMCwxMjQsMSwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSw1LDEyMiw0Myw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMTAwLDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKKyAgICA2NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDAsMTAxLAorICAgIDEwMiwxMDUsMTEwLDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsCisgICAgMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQwLDQxLDQxLDcsMTE0LDQsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMzQsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMTUsCisgICAgMCwwLDAsMTE0LDEzMywwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMjE4LDE2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDAsMCwxMTUsMTgsMCwwLDAsMCwzLAorICAgIDQsMSwxMiwzLDE0LDEsMTIsMSw4LDIsOCwxLDEwLDEsMTAsMSwKKyAgICAxMTQsMTM2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMTQsMTAwLDIsMTEwLDQsMTI0LDAsMTA2LAorICAgIDAsMTI1LDEsMTI0LDAsMTA2LDEsMTAwLDEsMTA3LDgsMTE0LDY2LDEyNCwwLDEwNiwKKyAgICAyLDEwMCwxLDEwNyw4LDExNCw1MCwxMDAsMywxMDYsMywxMjQsMSwxMzEsMSw4MywKKyAgICAwLDEwMCw0LDEwNiwzLDEyNCwxLDEyNCwwLDEwNiwyLDEzMSwyLDgzLDAsMTEwLAorICAgIDM2LDEyNCwwLDEwNiw0LDExNCw4NiwxMDAsNSwxMDYsMywxMjQsMSwxMjQsMCwxMDYsCisgICAgMSwxMzEsMiw4MywwLDEwMCw2LDEwNiwzLDEyNCwwLDEwNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwyLDgzLDAsMTAwLDEsODMsMCw0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLAorICAgIDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQ2LDc4LDExNCw4NywwLDAsMCwxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMywKKyAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsNDEsNjIsNDEsNSwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDM4LDAsMCwKKyAgICAwLDExNCwxMTMsMCwwLDAsNDEsMiwxMTQsODIsMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCw5MSwwLDAsMCw1OCwyLDAsMCwxMTUsMTYsMCwwLDAsMCwKKyAgICAzLDIwLDEsMTAsMSwxMCwxLDEwLDIsMTYsMiw2LDEsMTQsMiwxMTQsCisgICAgOTEsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDE4NiwwLDAsMCwxMjQsMCwKKyAgICAxMDYsMCwxMjUsMiwxMTYsMSwxMDYsMiwxMzEsMCwxLDAsMTE2LDMsMTI0LDIsCisgICAgMTMxLDEsMTQzLDE0OCwxLDAsMTE2LDQsMTA2LDUsMTA2LDYsMTI0LDIsMTMxLDEsCisgICAgMTI0LDEsMTA3LDksMTE0LDYyLDEwMCwxLDEwNiw3LDEyNCwyLDEzMSwxLDEyNSwzLAorICAgIDExNiw4LDEyNCwzLDEyNCwyLDEwMCwyLDE0MSwyLDEzMCwxLDEyNCwwLDEwNiw5LAorICAgIDEwMCwzLDEwNyw4LDExNCwxMTQsMTI0LDAsMTA2LDEwLDEwMCwzLDEwNyw4LDExNCw5NiwKKyAgICAxMTYsOCwxMDAsNCwxMjQsMCwxMDYsMCwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsMTEsCisgICAgMTI0LDAsMTI0LDEsMTAwLDUsMTAwLDYsMTQxLDMsMSwwLDEyNCwxLDgzLDAsCisgICAgMTE2LDExLDEyNCwwLDEyNCwxLDEwMCw1LDEwMCw2LDE0MSwzLDEsMCwxMTYsMTIsCisgICAgMTI0LDAsMTA2LDksMTAwLDcsMTMxLDIsMTE1LDE1NCwxMjQsMCwxMDYsOSwxMDYsMTMsCisgICAgMTI0LDIsMTMxLDEsMSwwLDExMCwxMiwxMjQsMCwxMDYsOSwxMDYsMTQsMTI0LDEsCisgICAgMTMxLDEsMSwwLDg3LDAsMTAwLDMsODEsMCw4MiwwLDg4LDAsMTE2LDQsCisgICAgMTA2LDUsMTI0LDIsMjUsMCw4MywwLDQxLDgsMTIyLDcwLDY5LDEyMCwxMDEsOTksCisgICAgMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDExNSwKKyAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDQxLDEsMTE0LDE1LDAsMCwwLDc4LDEyMiwxNCwxMDksMTA1LDExNSwxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw4NCw0MSwxLDExNCwxMjksMCwKKyAgICAwLDAsMTE0LDEzNSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLDAsMTE0LDQ2LAorICAgIDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDExNCw0MiwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLAorICAgIDExNCwzMCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwKKyAgICA5MywwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNCwxMzUsMCwwLDAsNDEsNCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwKKyAgICAwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODAsMCwwLDAsNzUsCisgICAgMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw2LDEsOCwxLDEwLDEsCisgICAgMTYsMSwxMCwxLDEyLDEsMTAsMSwxMCwxLDE0LDIsMTQsMSw0LDEsCisgICAgMTQsMSwxMiw0LDE0LDIsMjIsMSwxMTQsODAsMCwwLDAsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDIwNiwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjQsMCwxMDYsCisgICAgMiwxMzEsMSwxLDAsMTE2LDMsMTA2LDQsMTI0LDAsMTA2LDIsMjUsMCwxMjUsCisgICAgMSwxMTYsNSwxMjQsMSwxMDAsMSwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsCisgICAgNzYsMTIxLDEyLDEyNCwwLDEwNiwwLDEyNCwxLDk1LDYsODcsMCwxMTAsMjAsNCwKKyAgICAwLDExNiw3LDEwNywxMCwxMTQsNzQsMSwwLDEsMCwxLDAsODksMCwxMTAsCisgICAgMiw4OCwwLDExNiw1LDEyNCwxLDEwMCwyLDEwMCwwLDEzMSwzLDEwMCwwLDEwNywKKyAgICA4LDExNCwxNTQsMTIxLDQwLDEyNCwxLDEwNiw4LDEyNCwxLDk1LDksMTE2LDEwLDEyNCwKKyAgICAxLDEwMCwzLDEzMSwyLDExNSwxMzAsMTI0LDAsMTA2LDIsMTA2LDExLDEwMCw0LDEzMSwKKyAgICAxLDEwMCw1LDI1LDAsMTI0LDEsOTUsOSw4NywwLDExMCwyMCw0LDAsMTE2LAorICAgIDcsMTA3LDEwLDExNCwxNTIsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwKKyAgICAwLDExNiw1LDEyNCwxLDEwMCw2LDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwKKyAgICAyMDIsMTIxLDEwLDEyNCwwLDEyNCwxLDk1LDEyLDg3LDAsMTEwLDIwLDQsMCwxMTYsCisgICAgNywxMDcsMTAsMTE0LDIwMCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LAorICAgIDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCw4NSwwLDAsMCwxMTQsMTMwLDAsCisgICAgMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLAorICAgIDAsMTE0LDg5LDAsMCwwLDQxLDEzLDExNCw5MywwLDAsMCwxMTQsMTM4LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTAsMCwwLDAsCisgICAgMTE0LDEsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgMTE4LDAsMCwwLDExNCw4OSwwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwKKyAgICAxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywKKyAgICAxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTAwLAorICAgIDIsMCwwLDExNSw0MCwwLDAsMCwwLDQsMTQsMiwxMiwxLDE2LDEsCisgICAgMiwxLDEyLDEsMTQsMSw2LDEsMTYsMSwyLDQsOCwxLDEwLDEsCisgICAgMjIsMSwxNCwxLDYsMSwxNiwxLDIsMSwxMCwxLDE0LDEsNiwxLAorICAgIDExNCwxNDAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMCwxMDcsOSwxMTQsMzAsMTE2LDEsMTI0LDAsMTA2LDAsMTAwLAorICAgIDEsMTMxLDIsMTE1LDMwLDExNiwyLDEyNCwwLDEzMSwxLDgzLDAsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsMTI1LDEsMTE2LDQsMTI0LDEsMTMxLDEsMTQzLDU0LDEsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsODQsMTI0LDAsMTA2LDUsMTAwLDAsMTA3LAorICAgIDgsMTE0LDk2LDExNiw2LDEwMCwyLDEyNCwwLDEwNiw3LDEwMCwzLDE0MSwyLDEzMCwKKyAgICAxLDExMCwxMiwxMjQsMCwxMDYsMCwxMDYsOCwxMjQsMSwxMzEsMSwxLDAsODcsCisgICAgMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMTYsOSwxMDYsMTAsMTI0LDAsMTA2LAorICAgIDcsMjUsMCw4MywwLDQxLDQsNzgsMTE0LDEzNSwwLDAsMCwxMjIsMTQsMTA5LAorICAgIDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDEsMSwxMTQsCisgICAgMTUsMCwwLDAsNDEsMTEsMTE0LDkzLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCwxNDAsMCwwLDAsMTE0LDEzNiwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LAorICAgIDEwNiwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzUsCisgICAgMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCw0MSwyLDExNCwKKyAgICA4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LAorICAgIDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxMjksMiwwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDAsMiwxMCwyLDEyLDEsOCwyLDgsMSwxMCwxLDEwLDEsMTAsCisgICAgMSwxNiwzLDIyLDUsMTE0LDE0MSwwLDAsMCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAzOCwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxLDAsMTE2LDIsMTI0LDAsCisgICAgMTA2LDMsMTMxLDEsMTQzLDEwLDEsMCwxMTYsNCwxMjQsMCwxMzEsMSw4MywwLAorICAgIDgxLDAsODIsMCw4OCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTkxLDgyLDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsCisgICAgMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LAorICAgIDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LAorICAgIDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSwKKyAgICA5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwKKyAgICAxMTQsNDYsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LAorICAgIDE1LDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsMSwxMTQsODIsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDgxLDAsMCwwLDE1MiwyLDAsMCwxMTUsNiwwLDAsMCwwLDksOCwKKyAgICAxLDEyLDEsMTE0LDgxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEzNiwwLAorICAgIDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwKKyAgICAxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSw5MCw1LDEwMSw2LDEwMCwxOSwxMDAsNSwKKyAgICAxMDAsNiwxMzIsMSwxMzEsMSw5MCw3LDEwMSw2LDEwMCwyMCwxMDAsNywxMDAsOCwKKyAgICAxMzIsMSwxMzEsMSw5MCw4LDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSwKKyAgICA5MCw5LDEwMSw2LDEwMCwxMSwxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTIsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTMsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxNywxMDAsMTgsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTQsMTAxLDYsCisgICAgMTAxLDE1LDEzMSwxLDkwLDE2LDEwMCw0LDgzLDAsNDEsMjEsMjE4LDE1LDY2LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LAorICAgIDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsCisgICAgOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwKKyAgICAxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLAorICAgIDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwxLDgzLDAsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCisgICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCw0MSw2Miw0MSwyLDExNCwzOCwwLDAsMCwxMTQsMSwwLAorICAgIDAsMCw0MSwxLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwwLDAsMTc3LDIsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwKKyAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw0NCwwLDAsMCwKKyAgICAxMjQsMiwxMDAsMCwxMDcsOSwxMTQsMTIsMTAwLDAsODMsMCwxMTYsMCwxMDYsMSwKKyAgICAxMjQsMSwxMzEsMSwxMTQsMzYsMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsCisgICAgMTQxLDMsODMsMCwxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsCisgICAgOCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSwxLDExNCwxMDMsMCwwLDAsCisgICAgNDEsMywxMTQsNDYsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCwKKyAgICA3MSwwLDAsMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywKKyAgICAxMDEsMTE2LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxODYsMiwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDAsMiw4LDEsNCwxLDEwLDEsMTQsMiwxMjIsCisgICAgMjUsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAzMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywKKyAgICAxMjQsMywxMDAsMSwxMDcsOSwxMTQsMjYsMTI0LDMsMTA2LDEsODMsMCwxMDAsMSwKKyAgICA4MywwLDQxLDIsMTIyLDE3NSw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwKKyAgICAxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LAorICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LAorICAgIDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLAorICAgIDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE0NiwwLDAsMCwxMTQsOTMsMCwKKyAgICAwLDAsNDEsNCwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTQ0LAorICAgIDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDE5NSwyLDAsMCwxMTUsNCwwLDAsMCwwLDksMTIsCisgICAgMSwxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMSwxMDYsMCwxMTYsMSwxMDYsMiwKKyAgICAxMDcsNywxMTQsMzQsMTE2LDMsMTAwLDEsMTA2LDQsMTI0LDEsMTA2LDAsMTMxLDEsCisgICAgMTI0LDEsMTA2LDAsMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDUsMTE2LDYsMTA2LDcsCisgICAgMTI0LDEsMTMxLDIsODMsMCw0MSwzLDEyMiwyNCw2NywxMTQsMTAxLDk3LDExNiwxMDEsCisgICAgMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTIyLDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDEsMSwxMTQsMTUsMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCw2OSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LAorICAgIDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTQsOTksCisgICAgMTE0LDEwMSw5NywxMTYsMTAxLDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LAorICAgIDI2LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM0LDAsMCwwLDIwNywyLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDMsMTIsMSwxMiwxLDEwLDEsMTIyLDI5LAorICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTI0LDEsMTMxLAorICAgIDIsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMjIsNjksMTIwLDEwMSw5OSwzMiwKKyAgICA5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3OCw0MSwzLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTIsCisgICAgMTAxLDEyMCwxMDEsOTksOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxMzUsMCwwLDAsMjE1LDIsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgODMsMCw0MSwyLDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LAorICAgIDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LAorICAgIDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCw4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDIyMCwyLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDQsMTIyLDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsCisgICAgNTYsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsCisgICAgMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMjYsMiwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNTIsODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCwxMDUsMCwwLDAsMjMyLDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxNywxMTQsMSwwLDAsMCwxMTQsMCwKKyAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwyMTgsMTIsMTE1LAorICAgIDExNiw5NywxMTYsMTA1LDk5LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw4NiwwLDAsMCwKKyAgICAyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE0NiwwLAorICAgIDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzNSwwLDAsCisgICAgMCwxMTQsNzQsMCwwLDAsMTE0LDE0OCwwLDAsMCwxMTQsMTQ5LDAsMCwwLAorICAgIDExNCwxMDUsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxNDIsMCwwLDAsMTY4LDIsMCwwLDExNSwzMCwwLDAsCisgICAgMCw4LDcsNCwyLDEyLDksMiwxLDEyLDgsMiwxLDEyLDExLDEyLAorICAgIDgsMTIsNSwyLDEsMTQsNSwyLDEsMTQsNSwyLDEsMTQsNSwxMTQsCisgICAgMTQyLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMDEsMCwKKyAgICA5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywKKyAgICAxMzIsMCwxMzEsMSw5MCw1LDEwMSw2LDEwMCwyMSwxMDAsNSwxMDAsNiwxMzIsMSwKKyAgICAxMzEsMSw5MCw3LDEwMSw2LDEwMCwyMiwxMDAsNywxMDAsOCwxMzIsMSwxMzEsMSwKKyAgICA5MCw4LDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSw5MCw5LDEwMSw0LAorICAgIDEwMCwxMSwxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsMTAwLDEzLDEwMCwxNCwKKyAgICAxMzIsMCwxMzEsMSw5MCwxMSwxMDEsNiwxMDEsMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxMywxMDEsNiwxMDEsMTIsMTAwLDE3LDEwMCwxOCwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxNCwxMDEsNiwxMDEsMTIsMTAwLDE5LDEwMCwyMCwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxNSwxMDAsNCw4MywwLDQxLDIzLDIxOCwxNCw3MCwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwKKyAgICAxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCiAgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAogICAgIDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksCiAgICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LApAQCAtMTIyOSw3NjAgKzEyMjIsNjAxIEBACiAgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCiAgICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCi0gICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsCi0gICAgMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsCi0gICAgMCwwLDAsNDEsMSwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDE5NSwyLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLAotICAgIDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE2LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCw1MCwwLAotICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsCi0gICAgMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsCi0gICAgMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMywxMTQsCi0gICAgNTcsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICAxMTQsODUsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3OCwwLDAsCi0gICAgMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyMDQsMiwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsMTIyLDI1LDY2LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LAotICAgIDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc1LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsCi0gICAgMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiwKLSAgICA5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LAotICAgIDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKLSAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw5OSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLAotICAgIDAsMTE0LDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDg4LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICAxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjEzLDIsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsOSwxOCwxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLAotICAgIDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsCi0gICAgNTEsMCwxMTYsMywwLDEwMCwxLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwwLAotICAgIDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTA2LDAsMCwxMzEsMSwxLAotICAgIDEzMCwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDMsMTIyLDI0LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwKLSAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsCi0gICAgMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsCi0gICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLAotICAgIDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKLSAgICAwLDAsMCwxMTQsMTM4LDAsMCwwLDIyNSwyLDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDMsMTgsMSwyMSwxLDEyLDEsMTIyLDI5LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwKLSAgICAwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwyMiw2OSwxMjAsMTAxLDk5LDMyLDk3LAotICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc4LDQxLDMsMTE0LDY1LDAsMCwwLDExNCw1NywwLDAsMCw5MCwxMiwxMDEsCi0gICAgMTIwLDEwMSw5OSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsMCwyMzMsMiwwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLAotICAgIDgzLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsCi0gICAgMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLAotICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LAotICAgIDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjM4LDIsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NiwKLSAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCi0gICAgMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDI0NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsCi0gICAgMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Miw4MiwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCi0gICAgMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICAxMTUsNDYsNzAsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDEwOSwwLDAsMCwyNTAsMiwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCi0gICAgMTcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwxMTQsOTIsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCi0gICAgMTM4LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwxNTYsCi0gICAgMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCw5MCwwLAotICAgIDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUwLDAsMCwwLAotICAgIDE4NiwyLDAsMCwxMTUsMzAsMCwwLDAsMTIsNyw2LDIsMTgsOSwzLAotICAgIDEsMjEsOCwzLDEsMTgsMTEsMTgsOCwxOCw1LDMsMSwyMSw1LDMsCi0gICAgMSwyMSw1LDMsMSwyMSw1LDExNCwxNTAsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsMjExLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwwLAotICAgIDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCw5MCwKLSAgICA3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMSwKLSAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDExLDAsMTAwLAotICAgIDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDYsMCwxMDAsMTMsCi0gICAgMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNiwwLAotICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTIsMCwxMDAsMTcsMCwxMDAsMTgsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsCi0gICAgMTAxLDEyLDAsMTAwLDE5LDAsMTAwLDIwLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKLSAgICAxLDAsOTAsMTUsMCwxMDAsNCwwLDgzLDQxLDIxLDIxOCwxNCw3MCwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsCi0gICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LAotICAgIDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwKLSAgICAxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLAotICAgIDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAotICAgIDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKLSAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLAotICAgIDQxLDEsMjE4LDEsMTA5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCw5MiwwLDAsMCwxMiwzLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKLSAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDExNCwzNCwwLDExNiwyLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsCi0gICAgODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsMCwwLDAsOTAsNiwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLAotICAgIDAsMTE0LDg1LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwKLSAgICAwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTQsMCwwLDAsCi0gICAgMjEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE1LDEsMTksMiwxMjIsCi0gICAgMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LAotICAgIDE5LDAsMTI0LDAsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDkzLDcwLDEwNSwKKyAgICAwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsMSwxMzEsMSwKKyAgICA4MywwLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLAorICAgIDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKKyAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjIsNjAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsCisgICAgNjIsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LDEsMCwwLDAsNDEsMSwyMTgsCisgICAgMSwxMDksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDg2LDAsMCwwLDI1MCwyLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwKKyAgICAxMTQsMjQsMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsMTQxLDMsODMsMCwKKyAgICAxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCw5MCw2LDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDQxLDEsMTE0LDEwMywwLDAsMCw0MSwzLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNzUsMCwwLDAsMTE0LDc4LDAsMCwwLDQxLDQsMTE0LDE0MywwLAorICAgIDAsMCwxMTQsNzEsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsMTQ1LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxNDYsMCwwLDAsMywzLDAsMCwxMTUsNiwwLDAsMCwwLDIsCisgICAgMTAsMSwxNCwyLDEyMiwyNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsCisgICAgMTE0LDE0LDEyNCwwLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw5Myw3MCwxMDUsCiAgICAgMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCiAgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAogICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKICAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKICAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDgyLDAsMCwwLDQxLDMsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU1LDAsMCwwLDI4LDMsMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCw0NiwKKyAgICAwLDAsMCwxMTQsNzUsMCwwLDAsNDEsMywxMTQsMTQzLDAsMCwwLDExNCwKKyAgICA3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDcsMCwwLDAsMTAsMywwLAogICAgIDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLAogICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKICAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAogICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKKyAgICA4MywwLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKICAgICAxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLAogICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAotICAgIDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDg4LDAsCisgICAgNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsODIsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwzNywzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCisgICAgMCwxMTQsMTM0LDAsMCwwLDE5LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKICAgICAyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKICAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLAogICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsCi0gICAgMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSwKLSAgICA1NCwwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExNiw2LDAsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDExNiwKLSAgICA4LDAsMTI0LDIsMCwxMjQsMCwwLDEwNiw5LDAsMTMxLDIsMCwxLDEwMCwKLSAgICAwLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDk1LDAsMCwwLDExNCwKLSAgICAxNSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw3NywKLSAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LDAsMCwwLDIxOCwxNywxMDMsCi0gICAgMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODksMCwKLSAgICAwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLAotICAgIDAsNDEsMywwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMiwxLDE1LDEsCi0gICAgMTgsMSw5LDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiw5NSw3NiwxMTEsOTcsCi0gICAgMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAotICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKLSAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAotICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgODMsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAwLDAsMTE1LDY0LDAsMCwwLDEyNCwwLDEwNiwwLDEwNiwxLDEyNSwxLDExNiwKKyAgICAyLDEwNiwzLDEyNCwxLDEzMSwxLDExNSwzNiwxMTYsNCwxMDAsMSwxMDYsNSwxMjQsCisgICAgMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsNiwxMTYsMiwxMDYsCisgICAgNywxMjQsMSwxMzEsMiwxMjUsMiwxMTYsOCwxMjQsMiwxMjQsMCwxMDYsOSwxMzEsCisgICAgMiwxLDAsMTAwLDAsODMsMCw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwKKyAgICAzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDQxLDEwLAorICAgIDExNCw4OSwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA3NSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCw1OCwKKyAgICAwLDAsMCwyMTgsMTcsMTAzLDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCw3LDAsMCwKKyAgICAwLDQxLDMsMTE0LDgzLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsNCw5OSwKKyAgICAxMTEsMTAwLDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwxMTQsMTM1LDAsMCwwLDIzLDMsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAwLDIsOCwxLDEwLDEsMTAsMSw4LDEsMTIsMSwxMjIsMjYsNzAsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsCisgICAgOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMTE2LDAsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw0MSwxLDEyMiw5NSwKKyAgICA3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwKKyAgICAxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLAorICAgIDEsMTE0LDg0LDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDEzOCwwLDAsMCwzMiwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKICAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCiAgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKKyAgICAxMDEsNDYsNDEsMiwxMTQsNDYsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwyLAorICAgIDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDgsMCwwLDAsNDEsMywKICAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCiAgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCiAgICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCwKICAgICA0MSwyLDEyMiw1NCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAogICAgIDk3LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLAogICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCwKLSAgICA0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTcsMCwwLDAsCi0gICAgNjUsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAorICAgIDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0OSwwLDAsMCwKKyAgICA0NywzLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAogICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwxLDEyMiwKLSAgICA0Niw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsCi0gICAgMiwxMTQsNTcsMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTUxLDAsMCwwLAotICAgIDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwxMTQsMTA5LDAsMCwwLDcxLDMsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCi0gICAgMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LAotICAgIDE1OSwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDEzOCwKLSAgICAwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDg0LDAsCi0gICAgMCwwLDExNCwxNTYsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMSwwLDAsMCwxMTQsMTYwLDAsMCwwLDMsMywwLDAsMTE1LDMwLAotICAgIDAsMCwwLDEyLDcsNiwyLDE4LDksMywxLDIxLDYsMywxLDE4LAotICAgIDgsMTgsNCwxOCw5LDE4LDksMywxLDIxLDUsMywxLDIxLDUsMywKLSAgICAxLDExNCwxNjAsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDYsMCwwLDAsCi0gICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKLSAgICAzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LAotICAgIDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDgzLDQxLDcsCi0gICAgMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAotICAgIDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LAotICAgIDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsMjQsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwKLSAgICAyLDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsMCwwLDQxLDEsMTE0LDE5LDAsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsODMsMCw0MSwxLDEyMiw0Niw4MiwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsMiwxMTQsNDYsCisgICAgMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLAogICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMjMsMCwwLDAsODQsMywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDEyMiwyOCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLAotICAgIDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwKLSAgICA0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwxMDEsOTcsCi0gICAgMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAotICAgIDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLAotICAgIDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwKLSAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw1NywwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsNDEsNCwxMTQsMTksMCwwLDAsOTAsOCwxMDEsMTIwLDk5LAotICAgIDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwxMTcsMTAxLAotICAgIDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwKLSAgICAwLDAsMCw4OCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI3LAotICAgIDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsCi0gICAgMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwKLSAgICAwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLAotICAgIDAsMCwxMTQsMjMsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAxMTQsMTY1LDAsMCwwLDgwLDMsMCwwLDExNSw2LDAsMCwwLDEyLDIsCi0gICAgNiwyLDEyLDQsMTE0LDE2NSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDEsMCwxMjQsMiwwLDEwMCwKLSAgICAyLDAsMjQsMTMxLDIsMCwxMjUsMywwLDExNiwxLDAsMTI0LDMsMCwxMzEsCi0gICAgMSwwLDEyNCwyLDAsMTA3LDAsMCwxMTQsNTIsMCwxMTYsMiwwLDEwMCwzLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwzLDAsMTAwLDQsMCwyNSwxMjUsNCwKLSAgICAwLDEyNCwwLDAsMTE0LDg0LDAsMTAwLDUsMCwxMDYsMywwLDEyNCw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMiwwLDgzLDEyNCw0LDAsODMsNDEsNiwxMjIsNTAsODIsCi0gICAgMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLAotICAgIDQ2LDExNCwxMjEsMCwwLDAsMTE0LDQ1LDAsMCwwLDEyMiw1MCw5NywxMTYsMTE2LAotICAgIDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCwKLSAgICAzMywwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNDEsNCwyMTgsNiwxMTQsCi0gICAgMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMywxMDgsMTAxLDExMCwyMTgsMTAsODYsOTcsMTA4LDExNywKLSAgICAxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSw1LDExNCwxNSwwLAotICAgIDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDkwLDQsOTgsOTcsMTE1LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsCi0gICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkzLDMsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDIsMjIsMSwxOCwxLDEyLDEsMTAsMSwxMTQsCi0gICAgMTcxLDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLAotICAgIDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwwLDAsODMsCi0gICAgMTE2LDEsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDc4LAotICAgIDQxLDIsMTE0LDE1NSwwLDAsMCwxMTQsODUsMCwwLDAsNDEsNCwyMTgsNiwKLSAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwKLSAgICAxMTQsOTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsMTAyLDMsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsMywxOCwxLDEyLDEsNCwxLDExNCwxNzMsMCwwLDAsOTksMywwLAotICAgIDAsMCwwLDAsMCwwLDksMCwwLDAsMjcsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDQyLDEsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwwLDEwNyw2LDAsMTI1LDMsMCwxMjAsCi0gICAgMjM1LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDIyMCwwLDEyNSw0LDAsMTE2LAotICAgIDYsMCwxMzEsMCwwLDE0Myw5MCwwLDEsMTIxLDEzLDAsMTI0LDQsMCwxMDYsCi0gICAgNywwLDEyNSw1LDAsODcsMTEwLDUxLDAsNCwxMTYsOCwwLDEwNywxMCwwLAotICAgIDExNCwxNDgsMCwxLDEsMSwxMTYsOSwwLDEyNCw0LDAsMTI0LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwxLDAsMTA3LDgsCi0gICAgMCwxMTQsMTQ0LDAsMTE5LDY2LDAsODksMTEwLDE5LDAsODgsMTI0LDUsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSw2LDAsODcsMTAwLAotICAgIDEsMCw4MSw4Miw4OCwxMjQsNiwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjYsCi0gICAgMCwxMjQsMywwLDEyLDExNCwyNiwxLDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwKLSAgICAwLDEwNyw2LDAsMTE0LDI2LDEsMTE2LDAsMCwxMDYsNSwwLDEyNCwwLDAsCi0gICAgMjUsMTI1LDcsMCwxMjEsMTMsMCwxMjQsNywwLDEwNiwxMCwwLDEyNSw4LDAsCi0gICAgODcsMTEwLDIyLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyLDEsMSwxLAotICAgIDEsMTI0LDYsMCw4Myw4OSwxMTMsMzAsMSw4OCwxMjQsOCwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsMTksMSwxMjQsNiwwLDgzLDEyNCw4LDAsODMsMTEzLDY2LAotICAgIDAsMTI0LDYsMCw4MywxMTMsNjYsMCw4NywxMDAsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMjMsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsNzgsMTIyLDIyLDExNSwKLSAgICAxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwxMSwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwKLSAgICAxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE0MSwwLDAsMCwxMTQsMTQyLDAsMCwKLSAgICAwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCi0gICAgMTE0LDIxLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCi0gICAgOTYsMCwwLDAsMTE0LDE3MywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsOSwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDkwLAotICAgIDksMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwKKyAgICAwLDExNCwxMDUsMCwwLDAsNTMsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDc4LDc4LAorICAgIDQxLDEsNzgsNDEsMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LAorICAgIDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODYsCisgICAgMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNDcsMCwKKyAgICAwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxMzgsMCwwLAorICAgIDAsMTE0LDc3LDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwKKyAgICAxMTQsMTA1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUyLDAsMCwwLDI0MSwyLAorICAgIDAsMCwxMTUsMzAsMCwwLDAsOCw3LDQsMiwxMiw5LDIsMSwxMiwKKyAgICA2LDIsMSwxMiw4LDEyLDQsMTIsOSwxMiw5LDIsMSwxNCw1LDIsCisgICAgMSwxNCw1LDIsMSwxMTQsMTUyLDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDMyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLAorICAgIDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwKKyAgICAxMDAsNiw4MywwLDQxLDcsMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsCisgICAgMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsCisgICAgMTAxLDEyMCwxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NiwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwKKyAgICAxLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwxMzcsMCwwLDAsNDEsCisgICAgMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDQ4LDAsMCwwLDY2LDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsCisgICAgOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTUsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LAorICAgIDEsMTMxLDAsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwKKyAgICAxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwKKyAgICAxMTEsMTAyLDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLAorICAgIDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNDcsMCwwLDAsNDEsNCwxMTQsMjYsMCwwLDAsOTAsOCwxMDEsCisgICAgMTIwLDk5LDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwKKyAgICAxMTcsMTAxLDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksCisgICAgMTA3LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCw1MCwwLDAsMCw3MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTIyLDI3LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAorICAgIDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwKKyAgICAxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMCwKICAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwyMTgsMTAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMSwzLAotICAgIDAsMCwxMTUsNDgsMCwwLDAsMCwyLDI1LDEsMTYsNCwxNSwxLDE2LAotICAgIDEsMTAsMSwzLDEsMTMsMSwxMywxLDE4LDEsMTIsMSw4LDIsMjUsCi0gICAgMSwxMiwyLDIyLDEsMTMsMSwzLDEsMTMsMSwxMyw0LDksMiwxMiwKLSAgICAxLDQsMiw3LDIsOCwyLDExNCwxNzYsMCwwLDAsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTg1LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwKLSAgICAyLDAsMTE1LDQyLDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDY2LDAsMTE2LDUsMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDQsCi0gICAgMCwxMTQsMTUwLDAsMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwKLSAgICAxMTUsMTA4LDAsMTE2LDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCi0gICAgNDIsMCwxMjQsMSwwLDExNiw2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNTAsCi0gICAgMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEyLAotICAgIDExNCwxODEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTgxLDAsMTE2LAotICAgIDUsMCwxMDAsNiwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsNywwLDgzLDQxLAotICAgIDgsMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwKLSAgICAzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsCi0gICAgMTE0LDMzLDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LAotICAgIDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCi0gICAgMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw2MSw4MCw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwKLSAgICAxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCi0gICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDksMjE4LAotICAgIDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsCi0gICAgMjE4LDksODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLAotICAgIDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSwKLSAgICA5OSwxMDQsMTAxLDk5LDEwNywxNTEsMywwLDAsMTE1LDI0LDAsMCwwLDAsMiwKLSAgICAxNSwxLDI3LDEsMTIsMSwxMiwxLDEyLDEsMTUsMSwxNSwxLDE1LDEsCi0gICAgNiwyLDIxLDEsMTksMSwxMTQsMTgxLDAsMCwwLDEyMiwxNiw3OCwxMTEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEyMiw0LDEyMywKLSAgICAzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLAotICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw0MCwxLDAsMCwxMDAsMCwwLAotICAgIDEyNSwyLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMTQsMTc1LDAsMTI0LDMsMCwxMTYsCi0gICAgMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsNTksMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTA3LDYsMCwxMTQsODUsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsMCwKLSAgICAyNSw4MywxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDEyMSwKLSAgICAxMywwLDEyNCw0LDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMCw2MSwwLDQsCi0gICAgMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc0LDAsMSwxLDEsMTE2LDYsMCwxMDAsCi0gICAgMywwLDIzLDEwNiw3LDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTI1LAotICAgIDUsMCwxMTYsOCwwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLAotICAgIDEsMTAwLDAsMCwxMzAsMiwwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsCi0gICAgMCwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyMzIsMCwxMTYsOCwwLDExNiw2LDAsMTA2LDcsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLAotICAgIDEsMCwxMTAsMTIsMCwxMTYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsCi0gICAgMCwxMjQsMywwLDExNCwzNiwxLDExNiwxLDAsMTA2LDIsMCwxMjQsMywwLAotICAgIDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTAwLDEsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI0LDcsMCwxMzEsMywwLAotICAgIDEsMTI0LDcsMCw4Myw0MSw2LDc4LDExNCwxMjEsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDEyMiwyMyw1OSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDE0MCwwLDAsMCw0MSwxMiwxMTQsMTIyLDAsMCwwLDExNCwxNCwwLDAsCi0gICAgMCwxMTQsMjEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgMTE0LDk2LDAsMCwwLDIxOCw4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCwKLSAgICA1MCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTQ5LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCwKLSAgICA3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNCwxNTIsMCwwLDAsMTE0LDEyMywwLAotICAgIDAsMCw5MCwxMywxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNCwxNDcsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCi0gICAgMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsCi0gICAgMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE3MSwzLDAsMCwxMTUsNDIsMCwwLAotICAgIDAsMCwxLDYsMSwxOSwxLDYsMSwxNSwxLDEzLDIsMTUsMSwxMSwKLSAgICAxLDEzLDEsMywxLDEzLDEsMTMsMSwyMiwxLDI2LDEsMTUsMSwxMiwKLSAgICAxLDMwLDIsMTIsMSw2LDIsMTMsMSwyOSwxLDExNCwxODQsMCwwLDAsCi0gICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDM3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDE0MywxOCwwLDEsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgMTMxLDIsMCw4Myw4NywxMDAsMSwwLDgxLDgyLDg4LDEwMCwxLDAsODMsNDEsCi0gICAgMiwxMjIsNTQsNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLAotICAgIDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDU0LDAsMCwKLSAgICAwLDExNCwxODQsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDE4MywwLAorICAgIDAsMCwxMTQsMTU3LDAsMCwwLDYyLDMsMCwwLDExNSw2LDAsMCwwLAorICAgIDgsMiw0LDIsOCw0LDExNCwxNTcsMCwwLDAsOTksMywwLDAsMCwKKyAgICAwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNjQsMCwwLDAsMTI0LDEsMTA2LDAsMTAwLDEsMTI0LDIsMTAwLDIsMjQsCisgICAgMCwxMzEsMiwxMjUsMywxMTYsMSwxMjQsMywxMzEsMSwxMjQsMiwxMDcsMCwxMTQsCisgICAgMzYsMTE2LDIsMTAwLDMsMTMxLDEsMTMwLDEsMTI0LDMsMTAwLDQsMjUsMCwxMjUsCisgICAgNCwxMjQsMCwxMTQsNjAsMTAwLDUsMTA2LDMsMTI0LDQsMTI0LDAsMTMxLDIsODMsCisgICAgMCwxMjQsNCw4MywwLDQxLDYsMTIyLDUwLDgyLDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLAorICAgIDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiw5Nyw5OCwKKyAgICAxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTQsMTE3LDAsMCwwLAorICAgIDExNCwzMywwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsCisgICAgMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTksMCwwLDAsMTIyLDUsCisgICAgMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LAorICAgIDMsMTA4LDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsMzgsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMjE4LDcsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsNCw5OCwxMDUsCisgICAgMTE2LDExNSw5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LAorICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw3NSwzLDAsMCwxMTUsMTAsMCwwLDAsMCwKKyAgICAyLDE2LDEsMTIsMSw4LDEsOCwxLDExNCwxNjMsMCwwLDAsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsCisgICAgMTMxLDIsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDI0LDEwMCwwLDgzLDAsCisgICAgMTE2LDEsMTI0LDEsMTI0LDMsMTMxLDIsODMsMCw0MSwxLDc4LDQxLDIsMTE0LAorICAgIDE0NywwLDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsNiwxMDIsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsOTMsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDE5OCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsMTMsMSwxMTQsMTg1LAotICAgIDAsMCwwLDExNCwzMywwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNjYsMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywKLSAgICAwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw0LDAsMTE0LDQ2LDAsMTE2LDEsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSwwLDAsCi0gICAgMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsCi0gICAgMTA2LDUsMCwxMDcsNywwLDExNCw4NCwwLDExNiw2LDAsMTI0LDAsMCwxMTYsCi0gICAgNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTUyLDAsMTE2LAotICAgIDIsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExNiwxMSwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxLDEyNCwzLDAsODMsNDEsNSw5Nyw1MCwxLDAsMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwKLSAgICAxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LAotICAgIDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLDk3LAotICAgIDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk3LAotICAgIDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywKLSAgICAxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLDg0LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLDExNiwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAotICAgIDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzMsMCwwLDAsNzgsMTIyLDQwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwKLSAgICAxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDExNCwxNSwwLDAsMCw0MSwxMiwxMTQsMTgxLDAsMCwwLDExNCwxNzEsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCwyMSwwLDAsMCwxMTQsMTg1LDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksCi0gICAgMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNCw1OCwwLDAsMCwxMTQsNTAsMCwKLSAgICAwLDAsMTE0LDc3LDAsMCwwLDExNCw2MywwLDAsMCw0MSw1LDExNCwxNSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDg5LDAsCi0gICAgMCwwLDExNCw3NCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTg2LDAsMCwwLDIwNCwzLDAsMCwxMTUsCi0gICAgMjgsMCwwLDAsMCw5LDE2LDEsMTIsMSwxOCwxLDEwLDEsMTUsMSwKLSAgICAxMywxLDEzLDEsMTIsMSwxMCwxLDYsMSw5LDEsMTgsMSwxMCwxLAotICAgIDExNCwxODYsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDIzOSwwLDAsMCwxMTYsCi0gICAgMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyMzUsMCwxMDAsMiwKLSAgICAwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODMsMCwxMTYsMSwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCwKLSAgICA4MywwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsCi0gICAgMCwxLDEyMCwxNDksMCwxMjQsMSwwLDY4LDkzLDE0MSwwLDEyNSwzLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTAsMCwxMDAsNCwKLSAgICAwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDAsMSw4NywxMTMsOTAsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIzMCwKLSAgICAwLDEsMTI1LDUsMCwxLDEyMiw0NywwLDExNiw5LDAsMTI0LDUsMCwxMzEsCi0gICAgMSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLDAsMTE0LDIwOSwwLDEyNCw1LAotICAgIDAsMTA2LDEyLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwyMDksMCwxMTksOTAsMCwKLSAgICAxMzAsMCwwLDg3LDg5LDEwMCw1LDAsMTAwLDUsMCwxMjUsNSwwLDEyNiw1LAotICAgIDAsODgsMTEzLDkwLDAsODgsMTEzLDkwLDAsODcsMTI0LDAsMCw4Myw0MSw2LAotICAgIDEyMiwyMzgsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LAotICAgIDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwKLSAgICAxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsCi0gICAgOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCi0gICAgOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTQsMTMxLDAsMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsCi0gICAgOTUsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEzLDExNCw0LDAsMCwwLAotICAgIDExNCwxMzAsMCwwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE4OCwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LAotICAgIDEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTc4LAotICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsMTUsOTUsNjksODIsODIsOTUsNzcsCi0gICAgODMsNzEsOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDE1LDAsMCwwLDQxLDYsCi0gICAgMTE0LDg5LDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE0LAotICAgIDE4MywwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LAotICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjI4LDMsMCwwLDExNSwzNCwwLDAsCi0gICAgMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsMSwxNiwxLDEzLAotICAgIDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDQsMjEsMSwxNSwxLDMsCi0gICAgMSwyNiwxLDExNCwxOTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzIsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw2OCwwLDEyNCwwLDAsCi0gICAgMTAwLDMsMCwyNSwxMjUsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMDcsNywwLAotICAgIDExNCw2OCwwLDEyNCwxLDAsMTA2LDEsMCwxMDAsNSwwLDEzMSwxLDAsMTAwLAotICAgIDYsMCwyNSwxMjUsMSwwLDEyNCwxLDAsODMsNDEsNywxMjIsMTY3LDY3LDk3LAotICAgIDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCwKLSAgICA5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCi0gICAgMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsCi0gICAgOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTM0LDAsMCwwLDc4LDExNCwxLDAsMCwwLAotICAgIDExNCwxMzEsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsCi0gICAgMiwxMTQsNDIsMCwwLDAsMTE0LDEyMiwwLDAsMCw0MSwyLDIxOCw3LDEwMywKLSAgICAxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE0LDE2OSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsOTksOTcsMTA4LAotICAgIDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0LDQsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsMTIsMSwKLSAgICAxOSwxLDExNCwxOTYsMCwwLDAsOTksNSwwLDAsMCwwLDAsMCwwLAotICAgIDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwKLSAgICAwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw1LDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEwNyw5LDAsMTE0LDQ1LDAsMTI0LDEsMCwxMTAsMywwLDEwNSwwLAotICAgIDAsMTI1LDYsMCwxMTYsMSwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLAotICAgIDExNiwwLDAsMTI0LDAsMCwxMjQsNywwLDEyNCw0LDAsMTMxLDMsMCwxMjUsCi0gICAgNSwwLDEyNCwzLDAsMTE1LDIwNywwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwKLSAgICAwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMywwLAotICAgIDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwKLSAgICAwLDEyNCw1LDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTE2LDMsCi0gICAgMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsCi0gICAgMjUsMTMxLDEsMCwyNCwxMjUsOCwwLDExNiw0LDAsMTA2LDUsMCwxMjQsNSwKLSAgICAwLDEwNiw2LDAsMTAwLDIsMCwxMTYsMywwLDEyNCw1LDAsMTA2LDYsMCwKLSAgICAxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsMCwKLSAgICAxMTYsNywwLDEyNCw1LDAsMTI0LDMsMCwxMTYsMCwwLDEzMSwzLDAsODMsCi0gICAgMTAwLDIsMCw4Myw0MSw0LDk3LDIxNSwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwzOSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTEsOTksOTksCi0gICAgMTE3LDExNCwxMTQsMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsCi0gICAgMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAotICAgIDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksCi0gICAgMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKLSAgICAxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsCi0gICAgMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLAotICAgIDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsCi0gICAgOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LAotICAgIDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LAotICAgIDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDExNCwzMywwLDAsMCw3OCwxMTQsMTIxLDAsMCwwLDQxLDgsMTE0LAotICAgIDE4NiwwLDAsMCwxMTQsMTk2LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwKLSAgICAxMTYsMTA1LDExMSwxMTAsMTE0LDE2NywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsOSwxMTQsCi0gICAgMTUsMCwwLDAsMTE0LDE5NSwwLDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsMTE0LDE5MiwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICA5MCw4LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsOTUsMTE0LDE2OSwwLDAsMCw5MCwKLSAgICA3LDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDk1LDk1LDE5LDQsMCwwLDExNSwyNiwwLDAsMCwwLDExLDEyLDEsCi0gICAgMTUsMiwyNCwxLDEyLDEsMTgsMSw2LDMsMTIsMSwyMywxLDYsMSwKLSAgICA0LDQsMzUsMyw0MCwyLDExNCwxOTksMCwwLDAsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw0MywwLAotICAgIDExNiwyLDAsMTAwLDEsMCwxMjQsMCwwLDIzLDEzMSwxLDAsMTMwLDEsMCwKLSAgICAxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwyNSwxMTAsCi0gICAgMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiw0MSw0LDExNCwxNTAsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE0OSwwLDAsMCw0MSwyLAotICAgIDExNCwxNSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1NCw0LDAsCi0gICAgMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxMiwxLDE2LDEsMTE0LDIwMCwKLSAgICAwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsCi0gICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDc0LDEsMCwwLDEyNCwxLDAsCi0gICAgOTcsMCwwLDEyNCwwLDAsOTcsMSwwLDExNiwyLDAsMTE2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTIwLDEyMywwLDExNiwxLDAsMTA2LDMsMCwxMDYsNCwKLSAgICAwLDEzMSwwLDAsNjgsOTMsMTA2LDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsCi0gICAgMCwxMTYsNSwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMiwwLDExNCw0MCwwLAotICAgIDEyNCwzLDAsMTE2LDEsMCwxMDYsNiwwLDEwNyw2LDAsMTE0LDkxLDAsMTE2LAotICAgIDcsMCwxMjUsNSwwLDExMCwyNywwLDExNiwwLDAsMTA2LDgsMCwxMjQsMywKLSAgICAwLDEzMSwxLDAsMTE0LDQwLDAsMTE2LDksMCwxMjUsNSwwLDExMCwzLDAsCi0gICAgMTEzLDQwLDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LAotICAgIDYsMCwxMTYsMTEsMCwxMjQsNiwwLDEyNCw0LDAsMTMxLDIsMCwxLDExMywKLSAgICA0MCwwLDg3LDExNiwxLDAsMTA2LDMsMCwxMTYsMTIsMCwyNSwxMjUsNywwLAotICAgIDEyMCw3MywwLDEwMCw1LDAsNjgsOTMsNjUsMCwxMjUsOCwwLDEyNCw4LDAsCi0gICAgMTE2LDEsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDIwNiwwLDExNiwxMywwLDEyNCwKLSAgICA4LDAsMTMxLDEsMCwxMjUsOSwwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsCi0gICAgMCwxMjQsOCwwLDI1LDEyNSw5LDAsMTE2LDE0LDAsMTI0LDcsMCwxMjQsOCwKLSAgICAwLDEyNCw5LDAsMTMxLDMsMCwxLDExMywxNzAsMCw4NywxMjEsMTYsMCwxMTYsCi0gICAgMTMsMCwxMDAsMiwwLDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMTUsMCwxMDcsMTAsMCwxMTQsMjUsMSwxLDEsMSwxMDAsMywwLDEyNSwKLSAgICAxMCwwLDg5LDExMCwxLDAsODgsMTE2LDE0LDAsMTI0LDcsMCwxMDAsMiwwLAotICAgIDEyNCwxMCwwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMDAsNCwwLDEzMSwxLDAsCi0gICAgMTI1LDExLDAsMTE2LDE0LDAsMTI0LDcsMCwxMDAsNCwwLDEyNCwxMSwwLDEzMSwKLSAgICAzLDAsMSwxMDAsMywwLDgzLDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAotICAgIDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwKLSAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLAotICAgIDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwKLSAgICAxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxNDEsMCwwLDAsMTE0LDM0LDAsMCwwLDc4LAotICAgIDExNCw2MiwwLDAsMCw0MSwxLDExNCwxNDEsMCwwLDAsNDEsMTYsMTE0LDU3LAotICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDIxLDAsCi0gICAgMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3NywwLDAsMCwxMTQsNzYsCi0gICAgMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE2MCwwLAotICAgIDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDEsMCwwLAotICAgIDAsMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsCi0gICAgNDEsMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwKLSAgICA5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsMCwwLDkwLDExLDExNSwxMDEsCi0gICAgMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsNCwwLAotICAgIDAsMTE1LDUwLDAsMCwwLDAsOSw2LDEsNiwzLDEyLDEsMjgsMSwKLSAgICAxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwxLDE3LDMsCi0gICAgMTMsMSwxMywxLDE1LDEsMTUsMiwxMywxLDIwLDMsMywxLDE2LDEsCi0gICAgMTMsMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDg3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNCwwLAotICAgIDEzMSwxLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNSwwLAotICAgIDEzMSwxLDAsMSwxMDAsMSwwLDEwMCwyLDAsMTA4LDYsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsOTcsNywwLDEyNCwyLDAsMTA2LDgsMCwxMTYsMSwwLDEwNiwKLSAgICA5LDAsMTE2LDEwLDAsMjUsMTMxLDEsMCwxLDEwMCwyLDAsODMsNDEsMywKLSAgICAxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw0NiwxMTQsMzMsMCwwLDAsNzgsNDEsMTEsMTE0LDIwNCwwLDAsCi0gICAgMCwxMTQsMTQsMCwwLDAsMTE0LDE3NCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxNTAsMCwwLDAsMTE0LDE2MCwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLAotICAgIDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExOSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsMjEsMCwwLDAsMTE0LDEsMCwwLDAsNDEsCi0gICAgMywxMTQsMjAyLDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDIwNSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMjA2LDAsMCwwLDEwOCw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEzLAotICAgIDIsMTYsMSwxNiwzLDEyLDEsNiwxLDExNCwyMDYsMCwwLDAsNDEsNTEsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LAotICAgIDE2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDExNCw1MywwLDAsMCwxMTQsNTQsMCwwLDAsMTE0LDU2LDAsMCwKLSAgICAwLDExNCw2MywwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDc1LDAsMCwwLAotICAgIDExNCw4MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwKLSAgICAxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCw4NSwKLSAgICAwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsOTAsOSw5NSw4MCw3OSwKLSAgICA4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsCi0gICAgMTE0LDE0NCwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwKLSAgICAxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsODcsMCwwLDAsMTE0LDE1MCwKLSAgICAwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MSwwLAotICAgIDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE4MSwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4NCwwLDAsMCwKLSAgICAxMTQsMTg1LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsCi0gICAgMTk2LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMjA0LAotICAgIDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDk2LDAsMCwwLDYsCi0gICAgMTcsNiwyLDEyLDgsMTIsNCwxOSwyMCw2LDIsNiwzLDIyLDQsMTksCi0gICAgNjgsMTksMjEsMTksMTksMTIsMTksMTIsMTksMTIsMTEsMTgsOCwxMiwxMSwxMiwKLSAgICAxMiwxMiwxNiwxMiwzNiwxOSwyNywxOSwxMDEsMjQsMjYsOSwzLDE4LDQ1LDE4LAotICAgIDYwLDEyLDE4LDEyLDE3LDEyLDI1LDEyLDI5LDEyLDIzLDEyLDE2LDE5LDczLDE5LAotICAgIDc3LDE5LDEzLDEyLDksMTIsOSwxNSw0MCwxMiwxNyw2LDEsMTAsMiwxMiwKLSAgICAyNywxMiw2LDE4LDI0LDEyLDMyLDEyLDE1LDI0LDM1LDEyLDcsMTIsNDcsCisgICAgMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwOCwxMDEsCisgICAgMTAzLDk3LDk5LDEyMSw4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTIsCisgICAgMSw4LDEsNCwxLDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDEwLDAsMCwwLDI3LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyNDIsMCwwLDAsMTE2LDAsMTA2LDEsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDgsCisgICAgMTE0LDIyLDExNiwyLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwzLDExNSwzOCwxMTYsMywKKyAgICAxMDYsNCwxMDAsMywxMTYsNSwxMzEsMiwxLDAsMTI0LDAsMTE2LDAsMTA2LDYsCisgICAgMTA3LDYsMTI1LDQsMTIwLDE4OCwxMjQsMyw2OCwwLDkzLDE3NiwxMjUsNSwxMTYsNywKKyAgICAxMzEsMCwxNDMsNzIsMSwwLDEyMSwxMCwxMjQsNSwxMDYsOCwxMjUsNiw4NywwLAorICAgIDExMCw0Miw0LDAsMTE2LDksMTA3LDEwLDExNCwxMTgsMSwwLDEsMCwxLDAsCisgICAgMTE2LDEwLDEyNCw1LDEyNCwwLDEyNCwxLDEzMSwzLDEyNSw3LDEyNCw3LDEwMCwxLAorICAgIDEwNyw4LDExNCwxMTQsMTE5LDU0LDg5LDAsMTEwLDE0LDg4LDAsMTI0LDYsMTI0LDAsCisgICAgMTI0LDEsMTI0LDIsMTMxLDMsMTI1LDcsODcsMCwxMDAsMSw4MSwwLDgyLDAsCisgICAgODgsMCwxMjQsNywxMDAsMSwxMDcsOSwxMTQsNTQsMTI0LDQsMTIsMCwxMTQsMjI2LAorICAgIDEyNCwwLDExNiwwLDEwNiw2LDEwNyw2LDExNCwyMjYsMTE2LDAsMTA2LDYsMTI0LDAsCisgICAgMjUsMCwxMjUsOCwxMjEsMTAsMTI0LDgsMTA2LDExLDEyNSw5LDg3LDAsMTEwLDIwLAorICAgIDQsMCwxMTYsOSwxMDcsMTAsMTE0LDIwNiwxLDAsMSwwLDEsMCwxMjQsNywKKyAgICA4MywwLDg4LDAsMTI0LDksMTAwLDEsMTA3LDgsMTE0LDIyMCwxMjQsNyw4MywwLAorICAgIDEyNCw5LDgzLDAsMTEzLDU0LDEyNCw3LDgzLDAsMTEzLDU0LDg3LDAsMTAwLDEsCisgICAgODMsMCwxMDAsMSw4MywwLDQxLDQsMTIyLDIxLDcwLDEwNSwxMTAsMTAwLDMyLDk3LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwKKyAgICAxMjIsNTMsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLAorICAgIDEwNSwxMTUsMzIsMTA4LDEwNSwxMDcsMTAxLDEwOCwxMjEsMzIsMTE1LDEwNCwxMTcsMTE2LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMDAsMTExLDExOSwxMTAsMTIyLDIyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LAorICAgIDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwKKyAgICAxMiwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDcwLDAsMCwwLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAorICAgIDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4NywKKyAgICA5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNCw3OSwwLDAsMCwxMTQsMTU3LDAsMCwwLAorICAgIDExNCwxNDYsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LAorICAgIDg5LDAsMCwwLDQxLDEwLDExNCwxNSwwLDAsMCwxMTQsMTQ0LDAsMCwwLAorICAgIDExNCwxNDUsMCwwLDAsMTE0LDE2NiwwLDAsMCw5MCw5LDEwNSwxMTUsOTUsMTE0LAorICAgIDEwMSwxMDgsMTExLDk3LDEwMCwxMTQsMTY0LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LAorICAgIDgyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5MywzLDAsMCwxMTUsNTQsMCwKKyAgICAwLDAsMCwyLDYsMSw4LDIsOCwzLDQsMSwxMiw1LDEwLDEsCisgICAgMTAsMSw4LDEsMiwxLDEwLDEsMTQsMSwxMiwxLDgsMSw4LDIsCisgICAgMjIsMSw4LDIsMTYsMSwxMCwxLDIsMSwxMCwxLDE0LDQsNiwyLAorICAgIDgsMSw0LDIsNiwyLDgsMiwxMTQsMTcwLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE0MCwwLDAsMCwxMTYsMCwxMjQsMCwxMTYsMSwxMzEsMiwxMTUsCisgICAgMjgsMTE2LDIsMTAwLDEsMTA2LDMsMTE2LDQsMTI0LDAsMTMxLDEsMTMxLDEsMTMxLAorICAgIDEsMTMwLDEsMTI0LDIsMTAwLDIsMTA3LDAsMTE0LDQ0LDExNiw1LDEwMCwzLDEzMSwKKyAgICAxLDEzMCwxLDEyNCwyLDEwMCwyLDEwNyw0LDExNCwxMTQsMTE2LDAsMTI0LDEsMTE2LAorICAgIDEsMTMxLDIsMTE1LDcyLDExNiwyLDEwMCw0LDEzMSwxLDEzMCwxLDExMCw0MiwxMjQsCisgICAgMSwxMTUsODYsMTE2LDYsMTAwLDUsMTMxLDEsMTMwLDEsMTEwLDI4LDEyNCwxLDExNiwKKyAgICA3LDEwNiw4LDEwNyw3LDExNCwxMTQsMTAwLDYsMTI1LDMsMTE2LDksMTI0LDMsMTA2LAorICAgIDMsMTI0LDEsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDAsMTIsMCwxMTQsMTM2LDEyNCwKKyAgICAyLDEwMCwyLDEwNywyLDExNCwxMzYsMTE2LDUsMTAwLDcsMTMxLDEsMTMwLDEsMTAwLAorICAgIDgsODMsMCw0MSw5LDEyMiwyOCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LDExNCwKKyAgICAxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsMTEwLAorICAgIDEwMSwzNCw0NiwxMjIsMzEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsMTExLAorICAgIDExNiwzMiwxMjMsMTI1LDExNCwxOSwwLDAsMCwxMjIsMTgsMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDEyMiwzMSw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LAorICAgIDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMjIsNTQsCisgICAgOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAorICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMCwKKyAgICAxMTEsMzIsMTA3LDExMCwxMTEsMTE5LDExMCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMjIsNjEsODAsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMiwxMDEsCisgICAgMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTIyLDE3LDY5LDEwOSwxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxMCwyMTgsMTAsMTA1LDExNSwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsOSw4NCwxMjEsCisgICAgMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLDExNCwxMywwLDAsCisgICAgMCwxMTQsMTYwLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTQsMCwwLDAsCisgICAgMTE0LDc5LDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsCisgICAgMTExLDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwxNjIsCisgICAgMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNywxNDAsMywwLDAsMTE1LDI4LDAsMCwwLDAsCisgICAgMiwxMCwxLDE4LDEsOCwxLDgsMSw4LDEsMTAsMSwxMCwxLDQsCisgICAgMSwxMCwyLDEwLDEsNCwyLDE0LDEsMTQsMSwxMTQsMTc1LDAsMCwwLAorICAgIDEyMiwxNiw3OCwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMTAwLDMyLDEyMiw0LDEyMywzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCw4LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwyMjAsMCwKKyAgICAwLDAsMTAwLDAsMTI1LDIsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTAwLDIsCisgICAgMjUsMCwxMjUsMywxMjQsMywxMTQsMTM0LDEyNCwzLDExNiwxLDEwNiwyLDEwNyw3LAorICAgIDExNCw0MiwxMTYsMywxMjQsMSwxMjQsMywxMzEsMiwxLDAsMTI0LDAsMTE2LDEsCisgICAgMTA2LDIsMTA3LDYsMTE0LDYyLDExNiwxLDEwNiwyLDEyNCwwLDI1LDAsODMsMCwKKyAgICAxMTYsMSwxMDYsMiwxMjQsMywyNSwwLDEyNSw0LDEyMSwxMCwxMjQsNCwxMDYsNCwKKyAgICAxMjUsMiw4NywwLDExMCw1MCw0LDAsMTE2LDUsMTA3LDEwLDExNCwxMzIsMSwwLAorICAgIDEsMCwxLDAsMTE2LDYsMTAwLDMsMjMsMCwxMDYsNywxMjQsMCwxMjQsMywKKyAgICAxMzEsMiwxMjUsNSwxMTYsOCwxMjQsNSwxMjQsMCwxMDAsNCwxNDEsMiwxMDAsMCwKKyAgICAxMzAsMiw4OSwwLDExMCwyLDg4LDAsMTE2LDksMTI0LDAsMTI0LDIsMTMxLDIsCisgICAgMTI1LDYsMTI0LDYsMTAwLDAsMTA3LDgsMTE0LDE3MiwxMTYsOCwxMTYsNiwxMDYsNywKKyAgICAxMjQsMCwxMzEsMSwxMjQsMCwxMDAsNCwxNDEsMiwxMzAsMSwxMTAsOCwxMTYsMTAsCisgICAgMTI0LDYsMTMxLDEsMTI1LDcsMTI0LDMsMTE0LDIxNiwxMTYsMSwxMDYsMiwxMjQsMywKKyAgICAyNSwwLDEyNSw0LDExNiwxMSwxMjQsNCwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwKKyAgICAxMDAsNSwyNSwwLDEyNCw3LDEzMSwzLDEsMCwxMjQsNyw4MywwLDQxLDYsCisgICAgNzgsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLDAsMTIyLDIzLDU5LDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDIzMywyLDAsMCwwLAorICAgIDQxLDEyLDExNCwxMTgsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCisgICAgMCwxMTQsNTgsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsOTAsMCwwLDAsCisgICAgMjE4LDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LDM4LDAsMCwwLDIxOCwKKyAgICAxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTQsMTcwLDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMjE4LDcsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsOTUsMTE0LDE0NCwwLDAsMCwxMTQsMTE5LDAsMCwwLDkwLDEzLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEzOSwwLDAsCisgICAgMCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksCisgICAgMTA3LDEwMSwxMDAsMTYzLDMsMCwwLDExNSw0MiwwLDAsMCwwLDEsNCwxLAorICAgIDE0LDEsNCwxLDEwLDEsMTAsMiwxMCwxLDEwLDEsMTAsMSwyLDEsCisgICAgMTAsMSwxNCwxLDE2LDEsMjAsMSwxMCwxLDgsMSwyMCwyLDgsMSwKKyAgICA0LDIsMTAsMSwyMiwxLDExNCwxODAsMCwwLDAsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDMwLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDE0MywxMiwxLDAsMTE2LAorICAgIDEsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw4MSwwLDgyLDAsODgsMCwxMDAsCisgICAgMSw4MywwLDQxLDIsMTIyLDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLAorICAgIDExNCw0MiwwLDAsMCwxMTQsMTgwLDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwKKyAgICAwLDExNCwxNzksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDE5MCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsCisgICAgMTAsMSwxMTQsMTgxLDAsMCwwLDExNCwxOSwwLDAsMCw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTI0LDEsMTI0LDIsMTMxLDMsCisgICAgMSwwLDEyNCwyLDEwMCwxLDEwNyw0LDExNCwzMiwxMTYsMSwxMjQsMCwxMjQsMSwKKyAgICAxMjQsMiwxMzEsMywxMjUsMCwxMTYsMiwxMDYsMywxMzEsMCwxLDAsMTI0LDAsCisgICAgMTE2LDQsMTA2LDUsMTA3LDcsMTE0LDYwLDExNiw2LDEyNCwwLDExNiw3LDEzMSwyLAorICAgIDgzLDAsMTE2LDQsMTA2LDUsMTI0LDAsMjUsMCwxMjUsMywxMjQsMywxMDAsMiwKKyAgICAxMDcsOCwxMTQsMTA4LDExNiwyLDEwNiw4LDEzMSwwLDEsMCwxMDAsMywxMDYsOSwKKyAgICAxMjQsMCwxMzEsMSwxMjUsNCwxMTYsMTAsMTI0LDQsMTI0LDAsMTAwLDQsMTQxLDIsCisgICAgMTMwLDEsMTE2LDExLDEyNCwwLDEzMSwxLDEsMCwxMjQsMyw4MywwLDQxLDUsCisgICAgOTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwKKyAgICAzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LAorICAgIDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwKKyAgICA5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsCisgICAgMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsCisgICAgMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsCisgICAgMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAorICAgIDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE5LDAsMCwwLDc4LDEyMiw0MCwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsCisgICAgMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwxLDExNCwxNSwwLDAsMCw0MSwxMiwKKyAgICAxMTQsMTc1LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICAxMzcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMTgxLAorICAgIDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDExNCw0NywwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCisgICAgNTYsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDE2MSwwLDAsMCwKKyAgICAxMTQsMTYyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4MiwKKyAgICAwLDAsMCwxOTYsMywwLDAsMTE1LDI4LDAsMCwwLDAsOSwxMiwxLAorICAgIDgsMSwxMiwxLDgsMSwxMCwxLDEwLDEsMTAsMSw4LDEsOCwxLAorICAgIDQsMSw2LDEsMTIsMSw4LDEsMTE0LDE4MiwwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTY0LDAsMCwwLDExNiwwLDEyNCwwLDEwMCwxLDEzMSwyLDExNCwKKyAgICAxNjAsMTAwLDIsMTI0LDEsMTA3LDYsMTE0LDU4LDExNiwxLDEyNCwxLDEzMSwxLDEyNSwKKyAgICAxLDEyNCwxLDEwNiwyLDEwMCwyLDEzMSwxLDEsMCwxMTYsMCwxMjQsMCwxMDAsCisgICAgMywxMzEsMiwxMTQsNTgsMTI0LDEsMTA2LDMsMTI0LDAsMTA2LDQsMTMxLDEsMSwKKyAgICAwLDEyMCwxMDAsMTI0LDEsNjgsMCw5Myw5MiwxMjUsMywxMTYsMCwxMjQsMCwxMjQsCisgICAgMywxMzEsMiwxMTUsNjQsMTAwLDQsMTA2LDUsMTI0LDAsMTA2LDYsMTI0LDMsMTMxLAorICAgIDIsMTI1LDQsMTIxLDE0LDExNiw3LDEyNCwyLDEyNCw0LDEzMSwyLDEsMCw4NywKKyAgICAwLDExMyw2NCw0LDAsMTE2LDgsMTA3LDEwLDExNCwxNTQsMSwwLDEyNSw1LDEsCisgICAgMCwxMjIsMjAsMTI0LDUsMTA2LDksMTI0LDQsMTA3LDIsMTE0LDEzNiwxMTksNjQsMTMwLAorICAgIDAsODcsMCw4OSwwLDEwMCw1LDEwMCw1LDEyNSw1LDEyNiw1LDg4LDAsMTEzLAorICAgIDY0LDg4LDAsMTEzLDY0LDg3LDAsMTI0LDAsODMsMCw0MSw2LDEyMiwyMzgsNzAsCisgICAgMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwKKyAgICAxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsOTcsOTgsMTA4LAorICAgIDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMTE1LDExNSwKKyAgICAxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzksCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDEwMCwKKyAgICAxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTI3LDAsCisgICAgMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTIyLDUsCisgICAgMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEwLDExNCw0LDAsMCwwLDExNCwxMjYsMCwKKyAgICAwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMDAsMTE0LDE4NCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDEsMCwwLAorICAgIDAsMTE0LDU4LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDE1LDAsMCwwLAorICAgIDQxLDYsMTE0LDgzLDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwKKyAgICAxMTYsMTE0LDE3OSwwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjIxLDMsMCwwLDExNSwzMiwKKyAgICAwLDAsMCwwLDEwLDEwLDEsOCwxLDgsMSwxMCwxLDEwLDEsMTIsCisgICAgMSwxMCwxLDEwLDEsMTQsMSwyLDEsMTQsMSwxNiw0LDEwLDEsMiwKKyAgICAxLDI0LDEsMTE0LDE4OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxNDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTI1LDEsMTI0LDAsMTA2LDAsCisgICAgMTAwLDIsMTMxLDEsMTI1LDIsMTI0LDEsMTAwLDMsMTA3LDksMTE0LDgyLDEyNCwyLAorICAgIDEwMCwzLDEwNyw5LDExNCw3OCwxMjQsMSwxMjQsMiwxMDYsMSwxMDcsMywxMTQsNzgsCisgICAgMTE2LDIsMTA2LDMsMTAwLDQsMTI0LDEsMTU1LDIsMTAwLDUsMTI0LDIsMTA2LDEsCisgICAgMTU1LDIsMTAwLDYsMTU3LDUsMTE2LDQsMTAwLDcsMTAwLDgsMTQxLDMsMSwwLAorICAgIDEyNCwxLDgzLDAsMTI0LDIsMTAwLDMsMTA3LDksMTE0LDk2LDEyNCwyLDEwNiwxLAorICAgIDgzLDAsMTE2LDIsMTA2LDMsMTAwLDksMTE2LDQsMTAwLDcsMTAwLDgsMTQxLDMsCisgICAgMSwwLDEyNCwwLDEwMCwxMCwyNSwwLDEyNSwxLDEwMCwxMSwxMjQsMCwxMDcsNywKKyAgICAxMTQsMTQyLDEyNCwxLDEwNiw1LDEwMCwxMiwxMzEsMSwxMDAsMTMsMjUsMCwxMjUsMSwKKyAgICAxMjQsMSw4MywwLDQxLDE0LDEyMiwxNjcsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LAorICAgIDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsCisgICAgMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICAxMzAsMCwwLDAsMTE0LDg5LDAsMCwwLDc4LDEyMiwzMiw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMzMsNjEsMzIsOTUsOTUsMTE1LDExMiwxMDEsCisgICAgOTksOTUsOTUsNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiw0MCwxMjIsNCwzMiwzMywKKyAgICA2MSwzMiwyNTAsMSw0MSwyMzMsMywwLDAsMCw0MSwxLDkwLDEwLDExNSwxMTYsCisgICAgOTcsOTksMTA3LDEwOCwxMDEsMTE4LDEwMSwxMDgsMTIyLDg5LDk5LDk3LDExMCwzOSwxMTYsMzIsCisgICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsOTUsOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsMzIsMTExLDExNCwKKyAgICAzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsNDQsMzIsMTAyLDk3LAorICAgIDEwOCwxMDgsMTA1LDExMCwxMDMsMzIsOTgsOTcsOTksMTA3LDMyLDExMSwxMTAsMzIsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSw5NSwxMTQsMSwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxMTcsMCwKKyAgICAwLDAsMTE0LDE5LDAsMCwwLDQxLDYsMTE0LDMwLDAsMCwwLDExNCwxMTksCisgICAgMCwwLDAsMTE0LDE2NywwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCw0MSwzLDIxOCw3LDEwMywxMDgsMTExLDk4LDk3LAorICAgIDEwOCwxMTUsMTE0LDE2MSwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDk5LDk3LAorICAgIDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMjUyLDMsCisgICAgMCwwLDExNSwzMCwwLDAsMCwwLDcsMTAsMSwxMCwxLDgsMSwxOCwKKyAgICAxLDIyLDIsMTAsMSw0LDEsOCwxLDYsMiw2LDIsMTAsMSw4LAorICAgIDEsOCwxLDE0LDEsMTE0LDE5MywwLDAsMCw5OSw1LDAsMCwwLDAsCisgICAgMCwwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNjYsMCwwLDAsMTI0LDQsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwwLDEyNCwwLAorICAgIDEzMSwxLDEyNSw1LDExMCwzNiwxMjQsMSwxMDAsMiwxMDcsOSwxMTQsMzAsMTI0LDEsCisgICAgMTEwLDIsMTA1LDAsMTI1LDYsMTE2LDEsMTI0LDYsMTMxLDEsMTI1LDcsMTE2LDAsCisgICAgMTI0LDAsMTI0LDcsMTI0LDQsMTMxLDMsMTI1LDUsMTI0LDMsMTE1LDE1MCwxMjQsNCwKKyAgICAxMDAsMSwxMDcsMiwxMTQsODQsMTE2LDAsMTI0LDAsMTA2LDIsMTAwLDMsMTMxLDEsCisgICAgMTAwLDEsMjUsMCwxMzEsMSw4MywwLDEyNCwwLDExNSw5MiwxMjQsNSw4MywwLAorICAgIDExNiwzLDEyNCwwLDEzMSwxLDExNiwzLDEyNCwwLDEwNiwyLDEwMCwzLDEzMSwxLAorICAgIDEwMCwxLDI1LDAsMTMxLDEsMjQsMCwxMjUsOCwxMTYsNCwxMDYsNSwxMjQsNSwKKyAgICAxMDYsNiwxMDAsMiwxMTYsMywxMjQsNSwxMDYsNiwxMzEsMSwxMjQsOCwyNCwwLAorICAgIDEzMywyLDI1LDAsMjUsMCw4MywwLDExMCwxMiwxMTYsNywxMjQsNSwxMjQsMywKKyAgICAxMTYsMCwxMzEsMyw4MywwLDEwMCwyLDgzLDAsNDEsNCw5NywyMTUsMSwwLAorICAgIDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LAorICAgIDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksCisgICAgMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsCisgICAgMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSwKKyAgICA0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywKKyAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LAorICAgIDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwKKyAgICAxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwKKyAgICAxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LAorICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwKKyAgICAxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLAorICAgIDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsCisgICAgMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLAorICAgIDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwKKyAgICAxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsCisgICAgMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCwKKyAgICA0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsNzgsMTE0LDExNywKKyAgICAwLDAsMCw0MSw4LDExNCwxODIsMCwwLDAsMTE0LDE5MywwLDAsMCwyMTgsCisgICAgOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwxNTksMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTg5LAorICAgIDAsMCwwLDQxLDksMTE0LDE1LDAsMCwwLDExNCwxOTIsMCwwLDAsMjE4LAorICAgIDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwxODcsMCwwLDAsMTE0LDE2MiwwLDAsCisgICAgMCwxMTQsODMsMCwwLDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LAorICAgIDExNCwxNjEsMCwwLDAsOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCw5NSwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwyMyw0LDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMCwxMSw4LDEsMTAsMiwxNiwxLDgsMSwxMiwxLDQsMywKKyAgICA4LDEsMTgsMSw0LDEsNCw0LDI2LDMsMzIsMiwxMTQsMTk2LDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDEwNiwxLDEyNCwKKyAgICAwLDEzMSwxLDEyNSwxLDEyNCwxLDEwMCwwLDEwNyw4LDExNCwzMCwxMTYsMiwxMDAsCisgICAgMSwxMjQsMCwyMywwLDEzMSwxLDEzMCwxLDExNiwzLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsCisgICAgNCwxMTQsMTQyLDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDcwLDAsMCwwLAorICAgIDExNCwxNDEsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDgyLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsNTgsNCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLAorICAgIDEsOCwxLDEyLDEsMTE0LDE5NywwLDAsMCw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDI0NCwwLDAsMCwxMjQsMSw5NywwLDEyNCwwLDk3LDEsMTE2LDIsMTE2LDEsCisgICAgMTMxLDEsMTI1LDIsMTIwLDg2LDExNiwxLDEwNiwzLDEwNiw0LDEzMSwwLDY4LDAsCisgICAgOTMsNzIsOTIsMiwxMjUsMywxMjUsNCwxMTYsNSwxMjQsNCwxMjQsMiwxMzEsMiwKKyAgICAxMTQsMjgsMTI0LDMsMTE2LDEsMTA2LDYsMTA3LDYsMTE0LDYyLDExNiw3LDEyNSw1LAorICAgIDExMCwxOCwxMTYsMCwxMDYsOCwxMjQsMywxMzEsMSwxMTQsMjgsMTE2LDksMTI1LDUsCisgICAgMTEwLDIsMTEzLDI4LDExNiwxMCwxMjQsNCwxMjQsNSwxMzEsMiwxMjUsNiwxMTYsMTEsCisgICAgMTI0LDYsMTI0LDQsMTMxLDIsMSwwLDExMywyOCw4NywwLDExNiwxLDEwNiwzLAorICAgIDExNiwxMiwyNSwwLDEyNSw3LDEyMCw1NCwxMDAsNSw2OCwwLDkzLDQ2LDEyNSw4LAorICAgIDEyNCw4LDExNiwxLDEwNiwzLDEwNyw3LDExNCwxNDQsMTE2LDEzLDEyNCw4LDEzMSwxLAorICAgIDEyNSw5LDExMCwxMCwxMTYsMSwxMDYsMywxMjQsOCwyNSwwLDEyNSw5LDExNiwxNCwKKyAgICAxMjQsNywxMjQsOCwxMjQsOSwxMzEsMywxLDAsMTEzLDEyMCw4NywwLDEyMSwxMiwKKyAgICAxMTYsMTMsMTAwLDIsMTMxLDEsMTI1LDEwLDg3LDAsMTEwLDI0LDQsMCwxMTYsMTUsCisgICAgMTA3LDEwLDExNCwyMDYsMSwwLDEsMCwxLDAsMTAwLDMsMTI1LDEwLDg5LDAsCisgICAgMTEwLDIsODgsMCwxMTYsMTQsMTI0LDcsMTAwLDIsMTI0LDEwLDEzMSwzLDEsMCwKKyAgICAxMTYsMTMsMTAwLDQsMTMxLDEsMTI1LDExLDExNiwxNCwxMjQsNywxMDAsNCwxMjQsMTEsCisgICAgMTMxLDMsMSwwLDEwMCwzLDgzLDAsNDEsNiwxMjIsMjUwLDgzLDEwMSwxMTYsMTE3LAorICAgIDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLAorICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsCisgICAgMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsMTA1LAorICAgIDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE2NywwLDAsMCwxMTQsMjAsMCwwLDAsCisgICAgNzgsMTE0LDU1LDAsMCwwLDQxLDEsMTE0LDE2NywwLDAsMCw0MSwxNiwxMTQsCisgICAgNDYsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwxMywwLDAsMCwxMTQsNzksCisgICAgMCwwLDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTcxLDAsMCwwLDExNCwKKyAgICA2OSwwLDAsMCwxMTQsMTQyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsMTUyLAorICAgIDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMSwwLAorICAgIDAsMCwxMTQsMTk3LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3MCwwLDAsCisgICAgMCw0MSwxMiwyMTgsMTAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LAorICAgIDExLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDgzLAorICAgIDAsMCwwLDExNCw5MywwLDAsMCwxMTQsODIsMCwwLDAsOTAsMTEsMTE1LAorICAgIDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2NSw0LAorICAgIDAsMCwxMTUsNTAsMCwwLDAsMCw5LDQsMSw0LDMsOCwxLDIwLAorICAgIDEsMTAsMSwxMCwxLDYsMSwxMCwxLDYsMiwyLDEsMTAsMSwxNCwKKyAgICAzLDEwLDEsMTAsMSwxMCwxLDEwLDIsMTAsMSwxNiwzLDIsMSwxMiwKKyAgICAxLDE0LDIsMTAsMSwxMiwzLDgsMSwxMTQsMjAxLDAsMCwwLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDY2LDAsMCwwLDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLAorICAgIDEsMCwxMTYsMSwxMDYsMiwxMDYsMywxMTYsNCwxMzEsMSwxLDAsMTE2LDEsCisgICAgMTA2LDIsMTA2LDMsMTE2LDUsMTMxLDEsMSwwLDEwMCwxLDEwMCwyLDEwOCw2LAorICAgIDEyNSwyLDEyNCwyLDk3LDcsMTI0LDIsMTA2LDgsMTE2LDEsMTA2LDksMTE2LDEwLAorICAgIDI1LDAsMTMxLDEsMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsNTAsNzMsMTEwLAorICAgIDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICAxMTQsMTksMCwwLDAsNzgsNDEsMTEsMTE0LDIwMSwwLDAsMCwxMTQsMTQsMCwKKyAgICAwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNDIsMCwwLAorICAgIDAsMTE0LDE1MiwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCwKKyAgICA5NywxMDgsMTE0LDExNSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LAorICAgIDEwOCwxMTQsNzksMCwwLDAsMTE0LDEsMCwwLDAsNDEsMywxMTQsMTk5LDAsCisgICAgMCwwLDExNCwyMDAsMCwwLDAsMTE0LDIwMiwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAzLDAsMCwwLAorICAgIDExMiw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEwLDIsMTIsMSwxMiwKKyAgICAzLDgsMSw0LDEsMTE0LDIwMywwLDAsMCw0MSwyLDc4LDc4LDQxLDEsCisgICAgNzgsNDEsMiw3OCwxMTQsMTksMCwwLDAsNDEsNTAsMTE0LDMsMCwwLDAsCisgICAgMTE0LDExNSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwKKyAgICA1MSwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDM2LDAsMCwwLDExNCwxNywKKyAgICAwLDAsMCwxMTQsMTgsMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0MiwwLAorICAgIDAsMCwxMTQsNDUsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsCisgICAgMCwxMTQsNjgsMCwwLDAsMTE0LDc0LDAsMCwwLDExNCw3NywwLDAsMCwKKyAgICAxMTQsODQsMCwwLDAsMTE0LDk1LDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsCisgICAgMTAyLDAsMCwwLDExNCw3OCwwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwKKyAgICAxMTYsOTAsOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTI4LDAsMCwKKyAgICAwLDExNCwxMzMsMCwwLDAsMTE0LDEzNiwwLDAsMCwxMTQsOTEsMCwwLDAsCisgICAgMTE0LDgwLDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsCisgICAgODEsMCwwLDAsMTE0LDE0MiwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNTcsCisgICAgMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwKKyAgICAwLDAsMTE0LDE3NSwwLDAsMCw5MCwxNSw5NSw2OSw4Miw4Miw5NSw3Nyw4MywKKyAgICA3MSw5NSw4MCw4Miw2OSw3MCw3Myw4OCwxMTQsMTc3LDAsMCwwLDExNCwxODAsMCwKKyAgICAwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODksMCwwLAorICAgIDAsMTE0LDE5MywwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxOTcsMCwwLDAsCisgICAgMTE0LDIwMSwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCwKKyAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSw5NCwwLDAsCisgICAgMCw0LDE3LDQsMiw4LDgsOCw3LDQsMiw0LDMsMTYsNCwxNCwKKyAgICA2OCwxNCwyMSwxNCwxOSw4LDE5LDgsMTksOCwxMSwxNCw4LDgsMTEsOCwKKyAgICAxMiw4LDE2LDgsMzYsMTQsMjcsMTQsMTAxLDE2LDI2LDYsMywxMCw0NSwxNCwKKyAgICA2MCw4LDE3LDgsMTcsOCwyNSw4LDI5LDgsMjMsOCwxNiwxNCw3MywxNCwKKyAgICA3NywxNCwxMyw4LDksOCw5LDEwLDQ3LDgsMjAsNCwxLDgsMiw4LAorICAgIDI3LDgsNiwxMCwyNSw4LDMxLDgsMjcsMTgsMzUsOCw3LDgsNDcsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCmluZGV4IDVlZTg0M2EuLmM1ZWJjNjAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAorKysgYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKQEAgLTEsNzkxICsxLDcxNyBAQAogLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjQ0LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCw5NiwwLDkwLDEsMCwxMDAsOTcsMCw5MCwyLDAsMTAxLDIsMCwxMDEsCi0gICAgMSwwLDIzLDkwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNSwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDYsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsCi0gICAgMTIsMCwxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMSwwLDkwLDEzLAotICAgIDAsMTAxLDE0LDAsMTAxLDEzLDAsMTA2LDE1LDAsMTMxLDEsMCw5MCwxNiwwLAotICAgIDEwMCwyNSwwLDEwNiwxNywwLDEwMCwyNiwwLDEwMCwyNywwLDEzMSwyLDAsMTAwLAotICAgIDI4LDAsMjMsOTAsMTgsMCwxMDEsMTksMCwxMDYsMjAsMCwxMDEsMTgsMCwxMDAsCi0gICAgMjcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDI5LDAsOTAsMjIsMCwxMDAsMzAsCi0gICAgMCw5MCwyMywwLDEwMCwzMSwwLDEwMywxLDAsOTAsMjQsMCwxMDAsMzIsMCwKLSAgICAxMDMsMSwwLDkwLDI1LDAsMTAxLDI1LDAsNCw5MCwyNiwwLDkwLDI3LDAsCi0gICAgMTAwLDMzLDAsMTAwLDM0LDAsMTAwLDMzLDAsMTAwLDM1LDAsMTAwLDM2LDAsMTMyLAotICAgIDEsMSw5MCwyOCwwLDEwMCwzNywwLDEwMCwzOCwwLDEzMiwwLDAsOTAsMjksCi0gICAgMCwxMDAsMzksMCwxMDAsNDAsMCwxMzIsMCwwLDkwLDMwLDAsMTAwLDQxLDAsCi0gICAgMTAwLDQyLDAsMTMyLDAsMCw5MCwzMSwwLDEwMCw0MywwLDEwMCw0NCwwLDEzMiwKLSAgICAwLDAsOTAsMzIsMCwxMDAsNDUsMCwxMDAsNDYsMCwxMDAsNDcsMCwxMDAsNDgsCi0gICAgMCwxMzIsMCwxLDkwLDMzLDAsMTAwLDQ5LDAsMTAwLDUwLDAsMTMyLDAsMCwKLSAgICA5MCwzNCwwLDEwMCw1MSwwLDEwMCw1MiwwLDEzMiwwLDAsOTAsMzUsMCwxMDAsCi0gICAgMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMywKLSAgICAwLDkwLDM2LDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDU1LDAsCi0gICAgMTAwLDU2LDAsMTMyLDMsMCw5MCwzNywwLDEwMCw1NywwLDEwMCw1NywwLDEwMCwKLSAgICA1OCwwLDEwMCw1OSwwLDEzMiwyLDAsOTAsMzgsMCwxMDAsNjAsMCwxMDAsNjEsCi0gICAgMCwxMzIsMCwwLDkwLDM5LDAsMTAxLDQwLDAsMTMxLDAsMCw5MCw0MSwwLAotICAgIDEwMCwzMywwLDEwMCw2MiwwLDEwMCwzMywwLDEwMCw2MywwLDEwMSw0MSwwLDEwMCwKLSAgICA2NCwwLDEwMCw2NSwwLDEzMiwxLDIsOTAsNDIsMCw3MSwxMDAsNjYsMCwxMDAsCi0gICAgNjcsMCwxMzIsMCwwLDEwMCw2NywwLDEzMSwyLDAsOTAsNDMsMCw3MSwxMDAsCi0gICAgNjgsMCwxMDAsNjksMCwxMzIsMCwwLDEwMCw2OSwwLDEzMSwyLDAsOTAsNDQsCi0gICAgMCw3MSwxMDAsNzAsMCwxMDAsNzEsMCwxMzIsMCwwLDEwMCw3MSwwLDEwMSw0NCwKLSAgICAwLDEzMSwzLDAsOTAsNDUsMCw3MSwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwKLSAgICAwLDEwMCw3MywwLDEzMSwyLDAsOTAsNDYsMCw3MSwxMDAsNzQsMCwxMDAsNzUsCi0gICAgMCwxMzIsMCwwLDEwMCw3NSwwLDEwMSw0NiwwLDEwMSw0NSwwLDEzMSw0LDAsCi0gICAgOTAsNDcsMCw3MSwxMDAsNzYsMCwxMDAsNzcsMCwxMzIsMCwwLDEwMCw3NywwLAotICAgIDEwMSw0NiwwLDEwMSw0NCwwLDEzMSw0LDAsOTAsNDgsMCwxMDMsMCwwLDkwLAotICAgIDQ5LDAsNzEsMTAwLDc4LDAsMTAwLDc5LDAsMTMyLDAsMCwxMDAsNzksMCwxMDEsCi0gICAgNDYsMCwxMDEsNDQsMCwxMzEsNCwwLDkwLDUwLDAsNzEsMTAwLDgwLDAsMTAwLAotICAgIDgxLDAsMTMyLDAsMCwxMDAsODEsMCwxMzEsMiwwLDkwLDUxLDAsNzEsMTAwLAotICAgIDgyLDAsMTAwLDgzLDAsMTMyLDAsMCwxMDAsODMsMCwxMzEsMiwwLDkwLDUyLAotICAgIDAsNzEsMTAwLDg0LDAsMTAwLDg1LDAsMTMyLDAsMCwxMDAsODUsMCwxMzEsMiwKLSAgICAwLDkwLDUzLDAsNzEsMTAwLDg2LDAsMTAwLDg3LDAsMTMyLDAsMCwxMDAsODcsCi0gICAgMCwxMzEsMiwwLDkwLDU0LDAsMTAwLDMzLDAsMTAwLDg4LDAsMTAwLDg5LDAsCi0gICAgMTMyLDEsMCw5MCw1NSwwLDEwMCw5MCwwLDEwMCw5MSwwLDEzMiwwLDAsOTAsCi0gICAgNTYsMCwxMDAsOTIsMCwxMDAsOTMsMCwxMzIsMCwwLDkwLDU3LDAsMTAwLDk0LAotICAgIDAsMTAwLDk1LDAsMTMyLDAsMCw5MCw1OCwwLDEwMCwzMywwLDgzLDQxLDk4LAotICAgIDk3LDk0LDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLAotICAgIDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsCi0gICAgNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwKLSAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAotICAgIDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsCi0gICAgMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwKLSAgICAxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwKLSAgICAxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsCi0gICAgMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLAotICAgIDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwKLSAgICAxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwxMjEsMTAzLDExOSwxMDUsMTEwLAotICAgIDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSw4OCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLAotICAgIDAsMTE0LDcyLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTE2LDQsMCwKLSAgICAxMzEsMSwwLDExNCw0NSwwLDEwMCwxLDAsMTM3LDAsMCwxMTAsNiwwLDEwMCwKLSAgICAyLDAsMTM3LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDMsMCwxMDAsNCwKLSAgICAwLDEzNCwwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsNSwwLDEwMCw0LDAsCi0gICAgMTMyLDAsMCwxMjUsMCwwLDEyNCwwLDAsODMsNDEsNiw3OCw5MCwxMiw4MCwKLSAgICA4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSwxMTUsMTIsMCwwLDAsCi0gICAgODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxOSwwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTM2LDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAotICAgIDYsMCw4Myw0MSwxLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwKLSAgICAxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDQxLDIsMjE4LDMsCi0gICAgOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCw0MSwxLAotICAgIDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDI1MCwzOCw2MCwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAotICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywKLSAgICAxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDM3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzcsOTUsMTA5LDk3LDEwNywKLSAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSwKLSAgICA5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCi0gICAgMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLAotICAgIDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCw3LDAsMCwwLDQxLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSw1LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LDExMiwxMDgsOTcsMTE2LDEwMiwKLSAgICAxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAotICAgIDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLAotICAgIDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDIxOCwzNSw5NSw2NywKLSAgICA2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSwKLSAgICA4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw5NSw4Myw4NCw4Miw5NSw3NSw2OSwKLSAgICA4OSw0MSwxLDExNCw3LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDUsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywxMDcsMTAxLAotICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwwLDEsMTgsMSwxOCwxLDksMiw2LDIsMjEsNCwKLSAgICAxMiwzLDExNCwxMywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsMSwwLDY0LDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsODMsNDEsNCwxMjIsNDIsNjcsCi0gICAgMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwKLSAgICAxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LAotICAgIDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsCi0gICAgMjU1LDEyNywzLDAsMjMzLDQsMCwwLDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwKLSAgICAxMDEsNDEsMiwyMTgsMywxMDUsMTEwLDExNiwyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsCi0gICAgMTAxLDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwyMTgsNyw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsMTksMCwwLDAsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwKLSAgICAwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsCi0gICAgMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDExNCwxNSwwLDAsCi0gICAgMCw0MSwyLDExNCwxNiwwLDAsMCwyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwxLDkwLDksMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsCi0gICAgMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw3LDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNTIsMCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwyLDExNCwyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwyNiwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKLSAgICAwLDAsMTI0LDAsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsMywxMjIsCi0gICAgMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0NiwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKLSAgICAwLDgzLDAsMCwwLDExNSwzNywwLDAsMCwxMDMsMCwwLDEyNCwwLDAsCi0gICAgOTMsMjcsMCwxMjUsMSwwLDEyNCwxLDAsMTE0LDYsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTE2LDEsMCwxMzEsMSwwLDE0NSwyLDAsMTEzLDYsMCw4MywxMTQsCi0gICAgNCwwLDAsMCw0MSwyLDIxOCw2LDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLAotICAgIDIsMjE4LDIsNDYsNDgsMjE4LDQsMTEyLDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LAotICAgIDExNiw5OSwxMTEsMTA5LDExMiw2Miw1OSwwLDAsMCwxMTUsMiwwLDAsMCw5LAotICAgIDEsMTIyLDMwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsCi0gICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLAotICAgIDYyLDQxLDIsMjE4LDgsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LAotICAgIDExMSwxMDUsMTEwLDQxLDEsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LAotICAgIDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDU3LDAsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsMiwxNSwxLDExNCwzMCwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxMzQsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MiwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxMTYsMywwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsCi0gICAgMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLDEyMCw2OSwwLDExNiwKLSAgICA0LDAsMTI0LDAsMCwxMzEsMSwwLDY4LDkzLDU1LDAsMTI1LDQsMCwxMjQsCi0gICAgNCwwLDExNiwxLDAsMTA3LDYsMCwxMTQsNjUsMCwxMjQsMCwwLDEwNiw1LAotICAgIDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDEsMSw5MiwyLDAsCi0gICAgMTI1LDEsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLAotICAgIDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LDAsMCwxMDIsMiwwLDgzLDQxLDQsCi0gICAgMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAotICAgIDQxLDQ2LDIzMywxLDAsMCwwLDkwLDgsMTA5LDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsCi0gICAgMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LDEwMSwxMTAsMTE0LDIzLDAsMCwwLDIxOCwKLSAgICAxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjcsMCwwLDAsCi0gICAgMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDEwMCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsCi0gICAgMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywxMTYsMTA0LDkwLDUsMTAyLDExNCwxMTEsMTEwLAotICAgIDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsMTA1LDEwOCwxMTQsMTgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsNjMsMCwwLDAsMTE1LAotICAgIDE2LDAsMCwwLDAsMiwxOCwxLDI0LDEsMTAsMSwxOSwxLDEyLDEsCi0gICAgMjcsMSwxNCwxLDExNCw0MCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDgzLAotICAgIDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc3LDk3LDEwMCwxMDEsMzIsOTcsMzIsMTE1LAotICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsMzIsMTA1LDExNiwzMiwxMDEsOTcsMTE1LDEwNSwKLSAgICAxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsCi0gICAgMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LDEwOSwxMDEsMTEwLDExNiwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDExNSwxMTYsCi0gICAgOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDExNSw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw0MSwyLDExNCwzLDAsMCwwLDkwLDQsMTE1LDExNiw5NywxMTYsNDEsCi0gICAgMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCi0gICAgMTE2LDc1LDAsMCwwLDExNSwyLDAsMCwwLDAsNywxMTQsNDEsMCwwLAotICAgIDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMSwxNiwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsCi0gICAgMSwwLDEwNywxMCwwLDExNCw0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCw2NCwxMjQsMSwKLSAgICAwLDEwNywyLDAsODMsNDEsMywxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsCi0gICAgNDEsMywxMTQsNDEsMCwwLDAsMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLAotICAgIDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCw5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAotICAgIDExMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywKLSAgICAxLDE2LDEsMTMsMSw5LDEsMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDI0OCwxLDAsMCwxMDAsMCw5MCwwLDEwMCw5MSwKKyAgICA5MCwxLDEwMCw5Miw5MCwyLDEwMSwyLDEwMSwxLDIzLDAsOTAsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDAsMTAsMTAwLDExLDEzMiwwLDkwLDcsMTAwLDEyLAorICAgIDEwMCwxMywxMzIsMCw5MCw4LDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsOSwxMDAsMTYsCisgICAgMTAwLDE3LDEzMiwwLDkwLDEwLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTEsMTAwLDIwLAorICAgIDEwMCwyMSwxMzIsMCw5MCwxMiwxMDAsOTMsMTAwLDIzLDEwMCwyNCwxMzIsMSw5MCwxMywKKyAgICAxMDEsMTQsMTAxLDEzLDEwNiwxNSwxMzEsMSw5MCwxNiwxMDAsMjUsMTA2LDE3LDEwMCwyNiwKKyAgICAxMDAsMjcsMTMxLDIsMTAwLDI4LDIzLDAsOTAsMTgsMTAxLDE5LDEwNiwyMCwxMDEsMTgsCisgICAgMTAwLDI3LDEzMSwyLDkwLDIxLDEwMCwyOSw5MCwyMiwxMDAsMzAsOTAsMjMsMTAwLDMxLAorICAgIDEwMywxLDkwLDI0LDEwMCwzMiwxMDMsMSw5MCwyNSwxMDEsMjUsNCwwLDkwLDI2LAorICAgIDkwLDI3LDEwMCw5NCwxMDAsMzMsMTAwLDM0LDE1NiwxLDEwMCwzNSwxMDAsMzYsMTMyLDMsCisgICAgOTAsMjgsMTAwLDM3LDEwMCwzOCwxMzIsMCw5MCwyOSwxMDAsMzksMTAwLDQwLDEzMiwwLAorICAgIDkwLDMwLDEwMCw0MSwxMDAsNDIsMTMyLDAsOTAsMzEsMTAwLDQzLDEwMCw0NCwxMzIsMCwKKyAgICA5MCwzMiwxMDAsNDUsMTAwLDQ2LDEzMiwwLDkwLDMzLDEwMCw0NywxMDAsNDgsMTMyLDAsCisgICAgOTAsMzQsMTAwLDk1LDEwMCw0OSwxMDAsNTAsMTMyLDEsOTAsMzUsMTAwLDk2LDEwMCw1MSwKKyAgICAxMDAsNTIsMTMyLDEsOTAsMzYsMTAwLDk3LDEwMCw1NCwxMDAsNTUsMTMyLDEsOTAsMzcsCisgICAgMTAwLDU2LDEwMCw1NywxMzIsMCw5MCwzOCwxMDEsMzksMTMxLDAsOTAsNDAsMTAwLDk4LAorICAgIDEwMCwzMywxMDEsNDAsMTAwLDU4LDE1NiwyLDEwMCw1OSwxMDAsNjAsMTMyLDMsOTAsNDEsCisgICAgNzEsMCwxMDAsNjEsMTAwLDYyLDEzMiwwLDEwMCw2MiwxMzEsMiw5MCw0Miw3MSwwLAorICAgIDEwMCw2MywxMDAsNjQsMTMyLDAsMTAwLDY0LDEzMSwyLDkwLDQzLDcxLDAsMTAwLDY1LAorICAgIDEwMCw2NiwxMzIsMCwxMDAsNjYsMTAxLDQzLDEzMSwzLDkwLDQ0LDcxLDAsMTAwLDY3LAorICAgIDEwMCw2OCwxMzIsMCwxMDAsNjgsMTMxLDIsOTAsNDUsNzEsMCwxMDAsNjksMTAwLDcwLAorICAgIDEzMiwwLDEwMCw3MCwxMDEsNDUsMTAxLDQ0LDEzMSw0LDkwLDQ2LDcxLDAsMTAwLDcxLAorICAgIDEwMCw3MiwxMzIsMCwxMDAsNzIsMTAxLDQ1LDEwMSw0MywxMzEsNCw5MCw0NywxMDMsMCwKKyAgICA5MCw0OCw3MSwwLDEwMCw3MywxMDAsNzQsMTMyLDAsMTAwLDc0LDEwMSw0NSwxMDEsNDMsCisgICAgMTMxLDQsOTAsNDksNzEsMCwxMDAsNzUsMTAwLDc2LDEzMiwwLDEwMCw3NiwxMzEsMiwKKyAgICA5MCw1MCw3MSwwLDEwMCw3NywxMDAsNzgsMTMyLDAsMTAwLDc4LDEzMSwyLDkwLDUxLAorICAgIDcxLDAsMTAwLDc5LDEwMCw4MCwxMzIsMCwxMDAsODAsMTMxLDIsOTAsNTIsNzEsMCwKKyAgICAxMDAsODEsMTAwLDgyLDEzMiwwLDEwMCw4MiwxMzEsMiw5MCw1MywxMDAsOTksMTAwLDgzLAorICAgIDEwMCw4NCwxMzIsMSw5MCw1NCwxMDAsODUsMTAwLDg2LDEzMiwwLDkwLDU1LDEwMCw4NywKKyAgICAxMDAsODgsMTMyLDAsOTAsNTYsMTAwLDg5LDEwMCw5MCwxMzIsMCw5MCw1NywxMDAsMzMsCisgICAgODMsMCw0MSwxMDAsOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwKKyAgICAxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwKKyAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsCisgICAgMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiwKKyAgICA3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwKKyAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwKKyAgICAxMDMsMTE5LDEwNSwxMTAsMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDYwLDAsMCwwLDExNiwwLDEwNiwxLDEwNiwyLDExNiwzLDEzMSwxLAorICAgIDExNCw0OCwxMTYsMCwxMDYsMSwxMDYsMiwxMTYsNCwxMzEsMSwxMTQsMzAsMTAwLDEsCisgICAgMTM3LDAsMTEwLDQsMTAwLDIsMTM3LDAsMTM1LDAsMTAyLDEsMTAwLDMsMTAwLDQsCisgICAgMTMyLDgsMTI1LDAsMTEwLDgsMTAwLDUsMTAwLDQsMTMyLDAsMTI1LDAsMTI0LDAsCisgICAgODMsMCw0MSw2LDc4LDkwLDEyLDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLAorICAgIDY5LDc5LDc1LDExNSwxMiwwLDAsMCw4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSwKKyAgICA4Myw2OSw3OSw3NSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMCwwLDAsMCwxMzYsMCwKKyAgICAxMTYsMCwxMDYsMSwxMDcsNiw4MywwLDQxLDEsMTIyLDUzLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LAorICAgIDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsCisgICAgMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsCisgICAgNDYsNDEsMiwyMTgsMyw5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsCisgICAgMTEwLDE2OSwwLDQxLDEsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMjUwLAorICAgIDM4LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAorICAgIDk5LDk3LDExNSwxMDEsMzcsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKKyAgICAzNyw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAorICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsCisgICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsCisgICAgMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDcsMCwwLDAsNDEsMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwyLDQxLDUsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsCisgICAgMTEyLDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LAorICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCisgICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCisgICAgODMsMjE4LDM1LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLAorICAgIDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDgzLAorICAgIDg0LDgyLDk1LDc1LDY5LDg5LDQxLDEsMTE0LDcsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsCisgICAgOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsCisgICAgMzAsMCwwLDAsMTE1LDE0LDAsMCwwLDAsMSwxMiwxLDEyLDEsNiwKKyAgICAyLDQsMiwxNCw0LDgsMywxMTQsMTMsMCwwLDAsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSwyLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LAotICAgIDExNSwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MSwxLDExNCw0NSwwLAotICAgIDAsMCw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTQsMCwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDExNCw0NiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMSwwLDAsMCwKLSAgICAxMjQsMCwwLDExNSwxOCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwKLSAgICAwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwKLSAgICAyLDEyMiwzMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCwKLSAgICA0NiwxMDUsMCw2NCwwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsCi0gICAgMTAxLDExNiw5OSwxMTksMTAwLDExNCw0NSwwLDAsMCw0MSwxLDExNCwzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5OSwwLDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDIsNiwxLDEyLDEsMTE0LDQ4LDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwKLSAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMzEsMiwwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLAotICAgIDAsMTE2LDIsMCwxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwKLSAgICAwLDEwNiw2LDAsNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LAotICAgIDQsMCwxMjEsNjEsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywKLSAgICAwLDEzMSwyLDAsMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEsODcsMTAwLDQsMCw4MSw4Miw4OCwxMTYsMiwKLSAgICAwLDEwNiwxMCwwLDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLAotICAgIDU5LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTg4LDAsMSwxLDEsMTIxLAotICAgIDE3LDAsMTE2LDIsMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywKLSAgICAxMTAsMTgsMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODAsMCwxLDEsMSwKLSAgICA4OSwxMTAsMSwwLDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLAotICAgIDgzLDQxLDUsMTIyLDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwKLSAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwKLSAgICAxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLAotICAgIDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLAotICAgIDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwKLSAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsCi0gICAgMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwKLSAgICAxLDAsMCw5MCwyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksCi0gICAgOTcsMTE2LDIxOCwyLDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwKLSAgICAxMTAsOTAsNiw3OSw5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LAotICAgIDY1LDg0LDkwLDgsNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LAotICAgIDExMSwyMTgsNiw3MCwxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLAotICAgIDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQyLDAsMCwwLDkwLDYsCi0gICAgMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsNDEsNiwxMTQsMzcsMCwwLDAsMjE4LDQsMTAwLAotICAgIDk3LDExNiw5NywxMTQsNDQsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCi0gICAgMTA5LDExMiw5MCwyLDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LAotICAgIDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwxMDYsMCwwLDAsMTE1LDI2LAotICAgIDAsMCwwLDAsNSwyNCwxLDksMSwzMywxLDMsMywyMSwxLDIwLAotICAgIDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLDEsNSwxLDExNCw1NywwLAotICAgIDAsMCwxMDUsMjMsMTMsMCwwLDIzMywyLDAsMCwwLDExNCwxNSwwLDAsCi0gICAgMCwxMTUsMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsOTUsMTIyLDQsMTExLDExMiwxMTYsNDUsMTIyLDMsNDYsMTEyLDEyMSwKLSAgICAxMjIsNCw0NiwxMTIsMTIxLDk5LDc4LDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCisgICAgMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTAwLDEsNjQsMCwKKyAgICAxMDYsMSwxMDAsMiwxMDAsMywxMzEsMiw4MywwLDQxLDQsMTIyLDQyLDY3LDExMSwKKyAgICAxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LAorICAgIDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwKKyAgICAxMjcsMywwLDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0NywwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEwMCwxLAorICAgIDEzMSwyLDgzLDAsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsCisgICAgNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwKKyAgICAxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsCisgICAgMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDE1LDAsMCwwLDQxLDIsMTE0LDE2LAorICAgIDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLAorICAgIDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE0LDk1LAorICAgIDEwOCwxMTEsMTEwLDEwMyw1MiwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LAorICAgIDIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDIwLDAsMCwwLDExNiwwLAorICAgIDEwNiwxLDEwMCwxLDEwMCwyLDEzMiwwLDEyNCwwLDY4LDAsMTMxLDEsMTMxLDEsCisgICAgODMsMCw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwKKyAgICAxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsODMsMCwwLDAsMTE1LDI2LDAsMCwwLDEwMywKKyAgICAwLDEyNCwwLDkzLDE4LDEyNSwxLDEyNCwxLDExNCw0LDEyNCwxLDEwNiwwLDExNiwKKyAgICAxLDEzMSwxLDE0NSwyLDExMyw0LDgzLDAsMTE0LDQsMCwwLDAsNDEsMiwKKyAgICAyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LDQ4LDIxOCwKKyAgICA0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsCisgICAgNTksMCwwLDAsMTE1LDIsMCwwLDAsNiwxLDEyMiwzMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCw4LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwxLDIxOCwKKyAgICAxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1NywwLDAsMCwxMTUsNCwwLDAsMCwwLAorICAgIDIsMTAsMSwxMTQsMzAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsOTYsMCwKKyAgICAwLDAsMTE2LDAsMTE2LDEsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDM2LDEyNCwwLAorICAgIDEwNiwyLDExNiwzLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LDEsCisgICAgMTI0LDMsMTAyLDIsODMsMCwxMjAsNTAsMTE2LDQsMTI0LDAsMTMxLDEsNjgsMCwKKyAgICA5MywzOCwxMjUsNCwxMjQsNCwxMTYsMSwxMDcsNiwxMTQsNDYsMTI0LDAsMTA2LDUsCisgICAgMTI0LDQsMTAwLDEsMTAwLDIsMTQxLDIsOTIsMiwxMjUsMSwxMjUsMywxMjQsMSwKKyAgICAxMjQsMywxMDIsMiw4MywwLDExMyw0Niw4NywwLDEwMCwzLDEyNCwwLDEwMiwyLAorICAgIDgzLDAsNDEsNCwxMjIsMzIsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsCisgICAgMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsMCwwLDAsNDEsMSw5MCw4LDEwOSwKKyAgICA5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwxMDEsMTEwLAorICAgIDExNCwyMywwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE0LDI3LDAsMCwwLDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsCisgICAgMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LDEwNSwxMDgsCisgICAgMTE0LDE4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsCisgICAgMTE2LDYzLDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTIsMSwxNiwxLAorICAgIDgsMSwxNCwxLDgsMSwxOCwxLDEyLDEsMTE0LDQwLDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDgzLDAsNDEsMSwxMjIsMTI2LDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiwKKyAgICA5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSwKKyAgICA5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCisgICAgMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDQxLDIsMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LAorICAgIDk3LDExNiw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExNiw5NywxMTYsNzUsMCwwLDAsMTE1LDIsMCwwLDAsMCw3LDExNCwKKyAgICA0MSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNDgsMCwwLDAsMTIxLDEyLAorICAgIDExNiwwLDEyNCwwLDEzMSwxLDEyNSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwKKyAgICAxMDcsMTAsMTE0LDMyLDEsMCwxLDAsMSwwLDEwMCwxLDgzLDAsODgsMCwKKyAgICAxMjQsMiwxMDYsMiwxMDAsMiw2NCwwLDEyNCwxLDEwNywyLDgzLDAsNDEsMywKKyAgICAxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsCisgICAgMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCwKKyAgICA5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwwLDIsMiwxLDEyLDEsMTQsMSw2LDEsCisgICAgMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzEsODIsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLAorICAgIDAsNDEsMSwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk0LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiwxMTQsNDYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMTI0LDAsMTE1LDEyLDExNiwwLDEwNiwxLDEzMSwwLAorICAgIDEyNSwwLDExNiwyLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzAsCisgICAgODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsCisgICAgNjQsMCwwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLDEwMSwxMTYsOTksCisgICAgMTE5LDEwMCwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTksMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwyLDQsMSw4LDEsMTE0LDQ4LDAsMCwwLDIzMywxODIsCisgICAgMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsCisgICAgMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE2MiwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMTYsMSwxMjQsMCwxMzEsMSwxMzEsMiwxMjUsMywxMTYsMiwxMDYsCisgICAgMywxMjQsMywxMTYsMiwxMDYsNCwxMTYsMiwxMDYsNSw2NiwwLDExNiwyLDEwNiwKKyAgICA2LDY2LDAsMTI0LDIsMTAwLDIsNjQsMCwxMzEsMywxMjUsNCwxMjEsNTAsMTE2LAorICAgIDcsMTA2LDgsMTI0LDQsMTAwLDMsMTMxLDIsMTQzLDE2LDEyNSw1LDEyNCw1LDEwNiwKKyAgICA5LDEyNCwxLDEzMSwxLDEsMCw4NywwLDEwMCw0LDgxLDAsODIsMCw4OCwKKyAgICAwLDExNiwyLDEwNiwxMCwxMjQsMywxMjQsMCwxMzEsMiwxLDAsODcsMCwxMTAsCisgICAgNTgsNCwwLDExNiwxMSwxMDcsMTAsMTE0LDE1NiwxLDAsMSwwLDEsMCwxMjEsCisgICAgMTQsMTE2LDIsMTA2LDEyLDEyNCwzLDEzMSwxLDEsMCw4NywwLDExMCwyMCw0LAorICAgIDAsMTE2LDExLDEwNywxMCwxMTQsMTQ4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDIsODgsMCwxMzAsMCw4OSwwLDExMCwyLDg4LDAsMTAwLDQsODMsMCw0MSwKKyAgICA1LDEyMiwxNjIsNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLAorICAgIDY2LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsCisgICAgOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LAorICAgIDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsCisgICAgMTE0LDExNCwxMDEsMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywKKyAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwKKyAgICAxMTIsMTE2LDEwMSwxMDAsNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsOTAsMiwxMTksOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwKKyAgICAyMTgsMiwxMDUsMTAwLDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsMTEwLDkwLAorICAgIDYsNzksOTUsNjksODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwKKyAgICA5MCw4LDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwxMTEsMjE4LAorICAgIDYsNzAsMTA1LDEwOCwxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwyMTgsNywKKyAgICAxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDExNCw0MiwwLDAsMCw5MCw2LDExNywxMTAsCisgICAgMTA4LDEwNSwxMTAsMTA3LDQxLDYsMTE0LDM3LDAsMCwwLDIxOCw0LDEwMCw5NywxMTYsCisgICAgOTcsMTE0LDQ0LDAsMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LDEwOSwxMTIsCisgICAgOTAsMiwxMDIsMTAwLDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTA2LDAsMCwwLDExNSwyNiwwLDAsCisgICAgMCwwLDUsMTYsMSw2LDEsMjYsMSwyLDMsMTQsMSwyMCwxLDE2LAorICAgIDEsMTQsMSwyLDEsMTQsMSwxNCwxLDYsMSwxMTQsNTgsMCwwLDAsCisgICAgMTA1LDUwLDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsCisgICAgNDYsMTEyLDEyMSw5OSw3OCw0MSwxLDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCiAgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMSwwLDAsMCwxMSwwLAotICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSw4NywxLDAsMCwxMjQsCi0gICAgMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNzYsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMTYsMiwwLDEzMSwyLDAsMSwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsNTgsMCwxMDAsMywwLDEyNSwzLDAsMTE2LDMsMCwKLSAgICAxMjQsMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDExNCw3MCwwLDEwMCwKLSAgICA0LDAsMTEwLDMsMCwxMDAsNSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMjQsNSwwLAotICAgIDEwNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNiwwLDEyNSwKLSAgICA3LDAsMTI1LDgsMCwxMTYsNiwwLDEwNiw3LDAsMTA2LDgsMCwxMjUsOSwKLSAgICAwLDEyNCw5LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxNTQsMCwxMTYsOSwwLAotICAgIDEwMCw3LDAsMTMxLDEsMCwxMzAsMSwwLDEwMCw0LDAsMTA2LDEwLDAsMTI0LAotICAgIDYsMCwxMTQsMTcyLDAsMTI0LDYsMCwxMTAsMywwLDEyNCw4LDAsMTI0LDcsCi0gICAgMCwxMjQsOSwwLDEwMywzLDAsMTMxLDEsMCwxMjUsMTAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTA3LDgsMCwxMTQsMjQxLDAsMTE2LDYsMCwxMDYsMTEsMCwxMDYsCi0gICAgMTIsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDIyOSwwLDEwMCw0LDAsMTI1LDIsCi0gICAgMCwxMTAsMTIsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwxMiwwLDEyNSwyLDAsCi0gICAgMTE2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEwNywzLDAsMTE0LDYzLDEsMTI0LDIsMCwxMDYsMTQsMCwxMzEsMCwKLSAgICAwLDExNSw0MiwxLDExNiwxNSwwLDEwMCw5LDAsMTA2LDE2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsMTAsMCwxMDYsMTYsMCwxMjQsCi0gICAgMTAsMCwxMTYsMTcsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDEwLDAsMTE2LDE4LAotICAgIDAsMTI0LDQsMCwxMTYsMTksMCwxMjQsMTAsMCwxMTYsMjAsMCwxMDAsOCwwLAotICAgIDI1LDIzLDEzMSwzLDAsODMsNDEsMTEsOTcsMjU0LDIsMCwwLDcxLDEwNSwxMTgsCi0gICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwKLSAgICAxMTUsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLAotICAgIDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCi0gICAgMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLAotICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExMiw5NywKLSAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTEwLDExNiwxMTQsMTExLDEwOCwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMDEsMTE1LDExNywxMDksMTAxLDEwMCwzMiwxMTEsMTEyLAotICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsCi0gICAgMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LAotICAgIDExNCwxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTYsOTcsMTA3LDEwMSwxMTAsCi0gICAgMzIsOTcsMTEwLDEwMCwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LAotICAgIDMyLDQwLDEwMSwxMDgsMTE1LDEwMSwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLAotICAgIDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAotICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSwKLSAgICA0NCwxMCwzMiwzMiwzMiwzMiw5NywzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMTgsOTcsMTA4LAotICAgIDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsOTcsMTA5LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCi0gICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLAotICAgIDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsOTcsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLAotICAgIDExMCwxMTYsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLAotICAgIDM5LDQ5LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwKLSAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDcwLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAotICAgIDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNTksMzIsMTE3LDExNSwxMDEsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTEwLDExNSwKLSAgICAxMTYsMTAxLDk3LDEwMCwxMjIsNTAsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTExLDExNCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsCi0gICAgMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMTQsMzIsMCwwLDAsMTE0LDMxLDAsCi0gICAgMCwwLDIxOCwxLDQ2LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMjMzLDAsMCwwLDAsCi0gICAgMTIyLDI0LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LAotICAgIDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMTIyLDcsMTIzLDEyNSw0NiwxMjMsCi0gICAgMTI1LDEyMywxMjUsNDEsMjEsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAotICAgIDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMjE4LDksODQsMTIxLDExMiwxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MCwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LAotICAgIDgsMCwwLDAsMjE4LDE0LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwyMTgsOSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMjE4LAotICAgIDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsMjgsMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LAotICAgIDIxOCw4LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LAotICAgIDcsMTA1LDExNSw5NywxMDgsMTEwLDExNywxMDksMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsNDksMCwwLDAsMjE4LDQsOTUsNzksODAsODQsMTE0LAotICAgIDMwLDAsMCwwLDIxOCw4LDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDIxOCwxNywKLSAgICA2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKLSAgICA4Myw0MSwxMSwxMTQsMzcsMCwwLDAsOTAsMTQsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LAotICAgIDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMTE0LDU5LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIxOCw0LDEwNCwxMDEsOTcsMTAwLDExNCwzOSwwLDAsCi0gICAgMCw5MCw0LDk4LDk3LDExNSwxMDEsMjE4LDMsMTE1LDEwMSwxMTIsMjE4LDQsMTE0LDEwMSwKLSAgICAxMTUsMTE2LDkwLDMsMTE2LDk3LDEwMyw5MCwxNSw5NywxMDgsMTA5LDExMSwxMTUsMTE2LDk1LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsCi0gICAgMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNTQsMCwwLDAsMTE1LDQ2LAotICAgIDAsMCwwLDAsMTgsMTIsMSw5LDEsNywxLDEyLDEsNiwxLDEyLAotICAgIDEsMTgsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDEyLDEsMzYsMSwxMiwKLSAgICAxLDE4LDEsOSwyLDEyLDEsMTIsMSwxMiwxLDEyLDEsMjEsMSwyMSwKLSAgICAxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsOCwKLSAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw2MiwxLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAotICAgIDMwLDAsMTE2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLAotICAgIDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwKLSAgICAzLDAsMTI0LDMsMCwxMTYsNSwwLDEwNywzLDAsMTE0LDEwMiwwLDExNiw2LAotICAgIDAsMTAwLDMsMCwxMDYsNywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMiwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiw4LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMTEsMCwxMDcsNywwLDExNCwxNTMsCi0gICAgMCwxMTYsNiwwLDEwMCw3LDAsMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExMCwxMjUsMCwxMjQsNCwwLDEwMCw2LDAsMTA3LAotICAgIDIsMCwxMTQsMjIsMSwxMjQsMiwwLDEwNiw5LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMSwyLDAsMTAwLDEyLDAsMjUsMTI1LDUsMCwxMjQsNSwwLDEwNiwxMCwKLSAgICAwLDExNiwxMSwwLDEzMSwxLDAsMTE1LDIyMywwLDExNiw2LDAsMTAwLDgsMCwKLSAgICAxMDYsNywwLDExNiwxMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwKLSAgICA1LDAsMTE2LDEyLDAsMTE2LDExLDAsMTMxLDEsMCwxMDAsMSwwLDEzMywyLAotICAgIDAsMjUsMTI1LDYsMCwxMjQsNiwwLDEwNiwxMywwLDEzMSwwLDAsMTE1LDIyLAotICAgIDEsMTE2LDYsMCwxMDAsOSwwLDEwNiw3LDAsMTI0LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiwxNCwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMDAsMTAsMCwyNSwxMjUsNywwLDExNiwxNSwwLDEyNCwxLDAsMTI0LAotICAgIDcsMCwxMTYsMTYsMCwxMDAsMTAsMCwyNSwyMywxMzEsMiwwLDgzLDQxLDEzLAotICAgIDk3LDExMCwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsNTksCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTAyLDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksCi0gICAgODAsMzIsNTEsNDksNTIsNTUsNDcsNTIsNTYsNTYsMzIsMTAyLDExMSwxMTQsMTA5LDk3LAotICAgIDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNSwKLSAgICAxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDMyLDczLDEwMiwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCi0gICAgMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LAotICAgIDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiwKLSAgICA5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwxMjIsMzcsMTIzLDEyNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMTEsMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsCi0gICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMjMzLDMsMCwwLDAsCi0gICAgMTIyLDMzLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsCi0gICAgNTAsMzIsMTExLDExNCwzMiw1MSwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMjIsNTcsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwKLSAgICAxMTYsOTcsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDUyLAotICAgIDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDExMCwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTgsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDYxLDAsMCwwLDYyLDIsMCwwLDAsMTE0LDU4LAotICAgIDAsMCwwLDExNCw4MiwwLDAsMCwyMzMsMjU0LDI1NSwyNTUsMjU1LDQxLDE3LDExNCwKLSAgICA4LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDY4LAotICAgIDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDExNCw0OSwwLDAsMCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDM2LAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDExNCw3MiwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNCwzMCwwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsCi0gICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsOCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsCi0gICAgOSwxMDAsMTExLDExNiw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDU5LDAsMCwwLDkwLAotICAgIDksMTExLDExMiwxMTYsOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLAotICAgIDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw0MiwxLDAsMCwxMTUsCi0gICAgNDQsMCwwLDAsMCw5LDE4LDEsMTIsMSwxOCwxLDE4LDEsMTIsMSwKLSAgICA5LDEsMTUsMSwxNSwxLDEyLDEsOSwxLDE1LDEsMTIsMSwyMiwxLAotICAgIDE1LDEsOSwxLDEyLDEsMjIsMSwxMiwxLDksMSwxMiwxLDE5LDEsCi0gICAgMTE0LDg3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwKLSAgICAwLDEwMCwyLDAsODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsCi0gICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsCi0gICAgMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwKLSAgICAxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwKLSAgICAxMDAsOSwwLDEzMywyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA2LDAsMTI0LDQsMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwKLSAgICAwLDAsODMsNDEsMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsCi0gICAgMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LAotICAgIDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwKLSAgICAxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwKLSAgICAzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLAotICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE0LDYxLDAsMCwwLDc4LDExNCw2MCwwLDAsMCwxMTQsODIsCi0gICAgMCwwLDAsMTE0LDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsCi0gICAgMjU1LDIzMywyNTUsMjU1LDI1NSwyNTUsMTE0LDg5LDAsMCwwLDQxLDcsMTE0LDMzLDAsCi0gICAgMCwwLDExNCwzNCwwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4NywKLSAgICAwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCw0MSw1LDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCwxMTQsODAsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsMTAyLDEwNSwxMDgsMTAxLDc1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsCi0gICAgMTgsMSw0LDEsMjQsMSwzNSwxLDQsMSwzLDEsMTYsMSwxOSwxLAotICAgIDIxLDEsMTE0LDkzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw5MiwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMTYsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMTQsNTksMCwxMjEsMTQsMCwxMTYsMywwLDEyNCwwLDAsMTMxLAotICAgIDEsMCw4Myw4NywxMTMsODgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU1LAotICAgIDAsMSwxLDEsODksMTEzLDg4LDAsODgsMTEwLDI5LDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTE2LDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDg0LAotICAgIDAsMTI0LDAsMCw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywKLSAgICAxMTIsMTA4LDEwMSwxMTQsODYsMCwwLDAsMTE0LDgxLDAsMCwwLDExNCw2OCwwLAotICAgIDAsMCwxMTQsNzYsMCwwLDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk0LAotICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMjEsMSwzLDEsMTQsMSwKLSAgICAxMywxLDgsMSwyMSwxLDQsMiwxMTQsOTcsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDYwLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEwNiwxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwxMjUsMSwwLAotICAgIDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwxLDAsMTI0LAotICAgIDEsMCw4Myw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAorICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwwLDAsMTI0LAorICAgIDEsMTAwLDEsMTA3LDksMTE0LDUyLDExNiwwLDEwNiwxLDEwMCwyLDExNiwyLDEzMSwKKyAgICAyLDEsMCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsNDAsMTAwLDMsMTI1LDMsMTE2LAorICAgIDMsMTI0LDMsMTMxLDEsMTMwLDEsMTI0LDEsMTE0LDQ4LDEwMCw0LDExMCwyLDEwMCwKKyAgICA1LDEyNSwyLDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEyNSwwLDExNiw2LDEyNCwKKyAgICAwLDEzMSwxLDkyLDIsMTI1LDQsMTI1LDUsMTI0LDUsMTA2LDcsMTAwLDYsMTMxLAorICAgIDEsOTIsMywxMjUsNiwxMjUsNywxMjUsOCwxMTYsOCwxMDYsOSwxMDYsMTAsMTI1LAorICAgIDksMTI0LDksMTAwLDEsMTA3LDgsMTE0LDExNCwxMTYsMTEsMTAwLDcsMTMxLDEsMTMwLAorICAgIDEsMTAwLDQsMTA2LDEyLDEyNCw2LDExNCwxMjYsMTI0LDYsMTEwLDIsMTI0LDgsMTI0LAorICAgIDcsMTI0LDksMTAzLDMsMTMxLDEsMTI1LDEwLDEyNCwyLDEwMCwxLDEwNyw4LDExNCwKKyAgICAxNzIsMTE2LDgsMTA2LDEzLDEwNiwxNCwxMDAsOCwxMDcsMiwxMTQsMTY0LDEwMCw0LDEyNSwKKyAgICAyLDExMCw4LDExNiw4LDEwNiwxMywxMDYsMTQsMTI1LDIsMTE2LDE1LDEyNCwyLDEzMSwKKyAgICAxLDEyNSwyLDEyNCwyLDEwMCw0LDEwNywzLDExNCwyMjQsMTI0LDIsMTA2LDE2LDEzMSwKKyAgICAwLDExNSwyMTAsMTE2LDE3LDEwMCw5LDEwNiwxOCwxMjQsMiwxMzEsMSwxMzEsMSwxMzAsCisgICAgMSwxMDAsMTAsMTA2LDE4LDEyNCwxMCwxMTYsMTksMTI0LDIsMTMxLDMsMTI1LDEwLDExNiwKKyAgICAyMCwxMjQsNCwxMTYsMjEsMTI0LDEwLDExNiwyMiwxMDAsOCwyNSwwLDIzLDAsMTMxLAorICAgIDMsODMsMCw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLAorICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwKKyAgICAxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwKKyAgICAxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLDk5LAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDExMSwxMTIsMTE2LAorICAgIDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LDExNCw5NywxMDksCisgICAgMTAxLDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTEsMTAyLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExNCwxMDMsMTE3LAorICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywxMTAsCisgICAgMTAwLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsCisgICAgMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsNDAsMTAxLAorICAgIDEwOCwxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwKKyAgICAxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsCisgICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDEwLDMyLAorICAgIDMyLDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LDExNSwzMiwxMTUsCisgICAgMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LAorICAgIDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMDksMTEyLAorICAgIDExNiwxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNCwKKyAgICAxMDUsMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTYsMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMzksNDksMzksCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LAorICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCisgICAgMTAwLDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDExNCwzMiwwLDAsMCwxMTQsMzEsMCwwLDAsMjE4LAorICAgIDEsNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwxMjIsMjQsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTEyLDEwNCw5NywKKyAgICAxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywxMjUsMTIzLDEyNSwKKyAgICA0MSwyMywyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LAorICAgIDk3LDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDMsMCwwLDAsMjE4LDYsMTAyLDExNSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNDAsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxNCwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMjE4LDksCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDI4LAorICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw3LDEwNSwxMTUsOTcsMTA4LDExMCwKKyAgICAxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLAorICAgIDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwzMCwwLDAsMCwyMTgsOCwKKyAgICA5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsNjYsODksODQsNjksNjcsNzksCisgICAgNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMTEsMTE0LDM3LDAsCisgICAgMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwKKyAgICAxMDAsMTAxLDExNCw2MCwwLDAsMCwyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKKyAgICAyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzksMCwwLDAsOTAsNCw5OCw5NywxMTUsCisgICAgMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLDExNiw5NywKKyAgICAxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNiwxLDAsMCwxMTUsNDgsMCwwLDAsMCwxOCw4LAorICAgIDEsNiwxLDYsMSw4LDEsNCwxLDgsMSwxMiwxLDEwLDEsMTIsCisgICAgMSwxNiwxLDgsMSw4LDEsOCwxLDI0LDEsOCwxLDEyLDEsNiwKKyAgICAyLDgsMSw4LDEsOCwxLDgsMSwxNCwxLDE0LDEsMTE0LDgzLDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIzMCwwLDAsMCwxMTYsMCwxMDYsMSwKKyAgICAxMDYsMiwxMDAsMSwxMDcsOCwxMTQsMjAsMTE2LDMsMTAwLDIsMTMxLDEsMTMwLDEsCisgICAgMTE2LDQsMTA2LDUsMTI0LDAsMTMxLDEsMTI1LDAsMTE2LDYsMTI0LDAsMTMxLDEsCisgICAgOTIsMiwxMjUsMSwxMjUsMiwxMTYsNiwxMjQsMSwxMzEsMSw5MiwyLDEyNSwxLAorICAgIDEyNSwzLDEyNCwzLDExNiw3LDEwNywzLDExNCw3OCwxMTYsOCwxMDAsMywxMDYsOSwKKyAgICAxMTYsNywxMjQsMCwxMzEsMiwxMzEsMSwxMzAsMSwxMjQsMiwxMDYsMTAsMTAwLDQsCisgICAgMTMxLDEsMTI1LDQsMTI0LDQsMTAwLDExLDEwNyw3LDExNCwxMTIsMTE2LDgsMTAwLDcsCisgICAgMTA2LDksMTI0LDIsMTMxLDEsMTMxLDEsMTMwLDEsMTEwLDg2LDEyNCw0LDEwMCw2LAorICAgIDEwNywyLDExNCwxOTgsMTI0LDIsMTA2LDExLDEwMCw0LDEwMCw1LDEzMSwyLDEwMCwxMiwKKyAgICAyNSwwLDEyNSw1LDEyNCw1LDEwNiwxMiwxMTYsMTMsMTMxLDEsMTE1LDE2MCwxMTYsOCwKKyAgICAxMDAsOCwxMDYsOSwxMTYsMTMsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDUsMTE2LDE0LAorICAgIDExNiwxMywxMzEsMSwxMDAsMSwxMzMsMiwyNSwwLDEyNSw2LDEyNCw2LDEwNiwxNSwKKyAgICAxMzEsMCwxMTUsMTk4LDExNiw4LDEwMCw5LDEwNiw5LDEyNCw1LDEzMSwxLDEzMSwxLAorICAgIDEzMCwxLDEyNCwyLDEwNiwxNiwxMDAsNCwxMzEsMSwxMDAsMTAsMjUsMCwxMjUsNywKKyAgICAxMTYsMTcsMTI0LDEsMTI0LDcsMTE2LDE4LDEwMCwxMCwyNSwwLDIzLDAsMTMxLDIsCisgICAgODMsMCw0MSwxMyw5NywxMTAsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0NiwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLAorICAgIDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsCisgICAgMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNjEsMCwwLDAsMTE0LDU5LDAsMCwwLDIzMywKKyAgICAzLDAsMCwwLDEyMiwzMywxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwxMDgsMTIxLDMyLDUwLDMyLDExMSwxMTQsMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLAorICAgIDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiwxMTUsMTE2LDk3LDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDEyMiw1MiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywxMTAsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwKKyAgICAxMDUsOTksMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCw2MiwwLDAsMCw2MiwyLDAsCisgICAgMCwwLDExNCw1OSwwLDAsMCwxMTQsODQsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LAorICAgIDI1NSw0MSwxOSwxMTQsOCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDY5LDAsCisgICAgMCwwLDExNCw3MCwwLDAsMCwxMTQsMywwLDAsMCwxMTQsNjcsMCwwLAorICAgIDAsMTE0LDQwLDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDUwLDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzYsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCw3NiwwLDAsMCwxMTQsMzMsMCwwLDAsCisgICAgMTE0LDc0LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE0LDMwLDAsMCwwLDIxOCwxNSw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSwKKyAgICA3MCw3MCw3Myw4OCw2OSw4Myw0MSw4LDExNCwzNywwLDAsMCwxMTQsODAsMCwKKyAgICAwLDAsOTAsMTYsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCw3LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCw5LDEwMCwKKyAgICAxMTEsMTE2LDk1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsNjAsMCwwLDAsOTAsOSwxMTEsCisgICAgMTEyLDExNiw5NSwxMDgsMTAxLDExOCwxMDEsMTA4LDkwLDEzLDk4LDk3LDExNSwxMDEsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxNywxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwKKyAgICAxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDUxLDEsMCwwLDExNSw0NiwwLAorICAgIDAsMCwwLDksMTIsMSw4LDEsMTAsMSwxMiwxLDEyLDEsOCwxLAorICAgIDYsMSwxMCwxLDEwLDEsOCwxLDYsMSwxMCwxLDgsMSwxNiwxLAorICAgIDEwLDEsNiwxLDgsMSwxNiwxLDgsMSw2LDEsOCwxLDE0LDEsCisgICAgMTE0LDg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCisgICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxMjgsMCwwLDAsMTE2LAorICAgIDAsMTI0LDAsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDE2LDEwMCwyLDgzLDAsMTI0LAorICAgIDAsMTA2LDEsMTAwLDMsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsCisgICAgMSwxMiwwLDExNSw1OCwxMjQsMywxMDYsMiwxMzEsMCwxMDAsNywxMDAsOCwxMzMsCisgICAgMiwyNSwwLDEwMCw2LDEwNywzLDExNCw2MiwxMjQsMCw4MywwLDEyMSwxMiwxMTYsCisgICAgMywxMjQsMCwxMzEsMSwxMjUsNCw4NywwLDExMCwzNiw0LDAsMTE2LDQsMTE2LAorICAgIDUsMTAyLDIsMTA3LDEwLDExNCwxMTAsMSwwLDEsMCwxLDAsMTI0LDAsMTAwLAorICAgIDIsMTAwLDksMTMzLDIsMjUsMCwxMjUsNCw4OSwwLDExMCwyLDg4LDAsMTE2LAorICAgIDYsMTI0LDQsMTMxLDEsMTE0LDEyNCwxMjQsNCw4MywwLDEyNCwwLDgzLDAsNDEsCisgICAgMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDYyLDAsMCwwLDc4LDExNCw2MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LAorICAgIDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LAorICAgIDI1NSwyNTUsMTE0LDkxLDAsMCwwLDQxLDcsMTE0LDMzLDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4OSwwLDAsMCwxMTQsCisgICAgNzAsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0NiwwLDAsMCw0MSw1LAorICAgIDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDg1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsMTIsMSw0LDEsCisgICAgMTYsMSwyNiwxLDQsMSwyLDEsMTIsMSwxOCwxLDE4LDEsMTE0LDk1LAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDExLDAsMCwwLDY3LDAsMCwwLDExNSw3MiwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMTYsMSwxMTYsMiwxMzEsMSwxMzEsMSwxMTQsNDYsMTIxLDgsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsODMsMCw0LDAsMTE2LDQsMTA3LDEwLDExNCw0MiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMyw2OCw4OCwwLDExMCwyMiwxMjQsMCwxMDYsMCwxMTYsCisgICAgMSwxMTYsNSwxMzEsMSwxMzEsMSwxMTQsNjQsMTI0LDAsODMsMCwxMDAsMCw4MywKKyAgICAwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwKKyAgICAxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsODgsMCwwLDAsCisgICAgMTE0LDgzLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsNzgsMCwwLDAsNDEsCisgICAgMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDEwNCwxLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCwxLDE0LDEsMiwxLDgsMSwxNCwxLDgsMSwxNCwxLDQsMiwKKyAgICAxMTQsOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwwLDEyMSwKKyAgICAxNCwxMTYsMCwxMjQsMCwxMzEsMSwxMDYsMSwxMjUsMSw4NywwLDExMCwyNCw0LAorICAgIDAsMTE2LDIsMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCwxMDAsMSwxMjUsCisgICAgMSw4OSwwLDExMCwyLDg4LDAsMTI0LDEsMTAwLDIsNzksMCwxMjUsMSwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDUxLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsCiAgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LAogICAgIDExNSwxMDUsMTExLDExMCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsCiAgICAgOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwxODIsMSwwLDAsMjMzLAogICAgIDEyOCwwLDAsMCw0MSwzLDExNCw0MSwwLDAsMCwxMTQsNDMsMCwwLDAsCiAgICAgMTE0LDQyLDAsMCwwLDQxLDIsMTE0LDM3LDAsMCwwLDExNCw0NCwwLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsOTksOTcsMTA4LDk5LDk1LDEwOSwxMTEsMTAwLDEwMSwxMDYsMSwwLDAsCi0gICAgMTE1LDEyLDAsMCwwLDAsMiwzLDEsMTksMSwxMywxLDExLDMsMTAsCi0gICAgMSwxMTQsOTksMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LAotICAgIDEyMSwxMTQsMzEsMCwwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsCi0gICAgMCwwLDAsNCwwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCwKLSAgICA3MSwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLAotICAgIDAsMTAwLDMsMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEwNiw1LDAsMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwKLSAgICAxMDYsNiwwLDEzMSwxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLAotICAgIDExNCwxMDUsMTEwLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKLSAgICAzMiwxMTYsMTExLDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LAotICAgIDQ3LDgwLDg5LDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsCi0gICAgNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiwxMTQsNTYsMCwwLAotICAgIDAsNzgsNDEsMiwxMTQsMTAxLDAsMCwwLDExNCwxMDIsMCwwLDAsNDEsNywKLSAgICAxMTQsOCwwLDAsMCwxMTQsNjksMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCi0gICAgMTExLDExNSwxMDEsMTE0LDEwLDAsMCwwLDIxOCw1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LAotICAgIDQ5LDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDQxLDMsMTE0LDc3LAotICAgIDAsMCwwLDExNCwxMDAsMCwwLDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LAotICAgIDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExOCwKLSAgICAxLDAsMCwxMTUsOCwwLDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsCi0gICAgMTE0LDEwNywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCwxMSwwLDAsMCwzLDAsMCwwLDExNSw4NCwwLDAsMCwxMDAsCi0gICAgMSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDEsCi0gICAgMCwxMjUsMSwwLDEyMSwxMywwLDExNiwwLDAsMTA2LDEsMCwxMjUsMiwwLAotICAgIDg3LDExMCwzMCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjYsMCwxLDEsCi0gICAgMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjUsMiwwLDg5LDExMCwxLAotICAgIDAsODgsMTI0LDIsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwKLSAgICAxLDAsODMsNDEsNiwxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAotICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLAotICAgIDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LDk3LAotICAgIDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwKLSAgICAxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsCi0gICAgMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LAotICAgIDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsCi0gICAgMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsCi0gICAgMCw1LDAsMCwwLDMxLDAsMCwwLDExNSw4OSwwLDAsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTI1LDEsMCwxMTAsNDYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDcsCi0gICAgMywwLDExNCw3MCwwLDExNiwxLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTI0LDEsMCwxMDIsMiwwLDIyLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwKLSAgICAxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMjQsMywwLDE0MiwyLDAsODMsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDIxOCw0LDExMCw5NywxMDksMTAxLAotICAgIDQxLDIsMTE0LDEwOCwwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsNDEsNCwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLAotICAgIDIxOCw2LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxOSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKLSAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwxMzQsMSwwLDAsMTE1LDEyLDAsMCwwLAotICAgIDAsMSwxMiwxLDEyLDEsMTUsMSw2LDEsMjUsMSwxMjIsNDAsOTUsOTksCi0gICAgMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDYyLDQ2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDcsMCwwLDAsODMsMCwwLDAsMTE1LDkyLDAsMCwwLAotICAgIDEyMCw2NiwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTAzLAotICAgIDQsMCw2OCw5Myw0NiwwLDEyNSwyLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMTQsMTksMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDIsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEzMSwzLDAsCi0gICAgMSwxMTMsMTksMCw4NywxMjQsMCwwLDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiwzLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsNSw3OCwyMTgsCi0gICAgMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksCi0gICAgMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsNDEsNSwyMTgsNywKLSAgICAxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksCi0gICAgMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwKLSAgICAxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsMTE0LDU0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw1LDk1LDExOSwxMTQsCi0gICAgOTcsMTEyLDE0NSwxLDAsMCwxMTUsOCwwLDAsMCwwLDEsMjUsMSwxNSwKLSAgICAxLDI5LDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLAotICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LDk3LDExMiw0MSwKLSAgICAzLDIxOCwxMCw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTE0LDEyMiwwLAotICAgIDAsMCwyMTgsOSw3OCw5NywxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MSwzLDExNCwKLSAgICAxMTEsMCwwLDAsMTE0LDExMiwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDExMSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCi0gICAgMTEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTI2LDEsMCwwLAotICAgIDExNSwxNCwwLDAsMCwwLDgsMjEsNywzLDEsMTMsMSwxMywyLDE3LAotICAgIDUsMTMsMSwxMTQsMTI1LDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwKLSAgICAwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwKLSAgICAxMTQsODAsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODAsMCwxMDAsCi0gICAgMiwwLDEyNSw0LDAsMTE2LDIsMCwxMDYsMywwLDEyNCw0LDAsMTA2LDQsCi0gICAgMCwxMjQsMywwLDEwMCwzLDAsMjUsMTMxLDEsMCwxMTYsNSwwLDEzMSwyLAotICAgIDAsMSwxMjQsMiwwLDgzLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsCi0gICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMywKLSAgICA5NywxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLAotICAgIDEwNSwxMTAsMzIsMTAyLDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsCi0gICAgMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwKLSAgICAxMDUsMTE2LDk1LDk1LDExNCw2MSwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMzMsMCwwLDAsMTE0LDYyLDAsCi0gICAgMCwwLDExNCw2MywwLDAsMCwxMTQsNDksMCwwLDAsMjE4LDEzLDczLDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMyw0MSw1LDExNCwxMTAsMCwKLSAgICAwLDAsMjE4LDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDIxOCw2LDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMjE4LDgsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMywKLSAgICAxMDksMTE1LDEwMywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExNSwxMDQsMTA1LDEwOSwxNTQsMSwwLDAsMTE1LDEwLDAsMCwwLDAsMTAsCi0gICAgMjEsMSwyNCwxLDYsMSwyOSwxLDExNCwxMzIsMCwwLDAsOTksNCwwLAotICAgIDAsMCwwLDAsMCwwLDExLDAsMCwwLDE5LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwyNDAsMSwwLDAsMTA1LDAsMCwxMjUsNCwwLDEyNCwyLDAsCi0gICAgMTAwLDEsMCwxMDcsOSwwLDExNCwzMSwwLDEyNCwyLDAsMTI0LDQsMCwxMDAsCi0gICAgMiwwLDYwLDExMCw2LDAsMTAwLDMsMCwxMjUsMiwwLDEyNCwzLDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCw1OSwwLDEyNCwzLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDYwLDEyNCwwLDAsMTAwLDEsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTI1LAotICAgIDUsMCwxMjQsMCwwLDEwMCw1LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA2LDAsMTI0LDAsMCwxMDAsNiwwLDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNywwLDEyNCw1LDAsMTE2LDAsMCwxMDcsMywwLDExNCwxNjgsMCwxMDAsOCwKLSAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDgsMCwKLSAgICAxMTYsMiwwLDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDMsMCwKLSAgICAxMjQsOCwwLDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDExMCwxMTksMCwxMTYsCi0gICAgNCwwLDEyNCw2LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDIyOSwKLSAgICAwLDEwMCwxMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsCi0gICAgMTE2LDIsMCwxMDAsOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiw1LDAsCi0gICAgMTI0LDgsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDU4LDAsMTE2LDQsMCwxMjQsCi0gICAgNywwLDEzMSwxLDAsMTAwLDUsMCwxMDcsMywwLDExNCwzMSwxLDEwMCwxMSwKLSAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwKLSAgICAxMDAsOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiw1LDAsMTI0LDgsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LAotICAgIDIyNiwxLDEyMSwyMCwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTIsMCwyNSwxMzEsCi0gICAgMSwwLDEyNSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLAotICAgIDExNCw4MywxLDEsMSwxLDg5LDExMCw2MiwwLDg4LDExNiw4LDAsMTI0LDYsCi0gICAgMCwxMzEsMSwwLDEyNCw5LDAsMTA3LDMsMCwxMTQsMTQ1LDEsMTAwLDEzLDAsCi0gICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLDEwMCwKLSAgICA5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCwKLSAgICA0LDAsMTQxLDEsMCwxMzAsMSwwLDEyMSwxOCwwLDEyNCwxLDAsMTAwLDE0LAotICAgIDAsMjUsMTAwLDE1LDAsNjQsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsNywKLSAgICAwLDEwNywxMCwwLDExNCwxODMsMSwxLDEsMSw4OSwxMTAsNDMsMCw4OCwxMTYsCi0gICAgOCwwLDEyNCw3LDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLDExNCwyMjYsCi0gICAgMSwxMTYsMywwLDEwMCwxMywwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTAwLDcsMCwxMDAsCi0gICAgMSwwLDEzMywyLDAsMjUsODMsNDEsMTYsOTcsMTIyLDEsMCwwLDg2LDk3LAotICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsCi0gICAgMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LAotICAgIDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LAotICAgIDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLAotICAgIDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLAotICAgIDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywKLSAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwKLSAgICAxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCw5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwKLSAgICAzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwKLSAgICAxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLAotICAgIDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywKLSAgICAxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMTQsMTA4LDAsMCwwLDEyMiwxMCwKLSAgICA2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw2MiwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDE0LDAsMCwwLDIzMyw4LDAsMCwwLDIzMywxMiwwLDAsMCwxMjIsMzAsCi0gICAgOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsCi0gICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsMiwKLSAgICAxMjMsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLAotICAgIDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwKLSAgICAxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiwKLSAgICA0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LAotICAgIDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLAotICAgIDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTIyLDI2LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwyNTUsCi0gICAgMTI3LDI1NSwxMjcsMywwLDQxLDksMjE4LDEyLDc3LDY1LDcxLDczLDY3LDk1LDc4LAotICAgIDg1LDc3LDY2LDY5LDgyLDExNCw0OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwKLSAgICAxMDksMCwwLDAsMTE0LDMzLDAsMCwwLDIxOCw4LDY5LDc5LDcwLDY5LDExNCwKLSAgICAxMTQsMTExLDExNCwxMTQsMTYsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMTE0LDIxLDAsMCwwLDQxLDExLDExNCw1NSwwLDAsMCwyMTgsMTIsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMzcsMCwwLDAsOTAsMTEsMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywKLSAgICAxMDUsMTA4LDExNSw5MCw1LDEwOSw5NywxMDMsMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsCi0gICAgMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LAotICAgIDEwNSwxMjIsMTAxLDExNCw3NywwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwKLSAgICAxMDUsMTIyLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMjUsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLAotICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwxNzEsMSwwLAotICAgIDAsMTE1LDc2LDAsMCwwLDAsMTEsNiwxLDEyLDEsMTMsMyw2LDEsCi0gICAgMTIsMSwxMCwxLDE2LDEsMTYsMSwxNiwxLDEyLDEsMTgsMSwxMywxLAotICAgIDE4LDEsMTgsMSwxNSwxLDEzLDEsMTUsMSwxOCwxLDE1LDEsMTMsMSwKLSAgICAxMiwxLDEyLDEsMywxLDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLAotICAgIDEzLDEsMTUsMSwzLDEsMTgsMSwxMywxLDUsMiwxOCwxLDE1LDEsCi0gICAgOSwxLDExNCwxNDMsMCwwLDAsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTEyLDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCwKLSAgICAxMTYsMiwwLDEyNCw0LDAsMTE2LDMsMCwxMzEsMiwwLDExNCw3NSwwLDExNiwKLSAgICA0LDAsMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMjQsMywwLDEwMCwKLSAgICAyLDAsMTA3LDksMCwxMTQsNzEsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsMSwxMjQsNCwwLDgzLDExNiw3LDAsMTAwLAotICAgIDMsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwxLAotICAgIDAsMTAwLDUsMCwxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsMiwwLAotICAgIDgzLDQxLDYsMTIyLDYwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk4LDEyMSwxMTYsCi0gICAgMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDQwLDQxLAotICAgIDQ2LDEyMiwyMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLAotICAgIDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwyMyw3OCwxMTEsMTEwLDQ1LDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDMyLDEyMywzMywKLSAgICAxMTQsMTI1LDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDksMjE4LDcsCi0gICAgMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCw5MCw1LDEwOCwxMTEsOTcsMTAwLDExNSwyMTgsMTAsCi0gICAgMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMTAsOTUsOTksMTExLDEwMCwKLSAgICAxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNCwxMDcsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwKLSAgICAxMTIsOTAsMTYsOTUsMTAyLDEwNSwxMjAsOTUsOTksMTExLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCw0MSw1LDExNCwKLSAgICA1NSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTIsCi0gICAgMCwwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDksMTEyLDEwNSwKLSAgICAxMDgsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIyNiwxLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMCwyLDE1LDEsMTUsMSwxMywxLDEyLDEsMTYsMSwKLSAgICA0LDIsMTgsMSwxMTQsMTQ5LDAsMCwwLDExNCw2MSwwLDAsMCw5OSwzLAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3NiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMywwLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsCi0gICAgMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsCi0gICAgMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLDEsCi0gICAgMTI0LDMsMCw4Myw0MSwxLDEyMiw4MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiwKLSAgICA5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwKLSAgICAxMTYsMTExLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTE3LDExNiwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDQ1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsNDEsNiwyMTgsOSw5OCwxMjEsMTE2LDEwMSwKLSAgICA5NywxMTQsMTE0LDk3LDEyMSwxMTQsMTM3LDAsMCwwLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTAwLDExNCwxOSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDkwLDUsMTAwLDExNywKLSAgICAxMDksMTEyLDExNSw0MSw0LDExNCwxNDgsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsCi0gICAgMTQyLDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMzgsMSwwLDAsMTE1LAotICAgIDEwLDAsMCwwLDAsMywxMiwxLDE5LDEsMTksMSwyMiwxLDExNCwxNTIsCi0gICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCi0gICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsODksMCwwLDAsMTAwLDEsMCwKLSAgICAxMDAsMiwwLDEwOCwwLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEwNiwzLDAsMTI1LDIsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDEsMCwxMDYsNSwwLAotICAgIDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsCi0gICAgNiwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEwMCwxLDAsMjUsMTMxLAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDEyMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMTE2LDEsMCwwLAorICAgIDExNSwxMiwwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMCwzLDgsCisgICAgMSwxMTQsMTAxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDY4LDAsMCwwLAorICAgIDEwMCw2LDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw5LDEyNSwxLDEyMSwxMCwKKyAgICAxMTYsMCwxMDYsMSwxMjUsMiw4NywwLDExMCwyOCw0LDAsMTE2LDIsMTA3LDEwLAorICAgIDExNCw1MiwxLDAsMSwwLDEsMCwxMDAsNCwxMDAsNSwxMzIsMCwxMjUsMiwKKyAgICA4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTI0LDEsMTM2LDAsMTMxLDIsMSwwLAorICAgIDEyNCwxLDgzLDAsNDEsNywxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksCisgICAgMTA0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LAorICAgIDk3LDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLAorICAgIDEwMiwxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLAorICAgIDExNSwxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwKKyAgICAxMDEsMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMDAsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LAorICAgIDEwOCwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLAorICAgIDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSw2NiwwLDAsMCwxMjQsCisgICAgMSwxMDAsMCwxMDcsOCwxMTQsMTYsMTI0LDAsMTA2LDAsMTI1LDEsMTEwLDMyLDEyNCwKKyAgICAwLDEwNiwwLDEyNCwxLDEwNywzLDExNCw0OCwxMTYsMSwxMDAsMSwxMjQsMCwxMDYsCisgICAgMCwxMjQsMSwxMDIsMiwyMiwwLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwKKyAgICAwLDEyNCwwLDEyNCwxLDEwMiwyLDEyNCwyLDE1OCwyLDEyNCwzLDE0MiwxLDgzLAorICAgIDAsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKKyAgICAxMDEsMzIsMzcsMTE1LDQxLDEsMjE4LDQsMTEwLDk3LDEwOSwxMDEsNDEsMiwxMTQsMTAyLAorICAgIDAsMCwwLDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKKyAgICA0MSw0LDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTAyLDAsMCwwLDIxOCw0LDk3LAorICAgIDExNCwxMDMsMTE1LDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLDIxOCw2LDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKKyAgICAxOSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCwxMzYsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSw4LAorICAgIDEsOCwxLDEwLDEsNCwxLDE4LDEsMTIyLDQwLDk1LDk5LDEwNCwxMDEsOTksCisgICAgMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICA3LDAsMCwwLDgzLDAsMCwwLDExNSw2MCwwLDAsMCwxMjAsNDAsMTAwLAorICAgIDUsNjgsMCw5MywzMiwxMjUsMiwxMTYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMTQsCisgICAgNiwxMTYsMSwxMjQsMCwxMjQsMiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMzEsCisgICAgMywxLDAsMTEzLDYsODcsMCwxMjQsMCwxMDYsMywxMDYsNCwxMjQsMSwxMDYsCisgICAgMywxMzEsMSwxLDAsMTAwLDAsODMsMCw0MSw2LDc4LDIxOCwxMCw5NSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSwKKyAgICA5NSw5NSwyMTgsMTIsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMjE4LDcsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSw0MSw0LDExNCwxMDgsMCwwLDAsCisgICAgMTE0LDEwOSwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsNDEsCisgICAgNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LAorICAgIDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMywKKyAgICA5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsMTE0LDU1LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw1LAorICAgIDk1LDExOSwxMTQsOTcsMTEyLDE0NywxLDAsMCwxMTUsOCwwLDAsMCwwLDEsCisgICAgMTAsMSwxMCwxLDIyLDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCwKKyAgICA5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LAorICAgIDk3LDExMiw0MSwxLDc4LDQxLDMsMjE4LDEwLDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiwxMTQsMTE3LDAsMCwwLDIxOCw5LDc4LDk3LDEwOSwxMDEsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwKKyAgICAxMTcsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMTA2LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMjgsMSwwLDAsMTE1LDE0LDAsMCwwLDAsOCwxNCw3LDIsCisgICAgMSwxMCwxLDE0LDIsMTQsNSwxMCwxLDExNCwxMjAsMCwwLDAsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNjAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLDEsCisgICAgOTIsMiwxMjUsMiwxMjUsMywxMjQsMiwxMDAsMSwxMDcsOCwxMTQsNTYsMTE2LDEsCisgICAgMTI0LDMsMTMxLDEsMTE0LDU2LDEwMCwyLDEyNSw0LDExNiwyLDEwNiwzLDEyNCw0LAorICAgIDEwNiw0LDEyNCwzLDEwMCwzLDI1LDAsMTMxLDEsMTE2LDUsMTMxLDIsMSwwLAorICAgIDEyNCwyLDgzLDAsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLDk3LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsMzIsMTA1LDExMCwKKyAgICAzMiwxMDIsOTcsMTE4LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMjMsMTI1LAorICAgIDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsOTUsMTE0LDYyLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjMsMCwwLDAsCisgICAgMTE0LDY0LDAsMCwwLDExNCw1MCwwLDAsMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDEwNCwwLDAsMCwKKyAgICAyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLDEwOSwxMTUsCisgICAgMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LAorICAgIDEwNCwxMDUsMTA5LDE1NiwxLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwxNCwxLAorICAgIDE2LDEsNCwxLDIyLDEsMTE0LDEyNywwLDAsMCw5OSw0LDAsMCwwLAorICAgIDAsMCwwLDAsMTEsMCwwLDAsMjIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzNiwxLDAsMCwxMDUsMCwxMjUsNCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsCisgICAgMjIsMTI0LDIsMTI0LDQsMTAwLDIsNjAsMCwxMTAsNCwxMDAsMywxMjUsMiwxMjQsCisgICAgMywxMDAsMSwxMDcsOSwxMTQsNDIsMTI0LDMsMTI0LDQsMTAwLDQsNjAsMCwxMjQsCisgICAgMCwxMDAsMSwxMDAsNSwxMzMsMiwyNSwwLDEyNSw1LDEyNCwwLDEwMCw1LDEwMCwKKyAgICA2LDEzMywyLDI1LDAsMTI1LDYsMTI0LDAsMTAwLDYsMTAwLDcsMTMzLDIsMjUsCisgICAgMCwxMjUsNywxMjQsNSwxMTYsMCwxMDcsMywxMTQsMTI0LDEwMCw4LDEwNiwxLDEyNCwKKyAgICAyLDEyNCw1LDEzMSwyLDEyNSw4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwKKyAgICAyLDEsMCwxMTYsNCwxMjQsOCwxMDIsMSwxMjQsNCwxNDIsMSwxMzAsMSwxMTAsCisgICAgODYsMTE2LDUsMTI0LDYsMTMxLDEsMTAwLDUsMTA3LDMsMTE0LDE2OCwxMDAsMTAsMTA2LAorICAgIDEsMTI0LDIsMTMxLDEsMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLAorICAgIDIsMSwwLDExNiw2LDEyNCw4LDEzMSwxLDEzMCwxLDExMCw0MiwxMTYsNSwxMjQsCisgICAgNywxMzEsMSwxMDAsNSwxMDcsMywxMTQsMjEwLDEwMCwxMSwxMDYsMSwxMjQsMiwxMzEsCisgICAgMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LAorICAgIDYsMTI0LDgsMTMxLDEsMTMwLDEsMTI0LDEsMTAwLDEsMTA3LDksMTQ0LDEsMTE0LAorICAgIDEyNCwxMjEsMTYsMTE2LDcsMTI0LDEsMTAwLDEyLDI1LDAsMTMxLDEsMTI1LDksODcsCisgICAgMCwxMTAsMjIsNCwwLDExNiw4LDEwNywxMCwxNDQsMSwxMTQsMiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMCw1MCw4OCwwLDExNiw5LDEyNCw2LDEzMSwxLDEyNCwKKyAgICA5LDEwNywzLDE0NCwxLDExNCw1MiwxMDAsMTMsMTA2LDEsMTI0LDIsMTMxLDEsMTI1LAorICAgIDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLDIsMSwwLDExNiw0LDEyNCwKKyAgICA4LDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwxLDEyMSwxNiwxMjQsMSwxMDAsMTQsMjUsCisgICAgMCwxMDAsMTUsNjQsMCwxMjUsMTAsODcsMCwxMTAsMjIsNCwwLDExNiw4LDEwNywKKyAgICAxMCwxNDQsMSwxMTQsOTAsMSwwLDEsMCwxLDAsODksMCwxMTAsMzQsODgsCisgICAgMCwxMTYsOSwxMjQsNywxMzEsMSwxMjQsMTAsMTA3LDMsMTQ0LDEsMTE0LDEyNCwxMTYsCisgICAgNCwxMDAsMTMsMTA2LDEsMTI0LDIsMTMxLDEsMTAyLDEsMTI0LDQsMTQyLDEsMTMwLAorICAgIDEsMTI0LDAsMTAwLDcsMTAwLDEsMTMzLDIsMjUsMCw4MywwLDQxLDE2LDk3LAorICAgIDEyMiwxLDAsMCw4Niw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE1LDExNSwxMDEsMTAwLDQ1LDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiw0MCwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDEwMywKKyAgICAxMDUsMTE4LDEwMSwxMTAsNDEsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk5LDExMSwxMDksCisgICAgMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgNDAsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMTEsMTE2LDEwNCwKKyAgICAxMDEsMTE0LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwKKyAgICAzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDEwNCw5NywxMTAsOTksMTAxLAorICAgIDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsMTE0LDEwMSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwKKyAgICAxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDMyLAorICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsCisgICAgOTgsMTAxLDMyLDExNSwxMTYsOTcsMTA4LDEwMSw0NiwzMiw2OSw3OSw3MCw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDEwNSwxMTUsMzIsMTAyLDExMSwKKyAgICAxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTE0LAorICAgIDExNywxMTAsOTksOTcsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTE0LAorICAgIDEwMiwwLDAsMCwxMjIsMTAsNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNjIsCisgICAgMTE0LDM3LDAsMCwwLDExNCwxNCwwLDAsMCwyMzMsOCwwLDAsMCwyMzMsCisgICAgMTIsMCwwLDAsMTIyLDMwLDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwKKyAgICAxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsMTIyLDIsMTIzLDEyNSwxMjIsNDMsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLAorICAgIDEwMCwzMiw2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNDgsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwKKyAgICA3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLAorICAgIDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMTEsMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCisgICAgMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNSwxMDksMTE2LDEwNSwxMDksMTAxLDEyMiwyNiwKKyAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LAorICAgIDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNCwxMTUsMTA1LDEyMiwxMDEsCisgICAgMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCw0MSwxMCwyMTgsMTIsNzcsCisgICAgNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksODIsMTE0LDUwLDAsMCwwLAorICAgIDExNCwxMTgsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LAorICAgIDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCwxMDMsMCwwLDAsMTE0LDMzLDAsMCwKKyAgICAwLDIxOCw4LDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTYsMCwwLDAsCisgICAgMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDIxLDAsMCwwLDQxLAorICAgIDExLDExNCw1NiwwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsCisgICAgMTE2LDk3LDExNiwxMTUsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsMTEsCisgICAgMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCw1LDEwOSw5NywxMDMsCisgICAgMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LAorICAgIDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LDEwNSwxMjIsMTAxLDExNCw3OSwwLDAsMCwKKyAgICAyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwxMSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsMTIyLDEwMSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMjUsOTUsMTE4LDk3LDEwOCwKKyAgICAxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LAorICAgIDEwMSw5NywxMDAsMTAxLDExNCwxNzMsMSwwLDAsMTE1LDc2LDAsMCwwLDAsMTEsCisgICAgNCwxLDgsMSwxMCwzLDQsMSw4LDEsOCwxLDEyLDEsMTIsMSwKKyAgICAxMiwxLDgsMSwxMiwxLDEyLDEsMTQsMSwxMiwxLDEwLDEsMTIsMSwKKyAgICAxMCwxLDEyLDEsMTAsMSwxMiwxLDgsMSwxMCwxLDIsMSwxNiwxLAorICAgIDE2LDEsNiwyLDE0LDEsMTAsMSwxMiwxLDEyLDEsMiwxLDE2LDEsCisgICAgMTYsMSw2LDIsMTQsMSwxMiwxLDYsMSwxMTQsMTM5LDAsMCwwLDk5LAorICAgIDQsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDgwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDEyNSw0LDExNiwyLDEyNCw0LDExNiwzLDEzMSwyLDExNCw1NiwxMTYsNCwxMDYsCisgICAgNSwxMDAsMSwxMjQsMiwxMzEsMiwxLDAsMTI0LDMsMTAwLDIsMTA3LDksMTE0LAorICAgIDUyLDExNiw2LDEwNiw3LDEyNCw0LDEyNCwzLDEzMSwyLDEsMCwxMjQsNCw4MywKKyAgICAwLDExNiw4LDEwMCwzLDEwNiw5LDEyNCwyLDEzMSwxLDEyNCwxLDEyNCwyLDEwMCwKKyAgICA0LDE0MSwzLDEzMCwxLDEwMCwyLDgzLDAsNDEsNSwxMjIsNjAsNjcsMTExLDEwOSwKKyAgICAxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywKKyAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LAorICAgIDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCisgICAgOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMiwxMTQsMTAyLDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCw0MSwxMCwyMTgsNywxMDksOTcsMTE0LDExNSwxMDQsOTcsCisgICAgMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsCisgICAgMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDkwLDE2LDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk0LDAsCisgICAgMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LAorICAgIDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjgsMSwwLDAsMTE1LDE2LAorICAgIDAsMCwwLDAsMiwxMCwxLDEwLDEsMTIsMSw4LDEsMTIsMSw0LAorICAgIDIsMTAsMSwxMTQsMTQ1LDAsMCwwLDExNCw2MiwwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw1NiwwLDAsMCwxMTYsMCwxMTYsMSwxMzEsMSwxMjUsMywxMjQsCisgICAgMywxMDYsMiwxMTYsMywxMjQsMSwxMzEsMSwxMzEsMSwxLDAsMTI0LDMsMTA2LAorICAgIDIsMTE2LDMsMTI0LDIsMTMxLDEsMTMxLDEsMSwwLDEyNCwzLDEwNiwyLDExNiwKKyAgICA0LDEwNiw1LDEyNCwwLDEzMSwxLDEzMSwxLDEsMCwxMjQsMyw4MywwLDQxLAorICAgIDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsCisgICAgNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLAorICAgIDExNCwxMzIsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE5LDAsCisgICAgMCwwLDExNCwxNDAsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwxMTIsMTE1LDQxLDQsCisgICAgMTE0LDE0NCwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTExLDk1LDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDI0MCwxLDAsMCwxMTUsMTAsMCwwLDAsMCwKKyAgICAzLDgsMSwxNCwxLDE0LDEsMTYsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDYyLDAsMCwwLDEwMCwxLDEwMCwyLDEwOCwwLDEyNSwxLAorICAgIDExNiwxLDEwNiwyLDEyNCwwLDEzMSwxLDEwNiwzLDEyNSwyLDEyNCwxLDEwNiw0LAorICAgIDEyNCwyLDEzMSwxLDEyNSwzLDExNiwxLDEwNiw1LDEwMCwyLDEwMCwzLDEzMSwyLAorICAgIDEyNSw0LDEyNCw0LDEwNiw2LDEyNCwwLDEwNiw2LDEyNCwzLDEwMCwxLDI1LDAsCisgICAgMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiwxMjEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLAogICAgIDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwKICAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLAogICAgIDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LApAQCAtNzkzLDk4ICs3MTksOTIgQEAKICAgICAxMDEsMTE0LDExNSw5NywxMDgsMzIsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDMyLDExNSwxMTcsCiAgICAgMTEyLDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLAogICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTQsNjEsMCwwLDAsNzgsODQsNDEsNywyMTgsOCwxMTYsMTExLAotICAgIDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCw1MSwwLDAsMCw5MCw3LDY2LDEyMSwxMTYsCisgICAgMzIsMzIsMzIsMTE0LDYyLDAsMCwwLDc4LDg0LDQxLDcsMjE4LDgsMTE2LDExMSwKKyAgICAxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTIsMCwwLDAsOTAsNyw2NiwxMjEsMTE2LAogICAgIDEwMSwxMTUsNzMsNzksOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsOTAsMTUsCiAgICAgMTAwLDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsCiAgICAgMjUsNzMsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LDEwOCwKICAgICAxMDUsMTEwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LDEwMCwxMDEsOTksMTExLAogICAgIDEwMCwxMDEsNDEsNSwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LAotICAgIDEwMSwxMTUsMTE0LDE1MywwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAorICAgIDEwMSwxMTUsMTE0LDE0OSwwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAogICAgIDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMjE4LDgsCiAgICAgMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLAogICAgIDEwMSw5NSwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwKICAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI0OCwxLDAsMCwxMTUsMTAsMCwwLDAsCi0gICAgMCw1LDEyLDEsMTgsMSwxNSwxLDE4LDEsMTE0LDE1NywwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTksMiwwLDAsMCwyLDAsMCwwLDksMCwwLDAsMTksMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDg5LDEsMCwwLDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCw3MywwLDEwMCwyLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAyLDAsMTAwLDMsMCwxMzEsMiwwLDExNCw3MywwLDEyMSwxOSwwLDEyNCwyLAotICAgIDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCw4NywxMTAsMTgsCi0gICAgMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEwLAotICAgIDEsMCw4OCwxMTYsMywwLDEwNiw0LDAsMTI0LDAsMCwxMjQsMiwwLDEwMCwKLSAgICA0LDAsMTI0LDEsMCwxMzEsMiwxLDEyNSw0LDAsMTAwLDUsMCwxMjQsNCwKLSAgICAwLDk1LDUsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTk0LDAsCi0gICAgMTIwLDczLDAsMTE2LDYsMCwxMzEsMCwwLDY4LDkzLDU4LDAsOTIsMiwwLAotICAgIDEyNSw1LDAsMTI1LDYsMCwxMjQsMSwwLDEwNiw3LDAsMTE2LDgsMCwxMjQsCi0gICAgNiwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsMTI4LDAsMTI0LDUsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDQsMCwKLSAgICA5NSw5LDAsODAsMTEzLDEyOCwwLDg3LDEwMCwxLDAsODMsMTI0LDMsMCwxMTYsCi0gICAgMTAsMCwxMDcsOCwwLDExNCwyMywxLDExNiwwLDAsMTI0LDIsMCwxMDAsNiwKLSAgICAwLDEzMSwyLDAsMTE0LDMyLDEsMTIxLDE5LDAsMTI0LDIsMCwxMDYsMTEsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMTgsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQsMSwxLDEsMSw4OSwxMTMsMzIsMSw4OCwxMjQsCi0gICAgNywwLDExNCwzMiwxLDEwMywwLDAsMTI0LDQsMCw5NSwxMiwwLDExMCw5LAotICAgIDAsMTI0LDMsMCwxMjQsNCwwLDk1LDEyLDAsMTI0LDQsMCwxMDYsMTIsMCwKLSAgICAxMDMsMCwwLDEwNywyLDAsMTE0LDg1LDEsMTI0LDEsMCwxMTQsODUsMSwxMTYsCi0gICAgMTMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDcsMCwyNSwxMjUsOCwwLDEyNCwKLSAgICA0LDAsMTA2LDEyLDAsMTA2LDE0LDAsMTI0LDgsMCwxMzEsMSwwLDEsMTI0LAotICAgIDQsMCw4Myw0MSw4LDk3LDYxLDEsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTExLAotICAgIDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTYsMTExLDMyLDk3LDMyLAotICAgIDEwOCwxMDUsMTE1LDExNiwzMiwxMTEsMTAyLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKLSAgICAxMjEsMzIsMTEyLDk3LDExNiwxMDQsMTE1LDQ2LDMyLDMyLDY1LDExMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDExNSwKLSAgICAxMTcsMTAyLDEwMiwxMDUsOTksMTA1LDEwMSwxMTAsMTE2LDQ0LDMyLDExNiwxMDQsMTExLDExNywxMDMsCi0gICAgMTA0LDMyLDEwNSwxMTYsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LAotICAgIDEwNSwxMTUsMTAxLDMyLDExNywxMTUsMTAxLDEwMiwxMTcsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE1LDEyMSwxMTUsCi0gICAgMTE2LDEwMSwxMDksNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMTYsOTcsMTA3LDEwMSwzMiw5NywKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTA1LDExNiwxMTUsMzIsMTExLDExMCwxMDgsCi0gICAgMTIxLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCw0MSwzMiw5NywxMTQsMTAzLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw5LDYwLDExNywxMTAsMTA3LDExMCwxMTEsCi0gICAgMTE5LDExMCw2MiwyMTgsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDg0LDIxOCwxMCwxMDUsMTE1LDk1LDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsNjEsMCwwLDAsNDEsMTUsMTE0LDExNywwLAotICAgIDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyMywwLDAsCi0gICAgMCwyMTgsMTAsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDkwLDEzLDk1LAotICAgIDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsMjcsOTUsMTAzLAotICAgIDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw5NCwwLDAsMCwxMTQsOTUsCi0gICAgMCwwLDAsMTE0LDEyOSwwLDAsMCwyMTgsOSw5NSw4MCw3OSw4MCw4NSw3NiwKLSAgICA2NSw4NCw2OSwxMTQsMTYxLDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDQwLDAsCi0gICAgMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNDEsOSwxMTQsMTA4LDAsMCwKLSAgICAwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEyOSwwLDAsMCwKLSAgICAxMTQsMTU4LDAsMCwwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCwxMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDk1LDk5LDEwOCw5NywxMTUsMTE1LDIxOCw4LDExNSwxMTcsMTAyLDEwMiwxMDUsCi0gICAgMTIwLDEwMSwxMTUsMTE0LDE2MSwwLDAsMCw5MCw3LDEwMCwxMDUsMTE0LDExMCw5NywxMDksCi0gICAgMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwyMywxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDksMiwwLDAsMTE1LDYwLDAsCi0gICAgMCwwLDAsMTIsMTIsNCw2LDEsMTUsMiwzLDEsMTksMSwxMywxLAotICAgIDUsOCwyNCwxLDksMywxMiwxLDIyLDEsMjEsMSwxNSwxLDksMSwKLSAgICA1LDIsNCwzLDEyLDIsMTUsMSwzLDEsMTksMSwxMywxLDUsMiwKLSAgICA2LDEsMTIsMiw5LDEsMTUsMSw2LDEsMTYsMSwxNiwyLDExNCwxNjksCi0gICAgMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw2NCwwLDAsMCwxMTUsMTIxLDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKLSAgICAyLDAsOTAsNCwwLDEwMCwzLDAsOTAsNSwwLDEwMCw0LDAsOTAsNiwKLSAgICAwLDEwMSw3LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCwKLSAgICA5MCw4LDAsMTAxLDcsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDkwLDksMCwxMDEsNywwLDEwMCw5LDAsMTAwLDksMCwxMDAsMTAsCi0gICAgMCwxMDAsMTEsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLAotICAgIDEwMCw5LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDEsMCwxMzEsMSwwLDkwLAotICAgIDExLDAsMTAwLDksMCw4Myw0MSwxNCwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI1MCwxLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMCw1LDgsMSwxMiwxLDEwLDEsMTIsMSwxMTQsMTUzLDAsMCwwLDQxLAorICAgIDIsMTE0LDEyNCwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE1LDk5LDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxOCwxLDAsMCwxMjQsMSwxMDAsMSwKKyAgICAxMDcsOCwxMTQsNjAsMTAwLDIsMTI1LDEsMTE2LDAsMTI0LDIsMTAwLDMsMTMxLDIsCisgICAgMTE0LDcwLDEyMSwxNCwxMjQsMiwxMDYsMSwxMjQsMCwxMzEsMSwxMjUsMSw4NywwLAorICAgIDExMyw3MCw0LDAsMTE2LDIsMTA3LDEwLDExNCw1NiwxLDAsMSwwLDEsMCwKKyAgICA4OSwwLDExMyw3MCw4OCwwLDExMCwxMCwxMTYsMywxMDYsNCwxMjQsMSwxMzEsMSwKKyAgICAxMjUsMSwxMTYsNSwxMDYsNiwxMjQsMCwxMjQsMiwxMjQsMSwxMDAsNCwxNDEsMywKKyAgICAxMjUsNCwxMDAsNSwxMjQsNCw5NSw3LDEyNCwyLDEwMCwxLDEwNyw4LDExNCwxNTYsCisgICAgMTIwLDU0LDExNiw4LDEzMSwwLDY4LDAsOTMsNDAsOTIsMiwxMjUsNSwxMjUsNiwKKyAgICAxMjQsMSwxMDYsOSwxMTYsMTAsMTI0LDYsMTMxLDEsMTMxLDEsMTE0LDEwOCwxMjQsNSwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiwxMjUsMiwxMjQsMiwxMjQsNCw5NSwxMSw4MCwwLAorICAgIDExMywxMDgsODcsMCwxMDAsMSw4MywwLDEyNCwzLDExNiwxMiwxMDcsOCwxMTQsMjIyLAorICAgIDExNiwwLDEyNCwyLDEwMCw2LDEzMSwyLDExNCwyMjgsMTIxLDE0LDEyNCwyLDEwNiwxMywKKyAgICAxMjQsMCwxMzEsMSwxMjUsNyw4NywwLDExMCwyMCw0LDAsMTE2LDIsMTA3LDEwLAorICAgIDExNCwyMDgsMSwwLDEsMCwxLDAsODksMCwxMTMsMjI4LDg4LDAsMTI0LDcsCisgICAgMTE0LDIyOCwxMDMsMCwxMjQsNCw5NSwxNCwxMTAsNiwxMjQsMywxMjQsNCw5NSwxNCwKKyAgICAxMjQsNCwxMDYsMTQsMTAzLDAsMTA3LDIsMTQ0LDEsMTE0LDE0LDEyNCwxLDE0NCwxLAorICAgIDExNCwxNCwxMTYsMTUsMTI0LDEsMTMxLDEsMTAwLDcsMjUsMCwxMjUsOCwxMjQsNCwKKyAgICAxMDYsMTQsMTA2LDE2LDEyNCw4LDEzMSwxLDEsMCwxMjQsNCw4MywwLDQxLDgsCisgICAgOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsMzIsMTA1LDExMCwxMDAsMTA1LAorICAgIDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDExNyw5OCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLAorICAgIDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwMSwxMDksMTEyLDExNiwKKyAgICAxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LDExNywxMDIsMTAyLDEwNSw5OSwKKyAgICAxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywxMDQsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsMzIsMTE3LAorICAgIDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCisgICAgMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTUsOTUsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDYyLDIxOCwxMiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsNiwKKyAgICAxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMTE0LDYyLDAsMCwwLDQxLDE3LDExNCwxMTIsMCwwLDAsMTE0LAorICAgIDE1NSwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwzLDAsMCwwLDExNCw2NywKKyAgICAwLDAsMCwxMTQsMTE4LDAsMCwwLDIxOCwxMCw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDgzLDExMiwxMDEsOTksOTAsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCisgICAgMTE0LDk2LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsMTI0LDAsMCwwLDIxOCwKKyAgICA5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxNTcsMCwwLDAsMTE0LAorICAgIDE1NCwwLDAsMCwxMTQsNDAsMCwwLDAsMjE4LDYsOTcsMTEyLDExMiwxMDEsMTEwLAorICAgIDEwMCw0MSw5LDExNCwxMDIsMCwwLDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsMjE4LDQsMTE1LDExMiwKKyAgICAxMDEsOTksMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksMTA4LDk3LDExNSwxMTUsCisgICAgMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTQsMTU3LDAsMCwwLDkwLAorICAgIDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsCisgICAgMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMTEsMiwwLDAsMTE1LDYyLDAsMCwwLDAsMTIsOCw0LDQsMSwxMCwKKyAgICAyLDIsMSwxNCwxLDE0LDEsOCwyLDEwLDgsMTYsMSw2LDMsOCwKKyAgICAxLDE2LDEsMTQsMSwxMCwxLDYsMSw2LDIsNCwzLDgsMiwxMCwKKyAgICAxLDIsMSwxNCwxLDE0LDEsNiwyLDQsMSw4LDIsNiwxLDEyLAorICAgIDEsNiwxLDEyLDEsMTIsMiwxMTQsMTY1LDAsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSwKKyAgICA5MCwzLDEwMCwyLDkwLDQsMTAwLDMsOTAsNSwxMDAsNCw5MCw2LDEwMSw3LAorICAgIDEwMCw1LDEwMCw2LDEzMiwwLDEzMSwxLDkwLDgsMTAxLDcsMTAwLDcsMTAwLDgsCisgICAgMTMyLDAsMTMxLDEsOTAsOSwxMDEsNywxMDAsMTQsMTAwLDEwLDEwMCwxMSwxMzIsMSwKKyAgICAxMzEsMSw5MCwxMCwxMDEsNywxMDAsMTUsMTAwLDEyLDEwMCwxMywxMzIsMSwxMzEsMSwKKyAgICA5MCwxMSwxMDAsOSw4MywwLDQxLDE2LDIxOCwyMSw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAogICAgIDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsCiAgICAgNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAogICAgIDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDEwMSwKQEAgLTg5OSwxMDYgKzgxOSwxMDAgQEAKICAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsCiAgICAgMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSw5Miw2OCwxMDEsOTgsMTE3LDEwMyw3MCwKICAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsMTIxLDIzLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDExNiwwLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODcsMTEwLDM3LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2MiwwLDEsMSwKLSAgICAxLDExNiwwLDAsMTA2LDEsMCwxMTYsMCwwLDEwNiw0LDAsMTI0LDEsMCwKLSAgICAxMzEsMiwwLDgzLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDQxLDUsMjE4LDcsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTAsNyw3OSwxMTIsMTAxLAotICAgIDExMCw3NSwxMDEsMTIxLDkwLDE3LDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LAotICAgIDc4LDg0LDk1LDg1LDgzLDY5LDgyLDExNCw0MiwwLDAsMCw5MCwxOCw3Miw3NSwKLSAgICA2OSw4OSw5NSw3Niw3OSw2Nyw2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSwKLSAgICA0MSwyLDIxOCwzLDk5LDEwOCwxMTUsMTE0LDUsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LDExMSwxMTIsCi0gICAgMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDg3LDIsMCwwLDExNSwKLSAgICA4LDAsMCwwLDAsMiwzLDEsMjMsMSwxMywxLDEyMiwzNiw4NywxMDUsCisgICAgMCw2NywwLDAsMCwxMTUsNTAsMCwwLDAsMTIxLDE0LDExNiwwLDEwNiwxLAorICAgIDExNiwwLDEwNiwyLDEyNCwxLDEzMSwyLDgzLDAsNCwwLDExNiwzLDEwNywxMCwKKyAgICAxMTQsNDQsMSwwLDEsMCwxLDAsMTE2LDAsMTA2LDEsMTE2LDAsMTA2LDQsCisgICAgMTI0LDEsMTMxLDIsODMsMCw4OCwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwKKyAgICA1LDIxOCw3LDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwxMTAsCisgICAgNzUsMTAxLDEyMSw5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCwKKyAgICA4NCw5NSw4NSw4Myw2OSw4MiwxMTQsNDIsMCwwLDAsOTAsMTgsNzIsNzUsNjksCisgICAgODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksNDEsCisgICAgMiwyMTgsMyw5OSwxMDgsMTE1LDExNCw1LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLDEwMSwKKyAgICAxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5MSwyLDAsMCwxMTUsOCwKKyAgICAwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMjIsMzYsODcsMTA1LDExMCwKKyAgICAxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDExMiwwLDAsMCwxMjQsMCwxMDYsMCwxMTQsCisgICAgMTQsMTI0LDAsMTA2LDEsMTI1LDIsMTEwLDYsMTI0LDAsMTA2LDIsMTI1LDIsMTI0LAorICAgIDIsMTA2LDMsMTI0LDEsMTAwLDEsMTE2LDQsMTA2LDUsMTAwLDAsMTAwLDIsMTMzLAorICAgIDIsMjUsMCwyMiwwLDEwMCwzLDE0MSwyLDEyNSwzLDEyMSwzOCwxMjQsMCwxMDYsCisgICAgNiwxMjQsMywxMzEsMSwxNDMsMTgsMTI1LDQsMTE2LDcsMTA2LDgsMTI0LDQsMTAwLAorICAgIDQsMTMxLDIsMTI1LDUsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCw4NywKKyAgICAwLDExMCwyMCw0LDAsMTE2LDksMTA3LDEwLDExNCwxMDYsMSwwLDEsMCwxLAorICAgIDAsMTAwLDAsODMsMCw4OCwwLDEyNCw1LDgzLDAsNDEsNSw3OCwxMjIsNSwKKyAgICAzNywxMDAsNDYsMzcsMTAwLDExNCw1OSwwLDAsMCw0MSwyLDExNCwxMjMsMCwwLAorICAgIDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwzMiwKKyAgICAwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsNzMsCisgICAgNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LAorICAgIDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSwKKyAgICA5NSw3NSw2OSw4OSwxMTQsNTAsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDEyLAorICAgIDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDE2OSwwLDAsCisgICAgMCwxMTQsMTY3LDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsCisgICAgMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLAorICAgIDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk4LDIsMCwwLDExNSwyMiwwLDAsMCwKKyAgICAwLDIsNiwxLDgsMiw2LDEsNiwxLDIyLDEsMiwxLDEyLDEsCisgICAgMjYsMSwxNCwxLDYsMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LAorICAgIDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzgsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEyMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsCisgICAgMSwxMjUsNCwxMjQsNCwxMDAsMCwxMDcsOCwxMTQsMjIsMTAwLDAsODMsMCwxMjEsCisgICAgMTIsMTE2LDEsMTI0LDQsMTMxLDEsMSwwLDg3LDAsMTEwLDIwLDQsMCwxMTYsCisgICAgMiwxMDcsMTAsMTE0LDU0LDEsMCwxLDAsMSwwLDEwMCwwLDgzLDAsODgsCisgICAgMCwxMjAsNTgsMTE2LDMsMTMxLDAsNjgsMCw5Myw0OCw5MiwyLDEyNSw1LDEyNSwKKyAgICA2LDEyNCw0LDEwNiw0LDExNiw1LDEyNCw2LDEzMSwxLDEzMSwxLDExNCw2NCwxMTYsCisgICAgNiwxMDYsNywxMjQsMSwxMjQsNSwxMjQsMSwxMjQsNCwxMzEsMiwxMjQsNCwxMDAsCisgICAgMSwxNDEsMywxMjUsNywxMjQsNyw4MywwLDExMyw2NCw4NywwLDEwMCwwLDgzLAorICAgIDAsNDEsMiw3OCw0MSwxLDExNCwxNTYsMCwwLDAsNDEsOCwxMTQsMTc1LDAsCisgICAgMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDE1OSwwLDAsCisgICAgMCwxMTQsOTYsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwxMTgsMCwwLDAsCisgICAgMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQxLDgsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywKKyAgICAwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwxNzQsMCwwLDAsCisgICAgMTE0LDEyNCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDksCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMywyLDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMCwyLDEwLDEsOCwxLDQsMSwyLDEsMTIsMSwxNCwxLAorICAgIDYsMSwxNiwxLDE0LDEsNiwxLDgsMSw4LDEsMTIyLDMxLDg3LDEwNSwKICAgICAxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDQ2LDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwKLSAgICAxMTQsMTIxLDk5LDIsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNDMsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNCwyMSwwLDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLAotICAgIDEwMCwxLDAsMTI0LDEsMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsCi0gICAgMCwwLDEwMCwzLDAsMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLAotICAgIDQ3LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsCi0gICAgMCwxMjUsNCwwLDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsCi0gICAgMTMxLDIsMCwxMjUsNSwwLDg3LDEwMCwwLDAsODEsODIsODgsODcsMTEwLDIyLAotICAgIDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwxMzgsMCwxLDEsMSwxMDAsMCwKLSAgICAwLDgzLDg5LDExMCwxLDAsODgsMTI0LDUsMCw4Myw0MSw1LDc4LDExNCwxMjgsCi0gICAgMCwwLDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLAotICAgIDExNCw4MiwwLDAsMCwxMTQsMzIsMCwwLDAsNDEsMTAsMjE4LDExLDY4LDY5LAotICAgIDY2LDg1LDcxLDk1LDY2LDg1LDczLDc2LDY4LDIxOCwxOCw4Miw2OSw3MSw3Myw4MywKLSAgICA4NCw4Miw4OSw5NSw3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwyMTgsMTIsODIsCi0gICAgNjksNzEsNzMsODMsODQsODIsODksOTUsNzUsNjksODksMTE0LDQ5LDAsMCwwLAotICAgIDExNCw4LDAsMCwwLDIxOCw3LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsMTczLAotICAgIDAsMCwwLDExNCwxNzEsMCwwLDAsOTAsMTAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LAotICAgIDk3LDEwOCwxMTcsMTAxLDExNCw0MiwwLDAsMCw0MSw2LDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEyOCwwLDAsMCw5MCwxMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LAotICAgIDEwNywxMDEsMTIxLDExNCw1LDAsMCwwLDkwLDQsMTA0LDEwNywxMDEsMTIxLDIxOCw4LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTQsMiwwLDAsMTE1LDIyLDAsCi0gICAgMCwwLDAsMiw5LDEsMTIsMiw5LDEsMTUsMSwyMiwxLDMsMSwKLSAgICAxOCwxLDI5LDEsMTMsMSw5LDEsMTIyLDM4LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAotICAgIDc4LDk5LDQsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNTgsMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsMCwKLSAgICAxMDcsOCwwLDExNCwzMSwwLDEwMCwwLDAsODMsMTIxLDE0LDAsMTE2LDEsMCwKLSAgICAxMjQsNCwwLDEzMSwxLDAsMSw4NywxMTAsMjIsMCw0LDExNiwyLDAsMTA3LAotICAgIDEwLDAsMTE0LDY5LDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLAotICAgIDg4LDEyMCw4MSwwLDExNiwzLDAsMTMxLDAsMCw2OCw5Myw3MCwwLDkyLDIsCi0gICAgMCwxMjUsNSwwLDEyNSw2LDAsMTI0LDQsMCwxMDYsNCwwLDExNiw1LDAsCi0gICAgMTI0LDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDgwLDAsMTE2LDYsMCwxMDYsCi0gICAgNywwLDEyNCwxLDAsMTI0LDUsMCwxMjQsMSwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMCwxMDAsMSwwLDEyNCw0LDAsMTMxLDIsMSwxMjUsNywwLDEyNCw3LDAsCi0gICAgODMsMTEzLDgwLDAsODcsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwxNjAsMCwwLAotICAgIDAsNDEsOCwxMTQsMTc5LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwKLSAgICAwLDAsMTE0LDE2MywwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDExNCwxMjMsMCwwLDAsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLAotICAgIDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDgsMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTI4LDAsMCwwLDExNCwzNywwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsCi0gICAgMTE2LDExNCwxNzgsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsMTY4LDAsMCwwLAotICAgIDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDksMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDEwOSwKLSAgICAyLDAsMCwxMTUsMjYsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsCi0gICAgMywxLDE0LDEsMTMsMSw5LDEsMjIsMSwyMSwxLDksMSwxNSwxLAotICAgIDksMSwxMjIsMzEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAotICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKLSAgICAxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsCi0gICAgMCw4MywxMDAsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwKLSAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAotICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTgyLDAsCi0gICAgMCwwLDExNCwxMjksMCwwLDAsNDEsNCwxMTQsMTcyLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjUsMiwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCw3LDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLAotICAgIDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxMiwxMTQsCi0gICAgMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LAotICAgIDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMTc0LDAsCi0gICAgMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsCi0gICAgMTczLDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxNzAsMCwwLDAsNzUsMiwwLDAsCi0gICAgMTE1LDIwLDAsMCwwLDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LAotICAgIDcsMTgsMTUsMywxLDIxLDE1LDMsMSwxMTQsMTcwLDAsMCwwLDk5LDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsCi0gICAgMCwwLDAsMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwKKyAgICAxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLAorICAgIDIsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDksMTE0LDI2LDEyNCwzLDEwNiwxLDgzLAorICAgIDAsMTAwLDEsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDEwOCw3MCwxMDUsMTEwLAorICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsCisgICAgMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE3OCwwLDAsCisgICAgMCwxMTQsMTI0LDAsMCwwLDQxLDQsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTI5LDIsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsNywxMiwxLDgsMSw2LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLDExMSwKKyAgICAxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwyLDc4LDc4LAorICAgIDQxLDEsNzgsNDEsMTIsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwKKyAgICAxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTcyLDAsMCwwLDExNCwxNzEsCisgICAgMCwwLDAsMTE0LDE3MCwwLDAsMCwyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE2OSwwLDAsMCwxMTQsMTc1LDAsMCwwLDExNCwKKyAgICAxNzgsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTY2LDAsCisgICAgMCwwLDc5LDIsMCwwLDExNSwyMCwwLDAsMCw4LDIsNCwzLDQsCisgICAgMyw0LDIsNCwyLDEyLDcsMTIsMTUsMiwxLDEyLDE1LDIsMSwxMTQsCisgICAgMTY2LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ4LDAsMCwwLDEwMSwwLAorICAgIDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLAorICAgIDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCwKKyAgICA5MCw2LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDgzLDAsNDEsMTEsCiAgICAgMjE4LDEzLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwxMjIsCiAgICAgODMsNjYsOTcsMTE1LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk5LAogICAgIDExMSwxMDksMTA5LDExMSwxMTAsMzIsOTksMTExLDEwMCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwKQEAgLTEwMDYsMTEwICs5MjAsMTA2IEBACiAgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCiAgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCiAgICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCi0gICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCi0gICAgNSwwLDEwNywzLDAsODMsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDExNCwzMSwwLDAsMCwxMTQsNjAsMCwwLAotICAgIDAsMTE0LDYxLDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsMzYsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDUsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTI4LDAsMCwwLDExNCw5NiwwLDAsMCw5MCwxMywxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsCi0gICAgMTA4LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsMTQ0LDIsMCwwLDExNSw4LAotICAgIDAsMCwwLDAsMywyNSwxLDIyLDEsMTksMSwxMjIsMjQsOTUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAotICAgIDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywKLSAgICAxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCwKLSAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE2NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDE1MiwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjcsOTUsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4MCwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsCi0gICAgMTI1LDIsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNTQsMCwxMTYsCi0gICAgMiwwLDEwMCwyLDAsMTA2LDMsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDQsMCwxMDYsNSwwLDExNiw2LDAsCi0gICAgMTI0LDIsMCwxMjQsMSwwLDEwNiw3LDAsMTMxLDMsMCwxLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDY0LDAsMCwwLDExNiwwLAorICAgIDEyNCwwLDEwNiwxLDEyNCwxLDEzMSwxLDEzMSwxLDEwMCwxLDI1LDAsMTI1LDIsCisgICAgMTI0LDIsMTA2LDIsMTAwLDIsMTAwLDEsMTMxLDIsMTAwLDMsMjUsMCwxMjUsMywKKyAgICAxMjQsMSwxMDYsMywxMDAsMiwxMzEsMSwxMDAsNCwyNSwwLDEyNSw0LDEyNCwzLAorICAgIDEwMCw1LDEwNywyLDExMSw2MiwxMjQsNCwxMDAsNSwxMDcsMyw4MywwLDQxLDYsCisgICAgMTIyLDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LAorICAgIDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwKKyAgICAxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LAorICAgIDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LAorICAgIDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwKKyAgICAzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMTQsCisgICAgMzEsMCwwLDAsMTE0LDYxLDAsMCwwLDExNCw2MiwwLDAsMCwxMTQsNTksCisgICAgMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQxLDQsMTE0LAorICAgIDQwLDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDM2LDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCw0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCisgICAgOTgsMCwwLDAsOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LAorICAgIDk3LDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU3LDAsCisgICAgMCwwLDE0OCwyLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTgsMSwxNiwKKyAgICAxLDE0LDEsMTIyLDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LAorICAgIDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNDIsODUsCisgICAgMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsCisgICAgMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsCisgICAgMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNTYsMiwwLDAsMTE1LDAsMCwKKyAgICAwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LAorICAgIDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNTYsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTA2LAorICAgIDEsMTMxLDEsMTI1LDIsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDM2LDExNiwyLDEwMCwKKyAgICAyLDEwNiwzLDEyNCwxLDEwNiwxLDEzMSwxLDEzMSwxLDEzMCwxLDExNiw0LDEwNiwKKyAgICA1LDExNiw2LDEyNCwyLDEyNCwxLDEwNiw3LDEzMSwzLDEsMCwxMDAsMSw4MywKKyAgICAwLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCiAgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLAogICAgIDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCiAgICAgMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCiAgICAgNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLAotICAgIDgsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDIxOCwKKyAgICA4LDIxOCw4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNCwxMDksMCwwLDAsCisgICAgMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDExOCwwLDAsMCwyMTgsCiAgICAgMjUsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksCiAgICAgMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMjE4LDQsMTAxLDEyMCwxMDEsOTksCi0gICAgMTE0LDEyMCwwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMjE4LDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDE0OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAxMTQsMTE1LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAogICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNTUsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwKLSAgICAxOCwxLDEyLDEsOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTU5LDIsMCwwLDExNSwxMCwwLDAsMCwwLDIsCisgICAgMTIsMSw4LDEsNiwxLDEwLDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAogICAgIDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxMjMsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTYzLDIsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTYxLDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTk0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODUsMCwwLDAsMTM5LDIsMCwwLAotICAgIDExNSwxMCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsCi0gICAgMTg1LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwKLSAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwKLSAgICAwLDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLAotICAgIDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsCi0gICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwKLSAgICAzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxNjksMiwwLDAsMTE1LDIsMCwwLDAsMCw2LAotICAgIDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksCi0gICAgMCwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEwNSwxLDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwKKyAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDEsMTIyLDI2LDg0LDEwNCwxMDUsCisgICAgMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0Niw0MSwyLDExNCwxMTgsMCwwLDAsMjE4LDE3LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LAorICAgIDEwOSw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTY3LDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMiwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwKKyAgICAxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LAorICAgIDQxLDgsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLAorICAgIDAsMTE0LDExMSwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxODMsMCwwLDAsCisgICAgMTE0LDE4OCwwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMTQzLDIsMCwwLDExNSwxMCwwLDAsMCw4LDMsNCwyLAorICAgIDgsOCw4LDMsOCw4LDExNCwxODEsMCwwLDAsOTksMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsNzQsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwKKyAgICAyLDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsCisgICAgNiwxMzIsMCw5MCw1LDEwMCw3LDEwMCw4LDEzMiwwLDkwLDYsMTAwLDksMTAwLAorICAgIDEwLDEzMiwwLDkwLDcsMTAwLDE4LDEwMCwxMiwxNTYsMSwxMDAsMTMsMTAwLDE0LDEzMiwKKyAgICAyLDkwLDgsMTAwLDE1LDEwMCwxNiwxMzIsMCw5MCw5LDEwMCwxNyw4MywwLDQxLAorICAgIDE5LDIxOCwxMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDgsMCwwLDAsMTE2LDAsMTMwLDEsMTAwLDEsODMsCisgICAgMCw0MSwyLDEyMiwxNzgsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsCisgICAgMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LAorICAgIDMyLDExNSwxMTYsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLAorICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKKyAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCisgICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxNzQsMiwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCw2LDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQsMCwwLDAsMTAwLDEsMTI0LDAsMTA2LDAsMTI0LDEsCisgICAgMTMxLDEsMTA1LDEsODMsMCw0MSwyLDk3LDE3MCwxLDAsMCw3OSwxMTIsMTE2LAogICAgIDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwKICAgICAxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiw5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LAogICAgIDk3LDMyLDEwMCwxMDUsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKQEAgLTExMzYsMTQ3MCArMTA0NiwxMzkxIEBACiAgICAgOTcsMTA1LDExNSwxMDEsMTE1LDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LAogICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwKICAgICAxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTM1LDAsMCwwLDQxLDEsMTE0LDE5NywKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTMwLDAsMCwwLDQxLDEsMTE0LDE5MywKKyAgICAwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKICAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTc3LDIsMCwwLDExNSwyLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxODIsMiwwLDAsMTE1LDIsCiAgICAgMCwwLDAsMCwxMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKICAgICAxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwKICAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQxLDEsMTIyLDIyOCw3OSwxMTIsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwKLSAgICAxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksCi0gICAgMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsCi0gICAgMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsCi0gICAgMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsCi0gICAgMTA4LDEyMSwzMiwxMTYsMTE0LDk3LDExMCwxMTUsMTAyLDEwMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTA5LAotICAgIDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA0MSwxLDIxOCw4LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsNCwxMTQsMTEwLAotICAgIDAsMCwwLDExNCw5MiwwLDAsMCw5MCwxMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDExNCw1NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTUsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxOTAsMiwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw4LDEyMiwyOCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLAotICAgIDQxLDIsMTIyLDE1MCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsCi0gICAgMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwKLSAgICAzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsCi0gICAgMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLAotICAgIDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LAotICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCw0LDAsMCwwLAotICAgIDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxOTksMCwwLDAsMjAwLDIsMCwwLDExNSwwLDAsMCwwLDEyMiwyMSwKLSAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LAotICAgIDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwKLSAgICAwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNSwwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLAotICAgIDg3LDExMCw1OCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsOTQsMCwxLDEyNSwKLSAgICA0LDAsMSwxMjIsMjYsMCwxMTYsMywwLDEwMCwxLDAsMTAwLDIsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDEsMTI0LDQsMCwxMzAsMiwwLDg3LDg5LDEwMCwzLDAsCi0gICAgMTAwLDMsMCwxMjUsNCwwLDEyNiw0LDAsODgsMTEwLDEsMCw4OCwxMTYsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiw1Miw2NywxMTEsMTEwLDk5LAotICAgIDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LAotICAgIDEyMiwzOSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LDExOCw5NywKLSAgICAxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLDExNywxMDMsMTA0LDMyLDEwMywKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNDEsMTE0LDEwOCwwLDAsMCw3OCw0MSwKLSAgICA1LDExNCwxNTksMCwwLDAsMjE4LDgsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKLSAgICAxMTQsNDIsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTU3LDAsMCwwLDQxLAotICAgIDUsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICAxMTQsMTU1LDAsMCwwLDIxOCwzLDEwMSwxMjAsOTksMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwKLSAgICAxMTEsMTE3LDExNCw5OSwxMDEsMjA3LDIsMCwwLDExNSwxNCwwLDAsMCwwLDIsCi0gICAgMTUsMSwzLDEsMTksMSwxOCwxLDksMSwzMSwxLDEyMiwyMyw4MywxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwKLSAgICAxMTEsMTE3LDExNCw5OSwxMDEsMjE4LDksOTUsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwKLSAgICAxMTQsMzEsMCwwLDAsOTksMywwLDAsMCwxLDAsMCwwLDQsMCwKLSAgICAwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTE2LAotICAgIDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTI0LDMsMCwxMzEsNCwyLAotICAgIDgzLDQxLDUsMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiw5OSwxMTEsMTA5LDExMiwKLSAgICAxMDUsMTA4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMDAsOTcsMTE2LDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw5OSwKLSAgICA5NywxMTAsMzIsOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsCi0gICAgMTA4LDEwMSw0MCw0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxOTAsMCwwLDAsMjE4LDEyLDEwMCwxMTEsCi0gICAgMTEwLDExNiw5NSwxMDUsMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsODQsMTE0LDcwLDAsMCwwLAotICAgIDQxLDMsMTE0LDEyMywwLDAsMCwxMTQsMTg5LDAsMCwwLDIxOCw3LDk5LDExMSwKLSAgICAxMDksMTEyLDEwNSwxMDgsMTAxLDQxLDQsMTE0LDExMCwwLDAsMCwxMTQsNTUsMCwwLAotICAgIDAsMTE0LDM3LDAsMCwwLDExNCwyMDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDExNSwxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsOTUsMTE2LDExMSw5NSw5OSwxMTEsMTAwLDEwMSwyMTcsMiwwLDAsMTE1LDQsCi0gICAgMCwwLDAsMCw1LDIxLDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LAotICAgIDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwxMCwwLDAsCi0gICAgMCw0MywwLDAsMCw2NywwLDAsMCwxMTUsMTc0LDEsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwwLAotICAgIDEyNSwzLDAsMTIxLDE2LDAsMTE2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LAotICAgIDQsMCw4NywxMTAsMjQsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDYzLDAsCi0gICAgMSwxLDEsMTAwLDEsMCwxMjUsNCwwLDg5LDExMCwyMDIsMCw4OCwxMjEsMTksCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LDAsCi0gICAgODcsMTEwLDE4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwxMDMsMCwxLDEsCi0gICAgMSw4OSwxMTAsMTYyLDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwyLDAsMjUsCi0gICAgMTMxLDEsMCwxMjUsMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsCi0gICAgNCwwLDEzMSwxLDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsCi0gICAgMTA3LDEwLDAsMTE0LDE1OSwwLDEsMSwxLDg5LDExMCwxMDYsMCw4OCwxMjEsMzQsCi0gICAgMCwxMTYsOCwwLDEyNCw2LDAsMTAwLDMsMCwxMjQsNSwwLDEwMCw0LDAsCi0gICAgMTI0LDEsMCwxMDAsNSwwLDEyNCw0LDAsMTMxLDEsMywxMjUsNywwLDg3LAotICAgIDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwwLDEwNywxMCwwLAotICAgIDExNCwyMjAsMCwxLDEsMSw4OSwxMTAsNDUsMCw4OCwxMTYsMTEsMCwxMDAsNiwKLSAgICAwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTI0LDcsCi0gICAgMCwxMDAsNCwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsNCwwLDEwMCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsMSwzLDgzLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwwLAotICAgIDEzMSwxLDAsMTI1LDgsMCwxMjQsMCwwLDEwNiwxMywwLDEyNCw4LDAsMTI0LAotICAgIDIsMCwxMzEsMiwwLDEyNSw5LDAsMTE2LDExLDAsMTAwLDksMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMSwxMTYsMTQsMCwxMDYsMTUsMCwxMiwxMTQsMTcwLDEsMTI0LAotICAgIDQsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDE3MCwxLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMDcsOSwwLDExNCwxNzAsMSwxMTYsMTYsMCwxMjQsOSwwLDEyNCwzLDAsCi0gICAgMTE2LDE3LDAsMTI0LDgsMCwxMzEsMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjEsCi0gICAgMzYsMCwxMjQsMCwwLDEwNiwxOCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsNiwKLSAgICAwLDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsMTAsMCwxMjQsNCwwLDEzMSwyLAotICAgIDAsMSw4NywxMTAsMTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDE2OSwxLAotICAgIDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDksMCw4Myw0MSwxMSwxMjIsMTkwLAotICAgIDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSwKLSAgICA5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsCi0gICAgOTcsMTE2LDExNSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LDMyLDg0LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAotICAgIDQ0LDMyLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLAotICAgIDk3LDEwOCwxMTUsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCwKLSAgICAxMzUsMCwwLDAsMTE0LDE0MCwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLAotICAgIDEyMywxMjUsMTE0LDkxLDAsMCwwLDExNCw5MiwwLDAsMCwxMjIsMTksOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsCi0gICAgMTI1LDEyMiwxMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDQxLDE5LDExNCwKLSAgICAxNTksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwxOTYsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwyMDEsMCwKLSAgICAwLDAsMTE0LDQyLDAsMCwwLDExNCwxNDMsMCwwLDAsMTE0LDEwOSwwLDAsCi0gICAgMCwxMTQsMTM4LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDE0OSwwLDAsMCwKLSAgICAxMTQsMjA3LDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxOSwxMDAsMTExLDExMCwxMTYsCi0gICAgOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsCi0gICAgMTUyLDAsMCwwLDExNCwzMywwLDAsMCwxMTQsMjAwLDAsMCwwLDQxLDEwLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LAotICAgIDE0MSwwLDAsMCwxMTQsOTEsMCwwLDAsMjE4LDIsMTE1LDExNiwxMTQsNTUsMCwKLSAgICAwLDAsMjE4LDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LDk3LDExNCwxNTUsCi0gICAgMCwwLDAsOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKLSAgICAxODgsMCwwLDAsMjI1LDIsMCwwLDExNSw3OCwwLDAsMCwwLDcsMTUsCi0gICAgMSw2LDEsMywxLDE2LDEsMTMsMSwxMSwyLDMsMSwxOSwxLDEzLAotICAgIDEsNSwyLDE2LDEsMywxLDE5LDEsMTMsMSw1LDIsMywxLDksCi0gICAgMSwxMiwxLDEzLDEsMTksMSw1LDIsOSwxLDcsMSwxNSwxLDYsCi0gICAgMSw3LDEsMTUsMSwxOCwxLDEzLDEsMjIsMSwxMiwxLDksMSwxNSwKLSAgICAxLDMsMSwxOSwxLDE3LDEsMTMsMSw1LDEsMTIyLDIxLDgzLDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAotICAgIDEwMCwxMDEsNzgsMTE0LDg5LDAsMCwwLDQxLDEwLDExNCwxMTQsMCwwLDAsMTE0LAotICAgIDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDIwMywwLAotICAgIDAsMCwxMTQsMjA3LDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDE5NSwwLDAsMCwxNjcsMiwwLDAsMTE1LDE0LDAsMCwwLDEyLDIsCi0gICAgMTIsOCwxMiwxMywxMiwxMCwxMiw3LDEyLDEwLDE4LDgsMTE0LDE5NSwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsCi0gICAgMCwwLDAsMCwwLDAsMTE1LDExMiwwLDAsMCwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKLSAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCi0gICAgMCwxMDEsNywwLDEzNSwwLDAsMTAyLDEsMCwxMDAsOCwwLDEwMCw5LDAsCi0gICAgMTM0LDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwxMCwwLDEwMCwKLSAgICAxMSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAwLDEyLDAsMTAwLDEzLAotICAgIDAsMTMyLDAsMCw5MCwxMCwwLDEzNSwwLDAsODMsNDEsMTQsMjE4LDEwLDcwLAotICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsMTAzLDY2LDk3LDExNSwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwKLSAgICAxMTUsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCi0gICAgMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMiwxMTQsCi0gICAgMTExLDExNiwxMTEsOTksMTExLDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwxMTcsMTE1LDk3LDEwMywKLSAgICAxMDEsNDYsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsCi0gICAgMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsNzUsNjcsOTcsOTksMTA0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiw5NywxMTAsMTAwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDc4LDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMywKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODYsCi0gICAgMCwwLDAsMjYsMywwLDAsMTE1LDQsMCwwLDAsMCwzLDksMSwKLSAgICAxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwKLSAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwNywyLDAsMTExLDMzLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDcsMiwwLAotICAgIDgzLDQxLDEsNzgsNDEsMiwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwKLSAgICA5NSwxMTQsMTIwLDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwyMTgsNSwxMTEsCi0gICAgMTE2LDEwNCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMzIsMywwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxLDE4LDEsMTIyLDE3LDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDI2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLAotICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCw2NSw4Myw0MSwKLSAgICAxLDc4LDQxLDMsMjE4LDQsMTA0LDk3LDExNSwxMDQsMTE0LDEwOCwwLDAsMCwxMTQsCi0gICAgMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LDk1LDEwNCw5NywKLSAgICAxMTUsMTA0LDk1LDk1LDM2LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCi0gICAgMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywKLSAgICAxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDMsMCwwLDAsMywwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsCi0gICAgMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDIsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCw4Myw0MSwxLDEyMiwxMDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDMsMjE4LDUsCi0gICAgMTE1LDExNywxMTIsMTAxLDExNCwxMTQsMjExLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsNDEsMSwxMTQsMjEyLDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLAotICAgIDAsMzksMywwLDAsMTE1LDIsMCwwLDAsMCwxMCwxMjIsMjIsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDgzLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwyLDEyNCwzLAorICAgIDEzMSwyLDgzLDAsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LAorICAgIDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSwKKyAgICA0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwKKyAgICAxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwKKyAgICAxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LAorICAgIDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMjE4LDgsCisgICAgMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMDQsMCwwLDAsMTE0LAorICAgIDk0LDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE0LDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDE5NSwyLDAsMCwxMTUsMiwwLDAsMCwwLDgsCisgICAgMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTUwLAorICAgIDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LAorICAgIDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTA0LAorICAgIDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NSwwLDAsCisgICAgMCwyMDUsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLDgzLDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiwKKyAgICA5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwxNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODIsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LAorICAgIDEsMTMxLDEsMTI1LDIsMTIxLDE0LDEyNCwwLDEwNiwxLDEyNCwyLDEzMSwxLDEyNSwKKyAgICAzLDg3LDAsMTEwLDQ4LDQsMCwxMTYsMiwxMDcsMTAsMTE0LDcyLDEsMCwxMjUsCisgICAgNCwxLDAsMTIyLDIwLDExNiwzLDEwMCwxLDEyNCwxLDEwMCwyLDE0MSwyLDEyNCwKKyAgICA0LDEzMCwyLDg3LDAsODksMCwxMDAsMywxMDAsMywxMjUsNCwxMjYsNCw4OCwKKyAgICAwLDExMCwyLDg4LDAsMTE2LDQsMTI0LDMsMTMxLDEsODMsMCw0MSw0LDEyMiwKKyAgICA1Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwKKyAgICAxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDQ2LDEyMiwzOSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLAorICAgIDExNywxMDMsMTA0LDMyLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNDEsNDEsMSwKKyAgICAxMTQsMTAyLDAsMCwwLDc4LDQxLDUsMTE0LDE1NSwwLDAsMCwyMTgsOCwxMDMsCisgICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDExNCw0MiwwLDAsMCwxMTQsMTAzLDAsMCwKKyAgICAwLDExNCwxNTMsMCwwLDAsNDEsNSwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDExNCwxNTEsMCwwLDAsMjE4LDMsMTAxLDEyMCwKKyAgICA5OSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMTIsMiwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDAsMiwxMCwxLDIsMSwxNCwxLDE2LDEsNCwKKyAgICAxLDI4LDEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTQsMzEsMCwwLAorICAgIDAsNDEsMSwyMTgsOSw5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDk5LDMsCisgICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDgsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDEwNiwxLDExNiwyLDEyNCwxLAorICAgIDEyNCwyLDEwMCwxLDEwMCwyLDEyNCwzLDEwMCwzLDE0MSw2LDgzLDAsNDEsNCwKKyAgICAxMjIsMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLAorICAgIDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMCw5NywxMTYsCisgICAgOTcsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDk5LDk3LDExMCwzMiwKKyAgICA5OCwxMDEsMzIsOTcsMTEwLDEyMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLAorICAgIDQxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMTE0LDE4NiwwLDAsMCw4NCw0MSwyLDIxOCwxMiwxMDAsMTExLAorICAgIDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LDExNCw3MiwwLDAsMCw0MSwKKyAgICAzLDExNCwxMTgsMCwwLDAsMTE0LDE4NSwwLDAsMCwyMTgsNyw5OSwxMTEsMTA5LAorICAgIDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCwxMDQsMCwwLDAsMTE0LDU2LDAsMCwwLAorICAgIDExNCwzNywwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsMjIyLDIsMCwwLDExNSw0LDAsCisgICAgMCwwLDAsNSwxMiwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMTAsMCwwLDAsCisgICAgNDMsMCwwLDAsNjcsMCwwLDAsMTE1LDk0LDEsMCwwLDEyNCwwLDEwNiwKKyAgICAwLDEyNCwxLDEzMSwxLDEyNSwyLDEwMCwxLDEyNSwzLDEyMSwxMiwxMTYsMSwxMjQsCisgICAgMiwxMzEsMSwxMjUsNCw4NywwLDExMCwyNCw0LDAsMTE2LDIsMTA3LDEwLDExNCwKKyAgICA1MCwxLDAsMSwwLDEsMCwxMDAsMSwxMjUsNCw4OSwwLDExMCwxNjIsODgsCisgICAgMCwxMjEsMTQsMTI0LDAsMTA2LDMsMTI0LDIsMTMxLDEsMTI1LDUsODcsMCwxMTAsCisgICAgMjAsNCwwLDExNiw0LDEwNywxMCwxMTQsODYsMSwwLDEsMCwxLDAsODksCisgICAgMCwxMTAsMTI2LDg4LDAsMTE2LDUsMTI0LDUsMTAwLDIsMjUsMCwxMzEsMSwxMjUsCisgICAgMywxMjEsMTQsMTI0LDAsMTA2LDYsMTI0LDQsMTMxLDEsMTI1LDYsODcsMCwxMTAsCisgICAgMjAsNCwwLDExNiw3LDEwNywxMCwxMTQsMTM0LDEsMCwxLDAsMSwwLDg5LAorICAgIDAsMTEwLDc4LDg4LDAsMTIxLDIwLDExNiw4LDEyNCw2LDEyNCw1LDEyNCwxLDEyNCwKKyAgICA0LDEwMCwzLDE0MSw0LDEyNSw3LDg3LDAsMTEwLDI0LDQsMCwxMTYsOSwxMTYsCisgICAgMTAsMTAyLDIsMTA3LDEwLDExNCwxODAsMSwwLDEsMCwxLDAsODksMCwxMTAsCisgICAgMzIsODgsMCwxMTYsMTEsMTA2LDEyLDEwMCw0LDEyNCw0LDEyNCwyLDEzMSwzLDEsCisgICAgMCwxMTYsMTMsMTI0LDcsMTI0LDEsMTI0LDQsMTI0LDIsMTAwLDUsMTQxLDQsODMsCisgICAgMCwxMjQsMCwxMDYsNiwxMjQsMiwxMzEsMSwxMjUsOCwxMjQsMCwxMDYsMTQsMTI0LAorICAgIDgsMTI0LDIsMTMxLDIsMTI1LDksMTE2LDExLDEwNiwxMiwxMDAsNiwxMjQsMiwxMzEsCisgICAgMiwxLDAsMTE2LDE1LDEwNiwxNiwxMiwwLDE0NCwxLDExNCw5MCwxMjQsNCwxMDAsCisgICAgMSwxMDcsOSwxNDQsMSwxMTQsOTAsMTI0LDMsMTAwLDEsMTA3LDksMTQ0LDEsMTE0LAorICAgIDkwLDExNiwxNywxMjQsOSwxMjQsMywxMTYsMTgsMTI0LDgsMTMxLDEsMTMxLDMsMTI1LAorICAgIDYsMTIxLDMwLDEyNCwwLDEwNiwxOSwxMjQsMiwxMjQsNCwxMjQsNiwxMzEsMywxLAorICAgIDAsMTE2LDExLDEwNiwxMiwxMDAsNywxMjQsNCwxMzEsMiwxLDAsODcsMCwxMTAsCisgICAgMjIsNCwwLDExNiwyLDEwNywxMCwxNDQsMSwxMTQsODgsMSwwLDEsMCwxLAorICAgIDAsODksMCwxMTAsMiw4OCwwLDEyNCw5LDgzLDAsNDEsOCwxMjIsMTkwLDY3LAorICAgIDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwKKyAgICAxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsMTA1LAorICAgIDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTQsCisgICAgMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCisgICAgMTE2LDExNSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiwxMDEsMTAwLDQ2LDMyLDg0LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQ0LAorICAgIDMyLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk3LAorICAgIDEwOCwxMTUsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICAxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCwxMzAsCisgICAgMCwwLDAsNDEsMywxMTQsMTM2LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LAorICAgIDM3LDAsMCwwLDEyMiwxMywxMjMsMTI1LDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsCisgICAgMzIsMTIzLDEyNSw0MSwzLDExNCwxMDIsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICA5NCwwLDAsMCwxMjIsMTksOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksCisgICAgMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMTI1LDEyMiwxMCwxMTksMTE0LDExMSwxMTYsMTAxLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDQxLDIwLDExNCwxNTUsMCwwLDAsMTE0LDgzLDAsMCwKKyAgICAwLDExNCw3MCwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwxOTIsMCwwLDAsCisgICAgMTE0LDE2LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwKKyAgICAxMzksMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMTgsCisgICAgMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwyMDMsMCwKKyAgICAwLDAsMTE0LDgsMCwwLDAsMjE4LDE5LDEwMCwxMTEsMTEwLDExNiw5NSwxMTksMTE0LAorICAgIDEwNSwxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxNDgsMCwwLAorICAgIDAsMTE0LDMzLDAsMCwwLDExNCwxOTYsMCwwLDAsNDEsMTAsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMTIzLDAsMCwwLDExNCw5NCwwLDAsMCwxMTQsMTM3LDAsMCwKKyAgICAwLDExNCw5MywwLDAsMCwyMTgsMiwxMTUsMTE2LDExNCw1NiwwLDAsMCwyMTgsCisgICAgMTAsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCw5NywxMTYsOTcsMTE0LDE1MSwwLDAsMCwKKyAgICA5MCwxMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NCwwLDAsCisgICAgMCwyMzAsMiwwLDAsMTE1LDc4LDAsMCwwLDAsNywxMCwxLDQsMSwKKyAgICAyLDEsMTIsMSwxNCwxLDEwLDIsMiwxLDE0LDEsMTQsMSw2LDIsCisgICAgMTIsMSwyLDEsMTQsMSwxNCwxLDYsMiwyLDEsNCwxLDQsMSwKKyAgICAxMiwxLDE4LDEsNiwyLDgsMSw2LDEsNiwxLDIsMSw4LDEsCisgICAgMTAsMSwxMiwxLDEyLDEsMjAsMSwxMCwxLDYsMSwxMCwxLDIsMSwKKyAgICAxNCwxLDE2LDEsMTYsMSw2LDEsMTIyLDIxLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNzgsCisgICAgMTE0LDkxLDAsMCwwLDQxLDEwLDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTEwLDAsMCwwLDExNCwxOTMsMCwwLDAsMTE0LDE5NCwwLDAsMCwKKyAgICAxMTQsMTk2LDAsMCwwLDExNCwxOTUsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsCisgICAgMjAzLDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5MSwwLAorICAgIDAsMCwxNzIsMiwwLDAsMTE1LDE0LDAsMCwwLDgsMiw4LDgsOCwKKyAgICAxMyw4LDEwLDgsNyw4LDEwLDE0LDgsMTE0LDE5MSwwLDAsMCw5OSwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDAsCisgICAgMCwwLDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwKKyAgICAxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsCisgICAgMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMSw3LDEzNSwwLAorICAgIDEwMiwxLDEwMCw4LDEwMCw5LDEzMiw4LDEzMSwxLDkwLDgsMTAxLDcsMTAwLDEwLAorICAgIDEwMCwxMSwxMzIsMCwxMzEsMSw5MCw5LDEwMCwxMiwxMDAsMTMsMTMyLDAsOTAsMTAsCisgICAgMTM1LDAsOTAsMTEsMTAwLDE0LDgzLDAsNDEsMTUsMjE4LDEwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsMTAzLDY2LDk3LDExNSwxMDEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMiwxMTQsMTExLDExNiwxMTEsCisgICAgOTksMTExLDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwxMTcsMTE1LDk3LDEwMywxMDEsNDYsOTksCisgICAgMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwxMjQsCisgICAgMiwxMjQsMCw5NSwxLDEwMCwxLDgzLDAsNDEsMiwxMjIsNzUsNjcsOTcsOTksCisgICAgMTA0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMiwxMTEsMTE3LDExMCwKKyAgICAxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDc4LDQxLDIsMTE0LDEwMiwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLAorICAgIDAsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxODIsMCwwLDAsMzEsMywwLDAsMTE1LDQsCisgICAgMCwwLDAsMCwzLDYsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwyNCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMDYsMCwxMDcsMiwKKyAgICAxMTEsMjIsMTI0LDAsMTA2LDEsMTI0LDEsMTA2LDEsMTA3LDIsODMsMCw0MSwxLAorICAgIDc4LDQxLDIsMjE4LDksOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsOTUsMTE0LDExNSwKKyAgICAwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMjE4LDUsMTExLDExNiwxMDQsMTAxLAorICAgIDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDM3LDMsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMSwxMiwxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAorICAgIDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMTYsMCwxMjQsMCwxMDYsMiwKKyAgICAxMzEsMSw2NSwwLDgzLDAsNDEsMSw3OCw0MSwzLDIxOCw0LDEwNCw5NywxMTUsCisgICAgMTA0LDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwyMTgsOCw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw0MSwzLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDExNiwwLDExNiwxLDEyNCwwLDEzMSwyLDEwNiwyLDEyNCwKKyAgICAxLDEzMSwxLDgzLDAsNDEsMSwxMjIsMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSwKKyAgICA5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwzLDIxOCwKKyAgICA1LDExNSwxMTcsMTEyLDEwMSwxMTQsMTE0LDIwNywwLDAsMCwxMTQsMTkwLDAsMCwwLAorICAgIDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDQxLDEsMTE0LDIwOCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkwLDAsCisgICAgMCwwLDQ0LDMsMCwwLDExNSwyLDAsMCwwLDAsMTAsMTIyLDIyLDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw2LDAsMCwwLDEyNCwKKyAgICAwLDEwNiwwLDgzLDAsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKICAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAogICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsCiAgICAgMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDUxLDMsMCwwLDExNSwyLAorICAgIDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE1NSwwLDAsMCw1NiwzLDAsMCwxMTUsMiwKICAgICAwLDAsMCwwLDMsMTIyLDIzLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAogICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTksMiwKICAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsOSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLAotICAgIDAsMTAwLDEsMCwxMzEsMiwwLDE0MywxNywwLDEyNSwyLDAsMTI0LDIsMCwKLSAgICAxMDYsMiwwLDEzMSwwLDAsODMsODcsMTAwLDIsMCw4MSw4Miw4OCwxMDAsMiwKLSAgICAwLDgzLDQxLDMsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTAwLDk3LDExNiw5NywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTEyLDk3LDExNiwxMDQsMzIsCi0gICAgOTcsMTE1LDMyLDExNCw5NywxMTksMzIsOTgsMTIxLDExNiwxMDEsMTE1LDQ2LDIxOCwxLDExNCwKLSAgICA3OCw0MSwzLDExNCw1MSwwLDAsMCwxMTQsNTIsMCwwLDAsOTAsNCwxMTQsCi0gICAgMTAxLDk3LDEwMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKLSAgICA1NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMjAxLDAsMCwwLDU2LDMsMCwwLDExNSw0LDAsMCwKLSAgICAwLDAsMiwyMSwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSwxMSwxMTQsMTE0LDAsMCwKLSAgICAwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLAotICAgIDExNCwxODYsMCwwLDAsMTE0LDIxNCwwLDAsMCwxMTQsMjE2LDAsMCwwLDExNCwKLSAgICAxMjUsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwyMDEsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsCi0gICAgMjEyLDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTEsMCwwLDAsMjEsMywKLSAgICAwLDAsMTE1LDE0LDAsMCwwLDEyLDMsNiwyLDEyLDYsMTIsNCwxMiwKLSAgICAzLDI0LDEyLDE4LDUsMTE0LDIxMSwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA2NCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMSw5MCw2LDAsCi0gICAgMTAwLDEwLDAsODMsNDEsMTEsMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDYyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCi0gICAgMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwKLSAgICAwLDEyNCwyLDAsMTA2LDEsMCwxMDAsMiwwLDEyNCwyLDAsMTA2LDIsMCwKLSAgICAxMDUsMiwwLDgzLDQxLDMsMTIyLDMzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMTQsMTM1LDAsMCwwLDExNCwxMzYsCi0gICAgMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksCi0gICAgMTE2LDEwNSwxMDksMTAxLDkwLDcsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsCi0gICAgMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMjA5LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTgsMCwKLSAgICAwLDAsNjYsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLAotICAgIDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDM0LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMSwKLSAgICAwLDEyNCw0LDAsMTMxLDIsMSw4Myw0MSwyLDc4LDIxOCw1LDk1LDEwOSwxMTEsCi0gICAgMTAwLDEwMSw0MSwyLDExNCw5OSwwLDAsMCwxMTQsMTk5LDAsMCwwLDQxLDUsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCwKLSAgICA1NSwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIwMCwwLDAsMCw3MSwzLDAsCi0gICAgMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsMzIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMjEsMCwwLAotICAgIDAsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsOSwKLSAgICAwLDAsMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LAotICAgIDUsMCwxMDMsMCwwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsODAsCi0gICAgMCwxMTYsMSwwLDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsMCwKLSAgICAwLDEyNCw0LDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywwLAotICAgIDEyNCw2LDAsMTA2LDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsMCwKLSAgICA4NywxMjAsMTMyLDAsMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsMTE4LAotICAgIDAsMTI1LDcsMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLAotICAgIDEyNSw0LDAsMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLAotICAgIDEsMCwxLDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LAotICAgIDAsMSwxLDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywKLSAgICAxMCwwLDExNCwyMTEsMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwwLAotICAgIDEwMCwxLDAsMTI0LDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwwLAotICAgIDgzLDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsCi0gICAgMTEzLDk0LDAsODgsMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LDEsCi0gICAgMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLDMsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LDAsCi0gICAgMTA3LDEwLDAsMTE0LDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LDksCi0gICAgMCwxMDAsMSwwLDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsODksCi0gICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwwLAotICAgIDg4LDEwMCwyLDAsODMsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsCi0gICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDc4LDEyMiwxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LAotICAgIDQxLDExLDExNCw0MCwwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDE2NSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDkwLDUsMTA5LDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwKLSAgICAxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQyLDAsMCwwLDExNCwxMDcsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDQxLDksMTE0LDExMCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDU1LDAsMCwwLDExNCwyMjEsMCwwLDAsMjE4LDYsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwxMTQsOTYsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwKLSAgICAyNSwwLDAsMCwxMTQsMjAyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsNzYsMywwLAotICAgIDAsMTE1LDM4LDAsMCwwLDAsMiwxOCwxLDYsMiwyMiwxLDE4LDEsCi0gICAgMTcsMiwxOSwxLDE1LDEsMywxLDE3LDEsMTMsMiw3LDEsMTgsMywKLSAgICAxNiwxLDI3LDEsMywxLDE2LDEsMTcsMSwxOCwyLDEyMiwyNSw4MywxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsNDEsNywxMTQsMTE0LDAsMCwwLDExNCwKLSAgICAxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwyMTksMCwwLDAsNjIsMywwLDAsMTE1LDgsMCwwLDAsMTIsCi0gICAgMiw2LDIsMTIsNSwxMiw1LDExNCwyMTksMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNDYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLAotICAgIDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwKLSAgICAxMDAsNiwwLDgzLDQxLDcsMjE4LDIwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLAotICAgIDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw0NSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKLSAgICAxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNzYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI1LDMsMCwxMTYsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwKLSAgICAyLDAsMTI0LDIsMCwxMzEsMSwyLDEyNSw0LDAsMTE2LDMsMCwxMjQsNCwKLSAgICAwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDEsMiwKLSAgICA4Myw0MSw0LDc4LDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw5MSwKLSAgICAwLDAsMCw0MSw0LDExNCwxNTksMCwwLDAsMTE0LDIwMSwwLDAsMCwxMTQsCi0gICAgMTQzLDAsMCwwLDExNCwxNDksMCwwLDAsNDEsNSwxMTQsMTEwLDAsMCwwLAotICAgIDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsCi0gICAgMjEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxODgsMCwwLDAsMTA5LDMsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsMSwxNSwxLDE1LDEsMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAotICAgIDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDExNSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsCi0gICAgNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDIwMywwLDAsMCwxMTUsMywwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwyLDEyMiwzMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDc4LDQxLDYsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwKLSAgICAyMDMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMDUsMywwLAotICAgIDAsMTE1LDYsMCwwLDAsMTIsMiw2LDIsMTIsNiwxMTQsMjI0LDAsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsNjQsMCwwLDAsMTE1LDEzNiwwLDAsMCwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKLSAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCi0gICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsCi0gICAgMTAwLDExLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLAotICAgIDAsMCw5MCw5LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwKLSAgICAwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLDAsOTAsMTEsMCwxMDEsMTIsMCwKLSAgICAxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTMsMCwxMDAsCi0gICAgMjAsMCw4Myw0MSwyMSwyMTgsMTksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDkzLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsCi0gICAgMTA0LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTksMTExLAotICAgIDExNCwxMDcsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMywwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsCi0gICAgMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwKLSAgICAwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwxMDgsCi0gICAgMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsCi0gICAgMTA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDEzMiwzLDAsCi0gICAgMCwxMTUsNCwwLDAsMCwwLDEsOSwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsMiwKLSAgICAwLDExMSwzMywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsCi0gICAgMTA3LDIsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIxMiwwLDAsMCwxMTQsMTIwLAotICAgIDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMjEzLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTQsCi0gICAgMCwwLDAsMTM2LDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwxLAotICAgIDEyMiwyNiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAxLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCw2NSw4MywKLSAgICA0MSwxLDc4LDQxLDMsMTE0LDIxNSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwKLSAgICAzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxNiwwLDAsMCwxNDAsCi0gICAgMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICA5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLAotICAgIDAsMTMxLDIsMCwxMjUsMiwwLDExNiw0LDAsMTAwLDEsMCwxMjQsMSwwLAotICAgIDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEzMSwzLDAsMSwxMjQsMiwwLAotICAgIDgzLDQxLDIsMTIyLDM4LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywxMTAsMzIsMTE3LAotICAgIDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsCi0gICAgMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwzOCwxMDEsMTIwLDExNiwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCi0gICAgMTE0LDEyNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw3LDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsCi0gICAgMTQ3LDAsMCwwLDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDAsMTIxLDExMCwKLSAgICA5NywxMDksMTA1LDk5LDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LAotICAgIDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTg3LDAsMCwwLDE0MywzLDAsMCwxMTUsMTAsMCwwLAotICAgIDAsMCwyLDYsMSwxNSwxLDYsMSwxNiwxLDEyMiwzMyw2OSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsNCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLAotICAgIDEsMTAwLDIsMCw4Myw0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAotICAgIDEwNSwxMjIsMTAxLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLAotICAgIDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCw0MSw3LDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTQ3LAotICAgIDAsMCwwLDkwLDEyLDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsCi0gICAgOTksMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICA0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkyLDAsMCwwLAotICAgIDE1MSwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSw2LDEsMTIyLAotICAgIDMxLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAotICAgIDAsMywwLDAsMCwxMTUsNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwNiwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwKLSAgICAxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LAotICAgIDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsNDksODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDExNCwKLSAgICAzMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw0LDAsMCwwLDUxLDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwKLSAgICAwLDkzLDIxLDAsMTI1LDEsMCwxMzYsMCwwLDEwMCwwLDAsMTI0LDEsMCwKLSAgICAyMywxMDcsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQxLDIsMTE0LAotICAgIDE4NiwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsCi0gICAgMCwyMTgsNiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTYwLDMsMCwwLDExNSwKLSAgICAyLDAsMCwwLDYsMSwxMjIsNDksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAotICAgIDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw0LDExNCw0MCwwLDAsMCwKLSAgICAxMTQsMzcsMCwwLDAsMjE4LDMsOTcsMTEwLDEyMSwyMTgsMTgsNjksODgsODQsNjksCi0gICAgNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsNDEsCi0gICAgMSwxMTQsMjI3LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsCi0gICAgMTU3LDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxOSwxLDE4LDEsMTIyLAotICAgIDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwKLSAgICA2Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKLSAgICA5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsCi0gICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDE4OCwwLDAsMCwxNjMsMywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCi0gICAgNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCi0gICAgMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICAzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjAzLDAsMCwwLDE2NywzLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDIsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNywwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsCi0gICAgMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LAotICAgIDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwKLSAgICAxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDE3MSwzLDAsCi0gICAgMCwxMTUsMiwwLDAsMCwwLDMsMTIyLDMyLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsCi0gICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxNCwxMTQsMTE0LDAsCi0gICAgMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwKLSAgICAwLDExNCwxODYsMCwwLDAsMTE0LDIxNCwwLDAsMCwxMTQsMjE2LDAsMCwwLAotICAgIDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwKLSAgICAxODgsMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMTI1LDAsMCwwLDExNCwxNTksCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNSwwLDAsMCwxMjQsMywwLDAsCi0gICAgMTE1LDIwLDAsMCwwLDEyLDYsNiwyLDEyLDQsMTIsNCwxMiwzLDEyLAotICAgIDgsMTIsNiwxMiw2LDEyLDQsMTIsNCwxMTQsMjI1LDAsMCwwLDk5LDAsCisgICAgMCwwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEwMCwxLAorICAgIDEzMSwyLDE0MywxMCwxMjUsMiwxMjQsMiwxMDYsMiwxMzEsMCw4MywwLDgxLDAsCisgICAgODIsMCw4OCwwLDEwMCwyLDgzLDAsNDEsMywxMjIsMzksODIsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTUsMzIsMTE0LDk3LDExOSwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsNDYsMjE4LDEsMTE0LDc4LDQxLDMsMTE0LDUyLDAsMCwwLDExNCw1MywKKyAgICAwLDAsMCw5MCw0LDExNCwxMDEsOTcsMTAwLDQxLDMsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTcsMCwwLDAsNjEsMywKKyAgICAwLDAsMTE1LDQsMCwwLDAsMCwyLDE0LDEsMTIyLDE5LDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LAorICAgIDc4LDQxLDEyLDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsCisgICAgMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjEwLDAsMCwKKyAgICAwLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTkwLDAsMCwwLAorICAgIDExNCwxNTUsMCwwLDAsMTE0LDE5NywwLDAsMCw5MCwxMyw5NSw5NSw5OSwxMDgsCisgICAgOTcsMTE1LDExNSw5OSwxMDEsMTA4LDEwOCw5NSw5NSwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCw0MSwxLDExNCwyMDgsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAorICAgIDIwNywwLDAsMCwyNiwzLDAsMCwxMTUsMTQsMCwwLDAsOCwzLDQsCisgICAgMiw4LDYsOCw0LDgsMywxNiwxMiwxMiw1LDExNCwyMDcsMCwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsNDYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCwKKyAgICA5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDE1NiwxLDEwMCw4LDEwMCw5LAorICAgIDEzMiwyLDkwLDYsMTAwLDEwLDgzLDAsNDEsMTEsMjE4LDE2LDgzLDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDYyLDY3LDExMSwKKyAgICAxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMTE2LDAsMTI0LDEsMTMxLDEsMTI1LDIsMTI0LDIsCisgICAgMTA2LDEsMTI0LDIsMTA2LDIsMTAwLDEsMTU2LDIsODMsMCw0MSwyLDEyMiwzMywKKyAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCwKKyAgICA5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgNDYsNDEsMiwxMTQsMTMwLDAsMCwwLDExNCwxMzEsMCwwLDAsNDEsMywxMTQsCisgICAgNDEsMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDkwLDcsCisgICAgMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwzNywKKyAgICAwLDAsMCwxMTQsMjA1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLDAsNzEsMywwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwyLDgsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksCisgICAgMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsMCwwLDUsCisgICAgMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjQsMCwwLDAsCisgICAgMTE2LDAsMTI0LDEsMTMxLDEsMTI1LDQsMTI0LDAsMTA2LDEsMTI0LDIsMTI0LDMsCisgICAgMTI0LDQsMTAwLDEsMTQxLDMsODMsMCw0MSwyLDc4LDQxLDEsMjE4LDUsOTUsCisgICAgMTA5LDExMSwxMDAsMTAxLDQxLDIsMTE0LDEwMSwwLDAsMCwxMTQsMTk1LDAsMCwwLAorICAgIDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDkzLDAsMCwKKyAgICAwLDExNCw1NiwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NiwwLDAsMCw3NiwKKyAgICAzLDAsMCwxMTUsNCwwLDAsMCwwLDIsOCwxLDEyMiwzMiw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTA1LDE4MiwKKyAgICAxLDAsMCw0MSwxLDExNCwyMTcsMCwwLDAsOTksMywwLDAsMCwxLAorICAgIDAsMCwwLDksMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDI1MCwwLDAsMCwxMTYsMCwxMjQsMSwxMzEsMSw5MiwyLDEyNSw0LDEyNSw1LAorICAgIDEwMywwLDEyNSw2LDEyMCw0MCwxMjQsNCwxMTQsNTYsMTE2LDEsMTI0LDQsMTMxLDEsCisgICAgMTIsMCwxMTQsNTYsMTE2LDAsMTI0LDQsMTMxLDEsOTIsMiwxMjUsNCwxMjUsNywKKyAgICAxMjQsNiwxMDYsMiwxMjQsNywxMzEsMSwxLDAsMTEzLDE4LDg3LDAsMTIwLDEwOCwKKyAgICAxMTYsMywxMjQsNiwxMzEsMSw2OCwwLDkzLDk2LDEyNSw3LDExNiw0LDEyNCw0LAorICAgIDEyNCw3LDEzMSwyLDEyNSw0LDEyMSwxNCwxMTYsNSwxMDYsNiwxMjQsNCwxMzEsMSwKKyAgICAxLDAsODcsMCwxMTMsNjgsNCwwLDExNiw3LDEwNywxMCwxMTQsMTE4LDEsMCwKKyAgICAxLDAsMSwwLDExOSw2OCw4OSwwLDExMyw2OCw0LDAsMTE2LDgsMTA3LDEwLAorICAgIDExNCwxNjIsMSwwLDEyNSw4LDEsMCwxMjIsMTgsMTE2LDksMTA2LDEwLDEwMCwxLAorICAgIDEyNCw0LDEyNCw4LDEzMSwzLDEsMCwxMDAsMiw4MywwLDEwMCwyLDEyNSw4LAorICAgIDEyNiw4LDg4LDAsMTEzLDY4LDg4LDAsMTEzLDY4LDg3LDAsMTIxLDI4LDExNiwxMSwKKyAgICAxMjQsMSwxMjQsMiwxMjQsMywxMzEsMywxLDAsMTE2LDksMTA2LDEwLDEwMCwzLAorICAgIDEyNCwxLDEzMSwyLDEsMCw4NywwLDExMCw0OCw0LDAsMTE2LDgsMTA3LDEwLAorICAgIDExNCwyNDQsMSwwLDEyNSw4LDEsMCwxMjIsMjAsMTE2LDksMTA2LDEwLDEwMCwxLAorICAgIDEyNCwxLDEyNCw4LDEzMSwzLDEsMCw4NywwLDg5LDAsMTAwLDIsMTAwLDIsCisgICAgMTI1LDgsMTI2LDgsODgsMCwxMTAsMiw4OCwwLDEwMCwyLDgzLDAsNDEsNCwKKyAgICAxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsCisgICAgMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEyMiwyNyw5OSwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLAorICAgIDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwxMiw5OSwxMTQsMTAxLAorICAgIDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQxLDEyLDExNCw0MCwwLDAsMCwKKyAgICAxMTQsNDgsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDMwLDAsMCwwLDExNCwzLDAsMCwwLDkwLDUsMTA5LDEwNywxMDAsMTA1LDExNCwKKyAgICAyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE0LDQyLDAsMCwwLDExNCwxMTgsMCwwLDAsMTE0LDEzMywwLDAsMCwKKyAgICAxMTQsNTgsMCwwLDAsNDEsOSwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsCisgICAgMCwxMTQsNTYsMCwwLDAsMTE0LDIxNywwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDExNCw5OCwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDI1LDAsCisgICAgMCwwLDExNCwxOTgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE5NSwwLDAsMCw4MSwzLDAsMCwxMTUsCisgICAgNDIsMCwwLDAsMCwyLDEyLDEsNCwyLDE2LDEsMTIsMSwxNCwyLAorICAgIDE0LDEsMTAsMSwyLDEsMTQsMSwxNCwyLDYsMSwxNiwzLDYsMSwKKyAgICA4LDEsMjAsMSwyLDEsMTIsMSwxNiwxLDE2LDIsOCwxLDEyMiwyNSwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsNDEsNywxMTQsMTA5LDAsMCwKKyAgICAwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLAorICAgIDExNCwxOTQsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwyMTUsMCwwLDAsNjcsMywwLDAsMTE1LDgsMCwwLAorICAgIDAsOCwyLDQsMiw4LDUsOCw1LDExNCwyMTUsMCwwLDAsOTksMCwKICAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwKLSAgICAwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwKLSAgICAzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksCi0gICAgMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLAotICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsCi0gICAgOTUsMSwwLDExNiwyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCw5NSwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsCi0gICAgMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDIxOCwxMSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsCi0gICAgMCwwLDE4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDEsOSwxLDksCi0gICAgMSwyMSwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAotICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLAotICAgIDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCwKLSAgICA4MywxMjQsMSwwLDEwMCw1LDAsMTAyLDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywKLSAgICAxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw2MCwwLAotICAgIDAsMCwxMTQsMzIsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDkwLDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMTQsOCwwLAotICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMjMyLDAsMCwwLDExNCwzNCwKLSAgICAwLDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDIyMywwLDAsMCwyMTgsCi0gICAgMywxMDAsMTExLDExNiw5MCwyLDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxOTAsMywwLDAsMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LAotICAgIDMsMTIyLDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwKLSAgICAxLDAsMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDI1LDEyNCwyLDAsMTMxLDIsMCw4Myw0MSwxLDc4LDQxLDQsMTE0LDIzOSwKLSAgICAwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCw4LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTgsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw5MCwxNCwxMTIsOTcsMTE2LDEwNCw5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMjM0LDAsMCwwLDIwMCwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsCi0gICAgMTgsMSwxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKLSAgICAxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTE4LDAsMCwwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDExMSwwLDEyNCwwLAotICAgIDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwMiwwLDEyNCwKLSAgICAyLDAsMTA2LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwMiwwLDEyNCwyLAotICAgIDAsMTA2LDYsMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLDAsCi0gICAgOTUsNywwLDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsMTI0LDAsMCwxMDYsCi0gICAgNywwLDgzLDQxLDEsNzgsNDEsOCwxMTQsOTUsMCwwLDAsMTE0LDIzNCwwLAotICAgIDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzYsMCwwLDAsMTE0LDIzMiwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDIzMywwLDAsMCwKLSAgICA0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCwKLSAgICA5OSwxMTcsMTA4LDk3LDExNiwxMDEsMjA0LDMsMCwwLDExNSwxNiwwLDAsMCwwLAotICAgIDIsMTgsMSwxNSwxLDIxLDMsMjcsMSw5LDEsMTIsMSw5LDEsMTIyLAotICAgIDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwKLSAgICAxMTQsMTE0LDI0MSwwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsCi0gICAgMTA1LDExNiwxMDEsMTE0LDk1LDk1LDIxNywzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMzMsMCwwLDAsMTE0LDI0MSwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsCi0gICAgOTUsOTUsMjIwLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjIsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LAotICAgIDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwKLSAgICAxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwKLSAgICAyLDc4LDEyMiwyMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNDksMCwwLDAsMTE0LAotICAgIDIzMywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDk1LDIyMywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwKLSAgICAwLDgzLDQxLDEsNzgsNDEsMSwxMTQsMjQxLDAsMCwwLDQxLDIsMTE0LDExMCwKKyAgICAwLDAsMCwxMTUsMzIsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLAorICAgIDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwKKyAgICAxMzIsMCw5MCw1LDEwMCw2LDgzLDAsNDEsNywyMTgsMjAsODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMTIyLDQ1LDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA0LAorICAgIDk3LDExMCwxMDAsMTA4LDEwMSwxMTUsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwKKyAgICAxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0Niw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0OCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsCisgICAgMSwxMjUsMiwxMjQsMCwxMDYsMSwxMjQsMiwxMzEsMSwxMjUsMywxMTYsMiwxMjQsCisgICAgMywxMjQsMSwxMjQsMiwxMDAsMSwxNDEsMywxMjUsNCwxMTYsMywxMjQsNCwxMjQsCisgICAgMSwxMjQsMiwxMDAsMiwxNDEsMyw4MywwLDQxLDMsNzgsNDEsMiwxMTQsMTAyLAorICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMDIsMCwwLDAsMTE0LAorICAgIDkzLDAsMCwwLDQxLDQsMTE0LDE1NSwwLDAsMCwxMTQsMTk3LDAsMCwwLAorICAgIDExNCwxMzksMCwwLDAsMTE0LDE0NSwwLDAsMCw0MSw1LDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU2LDAsMCwwLAorICAgIDExNCwyMDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTYsMywwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwxLDEwLDEsMTAsMSwxNCwxLDEyMiwyOSw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LAorICAgIDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLAorICAgIDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LAorICAgIDEyMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwxMTQsMTk5LDAsMCwwLDEyMiwzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDIsMTIyLDMxLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsCisgICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzgsNDEsNiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODQsMCwwLDAsCisgICAgMTE0LDE5OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjIwLDAsMCwwLDExMiwzLAorICAgIDAsMCwxMTUsNiwwLDAsMCw4LDIsNCwyLDgsNiwxMTQsMjIwLDAsCisgICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsNjQsMCwwLDAsMTE1LDkyLDAsMCwwLDEwMSwwLDkwLDEsCisgICAgMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsCisgICAgMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LAorICAgIDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LAorICAgIDEwMCwxMiwxMDAsMTMsMTMyLDAsOTAsOSwxMDAsMTQsMTAwLDE1LDEzMiwwLDkwLDEwLAorICAgIDEwMCwxNiwxMDAsMTcsMTMyLDAsOTAsMTEsMTAxLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsCisgICAgMTMxLDEsOTAsMTMsMTAwLDIwLDgzLDAsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwKKyAgICA5Myw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksCisgICAgMTE2LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLAorICAgIDExNiwxMTEsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LAorICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsCisgICAgMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMTAyLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsMTE0LDEwMiwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMzksMywwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDI0LDAsMCwKKyAgICAwLDEyNCwwLDEwNiwwLDEyNCwxLDEwNiwwLDEwNywyLDExMSwyMiwxMjQsMCwxMDYsCisgICAgMSwxMjQsMSwxMDYsMSwxMDcsMiw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjA4LAorICAgIDAsMCwwLDExNCwxMTUsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICAyMDksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDIxMCwwLDAsMCwxNDMsMywwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwxLDEyLDEsMTIyLDI2LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsCisgICAgOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LAorICAgIDEsMTMxLDEsMTE2LDAsMTI0LDAsMTA2LDIsMTMxLDEsNjUsMCw4MywwLDQxLAorICAgIDEsNzgsNDEsMywxMTQsMjExLDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDM3LAorICAgIDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjEyLDAsMCwwLDE0NywzLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwKKyAgICAwLDExNiwwLDEwNiwxLDExNiwyLDEwNiwzLDEyNCwxLDEzMSwyLDEyNSwyLDExNiwKKyAgICAwLDEwNiw0LDEwMCwxLDEyNCwxLDEwNiw1LDEyNCwwLDEwNiw2LDEzMSwzLDEsCisgICAgMCwxMjQsMiw4MywwLDQxLDIsMTIyLDM4LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwKKyAgICA5NywxMTAsMzIsMTE3LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDMyLDEwMSwKKyAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKKyAgICAzOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw0MSw3LDExNCwxMTgsMCwwLDAsMTE0LDE4NSwKKyAgICAwLDAsMCwxMTQsMTQzLDAsMCwwLDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICA5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNCwxMzMsMCwwLDAsMTE0LDEwMiwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxNjIsCisgICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDE1MCwzLDAsMCwKKyAgICAxMTUsMTAsMCwwLDAsMCwyLDQsMSwxMCwxLDYsMSwxMiwxLDEyMiwKKyAgICAzMyw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMTA2LDEsCisgICAgMTE2LDIsMTA2LDMsMTI0LDEsMTMxLDIsMSwwLDExNiwwLDEwNiw0LDEwMCwxLAorICAgIDEyNCwwLDEwNiw1LDEyNCwwLDEwNiw2LDEzMSwzLDEsMCwxMDAsMiw4MywwLAorICAgIDQxLDMsMTIyLDMwLDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsOTcsCisgICAgMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDEyMiw0MCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LAorICAgIDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDQxLDcsMTE0LAorICAgIDExOCwwLDAsMCwxMTQsMTg1LDAsMCwwLDExNCwxNDMsMCwwLDAsOTAsMTIsCisgICAgMTAxLDEyMCwxMDEsOTksOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMTMzLDAsMCwKKyAgICAwLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwxODgsMCwwLDAsMTU4LDMsMCwwLDExNSwKKyAgICA2LDAsMCwwLDAsMiwxNCwxLDYsMSwxMjIsMzEsNjksMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDExNSwzNiwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMDAsMSwyNSwKKyAgICAwLDEzNywwLDExNiwyLDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw4LDExNiwKKyAgICAzLDY4LDAsMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiw0OSw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LDMxLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDQsMCwwLDAsNTEsMCwwLDAsMTE1LDI2LDAsMCwwLDEyNCwwLDkzLAorICAgIDE4LDEyNSwxLDEzNiwwLDEwMCwwLDEyNCwxLDIzLDAsMTA3LDIsODYsMCwxLAorICAgIDAsMTEzLDIsMTAwLDEsODMsMCw0MSwyLDExNCwxODIsMCwwLDAsNzgsMTE0LAorICAgIDQsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsMjE4LDYsMTE1LDExNywxMDIsCisgICAgMTAyLDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDE2NywzLDAsMCwxMTUsMiwwLDAsMCw0LDEsCisgICAgMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLAorICAgIDExMiwxMTQsNjIsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwKKyAgICAzLDk3LDExMCwxMjEsMjE4LDE4LDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDk1LAorICAgIDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMTIzLDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDIyMywwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTU3LDAsMCwwLDE2NCwzLDAsMCwxMTUsNiwKKyAgICAwLDAsMCwwLDIsMTQsMSwxMiwxLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsCisgICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LAorICAgIDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjMsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDk3LAorICAgIDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsOTksMTExLAorICAgIDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LDc4LDExNCw0LDAsMCwwLAorICAgIDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLDAsCisgICAgMTcwLDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjgsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwKKyAgICAwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDQsOTcsMTE4LDEwMSwKKyAgICAzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsCisgICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMTE0LDE5OSwwLDAsMCwxNzQsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAyLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDYsMCwwLDAsMTI0LDAsMTA2LDAsODMsCisgICAgMCw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLAorICAgIDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwxNTUsMCwwLDAsMTc4LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMywxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCwKKyAgICA5NywxMDksMTAxLDc4LDQxLDE0LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsCisgICAgMjEwLDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTg4LAorICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMTk5LDAsCisgICAgMCwwLDExNCwxMjAsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAxMTQsMjIxLDAsMCwwLDEzMSwzLDAsMCwxMTUsMjAsMCwwLDAsOCw2LAorICAgIDQsMiw4LDQsOCw0LDgsMyw4LDgsOCw2LDgsNiw4LDQsCisgICAgOCw0LDExNCwyMjEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsOTYsMCwwLAorICAgIDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLAorICAgIDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCwKKyAgICA3LDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsMTAwLAorICAgIDExLDEzMiwwLDkwLDgsMTAwLDEyLDEwMCwxMywxMzIsMCw5MCw5LDEwMCwxNCwxMDAsCisgICAgMTUsMTMyLDAsOTAsMTAsMTAwLDE2LDEwMCwxNywxMzIsMCw5MCwxMSwxMDAsMTgsMTAwLAorICAgIDE5LDEzMiwwLDkwLDEyLDEwMCwyMCwxMDAsMjEsMTMyLDAsOTAsMTMsMTAwLDIyLDgzLAorICAgIDAsNDEsMjMsMjE4LDE0LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCisgICAgOTcsMTE2LDEwNCw5NywzOCwxLDAsMCw4MiwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsCisgICAgMTE2LDExNSwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LDQ2LDMyLDMyLAorICAgIDczLDExNiwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA4LDExMSwxMTEsMTA3LDExNSwzMiwxMTcsCisgICAgMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzksMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQ2LDMyLDMyLDg3LDEwNCwKKyAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTE1LDQ0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTEsMTE5LAorICAgIDExMCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNCwxMDEsOTksMTExLDEwOSwxMTIsCisgICAgMTE3LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMzIsMzIsNzAsMTExLAorICAgIDExNCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDUsMTE1LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDk5LDQsCisgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDM2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsCisgICAgMTI0LDAsOTUsMSwxMTYsMiwxMjQsMCwxMDYsMywxMzEsMCwxMzEsMSwxMjQsMCwKKyAgICA5NSw0LDEyNCwzLDEyNCwwLDk1LDUsMTAwLDAsODMsMCw0MSwxLDc4LDQxLAorICAgIDYsMjE4LDUsOTUsMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDk3LDAsMCwwLDIxOCwxNiw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwxNyw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MSw0LDExNCwxMDQsMCwwLDAsMTE0LDEwMiwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDExLDExMiw5NywxMTYsMTA0LDk1LDEwMiwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxODIsMCwwLDAsMTkxLDMsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMSw2LDEsNiwxLDE0LDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTA2LDEsMTAwLDEsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsCisgICAgMiwxMDAsMiwxMDcsMiwxMTQsMzAsMTAwLDYsODMsMCwxMjQsMSwxMDAsNSwxMDIsCisgICAgMiw4MywwLDQxLDcsMTIyLDYyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LAorICAgIDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLDEwMiwzMiw0MCwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ1LDExMCw5NywxMDksMTAxLDQ0LDMyLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LDExNiwxMDQsNDUsOTcsMTE2LDExNiwxMTQsNDUsCisgICAgMTEwLDk3LDEwOSwxMDEsNDEsMTE0LDYxLDAsMCwwLDExNCwzMiwwLDAsMCwxMTQsCisgICAgOCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5NSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSw5NSw0MSwyLDExNCw4LDAsMCwwLDExNCwzNywwLDAsMCw0MSwKKyAgICAyLDExNCwyMjgsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDQsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMjE5LDAsMCwwLDIxOCwzLDEwMCwxMTEsMTE2LDkwLDIsMTA5LDEwMSwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE5NywzLDAsMCwxMTUsOCwwLDAsCisgICAgMCwwLDIsMTgsMSw4LDIsNCwzLDEyMiwzOCw5NSw3OCw5NywxMDksMTAxLAorICAgIDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDI4LDAsMCwwLDEyNCwwLDEwNiwwLDEzMSwKKyAgICAwLDkyLDIsMTI1LDEsMTI1LDIsMTE2LDEsMTE2LDIsMTA2LDMsMTI0LDEsMjUsCisgICAgMCwxMjQsMiwxMzEsMiw4MywwLDQxLDEsNzgsNDEsNCwxMTQsMjM1LDAsMCwKKyAgICAwLDExNCwxMTQsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQxLDMsMTE0LDEwNCwwLDAsMCw5MCwxOCwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkwLAorICAgIDE0LDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMzAsCisgICAgMCwwLDAsMjA3LDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxMiwxLAorICAgIDEyMiwzMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsCisgICAgNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw4MCwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsCisgICAgMSwxMzEsMCwxMzEsMSwxMjUsMSwxMjQsMSwxMjQsMCwxMDYsMiwxMDcsMywxMTQsCisgICAgNzQsMTI0LDAsMTA2LDMsMTI0LDAsMTA2LDQsMTI0LDEsMTMxLDIsMTI1LDIsMTI0LAorICAgIDIsMTAwLDAsMTA3LDksMTE0LDY4LDEyNCwyLDEwNiw1LDEwMCwwLDEwNyw4LDExNCwKKyAgICA2OCwxMjQsMiwxMDYsNiwxMTQsNjgsMTI0LDIsMTA2LDYsMTI0LDAsOTUsNywxMjQsCisgICAgMSwxMjQsMCw5NSwyLDEyNCwwLDEwNiw3LDgzLDAsNDEsMSw3OCw0MSw4LAorICAgIDExNCw5NywwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMzEsMCwwLDAsMTE0LAorICAgIDIzMiwwLDAsMCwxMTQsMjI4LDAsMCwwLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwKKyAgICAwLDAsMCwxMTQsMjI5LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCw5MCwKKyAgICAxMSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjIsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwyMTEsMywKKyAgICAwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMiwxLDEwLDEsMTQsMywxOCwKKyAgICAxLDYsMSw4LDEsNiwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LAorICAgIDEwOCw5NywxMTYsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLAorICAgIDEyNCwwLDEwNiwxLDEzMSwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCwKKyAgICA0LDEwNSwxMTYsMTAxLDExNCwxMTQsMjM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsOCw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsMjI0LDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNCwwLDAsMCwxMjQsMiwxMjQsMCwxMDYsMCwxMjQsMSwKKyAgICA2MCwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwxLDExNCwyMjksMCwwLDAsCisgICAgNDEsMywxMTQsMTA0LDAsMCwwLDIxOCw1LDEwNSwxMTAsMTAwLDEwMSwxMjAsMTE0LDM3LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDIxOCwxMSw5NSw5NSwxMTUsMTAxLDExNiwxMDUsMTE2LDEwMSwxMDksOTUsOTUsMjI3LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjYsOTUsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNSwxMDEsMTE2LAorICAgIDEwNSwxMTYsMTAxLDEwOSw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMCwxMzEsMSw4MywwLDQxLDEsNzgsNDEsCisgICAgMiwxMTQsMzMsMCwwLDAsMTE0LDIzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsMjMwLDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjIsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwKKyAgICAxLDgzLDAsNDEsMiw3OCwxMjIsMjAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LDUwLAorICAgIDAsMCwwLDExNCwyMjksMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LAorICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwyMzMsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyLDAsMCwwLDEyNCwxLDEyNCwwLDEwNiwwLDEzMSwwLDEwNyw2LAorICAgIDgzLDAsNDEsMSw3OCw0MSwxLDExNCwyMzcsMCwwLDAsNDEsMiwxMTQsMTA0LAogICAgIDAsMCwwLDIxOCw0LDEwNSwxMTYsMTAxLDEwOSwxMTQsNCwwLDAsMCwxMTQsNCwKICAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsOTUsOTksMTExLDExMCwxMTYsCi0gICAgOTcsMTA1LDExMCwxMTUsOTUsOTUsMjI2LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgOTcsMTA1LDExMCwxMTUsOTUsOTUsMjM2LDMsMCwwLDExNSwyLDAsMCwwLDAsCiAgICAgMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsCiAgICAgMTA0LDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDk5LDIsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKLSAgICAyLDExNCwyMzMsMCwwLDAsMTE0LDE2NSwwLDAsMCw0MSwyLDExNCwxMTAsMCwKLSAgICAwLDAsMTE0LDI0NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwxMTQsMTY1LDAsMCwwLDIyOSwzLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDEzLAotICAgIDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwKLSAgICAxMTYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwyMzQsCi0gICAgMCwwLDAsMTE0LDI0MSwwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDQsMCwKLSAgICAwLDAsMTE0LDI0NSwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwxNjUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDIzMSwwLDAsMCwxNzcsMywwLDAsMTE1LDIwLAotICAgIDAsMCwwLDEyLDUsNiwyLDEyLDYsMTIsMTAsMTIsNCwxMiwxMywxMiwKLSAgICAzLDEyLDMsMTIsMywxMiwzLDExNCwyMzEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsMTE4LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDEsNCwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLAotICAgIDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDYsMCwxMDAsNywwLDEwMCwKLSAgICA4LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwKLSAgICAwLDkwLDgsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDkwLDksMCwKLSAgICAxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE1LDAsMTAwLAotICAgIDE2LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxNywwLDgzLDQxLDE4LDIxOCwxNiwKLSAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLAotICAgIDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIzMSwwLDAsMCwxMTQsMjMzLDAsCi0gICAgMCwwLDQxLDQsMTE0LDExMCwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMTQsMjM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODYsMCwwLDAsMjM1LDMsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsCi0gICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwKLSAgICAxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsCi0gICAgOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMTIyLDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsCi0gICAgMTE0LDQ5LDAsMCwwLDExNCwxMTQsMCwwLDAsNDEsMiwxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCwyMzgsMywwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyOCw5NSwKKyAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsMTA2LDAsMTA2LDEsMTI0LDEsCisgICAgMTMxLDEsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLDExNCwyMjksMCwKKyAgICAwLDAsMTE0LDE2MSwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDI0NCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTYxLDAsMCwwLDIzOSwzLDAsMCwxMTUsMiwwLDAsMCwKKyAgICAwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDE0LDExNCwxMDksMCwwLAorICAgIDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsCisgICAgMTE0LDE4MiwwLDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LAorICAgIDIzNywwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDI0MiwKKyAgICAwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDUsMCwwLDAsMTE0LDE2MSwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMjI3LDAsMCwwLDE4NCwzLDAsMCwxMTUsCisgICAgMjIsMCwwLDAsOCw1LDQsMiw4LDYsOCwxMCw4LDQsOCwxMywKKyAgICA4LDMsOCwzLDgsMyw4LDMsOCwzLDExNCwyMjcsMCwwLDAsOTksCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICA2NCwwLDAsMCwxMTUsODAsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwKKyAgICAyLDEwMCwxLDEwMCwyLDEzMiwwLDkwLDMsMTAxLDQsMTAwLDMsMTAwLDQsMTMyLAorICAgIDAsMTMxLDEsOTAsNSwxMDAsNSwxMDAsNiwxMzIsMCw5MCw2LDEwMCw3LDEwMCwKKyAgICA4LDEzMiwwLDkwLDcsMTAwLDksMTAwLDEwLDEzMiwwLDkwLDgsMTAwLDExLDEwMCwKKyAgICAxMiwxMzIsMCw5MCw5LDEwMCwxMywxMDAsMTQsMTMyLDAsOTAsMTAsMTAwLDE1LDEwMCwKKyAgICAxNiwxMzIsMCw5MCwxMSwxMDAsMTcsODMsMCw0MSwxOCwyMTgsMTYsOTUsNzgsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTI0LDEsMTI0LDIsMTI0LDMsMTMxLAorICAgIDMsMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjI3LAorICAgIDAsMCwwLDExNCwyMjksMCwwLDAsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICAxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwyMzMsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLAorICAgIDAsMCwyNDUsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSwKICAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsODQsMTE0LDQsMCwKLSAgICAwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE2MSwwLAotICAgIDAsMCwyNDcsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSwKLSAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCwxMTQsMzIsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwyNTAsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsODMsNDEsNiw3OCwKLSAgICAxMTQsMzIsMCwwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LAotICAgIDE5MCwwLDAsMCwxMTQsMjA1LDAsMCwwLDg0LDQxLDEsMTE0LDIwNiwwLDAsCi0gICAgMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwKLSAgICAwLDI1MywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywKLSAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLAotICAgIDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDk3LDExNywxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwxMTQsMTg3LDAsMCwwLDAsNCwwLDAsMTE1LDAsMCwKLSAgICAwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTkyLDAsMCwwLDMsNCwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsMSwxMTYsMiwwLDEwNiwzLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsOTgsNzYsCi0gICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLAotICAgIDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwKLSAgICAzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTA3LDAsMCwwLAotICAgIDExNCwyMzMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTkzLDAsMCwwLDQxLAotICAgIDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLDAsNiwKLSAgICA0LDAsMCwxMTUsNCwwLDAsMCwwLDcsMTYsMSwxMjIsMjgsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LAotICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsMTIsMTE0LDExNCwwLAotICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE4NiwwLDAsCi0gICAgMCwxMTQsMTg0LDAsMCwwLDExNCwyNDksMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxMTQsMjAzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsCi0gICAgMTkyLDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI0OCwwLAotICAgIDAsMCwyMzQsMywwLDAsMTE1LDE2LDAsMCwwLDEyLDEsMTIsMywxOCwKLSAgICA5LDEyLDMsMTIsMywxMiwzLDEyLDMsMTIsMywxMTQsMjQ4LDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDE2MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LAotICAgIDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsCi0gICAgMTAxLDQsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLAotICAgIDcsMCwxMDEsNCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsOTAsOCwwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDExLDAsMTAwLDEyLDAsCi0gICAgMTMyLDEsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwKLSAgICAxMCwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwKLSAgICAwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDEsMCwKLSAgICAxMzEsMSwwLDkwLDExLDAsMTAwLDEwLDAsODMsNDEsMTcsMjE4LDEwLDgwLDk3LAotICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsCi0gICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsCi0gICAgOTcsMTAzLDEwMSwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LAotICAgIDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDU1LDAsCi0gICAgMCwwLDEyMCw0OCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLAotICAgIDAsNjgsOTMsMzEsMCwxMjUsMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwKLSAgICAwLDEzMSwyLDAsMTE0LDE2LDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsCi0gICAgMSwxMTMsMTYsMCw4NywxMDAsMiwwLDgzLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsCi0gICAgMTA4LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCi0gICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTExLDExMCwzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LAotICAgIDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLAotICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LAotICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwKLSAgICAxMTQsOCwwLDAsMCwyMTgsMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LAotICAgIDEwMSwxMTUsMTE0LDExNywwLDAsMCwxMTQsMjUxLDAsMCwwLDQxLDIsMTE0LDE3MiwKLSAgICAwLDAsMCwyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjUxLDAsMCwwLDIzLAotICAgIDQsMCwwLDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTIyLDI4LAotICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsCi0gICAgMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMDcsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTA3LAotICAgIDksMCwxMTQsNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsMTE2LAotICAgIDIsMCwxMDYsMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTIwLAotICAgIDU5LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDQ0LDAsMTI1LDIsMCwxMjEsCi0gICAgMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw4NywxMTMsNTEsMCwKLSAgICA0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxLDEsMTE5LDUxLDAsCi0gICAgODksMTEzLDUxLDAsODgsMTEzLDUxLDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDExMyw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTAxLDExMywxMTcsCi0gICAgMTAxLDExMCw5OSwxMDEsMzIsMTExLDEwMiwzMiwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LAotICAgIDExMiw5NywxMTYsMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDczLDEwMiwzMiwzOSwxMDQsMTExLDExMSwxMDcsMTE1LDM5LDMyLDEwNSwxMTUsMzIsMTAyLDk3LAotICAgIDEwOCwxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTcsMTE1LDEwMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDc4LDEyMiwyMywxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwKLSAgICA0MSw2LDExNCw4LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAotICAgIDExMSwxMDcsMTE1LDExNCw2MiwwLDAsMCwxMTQsNjMsMCwwLDAsMTE0LDEyNywwLAotICAgIDAsMCwxMTQsMTA5LDAsMCwwLDQxLDMsMTE0LDE3MiwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNCwxMTEsMTExLDEwNywxMTUsMzEsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNywKLSAgICAyNSwxLDE2LDEsMTYsMSwzLDEsMTQsMSwxMywxLDEyLDIsMTIyLDIyLAotICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMjMsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDUzLDAsMTIxLDE2LDAsMTE2LAotICAgIDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMjIsMCw0LAotICAgIDExNiwyLDAsMTA3LDEwLDAsMTE0LDUyLDAsMSwxLDEsMTAwLDIsMCw4MywKLSAgICA4OSwxMTAsMSwwLDg4LDEyMSwxNywwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDI1LDEyNSwyLDAsODcsMTEwLDQ2LDAsNCwxMTYsNSwwLDEwNywxMCwwLAotICAgIDExNCwxMTgsMCwxLDEsMSwxMjQsMCwwLDEwNiw2LDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCw2MCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsODMsNDEsMywxMjIsMjEwLDcxLAotICAgIDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwKLSAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsCi0gICAgMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsCi0gICAgOTcsMTE2LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwKLSAgICAzMiw3MywxMDIsMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LAotICAgIDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LAotICAgIDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzIsMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsCi0gICAgMCwwLDAsMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsCi0gICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsMjUyLDAsMCwwLAotICAgIDExNCwxMzksMCwwLDAsMTE0LDAsMSwwLDAsNDEsMywxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDgsNCwwLDAsMTE1LDIyLDAsMCwwLDAsOCwxMiwxLDMsMSwxNiwKLSAgICAxLDEzLDMsOSwxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwKLSAgICAzMSw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDMsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDExOSwwLDAsMCwxMTYsMCwwLDEyNCwyLDAsCi0gICAgMTAwLDEsMCwxMzEsMiwwLDExNCwzOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTAsMjEsCi0gICAgMCwxMjQsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsCi0gICAgMTAzLDAsMCwxMjUsNCwwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwKLSAgICA4OCwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsCi0gICAgMCw4MywxMTYsMywwLDEwNiw1LDAsMTI0LDEsMCwxMDAsMCwwLDEzMSwyLAotICAgIDAsMTI1LDUsMCwxMjQsNCwwLDEyNCw1LDAsOTUsNiwwLDEyNCw1LDAsCi0gICAgODMsNDEsMiw3OCwxMTQsMTI2LDAsMCwwLDQxLDcsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTI2LDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCi0gICAgMTgwLDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDE1OCwwLDAsMCw0MSw2LAotICAgIDExNCwxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzAsCi0gICAgNCwwLDAsMTE1LDE4LDAsMCwwLDAsNCwxNSwxLDI0LDIsMTUsMSwKLSAgICA2LDEsMTIsMSwxNiwxLDE4LDEsOSwxLDEyMiwyNyw4MCw5NywxMTYsMTA0LAotICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDQsMCwwLDAsMCwwLDAsCi0gICAgMCw5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDI0MywwLAotICAgIDAsMCwxMDMsMCwwLDEyNSw0LDAsMTIwLDIzMCwwLDEyNCwyLDAsNjgsOTMsCi0gICAgMTkxLDAsMTI1LDUsMCwxMTYsMCwwLDEyNCw1LDAsMTE2LDEsMCwxMTYsMiwKLSAgICAwLDEwMiwyLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTMsMTMsMCwxMjQsMCwwLAotICAgIDEwNiwzLDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDEzLDAsMTE2LDQsMCwxMjQsNiwwLDEwMCwyLAotICAgIDAsMTMxLDIsMCwxMTQsMTA2LDAsMTI0LDYsMCwxMDYsNSwwLDEyNCwxLDAsCi0gICAgMTI0LDMsMCwxMzEsMiwwLDEyNSw3LDAsMTEwLDE4LDAsMTI0LDAsMCwxMDYsCi0gICAgNiwwLDEyNCwxLDAsMTI0LDYsMCwxMzEsMiwwLDEyNSw3LDAsMTI0LDcsCi0gICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDEzOSwwLDExMywxMywwLDEyNCw3LDAsCi0gICAgMTA2LDcsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDE1OCwwLDEyNCw3LDAsODMsCi0gICAgMTI0LDcsMCwxMDYsOCwwLDEyNSw4LDAsMTI0LDgsMCwxMDAsMSwwLDEwNywKLSAgICA4LDAsMTE0LDE5MSwwLDExNiw5LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLAotICAgIDAsMTI0LDQsMCwxMDYsMTAsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTMsCi0gICAgMCw4NywxMTYsMTEsMCwxMDYsMTIsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsCi0gICAgMCwxMjUsNywwLDEyNCw0LDAsMTI0LDcsMCw5NSw4LDAsMTI0LDcsMCwKLSAgICA4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDYzLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDExNCwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDcsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDc4LDExNCwxODIsMCwwLDAsMTIyLDE5LAotICAgIDExNSwxMTIsMTAxLDk5LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQxLDEzLDExNCwxNDUsMCwwLDAsMTE0LDcxLDAsMCwwLDIxOCwKLSAgICA1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsMiwxLDAsMCwxMTQsMTE3LDAsMCwwLAotICAgIDExNCwxODIsMCwwLDAsMTE0LDMsMSwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsCi0gICAgMTU4LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsMTIzLAotICAgIDAsMCwwLDExNCwxNjIsMCwwLDAsNDEsOSwxMTQsMTcyLDAsMCwwLDExNCwKLSAgICAxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxODEsMCwwLDAsMjE4LDE0LAotICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDkwLDUsCi0gICAgMTAxLDExMCwxMTYsMTE0LDEyMSwxMTQsMjU0LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LAotICAgIDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwyMTgsOSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw4NSw0LAotICAgIDAsMCwxMTUsNDAsMCwwLDAsMCw1LDYsMSwxMywxLDIxLDEsMywKLSAgICAxLDE1LDEsMTIsMSwxNSwxLDIxLDIsMTgsMSwxMiwxLDMsMSwxNSwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMiw1LDE3LDIsMTgsMSw5LDEsMTIyLAotICAgIDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTUsMTEyLDEwMSw5OSw5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDAsMCwwLDAsMTI0LAotICAgIDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIxLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMjQsMywwLDEzMSwzLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LAotICAgIDgsMCwxMTQsNTgsMCwxMDAsMSwwLDgzLDEyNCw0LDAsMTA2LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw4LDAsMTE0LDEzMiwwLDEyNCw0LDAsMTA2LDQsMCwxMjUsNSwKLSAgICAwLDEyNCw1LDAsMTE0LDEyNSwwLDEwMCwyLDAsMTI0LDQsMCw5NSw1LDAsCi0gICAgMTE2LDYsMCwxMjQsMSwwLDEyNCw1LDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwKLSAgICAzLDAsMTI0LDQsMCw5NSw0LDAsMTI0LDQsMCw4MywxMDAsMSwwLDgzLAotICAgIDExMCw0LDAsMTI0LDQsMCw4MywxMDAsMSwwLDgzLDQxLDMsMTIyLDk4LDEwMiwKLSAgICAxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsCi0gICAgMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLAotICAgIDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLAotICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDQ2LDc4LDkwLDksMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsCi0gICAgOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDEyOSwKLSAgICAwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwxNjAsMCwwLDAsMTE0LDIzMSwwLAotICAgIDAsMCw0MSw2LDExNCwxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw1LDEsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsCisgICAgMCwwLDEwMCwxLDEwNiwwLDEyNCwxLDEwNiwxLDEzMSwxLDgzLDAsNDEsMiwKKyAgICAxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LAorICAgIDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2MiwKKyAgICA0MSwyLDExNCw1MCwwLDAsMCwxMTQsMTA5LDAsMCwwLDQxLDIsMTE0LDE2OCwKKyAgICAwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTQsMTAxLDExMiwxMTQsMjQ4LDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsCisgICAgMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDc4LDg0LDExNCwKKyAgICA0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAxNTcsMCwwLDAsMSw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAorICAgIDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDc4LDExNCwzMiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTk5LDAsMCwwLDQsNCwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDEwMCwxLDEwMCwyLDEwMCwKKyAgICAzLDEwMCw0LDEwMCw1LDE0MSw0LDgzLDAsNDEsNiw3OCwxMTQsMzIsMCwwLAorICAgIDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LDE4NiwwLDAsMCwKKyAgICA4NCw0MSwxLDExNCwyMDEsMCwwLDAsNDEsMSwxMTQsMjAyLDAsMCwwLDQxLAorICAgIDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLDAsNywKKyAgICA0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAorICAgIDEsODMsMCw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywKKyAgICAxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCwKKyAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDE2MiwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTgzLDAsMCwwLDEwLDQsMCwwLDExNSwwLDAsMCwwLAorICAgIDEyMiwzMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMCw4MywwLDQxLDEsCisgICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxODcsMCwKICAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDE4MiwwLDAsMCwxMTcsNCwwLDAsMTE1LDI2LDAsMCwwLDAsCi0gICAgNCwxMiwxLDksMSwyMSwxLDEyLDEsNCwxLDE1LDEsOSwxLDYsCi0gICAgMyw5LDEsMjQsMSw0LDIsNywyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LAotICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCi0gICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDAsMTE0LDE4OCwwLDAsMCwxMyw0LDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDEsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDEwNiwxLDEwMCwxLDEyNCwKKyAgICAwLDEwNiwyLDEzMSwyLDEsMCwxMTYsMCwxMDYsMywxMjQsMCwxMjQsMSwxMzEsCisgICAgMiw4MywwLDQxLDIsMTIyLDk4LDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwKKyAgICAxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDM4LDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMiw5NywxMTYsMTA0LDMyLDEyMywzMywxMTQsCisgICAgMTI1LDQxLDQsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwyMjksMCwKKyAgICAwLDAsMTE0LDE4OSwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTkwLDAsMCwwLDE2LDQsMCwwLDExNSw2LDAsMCwwLAorICAgIDAsNyw2LDEsOCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODAsMCwwLDAsCisgICAgMTE0LDI0NywwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LAorICAgIDE4NCwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE5MCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ2LDAsMCwwLDI0NCwzLDAsMCwKKyAgICAxMTUsMTYsMCwwLDAsOCwxLDgsMywxMiw5LDgsMyw4LDMsOCwKKyAgICAzLDgsMyw4LDMsMTE0LDI0NiwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICAxMDYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsCisgICAgMTAxLDQsMTAwLDIsMTAwLDMsMTMyLDAsMTMxLDEsOTAsNSwxMDEsNCwxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCwxMzEsMSw5MCw2LDEwMSw0LDEwMCw2LDEwMCw3LDEzMiwwLAorICAgIDEzMSwxLDkwLDcsMTAxLDQsMTAwLDgsMTAwLDksMTMyLDAsMTMxLDEsOTAsOCwKKyAgICAxMDEsNCwxMDAsMTcsMTAwLDExLDEwMCwxMiwxMzIsMSwxMzEsMSw5MCw5LDEwMSw0LAorICAgIDEwMCwxOCwxMDAsMTMsMTAwLDE0LDEzMiwxLDEzMSwxLDkwLDEwLDEwMSw0LDEwMCwxOSwKKyAgICAxMDAsMTUsMTAwLDE2LDEzMiwxLDEzMSwxLDkwLDExLDEwMCwxMCw4MywwLDQxLDIwLAorICAgIDIxOCwxMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwKKyAgICAxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsCisgICAgMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0MiwwLDAsMCwxMjAsMzYsMTE2LDAsMTA2LDEsMTA2LDIsMTMxLDAsCisgICAgNjgsMCw5MywyMiwxMjUsMSwxMTYsMywxMjQsMSwxMDAsMSwxMzEsMiwxMTQsMTIsCisgICAgMTI0LDEsMTA2LDQsMTMxLDAsMSwwLDExMywxMiw4NywwLDEwMCwyLDgzLDAsCisgICAgNDEsMywxMjIsMTI1LDY3LDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMTgsCisgICAgOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCw0MSwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDEwOCwxMDgsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwxMDAsCisgICAgMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDMyLDQwLDExOSwxMDQsCisgICAgMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0MSwKKyAgICA0NiwyMTgsMTcsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDExNSw3OCw0MSw1LDExNCw4LDAsMCwwLDIxOCwxOSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMjE4LDYsMTE4LDk3LDEwOCwxMTcsMTAxLDExNSwxMTQsMTEyLDAsMCwwLDExNCwyNDksCisgICAgMCwwLDAsNDEsMiwxMTQsMTY4LDAsMCwwLDIxOCw2LDEwMiwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwyNDksMCwwLDAsMzQsNCwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICA0LDE2LDEsMTAsMSwxMjIsMjgsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDg2LDAsMCwwLDExNiwwLDEwNiwKKyAgICAxLDEwMCwxLDEwNyw5LDExNCwzMCwxMTYsMCwxMDYsMSwxMiwwLDExNCwzMCwxMTYsCisgICAgMiwxMDYsMywxMDAsMiwxMTYsNCwxMzEsMiwxLDAsMTIwLDUwLDExNiwwLDEwNiwKKyAgICAxLDY4LDAsOTMsMzYsMTI1LDIsMTIxLDgsMTI0LDIsMTI0LDEsMTMxLDEsODMsCisgICAgMCw0LDAsMTE2LDUsMTA3LDEwLDExNCw3MiwxLDAsMSwwLDEsMCwxMTksCisgICAgMzgsODksMCwxMTMsMzgsODgsMCwxMTMsMzgsODcsMCwxMDAsMSw4MywwLDEwMCwKKyAgICAxLDgzLDAsNDEsMywxMjIsNDYsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEyMSwKKyAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLDExNCwKKyAgICAzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwxMTIsCisgICAgOTcsMTE2LDEwNCwzOSw0Niw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNDEsCisgICAgNiwxMTQsOCwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCisgICAgMTA3LDExNSwxMTQsNjMsMCwwLDAsMTE0LDY0LDAsMCwwLDExNCwxMjIsMCwwLAorICAgIDAsMTE0LDEwMywwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsMTE1LDQyLDQsMCwwLDExNSwxNiwwLDAsMCwwLDMsMTgsCisgICAgMSwxMiwxLDEyLDEsMiwxLDgsMSwxNCwxLDEyLDIsMTIyLDIyLDgwLAorICAgIDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDQsMTExLDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMDIsMCwwLDAsMTI0LAorICAgIDEsMTAwLDEsMTA3LDIsMTE0LDQyLDEyMSwxMiwxMTYsMCwxMDYsMSwxMzEsMCwxMjUsCisgICAgMSw4NywwLDExMCwyMCw0LDAsMTE2LDIsMTA3LDEwLDExNCw0MCwxLDAsMSwKKyAgICAwLDEsMCwxMDAsMiw4MywwLDg4LDAsMTIxLDE0LDExNiwzLDEwNiw0LDEyNCwKKyAgICAxLDI1LDAsMTI1LDIsODcsMCwxMTAsNDAsNCwwLDExNiw1LDEwNywxMCwxMTQsCisgICAgOTYsMSwwLDEsMCwxLDAsMTI0LDAsMTA2LDYsMTI0LDEsMTMxLDEsMTI1LAorICAgIDIsMTI0LDIsMTE2LDMsMTA2LDQsMTI0LDEsNjAsMCw4OSwwLDExMCwyLDg4LAorICAgIDAsMTI0LDIsODMsMCw0MSwzLDEyMiwyMTAsNzEsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKICAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCiAgICAgMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDQxLDIsMTE0LDE4MiwwLDAsMCwxMTQsMTI5LDAsMCwwLDQxLDQsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTY2LAorICAgIDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLAorICAgIDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywxMTAsMTAwLAorICAgIDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsMzIsMTEwLDExMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LAorICAgIDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwxMTEsMTEwLDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzIsMCwwLDAsCisgICAgNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsMCwwLDAsMjE4LDE3LDcwLAorICAgIDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsOCwwLDAsMCwxMTQsMjUwLDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAorICAgIDI1NCwwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDM3LDAsMCwwLAorICAgIDExNCwyNTIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjE4LDIwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw1NSw0LDAsMCwxMTUsMjIsCisgICAgMCwwLDAsMCw4LDgsMSwyLDEsMTIsMSwxNCwzLDYsMSwyLAorICAgIDEsMTQsMSwxNCwxLDEwLDEsMTYsMSwxMjIsMzEsODAsOTcsMTE2LDEwNCw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA4MiwwLDAsMCwxMTYsMCwxMjQsMiwxMDAsMSwxMzEsMiwxMTQsMjYsMTI0LDIsCisgICAgMTA2LDEsMTI0LDEsMTMxLDEsOTIsMiwxMjUsMywxMjUsNCwxMTAsMTQsMTI0LDIsCisgICAgMTA2LDIsMTI0LDEsMTMxLDEsMTI1LDMsMTAzLDAsMTI1LDQsMTI0LDMsMTAwLDAsCisgICAgMTA3LDksMTE0LDYwLDExNiwzLDEwNiw0LDEyNCwxLDEyNCwzLDEzMSwyLDgzLDAsCisgICAgMTE2LDMsMTA2LDUsMTI0LDEsMTAwLDAsMTMxLDIsMTI1LDUsMTI0LDQsMTI0LDUsCisgICAgOTUsNiwxMjQsNSw4MywwLDQxLDIsNzgsMTE0LDEyMSwwLDAsMCw0MSw3LAorICAgIDExNCwxMTIsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMTc5LDAsMCwwLDExNCwKKyAgICAxMTgsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwxNTQsCisgICAgMCwwLDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAorICAgIDI1MiwwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxMjUsMCwwLDAsMTE0LDE2MiwKICAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMTgzLDAsMCwwLDEzOSw0LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDgsMTgsMSwxMiwxLDQsMSwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MSwxMiwxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsCi0gICAgMCwxMTQsMTE2LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDI1MSwwLDAsMCwKLSAgICAxMTQsMCwxLDAsMCwxMTQsMiwxLDAsMCwxMTQsMywxLDAsMCwxMTQsCi0gICAgNiwxLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDI1MCwwLDAsMCwxOSw0LDAsMCwxMTUsMjIsMCwwLDAsCi0gICAgMTIsMiw2LDIsMTgsOCwxOCwxNywxOCwyMiwxOCwxNSwzLDEsMTgsMzEsCi0gICAgMywxLDIxLDIxLDMsMSwxMTQsMjUwLDAsMCwwLDk5LDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsCi0gICAgMTE1LDEzMywwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsCi0gICAgMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwKLSAgICA5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSwKLSAgICA2LDAsOTAsNywwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDgsCi0gICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDEwLDAsCi0gICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDEsMCw5MCwxMCwwLDEwMCwxMywwLDEwMCwKLSAgICAxNCwwLDEzMiwwLDAsOTAsMTEsMCwxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTMsMCwxMDAsMTcsMCwxMDAsMTgsMCwKLSAgICAxMzIsMCwwLDkwLDE0LDAsMTAwLDEwLDAsODMsNDEsMTksMjE4LDEwLDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDE3Miw3MCwxMDUsMTA4LDEwMSw0NSw5OCwKLSAgICA5NywxMTUsMTAxLDEwMCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw3MywxMTAsMTE2LDEwMSwxMTQsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LAotICAgIDExNiwxMDEsMTA5LDMyLDk3LDExNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDk3LDExMCw5OSwxMDEsNDQsMzIsCi0gICAgOTgsMTAxLDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTAyLDExNCwxMDEsMTE1LAotICAgIDEwNCwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwKLSAgICAxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwNSwxMTUsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwNSwxMTAsMTAzLDMyLDEwNCw5NywKLSAgICAxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNSwKLSAgICAwLDAsMCw1LDAsMCwwLDcsMCwwLDAsMTE1LDEyMiwwLDAsMCwKLSAgICAxMDMsMCwwLDEyNSwzLDAsMTIwLDUyLDAsMTI0LDIsMCw2OCw5Myw0NCwwLAotICAgIDkyLDIsMCwxMzcsMCwwLDEyNSw0LDAsMTI0LDMsMCwxMDYsMCwwLDEzNSwKLSAgICAwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjQsNCwKLSAgICAwLDY4LDEzMSwxLDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDEyNCwzLDAsCi0gICAgMTI0LDAsMCw5NSwxLDAsMTI0LDEsMCwxMTIsNzksMCwxMDAsMywwLDEyNCwKLSAgICAwLDAsOTUsMiwwLDEwMCw2LDAsMTI0LDAsMCw5NSwzLDAsMTE2LDQsCi0gICAgMCwxMzEsMCwwLDEyNCwwLDAsOTUsNSwwLDExNiw0LDAsMTMxLDAsMCwKLSAgICAxMjQsMCwwLDk1LDYsMCwxMDAsNSwwLDgzLDQxLDcsMTIyLDE1NCw3MywxMTAsCi0gICAgMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICAzMiwxMTEsMTEwLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsMTE4LDk3LDExNCwxMDUsOTcsOTgsCi0gICAgMTA4LDEwMSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDExMSwxMDIsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNTAsNDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTUsMzIsOTksMTExLAotICAgIDExMCwxMTYsOTcsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTAxLDk5LAotICAgIDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwyNywwLAotICAgIDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEzNiwwLAotICAgIDAsMTAyLDIsMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCwyMjYsMCwwLAotICAgIDAsNDEsMSwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyMjgsMCwwLDAsMTY4LDQsMCwwLDExNSwyLDAsMCwwLAotICAgIDYsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwKLSAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjAsMCwwLDAsMTE0LAotICAgIDMxLDAsMCwwLDc4LDExNCw4OSwwLDAsMCw0MSw3LDExNCwxNTEsMCwwLAotICAgIDAsMjE4LDgsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM3LDAsMCwwLAotICAgIDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwzLDExNSwKLSAgICAxMDEsMTE2LDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCwKLSAgICAxOSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDQxLDUsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsCi0gICAgOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMTg2LDAsMCwwLDE2Miw0LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsCi0gICAgMSwxOSwxLDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTIyLDE5LDcwLAotICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsMTI0LAotICAgIDAsMCw5NSwwLDAsMTAwLDIsMCw4Myw0MSw0LDEyMiwzMSw3MywxMTAsMTE4LAotICAgIDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLAotICAgIDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwxMDksMTAxLDQ2LDExNCwzMSwwLDAsCi0gICAgMCw3OCwxMTQsODksMCwwLDAsNDEsMSwxMTQsOSwxLDAsMCw0MSwxLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMTE0LDI1MSwwLDAsMCwxNzYsNCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwyLDEyMiwyOCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNTksMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwzNywwLDEwMCwxLDAsMTAzLDAsMCwxMDIsMiwwLAotICAgIDgzLDEyNCwyLDAsMTA2LDEsMCwxMjQsMiwwLDEwNiwyLDAsMTEyLDU1LDAsCi0gICAgMTAzLDAsMCwxMDIsMiwwLDgzLDQxLDIsMTIyLDE5Nyw4NCwxMTQsMTIxLDMyLDExNiwKLSAgICAxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAotICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LAotICAgIDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LAotICAgIDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LAotICAgIDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwKLSAgICAxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzgsNDEsMywxMTQsMTgyLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDE1OCwwLAotICAgIDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMTY2LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwxMjYsMCwwLDAsMTgyLDQsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsNywxNSwxLDEyLDEsMTAsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA5OSw2LDAsMCwwLDAsMCwwLDAsNywwLDAsMCw3LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw0MCwwLDAsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxMzEsMiwwLDEyNSw2LDAsMTE2LDAsMCwxMjQsMiwwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMjQsNiwwLDEwMCwyLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAyLDgzLDQxLDMsNzgsMTE0LDEyOSwwLDAsMCwxMTQsMTU4LDAsMCwwLDQxLAotICAgIDEsMTE0LDE2OSwwLDAsMCw0MSw3LDExNCwxMTAsMCwwLDAsMTE0LDE2NywwLAotICAgIDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCw5MCw0LDExNSwxMDksCi0gICAgMTE1LDEwOCwxMTQsMTgxLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDYsMSwwLDAsCi0gICAgMTk0LDQsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIyLAotICAgIDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMiwxMDEsOTksNzgsOTksMywwLDAsMCwwLDAsMCwwLDE0LAotICAgIDAsMCwwLDE1LDAsMCwwLDY3LDAsMCwwLDExNSwyMzQsMSwwLDAsCi0gICAgMTAwLDEsMCwxMjUsMywwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMTAwLDMsMCwyNSwxMjUsNCwwLDEyMSwzNCwwLDExNiwxLDAsMTI0LAotICAgIDAsMCwxMDYsMiwwLDExMiw0OSwwLDExNiwzLDAsMTA2LDQsMCwxMzEsMCwKLSAgICAwLDEzMSwxLDAsMTA2LDUsMCwxMjUsNSwwLDg3LDExMCwyNCwwLDQsMTE2LAotICAgIDYsMCwxMDcsMTAsMCwxMTQsODUsMCwxLDEsMSwxMDAsMTAsMCwxMjUsNSwKLSAgICAwLDg5LDExMCwxLDAsODgsMTI0LDUsMCwxMjQsMCwwLDEwNiw3LDAsMTA3LAotICAgIDMsMCwxMTQsMTIwLDAsMTI0LDAsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMjQsCi0gICAgNSwwLDEyNCwwLDAsOTUsNywwLDExNiw5LDAsMTMxLDAsMCwxMTQsMTUzLAotICAgIDAsMTI0LDAsMCwxMDYsMTAsMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDExLDAsCi0gICAgMTMxLDAsMCwxMjUsNywwLDExMCwxNSwwLDEyNCwwLDAsMTA2LDEyLDAsMTI1LAotICAgIDYsMCwxMjQsNCwwLDEyNSw3LDAsMTI0LDcsMCwxMjQsNiwwLDEwNyw2LAotICAgIDAsMTE0LDQ1LDEsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsCi0gICAgMTMxLDIsMCwxMjUsOCwwLDEyMCwxMDAsMCwxMjQsMCwwLDEwNiwxNCwwLDY4LAotICAgIDkzLDc3LDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsMTAwLDUsMCwxMjQsCi0gICAgOSwwLDIzLDEyNSwxMSwwLDExNiwxMywwLDEyNCw4LDAsMTI0LDExLDAsMTMxLAotICAgIDIsMCwxMjUsMTIsMCwxMTYsMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwyMDgsCi0gICAgMCwxMjQsMCwwLDEwNiwxNiwwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsCi0gICAgMTI0LDgsMCwxMDMsMSwwLDEyNCwyLDAsMTMxLDUsMCw4MywxMTMsMjA4LDAsCi0gICAgODcsMTE2LDE3LDAsMTI0LDgsMCwxMzEsMSwwLDEyNSwzLDAsMTIwLDEyMywwLAotICAgIDEyNCwwLDAsMTA2LDE0LDAsNjgsOTMsMTEyLDAsOTIsMiwwLDEyNSw5LDAsCi0gICAgMTI1LDEwLDAsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTI0LAotICAgIDksMCwyMywxMzEsMiwwLDEyNSwxMiwwLDExNiwxOCwwLDEwMCw2LDAsMTA2LAotICAgIDE5LDAsMTI0LDEyLDAsMTMxLDEsMCwxMDAsNywwLDEwMCwzLDAsMTMxLDEsCi0gICAgMSwxLDEyNCw3LDAsMTI0LDksMCwyMywxMjQsNiwwLDEwNyw2LDAsMTE0LAotICAgIDU1LDEsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsNTUsMSwxMjQsMCwKLSAgICAwLDEwNiwxNiwwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTAwLDgsMCwKLSAgICAxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDU1LDEsODcsMTI0LDMsMCwxMTQsMjMwLAotICAgIDEsMTE2LDE4LDAsMTAwLDksMCwxMDYsMTksMCwxMjQsOCwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxLDExNiwyMCwwLDEwNiwyMSwwLDEyNCwxLDAsMTAwLDgsMCwKLSAgICAxMzEsMiwwLDEyNSwxMywwLDEyNCw4LDAsMTAzLDEsMCwxMjQsMTMsMCw5NSwKLSAgICAyMiwwLDEyNCwxMywwLDgzLDEwMCw4LDAsODMsNDEsMTEsMTIyLDEwMiw4NCwxMTQsCi0gICAgMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LAotICAgIDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsODIsMTAxLDExNiwxMTcsCi0gICAgMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMTA5LDk3LDExNiw5OSwxMDQsMTA1LDExMCwxMDMsMzIsMTE1LDExMiwxMDEsOTksNDQsMzIsMTExLAotICAgIDExNCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTAyLDMyLDExMCwxMTEsMTE2LDMyLDEwMiwxMTEsCi0gICAgMTE3LDExMCwxMDAsNDYsNzAsMTE0LDYwLDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsCi0gICAgMzEsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMjIsOSwxMTYsMTE0LDEyMSwxMDUsMTEwLAotICAgIDEwMywzMiwxMjMsMTI1LDExNCwxMDAsMCwwLDAsNzgsMTIyLDI1LDExMiwxMTEsMTE1LDExNSwKLSAgICAxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMjMsMTI1LDExNCw4OSwwLDAsMCw0MSwyMywxMTQsMzQsMCwwLAotICAgIDAsMTE0LDQxLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMywwLDAsMCwKLSAgICAxMTQsNDcsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LAotICAgIDksMSwwLDAsMjE4LDExLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDExNCw3LDAsMCwwLDExNCwxMiwxLDAsMCwxMTQsOTAsMCwwLDAsCi0gICAgMTE0LDExLDEsMCwwLDExNCwzMCwwLDAsMCwxMTQsOCwxLDAsMCwxMTQsCi0gICAgNDYsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDQ4LDAsMCwwLDExNCwxMDcsCi0gICAgMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE2MiwwLAotICAgIDAsMCwxMTQsMTU4LDAsMCwwLDQxLDE0LDExNCwxMTAsMCwwLDAsMTE0LDEyOCwKLSAgICAwLDAsMCwxMTQsMTgxLDAsMCwwLDkwLDEyLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDEzNSwwLDAsMCw5MCw1LDk5LDk3LDk5LDEwNCwxMDEsOTAsCi0gICAgMTIsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCw5LDk4LAotICAgIDk3LDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIyNiwwLDAsMCwxMTQsMTY3LDAsCi0gICAgMCwwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2NiwwLDAsCisgICAgMCwwLDIxOCwxNiw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMiwxMDEsOTksNzcsNCwwLDAsMTE1LDE4LDAsMCwwLDAsNCwxMCwKKyAgICAxLDE2LDIsMTAsMSw0LDEsOCwxLDEyLDEsMTIsMSw2LDEsMTIyLAorICAgIDI3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMywKKyAgICA5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDksMCwwLDAsNSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTcwLDAsMCwwLDEwMywwLDEyNSw0LDEyMCwxNjAsMTI0LDIsNjgsCisgICAgMCw5MywxMzAsMTI1LDUsMTE2LDAsMTI0LDUsMTE2LDEsMTE2LDIsMTAyLDIsMTMxLAorICAgIDIsMTE1LDMwLDExMywxMCwxMjQsMCwxMDYsMywxMjQsNSwxMzEsMSwxMjUsNiwxMjQsCisgICAgNiwxMDAsMSwxMDcsOSwxMTQsMTAsMTE2LDQsMTI0LDYsMTAwLDIsMTMxLDIsMTE0LAorICAgIDcyLDEyNCw2LDEwNiw1LDEyNCwxLDEyNCwzLDEzMSwyLDEyNSw3LDExMCwxMiwxMjQsCisgICAgMCwxMDYsNiwxMjQsMSwxMjQsNiwxMzEsMiwxMjUsNywxMjQsNywxMDAsMSwxMDcsCisgICAgOCwxMTQsOTQsMTEzLDEwLDEyNCw3LDEwNiw3LDEwMCwxLDEwNyw5LDExNCwxMDgsMTI0LAorICAgIDcsODMsMCwxMjQsNywxMDYsOCwxMjUsOCwxMjQsOCwxMDAsMSwxMDcsOCwxMTQsCisgICAgMTMwLDExNiw5LDEwMCwzLDEzMSwxLDEzMCwxLDEyNCw0LDEwNiwxMCwxMjQsOCwxMzEsCisgICAgMSwxLDAsMTEzLDEwLDg3LDAsMTE2LDExLDEwNiwxMiwxMjQsMSwxMDAsMSwxMzEsCisgICAgMiwxMjUsNywxMjQsNCwxMjQsNyw5NSw4LDEyNCw3LDgzLDAsMTAwLDEsODMsCisgICAgMCw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTc4LDAsMCwwLDEyMiwxOSwxMTUsMTEyLDEwMSw5OSwKKyAgICAzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSwKKyAgICAxMywxMTQsMTQxLDAsMCwwLDExNCw3MywwLDAsMCwyMTgsNSw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsMTE0LDAsMSwwLDAsMTE0LDExMiwwLDAsMCwxMTQsMTc4LDAsMCwKKyAgICAwLDExNCwxLDEsMCwwLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwwLDAsMCwKKyAgICAxMTQsMTAzLDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsCisgICAgMTU4LDAsMCwwLDQxLDksMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLAorICAgIDExNCwzNywwLDAsMCwxMTQsMTc3LDAsMCwwLDIxOCwxNCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMSwxMTAsMTE2LDExNCwKKyAgICAxMjEsMTE0LDI1MiwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxMjUsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAorICAgIDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksOTIsNCwwLDAsMTE1LDQwLAorICAgIDAsMCwwLDAsNSw0LDEsMTAsMSwxNCwxLDIsMSwxMCwxLDgsCisgICAgMSwxMCwxLDE0LDIsMTIsMSw4LDEsMiwxLDEwLDEsNCwxLDYsCisgICAgMSw4LDEsOCw1LDE0LDIsMTIsMSw2LDEsMTIyLDIwLDgwLDk3LDExNiwKKyAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSwKKyAgICA5OSw5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLDAsMCw0LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMDAsMCwwLDAsMTI0LDIsMTAwLDEsMTA3LAorICAgIDgsMTE0LDE0LDExNiwwLDEwNiwxLDEyNSwyLDEyNCwwLDEwNiwyLDEyNCwxLDEyNCwKKyAgICAyLDEyNCwzLDEzMSwzLDEyNSw0LDEyNCw0LDEwMCwxLDEwNyw4LDExNCw0MCwxMDAsCisgICAgMSw4MywwLDEyNCw0LDEwNiwzLDEwMCwxLDEwNyw4LDExNCw5MiwxMjQsNCwxMDYsCisgICAgNCwxMjUsNSwxMjQsNSwxMTQsODYsMTAwLDIsMTI0LDQsOTUsNSwxMTYsNiwxMjQsCisgICAgMSwxMjQsNSwxMjQsMCwxMDYsMiwxMzEsMywxMjQsNCw5NSw0LDEyNCw0LDgzLAorICAgIDAsMTAwLDEsODMsMCwxMTAsNCwxMjQsNCw4MywwLDEwMCwxLDgzLDAsNDEsCisgICAgMywxMjIsMTQxLDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMzIsMTAyLDExMSwxMTQsMzIsMzksMTAyLDExNywxMDgsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDM5LDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwKKyAgICAxMDUsMTE1LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDMyLDExNSwKKyAgICAxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3OCw5MCw5LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDcsMTE0LDgsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LDEsMCwwLDExNCwxMjQsMCwKKyAgICAwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMTU2LDAsMCwwLDExNCwyMjcsMCwwLAorICAgIDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDExNCwxNzcsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMywxLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTgyLDAsMCwwLDE5OSw0LDAsMCwxMTUsNjgsMCwwLDAsMCwzLAotICAgIDYsMSwxOSwxLDMsMSwzNCwxLDEzLDEsMTEsMSwxNSwxLDEwLDEsCi0gICAgOSwyLDksMSw5LDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwKLSAgICAyMiwxLDEwLDEsMTUsMSwxMiwxLDMyLDQsMTIsMiwyMiwxLDIyLDEsCi0gICAgMjUsMSwxNiwxLDEyLDEsMjksMSw2LDEsMTksMSwxOCwxLDEyLDEsCi0gICAgNCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwKLSAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTEsMSwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLDMxLDAsMTE2LDEsCi0gICAgMCwxMDYsMiwwLDEyNCwxLDAsMTEyLDMzLDAsMTE2LDEsMCwxMDYsMywwLAotICAgIDEzMSwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywwLDQsMTE2LDQsCi0gICAgMCwxMTYsNSwwLDExNiw2LDAsMTAyLDMsMCwxMDcsMTAsMCwxMTQsNzUsMCwKLSAgICAxLDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsMCw4OCwxMTYsNywKLSAgICAwLDEwNiw4LDAsMTA2LDksMCwxMDAsMSwwLDEzMSwxLDAsMTE1LDExMiwwLAotICAgIDExNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDExLDAsMTEwLAotICAgIDExMSwwLDExNiwxMCwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsOTAsMCwxMjQsMiwKLSAgICAwLDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwxMiwwLDEwMCwyLAotICAgIDAsMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwwLDEyNSw3LDAsCi0gICAgMTI0LDYsMCwxMTQsMTkxLDAsMTAwLDMsMCwxMDYsMTMsMCwxMjQsNSwwLDEyNCwKLSAgICA3LDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMiwwLDEyNSw4LDAsMTEwLDYsCi0gICAgMCwxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTUsMCwxMjQsOCwwLAotICAgIDEzMSwxLDAsMSwxMTMsMTI4LDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LDExLAotICAgIDAsMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTE2LDE2LDAsMTMxLDEsMCwKLSAgICAxMTQsNywxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsNjgsCi0gICAgMTMxLDEsMCwxMjQsMCwwLDk1LDE3LDAsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICA2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLAotICAgIDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCi0gICAgMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsMTA1LDExNCwxMDEsOTksCi0gICAgMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsMCwwLDExNCw2MCwwLDAsMCwxMjIsCi0gICAgNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMywwLDAsMCw4MywwLDAsMCwxMTUsMjgsMCwwLDAsCi0gICAgMTA0LDAsMCwxMjQsMCwwLDkzLDE4LDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTMxLDAsMCwxNDYsMiwwLDExMyw2LDAsODMsMTE0LDQsMCwwLAotICAgIDAsNDEsMSwxMTQsOTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsOTAsCi0gICAgMiwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDE3LDUsMCwKLSAgICAwLDExNSwyLDAsMCwwLDksMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksMTExLAotICAgIDEwOSwxMTIsNjIsNzgsNDEsMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDkwLDcsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsMSwKLSAgICAxLDAsMCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LDExNiwKLSAgICAxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDksMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwxLDAsMCwxMTQsMTEsMSwwLAotICAgIDAsMTE0LDg1LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsOTAsMCwwLDAsCi0gICAgMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTEsMCwwLDAsMTE0LDEyLDEsMCwwLDQxLAotICAgIDksMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLAotICAgIDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwKLSAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NiwwLDAsCi0gICAgMCwxMTQsMTA4LDAsMCwwLDExNCwyMzgsMCwwLDAsMTE0LDIyNiwwLDAsMCwKLSAgICA5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNCwxLDAsMCwyNDQsNCwKLSAgICAwLDAsMTE1LDM0LDAsMCwwLDAsMiw5LDEsMywxLDMxLDEsMjIsCi0gICAgMywxMSwzLDE4LDEsMTgsNyw5LDEsMTMsMSwyNCwxLDYsMSwyNywKLSAgICAyLDYsMSwxNywxLDksMSwxOCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwKLSAgICAwLDAsNywwLDAsMCwxMTUsMjUsMCwwLDAsMTM1LDAsMCwxMzUsMSwKLSAgICAwLDEwMiwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDIsMCwKLSAgICAxMjQsMiwwLDgzLDQxLDMsOTcsMjAsMSwwLDAsNjUsMzIsOTksMTA4LDk3LAotICAgIDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLAotICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LAotICAgIDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDMyLAotICAgIDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsMTAxLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiw5NywxMTAsMTAwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMDgsCi0gICAgMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsCi0gICAgMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsOTcsCi0gICAgMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCi0gICAgMTksMCwwLDAsMTE1LDQzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDExNSwzMCwwLDExNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwwLAotICAgIDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMzYsMSwwLAotICAgIDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLDExMSwKLSAgICAxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKLSAgICAxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNywwLDAsMCw0MSwyLDExNCw0OCwwLDAsCi0gICAgMCwxMTQsMTA5LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTMsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsCi0gICAgMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDI5LDUsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDE4LDEsMTIyLDU0LDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEzLDEsMCwwLDExNCwxOSwxLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAyLDExNCwxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxOSw1LDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEwLDIxLDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsCisgICAgMTE0LDE3OCwwLDAsMCwxMjQsNCwwLDAsMTE1LDI2LDAsMCwwLDAsNiwKKyAgICA4LDEsNiwxLDE0LDEsOCwxLDQsMSwxMCwxLDYsMSw0LDMsCisgICAgNiwxLDE2LDEsNCwyLDYsMiwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwKKyAgICAxMzEsMiwxMjUsMywxMjQsMywxMDAsMSwxMDcsOCwxMTQsMjQsMTAwLDEsODMsMCwKKyAgICAxMjQsMywxMDYsMSw4MywwLDQxLDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLAorICAgIDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLAorICAgIDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsCisgICAgMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsCisgICAgNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTc4LDAsMCwwLDExNCwxMjQsMCwwLAorICAgIDAsNDEsNCwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE3OSwwLDAsMCwxNDgsNCwwLDAsMTE1LAorICAgIDgsMCwwLDAsMCw4LDEyLDEsOCwxLDQsMSwxMjIsMjIsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0MSwxLDc4LDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxMiwKKyAgICAxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsCisgICAgMTExLDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMjU0LAorICAgIDAsMCwwLDExNCwwLDEsMCwwLDExNCwxLDEsMCwwLDExNCw0LDEsCisgICAgMCwwLDExNCwxNzgsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAxMTQsMjQ4LDAsMCwwLDMwLDQsMCwwLDExNSwyMiwwLDAsMCw4LDIsCisgICAgNCwyLDEyLDgsMTIsMTMsMTIsMjIsMTIsMTUsMiwxLDEyLDMxLDIsMSwKKyAgICAxMiwyMywyLDEsMTE0LDI0OCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLDExNSw5MCwKKyAgICAwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsCisgICAgMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAxLAorICAgIDYsOTAsNywxMDAsNiwxMDAsNywxMzIsMCw5MCw4LDEwMCw4LDEwMCw5LDEzMiwKKyAgICAwLDkwLDksMTAwLDE5LDEwMCwxMSwxMDAsMTIsMTMyLDEsOTAsMTAsMTAwLDEzLDEwMCwKKyAgICAxNCwxMzIsMCw5MCwxMSwxMDEsMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwKKyAgICAxMywxMDAsMTcsMTAwLDE4LDEzMiwwLDkwLDE0LDEwMCwxMCw4MywwLDQxLDIwLDIxOCwKKyAgICAxMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwKKyAgICAxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICAxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksCisgICAgMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwKKyAgICAxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywKKyAgICAzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LAorICAgIDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSw4OCwKKyAgICAwLDAsMCwxMDMsMCwxMjUsMywxMjAsNDAsMTI0LDIsNjgsMCw5MywzMiw5MiwKKyAgICAyLDEzNywwLDEyNSw0LDEyNCwzLDEwNiwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNCw0LDY4LDAsMTMxLDEsMTMxLDEsMSwwLDExMywxMCw4NywKKyAgICAwLDEyNCwzLDEyNCwwLDk1LDEsMTI0LDEsMTEyLDU4LDEwMCwzLDEyNCwwLDk1LAorICAgIDIsMTAwLDYsMTI0LDAsOTUsMywxMTYsNCwxMzEsMCwxMjQsMCw5NSw1LDExNiwKKyAgICA0LDEzMSwwLDEyNCwwLDk1LDYsMTAwLDUsODMsMCw0MSw3LDEyMiwxNTQsNzMsCisgICAgMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwKKyAgICAxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LAorICAgIDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LAorICAgIDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSwKKyAgICA5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjIsCisgICAgMCwwLDAsMTI0LDAsOTMsMTQsMTI1LDEsMTI0LDEsMTM2LDAsMTAyLDIsODYsCisgICAgMCwxLDAsMTEzLDIsMTAwLDAsODMsMCw0MSwxLDc4LDExNCw0LDAsMCwKKyAgICAwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCwyMjIsMCwwLDAsNDEsMSwxMTQsCisgICAgMTI0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsCisgICAgMCwwLDAsMTc3LDQsMCwwLDExNSwyLDAsMCwwLDQsMCwxMjIsMzgsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsCisgICAgMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjEsMCwwLDAsMTE0LDMxLDAsMCwwLAorICAgIDc4LDExNCw5MSwwLDAsMCw0MSw3LDExNCwxNDcsMCwwLDAsMjE4LDgsOTUsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM3LDAsMCwwLDIxOCwxMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwzLDExNSwxMDEsMTE2LDIxOCwxMSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCwxOSw5NSwxMTQsMTAxLAorICAgIDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDE0LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNywxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY0LDAsMCwwLDExNCw0LDAsMCwwLDQxLAorICAgIDEsMTE0LDEyNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLAorICAgIDE3MSw0LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDQsMSwxNCwxLDI4LAorICAgIDEsNiwyLDEwLDEsNiwxLDgsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwKICAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLAotICAgIDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLDE2LDcwLDEwNSwxMDgsCi0gICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsCi0gICAgNDksMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwKKyAgICAwLDAsMCwxMTUsMTAsMCwwLDAsMTAwLDMsMTI0LDAsOTUsMCwxMDAsMiwKKyAgICA4MywwLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwKKyAgICAxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LDMxLDAsMCwwLDc4LDExNCw5MSwwLDAsMCwKKyAgICA0MSwxLDExNCw3LDEsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ5LDAsCisgICAgMCwwLDE4NSw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwKKyAgICAxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw0MiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsCisgICAgMiwxMDAsMSwxMDcsOCwxMTQsMjYsMTAwLDEsMTAzLDAsMTAyLDIsODMsMCwxMjQsCisgICAgMiwxMDYsMSwxMjQsMiwxMDYsMiwxMTIsMzgsMTAzLDAsMTAyLDIsODMsMCw0MSwKKyAgICAyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsCisgICAgMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAorICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKKyAgICAxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDMsMTE0LDE3OCwwLDAsMCwKKyAgICAxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTIxLDAsMCwwLDE5MSwKKyAgICA0LDAsMCwxMTUsOCwwLDAsMCwwLDcsMTAsMSw4LDEsOCwxLAorICAgIDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDYsMCwwLDAsMCwwLDAsCisgICAgMCw3LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwyLDEyNSw2LDExNiwwLDEyNCwyLAorICAgIDEyNCwzLDEyNCw2LDEyNCw0LDEwMCwxLDE0MSw0LDgzLDAsNDEsMiw3OCw0MSwKKyAgICAyLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwxLDExNCwxNjUsMCwKKyAgICAwLDAsNDEsNywxMTQsMTA0LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMTUsMTA5LDExNSwxMDgsMTE0LDE3NywKKyAgICAwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCw0LDEsMCwwLDIwMyw0LDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDEsMTAsMSw4LDEsMTIyLDIwLDcwLDEwNSwxMDgsCisgICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsCisgICAgOTksNzgsOTksMywwLDAsMCwwLDAsMCwwLDE0LDAsMCwwLDE1LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw5OCwxLDAsMCwxMDAsMSwxMjUsMywKKyAgICAxMjQsMSwxMDYsMCwxMDAsMiwxMzEsMSwxMDAsMywyNSwwLDEyNSw0LDEyMSwyNCwKKyAgICAxMTYsMSwxMjQsMCwxMDYsMiwxMTIsMzQsMTE2LDMsMTA2LDQsMTMxLDAsMTMxLDEsCisgICAgMTA2LDUsMTI1LDUsODcsMCwxMTAsMjQsNCwwLDExNiw2LDEwNywxMCwxMTQsNjYsCisgICAgMSwwLDEsMCwxLDAsMTAwLDEwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsNSwxMjQsMCwxMDYsNywxMDcsMywxMTQsOTIsMTI0LDAsMTA2LDgsMTMxLDAsCisgICAgMSwwLDEyNCw1LDEyNCwwLDk1LDcsMTE2LDksMTMxLDAsMTE0LDExNCwxMjQsMCwKKyAgICAxMDYsMTAsMTI1LDYsMTI0LDQsMTA2LDExLDEzMSwwLDEyNSw3LDExMCwxMCwxMjQsMCwKKyAgICAxMDYsMTIsMTI1LDYsMTI0LDQsMTI1LDcsMTI0LDcsMTI0LDYsMTA3LDYsMTE0LDIxOCwKKyAgICAxMTYsMTMsMTI0LDAsMTA2LDIsMTI0LDQsMTMxLDIsMTI1LDgsMTIwLDcyLDEyNCwwLAorICAgIDEwNiwxNCw2OCwwLDkzLDU0LDkyLDIsMTI1LDksMTI1LDEwLDEwMCw1LDEyNCw5LAorICAgIDIzLDAsMTI1LDExLDExNiwxMywxMjQsOCwxMjQsMTEsMTMxLDIsMTI1LDEyLDExNiwxNSwKKyAgICAxMjQsMTIsMTMxLDEsMTE0LDE1MiwxMjQsMCwxMDYsMTYsMTI0LDEwLDEyNCwxLDEyNCwxMiwKKyAgICAxMjQsOCwxMDMsMSwxMjQsMiwxMzEsNSw4MywwLDExMywxNTIsODcsMCwxMTYsMTcsCisgICAgMTI0LDgsMTMxLDEsMTI1LDMsMTIwLDg4LDEyNCwwLDEwNiwxNCw2OCwwLDkzLDc4LAorICAgIDkyLDIsMTI1LDksMTI1LDEwLDExNiwxMywxMjQsMCwxMDYsMiwxMjQsNCwxMjQsOSwKKyAgICAyMywwLDEzMSwyLDEyNSwxMiwxMTYsMTgsMTA2LDE5LDEwMCw2LDEyNCwxMiwxMDAsMywKKyAgICAxMDAsNywxNDEsMywxLDAsMTI0LDcsMTI0LDksMjMsMCwxMjQsNiwxMDcsNiwKKyAgICAxMTQsMjI2LDExNiwxNSwxMjQsMTIsMTMxLDEsMTE0LDIyNiwxMjQsMCwxMDYsMTYsMTI0LDEwLAorICAgIDEyNCwxLDEyNCwxMiwxMDAsOCwxMjQsMiwxMzEsNSw4MywwLDExMywyMjYsODcsMCwKKyAgICAxMjQsMywxNDQsMSwxMTQsOTQsMTE2LDE4LDEwNiwxOSwxMDAsOSwxMjQsOCwxMzEsMiwKKyAgICAxLDAsMTE2LDE4LDEwNiwyMCwxMjQsMSwxMDAsOCwxMzEsMiwxMjUsMTMsMTI0LDgsCisgICAgMTAzLDEsMTI0LDEzLDk1LDIxLDEyNCwxMyw4MywwLDEwMCw4LDgzLDAsNDEsMTEsCisgICAgMTIyLDExMSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTA1LDExMCwxMDMsMzIsMTE1LDExMiwxMDEsCisgICAgOTksNDQsMzIsMTExLDExNCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTAyLDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzAsMTE0LDYxLDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsMzEsMCwwLAorICAgIDAsMTE0LDE4MiwwLDAsMCwxMjIsOSwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMjMsCisgICAgMTI1LDQxLDEsOTAsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDc4LDEyMiwKKyAgICAyNSwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsOTEsMCwwLDAsNDEsCisgICAgMjIsMTE0LDM0LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDQ3LDAsMCwwLDExNCwyMTYsMCwwLDAsMTE0LAorICAgIDQyLDAsMCwwLDExNCw3LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTQsNywwLDAsMCwxMTQsMTAsMSwwLDAsCisgICAgMTE0LDkyLDAsMCwwLDExNCw5LDEsMCwwLDExNCwzMCwwLDAsMCwxMTQsCisgICAgNiwxLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDQ4LAorICAgIDAsMCwwLDExNCwxMTgsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTU4LDAsCisgICAgMCwwLDExNCwxNTQsMCwwLDAsNDEsMTQsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLAorICAgIDAsMCwwLDExNCwxNzcsMCwwLDAsOTAsMTIsMTA1LDExNSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5MCwxMSwxMTYsOTcsMTA1LDEwOCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTQsMTMwLDAsMCwwLDkwLDUsOTksOTcsOTksMTA0LDEwMSw5MCwKKyAgICAxMiw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDksOTgsCisgICAgOTcsMTE1LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMjIyLDAsMCwwLDExNCwxNjMsMCwKKyAgICAwLDAsOTAsMTMsMTA1LDExMCwxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSw5MCw5LDEwMiwxMTcsMTA4LDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYyLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDExNCwxNzgsMCwwLDAsMjA4LDQsMCwwLDExNSw3MCwwLDAsMCwwLDUsCisgICAgNCwxLDE0LDEsMiwxLDI0LDEsMTQsMSwxMCwxLDEwLDEsOCwxLAorICAgIDYsMiw2LDEsNiwxLDEwLDIsNiwxLDQsMiw4LDEsMTIsMSwKKyAgICAxNiwxLDgsMSwxMCwxLDgsMSwyNCw0LDgsMiwxNiwxLDE2LDEsCisgICAgMTYsMSwxMiwxLDgsMSwxMCwxLDEyLDEsNiwxLDEyLDEsMTIsMSwKKyAgICA4LDEsNCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTk0LDAsMCwwLDEyNCwwLDEwNiwwLDEyNSwxLDEyMSwyMiwxMTYsMSwxMDYsMiwKKyAgICAxMjQsMSwxMTIsMjIsMTE2LDEsMTA2LDMsMTMxLDAsMTMxLDEsMTI1LDIsODcsMCwKKyAgICAxMTAsMzAsNCwwLDExNiw0LDExNiw1LDExNiw2LDEwMiwzLDEwNywxMCwxMTQsNTgsCisgICAgMSwwLDEsMCwxLDAsMTAzLDAsMTI1LDIsODksMCwxMTAsMiw4OCwwLAorICAgIDExNiw3LDEwNiw4LDEwNiw5LDEwMCwxLDEzMSwxLDExNSw4NCwxMTYsMTAsMTI0LDIsCisgICAgMTMxLDEsMTI0LDAsOTUsMTEsMTEwLDc4LDExNiwxMCwxMzEsMCwxMjUsMywxMjAsNjQsCisgICAgMTI0LDIsNjgsMCw5Myw1NiwxMjUsNCwxMjQsNCwxMDYsMTIsMTAwLDIsMTMxLDEsCisgICAgOTIsMywxMjUsNSwxMjUsNiwxMjUsNywxMjQsNiwxMTQsMTM4LDEwMCwzLDEwNiwxMywKKyAgICAxMjQsNSwxMjQsNywxMDYsMTQsMTMxLDAsMTMxLDIsMTI1LDgsMTEwLDQsMTI0LDUsCisgICAgMTI1LDgsMTI0LDMsMTA2LDE1LDEyNCw4LDEzMSwxLDEsMCwxMTMsOTYsODcsMCwKKyAgICAxMjQsMywxMjQsMCw5NSwxMSwxMTYsNywxMDYsOCwxMDYsOSwxMTYsMTYsMTMxLDEsCisgICAgMTE0LDE5MCwxMDAsNCwxMDAsNSwxMzIsMCwxMjQsMiw2OCwwLDEzMSwxLDEyNCwwLAorICAgIDk1LDE3LDEwMCw2LDgzLDAsNDEsNywxMjIsNjgsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwKKyAgICAxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwKKyAgICAxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwNSwxMTUsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NiwxMTQsMCwKKyAgICAwLDAsMCwxMTQsNjEsMCwwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgODMsMCwwLDAsMTE1LDIwLDAsMCwwLDEwNCwwLDEyNCwwLDkzLDEyLDEyNSwKKyAgICAxLDEyNCwxLDEwNiwwLDEzMSwwLDE0NiwyLDExMyw0LDgzLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsOTIsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsCisgICAgOTAsMiwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDI5LDUsCisgICAgMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksCisgICAgMTExLDEwOSwxMTIsNjIsNzgsNDEsMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwKKyAgICAwLDkwLDcsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsCisgICAgMjU1LDAsMCwwLDIxOCwxNSw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LDExNCwxMDEsOTksCisgICAgMTE2LDExMSwxMTQsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsOSwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDgsMSwwLDAsMTE0LDksMSwKKyAgICAwLDAsMTE0LDg3LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsOTIsMCwwLAorICAgIDAsMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTEsMCwwLDAsMTE0LDEwLDEsMCwwLAorICAgIDQxLDksMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsCisgICAgMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LAorICAgIDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NCwwLAorICAgIDAsMCwxMTQsMTAyLDAsMCwwLDExNCwyMzQsMCwwLDAsMTE0LDIyMiwwLDAsCisgICAgMCw5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxMiwxLDAsMCwwLAorICAgIDUsMCwwLDExNSwzNCwwLDAsMCwwLDIsNiwxLDIsMSwyMiwxLAorICAgIDIwLDMsMTAsMywxMiwxLDEyLDcsNiwxLDEwLDEsMTYsMSw0LDEsCisgICAgMTgsMiw0LDEsMTQsMSw2LDEsMTIsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLAorICAgIDAsMCwwLDcsMCwwLDAsMTE1LDE4LDAsMCwwLDEzNSwwLDEzNSwxLAorICAgIDEwMiwyLDEwMCwxLDEwMCwyLDEzMiw4LDEyNSwyLDEyNCwyLDgzLDAsNDEsMywKKyAgICA5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LAorICAgIDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksCisgICAgMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsCisgICAgMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsCisgICAgMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NCwKKyAgICAzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzQsCisgICAgMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTE1LDIwLDExNiwxLDEwMCwxLDEyNCwKKyAgICAwLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLDEwMiwxLDEzNiwxLDE1OCwKKyAgICAyLDE0MiwwLDgzLDAsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLAorICAgIDExMSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0NiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LAorICAgIDEwMSw5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLAorICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAorICAgIDQ4LDAsMCwwLDExNCwxMDMsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsCisgICAgNDEsMiwxMTQsMTY4LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsMjQsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCisgICAgMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDEsNSwwLDAsMTE1LDYsMCwwLDAsMCwyLDgsMSwxMiwxLDEyMiwKKyAgICA1NCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNCwxMTEsMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsCisgICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTY4LAorICAgIDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMiwxMTQsMTY4LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMzEsNSwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMCwxMCwxNCw2LDEyMiwyMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsCisgICAgMCwxMDYsMSwxMzEsMSw4MywwLDQxLDIsNzgsMTIyLDE2LDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNTAsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQzLAorICAgIDAsMCwwLDQ5LDUsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMTksCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwKKyAgICAxMTQsOTUsOTUsNDEsMSw3OCw0MSwxNSwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODIsMCwwLAorICAgIDAsMTE0LDI0OSwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxNzksMCwwLDAsCisgICAgMTE0LDEyMSwwLDAsMCwxMTQsNCwxLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwKKyAgICAxMiwxLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwxOCwxLDAsMCwxMTQsMjQzLAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCw1LDEsMCwwLDE2Miw0LDAsMCwKKyAgICAxMTUsMjAsMCwwLDAsOCw3LDQsMiw4LDE0LDgsNCw0LDIsOCwKKyAgICAxMiw4LDUsMTAsNDgsOCwzMSwxMiwxOCwxMTQsNSwxLDAsMCw5OSw0LAorICAgIDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQ2LDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLAorICAgIDEyNSw0LDEyNCwwLDEwNiwwLDEwMCwyLDEzMSwxLDEyNSw1LDEyNCw0LDExNSw2NiwKKyAgICAxMjQsNSwxMTQsMzYsMTI0LDUsMTA2LDEsMTI1LDQsMTEwLDMwLDEyNCwyLDEyNCwzLAorICAgIDEwNywyLDExNCw1NiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsNCwxMTAsMTAsCisgICAgMTE2LDMsMTI0LDEsMTI0LDIsMTMxLDIsMTI1LDQsMTI0LDUsMTE1LDg0LDExNiw0LAorICAgIDEyNCwxLDEyNCwyLDEyNCw0LDEwMCwzLDE0MSwzLDEyNSw1LDEyMSwzNiwxMjQsNSwKKyAgICAxMjQsMCwxMDAsMiw2MCwwLDEyNCw0LDEyNCwwLDEwMCwxLDYwLDAsMTI0LDIsCisgICAgMTI0LDAsMTAwLDQsNjAsMCwxMjQsMywxMjQsMCwxMDAsNSw2MCwwLDg3LDAsCisgICAgMTEwLDIwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDE0MCwxLDAsMSwwLDEsMCwKKyAgICA4OSwwLDExMCwyLDg4LDAsMTAwLDAsODMsMCw0MSw2LDc4LDIxOCwxMCw5NSwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLAorICAgIDk5LDk1LDk1LDQxLDEsMTE0LDEyNCwwLDAsMCw5MCw4LDk1LDk1LDEwMiwxMDUsCisgICAgMTA4LDEwMSw5NSw5NSw5MCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwKKyAgICA0MSw2LDIxOCwzLDEwMywxMDEsMTE2LDExNCwxMjQsMCwwLDAsMTE0LDIyMCwwLDAsCisgICAgMCwxMTQsMjE1LDAsMCwwLDExNCwxNjUsMCwwLDAsMjE4LDksNjksMTIwLDk5LAorICAgIDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCwxMDIsMCwwLAorICAgIDAsOTAsOCwxMTIsOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSw5MCw5LDk5LDExMiw5NywKKyAgICAxMTYsMTA0LDExMCw5NywxMDksMTAxLDExNCwxMjQsMCwwLDAsMTE0LDE2MiwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMTQsOTUsMTAyLDEwNSwxMjAsOTUsMTE3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw1NSwKKyAgICA1LDAsMCwxMTUsMzQsMCwwLDAsMCwyLDEwLDEsMTAsMSw0LDEsCisgICAgNCwxLDgsMSw4LDEsMTIsMiwxMCwxLDQsMSwxNCwxLDIsMSwKKyAgICA4LDEsOCwxLDgsMSwxMiwxLDE0LDIsMTE0LDIzLDEsMCwwLDk5LAorICAgIDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDExNiwxLDEwNiwyLDEzMSwKKyAgICAwLDEwMiwyLDEyNSwwLDExNiwzLDExNiw0LDEwMiwyLDEyNSwxLDExNiw1LDExNiwKKyAgICA2LDEwMiwyLDEyNSwyLDEyNCwwLDEyNCwxLDEyNCwyLDEwMywzLDgzLDAsNDEsCisgICAgMSwxMjIsOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsCisgICAgMTE2LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LAorICAgIDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwKKyAgICAzMiwzMiw0MSw3LDExNCwyMjEsMCwwLDAsMTE0LDE0MywwLDAsMCwyMTgsMTgsCisgICAgMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsCisgICAgMTAxLDExNSwxMTQsMjE1LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsMjIwLDAsMCwKKyAgICAwLDExNCw3OCwwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDc4LDUsMCwwLDExNSw4LAorICAgIDAsMCwwLDAsNSwxMiwxLDgsMSw4LDEsMTE0LDE1OSwwLDAsMCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE4OCwxLDAsMCwxMjQsMCw5NywwLDExNiwwLAorICAgIDEwNiwxLDk3LDEsMTE2LDAsMTA2LDIsOTcsMiwxMTYsMSwxMDYsMywxMTYsNCwKKyAgICAyNSwwLDEyNSwxLDEyMCw1NiwxMDAsMjYsNjgsMCw5Myw0OCwxMjUsMiwxMjQsMiwKKyAgICAxMTYsMSwxMDYsMywxMDcsNywxMTQsNTgsMTE2LDAsMTA2LDUsMTI0LDIsMTMxLDEsCisgICAgMTI1LDMsMTEwLDEwLDExNiwxLDEwNiwzLDEyNCwyLDI1LDAsMTI1LDMsMTE2LDYsCisgICAgMTI0LDEsMTI0LDIsMTI0LDMsMTMxLDMsMSwwLDExMywzMiw4NywwLDEwMCw1LAorICAgIDEwMCw2LDEwMywxLDEwMiwyLDEwMCw3LDEwMCw4LDEwMCw2LDEwMywyLDEwMiwyLAorICAgIDEwMiwyLDEyNSw0LDEyMCwxMTgsMTI0LDQsNjgsMCw5MywxMDIsOTIsMiwxMjUsNSwKKyAgICAxMjUsNiwxMTYsNywxMDAsOSwxMDAsMTAsMTMyLDAsMTI0LDYsNjgsMCwxMzEsMSwKKyAgICAxMzEsMSwxMTUsMTQyLDExNiw4LDEzMCwxLDEyNCw2LDEwMCwxMSwyNSwwLDEyNSw3LAorICAgIDEyNCw1LDExNiwxLDEwNiwzLDEwNyw2LDExNCwxNzQsMTE2LDEsMTA2LDMsMTI0LDUsCisgICAgMjUsMCwxMjUsOCw4MCwwLDExMywxMTIsMTIxLDE2LDExNiwwLDEwNiw1LDEyNCw1LAorICAgIDEzMSwxLDEyNSw4LDgwLDAsODcsMCwxMTMsMTEyLDQsMCwxMTYsOSwxMDcsMTAsCisgICAgMTE0LDIxMiwxLDAsMSwwLDEsMCwxMTksMTEyLDg5LDAsMTEzLDExMiw4OCwwLAorICAgIDExMywxMTIsODcsMCwxMTYsOSwxMDAsMTIsMTMxLDEsMTMwLDEsMTE2LDYsMTI0LDEsCisgICAgMTAwLDEzLDEyNCw4LDEzMSwzLDEsMCwxMTYsNiwxMjQsMSwxMDAsMTQsMTI0LDcsCisgICAgMTMxLDMsMSwwLDExNiw2LDEyNCwxLDEwMCwxNSwxMDAsMTYsMTA2LDEwLDEyNCw2LAorICAgIDEzMSwxLDEzMSwzLDEsMCwxMjEsMTQsMTE2LDAsMTA2LDUsMTAwLDE3LDEzMSwxLAorICAgIDEyNSw5LDg3LDAsMTEwLDI2LDQsMCwxMTYsOSwxMDcsMTAsMTQ0LDEsMTE0LDUyLAorICAgIDEsMCwxLDAsMSwwLDEwMCwxOCwxMjUsOSw4OSwwLDExMCwyLDg4LDAsCisgICAgMTE2LDYsMTI0LDEsMTAwLDE3LDEyNCw5LDEzMSwzLDEsMCwxMTYsMCwxMDYsNSwKKyAgICAxMDAsMTksMTMxLDEsMTI1LDEwLDExNiw2LDEyNCwxLDEwMCwxOSwxMjQsMTAsMTMxLDMsCisgICAgMSwwLDEyNCw1LDEwMCw3LDEwNywyLDE0NCwxLDExNCwxMjAsMTE2LDAsMTA2LDUsCisgICAgMTAwLDIwLDEzMSwxLDEyNSwxMSwxMTYsNiwxMjQsMSwxMDAsMjEsMTI0LDExLDEzMSwzLAorICAgIDEsMCwxMTYsNiwxMjQsMSwxMDAsMjIsMTE2LDExLDEzMSwwLDEzMSwzLDEsMCwKKyAgICAxMTYsMTIsMTA2LDEzLDExNiwyLDEwNiwxNCwxMzEsMCwxMzEsMSwxLDAsMTI0LDUsCisgICAgMTAwLDcsMTA3LDIsMTQ0LDEsMTE0LDE4NCwxMTYsMTUsMTA2LDE2LDEwMCwyMywxMzEsMSwKKyAgICAxLDAsMTAwLDI0LDExNiwxMiwxMDcsNiwxNDQsMSwxMTQsMTg0LDEwMCwyNSwxMTYsMTcsCisgICAgOTUsMTgsMTAwLDE4LDgzLDAsNDEsMjcsMTIyLDIwNSw4MywxMDEsMTE2LDExNywxMTIsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwMSwxMDksMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LAorICAgIDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwxMDEsCisgICAgMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTIwLDExNiwxMTQsOTcsOTksMTE2LDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMTQsMTAxLDMyLAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsNTIsMCwwLDAsMTE0LDYzLDAsMCwKKyAgICAwLDIxOCw4LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMTQsMTQwLDAsMCwwLAorICAgIDkwLDUsMTEyLDExMSwxMTUsMTA1LDEyMCwyNTAsMSw0NywyMTgsMiwxMTAsMTE2LDI1MCwxLAorICAgIDkyLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsMTE1LDAsMCwwLDExNSwyNiwwLDAsMCwxMjQsMCw5MywxOCwxMjUsCisgICAgMSwxMTYsMCwxMjQsMSwxMzEsMSwxMDAsMCwxMDcsMiw4NiwwLDEsMCwxMTMsCisgICAgMiwxMDAsMSw4MywwLDQxLDIsMTE0LDMxLDAsMCwwLDc4LDQxLDEsMTE0LAorICAgIDMzLDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCw4MSwwLDAsMCwKICAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMjQ1LDAsMCwwLDM3LDUsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCi0gICAgMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsOTUsOTUsNDEsMTUsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDExNCwKLSAgICAyNTEsMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMjYsCi0gICAgMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTQsMSwKLSAgICAwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMjAsMSwwLDAsMTE0LDI0NSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsNywxLDAsMCwxNTMsNCwwLDAsMTE1LDIwLAotICAgIDAsMCwwLDEyLDcsNiwyLDEyLDE0LDEyLDQsNiwyLDEyLDEyLDEyLAotICAgIDUsMTUsNDUsMTIsMzEsMTgsMTgsMTE0LDcsMSwwLDAsOTksNCwwLDAsCi0gICAgMCwwLDAsMCwwLDYsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE5NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwyLDAsMTMxLDEsCi0gICAgMCwxMjUsNSwwLDEyNCw0LDAsMTE1LDk5LDAsMTI0LDUsMCwxMTQsNTQsMCwKLSAgICAxMjQsNSwwLDEwNiwxLDAsMTI1LDQsMCwxMTAsNDUsMCwxMjQsMiwwLDEyNCwKLSAgICAzLDAsMTA3LDIsMCwxMTQsODQsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEyNSw0LDAsMTEwLDE1LDAsMTE2LDMsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTMxLDIsMCwxMjUsNCwwLDEyNCw1LDAsMTE1LDEyNiwwLDExNiwKLSAgICA0LDAsMTI0LDEsMCwxMjQsMiwwLDEwMCwzLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAxLDEyNSw1LDAsMTIxLDQ0LDAsMTI0LDUsMCwxMjQsMCwwLDEwMCwyLDAsCi0gICAgNjAsMTI0LDQsMCwxMjQsMCwwLDEwMCwxLDAsNjAsMTI0LDIsMCwxMjQsMCwKLSAgICAwLDEwMCw0LDAsNjAsMTI0LDMsMCwxMjQsMCwwLDEwMCw1LDAsNjAsODcsCi0gICAgMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxOTAsMCwxLDEsMSwKLSAgICA4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsNiw3OCwyMTgsMTAsOTUsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsOCw5NSw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSw5NSwxMTQsMTI5LDAsMCwwLDkwLDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LAotICAgIDk1LDkwLDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDQxLDYsMjE4LAotICAgIDMsMTAzLDEwMSwxMTYsMTE0LDEyOSwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwyMTksCi0gICAgMCwwLDAsMTE0LDE2OSwwLDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsCi0gICAgMTA1LDExMSwxMTAsNDEsNiw5MCwyLDExMCwxMTUsMTE0LDEwOCwwLDAsMCw5MCw4LAotICAgIDExMiw5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwxMDQsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDEyOSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMDIsCi0gICAgMTA1LDEyMCw5NSwxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQzLDUsMCwwLAotICAgIDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxNSwxLDYsMSw2LDEsMTIsCi0gICAgMSwxMiwxLDE4LDIsMTUsMSw2LDEsMjEsMSwzLDEsMTAsMSwxMCwKLSAgICAxLDEwLDEsMTQsMSwxMywyLDExNCwyNSwxLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMzEsCi0gICAgMCwwLDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiw0LDAsMTAyLDIsCi0gICAgMCwxMjUsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwwLDEyNSwyLDAsCi0gICAgMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCw4Myw0MSwxLDEyMiwKLSAgICA5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsCi0gICAgMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LDMyLAotICAgIDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwKLSAgICAzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDQxLDcsMTE0LDIyNSwwLDAsMCwxMTQsMTQ3LDAsMCwwLDIxOCwxOCwxMDEsMTIwLAotICAgIDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LAotICAgIDExNCwyMTksMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LAotICAgIDc2LDAsMCwwLDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsMTAxLAotICAgIDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxNjMsMCwwLDAsNjYsNSwwLDAsMTE1LDgsMCwwLAotICAgIDAsMCw1LDE4LDEsMTIsMSwxMiwxLDExNCwxNjMsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MCwyLDAsMCwxMjQsMCwwLDk3LDAsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsOTcsMSwwLDExNiwwLDAsMTA2LDIsMCw5NywyLDAsCi0gICAgMTE2LDEsMCwxMDYsMywwLDExNiw0LDAsMjUsMTI1LDEsMCwxMjAsNzYsMCwKLSAgICAxMDAsMjYsMCw2OCw5Myw2OCwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMSwwLAotICAgIDEwNiwzLDAsMTA3LDcsMCwxMTQsODMsMCwxMTYsMCwwLDEwNiw1LDAsMTI0LAotICAgIDIsMCwxMzEsMSwwLDEyNSwzLDAsMTEwLDEzLDAsMTE2LDEsMCwxMDYsMywKLSAgICAwLDEyNCwyLDAsMjUsMTI1LDMsMCwxMTYsNiwwLDEyNCwxLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwzLDAsMSwxMTMsNDQsMCw4NywxMDAsNSwwLDEwMCwKLSAgICA2LDAsMTAzLDEsMCwxMDIsMiwwLDEwMCw3LDAsMTAwLDgsMCwxMDAsNiwKLSAgICAwLDEwMywyLDAsMTAyLDIsMCwxMDIsMiwwLDEyNSw0LDAsMTIwLDE0OSwwLAotICAgIDEyNCw0LDAsNjgsOTMsMTI5LDAsOTIsMiwwLDEyNSw1LDAsMTI1LDYsMCwKLSAgICAxMTYsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCwxMjQsNiwwLDY4LAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMTUsMTk5LDAsMTE2LDgsMCwxMzAsMSwwLDEyNCwKLSAgICA2LDAsMTAwLDExLDAsMjUsMTI1LDcsMCwxMjQsNSwwLDExNiwxLDAsMTA2LAotICAgIDMsMCwxMDcsNiwwLDExNCwyNDEsMCwxMTYsMSwwLDEwNiwzLDAsMTI0LDUsCi0gICAgMCwyNSwxMjUsOCwwLDgwLDExMywxNTYsMCwxMjEsMjAsMCwxMTYsMCwwLDEwNiwKLSAgICA1LDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw4LDAsODAsODcsMTEzLDE1NiwwLAotICAgIDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMjgsMSwxLDEsMSwxMTksMTU2LDAsCi0gICAgODksMTEzLDE1NiwwLDg4LDExMywxNTYsMCw4NywxMTYsOSwwLDEwMCwxMiwwLDEzMSwKLSAgICAxLDAsMTMwLDEsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLDEzLDAsMTI0LDgsCi0gICAgMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwxNCwwLDEyNCw3LAotICAgIDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsMTUsMCwxMDAsMTYsCi0gICAgMCwxMDYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTMxLDMsMCwxLDEyMSwxOSwKLSAgICAwLDExNiwwLDAsMTA2LDUsMCwxMDAsMTcsMCwxMzEsMSwwLDEyNSw5LDAsCi0gICAgODcsMTEwLDI0LDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwxNDcsMSwxLDEsCi0gICAgMSwxMDAsMTgsMCwxMjUsOSwwLDg5LDExMCwxLDAsODgsMTE2LDYsMCwxMjQsCi0gICAgMSwwLDEwMCwxNywwLDEyNCw5LDAsMTMxLDMsMCwxLDExNiwwLDAsMTA2LAotICAgIDUsMCwxMDAsMTksMCwxMzEsMSwwLDEyNSwxMCwwLDExNiw2LDAsMTI0LDEsCi0gICAgMCwxMDAsMTksMCwxMjQsMTAsMCwxMzEsMywwLDEsMTI0LDUsMCwxMDAsNywKLSAgICAwLDEwNywyLDAsMTE0LDIzOCwxLDExNiwwLDAsMTA2LDUsMCwxMDAsMjAsMCwKLSAgICAxMzEsMSwwLDEyNSwxMSwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMjEsMCwxMjQsCi0gICAgMTEsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwyMiwwLDExNiwKLSAgICAxMSwwLDEzMSwwLDAsMTMxLDMsMCwxLDExNiwxMiwwLDEwNiwxMywwLDExNiwKLSAgICAyLDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMSwwLDEsMTI0LDUsMCwxMDAsCi0gICAgNywwLDEwNywyLDAsMTE0LDY2LDIsMTE2LDE1LDAsMTA2LDE2LDAsMTAwLDIzLAotICAgIDAsMTMxLDEsMCwxLDEwMCwyNCwwLDExNiwxMiwwLDEwNyw2LDAsMTE0LDY2LAotICAgIDIsMTAwLDI1LDAsMTE2LDE3LDAsOTUsMTgsMCwxMDAsMTgsMCw4Myw0MSwyNywKLSAgICAxMjIsMjA1LDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKLSAgICA0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LAotICAgIDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsCi0gICAgMTAxLDEwMCwxMCwzMiwzMiwzMiwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsCi0gICAgOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwKLSAgICAzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLAotICAgIDEwMSwxMjAsMTE2LDExNCw5Nyw5OSwxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsOTksMTExLDExNCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCi0gICAgMTEyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKLSAgICA1MSwwLDAsMCwxMTQsNjIsMCwwLDAsMjE4LDgsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsMTE1LDExNCwxNDQsMCwwLDAsOTAsNSwxMTIsMTExLDExNSwxMDUsMTIwLDI1MCwKLSAgICAxLDQ3LDIxOCwyLDExMCwxMTYsMjUwLDEsOTIsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsMTE1LDMzLAotICAgIDAsMCwwLDEyNCwwLDAsOTMsMjMsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDEwMCwwLDAsMTA3LDIsMCw4NiwxLDExMywzLDAsCi0gICAgMTAwLDEsMCw4Myw0MSwyLDExNCwzMSwwLDAsMCw3OCw0MSwxLDExNCwzMywKLSAgICAwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsNzksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyOCwKLSAgICAwLDAsMCwxMDIsNSwwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwyNSwKLSAgICA5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKLSAgICA2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYxLDAsMCwwLDEyMiwzMCwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LDMsCi0gICAgMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwKLSAgICAwLDAsOTAsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LDkwLDgsOTUsMTE5LAotICAgIDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsMTcxLAotICAgIDAsMCwwLDExNCw3LDAsMCwwLDEyMiw0LDQ2LDExMiwxMjEsMTE5LDEyMiw2LAotICAgIDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LDExNCw1MSwwLDAsMCwxMTQsNjIsCi0gICAgMCwwLDAsMTE0LDI3LDEsMCwwLDExNCwxNDQsMCwwLDAsNDEsMTksMTE0LAotICAgIDEyMywwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyNDAsCi0gICAgMCwwLDAsMTE0LDExNCwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExOCwwLDAsCi0gICAgMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTA5LDAsMCwwLDExNCwyOCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMTUxLDAsMCwwLDExNCwKLSAgICAyNiwxLDAsMCwxMTQsODYsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcwLAotICAgIDAsMCwwLDExNCwxNzQsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMTUsCi0gICAgMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKLSAgICAxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwxMDAsMTAxLDExNiwKLSAgICA5NywxMDUsMTA4LDExNSw5MCwxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LAotICAgIDExNCwyMywwLDAsMCwxMTQsMjcsMCwwLDAsOTAsOSwxMTEsMTE1LDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw3Nyw1LDAsMCwxMTUsODIsCi0gICAgMCwwLDAsMCw4LDYsMSw5LDEsOSwzLDEzLDEsMTMsMSwxNSwKLSAgICAxLDE4LDIsMTMsMSwyMCwzLDMzLDEsMTksMiwzMSwxLDEwLDEsMTUsCi0gICAgMSwxMywxLDQsMiwzLDEsMTUsMSw1LDEsMTMsMSwxMiwyLDEyLAotICAgIDEsMTYsMSwxNiwxLDI1LDMsMywxLDE5LDEsMTMsMiwxMSwxLDE2LAotICAgIDMsMTUsMSwxNiwzLDEyLDEsMTUsMSwxNiwzLDE5LDEsMTksMSwxMiwKLSAgICAxLDEzLDEsMTIsMSwxMTQsMzQsMSwwLDAsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTE2LDEsCi0gICAgMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLDEwNiw0LDAsCi0gICAgMTE2LDUsMCwxMDYsNiwwLDEyNCwxLDAsMTQwLDAsMCwxMDMsMSwwLDEzMSwKLSAgICAxLDAsMSwxMTYsNywwLDEwNiw4LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwKLSAgICA3OCwwLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTEsMCwxMzEsMSwKLSAgICAwLDEsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMiwwLDEzMSwxLAotICAgIDAsMSwxMTYsNSwwLDEyNCwwLDAsOTUsNSwwLDExNiwxMywwLDEyNCwwLAotICAgIDAsOTUsMTMsMCwxMDAsMiwwLDgzLDQxLDMsMTIyLDQxLDczLDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LAotICAgIDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwKLSAgICAxMDEsMTEwLDExNiwxMTUsNDYsMTE0LDI5LDEsMCwwLDc4LDQxLDE0LDExNCwzNCwxLAotICAgIDAsMCwxMTQsMTYzLDAsMCwwLDExNCw4LDAsMCwwLDExNCwyNTUsMCwwLAotICAgIDAsMTE0LDE1MSwwLDAsMCwxMTQsNywxLDAsMCwxMTQsMjAsMSwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5NywKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LAotICAgIDI1MCwwLDAsMCwxMTQsMjE5LDAsMCwwLDQxLDIsMTE0LDMzLDEsMCwwLAorICAgIDIyNCwwLDAsMCwxMTQsNSwwLDAsMTE1LDIsMCwwLDAsNCwwLDEyMiwKKyAgICAyNSw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKKyAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYyLDAsMCwwLDEyMiwKKyAgICAzMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LAorICAgIDMsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsCisgICAgMCwwLDAsOTAsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LDkwLDgsOTUsCisgICAgMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsCisgICAgMTY3LDAsMCwwLDExNCw3LDAsMCwwLDEyMiw0LDQ2LDExMiwxMjEsMTE5LDEyMiwKKyAgICA2LDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LDExNCw1MiwwLDAsMCwxMTQsCisgICAgNjMsMCwwLDAsMTE0LDI1LDEsMCwwLDExNCwxNDAsMCwwLDAsNDEsMTksCisgICAgMTE0LDExOCwwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwKKyAgICAyMzYsMCwwLDAsMTE0LDEwOSwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExMywwLAorICAgIDAsMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTAzLDAsMCwwLDExNCwyOCwwLDAsCisgICAgMCwxMTQsMTMsMCwwLDAsMTE0LDIyNiwwLDAsMCwxMTQsMTQ3LDAsMCwwLAorICAgIDExNCwyNCwxLDAsMCwxMTQsODgsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsCisgICAgMTY2LDAsMCwwLDExNCwxNzAsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwKKyAgICAxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwxMDAsMTAxLAorICAgIDExNiw5NywxMDUsMTA4LDExNSw5MCwxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsCisgICAgMTE1LDExNCwyMywwLDAsMCwxMTQsMjcsMCwwLDAsOTAsOSwxMTEsMTE1LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw4OSw1LDAsMCwxMTUsCisgICAgODIsMCwwLDAsMCw4LDQsMSw2LDEsNiwzLDEwLDEsMTAsMSwKKyAgICAxMCwxLDEyLDIsMTAsMSwxNiwzLDIyLDEsMTQsMiwyMiwxLDgsMSwKKyAgICAxMCwxLDEwLDEsNCwyLDIsMSwxMCwxLDYsMSwxNCwxLDEyLDIsCisgICAgOCwxLDEyLDEsMTIsMSwxOCwzLDIsMSwxNCwxLDE2LDIsMTAsMSwKKyAgICAxMiwzLDEwLDEsMTIsMywxMCwxLDEwLDEsMTIsMywxNCwxLDE0LDEsCisgICAgMTAsMSwxMCwxLDEwLDEsMTE0LDMyLDEsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDcyLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEsMCwxMTYsMSwxMzEsCisgICAgMCwxMjUsMSwxMTYsMiwxMDYsMywxMDYsNCwxMTYsNSwxMDYsNiwxMjQsMSwxNDIsCisgICAgMCwxMDMsMSwxMzEsMSwxLDAsMTE2LDcsMTA2LDgsMTAwLDEsMTA3LDIsMTE0LAorICAgIDU2LDExNiwyLDEwNiw5LDEwNiwxMCwxMTYsMTEsMTMxLDEsMSwwLDExNiwyLDEwNiwKKyAgICA5LDEwNiwxMCwxMTYsMTIsMTMxLDEsMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsCisgICAgNDEsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwKKyAgICAxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSw0NiwxMTQsMjcsMSwwLDAsNzgsCisgICAgNDEsMTMsMTE0LDMyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDgsMCwwLAorICAgIDAsMTE0LDI1MywwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCw1LDEsMCwwLAorICAgIDExNCwxOCwxLDAsMCwxMTQsMywwLDAsMCwxMTQsMTA5LDAsMCwwLDIxOCwKKyAgICA5LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjEsMCwwLDAsMTE0LAorICAgIDE2NiwwLDAsMCwxMTQsMjQ4LDAsMCwwLDQxLDIsMTE0LDMxLDEsMCwwLAogICAgIDkwLDE3LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLAogICAgIDEwMSwxMTQsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE0NSw1LDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCwyLDEwLDEsOSwxLDI4LDEsMTUsMSwxNiwKLSAgICAxLDE2LDQsOSwxLDExNCwzNiwxLDAsMCw0MSwxLDExNCwwLDAsMCwKLSAgICAwLDQxLDIsMTE0LDEsMCwwLDAsMTE0LDIsMCwwLDAsNDEsNTksMTE0LAotICAgIDExNiwwLDAsMCwxMTQsMTIsMCwwLDAsOTAsMzcsOTUsNjcsNjUsODMsNjksCi0gICAgOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsCi0gICAgODQsNzAsNzksODIsNzcsODMsOTUsNjYsODksODQsNjksODMsOTUsNzUsNjksODksCi0gICAgMTE0LDExLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQ4LDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCwyMTgsNCwxMTYsMTIxLDExMiwxMDEsMjE4LDgsOTUsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0NiwwLDAsMCwxMTQsMTcsMCwwLAotICAgIDAsMTE0LDEzNywwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwLDAsMCwwLAotICAgIDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LAotICAgIDY2LDY5LDgyLDExNCw3NSwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDg2LDAsCi0gICAgMCwwLDExNCw3NiwwLDAsMCw5MCwyMyw2OCw2OSw2Niw4NSw3MSw5NSw2NiwKLSAgICA4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywKLSAgICA5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSwKLSAgICA2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsODEsMCwKLSAgICAwLDAsMTE0LDg3LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsOTcsMCwwLAotICAgIDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEyNSwwLDAsMCwKLSAgICAxMTQsMTMyLDAsMCwwLDExNCwxNDMsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsCi0gICAgMTUyLDAsMCwwLDExNCwxNTcsMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksCi0gICAgMTE2LDExNCwxNjQsMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsMCwwLAotICAgIDExNCwxODUsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsMjExLDAsMCwwLDExNCwKLSAgICAyMTksMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMjUsCi0gICAgMCwwLDAsMTE0LDIzMSwwLDAsMCwxMTQsMjQ4LDAsMCwwLDExNCwyNTAsMCwKLSAgICAwLDAsMTE0LDcsMSwwLDAsMTE0LDI1LDEsMCwwLDExNCwxNjMsMCwwLAotICAgIDAsMTE0LDM0LDEsMCwwLDExNCwzNiwxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCi0gICAgOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxMDYsMCwKLSAgICAwLDAsNiwxNiw2LDEsNiwxLDMsMSw3LDMsMTIsMTcsMTIsNSwKLSAgICAxMiw1LDEyLDYsMTIsMTIsMTIsMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsCi0gICAgMTUsMTE0LDIyLDEsMTgsMiw2LDEsNiwyLDksMiw5LDIsMTAsMiwKLSAgICAyMSw0NCwxMiwzMywxMiwxOSwxMiwxMiwxMiwxMiwxOCw4LDEyLDI4LDEyLDE3LAotICAgIDIxLDU1LDIxLDEyLDE4LDEwLDEyLDE0LDksMywxMiwxLDE1LDY1LDE5LDY0LAotICAgIDE5LDI4LDIyLDExMCwxOSw0MSwyNSw0MywyNSwxNiw2LDMsMjUsNTMsMTksNTcsCi0gICAgMTksNDEsMTksMTM0LDE5LDE0NiwxNSwyMywxMiwxMSwxMiw2OCwKKyAgICAwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTU3LDUsMCwwLAorICAgIDExNSwxMiwwLDAsMCwwLDIsOCwxLDYsMSwyMCwxLDEwLDEsMTIsCisgICAgMSwxMTQsMzQsMSwwLDAsNDEsMSwxMTQsMCwwLDAsMCw0MSwyLDExNCwKKyAgICAxLDAsMCwwLDExNCwyLDAsMCwwLDQxLDEsMTE0LDQ5LDAsMCwwLAorICAgIDQxLDEsNzgsNDEsMyw3OCw3OCw3OCw0MSwzLDc4LDc4LDc4LDQxLDIsMTE0LAorICAgIDYyLDAsMCwwLDExNCw2MiwwLDAsMCw0MSwxLDc4LDQxLDEsNzgsNDEsCisgICAgNTgsMTE0LDExMSwwLDAsMCwxMTQsMTIsMCwwLDAsOTAsMzcsOTUsNjcsNjUsCisgICAgODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsCisgICAgNzYsNjUsODQsNzAsNzksODIsNzcsODMsOTUsNjYsODksODQsNjksODMsOTUsNzUsCisgICAgNjksODksMTE0LDExLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMTksMCwwLAorICAgIDAsMTE0LDIxLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsNDAsMCwwLDAsCisgICAgMTE0LDQxLDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDQ4LDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsNCwxMTYsMTIxLDExMiwxMDEsMjE4LAorICAgIDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0MiwwLDAsMCwxMTQsMTcsCisgICAgMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwLDAsCisgICAgMCwwLDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LAorICAgIDg1LDc3LDY2LDY5LDgyLDExNCw3NywwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LAorICAgIDg4LDAsMCwwLDExNCw3OCwwLDAsMCw5MCwyMyw2OCw2OSw2Niw4NSw3MSwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4Myw5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSwKKyAgICA4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsCisgICAgODMsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwwLDAsMCwxMTQsOTksCisgICAgMCwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCwxMjcsMCwKKyAgICAwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxNDgsMCwwLAorICAgIDAsMTE0LDE1MywwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDE2MCwKKyAgICAwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDE4MSwwLAorICAgIDAsMCwxMTQsMTkxLDAsMCwwLDExNCwyMDcsMCwwLDAsMTE0LDIxNSwwLDAsCisgICAgMCwxMTQsMjIwLDAsMCwwLDExNCwyMjYsMCwwLDAsMTE0LDIyMSwwLDAsMCwKKyAgICAxMTQsMjI3LDAsMCwwLDExNCwyNDYsMCwwLDAsMTE0LDI0OCwwLDAsMCwxMTQsCisgICAgNSwxLDAsMCwxMTQsMjMsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzIsCisgICAgMSwwLDAsMTE0LDM0LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDYwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDEwOCwwLDAsMCw0LAorICAgIDE2LDQsMSw0LDEsMiwxLDYsMyw4LDE3LDgsNSw4LDUsOCwKKyAgICA2LDgsMTIsOCwxMCw4LDksOCw1LDgsNywxMCwyMiwxMCwxMjIsMTYsCisgICAgMSwxMiwyLDQsMSw0LDIsNiwyLDYsMiw4LDIsMTYsNDUsOCwKKyAgICAzNCw4LDE5LDgsMTIsOCwxMiw4LDI4LDgsMTcsMTAsNTUsMTAsMTIsMTAsCisgICAgMTAsOCwxNCw2LDMsNCwxLDE0LDY3LDE0LDY0LDE0LDI5LDE2LDExMCwxNCwKKyAgICA0MSwxOCw0NSwxOCwxNiw0LDMsMTgsNTMsMTQsNjAsMTQsNDIsMTQsMTI3LDAsCisgICAgNSwxNCwxMjcsMCwyMiwxMCwyMyw4LDExLDgsNjgsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5IGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CmluZGV4IGQ5YTA4NTUuLjAyM2M5ZTYgMTAwNzU1Ci0tLSBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQorKysgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKQEAgLTMsMjQgKzMsMzQgQEAKIChmb3IgY29tcGlsZXJzIHN1cHBvcnRpbmcgY29tcHV0ZWQgZ290b3Mgb3IgImxhYmVscy1hcy12YWx1ZXMiLCBzdWNoIGFzIGdjYykuCiAiIiIKIAotIyBUaGlzIGNvZGUgc2hvdWxkIHN0YXkgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLjMsIGF0IGxlYXN0IHdoaWxlCi0jIHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBoYXZlIFB5dGhvbiAyLjMgYXMgdGhlaXIgc3lzdGVtIFB5dGhvbi4KLQotaW1wb3J0IGltcAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAotZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgotICAgICIiIkZpbmRzIGFuZCByZXR1cm5zIGEgbW9kdWxlIGluIHRoZSBsb2NhbCBkaXN0L2NoZWNrb3V0LgotICAgICIiIgotICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwgIkxpYiIpCi0gICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCit0cnk6CisgICAgZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IGltcAorCisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQorICAgICAgICByZXR1cm4gaW1wLmxvYWRfbW9kdWxlKG1vZG5hbWUsICppbXAuZmluZF9tb2R1bGUobW9kbmFtZSwgW21vZHBhdGhdKSkKK2Vsc2U6CisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiLCBtb2RuYW1lICsgIi5weSIpCisgICAgICAgIHJldHVybiBTb3VyY2VGaWxlTG9hZGVyKG1vZG5hbWUsIG1vZHBhdGgpLmxvYWRfbW9kdWxlKCkKKwogCiBkZWYgd3JpdGVfY29udGVudHMoZik6CiAgICAgIiIiV3JpdGUgQyBjb2RlIGNvbnRlbnRzIHRvIHRoZSB0YXJnZXQgZmlsZSBvYmplY3QuCiAgICAgIiIiCi0gICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoIm9wY29kZSIpCisgICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoJ29wY29kZScpCiAgICAgdGFyZ2V0cyA9IFsnX3Vua25vd25fb3Bjb2RlJ10gKiAyNTYKICAgICBmb3Igb3BuYW1lLCBvcCBpbiBvcGNvZGUub3BtYXAuaXRlbXMoKToKICAgICAgICAgdGFyZ2V0c1tvcF0gPSAiVEFSR0VUXyVzIiAlIG9wbmFtZQpAQCAtMjksMTUgKzM5LDE3IEBACiAgICAgZi53cml0ZSgiXG59O1xuIikKIAogCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBzeXMKLSAgICBhc3NlcnQgbGVuKHN5cy5hcmd2KSA8IDMsICJUb28gbWFueSBhcmd1bWVudHMiCitkZWYgbWFpbigpOgorICAgIGlmIGxlbihzeXMuYXJndikgPj0gMzoKKyAgICAgICAgc3lzLmV4aXQoIlRvbyBtYW55IGFyZ3VtZW50cyIpCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAyOgogICAgICAgICB0YXJnZXQgPSBzeXMuYXJndlsxXQogICAgIGVsc2U6CiAgICAgICAgIHRhcmdldCA9ICJQeXRob24vb3Bjb2RlX3RhcmdldHMuaCIKLSAgICBmID0gb3Blbih0YXJnZXQsICJ3IikKLSAgICB0cnk6CisgICAgd2l0aCBvcGVuKHRhcmdldCwgInciKSBhcyBmOgogICAgICAgICB3cml0ZV9jb250ZW50cyhmKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQorICAgIHByaW50KCJKdW1wIHRhYmxlIHdyaXR0ZW4gaW50byAlcyIgJSB0YXJnZXQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IDViOGRlOTkuLjg3YTRiMjQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMTMwLDcgKzEzMCw3IEBACiAgICAgbSA9IHAtPmVuZCAtIHAtPnB0cjsKICAgICBpZiAocC0+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+PSA4KSB7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIG1pID0gX2xlNjR0b2goKmluKTsKKyAgICAgICAgdWludDY0X3QgbWkgPSBfbGU2NHRvaCgqaW4pOwogICAgICAgICBpbiArPSAxOwogICAgICAgICBzcmNfc3ogLT0gODsKICAgICAgICAgdjMgXj0gbWk7CkBAIC0zOTMsMTMgKzM5MCwxMyBAQAogICAgIH0KIAogICAgIHQgPSAwOwotICAgIHB0ID0gKFBZX1VJTlQ4X1QgKikmdDsKLSAgICBtID0gKFBZX1VJTlQ4X1QgKilpbjsKKyAgICBwdCA9ICh1aW50OF90ICopJnQ7CisgICAgbSA9ICh1aW50OF90ICopaW47CiAgICAgc3dpdGNoIChzcmNfc3opIHsKICAgICAgICAgY2FzZSA3OiBwdFs2XSA9IG1bNl07CiAgICAgICAgIGNhc2UgNjogcHRbNV0gPSBtWzVdOwogICAgICAgICBjYXNlIDU6IHB0WzRdID0gbVs0XTsKLSAgICAgICAgY2FzZSA0OiBQeV9NRU1DUFkocHQsIG0sIHNpemVvZihQWV9VSU5UMzJfVCkpOyBicmVhazsKKyAgICAgICAgY2FzZSA0OiBtZW1jcHkocHQsIG0sIHNpemVvZih1aW50MzJfdCkpOyBicmVhazsKICAgICAgICAgY2FzZSAzOiBwdFsyXSA9IG1bMl07CiAgICAgICAgIGNhc2UgMjogcHRbMV0gPSBtWzFdOwogICAgICAgICBjYXNlIDE6IHB0WzBdID0gbVswXTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWxpZmVjeWNsZS5jIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKaW5kZXggY2U1Mjk5MC4uNWI1Y2MyYiAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKKysrIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKQEAgLTMxLDYgKzMxLDkgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjdW5kZWYgQllURQogI2luY2x1ZGUgIndpbmRvd3MuaCIKKworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyNkZWZpbmUgUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKG9wKSAoUHlPYmplY3RfVHlwZUNoZWNrKChvcCksICZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSkpCiAjZW5kaWYKIAogX1B5X0lERU5USUZJRVIoZmx1c2gpOwpAQCAtOTAsNiArOTMsMTAgQEAKIGludCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnID0gMDsgLyogVW5idWZmZXJlZCBiaW5hcnkgc3Rke2luLG91dCxlcnJ9ICovCiBpbnQgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMDsgLyogZm9yIC1SIGFuZCBQWVRIT05IQVNIU0VFRCAqLwogaW50IFB5X0lzb2xhdGVkRmxhZyA9IDA7IC8qIGZvciAtSSwgaXNvbGF0ZSBmcm9tIHVzZXIncyBlbnYgKi8KKyNpZmRlZiBNU19XSU5ET1dTCitpbnQgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gMDsgLyogVXNlcyBtYmNzIGluc3RlYWQgb2YgdXRmLTggKi8KK2ludCBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gMDsgLyogVXNlcyBGaWxlSU8gaW5zdGVhZCBvZiBXaW5kb3dzQ29uc29sZUlPICovCisjZW5kaWYKIAogUHlUaHJlYWRTdGF0ZSAqX1B5X0ZpbmFsaXppbmcgPSBOVUxMOwogCkBAIC0xNTEsMTEgKzE1OCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0zOwogICAgICAgICB9CiAgICAgfQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgLyogT3ZlcnJpZGluZyB0aGUgc3RyZWFtIGVuY29kaW5nIGltcGxpZXMgbGVnYWN5IHN0cmVhbXMgKi8KKyAgICAgICAgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDE7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAotICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgorLyogR2xvYmFsIGluaXRpYWxpemF0aW9ucy4gIENhbiBiZSB1bmRvbmUgYnkgUHlfRmluYWxpemVFeCgpLiAgRG9uJ3QKKyAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplRXgoKSBjYWxsLiAgV2hlbgogICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcwogICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQogICAgYmVlbiBjcmVhdGVkLgpAQCAtMjIzLDYgKzIzNiw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXNldCk7CisjZWxpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgIHJldHVybiBnZXRfY29kZWNfbmFtZSgiVVRGLTgiKTsKICNlbHNlCiAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTI1Miw2ICsyNjcsMTEgQEAKICAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKICAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOwogCisgICAgaW50ZXJwLT5pbXBvcnRfZnVuYyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGludGVycC0+YnVpbHRpbnMsICJfX2ltcG9ydF9fIik7CisgICAgaWYgKGludGVycC0+aW1wb3J0X2Z1bmMgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogX19pbXBvcnRfXyBub3QgZm91bmQiKTsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRfZnVuYyk7CisKICAgICAvKiBJbXBvcnQgdGhlIF9pbXAgbW9kdWxlICovCiAgICAgaW1wbW9kID0gUHlJbml0X2ltcCgpOwogICAgIGlmIChpbXBtb2QgPT0gTlVMTCkgewpAQCAtMzE0LDYgKzMzNCwxMiBAQAogICAgICAgIGNoZWNrIGl0cyB2YWx1ZSBmdXJ0aGVyLiAqLwogICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKICAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gYWRkX2ZsYWcoUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnLCBwKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcgPSBhZGRfZmxhZyhQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcsIHApOworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OTEVHQUNZV0lORE9XU1NURElPIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgPSBhZGRfZmxhZyhQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnLCBwKTsKKyNlbmRpZgogCiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIApAQCAtMzI3LDExICszNTMsMTEgQEAKICAgICAodm9pZCkgUHlUaHJlYWRTdGF0ZV9Td2FwKHRzdGF0ZSk7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFdlIGNhbid0IGNhbGwgX1B5RXZhbF9GaW5pVGhyZWFkcygpIGluIFB5X0ZpbmFsaXplIGJlY2F1c2UKKyAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZUV4IGJlY2F1c2UKICAgICAgICBkZXN0cm95aW5nIHRoZSBHSUwgbWlnaHQgZmFpbCB3aGVuIGl0IGlzIGJlaW5nIHJlZmVyZW5jZWQgZnJvbQogICAgICAgIGFub3RoZXIgcnVubmluZyB0aHJlYWQgKHNlZSBpc3N1ZSAjOTkwMSkuCiAgICAgICAgSW5zdGVhZCB3ZSBkZXN0cm95IHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgR0lMIGhlcmUsIHdoaWNoIGVuc3VyZXMKLSAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZSBtdWx0aXBsZSB0aW1lcy4gKi8KKyAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZUV4IG11bHRpcGxlIHRpbWVzLiAqLwogICAgIF9QeUV2YWxfRmluaVRocmVhZHMoKTsKIAogICAgIC8qIEF1dG8tdGhyZWFkLXN0YXRlIEFQSSAqLwpAQCAtNDc3LDI4ICs1MDMsMzUgQEAKICAgICByZXR1cm4gciA+IDA7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiBmbHVzaF9zdGRfZmlsZXModm9pZCkKIHsKICAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBpbnQgc3RhdHVzID0gMDsKIAogICAgIGlmIChmb3V0ICE9IE5VTEwgJiYgZm91dCAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmb3V0KSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZvdXQpOworICAgICAgICAgICAgc3RhdHVzID0gLTE7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCiAgICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgc3RhdHVzID0gLTE7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyogVW5kbyB0aGUgZWZmZWN0IG9mIFB5X0luaXRpYWxpemUoKS4KQEAgLTUxNSwxNCArNTQ4LDE1IEBACiAKICovCiAKLXZvaWQKLVB5X0ZpbmFsaXplKHZvaWQpCitpbnQKK1B5X0ZpbmFsaXplRXgodm9pZCkKIHsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzdGF0dXM7CiAKICAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKIApAQCAtNTQ3LDcgKzU4MSw5IEBACiAgICAgaW5pdGlhbGl6ZWQgPSAwOwogCiAgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOworICAgIGlmIChmbHVzaF9zdGRfZmlsZXMoKSA8IDApIHsKKyAgICAgICAgc3RhdHVzID0gLTE7CisgICAgfQogCiAgICAgLyogRGlzYWJsZSBzaWduYWwgaGFuZGxpbmcgKi8KICAgICBQeU9TX0ZpbmlJbnRlcnJ1cHRzKCk7CkBAIC01NjQsMTkgKzYwMCwyMSBAQAogICAgICAqIFhYWCBidXQgSSdtIHVuY2xlYXIgb24gZXhhY3RseSBob3cgdGhhdCBvbmUgaGFwcGVucy4gIEluIGFueSBjYXNlLAogICAgICAqIFhYWCBJIGhhdmVuJ3Qgc2VlbiBhIHJlYWwtbGlmZSByZXBvcnQgb2YgZWl0aGVyIG9mIHRoZXNlLgogICAgICAqLwotICAgIFB5R0NfQ29sbGVjdCgpOworICAgIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKTsKICNpZmRlZiBDT1VOVF9BTExPQ1MKICAgICAvKiBXaXRoIENPVU5UX0FMTE9DUywgaXQgaGVscHMgdG8gcnVuIEdDIG11bHRpcGxlIHRpbWVzOgogICAgICAgIGVhY2ggY29sbGVjdGlvbiBtaWdodCByZWxlYXNlIHNvbWUgdHlwZXMgZnJvbSB0aGUgdHlwZQogICAgICAgIGxpc3QsIHNvIHRoZXkgYmVjb21lIGdhcmJhZ2UuICovCi0gICAgd2hpbGUgKFB5R0NfQ29sbGVjdCgpID4gMCkKKyAgICB3aGlsZSAoX1B5R0NfQ29sbGVjdElmRW5hYmxlZCgpID4gMCkKICAgICAgICAgLyogbm90aGluZyAqLzsKICNlbmRpZgogICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KICAgICBQeUltcG9ydF9DbGVhbnVwKCk7CiAKICAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIChhZ2FpbiwgaW4gY2FzZSBtb3JlIHdhcyBwcmludGVkKSAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOworICAgIGlmIChmbHVzaF9zdGRfZmlsZXMoKSA8IDApIHsKKyAgICAgICAgc3RhdHVzID0gLTE7CisgICAgfQogCiAgICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQogICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KQEAgLTU5NCw3ICs2MzIsNyBAQAogICAgICAqIFhYWCBQeXRob24gY29kZSBnZXR0aW5nIGNhbGxlZC4KICAgICAgKi8KICNpZiAwCi0gICAgUHlHQ19Db2xsZWN0KCk7CisgICAgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCgpOwogI2VuZGlmCiAKICAgICAvKiBEaXNhYmxlIHRyYWNlbWFsbG9jIGFmdGVyIGFsbCBQeXRob24gb2JqZWN0cyBoYXZlIGJlZW4gZGVzdHJveWVkLApAQCAtNjEyLDcgKzY1MCw3IEBACiAKICAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KICNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICBkdW1wX2NvdW50cyhzdGRvdXQpOworICAgIGR1bXBfY291bnRzKHN0ZGVycik7CiAjZW5kaWYKICAgICAvKiBkdW1wIGhhc2ggc3RhdHMgKi8KICAgICBfUHlIYXNoX0ZpbmkoKTsKQEAgLTY1NSw2ICs2OTMsOCBAQAogICAgIFB5U2xpY2VfRmluaSgpOwogICAgIF9QeUdDX0ZpbmkoKTsKICAgICBfUHlSYW5kb21fRmluaSgpOworICAgIF9QeUFyZ19GaW5pKCk7CisgICAgUHlBc3luY0dlbl9GaW5pKCk7CiAKICAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KICAgICBfUHlVbmljb2RlX0ZpbmkoKTsKQEAgLTY4MCw2ICs3MjAsNyBAQAogCiAgICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCiAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOworCiAgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwpAQCAtNjkwLDEyICs3MzEsMjIgQEAKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05EVU1QUkVGUyIpKQogICAgICAgICBfUHlfUHJpbnRSZWZlcmVuY2VBZGRyZXNzZXMoc3RkZXJyKTsKICNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICBpZiAoX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCgpKSB7CisgICAgICAgIGNoYXIgKm9wdCA9IFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKTsKKyAgICAgICAgaWYgKG9wdCAhPSBOVUxMICYmICpvcHQgIT0gJ1wwJykKKyAgICAgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgfQogI2VuZGlmCiAKICAgICBjYWxsX2xsX2V4aXRmdW5jcygpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQKK1B5X0ZpbmFsaXplKHZvaWQpCit7CisgICAgUHlfRmluYWxpemVFeCgpOwogfQogCiAvKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCwgYW5kIHJldHVybiB0aGUKQEAgLTcyMSw2ICs3NzIsMTIgQEAKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIElzc3VlICMxMDkxNSwgIzE1NzUxOiBUaGUgR0lMIEFQSSBkb2Vzbid0IHdvcmsgd2l0aCBtdWx0aXBsZQorICAgICAgIGludGVycHJldGVyczogZGlzYWJsZSBQeUdJTFN0YXRlX0NoZWNrKCkuICovCisgICAgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCA9IDA7CisjZW5kaWYKKwogICAgIGludGVycCA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcoKTsKICAgICBpZiAoaW50ZXJwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzc3LDcgKzgzNCw3IEBACiAKICAgICAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOworICAgICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CiAgICAgICAgIGluaXRtYWluKGludGVycCk7CiAgICAgICAgIGlmICghUHlfTm9TaXRlRmxhZykKICAgICAgICAgICAgIGluaXRzaXRlKCk7CkBAIC04MDMsNyArODYwLDcgQEAKICAgIGZyYW1lcywgYW5kIHRoYXQgaXQgaXMgaXRzIGludGVycHJldGVyJ3Mgb25seSByZW1haW5pbmcgdGhyZWFkLgogICAgSXQgaXMgYSBmYXRhbCBlcnJvciB0byB2aW9sYXRlIHRoZXNlIGNvbnN0cmFpbnRzLgogCi0gICAoUHlfRmluYWxpemUoKSBkb2Vzbid0IGhhdmUgdGhlc2UgY29uc3RyYWludHMgLS0gaXQgemFwcworICAgKFB5X0ZpbmFsaXplRXgoKSBkb2Vzbid0IGhhdmUgdGhlc2UgY29uc3RyYWludHMgLS0gaXQgemFwcwogICAgZXZlcnl0aGluZywgcmVnYXJkbGVzcy4pCiAKICAgIExvY2tpbmc6IGFzIGFib3ZlLgpAQCAtODgxLDExICs5MzgsMTcgQEAKIHN0YXRpYyB2b2lkCiBpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQsICpsb2FkZXI7CisgICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyLCAqYW5uX2RpY3Q7CiAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBjcmVhdGUgX19tYWluX18gbW9kdWxlIik7CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKChhbm5fZGljdCA9PSBOVUxMKSB8fAorICAgICAgICAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYW5ub3RhdGlvbnNfXyIsIGFubl9kaWN0KSA8IDApKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYW5ub3RhdGlvbnNfXyIpOworICAgIH0KKyAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOwogICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CiAgICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7CkBAIC05MjEsNiArOTg0LDE4IEBACiB7CiAgICAgUHlPYmplY3QgKmNvZGVjOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcpCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJyZXBsYWNlIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInN1cnJvZ2F0ZXBhc3MiOworICAgIH0KKyNlbHNlCiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKICAgICB7CiAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7CkBAIC05MzEsNiArMTAwNiw3IEBACiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyNlbmRpZgogCiAgICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CkBAIC05NjksOSArMTA0NSwxMiBAQAogaXNfdmFsaWRfZmQoaW50IGZkKQogewogICAgIGludCBmZDI7Ci0gICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkKKyAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gMDsKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgLyogUHJlZmVyIGR1cCgpIG92ZXIgZnN0YXQoKS4gZnN0YXQoKSBjYW4gcmVxdWlyZSBpbnB1dC9vdXRwdXQgd2hlcmVhcworICAgICAgIGR1cCgpIGRvZXNuJ3QsIHRoZXJlIGlzIGEgbG93IHJpc2sgb2YgRU1GSUxFL0VORklMRSBhdCBQeXRob24KKyAgICAgICBzdGFydHVwLiAqLwogICAgIGZkMiA9IGR1cChmZCk7CiAgICAgaWYgKGZkMiA+PSAwKQogICAgICAgICBjbG9zZShmZDIpOwpAQCAtOTgyLDggKzEwNjEsOCBAQAogLyogcmV0dXJucyBQeV9Ob25lIGlmIHRoZSBmZCBpcyBub3QgdmFsaWQgKi8KIHN0YXRpYyBQeU9iamVjdCoKIGNyZWF0ZV9zdGRpbyhQeU9iamVjdCogaW8sCi0gICAgaW50IGZkLCBpbnQgd3JpdGVfbW9kZSwgY2hhciogbmFtZSwKLSAgICBjaGFyKiBlbmNvZGluZywgY2hhciogZXJyb3JzKQorICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKICAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7CiAgICAgY29uc3QgY2hhciogbW9kZTsKQEAgLTEwMTMsNyArMTA5Miw4IEBACiAgICAgICAgIG1vZGUgPSAicmIiOwogICAgIGJ1ZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJpc2lPT09pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIC8qIGVuY29kaW5nLCBlcnJvcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIDApOyAvKiBuZXdsaW5lLCBjbG9zZWZkICovCiAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xMDI4LDEwICsxMTA4LDE2IEBACiAgICAgICAgIFB5X0lOQ1JFRihyYXcpOwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBXaW5kb3dzIGNvbnNvbGUgSU8gaXMgYWx3YXlzIFVURi04IGVuY29kZWQgKi8KKyAgICBpZiAoUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKHJhdykpCisgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyNlbmRpZgorCiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChyYXcsICZQeUlkX25hbWUsIHRleHQpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlzYXR0eSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTI0MywyNSArMTMyOSwxMSBAQAogc3RhdGljIHZvaWQKIF9QeV9GYXRhbEVycm9yX0R1bXBUcmFjZWJhY2tzKGludCBmZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLwotICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7Ci0jZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0jZW5kaWYKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5Ci0gICAgICAgICAqIGZyYW1lcyAqLwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKICAgICBmZmx1c2goc3RkZXJyKTsKIAogICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCi0gICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIE5VTEwsIE5VTEwpOwogfQogCiAvKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKQEAgLTEzMTYsNyArMTM4OCw3IEBACiAgICAgUHlfWERFQ1JFRih0Yik7CiAKICAgICAvKiBzeXMuc3RkZXJyIG1heSBiZSBidWZmZXJlZDogY2FsbCBzeXMuc3RkZXJyLmZsdXNoKCkgKi8KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTEzODgsNyArMTQ2MCw3IEBACiAvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSNpbmNsdWRlICJweXRocmVhZC5oIgorIyAgaW5jbHVkZSAicHl0aHJlYWQuaCIKICNlbmRpZgogCiBzdGF0aWMgdm9pZCAoKnB5ZXhpdGZ1bmMpKHZvaWQpID0gTlVMTDsKQEAgLTE0MjYsNyArMTQ5OCw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKICAgICB9CkBAIC0xNDYyLDcgKzE1MzQsOSBAQAogdm9pZAogUHlfRXhpdChpbnQgc3RzKQogewotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogICAgIGV4aXQoc3RzKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0YXRlLmMgYi9QeXRob24vcHlzdGF0ZS5jCmluZGV4IDI0ZTIwYzMuLjY1YzI0NGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0YXRlLmMKKysrIGIvUHl0aG9uL3B5c3RhdGUuYwpAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgR0VUX1RTVEFURSgpIFwKICAgICAoKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KSkKICNkZWZpbmUgU0VUX1RTVEFURSh2YWx1ZSkgXAotICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKFB5X3VpbnRwdHJfdCkodmFsdWUpKQorICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKHVpbnRwdHJfdCkodmFsdWUpKQogI2RlZmluZSBHRVRfSU5URVJQX1NUQVRFKCkgXAogICAgIChHRVRfVFNUQVRFKCktPmludGVycCkKIApAQCAtMjUsNyArMjUsNyBAQAogI2lmZGVmIEhBVkVfRExGQ05fSAogI2luY2x1ZGUgPGRsZmNuLmg+CiAjZW5kaWYKLSNpZm5kZWYgUlRMRF9MQVpZCisjaWYgIUhBVkVfREVDTF9SVExEX0xBWlkKICNkZWZpbmUgUlRMRF9MQVpZIDEKICNlbmRpZgogI2VuZGlmCkBAIC0zNCw2ICszNCw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitpbnQgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCA9IDE7CisKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiBzdGF0aWMgUHlUaHJlYWRfdHlwZV9sb2NrIGhlYWRfbXV0ZXggPSBOVUxMOyAvKiBQcm90ZWN0cyBpbnRlcnAtPnRzdGF0ZV9oZWFkICovCkBAIC00NSw3ICs0Nyw3IEBACiAgICBHSUxTdGF0ZSBpbXBsZW1lbnRhdGlvbgogKi8KIHN0YXRpYyBQeUludGVycHJldGVyU3RhdGUgKmF1dG9JbnRlcnByZXRlclN0YXRlID0gTlVMTDsKLXN0YXRpYyBpbnQgYXV0b1RMU2tleSA9IDA7CitzdGF0aWMgaW50IGF1dG9UTFNrZXkgPSAtMTsKICNlbHNlCiAjZGVmaW5lIEhFQURfSU5JVCgpIC8qIE5vdGhpbmcgKi8KICNkZWZpbmUgSEVBRF9MT0NLKCkgLyogTm90aGluZyAqLwpAQCAtODgsMTYgKzkwLDE1IEBACiAgICAgICAgIGludGVycC0+Y29kZWNzX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBOVUxMOworICAgICAgICBpbnRlcnAtPmltcG9ydF9mdW5jID0gTlVMTDsKKyAgICAgICAgaW50ZXJwLT5ldmFsX2ZyYW1lID0gX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0OwogI2lmZGVmIEhBVkVfRExPUEVOCi0jaWZkZWYgUlRMRF9OT1cKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT1cKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTk9XOwogI2Vsc2UKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTEFaWTsKICNlbmRpZgogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgaW50ZXJwLT50c2NkdW1wID0gMDsKLSNlbmRpZgogCiAgICAgICAgIEhFQURfTE9DSygpOwogICAgICAgICBpbnRlcnAtPm5leHQgPSBpbnRlcnBfaGVhZDsKQEAgLTEyNiw2ICsxMjcsNyBAQAogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnMpOwogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnNfY29weSk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRsaWIpOworICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0X2Z1bmMpOwogfQogCiAKQEAgLTIyMiw2ICsyMjQsMTAgQEAKIAogICAgICAgICB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyID0gTlVMTDsKICAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisgICAgICAgIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCA9IDA7CisKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyID0gTlVMTDsKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyID0gTlVMTDsKIAogICAgICAgICBpZiAoaW5pdCkKICAgICAgICAgICAgIF9QeVRocmVhZFN0YXRlX0luaXQodHN0YXRlKTsKQEAgLTQwMiw2ICs0MDgsOCBAQAogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y190cmFjZW9iaik7CiAKICAgICBQeV9DTEVBUih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyKTsKKyAgICBQeV9DTEVBUih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIpOworICAgIFB5X0NMRUFSKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcik7CiB9CiAKIApAQCAtNDUxLDEwICs0NTksMTAgQEAKICAgICBpZiAodHN0YXRlID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAiUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50OiBubyBjdXJyZW50IHRzdGF0ZSIpOwotICAgIFNFVF9UU1RBVEUoTlVMTCk7CisgICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKICAgICBpZiAoYXV0b0ludGVycHJldGVyU3RhdGUgJiYgUHlUaHJlYWRfZ2V0X2tleV92YWx1ZShhdXRvVExTa2V5KSA9PSB0c3RhdGUpCiAgICAgICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXlfdmFsdWUoYXV0b1RMU2tleSk7Ci0gICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKKyAgICBTRVRfVFNUQVRFKE5VTEwpOwogICAgIFB5RXZhbF9SZWxlYXNlTG9jaygpOwogfQogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCkBAIC02OTgsNyArNzA2LDcgQEAKIH0KIAogLyogSW50ZXJuYWwgaW5pdGlhbGl6YXRpb24vZmluYWxpemF0aW9uIGZ1bmN0aW9ucyBjYWxsZWQgYnkKLSAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemUKKyAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemVFeAogKi8KIHZvaWQKIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICppLCBQeVRocmVhZFN0YXRlICp0KQpAQCAtNzE0LDEwICs3MjIsMTcgQEAKICAgICBfUHlHSUxTdGF0ZV9Ob3RlVGhyZWFkU3RhdGUodCk7CiB9CiAKK1B5SW50ZXJwcmV0ZXJTdGF0ZSAqCitfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKHZvaWQpCit7CisgICAgcmV0dXJuIGF1dG9JbnRlcnByZXRlclN0YXRlOworfQorCiB2b2lkCiBfUHlHSUxTdGF0ZV9GaW5pKHZvaWQpCiB7CiAgICAgUHlUaHJlYWRfZGVsZXRlX2tleShhdXRvVExTa2V5KTsKKyAgICBhdXRvVExTa2V5ID0gLTE7CiAgICAgYXV0b0ludGVycHJldGVyU3RhdGUgPSBOVUxMOwogfQogCkBAIC03ODYsOCArODAxLDE5IEBACiBpbnQKIFB5R0lMU3RhdGVfQ2hlY2sodm9pZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBHRVRfVFNUQVRFKCk7Ci0gICAgcmV0dXJuIHRzdGF0ZSAmJiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmICghX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoYXV0b1RMU2tleSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICB0c3RhdGUgPSBHRVRfVFNUQVRFKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOwogfQogCiBQeUdJTFN0YXRlX1NUQVRFCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJ0b2QuYyBiL1B5dGhvbi9weXN0cnRvZC5jCmluZGV4IDIwOWM5MDguLjY0ZDBjNTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0cnRvZC5jCisrKyBiL1B5dGhvbi9weXN0cnRvZC5jCkBAIC0zNzAsNiArMzcwLDcyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogUmVtb3ZlIHVuZGVyc2NvcmVzIHRoYXQgZm9sbG93IHRoZSB1bmRlcnNjb3JlIHBsYWNlbWVudCBydWxlIGZyb20KKyAgIHRoZSBzdHJpbmcgYW5kIHRoZW4gY2FsbCB0aGUgYGlubmVyZnVuY2AgZnVuY3Rpb24gb24gdGhlIHJlc3VsdC4KKyAgIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgb2JqZWN0IG9yIE5VTEwgb24gZXhjZXB0aW9uLgorCisgICBgd2hhdGAgaXMgdXNlZCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UgZW1pdHRlZCB3aGVuIHVuZGVyc2NvcmVzIGFyZSBkZXRlY3RlZAorICAgdGhhdCBkb24ndCBmb2xsb3cgdGhlIHJ1bGUuIGBhcmdgIGlzIGFuIG9wYXF1ZSBwb2ludGVyIHBhc3NlZCB0byB0aGUgaW5uZXIKKyAgIGZ1bmN0aW9uLgorCisgICBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHVuZGVyc2NvcmUtYWdub3N0aWMgY29udmVyc2lvbiBmb3IgZmxvYXRzCisgICBhbmQgY29tcGxleCBudW1iZXJzLgorKi8KK1B5T2JqZWN0ICoKK19QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMoCisgICAgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBvcmlnX2xlbiwgY29uc3QgY2hhciAqd2hhdCwgUHlPYmplY3QgKm9iaiwgdm9pZCAqYXJnLAorICAgIFB5T2JqZWN0ICooKmlubmVyZnVuYykoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCB2b2lkICopKQoreworICAgIGNoYXIgcHJldjsKKyAgICBjb25zdCBjaGFyICpwLCAqbGFzdDsKKyAgICBjaGFyICpkdXAsICplbmQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChzdHJjaHIocywgJ18nKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBpbm5lcmZ1bmMocywgb3JpZ19sZW4sIGFyZyk7CisgICAgfQorCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKG9yaWdfbGVuICsgMSk7CisgICAgZW5kID0gZHVwOworICAgIHByZXYgPSAnXDAnOworICAgIGxhc3QgPSBzICsgb3JpZ19sZW47CisgICAgZm9yIChwID0gczsgKnA7IHArKykgeworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgb25seSBhbGxvd2VkIGFmdGVyIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmICghKHByZXYgPj0gJzAnICYmIHByZXYgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqZW5kKysgPSAqcDsKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBvbmx5IGFsbG93ZWQgYmVmb3JlIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJyAmJiAhKCpwID49ICcwJyAmJiAqcCA8PSAnOScpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gKnA7CisgICAgfQorICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGUgZW5kLiAqLworICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBObyBlbWJlZGRlZCBOVUxzIGFsbG93ZWQuICovCisgICAgaWYgKHAgIT0gbGFzdCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXN1bHQgPSBpbm5lcmZ1bmMoZHVwLCBlbmQgLSBkdXAsIGFyZyk7CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIHJldHVybiByZXN1bHQ7CisKKyAgZXJyb3I6CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorCQkgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byAlczogIgorCQkgIiVSIiwgd2hhdCwgb2JqKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKIAogLyogR2l2ZW4gYSBzdHJpbmcgdGhhdCBtYXkgaGF2ZSBhIGRlY2ltYWwgcG9pbnQgaW4gdGhlIGN1cnJlbnQKQEAgLTg4MSwxMiArOTQ3LDEyIEBACiAjZGVmaW5lIE9GU19FIDIKIAogLyogVGhlIGxlbmd0aHMgb2YgdGhlc2UgYXJlIGtub3duIHRvIHRoZSBjb2RlIGJlbG93LCBzbyBkb24ndCBjaGFuZ2UgdGhlbSAqLwotc3RhdGljIGNoYXIgKmxjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbGNfZmxvYXRfc3RyaW5nc1tdID0gewogICAgICJpbmYiLAogICAgICJuYW4iLAogICAgICJlIiwKIH07Ci1zdGF0aWMgY2hhciAqdWNfZmxvYXRfc3RyaW5nc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB1Y19mbG9hdF9zdHJpbmdzW10gPSB7CiAgICAgIklORiIsCiAgICAgIk5BTiIsCiAgICAgIkUiLApAQCAtOTI1LDcgKzk5MSw4IEBACiBmb3JtYXRfZmxvYXRfc2hvcnQoZG91YmxlIGQsIGNoYXIgZm9ybWF0X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUsIGludCBwcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAgaW50IGFsd2F5c19hZGRfc2lnbiwgaW50IGFkZF9kb3RfMF9pZl9pbnRlZ2VyLAotICAgICAgICAgICAgICAgICAgIGludCB1c2VfYWx0X2Zvcm1hdHRpbmcsIGNoYXIgKipmbG9hdF9zdHJpbmdzLCBpbnQgKnR5cGUpCisgICAgICAgICAgICAgICAgICAgaW50IHVzZV9hbHRfZm9ybWF0dGluZywgY29uc3QgY2hhciAqIGNvbnN0ICpmbG9hdF9zdHJpbmdzLAorICAgICAgICAgICAgICAgICAgIGludCAqdHlwZSkKIHsKICAgICBjaGFyICpidWYgPSBOVUxMOwogICAgIGNoYXIgKnAgPSBOVUxMOwpAQCAtMTE3Niw3ICsxMjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpCiB7Ci0gICAgY2hhciAqKmZsb2F0X3N0cmluZ3MgPSBsY19mbG9hdF9zdHJpbmdzOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqZmxvYXRfc3RyaW5ncyA9IGxjX2Zsb2F0X3N0cmluZ3M7CiAgICAgaW50IG1vZGU7CiAKICAgICAvKiBWYWxpZGF0ZSBmb3JtYXRfY29kZSwgYW5kIG1hcCB1cHBlciBhbmQgbG93ZXIgY2FzZS4gQ29tcHV0ZSB0aGUKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRob25ydW4uYyBiL1B5dGhvbi9weXRob25ydW4uYwppbmRleCA3ZmJmMDZlLi4xZmM4NmMwIDEwMDY0NAotLS0gYS9QeXRob24vcHl0aG9ucnVuLmMKKysrIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCkBAIC00MzEsNyArNDMxLDcgQEAKIHBhcnNlX3N5bnRheF9lcnJvcihQeU9iamVjdCAqZXJyLCBQeU9iamVjdCAqKm1lc3NhZ2UsIFB5T2JqZWN0ICoqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgaW50ICpsaW5lbm8sIGludCAqb2Zmc2V0LCBQeU9iamVjdCAqKnRleHQpCiB7Ci0gICAgbG9uZyBob2xkOworICAgIGludCBob2xkOwogICAgIFB5T2JqZWN0ICp2OwogICAgIF9QeV9JREVOVElGSUVSKG1zZyk7CiAgICAgX1B5X0lERU5USUZJRVIoZmlsZW5hbWUpOwpAQCAtNDY0LDExICs0NjQsMTEgQEAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX2xpbmVubyk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgaG9sZCA9IF9QeUxvbmdfQXNJbnQodik7CiAgICAgUHlfREVDUkVGKHYpOwogICAgIGlmIChob2xkIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgKmxpbmVubyA9IChpbnQpaG9sZDsKKyAgICAqbGluZW5vID0gaG9sZDsKIAogICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfb2Zmc2V0KTsKICAgICBpZiAoIXYpCkBAIC00NzcsMTEgKzQ3NywxMSBAQAogICAgICAgICAqb2Zmc2V0ID0gLTE7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9IGVsc2UgewotICAgICAgICBob2xkID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaG9sZCA9IF9QeUxvbmdfQXNJbnQodik7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgaWYgKGhvbGQgPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgICpvZmZzZXQgPSAoaW50KWhvbGQ7CisgICAgICAgICpvZmZzZXQgPSBob2xkOwogICAgIH0KIAogICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfdGV4dCk7CkBAIC02MzAsOCArNjMwLDEzIEBACiAgICAgfQogICAgIGhvb2sgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfZXhjZXB0aG9vayk7CiAgICAgaWYgKGhvb2spIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX1BhY2soMywgZXhjZXB0aW9uLCB2LCB0Yik7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdChob29rLCBhcmdzKTsKKyAgICAgICAgUHlPYmplY3QqIHN0YWNrWzNdOworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgICAgIHN0YWNrWzBdID0gZXhjZXB0aW9uOworICAgICAgICBzdGFja1sxXSA9IHY7CisgICAgICAgIHN0YWNrWzJdID0gdGI7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChob29rLCBzdGFjaywgMyk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmV4Y2VwdGlvbjIsICp2MiwgKnRiMjsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5c3RlbUV4aXQpKSB7CkBAIC02NjAsNyArNjY1LDYgQEAKICAgICAgICAgICAgIFB5X1hERUNSRUYodGIyKTsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoInN5cy5leGNlcHRob29rIGlzIG1pc3NpbmdcbiIpOwogICAgICAgICBQeUVycl9EaXNwbGF5KGV4Y2VwdGlvbiwgdiwgdGIpOwpAQCAtNzkxLDExICs3OTUsMTEgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKmNhdXNlX21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY2F1c2VfbWVzc2FnZVtdID0KICAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKICAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjb250ZXh0X21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY29udGV4dF9tZXNzYWdlW10gPQogICAgICJcbkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCAiCiAgICAgImFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4iOwogCkBAIC05NDYsNyArOTUwLDcgQEAKIAogICAgIGYgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTk1NCw3ICs5NTgsNyBAQAogICAgIH0KICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZG91dCk7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC0xMTQ0LDggKzExNDgsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlT2JqZWN0KEZJTEUgKmZwLCBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKQEAgLTExNzcsOCArMTE4MSw4IEBACiAKIG1vZF90eQogUHlQYXJzZXJfQVNURnJvbUZpbGUoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lX3N0ciwgY29uc3QgY2hhciogZW5jLAotICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjaGFyICpwczEsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY29uc3QgY2hhciAqcHMxLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKIHsKICAgICBtb2RfdHkgbW9kOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IDdmNjU4MjQuLjMwMTVhNmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTcsNiArNywxMSBAQAogI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+ICAgLyogbWFjaF9hYnNvbHV0ZV90aW1lKCksIG1hY2hfdGltZWJhc2VfaW5mbygpICovCiAjZW5kaWYKIAorI2RlZmluZSBfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhhLCBiKSBcCisgICAgKGFzc2VydChiID4gMCksIFwKKyAgICAgKF9QeVRpbWVfdCkoYSkgPCBfUHlUaW1lX01JTiAvIChfUHlUaW1lX3QpKGIpIFwKKyAgICAgfHwgX1B5VGltZV9NQVggLyAoX1B5VGltZV90KShiKSA8IChfUHlUaW1lX3QpKGEpKQorCiAvKiBUbyBtaWxsaXNlY29uZCAoMTBeLTMpICovCiAjZGVmaW5lIFNFQ19UT19NUyAxMDAwCiAKQEAgLTMzLDEyICszOCwxMiBAQAogdGltZV90CiBfUHlMb25nX0FzVGltZV90KFB5T2JqZWN0ICpvYmopCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHZhbDsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7CiAjZWxzZQogICAgIGxvbmcgdmFsOwotICAgIGFzc2VydChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKICNlbmRpZgogICAgIGlmICh2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtNTIsNTggKzU3LDkxIEBACiBQeU9iamVjdCAqCiBfUHlMb25nX0Zyb21UaW1lX3QodGltZV90IHQpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwogI2VuZGlmCiB9CiAKKy8qIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyCisgICAoX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pICovCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZG91YmxlIHgpCit7CisgICAgZG91YmxlIHJvdW5kZWQgPSByb3VuZCh4KTsKKyAgICBpZiAoZmFicyh4LXJvdW5kZWQpID09IDAuNSkKKyAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCisgICAgICAgIHJvdW5kZWQgPSAyLjAqcm91bmQoeC8yLjApOworICAgIHJldHVybiByb3VuZGVkOworfQorCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kKGRvdWJsZSB4LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgZCA9IHg7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBkID0gX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGQpOworICAgIGVsc2UgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgZCA9IGNlaWwoZCk7CisgICAgZWxzZQorICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgcmV0dXJuIGQ7Cit9CisKK3N0YXRpYyBpbnQKK19QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkb3VibGUgZCwgdGltZV90ICpzZWMsIGxvbmcgKm51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OworCisgICAgZmxvYXRwYXJ0ID0gbW9kZihkLCAmaW50cGFydCk7CisKKyAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7CisgICAgZmxvYXRwYXJ0ID0gX1B5VGltZV9Sb3VuZChmbG9hdHBhcnQsIHJvdW5kKTsKKyAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7CisgICAgICAgIGZsb2F0cGFydCAtPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCArPSAxLjA7CisgICAgfQorICAgIGVsc2UgaWYgKGZsb2F0cGFydCA8IDApIHsKKyAgICAgICAgZmxvYXRwYXJ0ICs9IGRlbm9taW5hdG9yOworICAgICAgICBpbnRwYXJ0IC09IDEuMDsKKyAgICB9CisgICAgYXNzZXJ0KDAuMCA8PSBmbG9hdHBhcnQgJiYgZmxvYXRwYXJ0IDwgZGVub21pbmF0b3IpOworCisgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKKyAgICAqbnVtZXJhdG9yID0gKGxvbmcpZmxvYXRwYXJ0OworCisgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKKyAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludAogX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IExPTkdfTUFYKTsKKyAgICBhc3NlcnQoZGVub21pbmF0b3IgPD0gKGRvdWJsZSlMT05HX01BWCk7CisKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OwotCi0gICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOwotICAgICAgICBpZiAoZmxvYXRwYXJ0IDwgMCkgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMS4wICsgZmxvYXRwYXJ0OwotICAgICAgICAgICAgaW50cGFydCAtPSAxLjA7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgIGlmIChmbG9hdHBhcnQgPj0gZGVub21pbmF0b3IpIHsKLSAgICAgICAgICAgICAgICBmbG9hdHBhcnQgPSAwLjA7Ci0gICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBmbG9vcihmbG9hdHBhcnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKLSAgICAgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKLSAgICAgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKLSAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRvdWJsZSBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOworICAgICAgICByZXR1cm4gX1B5VGltZV9Eb3VibGVUb0Rlbm9taW5hdG9yKGQsIHNlYywgbnVtZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yLCByb3VuZCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAqc2VjID0gX1B5TG9uZ19Bc1RpbWVfdChvYmopOworICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQpAQCAtMTEyLDEzICsxNTAsMTIgQEAKIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisgICAgICAgIGRvdWJsZSBpbnRwYXJ0LCBlcnI7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGQ7CiAKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKICAgICAgICAgKHZvaWQpbW9kZihkLCAmaW50cGFydCk7CiAKICAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKQEAgLTE0MSwxNCArMTc4LDIwIEBACiBfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm5zZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIG5zZWMsIDFlOSwgcm91bmQpOworICAgIGludCByZXM7CisgICAgcmVzID0gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBhc3NlcnQoMCA8PSAqbnNlYyAmJiAqbnNlYyA8IFNFQ19UT19OUyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogaW50CiBfUHlUaW1lX09iamVjdFRvVGltZXZhbChQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqdXNlYywKICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCB1c2VjLCAxZTYsIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKnVzZWMgJiYgKnVzZWMgPCBTRUNfVE9fVVMpOworICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjIsMjEgKzIwNSwyNCBAQAogX1B5VGltZV9Gcm9tU2Vjb25kcyhpbnQgc2Vjb25kcykKIHsKICAgICBfUHlUaW1lX3QgdDsKKyAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzOwogICAgIC8qIGVuc3VyZSB0aGF0IGludGVnZXIgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbiwgaW50IHR5cGUgc2hvdWxkIGhhdmUgMzIKICAgICAgICBiaXRzLCB3aGVyZWFzIF9QeVRpbWVfdCB0eXBlIGhhcyBhdCBsZWFzdCA2NCBiaXRzIChTRUNfVE9fTVMgdGFrZXMgMzAKICAgICAgICBiaXRzKS4gKi8KLSAgICBhc3NlcnQoKHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQotICAgICAgICAgICB8fCAoc2Vjb25kcyA8IDAgJiYgc2Vjb25kcyA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOwotICAgIHQgPSAoX1B5VGltZV90KXNlY29uZHMgKiBTRUNfVE9fTlM7CisgICAgUHlfQlVJTERfQVNTRVJUKElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKKyAgICBhc3NlcnQoKHQgPj0gMCAmJiB0IDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQorICAgICAgICAgICB8fCAodCA8IDAgJiYgdCA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOworICAgIHQgKj0gU0VDX1RPX05TOwogICAgIHJldHVybiB0OwogfQogCiBfUHlUaW1lX3QKLV9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKFBZX0xPTkdfTE9ORyBucykKK19QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKGxvbmcgbG9uZyBucykKIHsKICAgICBfUHlUaW1lX3QgdDsKLSAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotICAgIHQgPSBQeV9TQUZFX0RPV05DQVNUKG5zLCBQWV9MT05HX0xPTkcsIF9QeVRpbWVfdCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgbG9uZyBsb25nLCBfUHlUaW1lX3QpOwogICAgIHJldHVybiB0OwogfQogCkBAIC0xODcsMTIgKzIzMywxNSBAQAogICAgIF9QeVRpbWVfdCB0OwogICAgIGludCByZXMgPSAwOwogCi0gICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYyAqIFNFQ19UT19OUzsKLSAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0cy0+dHZfc2VjKSB7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0cy0+dHZfc2VjKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYzsKKworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBTRUNfVE9fTlMpKSB7CiAgICAgICAgIGlmIChyYWlzZSkKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgcmVzID0gLTE7CiAgICAgfQorICAgIHQgPSB0ICogU0VDX1RPX05TOwogCiAgICAgdCArPSB0cy0+dHZfbnNlYzsKIApAQCAtMjA2LDEyICsyNTUsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHYtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHYtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gKF9QeVRpbWVfdCl0di0+dHZfdXNlYyAqIFVTX1RPX05TOwogCkBAIC0yMjEsNTAgKzI3Myw1MiBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKK19QeVRpbWVfRnJvbUZsb2F0T2JqZWN0KF9QeVRpbWVfdCAqdCwgZG91YmxlIHZhbHVlLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVuaXRfdG9fbnMpCit7CisgICAgZG91YmxlIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICAvKiBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICovCisgICAgZCA9IHZhbHVlOworICAgIGQgKj0gKGRvdWJsZSl1bml0X3RvX25zOworICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKKworICAgICp0ID0gKF9QeVRpbWVfdClkOworICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OworICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7CisgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAogX1B5VGltZV9Gcm9tT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAotICAgICAgICAgICAgICAgICAgIGxvbmcgdG9fbmFub3NlY29uZHMpCisgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQogewogICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKLSAgICAgICAgLyogdm9sYXRpbGUgYXZvaWRzIHVuc2FmZSBvcHRpbWl6YXRpb24gb24gZmxvYXQgZW5hYmxlZCBieSBnY2MgLU8zICovCi0gICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkLCBlcnI7Ci0KLSAgICAgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgICAgICBkb3VibGUgZDsKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgZCAqPSB0b19uYW5vc2Vjb25kczsKLQotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKQotICAgICAgICAgICAgZCA9IGNlaWwoZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGQgPSBmbG9vcihkKTsKLQotICAgICAgICAqdCA9IChfUHlUaW1lX3QpZDsKLSAgICAgICAgZXJyID0gZCAtIChkb3VibGUpKnQ7Ci0gICAgICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7Ci0gICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBfUHlUaW1lX0Zyb21GbG9hdE9iamVjdCh0LCBkLCByb3VuZCwgdW5pdF90b19ucyk7CiAgICAgfQogICAgIGVsc2UgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIFBZX0xPTkdfTE9ORyBzZWM7CisgICAgICAgIGxvbmcgbG9uZyBzZWM7CisgICAgICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisKICAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZ0xvbmcob2JqKTsKLSAgICAgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSNlbHNlCi0gICAgICAgIGxvbmcgc2VjOwotICAgICAgICBzZWMgPSBQeUxvbmdfQXNMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZW5kaWYKICAgICAgICAgaWYgKHNlYyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgKnQgPSBzZWMgKiB0b19uYW5vc2Vjb25kczsKLSAgICAgICAgaWYgKCp0IC8gdG9fbmFub3NlY29uZHMgIT0gc2VjKSB7CisKKyAgICAgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHNlYywgdW5pdF90b19ucykpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICAqdCA9IHNlYyAqIHVuaXRfdG9fbnM7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTI4NCwyNCArMzM4LDI4IEBACiBkb3VibGUKIF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KQogewotICAgIF9QeVRpbWVfdCBzZWMsIG5zOwotICAgIC8qIERpdmlkZSB1c2luZyBpbnRlZ2VycyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMgb24gdGhlIGludGVnZXIgcGFydC4KLSAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KLSAgICBzZWMgPSB0IC8gU0VDX1RPX05TOwotICAgIG5zID0gdCAlIFNFQ19UT19OUzsKLSAgICByZXR1cm4gKGRvdWJsZSlzZWMgKyAoZG91YmxlKW5zICogMWUtOTsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICBpZiAodCAlIFNFQ19UT19OUyA9PSAwKSB7CisgICAgICAgIF9QeVRpbWVfdCBzZWNzOworICAgICAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCisgICAgICAgICAgIDFlLTkgY2Fubm90IGJlIHN0b3JlZCBleGFjdGx5IGluIElFRUUgNjQtYml0LiAqLworICAgICAgICBzZWNzID0gdCAvIFNFQ19UT19OUzsKKyAgICAgICAgZCA9IChkb3VibGUpc2VjczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQgPSAoZG91YmxlKXQ7CisgICAgICAgIGQgLz0gMWU5OworICAgIH0KKyAgICByZXR1cm4gZDsKIH0KIAogUHlPYmplY3QgKgogX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOwotI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwotI2VuZGlmCisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogfQogCiBzdGF0aWMgX1B5VGltZV90CkBAIC0zMDksNyArMzY3LDIwIEBACiAgICAgICAgICAgICAgICBjb25zdCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgYXNzZXJ0KGsgPiAxKTsKLSAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSB7CisgICAgICAgIF9QeVRpbWVfdCB4LCByLCBhYnNfcjsKKyAgICAgICAgeCA9IHQgLyBrOworICAgICAgICByID0gdCAlIGs7CisgICAgICAgIGFic19yID0gUHlfQUJTKHIpOworICAgICAgICBpZiAoYWJzX3IgPiBrIC8gMiB8fCAoYWJzX3IgPT0gayAvIDIgJiYgKFB5X0FCUyh4KSAmIDEpKSkgeworICAgICAgICAgICAgaWYgKHQgPj0gMCkKKyAgICAgICAgICAgICAgICB4Kys7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeC0tOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4OworICAgIH0KKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKICAgICAgICAgaWYgKHQgPj0gMCkKICAgICAgICAgICAgIHJldHVybiAodCArIGsgLSAxKSAvIGs7CiAgICAgICAgIGVsc2UKQEAgLTM3Myw3ICs0NDQsNyBAQAogX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsIGludCByYWlzZSkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBfUHlUaW1lX3Qgc2Vjcywgc2VjczI7CiAgICAgaW50IHVzOwogICAgIGludCByZXM7CiAKQEAgLTM4Niw3ICs0NTcsOCBAQAogI2VuZGlmCiAgICAgdHYtPnR2X3VzZWMgPSB1czsKIAotICAgIGlmIChyZXMgPCAwIHx8IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgc2VjczIgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisgICAgaWYgKHJlcyA8IDAgfHwgc2VjczIgIT0gc2VjcykgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDI0LDYgKzQ5Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSB8fCBkZWZpbmVkKEhBVkVfS1FVRVVFKQogaW50CiBfUHlUaW1lX0FzVGltZXNwZWMoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCkBAIC00MzcsMTMgKzUxMCwxMyBAQAogICAgICAgICBzZWNzIC09IDE7CiAgICAgfQogICAgIHRzLT50dl9zZWMgPSAodGltZV90KXNlY3M7Ci0gICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7Ci0gICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBhc3NlcnQoMCA8PSBuc2VjICYmIG5zZWMgPCBTRUNfVE9fTlMpOwogICAgIHRzLT50dl9uc2VjID0gbnNlYzsKIAotICAgIGFzc2VydCgwIDw9IHRzLT50dl9uc2VjICYmIHRzLT50dl9uc2VjIDw9IDk5OTk5OTk5OSk7CisgICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogI2VuZGlmCkBAIC01NTcsMTkgKzYzMCwyMCBAQAogICAgIHJldHVybiBweWdldHRpbWVvZmRheSh0LCBpbmZvLCAxKTsKIH0KIAotCiBzdGF0aWMgaW50CiBweW1vbm90b25pYyhfUHlUaW1lX3QgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvLCBpbnQgcmFpc2UpCiB7CiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFVMT05HTE9ORyByZXN1bHQ7CisgICAgVUxPTkdMT05HIHRpY2tzOworICAgIF9QeVRpbWVfdCB0OwogCiAgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CiAKLSAgICByZXN1bHQgPSBHZXRUaWNrQ291bnQ2NCgpOworICAgIHRpY2tzID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpY2tzKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdGlja3M7CiAKLSAgICAqdHAgPSByZXN1bHQgKiBNU19UT19OUzsKLSAgICBpZiAoKnRwIC8gTVNfVE9fTlMgIT0gcmVzdWx0KSB7CisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIE1TX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3Nyw2ICs2NTEsNyBAQAogICAgICAgICAvKiBIZWxsbywgdGltZSB0cmF2ZWxlciEgKi8KICAgICAgICAgYXNzZXJ0KDApOwogICAgIH0KKyAgICAqdHAgPSB0ICogTVNfVE9fTlM7CiAKICAgICBpZiAoaW5mbykgewogICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKQEAgLTY4OSw4ICs3NjQsNTcgQEAKICAgICBpZiAoX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKCZ0LCBOVUxMKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIC8qIGNoZWNrIHRoYXQgX1B5VGltZV9Gcm9tU2Vjb25kcygpIGNhbm5vdCBvdmVyZmxvdyAqLwotICAgIGFzc2VydChJTlRfTUFYIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKTsKLSAgICBhc3NlcnQoSU5UX01JTiA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUyk7CiAgICAgcmV0dXJuIDA7CiB9CisKK2ludAorX1B5VGltZV9sb2NhbHRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGludCBlcnJvcjsKKworICAgIGVycm9yID0gbG9jYWx0aW1lX3ModG0sICZ0KTsKKyAgICBpZiAoZXJyb3IgIT0gMCkgeworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisjZWxzZSAvKiAhTVNfV0lORE9XUyAqLworICAgIGlmIChsb2NhbHRpbWVfcigmdCwgdG0pID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworfQorCitpbnQKK19QeVRpbWVfZ210aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGdtdGltZV9zKHRtLCAmdCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KKyAgICBpZiAoZ210aW1lX3IoJnQsIHRtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCBmMmFkYTVmLi42ZjlmNzExIDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0xLDYgKzEsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2lmZGVmIE1TX1dJTkRPV1MKICMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKy8qIEFsbCBzYW1wbGUgTVNETiB3aW5jcnlwdCBwcm9ncmFtcyBpbmNsdWRlIHRoZSBoZWFkZXIgYmVsb3cuIEl0IGlzIGF0IGxlYXN0CisgKiByZXF1aXJlZCB3aXRoIE1pbiBHVy4gKi8KKyMgIGluY2x1ZGUgPHdpbmNyeXB0Lmg+CiAjZWxzZQogIyAgaW5jbHVkZSA8ZmNudGwuaD4KICMgIGlmZGVmIEhBVkVfU1lTX1NUQVRfSApAQCAtMzYsMTAgKzM5LDkgQEAKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgaWYgKHJhaXNlKQorICAgIGlmIChyYWlzZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICBlbHNlCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIFdpbmRvd3MgcmFuZG9tIEFQSSAoQ3J5cHRvR2VuKSIpOworICAgIH0KICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTUyLDggKzU0LDkgQEAKIAogICAgIGlmIChoQ3J5cHRQcm92ID09IDApCiAgICAgewotICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkKKyAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHdoaWxlIChzaXplID4gMCkKQEAgLTYyLDExICs2NSw5IEBACiAgICAgICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgKERXT1JEKWNodW5rLCBidWZmZXIpKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBDcnlwdEdlblJhbmRvbSgpIGZhaWxlZCAqLwotICAgICAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemVkIHRoZSByYW5kb21pemVkIGhhc2ggIgotICAgICAgICAgICAgICAgICAgICAgICAgInNlY3JldCB1c2luZyBDcnlwdG9HZW4pIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyICs9IGNodW5rOwpAQCAtODMsMjkgKzg0LDI4IEBACiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpLgogICAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuCiAKLSAgIElmIGZhdGFsIGlzIG5vbnplcm8sIGNhbGwgUHlfRmF0YWxFcnJvcigpIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24KLSAgIG9uIGVycm9yLiAqLworICAgSWYgcmFpc2UgaXMgemVybywgZG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAqLwogc3RhdGljIGludAotcHlfZ2V0ZW50cm9weSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZhdGFsKQorcHlfZ2V0ZW50cm9weShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogewogICAgIHdoaWxlIChzaXplID4gMCkgewogICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwogICAgICAgICBpbnQgcmVzOwogCi0gICAgICAgIGlmICghZmF0YWwpIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotICAgICAgICAgICAgaWYgKHJlcyA8IDApCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0ZW50cm9weSgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCiAgICAgICAgIGJ1ZmZlciArPSBsZW47CkBAIC0xMjgsMjUgKzEyOCwyMiBAQAogICAgICBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiBhbmQgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4KICAgICAgZXhjZXB0aW9uLCBvciBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudCBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLXB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQorcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKIHsKICAgICAvKiBJcyBnZXRyYW5kb20oKSBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsPyBTZXQgdG8gMCBpZiBnZXRyYW5kb20oKQogICAgICAgIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTS4gTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcwogICAgICAgIDExLjMgb3IgbmV3ZXIgKi8KICAgICBzdGF0aWMgaW50IGdldHJhbmRvbV93b3JrcyA9IDE7Ci0KLSAgICAvKiBnZXRyYW5kb20oKSBvbiBMaW51eCB3aWxsIGJsb2NrIGlmIGNhbGxlZCBiZWZvcmUgdGhlIGtlcm5lbCBoYXMKLSAgICAgKiBpbml0aWFsaXplZCB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wuIFRoaXMgd2lsbCBjYXVzZSBQeXRob24KLSAgICAgKiB0byBoYW5nIG9uIHN0YXJ0dXAgaWYgY2FsbGVkIHZlcnkgZWFybHkgaW4gdGhlIGJvb3QgcHJvY2VzcyAtCi0gICAgICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjY4MzkuIFRvIGF2b2lkIHRoaXMsIHVzZSB0aGUKLSAgICAgKiBHUk5EX05PTkJMT0NLIGZsYWcuICovCi0gICAgY29uc3QgaW50IGZsYWdzID0gR1JORF9OT05CTE9DSzsKKyAgICBpbnQgZmxhZ3M7CisgICAgY2hhciAqZGVzdDsKICAgICBsb25nIG47CiAKICAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBmbGFncyA9IGJsb2NraW5nID8gMCA6IEdSTkRfTk9OQkxPQ0s7CisgICAgZGVzdCA9IGJ1ZmZlcjsKICAgICB3aGlsZSAoMCA8IHNpemUpIHsKICNpZmRlZiBzdW4KICAgICAgICAgLyogSXNzdWUgIzI2NzM1OiBPbiBTb2xhcmlzLCBnZXRyYW5kb20oKSBpcyBsaW1pdGVkIHRvIHJldHVybmluZyB1cApAQCAtMTYwLDIzICsxNTcsMjMgQEAKICNpZmRlZiBIQVZFX0dFVFJBTkRPTQogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7CisgICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIC8qIE9uIExpbnV4LCB1c2UgdGhlIHN5c2NhbGwoKSBmdW5jdGlvbiBiZWNhdXNlIHRoZSBHTlUgbGliYyBkb2Vzbid0Ci0gICAgICAgICAqIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKLSAgICAgICAgICogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KKyAgICAgICAgICAgZXhwb3NlIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIHlldC4gU2VlOgorICAgICAgICAgICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLwogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTg4LDQwICsxODUsMzMgQEAKICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotICAgICAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgdXJhbmRvbSBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gSW4gdGhpcyBjYXNlLCBmYWxsIGJhY2sgb24KLSAgICAgICAgICAgICAgICAgICByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLgogCi0gICAgICAgICAgICAgICAgICAgTm90ZTogSW4gdGhpcyBjYXNlIHRoZSBkYXRhIHJlYWQgd2lsbCBub3QgYmUgcmFuZG9tIHNvCi0gICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLiBSZXRhaW5pbmcKLSAgICAgICAgICAgICAgICAgICB0aGUgZXhpc3Rpbmcgc2VtYW50aWNzIGZvciBwcmFjdGljYWwgcHVycG9zZXMuICovCi0gICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKKyAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtIHVyYW5kb20KKyAgICAgICAgICAgICAgIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBGb3IgX1B5UmFuZG9tX0luaXQoKSwgd2UgaWdub3JlIHRoZWlyCisgICAgICAgICAgICAgICBlcnJvciBhbmQgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tIHdoaWNoIG5ldmVyIGJsb2NrcywKKyAgICAgICAgICAgICAgIGV2ZW4gaWYgdGhlIHN5c3RlbSB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQuICovCisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOICYmICFyYWlzZSAmJiAhYmxvY2tpbmcpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIik7CisgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSAqLworICAgICAgICAgICAgICAgIC8qIHJldHJ5IGdldHJhbmRvbSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICBkZXN0ICs9IG47CiAgICAgICAgIHNpemUgLT0gbjsKICAgICB9CiAgICAgcmV0dXJuIDE7CkBAIC0yMzgsNjQgKzIyOCwyMSBAQAogLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KICAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgogCi0gICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KLXN0YXRpYyB2b2lkCi1kZXZfdXJhbmRvbV9ub3JhaXNlKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotewotICAgIGludCBmZDsKLSAgICBQeV9zc2l6ZV90IG47Ci0KLSAgICBhc3NlcnQgKDAgPCBzaXplKTsKLQotI2lmZGVmIFBZX0dFVFJBTkRPTQotICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLyogZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLAotICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotI2VuZGlmCi0KLSAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLSAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBvcGVuIC9kZXYvdXJhbmRvbSIpOwotICAgIH0KLQotICAgIHdoaWxlICgwIDwgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLQotICAgICAgICBpZiAobiA8PSAwKSB7Ci0gICAgICAgICAgICAvKiByZWFkKCkgZmFpbGVkIG9yIHJldHVybmVkIDAgYnl0ZXMgKi8KLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZWFkIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBidWZmZXIgKz0gbjsKLSAgICAgICAgc2l6ZSAtPSBuOwotICAgIH0KLSAgICBjbG9zZShmZCk7Ci19Ci0KLS8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCi0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLQotICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xCisgICBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLWRldl91cmFuZG9tX3B5dGhvbihjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK2Rldl91cmFuZG9tKGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKIHsKICAgICBpbnQgZmQ7CiAgICAgUHlfc3NpemVfdCBuOwotICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CiAjaWZkZWYgUFlfR0VUUkFORE9NCiAgICAgaW50IHJlczsKICNlbmRpZgogCi0gICAgaWYgKHNpemUgPD0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKIAogI2lmZGVmIFBZX0dFVFJBTkRPTQotICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDEpOworICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIGJsb2NraW5nLCByYWlzZSk7CiAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMwNiw2NCArMjUzLDkwIEBACiAgICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCiAjZW5kaWYKIAotICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLwotICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQotICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0gICAgICAgICAgICB8fCBzdC5zdF9pbm8gIT0gdXJhbmRvbV9jYWNoZS5zdF9pbm8pIHsKLSAgICAgICAgICAgIC8qIFNvbWV0aGluZyBjaGFuZ2VkOiBmb3JnZXQgdGhlIGNhY2hlZCBmZCAoYnV0IGRvbid0IGNsb3NlIGl0LAotICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLSAgICAgICAgICAgICAgIHRoaXJkLXBhcnR5IGNvZGUpLiAqLwotICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOworCisgICAgaWYgKHJhaXNlKSB7CisgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisKKyAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgeworICAgICAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLworICAgICAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKKyAgICAgICAgICAgICAgICB8fCBzdC5zdF9kZXYgIT0gdXJhbmRvbV9jYWNoZS5zdF9kZXYKKyAgICAgICAgICAgICAgICB8fCBzdC5zdF9pbm8gIT0gdXJhbmRvbV9jYWNoZS5zdF9pbm8pIHsKKyAgICAgICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKKyAgICAgICAgICAgICAgICAgICBzaW5jZSBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nIGltcG9ydGFudCBmb3Igc29tZQorICAgICAgICAgICAgICAgICAgIHRoaXJkLXBhcnR5IGNvZGUpLiAqLworICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQorICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKyAgICAgICAgICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOWElPIHx8CisgICAgICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvdXJhbmRvbSAob3IgZXF1aXZhbGVudCkgbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKKyAgICAgICAgICAgICAgICAvKiB1cmFuZG9tX2ZkIHdhcyBpbml0aWFsaXplZCBieSBhbm90aGVyIHRocmVhZCB3aGlsZSB3ZSB3ZXJlCisgICAgICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KKyAgICAgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSBmZDsKKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfaW5vID0gc3Quc3RfaW5vOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOworICAgICAgICAgICAgaWYgKG4gPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgICAgICBzaXplIC09IG47CisgICAgICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKICAgICB9Ci0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKLSAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwogICAgIGVsc2UgewotICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisgICAgICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwogICAgICAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOWElPIHx8Ci0gICAgICAgICAgICAgICAgZXJybm8gPT0gRU5PREVWIHx8IGVycm5vID09IEVBQ0NFUykKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvdXJhbmRvbSAob3IgZXF1aXZhbGVudCkgbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAvKiBvdGhlcndpc2UsIGtlZXAgdGhlIE9TRXJyb3IgZXhjZXB0aW9uIHJhaXNlZCBieSBfUHlfb3BlbigpICovCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewotICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQotICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KLSAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKKworICAgICAgICB3aGlsZSAoMCA8IHNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOworICAgICAgICAgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOworCisgICAgICAgICAgICBpZiAobiA8PSAwKSB7CisgICAgICAgICAgICAgICAgLyogc3RvcCBvbiBlcnJvciBvciBpZiByZWFkKHNpemUpIHJldHVybmVkIDAgKi8KICAgICAgICAgICAgICAgICBjbG9zZShmZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IGZkOwotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OwotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfaW5vID0gc3Quc3RfaW5vOwotICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgICAgIHNpemUgLT0gbjsKICAgICAgICAgfQorICAgICAgICBjbG9zZShmZCk7CiAgICAgfQotCi0gICAgZG8gewotICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLSAgICAgICAgaWYgKG4gPT0gLTEpIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAobiA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBidWZmZXIgKz0gbjsKLSAgICAgICAgc2l6ZSAtPSBuOwotICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLQogICAgIHJldHVybiAwOwogfQogCkBAIC0zOTksMjkgKzM3Miw2MiBAQAogICAgIH0KIH0KIAorLyogSWYgcmFpc2UgaXMgemVybzoKKyAgIC0gRG9uJ3QgcmFpc2UgZXhjZXB0aW9ucyBvbiBlcnJvcgorICAgLSBEb24ndCBjYWxsIFB5RXJyX0NoZWNrU2lnbmFscygpIG9uIEVJTlRSIChyZXRyeSBkaXJlY3RseSB0aGUgaW50ZXJydXB0ZWQKKyAgICAgc3lzY2FsbCkKKyAgIC0gRG9uJ3QgcmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgc3lzY2FsbHMuICovCitzdGF0aWMgaW50CitweXVyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBibG9ja2luZywgaW50IHJhaXNlKQoreworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICByZXR1cm4gd2luMzJfdXJhbmRvbSgodW5zaWduZWQgY2hhciAqKWJ1ZmZlciwgc2l6ZSwgcmFpc2UpOworI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQorICAgIHJldHVybiBweV9nZXRlbnRyb3B5KGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOworI2Vsc2UKKyAgICByZXR1cm4gZGV2X3VyYW5kb20oYnVmZmVyLCBzaXplLCBibG9ja2luZywgcmFpc2UpOworI2VuZGlmCit9CisKIC8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCiAgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCiAgICBleGNlcHQgbG9uZyBsaXZpbmcgcHJpdmF0ZSBrZXlzIGZvciBhc3ltbWV0cmljIGVuY3J5cHRpb24uCiAKLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIsIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIHVzZWQgaW4gYmxvY2tpbmcgbW9kZToKKyAgIGJsb2NrIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgKDEyOCBiaXRzIGFyZQorICAgY29sbGVjdGVkIGJ5IHRoZSBrZXJuZWwpLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIGludAogX1B5T1NfVVJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcHl1cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSwgMSk7Cit9CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIDEpOwotI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotICAgIHJldHVybiBweV9nZXRlbnRyb3B5KGJ1ZmZlciwgc2l6ZSwgMCk7Ci0jZWxzZQotICAgIHJldHVybiBkZXZfdXJhbmRvbV9weXRob24oKGNoYXIqKWJ1ZmZlciwgc2l6ZSk7Ci0jZW5kaWYKKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCisgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBub3Qgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZS4KKworICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIgKHdoZW4gZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkKSwgaWYgdGhlIHN5c3RlbQorICAgdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LCB0aGUgZnVuY3Rpb24gcmV0dXJucyAid2VhayIgZW50cm9weSByZWFkCisgICBmcm9tIC9kZXYvdXJhbmRvbS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitpbnQKK19QeU9TX1VSYW5kb21Ob25ibG9jayh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gcHl1cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCwgMSk7CiB9CiAKIHZvaWQKQEAgLTQzMCw3ICs0MzYsNyBAQAogICAgIGNoYXIgKmVudjsKICAgICB1bnNpZ25lZCBjaGFyICpzZWNyZXQgPSAodW5zaWduZWQgY2hhciAqKSZfUHlfSGFzaFNlY3JldC51YzsKICAgICBQeV9zc2l6ZV90IHNlY3JldF9zaXplID0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0X3QpOwotICAgIGFzc2VydChzZWNyZXRfc2l6ZSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKF9QeV9IYXNoU2VjcmV0X3QpID09IHNpemVvZihfUHlfSGFzaFNlY3JldC51YykpOwogCiAgICAgaWYgKF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CkBAIC00NjIsMTMgKzQ2OCwxNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgKHZvaWQpd2luMzJfdXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICAgICAgKHZvaWQpcHlfZ2V0ZW50cm9weShzZWNyZXQsIHNlY3JldF9zaXplLCAxKTsKLSNlbHNlCi0gICAgICAgIGRldl91cmFuZG9tX25vcmFpc2Uoc2VjcmV0LCBzZWNyZXRfc2l6ZSk7Ci0jZW5kaWYKKyAgICAgICAgaW50IHJlczsKKworICAgICAgICAvKiBfUHlSYW5kb21fSW5pdCgpIGlzIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBQeXRob24gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAgYW5kIHNvIGV4Y2VwdGlvbnMgY2Fubm90IGJlIHVzZWQgKHVzZSByYWlzZT0wKS4KKworICAgICAgICAgICBfUHlSYW5kb21fSW5pdCgpIG11c3Qgbm90IGJsb2NrIFB5dGhvbiBpbml0aWFsaXphdGlvbjogY2FsbAorICAgICAgICAgICBweXVyYW5kb20oKSBpcyBub24tYmxvY2tpbmcgbW9kZSAoYmxvY2tpbmc9MCk6IHNlZSB0aGUgUEVQIDUyNC4gKi8KKyAgICAgICAgcmVzID0gcHl1cmFuZG9tKHNlY3JldCwgc2VjcmV0X3NpemUsIDAsIDApOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbGVkIHRvIGdldCByYW5kb20gbnVtYmVycyB0byBpbml0aWFsaXplIFB5dGhvbiIpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9QeXRob24vc3RydWN0bWVtYmVyLmMgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKaW5kZXggYWYwMjk2ZC4uODZkNGM2NiAxMDA2NDQKLS0tIGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jCisrKyBiL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYwpAQCAtNzQsMTQgKzc0LDEyIEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIGwtPm5hbWUpOwogICAgICAgICBQeV9YSU5DUkVGKHYpOwogICAgICAgICBicmVhazsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgVF9MT05HTE9ORzoKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKihQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKihsb25nIGxvbmcgKilhZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUX1VMT05HTE9ORzoKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFkZHIpOworICAgICAgICB2ID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCoodW5zaWduZWQgbG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAgICAgY2FzZSBUX05PTkU6CiAgICAgICAgIHYgPSBQeV9Ob25lOwogICAgICAgICBQeV9JTkNSRUYodik7CkBAIC0yNjYsMjcgKzI2NCwyNSBAQAogICAgIGNhc2UgVF9TVFJJTkdfSU5QTEFDRToKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlYWRvbmx5IGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gLTE7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6ewotICAgICAgICBQWV9MT05HX0xPTkcgdmFsdWU7Ci0gICAgICAgICooUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZyh2KTsKKyAgICAgICAgbG9uZyBsb25nIHZhbHVlOworICAgICAgICAqKGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgICAgIGlmICgodmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgY2FzZSBUX1VMT05HTE9ORzp7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgICAgICAvKiA/Pz8gUHlMb25nX0FzTG9uZ0xvbmcgYWNjZXB0cyBhbiBpbnQsIGJ1dCBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCiAgICAgICAgICAgICBkb2Vzbid0ID8/PyAqLwogICAgICAgICBpZiAoUHlMb25nX0NoZWNrKHYpKQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmcodik7Ci0gICAgICAgIGlmICgodmFsdWUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyBsb25nKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOworICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiYmFkIG1lbWJlcmRlc2NyIHR5cGUgZm9yICVzIiwgbC0+bmFtZSk7CmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IDE1OTFhMjAuLmJmMzBlY2MgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC02LDE2ICs2LDIyIEBACiAKIC8qIGVycm9yIHN0cmluZ3MgdXNlZCBmb3Igd2FybmluZ3MgKi8KICNkZWZpbmUgR0xPQkFMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgogCiAjZGVmaW5lIE5PTkxPQ0FMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBub25sb2NhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBHTE9CQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9VU0UgXAotIm5hbWUgJyUuNDAwcycgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKworI2RlZmluZSBHTE9CQUxfQU5OT1QgXAorImFubm90YXRlZCBuYW1lICclVScgY2FuJ3QgYmUgZ2xvYmFsIgorCisjZGVmaW5lIE5PTkxPQ0FMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIG5vbmxvY2FsIgogCiAjZGVmaW5lIElNUE9SVF9TVEFSX1dBUk5JTkcgImltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiCiAKQEAgLTYzLDYgKzY5LDcgQEAKICAgICAgICAgc3RlLT5zdGVfbmVzdGVkID0gMTsKICAgICBzdGUtPnN0ZV9jaGlsZF9mcmVlID0gMDsKICAgICBzdGUtPnN0ZV9nZW5lcmF0b3IgPSAwOworICAgIHN0ZS0+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+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gaXNfZ2VuZXJhdG9yOworICAgIGlmIChvdXRlcm1vc3QtPmlzX2FzeW5jKSB7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOworICAgIH0KICAgICAvKiBPdXRlcm1vc3QgaXRlciBpcyByZWNlaXZlZCBhcyBhbiBhcmd1bWVudCAqLwogICAgIGlmICghc3ltdGFibGVfaW1wbGljaXRfYXJnKHN0LCAwKSkgewogICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCmluZGV4IGY2ODgzNDkuLjVkZDBkMTAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYworKysgYi9QeXRob24vc3lzbW9kdWxlLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogCiAjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KQEAgLTMzLDcgKzM0LDYgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICi0jaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCkBAIC0zMTEsNiArMzExLDIzIEBACiApOwogCiBzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJmaWxlc3lzdGVtIGVuY29kaW5nIGlzIG5vdCBpbml0aWFsaXplZCIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9yc19kb2MsCisgICAgImdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKSAtPiBzdHJpbmdcblwKK1xuXAorUmV0dXJuIHRoZSBlcnJvciBtb2RlIHVzZWQgdG8gY29udmVydCBVbmljb2RlIGZpbGVuYW1lcyBpblxuXAorb3BlcmF0aW5nIHN5c3RlbSBmaWxlbmFtZXMuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIHN5c19pbnRlcm4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpzOwpAQCAtMzQ2LDggKzM2MywxMCBAQAogc3RhdGljIGludAogdHJhY2VfaW5pdCh2b2lkKQogewotICAgIHN0YXRpYyBjaGFyICp3aGF0bmFtZXNbN10gPSB7ImNhbGwiLCAiZXhjZXB0aW9uIiwgImxpbmUiLCAicmV0dXJuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjX2NhbGwiLCAiY19leGNlcHRpb24iLCAiY19yZXR1cm4ifTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHdoYXRuYW1lc1s3XSA9IHsKKyAgICAgICAgImNhbGwiLCAiZXhjZXB0aW9uIiwgImxpbmUiLCAicmV0dXJuIiwKKyAgICAgICAgImNfY2FsbCIsICJjX2V4Y2VwdGlvbiIsICJjX3JldHVybiIKKyAgICB9OwogICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHsKQEAgLTM2NiwzNCArMzg1LDI1IEBACiBjYWxsX3RyYW1wb2xpbmUoUHlPYmplY3QqIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmZyYW1lLCBpbnQgd2hhdCwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeU9iamVjdCAqYXJnczsKLSAgICBQeU9iamVjdCAqd2hhdHN0cjsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzdGFja1szXTsKIAotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIGlmIChQeUZyYW1lX0Zhc3RUb0xvY2Fsc1dpdGhFcnJvcihmcmFtZSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeUZyYW1lX0Zhc3RUb0xvY2Fsc1dpdGhFcnJvcihmcmFtZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBQeV9JTkNSRUYoZnJhbWUpOwotICAgIHdoYXRzdHIgPSB3aGF0c3RyaW5nc1t3aGF0XTsKLSAgICBQeV9JTkNSRUYod2hhdHN0cik7Ci0gICAgaWYgKGFyZyA9PSBOVUxMKQotICAgICAgICBhcmcgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihhcmcpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgKFB5T2JqZWN0ICopZnJhbWUpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgd2hhdHN0cik7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAyLCBhcmcpOworICAgIHN0YWNrWzBdID0gKFB5T2JqZWN0ICopZnJhbWU7CisgICAgc3RhY2tbMV0gPSB3aGF0c3RyaW5nc1t3aGF0XTsKKyAgICBzdGFja1syXSA9IChhcmcgIT0gTlVMTCkgPyBhcmcgOiBQeV9Ob25lOwogCiAgICAgLyogY2FsbCB0aGUgUHl0aG9uLWxldmVsIGZ1bmN0aW9uICovCi0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QoY2FsbGJhY2ssIGFyZ3MpOwotICAgIFB5RnJhbWVfTG9jYWxzVG9GYXN0KGZyYW1lLCAxKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIFB5VHJhY2VCYWNrX0hlcmUoZnJhbWUpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYmFjaywgc3RhY2ssIDMpOwogCi0gICAgLyogY2xlYW51cCAqLwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmcmFtZSwgMSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5VHJhY2VCYWNrX0hlcmUoZnJhbWUpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzNCwxMCArNDQ0LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAocmVzdWx0ICE9IFB5X05vbmUpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBmcmFtZS0+Zl90cmFjZTsKLSAgICAgICAgZnJhbWUtPmZfdHJhY2UgPSBOVUxMOwotICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICBmcmFtZS0+Zl90cmFjZSA9IHJlc3VsdDsKKyAgICAgICAgUHlfWFNFVFJFRihmcmFtZS0+Zl90cmFjZSwgcmVzdWx0KTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtNjAyLDMzICs2MDksNiBAQAogCiAjZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KIAotI2lmZGVmIFdJVEhfVFNDCi1zdGF0aWMgUHlPYmplY3QgKgotc3lzX3NldHRzY2R1bXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBib29sOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2V0dHNjZHVtcCIsICZib29sKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGJvb2wpCi0gICAgICAgIHRzdGF0ZS0+aW50ZXJwLT50c2NkdW1wID0gMTsKLSAgICBlbHNlCi0gICAgICAgIHRzdGF0ZS0+aW50ZXJwLT50c2NkdW1wID0gMDsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0KLX0KLQotUHlEb2NfU1RSVkFSKHNldHRzY2R1bXBfZG9jLAotInNldHRzY2R1bXAoYm9vbClcblwKLVxuXAotSWYgdHJ1ZSwgdGVsbCB0aGUgUHl0aG9uIGludGVycHJldGVyIHRvIGR1bXAgVk0gbWVhc3VyZW1lbnRzIHRvXG5cCi1zdGRlcnIuICBJZiBmYWxzZSwgdHVybiBvZmYgZHVtcC4gIFRoZSBtZWFzdXJlbWVudHMgYXJlIGJhc2VkIG9uIHRoZVxuXAotcHJvY2Vzc29yJ3MgdGltZS1zdGFtcCBjb3VudGVyLiIKLSk7Ci0jZW5kaWYgLyogVFNDICovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBzeXNfc2V0cmVjdXJzaW9ubGltaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtNzEwLDYgKzY5MCwxMTMgQEAKICk7CiAKIAorc3RhdGljIFB5VHlwZU9iamVjdCBBc3luY0dlbkhvb2tzVHlwZTsKKworUHlEb2NfU1RSVkFSKGFzeW5jZ2VuX2hvb2tzX2RvYywKKyJhc3luY2dlbl9ob29rc1xuXAorXG5cCitBIHN0cnVjdCBzZXF1ZW5jZSBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgYXN5bmhyb25vdXNcblwKK2dlbmVyYXRvcnMgaG9va3MuICBUaGUgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBhc3luY2dlbl9ob29rc19maWVsZHNbXSA9IHsKKyAgICB7ImZpcnN0aXRlciIsICJIb29rIHRvIGludGVyY2VwdCBmaXJzdCBpdGVyYXRpb24ifSwKKyAgICB7ImZpbmFsaXplciIsICJIb29rIHRvIGludGVyY2VwdCBmaW5hbGl6YXRpb24ifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgYXN5bmNnZW5faG9va3NfZGVzYyA9IHsKKyAgICAiYXN5bmNnZW5faG9va3MiLCAgICAgICAgICAvKiBuYW1lICovCisgICAgYXN5bmNnZW5faG9va3NfZG9jLCAgICAgICAgLyogZG9jICovCisgICAgYXN5bmNnZW5faG9va3NfZmllbGRzICwgICAgLyogZmllbGRzICovCisgICAgMgorfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX3NldF9hc3luY2dlbl9ob29rcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZmlyc3RpdGVyIiwgImZpbmFsaXplciIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaXJzdGl0ZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCisgICAgICAgICAgICBhcmdzLCBrdywgInxPTyIsIGtleXdvcmRzLAorICAgICAgICAgICAgJmZpcnN0aXRlciwgJmZpbmFsaXplcikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZpbmFsaXplciAmJiBmaW5hbGl6ZXIgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZmluYWxpemVyKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUgZmluYWxpemVyIGV4cGVjdGVkLCBnb3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZmluYWxpemVyKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKGZpbmFsaXplcik7CisgICAgfQorICAgIGVsc2UgaWYgKGZpbmFsaXplciA9PSBQeV9Ob25lKSB7CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoTlVMTCk7CisgICAgfQorCisgICAgaWYgKGZpcnN0aXRlciAmJiBmaXJzdGl0ZXIgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZmlyc3RpdGVyKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUgZmlyc3RpdGVyIGV4cGVjdGVkLCBnb3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZmlyc3RpdGVyKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKGZpcnN0aXRlcik7CisgICAgfQorICAgIGVsc2UgaWYgKGZpcnN0aXRlciA9PSBQeV9Ob25lKSB7CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoTlVMTCk7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRfYXN5bmNnZW5faG9va3NfZG9jLAorInNldF9hc3luY2dlbl9ob29rcygqLCBmaXJzdGl0ZXI9Tm9uZSwgZmluYWxpemVyPU5vbmUpXG5cCitcblwKK1NldCBhIGZpbmFsaXplciBmb3IgYXN5bmMgZ2VuZXJhdG9ycyBvYmplY3RzLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZ2V0X2FzeW5jZ2VuX2hvb2tzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpmaXJzdGl0ZXIgPSBfUHlFdmFsX0dldEFzeW5jR2VuRmlyc3RpdGVyKCk7CisgICAgUHlPYmplY3QgKmZpbmFsaXplciA9IF9QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIoKTsKKworICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZBc3luY0dlbkhvb2tzVHlwZSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmaXJzdGl0ZXIgPT0gTlVMTCkgeworICAgICAgICBmaXJzdGl0ZXIgPSBQeV9Ob25lOworICAgIH0KKworICAgIGlmIChmaW5hbGl6ZXIgPT0gTlVMTCkgeworICAgICAgICBmaW5hbGl6ZXIgPSBQeV9Ob25lOworICAgIH0KKworICAgIFB5X0lOQ1JFRihmaXJzdGl0ZXIpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBmaXJzdGl0ZXIpOworCisgICAgUHlfSU5DUkVGKGZpbmFsaXplcik7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDEsIGZpbmFsaXplcik7CisKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIoZ2V0X2FzeW5jZ2VuX2hvb2tzX2RvYywKKyJnZXRfYXN5bmNnZW5faG9va3MoKVxuXAorXG5cCitSZXR1cm4gYSBuYW1lZHR1cGxlIG9mIGluc3RhbGxlZCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycyBob29rcyBcCisoZmlyc3RpdGVyLCBmaW5hbGl6ZXIpLiIKKyk7CisKKwogc3RhdGljIFB5VHlwZU9iamVjdCBIYXNoX0luZm9UeXBlOwogCiBQeURvY19TVFJWQVIoaGFzaF9pbmZvX2RvYywKQEAgLTgwNywxMCArODk0LDExIEBACiBUaGUgbWVtYmVycyBhcmUgbmFtZWQ6IG1ham9yLCBtaW5vciwgYnVpbGQsIHBsYXRmb3JtLCBzZXJ2aWNlX3BhY2ssXG5cCiBzZXJ2aWNlX3BhY2tfbWFqb3IsIHNlcnZpY2VfcGFja19taW5vciwgc3VpdGVfbWFzaywgYW5kIHByb2R1Y3RfdHlwZS4gRm9yXG5cCiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBvbmx5IHRoZSBmaXJzdCA1IGl0ZW1zIGFyZSBhdmFpbGFibGUgYnkgaW5kZXhpbmcuXG5cCi1BbGwgZWxlbWVudHMgYXJlIG51bWJlcnMsIGV4Y2VwdCBzZXJ2aWNlX3BhY2sgd2hpY2ggaXMgYSBzdHJpbmcuIFBsYXRmb3JtXG5cCi1tYXkgYmUgMCBmb3Igd2luMzJzLCAxIGZvciBXaW5kb3dzIDl4L01FLCAyIGZvciBXaW5kb3dzIE5ULzIwMDAvWFAvVmlzdGEvNyxcblwKLTMgZm9yIFdpbmRvd3MgQ0UuIFByb2R1Y3RfdHlwZSBtYXkgYmUgMSBmb3IgYSB3b3Jrc3RhdGlvbiwgMiBmb3IgYSBkb21haW5cblwKLWNvbnRyb2xsZXIsIDMgZm9yIGEgc2VydmVyLiIKK0FsbCBlbGVtZW50cyBhcmUgbnVtYmVycywgZXhjZXB0IHNlcnZpY2VfcGFjayBhbmQgcGxhdGZvcm1fdHlwZSB3aGljaCBhcmVcblwKK3N0cmluZ3MsIGFuZCBwbGF0Zm9ybV92ZXJzaW9uIHdoaWNoIGlzIGEgMy10dXBsZS4gUGxhdGZvcm0gaXMgYWx3YXlzIDIuXG5cCitQcm9kdWN0X3R5cGUgbWF5IGJlIDEgZm9yIGEgd29ya3N0YXRpb24sIDIgZm9yIGEgZG9tYWluIGNvbnRyb2xsZXIsIDMgZm9yIGFcblwKK3NlcnZlci4gUGxhdGZvcm1fdmVyc2lvbiBpcyBhIDMtdHVwbGUgY29udGFpbmluZyBhIHZlcnNpb24gbnVtYmVyIHRoYXQgaXNcblwKK2ludGVuZGVkIGZvciBpZGVudGlmeWluZyB0aGUgT1MgcmF0aGVyIHRoYW4gZmVhdHVyZSBkZXRlY3Rpb24uIgogKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBXaW5kb3dzVmVyc2lvblR5cGUgPSB7MCwgMCwgMCwgMCwgMCwgMH07CkBAIC04MjUsNyArOTEzLDcgQEAKICAgICB7InNlcnZpY2VfcGFja19taW5vciIsICJTZXJ2aWNlIFBhY2sgbWlub3IgdmVyc2lvbiBudW1iZXIifSwKICAgICB7InN1aXRlX21hc2siLCAiQml0IG1hc2sgaWRlbnRpZnlpbmcgYXZhaWxhYmxlIHByb2R1Y3Qgc3VpdGVzIn0sCiAgICAgeyJwcm9kdWN0X3R5cGUiLCAiU3lzdGVtIHByb2R1Y3QgdHlwZSJ9LAotICAgIHsiX3BsYXRmb3JtX3ZlcnNpb24iLCAiRGlhZ25vc3RpYyB2ZXJzaW9uIG51bWJlciJ9LAorICAgIHsicGxhdGZvcm1fdmVyc2lvbiIsICJEaWFnbm9zdGljIHZlcnNpb24gbnVtYmVyIn0sCiAgICAgezB9CiB9OwogCkBAIC05MTMsNiArMTAwMSwyNCBAQAogCiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCitQeURvY19TVFJWQVIoZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdfZG9jLAorIl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpXG5cCitcblwKK0NoYW5nZXMgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBtYmNzOnJlcGxhY2UgZm9yIGNvbnNpc3RlbmN5XG5cCit3aXRoIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uLiBTZWUgUEVQIDUyOSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblwKK1xuXAorVGhpcyBpcyBlcXVpdmFsZW50IHRvIGRlZmluaW5nIHRoZSBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORyBcblwKK2Vudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBsYXVuY2hpbmcgUHl0aG9uLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKKyAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJyZXBsYWNlIjsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogI2lmZGVmIEhBVkVfRExPUEVOCkBAIC0xMTg5LDggKzEyOTUsMTAgQEAKIHN5c19kZWJ1Z21hbGxvY3N0YXRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICNpZmRlZiBXSVRIX1BZTUFMTE9DCi0gICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIGlmIChfUHlNZW1fUHltYWxsb2NFbmFibGVkKCkpIHsKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyAgICAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICB9CiAjZW5kaWYKICAgICBfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoc3RkZXJyKTsKIApAQCAtMTI3MCw2ICsxMzc4LDggQEAKICNlbmRpZgogICAgIHsiZ2V0ZmlsZXN5c3RlbWVuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKXN5c19nZXRmaWxlc3lzdGVtZW5jb2RpbmcsCiAgICAgIE1FVEhfTk9BUkdTLCBnZXRmaWxlc3lzdGVtZW5jb2RpbmdfZG9jfSwKKyAgICB7ICJnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzIiwgKFB5Q0Z1bmN0aW9uKXN5c19nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzLAorICAgICBNRVRIX05PQVJHUywgZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9yc19kb2MgfSwKICNpZmRlZiBQeV9UUkFDRV9SRUZTCiAgICAgeyJnZXRvYmplY3RzIiwgICAgICBfUHlfR2V0T2JqZWN0cywgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgpAQCAtMTI4NSw2ICsxMzk1LDggQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgeyJnZXR3aW5kb3dzdmVyc2lvbiIsIChQeUNGdW5jdGlvbilzeXNfZ2V0d2luZG93c3ZlcnNpb24sIE1FVEhfTk9BUkdTLAogICAgICBnZXR3aW5kb3dzdmVyc2lvbl9kb2N9LAorICAgIHsiX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKXN5c19lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZywKKyAgICAgTUVUSF9OT0FSR1MsIGVuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nX2RvYyB9LAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICB7ImludGVybiIsICAgICAgICAgIHN5c19pbnRlcm4sICAgICBNRVRIX1ZBUkFSR1MsIGludGVybl9kb2N9LAogICAgIHsiaXNfZmluYWxpemluZyIsICAgc3lzX2lzX2ZpbmFsaXppbmcsIE1FVEhfTk9BUkdTLCBpc19maW5hbGl6aW5nX2RvY30sCkBAIC0xMzA5LDkgKzE0MjEsNiBAQAogICAgIHsiZ2V0cHJvZmlsZSIsICAgICAgc3lzX2dldHByb2ZpbGUsIE1FVEhfTk9BUkdTLCBnZXRwcm9maWxlX2RvY30sCiAgICAgeyJzZXRyZWN1cnNpb25saW1pdCIsIHN5c19zZXRyZWN1cnNpb25saW1pdCwgTUVUSF9WQVJBUkdTLAogICAgICBzZXRyZWN1cnNpb25saW1pdF9kb2N9LAotI2lmZGVmIFdJVEhfVFNDCi0gICAgeyJzZXR0c2NkdW1wIiwgc3lzX3NldHRzY2R1bXAsIE1FVEhfVkFSQVJHUywgc2V0dHNjZHVtcF9kb2N9LAotI2VuZGlmCiAgICAgeyJzZXR0cmFjZSIsICAgICAgICBzeXNfc2V0dHJhY2UsIE1FVEhfTywgc2V0dHJhY2VfZG9jfSwKICAgICB7ImdldHRyYWNlIiwgICAgICAgIHN5c19nZXR0cmFjZSwgTUVUSF9OT0FSR1MsIGdldHRyYWNlX2RvY30sCiAgICAgeyJjYWxsX3RyYWNpbmciLCBzeXNfY2FsbF90cmFjaW5nLCBNRVRIX1ZBUkFSR1MsIGNhbGxfdHJhY2luZ19kb2N9LApAQCAtMTMyMSw2ICsxNDMwLDEwIEBACiAgICAgIHNldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAogICAgIHsiZ2V0X2Nvcm91dGluZV93cmFwcGVyIiwgc3lzX2dldF9jb3JvdXRpbmVfd3JhcHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIGdldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAorICAgIHsic2V0X2FzeW5jZ2VuX2hvb2tzIiwgKFB5Q0Z1bmN0aW9uKXN5c19zZXRfYXN5bmNnZW5faG9va3MsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNldF9hc3luY2dlbl9ob29rc19kb2N9LAorICAgIHsiZ2V0X2FzeW5jZ2VuX2hvb2tzIiwgc3lzX2dldF9hc3luY2dlbl9ob29rcywgTUVUSF9OT0FSR1MsCisgICAgIGdldF9hc3luY2dlbl9ob29rc19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNTAxLDE0ICsxNjE0LDIxIEBACiB2ZXJzaW9uX2luZm8gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBhcyBhIG5hbWVkIHR1cGxlXG5cCiAiCiApCi0jaWZkZWYgTVNfV0lORE9XUworI2lmZGVmIE1TX0NPUkVETEwKIC8qIGNvbmNhdGVuYXRpbmcgc3RyaW5nIGhlcmUgKi8KIFB5RG9jX1NUUigKICJkbGxoYW5kbGUgLS0gW1dpbmRvd3Mgb25seV0gaW50ZWdlciBoYW5kbGUgb2YgdGhlIFB5dGhvbiBETExcblwKIHdpbnZlciAtLSBbV2luZG93cyBvbmx5XSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgUHl0aG9uIERMTFxuXAogIgogKQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBNU19DT1JFRExMICovCisjaWZkZWYgTVNfV0lORE9XUworLyogY29uY2F0ZW5hdGluZyBzdHJpbmcgaGVyZSAqLworUHlEb2NfU1RSKAorIl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyAtLSBbV2luZG93cyBvbmx5XSBcblwKKyIKKykKKyNlbmRpZgogUHlEb2NfU1RSKAogIl9fc3RkaW5fXyAtLSB0aGUgb3JpZ2luYWwgc3RkaW47IGRvbid0IHRvdWNoIVxuXAogX19zdGRvdXRfXyAtLSB0aGUgb3JpZ2luYWwgc3Rkb3V0OyBkb24ndCB0b3VjaCFcblwKQEAgLTE2ODAsMTUgKzE4MDAsMTEgQEAKIC8qIHN5cy5pbXBsZW1lbnRhdGlvbiB2YWx1ZXMgKi8KICNkZWZpbmUgTkFNRSAiY3B5dGhvbiIKIGNvbnN0IGNoYXIgKl9QeVN5c19JbXBsTmFtZSA9IE5BTUU7Ci0jZGVmaW5lIFFVT1RFKGFyZykgI2FyZwotI2RlZmluZSBTVFJJRlkobmFtZSkgUVVPVEUobmFtZSkKLSNkZWZpbmUgTUFKT1IgU1RSSUZZKFBZX01BSk9SX1ZFUlNJT04pCi0jZGVmaW5lIE1JTk9SIFNUUklGWShQWV9NSU5PUl9WRVJTSU9OKQorI2RlZmluZSBNQUpPUiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikKKyNkZWZpbmUgTUlOT1IgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pCiAjZGVmaW5lIFRBRyBOQU1FICItIiBNQUpPUiBNSU5PUgogY29uc3QgY2hhciAqX1B5U3lzX0ltcGxDYWNoZVRhZyA9IFRBRzsKICN1bmRlZiBOQU1FCi0jdW5kZWYgUVVPVEUKLSN1bmRlZiBTVFJJRlkKICN1bmRlZiBNQUpPUgogI3VuZGVmIE1JTk9SCiAjdW5kZWYgVEFHCkBAIC0xNzMzLDYgKzE4NDksMTYgQEAKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKIAorI2lmZGVmIE1VTFRJQVJDSAorICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoTVVMVElBUkNIKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJfbXVsdGlhcmNoIiwgdmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisjZW5kaWYKKwogICAgIC8qIGRpY3QgcmVhZHkgKi8KIAogICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhpbXBsX2luZm8pOwpAQCAtMTk0Myw2ICsyMDY5LDE0IEBACiAgICAgU0VUX1NZU19GUk9NX1NUUklORygidGhyZWFkX2luZm8iLCBQeVRocmVhZF9HZXRJbmZvKCkpOwogI2VuZGlmCiAKKyAgICAvKiBpbml0aWFsaXplIGFzeW5jZ2VuX2hvb2tzICovCisgICAgaWYgKEFzeW5jR2VuSG9va3NUeXBlLnRwX25hbWUgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoCisgICAgICAgICAgICAgICAgJkFzeW5jR2VuSG9va3NUeXBlLCAmYXN5bmNnZW5faG9va3NfZGVzYykgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKwogI3VuZGVmIFNFVF9TWVNfRlJPTV9TVFJJTkcKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HX0JPUlJPVwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQpAQCAtMjAzOSw3ICsyMTczLDcgQEAKICNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9SRUFMUEFUSCkKICAgICB3Y2hhcl90IGZ1bGxwYXRoW01BWFBBVEhMRU5dOwotI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChNU19XSU5DRSkKKyNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICB3Y2hhcl90IGZ1bGxwYXRoW01BWF9QQVRIXTsKICNlbmRpZgogCkBAIC0yMDc4LDEwICsyMjEyLDggQEAKICNpZiBTRVAgPT0gJ1xcJyAvKiBTcGVjaWFsIGNhc2UgZm9yIE1TIGZpbGVuYW1lIHN5bnRheCAqLwogICAgIGlmIChfSEFWRV9TQ1JJUFRfQVJHVU1FTlQoYXJnYywgYXJndikpIHsKICAgICAgICAgd2NoYXJfdCAqcTsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKE1TX1dJTkNFKQotICAgICAgICAvKiBUaGlzIGNvZGUgaGVyZSByZXBsYWNlcyB0aGUgZmlyc3QgZWxlbWVudCBpbiBhcmd2IHdpdGggdGhlIGZ1bGwKLSAgICAgICAgcGF0aCB0aGF0IGl0IHJlcHJlc2VudHMuIFVuZGVyIENFLCB0aGVyZSBhcmUgbm8gcmVsYXRpdmUgcGF0aHMgc28KLSAgICAgICAgdGhlIGFyZ3VtZW50IG11c3QgYmUgdGhlIGZ1bGwgcGF0aCBhbnl3YXkuICovCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICAvKiBSZXBsYWNlIHRoZSBmaXJzdCBlbGVtZW50IGluIGFyZ3Ygd2l0aCB0aGUgZnVsbCBwYXRoLiAqLwogICAgICAgICB3Y2hhcl90ICpwdGVtcDsKICAgICAgICAgaWYgKEdldEZ1bGxQYXRoTmFtZVcoYXJndjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgoZnVsbHBhdGgpLApAQCAtMjE1MSw3ICsyMjgzLDcgQEAKIHN0YXRpYyBpbnQKIHN5c19weWZpbGVfd3JpdGVfdW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKmZpbGUpCiB7Ci0gICAgUHlPYmplY3QgKndyaXRlciA9IE5VTEwsICphcmdzID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKndyaXRlciA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOwogICAgIGludCBlcnI7CiAKICAgICBpZiAoZmlsZSA9PSBOVUxMKQpAQCAtMjE2MSwxMSArMjI5Myw3IEBACiAgICAgaWYgKHdyaXRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB1bmljb2RlKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3Qod3JpdGVyLCBhcmdzKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEod3JpdGVyLCB1bmljb2RlKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9IGVsc2UgewpAQCAtMjE3Nyw3ICsyMzA1LDYgQEAKICAgICBlcnIgPSAtMTsKIGZpbmFsbHk6CiAgICAgUHlfWERFQ1JFRih3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwogICAgIHJldHVybiBlcnI7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX250LmggYi9QeXRob24vdGhyZWFkX250LmgKaW5kZXggYjI5YjFiNi4uNzRhNmVlOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9udC5oCisrKyBiL1B5dGhvbi90aHJlYWRfbnQuaApAQCAtNzcsNyArNzcsNyBAQAogICAgICAgICAvKiB3YWl0IGF0IGxlYXN0IHVudGlsIHRoZSB0YXJnZXQgKi8KICAgICAgICAgRFdPUkQgbm93LCB0YXJnZXQgPSBHZXRUaWNrQ291bnQoKSArIG1pbGxpc2Vjb25kczsKICAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKLSAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIChQWV9MT05HX0xPTkcpbWlsbGlzZWNvbmRzKjEwMDApIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5Q09ORF9USU1FRFdBSVQoJm11dGV4LT5jdiwgJm11dGV4LT5jcywgKGxvbmcgbG9uZyltaWxsaXNlY29uZHMqMTAwMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gV0FJVF9GQUlMRUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNjEsMTEgKzE2MSw3IEBACiAKIC8qIHRodW5rZXIgdG8gY2FsbCBhZGFwdCBiZXR3ZWVuIHRoZSBmdW5jdGlvbiB0eXBlIHVzZWQgYnkgdGhlIHN5c3RlbSdzCiB0aHJlYWQgc3RhcnQgZnVuY3Rpb24gYW5kIHRoZSBpbnRlcm5hbGx5IHVzZWQgb25lLiAqLwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi1zdGF0aWMgRFdPUkQgV0lOQVBJCi0jZWxzZQogc3RhdGljIHVuc2lnbmVkIF9fc3RkY2FsbAotI2VuZGlmCiBib290c3RyYXAodm9pZCAqY2FsbCkKIHsKICAgICBjYWxsb2JqICpvYmogPSAoY2FsbG9iaiopY2FsbDsKQEAgLTE5MywzMiArMTg5LDE4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBvYmotPmZ1bmMgPSBmdW5jOwogICAgIG9iai0+YXJnID0gYXJnOwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0gICAgaFRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChfcHl0aHJlYWRfc3RhY2tzaXplLCBQeV9zc2l6ZV90LCBTSVpFX1QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwLCBvYmosIDAsICZ0aHJlYWRJRCk7Ci0jZWxzZQogICAgIGhUaHJlYWQgPSAoSEFORExFKV9iZWdpbnRocmVhZGV4KDAsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChfcHl0aHJlYWRfc3RhY2tzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCwgdW5zaWduZWQgaW50KSwKICAgICAgICAgICAgICAgICAgICAgICBib290c3RyYXAsIG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAwLCAmdGhyZWFkSUQpOwotI2VuZGlmCiAgICAgaWYgKGhUaHJlYWQgPT0gMCkgewotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0gICAgICAgIC8qIFNhdmUgZXJyb3IgaW4gdmFyaWFibGUsIHRvIHByZXZlbnQgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudAotICAgICAgICAgICBmcm9tIGNsb2JiZXJpbmcgaXQuICovCi0gICAgICAgIHVuc2lnbmVkIGUgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBmYWlsZWQsIHdpbjMyIGVycm9yIGNvZGUgJXVcbiIsCi0gICAgICAgICAgICAgICAgIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgZSkpOwotI2Vsc2UKICAgICAgICAgLyogSSd2ZSBzZWVuIGVycm5vID09IEVBR0FJTiBoZXJlLCB3aGljaCBtZWFucyAidGhlcmUgYXJlCiAgICAgICAgICAqIHRvbyBtYW55IHRocmVhZHMiLgogICAgICAgICAgKi8KICAgICAgICAgaW50IGUgPSBlcnJubzsKICAgICAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBmYWlsZWQsIGVycm5vICVkXG4iLAogICAgICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGUpKTsKLSNlbmRpZgogICAgICAgICB0aHJlYWRJRCA9ICh1bnNpZ25lZCktMTsKICAgICAgICAgSGVhcEZyZWUoR2V0UHJvY2Vzc0hlYXAoKSwgMCwgb2JqKTsKICAgICB9CkBAIC0yNDksMTEgKzIzMSw3IEBACiAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBleGl0KDApOwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0gICAgRXhpdFRocmVhZCgwKTsKLSNlbHNlCiAgICAgX2VuZHRocmVhZGV4KDApOwotI2VuZGlmCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9QeXRob24vdHJhY2ViYWNrLmMgYi9QeXRob24vdHJhY2ViYWNrLmMKaW5kZXggOWU3ZmUzYi4uOWY4YzU2OCAxMDA2NDQKLS0tIGEvUHl0aG9uL3RyYWNlYmFjay5jCisrKyBiL1B5dGhvbi90cmFjZWJhY2suYwpAQCAtMzIwLDcgKzMyMCw3IEBACiAgICAgaWYgKGZvYiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChiaW5hcnksICZQeUlkX2Nsb3NlLCAiIik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYmluYXJ5LCAmUHlJZF9jbG9zZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihiaW5hcnkpOwogICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0zNDAsNyArMzQwLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm9iLCAmUHlJZF9jbG9zZSwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm9iLCAmUHlJZF9jbG9zZSwgTlVMTCk7CiAgICAgaWYgKHJlcykKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgZWxzZQpAQCAtNDE4LDYgKzQxOCwxMSBAQAogewogICAgIGludCBlcnIgPSAwOwogICAgIGxvbmcgZGVwdGggPSAwOworICAgIFB5T2JqZWN0ICpsYXN0X2ZpbGUgPSBOVUxMOworICAgIGludCBsYXN0X2xpbmUgPSAtMTsKKyAgICBQeU9iamVjdCAqbGFzdF9uYW1lID0gTlVMTDsKKyAgICBsb25nIGNudCA9IDA7CisgICAgUHlPYmplY3QgKmxpbmU7CiAgICAgUHlUcmFjZWJhY2tPYmplY3QgKnRiMSA9IHRiOwogICAgIHdoaWxlICh0YjEgIT0gTlVMTCkgewogICAgICAgICBkZXB0aCsrOwpAQCAtNDI1LDE2ICs0MzAsNDEgQEAKICAgICB9CiAgICAgd2hpbGUgKHRiICE9IE5VTEwgJiYgZXJyID09IDApIHsKICAgICAgICAgaWYgKGRlcHRoIDw9IGxpbWl0KSB7Ci0gICAgICAgICAgICBlcnIgPSB0Yl9kaXNwbGF5bGluZShmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2xpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICAgICAgICAgIGlmIChsYXN0X2ZpbGUgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSA9PSBsYXN0X2ZpbGUgJiYKKyAgICAgICAgICAgICAgICBsYXN0X2xpbmUgIT0gLTEgJiYgdGItPnRiX2xpbmVubyA9PSBsYXN0X2xpbmUgJiYKKyAgICAgICAgICAgICAgICBsYXN0X25hbWUgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lID09IGxhc3RfbmFtZSkgeworICAgICAgICAgICAgICAgICAgICBjbnQrKzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoY250ID4gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIiAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgJWQgbW9yZSB0aW1lc11cbiIsIGNudC0zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChsaW5lLCBmLCBQeV9QUklOVF9SQVcpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGxhc3RfZmlsZSA9IHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lID0gdGItPnRiX2xpbmVubzsKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9uYW1lID0gdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWU7CisgICAgICAgICAgICAgICAgICAgIGNudCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNudCA8IDMpCisgICAgICAgICAgICAgICAgZXJyID0gdGJfZGlzcGxheWxpbmUoZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2xpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgZGVwdGgtLTsKICAgICAgICAgdGIgPSB0Yi0+dGJfbmV4dDsKICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAgICAgICAgZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7CiAgICAgfQorICAgIGlmIChjbnQgPiAzKSB7CisgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgJWQgbW9yZSB0aW1lc11cbiIsIGNudC0zKTsKKyAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlT2JqZWN0KGxpbmUsIGYsIFB5X1BSSU5UX1JBVyk7CisgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICB9CiAgICAgcmV0dXJuIGVycjsKIH0KIApAQCAtNDg1LDQwICs1MTUsMjYgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KIAotc3RhdGljIHZvaWQKLXJldmVyc2Vfc3RyaW5nKGNoYXIgKnRleHQsIGNvbnN0IHNpemVfdCBsZW4pCit2b2lkCitfUHlfRHVtcERlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlKQogewotICAgIGNoYXIgdG1wOwotICAgIHNpemVfdCBpLCBqOwotICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAoaT0wLCBqPWxlbi0xOyBpIDwgajsgaSsrLCBqLS0pIHsKLSAgICAgICAgdG1wID0gdGV4dFtpXTsKLSAgICAgICAgdGV4dFtpXSA9IHRleHRbal07Ci0gICAgICAgIHRleHRbal0gPSB0bXA7Ci0gICAgfQotfQorICAgIC8qIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVxdWlyZWQgZm9yIG91dHB1dCBvZiAlbGxkIG9yICVwLgorICAgICAgIFdlIG5lZWQgYXQgbW9zdCBjZWlsKGxvZzEwKDI1NikqU0laRU9GX0xPTkdfTE9ORykgZGlnaXRzLAorICAgICAgIHBsdXMgMSBmb3IgdGhlIG51bGwgYnl0ZS4gIDUzLzIyIGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2cxMCgyNTYpLiAqLworICAgIGNoYXIgYnVmZmVyWzEgKyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjUzLTEpIC8gMjIgKyAxXTsKKyAgICBjaGFyICpwdHIsICplbmQ7CiAKLS8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyA5OTk5OTldIHRvIGRlY2ltYWwsCi0gICBhbmQgd3JpdGUgaXQgaW50byB0aGUgZmlsZSBmZC4KLQotICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KLQotc3RhdGljIHZvaWQKLWR1bXBfZGVjaW1hbChpbnQgZmQsIGludCB2YWx1ZSkKLXsKLSAgICBjaGFyIGJ1ZmZlcls3XTsKLSAgICBpbnQgbGVuOwotICAgIGlmICh2YWx1ZSA8IDAgfHwgOTk5OTk5IDwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBsZW4gPSAwOworICAgIGVuZCA9ICZidWZmZXJbUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikgLSAxXTsKKyAgICBwdHIgPSBlbmQ7CisgICAgKnB0ciA9ICdcMCc7CiAgICAgZG8gewotICAgICAgICBidWZmZXJbbGVuXSA9ICcwJyArICh2YWx1ZSAlIDEwKTsKKyAgICAgICAgLS1wdHI7CisgICAgICAgIGFzc2VydChwdHIgPj0gYnVmZmVyKTsKKyAgICAgICAgKnB0ciA9ICcwJyArICh2YWx1ZSAlIDEwKTsKICAgICAgICAgdmFsdWUgLz0gMTA7Ci0gICAgICAgIGxlbisrOwogICAgIH0gd2hpbGUgKHZhbHVlKTsKLSAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7Ci0gICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIGJ1ZmZlciwgbGVuKTsKKworICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBwdHIsIGVuZCAtIHB0cik7CiB9CiAKIC8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAweGZmZmZmZmZmXSB0byBoZXhhZGVjaW1hbCBvZiAnd2lkdGgnIGRpZ2l0cywKQEAgLTUyNiwyNyArNTQyLDMxIEBACiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKLXN0YXRpYyB2b2lkCi1kdW1wX2hleGFkZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgaW50IHdpZHRoKQordm9pZAorX1B5X0R1bXBIZXhhZGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIFB5X3NzaXplX3Qgd2lkdGgpCiB7Ci0gICAgaW50IGxlbjsKLSAgICBjaGFyIGJ1ZmZlcltzaXplb2YodW5zaWduZWQgbG9uZykgKiAyICsgMV07Ci0gICAgbGVuID0gMDsKKyAgICBjaGFyIGJ1ZmZlcltzaXplb2YodW5zaWduZWQgbG9uZykgKiAyICsgMV0sICpwdHIsICplbmQ7CisgICAgY29uc3QgUHlfc3NpemVfdCBzaXplID0gUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikgLSAxOworCisgICAgaWYgKHdpZHRoID4gc2l6ZSkKKyAgICAgICAgd2lkdGggPSBzaXplOworICAgIC8qIGl0J3Mgb2sgaWYgd2lkdGggaXMgbmVnYXRpdmUgKi8KKworICAgIGVuZCA9ICZidWZmZXJbc2l6ZV07CisgICAgcHRyID0gZW5kOworICAgICpwdHIgPSAnXDAnOwogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyW2xlbl0gPSBQeV9oZXhkaWdpdHNbdmFsdWUgJiAxNV07CisgICAgICAgIC0tcHRyOworICAgICAgICBhc3NlcnQocHRyID49IGJ1ZmZlcik7CisgICAgICAgICpwdHIgPSBQeV9oZXhkaWdpdHNbdmFsdWUgJiAxNV07CiAgICAgICAgIHZhbHVlID4+PSA0OwotICAgICAgICBsZW4rKzsKLSAgICB9IHdoaWxlIChsZW4gPCB3aWR0aCB8fCB2YWx1ZSk7Ci0gICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CisgICAgfSB3aGlsZSAoKGVuZCAtIHB0cikgPCB3aWR0aCB8fCB2YWx1ZSk7CisKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgcHRyLCBlbmQgLSBwdHIpOwogfQogCi0vKiBXcml0ZSBhbiB1bmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGZkIHVzaW5nIGFzY2lpK2JhY2tzbGFzaHJlcGxhY2UuCi0KLSAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCi0KLXN0YXRpYyB2b2lkCi1kdW1wX2FzY2lpKGludCBmZCwgUHlPYmplY3QgKnRleHQpCit2b2lkCitfUHlfRHVtcEFTQ0lJKGludCBmZCwgUHlPYmplY3QgKnRleHQpCiB7CiAgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKXRleHQ7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwpAQCAtNTU2LDMyICs1NzYsMzYgQEAKICAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKICAgICBQeV9VQ1M0IGNoOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodGV4dCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHNpemUgPSBhc2NpaS0+bGVuZ3RoOwogICAgIGtpbmQgPSBhc2NpaS0+c3RhdGUua2luZDsKLSAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpIHsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICB3c3RyID0gKChQeUFTQ0lJT2JqZWN0ICopdGV4dCktPndzdHI7CisgICAgICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNpemUgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKil0ZXh0KS0+d3N0cl9sZW5ndGg7CisgICAgfQorICAgIGVsc2UgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CiAgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpCiAgICAgICAgICAgICBkYXRhID0gKChQeUFTQ0lJT2JqZWN0Kil0ZXh0KSArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRhdGEgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKXRleHQpICsgMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgIGVsc2UgewogICAgICAgICBkYXRhID0gKChQeVVuaWNvZGVPYmplY3QgKil0ZXh0KS0+ZGF0YS5hbnk7CiAgICAgICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICB3c3RyID0gKChQeUFTQ0lJT2JqZWN0ICopdGV4dCktPndzdHI7Ci0gICAgICAgIGlmICh3c3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNpemUgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKil0ZXh0KS0+d3N0cl9sZW5ndGg7Ci0gICAgfQogCiAgICAgaWYgKE1BWF9TVFJJTkdfTEVOR1RIIDwgc2l6ZSkgewogICAgICAgICBzaXplID0gTUFYX1NUUklOR19MRU5HVEg7CiAgICAgICAgIHRydW5jYXRlZCA9IDE7CiAgICAgfQotICAgIGVsc2UKKyAgICBlbHNlIHsKICAgICAgICAgdHJ1bmNhdGVkID0gMDsKKyAgICB9CiAKICAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKQEAgLTU5NSwxOSArNjE5LDIwIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZikgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxceCIpOwotICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDIpOworICAgICAgICAgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwgY2gsIDIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmZmZikgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxcdSIpOwotICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDQpOworICAgICAgICAgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwgY2gsIDQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxcVSIpOwotICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDgpOworICAgICAgICAgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwgY2gsIDgpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICh0cnVuY2F0ZWQpCisgICAgaWYgKHRydW5jYXRlZCkgewogICAgICAgICBQVVRTKGZkLCAiLi4uIik7CisgICAgfQogfQogCiAvKiBXcml0ZSBhIGZyYW1lIGludG8gdGhlIGZpbGUgZmQ6ICJGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiB4eHgiLgpAQCAtNjI2LDcgKzY1MSw3IEBACiAgICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19maWxlbmFtZSkpCiAgICAgewogICAgICAgICBQVVRTKGZkLCAiXCIiKTsKLSAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICBfUHlfRHVtcEFTQ0lJKGZkLCBjb2RlLT5jb19maWxlbmFtZSk7CiAgICAgICAgIFBVVFMoZmQsICJcIiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKQEAgLTYzNSwxNCArNjYwLDIxIEBACiAgICAgLyogUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgd2FzIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuNy4wIGFuZCAzLjIuMCAqLwogICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoY29kZSwgZnJhbWUtPmZfbGFzdGkpOwogICAgIFBVVFMoZmQsICIsIGxpbmUgIik7Ci0gICAgZHVtcF9kZWNpbWFsKGZkLCBsaW5lbm8pOworICAgIGlmIChsaW5lbm8gPj0gMCkgeworICAgICAgICBfUHlfRHVtcERlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKWxpbmVubyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CisgICAgfQogICAgIFBVVFMoZmQsICIgaW4gIik7CiAKICAgICBpZiAoY29kZSAhPSBOVUxMICYmIGNvZGUtPmNvX25hbWUgIT0gTlVMTAotICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fbmFtZSkpCi0gICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX25hbWUpOwotICAgIGVsc2UKKyAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fbmFtZSkpIHsKKyAgICAgICAgX1B5X0R1bXBBU0NJSShmZCwgY29kZS0+Y29fbmFtZSk7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CisgICAgfQogCiAgICAgUFVUUyhmZCwgIlxuIik7CiB9CkBAIC02OTgsNyArNzMwLDkgQEAKICAgICAgICAgUFVUUyhmZCwgIkN1cnJlbnQgdGhyZWFkIDB4Iik7CiAgICAgZWxzZQogICAgICAgICBQVVRTKGZkLCAiVGhyZWFkIDB4Iik7Ci0gICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsIHNpemVvZih1bnNpZ25lZCBsb25nKSoyKTsKKyAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodW5zaWduZWQgbG9uZykgKiAyKTsKICAgICBQVVRTKGZkLCAiIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbiIpOwogfQogCkBAIC03MTAsMTEgKzc0NCw1NiBAQAogICAgaGFuZGxlcnMgaWYgc2lnbmFscyB3ZXJlIHJlY2VpdmVkLiAqLwogY29uc3QgY2hhcioKIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKQorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdHN0YXRlKQogewogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICB1bnNpZ25lZCBpbnQgbnRocmVhZHM7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygpIGlzIGNhbGxlZCBmcm9tIHNpZ25hbCBoYW5kbGVycyBieQorICAgICAgICAgICBmYXVsdGhhbmRsZXIuCisKKyAgICAgICAgICAgU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBhcmUgc3luY2hyb25vdXMgc2lnbmFscworICAgICAgICAgICBhbmQgYXJlIHRodXMgZGVsaXZlcmVkIHRvIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlIGZhdWx0LiBHZXQgdGhlCisgICAgICAgICAgIFB5dGhvbiB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorCisgICAgICAgICAgIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkCisgICAgICAgICAgIHRoZSBmYXVsdCBpZiB0aGUgdGhyZWFkIHJlbGVhc2VkIHRoZSBHSUwsIGFuZCBzbyB0aGlzIGZ1bmN0aW9uCisgICAgICAgICAgIGNhbm5vdCBiZSB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCisgICAgICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCisgICAgICAgIGN1cnJlbnRfdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKKyAgICB9CisKKyAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGludGVycCA9IF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUoKTsKKyAgICAgICAgICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIFdlIG5lZWQgdGhlIGludGVycHJldGVyIHN0YXRlIHRvIGdldCBQeXRob24gdGhyZWFkcyAqLworICAgICAgICAgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50ZXJwID0gY3VycmVudF90c3RhdGUtPmludGVycDsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogQ2FsbCBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKSBpbnN0ZWFkIG9mIFB5VGhyZWFkU3RhdGVfR2V0KCkKKyAgICAgICAgICAgdG8gbm90IGZhaWwgd2l0aCBhIGZhdGFsIGVycm9yIGlmIHRoZSB0aHJlYWQgc3RhdGUgaXMgTlVMTC4gKi8KKyAgICAgICAgY3VycmVudF90c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKKyAgICB9CisKKyAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFdlIG5lZWQgdGhlIGludGVycHJldGVyIHN0YXRlIHRvIGdldCBQeXRob24gdGhyZWFkcyAqLworICAgICAgICAgICAgcmV0dXJuICJ1bmFibGUgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZSI7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJwID0gY3VycmVudF90c3RhdGUtPmludGVycDsKKyAgICB9CisjZW5kaWYKKyAgICBhc3NlcnQoaW50ZXJwICE9IE5VTEwpOworCiAgICAgLyogR2V0IHRoZSBjdXJyZW50IGludGVycHJldGVyIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkICovCiAgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKICAgICBpZiAodHN0YXRlID09IE5VTEwpCkBAIC03MzIsNyArODExLDcgQEAKICAgICAgICAgICAgIFBVVFMoZmQsICIuLi5cbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgd3JpdGVfdGhyZWFkX2lkKGZkLCB0c3RhdGUsIHRzdGF0ZSA9PSBjdXJyZW50X3RocmVhZCk7CisgICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90c3RhdGUpOwogICAgICAgICBkdW1wX3RyYWNlYmFjayhmZCwgdHN0YXRlLCAwKTsKICAgICAgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXh0KHRzdGF0ZSk7CiAgICAgICAgIG50aHJlYWRzKys7CmRpZmYgLS1naXQgYS9QeXRob24vd29yZGNvZGVfaGVscGVycy5oIGIvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGUzYTkxCi0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaApAQCAtMCwwICsxLDQxIEBACisvKiBUaGlzIGZpbGUgY29udGFpbnMgY29kZSBzaGFyZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCB0aGUgcGVlcGhvbGUKKyAgIG9wdGltaXplci4KKyAqLworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisjICBkZWZpbmUgUEFDS09QQVJHKG9wY29kZSwgb3BhcmcpICgoX1B5X0NPREVVTklUKSgoKG9wY29kZSkgPDwgOCkgfCAob3BhcmcpKSkKKyNlbHNlCisjICBkZWZpbmUgUEFDS09QQVJHKG9wY29kZSwgb3BhcmcpICgoX1B5X0NPREVVTklUKSgoKG9wYXJnKSA8PCA4KSB8IChvcGNvZGUpKSkKKyNlbmRpZgorCisvKiBNaW5pbXVtIG51bWJlciBvZiBjb2RlIHVuaXRzIG5lY2Vzc2FyeSB0byBlbmNvZGUgaW5zdHJ1Y3Rpb24gd2l0aAorICAgRVhURU5ERURfQVJHcyAqLworc3RhdGljIGludAoraW5zdHJzaXplKHVuc2lnbmVkIGludCBvcGFyZykKK3sKKyAgICByZXR1cm4gb3BhcmcgPD0gMHhmZiA/IDEgOgorICAgICAgICBvcGFyZyA8PSAweGZmZmYgPyAyIDoKKyAgICAgICAgb3BhcmcgPD0gMHhmZmZmZmYgPyAzIDoKKyAgICAgICAgNDsKK30KKworLyogU3BpdHMgb3V0IG9wL29wYXJnIHBhaXIgdXNpbmcgaWxlbiBieXRlcy4gY29kZXN0ciBzaG91bGQgYmUgcG9pbnRlZCBhdCB0aGUKKyAgIGRlc2lyZWQgbG9jYXRpb24gb2YgdGhlIGZpcnN0IEVYVEVOREVEX0FSRyAqLworc3RhdGljIHZvaWQKK3dyaXRlX29wX2FyZyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgIHVuc2lnbmVkIGludCBvcGFyZywgaW50IGlsZW4pCit7CisgICAgc3dpdGNoIChpbGVuKSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcoRVhURU5ERURfQVJHLCAob3BhcmcgPj4gMjQpICYgMHhmZik7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcoRVhURU5ERURfQVJHLCAob3BhcmcgPj4gMTYpICYgMHhmZik7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcoRVhURU5ERURfQVJHLCAob3BhcmcgPj4gOCkgJiAweGZmKTsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnICYgMHhmZik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggNDE0YjY1OC4uMDliOGIzNCAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw1ICsxLDUgQEAKLVRoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy41LjMgcmVsZWFzZSBjYW5kaWRhdGUgMQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNi4wIGJldGEgMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLAogMjAxMiwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOCw5ICsyOCw5IEBACiBlbHNld2hlcmUgaXQncyBqdXN0IHB5dGhvbi4KIAogT24gTWFjIE9TIFgsIGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgUHl0aG9uIHdpdGggLS1lbmFibGUtZnJhbWV3b3JrLCB5b3Ugc2hvdWxkCi11c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzCi10aGUgUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkKLXdhbnQgdG8gc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KK3VzZSAibWFrZSBmcmFtZXdvcmtpbnN0YWxsIiB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaW5zdGFsbHMgdGhlCitQeXRob24gZXhlY3V0YWJsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IG5vcm1hbGx5IG9uIHlvdXIgUEFUSCwgeW91IG1heSB3YW50IHRvCitzZXQgdXAgYSBzeW1saW5rIGluIC91c3IvbG9jYWwvYmluLgogCiBPbiBXaW5kb3dzLCBzZWUgUENidWlsZC9yZWFkbWUudHh0LgogCkBAIC04OSw5ICs4OSw5IEBACiAtLS0tLS0tLS0tCiAKIFdlIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgotUHl0aG9uIDMuNSIgZG9jdW1lbnQsIGZvdW5kIGF0CitQeXRob24gMy42IiBkb2N1bWVudCwgZm91bmQgYXQKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3LzMuNS5odG1sCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L3doYXRzbmV3LzMuNi5odG1sCiAKIEZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywKIGlzIGluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43CkBAIC0xMDQsOSArMTA0LDkgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNSBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CitEb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy42IGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41LworICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC0xMTYsNyArMTE2LDcgQEAKIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIGRldmVsb3BtZW50IG9mIFB5dGhvbiwgcmVsZXZhbnQKIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0OgogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KIAogRm9yIGluZm9ybWF0aW9uIGFib3V0IGJ1aWxkaW5nIFB5dGhvbidzIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIERvYy9SRUFETUUudHh0LgogCkBAIC0xMzEsNyArMTMxLDcgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogVGVzdGluZwpAQCAtMTYxLDE2ICsxNjEsMTYgQEAKIAogT24gVW5peCBhbmQgTWFjIHN5c3RlbXMgaWYgeW91IGludGVuZCB0byBpbnN0YWxsIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbgogdXNpbmcgdGhlIHNhbWUgaW5zdGFsbGF0aW9uIHByZWZpeCAoLS1wcmVmaXggYXJndW1lbnQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQpCi15b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5Ci10aGUgaW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZAotdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKLXNpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzCi10byAke3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZwotdGhlIHNhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiCi12ZXJzaW9uLiAgSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlcgotdmVyc2lvbnMgdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIuCit5b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5IHRoZQoraW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZCB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKK3NpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzIHRvCiske3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZyB0aGUKK3NhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiIHZlcnNpb24uCitJbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyIHZlcnNpb25zIHVzaW5nCisibWFrZSBhbHRpbnN0YWxsIi4KIAotRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjUgd2l0aCAyLjcgYmVpbmcgdGhlCitGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi42LCAyLjcgYW5kIDMuNiB3aXRoIDIuNyBiZWluZyB0aGUKIHByaW1hcnkgdmVyc2lvbiwgeW91IHdvdWxkIGV4ZWN1dGUgIm1ha2UgaW5zdGFsbCIgaW4geW91ciAyLjcgYnVpbGQgZGlyZWN0b3J5CiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgaW4gdGhlIG90aGVycy4KIApAQCAtMTgxLDcgKzE4MSw3IEBACiBXZSdyZSBzb2xpY2l0aW5nIGJ1ZyByZXBvcnRzIGFib3V0IGFsbCBhc3BlY3RzIG9mIHRoZSBsYW5ndWFnZS4gIEZpeGVzIGFyZSBhbHNvCiB3ZWxjb21lLCBwcmVmZXJhYmx5IGluIHVuaWZpZWQgZGlmZiBmb3JtYXQuICBQbGVhc2UgdXNlIHRoZSBpc3N1ZSB0cmFja2VyOgogCi0gICAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8KKyAgICBodHRwczovL2J1Z3MucHl0aG9uLm9yZy8KIAogSWYgeW91J3JlIG5vdCBzdXJlIHdoZXRoZXIgeW91J3JlIGRlYWxpbmcgd2l0aCBhIGJ1ZyBvciBhIGZlYXR1cmUsIHVzZSB0aGUKIG1haWxpbmcgbGlzdDoKQEAgLTE5MCwyMyArMTkwLDIzIEBACiAKIFRvIHN1YnNjcmliZSB0byB0aGUgbGlzdCwgdXNlIHRoZSBtYWlsbWFuIGZvcm06CiAKLSAgICBodHRwOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWRldi8KKyAgICBodHRwczovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCiAKIAogUHJvcG9zYWxzIGZvciBlbmhhbmNlbWVudAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBJZiB5b3UgaGF2ZSBhIHByb3Bvc2FsIHRvIGNoYW5nZSBQeXRob24sIHlvdSBtYXkgd2FudCB0byBzZW5kIGFuIGVtYWlsIHRvIHRoZQotY29tcC5sYW5nLnB5dGhvbiBvciBweXRob24taWRlYXMgbWFpbGluZyBsaXN0cyBmb3IgaW5pdGFsIGZlZWRiYWNrLiAgQSBQeXRob24KK2NvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRpYWwgZmVlZGJhY2suICBBIFB5dGhvbgogRW5oYW5jZW1lbnQgUHJvcG9zYWwgKFBFUCkgbWF5IGJlIHN1Ym1pdHRlZCBpZiB5b3VyIGlkZWEgZ2FpbnMgZ3JvdW5kLiAgQWxsCiBjdXJyZW50IFBFUHMsIGFzIHdlbGwgYXMgZ3VpZGVsaW5lcyBmb3Igc3VibWl0dGluZyBhIG5ldyBQRVAsIGFyZSBsaXN0ZWQgYXQKLWh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCitodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzLy4KIAogCiBSZWxlYXNlIFNjaGVkdWxlCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVNlZSBQRVAgNDc4IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3OC8KK1NlZSBQRVAgNDk0IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0OTQvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCkBAIC0yMzAsMyArMjMwLDQgQEAKIGNvZGUgYnV0IHRoZXNlIGFyZSBlbnRpcmVseSBvcHRpb25hbC4KIAogQWxsIHRyYWRlbWFya3MgcmVmZXJlbmNlZCBoZXJlaW4gYXJlIHByb3BlcnR5IG9mIHRoZWlyIHJlc3BlY3RpdmUgaG9sZGVycy4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzc0MDdiLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxidWlsZC5iYXQgLWQgLWUgLWsgLXAgeDY0DQotY2FsbCAiJX5kcDBidWlsZC5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUzYzdjMS4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNsZWFuIiBzdGVwLg0KLUBlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLg0KLUBlY2hvIFRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhpcyBzY3JpcHQsIHVzZSBgY2xlYW4uYmF0YCBmcm9tIHRoaXMNCi1AZWNobyBkaXJlY3RvcnkgYW5kIHBhc3MgYC1wIHg2NGAgYXMgdHdvIGFyZ3VtZW50cy4NCi1jYWxsICIlfmRwMGNsZWFuLmJhdCIgLXAgeDY0ICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CmluZGV4IDBmYzY4ZmQuLjEzZTY2NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKQEAgLTE0LDMgKzE0LDQgQEAKIA0KIGVjaG8gRGVsZXRpbmcgdGVzdCBsZWZ0b3ZlcnMgLi4uDQogcm1kaXIgL3MgL3EgIiVyb290JVxidWlsZCINCitkZWwgL3MgIiVwY2J1aWxkJVxweXRob24qLnppcCINCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWVmMDUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBQbGVhc2UgdXNlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgaW5zdGVhZC4NCi1AIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWVmMDUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBQbGVhc2UgdXNlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgaW5zdGVhZC4NCi1AIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDgzMjljLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QtYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJ0ZXN0IiBzdGVwLg0KLUBlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLg0KLUBlY2hvIFRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhpcyBzY3JpcHQsIHVzZQ0KLUBlY2hvICAgICBQQ2J1aWxkXHJ0LmJhdCAtcSAtZCAteDY0IC11YWxsIC1yd1cNCi1AZWNobyBvciB1c2UgYHRlc3QuYmF0YCBpbiB0aGlzIGRpcmVjdG9yeSBhbmQgcGFzcyBgLXg2NGAgYXMgYW4gYXJndW1lbnQuDQotY2FsbCAiJX5kcDB0ZXN0LmJhdCIgLXg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKaW5kZXggZmY3ZDE2Ny4uYTMyZDM4YiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKQEAgLTQsNyArNCw3IEBACiANCiBzZXQgaGVyZT0lfmRwMA0KIHNldCBydF9vcHRzPS1xIC1kDQotc2V0IHJlZ3J0ZXN0X2FyZ3M9DQorc2V0IHJlZ3J0ZXN0X2FyZ3M9LWoxDQogDQogOkNoZWNrT3B0cw0KIGlmICIlMSI9PSIteDY0IiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCkBAIC0xNiw0ICsxNiw0IEBACiBpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdF9hcmdzPSVyZWdydGVzdF9hcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQogZWNobyBvbg0KLWNhbGwgIiVoZXJlJS4uXC4uXFBDYnVpbGRccnQuYmF0IiAlcnRfb3B0cyUgLXVhbGwgLXJ3VyAtLXRpbWVvdXQ9MzYwMCAlcmVncnRlc3RfYXJncyUNCitjYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS1zbG93ZXN0IC0tdGltZW91dD0xMjAwICVyZWdydGVzdF9hcmdzJQ0KZGlmZiAtLWdpdCBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgYi9Ub29scy9jbGluaWMvY2xpbmljLnB5CmluZGV4IGY2MTVlZDkuLjc1YWM2NzMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKKysrIGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQpAQCAtNjQ0LDcgKzY0NCw3IEBACiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCiAKLSAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtZXRlcnMgYW5kIChwYXJhbWV0ZXJzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtZXRlcnMgYW5kIHBhcmFtZXRlcnNbLTFdLmlzX3Bvc2l0aW9uYWxfb25seSgpCiAgICAgICAgIGFsbF9ib3Jpbmdfb2JqZWN0cyA9IEZhbHNlICMgeWVzLCB0aGlzIHdpbGwgYmUgZmFsc2UgaWYgdGhlcmUgYXJlIDAgcGFyYW1ldGVycywgaXQncyBmaW5lCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHBhcmFtZXRlcnMpCiAgICAgICAgIGZvciBpLCBwIGluIGVudW1lcmF0ZShwYXJhbWV0ZXJzKToKQEAgLTY2MSw3ICs2NjEsNyBAQAogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAKICAgICAgICAgbWV0aF9vID0gKGxlbihwYXJhbWV0ZXJzKSA9PSAxIGFuZAotICAgICAgICAgICAgICBwYXJhbWV0ZXJzWzBdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGFuZAorICAgICAgICAgICAgICBwYXJhbWV0ZXJzWzBdLmlzX3Bvc2l0aW9uYWxfb25seSgpIGFuZAogICAgICAgICAgICAgICBub3QgY29udmVydGVyc1swXS5pc19vcHRpb25hbCgpIGFuZAogICAgICAgICAgICAgICBub3QgbmV3X29yX2luaXQpCiAKQEAgLTcwNSw2ICs3MDUsMTEgQEAKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKICAgICAgICAgICAgICIiIikKIAorICAgICAgICBwYXJzZXJfcHJvdG90eXBlX2Zhc3RjYWxsID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgorICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCisgICAgICAgICAgICAiIiIpCisKICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV92YXJhcmdzID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgogICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0ICphcmdzKQpAQCAtNzQzLDcgKzc0OCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIG91dHB1dCgpCiAKICAgICAgICAgZGVmIGluc2VydF9rZXl3b3JkcyhzKToKLSAgICAgICAgICAgIHJldHVybiBsaW5lYXJfZm9ybWF0KHMsIGRlY2xhcmF0aW9ucz0ic3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG57ZGVjbGFyYXRpb25zfSIpCisgICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9CisgICAgICAgICAgICAgICAgJ3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7e3trZXl3b3Jkc30sIE5VTEx9fTtcbicKKyAgICAgICAgICAgICAgICAnc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHt7Intmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywgMH19O1xuJworICAgICAgICAgICAgICAgICd7ZGVjbGFyYXRpb25zfScpCiAKICAgICAgICAgaWYgbm90IHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAjIG5vIHBhcmFtZXRlcnMsIE1FVEhfTk9BUkdTCkBAIC03OTcsOCArODA1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgIiIiICUgYXJnbmFtZSkKIAogICAgICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUsIGluZGVudD00KSkKIAogICAgICAgICBlbGlmIGhhc19vcHRpb25fZ3JvdXBzOgpAQCAtODIyLDggKzgzMSw5IEBACiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIntuYW1lfSIsCiAgICAgICAgICAgICAgICAgICAgIHt1bnBhY2tfbWlufSwge3VucGFja19tYXh9LAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBwb3NpdGlvbmFsOgpAQCAtODM1LDEwICs4NDUsMjQgQEAKIAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKIAorICAgICAgICBlbGlmIG5vdCBuZXdfb3JfaW5pdDoKKyAgICAgICAgICAgIGZsYWdzID0gIk1FVEhfRkFTVENBTEwiCisKKyAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX2Zhc3RjYWxsCisKKyAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7eworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfX0KKyAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KQorICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBib2R5KQorICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBpbnNlcnRfa2V5d29yZHMocGFyc2VyX2RlZmluaXRpb24pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIHBvc2l0aW9uYWwtb3Ita2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgICAgIGZsYWdzID0gIk1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTIgpAQCAtODQ2LDE1ICs4NzAsMTIgQEAKICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX2tleXdvcmQKIAogICAgICAgICAgICAgYm9keSA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICAiIiIsIGluZGVudD00KQotICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQorICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogCiAKQEAgLTg3OCwxMyArODk5LDE1IEBACiAKICAgICAgICAgICAgIGlmIG5vdCBwYXJzZXNfa2V5d29yZHM6CiAgICAgICAgICAgICAgICAgZmllbGRzLmluc2VydCgwLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKQorICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vS2V5d29yZHMoIntuYW1lfSIsIGt3YXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJzZXNfcG9zaXRpb25hbDoKICAgICAgICAgICAgICAgICAgICAgZmllbGRzLmluc2VydCgwLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJ7bmFtZX0iLCBhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJ7bmFtZX0iLCBhcmdzKSkge3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgKmZpZWxkcykKQEAgLTEwMzIsOCArMTA1NSw5IEBACiAKICAgICAgICAgICAgIHMgPSAiIiIKICAgICBjYXNlIHtjb3VudH06Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfX0KICAgICAgICAge2dyb3VwX2Jvb2xlYW5zfQogICAgICAgICBicmVhazsKICIiIlsxOl0KQEAgLTEwNjcsNyArMTA5MSw3IEBACiAKICAgICAgICAgbGFzdF9ncm91cCA9IDAKICAgICAgICAgZmlyc3Rfb3B0aW9uYWwgPSBsZW4oc2VsZmxlc3MpCi0gICAgICAgIHBvc2l0aW9uYWwgPSBzZWxmbGVzcyBhbmQgc2VsZmxlc3NbLTFdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZCisgICAgICAgIHBvc2l0aW9uYWwgPSBzZWxmbGVzcyBhbmQgc2VsZmxlc3NbLTFdLmlzX3Bvc2l0aW9uYWxfb25seSgpCiAgICAgICAgIG5ld19vcl9pbml0ID0gZi5raW5kIGluIChNRVRIT0RfTkVXLCBNRVRIT0RfSU5JVCkKICAgICAgICAgZGVmYXVsdF9yZXR1cm5fY29udmVydGVyID0gKG5vdCBmLnJldHVybl9jb252ZXJ0ZXIgb3IKICAgICAgICAgICAgIGYucmV0dXJuX2NvbnZlcnRlci50eXBlID09ICdQeU9iamVjdCAqJykKQEAgLTEyMTYsNyArMTI0MCw3IEBACiAKIGRlZiBjcmVhdGVfcmVnZXgoYmVmb3JlLCBhZnRlciwgd29yZD1UcnVlLCB3aG9sZV9saW5lPVRydWUpOgogICAgICIiIkNyZWF0ZSBhbiByZSBvYmplY3QgZm9yIG1hdGNoaW5nIG1hcmtlciBsaW5lcy4iIiIKLSAgICBncm91cF9yZSA9ICJcdysiIGlmIHdvcmQgZWxzZSAiLisiCisgICAgZ3JvdXBfcmUgPSByIlx3KyIgaWYgd29yZCBlbHNlICIuKyIKICAgICBwYXR0ZXJuID0gcid7fSh7fSl7fScKICAgICBpZiB3aG9sZV9saW5lOgogICAgICAgICBwYXR0ZXJuID0gJ14nICsgcGF0dGVybiArICckJwpAQCAtMjM1OSw3ICsyMzgzLDEwIEBACiAgICAgICAgICAgICBkYXRhLm1vZGlmaWNhdGlvbnMuYXBwZW5kKCcvKiBtb2RpZmljYXRpb25zIGZvciAnICsgbmFtZSArICcgKi9cbicgKyBtb2RpZmljYXRpb25zLnJzdHJpcCgpKQogCiAgICAgICAgICMga2V5d29yZHMKLSAgICAgICAgZGF0YS5rZXl3b3Jkcy5hcHBlbmQocGFyYW1ldGVyLm5hbWUpCisgICAgICAgIGlmIHBhcmFtZXRlci5pc19wb3NpdGlvbmFsX29ubHkoKToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKCcnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YS5rZXl3b3Jkcy5hcHBlbmQocGFyYW1ldGVyLm5hbWUpCiAKICAgICAgICAgIyBmb3JtYXRfdW5pdHMKICAgICAgICAgaWYgc2VsZi5pc19vcHRpb25hbCgpIGFuZCAnfCcgbm90IGluIGRhdGEuZm9ybWF0X3VuaXRzOgpAQCAtMjU3MiwyMSArMjU5OSwyMSBAQAogICAgICAgICBpZiBub3QgYml0d2lzZToKICAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIGxvbmdzIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAotY2xhc3MgUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ1BZX0xPTkdfTE9ORycKK2NsYXNzIGxvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnTCcKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCi1jbGFzcyB1bnNpZ25lZF9QWV9MT05HX0xPTkdfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAndW5zaWduZWQgUFlfTE9OR19MT05HJworY2xhc3MgdW5zaWduZWRfbG9uZ19sb25nX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ3Vuc2lnbmVkIGxvbmcgbG9uZycKICAgICBkZWZhdWx0X3R5cGUgPSBpbnQKICAgICBmb3JtYXRfdW5pdCA9ICdLJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIjAiCiAKICAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYml0d2lzZT1GYWxzZSk6CiAgICAgICAgIGlmIG5vdCBiaXR3aXNlOgotICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgUFlfTE9OR19MT05HcyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCisgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25nIGxvbmcgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQogCiBjbGFzcyBQeV9zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5X3NzaXplX3QnCkBAIC0yNjc2LDcgKzI3MDMsNyBAQAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmVuY29kaW5nOgogICAgICAgICAgICAgbmFtZSA9IGVuc3VyZV9sZWdhbF9jX2lkZW50aWZpZXIoc2VsZi5uYW1lKQotICAgICAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIilcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpIHtcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG59XG4iXSkKIAogIwogIyBUaGlzIGlzIHRoZSBmb3VydGggb3IgZmlmdGggcmV3cml0ZSBvZiByZWdpc3RlcmluZyBhbGwgdGhlCkBAIC0yNzg2LDcgKzI4MTMsNyBAQAogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopXG4gICBQeUJ1ZmZlcl9SZWxlYXNlKCYiLCBuYW1lLCAiKTtcbiJdKQorICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiLm9iaikge1xuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG59XG4iXSkKIAogCiBkZWYgY29ycmVjdF9uYW1lX2Zvcl9zZWxmKGYpOgpAQCAtMjk1OSwxMCArMjk4NiwxMCBAQAogICAgICAgICBkYXRhLnJldHVybl92YWx1ZSA9IG5hbWUKIAogICAgIGRlZiBlcnJfb2NjdXJyZWRfaWYoc2VsZiwgZXhwciwgZGF0YSk6Ci0gICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoKHt9KSAmJiBQeUVycl9PY2N1cnJlZCgpKVxuICAgIGdvdG8gZXhpdDtcbicuZm9ybWF0KGV4cHIpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkge3tcbiAgICBnb3RvIGV4aXQ7XG59fVxuJy5mb3JtYXQoZXhwcikpCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmX251bGxfcG9pbnRlcihzZWxmLCB2YXJpYWJsZSwgZGF0YSk6Ci0gICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoe30gPT0gTlVMTClcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdCh2YXJpYWJsZSkpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoe30gPT0gTlVMTCkge3tcbiAgICBnb3RvIGV4aXQ7XG59fVxuJy5mb3JtYXQodmFyaWFibGUpKQogCiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgICIiIgpAQCAtMjk3Nyw4ICszMDA0LDkgQEAKICAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKICAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCcnJwotaWYgKF9yZXR1cm5fdmFsdWUgIT0gUHlfTm9uZSkKK2lmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpIHsKICAgICBnb3RvIGV4aXQ7Cit9CiByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogUHlfSU5DUkVGKFB5X05vbmUpOwogJycnLnN0cmlwKCkpCkBAIC0zMTgzLDYgKzMyMTEsNyBAQAogICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5zdGF0ZV9kc2xfc3RhcnQKICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfaW5kZW50ID0gTm9uZQogICAgICAgICBzZWxmLmtleXdvcmRfb25seSA9IEZhbHNlCisgICAgICAgIHNlbGYucG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKICAgICAgICAgc2VsZi5ncm91cCA9IDAKICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3N0YXJ0CiAgICAgICAgIHNlbGYuc2Vlbl9wb3NpdGlvbmFsX3dpdGhfZGVmYXVsdCA9IEZhbHNlCkBAIC0zNTYxLDggKzM1OTAsOCBAQAogICAgICMgInBhcmFtZXRlcl9zdGF0ZSIuICAoUHJldmlvdXNseSB0aGUgY29kZSB3YXMgYSBtaWFzbWEgb2YgaWZzIGFuZAogICAgICMgc2VwYXJhdGUgYm9vbGVhbiBzdGF0ZSB2YXJpYWJsZXMuKSAgVGhlIHN0YXRlcyBhcmU6CiAgICAgIwotICAgICMgIFsgWyBhLCBiLCBdIGMsIF0gZCwgZSwgZj0zLCBbIGcsIGgsIFsgaSBdIF0gLyAgIDwtIGxpbmUKLSAgICAjIDAxICAgMiAgICAgICAgICAzICAgICAgIDQgICAgNSAgICAgICAgICAgNiAgIDcgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucworICAgICMgIFsgWyBhLCBiLCBdIGMsIF0gZCwgZSwgZj0zLCBbIGcsIGgsIFsgaSBdIF0gICA8LSBsaW5lCisgICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICAgIDwtIHN0YXRlIHRyYW5zaXRpb25zCiAgICAgIwogICAgICMgMDogcHNfc3RhcnQuICBiZWZvcmUgd2UndmUgc2VlbiBhbnl0aGluZy4gIGxlZ2FsIHRyYW5zaXRpb25zIGFyZSB0byAxIG9yIDMuCiAgICAgIyAxOiBwc19sZWZ0X3NxdWFyZV9iZWZvcmUuICBsZWZ0IHNxdWFyZSBicmFja2V0cyBiZWZvcmUgcmVxdWlyZWQgcGFyYW1ldGVycy4KQEAgLTM1NzMsOSArMzYwMiw4IEBACiAgICAgIyAgICBub3cgbXVzdCBoYXZlIGRlZmF1bHQgdmFsdWVzLgogICAgICMgNTogcHNfZ3JvdXBfYWZ0ZXIuICBpbiBhIGdyb3VwLCBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgogICAgICMgNjogcHNfcmlnaHRfc3F1YXJlX2FmdGVyLiAgcmlnaHQgc3F1YXJlIGJyYWNrZXRzIGFmdGVyIHJlcXVpcmVkIHBhcmFtZXRlcnMuCi0gICAgIyA3OiBwc19zZWVuX3NsYXNoLiAgc2VlbiBzbGFzaC4KICAgICBwc19zdGFydCwgcHNfbGVmdF9zcXVhcmVfYmVmb3JlLCBwc19ncm91cF9iZWZvcmUsIHBzX3JlcXVpcmVkLCBcCi0gICAgcHNfb3B0aW9uYWwsIHBzX2dyb3VwX2FmdGVyLCBwc19yaWdodF9zcXVhcmVfYWZ0ZXIsIHBzX3NlZW5fc2xhc2ggPSByYW5nZSg4KQorICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyID0gcmFuZ2UoNykKIAogICAgIGRlZiBzdGF0ZV9wYXJhbWV0ZXJzX3N0YXJ0KHNlbGYsIGxpbmUpOgogICAgICAgICBpZiBzZWxmLmlnbm9yZV9saW5lKGxpbmUpOgpAQCAtMzg1NCw5ICszODgyLDYgQEAKICAgICAgICAgcmV0dXJuIG5hbWUsIEZhbHNlLCBrd2FyZ3MKIAogICAgIGRlZiBwYXJzZV9zcGVjaWFsX3N5bWJvbChzZWxmLCBzeW1ib2wpOgotICAgICAgICBpZiBzZWxmLnBhcmFtZXRlcl9zdGF0ZSA9PSBzZWxmLnBzX3NlZW5fc2xhc2g6Ci0gICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBzcGVjaWZpZXMgIiArIHN5bWJvbCArICIgYWZ0ZXIgLywgd2hpY2ggaXMgdW5zdXBwb3J0ZWQuIikKLQogICAgICAgICBpZiBzeW1ib2wgPT0gJyonOgogICAgICAgICAgICAgaWYgc2VsZi5rZXl3b3JkX29ubHk6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgdXNlcyAnKicgbW9yZSB0aGFuIG9uY2UuIikKQEAgLTM4ODMsMTMgKzM5MDgsMTUgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5jKSIpCiAgICAgICAgIGVsaWYgc3ltYm9sID09ICcvJzoKKyAgICAgICAgICAgIGlmIHNlbGYucG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJy8nIG1vcmUgdGhhbiBvbmNlLiIpCisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IFRydWUKICAgICAgICAgICAgICMgcHNfcmVxdWlyZWQgYW5kIHBzX29wdGlvbmFsIGFyZSBhbGxvd2VkIGhlcmUsIHRoYXQgYWxsb3dzIHBvc2l0aW9uYWwtb25seSB3aXRob3V0IG9wdGlvbiBncm91cHMKICAgICAgICAgICAgICMgdG8gd29yayAoYW5kIGhhdmUgZGVmYXVsdCB2YWx1ZXMhKQogICAgICAgICAgICAgaWYgKHNlbGYucGFyYW1ldGVyX3N0YXRlIG5vdCBpbiAoc2VsZi5wc19yZXF1aXJlZCwgc2VsZi5wc19vcHRpb25hbCwgc2VsZi5wc19yaWdodF9zcXVhcmVfYWZ0ZXIsIHNlbGYucHNfZ3JvdXBfYmVmb3JlKSkgb3Igc2VsZi5ncm91cDoKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBoYXMgYW4gdW5zdXBwb3J0ZWQgZ3JvdXAgY29uZmlndXJhdGlvbi4gKFVuZXhwZWN0ZWQgc3RhdGUgIiArIHN0cihzZWxmLnBhcmFtZXRlcl9zdGF0ZSkgKyAiLmQpIikKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIG1peGVzIGtleXdvcmQtb25seSBhbmQgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMsIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0gICAgICAgICAgICBzZWxmLnBhcmFtZXRlcl9zdGF0ZSA9IHNlbGYucHNfc2Vlbl9zbGFzaAogICAgICAgICAgICAgIyBmaXh1cCBwcmVjZWRpbmcgcGFyYW1ldGVycwogICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5mdW5jdGlvbi5wYXJhbWV0ZXJzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGlmIChwLmtpbmQgIT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEIGFuZCBub3QgaXNpbnN0YW5jZShwLmNvbnZlcnRlciwgc2VsZl9jb252ZXJ0ZXIpKToKQEAgLTM5NzcsMjMgKzQwMDQsMjAgQEAKICAgICAgICAgIyBwb3B1bGF0ZSAicmlnaHRfYnJhY2tldF9jb3VudCIgZmllbGQgZm9yIGV2ZXJ5IHBhcmFtZXRlcgogICAgICAgICBhc3NlcnQgcGFyYW1ldGVycywgIldlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHNlbGYgcGFyYW1ldGVyLiAiICsgcmVwcihmKQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXJhbWV0ZXJzWzBdLmNvbnZlcnRlciwgc2VsZl9jb252ZXJ0ZXIpCisgICAgICAgICMgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgorICAgICAgICBhc3NlcnQgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBwYXJhbWV0ZXJzWzBdLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCi0gICAgICAgIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZiA9IHBhcmFtZXRlcnNbMTpdCi0gICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZjoKLSAgICAgICAgICAgICMgZm9yIG5vdywgdGhlIG9ubHkgd2F5IENsaW5pYyBzdXBwb3J0cyBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycwotICAgICAgICAgICAgIyBpcyBpZiBhbGwgb2YgdGhlbSBhcmUgcG9zaXRpb25hbC1vbmx5Li4uCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIC4uLiBleGNlcHQgZm9yIHNlbGYhICBzZWxmIGlzIGFsd2F5cyBwb3NpdGlvbmFsLW9ubHkuCi0KLSAgICAgICAgICAgIHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzID0gW3Aua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkgZm9yIHAgaW4gcGFyYW1ldGVyc19hZnRlcl9zZWxmXQotICAgICAgICAgICAgaWYgcGFyYW1ldGVyc19hZnRlcl9zZWxmWzBdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZOgotICAgICAgICAgICAgICAgIGFzc2VydCBhbGwocG9zaXRpb25hbF9vbmx5X3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gYWJzKHAuZ3JvdXApCisgICAgICAgIHBvc2l0aW9uYWxfb25seSA9IFRydWUKKyAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyc1sxOl06CisgICAgICAgICAgICBpZiBub3QgcC5pc19wb3NpdGlvbmFsX29ubHkoKToKKyAgICAgICAgICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgcG9zaXRpb25hbF9vbmx5CisgICAgICAgICAgICBpZiBwb3NpdGlvbmFsX29ubHk6CisgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gYWJzKHAuZ3JvdXApCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgZG9uJ3QgcHV0IGFueSByaWdodCBicmFja2V0cyBhcm91bmQgbm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCBldmVyLgotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gMAorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIAogICAgICAgICByaWdodF9icmFja2V0X2NvdW50ID0gMAogCmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL3NzMS5weSBiL1Rvb2xzL2RlbW8vc3MxLnB5CmluZGV4IGM1MWYwNDEuLmJmODg4MjAgMTAwNzU1Ci0tLSBhL1Rvb2xzL2RlbW8vc3MxLnB5CisrKyBiL1Rvb2xzL2RlbW8vc3MxLnB5CkBAIC00MTMsNyArNDEzLDcgQEAKIAogICAgIGRlZiByZW51bWJlcihzZWxmLCB4MSwgeTEsIHgyLCB5MiwgZHgsIGR5KToKICAgICAgICAgb3V0ID0gW10KLSAgICAgICAgZm9yIHBhcnQgaW4gcmUuc3BsaXQoJyhcdyspJywgc2VsZi5mb3JtdWxhKToKKyAgICAgICAgZm9yIHBhcnQgaW4gcmUuc3BsaXQocicoXHcrKScsIHNlbGYuZm9ybXVsYSk6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ14oW0EtWl0rKShbMS05XVswLTldKikkJywgcGFydCkKICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3gsIHN5ID0gbS5ncm91cHMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weSBiL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKaW5kZXggNDRlZGQ1Ny4uZDYwMmY1OCAxMDA3NTUKLS0tIGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQorKysgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CkBAIC0xMjQsOSArMTI0LDcgQEAKIAogICAgICMgZGVmYXVsdCB0aGUgZXhjbHVkZSBsaXN0IGZvciBlYWNoIHBsYXRmb3JtCiAgICAgaWYgd2luOiBleGNsdWRlID0gZXhjbHVkZSArIFsKLSAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywKLSAgICAgICAgJ2NlJywKLSAgICAgICAgXQorICAgICAgICAnZG9zJywgJ2Rvc3BhdGgnLCAnbWFjJywgJ21hY3BhdGgnLCAnbWFjZnMnLCAnTUFDRlMnLCAncG9zaXgnLCBdCiAKICAgICBmYWlsX2ltcG9ydCA9IGV4Y2x1ZGVbOl0KIApAQCAtMjE4LDcgKzIxNiw3IEBACiAgICAgaXNob21lID0gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHByZWZpeCwgJ1B5dGhvbicsICdjZXZhbC5jJykpCiAKICAgICAjIGxvY2F0aW9ucyBkZXJpdmVkIGZyb20gb3B0aW9ucwotICAgIHZlcnNpb24gPSBzeXMudmVyc2lvbls6M10KKyAgICB2ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgZmxhZ2dlZF92ZXJzaW9uID0gdmVyc2lvbiArIHN5cy5hYmlmbGFncwogICAgIGlmIHdpbjoKICAgICAgICAgZXh0ZW5zaW9uc19jID0gJ2Zyb3plbl9leHRlbnNpb25zLmMnCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5IGIvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQppbmRleCAzOTBkOGFjLi45YmIzZTZlIDEwMDY0NAotLS0gYS9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CisrKyBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKQEAgLTk1LDcgKzk1LDcgQEAKICAgICBwcmludCgpCiAKICAgICBwcmludCgnJCh0ZW1wX2Rpcik6JykKLSAgICBwcmludCgnICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCisgICAgcHJpbnQocicgIGlmIG5vdCBleGlzdCAkKHRlbXBfZGlyKVwuIG1rZGlyICQodGVtcF9kaXIpJykKICAgICBwcmludCgpCiAKICAgICBvYmplY3RzID0gW10KQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZSkKICAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZSkKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKGJhc2UgKyAiLm9iaiIpCi0gICAgICAgICAgICBwcmludCgnJCh0ZW1wX2RpcilcJXMub2JqOiAiJXMiJyAlIChiYXNlLCBmaWxlKSkKKyAgICAgICAgICAgIHByaW50KHInJCh0ZW1wX2RpcilcJXMub2JqOiAiJXMiJyAlIChiYXNlLCBmaWxlKSkKICAgICAgICAgICAgIHByaW50KCJcdEAkKENDKSAtYyAtbm9sb2dvIC9GbyQqICQoY2RsKSAkKGNfZGVidWcpIC9EIEJVSUxEX0ZSRUVaRSIsIGVuZD0nICcpCiAgICAgICAgICAgICBwcmludCgnIi1JJChweXRob25ob21lKS9JbmNsdWRlIiAgIi1JJChweXRob25ob21lKS9QQyIgXFwnKQogICAgICAgICAgICAgcHJpbnQoIlx0XHQkKGNmbGFncykgJChjZGVidWcpICQoY2luY2x1ZGUpIFxcIikKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiT0JKUz0iLCBlbmQ9JyAnKQotICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQoJyIkKHRlbXBfZGlyKVwlcyInICUgKG9iaiksIGVuZD0nICcpCisgICAgZm9yIG9iaiBpbiBvYmplY3RzOiBwcmludChyJyIkKHRlbXBfZGlyKVwlcyInICUgKG9iaiksIGVuZD0nICcpCiAgICAgcHJpbnQoKSA7IHByaW50KCkKIAogICAgIHByaW50KCJMSUJTPSIsIGVuZD0nICcpCmRpZmYgLS1naXQgYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5IGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQppbmRleCA3NWYxY2NiLi4zZTk1YjQ0IDEwMDc1NQotLS0gYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5CisrKyBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICMgTk9URTogc29tZSBnZGJzIGFyZSBsaW5rZWQgd2l0aCBQeXRob24gMywgc28gdGhpcyBmaWxlIHNob3VsZCBiZSBkdWFsLXN5bnRheAogIyBjb21wYXRpYmxlICgyLjYrIGFuZCAzLjArKS4gIFNlZSAjMTkzMDguCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24sIHdpdGhfc3RhdGVtZW50Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgZ2RiCiBpbXBvcnQgb3MKIGltcG9ydCBsb2NhbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL2hnL2hndG91Y2gucHkgYi9Ub29scy9oZy9oZ3RvdWNoLnB5CmluZGV4IDExOWQ4MTIuLmZiY2E0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2hnL2hndG91Y2gucHkKKysrIGIvVG9vbHMvaGcvaGd0b3VjaC5weQpAQCAtNyw3ICs3LDYgQEAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGRlcGVuZGVuY3kgc3ludGF4LCAjLWNvbW1lbnRzIGFyZSBzdXBwb3J0ZWQuCiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCiBpbXBvcnQgdGltZQpkaWZmIC0tZ2l0IGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQppbmRleCBkYTQyNDM4Li44ZWY1ZmY4IDEwMDc1NQotLS0gYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQorKysgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQpAQCAtMTU2LDcgKzE1Niw4IEBACiAiIiIpCiAKIGltcG9ydCBvcwotaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IGdsb2IKIGltcG9ydCB0aW1lCkBAIC0yNjMsOCArMjY0LDcgQEAKICAgICAjIGdldCBleHRlbnNpb24gZm9yIHB5dGhvbiBzb3VyY2UgZmlsZXMKICAgICBpZiAnX3B5X2V4dCcgbm90IGluIGdsb2JhbHMoKToKICAgICAgICAgZ2xvYmFsIF9weV9leHQKLSAgICAgICAgX3B5X2V4dCA9IFt0cmlwbGVbMF0gZm9yIHRyaXBsZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCkKLSAgICAgICAgICAgICAgICAgICBpZiB0cmlwbGVbMl0gPT0gaW1wLlBZX1NPVVJDRV1bMF0KKyAgICAgICAgX3B5X2V4dCA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzBdCiAKICAgICAjIGRvbid0IHJlY3Vyc2UgaW50byBDVlMgZGlyZWN0b3JpZXMKICAgICBpZiAnQ1ZTJyBpbiBuYW1lczoKQEAgLTI3Nyw0NSArMjc3LDYgQEAKICAgICAgICAgKQogCiAKLWRlZiBfZ2V0X21vZHBrZ19wYXRoKGRvdHRlZF9uYW1lLCBwYXRobGlzdD1Ob25lKToKLSAgICAiIiJHZXQgdGhlIGZpbGVzeXN0ZW0gcGF0aCBmb3IgYSBtb2R1bGUgb3IgYSBwYWNrYWdlLgotCi0gICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHRvIGEgZmlsZSBmb3IgYSBtb2R1bGUsIGFuZCB0byBhIGRpcmVjdG9yeSBmb3IKLSAgICBhIHBhY2thZ2UuIFJldHVybiBOb25lIGlmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCwgb3IgaXMgYSBidWlsdGluIG9yCi0gICAgZXh0ZW5zaW9uIG1vZHVsZS4KLSAgICAiIiIKLSAgICAjIHNwbGl0IG9mZiB0b3AtbW9zdCBuYW1lCi0gICAgcGFydHMgPSBkb3R0ZWRfbmFtZS5zcGxpdCgnLicsIDEpCi0KLSAgICBpZiBsZW4ocGFydHMpID4gMToKLSAgICAgICAgIyB3ZSBoYXZlIGEgZG90dGVkIHBhdGgsIGltcG9ydCB0b3AtbGV2ZWwgcGFja2FnZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24gPSBpbXAuZmluZF9tb2R1bGUocGFydHNbMF0sIHBhdGhsaXN0KQotICAgICAgICAgICAgaWYgZmlsZTogZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBjaGVjayBpZiBpdCdzIGluZGVlZCBhIHBhY2thZ2UKLSAgICAgICAgaWYgZGVzY3JpcHRpb25bMl0gPT0gaW1wLlBLR19ESVJFQ1RPUlk6Ci0gICAgICAgICAgICAjIHJlY3Vyc2l2ZWx5IGhhbmRsZSB0aGUgcmVtYWluaW5nIG5hbWUgcGFydHMKLSAgICAgICAgICAgIHBhdGhuYW1lID0gX2dldF9tb2Rwa2dfcGF0aChwYXJ0c1sxXSwgW3BhdGhuYW1lXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhdGhuYW1lID0gTm9uZQotICAgIGVsc2U6Ci0gICAgICAgICMgcGxhaW4gbmFtZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24gPSBpbXAuZmluZF9tb2R1bGUoCi0gICAgICAgICAgICAgICAgZG90dGVkX25hbWUsIHBhdGhsaXN0KQotICAgICAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdIG5vdCBpbiBbaW1wLlBZX1NPVVJDRSwgaW1wLlBLR19ESVJFQ1RPUlldOgotICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gTm9uZQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLQotICAgIHJldHVybiBwYXRobmFtZQotCi0KIGRlZiBnZXRGaWxlc0Zvck5hbWUobmFtZSk6CiAgICAgIiIiR2V0IGEgbGlzdCBvZiBtb2R1bGUgZmlsZXMgZm9yIGEgZmlsZW5hbWUsIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwKICAgICBvciBhIGRpcmVjdG9yeS4KQEAgLTMzMCw3ICsyOTEsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBsaXN0CiAKICAgICAgICAgIyB0cnkgdG8gZmluZCBtb2R1bGUgb3IgcGFja2FnZQotICAgICAgICBuYW1lID0gX2dldF9tb2Rwa2dfcGF0aChuYW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgICAgICAgICAgICBuYW1lID0gc3BlYy5vcmlnaW4KKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICByZXR1cm4gW10KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdAppbmRleCBlOGRhM2VjLi5lMzRhZWFjIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdAorKysgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdApAQCAtMzUsNyArMzUsNyBAQAogc2V0IEJVSUxEWDY0PQ0KIHNldCBUQVJHRVQ9UmVidWlsZA0KIHNldCBURVNUVEFSR0VURElSPQ0KLXNldCBQR089DQorc2V0IFBHTz1kZWZhdWx0DQogDQogDQogOkNoZWNrT3B0cw0KQEAgLTU1LDYgKzU1LDcgQEAKIGlmICIlMSIgRVFVICIteDg2IiAoc2V0IEJVSUxEWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi14NjQiIChzZXQgQlVJTERYNjQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiIEVRVSAiLS1wZ28iIChzZXQgUEdPPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1za2lwLXBnbyIgKHNldCBQR089KSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIA0KIGlmICIlMSIgTkVRICIiIGVjaG8gSW52YWxpZCBvcHRpb246ICIlMSIgJiYgZXhpdCAvQiAxDQogDQpAQCAtMTA1LDIwICsxMDYsMTUgQEAKIA0KIGlmICIlMSIgRVFVICJ4ODYiICgNCiAgICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQorICAgIHNldCBQR089DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCV3aW4zMlwNCiAgICAgc2V0IEJVSUxEX1BMQVQ9V2luMzINCiAgICAgc2V0IE9VVERJUl9QTEFUPXdpbjMyDQogICAgIHNldCBPQkpESVJfUExBVD14ODYNCi0pIGVsc2UgaWYgIiV+MiIgTkVRICIiICgNCi0gICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgYW1kNjQNCi0gICAgc2V0IFBHTz0lfjINCi0gICAgc2V0IEJVSUxEPSVQQ0JVSUxEJWFtZDY0LXBnb1wNCi0gICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQotICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KLSAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQogKSBlbHNlICgNCiAgICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgYW1kNjQNCiAgICAgc2V0IEJVSUxEPSVQQ0JVSUxEJWFtZDY0XA0KKyAgICBzZXQgUEdPPSV+Mg0KICAgICBzZXQgQlVJTERfUExBVD14NjQNCiAgICAgc2V0IE9VVERJUl9QTEFUPWFtZDY0DQogICAgIHNldCBPQkpESVJfUExBVD14NjQNCkBAIC0xNzQsMTIgKzE3MCwxOCBAQAogICAgIEBlY2hvIG9mZg0KICkNCiANCi1zZXQgQlVJTERPUFRTPS9wOkJ1aWxkRm9yUmVsZWFzZT10cnVlIC9wOkRvd25sb2FkVXJsPSVET1dOTE9BRF9VUkwlIC9wOkRvd25sb2FkVXJsQmFzZT0lRE9XTkxPQURfVVJMX0JBU0UlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KLWlmICIlUEdPJSIgTkVRICIiIHNldCBCVUlMRE9QVFM9JUJVSUxET1BUUyUgL3A6UEdPQnVpbGRQYXRoPSVCVUlMRCUNCi1tc2J1aWxkICIlRCVsYXVuY2hlclxsYXVuY2hlci53aXhwcm9qIiAvcDpQbGF0Zm9ybT14ODYgJUNFUlRPUFRTJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1tc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZWxvY2FsLndpeHByb2oiIC90OlJlYnVpbGQgL3A6UGxhdGZvcm09JTEgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPXRydWUNCitpZiAiJU9VVERJUl9QTEFUJSIgRVFVICJ3aW4zMiIgKA0KKyAgICBtc2J1aWxkICIlRCVsYXVuY2hlclxsYXVuY2hlci53aXhwcm9qIiAvcDpQbGF0Zm9ybT14ODYgJUNFUlRPUFRTJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCisgICAgaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCispIGVsc2UgaWYgbm90IGV4aXN0ICIlUENCVUlMRCV3aW4zMlxlbi11c1xsYXVuY2hlci5tc2kiICgNCisgICAgbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKQ0KKw0KK3NldCBCVUlMRE9QVFM9L3A6UGxhdGZvcm09JTEgL3A6QnVpbGRGb3JSZWxlYXNlPXRydWUgL3A6RG93bmxvYWRVcmw9JURPV05MT0FEX1VSTCUgL3A6RG93bmxvYWRVcmxCYXNlPSVET1dOTE9BRF9VUkxfQkFTRSUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2Vsb2NhbC53aXhwcm9qIiAvdDpSZWJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD10cnVlDQogaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCi1tc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZXdlYi53aXhwcm9qIiAvdDpSZWJ1aWxkIC9wOlBsYXRmb3JtPSUxICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD1mYWxzZQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNld2ViLndpeHByb2oiIC90OlJlYnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJSAvcDpSZWJ1aWxkQWxsPWZhbHNlDQogaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCiANCiBtc2J1aWxkICIlRCVtYWtlX3ppcC5wcm9qIiAvdDpCdWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlDQpAQCAtMTk2LDcgKzE5OCw3IEBACiANCiA6SGVscA0KIGVjaG8gYnVpbGRyZWxlYXNlLmJhdCBbLS1vdXQgRElSXSBbLXg4Nl0gWy14NjRdIFstLWNlcnRpZmljYXRlIENFUlROQU1FXSBbLS1idWlsZF0gWy0tc2tpcC1idWlsZF0NCi1lY2hvICAgICAgICAgICAgICAgICAgWy0tcGdvIENPTU1BTkRdIFstLXNraXAtZG9jXSBbLS1kb3dubG9hZCBET1dOTE9BRCBVUkxdIFstLXRlc3QgVEFSR0VURElSXQ0KK2VjaG8gICAgICAgICAgICAgICAgICBbLS1wZ28gQ09NTUFORF0gWy0tc2tpcC1wZ29dIFstLXNraXAtZG9jXSBbLS1kb3dubG9hZCBET1dOTE9BRCBVUkxdIFstLXRlc3QgVEFSR0VURElSXQ0KIGVjaG8gICAgICAgICAgICAgICAgICBbLWhdDQogZWNoby4NCiBlY2hvICAgIC0tb3V0ICgtbykgICAgICAgICAgU3BlY2lmeSBhbiBhZGRpdGlvbmFsIG91dHB1dCBkaXJlY3RvcnkgZm9yIGluc3RhbGxlcnMNCkBAIC0yMDUsNyArMjA3LDggQEAKIGVjaG8gICAgLS1idWlsZCAoLWIpICAgICAgICBJbmNyZW1lbnRhbGx5IGJ1aWxkIFB5dGhvbiByYXRoZXIgdGhhbiByZWJ1aWxkaW5nDQogZWNobyAgICAtLXNraXAtYnVpbGQgKC1CKSAgIERvIG5vdCBidWlsZCBQeXRob24gKGp1c3QgZG8gdGhlIGluc3RhbGxlcnMpDQogZWNobyAgICAtLXNraXAtZG9jICgtRCkgICAgIERvIG5vdCBidWlsZCBkb2N1bWVudGF0aW9uDQotZWNobyAgICAtLXBnbyAgICAgICAgICAgICAgIEJ1aWxkIHg2NCBpbnN0YWxsZXJzIHVzaW5nIFBHTw0KK2VjaG8gICAgLS1wZ28gICAgICAgICAgICAgICBTcGVjaWZ5IFBHTyBjb21tYW5kIGZvciB4NjQgaW5zdGFsbGVycw0KK2VjaG8gICAgLS1za2lwLXBnbyAgICAgICAgICBCdWlsZCB4NjQgaW5zdGFsbGVycyB1c2luZyBQR08NCiBlY2hvICAgIC0tZG93bmxvYWQgICAgICAgICAgU3BlY2lmeSB0aGUgZnVsbCBkb3dubG9hZCBVUkwgZm9yIE1TSXMNCiBlY2hvICAgIC0tdGVzdCAgICAgICAgICAgICAgU3BlY2lmeSB0aGUgdGVzdCBkaXJlY3RvcnkgdG8gcnVuIHRoZSBpbnN0YWxsZXIgdGVzdHMNCiBlY2hvICAgIC1oICAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgaW5mb3JtYXRpb24NCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQppbmRleCA0ZDljOTdhLi4xYzBiZDA4IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KQEAgLTExNiwxMCArMTE2LDExIEBACiAgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzSGVhZGVyKTwvVGV4dD4KICAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CiAKLSAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJTdWNjZXNzVGV4dCIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii0zMSIgSGVpZ2h0PSIxMDAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj48L0h5cGVydGV4dD4KKyAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJTdWNjZXNzVGV4dCIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii03MSIgSGVpZ2h0PSIxNTAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj48L0h5cGVydGV4dD4KIAotICAgICAgICA8VGV4dCBOYW1lPSJTdWNjZXNzUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTEwMCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRUZXh0KTwvVGV4dD4KLSAgICAgICAgPEJ1dHRvbiBOYW1lPSJMYXVuY2hCdXR0b24iIFg9IjE4NSIgWT0iLTUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RiIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzTGF1bmNoQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIiBYPSIxODUiIFk9Ii03MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI4MSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc01heFBhdGhCdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPFRleHQgTmFtZT0iU3VjY2Vzc1Jlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii00MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRUZXh0KTwvVGV4dD4KICAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgWD0iLTEwMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uKTwvQnV0dG9uPgogICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KICAgICA8L1BhZ2U+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bAppbmRleCBlZDc5MjQ2Li40MzUwNmQ2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKQEAgLTE0Miw0ICsxNDIsNyBAQAogICA8U3RyaW5nIElkPSJGYWlsdXJlV1MySzNPckVhcmxpZXIiPldpbmRvd3MgU2VydmVyIDIwMDggU1AyIG9yIGxhdGVyIGlzIHJlcXVpcmVkIHRvIGluc3RhbGwgYW5kIHVzZSBbV2l4QnVuZGxlTmFtZV0uCiAKIFZpc2l0ICZsdDthIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvIiZndDtweXRob24ub3JnJmx0Oy9hJmd0OyB0byBkb3dubG9hZCBQeXRob24gMy40LjwvU3RyaW5nPgorCisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIj5EaXNhYmxlIHBhdGggbGVuZ3RoIGxpbWl0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uTm90ZSI+Q2hhbmdlcyB5b3VyIG1hY2hpbmUgY29uZmlndXJhdGlvbiB0byBhbGxvdyBwcm9ncmFtcywgaW5jbHVkaW5nIFB5dGhvbiwgdG8gYnlwYXNzIHRoZSAyNjAgY2hhcmFjdGVyICJNQVhfUEFUSCIgbGltaXRhdGlvbi48L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCmluZGV4IDZhNjdlZTIuLmU4ODk4MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTExLDEwICsxMSw2IEBACiAjaW5jbHVkZSAicGNoLmgiCiAKIHN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfV0lORE9XX0NMQVNTID0gTCJQeXRob25CQSI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCA9IEwiTGF1bmNoVGFyZ2V0IjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCA9IEwiTGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMgPSBMIkxhdW5jaEFyZ3VtZW50cyI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4gPSBMIkxhdW5jaEhpZGRlbiI7CiBzdGF0aWMgY29uc3QgRFdPUkQgUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UgPSAzMDsKIHN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfQlVORExFX0ZJTEVfVkVSU0lPTiA9IEwiV2l4QnVuZGxlRmlsZVZlcnNpb24iOwogCkBAIC0xMjksMTEgKzEyNSwxMSBAQAogICAgIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sCiAKICAgICAvLyBTdWNjZXNzIHBhZ2UKLSAgICBJRF9MQVVOQ0hfQlVUVE9OLAogICAgIElEX1NVQ0NFU1NfVEVYVCwKICAgICBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwKICAgICBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLAogICAgIElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwKKyAgICBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwKIAogICAgIC8vIEZhaWx1cmUgcGFnZQogICAgIElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LLApAQCAtMTg4LDExICsxODQsMTEgQEAKICAgICB7IElEX09WRVJBTExfUFJPR1JFU1NfVEVYVCwgTCJPdmVyYWxsUHJvZ3Jlc3NUZXh0IiB9LAogICAgIHsgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJQcm9ncmVzc0NhbmNlbEJ1dHRvbiIgfSwKIAotICAgIHsgSURfTEFVTkNIX0JVVFRPTiwgTCJMYXVuY2hCdXR0b24iIH0sCiAgICAgeyBJRF9TVUNDRVNTX1RFWFQsIEwiU3VjY2Vzc1RleHQiIH0sCiAgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgTCJTdWNjZXNzUmVzdGFydFRleHQiIH0sCiAgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBMIlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiB9LAogICAgIHsgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLCBMIlN1Y2Nlc3NDYW5jZWxCdXR0b24iIH0sCisgICAgeyBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgTCJTdWNjZXNzTWF4UGF0aEJ1dHRvbiIgfSwKIAogICAgIHsgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssIEwiRmFpbHVyZUxvZ0ZpbGVMaW5rIiB9LAogICAgIHsgSURfRkFJTFVSRV9NRVNTQUdFX1RFWFQsIEwiRmFpbHVyZU1lc3NhZ2VUZXh0IiB9LApAQCAtNDM2LDYgKzQzMiwxMSBAQAogICAgICAgICBjYXNlIElEX1VOSU5TVEFMTF9CVVRUT046CiAgICAgICAgICAgICBPblBsYW4oQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwpOwogICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTjoKKyAgICAgICAgICAgIEVuYWJsZU1heFBhdGhTdXBwb3J0KCk7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgIExFeGl0OgpAQCAtNTMzLDkgKzUzNCw4IEBACiAgICAgfQogCiAgICAgdm9pZCBTdWNjZXNzUGFnZV9TaG93KCkgewotICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IG9yIGxhdW5jaCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCisgICAgICAgIC8vIG9uIHRoZSAiU3VjY2VzcyIgcGFnZSwgY2hlY2sgaWYgdGhlIHJlc3RhcnQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgogICAgICAgICBCT09MIHNob3dSZXN0YXJ0QnV0dG9uID0gRkFMU0U7Ci0gICAgICAgIEJPT0wgbGF1bmNoVGFyZ2V0RXhpc3RzID0gRkFMU0U7CiAgICAgICAgIExPQ19TVFJJTkcgKnN1Y2Nlc3NUZXh0ID0gbnVsbHB0cjsKICAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAgICAgICAgIApAQCAtNTQzLDggKzU0Myw2IEBACiAgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUID09IF9jb21tYW5kLnJlc3RhcnQpIHsKICAgICAgICAgICAgICAgICBzaG93UmVzdGFydEJ1dHRvbiA9IFRSVUU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoVGhlbWVDb250cm9sRXhpc3RzKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTikpIHsKLSAgICAgICAgICAgIGxhdW5jaFRhcmdldEV4aXN0cyA9IEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoX3BsYW5uZWRBY3Rpb24pIHsKQEAgLTU3MSw5ICs1NjksNDEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0xBVU5DSF9CVVRUT04sIGxhdW5jaFRhcmdldEV4aXN0cyAmJiBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCA8IF9wbGFubmVkQWN0aW9uKTsKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIHNob3dSZXN0YXJ0QnV0dG9uKTsKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgc2hvd1Jlc3RhcnRCdXR0b24pOworCisgICAgICAgIGlmIChfY29tbWFuZC5hY3Rpb24gIT0gQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMIHx8CisgICAgICAgICAgICAhSXNXaW5kb3dzVmVyc2lvbk9yR3JlYXRlcigxMCwgMCwgMCkpIHsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBEV09SRCBkYXRhVHlwZSA9IDAsIGJ1ZmZlciA9IDAsIGJ1ZmZlckxlbiA9IHNpemVvZihidWZmZXIpOworICAgICAgICAgICAgSEtFWSBoS2V5OworICAgICAgICAgICAgTFJFU1VMVCByZXMgPSBSZWdPcGVuS2V5RXhXKAorICAgICAgICAgICAgICAgIEhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgICAgICAgICBMIlNZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW0iLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgS0VZX1JFQUQsCisgICAgICAgICAgICAgICAgJmhLZXkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICByZXMgPSBSZWdRdWVyeVZhbHVlRXhXKGhLZXksIEwiTG9uZ1BhdGhzRW5hYmxlZCIsIG51bGxwdHIsICZkYXRhVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgKExQQllURSkmYnVmZmVyLCAmYnVmZmVyTGVuKTsKKyAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShoS2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmFpbGVkIHRvIG9wZW4gU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbTogZXJyb3IgY29kZSAlZCIsIHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MgJiYgZGF0YVR5cGUgPT0gUkVHX0RXT1JEICYmIGJ1ZmZlciA9PSAwKSB7CisgICAgICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgVFJVRSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmFpbGVkIHRvIHJlYWQgTG9uZ1BhdGhzRW5hYmxlZCB2YWx1ZTogZXJyb3IgY29kZSAlZCIsIHJlcyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkhpZGluZyBNQVhfUEFUSCBidXR0b24gYmVjYXVzZSBpdCBpcyBhbHJlYWR5IGVuYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBGYWlsdXJlUGFnZV9TaG93KCkgewpAQCAtNjI2LDYgKzY1NiwzNCBAQAogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgRW5hYmxlTWF4UGF0aFN1cHBvcnQoKSB7CisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyLCBkZWZhdWx0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiVGFyZ2V0RGlyIiwgJnRhcmdldERpcik7CisgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICF0YXJnZXREaXIgfHwgIXRhcmdldERpclswXSkgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJGYWlsZWQgdG8gZ2V0IFRhcmdldERpciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTFBXU1RSIHB5dGhvbncgPSBudWxscHRyOworICAgICAgICBTdHJBbGxvY0Zvcm1hdHRlZCgmcHl0aG9udywgTCIlbHNcXHB5dGhvbncuZXhlIiwgdGFyZ2V0RGlyKTsKKyAgICAgICAgaWYgKCFweXRob253IHx8ICFweXRob253WzBdKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgcHl0aG9udy5leGUgcGF0aCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTFBDV1NUUiBhcmd1bWVudHMgPSBMIi1jIFwiaW1wb3J0IHdpbnJlZzsgIgorICAgICAgICAgICAgIndpbnJlZy5TZXRWYWx1ZUV4KCIKKyAgICAgICAgICAgICAgICAid2lucmVnLkNyZWF0ZUtleSh3aW5yZWcuSEtFWV9MT0NBTF9NQUNISU5FLCAiCisgICAgICAgICAgICAgICAgICAgICJyJ1NZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW0nKSwgIgorICAgICAgICAgICAgICAgICInTG9uZ1BhdGhzRW5hYmxlZCcsICIKKyAgICAgICAgICAgICAgICAiTm9uZSwgIgorICAgICAgICAgICAgICAgICJ3aW5yZWcuUkVHX0RXT1JELCAiCisgICAgICAgICAgICAgICAgIjEiCisgICAgICAgICAgICAiKVwiIjsKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJFeGVjdXRpbmcgJWxzICVscyIsIHB5dGhvbncsIGFyZ3VtZW50cyk7CisgICAgICAgIEhJTlNUQU5DRSByZXMgPSBTaGVsbEV4ZWN1dGVXKDAsIEwicnVuYXMiLCBweXRob253LCBhcmd1bWVudHMsIE5VTEwsIFNXX0hJREUpOworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgInJldHVybiBjb2RlIDB4JTA4eCIsIHJlcyk7CisgICAgfQogCiBwdWJsaWM6IC8vIElCb290c3RyYXBwZXJBcHBsaWNhdGlvbgogICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QIE9uU3RhcnR1cCgpIHsKQEAgLTEyMTYsMTIgKzEyNzQsNiBAQAogICAgIH0KIAogICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkxhdW5jaEFwcHJvdmVkRXhlQ29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzLCBfX2luIERXT1JEIC8qcHJvY2Vzc0lkKi8pIHsKLSAgICAgICAgaWYgKEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9BQ0NFU1NfREVOSUVEKSA9PSBoclN0YXR1cykgewotICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKLSAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7Ci0gICAgICAgIH0KICAgICB9CiAKIApAQCAtMTg2NywxMCArMTkxOSw2IEBACiAgICAgICAgICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAgICAgICAvLyBDdXN0b21pemUgY29tbWFuZHMKICAgICAgICAgICAgIC8vIFN1Y2Nlc3MvZmFpbHVyZSBjb21tYW5kcwotICAgICAgICAgICAgY2FzZSBJRF9MQVVOQ0hfQlVUVE9OOgotICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotCiAgICAgICAgICAgICBjYXNlIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT046IF9fZmFsbHRocm91Z2g7CiAgICAgICAgICAgICBjYXNlIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT046CiAgICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrUmVzdGFydEJ1dHRvbigpOwpAQCAtMjM3Miw2OSArMjQyMCw2IEBACiAgICAgfQogCiAKLSAgICAvLwotICAgIC8vIE9uQ2xpY2tMYXVuY2hCdXR0b24gLSBsYXVuY2ggdGhlIGFwcCBmcm9tIHRoZSBzdWNjZXNzIHBhZ2UuCi0gICAgLy8KLSAgICB2b2lkIE9uQ2xpY2tMYXVuY2hCdXR0b24oKSB7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOwotICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6QXJndW1lbnRzID0gbnVsbHB0cjsKLSAgICAgICAgaW50IG5DbWRTaG93ID0gU1dfU0hPV05PUk1BTDsKLQotICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRILCAmc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZSAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCk7Ci0KLSAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQsICZzY3pMYXVuY2hUYXJnZXQpOwotICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpKSB7Ci0gICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCwgJnNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgZWxldmF0ZWQgaWQgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpKSB7Ci0gICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUywgJnNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggYXJndW1lbnRzICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfSElEREVOKSkgewotICAgICAgICAgICAgbkNtZFNob3cgPSBTV19ISURFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgJiYgIV90cmllZFRvTGF1bmNoRWxldmF0ZWQpIHsKLSAgICAgICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBUUlVFOwotICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5MYXVuY2hBcHByb3ZlZEV4ZShfaFduZCwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsIDApOwotICAgICAgICAgICAgaWYgKEZBSUxFRChocikpIHsKLSAgICAgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBsYXVuY2ggZWxldmF0ZWQgdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLQotICAgICAgICAgICAgICAgIC8vdHJ5IHdpdGggU2hlbEV4ZWMgbmV4dCB0aW1lCi0gICAgICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsICZzY3pBcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggYXJndW1lbnRzIHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhyID0gU2hlbEV4ZWMoc2N6TGF1bmNoVGFyZ2V0LCBzY3pBcmd1bWVudHMsIEwib3BlbiIsIG51bGxwdHIsIG5DbWRTaG93LCBfaFduZCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOwotICAgICAgICB9Ci0KLSAgICBMRXhpdDoKLSAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6QXJndW1lbnRzKTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0gICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekxhdW5jaFRhcmdldCk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KIAogICAgIC8vCiAgICAgLy8gT25DbGlja1Jlc3RhcnRCdXR0b24gLSBhbGxvd3MgdGhlIHJlc3RhcnQgYW5kIGNsb3NlcyB0aGUgYXBwLgpAQCAtMzE1Nyw3ICszMTQyLDYgQEAKICAgICAgICAgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSA9IFVJTlRfTUFYOwogICAgICAgICBfdGFza2JhckJ1dHRvbk9LID0gRkFMU0U7CiAgICAgICAgIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlID0gRkFMU0U7Ci0gICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBGQUxTRTsKIAogICAgICAgICBfc3VwcHJlc3NQYWludCA9IEZBTFNFOwogCkBAIC0zMjQyLDcgKzMyMjYsNiBAQAogICAgIFVJTlQgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZTsKICAgICBCT09MIF90YXNrYmFyQnV0dG9uT0s7CiAgICAgQk9PTCBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZTsKLSAgICBCT09MIF90cmllZFRvTGF1bmNoRWxldmF0ZWQ7CiAKICAgICBCT09MIF9zdXBwcmVzc1BhaW50OwogCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28gYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjYyOWUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCmluZGV4IDM4MzA3ZTAuLmM4OWU2ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cworKysgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKQEAgLTQsNyArNCw3IEBACiAgIDxCdW5kbGUgTmFtZT0iIShsb2MuRnVsbFByb2R1Y3ROYW1lKSIKICAgICAgICAgICBVcGdyYWRlQ29kZT0iJCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSIKICAgICAgICAgICBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIKLSAgICAgICAgICBJY29uU291cmNlRmlsZT0iYnVuZGxlLmljbyIKKyAgICAgICAgICBJY29uU291cmNlRmlsZT0iLi5cLi5cLi5cUENcaWNvbnNcc2V0dXAuaWNvIgogICAgICAgICAgIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIKICAgICAgICAgICBBYm91dFVybD0iaHR0cDovL3d3dy5weXRob24ub3JnLyIKICAgICAgICAgICBEaXNhYmxlTW9kaWZ5PSJidXR0b24iCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uLnd4cyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCmluZGV4IDRlZmFkNjUuLjM5OGQ5NGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jb21tb24ud3hzCisrKyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCkBAIC0xLDYgKzEsMTAgQEAKIDw/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+dHJ1ZTwvSW5jbHVkZUluQ2F0PgogICAgICAgICA8L0luc3RhbGxGaWxlcz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliLnd4cwppbmRleCAyYjA0YmNiLi4yYTNiOWVjIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYi53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWIud3hzCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9weSIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2ZpbGVzIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZXh0ZW5zaW9ucyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2NhdCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KICAgICAgICAgPC9GZWF0dXJlPgogICAgIDwvUHJvZHVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwppbmRleCBmYTc5YThkLi5lYjI2ZjhkIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCkBAIC02NCwxNiArNjQsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJQeXRob25QYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbTGliXTtbRExMc10iIC8+CiAgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBEaXJlY3Rvcnk9IkxpYl9zaXRlX3BhY2thZ2VzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBOYW1lPSJSRUFETUUudHh0IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKUxpYlxzaXRlLXBhY2thZ2VzXFJFQURNRSIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmUiIERpcmVjdG9yeT0iTGliX2xpYjJ0bzMiIEd1aWQ9IiQodmFyLlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkKSI+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZpbGUgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9maWxlcyIgTmFtZT0iKi5waWNrbGUiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZvbGRlciIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgotICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJMaWIiPgotICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTGliX3NpdGVfcGFja2FnZXMiIE5hbWU9InNpdGUtcGFja2FnZXMiIC8+Ci0gICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9jYXQiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGliX2NhdCIgRGlyZWN0b3J5PSJDYXRhbG9ncyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uX2xpYi5jYXQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQppbmRleCAwZThhNGE2Li5lYmIxNzY2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbWFrZV96aXAucHkKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC00Niw2ICs0NiwxMCBAQAogICAgICdweXRob24zc3R1YicsCiB9CiAKK0VYQ0xVREVEX0ZJTEVTID0geworICAgICdweXNoZWxsZXh0JywKK30KKwogZGVmIGlzX25vdF9kZWJ1ZyhwKToKICAgICBpZiBERUJVR19SRS5zZWFyY2gocC5uYW1lKToKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC01Myw3ICs1Nyw3IEBACiAgICAgaWYgVEtUQ0xfUkUuc2VhcmNoKHAubmFtZSk6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgcmV0dXJuIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBERUJVR19GSUxFUworICAgIHJldHVybiBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gREVCVUdfRklMRVMgYW5kIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBFWENMVURFRF9GSUxFUwogCiBkZWYgaXNfbm90X2RlYnVnX29yX3B5dGhvbihwKToKICAgICByZXR1cm4gaXNfbm90X2RlYnVnKHApIGFuZCBub3QgUFlUSE9OX0RMTF9SRS5zZWFyY2gocC5uYW1lKQpAQCAtNjMsOCArNjcsNiBAQAogICAgIGlmIHAuaXNfZGlyKCk6CiAgICAgICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GUk9NX0xJQlJBUlk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdwbGF0LScpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgPT0gJ3Rlc3QnIGFuZCBwLnBhcnRzWy0yXS5sb3dlcigpID09ICdsaWInOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgaW4geyd0ZXN0JywgJ3Rlc3RzJ30gYW5kIHAucGFydHNbLTNdLmxvd2VyKCkgPT0gJ2xpYic6CkBAIC04OSwyNSArOTEsMjcgQEAKIAogICAgIHJldHVybiBwLnN1ZmZpeC5sb3dlcigpIGluIHsnLnB5JywgJy5weXcnLCAnLnR4dCd9CiAKK0JBU0VfTkFNRSA9ICdweXRob257MC5tYWpvcn17MC5taW5vcn0nLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKQorCiBGVUxMX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9udy5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9ezAubWlub3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnRExMcy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ0RMTHMvJywgJyRidWlsZCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1Z19vcl9weXRob24pLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbncuZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob257fS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvLm1ham9yKSwgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICd7fS5kbGwnLmZvcm1hdChCQVNFX05BTUUpLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdETExzLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnX29yX3B5dGhvbiksCiAgICAgKCdpbmNsdWRlLycsICdpbmNsdWRlJywgJyouaCcsIE5vbmUpLAogICAgICgnaW5jbHVkZS8nLCAnUEMnLCAncHljb25maWcuaCcsIE5vbmUpLAogICAgICgnTGliLycsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKLSAgICAoJ2xpYnMvJywgJyRidWlsZCcsICcqLmxpYicsIGluY2x1ZGVfaW5fbGlicyksCisgICAgKCdsaWJzLycsICdQQ0J1aWxkLyRhcmNoJywgJyoubGliJywgaW5jbHVkZV9pbl9saWJzKSwKICAgICAoJ1Rvb2xzLycsICdUb29scycsICcqKi8qJywgaW5jbHVkZV9pbl90b29scyksCiBdCiAKIEVNQkVEX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfS56aXAnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5kbGwnLCBpc19ub3RfZGVidWcpLAorICAgICgne30uemlwJy5mb3JtYXQoQkFTRV9OQU1FKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAogXQogCiBpZiBvcy5nZXRlbnYoJ0RPQ19GSUxFTkFNRScpOgpAQCAtMTY4LDE4ICsxNzIsMTggQEAKIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc291cmNlJywgbWV0YXZhcj0nZGlyJywgaGVscD0nVGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSByZXBvc2l0b3J5IHJvb3QnLCB0eXBlPVBhdGgpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlJywgdHlwZT1QYXRoLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBzZWxmLWV4dHJhY3RpbmcgYXJjaGl2ZScsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsZCcsIGhlbHA9J1NwZWNpZnkgdGhlIGJ1aWxkIGRpcmVjdG9yeScsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWFyY2gnLCBoZWxwPSdTcGVjaWZ5IHRoZSBhcmNoaXRlY3R1cmUgdG8gdXNlICh3aW4zMi9hbWQ2NCknLCB0eXBlPXN0ciwgZGVmYXVsdD0id2luMzIiKQogICAgIG5zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc291cmNlID0gbnMuc291cmNlIG9yIChQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50LnBhcmVudC5wYXJlbnQpCiAgICAgb3V0ID0gbnMub3V0Ci0gICAgYnVpbGQgPSBucy5idWlsZAorICAgIGFyY2ggPSBucy5hcmNoCiAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlLCBQYXRoKQogICAgIGFzc2VydCBub3Qgb3V0IG9yIGlzaW5zdGFuY2Uob3V0LCBQYXRoKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGJ1aWxkLCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKIAogICAgIGlmIG5zLnRlbXA6CiAgICAgICAgIHRlbXAgPSBucy50ZW1wCkBAIC0yMDIsMTUgKzIwNiwxNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6Ci0gICAgICAgICAgICBpZiBzID09ICckYnVpbGQnOgotICAgICAgICAgICAgICAgIHMgPSBidWlsZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzID0gc291cmNlIC8gcworICAgICAgICAgICAgcyA9IHNvdXJjZSAvIHMucmVwbGFjZSgiJGFyY2giLCBhcmNoKQogICAgICAgICAgICAgY29waWVkID0gY29weV90b19sYXlvdXQodGVtcCAvIHQucnN0cmlwKCcvJyksIHJnbG9iKHMsIHAsIGMpKQogICAgICAgICAgICAgcHJpbnQoJ0NvcGllZCB7fSBmaWxlcycuZm9ybWF0KGNvcGllZCkpCiAKLSAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gJ3B5dmVudi5jZmcnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgcHJpbnQoJ2FwcGxvY2FsID0gdHJ1ZScsIGZpbGU9ZikKKyAgICAgICAgaWYgbnMuZW1iZWQ6CisgICAgICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAoQkFTRV9OQU1FICsgJy5fcHRoJykpLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgcHJpbnQoQkFTRV9OQU1FICsgJy56aXAnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJy4nLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJycsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICBwcmludCgnIyBVbmNvbW1lbnQgdG8gcnVuIHNpdGUubWFpbigpIGF1dG9tYXRpY2FsbHknLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyNpbXBvcnQgc2l0ZScsIGZpbGU9ZikKIAogICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICB0b3RhbCA9IGNvcHlfdG9fbGF5b3V0KG91dCwgcmdsb2IodGVtcCwgJyoqLyonLCBOb25lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHJvcHMgYi9Ub29scy9tc2kvbXNpLnByb3BzCmluZGV4IDBjZjdjNzcuLjYwYWJiYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHJvcHMKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICA8Q29uZmlndXJhdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnJyI+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KICAgICAgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+eDg2PC9QbGF0Zm9ybT4KICAgICAgICAgPEluc3RhbGxTY29wZSBDb25kaXRpb249IickKEluc3RhbGxTY29wZSknICE9ICdwZXJNYWNoaW5lJyI+cGVyVXNlcjwvSW5zdGFsbFNjb3BlPgorICAgICAgICA8X01ha2VDYXRDb21tYW5kIENvbmRpdGlvbj0iJyQoX01ha2VDYXRDb21tYW5kKScgPT0gJyciPm1ha2VjYXQ8L19NYWtlQ2F0Q29tbWFuZD4KICAgICA8L1Byb3BlcnR5R3JvdXA+CiAKICAgICA8SW1wb3J0IFByb2plY3Q9IndpeC5wcm9wcyIgLz4KQEAgLTY5LDYgKzcwLDggQEAKICAgICA8UHJvcGVydHlHcm91cD4KICAgICAgICAgPEJpdG5lc3M+MzItYml0PC9CaXRuZXNzPgogICAgICAgICA8Qml0bmVzcyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj42NC1iaXQ8L0JpdG5lc3M+CisgICAgICAgIDxQbGF0Zm9ybUFyY2hpdGVjdHVyZT4zMmJpdDwvUGxhdGZvcm1BcmNoaXRlY3R1cmU+CisgICAgICAgIDxQbGF0Zm9ybUFyY2hpdGVjdHVyZSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj42NGJpdDwvUGxhdGZvcm1BcmNoaXRlY3R1cmU+CiAgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CiAgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CiAgICAgICAgICAgICBWZXJzaW9uPSQoSW5zdGFsbGVyVmVyc2lvbik7CkBAIC03OSw2ICs4Miw3IEBACiAgICAgICAgICAgICBVcGdyYWRlTWluaW11bVZlcnNpb249JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4wLjA7CiAgICAgICAgICAgICBOZXh0TWFqb3JWZXJzaW9uTnVtYmVyPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKFttc2J1aWxkXTo6QWRkKCQoTWlub3JWZXJzaW9uTnVtYmVyKSwgMSkpLjAuMDsKICAgICAgICAgICAgIEJpdG5lc3M9JChCaXRuZXNzKTsKKyAgICAgICAgICAgIFBsYXRmb3JtQXJjaGl0ZWN0dXJlPSQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpOwogICAgICAgICAgICAgUHlEZWJ1Z0V4dD0kKFB5RGVidWdFeHQpOwogICAgICAgICAgICAgUHlBcmNoRXh0PSQoUHlBcmNoRXh0KTsKICAgICAgICAgICAgIFB5VGVzdEV4dD0kKFB5VGVzdEV4dCk7CkBAIC0xMDAsNiArMTA0LDcgQEAKICAgICAgICAgICAgIDxHcm91cD5nZW5lcmF0ZWRfZmlsZWxpc3Q8L0dyb3VwPgogICAgICAgICAgICAgPENvbmRpdGlvbj48L0NvbmRpdGlvbj4KICAgICAgICAgICAgIDxEaXNrSWQ+PC9EaXNrSWQ+CisgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PmZhbHNlPC9JbmNsdWRlSW5DYXQ+CiAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgogICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHM+CiAgICAgICAgICAgICA8VmlzaWJsZT5mYWxzZTwvVmlzaWJsZT4KQEAgLTE1NSw2ICsxNjAsMTIgQEAKICAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkIj4KICAgICAgICAgICAgIDxVcmk+bGliMnRvMy9waWNrbGVzPC9Vcmk+CiAgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJDb21tb25QeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnk8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlB5dGhvblJlZ0NvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5yZWdpc3RyeS8kKE91dHB1dE5hbWUpPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVHdWlkcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChUYXJnZXROYW1lKSAhPSAnbGF1bmNoZXInIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnRhcmdldHMgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKaW5kZXggODZiZTM1Yi4uOTI4M2ExZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21zaS50YXJnZXRzCisrKyBiL1Rvb2xzL21zaS9tc2kudGFyZ2V0cwpAQCAtMTIsOCArMTIsMTAgQEAKICAgICAgICAgICAgICAgICA8X1NvdXJjZT4lKFNvdXJjZSkkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoU291cmNlQmFzZSksICUoRnVsbFBhdGgpKSk8L19Tb3VyY2U+CiAgICAgICAgICAgICAgICAgPF9UYXJnZXQ+JShUYXJnZXRfKSQoW21zYnVpbGRdOjpNYWtlUmVsYXRpdmUoJShUYXJnZXRCYXNlKSwgJShGdWxsUGF0aCkpKTwvX1RhcmdldD4KICAgICAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8X0NhdGFsb2dGaWxlcyBJbmNsdWRlPSJAKEluc3RhbGxGaWxlcykiIENvbmRpdGlvbj0iJShJbnN0YWxsRmlsZXMuSW5jbHVkZUluQ2F0KSBhbmQgJychPSQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShJbnN0YWxsRmlsZXMuRnVsbFBhdGgpKSkiIC8+CiAgICAgICAgIDwvSXRlbUdyb3VwPgotICAgICAgICAKKwogICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9GaWxlTGlzdFRhcmdldCkiIExpbmVzPSJAKEluc3RhbGxGaWxlcy0+JyZxdW90OyUoX1NvdXJjZSkmcXVvdDssJnF1b3Q7JShfVGFyZ2V0KSZxdW90OywmcXVvdDslKEdyb3VwKSZxdW90OywmcXVvdDslKERpc2tJZCkmcXVvdDssJnF1b3Q7JShDb25kaXRpb24pJnF1b3Q7JykiIE92ZXJ3cml0ZT0idHJ1ZSIgLz4KICAgICAgICAgPEV4ZWMgQ29tbWFuZD0nIiQoUHl0aG9uRXhlKSIgY3N2X3RvX3d4cy5weSAiJChfRmlsZUxpc3RUYXJnZXQpIiAiJChfSW5zdGFsbEZpbGVzVGFyZ2V0KSInCiAgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KSIgLz4KQEAgLTI0LDYgKzI2LDM1IEBACiAgICAgICAgIDwvSXRlbUdyb3VwPgogICAgIDwvVGFyZ2V0PgogCisgICAgPFRhcmdldCBOYW1lPSJHZW5lcmF0ZUNhdGFsb2ciIEFmdGVyVGFyZ2V0cz0iUHJvY2Vzc0luc3RhbGxGaWxlcyIgQ29uZGl0aW9uPSInQChfQ2F0YWxvZ0ZpbGVzKScgIT0gJyciPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfQ2F0RmlsZVNvdXJjZVRhcmdldD4kKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChNU0J1aWxkUHJvamVjdE5hbWUpLmNkZjwvX0NhdEZpbGVTb3VyY2VUYXJnZXQ+CisgICAgICAgICAgICA8X0NhdEZpbGVUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKXB5dGhvbl8kKE1TQnVpbGRQcm9qZWN0TmFtZSkuY2F0PC9fQ2F0RmlsZVRhcmdldD4KKyAgICAgICAgICAgIDxfQ2F0RmlsZT5bQ2F0YWxvZ0hlYWRlcl0KK05hbWU9JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGaWxlTmFtZSgkKF9DYXRGaWxlVGFyZ2V0KSkpCitSZXN1bHREaXI9JChbU3lzdGVtLklPLlBhdGhdOjpHZXREaXJlY3RvcnlOYW1lKCQoX0NhdEZpbGVUYXJnZXQpKSkKK1B1YmxpY1ZlcnNpb249MQorQ2F0YWxvZ1ZlcnNpb249MgorSGFzaEFsZ29yaXRobXM9U0hBMjU2CitQYWdlSGFzaGVzPWZhbHNlCitFbmNvZGluZ1R5cGU9CisKK1tDYXRhbG9nRmlsZXNdCitAKF9DYXRhbG9nRmlsZXMtPicmbHQ7SEFTSCZndDslKEZpbGVuYW1lKSUoRXh0ZW5zaW9uKT0lKEZ1bGxQYXRoKScsJworJykKKzwvX0NhdEZpbGU+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9DYXRGaWxlU291cmNlVGFyZ2V0KSIgTGluZXM9IiQoX0NhdEZpbGUpIiBPdmVyd3JpdGU9InRydWUiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyQoX01ha2VDYXRDb21tYW5kKSAiJChfQ2F0RmlsZVNvdXJjZVRhcmdldCkiJyBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyQoX1NpZ25Db21tYW5kKSAiJChfQ2F0RmlsZVRhcmdldCkiJyBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiCisgICAgICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCQoX0NhdEZpbGVUYXJnZXQpKSBhbmQgJyQoX1NpZ25Db21tYW5kKScgIT0gJyciIC8+CisKKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxGaWxlV3JpdGVzIEluY2x1ZGU9IiQoX0NhdEZpbGVTb3VyY2VUYXJnZXQpOyQoX0NhdEZpbGVUYXJnZXQpIiAvPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICA8L1RhcmdldD4KKwogICAgIDxUYXJnZXQgTmFtZT0iX1RyYW5zZm9ybVd4bFRlbXBsYXRlcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIElucHV0cz0iQChXeGxUZW1wbGF0ZSk7JChQeVNvdXJjZVBhdGgpaW5jbHVkZVxwYXRjaGxldmVsLmgiIE91dHB1dHM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKEZpbGVuYW1lKS53eGwiPgogICAgICAgICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IidAKFd4bFRlbXBsYXRlKScgIT0gJyciPgogICAgICAgICAgICAgPF9Db250ZW50PiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShXeGxUZW1wbGF0ZS5GdWxsUGF0aCkpLlJlcGxhY2UoYHt7U2hvcnRWZXJzaW9ufX1gLCBgJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKSQoUHlUZXN0RXh0KWApLlJlcGxhY2UoYHt7TG9uZ1ZlcnNpb259fWAsIGAkKFB5dGhvblZlcnNpb24pJChQeVRlc3RFeHQpYCkuUmVwbGFjZShge3tCaXRuZXNzfX1gLCBgJChCaXRuZXNzKWApKTwvX0NvbnRlbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCmluZGV4IGU4MDNhYTAuLjA3NTM1NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCkBAIC0xNyw2ICsxNyw5IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2UucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgogICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdG11bHRpcGhhc2UucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2UucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y29uc29sZS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y29uc29sZS5weWQiIE5hbWU9Il90ZXN0Y29uc29sZS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCkBAIC0zNyw2ICs0MCw5IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgogICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2UucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNvbnNvbGUucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNvbnNvbGUucGRiIiBOYW1lPSJfdGVzdGNvbnNvbGUucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KICAgICAKQEAgLTU3LDYgKzYzLDkgQEAKICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y29uc29sZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3Rjb25zb2xlX2QucHlkIiBOYW1lPSJfdGVzdGNvbnNvbGVfZC5weWQiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucGRiIiBOYW1lPSJfdGVzdGNhcGlfZC5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KQEAgLTcyLDYgKzgxLDkgQEAKICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y29uc29sZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3Rjb25zb2xlX2QucGRiIiBOYW1lPSJfdGVzdGNvbnNvbGVfZC5wZGIiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvaiBiL1Rvb2xzL21zaS90b29scy90b29scy53aXhwcm9qCmluZGV4IGY0M2NmMzMuLmI3ZmM0MWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90b29scy90b29scy53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS90b29scy90b29scy53aXhwcm9qCkBAIC0zNiw2ICszNiw3IEBACiAgICAgICAgICAgICAgICAgPFRhcmdldEJhc2U+JChQeVNvdXJjZVBhdGgpPC9UYXJnZXRCYXNlPgogICAgICAgICAgICAgICAgIDxUYXJnZXRfPjwvVGFyZ2V0Xz4KICAgICAgICAgICAgICAgICA8R3JvdXA+dG9vbHNfcHk8L0dyb3VwPgorICAgICAgICAgICAgICAgIDxJbmNsdWRlSW5DYXQ+dHJ1ZTwvSW5jbHVkZUluQ2F0PgogICAgICAgICA8L0luc3RhbGxGaWxlcz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29scy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCmluZGV4IDhmODQxOGEuLjdhODA1ZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90b29scy90b29scy53eHMKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwpAQCAtOSw2ICs5LDcgQEAKICAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19weSIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idG9vbHNfc2NyaXB0cyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idG9vbHNfY2F0IiAvPgogICAgICAgICAgICAgPENvbXBvbmVudFJlZiBJZD0iT3B0aW9uYWxGZWF0dXJlIiAvPgogICAgICAgICA8L0ZlYXR1cmU+CiAgICAgPC9Qcm9kdWN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKaW5kZXggM2FlMGRiMi4uOWM3NmIxYiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCkBAIC0xMyw0ICsxMywxMSBAQAogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KKyAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idG9vbHNfY2F0Ij4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InRvb2xzX2NhdCIgRGlyZWN0b3J5PSJDYXRhbG9ncyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uX3Rvb2xzLmNhdCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KIDwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvaiBiL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKaW5kZXggNTQyYmYwNy4uYzNjZDQzYSAxMDA2NDQKLS0tIGEvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagorKysgYi9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCkBAIC0xNCw2ICsxNCw3IEBACiAgICAgPFByb3BlcnR5R3JvdXA+CiAgICAgICAgIDxOdWdldCBDb25kaXRpb249IiQoTnVnZXQpID09ICcnIj4kKEV4dGVybmFsc0Rpcilcd2luZG93cy1pbnN0YWxsZXJcbnVnZXRcbnVnZXQuZXhlPC9OdWdldD4KICAgICAgICAgPE51c3BlY1ZlcnNpb24+JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4kKE1pY3JvVmVyc2lvbk51bWJlcik8L051c3BlY1ZlcnNpb24+CisgICAgICAgIDxOdXNwZWNWZXJzaW9uIENvbmRpdGlvbj0iJChSZWxlYXNlTGV2ZWxOYW1lKSAhPSAnJyI+JChOdXNwZWNWZXJzaW9uKS0kKFJlbGVhc2VMZXZlbE5hbWUpPC9OdXNwZWNWZXJzaW9uPgogICAgICAgICA8U2lnbk91dHB1dD5mYWxzZTwvU2lnbk91dHB1dD4KICAgICAgICAgPFRhcmdldE5hbWU+JChPdXRwdXROYW1lKS4kKE51c3BlY1ZlcnNpb24pPC9UYXJnZXROYW1lPgogICAgICAgICA8VGFyZ2V0RXh0Pi5udXBrZzwvVGFyZ2V0RXh0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCAyODUwMzBlLi43ZTFjYzRlIDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMTA0LDYgKzEwNCwxOSBAQAogICAgICAgICBzZWxmLndyaXRlKCIgIitzZWxmLmJpbm9wW3Qub3AuX19jbGFzc19fLl9fbmFtZV9fXSsiPSAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCiAKKyAgICBkZWYgX0FubkFzc2lnbihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5maWxsKCkKKyAgICAgICAgaWYgbm90IHQuc2ltcGxlIGFuZCBpc2luc3RhbmNlKHQudGFyZ2V0LCBhc3QuTmFtZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCcoJykKKyAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnRhcmdldCkKKyAgICAgICAgaWYgbm90IHQuc2ltcGxlIGFuZCBpc2luc3RhbmNlKHQudGFyZ2V0LCBhc3QuTmFtZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCcpJykKKyAgICAgICAgc2VsZi53cml0ZSgiOiAiKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYW5ub3RhdGlvbikKKyAgICAgICAgaWYgdC52YWx1ZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiA9ICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCisKICAgICBkZWYgX1JldHVybihzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJyZXR1cm4iKQogICAgICAgICBpZiB0LnZhbHVlOgpAQCAtMzIyLDkgKzMzNSw3MiBAQAogICAgIGRlZiBfU3RyKHNlbGYsIHRyZWUpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodHJlZS5zKSkKIAorICAgIGRlZiBfSm9pbmVkU3RyKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCJmIikKKyAgICAgICAgc3RyaW5nID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLl9mc3RyaW5nX0pvaW5lZFN0cih0LCBzdHJpbmcud3JpdGUpCisgICAgICAgIHNlbGYud3JpdGUocmVwcihzdHJpbmcuZ2V0dmFsdWUoKSkpCisKKyAgICBkZWYgX0Zvcm1hdHRlZFZhbHVlKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCJmIikKKyAgICAgICAgc3RyaW5nID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLl9mc3RyaW5nX0Zvcm1hdHRlZFZhbHVlKHQsIHN0cmluZy53cml0ZSkKKyAgICAgICAgc2VsZi53cml0ZShyZXByKHN0cmluZy5nZXR2YWx1ZSgpKSkKKworICAgIGRlZiBfZnN0cmluZ19Kb2luZWRTdHIoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICBmb3IgdmFsdWUgaW4gdC52YWx1ZXM6CisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCAiX2ZzdHJpbmdfIiArIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgbWV0aCh2YWx1ZSwgd3JpdGUpCisKKyAgICBkZWYgX2ZzdHJpbmdfU3RyKHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgdmFsdWUgPSB0LnMucmVwbGFjZSgieyIsICJ7eyIpLnJlcGxhY2UoIn0iLCAifX0iKQorICAgICAgICB3cml0ZSh2YWx1ZSkKKworICAgIGRlZiBfZnN0cmluZ19Db25zdGFudChzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHQudmFsdWUsIHN0cikKKyAgICAgICAgdmFsdWUgPSB0LnZhbHVlLnJlcGxhY2UoInsiLCAie3siKS5yZXBsYWNlKCJ9IiwgIn19IikKKyAgICAgICAgd3JpdGUodmFsdWUpCisKKyAgICBkZWYgX2ZzdHJpbmdfRm9ybWF0dGVkVmFsdWUoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICB3cml0ZSgieyIpCisgICAgICAgIGV4cHIgPSBpby5TdHJpbmdJTygpCisgICAgICAgIFVucGFyc2VyKHQudmFsdWUsIGV4cHIpCisgICAgICAgIGV4cHIgPSBleHByLmdldHZhbHVlKCkucnN0cmlwKCJcbiIpCisgICAgICAgIGlmIGV4cHIuc3RhcnRzd2l0aCgieyIpOgorICAgICAgICAgICAgd3JpdGUoIiAiKSAgIyBTZXBhcmF0ZSBwYWlyIG9mIG9wZW5pbmcgYnJhY2tldHMgYXMgInsgeyIKKyAgICAgICAgd3JpdGUoZXhwcikKKyAgICAgICAgaWYgdC5jb252ZXJzaW9uICE9IC0xOgorICAgICAgICAgICAgY29udmVyc2lvbiA9IGNocih0LmNvbnZlcnNpb24pCisgICAgICAgICAgICBhc3NlcnQgY29udmVyc2lvbiBpbiAic3JhIgorICAgICAgICAgICAgd3JpdGUoZiIhe2NvbnZlcnNpb259IikKKyAgICAgICAgaWYgdC5mb3JtYXRfc3BlYzoKKyAgICAgICAgICAgIHdyaXRlKCI6IikKKyAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICJfZnN0cmluZ18iICsgdHlwZSh0LmZvcm1hdF9zcGVjKS5fX25hbWVfXykKKyAgICAgICAgICAgIG1ldGgodC5mb3JtYXRfc3BlYywgd3JpdGUpCisgICAgICAgIHdyaXRlKCJ9IikKKwogICAgIGRlZiBfTmFtZShzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZSh0LmlkKQogCisgICAgZGVmIF93cml0ZV9jb25zdGFudChzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChmbG9hdCwgY29tcGxleCkpOgorICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKHZhbHVlKS5yZXBsYWNlKCJpbmYiLCBJTkZTVFIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKHZhbHVlKSkKKworICAgIGRlZiBfQ29uc3RhbnQoc2VsZiwgdCk6CisgICAgICAgIHZhbHVlID0gdC52YWx1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIoIikKKyAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgPT0gMToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25zdGFudCh2YWx1ZVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIsIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuX3dyaXRlX2NvbnN0YW50LCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIikiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uc3RhbnQodC52YWx1ZSkKKwogICAgIGRlZiBfTmFtZUNvbnN0YW50KHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodC52YWx1ZSkpCiAKQEAgLTM2OCw3ICs0NDQsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZSgifSIpCiAKICAgICBkZWYgX2NvbXByZWhlbnNpb24oc2VsZiwgdCk6Ci0gICAgICAgIHNlbGYud3JpdGUoIiBmb3IgIikKKyAgICAgICAgaWYgdC5pc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhc3luYyBmb3IgIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiBmb3IgIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnRhcmdldCkKICAgICAgICAgc2VsZi53cml0ZSgiIGluICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5pdGVyKQpAQCAtNDEzLDcgKzQ5Miw3IEBACiAgICAgZGVmIF9UdXBsZShzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZSgiKCIpCiAgICAgICAgIGlmIGxlbih0LmVsdHMpID09IDE6Ci0gICAgICAgICAgICAoZWx0LCkgPSB0LmVsdHMKKyAgICAgICAgICAgIGVsdCA9IHQuZWx0c1swXQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChlbHQpCiAgICAgICAgICAgICBzZWxmLndyaXRlKCIsIikKICAgICAgICAgZWxzZToKQEAgLTQ2MCw3ICs1MzksOCBAQAogICAgICAgICAjIFNwZWNpYWwgY2FzZTogMy5fX2Fic19fKCkgaXMgYSBzeW50YXggZXJyb3IsIHNvIGlmIHQudmFsdWUKICAgICAgICAgIyBpcyBhbiBpbnRlZ2VyIGxpdGVyYWwgdGhlbiB3ZSBuZWVkIHRvIGVpdGhlciBwYXJlbnRoZXNpemUKICAgICAgICAgIyBpdCBvciBhZGQgYW4gZXh0cmEgc3BhY2UgdG8gZ2V0IDMgLl9fYWJzX18oKS4KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuTnVtKSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLm4sIGludCk6CisgICAgICAgIGlmICgoaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuTnVtKSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLm4sIGludCkpCisgICAgICAgICAgIG9yIChpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5Db25zdGFudCkgYW5kIGlzaW5zdGFuY2UodC52YWx1ZS52YWx1ZSwgaW50KSkpOgogICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCiAgICAgICAgIHNlbGYud3JpdGUoIi4iKQogICAgICAgICBzZWxmLndyaXRlKHQuYXR0cikKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkgYi9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CmluZGV4IDA3M2NjYTAuLjU0YThiYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKKysrIGIvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQpAQCAtOTksOCArOTksOCBAQAogIyBBbGlhcwogZ2V0cGFzc3dkID0gaW52aXNpYmxlX2lucHV0CiAKLV9pbnRlZ2VyUkUgPSByZS5jb21waWxlKCdccyooLT9cZCspXHMqJCcpCi1faW50ZWdlclJhbmdlUkUgPSByZS5jb21waWxlKCdccyooLT9cZCspXHMqLVxzKigtP1xkKylccyokJykKK19pbnRlZ2VyUkUgPSByZS5jb21waWxlKHInXHMqKC0/XGQrKVxzKiQnKQorX2ludGVnZXJSYW5nZVJFID0gcmUuY29tcGlsZShyJ1xzKigtP1xkKylccyotXHMqKC0/XGQrKVxzKiQnKQogCiBkZWYgc3JhbmdlKHMsCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvV2l0aC5weSBiL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQppbmRleCA1ZjU5ZThjLi4zMGNkM2MyIDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL1dpdGgucHkKKysrIGIvVG9vbHMvcHliZW5jaC9XaXRoLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAogZnJvbSBweWJlbmNoIGltcG9ydCBUZXN0CiAKIGNsYXNzIFdpdGhGaW5hbGx5KFRlc3QpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvcHluY2hlL0NvbG9yREIucHkgYi9Ub29scy9weW5jaGUvQ29sb3JEQi5weQppbmRleCA1Y2VkMGU3Li4wMzQ4MTQ4IDEwMDY0NAotLS0gYS9Ub29scy9weW5jaGUvQ29sb3JEQi5weQorKysgYi9Ub29scy9weW5jaGUvQ29sb3JEQi5weQpAQCAtMTM0LDE3ICsxMzQsMTcgQEAKIAwKIGNsYXNzIFJHQkNvbG9yREIoQ29sb3JEQik6CiAgICAgX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgJ1xzKig/UDxyZWQ+XGQrKVxzKyg/UDxncmVlbj5cZCspXHMrKD9QPGJsdWU+XGQrKVxzKyg/UDxuYW1lPi4qKScpCisgICAgICAgIHInXHMqKD9QPHJlZD5cZCspXHMrKD9QPGdyZWVuPlxkKylccysoP1A8Ymx1ZT5cZCspXHMrKD9QPG5hbWU+LiopJykKIAogCiBjbGFzcyBIVE1MNDBEQihDb2xvckRCKToKLSAgICBfcmUgPSByZS5jb21waWxlKCcoP1A8bmFtZT5cUyspXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKKyAgICBfcmUgPSByZS5jb21waWxlKHInKD9QPG5hbWU+XFMrKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCiAKICAgICBkZWYgX2V4dHJhY3RyZ2Ioc2VsZiwgbW8pOgogICAgICAgICByZXR1cm4gcnJnZ2JiX3RvX3RyaXBsZXQobW8uZ3JvdXAoJ2hleHJnYicpKQogCiBjbGFzcyBMaWdodGxpbmtEQihIVE1MNDBEQik6Ci0gICAgX3JlID0gcmUuY29tcGlsZSgnKD9QPG5hbWU+KC4rKSlccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQorICAgIF9yZSA9IHJlLmNvbXBpbGUocicoP1A8bmFtZT4oLispKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCiAKICAgICBkZWYgX2V4dHJhY3RuYW1lKHNlbGYsIG1vKToKICAgICAgICAgcmV0dXJuIG1vLmdyb3VwKCduYW1lJykuc3RyaXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weSBiL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKaW5kZXggZTEwZTQ5YS4uN2NhOTUyNiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQorKysgYi9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CkBAIC02LDcgKzYsNyBAQAogQSBoZWxwZXIgZm9yIGFuYWx5emluZyBQWVRIT05EVU1QUkVGUyBvdXRwdXQuCiAKIFdoZW4gdGhlIFBZVEhPTkRVTVBSRUZTIGVudmFyIGlzIHNldCBpbiBhIGRlYnVnIGJ1aWxkLCBhdCBQeXRob24gc2h1dGRvd24KLXRpbWUgUHlfRmluYWxpemUoKSBwcmludHMgdGhlIGxpc3Qgb2YgYWxsIGxpdmUgb2JqZWN0cyB0d2ljZTogIGZpcnN0IGl0Cit0aW1lIFB5X0ZpbmFsaXplRXgoKSBwcmludHMgdGhlIGxpc3Qgb2YgYWxsIGxpdmUgb2JqZWN0cyB0d2ljZTogIGZpcnN0IGl0CiBwcmludHMgdGhlIHJlcHIoKSBvZiBlYWNoIG9iamVjdCB3aGlsZSB0aGUgaW50ZXJwcmV0ZXIgaXMgc3RpbGwgZnVsbHkgaW50YWN0LgogQWZ0ZXIgY2xlYW5pbmcgdXAgZXZlcnl0aGluZyBpdCBjYW4sIGl0IHByaW50cyBhbGwgcmVtYWluaW5nIGxpdmUgb2JqZWN0cwogYWdhaW4sIGJ1dCB0aGUgc2Vjb25kIHRpbWUganVzdCBwcmludHMgdGhlaXIgYWRkcmVzc2VzLCByZWZjb3VudHMsIGFuZCB0eXBlCkBAIC00MSw3ICs0MSw3IEBACiBvYmplY3RzIHNob3duIGluIHRoZSByZXByOiAgdGhlIHJlcHIgd2FzIGNhcHR1cmVkIGZyb20gdGhlIGZpcnN0IG91dHB1dCBibG9jaywKIGFuZCBzb21lIG9mIHRoZSBjb250YWluZWVzIG1heSBoYXZlIGJlZW4gcmVsZWFzZWQgc2luY2UgdGhlbi4gIEZvciBleGFtcGxlLAogaXQncyBjb21tb24gZm9yIHRoZSBsaW5lIHNob3dpbmcgdGhlIGRpY3Qgb2YgaW50ZXJuZWQgc3RyaW5ncyB0byBkaXNwbGF5Ci1zdHJpbmdzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGF0IHRoZSBlbmQgb2YgUHlfRmluYWxpemU7IHRoaXMgY2FuIGJlIHJlY29nbml6ZWQKK3N0cmluZ3MgdGhhdCBubyBsb25nZXIgZXhpc3QgYXQgdGhlIGVuZCBvZiBQeV9GaW5hbGl6ZUV4OyB0aGlzIGNhbiBiZSByZWNvZ25pemVkCiAoYWxiZWl0IHBhaW5mdWxseSkgYmVjYXVzZSBzdWNoIGNvbnRhaW5lZXMgZG9uJ3QgaGF2ZSBhIGxpbmUgb2YgdGhlaXIgb3duLgogCiBUaGUgb2JqZWN0cyBhcmUgbGlzdGVkIGluIGFsbG9jYXRpb24gb3JkZXIsIHdpdGggbW9zdC1yZWNlbnRseSBhbGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weSBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQppbmRleCA5NzIwYTQzLi45NjE5OWI4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2RpZmYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CkBAIC04LDcgKzgsNyBAQAogCiAiIiIKIAotaW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIGFyZ3BhcnNlCitpbXBvcnQgc3lzLCBvcywgZGlmZmxpYiwgYXJncGFyc2UKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZQogCiBkZWYgZmlsZV9tdGltZShwYXRoKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5IGIvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKaW5kZXggMjBmMzM4Ni4uMTIxM2E0ZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKQEAgLTE3NCw4ICsxNzQsOCBAQAogICAgIHN5cy5zdGRlcnIud3JpdGUoIlVzYWdlOiAlcyBbLW1dIHdhcm5pbmdzXG4iICUgc3lzLmFyZ3ZbMF0pCiAgICAgc3lzLnN0ZGVyci53cml0ZSgiVHJ5IGAlcyAtaCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iICUgc3lzLmFyZ3ZbMF0pCiAKLVBBVFRFUk4gPSAoIl4oLis/KTooXGQrKTogRGVwcmVjYXRpb25XYXJuaW5nOiAiCi0gICAgICAgICAgICJjbGFzc2ljIChpbnR8bG9uZ3xmbG9hdHxjb21wbGV4KSBkaXZpc2lvbiQiKQorUEFUVEVSTiA9IChyIl4oLis/KTooXGQrKTogRGVwcmVjYXRpb25XYXJuaW5nOiAiCisgICAgICAgICAgIHIiY2xhc3NpYyAoaW50fGxvbmd8ZmxvYXR8Y29tcGxleCkgZGl2aXNpb24kIikKIAogZGVmIHJlYWR3YXJuaW5ncyh3YXJuaW5nc2ZpbGUpOgogICAgIHByb2cgPSByZS5jb21waWxlKFBBVFRFUk4pCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQppbmRleCBjNjJmOWE1Li45NDhiNTZmIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKQEAgLTEsNyArMSw1IEBACiAjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgb3Bjb2RlLmggaGVhZGVyIGZpbGUuCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IHN5cwogaGVhZGVyID0gIiIiLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLwogI2lmbmRlZiBQeV9PUENPREVfSApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9oMnB5LnB5IGIvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CmluZGV4IDA5NjdmYzIuLjQzNjNjMGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaDJweS5weQorKysgYi9Ub29scy9zY3JpcHRzL2gycHkucHkKQEAgLTIzLDEzICsyMywxMyBAQAogCiBpbXBvcnQgc3lzLCByZSwgZ2V0b3B0LCBvcwogCi1wX2RlZmluZSA9IHJlLmNvbXBpbGUoJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rKFthLXpBLVowLTlfXSspW1x0IF0rJykKK3BfZGVmaW5lID0gcmUuY29tcGlsZShyJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rKFthLXpBLVowLTlfXSspW1x0IF0rJykKIAogcF9tYWNybyA9IHJlLmNvbXBpbGUoCi0gICdeW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKycKLSAgJyhbYS16QS1aMC05X10rKVwoKFtfYS16QS1aXVtfYS16QS1aMC05XSopXClbXHQgXSsnKQorICByJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rJworICByJyhbYS16QS1aMC05X10rKVwoKFtfYS16QS1aXVtfYS16QS1aMC05XSopXClbXHQgXSsnKQogCi1wX2luY2x1ZGUgPSByZS5jb21waWxlKCdeW1x0IF0qI1tcdCBdKmluY2x1ZGVbXHQgXSs8KFtePlxuXSspPicpCitwX2luY2x1ZGUgPSByZS5jb21waWxlKHInXltcdCBdKiNbXHQgXSppbmNsdWRlW1x0IF0rPChbXj5cbl0rKT4nKQogCiBwX2NvbW1lbnQgPSByZS5jb21waWxlKHInL1wqKFteKl0rfFwqK1teL10pKihcKisvKT8nKQogcF9jcHBfY29tbWVudCA9IHJlLmNvbXBpbGUoJy8vLionKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQppbmRleCA2NmFkODY4Li45MjcyZmVlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQorKysgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAKICMjIyMgTGFUZVggT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBkZWZhdWx0X2xhdGV4X2NvbW1hbmRzID0gewotICAgICdjb21tZW50JzogJ3tcY29sb3J7cmVkfSMxfScsCi0gICAgJ3N0cmluZyc6ICd7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCi0gICAgJ2RvY3N0cmluZyc6ICd7XGVtcGh7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfX0nLAotICAgICdrZXl3b3JkJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCi0gICAgJ2J1aWx0aW4nOiAne1xjb2xvcntwdXJwbGV9IzF9JywKLSAgICAnZGVmaW5pdGlvbic6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAotICAgICdkZWZuYW1lJzogJ3tcY29sb3J7Ymx1ZX0jMX0nLAotICAgICdvcGVyYXRvcic6ICd7XGNvbG9ye2Jyb3dufSMxfScsCisgICAgJ2NvbW1lbnQnOiByJ3tcY29sb3J7cmVkfSMxfScsCisgICAgJ3N0cmluZyc6IHIne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAorICAgICdkb2NzdHJpbmcnOiByJ3tcZW1waHtcY29sb3J7Rm9yZXN0R3JlZW59IzF9fScsCisgICAgJ2tleXdvcmQnOiByJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2J1aWx0aW4nOiByJ3tcY29sb3J7cHVycGxlfSMxfScsCisgICAgJ2RlZmluaXRpb24nOiByJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2RlZm5hbWUnOiByJ3tcY29sb3J7Ymx1ZX0jMX0nLAorICAgICdvcGVyYXRvcic6IHIne1xjb2xvcnticm93bn0jMX0nLAogfQogCiBkZWZhdWx0X2xhdGV4X2RvY3VtZW50ID0gcicnJwpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9pZGxlMyBiL1Rvb2xzL3NjcmlwdHMvaWRsZTMKaW5kZXggOGVlOTJjMi4uZDczMzJiYyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9pZGxlMworKysgYi9Ub29scy9zY3JpcHRzL2lkbGUzCkBAIC0xLDUgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkgYi9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQppbmRleCBhZWI0NTFlLi42MzVlNTQ4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQorKysgYi9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQpAQCAtODgsNyArODgsNyBAQAogIyBubyBtb3JlIGV4cHJlc3Npb25zIGFyZSBzZWFyY2hlZCBmb3IuICBTbywgb3JkZXIgaXMgaW1wb3J0YW50LgogZW1wYXJzZV9saXN0X3JlYXNvbiA9IFsKICAgICByJ141XGR7Mn0gPD5cLlwuXC4gKD9QPHJlYXNvbj4uKiknLAotICAgICc8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCisgICAgcic8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCiAgICAgcmUuY29tcGlsZShyJ148PDwgNVxkezJ9ICg/UDxyZWFzb24+LiopJywgcmUuTVVMVElMSU5FKSwKICAgICByZS5jb21waWxlKCc9PT09PSBzdGRlcnIgd2FzID09PT09XG5ybWFpbDogKD9QPHJlYXNvbj4uKiknKSwKICAgICByZS5jb21waWxlKCdeRGlhZ25vc3RpYy1Db2RlOiAoP1A8cmVhc29uPi4qKScsIHJlLk1VTFRJTElORSksCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL25tMmRlZi5weSBiL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CmluZGV4IDhmMDc1NTkuLjgzYmJjZDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CkBAIC0zNiw4ICszNiw4IEBACiAiIiIKIGltcG9ydCBvcywgc3lzCiAKLVBZVEhPTkxJQiA9ICdsaWJweXRob24nK3N5cy52ZXJzaW9uWzozXSsnLmEnCi1QQ19QWVRIT05MSUIgPSAnUHl0aG9uJytzeXMudmVyc2lvblswXStzeXMudmVyc2lvblsyXSsnLmRsbCcKK1BZVEhPTkxJQiA9ICdsaWJweXRob24lZC4lZC5hJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCitQQ19QWVRIT05MSUIgPSAnUHl0aG9uJWQlZC5kbGwnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIE5NID0gJ25tIC1wIC1nICVzJyAgICAgICAgICAgICAgICAgICAgICAjIEZvciBMaW51eCwgdXNlICJubSAtZyAlcyIKIAogZGVmIHN5bWJvbHMobGliPVBZVEhPTkxJQix0eXBlcz0oJ1QnLCdDJywnRCcpKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weSBiL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQppbmRleCBhMDQyZDFjLi5jNjg2YjAyIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAiIiIKIGltcG9ydCByZSxzeXMKIAotZW50aXR5UkUgPSByZS5jb21waWxlKCc8IUVOVElUWSArKFx3KykgK0NEQVRBICsiKFteIl0rKSIgKy0tICsoKD86LnxcbikrPykgKi0tPicpCitlbnRpdHlSRSA9IHJlLmNvbXBpbGUocic8IUVOVElUWSArKFx3KykgK0NEQVRBICsiKFteIl0rKSIgKy0tICsoKD86LnxcbikrPykgKi0tPicpCiAKIGRlZiBwYXJzZSh0ZXh0LHBvcz0wLGVuZHBvcz1Ob25lKToKIApAQCAtMzksNyArMzksNyBAQAogICAgICAgICBpZiBjaGFyY29kZVs6Ml0gPT0gJyYjJzoKICAgICAgICAgICAgIGNvZGUgPSBpbnQoY2hhcmNvZGVbMjotMV0pCiAgICAgICAgICAgICBpZiBjb2RlIDwgMjU2OgotICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gIidcJW8nIiAlIGNvZGUKKyAgICAgICAgICAgICAgICBjaGFyY29kZSA9IHIiJ1wlbyciICUgY29kZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjaGFyY29kZSA9IHJlcHIoY2hhcmNvZGUpCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkgYi9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKaW5kZXggMjI0MzJkMS4uNTYyYmJjNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQpAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICAgICAgaWYgZml4KGFyZyk6IGJhZCA9IDEKICAgICBzeXMuZXhpdChiYWQpCiAKLWlzcHl0aG9ucHJvZyA9IHJlLmNvbXBpbGUoJ15bYS16QS1aMC05X10rXC5weSQnKQoraXNweXRob25wcm9nID0gcmUuY29tcGlsZShyJ15bYS16QS1aMC05X10rXC5weSQnKQogZGVmIGlzcHl0aG9uKG5hbWUpOgogICAgIHJldHVybiBib29sKGlzcHl0aG9ucHJvZy5tYXRjaChuYW1lKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wdGFncy5weSBiL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKaW5kZXggY2E2NDNiMy4uMzk2Y2JkMCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wdGFncy5weQorKysgYi9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgICAgIGZvciBzIGluIHRhZ3M6IGZwLndyaXRlKHMpCiAKIAotZXhwciA9ICdeWyBcdF0qKGRlZnxjbGFzcylbIFx0XSsoW2EtekEtWjAtOV9dKylbIFx0XSpbOlwoXScKK2V4cHIgPSByJ15bIFx0XSooZGVmfGNsYXNzKVsgXHRdKyhbYS16QS1aMC05X10rKVsgXHRdKls6XChdJwogbWF0Y2hlciA9IHJlLmNvbXBpbGUoZXhwcikKIAogZGVmIHRyZWF0X2ZpbGUoZmlsZW5hbWUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9weXZlbnYgYi9Ub29scy9zY3JpcHRzL3B5dmVudgppbmRleCA5NzhkNjkxLi4xZmI0MmM2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3B5dmVudgorKysgYi9Ub29scy9zY3JpcHRzL3B5dmVudgpAQCAtMSw2ICsxLDEyIEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBzeXMKKyAgICBpbXBvcnQgcGF0aGxpYgorCisgICAgZXhlY3V0YWJsZSA9IHBhdGhsaWIuUGF0aChzeXMuZXhlY3V0YWJsZSBvciAncHl0aG9uMycpLm5hbWUKKyAgICBwcmludCgnV0FSTklORzogdGhlIHB5ZW52IHNjcmlwdCBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiAnCisgICAgICAgICAgZidge2V4ZWN1dGFibGV9IC1tIHZlbnZgJywgZmlsZT1zeXMuc3RkZXJyKQorCiAgICAgcmMgPSAxCiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgdmVudgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkgYi9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQppbmRleCA4YWJkZDAxLi42YzcwZGE5IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQorKysgYi9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQpAQCAtMSw2ICsxLDYgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKLSIiIgorciIiIgogU1ZOIGhlbHBlciBzY3JpcHQuCiAKIFRyeSB0byBzZXQgdGhlIHN2bjplb2wtc3R5bGUgcHJvcGVydHkgdG8gIm5hdGl2ZSIgb24gZXZlcnkgLnB5LCAudHh0LCAuYyBhbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5IGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKaW5kZXggOTk4MzUyOC4uOWMxZTlmZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKKysrIGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKQEAgLTc4LDExICs3OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJ1bm5pbmcgdGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWVudSBpdGVtIChZdWNrISkKLW1pcHJvZyA9IHJlLmNvbXBpbGUoJ15cKiAoW146XSopOig6fFsgXHRdKihbXlx0LFxuLl0rKShbXiBcdFxuXSopKVsgXHRcbl0qJykKLSMgICAgICAgICAgICAgICAgICAgMCAgICAxICAgICAxIDIgICAgICAgIDMgICAgICAgICAgMzQgICAgICAgICA0MiAgICAgICAgMAotIyAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAgICAgICAgICAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittaXByb2cgPSByZS5jb21waWxlKHInXlwqIChbXjpdKik6KDp8WyBcdF0qKFteXHQsXG4uXSspKFteIFx0XG5dKikpWyBcdFxuXSonKQorIyAgICAgICAgICAgICAgICAgICAgMCAgICAxICAgICAxIDIgICAgICAgIDMgICAgICAgICAgMzQgICAgICAgICA0MiAgICAgICAgMAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gICAgICAgICAgICAtLS0tLS0tLS0tICAtLS0tLS0tLS0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAogCmRpZmYgLS1naXQgYS9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weSBiL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CmluZGV4IGRkNTdkY2YuLjMwZDVmY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CisrKyBiL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CkBAIC0xMDUsMTEgKzEwNSwxMSBAQAogCiAgICAgZGVmIF9zdWJwcm9jZXNzX2NhbGwoc2VsZiwgY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLCBlbnY9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6Ci0gICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAne30nIi5mb3JtYXQoIiAiLmpvaW4oY21kKSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAnJXMnIiwgIiAiLmpvaW4oY21kKSkKICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQsIHN0ZG91dD1zdGRvdXQsIGVudj1lbnYsICoqa3dhcmdzKQogCiAgICAgZGVmIF9zdWJwcm9jZXNzX291dHB1dChzZWxmLCBjbWQsIGVudj1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAne30nIi5mb3JtYXQoIiAiLmpvaW4oY21kKSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAnJXMnIiwgIiAiLmpvaW4oY21kKSkKICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBlbnY9ZW52KQogICAgICAgICByZXR1cm4gb3V0LnN0cmlwKCkuZGVjb2RlKCJ1dGYtOCIpCiAKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuaGFzX3NyYzoKICAgICAgICAgICAgICAgICBzZWxmLl9kb3dubG9hZF9vcGVuc3NsKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJBbHJlYWR5IGhhcyBzcmMge30iLmZvcm1hdChzZWxmLnNyY19maWxlKSkKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkFscmVhZHkgaGFzIHNyYyAlcyIsIHNlbGYuc3JjX2ZpbGUpCiAgICAgICAgICAgICBzZWxmLl91bnBhY2tfb3BlbnNzbCgpCiAgICAgICAgICAgICBzZWxmLl9idWlsZF9vcGVuc3NsKCkKICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfb3BlbnNzbCgpCmRpZmYgLS1naXQgYS9Ub29scy90ei96ZHVtcC5weSBiL1Rvb2xzL3R6L3pkdW1wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NGI0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy90ei96ZHVtcC5weQpAQCAtMCwwICsxLDgxIEBACitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCBzdHJ1Y3QKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCisKK3R0aW5mbyA9IG5hbWVkdHVwbGUoJ3R0aW5mbycsIFsndHRfZ210b2ZmJywgJ3R0X2lzZHN0JywgJ3R0X2FiYnJpbmQnXSkKKworY2xhc3MgVFpJbmZvOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFuc2l0aW9ucywgdHlwZV9pbmRpY2VzLCB0dGlzLCBhYmJycyk6CisgICAgICAgIHNlbGYudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucworICAgICAgICBzZWxmLnR5cGVfaW5kaWNlcyA9IHR5cGVfaW5kaWNlcworICAgICAgICBzZWxmLnR0aXMgPSB0dGlzCisgICAgICAgIHNlbGYuYWJicnMgPSBhYmJycworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21maWxlKGNscywgZmlsZW9iaik6CisgICAgICAgIGlmIGZpbGVvYmoucmVhZCg0KS5kZWNvZGUoKSAhPSAiVFppZiI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSB6b25laW5mbyBmaWxlIikKKyAgICAgICAgZmlsZW9iai5zZWVrKDIwKQorICAgICAgICBoZWFkZXIgPSBmaWxlb2JqLnJlYWQoMjQpCisgICAgICAgIHR6aCA9ICh0emhfdHRpc2dtdGNudCwgdHpoX3R0aXNzdGRjbnQsIHR6aF9sZWFwY250LAorICAgICAgICAgICAgICAgdHpoX3RpbWVjbnQsIHR6aF90eXBlY250LCB0emhfY2hhcmNudCkgPSBzdHJ1Y3QudW5wYWNrKCI+NmwiLCBoZWFkZXIpCisgICAgICAgIHRyYW5zaXRpb25zID0gYXJyYXkoJ2knKQorICAgICAgICB0cmFuc2l0aW9ucy5mcm9tZmlsZShmaWxlb2JqLCB0emhfdGltZWNudCkKKyAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciAhPSAnYmlnJzoKKyAgICAgICAgICAgIHRyYW5zaXRpb25zLmJ5dGVzd2FwKCkKKworICAgICAgICB0eXBlX2luZGljZXMgPSBhcnJheSgnQicpCisgICAgICAgIHR5cGVfaW5kaWNlcy5mcm9tZmlsZShmaWxlb2JqLCB0emhfdGltZWNudCkKKworICAgICAgICB0dGlzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UodHpoX3R5cGVjbnQpOgorICAgICAgICAgICAgdHRpcy5hcHBlbmQodHRpbmZvLl9tYWtlKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmaWxlb2JqLnJlYWQoNikpKSkKKworICAgICAgICBhYmJycyA9IGZpbGVvYmoucmVhZCh0emhfY2hhcmNudCkKKworICAgICAgICBzZWxmID0gY2xzKHRyYW5zaXRpb25zLCB0eXBlX2luZGljZXMsIHR0aXMsIGFiYnJzKQorICAgICAgICBzZWxmLnR6aCA9IHR6aAorCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZHVtcChzZWxmLCBzdHJlYW0sIHN0YXJ0PU5vbmUsIGVuZD1Ob25lKToKKyAgICAgICAgZm9yIGosICh0cmFucywgaSkgaW4gZW51bWVyYXRlKHppcChzZWxmLnRyYW5zaXRpb25zLCBzZWxmLnR5cGVfaW5kaWNlcykpOgorICAgICAgICAgICAgdXRjID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0cmFucykKKyAgICAgICAgICAgIHR0aSA9IHNlbGYudHRpc1tpXQorICAgICAgICAgICAgbG10ID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0cmFucyArIHR0aS50dF9nbXRvZmYpCisgICAgICAgICAgICBhYmJyaW5kID0gdHRpLnR0X2FiYnJpbmQKKyAgICAgICAgICAgIGFiYnIgPSBzZWxmLmFiYnJzW2FiYnJpbmQ6c2VsZi5hYmJycy5maW5kKDAsIGFiYnJpbmQpXS5kZWNvZGUoKQorICAgICAgICAgICAgaWYgaiA+IDA6CisgICAgICAgICAgICAgICAgcHJldl90dGkgPSBzZWxmLnR0aXNbc2VsZi50eXBlX2luZGljZXNbaiAtIDFdXQorICAgICAgICAgICAgICAgIHNoaWZ0ID0gIiAlK2ciICUgKCh0dGkudHRfZ210b2ZmIC0gcHJldl90dGkudHRfZ210b2ZmKSAvIDM2MDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNoaWZ0ID0gJycKKyAgICAgICAgICAgIHByaW50KCIlcyBVVEMgPSAlcyAlLTVzIGlzZHN0PSVkIiAlICh1dGMsIGxtdCwgYWJiciwgdHRpWzFdKSArIHNoaWZ0LCBmaWxlPXN0cmVhbSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB6b25lbGlzdChjbHMsIHpvbmVkaXI9Jy91c3Ivc2hhcmUvem9uZWluZm8nKToKKyAgICAgICAgem9uZXMgPSBbXQorICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2Fsayh6b25lZGlyKToKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocCwgJ3JiJykgYXMgbzoKKyAgICAgICAgICAgICAgICAgICAgbWFnaWMgPSAgby5yZWFkKDQpCisgICAgICAgICAgICAgICAgaWYgbWFnaWMgPT0gYidUWmlmJzoKKyAgICAgICAgICAgICAgICAgICAgem9uZXMuYXBwZW5kKHBbbGVuKHpvbmVkaXIpICsgMTpdKQorICAgICAgICByZXR1cm4gem9uZXMKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpZiBsZW4oc3lzLmFyZ3YpIDwgMjoKKyAgICAgICAgem9uZXMgPSBUWkluZm8uem9uZWxpc3QoKQorICAgICAgICBmb3IgeiBpbiB6b25lczoKKyAgICAgICAgICAgIHByaW50KHopCisgICAgICAgIHN5cy5leGl0KCkKKyAgICBmaWxlcGF0aCA9IHN5cy5hcmd2WzFdCisgICAgaWYgbm90IGZpbGVwYXRoLnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4oJy91c3Ivc2hhcmUvem9uZWluZm8nLCBmaWxlcGF0aCkKKyAgICB3aXRoIG9wZW4oZmlsZXBhdGgsICdyYicpIGFzIGZpbGVvYmo6CisgICAgICAgIHR6aSA9IFRaSW5mby5mcm9tZmlsZShmaWxlb2JqKQorICAgIHR6aS5kdW1wKHN5cy5zdGRvdXQpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5IGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQppbmRleCA0YzIxNDY5Li4zMWYwMTEyIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKQEAgLTM3LDExICszNywxMSBAQAogIyBQbGFjZWhvbGRlciBmb3IgYSBtaXNzaW5nIGNvZGUgcG9pbnQKIE1JU1NJTkdfQ09ERSA9IC0xCiAKLW1hcFJFID0gcmUuY29tcGlsZSgnKCg/OjB4WzAtOWEtZkEtRl0rXCs/KSspJwotICAgICAgICAgICAgICAgICAgICdccysnCi0gICAgICAgICAgICAgICAgICAgJygoPzooPzoweFswLTlhLWZBLVpdK3w8W0EtWmEtel0rPilcKz8pKiknCi0gICAgICAgICAgICAgICAgICAgJ1xzKicKLSAgICAgICAgICAgICAgICAgICAnKCMuKyk/JykKK21hcFJFID0gcmUuY29tcGlsZShyJygoPzoweFswLTlhLWZBLUZdK1wrPykrKScKKyAgICAgICAgICAgICAgICAgICByJ1xzKycKKyAgICAgICAgICAgICAgICAgICByJygoPzooPzoweFswLTlhLWZBLVpdK3w8W0EtWmEtel0rPilcKz8pKiknCisgICAgICAgICAgICAgICAgICAgcidccyonCisgICAgICAgICAgICAgICAgICAgcicoIy4rKT8nKQogCiBkZWYgcGFyc2Vjb2Rlcyhjb2RlcywgbGVuPWxlbiwgcmFuZ2U9cmFuZ2UpOgogCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CmluZGV4IDcxM2UxNzUuLjVkODAxNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CkBAIC00Miw3ICs0Miw3IEBACiAjICAgKiBEb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QsIGFuZAogIyAgICogRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CiAjICAgKiBEb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0ICh0d28gb2NjdXJyZW5jZXMpCi1VTklEQVRBX1ZFUlNJT04gPSAiOC4wLjAiCitVTklEQVRBX1ZFUlNJT04gPSAiOS4wLjAiCiBVTklDT0RFX0RBVEEgPSAiVW5pY29kZURhdGElcy50eHQiCiBDT01QT1NJVElPTl9FWENMVVNJT05TID0gIkNvbXBvc2l0aW9uRXhjbHVzaW9ucyVzLnR4dCIKIEVBU1RBU0lBTl9XSURUSCA9ICJFYXN0QXNpYW5XaWR0aCVzLnR4dCIKQEAgLTc5Niw2ICs3OTYsNyBAQAogICAgIGNhdGVnb3J5X2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICBkZWNpbWFsX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICBtaXJyb3JlZF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCisgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCiAgICAgIyBJbiBudW1lcmljIGRhdGEsIDAgbWVhbnMgIm5vIGNoYW5nZSIsCiAgICAgIyAtMSBtZWFucyAiZGlkIG5vdCBoYXZlIGEgbnVtZXJpYyB2YWx1ZQogICAgIG51bWVyaWNfY2hhbmdlcyA9IFswXSAqIDB4MTEwMDAwCkBAIC04NjIsNiArODYzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE0OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UgdG8gc2ltcGxlIHRpdGxlY2FzZSBtYXBwaW5nOyBpZ25vcmUKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE1OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UgdG8gZWFzdCBhc2lhbiB3aWR0aAorICAgICAgICAgICAgICAgICAgICAgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzW2ldID0gRUFTVEFTSUFOV0lEVEhfTkFNRVMuaW5kZXgodmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAxNjoKICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVyaXZlZCBwcm9wZXJ0eSBjaGFuZ2VzOyBub3QgeWV0CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCkBAIC04NzMsOCArODc3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIERpZmZlcmVuY2UoRXhjZXB0aW9uKTpwYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBEaWZmZXJlbmNlKGhleChpKSwgaywgb2xkLnRhYmxlW2ldLCBuZXcudGFibGVbaV0pCiAgICAgbmV3LmNoYW5nZWQuYXBwZW5kKCh2ZXJzaW9uLCBsaXN0KHppcChiaWRpcl9jaGFuZ2VzLCBjYXRlZ29yeV9jaGFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfY2hhbmdlcywgbWlycm9yZWRfY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX2NoYW5nZXMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfY2hhbmdlcywgbWlycm9yZWRfY2hhbmdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfY2hhbmdlcykpLAogICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbl9jaGFuZ2VzKSkKIAogZGVmIG9wZW5fZGF0YSh0ZW1wbGF0ZSwgdmVyc2lvbik6CmRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRleCAyYTc0NWU1Li45YTljYzU1IDEwMDY0NAotLS0gYS9hY2xvY2FsLm00CisrKyBiL2FjbG9jYWwubTQKQEAgLTEzLDcgKzEzLDcgQEAKIAogbTRfaWZuZGVmKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFttNF9kZWZ1bihbX0FNX0NPTkZJR19NQUNST19ESVJTXSwgW10pbTRfZGVmdW4oW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW19BTV9DT05GSUdfTUFDUk9fRElSUygkQCldKV0pCiBkbmwgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgIC0qLSBBdXRvY29uZiAtKi0KLWRubCBzZXJpYWwgMTEgKHBrZy1jb25maWctMC4yOS4xKQorZG5sIHNlcmlhbCAxMSAocGtnLWNvbmZpZy0wLjI5KQogZG5sCiBkbmwgQ29weXJpZ2h0IMKpIDIwMDQgU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KIGRubCBDb3B5cmlnaHQgwqkgMjAxMi0yMDE1IERhbiBOaWNob2xzb24gPGRibi5saXN0c0BnbWFpbC5jb20+CkBAIC01NSw3ICs1NSw3IEBACiBkbmwgU2VlIHRoZSAiU2luY2UiIGNvbW1lbnQgZm9yIGVhY2ggbWFjcm8geW91IHVzZSB0byBzZWUgd2hhdCB2ZXJzaW9uCiBkbmwgb2YgdGhlIG1hY3JvcyB5b3UgcmVxdWlyZS4KIG00X2RlZnVuKFtQS0dfUFJFUkVRXSwKLVttNF9kZWZpbmUoW1BLR19NQUNST1NfVkVSU0lPTl0sIFswLjI5LjFdKQorW200X2RlZmluZShbUEtHX01BQ1JPU19WRVJTSU9OXSwgWzAuMjldKQogbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKFBLR19NQUNST1NfVkVSU0lPTiwgWyQxXSksIC0xLAogICAgIFttNF9mYXRhbChbcGtnLm00IHZlcnNpb24gJDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIGJ1dCBdUEtHX01BQ1JPU19WRVJTSU9OWyBmb3VuZF0pXSkKIF0pZG5sIFBLR19QUkVSRVEKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCAxOWZjYmQxLi4wMDA5ODZmIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjUuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNi4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHBzOi8vYnVncy5weXRob24ub3JnLz4uCiAjCkBAIC01ODAsOCArNTgwLDggQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdweXRob24nCiBQQUNLQUdFX1RBUk5BTUU9J3B5dGhvbicKLVBBQ0tBR0VfVkVSU0lPTj0nMy41JwotUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjUnCitQQUNLQUdFX1ZFUlNJT049JzMuNicKK1BBQ0tBR0VfU1RSSU5HPSdweXRob24gMy42JwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHBzOi8vYnVncy5weXRob24ub3JnLycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY0MiwxMSArNjQyLDEzIEBACiBNQUNIREVQX09CSlMKIERZTkxPQURGSUxFCiBETElOQ0xESVIKK0RUUkFDRV9PQkpTCitEVFJBQ0VfSEVBREVSUworREZMQUdTCitEVFJBQ0UKIFRIUkVBRE9CSgogTERMQVNUCiBVU0VfVEhSRUFEX01PRFVMRQotU0lHTkFMX09CSlMKLVVTRV9TSUdOQUxfTU9EVUxFCiBUQ0xUS19MSUJTCiBUQ0xUS19JTkNMVURFUwogTElCRkZJX0lOQ0xVREVESVIKQEAgLTcwOCwxMiArNzEwLDEzIEBACiBCVUlMREVYRUVYVAogRUdSRVAKIE5PX0FTX05FRURFRAorTVVMVElBUkNIX0NQUEZMQUdTCiBQTEFURk9STV9UUklQTEVUCi1QTEFURElSCiBNVUxUSUFSQ0gKIGFjX2N0X0NYWAogTUFJTkNDCiBDWFgKK1NFRAogR1JFUAogQ1BQCiBPQkpFWFQKQEAgLTc4MSw3ICs3ODQsNiBAQAogZG9jZGlyCiBvbGRpbmNsdWRlZGlyCiBpbmNsdWRlZGlyCi1ydW5zdGF0ZWRpcgogbG9jYWxzdGF0ZWRpcgogc2hhcmVkc3RhdGVkaXIKIHN5c2NvbmZkaXIKQEAgLTgyNywxNCArODI5LDEzIEBACiB3aXRoX3RjbHRrX2luY2x1ZGVzCiB3aXRoX3RjbHRrX2xpYnMKIHdpdGhfZGJtbGlib3JkZXIKLXdpdGhfc2lnbmFsX21vZHVsZQogd2l0aF90aHJlYWRzCiB3aXRoX3RocmVhZAogZW5hYmxlX2lwdjYKIHdpdGhfZG9jX3N0cmluZ3MKLXdpdGhfdHNjCiB3aXRoX3B5bWFsbG9jCiB3aXRoX3ZhbGdyaW5kCit3aXRoX2R0cmFjZQogd2l0aF9mcGVjdGwKIHdpdGhfbGlibQogd2l0aF9saWJjCkBAIC04OTMsNyArODk0LDYgQEAKIHN5c2NvbmZkaXI9JyR7cHJlZml4fS9ldGMnCiBzaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScKIGxvY2Fsc3RhdGVkaXI9JyR7cHJlZml4fS92YXInCi1ydW5zdGF0ZWRpcj0nJHtsb2NhbHN0YXRlZGlyfS9ydW4nCiBpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKIG9sZGluY2x1ZGVkaXI9Jy91c3IvaW5jbHVkZScKIGRvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FHRV9UQVJOQU1FfScKQEAgLTExNDYsMTUgKzExNDYsNiBAQAogICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKICAgICBzaWxlbnQ9eWVzIDs7CiAKLSAgLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpciB8IC0tcnVuc3RhdGVkaSB8IC0tcnVuc3RhdGVkIFwKLSAgfCAtLXJ1bnN0YXRlIHwgLS1ydW5zdGF0IHwgLS1ydW5zdGEgfCAtLXJ1bnN0IHwgLS1ydW5zIFwKLSAgfCAtLXJ1biB8IC0tcnUgfCAtLXIpCi0gICAgYWNfcHJldj1ydW5zdGF0ZWRpciA7OwotICAtcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaT0qIHwgLS1ydW5zdGF0ZWQ9KiBcCi0gIHwgLS1ydW5zdGF0ZT0qIHwgLS1ydW5zdGF0PSogfCAtLXJ1bnN0YT0qIHwgLS1ydW5zdD0qIHwgLS1ydW5zPSogXAotICB8IC0tcnVuPSogfCAtLXJ1PSogfCAtLXI9KikKLSAgICBydW5zdGF0ZWRpcj0kYWNfb3B0YXJnIDs7Ci0KICAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCiAgICAgYWNfcHJldj1zYmluZGlyIDs7CiAgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCkBAIC0xMjkyLDcgKzEyODMsNyBAQAogZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcCiAJCWRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyIGluY2x1ZGVkaXIgXAogCQlvbGRpbmNsdWRlZGlyIGRvY2RpciBpbmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRpciBwc2RpciBcCi0JCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyIHJ1bnN0YXRlZGlyCisJCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyCiBkbwogICBldmFsIGFjX3ZhbD1cJCRhY192YXIKICAgIyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcy4KQEAgLTE0MDUsNyArMTM5Niw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy42IHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KIAogVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCiAKQEAgLTE0NDUsNyArMTQzNiw2IEBACiAgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQogICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQogICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCi0gIC0tcnVuc3RhdGVkaXI9RElSICAgICAgIG1vZGlmaWFibGUgcGVyLXByb2Nlc3MgZGF0YSBbTE9DQUxTVEFURURJUi9ydW5dCiAgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCiAgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KICAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KQEAgLTE0NzIsNyArMTQ2Miw3IEBACiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuNToiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjY6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTUzMSwxNSArMTUyMSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciB0byBjaGVjayBkYiBiYWNrZW5kcyBmb3IgZGJtLiBWYWxpZCB2YWx1ZSBpcyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uIHNlcGFyYXRlZCBzdHJpbmcgd2l0aCB0aGUgYmFja2VuZCBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAgICBgbmRibScsIGBnZGJtJyBhbmQgYGJkYicuCi0gIC0td2l0aC1zaWduYWwtbW9kdWxlICAgIGRpc2FibGUvZW5hYmxlIHNpZ25hbCBtb2R1bGUKICAgLS13aXRoKG91dCktdGhyZWFkc1s9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlL2VuYWJsZSB0aHJlYWQgc3VwcG9ydAogICAtLXdpdGgob3V0KS10aHJlYWRbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwcmVjYXRlZDsgdXNlIC0td2l0aChvdXQpLXRocmVhZHMKICAgLS13aXRoKG91dCktZG9jLXN0cmluZ3MgZGlzYWJsZS9lbmFibGUgZG9jdW1lbnRhdGlvbiBzdHJpbmdzCi0gIC0td2l0aChvdXQpLXRzYyAgICAgICAgIGVuYWJsZS9kaXNhYmxlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGUKICAgLS13aXRoKG91dCktcHltYWxsb2MgICAgZGlzYWJsZS9lbmFibGUgc3BlY2lhbGl6ZWQgbWFsbG9jcwogICAtLXdpdGgtdmFsZ3JpbmQgICAgICAgICBFbmFibGUgVmFsZ3JpbmQgc3VwcG9ydAorICAtLXdpdGgob3V0KS1kdHJhY2UgICAgICBkaXNhYmxlL2VuYWJsZSBEVHJhY2Ugc3VwcG9ydAogICAtLXdpdGgtZnBlY3RsICAgICAgICAgICBlbmFibGUgU0lHRlBFIGNhdGNoaW5nCiAgIC0td2l0aC1saWJtPVNUUklORyAgICAgIG1hdGggbGlicmFyeQogICAtLXdpdGgtbGliYz1TVFJJTkcgICAgICBDIGxpYnJhcnkKQEAgLTE2MzEsNyArMTYyMCw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjUKK3B5dGhvbiBjb25maWd1cmUgMy42CiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTk4NCwxMzYgKzE5NzMsNiBAQAogCiB9ICMgYWNfZm5fY19jaGVja190eXBlCiAKLSMgYWNfZm5fY19maW5kX3VpbnRYX3QgTElORU5PIEJJVFMgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaW5kcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB3aWR0aCBCSVRTLCBzZXR0aW5nIGNhY2hlIHZhcmlhYmxlIFZBUgotIyBhY2NvcmRpbmdseS4KLWFjX2ZuX2NfZmluZF91aW50WF90ICgpCi17Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdWludCQyX3QiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVpbnQkMl90Li4uICIgPiY2OyB9Ci1pZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgZXZhbCAiJDM9bm8iCi0gICAgICMgT3JkZXIgaXMgaW1wb3J0YW50IC0gbmV2ZXIgY2hlY2sgYSB0eXBlIHRoYXQgaXMgcG90ZW50aWFsbHkgc21hbGxlcgotICAgICAjIHRoYW4gaGFsZiBvZiB0aGUgZXhwZWN0ZWQgdGFyZ2V0IHdpZHRoLgotICAgICBmb3IgYWNfdHlwZSBpbiB1aW50JDJfdCAndW5zaWduZWQgaW50JyAndW5zaWduZWQgbG9uZyBpbnQnIFwKLQkgJ3Vuc2lnbmVkIGxvbmcgbG9uZyBpbnQnICd1bnNpZ25lZCBzaG9ydCBpbnQnICd1bnNpZ25lZCBjaGFyJzsgZG8KLSAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotaW50Ci1tYWluICgpCi17Ci1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoKCRhY190eXBlKSAtMSA+PiAoJDIgLyAyIC0gMSkpID4+ICgkMiAvIDIgLSAxKSA9PSAzKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBjYXNlICRhY190eXBlIGluICMoCi0gIHVpbnQkMl90KSA6Ci0gICAgZXZhbCAiJDM9eWVzIiA7OyAjKAotICAqKSA6Ci0gICAgZXZhbCAiJDM9XCRhY190eXBlIiA7OwotZXNhYwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkMyJcIiA9IHgibm8iOyB0aGVuIDoKLQotZWxzZQotICBicmVhawotZmkKLSAgICAgZG9uZQotZmkKLWV2YWwgYWNfcmVzPVwkJDMKLQkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfZmluZF91aW50WF90Ci0KLSMgYWNfZm5fY19maW5kX2ludFhfdCBMSU5FTk8gQklUUyBWQVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmluZHMgYSBzaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKLSMgYWNjb3JkaW5nbHkuCi1hY19mbl9jX2ZpbmRfaW50WF90ICgpCi17Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW50JDJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgaW50JDJfdC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGV2YWwgIiQzPW5vIgotICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKLSAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KLSAgICAgZm9yIGFjX3R5cGUgaW4gaW50JDJfdCAnaW50JyAnbG9uZyBpbnQnIFwKLQkgJ2xvbmcgbG9uZyBpbnQnICdzaG9ydCBpbnQnICdzaWduZWQgY2hhcic7IGRvCi0gICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLQkgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OwotaW50Ci1tYWluICgpCi17Ci1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgwIDwgKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkpXTsKLXRlc3RfYXJyYXkgWzBdID0gMDsKLXJldHVybiB0ZXN0X2FycmF5IFswXTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0JICAgICAgICBlbnVtIHsgTiA9ICQyIC8gMiAtIDEgfTsKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkKLQkJIDwgKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMikpXTsKLXRlc3RfYXJyYXkgWzBdID0gMDsKLXJldHVybiB0ZXN0X2FycmF5IFswXTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLSAgY2FzZSAkYWNfdHlwZSBpbiAjKAotICBpbnQkMl90KSA6Ci0gICAgZXZhbCAiJDM9eWVzIiA7OyAjKAotICAqKSA6Ci0gICAgZXZhbCAiJDM9XCRhY190eXBlIiA7OwotZXNhYwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkMyJcIiA9IHgibm8iOyB0aGVuIDoKLQotZWxzZQotICBicmVhawotZmkKLSAgICAgZG9uZQotZmkKLWV2YWwgYWNfcmVzPVwkJDMKLQkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfZmluZF9pbnRYX3QKLQogIyBhY19mbl9jX2NvbXB1dGVfaW50IExJTkVOTyBFWFBSIFZBUiBJTkNMVURFUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUcmllcyB0byBmaW5kIHRoZSBjb21waWxlLXRpbWUgdmFsdWUgb2YgRVhQUiBpbiBhIHByb2dyYW0gdGhhdCBpbmNsdWRlcwpAQCAtMjQ3MCw3ICsyMzI5LDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuNiwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0zMDU5LDcgKzI5MTgsNyBAQAogICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgogICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCiAJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCi0JICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLDMpKSc7IHRoZW4KKwkgICAgaWYgJGludGVycCAtYyAiaW1wb3J0IHN5cztzeXMuZXhpdChub3QgJy4nLmpvaW4oc3RyKG4pIGZvciBuIGluIHN5cy52ZXJzaW9uX2luZm9bOjJdKSA9PSAnJFBBQ0tBR0VfVkVSU0lPTicpIjsgdGhlbgogCSAgICAgICAgYnJlYWsKIAkgICAgZmkKICAgICAgICAgICAgIGludGVycD0KQEAgLTMwNjksNyArMjkyOCw3IEBACiAJZmkKICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRpbnRlcnAiID4mNQogJGFzX2VjaG8gIiRpbnRlcnAiID4mNjsgfQotCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAorCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliIF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPV9zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpICckaW50ZXJwCiAgICAgZmkKICAgICAjIFVzZWQgdG8gY29tbWVudCBvdXQgc3R1ZmYgZm9yIHJlYnVpbGRpbmcgZ2VuZXJhdGVkIGZpbGVzCiAgICAgR0VORVJBVEVEX0NPTU1FTlQ9JyMnCkBAIC0zMDk3LDcgKzI5NTYsNyBAQAogbXYgY29uZmRlZnMuaC5uZXcgY29uZmRlZnMuaAogCiAKLVZFUlNJT049My41CitWRVJTSU9OPTMuNgogCiAjIFZlcnNpb24gbnVtYmVyIG9mIFB5dGhvbidzIG93biBzaGFyZWQgbGlicmFyeSBmaWxlLgogCkBAIC00NzE2LDYgKzQ1NzUsNzUgQEAKICBHUkVQPSIkYWNfY3ZfcGF0aF9HUkVQIgogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICBhY19zY3JpcHQ9cy9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIvCisgICAgIGZvciBhY19pIGluIDEgMiAzIDQgNSA2IDc7IGRvCisgICAgICAgYWNfc2NyaXB0PSIkYWNfc2NyaXB0JGFzX25sJGFjX3NjcmlwdCIKKyAgICAgZG9uZQorICAgICBlY2hvICIkYWNfc2NyaXB0IiAyPi9kZXYvbnVsbCB8IHNlZCA5OXEgPmNvbmZ0ZXN0LnNlZAorICAgICB7IGFjX3NjcmlwdD07IHVuc2V0IGFjX3NjcmlwdDt9CisgICAgIGlmIHRlc3QgLXogIiRTRUQiOyB0aGVuCisgIGFjX3BhdGhfU0VEX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfU0VEPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9TRUQiIHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9TRUQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX1NFRAorY2FzZSBgIiRhY19wYXRoX1NFRCIgLS12ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIgYWNfcGF0aF9TRURfZm91bmQ9Ojs7CisqKQorICBhY19jb3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorICB3aGlsZSA6CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKyAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJycgPj4gImNvbmZ0ZXN0Lm5sIgorICAgICIkYWNfcGF0aF9TRUQiIC1mIGNvbmZ0ZXN0LnNlZCA8ICJjb25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJyZWFrCisgICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhaworICAgIGFzX2ZuX2FyaXRoICRhY19jb3VudCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAorICAgIGlmIHRlc3QgJGFjX2NvdW50IC1ndCAke2FjX3BhdGhfU0VEX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX1NFRD0iJGFjX3BhdGhfU0VEIgorICAgICAgYWNfcGF0aF9TRURfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9TRURfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX1NFRCI7IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX1NFRD0kU0VECitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX1NFRCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3BhdGhfU0VEIiA+JjY7IH0KKyBTRUQ9IiRhY19jdl9wYXRoX1NFRCIKKyAgcm0gLWYgY29uZnRlc3Quc2VkCisKIAogCiAKQEAgLTUyODksNyArNTIxNywzMSBAQAogI3VuZGVmIHBvd2VycGMKICN1bmRlZiBzcGFyYwogI3VuZGVmIHVuaXgKLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2kzODZfXykKKyAgICAgICAgaTY4Ni1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKQorIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIGFhcmNoNjRfaWxwMzItbGludXgtYW5kcm9pZAorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWFuZHJvaWQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtYW5kcm9pZGVhYmkKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtYW5kcm9pZAorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtNTQwNSwxMCArNTM1NywxMyBAQAogICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4JE1VTFRJQVJDSDsgdGhlbgogICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQiICIkTElORU5PIiA1CiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCiAKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKIAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2wsLS1uby1hcy1uZWVkZWQiID4mNQpAQCAtNTcwMiw2ICs1NjU3LDMyIEBACiAKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBBbmRyb2lkIEFQSSBsZXZlbC4uLiAiID4mNjsgfQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CitfX0FORFJPSURfQVBJX18KKyNlbHNlCisjZXJyb3Igbm90IEFuZHJvaWQKKyNlbmRpZgorRU9GCisKK2lmICRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBBTkRST0lEX0FQSV9MRVZFTD1gZ3JlcCAtdiAnXiMnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgJ14gKiQnYAorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFORFJPSURfQVBJX0xFVkVMIiA+JjUKKyRhc19lY2hvICIkQU5EUk9JRF9BUElfTEVWRUwiID4mNjsgfQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEFORFJPSURfQVBJX0xFVkVMICRBTkRST0lEX0FQSV9MRVZFTAorX0FDRU9GCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBBbmRyb2lkIiA+JjUKKyRhc19lY2hvICJub3QgQW5kcm9pZCIgPiY2OyB9CitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtNjYwNCwxMyArNjU4NSwyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtNjkxOCw2ICs2OTA2LDQ5IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XZXh0cmEiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1XZXh0cmEuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgaWYgJHthY19jdl9leHRyYV93YXJuaW5ncys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKworZWxzZQorCisgICAgICAgICAgIGFjX2N2X2V4dHJhX3dhcm5pbmdzPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZXh0cmFfd2FybmluZ3MiID4mNQorJGFzX2VjaG8gIiRhY19jdl9leHRyYV93YXJuaW5ncyIgPiY2OyB9CisKKyAgICBpZiB0ZXN0ICRhY19jdl9leHRyYV93YXJuaW5ncyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXh0cmEiCisgICAgZmkKKwogICAgICMgUHl0aG9uIGRvZXNuJ3QgdmlvbGF0ZSBDOTkgYWxpYXNpbmcgcnVsZXMsIGJ1dCBvbGRlciB2ZXJzaW9ucyBvZgogICAgICMgR0NDIHByb2R1Y2Ugd2FybmluZ3MgZm9yIGxlZ2FsIFB5dGhvbiBjb2RlLiAgRW5hYmxlCiAgICAgIyAtZm5vLXN0cmljdC1hbGlhc2luZyBvbiB2ZXJzaW9ucyBvZiBHQ0MgdGhhdCBzdXBwb3J0IGJ1dCBwcm9kdWNlCkBAIC03MDM4LDE0ICs3MDY5LDE0IEBACiAgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLXVudXNlZC1yZXN1bHQiCiAgICAgZmkKIAotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudC4uLiAiID4mNjsgfQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcuLi4gIiA+JjY7IH0KICAgICAgYWNfc2F2ZV9jYz0iJENDIgotICAgICBDQz0iJENDIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgotICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKLSAgICAgaWYgJHthY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZys6fSBmYWxzZTsgdGhlbiA6CisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcGFyYW1ldGVyIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC03MDYzLDI0ICs3MDk0LDY0IEBACiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKIAotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz15ZXMKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9eWVzCiAKIGVsc2UKIAotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZz1ubwogCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiBmaQogCi0gICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgogICAgICBDQz0iJGFjX3NhdmVfY2MiCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmciID4mNjsgfQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgbWlzc2luZyBmaWVsZCBpbml0aWFsaXplcnMgd2FybmluZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdlcnJvciIKKyAgICAgaWYgJHthY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnM9eWVzCisKK2Vsc2UKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMiID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiCiAgICAgZmkKIAogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb24gJENDIG1peGVkIHNpZ24gY29tcGFyaXNvbiB3YXJuaW5nIiA+JjUKQEAgLTc3MTAsNyArNzc4MSw3IEBACiBmb3IgYWNfaGVhZGVyIGluIGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtNzcxOSw3ICs3NzkwLDcgQEAKIHN5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKIHN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAogbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKLWJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAorbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKIHN5cy9lbmRpYW4uaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCkBAIC03OTQyLDYgKzgwMTMsMjQgQEAKIGZpCiAKIAorIyBibHVldG9vdGgvYmx1ZXRvb3RoLmggaGFzIGJlZW4ga25vd24gdG8gbm90IGNvbXBpbGUgd2l0aCAtc3RkPWM5OS4KKyMgaHR0cDovL3Blcm1hbGluay5nbWFuZS5vcmcvZ21hbmUubGludXguYmx1ZXoua2VybmVsLzIyMjk0CitTQVZFX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9Ii1zdGQ9Yzk5ICRDRkxBR1MiCitmb3IgYWNfaGVhZGVyIGluIGJsdWV0b290aC9ibHVldG9vdGguaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiYmx1ZXRvb3RoL2JsdWV0b290aC5oIiAiYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfQkxVRVRPT1RIX0JMVUVUT09USF9IIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKK0NGTEFHUz0kU0FWRV9DRkxBR1MKKwogIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KIGZvciBhY19oZWFkZXIgaW4gbmV0L2lmLmgKIGRvIDoKQEAgLTgxNDcsNiArODIzNiwxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtODI1Myw5NSArODM0Nyw2IEBACiBmaQogCiAKLSMgVGhlcmUgYXJlIHR3byBzZXBhcmF0ZSBjaGVja3MgZm9yIGVhY2ggb2YgdGhlIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMgd2UKLSMgbmVlZC4gIEZpcnN0IHdlIGNoZWNrIHdoZXRoZXIgdGhlIHR5cGUgaXMgYXZhaWxhYmxlIHVzaW5nIHRoZSB1c3VhbAotIyBBQ19DSEVDS19UWVBFIG1hY3JvIHdpdGggdGhlIGRlZmF1bHQgaW5jbHVkZXMgKHdoaWNoIGluY2x1ZGVzIDxpbnR0eXBlcy5oPgotIyBhbmQgPHN0ZGludC5oPiB3aGVyZSBhdmFpbGFibGUpLiAgV2UgdGhlbiBhbHNvIHVzZSB0aGUgc3BlY2lhbCB0eXBlIGNoZWNrcyBvZgotIyB0aGUgZm9ybSBBQ19UWVBFX1VJTlQzMl9ULCB3aGljaCBpbiB0aGUgY2FzZSB0aGF0IHVpbnQzMl90IGlzIG5vdCBhdmFpbGFibGUKLSMgZGlyZWN0bHksICNkZWZpbmUncyB1aW50MzJfdCB0byBiZSBhIHN1aXRhYmxlIHR5cGUuCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnQzMl90IiAiYWNfY3ZfdHlwZV91aW50MzJfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX3VpbnQzMl90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjMyIiAiYWNfY3ZfY191aW50MzJfdCIKLWNhc2UgJGFjX2N2X2NfdWludDMyX3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi0kYXNfZWNobyAiI2RlZmluZSBfVUlOVDMyX1QgMSIgPj5jb25mZGVmcy5oCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSB1aW50MzJfdCAkYWNfY3ZfY191aW50MzJfdAotX0FDRU9GCi07OwotICBlc2FjCi0KLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWludDY0X3QiICJhY19jdl90eXBlX3VpbnQ2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfdWludDY0X3QiID0geHllczsgdGhlbiA6Ci0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfVUlOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KLWFjX2ZuX2NfZmluZF91aW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX3VpbnQ2NF90IgotY2FzZSAkYWNfY3ZfY191aW50NjRfdCBpbiAjKAotICBub3x5ZXMpIDs7ICMoCi0gICopCi0KLSRhc19lY2hvICIjZGVmaW5lIF9VSU5UNjRfVCAxIiA+PmNvbmZkZWZzLmgKLQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIHVpbnQ2NF90ICRhY19jdl9jX3VpbnQ2NF90Ci1fQUNFT0YKLTs7Ci0gIGVzYWMKLQotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnQzMl90IiAiYWNfY3ZfdHlwZV9pbnQzMl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50MzJfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiMzIiICJhY19jdl9jX2ludDMyX3QiCi1jYXNlICRhY19jdl9jX2ludDMyX3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGludDMyX3QgJGFjX2N2X2NfaW50MzJfdAotX0FDRU9GCi07OwotZXNhYwotCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgImludDY0X3QiICJhY19jdl90eXBlX2ludDY0X3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV9pbnQ2NF90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0lOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLWZpCi0KLWFjX2ZuX2NfZmluZF9pbnRYX3QgIiRMSU5FTk8iICI2NCIgImFjX2N2X2NfaW50NjRfdCIKLWNhc2UgJGFjX2N2X2NfaW50NjRfdCBpbiAjKAotICBub3x5ZXMpIDs7ICMoCi0gICopCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgaW50NjRfdCAkYWNfY3ZfY19pbnQ2NF90Ci1fQUNFT0YKLTs7Ci1lc2FjCi0KLQogYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic3NpemVfdCIgImFjX2N2X3R5cGVfc3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgogaWYgdGVzdCAieCRhY19jdl90eXBlX3NzaXplX3QiID0geHllczsgdGhlbiA6CiAKQEAgLTg0MjksNiArODQzNCwzOSBAQAogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfbG9uZ19sb25nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBsb25nKSkiICJhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisKK2Vsc2UKKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfbG9uZ19sb25nIiA9IHllczsgdGhlbgorICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgbG9uZykKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CisgICBlbHNlCisgICAgIGFjX2N2X3NpemVvZl9sb25nX2xvbmc9MAorICAgZmkKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjY7IH0KKworCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0laRU9GX0xPTkdfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZworX0FDRU9GCisKKworIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKyMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKKyMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgorIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB2b2lkICoiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB2b2lkICouLi4gIiA+JjY7IH0KIGlmICR7YWNfY3Zfc2l6ZW9mX3ZvaWRfcCs6fSBmYWxzZTsgdGhlbiA6CkBAIC04NjU2LDY3ICs4Njk0LDM5IEBACiBfQUNFT0YKIAogCi0KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBzdXBwb3J0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBsb25nIGxvbmcgc3VwcG9ydC4uLiAiID4mNjsgfQotaGF2ZV9sb25nX2xvbmc9bm8KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci1sb25nIGxvbmcgeDsgeCA9IChsb25nIGxvbmcpMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTE9OR19MT05HIDEiID4+Y29uZmRlZnMuaAotCi0gIGhhdmVfbG9uZ19sb25nPXllcwotCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfbG9uZ19sb25nIiA+JjUKLSRhc19lY2hvICIkaGF2ZV9sb25nX2xvbmciID4mNjsgfQotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcyA7IHRoZW4KICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCiAjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KICMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3NpemVvZl9sb25nX2xvbmcrOn0gZmFsc2U7IHRoZW4gOgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfdWludHB0cl90Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBsb25nKSkiICJhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKHVpbnRwdHJfdCkpIiAiYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgogCiBlbHNlCi0gIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHllczsgdGhlbgogICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgbG9uZykKK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHVpbnRwdHJfdCkKIFNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgICBlbHNlCi0gICAgIGFjX2N2X3NpemVvZl9sb25nX2xvbmc9MAorICAgICBhY19jdl9zaXplb2ZfdWludHB0cl90PTAKICAgIGZpCiBmaQogCiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjUKLSRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY2OyB9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjY7IH0KIAogCiAKIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgU0laRU9GX0xPTkdfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZworI2RlZmluZSBTSVpFT0ZfVUlOVFBUUl9UICRhY19jdl9zaXplb2ZfdWludHB0cl90CiBfQUNFT0YKIAogCi1maQogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGRvdWJsZSBzdXBwb3J0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBsb25nIGRvdWJsZSBzdXBwb3J0Li4uICIgPiY2OyB9CkBAIC04Nzc5LDMzICs4Nzg5LDYgQEAKIAogZmkKIAotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfQm9vbCBzdXBwb3J0IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBfQm9vbCBzdXBwb3J0Li4uICIgPiY2OyB9Ci1oYXZlX2M5OV9ib29sPW5vCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotX0Jvb2wgeDsgeCA9IChfQm9vbCkwOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DOTlfQk9PTCAxIiA+PmNvbmZkZWZzLmgKLQotICBoYXZlX2M5OV9ib29sPXllcwotCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfYzk5X2Jvb2wiID4mNQotJGFzX2VjaG8gIiRoYXZlX2M5OV9ib29sIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2M5OV9ib29sIiA9IHllcyA7IHRoZW4KICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCiAjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KQEAgLTg4MzksNTYgKzg4MjIsNiBAQAogX0FDRU9GCiAKIAotZmkKLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAidWludHB0cl90IiAiYWNfY3ZfdHlwZV91aW50cHRyX3QiICIjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWYKLSIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91aW50cHRyX3QiID0geHllczsgdGhlbiA6Ci0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgSEFWRV9VSU5UUFRSX1QgMQotX0FDRU9GCi0KLSMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCi0jIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCi0jIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KLSMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgdWludHB0cl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgdWludHB0cl90Li4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3NpemVvZl91aW50cHRyX3QrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mICh1aW50cHRyX3QpKSIgImFjX2N2X3NpemVvZl91aW50cHRyX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKLQotZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV91aW50cHRyX3QiID0geWVzOyB0aGVuCi0gICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAodWludHB0cl90KQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KLSAgIGVsc2UKLSAgICAgYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdD0wCi0gICBmaQotZmkKLQotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNjsgfQotCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBTSVpFT0ZfVUlOVFBUUl9UICRhY19jdl9zaXplb2ZfdWludHB0cl90Ci1fQUNFT0YKLQotCi1maQotCiAKICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCkBAIC04OTMxLDggKzg4NjQsNiBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gZW5hYmxlIGxhcmdlIGZpbGUgc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KIGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfb2ZmX3QiIC1ndCAiJGFjX2N2X3NpemVvZl9sb25nIiAtYSBcCiAJIiRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiAtZ2UgIiRhY19jdl9zaXplb2Zfb2ZmX3QiOyB0aGVuCiAKQEAgLTg5NDQsMTAgKzg4NzUsNiBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKIAogIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKICMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKQEAgLTEwMTA1LDExICsxMDAzMiwyNyBAQAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zeXN0ZW1fZmZpIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fZmZpK3NldH0iID0gc2V0OyB0aGVuIDoKICAgd2l0aHZhbD0kd2l0aF9zeXN0ZW1fZmZpOwotZWxzZQotICB3aXRoX3N5c3RlbV9mZmk9Im5vIgogZmkKIAogCitjYXNlICIkd2l0aF9zeXN0ZW1fZmZpIiBpbgorICAgICIiKQorICAgICAgICBjYXNlICRhY19zeXNfc3lzdGVtIGluCisgICAgICAgICAgICBEYXJ3aW4pCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICB3aXRoX3N5c3RlbV9mZmk9InllcyIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgeWVzfG5vKQorICAgICAgICA7OworICAgICopCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICItLXdpdGgtc3lzdGVtLWZmaSBhY2NlcHRzIG5vIGFyZ3VtZW50cyIgIiRMSU5FTk8iIDUKKyAgICAgICAgOzsKK2VzYWMKKwogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCiBlbHNlCkBAIC0xMDIxMiwzMiArMTAxNTUsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2RibWxpYm9yZGVyIiA+JjUKICRhc19lY2hvICIkd2l0aF9kYm1saWJvcmRlciIgPiY2OyB9CiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLQotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtc2lnbmFsLW1vZHVsZSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUuLi4gIiA+JjY7IH0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC1zaWduYWwtbW9kdWxlIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9zaWduYWxfbW9kdWxlOwotZmkKLQotCi1pZiB0ZXN0IC16ICIkd2l0aF9zaWduYWxfbW9kdWxlIgotdGhlbiB3aXRoX3NpZ25hbF9tb2R1bGU9InllcyIKLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfc2lnbmFsX21vZHVsZSIgPiY1Ci0kYXNfZWNobyAiJHdpdGhfc2lnbmFsX21vZHVsZSIgPiY2OyB9Ci0KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlfSIgPSAieWVzIjsgdGhlbgotCVVTRV9TSUdOQUxfTU9EVUxFPSIiCi0JU0lHTkFMX09CSlM9IiIKLWVsc2UKLQlVU0VfU0lHTkFMX01PRFVMRT0iIyIKLQlTSUdOQUxfT0JKUz0iUGFyc2VyL2ludHJjaGVjay5vIFB5dGhvbi9zaWdjaGVjay5vIgotZmkKLQogIyBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgU2V0dXAuY29uZmlnCiAKIFVTRV9USFJFQURfTU9EVUxFPSIiCkBAIC0xMTA1NCwzNyArMTA5NzEsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE9TWCAxMC41IFNESyBvciBsYXRlci4uLiAiID4mNjsgfQotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0gICNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+Ci1pbnQKLW1haW4gKCkKLXsKLUZTSU9SZWZOdW0gZlJlZiA9IDAKLSAgOwotICByZXR1cm4gMDsKLX0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PU1gxMDVfU0RLIDEiID4+Y29uZmRlZnMuaAotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0KLWVsc2UKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotCiAjIENoZWNrIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWRvYy1zdHJpbmdzLi4uICIgPiY2OyB9CkBAIC0xMTEwNywyOSArMTA5OTMsNiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2RvY19zdHJpbmdzIiA+JjUKICRhc19lY2hvICIkd2l0aF9kb2Nfc3RyaW5ncyIgPiY2OyB9CiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtdHNjIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtdHNjLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtdHNjIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF90c2Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICB3aXRodmFsPSR3aXRoX3RzYzsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbgotCi0kYXNfZWNobyAiI2RlZmluZSBXSVRIX1RTQyAxIiA+PmNvbmZkZWZzLmgKLQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci1lbHNlIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KICMgQ2hlY2sgZm9yIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2Mgc3VwcG9ydAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXB5bWFsbG9jIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtcHltYWxsb2MuLi4gIiA+JjY7IH0KQEAgLTExMTgyLDYgKzExMDQ1LDEwMiBAQAogICAgIE9QVD0iLUREWU5BTUlDX0FOTk9UQVRJT05TX0VOQUJMRUQ9MSAkT1BUIgogZmkKIAorIyBDaGVjayBmb3IgRFRyYWNlIHN1cHBvcnQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1kdHJhY2Ugd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2R0cmFjZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfZHRyYWNlOworZWxzZQorICB3aXRoX2R0cmFjZT1ubworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2R0cmFjZSIgPiY1CiskYXNfZWNobyAiJHdpdGhfZHRyYWNlIiA+JjY7IH0KKworCisKKworCitEVFJBQ0U9CitERkxBR1M9CitEVFJBQ0VfSEVBREVSUz0KK0RUUkFDRV9PQkpTPQorCitpZiB0ZXN0ICIkd2l0aF9kdHJhY2UiID0gInllcyIKK3RoZW4KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImR0cmFjZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZHRyYWNlOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9EVFJBQ0UrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICREVFJBQ0UgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfRFRSQUNFPSIkRFRSQUNFIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9EVFJBQ0U9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfRFRSQUNFIiAmJiBhY19jdl9wYXRoX0RUUkFDRT0ibm90IGZvdW5kIgorICA7OworZXNhYworZmkKK0RUUkFDRT0kYWNfY3ZfcGF0aF9EVFJBQ0UKK2lmIHRlc3QgLW4gIiREVFJBQ0UiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRFRSQUNFIiA+JjUKKyRhc19lY2hvICIkRFRSQUNFIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICBpZiB0ZXN0ICIkRFRSQUNFIiA9ICJub3QgZm91bmQiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIIiAiJExJTkVOTyIgNQorICAgIGZpCisKKyRhc19lY2hvICIjZGVmaW5lIFdJVEhfRFRSQUNFIDEiID4+Y29uZmRlZnMuaAorCisgICAgRFRSQUNFX0hFQURFUlM9IkluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgiCisKKyAgICAjIE9uIE9TIFgsIERUcmFjZSBwcm92aWRlcnMgZG8gbm90IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjb21waWxlZCBhbmQKKyAgICAjIGxpbmtlZCBpbnRvIHRoZSBiaW5hcnkuIENvcnJlc3BvbmRpbmdseSwgZHRyYWNlKDEpIGlzIG1pc3NpbmcgdGhlIEVMRgorICAgICMgZ2VuZXJhdGlvbiBmbGFnICctRycuIFdlIGNoZWNrIGZvciBwcmVzZW5jZSBvZiB0aGlzIGZsYWcsIHJhdGhlciB0aGFuCisgICAgIyBoYXJkY29kaW5nIHN1cHBvcnQgYnkgT1MsIGluIHRoZSBpbnRlcmVzdCBvZiByb2J1c3RuZXNzLgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIERUcmFjZSBwcm9iZXMgcmVxdWlyZSBsaW5raW5nLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2R0cmFjZV9saW5rKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9bm8KKyAgICAgICAgICAgIGVjaG8gJ0JFR0lOJyA+IGNvbmZ0ZXN0LmQKKyAgICAgICAgICAgICIkRFRSQUNFIiAtRyAtcyBjb25mdGVzdC5kIC1vIGNvbmZ0ZXN0Lm8gPiAvZGV2L251bGwgMj4mMSAmJiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9eWVzCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2R0cmFjZV9saW5rIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZHRyYWNlX2xpbmsiID4mNjsgfQorICAgIGlmIHRlc3QgIiRhY19jdl9kdHJhY2VfbGluayIgPSAieWVzIjsgdGhlbgorICAgICAgICBEVFJBQ0VfT0JKUz0iUHl0aG9uL3B5ZHRyYWNlLm8iCisgICAgZmkKK2ZpCisKICMgLUkke0RMSU5DTERJUn0gaXMgYWRkZWQgdG8gdGhlIGNvbXBpbGUgcnVsZSBmb3IgaW1wb3J0ZGwubwogCiBETElOQ0xESVI9LgpAQCAtMTI2MTIsNiArMTI1NzEsNjQgQEAKIGRvbmUKIAogCitmb3IgYWNfZnVuYyBpbiBjbG9ja19zZXR0aW1lCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX3NldHRpbWUiICJhY19jdl9mdW5jX2Nsb2NrX3NldHRpbWUiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMQorX0FDRU9GCisKK2Vsc2UKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX3NldHRpbWUgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfc2V0dGltZSBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY2xvY2tfc2V0dGltZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX3NldHRpbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0NMT0NLX1NFVFRJTUUgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTMwMjksNiArMTMwNDYsMzMgQEAKIAogZmkKIAorYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3QgcGFzc3dkIiAicHdfZ2Vjb3MiICJhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19nZWNvcyIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MgMQorX0FDRU9GCisKKworZmkKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHBhc3N3ZCIgInB3X3Bhc3N3ZCIgImFjX2N2X21lbWJlcl9zdHJ1Y3RfcGFzc3dkX3B3X3Bhc3N3ZCIgIgorICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICNpbmNsdWRlIDxwd2QuaD4KKworIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19wYXNzd2QiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX1BBU1NXRCAxCitfQUNFT0YKKworCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRpbWUuaCB0aGF0IGRlZmluZXMgYWx0em9uZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgdGltZS5oIHRoYXQgZGVmaW5lcyBhbHR6b25lLi4uICIgPiY2OyB9CkBAIC0xMzE2MCw2ICsxMzIwNCw0MSBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNvY2thZGRyX2FsZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjCQlpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMJCWluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyMJCWluY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgoraW50CittYWluICgpCit7CitzdHJ1Y3Qgc29ja2FkZHJfYWxnIHMKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPXllcworZWxzZQorICBhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGciID4mNQorJGFzX2VjaG8gIiRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TT0NLQUREUl9BTEcgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGNoYXIgaXMgdW5zaWduZWQiID4mNQpAQCAtMTM0NDgsNDAgKzEzNTI3LDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAotdmFfbGlzdF9pc19hcnJheT1ubwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHZhX2xpc3QgaXMgYW4gYXJyYXkiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5Li4uICIgPiY2OyB9Ci1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotCi1pbnQKLW1haW4gKCkKLXsKLXZhX2xpc3QgbGlzdDEsIGxpc3QyOyBsaXN0MSA9IGxpc3QyOwotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLQotCi0kYXNfZWNobyAiI2RlZmluZSBWQV9MSVNUX0lTX0FSUkFZIDEiID4+Y29uZmRlZnMuaAotCi0gdmFfbGlzdF9pc19hcnJheT15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR2YV9saXN0X2lzX2FycmF5IiA+JjUKLSRhc19lY2hvICIkdmFfbGlzdF9pc19hcnJheSIgPiY2OyB9Ci0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogCiAKQEAgLTE0MzM5LDYgKzE0Mzg0LDg1IEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTEFaWSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0xBWlkiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTEFaWSIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTEFaWSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9XIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9XIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9XICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9HTE9CQUwiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9HTE9CQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9HTE9CQUwgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX0xPQ0FMIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiICIjaW5jbHVkZSA8ZGxmY24uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTE9DQUwiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX0xPQ0FMICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9OT0RFTEVURSIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PREVMRVRFIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURSAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9MT0FEIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfTk9MT0FEIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX05PTE9BRCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9MT0FEICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9ERUVQQklORCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0RFRVBCSU5EIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9ERUVQQklORCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKKworCiAjIGRldGVybWluZSB3aGF0IHNpemUgZGlnaXQgdG8gdXNlIGZvciBQeXRob24ncyBsb25ncwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkaWdpdCBzaXplIGZvciBQeXRob24ncyBsb25ncy4uLiAiID4mNjsgfQpAQCAtMTQ3NzIsNyArMTQ4OTYsMTEgQEAKICRhc19lY2hvICIkTERWRVJTSU9OIiA+JjY7IH0KIAogCi1MSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUID0geDsgdGhlbgorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2Vsc2UKKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKK2ZpCiAKIAogIyBDaGVjayB3aGV0aGVyIHJpZ2h0IHNoaWZ0aW5nIGEgbmVnYXRpdmUgaW50ZWdlciBleHRlbmRzIHRoZSBzaWduIGJpdApAQCAtMTU4NDUsMTAyICsxNTk3Myw2IEBACiAKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJWxsZCBhbmQgJWxsdSBwcmludGYoKSBmb3JtYXQgc3VwcG9ydC4uLiAiID4mNjsgfQotICBpZiAke2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCs6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotCi1pbnQKLW1haW4gKCkKLXsKLQotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpCi1lbHNlCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllcwotZWxzZQotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi0KLWZpCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNQotJGFzX2VjaG8gIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID4mNjsgfQotZmkKLQotaWYgdGVzdCAiJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCIgPSB5ZXMKLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyBcImxsXCIiID4+Y29uZmRlZnMuaAotCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTE3MDE0LDcgKzE3MDQ2LDcgQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy41LCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwpAQCAtMTcwNzYsNyArMTcxMDgsNyBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLXB5dGhvbiBjb25maWcuc3RhdHVzIDMuNQorcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy42CiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCkBAIC0xNzgyOCw3ICsxNzg2MCw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JjYKICAgICBlY2hvICIiID4mNgotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JjYKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0td2l0aC1vcHRpbWl6YXRpb25zIiA+JjYKICAgICBlY2hvICIiID4mNgogICAgIGVjaG8gIiIgPiY2CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMzgxYmFiMC4uOGNlMmFlOSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMyw3ICszLDcgQEAKIGRubCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiAjIFNldCBWRVJTSU9OIHNvIHdlIG9ubHkgbmVlZCB0byBlZGl0IGluIG9uZSBwbGFjZSAoaS5lLiwgaGVyZSkKLW00X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy41KQorbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjYpCiAKIEFDX1BSRVJFUSgyLjY1KQogCkBAIC02OSw3ICs2OSw3IEBACiAgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCiAgICAgICAgIGZvciBpbnRlcnAgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbjsgZG8KIAkgICAgd2hpY2ggJGludGVycCA+L2Rldi9udWxsIDI+JjEgfHwgY29udGludWUKLQkgICAgaWYgJGludGVycCAtYyAnaW1wb3J0IHN5cztzeXMuZXhpdChub3Qgc3lzLnZlcnNpb25faW5mb0A8OkA6MkA6PkAgPj0gKDMsMykpJzsgdGhlbgorCSAgICBpZiAkaW50ZXJwIC1jICJpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCAnLicuam9pbihzdHIobikgZm9yIG4gaW4gc3lzLnZlcnNpb25faW5mb0A8OkA6MkA6PkApID09ICckUEFDS0FHRV9WRVJTSU9OJykiOyB0aGVuCiAJICAgICAgICBicmVhawogCSAgICBmaQogICAgICAgICAgICAgaW50ZXJwPQpAQCAtNzgsNyArNzgsNyBAQAogCSAgICBBQ19NU0dfRVJST1IoW3B5dGhvbiRQQUNLQUdFX1ZFUlNJT04gaW50ZXJwcmV0ZXIgbm90IGZvdW5kXSkKIAlmaQogICAgICAgICBBQ19NU0dfUkVTVUxUKCRpbnRlcnApCi0JUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCisJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWIgX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUU9X3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkgJyRpbnRlcnAKICAgICBmaQogICAgICMgVXNlZCB0byBjb21tZW50IG91dCBzdHVmZiBmb3IgcmVidWlsZGluZyBnZW5lcmF0ZWQgZmlsZXMKICAgICBHRU5FUkFURURfQ09NTUVOVD0nIycKQEAgLTY5NCw2ICs2OTQsNyBAQAogQUNfUFJPR19DQwogQUNfUFJPR19DUFAKIEFDX1BST0dfR1JFUAorQUNfUFJPR19TRUQKIAogQUNfU1VCU1QoQ1hYKQogQUNfU1VCU1QoTUFJTkNDKQpAQCAtNzY4LDcgKzc2OSwzMSBAQAogI3VuZGVmIHBvd2VycGMKICN1bmRlZiBzcGFyYwogI3VuZGVmIHVuaXgKLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2kzODZfXykKKyAgICAgICAgaTY4Ni1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKQorIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIGFhcmNoNjRfaWxwMzItbGludXgtYW5kcm9pZAorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWFuZHJvaWQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtYW5kcm9pZGVhYmkKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtYW5kcm9pZAorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtODgyLDExICs5MDcsMTQgQEAKICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KICAgICBBQ19NU0dfRVJST1IoW2ludGVybmFsIGNvbmZpZ3VyZSBlcnJvciBmb3IgdGhlIHBsYXRmb3JtIHRyaXBsZXQsIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydF0pCiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCi1BQ19TVUJTVChQTEFURElSKQogQUNfU1VCU1QoUExBVEZPUk1fVFJJUExFVCkKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKK0FDX1NVQlNUKE1VTFRJQVJDSF9DUFBGTEFHUykKIAogQUNfTVNHX0NIRUNLSU5HKFtmb3IgLVdsLC0tbm8tYXMtbmVlZGVkXSkKIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCkBAIC05MDMsNiArOTMxLDI1IEBACiAjIGNoZWNrcyBmb3IgVU5JWCB2YXJpYW50cyB0aGF0IHNldCBDIHByZXByb2Nlc3NvciB2YXJpYWJsZXMKIEFDX1VTRV9TWVNURU1fRVhURU5TSU9OUwogCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWxdKQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CitfX0FORFJPSURfQVBJX18KKyNlbHNlCisjZXJyb3Igbm90IEFuZHJvaWQKKyNlbmRpZgorRU9GCisKK2lmICRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBBTkRST0lEX0FQSV9MRVZFTD1gZ3JlcCAtdiAnXiMnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgJ14gKiQnYAorICBBQ19NU0dfUkVTVUxUKFskQU5EUk9JRF9BUElfTEVWRUxdKQorICBBQ19ERUZJTkVfVU5RVU9URUQoQU5EUk9JRF9BUElfTEVWRUwsICRBTkRST0lEX0FQSV9MRVZFTCwgW1RoZSBBbmRyb2lkIEFQSSBsZXZlbC5dKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub3QgQW5kcm9pZF0pCitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtMTI3NywxMyArMTMyNCwyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtMTQ2MSw2ICsxNTE1LDI4IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdleHRyYSkKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2V4dHJhX3dhcm5pbmdzLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworICAgICAgICAgXSkpCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9leHRyYV93YXJuaW5ncykKKworICAgIGlmIHRlc3QgJGFjX2N2X2V4dHJhX3dhcm5pbmdzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVdleHRyYSIKKyAgICBmaQorCiAgICAgIyBQeXRob24gZG9lc24ndCB2aW9sYXRlIEM5OSBhbGlhc2luZyBydWxlcywgYnV0IG9sZGVyIHZlcnNpb25zIG9mCiAgICAgIyBHQ0MgcHJvZHVjZSB3YXJuaW5ncyBmb3IgbGVnYWwgUHl0aG9uIGNvZGUuICBFbmFibGUKICAgICAjIC1mbm8tc3RyaWN0LWFsaWFzaW5nIG9uIHZlcnNpb25zIG9mIEdDQyB0aGF0IHN1cHBvcnQgYnV0IHByb2R1Y2UKQEAgLTE1MjUsMjggKzE2MDEsNDcgQEAKICAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcwogICAgIHRoZW4KICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXJlc3VsdCIKICAgICBmaQogCi0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCkKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcpCiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZywKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1wYXJhbWV0ZXIgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nLAogICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAogICAgICAgICAgWwotCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQotCSBdLFsKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCi0JIF0sWwotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubwotCSBdKSkKLSAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcworICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPW5vCisgICAgICAgICBdKSkKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nKQorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV2Vycm9yIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisgICAgICAgICBdKSkKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIKICAgICBmaQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZykKQEAgLTE5NDEsNyArMjAzNiw3IEBACiBBQ19DSEVDS19IRUFERVJTKGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtMTk1MCwxMSArMjA0NSwxOCBAQAogc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAogc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCiBsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAotYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCitsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAogc3lzL2VuZGlhbi5oKQogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorQUNfQ0hFQ0tfSEVBREVSUyhibHVldG9vdGgvYmx1ZXRvb3RoLmgpCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKIFsjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIwNDgsNiArMjE1MCwxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtMjA3OCwyOSArMjE4NSw2IEBACiBBQ19UWVBFX1NJWkVfVAogQUNfVFlQRV9VSURfVAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1BQ19DSEVDS19UWVBFKHVpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9VSU5UMzJfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90Ll0pLCwpCi1BQ19UWVBFX1VJTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUodWludDY0X3QsCi0gIEFDX0RFRklORShIQVZFX1VJTlQ2NF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuXSksLCkKLUFDX1RZUEVfVUlOVDY0X1QKLQotQUNfQ0hFQ0tfVFlQRShpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9JTlQzMl9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC5dKSwsKQotQUNfVFlQRV9JTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUoaW50NjRfdCwKLSAgQUNfREVGSU5FKEhBVkVfSU5UNjRfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIGludDY0X3QuXSksLCkKLUFDX1RZUEVfSU5UNjRfVAotCiBBQ19DSEVDS19UWVBFKHNzaXplX3QsCiAgIEFDX0RFRklORShIQVZFX1NTSVpFX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBzc2l6ZV90XSksLCkKIEFDX0NIRUNLX1RZUEUoX191aW50MTI4X3QsCkBAIC0yMTEwLDYgKzIxOTQsNyBAQAogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKIEFDX0NIRUNLX1NJWkVPRihpbnQsIDQpCiBBQ19DSEVDS19TSVpFT0YobG9uZywgNCkKK0FDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcsIDgpCiBBQ19DSEVDS19TSVpFT0Yodm9pZCAqLCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNob3J0LCAyKQogQUNfQ0hFQ0tfU0laRU9GKGZsb2F0LCA0KQpAQCAtMjExNywxNyArMjIwMiw3IEBACiBBQ19DSEVDS19TSVpFT0YoZnBvc190LCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCwgNCkKIEFDX0NIRUNLX1NJWkVPRihwaWRfdCwgNCkKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBsb25nIGxvbmcgc3VwcG9ydCkKLWhhdmVfbG9uZ19sb25nPW5vCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7XV0pXSxbCi0gIEFDX0RFRklORShIQVZFX0xPTkdfTE9ORywgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy5dKQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLV0sW10pCi1BQ19NU0dfUkVTVUxUKCRoYXZlX2xvbmdfbG9uZykKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCi1BQ19DSEVDS19TSVpFT0YobG9uZyBsb25nLCA4KQotZmkKK0FDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QpCiAKIEFDX01TR19DSEVDS0lORyhmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCkKIGhhdmVfbG9uZ19kb3VibGU9bm8KQEAgLTIxNDAsMjYgKzIyMTUsNyBAQAogQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlLCAxNikKIGZpCiAKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBfQm9vbCBzdXBwb3J0KQotaGF2ZV9jOTlfYm9vbD1ubwotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW19Cb29sIHg7IHggPSAoX0Jvb2wpMDtdXSldLFsKLSAgQUNfREVGSU5FKEhBVkVfQzk5X0JPT0wsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBfQm9vbC5dKQotICBoYXZlX2M5OV9ib29sPXllcwotXSxbXSkKLUFDX01TR19SRVNVTFQoJGhhdmVfYzk5X2Jvb2wpCi1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiBBQ19DSEVDS19TSVpFT0YoX0Jvb2wsIDEpCi1maQotCi1BQ19DSEVDS19UWVBFUyh1aW50cHRyX3QsCi0gICBbQUNfQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgNCldLAotICAgW10sIFsjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWZdKQogCiBBQ19DSEVDS19TSVpFT0Yob2ZmX3QsIFtdLCBbCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSApAQCAtMjE2OCw4ICsyMjI0LDYgQEAKIF0pCiAKIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQpCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCwgMSwKQEAgLTIxODEsOSArMjIzNSw2IEBACiBlbHNlCiAgIEFDX01TR19SRVNVTFQobm8pCiBmaQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKIAogQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCwgW10sIFsKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICkBAIC0yNzQyLDkgKzI3OTMsMjUgQEAKICMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYmZmaSBsaWJyYXJ5CiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tZmZpKQogQUNfQVJHX1dJVEgoc3lzdGVtX2ZmaSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2ZmaT0ibm8iXSkKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwsLCkKKworY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBBQ19NU0dfRVJST1IoWy0td2l0aC1zeXN0ZW0tZmZpIGFjY2VwdHMgbm8gYXJndW1lbnRzXSkKKyAgICAgICAgOzsKK2VzYWMKIAogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCkBAIC0yODE5LDI2ICsyODg2LDYgQEAKIGZpXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfZGJtbGlib3JkZXIpCiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLUFDX1NVQlNUKFVTRV9TSUdOQUxfTU9EVUxFKQotQUNfU1VCU1QoU0lHTkFMX09CSlMpCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlKQotQUNfQVJHX1dJVEgoc2lnbmFsLW1vZHVsZSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc2lnbmFsLW1vZHVsZV0sIFtkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlXSkpCi0KLWlmIHRlc3QgLXogIiR3aXRoX3NpZ25hbF9tb2R1bGUiCi10aGVuIHdpdGhfc2lnbmFsX21vZHVsZT0ieWVzIgotZmkKLUFDX01TR19SRVNVTFQoJHdpdGhfc2lnbmFsX21vZHVsZSkKLQotaWYgdGVzdCAiJHt3aXRoX3NpZ25hbF9tb2R1bGV9IiA9ICJ5ZXMiOyB0aGVuCi0JVVNFX1NJR05BTF9NT0RVTEU9IiIKLQlTSUdOQUxfT0JKUz0iIgotZWxzZQotCVVTRV9TSUdOQUxfTU9EVUxFPSIjIgotCVNJR05BTF9PQkpTPSJQYXJzZXIvaW50cmNoZWNrLm8gUHl0aG9uL3NpZ2NoZWNrLm8iCi1maQotCiAjIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBTZXR1cC5jb25maWcKIEFDX1NVQlNUKFVTRV9USFJFQURfTU9EVUxFKQogVVNFX1RIUkVBRF9NT0RVTEU9IiIKQEAgLTMyMDgsMTYgKzMyNTUsNiBAQAogICBBQ19NU0dfUkVTVUxUKG5vKQogXSkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIpCi1BQ19DT01QSUxFX0lGRUxTRShbCi0gIEFDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+XV0sIFtbRlNJT1JlZk51bSBmUmVmID0gMF1dKQotXSxbCi0gIEFDX0RFRklORShIQVZFX09TWDEwNV9TREssIDEsIFtEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuXSkKLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVChubykKLV0pCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtZG9jLXN0cmluZ3MpCiBBQ19BUkdfV0lUSChkb2Mtc3RyaW5ncywKQEAgLTMyMzMsMTkgKzMyNzAsNiBAQAogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfZG9jX3N0cmluZ3MpCiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC10c2MpCi1BQ19BUkdfV0lUSCh0c2MsCi0JICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgob3V0KS10c2NdLFtlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlXSksWwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuCi0gIEFDX0RFRklORShXSVRIX1RTQywgMSwKLSAgICBbRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlcl0pCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1lbHNlIEFDX01TR19SRVNVTFQobm8pCi1maV0sCi1bQUNfTVNHX1JFU1VMVChubyldKQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXB5bWFsbG9jKQogQUNfQVJHX1dJVEgocHltYWxsb2MsCkBAIC0zMjc3LDYgKzMzMDEsNDcgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kdHJhY2UpCitBQ19BUkdfV0lUSChkdHJhY2UsCisgIEFDX0hFTFBfU1RSSU5HKC0td2l0aChvdXQpLWR0cmFjZSwgW2Rpc2FibGUvZW5hYmxlIERUcmFjZSBzdXBwb3J0XSksLAorICB3aXRoX2R0cmFjZT1ubykKK0FDX01TR19SRVNVTFQoJHdpdGhfZHRyYWNlKQorCitBQ19TVUJTVChEVFJBQ0UpCitBQ19TVUJTVChERkxBR1MpCitBQ19TVUJTVChEVFJBQ0VfSEVBREVSUykKK0FDX1NVQlNUKERUUkFDRV9PQkpTKQorRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgQUNfUEFUSF9QUk9HKERUUkFDRSwgW2R0cmFjZV0sIFtub3QgZm91bmRdKQorICAgIGlmIHRlc3QgIiREVFJBQ0UiID0gIm5vdCBmb3VuZCI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKFtkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIXSkKKyAgICBmaQorICAgIEFDX0RFRklORShXSVRIX0RUUkFDRSwgMSwgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0XSkKKyAgICBEVFJBQ0VfSEVBREVSUz0iSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaCIKKworICAgICMgT24gT1MgWCwgRFRyYWNlIHByb3ZpZGVycyBkbyBub3QgbmVlZCB0byBiZSBleHBsaWNpdGx5IGNvbXBpbGVkIGFuZAorICAgICMgbGlua2VkIGludG8gdGhlIGJpbmFyeS4gQ29ycmVzcG9uZGluZ2x5LCBkdHJhY2UoMSkgaXMgbWlzc2luZyB0aGUgRUxGCisgICAgIyBnZW5lcmF0aW9uIGZsYWcgJy1HJy4gV2UgY2hlY2sgZm9yIHByZXNlbmNlIG9mIHRoaXMgZmxhZywgcmF0aGVyIHRoYW4KKyAgICAjIGhhcmRjb2Rpbmcgc3VwcG9ydCBieSBPUywgaW4gdGhlIGludGVyZXN0IG9mIHJvYnVzdG5lc3MuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmddLAorICAgICAgICBbYWNfY3ZfZHRyYWNlX2xpbmtdLCBbZG5sCisgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz1ubworICAgICAgICAgICAgZWNobyAnQkVHSU4nID4gY29uZnRlc3QuZAorICAgICAgICAgICAgIiREVFJBQ0UiIC1HIC1zIGNvbmZ0ZXN0LmQgLW8gY29uZnRlc3QubyA+IC9kZXYvbnVsbCAyPiYxICYmIFwKKyAgICAgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz15ZXMKKyAgICAgIF0pCisgICAgaWYgdGVzdCAiJGFjX2N2X2R0cmFjZV9saW5rIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIERUUkFDRV9PQkpTPSJQeXRob24vcHlkdHJhY2UubyIKKyAgICBmaQorZmkKKwogIyAtSSR7RExJTkNMRElSfSBpcyBhZGRlZCB0byB0aGUgY29tcGlsZSBydWxlIGZvciBpbXBvcnRkbC5vCiBBQ19TVUJTVChETElOQ0xESVIpCiBETElOQ0xESVI9LgpAQCAtMzY2OSw2ICszNzM0LDEyIEBACiAgICAgXSkKIF0pCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX3NldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19zZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX1NFVFRJTUUsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMzgzMCw2ICszOTAxLDEwIEBACiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9nZW5dKQogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfYmlydGh0aW1lXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2Jsb2Nrc10pCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLCBzdHJ1Y3QgcGFzc3dkLnB3X3Bhc3N3ZF0sIFtdLCBbXSwgW1sKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CitdXSkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfaGVhZGVyX3RpbWVfYWx0em9uZSxbCkBAIC0zODc4LDYgKzM5NTMsMTkgQEAKIAlBQ19ERUZJTkUoSEFWRV9TT0NLQUREUl9TVE9SQUdFLCAxLCBbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKHN5cy9zb2NrZXQuaCldKQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciBzb2NrYWRkcl9hbGcpCitBQ19DQUNIRV9WQUwoYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZywKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyMJCWluY2x1ZGUgPHN5cy90eXBlcy5oPgorIwkJaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIwkJaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+XV0sIFtbc3RydWN0IHNvY2thZGRyX2FsZyBzXV0pXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9eWVzXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9bm9dKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcpCitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfQUxHLCAxLCBbc3RydWN0IHNvY2thZGRyX2FsZyAobGludXgvaWZfYWxnLmgpXSkKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogQUNfQ19DSEFSX1VOU0lHTkVECkBAIC0zOTUwLDIwICs0MDM4LDYgQEAKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQogCi12YV9saXN0X2lzX2FycmF5PW5vCi1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5KQotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCi1dXSwgW1t2YV9saXN0IGxpc3QxLCBsaXN0MjsgbGlzdDEgPSBsaXN0MjtdXSldLFtdLFsKLSBBQ19ERUZJTkUoVkFfTElTVF9JU19BUlJBWSwgMSwgW0RlZmluZSBpZiBhIHZhX2xpc3QgaXMgYW4gYXJyYXkgb2Ygc29tZSBraW5kXSkKLSB2YV9saXN0X2lzX2FycmF5PXllcwotXSkKLUFDX01TR19SRVNVTFQoJHZhX2xpc3RfaXNfYXJyYXkpCi0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogQUhfVEVNUExBVEUoSEFWRV9HRVRIT1NUQllOQU1FX1IsCiAgIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBzb21lIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCldKQpAQCAtNDQwNiw2ICs0NDgwLDggQEAKICAgW2RlZmluZSB0byAxIGlmIHlvdXIgc2VtX2dldHZhbHVlIGlzIGJyb2tlbi5dKQogZmkKIAorQUNfQ0hFQ0tfREVDTFMoW1JUTERfTEFaWSwgUlRMRF9OT1csIFJUTERfR0xPQkFMLCBSVExEX0xPQ0FMLCBSVExEX05PREVMRVRFLCBSVExEX05PTE9BRCwgUlRMRF9ERUVQQklORF0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8ZGxmY24uaD5dXSkKKwogIyBkZXRlcm1pbmUgd2hhdCBzaXplIGRpZ2l0IHRvIHVzZSBmb3IgUHl0aG9uJ3MgbG9uZ3MKIEFDX01TR19DSEVDS0lORyhbZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3NdKQogQUNfQVJHX0VOQUJMRShiaWctZGlnaXRzLApAQCAtNDUyNCw3ICs0NjAwLDExIEBACiAKIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgogQUNfU1VCU1QoUFlfRU5BQkxFX1NIQVJFRCkKLUxJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgoraWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgorZWxzZQorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfS0ke1BMQVRGT1JNX1RSSVBMRVR9IgorZmkKIEFDX1NVQlNUKExJQlBMKQogCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CkBAIC00OTIyLDcwICs1MDAyLDYgQEAKICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS5dKQogZmkKIAotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwotdGhlbgotICBBQ19NU0dfQ0hFQ0tJTkcoZm9yICVsbGQgYW5kICVsbHUgcHJpbnRmKCkgZm9ybWF0IHN1cHBvcnQpCi0gIEFDX0NBQ0hFX1ZBTChhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQsCi0gIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWwotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLSAgXV1dKV0sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD1ub10sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9ImNyb3NzIC0tIGFzc3VtaW5nIG5vIgotICAgaWYgdGVzdCB4JEdDQyA9IHh5ZXM7IHRoZW4KLSAgICBzYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdmb3JtYXQiCi0gICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAgICAgXV0sIFtbCi0gICAgICBjaGFyICpidWZmZXI7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMyk7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpOwotICAgICAgXV0pXSwKLSAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLSAgICApCi0gICAgQ0ZMQUdTPSRzYXZlX0NGTEFHUwotICAgZmldKQotICApCi0gIEFDX01TR19SRVNVTFQoJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCkKLWZpCi0KLWlmIHRlc3QgIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID0geWVzCi10aGVuCi0gIEFDX0RFRklORShQWV9GT1JNQVRfTE9OR19MT05HLCAibGwiLAotICBbRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIGxvbmcgbG9uZyB0eXBlXSkKLWZpCi0KIGlmIHRlc3QgJGFjX3N5c19zeXN0ZW0gPSBEYXJ3aW4KIHRoZW4KIAlMSUJTPSIkTElCUyAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIgpAQCAtNTM3OCw3ICs1Mzk0LDcgQEAKIGlmIHRlc3QgIiRQeV9PUFQiID0gJ2ZhbHNlJyAtYSAiJFB5X0RFQlVHIiAhPSAndHJ1ZSc7IHRoZW4KICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECi0gICAgZWNobyAiSWYgeW91IHdhbnQgYSByZWxlYXNlIGJ1aWxkIHdpdGggYWxsIG9wdGltaXphdGlvbnMgYWN0aXZlIChMVE8sIFBHTywgZXRjKSwiCisgICAgZWNobyAiSWYgeW91IHdhbnQgYSByZWxlYXNlIGJ1aWxkIHdpdGggYWxsIG9wdGltaXphdGlvbnMgYWN0aXZlIChMVE8sIFBHTywgZXRjKSwiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gInBsZWFzZSBydW4gLi9jb25maWd1cmUgLS13aXRoLW9wdGltaXphdGlvbnMiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IGJmNGJhNWIuLmU3YTgzNmMgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsNiArMTIsOSBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKKy8qIFRoZSBBbmRyb2lkIEFQSSBsZXZlbC4gKi8KKyN1bmRlZiBBTkRST0lEX0FQSV9MRVZFTAorCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTEwNCw5ICsxMDcsNiBAQAogLyogSGFzIGJ1aWx0aW4gYXRvbWljcyAqLwogI3VuZGVmIEhBVkVfQlVJTFRJTl9BVE9NSUMKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuICovCi0jdW5kZWYgSEFWRV9DOTlfQk9PTAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ2NoZmxhZ3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0hGTEFHUwogCkBAIC0xMjUsNiArMTI1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfc2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19TRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2Nyw2ICsxNzAsMzQgQEAKICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX0lTTkFOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9ERUVQQklORCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX0dMT0JBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MQVpZJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9MQVpZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MT0NBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PREVMRVRFJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTk9MT0FEJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0xPQUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PVycsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9XCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgdHpuYW1lJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LgogICAgKi8KICN1bmRlZiBIQVZFX0RFQ0xfVFpOQU1FCkBAIC00NTMsMTIgKzQ4NCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluaXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5JVEdST1VQUwogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAotCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAogCkBAIC01NjEsOSArNTg2LDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBsb25nLiAqLwotI3VuZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIApAQCAtNjMwLDkgKzY1Miw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5wdHknIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfT1BFTlBUWQogCi0vKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuICovCi0jdW5kZWYgSEFWRV9PU1gxMDVfU0RLCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUEFUSENPTkYKIApAQCAtODYxLDYgKzg4MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNucHJpbnRmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NOUFJJTlRGCiAKKy8qIHN0cnVjdCBzb2NrYWRkcl9hbGcgKGxpbnV4L2lmX2FsZy5oKSAqLworI3VuZGVmIEhBVkVfU09DS0FERFJfQUxHCisKIC8qIERlZmluZSBpZiBzb2NrYWRkciBoYXMgc2FfbGVuIG1lbWJlciAqLwogI3VuZGVmIEhBVkVfU09DS0FERFJfU0FfTEVOCiAKQEAgLTkxNiw2ICs5MzgsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3Ryb3B0cy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NUUk9QVFNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiBgcHdfZ2Vjb3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MKKworLyogRGVmaW5lIHRvIDEgaWYgYHB3X3Bhc3N3ZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBwYXNzd2QnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QKKwogLyogRGVmaW5lIHRvIDEgaWYgYHN0X2JpcnRodGltZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JJUlRIVElNRQogCkBAIC0xMTAzLDE1ICsxMTMxLDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRjbCBhbmQgVENMX1VURl9NQVg9PTYgKi8KICN1bmRlZiBIQVZFX1VDUzRfVENMCiAKLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuICovCi0jdW5kZWYgSEFWRV9VSU5UNjRfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludHB0cl90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlRQVFJfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuYW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOQU1FCiAKQEAgLTEyMjIsOSArMTI0MSw2IEBACiAvKiBEZWZpbmUgYXMgdGhlIHByZWZlcnJlZCBzaXplIGluIGJpdHMgb2YgbG9uZyBkaWdpdHMgKi8KICN1bmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAogCi0vKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgbG9uZyBsb25nIHR5cGUgKi8KLSN1bmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCkBAIC0xMzQ1LDkgKzEzNjEsNiBAQAogI2VuZGlmCiAKIAotLyogRGVmaW5lIGlmIGEgdmFfbGlzdCBpcyBhbiBhcnJheSBvZiBzb21lIGtpbmQgKi8KLSN1bmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBTSUdGUEUgaGFuZGxlZCAoc2VlIEluY2x1ZGUvcHlmcGUuaCkuICovCiAjdW5kZWYgV0FOVF9TSUdGUEVfSEFORExFUgogCkBAIC0xMzU3LDYgKzEzNzAsOSBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IGRvY3VtZW50YXRpb24gc3RyaW5ncyBpbiBleHRlbnNpb24gbW9kdWxlcyAqLwogI3VuZGVmIFdJVEhfRE9DX1NUUklOR1MKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gRFRyYWNlIHN1cHBvcnQgKi8KKyN1bmRlZiBXSVRIX0RUUkFDRQorCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBuZXctc3R5bGUgKE9wZW5zdGVwLCBSaGFwc29keSwgTWFjT1MpIGR5bmFtaWMKICAgIGxpbmtlciAoZHlsZCkgaW5zdGVhZCBvZiB0aGUgb2xkLXN0eWxlIChOZXh0U3RlcCkgZHluYW1pYyBsaW5rZXIgKHJsZCkuCiAgICBEeWxkIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IGZyYW1ld29ya3MuICovCkBAIC0xMzc1LDkgKzEzOTEsNiBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gcnVkaW1lbnRhcnkgdGhyZWFkIHN1cHBvcnQgKi8KICN1bmRlZiBXSVRIX1RIUkVBRAogCi0vKiBEZWZpbmUgdG8gcHJvZmlsZSB3aXRoIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyICovCi0jdW5kZWYgV0lUSF9UU0MKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHB5bWFsbG9jIHRvIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciB2YWxncmluZCAqLwogI3VuZGVmIFdJVEhfVkFMR1JJTkQKIApAQCAtMTQ0MiwxNiArMTQ1NSw2IEBACiAvKiBEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zICovCiAjdW5kZWYgX1JFRU5UUkFOVAogCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQzMl90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UMzJfVAotCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQ2NF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gdGhlIGxldmVsIG9mIFgvT3BlbiB0aGF0IHlvdXIgc3lzdGVtIHN1cHBvcnRzICovCiAjdW5kZWYgX1hPUEVOX1NPVVJDRQogCkBAIC0xNDgxLDE0ICsxNDg0LDYgQEAKICN1bmRlZiBpbmxpbmUKICNlbmRpZgogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIGludDY0X3QKLQogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIG1vZGVfdAogCkBAIC0xNTEwLDE0ICsxNTA1LDYgQEAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLwogI3VuZGVmIHVpZF90CiAKLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAzMiBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29yZCBkb2VzIG5vdCB3b3JrLiAqLwogI3VuZGVmIHZvbGF0aWxlCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggMjlmZjFhOC4uYjU0ZWY4MSAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgIGlmIG5vdCBsaXN0OgogICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgaWYgbGVuKGxpc3QpID4gMToKLSAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIlbW9kdWxlKQorICAgICAgICBsb2cuaW5mbygiV0FSTklORzogbXVsdGlwbGUgY29waWVzIG9mICVzIGZvdW5kIiwgbW9kdWxlKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGlzdFswXSwgbW9kdWxlKQogCiBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CkBAIC02NTIsOSArNjUyLDEyIEBACiAgICAgICAgICMgcHJvZmlsZXIgKF9sc3Byb2YgaXMgZm9yIGNQcm9maWxlLnB5KQogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbHNwcm9mJywgWydfbHNwcm9mLmMnLCAncm90YXRpbmd0cmVlLmMnXSkgKQogICAgICAgICAjIHN0YXRpYyBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZQotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd1bmljb2RlZGF0YScsIFsndW5pY29kZWRhdGEuYyddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3VuaWNvZGVkYXRhJywgWyd1bmljb2RlZGF0YS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ3VuaWNvZGVkYXRhX2RiLmgnLCAndW5pY29kZW5hbWVfZGIuaCddKSApCiAgICAgICAgICMgX29wY29kZSBtb2R1bGUKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX29wY29kZScsIFsnX29wY29kZS5jJ10pICkKKyAgICAgICAgIyBhc3luY2lvIHNwZWVkdXBzCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oIl9hc3luY2lvIiwgWyJfYXN5bmNpb21vZHVsZS5jIl0pICkKIAogICAgICAgICAjIE1vZHVsZXMgd2l0aCBzb21lIFVOSVggZGVwZW5kZW5jaWVzIC0tIG9uIGJ5IGRlZmF1bHQ6CiAgICAgICAgICMgKElmIHlvdSBoYXZlIGEgcmVhbGx5IGJhY2t3YXJkIFVOSVgsIHNlbGVjdCBhbmQgc29ja2V0IG1heSBub3QgYmUKQEAgLTgzOCw3ICs4NDEsNyBAQAogICAgICAgICAjIGZpbmQgb3V0IHdoaWNoIHZlcnNpb24gb2YgT3BlblNTTCB3ZSBoYXZlCiAgICAgICAgIG9wZW5zc2xfdmVyID0gMAogICAgICAgICBvcGVuc3NsX3Zlcl9yZSA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAnXlxzKiNccypkZWZpbmVccytPUEVOU1NMX1ZFUlNJT05fTlVNQkVSXHMrKDB4WzAtOWEtZkEtRl0rKScgKQorICAgICAgICAgICAgcideXHMqI1xzKmRlZmluZVxzK09QRU5TU0xfVkVSU0lPTl9OVU1CRVJccysoMHhbMC05YS1mQS1GXSspJyApCiAKICAgICAgICAgIyBsb29rIGZvciB0aGUgb3BlbnNzbCB2ZXJzaW9uIGhlYWRlciBvbiB0aGUgY29tcGlsZXIgc2VhcmNoIHBhdGguCiAgICAgICAgIG9wZW5zc2x2X2ggPSBmaW5kX2ZpbGUoJ29wZW5zc2wvb3BlbnNzbHYuaCcsIFtdLApAQCAtODg5LDYgKzg5MiwyOSBAQAogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMScsIFsnc2hhMW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCiAKKyAgICAgICAgYmxha2UyX2RlcHMgPSBnbG9iKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNb2R1bGVzL19ibGFrZTIvaW1wbC8qJykpCisgICAgICAgIGJsYWtlMl9kZXBzLmFwcGVuZCgnaGFzaGxpYi5oJykKKworICAgICAgICBibGFrZTJfbWFjcm9zID0gW10KKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZyBhbmQgb3MudW5hbWUoKS5tYWNoaW5lID09ICJ4ODZfNjQiOgorICAgICAgICAgICAgIyBFdmVyeSB4ODZfNjQgbWFjaGluZSBoYXMgYXQgbGVhc3QgU1NFMi4KKyAgICAgICAgICAgIGJsYWtlMl9tYWNyb3MuYXBwZW5kKCgnQkxBS0UyX1VTRV9TU0UnLCAnMScpKQorCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19ibGFrZTInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnX2JsYWtlMi9ibGFrZTJtb2R1bGUuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfYmxha2UyL2JsYWtlMmJfaW1wbC5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19ibGFrZTIvYmxha2Uyc19pbXBsLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWJsYWtlMl9tYWNyb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1ibGFrZTJfZGVwcykgKQorCisgICAgICAgIHNoYTNfZGVwcyA9IGdsb2Iob3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBzcmNkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNb2R1bGVzL19zaGEzL2tjcC8qJykpCisgICAgICAgIHNoYTNfZGVwcy5hcHBlbmQoJ2hhc2hsaWIuaCcpCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19zaGEzL3NoYTNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9c2hhM19kZXBzKSkKKwogICAgICAgICAjIE1vZHVsZXMgdGhhdCBwcm92aWRlIHBlcnNpc3RlbnQgZGljdGlvbmFyeS1saWtlIHNlbWFudGljcy4gIFlvdSB3aWxsCiAgICAgICAgICMgcHJvYmFibHkgd2FudCB0byBhcnJhbmdlIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byBiZSBhdmFpbGFibGUgb24KICAgICAgICAgIyB5b3VyIG1hY2hpbmUsIHRob3VnaCBub25lIGFyZSBkZWZpbmVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBsaWJyYXJ5CkBAIC0xNzAxLDcgKzE3MjcsNyBAQAogICAgICAgICAjIEFsbCBleGlzdGluZyBmcmFtZXdvcmsgYnVpbGRzIG9mIFRjbC9UayBkb24ndCBzdXBwb3J0IDY0LWJpdAogICAgICAgICAjIGFyY2hpdGVjdHVyZXMuCiAgICAgICAgIGNmbGFncyA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0NGTEFHUycpWzBdCi0gICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXHcrKScsIGNmbGFncykKKyAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKHInLWFyY2hccysoXHcrKScsIGNmbGFncykKIAogICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3RrLmFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKQEAgLTE4ODgsNiArMTkxNCw5IEBACiAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZ3VyZV9jdHlwZXNfZGFyd2luKGV4dCkKIAorICAgICAgICAgICAgcHJpbnQoJ3dhcm5pbmc6IGJ1aWxkaW5nIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgaXMnCisgICAgICAgICAgICAgICAgICAnIGRlcHJlY2F0ZWQgb24gdGhpcyBwbGF0Zm9ybS4gIEl0IHdpbGwgbm90IGJlJworICAgICAgICAgICAgICAgICAgJyBkaXN0cmlidXRlZCB3aXRoIFB5dGhvbiAzLjcnKQogICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQogICAgICAgICAgICAgZmZpX2J1aWxkZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ2xpYmZmaScpCiAgICAgICAgICAgICBmZmlfc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmNkaXIsICdNb2R1bGVzJywKQEAgLTE5ODQsMTMgKzIwMTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1tYXRoX2xpYnMpCiAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoW2V4dCwgZXh0X3Rlc3RdKQogCi0gICAgICAgIGlmIG5vdCAnLS13aXRoLXN5c3RlbS1mZmknIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1mZmknIG5vdCBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIE9TIFggMTAuNSBjb21lcyB3aXRoIGxpYmZmaS5keWxpYjsgdGhlIGluY2x1ZGUgZmlsZXMgYXJlCiAgICAgICAgICAgICAjIGluIC91c3IvaW5jbHVkZS9mZmkKICAgICAgICAgICAgIGluY19kaXJzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL2ZmaScpCisgICAgICAgIGVsaWYgJy0td2l0aG91dC1zeXN0ZW0tZmZpJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBmZmlfaW5jID0gW3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRkZJX0lOQ0xVREVESVIiKV0KICAgICAgICAgaWYgbm90IGZmaV9pbmMgb3IgZmZpX2luY1swXSA9PSAnJzoKQEAgLTIwMDksNyArMjAzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICdmZmlfd3JhcHBlcl9oJy5mb3JtYXQoZmZpX2gpKQogICAgICAgICBmZmlfbGliID0gTm9uZQogICAgICAgICBpZiBmZmlfaW5jIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZm9yIGxpYl9uYW1lIGluICgnZmZpX2NvbnZlbmllbmNlJywgJ2ZmaV9waWMnLCAnZmZpJyk6CisgICAgICAgICAgICBmb3IgbGliX25hbWUgaW4gKCdmZmknLCAnZmZpX3BpYycpOgogICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBsaWJfbmFtZSkpOgogICAgICAgICAgICAgICAgICAgICBmZmlfbGliID0gbGliX25hbWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTIwNjIsNyArMjA5Miw3IEBACiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mbnQuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2lvLmgnLAotICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuaCcsCkBAIC0yMTI4LDE1ICsyMTU4LDYgQEAKICAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9USFJFQUQnKToKICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgnV0lUSE9VVF9USFJFQURTJywgMSkpCiAKLSAgICAgICAgIyBJbmNyZWFzZSB3YXJuaW5nIGxldmVsIGZvciBnY2M6Ci0gICAgICAgIGlmICdnY2MnIGluIGNjOgotICAgICAgICAgICAgY21kID0gKCJlY2hvICcnIHwgJXMgLVdleHRyYSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1FIC0gIgotICAgICAgICAgICAgICAgICAgICI+IC9kZXYvbnVsbCAyPiYxIiAlIGNjKQotICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKGNtZCkKLSAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6Ci0gICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmV4dGVuZChbJy1XZXh0cmEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzJ10pCi0KICAgICAgICAgIyBVbmNvbW1lbnQgZm9yIGV4dHJhIGZ1bmN0aW9uYWxpdHk6CiAgICAgICAgICNkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ0VYVFJBX0ZVTkNUSU9OQUxJVFknLCAxKSkKICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uICgKQEAgLTIyMTUsNyArMjIzNiw3IEBACiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIGZ1bGx2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBtaW5vcm9ubHkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdyZW5hbWluZyB7fSB0byB7fScuZm9ybWF0KGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkpCisgICAgICAgICAgICBsb2cuaW5mbygncmVuYW1pbmcgJXMgdG8gJXMnLCBmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpCiAgICAgICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgbmV3b3V0ZmlsZXMuYXBwZW5kKG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgaWYgZmlsZW5hbWUgaW4gdXBkYXRlZF9maWxlczoKQEAgLTIyNTcsNyArMjI3OCw3IEBACiAgICAgc2V0dXAoIyBQeVBJIE1ldGFkYXRhIChQRVAgMzAxKQogICAgICAgICAgIG5hbWUgPSAiUHl0aG9uIiwKICAgICAgICAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXSwKLSAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVzIiAlIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVkLiVkIiAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgIG1haW50YWluZXIgPSAiR3VpZG8gdmFuIFJvc3N1bSBhbmQgdGhlIFB5dGhvbiBjb21tdW5pdHkiLAogICAgICAgICAgIG1haW50YWluZXJfZW1haWwgPSAicHl0aG9uLWRldkBweXRob24ub3JnIiwKICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJBIGhpZ2gtbGV2ZWwgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIiwK